Imported Upstream version 5.9 13/248513/1 upstream-5.9 upstream/5.9
authorSungguk Na <sungguk.na@samsung.com>
Fri, 27 Nov 2020 08:40:20 +0000 (17:40 +0900)
committerSungguk Na <sungguk.na@samsung.com>
Fri, 27 Nov 2020 08:42:57 +0000 (17:42 +0900)
Change-Id: I83bddf1df5402cf81551931148f4b34f0536a489

4191 files changed:
.strace.1.in.date
.tarball-version
.version
.year
COPYING
CREDITS
ChangeLog
INSTALL
Makefile.am
Makefile.in
NEWS
README-configure
access.c
aclocal.m4
affinity.c
aio.c
ar-lib [new file with mode: 0755]
basic_filters.c
block.c
bpf.c
bpf_attr.h
bpf_attr_check.c
bpf_filter.c
bpf_sock_filter.c
btrfs.c
cacheflush.c
capability.c
caps1.h
chmod.c
clone.c
close_range.c [new file with mode: 0644]
compile
config.h.in
configure
configure.ac
copyright-year-gen [new file with mode: 0755]
count.c
debian/changelog
debian/changelog.in
debian/control
debian/copyright
debian/rules
debian/watch
defs.h
delay.c
delay.h
depcomp
desc.c
dirent.c
dirent64.c
dirent_types.c [new file with mode: 0644]
dup.c [new file with mode: 0644]
dyxlat.c
evdev.c
evdev_mpers.c
execve.c
fanotify.c
fchownat.c
fcntl.c
file-date-gen [new file with mode: 0755]
file_handle.c
file_ioctl.c
filter_qualify.c
filter_seccomp.c [new file with mode: 0644]
filter_seccomp.h [new file with mode: 0644]
fsconfig.c [new file with mode: 0644]
fsmount.c [new file with mode: 0644]
fsopen.c [new file with mode: 0644]
fspick.c [new file with mode: 0644]
gcc_compat.h
gen_bpf_attr_check.sh
get_personality.c
get_personality.h
get_robust_list.c
getpid.c [new file with mode: 0644]
git-version-gen [new file with mode: 0755]
hdio.c
inotify.c
install-sh
io.c
io_uring.c
ioctl.c
ioprio.c
ipc_defs.h
ipc_msg.c
ipc_msgctl.c
ipc_sem.c
ipc_semctl.c [new file with mode: 0644]
ipc_shm.c
ipc_shmctl.c
kcmp.c
kernel_dirent.h [new file with mode: 0644]
kernel_rusage.h [new file with mode: 0644]
kernel_timespec.h
kernel_timeval.h
kernel_timex.h
kernel_types.h
kernel_v4l2_types.h [new file with mode: 0644]
keyctl.c
kvm.c
largefile_wrappers.h
link.c
linux/32/ioctls_inc_align16.h
linux/32/ioctls_inc_align32.h
linux/32/ioctls_inc_align64.h
linux/32/syscallent-time32.h [new file with mode: 0644]
linux/32/syscallent.h
linux/64/ioctls_inc.h
linux/64/syscallent.h
linux/aarch64/arch_defs_.h
linux/aarch64/arch_get_personality.c
linux/aarch64/ioctls_arch0.h
linux/aarch64/set_scno.c
linux/aarch64/syscallent.h
linux/alpha/get_scno.c
linux/alpha/syscallent.h
linux/arc/set_scno.c
linux/arch_defs_.h
linux/arm/ioctls_arch0.h
linux/arm/syscallent.h
linux/avr32/set_scno.c
linux/avr32/syscallent.h
linux/bfin/syscallent.h
linux/csky/get_scno.c
linux/csky/raw_syscall.h
linux/csky/set_scno.c
linux/dummy.h
linux/hppa/arch_regs.c
linux/hppa/get_error.c
linux/hppa/get_scno.c
linux/hppa/get_syscall_args.c
linux/hppa/get_syscall_result.c [deleted file]
linux/hppa/set_error.c
linux/hppa/set_scno.c
linux/hppa/syscallent.h
linux/i386/ioctls_arch0.h
linux/i386/syscallent.h
linux/ia64/arch_defs_.h
linux/ia64/set_scno.c
linux/ia64/shuffle_scno.c [new file with mode: 0644]
linux/ia64/syscallent.h
linux/ia64/syscallent_base_nr.h [new file with mode: 0644]
linux/inet_diag.h
linux/m68k/set_scno.c
linux/m68k/syscallent.h
linux/metag/set_scno.c
linux/microblaze/syscallent.h
linux/mips/genstub.sh
linux/mips/get_scno.c
linux/mips/get_syscall_args.c
linux/mips/ioctls_arch0.h
linux/mips/set_scno.c
linux/mips/syscallent-compat.h
linux/mips/syscallent-n32.h
linux/mips/syscallent-n64.h
linux/mips/syscallent-o32.h
linux/nios2/set_scno.c
linux/or1k/set_scno.c
linux/powerpc/ioctls_arch0.h
linux/powerpc/set_error.c
linux/powerpc/syscallent.h
linux/powerpc64/arch_defs_.h
linux/powerpc64/arch_get_personality.c
linux/powerpc64/syscallent.h
linux/powerpc64le/arch_defs_.h [new file with mode: 0644]
linux/powerpc64le/arch_regs.c [new file with mode: 0644]
linux/powerpc64le/arch_rt_sigframe.c [new file with mode: 0644]
linux/powerpc64le/errnoent.h [new file with mode: 0644]
linux/powerpc64le/get_error.c [new file with mode: 0644]
linux/powerpc64le/get_scno.c [new file with mode: 0644]
linux/powerpc64le/get_syscall_args.c [new file with mode: 0644]
linux/powerpc64le/ioctls_arch0.h [new file with mode: 0644]
linux/powerpc64le/ioctls_inc0.h [new file with mode: 0644]
linux/powerpc64le/raw_syscall.h [new file with mode: 0644]
linux/powerpc64le/rt_sigframe.h [new file with mode: 0644]
linux/powerpc64le/set_error.c [new file with mode: 0644]
linux/powerpc64le/set_scno.c [new file with mode: 0644]
linux/powerpc64le/syscallent.h [new file with mode: 0644]
linux/powerpc64le/userent.h [new file with mode: 0644]
linux/riscv/arch_defs_.h [deleted file]
linux/riscv/arch_get_personality.c [deleted file]
linux/riscv/arch_regs.c [deleted file]
linux/riscv/get_error.c [deleted file]
linux/riscv/get_scno.c [deleted file]
linux/riscv/get_syscall_args.c [deleted file]
linux/riscv/ioctls_arch0.h [deleted file]
linux/riscv/ioctls_arch1.h [deleted file]
linux/riscv/ioctls_inc0.h [deleted file]
linux/riscv/ioctls_inc1.h [deleted file]
linux/riscv/raw_syscall.h [deleted file]
linux/riscv/set_error.c [deleted file]
linux/riscv/set_scno.c [deleted file]
linux/riscv/syscallent.h [deleted file]
linux/riscv/syscallent1.h [deleted file]
linux/riscv64/arch_regs.c [new file with mode: 0644]
linux/riscv64/get_error.c [new file with mode: 0644]
linux/riscv64/get_scno.c [new file with mode: 0644]
linux/riscv64/get_syscall_args.c [new file with mode: 0644]
linux/riscv64/ioctls_arch0.h [new file with mode: 0644]
linux/riscv64/ioctls_inc0.h [new file with mode: 0644]
linux/riscv64/raw_syscall.h [new file with mode: 0644]
linux/riscv64/set_error.c [new file with mode: 0644]
linux/riscv64/set_scno.c [new file with mode: 0644]
linux/riscv64/syscallent.h [new file with mode: 0644]
linux/s390/arch_regs.c
linux/s390/check_scno.c [new file with mode: 0644]
linux/s390/ioctls_arch0.h
linux/s390/set_scno.c
linux/s390/syscallent.h
linux/s390x/arch_defs_.h
linux/s390x/arch_get_personality.c
linux/s390x/check_scno.c [new file with mode: 0644]
linux/s390x/ioctls_arch0.h
linux/s390x/syscallent.h
linux/sh/arch_getrval2.c
linux/sh/arch_regs.c
linux/sh/get_error.c
linux/sh/get_scno.c
linux/sh/get_syscall_args.c
linux/sh/get_syscall_result.c [deleted file]
linux/sh/set_error.c
linux/sh/set_scno.c
linux/sh/syscallent.h
linux/sh64/arch_regs.c
linux/sh64/arch_regs.h [deleted file]
linux/sh64/get_error.c
linux/sh64/get_scno.c
linux/sh64/get_syscall_args.c
linux/sh64/get_syscall_result.c [deleted file]
linux/sh64/set_error.c
linux/sh64/set_scno.c
linux/sh64/syscallent.h
linux/smc_diag.h
linux/sparc/arch_defs_.h
linux/sparc/set_error.c
linux/sparc/set_scno.c
linux/sparc/syscallent.h
linux/sparc64/arch_defs_.h
linux/sparc64/arch_get_personality.c
linux/sparc64/set_error.c
linux/sparc64/syscallent.h
linux/syscallent-common-32.h [new file with mode: 0644]
linux/syscallent-common.h [new file with mode: 0644]
linux/syscallent_base_nr.h [new file with mode: 0644]
linux/tile/arch_defs_.h
linux/tile/arch_get_personality.c
linux/tile/set_scno.c
linux/unix_diag.h
linux/x32/arch_defs_.h
linux/x32/ioctls_inc0.h
linux/x32/syscallent.h
linux/x86_64/arch_defs_.h
linux/x86_64/arch_get_personality.c
linux/x86_64/arch_kvm.c
linux/x86_64/get_scno.c
linux/x86_64/ioctls_arch0.h
linux/x86_64/syscallent.h
linux/xtensa/arch_regs.c
linux/xtensa/get_error.c
linux/xtensa/get_syscall_args.c
linux/xtensa/get_syscall_result.c [deleted file]
linux/xtensa/set_error.c
linux/xtensa/syscallent.h
list.h
loop.c
m4/ax_prog_cc_for_build.m4
m4/bpf_attr.m4
m4/mpers.m4
m4/st_esyscmd_s.m4 [new file with mode: 0644]
m4/st_warn_cflags.m4
macros.h
missing
mknod.c
mmap_cache.c
move_mount.c [new file with mode: 0644]
mpers.am
mpers_test.sh
mpers_xlat.h
msghdr.c
net.c
netlink.c
netlink_crypto.c
netlink_packet_diag.c
netlink_route.c
netlink_smc_diag.c
netlink_unix_diag.c
nlattr.c
nlattr.h
numa.c
number_set.c
number_set.h
open.c
open_tree.c [new file with mode: 0644]
pathtrace.c
perf.c
perf_event_struct.h
perf_ioctl.c
pidfd_getfd.c [new file with mode: 0644]
pidfd_open.c [new file with mode: 0644]
pidns.c [new file with mode: 0644]
prctl.c
print_fields.h
print_group_req.c
print_mac.c
print_msgbuf.c
print_statfs.c
print_syscall_number.c [new file with mode: 0644]
print_timespec.c [deleted file]
print_timespec.h
print_timespec32.c
print_timeval.c
printmode.c
printrusage.c
printsiginfo.c
printsiginfo.h
process.c
process_vm.c
ptp.c
ptrace.h
ptrace_syscall_info.c
readlink.c
renameat.c
resource.c
riscv.c
rtc.c
rtnl_addr.c
rtnl_link.c
rtnl_mdb.c
rtnl_neigh.c
rtnl_neightbl.c
rtnl_route.c
rtnl_rule.c
rtnl_tc.c
rtnl_tc_action.c
s390.c
sched.c
sched_attr.h
scno.head
scsi.c
signal.c
sock.c
sockaddr.c
socketutils.c
stage_output.c [new file with mode: 0644]
stat.c
stat64.c
statx.c
strace-log-merge.1
strace.1
strace.1.in
strace.c
strace.spec
strace.spec.in
sync_file_range2.c
syscall.c
sysent.h
sysent_shorthand_defs.h
sysent_shorthand_undefs.h
syslog.c
tee.c [new file with mode: 0644]
test-driver
tests-m32/COPYING
tests-m32/Makefile.am
tests-m32/Makefile.in
tests-m32/_newselect.c
tests-m32/accept.c
tests-m32/accept_compat.h
tests-m32/access.c
tests-m32/access.gen.test
tests-m32/acct.c
tests-m32/add_key.c
tests-m32/adjtimex.c
tests-m32/aio.c
tests-m32/aio_pgetevents.c
tests-m32/alarm.c
tests-m32/answer.c
tests-m32/attach-f-p.c
tests-m32/bexecve.test
tests-m32/block_reset_run.c [new file with mode: 0644]
tests-m32/bpf-obj_get_info_by_fd.c
tests-m32/bpf-success-long-y.c [new file with mode: 0644]
tests-m32/bpf-success-long-y.test [new file with mode: 0755]
tests-m32/bpf.c
tests-m32/brk.c
tests-m32/btrfs.c
tests-m32/caps-abbrev.awk
tests-m32/caps.awk
tests-m32/chmod.c
tests-m32/chown.c
tests-m32/chown32.c
tests-m32/chroot.c
tests-m32/clock_adjtime.c
tests-m32/clock_nanosleep.c
tests-m32/clock_xettime.c
tests-m32/clone-flags.c [new file with mode: 0644]
tests-m32/clone-flags.test [new file with mode: 0755]
tests-m32/clone3-Xabbrev.c [new file with mode: 0644]
tests-m32/clone3-Xabbrev.gen.test [new file with mode: 0755]
tests-m32/clone3-Xraw.c [new file with mode: 0644]
tests-m32/clone3-Xraw.gen.test [new file with mode: 0755]
tests-m32/clone3-Xverbose.c [new file with mode: 0644]
tests-m32/clone3-Xverbose.gen.test [new file with mode: 0755]
tests-m32/clone3-success-Xabbrev.c [new file with mode: 0644]
tests-m32/clone3-success-Xabbrev.gen.test [new file with mode: 0755]
tests-m32/clone3-success-Xraw.c [new file with mode: 0644]
tests-m32/clone3-success-Xraw.gen.test [new file with mode: 0755]
tests-m32/clone3-success-Xverbose.c [new file with mode: 0644]
tests-m32/clone3-success-Xverbose.gen.test [new file with mode: 0755]
tests-m32/clone3-success.c [new file with mode: 0644]
tests-m32/clone3-success.test [new file with mode: 0755]
tests-m32/clone3.c [new file with mode: 0644]
tests-m32/clone3.gen.test [new file with mode: 0755]
tests-m32/clone_parent--quiet-exit.c [new file with mode: 0644]
tests-m32/clone_parent--quiet-exit.gen.test [new file with mode: 0755]
tests-m32/clone_parent-q.c [new file with mode: 0644]
tests-m32/clone_parent-q.gen.test [new file with mode: 0755]
tests-m32/clone_parent-qq.c [new file with mode: 0644]
tests-m32/clone_parent-qq.gen.test [new file with mode: 0755]
tests-m32/clone_parent.c
tests-m32/clone_parent.gen.test [new file with mode: 0755]
tests-m32/clone_parent.test [deleted file]
tests-m32/clone_ptrace--quiet-attach.c [new file with mode: 0644]
tests-m32/clone_ptrace--quiet-attach.gen.test [new file with mode: 0755]
tests-m32/clone_ptrace--quiet-exit.c [new file with mode: 0644]
tests-m32/clone_ptrace--quiet-exit.gen.test [new file with mode: 0755]
tests-m32/clone_ptrace-q.c [new file with mode: 0644]
tests-m32/clone_ptrace-q.gen.test [new file with mode: 0755]
tests-m32/clone_ptrace-qq.c [new file with mode: 0644]
tests-m32/clone_ptrace-qq.gen.test [new file with mode: 0755]
tests-m32/clone_ptrace.c
tests-m32/clone_ptrace.test
tests-m32/close_range-P.c [new file with mode: 0644]
tests-m32/close_range-P.gen.test [new file with mode: 0755]
tests-m32/close_range-y.c [new file with mode: 0644]
tests-m32/close_range-y.gen.test [new file with mode: 0755]
tests-m32/close_range-yy.c [new file with mode: 0644]
tests-m32/close_range-yy.gen.test [new file with mode: 0755]
tests-m32/close_range.c [new file with mode: 0644]
tests-m32/close_range.gen.test [new file with mode: 0755]
tests-m32/copy_file_range.c
tests-m32/count-f.test
tests-m32/count.test
tests-m32/creat.c
tests-m32/create_tmpfile.c [new file with mode: 0644]
tests-m32/delay.c
tests-m32/delay.test
tests-m32/delete_module.c
tests-m32/dev--decode-fds-dev.c [new file with mode: 0644]
tests-m32/dev--decode-fds-dev.gen.test [new file with mode: 0755]
tests-m32/dev--decode-fds-path.c [new file with mode: 0644]
tests-m32/dev--decode-fds-path.gen.test [new file with mode: 0755]
tests-m32/dev--decode-fds-socket.c [new file with mode: 0644]
tests-m32/dev--decode-fds-socket.gen.test [new file with mode: 0755]
tests-m32/dev-yy.c
tests-m32/dup-P.c [new file with mode: 0644]
tests-m32/dup-P.gen.test [new file with mode: 0755]
tests-m32/dup-y.c [new file with mode: 0644]
tests-m32/dup-y.gen.test [new file with mode: 0755]
tests-m32/dup-yy.c [new file with mode: 0644]
tests-m32/dup-yy.gen.test [new file with mode: 0755]
tests-m32/dup.c
tests-m32/dup.gen.test
tests-m32/dup2-P.c [new file with mode: 0644]
tests-m32/dup2-P.gen.test [new file with mode: 0755]
tests-m32/dup2-y.c [new file with mode: 0644]
tests-m32/dup2-y.gen.test [new file with mode: 0755]
tests-m32/dup2-yy.c [new file with mode: 0644]
tests-m32/dup2-yy.gen.test [new file with mode: 0755]
tests-m32/dup2.c
tests-m32/dup2.gen.test
tests-m32/dup3-P.c [new file with mode: 0644]
tests-m32/dup3-P.gen.test [new file with mode: 0755]
tests-m32/dup3-y.c [new file with mode: 0644]
tests-m32/dup3-y.gen.test [new file with mode: 0755]
tests-m32/dup3-yy.c [new file with mode: 0644]
tests-m32/dup3-yy.gen.test [new file with mode: 0755]
tests-m32/dup3.c
tests-m32/dup3.gen.test
tests-m32/epoll_create.c
tests-m32/epoll_create1.c
tests-m32/epoll_ctl.c
tests-m32/epoll_pwait.c
tests-m32/epoll_wait.c
tests-m32/eventfd.c
tests-m32/execveat.c
tests-m32/faccessat-P.c [new file with mode: 0644]
tests-m32/faccessat-P.gen.test [new file with mode: 0755]
tests-m32/faccessat-y.c [new file with mode: 0644]
tests-m32/faccessat-y.gen.test [new file with mode: 0755]
tests-m32/faccessat-yy.c [new file with mode: 0644]
tests-m32/faccessat-yy.gen.test [new file with mode: 0755]
tests-m32/faccessat.c
tests-m32/faccessat.gen.test [deleted file]
tests-m32/faccessat.test [new file with mode: 0755]
tests-m32/faccessat2-P.c [new file with mode: 0644]
tests-m32/faccessat2-P.gen.test [new file with mode: 0755]
tests-m32/faccessat2-y.c [new file with mode: 0644]
tests-m32/faccessat2-y.gen.test [new file with mode: 0755]
tests-m32/faccessat2-yy.c [new file with mode: 0644]
tests-m32/faccessat2-yy.gen.test [new file with mode: 0755]
tests-m32/faccessat2.c [new file with mode: 0644]
tests-m32/faccessat2.test [new file with mode: 0755]
tests-m32/fadvise64.c
tests-m32/fadvise64_64.c
tests-m32/fallocate.c
tests-m32/fanotify_init.c
tests-m32/fanotify_mark.c
tests-m32/fchdir.c
tests-m32/fchmod.c
tests-m32/fchmodat.c
tests-m32/fchown.c
tests-m32/fchown32.c
tests-m32/fchownat.c
tests-m32/fcntl--pidns-translation.c [new file with mode: 0644]
tests-m32/fcntl--pidns-translation.gen.test [new file with mode: 0755]
tests-m32/fcntl-common.c
tests-m32/fcntl.c
tests-m32/fcntl64--pidns-translation.c [new file with mode: 0644]
tests-m32/fcntl64--pidns-translation.gen.test [new file with mode: 0755]
tests-m32/fcntl64.c
tests-m32/fdatasync.c
tests-m32/file_handle.c
tests-m32/file_ioctl.c
tests-m32/fill_memory.c
tests-m32/filter_seccomp-flag.c [new file with mode: 0644]
tests-m32/filter_seccomp-flag.gen.test [new file with mode: 0755]
tests-m32/filter_seccomp-perf.c [new file with mode: 0644]
tests-m32/filter_seccomp-perf.test [new file with mode: 0755]
tests-m32/filter_seccomp.gen.test [new file with mode: 0755]
tests-m32/filter_seccomp.in [new file with mode: 0644]
tests-m32/filter_seccomp.sh [new file with mode: 0755]
tests-m32/filtering_fd-syntax.test
tests-m32/filtering_syscall-syntax.test
tests-m32/finit_module.c
tests-m32/flock.c
tests-m32/fork--pidns-translation.awk [new file with mode: 0644]
tests-m32/fork--pidns-translation.c [new file with mode: 0644]
tests-m32/fork--pidns-translation.test [new file with mode: 0755]
tests-m32/fsconfig-P.c [new file with mode: 0644]
tests-m32/fsconfig-P.gen.test [new file with mode: 0755]
tests-m32/fsconfig.c [new file with mode: 0644]
tests-m32/fsconfig.gen.test [new file with mode: 0755]
tests-m32/fsmount.c [new file with mode: 0644]
tests-m32/fsmount.gen.test [new file with mode: 0755]
tests-m32/fsopen.c [new file with mode: 0644]
tests-m32/fsopen.gen.test [new file with mode: 0755]
tests-m32/fspick-P.c [new file with mode: 0644]
tests-m32/fspick-P.gen.test [new file with mode: 0755]
tests-m32/fspick.c [new file with mode: 0644]
tests-m32/fspick.gen.test [new file with mode: 0755]
tests-m32/fstat.c
tests-m32/fstat64.c
tests-m32/fstatat64.c
tests-m32/fstatat64.gen.test
tests-m32/fstatfs.c
tests-m32/fstatfs64.c
tests-m32/fsync.c
tests-m32/ftruncate.c
tests-m32/ftruncate64.c
tests-m32/futex.c
tests-m32/futimesat.c
tests-m32/gen_tests.am
tests-m32/gen_tests.in
tests-m32/get_mempolicy.c
tests-m32/get_process_reaper.c [new file with mode: 0644]
tests-m32/get_sigset_size.c
tests-m32/getcpu.c
tests-m32/getcwd.c
tests-m32/getdents-v.c [new file with mode: 0644]
tests-m32/getdents-v.gen.test [new file with mode: 0755]
tests-m32/getdents.c
tests-m32/getdents.gen.test
tests-m32/getdents64-v.c [new file with mode: 0644]
tests-m32/getdents64-v.gen.test [new file with mode: 0755]
tests-m32/getdents64.c
tests-m32/getdents64.gen.test
tests-m32/getegid-creds.gen.test [new file with mode: 0755]
tests-m32/getegid.c
tests-m32/getegid32-creds.gen.test [new file with mode: 0755]
tests-m32/getegid32.c
tests-m32/geteuid-creds.gen.test [new file with mode: 0755]
tests-m32/geteuid.c
tests-m32/geteuid32-creds.gen.test [new file with mode: 0755]
tests-m32/geteuid32.c
tests-m32/getgid-creds.gen.test [new file with mode: 0755]
tests-m32/getgid.c
tests-m32/getgid32-creds.gen.test [new file with mode: 0755]
tests-m32/getgid32.c
tests-m32/getgroups.c
tests-m32/getgroups32.c
tests-m32/getpgrp--pidns-translation.c [new file with mode: 0644]
tests-m32/getpgrp--pidns-translation.gen.test [new file with mode: 0755]
tests-m32/getpgrp.c
tests-m32/getpid--pidns-translation.c [new file with mode: 0644]
tests-m32/getpid--pidns-translation.gen.test [new file with mode: 0755]
tests-m32/getpid.c
tests-m32/getppid.c
tests-m32/getrandom.c
tests-m32/getresgid.c
tests-m32/getresgid32.c
tests-m32/getresuid.c
tests-m32/getresuid32.c
tests-m32/getrlimit.c
tests-m32/getrusage.c
tests-m32/getsid--pidns-translation.c [new file with mode: 0644]
tests-m32/getsid--pidns-translation.gen.test [new file with mode: 0755]
tests-m32/getsid.c
tests-m32/gettid--pidns-translation.c [new file with mode: 0644]
tests-m32/gettid--pidns-translation.test [new file with mode: 0755]
tests-m32/gettid.c
tests-m32/getuid-creds.gen.test [new file with mode: 0755]
tests-m32/getuid.c
tests-m32/getuid.test
tests-m32/getuid32-creds.gen.test [new file with mode: 0755]
tests-m32/getuid32.c
tests-m32/getxgid.c [new file with mode: 0644]
tests-m32/getxgid.gen.test [new file with mode: 0755]
tests-m32/getxpid.c [new file with mode: 0644]
tests-m32/getxpid.gen.test [new file with mode: 0755]
tests-m32/getxuid.c [new file with mode: 0644]
tests-m32/getxuid.gen.test [new file with mode: 0755]
tests-m32/getxxid.c [deleted file]
tests-m32/getxxid.gen.test [deleted file]
tests-m32/init.sh
tests-m32/init_module.c
tests-m32/inject-nf.c
tests-m32/inject-nf.test
tests-m32/inotify.c
tests-m32/inotify_init-y.c [new file with mode: 0644]
tests-m32/inotify_init-y.test [new file with mode: 0755]
tests-m32/inotify_init.c [new file with mode: 0644]
tests-m32/inotify_init.gen.test [new file with mode: 0755]
tests-m32/inotify_init1-y.c [new file with mode: 0644]
tests-m32/inotify_init1-y.gen.test [new file with mode: 0755]
tests-m32/inotify_init1.c
tests-m32/io_uring_enter.c
tests-m32/io_uring_register.c
tests-m32/io_uring_setup.c
tests-m32/ioctl-success.sh [new file with mode: 0755]
tests-m32/ioctl.c
tests-m32/ioctl_block--pidns-translation.c [new file with mode: 0644]
tests-m32/ioctl_block--pidns-translation.test [new file with mode: 0755]
tests-m32/ioctl_block.c
tests-m32/ioctl_evdev-Xabbrev.c [new file with mode: 0644]
tests-m32/ioctl_evdev-Xabbrev.gen.test [new file with mode: 0755]
tests-m32/ioctl_evdev-Xraw.c [new file with mode: 0644]
tests-m32/ioctl_evdev-Xraw.gen.test [new file with mode: 0755]
tests-m32/ioctl_evdev-Xverbose.c [new file with mode: 0644]
tests-m32/ioctl_evdev-Xverbose.gen.test [new file with mode: 0755]
tests-m32/ioctl_evdev-success-Xabbrev.c [new file with mode: 0644]
tests-m32/ioctl_evdev-success-Xabbrev.gen.test [new file with mode: 0755]
tests-m32/ioctl_evdev-success-Xraw.c [new file with mode: 0644]
tests-m32/ioctl_evdev-success-Xraw.gen.test [new file with mode: 0755]
tests-m32/ioctl_evdev-success-Xverbose.c [new file with mode: 0644]
tests-m32/ioctl_evdev-success-Xverbose.gen.test [new file with mode: 0755]
tests-m32/ioctl_evdev-success-v-Xabbrev.c [new file with mode: 0644]
tests-m32/ioctl_evdev-success-v-Xabbrev.gen.test [new file with mode: 0755]
tests-m32/ioctl_evdev-success-v-Xraw.c [new file with mode: 0644]
tests-m32/ioctl_evdev-success-v-Xraw.gen.test [new file with mode: 0755]
tests-m32/ioctl_evdev-success-v-Xverbose.c [new file with mode: 0644]
tests-m32/ioctl_evdev-success-v-Xverbose.gen.test [new file with mode: 0755]
tests-m32/ioctl_evdev-success-v.gen.test [new file with mode: 0755]
tests-m32/ioctl_evdev-success-v.test [deleted file]
tests-m32/ioctl_evdev-success.c
tests-m32/ioctl_evdev-success.test
tests-m32/ioctl_evdev-v-Xabbrev.c [new file with mode: 0644]
tests-m32/ioctl_evdev-v-Xabbrev.gen.test [new file with mode: 0755]
tests-m32/ioctl_evdev-v-Xraw.c [new file with mode: 0644]
tests-m32/ioctl_evdev-v-Xraw.gen.test [new file with mode: 0755]
tests-m32/ioctl_evdev-v-Xverbose.c [new file with mode: 0644]
tests-m32/ioctl_evdev-v-Xverbose.gen.test [new file with mode: 0755]
tests-m32/ioctl_evdev-v.gen.test
tests-m32/ioctl_evdev.c
tests-m32/ioctl_evdev.gen.test
tests-m32/ioctl_hdio-Xabbrev.c [new file with mode: 0644]
tests-m32/ioctl_hdio-Xabbrev.gen.test [new file with mode: 0755]
tests-m32/ioctl_hdio-Xraw.c [new file with mode: 0644]
tests-m32/ioctl_hdio-Xraw.gen.test [new file with mode: 0755]
tests-m32/ioctl_hdio-Xverbose.c [new file with mode: 0644]
tests-m32/ioctl_hdio-Xverbose.gen.test [new file with mode: 0755]
tests-m32/ioctl_hdio-success-Xabbrev.c [new file with mode: 0644]
tests-m32/ioctl_hdio-success-Xabbrev.gen.test [new file with mode: 0755]
tests-m32/ioctl_hdio-success-Xraw.c [new file with mode: 0644]
tests-m32/ioctl_hdio-success-Xraw.gen.test [new file with mode: 0755]
tests-m32/ioctl_hdio-success-Xverbose.c [new file with mode: 0644]
tests-m32/ioctl_hdio-success-Xverbose.gen.test [new file with mode: 0755]
tests-m32/ioctl_hdio-success-v-Xabbrev.c [new file with mode: 0644]
tests-m32/ioctl_hdio-success-v-Xabbrev.gen.test [new file with mode: 0755]
tests-m32/ioctl_hdio-success-v-Xraw.c [new file with mode: 0644]
tests-m32/ioctl_hdio-success-v-Xraw.gen.test [new file with mode: 0755]
tests-m32/ioctl_hdio-success-v-Xverbose.c [new file with mode: 0644]
tests-m32/ioctl_hdio-success-v-Xverbose.gen.test [new file with mode: 0755]
tests-m32/ioctl_hdio-success-v.c [new file with mode: 0644]
tests-m32/ioctl_hdio-success-v.gen.test [new file with mode: 0755]
tests-m32/ioctl_hdio-success.c [new file with mode: 0644]
tests-m32/ioctl_hdio-success.gen.test [new file with mode: 0755]
tests-m32/ioctl_hdio-v-Xabbrev.c [new file with mode: 0644]
tests-m32/ioctl_hdio-v-Xabbrev.gen.test [new file with mode: 0755]
tests-m32/ioctl_hdio-v-Xraw.c [new file with mode: 0644]
tests-m32/ioctl_hdio-v-Xraw.gen.test [new file with mode: 0755]
tests-m32/ioctl_hdio-v-Xverbose.c [new file with mode: 0644]
tests-m32/ioctl_hdio-v-Xverbose.gen.test [new file with mode: 0755]
tests-m32/ioctl_hdio-v.c [new file with mode: 0644]
tests-m32/ioctl_hdio-v.gen.test [new file with mode: 0755]
tests-m32/ioctl_hdio.c [new file with mode: 0644]
tests-m32/ioctl_hdio.gen.test [new file with mode: 0755]
tests-m32/ioctl_inotify.c
tests-m32/ioctl_kvm_run_common.c
tests-m32/ioctl_loop.c
tests-m32/ioctl_nsfs.c
tests-m32/ioctl_perf-success.c
tests-m32/ioctl_perf-success.gen.test [new file with mode: 0755]
tests-m32/ioctl_perf-success.test [deleted file]
tests-m32/ioctl_perf.c
tests-m32/ioctl_ptp.c
tests-m32/ioctl_rtc.c
tests-m32/ioctl_scsi.c
tests-m32/ioctl_sg_io_v4.c
tests-m32/ioctl_tee.c [new file with mode: 0644]
tests-m32/ioctl_tee.gen.test [new file with mode: 0755]
tests-m32/ioctl_uffdio.c
tests-m32/ioctl_v4l2-Xabbrev.c [new file with mode: 0644]
tests-m32/ioctl_v4l2-Xabbrev.gen.test [new file with mode: 0755]
tests-m32/ioctl_v4l2-Xraw.c [new file with mode: 0644]
tests-m32/ioctl_v4l2-Xraw.gen.test [new file with mode: 0755]
tests-m32/ioctl_v4l2-Xverbose.c [new file with mode: 0644]
tests-m32/ioctl_v4l2-Xverbose.gen.test [new file with mode: 0755]
tests-m32/ioctl_v4l2-success-Xabbrev.c [new file with mode: 0644]
tests-m32/ioctl_v4l2-success-Xabbrev.gen.test [new file with mode: 0755]
tests-m32/ioctl_v4l2-success-Xraw.c [new file with mode: 0644]
tests-m32/ioctl_v4l2-success-Xraw.gen.test [new file with mode: 0755]
tests-m32/ioctl_v4l2-success-Xverbose.c [new file with mode: 0644]
tests-m32/ioctl_v4l2-success-Xverbose.gen.test [new file with mode: 0755]
tests-m32/ioctl_v4l2-success-v-Xabbrev.c [new file with mode: 0644]
tests-m32/ioctl_v4l2-success-v-Xabbrev.gen.test [new file with mode: 0755]
tests-m32/ioctl_v4l2-success-v-Xraw.c [new file with mode: 0644]
tests-m32/ioctl_v4l2-success-v-Xraw.gen.test [new file with mode: 0755]
tests-m32/ioctl_v4l2-success-v-Xverbose.c [new file with mode: 0644]
tests-m32/ioctl_v4l2-success-v-Xverbose.gen.test [new file with mode: 0755]
tests-m32/ioctl_v4l2-success-v.c [new file with mode: 0644]
tests-m32/ioctl_v4l2-success-v.gen.test [new file with mode: 0755]
tests-m32/ioctl_v4l2-success.c [new file with mode: 0644]
tests-m32/ioctl_v4l2-success.gen.test [new file with mode: 0755]
tests-m32/ioctl_v4l2-v-Xabbrev.c [new file with mode: 0644]
tests-m32/ioctl_v4l2-v-Xabbrev.gen.test [new file with mode: 0755]
tests-m32/ioctl_v4l2-v-Xraw.c [new file with mode: 0644]
tests-m32/ioctl_v4l2-v-Xraw.gen.test [new file with mode: 0755]
tests-m32/ioctl_v4l2-v-Xverbose.c [new file with mode: 0644]
tests-m32/ioctl_v4l2-v-Xverbose.gen.test [new file with mode: 0755]
tests-m32/ioctl_v4l2-v.c [new file with mode: 0644]
tests-m32/ioctl_v4l2-v.gen.test [new file with mode: 0755]
tests-m32/ioctl_v4l2.c
tests-m32/ioctl_watchdog.c [new file with mode: 0644]
tests-m32/ioctl_watchdog.gen.test [new file with mode: 0755]
tests-m32/ioperm.c
tests-m32/iopl.c
tests-m32/ioprio--pidns-translation.c [new file with mode: 0644]
tests-m32/ioprio--pidns-translation.gen.test [new file with mode: 0755]
tests-m32/ioprio.c
tests-m32/ipc.c
tests-m32/ipc_msg.c
tests-m32/ipc_msgbuf-Xraw.gen.test
tests-m32/ipc_msgbuf.c
tests-m32/ipc_sem.c
tests-m32/ipc_shm-Xabbrev.gen.test
tests-m32/ipc_shm-Xverbose.gen.test
tests-m32/ipc_shm.c
tests-m32/ipc_shm.gen.test
tests-m32/kcmp-y--pidns-translation.c [new file with mode: 0644]
tests-m32/kcmp-y--pidns-translation.gen.test [new file with mode: 0755]
tests-m32/kcmp.c
tests-m32/kern_features.c
tests-m32/kernel_old_timespec.h [new file with mode: 0644]
tests-m32/kernel_old_timex.h [new file with mode: 0644]
tests-m32/kernel_version.c
tests-m32/kexec_file_load.c
tests-m32/kexec_load.c
tests-m32/keyctl.c
tests-m32/kill--pidns-translation.c [new file with mode: 0644]
tests-m32/kill--pidns-translation.gen.test [new file with mode: 0755]
tests-m32/kill.c
tests-m32/ksysent.c
tests-m32/ksysent.gen.test [new file with mode: 0755]
tests-m32/ksysent.sed
tests-m32/ksysent.test [deleted file]
tests-m32/lchown.c
tests-m32/lchown32.c
tests-m32/libmmsg.c
tests-m32/libsocketcall.c
tests-m32/link.c
tests-m32/linkat.c
tests-m32/llseek.c
tests-m32/localtime.c
tests-m32/lock_file.c [new file with mode: 0644]
tests-m32/lookup_dcookie.c
tests-m32/looping_threads.test
tests-m32/lseek.c
tests-m32/lstat.c
tests-m32/lstat.gen.test
tests-m32/lstat64.c
tests-m32/lstat64.gen.test
tests-m32/madvise.c
tests-m32/maybe_switch_current_tcp--quiet-thread-execve.c [new file with mode: 0644]
tests-m32/maybe_switch_current_tcp--quiet-thread-execve.gen.test [new file with mode: 0755]
tests-m32/maybe_switch_current_tcp.c [new file with mode: 0644]
tests-m32/maybe_switch_current_tcp.gen.test [new file with mode: 0755]
tests-m32/mbind-Xabbrev.c [new file with mode: 0644]
tests-m32/mbind-Xabbrev.gen.test [new file with mode: 0755]
tests-m32/mbind-Xraw.c [new file with mode: 0644]
tests-m32/mbind-Xraw.gen.test [new file with mode: 0755]
tests-m32/mbind-Xverbose.c [new file with mode: 0644]
tests-m32/mbind-Xverbose.gen.test [new file with mode: 0755]
tests-m32/mbind.c
tests-m32/membarrier.c
tests-m32/memfd_create.c
tests-m32/migrate_pages--pidns-translation.c [new file with mode: 0644]
tests-m32/migrate_pages--pidns-translation.gen.test [new file with mode: 0755]
tests-m32/migrate_pages.c
tests-m32/mkdir.c
tests-m32/mkdirat.c
tests-m32/mknod.c
tests-m32/mknodat.c
tests-m32/mlock.c
tests-m32/mlock2.c
tests-m32/modify_ldt.c
tests-m32/move_mount-P.c [new file with mode: 0644]
tests-m32/move_mount-P.gen.test [new file with mode: 0755]
tests-m32/move_mount.c [new file with mode: 0644]
tests-m32/move_mount.gen.test [new file with mode: 0755]
tests-m32/move_pages--pidns-translation.c [new file with mode: 0644]
tests-m32/move_pages--pidns-translation.gen.test [new file with mode: 0755]
tests-m32/move_pages.c
tests-m32/mq_sendrecv.c
tests-m32/msg_control.c
tests-m32/nanosleep.c
tests-m32/net--decode-fds-dev-netlink.c [new file with mode: 0644]
tests-m32/net--decode-fds-dev-netlink.gen.test [new file with mode: 0755]
tests-m32/net--decode-fds-none-netlink.c [new file with mode: 0644]
tests-m32/net--decode-fds-none-netlink.gen.test [new file with mode: 0755]
tests-m32/net--decode-fds-path-netlink.c [new file with mode: 0644]
tests-m32/net--decode-fds-path-netlink.gen.test [new file with mode: 0755]
tests-m32/net--decode-fds-socket-netlink.c [new file with mode: 0644]
tests-m32/net--decode-fds-socket-netlink.gen.test [new file with mode: 0755]
tests-m32/net-sockaddr--pidns-translation.c [new file with mode: 0644]
tests-m32/net-sockaddr--pidns-translation.gen.test [new file with mode: 0755]
tests-m32/net-sockaddr.c
tests-m32/net-yy-netlink.c
tests-m32/net-yy-netlink.test
tests-m32/netlink_audit--pidns-translation.c [new file with mode: 0644]
tests-m32/netlink_audit--pidns-translation.test [new file with mode: 0755]
tests-m32/netlink_audit.c
tests-m32/netlink_protocol.c
tests-m32/netlink_sock_diag-v.sh [deleted file]
tests-m32/netlink_sock_diag.test
tests-m32/newfstatat.c
tests-m32/newfstatat.gen.test
tests-m32/nlattr.c
tests-m32/nlattr_crypto_user_alg.c
tests-m32/nlattr_ifinfomsg.c
tests-m32/nlattr_ifla_linkinfo.c
tests-m32/nlattr_ifla_port.c
tests-m32/nlattr_ifla_xdp-y.c [new file with mode: 0644]
tests-m32/nlattr_ifla_xdp-y.gen.test [new file with mode: 0755]
tests-m32/nlattr_ifla_xdp.c
tests-m32/nlattr_inet_diag_req_compat.c
tests-m32/nlattr_mdba_mdb_entry.c
tests-m32/nlattr_mdba_router_port.c
tests-m32/nlattr_ndmsg.c
tests-m32/nlattr_packet_diag_msg.gen.test
tests-m32/nlattr_tc_stats.c
tests-m32/nlattr_tcamsg.c
tests-m32/nsyscalls-d.test
tests-m32/nsyscalls.c
tests-m32/old_mmap.c
tests-m32/oldfstat.c
tests-m32/oldlstat.c
tests-m32/oldselect-efault.c
tests-m32/oldselect.c
tests-m32/oldstat.c
tests-m32/open.c
tests-m32/open_tree-P.c [new file with mode: 0644]
tests-m32/open_tree-P.gen.test [new file with mode: 0755]
tests-m32/open_tree.c [new file with mode: 0644]
tests-m32/open_tree.gen.test [new file with mode: 0755]
tests-m32/openat.c
tests-m32/openat2-Xabbrev.c [new file with mode: 0644]
tests-m32/openat2-Xabbrev.gen.test [new file with mode: 0755]
tests-m32/openat2-Xraw.c [new file with mode: 0644]
tests-m32/openat2-Xraw.gen.test [new file with mode: 0755]
tests-m32/openat2-Xverbose.c [new file with mode: 0644]
tests-m32/openat2-Xverbose.gen.test [new file with mode: 0755]
tests-m32/openat2-v-y-Xabbrev.c [new file with mode: 0644]
tests-m32/openat2-v-y-Xabbrev.gen.test [new file with mode: 0755]
tests-m32/openat2-v-y-Xraw.c [new file with mode: 0644]
tests-m32/openat2-v-y-Xraw.gen.test [new file with mode: 0755]
tests-m32/openat2-v-y-Xverbose.c [new file with mode: 0644]
tests-m32/openat2-v-y-Xverbose.gen.test [new file with mode: 0755]
tests-m32/openat2-v-y.c [new file with mode: 0644]
tests-m32/openat2-v-y.gen.test [new file with mode: 0755]
tests-m32/openat2-v.c [new file with mode: 0644]
tests-m32/openat2-v.gen.test [new file with mode: 0755]
tests-m32/openat2-y.c [new file with mode: 0644]
tests-m32/openat2-y.gen.test [new file with mode: 0755]
tests-m32/openat2.c [new file with mode: 0644]
tests-m32/openat2.gen.test [new file with mode: 0755]
tests-m32/options-syntax.test
tests-m32/orphaned_process_group.c
tests-m32/osf_utimes.c
tests-m32/pause.c
tests-m32/pc.c
tests-m32/pc.test
tests-m32/perf_event_open.c
tests-m32/perf_event_open_nonverbose.c
tests-m32/pidfd_getfd-y.c [new file with mode: 0644]
tests-m32/pidfd_getfd-y.gen.test [new file with mode: 0755]
tests-m32/pidfd_getfd-yy.c [new file with mode: 0644]
tests-m32/pidfd_getfd-yy.gen.test [new file with mode: 0755]
tests-m32/pidfd_getfd.c [new file with mode: 0644]
tests-m32/pidfd_getfd.gen.test [new file with mode: 0755]
tests-m32/pidfd_open--decode-fd-path.c [new file with mode: 0644]
tests-m32/pidfd_open--decode-fd-path.gen.test [new file with mode: 0755]
tests-m32/pidfd_open--decode-fd-pidfd.c [new file with mode: 0644]
tests-m32/pidfd_open--decode-fd-pidfd.gen.test [new file with mode: 0755]
tests-m32/pidfd_open--decode-fd-socket.c [new file with mode: 0644]
tests-m32/pidfd_open--decode-fd-socket.gen.test [new file with mode: 0755]
tests-m32/pidfd_open--pidns-translation.c [new file with mode: 0644]
tests-m32/pidfd_open--pidns-translation.gen.test [new file with mode: 0755]
tests-m32/pidfd_open-P.c [new file with mode: 0644]
tests-m32/pidfd_open-P.gen.test [new file with mode: 0755]
tests-m32/pidfd_open-y.c [new file with mode: 0644]
tests-m32/pidfd_open-y.gen.test [new file with mode: 0755]
tests-m32/pidfd_open-yy.c [new file with mode: 0644]
tests-m32/pidfd_open-yy.gen.test [new file with mode: 0755]
tests-m32/pidfd_open.c [new file with mode: 0644]
tests-m32/pidfd_open.gen.test [new file with mode: 0755]
tests-m32/pidfd_send_signal--pidns-translation.c [new file with mode: 0644]
tests-m32/pidfd_send_signal--pidns-translation.gen.test [new file with mode: 0755]
tests-m32/pidfd_send_signal.c
tests-m32/pidns-cache.c [new file with mode: 0644]
tests-m32/pidns-cache.test [new file with mode: 0755]
tests-m32/pidns.c [new file with mode: 0644]
tests-m32/pidns.h [new file with mode: 0644]
tests-m32/pipe.c
tests-m32/pipe2.c
tests-m32/pkey_alloc.c
tests-m32/pkey_free.c
tests-m32/pkey_mprotect.c
tests-m32/poll-P.test
tests-m32/poll.c
tests-m32/ppoll.c
tests-m32/prctl-arg2-intptr.c
tests-m32/prctl-dumpable.c
tests-m32/prctl-name.c
tests-m32/prctl-no-args.c
tests-m32/prctl-pdeathsig.c
tests-m32/prctl-seccomp-filter-v.c
tests-m32/prctl-seccomp-strict.c
tests-m32/prctl-securebits.c
tests-m32/prctl-spec-inject.c
tests-m32/prctl-tid_address.c
tests-m32/prctl-tsc.c
tests-m32/preadv.c
tests-m32/preadv2-pwritev2.c
tests-m32/print_ppid_tracerpid.c [new file with mode: 0644]
tests-m32/printflags.c
tests-m32/printpath-umovestr-undumpable.c
tests-m32/printstrn-umoven-undumpable.c
tests-m32/printxval-Xabbrev.c [new file with mode: 0644]
tests-m32/printxval-Xraw.c [new file with mode: 0644]
tests-m32/printxval-Xverbose.c [new file with mode: 0644]
tests-m32/printxval.c
tests-m32/prlimit64--pidns-translation.c [new file with mode: 0644]
tests-m32/prlimit64--pidns-translation.gen.test [new file with mode: 0755]
tests-m32/prlimit64.c
tests-m32/process_vm_readv--pidns-translation.c [new file with mode: 0644]
tests-m32/process_vm_readv--pidns-translation.gen.test [new file with mode: 0755]
tests-m32/process_vm_readv.c
tests-m32/process_vm_readv_writev.c
tests-m32/process_vm_writev--pidns-translation.c [new file with mode: 0644]
tests-m32/process_vm_writev--pidns-translation.gen.test [new file with mode: 0755]
tests-m32/process_vm_writev.c
tests-m32/pselect6.c
tests-m32/ptrace.c
tests-m32/ptrace_syscall_info.c
tests-m32/pure_executables.am
tests-m32/pure_executables.list
tests-m32/qual_fault-syntax.test
tests-m32/qual_fault.c
tests-m32/qual_fault.test
tests-m32/qual_inject-error-signal.c
tests-m32/qual_inject-retval.c
tests-m32/qual_inject-signal.c
tests-m32/qual_inject-syntax.test
tests-m32/qual_signal.test
tests-m32/qual_syscall.test
tests-m32/qualify_personality.sh
tests-m32/quotactl-xfs.c
tests-m32/quotactl.c
tests-m32/read-write.c
tests-m32/readahead.c
tests-m32/readdir.c
tests-m32/readlink.c
tests-m32/readlinkat.c
tests-m32/reboot.c
tests-m32/recv-MSG_TRUNC.c [new file with mode: 0644]
tests-m32/recv-MSG_TRUNC.gen.test [new file with mode: 0755]
tests-m32/recvfrom-MSG_TRUNC.c [new file with mode: 0644]
tests-m32/recvfrom-MSG_TRUNC.gen.test [new file with mode: 0755]
tests-m32/redirect.test
tests-m32/remap_file_pages.c
tests-m32/rename.c
tests-m32/renameat.c
tests-m32/renameat2.c
tests-m32/request_key.c
tests-m32/restart_syscall.c
tests-m32/restart_syscall.test
tests-m32/riscv_flush_icache.c
tests-m32/rmdir.c
tests-m32/rt_sigpending.c
tests-m32/rt_sigprocmask.c
tests-m32/rt_sigqueueinfo--pidns-translation.c [new file with mode: 0644]
tests-m32/rt_sigqueueinfo--pidns-translation.gen.test [new file with mode: 0755]
tests-m32/rt_sigqueueinfo.c
tests-m32/rt_sigsuspend.c
tests-m32/rt_sigtimedwait.c
tests-m32/rt_tgsigqueueinfo--pidns-translation.c [new file with mode: 0644]
tests-m32/rt_tgsigqueueinfo--pidns-translation.gen.test [new file with mode: 0755]
tests-m32/rt_tgsigqueueinfo.c
tests-m32/s390_guarded_storage.c
tests-m32/s390_pci_mmio_read_write.c
tests-m32/s390_runtime_instr.c
tests-m32/s390_sthyi.c
tests-m32/sched_get_priority_mxx.c
tests-m32/sched_rr_get_interval.c
tests-m32/sched_xetaffinity--pidns-translation.c [new file with mode: 0644]
tests-m32/sched_xetaffinity--pidns-translation.gen.test [new file with mode: 0755]
tests-m32/sched_xetaffinity.c
tests-m32/sched_xetattr--pidns-translation.c [new file with mode: 0644]
tests-m32/sched_xetattr--pidns-translation.gen.test [new file with mode: 0755]
tests-m32/sched_xetattr.c
tests-m32/sched_xetparam--pidns-translation.c [new file with mode: 0644]
tests-m32/sched_xetparam--pidns-translation.gen.test [new file with mode: 0755]
tests-m32/sched_xetparam.c
tests-m32/sched_xetscheduler--pidns-translation.c [new file with mode: 0644]
tests-m32/sched_xetscheduler--pidns-translation.gen.test [new file with mode: 0755]
tests-m32/sched_xetscheduler.c
tests-m32/sched_yield.c
tests-m32/seccomp-filter-v.c
tests-m32/seccomp-filter.c
tests-m32/seccomp-strict.c
tests-m32/seccomp_get_action_avail.c
tests-m32/select.c
tests-m32/semop-common.c [new file with mode: 0644]
tests-m32/semop-indirect.c [new file with mode: 0644]
tests-m32/semop-indirect.gen.test [new file with mode: 0755]
tests-m32/semop.c
tests-m32/semop.gen.test
tests-m32/semtimedop.c [new file with mode: 0644]
tests-m32/semtimedop.gen.test [new file with mode: 0755]
tests-m32/sendfile.c
tests-m32/sendfile64.c
tests-m32/set_mempolicy-Xabbrev.c [new file with mode: 0644]
tests-m32/set_mempolicy-Xabbrev.gen.test [new file with mode: 0755]
tests-m32/set_mempolicy-Xraw.c [new file with mode: 0644]
tests-m32/set_mempolicy-Xraw.gen.test [new file with mode: 0755]
tests-m32/set_mempolicy-Xverbose.c [new file with mode: 0644]
tests-m32/set_mempolicy-Xverbose.gen.test [new file with mode: 0755]
tests-m32/set_mempolicy.c
tests-m32/set_mempolicy.gen.test
tests-m32/set_ptracer_any.c
tests-m32/setdomainname.c
tests-m32/setfsgid.c
tests-m32/setfsgid32.c
tests-m32/setfsuid.c
tests-m32/setfsuid32.c
tests-m32/setgid.c
tests-m32/setgid32.c
tests-m32/setgroups.c
tests-m32/setgroups32.c
tests-m32/sethostname.c
tests-m32/setns.c
tests-m32/setpgrp-exec.c [new file with mode: 0644]
tests-m32/setregid.c
tests-m32/setregid32.c
tests-m32/setresgid.c
tests-m32/setresgid32.c
tests-m32/setresuid.c
tests-m32/setresuid32.c
tests-m32/setreuid.c
tests-m32/setreuid32.c
tests-m32/setrlimit.c
tests-m32/setuid.c
tests-m32/setuid32.c
tests-m32/sigaction.c
tests-m32/sigblock.test
tests-m32/sigign.test
tests-m32/siginfo.c
tests-m32/signal.c
tests-m32/signal_receive--pidns-translation.c [new file with mode: 0644]
tests-m32/signal_receive--pidns-translation.gen.test [new file with mode: 0755]
tests-m32/signal_receive.c
tests-m32/signalfd4.c
tests-m32/sigpending.c
tests-m32/sigprocmask.c
tests-m32/sigreturn.c
tests-m32/sigsuspend.c
tests-m32/sleep.c
tests-m32/so_error.c
tests-m32/so_peercred--pidns-translation.c [new file with mode: 0644]
tests-m32/so_peercred--pidns-translation.gen.test [new file with mode: 0755]
tests-m32/so_peercred.c
tests-m32/sock_filter-v.c
tests-m32/socketcall.c
tests-m32/sockopt-timestamp.c
tests-m32/splice.c
tests-m32/stack-fcall-0.c
tests-m32/stack-fcall-1.c
tests-m32/stack-fcall-2.c
tests-m32/stack-fcall-3.c
tests-m32/stack-fcall-attach.c [new file with mode: 0644]
tests-m32/stack-fcall.c
tests-m32/stack-fcall.h
tests-m32/stat.c
tests-m32/stat.gen.test
tests-m32/stat64.c
tests-m32/stat64.gen.test
tests-m32/statfs.c
tests-m32/statfs64.c
tests-m32/status-all.c [new file with mode: 0644]
tests-m32/status-all.gen.test [new file with mode: 0755]
tests-m32/status-detached.expected [new file with mode: 0644]
tests-m32/status-detached.test [new file with mode: 0755]
tests-m32/status-failed-long.c [new file with mode: 0644]
tests-m32/status-failed-long.gen.test [new file with mode: 0755]
tests-m32/status-failed-status.c [new file with mode: 0644]
tests-m32/status-failed-status.gen.test [new file with mode: 0755]
tests-m32/status-failed.c [new file with mode: 0644]
tests-m32/status-failed.gen.test [new file with mode: 0755]
tests-m32/status-none-f.c [new file with mode: 0644]
tests-m32/status-none-threads.c [new file with mode: 0644]
tests-m32/status-none-threads.test [new file with mode: 0755]
tests-m32/status-none.c [new file with mode: 0644]
tests-m32/status-none.gen.test [new file with mode: 0755]
tests-m32/status-successful-long.c [new file with mode: 0644]
tests-m32/status-successful-long.gen.test [new file with mode: 0755]
tests-m32/status-successful-status.c [new file with mode: 0644]
tests-m32/status-successful-status.gen.test [new file with mode: 0755]
tests-m32/status-successful.c [new file with mode: 0644]
tests-m32/status-successful.gen.test [new file with mode: 0755]
tests-m32/status-unfinished-threads.c [new file with mode: 0644]
tests-m32/status-unfinished-threads.test [new file with mode: 0755]
tests-m32/status-unfinished.c [new file with mode: 0644]
tests-m32/status-unfinished.gen.test [new file with mode: 0755]
tests-m32/status.c [new file with mode: 0644]
tests-m32/statx.c
tests-m32/statx.gen.test
tests-m32/strace--absolute-timestamps-format-time-precision-ms.gen.test [new file with mode: 0755]
tests-m32/strace--absolute-timestamps-format-time-precision-ns.gen.test [new file with mode: 0755]
tests-m32/strace--absolute-timestamps-format-time-precision-s.gen.test [new file with mode: 0755]
tests-m32/strace--absolute-timestamps-format-time-precision-us.gen.test [new file with mode: 0755]
tests-m32/strace--absolute-timestamps-format-time.gen.test [new file with mode: 0755]
tests-m32/strace--absolute-timestamps-format-unix-precision-ms.gen.test [new file with mode: 0755]
tests-m32/strace--absolute-timestamps-format-unix-precision-ns.gen.test [new file with mode: 0755]
tests-m32/strace--absolute-timestamps-format-unix-precision-s.gen.test [new file with mode: 0755]
tests-m32/strace--absolute-timestamps-format-unix-precision-us.gen.test [new file with mode: 0755]
tests-m32/strace--absolute-timestamps.gen.test [new file with mode: 0755]
tests-m32/strace--follow-forks-output-separately.expected [new file with mode: 0644]
tests-m32/strace--follow-forks-output-separately.gen.test [new file with mode: 0755]
tests-m32/strace--relative-timestamps-ms.expected [new file with mode: 0644]
tests-m32/strace--relative-timestamps-ms.gen.test [new file with mode: 0755]
tests-m32/strace--relative-timestamps-ns.expected [new file with mode: 0644]
tests-m32/strace--relative-timestamps-ns.gen.test [new file with mode: 0755]
tests-m32/strace--relative-timestamps-s.expected [new file with mode: 0644]
tests-m32/strace--relative-timestamps-s.gen.test [new file with mode: 0755]
tests-m32/strace--relative-timestamps-us.expected [new file with mode: 0644]
tests-m32/strace--relative-timestamps-us.gen.test [new file with mode: 0755]
tests-m32/strace--relative-timestamps.expected [new file with mode: 0644]
tests-m32/strace--relative-timestamps.gen.test [new file with mode: 0755]
tests-m32/strace--strings-in-hex-all.c [new file with mode: 0644]
tests-m32/strace--strings-in-hex-all.gen.test [new file with mode: 0755]
tests-m32/strace--strings-in-hex-non-ascii.c [new file with mode: 0644]
tests-m32/strace--strings-in-hex-non-ascii.gen.test [new file with mode: 0755]
tests-m32/strace--strings-in-hex.c [new file with mode: 0644]
tests-m32/strace--strings-in-hex.gen.test [new file with mode: 0755]
tests-m32/strace--syscall-times-ms.expected [new file with mode: 0644]
tests-m32/strace--syscall-times-ms.gen.test [new file with mode: 0755]
tests-m32/strace--syscall-times-ns.expected [new file with mode: 0644]
tests-m32/strace--syscall-times-ns.gen.test [new file with mode: 0755]
tests-m32/strace--syscall-times-s.expected [new file with mode: 0644]
tests-m32/strace--syscall-times-s.gen.test [new file with mode: 0755]
tests-m32/strace--syscall-times-us.expected [new file with mode: 0644]
tests-m32/strace--syscall-times-us.gen.test [new file with mode: 0755]
tests-m32/strace--syscall-times.expected [new file with mode: 0644]
tests-m32/strace--syscall-times.gen.test [new file with mode: 0755]
tests-m32/strace--timestamps-time-ms.gen.test [new file with mode: 0755]
tests-m32/strace--timestamps-time-ns.gen.test [new file with mode: 0755]
tests-m32/strace--timestamps-time-s.gen.test [new file with mode: 0755]
tests-m32/strace--timestamps-time-us.gen.test [new file with mode: 0755]
tests-m32/strace--timestamps-time.gen.test [new file with mode: 0755]
tests-m32/strace--timestamps-unix-ms.gen.test [new file with mode: 0755]
tests-m32/strace--timestamps-unix-ns.gen.test [new file with mode: 0755]
tests-m32/strace--timestamps-unix-s.gen.test [new file with mode: 0755]
tests-m32/strace--timestamps-unix-us.gen.test [new file with mode: 0755]
tests-m32/strace--timestamps.gen.test [new file with mode: 0755]
tests-m32/strace-D.expected [new file with mode: 0644]
tests-m32/strace-D.test [new file with mode: 0755]
tests-m32/strace-DD.test [new file with mode: 0755]
tests-m32/strace-DDD.expected [new file with mode: 0644]
tests-m32/strace-DDD.test [new file with mode: 0755]
tests-m32/strace-E-override.test [new file with mode: 0755]
tests-m32/strace-E-unset.expected [new file with mode: 0644]
tests-m32/strace-E-unset.test [new file with mode: 0755]
tests-m32/strace-E.test
tests-m32/strace-S.test
tests-m32/strace-T.test
tests-m32/strace-V.test
tests-m32/strace-ff.test
tests-m32/strace-k-p.expected [new file with mode: 0644]
tests-m32/strace-k-p.test [new file with mode: 0755]
tests-m32/strace-k.test
tests-m32/strace-n.c [new file with mode: 0644]
tests-m32/strace-n.gen.test [new file with mode: 0755]
tests-m32/strace-r.test
tests-m32/strace-t.test
tests-m32/strace-tt.test
tests-m32/strace-ttt.test
tests-m32/strace-x.c [new file with mode: 0644]
tests-m32/strace-x.gen.test [new file with mode: 0755]
tests-m32/strace-xx.c [new file with mode: 0644]
tests-m32/strace-xx.gen.test [new file with mode: 0755]
tests-m32/swap.c
tests-m32/sxetmask.c
tests-m32/symlink.c
tests-m32/symlinkat.c
tests-m32/sync.c
tests-m32/sync_file_range.c
tests-m32/sync_file_range2.c
tests-m32/syntax.sh
tests-m32/syslog-success.c [new file with mode: 0644]
tests-m32/syslog-success.test [new file with mode: 0755]
tests-m32/syslog.c
tests-m32/syslog.gen.test
tests-m32/tee.c
tests-m32/termsig.test
tests-m32/test_nlattr.h
tests-m32/test_printstrn.c
tests-m32/test_ucopy.c
tests-m32/tests.h
tests-m32/tgkill--pidns-translation.c [new file with mode: 0644]
tests-m32/tgkill--pidns-translation.gen.test [new file with mode: 0755]
tests-m32/tgkill.c [new file with mode: 0644]
tests-m32/tgkill.gen.test [new file with mode: 0755]
tests-m32/threads-execve--quiet-thread-execve.c [new file with mode: 0644]
tests-m32/threads-execve--quiet-thread-execve.gen.test [new file with mode: 0755]
tests-m32/threads-execve-q.c [new file with mode: 0644]
tests-m32/threads-execve-q.gen.test [new file with mode: 0755]
tests-m32/threads-execve-qq.c [new file with mode: 0644]
tests-m32/threads-execve-qq.gen.test [new file with mode: 0755]
tests-m32/threads-execve-qqq.c [new file with mode: 0644]
tests-m32/threads-execve-qqq.gen.test [new file with mode: 0755]
tests-m32/threads-execve.c
tests-m32/threads-execve.test
tests-m32/time.c
tests-m32/timer_create.c
tests-m32/timer_xettime.c
tests-m32/timerfd_xettime.c
tests-m32/times-fail.c
tests-m32/times.c
tests-m32/tkill--pidns-translation.c [new file with mode: 0644]
tests-m32/tkill--pidns-translation.gen.test [new file with mode: 0755]
tests-m32/tkill.c [new file with mode: 0644]
tests-m32/tkill.gen.test [new file with mode: 0755]
tests-m32/trace_clock.gen.test [new file with mode: 0755]
tests-m32/trace_clock.in [new file with mode: 0644]
tests-m32/trace_creds.gen.test [new file with mode: 0755]
tests-m32/trace_creds.in [new file with mode: 0644]
tests-m32/trace_fstat.in
tests-m32/trace_lstat.in
tests-m32/trace_stat.in
tests-m32/tracer_ppid_pgid_sid.c [new file with mode: 0644]
tests-m32/trie_for_tests.c [new file with mode: 0644]
tests-m32/trie_test.c [new file with mode: 0644]
tests-m32/trie_test.gen.test [new file with mode: 0755]
tests-m32/truncate.c
tests-m32/truncate64.c
tests-m32/ugetrlimit.c
tests-m32/umount.c
tests-m32/umount2.c
tests-m32/umoven-illptr.c
tests-m32/umovestr-illptr.c
tests-m32/umovestr_cached.c [new file with mode: 0644]
tests-m32/umovestr_cached.test [new file with mode: 0755]
tests-m32/umovestr_cached_adjacent.c [new file with mode: 0644]
tests-m32/umovestr_cached_adjacent.gen.test [new file with mode: 0755]
tests-m32/uname.c
tests-m32/unix-pair-send-recv.c
tests-m32/unlink.c
tests-m32/unlinkat.c
tests-m32/unshare.c
tests-m32/userfaultfd.c
tests-m32/ustat.c
tests-m32/utime.c
tests-m32/utimensat.c
tests-m32/utimes.c
tests-m32/vhangup.c
tests-m32/vmsplice.c
tests-m32/wait4.c
tests-m32/waitid.c
tests-m32/waitpid.c
tests-m32/xet_robust_list--pidns-translation.c [new file with mode: 0644]
tests-m32/xet_robust_list--pidns-translation.gen.test [new file with mode: 0755]
tests-m32/xet_robust_list.c
tests-m32/xet_thread_area_x86.c
tests-m32/xetitimer.c
tests-m32/xetpgid--pidns-translation.c [new file with mode: 0644]
tests-m32/xetpgid--pidns-translation.gen.test [new file with mode: 0755]
tests-m32/xetpgid.c
tests-m32/xetpriority--pidns-translation.c [new file with mode: 0644]
tests-m32/xetpriority--pidns-translation.gen.test [new file with mode: 0755]
tests-m32/xetpriority.c
tests-m32/xetpriority.gen.test
tests-m32/xettimeofday.c
tests-m32/xgetdents.c [new file with mode: 0644]
tests-m32/xgetrlimit.c
tests-m32/xmalloc_for_tests.c [new file with mode: 0644]
tests-m32/xstatfsx.c
tests-m32/xstatx.c
tests-m32/zeroargc.c
tests-mx32/COPYING
tests-mx32/Makefile.am
tests-mx32/Makefile.in
tests-mx32/_newselect.c
tests-mx32/accept.c
tests-mx32/accept_compat.h
tests-mx32/access.c
tests-mx32/access.gen.test
tests-mx32/acct.c
tests-mx32/add_key.c
tests-mx32/adjtimex.c
tests-mx32/aio.c
tests-mx32/aio_pgetevents.c
tests-mx32/alarm.c
tests-mx32/answer.c
tests-mx32/attach-f-p.c
tests-mx32/bexecve.test
tests-mx32/block_reset_run.c [new file with mode: 0644]
tests-mx32/bpf-obj_get_info_by_fd.c
tests-mx32/bpf-success-long-y.c [new file with mode: 0644]
tests-mx32/bpf-success-long-y.test [new file with mode: 0755]
tests-mx32/bpf.c
tests-mx32/brk.c
tests-mx32/btrfs.c
tests-mx32/caps-abbrev.awk
tests-mx32/caps.awk
tests-mx32/chmod.c
tests-mx32/chown.c
tests-mx32/chown32.c
tests-mx32/chroot.c
tests-mx32/clock_adjtime.c
tests-mx32/clock_nanosleep.c
tests-mx32/clock_xettime.c
tests-mx32/clone-flags.c [new file with mode: 0644]
tests-mx32/clone-flags.test [new file with mode: 0755]
tests-mx32/clone3-Xabbrev.c [new file with mode: 0644]
tests-mx32/clone3-Xabbrev.gen.test [new file with mode: 0755]
tests-mx32/clone3-Xraw.c [new file with mode: 0644]
tests-mx32/clone3-Xraw.gen.test [new file with mode: 0755]
tests-mx32/clone3-Xverbose.c [new file with mode: 0644]
tests-mx32/clone3-Xverbose.gen.test [new file with mode: 0755]
tests-mx32/clone3-success-Xabbrev.c [new file with mode: 0644]
tests-mx32/clone3-success-Xabbrev.gen.test [new file with mode: 0755]
tests-mx32/clone3-success-Xraw.c [new file with mode: 0644]
tests-mx32/clone3-success-Xraw.gen.test [new file with mode: 0755]
tests-mx32/clone3-success-Xverbose.c [new file with mode: 0644]
tests-mx32/clone3-success-Xverbose.gen.test [new file with mode: 0755]
tests-mx32/clone3-success.c [new file with mode: 0644]
tests-mx32/clone3-success.test [new file with mode: 0755]
tests-mx32/clone3.c [new file with mode: 0644]
tests-mx32/clone3.gen.test [new file with mode: 0755]
tests-mx32/clone_parent--quiet-exit.c [new file with mode: 0644]
tests-mx32/clone_parent--quiet-exit.gen.test [new file with mode: 0755]
tests-mx32/clone_parent-q.c [new file with mode: 0644]
tests-mx32/clone_parent-q.gen.test [new file with mode: 0755]
tests-mx32/clone_parent-qq.c [new file with mode: 0644]
tests-mx32/clone_parent-qq.gen.test [new file with mode: 0755]
tests-mx32/clone_parent.c
tests-mx32/clone_parent.gen.test [new file with mode: 0755]
tests-mx32/clone_parent.test [deleted file]
tests-mx32/clone_ptrace--quiet-attach.c [new file with mode: 0644]
tests-mx32/clone_ptrace--quiet-attach.gen.test [new file with mode: 0755]
tests-mx32/clone_ptrace--quiet-exit.c [new file with mode: 0644]
tests-mx32/clone_ptrace--quiet-exit.gen.test [new file with mode: 0755]
tests-mx32/clone_ptrace-q.c [new file with mode: 0644]
tests-mx32/clone_ptrace-q.gen.test [new file with mode: 0755]
tests-mx32/clone_ptrace-qq.c [new file with mode: 0644]
tests-mx32/clone_ptrace-qq.gen.test [new file with mode: 0755]
tests-mx32/clone_ptrace.c
tests-mx32/clone_ptrace.test
tests-mx32/close_range-P.c [new file with mode: 0644]
tests-mx32/close_range-P.gen.test [new file with mode: 0755]
tests-mx32/close_range-y.c [new file with mode: 0644]
tests-mx32/close_range-y.gen.test [new file with mode: 0755]
tests-mx32/close_range-yy.c [new file with mode: 0644]
tests-mx32/close_range-yy.gen.test [new file with mode: 0755]
tests-mx32/close_range.c [new file with mode: 0644]
tests-mx32/close_range.gen.test [new file with mode: 0755]
tests-mx32/copy_file_range.c
tests-mx32/count-f.test
tests-mx32/count.test
tests-mx32/creat.c
tests-mx32/create_tmpfile.c [new file with mode: 0644]
tests-mx32/delay.c
tests-mx32/delay.test
tests-mx32/delete_module.c
tests-mx32/dev--decode-fds-dev.c [new file with mode: 0644]
tests-mx32/dev--decode-fds-dev.gen.test [new file with mode: 0755]
tests-mx32/dev--decode-fds-path.c [new file with mode: 0644]
tests-mx32/dev--decode-fds-path.gen.test [new file with mode: 0755]
tests-mx32/dev--decode-fds-socket.c [new file with mode: 0644]
tests-mx32/dev--decode-fds-socket.gen.test [new file with mode: 0755]
tests-mx32/dev-yy.c
tests-mx32/dup-P.c [new file with mode: 0644]
tests-mx32/dup-P.gen.test [new file with mode: 0755]
tests-mx32/dup-y.c [new file with mode: 0644]
tests-mx32/dup-y.gen.test [new file with mode: 0755]
tests-mx32/dup-yy.c [new file with mode: 0644]
tests-mx32/dup-yy.gen.test [new file with mode: 0755]
tests-mx32/dup.c
tests-mx32/dup.gen.test
tests-mx32/dup2-P.c [new file with mode: 0644]
tests-mx32/dup2-P.gen.test [new file with mode: 0755]
tests-mx32/dup2-y.c [new file with mode: 0644]
tests-mx32/dup2-y.gen.test [new file with mode: 0755]
tests-mx32/dup2-yy.c [new file with mode: 0644]
tests-mx32/dup2-yy.gen.test [new file with mode: 0755]
tests-mx32/dup2.c
tests-mx32/dup2.gen.test
tests-mx32/dup3-P.c [new file with mode: 0644]
tests-mx32/dup3-P.gen.test [new file with mode: 0755]
tests-mx32/dup3-y.c [new file with mode: 0644]
tests-mx32/dup3-y.gen.test [new file with mode: 0755]
tests-mx32/dup3-yy.c [new file with mode: 0644]
tests-mx32/dup3-yy.gen.test [new file with mode: 0755]
tests-mx32/dup3.c
tests-mx32/dup3.gen.test
tests-mx32/epoll_create.c
tests-mx32/epoll_create1.c
tests-mx32/epoll_ctl.c
tests-mx32/epoll_pwait.c
tests-mx32/epoll_wait.c
tests-mx32/eventfd.c
tests-mx32/execveat.c
tests-mx32/faccessat-P.c [new file with mode: 0644]
tests-mx32/faccessat-P.gen.test [new file with mode: 0755]
tests-mx32/faccessat-y.c [new file with mode: 0644]
tests-mx32/faccessat-y.gen.test [new file with mode: 0755]
tests-mx32/faccessat-yy.c [new file with mode: 0644]
tests-mx32/faccessat-yy.gen.test [new file with mode: 0755]
tests-mx32/faccessat.c
tests-mx32/faccessat.gen.test [deleted file]
tests-mx32/faccessat.test [new file with mode: 0755]
tests-mx32/faccessat2-P.c [new file with mode: 0644]
tests-mx32/faccessat2-P.gen.test [new file with mode: 0755]
tests-mx32/faccessat2-y.c [new file with mode: 0644]
tests-mx32/faccessat2-y.gen.test [new file with mode: 0755]
tests-mx32/faccessat2-yy.c [new file with mode: 0644]
tests-mx32/faccessat2-yy.gen.test [new file with mode: 0755]
tests-mx32/faccessat2.c [new file with mode: 0644]
tests-mx32/faccessat2.test [new file with mode: 0755]
tests-mx32/fadvise64.c
tests-mx32/fadvise64_64.c
tests-mx32/fallocate.c
tests-mx32/fanotify_init.c
tests-mx32/fanotify_mark.c
tests-mx32/fchdir.c
tests-mx32/fchmod.c
tests-mx32/fchmodat.c
tests-mx32/fchown.c
tests-mx32/fchown32.c
tests-mx32/fchownat.c
tests-mx32/fcntl--pidns-translation.c [new file with mode: 0644]
tests-mx32/fcntl--pidns-translation.gen.test [new file with mode: 0755]
tests-mx32/fcntl-common.c
tests-mx32/fcntl.c
tests-mx32/fcntl64--pidns-translation.c [new file with mode: 0644]
tests-mx32/fcntl64--pidns-translation.gen.test [new file with mode: 0755]
tests-mx32/fcntl64.c
tests-mx32/fdatasync.c
tests-mx32/file_handle.c
tests-mx32/file_ioctl.c
tests-mx32/fill_memory.c
tests-mx32/filter_seccomp-flag.c [new file with mode: 0644]
tests-mx32/filter_seccomp-flag.gen.test [new file with mode: 0755]
tests-mx32/filter_seccomp-perf.c [new file with mode: 0644]
tests-mx32/filter_seccomp-perf.test [new file with mode: 0755]
tests-mx32/filter_seccomp.gen.test [new file with mode: 0755]
tests-mx32/filter_seccomp.in [new file with mode: 0644]
tests-mx32/filter_seccomp.sh [new file with mode: 0755]
tests-mx32/filtering_fd-syntax.test
tests-mx32/filtering_syscall-syntax.test
tests-mx32/finit_module.c
tests-mx32/flock.c
tests-mx32/fork--pidns-translation.awk [new file with mode: 0644]
tests-mx32/fork--pidns-translation.c [new file with mode: 0644]
tests-mx32/fork--pidns-translation.test [new file with mode: 0755]
tests-mx32/fsconfig-P.c [new file with mode: 0644]
tests-mx32/fsconfig-P.gen.test [new file with mode: 0755]
tests-mx32/fsconfig.c [new file with mode: 0644]
tests-mx32/fsconfig.gen.test [new file with mode: 0755]
tests-mx32/fsmount.c [new file with mode: 0644]
tests-mx32/fsmount.gen.test [new file with mode: 0755]
tests-mx32/fsopen.c [new file with mode: 0644]
tests-mx32/fsopen.gen.test [new file with mode: 0755]
tests-mx32/fspick-P.c [new file with mode: 0644]
tests-mx32/fspick-P.gen.test [new file with mode: 0755]
tests-mx32/fspick.c [new file with mode: 0644]
tests-mx32/fspick.gen.test [new file with mode: 0755]
tests-mx32/fstat.c
tests-mx32/fstat64.c
tests-mx32/fstatat64.c
tests-mx32/fstatat64.gen.test
tests-mx32/fstatfs.c
tests-mx32/fstatfs64.c
tests-mx32/fsync.c
tests-mx32/ftruncate.c
tests-mx32/ftruncate64.c
tests-mx32/futex.c
tests-mx32/futimesat.c
tests-mx32/gen_tests.am
tests-mx32/gen_tests.in
tests-mx32/get_mempolicy.c
tests-mx32/get_process_reaper.c [new file with mode: 0644]
tests-mx32/get_sigset_size.c
tests-mx32/getcpu.c
tests-mx32/getcwd.c
tests-mx32/getdents-v.c [new file with mode: 0644]
tests-mx32/getdents-v.gen.test [new file with mode: 0755]
tests-mx32/getdents.c
tests-mx32/getdents.gen.test
tests-mx32/getdents64-v.c [new file with mode: 0644]
tests-mx32/getdents64-v.gen.test [new file with mode: 0755]
tests-mx32/getdents64.c
tests-mx32/getdents64.gen.test
tests-mx32/getegid-creds.gen.test [new file with mode: 0755]
tests-mx32/getegid.c
tests-mx32/getegid32-creds.gen.test [new file with mode: 0755]
tests-mx32/getegid32.c
tests-mx32/geteuid-creds.gen.test [new file with mode: 0755]
tests-mx32/geteuid.c
tests-mx32/geteuid32-creds.gen.test [new file with mode: 0755]
tests-mx32/geteuid32.c
tests-mx32/getgid-creds.gen.test [new file with mode: 0755]
tests-mx32/getgid.c
tests-mx32/getgid32-creds.gen.test [new file with mode: 0755]
tests-mx32/getgid32.c
tests-mx32/getgroups.c
tests-mx32/getgroups32.c
tests-mx32/getpgrp--pidns-translation.c [new file with mode: 0644]
tests-mx32/getpgrp--pidns-translation.gen.test [new file with mode: 0755]
tests-mx32/getpgrp.c
tests-mx32/getpid--pidns-translation.c [new file with mode: 0644]
tests-mx32/getpid--pidns-translation.gen.test [new file with mode: 0755]
tests-mx32/getpid.c
tests-mx32/getppid.c
tests-mx32/getrandom.c
tests-mx32/getresgid.c
tests-mx32/getresgid32.c
tests-mx32/getresuid.c
tests-mx32/getresuid32.c
tests-mx32/getrlimit.c
tests-mx32/getrusage.c
tests-mx32/getsid--pidns-translation.c [new file with mode: 0644]
tests-mx32/getsid--pidns-translation.gen.test [new file with mode: 0755]
tests-mx32/getsid.c
tests-mx32/gettid--pidns-translation.c [new file with mode: 0644]
tests-mx32/gettid--pidns-translation.test [new file with mode: 0755]
tests-mx32/gettid.c
tests-mx32/getuid-creds.gen.test [new file with mode: 0755]
tests-mx32/getuid.c
tests-mx32/getuid.test
tests-mx32/getuid32-creds.gen.test [new file with mode: 0755]
tests-mx32/getuid32.c
tests-mx32/getxgid.c [new file with mode: 0644]
tests-mx32/getxgid.gen.test [new file with mode: 0755]
tests-mx32/getxpid.c [new file with mode: 0644]
tests-mx32/getxpid.gen.test [new file with mode: 0755]
tests-mx32/getxuid.c [new file with mode: 0644]
tests-mx32/getxuid.gen.test [new file with mode: 0755]
tests-mx32/getxxid.c [deleted file]
tests-mx32/getxxid.gen.test [deleted file]
tests-mx32/init.sh
tests-mx32/init_module.c
tests-mx32/inject-nf.c
tests-mx32/inject-nf.test
tests-mx32/inotify.c
tests-mx32/inotify_init-y.c [new file with mode: 0644]
tests-mx32/inotify_init-y.test [new file with mode: 0755]
tests-mx32/inotify_init.c [new file with mode: 0644]
tests-mx32/inotify_init.gen.test [new file with mode: 0755]
tests-mx32/inotify_init1-y.c [new file with mode: 0644]
tests-mx32/inotify_init1-y.gen.test [new file with mode: 0755]
tests-mx32/inotify_init1.c
tests-mx32/io_uring_enter.c
tests-mx32/io_uring_register.c
tests-mx32/io_uring_setup.c
tests-mx32/ioctl-success.sh [new file with mode: 0755]
tests-mx32/ioctl.c
tests-mx32/ioctl_block--pidns-translation.c [new file with mode: 0644]
tests-mx32/ioctl_block--pidns-translation.test [new file with mode: 0755]
tests-mx32/ioctl_block.c
tests-mx32/ioctl_evdev-Xabbrev.c [new file with mode: 0644]
tests-mx32/ioctl_evdev-Xabbrev.gen.test [new file with mode: 0755]
tests-mx32/ioctl_evdev-Xraw.c [new file with mode: 0644]
tests-mx32/ioctl_evdev-Xraw.gen.test [new file with mode: 0755]
tests-mx32/ioctl_evdev-Xverbose.c [new file with mode: 0644]
tests-mx32/ioctl_evdev-Xverbose.gen.test [new file with mode: 0755]
tests-mx32/ioctl_evdev-success-Xabbrev.c [new file with mode: 0644]
tests-mx32/ioctl_evdev-success-Xabbrev.gen.test [new file with mode: 0755]
tests-mx32/ioctl_evdev-success-Xraw.c [new file with mode: 0644]
tests-mx32/ioctl_evdev-success-Xraw.gen.test [new file with mode: 0755]
tests-mx32/ioctl_evdev-success-Xverbose.c [new file with mode: 0644]
tests-mx32/ioctl_evdev-success-Xverbose.gen.test [new file with mode: 0755]
tests-mx32/ioctl_evdev-success-v-Xabbrev.c [new file with mode: 0644]
tests-mx32/ioctl_evdev-success-v-Xabbrev.gen.test [new file with mode: 0755]
tests-mx32/ioctl_evdev-success-v-Xraw.c [new file with mode: 0644]
tests-mx32/ioctl_evdev-success-v-Xraw.gen.test [new file with mode: 0755]
tests-mx32/ioctl_evdev-success-v-Xverbose.c [new file with mode: 0644]
tests-mx32/ioctl_evdev-success-v-Xverbose.gen.test [new file with mode: 0755]
tests-mx32/ioctl_evdev-success-v.gen.test [new file with mode: 0755]
tests-mx32/ioctl_evdev-success-v.test [deleted file]
tests-mx32/ioctl_evdev-success.c
tests-mx32/ioctl_evdev-success.test
tests-mx32/ioctl_evdev-v-Xabbrev.c [new file with mode: 0644]
tests-mx32/ioctl_evdev-v-Xabbrev.gen.test [new file with mode: 0755]
tests-mx32/ioctl_evdev-v-Xraw.c [new file with mode: 0644]
tests-mx32/ioctl_evdev-v-Xraw.gen.test [new file with mode: 0755]
tests-mx32/ioctl_evdev-v-Xverbose.c [new file with mode: 0644]
tests-mx32/ioctl_evdev-v-Xverbose.gen.test [new file with mode: 0755]
tests-mx32/ioctl_evdev-v.gen.test
tests-mx32/ioctl_evdev.c
tests-mx32/ioctl_evdev.gen.test
tests-mx32/ioctl_hdio-Xabbrev.c [new file with mode: 0644]
tests-mx32/ioctl_hdio-Xabbrev.gen.test [new file with mode: 0755]
tests-mx32/ioctl_hdio-Xraw.c [new file with mode: 0644]
tests-mx32/ioctl_hdio-Xraw.gen.test [new file with mode: 0755]
tests-mx32/ioctl_hdio-Xverbose.c [new file with mode: 0644]
tests-mx32/ioctl_hdio-Xverbose.gen.test [new file with mode: 0755]
tests-mx32/ioctl_hdio-success-Xabbrev.c [new file with mode: 0644]
tests-mx32/ioctl_hdio-success-Xabbrev.gen.test [new file with mode: 0755]
tests-mx32/ioctl_hdio-success-Xraw.c [new file with mode: 0644]
tests-mx32/ioctl_hdio-success-Xraw.gen.test [new file with mode: 0755]
tests-mx32/ioctl_hdio-success-Xverbose.c [new file with mode: 0644]
tests-mx32/ioctl_hdio-success-Xverbose.gen.test [new file with mode: 0755]
tests-mx32/ioctl_hdio-success-v-Xabbrev.c [new file with mode: 0644]
tests-mx32/ioctl_hdio-success-v-Xabbrev.gen.test [new file with mode: 0755]
tests-mx32/ioctl_hdio-success-v-Xraw.c [new file with mode: 0644]
tests-mx32/ioctl_hdio-success-v-Xraw.gen.test [new file with mode: 0755]
tests-mx32/ioctl_hdio-success-v-Xverbose.c [new file with mode: 0644]
tests-mx32/ioctl_hdio-success-v-Xverbose.gen.test [new file with mode: 0755]
tests-mx32/ioctl_hdio-success-v.c [new file with mode: 0644]
tests-mx32/ioctl_hdio-success-v.gen.test [new file with mode: 0755]
tests-mx32/ioctl_hdio-success.c [new file with mode: 0644]
tests-mx32/ioctl_hdio-success.gen.test [new file with mode: 0755]
tests-mx32/ioctl_hdio-v-Xabbrev.c [new file with mode: 0644]
tests-mx32/ioctl_hdio-v-Xabbrev.gen.test [new file with mode: 0755]
tests-mx32/ioctl_hdio-v-Xraw.c [new file with mode: 0644]
tests-mx32/ioctl_hdio-v-Xraw.gen.test [new file with mode: 0755]
tests-mx32/ioctl_hdio-v-Xverbose.c [new file with mode: 0644]
tests-mx32/ioctl_hdio-v-Xverbose.gen.test [new file with mode: 0755]
tests-mx32/ioctl_hdio-v.c [new file with mode: 0644]
tests-mx32/ioctl_hdio-v.gen.test [new file with mode: 0755]
tests-mx32/ioctl_hdio.c [new file with mode: 0644]
tests-mx32/ioctl_hdio.gen.test [new file with mode: 0755]
tests-mx32/ioctl_inotify.c
tests-mx32/ioctl_kvm_run_common.c
tests-mx32/ioctl_loop.c
tests-mx32/ioctl_nsfs.c
tests-mx32/ioctl_perf-success.c
tests-mx32/ioctl_perf-success.gen.test [new file with mode: 0755]
tests-mx32/ioctl_perf-success.test [deleted file]
tests-mx32/ioctl_perf.c
tests-mx32/ioctl_ptp.c
tests-mx32/ioctl_rtc.c
tests-mx32/ioctl_scsi.c
tests-mx32/ioctl_sg_io_v4.c
tests-mx32/ioctl_tee.c [new file with mode: 0644]
tests-mx32/ioctl_tee.gen.test [new file with mode: 0755]
tests-mx32/ioctl_uffdio.c
tests-mx32/ioctl_v4l2-Xabbrev.c [new file with mode: 0644]
tests-mx32/ioctl_v4l2-Xabbrev.gen.test [new file with mode: 0755]
tests-mx32/ioctl_v4l2-Xraw.c [new file with mode: 0644]
tests-mx32/ioctl_v4l2-Xraw.gen.test [new file with mode: 0755]
tests-mx32/ioctl_v4l2-Xverbose.c [new file with mode: 0644]
tests-mx32/ioctl_v4l2-Xverbose.gen.test [new file with mode: 0755]
tests-mx32/ioctl_v4l2-success-Xabbrev.c [new file with mode: 0644]
tests-mx32/ioctl_v4l2-success-Xabbrev.gen.test [new file with mode: 0755]
tests-mx32/ioctl_v4l2-success-Xraw.c [new file with mode: 0644]
tests-mx32/ioctl_v4l2-success-Xraw.gen.test [new file with mode: 0755]
tests-mx32/ioctl_v4l2-success-Xverbose.c [new file with mode: 0644]
tests-mx32/ioctl_v4l2-success-Xverbose.gen.test [new file with mode: 0755]
tests-mx32/ioctl_v4l2-success-v-Xabbrev.c [new file with mode: 0644]
tests-mx32/ioctl_v4l2-success-v-Xabbrev.gen.test [new file with mode: 0755]
tests-mx32/ioctl_v4l2-success-v-Xraw.c [new file with mode: 0644]
tests-mx32/ioctl_v4l2-success-v-Xraw.gen.test [new file with mode: 0755]
tests-mx32/ioctl_v4l2-success-v-Xverbose.c [new file with mode: 0644]
tests-mx32/ioctl_v4l2-success-v-Xverbose.gen.test [new file with mode: 0755]
tests-mx32/ioctl_v4l2-success-v.c [new file with mode: 0644]
tests-mx32/ioctl_v4l2-success-v.gen.test [new file with mode: 0755]
tests-mx32/ioctl_v4l2-success.c [new file with mode: 0644]
tests-mx32/ioctl_v4l2-success.gen.test [new file with mode: 0755]
tests-mx32/ioctl_v4l2-v-Xabbrev.c [new file with mode: 0644]
tests-mx32/ioctl_v4l2-v-Xabbrev.gen.test [new file with mode: 0755]
tests-mx32/ioctl_v4l2-v-Xraw.c [new file with mode: 0644]
tests-mx32/ioctl_v4l2-v-Xraw.gen.test [new file with mode: 0755]
tests-mx32/ioctl_v4l2-v-Xverbose.c [new file with mode: 0644]
tests-mx32/ioctl_v4l2-v-Xverbose.gen.test [new file with mode: 0755]
tests-mx32/ioctl_v4l2-v.c [new file with mode: 0644]
tests-mx32/ioctl_v4l2-v.gen.test [new file with mode: 0755]
tests-mx32/ioctl_v4l2.c
tests-mx32/ioctl_watchdog.c [new file with mode: 0644]
tests-mx32/ioctl_watchdog.gen.test [new file with mode: 0755]
tests-mx32/ioperm.c
tests-mx32/iopl.c
tests-mx32/ioprio--pidns-translation.c [new file with mode: 0644]
tests-mx32/ioprio--pidns-translation.gen.test [new file with mode: 0755]
tests-mx32/ioprio.c
tests-mx32/ipc.c
tests-mx32/ipc_msg.c
tests-mx32/ipc_msgbuf-Xraw.gen.test
tests-mx32/ipc_msgbuf.c
tests-mx32/ipc_sem.c
tests-mx32/ipc_shm-Xabbrev.gen.test
tests-mx32/ipc_shm-Xverbose.gen.test
tests-mx32/ipc_shm.c
tests-mx32/ipc_shm.gen.test
tests-mx32/kcmp-y--pidns-translation.c [new file with mode: 0644]
tests-mx32/kcmp-y--pidns-translation.gen.test [new file with mode: 0755]
tests-mx32/kcmp.c
tests-mx32/kern_features.c
tests-mx32/kernel_old_timespec.h [new file with mode: 0644]
tests-mx32/kernel_old_timex.h [new file with mode: 0644]
tests-mx32/kernel_version.c
tests-mx32/kexec_file_load.c
tests-mx32/kexec_load.c
tests-mx32/keyctl.c
tests-mx32/kill--pidns-translation.c [new file with mode: 0644]
tests-mx32/kill--pidns-translation.gen.test [new file with mode: 0755]
tests-mx32/kill.c
tests-mx32/ksysent.c
tests-mx32/ksysent.gen.test [new file with mode: 0755]
tests-mx32/ksysent.sed
tests-mx32/ksysent.test [deleted file]
tests-mx32/lchown.c
tests-mx32/lchown32.c
tests-mx32/libmmsg.c
tests-mx32/libsocketcall.c
tests-mx32/link.c
tests-mx32/linkat.c
tests-mx32/llseek.c
tests-mx32/localtime.c
tests-mx32/lock_file.c [new file with mode: 0644]
tests-mx32/lookup_dcookie.c
tests-mx32/looping_threads.test
tests-mx32/lseek.c
tests-mx32/lstat.c
tests-mx32/lstat.gen.test
tests-mx32/lstat64.c
tests-mx32/lstat64.gen.test
tests-mx32/madvise.c
tests-mx32/maybe_switch_current_tcp--quiet-thread-execve.c [new file with mode: 0644]
tests-mx32/maybe_switch_current_tcp--quiet-thread-execve.gen.test [new file with mode: 0755]
tests-mx32/maybe_switch_current_tcp.c [new file with mode: 0644]
tests-mx32/maybe_switch_current_tcp.gen.test [new file with mode: 0755]
tests-mx32/mbind-Xabbrev.c [new file with mode: 0644]
tests-mx32/mbind-Xabbrev.gen.test [new file with mode: 0755]
tests-mx32/mbind-Xraw.c [new file with mode: 0644]
tests-mx32/mbind-Xraw.gen.test [new file with mode: 0755]
tests-mx32/mbind-Xverbose.c [new file with mode: 0644]
tests-mx32/mbind-Xverbose.gen.test [new file with mode: 0755]
tests-mx32/mbind.c
tests-mx32/membarrier.c
tests-mx32/memfd_create.c
tests-mx32/migrate_pages--pidns-translation.c [new file with mode: 0644]
tests-mx32/migrate_pages--pidns-translation.gen.test [new file with mode: 0755]
tests-mx32/migrate_pages.c
tests-mx32/mkdir.c
tests-mx32/mkdirat.c
tests-mx32/mknod.c
tests-mx32/mknodat.c
tests-mx32/mlock.c
tests-mx32/mlock2.c
tests-mx32/modify_ldt.c
tests-mx32/move_mount-P.c [new file with mode: 0644]
tests-mx32/move_mount-P.gen.test [new file with mode: 0755]
tests-mx32/move_mount.c [new file with mode: 0644]
tests-mx32/move_mount.gen.test [new file with mode: 0755]
tests-mx32/move_pages--pidns-translation.c [new file with mode: 0644]
tests-mx32/move_pages--pidns-translation.gen.test [new file with mode: 0755]
tests-mx32/move_pages.c
tests-mx32/mq_sendrecv.c
tests-mx32/msg_control.c
tests-mx32/nanosleep.c
tests-mx32/net--decode-fds-dev-netlink.c [new file with mode: 0644]
tests-mx32/net--decode-fds-dev-netlink.gen.test [new file with mode: 0755]
tests-mx32/net--decode-fds-none-netlink.c [new file with mode: 0644]
tests-mx32/net--decode-fds-none-netlink.gen.test [new file with mode: 0755]
tests-mx32/net--decode-fds-path-netlink.c [new file with mode: 0644]
tests-mx32/net--decode-fds-path-netlink.gen.test [new file with mode: 0755]
tests-mx32/net--decode-fds-socket-netlink.c [new file with mode: 0644]
tests-mx32/net--decode-fds-socket-netlink.gen.test [new file with mode: 0755]
tests-mx32/net-sockaddr--pidns-translation.c [new file with mode: 0644]
tests-mx32/net-sockaddr--pidns-translation.gen.test [new file with mode: 0755]
tests-mx32/net-sockaddr.c
tests-mx32/net-yy-netlink.c
tests-mx32/net-yy-netlink.test
tests-mx32/netlink_audit--pidns-translation.c [new file with mode: 0644]
tests-mx32/netlink_audit--pidns-translation.test [new file with mode: 0755]
tests-mx32/netlink_audit.c
tests-mx32/netlink_protocol.c
tests-mx32/netlink_sock_diag-v.sh [deleted file]
tests-mx32/netlink_sock_diag.test
tests-mx32/newfstatat.c
tests-mx32/newfstatat.gen.test
tests-mx32/nlattr.c
tests-mx32/nlattr_crypto_user_alg.c
tests-mx32/nlattr_ifinfomsg.c
tests-mx32/nlattr_ifla_linkinfo.c
tests-mx32/nlattr_ifla_port.c
tests-mx32/nlattr_ifla_xdp-y.c [new file with mode: 0644]
tests-mx32/nlattr_ifla_xdp-y.gen.test [new file with mode: 0755]
tests-mx32/nlattr_ifla_xdp.c
tests-mx32/nlattr_inet_diag_req_compat.c
tests-mx32/nlattr_mdba_mdb_entry.c
tests-mx32/nlattr_mdba_router_port.c
tests-mx32/nlattr_ndmsg.c
tests-mx32/nlattr_packet_diag_msg.gen.test
tests-mx32/nlattr_tc_stats.c
tests-mx32/nlattr_tcamsg.c
tests-mx32/nsyscalls-d.test
tests-mx32/nsyscalls.c
tests-mx32/old_mmap.c
tests-mx32/oldfstat.c
tests-mx32/oldlstat.c
tests-mx32/oldselect-efault.c
tests-mx32/oldselect.c
tests-mx32/oldstat.c
tests-mx32/open.c
tests-mx32/open_tree-P.c [new file with mode: 0644]
tests-mx32/open_tree-P.gen.test [new file with mode: 0755]
tests-mx32/open_tree.c [new file with mode: 0644]
tests-mx32/open_tree.gen.test [new file with mode: 0755]
tests-mx32/openat.c
tests-mx32/openat2-Xabbrev.c [new file with mode: 0644]
tests-mx32/openat2-Xabbrev.gen.test [new file with mode: 0755]
tests-mx32/openat2-Xraw.c [new file with mode: 0644]
tests-mx32/openat2-Xraw.gen.test [new file with mode: 0755]
tests-mx32/openat2-Xverbose.c [new file with mode: 0644]
tests-mx32/openat2-Xverbose.gen.test [new file with mode: 0755]
tests-mx32/openat2-v-y-Xabbrev.c [new file with mode: 0644]
tests-mx32/openat2-v-y-Xabbrev.gen.test [new file with mode: 0755]
tests-mx32/openat2-v-y-Xraw.c [new file with mode: 0644]
tests-mx32/openat2-v-y-Xraw.gen.test [new file with mode: 0755]
tests-mx32/openat2-v-y-Xverbose.c [new file with mode: 0644]
tests-mx32/openat2-v-y-Xverbose.gen.test [new file with mode: 0755]
tests-mx32/openat2-v-y.c [new file with mode: 0644]
tests-mx32/openat2-v-y.gen.test [new file with mode: 0755]
tests-mx32/openat2-v.c [new file with mode: 0644]
tests-mx32/openat2-v.gen.test [new file with mode: 0755]
tests-mx32/openat2-y.c [new file with mode: 0644]
tests-mx32/openat2-y.gen.test [new file with mode: 0755]
tests-mx32/openat2.c [new file with mode: 0644]
tests-mx32/openat2.gen.test [new file with mode: 0755]
tests-mx32/options-syntax.test
tests-mx32/orphaned_process_group.c
tests-mx32/osf_utimes.c
tests-mx32/pause.c
tests-mx32/pc.c
tests-mx32/pc.test
tests-mx32/perf_event_open.c
tests-mx32/perf_event_open_nonverbose.c
tests-mx32/pidfd_getfd-y.c [new file with mode: 0644]
tests-mx32/pidfd_getfd-y.gen.test [new file with mode: 0755]
tests-mx32/pidfd_getfd-yy.c [new file with mode: 0644]
tests-mx32/pidfd_getfd-yy.gen.test [new file with mode: 0755]
tests-mx32/pidfd_getfd.c [new file with mode: 0644]
tests-mx32/pidfd_getfd.gen.test [new file with mode: 0755]
tests-mx32/pidfd_open--decode-fd-path.c [new file with mode: 0644]
tests-mx32/pidfd_open--decode-fd-path.gen.test [new file with mode: 0755]
tests-mx32/pidfd_open--decode-fd-pidfd.c [new file with mode: 0644]
tests-mx32/pidfd_open--decode-fd-pidfd.gen.test [new file with mode: 0755]
tests-mx32/pidfd_open--decode-fd-socket.c [new file with mode: 0644]
tests-mx32/pidfd_open--decode-fd-socket.gen.test [new file with mode: 0755]
tests-mx32/pidfd_open--pidns-translation.c [new file with mode: 0644]
tests-mx32/pidfd_open--pidns-translation.gen.test [new file with mode: 0755]
tests-mx32/pidfd_open-P.c [new file with mode: 0644]
tests-mx32/pidfd_open-P.gen.test [new file with mode: 0755]
tests-mx32/pidfd_open-y.c [new file with mode: 0644]
tests-mx32/pidfd_open-y.gen.test [new file with mode: 0755]
tests-mx32/pidfd_open-yy.c [new file with mode: 0644]
tests-mx32/pidfd_open-yy.gen.test [new file with mode: 0755]
tests-mx32/pidfd_open.c [new file with mode: 0644]
tests-mx32/pidfd_open.gen.test [new file with mode: 0755]
tests-mx32/pidfd_send_signal--pidns-translation.c [new file with mode: 0644]
tests-mx32/pidfd_send_signal--pidns-translation.gen.test [new file with mode: 0755]
tests-mx32/pidfd_send_signal.c
tests-mx32/pidns-cache.c [new file with mode: 0644]
tests-mx32/pidns-cache.test [new file with mode: 0755]
tests-mx32/pidns.c [new file with mode: 0644]
tests-mx32/pidns.h [new file with mode: 0644]
tests-mx32/pipe.c
tests-mx32/pipe2.c
tests-mx32/pkey_alloc.c
tests-mx32/pkey_free.c
tests-mx32/pkey_mprotect.c
tests-mx32/poll-P.test
tests-mx32/poll.c
tests-mx32/ppoll.c
tests-mx32/prctl-arg2-intptr.c
tests-mx32/prctl-dumpable.c
tests-mx32/prctl-name.c
tests-mx32/prctl-no-args.c
tests-mx32/prctl-pdeathsig.c
tests-mx32/prctl-seccomp-filter-v.c
tests-mx32/prctl-seccomp-strict.c
tests-mx32/prctl-securebits.c
tests-mx32/prctl-spec-inject.c
tests-mx32/prctl-tid_address.c
tests-mx32/prctl-tsc.c
tests-mx32/preadv.c
tests-mx32/preadv2-pwritev2.c
tests-mx32/print_ppid_tracerpid.c [new file with mode: 0644]
tests-mx32/printflags.c
tests-mx32/printpath-umovestr-undumpable.c
tests-mx32/printstrn-umoven-undumpable.c
tests-mx32/printxval-Xabbrev.c [new file with mode: 0644]
tests-mx32/printxval-Xraw.c [new file with mode: 0644]
tests-mx32/printxval-Xverbose.c [new file with mode: 0644]
tests-mx32/printxval.c
tests-mx32/prlimit64--pidns-translation.c [new file with mode: 0644]
tests-mx32/prlimit64--pidns-translation.gen.test [new file with mode: 0755]
tests-mx32/prlimit64.c
tests-mx32/process_vm_readv--pidns-translation.c [new file with mode: 0644]
tests-mx32/process_vm_readv--pidns-translation.gen.test [new file with mode: 0755]
tests-mx32/process_vm_readv.c
tests-mx32/process_vm_readv_writev.c
tests-mx32/process_vm_writev--pidns-translation.c [new file with mode: 0644]
tests-mx32/process_vm_writev--pidns-translation.gen.test [new file with mode: 0755]
tests-mx32/process_vm_writev.c
tests-mx32/pselect6.c
tests-mx32/ptrace.c
tests-mx32/ptrace_syscall_info.c
tests-mx32/pure_executables.am
tests-mx32/pure_executables.list
tests-mx32/qual_fault-syntax.test
tests-mx32/qual_fault.c
tests-mx32/qual_fault.test
tests-mx32/qual_inject-error-signal.c
tests-mx32/qual_inject-retval.c
tests-mx32/qual_inject-signal.c
tests-mx32/qual_inject-syntax.test
tests-mx32/qual_signal.test
tests-mx32/qual_syscall.test
tests-mx32/qualify_personality.sh
tests-mx32/quotactl-xfs.c
tests-mx32/quotactl.c
tests-mx32/read-write.c
tests-mx32/readahead.c
tests-mx32/readdir.c
tests-mx32/readlink.c
tests-mx32/readlinkat.c
tests-mx32/reboot.c
tests-mx32/recv-MSG_TRUNC.c [new file with mode: 0644]
tests-mx32/recv-MSG_TRUNC.gen.test [new file with mode: 0755]
tests-mx32/recvfrom-MSG_TRUNC.c [new file with mode: 0644]
tests-mx32/recvfrom-MSG_TRUNC.gen.test [new file with mode: 0755]
tests-mx32/redirect.test
tests-mx32/remap_file_pages.c
tests-mx32/rename.c
tests-mx32/renameat.c
tests-mx32/renameat2.c
tests-mx32/request_key.c
tests-mx32/restart_syscall.c
tests-mx32/restart_syscall.test
tests-mx32/riscv_flush_icache.c
tests-mx32/rmdir.c
tests-mx32/rt_sigpending.c
tests-mx32/rt_sigprocmask.c
tests-mx32/rt_sigqueueinfo--pidns-translation.c [new file with mode: 0644]
tests-mx32/rt_sigqueueinfo--pidns-translation.gen.test [new file with mode: 0755]
tests-mx32/rt_sigqueueinfo.c
tests-mx32/rt_sigsuspend.c
tests-mx32/rt_sigtimedwait.c
tests-mx32/rt_tgsigqueueinfo--pidns-translation.c [new file with mode: 0644]
tests-mx32/rt_tgsigqueueinfo--pidns-translation.gen.test [new file with mode: 0755]
tests-mx32/rt_tgsigqueueinfo.c
tests-mx32/s390_guarded_storage.c
tests-mx32/s390_pci_mmio_read_write.c
tests-mx32/s390_runtime_instr.c
tests-mx32/s390_sthyi.c
tests-mx32/sched_get_priority_mxx.c
tests-mx32/sched_rr_get_interval.c
tests-mx32/sched_xetaffinity--pidns-translation.c [new file with mode: 0644]
tests-mx32/sched_xetaffinity--pidns-translation.gen.test [new file with mode: 0755]
tests-mx32/sched_xetaffinity.c
tests-mx32/sched_xetattr--pidns-translation.c [new file with mode: 0644]
tests-mx32/sched_xetattr--pidns-translation.gen.test [new file with mode: 0755]
tests-mx32/sched_xetattr.c
tests-mx32/sched_xetparam--pidns-translation.c [new file with mode: 0644]
tests-mx32/sched_xetparam--pidns-translation.gen.test [new file with mode: 0755]
tests-mx32/sched_xetparam.c
tests-mx32/sched_xetscheduler--pidns-translation.c [new file with mode: 0644]
tests-mx32/sched_xetscheduler--pidns-translation.gen.test [new file with mode: 0755]
tests-mx32/sched_xetscheduler.c
tests-mx32/sched_yield.c
tests-mx32/seccomp-filter-v.c
tests-mx32/seccomp-filter.c
tests-mx32/seccomp-strict.c
tests-mx32/seccomp_get_action_avail.c
tests-mx32/select.c
tests-mx32/semop-common.c [new file with mode: 0644]
tests-mx32/semop-indirect.c [new file with mode: 0644]
tests-mx32/semop-indirect.gen.test [new file with mode: 0755]
tests-mx32/semop.c
tests-mx32/semop.gen.test
tests-mx32/semtimedop.c [new file with mode: 0644]
tests-mx32/semtimedop.gen.test [new file with mode: 0755]
tests-mx32/sendfile.c
tests-mx32/sendfile64.c
tests-mx32/set_mempolicy-Xabbrev.c [new file with mode: 0644]
tests-mx32/set_mempolicy-Xabbrev.gen.test [new file with mode: 0755]
tests-mx32/set_mempolicy-Xraw.c [new file with mode: 0644]
tests-mx32/set_mempolicy-Xraw.gen.test [new file with mode: 0755]
tests-mx32/set_mempolicy-Xverbose.c [new file with mode: 0644]
tests-mx32/set_mempolicy-Xverbose.gen.test [new file with mode: 0755]
tests-mx32/set_mempolicy.c
tests-mx32/set_mempolicy.gen.test
tests-mx32/set_ptracer_any.c
tests-mx32/setdomainname.c
tests-mx32/setfsgid.c
tests-mx32/setfsgid32.c
tests-mx32/setfsuid.c
tests-mx32/setfsuid32.c
tests-mx32/setgid.c
tests-mx32/setgid32.c
tests-mx32/setgroups.c
tests-mx32/setgroups32.c
tests-mx32/sethostname.c
tests-mx32/setns.c
tests-mx32/setpgrp-exec.c [new file with mode: 0644]
tests-mx32/setregid.c
tests-mx32/setregid32.c
tests-mx32/setresgid.c
tests-mx32/setresgid32.c
tests-mx32/setresuid.c
tests-mx32/setresuid32.c
tests-mx32/setreuid.c
tests-mx32/setreuid32.c
tests-mx32/setrlimit.c
tests-mx32/setuid.c
tests-mx32/setuid32.c
tests-mx32/sigaction.c
tests-mx32/sigblock.test
tests-mx32/sigign.test
tests-mx32/siginfo.c
tests-mx32/signal.c
tests-mx32/signal_receive--pidns-translation.c [new file with mode: 0644]
tests-mx32/signal_receive--pidns-translation.gen.test [new file with mode: 0755]
tests-mx32/signal_receive.c
tests-mx32/signalfd4.c
tests-mx32/sigpending.c
tests-mx32/sigprocmask.c
tests-mx32/sigreturn.c
tests-mx32/sigsuspend.c
tests-mx32/sleep.c
tests-mx32/so_error.c
tests-mx32/so_peercred--pidns-translation.c [new file with mode: 0644]
tests-mx32/so_peercred--pidns-translation.gen.test [new file with mode: 0755]
tests-mx32/so_peercred.c
tests-mx32/sock_filter-v.c
tests-mx32/socketcall.c
tests-mx32/sockopt-timestamp.c
tests-mx32/splice.c
tests-mx32/stack-fcall-0.c
tests-mx32/stack-fcall-1.c
tests-mx32/stack-fcall-2.c
tests-mx32/stack-fcall-3.c
tests-mx32/stack-fcall-attach.c [new file with mode: 0644]
tests-mx32/stack-fcall.c
tests-mx32/stack-fcall.h
tests-mx32/stat.c
tests-mx32/stat.gen.test
tests-mx32/stat64.c
tests-mx32/stat64.gen.test
tests-mx32/statfs.c
tests-mx32/statfs64.c
tests-mx32/status-all.c [new file with mode: 0644]
tests-mx32/status-all.gen.test [new file with mode: 0755]
tests-mx32/status-detached.expected [new file with mode: 0644]
tests-mx32/status-detached.test [new file with mode: 0755]
tests-mx32/status-failed-long.c [new file with mode: 0644]
tests-mx32/status-failed-long.gen.test [new file with mode: 0755]
tests-mx32/status-failed-status.c [new file with mode: 0644]
tests-mx32/status-failed-status.gen.test [new file with mode: 0755]
tests-mx32/status-failed.c [new file with mode: 0644]
tests-mx32/status-failed.gen.test [new file with mode: 0755]
tests-mx32/status-none-f.c [new file with mode: 0644]
tests-mx32/status-none-threads.c [new file with mode: 0644]
tests-mx32/status-none-threads.test [new file with mode: 0755]
tests-mx32/status-none.c [new file with mode: 0644]
tests-mx32/status-none.gen.test [new file with mode: 0755]
tests-mx32/status-successful-long.c [new file with mode: 0644]
tests-mx32/status-successful-long.gen.test [new file with mode: 0755]
tests-mx32/status-successful-status.c [new file with mode: 0644]
tests-mx32/status-successful-status.gen.test [new file with mode: 0755]
tests-mx32/status-successful.c [new file with mode: 0644]
tests-mx32/status-successful.gen.test [new file with mode: 0755]
tests-mx32/status-unfinished-threads.c [new file with mode: 0644]
tests-mx32/status-unfinished-threads.test [new file with mode: 0755]
tests-mx32/status-unfinished.c [new file with mode: 0644]
tests-mx32/status-unfinished.gen.test [new file with mode: 0755]
tests-mx32/status.c [new file with mode: 0644]
tests-mx32/statx.c
tests-mx32/statx.gen.test
tests-mx32/strace--absolute-timestamps-format-time-precision-ms.gen.test [new file with mode: 0755]
tests-mx32/strace--absolute-timestamps-format-time-precision-ns.gen.test [new file with mode: 0755]
tests-mx32/strace--absolute-timestamps-format-time-precision-s.gen.test [new file with mode: 0755]
tests-mx32/strace--absolute-timestamps-format-time-precision-us.gen.test [new file with mode: 0755]
tests-mx32/strace--absolute-timestamps-format-time.gen.test [new file with mode: 0755]
tests-mx32/strace--absolute-timestamps-format-unix-precision-ms.gen.test [new file with mode: 0755]
tests-mx32/strace--absolute-timestamps-format-unix-precision-ns.gen.test [new file with mode: 0755]
tests-mx32/strace--absolute-timestamps-format-unix-precision-s.gen.test [new file with mode: 0755]
tests-mx32/strace--absolute-timestamps-format-unix-precision-us.gen.test [new file with mode: 0755]
tests-mx32/strace--absolute-timestamps.gen.test [new file with mode: 0755]
tests-mx32/strace--follow-forks-output-separately.expected [new file with mode: 0644]
tests-mx32/strace--follow-forks-output-separately.gen.test [new file with mode: 0755]
tests-mx32/strace--relative-timestamps-ms.expected [new file with mode: 0644]
tests-mx32/strace--relative-timestamps-ms.gen.test [new file with mode: 0755]
tests-mx32/strace--relative-timestamps-ns.expected [new file with mode: 0644]
tests-mx32/strace--relative-timestamps-ns.gen.test [new file with mode: 0755]
tests-mx32/strace--relative-timestamps-s.expected [new file with mode: 0644]
tests-mx32/strace--relative-timestamps-s.gen.test [new file with mode: 0755]
tests-mx32/strace--relative-timestamps-us.expected [new file with mode: 0644]
tests-mx32/strace--relative-timestamps-us.gen.test [new file with mode: 0755]
tests-mx32/strace--relative-timestamps.expected [new file with mode: 0644]
tests-mx32/strace--relative-timestamps.gen.test [new file with mode: 0755]
tests-mx32/strace--strings-in-hex-all.c [new file with mode: 0644]
tests-mx32/strace--strings-in-hex-all.gen.test [new file with mode: 0755]
tests-mx32/strace--strings-in-hex-non-ascii.c [new file with mode: 0644]
tests-mx32/strace--strings-in-hex-non-ascii.gen.test [new file with mode: 0755]
tests-mx32/strace--strings-in-hex.c [new file with mode: 0644]
tests-mx32/strace--strings-in-hex.gen.test [new file with mode: 0755]
tests-mx32/strace--syscall-times-ms.expected [new file with mode: 0644]
tests-mx32/strace--syscall-times-ms.gen.test [new file with mode: 0755]
tests-mx32/strace--syscall-times-ns.expected [new file with mode: 0644]
tests-mx32/strace--syscall-times-ns.gen.test [new file with mode: 0755]
tests-mx32/strace--syscall-times-s.expected [new file with mode: 0644]
tests-mx32/strace--syscall-times-s.gen.test [new file with mode: 0755]
tests-mx32/strace--syscall-times-us.expected [new file with mode: 0644]
tests-mx32/strace--syscall-times-us.gen.test [new file with mode: 0755]
tests-mx32/strace--syscall-times.expected [new file with mode: 0644]
tests-mx32/strace--syscall-times.gen.test [new file with mode: 0755]
tests-mx32/strace--timestamps-time-ms.gen.test [new file with mode: 0755]
tests-mx32/strace--timestamps-time-ns.gen.test [new file with mode: 0755]
tests-mx32/strace--timestamps-time-s.gen.test [new file with mode: 0755]
tests-mx32/strace--timestamps-time-us.gen.test [new file with mode: 0755]
tests-mx32/strace--timestamps-time.gen.test [new file with mode: 0755]
tests-mx32/strace--timestamps-unix-ms.gen.test [new file with mode: 0755]
tests-mx32/strace--timestamps-unix-ns.gen.test [new file with mode: 0755]
tests-mx32/strace--timestamps-unix-s.gen.test [new file with mode: 0755]
tests-mx32/strace--timestamps-unix-us.gen.test [new file with mode: 0755]
tests-mx32/strace--timestamps.gen.test [new file with mode: 0755]
tests-mx32/strace-D.expected [new file with mode: 0644]
tests-mx32/strace-D.test [new file with mode: 0755]
tests-mx32/strace-DD.test [new file with mode: 0755]
tests-mx32/strace-DDD.expected [new file with mode: 0644]
tests-mx32/strace-DDD.test [new file with mode: 0755]
tests-mx32/strace-E-override.test [new file with mode: 0755]
tests-mx32/strace-E-unset.expected [new file with mode: 0644]
tests-mx32/strace-E-unset.test [new file with mode: 0755]
tests-mx32/strace-E.test
tests-mx32/strace-S.test
tests-mx32/strace-T.test
tests-mx32/strace-V.test
tests-mx32/strace-ff.test
tests-mx32/strace-k-p.expected [new file with mode: 0644]
tests-mx32/strace-k-p.test [new file with mode: 0755]
tests-mx32/strace-k.test
tests-mx32/strace-n.c [new file with mode: 0644]
tests-mx32/strace-n.gen.test [new file with mode: 0755]
tests-mx32/strace-r.test
tests-mx32/strace-t.test
tests-mx32/strace-tt.test
tests-mx32/strace-ttt.test
tests-mx32/strace-x.c [new file with mode: 0644]
tests-mx32/strace-x.gen.test [new file with mode: 0755]
tests-mx32/strace-xx.c [new file with mode: 0644]
tests-mx32/strace-xx.gen.test [new file with mode: 0755]
tests-mx32/swap.c
tests-mx32/sxetmask.c
tests-mx32/symlink.c
tests-mx32/symlinkat.c
tests-mx32/sync.c
tests-mx32/sync_file_range.c
tests-mx32/sync_file_range2.c
tests-mx32/syntax.sh
tests-mx32/syslog-success.c [new file with mode: 0644]
tests-mx32/syslog-success.test [new file with mode: 0755]
tests-mx32/syslog.c
tests-mx32/syslog.gen.test
tests-mx32/tee.c
tests-mx32/termsig.test
tests-mx32/test_nlattr.h
tests-mx32/test_printstrn.c
tests-mx32/test_ucopy.c
tests-mx32/tests.h
tests-mx32/tgkill--pidns-translation.c [new file with mode: 0644]
tests-mx32/tgkill--pidns-translation.gen.test [new file with mode: 0755]
tests-mx32/tgkill.c [new file with mode: 0644]
tests-mx32/tgkill.gen.test [new file with mode: 0755]
tests-mx32/threads-execve--quiet-thread-execve.c [new file with mode: 0644]
tests-mx32/threads-execve--quiet-thread-execve.gen.test [new file with mode: 0755]
tests-mx32/threads-execve-q.c [new file with mode: 0644]
tests-mx32/threads-execve-q.gen.test [new file with mode: 0755]
tests-mx32/threads-execve-qq.c [new file with mode: 0644]
tests-mx32/threads-execve-qq.gen.test [new file with mode: 0755]
tests-mx32/threads-execve-qqq.c [new file with mode: 0644]
tests-mx32/threads-execve-qqq.gen.test [new file with mode: 0755]
tests-mx32/threads-execve.c
tests-mx32/threads-execve.test
tests-mx32/time.c
tests-mx32/timer_create.c
tests-mx32/timer_xettime.c
tests-mx32/timerfd_xettime.c
tests-mx32/times-fail.c
tests-mx32/times.c
tests-mx32/tkill--pidns-translation.c [new file with mode: 0644]
tests-mx32/tkill--pidns-translation.gen.test [new file with mode: 0755]
tests-mx32/tkill.c [new file with mode: 0644]
tests-mx32/tkill.gen.test [new file with mode: 0755]
tests-mx32/trace_clock.gen.test [new file with mode: 0755]
tests-mx32/trace_clock.in [new file with mode: 0644]
tests-mx32/trace_creds.gen.test [new file with mode: 0755]
tests-mx32/trace_creds.in [new file with mode: 0644]
tests-mx32/trace_fstat.in
tests-mx32/trace_lstat.in
tests-mx32/trace_stat.in
tests-mx32/tracer_ppid_pgid_sid.c [new file with mode: 0644]
tests-mx32/trie_for_tests.c [new file with mode: 0644]
tests-mx32/trie_test.c [new file with mode: 0644]
tests-mx32/trie_test.gen.test [new file with mode: 0755]
tests-mx32/truncate.c
tests-mx32/truncate64.c
tests-mx32/ugetrlimit.c
tests-mx32/umount.c
tests-mx32/umount2.c
tests-mx32/umoven-illptr.c
tests-mx32/umovestr-illptr.c
tests-mx32/umovestr_cached.c [new file with mode: 0644]
tests-mx32/umovestr_cached.test [new file with mode: 0755]
tests-mx32/umovestr_cached_adjacent.c [new file with mode: 0644]
tests-mx32/umovestr_cached_adjacent.gen.test [new file with mode: 0755]
tests-mx32/uname.c
tests-mx32/unix-pair-send-recv.c
tests-mx32/unlink.c
tests-mx32/unlinkat.c
tests-mx32/unshare.c
tests-mx32/userfaultfd.c
tests-mx32/ustat.c
tests-mx32/utime.c
tests-mx32/utimensat.c
tests-mx32/utimes.c
tests-mx32/vhangup.c
tests-mx32/vmsplice.c
tests-mx32/wait4.c
tests-mx32/waitid.c
tests-mx32/waitpid.c
tests-mx32/xet_robust_list--pidns-translation.c [new file with mode: 0644]
tests-mx32/xet_robust_list--pidns-translation.gen.test [new file with mode: 0755]
tests-mx32/xet_robust_list.c
tests-mx32/xet_thread_area_x86.c
tests-mx32/xetitimer.c
tests-mx32/xetpgid--pidns-translation.c [new file with mode: 0644]
tests-mx32/xetpgid--pidns-translation.gen.test [new file with mode: 0755]
tests-mx32/xetpgid.c
tests-mx32/xetpriority--pidns-translation.c [new file with mode: 0644]
tests-mx32/xetpriority--pidns-translation.gen.test [new file with mode: 0755]
tests-mx32/xetpriority.c
tests-mx32/xetpriority.gen.test
tests-mx32/xettimeofday.c
tests-mx32/xgetdents.c [new file with mode: 0644]
tests-mx32/xgetrlimit.c
tests-mx32/xmalloc_for_tests.c [new file with mode: 0644]
tests-mx32/xstatfsx.c
tests-mx32/xstatx.c
tests-mx32/zeroargc.c
tests/COPYING
tests/Makefile.am
tests/Makefile.in
tests/_newselect.c
tests/accept.c
tests/accept_compat.h
tests/access.c
tests/access.gen.test
tests/acct.c
tests/add_key.c
tests/adjtimex.c
tests/aio.c
tests/aio_pgetevents.c
tests/alarm.c
tests/answer.c
tests/attach-f-p.c
tests/bexecve.test
tests/block_reset_run.c [new file with mode: 0644]
tests/bpf-obj_get_info_by_fd.c
tests/bpf-success-long-y.c [new file with mode: 0644]
tests/bpf-success-long-y.test [new file with mode: 0755]
tests/bpf.c
tests/brk.c
tests/btrfs.c
tests/caps-abbrev.awk
tests/caps.awk
tests/chmod.c
tests/chown.c
tests/chown32.c
tests/chroot.c
tests/clock_adjtime.c
tests/clock_nanosleep.c
tests/clock_xettime.c
tests/clone-flags.c [new file with mode: 0644]
tests/clone-flags.test [new file with mode: 0755]
tests/clone3-Xabbrev.c [new file with mode: 0644]
tests/clone3-Xabbrev.gen.test [new file with mode: 0755]
tests/clone3-Xraw.c [new file with mode: 0644]
tests/clone3-Xraw.gen.test [new file with mode: 0755]
tests/clone3-Xverbose.c [new file with mode: 0644]
tests/clone3-Xverbose.gen.test [new file with mode: 0755]
tests/clone3-success-Xabbrev.c [new file with mode: 0644]
tests/clone3-success-Xabbrev.gen.test [new file with mode: 0755]
tests/clone3-success-Xraw.c [new file with mode: 0644]
tests/clone3-success-Xraw.gen.test [new file with mode: 0755]
tests/clone3-success-Xverbose.c [new file with mode: 0644]
tests/clone3-success-Xverbose.gen.test [new file with mode: 0755]
tests/clone3-success.c [new file with mode: 0644]
tests/clone3-success.test [new file with mode: 0755]
tests/clone3.c [new file with mode: 0644]
tests/clone3.gen.test [new file with mode: 0755]
tests/clone_parent--quiet-exit.c [new file with mode: 0644]
tests/clone_parent--quiet-exit.gen.test [new file with mode: 0755]
tests/clone_parent-q.c [new file with mode: 0644]
tests/clone_parent-q.gen.test [new file with mode: 0755]
tests/clone_parent-qq.c [new file with mode: 0644]
tests/clone_parent-qq.gen.test [new file with mode: 0755]
tests/clone_parent.c
tests/clone_parent.gen.test [new file with mode: 0755]
tests/clone_parent.test [deleted file]
tests/clone_ptrace--quiet-attach.c [new file with mode: 0644]
tests/clone_ptrace--quiet-attach.gen.test [new file with mode: 0755]
tests/clone_ptrace--quiet-exit.c [new file with mode: 0644]
tests/clone_ptrace--quiet-exit.gen.test [new file with mode: 0755]
tests/clone_ptrace-q.c [new file with mode: 0644]
tests/clone_ptrace-q.gen.test [new file with mode: 0755]
tests/clone_ptrace-qq.c [new file with mode: 0644]
tests/clone_ptrace-qq.gen.test [new file with mode: 0755]
tests/clone_ptrace.c
tests/clone_ptrace.test
tests/close_range-P.c [new file with mode: 0644]
tests/close_range-P.gen.test [new file with mode: 0755]
tests/close_range-y.c [new file with mode: 0644]
tests/close_range-y.gen.test [new file with mode: 0755]
tests/close_range-yy.c [new file with mode: 0644]
tests/close_range-yy.gen.test [new file with mode: 0755]
tests/close_range.c [new file with mode: 0644]
tests/close_range.gen.test [new file with mode: 0755]
tests/copy_file_range.c
tests/count-f.test
tests/count.test
tests/creat.c
tests/create_tmpfile.c [new file with mode: 0644]
tests/delay.c
tests/delay.test
tests/delete_module.c
tests/dev--decode-fds-dev.c [new file with mode: 0644]
tests/dev--decode-fds-dev.gen.test [new file with mode: 0755]
tests/dev--decode-fds-path.c [new file with mode: 0644]
tests/dev--decode-fds-path.gen.test [new file with mode: 0755]
tests/dev--decode-fds-socket.c [new file with mode: 0644]
tests/dev--decode-fds-socket.gen.test [new file with mode: 0755]
tests/dev-yy.c
tests/dup-P.c [new file with mode: 0644]
tests/dup-P.gen.test [new file with mode: 0755]
tests/dup-y.c [new file with mode: 0644]
tests/dup-y.gen.test [new file with mode: 0755]
tests/dup-yy.c [new file with mode: 0644]
tests/dup-yy.gen.test [new file with mode: 0755]
tests/dup.c
tests/dup.gen.test
tests/dup2-P.c [new file with mode: 0644]
tests/dup2-P.gen.test [new file with mode: 0755]
tests/dup2-y.c [new file with mode: 0644]
tests/dup2-y.gen.test [new file with mode: 0755]
tests/dup2-yy.c [new file with mode: 0644]
tests/dup2-yy.gen.test [new file with mode: 0755]
tests/dup2.c
tests/dup2.gen.test
tests/dup3-P.c [new file with mode: 0644]
tests/dup3-P.gen.test [new file with mode: 0755]
tests/dup3-y.c [new file with mode: 0644]
tests/dup3-y.gen.test [new file with mode: 0755]
tests/dup3-yy.c [new file with mode: 0644]
tests/dup3-yy.gen.test [new file with mode: 0755]
tests/dup3.c
tests/dup3.gen.test
tests/epoll_create.c
tests/epoll_create1.c
tests/epoll_ctl.c
tests/epoll_pwait.c
tests/epoll_wait.c
tests/eventfd.c
tests/execveat.c
tests/faccessat-P.c [new file with mode: 0644]
tests/faccessat-P.gen.test [new file with mode: 0755]
tests/faccessat-y.c [new file with mode: 0644]
tests/faccessat-y.gen.test [new file with mode: 0755]
tests/faccessat-yy.c [new file with mode: 0644]
tests/faccessat-yy.gen.test [new file with mode: 0755]
tests/faccessat.c
tests/faccessat.gen.test [deleted file]
tests/faccessat.test [new file with mode: 0755]
tests/faccessat2-P.c [new file with mode: 0644]
tests/faccessat2-P.gen.test [new file with mode: 0755]
tests/faccessat2-y.c [new file with mode: 0644]
tests/faccessat2-y.gen.test [new file with mode: 0755]
tests/faccessat2-yy.c [new file with mode: 0644]
tests/faccessat2-yy.gen.test [new file with mode: 0755]
tests/faccessat2.c [new file with mode: 0644]
tests/faccessat2.test [new file with mode: 0755]
tests/fadvise64.c
tests/fadvise64_64.c
tests/fallocate.c
tests/fanotify_init.c
tests/fanotify_mark.c
tests/fchdir.c
tests/fchmod.c
tests/fchmodat.c
tests/fchown.c
tests/fchown32.c
tests/fchownat.c
tests/fcntl--pidns-translation.c [new file with mode: 0644]
tests/fcntl--pidns-translation.gen.test [new file with mode: 0755]
tests/fcntl-common.c
tests/fcntl.c
tests/fcntl64--pidns-translation.c [new file with mode: 0644]
tests/fcntl64--pidns-translation.gen.test [new file with mode: 0755]
tests/fcntl64.c
tests/fdatasync.c
tests/file_handle.c
tests/file_ioctl.c
tests/fill_memory.c
tests/filter_seccomp-flag.c [new file with mode: 0644]
tests/filter_seccomp-flag.gen.test [new file with mode: 0755]
tests/filter_seccomp-perf.c [new file with mode: 0644]
tests/filter_seccomp-perf.test [new file with mode: 0755]
tests/filter_seccomp.gen.test [new file with mode: 0755]
tests/filter_seccomp.in [new file with mode: 0644]
tests/filter_seccomp.sh [new file with mode: 0755]
tests/filtering_fd-syntax.test
tests/filtering_syscall-syntax.test
tests/finit_module.c
tests/flock.c
tests/fork--pidns-translation.awk [new file with mode: 0644]
tests/fork--pidns-translation.c [new file with mode: 0644]
tests/fork--pidns-translation.test [new file with mode: 0755]
tests/fsconfig-P.c [new file with mode: 0644]
tests/fsconfig-P.gen.test [new file with mode: 0755]
tests/fsconfig.c [new file with mode: 0644]
tests/fsconfig.gen.test [new file with mode: 0755]
tests/fsmount.c [new file with mode: 0644]
tests/fsmount.gen.test [new file with mode: 0755]
tests/fsopen.c [new file with mode: 0644]
tests/fsopen.gen.test [new file with mode: 0755]
tests/fspick-P.c [new file with mode: 0644]
tests/fspick-P.gen.test [new file with mode: 0755]
tests/fspick.c [new file with mode: 0644]
tests/fspick.gen.test [new file with mode: 0755]
tests/fstat.c
tests/fstat64.c
tests/fstatat64.c
tests/fstatat64.gen.test
tests/fstatfs.c
tests/fstatfs64.c
tests/fsync.c
tests/ftruncate.c
tests/ftruncate64.c
tests/futex.c
tests/futimesat.c
tests/gen_tests.am
tests/gen_tests.in
tests/get_mempolicy.c
tests/get_process_reaper.c [new file with mode: 0644]
tests/get_sigset_size.c
tests/getcpu.c
tests/getcwd.c
tests/getdents-v.c [new file with mode: 0644]
tests/getdents-v.gen.test [new file with mode: 0755]
tests/getdents.c
tests/getdents.gen.test
tests/getdents64-v.c [new file with mode: 0644]
tests/getdents64-v.gen.test [new file with mode: 0755]
tests/getdents64.c
tests/getdents64.gen.test
tests/getegid-creds.gen.test [new file with mode: 0755]
tests/getegid.c
tests/getegid32-creds.gen.test [new file with mode: 0755]
tests/getegid32.c
tests/geteuid-creds.gen.test [new file with mode: 0755]
tests/geteuid.c
tests/geteuid32-creds.gen.test [new file with mode: 0755]
tests/geteuid32.c
tests/getgid-creds.gen.test [new file with mode: 0755]
tests/getgid.c
tests/getgid32-creds.gen.test [new file with mode: 0755]
tests/getgid32.c
tests/getgroups.c
tests/getgroups32.c
tests/getpgrp--pidns-translation.c [new file with mode: 0644]
tests/getpgrp--pidns-translation.gen.test [new file with mode: 0755]
tests/getpgrp.c
tests/getpid--pidns-translation.c [new file with mode: 0644]
tests/getpid--pidns-translation.gen.test [new file with mode: 0755]
tests/getpid.c
tests/getppid.c
tests/getrandom.c
tests/getresgid.c
tests/getresgid32.c
tests/getresuid.c
tests/getresuid32.c
tests/getrlimit.c
tests/getrusage.c
tests/getsid--pidns-translation.c [new file with mode: 0644]
tests/getsid--pidns-translation.gen.test [new file with mode: 0755]
tests/getsid.c
tests/gettid--pidns-translation.c [new file with mode: 0644]
tests/gettid--pidns-translation.test [new file with mode: 0755]
tests/gettid.c
tests/getuid-creds.gen.test [new file with mode: 0755]
tests/getuid.c
tests/getuid.test
tests/getuid32-creds.gen.test [new file with mode: 0755]
tests/getuid32.c
tests/getxgid.c [new file with mode: 0644]
tests/getxgid.gen.test [new file with mode: 0755]
tests/getxpid.c [new file with mode: 0644]
tests/getxpid.gen.test [new file with mode: 0755]
tests/getxuid.c [new file with mode: 0644]
tests/getxuid.gen.test [new file with mode: 0755]
tests/getxxid.c [deleted file]
tests/getxxid.gen.test [deleted file]
tests/init.sh
tests/init_module.c
tests/inject-nf.c
tests/inject-nf.test
tests/inotify.c
tests/inotify_init-y.c [new file with mode: 0644]
tests/inotify_init-y.test [new file with mode: 0755]
tests/inotify_init.c [new file with mode: 0644]
tests/inotify_init.gen.test [new file with mode: 0755]
tests/inotify_init1-y.c [new file with mode: 0644]
tests/inotify_init1-y.gen.test [new file with mode: 0755]
tests/inotify_init1.c
tests/io_uring_enter.c
tests/io_uring_register.c
tests/io_uring_setup.c
tests/ioctl-success.sh [new file with mode: 0755]
tests/ioctl.c
tests/ioctl_block--pidns-translation.c [new file with mode: 0644]
tests/ioctl_block--pidns-translation.test [new file with mode: 0755]
tests/ioctl_block.c
tests/ioctl_evdev-Xabbrev.c [new file with mode: 0644]
tests/ioctl_evdev-Xabbrev.gen.test [new file with mode: 0755]
tests/ioctl_evdev-Xraw.c [new file with mode: 0644]
tests/ioctl_evdev-Xraw.gen.test [new file with mode: 0755]
tests/ioctl_evdev-Xverbose.c [new file with mode: 0644]
tests/ioctl_evdev-Xverbose.gen.test [new file with mode: 0755]
tests/ioctl_evdev-success-Xabbrev.c [new file with mode: 0644]
tests/ioctl_evdev-success-Xabbrev.gen.test [new file with mode: 0755]
tests/ioctl_evdev-success-Xraw.c [new file with mode: 0644]
tests/ioctl_evdev-success-Xraw.gen.test [new file with mode: 0755]
tests/ioctl_evdev-success-Xverbose.c [new file with mode: 0644]
tests/ioctl_evdev-success-Xverbose.gen.test [new file with mode: 0755]
tests/ioctl_evdev-success-v-Xabbrev.c [new file with mode: 0644]
tests/ioctl_evdev-success-v-Xabbrev.gen.test [new file with mode: 0755]
tests/ioctl_evdev-success-v-Xraw.c [new file with mode: 0644]
tests/ioctl_evdev-success-v-Xraw.gen.test [new file with mode: 0755]
tests/ioctl_evdev-success-v-Xverbose.c [new file with mode: 0644]
tests/ioctl_evdev-success-v-Xverbose.gen.test [new file with mode: 0755]
tests/ioctl_evdev-success-v.gen.test [new file with mode: 0755]
tests/ioctl_evdev-success-v.test [deleted file]
tests/ioctl_evdev-success.c
tests/ioctl_evdev-success.test
tests/ioctl_evdev-v-Xabbrev.c [new file with mode: 0644]
tests/ioctl_evdev-v-Xabbrev.gen.test [new file with mode: 0755]
tests/ioctl_evdev-v-Xraw.c [new file with mode: 0644]
tests/ioctl_evdev-v-Xraw.gen.test [new file with mode: 0755]
tests/ioctl_evdev-v-Xverbose.c [new file with mode: 0644]
tests/ioctl_evdev-v-Xverbose.gen.test [new file with mode: 0755]
tests/ioctl_evdev-v.gen.test
tests/ioctl_evdev.c
tests/ioctl_evdev.gen.test
tests/ioctl_hdio-Xabbrev.c [new file with mode: 0644]
tests/ioctl_hdio-Xabbrev.gen.test [new file with mode: 0755]
tests/ioctl_hdio-Xraw.c [new file with mode: 0644]
tests/ioctl_hdio-Xraw.gen.test [new file with mode: 0755]
tests/ioctl_hdio-Xverbose.c [new file with mode: 0644]
tests/ioctl_hdio-Xverbose.gen.test [new file with mode: 0755]
tests/ioctl_hdio-success-Xabbrev.c [new file with mode: 0644]
tests/ioctl_hdio-success-Xabbrev.gen.test [new file with mode: 0755]
tests/ioctl_hdio-success-Xraw.c [new file with mode: 0644]
tests/ioctl_hdio-success-Xraw.gen.test [new file with mode: 0755]
tests/ioctl_hdio-success-Xverbose.c [new file with mode: 0644]
tests/ioctl_hdio-success-Xverbose.gen.test [new file with mode: 0755]
tests/ioctl_hdio-success-v-Xabbrev.c [new file with mode: 0644]
tests/ioctl_hdio-success-v-Xabbrev.gen.test [new file with mode: 0755]
tests/ioctl_hdio-success-v-Xraw.c [new file with mode: 0644]
tests/ioctl_hdio-success-v-Xraw.gen.test [new file with mode: 0755]
tests/ioctl_hdio-success-v-Xverbose.c [new file with mode: 0644]
tests/ioctl_hdio-success-v-Xverbose.gen.test [new file with mode: 0755]
tests/ioctl_hdio-success-v.c [new file with mode: 0644]
tests/ioctl_hdio-success-v.gen.test [new file with mode: 0755]
tests/ioctl_hdio-success.c [new file with mode: 0644]
tests/ioctl_hdio-success.gen.test [new file with mode: 0755]
tests/ioctl_hdio-v-Xabbrev.c [new file with mode: 0644]
tests/ioctl_hdio-v-Xabbrev.gen.test [new file with mode: 0755]
tests/ioctl_hdio-v-Xraw.c [new file with mode: 0644]
tests/ioctl_hdio-v-Xraw.gen.test [new file with mode: 0755]
tests/ioctl_hdio-v-Xverbose.c [new file with mode: 0644]
tests/ioctl_hdio-v-Xverbose.gen.test [new file with mode: 0755]
tests/ioctl_hdio-v.c [new file with mode: 0644]
tests/ioctl_hdio-v.gen.test [new file with mode: 0755]
tests/ioctl_hdio.c [new file with mode: 0644]
tests/ioctl_hdio.gen.test [new file with mode: 0755]
tests/ioctl_inotify.c
tests/ioctl_kvm_run_common.c
tests/ioctl_loop.c
tests/ioctl_nsfs.c
tests/ioctl_perf-success.c
tests/ioctl_perf-success.gen.test [new file with mode: 0755]
tests/ioctl_perf-success.test [deleted file]
tests/ioctl_perf.c
tests/ioctl_ptp.c
tests/ioctl_rtc.c
tests/ioctl_scsi.c
tests/ioctl_sg_io_v4.c
tests/ioctl_tee.c [new file with mode: 0644]
tests/ioctl_tee.gen.test [new file with mode: 0755]
tests/ioctl_uffdio.c
tests/ioctl_v4l2-Xabbrev.c [new file with mode: 0644]
tests/ioctl_v4l2-Xabbrev.gen.test [new file with mode: 0755]
tests/ioctl_v4l2-Xraw.c [new file with mode: 0644]
tests/ioctl_v4l2-Xraw.gen.test [new file with mode: 0755]
tests/ioctl_v4l2-Xverbose.c [new file with mode: 0644]
tests/ioctl_v4l2-Xverbose.gen.test [new file with mode: 0755]
tests/ioctl_v4l2-success-Xabbrev.c [new file with mode: 0644]
tests/ioctl_v4l2-success-Xabbrev.gen.test [new file with mode: 0755]
tests/ioctl_v4l2-success-Xraw.c [new file with mode: 0644]
tests/ioctl_v4l2-success-Xraw.gen.test [new file with mode: 0755]
tests/ioctl_v4l2-success-Xverbose.c [new file with mode: 0644]
tests/ioctl_v4l2-success-Xverbose.gen.test [new file with mode: 0755]
tests/ioctl_v4l2-success-v-Xabbrev.c [new file with mode: 0644]
tests/ioctl_v4l2-success-v-Xabbrev.gen.test [new file with mode: 0755]
tests/ioctl_v4l2-success-v-Xraw.c [new file with mode: 0644]
tests/ioctl_v4l2-success-v-Xraw.gen.test [new file with mode: 0755]
tests/ioctl_v4l2-success-v-Xverbose.c [new file with mode: 0644]
tests/ioctl_v4l2-success-v-Xverbose.gen.test [new file with mode: 0755]
tests/ioctl_v4l2-success-v.c [new file with mode: 0644]
tests/ioctl_v4l2-success-v.gen.test [new file with mode: 0755]
tests/ioctl_v4l2-success.c [new file with mode: 0644]
tests/ioctl_v4l2-success.gen.test [new file with mode: 0755]
tests/ioctl_v4l2-v-Xabbrev.c [new file with mode: 0644]
tests/ioctl_v4l2-v-Xabbrev.gen.test [new file with mode: 0755]
tests/ioctl_v4l2-v-Xraw.c [new file with mode: 0644]
tests/ioctl_v4l2-v-Xraw.gen.test [new file with mode: 0755]
tests/ioctl_v4l2-v-Xverbose.c [new file with mode: 0644]
tests/ioctl_v4l2-v-Xverbose.gen.test [new file with mode: 0755]
tests/ioctl_v4l2-v.c [new file with mode: 0644]
tests/ioctl_v4l2-v.gen.test [new file with mode: 0755]
tests/ioctl_v4l2.c
tests/ioctl_watchdog.c [new file with mode: 0644]
tests/ioctl_watchdog.gen.test [new file with mode: 0755]
tests/ioperm.c
tests/iopl.c
tests/ioprio--pidns-translation.c [new file with mode: 0644]
tests/ioprio--pidns-translation.gen.test [new file with mode: 0755]
tests/ioprio.c
tests/ipc.c
tests/ipc_msg.c
tests/ipc_msgbuf-Xraw.gen.test
tests/ipc_msgbuf.c
tests/ipc_sem.c
tests/ipc_shm-Xabbrev.gen.test
tests/ipc_shm-Xverbose.gen.test
tests/ipc_shm.c
tests/ipc_shm.gen.test
tests/kcmp-y--pidns-translation.c [new file with mode: 0644]
tests/kcmp-y--pidns-translation.gen.test [new file with mode: 0755]
tests/kcmp.c
tests/kern_features.c
tests/kernel_old_timespec.h [new file with mode: 0644]
tests/kernel_old_timex.h [new file with mode: 0644]
tests/kernel_version.c
tests/kexec_file_load.c
tests/kexec_load.c
tests/keyctl.c
tests/kill--pidns-translation.c [new file with mode: 0644]
tests/kill--pidns-translation.gen.test [new file with mode: 0755]
tests/kill.c
tests/ksysent.c
tests/ksysent.gen.test [new file with mode: 0755]
tests/ksysent.sed
tests/ksysent.test [deleted file]
tests/lchown.c
tests/lchown32.c
tests/libmmsg.c
tests/libsocketcall.c
tests/link.c
tests/linkat.c
tests/llseek.c
tests/localtime.c
tests/lock_file.c [new file with mode: 0644]
tests/lookup_dcookie.c
tests/looping_threads.test
tests/lseek.c
tests/lstat.c
tests/lstat.gen.test
tests/lstat64.c
tests/lstat64.gen.test
tests/madvise.c
tests/maybe_switch_current_tcp--quiet-thread-execve.c [new file with mode: 0644]
tests/maybe_switch_current_tcp--quiet-thread-execve.gen.test [new file with mode: 0755]
tests/maybe_switch_current_tcp.c [new file with mode: 0644]
tests/maybe_switch_current_tcp.gen.test [new file with mode: 0755]
tests/mbind-Xabbrev.c [new file with mode: 0644]
tests/mbind-Xabbrev.gen.test [new file with mode: 0755]
tests/mbind-Xraw.c [new file with mode: 0644]
tests/mbind-Xraw.gen.test [new file with mode: 0755]
tests/mbind-Xverbose.c [new file with mode: 0644]
tests/mbind-Xverbose.gen.test [new file with mode: 0755]
tests/mbind.c
tests/membarrier.c
tests/memfd_create.c
tests/migrate_pages--pidns-translation.c [new file with mode: 0644]
tests/migrate_pages--pidns-translation.gen.test [new file with mode: 0755]
tests/migrate_pages.c
tests/mkdir.c
tests/mkdirat.c
tests/mknod.c
tests/mknodat.c
tests/mlock.c
tests/mlock2.c
tests/modify_ldt.c
tests/move_mount-P.c [new file with mode: 0644]
tests/move_mount-P.gen.test [new file with mode: 0755]
tests/move_mount.c [new file with mode: 0644]
tests/move_mount.gen.test [new file with mode: 0755]
tests/move_pages--pidns-translation.c [new file with mode: 0644]
tests/move_pages--pidns-translation.gen.test [new file with mode: 0755]
tests/move_pages.c
tests/mq_sendrecv.c
tests/msg_control.c
tests/nanosleep.c
tests/net--decode-fds-dev-netlink.c [new file with mode: 0644]
tests/net--decode-fds-dev-netlink.gen.test [new file with mode: 0755]
tests/net--decode-fds-none-netlink.c [new file with mode: 0644]
tests/net--decode-fds-none-netlink.gen.test [new file with mode: 0755]
tests/net--decode-fds-path-netlink.c [new file with mode: 0644]
tests/net--decode-fds-path-netlink.gen.test [new file with mode: 0755]
tests/net--decode-fds-socket-netlink.c [new file with mode: 0644]
tests/net--decode-fds-socket-netlink.gen.test [new file with mode: 0755]
tests/net-sockaddr--pidns-translation.c [new file with mode: 0644]
tests/net-sockaddr--pidns-translation.gen.test [new file with mode: 0755]
tests/net-sockaddr.c
tests/net-yy-netlink.c
tests/net-yy-netlink.test
tests/netlink_audit--pidns-translation.c [new file with mode: 0644]
tests/netlink_audit--pidns-translation.test [new file with mode: 0755]
tests/netlink_audit.c
tests/netlink_protocol.c
tests/netlink_sock_diag-v.sh [deleted file]
tests/netlink_sock_diag.test
tests/newfstatat.c
tests/newfstatat.gen.test
tests/nlattr.c
tests/nlattr_crypto_user_alg.c
tests/nlattr_ifinfomsg.c
tests/nlattr_ifla_linkinfo.c
tests/nlattr_ifla_port.c
tests/nlattr_ifla_xdp-y.c [new file with mode: 0644]
tests/nlattr_ifla_xdp-y.gen.test [new file with mode: 0755]
tests/nlattr_ifla_xdp.c
tests/nlattr_inet_diag_req_compat.c
tests/nlattr_mdba_mdb_entry.c
tests/nlattr_mdba_router_port.c
tests/nlattr_ndmsg.c
tests/nlattr_packet_diag_msg.gen.test
tests/nlattr_tc_stats.c
tests/nlattr_tcamsg.c
tests/nsyscalls-d.test
tests/nsyscalls.c
tests/old_mmap.c
tests/oldfstat.c
tests/oldlstat.c
tests/oldselect-efault.c
tests/oldselect.c
tests/oldstat.c
tests/open.c
tests/open_tree-P.c [new file with mode: 0644]
tests/open_tree-P.gen.test [new file with mode: 0755]
tests/open_tree.c [new file with mode: 0644]
tests/open_tree.gen.test [new file with mode: 0755]
tests/openat.c
tests/openat2-Xabbrev.c [new file with mode: 0644]
tests/openat2-Xabbrev.gen.test [new file with mode: 0755]
tests/openat2-Xraw.c [new file with mode: 0644]
tests/openat2-Xraw.gen.test [new file with mode: 0755]
tests/openat2-Xverbose.c [new file with mode: 0644]
tests/openat2-Xverbose.gen.test [new file with mode: 0755]
tests/openat2-v-y-Xabbrev.c [new file with mode: 0644]
tests/openat2-v-y-Xabbrev.gen.test [new file with mode: 0755]
tests/openat2-v-y-Xraw.c [new file with mode: 0644]
tests/openat2-v-y-Xraw.gen.test [new file with mode: 0755]
tests/openat2-v-y-Xverbose.c [new file with mode: 0644]
tests/openat2-v-y-Xverbose.gen.test [new file with mode: 0755]
tests/openat2-v-y.c [new file with mode: 0644]
tests/openat2-v-y.gen.test [new file with mode: 0755]
tests/openat2-v.c [new file with mode: 0644]
tests/openat2-v.gen.test [new file with mode: 0755]
tests/openat2-y.c [new file with mode: 0644]
tests/openat2-y.gen.test [new file with mode: 0755]
tests/openat2.c [new file with mode: 0644]
tests/openat2.gen.test [new file with mode: 0755]
tests/options-syntax.test
tests/orphaned_process_group.c
tests/osf_utimes.c
tests/pause.c
tests/pc.c
tests/pc.test
tests/perf_event_open.c
tests/perf_event_open_nonverbose.c
tests/pidfd_getfd-y.c [new file with mode: 0644]
tests/pidfd_getfd-y.gen.test [new file with mode: 0755]
tests/pidfd_getfd-yy.c [new file with mode: 0644]
tests/pidfd_getfd-yy.gen.test [new file with mode: 0755]
tests/pidfd_getfd.c [new file with mode: 0644]
tests/pidfd_getfd.gen.test [new file with mode: 0755]
tests/pidfd_open--decode-fd-path.c [new file with mode: 0644]
tests/pidfd_open--decode-fd-path.gen.test [new file with mode: 0755]
tests/pidfd_open--decode-fd-pidfd.c [new file with mode: 0644]
tests/pidfd_open--decode-fd-pidfd.gen.test [new file with mode: 0755]
tests/pidfd_open--decode-fd-socket.c [new file with mode: 0644]
tests/pidfd_open--decode-fd-socket.gen.test [new file with mode: 0755]
tests/pidfd_open--pidns-translation.c [new file with mode: 0644]
tests/pidfd_open--pidns-translation.gen.test [new file with mode: 0755]
tests/pidfd_open-P.c [new file with mode: 0644]
tests/pidfd_open-P.gen.test [new file with mode: 0755]
tests/pidfd_open-y.c [new file with mode: 0644]
tests/pidfd_open-y.gen.test [new file with mode: 0755]
tests/pidfd_open-yy.c [new file with mode: 0644]
tests/pidfd_open-yy.gen.test [new file with mode: 0755]
tests/pidfd_open.c [new file with mode: 0644]
tests/pidfd_open.gen.test [new file with mode: 0755]
tests/pidfd_send_signal--pidns-translation.c [new file with mode: 0644]
tests/pidfd_send_signal--pidns-translation.gen.test [new file with mode: 0755]
tests/pidfd_send_signal.c
tests/pidns-cache.c [new file with mode: 0644]
tests/pidns-cache.test [new file with mode: 0755]
tests/pidns.c [new file with mode: 0644]
tests/pidns.h [new file with mode: 0644]
tests/pipe.c
tests/pipe2.c
tests/pkey_alloc.c
tests/pkey_free.c
tests/pkey_mprotect.c
tests/poll-P.test
tests/poll.c
tests/ppoll.c
tests/prctl-arg2-intptr.c
tests/prctl-dumpable.c
tests/prctl-name.c
tests/prctl-no-args.c
tests/prctl-pdeathsig.c
tests/prctl-seccomp-filter-v.c
tests/prctl-seccomp-strict.c
tests/prctl-securebits.c
tests/prctl-spec-inject.c
tests/prctl-tid_address.c
tests/prctl-tsc.c
tests/preadv.c
tests/preadv2-pwritev2.c
tests/print_ppid_tracerpid.c [new file with mode: 0644]
tests/printflags.c
tests/printpath-umovestr-undumpable.c
tests/printstrn-umoven-undumpable.c
tests/printxval-Xabbrev.c [new file with mode: 0644]
tests/printxval-Xraw.c [new file with mode: 0644]
tests/printxval-Xverbose.c [new file with mode: 0644]
tests/printxval.c
tests/prlimit64--pidns-translation.c [new file with mode: 0644]
tests/prlimit64--pidns-translation.gen.test [new file with mode: 0755]
tests/prlimit64.c
tests/process_vm_readv--pidns-translation.c [new file with mode: 0644]
tests/process_vm_readv--pidns-translation.gen.test [new file with mode: 0755]
tests/process_vm_readv.c
tests/process_vm_readv_writev.c
tests/process_vm_writev--pidns-translation.c [new file with mode: 0644]
tests/process_vm_writev--pidns-translation.gen.test [new file with mode: 0755]
tests/process_vm_writev.c
tests/pselect6.c
tests/ptrace.c
tests/ptrace_syscall_info.c
tests/pure_executables.am
tests/pure_executables.list
tests/qual_fault-syntax.test
tests/qual_fault.c
tests/qual_fault.test
tests/qual_inject-error-signal.c
tests/qual_inject-retval.c
tests/qual_inject-signal.c
tests/qual_inject-syntax.test
tests/qual_signal.test
tests/qual_syscall.test
tests/qualify_personality.sh
tests/quotactl-xfs.c
tests/quotactl.c
tests/read-write.c
tests/readahead.c
tests/readdir.c
tests/readlink.c
tests/readlinkat.c
tests/reboot.c
tests/recv-MSG_TRUNC.c [new file with mode: 0644]
tests/recv-MSG_TRUNC.gen.test [new file with mode: 0755]
tests/recvfrom-MSG_TRUNC.c [new file with mode: 0644]
tests/recvfrom-MSG_TRUNC.gen.test [new file with mode: 0755]
tests/redirect.test
tests/remap_file_pages.c
tests/rename.c
tests/renameat.c
tests/renameat2.c
tests/request_key.c
tests/restart_syscall.c
tests/restart_syscall.test
tests/riscv_flush_icache.c
tests/rmdir.c
tests/rt_sigpending.c
tests/rt_sigprocmask.c
tests/rt_sigqueueinfo--pidns-translation.c [new file with mode: 0644]
tests/rt_sigqueueinfo--pidns-translation.gen.test [new file with mode: 0755]
tests/rt_sigqueueinfo.c
tests/rt_sigsuspend.c
tests/rt_sigtimedwait.c
tests/rt_tgsigqueueinfo--pidns-translation.c [new file with mode: 0644]
tests/rt_tgsigqueueinfo--pidns-translation.gen.test [new file with mode: 0755]
tests/rt_tgsigqueueinfo.c
tests/s390_guarded_storage.c
tests/s390_pci_mmio_read_write.c
tests/s390_runtime_instr.c
tests/s390_sthyi.c
tests/sched_get_priority_mxx.c
tests/sched_rr_get_interval.c
tests/sched_xetaffinity--pidns-translation.c [new file with mode: 0644]
tests/sched_xetaffinity--pidns-translation.gen.test [new file with mode: 0755]
tests/sched_xetaffinity.c
tests/sched_xetattr--pidns-translation.c [new file with mode: 0644]
tests/sched_xetattr--pidns-translation.gen.test [new file with mode: 0755]
tests/sched_xetattr.c
tests/sched_xetparam--pidns-translation.c [new file with mode: 0644]
tests/sched_xetparam--pidns-translation.gen.test [new file with mode: 0755]
tests/sched_xetparam.c
tests/sched_xetscheduler--pidns-translation.c [new file with mode: 0644]
tests/sched_xetscheduler--pidns-translation.gen.test [new file with mode: 0755]
tests/sched_xetscheduler.c
tests/sched_yield.c
tests/seccomp-filter-v.c
tests/seccomp-filter.c
tests/seccomp-strict.c
tests/seccomp_get_action_avail.c
tests/select.c
tests/semop-common.c [new file with mode: 0644]
tests/semop-indirect.c [new file with mode: 0644]
tests/semop-indirect.gen.test [new file with mode: 0755]
tests/semop.c
tests/semop.gen.test
tests/semtimedop.c [new file with mode: 0644]
tests/semtimedop.gen.test [new file with mode: 0755]
tests/sendfile.c
tests/sendfile64.c
tests/set_mempolicy-Xabbrev.c [new file with mode: 0644]
tests/set_mempolicy-Xabbrev.gen.test [new file with mode: 0755]
tests/set_mempolicy-Xraw.c [new file with mode: 0644]
tests/set_mempolicy-Xraw.gen.test [new file with mode: 0755]
tests/set_mempolicy-Xverbose.c [new file with mode: 0644]
tests/set_mempolicy-Xverbose.gen.test [new file with mode: 0755]
tests/set_mempolicy.c
tests/set_mempolicy.gen.test
tests/set_ptracer_any.c
tests/setdomainname.c
tests/setfsgid.c
tests/setfsgid32.c
tests/setfsuid.c
tests/setfsuid32.c
tests/setgid.c
tests/setgid32.c
tests/setgroups.c
tests/setgroups32.c
tests/sethostname.c
tests/setns.c
tests/setpgrp-exec.c [new file with mode: 0644]
tests/setregid.c
tests/setregid32.c
tests/setresgid.c
tests/setresgid32.c
tests/setresuid.c
tests/setresuid32.c
tests/setreuid.c
tests/setreuid32.c
tests/setrlimit.c
tests/setuid.c
tests/setuid32.c
tests/sigaction.c
tests/sigblock.test
tests/sigign.test
tests/siginfo.c
tests/signal.c
tests/signal_receive--pidns-translation.c [new file with mode: 0644]
tests/signal_receive--pidns-translation.gen.test [new file with mode: 0755]
tests/signal_receive.c
tests/signalfd4.c
tests/sigpending.c
tests/sigprocmask.c
tests/sigreturn.c
tests/sigsuspend.c
tests/sleep.c
tests/so_error.c
tests/so_peercred--pidns-translation.c [new file with mode: 0644]
tests/so_peercred--pidns-translation.gen.test [new file with mode: 0755]
tests/so_peercred.c
tests/sock_filter-v.c
tests/socketcall.c
tests/sockopt-timestamp.c
tests/splice.c
tests/stack-fcall-0.c
tests/stack-fcall-1.c
tests/stack-fcall-2.c
tests/stack-fcall-3.c
tests/stack-fcall-attach.c [new file with mode: 0644]
tests/stack-fcall.c
tests/stack-fcall.h
tests/stat.c
tests/stat.gen.test
tests/stat64.c
tests/stat64.gen.test
tests/statfs.c
tests/statfs64.c
tests/status-all.c [new file with mode: 0644]
tests/status-all.gen.test [new file with mode: 0755]
tests/status-detached.expected [new file with mode: 0644]
tests/status-detached.test [new file with mode: 0755]
tests/status-failed-long.c [new file with mode: 0644]
tests/status-failed-long.gen.test [new file with mode: 0755]
tests/status-failed-status.c [new file with mode: 0644]
tests/status-failed-status.gen.test [new file with mode: 0755]
tests/status-failed.c [new file with mode: 0644]
tests/status-failed.gen.test [new file with mode: 0755]
tests/status-none-f.c [new file with mode: 0644]
tests/status-none-threads.c [new file with mode: 0644]
tests/status-none-threads.test [new file with mode: 0755]
tests/status-none.c [new file with mode: 0644]
tests/status-none.gen.test [new file with mode: 0755]
tests/status-successful-long.c [new file with mode: 0644]
tests/status-successful-long.gen.test [new file with mode: 0755]
tests/status-successful-status.c [new file with mode: 0644]
tests/status-successful-status.gen.test [new file with mode: 0755]
tests/status-successful.c [new file with mode: 0644]
tests/status-successful.gen.test [new file with mode: 0755]
tests/status-unfinished-threads.c [new file with mode: 0644]
tests/status-unfinished-threads.test [new file with mode: 0755]
tests/status-unfinished.c [new file with mode: 0644]
tests/status-unfinished.gen.test [new file with mode: 0755]
tests/status.c [new file with mode: 0644]
tests/statx.c
tests/statx.gen.test
tests/strace--absolute-timestamps-format-time-precision-ms.gen.test [new file with mode: 0755]
tests/strace--absolute-timestamps-format-time-precision-ns.gen.test [new file with mode: 0755]
tests/strace--absolute-timestamps-format-time-precision-s.gen.test [new file with mode: 0755]
tests/strace--absolute-timestamps-format-time-precision-us.gen.test [new file with mode: 0755]
tests/strace--absolute-timestamps-format-time.gen.test [new file with mode: 0755]
tests/strace--absolute-timestamps-format-unix-precision-ms.gen.test [new file with mode: 0755]
tests/strace--absolute-timestamps-format-unix-precision-ns.gen.test [new file with mode: 0755]
tests/strace--absolute-timestamps-format-unix-precision-s.gen.test [new file with mode: 0755]
tests/strace--absolute-timestamps-format-unix-precision-us.gen.test [new file with mode: 0755]
tests/strace--absolute-timestamps.gen.test [new file with mode: 0755]
tests/strace--follow-forks-output-separately.expected [new file with mode: 0644]
tests/strace--follow-forks-output-separately.gen.test [new file with mode: 0755]
tests/strace--relative-timestamps-ms.expected [new file with mode: 0644]
tests/strace--relative-timestamps-ms.gen.test [new file with mode: 0755]
tests/strace--relative-timestamps-ns.expected [new file with mode: 0644]
tests/strace--relative-timestamps-ns.gen.test [new file with mode: 0755]
tests/strace--relative-timestamps-s.expected [new file with mode: 0644]
tests/strace--relative-timestamps-s.gen.test [new file with mode: 0755]
tests/strace--relative-timestamps-us.expected [new file with mode: 0644]
tests/strace--relative-timestamps-us.gen.test [new file with mode: 0755]
tests/strace--relative-timestamps.expected [new file with mode: 0644]
tests/strace--relative-timestamps.gen.test [new file with mode: 0755]
tests/strace--strings-in-hex-all.c [new file with mode: 0644]
tests/strace--strings-in-hex-all.gen.test [new file with mode: 0755]
tests/strace--strings-in-hex-non-ascii.c [new file with mode: 0644]
tests/strace--strings-in-hex-non-ascii.gen.test [new file with mode: 0755]
tests/strace--strings-in-hex.c [new file with mode: 0644]
tests/strace--strings-in-hex.gen.test [new file with mode: 0755]
tests/strace--syscall-times-ms.expected [new file with mode: 0644]
tests/strace--syscall-times-ms.gen.test [new file with mode: 0755]
tests/strace--syscall-times-ns.expected [new file with mode: 0644]
tests/strace--syscall-times-ns.gen.test [new file with mode: 0755]
tests/strace--syscall-times-s.expected [new file with mode: 0644]
tests/strace--syscall-times-s.gen.test [new file with mode: 0755]
tests/strace--syscall-times-us.expected [new file with mode: 0644]
tests/strace--syscall-times-us.gen.test [new file with mode: 0755]
tests/strace--syscall-times.expected [new file with mode: 0644]
tests/strace--syscall-times.gen.test [new file with mode: 0755]
tests/strace--timestamps-time-ms.gen.test [new file with mode: 0755]
tests/strace--timestamps-time-ns.gen.test [new file with mode: 0755]
tests/strace--timestamps-time-s.gen.test [new file with mode: 0755]
tests/strace--timestamps-time-us.gen.test [new file with mode: 0755]
tests/strace--timestamps-time.gen.test [new file with mode: 0755]
tests/strace--timestamps-unix-ms.gen.test [new file with mode: 0755]
tests/strace--timestamps-unix-ns.gen.test [new file with mode: 0755]
tests/strace--timestamps-unix-s.gen.test [new file with mode: 0755]
tests/strace--timestamps-unix-us.gen.test [new file with mode: 0755]
tests/strace--timestamps.gen.test [new file with mode: 0755]
tests/strace-D.expected [new file with mode: 0644]
tests/strace-D.test [new file with mode: 0755]
tests/strace-DD.test [new file with mode: 0755]
tests/strace-DDD.expected [new file with mode: 0644]
tests/strace-DDD.test [new file with mode: 0755]
tests/strace-E-override.test [new file with mode: 0755]
tests/strace-E-unset.expected [new file with mode: 0644]
tests/strace-E-unset.test [new file with mode: 0755]
tests/strace-E.test
tests/strace-S.test
tests/strace-T.test
tests/strace-V.test
tests/strace-ff.test
tests/strace-k-p.expected [new file with mode: 0644]
tests/strace-k-p.test [new file with mode: 0755]
tests/strace-k.test
tests/strace-n.c [new file with mode: 0644]
tests/strace-n.gen.test [new file with mode: 0755]
tests/strace-r.test
tests/strace-t.test
tests/strace-tt.test
tests/strace-ttt.test
tests/strace-x.c [new file with mode: 0644]
tests/strace-x.gen.test [new file with mode: 0755]
tests/strace-xx.c [new file with mode: 0644]
tests/strace-xx.gen.test [new file with mode: 0755]
tests/swap.c
tests/sxetmask.c
tests/symlink.c
tests/symlinkat.c
tests/sync.c
tests/sync_file_range.c
tests/sync_file_range2.c
tests/syntax.sh
tests/syslog-success.c [new file with mode: 0644]
tests/syslog-success.test [new file with mode: 0755]
tests/syslog.c
tests/syslog.gen.test
tests/tee.c
tests/termsig.test
tests/test_nlattr.h
tests/test_printstrn.c
tests/test_ucopy.c
tests/tests.h
tests/tgkill--pidns-translation.c [new file with mode: 0644]
tests/tgkill--pidns-translation.gen.test [new file with mode: 0755]
tests/tgkill.c [new file with mode: 0644]
tests/tgkill.gen.test [new file with mode: 0755]
tests/threads-execve--quiet-thread-execve.c [new file with mode: 0644]
tests/threads-execve--quiet-thread-execve.gen.test [new file with mode: 0755]
tests/threads-execve-q.c [new file with mode: 0644]
tests/threads-execve-q.gen.test [new file with mode: 0755]
tests/threads-execve-qq.c [new file with mode: 0644]
tests/threads-execve-qq.gen.test [new file with mode: 0755]
tests/threads-execve-qqq.c [new file with mode: 0644]
tests/threads-execve-qqq.gen.test [new file with mode: 0755]
tests/threads-execve.c
tests/threads-execve.test
tests/time.c
tests/timer_create.c
tests/timer_xettime.c
tests/timerfd_xettime.c
tests/times-fail.c
tests/times.c
tests/tkill--pidns-translation.c [new file with mode: 0644]
tests/tkill--pidns-translation.gen.test [new file with mode: 0755]
tests/tkill.c [new file with mode: 0644]
tests/tkill.gen.test [new file with mode: 0755]
tests/trace_clock.gen.test [new file with mode: 0755]
tests/trace_clock.in [new file with mode: 0644]
tests/trace_creds.gen.test [new file with mode: 0755]
tests/trace_creds.in [new file with mode: 0644]
tests/trace_fstat.in
tests/trace_lstat.in
tests/trace_stat.in
tests/tracer_ppid_pgid_sid.c [new file with mode: 0644]
tests/trie_for_tests.c [new file with mode: 0644]
tests/trie_test.c [new file with mode: 0644]
tests/trie_test.gen.test [new file with mode: 0755]
tests/truncate.c
tests/truncate64.c
tests/ugetrlimit.c
tests/umount.c
tests/umount2.c
tests/umoven-illptr.c
tests/umovestr-illptr.c
tests/umovestr_cached.c [new file with mode: 0644]
tests/umovestr_cached.test [new file with mode: 0755]
tests/umovestr_cached_adjacent.c [new file with mode: 0644]
tests/umovestr_cached_adjacent.gen.test [new file with mode: 0755]
tests/uname.c
tests/unix-pair-send-recv.c
tests/unlink.c
tests/unlinkat.c
tests/unshare.c
tests/userfaultfd.c
tests/ustat.c
tests/utime.c
tests/utimensat.c
tests/utimes.c
tests/vhangup.c
tests/vmsplice.c
tests/wait4.c
tests/waitid.c
tests/waitpid.c
tests/xet_robust_list--pidns-translation.c [new file with mode: 0644]
tests/xet_robust_list--pidns-translation.gen.test [new file with mode: 0755]
tests/xet_robust_list.c
tests/xet_thread_area_x86.c
tests/xetitimer.c
tests/xetpgid--pidns-translation.c [new file with mode: 0644]
tests/xetpgid--pidns-translation.gen.test [new file with mode: 0755]
tests/xetpgid.c
tests/xetpriority--pidns-translation.c [new file with mode: 0644]
tests/xetpriority--pidns-translation.gen.test [new file with mode: 0755]
tests/xetpriority.c
tests/xetpriority.gen.test
tests/xettimeofday.c
tests/xgetdents.c [new file with mode: 0644]
tests/xgetrlimit.c
tests/xmalloc_for_tests.c [new file with mode: 0644]
tests/xstatfsx.c
tests/xstatx.c
tests/zeroargc.c
time.c
trace_event.h
trie.c [new file with mode: 0644]
trie.h [new file with mode: 0644]
types/Makemodule.am [new file with mode: 0644]
types/btrfs.h [new file with mode: 0644]
types/check-btrfs.c [new file with mode: 0644]
types/check-btrfs.m4 [new file with mode: 0644]
types/check-cryptouser.c [new file with mode: 0644]
types/check-cryptouser.m4 [new file with mode: 0644]
types/check-evdev.c [new file with mode: 0644]
types/check-evdev.m4 [new file with mode: 0644]
types/check-io_uring.c [new file with mode: 0644]
types/check-io_uring.m4 [new file with mode: 0644]
types/check-loop.c [new file with mode: 0644]
types/check-loop.m4 [new file with mode: 0644]
types/check-openat2.c [new file with mode: 0644]
types/check-openat2.m4 [new file with mode: 0644]
types/check-rtnl_link.c [new file with mode: 0644]
types/check-rtnl_link.m4 [new file with mode: 0644]
types/check-rtnl_mdb.c [new file with mode: 0644]
types/check-rtnl_mdb.m4 [new file with mode: 0644]
types/check-rtnl_neightbl.c [new file with mode: 0644]
types/check-rtnl_neightbl.m4 [new file with mode: 0644]
types/check-rtnl_route.c [new file with mode: 0644]
types/check-rtnl_route.m4 [new file with mode: 0644]
types/check-tee.c [new file with mode: 0644]
types/check-tee.m4 [new file with mode: 0644]
types/check-v4l2.c [new file with mode: 0644]
types/check-v4l2.m4 [new file with mode: 0644]
types/cryptouser.h [new file with mode: 0644]
types/evdev.h [new file with mode: 0644]
types/find_last_type_fields.awk [new file with mode: 0644]
types/gen.sh [new file with mode: 0755]
types/io_uring.h [new file with mode: 0644]
types/loop.h [new file with mode: 0644]
types/openat2.h [new file with mode: 0644]
types/rtnl_link.h [new file with mode: 0644]
types/rtnl_mdb.h [new file with mode: 0644]
types/rtnl_neightbl.h [new file with mode: 0644]
types/rtnl_route.h [new file with mode: 0644]
types/st_check_types.m4 [new file with mode: 0644]
types/tee.h [new file with mode: 0644]
types/v4l2.h [new file with mode: 0644]
ucopy.c
unwind-libdw.c
upeek.c
upoke.c
ustat.c
util.c
utimes.c
v4l2.c
wait.c
watchdog_ioctl.c [new file with mode: 0644]
xgetdents.c [new file with mode: 0644]
xgetdents.h [new file with mode: 0644]
xlat.c
xlat.h
xlat/Makemodule.am
xlat/access_flags.h [deleted file]
xlat/access_flags.in [deleted file]
xlat/access_modes.h [new file with mode: 0644]
xlat/access_modes.in [new file with mode: 0644]
xlat/addrfams.h
xlat/adjtimex_modes.h
xlat/adjtimex_state.h
xlat/adjtimex_status.h
xlat/advise.h
xlat/af_packet_types.h
xlat/af_packet_versions.h
xlat/af_packet_versions.in
xlat/aio_cmds.h
xlat/aio_iocb_flags.h [new file with mode: 0644]
xlat/aio_iocb_flags.in [new file with mode: 0644]
xlat/archvals.h
xlat/arp_hardware_types.h
xlat/arp_hardware_types.in
xlat/at_flags.h
xlat/at_flags.in
xlat/at_statx_sync_types.h
xlat/atomic_ops.h
xlat/audit_arch.h
xlat/audit_arch.in
xlat/ax25_protocols.h
xlat/ax25_protocols.in
xlat/baud_options.h
xlat/bdaddr_types.h
xlat/blkpg_ops.h
xlat/blkpg_ops.in
xlat/block_ioctl_cmds.h
xlat/bluetooth_l2_cid.h
xlat/bluetooth_l2_cid.in
xlat/bluetooth_l2_psm.h
xlat/bluetooth_l2_psm.in
xlat/bootflags1.h
xlat/bootflags2.h
xlat/bootflags3.h
xlat/bpf_attach_flags.h
xlat/bpf_attach_flags.in
xlat/bpf_attach_type.h
xlat/bpf_attach_type.in
xlat/bpf_class.h
xlat/bpf_commands.h
xlat/bpf_commands.in
xlat/bpf_file_mode_flags.h
xlat/bpf_map_flags.h
xlat/bpf_map_flags.in
xlat/bpf_map_lookup_elem_flags.h [new file with mode: 0644]
xlat/bpf_map_lookup_elem_flags.in [new file with mode: 0644]
xlat/bpf_map_types.h
xlat/bpf_map_types.in
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_flags.in
xlat/bpf_prog_types.h
xlat/bpf_prog_types.in
xlat/bpf_query_flags.h
xlat/bpf_rval.h
xlat/bpf_size.h
xlat/bpf_src.h
xlat/bpf_task_fd_type.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_ctl_cmds.in
xlat/btrfs_balance_flags.h
xlat/btrfs_balance_state.h
xlat/btrfs_compress_types.h
xlat/btrfs_compress_types.in
xlat/btrfs_compress_types.m4 [new file with mode: 0644]
xlat/btrfs_cont_reading_from_srcdev_mode.h
xlat/btrfs_cont_reading_from_srcdev_mode.in
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_logical_ino_args_flags.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_flags.h [new file with mode: 0644]
xlat/cacheflush_flags.in [new file with mode: 0644]
xlat/cacheflush_scope.h
xlat/caif_protocols.h
xlat/can_protocols.h
xlat/can_protocols.in
xlat/cap.h
xlat/cap.in
xlat/cap_mask0.h
xlat/cap_mask1.h
xlat/cap_mask1.in
xlat/cap_version.h
xlat/clockflags.h
xlat/clocknames.h
xlat/clone3_flags.h [new file with mode: 0644]
xlat/clone3_flags.in [new file with mode: 0644]
xlat/clone_flags.h
xlat/clone_flags.in
xlat/close_range_flags.h [new file with mode: 0644]
xlat/close_range_flags.in [new file with mode: 0644]
xlat/close_range_flags.m4 [new file with mode: 0644]
xlat/cpuclocknames.h
xlat/crypto_msgs.h [new file with mode: 0644]
xlat/crypto_msgs.in [new file with mode: 0644]
xlat/crypto_nl_attrs.h
xlat/crypto_nl_attrs.in
xlat/dcb_commands.h
xlat/dcb_commands.in
xlat/delete_module_flags.h
xlat/dirent_types.h
xlat/dm_flags.h
xlat/ebpf_class.h
xlat/ebpf_mode.h
xlat/ebpf_op_alu.h
xlat/ebpf_op_jmp.h
xlat/ebpf_regs.h
xlat/ebpf_size.h
xlat/efd_flags.h
xlat/elf_em.h [new file with mode: 0644]
xlat/elf_em.in [new file with mode: 0644]
xlat/epollctls.h
xlat/epollctls.in
xlat/epollevents.h
xlat/epollflags.h
xlat/ethernet_protocols.h
xlat/ethernet_protocols.in
xlat/evdev_abs.h
xlat/evdev_autorepeat.h
xlat/evdev_ev.h
xlat/evdev_ff_status.h
xlat/evdev_ff_types.h
xlat/evdev_ff_types.in
xlat/evdev_ioctl_cmds.h [new file with mode: 0644]
xlat/evdev_ioctl_cmds.in [new file with mode: 0644]
xlat/evdev_keycode.h
xlat/evdev_keycode.in
xlat/evdev_leds.h
xlat/evdev_misc.h
xlat/evdev_mtslots.h
xlat/evdev_mtslots.in
xlat/evdev_prop.h
xlat/evdev_relative_axes.h
xlat/evdev_snd.h
xlat/evdev_switch.h
xlat/f_owner_types.h
xlat/f_owner_types.in
xlat/f_seals.h
xlat/faccessat_flags.h [new file with mode: 0644]
xlat/faccessat_flags.in [new file with mode: 0644]
xlat/falloc_flags.h
xlat/fan_classes.h
xlat/fan_event_flags.h
xlat/fan_event_flags.in
xlat/fan_init_flags.h
xlat/fan_init_flags.in
xlat/fan_mark_flags.h
xlat/fcntlcmds.h
xlat/fdflags.h
xlat/fib_rule_actions.h
xlat/fib_rule_actions.in
xlat/fib_rule_flags.h
xlat/fib_rule_flags.in
xlat/fiemap_extent_flags.h
xlat/fiemap_flags.h
xlat/flockcmds.h
xlat/fsconfig_cmds.h [new file with mode: 0644]
xlat/fsconfig_cmds.in [new file with mode: 0644]
xlat/fsmagic.h
xlat/fsmagic.in
xlat/fsmount_flags.h [new file with mode: 0644]
xlat/fsmount_flags.in [new file with mode: 0644]
xlat/fsopen_flags.h [new file with mode: 0644]
xlat/fsopen_flags.in [new file with mode: 0644]
xlat/fspick_flags.h [new file with mode: 0644]
xlat/fspick_flags.in [new file with mode: 0644]
xlat/futexbitset.h
xlat/futexops.h
xlat/futexwakecmps.h
xlat/futexwakecmps.in
xlat/futexwakeops.h
xlat/futexwakeops.in
xlat/gen.sh
xlat/get_mempolicy_flags.h [new file with mode: 0644]
xlat/get_mempolicy_flags.in [new file with mode: 0644]
xlat/getrandom_flags.h
xlat/getrandom_flags.in
xlat/getsock_ip_options.h
xlat/getsock_ipv6_options.h
xlat/getsock_options.h
xlat/hci_channels.h
xlat/hdio_drive_cmds.h [new file with mode: 0644]
xlat/hdio_drive_cmds.in [new file with mode: 0644]
xlat/hw_breakpoint_len.h
xlat/hw_breakpoint_type.h
xlat/hw_breakpoint_type.in
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/iffflags.in
xlat/in6_addr_gen_mode.h
xlat/inet6_devconf_indices.h
xlat/inet6_if_flags.h
xlat/inet6_if_flags.in
xlat/inet_devconf_indices.h
xlat/inet_diag_attrs.h
xlat/inet_diag_attrs.in
xlat/inet_diag_bytecodes.h
xlat/inet_diag_bytecodes.in
xlat/inet_diag_extended_flags.h
xlat/inet_diag_extended_flags.in
xlat/inet_diag_req_attrs.h
xlat/inet_diag_req_attrs.in
xlat/inet_protocols.h
xlat/inet_protocols.in
xlat/inotify_flags.h
xlat/inotify_init_flags.h
xlat/ioctl_dirs.h
xlat/ioprio_class.h
xlat/ioprio_class.in
xlat/ioprio_who.h
xlat/ioprio_who.in
xlat/ip_cmsg_types.h
xlat/ip_type_of_services.h
xlat/ipc_msg_flags.h
xlat/ipc_msg_flags.in
xlat/ipc_private.h
xlat/ipccalls.h
xlat/irda_protocols.h
xlat/isdn_protocols.h
xlat/itimer_which.h
xlat/kcm_protocols.h
xlat/kcmp_types.h
xlat/kcmp_types.in
xlat/kexec_arch_values.h
xlat/kexec_arch_values.in
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_caps0.h [new file with mode: 0644]
xlat/keyctl_caps0.in [new file with mode: 0644]
xlat/keyctl_caps1.h [new file with mode: 0644]
xlat/keyctl_caps1.in [new file with mode: 0644]
xlat/keyctl_commands.h
xlat/keyctl_commands.in
xlat/keyctl_move_flags.h [new file with mode: 0644]
xlat/keyctl_move_flags.in [new file with mode: 0644]
xlat/keyctl_pkey_ops.h [new file with mode: 0644]
xlat/keyctl_pkey_ops.in [new file with mode: 0644]
xlat/kvm_cap.h
xlat/kvm_cap.in
xlat/kvm_cpuid_flags.h
xlat/kvm_exit_reason.h
xlat/kvm_exit_reason.in
xlat/kvm_mem_flags.h
xlat/lockfcmds.h
xlat/loop_cmds.h
xlat/loop_cmds.in
xlat/loop_crypt_type_options.h
xlat/loop_flags_options.h
xlat/loop_flags_options.in
xlat/loop_flags_options.m4 [new file with mode: 0644]
xlat/lwtunnel_encap_types.h
xlat/lwtunnel_encap_types.in
xlat/madvise_cmds.h
xlat/madvise_cmds.in
xlat/mbind_flags.h [new file with mode: 0644]
xlat/mbind_flags.in [new file with mode: 0644]
xlat/mbindflags.h [deleted file]
xlat/mbindflags.in [deleted file]
xlat/mctl_sync.h
xlat/mdb_flags.h
xlat/mdb_flags.in
xlat/mdb_states.h
xlat/membarrier_cmds.h
xlat/memfd_create_flags.h
xlat/mempolicyflags.h [deleted file]
xlat/mempolicyflags.in [deleted file]
xlat/mlock_flags.h
xlat/mlockall_flags.h
xlat/mmap_flags.h
xlat/mmap_flags.in
xlat/mmap_prot.h
xlat/modem_flags.h
xlat/modetypes.h
xlat/module_init_flags.h
xlat/mount_attr_flags.h [new file with mode: 0644]
xlat/mount_attr_flags.in [new file with mode: 0644]
xlat/mount_flags.h
xlat/mount_flags.in
xlat/move_mount_flags.h [new file with mode: 0644]
xlat/move_mount_flags.in [new file with mode: 0644]
xlat/move_pages_flags.h
xlat/mpol_mode_flags.h [new file with mode: 0644]
xlat/mpol_mode_flags.in [new file with mode: 0644]
xlat/mpol_modes.h [new file with mode: 0644]
xlat/mpol_modes.in [new file with mode: 0644]
xlat/mq_attr_flags.h
xlat/mremap_flags.h
xlat/mremap_flags.in
xlat/msg_flags.h
xlat/msgctl_flags.h
xlat/msgctl_flags.in
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/multicast_router_types.in
xlat/name_to_handle_at_flags.h
xlat/nbd_ioctl_cmds.h
xlat/nbd_ioctl_flags.h
xlat/neighbor_cache_entry_flags.h
xlat/neighbor_cache_entry_states.h
xlat/netfilter_versions.h
xlat/netfilter_versions.in
xlat/netlink_ack_flags.h
xlat/netlink_ack_flags.in
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_protocols.in
xlat/netlink_sk_meminfo_indices.h
xlat/netlink_socket_flags.h
xlat/netlink_states.h
xlat/netlink_types.h
xlat/netlink_types.in
xlat/nf_acct_msg_types.h
xlat/nf_acct_msg_types.in
xlat/nf_cthelper_msg_types.h
xlat/nf_cthelper_msg_types.in
xlat/nf_ctnetlink_exp_msg_types.h
xlat/nf_ctnetlink_exp_msg_types.in
xlat/nf_ctnetlink_msg_types.h
xlat/nf_ctnetlink_msg_types.in
xlat/nf_cttimeout_msg_types.h
xlat/nf_cttimeout_msg_types.in
xlat/nf_ipset_msg_types.h
xlat/nf_ipset_msg_types.in
xlat/nf_nft_compat_msg_types.h
xlat/nf_nftables_msg_types.h
xlat/nf_nftables_msg_types.in
xlat/nf_osf_msg_types.h
xlat/nf_osf_msg_types.in
xlat/nf_queue_msg_types.h
xlat/nf_queue_msg_types.in
xlat/nf_ulog_msg_types.h
xlat/nf_ulog_msg_types.in
xlat/nfc_protocols.h
xlat/nl_audit_types.h
xlat/nl_audit_types.in
xlat/nl_crypto_types.h
xlat/nl_netfilter_msg_types.h
xlat/nl_netfilter_subsys_ids.h
xlat/nl_netfilter_subsys_ids.in
xlat/nl_route_types.h
xlat/nl_route_types.in
xlat/nl_selinux_types.h
xlat/nl_sock_diag_types.h
xlat/nl_xfrm_types.h
xlat/nlmsgerr_attrs.h
xlat/nlmsgerr_attrs.in
xlat/notifyflags.h
xlat/nt_descriptor_types.h
xlat/numa_node.h
xlat/open_access_modes.h
xlat/open_mode_flags.h
xlat/open_resolve_flags.h [new file with mode: 0644]
xlat/open_resolve_flags.in [new file with mode: 0644]
xlat/open_tree_flags.h [new file with mode: 0644]
xlat/open_tree_flags.in [new file with mode: 0644]
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_attr_size.in
xlat/perf_branch_sample_type.h
xlat/perf_branch_sample_type.in
xlat/perf_event_open_flags.h
xlat/perf_event_read_format.h
xlat/perf_event_sample_format.h
xlat/perf_event_sample_format.in
xlat/perf_hw_cache_id.h
xlat/perf_hw_cache_id.in
xlat/perf_hw_cache_op_id.h
xlat/perf_hw_cache_op_id.in
xlat/perf_hw_cache_op_result_id.h
xlat/perf_hw_cache_op_result_id.in
xlat/perf_hw_id.h
xlat/perf_hw_id.in
xlat/perf_ioctl_cmds.h
xlat/perf_ioctl_flags.h
xlat/perf_sw_ids.h
xlat/perf_sw_ids.in
xlat/perf_type_id.h
xlat/perf_type_id.in
xlat/personality_flags.h
xlat/personality_types.h
xlat/phonet_protocols.h
xlat/pkey_access.h
xlat/policies.h [deleted file]
xlat/policies.in [deleted file]
xlat/pollflags.h
xlat/pr_cap_ambient.h
xlat/pr_cap_ambient.in
xlat/pr_dumpable.h
xlat/pr_dumpable.in
xlat/pr_fp_mode.h
xlat/pr_mce_kill.h
xlat/pr_mce_kill.in
xlat/pr_mce_kill_policy.h
xlat/pr_mce_kill_policy.in
xlat/pr_set_mm.h
xlat/pr_set_mm.in
xlat/pr_spec_cmds.h
xlat/pr_spec_get_store_bypass_flags.h
xlat/pr_spec_set_store_bypass_flags.h
xlat/pr_sve_vl_flags.h
xlat/pr_tsc.h
xlat/pr_tsc.in
xlat/pr_unalign_flags.h
xlat/prctl_options.h
xlat/prctl_options.in
xlat/priorities.h
xlat/ptp_extts_flags.h [new file with mode: 0644]
xlat/ptp_extts_flags.in [new file with mode: 0644]
xlat/ptp_flags_options.h [deleted file]
xlat/ptp_flags_options.in [deleted file]
xlat/ptp_perout_flags.h [new file with mode: 0644]
xlat/ptp_perout_flags.in [new file with mode: 0644]
xlat/ptrace_cmds.h
xlat/ptrace_cmds.in
xlat/ptrace_events.h
xlat/ptrace_peeksiginfo_flags.h
xlat/ptrace_setoptions_flags.h
xlat/ptrace_syscall_info_op.h
xlat/quota_formats.h
xlat/quota_formats.in
xlat/quotacmds.h
xlat/quotatypes.h
xlat/quotatypes.in
xlat/random_ioctl_cmds.h
xlat/rename_flags.h
xlat/resource_flags.h
xlat/resources.h
xlat/riscv_flush_icache_flags.h
xlat/route_nexthop_flags.h
xlat/routing_flags.h
xlat/routing_flags.in
xlat/routing_protocols.h
xlat/routing_protocols.in
xlat/routing_scopes.h
xlat/routing_table_ids.h
xlat/routing_types.h
xlat/routing_types.in
xlat/rtc_ioctl_cmds.h [new file with mode: 0644]
xlat/rtc_ioctl_cmds.in [new file with mode: 0644]
xlat/rtc_vl_flags.h [new file with mode: 0644]
xlat/rtc_vl_flags.in [new file with mode: 0644]
xlat/rtnl_addr_attrs.h
xlat/rtnl_addr_attrs.in
xlat/rtnl_addrlabel_attrs.h
xlat/rtnl_addrlabel_attrs.in
xlat/rtnl_dcb_attrs.h
xlat/rtnl_dcb_attrs.in
xlat/rtnl_ifla_af_spec_inet6_attrs.h
xlat/rtnl_ifla_af_spec_inet_attrs.h
xlat/rtnl_ifla_brport_attrs.h
xlat/rtnl_ifla_brport_attrs.in
xlat/rtnl_ifla_events.h
xlat/rtnl_ifla_events.in
xlat/rtnl_ifla_info_attrs.h
xlat/rtnl_ifla_info_attrs.in
xlat/rtnl_ifla_info_data_bridge_attrs.h
xlat/rtnl_ifla_info_data_tun_attrs.h
xlat/rtnl_ifla_port_attrs.h
xlat/rtnl_ifla_port_attrs.in
xlat/rtnl_ifla_vf_port_attrs.h
xlat/rtnl_ifla_vf_port_attrs.in
xlat/rtnl_ifla_xdp_attached_mode.h
xlat/rtnl_ifla_xdp_attached_mode.in
xlat/rtnl_ifla_xdp_attached_mode.m4 [new file with mode: 0644]
xlat/rtnl_ifla_xdp_attrs.h
xlat/rtnl_ifla_xdp_attrs.in
xlat/rtnl_ifla_xdp_attrs.m4 [new file with mode: 0644]
xlat/rtnl_link_attrs.h
xlat/rtnl_link_attrs.in
xlat/rtnl_link_attrs.m4 [new file with mode: 0644]
xlat/rtnl_mdb_attrs.h
xlat/rtnl_mdb_attrs.in
xlat/rtnl_mdba_mdb_attrs.h
xlat/rtnl_mdba_mdb_attrs.in
xlat/rtnl_mdba_mdb_eattr_attrs.h
xlat/rtnl_mdba_mdb_eattr_attrs.in
xlat/rtnl_mdba_mdb_entry_attrs.h
xlat/rtnl_mdba_mdb_entry_attrs.in
xlat/rtnl_mdba_router_attrs.h
xlat/rtnl_mdba_router_attrs.in
xlat/rtnl_mdba_router_pattr_attrs.h
xlat/rtnl_mdba_router_pattr_attrs.in
xlat/rtnl_neigh_attrs.h
xlat/rtnl_neigh_attrs.in
xlat/rtnl_neightbl_attrs.h
xlat/rtnl_neightbl_attrs.in
xlat/rtnl_neightbl_parms_attrs.h
xlat/rtnl_neightbl_parms_attrs.in
xlat/rtnl_netconf_attrs.h
xlat/rtnl_netconf_attrs.in
xlat/rtnl_nsid_attrs.h
xlat/rtnl_route_attrs.h
xlat/rtnl_route_attrs.in
xlat/rtnl_rta_metrics_attrs.h
xlat/rtnl_rta_metrics_attrs.in
xlat/rtnl_rule_attrs.h
xlat/rtnl_rule_attrs.in
xlat/rtnl_tc_action_attrs.h
xlat/rtnl_tc_action_attrs.in
xlat/rtnl_tc_action_attrs.m4 [new file with mode: 0644]
xlat/rtnl_tc_attrs.h
xlat/rtnl_tc_attrs.in
xlat/rtnl_tca_act_flags.h [new file with mode: 0644]
xlat/rtnl_tca_act_flags.in [new file with mode: 0644]
xlat/rtnl_tca_act_hw_stats.h [new file with mode: 0644]
xlat/rtnl_tca_act_hw_stats.in [new file with mode: 0644]
xlat/rtnl_tca_stab_attrs.h
xlat/rtnl_tca_stab_attrs.in
xlat/rtnl_tca_stab_attrs.m4 [new file with mode: 0644]
xlat/rtnl_tca_stats_attrs.h
xlat/rtnl_tca_stats_attrs.in
xlat/rtnl_tca_stats_attrs.m4 [new file with mode: 0644]
xlat/rwf_flags.h
xlat/s390_guarded_storage_commands.h
xlat/s390_guarded_storage_commands.in
xlat/s390_runtime_instr_commands.h
xlat/s390_runtime_instr_commands.in
xlat/s390_sthyi_function_codes.h
xlat/sa_handler_values.h
xlat/sched_flags.h
xlat/sched_flags.in
xlat/schedulers.h
xlat/scmvals.h
xlat/scsi_sg_commands.h
xlat/scsi_sg_commands.in
xlat/secbits.h
xlat/seccomp_filter_flags.h
xlat/seccomp_filter_flags.in
xlat/seccomp_mode.h
xlat/seccomp_mode.in
xlat/seccomp_ops.h
xlat/seccomp_ops.in
xlat/seccomp_ret_action.h
xlat/semctl_flags.h
xlat/semctl_flags.in
xlat/semop_flags.h
xlat/setns_types.h
xlat/setns_types.in
xlat/setsock_ip_options.h
xlat/setsock_ipv6_options.h
xlat/setsock_options.h
xlat/setsock_options.in
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_flags.in
xlat/shm_resource_flags.h
xlat/shm_resource_flags.in
xlat/shmctl_flags.h
xlat/shmctl_flags.in
xlat/shutdown_modes.h
xlat/shutdown_modes.in
xlat/sigact_flags.h
xlat/sigaltstack_flags.h
xlat/sigbus_codes.h
xlat/sigchld_codes.h
xlat/sigchld_codes.in
xlat/sigemt_codes.h
xlat/sigev_value.h
xlat/sigev_value.in
xlat/sigfpe_codes.h
xlat/sigill_codes.h
xlat/siginfo_codes.h
xlat/sigpoll_codes.h
xlat/sigpoll_codes.in
xlat/sigprocmaskcmds.h
xlat/sigprof_codes.h
xlat/sigsegv_codes.h
xlat/sigsys_codes.h
xlat/sigtrap_codes.h
xlat/skf_ad.h
xlat/skf_off.h
xlat/skf_off.in
xlat/smc_decl_codes.h
xlat/smc_decl_codes.in
xlat/smc_diag_attrs.h
xlat/smc_diag_extended_flags.h
xlat/smc_diag_mode.h
xlat/smc_link_group_roles.h
xlat/smc_link_group_roles.in
xlat/smc_protocols.h
xlat/smc_states.h
xlat/snmp_icmp6_stats.h
xlat/snmp_ip_stats.h
xlat/sock_alg_options.h
xlat/sock_ax25_options.h
xlat/sock_ax25_options.in
xlat/sock_bluetooth_options.h
xlat/sock_bluetooth_options.in
xlat/sock_caif_options.h
xlat/sock_dccp_options.h
xlat/sock_dccp_options.in
xlat/sock_ip_options.h
xlat/sock_ip_options.in
xlat/sock_ipv6_options.h
xlat/sock_ipv6_options.in
xlat/sock_ipx_options.h
xlat/sock_irda_options.h
xlat/sock_iucv_options.h
xlat/sock_kcm_options.h
xlat/sock_llc_options.h
xlat/sock_netlink_options.h
xlat/sock_netlink_options.in
xlat/sock_nfcllcp_options.h
xlat/sock_options.h
xlat/sock_options.in
xlat/sock_packet_options.h
xlat/sock_pnp_options.h
xlat/sock_pnp_options.in
xlat/sock_pppol2tp_options.h
xlat/sock_raw_options.h
xlat/sock_rds_options.h
xlat/sock_rxrpc_options.h
xlat/sock_sctp_options.h
xlat/sock_sctp_options.in
xlat/sock_shutdown_flags.h
xlat/sock_tcp_options.h
xlat/sock_tcp_options.in
xlat/sock_tipc_options.h
xlat/sock_tipc_options.in
xlat/sock_tls_options.h
xlat/sock_tls_options.in
xlat/sock_type_flags.h
xlat/sock_udp_options.h
xlat/sock_xdp_options.h
xlat/sock_xdp_options.in
xlat/socketcalls.h
xlat/socketcalls.in
xlat/socketlayers.h
xlat/socketlayers.in
xlat/socktypes.h
xlat/sparc_kern_features.h
xlat/splice_flags.h
xlat/sram_alloc_flags.h
xlat/st_check_enums.m4 [new file with mode: 0644]
xlat/statfs_flags.h
xlat/statx_attrs.h
xlat/statx_attrs.in
xlat/statx_masks.h
xlat/statx_masks.in
xlat/swap_flags.h
xlat/sync_file_range_flags.h
xlat/sysctl_kern.h
xlat/sysctl_kern.in
xlat/sysctl_kern.m4 [new file with mode: 0644]
xlat/sysctl_net.h
xlat/sysctl_net.in
xlat/sysctl_net.m4 [new file with mode: 0644]
xlat/sysctl_net_core.h
xlat/sysctl_net_core.in
xlat/sysctl_net_core.m4 [new file with mode: 0644]
xlat/sysctl_net_ipv4.h
xlat/sysctl_net_ipv4.in
xlat/sysctl_net_ipv4.m4 [new file with mode: 0644]
xlat/sysctl_net_ipv4_conf.h
xlat/sysctl_net_ipv4_conf.in
xlat/sysctl_net_ipv4_conf.m4 [new file with mode: 0644]
xlat/sysctl_net_ipv4_route.h
xlat/sysctl_net_ipv4_route.in
xlat/sysctl_net_ipv4_route.m4 [new file with mode: 0644]
xlat/sysctl_net_ipv6.h
xlat/sysctl_net_ipv6.in
xlat/sysctl_net_ipv6.m4 [new file with mode: 0644]
xlat/sysctl_net_ipv6_route.h
xlat/sysctl_net_ipv6_route.in
xlat/sysctl_net_ipv6_route.m4 [new file with mode: 0644]
xlat/sysctl_net_unix.h
xlat/sysctl_net_unix.in
xlat/sysctl_net_unix.m4 [new file with mode: 0644]
xlat/sysctl_root.h
xlat/sysctl_root.in
xlat/sysctl_root.m4 [new file with mode: 0644]
xlat/sysctl_vm.h
xlat/sysctl_vm.in
xlat/sysctl_vm.m4 [new file with mode: 0644]
xlat/syslog_action_type.h
xlat/syslog_console_levels.h [new file with mode: 0644]
xlat/syslog_console_levels.in [new file with mode: 0644]
xlat/sysmips_operations.h
xlat/tcflsh_options.h
xlat/tcp_state_flags.h
xlat/tcp_states.h
xlat/tcp_states.in
xlat/tcxonc_options.h
xlat/tee_ioctl_cmds.h [new file with mode: 0644]
xlat/tee_ioctl_cmds.in [new file with mode: 0644]
xlat/tee_ioctl_gen_caps.h [new file with mode: 0644]
xlat/tee_ioctl_gen_caps.in [new file with mode: 0644]
xlat/tee_ioctl_impl_ids.h [new file with mode: 0644]
xlat/tee_ioctl_impl_ids.in [new file with mode: 0644]
xlat/tee_ioctl_login_types.h [new file with mode: 0644]
xlat/tee_ioctl_login_types.in [new file with mode: 0644]
xlat/tee_ioctl_max_arg_size.h [new file with mode: 0644]
xlat/tee_ioctl_max_arg_size.in [new file with mode: 0644]
xlat/tee_ioctl_optee_caps.h [new file with mode: 0644]
xlat/tee_ioctl_optee_caps.in [new file with mode: 0644]
xlat/tee_ioctl_origins.h [new file with mode: 0644]
xlat/tee_ioctl_origins.in [new file with mode: 0644]
xlat/tee_ioctl_param_attr_types.h [new file with mode: 0644]
xlat/tee_ioctl_param_attr_types.in [new file with mode: 0644]
xlat/tee_ioctl_shm_flags.h [new file with mode: 0644]
xlat/tee_ioctl_shm_flags.in [new file with mode: 0644]
xlat/timerfdflags.h
xlat/tun_device_types.h
xlat/ubi_volume_props.h
xlat/ubi_volume_types.h
xlat/uffd_api_features.h
xlat/uffd_api_features.in
xlat/uffd_api_flags.h
xlat/uffd_copy_flags.h
xlat/uffd_copy_flags.in
xlat/uffd_flags.h
xlat/uffd_register_ioctl_flags.h
xlat/uffd_register_ioctl_flags.in
xlat/uffd_register_mode_flags.h
xlat/uffd_zeropage_flags.h
xlat/umount_flags.h
xlat/unix_diag_attrs.h
xlat/unix_diag_attrs.in
xlat/unix_diag_show.h
xlat/unix_diag_show.in
xlat/unshare_flags.h
xlat/unshare_flags.in
xlat/uring_cqring_flags.h [new file with mode: 0644]
xlat/uring_cqring_flags.in [new file with mode: 0644]
xlat/uring_enter_flags.h
xlat/uring_op_flags.h [new file with mode: 0644]
xlat/uring_op_flags.in [new file with mode: 0644]
xlat/uring_ops.h [new file with mode: 0644]
xlat/uring_ops.in [new file with mode: 0644]
xlat/uring_register_opcodes.h
xlat/uring_register_opcodes.in
xlat/uring_setup_features.h [new file with mode: 0644]
xlat/uring_setup_features.in [new file with mode: 0644]
xlat/uring_setup_flags.h
xlat/uring_setup_flags.in
xlat/usagewho.h
xlat/v4l2_buf_flags.h
xlat/v4l2_buf_flags.in
xlat/v4l2_buf_flags_masks.h [new file with mode: 0644]
xlat/v4l2_buf_flags_masks.in [new file with mode: 0644]
xlat/v4l2_buf_flags_ts_src.h [new file with mode: 0644]
xlat/v4l2_buf_flags_ts_src.in [new file with mode: 0644]
xlat/v4l2_buf_flags_ts_type.h [new file with mode: 0644]
xlat/v4l2_buf_flags_ts_type.in [new file with mode: 0644]
xlat/v4l2_buf_types.h
xlat/v4l2_buf_types.in
xlat/v4l2_buf_types.m4 [new file with mode: 0644]
xlat/v4l2_capture_modes.h
xlat/v4l2_capture_modes.in
xlat/v4l2_colorspaces.h
xlat/v4l2_colorspaces.in
xlat/v4l2_colorspaces.m4 [new file with mode: 0644]
xlat/v4l2_control_classes.h
xlat/v4l2_control_classes.in
xlat/v4l2_control_flags.h
xlat/v4l2_control_flags.in
xlat/v4l2_control_id_bases.h
xlat/v4l2_control_id_bases.in
xlat/v4l2_control_ids.h
xlat/v4l2_control_ids.in
xlat/v4l2_control_query_flags.h [new file with mode: 0644]
xlat/v4l2_control_query_flags.in [new file with mode: 0644]
xlat/v4l2_control_types.h
xlat/v4l2_control_types.in
xlat/v4l2_control_types.m4 [new file with mode: 0644]
xlat/v4l2_device_capabilities_flags.h
xlat/v4l2_device_capabilities_flags.in
xlat/v4l2_fields.h
xlat/v4l2_fields.in
xlat/v4l2_fields.m4 [new file with mode: 0644]
xlat/v4l2_format_description_flags.h
xlat/v4l2_format_description_flags.in
xlat/v4l2_frameinterval_types.h
xlat/v4l2_frameinterval_types.in
xlat/v4l2_framesize_types.h
xlat/v4l2_framesize_types.in
xlat/v4l2_framesize_types.m4 [new file with mode: 0644]
xlat/v4l2_input_types.h
xlat/v4l2_input_types.in
xlat/v4l2_ioctl_cmds.h [new file with mode: 0644]
xlat/v4l2_ioctl_cmds.in [new file with mode: 0644]
xlat/v4l2_memories.h
xlat/v4l2_memories.in
xlat/v4l2_memories.m4 [new file with mode: 0644]
xlat/v4l2_pix_fmts.h
xlat/v4l2_pix_fmts.in
xlat/v4l2_sdr_fmts.h
xlat/v4l2_sdr_fmts.in
xlat/v4l2_sliced_flags.h
xlat/v4l2_sliced_flags.in
xlat/v4l2_streaming_capabilities.h
xlat/v4l2_streaming_capabilities.in
xlat/v4l2_tuner_audmodes.h
xlat/v4l2_tuner_audmodes.in
xlat/v4l2_tuner_capabilities.h
xlat/v4l2_tuner_capabilities.in
xlat/v4l2_tuner_rxsubchanses.h
xlat/v4l2_tuner_rxsubchanses.in
xlat/v4l2_tuner_types.h
xlat/v4l2_tuner_types.in
xlat/v4l2_tuner_types.m4 [new file with mode: 0644]
xlat/v4l2_vbi_flags.h
xlat/v4l2_vbi_flags.in
xlat/wait4_options.h
xlat/waitid_types.h
xlat/waitid_types.in
xlat/waitid_types.m4 [new file with mode: 0644]
xlat/watchdog_ioctl_cmds.h [new file with mode: 0644]
xlat/watchdog_ioctl_cmds.in [new file with mode: 0644]
xlat/whence_codes.h
xlat/xattrflags.h
xlat/xdp_flags.h
xlat/xdp_flags.in
xlat/xfs_dqblk_flags.h
xlat/xfs_quota_flags.h
xmalloc.c
xmalloc.h

index 53f3c932b60940ae537fd61294163d9daab730ed..34c8ca46f9ea6cec00c876f96cee513c79861ba4 100644 (file)
@@ -1 +1 @@
-2019-03-17
+2020-09-23
index a75b92f1ed766132f8e6b71376143c6a7111021a..95ee81a411792c5d968d8b3f783e35e690aaeaed 100644 (file)
@@ -1 +1 @@
-5.1
+5.9
index a75b92f1ed766132f8e6b71376143c6a7111021a..95ee81a411792c5d968d8b3f783e35e690aaeaed 100644 (file)
--- a/.version
+++ b/.version
@@ -1 +1 @@
-5.1
+5.9
diff --git a/.year b/.year
index 80ace6aace6fe730b95abafa989bbfc45f95800c..e0fbadda96193e45ce6b910f2d13837323894356 100644 (file)
--- a/.year
+++ b/.year
@@ -1 +1 @@
-2019
+2020
diff --git a/COPYING b/COPYING
index 3c57e7f8dfb44aaa0a4f25340eb260dff12dd233..cb860431cc4cda1b5e8eeeb0b8f169df348eed8b 100644 (file)
--- a/COPYING
+++ b/COPYING
@@ -4,7 +4,7 @@ Copyright (c) 1993 Ulrich Pegelow <pegelow@moorea.uni-muenster.de>
 Copyright (c) 1995, 1996 Michael Elizabeth Chastain <mec@duracef.shout.net>
 Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com>
 Copyright (c) 1998-2001 Wichert Akkerman <wakkerma@deephackmode.org>
-Copyright (c) 2001-2019 The strace developers.
+Copyright (c) 2001-2020 The strace developers.
 All rights reserved.
 
 strace is free software; you can redistribute it and/or modify it
diff --git a/CREDITS b/CREDITS
index 179a1320479c4ce2820762cab01595f79a680f81..5a43fb9a8ee18eedc74594a0c7e368024bcf0702 100644 (file)
--- a/CREDITS
+++ b/CREDITS
@@ -16,14 +16,17 @@ strace-devel@lists.strace.io mailing list.
        Abhishek Tiwari <erabhishektiwarics@gmail.com>
        Adrien Kunysz <adrien@kunysz.be>
        Alexey Brodkin <Alexey.Brodkin@synopsys.com>
+       Alexey Gladkov <gladkov.alexey@gmail.com>
        Alexey Neyman <stilor@att.net>
        Ali Polatel <alip@exherbo.org>
+       Alistair Francis <alistair.francis@wdc.com>
        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>
+       Andrey Zax <andrey.zax@gmail.com>
        Angelo Castello <angelo.castello@st.com>
        Anton Blanchard <anton@samba.org>
        Arkadiusz Miskiewicz <misiek@pld.org.pl>
@@ -34,9 +37,11 @@ strace-devel@lists.strace.io mailing list.
        Baruch Siach <baruch@tkos.co.il>
        Ben Noordhuis <info@bnoordhuis.nl>
        Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
+       Bharath Vedartham <linux.bhar@gmail.com>
        Bo Kullmar <bk@kullmar.se>
        Bryan Matsuo <bryan.matsuo@gmail.com>
        Bryce Gibson <bryce@gibson-consulting.com.au>
+       Burkhard Kohl <burkhard.kohl@intel.com>
        Cai Fei <caifei@cn.fujitsu.com>
        Carlos O'Donell <carlos@systemhalted.org>
        Carmelo Amoroso <carmelo.amoroso@st.com>
@@ -45,14 +50,17 @@ strace-devel@lists.strace.io mailing list.
        Chris Dearman <chris.dearman@imgtec.com>
        Chris Lamb <lamby@debian.org>
        Chris Metcalf <cmetcalf@tilera.com>
+       Chris Packham <chris.packham@alliedtelesis.co.nz>
        Chris Zankel <chris@zankel.net>
        Christian Neukirchen <chneukirchen@gmail.com>
        Christian Svensson <blue@cmd.nu>
        Christopher Covington <cov@codeaurora.org>
+       Chunmei Xu <xuchunmei@linux.alibaba.com>
        D.J. Barrow <djbarrow@de.ibm.com>
        DJ Delorie <dj@redhat.com>
        Damien Profeta <damien.profeta@amadeus.com>
        Damir Shayhutdinov <damir@altlinux.org>
+       Dan Horák <dan@danny.cz>
        Daniel P. Berrange <berrange@redhat.com>
        David Daney <ddaney@caviumnetworks.com>
        David Mosberger-Tang <davidm@hpl.hp.com>
@@ -77,6 +85,8 @@ strace-devel@lists.strace.io mailing list.
        Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
        Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
        Fabien Siron <fabien.siron@epita.fr>
+       Fabrice Fontaine <fontaine.fabrice@gmail.com>
+       Fanda Uchytil <strace.t8xuewpmde@h4x.cz>
        Fei Jie <feij.fnst@cn.fujitsu.com>
        Felix Janda <felix.janda@posteo.de>
        Fernando Luis Vazquez Cao <fernando@oss.ntt.co.jp>
@@ -109,10 +119,12 @@ strace-devel@lists.strace.io mailing list.
        James Hogan <james.hogan@imgtec.com>
        James Yang <james.yang@freescale.com>
        Jan Kratochvil <jan.kratochvil@redhat.com>
+       Jann Horn <jannh@google.com>
        Janosch Frank <frankja@linux.ibm.com>
        JayRJoshi <jay.r.joshi100@gmail.com>
        Jeff Law <law@redhat.com>
        Jeff Mahoney <jeffm@suse.com>
+       Jeremy Kerr <jk@ozlabs.org>
        Jian Zhen <zhenjl@gmail.com>
        Jiri Slaby <jirislaby@gmail.com>
        Joakim Bech <joakim.bech@linaro.org>
@@ -129,6 +141,7 @@ strace-devel@lists.strace.io mailing list.
        Katerina Koukiou <k.koukiou@googlemail.com>
        Keith Owens <kaos.ocs@gmail.com>
        Keith Thompson <kst@alsys.com>
+       Kemeng Shi <shikemeng@huawei.com>
        Khem Raj <raj.khem@gmail.com>
        Kirill A. Shutemov <kirill@shutemov.name>
        Kyle McMartin <kyle@mcmartin.ca>
@@ -141,6 +154,7 @@ strace-devel@lists.strace.io mailing list.
        Lubomir Rintel <lkundrak@v3.sk>
        Luca Clementi <luca.clementi@gmail.com>
        Lupe Christoph <lupe@alanya.isar.muc.de>
+       Ma Jun <majun258@linux.alibaba.com>
        Maarten ter Huurne <maarten@treewalker.org>
        Mark Hills <mark.hills@framestore.com>
        Mark Wielaard <mjw@redhat.com>
@@ -150,6 +164,7 @@ strace-devel@lists.strace.io mailing list.
        Matt Day <mday@artisoft.com>
        Matthias Pfaller <leo@dachau.marco.de>
        Max Filippov <jcmvbkbc@gmail.com>
+       Maxim Akhmedov <max42@yandex-team.ru>
        Maxim Shchetynin <maxim@de.ibm.com>
        Maxin B. John <maxin.john@enea.com>
        Md Haris Iqbal <haris.phnx@gmail.com>
@@ -159,8 +174,10 @@ strace-devel@lists.strace.io mailing list.
        Michael Shigorin <mike@altlinux.org>
        Michail Litvak <mci@owl.openwall.com>
        Michal Ludvig <mludvig@suse.cz>
+       Michal Sekletar <msekleta@redhat.com>
        Michal Simek <monstr@monstr.eu>
        Mike Frysinger <vapier@gentoo.org>
+       Mike Gilbert <floppym@gentoo.org>
        Mike Stroyan <mike.stroyan@hp.com>
        Mikulas Patocka <mpatocka@redhat.com>
        Miroslav Lichvar <mlichvar@redhat.com>
@@ -170,12 +187,15 @@ strace-devel@lists.strace.io mailing list.
        Nate Eldredge <nate@cartsys.com>
        Nate Sammons <nate@users.sourceforge.net>
        Neil Campbell <lists@thebatcave.org.uk>
+       Niklas Cathor <niklas.cathor@gmx.de>
        Nikolay Marchuk <marchuk.nikolay.a@gmail.com>
        Orion Poplawski <orion@cora.nwra.com>
        Paolo Bonzini <pbonzini@redhat.com>
        Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
+       Paul Chaignon <paul.chaignon@gmail.com>
        Paul Mundt <lethal@linux-sh.org>
        Pavel Machek <pavel@ucw.cz>
+       Pavel Zhukov <pzhukov@redhat.com>
        Peter Jones <pjones@redhat.com>
        Peter Zotov <whitequark@whitequark.org>
        Philipp Marek <philipp.marek@emerion.com>
@@ -183,12 +203,13 @@ strace-devel@lists.strace.io mailing list.
        Philippe Ombredanne <pombredanne@nexb.com>
        Pierre Marsais <pierre.marsais@lse.epita.fr>
        Pádraig Brady <P@draigBrady.com>
-       Quentin Monnet <quentin.monnet@6wind.com>
+       Quentin Monnet <quentin.monnet@netronome.com>
        Rajeev V. Pillai <rajeevvp@gmail.com>
        Ralf Baechle <ralf@linux-mips.org>
        Randolph Chung <tausq@debian.org>
        Rasmus Villemoes <rasmus.villemoes@prevas.dk>
        Reuben Sumner <rasumner@undergrad.math.uwaterloo.ca>
+       Rich Felker <dalias@aerifal.cx>
        Richard Braakman <dark@xs4all.nl>
        Richard Henderson <richard@twiddle.tamu.edu>
        Richard Hirst <rhirst@linuxcare.com>
@@ -200,6 +221,7 @@ strace-devel@lists.strace.io mailing list.
        Roland McGrath <roland@redhat.com>
        Rolf Eike Beer <eb@emlix.com>
        Romain Naour <romain.naour@smile.fr>
+       Ruinland ChuanTzu Tsai <ruinland@andestech.com>
        Sami Farin <safari@u.safari.iki.fi>
        Sandhya Bankar <bankarsandhya512@gmail.com>
        Scott Tsai <scottt958@yahoo.com.tw>
@@ -215,16 +237,20 @@ strace-devel@lists.strace.io mailing list.
        Stanislav Brabec <sbrabec@suse.cz>
        Stefan Sørensen <stefan.sorensen@spectralink.com>
        Steve Bennett <steveb@workware.net.au>
+       Steve Langasek <steve.langasek@ubuntu.com>
        Steve McIntyre <steve@einval.com>
        Steven Honeyman <stevenhoneyman@gmail.com>
+       Sven Schnelle <svens@stackframe.org>
        Szabolcs Nagy <nsz@port70.net>
        Thanh Ma <tma@encore.com>
        Thiemo Seufer <ths@networkno.de>
        Thomas Bogendoerfer <tsbogend@bigbug.franken.de>
        Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
+       Thomas Deutschmann <whissi@gentoo.org>
        Tim Yamin <plasmaroo@gentoo.org>
        Timo Lindfors <timo.lindfors@iki.fi>
        Tom Dyas <tdyas@eden.rutgers.edu>
+       Tom Stellard <tstellar@redhat.com>
        Tommi Rantala <ext-tommi.1.rantala@nokia.com>
        Topi Miettinen <Topi.Miettinen@nic.fi>
        Tuan Hoang <tmhoang@linux.ibm.com>
@@ -233,6 +259,7 @@ strace-devel@lists.strace.io mailing list.
        Victor Krapivensky <krapivenskiy.va@phystech.edu>
        Vineet Gupta <Vineet.Gupta1@synopsys.com>
        Vitaly Chaykovsky <mgspeker@gmail.com>
+       Vladimir D. Seleznev <vseleznv@altlinux.org>
        Wang Chao <wang.chao@cn.fujitsu.com>
        Weichuan Yan <wchyan@marvell.com>
        Wichert Akkerman <wichert@deephackmode.org>
@@ -243,6 +270,7 @@ strace-devel@lists.strace.io mailing list.
        Zach Brown <zach.brown@oracle.com>
        Zev Weiss <zev@bewilderbeest.net>
        Zhang Le <robert.zhangle@gmail.com>
-       Zhibin Li <08826794brmt@gmail.com>
+       Zhibin Li <haoyouab@gmail.com>
        Zubin Mithra <zubin.mithra@gmail.com>
+       Ákos Uzonyi <uzonyi.akos@gmail.com>
        Марк Коренберг <socketpair@gmail.com>
index cc7f2d19f4652d32f69889cb873f8cdfb5d900bc..514bcfca9f0220a6b1aff51a44dd65c69adab77b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
+2020-09-24  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Prepare for 5.9 release.
+       * NEWS: Update for 5.9 release.
+
+2020-09-23  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Update copyright headers.
+       Headers updated automatically using maint/update_copyright_years.sh
+       script.
+
+2020-09-23  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Fix preprocessor indentation.
+       Indent the C preprocessor directives to reflect their nesting
+       using the following script:
+
+       $ cppi -l $(git grep -El '^[[:space:]]*#[[:space:]]*(if|ifdef|ifndef|elif|else|endif|define|pragma)[[:space:]]' |grep -v '\.sh$') |while read f; do
+               cppi < "$f" > "$f".cppi; mv "$f".cppi "$f"
+       done
+
+2020-09-23  Gleb Fotengauer-Malinovskiy  <glebfm@altlinux.org>
+
+       Update ioctl entries from linux v5.9.
+       * linux/32/ioctls_inc_align16.h: Update from linux v5.9-rc6
+       using ioctls_gen.sh.
+       * linux/32/ioctls_inc_align32.h: Likewise.
+       * linux/32/ioctls_inc_align64.h: Likewise.
+       * linux/64/ioctls_inc.h: Likewise.
+       * linux/x32/ioctls_inc0.h: Likewise.
+       * NEWS: Mention this.
+       * tests/ioctl_v4l2.c (main): Skip conflicting ioctl command
+       VBG_IOCTL_ACQUIRE_GUEST_CAPABILITIES.
+
+       maint: update for linux v5.9.
+       * maint/ioctls_gen.sh: Add arch/<arch>/include/generated/uapi and
+       arch/<arch>/include/generated directories to INCLUDES.
+       * maint/ioctls_sym.sh: Add workaround definitions of
+       __no_kasan_or_inline and __no_sanitize_or_inline macros.
+
+2020-09-23  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       strace.1.in: mention --seccomp-bpf in "A traced process runs slowly" bug
+       As it is worth mentioning here, probably.
+
+       * strace.1.in (.SH BUGS): Refer to --seccomp-bpf option description in
+       "A traced process runs slowly" bug.
+
+2020-09-23  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       NEWS: provide a Fedora bug number for the --pidns-translation entry.
+
+2020-09-23  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       tee: use types/ directory for the type definitions header.
+       Also, switch ioctl_tee test to system header usage, to double-check
+       things.
+
+       * tee.h: Rename to...
+       * types/tee.h: ...this.  Remove "xlat/tee_ioctl_cmds.h",
+       "xlat/tee_ioctl_gen_caps.h", "xlat/tee_ioctl_impl_ids.h",
+       "xlat/tee_ioctl_login_types.h", "xlat/tee_ioctl_max_arg_size.h",
+       "xlat/tee_ioctl_origins.h", "xlat/tee_ioctl_optee_caps.h",
+       "xlat/tee_ioctl_param_attr_types.h", "xlat/tee_ioctl_shm_flags.h"
+       includes.  Add header guard.
+       [!HAVE_STRUCT_TEE_IOCTL_BUF_DATA, !HAVE_STRUCT_TEE_IOCTL_CANCEL_ARG,
+       !HAVE_STRUCT_TEE_IOCTL_CLOSE_SESSION_ARG,
+       !HAVE_STRUCT_TEE_IOCTL_SHM_ALLOC_DATA,
+       !HAVE_STRUCT_TEE_IOCTL_SHM_REGISTER_FD_DATA,
+       !HAVE_STRUCT_TEE_IOCTL_SHM_REGISTER_DATA,
+       !HAVE_STRUCT_TEE_IOCTL_VERSION_DATA, !HAVE_STRUCT_TEE_IOCTL_PARAM,
+       !HAVE_STRUCT_TEE_IOCTL_INVOKE_ARG, !HAVE_STRUCT_TEE_IOCL_SUPP_RECV_ARG,
+       !HAVE_STRUCT_TEE_IOCL_SUPP_SEND_ARG,
+       !HAVE_STRUCT_TEE_IOCTL_OPEN_SESSION_ARG]: Remove ifdefs.
+       (struct tee_ioctl_buf_data): Change to...
+       (typedef struct_tee_ioctl_buf_data): ...this.
+       (struct tee_ioctl_cancel_arg): Change to...
+       (typedef struct_tee_ioctl_cancel_arg): ...this.
+       (struct tee_ioctl_close_session_arg): Change to...
+       (typedef struct_tee_ioctl_close_session_arg): ...this.
+       (struct tee_ioctl_shm_alloc_data): Change to...
+       (typedef struct_tee_ioctl_shm_alloc_data): ...this.
+       (struct tee_ioctl_shm_register_fd_data): Change to...
+       (typedef struct_tee_ioctl_shm_register_fd_data): ...this.
+       (struct tee_ioctl_shm_register_data): Change to...
+       (typedef struct_tee_ioctl_shm_register_data): ...this.
+       (struct tee_ioctl_version_data): Change to...
+       (typedef struct_tee_ioctl_version_data): ...this.
+       (struct tee_ioctl_param): Change to...
+       (typedef struct_tee_ioctl_param): ...this.
+       (struct tee_ioctl_invoke_arg): Change to...
+       (typedef struct_tee_ioctl_invoke_arg): ...this.  Change params field
+       type from struct tee_ioctl_param to struct_tee_ioctl_param.
+       (struct tee_iocl_supp_recv_arg): Change to...
+       (typedef struct_tee_iocl_supp_recv_arg): ...this.  Change params field
+       type from struct tee_ioctl_param to struct_tee_ioctl_param.
+       (struct tee_iocl_supp_send_arg): Change to...
+       (typedef struct_tee_iocl_supp_send_arg): ...this.  Change params field
+       type from struct tee_ioctl_param to struct_tee_ioctl_param.
+       (struct tee_ioctl_open_session_arg): Change to...
+       (typedef struct_tee_ioctl_open_session_arg): ...this.  Change params
+       field type from struct tee_ioctl_param to struct_tee_ioctl_param.
+       [TEE_IOCTL_PARAM_SIZE]: Move to tee.c.
+       * Makefile.am (libstrace_a_SOURCES): Remove tee.h.
+       * configure.ac (AC_CHECK_HEADERS([linux/tee.h])): Remove in favour of
+       auto-generated checks courtesy of types/tee.h.
+       * tee.c: Remove "tee.h" include.  Add "types/tee.h",
+       "xlat/tee_ioctl_cmds.h" (under XLAT_MACROS_ONLY definition),
+       "xlat/tee_ioctl_gen_caps.h", "xlat/tee_ioctl_impl_ids.h",
+       "xlat/tee_ioctl_login_types.h", "xlat/tee_ioctl_max_arg_size.h",
+       "xlat/tee_ioctl_origins.h", "xlat/tee_ioctl_optee_caps.h",
+       "xlat/tee_ioctl_param_attr_types.h", "xlat/tee_ioctl_shm_flags.h"
+       includes.
+       [TEE_IOCTL_PARAM_SIZE]: Move from tee.h.
+       (tee_print_buf, tee_fetch_buf_data): Change the buf argument type
+       from struct tee_ioctl_buf_data to struct_tee_ioctl_buf_data.
+       (tee_print_param_fn): Change the param variable type from
+       struct tee_ioctl_param to struct_tee_ioctl_param.
+       (tee_print_params): Change the param_buffer variable type from
+       struct tee_ioctl_param to struct_tee_ioctl_param.
+       (tee_version): Change the version variable type from
+       struct tee_ioctl_version_data to struct_tee_ioctl_version_data.
+       (tee_open_session): Change the buf_data variable type from
+       struct_tee ioctl_buf_data to struct_tee_ioctl_buf_data.  Change
+       the open_session variable type from struct tee_ioctl_open_session_arg
+       to struct_tee_ioctl_open_session_arg.
+       (tee_invoke): Change the buf_data variable type from
+       struct_tee ioctl_buf_data to struct_tee_ioctl_buf_data.  Change
+       the invoke variable type from struct tee_ioctl_invoke_arg to
+       struct_tee_ioctl_invoke_arg.
+       (tee_cancel): Change the cancel variable type from
+       struct tee_ioctl_cancel_arg to struct_tee_ioctl_cancel_arg.
+       (tee_close_session): Change the close_session variable type from
+       struct tee_ioctl_close_session_arg to
+       struct_tee_ioctl_close_session_arg.
+       (tee_suppl_recv): Change the buf_data variable type from
+       struct_tee ioctl_buf_data to struct_tee_ioctl_buf_data.  Change
+       the supp_recv variable type from struct tee_iocl_supp_recv_arg
+       to struct_tee_iocl_supp_recv_arg.
+       (tee_suppl_send): Change the buf_data variable type from
+       struct_tee ioctl_buf_data to struct_tee_ioctl_buf_data.  Change
+       the supp_send variable type from struct tee_iocl_supp_send_arg
+       to struct_tee_iocl_supp_send_arg.
+       (tee_shm_alloc): Change the shm_alloc variable type from
+       struct tee_ioctl_shm_alloc_data to struct_tee_ioctl_shm_alloc_data.
+       (tee_shm_register_fd): Change the shm_register_fd variable type from
+       struct tee_ioctl_shm_register_fd_data to
+       struct_tee_ioctl_shm_register_fd_data.
+       (tee_shm_register): Change the shm_register variable type from
+       struct tee_ioctl_shm_register_data to
+       struct_tee_ioctl_shm_register_data.
+       * tests/ioctl_tee.c: Put the contents under HAVE_LINUX_TEE_H ifdef.
+       Remove "tee.h" include.  Add <linux/tee.h> include.
+       [!TEE_IOCTL_PARAM_ATTR_META] (TEE_IOCTL_PARAM_ATTR_META): New
+       definition.
+       [!HAVE_STRUCT_TEE_IOCTL_SHM_REGISTER_FD_DATA] (struct
+       tee_ioctl_shm_register_fd_data): New type definition.
+       [!HAVE_STRUCT_TEE_IOCTL_SHM_REGISTER_DATA] (struct
+       tee_ioctl_shm_register_data): Likewise.
+       [!TEE_IOC_SHM_REGISTER_FD] (TEE_IOC_SHM_REGISTER_FD): New definition.
+       [!TEE_IOC_SHM_REGISTER] (TEE_IOC_SHM_REGISTER): Likewise.
+       * xlat/tee_ioctl_cmds.in (TEE_IOC_VERSION): Change type in the _IOR
+       macro argument from struct tee_ioctl_version_data to
+       struct_tee_ioctl_version_data.
+       (TEE_IOC_SHM_ALLOC): Change the type in the _IOWR macro argument from
+       struct tee_ioctl_shm_alloc_data to struct_tee_ioctl_shm_alloc_data.
+       (TEE_IOC_OPEN_SESSION): Change the type in the _IOR macro argument from
+       struct tee_ioctl_buf_data to struct_tee_ioctl_buf_data.
+       (TEE_IOC_INVOKE): Change the type in the _IOR macro argument from
+       struct tee_ioctl_buf_data to struct_tee_ioctl_buf_data.
+       (TEE_IOC_CANCEL): Change the type in the _IOR macro argument from
+       struct tee_ioctl_cancel_arg to struct_tee_ioctl_cancel_arg.
+       (TEE_IOC_CLOSE_SESSION): Change the type in the _IOR macro argument
+       from struct tee_ioctl_close_session_arg
+       to struct_tee_ioctl_close_session_arg.
+       (TEE_IOC_SUPPL_RECV): Change the type in the _IOR macro argument
+       from struct tee_ioctl_buf_data to struct_tee_ioctl_buf_data.
+       (TEE_IOC_SUPPL_SEND): Change the type in the _IOR macro argument
+       from struct tee_ioctl_buf_data to struct_tee_ioctl_buf_data.
+       (TEE_IOC_SHM_REGISTER_FD): Change the type in the _IOWR macro argument
+       from struct tee_ioctl_shm_register_fd_data
+       to struct_tee_ioctl_shm_register_fd_data.
+       (TEE_IOC_SHM_REGISTER): Change the type in the _IOWR macro argument
+       from struct tee_ioctl_shm_register_data
+       to struct_tee_ioctl_shm_register_data.
+
+2020-09-23  Elvira Khabirova  <lineprinter0@gmail.com>
+
+       Implement decoding of TEE_* ioctls.
+       * tee.c: New file.
+       * tee.h: Likewise.
+       * Makefile.am (libstrace_a_SOURCES): Add them.
+       * configure.ac (AC_CHECK_HEADERS): Add linux/tee.h.
+       * defs.h (DECL_IOCTL): Add tee.
+       * ioctl.c (ioctl_decode): Add 0xa4 (tee) case.
+       * xlat/tee_ioctl_cmds.in: New file.
+       * xlat/tee_ioctl_gen_caps.in: Likewise.
+       * xlat/tee_ioctl_impl_ids.in: Likewise.
+       * xlat/tee_ioctl_login_types.in: Likewise.
+       * xlat/tee_ioctl_max_arg_size.in: Likewise.
+       * xlat/tee_ioctl_optee_caps.in: Likewise.
+       * xlat/tee_ioctl_origins.in: Likewise.
+       * xlat/tee_ioctl_param_attr_types.in: Likewise.
+       * xlat/tee_ioctl_shm_flags.in: Likewise.
+       * tests/gen_tests.in (ioctl_tee): New entry.
+       * tests/ioctl_tee.c: New file.
+       * tests/.gitignore: Add ioctl_tee.
+       * tests/pure_executables.list: Likewise.
+       * NEWS: Mention the change.
+
+2020-09-20  Dmitry V. Levin  <ldv@altlinux.org>
+
+       xlat: update KVM_* constants.
+       * xlat/kvm_cap.in (KVM_CAP_STEAL_TIME): New constant introduced by Linux
+       kernel commit v5.9-rc5~6^2~16^2~3.
+
+2020-09-19  Dmitry V. Levin  <ldv@altlinux.org>
+
+       semctl: decode struct arguments of IPC_* and SEM_* commands.
+       * ipc_semctl.c: New file.
+       * Makefile.am (libstrace_a_SOURCES): Add it.
+       * ipc_defs.h (NAME_OF_STRUCT_SEMID_DS): New macro.
+       * ipc_sem.c: Stop including "xlat/semctl_flags.h".
+       (SYS_FUNC(semctl)): Remove.
+       * tests/ipc_sem.c (str_ipc_info): New macro.
+       (print_semid_ds, print_sem_info): New functions.
+       (main): Use them to check decoding IPC_INFO, SEM_INFO, IPC_SET,
+       IPC_STAT, SEM_STAT, and SEM_STAT_ANY semctl syscall commands.
+       * NEWS: Mention this change.
+
+2020-09-19  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: disable shmctl IPC_STAT test with a bogus address on glibc >= 2.32
+       Starting with commit glibc-2.32~80, on every 32-bit architecture where
+       32-bit time_t support is enabled, glibc tries to retrieve the data
+       provided in the third argument of shmctl call.  This results to
+       segfaults inside glibc when shmctl is called with a bogus address.
+
+       * tests/ipc_shm.c [GLIBC_PREREQ_GE(2, 32) && __TIMESIZE != 64]
+       (TEST_SHMCTL_BOGUS_ADDR): Define to 0.
+       (main): Conditionalize on TEST_SHMCTL_BOGUS_ADDR the shmctl IPC_STAT
+       invocation with a bogus address.
+
+2020-09-19  Dmitry V. Levin  <ldv@altlinux.org>
+
+       shmctl: decode some commands on entering syscall.
+       * ipc_shmctl.c (SYS_FUNC(shmctl)): Handle all commands except IPC_INFO,
+       IPC_STAT, SHM_INFO, SHM_STAT, and SHM_STAT_ANY on entering syscall.
+
+       shmctl: decode struct shminfo argument of IPC_INFO command.
+       * ipc_defs.h (NAME_OF_STRUCT_SHMINFO): New macro.
+       * ipc_shmctl.c (struct_shm_ipc_info_t): New typedef.  Mpersify it.
+       (print_ipc_info): New function.
+       (SYS_FUNC(shmctl)): Use it to decode struct shminfo argument
+       of IPC_INFO command.
+       * tests/ipc_shm.c (str_ipc_info): New macro.
+       (print_ipc_info): New function.
+       (main): Use it to check decoding of IPC_INFO command.
+       * NEWS: Mention this change.
+
+       shmctl: decode struct shm_info argument of SHM_INFO command.
+       * ipc_shmctl.c (struct_shm_info_t): New typedef.  Mpersify it.
+       (print_shm_info): New function.
+       (SYS_FUNC(shmctl)): Use it to decode struct shm_info argument
+       of SHM_INFO command.
+       * tests/ipc_shm.c (print_shm_info): New function.
+       (main): Use it to check decoding of SHM_INFO command.
+       * NEWS: Mention this change.
+
+       shmctl: fix printing of struct shmid_ds argument of IPC_SET command.
+       * ipc_shmctl.c (print_shmid_ds) <cmd == IPC_SET>: Do not print
+       misleading ellipsis.
+       * tests/ipc_shm.c (main): Update expected output.
+
+       shmctl: decode struct shmid_ds argument of SHM_STAT and SHM_STAT_ANY commands
+       * ipc_shmctl.c (print_shmid_ds): Handle SHM_STAT and SHM_STAT_ANY.
+       * tests/ipc_shm.c (print_shmid_ds): New function.
+       (main): Use it to update expected output.
+       * NEWS: Mention this change.
+
+       shmctl: consistently use macros from print_fields.h.
+       * ipc_shmctl.c (key): Define.
+       (print_shmid_ds): Use PRINT_FIELD_U instead of tprintf.
+
+       msgctl: decode some commands on entering syscall.
+       * ipc_msgctl.c (SYS_FUNC(msgctl)): Handle all commands except IPC_INFO,
+       IPC_STAT, MSG_INFO, MSG_STAT, and MSG_STAT_ANY on entering syscall.
+
+       msgctl: decode struct msginfo argument of IPC_INFO and MSG_INFO commands
+       * ipc_msgctl.c (print_msginfo): New function.
+       (SYS_FUNC(msgctl)): Use it to decode struct msginfo argument of IPC_INFO
+       and MSG_INFO commands.
+       * tests/ipc_msg.c (print_msginfo): New function.
+       (main): Use it to check decoding of IPC_INFO and MSG_INFO commands.
+       * NEWS: Mention this change.
+
+       msgctl: print struct msqid_ds.msg_qbytes of IPC_SET command.
+       * ipc_msgctl.c (print_msqid_ds) <cmd == IPC_SET>: Print
+       struct msqid_ds.msg_qbytes.
+       * tests/ipc_msg.c (main): Update expected output.
+
+       msgctl: decode struct msqid_ds argument of MSG_STAT and MSG_STAT_ANY commands
+       * ipc_msgctl.c (print_msqid_ds): Handle MSG_STAT and MSG_STAT_ANY.
+       * tests/ipc_msg.c (print_msqid_ds): New function.
+       (main): Use it to update expected output.
+       * NEWS: Mention this change.
+
+       msgctl: consistently use macros from print_fields.h.
+       * ipc_msgctl.c (key): Define.
+       (print_msqid_ds): Use PRINT_FIELD_U instead of tprintf.
+
+2020-09-18  Dmitry V. Levin  <ldv@altlinux.org>
+
+       ci: add a git status check.
+       * ci/run-build-and-tests.sh: Check that "git status" does not report
+       any differences or untracked files.
+       [$CHECK == coverage]: Remove ./codecov.bash after use.
+       * .gitignore: Add "/travis_wait_*.log".
+
+       .gitignore: ignore files generated by gcov.
+       * .gitignore: Add *.gcov.
+
+2020-09-18  Elvira Khabirova  <lineprinter0@gmail.com>
+
+       xlat: fix file descriptor closing typo.
+       * xlat/gen.sh (gen_header): Replace 3>- with 3>&-.
+
+       Fixes: v5.7~28 "xlat: generate m4 checks for enumerations"
+
+2020-09-14  Elvira Khabirova  <lineprinter0@gmail.com>
+
+       .gitignore: add missing files that should be ignored.
+       ar-lib is an autotools helper script.
+       tags, TAGS, cscope.* and ncscope.* are files generated by ctags and cscope,
+       source code analysers and navigation tools.
+
+       * .gitignore: Add /ar-lib, /cscope.*, /ncscope.*, /tags and /TAGS.
+
+2020-09-12  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests/ipc_msg.c: disable TEST_MSGCTL_BOGUS_ADDR on glibc >= 2.32.
+       Starting with commit glibc-2.32~83, on every 32-bit architecture where
+       32-bit time_t support is enabled, glibc tries to retrieve the data
+       provided in the third argument of msgctl call.  This results to
+       segfaults inside glibc if TEST_MSGCTL_BOGUS_ADDR is enabled.
+
+       * tests/ipc_msg.c [GLIBC_PREREQ_GE(2, 32) && __TIMESIZE != 64]
+       (TEST_MSGCTL_BOGUS_ADDR): Define to 0.
+
+       Reported-by: Ruinland ChuanTzu Tsai <ruinland@andestech.com>
+
+2020-09-12  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Introduce GLIBC_PREREQ_GE and GLIBC_PREREQ_LT macros.
+       * gcc_compat.h (GLIBC_PREREQ_GE, GLIBC_PREREQ_LT): New macros.
+       * tests/ipc_msg.c: Use GLIBC_PREREQ_LT instead of manual checking
+       for __GLIBC__ and __GLIBC_MINOR__.
+       * tests/readahead.c: Likewise.
+
+2020-09-06  Dmitry V. Levin  <ldv@altlinux.org>
+
+       ci: re-enable testing with the latest mainline kernel headers.
+       There should be no issues with v5.9-rc4.
+       This reverts commit 1c84f0b04d0fd8d37afd29a4c959fb8c863bcfdb.
+
+       * .github/workflows/ci.yml (env): Remove KBRANCH.
+       * .gitlab-ci.yml (variables): Likewise.
+       * .travis.yml (env:global): Likewise.
+
+2020-09-06  Dmitry V. Levin  <ldv@altlinux.org>
+
+       types/v4l2.h: update definition of struct_v4l2_create_buffers.
+       * types/v4l2.h (struct_v4l2_create_buffers): Add "flags" field and
+       update "reserved" field to sync with changes introduced by Linux kernel
+       commit v5.9-rc1~94^2~295.
+
+       xlat: update V4L2_FMT_FLAG_* constants.
+       * xlat/v4l2_format_description_flags.in
+       (V4L2_FMT_FLAG_ENC_CAP_FRAME_INTERVAL): New constant introduced by Linux
+       kernel commit v5.9-rc1~94^2~283.
+       * NEWS: Mention this change.
+       * tests/ioctl_v4l2-success.c (fmtdesc_flags): Update expected output.
+
+       xlat: update RTPROT_* constants.
+       * xlat/routing_protocols.in (RTPROT_KEEPALIVED): New constant introduced
+       by Linux kernel commit v5.9-rc1~133^2~449.
+       * NEWS: Mention this change.
+
+       xlat: update PTP_PEROUT_* constants.
+       * xlat/rtnl_neigh_attrs.in (PTP_PEROUT_DUTY_CYCLE): New constant
+       introduced by Linux kernel commit v5.9-rc1~133^2~199^2~2.
+       (PTP_PEROUT_PHASE): New constant introduced by Linux kernel commit
+       v5.9-rc1~133^2~199^2~1.
+       * NEWS: Mention this change.
+
+       xlat: update NDA_* constants.
+       * xlat/rtnl_neigh_attrs.in (NDA_FDB_EXT_ATTRS): New constant introduced
+       by Linux kernel commit v5.9-rc1~133^2~430^2~2.
+       * NEWS: Mention this change.
+
+       xlat: update KVM_* constants.
+       * xlat/kvm_cap.in (KVM_CAP_LAST_CPU): New constant introduced by Linux
+       kernel commit v5.9-rc1~121^2~108.
+       (KVM_CAP_SMALLER_MAXPHYADDR): New constant introduced by Linux kernel
+       commit v5.9-rc1~121^2~15.
+       (KVM_CAP_S390_DIAG318): New constant introduced by Linux kernel commit
+       v5.9-rc1~121^2^2.
+       * NEWS: Mention this change.
+
+       xlat: update IORING_FEAT_* constants.
+       * xlat/uring_setup_features.in (IORING_FEAT_POLL_32BITS): New constant
+       introduced by Linux kernel commit v5.9-rc1~212^2~116.
+       * NEWS: Mention this change.
+
+       xlat: update INET_DIAG_REQ_* constants.
+       * linux/inet_diag.h (INET_DIAG_REQ_SK_BPF_STORAGES): New constant
+       introduced by Linux kernel commit v5.7-rc1~146^2~287^2^2.
+       (INET_DIAG_REQ_PROTOCOL): New constant introduced by Linux kernel commit
+       v5.9-rc1~133^2~292^2~3.
+       * xlat/inet_diag_req_attrs.in: Likewise.
+       * NEWS: Mention this change.
+
+       xlat: update IFLA_* constants.
+       * xlat/rtnl_link_attrs.in (IFLA_PROTO_DOWN_REASON): New constant
+       introduced by Linux kernel commit v5.9-rc1~133^2~77.
+       * NEWS: Mention this change.
+
+       xlat: update IPV6_* constants.
+       * xlat/sock_ip_options.in (IPV6_RECVERR_RFC4884): New constant
+       introduced by Linux kernel commit v5.9-rc1~133^2~130^2.
+       * NEWS: Mention this change.
+
+       xlat: update IP_* constants.
+       * xlat/sock_ip_options.in (IP_RECVERR_RFC4884): New constant introduced
+       by Linux kernel commit v5.9-rc1~133^2~200.
+       * NEWS: Mention this change.
+
+       xlat: update FAN_* constants.
+       * xlat/fan_init_flags.in (FAN_REPORT_DIR_FID): New constant introduced
+       by Linux kernel commit v5.9-rc1~110^2~6.
+       (FAN_REPORT_NAME): New constant introduced by Linux kernel commit
+       v5.9-rc1~110^2~4.
+       * NEWS: Mention this change.
+       * tests/fanotify_init.c (main): Update expected output.
+
+       xlat: update CAP_* constants.
+       * caps1.h (CAP_CHECKPOINT_RESTORE): New constant introduced
+       by Linux kernel commit v5.9-rc1~161^2~6.
+       * xlat/cap.in (CAP_CHECKPOINT_RESTORE): Likewise.
+       * xlat/cap_mask1.in (1<<CAP_CHECKPOINT_RESTORE): Likewise.
+       * NEWS: Mention this change.
+       * tests/caps.awk: Update expected output.
+       * tests/caps-abbrev.awk: Likewise.
+
+       xlat: update BPF_* constants.
+       * xlat/bpf_attach_type.in (BPF_CGROUP_INET_SOCK_RELEASE): New constant
+       introduced by Linux kernel commit v5.9-rc1~133^2~259^2~18.
+       (BPF_XDP_CPUMAP): New constant introduced by Linux kernel commit
+       v5.9-rc1~133^2~164^2~22.
+       (BPF_SK_LOOKUP): New constant introduced by Linux kernel commit
+       v5.9-rc1~133^2~164^2~14^2~13.
+       (BPF_XDP): New constant introduced by Linux kernel commit
+       v5.9-rc1~133^2~23^2~28^2~5.
+       * xlat/bpf_commands.in (BPF_LINK_DETACH): New constant introduced
+       by Linux kernel commit v5.9-rc1~133^2~23^2~6^2~4.
+       * xlat/bpf_prog_types.in (BPF_PROG_TYPE_SK_LOOKUP): New constant
+       introduced by Linux kernel commit v5.9-rc1~133^2~164^2~14^2~13.
+       * NEWS: Mention this change.
+       * tests/bpf.c (BPF_PROG_LOAD_checks, BPF_PROG_QUERY_checks): Update.
+       * tests/kernel_version.c (print_bpf_attr, main): Likewise.
+
+2020-09-06  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Implement decoding of close_range syscall.
+       Introduced by Linux kernel commit v5.9-rc1~160.
+
+       * close_range.c: New file.
+       * Makefile.am (libstrace_a_SOURCES): Add it.
+       * configure.ac (AC_CHECK_HEADERS): Add linux/close_range.h.
+       * xlat/close_range_flags.in: New file.
+       * pathtrace.c (pathtrace_match_set): Handle SEN_close_range.
+       * linux/syscallent-common.h [BASE_NR + 436]: Wire up close_range.
+       * NEWS: Mention this change.
+       * tests/close_range.c: New file.
+       * tests/close_range-P.c: Likewise.
+       * tests/close_range-y.c: Likewise.
+       * tests/close_range-yy.c: Likewise.
+       * tests/gen_tests.in (close_range. close_range-P, close_range-y,
+       close_range-yy): New entries.
+       * tests/pure_executables.list: Add close_range, close_range-P,
+       close_range-y, and close_range-yy.
+       * tests/.gitignore: Likewise.
+
+2020-09-03  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       tests: reduce looping_threads iteration duration to 1/16th of TIMEOUT_DURATION
+       * tests/looping_threads.test (timeout_8): Rename to...
+       (timeout_16): ...this, reduce value by half.
+       Use $timeout_16 instead of $timeout_8.
+
+       Complements: v5.7~4 "tests: increase default TIMEOUT_DURATION"
+
+2020-09-03  Eugene Syromyatnikov  <evgsyr@gmail.com>
+           Tom Stellard  <tstellar@redhat.com>
+
+       strace.spec.in: use %make_build/%make_install macros.
+       As suggested in [1][2].
+
+       [1] https://src.fedoraproject.org/fork/tstellar/rpms/strace/c/c7358b588cb5f2893dec3b7daa84e63d9389773a.patch
+       [2] https://fedoraproject.org/wiki/Changes/UseMakeBuildInstallMacro
+
+       * strace.spec.in [?!__make] (%__make): New definition.
+       [?!__install] (%__install): Likewise.
+       [?!make_build] (%make_build): Likewise.
+       [?!make_install] (%make_install): Likewise.
+       (%build, %check): Use %make_build.
+       (%install): Use %make_install.
+
+2020-09-03  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       mpers_test.sh: check proper handling of sized integer types.
+       The commit v5.6~62 ("v4l2: always decode VIDIOC_*_EXT_CTRLS ioctl
+       commands") unraveled a possibility of buggy handling of sized integer
+       types in some libc implementations[1][2].  Add checks for these types
+       to mpers_test.sh to catch such issues early.
+
+       [1] https://strace.io/logs/strace/2020-04-22#17477;
+       [2] https://lists.strace.io/pipermail/strace-devel/2020-August/010213.html
+
+       * mpers_test.sh: Add checks for (u)int{8,16,32,64}_t types.
+
+       Complements: v5.6~62 "v4l2: always decode VIDIOC_*_EXT_CTRLS ioctl commands"
+
+2020-08-25  Ákos Uzonyi  <uzonyi.akos@gmail.com>
+
+       Add tests for PID namespace translation.
+       * Makefile.am (CODE_COVERAGE_IGNORE_PATTERN): Add test directories.
+       * tests/.gitignore: Add new test executables.
+       * tests/Makefile.am (check_PROGRAMS): Add new test executables.
+       (DECODER_TESTS) Add new test files.
+       (libtests_a_SOURCES): Add trie_for_tests.c, xmalloc_for_tests.c.
+       * tests/gen_tests.in: Add new tests.
+       * tests/trie_test.c: New file.
+       * tests/trie_for_tests.c: New file.
+       * tests/xmalloc_for_tests.c: New file.
+       * tests/pidns-cache.c: New file.
+       * tests/pidns-cache.test: New file.
+       * tests/fcntl--pidns-translation.c: New file.
+       * tests/fcntl64--pidns-translation.c: New file.
+       * tests/fork--pidns-translation.awk: New file.
+       * tests/fork--pidns-translation.c: New file.
+       * tests/fork--pidns-translation.test: New file.
+       * tests/getpgrp--pidns-translation.c: New file.
+       * tests/getpid--pidns-translation.c: New file.
+       * tests/getsid--pidns-translation.c: New file.
+       * tests/gettid--pidns-translation.c: New file.
+       * tests/gettid--pidns-translation.test: New file.
+       * tests/ioctl_block--pidns-translation.c: New file.
+       * tests/ioctl_block--pidns-translation.test: New file.
+       * tests/ioprio--pidns-translation.c: New file.
+       * tests/kill--pidns-translation.c: New file.
+       * tests/migrate_pages--pidns-translation.c: New file.
+       * tests/move_pages--pidns-translation.c: New file.
+       * tests/net-sockaddr--pidns-translation.c: New file.
+       * tests/netlink_audit--pidns-translation.c: New file.
+       * tests/netlink_audit--pidns-translation.test: New file.
+       * tests/pidfd_open--pidns-translation.c: New file.
+       * tests/pidfd_send_signal--pidns-translation.c: New file.
+       * tests/prlimit64--pidns-translation.c: New file.
+       * tests/process_vm_readv--pidns-translation.c: New file.
+       * tests/process_vm_writev--pidns-translation.c: New file.
+       * tests/rt_sigqueueinfo--pidns-translation.c: New file.
+       * tests/rt_tgsigqueueinfo--pidns-translation.c: New file.
+       * tests/sched_xetaffinity--pidns-translation.c: New file.
+       * tests/sched_xetattr--pidns-translation.c: New file.
+       * tests/sched_xetparam--pidns-translation.c: New file.
+       * tests/sched_xetscheduler--pidns-translation.c: New file.
+       * tests/signal_receive--pidns-translation.c: New file.
+       * tests/so_peercred--pidns-translation.c: New file.
+       * tests/tkill--pidns-translation.c: New file.
+       * tests/tgkill--pidns-translation.c: New file.
+       * tests/xet_robust_list--pidns-translation.c: New file.
+       * tests/xetpgid--pidns-translation.c: New file.
+       * tests/xetpriority--pidns-translation.c: New file.
+       * tests/fcntl-common.c: Print PID translation string after PIDs.
+       * tests/fcntl.c: Likewise.
+       * tests/fcntl64.c: Likewise.
+       * tests/getpgrp.c: Likewise.
+       * tests/getpid.c: Likewise.
+       * tests/getsid.c: Likewise.
+       * tests/gettid.c: Likewise.
+       * tests/ioctl_block.c: Likewise.
+       * tests/ioprio.c: Likewise.
+       * tests/kcmp.c: Likewise.
+       * tests/kill.c: Likewise.
+       * tests/migrate_pages.c: Likewise.
+       * tests/move_pages.c: Likewise.
+       * tests/net-sockaddr.c: Likewise.
+       * tests/netlink_audit.c: Likewise.
+       * tests/pidfd_open.c: Likewise.
+       * tests/pidfd_send_signal.c: Likewise.
+       * tests/prlimit64.c: Likewise.
+       * tests/process_vm_readv_writev.c: Likewise.
+       * tests/rt_sigqueueinfo.c: Likewise.
+       * tests/rt_tgsigqueueinfo.c: Likewise.
+       * tests/sched_xetaffinity.c: Likewise.
+       * tests/sched_xetattr.c: Likewise.
+       * tests/sched_xetparam.c: Likewise.
+       * tests/sched_xetscheduler.c: Likewise.
+       * tests/signal_receive.c: Likewise.
+       * tests/so_peercred.c: Likewise.
+       * tests/tgkill.c: Likewise.
+       * tests/tkill.c: Likewise.
+       * tests/xet_robust_list.c: Likewise.
+       * tests/xetpgid.c: Likewise.
+       * tests/xetpriority.c: Likewise.
+
+       Implement testing framework for pidns.
+       * tests/pidns.c: New file.
+       * tests/pidns.h: New file.
+       * tests/Makefile.am (libtests_a_SOURCES): Add pidns.c, pidns.h.
+       * tests/init.sh (test_pidns, test_pidns_run_strace): New functions.
+
+       Use get_proc_pid for /proc paths.
+       * mmap_cache.c (mmap_cache_rebuild_if_invalid): Use proc pid instead of
+       tcp->pid for /proc path.
+       * util.c (getfdproto): Likewise.
+       (pidfd_get_pid): Likewise.
+       * pathtrace.c (getfdpath_pid): Likewise.
+       * strace.c (attach_tcb): Likewise.
+
+       Use printpid in decoders.
+       * getpid.c: New file.
+       * Makefile.am (libstrace_a_SOURCES): Add it.
+       * linux/dummy.h (sys_getpid, sys_getppid, sys_gettid,
+       sys_setpgid, sys_setpgrp): Remove.
+       * util.c (printfd_pid_tracee_ns): Implement using translate_pid.
+       * defs.h (printnum_pid): New function definition.
+       (printfd_pid_tracee_ns): Update documentation
+       * util.c: (printnum_pid): New function.
+       * print_fields.h (PRINT_FIELD_TID): New macro.
+       (PRINT_FIELD_TGID): Likewise.
+       (PRINT_FIELD_PGID): Likewise.
+       (PRINT_FIELD_SID): Likewise.
+       * affinity.c: Print PIDs with printpid.
+       * block.c: Likewise.
+       * bpf.c: Likewise.
+       * capability.c: Likewise.
+       * clone.c: Likewise.
+       * fcntl.c: Likewise.
+       * get_robust_list.c: Likewise.
+       * ioprio.c: Likewise.
+       * kcmp.c: Likewise.
+       * msghdr.c: Likewise.
+       * net.c: Likewise.
+       * netlink.c: Likewise.
+       * numa.c: Likewise.
+       * pidfd_open.c: Likewise.
+       * printsiginfo.c: Likewise.
+       * process.c: Likewise.
+       * process_vm.c: Likewise.
+       * resource.c: Likewise.
+       * sched.c: Likewise.
+       * signal.c: Likewise.
+       * sockaddr.c: Likewise.
+       * wait.c: Likewise.
+       * kcmp.c (SYS_FUNC(kcmp)): Fix KCMP_FILE pid arguments.
+       * tests/kcmp.c (printpidfd): Print path if VERBOSE_FD.
+       (main): Use our real pid if real fds are used.
+
+2020-08-25  Ákos Uzonyi  <uzonyi.akos@gmail.com>
+
+       PID namespace translation support.
+       * defs.h (pidns_translation): New variable.
+       (tcb): Add pid_ns field.
+       (RVAL_MASK): Change value from 013 to 017.
+       (RVAL_TID, RVAL_SID, RVAL_TGID, RVAL_PGID): New definitions.
+       (pid_type): New enum.
+       (pidns_init, translate_pid, get_proc_pid, printpid, printpid_tgid_pgid):
+       New function declarations.
+       * largefile_wrappers.h (fstat_fd): New macro.
+       * pidns.c: New file.
+       * trie.c: New file.
+       * trie.h: New file.
+       * Makefile.am (libstrace_a_SOURCES): Add trie.c, trie.h, pidns.c.
+       * strace.c (pidns_translation): New variable.
+       (init): Add --pidns-translation option.
+       * syscall.c (syscall_exiting_trace): Handle RVAL_* return values.
+       * NEWS: Mention this.
+       * strace.1.in: Add description for new option.
+
+       Co-Authored-by: Eugene Syromyatnikov <evgsyr@gmail.com>
+
+2020-08-25  Ákos Uzonyi  <uzonyi.akos@gmail.com>
+
+       tests/mknod.c: add workaround for ppc bug in travis.
+       On ppc travis builds syscall(mknod) sometimes does not fail with EEXISTS
+       as expected, but returns successfully. This commit uses sprintrc for
+       errno printing, which handles successful return values too.
+
+       * tests/mknod.c (main): Use sprintrc for printing errno.
+
+2020-08-21  Elvira Khabirova  <lineprinter0@gmail.com>
+
+       tests: check -n/--syscall-number option.
+       * tests/strace-n.c: New file.
+       * tests/gen_tests.in (strace-n): New entry.
+       * tests/pure_executables.list: Add strace-n.
+       * tests/.gitignore: Likewise.
+
+       strace: add an option for printing syscall numbers.
+       * print_syscall_number.c: New file.
+       * Makefile.am (libstrace_a_SOURCES): Add it.
+       * defs.h (struct tcb): Add true_scno field.
+       (print_syscall_number): New function declaration.
+       * strace.c: Add -n/--syscall-number option.
+       (printleader): Call print_syscall_number.
+       * syscall.c (get_scno): Assign tcp->true_scno.
+       * tests/options-syntax.test: Check with -c/--summary-only.
+       * strace.1.in: Document new option.
+       * NEWS: Mention the new option.
+
+2020-08-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 5.8-1.
+       * strace.spec.in: Likewise.
+
+       Prepare for 5.8 release.
+       * NEWS: Update for 5.8 release.
+
+2020-08-04  Dmitry V. Levin  <ldv@altlinux.org>
+
+       ci: use kernel headers from Linux kernel v5.8.
+       When Linux kernel merge window opens, changes of all sorts start to pour
+       down, breaking UAPI in various ways.  This does not work for strace,
+       we need a stable UAPI.
+
+       * .github/workflows/ci.yml (env): Add KBRANCH.
+       * .gitlab-ci.yml (variables): Likewise.
+       * .travis.yml (env:global): Likewise.
+
+2020-08-03  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Update copyright headers.
+       Headers updated automatically using maint/update_copyright_years.sh
+       script.
+
+2020-08-01  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: check decoding of tgkill syscall.
+       * tests/tgkill.c: New file.
+       * tests/gen_tests.in (tgkill): New entry.
+       * tests/pure_executables.list: Add tgkill.
+       * tests/.gitignore: Likewise.
+
+       tests: check decoding of tkill syscall.
+       * tests/tkill.c: New file.
+       * tests/gen_tests.in (tkill): New entry.
+       * tests/pure_executables.list: Add tkill.
+       * tests/.gitignore: Likewise.
+
+2020-08-01  Ákos Uzonyi  <uzonyi.akos@gmail.com>
+
+       Introduce SYS_FUNC(tkill)
+       This is going to be needed to implement pidns support
+       in tkill syscall decoder.
+
+       syscallent*.h files are updated automatically by:
+         git grep -l 'SEN(kill).*"tkill"' |
+         xargs sed -i '/"tkill"/ s/SEN(kill)/SEN(tkill)/'
+
+       * signal.c (SYS_FUNC(tkill)): New syscall decoder.
+       * linux/32/syscallent.h: Use SEN(tkill) for "tkill" syscall.
+       * linux/64/syscallent.h: Likewise.
+       * linux/alpha/syscallent.h: Likewise.
+       * linux/arm/syscallent.h: Likewise.
+       * linux/avr32/syscallent.h: Likewise.
+       * linux/bfin/syscallent.h: Likewise.
+       * linux/hppa/syscallent.h: Likewise.
+       * linux/i386/syscallent.h: Likewise.
+       * linux/ia64/syscallent.h: Likewise.
+       * linux/m68k/syscallent.h: Likewise.
+       * linux/microblaze/syscallent.h: Likewise.
+       * linux/mips/syscallent-n32.h: Likewise.
+       * linux/mips/syscallent-n64.h: Likewise.
+       * linux/mips/syscallent-o32.h: Likewise.
+       * linux/powerpc/syscallent.h: Likewise.
+       * linux/powerpc64/syscallent.h: Likewise.
+       * linux/s390/syscallent.h: Likewise.
+       * linux/s390x/syscallent.h: Likewise.
+       * linux/sh/syscallent.h: Likewise.
+       * linux/sh64/syscallent.h: Likewise.
+       * linux/sparc/syscallent.h: Likewise.
+       * linux/sparc64/syscallent.h: Likewise.
+       * linux/x32/syscallent.h: Likewise.
+       * linux/x86_64/syscallent.h: Likewise.
+       * linux/xtensa/syscallent.h: Likewise.
+
+2020-08-01  Ákos Uzonyi  <uzonyi.akos@gmail.com>
+
+       Add "struct tcb *" parameters to various functions.
+       This is going to be needed to implement pidns support.
+
+       * defs.h (print_sockaddr): Add a "struct tcb *" parameter.
+       * printsiginfo.h (printsiginfo): Likewise.
+       * fcntl.c (print_struct_flock64): Likewise.  All callers updated.
+       * print_fields.h (PRINT_FIELD_SOCKADDR): Likewise.   All callers updated.
+       * printsiginfo.c (printsigsource, print_si_info, printsiginfo): Likewise.
+       All callers updated.
+       * sockaddr.c (print_sockaddr_data_un, print_sockaddr_data_in,
+       print_sockaddr_data_in6, print_sockaddr_data_ax25,
+       print_sockaddr_data_ipx, print_sockaddr_data_x25,
+       print_sockaddr_data_nl, print_sockaddr_data_ll,
+       print_sockaddr_data_bt, sockaddr_printer, print_sockaddr): Likewise.
+       All callers updated.
+
+2020-07-30  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Use tprints instead of tprintf in a few more places.
+       * bpf.c (BPF_PROG_LOAD, BPF_OBJ_PIN, BPF_OBJ_GET_INFO_BY_FD,
+       BPF_RAW_TRACEPOINT_OPEN, BPF_TASK_FD_QUERY, BPF_MAP_LOOKUP_BATCH,
+       BPF_MAP_UPDATE_BATCH, BPF_MAP_DELETE_BATCH): Replace tprintf
+       with tprints for printing strings without format specifiers.
+       * btrfs.c (btrfs_ioctl): Likewise.
+       * ioctl.c (evdev_decode_number): Likewise.
+       * perf_ioctl.c (perf_ioctl): Likewise.
+       * rtnl_addr.c (decode_ifa_cacheinfo): Likewise.
+       * v4l2.c (print_v4l2_capability, print_v4l2_requestbuffers,
+       print_v4l2_streamparm): Likewise.
+
+2020-07-24  Janosch Frank  <frankja@linux.ibm.com>
+
+       s390x: sthyi: Fix section size requirement and error.
+       Some old z/VM instances report only 40 bytes for the partition
+       section, as they don't report the last three struct members.
+
+       Let's lower the size check of that section to 40 to accommodate them.
+
+       Also we expect a section to be at least x bytes, so we should make
+       that clear in the error message.
+
+       Reviewed-by: Eugene Syromyatnikov <evgsyr@gmail.com>
+
+2020-07-21  Ákos Uzonyi  <uzonyi.akos@gmail.com>
+
+       Remove tcb parameter of read_int_from_file.
+       * defs.h (read_int_from_file): Remove tcb parameter.
+       * util.c (read_int_from_file): Likewise.
+       * msghdr.c (get_optmem_max): Remove tcb parameter of read_int_from_file.
+
+2020-07-18  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Consistently print process ids as signed integers.
+       * block.c (block_ioctl): Print struct_blk_user_trace_setup.pid using
+       PRINT_FIELD_D instead of PRINT_FIELD_U.
+       * bpf.c (BPF_TASK_FD_QUERY): Print task_fd_query.pid using PRINT_FIELD_D
+       instead of PRINT_FIELD_U.
+       * ipc_msgctl.c (print_msqid_ds): Print msqid_ds.msg_lspid
+       and msqid_ds.msg_lrpid using PRINT_FIELD_D.
+       * ipc_shmctl.c (print_shmid_ds): Print shmid_ds.shm_cpid and shm_lpid
+       using PRINT_FIELD_D.
+       * msghdr.c (print_scm_creds): Print ucred.pid using PRINT_FIELD_D
+       instead of PRINT_FIELD_U.
+       * netlink.c (print_nlmsghdr): Print nlmsghdr.nlmsg_pid using %d format
+       instead of %u.
+       * tests/bpf.c (BPF_TASK_FD_QUERY_checks): Update expected output.
+       * tests/ioctl_block.c (main): Update expected output.
+       * tests/ipc_msg.c (main): Likewise.
+       * tests/ipc_shm.c (main): Likewise.
+       * tests/net-yy-netlink.c (main): Likewise.
+       * tests/netlink_protocol.c (test_nlmsgerr): Likewise.
+
+       Introduce PRINT_FIELD_NUMERIC_UMODE_T.
+       * print_fields.h (PRINT_FIELD_NUMERIC_UMODE_T): New macro.
+       * ipc_msgctl.c (print_msqid_ds): Use it instead of print_numeric_umode_t.
+       * ipc_shmctl.c (print_shmid_ds): Likewise.
+       * open.c (print_open_how): Use it instead of print_numeric_ll_umode_t.
+
+       Fix printing of syscall return value in octal mode.
+       * defs.h (print_numeric_long_umask): Remove.
+       * printmode.c (print_numeric_long_umask): Likewise.
+       * syscall.c (syscall_exiting_trace) <case RVAL_OCTAL>: Fix printing
+       of tcp->u_rval when sizeof(tcp->u_rval) > sizeof(long) or when
+       sizeof(tcp->u_rval) > current_klongsize.
+
+       Rename print_numeric_umode_t_64 to print_numeric_ll_umode_t.
+       * printmode.c (print_numeric_umode_t_64): Rename
+       to print_numeric_ll_umode_t, change the type of its argument
+       to unsigned long long.
+       * defs.h: Likewise.
+       * open.c (print_open_how): Use print_numeric_ll_umode_t instead of
+       print_numeric_umode_t_64.
+
+2020-07-17  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Use PRINT_FIELD_UID instead of printuid where appropriate.
+       * ipc_msgctl.c: Include "print_fields.h".
+       (print_msqid_ds): Use PRINT_FIELD_UID instead of printuid.
+       * ipc_shmctl.c: Include "print_fields.h".
+       (print_shmid_ds): Use PRINT_FIELD_UID instead of printuid.
+       * statx.c (SYS_FUNC(statx)): Use PRINT_FIELD_UID instead of printuid.
+
+       printsiginfo: fix printing of siginfo_t.si_pid and siginfo_t.si_uid.
+       * printsiginfo.c (printsigsource): Print siginfo_t.si_pid using
+       PRINT_FIELD_D, print siginfo_t.si_uid using PRINT_FIELD_UID.
+       * tests/clone_ptrace.c (main): Update expected output.
+       * tests/orphaned_process_group.c (main): Likewise.
+       * tests/pidfd_send_signal.c (main): Likewise.
+       * tests/ptrace.c (test_peeksiginfo): Likewise.
+       * tests/rt_sigqueueinfo.c (main): Likewise.
+       * tests/rt_tgsigqueueinfo.c (main): Likewise.
+       * tests/siginfo.c (main): Likewise.
+       * tests/waitid.c (sprint_siginfo): Likewise.
+
+       statx: use PRINT_FIELD_FLAGS.
+       * statx.c (SYS_FUNC(statx)): Use PRINT_FIELD_FLAGS instead of
+       printflags.
+
+2020-07-17  Ákos Uzonyi  <uzonyi.akos@gmail.com>
+
+       kcmp: fix KCMP_FILE decoding.
+       * kcmp.c (SYS_FUNC(kcmp)): Fix KCMP_FILE pid arguments.
+
+       Fixes: v4.20~66 ("kcmp: output fds using a separate function")
+
+2020-07-13  Dmitry V. Levin  <ldv@altlinux.org>
+
+       fcntl: use print_fields.h macros.
+       * fcntl.c: Include "print_fields.h".
+       (print_struct_flock64, print_f_owner_ex): Use PRINT_FIELD_* macros
+       from print_fields.h.
+
+       evdev_mpers: use print_fields.h macros.
+       * evdev_mpers.c: Include "print_fields.h".
+       (decode_envelope, ff_effect_ioctl): Use PRINT_FIELD_* macros
+       from print_fields.h.
+       * tests/ioctl_evdev.c (print_ffe_common): Update expected output.
+
+2020-07-12  Dmitry V. Levin  <ldv@altlinux.org>
+
+       ustat: use print_fields.h macros.
+       * ustat.c: Include "print_fields.h".
+       (SYS_FUNC(ustat)): Use PRINT_FIELD_* macros from print_fields.h.
+
+       file_ioctl: use print_fields.h macros.
+       * file_ioctl.c: Include "print_fields.h".
+       (print_file_dedupe_range_info, print_fiemap_extent, file_ioctl): Use
+       PRINT_FIELD_* macros from print_fields.h.
+
+       evdev: use print_fields.h macros.
+       * evdev.c (abs_ioctl, keycode_V2_ioctl): Use PRINT_FIELD_* macros
+       from print_fields.h.
+
+       evdev: fix formatting of struct input_id.
+       * evdev.c (getid_ioctl): Use PRINT_FIELD_U.
+       * tests/ioctl_evdev.c (main): Update expected output.
+
+       btrfs: use PRINT_FIELD_X_ARRAY.
+       * types/btrfs.h: New file.
+       * btrfs.c: Include "types/btrfs.h".
+       (btrfs_ioctl): Use struct_btrfs_ioctl_logical_ino_args and
+       PRINT_FIELD_X_ARRAY.
+       * configure.ac (AC_CHECK_MEMBERS): Remove
+       struct btrfs_ioctl_search_args_v2.buf_size and
+       struct btrfs_ioctl_logical_ino_args.flags.
+
+2020-07-10  Dmitry V. Levin  <ldv@altlinux.org>
+
+       travis: reintroduce ppc64le and s390x builds.
+       Let's give travis another chance.
+       This reverts commits 86a53f791ad34a825b8633eb0272d954647ce705
+       and 36f32a255db09886f7f9ba08ec712b8742f0c312.
+
+       * .travis.yml (arch: ppc64le, arch: s390x): New entries.
+
+2020-07-10  Dmitry V. Levin  <ldv@altlinux.org>
+
+       README.md: migrate from travis-ci.org to travis-ci.com.
+
+2020-07-08  Dmitry V. Levin  <ldv@altlinux.org>
+
+       evdev: fix formatting of struct input_keymap_entry.scancode.
+       * evdev.c (keycode_V2_ioctl): Use PRINT_FIELD_X_ARRAY.
+       * tests/ioctl_evdev.c (main): Update expected output.
+
+       x86_64/arch_kvm: use PRINT_FIELD_X_ARRAY.
+       * linux/x86_64/arch_kvm.c (arch_print_kvm_sregs): Use PRINT_FIELD_X_ARRAY.
+
+       loop: implement decoding of LOOP_CONFIGURE ioctl command.
+       * types/loop.h: New file.
+       * loop.c: Include it instead of <linux/ioctl.h> and <linux/loop.h>.
+       (ecode_loop_config): New function.
+       (loop_ioctl): Use it to decode LOOP_CONFIGURE ioctl command.
+       * NEWS: Mention this change.
+       * tests/ioctl_loop.c: Check it.
+
+2020-07-08  Dmitry V. Levin  <ldv@altlinux.org>
+
+       loop: factor out print_loop_info64.
+       It is going to be used to implement LOOP_CONFIGURE decoding.
+
+       * loop.c (print_loop_info64): New function.
+       (decode_loop_info64): Use it.
+
+2020-07-08  Dmitry V. Levin  <ldv@altlinux.org>
+
+       loop: use print_fields.h macros.
+       * loop.c (decode_loop_info, decode_loop_info64): Use PRINT_FIELD_*
+       macros from print_fields.h.
+
+       print_fields: introduce PRINT_FIELD_U_ARRAY and PRINT_FIELD_X_ARRAY.
+       * print_fields.h: Include "static_assert.h".
+       (PRINT_FIELD_UINT_ARRAY, PRINT_FIELD_U_ARRAY, PRINT_FIELD_X_ARRAY):
+       New macros.
+       (PRINT_FIELD_COOKIE): Rewrite using PRINT_FIELD_U_ARRAY.
+
+2020-07-06  Gleb Fotengauer-Malinovskiy  <glebfm@altlinux.org>
+
+       Update ioctl entries from linux v5.8.
+       * linux/32/ioctls_inc_align16.h: Update from linux v5.8-rc4
+       using ioctls_gen.sh.
+       * linux/32/ioctls_inc_align32.h: Likewise.
+       * linux/32/ioctls_inc_align64.h: Likewise.
+       * linux/64/ioctls_inc.h: Likewise.
+       * linux/x32/ioctls_inc0.h: Likewise.
+       * linux/powerpc/ioctls_arch0.h: Likewise.
+       * NEWS: Mention this.
+       * tests/ioctl_loop.c (main): Update.
+
+2020-07-04  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Implement decoding of faccessat2 syscall.
+       Introduced by Linux kernel commit v5.8-rc1~203^2.
+
+       * xlat/faccessat_flags.in: New file.
+       * access.c: Include "xlat/faccessat_flags.h".
+       (decode_access): Change return type to void.
+       (SYS_FUNC(access)): Return RVAL_DECODED.
+       (decode_faccessat): New function.
+       (SYS_FUNC(faccessat)): Use it.
+       (SYS_FUNC(faccessat2)): New function.
+       * pathtrace.c (pathtrace_match_set): Handle SEN_faccessat2.
+       * linux/syscallent-common.h [BASE_NR + 439]: Wire up faccessat2.
+       * NEWS: Mention this change.
+       * tests/faccessat2.c: New file.
+       * tests/faccessat2-P.c: Likewise.
+       * tests/faccessat2-y.c: Likewise.
+       * tests/faccessat2-yy.c: Likewise.
+       * tests/faccessat2.test: New test.
+       * tests/Makefile.am (DECODER_TESTS): Add faccessat2.test.
+       * tests/gen_tests.in (faccessat2-P, faccessat2-y, faccessat2-yy): New
+       entries.
+       * tests/pure_executables.list: Add faccessat2, faccessat2-P,
+       faccessat2-y, and faccessat2-yy.
+       * tests/.gitignore: Likewise.
+
+2020-07-04  Dmitry V. Levin  <ldv@altlinux.org>
+
+       xlat: rename access_flags to access_modes.
+       Since faccessat2 syscall has both "mode" and "flags" arguments,
+       rename access_flags to access_modes to avoid confusion.
+
+       * xlat/access_flags.in: Rename to ...
+       * xlat/access_modes.in: ... this file, add fallback definitions.
+       (EFF_ONLY_OK, EX_OK): Remove non-Linux constants.
+       * access.c: Include "xlat/access_modes.h" instead of
+       "xlat/access_flags.h".
+       (decode_access): Replace access_flags woth access_modes.
+
+2020-07-04  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: check decoding of faccessat syscall in -P, -y, and -yy modes.
+       * tests/faccessat.c: Rewrite.
+       * tests/faccessat-P.c: New file.
+       * tests/faccessat-y.c: Likewise.
+       * tests/faccessat-yy.c: Likewise.
+       * tests/faccessat.test: New test.
+       * tests/Makefile.am (DECODER_TESTS): Add faccessat.test.
+       * tests/gen_tests.in (faccessat): Remove.
+       (faccessat-P, faccessat-y, faccessat-yy): New entries.
+       * tests/pure_executables.list: Add faccessat-P, faccessat-y,
+       and faccessat-yy.
+       * tests/.gitignore: Likewise.
+
+2020-06-30  Dmitry V. Levin  <ldv@altlinux.org>
+
+       xlat: update BPF_* constants.
+       * xlat/bpf_attach_type.in (BPF_TRACE_ITER): New constant introduced
+       by Linux kernel commit v5.8-rc1~165^2~185^2~16^2~19.
+       (BPF_CGROUP_INET4_GETPEERNAME, BPF_CGROUP_INET6_GETPEERNAME,
+       BPF_CGROUP_INET4_GETSOCKNAME, BPF_CGROUP_INET6_GETSOCKNAME): New
+       constants introduced by Linux kernel commit v5.8-rc1~165^2~130^2~8^2~3.`
+       (BPF_XDP_DEVMAP): New constant introduced by Linux kernel commit
+       v5.8-rc1~165^2~6^2~9^2~3.
+       * xlat/bpf_commands.in (BPF_LINK_GET_FD_BY_ID, BPF_LINK_GET_NEXT_ID):
+       New constants introduced by Linux kernel commit
+       v5.8-rc1~165^2~343^2~16^2~7.
+       (BPF_ENABLE_STATS): New constant introduced by Linux kernel commit
+       v5.8-rc1~165^2~343^2~3^2~2.
+       (BPF_ITER_CREATE): New constant introduced by Linux kernel commit
+       v5.8-rc1~165^2~185^2~16^2~15.
+       * xlat/bpf_map_types.in (BPF_MAP_TYPE_RINGBUF): New constant introduced
+       by Linux kernel commit v5.8-rc1~165^2~6^2~12^2~4.
+       * NEWS: Mention this change.
+       * tests/bpf.c: Update.
+
+2020-06-29  Ákos Uzonyi  <uzonyi.akos@gmail.com>
+
+       .gitignore: add missing files that should be ignored.
+       * .gitignore: Add .dirstamp.
+       * tests/.gitignore: Add setpgrp-exec and stack-fcall-attach.
+
+2020-06-29  Dmitry V. Levin  <ldv@altlinux.org>
+
+       xlat: update STATX_* constants.
+       * xlat/statx_attrs.in (STATX_ATTR_MOUNT_ROOT): New constant introduced
+       by Linux kernel commit v5.8-rc1~203^2~4.
+       * xlat/statx_masks.in (STATX_MNT_ID): New constant introduced by Linux
+       kernel commit v5.8-rc1~203^2~5.
+       * NEWS: Mention this change.
+       * tests/xstatx.c (main): Update expected output.
+
+       xlat: update TCA_* constants.
+       * xlat/rtnl_tc_attrs.in (TCA_DUMP_FLAGS): New constant introduced
+       by Linux kernel commit v5.8-rc1~165^2~183^2~3.
+       * rtnl_tc.c (tcmsg_nla_decoders): Add TCA_DUMP_FLAGS.
+       * NEWS: Mention this change.
+
+       xlat: update RTC_* constants.
+       * xlat/rtc_vl_flags.in (RTC_VL_BACKUP_SWITCH): New constant introduced
+       by Linux kernel commit v5.8-rc1~100^2~23.
+       * NEWS: Mention this change.
+
+2020-06-28  Dmitry V. Levin  <ldv@altlinux.org>
+
+       xlat: update NDA_* constants.
+       * xlat/rtnl_neigh_attrs.in (NDA_NH_ID): New constant introduced by Linux
+       kernel commit v5.8-rc1~165^2~141^2~3.
+       * rtnl_neigh.c (ndmsg_nla_decoders): Add NDA_NH_ID.
+       * NEWS: Mention this change.
+
+       xlat: update *_MAGIC constants.
+       * xlat/fsmagic.in (DEVMEM_MAGIC): New constant introduced by Linux
+       kernel commit v5.8-rc1~104^2~8.
+       * NEWS: Mention this change.
+
+       xlat: update LOOP_* constants.
+       * xlat/loop_cmds.in (LOOP_CONFIGURE): New constant introduced by Linux
+       kernel commit v5.8-rc1~191^2~11.
+       * NEWS: Mention this change.
+
+       xlat: update KVM_* constants.
+       * xlat/kvm_cap.in (KVM_CAP_HALT_POLL): New constant introduced by Linux
+       kernel commit v5.8-rc1~168^2~136.
+       (KVM_CAP_ASYNC_PF_INT): New constant introduced by Linux kernel commit
+       v5.8-rc1~168^2~14.
+       * NEWS: Mention this change.
+
+       xlat: update KEYCTL_* constants.
+       * xlat/keyctl_commands.in (KEYCTL_WATCH_KEY): New constant introduced
+       by Linux kernel commit v5.8-rc1~22^2~6.
+       * xlat/keyctl_caps1.in (KEYCTL_CAPS1_NOTIFICATIONS): Likewise.
+       * NEWS: Mention this change.
+
+       xlat: update IORING_* constants.
+       * xlat/uring_ops.in (IORING_OP_TEE): New constant introduced by Linux
+       kernel commit v5.8-rc1~190^2~14.
+       * tests/io_uring_register.c: Update expected output.
+
+       xlat: update INET_DIAG_* constants.
+       * linux/inet_diag.h (INET_DIAG_MD5SIG): New constant introduced
+       by Linux kernel commit v4.14-rc1~130^2~39^2.
+       (INET_DIAG_ULP_INFO): New constant introduced by Linux kernel commit
+       v5.4-rc1~131^2~103^2~1.
+       (INET_DIAG_SK_BPF_STORAGES): New constant introduced by Linux kernel
+       commit v5.7-rc1~146^2~287^2^2.
+       (INET_DIAG_CGROUP_ID): New constant introduced by Linux kernel commit
+       v5.8-rc1~165^2~383^2~1.
+       (INET_DIAG_BC_CGROUP_COND): New constant introduced by Linux kernel
+       commit v5.8-rc1~165^2~383^2.
+       * xlat/inet_diag_attrs.in (INET_DIAG_MD5SIG, INET_DIAG_ULP_INFO,
+       INET_DIAG_SK_BPF_STORAGES, INET_DIAG_CGROUP_ID): Likewise.
+       * xlat/inet_diag_bytecodes.in (INET_DIAG_BC_CGROUP_COND): Likewise.
+       * xlat/inet_diag_extended_flags.in (1<<(INET_DIAG_MD5SIG-1),
+       1<<(INET_DIAG_ULP_INFO-1), 1<<(INET_DIAG_SK_BPF_STORAGES-1),
+       1<<(INET_DIAG_CGROUP_ID-1)): Likewise.
+       * NEWS: Mention this change.
+
+       xlat: update ETH_* constants.
+       * xlat/ethernet_protocols.in (ETH_P_MRP): New constant introduced
+       by Linux kernel commit v5.8-rc1~165^2~412^2~10.
+       * NEWS: Mention this change.
+
+       xlat: update CAP_* constants.
+       * caps1.h (CAP_PERFMON): New constant introduced by Linux kernel commit
+       v5.8-rc1~224^2~14^2~55.
+       (CAP_BPF): New constant introduced by Linux kernel commit
+       v5.8-rc1~165^2~181^2^2~2.
+       * xlat/cap.in (CAP_PERFMON, CAP_BPF): Likewise.
+       * xlat/cap_mask1.in (1<<CAP_PERFMON, 1<<CAP_BPF): Likewise.
+       * NEWS: Mention this change.
+       * tests/caps.awk: Update expected output.
+       * tests/caps-abbrev.awk: Likewise.
+
+       xlat: update AUDIT_* constants.
+       * xlat/nl_audit_types.in (AUDIT_EVENT_LISTENER): New constant introduced
+       by Linux kernel commit v5.8-rc1~188^2~5.
+       * NEWS: Mention this change.
+
+2020-06-27  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: workaround LTO in strace -k tests.
+       Link time optimization in gcc 10 became too smart, resulting to most
+       of function calls in strace -k tests being optimized out,
+       subsequently breaking these tests.
+
+       Make the functions more complex to bypass unwanted side effects
+       of link time optimization in strace -k tests.
+
+       * tests/stack-fcall.h: Include <unistd.h> and "scno.h".
+       (COMPLEX_BODY): New macro.
+       * tests/stack-fcall-0.c (f0): Use it.
+       * tests/stack-fcall-1.c (f1): Likewise.
+       * tests/stack-fcall-2.c (f2): Likewise.
+       * tests/stack-fcall-3.c (f3): Likewise.  Rewrite switch.
+       * tests/stack-fcall.c (main): Call f0 in a loop.
+
+2020-06-16  Ákos Uzonyi  <uzonyi.akos@gmail.com>
+
+       Modify %process class: trace syscalls associated with process lifecycle.
+       The description is rephrased as:
+       "Trace system calls associated with process lifecycle
+       (creation, exec, termination)."
+
+       kill, tkill, tgkill, pidfd_send_signal and rt_sigqueueinfo are added,
+       arch_prctl and unshare are removed from the %process class.
+
+       syscallent*.h files are updated automatically by:
+       find linux -name syscallent*.h -exec \
+       sed -i -r -e '
+           /(arch_prctl|unshare)/ {
+               s/(\{[^,]*,\t[^,]*)TP\|/\1/
+               s/(\{[^,]*,\t[^,]*)\|TP/\1/
+               s/(\{[^,]*,\t[^,]*)TP,/\10,/
+           }
+       ' -e '
+           /(kill|pidfd_send_signal|rt_sigqueueinfo)/ {
+               s/(\{[^,]*,\t[^0][^,]*)/\1|TP/
+               s/(\{[^,]*,\s*)0/\1TP/
+           }
+       ' {} +
+
+       [ldv: document this change in NEWS.]
+
+       * strace.1.in: Rephrase %process description.
+       * linux/32/syscallent.h: Add TP flag to *kill, pidfd_send_signal and
+       rt_sigqueueinfo; remove TP flag from arch_prctl and unshare.
+       * linux/64/syscallent.h: Likewise.
+       * linux/alpha/syscallent.h: Likewise.
+       * linux/arm/syscallent.h: Likewise.
+       * linux/avr32/syscallent.h: Likewise.
+       * linux/bfin/syscallent.h: Likewise.
+       * linux/hppa/syscallent.h: Likewise.
+       * linux/i386/syscallent.h: Likewise.
+       * linux/ia64/syscallent.h: Likewise.
+       * linux/m68k/syscallent.h: Likewise.
+       * linux/microblaze/syscallent.h: Likewise.
+       * linux/mips/syscallent-compat.h: Likewise.
+       * linux/mips/syscallent-n32.h: Likewise.
+       * linux/mips/syscallent-n64.h: Likewise.
+       * linux/mips/syscallent-o32.h: Likewise.
+       * linux/powerpc/syscallent.h: Likewise.
+       * linux/powerpc64/syscallent.h: Likewise.
+       * linux/s390/syscallent.h: Likewise.
+       * linux/s390x/syscallent.h: Likewise.
+       * linux/sh/syscallent.h: Likewise.
+       * linux/sh64/syscallent.h: Likewise.
+       * linux/sparc/syscallent.h: Likewise.
+       * linux/sparc64/syscallent.h: Likewise.
+       * linux/syscallent-common.h: Likewise.
+       * linux/x32/syscallent.h: Likewise.
+       * linux/x86_64/syscallent.h: Likewise.
+       * linux/xtensa/syscallent.h: Likewise.
+       * NEWS: Mention this change.
+
+2020-06-16  Ákos Uzonyi  <uzonyi.akos@gmail.com>
+
+       tests/inject-nf.test: replace getpid with geteuid.
+       Since we treat PIDs as signed integers, large values (>=2^31) will
+       cause overflow when we use printpid.
+       UIDs are treated as unsigned integers, so geteuid is a good alternative.
+       (getuid would be problematic, as it does not exists on alpha).
+       Also, on systems where geteuid32 exists, geteuid returns maximum 16 bit
+       values, so we have to use geteuid32 in this case.
+
+       [ldv: geteuid syscall was introduced on Alpha by Linux kernel commit
+       v5.1-rc1~160^2~3^2~1, so this test will not work on old Alpha kernels.]
+
+       * tests/inject-nf.c: Replace getpid with either geteuid32 or geteuid.
+       [__alpha__]: Remove.
+       [__NR_geteuid32]: New condition.
+       * tests/inject-nf.test (SYSCALL): Replace getpid with '/^geteuid(32)?$'.
+       Remove alpha workaround.
+
+2020-06-16  Dmitry V. Levin  <ldv@altlinux.org>
+
+       travis: remove s390x builds.
+       They are currently unusable, permanently failing without any reason
+       whatsoever.
+
+       * .travis.yml (arch: s390x): Remove.
+
+2020-06-16  Dmitry V. Levin  <ldv@altlinux.org>
+
+       ci: re-enable testing with the latest mainline kernel headers.
+       There should be no issues with v5.8-rc1.
+       This reverts commit 734066585ba865740ab45651bc6e3e8ab249927f.
+
+       * .github/workflows/ci.yml (env): Remove KBRANCH.
+       * .gitlab-ci.yml (variables): Likewise.
+       * .travis.yml (env:global): Likewise.
+
+2020-06-16  Chris Packham  <chris.packham@alliedtelesis.co.nz>
+           Dmitry V. Levin  <ldv@altlinux.org>
+
+       io_uring: Add io_cqring_offset flags.
+       Add support for displaying struct io_cqring_offsets.flags introduced
+       by Linux kernel commits v5.8-rc1~190^2~22 and v5.8-rc1~190^2~21.
+
+       * types/io_uring.h (struct_io_cqring_offsets): Replace resv array
+       with flags, resv1, and resv2 fields.
+       * xlat/uring_cqring_flags.in: New file.
+       * configure.ac (AC_CHECK_MEMBERS): Check struct io_cqring_offsets.flags.
+       * io_uring.c: Include "xlat/uring_cqring_flags.h".
+       (SYS_FUNC(io_uring_setup)): Replace printing of the resv array
+       of struct io_cqring_offsets with flags, resv1, and resv2 fields.
+       * tests/io_uring_setup.c: Check it.
+
+       Resolves: https://github.com/strace/strace/issues/138
+
+2020-06-16  Chris Packham  <chris.packham@alliedtelesis.co.nz>
+
+       io_uring: Remove struct io_cqring_offsets compile time asserts.
+       The generated types/check-io_uring.c already checks the kernel's struct
+       io_cqring_offsets for compatibility with the strace definition so
+       there's no need for manual checks.
+
+       * io_uring.c [HAVE_STRUCT_IO_CQRING_OFFSETS]: Remove static_asserts.
+
+2020-06-16  Dmitry V. Levin  <ldv@altlinux.org>
+
+       types: skip field lines that start with comments.
+       This allows to exclude certain fields from type checks by placing
+       comments at the beginning of the corresponding lines.
+
+       * types/find_last_type_fields.awk: Skip lines starting with spaces
+       followed by "/".
+
+2020-06-14  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Add statx syscall to %fstat trace class.
+       statx syscall with AT_EMPTY_PATH flag is similar to newfstatat/fstatat64
+       syscall with AT_EMPTY_PATH flag.
+
+       * linux/32/syscallent.h (statx): Add TFST flag.
+       * linux/64/syscallent.h: Likewise.
+       * linux/alpha/syscallent.h: Likewise.
+       * linux/arm/syscallent.h: Likewise.
+       * linux/hppa/syscallent.h: Likewise.
+       * linux/i386/syscallent.h: Likewise.
+       * linux/ia64/syscallent.h: Likewise.
+       * linux/m68k/syscallent.h: Likewise.
+       * linux/microblaze/syscallent.h: Likewise.
+       * linux/mips/syscallent-n32.h: Likewise.
+       * linux/mips/syscallent-n64.h: Likewise.
+       * linux/mips/syscallent-o32.h: Likewise.
+       * linux/powerpc/syscallent.h: Likewise.
+       * linux/powerpc64/syscallent.h: Likewise.
+       * linux/s390/syscallent.h: Likewise.
+       * linux/s390x/syscallent.h: Likewise.
+       * linux/sh/syscallent.h: Likewise.
+       * linux/sparc/syscallent.h: Likewise.
+       * linux/sparc64/syscallent.h: Likewise.
+       * linux/x32/syscallent.h: Likewise.
+       * linux/x86_64/syscallent.h: Likewise.
+       * linux/xtensa/syscallent.h: Likewise.
+       * strace.1.in (.SS Filtering): Document it.
+       * NEWS: Mention this fix.
+       * tests/trace_fstat.in (statx): New entry.
+
+2020-06-13  Ákos Uzonyi  <uzonyi.akos@gmail.com>
+
+       Move ilog* functions from util.c to defs.h.
+       * util.c (ILOG2_ITER_, ilog2_klong, ilog2_64, ilog2_32): Move ...
+       * defs.h: ... here.
+
+       print_fields.h: add PRINT_FIELD_LEN macro.
+       * print_fields.h (PRINT_FIELD_LEN): New macro.
+       * net.c: (print_get_linger, print_get_ucred, print_tpacket_stats):
+       Rewrite using PRINT_FIELD_LEN.
+
+2020-06-10  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Move make-dist and make-dsc scripts to maint/
+       * make-dsc: Rename to maint/make-dsc.
+       * make-dist: Rename to maint/make-dist.
+       * maint/README-release: Update.
+       * dist/INSTALL: Likewise.
+
+2020-06-07  Sven Schnelle  <svens@stackframe.org>
+
+       tests: clone3 might return EBADF with invalid cgroup.
+       Both on s390 and x86 linux-5.7 return EBADF when an invalid cgroup
+       is supplied, so add that to the list of possible return values.
+
+
+       * tests/clone3.c (main): Add EBADF to the list of possible
+       CLONE_INTO_CGROUP return values.
+
+2020-06-03  Dmitry V. Levin  <ldv@altlinux.org>
+
+       ci: use kernel headers from Linux kernel v5.7.
+       When Linux kernel merge window opens, changes of all sorts start to pour
+       down, breaking UAPI in various ways.  This does not work for strace,
+       we need a stable UAPI.
+
+       * .github/workflows/ci.yml (env): Add KBRANCH.
+       * .gitlab-ci.yml (variables): Likewise.
+       * .travis.yml (env:global): Likewise.
+
+2020-06-02  Dmitry V. Levin  <ldv@altlinux.org>
+
+       s390: use a more appropriate regset type.
+       * linux/s390/arch_regs.c (s390_regset): Change the type from
+       struct user_regs_struct to s390_regs, the latter is the subset of
+       struct user_regs_struct used by the kernel, it's also the type
+       used on s390x.
+
+2020-06-02  Steve Langasek  <steve.langasek@ubuntu.com>
+
+       tests/perf_event_open: avoid unaligned access on ARM.
+       The test suite already handles alignment requirements on POWER and
+       Sparc, add ARM to the list as well.  Not all ARM environments raise
+       SIGBUS on unaligned access, but some do.
+
+       * tests/perf_event_open.c (ATTR_REC) [ARM]: Use aligned access.
+
+2020-06-02  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests/wait4: invoke wait4 syscall directly instead of using libc wait4.
+       glibc-2.31.9000-312-g600f00b747ff42eb0aa778536d3ef602e8bcd550 introduced
+       a change in its wait4 implementation that makes it unsuitable for the
+       wait4 test.
+
+       * tests/wait4.c: Include "kernel_rusage.h" instead of <sys/resource.h>.
+       (sprint_rusage): Replace struct rusage with kernel_rusage_t,
+       cast member values from kernel_long_t to unsigned long long
+       using zero_extend_signed_to_ull, update format strings.
+       (k_wait4): New function.
+       (do_wait4, main): Use it instead of wait4.
+
+2020-06-02  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 5.7-1.
+       * strace.spec.in: Likewise.
+
+2020-06-01  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Prepare for 5.7 release.
+       * NEWS: Update for 5.7 release.
+
+       .mailmap: add more entries to avoid duplication in CREDITS.
+
+       Update copyright headers.
+       Headers updated automatically using maint/update_copyright_years.sh
+       script.
+
+2020-06-01  Gleb Fotengauer-Malinovskiy  <glebfm@altlinux.org>
+
+       Update ioctl entries from linux v5.7.
+       * linux/32/ioctls_inc_align16.h: Update from linux v5.7
+       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/s390/ioctls_arch0.h: Likewise.
+       * linux/s390x/ioctls_arch0.h: Likewise.
+       * linux/x32/ioctls_inc0.h: Likewise.
+       * NEWS: Mention this.
+
+2020-05-31  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: increase default TIMEOUT_DURATION.
+       * tests/init.sh (TIMEOUT_DURATION): Increase from 600 to 1500.
+       * .travis.yml (matrix): Remove TIMEOUT_DURATION.
+
+2020-05-31  Dmitry V. Levin  <ldv@altlinux.org>
+
+       configure.ac: robustify linux headers checks.
+       Some linux headers used to require other headers to be included
+       beforehand.  While these linux headers are no longer insufficient
+       nowadays, configure checks need to handle old headers properly.
+
+       * configure.ac (AC_CHECK_TYPES): Include <sys/socket.h> before
+       <linux/fib_rules.h>.
+       (AC_CHECK_HEADERS): Include <sys/socket.h> and <linux/types.h>
+       before linux/if_addr.h, linux/if_link.h, linux/neighbour.h.
+       Include <linux/types.h> before other linux headers.
+
+2020-05-31  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Include <linux/types.h> before <linux/fiemap.h> and <linux/hiddev.h>
+       <linux/fiemap.h> and <linux/hiddev.h> used to require <linux/types.h>
+       to be included beforehand.
+
+       * file_ioctl.c [HAVE_LINUX_FIEMAP_H]: Include <linux/types.h>
+       before <linux/fiemap.h>.
+       * tests/file_ioctl.c: Likewise.
+       * tests/ioctl.c: Include <linux/types.h> before <linux/hiddev.h>.
+
+2020-05-31  Dmitry V. Levin  <ldv@altlinux.org>
+
+       debian/rules: fix build-udeb/Makefile target.
+       * debian/rules (build-udeb/Makefile): Rename --without-stacktrace
+       to --disable-stacktrace.
+
+2020-05-30  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Turn getfdpath and printfd functions into static inline wrappers.
+       * defs.h (printfd): Copy here from util.c, turn into an inline wrapper.
+       (getfdpath): Copy here from pathtrace.c, turn into an inline wrapper.
+       * pathtrace.c (getfdpath): Remove.
+       * util.c (printfd): Remove.
+
+2020-05-30  Ákos Uzonyi  <uzonyi.akos@gmail.com>
+
+       tests/pidfd_getfd.c: test decoding of targetfd.
+       * tests/pidfd_getfd.c (k_pidfd_getfd): Rename pid argument to pidfd.
+       (main): Test decoding of targetfd.
+       * tests/gen_tests.in: Add "-e signal=none" argument to pidfd_getfd
+       tests.
+
+2020-05-30  Ákos Uzonyi  <uzonyi.akos@gmail.com>
+
+       pidfd_getfd: fix decoder.
+       The decoder incorrectly assumed the first argument being a pid,
+       but actually it is a pidfd.
+
+       The patch also makes the decoder be able to decode the targetfd
+       (-y and -yy options).
+
+       * pidfd_getfd.c: Include "number_set.h".
+       (SYS_FUNC(pidfd_getfd)): Rewrite using pidfd_get_pid.
+
+       Fixes: v5.6~46 "Implement pidfd_getfd syscall decoding"
+
+2020-05-30  Ákos Uzonyi  <uzonyi.akos@gmail.com>
+
+       util.c: add pidfd_get_pid.
+       * defs.h (pidfd_get_pid): New function declaration.
+       * utils.c (pidfd_get_pid): New function, returns the pid of a pidfd.
+       (printpidfd): Rewrite using pidfd_get_pid.
+       (printfd_pid): Change printpidfd arguments.
+
+2020-05-30  Ákos Uzonyi  <uzonyi.akos@gmail.com>
+
+       Rename print_pid_fd to printfd_pid_tracee_ns.
+       To avoid confusion with the new printfd_pid fucntion.
+
+       defs.h (print_pid_fd): Rename to printfd_pid_tracee_ns.
+       util.c: Likewise.  All users updated.
+
+2020-05-30  Ákos Uzonyi  <uzonyi.akos@gmail.com>
+
+       util.c: add printfd_pid.
+       defs.h (printfd_pid): New function definition.
+       util.c (printfd_pid): New function printing the fd of an other process.
+       (printfd): Rewritten using printfd_pid.
+
+       pathtrace.c: add getfdpath_pid.
+       * defs.h (getfdpath_pid): New function definition.
+       * pathtrace.c (getfdpath_pid): New function, returns the path
+       associated with fd of the process with pid.
+       (getfdpath): Rewrite using getfdpath_pid.
+
+2020-05-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       xlat: annotate btrfs_compress_types with #enum.
+       * xlat/btrfs_compress_types.in: Add #enum, #include <stdio.h>,
+       and #include <linux/btrfs.h>
+       * configure.ac (AC_CHECK_DECL(BTRFS_COMPRESS_*)): Remove.
+
+2020-05-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       xlat: annotate rtnl_ifla_xdp_attached_mode with #enum.
+       And use proper checks in tests/nlattr_ifla_xdp.c.
+
+       * xlat/rtnl_ifla_xdp_attached_mode.in: Add #enum, #include <netinet/in.h>,
+       and #include <linux/rtnetlink.h> annotations.
+       * tests/nlattr_ifla_xdp.c [!XDP_ATTACHED_NONE] (XDP_ATTACHED_NONE):
+       Remove.
+       [!XDP_ATTACHED_MULTI] (XDP_ATTACHED_MULTI): Remove.
+       [!HAVE_DECL_XDP_ATTACHED_NONE] (XDP_ATTACHED_NONE): New enum definition.
+       [!HAVE_DECL_XDP_ATTACHED_MULTI] (XDP_ATTACHED_MULTI): Likewise.
+
+2020-05-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       rtnl_link: support IFLA_XDP_EXPECTED_FD attribute decoding.
+       Introduced by Linux commit v5.7-rc1~146^2~10^2~13^2~3.
+
+       * xlat/rtnl_ifla_xdp_attrs.in: Add #enum, #include <netlink/in.h>,
+       and #include <linux/rtnetlink.h> annotations.
+       (IFLA_XDP_EXPECTED_FD): New constant.
+       * rtnl_link.c (ifla_xdp_nla_decoders): Add [IFLA_XDP_EXPECTED_FD], set
+       value to decode_nla_fd.
+       * tests/nlattr_ifla_xdp-y.c: New file.
+       * tests/.gitignore: Add nlattr_ifla_xdp-y.
+       * tests/Makefile.am (check_PROGRAMS): Likewise.
+       * tests/gen_tests.in: Add nlattr_ifla_xdp-y test.
+       * tests/nlattr_ifla_xdp.c: Include "xlat/rtnl_ifla_xdp_attrs.h" under
+       XLAT_MACROS_ONLY definition.
+       (IFLA_XDP_FD, IFLA_XDP_ATTACHED, IFLA_XDP_PROG_ID, IFLA_XDP_DRV_PROG_ID,
+       IFLA_XDP_SKB_PROG_ID, IFLA_XDP_HW_PROG_ID): Remove.
+       [!FD9_PATH] (FD9_PATH): New macro, define to empty string.
+       (main): Add checks for IFLA_XDP_EXPECTED_FD.
+
+2020-05-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       tests: support -y mode for sockfd printing.
+       * tests/test_nlattr.h [!PRINT_SOCK] (PRINT_SOCK): New macro, define to 0.
+       (print_sockfd): New function.
+       (TEST_NLATTR_EX_): Call print_sockfd for sock fd printing.
+
+       rtnl_tc_action: implement TCA_ACT_HW_STATS and TCA_ACT_USED_HW_STATS decoding
+       * xlat/rtnl_tca_act_hw_stats.in: New file.
+       * rtnl_tc_action.c: Include "xlat/rtnl_tca_act_hw_stats.h".
+       (decode_tca_act_hw_stats): New function.
+       (tcamsg_nla_decoders): Add [TCA_ACT_HW_STATS]
+       and [TCA_ACT_USED_HW_STATS], set them to decode_tca_act_hw_stats.
+       * tests/nlattr_tcamsg.c: Add checks, update expected output.
+       * xlat/rtnl_tc_action_attrs.in (TCA_ACT_HW_STATS): New constant,
+       introduced by Linux commit v5.7-rc1~146^2~230^2 and renamed in Linux
+       commit v5.7-rc1~146^2~101.
+       (TCA_ACT_USED_HW_STATS): New constant, introduced by Linux commit
+       v5.7-rc1~146^2~25^2.
+
+       xlat: annotate rtnl_tca_stab_attrs with #enum.
+       * xlat/rtnl_tca_stab_attrs.in: Add #enum, #include <linux/types.h>,
+        #include <linux/pkt_sched.h>.
+       * configure.ac (AC_CHECK_DECLS(TCA_STAB_DATA)): Remove.
+
+       xlat: annotate rtnl_tca_stats_attrs with #enum.
+       * xlat/rtnl_tca_stats_attrs.in: Add #enum, #include <linux/gen_stats.h>.
+       * configure.ac (AC_CHECK_DECL(TCA_STATS_PKT64)): Remove.
+
+       xlat: add #enum to v4l2 xlats.
+       * xlat/v4l2_buf_types.in: Add #enum, #include <sys/time.h>, #include
+       <linux/ioctl.h>, #include <linux/types.h>, and #include
+       <linux/videodev2.h>.
+       * xlat/v4l2_colorspaces.in: Likewise.
+       * xlat/v4l2_control_types.in: Likewise.
+       * xlat/v4l2_fields.in: Likewise.
+       * xlat/v4l2_framesize_types.in: Likewise.
+       * xlat/v4l2_memories.in: Likewise.
+       * xlat/v4l2_tuner_types.in: Likewise.
+       * configure.ac (AC_CHECK_DECL(V4L2_*)): Remove.
+
+       xlat: annotate rtnl_link_attrs with #enum.
+       * xlat/rtnl_link_attrs.in: Add #enum, #include <sys/socket.h>, #include
+       <linux/rtnetlink.h>.
+       * configure.ac (AC_CHECK_DECL(IFLA_*)): Remove.
+
+       xlat: annotate rtnl_tc_action_attrs with #enum.
+       * xlat/rtnl_tc_action_attrs.in: Add #enum, #include <linux/pkt_cls.h>
+       * configure.ac (AC_CHECK_DECL(TCA_ACT_*)): Remove.
+
+       xlat: annotate sysctl xlats with #enum.
+       * configure.ac (AC_CHECK_DECL(CTL_* KERN_* NET_* VM_*)): Remove.
+       * xlat/sysctl_kern.in: Add #enum, #include <sys/types.h>, #include
+       <linux/sysctl.h> descriptors.
+       * xlat/sysctl_net.in: Likewise.
+       * xlat/sysctl_net_core.in: Likewise.
+       * xlat/sysctl_net_ipv4.in: Likewise.
+       * xlat/sysctl_net_ipv4_conf.in: Likewise.
+       * xlat/sysctl_net_ipv4_route.in: Likewise.
+       * xlat/sysctl_net_ipv6.in: Likewise.
+       * xlat/sysctl_net_ipv6_route.in: Likewise.
+       * xlat/sysctl_net_unix.in: Likewise.
+       * xlat/sysctl_root.in: Likewise.
+       * xlat/sysctl_vm.in: Likewise.
+
+2020-05-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       configure: annotate waitid_types with #enum.
+       This also syncs up the configure checks with the actual list of xlat
+       values.
+
+       * xlat/waitid_types.in: Add #enum, #include <sys/types.h>, and #include
+       <sys/wait.h>.
+       * configure.ac (AC_CHECK_DECL(P_*)): Remove.
+
+       Complements: v5.4~82 "xlat: update waitid_types"
+
+2020-05-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       xlat: mark loop_flags_options as #enum.
+       * xlat/loop_flags_options.in: Add #enum and #include <linux/loop.h>
+       descriptors.
+       * configure.ac (AC_CHECK_DECLS(LO_FLAGS_*)): Remove.
+
+       xlat: generate m4 checks for enumerations.
+       * xlat/gen.sh (print_m4_record, gen_m4_entry): New functions.
+       (print_xlat_pair): Accept macro name in the third argument.
+       (print_xlat, print_xlat_pair): Call print_m4_record.
+       (cond_xlat): Pass $m to print_xlat_pair call. Set first_enum to 0.
+       (gen_header, gen_make, gen_git): Output the "generating ..." line
+       to stderr.
+       (gen_header): Get output_m4 as the fourth parameter, redirect fd 3
+       to stdout, set enum to 1 if #enum is present and $output_m4 is set,
+       append #include argument to includes, generate $output_m4 is $enum
+       is set to 1, pass macro name to print_xlat_pair call, close fd 3.
+       (gen_git): Add st_check_enums.m4 and "/*.m4".
+       (main): Allow passing $output_m4 as the third argument, pass m4 file
+       name as the fourth argument to gen_header calls, pipe gen_header output
+       to gen_m4_entry in case of no-argument invocation, redirect gen_header
+       output to /dev/null in case of single-file invocation.
+       * Makefile.am (ACLOCAL_AMFLAGS): Add "-I xlat".
+       * configure.ac: Add st_CHECK_ENUMS.
+
+2020-05-30  Pierre Marsais  <pierre.marsais@lse.epita.fr>
+
+       configure.ac: remove unused checks.
+       Those unused configure.ac checks were found with the following commands:
+
+       $ ./bootstrap
+       $ ./configure
+       $ grep '^#undef HAVE' config.h.in | cut -d' ' -f2 | sort >in_configure
+       $ find -iname '*.[ch]' -exec ifnames \{\} + | grep ^HAVE | \
+         cut -d' ' -f1 | sort >in_source
+       $ comm -23 in_configure in_source | grep -vE '^HAVE_(UNION|STRUCT)'
+
+       * configure.ac (AC_CHECK_FUNCS): Remove utimensat, the last user was
+       removed by commit 589cff6.  Remove strsignal, the last user was
+       removed by commit 2c4fb90.
+       (AC_CHECK_HEADERS): Remove sys/conf.h, the last user was removed by
+       commit 811bda6.  Remove inttypes.h, the last user was removed by commit
+       a6d91de.  Remove stropts.h, the last user was removed by commit a56a81c.
+       (AC_CHECK_DECLS): remove P_PPID, P_PGID, P_SID, P_CID, P_UID, P_GID,
+       P_ALL, and P_LWPID, the last user was removed by commit 7da9d19.
+
+2020-05-29  Dmitry V. Levin  <ldv@altlinux.org>
+
+       maint: remove ioctl duplicates generated from linux/dma-buf.h.
+       Starting with commit v5.7-rc4~13^2~2^2~7, linux/dma-buf.h defines
+       DMA_BUF_SET_NAME_A and DMA_BUF_SET_NAME_B constants, and
+       DMA_BUF_SET_NAME equals to one of them.
+
+       * maint/ioctls_sym.sh: Edit linux/dma-buf.h to omit DMA_BUF_SET_NAME.
+
+2020-05-29  Dmitry V. Levin  <ldv@altlinux.org>
+
+       maint: force time64 based definitions in linux/videodev2.h.
+       Starting with commit v5.6-rc1~93^2~103, linux/videodev2.h provides either
+       time32 or time64 based definitions depending on the flavour provided by
+       libc headers.  While media/v4l2-ioctl.h already provides time32 based
+       definitions, linux/videodev2.h has to be twisted to force time64 based
+       definitions.
+
+       * maint/ioctls_sym.sh: Edit linux/videodev2.h to force time64 based API.
+
+2020-05-29  Dmitry V. Levin  <ldv@altlinux.org>
+
+       xlat: add 1<<_UFFDIO_WRITEPROTECT to uffd_register_ioctl_flags.
+       * xlat/uffd_register_ioctl_flags.in (1<<_UFFDIO_WRITEPROTECT): New
+       constant introduced by Linux kernel commit v5.7-rc1~58^2~113.
+
+2020-05-28  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Replace struct v4l2_event with a reliable alternative definition.
+       Since the definition of struct v4l2_event provided by the kernel depends
+       on the flavour of struct timespec provided by libc, we cannot use the
+       definition provided by the kernel, neither in the decoder nor in tests.
+
+       * kernel_v4l2_types.h: Include "kernel_timespec.h".
+       (kernel_v4l2_event_t): New type.
+       * linux/32/ioctls_inc_align16.h (VIDIOC_DQEVENT): Update.
+       * linux/32/ioctls_inc_align32.h: Likewise.
+       * linux/32/ioctls_inc_align64.h: Likewise.
+       * xlat/v4l2_ioctl_cmds.in (VIDIOC_DQEVENT): Redefine.
+       * v4l2.c (kernel_v4l2_event_t): Mpersify.
+
+2020-05-28  Dmitry V. Levin  <ldv@altlinux.org>
+
+       v4l2: move redefinitions of v4l2_buffer based constants to xlat.
+       * kernel_v4l2_types.h: Include "types/v4l2.h".
+       * v4l2.c (VIDIOC_QUERYBUF, VIDIOC_QBUF, VIDIOC_DQBUF,
+       VIDIOC_PREPARE_BUF): Move redefinitions ...
+       * xlat/v4l2_ioctl_cmds.in: ... here.
+       * tests/ioctl_v4l2.c: Include "xlat/v4l2_ioctl_cmds.h"
+       in XLAT_MACROS_ONLY mode.
+       (VIDIOC_QUERYBUF, VIDIOC_QBUF, VIDIOC_DQBUF, VIDIOC_PREPARE_BUF): Remove.
+       (main): Check for HAVE_STRUCT_V4L2_FRMSIZEENUM,
+       HAVE_STRUCT_V4L2_FRMIVALENUM, and HAVE_STRUCT_V4L2_CREATE_BUFFERS
+       instead of VIDIOC_ENUM_FRAMESIZES, VIDIOC_ENUM_FRAMEINTERVALS, and
+       VIDIOC_CREATE_BUFS as the latter are always defined now.
+       * tests/ioctl_v4l2-success.c: Likewise.
+
+2020-05-27  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Update NEWS.
+
+       tests: robustify strace-D.test against personality mismatch issues.
+       * tests/print_ppid_tracerpid.c: New file.
+       * tests/.gitignore: Add print_ppid_tracerpid.
+       * tests/Makefile.am (check_PROGRAMS): Likewise.
+       * tests/strace-D.test: Use print_ppid_tracerpid instead of
+       "sed -r -n '/^(P|Tracer)Pid:/p' /proc/self/status" to avoid
+       unrelated issues caused by potential personality mismatch.
+
+       tests: robustify pc.test against personality mismatch issues.
+       * tests/pc.test: Pass --quiet=attach,personality option to strace
+       to suppress some unrelated diagnostics that can confuse scripts
+       that parse strace output.
+
+2020-05-27  Dmitry V. Levin  <ldv@altlinux.org>
+
+       ci: re-enable testing with the latest mainline kernel headers.
+       There should be no issues with v5.7-rc7.
+       This reverts commit dc6a196f3a83103e8ba21b6809246d37356ffd3d.
+
+       * .github/workflows/ci.yml (env): Remove KBRANCH.
+       * .gitlab-ci.yml (variables): Likewise.
+       * .travis.yml (env:global): Likewise.
+
+2020-05-27  Dmitry V. Levin  <ldv@altlinux.org>
+
+       clone: implement decoding of cgroup field in struct clone_args.
+       * configure.ac (AC_CHECK_MEMBERS): Check for struct clone_args.cgroup
+       instead of struct clone_args.set_tid_size.
+       * clone.c (struct strace_clone_args): Add cgroup field.
+       (SYS_FUNC(clone3)): Decode cgroup field of struct clone_args introduced
+       by Linux kernel commit v5.7-rc1~107^2~9.
+       * NEWS: Mention this change.
+       * tests/clone3.c: Check HAVE_STRUCT_CLONE_ARGS_CGROUP instead of
+       HAVE_STRUCT_CLONE_ARGS_SET_TID_SIZE.
+       (struct test_clone_args): Add cgroup field.
+       (main): Check decoding of cgroup field.
+
+       xlat: update CLONE_* constants.
+       * xlat/clone3_flags.in (CLONE_INTO_CGROUP): New constant, introduced
+       by Linux kernel commit v5.7-rc1~107^2~9.
+       * NEWS: Mention this.
+       * tests/clone3.c (main): Update the expected output.
+
+       x32: workaround syscall(2) limitations in PTRACE_GET_SYSCALL_INFO check.
+       * ptrace_syscall_info.c (test_ptrace_get_syscall_info)
+       [SIZEOF_KERNEL_LONG_T > SIZEOF_LONG]: Cast elements of info.entry.args
+       array to (unsigned long).
+       * tests/ptrace_syscall_info.c (test_entry): Likewise.
+
+2020-05-27  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: silence compilation warnings in pc.test.
+       Silence the following compilation warnings produced by fresh gcc+glibc:
+
+       In file included from pc.c:9:
+       pc.c: In function 'main':
+       pc.c:30:9: warning: argument 2 is null but the corresponding size argument 3 value is 16 [-Wnonnull]
+          30 |  assert(write(-1, NULL, 2 * sizeof(void *)) < 0);
+             |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+       In file included from pc.c:12:
+       /usr/include/unistd.h:367:16: note: in a call to function 'write' declared with attribute 'read_only (2, 3)'
+         367 | extern ssize_t write (int __fd, const void *__buf, size_t __n) __wur
+             |                ^~~~~
+
+       * tests/pc.c (main): Use 8UL instead of NULL as a marker.
+       * tests/pc.test: Update expected output.
+
+2020-05-26  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Replace struct v4l2_buffer with a reliable alternative definition.
+       Starting with Linux kernel commit v5.6-rc1~93^2~102, the definition
+       of struct v4l2_buffer provided by the kernel depends on the flavour
+       of struct timeval provided by libc.  This effectively means that we
+       cannot use the definition provided by the kernel, neither in the decoder
+       nor in tests.
+
+       * kernel_v4l2_types.h: New file.
+       * Makefile.am (libstrace_a_SOURCES): Add it.
+       * types/v4l2.h (struct_v4l2_buffer): Remove.
+       * v4l2.c: Include "kernel_v4l2_types.h".
+       Replace struct_v4l2_buffer with kernel_v4l2_buffer_t.
+       (VIDIOC_QUERYBUF, VIDIOC_QBUF, VIDIOC_DQBUF, VIDIOC_PREPARE_BUF):
+       Redefine.
+       (print_v4l2_buffer): Use print_timeval64_data_size to print timestamp
+       field.
+       * linux/32/ioctls_inc_align16.h (VIDIOC_QUERYBUF, VIDIOC_QBUF,
+       VIDIOC_DQBUF, VIDIOC_PREPARE_BUF): Update.
+       * linux/32/ioctls_inc_align32.h: Likewise.
+       * linux/32/ioctls_inc_align64.h: Likewise.
+       * xlat/v4l2_ioctl_cmds.in (VIDIOC_QUERYBUF, VIDIOC_QBUF,
+       VIDIOC_DQBUF, VIDIOC_PREPARE_BUF): Comment out.
+       * tests/ioctl_v4l2.c: Include "kernel_v4l2_types.h".
+       (main): Replace struct_v4l2_buffer with kernel_v4l2_buffer_t.
+       (VIDIOC_QUERYBUF, VIDIOC_QBUF, VIDIOC_DQBUF, VIDIOC_PREPARE_BUF):
+       Redefine.
+       * tests/ioctl_v4l2-success.c: Likewise.
+
+       Resolves: https://github.com/strace/strace/issues/133
+
+2020-05-26  Dmitry V. Levin  <ldv@altlinux.org>
+
+       configure: move AM_PROG_AR after AC_USE_SYSTEM_EXTENSIONS.
+       This fixes the following autoreconf warning:
+       configure.ac:41: warning: AC_COMPILE_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS
+
+       * configure.ac: Move AM_PROG_AR after AC_USE_SYSTEM_EXTENSIONS.
+
+       Fixes: v5.6-65-g81e11a9b8 "configure: check AR variable for 'ar' tool"
+
+2020-05-02  Mike Gilbert  <floppym@gentoo.org>
+
+       configure: check AR variable for 'ar' tool.
+       Without this, automake always hardcodes 'AR = ar' in Makefile.in
+
+       Bug: https://bugs.gentoo.org/720712
+
+2020-05-02  Dmitry V. Levin  <ldv@altlinux.org>
+
+       configure.ac: do not check for perl.
+       The last user of this check was removed by commit v4.7~160.
+
+       * configure.ac (AC_PATH_PROG): Remove perl.
+
+       Complements: v4.7~160 "Manual removal of non-Linux source, documentation, etc."
+
+2020-04-27  Dmitry V. Levin  <ldv@altlinux.org>
+
+       configure.ac: fix dladdr check.
+       * configure.ac: Check for the library providing dladdr using
+       AC_SEARCH_LIBS instead of AC_CHECK_LIB to handle the case when dladdr
+       is a part of libc.
+
+2020-04-24  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Rewrite decoders of dup, dup2, and dup3 syscalls.
+       * dup.c: New file.
+       * Makefile.am (libstrace_a_SOURCES): Add it.
+       * desc.c (do_dup2, SYS_FUNC(dup), SYS_FUNC(dup2), SYS_FUNC(dup3)):
+       Remove.
+
+       tests: check decoding of dup3 syscall in -y, -yy, and -P modes.
+       * tests/dup3.c: Rewrite.
+       * tests/dup3-P.c: New file.
+       * tests/dup3-y.c: Likewise.
+       * tests/dup3-yy.c: Likewise.
+       * tests/gen_tests.in (dup3): Add 7>>/dev/full.
+       (dup3-P, dup3-y, dup3-yy): New entries.
+       * tests/pure_executables.list: Add dup3-P, dup3-y, and dup3-yy.
+       * tests/.gitignore: Likewise.
+
+       tests: check decoding of dup2 syscall in -y, -yy, and -P modes.
+       * tests/dup2.c: Rewrite.
+       * tests/dup2-P.c: New file.
+       * tests/dup2-y.c: Likewise.
+       * tests/dup2-yy.c: Likewise.
+       * tests/gen_tests.in (dup2): Add 9>>/dev/full.
+       (dup2-P, dup2-y, dup2-yy): New entries.
+       * tests/pure_executables.list: Add dup2-P, dup2-y, and dup2-yy.
+       * tests/.gitignore: Likewise.
+
+       tests: check decoding of dup syscall in -y, -yy, and -P modes.
+       * tests/dup.c: Rewrite.
+       * tests/dup-P.c: New file.
+       * tests/dup-y.c: Likewise.
+       * tests/dup-yy.c: Likewise.
+       * tests/gen_tests.in (dup): Add 9>>/dev/full.
+       (dup-P, dup-y, dup-yy): New entries.
+       * tests/pure_executables.list: Add dup-P, dup-y, and dup-yy.
+       * tests/.gitignore: Likewise.
+
+2020-04-24  Niklas Cathor  <niklas.cathor@gmx.de>
+
+       strace.1: fix description of "open" example.
+       * strace.1.in (DESCRIPTION): In the example of "open" syscall with three
+       arguments, the rest of the sentence talks about the `flag` and the
+       `mode` arguments, not just about the `mode`.
+
+       Resolves: https://gitlab.com/strace/strace/merge_requests/1
+
+2020-04-24  Dmitry V. Levin  <ldv@altlinux.org>
+
+       github: add gcc-10 jobs.
+       * .github/workflows/ci.yml (gcc10-x86_64-kheaders, gcc10-x86_64-dw,
+       gcc10-x86_64-unwind, gcc10-x32-kheaders, gcc10-x32-nostacktrace,
+       gcc10-x86-kheaders, gcc10-x86-nostacktrace): New jobs.
+
+2020-04-23  Maxim Akhmedov  <max42@yandex-team.ru>
+           Dmitry V. Levin  <ldv@altlinux.org>
+
+       Implement interval specification in syscall tampering expressions.
+       Before this change, strace allows syscall tampering only for syscalls
+       with 1) fixed invocation index or 2) all invocations starting from n-th
+       (possibly with some step).
+
+       These two options do not cover a useful scenario of testing
+       retrying/backoffing policy of traced program, which may be done by
+       introducing delays/errors on first n invocations, and then stopping
+       tampering.
+
+       This change adds possibility to invoke strace like the following:
+
+         strace -e inject=recvfrom:delay_exit=100000:when=3,100 ./bin
+
+       which results in invocations from third to hundredth (inclusive) being
+       tampered.  Formally, syntax now looks like `when=first[..last][+step]`.
+
+       This change does not affect the existing behavior.
+
+       * defs.h (INJECT_LAST_INF): New macro.
+       (struct inject_opts): Add "last" field.
+       * filter_qualify.c (parse_inject_token) <when>: Add interval support.
+       (qualify_inject_common): Initialize struct inject_opts.last.
+       * syscall.c (tamper_with_syscall_entering): Handle
+       struct inject_opts.last.
+       * strace.1.in (Tampering): Document the new feature.
+       * strace.c (usage): Likewise.
+       * NEWS: Mention this change.
+       * tests/qual_fault-syntax.test: Check handling of invalid "when"
+       intervals.
+       * tests/qual_inject-syntax.test: Likewise.
+       * tests/qual_fault.c (last): New variable.
+       (main): Take "last" argument, handle it.
+       * tests/qual_fault.test: Check handling of valid "when" intervals.
+
+       Resolves: https://github.com/strace/strace/pull/136
+
+2020-04-21  Dmitry V. Levin  <ldv@altlinux.org>
+
+       pathtrace: fix matching of openat2 syscall.
+       * pathtrace.c (pathtrace_match_set): Handle SEN_openat2.
+
+       Fixes: v5.6~48 "open: implement openat2 syscall decoding"
+
+2020-04-19  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       xlat: add BTRFS_COMPRESS_ZSTD to btrfs_compress_types.
+       * xlat/btrfs_compress_types.in (BTRFS_COMPRESS_ZSTD): New constant,
+       introduced by Linux commit v4.14-rc1~22^2~1.
+       * tests/btrfs.c (BTRFS_COMPRESS_TYPES): Change value to 3.
+
+2020-04-19  Alistair Francis  <alistair.francis@wdc.com>
+
+       tests/xetitimer: Use syscalls instead of libc functions.
+       The new glibc implementation for y2038 safe arches (32-bit arch with
+       64-bit time_t) will set the itimerval struct inside libc instead of
+       inside the kernel. This is because the kernel expects a 32-bit version
+       of timeval while libc exposes a 64-bit version. As libc sets this, when
+       we pass a faulting pointer we will get a segfault instead of the kernel
+       reporint EFAULT back.
+
+       To avoid a seg fault let's use the kernel's equivalent of struct
+       __kernel_old_itimerval in the tests and call the syscall directly
+       instead of using libc. This way we can trigger the kernels EFAULT
+       response correctly.
+
+
+       * tests/xetitimer.c: Include "kernel_timeval.h"
+       (kernel_old_itimerval_t): New type.
+       (main): Use it instead of struct itimerval, replace getitimer with
+       syscall(__NR_getitimer), replace setitimer with syscall(__NR_setitimer).
+
+2020-04-19  Alistair Francis  <alistair.francis@wdc.com>
+           Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests/semtimedop: Skip tests if semtimedop syscall is not available.
+       New y2038 safe 32-bit architectures don't have the __NR_semtimedop
+       syscall, so let's skip the test.
+
+
+       * tests/semtimedop.c: Include "scno.h".
+       [!(__NR_semtimedop || __NR_socketcall)]: Skip the test.
+
+2020-04-19  Alistair Francis  <alistair.francis@wdc.com>
+
+       tests/xettimeofday: Skip tests if __NR_gettimeofday syscall is not defined
+       New y2038 safe 32-bit architectures don't have the
+       __NR_gettimeofday/__NR_settimeofday syscalls, so let's skip the test.
+
+
+       * tests/xettimeofday.c: Include "scno.h".
+       [!__NR_gettimeofday]: Skip the test.
+
+2020-04-19  Alistair Francis  <alistair.francis@wdc.com>
+
+       tests/wait4: Skip tests if __NR_wait4 syscall is not defined.
+       New y2038 safe 32-bit architectures don't have the __NR_wait4 syscall,
+       so let's skip the test.
+
+
+       * tests/wait4.c: Include "scno.h".
+       [!__NR_wait4]: Skip the test.
+
+2020-04-19  Alistair Francis  <alistair.francis@wdc.com>
+
+       tests/msg_control: Use old time structures for old timestamps.
+       The SO_TIMESTAMP_OLD returns a timeval that matches the struct
+       kernel_old_timeval_t instead of the struct timeval. This is different
+       on new 32-bit architectures (like RV32) where timeval uses 64-bit time_t
+       while kernel_old_timeval_t uses 32-bit.
+
+       To fix overflow errors let's use kernel_old_timeval_t instead of
+       the libc struct timeval.
+
+
+       Likewise, SO_TIMESTAMPNS_OLD and SO_TIMESTAMPING_OLD return
+       kernel_old_timespec_t.
+
+       * tests/msg_control.c: Include "kernel_timeval.h" and
+       "kernel_old_timespec.h".
+       (test_scm_timestamp_old): Replace struct timeval with
+       kernel_old_timeval_t.
+       (test_scm_timestampns_old, test_scm_timestamping_old): Replace
+       struct timespec with kernel_old_timespec_t.
+
+2020-04-19  Alistair Francis  <alistair.francis@wdc.com>
+
+       tests/sockopt-timestamp: Use old time structures for old timestamps.
+       The SO_TIMESTAMP_OLD returns a timeval that matches the struct
+       kernel_old_timeval_t instead of the struct timeval. This is different
+       on new 32-bit architectures (like RV32) where timeval uses 64-bit time_t
+       while kernel_old_timeval_t uses 32-bit.
+
+       To fix overflow errors let's use kernel_old_timeval_t instead of
+       the libc struct timeval.
+
+
+       Likewise, SO_TIMESTAMPNS_OLD returns kernel_old_timespec_t.
+
+       * tests/sockopt-timestamp.c: Include "kernel_timeval.h" and
+       "kernel_old_timespec.h".
+       (print_timestamp_old): Replace struct timeval with kernel_old_timeval_t.
+       (print_timestampns_old): Replace struct timespec with
+       kernel_old_timespec_t.
+
+2020-04-19  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Rework printing of SO_TIMESTAMPNS_OLD and SO_TIMESTAMPING_OLD timestamps
+       On architectures with 32-bit kernel_long_t the kernel sends 32-bit
+       timespecs in SO_TIMESTAMPNS_OLD and SO_TIMESTAMPING_OLD messages.
+       Unfortunately, this applies to all 32-bit architectures including
+       those (like RV32) that do not define __ARCH_WANT_TIME32_SYSCALLS.
+
+       * print_timespec.c: Remove.
+       * Makefile.am (libstrace_a_SOURCES): Remove it.
+       * linux/arch_defs_.h (ARCH_TIMESIZE): Remove.
+       (MIN_KLONGSIZE, HAVE_ARCH_TIMESPEC32): New macros.
+       * linux/x32/arch_defs_.h (ARCH_TIMESIZE): Remove.
+       * defs.h (print_timespec32_data_size, print_timespec32_array_data_size):
+       Declare for [HAVE_ARCH_TIMESPEC32].
+       * kernel_timespec.h (kernel_timespec32_t): Define for
+       [HAVE_ARCH_TIMESPEC32].
+       * print_timespec32.c (TIMESPEC_T, PRINT_TIMESPEC_DATA_SIZE,
+       PRINT_TIMESPEC_ARRAY_DATA_SIZE): Define for [HAVE_ARCH_TIMESPEC32].
+       * msghdr.c (PRINT_TIMESPEC_DATA_SIZE, PRINT_TIMESPEC_ARRAY_DATA_SIZE):
+       Define.
+       (print_scm_timestampns_old): Use PRINT_TIMESPEC_DATA_SIZE
+       instead of print_struct_timespec_data_size.
+       (print_scm_timestamping_old): Use PRINT_TIMESPEC_ARRAY_DATA_SIZE
+       instead of print_struct_timespec_array_data_size.
+
+2020-04-19  Alistair Francis  <alistair.francis@wdc.com>
+
+       tests/waitid: Correctly use the long types from the rusage struct.
+       The kernel's rusage struct uses the kernel's __kernel_old_timeval which
+       means that even for 32-bit archs with 64-bit time_t (like RV32) the time
+       values are 32-bit.
+
+       We can fix this by making sure we don't use libc's rusage struct and
+       instead use our own with the kernel's old timeval.
+
+
+       * configure.ac (AC_CHECK_MEMBERS): Do not check for members of struct
+       rusage.
+       * tests/waitid.c: Include "kernel_rusage.h" instead of <sys/resource.h>.
+       (RU_MAXRSS, RU_IXRSS, RU_IDRSS, RU_ISRSS, RU_MINFLT, RU_MAJFLT,
+       RU_NSWAP, RU_INBLOCK, RU_OUBLOCK, RU_MSGSND, RU_MSGRCV, RU_NSIGNALS,
+       RU_NVCSW, RU_NIVCSW): Remove.
+       (sprint_rusage): Replace struct rusage with kernel_rusage_t.
+       Use the respective ru_* field names instead of removed macros.
+       (do_waitid, main): Replace struct rusage with kernel_rusage_t.
+
+       This partially reverts commit v5.6~192.
+
+2020-04-19  Alistair Francis  <alistair.francis@wdc.com>
+           Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests/getrusage: Correctly use the long types from the rusage struct.
+       The kernel's rusage struct uses the kernel's __kernel_old_timeval which
+       means that even for 32-bit archs with 64-bit time_t (like RV32) the time
+       values are 32-bit.
+
+       We can fix this by making sure we don't use libc's rusage struct and
+       instead use our own with the kernel's old timeval.
+
+
+       * tests/getrusage.c: Include "kernel_rusage.h".
+       (invoke_print): Replace struct rusage with kernel_rusage_t,
+       cast member values from kernel_long_t to unsigned long long
+       using zero_extend_signed_to_ull, update format strings.
+
+2020-04-19  Alistair Francis  <alistair.francis@wdc.com>
+           Dmitry V. Levin  <ldv@altlinux.org>
+
+       kernel_rusage.h: introduce kernel_rusage_t.
+
+       * printrusage.c: Include "kernel_rusage.h" instead of "kernel_timeval.h".
+       (rusage_t): Rename to kernel_rusage_t, move the definition to ...
+       * kernel_rusage.h: ... new file.
+       * Makefile.am (libstrace_a_SOURCES): Add it.
+
+2020-04-19  Alistair Francis  <alistair.francis@wdc.com>
+           Dmitry V. Levin  <ldv@altlinux.org>
+
+       time: Protect the print_timezone() function.
+       To avoid the following error:
+       time.c:17:1: error: 'print_timezone' defined but not used [-Werror=unused-function]
+
+       ensure that print_timezone is only defined if we are going to use it.
+
+
+       * time.c (print_timezone): Place under
+       [HAVE_ARCH_TIME32_SYSCALLS || HAVE_ARCH_OLD_TIME64_SYSCALLS] guard.
+
+       Complements: v5.6~28 "linux/32: move wait4 and [gs]ettimeofday from syscallent.h to syscallent-time32.h"
+
+2020-04-18  Kemeng Shi  <shikemeng@huawei.com>
+
+       tests: correct error message in io_uring_register test.
+       * tests/io_uring_register.c (main): If path_full failed to open,
+       print its name instead of mistakenly used path_null.
+
+2020-04-18  Paul Chaignon  <paul@cilium.io>
+
+       bpf: support new commands BPF_LINK_{CREATE,UPDATE}
+       * xlat/bpf_commands.in (BPF_LINK_CREATE): New constant introduced by Linux
+       commit v5.7-rc1~146^2~10^2^2~3.
+       (BPF_LINK_UPDATE): New constant introduced by Linux commit
+       v5.7-rc1~146^2~10^2^2~2.
+       * bpf.c (BEGIN_BPF_CMD_DECODER(BPF_LINK_CREATE),
+       BEGIN_BPF_CMD_DECODER(BPF_LINK_UPDATE)): Decode the new commands.
+       (SYS_FUNC(bpf)): Decode the new commands.
+       * bpf_attr.h (BPF_LINK_CREATE_struct): New structure introduced by Linux
+       commit v5.7-rc1~146^2~10^2^2~3.
+       (BPF_LINK_UPDATE_struct): New structure introduced by Linux commit
+       v5.7-rc1~146^2~10^2^2~2.
+       (BPF_LINK_CREATE_struct_size, BPF_LINK_UPDATE_struct_size): New macros.
+       * NEWS: Mention this.
+       * tests/bpf.c (BPF_LINK_CREATE_checks, BPF_LINK_UPDATE_checks): Tests for
+       the new commands.
+
+2020-04-18  Dmitry V. Levin  <ldv@altlinux.org>
+
+       types: do not generate TYPES_M4_FILES variable.
+       * types/gen.sh (gen_makefile): Do not generate TYPES_M4_FILES variable,
+       it isn't used anywhere.
+
+2020-04-17  Ákos Uzonyi  <uzonyi.akos@gmail.com>
+
+       Add test for %clock trace class.
+       * tests/Makefile.am (EXTRA_DIST): Add trace_clock.in.
+       * tests/gen_tests.in (trace_clock): New entry.
+       * tests/trace_clock.in: New file.
+
+2020-04-17  Ákos Uzonyi  <uzonyi.akos@gmail.com>
+
+       Add %clock trace class.
+       The %clock class includes the syscalls that read or modify system clock.
+
+       linux/*/syscallent*.h part is updated automatically by:
+       sed -i -r '
+           /"(.*adjtime.*|.*clock_([gs]et|adj).*|.*[gs]ettimeofday.*|time)"/ {
+               s/(\{[^,]*,\t[^0][^,]*)/\1|TCL/
+               s/(\{[^,]*,\s*)0/\1TCL/
+           }
+       ' linux/*/syscallent*.h
+
+       * basic_filters.c (loopup_class): Add %clock member to syscall_class[].
+       * linux/32/syscallent-time32.h: Add TCL flag to clock related syscalls.
+       * linux/64/syscallent.h: Likewise.
+       * linux/alpha/syscallent.h: Likewise.
+       * linux/arm/syscallent.h: Likewise.
+       * linux/avr32/syscallent.h: Likewise.
+       * linux/bfin/syscallent.h: Likewise.
+       * linux/hppa/syscallent.h: Likewise.
+       * linux/i386/syscallent.h: Likewise.
+       * linux/ia64/syscallent.h: Likewise.
+       * linux/m68k/syscallent.h: Likewise.
+       * linux/microblaze/syscallent.h: Likewise.
+       * linux/mips/syscallent-compat.h: Likewise.
+       * linux/mips/syscallent-n32.h: Likewise.
+       * linux/mips/syscallent-n64.h: Likewise.
+       * linux/mips/syscallent-o32.h: Likewise.
+       * linux/powerpc/syscallent.h: Likewise.
+       * linux/powerpc64/syscallent.h: Likewise.
+       * linux/s390/syscallent.h: Likewise.
+       * linux/s390x/syscallent.h: Likewise.
+       * linux/sh/syscallent.h: Likewise.
+       * linux/sh64/syscallent.h: Likewise.
+       * linux/sparc/syscallent.h: Likewise.
+       * linux/sparc64/syscallent.h: Likewise.
+       * linux/x32/syscallent.h: Likewise.
+       * linux/x86_64/syscallent.h: Likewise.
+       * linux/xtensa/syscallent.h: Likewise.
+       * strace.1.in: Add %clock description.
+       * strace.c (usage): Add %clock group to help message.
+       * sysent.h (TRACE_CLOCK): New definition.
+       * sysent_shorthand_defs.h (TC): Likewise.
+       * sysent_shorthand_undefs.h (TC): Add undef.
+       * NEWS: Mention this.
+
+2020-04-17  Ákos Uzonyi  <uzonyi.akos@gmail.com>
+
+       sysent_shorthand_undefs.h: add missing undefs.
+       Add undefs that were missing from sysent_shorthand_undefs.h
+       (mirroring defs in sysent_shorthand_defs.h).
+
+       * sysent_shorthand_undefs.h (PU): Add undef.
+       (TSD): Likewise.
+       (TC): Likewise.
+
+       Fixes: v4.21~29 "Add pure syscall flag"
+       Fixes: v5.3~36 "Add seccomp filter syscall flag"
+       Fixes: v5.5~100 "Implement %creds trace class"
+
+2020-04-17  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: use create_tmpfile.
+       * tests/fchmod.c (main): Use create_tmpfile instead of open+unlink.
+       * tests/preadv.c: Likewise.
+       * tests/sendfile.c: Likewise.
+       * tests/sendfile64.c: Likewise.
+       * tests/fcntl-common.c (create_sample): Use create_tmpfile instead of
+       mkstemp.
+
+2020-04-17  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: introduce create_tmpfile function.
+       There are few cases in tests where a file is created and immediately
+       unlinked.  Add a function to perform this action in a more systematic
+       way.
+
+       * tests/tests.h (create_tmpfile): New prototype.
+       * tests/create_tmpfile.c: New file.
+       * tests/Makefile.am (libtests_a_SOURCES): Add create_tmpfile.c.
+
+2020-04-16  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Extend memory caching of umove* functions.
+       * ucopy.c (cached_raddr): Double the size.
+       (get_next_unused_idx, lookup_cached_raddr_idx, set_cached_raddr_idx):
+       New functions.
+       (vm_read_mem): Use them.  When the data to be fetched resides in
+       up to 4 adjacent memory pages, fetch these pages and cache them.
+       * tests/umovestr_cached_adjacent.c: New file.
+       * tests/pure_executables.list: Add umovestr_cached_adjacent.
+       * tests/.gitignore: Likewise.
+       * tests/umovestr_cached.test: Handle the first argument.
+       * tests/gen_tests.in (umovestr_cached_adjacent): New test.
+
+2020-04-15  Dmitry V. Levin  <ldv@altlinux.org>
+
+       filter_seccomp: implement on systems without <linux/seccomp.h>
+       Provide fallback definitions required to implement seccomp-assisted
+       syscall filtering.
+
+       * filter_seccomp.c [!HAVE_LINUX_SECCOMP_H]: Include
+       "xlat/prctl_options.h", "xlat/seccomp_mode.h" and
+       "xlat/seccomp_ret_action.h" in XLAT_MACROS_ONLY mode, remove #warning.
+       [!HAVE_LINUX_SECCOMP_H] (struct seccomp_data): Define.
+       [!HAVE_LINUX_SECCOMP_H] (check_seccomp_filter_properties,
+       init_seccomp_filter, seccomp_filter_restart_operator): Remove stubs.
+
+       Complements: v5.3~7 "Introduce seccomp-assisted syscall filtering"
+
+2020-04-15  Dmitry V. Levin  <ldv@altlinux.org>
+
+       x86_64: provide a fallback definition of __X32_SYSCALL_BIT.
+       Make sure __X32_SYSCALL_BIT is defined on __x86_64__,
+       move fallback definitions from various files to x86_64/arch_defs_.h.
+
+       * linux/x86_64/arch_defs_.h [!__X32_SYSCALL_BIT] (__X32_SYSCALL_BIT):
+       Define.
+       * linux/x86_64/arch_get_personality.c [!__X32_SYSCALL_BIT]
+       (__X32_SYSCALL_BIT): Remove.
+       * linux/x86_64/get_scno.c: Likewise.
+       * tests/filter_seccomp-flag.c [__x86_64__]: Likewise.
+
+       Complements: v5.3~7 "Introduce seccomp-assisted syscall filtering"
+
+2020-04-15  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       xlat: add UFFDIO_COPY_MODE_WP to uffd_copy_flags.
+       * xlat/uffd_copy_flags.in (UFFDIO_COPY_MODE_WP): New constant,
+       introduced by Linux commit v5.7-rc1~58^2~121.
+       (UFFDIO_COPY_MODE_DONTWAKE): Add fall-back value.
+       * tests/ioctl_uffdio.c: Add a check for the new flag.
+
+       xlat: update mremap_flags.
+       * xlat/mremap_flags.in: Add fallback values.
+       (MREMAP_DONTUNMAP): New constant, introduced by Linux commit
+       v5.7-rc1~124^2~49.
+
+       xlat: update lwtunnel_encap_types.
+       * xlat/lwtunnel_encap_types.in (LWTUNNEL_ENCAP_SEG6_LOCAL): New
+       constant, introduced by Linux commit v4.14-rc1~130^2~348^2~2.
+       (LWTUNNEL_ENCAP_RPL): New constant, introduced by Linux commit
+       v5.7-rc1~146^2~38^2.
+
+       xlat: add XDP_FLAGS_REPLACE to xdp_flags.
+       * xlat/xdp_flags.in: Add leading zeroes to fallback values.
+       (XDP_FLAGS_REPLACE): New constant, introduced by Linux commit
+       v5.7-rc1~146^2~10^2~13^2~3.
+
+       xlat: add FAN_DIR_MODIFY to fan_event_flags.
+       * xlat/fan_event_flags.in (FAN_DIR_MODIFY): New constant, introduced
+       by Linux commit v5.7-rc1~72^2~5.
+       * tests/fanotify_mark.c: Update expected output.
+
+       xlat: update v4l2_pix_fmts.
+       * xlat/v4l2_pix_fmts.in (V4L2_PIX_FMT_SBGGR14, V4L2_PIX_FMT_SGBRG14,
+       V4L2_PIX_FMT_SGRBG14, V4L2_PIX_FMT_SRGGB14): New constants, introduced
+       by Linux commit v5.7-rc1~193^2~35.
+       (V4L2_PIX_FMT_Y14): New constant, introduced by Linux commit
+       v5.7-rc1~193^2~34.
+
+       xlat: update uring_ops.
+       * xlat/uring_ops.in (IORING_OP_SPLICE): New constant, introduced
+       by Linux commit v5.7-rc1~201^2~46.
+       (IORING_OP_PROVIDE_BUFFERS): New constant, introduced by Linux commit
+       v5.7-rc1~201^2~23.
+       (IORING_OP_REMOVE_BUFFERS): New constant, introduced by Linux commit
+       v5.7-rc1~201^2~18.
+       * tests/io_uring_register.c: Update expected output.
+
+       xlat: add SECCOMP_FILTER_FLAG_TSYNC_ESRCH to seccomp_filter_flags.
+       * xlat/seccomp_filter_flags.in: Use (1<<BIT) syntax.
+       (SECCOMP_FILTER_FLAG_TSYNC_ESRCH): New constant, introduced by Linux
+       commit v5.7-rc1~198^2~1.
+       * tests/seccomp-filter.c: Update expected output.
+       * tests/seccomp-filter-v.c: Likewise.
+
+       xlat: add IORING_FEAT_FAST_POLL to uring_setup_features.
+       * xlat/uring_setup_features.in (IORING_FEAT_FAST_POLL): New constant,
+       introduced by Linux commit v5.7-rc1~201^2~36.
+
+       xlat: add V4L2_CID_USER_ATMEL_ISC_BASE to v4l2_control_id_bases.
+       * xlat/v4l2_control_id_bases.in (V4L2_CID_USER_ATMEL_ISC_BASE): New
+       constant, introdued by Linux commit v5.7-rc1~193^2~219.
+
+       xlat: add KVM_CAP_S390_PROTECTED and KVM_CAP_PPC_SECURE_GUEST to kvm_cap
+       * xlat/kvm_cap.in (KVM_CAP_S390_PROTECTED): New constant, introduced
+       by Linux commit v5.7-rc1~121^2~15^2~4.
+       (KVM_CAP_PPC_SECURE_GUEST): New constant, introduced by Linux commit
+       v5.7-rc1~121^2~12^2.
+
+       xlat: add PERF_SAMPLE_BRANCH_HW_INDEX to perf_branch_sample_type.
+       * xlat/perf_branch_sample_type.in (PERF_SAMPLE_BRANCH_HW_INDEX): New
+       constant, introduced by Linux commit v5.7-rc1~180^2~23.
+       * tests/perf_event_open.c: Update expected output.
+
+2020-04-15  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       tests: allow passing arguments to netlink_sock_diag.test.
+       And remove netlink_sock_diag-v.sh, since it is no longer needed.
+
+       * tests/netlink_sock_diag.test: Pass script's arguments to
+       run_strace_match_diff call.
+       * tests/gen_tests.in (nlattr_packet_diag_msg): Call
+       netlink_sock_diag.test with -v instead of netlink_sock_diag-v.sh..
+       * tests/netlink_sock_diag-v.sh: Remove.
+       * tests/Makefile.am (EXTRA_DIST): Remove netlink_sock_diag-v.sh.
+
+2020-04-15  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       tests: use the FLAG macro instead of a locally defined one in clone3 test
+       * tests/clone3.c (_): Remove.
+       (enum validity_flags): Use FLAG() instead of _().
+
+2020-04-15  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       clone: add more elaborate comments for struct strace_clone_args field.
+       Try to capture field semantics and type.
+
+       * clone.c (struct strace_clone_args): Add/extend comments for the
+       fields.
+
+2020-04-14  Fabrice Fontaine  <fontaine.fabrice@gmail.com>
+
+       ptrace_syscall_info.c: fix build without fork.
+       Build without fork fails on:
+
+       ptrace_syscall_info.c:33:27: error: 'expected_entry_size' defined but not used [-Werror=unused-const-variable=]
+        static const unsigned int expected_entry_size =
+                                  ^~~~~~~~~~~~~~~~~~~
+       ptrace_syscall_info.c:31:27: error: 'expected_none_size' defined but not used [-Werror=unused-const-variable=]
+        static const unsigned int expected_none_size =
+                                  ^~~~~~~~~~~~~~~~~~
+       ptrace_syscall_info.c:24:1: error: 'kill_tracee' defined but not used [-Werror=unused-function]
+        kill_tracee(pid_t pid)
+        ^~~~~~~~~~~
+
+       Fixes:
+        - http://autobuild.buildroot.org/results/ffc81d3798379a9c34c7a708ebbdea27409f755d
+
+
+       * ptrace_syscall_info.c (kill_tracee, expected_none_size,
+       expected_entry_size): Move definitions under [HAVE_FORK] guard.
+
+       Resolves: https://github.com/strace/strace/pull/135
+
+2020-04-13  Paul Chaignon  <paul@cilium.io>
+
+       bpf: update BPF_* constants.
+       * xlat/bpf_attach_types.in (BPF_MODIFY_RETURN): New constant introduced by
+       Linux kernel commit v5.7-rc1~146^2~174^2~45^2~4.
+       (BPF_LSM_MAC): New constant introduced by Linux kernel commit
+       v5.7-rc1~146^2~10^2~9^2~7.
+       * xlat/bpf_prog_types.in (BPF_PROG_TYPE_LSM): New constant introduced by
+       Linux kernel commit v5.7-rc1~146^2~10^2~9^2~7.
+       * NEWS: Mention this.
+       * tests/bpf.c (BPF_PROG_LOAD_checks, BPF_PROG_QUERY_checks): Update checks
+       and their expected output.
+       * tests/kernel_version.c (print_bpf_attr, main): Likewise.
+
+2020-04-12  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Makefile.am: move almost all of strace_SOURCES to libstrace_a_SOURCES.
+       There is no need to track files that are used conditionally.
+
+       * Makefile.am (strace_SOURCES): Move all except strace.c ...
+       (libstrace_a_SOURCES): ... here.
+
+2020-04-12  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Rewrite decoders of getdents, getdents64, and readdir syscalls.
+       The old approach of allocating memory for all dentries returned by
+       getdents/getdents64 was problematic, fix it by fetching and printing
+       dentries sequentially.
+
+       * dirent_types.c: New file.
+       * xgetdents.c: Likewise.
+       * xgetdents.h: Likewise.
+       * Makefile.am (strace_SOURCES): Add them.
+       * dirent.c: Include "xgetdents.h" and "print_fields.h".
+       (header_size): New variable.
+       (print_dentry_head, decode_dentry_head, decode_dentry_tail): New
+       functions.
+       (print_old_dirent): Rewrite using print_dentry_head.
+       (SYS_FUNC(getdents)): Rewrite using xgetdents, decode_dentry_head,
+       and decode_dentry_tail.
+       * dirent64.c: Include "xgetdents.h", "kernel_dirent.h"
+       and "print_fields.h" instead of "defs.h", <dirent.h>
+       and "xlat/dirent_types.h".
+       (decode_dentry_head, decode_dentry_tail): New functions.
+       (SYS_FUNC(getdents64)): Rewrite using xgetdents, decode_dentry_head,
+       and decode_dentry_tail.
+
+       Resolves: https://github.com/strace/strace/issues/19
+       Resolves: https://github.com/strace/strace/pull/20
+
+2020-04-11  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Guard against invalid return values of getdents/getdents64 syscalls.
+       The kernel is not expected to return more bytes than requested.
+       If this ever happens, treat it as an error.
+
+       * dirent.c (SYS_FUNC(getdents)): Treat the return value greater than
+       the third argument of syscall as an error.
+       * dirent64.c (SYS_FUNC(getdents64)): Likewise.
+
+2020-04-11  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Print the second argument of getdents/getdents64 syscalls in abbrev mode
+       * dirent.c (SYS_FUNC(getdents)) [!abbrev(tcp)]: Print u_arg[1] along
+       with the number of entries.
+       * dirent64.c (SYS_FUNC(getdents64)) [!abbrev(tcp)]: Likewise.
+       * tests/xgetdents.c (ls): Update expected output.
+
+       tests: check abbreviated decoding of getdents and getdents64 syscalls.
+       * tests/getdents-v.c: New file.
+       * tests/getdents64-v.c: Likewise.
+       * tests/pure_executables.list: Add getdents-v and getdents64-v.
+       * tests/.gitignore: Likewise.
+       * tests/gen_tests.in (getdents-v, getdents64-v): New entries.
+       (getdents, getdents64): Update.
+       * tests/getdents.c (print_dirent): Define only if [VERBOSE].
+       * tests/getdents64.c (print_dirent): Likewise.
+       * tests/xgetdents.c (str_d_type): Likewise.
+       (ls): Handle [!VERBOSE] case.
+       (main) [VERBOSE]: Add "-v" to dname.
+
+       tests: refactor getdents and getdents64 tests.
+       * tests/xgetdents.c: New file.
+       * tests/Makefile.am (EXTRA_DIST): Add xgetdents.c.
+       * tests/getdents.c: Rewrite using xgetdents.c.
+       * tests/getdents64.c: Likewise.
+
+2020-04-11  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Move kernel_dirent64 definition to kernel_dirent.h.
+       ... and rename kernel_dirent64 type to kernel_dirent64_t
+
+       * tests/getdents64.c: Include "kernel_dirent.h", rename kernel_dirent64
+       to kernel_dirent64_t.
+       (kernel_dirent64_t): Move ...
+       * kernel_dirent.h: ... here.
+
+2020-04-11  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Move kernel_dirent definition from kernel_types.h to a separate header.
+       ... and rename kernel_dirent type to kernel_dirent_t
+
+       * kernel_types.h (kernel_dirent): Rename to kernel_dirent_t, move ...
+       * kernel_dirent.h: ... to new file.
+       * Makefile.am (strace_SOURCES): Add it.
+       * dirent.c: Include "kernel_dirent.h", rename kernel_dirent
+       to kernel_dirent_t.
+       * tests/getdents.c: Likewise.
+
+2020-04-09  Eugene Syromyatnikov  <evgsyr@gmail.com>
+           Dmitry V. Levin  <ldv@altlinux.org>
+
+       strace: fix -E/--env options affecting strace environment.
+       The current approach with putenv() during parsing has a problem:
+       it changes strace's own environment which may affect its behaviour
+       in an unacceptable way.
+
+       As a solution, let's apply an approach similar to path tracing option
+       parsing: collect the provided optarg's in an array, then construct
+       a new environment and pass it to startup_child().
+
+       * strace.c (struct exec_params): Add env field.
+       (exec_or_die): Call execve() instead of execv(); pass params->env
+       as the third argument.
+       (startup_child): Add env parameter, set params_for_tracee.env to it.
+       (remove_from_env, add_to_env, update_env, make_env): New functions.
+       (init): Add env_changes, env_change_size, env_change_count local
+       variables; store optarg in env_changes array on -E option occurrence;
+       construct new environment using make_env and pass it to startup_child
+       in the second argument.
+       * tests/strace-E-override.test: New test.
+       * tests/Makefile.am (MISC_TESTS): Add strace-E-override.test.
+
+2020-04-09  Eugene Syromyatnikov  <evgsyr@gmail.com>
+           Dmitry V. Levin  <ldv@altlinux.org>
+
+       xmalloc: add xallocarray.
+       Add a wrapper around malloc with calloc interface.
+
+       * xmalloc.h (xallocarray): New function declaration.
+       * xmalloc.c (xallocarray): New function.
+
+2020-04-09  Eugene Syromiatnikov  <esyr@redhat.com>
+           Dmitry V. Levin  <ldv@altlinux.org>
+
+       strace: move pathtrace_select calls to a later initialisation stage.
+       Since path name resolution is specific to the tracing backend
+       (especially when tracees are remote), let's first collect the list
+       of paths to trace in a temporary array and add it later during the
+       initialisation.
+
+       * strace.c (init): Add pathtrace_paths temporary array, with its
+       element count stored in pathtrace_count and size in pathtrace_size.
+       (init) <case 'P'>: Store argument in pathtrace_paths, grow it if needed.
+       (init): Iterate over pathtrace_paths and call pathtrace_select for each
+       element.  Free the array.
+       * tests/options-syntax.test: Check that path name resolution happens
+       but not too early.
+
+2020-04-09  Eugene Syromyatnikov  <evgsyr@gmail.com>
+           Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: check -E/--env unset behaviour.
+       * tests/strace-E-unset.test: Likewise.
+       * tests/strace-E-unset.expected: New file.
+       * tests/Makefile.am (MISC_TESTS): Add strace-E-unset.test.
+       (EXTRA_DIST): Add strace-E-unset.expected.
+
+2020-04-09  Eugene Syromyatnikov  <evgsyr@gmail.com>
+           Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: add support for negative match patterns to match_grep.
+       For the cases when we want that some patterns do not appear in the
+       output.
+
+       * tests/init.sh (match_grep): Add rc and negated local variables; set
+       negated to 1 if pattern starts with "!", otherwise to 0; fail if negated
+       pattern has been matched.
+
+2020-04-09  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 5.6-1.
+       * strace.spec.in: Likewise.
+
+2020-04-07  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Prepare for 5.6 release.
+       * NEWS: Update for 5.6 release.
+
+       .mailmap: add more entries to avoid duplication in CREDITS.
+
+2020-04-07  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: cleanup temporary files left by read-write test executable.
+       This test executable is invoked by 19 tests, leaving about 100M
+       of data in temporary files.
+
+       In each of these tests read-write is invoked twice: the first time by
+       run_prog and the second time by run_strace.  Since the temporary file
+       created during the first invocation is used by strace during the second
+       invocation, this file can only be cleaned up at the end of the second
+       invocation.
+
+       * tests/read-write.c (main): If the temporary file was not created,
+       unlink it before the exit.
+
+2020-04-07  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: rewrite redirect.test without a busy loop.
+       * tests/redirect.test: Invoke $SLEEP_A_BIT while waiting
+       for synchronization with the tracer.
+
+2020-04-06  Dmitry V. Levin  <ldv@altlinux.org>
+
+       README.md: add github CI status badge.
+
+2020-04-06  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       strace: make -yy equivalent to --decode-fds=all.
+       With inclusion of device file and, later, pidfd decoding into -yy
+       semantics, it is clear that one cannot rely on stability of set
+       of file descriptor decoding features enabled by -yy.  State that
+       formally by aliasing -yy to --decode-fds=all.  Those who want only
+       specific FD decoding capabilities being enabled know that they need
+       it and can resort to --decode-fds=SET syntax.
+
+       * strace.1.in (.SS Output formatting): Change -yy alias
+       to --decode-fds=all, update the -yy option description.
+       * strace.c (usage): Likewise; expand --decode-fds description.
+       (init): Change yyflag_qual value to "all".
+
+2020-04-06  Dmitry V. Levin  <ldv@altlinux.org>
+
+       travis: remove build jobs covered by github actions.
+       * .travis.yml: Remove all bionic build jobs on x86_64, x86, and x32 except
+       the first one which is probably the fasted and is kept for reference.
+       Remove all gcc-8 and gcc-9 jobs since the corresponding repositories
+       are broken.
+
+2020-04-06  Dmitry V. Levin  <ldv@altlinux.org>
+
+       github: add CI action.
+       Somewhat similar to Travis CI, this runs "make distcheck" on Ubuntu
+       18.04 using gcc-9, gcc-7, clang-9, and clang-6 on x86_64, x86, and x32
+       architectures.
+
+       Compared with Travis CI, GitHub Actions service currently provides
+       a significantly better parallelism as well as (unsurprisingly)
+       better integration with github.
+
+       However, GitHub Actions cannot replace Travis CI completely as
+       the latter can build on aarch64, s390x, and ppc64le architectures.
+
+       * .github/workflows/source-code-check.yml: Remove.
+       * .github/workflows/ci.yml: New file.
+
+2020-04-06  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: fix poll-P.test.
+       All invocations of poll-P executable must have a properly created
+       descriptor 9.
+
+       * tests/poll-P.test: Fix run_prog invocations.
+
+       Fixes: v4.21~122 "tests: check path tracing of poll syscall"
+
+2020-04-06  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: remove poll-P and ppoll-P from pure_executables.list.
+       Since these executables have to be invoked in a special way,
+       it was not correct to include them into pure_executables.list.
+
+       * tests/pure_executables.list: Move poll-P and ppoll-P ...
+       * tests/Makefile.am (check_PROGRAMS): ... here.
+
+       Fixes: v4.21~122 "tests: check path tracing of poll syscall"
+       Fixes: v4.21~121 "tests: check path tracing of ppoll syscall"
+
+2020-04-06  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: workaround clang compilation warning.
+       Silence the following incorrect compilation warning produced by clang:
+
+       tests/io_uring_register.c:271:10: error: format specifies type 'unsigned short' but the argument has type 'int' [-Werror,-Wformat]
+                               probe->ops[i].flags & (typeof(probe->ops[i].flags)) ~1,
+                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+       * tests/io_uring_register.c (main): Cast the whole
+       struct io_uring_probe_op.flags based expression
+       to the type of the first operand.
+
+       Complements: v5.5-183-g8b6487f9a "tests: fix clang compilation warning"
+
+2020-04-05  Dmitry V. Levin  <ldv@altlinux.org>
+
+       travis: update coverage configuration.
+       * .travis.yml [$CHECK == coverage]: Change dist from trusty to bionic,
+       change the compiler from gcc to gcc-9, change STACKTRACE from libunwind
+       to libdw.
+       * ci/run-build-and-tests.sh [$CHECK == coverage] (GCOV): New variable,
+       pass its value to ./codecov.bash.
+
+2020-04-05  Dmitry V. Levin  <ldv@altlinux.org>
+
+       ci: workaround unusable codecov-python.
+       As codecov-python, starting with commit
+       v2.0.15-44-g9f50cca7e5c5e0bb5e2859db238da08e3195e105 released almost
+       a month ago, became an utterly unusable pile of garbage, switch to
+       codecov-bash that still works.
+
+       * ci/install-dependencies.sh [$CHECK == coverage]: Do not install
+       lcov, python-pip, python-setuptools, and codecov.  Download
+       https://codecov.io/bash and save it as codecov.bash.
+       * ci/run-build-and-tests.sh [$CHECK == coverage] (ac_cv_prog_LCOV,
+       ac_cv_prog_GENHTML): New variables, export them.
+       [[$CHECK == coverage]: Invoke codecov.bash instead of codecov.
+
+2020-04-05  Dmitry V. Levin  <ldv@altlinux.org>
+
+       ci: use twice as many cpus for tests.
+       Since many tests sleep a lot, running more of them in parallel
+       increases overall performance.
+
+       * ci/run-build-and-tests.sh (j2): New variable.
+       Use it instead of $j for "make check" and "make distcheck".
+
+2020-04-05  Dmitry V. Levin  <ldv@altlinux.org>
+
+       ci: use -Og instead of -O0 for coverage builds.
+       Also, do not apply this debugging optimization level to tests.
+
+       * ci/run-build-and-tests.sh [$CHECK == coverage] (CFLAGS,
+       CFLAGS_FOR_BUILD): Remove.
+       [$CHECK == coverage]: Specify CFLAGS='-g -Og' to "make all".
+
+2020-04-05  Dmitry V. Levin  <ldv@altlinux.org>
+
+       travis: switch from clang 7 to clang-9.
+       * .travis.yml (matrix): Switch all clang 7 builds to clang-9.
+
+2020-04-05  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       NEWS: mention libdw symbol-to-address cache introduction.
+       Complements: v5.5-178-g2101456 "unwind-libdw: add caching"
+
+2020-04-05  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: fix clang compilation warning.
+       Silence the following compilation warning produced by clang:
+
+       tests/io_uring_register.c:271:10: error: format specifies type 'unsigned short' but the argument has type 'int' [-Werror,-Wformat]
+                               probe->ops[i].flags & ~1,
+                               ^~~~~~~~~~~~~~~~~~~~~~~~
+
+       * tests/io_uring_register.c (main): Cast the second operand
+       of struct io_uring_probe_op.flags based expression to the type
+       of the first operand.
+
+2020-04-05  Paul Chaignon  <paul.chaignon@gmail.com>
+
+       bpf: support new commands BPF_MAP_*_BATCH.
+       * xlat/bpf_commands.in (BPF_MAP_LOOKUP_BATCH): New constant introduced
+       by Linux commit v5.6-rc1~151^2~46^2~23^2~7.
+       (BPF_MAP_LOOKUP_AND_DELETE_BATCH): New constant introduced by Linux
+       commit v5.6-rc1~151^2~46^2~23^2~4.
+       (BPF_MAP_UPDATE_BATCH, BPF_MAP_DELETE_BATCH): New constants introduced
+       by Linux commit v5.6-rc1~151^2~46^2~23^2~6.
+       * bpf.c (BEGIN_BPF_CMD_DECODER(BPF_MAP_LOOKUP_BATCH),
+       BEGIN_BPF_CMD_DECODER(BPF_MAP_UPDATE_BATCH),
+       BEGIN_BPF_CMD_DECODER(BPF_MAP_DELETE_BATCH)): Decode the new commands.
+       (decode_BPF_MAP_LOOKUP_AND_DELETE_BATCH): New macro.
+       (SYS_FUNC(bpf)): Decode the new commands.
+       * bpf_attr.h (BPF_MAP_LOOKUP_BATCH_struct,
+       BPF_MAP_LOOKUP_AND_DELETE_BATCH_struct, BPF_MAP_UPDATE_BATCH_struct,
+       BPF_MAP_DELETE_BATCH_struct): New structs introduced by Linux commit
+       v5.6-rc1~151^2~46^2~23^2~7.
+       (BPF_MAP_LOOKUP_BATCH_struct_size,
+       BPF_MAP_LOOKUP_AND_DELETE_BATCH_struct_size,
+       BPF_MAP_UPDATE_BATCH_struct_size, BPF_MAP_DELETE_BATCH_struct_size): New
+       macros.
+       * NEWS: Mention this.
+       * tests/bpf.c (BPF_MAP_LOOKUP_BATCH_checks, BPF_MAP_UPDATE_BATCH_checks,
+       BPF_MAP_DELETE_BATCH_checks): Tests for the new commands.
+
+2020-04-05  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       Print PIDs associated with pidfds.
+       * number_set.h (decode_fd_bits): Add DECODE_FD_PIDFD to enum.
+       * filter_qualify.c (decode_fd_str_to_uint) <decode_fd_strs>: Add pidfd
+       argument name and value.
+       * util.c (printpidfd): New function.
+       (printfd): Call printpidfd if DECODE_FD_PIDFD is set.
+       * strace.c (init) <yyflag_qual>: Add pidfd.
+       (usage): Document pidfd option argument.
+       * strace.1.in (.SS Output format): Likewise.
+       * tests/pidfd_getfd-yy.c: New file.
+       * tests/pidfd_open--decode-fd-pidfd.c: Likewise.
+       * tests/pidfd_open--decode-fd-socket.c: Likewise.
+       * tests/pidfd_open-yy.c: Likewise.
+       * tests/.gitignore: Add pidfd_getfd-yy, pidfd_open--decode-fd-pidfd,
+       pidfd_open--decode-fd-socket, and pidfd_open-yy.
+       * tests/pure_executables.list: Likewise.
+       * tests/gen_tests.in: Add pidfd_getfd-yy, pidfd_open--decode-fd-pidfd,
+       pidfd_open--decode-fd-socket, and pidfd_open-yy tests.
+       * tests/pidfd_getfd.c [!PRINT_PIDFD] (PRINT_PIDFD): New macro, define
+       to 0.
+       (main) [PRINT_PIDFD]: New variable pidfd_str, print expected pidfd
+       string to it.
+       (main) [!PRINT_PIDFD]: New variable pidfd_str, set it to PIDFD_PATH.
+       (main): Print pidfd_str instead of PIDFD_PATH.
+       * tests/pidfd_open.c (main) [PRINT_PIDFD]: Print pidfd using "<pid:%d>"
+       format.
+       * NEWS: Mention the change.
+
+2020-04-03  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Update copyright headers.
+       Headers updated automatically using maint/update_copyright_years.sh
+       script.
+
+2020-04-03  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Fix preprocessor indentation.
+       Indent the C preprocessor directives to reflect their nesting
+       using the following script:
+
+       $ cppi -l $(git grep -El '^[[:space:]]*#[[:space:]]*(if|ifdef|ifndef|elif|else|endif|define|pragma)[[:space:]]' |grep -v '\.sh$') |while read f; do
+               cppi < "$f" > "$f".cppi; mv "$f".cppi "$f"
+       done
+
+2020-04-03  Jann Horn  <jannh@google.com>
+
+       unwind-libdw: add caching.
+       libdw's address-to-symbol logic is quite slow. Since when stracing a
+       process, it is normal to see the same call sites over and over again,
+       let's address that by adding a straightforward N-way associative cache
+       in front of libdw.
+
+       The cache parameters could probably use some fine-tuning,
+       but ought to be good enough for now.
+
+       The resulting performance improvement:
+
+       $ time ./strace-orig -o /dev/null -k bash -c 'for i in {0..10000}; do echo; done' >/dev/null
+
+       real    0m12,014s
+       user    0m11,512s
+       sys     0m0,575s
+       $ time ./strace-cache -o /dev/null -k bash -c 'for i in {0..10000}; do echo; done' >/dev/null
+
+       real    0m0,765s
+       user    0m0,451s
+       sys     0m0,371s
+
+       Reviewed-By: Masatake YAMATO <yamato@redhat.com>
+
+       * unwind-libdw.c: Include "static_assert.h".
+       (STRACE_UW_CACHE_SIZE, STRACE_UW_CACHE_ASSOC): New macros.
+       (struct cache_entry): New type.
+       (struct ctx): Add "cache" field, extend the type of "last_proc_updating"
+       field.
+       (mapping_generation): Extend the type, initialize to 1.
+       (uwcache_clock): New variable.
+       (tcb_init): Initialize struct ctx.cache.
+       (truct frame_user_data): Add "ctx" field.
+       (find_bucket): New function.
+       (frame_callback): Use it.
+       (tcb_walk): Initialize user_data.ctx.
+
+2020-04-02  Dmitry V. Levin  <ldv@altlinux.org>
+
+       sparc, sparc64: wire up former vserver syscall.
+       ... because Linux kernel arch/sparc/kernel/syscalls/syscall.tbl
+       still lists it.
+
+       * linux/sparc/syscallent.h [267]: Add vserver entry.
+       * linux/sparc64/syscallent.h [267]: Add vserver entry.
+
+2020-04-02  Dmitry V. Levin  <ldv@altlinux.org>
+
+       hppa: wire up kexec_file_load syscall.
+       ... introduced on hppa by Linux kernel commit v5.4-rc1~188^2~3.
+
+       * linux/hppa/syscallent.h [355]: Add kexec_file_load entry.
+       * NEWS: Mention this.
+
+2020-04-02  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       hdio: implement HDIO_DRIVE_CMD ioctl command decoding.
+       * xlat/hdio_drive_cmds.in: New file.
+       * hdio.c: Include "xlat/hdio_drive_cmds.h".
+       (print_hdio_drive_cmd): New function.
+       (hdio_ioctl): Call print_hdio_drive_cmd if code is HDIO_DRIVE_CMD.
+       * tests/ioctl_hdio.c (main) <unsupp_cmds>: Remove HDIO_DRIVE_CMD.
+       (main): Add HDIO_DRIVE_CMD checks.
+
+       Closes: https://github.com/strace/strace/issues/83
+
+2020-04-02  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       hdio: factor out the HDIO_GETGEO handler into a separate function.
+       And update it up to the current coding style.
+
+       * hdio.c: Include "print_fields.h".
+       (print_hdio_getgeo): New function.
+       (hdio_ioctl) <case HDIO_GETGEO>: Call print_hdio_getgeo instead
+       of decoding in place.
+
+2020-04-02  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       tests: check decoding of HDIO_* ioctls.
+       * tests/.gitignore: Add ioctl_hdio, ioctl_hdio-success,
+       ioctl_hdio-success-Xabbrev, ioctl_hdio-success-Xraw,
+       ioctl_hdio-success-Xverbose, ioctl_hdio-success-v,
+       ioctl_hdio-success-v-Xabbrev, ioctl_hdio-success-v-Xraw,
+       ioctl_hdio-success-v-Xverbose, ioctl_hdio-Xabbrev,
+       ioctl_hdio-Xraw, ioctl_hdio-Xverbose, ioctl_hdio-v,
+       ioctl_hdio-v-Xabbrev, ioctl_hdio-v-Xraw, and ioctl_hdio-v-Xverbose.
+       * tests/Makefile.am (check_PROGRAMS): Add ioctl_hdio-success,
+       ioctl_hdio-success-Xabbrev, ioctl_hdio-success-Xraw,
+       ioctl_hdio-success-Xverbose, ioctl_hdio-success-v,
+       ioctl_hdio-success-v-Xabbrev, ioctl_hdio-success-v-Xraw,
+       and ioctl_hdio-success-v-Xverbose.
+       * tests/gen_tests.in (ioctl_hdio, ioctl_hdio-Xabbrev, ioctl_hdio-Xraw,
+       ioctl_hdio-Xverbose, ioctl_hdio-v, ioctl_hdio-v-Xabbrev,
+       ioctl_hdio-v-Xraw, ioctl_hdio-v-Xverbose, ioctl_hdio-success,
+       ioctl_hdio-success-Xabbrev, ioctl_hdio-success-Xraw,
+       ioctl_hdio-success-Xverbose, ioctl_hdio-success-v,
+       ioctl_hdio-success-v-Xabbrev, ioctl_hdio-success-v-Xraw,
+       ioctl_hdio-success-v-Xverbose): New tests.
+       * tests/ioctl_hdio.c: New file.
+       * tests/ioctl_hdio-Xabbrev.c: Likewise.
+       * tests/ioctl_hdio-Xraw.c: Likewise.
+       * tests/ioctl_hdio-Xverbose.c: Likewise.
+       * tests/ioctl_hdio-success.c: Likewise.
+       * tests/ioctl_hdio-success-Xabbrev.c: Likewise.
+       * tests/ioctl_hdio-success-Xraw.c: Likewise.
+       * tests/ioctl_hdio-success-Xverbose.c: Likewise.
+       * tests/ioctl_hdio-success-v.c: Likewise.
+       * tests/ioctl_hdio-success-v-Xabbrev.c: Likewise.
+       * tests/ioctl_hdio-success-v-Xraw.c: Likewise.
+       * tests/ioctl_hdio-success-v-Xverbose.c: Likewise.
+       * tests/ioctl_hdio-v.c: Likewise.
+       * tests/ioctl_hdio-v-Xabbrev.c: Likewise.
+       * tests/ioctl_hdio-v-Xraw.c: Likewise.
+       * tests/ioctl_hdio-v-Xverbose.c: Likewise.
+       * tests/pure_executables.list: Add ioctl_hdio, ioctl_hdio-Xabbrev,
+       ioctl_hdio-Xraw, ioctl_hdio-Xverbose, ioctl_hdio-v,
+       ioctl_hdio-v-Xabbrev, ioctl_hdio-v-Xraw, and ioctl_hdio-v-Xverbose.
+
+2020-04-02  Dmitry V. Levin  <ldv@altlinux.org>
+
+       linux/32: move wait4 and [gs]ettimeofday from syscallent.h to syscallent-time32.h
+       According to Linux kernel include/uapi/asm-generic/unistd.h, starting
+       with commit v5.1-rc1~160^2~1^2~3 __NR_wait4, __NR_gettimeofday, and
+       __NR_settimeofday are placed under __ARCH_WANT_TIME32_SYSCALLS and
+       therefore should belong to syscallent-time32.h along with other 32-bit
+       time_t based syscalls.
+
+       * linux/32/syscallent.h [169, 170, 260]: Move entries ...
+       * linux/32/syscallent-time32.h: ... here.
+       * time.c (SYS_FUNC(gettimeofday), SYS_FUNC(settimeofday)): Place under
+       [HAVE_ARCH_TIME32_SYSCALLS || HAVE_ARCH_OLD_TIME64_SYSCALLS] guard.
+       * wait.c (SYS_FUNC(wait4)): Likewise.
+
+       Complements: v5.5-39-gcc7e89011 "linux/32: Split 32-bit time_t based syscalls into a separate header"
+
+2020-04-02  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: fix another race condition in strace-DD.test.
+       Apparently, timeout(1) utility first sends its signal to the child
+       process, then installs a signal handler, and finally sends its signal to
+       the process group.  This creates a race between timeout(1) and strace,
+       the latter can manage to handle tracee syscall exit trap before a signal
+       to the process group is delivered.
+
+       * tests/setpgrp-exec.c: New file.
+       * tests/strace-DD.test: Rewrite without use of timeout(1).
+       * tests/strace-DD.expected: Remove.
+       * tests/Makefile.am (check_PROGRAMS): Add setpgrp-exec.
+       (EXTRA_DIST): Remove strace-DD.expected.
+
+       Fixes: v5.4~106 "tests: check -DD and -DDD options"
+
+2020-04-01  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: add a workaround for trace_creds test on mips o32.
+       Since every mips o32 executable used by trace_creds test invokes
+       prctl(PR_GET_FP_MODE) on their own and these calls are not filtered out
+       by %creds, they have to be filtered out manually before comparison.
+
+       * tests/init.sh (test_pure_prog_set) [$STRACE_ARCH == mips &&
+       $MIPS_ABI == o32 && $NAME == *creds]: Filter out prctl(PR_GET_FP_MODE)
+       from the strace log before comparison.
+
+2020-04-01  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Lift experimental status from --seccomp-bpf feature.
+       * strace.1.in (.SH OPTIONS) <--seccomp-bpf>: Remove " (experimental)".
+
+       strace.1: enhance --seccomp-bpf description.
+       * strace.1.in (.SH OPTIONS) <--seccomp-bpf>: Reword for clarity.
+
+2020-04-01  Dmitry V. Levin  <ldv@altlinux.org>
+
+       strace.1: fix --seccomp-bpf description.
+       * strace.1.in (.SH OPTIONS) <--seccomp-bpf>: Remove the claim that this
+       option implies -f, document that --seccomp-bpf has no effect unless
+       -f/--follow-forks is also specified.
+
+       Complements: v5.5-38-g2a7ba2a97 "strace: disable seccomp-bpf instead of enabling following forks"
+
+2020-04-01  Dmitry V. Levin  <ldv@altlinux.org>
+
+       ci: use kernel headers from Linux kernel v5.6.
+       When Linux kernel merge window opens, changes of all sorts start to pour
+       down, breaking UAPI in various ways.  This does not work for strace,
+       we need a stable UAPI.
+
+       * .gitlab-ci.yml (variables): Add KBRANCH.
+       * .travis.yml (env:global): Likewise.
+
+2020-03-31  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: fix get*id-creds tests on mips.
+       Apparently, mips executables may invoke prctl(PR_GET_FP_MODE) on their
+       own.  Since these calls are not filtered out by %creds, they have to be
+       dealt with before comparison.
+
+       * tests/getuid.test [$STRACE_ARCH == mips]: Filter out
+       prctl(PR_GET_FP_MODE) from the log of %creds tests.
+
+2020-03-31  Gleb Fotengauer-Malinovskiy  <glebfm@altlinux.org>
+
+       Update ioctl entries from linux v5.6.
+       * linux/32/ioctls_inc_align16.h: Update from linux v5.6
+       using ioctls_gen.sh.
+       * linux/32/ioctls_inc_align32.h: Likewise.
+       * linux/32/ioctls_inc_align64.h: Likewise.
+       * linux/64/ioctls_inc.h: Likewise.
+       * linux/x32/ioctls_inc0.h: Likewise.
+       * linux/s390/ioctls_arch0.h: Likewise.
+       * linux/s390x/ioctls_arch0.h: Likewise.
+       * NEWS: Mention this.
+
+       maint: update for linux v5.6.
+       * maint/ioctls_sym.sh: Add workarounds for media/v4l2-ioctl.h and
+       sound/pcm.h headers.
+
+2020-03-31  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       Update NEWS.
+
+2020-03-31  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: fix race condition in strace-D.test.
+       * tests/strace-D.test (test_parent_tracer_pid): Wait for the tracer
+       completion before checking its log.
+
+       Fixes: v5.4~110 "tests: check -D option"
+
+2020-03-31  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: fix race condition in strace-DDD.test.
+       * tests/tracer_ppid_pgid_sid.c (main): Print tracer pid.
+       * tests/strace-DDD.test: Check tracer pid, wait for the tracer
+       completion before checking its log.
+
+       Reported-by: Eugene Syromyatnikov <evgsyr@gmail.com>
+       Fixes: v5.4~106 "tests: check -DD and -DDD options"
+
+2020-03-31  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: fix race condition in strace-DD.test.
+       Apparently, $SLEEP_A_BIT might be insufficient for the tracer
+       to complete.
+
+       * tests/strace-DD.test: Find out the tracer pid and wait for the tracer
+       completion before checking its log.
+
+       Suggested-by: Eugene Syromyatnikov <evgsyr@gmail.com>
+       Fixes: v5.4~106 "tests: check -DD and -DDD options"
+
+2020-03-31  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: split getxxid test.
+       getxxid used to test alpha-specific getxgid, getxuid, and getxgid
+       syscalls.  Now each of these syscalls has its own test.
+       This hopefully fixes trace_creds test on alpha.
+
+       * tests/getxxid.c: Split into getxpid.c, getxuid.c, and getxgid.c.
+       * tests/gen_tests.in (getxxid): Remove.
+       (getxgid, getxpid, getxuid): New tests.
+       * tests/pure_executables.list: Replace getxxid with getxgid, getxpid,
+       and getxuid.
+       * tests/.gitignore: Likewise.
+
+2020-03-30  Dmitry V. Levin  <ldv@altlinux.org>
+
+       ia64: rename getpagesize syscall entry to old_getpagesize.
+       ... to match the Linux kernel that introduced __NR_old_getpagesize
+       by commit v5.0-rc1~164^2~4.
+
+       * linux/ia64/syscallent.h [BASE_NR + 147]: Rename "getpagesize"
+       to "old_getpagesize".
+
+2020-03-30  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: disable umovestr_cached.test on mips o32 unless PTRACE_GET_SYSCALL_INFO works
+       If PTRACE_GET_SYSCALL_INFO does not work, then the test has to be
+       skipped on mips o32 because only the first four syscall arguments are
+       obtained from registers on that architecture, remaining syscall
+       arguments have to be fetched from the tracee memory.
+
+       * tests/umovestr_cached.test [$STRACE_ARCH == mips && $MIPS_ABI == o32]:
+       Skip the test if PTRACE_GET_SYSCALL_INFO does not work.
+
+2020-03-30  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: re-enable umovestr_cached.test on ia64 if PTRACE_GET_SYSCALL_INFO works
+       If PTRACE_GET_SYSCALL_INFO works, then the exception made for ia64
+       earlier is not relevant.
+
+       * tests/umovestr_cached.test [$STRACE_ARCH == ia64]: Do not skip
+       the test if PTRACE_GET_SYSCALL_INFO works.
+
+       Complements: v5.3~23 "tests: disable umovestr_cached.test on ia64"
+
+2020-03-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       Implement pidfd_getfd syscall decoding.
+       Introduced by Linux commit v5.6-rc1~122^2~4 and wired up in Linux commit
+       v5.6-rc1~122^2~3.
+
+       * pidfd_getfd.c: New file.
+       * Makefile.am (strace_SOURCES): Add it.
+       * linux/syscallent-common.h ([BASE_NR + 438]): Wire up pidfd_getfd.
+       * tests/pidfd_getfd.c: New file.
+       * tests/pidfd_getfd-y.c: Likewise.
+       * tests/.gitignore: Add pidfd_getfd and pidfd_getfd-y.
+       * tests/pure_executables.list: Likewise.
+       * tests/gen_tests.in: Add pidfd_getfd and pidfd_getfd-y tests.
+
+2020-03-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       Move printpidfd from kcmp.c to util.c.
+       And rename it to print_pid_fd in an attempt to minimise confusion with
+       the kernel's pidfd concept.
+
+       * kcmp (PRINT_FIELD_PIDFD, SYS_FUNC(kcmp)): Change printpidfd calls to
+       print_pid_fd.
+       (printpidfd): Move it...
+       * util.c (print_pid_fd): ...here. Drop the static qualifier, update
+       the comment describing why this is a stub.
+       * defs.h (print_pid_fd): New declaration.
+
+2020-03-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       open: implement openat2 syscall decoding.
+       Introduced by Linux commit v5.6-rc1~133^2~2.
+
+       * configure.ac (AC_CHECK_HEADERS): Check for linux/openat2.h.
+       * defs.h (print_numeric_umode_t_64): New declaration.
+       * linux/syscallent-common.h ([BASE_NR + 437]): Wire up openat2.
+       * types/openat2.h: New file.
+       * open.c: Include "print_fields.h", "types/openat2.h",
+       and "xlat/open_resolve_flags.h".
+       (sprint_open_modes64): Rename from sprint_open_modes, change argument
+       type to uint64_t.
+       (sprint_open_modes): New function, a wrapper for sprint_open_modes64
+       with argument type of unsigned int.
+       (tprint_open_modes64): Rename from tprint_open_modes, change argument
+       type to uint64_t, call sprint_open_modes64 instead of sprint_open_modes.
+       (tprint_open_modes): New function, a wrapper for tprint_open_modes64
+       with an argument of type unsigned int.
+       (print_open_how): New function.
+       (SYS_FUNC(openat2)): New decoder.
+       * printmode.c (print_numeric_umode_t_64): New function.
+       * tests/openat2.c: New file.
+       * tests/openat2-Xabbrev.c: Likewise.
+       * tests/openat2-Xraw.c: Likewise.
+       * tests/openat2-Xverbose.c: Likewise.
+       * tests/openat2-v.c: Likewise.
+       * tests/openat2-v-y.c: Likewise.
+       * tests/openat2-v-y-Xabbrev.c: Likewise.
+       * tests/openat2-v-y-Xraw.c: Likewise.
+       * tests/openat2-v-y-Xverbose.c: Likewise.
+       * tests/openat2-y.c: Likewise.
+       * tests/.gitignore: Add openat2, openat2-Xabbrev, openat2-Xraw,
+       openat2-Xverbose, openat2-v, openat2-v-y, openat2-v-y-Xabbrev,
+       openat2-v-y-Xraw, openat2-v-y-Xverbose, openat2-y.
+       * tests/pure_executables.list: Likewise.
+       * tests/gen_tests.in: Add openat2, openat2-Xabbrev, openat2-Xraw,
+       openat2-Xverbose, openat2-v, openat2-v-y, openat2-v-y-Xabbrev,
+       openat2-v-y-Xraw, openat2-v-y-Xverbose, openat2-y tests.
+       * xlat/open_resolve_flags.in: New file.
+
+2020-03-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       Move print_nonzero_bytes from clone.c to util.c.
+       As it is to be used elsewhere.
+
+       * clone.c (print_nonzero_bytes): Move it...
+       * util.c (print_nonzero_bytes): ...here.  Remove static qualifier.
+       * defs.h (print_nonzero_bytes): New declaration.
+
+2020-03-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       travis: remove ppc64le builds.
+       They are currently unusable, permanently failing with
+       "Disk quota exceeded" error diagnostics.
+
+       * .travis.yml (arch: ppc64le): Remove.
+
+2020-03-30  Dmitry V. Levin  <ldv@altlinux.org>
+
+       xtensa: switch to PTRACE_GETREGS API.
+       Implement PTRACE_GETREGS API introduced on xtensa by Linux kernel commit
+       v2.6.13-rc1~68^2~366.
+
+       * configure.ac [xtensa]: Remove arch_enable_Werror=no.
+       * linux/xtensa/get_syscall_result.c: Remove.
+       * Makefile.am (EXTRA_DIST): Remove it.
+       * linux/xtensa/arch_regs.c (xtensa_regs): New variable.
+       (ARCH_REGS_FOR_GETREGS, ARCH_PC_REG, ARCH_SP_REG): New macros.
+       (xtensa_a2, ARCH_PC_PEEK_ADDR, ARCH_SP_PEEK_ADDR): Remove.
+       * linux/xtensa/get_error.c (arch_get_error): Use xtensa_regs.a[2].
+       * linux/xtensa/get_syscall_args.c (arch_get_syscall_args): Use
+       xtensa_regs.a.
+       * linux/xtensa/set_error.c (arch_set_error, arch_set_success): Use
+       xtensa_regs.a[2].
+       * NEWS: Mention this change.
+
+2020-03-30  Dmitry V. Levin  <ldv@altlinux.org>
+
+       sh64: switch to PTRACE_GETREGS API.
+       Implement PTRACE_GETREGS API introduced on sh64 by Linux kernel commit
+       v2.6.28-rc1~99^2~56.
+
+       * configure.ac [sh64]: Remove arch_enable_Werror=no.
+       * linux/sh64/arch_regs.h: Remove.
+       * linux/sh64/get_syscall_result.c: Likewise.
+       * Makefile.am (EXTRA_DIST): Remove them.
+       * linux/sh64/arch_regs.c (sh64_regs): New variable.
+       (ARCH_REGS_FOR_GETREGS, ARCH_PC_REG, ARCH_SP_REG): New macros.
+       (sh64_r9, ARCH_PC_PEEK_ADDR, ARCH_SP_PEEK_ADDR): Remove.
+       * linux/sh64/get_error.c (arch_get_error): Use sh64_regs.regs[9].
+       * linux/sh64/get_scno.c (arch_get_scno): Use sh64_regs.regs[9].
+       * linux/sh64/get_syscall_args.c (arch_get_syscall_args): Use sh64_regs.regs.
+       * linux/sh64/set_error.c (arch_set_error, arch_set_success): Use
+       sh64_regs.gr[9].
+       * linux/sh64/set_scno.c (arch_set_scno): Use sh64_regs.regs[9].
+       * NEWS: Mention this change.
+
+2020-03-30  Dmitry V. Levin  <ldv@altlinux.org>
+
+       sh: switch to PTRACE_GETREGS API.
+       Implement PTRACE_GETREGS API introduced on sh by Linux kernel commit
+       v2.6.28-rc1~99^2~56.
+
+       * configure.ac [sh]: Remove arch_enable_Werror=no.
+       * linux/sh/get_syscall_result.c: Remove.
+       * Makefile.am (EXTRA_DIST): Remove it.
+       * linux/sh/arch_regs.c (sh_regs): New variable.
+       (ARCH_REGS_FOR_GETREGS, ARCH_PC_REG, ARCH_SP_REG): New macros.
+       (sh_r0, ARCH_PC_PEEK_ADDR, ARCH_SP_PEEK_ADDR): Remove.
+       * linux/sh/arch_getrval2.c (getrval2): Use sh_regs.regs[1].
+       * linux/sh/get_error.c (arch_get_error): Use sh_regs.regs[0].
+       * linux/sh/get_scno.c (arch_get_scno): Use sh_regs.regs[3].
+       * linux/sh/get_syscall_args.c (arch_get_syscall_args): Use sh_regs.regs.
+       * linux/sh/set_error.c (arch_set_error, arch_set_success): Use
+       sh_regs.gr[0].
+       * linux/sh/set_scno.c (arch_set_scno): Use sh_regs.regs[3].
+       * NEWS: Mention this change.
+
+2020-03-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       v4l2: use PRINT_FIELD_* macros, add abbreviating in print_v4l2_queryctrl
+       * v4l2.c (print_v4l2_queryctrl): Use PRINT_FIELD_XVAL for the type field
+       printing; use PRINT_FIELD_D for minimum, maximum, step, and
+       default_value fields printing; use PRINT_FIELD_FLAGS for the flags field
+       printing; print minimum, maximum, step, default_value, and flags fields
+       only if abbrev(tcp) is not set.
+       * tests/ioctl_v4l2-success.c: Update expected output.
+
+       Suggested-by: Philippe De Muyter <phdm@macqel.be>
+       References: https://github.com/strace/strace/issues/63
+
+2020-03-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       v4l2: simplify print_v4l2_queryctrl and use print_v4l2_cid.
+       Instead of fragile hacks aroung V4L2_CTRL_FLAG_NEXT_CTRL flag, (always)
+       save the id field on entering, restore it later on exiting, and print it
+       second time only if it has changed.  That also simplifies the flow
+       with clear entering/exiting code parts separation.
+
+       The usage of print_v4l2_cid for id field printing has introduced several
+       (anticipated) output formatting changes, hence the changes in expected
+       output.
+
+       * v4l2.c (print_v4l2_queryctrl): Save c.id on entering, print it using
+       print_v4l2_cid with next_flags set to true, and return 0; remove
+       "entering(tcp) || get_tcb_priv_ulong(tcp)" logic; restore the entering
+       id value  into entry_id variable on exiting, compare it to the exiting
+       c.id value and print c.id again if it is different; do not check if tcp
+       is exiting; always return RVAL_IOCTL_DECODED at the end of the function.
+       * tests/ioctl_v4l2.c: Update expected output.
+       * tests/ioctl_v4l2-success.c: Likewise.
+
+2020-03-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       v4l2: add support for V4L2_CTRL_FLAG_NEXT_* flags printing to print_v4l2_cid
+       * v4l2.c: Move "xlat/v4l2_control_query_flags.h" inclusion before
+       print_v4l2_cid.
+       (print_v4l2_cid): Remove const qualifier from cid, add bool next_flags
+       argument; print v4l2_control_query_flags and NAND them from cid if they
+       are present.
+       (print_v4l2_control): Pass false as next_flags to the print_v4l2_cid
+       call.
+
+       References: https://github.com/strace/strace/issues/63
+
+2020-03-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       xlat: add generation of flags-related fields.
+       Generate known flags mask and maximum string length.
+
+       * xlat.h (struct xlat): Add fields flags_strsz and flags_mask.
+       * xlat/gen.sh (print_xlat, print_xlat_pair): Add generation of
+       XLAT_VAL_n and XLAT_STR_n macros.
+       (gen_header): Generate flags_strsz and flags_mask fields' values using
+       the generated XLAT_VAL_n and XLAT_STR_n macros, undefine them
+       afterwards.
+
+2020-03-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       v4l2: handle -Xraw in print_v4l2_cid.
+       Print class ID as simple hex value in that case.
+
+       * v4l2.c (print_v4l2_cid): Print cid as hex and return if
+       xlat_verbose(xlat_verbosity) == XLAT_STYLE_RAW.
+
+2020-03-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       v4l2: use xsprintf instead of asprintf in print_v4l2_cid.
+       Avoid an allocation and steamline code a bit.
+
+       * v4l2.c (print_v4l2_cid): Change tmp_str to a stack-allocated char array,
+       print to it with xsprintf, eliminate no longer needed free() call.
+
+2020-03-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       v4l2: provide V4L2_CTRL_FLAG_NEXT_CTRL in an xlat.
+       * xlat/v4l2_control_query_flags.in: New file.
+       * v4l2.c: Include "xlat/v4l2_control_query_flags.h".
+       (print_v4l2_queryctrl): Remove "ifdef V4L2_CTRL_FLAG_NEXT_CTRL" guard.
+       * tests/ioctl_v4l2.c [!V4L2_CTRL_FLAG_NEXT_CTRL]
+       (V4L2_CTRL_FLAG_NEXT_CTRL): New macro.
+       (main) [!V4L2_CTRL_FLAG_NEXT_CTRL]: Remove.
+
+       References: https://bugzilla.redhat.com/show_bug.cgi?id=1758201
+
+2020-03-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       v4l2: decode frame intervals/sizes unconditionally.
+       * configure.ac (AC_CHECK_TYPES): Check for struct v4l2_frmsizeenum
+       and struct v4l2_frmivalenum.
+       * types/v4l2.h (struct_v4l2_frmsize_discrete, struct_v4l2_frmsize_stepwise,
+       struct_v4l2_frmsizeenum, struct_v4l2_frmival_stepwise,
+       struct_v4l2_frmivalenum): New type definitions.
+       v4l2.c: Remove "ifdef VIDIOC_ENUM_FRAMESIZES" guards.
+       * xlat/v4l2_ioctl_cmds.in (VIDIOC_ENUM_FRAMESIZES,
+       VIDIOC_ENUM_FRAMEINTERVALS): Uncomment.
+
+       References: https://bugzilla.redhat.com/show_bug.cgi?id=1758201
+
+2020-03-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       v4l2: always decode VIDIOC_*_EXT_CTRLS ioctl commands.
+       * types/v4l2.h (struct_v4l2_area, struct_v4l2_ext_control,
+       struct_v4l2_ext_controls): New type definitions.
+       * v4l2.c (print_v4l2_ext_control, print_v4l2_ext_controls): Do not guard
+       with VIDIOC_S_EXT_CTRLS anymore.
+       (v4l2_ioctl) <case VIDIOC_S_EXT_CTRLS, case VIDIOC_TRY_EXT_CTRLS, case
+       VIDIOC_G_EXT_CTRLS>: Likewise.
+       (print_v4l2_ext_control): Do not guard size and string field printing
+       with HAVE_STRUCT_V4L2_EXT_CONTROL_STRING.
+       * xlat/v4l2_ioctl_cmds.in (VIDIOC_G_EXT_CTRLS, VIDIOC_S_EXT_CTRLS,
+       VIDIOC_TRY_EXT_CTRLS): Uncomment.
+
+       References: https://bugzilla.redhat.com/show_bug.cgi?id=1758201
+
+2020-03-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       v4l2: bundle struct v4l2_format and related types.
+       * configure.ac (AC_CHECK_TYPES): Check for struct v4l2_meta_format,
+       struct v4l2_pix_format_mplane, struct v4l2_plane_pix_format,
+       and struct v4l2_sdr_format.
+       * types/v4l2.h (struct_v4l2_clip, struct_v4l2_format): Typedef to an anonymous
+       type definition.
+       (struct_v4l2_pix_format, struct_v4l2_plane_pix_format,
+       struct_v4l2_pix_format_mplane, struct_v4l2_window,
+       struct_v4l2_vbi_format, struct_v4l2_sliced_vbi_format,
+       struct_v4l2_sliced_vbi_cap, struct_v4l2_sdr_format,
+       struct_v4l2_meta_format): New typedefs.
+       * v4l2.c (print_v4l2_format_fmt): Remove guard macros, decode
+       fmt.win.global_alpha and fmt.sdr.buffersize only when they are non-zero.
+
+       References: https://bugzilla.redhat.com/show_bug.cgi?id=1758201
+
+2020-03-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       v4l2: provide struct v4l2_capability definition.
+       * types/v4l2.h (struct_v4l2_capability): New typedef.
+       * v4l2.c: Check struct v4l2_capability
+       with CHECK_V4L2_STRUCT_RESERVED_SIZE.
+       (print_v4l2_capability): Change type of caps variable
+       to struct_v4l2_capability; drop HAVE_STRUCT_V4L2_CAPABILITY_DEVICE_CAPS
+       guard; print device_caps field only if it's non-zero.
+
+       References: https://bugzilla.redhat.com/show_bug.cgi?id=1758201
+
+2020-03-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       v4l2: bundle struct v4l2_create_buffers definition.
+       * configure.ac (AC_CHECK_TYPES): Add a check for
+       struct v4l2_create_buffers definition.
+       * types/v4l2.h: New file.
+       * v4l2.c (DEF_MPERS_TYPE(struct_v4l2_create_buffers)): Remove
+       VIDIOC_CREATE_BUFS guard.
+       (struct_v4l2_create_buffers): Remove typedef.
+       (struct_v4l2_buffer, struct_v4l2_clip, struct_v4l2_ext_control,
+       struct_v4l2_ext_controls, struct_v4l2_format, struct_v4l2_framebuffer,
+       struct_v4l2_input, struct_v4l2_standard): Move to types/v4l2.h.
+       [HAVE_STRUCT_V4L2_CREATE_BUFFERS]: Check struct v4l2_create_buffers
+       with CHECK_V4L2_STRUCT_RESERVED_SIZE.
+       * xlat/v4l2_ioctl_cmds.in (VIDIOC_CREATE_BUFS): Uncomment.
+
+       References: https://bugzilla.redhat.com/show_bug.cgi?id=1758201
+
+2020-03-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       v4l2: add V4L2 ioctl command constant macros.
+       For now, only those that we support, and only for those we don't
+       conditionalise in code, since the fall-back definitions require
+       the relevant type definitions, and not all of them are always
+       available.
+
+       * xlat/v4l2_ioctl_cmds.in: New file.
+       * v4l2.c: Include "xlat/v4l2_ioctl_cmds.h" under XLAT_MACRO_ONLY
+       definition.
+
+2020-03-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       v4l2: add shorthand macros for v4l2 type checks.
+       Some wrappers for common static_assert checks.
+
+       * v4l2.c (CHECK_V4L2_STRUCT_SIZE, CHECK_V4L2_RESERVED_SIZE.
+       CHECK_V4L2_STRUCT_RESERVED_SIZE): New macros.
+
+       References: https://bugzilla.redhat.com/show_bug.cgi?id=1758201
+
+2020-03-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       v4l2: improve buffer flag decoding.
+       * xlat/v4l2_buf_flags.in: Add fallback values.
+       * xlat/v4l2_buf_flags_masks.in: New file.
+       * xlat/v4l2_buf_flags_ts_src.in: Likewise.
+       * xlat/v4l2_buf_flags_ts_type.in: Likewise.
+       * v4l2.c: Include xlat/v4l2_buf_flags_ts_type.h,
+       xlat/v4l2_buf_flags_ts_src.h, xlat/v4l2_buf_flags_masks.h.
+       (print_v4l2_buffer_flags): New function.
+       (print_v4l2_buffer): Call print_v4l2_buffer_flags for printing flags field.
+       * tests/ioctl_v4l2-success.c: Update expected output.
+
+       References: https://github.com/strace/strace/issues/63
+
+2020-03-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       v4l2: use standard kernel version printing routine.
+       The way kernel version is printed in print_v4l2_capability was
+       non-standard, didn't respect xlat styles, and was incorrect for major
+       values 256 and greater.  Moreover, there is a routine that exists
+       specifically for this purpose now.  Let's use it and solve all
+       the aforementioned issues.
+
+       * v4l2.c (print_v4l2_capability): Use print_kernel_version for the
+       kernel version printing.
+       * tests/ioctl_v4l2-success.c: Update the expected output.
+
+2020-03-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       tests: add v4l2 ioctl success injection-based tests.
+       * tests/ioctl_v4l2-success.c: New file.
+       * tests/ioctl_v4l2-success-Xabbrev.c: Likewise.
+       * tests/ioctl_v4l2-success-Xraw.c: Likewise.
+       * tests/ioctl_v4l2-success-Xverbose.c: Likewise.
+       * tests/ioctl_v4l2-success-v.c: Likewise.
+       * tests/ioctl_v4l2-success-v-Xabbrev.c: Likewise.
+       * tests/ioctl_v4l2-success-v-Xraw.c: Likewise.
+       * tests/ioctl_v4l2-success-v-Xverbose.c: Likewise.
+       * tests/.gitignore: Add ioctl_v4l2-success,
+       ioctl_v4l2-success-Xabbrev, ioctl_v4l2-success-Xraw,
+       ioctl_v4l2-success-Xverbose, ioctl_v4l2-success-v,
+       ioctl_v4l2-success-v-Xabbrev, ioctl_v4l2-success-v-Xraw,
+       ioctl_v4l2-success-v-Xverbose.
+       * tests/Makefile.am (check_PROGRAMS): Likewise.
+       * tests/gen_tests.in: Add ioctl_v4l2-success,
+       ioctl_v4l2-success-Xabbrev, ioctl_v4l2-success-Xraw,
+       ioctl_v4l2-success-Xverbose, ioctl_v4l2-success-v,
+       ioctl_v4l2-success-v-Xabbrev, ioctl_v4l2-success-v-Xraw tests,
+       * tests/tests.h (struct strval32): New type, similar to struct strval64.
+
+       tests: use ioctl-success.sh for ioctl_perf-success test.
+       * tests/ioctl_perf-success.test: Remove.
+       * tests/Makefile.am (DECODER_TESTS): Remove it.
+       * tests/gen_tests.in: Add ioctl_perf-success test.
+
+2020-03-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       tests: always check ioctl_perf-success.
+       It makes little sense to conditionalise this test, since it bundles
+       all the required definitions and types in case of absense of them
+       in the kernel headers.
+
+       * tests/ioctl_perf-success.c: Remove HAVE_LINUX_PERF_EVENT_H guard,
+       update directives' indentation.
+       (include <linux/perf_event.h>): Put under HAVE_LINUX_PERF_EVENT_H guard.
+
+2020-03-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       tests: add a runner for ioctl decoder tests that use success injection.
+       * tests/ioctl-success.sh: New file.
+       * tests/Makefile.am (EXTRA_DIST): Add it.
+
+       v4l2: print capability and rxsubchans fields of struct v4l2_tuner as flags
+       * v4l2.c (print_v4l2_tuner): Use printflags instead of printxval
+       for printing capability and rxsubchans fields of struct v4l2_tuner.
+
+2020-03-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       v4l2: comment unknown tuner types with "V4L2_TUNER_???" and not "V4L2_TUNER_TYPE_???"
+       All the xlat constants include only "V4L2_TUNER_" part.
+
+       * v4l2.c (print_v4l2_tuner) <printxval(v4l2_tuner_types, ...)>: Change
+       the last argument from V4L2_TUNER_TYPE_???" to "V4L2_TUNER_???"
+
+2020-03-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       v4l2: do not print struct v4l2_control.value field name second time on exiting
+       To conform the output formatting in other places.
+
+       * v4l2.c (print_v4l2_control): Do not print "value=" on exiting to
+       prefix the changed value.
+
+2020-03-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       v4l2: print exiting structure fields as a separate structure.
+       To conform with the output formatting in other places.
+
+       * v4l2.c (print_v4l2_format, print_v4l2_streamparm): Close the structure
+       with "}" before the arrow and open it again with "{".
+
+2020-03-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       v4l2: print struct v4l2_standard.framelines as unsigned.
+       Since it is defined that way.
+
+       * v4l2.c (print_v4l2_standard): Print framelines as unsigned.
+
+2020-03-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       v4l2: print struct v4l2_outputparm.outputmode using v4l2_capture_modes flags
+       As it is treated the same way as struct v4l2_captureparm.capturemode.
+
+       * v4l2.c (print_v4l2_streamparm): Print struct
+       v4l2_outputparm.outputmode using v4l2_capture_modes flags.
+
+2020-03-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       v4l2: print struct v4l2_{capture,output}parm.extendedmode as hex.
+       As it is likely to be treated similarly to capturemode/outputmode, which
+       are bit sets.
+
+       * v4l2.c (print_v4l2_streamparm): Print extendedmode field as hex.
+       * tests/ioctl_v4l2.c: Update expected output.
+
+2020-03-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       tests/fill_memory: add 16-bit-wide and 32-bit-wide memory-filling routines
+       * tests/tests.h (fill_memory16_ex, fill_memory16, fill_memory32_ex,
+       fill_memory32): New declarations.
+       * tests/fill_memory.c (fill_memory16_ex, fill_memory16,
+       fill_memory32_ex, fill_memory32): New functions.
+
+       tests: move struct strval64 definition to tests.h.
+       * tests/fanotify_mark.c (struct strval64): Move it...
+       * tests/tests.h: ...here. Include <stdint.h>.
+
+       v4l2: remove spaces around "=" in struct v4l2_buffer.timestamp output.
+       * v4l2.c (print_v4l2_buffer): Remove spaces around equality sign
+       in ", timestamp = ".
+
+2020-03-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       v4l2: print struct v4l2_vbi_format.flags as flags.
+       Since V4L2_VBI_UNSYNC and V4L2_VBI_INTERLACED are treated as independent
+       bits in code.
+
+       * v4l2.c (print_v4l2_format_fmt): Use printflags instead of printxval
+       for f->fmt.vbi.flags printing.
+
+       Fixes: v4.17~103 "v4l2: Implement decoding of the remaining V4L2_BUF_TYPE_* types"
+
+2020-03-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       v4l2: print struct v4l2_vbi_format.start elements as signed integers.
+       Since they are defined in videodev2.h that way.
+
+       * v4l2.c (dprint_ioctl_v4l2): Print struct v4l2_vbi_format.start
+       elements using %d and not %u.
+       * tests/ioctl_v4l2.c (print_v4l2_format_fmt): Likewise.
+
+       Fixes: v4.17~103 "v4l2: Implement decoding of the remaining V4L2_BUF_TYPE_* types"
+
+2020-03-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       tests/ioctl_v4l2: add checks for decoding unknown/unsupported commands.
+       * tests/ioctl_v4l2.c: Include <stdint.h>.
+       (main): Add checks for decoding of unknown and unsupported ioctl
+       commands that have 'V' command type.
+
+2020-03-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       ioctl: re-define broken _IOC_SIZE on sparc.
+       _IOC_SIZE macro definition on sparc breaks the invariant
+
+            _IOC_SIZE(_IOC(dir, type, nr, size)) == size
+
+       for _IOC_DIR(val) that contains neither _IOC_READ nor _IOC_WRITE,
+       so it is unsuitable for strace's purposes. Re-define it in a way
+       that preserves the aforementioned invariant.
+
+       * ioctl.c [SPARC || SPARC64] (_IOC_SIZE): Re-define.
+
+2020-03-29  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       v4l2: short-circuit handling of unknown buffer types.
+       We do not need to call print_v4l2_format_fmt on exiting to get empty
+       output again.
+
+       * v4l2.c (print_v4l2_format_fmt): Add a default branch that returns
+       false.
+
+2020-03-29  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       tests/ioctl_v4l2: increase coverage a bit.
+       Try to hit some previously missed branches.
+
+       * tests/ioctl_v4l2.c (init_v4l2_format): Set num_planes to 1 if buffer
+       type is V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE; set clipcount to 3 if
+       buffer type is V4L2_BUF_TYPE_VIDEO_OVERLAY.
+       (dprint_ioctl_v4l2): Update expected output.
+
+2020-03-29  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       xlat: add KEY_SELECTIVE_SCREENSHOT to evdev_keycode.
+       * xlat/evdev_keycode.in (KEY_SELECTIVE_SCREENSHOT): New constant,
+       introduced by Linux commit v5.5-rc5-51-g3b059da9835c and updated
+       in Linux commit v5.5-rc5-55-gfbf66796a0ae.
+
+2020-03-29  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       debian/control: remove ppc64el from gcc-multilib architectures.
+       Little-endian POWER ISA has no 32-bit compat on Linux (and strace has
+       no mpers support on ppc64le), so gcc-multilib package is not needed
+       there.
+
+       * debian/control (Build-Depends): Remove ppc64el from the list
+       of gcc-multilib architectures.
+
+       Suggested-by: Dmitry V. Levin <ldv@altlinux.org>
+       Fixes: v4.23~364 "debian: enable mpers support for ppc64el and s390x"
+
+2020-03-29  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       strace: warn about -S option uselessness in absence of -c/-C.
+       * strace.c (init): Add sortby_set local variable.
+       (init) <case 'S'>: Set sortby_set to true.
+       (init): Warn if sortby_set is set and cflag is not.
+       * tests/options-syntax.test: Add a check.
+
+2020-03-28  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       io_uring: add support for IORING_{UN,}REGISTER_PERSONALITY commands.
+       Introduced by Linux commit v5.6-rc1~123^2~5.
+
+       * xlat/uring_register_opcodes.in (IORING_REGISTER_PERSONALITY,
+       IORING_UNREGISTER_PERSONALITY): New constants.
+       * tests/io_uring_register.c: Update expected output.
+
+2020-03-28  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       io_uring: support IORING_REGISTER_PROBE io_uring_register command.
+       Introduced by Linux commit v5.6-rc1~123^2~22.
+
+       * xlat/uring_op_flags.in: New file.
+       * xlat/uring_ops.in: Likewise.
+       * xlat/uring_register_opcodes.in (IORING_REGISTER_PROBE): New constant.
+       * types/io_uring.h (struct_io_uring_probe_op, struct_io_uring_probe):
+       New type definitions.
+       * io_uring.c: Include "xlat/uring_op_flags.h", "xlat/uring_ops.h".
+       (print_io_uring_probe_op, print_io_uring_probe): New functions.
+       (SYS_FUNC(io_uring_register)): Add rc variable; print fd and opcode
+       on entering only, call print_io_uring_probe if opcode
+       is IORING_REGISTER_PROBE; print nargs if rc is non-zero or if it is
+       exiting; return rc in the end.
+       * tests/io_uring_register.c [HAVE_STRUCT_IO_URING_PROBE]: Add checks.
+
+2020-03-28  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       io_uring: de-indent some code in io_uring_setup decoder.
+       * io_uring.c (SYS_FUNC(io_uring_setup)): De-indent code in the exiting
+       path.
+
+2020-03-28  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Fix various typos found using codespell tool.
+       * NEWS: Replace "Enchanced" with "Enhanced".
+       * list.h: Replace "embedded withing" with "embedded within".
+       * maint/gen-contributors-list.sh: Replace "contributer"
+       with "contributor".
+       * tests/futex.c: Replace "succeedes" with "succeeds".
+       * tests/nsyscalls-d.test: Replace "debug ouput" with "debug output".
+       * tests/s390_sthyi.c: Replace "descriptior" with "descriptor".
+
+2020-03-28  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: fix strace-DDD.test for the case when strace has a process subreaper
+       The test used to assume that the process reaper has pid 1, which is not
+       necessarily the case, e.g. there might be a process subreaper different
+       from pid 1.
+
+       * tests/get_process_reaper.c: New file.
+       * tests/Makefile.am (check_PROGRAMS): Add get_process_reaper.
+       * tests/.gitignore: Likewise.
+       * tests/strace-DDD.test: Invoke get_process_reaper to find out
+       the process reaper id, use the latter in subsequent checks
+       instead of pid 1.
+
+       References: https://bugs.debian.org/947396
+       Resolves: https://github.com/strace/strace/issues/129
+
+2020-03-28  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       tests/ioctl_v4l2.c: whitespace fix.
+
+2020-03-28  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       tests: add ARG_XLAT_KNOWN and ARG_XLAT_UNKNOWN macros.
+       An amalgam of ARG_STR and XLAT_KNOWN/XLAT_UNKNOWN.
+
+       * tests/tests.h (ARG_XLAT_KNOWN, ARG_XLAT_UNKNOWN): New macros.
+
+2020-03-28  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       tests: add v4l2 ioctl -v tests.
+       * tests/ioctl_v4l2-v.c: New file.
+       * tests/ioctl_v4l2-v-Xabbrev.c: Likewise.
+       * tests/ioctl_v4l2-v-Xraw.c: Likewise.
+       * tests/ioctl_v4l2-v-Xverbose.c: Likewise.
+       * tests/.gitignore: Add ioctl_v4l2-v, ioctl_v4l2-v-Xabbrev,
+       ioctl_v4l2-v-Xraw, ioctl_v4l2-v-Xverbose.
+       * tests/pure_executables.list: Likewise.
+       * tests/gen_tests.in (ioctl_v4l2-v, ioctl_v4l2-v-Xabbrev,
+       ioctl_v4l2-v-Xraw, ioctl_v4l2-v-Xverbose): New tests.
+
+       v4l2: do not fancy-print fourcc if -Xraw is set.
+       * v4l2.c (print_pixelformat): Print fourcc as a hexadecimal value and
+       return.
+       * tests/ioctl_v4l2.c (dprint_ioctl_v4l2, main): Update expected output.
+
+       tests: add ioctl_v4l2 xlat style tests.
+       * tests/ioctl_v4l2-Xabbrev.c: New file.
+       * tests/ioctl_v4l2-Xraw.c: Likewise.
+       * tests/ioctl_v4l2-Xverbose.c: Likewise.
+       * tests/.gitignore: Add ioctl_v4l2-Xabbrev, ioctl_v4l2-Xraw,
+       ioctl_v4l2-Xverbose.
+       * tests/pure_executables.list: Likewise.
+       * tests/gen_tests.in (ioctl_v4l2-Xabbrev, ioctl_v4l2-Xraw,
+       ioctl_v4l2-Xverbose): New tests.
+       * tests/tests.h: (XLAT_SEL, ABBR, RAW, VERB, NABBR, NRAW, NVERB): New
+       macros.
+       * tests/ioctl_v4l2.c (dprint_ioctl_v4l2): Change request
+       to XLAT_SEL(reqval, reqstr); use XLAT_SEL(buf_type, buf_type_string)
+       in printed strings.
+       (print_ioctl_v4l2): Pass XLAT_SEL(request, #request) instead of the
+       second argument.
+       (main): Update expected output.
+
+2020-03-28  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       tests: move XLAT_FMT and XLAT_ARGS macros from sock_filter-v.c to tests.h
+       In preparation of using elsewhere.
+
+       * tests/sock_filter-v.c (XLAT_FMT, XLAT_ARGS): Move ...
+       * tests/tests.h: ... here, replacing HEX_FMT with "%#x".
+
+2020-03-27  Dmitry V. Levin  <ldv@altlinux.org>
+
+       hppa: switch to PTRACE_GETREGS API.
+       Implement PTRACE_GETREGS API introduced on hppa by Linux kernel commit
+       v4.7-rc1~58^2~10.
+
+       * configure.ac [hppa]: Remove arch_enable_Werror=no.
+       * linux/hppa/get_syscall_result.c: Remove.
+       * Makefile.am (EXTRA_DIST): Remove it.
+       * linux/hppa/arch_regs.c (hppa_regs): New variable.
+       (ARCH_REGS_FOR_GETREGS, ARCH_PC_REG, ARCH_SP_REG): New macros.
+       (hppa_r28, PT_GR20, PT_GR28, ARCH_PC_PEEK_ADDR, ARCH_SP_PEEK_ADDR):
+       Remove.
+       * linux/hppa/get_error.c (arch_get_error): Use hppa_regs.gr[28].
+       * linux/hppa/get_scno.c (arch_get_scno): Use hppa_regs.gr[20].
+       * linux/hppa/get_syscall_args.c (arch_get_syscall_args): Use
+       hppa_regs.gr.
+       * linux/hppa/set_error.c (arch_set_error, arch_set_success): Use
+       hppa_regs.gr[28].
+       * linux/hppa/set_scno.c (arch_set_scno): Use hppa_regs.gr[20].
+       * NEWS: Mention this change.
+
+2020-03-26  Dmitry V. Levin  <ldv@altlinux.org>
+
+       build: enable compiler -Werror option by default.
+       If gcc is 4.8+ or clang is 6.0+, and the architecture implements either
+       PTRACE_GETREGS or PTRACE_GETREGSET, enable compiler -Werror option
+       by default.
+
+       * configure.ac: Call st_WARN_CFLAGS and AX_PROG_CC_FOR_BUILD after
+       architecture checks.
+       (arch_enable_Werror): New variable, defined to "yes" on all architectures
+       except alpha, bfin, hppa, microblaze, sh, sh64, and xtensa.
+       * m4/st_warn_cflags.m4 (st_cv_cc_enable_Werror, st_cv_enable_Werror):
+       Compute new cached variables.
+       (AC_ARG_ENABLE(gcc-Werror)): Default to $st_cv_enable_Werror
+       if no option was given, do not add -Werror to WARN_CFLAGS.
+       [enable_gcc_Werror == yes]: Add -Werror to WARN_CFLAGS.
+       * m4/ax_prog_cc_for_build.m4 (AX_PROG_CC_FOR_BUILD): Redirect
+       st_cv_enable_Werror and st_cv_cc_enable_Werror using pushdef/popdef.
+       * ci/run-build-and-tests.sh (DISTCHECK_CONFIGURE_FLAGS): Add
+       --enable-gcc-Werror unconditionally.
+
+2020-03-26  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: workaround clang compilation warnings.
+       Silence the following incorrect compilation warnings produced by clang:
+
+       tests/filter_seccomp-flag.c:39:28: warning: variable 'sysent1' is not needed and will not be emitted [-Wunneeded-internal-declaration]
+       static const struct_sysent sysent1[] = {
+       tests/filter_seccomp-flag.c:45:28: warning: variable 'sysent2' is not needed and will not be emitted [-Wunneeded-internal-declaration]
+       static const struct_sysent sysent2[] = {
+
+       * tests/filter_seccomp-flag.c (sysent1, sysent2): Remove static
+       qualifier.
+
+2020-03-26  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: fix musl compilation warnings.
+       Silence the following types of compilation warnings generated by gcc
+       with musl system headers:
+
+       tests/net-sockaddr.c: In function 'check_x25':
+       tests/net-sockaddr.c:430:19: warning: passing argument 2 of 'connect' from incompatible pointer type [-Wincompatible-pointer-types]
+         rc = connect(-1, x25, sizeof(c_x25) - 1);
+                          ^~~
+       In file included from tests/net-sockaddr.c:16:0:
+       /opt/musl/include/sys/socket.h:332:5: note: expected 'const struct sockaddr *' but argument is of type 'struct sockaddr_x25 *'
+        int connect (int, const struct sockaddr *, socklen_t);
+            ^~~~~~~
+
+       tests/so_error.c: In function 'reserve_ephemeral_port':
+       tests/so_error.c:40:16: warning: passing argument 2 of 'bind' from incompatible pointer type [-Wincompatible-pointer-types]
+          if (bind(sd, &addr, sizeof(addr)) == 0)
+                       ^
+       In file included from /opt/musl/include/netinet/in.h:10:0,
+                        from tests/so_error.c:14:
+       /opt/musl/include/sys/socket.h:331:5: note: expected 'const struct sockaddr *' but argument is of type 'struct sockaddr_in *'
+        int bind (int, const struct sockaddr *, socklen_t);
+            ^~~~
+
+       * tests/net-sockaddr.c (check_x25): Pass a pointer of type 'void *' as
+       the second argument of connect() call.
+       * tests/so_error.c (main): Likewise.
+       (reserve_ephemeral_port): Pass a pointer of type 'void *' as the second
+       argument of bind() call.
+
+2020-03-23  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       count: store average time as struct timespec.
+       * count.c (struct call_counts): Change the type of time_avg field
+       to struct timespec, all users updated.
+
+       util: change the integer type in ts_mul and ts_div to uint64_t.
+       * defs.h (ts_mul, ts_div): Change the type of the last argument
+       to uint64_t.
+       * util.c (ts_mul, ts_div): Likewise.
+
+2020-03-23  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       count: use dashes in option argument names.
+       Dashes are more common among long optiona arguments, so let's support
+       (and prefer) them.
+
+       * count.c (column_aliases): Add variants with dashes for aliases with
+       underscores.
+       * strace.1.in (.SS Statistics): Use dashes in column names in -S and -U
+       option descriptions.
+       * strace.c (usage): Likewise.
+       * tests/options-syntax.test: Add checks.
+       * tests/strace-S.test: Use dashes in some column names.
+
+2020-03-23  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       count: add information about minimum and maximum call duration.
+       * count.c (struct call_counts): Add time_min, time_max fields.
+       (max_ts): New constant.
+       (enum count_summary_columns): Add CSC_TIME_MIN, CSC_TIME_MAX.
+       (count_syscall): Fill time_min field with max_ts in counts
+       initialisation, update time_min and time_max.
+       (min_time_cmp, max_time_cmp): New functions.
+       (set_sortby): Add keys for them.
+       (set_count_summary_columns): Add support for time_min and time_max
+       fields printing.
+       * strace.1.in (.SH OPTIONS) <-S, -U>: Document it.
+       * strace.c (usage): Likewise.
+       * tests/strace-S.test: Add checks.
+       * tests/options-syntax.test: Likewise.
+
+       Closes: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=240945
+       Closes: https://github.com/strace/strace/issues/32
+
+2020-03-23  Eugene Syromyatnikov  <evgsyr@gmail.com>
+           Dmitry V. Levin  <ldv@altlinux.org>
+
+       count: add ability to select columns being shown.
+       * count.c (set_count_summary_columns): New function.
+       * defs.h (set_count_summary_columns): New declaration.
+       * strace.c (init) <columns_set>: New local variable.
+       (init) <optstring>: Add "U:".
+       (init) <longopts>: Add "summary-columns" long option.
+       (init) <case 'U'>: Pass option argument to set_count_summary_columns.
+       (usage): Document it. Add missing -O/-S options to synopsis.
+       * strace.1.in (.SS Statistics): Likewise.
+       * strace.c (usage): Likewise.
+       * tests/options-syntax.test: Add option syntax checks.
+
+2020-03-23  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       count: factor out column alias names.
+       Since any column can be sorted now, we can maintain just an alias
+       to column mapping, which is also going to be used for column selection
+       functionality.
+
+       * count.c (column_aliases): New static constant array.
+       (sort_func): New typedef.
+       (sortfun): Change type to sort_func.
+       (set_sortby): Replace alias to sort function mapping with an
+       column-indexed array of sorting functions in sort_fns, ajust the code
+       accordingly.
+       * tests/options-syntax.test: Add checks.
+
+2020-03-23  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       count: add ability to sort on avg_time field.
+       For completeness.
+
+       * count.c (avg_time_cmp): New function.
+       (set_sortby): Add sort keys for avg_time sorting.
+       * strace.1.in (.SH OPTIONS) <-S>: Document it.
+       * strace.c (usage): Likewise.
+       * tests/strace-S.test: Add check.
+
+2020-03-23  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       count: refactor statistics calculation/output.
+       In preparation to extension.
+
+       * count.c (enum count_summary_columns): New enumeration type.
+       (struct call_counts): Add time_avg field.
+       (DEF_COLUMNS): New macro.
+       (columns, visible): New variables.
+       (num_chars): New function.
+       (call_summary_pers): Calculate aggregate data first, then output table
+       based on columns configuration.
+
+2020-03-23  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       xlat: wire up PR_SET_IO_FLUSHER and PR_GET_IO_FLUSHER prctl options.
+       * xlat/prctl_options.in (PR_SET_IO_FLUSHER, PR_GET_IO_FLUSHER): New
+       constants, introduced by Linux kernel commit v5.6-rc1~122^2.
+       * prctl.c (SYS_FUNC(prctl)): Wire up PR_SET_IO_FLUSHER
+       and PR_GET_IO_FLUSHER options.
+
+       xlat: sort prctl_options entries, add #sorted.
+       * xlat/prctl_options.in: Sort the entries, align the values, add #sorted,
+       add comments about PR_SET_VMA and PR_SET_PTRACER.
+
+2020-03-23  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       rtc: decode RTC Voltage Low value as flags.
+       Introduced by Linux kernel commit v5.6-rc1~71^2~57
+
+       * xlat/rtc_vl_flags.in: New file.
+       * rtc.c (decode_rtc_vl): New function.
+       (rtc_ioctl) <case RTC_VL_READ>: Call it instead of printnum_int.
+
+2020-03-23  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       rtc: bundle ioctl number definitions.
+       This makes decoding more reliable as it no longer depends
+       on definitions of these ioctl commands the kernel headers.
+
+       * xlat/rtc_ioctl_cmds.in: New file.
+       * rtc.c: Include <xlat/rtc_ioctl_cmds.h>.
+       (rtc_ioctl): Remove RTC_VL_READ and RTC_VL_CLR guards.
+
+2020-03-23  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       sched: implement utilisation clamping fields decoding.
+       And also handle the piggybacked SCHED_FLAG_KEEP_PARAMS flag
+       introduced by Linux kernel commit v5.3-rc1~201^2~5.
+
+       * xlat/sched_flags.in (SCHED_FLAG_KEEP_PARAMS,
+       SCHED_FLAG_UTIL_CLAMP_MIN, SCHED_FLAG_UTIL_CLAMP_MAX): New constants.
+       * sched_attr.h (struct sched_attr): Add sched_util_min and
+       sched_util_max fields.
+       (SCHED_ATTR_SIZE_VER1): New macro.
+       * sched.c (print_sched_attr): Do not print sched_policy field if
+       SCHED_FLAG_KEEP_PARAMS flag is set in sched_setattr; do not print
+       sched_nice, sched_priority, sched_runtime, sched_deadline,
+       and sched_period fields if SCHED_FLAG_KEEP_PARAMS flag is set
+       in sched_setattr; print sched_util_min and sched_util_max field if
+       size is at least PRINT_FIELD_U; use attr.size instead of usize in
+       sched_getattr for determining whether ellipsis is needed to be printed.
+       * tests/sched_xetattr.c: Update expected output, add checks.
+
+2020-03-23  Eugene Syromyatnikov  <evgsyr@gmail.com>
+           Dmitry V. Levin  <ldv@altlinux.org>
+
+       sched: add SCHED_FLAG_KEEP_POLICY flag support.
+       Introduced by Linux kernel commit v5.3-rc1~201^2~6.
+
+       * xlat/sched_flags.in (SCHED_FLAG_KEEP_POLICY): New constant.
+       * sched.c (print_sched_attr): Add is_set variable, set it to true
+       if passed usize is zero, print policy if it is sched_getattr,
+       it is negative, or if SCHED_FLAG_KEEP_POLICY is not set.
+       * tests/sched_xetattr.c: Update expected output, add a check.
+
+2020-03-23  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       sched: refactor print_sched_attr.
+       Steamline it a bit and convert to PRINT_FIELD_* macros usage,
+       in anticipation of the upcoming changes.
+
+       * sched.c: Include "print_fields.h".
+       (PRINT_SCHED_FIELD): Remove macro.
+       (print_sched_attr): Use PRINT_FIELD_* macros for printing fields, use
+       goto instead of size-checking condition block.
+
+2020-03-20  Dmitry V. Levin  <ldv@altlinux.org>
+
+       github: check source code for whitespace errors on every push and pull request
+       * .github/workflows/source-code-check.yml: New file.
+
+2020-03-20  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       rtnl_link: decode IFLA_PERM_ADDRESS attribute.
+       Introduced by Linux commit v5.6-rc1~151^2~262^2~4.
+
+       * configure.ac (AC_CHECK_DECLS): Check for IFLA_PERM_ADDRESS.
+       * rtnl_link.c (ifinfomsg_nla_decoders): Wire up IFLA_PERM_ADDRESS
+       attribute using decode_nla_hwaddr.
+       * xlat/rtnl_link_attrs.in (IFLA_PERM_ADDRESS): New constant.
+
+2020-03-20  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       rtnl_link: use the family from ifinfomsg.
+       * rtnl_link.c (decode_ifla_hwaddr): New function,
+       decode_nla_hwaddr_family wrapper that passes the value from
+       struct ifinfomsg (passed in opaque data) to it.
+       (ifinfomsg_nla_decoders) <IFLA_ADDRESS, IFLA_BROADCAST>: Use
+       decode_ifla_hwaddr as decoder.
+       (decode_ifinfomsg): Pass ifinfo as opaque_data in decode_nlattr call.
+
+       nlattr: implement generic hardware address nlattr decoder.
+       * nlattr.c (decode_nla_hwaddr): New function.
+       * nlattr.h (DECL_NLA(hwaddr)): New declaration.
+       (NLA_HWADDR_FAMILY_OFFSET): New macro.
+       (decode_nla_hwaddr_family, decode_nla_hwaddr_nofamily): New functions.
+       * rtnl_link.c (ifla_info_data_bridge_nla_decoders) <IFLA_BR_GROUP_ADDR>:
+       Use nlattr_hwaddr_nofamily.
+       * rtnl_neigh.c (decode_neigh_lladdr): Remove.
+       (ndmsg_nla_decoders) <NDA_LLADDR>: Change decoder
+       from decode_neigh_lladdr to decode_nla_hwaddr_nofamily.
+       * tests/nlattr_ifla_linkinfo.c: Update expected output.
+       * tests/nlattr_ndmsg.c: Likewise.
+
+2020-03-19  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       print_mac: avoid passing sizes greater than MAX_ADDR_LEN to sprint_mac_addr
+       As sprint_mac_addr (rightfully) bails out on those, simply print those
+       as strings.
+
+       * print_mac.c (print_mac_addr, print_hwaddr): Print address raw and
+       avoid calling sprint_mac_addr if the size is greater than MAX_ADDR_LEN.
+
+2020-03-19  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       print_mac: do not limit address length for hwaddr families 806..819.
+       It seems that it has been overlooked.
+
+       * print_mac.c (hwaddr_sizes): Initialise array with default value of 255
+       up to ARPHRD_VSOCKMON.
+
+       Fixes: v4.23~129 "sock: guess ifr_hwaddr size in SIOCSIFHWADDR/SIOCGIFHWADDR"
+
+2020-03-19  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       rtnl_link: add IFLA_PROP_LIST and IFLA_ALT_IFNAME attribute type support
+       Introduced by Linux commit v5.5-rc1~174^2~448^2~4.
+
+       * configure.ac (AC_CHECK_DECLS): Check for IFLA_PROP_LIST
+       and IFLA_ALT_IFNAME.
+       * rtnl_link.c (decode_ifla_prop_list_attr, decode_ifla_prop_list): New
+       functions.
+       (ifinfomsg_nla_decoders): Decode IFLA_PROP_LIST with
+       decode_ifla_prop_list, decode IFLA_ALT_IFNAME with decode_nla_str.
+       * tests/nlattr_ifinfomsg.c: Add checks.
+       * xlat/rtnl_link_attrs.in (IFLA_PROP_LIST, IFLA_ALT_IFNAME): New
+       constants.
+
+2020-03-19  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       nlattr: use QUOTE_EXPECT_TRAILING_0 in decode_nla_str.
+       In order to signify the absence of the trailing \0 in string
+       and print embedded \0 at the same time.
+
+       * nlattr.c (decode_nla_str): Provide
+       QUOTE_OMIT_TRAILING_0 | QUOTE_EXPECT_TRAILING_0 flags instead
+       of QUOTE_0_TERMINATED flag to printstr_ex call.
+
+2020-03-19  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       util: add a separate flag for printing ellipsis in absence of \0 in strings
+       In cases where we know the size of the string to be printed
+       (for example, in decode_nla_str and likely somewhere else),
+       it is probably better to print embedded \0's (so, do not pass
+       QUOTE_0_TERMINATED).  Unfortunately, printstr_ex doesn't have a separate
+       flag for printing ellipsis in case no \0 occurred at all, so let's
+       introduce it.
+
+       * defs.h (QUOTE_EXPECT_TRAILING_0): New macro.
+       (QUOTE_0_TERMINATED, QUOTE_OMIT_LEADING_TRAILING_QUOTES,
+       QUOTE_OMIT_TRAILING_0): Document.
+       (QUOTE_FORCE_HEX, QUOTE_EMIT_COMMENT): Update values, document.
+       * util.c (printstr_ex): Print ellipsis not only on QUOTE_0_TERMINATED,
+       but also on QUOTE_EXPECT_TRAILING_0.
+
+2020-03-16  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       xlat: add IPPROTO_ETHERNET to inet_protocols.
+       * xlat/inet_protocols.in (IPPROTO_ETHERNET): New constant, introduced
+       by Linux commit v5.6-rc6~23^2~9.
+
+2020-03-15  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: robustify read-write test.
+       * tests/read-write.c (main): Explicitly close descriptors 4 and 5 that
+       might be inherited from the parent process.
+
+2020-03-10  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Robustify <linux/if_bridge.h> configure checks.
+       Prior to Linux kernel commit v3.18-rc5~22^2~32 <linux/if_bridge.h> was
+       incomplete: it used struct in6_addr but didn't include a header with a
+       definition.  Apply the same workaround in configure checks as in other
+       parts of strace: include <netinet/in.h> before <linux/if_bridge.h>.
+
+       * configure.ac: Include <netinet/in.h> before <linux/if_bridge.h>.
+       * types/gen.sh (gen_m4_check): Specify INCLUDES parameter in the
+       generated AC_CHECK_HEADERS invocation.
+
+2020-03-10  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       xlat: change style argument type of print_xlat_ex to uint32_t.
+       ...and add some documentation. Otherwise, clang complains about it:
+
+           warning: implicit conversion from enumeration type
+           'enum xlat_style_private_flags' to different enumeration type
+           'enum xlat_style' [-Wenum-conversion]
+                           print_xlat_ex(cid, "V4L2_CID_???", PXF_DEFAULT_STR);
+                           ~~~~~~~~~~~~~                      ^~~~~~~~~~~~~~~
+
+       * defs.h (print_xlat_ex): Change the type of style argument to uint32_t,
+       add doxydoc.
+       * xlat.c (print_xlat_ex): Change the type of style argument to uint32_t.
+
+2020-03-09  Dmitry V. Levin  <ldv@altlinux.org>
+
+       util: define either ilog2_64 or ilog2_32.
+       Depending on the value of SIZEOF_KERNEL_LONG_T, either ilog2_64 or
+       ilog2_32 is used as an implementation of ilog2_klong.  Do not define
+       the other one to pacify clang that otherwise complains with either
+
+         util.c:1060:1: warning: unused function 'ilog2_32' [-Wunused-function]
+         ilog2_32(uint32_t val)
+
+       or
+
+         util.c:1038:1: warning: unused function 'ilog2_64' [-Wunused-function]
+         ilog2_64(uint64_t val)
+
+       * util.c (ilog2_64): Define only for [SIZEOF_KERNEL_LONG_T > 4].
+       (ilog2_32): Define only for [SIZEOF_KERNEL_LONG_T == 4].
+
+2020-03-09  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: include <signal.h> instead of <sys/signal.h>
+       <sys/signal.h> is an old stub that exists for compatibility with some
+       ancient systems, it just includes <signal.h>.
+
+       * tests/prctl-pdeathsig.c: Include <signal.h> instead of <sys/signal.h>.
+
+2020-03-09  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Assume that prctl() and <sys/prctl.h> are always available.
+       They were introduced in the GNU libc back in 1997,
+       so we can safely use them without further checks.
+
+       * configure.ac (AC_CHECK_FUNCS): Remove prctl.
+       * strace.c: Include <sys/prctl.h> unconditionally.
+       (startup_child): Do not test for HAVE_PRCTL.
+       * tests/prctl-name.c: Include <sys/prctl.h> unconditionally, do not test
+       for HAVE_PRCTL.
+       * tests/prctl-seccomp-filter-v.c: Likewise.
+       * tests/prctl-seccomp-strict.c: Likewise.
+       * tests/printpath-umovestr-undumpable.c: Likewise.
+       * tests/printstrn-umoven-undumpable.c: Likewise.
+       * tests/set_ptracer_any.c: Likewise.
+       * tests/seccomp-filter-v.c: Include <sys/prctl.h> unconditionally.
+
+2020-03-09  Dmitry V. Levin  <ldv@altlinux.org>
+
+       strace.1: fix typo.
+       * strace.1.in (.SH HISTORY): Fix spelling of OpenRISC.
+
+       Resolves: https://github.com/strace/strace/issues/128
+
+2020-03-06  Dmitry V. Levin  <ldv@altlinux.org>
+
+       print_timeval: do not use struct timeval provided by libc.
+       Use kernel_old_timeval_t provided by our kernel_timeval.h instead of
+       struct timeval provided by libc to avoid potential issues if libc
+       changes the definition of struct timeval to use 64-bit types on 32-bit
+       systems.
+
+       * print_timeval.c: Include "kernel_timeval.h".
+       (timeval_t): Change from struct timeval to kernel_old_timeval_t.
+
+       Complements: v5.5-8-g94d56c9c3 "printrusage: bundle rusage_t definition"
+
+2020-03-06  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Move kernel_old_timeval definition to kernel_timeval.h.
+       It's going to be used later in print_timeval.c
+
+       * kernel_timeval.h: Include "kernel_types.h".
+       (kernel_old_timeval_t): New type.
+       * printrusage.c: Include "kernel_timeval.h".
+       (struct kernel_old_timeval): Remove.
+       (rusage_t): Replace struct kernel_old_timeval with kernel_old_timeval_t.
+
+2020-03-06  Dmitry V. Levin  <ldv@altlinux.org>
+
+       printrusage: fix kernel_old_timeval definition to match the kernel.
+       The type of struct kernel_old_timeval.tv_usec field is the same
+       kernel_long_t as the type of tv_sec field, with one notable exception:
+       sparc64 is the only 64-bit architecture where tv_usec field is 32-bit.
+
+       * printrusage.c (struct kernel_old_timeval) [__sparc__ && __arch64__]:
+       Change the type of tv_usec field from long to int.
+       [!(__sparc__ && __arch64__)]: Change the type of tv_usec field
+       from long to kernel_long_t.
+
+       Fixes: v5.5-8-g94d56c9c3 "printrusage: bundle rusage_t definition"
+
+2020-03-06  Alistair Francis  <alistair.francis@wdc.com>
+
+       printrusage: fix kernel_old_timeval typo.
+       The timeval struct should contain a tv_sec and tv_usec type,
+       fix the typo to indicate that it's usec and not nsec.
+
+       This member is never directly accessed here so there are no other
+       changes required.
+
+
+       * printrusage.c (struct kernel_old_timeval): Rename tv_nsec to tv_usec.
+
+       Fixes: v5.5-8-g94d56c9c3 "printrusage: bundle rusage_t definition"
+
+2020-03-02  Paul Chaignon  <paul.chaignon@gmail.com>
+           Eugene Syromyatnikov  <evgsyr@gmail.com>
+           Dmitry V. Levin  <ldv@altlinux.org>
+
+       bpf: implement decoding of BPF_PROG_ATTACH replace_bpf_fd field.
+       * bpf_attr.h (BPF_PROG_ATTACH_struct): Add replace_bpf_fd field
+       introduced by Linux kernel commit v5.6-rc1~151^2~199^2~7^2~3.
+       (expected_BPF_PROG_ATTACH_struct_size): Update.
+       * bpf.c (BEGIN_BPF_CMD_DECODER(BPF_PROG_ATTACH)): Decode the new field.
+       * NEWS: Mention this.
+       * tests/bpf.c (BPF_PROG_ATTACH_checks): Check it.
+
+       bpf: update BPF_* constants.
+       * xlat/bpf_attach_flags.in (BPF_F_REPLACE): New constant introduced
+       by Linux kernel commit v5.6-rc1~151^2~199^2~7^2~3.
+       * xlat/bpf_map_types.in (BPF_MAP_TYPE_STRUCT_OPS): New constant
+       introduced by Linux kernel commit v5.6-rc1~151^2~46^2~37^2~5.
+       * xlat/bpf_prog_types.in (BPF_PROG_TYPE_STRUCT_OPS): New constant
+       introduced by Linux kernel commit v5.6-rc1~151^2~46^2~37^2~6.
+       (BPF_PROG_TYPE_EXT): New constant introduced by Linux kernel commit
+       v5.6-rc1~151^2~46^2~1^2~2.
+       * NEWS: Mention this.
+       * tests/bpf.c (BPF_MAP_CREATE_checks, BPF_PROG_LOAD_checks,
+       BPF_PROG_QUERY_checks): Update checks and their expected output.
+       * tests/kernel_version.c (print_bpf_attr, main): Likewise.
+
+2020-03-02  Eugene Syromyatnikov  <evgsyr@gmail.com>
+           Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests/bpf: add a guard against untested bpf_map_types updates.
+       * tests/bpf.c: Include "xlat/bpf_map_types.h", add a static_assert
+       for bpf_map_types_xdata.
+       (BPF_MAP_CREATE_checks): Update the first check.
+
+       bpf: implement decoding of struct bpf_map_info.btf_vmlinux_value_type_id field
+       * bpf_attr.h (struct bpf_map_info_struct): Insert
+       btf_vmlinux_value_type_id field between ifindex and netns_dev fields
+       introduced by Linux kernel commit v5.6-rc1~151^2~46^2~37^2~5.
+       * bpf.c (print_bpf_map_info): Print btf_vmlinux_value_type_id field.
+       * tests/bpf-obj_get_info_by_fd.c [VERBOSE] (main): Print
+       btf_vmlinux_value_type_id field if the structure is big enough.
+
+2020-03-02  Paul Chaignon  <paul.chaignon@gmail.com>
+           Eugene Syromyatnikov  <evgsyr@gmail.com>
+           Dmitry V. Levin  <ldv@altlinux.org>
+
+       bpf: implement decoding of BPF_MAP_CREATE btf_vmlinux_value_type_id field
+       * bpf_attr.h (BPF_MAP_CREATE_struct): Add btf_vmlinux_value_type_id
+       field introduced by Linux kernel commit v5.6-rc1~151^2~46^2~37^2~5.
+       (expected_BPF_MAP_CREATE_struct_size): Update.
+       * bpf.c (BEGIN_BPF_CMD_DECODER(BPF_MAP_CREATE)): Decode the new field.
+       * NEWS: Mention this.
+       * tests/bpf-obj_get_info_by_fd.c (print_map_create): Update expected
+       output.
+       * tests/bpf.c (BPF_MAP_CREATE_checks): Add a check that includes
+       btf_vmlinux_value_type_id field.
+
+2020-03-01  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       ioctl: add HIDIOCGRAWUNIQ ioctl number decoding.
+       * ioctl.c (hiddev_decode_number): Decode HIDIOCGRAWUNIQ introduced
+       by Linux kernel commit v5.6-rc1~198^2~1^2.
+
+       ioctl: fix indentation in switch clauses.
+       * ioctl.c: Fix indentation in switch clauses, no code changes.
+
+       xlat: update AUDIT_* constants.
+       * xlat/nl_audit_types.in: Add #sorted.
+       (AUDIT_BPF): New constant, introduced by Linux kernel commit
+       v5.6-rc1~151^2~199^2~47.
+
+       xlat: update CLONE_* constants.
+       * xlat/clone3_flags.in (CLONE_NEWTIME): New constant, introduced
+       by Linux kernel commit v5.6-rc1~177^2~41.
+       * xlat/setns_types.in (CLONE_NEWTIME): Likewise.
+       * xlat/unshare_flags.in (CLONE_NEWTIME): Likewise.
+       * tests/clone3.c (main): Update the expected output.
+       * tests/unshare.c (main): Likewise.
+
+       xlat/unshare_flags: reorder and provide fallback definitions for constants
+       * xlat/unshare_flags.in: Provide fallback definitions for constants,
+       reorder in the ascending order, add #sorted.
+       * tests/unshare.c (main): Update the expected output.
+
+       xlat: update GRND_* constants.
+       * xlat/getrandom_flags.in (GRND_INSECURE): New constant, introduced
+       by Linux kernel commit v5.6-rc1~91^2~20.
+
+       xlat: update IPPROTO_* constants.
+       * xlat/inet_protocols.in (IPPROTO_MPTCP): New constant, introduced
+       by Linux kernel commit v5.6-rc1~151^2~118^2~8.
+
+       xlat: update RTM_F_* constants.
+       * xlat/routing_flags.in: Add #sorted.
+       (RTM_F_NOTIFY, RTM_F_CLONED, RTM_F_EQUALIZE, RTM_F_PREFIX,
+       RTM_F_LOOKUP_TABLE): Add fallback definitions.
+       (RTM_F_FIB_MATCH): New constant, introduced by Linux kernel commit
+       v4.13-rc1~157^2~364^2~2.
+       (RTM_F_OFFLOAD, RTM_F_TRAP): New constants, introduced by Linux kernel
+       commit v5.6-rc1~151^2~91^2~7.
+
+       io_uring: decode IORING_REGISTER_EVENTFD_ASYNC io_uring_reginster command
+       * xlat/uring_register_opcodes.in (IORING_REGISTER_EVENTFD_ASYNC): New
+       constant introduced by Linux kernel commit v5.6-rc1~123^2~28.
+       * io_uring.c (io_uring_register): Handle IORING_REGISTER_EVENTFD_ASYNC
+       along with IORING_REGISTER_FILES and IORING_REGISTER_EVENTFD.
+       * tests/io_uring_register.c (main): Check it, update expected output.
+
+       xlat: update KVM_* constants.
+       * xlat/kvm_cap.in (KVM_CAP_S390_VCPU_RESETS): New constant, introduced
+       by Linux kernel commit v5.6-rc1~39^2~3^2~3.
+
+       xlat: add ZONEFS_MAGIC to fsmagic.
+       * xlat/fsmagic.in (ZONEFS_MAGIC): New constant, introduced by Linux
+       kernel commit v5.6-rc1~2^2~1.
+
+2020-02-26  Alistair Francis  <alistair.francis@wdc.com>
+
+       tests/clock_nanosleep: Skip test if __NR_clock_nanosleep isn't defined.
+       Modern (added since Linux kernel 5.1+) 32-bit architectures don't have
+       the __NR_clock_nanosleep syscall, if we don't have the syscall let's
+       skip the test.
+
+
+       * tests/clock_nanosleep.c [!__NR_clock_nanosleep]: Skip the test.
+
+2020-02-26  Alistair Francis  <alistair.francis@wdc.com>
+           Dmitry V. Levin  <ldv@altlinux.org>
+
+       linux/32: Split 32-bit time_t based syscalls into a separate header.
+
+       Starting with Linux kernel v5.1, new 32-bit architectures
+       do not implement old 32-bit time_t based system calls, so
+       they should not have the corresponding syscallent records.
+
+       * linux/32/syscallent-time32.h: New file, generated using the following
+       command: grep 'timex\?32)' linux/32/syscallent.h
+       * Makefile.am (EXTRA_DIST): Add it.
+       * linux/32/syscallent.h: Replace entries for 32-bit time_t based
+       syscalls with stub comments using the following command:
+       sed -i '/timex\?32)/ s/\(^\[[^]]\+\]\)[^"]*"\([^"]\+\)".*/\/\* \1 \2 \*\//'
+       [HAVE_ARCH_TIME32_SYSCALLS]: Include "32/syscallent-time32.h".
+
+2020-02-24  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       strace: disable seccomp-bpf instead of enabling following forks.
+       It is in line with the rest of the checks that disable seccomp-bpf
+       usage if it is impossible.
+
+       * strace.c (init) <if (seccomp_filtering)>: Rephrase the error
+       if followfork is not set; set seccomp_filtering to false; do not set
+       followfork to true.
+       * tests/options-syntax.test: Update the expected output.
+
+2020-02-24  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       strace: warn about uselessness of -A/--output-separately in absence of -o
+       * strace.c (init) <if (!outfname)>: Print warnings if output_separately
+       and/or open_append.
+       * tests/options-syntax.test: Check this.
+
+       Update NEWS.
+
+       strace: add a long option alias for -t.
+       * strace.c (tflag): Remove.
+       (tflag_scale, tflag_width, tflag_format): New static variables.
+       (printleader): Rewrite time stamp printing to allow custom format
+       and precision.
+       (printleader) <if (rflag)>: Use tflag_format instead of tflag
+       as an indicator for presence of absolute timestamps.
+       (parse_ts_arg): New function.
+       (init) <tflag_str, ttflag_str, tttflag_str>: New static constants.
+       (init) <tflag_long_set, tflag_short>: New variables.
+       (init) <enum>: Add GETOPT_TS.
+       (init) <longopts>: Add "absolute-timestamps" and "timestamps" long
+       options.
+       (init) <case 't'>: Increment tflag_short instead of tflag.
+       (init) <case GETOPT_TS>: Handle the new option using parse_ts_arg.
+       (init): Check if tflag_short is set; if tflag_long_set is set as well,
+       then bail out, otherwise call parse_ts_arg with the appropriate
+       argument; update the message that mentions -t.
+       (usage): Document it.
+       * strace.1.in (.SS Output format): Likewise.
+       * tests/gen_tests.in (strace--absolute-timestamps,
+       strace--absolute-timestamps-format-time,
+       strace--absolute-timestamps-format-time-precision-s,
+       strace--absolute-timestamps-format-time-precision-ms,
+       strace--absolute-timestamps-format-time-precision-us,
+       strace--absolute-timestamps-format-time-precision-ns,
+       strace--absolute-timestamps-format-unix-precision-s,
+       strace--absolute-timestamps-format-unix-precision-ms,
+       strace--absolute-timestamps-format-unix-precision-us,
+       strace--absolute-timestamps-format-unix-precision-ns,
+       strace--relative-timestamps, strace--relative-timestamps-s,
+       strace--relative-timestamps-ms, strace--relative-timestamps-us,
+       strace--relative-timestamps-ns, strace--timestamps,
+       strace--timestamps-time, strace--timestamps-time-s,
+       strace--timestamps-time-ms, strace--timestamps-time-us,
+       strace--timestamps-time-ns, strace--timestamps-unix-s,
+       strace--timestamps-unix-ms, strace--timestamps-unix-us,
+       strace--timestamps-unix-ns): New tests.
+       * tests/options-syntax.test: Add new checks.
+       * tests/strace-t.test: Get the option to check via command-line
+       arguments.
+       * tests/strace-tt.test: Get the precision and option to check
+       via command-line arguments.
+       * tests/strace-ttt.test: Get the precision and option to check
+       via command-line arguments, generate subsec_re appropriately.
+
+2020-02-24  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       strace: establish -qqq as an alias for --quiet=all.
+       Addition of thread-execve and path-resolution quiet flags introduced
+       discrepancy between the -qq and --quiet=all settings; let's establish
+       that -qqq is the ultimate quietness setting and leave the more
+       fine-grained control to the -e quiet/--quiet option.
+
+       * strace.c (init) <qqqflag_qual>: New static constant.
+       (init) Supply qqqflag_qual to qualify_quiet if qflag_short is set to 3
+       or higher.
+       (usage): Document it.
+       * strace.1.in: Likewise.
+       * tests/threads-execve--quiet-thread-execve.c: New file.
+       * tests/threads-execve-q.c: Likewise.
+       * tests/threads-execve-qq.c: Likewise.
+       * tests/threads-execve-qqq.c: Likewise.
+       * tests/.gitignore: Add threads-execve--quiet-thread-execve,
+       threads-execve-q, threads-execve-qq, threads-execve-qqq.
+       * tests/Makefile.am (check_PROGRAMS): Likewise.
+       (threads_execve__quiet_thread_execve_LDADD, threads_execve_q_LDADD,
+       threads_execve_qq_LDADD, threads_execve_qqq_LDADD): New variables.
+       * tests/gen_tests.in (threads-execve--quiet-thread-execve,
+       threads-execve-q, threads-execve-qq, threads-execve-qqq): New tests.
+       * tests/threads-execve.c [!PRINT_EXITED] (PRINT_EXITED): New macro.
+       [!PRINT_SUPERSEDED] (PRINT_SUPERSEDED): Likewise.
+       (thread): Put "superseded by execve in pid"... message printing under
+       PRINT_SUPERSEDED.
+       (main): Put "+++ exited with 0 +++" message printing under PRINT_EXITED.
+       * tests/threads-execve.test: Inject the arguments supplied to the tests
+       into the strace's arguments.
+
+2020-02-24  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: fix require_min_nproc on systems without nproc.
+       * tests/init.sh (require_min_nproc): Fix typo in the check for nproc
+       that manifests itself in "set -e" mode.
+
+       Fixes: v5.4~59 "tests: skip a few tests on systems with nproc == 1"
+
+2020-02-24  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       strace: add a long option alias for -y.
+       Provide a new qualifier, decode-fds, and add (hopefully) sensible
+       handling for it.
+
+       * defs.h (show_fd_path): Remove declaration.
+       (qualify_decode_fd): New declaration.
+       * filter_qualify.c (decode_fd_set, decode_fd_set_updated): New
+       variables.
+       (decode_fd_str_to_uint, qualify_decode_fd): New functions.
+       (qual_options): Add "decode-fd" and "decode-fds" that are handled
+       by qualify_decode_fd.
+       * number_set.h (enum decode_fd_bits): New enumeration.
+       (decode_fd_set_updated, decode_fd_set): New declarations.
+       * strace.c (show_fd_path): Remove.
+       (init) <yflag_qual, yyflag_qual>: New static constants.
+       (init) <yflag_short>: New local variable.
+       (init) <enum>: Add GETOPT_QUAL_FD.
+       (init) <longopts>: Add "decode-fds" long option.
+       (init) <case 'y'>: Increment yflag_short instead of show_fd_path.
+       (init) <case GETOPT_QUAL_FD>: Call qualify_decode_fd with either optarg
+       or yflag_qual is the former is NULL.
+       (init): Check if yflag_short is set, if decode_fd_set_updated is set
+       as well, bail out, call qualify_decode_fd with the appropriate set
+       otherwise; update the message that mentions -y.
+       (usage): Document it.
+       * strace.1.in (.SS Output format): Likewise.
+       * util.c: Include "number_set.h".
+       (printfd): Rewrite using appropriate is_number_in_set checks.
+       * tests/dev--decode-fds-dev.c: New file.
+       * tests/dev--decode-fds-path.c: Likewise.
+       * tests/dev--decode-fds-socket.c: Likewise.
+       * tests/net--decode-fds-dev-netlink.c: Likewise.
+       * tests/net--decode-fds-none-netlink.c: Likewise.
+       * tests/net--decode-fds-path-netlink.c: Likewise.
+       * tests/net--decode-fds-socket-netlink.c: Likewise.
+       * tests/pidfd_open--decode-fd-path.c: Likewise.
+       * tests/.gitignore: Add dev--decode-fds-dev, dev--decode-fds-path,
+       dev--decode-fds-socket, net--decode-fds-dev-netlink,
+       net--decode-fds-none-netlink, net--decode-fds-path-netlink,
+       net--decode-fds-socket-netlink, and pidfd_open--decode-fd-path.
+       * tests/pure_executables.list: Likewise.
+       * tests/dev-yy.c [!PRINT_DEVNUM] (PRINT_DEVNUM): New macro, define to 1.
+       (DEV_FMT): New macro.
+       (main): Parametrize the output using DEV_FMT in accordance with
+       PRINT_DEVNUM value.
+       * tests/gen_tests.in (dev--decode-fds-dev, dev--decode-fds-path,
+       dev--decode-fds-socket, net--decode-fds-dev-netlink,
+       net--decode-fds-none-netlink, net--decode-fds-path-netlink,
+       net--decode-fds-socket-netlink, pidfd_open--decode-fd-path): New tests.
+       (open_tree-P): Use the long option.
+       * tests/net-yy-netlink.c [!PRINT_SOCK] (PRINT_SOCK): New macro, define
+       to 2.
+       (FMT_UNBOUND, FMT_BOUND, ARG_UNBOUND, ARG_BOUND): New macros, defined
+       based on PRINT_SOCK value.
+       (main): Parametrize the output using FMT_UNBOUND, FMT_BOUND,
+       ARG_UNBOUND, and ARG_BOUND.
+       * tests/net-yy-netlink.test: Append options passed to the test instead
+       of "-yy".
+       * tests/options-syntax.test: Add checks, update expected output.
+
+2020-02-24  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       strace: add a long option aliases for -f and -ff.
+       Introduce a new option, --output-separately, and make -ff an alias
+       for a combination of -f and this new option.
+
+       * defs.h (followfork): Change type to bool.
+       (output_separately): New declaration.
+       * strace.c (followfork): Change type to bool.
+       (output_separately): New variable.
+       (outf_perror, printleader, after_successful_attach, droptcb, init,
+       print_event_exit, print_syscall_resume): Use output_separately
+       instead of followfork check.
+       (init) <followfork_short>: New local variable.
+       (init) <enum>: Add GETOPT_FOLLOWFORKS and GETOPT_OUTPUT_SEPARATELY.
+       (init) <longopts>: Add "follow-forks" and "output-separately" long
+       options.
+       (init) <case 'f'>: Increase followfork_short instead of followfork.
+       (init) <case GETOPT_FOLLOWFORKS>: Set followfork to true.
+       (init) <case GETOPT_OUTPUT_SEPARATELY>: Set output_separately to true.
+       (init): Fail if either both followfork_short and followfork are set,
+       or followfork_short >= 2 and output_separately is set;
+       set followfork/output_separately appropriately otherwise;
+       update the error messages that mention -f/-ff options with the aliases.
+       (init) <if (seccomp_filtering)>: Set followfork to true and not 1.
+       (usage): Document it.
+       * strace.1.in (.SS Tracing): Likewise.
+       * tests/strace--follow-forks-output-separately.expected: New file.
+       * tests/Makefile.am (EXTRA_DIST): Add it.
+       * tests/delay.test: Use --follow-forks instead of -f.
+       * tests/gen_tests.in: Add strace--follow-forks-output-separately test.
+       * tests/looping_threads.test: Use --follow-forks instead of -f.
+       * tests/options-syntax.test: Add --follow-forks-related syntax checks,
+       update the expected output.
+       * tests/strace-ff.test: Add -efu as the interpreter argument; set the
+       arguments to ff_opt variable ("-ff" being the default) and use it
+       instead of -ff in the strace call; put set +f before "set -- "$LOG".*".
+
+2020-02-24  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       tests/syntax: add suffixes to produced log/exp files.
+       In order to enable inspection of them.
+
+       * tests/syntax.sh (log_sfx): New functions.
+       (check_exit_status_and_stderr, check_exit_status_and_stderr_using_grep):
+       Get suffix from the first argument, append it to LOG/EXP usage instances;
+       open-code dump_log_and_fail_with in order to print the file with the
+       suffix.
+       check_e, check_e_using_grep, check_h): Assign log_sfx result to sfx,
+       append it to LOG/EXP usage instances, pass it to
+       check_exit_status_and_stderr/check_exit_status_and_stderr_using_grep.
+
+2020-02-19  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       strace: add arguments to --syscall-times and --relative-timestamps.
+       * defs.h (Tflag_scale, Tflag_width): New declarations.
+       * strace.c (Tflag_scale, Tflag_width, rflag_scale, rflag_width): New
+       variables.
+       (printleader): Parametrise relative timestamp printing with rflag_width
+       and rflag_scale.
+       (init) <longopts>: Change second field of "relative-timestamps" and
+       "syscall-times" from no_argument to optional_argument.
+       (init) <case 'r', case 'T'>: Handle optarg, fail if the scale variable
+       is set to -1.
+       (usage): Document it.
+       * strace.1.in (.SS Output format): Likewise.
+       * syscall.c (syscall_exiting_trace): Parametrise syscall time printing
+       * with Tflag_width and Tflag_scale.
+       * tests/gen_tests.in (strace--relative-timestamps-s,
+       strace--relative-timestamps-ms, strace--relative-timestamps-us,
+       strace--relative-timestamps-ns): New tests.
+       * tests/options-syntax.test: New checks for --relative-timestamps and
+       --syscall-times option syntax.
+       * tests/strace--relative-timestamps-ms.expected: New file.
+       * tests/strace--relative-timestamps-ns.expected: Likewise.
+       * tests/strace--relative-timestamps-s.expected: Likewise.
+       * tests/strace--relative-timestamps-us.expected: Likewise.
+       * tests/strace--syscall-times-ms.expected: Likewise.
+       * tests/strace--syscall-times-ns.expected: Likewise.
+       * tests/strace--syscall-times-s.expected: Likewise.
+       * tests/strace--syscall-times-us.expected: Likewise.
+       * tests/Makefile.am (EXTRA_DIST): Add them.
+
+2020-02-19  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       util: factor out time scale parsing.
+       In preparation of using elsewhere.
+
+       * defs.h (str2timescale_ex): New declaration.
+       (str2timescale_optarg, str2timescale_sfx): New macros.
+       * util.c (str2timescale_ex): New function.
+       (parse_ts): Remove units, unit, assign str2timescale_sfx result to a new
+       variable scale and use it instead of unit->val.
+
+2020-02-19  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       pathtrace: add a quiet flag for path resolution messages.
+       And also quote the paths.
+
+       * number_set.h (enum quiet_bits): Add QUIET_PATH_RESOLVE.
+       * filter_qualify.c (quietstr_to_uint) <quiet_strs>: Add a string
+       representation for QUIET_PATH_RESOLVE.
+       * pathtrace.c (pathtrace_select_set): Put "Requested path"... message
+       under QUIET_PATH_RESOLVE flag check; process path and rpath with
+       string_quote.
+       * strace.c (usage): Document it.
+       * strace.1.in (.SS Output format) <-e quiet>: Likewise.
+
+2020-02-19  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       strace: add a quiet flag for "superseded by execve" messages.
+       * filter_qualify.c (quietstr_to_uint) <quiet_strs>: Add
+       a string representation for QUIET_THREAD_EXECVE,
+       * number_set.h (enum quiet_bits): Add QUIET_THREAD_EXECVE.
+       * strace.c (maybe_switch_tcbs): Put message printing under
+       QUIET_THREAD_EXECVE flag check.
+       (usage): Document it.
+       * strace.1.in (.SS Output format) <-e quiet>: Likewise.
+       * tests/maybe_switch_current_tcp--quiet-thread-execve.c: New file.
+       * tests/.gitignore: Add maybe_switch_current_tcp--quiet-thread-execve.
+       * tests/pure_executables.list: Likewise.
+       * tests/Makefile.am (maybe_switch_current_tcp__quiet_thread_execve_LDADD):
+       New variable.
+       * tests/gen_tests.in (maybe_switch_current_tcp--quiet-thread-execve):
+       New test.
+       * tests/maybe_switch_current_tcp.c [!QUIET_MSG] (QUIET_MSG): New macro.
+       (thread): Print "superseded"... message only is QUIET_MSG is 0.
+
+2020-02-19  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       syscall: print personality switch messages in tcb's output.
+       Personality switch is a rather normal event, it's unclear why it has
+       been always treated as a diagnostics/error information.  Having it under
+       qflag makes even less sense, as it was impossible to get
+       this information when the -o option was used.  With this change,
+       it is at least possible to get it with something like
+
+           strace -f -o out --quiet=none PROG
+
+       One caveat, though, is its rather odd format, with square brackets,
+       "PID=", and a dot, but it seems that we're stuck with it forever, as it
+       traces back for decades, albeit with a prefix change in commit
+       v4.11~509 ("Consistently use error_msg instead of fprintf(stderr)").
+
+       * syscall.c (update_personality): Use printleader/tprintf/line_ended
+       instead of error_msg.
+       * tests/bexecve.test: Add --quiet=personality to strace invocations.
+       * tests/strace-ff.test: Likewise.
+
+2020-02-19  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       strace: respect quietness setting when reporting unknown tracees.
+       Since the situations where these processes can appear are relatively
+       normal, it makes little sense to print them irrespective of quietness
+       setting.
+
+       * strace.c (maybe_allocate_tcb): Put the message about exit of unknown
+       process under QUIET_EXIT check; put message about detach of unknown
+       process under QUIET_ATTACH check.
+       * tests/clone_parent--quiet-exit.c: New file.
+       * tests/clone_parent-q.c: Likewise.
+       * tests/clone_parent-qq.c: Likewise.
+       * tests/clone_ptrace--quiet-attach.c: Likewise.
+       * tests/clone_ptrace--quiet-exit.c: Likewise.
+       * tests/clone_ptrace-q.c: Likewise.
+       * tests/clone_ptrace-qq.c: Likewise.
+       * tests/.gitignore: Add clone_parent--quiet-exit, clone_parent-q,
+       clone_parent-qq, clone_ptrace--quiet-attach, clone_ptrace--quiet-exit,
+       clone_ptrace-q, and clone_ptrace-qq.
+       * tests/Makefile.am (check_PROGRAMS): Likewise.
+       * tests/gen_tests.in: Add clone_parent--quiet-exit, clone_parent-q,
+       clone_parent-qq, clone_ptrace--quiet-attach, clone_ptrace--quiet-exit,
+       clone_ptrace-q, and clone_ptrace-qq tests.
+       * tests/clone_parent.c [!QUIET_MSG] (QUIET_MSG): New macro.
+       (main): Print exit messages only if QUIET_MSG set to zero.
+       * tests/clone_ptrace.c [!QUIET_ATTACH] (QUIET_ATTACH): New macro.
+       [!QUIET_EXIT] (QUIET_EXIT): Likewise.
+       (main): Print information about unknown pid detach only if QUIET_ATTACH
+       is 0; print information about process exiting only if QUIET_EXIT is 0.
+       * tests/clone_ptrace.test: Add the first argument to args, add
+       "--quiet=personality" if it is empty.
+
+2020-02-19  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       strace: add long option aliases for -r, -T, and -O.
+       The last trivial ones.
+
+       * strace.c (init) <longopts>: Add "summary-syscall-overhead" as an alias
+       for 'O', "relative-timestamps" as an alias for 'r', and "syscall-times"
+       as an alias for 'T'.
+       (usage): Document it.
+       * strace.1.in: Likewise.
+       * tests/count.test: Add --summary-syscall-overhead checks.
+       * tests/gen_tests.in: Add strace--relative-timestamps and
+       strace--syscall-times tests.
+       * tests/strace-T.test: Allow passing option to check as the first
+       * argument.
+       * tests/strace-r.test: Likewise.
+       * tests/strace--relative-timestamps.expected: New file.
+       * tests/strace--syscall-times.expected: Likewise.
+       * tests/Makefile.am (EXTRA_DIST): Add them.
+
+2020-02-19  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       strace.1: document possible quialifier aliases.
+       * strace.1.in (.SS General) <-e expr>: Document possible aliases
+       for quialifiers.
+
+2020-02-19  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       strace: add long option aliases for -q.
+       Provide a new qualifier, quiet, and add a (hopefully) sensible handling
+       for it.
+
+       * defs.h (qflag): Remove declaration.
+       (qualify_quiet): New declaration.
+       * filter_qualify.c (quiet_set, quiet_set_updated): New variables.
+       (quietstr_to_uint, qualify_quiet): New functions.
+       (qual_options): Add "quiet", "silence", "silent", "q" that are handled
+       by qualify_quiet.
+       * number_set.h (enum quiet_bits): New enumeration.
+       (quiet_set_updated, quiet_set): New declarations.
+       * strace.c (qflag): Remove.
+       (detach, attach_tcb, maybe_allocate_tcb): Change qflag check to
+       is_number_in_set(QUIET_ATTACH, quiet_set).
+       (init) <qflag_qual, qqflag_qual>: New static constants.
+       (init) <enum>: Add GETOPT_QUAL_QUIET.
+       (init) <longopts>: Add "quiet", "silent", "silence".
+       (init) <case 'q'>: Increment qflag_short instead of qflag.
+       (init) <case GETOPT_QUAL_QUIET>: Call qualify_quiet with either optarg
+       or qflag_qual is the former is NULL.
+       (init) <if (outfname && argc)>: Check qflag_short and quiet_set_updated
+       instead of qflag for changing the default quietness setting.
+       (init): Check if qflag_short is set, if quiet_set_updated is set as well,
+       bail out, call qualify_quiet with the appropriate set otherwise.
+       (print_exited): Change qflag check to
+       is_number_in_set(QUIET_EXIT, quiet_set).
+       (usage): Document it.
+       * strace.1.in: Likewise.
+       * syscall.c (update_personality): Change qflag check to
+       is_number_in_set(QUIET_PERSONALITY, quiet_set).
+       * tests/clone-flags.test: Use --silence=exits instead of -qq.
+       * tests/count-f.test: Use -e silent=attach instead of -q.
+       * tests/options-syntax.test: Add checks.
+       * tests/strace-D.test: Use -e q=attach instead of -q.
+
+2020-02-19  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       strace: add long option aliases for -x.
+       * defs.h (enum xflag_opts): New enumeration.
+       * strace.c (xflag_str): New static variable.
+       (init) <xflag_long>: New variable.
+       (init) <enum>: Add GETOPT_HEX_STR.
+       (init) <longopts>: Add "string-in-hex" long option.
+       (init) <case GETOPT_HEX_STR>: Parse the argument using find_arg_val.
+       (init): Fail if both xflag_long and xflag are set; copy xflag_long
+       to xflag if only the former is set.
+       (usage): Document it.
+       * strace.1.in: Likewise.
+       * tests/gen_tests.in (strace--strings-in-hex,
+       strace--strings-in-hex-all, strace--strings-in-hex-non-ascii, strace-x,
+       strace-xx): New tests.
+       * tests/pure_executables.list: Add them.
+       * tests/.gitignore: Likewise.
+       * tests/options-syntax.test: Add checks.
+       * tests/strace--strings-in-hex-all.c: New file.
+       * tests/strace--strings-in-hex-non-ascii.c: Likewise.
+       * tests/strace--strings-in-hex.c: Likewise.
+       * tests/strace-x.c: Likewise.
+       * tests/strace-xx.c: Likewise.
+
+       strace: add long option aliases for -z and -Z.
+       * strace.c (init) <longopts>: Add "successful-only" and "failed-only"
+       long options for -z and -Z, respectively.
+       (init): Update the related error message.
+       (usage): Document it.
+       * strace.1.in: Likewise.
+       * tests/options-syntax.test: Add checks, update expected output.
+       * tests/status-failed-long.c: New file.
+       * tests/status-failed-status.c: Likewise.
+       * tests/status-successful-long.c: Likewise.
+       * tests/status-successful-status.c: Likewise.
+       * tests/.gitignore: Add them.
+       * tests/pure_executables.list: Likewise
+       * tests/gen_tests.in (status-failed-long, status-failed-status,
+       status-successful-long, status-successful-status): New tests.
+
+2020-02-19  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       strace: add --daemonize long option alias for -D.
+       Don't fail those who provide --daemonise or --daemonized as well.
+
+       Since multiple -D instances change behaviour and with long options
+       the last instance wins, it is better just to forbid the simultaneous
+       usage of the short and long option variants.
+
+       * strace.c (daemonize_str): New static constant.
+       (init) <daemonized_tracer_long>: New variable.
+       (init) <enum>: Add GETOPT_DAEMONIZE.
+       (init) <longopts>: Add "daemonize" long option variants.
+       (init) <case GETOPT_DAEMONIZE>: Use find_arg_val for argument parsing.
+       (init): Fail if both daemonized_tracer_long and daemonized_tracer are
+       set; copy daemonized_tracer_long to daemonized_tracer if only the former
+       is set; update the error messages that mention -D option with the alias.
+       (usage): Document it.
+       * strace.1.in: Likewise.
+       * tests/options-syntax.test: Add checks, update existing ones.
+
+2020-02-19  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       strace: mention long option aliases in error messages.
+       If a user has provided a long option alias, current error messages could
+       be confusing otherwise.
+
+       * strace.c (init): Augment error messages with long option aliases where
+       appropriate.
+       * tests/options-syntax.test: Update expected output.
+
+2020-02-19  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       strace: print long options in the option error message.
+       If a long option alias is used with incorrect argument, it's better show it
+       in the error message instead of the short option equivalent.
+
+       * strace.c (error_opt_arg): Add lopt argument, print its name
+       if it is non-NULL.
+       (init): Add lopt_idx variable, pass it to getopt_long, set loop-local
+       lopt variable to an option pointer based on lopt_idx; pass lopt
+       in error_opt_arg calls.
+       * tests/options-syntax.test: Update expected output.
+
+2020-02-19  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       strace: add a long option alias for -I.
+       And add more human-comprehensible values for it.
+
+       * strace.c (parse_interruptible_arg): New function.
+       (init) <longopts>: Add "interruptible" long option alias for 'I'.
+       (init) <case 'I'>: Call parse_interruptible_arg.
+       (usage): Document new long option alias and values.
+       * strace.1.in (parse_interruptible_arg): Likewise.
+       * tests/options-syntax.test: Add checks for the new syntax.
+       * tests/sigblock.test: Introduce -I syntax variety.
+       * tests/sigign.test: Likewise.
+
+2020-02-19  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       filter_qualify: rewrite statusstr_to_uint using find_xlat_val.
+       * filter_qualify.c (*statuses): Move inside statusstr_to_uint, change
+       the type to const struct xlat_data[], change the initialisation
+       accordingly.
+       (statusstr_to_uint): Call find_arg_val instead of open-coding search
+       in a string array.
+
+2020-02-19  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       util: rewrite parse_ts suffix matching using find_xlat_val.
+       A known behavioural change is that suffix can have any case, which
+       matches other places of option argument parsing.
+
+       * util.c (parse_ts): Change type of units to struct xlat_data[]; move
+       definition of units variable to its first usage, change its type
+       to const struct xlat_data *; use find_xlat_val instead of open-coding
+       search in units array.
+
+2020-02-19  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       util: introduce find_xlat_val and find_arg_val.
+       The commonly open-coded snippet throughout the code, especially in the
+       argument parsing code, is searching in a string-value pair array of
+       string, so let's provide a function (or, more precisely, two functions,
+       one generic and another one that targets specifically argument parsing)
+       that does precisely that, on top of existing string-value pair
+       struct xlat_data type.
+
+       * defs.h (enum find_xlat_flag_bits, enum find_xlat_flags): New
+       enumerations.
+       (find_xlat_val_ex, find_arg_val_): New declarations.
+       (find_xlat_val, find_xlat_val_case, find_arg_val): New macros.
+       * util.c (find_xlat_val_ex, find_arg_val_): New functions.
+
+2020-02-19  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       syscall: handle fd printing regardless of show_fd_path setting.
+       As of now, the way the higher 32 bits of the syscall return value
+       are printed depends on the show_fd_path (-y) setting: if it is set,
+       they are trimmed, which is pretty inconsistent.
+
+       * syscall.c (syscall_exiting_trace) <case RVAL_FD>: Check if tcp->u_rval
+       fits in int before passing it to printfd instead of a (redundant) show_fd_path
+       check (that is also done inside printfd itself).
+       * tests/bpf-success-long-y.c: New file.
+       * tests/bpf-success-long-y.test: New test.
+       * tests/.gitignore: Add bpf-success-long-y.
+       * tests/Makefile.am (check_PROGRAMS): Likewise.
+       (DECODER_TESTS): Add bpf-success-long-y.test.
+       * tests/bpf.c [!FD0_PATH] (FD0_PATH): New macro.
+       [INJECT_RETVAL] (sys_bpf): Print INJECT_RETVAL as long.
+       (BPF_MAP_CREATE_checks, BPF_OBJ_PIN_checks, BPF_OBJ_PIN_checks,
+       BPF_PROG_ATTACH_checks, BPF_RAW_TRACEPOINT_OPEN_checks,
+       BPF_TASK_FD_QUERY_checks): Append FD0_PATH to places where fd 0
+       is printed.
+       (print_BPF_PROG_QUERY_attr4, print_BPF_PROG_QUERY_attr5): Do not
+       conditionalise part of the strings with INJECT_RETVAL > 0, as we always
+       inject positive values so far.
+
+2020-02-19  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       tests/io_uring_register: properly handle big endian architectures.
+       tests/io_uring_register.c (BE_LE): New macro.
+       (main): Use BE_LE to select the address to print based on endianness.
+
+       Fixes: v5.5~41 "io_uring: add support for IORING_REGISTER_FILES_UPDATE"
+
+2020-02-12  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       strace: typo in usage (s/milliseconds/microseconds/)
+       * strace.c (usage): s/milliseconds/microseconds/
+
+       Fixes: v5.5~14 "strace: describe -e options in the help message"
+
+2020-02-12  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       printrusage: bundle rusage_t definition.
+       * printrusage.c (struct kernel_old_timeval, rusage_t): New type
+       definitions.
+       * configure.ac (AC_CHECK_MEMBERS): Check for __ru_maxrss_word,
+       __ru_ixrss_word, __ru_idrss_word, __ru_isrss_word, __ru_minflt_word,
+       __ru_majflt_word, __ru_nswap_word, __ru_inblock_word, __ru_oublock_word,
+       __ru_msgsnd_word, __ru_msgrcv_word, __ru_nsignals_word, __ru_nvcsw_word,
+       and __ru_nivcsw_word members of struct rusage.
+       * tests/waitid.c (RU_MAXRSS, RU_IXRSS, RU_IDRSS, RU_ISRSS, RU_MINFLT,
+       RU_MAJFLT, RU_NSWAP, RU_INBLOCK, RU_OUBLOCK, RU_MSGSND, RU_MSGRCV,
+       RU_NSIGNALS, RU_NVCSW, RU_NIVCSW): New macros.
+       (sprint_rusage): Use them instead of the respective ru_* field names.
+
+       Resolves: https://github.com/strace/strace/issues/122
+
+2020-02-10  Eugene Syromyatnikov  <evgsyr@gmail.com>
+           Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: fail if patterns file is not readable in match_grep.
+       Otherwise, the test will not fail if the patterns file is missing.
+
+       * tests/init.sh (match_grep): Fail in case of non-zero exit status
+       of the read loop.
+
+2020-02-10  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       tests: turn clone_parent into a generated test.
+       clone_parent.tests does nothing, only sources clone_ptrace.
+
+       * tests/clone_parent.test: Remove.
+       * tests/Makefile.am (MISC_TESTS): Remove clone_parent.test.
+       * tests/gen_tests.in (clone_parent): New entry.
+
+2020-02-10  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       tests: support --trace syntax in run_strace_match_{diff,grep}
+       * tests/init.sh (run_strace_match_diff, run_strace_match_grep): Do not
+       add -e trace option if --trace is provided already.
+
+2020-02-10  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       strace --help: document long option aliases of -w and -X options.
+       * strace.c (usage): Document --summary-wall-clock as the long option
+       alias of -w option; document --const-print-style as the long option
+       alias of -X option.
+
+       Fixes: v5.5~11 "Add long option aliases to some options"
+
+2020-02-10  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       strace --help: add missing newline before "Miscellaneous:"
+       * strace (usage): Add newline before "Miscellaneous:".
+
+       Fixes: v5.5~14 "strace: describe -e options in the help message"
+
+2020-02-10  MaJun  <majun258@linux.alibaba.com>
+
+       csky abiv1: fix compilation error.
+       struct pt_regs has no member r1, only a1.
+
+       * linux/csky/get_scno.c (arch_get_scno) [!__CSKYABIV2__]: Replace
+       csky_regs.r1 with csky_regs.a1.
+       * linux/csky/set_scno.c (arch_set_scno) [!__CSKYABIV2__]: Likewise.
+       * NEWS: Mention this fix.
+
+       Fixes: v5.1~99 "Add C-SKY architecture support"
+
+2020-02-10  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 5.5-1.
+       * strace.spec.in: Likewise.
+
+2020-02-06  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Prepare for 5.5 release.
+       * NEWS: Update for 5.5 release.
+
+       Update copyright year number range.
+       * COPYING: Update copyright year number range.
+       * tests/COPYING: Likewise.
+       * debian/copyright: Likewise.
+
+       Update copyright headers.
+       Headers updated automatically using maint/update_copyright_years.sh
+       script.
+
+2020-02-06  Dmitry V. Levin  <ldv@altlinux.org>
+
+       maint/update_copyright_years.sh: fix concurrent execution.
+       * maint/update_copyright_years.sh (process_file): Replace "continue"
+       with "return".
+
+       Fixes: v4.21~318 "maint/update_copyright_years.sh: implement concurrent execution"
+
+2020-02-06  Dmitry V. Levin  <ldv@altlinux.org>
+
+       maint/update_copyright_years.sh: fix "integer expression expected" error
+       * maint/update_copyright_years.sh: Check $copyright_year before use
+       in arithmetic operations.
+
+2020-02-05  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       strace: produce a sensible error if -k option is used but not compiled in
+       * strace.c (init) <optstring>: Do not put "k" option under
+       ENABLE_STACKTRACE.
+       (init) <longopts>: Do not put "stack-traces" option under
+       ENABLE_STACKTRACE.
+       (init) <case 'k'> [!ENABLE_STACKTRACE]: Print an error message.
+       * tests/options-syntax.test: Check that the expected error message
+       is printed if -k is not compiled in.
+
+2020-02-05  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       tests: move getstr/getoption from strace-V.test to init.sh.
+       And rename to more generic get_config_str/get_config_option.
+
+       * tests/strace-V.test (getstr, getoption): Rename to get_config_str
+       and get_config_option, respectively.  All users updated.
+       (get_config_str, get_config_option): Move ...
+       * tests/init.sh: ... here.
+
+2020-02-05  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       tests/syntax: fix incorrect match_diff/macth_grep usage.
+       match_diff and match_grep take the error message as the third argument
+       and pass it on to fail_, while the calling code expects that they simply
+       return non-zero in case of error.
+
+       * tests/syntax.sh (check_exit_status_and_stderr,
+       check_exit_status_and_stderr_using_grep): Specify the error message as
+       the third argument to match_diff/match grep instead of trying to handle
+       the erroneous status code.
+
+2020-02-05  Dmitry V. Levin  <ldv@altlinux.org>
+
+       strace: use qualify_*
+       * strace.c (init): Use qualify_trace, qualify_abbrev, qualify_verbose,
+       qualify_status, and qualify_signals instead of qualify.
+
+       Complements: v5.4-100-g490bfd465 "Add long options for qualifiers"
+
+2020-02-05  Dmitry V. Levin  <ldv@altlinux.org>
+
+       strace: rename *_OPTION to GETOPT_*
+       * strace.c (init) <enum>: Rename *_OPTION to GETOPT_*.  All users
+       updated.
+
+2020-02-04  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: add tests for new long options.
+       * tests/gen_tests.in (access): Check --trace-path.
+       (fstatat64, lstat, lstat64, newfstatat, stat, stat64, statx): Check
+       --no-abbrev and --trace-path.
+       * tests/options-syntax.test: Check --attach, --detach-on, --output,
+       --summary, --summary-only, --summary-wall-clock, --string-limit,
+       --const-print-style, --user, and --instruction-pointer.
+       * tests/qual_syscall.test: Check --columns.
+       * tests/strace-E.test: Check --env.
+       * tests/strace-S.test: Check --summary-sort-by.
+       * tests/strace-k.test: Check --stack-trace.
+
+2020-02-04  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       Add long option aliases to some options.
+       * strace.c (init) <longopts>: Add "columns" for "a",
+       "detach-on" for "b", "summary-only" for "c", "summary" for "C",
+       "env" for "E", "instruction-pointer" for "i", "stack-traces" for "k",
+       "output" for "o", "attach" for "p", "trace-path" for "P", "string-limit"
+       for "s", "summary-sort-by" for "S", "user" for "u", "no-abbrev" for "v",
+       "summary-wall-clock" for "w", and "const-print-style" for "X".
+       (usage): Document it.
+       * strace.1.in: Likewise.
+
+2020-02-04  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: add tests for new long options.
+       * tests/filtering_fd-syntax.test: Check --read and --write.
+       * tests/filtering_syscall-syntax.test: Check --trace, --abbrev,
+       --verbose, --raw, --inject, and --fault.
+       * tests/gen_tests.in: Check --status.
+       * tests/options-syntax.test: Check --kvm.
+       * tests/qual_signal.test: Check --signal.
+       * tests/qual_syscall.test: Check --trace, --abbrev, --raw,
+       and --verbose.
+
+2020-02-04  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       Add long options for qualifiers.
+       Add a long option for each respective -e qualifier.
+
+       * defs.h (qualify_trace, qualify_abbrev, qualify_verbose, qualify_raw,
+       qualify_signals, qualify_status, qualify_read, qualify_write,
+       qualify_fault, qualify_inject, qualify_kvm): Add declarations.
+       * filter_qualify.c (qualify_trace, qualify_abbrev, qualify_verbose,
+       qualify_raw, qualify_signals, qualify_status, qualify_read,
+       qualify_write, qualify_fault, qualify_inject, qualify_kvm): Remove
+       static qualifier.
+       * strace.1.in: Document long option aliases.
+       * strace.c (usage): Likewise.
+       (init) <enum>: Add QUAL_TRACE_OPTION, QUAL_ABBREV_OPTION,
+       QUAL_VERBOSE_OPTION, QUAL_RAW_OPTION, QUAL_SIGNAL_OPTION,
+       QUAL_STATUS_OPTION, QUAL_READ_OPTION, QUAL_WRITE_OPTION,
+       QUAL_FAULT_OPTION, QUAL_INJECT_OPTION, QUAL_KVM_OPTION.
+       (init) <longopts>: Add items for qualifiers.
+       (init): Handle new *_OPTION options.
+
+2020-02-04  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       strace: describe -e options in the help message.
+       So it is a bit more clear how to use them (especially such elaborate
+       ones as -e inject).
+
+       * strace.c (usage): Add -e trace, -e signal, and -e status option
+       descriptions to the Filtering section; add -e abbrev, -e verbose,
+       -e raw, -e read, -e write, and -e kvm option descriptions to the Output
+       format section; add Tampering section with description of -e inject
+       and -e fault options.
+
+2020-02-04  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       strace: document supported constant formats in the usage message.
+       * strace.c (usage): Provide the list of supported formats
+       for the -X option.
+
+2020-02-04  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       strace: capitalise placeholders in option declarations in usage.
+       It is already capitalised in descriptions (rather inconsistently,
+       however), the capitalisation is already used for "PROG" and "ARGS",
+       and it allows consistently distinguish placeholders from literals.
+       The manual page does not need the same treatment, it seems,
+       as the italic script is used there for that purpose.
+
+       Capitalise the "usage:" part, as it is often capitalised in the usage
+       messages of some other programs.
+
+       * strace.c (usage): Capitalise "expr", "column", "interruptible",
+       "path", "file", "var", "val", "strsize", "pid", "format", "overhead",
+       "sortby" placeholders where appropriate. Capitalise the first letter
+       in "usage:".
+
+2020-02-04  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       strace: sync up help message with the manual page.
+       They had discrepancies in section/optoin order for no reason.
+
+       * strace.c (usage): Move -e option in a separate General section,
+       put the rest of the sections in Startup, Tracing, Filtering, Output
+       format, Statistics, Miscellaneous order, as it is in the manual page;
+       add -ttt option description, swap -E var=val and -E var options, put
+       -A option description after -o, put --seccomp-bpf option description
+       after -h.
+       * NEWS: Mention this change.
+
+2020-02-04  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       strace.1: use .UR macro for the link to the mailing list.
+       * strace.1.in (.SH REPORTING BUGS): Use .UR for the mailing list link.
+
+       strace.1: s/PERSONALITY/PERSONALITIES/
+       * strace.1.in (.SH "MULTIPLE PERSONALITY SUPPORT"): Change to...
+       (.SH "MULTIPLE PERSONALITIES SUPPORT"): ...this.
+
+2020-02-04  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       strace.1: remove commas between option variants.
+       Comma is not historically used in strace.1 to separate option aliases.
+
+       * strace.1.in (.SS Miscellaneous): Remove comma after -d, -h, and -V
+       declarations.
+
+2020-02-04  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       strace.1: re-factor -e trace description.
+       Moreover, -e features description was incorrect ("?" option
+       is applicable only to -e trace)
+
+       * strace.1.in: Re-factor -e trace description.
+       * NEWS: Mention this change.
+
+2020-02-04  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       printrusage: use PRINT_FIELD_U instead of PRINT_RUSAGE_MEMBER.
+       As the former is standard.
+
+       * printrusage.c (printrusage, printrusage32): Use PRINT_FIELD_U instead
+       of PRINT_RUSAGE_MEMBER.
+       (printrusage, printrusage32) <PRINT_RUSAGE_MEMBER>: Remove.
+
+2020-02-04  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       filter_qualify.c: make statuses definition a bit more explicit.
+       Avoid imlicit relying on the same ordering of statuses in the enum
+       and in the string array.
+
+       * filter_qualify.c (statuses): Add index designators to initialisers.
+
+2020-02-03  Dmitry V. Levin  <ldv@altlinux.org>
+
+       strace: add --debug alias for -d.
+       * strace.1.in (.SH OPTIONS): Document --debug option.
+       * strace.c (usage): Likewise.
+       (longopts): Add "debug" as an alias to "d".
+       * tests/options-syntax.test: Check -d and --debug options.
+
+2020-02-03  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       io_uring: add support of wq_fd field decoding to io_uring_setup.
+       Introduced by Linux commit v5.5-rc7-74-g24369c2e3bb0.
+
+       * configure.ac (AC_CHECK_HEADERS([linux/io_uring.h])): Add
+       struct io_uring_params.wq_fd field check.
+       * io_uring.c (io_uring_setup): Print wq_fd field.
+       * tests/io_uring_setup.c: Update expected output.
+       * types/io_uring.h (struct_io_uring_params): Add wq_fd field.
+       * xlat/uring_setup_flags.in (IORING_SETUP_ATTACH_WQ): New constant.
+
+2020-02-02  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       xlat: add IORING_SETUP_CLAMP to uring_setup_flags.
+       * xlat/uring_setup_flags.in (IORING_SETUP_CLAMP): New constant,
+       introduced by Linux commit v5.5-rc7-43-g8110c1a6212e.
+       * tests/io_uring_setup.c: Update expected output.
+
+       xlat: update uring_setup_features constants.
+       * xlat/uring_setup_features.in (IORING_FEAT_RW_CUR_POS): New constant,
+       introduced by Linux commit v5.5-rc7-35-gba04291eb66e.
+       (IORING_FEAT_CUR_PERSONALITY): New constant, introduced by Linux commit
+       v5.5-rc7-72-gcccf0ee83455.
+
+2020-01-29  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       Update NEWS.
+
+2020-01-29  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       xlat: provide values to ptrace_cmds.
+       Use the output of maint/gen_xlat_defs.sh and perform some re-ordering.
+
+       * xlat/ptrace_cmds.in: Provide values to constants.
+       (PTRACE_GETREGS, PTRACE_SETREGS, PTRACE_GETFPREGS, PTRACE_SETFPREGS,
+       PTRACE_GETFPXREGS, PTRACE_SETFPXREGS, PTRACE_GETHBPREGS,
+       PTRACE_SETHBPREGS, PTRACE_GETREGS64, PTRACE_SETREGS64, PTRACE_SYSEMU,
+       PTRACE_SYSEMU_SINGLESTEP): Move to arch-specific section.
+       (PTRACE_SET_SYSCALL): Move to arm section.
+       (PTRACE_GETVRREGS, PTRACE_SETVRREGS): Move to powerpc section.
+       (PPC_PTRACE_POKEUSR_3264, PPC_PTRACE_PEEKUSR_3264,
+       PPC_PTRACE_POKEDATA_3264, PPC_PTRACE_POKETEXT_3264,
+       PPC_PTRACE_PEEKDATA_3264, PPC_PTRACE_PEEKTEXT_3264): Add constants.
+
+       References: https://bugzilla.redhat.com/show_bug.cgi?id=1758201
+
+2020-01-28  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       maint: gen_xlat_defs.sh updates.
+       Allow whitespace between "#" and "define" and allow passing glob
+       expressions to the -a option.
+
+       * maint/gen_xlat_defs.sh: Add "[[:space:]]*" between "#" and "define"
+       in regular expressions; match "[^:]*" instead of "$ARCH_DEFS_FILE".
+
+2020-01-28  Dmitry V. Levin  <ldv@altlinux.org>
+
+       .mailmap: add more entries to avoid duplication in CREDITS.
+
+2020-01-27  Gleb Fotengauer-Malinovskiy  <glebfm@altlinux.org>
+
+       Update ioctl entries from linux v5.5.
+       * linux/32/ioctls_inc_align16.h: Update from linux v5.5
+       using ioctls_gen.sh.
+       * linux/32/ioctls_inc_align32.h: Likewise.
+       * linux/32/ioctls_inc_align64.h: Likewise.
+       * linux/64/ioctls_inc.h: Likewise.
+       * linux/x32/ioctls_inc0.h: Likewise.
+       * linux/powerpc/ioctls_arch0.h: Likewise.
+       * NEWS: Mention this.
+
+       maint: update for linux v5.5.
+       * maint/ioctls_sym.sh: Define UL and ULL macros for every processed
+       file.  Add a workaround for linux/platform_data/cros_ec_chardev.h file.
+
+2020-01-27  Eugene Syromyatnikov  <evgsyr@gmail.com>
+           Dmitry V. Levin  <ldv@altlinux.org>
+
+       keyctl: implement KEYCTL_CAPABILITIES operation decoding.
+       Introduced by Linux kernel commit v5.3-rc1~189^2.
+
+       * xlat/keyctl_caps0.in: New file.
+       * xlat/keyctl_caps1.in: Likewise.
+       * keyctl.c: Include "xlat/keyctl_caps0.h" and "xlat/keyctl_caps1.h".
+       (print_keyctl_caps, keyctl_capabilities): New functions.
+       (SYS_FUNC(keyctl)) <case KEYCTL_CAPABILITIES>: Call keyctl_capabilities.
+       * tests/keyctl.c: Add checks.
+
+2020-01-27  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       keyctl: implement KEYCTL_MOVE operation decoding.
+       Introduced by Linux kernel commit v5.3-rc1~189^2.
+
+       * xlat/keyctl_move_flags.in: New file.
+       * keyctl.c: Include "xlat/keyctl_move_flags.h".
+       (keyctl_move): New function.
+       (SYS_FUNC(keyctl)) <case KEYCTL_MOVE>: Call it.
+       * tests/keyctl.c: Add checks.
+
+2020-01-27  Eugene Syromyatnikov  <evgsyr@gmail.com>
+           Dmitry V. Levin  <ldv@altlinux.org>
+
+       keyctl: implement KEYCTL_PKEY_* operations decoding.
+       Introduced by Linux kernel commit v5.0-rc1~453^2~20.
+
+       * configure.ac (AC_CHECK_TYPES): Check for struct keyctl_pkey_params
+       and struct keyctl_pkey_query.
+       * keyctl.c: Include "xlat/keyctl_pkey_ops.h".
+       (struct keyctl_pkey_query, struct keyctl_pkey_params): New type
+       definitions.
+       (print_pkey_query, keyctl_pkey_query, fetch_print_pkey_params,
+       keyctl_pkey_op): New functions.
+       (SYS_FUNC(keyctl)) <case KEYCTL_PKEY_QUERY>: Call keyctl_pkey_query.
+       (case KEYCTL_PKEY_ENCRYPT, case KEYCTL_PKEY_DECRYPT, case
+       KEYCTL_PKEY_SIGN, case KEYCTL_PKEY_VERIFY): Call keyctl_pkey_op.
+       * xlat/keyctl_pkey_ops.in: New file.
+       * tests/keyctl.c: Add checks.
+
+2020-01-27  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       keyctl: do not open-code struct keyctl_kdf_params.__spare printing.
+       * keyctl.c (keyctl_dh_compute): Replace open-coded printing of
+       struct keyctl_kdf_params.__spare with a pair of IS_ARRAY_ZERO and
+       PRINT_FIELD_ARRAY calls.
+
+2020-01-27  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       keyctl: consolidate xlat headers in the beginning of the file.
+       This gives a better overview of the xlat usage.
+
+       * keyctl.c: Move "xlat/key_perms.h", "xlat/key_reqkeys.h", and
+       "xlat/keyctl_commands.h" includes to the beginning of the file.
+
+2020-01-27  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       rtnl_tc: add support for TCA_STATS_PKT64 attribute decoding.
+       Introduced by Linux kernel commit v5.5-rc1~174^2~219^2.
+
+       * configure.ac (AC_CHECK_DECLS): Check for TCA_STATS_PKT64.
+       * rtnl_tc.c (tca_stats_nla_decoders) <[TCA_STATS_PKT64]>: New array
+       item, call decode_nla_u64.
+       * xlat/rtnl_tca_stats_attrs.in (TCA_STATS_PKT64): New constant.
+       * tests/nlattr_tc_stats.c: Add TCA_STATS_PKT64 attribute decoding check.
+
+2020-01-27  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       rtnl_tc_action: add support for TCA_ACT_FLAGS attribute decoding.
+       Introduced by Linux kernel commit v5.5-rc1~174^2~265^2~2.
+
+       * xlat/rtnl_tca_act_flags.in: New file.
+       * xlat/rtnl_tc_action_attrs.in (TCA_ACT_FLAGS): New constant.
+       * configure.ac (AC_CHECK_DECLS): Check for TCA_ACT_PAD, TCA_ACT_COOKIE,
+       and TCA_ACT_FLAGS.
+       * rtnl_tc_action.c: Include <linux/pkt_cls.h> and
+       "xlat/rtnl_tca_act_flags.h".
+       (decode_tca_act_flags): New function.
+       (tcamsg_nla_decoders) <[TCA_ACT_FLAGS]>: New array element, use
+       decode_tca_act_flags as a decoder.
+       * tests/nlattr_tcamsg.c: Add checks.
+
+2020-01-27  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       io_uring: add support for IORING_REGISTER_FILES_UPDATE.
+       Introduced by Linux kernel commits v5.5-rc1~204^2~61 and v5.5~1^2~2.
+
+       * io_uring.c (print_io_uring_files_update): New function.
+       (SYS_FUNC(io_uring_register)) <case IORING_REGISTER_FILES_UPDATE>: Call
+       it.
+       * types/io_uring.h (struct_io_uring_files_update): New type definition.
+       * xlat/uring_register_opcodes.in (IORING_REGISTER_FILES_UPDATE): New
+       constant.
+       * tests/io_uring_register.c (main): Update invalid op check.
+       [HAVE_STRUCT_IO_URING_FILES_UPDATE]: Add checks.
+
+2020-01-21  Dmitry V. Levin  <ldv@altlinux.org>
+
+       io_uring: check struct io_* types automatically.
+       Move definitions of struct_io_sqring_offsets, struct_io_cqring_offsets,
+       and struct_io_uring_params to a separate types/ header file.
+
+       * configure.ac (AC_CHECK_TYPES): Remove struct io_sqring_offsets,
+       struct io_cqring_offsets, and struct io_uring_params.
+       (AC_CHECK_MEMBERS): Remove struct io_cqring_offsets.resv.
+       * io_uring.c: Include "types/io_uring.h" instead of <linux/io_uring.h>.
+       [HAVE_STRUCT_IO_CQRING_OFFSETS]: Remove static_assert checks of
+       sizeof(struct io_sqring_offsets).
+       (struct_io_sqring_offsets, struct_io_cqring_offsets,
+       struct_io_uring_params): Move to ...
+       * types/io_uring.h: ... new file.
+
+2020-01-21  Dmitry V. Levin  <ldv@altlinux.org>
+
+       evdev: check struct input_* types automatically.
+       Move definitions of struct_input_absinfo, struct_input_keymap_entry,
+       and struct_input_mask to a separate types/ header file.
+
+       * configure.ac (AC_CHECK_TYPES): Remove struct input_keymap_entry and
+       struct input_mask.
+       (AC_CHECK_MEMBERS): Remove struct input_absinfo.resolution.
+       * evdev.c: Include "types/evdev.h" instead of <linux/input.h>.
+       Remove static_assert checks.
+       (struct_input_absinfo, struct_input_keymap_entry, struct_input_mask):
+       Move to ...
+       * types/evdev.h: ... new file.
+
+2020-01-21  Dmitry V. Levin  <ldv@altlinux.org>
+
+       rtnl_route: check struct rta_mfc_stats and struct rtvia automatically.
+       Move definitions of struct_rta_mfc_stats and struct_rtvia to a separate
+       types/ header file.
+
+       * configure.ac (AC_CHECK_TYPES): Remove struct rta_mfc_stats and
+       struct rtvia.
+       * rtnl_route.c: Include "types/rtnl_route.h" instead of "netlink.h" and
+       <linux/rtnetlink.h>.
+       [HAVE_STRUCT_RTA_MFC_STATS, HAVE_STRUCT_RTVIA]: Remove static_assert checks.
+       (struct_rta_mfc_stats, struct_rtvia): Move to ...
+       * types/rtnl_route.h: ... new file.
+
+2020-01-21  Dmitry V. Levin  <ldv@altlinux.org>
+
+       rtnl_mdb: check struct br_mdb_entry and struct br_port_msg automatically
+       Move definitions of struct_br_mdb_entry and struct_br_port_msg
+       to a separate types/ header file.
+
+       * configure.ac (AC_CHECK_TYPES): Remove struct br_mdb_entry and
+       struct br_port_msg.
+       * rtnl_mdb.c: Include "types/rtnl_mdb.h" instead of <netinet/in.h> and
+       <linux/if_bridge.h>.
+       [HAVE_STRUCT_BR_PORT_MSG, HAVE_STRUCT_BR_NDB_ENTRY]: Remove static_assert checks.
+       (struct_br_mdb_entry, struct_br_port_msg): Move to ...
+       * types/rtnl_mdb.h: ... new file.
+       * tests/nlattr_mdba_router_port.c: Include <netinet/in.h> before
+       <linux/if_bridge.h> to obtain a definition of struct in6_addr needed
+       for struct br_mdb_entry.
+
+2020-01-21  Dmitry V. Levin  <ldv@altlinux.org>
+
+       rtnl_neightbl: check all struct ndt_* types automatically.
+       Move definitions of struct_ndt_* types to a separate types/ header file.
+
+       * configure.ac (AC_CHECK_TYPES): Remove struct ndt_config and
+       struct ndt_stats.
+       (AC_CHECK_MEMBERS): Remove struct ndt_stats.ndts_table_fulls.
+       * rtnl_neightbl.c: Include "types/rtnl_neightbl.h".
+       [HAVE_LINUX_NEIGHBOUR_H]: Remove.
+       [HAVE_STRUCT_NDT_CONFIG, HAVE_STRUCT_NDT_STATS]: Remove static_assert
+       checks.
+       (struct_ndt_config, struct_ndt_stats): Move to ...
+       * types/rtnl_neightbl.h: ... new file.
+
+2020-01-21  Dmitry V. Levin  <ldv@altlinux.org>
+
+       rtnl_link: check all struct rtnl_link_stats* and struct ifla_port_vsi types automatically
+       Move definitions of struct_rtnl_link_stats* and struct_ifla_port_vsi
+       types to a separate types/ header file.
+
+       * configure.ac (AC_CHECK_TYPES): Remove struct ifla_bridge_id,
+       struct ifla_port_vsi and struct rtnl_link_stats64.
+       (AC_CHECK_MEMBERS): Remove struct rtnl_link_stats.rx_nohandler and
+       struct rtnl_link_stats64.rx_nohandler.
+       * rtnl_link.c: Include "types/rtnl_link.h".
+       [HAVE_LINUX_IF_LINK_H]: Remove.
+       [HAVE_STRUCT_RTNL_LINK_STATS_RX_NOHANDLER,
+       HAVE_STRUCT_RTNL_LINK_STATS64_RX_NOHANDLER, HAVE_STRUCT_IFLA_PORT_VSI]:
+       Remove static_assert checks.
+       (struct_rtnl_link_stats, struct_rtnl_link_stats64,
+       struct_ifla_port_vsi): Move to ...
+       * types/rtnl_link.h: ... new file.
+       (struct_ifla_bridge_id): New typedef.
+
+2020-01-21  Dmitry V. Levin  <ldv@altlinux.org>
+
+       netlink_crypto: check all struct crypto_* types automatically.
+       Move definitions of struct_crypto_* types to a separate types/ header
+       file.
+
+       * configure.ac (AC_CHECK_TYPES): Remove struct crypto_*.
+       * netlink_crypto.c: Include "types/cryptouser.h".
+       [HAVE_LINUX_CRYPTOUSER_H, !CRYPTO_MAX_NAME]: Remove.
+       [HAVE_STRUCT_CRYPTO_USER_ALG, HAVE_STRUCT_CRYPTO_REPORT_HASH,
+       HAVE_STRUCT_CRYPTO_REPORT_CIPHER, HAVE_STRUCT_CRYPTO_REPORT_BLKCIPHER,
+       HAVE_STRUCT_CRYPTO_REPORT_AEAD, HAVE_STRUCT_CRYPTO_REPORT_RNG]: Remove
+       static_assert checks.
+       (struct_crypto_user_alg, struct_crypto_report_hash,
+       struct_crypto_report_cipher, struct_crypto_report_blkcipher,
+       struct_crypto_report_aead, struct_crypto_report_rng): Move to ...
+       * types/cryptouser.h: ... new file.
+
+2020-01-21  Dmitry V. Levin  <ldv@altlinux.org>
+
+       types: new infrastructure for automatic checking of structure types.
+       * types/gen.sh: New file.
+       * bootstrap: Invoke it.
+       * types/find_last_type_fields.awk: New file.
+       * configure.ac: Invoke st_CHECK_TYPES.
+       (AM_INIT_AUTOMAKE): Add subdir-objects.
+       * Makefile.am: Include types/Makemodule.am.
+       (ACLOCAL_AMFLAGS): Add -I types.
+       (strace_SOURCES): Add $(TYPES_HEADER_FILES).
+       (strace_SOURCES_check): Add $(TYPES_CHECK_FILES).
+       (EXTRA_DIST): Add types/find_last_type_fields.awk and types/gen.sh.
+
+2020-01-21  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       tests: add strace-k-p test.
+       Add a check of the stack unwinding for attached processes.
+
+       * tests/stack-fcall-attach.c: New file.
+       * tests/strace-k-p.expected: Likewise.
+       * tests/strace-k-p.test: New test.
+       * tests/Makefile.am (EXTRA_DIST): Add strace-k-p.expected and strace-k-p.test.
+       (STACKTRACE_TESTS): Add strace-k-p.test
+       (check_PROGRAMS): Add stack-fcall-attach.
+       (stack_fcall_attach_SOURCES): New variable.
+       * tests/stack-fcall.c: Include "tests.h" and <unistd.h>.
+       [!ATTACH_MODE] (ATTACH_MODE): Define to 0.
+       (main) [ATTACH_MODE]: Wait a bit.
+       * tests/strace-k.test: Add attach mode.
+
+       Complements: v5.4-18-g69b2c33 "unwind-libdw: fix initialization of libdwfl cache"
+
+2020-01-21  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       ci: enable building for x32 and x86 targets with the latest gcc and headers
+
+       xlat: add KEY_PRIVACY_SCREEN_TOGGLE and KEY_KBD_LCD_MENU* to evdev_keycode
+       * xlat/evdev_keycode.in (KEY_PRIVACY_SCREEN_TOGGLE): New constant,
+       introduced by Linux commit v5.5-rc1~6^2^2~3.
+       (KEY_KBD_LCD_MENU1, KEY_KBD_LCD_MENU2, KEY_KBD_LCD_MENU3,
+       KEY_KBD_LCD_MENU4, KEY_KBD_LCD_MENU5): New constants, introduced by
+       Linux commit v5.5-rc1~6.
+
+       xlat: add STATX_ATTR_VERITY to statx_attrs.
+       * xlat/statx_attrs.in (STATX_ATTR_VERITY): New constant, introduced
+       by Linux commit v5.5-rc1~192^2~3.
+
+2020-01-21  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       perf: decode PERF_SAMPLE_AUX flag and aux_sample_size field.
+       Introduced by Linux commit v5.5-rc1~152^2~9.
+
+       * configure.ac (AC_CHECK_MEMBERS): Check
+       for struct perf_event_attr.__reserved_2
+       and struct perf_event_attr.aux_sample_size.
+       * perf.c (print_perf_event_attr): Print __reserved_2 field if non-zero;
+       print aux_sample_size field.
+       * perf_event_struct.h (struct perf_event_attr): Add aux_sample_size
+       and __reserved_3 fields.
+       * tests/perf_event_open.c: Add checks for nrw struct sizes, fields,
+       and PERF_SAMPLE_AUX flag.
+       * xlat/perf_attr_size.in (PERF_ATTR_SIZE_VER6): New constant.
+       * xlat/perf_event_sample_format.in (PERF_SAMPLE_AUX): Likewise.
+
+2020-01-21  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       xlat: add PPC_CMM_MAGIC to fsmagic.
+       * xlat/fsmagic.in (PPC_CMM_MAGIC): New constant, introduced by Linux
+       commit v5.5-rc1~110^2~59.
+
+       xlat: update sock_sctp_options constants.
+       * xlat/sock_sctp_options.in (SCTP_PEER_ADDR_THLDS_V2): New constant,
+       introduced by Linux commit v5.5-rc1~174^2~159^2.
+       (SCTP_EXPOSE_POTENTIALLY_FAILED_STATE): New constant, introduced
+       by Linux commit v5.5-rc1~174^2~159^2~2.
+
+       xlat: add TIPC_NODELAY to sock_tipc_options.
+       * xlat/sock_tipc_options.in (TIPC_NODELAY): New constant, introduced
+       by Linux commit v5.5-rc1~174^2~274.
+
+       xlat: add IORING_SETUP_CQSIZE to uring_setup_flags.
+       * xlat/uring_setup_flags.in (IORING_SETUP_CQSIZE): New constant,
+       introduced by Linux commit v5.5-rc1~204^2~60.
+       * tests/io_uring_setup.c (main): Update expected output.
+
+2020-01-21  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       io_uring: implement decoding of struct io_uring_params.features.
+       Introduced by Linux commit v5.4-rc1~28^2~17.
+
+       * xlat/uring_setup_features.in: New file.
+       * io_uring.c: Include "xlat/uring_setup_features.h".
+       (struct_io_uring_params): Add features field, decrease resv field size.
+       [HAVE_STRUCT_IO_URING_PARAMS]: Add checks for the
+       struct io_uring_params.resv field.
+       (SYS_FUNC(io_uring_setup)): Decode struct io_uring_params.features
+       field.
+       * tests/io_uring_setup.c: Update the expected output.
+
+2020-01-21  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       io_uring: add support for IORING_REGISTER_EVENTFD and IORING_UNREGISTER_EVENTFD
+       Introduced by Linux commit v5.2-rc1~148^2~3.
+
+       * xlat/uring_register_opcodes.in (IORING_REGISTER_EVENTFD,
+       IORING_UNREGISTER_EVENTFD): New constants.
+       * io_uring.c (SYS_FUNC(io_uring_register)): Wire up
+       IORING_REGISTER_EVENTFD.
+       * tests/io_uring_register.c (main): Add checks for the new operations.
+
+2020-01-21  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       io_uring: print io_sqring_offsets and io_cqring_offsets reserved fields.
+       * io_uring.c (SYS_FUNC(io_uring_setup)): Print
+       struct io_sqring_offsets.resv1, struct io_sqring_offsets.resv2, and
+       struct io_cqring_offsets.resv if non-zero.
+       * tests/io_uring_setup.c (main): Update expected output.
+
+2020-01-21  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       io_uring: decode io_uring_params.resv with IS_ARRAY_ZERO and PRINT_FIELD_ARRAY
+       That also makes struct io_uring_params.resv printing in line with
+       the rest of array printing formatting.
+
+       * io_uring.c (SYS_FUNC(io_uring_setup)): Replace open-coded resv field
+       non-zeroeness check/printing with IS_ARRAY_ZERO and PRINT_FIELD_ARRAY
+       macro invocations.
+       * tests/io_uring_setup.c (main): Use square brackets instead of curly
+       braces for enclosing struct io_uring_params.resv elements.
+
+2020-01-21  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       Rework interface for printing local arrays.
+       As it should be simpler to get it used.  In order to make the common
+       case as simple as possible, split it into print_local_array_ex with all
+       the arguments and convert print_local_array to a macro wrapper that gets
+       the element count and size from the provided array argument itself,
+       along with dropping all the arguments that are not expected to be
+       commonly used.
+
+       * defs.h (print_local_array_ex): Rename from print_local_array,
+       remove elem_buf argument, add index_xlat and index_dflt arguments.
+       (print_local_array): New macro wrapper from print_local_array_ex.
+       * evdev.c (decode_bitset): Remove unused elem variable, update the
+       print_local_array call.
+       * print_fields.h (PRINT_FIELD_ARRAY): New macro wrapper for printing
+       array fields.
+
+2020-01-21  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       io_uring: de-indent the switch case statements.
+       * io_uring.c (SYS_FUNC(io_uring_register)): Decrease indentation for
+       switch case labels and the related code.
+
+       io_uring: do not depend on kernel header definitions.
+       * configure.ac (AC_CHECK_HEADERS): Remove linux/io_uring.h.
+       (AC_CHECK_HEADERS): Add a separate check for linux/io_uring.h header
+       that additionally performs AC_CHECK_TYPES on struct io_sqring_offsets,
+       struct io_cqring_offsets, and struct io_uring_params, and
+       AC_CHECK_MEMBERS on struct io_cqring_offsets.resv, struct
+       io_uring_params.features, and struct io_uring_params.resv.
+       * io_uring.c [!HAVE_LINUX_IO_URING_H]: Include "print_fields.h".
+       (struct_io_sqring_offsets, struct_io_cqring_offsets,
+       struct_io_uring_params): New struct type definitions.
+       [HAVE_STRUCT_IO_SQRING_OFFSETS]: Check struct_io_sqring_offsets size
+       against struct io_sqring_offsets.
+       [HAVE_STRUCT_IO_CQRING_OFFSETS]: Check struct_io_cqring_offsets size
+       against struct io_cqring_offsets.
+       [HAVE_STRUCT_IO_CQRING_OFFSETS][HAVE_STRUCT_IO_CQRING_OFFSETS_RESV]:
+       Check struct_io_cqring_offsets.resv offset and size against
+       struct io_cqring_offsets.resv.
+       [HAVE_STRUCT_IO_CQRING_OFFSETS][!HAVE_STRUCT_IO_CQRING_OFFSETS_RESV]:
+       Fail unconditionally.
+       [HAVE_STRUCT_IO_URING_PARAMS]: Check struct_io_cqring_offsets size
+       against struct io_cqring_offsets.
+       (SYS_FUNC(io_uring_setup)): Remove HAVE_LINUX_IO_URING_H guard.
+       * tests/io_uring_setup.c: Add a workaround for kernel headers where
+       struct io_uring_params.features is defined.
+
+2020-01-21  Chunmei Xu  <xuchunmei@linux.alibaba.com>
+           Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       tests: properly fix printing errno in modify_ldt test.
+       The fix in commit v5.4-40-g2939bbd is incorrect, as it leads to errno
+       information not being expected by the test:
+
+           modify_ldt(0, NULL, 0) = -1
+           modify_ldt(-629534633, 0xffffffffffffffff, 16045756814261206767) = -1
+           modify_ldt(-629534633, 0x7f354d38a000, 0) = -1
+           ...
+
+       * tests/modify_ldt.c (printrc): Avoid only errno update in case of rc
+       being -1 and not the whole printing routine.
+
+       Complements: v5.4-40-g2939bbd "tests: fix printing errno in modify_ldt test"
+       Resolves: https://github.com/strace/strace/issues/118
+       Resolves: https://github.com/strace/strace/issues/119
+
+2020-01-17  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Make SysV IPC decoders on 32-bit architectures 64-bit time_t compatible.
+       When libc moves to 64-bit time_t on 32-bit architectures, IPC
+       definitions provided by sys/ipc.h, sys/msg.h, sys/sem.h, and sys/shm.h
+       header files become unsuitable for SysV IPC decoders.
+
+       Prepare for this change by using Linux kernel uapi headers instead of
+       libc headers as the preferred source of SysV IPC definitions.
+
+       Fall back to libc headers if Linux kernel uapi headers have known bugs
+       in their SysV IPC definitions.
+
+       * configure.ac (AC_CHECK_SIZEOF): Check for struct msqid64_ds in
+       <linux/msg.h>.
+       * m4/mpers.m4 (st_MPERS): Likewise.
+       * ipc_defs.h: Prioritize HAVE_LINUX_IPC_H over HAVE_SYS_IPC_H.
+       [HAVE_LINUX_IPC_H && !IN_MPERS]: Undefine HAVE_LINUX_IPC_H if
+       ARCH_SIZEOF_STRUCT_MSQID64_DS != SIZEOF_STRUCT_MSQID64_DS.
+       [HAVE_LINUX_IPC_H && MPERS_IS_m32]: Undefine HAVE_LINUX_IPC_H if
+       ARCH_M32_SIZEOF_STRUCT_MSQID64_DS != M32_SIZEOF_STRUCT_MSQID64_DS.
+       [HAVE_LINUX_IPC_H && MPERS_IS_mx32]: Undefine HAVE_LINUX_IPC_H if
+       ARCH_MX32_SIZEOF_STRUCT_MSQID64_DS != MX32_SIZEOF_STRUCT_MSQID64_DS.
+       * linux/sparc/arch_defs_.h (ARCH_SIZEOF_STRUCT_MSQID64_DS): New macro.
+       * linux/sparc64/arch_defs_.h (ARCH_M32_SIZEOF_STRUCT_MSQID64_DS):
+       Likewise.
+       * linux/x32/arch_defs_.h (ARCH_SIZEOF_STRUCT_MSQID64_DS): Likewise.
+       * linux/x86_64/arch_defs_.h (ARCH_MX32_SIZEOF_STRUCT_MSQID64_DS):
+       Likewise.
+
+       Reported-by: Khem Raj <raj.khem@gmail.com>
+       Reported-by: Rich Felker <dalias@aerifal.cx>
+       Resolves: https://github.com/strace/strace/issues/116
+
+2020-01-17  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Consistently choose SysV IPC definitions between libc and uapi providers
+       strace decoders should use SysV IPC definitions provided by either libc
+       or Linux kernel uapi headers, not a random mix of them.
+
+       * configure.ac (AC_CHECK_HEADERS): Remove linux/msg.h, linux/sem.h,
+       linux/shm.h, sys/msg.h, sys/sem.h, and sys/shm.h.
+       * ipc_defs.h (MSG_H_PROVIDER, SEM_H_PROVIDER, SHM_H_PROVIDER,
+       NAME_OF_STRUCT_MSQID_DS, NAME_OF_STRUCT_SHMID_DS,
+       NAME_OF_STRUCT_IPC_PERM_KEY): New macros.
+       * ipc_msg.c: Include MSG_H_PROVIDER instead of <sys/msg.h> or
+       <linux/msg.h>.
+       * ipc_msgctl.c: Likewise.
+       (msqid_ds_t): Redefine to struct NAME_OF_STRUCT_MSQID_DS.
+       (print_msqid_ds): Replace __key with NAME_OF_STRUCT_IPC_PERM_KEY.
+       * ipc_sem.c: Include SEM_H_PROVIDER instead of <sys/sem.h> or
+       <linux/sem.h>.
+       (print_sembuf): Define unconditionally.
+       (tprint_sembuf_array): Use print_sembuf unconditionally.
+       * ipc_shm.c: Include SHM_H_PROVIDER instead of <sys/shm.h> or
+       <linux/shm.h>.
+       * ipc_shmctl.c: Likewise.
+       (shmid_ds_t): Redefine to struct NAME_OF_STRUCT_SHMID_DS.
+       (print_shmid_ds): Replace __key with NAME_OF_STRUCT_IPC_PERM_KEY.
+       * print_msgbuf.c: Include MSG_H_PROVIDER instead of <sys/msg.h>.
+
+2020-01-17  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Consistently use ipc_defs.h.
+       Include "ipc_defs.h" in all decoder files that also include
+       one of system ipc header files.
+
+       * ipc_shm.c: Include "ipc_defs.h".
+       * print_msgbuf.c: Likewise.
+
+2020-01-17  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Consistently use sizeof_field macro.
+       * gen_bpf_attr_check.sh (SoM): Remove.
+       Replace SoM with sizeof_field.
+       * sockaddr.c (SIZEOF_SA_FAMILY): Use sizeof_field macro.
+       * socketutils.c (UNIX_PATH_MAX): Likewise.
+
+2020-01-17  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       macros.h: introduce sizeof_field macro.
+       Handy for field size checks.
+
+       * macros.h (sizeof_field): New macro.
+       (offsetofend): Use it.
+
+2020-01-17  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: consistently use offsetofend macro.
+       * tests/msg_control.c (MIN_SIZE_OF): Remove.
+       (test_scm_rights1, test_scm_rights2): Replace MIN_SIZE_OF with
+       offsetofend.
+
+2020-01-16  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       tests: fix printing errno in modify_ldt test.
+       Before this change, the test expected that the syscall always returns
+       a value of type int, which is not the case when the Linux kernel
+       is built with CONFIG_MODIFY_LDT_SYSCALL disabled.
+
+       * tests/modify_ldt.c (printrc): Do not mangle errno if rc is not in
+       the suitable range.
+
+       Resolves: https://github.com/strace/strace/issues/118
+
+2020-01-15  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Fix build with glibc-2.31 and Linux kernel headers < 5.3.
+       PTRACE_GET_SYSCALL_INFO support was added in strace since version 4.26
+       released in December 2018, in Linux kernel headers since version 5.3
+       released in September 2019, and in glibc since version 2.31 released
+       in February 2020.  strace is expected to support all reasonable
+       combinations of Linux kernel header versions and glibc versions, in
+       particular, in cases when PTRACE_GET_SYSCALL_INFO definitions are not
+       available in system headers or available only in Linux kernel headers
+       or glibc.  Due to the longer release cycle of glibc compared to Linux
+       kernel, it's more likely to have PTRACE_GET_SYSCALL_INFO definitions
+       provided by <linux/ptrace.h> rather than <sys/ptrace.h>.
+
+       This change fixes build in a less likely environment when
+       PTRACE_GET_SYSCALL_INFO definitions are provided by <sys/ptrace.h> only,
+       e.g. with glibc >= 2.31 and Linux kernel headers < 5.3.
+
+       * configure.ac (AC_CHECK_TYPES): Check for struct __ptrace_syscall_info
+       in <sys/ptrace.h>, check for struct ptrace_syscall_info in
+       <linux/ptrace.h>.
+       * ptrace.h (struct ptrace_syscall_info): Define only if
+       !HAVE_STRUCT_PTRACE_SYSCALL_INFO && !HAVE_STRUCT___PTRACE_SYSCALL_INFO.
+       (struct_ptrace_syscall_info): New typedef.
+       * get_personality.h: Replace struct ptrace_syscall_info with
+       struct_ptrace_syscall_info.
+       * linux/aarch64/arch_get_personality.c: Likewise.
+       * linux/powerpc64/arch_get_personality.c: Likewise.
+       * linux/s390x/arch_get_personality.c: Likewise.
+       * linux/sparc64/arch_get_personality.c: Likewise.
+       * linux/tile/arch_get_personality.c: Likewise.
+       * linux/x86_64/arch_get_personality.c: Likewise.
+       * ptrace_syscall_info.c: Likewise.
+       * syscall.c: Likewise.
+       * tests/ptrace_syscall_info.c: Likewise.
+       * NEWS: Mention this fix.
+
+       Reported-by: Vineet Gupta <Vineet.Gupta1@synopsys.com>
+       Fixes: v4.26~51 "Add definitions for PTRACE_GET_SYSCALL_INFO API"
+
+2020-01-14  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Update NEWS.
+
+2020-01-14  Dmitry V. Levin  <ldv@altlinux.org>
+
+       ci: re-enable testing with the latest mainline kernel headers.
+       There should be no issues with v5.5-rc6.
+       This reverts commit 1aa46bd14ec63869aa2c8870bd1c261e0c3a5c65.
+
+       * .gitlab-ci.yml (variables): Remove KBRANCH.
+       * .travis.yml (env:global): Likewise.
+
+2020-01-14  Baruch Siach  <baruch@tkos.co.il>
+
+       filter_seccomp: fix no-MMU build.
+       Move the declaration of filter_generators out of HAVE_FORK ifdef
+       to fix build for no-MMU targets:
+
+       filter_seccomp.c: In function ‘check_seccomp_filter_properties’:
+       filter_seccomp.c:608:42: error: ‘filter_generators’ undeclared (first use in this function); did you mean ‘linear_filter_generator’?
+         for (unsigned int i = 0; i < ARRAY_SIZE(filter_generators); ++i) {
+                                                 ^~~~~~~~~~~~~~~~~
+
+       * filter_seccomp.c (linear_filter_generator,
+       binary_match_filter_generator): Declare unconditionally.
+       (filter_generator_t, filter_generators, filters, bpf_prog): Define
+       unconditionally.
+       * NEWS: Mention this fix.
+
+       Fixes: v5.4~57 "filter_seccomp: list of seccomp filter generation strategies"
+
+2020-01-14  Dmitry V. Levin  <ldv@altlinux.org>
+
+       clone: implement decoding of new fields in struct clone_args.
+       * configure.ac (AC_CHECK_TYPES): Remove struct clone_args.
+       (AC_CHECK_MEMBERS): Check for struct clone_args.set_tid_size
+       in <linux/sched.h>.
+       * clone.c (struct strace_clone_args): Add set_tid and set_tid_size
+       fields.
+       (SYS_FUNC(clone3)): Decode set_tid and set_tid_size fields of struct
+       clone_args introduced by Linux kernel commit v5.5-rc1~180^2~5.
+       * NEWS: Mention this change.
+       * tests/clone3.c: Check HAVE_STRUCT_CLONE_ARGS_SET_TID_SIZE instead of
+       HAVE_STRUCT_CLONE_ARGS.
+       (struct test_clone_args): Add set_tid and set_tid_size fields.
+       (MAX_SET_TID_SIZE): New macro.
+       (print_set_tid): New function.
+       (print_clone3): Use it.
+       (main): Check decoding of set_tid and set_tid_size fields.
+
+2020-01-14  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       clone: add support for clone3-specific CLONE_CLEAR_SIGHAND flag decoding
+       Introduced by Linux commit v5.5-rc1~180^2~8.
+
+       * xlat/clone3_flags.in: New file.
+       * clone.c: Include "xlat/clone3_flags.h".
+       (SYS_FUNC(clone3)): Use both clone_flags and clone3_flags for flag field
+       decoding.
+       * gcc_compat.h [!GNUC_PREREQ(3, 0)] (FAIL_BUILD_ON_ZERO): Stub
+       definition.
+       * tests/clone3.c: Include "xlat/clone3_flags.h".
+       (ERR): New macro.
+       (do_clone3_): Accept possible_errors bitmask instead of should_Fail
+       flag.
+       (main): Add CLONE_CLEAR_SIGHAND-specific checks, update flag-related
+       checks.
+
+2020-01-12  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: prepare clone3 test for upcoming changes.
+       * tests/clone3.c: Include <stdint.h> and "xlat/clone_flags.h"
+       unconditionally.  Do not include <linux/types.h>.
+       (struct clone_args): Rename to struct test_clone_args, define
+       unconditionally.
+       (struct_clone_args): New typedef.
+       (do_clone3_, print_clone3, main): Switch all users of
+       struct test_clone_args to struct_clone_args.
+       (main): Use TAIL_ALLOC_OBJECT_CONST_PTR.  Move printing of "clone3("
+       prefix ...
+       (print_clone3): ... here to fix errno clobbering.
+
+2020-01-08  Dmitry V. Levin  <ldv@altlinux.org>
+
+       travis: add s390x builds.
+       * .travis.yml (matrix): Add s390x builds.
+
+2020-01-08  Dmitry V. Levin  <ldv@altlinux.org>
+
+       s390: workaround Linux kernel bug in syscall_get_nr.
+       Apparently, arch/s390/include/asm/syscall.h:syscall_get_nr() returns 0
+       for out-of-range syscall numbers.
+       This kernel bug is exposed via PTRACE_GET_SYSCALL_INFO interface.
+       Workaround it by falling back to get_regs() for the zero syscall number.
+
+       * linux/s390/check_scno.c: New file.
+       * linux/s390x/check_scno.c: Likewise.
+       * Makefile.am (EXTRA_DIST): Add them.
+       * syscall.c (get_scno): Update comment.
+
+2020-01-08  Dmitry V. Levin  <ldv@altlinux.org>
+
+       ci: support Travis CI's ppc64le builds.
+       * .travis.yml (matrix): Add ppc64le builds.
+       * ci/install-dependencies.sh: Do not attempt to install multilib
+       packages on ppc64le.
+
+2020-01-08  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: skip stack tracing tests when /proc/self/maps is invalid.
+       Apparently, some container orchestration systems are capable of messing
+       up with /proc/self/maps.  For example, one can face with the following
+       garbage in Travis CI:
+
+               $ cat /proc/self/maps
+               ee72dcc0000-ee72dcd0000 r-xp 00000000 00:43 16 /var/snap/lxd/common/lxd/storage-pools/instances/containers/travis-job-strace-strace-634261782/rootfs/bin/cat
+               ee72dcd0000-ee72dce0000 r--p 00000000 00:43 16 /var/snap/lxd/common/lxd/storage-pools/instances/containers/travis-job-strace-strace-634261782/rootfs/bin/cat
+               ee72dce0000-ee72dcf0000 rw-p 00010000 00:43 16 /var/snap/lxd/common/lxd/storage-pools/instances/containers/travis-job-strace-strace-634261782/rootfs/bin/cat
+               ...
+
+       Our stack tracing cannot work properly when /proc/self/maps is damaged
+       this way.
+
+       * tests/strace-k.test: Check that the path to executable recorded
+       in /proc/self/maps is valid and skip the test if it's not the case.
+
+2020-01-08  Dmitry V. Levin  <ldv@altlinux.org>
+
+       filter_seccomp: fix stack trace caching.
+       * filter_seccomp.c (traced_by_seccomp): Trace all syscalls that have
+       MEMORY_MAPPING_CHANGE flag set when stack tracing is enabled.
+       * NEWS: Mention this fix.
+
+       syscall: do not capture stack trace while the tracee executes strace code
+       * syscall.c (syscall_entering_trace) [ENABLE_STACKTRACE]: Do not capture
+       stack trace when TCB_CHECK_EXEC_SYSCALL flag is set.
+
+2020-01-07  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       clone: simplify signal printing in legacy clone handler a bit.
+       printsignal() does the right thing for quite a while (since v4.26~66
+       "Stop using SIG_0") so the signal printing code can be simplified.
+       This change is covered by a check in clone-flags test.
+
+       * clone.c (SYS_FUNC(clone)): Simplify signal printing in absence
+       of flags.
+
+2020-01-07  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       xlat: update KVM_* constants.
+       * xlat/kvm_cap.in (KVM_CAP_PPC_GUEST_DEBUG_SSTEP): New constant
+       introduced by Linux kernel commit v5.5-rc1~47^2~5^2~14.
+       (KVM_CAP_ARM_NISV_TO_USER): New constant introduced by Linux kernel
+       commits v5.5-rc1~47^2~16^2~3 and v5.5-rc1~47^2~16.
+       (KVM_CAP_ARM_INJECT_EXT_DABT): New constant introduced by Linux kernel
+       commits v5.5-rc1~47^2~16^2~2 and v5.5-rc1~47^2~16.
+       * xlat/kvm_exit_reason.in (KVM_EXIT_ARM_NISV): New constant introduced
+       by Linux kernel commit v5.5-rc1~47^2~16^2~3.
+
+       xlat: add V4L2_CID_UNIT_CELL_SIZE to v4l2_control_ids.
+       * xlat/v4l2_control_ids.in (V4L2_CID_UNIT_CELL_SIZE): New constant
+       introduced by Linux kernel commit v5.5-rc1~143^2^2~223.
+
+       xlat: add V4L2_CTRL_TYPE_AREA to v4l2_control_types.
+       * xlat/v4l2_control_types.in (V4L2_CTRL_TYPE_AREA): New constant
+       introduced by Linux kernel commit v5.5-rc1~143^2^2~225.
+       * configure.ac (V4L2_CTRL_TYPE_U8, V4L2_CTRL_TYPE_U16,
+       V4L2_CTRL_TYPE_U32): Add missing definition checks.
+       (V4L2_CTRL_TYPE_AREA): Add corresponding definition check.
+
+       xlat: add KEY_MACRO* definitions to evdev_keycode.
+       * xlat/evdev_keycode.in: Add new constants introduced by Linux kernel
+       commit v5.5-rc1~92^2~1^2~8.
+
+       xlat: add AUDIT_ANOM_CREAT to nl_audit_types.
+       * xlat/nl_audit_types.in (AUDIT_ANOM_CREAT): New constant introduced
+       by Linux kernel commit v5.5-rc1~104^2~1.
+
+       prctl: improve arch_prctl decoding.
+       * prctl.c (arch_prctl): ARCH_GET_GS and ARCH_GET_FS return 64-bit value
+       even on x32; ARCH_GET_CPUID ignores the second argument.
+
+2020-01-07  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       NEWS: mention Fedora bug number for the libdwfl cache issue.
+       Also, mention the reporter in the git commit message.
+
+       * NEWS: Mention Fedora bug number for the libdwfl cache issue.
+
+       Reported-by: Pavel Zhukov <pzhukov@redhat.com>
+       Complements: v5.4-18-g69b2c33 "unwind-libdw: fix initialization of libdwfl cache"
+
+2020-01-07  Dmitry V. Levin  <ldv@altlinux.org>
+
+       unwind-libdw: fix initialization of libdwfl cache.
+       This fixes stack trace printing for early syscalls that precede
+       the first syscall from memory mapping or execve families.
+
+       * unwind-libdw.c (tcb_init): Set struct ctx.last_proc_updating
+       to a value different from mapping_generation so that libdwfl cache
+       is properly initialized before the first use.
+       * NEWS: Mention this fix.
+
+       Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1788636
+
+2020-01-06  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: Do not dereference SCM_TIMESTAMP* control messages in-place.
+       * tests/sockopt-timestamp.c (print_timestamp_old,
+       print_timestampns_old): Do not dereference SCM_TIMESTAMP* control
+       messages in-place to avoid potential alignment issues in the future.
+       * tests/msg_control.c (test_scm_timestamp_old, test_scm_timestampns_old,
+       test_scm_timestamping_old, test_scm_timestamp_new,
+       test_scm_timestampns_new, test_scm_timestamping_new): Likewise.
+       (main): Use "tail_alloc(1024) + 1024" instead of "tail_alloc(1) + 1"
+       for obtaining a tail_alloc'ed page to avoid false -Warray-bounds
+       warnings from some versions of gcc.
+
+       print_timespec.h: cleanup PRINT_TIMESPEC_ARRAY_DATA_SIZE.
+       * print_timespec.h (PRINT_TIMESPEC_ARRAY_DATA_SIZE): Use loop initial
+       declaration.  Do not treat potentially unaligned pointers as pointers
+       to TIMESPEC_T.
+
+2020-01-06  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Fix potentially unaligned access in SO_TIMESTAMP*_NEW decoder and tests.
+       * print_timespec.h [PRINT_TIMESPEC_DATA_SIZE ||
+       PRINT_TIMESPEC_ARRAY_DATA_SIZE] (print_unaligned_timespec_t): New
+       function.
+       (PRINT_TIMESPEC_DATA_SIZE, PRINT_TIMESPEC_ARRAY_DATA_SIZE): Use it
+       instead of print_timespec_t.
+       * tests/sockopt-timestamp.c: Include <string.h>.
+       (print_timestamp_new, print_timestampns_new): Fix potentially unaligned
+       access of CMSG_DATA.
+       * NEWS: Mention this fix.
+
+       Fixes: v5.1~21 "Implement decoding of SO_TIMESTAMP*_NEW control messages"
+
+2020-01-05  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: check %creds.
+       * tests/trace_creds.in: New file.
+       * tests/Makefile.am (EXTRA_DIST): Add trace_creds.in.
+       * tests/getuid.test: Extend to handle *-creds tests.
+       * tests/gen_tests.in (getegid-creds, getegid32-creds, geteuid-creds,
+       geteuid32-creds, getgid-creds, getgid32-creds, getuid-creds,
+       getuid32-creds, trace_creds): New entries.
+
+2019-12-29  Andrey Zax  <andrey.zax@gmail.com>
+           Dmitry V. Levin  <ldv@altlinux.org>
+
+       Implement %creds trace class.
+       This patch implements a new trace class (%creds) to trace syscalls
+       related to process credentials.
+
+       syscallent headers are updated using the following command:
+
+       sed -i -r '/[gs]et[^p]*([gu]id|groups)|cap[gs]et|\(prctl/ {
+                       s/(\{ [0-6],\t)([A-Z]+\|[A-Z|]+,)\t/\1TC|\2/;
+                       s/(\{ [0-6],\t)([A-Z]+,)/\1TC|\2/;
+                       s/(\{ [0-6],\t)0/\1TC/
+               }' linux/*/syscallent*.h
+
+       * basic_filters.c (lookup_class): Add %creds member to syscall_class[].
+       * sysent.h (TRACE_CREDS): New macro.
+       * sysent_shorthand_defs.h (TC): Likewise.
+       * strace.1.in (.SS Filtering): Add a description for `-e trace=%creds`.
+       * linux/32/syscallent.h: Add TC flag to credentials syscalls.
+       * linux/64/syscallent.h: Likewise.
+       * linux/alpha/syscallent.h: Likewise.
+       * linux/arm/syscallent.h: Likewise.
+       * linux/avr32/syscallent.h: Likewise.
+       * linux/bfin/syscallent.h: Likewise.
+       * linux/hppa/syscallent.h: Likewise.
+       * linux/i386/syscallent.h: Likewise.
+       * linux/ia64/syscallent.h: Likewise.
+       * linux/m68k/syscallent.h: Likewise.
+       * linux/microblaze/syscallent.h: Likewise.
+       * linux/mips/syscallent-compat.h: Likewise.
+       * linux/mips/syscallent-n32.h: Likewise.
+       * linux/mips/syscallent-n64.h: Likewise.
+       * linux/mips/syscallent-o32.h: Likewise.
+       * linux/powerpc/syscallent.h: Likewise.
+       * linux/powerpc64/syscallent.h: Likewise.
+       * linux/s390/syscallent.h: Likewise.
+       * linux/s390x/syscallent.h: Likewise.
+       * linux/sh/syscallent.h: Likewise.
+       * linux/sh64/syscallent.h: Likewise.
+       * linux/sparc/syscallent.h: Likewise.
+       * linux/sparc64/syscallent.h: Likewise.
+       * linux/x32/syscallent.h: Likewise.
+       * linux/x86_64/syscallent.h: Likewise.
+       * linux/xtensa/syscallent.h: Likewise.
+       * NEWS: Mention this change.
+
+2019-12-29  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: increase the child stack size in some tests that invoke clone.
+       Increase the child stack size from the half page size to the full page
+       size in those few tests that invoke clone syscall.
+
+       The former size appears to be insufficient in some build setups.
+       For example, clang 7 on Ubuntu bionic x86_64 makes ioctl_nsfs test fail
+       due to child process segfaults.
+
+       * tests/clone_parent.c (child_stack_size, clone): Remove.
+       (do_clone): New macro.
+       (main): Use it.
+       * tests/clone_ptrace.c: Likewise.
+       * tests/ioctl_nsfs.c (child_stack_size, clone): Remove.
+       (do_clone): New macro.
+       (test_user_namespace): Use it.
+
+2019-12-15  Vladimir D. Seleznev  <vseleznv@altlinux.org>
+
+       Fix typos in comments.
+       * io.c (tprint_iov_upto): Fix typo in the function header comment.
+       * tests/tests.h (f8ill_ptr_to_kulong): Likewise.
+       * printsiginfo.c (print_si_info): Fix typo in the comment.
+       * stage_output.c (strace_open_memstream): Likewise.
+       * tests/prctl-seccomp-strict.c (main): Likewise.
+       * tests/seccomp-strict.c (main): Likewise.
+       * largefile_wrappers.h: Fix typos in the file header comment.
+       * tests/zeroargc.c: Fix typo in the file header comment.
+
+2019-12-11  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: insert a delay into bpf-obj_get_info_by_fd tests.
+       According to Quentin Monnet [1], there is a delay when the locked memory
+       is being reclaimed after a BPF program or map is removed.
+
+       Privileged tools like iproute2 and bpftool workaround this Linux kernel
+       limitation by raising RLIMIT_MEMLOCK to infinity prior to creating BPF
+       objects.
+
+       Our BPF tests are expected to be invoked without extra privileges
+       and therefore do not have this option.
+
+       Instead, we serialize all BPF tests invocations and insert a delay
+       long enough to let the locked memory be reclaimed.
+
+       [1] https://lists.strace.io/pipermail/strace-devel/2019-December/009274.html
+
+       * tests/bpf-obj_get_info_by_fd.c (main): Add a comment and a sleep
+       invocation.
+       * tests/pure_executables.list: Remove bpf-obj_get_info_by_fd,
+       bpf-obj_get_info_by_fd-prog, bpf-obj_get_info_by_fd-prog-v,
+       and bpf-obj_get_info_by_fd-v because they call sleep function
+       that may be implemented on top of clock_nanosleep* syscalls.
+
+       Thanks-to: Quentin Monnet <quentin.monnet@netronome.com>
+       References: https://github.com/strace/strace/issues/74
+
+2019-12-10  Paul Chaignon  <paul.chaignon@gmail.com>
+
+       bpf: support new fields for BPF_PROG_LOAD.
+       * bpf_attr.h (BPF_PROG_LOAD_struct): New fields introduced in Linux
+       commits v5.5-rc1~174^2~310^2~19^2~7 and v5.5-rc1~174^2~49^2~12^2~3.
+       * bpf.c (BEGIN_BPF_CMD_DECODER(BPF_PROG_LOAD)): Decode the new fields.
+       * NEWS: Mention this.
+       * tests/bpf.c (BPF_PROG_LOAD_checks): Update expected outputs.
+       * tests/bpf-obj_get_info_by_fd.c (print_prog_load): Likewise.
+       * tests/kernel_version.c (print_bpf_attr): Likewise.
+
+       bpf: update BPF constants.
+       * xlat/bpf_attach_type.in (BPF_TRACE_RAW_TP): New constant introduced in
+       Linux commit v5.5-rc1~174^2~249^2~4^2~1.
+       (BPF_TRACE_FENTRY, BPF_TRACE_FEXIT): New constants introduced in Linux
+       commit v5.5-rc1~174^2~49^2~12^2~16.
+       * xlat/bpf_map_flags.in (BPF_F_MMAPABLE): New constant introduced in Linux
+       commit v5.5-rc1~174^2~49^2~11^2~2.
+       * xlat/bpf_prog_types.in (BPF_PROG_TYPE_TRACING): New constant
+       introduced in Linux commit v5.5-rc1~174^2~249^2~4^2~1.
+       * NEWS: Mention this.
+       * tests/bpf.c (BPF_MAP_CREATE_checks, BPF_PROG_LOAD_checks,
+       BPF_PROG_QUERY_checks): Update expected outputs.
+       * tests/kernel_version.c (print_bpf_attr, main): Likewise.
+
+2019-12-03  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: check decoding of NDA_LLADDR netlink neighbour table attribute.
+       * tests/nlattr_ndmsg.c (main): Check decoding of NDA_LLADDR.
+
+2019-12-03  Jamal Hadi Salim  <jhs@mojatatu.com>
+           Dmitry V. Levin  <ldv@altlinux.org>
+
+       rtnl_neigh: fix NDA_LLADDR netlink neighbour table attribute decoder.
+
+       Before this fix NDA_LLADDR attributes used to be printed
+       as inet addresses, not as mac addresses.
+
+       * rtnl_neigh.c (decode_neigh_lladdr): New function.
+       (ndmsg_nla_decoders): Use it for NDA_LLADDR decoding.
+       * NEWS: Mention this fix.
+
+       Fixes: v4.19~33 "rtnl_neigh: decode ndmsg netlink attributes"
+
+2019-12-03  Dmitry V. Levin  <ldv@altlinux.org>
+
+       mpers.m4: use AC_LANG_PROGRAM instead of AC_LANG_SOURCE.
+       AC_LANG_PROGRAM is a convenient wrapper around AC_LANG_SOURCE.
+
+       * m4/mpers.m4 (st_MPERS): Use AC_LANG_PROGRAM instead of AC_LANG_SOURCE.
+
+2019-12-03  Dmitry V. Levin  <ldv@altlinux.org>
+
+       mpers.m4: modify CPPFLAGS and CFLAGS separately.
+       * m4/mpers.m4 (st_MPERS): Add $IFLAG to CPPFLAGS, add MPERS_CFLAGS
+       to CFLAGS.  This change is not expected to change behaviour.
+
+2019-12-03  Dmitry V. Levin  <ldv@altlinux.org>
+
+       configure.ac: do not copy CFLAGS to CFLAGS_FOR_{M32,MX32}
+       As result, CFLAGS is no longer passed to mpers.sh,
+       reintroducing the traditional behaviour changed by commit v5.4~32.
+
+       The copying behaviour in it's current form was problematic because some
+       of compiler options may break mpers.sh; for example, if CFLAGS includes
+       -flto, then mpers.sh breaks, since intermediate *.o files created by
+       mpers.sh do not contain any real code.
+
+       * configure.ac [$arch != aarch64]: Initialize CFLAGS_FOR_M32 and
+       CFLAGS_FOR_MX32 to empty strings by default.
+       * NEWS: Mention this fix.
+
+       Reported-by: Andreas Schwab <schwab@linux-m68k.org>
+       Reported-by: Thomas Deutschmann <whissi@gentoo.org>
+       Resolves: https://github.com/strace/strace/issues/114
+       Fixes: v5.4~32 "Add support for per-mpers compiler settings"
+
+2019-12-02  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: tweak restart_syscall test to workaround nanosleep changes.
+       nanosleep function in glibc used to be implemented as a simple syscall
+       wrapper around __NR_nanosleep, but starting with glibc commit
+       glibc-2.30.9000-234-g3537ecb49c, it is implemented on top of
+       __clock_nanosleep function which in turn is implemented on top of
+       __clock_nanosleep_time64 function.
+
+       These functions do not forward the last argument written by the kernel
+       when the underlying syscall succeeds, breaking the expected output.
+       Besides that, these proxy functions pass garbage in the upper 32-bits
+       of tv_nsec on 32-bit architectures .
+
+       Rather than changing restart_syscall test to use __NR_nanosleep syscall
+       directly, relax the expected output with regards to the remaining time
+       written by the kernel as this not what is being tested by
+       restart_syscall test.
+
+       * tests/restart_syscall.c: Stop including <assert.h>.
+       (main): Do not use assert.  Change the initial value of rem variable.
+       Use regexps instead of specific values of rem.tv_sec and rem.tv_nsec
+       in the expected output.
+       * NEWS: Mention this change.
+
+2019-12-01  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 5.4-1.
+       * strace.spec.in: Likewise.
+
+2019-11-28  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Prepare for 5.4 release.
+       * NEWS: Update for 5.4 release.
+
+       Update copyright headers.
+       Headers updated automatically using maint/update_copyright_years.sh
+       script.
+
+2019-11-28  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Fix preprocessor indentation.
+       Indent the C preprocessor directives to reflect their nesting
+       using the following script:
+
+       $ cppi -l $(git grep -El '^[[:space:]]*#[[:space:]]*(if|ifdef|ifndef|elif|else|endif|define|pragma)[[:space:]]' |grep -v '\.sh$') |while read f; do
+               cppi < "$f" > "$f".cppi; mv "$f".cppi "$f"
+       done
+
+2019-11-28  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: tweak restart_syscall test to break in a more obvious way in case of faulty libc
+       If libc implements nanosleep on top of clock_nanosleep, there is
+       a chance of struct timespec translation bugs in libc breaking this test.
+       Tweak the test to make this breakage more obvious.
+
+       * tests/restart_syscall.c (main): Initialize rem variable with invalid
+       timespec data.
+
+2019-11-28  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: fix restart_syscall test on systems with emulated nanosleep.
+       When libc emulates nanosleep on top of clock_nanosleep, the address
+       of the structure passed to the kernel is not the same as the address
+       of the structure passed to nanosleep.
+
+       * tests/restart_syscall.c (main): Update expected output.
+
+2019-11-27  Eugene Syromyatnikov  <evgsyr@gmail.com>
+           Dmitry V. Levin  <ldv@altlinux.org>
+
+       Update NEWS.
+
+2019-11-27  Dmitry V. Levin  <ldv@altlinux.org>
+
+       ci: use kernel headers from Linux v5.4.
+       There is too much noise when using unreleased kernel uapi.
+
+       * .gitlab-ci.yml (variables): Add KBRANCH.
+       * .travis.yml (env:global): Likewise.
+
+2019-11-27  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Use an LFS version of fcntl function when available.
+       glibc-2.28 introduced fcntl64 as an LFS version of fcntl function,
+       use this new function when available.
+
+       * configure.ac (AC_CHECK_FUNCS): Add fcntl64.
+       * largefile_wrappers.h (fcntl_fd): New macro.
+       * strace.c (set_cloexec_flag): Use it instead of fcntl.
+
+2019-11-27  Paul Chaignon  <paul.chaignon@gmail.com>
+
+       bpf: update BPF constants.
+       * xlat/bpf_prog_types.in (BPF_PROG_TYPE_CGROUP_SOCK_ADDR): New constant
+       introduced by Linux commit v4.17-rc1~148^2~19^2^2~6.
+       (BPF_PROG_TYPE_LWT_SEG6LOCAL, BPF_PROG_TYPE_LIRC_MODE2,
+       BPF_PROG_TYPE_LIRC_MODE2, BPF_PROG_TYPE_FLOW_DISSECTOR,
+       BPF_PROG_TYPE_CGROUP_SYSCTL, BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE,
+       BPF_PROG_TYPE_CGROUP_SOCKOPT): Update constant values following missing
+       entry in enum.
+       * tests/bpf.c (BPF_PROG_LOAD_checks): Update expected outputs and add test.
+       * tests/kernel_version.c (print_bpf_attr, main): Likewise.
+
+       Fixes: v4.24~49 "xlat: update bpf(2)-related constants"
+       Fixes: v4.25~58 "xlat: add BPF_PROG_TYPE_SK_REUSEPORT to bpf_prog_types.in"
+       Fixes: v4.26~12 "xlat: add flow dissector bpf program type constants"
+       Fixes: v5.2~38 "xlat: update BPF_* constants"
+       Fixes: v5.3~60 "xlat: update BPF_* constants"
+
+2019-11-27  Paul Chaignon  <paul.chaignon@gmail.com>
+
+       bpf: support new field in BPF_MAP_LOOKUP_ELEM.
+       * bpf_attr.h (BPF_MAP_LOOKUP_ELEM_struct): New field introduced by Linux
+       commit v5.1-rc1~178^2~375^2~4^2~3.
+       * xlat/bpf_map_lookup_elem_flags.in: New file.
+       * bpf.c: Include "xlat/bpf_map_lookup_elem_flags.h".
+       (BEGIN_BPF_CMD_DECODER(BPF_MAP_LOOKUP_ELEM)): Decode the new field.
+       * tests/bpf.c (BPF_MAP_LOOKUP_ELEM_checks): Update expected outputs.
+
+2019-11-19  Dmitry V. Levin  <ldv@altlinux.org>
+
+       xlat: provide fallback definitions for IPC_* and SHM_* constants.
+       * xlat/shm_flags.in: Provide fallback definitions for constants.
+       * xlat/shm_resource_flags.in: Likewise.
+
+       xlat: update MSG_* constants.
+       * xlat/ipc_msg_flags.in: Provide fallback definitions for constants.
+       (MSG_COPY): New constant introduced by Linux kernel commit
+       v3.8-rc3~16^2~30.
+       * NEWS: Mention this.
+
+2019-11-19  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: change status-unfinished-threads test to use __NR_nanosleep.
+       Starting with glibc commit glibc-2.30.9000-234-g3537ecb49c,
+       nanosleep function in glibc is implemented on top of clock_nanosleep,
+       which makes it unsuitable for this test that is based on nanosleep
+       syscall.
+
+       * tests/status-unfinished-threads.c: Skip the test if __NR_nanosleep
+       is not defined, include "kernel_old_timespec.h".
+       (thread, main): Change the type of ts variable to kernel_old_timespec_t,
+       invoke nanosleep syscall using __NR_nanosleep.
+
+2019-11-19  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: change threads-execve test to use __NR_nanosleep.
+       Starting with glibc commit glibc-2.30.9000-234-g3537ecb49c,
+       nanosleep function in glibc is implemented on top of clock_nanosleep,
+       which makes it unsuitable for this test that uses both nanosleep
+       and clock_nanosleep syscalls for different purposes.
+
+       * tests/threads-execve.c: Skip the test if __NR_nanosleep is not defined.
+       Include "kernel_old_timespec.h".
+       (thread, main): Invoke nanosleep syscall using __NR_nanosleep.
+
+2019-11-19  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: robustify umoven-illptr test against undefined __NR_nanosleep.
+       * tests/umoven-illptr.c: Skip the test if __NR_nanosleep is not defined.
+       Include "kernel_old_timespec.h" instead of <time.h>, use
+       kernel_old_timespec_t instead of struct timespec.
+
+2019-11-19  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: change sleep helper to use __NR_nanosleep.
+       Starting with glibc commit glibc-2.30.9000-234-g3537ecb49c,
+       nanosleep function in glibc is implemented on top of clock_nanosleep,
+       which makes it unsuitable for the sleep helper that is expected to
+       invoke nanosleep syscall.
+
+       * tests/sleep.c: Skip the test if __NR_nanosleep is not defined.
+       Include "kernel_old_timespec.h" instead of <time.h>.
+       (main): Change the type of ts variable to kernel_old_timespec_t,
+       invoke nanosleep syscall using __NR_nanosleep.
+
+2019-11-19  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: consistently check before use that sleep executable works.
+       Add the required check to those few tests that miss it.
+
+       * tests/status-detached.test: Invoke "run_prog ../sleep 0".
+       * tests/strace-DD.test: Likewise.
+       * tests/strace-ff.test: Likewise.
+
+2019-11-19  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: change restart_syscall test not to assume nanosleep syscall.
+       Starting with glibc commit glibc-2.30.9000-234-g3537ecb49c,
+       nanosleep function in glibc is implemented on top of clock_nanosleep,
+       which makes any code relying on the old behaviour fragile.
+
+       Resolve this issue by allowing other syscalls from the nanosleep family.
+
+       * tests/restart_syscall.c (NANOSLEEP_NAME_RE, NANOSLEEP_CALL_RE): New
+       macros.
+       (main): Use them to extend regular expressions to allow clock_nanosleep
+       and clock_nanosleep_time64 syscalls.
+       * tests/restart_syscall.test: Replace nanosleep with /nanosleep in the
+       list of matched syscalls.
+
+2019-11-19  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: change nanosleep test to use __NR_nanosleep.
+       Starting with glibc commit glibc-2.30.9000-234-g3537ecb49c,
+       nanosleep function in glibc is implemented on top of clock_nanosleep,
+       which makes it unsuitable for the test of nanosleep decoder.
+
+       * tests/nanosleep.c: Skip the test if __NR_nanosleep is not defined.
+       Include "kernel_old_timespec.h" instead of <time.h>.
+       (k_nanosleep): New function.
+       (main): Change the type of ts variable to kernel_old_timespec_t,
+       use k_nanosleep to invoke nanosleep syscall using __NR_nanosleep.
+
+2019-11-19  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: introduce kernel_old_timespec.h.
+       This header file defines kernel_old_timespec_t type that is going to be
+       used to define objects passed to such system calls as nanosleep.
+
+       * tests/kernel_old_timespec.h: New file.
+       * tests/Makefile.am (EXTRA_DIST): Add kernel_old_timespec.h.
+
+2019-11-19  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: change adjtimex test to use __NR_adjtimex.
+       Starting with glibc commit glibc-2.30.9000-215-gc81aa64e81,
+       adjtimex function in glibc is implemented on top of clock_adjtime,
+       which makes it unsuitable for the test of adjtimex decoder.
+
+       * configure.ac (AC_CHECK_MEMBERS): Remove struct timex.tai.
+       * tests/adjtimex.c: Skip the test if __NR_adjtimex is not defined.
+       Include "kernel_old_timex.h".
+       (k_adjtimex): New function.
+       (main): Change the type of tx pointer to kernel_old_timex_t,
+       use k_adjtimex to invoke adjtimex syscall.
+
+2019-11-19  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: introduce kernel_old_timex.h.
+       This header file defines kernel_old_timex_t type that is going to be
+       used to define objects passed to such system calls as adjtimex.
+
+       * tests/kernel_old_timex.h: New file.
+       * tests/Makefile.am (EXTRA_DIST): Add kernel_old_timex.h.
+
+2019-11-18  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: rewrite semop test.
+       Starting with glibc commit glibc-2.30.9000-169-g765cdd0bff,
+       semop function in glibc is implemented on top of semtimedop,
+       which makes it unsuitable for the test of semop decoder.
+
+       Resolve this issue by creating two tests: one that checks decoding
+       of __NR_semop, and another that checks decoding of __NR_ipc SEMOP.
+
+       * tests/semop-common.c: New file.
+       * tests/Makefile.am (EXTRA_DIST): Add semop-common.c.
+       * tests/semop-indirect.c: New file.
+       * tests/semop.c: Rewrite using __NR_semop.
+       * tests/pure_executables.list: Add semop-indirect.
+       * tests/.gitignore: Likewise.
+       * tests/gen_tests.in (semop): Update.
+       (semop-indirect): New entry.
+
+2019-11-18  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: add a separate semtimedop test.
+       The semop test is going to be changed soon, so create a separate
+       semtimedop test based on the test we have.
+
+       * tests/semtimedop.c: New file.
+       * tests/pure_executables.list: Add semtimedop.
+       * tests/.gitignore: Likewise.
+       * tests/gen_tests.in (semtimedop): New entry.
+
+2019-11-17  Dmitry V. Levin  <ldv@altlinux.org>
+
+       xlat: update PTP_* constants.
+       * xlat/ptp_extts_flags.in (PTP_STRICT_FLAGS): New constant introduced
+       by Linux kernel commit v5.4-rc8~8^2~9^2~5.
+
+2019-11-15  Dmitry V. Levin  <ldv@altlinux.org>
+
+       travis: switch from gcc-8 to gcc-9.
+       * .travis.yml (matrix): Switch all gcc-8 builds except arm64 ones
+       to gcc-9.  gcc-8 arm64 builds have to remain until gcc-9 arm64 builds
+       are fixed, currently they error out because of missing
+       gcc-9-multilib-arm-linux-gnueabihf package.
+
+2019-11-15  Dmitry V. Levin  <ldv@altlinux.org>
+
+       travis: switch some stack trace enabled builds from libunwind to libdw.
+       Switch to Bionic allows to use libdw instead of libunwind.
+
+       * .travis.yml (matrix): Change STACKTRACE from libunwind to libdw
+       in most of Bionic-based builds.
+
+2019-11-15  Dmitry V. Levin  <ldv@altlinux.org>
+
+       travis: switch from Trusty to Bionic.
+       Ideally, all builds have to be switched, but coverage build,
+       unfortunately, errors out by Travis CI with a build timeout,
+       musl-gcc x86 build fails with
+       "undefined reference to `__stack_chk_fail_local'" error, and gcc-8 arm64
+       builds error out because of missing gcc-8-multilib-arm-linux-gnueabihf
+       package.
+
+       * .travis.yml (dist): Change to bionic.
+       (matrix): Add "dist: trusty" to coverage, musl-gcc x86, and gcc-8 arm64
+       builds.
+
+2019-11-15  Dmitry V. Levin  <ldv@altlinux.org>
+
+       ci: enable mpers in aarch64 builds.
+       * ci/install-dependencies.sh (aarch64): Install libc6-dev-armhf-cross
+       and linux-libc-dev-armhf-cross packages.
+       * ci/run-build-and-tests.sh (aarch64): Enable strict mpers check
+       by removing --enable-mpers=check configure option.
+
+2019-11-15  Paul Chaignon  <paul.chaignon@gmail.com>
+
+       ci: support Travis CI's aarch64 builds.
+       Travis CI now supports aarch64 builds, launched with the new "arch: arm64"
+       tag.  These builds are running inside LXD only for the moment.
+
+       The aarch64 builds tend to be a lot slower than their x86_64 counterparts,
+       so several timeout values need to be increased.
+
+       Some tests occasionally take more than 10 minutes, hitting Travis CI's
+       timeout on output inactivity.  Using "travis_wait 40" disables that
+       timeout; it delays the start time for the output inactivity timeout by 40
+       minutes, bringing it to the maximum build timeout of 50 minutes.
+
+       * .travis.yml (matrix): Add aarch64 builds and mark previous builds as
+       amd64.
+       * ci/install-dependencies.sh: Install packages for aarch64 builds.
+       * ci/run-build-and-tests.sh: Check mpers for aarch64.
+
+2019-11-15  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       debian/control: add build dependencies for aarch64 mpers.
+       * debian/control (Build-Depends): Add gcc-arm-linux-gnueabi,
+       libc6-dev-armel-cross, linux-libc-dev-armel-cross as additional
+       dependencies on arm64 in order to build proper mpers support.
+
+2019-11-15  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       configure.ac: use a separate compiler for ARM EABI on AArch64.
+       As gcc on AArch64 doesn't support compat ABI target, we have to find
+       and use a separate compiler in order to get proper compat personality
+       support on AArch64.
+
+       * configure.ac (arch == aarch64): Try to find a compiler for ARM EABI
+       based on known names for it in various distributions.
+
+2019-11-15  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       Add support for per-mpers compiler settings.
+       As some very special architectures require a separate compiler
+       in order to compile binaries for additional supported personalities,
+       we have to introduce such support.
+
+       * Makefile.am (mpers_CPPFLAGS): Move $(strace_CPPFLAGS) ...
+       (mpers_sh_opts): ... here.
+       (mpers-m%.stamp:): Use $(mpers_CC) instead of $(CC) for compiler,
+       pass $(mpers_CC_FLAGS) in quotes as it might be empty or contain spaces.
+       ($(mpers_m32_targets)): Add @CFLAGS_FOR_M32@ to mpers_CC_FLAGS, set
+       mpers_CPPFLAGS and mpers_CC.
+       ($(mpers_mx32_targets)): Add @CFLAGS_FOR_MX32@ to mpers_CC_FLAGS, set
+       mpers_CPPFLAGS and mpers_CC.
+       * bootstrap (m_upper): Derive uppercase personality name.
+       Set CC for mpers Makefile.am, add @CFLAGS_FOR_{M32,MX32}@ to
+       MPERS_CC_FLAGS definition.
+       * configure.ac: Derive default values for
+       {CC,CPP,CFLAGS,CPPFLAGS}_FOR_{M32,MX32} from the respective CC, CPP,
+       CFLAGS, and CPPFLAGS values.
+       * m4/mpers.m4 (AC_DEFUN([st_MPERS])): Use
+       {CC,CPP,CFLAGS,CPPFLAGS}_FOR_<$1> as CC, CPP, CFLAGS, and CPPFLAGS,
+       respectively.  Enclose MPERS_CFLAGS in quotes in mpers.sh call.  Provide
+       information about compiler in the AC_CACHE_CHECK message.
+       * tests/Makefile.am (CC): New variable.
+
+       Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2019-11-15  Dmitry V. Levin  <ldv@altlinux.org>
+
+       ci: enable symbols demangling in stack trace enabled builds.
+       * ci/install-dependencies.sh: Install libiberty-dev when STACKTRACE
+       is specified.
+
+       tests: lower expected performance gain in filter_seccomp-perf.test.
+       * tests/filter_seccomp-perf.test (min_ratio): Change from 8 to 6,
+       the former expectation was too optimistic for such slow architectures
+       as parisc.
+
+       tests: fix invalid copyright years range in a few tests.
+       * maint/update_copyright_years.sh (process_file): When updating
+       copyright years, if there is existing notice and its starting year is
+       earlier than the year of the first commit, the former takes precedence.
+       * tests/filter_seccomp-flag.c: Fix copyright years range.
+       * tests/filter_seccomp-perf.c: Likewise.
+       * tests/filter_seccomp-perf.test: Likewise.
+       * tests/filter_seccomp.sh: Likewise.
+       * tests/status-none-f.c: Likewise.
+
+       ptp: add support of new PTP_*2 ioctls.
+       * ptp.c [!PTP_CLOCK_GETCAPS2] (PTP_CLOCK_GETCAPS2): Define.
+       [!PTP_EXTTS_REQUEST2] (PTP_EXTTS_REQUEST2): Likewise.
+       [!PTP_PEROUT_REQUEST2] (PTP_PEROUT_REQUEST2): Likewise.
+       [!PTP_ENABLE_PPS2] (PTP_ENABLE_PPS2): Likewise.
+       [!PTP_SYS_OFFSET2] (PTP_SYS_OFFSET2): Likewise.
+       (ptp_ioctl): Handle PTP_CLOCK_GETCAPS2, PTP_EXTTS_REQUEST2,
+       PTP_PEROUT_REQUEST2, PTP_ENABLE_PPS2, and PTP_SYS_OFFSET2.
+       * tests/ioctl_ptp.c: Check decoding of PTP_*2 ioctls.
+
+       tests: rewrite ioctl_ptp test using sprintrc.
+       * tests/ioctl_ptp.c: Do not include <errno.h>.
+       (main): Use sprintrc.
+
+       ptp: prepare for support of new PTP_*2 ioctls.
+       * xlat/ptp_flags_options.in: Rename to ...
+       * xlat/ptp_extts_flags.in: ... new file, add fallback definitions
+       for constants.
+       * xlat/ptp_perout_flags.in: New file.
+       * ptp.c: Include "xlat/ptp_extts_flags.h" and "xlat/ptp_perout_flags.h"
+       instead of "xlat/ptp_flags_options.h".
+       (ptp_ioctl): Use ptp_extts_flags and ptp_perout_flags instead of
+       ptp_flags_options.
+       * tests/ioctl_ptp.c: Include "xlat/ptp_extts_flags.h" and
+       "xlat/ptp_perout_flags.h" instead of "xlat/ptp_flags_options.h".
+       (test_no_device): Use ptp_extts_flags and ptp_perout_flags instead of
+       ptp_flags_options.
+
+       prctl: implement decoding of PR_[GS]ET_TAGGED_ADDR_CTRL.
+       * xlat/prctl_options.in (PR_SET_TAGGED_ADDR_CTRL,
+       PR_GET_TAGGED_ADDR_CTRL): New constants introduced by Linux kernel commit
+       v5.4-rc1~100^2~6^9~8.
+       * prctl.c (SYS_FUNC(prctl)): Handle them.
+       * NEWS: Mention this.
+       * tests/prctl-no-args.c: Check PR_GET_TAGGED_ADDR_CTRL decoding.
+
+       xlat: update KVM_CAP_* constants.
+       * xlat/kvm_cap.in (KVM_CAP_ARM_IRQ_LINE_LAYOUT_2): New constant
+       introduced by Linux kernel commit v5.4-rc1~138^2~20^2.
+       (KVM_CAP_HYPERV_DIRECT_TLBFLUSH): New constant introduced by Linux
+       kernel commit v5.4-rc1~26^2~53.
+       * NEWS: Mention this.
+
+       xlat: update KEXEC_* constants.
+       * xlat/kexec_arch_values.in (KEXEC_ARCH_PARISC): New constant introduced
+       by Linux kernel commit v5.4-rc1~188^2~4.
+       * NEWS: Mention this.
+
+       xlat: update CAN_* constants.
+       * xlat/can_protocols.in (CAN_J1939): New constant introduced by Linux
+       kernel commit v5.4-rc1~131^2~78^2~2.
+       * NEWS: Mention this.
+
+2019-11-14  Dmitry V. Levin  <ldv@altlinux.org>
+
+       bpf: implement decoding of BPF_BTF_GET_NEXT_ID command.
+       * xlat/bpf_commands.in (BPF_BTF_GET_NEXT_ID): New constant introduced
+       by Linux kernel commit v5.4-rc1~131^2~62^2~28^2~4.
+       * bpf_attr.h (BPF_BTF_GET_NEXT_ID_struct,
+       BPF_BTF_GET_NEXT_ID_struct_size): New macros.
+       * bpf.c (decode_BPF_BTF_GET_NEXT_ID): Likewise.
+       (bpf_cmd_decoders): Add BPF_CMD_ENTRY(BPF_BTF_GET_NEXT_ID).
+       * NEWS: Mention this change.
+       * tests/bpf.c (BPF_BTF_GET_NEXT_ID_checks): New macro.
+       (checks): Add CHK(BPF_BTF_GET_NEXT_ID).
+
+2019-11-13  Dmitry V. Levin  <ldv@altlinux.org>
+
+       xlat: update MADV_* constants.
+       * xlat/madvise_cmds.in (MADV_COLD): New constant introduced by Linux
+       kernel commit v5.4-rc1~46^2~13.
+       (MADV_PAGEOUT): New constant introduced by Linux kernel commit
+       v5.4-rc1~46^2~11.
+       * NEWS: Mention this.
+
+2019-11-13  Gleb Fotengauer-Malinovskiy  <glebfm@altlinux.org>
+
+       Update ioctl entries from linux v5.4.
+       * linux/32/ioctls_inc_align16.h: Update from linux v5.4-rc7
+       using ioctls_gen.sh.
+       * linux/32/ioctls_inc_align32.h: Likewise.
+       * linux/32/ioctls_inc_align64.h: Likewise.
+       * linux/64/ioctls_inc.h: Likewise.
+       * linux/x32/ioctls_inc0.h: Likewise.
+       * linux/riscv64/ioctls_arch0.h: Likewise.
+       * linux/s390/ioctls_arch0.h: Likewise.
+       * linux/s390x/ioctls_arch0.h: Likewise.
+       * NEWS: Mention this.
+
+2019-11-09  Paul Chaignon  <paul.chaignon@gmail.com>
+
+       filter_seccomp: fix jump offset overflow in binary match generator.
+       binary_match_filter_generator() is missing a check for jump offset
+       overflows which might result in incorrect behavior if the binary match
+       strategy is selected and overflows.
+
+       I have only been able to reproduce the bug on mips after forcing strace to
+       use the binary match generator.  Due to the large number of syscalls on
+       mips, the binary match algorithm is suboptimal and the linear one is
+       selected.  This bug could however be triggered inadvertently if tracing a
+       very large set of syscalls not grouped together; in that case, the linear
+       strategy might have a jump offset overflow itself and strace would
+       fallback to the binary match one.
+
+       * filter_seccomp (binary_match_filter_generator): Check for jump offset
+       overflows.
+
+2019-11-08  Paul Chaignon  <paul.chaignon@gmail.com>
+
+       tests: fix potentially missing SHM_NORESERVE for mips.
+       * tests/ipc_shm.c [!SHM_NORESERVE] (SHM_NORESERVE): Define.
+
+2019-11-07  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: tolerate zero process group ID and session ID in strace-DDD.test.
+       Paul Chaignon reported [1] that in some of Travis CI build environments
+       process group ID and session ID may be equal to zero.
+
+       Change the affected strace-DDD.test to tolerate these odd values as long
+       as they don't interfere with the purpose of the test.
+
+       [1] https://travis-ci.community/t/unexpected-zero-values-in-proc-pid-stat/5774
+
+       * tests/strace-DDD.test: Tolerate zero process group ID and session ID.
+
+       Reported-by: Paul Chaignon <paul.chaignon@gmail.com>
+
+2019-11-07  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: fix -a argument in ipc_msgbuf-Xraw test.
+       * tests/gen_tests.in (ipc_msgbuf-Xraw): Change -a argument from 20 to 19.
+
+2019-11-07  Paul Chaignon  <paul.chaignon@gmail.com>
+           Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: robustify umount2.test against filtered umount2 syscall.
+       Do not assume that umount2 syscall invoked with invalid arguments always
+       fail with EINVAL as in some environments it can be filtered out e.g.
+       using seccomp-bpf.
+
+       * tests/umount2.c (main): Use sprintrc() to prepare expected output.
+
+2019-11-02  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: enhance termination signal forwarding check.
+       Check that termination signal forwarding works properly when strace
+       is invoked with the corresponding termination signal blocked.
+
+       * tests/block_reset_run.c: New file.
+       * tests/Makefile.am (check_PROGRAMS): Add block_reset_run.
+       * tests/.gitignore: Likewise.
+       * tests/termsig.test: Extend the check to cover the case when
+       strace is invoked with the termination signal blocked.
+
+2019-11-02  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Use __gcov_dump declaration from <gcov.h> if available.
+       The function declaration provided by <gcov.h> is fine,
+       use it when <gcov.h> is available.
+
+       * configure.ac (AC_CHECK_HEADERS): Add gcov.h.
+       * defs.h [ENABLE_COVERAGE_GCOV && HAVE_GCOV_H]: Include <gcov.h>.
+
+2019-11-02  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Use __gcov_dump instead of __gcov_flush to dump profile information.
+       __gcov_flush is essentially __gcov_dump followed by __gcov_reset.
+       The way we use __gcov_flush so far does not need any __gcov_reset,
+       so use __gcov_dump instead.
+
+       * defs.h [ENABLE_COVERAGE_GCOV] (__gcov_flush): Replace with
+       __gcov_dump.
+       (GCOV_FLUSH): Replace with GCOV_DUMP.
+       * filter_seccomp.c (check_seccomp_order_do_child): Replace GCOV_FLUSH
+       with GCOV_DUMP.
+       * strace.c (terminate): Likewise.
+
+2019-11-02  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Reduce ENABLE_COVERAGE_GCOV ifdefery.
+       Introduce a new macro GCOV_FLUSH and use it instead of __gcov_flush.
+
+       * defs.h (GCOV_FLUSH): New macro.
+       [ENABLE_COVERAGE_GCOV] (__gcov_flush): New prototype.
+       * filter_seccomp.c (__gcov_flush): Remove.
+       (check_seccomp_order_do_child): Call GCOV_FLUSH instead of __gcov_flush.
+       * strace.c (__gcov_flush): Remove.
+       (terminate): Call GCOV_FLUSH instead of __gcov_flush.
+
+2019-10-31  Dmitry V. Levin  <ldv@altlinux.org>
+
+       filter_seccomp: simplify check_seccomp_filter_properties.
+       * filter_seccomp.c (check_seccomp_filter_properties): Simplify slightly
+       by removing a redundant "if" expression.
+
+2019-10-31  Paul Chaignon  <paul.chaignon@gmail.com>
+
+       filter_seccomp: binary match generation strategy.
+       This commit introduces a new BPF program generation strategy.  Traced
+       syscalls are encoded in 32-bit bit arrays in the BPF program.  Syscalls
+       are then matched against bit arrays at runtime with two ALU operations:
+       a division to select the appropriate bit array to compare with,
+       and a shift to select the appropriate bit in the bit array.
+
+       Since there is no way to implement a jump table in BPF (jumps have fixed
+       offsets), we have to iterate over all bit arrays to select the appropriate
+       bit array.  The division and modulo are also converted into a shift and
+       a bitwise AND, to improve performance and because seccomp-bpf disallows
+       modulos in BPF.
+
+       Compared to the linear generation strategy, this strategy generates
+       programs of near constant size.  There is a single optimization that
+       depends on traced syscalls: if a bit array is all-0 or all-1, we don't
+       need to do a jset against it, we can simply jump to either RET_ALLOW
+       or RET_TRACE.
+
+       * filter_seccomp.c (JMP_PLACEHOLDER_ALLOW): New constant.
+       (binary_match_filter_generator): New prototype.
+       (filter_generators): Add binary_match_filter_generator.
+       (replace_jmp_placeholders): Handle JMP_PLACEHOLDER_ALLOW case.
+       (linear_filter_generator): New argument for replace_jmp_placeholders.
+       (bpf_syscalls_match, binary_match_filter_generator): New functions.
+       (dump_seccomp_bpf): Handle ldwimm, jset, rsh, lsh, and, tax, and txa
+       instructions.
+
+2019-10-31  Paul Chaignon  <paul.chaignon@gmail.com>
+
+       filter_seccomp: list of seccomp filter generation strategies.
+       Iterate over a list of BPF program generators, to select the shortest
+       program.  This commit doesn't introduce new generation strategies.
+
+       * filter_seccomp.c (filter_generator_t): New typedef.
+       (linear_filter_generator): New prototype.
+       (filter_generators, filters): New variables.
+       (seccomp_filter): Remove.
+       (init_sock_filter): Rename to linear_filter_generator, signal overflow
+       via function argument instead of erroring out.
+       (check_seccomp_filter): Find the shortest program generated by all
+       generation strategies, error in case of overflow in all generated
+       programs.
+
+2019-10-28  Dmitry V. Levin  <ldv@altlinux.org>
+
+       ci: install rsync for headers_install.
+       Starting with Linux commit v5.3-rc1~111^2~40, "make headers_install"
+       needs rsync.
+
+       * ci/install-dependencies.sh: Install rsync before invoking
+       "make headers_install".
+
+2019-10-28  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: skip a few tests on systems with nproc == 1.
+       Several tests require some concurrency between threads,
+       skip these tests if nproc reports 1.
+
+       * tests/init.sh (require_min_nproc): New function.
+       * tests/status-none-threads.test: Use it.
+       * tests/threads-execve.test: Likewise.
+
+2019-10-28  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       xlat: update v4l2_sliced_flags.
+       * xlat/v4l2_sliced_flags.in (V4L2_SLICED_TELETEXT_B, V4L2_SLICED_VPS,
+       V4L2_SLICED_CAPTION_525, V4L2_SLICED_WSS_625): Add fallback definitions.
+       (V4L2_SLICED_VBI_525): Comment out as it has the same value as
+       V4L2_SLICED_CAPTION_525.
+       (V4L2_SLICED_VBI_625): Add fallback definition, move up.
+
+2019-10-28  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       xlat: update v4l2_vbi_flags.
+       For some reason, it also used to include V4L2_VBI_ITU_[56]25_F[12]_START
+       constants that are definitely unrelated to V4L2_VBI_* flags.
+
+       * xlat/v4l2_vbi_flags.in (V4L2_VBI_UNSYNC, V4L2_VBI_INTERLACED): Add
+       fallback definitions.
+       (V4L2_VBI_ITU_525_F1_START, V4L2_VBI_ITU_525_F2_START,
+       V4L2_VBI_ITU_625_F1_START, V4L2_VBI_ITU_625_F2_START): Remove.
+
+2019-10-28  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       xlat: provide fallback definitions for V4L2_TUNER_* constants.
+       Also, since V4L2_TUNER_*_SAP have the same values as V4L2_TUNER_*_LANG2,
+       comment out the former.
+
+       * xlat/v4l2_tuner_audmodes.in: Add fallback definitions for constants,
+       add #value_indexed.
+       (V4L2_TUNER_MODE_SAP): Comment out.
+       * xlat/v4l2_tuner_capabilities.in: Add fallback definitions for
+       constants.
+       (V4L2_TUNER_CAP_SAP): Comment out.
+       * xlat/v4l2_tuner_rxsubchanses.in: Add fallback definitions for
+       constants.
+       (V4L2_TUNER_SUB_SAP): Comment out.
+
+2019-10-28  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       xlat: provide fallback definitions for some V4L2_* constants.
+       * xlat/v4l2_capture_modes.in: Add fallback definitions for constants.
+       * xlat/v4l2_control_flags.in: Likewise.
+       * xlat/v4l2_streaming_capabilities.in: Likewise.
+       * xlat/v4l2_frameinterval_types.in: Add fallback definitions for
+       constants, add #value_indexed.
+       * xlat/v4l2_framesize_types.in: Likewise.
+       * xlat/v4l2_input_types.in: Likewise.
+       * xlat/v4l2_memories.in: Likewise.
+       * xlat/v4l2_tuner_types.in: Likewise.
+
+2019-10-25  Dmitry V. Levin  <ldv@altlinux.org>
+
+       ci: consistently parallelize make jobs.
+       * ci/run-build-and-tests.sh: Use "nproc" instead of
+       "getconf _NPROCESSORS_ONLN".
+       * ci/install-dependencies.sh: Use "nproc" to parallelize make jobs.
+
+2019-10-25  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: workaround clang oddness.
+       When a structure is initialized using designated initializers,
+       clang >= 7, apparently, does not initialize trailing padding
+       of the structure.
+
+       * tests/bpf-obj_get_info_by_fd.c [CHECK_OBJ_PROG]
+       (bpf_prog_load_attr_sizes): Replace the size of struct
+       BPF_PROG_LOAD_struct with BPF_PROG_LOAD_struct_size.
+
+2019-10-25  Paul Chaignon  <paul.chaignon@gmail.com>
+
+       filter_seccomp: use init_sock_filter to check the number of BPF instructions
+       With this commit, the number of instructions in the seccomp BPF program
+       is checked by directly constructing the program.  The BPF program is
+       therefore created during the check for seccomp availability instead of
+       when seccomp filtering is initialized.  The BPF program is saved
+       as a global variable between the two operations.
+
+       * filter_seccomp.c (seccomp_filter, bpf_prog): New variables.
+       (init_sock_filter): Disable seccomp-filter in case of overflow, move dump
+       of BPF program in debug mode...
+       (init_seccomp_filter): ...here.
+       (check_bpf_program_size): Remove.
+       (dump_seccomp_bpf): Remove arguments as they are now global variables.
+
+2019-10-23  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Remove XLAT_END.
+       * xlat.h (XLAT_END): Remove.
+       * process.c (struct_user_offsets_data): Replace XLAT_END with a zero
+       xlat_data entry.
+
+       Complements: v5.3~105 "Add xlat description structure"
+
+2019-10-23  Dmitry V. Levin  <ldv@altlinux.org>
+
+       bfin, csky, m68k, sh: fix build regression.
+       * xlat/cacheflush_flags.in: New file.
+       * cacheflush.c [M68K || BFIN || CSKY || SH] (cacheflush_flags): Remove,
+       include "xlat/cacheflush_flags.h" instead.
+
+       Fixes: v5.3~105 "Add xlat description structure"
+
+2019-10-22  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       strace.spec.in: add support for old distros that cannot handle .tar.xz.
+
+       xlat: update V4L2_CTRL_TYPE_* constants.
+       * xlat/v4l2_control_types.in: Add fallback definitions for constants,
+       and #sorted.
+       * configure.ac (AC_CHECK_MEMBERS): Check for struct
+       v4l2_ext_control.string field.
+       * v4l2.c (print_v4l2_ext_control): Change guard macro
+       to HAVE_STRUCT_V4L2_EXT_CONTROL_STRING.
+
+       xlat: update V4L2_COLORSPACE_* constants.
+       * xlat/v4l2_colorspaces.in: Add #value_indexed.
+       (V4L2_COLORSPACE_DEFAULT): New constant introduced by Linux commit
+       v4.2-rc1~107^2~184.
+       (V4L2_COLORSPACE_ADOBERGB): Rename to V4L2_COLORSPACE_OPRGB, per Linux
+       commit v4.20-rc1~69^2~122.
+       (V4L2_COLORSPACE_SMPTE170M, V4L2_COLORSPACE_SMPTE240M,
+       V4L2_COLORSPACE_REC709, V4L2_COLORSPACE_BT878,
+       V4L2_COLORSPACE_470_SYSTEM_M, V4L2_COLORSPACE_470_SYSTEM_BG,
+       V4L2_COLORSPACE_JPEG, V4L2_COLORSPACE_SRGB, V4L2_COLORSPACE_OPRGB,
+       V4L2_COLORSPACE_BT2020, V4L2_COLORSPACE_RAW, V4L2_COLORSPACE_DCI_P3):
+       Add fallback definitions.
+
+       xlat: Provide fallback definitions for V4L2_FIELD_* constants.
+       * xlat/v4l2_fields.in: Add fallback definitions for constants.
+
+       xlat: update V4L2_BUF_TYPE_* constants.
+       * xlat/v4l2_buf_types.in: Add fallback definitions for constants,
+       mention V4L2_BUF_TYPE_PRIVATE in comment, add #value_indexed.
+       * configure.ac (AC_CHECK_MEMBERS): Add checks for
+       struct v4l2_format.fmt.pix_mp, struct v4l2_format.fmt.sdr, and
+       struct v4l2_format.fmt.sliced.
+       * v4l2.c (print_v4l2_format_fmt): Use the relevant HAVE_STRUCT_* macros
+       instead of HAVE_DECL_V4L2_BUF_TYPE_*.
+
+       xlat: provide fallback definitions for V4L2_CAP_* constants.
+       * xlat/v4l2_device_capabilities_flags.in: Sort, add fallback definitions
+       for constants.
+       * configure.ac (AC_CHECK_MEMBERS): Check for struct
+       v4l2_capability.device_caps.
+       * v4l2.c (print_v4l2_capability): Change V4L2_CAP_DEVICE_CAPS guard
+       to HAVE_STRUCT_V4L2_CAPABILITY_DEVICE_CAPS.
+
+2019-10-22  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       evdev: decode struct input_absinfo regardless of in-kernel definitions.
+       * evdev.c (struct_input_absinfo): New typedef.
+       (abs_ioctl): Add code argument. Add orig_sz, res_sz, sz, read_sz local
+       variables. Decode resolution field regardless of
+       HAVE_STRUCT_INPUT_ABSINFO_RESOLUTION.
+       (evdev_read_ioctl, evdev_write_ioctl): Pass code to abs_ioctl.
+       * tests/ioctl_evdev-success.c (print_input_absinfo): Update expected
+       output.
+       (main): Add absinfo_sz, absinfo_24, absinfo_32 local variables; add
+       additional checks for struct input_absinfo.
+
+       References: https://bugzilla.redhat.com/show_bug.cgi?id=1758201
+
+2019-10-22  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       evdev: do not rely on EVIOC* constants provided in <linux/input.h>
+       * xlat/evdev_ioctl_cmds.in: New file.
+       * configure.ac (AC_CHECK_HEADERS([linux/input.h])): Check for struct
+       input_keymap_entry and struct input_mask.
+       * evdev.c [!INPUT_PROP_MAX] (INPUT_PROP_MAX): New macro definition.
+       (struct_input_keymap_entry, struct_input_mask): New typedefs.
+       [HAVE_STRUCT_INPUT_KEYMAP_ENTRY]: Add a static_assert to check
+       that sizeof(struct input_keymap_entry) has the expected value.
+       [HAVE_STRUCT_INPUT_MASK]: Add a static_assert to check
+       that sizeof(struct input_mask) has the expected value.
+       [!EVIOCGPROP] (EVIOCGPROP): New macro definition.
+       [!EVIOCGMTSLOTS] (EVIOCGMTSLOTS): Likewise.
+       [!EVIOCGSW] (EVIOCGSW): Likewise.
+       [!EVIOCGKEYCODE_V2] (keycode_V2_ioctl): Remove guard.
+       (keycode_V2_ioctl): Change type of ike to struct_input_keymap_entry.
+       [!EVIOCGMTSLOTS] (mtslots_ioctl): Remove guard.
+       [!EVIOCGREP || EVIOCSREP] (repeat_ioctl): Likewise.
+       (evdev_read_ioctl) [!EVIOCGREP] <case EVIOCGREP>: Likewise.
+       (evdev_read_ioctl) [!EVIOCGKEYCODE_V2] <case EVIOCGKEYCODE_V2>:
+       Likewise.
+       (evdev_read_ioctl) [!EVIOCGMTSLOTS] <case EVIOCGMTSLOTS>: Likewise.
+       (evdev_read_ioctl) [!EVIOCGPROP] <case EVIOCGPROP>: Likewise.
+       (evdev_read_ioctl) [!EVIOCGSW] <case EVIOCGSW>: Likewise.
+       (evdev_write_ioctl) [!EVIOCSREP] <case EVIOCSREP>: Likewise.
+       (evdev_write_ioctl) [!EVIOCSKEYCODE_V2] <case EVIOCSKEYCODE_V2>: Likewise.
+       (evdev_write_ioctl) [!EVIOCREVOKE] <case EVIOCREVOKE>: Likewise.
+       (evdev_write_ioctl) [!EVIOCSCLOCKID] <case EVIOCSCLOCKID>: Likewise.
+
+       References: https://bugzilla.redhat.com/show_bug.cgi?id=1758201
+
+2019-10-21  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests/nsyscalls.c: remove redundant definition of SYSCALL_BIT.
+       Starting with commit v5.3~111, tests/nsyscalls.c includes "scno.h"
+       which already defines SYSCALL_BIT where appropriate.
+
+       * tests/nsyscalls.c (SYSCALL_BIT): Remove.
+
+2019-10-21  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: replace "sed -E" with "sed -r"
+       because the latter is more portable.
+
+       * tests/strace-D.test: Replace "sed -E" with "sed -r".
+
+2019-10-20  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       xlat: add BPF_MAP_TYPE_DEVMAP_HASH to bpf_map_types.
+       * xlat/bpf_map_types.in (BPF_MAP_TYPE_DEVMAP_HASH): New constant,
+       introduced by Linux commit v5.4-rc1~131^2~248^2~16^2~3.
+       * tests/bpf.c: Update expected output.
+
+       xlat: add BPF_F_CLONE to bpf_map_flags.
+       * xlat/bpf_map_flags.in (BPF_F_CLONE): New flag, introduced by Linux
+       commit v5.4-rc1~131^2~62^2~34^2~2.
+       * tests/bpf.c: Update expected output.
+
+       xlat: add BPF_F_TEST_STATE_FREQ to bpf_prog_flags.
+       * xlat/bpf_prog_flags.in (BPF_F_TEST_STATE_FREQ): New constant,
+       introduced by Linux commit v5.4-rc1~131^2~62^2~17^2~3.
+       * tests/bpf.c: Update expected output.
+
+       xlat: update waitid_types.
+       * xlat/waitid_types.in (P_PIDFD): New constant, introduced by Linux
+       commit v5.4-rc1~203^2~4.
+       (P_ALL, P_PID, P_PGID): Add fallback values.
+       (P_PPID, P_SID, P_CID, P_UID, P_GID, P_LWPID): Remove.
+
+       xlat: update v4l2_format_description_flags.
+       * xlat/v4l2_format_description_flags.in (V4L2_FMT_FLAG_COMPRESSED,
+       V4L2_FMT_FLAG_EMULATED): Add fallback definitions.
+       (V4L2_FMT_FLAG_CONTINUOUS_BYTESTREAM): New constant, introduced by Linux
+       commit v5.4-rc1~145^2~69.
+       (V4L2_FMT_FLAG_DYN_RESOLUTION): New constant, introduced by Linux commit
+       v5.4-rc1~145^2~68.
+
+       xlat: update sock_sctp_options.
+       * xlat/sock_sctp_options.in (SCTP_ASCONF_SUPPORTED): New constant,
+       introduced by Linux commit v5.4-rc1~131^2~204^2~4.
+       (SCTP_AUTH_SUPPORTED): New constant, introduced by Linux commit
+       v5.4-rc1~131^2~204^2~1.
+       (SCTP_ECN_SUPPORTED): New constant, introduced by Linux commit
+       v5.4-rc1~131^2~140^2.
+
+       xlat: add EROFS_SUPER_MAGIC_V1 to fsmagic.
+       * xlat/fsmagic.in (EROFS_SUPER_MAGIC_V1): New constant, introduced
+       by Linux commit v5.4-rc1~134^2~105.
+
+2019-10-20  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       rtnl_route: decode struct rta_mfc_stats and struct rtvia unconditionally
+       * rtnl_route.c (struct_rta_mfc_stats, struct_rtvia): New typedefs.
+       [HAVE_STRUCT_RTA_MFC_STATS]: Add a static_assert to check
+       that sizeof(struct rta_mfc_stats) has the expected value.
+       [HAVE_STRUCT_RTVIA]: Add a static_assert to check that sizeof(struct
+       rtvia) has the expected value.
+       (decode_rta_mfc_stats) [HAVE_STRUCT_RTA_MFC_STATS]: Remove guard.
+       (decode_rta_mfc_stats): Change the type of mfcs variable to
+       struct_rta_mfc_stats.
+       (decode_rtvia): Change the type of via variable to struct_rtvia.
+
+       References: https://bugzilla.redhat.com/show_bug.cgi?id=1758201
+
+2019-10-20  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       rtnl_neightbl: always decode struct ndt_config and struct ndt_stats.
+       * rtnl_neightbl.c (struct_ndt_config, struct_ndt_stats): New typedefs.
+       [HAVE_STRUCT_NDT_CONFIG]: New static_assert to check
+       that sizeof(struct ndt_config) has the expected value.
+       [HAVE_STRUCT_NDT_STATS]: New static_assert to check
+       that sizeof(struct ndt_stats) has the expected value.
+       (decode_ndt_config) [HAVE_STRUCT_NDT_CONFIG]: Remove guard.
+       (decode_ndt_config): Change the type of ndtc variable
+       to struct_ndt_config.
+       (decode_ndt_stats) [HAVE_STRUCT_NDT_STATS]: Remove guard.
+       (decode_ndt_stats): Change the type of ndtst variable
+       to struct_ndt_stats.
+
+       References: https://bugzilla.redhat.com/show_bug.cgi?id=1758201
+
+2019-10-19  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       rtnl_mdb: decode messages regardless of availability of kernel headers.
+       * netlink_route.c [!HAVE_STRUCT_BR_PORT_MSG]: Do not skip decoding of
+       RTM_DELMDB, RTM_GETMDB, and RTM_NEWMDB messages.
+       * rtnl_mdb.c: Remove #ifdef HAVE_STRUCT_BR_PORT_MSG guard.
+       (struct_br_port_msg, struct_br_mdb_entry): New typedefs.
+       [HAVE_STRUCT_BR_PORT_MSG]: Static assert check for struct br_port_msg
+       size.
+       [HAVE_STRUCT_BR_NDB_ENTRY]: Static assert check for strucr br_mdb_entry
+       size.
+       (decode_mdba_mdb_entry_info) [!HAVE_STRUCT_BR_MDB_ENTRY]: Remove.
+       (decode_mdba_mdb_entry_info): Change entry type to struct_br_mdb_entry.
+       (decode_mdba_mdb_entry_info) [HAVE_STRUCT_BR_MDB_ENTRY_FLAGS,
+       HAVE_STRUCT_BR_MDB_ENTRY_VID]: Remove guards.
+       (decode_br_port_msg): Change bpm type to struct_br_port_msg.
+       * tests/nlattr_ifinfomsg.c: Use TEST_NLATTR_OBJECT_MINSZ to test
+       struct rtnl_link_stats printing.
+       * tests/nlattr_mdba_mdb_entry.c: Update expected output.
+
+       References: https://bugzilla.redhat.com/show_bug.cgi?id=1758201
+
+2019-10-19  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       rtnl_link: print pad field in the struct ifla_port_vsi decoder.
+       And steamline the flow a bit.
+
+       * rtnl_link.c (decode_ifla_port_vsi): Factor the printing code out of
+       the conditional statement, add pad field printing.
+       * tests/nlattr_ifla_port.c: Add check for the pad field printing.
+
+2019-10-19  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       rtnl_link: use internal rtnl_link_stats* and ifla_port_vsi definitions.
+       Define substitutes for struct rtnl_link_stats, struct
+       rtnl_link_stats64, and struct ifla_port_vsi internally.
+       Add a static_assert that informs about future growth of the structures
+       provided by the kernel headers.
+
+       * rtnl_link.c (struct_rtnl_link_stats, struct_rtnl_link_stats64,
+       struct_ifla_port_vsi): New typedefs.
+       [HAVE_STRUCT_RTNL_LINK_STATS_RX_NOHANDLER]: Add a static_assert to check
+       that sizeof(struct rtnl_link_stats) has the expected value.
+       [HAVE_STRUCT_RTNL_LINK_STATS64_RX_NOHANDLER]: Add a static_assert
+       to check that sizeof(struct rtnl_link_stats) has the expected value.
+       [HAVE_STRUCT_IFLA_PORT_VSI]: Add a static_assert to check
+       that sizeof(struct ifla_port_vsi) has the expected value.
+       (decode_rtnl_link_stats) [HAVE_STRUCT_RTNL_LINK_STATS_RX_NOHANDLER]:
+       Remove guard.
+       (decode_rtnl_link_stats): Change the type of st variable to
+       struct_rtnl_link_stats; use struct_rtnl_link_stats in offsetofend
+       statement for min_size definition.
+       (decode_rtnl_link_stats64) [HAVE_STRUCT_RTNL_LINK_STATS64,
+       HAVE_STRUCT_RTNL_LINK_STATS64_RX_NOHANDLER]: Remove guards.
+       (decode_rtnl_link_stats64): Change the type of st variable
+       to struct_rtnl_link_stats64.
+       (decode_ifla_port_vsi) [HAVE_STRUCT_IFLA_PORT_VSI]: Remove guard.
+       (decode_ifla_port_vsi): Change the type of vsi variable
+       to struct_ifla_port_vsi.
+
+       References: https://bugzilla.redhat.com/show_bug.cgi?id=1758201
+
+2019-10-19  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       Enable building of netlink_crypto decoder without linux/cryptouser.h.
+       * xlat/crypto_msgs.in: New file.
+       * configure.ac (AC_CHECK_TYPES): Check for struct crypto_user_alg.
+       * netlink.c: Include "xlat/crypto_msgs.h" with XLAT_MACROS_ONLY defined.
+       (netlink_decoders[]): Remove HAVE_LINUX_CRYPTOUSER_H guard around
+       [NETLINK_CRYPTO] item.
+       * netlink_crypto.c: Remove HAVE_LINUX_CRYPTOUSER_H guard; include
+       <linux/cryptouser.h> under HAVE_LINUX_CRYPTOUSER_H; include
+       "xlat/crypto_msgs.h" with XLAT_MACROS_ONLY defined.
+       [!CRYPTO_MAX_NAME] (CRYPTO_MAX_NAME): New macro.
+       (struct_crypto_user_alg, struct_crypto_report_hash,
+       struct_crypto_report_cipher, struct_crypto_report_blkcipher,
+       struct_crypto_report_aead, struct_crypto_report_rng): New typedefs.
+       [HAVE_STRUCT_CRYPTO_USER_ALG]: New static_assert to check
+       that sizeof(struct crypto_user_alg) has the expected value.
+       [HAVE_STRUCT_CRYPTO_REPORT_HASH]: New static_assert to check
+       that sizeof(struct crypto_report_hash) has the expected value.
+       [HAVE_STRUCT_CRYPTO_REPORT_CIPHER]: New static_assert to check
+       that sizeof(struct crypto_report_cipher) has the expected value.
+       [HAVE_STRUCT_CRYPTO_REPORT_BLKCIPHER]: New static_assert to check
+       that sizeof(struct crypto_report_blkcipher) has the expected value.
+       [HAVE_STRUCT_CRYPTO_REPORT_AEAD]: New static_assert to check
+       that sizeof(struct crypto_report_aead) has the expected value.
+       [HAVE_STRUCT_CRYPTO_REPORT_RNG]: New static_assert to check
+       that sizeof(struct crypto_report_rng) has the expected value.
+       (decode_crypto_report_hash) [!HAVE_STRUCT_CRYPTO_REPORT_HASH]: Remove.
+       (decode_crypto_report_hash): Change type of rhash to
+       struct_crypto_report_hash.
+       (decode_crypto_report_blkcipher) [!HAVE_STRUCT_CRYPTO_REPORT_BLKCIPHER]:
+       Remove.
+       (decode_crypto_report_blkcipher): Change type of rblkcipher to
+       struct_crypto_report_blkcipher.
+       (decode_crypto_report_aead) [!HAVE_STRUCT_CRYPTO_REPORT_AEAD]: Remove.
+       (decode_crypto_report_aead): Change type of raead to
+       struct_crypto_report_aead.
+       (decode_crypto_report_rng) [!HAVE_STRUCT_CRYPTO_REPORT_RNG]: Remove.
+       (decode_crypto_report_rng): Change type of rrng to
+       struct_crypto_report_rng.
+       (decode_crypto_report_cipher) [!HAVE_STRUCT_CRYPTO_REPORT_CIPHER]:
+       Remove.
+       (decode_crypto_report_cipher): Change type of rcipher to
+       struct_crypto_report_cipher.
+       (decode_crypto_user_alg): Change type of alg to struct_crypto_user_alg.
+
+       References: https://bugzilla.redhat.com/show_bug.cgi?id=1758201
+
+2019-10-18  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       macros.h: include <stddef.h>
+       Since offsetofend macro definition relies on presence of offsetof
+       declaration.
+
+       * macros.h: Include <stddef.h>.
+
+2019-10-18  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       evdev: remove additional indentation level for switch case labels.
+       And while we are here, factor out evdev_write_ioctl_mpers call
+       out of the switch statement.
+
+       * evdev.c (bit_ioctl, evdev_read_ioctl, evdev_ioctl): Remove
+       one indentation level inside the switch statements.
+       (evedev_write_ioctl): Remove one indentation level inside the switch
+       statement; move default branch out of the switch statement.
+
+2019-10-18  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       tests: introduce TEST_NLATTR_OBJECT_MINSZ.
+       It is useful in cases where a structure grows over time and we support
+       decoding of only part of it.
+
+       * tests/test_nlattr.h (TEST_NLATTR_OBJECT_EX_, TEST_NLATTR_OBJECT_EX):
+       Add minsz_ parameter, use it instead of sizeof(obj_).
+       (TEST_NLATTR_OBJECT): Pass sizeof(obj_) as minsz_.
+       (TEST_NLATTR_OBJECT_MINSZ): New macro.
+       * tests/nlattr_crypto_user_alg.c (main): Add proper minsz_ argument to
+       TEST_NLATTR_OBJECT_EX instances.
+
+2019-10-18  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       xlat: provide fallback definitions for ABS_MT_* constants.
+       * xlat/evdev_mtslots.in: Add fallback definitions.  Add #sorted.
+
+       References: https://bugzilla.redhat.com/show_bug.cgi?id=1758201
+
+2019-10-18  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       defs.h: compact struct tcb a bit by moving currpers field.
+       As reported by pahole, struct tcb has size of 328 bytes and 8 bytes
+       of holes on x86_64; by moving currpers after qual_flg, both holes are
+       leminated and the structure fits into 8 cache lines now.  This should
+       also benefit other 64-bit architectures.
+
+       * defs.h [SUPPORTED_PERSONALITIES > 1] (struct tcb): Move currpers field
+       after qual_flg field.
+
+2019-10-18  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       xlat: use unsgined type for mount_flags fallback values.
+       Reported by cppcheck:
+
+           strace/xlat/mount_flags.h:256: error[shiftTooManyBitsSigned]:
+           Shifting signed 32-bit value by 31 bits is undefined behaviour
+           #  254|    XLAT(MS_BORN),
+           #  255|    XLAT(MS_ACTIVE),
+           #  256|->  XLAT(MS_NOUSER),
+           #  257|    XLAT_END
+           #  258|   };
+
+       * xlat/mount_flags.in: Use 1U instead of 1 as a bit shifting operand.
+
+       References: https://bugzilla.redhat.com/show_bug.cgi?id=1747524
+
+2019-10-12  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       rtnl_rule: decode fib_rule_uid_range without use of <linux/fib_rules.h>
+       * rtnl_rule.c (decode_fib_rule_uid_range): Define struct type for
+       fib_rule_uid_range explicitly.
+       (decode_fib_rule_uid_range) [!HAVE_STRUCT_FIB_RULE_UID_RANGE]: Remove.
+       * xlat/fib_rule_flags.in: Add fallback definitions.
+
+       References: https://bugzilla.redhat.com/show_bug.cgi?id=1758201
+
+2019-10-12  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       xlat: update MDB_FLAGS_* constants.
+       Also, provide fallback definitions for constants.
+
+       * xlat/mdb_flags.in (MDB_FLAGS_OFFLOAD): Add fallback definition.
+       (MDB_FLAGS_FAST_LEAVE): New constant, introduced by Linux commit
+       v5.4-rc1~131^2~321.
+
+2019-10-12  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       xlat: provide fallback definitions for XDP_FLAGS_* constants.
+       * xlat/xdp_flags.in: Add fallback definitions.
+
+       References: https://bugzilla.redhat.com/show_bug.cgi?id=1758201
+
+2019-10-12  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       xlat: provide fallback definitions for netlink_ack_flags constants.
+       * xlat/netlink_ack_flags.in: Add fallback definitions.
+
+       References: https://bugzilla.redhat.com/show_bug.cgi?id=1758201
+
+2019-10-12  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       xlat: provide fallback definitions for UFFD_FEATURE_* constants.
+       * xlat/uffd_api_features.in: Add fallback definitions.
+
+       References: https://bugzilla.redhat.com/show_bug.cgi?id=1758201
+
+2019-10-12  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       riscv64: remove dead code left after riscv64 mpers removal.
+       Since there is no compat on RISCV64 so far, its dead remains are only
+       confusing.
+
+       * linux/riscv64/arch_get_personality.c: Remove.
+       * Makefile.am (EXTRA_DIST): Remove it.
+
+       Reported-by: Elvira Khabirova <lineprinter0@gmail.com>
+       Suggested-by: Dmitry V. Levin <ldv@altlinux.org>
+       Complements: v5.3~18 "riscv64: remove mpers support"
+
+2019-10-11  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       tests: try to avoid false positives in times sanity check.
+       Checking clock_gettime(CLOCK_PROCESS_CPUTIME_ID) starting from the
+       second iteration may produce false positives sometimes, try to spend
+       more iterations before starting checking it.
+
+       * tests/times.c (NUM_USER_ITERS_SQRT): New enum entity.
+       (NUM_USER_ITERS): Define via NUM_USER_ITERS_SQRT.
+       (main): Check i against NUM_USER_ITERS_SQRT first before checking
+       the returned CPU time for sanity.
+
+2019-10-09  Dmitry V. Levin  <ldv@altlinux.org>
+
+       filter_seccomp: fix build on antique systems.
+       Fixed build on systems that do not provide necessary definitions
+       of AUDIT_ARCH_* constants.
+
+       * filter_seccomp.c [PERSONALITY0_AUDIT_ARCH]: Include
+       "xlat/elf_em.h" and "xlat/audit_arch.h" under XLAT_MACROS_ONLY.
+       * tests/filter_seccomp-flag.c: Likewise.
+       * NEWS: Mention this fix.
+
+       Fixes: v5.3~7 "Introduce seccomp-assisted syscall filtering"
+
+2019-10-07  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: check -DD and -DDD options.
+       * tests/strace-D.test: Check -DD and -DDD.
+       * tests/strace-DD.test: New test.
+       * tests/strace-DDD.test: Likewise.
+       * tests/strace-DD.expected: New file.
+       * tests/strace-DDD.expected: Likewise.
+       * tests/tracer_ppid_pgid_sid.c: Likewise.
+       * tests/Makefile.am (check_PROGRAMS): Add tracer_ppid_pgid_sid.
+       (MISC_TESTS): Add strace-DD.test and strace-DDD.test.
+       (EXTRA_DIST): Add strace-DD.expected and strace-DDD.expected.
+
+2019-10-07  Fanda Uchytil  <strace.t8xuewpmde@h4x.cz>
+           Eugene Syromyatnikov  <evgsyr@gmail.com>
+           Dmitry V. Levin  <ldv@altlinux.org>
+
+       strace: expand -D option.
+       As of now, despite of being stated that -D option runs strace as a "detached"
+       grandchild (and the option name being named after "daemon"), strace
+       still runs in the same process group and session, thus not being
+       "detached" in a common sense and being subjected to process group kill
+       and session termination kill. Quoting[1]:
+
+           I stumble upon unexpected behavior: if strace is used with option '-D'
+           (tracer as a detached grandchild) and process (leader) kills whole
+           process group, it will kill strace too.
+
+           It can be easily reproduced by `timeout` from "coreutils":
+
+             # timeout -s KILL 2 strace -D -o ./strace-inside.log /bin/sleep 10 &
+
+           Here we can see, that `strace` didn't finished its output (because it
+           was killed):
+
+             # tail -n 1 ./strace-inside.log
+             nanosleep({tv_sec=10, tv_nsec=0},
+
+           If `timeout` is not run in '--foreground' mode, it changes process group
+           and after "timeout" it sends two kills:
+
+             setpgid(0, 0)                           = 0
+             kill(37337, SIGKILL)                    = 0
+             kill(0, SIGKILL)                        = ?
+
+           The first kill is for the `sleep` and the second one is for the process
+           group (which is `strace` part of). PIDs and their relations are:
+
+             timeout  pid=30595   [ppid=476   bash   ]     pgrp=30595
+             sleep    pid=37337   [ppid=30595 timeout]     pgrp=30595
+             strace   pid=30603   [ppid=1     systemd]     pgrp=30595
+
+           Here is "strace log" of `strace` inside `timeout`:
+
+             strace: Process 30603 attached
+             wait4(-1,  <unfinished ...>)            = ?
+             +++ killed by SIGKILL +++
+
+           I think that detached `strace` should not be killed like that -- it
+           should not be part of former grandparents' "job pipeline".
+
+       While this behaviour is not exactly intuitive, it is implemented this
+       way for quite some time, so it might be relied upon by some of strace
+       users.  In order to address this issue, two new levels of
+       "daemonisation" are added, that put strace in a separate process group
+       and session, respectively.
+
+       [1] https://lists.strace.io/pipermail/strace-devel/2019-October/009160.html
+
+       * strace.1.in (.SH SYNOPSIS): Update.
+       (.SS Tracing): Document -DD and -DDD.
+       * strace.c (DAEMONIZE_NONE, DAEMONIZE_GRANDCHILD, DAEMONIZE_NEW_PGROUP,
+       * DAEMONIZE_NEW_SESSION, DAEMONIZE_OPTS_GUARD__, MAX_DAEMONIZE_OPTS):
+       * New enumeration entities.
+       (daemonized_tracer): Change type to unsigned int.
+       (usage): Document -DD and -DDD.
+       (startup_attach) <daemonized_tracer == DAEMONIZE_NEW_PGROUP>: Call
+       setpgid.
+       <daemonized_tracer == DAEMONIZE_NEW_SESSION>: Call setsid.
+       (init) <case 'D'>: Increase daemonized_tracer instead of setting to 1.
+       (init): Bail out if too many -D's are given.
+       * NEWS: Mention this improvement.
+       * tests/options-syntax.test: Add checks for -D option usage.
+
+2019-10-04  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Fix -b execve when --seccomp-bpf option is specified.
+       As --seccomp-bpf does not support detaching, explicitly turn off
+       this option when -b execve is specified.
+
+       * strace.c (init): Turn off --seccomp-bpf when -b execve is specified.
+       * NEWS: Mention this fix.
+       * tests/bexecve.test: Check it.
+
+       Fixes: v5.3~7 "Introduce seccomp-assisted syscall filtering"
+
+2019-10-04  Dmitry V. Levin  <ldv@altlinux.org>
+
+       filter_seccomp: fix build for no-MMU targets.
+       Avoid unsupported fork() call on no-MMU Linux systems to fix
+       the following link error:
+
+       ld: strace-filter_seccomp.o: in function `check_seccomp_filter':
+       filter_seccomp.c:(.text+0x39a): undefined reference to `fork'
+       collect2: error: ld returned 1 exit status
+
+       * filter_seccomp.c (__gcov_flush, check_seccomp_order_do_child,
+       check_seccomp_order_tracer): Move under HAVE_FORK guard.
+       (check_seccomp_order): Move fork code under HAVE_FORK guard.
+       (check_seccomp_filter_properties): Do not check for NOMMU_SYSTEM.
+       * NEWS: Mention this fix.
+
+       Reported-and-tested-by: Baruch Siach <baruch@tkos.co.il>
+       Fixes: v5.3~7 "Introduce seccomp-assisted syscall filtering"
+
+2019-10-04  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: check -D option.
+       * tests/strace-D.test: New test.
+       * tests/strace-D.expected: New file.
+       * tests/Makefile.am (MISC_TESTS): Add strace-D.test.
+       (EXTRA_DIST): Add strace-D.expected.
+
+       tests: check -F and -zZ options.
+       * tests/options-syntax.test: Check error diagnostics of -F and -zZ
+       options.
+
+       tests: extend checks of --seccomp-bpf diagnostics.
+       * tests/options-syntax.test: Add --seccomp-bpf checks.
+
+       tests: add support of multi-line diagnostics to check_h.
+       * tests/syntax.sh (check_h): Add support of multi-line diagnostics.
+
+2019-10-04  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       Move FLAG_ macro from defs.h to macros.h.
+       Rename it to FLAG and implement via newly added BIT helper macro,
+       in preparation for general use
+
+       * defs.h: Use FLAG instead of FLAG_.
+       (FLAG_): Move it...
+       * macros.h (FLAG): Here, implement using BIT macro.
+       [!BIT] (BIT): New macro.
+
+2019-10-04  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       ioctl: sort entries in ioctl_decode switch statement.
+       * ioctl.c (ioctl_decode): Sort case branches in the switch statement.
+
+2019-10-04  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       util: avoid double printing of ellipsis in print_array.
+       When PAF_ARRAY_TRUNCATED flag is provided to print_array_ex.
+
+       * util.c (print_array_ex): Add truncated flag, set it when the output
+       is truncated, avoid explicit ellipsis printing when it is set.
+
+       Fixes: v5.3~14 "Add PAF_ARRAY_TRUNCATED flag for print_array_ex"
+
+2019-10-03  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       tests: add ioctl_evdev-success* test binaries to .gitignore.
+       * tests/.gitignore: Add ioctl_evdev-success-Xabbrev,
+       ioctl_evdev-success-Xraw, ioctl_evdev-success-Xverbose,
+       ioctl_evdev-success-v-Xabbrev, ioctl_evdev-success-v-Xraw,
+       and ioctl_evdev-success-v-Xverbose.
+
+       Fixes: v5.3~9 "Handle xlat verbosity in evdev bitset printing"
+
+2019-10-02  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests/sigaction: workaround odd libcs on alpha and mips.
+       Apparently, some libcs define SA_RESTORER on alpha and mips
+       despite of the absence of sa_restorer field.  Workaround this
+       to match the logic implemented in decode_old_sigaction().
+
+       * tests/sigaction.c (main) [ALPHA || MIPS]: Do not check decoding
+       of sa_restorer field.
+
+2019-10-02  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Distribute copyright-year-gen, file-date-gen, and git-version-gen.
+       These scripts have to be distributed along with configure.ac since
+       the latter uses them.
+
+       * Makefile.am (EXTRA_DIST): Add copyright-year-gen, file-date-gen,
+       and git-version-gen.
+
+2019-10-01  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: fix -a argument in stat and lstat tests.
+       * tests/trace_lstat.in (lstat): Change -a argument from 32 to 31.
+       * tests/trace_stat.in (stat): Change -a argument from 32 to 30.
+       * tests/gen_tests.in (lstat): Change -a argument from 32 to 31.
+       (stat): Change -a argument from 32 to 30.
+
+       This fixes Debian bug #929715.
+
+2019-10-01  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Prefer https URLs where possible.
+       * maint/README-release: Use https URL instead of http.
+       * xlat/elf_em.in: Likewise.
+
+       Update debian/watch.
+       * debian/watch: Sync with Debian strace-4.26-0.2 package.
+
+       Update ax_prog_cc_for_build.m4.
+       * m4/ax_prog_cc_for_build.m4: Update from autoconf-archive.
+
+       Update auxiliary maintainer mode build tools.
+       * git-set-file-times: Update from rsync.
+       * git-version-gen: Update from gnulib.
+       * gitlog-to-changelog: Likewise.
+
+2019-09-27  Andreas Schwab  <schwab@linux-m68k.org>
+
+       Remove traces of riscv64 mpers.
+       * tests/options-syntax.test: Remove riscv64.
+       * tests/qualify_personality.sh: Likewise.
+       * tests/strace-V.test: Likewise.
+
+       Fixes: v5.3~18 "riscv64: remove mpers support"
+
+2019-09-25  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       strace.1.in: move --seccomp-bpf description down.
+       Option descriptions generally maintain lexicographical order.
+
+       * strace.1.in (.SS Miscellaneous): Move --seccomp-bpf option description
+       down in order to maintain lexicographical option description order.
+
+2019-09-25  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       strace.1.in: mention seccomp(2) in --seccomp-bpf option description.
+       And format ptrace(2) properly as well.
+
+       * strace.1.in (.SS Miscellaneous): Mention seccomp(2), format ptrace(2)
+       mention.
+
+2019-09-25  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       strace.1.in: describe time format specification.
+       Commits v5.3~74 and v5.3~73 have introduced an extended syntax
+       for time interval sizes specification, but the relevant descriotion
+       was lacking.  Fix it by adding the relevant section to the man page
+       and reference to it in the descriptions of the respective options.
+
+       * strace.1.in (.SH OPTIONS): Rewrite descriptions of -O,
+       -e inject=delay_enter, and -e inject=delay_exit values, refer to section
+       "Time specification format description".
+       (.SS "Time specification format description"): New section.
+
+       Complements: v5.3~74 "delay: use parse_ts for parsing delay value"
+       Complements: v5.3~73 "count: use parse_ts for parsing overhead value"
+
+2019-09-25  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       strace.1.in: add a missing comma before "but"
+       * strace.1.in (.SH DESCRIPTION): Add a missing comma.
+
+       strace.1.in: eliminate empty lines.
+       Replace them with .IP or just remove.
+
+2019-09-25  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       strace.1.in: properly indent -e inject description.
+       As inject option description is moved to a separate section, its
+       .TP macro now requires an argument.
+
+       * strace.1.in (.SS Tampering): Add indent size argument to the first
+       .TP macro instance.
+
+       Fixes: v5.3~99 "strace.1.in: reorder options"
+
+2019-09-25  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 5.3-1.
+       * strace.spec.in: Likewise.
+
+       Prepare for 5.3 release.
+       * NEWS: Update for 5.3 release.
+
+       tests: workaround systemd-nspawn habit of disabling unimplemented syscalls
+       * tests/clone3.c (do_clone3_): Do not assume that unimplemented
+       syscalls always fail with ENOSYS.
+
+       Update copyright headers.
+       Headers updated automatically using maint/update_copyright_years.sh
+       script.
+
+2019-09-25  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Fix preprocessor indentation.
+       Indent the C preprocessor directives to reflect their nesting
+       using the following script:
+
+       $ cppi -l $(git grep -El '^[[:space:]]*#[[:space:]]*(if|ifdef|ifndef|elif|else|endif|define|pragma)[[:space:]]' |grep -v '\.sh$') |while read f; do
+               cppi < "$f" > "$f".cppi; mv "$f".cppi "$f"
+       done
+
+2019-09-25  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       Update NEWS.
+
+2019-09-25  Chen Jingpiao  <chenjingpiao@gmail.com>
+           Paul Chaignon  <paul.chaignon@gmail.com>
+
+       tests: check seccomp-assisted syscall filtering.
+       Test filter_seccomp-perf checks whether seccomp-filter is actually
+       enabled by comparing the number of syscalls performed in a time interval
+       when seccomp-filter is enabled vs. disabled.  The number of syscalls
+       should be at least one order of magnitude higher when seccomp-filter
+       is enabled.
+
+       Test filter_seccomp-flag ensures the audit_arch_vec[].flag constants do
+       not conflict with syscall numbers.  If this test fails, then the number
+       of syscalls grew high enough that the code for seccomp-filter needs to
+       be updated.
+
+       * tests/init.sh (test_prog_set): New function.
+       * tests/status-none-f.c: New file.
+       * tests/filter_seccomp.in: Likewise.
+       * tests/filter_seccomp.sh: Likewise.
+       * tests/filter_seccomp-perf.c: Likewise.
+       * tests/filter_seccomp-flag.c: Likewise.
+       * tests/filter_seccomp-perf.test: New test.
+       * tests/Makefile.am (EXTRA_DIST): Add filter_seccomp.in and
+       filter_seccomp.sh.
+       (MISC_TESTS): Add filter_seccomp-perf.test.
+       (check_PROGRAMS): Add filter_seccomp-perf and filter_seccomp-flag.
+       * tests/pure_executables.list: Add status-none-f.
+       * tests/.gitignore: Add status-none-f, filter_seccomp-perf, and
+       filter_seccomp-flag.
+       * tests/gen_tests.in (filter_seccomp, filter_seccomp-flag): New entries.
+
+       Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2019-09-25  Paul Chaignon  <paul.chaignon@gmail.com>
+
+       filter_seccomp: skip seccomp setup when there's nothing to filter.
+       If the trace_set set is complete (no syscalls are filtered), seccomp
+       filtering is disabled.  This patch adds a new is_complete_set_array
+       function to check whether all sets of a set array are complete.
+
+       * number_set.c (is_complete_set_array): New function.
+       * number_set.h (is_complete_set_array): New prototype.
+       * filter_seccomp.c (check_seccomp_filter): Skip seccomp setup if there is
+       nothing to filter.
+
+2019-09-25  Chen Jingpiao  <chenjingpiao@gmail.com>
+           Paul Chaignon  <paul.chaignon@gmail.com>
+
+       Introduce seccomp-assisted syscall filtering.
+       With this patch, strace can rely on seccomp to only be stopped at syscalls
+       of interest, instead of stopping at all syscalls.  The seccomp filtering
+       of syscalls is opt-in only; it must be enabled with the --seccomp-bpf
+       option.  Kernel support is first checked with check_seccomp_filter(),
+       which also ensures the BPF program derived from the syscalls to filter
+       is not larger than the kernel's limit.
+
+       The --seccomp-bpf option implies -f, but a warning is emitted if -f is not
+       explicitly specified.  Since a task's children inherit its seccomp
+       filters, we want to ensure all children are also traced to avoid their
+       syscalls failing with ENOSYS (cf. SECCOMP_RET_TRACE in seccomp man page).
+
+       Fork/vfork/clone children of traced processes are marked as not having a
+       seccomp filter until we receive a first seccomp-stop.  They are therefore
+       stopped at every syscall entries and exits until that first seccomp-stop.
+
+       The current BPF program implements a simple linear match of the syscall
+       numbers.  Contiguous sequences of syscall numbers are however matched as
+       an interval, with two instructions only.  The algorithm can be improved
+       or replaced in the future without impacting user-observed behavior.
+
+       The behavior of SECCOMP_RET_TRACE changed between Linux 4.7 and 4.8
+       (cf. PTRACE_EVENT_SECCOMP in ptrace man page).  This patch supports both
+       behaviors by checking the kernel's actual behavior before installing the
+       seccomp filter.
+
+       * filter_seccomp.c: New file.
+       * filter_seccomp.h: New file.
+       * Makefile.am (strace_SOURCES): Add filter_seccomp.c and
+       filter_seccomp.h.
+       * linux/aarch64/arch_defs_.h (PERSONALITY0_AUDIT_ARCH,
+       PERSONALITY1_AUDIT_ARCH): Define for aarch64.
+       * linux/powerpc64/arch_defs_.h (PERSONALITY0_AUDIT_ARCH,
+       PERSONALITY1_AUDIT_ARCH): Likewise for powerpc64.
+       * linux/s390x/arch_defs_.h (PERSONALITY0_AUDIT_ARCH,
+       * linux/sparc64/arch_defs_.h (PERSONALITY0_AUDIT_ARCH,
+       PERSONALITY1_AUDIT_ARCH): Likewise for sparc64.
+       PERSONALITY1_AUDIT_ARCH): Likewise for s390x.
+       * linux/tile/arch_defs_.h (PERSONALITY0_AUDIT_ARCH,
+       PERSONALITY1_AUDIT_ARCH): Likewise for tile.
+       * linux/x32/arch_defs_.h (PERSONALITY0_AUDIT_ARCH,
+       PERSONALITY1_AUDIT_ARCH): Likewise for x32.
+       * linux/x86_64/arch_defs_.h (PERSONALITY0_AUDIT_ARCH,
+       PERSONALITY1_AUDIT_ARCH, PERSONALITY2_AUDIT_ARCH): Likewise for x86_64.
+       * linux/ia64/arch_defs_.h (PERSONALITY0_AUDIT_ARCH): Likewise for IA64.
+       * strace.c (usage): Document --seccomp-bpf option.
+       (startup_child): Mark process has having seccomp filter.
+       (exec_or_die): Initialize seccomp filtering if requested.
+       (init): Handle --seccomp-bpf option and check that seccomp can be
+       enabled.
+       (print_debug_info): Handle PTRACE_EVENT_SECCOMP.
+       (next_event): Capture PTRACE_EVENT_SECCOMP event.
+       (dispatch_event): Handle PTRACE_EVENT_SECCOMP event.
+       * trace_event.h (trace_event): New enumeration entity.
+       * strace.1.in: Document new --seccomp-bpf option.
+       * NEWS: Mention this change.
+
+       Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2019-09-25  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Add support for long options.
+       Recognize --help and --version options as aliases to -h and -V options,
+       respectively.
+
+       * strace.c: Include <getopt.h>.
+       (init): Move short options to optstring, add longopts array, use
+       getopt_long instead of getopt.
+       (usage): Document --help and --version options.
+       * strace.1.in: Likewise.
+       * tests/strace-V.test: Check that "strace --version" output is the same
+       as "strace -V" output.
+
+2019-09-24  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       Handle xlat verbosity in evdev bitset printing.
+       * defs.h (print_xint32_array_member, print_xint64_array_member): New
+       function declarations.
+       (print_xlong_array_member): New static inline function.
+       * util.c (print_xint32_array_member, print_xint64_array_member): New
+       functions.
+       * evdev.c (decode_bitset): Handle xlat verbosity option.
+       * tests/ioctl_evdev-Xabbrev.c: New file.
+       * tests/ioctl_evdev-Xraw.c: Likewise.
+       * tests/ioctl_evdev-Xverbose.c: Likewise.
+       * tests/ioctl_evdev-success-Xabbrev.c: Likewise.
+       * tests/ioctl_evdev-success-Xraw.c: Likewise.
+       * tests/ioctl_evdev-success-Xverbose.c: Likewise.
+       * tests/ioctl_evdev-success-v-Xabbrev.c: Likewise.
+       * tests/ioctl_evdev-success-v-Xraw.c: Likewise.
+       * tests/ioctl_evdev-success-v-Xverbose.c: Likewise.
+       * tests/ioctl_evdev-v-Xabbrev.c: Likewise.
+       * tests/ioctl_evdev-v-Xraw.c: Likewise.
+       * tests/ioctl_evdev-v-Xverbose.c: Likewise.
+       * tests/ioctl_evdev-success.c (test_evdev, print_getbit, main): Update
+       expected output.
+       * tests/ioctl_evdev.c (UNK_CMD): New macro.
+       (print_ffe_common, main): Update expected output.
+       * tests/Makefile.am (check_PROGRAMS): Add ioctl_evdev-success-Xabbrev,
+       ioctl_evdev-success-Xraw, ioctl_evdev-success-Xverbose,
+       ioctl_evdev-success-v-Xabbrev, ioctl_evdev-success-v-Xraw, and
+       ioctl_evdev-success-v-Xverbose.
+       * tests/gen_tests.in (ioctl_evdev-Xabbrev, ioctl_evdev-Xraw,
+       ioctl_evdev-Xverbose, ioctl_evdev-v-Xabbrev, ioctl_evdev-v-Xraw,
+       ioctl_evdev-v-Xverbose, ioctl_evdev-success-Xabbrev,
+       ioctl_evdev-success-Xraw, ioctl_evdev-success-Xverbose,
+       ioctl_evdev-success-v-Xabbrev, ioctl_evdev-success-v-Xraw,
+       ioctl_evdev-success-v-Xverbose tests): New entries.
+       (ioctl_evdev, ioctl_evdev-v): Add alignment option.
+       * tests/pure_executables.list: Add ioctl_evdev-Xabbrev,
+       ioctl_evdev-Xraw, ioctl_evdev-Xverbose, ioctl_evdev-v-Xabbrev,
+       ioctl_evdev-v-Xraw, ioctl_evdev-v-Xverbose.
+       * tests/.gitignore: Likewise.
+
+2019-09-24  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       ioctl: do not print comments twice in -Xverbose.
+       Figure out whether the ioctl code is decoded inside a comment and adjust
+       printflags/printxval calls accordingly.
+
+       * ioctl.c (ioctl_print_code, evdev_decode_number): Add abbrev variable,
+       set it to true if xlat style is not XLAT_STYLE_VERBOSE, do not provide
+       dflt and set xlat style to XLAT_STYLE_ABBREV in printflags/printxval
+       calls (that are now changed to printflags_ex/printxval_ex to accomodate
+       the change).
+
+2019-09-24  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       tests/ioctl_evdev-success: rewrite ABS_MT check.
+       Use null-terminating array instead of providing array size in the first
+       element.
+
+       * tests/ioctl_evdev-success.c (print_mtslots, main): Update
+       mtslots_str/invalid_mtslot_str array usage.
+
+2019-09-24  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       tests: add xlat verbosity support to printxval.
+       * tests/Makefile.am (libtests_a_SOURCES): Remove printxval.c, add
+       printxval-Xabbrev.c, printxval-Xraw.c, and printxval-Xverbose.c.
+       (EXTRA_DIST): Add printxval.c.
+       * tests/printxval.c [!XLAT_RAW] (lookup_xlat): New function.
+       (printxval): Wrap in XLAT_NAME.
+       (sprintxlat, sprintxval): New functions.
+       * tests/printxval-Xabbrev.c: New file.
+       * tests/printxval-Xraw.c: Likewise.
+       * tests/printxval-Xverbose.c: Likewise.
+       * tests/tests.h (printxval): Remove declaration.
+       (printxval_abbrev, printxval_raw, printxval_verbose, sprintxlat_abbrev,
+       sprintxlat_raw, sprintxlat_verbose, sprintxval_abbrev, sprintxval_raw,
+       sprintxval_verbose): New declarations.
+       (printxval, sprintxlat, sprintxval): New macros, defined based on values
+       of XLAT_RAW amd XLAT_VERBOSE macros.
+       * tests/ioprio.c: Simplify the printing code since printxval now has
+       xlat verbosity support.
+
+2019-09-24  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       tests/tests.h: add XLAT_STR macro.
+       XLAT_STR allows describing expected output succintly in some simple
+       cases.
+
+       * tests/tests.h (XLAT_STR): New macro.
+
+2019-09-24  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       Add PAF_ARRAY_TRUNCATED flag for print_array_ex.
+       PAF_ARRAY_TRUNCATED allows enforcing the fact that an array
+       is truncated, which is useful for arrays in local memory that are known
+       as being truncated.
+
+       * defs.h (xlat_style_private_flag_bits): Add PAF_ARRAY_TRUNCATED_BIT.
+       (xlat_style_private_flags): Add PAF_ARRAY_TRUNCATED.
+       * util.c (print_array_ex): Handle PAF_ARRAY_TRUNCATED in flags.
+
+2019-09-24  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       Add support for printing local arrays to print_array.
+       * defs.h (print_array_ex): Describe parameters.
+       (print_local_array): A wrapper for printing arrays in local memory
+       via print_array_ex.
+       * util.c (print_array_ex): Handle case of NULL tfetch_mem_func by
+       printing elements of array in local memory pointed by start_addr
+       parameter.
+
+       tests: move ioctl_evdev-v binary to pure_executables.list.
+       * tests/Makefile.am (check_PROGRAMS): Move ioctl_evdev-v ...
+       * tests/pure_executables.list: ... here.
+
+       tests: implement ioctl_evdev-success-v.test via ioctl_evdev-success.test
+       * tests/ioctl_evdev-success-v.test: Remove.
+       * tests/Makefile.am (DECODER_TESTS): Remove ioctl_evdev-success-v.test.
+       * tests/gen_tests.in: Add ioctl_evdev-success-v as a wrapper for
+       ioctl_evdev-success.test.
+       * tests/ioctl_evdev-success.test: Save "$args" to $prog, increase -a
+       parameter value to 26 columns, inject "$@" into run_strace arguments,
+       call $prog instead of axplicit program name.
+
+2019-09-24  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       riscv64: remove mpers support.
+       There is no riscv32 Linux support in Linux mainline,
+       and no compat support in riscv64 as well.
+
+       * linux/riscv64/arch_defs_.h: Remove.
+       * linux/riscv64/ioctls_arch1.h: Likewise.
+       * linux/riscv64/ioctls_inc1.h: Likewise.
+       * linux/riscv64/syscallent1.h: Likewise.
+       * Makefile.am (EXTRA_DIST): Remove them.
+       * configure.ac (st_MPERS([m32])): Remove riscv64.
+       * strace.1.in (.SH "MULTIPLE PERSONALITY SUPPORT"): Remove RISC-V
+       from the list.
+
+       Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2019-09-23  Dmitry V. Levin  <ldv@altlinux.org>
+
+       riscv: rename to riscv64.
+       The only currently supported RISC-V architecture is the 64-bit RISC-V.
+       As the generic name we use causes confusion [1], rename it to riscv64.
+
+       [1] https://lists.strace.io/pipermail/strace-devel/2019-August/009057.html
+
+       * Makefile.am (EXTRA_DIST): Rename linux/riscv to linux/riscv64.
+       * configure.ac: Rename riscv to riscv64, RISCV to RISCV64.
+       * linux/riscv: Rename to linux/riscv64.
+       * riscv.c: Rename RISCV to RISCV64.
+       * tests/options-syntax.test: Rename riscv to riscv64.
+       * tests/qualify_personality.sh: Likewise.
+       * tests/strace-V.test: Likewise.
+
+2019-09-23  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       clone: implement clone3 syscall decoding.
+       * configure.ac (AC_CHECK_HEADERS): Check for linux/sched.h presence.
+       (AC_CHECK_TYPES): Check for struct clone_args in <linux/sched.h>.
+       * clone.c: Include "print_fields.h".
+       (struct strace_clone_args): New type.
+       (print_nonzero_bytes): New function.
+       (SYS_FUNC(clone3)): New decoder.
+       * linux/syscallent-common.h ([BASE_NR + 435]): Wire up clone3.
+       * NEWS: Mention this change.
+       * tests/clone3.c: New file.
+       * tests/clone3-Xabbrev.c: Likewise.
+       * tests/clone3-Xraw.c: Likewise.
+       * tests/clone3-Xverbose.c: Likewise.
+       * tests/clone3-success.c: Likewise.
+       * tests/clone3-success-Xabbrev.c: Likewise.
+       * tests/clone3-success-Xraw.c: Likewise.
+       * tests/clone3-success-Xverbose.c: Likewise.
+       * tests/clone3-success.test: New test.
+       * tests/Makefile.am (check_PROGRAMS): Add clone3-success,
+       clone3-success-Xabbrev, clone3-success-Xraw, and
+       clone3-success-Xverbose.
+       (DECODER_TESTS): Add clone3-success.test.
+       * tests/gen_tests.in (clone3, clone3-Xabbrev, clone3-Xraw,
+       clone3-Xverbose, clone3-success-Xabbrev, clone3-success-Xraw,
+       clone3-success-Xverbose): New entries.
+       * tests/pure_executables.list: Add clone3, clone3-Xabbrev, clone3-Xraw,
+       and clone3-Xverbose.
+       * tests/.gitignore: Add clone3, clone3-Xabbrev, clone3-Xraw,
+       clone3-Xverbose, clone3-success, clone3-success-Xabbrev,
+       clone3-success-Xraw, and clone3-success-Xverbose.
+
+       Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2019-09-23  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       tests/tests.h: add XLAT_KNOWN and XLAT_UNKNOWN macros.
+       XLAT_KNOWN allows describing expected output succintly in some simple
+       cases.
+
+       * tests/tests.h (XLAT_KNOWN, XLAT_UNKNOWN): New macros, define based
+       on values of XLAT_RAW and XLAT_VERBOSE macros.
+
+2019-09-23  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: fix umovestr_cached.test when process_vm_readv is not implemented
+       * tests/umovestr_cached.test: Run strace with -z option to filter out
+       failing process_vm_readv invocations.
+
+2019-09-23  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: disable umovestr_cached.test on ia64.
+       ia64 invokes extra process_vm_readv syscalls to obtain syscall
+       arguments, see linux/ia64/get_syscall_args.c for details.
+
+       * tests/umovestr_cached.test [ $STRACE_ARCH == ia64 ]: Skip.
+
+2019-09-15  Paul Chaignon  <paul.chaignon@gmail.com>
+
+       tests: fix format warnings on x32.
+       The type of __X32_SYSCALL_BIT changed from int to unsigned long by Linux
+       kernel commit v5.3-rc1-1-g45e29d119e9923ff14dfb840e3482bef1667bbfb.
+       Consequently, __NR_* macros are now defined to values of an unsigned long
+       integer type on x32.
+
+       tests/prctl-seccomp-filter-v.c (PRINT_ALLOW_SYSCALL, PRINT_DENY_SYSCALL):
+       Fix format warning.
+       tests/seccomp-filter-v.c (PRINT_ALLOW_SYSCALL, PRINT_DENY_SYSCALL):
+       Likewise.
+
+2019-09-15  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Implement memory caching for umove* functions.
+       When the data to be fetched by vm_read_mem resides in a single memory
+       page, fetch the whole page and cache it.  This implementation caches
+       up to two memory pages.
+
+       * defs.h (invalidate_umove_cache): New prototype.
+       * strace.c (next_event): Call invalidate_umove_cache.
+       * ucopy.c (cached_idx, cached_raddr): New static variables.
+       (process_read_mem): New function.
+       (vm_read_mem): Use them.  Implement fetched page caching.
+       * tests/umovestr_cached.test: New test.
+       * tests/Makefile.am (MISC_TESTS): Add umovestr_cached.test.
+       * tests/umovestr_cached.c: New file.
+       * tests/pure_executables.list: Add umovestr_cached.
+       * tests/.gitignore: Likewise.
+
+2019-09-10  Gleb Fotengauer-Malinovskiy  <glebfm@altlinux.org>
+
+       Update ioctl entries from linux v5.3.
+       * linux/32/ioctls_inc_align16.h: Update from linux v5.3-rc8
+       using ioctls_gen.sh.
+       * linux/32/ioctls_inc_align32.h: Likewise.
+       * linux/32/ioctls_inc_align64.h: Likewise.
+       * linux/64/ioctls_inc.h: Likewise.
+       * linux/x32/ioctls_inc0.h: Likewise.
+       * linux/i386/ioctls_arch0.h: Likewise.
+       * linux/s390/ioctls_arch0.h: Likewise.
+       * linux/s390x/ioctls_arch0.h: Likewise.
+       * linux/x86_64/ioctls_arch0.h: Likewise.
+       * NEWS: Mention this.
+
+       maint: update for linux v5.3-rc8.
+       * maint/ioctls_sym.sh (x86_list): Add KVM_SET_PMU_EVENT_FILTER.
+
+2019-09-08  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       Rewrite printnum_{slong,ulong,ptr,kptr} using dispatch_{word,klong}size.
+       * defs.h (printnum_long_int, printnum_addr_long_int, printnum_addr_klong_int):
+       Remove declaration.
+       (printnum_slong, printnum_ulong): Implement unconditionally using
+       dispatch_wordsize and opt_wordsize for the last argument.
+       (printnum_ptr): Implement unconditionally using dispatch_wordsize.
+       (printnum_kptr): Implement unconditionally using dispatch_klongsize.
+       * util.c (printnum_long_int, printnum_addr_long_int, printnum_addr_klong_int):
+       Remove.
+
+       defs.h: introduce {opt,dispatch}_{word,klong}size.
+       * defs.h (set_personality, current_personality, current_wordsize,
+       current_klongsize, max_addr, max_kaddr): Move upwards.
+       (opt_wordsize): New macro, calls the first or the second argument
+       depending on the word size.
+       (dispatch_wordsize): New macro, calls the first or the second function
+       with the rest of macro parameters as arguments depending on the word
+       size.
+       (opt_klongsize): New macro, calls the first or the second argument
+       depending on the kernel long size.
+       (dispatch_klongsize): New macro, calls the first or the second function
+       with the rest of macro parameters as arguments depending on the kernel
+       long size.
+
+2019-09-04  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       s390: fix PRINT_UNKNOWN_TAIL_EX.
+       In the conversion of PRINT_UNKNOWN_TAIL into PRINT_UNKNOWN_TAIL_EX
+       the usage of sizeof(*(hdr_)) hasn't been replaced to (hdr_size_)
+       in all places.  Offset calculation also had to be changed.
+
+       * s390.c (PRINT_UNKNOWN_TAIL_EX): Fix addr and len arguments
+       in is_filled and print_quoted_string calls.
+
+       Fixes: v5.2-97-g210593c "s390: update sthyi decoder"
+       Reported-by: Dan Horák <dan@danny.cz>
+       Resolves: https://github.com/strace/strace/issues/108
+
+2019-09-03  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       xlat: add comment about CLONE_DETACHED to clone_flags.in.
+       It's ignored by kernel, but present in the UAPI header.
+
+       * xlat/clone_flags.in: Add a comment about CLONE_DETACHED.
+
+2019-09-03  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       clone: fix print_tls_arg on x86.
+       When strace is built for (32-bit) x86, it has HAVE_STRUCT_USER_DESC
+       and SUPPORTED_PERSONALITIES == 1, which led to execution of the both
+       branches.  Simplify the logic by including the SUPPORTED_PERSONALITIES
+       into the condition.
+
+       * clone.c (print_tls_arg): Include SUPPORTED_PERSONALITIES into the "if"
+       condition.
+
+2019-09-01  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       s390: update sthyi decoder.
+       Sync up with the description[1].
+
+       [1] https://www.ibm.com/support/knowledgecenter/SSB27U_6.4.0/com.ibm.zvm.v640.hcpb4/hcpb4sth.htm
+
+       * s390.c (struct sthyi_machine): Add fields reserved_1__, infmplnm;
+       update comment for the infmval1 field; update the related static_assert.
+       (struct sthyi_partition): Update infpflg1 comment; update infpval1
+       comment; add infpplnm field; update the related static_assert.
+       (struct sthyi_hypervisor): Update infyflg1 field comment; add
+       infyinsf and infyautf fields; update the related static_assert.
+       (CHECK_SIZE_EX): Rename from CHECK_SIZE; add min_size_ argument, check size_
+       against it.
+       (CHECK_SIZE): New macro, a wrapper for CHECK_SIZE_EX.
+       (PRINT_UNKNOWN_TAIL_EX): Rename from PRINT_UNKNOWN_TAIL, add hdr_size_
+       argument.
+       (PRINT_UNKNOWN_TAIL): New macro, a wrapper for PRINT_UNKNOWN_TAIL_EX.
+       (print_sthyi_machine): New local variable last_decoded; use
+       CHECK_SIZE_EX instead of CHECK_SIZE to check against the initial value
+       of last_decoded; decode reserved_1__ and infmplnm fields if the returned
+       size indicates that they are present; use PRINT_UNKNOWN_TAIL_EX for
+       printing structure's tail.
+       (print_sthyi_partition): New local variable last_decoded; use
+       CHECK_SIZE_EX instead of CHECK_SIZE to check against the initial value
+       of last_decoded; decode infpplnm field if the returned size indicates
+       that it is present; use PRINT_UNKNOWN_TAIL_EX for printing structure's
+       tail.
+       (print_funcs): New function.
+       (print_sthyi_hypervisor): New local variable last_decoded; use
+       CHECK_SIZE_EX instead of CHECK_SIZE to check against the initial value
+       of last_decoded; update infyflg1 field decoding; decode infyinsf
+       and infyautf fields if the returned size indicates that they
+       are present; use PRINT_UNKNOWN_TAIL_EX for printing structure's tail.
+       (s390_sthyi): Update specification URL.
+       * tests/s390_sthyi.c: Update expected output.
+
+2019-09-01  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       s390: replace structure size comments with static_assert's.
+       * s390.c: Add static_assert statements for compile-time check of
+       struct sthyi_hdr, struct sthyi_machine, struct sthyi_partition,
+       struct sthyi_hypervisor, and struct sthyi_guest sizes.
+
+2019-08-31  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: convert ksysent.test into a generated test.
+       * tests/ksysent.test: Remove.
+       * tests/Makefile.am (MISC_TESTS): Remove ksysent.test.
+       * tests/gen_tests.in (ksysent): New entry.
+       * ci/run-build-and-tests.sh: Replace ksysent.log with ksysent.gen.log.
+       * strace.spec.in: Likewise.
+
+2019-08-31  Paul Chaignon  <paul.chaignon@gmail.com>
+
+       Add seccomp filter syscall flag.
+       This commit adds a new syscall flag for syscall that are traced by default
+       under seccomp filter.
+
+       The syscallent changes can be reproduced with the following script:
+
+         git grep -l 'SEN(\(execv\|ipc\|socketcall\|ipc\)' |
+         xargs -r sed -i -e '/SEN(execv/ s/TP|/&TSD|/' \
+         -e '/SEN(ipc)/ s/TI/&|TSD/' -e '/SEN(socketcall)/ s/TD/&|TSD/' \
+         -e '/SEN(syscall)/ s/0,/TSD,/'
+
+       * sysent.h (TRACE_SECCOMP_DEFAULT): Define new flag.
+       * sysent_shorthand_defs.h (TSD): Define new flag shorthand.
+       * linux/32/syscallent.h: Add TSD flag.
+       * linux/64/syscallent.h: Likewise.
+       * linux/alpha/syscallent.h: Likewise.
+       * linux/arm/syscallent.h: Likewise.
+       * linux/avr32/syscallent.h: Likewise.
+       * linux/bfin/syscallent.h: Likewise.
+       * linux/hppa/syscallent.h: Likewise.
+       * linux/i386/syscallent.h: Likewise.
+       * linux/ia64/syscallent.h: Likewise.
+       * linux/m68k/syscallent.h: Likewise.
+       * linux/microblaze/syscallent.h: Likewise.
+       * linux/mips/syscallent-n32.h: Likewise.
+       * linux/mips/syscallent-n64.h: Likewise.
+       * linux/mips/syscallent-o32.h: Likewise.
+       * linux/powerpc/syscallent.h: Likewise.
+       * linux/powerpc64/syscallent.h: Likewise.
+       * linux/s390/syscallent.h: Likewise.
+       * linux/s390x/syscallent.h: Likewise.
+       * linux/sh/syscallent.h: Likewise.
+       * linux/sh64/syscallent.h: Likewise.
+       * linux/sparc/syscallent.h: Likewise.
+       * linux/sparc64/syscallent.h: Likewise.
+       * linux/x32/syscallent.h: Likewise.
+       * linux/x86_64/syscallent.h: Likewise.
+       * linux/xtensa/syscallent.h: Likewise.
+
+2019-08-29  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       strace.spec: lower CentOS version requirement for pkgconfig(bluez)
+       bluez-libs-devel provides pkgconfig(bluez) and the actual headers both
+       in RHEL 6 and RHEL 7, so the version condition for enablement
+       of pkgconfig(bluez) in spec file can be lowered.  However, the package
+       in question is in the "optional" repository in RHEL, and there seems to be
+       no easy way to enable it in OBS (where this spec file is mainly used)
+       so only %centos check is actually changed for now.
+
+       * strace.spec.in: Change "0%{?centos} >= 8" to "0%{?centos} >= 6"
+       for "BuildRequires: pkgconfig(bluez)" enablement.
+
+       References: https://bugzilla.redhat.com/show_bug.cgi?id=1746885
+
+2019-08-29  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       sockaddr: properly decode sockaddr_hci addresses without hci_channel.
+       Before Linux commit v2.6.38-rc1~476^2~14^2~3^2~43^2~9,
+       struct sockaddr_hci did not contain hci_channel field.
+
+       * configure.ac (AC_CHECK_HEADERS([bluetooth/bluetooth.h])): Add check
+       for struct sockaddr_hci.hci_channel.
+       * sockaddr.c (print_sockaddr_data_bt): Decode struct sockaddr_hci
+       without hci_channel field.
+       * tests/net-sockaddr.c (check_hci): Add check for struct sockaddr_hci
+       decoding without hci_channel field; guard hci_channel with #ifdef
+       HAVE_STRUCT_SOCKADDR_HCI_HCI_CHANNEL.
+       (check_raw): Remove "len++", as 4-byte AF_BLUETOOTH socket addresses are
+       interpreted as struct sockaddr_hci without hci_channel field.
+
+2019-08-27  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       strace.1.in: try to be more clear with -e trace=class deprecation notice
+       It was reported that the current way of labelling of the percent-less
+       -e trace=class syntax variant may be confusing, as it can be read
+       as deprecation of the whole option and not specific syntax; try to be
+       more clear by moving the deprecation notices into the option
+       descriptions.
+
+       * strace.1.in (.SS Filtering): Move the deprecation notice
+       of -e trace={file,process,network,signal,ipc,desc,memory} syntax
+       to the descriptions of the respective options.
+
+       Reported-by: Alexey Gladkov <gladkov.alexey@gmail.com>
+
+2019-08-26  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       xlat: normalise fsmagic formatting.
+       For historical reasons, it was this way as there was no support for
+       explicitly defined xlat values, which is no longer the case.
+
+       The following command was used:
+
+           sed -ri \
+               -e 's/^\{ ([^]*),[[:space:]]*"([^"]*)"([[:space:]]*)\},$/\2\3\1/' \
+               -e 's/^([^\t]{14,15}\t)/\1\t/' \
+               xlat/fsmagic.in
+
+       * xlat/fsmagic.in: Normalise the formatting.
+
+2019-08-23  Rasmus Villemoes  <rasmus.villemoes@prevas.dk>
+
+       Add support for /dev/watchdog ioctls.
+       * watchdog_ioctl.c: New file.
+       * Makefile.am (strace_SOURCES): Add it.
+       * defs.h (DECL_IOCTL): Add watchdog.
+       * ioctl.c (ioctl_decode): Add 'W' case.
+       * xlat/watchdog_ioctl_cmds.in: New file.
+       * tests/ioctl_watchdog.c: New file.
+       * tests/.gitignore: Add ioctl_watchdog.
+       * tests/pure_executables.list: Likewise.
+       * tests/gen_tests.in (ioctl_watchdog): New entry.
+
+2019-08-16  Dmitry V. Levin  <ldv@altlinux.org>
+
+       umoven: use error_func_msg instead of error_msg.
+       * ucopy.c (umoven): Use error_func_msg instead of error_msg.
+
+2019-08-15  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Use perror_func_msg instead of perror_msg where appropriate.
+       * linux/aarch64/set_scno.c (arch_set_scno): Use perror_func_msg
+       instead of perror_msg.
+       * ucopy.c (umoven_peekdata, umoven, umovestr_peekdata, umovestr):
+       Likewise.
+       * upeek.c (upeek): Likewise.
+       * upoke.c (upoke): Likewise.
+
+2019-08-15  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Fix syscall tampering when PTRACE_GET_SYSCALL_INFO is in use on some architectures
+       When PTRACE_GET_SYSCALL_INFO is in use on those architectures
+       that invoke set_regs in arch_set_scno, get_regs is not called,
+       so it has to be invoked explicitly before tampering.
+
+       * linux/arc/set_scno.c (arch_set_scno): Explicitly call get_regs
+       when PTRACE_GET_SYSCALL_INFO is in use.
+       * linux/avr32/set_scno.c: Likewise.
+       * linux/csky/set_scno.c: Likewise.
+       * linux/ia64/set_scno.c: Likewise.
+       * linux/m68k/set_scno.c: Likewise.
+       * linux/metag/set_scno.c: Likewise.
+       * linux/mips/set_scno.c: Likewise.
+       * linux/nios2/set_scno.c: Likewise.
+       * linux/or1k/set_scno.c: Likewise.
+       * linux/riscv/set_scno.c: Likewise.
+       * linux/s390/set_scno.c: Likewise.
+       * linux/sparc/set_scno.c: Likewise.
+       * linux/tile/set_scno.c: Likewise.
+       * NEWS: Mention this fix.
+
+       Thanks-to: Anatoly Pugachev <matorola@gmail.com>
+       Fixes: v5.2~27 "sparc, sparc64: fix syscall tampering when PTRACE_GET_SYSCALL_INFO is in use"
+
+2019-08-15  Dmitry V. Levin  <ldv@altlinux.org>
+
+       sparc, sparc64: fix redundant get_regs invocation.
+       An explicit get_regs invocation was added to arch_set_error and
+       arch_set_success on sparc/sparc64 by commit v5.2~27 in attempt to fix
+       syscall tampering on these architectures when PTRACE_GET_SYSCALL_INFO
+       is in use.
+
+       That change, however, did not fix the bug because set_error and
+       set_success already invoke get_regs on all architectures where
+       ptrace_setregset_or_setregs is defined, this includes sparc and sparc64.
+
+       * linux/sparc/set_error.c (sparc_set_o0_psr): Do not invoke get_regs.
+       * linux/sparc64/set_error.c (sparc64_set_o0_tstate): Likewise.
+       * NEWS (5.2): Remove the statement about syscall tampering fix
+       on sparc and sparc64 when PTRACE_GET_SYSCALL_INFO is in use.
+
+2019-08-15  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       v4l2: avoid shifting left a signed number by 31 bit.
+       cppcheck warns about it with the following diagnostics:
+
+           error[shiftTooManyBitsSigned]: Shifting signed 32-bit value by 31 bits is
+           undefined behaviour
+
+       * v4l2.c [!v4l2_fourcc_be] (v4l2_fourcc_be): Shift left 1U and not 1 in
+       order to get 0x80000000.
+
+2019-08-15  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       strace.spec.in: use SPDX shortname format in License: tag.
+       Otherwise some rpm lintians complain about it:
+
+           strace.src: W: invalid-license LGPL-2.1-or-later
+           strace.src: W: invalid-license GPL-2.0-or-later
+
+       * strace.spec.in (License): Change license description from
+       "LGPL-2.1-or-later and GPL-2.0-or-later" to "LGPL-2.1+ and GPL-2.0+".
+
+2019-08-15  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Implement decoding of pidfd_open syscall.
+       ... introduced by Linux kernel commits v5.3-rc1~142^2~2
+       and v5.3-rc1~142^2~1.
+
+       * pidfd_open.c: New file.
+       * Makefile.am (strace_SOURCES): Add it.
+       * pathtrace.c (pathtrace_match_set): Add SEN_pidfd_open.
+       * linux/syscallent-common.h [BASE_NR + 434]: Wire up pidfd_open.
+       * NEWS: Mention this change.
+       * tests/pidfd_open.c: New file.
+       * tests/pidfd_open-P.c: Likewise.
+       * tests/pidfd_open-y.c: Likewise.
+       * tests/gen_tests.in (pidfd_open, pidfd_open-P, pidfd_open-y): New
+       entries.
+       * tests/pure_executables.list: Add pidfd_open, pidfd_open-P, and
+       pidfd_open-y.
+       * tests/.gitignore: Likewise.
+
+2019-08-14  Dmitry V. Levin  <ldv@altlinux.org>
+
+       xlat/gen.sh: remove #stop support.
+       There are no users of #stop directive anymore.
+
+       * xlat/gen.sh (gen_header): Remove '#stop' support.
+
+2019-08-14  Dmitry V. Levin  <ldv@altlinux.org>
+
+       xlat/skf_off: use XLAT_MACROS_ONLY instead of #stop.
+       * xlat/skf_off.in: Remove #stop.
+       * bpf_sock_filter.c: Wrap "xlat/skf_off.h" inclusion in XLAT_MACROS_ONLY.
+
+       xlat/scsi_sg_commands: use XLAT_MACROS_ONLY instead of #stop.
+       * xlat/scsi_sg_commands.in: Remove #stop.
+       * scsi.c: Wrap "xlat/scsi_sg_commands.h" inclusion in XLAT_MACROS_ONLY.
+       * tests/ioctl_scsi.c: Likewise.
+       * tests/ioctl_sg_io_v4.c: Likewise.
+
+2019-08-14  Dmitry V. Levin  <ldv@altlinux.org>
+
+       xlat: mark as value indexed those files that meet certain criteria.
+       Automatically prepend #value_indexed using the following script:
+
+       for f in xlat/*.in; do
+               awk -n 'BEGINFILE {if (FILENAME ~ /flag/) exit 1; nr=0}
+                       (nr == 0 && $1 ~ /^#/) {exit 1}
+                       $1 !~ /^[A-Z_0-9]/ {next}
+                       NF < 2 || $2 !~ /^[0-9]/ || ($2 - nr != 0 && $2 - nr != 1) {exit 1}
+                       {nr++}
+                       ENDFILE {if (nr < 2) exit 1}' "$f" &&
+               sed -i '1i#value_indexed' "$f"
+       done
+
+       * xlat/blkpg_ops.in: Prepend #value_indexed.
+       * xlat/btrfs_balance_ctl_cmds.in: Likewise.
+       * xlat/btrfs_compress_types.in: Likewise.
+       * xlat/btrfs_cont_reading_from_srcdev_mode.in: Likewise.
+       * xlat/crypto_nl_attrs.in: Likewise.
+       * xlat/dcb_commands.in: Likewise.
+       * xlat/epollctls.in: Likewise.
+       * xlat/f_owner_types.in: Likewise.
+       * xlat/fib_rule_actions.in: Likewise.
+       * xlat/futexwakecmps.in: Likewise.
+       * xlat/futexwakeops.in: Likewise.
+       * xlat/ioprio_class.in: Likewise.
+       * xlat/ioprio_who.in: Likewise.
+       * xlat/kcmp_types.in: Likewise.
+       * xlat/keyctl_commands.in: Likewise.
+       * xlat/lwtunnel_encap_types.in: Likewise.
+       * xlat/mpol_modes.in: Likewise.
+       * xlat/multicast_router_types.in: Likewise.
+       * xlat/netfilter_versions.in: Likewise.
+       * xlat/netlink_protocols.in: Likewise.
+       * xlat/netlink_types.in: Likewise.
+       * xlat/nf_acct_msg_types.in: Likewise.
+       * 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_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.
+       * xlat/nl_netfilter_subsys_ids.in: Likewise.
+       * xlat/nlmsgerr_attrs.in: Likewise.
+       * xlat/pr_cap_ambient.in: Likewise.
+       * xlat/pr_dumpable.in: Likewise.
+       * xlat/pr_mce_kill.in: Likewise.
+       * xlat/pr_mce_kill_policy.in: Likewise.
+       * xlat/pr_set_mm.in: Likewise.
+       * xlat/pr_tsc.in: Likewise.
+       * xlat/quota_formats.in: Likewise.
+       * xlat/quotatypes.in: Likewise.
+       * xlat/routing_types.in: Likewise.
+       * xlat/rtnl_addr_attrs.in: Likewise.
+       * xlat/rtnl_addrlabel_attrs.in: Likewise.
+       * xlat/rtnl_dcb_attrs.in: Likewise.
+       * xlat/rtnl_ifla_brport_attrs.in: Likewise.
+       * xlat/rtnl_ifla_events.in: Likewise.
+       * xlat/rtnl_ifla_info_attrs.in: Likewise.
+       * xlat/rtnl_ifla_port_attrs.in: Likewise.
+       * xlat/rtnl_ifla_vf_port_attrs.in: Likewise.
+       * xlat/rtnl_ifla_xdp_attrs.in: Likewise.
+       * xlat/rtnl_link_attrs.in: Likewise.
+       * xlat/rtnl_mdb_attrs.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.
+       * xlat/rtnl_neigh_attrs.in: Likewise.
+       * xlat/rtnl_neightbl_attrs.in: Likewise.
+       * xlat/rtnl_neightbl_parms_attrs.in: Likewise.
+       * xlat/rtnl_netconf_attrs.in: Likewise.
+       * xlat/rtnl_route_attrs.in: Likewise.
+       * xlat/rtnl_rta_metrics_attrs.in: Likewise.
+       * xlat/rtnl_rule_attrs.in: Likewise.
+       * xlat/rtnl_tc_action_attrs.in: Likewise.
+       * xlat/rtnl_tc_attrs.in: Likewise.
+       * xlat/rtnl_tca_stab_attrs.in: Likewise.
+       * xlat/rtnl_tca_stats_attrs.in: Likewise.
+       * xlat/s390_guarded_storage_commands.in: Likewise.
+       * xlat/s390_runtime_instr_commands.in: Likewise.
+       * xlat/seccomp_mode.in: Likewise.
+       * xlat/seccomp_ops.in: Likewise.
+       * xlat/shutdown_modes.in: Likewise.
+       * xlat/sigchld_codes.in: Likewise.
+       * xlat/sigev_value.in: Likewise.
+       * xlat/sigpoll_codes.in: Likewise.
+       * xlat/smc_link_group_roles.in: Likewise.
+       * xlat/sock_netlink_options.in: Likewise.
+       * xlat/sock_pnp_options.in: Likewise.
+       * xlat/sock_tls_options.in: Likewise.
+       * xlat/socketcalls.in: Likewise.
+       * xlat/tcp_states.in: Likewise.
+       * xlat/uring_register_opcodes.in: Likewise.
+       * tests/socketcall.c (main): Update assertion.
+
+2019-08-14  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       Replace direct usage of err_name/errnoent with print_err.
+       Introduce print_err function that prints error number respecting current
+       xlat verbosity settings, and switch err_name/errnoent callers to use
+       this new function instead.
+
+       * defs.h (err_name): Remove.
+       (print_err): New declaration.
+       * print_fields.h (PRINT_FIELD_ERR_D, PRINT_FIELD_ERR_U): New macros.
+       * syscall.c (err_name): Add static qualifier, change argument type
+       to uint64_t.
+       (print_err): New function.
+       * keyctl.c (keyctl_reject_key): Use print_err for printing error
+       argument.
+       * net.c (print_get_error): Use print_err for printing err.
+       * numa.c (print_status): Use print_err for printing errno.
+       * netlink.c: Include "print_fields.h".
+       (decode_nlmsgerr): Use PRINT_FIELD_ERR_D for printing errno field.
+       * printsiginfo.c: Include "print_fields.h".
+       (print_si_info): Use PRINT_FIELD_ERR_U for printing si_errno field.
+       * ptrace_syscall_info.c (print_ptrace_syscall_info): Use
+       PRINT_FIELD_ERR_D for printing info.exit.rval.
+       * tests/pidfd_send_signal.c (main): Update expected output.
+       * tests/ptrace.c (main): Likewise.
+
+       Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2019-08-13  Dmitry V. Levin  <ldv@altlinux.org>
+
+       netlink_unix_diag: implement UDIAG_SHOW_UID/UNIX_DIAG_UID decoding.
+       ... introduced by Linux kernel commit v5.3-rc1~140^2~467.
+
+       * linux/unix_diag.h (UDIAG_SHOW_UID, UNIX_DIAG_FIRST_UNUSED): New macro
+       constants.
+       (UNIX_DIAG_UID): New enum constant.
+       * xlat/unix_diag_attrs.in: Add UNIX_DIAG_UID.
+       * xlat/unix_diag_show.in: Add UDIAG_SHOW_UID.
+       * netlink_unix_diag.c (unix_diag_msg_nla_decoders): Handle
+       UNIX_DIAG_UID.
+       * NEWS: Mention this.
+       * tests/nlattr.c (test_nlattr, test_nla_type): Replace
+       UNIX_DIAG_SHUTDOWN + 1 with UNIX_DIAG_FIRST_UNUSED.
+
+2019-08-13  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       netlink_route: implement RTM_{NEW,DEL,GET}CHAIN decoding.
+       * xlat/nl_route_types.in (RTM_NEWCHAIN, RTM_DELCHAIN, RTM_GETCHAIN): New
+       constants introduced by Linux kernel commit v4.19-rc1~140^2~279^2~9.
+       * netlink_route.c (route_decoders) <[RTM_NEWCHAIN - RTM_BASE],
+       [RTM_DELCHAIN - RTM_BASE], [RTM_GETCHAIN - RTM_BASE]>: Invoke
+       decode_tcmsg.
+       * NEWS: Mention this.
+
+2019-08-13  Dmitry V. Levin  <ldv@altlinux.org>
+
+       xlat: update TCP_* constants.
+       * xlat/sock_tcp_options.in (TCP_TX_DELAY): New constant introduced
+       by Linux kernel commit v5.3-rc1~140^2~269.
+       * NEWS: Mention this.
+
+       xlat: update *_MAGIC constants.
+       * xlat/fsmagic.in (Z3FOLD_MAGIC): New constant introduced
+       by Linux kernel commit v5.3-rc1~31^2~30.
+       (DMA_BUF_MAGIC): New constant introduced by Linux kernel commit
+       v5.3-rc1~22^2~20^2~42.
+       * NEWS: Mention this.
+
+       xlat: update KVM_CAP_* constants.
+       * xlat/kvm_cap.in (KVM_CAP_PMU_EVENT_FILTER): New constant introduced
+       by Linux kernel commit v5.3-rc1~115^2~5.
+       * NEWS: Mention this.
+
+       xlat: update KEYCTL_* constants.
+       * xlat/keyctl_commands.in (KEYCTL_PKEY_QUERY, KEYCTL_PKEY_ENCRYPT,
+       KEYCTL_PKEY_DECRYPT, KEYCTL_PKEY_SIGN, KEYCTL_PKEY_VERIFY): New
+       constants introduced by Linux kernel commit v4.20-rc1~29^2~20.
+       (KEYCTL_MOVE): New constant introduced by Linux kernel commit
+       v5.3-rc1~189^2~3.
+       (KEYCTL_CAPABILITIES): New constant introduced by Linux kernel commit
+       v5.3-rc1~189^2.
+       * NEWS: Mention this.
+
+       xlat: update BPF_* constants.
+       * xlat/bpf_attach_type.in (BPF_CGROUP_GETSOCKOPT,
+       BPF_CGROUP_SETSOCKOPT): New constants introduced by Linux kernel commit
+       v5.3-rc1~140^2~65^2~8^2~8.
+       * xlat/bpf_prog_flags.in (BPF_F_TEST_RND_HI32): New constant
+       introduced by Linux kernel commit v5.3-rc1~140^2~371^2~28^2~12.
+       * xlat/bpf_prog_types.in (BPF_PROG_TYPE_CGROUP_SOCKOPT): New constant
+       introduced by Linux kernel commit v5.3-rc1~140^2~65^2~8^2~8.
+       * NEWS: Mention this.
+       * tests/bpf.c (print_BPF_PROG_LOAD_attr3, print_BPF_PROG_LOAD_attr4,
+       BPF_PROG_LOAD_checks, BPF_PROG_QUERY_checks): Update expected output.
+       * tests/kernel_version.c (print_bpf_attr, main): Likewise.
+
+       xlat: update XDP_* constants.
+       * xlat/sock_xdp_options.in (XDP_OPTIONS): New constant introduced
+       by Linux kernel commit v5.3-rc1~140^2~65^2~9^2~13.
+
+       xlat: update ETH_* constants.
+       * xlat/ethernet_protocols.in (ETH_P_LLDP): New constant introduced
+       by Linux kernel commit v5.3-rc1~140^2~329^2~6.
+
+2019-08-11  Dmitry V. Levin  <ldv@altlinux.org>
+
+       xlat: update SO_* constants.
+       * xlat/sock_options.in (SO_BINDTOIFINDEX): New constant introduced
+       by Linux commit v5.1-rc1~178^2~508.
+       (SO_RCVTIMEO_NEW, SO_SNDTIMEO_NEW): New constants introduced by Linux
+       commit v5.1-rc1~178^2~363^2.
+       (SO_DETACH_REUSEPORT_BPF): New constant introduced by Linux commit
+       v5.3-rc1~140^2~179^2~12.
+
+       * xlat/setsock_options.in: Regenerate using maint/gen_xlat_defs.sh.
+
+2019-08-11  Dmitry V. Levin  <ldv@altlinux.org>
+
+       xlat: provide fallback definition for MAP_UNINITIALIZED.
+       Linux commit v5.3-rc1~65^2~86 fixed the definition of MAP_UNINITIALIZED
+       flag that used to depend on CONFIG_MMAP_ALLOW_UNINITIALIZED.
+
+       * xlat/mmap_flags.in (MAP_UNINITIALIZED): Add fallback definition.
+
+2019-08-08  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       count: add ability to sort on errors field.
+       For completeness.
+
+       * count.c (error_cmp): New function.
+       (set_sortby): Add sort keys for errors field.
+       * strace.1.in (.SH OPTIONS) <-S>: Document it.
+       * strace.c (usage): Likewise.
+       * tests/strace-S.test: Check it.
+
+       Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2019-08-06  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       count: provide alternative names for sorting options.
+       as some might be easier to remember than others.
+
+       * count.c (set_sortby): Add aliases for the existing sorting options.
+       * strace.1.in (.SH OPTIONS) <-S>: Document new aliases.
+       * tests/strace-S.test: Check new sort keys.
+
+       Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2019-08-06  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       count: rewrite sort function selection using a table.
+       * count.c (set_sortby): Replace nested if's with iteration over a table.
+
+       Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2019-08-06  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: extend -S option check.
+       * tests/strace-S.test: Check default sorting method and "-S time".
+
+2019-08-06  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       syscall: track syscall system time a bit more explicitly.
+       Before, it relied on implicit assumptions that syscall-exit event is
+       right the next one after syscall-enter.  Also, there's some additional
+       debugging output that might help someone someday.
+
+       * count.c (count_syscall): Calculate system time as difference of tcp's
+       stime and ltime.
+       * defs.h (struct tcb): Add ltime, atime fields, remove dtime.
+       * strace.c (droptcb): Print total system time spent by a tcb.
+       (startup_tcb): Store initial system time in atime.
+       (next_event): Update stime directly.
+       * syscall.c (syscall_entering_finish): Store current system time in
+       tcb's ltime field.
+       (syscall_exiting_finish): Likewise.
+
+2019-08-06  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       count: substract overhead per call.
+       * count.c (zero_ts): New variable.
+       (count_syscall): Calculate the spent time in the wts variable, then add
+       it to cc->time.
+       (call_summary_pers): Do not perform overhead correction.
+
+2019-08-06  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       util: add ts_min and ts_max.
+       * defs.h (ts_min, ts_max): New declarations.
+       * util.c (ts_min, ts_max): New functions.
+
+       Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2019-08-06  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       count: use parse_ts for parsing overhead value.
+       * count.c (set_overhead): Change argument type to const char *, call
+       parse_ts to parse it and set to overhead.
+       * defs.h (set_overhead): Update declaration.
+       * strace.c: (init) <case 'O'>: do not parse argument, pass optarg to
+       set_overhead call.
+       * tests/count.test (GENERIC, WALLCLOCK, WALLCLOCK1, HALFCLOCK): New
+       variables with expected patterns.
+       Add checks for the new -O syntax.
+
+       delay: use parse_ts for parsing delay value.
+       * delay.c (fill_delay_data): Change intval argument to struct timespec
+       *val, assign val to ts.
+       * delay.h (fill_delay_data): Update function declaration.
+       * filter_qualify.c (parse_delay_token): Parse input with parse_ts,
+       supply the resulting struct timespec to fill_delay_data.
+       * tests/delay.c (check_): New function for providing diagnostic in case
+       of check failure.
+       (check_delay): Use it.
+       * tests/delay.test: Check new delay syntax.
+
+       util.c: add parse_ts.
+       * defs.h (parse_ts): New declaration.
+       * util.c (parse_ts): New function.
+
+2019-08-06  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       count: fix types in sorting comparison callbacks.
+       * count.c (time_cmp. syscall_cmp): Change arguments type
+       to "const void *", change indices cast type to "unsigned int *".
+       (count cmp): Likewise.  Change count variables type to unsigned int.
+       (sortfun): Specify types of arguments.
+
+       Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2019-08-05  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       v4l2: improve control ID printing.
+       Control ID space is hierarchical, so, higher bits provide information
+       about control class.
+
+       * v4l2.c (print_v4l2_cid): New function.
+       (print_v4l2_control): Use print_v4l2_cid for printing control ID field.
+       * tests/ioctl_v4l2.c: Add checks for control ID printing.
+
+2019-08-05  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       tests: add syslog-success test.
+       * tests/.gitignore: Add syslog-success
+       * tests/Makefile.am (check_PROGRAMS): Likewise.
+       (DECODER_TESTS): Add syslog-success.test.
+       * tests/syslog-success.c: New file.
+       * tests/syslog-success.test: New test.
+       * tests/syslog.c: Add support for running under syscall retval
+       injection, add checks.
+
+       syslog: decode log level in SYSLOG_ACTION_CONSOLE_LEVEL command.
+       * xlat/syslog_console_levels.in: New file.
+       * syslog.c: Include "xlat/syslog_console_levels.h".
+       (SYS_FUNC(syslog)): Add SYSLOG_ACTION_CONSOLE_LEVEL case.
+       * tests/syslog.c: Add checks.
+
+       syslog: fix argument printing.
+       * syslog.c (SYS_FUNC(syslog)): Store conversion to int of tcp->u_arg[2]
+       in len; print address using printaddr64 (as syslog doesn't use compat
+       for x32), and third argument as int (as it has this type in the syscall
+       handler).
+       * tests/syslog.c: Add checks.
+
+       syslog: do not print bufp and len for commands that ignore them.
+       * syslog.c (SYS_FUNC(syslog)): Defer printing of comma after the first
+       argument to the specific command handlers, return RVAL_DECODED without
+       additional printing for SYSLOG_ACTION_CLOSE, SYSLOG_ACTION_OPEN,
+       SYSLOG_ACTION_CLEAR, SYSLOG_ACTION_CONSOLE_OFF,
+       SYSLOG_ACTION_CONSOLE_ON, SYSLOG_ACTION_SIZE_UNREAD,
+       SYSLOG_ACTION_SIZE_BUFFER.
+       * tests/syslog.c: Add checks.
+
+       syslog: fix switch statement indentation.
+       * syslog.c (SYS_FUNC(syslog)): Decrease indentation level of case
+       clauses in the switch statement.
+
+       syslog: print syslog command with verbose style, as it is not in UAPI.
+       * syslog.c (SYS_FUNC(syslog)): Print syslog_action_type using
+       XLAT_STYLE_VERBOSE.
+       * tests/syslog.c: Update expected output.
+
+2019-08-05  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: update hppa workaround in remap_file_pages test.
+       ... to cater for the change of MAP_TYPE on hppa introduced
+       by Linux kernel commit v4.17-rc1~146^2~9.
+
+       * tests/remap_file_pages.c (main) [__hppa__ && MAP_TYPE != 0x03]
+       (MAP_TYPE_str): Define to "0x2b /* MAP_??? */".
+
+2019-08-05  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Remove AUDIT_ARCH_* fallback definitions from arch_get_personality.c files
+       Since xlat/audit_arch.h provides definitions for all AUDIT_ARCH_*
+       constants, remove their fallback definitions from other files.
+
+       * get_personality.c [SUPPORTED_PERSONALITIES > 1]: Include
+       "xlat/elf_em.h" and "xlat/audit_arch.h" under XLAT_MACROS_ONLY.
+       * linux/aarch64/arch_get_personality.c (AUDIT_ARCH_ARM): Remove.
+       * linux/powerpc64/arch_get_personality.c (AUDIT_ARCH_PPC): Remove.
+       * linux/riscv/arch_get_personality.c (AUDIT_ARCH_RISCV32): Remove.
+       * linux/s390x/arch_get_personality.c (AUDIT_ARCH_S390): Remove.
+       * linux/sparc64/arch_get_personality.c (AUDIT_ARCH_SPARC): Remove.
+       * linux/tile/arch_get_personality.c (AUDIT_ARCH_TILEGX32,
+       AUDIT_ARCH_TILEPRO): Remove.
+       * linux/x86_64/arch_get_personality.c (AUDIT_ARCH_I386): Remove.
+
+2019-08-05  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       xlat: update audit_arch.in.
+       * xlat/audit_arch.in: Add fallback definitions.
+       (__AUDIT_ARCH_CONVENTION_MIPS64_N32, __AUDIT_ARCH_64BIT,
+       __AUDIT_ARCH_LE): New macros.
+       (AUDIT_ARCH_V850): New constant.
+
+       Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2019-08-05  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       xlat: add elf_em.in.
+       For now, it's a source of fallback values for AUDIT_ARCH_* constants.
+
+       * xlat/elf_em.in: New file.
+       * xlat/audit_arch.in (AUDIT_ARCH_ARM, AUDIT_ARCH_ARMEB, AUDIT_ARCH_FRV,
+       AUDIT_ARCH_MICROBLAZE, AUDIT_ARCH_OPENRISC): Define unconditionally.
+       * printsiginfo.c: Include "xlat/elf_em.h".
+       * tests/ptrace_syscall_info.c: Likewise.
+
+       Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2019-08-04  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       strace.c: sync up strace -h message with the man page.
+       Especially synopsis.
+
+       * strace.c (usage): copy synopsis over from the man page; add "-A"
+       and "-qq" options description.
+
+2019-08-04  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       strace.1.in: add missing options to synopsis.
+       * strace.1.in (.SH SYNOPSIS): add second "-q", "-w", second "-y", "-z",
+       and "-Z" to normal call variant; add "-w", "-z" and "-Z" to syscall
+       statistics call variant.
+
+       strace.c: split lines in strace -h output to fit into 80 columns.
+       * strace.c (usage): split "-yy", "-c", "-e" options descriptions to fit
+       into 80 columns width.
+
+2019-08-04  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       strace.c: move -v to Output format section in strace -h message.
+       And also reword it into a more general and concise form in order to fit
+       into 80-columnt width.
+
+       * strace.c (usage): Move "-v" option to the "Output format" option of
+       the help message, reword its description.
+
+2019-08-04  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       strace.c: add "-k" to strace -h list of options.
+       It is mentioned in the "Output format" section below, but not in the
+       usage section.
+
+       * strace.c (usage): Define K_OPT macro with a value that depends
+       on ENABLE_STACKTRACE macro presence, use it in the help output, undefine
+       it.
+
+2019-08-04  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       strace.1.in: rewrite supported -e status options in a more compact form.
+       * strace.1.in (.SS Filtering): Rewrite -e status value options in a
+       sublist.
+
+2019-08-04  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       strace.1.in: reformat mpers support matrix table.
+       In order to make it much less wider.
+
+       * strace.1.in (.SH MULTIPLE PERSONALITY SUPPORT): Move additional text
+       in x86_64 line to notes under the table, clarify PowerPC specifics.
+
+2019-08-04  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       strace.1.in: compact small named lists.
+       And also rewrite nested .RS/.RE abomination.
+
+       * strace.1.in (.SS Output format): compact -X option values variants
+       using ".TQ".
+       (.SS Tampering): Rewrite -e inject=:when= expression variants using
+       ".TP"/".TQ".
+       (.SH MULTIPLE PERSONALITY SUPPORT): compact optional features list using
+       ".TQ".
+
+2019-08-04  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       strace.1.in: rewrite conditional parts.
+       The current implementation doesn't work as intended since in case the
+       condition is false, .ig has no effect and it results in "warning: macro
+       'end_unwind_opt' not defined".  Rewrite it into something more dumb and
+       verbose, but hopefully correct.
+
+       * strace.1.in (.SH SYNOPSYS, .SS Output format): Prepend each
+       conditional line with respective ".if" instead of trying to wrap
+       it in ".ig".
+
+2019-08-04  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       strace.1.in: add AUTHORS section.
+       * strace.1.in: Add .SH AUTHORS, refer to the CREDITS file.
+
+       strace.1.in: add a link to the current project's home page.
+       * strace.1.in (.SH SEE ALSO): Add a link to strace's home page.
+
+2019-08-04  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       strace.1.in: reorder options.
+       In an attempt to make the order more sensible.
+
+       * strace.1.in (.SH OPTIONS): Insert ".SS General" at the beginning of
+       the section; move ".SS Startup" after ".SS General"; move ".SS Tracing"
+       after ".SS Startup"; move ".SS Filtering" after ".SS Startup"; insert
+       ".SS Tampering" after ".SS Statistics"; move "-e expr" from ".SS
+       Filtering" to ".SS General"; move "-e abbrev", "-e verbose", "-e raw",
+       "-e read", "-e write", "-e kvm=vcpu" and "-v" from ".SS Filtering"
+       to ".SS Output format"; move "-e inject" and "-e fault" from
+       ".SS Filtering" to ".SS Tampering".
+
+2019-08-04  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       Treat PowerPC 64 LE as a separate architecture.
+       That seems to be the easiest way to properly handle the fact that
+       PPC64LE does not have a meaningful m32 personality.
+
+       * configure.ac: Move AC_C_BIGENDIAN before arch detection; determine
+       powerpc64/powerpc64le arch based on $ac_cv_c_bigendian value.
+       * linux/dummy.h [POWERPC64LE] (sys_oldselect): Redirect to printargs.
+       * linux/powerpc64le/arch_defs_.h: New file.
+       * linux/powerpc64le/arch_regs.c: Likewise.
+       * linux/powerpc64le/arch_rt_sigframe.c: Likewise.
+       * linux/powerpc64le/errnoent.h: Likewise.
+       * linux/powerpc64le/get_error.c: Likewise.
+       * linux/powerpc64le/get_scno.c: Likewise.
+       * linux/powerpc64le/get_syscall_args.c: Likewise.
+       * linux/powerpc64le/ioctls_arch0.h: Likewise.
+       * linux/powerpc64le/ioctls_inc0.h: Likewise.
+       * linux/powerpc64le/raw_syscall.h: Likewise.
+       * linux/powerpc64le/rt_sigframe.h: Likewise.
+       * linux/powerpc64le/set_error.c: Likewise.
+       * linux/powerpc64le/set_scno.c: Likewise.
+       * linux/powerpc64le/syscallent.h: Likewise.
+       * linux/powerpc64le/userent.h: Likewise.
+       * Makefile.am (EXTRA_DIST): Add them.
+       * tests/ipc_msg.c: Check for POWERPC64LE definition in addition to
+       POWERPC64.
+       * util.c (getllval): Add check for POWERPC64LE definition in addition to
+       POWERPC64.
+       * strace.1.in (.SH MULTIPLE PERSONALITY SUPPORT): Mention that only big
+       endian PowerPC 64 has mpers support.
+
+       Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2019-08-04  Pierre Marsais  <pierre.marsais@lse.epita.fr>
+
+       Fix invalid free in trace_close_memstream.
+       In maybe_switch_tcbs we exchange the pointers to the memstream's buffers
+       between 2 tcb, however the libc doesn't know and keeps updating the
+       tcb->memfptr as if the exchange didn't happen.  This leads to
+       unsynchronized tcb->memfptr and tcb->outf and invalid frees.
+       Adding a new indirection fixes the problem.
+
+       * stage_output.c (struct staged_output_data): New struct.
+       (strace_open_memstream, strace_close_memstream): Use it.
+       * defs.h (struct tcb): Replace real_outf, memfptr, and memfloc
+       with a pointer to struct staged_output_data.
+       * strace.c (maybe_switch_tcbs): Use it.
+       * syscall.c (print_syscall_resume): Ditto.
+
+2019-08-04  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: fix expected output for some ipc tests.
+       * tests/gen_tests.in (ipc_msgbuf-Xraw, ipc_shm, ipc_shm-Xabbrev,
+       ipc_shm-Xverbose): Adjust -a argument.
+
+2019-08-02  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: check the latest MSG_TRUNC decoding fix.
+       * tests/recv-MSG_TRUNC.c: New file.
+       * tests/recvfrom-MSG_TRUNC.c: Likewise.
+       * tests/gen_tests.in (recv-MSG_TRUNC, recvfrom-MSG_TRUNC): New entries.
+       * tests/pure_executables.list: Add recv-MSG_TRUNC and
+       recvfrom-MSG_TRUNC.
+       * tests/.gitignore: Likewise.
+
+2019-08-02  Jeremy Kerr  <jk@ozlabs.org>
+
+       net: Fix access beyond tracee buffer for MSG_TRUNC receives.
+       The recv(), recvfrom() and recvmsg() calls allow a MSG_TRUNC flag, which
+       indicates that the kernel should return the available size of an
+       incoming message, rather than the received size.
+
+       When strace-ing a truncated recv(), strace will try to access a
+       return-value size area of the tracee's buffer, which may be larger than
+       the actual buffer:
+
+         $ obj/strace -e trace=recvfrom ~/tmp/recv-test
+         recvfrom(3, "\1\2\3\4\0\0\0\0", 4, MSG_TRUNC, NULL, NULL) = 8
+
+       If I add a non-readable guard page after the tracee's recv buffer, we
+       see strace failing to read the vm area:
+
+         $ obj/strace -e trace=recvfrom ~/tmp/recv-test+guard
+         recvfrom(3, obj/strace: umoven: short read (4 < 8) @0x7f0b0d7ddffc
+         0x7f0b0d7ddffc, 4, MSG_TRUNC, NULL, NULL) = 8
+
+       This change restricts the maximum read size to the size of the tracee's
+       actual buffer.
+
+       The recvmsg() handler will do the right thing by using the .iov_len
+       data, so no change is required there.
+
+       * net.c (sys_recv, sys_recvfrom): Clamp maximum sockbuf size.
+
+2019-07-24  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       Add xlat description structure.
+       Rename struct xlat to struct xlat_data and make struct xlat an xlat
+       descriptor that contains various information about xlat.
+       So far it's the type and the number of items.
+
+       As a result, xlookup/printxval now have enough information for handling
+       xlat depending on its type, so *index/*_search API is not needed any
+       longer.
+
+       * xlat.h (struct xlat_data): Rename from struct xlat.
+       (struct xlat): New type definition.
+       * xlat.c (xlat_search, printxval_sized, printxval_searchn_ex, xlat_idx,
+       printxval_indexn_ex, printxval_dispatch_ex): Remove.
+       (xlookup): Handle xlat_data based on xlat type.
+       (xlat_search_eq_or_less, xlookup_le): New functions.
+       (sprintflags_ex, printflags_ex): Update.
+       * xlat/gen.sh (gen_header): Add handling for #sorted, generate new
+       struct xlat descriptor.
+       * defs.h (arp_hardware_types_size, ethernet_protocols_size,
+       inet_protocols_size, evdev_abs_size, xlat_search, xlat_idx,
+       printxval_searchn_ex, printxval_searchn, printxval_search,
+       printxval_search_ex, printxval_indexn_ex, printxval_indexn,
+       printxval_index, printxval_index_ex, printxval_dispatch_ex,
+       printxval_dispatch): Remove.
+       (enum xlat_style_private_flag_bits): Remove PAF_INDEX_XLAT_SORTED_BIT
+       and PAF_INDEX_XLAT_VALUE_INDEXED_BIT.
+       (enum xlat_style_private_flag): Remove PAF_INDEX_XLAT_SORTED and
+       PAF_INDEX_XLAT_VALUE_INDEXED.
+       (print_array_ex): Remove index_xlat_size argument.
+       (xlookup_le): New declaration.
+       (printxval_ex): New macro.
+       * dyxlat.c (struct dyxlat): Remove used field (use xlat.size instead),
+       embed struct xlat, add pointer to struct xlat_data.
+       (MARK_END): Remove.
+       (dyxlat_alloc, dyxlat_free, dyxlat_get, dyxlat_add_pair): Update in
+       accordance with the structure changes.
+       * evdev.c (evdev_abs_size): Remove.
+       (keycode_ioctl): Use printxval instead of printxval_index.
+       (decode_bitset): Remove.
+       (decode_bitset_): Rename to decode_bitset, remove decode_nr_size and xt
+       arguments, call printxval instead of printxval_dispatch.
+       (bit_ioctl, evdev_read_ioctl): Do not pass xlat type to decode_bitset.
+       * fsconfig.c (SYS_FUNC(fsconfig)): Use printxval instead of
+       printxval_index.
+       * print_fields.h (PRINT_FIELD_XVAL_SORTED_SIZED,
+       PRINT_FIELD_XVAL_INDEX): Remove.
+       * nlattr.h (struct decode_nla_xlat_opts): Remove xlat_size and xt
+       fields.
+       * nlattr.c (decode_nla_meminfo): Do not pass
+       PAF_INDEX_XLAT_VALUE_INDEXED flag and netlink_sk_meminfo_indices size
+       in a print_array_ex call.
+       (decode_nla_xval): Call printxval_ex instead of printxval_dispatch_ex.
+       (decode_nla_ether_proto, decode_nla_ip_proto): Do not pass xlat_size and
+       xt fields in opts.
+       (decode_nla_flags): Remove XT_INDEXED unsupported warning.
+       * process.c (struct_user_offsets_data): Rename from struct_user_offsets,
+       change type to struct xlat_data[].
+       (struct_user_offsets): New xlat description.
+       (print_user_offset_addr): Rewrite using xlookup_le.
+       * util.c (print_array_ex): Remove index_xlat_size argument, simply call
+       printxval_ex for index printing.
+       * aio.c (tprint_lio_opcode): Use printxval_ex instead of
+       printxval_indexn_ex.
+       * bpf.c: Use printxval instead of printxval_index; use PRINT_FIELD_XVAL
+       instead of PRINT_FIELD_XVAL_INDEX.
+       * bpf_filter.c (print_bpf_filter_code): Use printxval instead of
+       printxval_index.
+       * ioctl.c (evdev_decode_number): Use printxval instead of
+       printxval_indexn.
+       * kvm.c (kvm_ioctl_decode_check_extension): Use printxval64 instead of
+       printxval_index.
+       (kvm_ioctl_run_attach_auxstr): Use xlookup instead of xlat_idx.
+       * net.c: Use printxval instead of printxval_search/printxval_index, use
+       printxval_ex instead of printxval_searchn_ex.
+       * netlink.c (get_fd_nl_family): Rewrite using xlat descriptor structure.
+       * netlink_packet_diag.c (decode_packet_diag_msg): Use PRINT_FIELD_XVAL
+       instead of PRINT_FIELD_XVAL_SORTED_SIZED.
+       * netlink_smc_diag.c (decode_smc_diag_shutdown): Remove ARRSZ_PAIR
+       wrapper.
+       (decode_smc_diag_fallback): Use printxval_ex instead of
+       printxval_search_ex.
+       (decode_smc_diag_msg): Use PRINT_FIELD_XVAL instead of
+       PRINT_FIELD_XVAL_INDEX.
+       * print_statfs.c (print_statfs_type): Use printxval instead of
+       printxval_search.
+       * ptrace_syscall_info.c (print_ptrace_syscall_info): Use
+       PRINT_FIELD_XVAL instead of PRINT_FIELD_XVAL_INDEX.
+       * rtnl_link.c (decode_ifla_inet6_flags, decode_ifla_inet6_agm):
+       Likewise.
+       (decode_nla_tun_type, decode_ifla_xdp_attached): Remove xlat_size,
+       xt fields.
+       (decode_ifla_inet_conf, decode_ifla_inet6_conf, decode_ifla_inet6_stats,
+       decode_ifla_inet6_icmp6_stats): Remove PAF_INDEX_XLAT_VALUE_INDEXED flag
+       and ARRSZ_PAIR wrapper in print_array_ex calls.
+       (decode_ifinfomsg): Use PRINT_FIELD_XVAL instead of
+       PRINT_FIELD_XVAL_SORTED_SIZED.
+       * rtnl_route.c (decode_nla_rt_proto): Use printxval instead of
+       printxval_search.
+       * sock.c (print_ifreq): Use PRINT_FIELD_XVAL instead of
+       PRINT_FIELD_XVAL_SORTED_SIZED.
+       * sockaddr.c (print_sockaddr_data_ll, print_sockaddr_data_bt,
+       print_sockaddr): Use printxval instead of printxval_search and
+       printxval_index.
+       * time.c (getitimer, osf_getitimer, setitimer, osf_setitimer,
+       printclockname): Use printxval instead of printxval_index.
+       (do_adjtimex): Use xlookup instead of xlat_idx.
+       * tests/btrfs.c: Update xlat handling, use struct xlat_data instead of
+       struct xlat for XLAT() arrays.
+       * tests/ioctl_block.c: Likewise.
+       * tests/ioctl_rtc.c: Likewise.
+       * tests/printflags.c: Likewise.
+       * tests/printxval.c: Likewise.
+       * tests/prlimit64.c: Likewise.
+       * tests/setrlimit.c: Likewise.
+       * tests/socketcall.c: Likewise.
+       * tests/xgetrlimit.c: Likewise.
+       * tests/xstatfsx.c: Likewise.
+       * xlat/af_packet_versions.in: Add #value_indexed.
+       * xlat/arp_hardware_types.in: Add #sorted.
+       * xlat/ax25_protocols.in: Likewise.
+       * xlat/bluetooth_l2_cid.in: Likewise.
+       * xlat/bluetooth_l2_psm.in: Likewise.
+       * xlat/ethernet_protocols.in: Likewise.
+       * xlat/evdev_ff_types.in: Likewise.
+       * xlat/fsmagic.in: Likewise.
+       * xlat/hw_breakpoint_type.in: Likewise.
+       * xlat/iffflags.in: Likewise.
+       * xlat/inet6_if_flags.in: Likewise.
+       * xlat/inet_protocols.in: Likewise.
+       * xlat/msgctl_flags.in: Likewise.
+       * xlat/perf_hw_cache_id.in: Likewise.
+       * xlat/perf_hw_cache_op_id.in: Likewise.
+       * xlat/perf_hw_cache_op_result_id.in: Likewise.
+       * xlat/perf_hw_id.in: Likewise.
+       * xlat/perf_sw_ids.in: Likewise.
+       * xlat/perf_type_id.in: Likewise.
+       * xlat/routing_protocols.in: Likewise.
+       * xlat/semctl_flags.in: Likewise.
+       * xlat/shmctl_flags.in: Likewise.
+       * xlat/smc_decl_codes.in: Likewise.
+       * xlat/sock_ax25_options.in: Likewise.
+       * xlat/sock_bluetooth_options.in: Likewise.
+       * xlat/sock_dccp_options.in: Likewise.
+       * xlat/sock_tipc_options.in: Likewise.
+       * xlat/socketlayers.in: Likewise.
+       * xlat/v4l2_control_classes.in: Likewise.
+       * xlat/v4l2_pix_fmts.in: Likewise.
+       * xlat/v4l2_sdr_fmts.in: Likewise.
+
+       Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2019-07-23  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       NEWS: retroactively mention that -z/-Z fix addresses Debian bug #176376.
+
+       xlat/v4l2_pix_fmts.in: work around V4L2_PIX_FMT_BGRA444 value change.
+       * xlat/v4l2_pix_fmts.in: Undefine V4L2_PIX_FMT_BGRA444 as it has changed
+       its value in Linux commit v5.2-rc5-403-g22be8233b34f.
+
+2019-07-18  Anatoly Pugachev  <matorola@gmail.com>
+
+       README-configure: recommend 'make -k check' instead of 'make check'
+       * maint/install.texi: Replace 'make check' with 'make -k check'.
+       * README-configure: Regenerate.
+
+2019-07-18  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       Generalise hardware address printing.
+       * defs.h [!MAX_ADDR_LEN] (MAX_ADDR_LEN): New macro.
+       (sprint_hwaddr): New declaration.
+       (print_hwaddr): New inline function, a wrapper for sprint_hwaddr.
+       * print_fields.h (PRINT_FIELD_HWADDR_SZ): New macro.
+       * print_mac.c: Include "xlat/arp_hardware_types.h" under
+       XLAT_MACROS_ONLY.
+       [!MAX_ADDR_LEN] (MAX_ADDR_LEN): Remove.
+       (sprint_hwaddr): New function.
+       * sock.c (print_ifreq) <SIOCSIFHWADDR, SIOCGIFHWADDR>: Print hardware
+       address using PRINT_FIELD_HWADDR_SZ.
+
+       open: implement sprint_open_modes using sprintflags_ex.
+       * defs.h (sprintflags_ex): Add "sep" argument.
+       (sprintflags): Pass '\0' in "sep" argument.
+       * open.c (sprint_open_modes): Use sprintflags_ex for printing
+       open_mode_flags.
+       * xlat.c (sprintflags_ex): Add "sep" argument, use it as initial
+       separator (if not nul).
+
+2019-07-16  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Consistently define __NR_* constants.
+       Include <asm/unistd.h> from "scno.h", include "scno.h" instead of
+       <asm/unistd.h>, do not include <asm/unistd.h> where "scno.h" is already
+       included.
+
+       * scno.head: Include <asm/unistd.h>.
+       * clone.c: Include "scno.h" instead of <asm/unistd.h>.
+       * syscall.c: Likewise.
+       * tests/_newselect.c: Likewise.
+       * tests/accept.c: Likewise.
+       * tests/accept_compat.h: Likewise.
+       * tests/access.c: Likewise.
+       * tests/acct.c: Likewise.
+       * tests/aio.c: Likewise.
+       * tests/alarm.c: Likewise.
+       * tests/answer.c: Likewise.
+       * tests/attach-f-p.c: Likewise.
+       * tests/brk.c: Likewise.
+       * tests/chmod.c: Likewise.
+       * tests/chown.c: Likewise.
+       * tests/chown32.c: Likewise.
+       * tests/chroot.c: Likewise.
+       * tests/clock_adjtime.c: Likewise.
+       * tests/clock_nanosleep.c: Likewise.
+       * tests/clock_xettime.c: Likewise.
+       * tests/creat.c: Likewise.
+       * tests/delay.c: Likewise.
+       * tests/delete_module.c: Likewise.
+       * tests/dev-yy.c: Likewise.
+       * tests/dup2.c: Likewise.
+       * tests/dup3.c: Likewise.
+       * tests/epoll_create.c: Likewise.
+       * tests/epoll_create1.c: Likewise.
+       * tests/epoll_ctl.c: Likewise.
+       * tests/epoll_pwait.c: Likewise.
+       * tests/epoll_wait.c: Likewise.
+       * tests/eventfd.c: Likewise.
+       * tests/faccessat.c: Likewise.
+       * tests/fadvise64.c: Likewise.
+       * tests/fadvise64_64.c: Likewise.
+       * tests/fallocate.c: Likewise.
+       * tests/fanotify_init.c: Likewise.
+       * tests/fanotify_mark.c: Likewise.
+       * tests/fchdir.c: Likewise.
+       * tests/fchmod.c: Likewise.
+       * tests/fchmodat.c: Likewise.
+       * tests/fchown.c: Likewise.
+       * tests/fchown32.c: Likewise.
+       * tests/fchownat.c: Likewise.
+       * tests/fcntl.c: Likewise.
+       * tests/fcntl64.c: Likewise.
+       * tests/fdatasync.c: Likewise.
+       * tests/file_handle.c: Likewise.
+       * tests/flock.c: Likewise.
+       * tests/fstat.c: Likewise.
+       * tests/fstat64.c: Likewise.
+       * tests/fstatat64.c: Likewise.
+       * tests/fstatfs.c: Likewise.
+       * tests/fstatfs64.c: Likewise.
+       * tests/fsync.c: Likewise.
+       * tests/ftruncate.c: Likewise.
+       * tests/ftruncate64.c: Likewise.
+       * tests/futex.c: Likewise.
+       * tests/futimesat.c: Likewise.
+       * tests/get_mempolicy.c: Likewise.
+       * tests/get_sigset_size.c: Likewise.
+       * tests/getcpu.c: Likewise.
+       * tests/getcwd.c: Likewise.
+       * tests/getdents.c: Likewise.
+       * tests/getdents64.c: Likewise.
+       * tests/getegid32.c: Likewise.
+       * tests/geteuid32.c: Likewise.
+       * tests/getgid.c: Likewise.
+       * tests/getgid32.c: Likewise.
+       * tests/getgroups.c: Likewise.
+       * tests/getgroups32.c: Likewise.
+       * tests/getpgrp.c: Likewise.
+       * tests/getpid.c: Likewise.
+       * tests/getrandom.c: Likewise.
+       * tests/getresgid.c: Likewise.
+       * tests/getresgid32.c: Likewise.
+       * tests/getresuid.c: Likewise.
+       * tests/getresuid32.c: Likewise.
+       * tests/getrlimit.c: Likewise.
+       * tests/getrusage.c: Likewise.
+       * tests/gettid.c: Likewise.
+       * tests/getuid.c: Likewise.
+       * tests/getuid32.c: Likewise.
+       * tests/getxxid.c: Likewise.
+       * tests/init_module.c: Likewise.
+       * tests/inject-nf.c: Likewise.
+       * tests/inotify.c: Likewise.
+       * tests/inotify_init1.c: Likewise.
+       * tests/ioctl_inotify.c: Likewise.
+       * tests/ioctl_loop.c: Likewise.
+       * tests/ioctl_perf.c: Likewise.
+       * tests/ioctl_uffdio.c: Likewise.
+       * tests/ioperm.c: Likewise.
+       * tests/iopl.c: Likewise.
+       * tests/ioprio.c: Likewise.
+       * tests/ipc.c: Likewise.
+       * tests/ipc_msgbuf.c: Likewise.
+       * tests/kexec_load.c: Likewise.
+       * tests/keyctl.c: Likewise.
+       * tests/kill.c: Likewise.
+       * tests/ksysent.c: Likewise.
+       * tests/lchown.c: Likewise.
+       * tests/lchown32.c: Likewise.
+       * tests/libmmsg.c: Likewise.
+       * tests/libsocketcall.c: Likewise.
+       * tests/link.c: Likewise.
+       * tests/linkat.c: Likewise.
+       * tests/llseek.c: Likewise.
+       * tests/localtime.c: Likewise.
+       * tests/lookup_dcookie.c: Likewise.
+       * tests/lseek.c: Likewise.
+       * tests/lstat.c: Likewise.
+       * tests/lstat64.c: Likewise.
+       * tests/madvise.c: Likewise.
+       * tests/migrate_pages.c: Likewise.
+       * tests/mkdir.c: Likewise.
+       * tests/mkdirat.c: Likewise.
+       * tests/mknod.c: Likewise.
+       * tests/mknodat.c: Likewise.
+       * tests/mlock.c: Likewise.
+       * tests/modify_ldt.c: Likewise.
+       * tests/move_pages.c: Likewise.
+       * tests/mq_sendrecv.c: Likewise.
+       * tests/newfstatat.c: Likewise.
+       * tests/nsyscalls.c: Likewise.
+       * tests/old_mmap.c: Likewise.
+       * tests/oldfstat.c: Likewise.
+       * tests/oldlstat.c: Likewise.
+       * tests/oldselect-efault.c: Likewise.
+       * tests/oldselect.c: Likewise.
+       * tests/oldstat.c: Likewise.
+       * tests/open.c: Likewise.
+       * tests/openat.c: Likewise.
+       * tests/osf_utimes.c: Likewise.
+       * tests/pause.c: Likewise.
+       * tests/perf_event_open.c: Likewise.
+       * tests/perf_event_open_nonverbose.c: Likewise.
+       * tests/pipe.c: Likewise.
+       * tests/pipe2.c: Likewise.
+       * tests/poll.c: Likewise.
+       * tests/ppoll.c: Likewise.
+       * tests/prctl-arg2-intptr.c: Likewise.
+       * tests/prctl-dumpable.c: Likewise.
+       * tests/prctl-no-args.c: Likewise.
+       * tests/prctl-pdeathsig.c: Likewise.
+       * tests/prctl-seccomp-filter-v.c: Likewise.
+       * tests/prctl-seccomp-strict.c: Likewise.
+       * tests/prctl-securebits.c: Likewise.
+       * tests/prctl-spec-inject.c: Likewise.
+       * tests/prctl-tid_address.c: Likewise.
+       * tests/prctl-tsc.c: Likewise.
+       * tests/prlimit64.c: Likewise.
+       * tests/process_vm_readv.c: Likewise.
+       * tests/process_vm_writev.c: Likewise.
+       * tests/pselect6.c: Likewise.
+       * tests/ptrace.c: Likewise.
+       * tests/qual_inject-error-signal.c: Likewise.
+       * tests/qual_inject-retval.c: Likewise.
+       * tests/qual_inject-signal.c: Likewise.
+       * tests/quotactl-xfs.c: Likewise.
+       * tests/quotactl.c: Likewise.
+       * tests/read-write.c: Likewise.
+       * tests/readahead.c: Likewise.
+       * tests/readdir.c: Likewise.
+       * tests/readlink.c: Likewise.
+       * tests/readlinkat.c: Likewise.
+       * tests/reboot.c: Likewise.
+       * tests/rename.c: Likewise.
+       * tests/renameat.c: Likewise.
+       * tests/request_key.c: Likewise.
+       * tests/rmdir.c: Likewise.
+       * tests/rt_sigpending.c: Likewise.
+       * tests/rt_sigprocmask.c: Likewise.
+       * tests/rt_sigsuspend.c: Likewise.
+       * tests/rt_sigtimedwait.c: Likewise.
+       * tests/rt_tgsigqueueinfo.c: Likewise.
+       * tests/s390_guarded_storage.c: Likewise.
+       * tests/s390_pci_mmio_read_write.c: Likewise.
+       * tests/s390_runtime_instr.c: Likewise.
+       * tests/s390_sthyi.c: Likewise.
+       * tests/sched_get_priority_mxx.c: Likewise.
+       * tests/sched_rr_get_interval.c: Likewise.
+       * tests/sched_xetaffinity.c: Likewise.
+       * tests/sched_xetattr.c: Likewise.
+       * tests/sched_xetparam.c: Likewise.
+       * tests/sched_xetscheduler.c: Likewise.
+       * tests/sched_yield.c: Likewise.
+       * tests/seccomp-filter-v.c: Likewise.
+       * tests/seccomp-filter.c: Likewise.
+       * tests/seccomp-strict.c: Likewise.
+       * tests/seccomp_get_action_avail.c: Likewise.
+       * tests/select.c: Likewise.
+       * tests/sendfile.c: Likewise.
+       * tests/sendfile64.c: Likewise.
+       * tests/setdomainname.c: Likewise.
+       * tests/setfsgid.c: Likewise.
+       * tests/setfsgid32.c: Likewise.
+       * tests/setfsuid.c: Likewise.
+       * tests/setfsuid32.c: Likewise.
+       * tests/setgid.c: Likewise.
+       * tests/setgid32.c: Likewise.
+       * tests/setgroups.c: Likewise.
+       * tests/setgroups32.c: Likewise.
+       * tests/sethostname.c: Likewise.
+       * tests/setns.c: Likewise.
+       * tests/setregid.c: Likewise.
+       * tests/setregid32.c: Likewise.
+       * tests/setresgid.c: Likewise.
+       * tests/setresgid32.c: Likewise.
+       * tests/setresuid.c: Likewise.
+       * tests/setresuid32.c: Likewise.
+       * tests/setreuid.c: Likewise.
+       * tests/setreuid32.c: Likewise.
+       * tests/setrlimit.c: Likewise.
+       * tests/setuid.c: Likewise.
+       * tests/setuid32.c: Likewise.
+       * tests/sigaction.c: Likewise.
+       * tests/signal.c: Likewise.
+       * tests/signalfd4.c: Likewise.
+       * tests/sigpending.c: Likewise.
+       * tests/sigprocmask.c: Likewise.
+       * tests/sigreturn.c: Likewise.
+       * tests/sigsuspend.c: Likewise.
+       * tests/socketcall.c: Likewise.
+       * tests/splice.c: Likewise.
+       * tests/stack-fcall-3.c: Likewise.
+       * tests/stat.c: Likewise.
+       * tests/stat64.c: Likewise.
+       * tests/statfs.c: Likewise.
+       * tests/statfs64.c: Likewise.
+       * tests/status-none-threads.c: Likewise.
+       * tests/status-unfinished-threads.c: Likewise.
+       * tests/statx.c: Likewise.
+       * tests/swap.c: Likewise.
+       * tests/sxetmask.c: Likewise.
+       * tests/symlink.c: Likewise.
+       * tests/symlinkat.c: Likewise.
+       * tests/sync.c: Likewise.
+       * tests/sync_file_range.c: Likewise.
+       * tests/sync_file_range2.c: Likewise.
+       * tests/syslog.c: Likewise.
+       * tests/tee.c: Likewise.
+       * tests/threads-execve.c: Likewise.
+       * tests/time.c: Likewise.
+       * tests/timer_create.c: Likewise.
+       * tests/timer_xettime.c: Likewise.
+       * tests/timerfd_xettime.c: Likewise.
+       * tests/times-fail.c: Likewise.
+       * tests/times.c: Likewise.
+       * tests/truncate.c: Likewise.
+       * tests/truncate64.c: Likewise.
+       * tests/ugetrlimit.c: Likewise.
+       * tests/umount.c: Likewise.
+       * tests/umount2.c: Likewise.
+       * tests/umoven-illptr.c: Likewise.
+       * tests/umovestr-illptr.c: Likewise.
+       * tests/uname.c: Likewise.
+       * tests/unix-pair-send-recv.c: Likewise.
+       * tests/unlink.c: Likewise.
+       * tests/unlinkat.c: Likewise.
+       * tests/unshare.c: Likewise.
+       * tests/ustat.c: Likewise.
+       * tests/utime.c: Likewise.
+       * tests/utimensat.c: Likewise.
+       * tests/utimes.c: Likewise.
+       * tests/vhangup.c: Likewise.
+       * tests/vmsplice.c: Likewise.
+       * tests/waitid.c: Likewise.
+       * tests/waitpid.c: Likewise.
+       * tests/xet_robust_list.c: Likewise.
+       * tests/xet_thread_area_x86.c: Likewise.
+       * tests/xetitimer.c: Likewise.
+       * tests/xetpgid.c: Likewise.
+       * tests/xetpriority.c: Likewise.
+       * tests/xettimeofday.c: Likewise.
+       * strace.c: Do not include <asm/unistd.h>.
+       * ucopy.c: Likewise.
+       * tests/add_key.c: Likewise.
+       * tests/aio_pgetevents.c: Likewise.
+       * tests/bpf-obj_get_info_by_fd.c: Likewise.
+       * tests/bpf.c: Likewise.
+       * tests/copy_file_range.c: Likewise.
+       * tests/execveat.c: Likewise.
+       * tests/finit_module.c: Likewise.
+       * tests/fsconfig.c: Likewise.
+       * tests/fsmount.c: Likewise.
+       * tests/fsopen.c: Likewise.
+       * tests/fspick.c: Likewise.
+       * tests/getegid.c: Likewise.
+       * tests/geteuid.c: Likewise.
+       * tests/getppid.c: Likewise.
+       * tests/inotify_init.c: Likewise.
+       * tests/io_uring_enter.c: Likewise.
+       * tests/io_uring_register.c: Likewise.
+       * tests/io_uring_setup.c: Likewise.
+       * tests/kcmp.c: Likewise.
+       * tests/kern_features.c: Likewise.
+       * tests/kernel_version.c: Likewise.
+       * tests/kexec_file_load.c: Likewise.
+       * tests/maybe_switch_current_tcp.c: Likewise.
+       * tests/mbind.c: Likewise.
+       * tests/membarrier.c: Likewise.
+       * tests/memfd_create.c: Likewise.
+       * tests/mlock2.c: Likewise.
+       * tests/move_mount.c: Likewise.
+       * tests/open_tree.c: Likewise.
+       * tests/pidfd_send_signal.c: Likewise.
+       * tests/pkey_alloc.c: Likewise.
+       * tests/pkey_free.c: Likewise.
+       * tests/pkey_mprotect.c: Likewise.
+       * tests/preadv2-pwritev2.c: Likewise.
+       * tests/ptrace_syscall_info.c: Likewise.
+       * tests/remap_file_pages.c: Likewise.
+       * tests/renameat2.c: Likewise.
+       * tests/riscv_flush_icache.c: Likewise.
+       * tests/set_mempolicy.c: Likewise.
+       * tests/test_printstrn.c: Likewise.
+       * tests/test_ucopy.c: Likewise.
+       * tests/userfaultfd.c: Likewise.
+
+2019-07-16  Dmitry V. Levin  <ldv@altlinux.org>
+
+       aarch64: remove syscall numbers range [1024...1079] from syscallent.h.
+       Remove support for decoding syscalls in range [1024...1079] on aarch64
+       as this range has never been implemented in mainline kernel releases.
+
+       * linux/aarch64/syscallent.h [1024...1079]: Remove.
+       * NEWS: Mention this change.
+
+2019-07-16  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: skip socketcall test on arm eabi.
+       arm eabi has no socketcall even if __NR_socketcall is defined.
+
+       * tests/socketcall.c: Conditionalize on !__ARM_EABI__ along with
+       __NR_socketcall.
+
+2019-07-16  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: robustify statx test.
+       Do not assume that <linux/stat.h> defines struct statx.
+
+       * configure.ac (AC_CHECK_TYPES): Check for struct statx in
+       <linux/stat.h>.
+       * tests/statx.c: Conditionalize on HAVE_STRUCT_STATX along with
+       __NR_statx.
+
+2019-07-16  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: robustify old_mmap test.
+       Do not assume that old mmap syscall is implemented in the kernel
+       when __NR_mmap is defined.
+
+       * tests/alarm.c (main): Print mmap return code using sprintrc,
+       do not invoke mprotect if mmap is not implemented.
+
+2019-07-16  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: robustify alarm test.
+       Do not assume that alarm syscall always succeeds.
+
+       * tests/alarm.c (main): Use sprintrc.
+
+2019-07-16  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       defs.h: add ability to pass style to printxval_index_ex macro.
+       So it matches its name.
+
+       * defs.h (printxval_index_ex): Add style__ macro, pass it as the 5th
+       argument to the printxval_indexn_ex call.
+
+2019-07-16  Bharath Vedartham  <linux.bhar@gmail.com>
+
+       tests: extend coverage of syslog tests.
+       The current syslog test covers only those cases where the type parameter
+       is one of SYSLOG_ACTION_READ, SYSLOG_ACTION_READ_ALL,
+       SYSLOG_ACTION_READ_CLEAR as per codecov.
+
+       Add test case to cover the default case.
+
+       * tests/syslog.c (SYSLOG_ACTION_SIZE_BUFFER): New macro.
+       (main): Check SYSLOG_ACTION_SIZE_BUFFER decoding.
+
+       Co-Authored-by: Eugene Syromyatnikov <evgsyr@gmail.com>
+
+2019-07-16  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       aio: assorted iocb decoder updates.
+       * xlat/aio_iocb_flags.in: New file.
+       * defs.h (pollflags, rwf_flags): New declarations.
+       * configure.ac (AC_CHECK_MEMBERS): Check for aio_flags and aio_rw_flags
+       fields of struct iocb.
+       * aio.c [HAVE_STRUCT_IOCB_AIO_FLAGS]: Include "xlat/aio_iocb_flags.h".
+       (AIO_RW_FLAGS_FIELD): New macro definition, defined based on the
+       presence of HAVE_STRUCT_IOCB_AIO_RW_FLAGS macro.
+       (iocb_sub): Add SUB_POLL.
+       (tprint_lio_opcode): Change IOCB_CMD_POLL subtype to SUB_POLL.
+       (print_common_flags): Conditionalize on HAVE_STRUCT_IOCB_AIO_FLAGS
+       instead of IOCB_FLAG_RESFD.  Print aio_flags using aio_iocb_flags xlat.
+       (print_iocb_header): Always print aio_data.  Print aio_rw_flags if it
+       is non-zero.  Print aio_reqprio based on the presence of
+       IOCB_FLAG_IOPRIO flag in aio_flags (use print_ioprio if it set and print
+       as a signed integer otherwise).
+       (print_iocb): Decode SUB_POLL subtype.
+       * tests/aio.c: Update expected output.
+
+       Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2019-07-16  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       ioprio: add print_ioprio function.
+       That respects xlat style settings.
+
+       * ioprio.c (print_ioprio): New function.
+       * defs.h (print_ioprio): New declaration.
+
+2019-07-15  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: serialize bpf-obj_get_info_by_fd based executables.
+       Concurrent execution of many bpf-obj_get_info_by_fd based tests may
+       lead to a temporary resource shortage that causes them to fail with
+       the following error diagnostics:
+
+               BPF_MAP_CREATE failed: Operation not permitted
+
+       Avoid this issue by serializing execution of all relevant tests.
+
+       * tests/lock_file.c: New file.
+       * tests/Makefile.am (libtests_a_SOURCES): Add lock_file.c
+       * tests/tests.h (lock_file_by_dirname): New prototype.
+       * tests/bpf-obj_get_info_by_fd.c (main): Call lock_file_by_dirname
+       to obtain an exclusive lock on bpf-obj_get_info_by_fd executable.
+
+       References: https://github.com/strace/strace/issues/74
+       References: https://github.com/strace/strace/issues/105
+
+2019-07-15  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: fix build and run on alpha with fresh kernel headers.
+       Fix tests on alpha with Linux kernel headers containing commits
+       v5.1-rc1~160^2~3^2~12 and v5.1-rc1~160^2~3^2~1.
+
+       * tests/getegid.c: Include "scno.h".
+       (main): Use sprintrc.
+       * tests/geteuid.c: Likewise.
+       * tests/getppid.c: Likewise.
+       * tests/getgid.c [__NR_getgid == __NR_getxgid]: Skip.
+       * tests/getuid.c [__NR_getuid == __NR_getxuid]: Skip.
+       * tests/getpid.c [__NR_getpid == __NR_getxpid]: Skip.
+       * tests/umount2.c (__NR_umount2): Remove.
+       (TEST_SYSCALL_NR): New macro.
+       (main): Use it instead of __NR_umount2.
+       * tests/ksysent.sed: Remove new __NR_get[gup]id aliases to traditional
+       __NR_getx[gup]id names (on alpha).
+       Prioritize __NR_umount over __NR_umount2, __NR_osf_shmat over __NR_shmat.
+       * NEWS: Mention these fixes.
+
+2019-07-15  Dmitry V. Levin  <ldv@altlinux.org>
+
+       copyright-year-gen, file-date-gen: enhance error diagnostics.
+       * copyright-year-gen: Prefix error message with the script name.
+       * file-date-gen: Likewise.  Bail out in case of invalid date.
+
+2019-07-15  Dmitry V. Levin  <ldv@altlinux.org>
+
+       configure.ac: honor exit status of commands run by m4_esyscmd.
+       If the command run by m4_esyscmd exits with non-zero exit status,
+       autom4te shall terminate.
+
+       * m4/st_esyscmd_s.m4: New file.
+       * configure.ac: Replace m4_esyscmd with st_esyscmd_s.
+
+       References: https://github.com/strace/strace/issues/105
+
+2019-07-13  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       tests: test evdev bitset decoding more thoroughly.
+       * tests/ioctl_evdev-success-v.test: Inject various values.
+       * tests/ioctl_evdev-success.test: Likewise.
+       * tests/ioctl_evdev-success.c (NUM_WORDS): New macro.
+       (struct evdev_check): Constify arg_ptr and print_arg args.
+       (invoke_test_syscall, test_evdev, print_input_absinfo, print_input_id,
+       print_mtslots): Add const qualifiers.
+       (print_getbit): Add const qualifiers, rewrite to expect trailing NULL
+       in the string array instead of leading string count.
+       (main): Set size for ev_more, ev_less, ev_zero arrays; replace leading
+       count element in ev_more_str, ev_less_str, ev_zero_str with trailing
+       NULL; replace ev_more_str and ev_less_str with ev_more_str_2/ev_less_str_2
+       and ev_more_str_3/ev_less_str_3 that differ by presence of flags that reside
+       beyond first two bytes; add static and const qualifiers where possible;
+       add key/key_sts_8/key_str_16 values; update a to provide either ev_more_str_2
+       or ev_more_str_3 and either key_str_8 or key_str_16 depending on inject_retval
+       value.
+
+2019-07-13  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       evdev: fix array size calculation in decode_bitset_
+       max_nr is in bits (as it is a number of flags), result is in bytes, and
+       the array allocation has to be in personality words.
+
+       There's still an open question, however, what to do on big-endian
+       architectures when a non-divisible-by-4 value is returned.
+
+       * evdev.c (decode_bitset_): Declare size_bits, initialise it and use it
+       later instead of size; round up size by personality's word boundary.
+
+2019-07-13  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       evdev: avoid bit vector decoding on non-successful and 0 return codes.
+       Reported by Clang.
+
+           strace/evdev.c:157:3: note: The value 0 is assigned to 'size'
+           #                size = tcp->u_rval * 8;
+           #                ^~~~~~~~~~~~~~~~~~~~~~
+           strace/evdev.c:158:2: warning: Declared variable-length array (VLA)
+           has zero size
+           #        char decoded_arg[size];
+           #        ^
+
+       * evdev.c (decode_bitset_): Bail out before decoded_arg VLA definition.
+
+2019-07-13  Chen Jingpiao  <chenjingpiao@gmail.com>
+
+       filter_qualify: export trace_set set.
+       In preparation for seccomp-assisted syscall filtering, export
+       trace_set set, which will be used to derive the BPF program.
+
+       * filter_qualify.c (trace_set): Remove static qualifier.
+       * number_set.h (trace_set): New declaration.
+
+2019-07-13  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 5.2-1.
+       * strace.spec.in: Likewise.
+
+2019-07-12  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Prepare for 5.2 release.
+       * NEWS: Update for 5.2 release.
+
+       Update .mailmap.
+       * .mailmap: Add both email addresses of Zhibin Li to avoid duplication
+       in CREDITS file.
+
+2019-07-11  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Update copyright headers.
+       Headers updated automatically using maint/update_copyright_years.sh
+       script.
+
+2019-07-11  Dmitry V. Levin  <ldv@altlinux.org>
+
+       maint/update_copyright_years.sh: take all commits into account.
+       This helps to avoid accidental shrinking of copyright years range.
+
+       * maint/update_copyright_years.sh: Take all commits into account
+       to find copyright years of the earliest and the latest commit.
+
+2019-07-11  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Fix preprocessor indentation.
+       Indent the C preprocessor directives to reflect their nesting
+       using the following script:
+
+       $ cppi -l $(git grep -El '^[[:space:]]*#[[:space:]]*(if|ifdef|ifndef|elif|else|endif|define|pragma)[[:space:]]' |grep -v '\.sh$') |while read f; do
+               cppi < "$f" > "$f".cppi; mv "$f".cppi "$f"
+       done
+
+2019-07-10  Paul Chaignon  <paul.chaignon@gmail.com>
+
+       tests: check status qualifier.
+       This change adds 8 test cases for -e status with unfinished, failed,
+       none, successful, detached, and the whole set.  The test cases for
+       failed, successful, and the whole set use chdir(2).  Threaded test cases
+       for unfinished and none rely on a child thread execve'ing the lead
+       thread.  There are additional single-threaded tests for status=none and
+       status=unfinished.  The test case for detached interrupts strace while
+       attached to a sleeping process.
+
+       * tests/status.c: New file.
+       * tests/status-all.c: Likewise.
+       * tests/status-failed.c: Likewise.
+       * tests/status-detached.expected: Likewise.
+       * tests/status-none.c: Likewise.
+       * tests/status-none-threads.c: Likewise.
+       * tests/status-successful.c: Likewise.
+       * tests/status-unfinished-threads.c: Likewise.
+       * tests/status-unfinished.c: Likewise.
+       * tests/status-detached.test: New test.
+       * tests/status-none-threads.test: Likewise.
+       * tests/status-unfinished-threads.test: Likewise.
+       * tests/tests.h (test_status_chdir): New prototype.
+       * tests/.gitignore: Add status-all, status-failed, status-none,
+       status-none-threads, status-successful, status-unfinished,
+       and status-unfinished-threads.
+       * tests/gen_tests.in: Add status-all, status-failed, status-successful,
+       status-none, and status-unfinished.
+       * tests/pure_executables.list: Likewise.
+       * tests/Makefile.am (libtests_a_SOURCES): Add status.c.
+       (check_PROGRAMS): Add status-none-threads and status-unfinished-threads.
+       (status_none_threads_LDADD, status_unfinished_threads_LDADD): New
+       variables.
+       (MISC_TESTS): Add status-detached.test, status-none-threads.test, and
+       status-unfinished-threads.test.
+       (EXTRA_DIST): Add status-detached.expected.
+
+       Co-Authored-by: Burkhard Kohl <burkhard.kohl@intel.com>
+       Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2019-07-10  Paul Chaignon  <paul.chaignon@gmail.com>
+
+       Implement -e status=set option.
+       The status qualifier enables filtering based on the return status of
+       syscalls.  -z and -Z become aliases for -e status=successful and -e
+       status=failed.  Staged output is only enabled when at least one status
+       is filtered, that is, when the set is incomplete.
+
+       * signal.c (popcount32): Move ...
+       * defs.h (popcount32): ... here.
+       (not_failing_only, failing_only): Remove.
+       * filter_qualify.c (status_set): New number_set variable.
+       (statuses): New variable for names of statuses.
+       (statusstr_to_uint, qualify_status): New functions.
+       (qual_options): Handle status qualifier.
+       * number_set.c (get_number_setbit, is_complete_set): New functions.
+       * number_set.h (is_complete_set): New prototype.
+       (status_t): New enumeration for statuses.
+       (status_set): New prototype.
+       * strace.1.in: Document new status qualifier.
+       * strace.c (not_failing_only, failing_only): Remove.
+       (droptcb): Handle status=detached option.
+       (init): Handle new status qualifier, set status_set variable on -z and -Z
+       options, warn on -zZ and -Zz, use is_complete_set.
+       (maybe_switch_tcbs): Reopen memstream after tcb switch.
+       (print_event_exit): Handle status=unfinished option.
+       * syscall.c (syscall_entering_trace): Use is_complete_set.
+       (syscall_exiting_trace): Use is_complete_set, handle status=unavailable
+       option.
+       * NEWS: Mention this change.
+
+2019-07-10  Paul Chaignon  <paul.chaignon@gmail.com>
+
+       Stage output for -z and -Z options.
+       -z and -Z options print only successful and failing syscalls respectively.
+       However, failure of syscall is only known after syscall return.  Thus, we
+       end up with something like this on, e.g., ENOENT:
+
+         open("does_not_exist", O_RDONLY <unfinished ...>
+
+       whereas the intended result is that the open(...) line is not shown at all.
+
+       This change fixes this issue using open_memstream.  When either the -z or
+       the -Z option is used, the output is staged in memory (using
+       open_memstream) until we know the syscall return status.  If the
+       open_memstream function is not available, these new options error out.
+
+       Document -z and -Z options as new features since they have never worked
+       properly before and were undocumented since commit v4.4.95~21.
+
+       * stage_output.c: New file.
+       * Makefile.am (strace_SOURCES): Add it.
+       * configure.ac (AC_CHECK_FUNCS): Add open_memstream.
+       * defs.h (struct tcb): Add real_outf, memfptr, and memfloc fields for
+       memstream.
+       (strace_open_memstream, strace_close_memstream): New prototypes.
+       * strace.1.in: Document -z and -Z options.
+       * strace.c (usage): Mention -z and -Z options.
+       (init): Error on -z and -Z options if open_memstream if unavailable.
+       (maybe_switch_tcbs): Handle switch of memstream between tcbs.
+       (printleader): Avoid marking staged syscalls as unfinished.
+       * syscall.c (syscall_entering_trace): Open memstream.
+       (syscall_exiting_trace): Filter failed syscalls if failing_only is set,
+       handle raw(tcp) case.
+       (print_syscall_resume): Avoid marking staged syscalls as resumed.
+       * NEWS: Mention this change.
+
+       Resolves: https://github.com/strace/strace/issues/49
+       Resolves: https://github.com/strace/strace/issues/50
+       Co-Authored-by: Burkhard Kohl <burkhard.kohl@intel.com>
+
+2019-07-10  Paul Chaignon  <paul.chaignon@gmail.com>
+
+       Add -Z option to print only failing syscalls.
+       Existing -z option prints only successful syscalls.
+       This change adds a -Z option to print only failing syscalls.
+
+       Both options will start to behave properly with the subsequent commit.
+
+       * strace.c (init): Handle new -Z option.
+       * defs.h (failing_only): New prototype.
+       * syscall.c (failing_only): New variable.
+       (syscall_exiting_trace): Ignore failed syscalls if failing_only is set.
+
+       References: https://github.com/strace/strace/issues/50
+       Co-Authored-by: Burkhard Kohl <burkhard.kohl@intel.com>
+
+2019-07-10  Dmitry V. Levin  <ldv@altlinux.org>
+
+       syscall.c: rename ptrace_get_syscall_info to strace_get_syscall_info.
+       ... to avoid potential conflict with future glibc versions.
+
+       * syscall.c (ptrace_get_syscall_info): Rename to
+       strace_get_syscall_info.  All callers updated.
+
+2019-07-10  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: fix build with cutting-edge glibc.
+       Fix the following compilation error:
+
+       In file included from statx.c:44:
+       xstatx.c:47:16: error: ‘struct libc_statx’ declared inside parameter list will not be visible outside of this definition or declaration [-Werror]
+
+       * tests/xstatx.c (struct statx): New forward declaration.
+
+2019-07-10  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Fix misleading stray PTRACE_EVENT_EXEC diagnostics.
+       If current_tcp is to be switched, entering(current_tcp) is irrelevant.
+
+       * strace.c (maybe_switch_tcbs): Update comment.
+       (dispatch_event) <case TE_STOP_BEFORE_EXECVE>: Invoke
+       maybe_switch_current_tcp early, skip the check for a stray
+       PTRACE_EVENT_EXEC if current_tcp was switched.
+       * tests/maybe_switch_current_tcp.c: New file.
+       * tests/pure_executables.list: Add maybe_switch_current_tcp.
+       * tests/.gitignore: Likewise.
+       * tests/gen_tests.in (maybe_switch_current_tcp): New entry.
+       * tests/Makefile.am (maybe_switch_current_tcp_LDADD): New variable.
+
+2019-07-10  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Refactor maybe_switch_tcbs.
+       Change maybe_switch_tcbs to return NULL when no switching is necessary.
+       Introduce maybe_switch_current_tcp as a thing wrapper around
+       maybe_switch_tcbs.
+
+       * strace.c (maybe_switch_current_tcp): New function.
+       (dispatch_event): Use it instead of maybe_switch_tcbs, move comments
+       and the os_release check before maybe_switch_tcbs invocation ...
+       (maybe_switch_tcbs): ... here.  Change return value to NULL
+       if no switching was performed.
+
+2019-07-09  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: robustify strace -k tests against link-time optimizer.
+       Some distributions enable by default a link-time optimizer that
+       mangles stack_fcall sample executables in a way that renders them
+       unusable for test purposes.
+
+       Robustify tests to defeat link-time optimizer.
+
+       * tests/stack-fcall.h (f0, f1, f2, f3): Add second parameter.
+       * tests/stack-fcall.c (main): Pass main as the second parameter to f0.
+       * tests/stack-fcall-0.c (f0): Add second parameter f, pass the xor of it
+       and f0 to f1.
+       * tests/stack-fcall-1.c (f1): Add second parameter f, pass the xor of it
+       and f1 to f2.
+       * tests/stack-fcall-2.c (f2): Add second parameter f, pass the xor of it
+       and f2 to f3.
+       * tests/stack-fcall-3.c: Include <asm/unistd.h>.
+       (f3): Add second parameter f, invoke __NR_gettid syscall with the xor
+       of f and f3 as its argument.
+
+2019-07-09  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       ia64: optimize syscallent table.
+       Use shuffle_scno since all valid syscall numbers start from 1024.
+
+       * linux/syscallent_base_nr.h: New file.
+       * linux/ia64/syscallent_base_nr.h: Likewise.
+       * linux/ia64/shuffle_scno.c: Likewise.
+       * Makefile.am (EXTRA_DIST): Add them.
+       * linux/ia64/syscallent.h [SYSCALLENT_BASE_NR] (BASE_NR): Define to 0.
+       * syscall.c: Include "syscallent_base_nr.h".
+       * clone.c [IA64] (ARG_STACKSIZE, ARG_PTID, ARG_CTID, ARG_TLS): Use
+       shuffle_scno.
+
+       Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2019-07-09  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       inotify: decode file descriptor returned by inotify_init.
+       * inotify.c (SYS_FUNC(inotify_init)): New function.
+       * linux/dummy.h (sys_inotify_init): Remove macro definition.
+       * tests/inotify_init.c: New file.
+       * tests/inotify_init-y.c: Likewise.
+       * tests/inotify_init1-y.c: Likewise.
+       * tests/inotify_init1.c [PRINT_PATHS]: Print inotify fd path.
+       * tests/inotify_init-y.test: New test.
+       * tests/.gitignore: Add inotify_init, inotify_init-y, inotify_init1-y.
+       * tests/pure_executables.list: Likewise.
+       * tests/gen_tests.in (inotify_init, inotify_init1-y): New tests.
+       * tests/Makefile.am (DECODER_TESTS): Add inotify_init-y.test.
+
+2019-07-08  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       rtnl_addr: decode IFA_RT_PRIORITY and IFA_TARGET_NETNSID.
+       * rtnl_addr.c (ifaddrmsg_nla_decoders): Decode IFA_RT_PRIORITY as u32,
+       decode IFA_TARGET_NETNSID as s32.
+
+2019-07-08  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       mips o32: print an error message when fetching of syscall arguments fails
+       ... instead of failing silently.
+
+       * linux/mips/get_syscall_args.c (get_syscall_args): Print an error message
+       when umoven fails.
+
+2019-07-08  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       linux/smc_diag.h: update struct smc_diag_req definition.
+       In accordance with Linux commit v4.19-rc8~22^2~17^2.
+
+       * linux/smc_diag.h (struct smc_diag_req): Use an anonymous union
+       for diag_fallback/diag_mode fields.
+
+2019-07-08  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       kvm: avoid bogus vcpu_info assignment in vcpu_register.
+       Also reformat code a bit to make nesting a bit clearer.
+
+       Reported by Clang.
+
+       * kvm.c (vcpu_register): Do not assign vcpu_alloc result to vcpu_info
+       as this value is not used afterwards in the function.
+
+2019-07-08  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       sync_file_range2: remove unneeded argn assignment.
+       clang complains about it:
+
+                argn = printllval(tcp, "%lld", argn);
+                ^      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+           sync_file_range2.c:43:2: note: Value stored to 'argn' is never read
+
+       * sync_file_range2.c (SYS_FUNC(sync_file_range2)): Do not assign
+       printllval result to argn for the second time.
+
+2019-07-08  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+       syscall.c: avoid infinite loop in subcalls parsing.
+       clang complains about it, so it might be a good reason to refactor it
+       into something more linear.
+
+       * syscall.c (syscall_entering_decode): Put syscall subcall decoding
+       before ipc/socket subcall decoding, remove the loop.
+
+2019-07-05  Dmitry V. Levin  <ldv@altlinux.org>
+
+       tests: check decoding of mode argument of mbind and set_mempolicy syscalls
+       * tests/mbind.c: Include "scno.h".
+       (errstr): New variable.
+       (k_mbind): New function.
+       (out_str): New macro.
+       (mpol_modes): New array.
+       (main): Use it and k_mbind.
+       * tests/set_mempolicy.c: Include "scno.h", do not include <errno.h>,
+       "xlat.h" and "xlat/mpol_modes.h".
+       (errstr): New variable.
+       (k_set_mempolicy): New function.
+       (out_str): New macro.
+       (mpol_modes): New array.
+       (print_nodes): Use it and k_set_mempolicy.
+       (main): Likewise.
+       * tests/mbind-Xabbrev.c: New file.
+       * tests/mbind-Xraw.c: Likewise.
+       * tests/mbind-Xverbose.c: Likewise.
+       * tests/set_mempolicy-Xabbrev.c: Likewise.
+       * tests/set_mempolicy-Xraw.c: Likewise.
+       * tests/set_mempolicy-Xverbose.c: Likewise.
+       * tests/gen_tests.in (mbind-Xabbrev, mbind-Xraw, mbind-Xverbose,
+       set_mempolicy-Xabbrev, set_mempolicy-Xraw, set_mempolicy-Xverbose):
+       New entries.
+       * tests/pure_executables.list: Add mbind-Xabbrev, mbind-Xraw,
+       mbind-Xverbose, set_mempolicy-Xabbrev, set_mempolicy-Xraw,
+       and set_mempolicy-Xverbose.
+       * tests/.gitignore: Likewise.
+
+2019-07-05  Dmitry V. Levin  <ldv@altlinux.org>
+
+       numa: enhance decoding of mode argument of mbind and set_mempolicy syscalls
+       Implement decoding of memory policy mode flags introduced by Linux
+       kernel commits v2.6.26-rc1~990 and v2.6.26-rc1~988.
+
+       * xlat/mpol_mode_flags.in: New file.
+       * numa.c: Include "xlat/mpol_mode_flags.h".
+       (print_mode): Print MPOL_MODE_FLAGS part of mode argument as flags.
+       * NEWS: Mention this.
+
+2019-07-05  Dmitry V. Levin  <ldv@altlinux.org>
+
+       numa: factor out printing of mode argument of mbind and set_mempolicy syscalls
+       This printing is going to be extended by subsequent changes.
+
+       * numa.c (print_mode): New function.
+       (SYS_FUNC(mbind), SYS_FUNC(set_mempolicy)): Use it.
+
+2019-07-04  Gleb Fotengauer-Malinovskiy  <glebfm@altlinux.org>
+
+       Update ioctl entries from linux v5.2.
+       * linux/32/ioctls_inc_align16.h: Update from linux v5.2-rc7
+       using ioctls_gen.sh.
+       * linux/32/ioctls_inc_align32.h: Likewise.
+       * linux/32/ioctls_inc_align64.h: Likewise.
+       * linux/64/ioctls_inc.h: Likewise.
+       * linux/x32/ioctls_inc0.h: Likewise.
+       * linux/aarch64/ioctls_arch0.h: Likewise.
+       * linux/arm/ioctls_arch0.h: Likewise.
+       * linux/mips/ioctls_arch0.h: Likewise.
+       * NEWS: Mention this.
+
+2019-07-04  Dmitry V. Levin  <ldv@altlinux.org>
+
+       sparc, sparc64: refactor arch_set_error and arch_set_success.
+       * linux/sparc/set_error.c (sparc_set_o0_psr): New function.
+       (arch_set_error, arch_set_success): Use it.
+       * linux/sparc64/set_error.c (sparc64_set_o0_tstate): New function.
+       (arch_set_error, arch_set_success): Use it.
+
+2019-07-04  Dmitry V. Levin  <ldv@altlinux.org>
+
+       sparc, sparc64: fix syscall tampering when PTRACE_GET_SYSCALL_INFO is in use
+       When PTRACE_GET_SYSCALL_INFO is in use on sparc, psr is not loaded,
+       so it has to be loaded explicitly before tampering.
+       Likewise, when PTRACE_GET_SYSCALL_INFO is in use on sparc64, tstate
+       is not loaded, so it has to be loaded explicitly before tampering.
+
+       * linux/sparc/set_error.c (arch_set_error, arch_set_success): Explicitly
+       call get_regs before changing psr when PTRACE_GET_SYSCALL_INFO is in use.
+       * linux/sparc64/set_error.c (arch_set_error, arch_set_success):
+       Explicitly call get_regs before changing tstate when
+       PTRACE_GET_SYSCALL_INFO is in use.
+       * NEWS: Mention this fix.
+
+2019-07-04  Dmitry V. Levin  <ldv@altlinux.org>
+
+       powerpc: skip poking CCR if it is unchanged.
+       * linux/powerpc/set_error.c (arch_set_r3_ccr): New function.
+       (arch_set_error, arch_set_success): Use it.
+
+2019-07-04  Dmitry V. Levin  <ldv@altlinux.org>
+
+       powerpc: fix syscall tampering when PTRACE_GET_SYSCALL_INFO is in use.
+       When PTRACE_GET_SYSCALL_INFO is in use, CCR is not loaded, so it has
+       to be loaded explicitly before tampering.
+
+       * linux/powerpc/set_error.c (arch_set_error, arch_set_success):
+       Explicitly load CCR before changing it when PTRACE_GET_SYSCALL_INFO
+       is in use.
+       * NEWS: Mention this fix.
+
+2019-07-03  Dmitry V. Levin  <ldv@altlinux.org>
+
+       xlat: rename mbindflags to mbind_flags.
+       The former name was not consistent with others.
+
+       * xlat/mbindflags.in: Rename to xlat/mbind_flags.in; all users updated.
+
+2019-07-03  Dmitry V. Levin  <ldv@altlinux.org>
+
+       xlat: update MPOL_F_* get_mempolicy flags.
+       * xlat/get_mempolicy_flags.in (MPOL_F_MEMS_ALLOWED): New constant
+       introduced by Linux kernel v2.6.24-rc1~1212.
+       * NEWS: Mention this.
+       * tests/get_mempolicy.c (main): Update expected output.
+
+2019-07-03  Dmitry V. Levin  <ldv@altlinux.org>
+
+       xlat: rename mempolicyflags to get_mempolicy_flags.
+       The former name was ambiguous.
+
+       * xlat/mempolicyflags.in: Rename to xlat/get_mempolicy_flags.in;
+       all users updated.
+
+2019-07-03  Dmitry V. Levin  <ldv@altlinux.org>
+
+       xlat: rename policies to mpol_modes.
+       The former name was too vague.
+
+       * xlat/policies.in: Rename to xlat/mpol_modes.in; all users updated.
+
+2019-07-03  Michal Sekletar  <msekleta@redhat.com>
+
+       xlat: add MPOL_LOCAL constant.
+       * xlat/policies.in (MPOL_LOCAL): New constant introduced by Linux kernel
+       commit v3.8-rc1~92^2~33.
+
+       Resolves: https://github.com/strace/strace/pull/102
+
+2019-07-03  Zhibin Li  <haoyouab@gmail.com>
+
+       ioctl: remove redundant _IOC_NR.
+       * ioctl.c (evdev_decode_number): Replace _IOC_NR(nr) with nr
+       as the latter is defined to _IOC_NR(code).
+
+       Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2019-07-02  Dmitry V. Levin  <ldv@altlinux.org>
+
+       bpf: add support for new fields in BPF_PROG_TEST_RUN.
+       * bpf_attr.h (struct BPF_PROG_TEST_RUN_struct): Add ctx_size_in,
+       ctx_size_out, ctx_in, and ctx_out fields.
+       * bpf.c (BEGIN_BPF_CMD_DECODER(BPF_PROG_TEST_RUN)): Decode these fields
+       introduced by Linux kernel commit v5.2-rc1~133^2~193^2~6.
+       * tests/bpf.c (BPF_PROG_TEST_RUN_checks): Check it.
+
+2019-07-02  Dmitry V. Levin  <ldv@altlinux.org>
+
+       bpf: implement decoding of BPF_MAP_FREEZE command.
+       BPF_MAP_FREEZE command was introduced by Linux commit
+       v5.2-rc1~133^2~193^2~12^2~12.
+
+       * bpf_attr.h (struct BPF_MAP_FREEZE_struct): New type.
+       (BPF_MAP_FREEZE_struct_size, expected_BPF_MAP_FREEZE_struct_size): New
+       macros.
+       * bpf.c (BEGIN_BPF_CMD_DECODER(BPF_MAP_FREEZE)): New bpf command
+       decoder.
+       (SYS_FUNC(bpf)) <bpf_cmd_decoders[]>: Add BPF_CMD_ENTRY(BPF_MAP_FREEZE).
+       * NEWS: Mention this.
+       * tests/bpf.c (union bpf_attr_data): Add
+       BPF_ATTR_DATA_FIELD(BPF_MAP_FREEZE).
+       (BPF_MAP_FREEZE_checks): New checks array.
+       (main) <checks>: Add CHK(BPF_MAP_FREEZE).
+
+2019-07-01  Dmitry V. Levin  <ldv@altlinux.org>
+
+       xlat: update BPF_* constants.
+       * xlat/bpf_attach_type.in (BPF_CGROUP_SYSCTL): New constant introduced
+       by Linux kernel commit v5.2-rc1~133^2~132^2~39^2~19.
+       (BPF_CGROUP_UDP4_RECVMSG, BPF_CGROUP_UDP6_RECVMSG): New constants
+       introduced by Linux kernel commit v5.2-rc6~33^2~44^2^2~5.
+       * xlat/bpf_commands.in (BPF_MAP_FREEZE): New constant introduced
+       by Linux kernel commit v5.2-rc1~133^2~193^2~12^2~12.
+       * xlat/bpf_map_flags.in (BPF_F_RDONLY_PROG, BPF_F_WRONLY_PROG): New
+       constants introduced by Linux kernel commit
+       v5.2-rc1~133^2~193^2~12^2~13.
+       * xlat/bpf_map_types.in (BPF_MAP_TYPE_SK_STORAGE): New constant
+       introduced by Linux kernel commit v5.2-rc1~133^2~80^2^2~6.
+       * xlat/bpf_prog_types.in (BPF_PROG_TYPE_CGROUP_SYSCTL): New constant
+       introduced by Linux kernel commit v5.2-rc1~133^2~132^2~39^2~19.
+       (BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE): New constant introduced
+       by Linux kernel commit v5.2-rc1~133^2~80^2~1^2~4.
+       * NEWS: Mention this.
+       * tests/bpf.c (BPF_MAP_CREATE_checks, BPF_PROG_LOAD_checks,
+       BPF_PROG_QUERY_checks): Update.
+       * tests/kernel_version.c (print_bpf_attr): Update.
+
+2019-06-29  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Implement decoding of fspick syscall.
+       ... introduced by Linux kernel commits v5.2-rc1~141^2~1,
+       v5.2-rc1~20^2~1, and v5.2-rc1~20^2.
+
+       * fspick.c: New file.
+       * Makefile.am (strace_SOURCES): Add it.
+       * pathtrace.c (pathtrace_match_set): Add SEN_fspick.
+       * xlat/fspick_flags.in: New file.
+       * linux/syscallent-common.h [BASE_NR + 433]: Wire up fspick.
+       * NEWS: Mention this change.
+       * tests/fspick.c: New file.
+       * tests/fspick-P.c: Likewise.
+       * tests/gen_tests.in (fspick, fspick-P): New entries.
+       * tests/pure_executables.list: Add fspick and fspick-P.
+       * tests/.gitignore: Likewise.
+
+2019-06-29  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Implement decoding of fsmount syscall.
+       ... introduced by Linux kernel commits v5.2-rc1~141^2~2,
+       v5.2-rc1~20^2~1, and v5.2-rc1~20^2.
+
+       * fsmount.c: New file.
+       * Makefile.am (strace_SOURCES): Add it.
+       * pathtrace.c (pathtrace_match_set): Add SEN_fsmount.
+       * xlat/fsmount_cmds.in: New file.
+       * xlat/mount_attr_atime.in: Likewise.
+       * xlat/mount_attr_flags.in: Likewise.
+       * linux/syscallent-common.h [BASE_NR + 432]: Wire up fsmount.
+       * NEWS: Mention this change.
+       * tests/fsmount.c: New file.
+       * tests/gen_tests.in (fsmount): New entry.
+       * tests/pure_executables.list: Add fsmount.
+       * tests/.gitignore: Likewise.
+
+2019-06-29  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Implement decoding of fsconfig syscall.
+       ... introduced by Linux kernel commits v5.2-rc1~141^2~3,
+       v5.2-rc1~20^2~1, and v5.2-rc1~20^2.
+
+       * fsconfig.c: New file.
+       * Makefile.am (strace_SOURCES): Add it.
+       * pathtrace.c (pathtrace_match_set): Add SEN_fsconfig.
+       * xlat/fsconfig_cmds.in: New file.
+       * linux/syscallent-common.h [BASE_NR + 431]: Wire up fsconfig.
+       * NEWS: Mention this change.
+       * tests/fsconfig.c: New file.
+       * tests/fsconfig-P.c: Likewise.
+       * tests/gen_tests.in (fsconfig, fsconfig-P): New entries.
+       * tests/pure_executables.list: Add fsconfig and fsconfig-P.
+       * tests/.gitignore: Likewise.
+
+2019-06-29  Dmitry V. Levin  <ldv@altlinux.org>
+
+       print_dirfd: do not print trailing comma.
+       It was fine to print trailing comma in print_dirfd until introduction
+       of a syscall with the last argument being a dirfd.
+       Now it's time to change print_dirfd.
+
+       * open.c (print_dirfd): Do not print comma.
+       (SYS_FUNC(open)): Print comma after print_dirfd() invocation.
+       * access.c (SYS_FUNC(faccessat)): Likewise.
+       * chmod.c (SYS_FUNC(fchmodat)): Likewise.
+       * execve.c (SYS_FUNC(execveat)): Likewise.
+       * fanotify.c (SYS_FUNC(fanotify_mark)): Likewise.
+       * fchownat.c (SYS_FUNC(fchownat)): Likewise.
+       * file_handle.c (SYS_FUNC(name_to_handle_at)): Likewise.
+       * link.c (SYS_FUNC(linkat), SYS_FUNC(unlinkat), SYS_FUNC(symlinkat)):
+       Likewise.
+       * mknod.c (SYS_FUNC(mknodat)): Likewise.
+       * move_mount.c (SYS_FUNC(move_mount)): Likewise.
+       * open_tree.c (SYS_FUNC(open_tree)): Likewise.
+       * readlink.c (SYS_FUNC(readlinkat)): Likewise.
+       * renameat.c (decode_renameat): Likewise.
+       * stat.c (SYS_FUNC(newfstatat)): Likewise.
+       * stat64.c (SYS_FUNC(fstatat64)): Likewise.
+       * statx.c (SYS_FUNC(statx)): Likewise.
+       * utimes.c (SYS_FUNC(futimesat), do_utimensat): Likewise.
+
+2019-06-29  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Implement decoding of fsopen syscall.
+       ... introduced by Linux kernel commits v5.2-rc1~141^2~5,
+       v5.2-rc1~20^2~1, and v5.2-rc1~20^2.
+
+       * fsopen.c: New file.
+       * Makefile.am (strace_SOURCES): Add it.
+       * pathtrace.c (pathtrace_match_set): Add SEN_fsopen.
+       * xlat/fsopen_flags.in: New file.
+       * linux/syscallent-common.h [BASE_NR + 430]: Wire up fsopen.
+       * NEWS: Mention this change.
+       * tests/fsopen.c: New file.
+       * tests/gen_tests.in (fsopen): New entry.
+       * tests/pure_executables.list: Add fsopen.
+       * tests/.gitignore: Likewise.
+
+2019-06-29  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Implement decoding of move_mount syscall.
+       ... introduced by Linux kernel commits v5.2-rc1~141^2~8,
+       v5.2-rc1~20^2~1, and v5.2-rc1~20^2.
+
+       * move_mount.c: New file.
+       * Makefile.am (strace_SOURCES): Add it.
+       * pathtrace.c (pathtrace_match_set): Add SEN_move_mount.
+       * xlat/move_mount_flags.in: New file.
+       * linux/syscallent-common.h [BASE_NR + 429]: Wire up move_mount.
+       * NEWS: Mention this change.
+       * tests/move_mount.c: New file.
+       * tests/move_mount-P.c: Likewise.
+       * tests/gen_tests.in (move_mount, move_mount-P): New entries.
+       * tests/pure_executables.list: Add move_mount and move_mount-P.
+       * tests/.gitignore: Likewise.
+
+2019-06-29  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Implement decoding of open_tree syscall.
+       ... introduced by Linux kernel commits v5.2-rc1~141^2~9,
+       v5.2-rc1~20^2~1, and v5.2-rc1~20^2.
+
+       * configure.ac (AC_CHECK_HEADERS): Add linux/mount.h.
+       * open_tree.c: New file.
+       * Makefile.am (strace_SOURCES): Add it.
+       * pathtrace.c (pathtrace_match_set): Add SEN_open_tree.
+       * xlat/open_tree_flags.in: New file.
+       * linux/syscallent-common.h [BASE_NR + 428]: Wire up open_tree.
+       * NEWS: Mention this change.
+       * tests/open_tree.c: New file.
+       * tests/open_tree-P.c: Likewise.
+       * tests/gen_tests.in (open_tree, open_tree-P): New entries.
+       * tests/pure_executables.list: Add open_tree and open_tree-P.
+       * tests/.gitignore: Likewise.
+
+2019-06-29  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Introduce linux/syscallent-common.h and linux/syscallent-common-32.h.
+       These files are going to be used to define syscall entries for common
+       syscalls added in Linux kernel 5.1+.
+
+       * linux/syscallent-common.h: New file.
+       * linux/syscallent-common-32.h: Likewise.
+       * Makefile.am (EXTRA_DIST): Add them.
+       (syscallent_names): Add syscallent-common.h and syscallent-common-32.h.
+       * linux/mips/.gitignore: Add syscallent-common-32-stub.h
+       and syscallent-common-stub.h.
+       * linux/mips/genstub.sh: Parametrize source directory.  Change syscall
+       name prefix to SYSCALL_NAME_PREFIX.
+       * configure.ac [MIPS]: Generate stubs for linux/syscallent-common.h
+       and linux/syscallent-common-32.h files.
+       * linux/mips/syscallent-n32.h [LINUX_MIPSN32]
+       [BASE_NR + 403..BASE_NR + 427]: Remove, include "syscallent-common-32.h"
+       and "syscallent-common.h" instead.
+       [!LINUX_MIPSN32] (SYSCALL_NAME_PREFIX): Define.
+       [!LINUX_MIPSN32]: Include "syscallent-common-32-sub.h"
+       and "syscallent-common-stub.h".
+       * linux/mips/syscallent-o32.h [LINUX_MIPSO32]
+       [BASE_NR + 403..BASE_NR + 427]: Remove, include "syscallent-common-32.h"
+       and "syscallent-common.h" instead.
+       [!LINUX_MIPSO32] (SYSCALL_NAME_PREFIX): Define.
+       [!LINUX_MIPSO32]: Include "syscallent-common-32-sub.h"
+       * linux/32/syscallent.h [403..427]: Remove, include
+       "syscallent-common-32.h" and "syscallent-common.h" instead.
+       * linux/arm/syscallent.h: Likewise.
+       * linux/hppa/syscallent.h: Likewise.
+       * linux/i386/syscallent.h: Likewise.
+       * linux/m68k/syscallent.h: Likewise.
+       * linux/microblaze/syscallent.h: Likewise.
+       * linux/powerpc/syscallent.h: Likewise.
+       * linux/s390/syscallent.h: Likewise.
+       * linux/sh/syscallent.h: Likewise.
+       * linux/sparc/syscallent.h: Likewise.
+       * linux/xtensa/syscallent.h: Likewise.
+       * linux/alpha/syscallent.h (BASE_NR): Define.
+       [534..537]: Remove, include "syscallent-common.h" instead.
+       * linux/ia64/syscallent.h [BASE_NR + 424..BASE_NR + 427]: Remove,
+       include "syscallent-common.h" instead.
+       * linux/mips/syscallent-n64.h [LINUX_MIPSN64]: Likewise.
+       [!LINUX_MIPSN64] (SYSCALL_NAME_PREFIX): Define.
+       [!LINUX_MIPSN64]: Include "syscallent-common-stub.h".
+       * linux/64/syscallent.h [424..427]: Remove, include
+       "syscallent-common.h" instead.
+       * linux/powerpc64/syscallent.h: Likewise.
+       * linux/s390x/syscallent.h: Likewise.
+       * linux/sh64/syscallent.h: Likewise.
+       * linux/sparc64/syscallent.h: Likewise.
+       * linux/x32/syscallent.h: Likewise.
+       * linux/x86_64/syscallent.h: Likewise.
+
+2019-06-29  Dmitry V. Levin  <ldv@altlinux.org>
+
+       ia64: introduce BASE_NR to syscallent initializers.
+       * linux/ia64/syscallent.h (BASE_NR): New macro.  Use it instead of 1024.
+
+2019-06-29  Dmitry V. Levin  <ldv@altlinux.org>
+
+       mips: refactor syscallent initializers.
+       Change format of designated initializers to BASE_NR + offset.
+
+       * linux/mips/syscallent-n32.h (BASE_NR): New macro.  Use it in designated
+       initializers.
+       * linux/mips/syscallent-n64.h: Likewise.
+       * linux/mips/syscallent-o32.h: Likewise.
+
+2019-06-29  Dmitry V. Levin  <ldv@altlinux.org>
+
+       xlat: update AT_* constants.
+       * xlat/at_flags.in (AT_RECURSIVE): New constant introduced
+       by Linux kernel commit v5.2-rc1~141^2~9.
+       * NEWS: Mention this.
+       * tests/linkat.c: Update expected output.
+       * tests/unlinkat.c: Update expected output.
+       * tests/utimensat.c: Update expected output.
+       * tests/xstatx.c: Update expected output.
+
+2019-06-28  Paul Chaignon  <paul.chaignon@gmail.com>
+
+       travis: Move fastest test configuration first.
+       I use Travis CI to check each patch before sending my patchsets.  Most
+       failures are simple and make all test configurations fail.  However, since
+       Travis CI runs test configurations in order and given that the first three
+       configurations are the slowest ones, it takes about twenty minutes to see
+       the failure.  Moving the fastest test configuration first would allow to
+       fail earlier.  It would become about 3x faster to fail in case of simple
+       mistakes.
+
+       * .travis.yml (CC=gcc, STACKTRACE=no): Move to first position.
+
+2019-06-22  Dmitry V. Levin  <ldv@altlinux.org>
+
+       get_os_release: tolerate malformed kernel release strings.
+       * strace.c (get_os_release): Handle malformed kernel release strings
+       gracefully.
+
+       Resolves: https://github.com/strace/strace/issues/101
+
+2019-06-20  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Implement decoding of CLONE_PIDFD flag of clone syscall.
+       * clone.c (SYS_FUNC(clone)): Print pidfd returned by the kernel
+       when CLONE_PIDFD flag is set.
+       * tests/clone-flags.c (main): Check it.
+
+2019-06-20  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Introduce printnum_fd.
+       This is going to be used to implement decoding of CLONE_PIDFD flag
+       of clone syscall.
+
+       * defs.h (printnum_fd): New prototype.
+       * util.c (printnum_fd): New function.
+
+2019-06-20  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Enhance decoding of CLONE_PARENT_SETTID flag of clone syscall.
+       * clone.c (SYS_FUNC(clone)): Print the parent_tid returned by the kernel
+       instead of its address when CLONE_PARENT_SETTID flag is set.
+       * tests/clone-flags.c (main): Check it.
+
+       clone: fix printing of zero clone flags.
+       * clone.c (SYS_FUNC(clone)): Fix printing of zero clone flags.
+       * tests/clone-flags.c (main): Check it.
+
+       clone: print read-only arguments on entering syscall.
+       * clone.c (SYS_FUNC(clone)): Print child_stack, stack_size, and flags
+       arguments on entering syscall.
+       * NEWS: Mention this change.
+
+       tests: check decoding of clone flags.
+       * tests/clone-flags.c: New file.
+       * tests/pure_executables.list: Add clone-flags.
+       * tests/.gitignore: Likewise.
+       * tests/clone-flags.test: New test.
+       * tests/Makefile.am (DECODER_TESTS): Add clone-flags.test.
+
+2019-06-18  Dmitry V. Levin  <ldv@altlinux.org>
+
+       clone: cleanup.
+       * clone.c (print_tls_arg): Use addr argument.
+
+2019-06-18  Dmitry V. Levin  <ldv@altlinux.org>
+
+       xlat: update CLONE_* constants.
+       * xlat/clone_flags.in (CLONE_IDLETASK): Remove unused flag conflicting
+       with CLONE_PIDFD.
+
+       Fixes: v5.1-8-gb43f44bca "xlat: update CLONE_* constants"
+
+2019-06-14  Paul Chaignon  <paul.chaignon@gmail.com>
+
+       Use debug_msg macro where possible.
+       * linux/alpha/get_scno.c (arch_get_scno): Use debug_msg instead of
+       open-coding it.
+       * linux/mips/get_scno.c: Likewise.
+       * linux/sh/get_scno.c: Likewise.
+
+2019-05-27  Dmitry V. Levin  <ldv@altlinux.org>
+
+       xlat: update ETH_* constants.
+       * xlat/ethernet_protocols.in (ETH_P_DSA_8021Q): New constant introduced
+       by Linux kernel commit v5.2-rc1~133^2~58^2~7.
+       * NEWS: Mention this.
+
+       xlat: update KBD_* constants.
+       * xlat/evdev_keycode.in (KEY_KBD_LAYOUT_NEXT): New constant
+       introduced by Linux kernel commit v5.2-rc1~79^2^2~7.
+       * NEWS: Mention this.
+
+       xlat: update TIPC_* constants.
+       * xlat/sock_tipc_options.in (TIPC_SOCK_RECVQ_USED): New constant
+       introduced by Linux kernel commit v5.2-rc1~133^2~143.
+       * NEWS: Mention this.
+
+       xlat: update KVM_CAP_* constants.
+       * xlat/clone_flags.in (KVM_CAP_MANUAL_DIRTY_LOG_PROTECT2): New
+       constant introduced by Linux kernel commit v5.2-rc1~17^2~11.
+       (KVM_CAP_PPC_IRQ_XIVE): New constant introduced by Linux kernel commits
+       v5.2-rc1~17^2~2^2~19 and v5.2-rc1~17^2~2.
+       (KVM_CAP_ARM_SVE): New constant introduced by Linux kernel commit
+       v5.2-rc1~17^2~1^2~31.
+       (KVM_CAP_ARM_PTRAUTH_ADDRESS, KVM_CAP_ARM_PTRAUTH_GENERIC): New
+       constants introduced by Linux kernel commits v5.2-rc1~17^2~1^2~10
+       and v5.2-rc1~17^2~1.
+       * NEWS: Mention this.
+
+       xlat: update CLONE_* constants.
+       * xlat/clone_flags.in (CLONE_PIDFD): New constant introduced by Linux
+       kernel commit v5.2-rc1~158^2~2.
+       * NEWS: Mention this.
+
+2019-05-26  Dmitry V. Levin  <ldv@altlinux.org>
+
+       xlat: update V4L2_PIX_* constants.
+       * xlat/v4l2_pix_fmts.in (V4L2_PIX_FMT_FWHT_STATELESS): New constant
+       introduced by Linux kernel commit v5.2-rc1~33^2~132.
+       (V4L2_PIX_FMT_BGRA32, V4L2_PIX_FMT_BGRX32, V4L2_PIX_FMT_RGBA32,
+       V4L2_PIX_FMT_RGBX32): New constants introduced by Linux kernel commit
+       v5.2-rc1~33^2~25.
+       (V4L2_PIX_FMT_RGBA444, V4L2_PIX_FMT_RGBX444, V4L2_PIX_FMT_ABGR444,
+       V4L2_PIX_FMT_XBGR444, V4L2_PIX_FMT_XBGR444, V4L2_PIX_FMT_BGRX444): New
+       constants introduced by Linux kernel commit v5.2-rc1~33^2~24.
+       (V4L2_PIX_FMT_RGBA555, V4L2_PIX_FMT_RGBX555, V4L2_PIX_FMT_ABGR555,
+       V4L2_PIX_FMT_XBGR555, V4L2_PIX_FMT_BGRA555, V4L2_PIX_FMT_BGRX555): New
+       constants introduced by Linux kernel commit v5.2-rc1~33^2~23.
+
+       xlat: fix v4l2_pix_fmts sorting order.
+       * xlat/v4l2_pix_fmts.in: Fix sorting order.
+
+       xlat: update V4L2_CID_* constants.
+       * xlat/v4l2_control_ids.in (V4L2_CID_FWHT_I_FRAME_QP,
+       V4L2_CID_FWHT_P_FRAME_QP): New constants introduced by Linux kernel
+       commit v5.2-rc1~33^2~132.
+       (V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MIN_QP,
+       V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MAX_QP,
+       V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MIN_QP,
+       V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MAX_QP): New constants introduced by
+       Linux kernel commit v5.2-rc1~33^2~95.
+       * NEWS: Mention this.
+
+2019-05-25  Dmitry V. Levin  <ldv@altlinux.org>
+
+       xlat: update AUDIT_* constants.
+       * xlat/nl_audit_types.in (AUDIT_FANOTIFY): New constant introduced by
+       Linux kernel commit v4.15-rc1~130^2^2~11.
+       (AUDIT_TIME_INJOFFSET): New constant introduced by Linux kernel commit
+       v5.2-rc1~144^2~2.
+       (AUDIT_TIME_ADJNTPVAL): New constant introduced by Linux kernel commit
+       v5.2-rc1~144^2~1.
+
+2019-05-24  Dmitry V. Levin  <ldv@altlinux.org>
+
+       xlat: update AUDIT_ARCH_* constants.
+       * xlat/audit_arch.in (AUDIT_ARCH_ARCOMPACT, AUDIT_ARCH_ARCOMPACTBE,
+       AUDIT_ARCH_ARCV2, AUDIT_ARCH_ARCV2BE): New constants introduced by Linux
+       kernel commit v5.2-rc1~144^2~16.
+       (AUDIT_ARCH_C6X, AUDIT_ARCH_C6XBE): New constants introduced by Linux
+       kernel commit v5.2-rc1~144^2~15.
+       (AUDIT_ARCH_CSKY): New constant introduced by Linux kernel commit
+       v5.0-rc1~37^2~15.
+       (AUDIT_ARCH_H8300): New constant introduced by Linux kernel commit
+       v5.2-rc1~144^2~14.
+       (AUDIT_ARCH_HEXAGON): New constant introduced by Linux kernel commit
+       v5.2-rc1~144^2~12.
+       (AUDIT_ARCH_NDS32, AUDIT_ARCH_NDS32BE): New constants introduced by
+       Linux kernel commit v5.2-rc1~144^2~9.
+       (AUDIT_ARCH_NIOS2): New constant introduced by Linux kernel commit
+       v5.2-rc1~144^2~8.
+       (AUDIT_ARCH_RISCV32, AUDIT_ARCH_RISCV64): New constants introduced by
+       Linux kernel commit v5.0-rc2~23^2~1^2~5.
+       (AUDIT_ARCH_TILEGX, AUDIT_ARCH_TILEGX32, AUDIT_ARCH_TILEPRO): New
+       constants introduced by Linux kernel commit v4.3-rc1~83^2~3.
+       (AUDIT_ARCH_UNICORE): New constant introduced by Linux kernel commit
+       v5.2-rc1~144^2~6.
+       (AUDIT_ARCH_XTENSA): New constant introduced by Linux kernel commit
+       v5.0-rc1~92^2~8.
+       * NEWS: Mention this.
+
+2019-05-23  Masatake YAMATO  <yamato@redhat.com>
+
+       tests: print the reason of failure in ioctl_kvm_run tests.
+       * tests/ioctl_kvm_run_common.c (run_kvm): Print
+       hardware_entry_failure_reason field of kvm_run
+       when KVM_RUN is failed with KVM_EXIT_FAIL_ENTRY.
+
+2019-05-23  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 5.1-1.
+       * strace.spec.in: Likewise.
+
 2019-05-22  Dmitry V. Levin  <ldv@altlinux.org>
 
        Prepare for 5.1 release.
diff --git a/INSTALL b/INSTALL
index 0d22512bc8f19e807d3c9fc101e9bdba54ba2c91..c48f22c4182a454a1d9eca9154009851d0332cdc 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -125,7 +125,7 @@ make install
 
 6.1. Distribution tarball
 
-./make-dist
+maint/make-dist
 
 Requires git
 
index a8ace321d08bd2b2af5791c8a4fc0737bf506846..723460f2e7c78c286aeb4ceb4f038206c6339c86 100644 (file)
@@ -4,7 +4,7 @@
 # Copyright (c) 2006-2016 Dmitry V. Levin <ldv@altlinux.org>
 # Copyright (c) 2008-2015 Mike Frysinger <vapier@gentoo.org>
 # Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
-# Copyright (c) 2002-2019 The strace developers.
+# Copyright (c) 2002-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: LGPL-2.1-or-later
@@ -27,7 +27,7 @@ ARCH          = @arch@
 
 READELF                = @READELF@
 
-ACLOCAL_AMFLAGS = -I m4
+ACLOCAL_AMFLAGS = -I m4 -I types -I xlat
 AM_CFLAGS = $(WARN_CFLAGS)
 AM_CPPFLAGS = -I$(builddir)/$(OS)/$(ARCH) \
              -I$(srcdir)/$(OS)/$(ARCH) \
@@ -39,35 +39,19 @@ AM_CPPFLAGS = -I$(builddir)/$(OS)/$(ARCH) \
 AM_CFLAGS_FOR_BUILD = $(WARN_CFLAGS_FOR_BUILD)
 AM_CPPFLAGS_FOR_BUILD = $(AM_CPPFLAGS)
 
+include types/Makemodule.am
 include xlat/Makemodule.am
 
 strace_CPPFLAGS = $(AM_CPPFLAGS)
 strace_CFLAGS = $(AM_CFLAGS)
 strace_LDFLAGS =
 strace_LDADD = libstrace.a $(clock_LIBS) $(timer_LIBS)
-noinst_LIBRARIES = libstrace.a
+strace_SOURCES = strace.c
 
+noinst_LIBRARIES = libstrace.a
 libstrace_a_CPPFLAGS = $(strace_CPPFLAGS)
 libstrace_a_CFLAGS = $(strace_CFLAGS)
 libstrace_a_SOURCES =  \
-       fetch_indirect_syscall_args.c \
-       fstatfs.c \
-       fstatfs64.c \
-       getpagesize.c \
-       ipc.c \
-       mmap_cache.c    \
-       mmap_cache.h    \
-       sigreturn.c     \
-       socketcall.c \
-       statfs.c \
-       statfs64.c \
-       sync_file_range.c \
-       sync_file_range2.c \
-       upeek.c         \
-       upoke.c         \
-       # end of libstrace_a_SOURCES
-
-strace_SOURCES =       \
        access.c        \
        affinity.c      \
        aio.c           \
@@ -92,6 +76,7 @@ strace_SOURCES =      \
        chdir.c         \
        chmod.c         \
        clone.c         \
+       close_range.c   \
        copy_file_range.c \
        count.c         \
        defs.h          \
@@ -100,7 +85,9 @@ strace_SOURCES =     \
        desc.c          \
        dirent.c        \
        dirent64.c      \
+       dirent_types.c  \
        dm.c            \
+       dup.c           \
        dyxlat.c        \
        empty.h         \
        epoll.c         \
@@ -117,6 +104,7 @@ strace_SOURCES =    \
        fchownat.c      \
        fcntl.c         \
        fetch_bpf_fprog.c \
+       fetch_indirect_syscall_args.c \
        fetch_struct_flock.c \
        fetch_struct_keyctl_kdf_params.c \
        fetch_struct_mmsghdr.c \
@@ -129,9 +117,17 @@ strace_SOURCES =   \
        file_ioctl.c    \
        filter.h        \
        filter_qualify.c \
+       filter_seccomp.c \
+       filter_seccomp.h \
        flock.c         \
        flock.h         \
        fs_x_ioctl.c    \
+       fsconfig.c      \
+       fsmount.c       \
+       fsopen.c        \
+       fspick.c        \
+       fstatfs.c \
+       fstatfs64.c \
        futex.c         \
        gcc_compat.h    \
        get_personality.c \
@@ -139,6 +135,8 @@ strace_SOURCES =    \
        get_robust_list.c \
        getcpu.c        \
        getcwd.c        \
+       getpagesize.c \
+       getpid.c        \
        getrandom.c     \
        hdio.c          \
        hostname.c      \
@@ -150,17 +148,22 @@ strace_SOURCES =  \
        ioperm.c        \
        iopl.c          \
        ioprio.c        \
+       ipc.c \
        ipc_defs.h      \
        ipc_msg.c       \
        ipc_msgctl.c    \
        ipc_sem.c       \
+       ipc_semctl.c    \
        ipc_shm.c       \
        ipc_shmctl.c    \
        kcmp.c          \
+       kernel_dirent.h \
+       kernel_rusage.h \
        kernel_timespec.h \
        kernel_timeval.h \
        kernel_timex.h  \
        kernel_types.h  \
+       kernel_v4l2_types.h \
        kexec.c         \
        keyctl.c        \
        keyctl_kdf_params.h \
@@ -182,10 +185,13 @@ strace_SOURCES =  \
        membarrier.c    \
        memfd_create.c  \
        mknod.c         \
+       mmap_cache.c    \
+       mmap_cache.h    \
        mmap_notify.c   \
        mmap_notify.h   \
        mmsghdr.c       \
        mount.c         \
+       move_mount.c    \
        mpers_type.h    \
        mq.c            \
        msghdr.c        \
@@ -221,12 +227,16 @@ strace_SOURCES =  \
        number_set.h    \
        oldstat.c       \
        open.c          \
+       open_tree.c     \
        or1k_atomic.c   \
        pathtrace.c     \
        perf.c          \
        perf_event_struct.h \
        perf_ioctl.c    \
        personality.c   \
+       pidfd_getfd.c   \
+       pidfd_open.c    \
+       pidns.c         \
        pkeys.c         \
        poll.c          \
        prctl.c         \
@@ -244,8 +254,8 @@ strace_SOURCES =    \
        print_sigevent.c \
        print_statfs.c  \
        print_struct_stat.c \
+       print_syscall_number.c \
        print_time.c    \
-       print_timespec.c \
        print_timespec.h \
        print_timespec32.c \
        print_timespec64.c \
@@ -304,23 +314,29 @@ strace_SOURCES =  \
        sigevent.h      \
        signal.c        \
        signalfd.c      \
+       sigreturn.c     \
        sock.c          \
        sockaddr.c      \
+       socketcall.c \
        socketutils.c   \
        sparc.c         \
        sram_alloc.c    \
+       stage_output.c  \
        stat.c          \
        stat.h          \
        stat64.c        \
        statfs.c        \
+       statfs.c \
        statfs.h        \
+       statfs64.c \
        static_assert.h \
        statx.c         \
        statx.h         \
-       strace.c        \
        string_to_uint.c \
        string_to_uint.h \
        swapon.c        \
+       sync_file_range.c \
+       sync_file_range2.c \
        syscall.c       \
        sysctl.c        \
        sysent.h        \
@@ -329,10 +345,13 @@ strace_SOURCES =  \
        sysinfo.c       \
        syslog.c        \
        sysmips.c       \
+       tee.c           \
        term.c          \
        time.c          \
        times.c         \
        trace_event.h   \
+       trie.c          \
+       trie.h          \
        truncate.c      \
        ubi.c           \
        ucopy.c         \
@@ -341,6 +360,8 @@ strace_SOURCES =    \
        umask.c         \
        umount.c        \
        uname.c         \
+       upeek.c         \
+       upoke.c         \
        userfaultfd.c   \
        ustat.c         \
        util.c          \
@@ -349,29 +370,33 @@ strace_SOURCES =  \
        v4l2.c          \
        wait.c          \
        wait.h          \
+       watchdog_ioctl.c \
        xattr.c         \
        xfs_quota_stat.h \
+       xgetdents.c     \
+       xgetdents.h     \
        xlat.c          \
        xlat.h          \
        xmalloc.c       \
        xmalloc.h       \
        xstring.h       \
+       $(TYPES_HEADER_FILES) \
        $(strace_SOURCES_check) \
-       # end of strace_SOURCES
+       # end of libstrace_a_SOURCES
 
-strace_SOURCES_check = bpf_attr_check.c
+strace_SOURCES_check = bpf_attr_check.c $(TYPES_CHECK_FILES)
 
 if ENABLE_STACKTRACE
-strace_SOURCES += unwind.c unwind.h
+libstrace_a_SOURCES += unwind.c unwind.h
 if USE_LIBDW
-strace_SOURCES += unwind-libdw.c
+libstrace_a_SOURCES += unwind-libdw.c
 strace_CPPFLAGS += $(libdw_CPPFLAGS)
 strace_CFLAGS += $(libdw_CFLAGS)
 strace_LDFLAGS += $(libdw_LDFLAGS)
 strace_LDADD += $(libdw_LIBS)
 endif
 if USE_LIBUNWIND
-strace_SOURCES += unwind-libunwind.c
+libstrace_a_SOURCES += unwind-libunwind.c
 strace_CPPFLAGS += $(libunwind_CPPFLAGS)
 strace_LDFLAGS += $(libunwind_LDFLAGS)
 strace_LDADD += $(libunwind_LIBS)
@@ -387,7 +412,7 @@ endif
 CODE_COVERAGE_BRANCH_COVERAGE = 1
 CODE_COVERAGE_GENHTML_OPTIONS = $(CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT) \
        --prefix $(shell cd $(abs_top_srcdir)/.. && pwd || echo .)
-CODE_COVERAGE_IGNORE_PATTERN = '/usr/include/*'
+CODE_COVERAGE_IGNORE_PATTERN = '/usr/include/*' '*/tests/*' '*/tests-m32/*' '*/tests-mx32/*'
 strace_CPPFLAGS += $(CODE_COVERAGE_CPPFLAGS)
 strace_CFLAGS += $(CODE_COVERAGE_CFLAGS)
 strace_LDADD += $(CODE_COVERAGE_LIBS)
@@ -405,6 +430,7 @@ EXTRA_DIST =                                \
        LGPL-2.1-or-later               \
        README-configure                \
        README-linux-ptrace             \
+       copyright-year-gen              \
        debian/changelog                \
        debian/compat                   \
        debian/control                  \
@@ -419,14 +445,17 @@ EXTRA_DIST =                              \
        debian/strace64.install         \
        debian/strace64.manpages        \
        debian/watch                    \
+       file-date-gen                   \
        gen_bpf_attr_check.sh           \
        generate_sen.sh                 \
+       git-version-gen                 \
        ioctl_iocdef.c                  \
        ioctlsort.c                     \
        linux/32/ioctls_inc.h           \
        linux/32/ioctls_inc_align16.h   \
        linux/32/ioctls_inc_align32.h   \
        linux/32/ioctls_inc_align64.h   \
+       linux/32/syscallent-time32.h    \
        linux/32/syscallent.h           \
        linux/64/ioctls_inc.h           \
        linux/64/syscallent.h           \
@@ -541,7 +570,6 @@ EXTRA_DIST =                                \
        linux/hppa/get_error.c          \
        linux/hppa/get_scno.c           \
        linux/hppa/get_syscall_args.c   \
-       linux/hppa/get_syscall_result.c \
        linux/hppa/ioctls_arch0.h       \
        linux/hppa/ioctls_inc0.h        \
        linux/hppa/raw_syscall.h        \
@@ -582,7 +610,9 @@ EXTRA_DIST =                                \
        linux/ia64/rt_sigframe.h        \
        linux/ia64/set_error.c          \
        linux/ia64/set_scno.c           \
+       linux/ia64/shuffle_scno.c       \
        linux/ia64/syscallent.h         \
+       linux/ia64/syscallent_base_nr.h \
        linux/ia64/userent.h            \
        linux/inet_diag.h               \
        linux/m68k/arch_defs_.h         \
@@ -711,27 +741,38 @@ EXTRA_DIST =                              \
        linux/powerpc64/syscallent.h    \
        linux/powerpc64/syscallent1.h   \
        linux/powerpc64/userent.h       \
+       linux/powerpc64le/arch_defs_.h  \
+       linux/powerpc64le/arch_regs.c   \
+       linux/powerpc64le/arch_rt_sigframe.c    \
+       linux/powerpc64le/errnoent.h    \
+       linux/powerpc64le/get_error.c   \
+       linux/powerpc64le/get_scno.c    \
+       linux/powerpc64le/get_syscall_args.c    \
+       linux/powerpc64le/ioctls_arch0.h        \
+       linux/powerpc64le/ioctls_inc0.h \
+       linux/powerpc64le/raw_syscall.h \
+       linux/powerpc64le/rt_sigframe.h \
+       linux/powerpc64le/set_error.c   \
+       linux/powerpc64le/set_scno.c    \
+       linux/powerpc64le/syscallent.h  \
+       linux/powerpc64le/userent.h     \
        linux/ptrace_pokeuser.c         \
        linux/raw_syscall.h             \
-       linux/riscv/arch_defs_.h        \
-       linux/riscv/arch_get_personality.c \
-       linux/riscv/arch_regs.c         \
-       linux/riscv/get_error.c         \
-       linux/riscv/get_scno.c          \
-       linux/riscv/get_syscall_args.c  \
-       linux/riscv/ioctls_arch0.h      \
-       linux/riscv/ioctls_arch1.h      \
-       linux/riscv/ioctls_inc0.h       \
-       linux/riscv/ioctls_inc1.h       \
-       linux/riscv/raw_syscall.h       \
-       linux/riscv/set_error.c         \
-       linux/riscv/set_scno.c          \
-       linux/riscv/syscallent.h        \
-       linux/riscv/syscallent1.h       \
+       linux/riscv64/arch_regs.c               \
+       linux/riscv64/get_error.c               \
+       linux/riscv64/get_scno.c                \
+       linux/riscv64/get_syscall_args.c        \
+       linux/riscv64/ioctls_arch0.h    \
+       linux/riscv64/ioctls_inc0.h     \
+       linux/riscv64/raw_syscall.h     \
+       linux/riscv64/set_error.c               \
+       linux/riscv64/set_scno.c                \
+       linux/riscv64/syscallent.h      \
        linux/rt_sigframe.h             \
        linux/s390/arch_defs_.h         \
        linux/s390/arch_regs.c          \
        linux/s390/arch_sigreturn.c     \
+       linux/s390/check_scno.c         \
        linux/s390/get_error.c          \
        linux/s390/get_scno.c           \
        linux/s390/get_syscall_args.c   \
@@ -749,6 +790,7 @@ EXTRA_DIST =                                \
        linux/s390x/arch_get_personality.c \
        linux/s390x/arch_regs.c         \
        linux/s390x/arch_sigreturn.c    \
+       linux/s390x/check_scno.c        \
        linux/s390x/get_error.c         \
        linux/s390x/get_scno.c          \
        linux/s390x/get_syscall_args.c  \
@@ -769,7 +811,6 @@ EXTRA_DIST =                                \
        linux/sh/get_error.c            \
        linux/sh/get_scno.c             \
        linux/sh/get_syscall_args.c     \
-       linux/sh/get_syscall_result.c   \
        linux/sh/ioctls_arch0.h         \
        linux/sh/ioctls_inc0.h          \
        linux/sh/raw_syscall.h          \
@@ -780,11 +821,9 @@ EXTRA_DIST =                               \
        linux/sh/userent0.h             \
        linux/sh64/arch_defs_.h         \
        linux/sh64/arch_regs.c          \
-       linux/sh64/arch_regs.h          \
        linux/sh64/get_error.c          \
        linux/sh64/get_scno.c           \
        linux/sh64/get_syscall_args.c   \
-       linux/sh64/get_syscall_result.c \
        linux/sh64/ioctls_arch0.h       \
        linux/sh64/ioctls_inc0.h        \
        linux/sh64/raw_syscall.h        \
@@ -841,6 +880,9 @@ EXTRA_DIST =                                \
        linux/subcall32.h               \
        linux/subcall64.h               \
        linux/syscall.h                 \
+       linux/syscallent-common-32.h    \
+       linux/syscallent-common.h       \
+       linux/syscallent_base_nr.h      \
        linux/tile/arch_defs_.h         \
        linux/tile/arch_get_personality.c \
        linux/tile/arch_regs.c          \
@@ -917,7 +959,6 @@ EXTRA_DIST =                                \
        linux/xtensa/get_error.c        \
        linux/xtensa/get_scno.c         \
        linux/xtensa/get_syscall_args.c \
-       linux/xtensa/get_syscall_result.c       \
        linux/xtensa/ioctls_arch0.h     \
        linux/xtensa/ioctls_inc0.h      \
        linux/xtensa/raw_syscall.h      \
@@ -933,6 +974,8 @@ EXTRA_DIST =                                \
        strace-graph                    \
        strace-log-merge                \
        strace.spec                     \
+       types/find_last_type_fields.awk \
+       types/gen.sh                    \
        $(XLAT_INPUT_FILES)             \
        $(XLAT_HEADER_FILES)            \
        xlat/gen.sh                     \
@@ -963,6 +1006,7 @@ sys_func.h: $(patsubst %,$(srcdir)/%,$(sys_func_h_sources))
        done | sort -u > $@
 
 syscallent_names = subcall.h syscallent.h syscallent1.h \
+                  syscallent-common.h syscallent-common-32.h \
                   syscallent-n32.h syscallent-n64.h syscallent-o32.h
 syscallent_patterns = $(patsubst %,\%/%,$(syscallent_names))
 syscallent_files = $(filter $(syscallent_patterns),$(EXTRA_DIST))
@@ -1052,8 +1096,8 @@ mpers_NAME =
 mpers_PREFIX = $(mpers_NAME)_
 mpers_DEFS = $(DEFS)
 mpers_INCLUDES = $(DEFAULT_INCLUDES) $(INCLUDES)
-mpers_CPPFLAGS = $(strace_CPPFLAGS) $(CPPFLAGS)
-mpers_sh_opts = $(mpers_DEFS) $(mpers_INCLUDES) $(mpers_CPPFLAGS)
+mpers_CPPFLAGS = $(CPPFLAGS)
+mpers_sh_opts = $(mpers_DEFS) $(mpers_INCLUDES) $(strace_CPPFLAGS) $(mpers_CPPFLAGS)
 libmpers_CPPFLAGS = $(strace_CPPFLAGS) -DIN_MPERS
 libmpers_CFLAGS = $(strace_CFLAGS)
 
@@ -1063,11 +1107,11 @@ mpers-m%.stamp: $(srcdir_mpers_source_files) | printers.h
        for f in $^; do \
                D="$(D)" \
                READELF="$(READELF)" \
-               CC="$(CC)" \
+               CC="$(mpers_CC)" \
                CFLAGS="$(mpers_sh_opts) -DMPERS_IS_$(mpers_NAME)" \
                CPP="$(CPP)" \
                CPPFLAGS="$(mpers_sh_opts) -DIN_MPERS -DMPERS_IS_$(mpers_NAME)" \
-               $(srcdir)/mpers.sh $(mpers_NAME) $(mpers_CC_FLAGS) $$f || exit; \
+               $(srcdir)/mpers.sh $(mpers_NAME) "$(mpers_CC_FLAGS)" $$f || exit; \
        done
        > $@
 
@@ -1138,7 +1182,9 @@ BUILT_SOURCES += $(mpers_m32_targets)
 CLEANFILES    += $(mpers_m32_targets)
 
 $(mpers_m32_targets): mpers_NAME = m32
-$(mpers_m32_targets): mpers_CC_FLAGS = @cc_flags_m32@
+$(mpers_m32_targets): mpers_CC_FLAGS = @CFLAGS_FOR_M32@ @cc_flags_m32@
+$(mpers_m32_targets): mpers_CPPFLAGS = @CPPFLAGS_FOR_M32@
+$(mpers_m32_targets): mpers_CC = @CC_FOR_M32@
 
 endif # HAVE_M32_MPERS
 
@@ -1155,7 +1201,9 @@ BUILT_SOURCES += $(mpers_mx32_targets)
 CLEANFILES    += $(mpers_mx32_targets)
 
 $(mpers_mx32_targets): mpers_NAME = mx32
-$(mpers_mx32_targets): mpers_CC_FLAGS = @cc_flags_mx32@
+$(mpers_mx32_targets): mpers_CC_FLAGS = @CFLAGS_FOR_MX32@ @cc_flags_mx32@
+$(mpers_mx32_targets): mpers_CPPFLAGS = @CPPFLAGS_FOR_MX32@
+$(mpers_mx32_targets): mpers_CC = @CC_FOR_MX32@
 
 endif # HAVE_MX32_MPERS
 
index 6485a5880acd45d95e705df79adf2ec46dcf27e6..b0ec9f6867bbed467a7fb370c725b24cd5ae4799 100644 (file)
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.2 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -20,7 +20,7 @@
 # Copyright (c) 2006-2016 Dmitry V. Levin <ldv@altlinux.org>
 # Copyright (c) 2008-2015 Mike Frysinger <vapier@gentoo.org>
 # Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
-# Copyright (c) 2002-2019 The strace developers.
+# Copyright (c) 2002-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: LGPL-2.1-or-later
@@ -132,11 +132,54 @@ bin_PROGRAMS = strace$(EXEEXT)
 @HAVE_MX32_MPERS_TRUE@am__append_21 = $(mpers_mx32_targets)
 subdir = .
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_code_coverage.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/xlat/btrfs_compress_types.m4 \
+       $(top_srcdir)/xlat/close_range_flags.m4 \
+       $(top_srcdir)/xlat/loop_flags_options.m4 \
+       $(top_srcdir)/xlat/rtnl_ifla_xdp_attached_mode.m4 \
+       $(top_srcdir)/xlat/rtnl_ifla_xdp_attrs.m4 \
+       $(top_srcdir)/xlat/rtnl_link_attrs.m4 \
+       $(top_srcdir)/xlat/rtnl_tc_action_attrs.m4 \
+       $(top_srcdir)/xlat/rtnl_tca_stab_attrs.m4 \
+       $(top_srcdir)/xlat/rtnl_tca_stats_attrs.m4 \
+       $(top_srcdir)/xlat/st_check_enums.m4 \
+       $(top_srcdir)/xlat/sysctl_kern.m4 \
+       $(top_srcdir)/xlat/sysctl_net.m4 \
+       $(top_srcdir)/xlat/sysctl_net_core.m4 \
+       $(top_srcdir)/xlat/sysctl_net_ipv4.m4 \
+       $(top_srcdir)/xlat/sysctl_net_ipv4_conf.m4 \
+       $(top_srcdir)/xlat/sysctl_net_ipv4_route.m4 \
+       $(top_srcdir)/xlat/sysctl_net_ipv6.m4 \
+       $(top_srcdir)/xlat/sysctl_net_ipv6_route.m4 \
+       $(top_srcdir)/xlat/sysctl_net_unix.m4 \
+       $(top_srcdir)/xlat/sysctl_root.m4 \
+       $(top_srcdir)/xlat/sysctl_vm.m4 \
+       $(top_srcdir)/xlat/v4l2_buf_types.m4 \
+       $(top_srcdir)/xlat/v4l2_colorspaces.m4 \
+       $(top_srcdir)/xlat/v4l2_control_types.m4 \
+       $(top_srcdir)/xlat/v4l2_fields.m4 \
+       $(top_srcdir)/xlat/v4l2_framesize_types.m4 \
+       $(top_srcdir)/xlat/v4l2_memories.m4 \
+       $(top_srcdir)/xlat/v4l2_tuner_types.m4 \
+       $(top_srcdir)/xlat/waitid_types.m4 \
+       $(top_srcdir)/types/check-btrfs.m4 \
+       $(top_srcdir)/types/check-cryptouser.m4 \
+       $(top_srcdir)/types/check-evdev.m4 \
+       $(top_srcdir)/types/check-io_uring.m4 \
+       $(top_srcdir)/types/check-loop.m4 \
+       $(top_srcdir)/types/check-openat2.m4 \
+       $(top_srcdir)/types/check-rtnl_link.m4 \
+       $(top_srcdir)/types/check-rtnl_mdb.m4 \
+       $(top_srcdir)/types/check-rtnl_neightbl.m4 \
+       $(top_srcdir)/types/check-rtnl_route.m4 \
+       $(top_srcdir)/types/check-tee.m4 \
+       $(top_srcdir)/types/check-v4l2.m4 \
+       $(top_srcdir)/types/st_check_types.m4 \
+       $(top_srcdir)/m4/ax_code_coverage.m4 \
        $(top_srcdir)/m4/ax_prog_cc_for_build.m4 \
        $(top_srcdir)/m4/ax_valgrind_check.m4 \
        $(top_srcdir)/m4/bpf_attr.m4 $(top_srcdir)/m4/mpers.m4 \
-       $(top_srcdir)/m4/st_demangle.m4 $(top_srcdir)/m4/st_libdw.m4 \
+       $(top_srcdir)/m4/st_demangle.m4 \
+       $(top_srcdir)/m4/st_esyscmd_s.m4 $(top_srcdir)/m4/st_libdw.m4 \
        $(top_srcdir)/m4/st_libunwind.m4 \
        $(top_srcdir)/m4/st_save_restore_var.m4 \
        $(top_srcdir)/m4/st_stacktrace.m4 \
@@ -157,7 +200,6 @@ am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" \
        "$(DESTDIR)$(man1dir)"
 PROGRAMS = $(bin_PROGRAMS)
 LIBRARIES = $(noinst_LIBRARIES)
-AR = ar
 ARFLAGS = cru
 AM_V_AR = $(am__v_AR_@AM_V@)
 am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
@@ -170,12 +212,13 @@ am__libmpers_m32_a_SOURCES_DIST = block.c btrfs.c dirent.c \
        fetch_struct_keyctl_kdf_params.c fetch_struct_mmsghdr.c \
        fetch_struct_msghdr.c fetch_struct_stat.c \
        fetch_struct_stat64.c fetch_struct_statfs.c \
-       fetch_struct_xfs_quotastat.c hdio.c ipc_msgctl.c ipc_shmctl.c \
-       loop.c mtd.c perf_ioctl.c print_aio_sigset.c print_group_req.c \
-       print_mq_attr.c print_msgbuf.c print_sg_req_info.c \
-       print_sigevent.c print_time.c print_timespec.c print_timeval.c \
-       printrusage.c printsiginfo.c rt_sigreturn.c rtc.c sg_io_v3.c \
-       sigaltstack.c sock.c sysinfo.c times.c ustat.c utime.c v4l2.c
+       fetch_struct_xfs_quotastat.c hdio.c ipc_msgctl.c ipc_semctl.c \
+       ipc_shmctl.c loop.c mtd.c perf_ioctl.c print_aio_sigset.c \
+       print_group_req.c print_mq_attr.c print_msgbuf.c \
+       print_sg_req_info.c print_sigevent.c print_time.c \
+       print_timeval.c printrusage.c printsiginfo.c rt_sigreturn.c \
+       rtc.c sg_io_v3.c sigaltstack.c sock.c sysinfo.c times.c \
+       ustat.c utime.c v4l2.c
 am__objects_1 = libmpers_m32_a-block.$(OBJEXT) \
        libmpers_m32_a-btrfs.$(OBJEXT) libmpers_m32_a-dirent.$(OBJEXT) \
        libmpers_m32_a-evdev_mpers.$(OBJEXT) \
@@ -190,6 +233,7 @@ am__objects_1 = libmpers_m32_a-block.$(OBJEXT) \
        libmpers_m32_a-fetch_struct_xfs_quotastat.$(OBJEXT) \
        libmpers_m32_a-hdio.$(OBJEXT) \
        libmpers_m32_a-ipc_msgctl.$(OBJEXT) \
+       libmpers_m32_a-ipc_semctl.$(OBJEXT) \
        libmpers_m32_a-ipc_shmctl.$(OBJEXT) \
        libmpers_m32_a-loop.$(OBJEXT) libmpers_m32_a-mtd.$(OBJEXT) \
        libmpers_m32_a-perf_ioctl.$(OBJEXT) \
@@ -200,7 +244,6 @@ am__objects_1 = libmpers_m32_a-block.$(OBJEXT) \
        libmpers_m32_a-print_sg_req_info.$(OBJEXT) \
        libmpers_m32_a-print_sigevent.$(OBJEXT) \
        libmpers_m32_a-print_time.$(OBJEXT) \
-       libmpers_m32_a-print_timespec.$(OBJEXT) \
        libmpers_m32_a-print_timeval.$(OBJEXT) \
        libmpers_m32_a-printrusage.$(OBJEXT) \
        libmpers_m32_a-printsiginfo.$(OBJEXT) \
@@ -219,12 +262,13 @@ am__libmpers_mx32_a_SOURCES_DIST = block.c btrfs.c dirent.c \
        fetch_struct_keyctl_kdf_params.c fetch_struct_mmsghdr.c \
        fetch_struct_msghdr.c fetch_struct_stat.c \
        fetch_struct_stat64.c fetch_struct_statfs.c \
-       fetch_struct_xfs_quotastat.c hdio.c ipc_msgctl.c ipc_shmctl.c \
-       loop.c mtd.c perf_ioctl.c print_aio_sigset.c print_group_req.c \
-       print_mq_attr.c print_msgbuf.c print_sg_req_info.c \
-       print_sigevent.c print_time.c print_timespec.c print_timeval.c \
-       printrusage.c printsiginfo.c rt_sigreturn.c rtc.c sg_io_v3.c \
-       sigaltstack.c sock.c sysinfo.c times.c ustat.c utime.c v4l2.c
+       fetch_struct_xfs_quotastat.c hdio.c ipc_msgctl.c ipc_semctl.c \
+       ipc_shmctl.c loop.c mtd.c perf_ioctl.c print_aio_sigset.c \
+       print_group_req.c print_mq_attr.c print_msgbuf.c \
+       print_sg_req_info.c print_sigevent.c print_time.c \
+       print_timeval.c printrusage.c printsiginfo.c rt_sigreturn.c \
+       rtc.c sg_io_v3.c sigaltstack.c sock.c sysinfo.c times.c \
+       ustat.c utime.c v4l2.c
 am__objects_2 = libmpers_mx32_a-block.$(OBJEXT) \
        libmpers_mx32_a-btrfs.$(OBJEXT) \
        libmpers_mx32_a-dirent.$(OBJEXT) \
@@ -240,6 +284,7 @@ am__objects_2 = libmpers_mx32_a-block.$(OBJEXT) \
        libmpers_mx32_a-fetch_struct_xfs_quotastat.$(OBJEXT) \
        libmpers_mx32_a-hdio.$(OBJEXT) \
        libmpers_mx32_a-ipc_msgctl.$(OBJEXT) \
+       libmpers_mx32_a-ipc_semctl.$(OBJEXT) \
        libmpers_mx32_a-ipc_shmctl.$(OBJEXT) \
        libmpers_mx32_a-loop.$(OBJEXT) libmpers_mx32_a-mtd.$(OBJEXT) \
        libmpers_mx32_a-perf_ioctl.$(OBJEXT) \
@@ -250,7 +295,6 @@ am__objects_2 = libmpers_mx32_a-block.$(OBJEXT) \
        libmpers_mx32_a-print_sg_req_info.$(OBJEXT) \
        libmpers_mx32_a-print_sigevent.$(OBJEXT) \
        libmpers_mx32_a-print_time.$(OBJEXT) \
-       libmpers_mx32_a-print_timespec.$(OBJEXT) \
        libmpers_mx32_a-print_timeval.$(OBJEXT) \
        libmpers_mx32_a-printrusage.$(OBJEXT) \
        libmpers_mx32_a-printsiginfo.$(OBJEXT) \
@@ -267,61 +311,54 @@ am__objects_2 = libmpers_mx32_a-block.$(OBJEXT) \
 libmpers_mx32_a_OBJECTS = $(am_libmpers_mx32_a_OBJECTS)
 libstrace_a_AR = $(AR) $(ARFLAGS)
 libstrace_a_LIBADD =
-am_libstrace_a_OBJECTS =  \
-       libstrace_a-fetch_indirect_syscall_args.$(OBJEXT) \
-       libstrace_a-fstatfs.$(OBJEXT) libstrace_a-fstatfs64.$(OBJEXT) \
-       libstrace_a-getpagesize.$(OBJEXT) libstrace_a-ipc.$(OBJEXT) \
-       libstrace_a-mmap_cache.$(OBJEXT) \
-       libstrace_a-sigreturn.$(OBJEXT) \
-       libstrace_a-socketcall.$(OBJEXT) libstrace_a-statfs.$(OBJEXT) \
-       libstrace_a-statfs64.$(OBJEXT) \
-       libstrace_a-sync_file_range.$(OBJEXT) \
-       libstrace_a-sync_file_range2.$(OBJEXT) \
-       libstrace_a-upeek.$(OBJEXT) libstrace_a-upoke.$(OBJEXT)
-libstrace_a_OBJECTS = $(am_libstrace_a_OBJECTS)
-am__strace_SOURCES_DIST = access.c affinity.c aio.c alpha.c \
+am__libstrace_a_SOURCES_DIST = access.c affinity.c aio.c alpha.c \
        arch_defs.h basic_filters.c bind.c bjm.c block.c bpf.c \
        bpf_attr.h bpf_filter.c bpf_filter.h bpf_fprog.h \
        bpf_seccomp_filter.c bpf_sock_filter.c btrfs.c cacheflush.c \
        capability.c caps0.h caps1.h chdir.c chmod.c clone.c \
-       copy_file_range.c count.c defs.h delay.c delay.h desc.c \
-       dirent.c dirent64.c dm.c dyxlat.c empty.h epoll.c \
-       error_prints.c error_prints.h evdev.c evdev_mpers.c eventfd.c \
-       execve.c f_owner_ex.h fadvise.c fallocate.c fanotify.c \
-       fchownat.c fcntl.c fetch_bpf_fprog.c fetch_struct_flock.c \
+       close_range.c copy_file_range.c count.c defs.h delay.c delay.h \
+       desc.c dirent.c dirent64.c dirent_types.c dm.c dup.c dyxlat.c \
+       empty.h epoll.c error_prints.c error_prints.h evdev.c \
+       evdev_mpers.c eventfd.c execve.c f_owner_ex.h fadvise.c \
+       fallocate.c fanotify.c fchownat.c fcntl.c fetch_bpf_fprog.c \
+       fetch_indirect_syscall_args.c fetch_struct_flock.c \
        fetch_struct_keyctl_kdf_params.c fetch_struct_mmsghdr.c \
        fetch_struct_msghdr.c fetch_struct_stat.c \
        fetch_struct_stat64.c fetch_struct_statfs.c \
        fetch_struct_xfs_quotastat.c file_handle.c file_ioctl.c \
-       filter.h filter_qualify.c flock.c flock.h fs_x_ioctl.c futex.c \
-       gcc_compat.h get_personality.c get_personality.h \
-       get_robust_list.c getcpu.c getcwd.c getrandom.c hdio.c \
-       hostname.c inotify.c inotify_ioctl.c io.c io_uring.c ioctl.c \
-       ioperm.c iopl.c ioprio.c ipc_defs.h ipc_msg.c ipc_msgctl.c \
-       ipc_sem.c ipc_shm.c ipc_shmctl.c kcmp.c kernel_timespec.h \
-       kernel_timeval.h kernel_timex.h kernel_types.h kexec.c \
-       keyctl.c keyctl_kdf_params.h kill_save_errno.h kvm.c \
-       largefile_wrappers.h ldt.c link.c linux/asm_stat.h \
-       linux/x32/asm_stat.h linux/x86_64/asm_stat.h list.h listen.c \
-       lookup_dcookie.c loop.c lseek.c macros.h mem.c membarrier.c \
-       memfd_create.c mknod.c mmap_notify.c mmap_notify.h mmsghdr.c \
-       mount.c mpers_type.h mq.c msghdr.c msghdr.h mtd.c \
-       native_defs.h nbd_ioctl.c negated_errno.h net.c netlink.c \
-       netlink.h netlink_crypto.c netlink_inet_diag.c \
-       netlink_kobject_uevent.c netlink_kobject_uevent.h \
-       netlink_netfilter.c netlink_netlink_diag.c \
-       netlink_packet_diag.c netlink_route.c netlink_route.h \
-       netlink_selinux.c netlink_smc_diag.c netlink_sock_diag.c \
-       netlink_sock_diag.h netlink_unix_diag.c nlattr.c nlattr.h \
-       nsfs.c nsfs.h nsig.h numa.c number_set.c number_set.h \
-       oldstat.c open.c or1k_atomic.c pathtrace.c perf.c \
-       perf_event_struct.h perf_ioctl.c personality.c pkeys.c poll.c \
-       prctl.c print_aio_sigset.c print_dev_t.c print_fields.h \
+       filter.h filter_qualify.c filter_seccomp.c filter_seccomp.h \
+       flock.c flock.h fs_x_ioctl.c fsconfig.c fsmount.c fsopen.c \
+       fspick.c fstatfs.c fstatfs64.c futex.c gcc_compat.h \
+       get_personality.c get_personality.h get_robust_list.c getcpu.c \
+       getcwd.c getpagesize.c getpid.c getrandom.c hdio.c hostname.c \
+       inotify.c inotify_ioctl.c io.c io_uring.c ioctl.c ioperm.c \
+       iopl.c ioprio.c ipc.c ipc_defs.h ipc_msg.c ipc_msgctl.c \
+       ipc_sem.c ipc_semctl.c ipc_shm.c ipc_shmctl.c kcmp.c \
+       kernel_dirent.h kernel_rusage.h kernel_timespec.h \
+       kernel_timeval.h kernel_timex.h kernel_types.h \
+       kernel_v4l2_types.h kexec.c keyctl.c keyctl_kdf_params.h \
+       kill_save_errno.h kvm.c largefile_wrappers.h ldt.c link.c \
+       linux/asm_stat.h linux/x32/asm_stat.h linux/x86_64/asm_stat.h \
+       list.h listen.c lookup_dcookie.c loop.c lseek.c macros.h mem.c \
+       membarrier.c memfd_create.c mknod.c mmap_cache.c mmap_cache.h \
+       mmap_notify.c mmap_notify.h mmsghdr.c mount.c move_mount.c \
+       mpers_type.h mq.c msghdr.c msghdr.h mtd.c native_defs.h \
+       nbd_ioctl.c negated_errno.h net.c netlink.c netlink.h \
+       netlink_crypto.c netlink_inet_diag.c netlink_kobject_uevent.c \
+       netlink_kobject_uevent.h netlink_netfilter.c \
+       netlink_netlink_diag.c netlink_packet_diag.c netlink_route.c \
+       netlink_route.h netlink_selinux.c netlink_smc_diag.c \
+       netlink_sock_diag.c netlink_sock_diag.h netlink_unix_diag.c \
+       nlattr.c nlattr.h nsfs.c nsfs.h nsig.h numa.c number_set.c \
+       number_set.h oldstat.c open.c open_tree.c or1k_atomic.c \
+       pathtrace.c perf.c perf_event_struct.h perf_ioctl.c \
+       personality.c pidfd_getfd.c pidfd_open.c pidns.c pkeys.c \
+       poll.c prctl.c print_aio_sigset.c print_dev_t.c print_fields.h \
        print_group_req.c print_ifindex.c print_instruction_pointer.c \
        print_kernel_version.c print_mac.c print_mq_attr.c \
        print_msgbuf.c print_sg_req_info.c print_sigevent.c \
-       print_statfs.c print_struct_stat.c print_time.c \
-       print_timespec.c print_timespec.h print_timespec32.c \
+       print_statfs.c print_struct_stat.c print_syscall_number.c \
+       print_time.c print_timespec.h print_timespec32.c \
        print_timespec64.c print_timeval.c print_timeval64.c \
        print_timex.c print_timex.h print_utils.h printmode.c \
        printrusage.c printsiginfo.c printsiginfo.h process.c \
@@ -334,148 +371,222 @@ am__strace_SOURCES_DIST = access.c affinity.c aio.c alpha.c \
        rtnl_route.c rtnl_rule.c rtnl_tc.c rtnl_tc_action.c s390.c \
        sched.c sched_attr.h scsi.c seccomp.c sendfile.c sg_io_v3.c \
        sg_io_v4.c shutdown.c sigaltstack.c sigevent.h signal.c \
-       signalfd.c sock.c sockaddr.c socketutils.c sparc.c \
-       sram_alloc.c stat.c stat.h stat64.c statfs.c statfs.h \
-       static_assert.h statx.c statx.h strace.c string_to_uint.c \
-       string_to_uint.h swapon.c syscall.c sysctl.c sysent.h \
-       sysent_shorthand_defs.h sysent_shorthand_undefs.h sysinfo.c \
-       syslog.c sysmips.c term.c time.c times.c trace_event.h \
-       truncate.c ubi.c ucopy.c uid.c uid16.c umask.c umount.c \
-       uname.c userfaultfd.c ustat.c util.c utime.c utimes.c v4l2.c \
-       wait.c wait.h xattr.c xfs_quota_stat.h xlat.c xlat.h xmalloc.c \
-       xmalloc.h xstring.h bpf_attr_check.c unwind.c unwind.h \
-       unwind-libdw.c unwind-libunwind.c
-am__objects_3 = strace-bpf_attr_check.$(OBJEXT)
-@ENABLE_STACKTRACE_TRUE@am__objects_4 = strace-unwind.$(OBJEXT)
-@ENABLE_STACKTRACE_TRUE@@USE_LIBDW_TRUE@am__objects_5 = strace-unwind-libdw.$(OBJEXT)
-@ENABLE_STACKTRACE_TRUE@@USE_LIBUNWIND_TRUE@am__objects_6 = strace-unwind-libunwind.$(OBJEXT)
-am_strace_OBJECTS = strace-access.$(OBJEXT) strace-affinity.$(OBJEXT) \
-       strace-aio.$(OBJEXT) strace-alpha.$(OBJEXT) \
-       strace-basic_filters.$(OBJEXT) strace-bind.$(OBJEXT) \
-       strace-bjm.$(OBJEXT) strace-block.$(OBJEXT) \
-       strace-bpf.$(OBJEXT) strace-bpf_filter.$(OBJEXT) \
-       strace-bpf_seccomp_filter.$(OBJEXT) \
-       strace-bpf_sock_filter.$(OBJEXT) strace-btrfs.$(OBJEXT) \
-       strace-cacheflush.$(OBJEXT) strace-capability.$(OBJEXT) \
-       strace-chdir.$(OBJEXT) strace-chmod.$(OBJEXT) \
-       strace-clone.$(OBJEXT) strace-copy_file_range.$(OBJEXT) \
-       strace-count.$(OBJEXT) strace-delay.$(OBJEXT) \
-       strace-desc.$(OBJEXT) strace-dirent.$(OBJEXT) \
-       strace-dirent64.$(OBJEXT) strace-dm.$(OBJEXT) \
-       strace-dyxlat.$(OBJEXT) strace-epoll.$(OBJEXT) \
-       strace-error_prints.$(OBJEXT) strace-evdev.$(OBJEXT) \
-       strace-evdev_mpers.$(OBJEXT) strace-eventfd.$(OBJEXT) \
-       strace-execve.$(OBJEXT) strace-fadvise.$(OBJEXT) \
-       strace-fallocate.$(OBJEXT) strace-fanotify.$(OBJEXT) \
-       strace-fchownat.$(OBJEXT) strace-fcntl.$(OBJEXT) \
-       strace-fetch_bpf_fprog.$(OBJEXT) \
-       strace-fetch_struct_flock.$(OBJEXT) \
-       strace-fetch_struct_keyctl_kdf_params.$(OBJEXT) \
-       strace-fetch_struct_mmsghdr.$(OBJEXT) \
-       strace-fetch_struct_msghdr.$(OBJEXT) \
-       strace-fetch_struct_stat.$(OBJEXT) \
-       strace-fetch_struct_stat64.$(OBJEXT) \
-       strace-fetch_struct_statfs.$(OBJEXT) \
-       strace-fetch_struct_xfs_quotastat.$(OBJEXT) \
-       strace-file_handle.$(OBJEXT) strace-file_ioctl.$(OBJEXT) \
-       strace-filter_qualify.$(OBJEXT) strace-flock.$(OBJEXT) \
-       strace-fs_x_ioctl.$(OBJEXT) strace-futex.$(OBJEXT) \
-       strace-get_personality.$(OBJEXT) \
-       strace-get_robust_list.$(OBJEXT) strace-getcpu.$(OBJEXT) \
-       strace-getcwd.$(OBJEXT) strace-getrandom.$(OBJEXT) \
-       strace-hdio.$(OBJEXT) strace-hostname.$(OBJEXT) \
-       strace-inotify.$(OBJEXT) strace-inotify_ioctl.$(OBJEXT) \
-       strace-io.$(OBJEXT) strace-io_uring.$(OBJEXT) \
-       strace-ioctl.$(OBJEXT) strace-ioperm.$(OBJEXT) \
-       strace-iopl.$(OBJEXT) strace-ioprio.$(OBJEXT) \
-       strace-ipc_msg.$(OBJEXT) strace-ipc_msgctl.$(OBJEXT) \
-       strace-ipc_sem.$(OBJEXT) strace-ipc_shm.$(OBJEXT) \
-       strace-ipc_shmctl.$(OBJEXT) strace-kcmp.$(OBJEXT) \
-       strace-kexec.$(OBJEXT) strace-keyctl.$(OBJEXT) \
-       strace-kvm.$(OBJEXT) strace-ldt.$(OBJEXT) \
-       strace-link.$(OBJEXT) strace-listen.$(OBJEXT) \
-       strace-lookup_dcookie.$(OBJEXT) strace-loop.$(OBJEXT) \
-       strace-lseek.$(OBJEXT) strace-mem.$(OBJEXT) \
-       strace-membarrier.$(OBJEXT) strace-memfd_create.$(OBJEXT) \
-       strace-mknod.$(OBJEXT) strace-mmap_notify.$(OBJEXT) \
-       strace-mmsghdr.$(OBJEXT) strace-mount.$(OBJEXT) \
-       strace-mq.$(OBJEXT) strace-msghdr.$(OBJEXT) \
-       strace-mtd.$(OBJEXT) strace-nbd_ioctl.$(OBJEXT) \
-       strace-net.$(OBJEXT) strace-netlink.$(OBJEXT) \
-       strace-netlink_crypto.$(OBJEXT) \
-       strace-netlink_inet_diag.$(OBJEXT) \
-       strace-netlink_kobject_uevent.$(OBJEXT) \
-       strace-netlink_netfilter.$(OBJEXT) \
-       strace-netlink_netlink_diag.$(OBJEXT) \
-       strace-netlink_packet_diag.$(OBJEXT) \
-       strace-netlink_route.$(OBJEXT) \
-       strace-netlink_selinux.$(OBJEXT) \
-       strace-netlink_smc_diag.$(OBJEXT) \
-       strace-netlink_sock_diag.$(OBJEXT) \
-       strace-netlink_unix_diag.$(OBJEXT) strace-nlattr.$(OBJEXT) \
-       strace-nsfs.$(OBJEXT) strace-numa.$(OBJEXT) \
-       strace-number_set.$(OBJEXT) strace-oldstat.$(OBJEXT) \
-       strace-open.$(OBJEXT) strace-or1k_atomic.$(OBJEXT) \
-       strace-pathtrace.$(OBJEXT) strace-perf.$(OBJEXT) \
-       strace-perf_ioctl.$(OBJEXT) strace-personality.$(OBJEXT) \
-       strace-pkeys.$(OBJEXT) strace-poll.$(OBJEXT) \
-       strace-prctl.$(OBJEXT) strace-print_aio_sigset.$(OBJEXT) \
-       strace-print_dev_t.$(OBJEXT) strace-print_group_req.$(OBJEXT) \
-       strace-print_ifindex.$(OBJEXT) \
-       strace-print_instruction_pointer.$(OBJEXT) \
-       strace-print_kernel_version.$(OBJEXT) \
-       strace-print_mac.$(OBJEXT) strace-print_mq_attr.$(OBJEXT) \
-       strace-print_msgbuf.$(OBJEXT) \
-       strace-print_sg_req_info.$(OBJEXT) \
-       strace-print_sigevent.$(OBJEXT) strace-print_statfs.$(OBJEXT) \
-       strace-print_struct_stat.$(OBJEXT) strace-print_time.$(OBJEXT) \
-       strace-print_timespec.$(OBJEXT) \
-       strace-print_timespec32.$(OBJEXT) \
-       strace-print_timespec64.$(OBJEXT) \
-       strace-print_timeval.$(OBJEXT) \
-       strace-print_timeval64.$(OBJEXT) strace-print_timex.$(OBJEXT) \
-       strace-printmode.$(OBJEXT) strace-printrusage.$(OBJEXT) \
-       strace-printsiginfo.$(OBJEXT) strace-process.$(OBJEXT) \
-       strace-process_vm.$(OBJEXT) strace-ptp.$(OBJEXT) \
-       strace-ptrace_syscall_info.$(OBJEXT) strace-quota.$(OBJEXT) \
-       strace-random_ioctl.$(OBJEXT) strace-readahead.$(OBJEXT) \
-       strace-readlink.$(OBJEXT) strace-reboot.$(OBJEXT) \
-       strace-renameat.$(OBJEXT) strace-resource.$(OBJEXT) \
-       strace-retval.$(OBJEXT) strace-riscv.$(OBJEXT) \
-       strace-rt_sigframe.$(OBJEXT) strace-rt_sigreturn.$(OBJEXT) \
-       strace-rtc.$(OBJEXT) strace-rtnl_addr.$(OBJEXT) \
-       strace-rtnl_addrlabel.$(OBJEXT) strace-rtnl_dcb.$(OBJEXT) \
-       strace-rtnl_link.$(OBJEXT) strace-rtnl_mdb.$(OBJEXT) \
-       strace-rtnl_neigh.$(OBJEXT) strace-rtnl_neightbl.$(OBJEXT) \
-       strace-rtnl_netconf.$(OBJEXT) strace-rtnl_nsid.$(OBJEXT) \
-       strace-rtnl_route.$(OBJEXT) strace-rtnl_rule.$(OBJEXT) \
-       strace-rtnl_tc.$(OBJEXT) strace-rtnl_tc_action.$(OBJEXT) \
-       strace-s390.$(OBJEXT) strace-sched.$(OBJEXT) \
-       strace-scsi.$(OBJEXT) strace-seccomp.$(OBJEXT) \
-       strace-sendfile.$(OBJEXT) strace-sg_io_v3.$(OBJEXT) \
-       strace-sg_io_v4.$(OBJEXT) strace-shutdown.$(OBJEXT) \
-       strace-sigaltstack.$(OBJEXT) strace-signal.$(OBJEXT) \
-       strace-signalfd.$(OBJEXT) strace-sock.$(OBJEXT) \
-       strace-sockaddr.$(OBJEXT) strace-socketutils.$(OBJEXT) \
-       strace-sparc.$(OBJEXT) strace-sram_alloc.$(OBJEXT) \
-       strace-stat.$(OBJEXT) strace-stat64.$(OBJEXT) \
-       strace-statfs.$(OBJEXT) strace-statx.$(OBJEXT) \
-       strace-strace.$(OBJEXT) strace-string_to_uint.$(OBJEXT) \
-       strace-swapon.$(OBJEXT) strace-syscall.$(OBJEXT) \
-       strace-sysctl.$(OBJEXT) strace-sysinfo.$(OBJEXT) \
-       strace-syslog.$(OBJEXT) strace-sysmips.$(OBJEXT) \
-       strace-term.$(OBJEXT) strace-time.$(OBJEXT) \
-       strace-times.$(OBJEXT) strace-truncate.$(OBJEXT) \
-       strace-ubi.$(OBJEXT) strace-ucopy.$(OBJEXT) \
-       strace-uid.$(OBJEXT) strace-uid16.$(OBJEXT) \
-       strace-umask.$(OBJEXT) strace-umount.$(OBJEXT) \
-       strace-uname.$(OBJEXT) strace-userfaultfd.$(OBJEXT) \
-       strace-ustat.$(OBJEXT) strace-util.$(OBJEXT) \
-       strace-utime.$(OBJEXT) strace-utimes.$(OBJEXT) \
-       strace-v4l2.$(OBJEXT) strace-wait.$(OBJEXT) \
-       strace-xattr.$(OBJEXT) strace-xlat.$(OBJEXT) \
-       strace-xmalloc.$(OBJEXT) $(am__objects_3) $(am__objects_4) \
-       $(am__objects_5) $(am__objects_6)
+       signalfd.c sigreturn.c sock.c sockaddr.c socketcall.c \
+       socketutils.c sparc.c sram_alloc.c stage_output.c stat.c \
+       stat.h stat64.c statfs.c statfs.h statfs64.c static_assert.h \
+       statx.c statx.h string_to_uint.c string_to_uint.h swapon.c \
+       sync_file_range.c sync_file_range2.c syscall.c sysctl.c \
+       sysent.h sysent_shorthand_defs.h sysent_shorthand_undefs.h \
+       sysinfo.c syslog.c sysmips.c tee.c term.c time.c times.c \
+       trace_event.h trie.c trie.h truncate.c ubi.c ucopy.c uid.c \
+       uid16.c umask.c umount.c uname.c upeek.c upoke.c userfaultfd.c \
+       ustat.c util.c utime.c utimes.c v4l2.c wait.c wait.h \
+       watchdog_ioctl.c xattr.c xfs_quota_stat.h xgetdents.c \
+       xgetdents.h xlat.c xlat.h xmalloc.c xmalloc.h xstring.h \
+       types/btrfs.h types/cryptouser.h types/evdev.h \
+       types/io_uring.h types/loop.h types/openat2.h \
+       types/rtnl_link.h types/rtnl_mdb.h types/rtnl_neightbl.h \
+       types/rtnl_route.h types/tee.h types/v4l2.h bpf_attr_check.c \
+       types/check-btrfs.c types/check-cryptouser.c \
+       types/check-evdev.c types/check-io_uring.c types/check-loop.c \
+       types/check-openat2.c types/check-rtnl_link.c \
+       types/check-rtnl_mdb.c types/check-rtnl_neightbl.c \
+       types/check-rtnl_route.c types/check-tee.c types/check-v4l2.c \
+       unwind.c unwind.h unwind-libdw.c unwind-libunwind.c
+am__objects_3 =
+am__dirstamp = $(am__leading_dot)dirstamp
+am__objects_4 = types/libstrace_a-check-btrfs.$(OBJEXT) \
+       types/libstrace_a-check-cryptouser.$(OBJEXT) \
+       types/libstrace_a-check-evdev.$(OBJEXT) \
+       types/libstrace_a-check-io_uring.$(OBJEXT) \
+       types/libstrace_a-check-loop.$(OBJEXT) \
+       types/libstrace_a-check-openat2.$(OBJEXT) \
+       types/libstrace_a-check-rtnl_link.$(OBJEXT) \
+       types/libstrace_a-check-rtnl_mdb.$(OBJEXT) \
+       types/libstrace_a-check-rtnl_neightbl.$(OBJEXT) \
+       types/libstrace_a-check-rtnl_route.$(OBJEXT) \
+       types/libstrace_a-check-tee.$(OBJEXT) \
+       types/libstrace_a-check-v4l2.$(OBJEXT)
+am__objects_5 = libstrace_a-bpf_attr_check.$(OBJEXT) $(am__objects_4)
+@ENABLE_STACKTRACE_TRUE@am__objects_6 = libstrace_a-unwind.$(OBJEXT)
+@ENABLE_STACKTRACE_TRUE@@USE_LIBDW_TRUE@am__objects_7 = libstrace_a-unwind-libdw.$(OBJEXT)
+@ENABLE_STACKTRACE_TRUE@@USE_LIBUNWIND_TRUE@am__objects_8 = libstrace_a-unwind-libunwind.$(OBJEXT)
+am_libstrace_a_OBJECTS = libstrace_a-access.$(OBJEXT) \
+       libstrace_a-affinity.$(OBJEXT) libstrace_a-aio.$(OBJEXT) \
+       libstrace_a-alpha.$(OBJEXT) \
+       libstrace_a-basic_filters.$(OBJEXT) libstrace_a-bind.$(OBJEXT) \
+       libstrace_a-bjm.$(OBJEXT) libstrace_a-block.$(OBJEXT) \
+       libstrace_a-bpf.$(OBJEXT) libstrace_a-bpf_filter.$(OBJEXT) \
+       libstrace_a-bpf_seccomp_filter.$(OBJEXT) \
+       libstrace_a-bpf_sock_filter.$(OBJEXT) \
+       libstrace_a-btrfs.$(OBJEXT) libstrace_a-cacheflush.$(OBJEXT) \
+       libstrace_a-capability.$(OBJEXT) libstrace_a-chdir.$(OBJEXT) \
+       libstrace_a-chmod.$(OBJEXT) libstrace_a-clone.$(OBJEXT) \
+       libstrace_a-close_range.$(OBJEXT) \
+       libstrace_a-copy_file_range.$(OBJEXT) \
+       libstrace_a-count.$(OBJEXT) libstrace_a-delay.$(OBJEXT) \
+       libstrace_a-desc.$(OBJEXT) libstrace_a-dirent.$(OBJEXT) \
+       libstrace_a-dirent64.$(OBJEXT) \
+       libstrace_a-dirent_types.$(OBJEXT) libstrace_a-dm.$(OBJEXT) \
+       libstrace_a-dup.$(OBJEXT) libstrace_a-dyxlat.$(OBJEXT) \
+       libstrace_a-epoll.$(OBJEXT) libstrace_a-error_prints.$(OBJEXT) \
+       libstrace_a-evdev.$(OBJEXT) libstrace_a-evdev_mpers.$(OBJEXT) \
+       libstrace_a-eventfd.$(OBJEXT) libstrace_a-execve.$(OBJEXT) \
+       libstrace_a-fadvise.$(OBJEXT) libstrace_a-fallocate.$(OBJEXT) \
+       libstrace_a-fanotify.$(OBJEXT) libstrace_a-fchownat.$(OBJEXT) \
+       libstrace_a-fcntl.$(OBJEXT) \
+       libstrace_a-fetch_bpf_fprog.$(OBJEXT) \
+       libstrace_a-fetch_indirect_syscall_args.$(OBJEXT) \
+       libstrace_a-fetch_struct_flock.$(OBJEXT) \
+       libstrace_a-fetch_struct_keyctl_kdf_params.$(OBJEXT) \
+       libstrace_a-fetch_struct_mmsghdr.$(OBJEXT) \
+       libstrace_a-fetch_struct_msghdr.$(OBJEXT) \
+       libstrace_a-fetch_struct_stat.$(OBJEXT) \
+       libstrace_a-fetch_struct_stat64.$(OBJEXT) \
+       libstrace_a-fetch_struct_statfs.$(OBJEXT) \
+       libstrace_a-fetch_struct_xfs_quotastat.$(OBJEXT) \
+       libstrace_a-file_handle.$(OBJEXT) \
+       libstrace_a-file_ioctl.$(OBJEXT) \
+       libstrace_a-filter_qualify.$(OBJEXT) \
+       libstrace_a-filter_seccomp.$(OBJEXT) \
+       libstrace_a-flock.$(OBJEXT) libstrace_a-fs_x_ioctl.$(OBJEXT) \
+       libstrace_a-fsconfig.$(OBJEXT) libstrace_a-fsmount.$(OBJEXT) \
+       libstrace_a-fsopen.$(OBJEXT) libstrace_a-fspick.$(OBJEXT) \
+       libstrace_a-fstatfs.$(OBJEXT) libstrace_a-fstatfs64.$(OBJEXT) \
+       libstrace_a-futex.$(OBJEXT) \
+       libstrace_a-get_personality.$(OBJEXT) \
+       libstrace_a-get_robust_list.$(OBJEXT) \
+       libstrace_a-getcpu.$(OBJEXT) libstrace_a-getcwd.$(OBJEXT) \
+       libstrace_a-getpagesize.$(OBJEXT) libstrace_a-getpid.$(OBJEXT) \
+       libstrace_a-getrandom.$(OBJEXT) libstrace_a-hdio.$(OBJEXT) \
+       libstrace_a-hostname.$(OBJEXT) libstrace_a-inotify.$(OBJEXT) \
+       libstrace_a-inotify_ioctl.$(OBJEXT) libstrace_a-io.$(OBJEXT) \
+       libstrace_a-io_uring.$(OBJEXT) libstrace_a-ioctl.$(OBJEXT) \
+       libstrace_a-ioperm.$(OBJEXT) libstrace_a-iopl.$(OBJEXT) \
+       libstrace_a-ioprio.$(OBJEXT) libstrace_a-ipc.$(OBJEXT) \
+       libstrace_a-ipc_msg.$(OBJEXT) libstrace_a-ipc_msgctl.$(OBJEXT) \
+       libstrace_a-ipc_sem.$(OBJEXT) libstrace_a-ipc_semctl.$(OBJEXT) \
+       libstrace_a-ipc_shm.$(OBJEXT) libstrace_a-ipc_shmctl.$(OBJEXT) \
+       libstrace_a-kcmp.$(OBJEXT) libstrace_a-kexec.$(OBJEXT) \
+       libstrace_a-keyctl.$(OBJEXT) libstrace_a-kvm.$(OBJEXT) \
+       libstrace_a-ldt.$(OBJEXT) libstrace_a-link.$(OBJEXT) \
+       libstrace_a-listen.$(OBJEXT) \
+       libstrace_a-lookup_dcookie.$(OBJEXT) \
+       libstrace_a-loop.$(OBJEXT) libstrace_a-lseek.$(OBJEXT) \
+       libstrace_a-mem.$(OBJEXT) libstrace_a-membarrier.$(OBJEXT) \
+       libstrace_a-memfd_create.$(OBJEXT) libstrace_a-mknod.$(OBJEXT) \
+       libstrace_a-mmap_cache.$(OBJEXT) \
+       libstrace_a-mmap_notify.$(OBJEXT) \
+       libstrace_a-mmsghdr.$(OBJEXT) libstrace_a-mount.$(OBJEXT) \
+       libstrace_a-move_mount.$(OBJEXT) libstrace_a-mq.$(OBJEXT) \
+       libstrace_a-msghdr.$(OBJEXT) libstrace_a-mtd.$(OBJEXT) \
+       libstrace_a-nbd_ioctl.$(OBJEXT) libstrace_a-net.$(OBJEXT) \
+       libstrace_a-netlink.$(OBJEXT) \
+       libstrace_a-netlink_crypto.$(OBJEXT) \
+       libstrace_a-netlink_inet_diag.$(OBJEXT) \
+       libstrace_a-netlink_kobject_uevent.$(OBJEXT) \
+       libstrace_a-netlink_netfilter.$(OBJEXT) \
+       libstrace_a-netlink_netlink_diag.$(OBJEXT) \
+       libstrace_a-netlink_packet_diag.$(OBJEXT) \
+       libstrace_a-netlink_route.$(OBJEXT) \
+       libstrace_a-netlink_selinux.$(OBJEXT) \
+       libstrace_a-netlink_smc_diag.$(OBJEXT) \
+       libstrace_a-netlink_sock_diag.$(OBJEXT) \
+       libstrace_a-netlink_unix_diag.$(OBJEXT) \
+       libstrace_a-nlattr.$(OBJEXT) libstrace_a-nsfs.$(OBJEXT) \
+       libstrace_a-numa.$(OBJEXT) libstrace_a-number_set.$(OBJEXT) \
+       libstrace_a-oldstat.$(OBJEXT) libstrace_a-open.$(OBJEXT) \
+       libstrace_a-open_tree.$(OBJEXT) \
+       libstrace_a-or1k_atomic.$(OBJEXT) \
+       libstrace_a-pathtrace.$(OBJEXT) libstrace_a-perf.$(OBJEXT) \
+       libstrace_a-perf_ioctl.$(OBJEXT) \
+       libstrace_a-personality.$(OBJEXT) \
+       libstrace_a-pidfd_getfd.$(OBJEXT) \
+       libstrace_a-pidfd_open.$(OBJEXT) libstrace_a-pidns.$(OBJEXT) \
+       libstrace_a-pkeys.$(OBJEXT) libstrace_a-poll.$(OBJEXT) \
+       libstrace_a-prctl.$(OBJEXT) \
+       libstrace_a-print_aio_sigset.$(OBJEXT) \
+       libstrace_a-print_dev_t.$(OBJEXT) \
+       libstrace_a-print_group_req.$(OBJEXT) \
+       libstrace_a-print_ifindex.$(OBJEXT) \
+       libstrace_a-print_instruction_pointer.$(OBJEXT) \
+       libstrace_a-print_kernel_version.$(OBJEXT) \
+       libstrace_a-print_mac.$(OBJEXT) \
+       libstrace_a-print_mq_attr.$(OBJEXT) \
+       libstrace_a-print_msgbuf.$(OBJEXT) \
+       libstrace_a-print_sg_req_info.$(OBJEXT) \
+       libstrace_a-print_sigevent.$(OBJEXT) \
+       libstrace_a-print_statfs.$(OBJEXT) \
+       libstrace_a-print_struct_stat.$(OBJEXT) \
+       libstrace_a-print_syscall_number.$(OBJEXT) \
+       libstrace_a-print_time.$(OBJEXT) \
+       libstrace_a-print_timespec32.$(OBJEXT) \
+       libstrace_a-print_timespec64.$(OBJEXT) \
+       libstrace_a-print_timeval.$(OBJEXT) \
+       libstrace_a-print_timeval64.$(OBJEXT) \
+       libstrace_a-print_timex.$(OBJEXT) \
+       libstrace_a-printmode.$(OBJEXT) \
+       libstrace_a-printrusage.$(OBJEXT) \
+       libstrace_a-printsiginfo.$(OBJEXT) \
+       libstrace_a-process.$(OBJEXT) libstrace_a-process_vm.$(OBJEXT) \
+       libstrace_a-ptp.$(OBJEXT) \
+       libstrace_a-ptrace_syscall_info.$(OBJEXT) \
+       libstrace_a-quota.$(OBJEXT) libstrace_a-random_ioctl.$(OBJEXT) \
+       libstrace_a-readahead.$(OBJEXT) libstrace_a-readlink.$(OBJEXT) \
+       libstrace_a-reboot.$(OBJEXT) libstrace_a-renameat.$(OBJEXT) \
+       libstrace_a-resource.$(OBJEXT) libstrace_a-retval.$(OBJEXT) \
+       libstrace_a-riscv.$(OBJEXT) libstrace_a-rt_sigframe.$(OBJEXT) \
+       libstrace_a-rt_sigreturn.$(OBJEXT) libstrace_a-rtc.$(OBJEXT) \
+       libstrace_a-rtnl_addr.$(OBJEXT) \
+       libstrace_a-rtnl_addrlabel.$(OBJEXT) \
+       libstrace_a-rtnl_dcb.$(OBJEXT) libstrace_a-rtnl_link.$(OBJEXT) \
+       libstrace_a-rtnl_mdb.$(OBJEXT) \
+       libstrace_a-rtnl_neigh.$(OBJEXT) \
+       libstrace_a-rtnl_neightbl.$(OBJEXT) \
+       libstrace_a-rtnl_netconf.$(OBJEXT) \
+       libstrace_a-rtnl_nsid.$(OBJEXT) \
+       libstrace_a-rtnl_route.$(OBJEXT) \
+       libstrace_a-rtnl_rule.$(OBJEXT) libstrace_a-rtnl_tc.$(OBJEXT) \
+       libstrace_a-rtnl_tc_action.$(OBJEXT) \
+       libstrace_a-s390.$(OBJEXT) libstrace_a-sched.$(OBJEXT) \
+       libstrace_a-scsi.$(OBJEXT) libstrace_a-seccomp.$(OBJEXT) \
+       libstrace_a-sendfile.$(OBJEXT) libstrace_a-sg_io_v3.$(OBJEXT) \
+       libstrace_a-sg_io_v4.$(OBJEXT) libstrace_a-shutdown.$(OBJEXT) \
+       libstrace_a-sigaltstack.$(OBJEXT) libstrace_a-signal.$(OBJEXT) \
+       libstrace_a-signalfd.$(OBJEXT) libstrace_a-sigreturn.$(OBJEXT) \
+       libstrace_a-sock.$(OBJEXT) libstrace_a-sockaddr.$(OBJEXT) \
+       libstrace_a-socketcall.$(OBJEXT) \
+       libstrace_a-socketutils.$(OBJEXT) libstrace_a-sparc.$(OBJEXT) \
+       libstrace_a-sram_alloc.$(OBJEXT) \
+       libstrace_a-stage_output.$(OBJEXT) libstrace_a-stat.$(OBJEXT) \
+       libstrace_a-stat64.$(OBJEXT) libstrace_a-statfs.$(OBJEXT) \
+       libstrace_a-statfs.$(OBJEXT) libstrace_a-statfs64.$(OBJEXT) \
+       libstrace_a-statx.$(OBJEXT) \
+       libstrace_a-string_to_uint.$(OBJEXT) \
+       libstrace_a-swapon.$(OBJEXT) \
+       libstrace_a-sync_file_range.$(OBJEXT) \
+       libstrace_a-sync_file_range2.$(OBJEXT) \
+       libstrace_a-syscall.$(OBJEXT) libstrace_a-sysctl.$(OBJEXT) \
+       libstrace_a-sysinfo.$(OBJEXT) libstrace_a-syslog.$(OBJEXT) \
+       libstrace_a-sysmips.$(OBJEXT) libstrace_a-tee.$(OBJEXT) \
+       libstrace_a-term.$(OBJEXT) libstrace_a-time.$(OBJEXT) \
+       libstrace_a-times.$(OBJEXT) libstrace_a-trie.$(OBJEXT) \
+       libstrace_a-truncate.$(OBJEXT) libstrace_a-ubi.$(OBJEXT) \
+       libstrace_a-ucopy.$(OBJEXT) libstrace_a-uid.$(OBJEXT) \
+       libstrace_a-uid16.$(OBJEXT) libstrace_a-umask.$(OBJEXT) \
+       libstrace_a-umount.$(OBJEXT) libstrace_a-uname.$(OBJEXT) \
+       libstrace_a-upeek.$(OBJEXT) libstrace_a-upoke.$(OBJEXT) \
+       libstrace_a-userfaultfd.$(OBJEXT) libstrace_a-ustat.$(OBJEXT) \
+       libstrace_a-util.$(OBJEXT) libstrace_a-utime.$(OBJEXT) \
+       libstrace_a-utimes.$(OBJEXT) libstrace_a-v4l2.$(OBJEXT) \
+       libstrace_a-wait.$(OBJEXT) \
+       libstrace_a-watchdog_ioctl.$(OBJEXT) \
+       libstrace_a-xattr.$(OBJEXT) libstrace_a-xgetdents.$(OBJEXT) \
+       libstrace_a-xlat.$(OBJEXT) libstrace_a-xmalloc.$(OBJEXT) \
+       $(am__objects_3) $(am__objects_5) $(am__objects_6) \
+       $(am__objects_7) $(am__objects_8)
+libstrace_a_OBJECTS = $(am_libstrace_a_OBJECTS)
+am_strace_OBJECTS = strace-strace.$(OBJEXT)
 strace_OBJECTS = $(am_strace_OBJECTS)
 am__DEPENDENCIES_1 =
 @ENABLE_STACKTRACE_TRUE@@USE_LIBDW_TRUE@am__DEPENDENCIES_2 =  \
@@ -546,6 +657,7 @@ am__depfiles_remade = ./$(DEPDIR)/libmpers_m32_a-block.Po \
        ./$(DEPDIR)/libmpers_m32_a-fetch_struct_xfs_quotastat.Po \
        ./$(DEPDIR)/libmpers_m32_a-hdio.Po \
        ./$(DEPDIR)/libmpers_m32_a-ipc_msgctl.Po \
+       ./$(DEPDIR)/libmpers_m32_a-ipc_semctl.Po \
        ./$(DEPDIR)/libmpers_m32_a-ipc_shmctl.Po \
        ./$(DEPDIR)/libmpers_m32_a-loop.Po \
        ./$(DEPDIR)/libmpers_m32_a-mtd.Po \
@@ -557,7 +669,6 @@ am__depfiles_remade = ./$(DEPDIR)/libmpers_m32_a-block.Po \
        ./$(DEPDIR)/libmpers_m32_a-print_sg_req_info.Po \
        ./$(DEPDIR)/libmpers_m32_a-print_sigevent.Po \
        ./$(DEPDIR)/libmpers_m32_a-print_time.Po \
-       ./$(DEPDIR)/libmpers_m32_a-print_timespec.Po \
        ./$(DEPDIR)/libmpers_m32_a-print_timeval.Po \
        ./$(DEPDIR)/libmpers_m32_a-printrusage.Po \
        ./$(DEPDIR)/libmpers_m32_a-printsiginfo.Po \
@@ -586,6 +697,7 @@ am__depfiles_remade = ./$(DEPDIR)/libmpers_m32_a-block.Po \
        ./$(DEPDIR)/libmpers_mx32_a-fetch_struct_xfs_quotastat.Po \
        ./$(DEPDIR)/libmpers_mx32_a-hdio.Po \
        ./$(DEPDIR)/libmpers_mx32_a-ipc_msgctl.Po \
+       ./$(DEPDIR)/libmpers_mx32_a-ipc_semctl.Po \
        ./$(DEPDIR)/libmpers_mx32_a-ipc_shmctl.Po \
        ./$(DEPDIR)/libmpers_mx32_a-loop.Po \
        ./$(DEPDIR)/libmpers_mx32_a-mtd.Po \
@@ -597,7 +709,6 @@ am__depfiles_remade = ./$(DEPDIR)/libmpers_m32_a-block.Po \
        ./$(DEPDIR)/libmpers_mx32_a-print_sg_req_info.Po \
        ./$(DEPDIR)/libmpers_mx32_a-print_sigevent.Po \
        ./$(DEPDIR)/libmpers_mx32_a-print_time.Po \
-       ./$(DEPDIR)/libmpers_mx32_a-print_timespec.Po \
        ./$(DEPDIR)/libmpers_mx32_a-print_timeval.Po \
        ./$(DEPDIR)/libmpers_mx32_a-printrusage.Po \
        ./$(DEPDIR)/libmpers_mx32_a-printsiginfo.Po \
@@ -611,170 +722,272 @@ am__depfiles_remade = ./$(DEPDIR)/libmpers_m32_a-block.Po \
        ./$(DEPDIR)/libmpers_mx32_a-ustat.Po \
        ./$(DEPDIR)/libmpers_mx32_a-utime.Po \
        ./$(DEPDIR)/libmpers_mx32_a-v4l2.Po \
+       ./$(DEPDIR)/libstrace_a-access.Po \
+       ./$(DEPDIR)/libstrace_a-affinity.Po \
+       ./$(DEPDIR)/libstrace_a-aio.Po \
+       ./$(DEPDIR)/libstrace_a-alpha.Po \
+       ./$(DEPDIR)/libstrace_a-basic_filters.Po \
+       ./$(DEPDIR)/libstrace_a-bind.Po ./$(DEPDIR)/libstrace_a-bjm.Po \
+       ./$(DEPDIR)/libstrace_a-block.Po \
+       ./$(DEPDIR)/libstrace_a-bpf.Po \
+       ./$(DEPDIR)/libstrace_a-bpf_attr_check.Po \
+       ./$(DEPDIR)/libstrace_a-bpf_filter.Po \
+       ./$(DEPDIR)/libstrace_a-bpf_seccomp_filter.Po \
+       ./$(DEPDIR)/libstrace_a-bpf_sock_filter.Po \
+       ./$(DEPDIR)/libstrace_a-btrfs.Po \
+       ./$(DEPDIR)/libstrace_a-cacheflush.Po \
+       ./$(DEPDIR)/libstrace_a-capability.Po \
+       ./$(DEPDIR)/libstrace_a-chdir.Po \
+       ./$(DEPDIR)/libstrace_a-chmod.Po \
+       ./$(DEPDIR)/libstrace_a-clone.Po \
+       ./$(DEPDIR)/libstrace_a-close_range.Po \
+       ./$(DEPDIR)/libstrace_a-copy_file_range.Po \
+       ./$(DEPDIR)/libstrace_a-count.Po \
+       ./$(DEPDIR)/libstrace_a-delay.Po \
+       ./$(DEPDIR)/libstrace_a-desc.Po \
+       ./$(DEPDIR)/libstrace_a-dirent.Po \
+       ./$(DEPDIR)/libstrace_a-dirent64.Po \
+       ./$(DEPDIR)/libstrace_a-dirent_types.Po \
+       ./$(DEPDIR)/libstrace_a-dm.Po ./$(DEPDIR)/libstrace_a-dup.Po \
+       ./$(DEPDIR)/libstrace_a-dyxlat.Po \
+       ./$(DEPDIR)/libstrace_a-epoll.Po \
+       ./$(DEPDIR)/libstrace_a-error_prints.Po \
+       ./$(DEPDIR)/libstrace_a-evdev.Po \
+       ./$(DEPDIR)/libstrace_a-evdev_mpers.Po \
+       ./$(DEPDIR)/libstrace_a-eventfd.Po \
+       ./$(DEPDIR)/libstrace_a-execve.Po \
+       ./$(DEPDIR)/libstrace_a-fadvise.Po \
+       ./$(DEPDIR)/libstrace_a-fallocate.Po \
+       ./$(DEPDIR)/libstrace_a-fanotify.Po \
+       ./$(DEPDIR)/libstrace_a-fchownat.Po \
+       ./$(DEPDIR)/libstrace_a-fcntl.Po \
+       ./$(DEPDIR)/libstrace_a-fetch_bpf_fprog.Po \
        ./$(DEPDIR)/libstrace_a-fetch_indirect_syscall_args.Po \
+       ./$(DEPDIR)/libstrace_a-fetch_struct_flock.Po \
+       ./$(DEPDIR)/libstrace_a-fetch_struct_keyctl_kdf_params.Po \
+       ./$(DEPDIR)/libstrace_a-fetch_struct_mmsghdr.Po \
+       ./$(DEPDIR)/libstrace_a-fetch_struct_msghdr.Po \
+       ./$(DEPDIR)/libstrace_a-fetch_struct_stat.Po \
+       ./$(DEPDIR)/libstrace_a-fetch_struct_stat64.Po \
+       ./$(DEPDIR)/libstrace_a-fetch_struct_statfs.Po \
+       ./$(DEPDIR)/libstrace_a-fetch_struct_xfs_quotastat.Po \
+       ./$(DEPDIR)/libstrace_a-file_handle.Po \
+       ./$(DEPDIR)/libstrace_a-file_ioctl.Po \
+       ./$(DEPDIR)/libstrace_a-filter_qualify.Po \
+       ./$(DEPDIR)/libstrace_a-filter_seccomp.Po \
+       ./$(DEPDIR)/libstrace_a-flock.Po \
+       ./$(DEPDIR)/libstrace_a-fs_x_ioctl.Po \
+       ./$(DEPDIR)/libstrace_a-fsconfig.Po \
+       ./$(DEPDIR)/libstrace_a-fsmount.Po \
+       ./$(DEPDIR)/libstrace_a-fsopen.Po \
+       ./$(DEPDIR)/libstrace_a-fspick.Po \
        ./$(DEPDIR)/libstrace_a-fstatfs.Po \
        ./$(DEPDIR)/libstrace_a-fstatfs64.Po \
+       ./$(DEPDIR)/libstrace_a-futex.Po \
+       ./$(DEPDIR)/libstrace_a-get_personality.Po \
+       ./$(DEPDIR)/libstrace_a-get_robust_list.Po \
+       ./$(DEPDIR)/libstrace_a-getcpu.Po \
+       ./$(DEPDIR)/libstrace_a-getcwd.Po \
        ./$(DEPDIR)/libstrace_a-getpagesize.Po \
+       ./$(DEPDIR)/libstrace_a-getpid.Po \
+       ./$(DEPDIR)/libstrace_a-getrandom.Po \
+       ./$(DEPDIR)/libstrace_a-hdio.Po \
+       ./$(DEPDIR)/libstrace_a-hostname.Po \
+       ./$(DEPDIR)/libstrace_a-inotify.Po \
+       ./$(DEPDIR)/libstrace_a-inotify_ioctl.Po \
+       ./$(DEPDIR)/libstrace_a-io.Po \
+       ./$(DEPDIR)/libstrace_a-io_uring.Po \
+       ./$(DEPDIR)/libstrace_a-ioctl.Po \
+       ./$(DEPDIR)/libstrace_a-ioperm.Po \
+       ./$(DEPDIR)/libstrace_a-iopl.Po \
+       ./$(DEPDIR)/libstrace_a-ioprio.Po \
        ./$(DEPDIR)/libstrace_a-ipc.Po \
+       ./$(DEPDIR)/libstrace_a-ipc_msg.Po \
+       ./$(DEPDIR)/libstrace_a-ipc_msgctl.Po \
+       ./$(DEPDIR)/libstrace_a-ipc_sem.Po \
+       ./$(DEPDIR)/libstrace_a-ipc_semctl.Po \
+       ./$(DEPDIR)/libstrace_a-ipc_shm.Po \
+       ./$(DEPDIR)/libstrace_a-ipc_shmctl.Po \
+       ./$(DEPDIR)/libstrace_a-kcmp.Po \
+       ./$(DEPDIR)/libstrace_a-kexec.Po \
+       ./$(DEPDIR)/libstrace_a-keyctl.Po \
+       ./$(DEPDIR)/libstrace_a-kvm.Po ./$(DEPDIR)/libstrace_a-ldt.Po \
+       ./$(DEPDIR)/libstrace_a-link.Po \
+       ./$(DEPDIR)/libstrace_a-listen.Po \
+       ./$(DEPDIR)/libstrace_a-lookup_dcookie.Po \
+       ./$(DEPDIR)/libstrace_a-loop.Po \
+       ./$(DEPDIR)/libstrace_a-lseek.Po \
+       ./$(DEPDIR)/libstrace_a-mem.Po \
+       ./$(DEPDIR)/libstrace_a-membarrier.Po \
+       ./$(DEPDIR)/libstrace_a-memfd_create.Po \
+       ./$(DEPDIR)/libstrace_a-mknod.Po \
        ./$(DEPDIR)/libstrace_a-mmap_cache.Po \
+       ./$(DEPDIR)/libstrace_a-mmap_notify.Po \
+       ./$(DEPDIR)/libstrace_a-mmsghdr.Po \
+       ./$(DEPDIR)/libstrace_a-mount.Po \
+       ./$(DEPDIR)/libstrace_a-move_mount.Po \
+       ./$(DEPDIR)/libstrace_a-mq.Po \
+       ./$(DEPDIR)/libstrace_a-msghdr.Po \
+       ./$(DEPDIR)/libstrace_a-mtd.Po \
+       ./$(DEPDIR)/libstrace_a-nbd_ioctl.Po \
+       ./$(DEPDIR)/libstrace_a-net.Po \
+       ./$(DEPDIR)/libstrace_a-netlink.Po \
+       ./$(DEPDIR)/libstrace_a-netlink_crypto.Po \
+       ./$(DEPDIR)/libstrace_a-netlink_inet_diag.Po \
+       ./$(DEPDIR)/libstrace_a-netlink_kobject_uevent.Po \
+       ./$(DEPDIR)/libstrace_a-netlink_netfilter.Po \
+       ./$(DEPDIR)/libstrace_a-netlink_netlink_diag.Po \
+       ./$(DEPDIR)/libstrace_a-netlink_packet_diag.Po \
+       ./$(DEPDIR)/libstrace_a-netlink_route.Po \
+       ./$(DEPDIR)/libstrace_a-netlink_selinux.Po \
+       ./$(DEPDIR)/libstrace_a-netlink_smc_diag.Po \
+       ./$(DEPDIR)/libstrace_a-netlink_sock_diag.Po \
+       ./$(DEPDIR)/libstrace_a-netlink_unix_diag.Po \
+       ./$(DEPDIR)/libstrace_a-nlattr.Po \
+       ./$(DEPDIR)/libstrace_a-nsfs.Po \
+       ./$(DEPDIR)/libstrace_a-numa.Po \
+       ./$(DEPDIR)/libstrace_a-number_set.Po \
+       ./$(DEPDIR)/libstrace_a-oldstat.Po \
+       ./$(DEPDIR)/libstrace_a-open.Po \
+       ./$(DEPDIR)/libstrace_a-open_tree.Po \
+       ./$(DEPDIR)/libstrace_a-or1k_atomic.Po \
+       ./$(DEPDIR)/libstrace_a-pathtrace.Po \
+       ./$(DEPDIR)/libstrace_a-perf.Po \
+       ./$(DEPDIR)/libstrace_a-perf_ioctl.Po \
+       ./$(DEPDIR)/libstrace_a-personality.Po \
+       ./$(DEPDIR)/libstrace_a-pidfd_getfd.Po \
+       ./$(DEPDIR)/libstrace_a-pidfd_open.Po \
+       ./$(DEPDIR)/libstrace_a-pidns.Po \
+       ./$(DEPDIR)/libstrace_a-pkeys.Po \
+       ./$(DEPDIR)/libstrace_a-poll.Po \
+       ./$(DEPDIR)/libstrace_a-prctl.Po \
+       ./$(DEPDIR)/libstrace_a-print_aio_sigset.Po \
+       ./$(DEPDIR)/libstrace_a-print_dev_t.Po \
+       ./$(DEPDIR)/libstrace_a-print_group_req.Po \
+       ./$(DEPDIR)/libstrace_a-print_ifindex.Po \
+       ./$(DEPDIR)/libstrace_a-print_instruction_pointer.Po \
+       ./$(DEPDIR)/libstrace_a-print_kernel_version.Po \
+       ./$(DEPDIR)/libstrace_a-print_mac.Po \
+       ./$(DEPDIR)/libstrace_a-print_mq_attr.Po \
+       ./$(DEPDIR)/libstrace_a-print_msgbuf.Po \
+       ./$(DEPDIR)/libstrace_a-print_sg_req_info.Po \
+       ./$(DEPDIR)/libstrace_a-print_sigevent.Po \
+       ./$(DEPDIR)/libstrace_a-print_statfs.Po \
+       ./$(DEPDIR)/libstrace_a-print_struct_stat.Po \
+       ./$(DEPDIR)/libstrace_a-print_syscall_number.Po \
+       ./$(DEPDIR)/libstrace_a-print_time.Po \
+       ./$(DEPDIR)/libstrace_a-print_timespec32.Po \
+       ./$(DEPDIR)/libstrace_a-print_timespec64.Po \
+       ./$(DEPDIR)/libstrace_a-print_timeval.Po \
+       ./$(DEPDIR)/libstrace_a-print_timeval64.Po \
+       ./$(DEPDIR)/libstrace_a-print_timex.Po \
+       ./$(DEPDIR)/libstrace_a-printmode.Po \
+       ./$(DEPDIR)/libstrace_a-printrusage.Po \
+       ./$(DEPDIR)/libstrace_a-printsiginfo.Po \
+       ./$(DEPDIR)/libstrace_a-process.Po \
+       ./$(DEPDIR)/libstrace_a-process_vm.Po \
+       ./$(DEPDIR)/libstrace_a-ptp.Po \
+       ./$(DEPDIR)/libstrace_a-ptrace_syscall_info.Po \
+       ./$(DEPDIR)/libstrace_a-quota.Po \
+       ./$(DEPDIR)/libstrace_a-random_ioctl.Po \
+       ./$(DEPDIR)/libstrace_a-readahead.Po \
+       ./$(DEPDIR)/libstrace_a-readlink.Po \
+       ./$(DEPDIR)/libstrace_a-reboot.Po \
+       ./$(DEPDIR)/libstrace_a-renameat.Po \
+       ./$(DEPDIR)/libstrace_a-resource.Po \
+       ./$(DEPDIR)/libstrace_a-retval.Po \
+       ./$(DEPDIR)/libstrace_a-riscv.Po \
+       ./$(DEPDIR)/libstrace_a-rt_sigframe.Po \
+       ./$(DEPDIR)/libstrace_a-rt_sigreturn.Po \
+       ./$(DEPDIR)/libstrace_a-rtc.Po \
+       ./$(DEPDIR)/libstrace_a-rtnl_addr.Po \
+       ./$(DEPDIR)/libstrace_a-rtnl_addrlabel.Po \
+       ./$(DEPDIR)/libstrace_a-rtnl_dcb.Po \
+       ./$(DEPDIR)/libstrace_a-rtnl_link.Po \
+       ./$(DEPDIR)/libstrace_a-rtnl_mdb.Po \
+       ./$(DEPDIR)/libstrace_a-rtnl_neigh.Po \
+       ./$(DEPDIR)/libstrace_a-rtnl_neightbl.Po \
+       ./$(DEPDIR)/libstrace_a-rtnl_netconf.Po \
+       ./$(DEPDIR)/libstrace_a-rtnl_nsid.Po \
+       ./$(DEPDIR)/libstrace_a-rtnl_route.Po \
+       ./$(DEPDIR)/libstrace_a-rtnl_rule.Po \
+       ./$(DEPDIR)/libstrace_a-rtnl_tc.Po \
+       ./$(DEPDIR)/libstrace_a-rtnl_tc_action.Po \
+       ./$(DEPDIR)/libstrace_a-s390.Po \
+       ./$(DEPDIR)/libstrace_a-sched.Po \
+       ./$(DEPDIR)/libstrace_a-scsi.Po \
+       ./$(DEPDIR)/libstrace_a-seccomp.Po \
+       ./$(DEPDIR)/libstrace_a-sendfile.Po \
+       ./$(DEPDIR)/libstrace_a-sg_io_v3.Po \
+       ./$(DEPDIR)/libstrace_a-sg_io_v4.Po \
+       ./$(DEPDIR)/libstrace_a-shutdown.Po \
+       ./$(DEPDIR)/libstrace_a-sigaltstack.Po \
+       ./$(DEPDIR)/libstrace_a-signal.Po \
+       ./$(DEPDIR)/libstrace_a-signalfd.Po \
        ./$(DEPDIR)/libstrace_a-sigreturn.Po \
+       ./$(DEPDIR)/libstrace_a-sock.Po \
+       ./$(DEPDIR)/libstrace_a-sockaddr.Po \
        ./$(DEPDIR)/libstrace_a-socketcall.Po \
+       ./$(DEPDIR)/libstrace_a-socketutils.Po \
+       ./$(DEPDIR)/libstrace_a-sparc.Po \
+       ./$(DEPDIR)/libstrace_a-sram_alloc.Po \
+       ./$(DEPDIR)/libstrace_a-stage_output.Po \
+       ./$(DEPDIR)/libstrace_a-stat.Po \
+       ./$(DEPDIR)/libstrace_a-stat64.Po \
        ./$(DEPDIR)/libstrace_a-statfs.Po \
        ./$(DEPDIR)/libstrace_a-statfs64.Po \
+       ./$(DEPDIR)/libstrace_a-statx.Po \
+       ./$(DEPDIR)/libstrace_a-string_to_uint.Po \
+       ./$(DEPDIR)/libstrace_a-swapon.Po \
        ./$(DEPDIR)/libstrace_a-sync_file_range.Po \
        ./$(DEPDIR)/libstrace_a-sync_file_range2.Po \
+       ./$(DEPDIR)/libstrace_a-syscall.Po \
+       ./$(DEPDIR)/libstrace_a-sysctl.Po \
+       ./$(DEPDIR)/libstrace_a-sysinfo.Po \
+       ./$(DEPDIR)/libstrace_a-syslog.Po \
+       ./$(DEPDIR)/libstrace_a-sysmips.Po \
+       ./$(DEPDIR)/libstrace_a-tee.Po ./$(DEPDIR)/libstrace_a-term.Po \
+       ./$(DEPDIR)/libstrace_a-time.Po \
+       ./$(DEPDIR)/libstrace_a-times.Po \
+       ./$(DEPDIR)/libstrace_a-trie.Po \
+       ./$(DEPDIR)/libstrace_a-truncate.Po \
+       ./$(DEPDIR)/libstrace_a-ubi.Po \
+       ./$(DEPDIR)/libstrace_a-ucopy.Po \
+       ./$(DEPDIR)/libstrace_a-uid.Po \
+       ./$(DEPDIR)/libstrace_a-uid16.Po \
+       ./$(DEPDIR)/libstrace_a-umask.Po \
+       ./$(DEPDIR)/libstrace_a-umount.Po \
+       ./$(DEPDIR)/libstrace_a-uname.Po \
+       ./$(DEPDIR)/libstrace_a-unwind-libdw.Po \
+       ./$(DEPDIR)/libstrace_a-unwind-libunwind.Po \
+       ./$(DEPDIR)/libstrace_a-unwind.Po \
        ./$(DEPDIR)/libstrace_a-upeek.Po \
-       ./$(DEPDIR)/libstrace_a-upoke.Po ./$(DEPDIR)/strace-access.Po \
-       ./$(DEPDIR)/strace-affinity.Po ./$(DEPDIR)/strace-aio.Po \
-       ./$(DEPDIR)/strace-alpha.Po \
-       ./$(DEPDIR)/strace-basic_filters.Po ./$(DEPDIR)/strace-bind.Po \
-       ./$(DEPDIR)/strace-bjm.Po ./$(DEPDIR)/strace-block.Po \
-       ./$(DEPDIR)/strace-bpf.Po ./$(DEPDIR)/strace-bpf_attr_check.Po \
-       ./$(DEPDIR)/strace-bpf_filter.Po \
-       ./$(DEPDIR)/strace-bpf_seccomp_filter.Po \
-       ./$(DEPDIR)/strace-bpf_sock_filter.Po \
-       ./$(DEPDIR)/strace-btrfs.Po ./$(DEPDIR)/strace-cacheflush.Po \
-       ./$(DEPDIR)/strace-capability.Po ./$(DEPDIR)/strace-chdir.Po \
-       ./$(DEPDIR)/strace-chmod.Po ./$(DEPDIR)/strace-clone.Po \
-       ./$(DEPDIR)/strace-copy_file_range.Po \
-       ./$(DEPDIR)/strace-count.Po ./$(DEPDIR)/strace-delay.Po \
-       ./$(DEPDIR)/strace-desc.Po ./$(DEPDIR)/strace-dirent.Po \
-       ./$(DEPDIR)/strace-dirent64.Po ./$(DEPDIR)/strace-dm.Po \
-       ./$(DEPDIR)/strace-dyxlat.Po ./$(DEPDIR)/strace-epoll.Po \
-       ./$(DEPDIR)/strace-error_prints.Po ./$(DEPDIR)/strace-evdev.Po \
-       ./$(DEPDIR)/strace-evdev_mpers.Po \
-       ./$(DEPDIR)/strace-eventfd.Po ./$(DEPDIR)/strace-execve.Po \
-       ./$(DEPDIR)/strace-fadvise.Po ./$(DEPDIR)/strace-fallocate.Po \
-       ./$(DEPDIR)/strace-fanotify.Po ./$(DEPDIR)/strace-fchownat.Po \
-       ./$(DEPDIR)/strace-fcntl.Po \
-       ./$(DEPDIR)/strace-fetch_bpf_fprog.Po \
-       ./$(DEPDIR)/strace-fetch_struct_flock.Po \
-       ./$(DEPDIR)/strace-fetch_struct_keyctl_kdf_params.Po \
-       ./$(DEPDIR)/strace-fetch_struct_mmsghdr.Po \
-       ./$(DEPDIR)/strace-fetch_struct_msghdr.Po \
-       ./$(DEPDIR)/strace-fetch_struct_stat.Po \
-       ./$(DEPDIR)/strace-fetch_struct_stat64.Po \
-       ./$(DEPDIR)/strace-fetch_struct_statfs.Po \
-       ./$(DEPDIR)/strace-fetch_struct_xfs_quotastat.Po \
-       ./$(DEPDIR)/strace-file_handle.Po \
-       ./$(DEPDIR)/strace-file_ioctl.Po \
-       ./$(DEPDIR)/strace-filter_qualify.Po \
-       ./$(DEPDIR)/strace-flock.Po ./$(DEPDIR)/strace-fs_x_ioctl.Po \
-       ./$(DEPDIR)/strace-futex.Po \
-       ./$(DEPDIR)/strace-get_personality.Po \
-       ./$(DEPDIR)/strace-get_robust_list.Po \
-       ./$(DEPDIR)/strace-getcpu.Po ./$(DEPDIR)/strace-getcwd.Po \
-       ./$(DEPDIR)/strace-getrandom.Po ./$(DEPDIR)/strace-hdio.Po \
-       ./$(DEPDIR)/strace-hostname.Po ./$(DEPDIR)/strace-inotify.Po \
-       ./$(DEPDIR)/strace-inotify_ioctl.Po ./$(DEPDIR)/strace-io.Po \
-       ./$(DEPDIR)/strace-io_uring.Po ./$(DEPDIR)/strace-ioctl.Po \
-       ./$(DEPDIR)/strace-ioperm.Po ./$(DEPDIR)/strace-iopl.Po \
-       ./$(DEPDIR)/strace-ioprio.Po ./$(DEPDIR)/strace-ipc_msg.Po \
-       ./$(DEPDIR)/strace-ipc_msgctl.Po ./$(DEPDIR)/strace-ipc_sem.Po \
-       ./$(DEPDIR)/strace-ipc_shm.Po ./$(DEPDIR)/strace-ipc_shmctl.Po \
-       ./$(DEPDIR)/strace-kcmp.Po ./$(DEPDIR)/strace-kexec.Po \
-       ./$(DEPDIR)/strace-keyctl.Po ./$(DEPDIR)/strace-kvm.Po \
-       ./$(DEPDIR)/strace-ldt.Po ./$(DEPDIR)/strace-link.Po \
-       ./$(DEPDIR)/strace-listen.Po \
-       ./$(DEPDIR)/strace-lookup_dcookie.Po \
-       ./$(DEPDIR)/strace-loop.Po ./$(DEPDIR)/strace-lseek.Po \
-       ./$(DEPDIR)/strace-mem.Po ./$(DEPDIR)/strace-membarrier.Po \
-       ./$(DEPDIR)/strace-memfd_create.Po ./$(DEPDIR)/strace-mknod.Po \
-       ./$(DEPDIR)/strace-mmap_notify.Po \
-       ./$(DEPDIR)/strace-mmsghdr.Po ./$(DEPDIR)/strace-mount.Po \
-       ./$(DEPDIR)/strace-mq.Po ./$(DEPDIR)/strace-msghdr.Po \
-       ./$(DEPDIR)/strace-mtd.Po ./$(DEPDIR)/strace-nbd_ioctl.Po \
-       ./$(DEPDIR)/strace-net.Po ./$(DEPDIR)/strace-netlink.Po \
-       ./$(DEPDIR)/strace-netlink_crypto.Po \
-       ./$(DEPDIR)/strace-netlink_inet_diag.Po \
-       ./$(DEPDIR)/strace-netlink_kobject_uevent.Po \
-       ./$(DEPDIR)/strace-netlink_netfilter.Po \
-       ./$(DEPDIR)/strace-netlink_netlink_diag.Po \
-       ./$(DEPDIR)/strace-netlink_packet_diag.Po \
-       ./$(DEPDIR)/strace-netlink_route.Po \
-       ./$(DEPDIR)/strace-netlink_selinux.Po \
-       ./$(DEPDIR)/strace-netlink_smc_diag.Po \
-       ./$(DEPDIR)/strace-netlink_sock_diag.Po \
-       ./$(DEPDIR)/strace-netlink_unix_diag.Po \
-       ./$(DEPDIR)/strace-nlattr.Po ./$(DEPDIR)/strace-nsfs.Po \
-       ./$(DEPDIR)/strace-numa.Po ./$(DEPDIR)/strace-number_set.Po \
-       ./$(DEPDIR)/strace-oldstat.Po ./$(DEPDIR)/strace-open.Po \
-       ./$(DEPDIR)/strace-or1k_atomic.Po \
-       ./$(DEPDIR)/strace-pathtrace.Po ./$(DEPDIR)/strace-perf.Po \
-       ./$(DEPDIR)/strace-perf_ioctl.Po \
-       ./$(DEPDIR)/strace-personality.Po ./$(DEPDIR)/strace-pkeys.Po \
-       ./$(DEPDIR)/strace-poll.Po ./$(DEPDIR)/strace-prctl.Po \
-       ./$(DEPDIR)/strace-print_aio_sigset.Po \
-       ./$(DEPDIR)/strace-print_dev_t.Po \
-       ./$(DEPDIR)/strace-print_group_req.Po \
-       ./$(DEPDIR)/strace-print_ifindex.Po \
-       ./$(DEPDIR)/strace-print_instruction_pointer.Po \
-       ./$(DEPDIR)/strace-print_kernel_version.Po \
-       ./$(DEPDIR)/strace-print_mac.Po \
-       ./$(DEPDIR)/strace-print_mq_attr.Po \
-       ./$(DEPDIR)/strace-print_msgbuf.Po \
-       ./$(DEPDIR)/strace-print_sg_req_info.Po \
-       ./$(DEPDIR)/strace-print_sigevent.Po \
-       ./$(DEPDIR)/strace-print_statfs.Po \
-       ./$(DEPDIR)/strace-print_struct_stat.Po \
-       ./$(DEPDIR)/strace-print_time.Po \
-       ./$(DEPDIR)/strace-print_timespec.Po \
-       ./$(DEPDIR)/strace-print_timespec32.Po \
-       ./$(DEPDIR)/strace-print_timespec64.Po \
-       ./$(DEPDIR)/strace-print_timeval.Po \
-       ./$(DEPDIR)/strace-print_timeval64.Po \
-       ./$(DEPDIR)/strace-print_timex.Po \
-       ./$(DEPDIR)/strace-printmode.Po \
-       ./$(DEPDIR)/strace-printrusage.Po \
-       ./$(DEPDIR)/strace-printsiginfo.Po \
-       ./$(DEPDIR)/strace-process.Po ./$(DEPDIR)/strace-process_vm.Po \
-       ./$(DEPDIR)/strace-ptp.Po \
-       ./$(DEPDIR)/strace-ptrace_syscall_info.Po \
-       ./$(DEPDIR)/strace-quota.Po ./$(DEPDIR)/strace-random_ioctl.Po \
-       ./$(DEPDIR)/strace-readahead.Po ./$(DEPDIR)/strace-readlink.Po \
-       ./$(DEPDIR)/strace-reboot.Po ./$(DEPDIR)/strace-renameat.Po \
-       ./$(DEPDIR)/strace-resource.Po ./$(DEPDIR)/strace-retval.Po \
-       ./$(DEPDIR)/strace-riscv.Po ./$(DEPDIR)/strace-rt_sigframe.Po \
-       ./$(DEPDIR)/strace-rt_sigreturn.Po ./$(DEPDIR)/strace-rtc.Po \
-       ./$(DEPDIR)/strace-rtnl_addr.Po \
-       ./$(DEPDIR)/strace-rtnl_addrlabel.Po \
-       ./$(DEPDIR)/strace-rtnl_dcb.Po ./$(DEPDIR)/strace-rtnl_link.Po \
-       ./$(DEPDIR)/strace-rtnl_mdb.Po \
-       ./$(DEPDIR)/strace-rtnl_neigh.Po \
-       ./$(DEPDIR)/strace-rtnl_neightbl.Po \
-       ./$(DEPDIR)/strace-rtnl_netconf.Po \
-       ./$(DEPDIR)/strace-rtnl_nsid.Po \
-       ./$(DEPDIR)/strace-rtnl_route.Po \
-       ./$(DEPDIR)/strace-rtnl_rule.Po ./$(DEPDIR)/strace-rtnl_tc.Po \
-       ./$(DEPDIR)/strace-rtnl_tc_action.Po \
-       ./$(DEPDIR)/strace-s390.Po ./$(DEPDIR)/strace-sched.Po \
-       ./$(DEPDIR)/strace-scsi.Po ./$(DEPDIR)/strace-seccomp.Po \
-       ./$(DEPDIR)/strace-sendfile.Po ./$(DEPDIR)/strace-sg_io_v3.Po \
-       ./$(DEPDIR)/strace-sg_io_v4.Po ./$(DEPDIR)/strace-shutdown.Po \
-       ./$(DEPDIR)/strace-sigaltstack.Po ./$(DEPDIR)/strace-signal.Po \
-       ./$(DEPDIR)/strace-signalfd.Po ./$(DEPDIR)/strace-sock.Po \
-       ./$(DEPDIR)/strace-sockaddr.Po \
-       ./$(DEPDIR)/strace-socketutils.Po ./$(DEPDIR)/strace-sparc.Po \
-       ./$(DEPDIR)/strace-sram_alloc.Po ./$(DEPDIR)/strace-stat.Po \
-       ./$(DEPDIR)/strace-stat64.Po ./$(DEPDIR)/strace-statfs.Po \
-       ./$(DEPDIR)/strace-statx.Po ./$(DEPDIR)/strace-strace.Po \
-       ./$(DEPDIR)/strace-string_to_uint.Po \
-       ./$(DEPDIR)/strace-swapon.Po ./$(DEPDIR)/strace-syscall.Po \
-       ./$(DEPDIR)/strace-sysctl.Po ./$(DEPDIR)/strace-sysinfo.Po \
-       ./$(DEPDIR)/strace-syslog.Po ./$(DEPDIR)/strace-sysmips.Po \
-       ./$(DEPDIR)/strace-term.Po ./$(DEPDIR)/strace-time.Po \
-       ./$(DEPDIR)/strace-times.Po ./$(DEPDIR)/strace-truncate.Po \
-       ./$(DEPDIR)/strace-ubi.Po ./$(DEPDIR)/strace-ucopy.Po \
-       ./$(DEPDIR)/strace-uid.Po ./$(DEPDIR)/strace-uid16.Po \
-       ./$(DEPDIR)/strace-umask.Po ./$(DEPDIR)/strace-umount.Po \
-       ./$(DEPDIR)/strace-uname.Po ./$(DEPDIR)/strace-unwind-libdw.Po \
-       ./$(DEPDIR)/strace-unwind-libunwind.Po \
-       ./$(DEPDIR)/strace-unwind.Po ./$(DEPDIR)/strace-userfaultfd.Po \
-       ./$(DEPDIR)/strace-ustat.Po ./$(DEPDIR)/strace-util.Po \
-       ./$(DEPDIR)/strace-utime.Po ./$(DEPDIR)/strace-utimes.Po \
-       ./$(DEPDIR)/strace-v4l2.Po ./$(DEPDIR)/strace-wait.Po \
-       ./$(DEPDIR)/strace-xattr.Po ./$(DEPDIR)/strace-xlat.Po \
-       ./$(DEPDIR)/strace-xmalloc.Po
+       ./$(DEPDIR)/libstrace_a-upoke.Po \
+       ./$(DEPDIR)/libstrace_a-userfaultfd.Po \
+       ./$(DEPDIR)/libstrace_a-ustat.Po \
+       ./$(DEPDIR)/libstrace_a-util.Po \
+       ./$(DEPDIR)/libstrace_a-utime.Po \
+       ./$(DEPDIR)/libstrace_a-utimes.Po \
+       ./$(DEPDIR)/libstrace_a-v4l2.Po \
+       ./$(DEPDIR)/libstrace_a-wait.Po \
+       ./$(DEPDIR)/libstrace_a-watchdog_ioctl.Po \
+       ./$(DEPDIR)/libstrace_a-xattr.Po \
+       ./$(DEPDIR)/libstrace_a-xgetdents.Po \
+       ./$(DEPDIR)/libstrace_a-xlat.Po \
+       ./$(DEPDIR)/libstrace_a-xmalloc.Po \
+       ./$(DEPDIR)/strace-strace.Po \
+       types/$(DEPDIR)/libstrace_a-check-btrfs.Po \
+       types/$(DEPDIR)/libstrace_a-check-cryptouser.Po \
+       types/$(DEPDIR)/libstrace_a-check-evdev.Po \
+       types/$(DEPDIR)/libstrace_a-check-io_uring.Po \
+       types/$(DEPDIR)/libstrace_a-check-loop.Po \
+       types/$(DEPDIR)/libstrace_a-check-openat2.Po \
+       types/$(DEPDIR)/libstrace_a-check-rtnl_link.Po \
+       types/$(DEPDIR)/libstrace_a-check-rtnl_mdb.Po \
+       types/$(DEPDIR)/libstrace_a-check-rtnl_neightbl.Po \
+       types/$(DEPDIR)/libstrace_a-check-rtnl_route.Po \
+       types/$(DEPDIR)/libstrace_a-check-tee.Po \
+       types/$(DEPDIR)/libstrace_a-check-v4l2.Po
 am__mv = mv -f
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
@@ -795,8 +1008,8 @@ am__v_CCLD_1 =
 SOURCES = $(libmpers_m32_a_SOURCES) $(libmpers_mx32_a_SOURCES) \
        $(libstrace_a_SOURCES) $(strace_SOURCES)
 DIST_SOURCES = $(am__libmpers_m32_a_SOURCES_DIST) \
-       $(am__libmpers_mx32_a_SOURCES_DIST) $(libstrace_a_SOURCES) \
-       $(am__strace_SOURCES_DIST)
+       $(am__libmpers_mx32_a_SOURCES_DIST) \
+       $(am__libstrace_a_SOURCES_DIST) $(strace_SOURCES)
 RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
        ctags-recursive dvi-recursive html-recursive info-recursive \
        install-data-recursive install-dvi-recursive \
@@ -825,8 +1038,8 @@ am__extra_recursive_targets = check-valgrind-recursive \
        check-valgrind-memcheck-recursive \
        check-valgrind-helgrind-recursive check-valgrind-drd-recursive \
        check-valgrind-sgcheck-recursive
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
-       $(LISP)config.h.in
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) \
+       config.h.in
 # Read a list of newline-separated strings from the standard input,
 # and print each of them once, without duplicates.  Input order is
 # *not* preserved.
@@ -850,10 +1063,10 @@ DIST_SUBDIRS = . tests tests-m32 tests-mx32
 am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \
        $(srcdir)/mpers.am $(srcdir)/scno.am \
        $(srcdir)/strace-log-merge.1.in $(srcdir)/strace.1.in \
-       $(srcdir)/strace.spec.in $(srcdir)/xlat/Makemodule.am \
-       $(top_srcdir)/debian/changelog.in AUTHORS COPYING INSTALL NEWS \
-       README compile config.guess config.sub depcomp install-sh \
-       missing
+       $(srcdir)/strace.spec.in $(srcdir)/types/Makemodule.am \
+       $(srcdir)/xlat/Makemodule.am $(top_srcdir)/debian/changelog.in \
+       AUTHORS COPYING INSTALL NEWS README ar-lib compile \
+       config.guess config.sub depcomp install-sh missing
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 distdir = $(PACKAGE)-$(VERSION)
 top_distdir = $(distdir)
@@ -892,6 +1105,8 @@ am__relativize = \
 DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.xz
 GZIP_ENV = --best
 DIST_TARGETS = dist-xz dist-gzip
+# Exists only to be overridden by the user if desired.
+AM_DISTCHECK_DVI_TARGET = dvi
 distuninstallcheck_listfiles = find . -type f -print
 am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
   | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
@@ -899,6 +1114,7 @@ distcleancheck_listfiles = find . -type f -print
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
 AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
@@ -908,8 +1124,12 @@ BUILD_OBJEXT = @BUILD_OBJEXT@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CC_FOR_BUILD = @CC_FOR_BUILD@
+CC_FOR_M32 = @CC_FOR_M32@
+CC_FOR_MX32 = @CC_FOR_MX32@
 CFLAGS = @CFLAGS@
 CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
+CFLAGS_FOR_M32 = @CFLAGS_FOR_M32@
+CFLAGS_FOR_MX32 = @CFLAGS_FOR_MX32@
 CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@
 CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@
 CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@
@@ -920,7 +1140,11 @@ COPYRIGHT_YEAR = @COPYRIGHT_YEAR@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@
+CPPFLAGS_FOR_M32 = @CPPFLAGS_FOR_M32@
+CPPFLAGS_FOR_MX32 = @CPPFLAGS_FOR_MX32@
 CPP_FOR_BUILD = @CPP_FOR_BUILD@
+CPP_FOR_M32 = @CPP_FOR_M32@
+CPP_FOR_MX32 = @CPP_FOR_MX32@
 CYGPATH_W = @CYGPATH_W@
 DEB_CHANGELOGTIME = @DEB_CHANGELOGTIME@
 DEFS = @DEFS@
@@ -962,7 +1186,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
 PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
-PERL = @PERL@
 RANLIB = @RANLIB@
 READELF = @READELF@
 RPM_CHANGELOGTIME = @RPM_CHANGELOGTIME@
@@ -981,6 +1204,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CC_FOR_BUILD = @ac_ct_CC_FOR_BUILD@
 am__include = @am__include@
@@ -1058,7 +1282,7 @@ bin_SCRIPTS = strace-graph strace-log-merge
 OS = linux
 # ARCH is `i386', `m68k', `sparc', etc.
 ARCH = @arch@
-ACLOCAL_AMFLAGS = -I m4
+ACLOCAL_AMFLAGS = -I m4 -I types -I xlat
 AM_CFLAGS = $(WARN_CFLAGS)
 AM_CPPFLAGS = -I$(builddir)/$(OS)/$(ARCH) \
              -I$(srcdir)/$(OS)/$(ARCH) \
@@ -1069,10 +1293,13 @@ AM_CPPFLAGS = -I$(builddir)/$(OS)/$(ARCH) \
 
 AM_CFLAGS_FOR_BUILD = $(WARN_CFLAGS_FOR_BUILD)
 AM_CPPFLAGS_FOR_BUILD = $(AM_CPPFLAGS)
-XLAT_INPUT_FILES = xlat/access_flags.in xlat/addrfams.in \
+TYPES_HEADER_FILES = types/btrfs.h types/cryptouser.h types/evdev.h types/io_uring.h types/loop.h types/openat2.h types/rtnl_link.h types/rtnl_mdb.h types/rtnl_neightbl.h types/rtnl_route.h types/tee.h types/v4l2.h 
+TYPES_CHECK_FILES = types/check-btrfs.c types/check-cryptouser.c types/check-evdev.c types/check-io_uring.c types/check-loop.c types/check-openat2.c types/check-rtnl_link.c types/check-rtnl_mdb.c types/check-rtnl_neightbl.c types/check-rtnl_route.c types/check-tee.c types/check-v4l2.c 
+XLAT_INPUT_FILES = xlat/access_modes.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/af_packet_versions.in xlat/aio_cmds.in xlat/archvals.in \
+       xlat/af_packet_versions.in xlat/aio_cmds.in \
+       xlat/aio_iocb_flags.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/ax25_protocols.in xlat/baud_options.in \
@@ -1082,12 +1309,12 @@ XLAT_INPUT_FILES = xlat/access_flags.in xlat/addrfams.in \
        xlat/bootflags3.in xlat/bpf_attach_flags.in \
        xlat/bpf_attach_type.in xlat/bpf_class.in xlat/bpf_commands.in \
        xlat/bpf_file_mode_flags.in xlat/bpf_map_flags.in \
-       xlat/bpf_map_types.in xlat/bpf_map_update_elem_flags.in \
-       xlat/bpf_miscop.in xlat/bpf_mode.in xlat/bpf_op_alu.in \
-       xlat/bpf_op_jmp.in xlat/bpf_prog_flags.in \
-       xlat/bpf_prog_types.in xlat/bpf_query_flags.in \
-       xlat/bpf_rval.in xlat/bpf_size.in xlat/bpf_src.in \
-       xlat/bpf_task_fd_type.in xlat/bsg_flags.in \
+       xlat/bpf_map_lookup_elem_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_query_flags.in xlat/bpf_rval.in xlat/bpf_size.in \
+       xlat/bpf_src.in xlat/bpf_task_fd_type.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 \
@@ -1106,33 +1333,38 @@ XLAT_INPUT_FILES = xlat/access_flags.in xlat/addrfams.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/caif_protocols.in \
-       xlat/can_protocols.in xlat/cap.in xlat/cap_mask0.in \
-       xlat/cap_mask1.in xlat/cap_version.in xlat/clockflags.in \
-       xlat/clocknames.in xlat/clone_flags.in xlat/cpuclocknames.in \
+       xlat/cacheflush_flags.in xlat/cacheflush_scope.in \
+       xlat/caif_protocols.in xlat/can_protocols.in xlat/cap.in \
+       xlat/cap_mask0.in xlat/cap_mask1.in xlat/cap_version.in \
+       xlat/clockflags.in xlat/clocknames.in xlat/clone3_flags.in \
+       xlat/clone_flags.in xlat/close_range_flags.in \
+       xlat/cpuclocknames.in xlat/crypto_msgs.in \
        xlat/crypto_nl_attrs.in xlat/dcb_commands.in \
        xlat/delete_module_flags.in xlat/dirent_types.in \
        xlat/dm_flags.in xlat/ebpf_class.in xlat/ebpf_mode.in \
        xlat/ebpf_op_alu.in xlat/ebpf_op_jmp.in xlat/ebpf_regs.in \
-       xlat/ebpf_size.in xlat/efd_flags.in xlat/epollctls.in \
-       xlat/epollevents.in xlat/epollflags.in \
+       xlat/ebpf_size.in xlat/efd_flags.in xlat/elf_em.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/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/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/futexbitset.in \
-       xlat/futexops.in xlat/futexwakecmps.in xlat/futexwakeops.in \
-       xlat/getrandom_flags.in xlat/getsock_ip_options.in \
-       xlat/getsock_ipv6_options.in xlat/getsock_options.in \
-       xlat/hci_channels.in xlat/hw_breakpoint_len.in \
+       xlat/evdev_ioctl_cmds.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/f_owner_types.in \
+       xlat/f_seals.in xlat/faccessat_flags.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/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/fsconfig_cmds.in \
+       xlat/fsmagic.in xlat/fsmount_flags.in xlat/fsopen_flags.in \
+       xlat/fspick_flags.in xlat/futexbitset.in xlat/futexops.in \
+       xlat/futexwakecmps.in xlat/futexwakeops.in \
+       xlat/get_mempolicy_flags.in xlat/getrandom_flags.in \
+       xlat/getsock_ip_options.in xlat/getsock_ipv6_options.in \
+       xlat/getsock_options.in xlat/hci_channels.in \
+       xlat/hdio_drive_cmds.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 \
@@ -1149,19 +1381,23 @@ XLAT_INPUT_FILES = xlat/access_flags.in xlat/addrfams.in \
        xlat/kcm_protocols.in xlat/kcmp_types.in \
        xlat/kexec_arch_values.in xlat/kexec_file_load_flags.in \
        xlat/kexec_load_flags.in xlat/key_perms.in xlat/key_reqkeys.in \
-       xlat/key_spec.in xlat/keyctl_commands.in xlat/kvm_cap.in \
+       xlat/key_spec.in xlat/keyctl_caps0.in xlat/keyctl_caps1.in \
+       xlat/keyctl_commands.in xlat/keyctl_move_flags.in \
+       xlat/keyctl_pkey_ops.in xlat/kvm_cap.in \
        xlat/kvm_cpuid_flags.in xlat/kvm_exit_reason.in \
        xlat/kvm_mem_flags.in xlat/lockfcmds.in xlat/loop_cmds.in \
        xlat/loop_crypt_type_options.in xlat/loop_flags_options.in \
        xlat/lwtunnel_encap_types.in xlat/madvise_cmds.in \
-       xlat/mbindflags.in xlat/mctl_sync.in xlat/mdb_flags.in \
+       xlat/mbind_flags.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/memfd_create_flags.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_attr_flags.in \
+       xlat/mount_flags.in xlat/move_mount_flags.in \
+       xlat/move_pages_flags.in xlat/mpol_mode_flags.in \
+       xlat/mpol_modes.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 \
@@ -1189,7 +1425,8 @@ XLAT_INPUT_FILES = xlat/access_flags.in xlat/addrfams.in \
        xlat/nl_xfrm_types.in xlat/nlmsgerr_attrs.in \
        xlat/notifyflags.in xlat/nt_descriptor_types.in \
        xlat/numa_node.in xlat/open_access_modes.in \
-       xlat/open_mode_flags.in xlat/packet_diag_attrs.in \
+       xlat/open_mode_flags.in xlat/open_resolve_flags.in \
+       xlat/open_tree_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 \
@@ -1200,16 +1437,15 @@ XLAT_INPUT_FILES = xlat/access_flags.in xlat/addrfams.in \
        xlat/perf_ioctl_flags.in xlat/perf_sw_ids.in \
        xlat/perf_type_id.in xlat/personality_flags.in \
        xlat/personality_types.in xlat/phonet_protocols.in \
-       xlat/pkey_access.in xlat/policies.in xlat/pollflags.in \
-       xlat/pr_cap_ambient.in xlat/pr_dumpable.in xlat/pr_fp_mode.in \
-       xlat/pr_mce_kill.in xlat/pr_mce_kill_policy.in \
-       xlat/pr_set_mm.in xlat/pr_spec_cmds.in \
-       xlat/pr_spec_get_store_bypass_flags.in \
+       xlat/pkey_access.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_spec_cmds.in xlat/pr_spec_get_store_bypass_flags.in \
        xlat/pr_spec_set_store_bypass_flags.in xlat/pr_sve_vl_flags.in \
        xlat/pr_tsc.in xlat/pr_unalign_flags.in xlat/prctl_options.in \
-       xlat/priorities.in xlat/ptp_flags_options.in \
-       xlat/ptrace_cmds.in xlat/ptrace_events.in \
-       xlat/ptrace_peeksiginfo_flags.in \
+       xlat/priorities.in xlat/ptp_extts_flags.in \
+       xlat/ptp_perout_flags.in xlat/ptrace_cmds.in \
+       xlat/ptrace_events.in xlat/ptrace_peeksiginfo_flags.in \
        xlat/ptrace_setoptions_flags.in xlat/ptrace_syscall_info_op.in \
        xlat/quota_formats.in xlat/quotacmds.in xlat/quotatypes.in \
        xlat/random_ioctl_cmds.in xlat/rename_flags.in \
@@ -1217,7 +1453,8 @@ XLAT_INPUT_FILES = xlat/access_flags.in xlat/addrfams.in \
        xlat/riscv_flush_icache_flags.in xlat/route_nexthop_flags.in \
        xlat/routing_flags.in xlat/routing_protocols.in \
        xlat/routing_scopes.in xlat/routing_table_ids.in \
-       xlat/routing_types.in xlat/rtnl_addr_attrs.in \
+       xlat/routing_types.in xlat/rtc_ioctl_cmds.in \
+       xlat/rtc_vl_flags.in xlat/rtnl_addr_attrs.in \
        xlat/rtnl_addrlabel_attrs.in xlat/rtnl_dcb_attrs.in \
        xlat/rtnl_ifla_af_spec_inet6_attrs.in \
        xlat/rtnl_ifla_af_spec_inet_attrs.in \
@@ -1237,7 +1474,8 @@ XLAT_INPUT_FILES = xlat/access_flags.in xlat/addrfams.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_tc_attrs.in xlat/rtnl_tca_act_flags.in \
+       xlat/rtnl_tca_act_hw_stats.in xlat/rtnl_tca_stab_attrs.in \
        xlat/rtnl_tca_stats_attrs.in xlat/rwf_flags.in \
        xlat/s390_guarded_storage_commands.in \
        xlat/s390_runtime_instr_commands.in \
@@ -1289,39 +1527,51 @@ XLAT_INPUT_FILES = xlat/access_flags.in xlat/addrfams.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/tun_device_types.in xlat/ubi_volume_props.in \
-       xlat/ubi_volume_types.in xlat/uffd_api_features.in \
-       xlat/uffd_api_flags.in xlat/uffd_copy_flags.in \
-       xlat/uffd_flags.in xlat/uffd_register_ioctl_flags.in \
+       xlat/syslog_action_type.in xlat/syslog_console_levels.in \
+       xlat/sysmips_operations.in xlat/tcflsh_options.in \
+       xlat/tcp_state_flags.in xlat/tcp_states.in \
+       xlat/tcxonc_options.in xlat/tee_ioctl_cmds.in \
+       xlat/tee_ioctl_gen_caps.in xlat/tee_ioctl_impl_ids.in \
+       xlat/tee_ioctl_login_types.in xlat/tee_ioctl_max_arg_size.in \
+       xlat/tee_ioctl_optee_caps.in xlat/tee_ioctl_origins.in \
+       xlat/tee_ioctl_param_attr_types.in xlat/tee_ioctl_shm_flags.in \
+       xlat/timerfdflags.in xlat/tun_device_types.in \
+       xlat/ubi_volume_props.in xlat/ubi_volume_types.in \
+       xlat/uffd_api_features.in xlat/uffd_api_flags.in \
+       xlat/uffd_copy_flags.in xlat/uffd_flags.in \
+       xlat/uffd_register_ioctl_flags.in \
        xlat/uffd_register_mode_flags.in xlat/uffd_zeropage_flags.in \
        xlat/umount_flags.in xlat/unix_diag_attrs.in \
        xlat/unix_diag_show.in xlat/unshare_flags.in \
-       xlat/uring_enter_flags.in xlat/uring_register_opcodes.in \
+       xlat/uring_cqring_flags.in xlat/uring_enter_flags.in \
+       xlat/uring_op_flags.in xlat/uring_ops.in \
+       xlat/uring_register_opcodes.in xlat/uring_setup_features.in \
        xlat/uring_setup_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_id_bases.in xlat/v4l2_control_ids.in \
+       xlat/v4l2_buf_flags.in xlat/v4l2_buf_flags_masks.in \
+       xlat/v4l2_buf_flags_ts_src.in xlat/v4l2_buf_flags_ts_type.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_id_bases.in \
+       xlat/v4l2_control_ids.in xlat/v4l2_control_query_flags.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_pix_fmts.in xlat/v4l2_sdr_fmts.in \
-       xlat/v4l2_sliced_flags.in xlat/v4l2_streaming_capabilities.in \
+       xlat/v4l2_input_types.in xlat/v4l2_ioctl_cmds.in \
+       xlat/v4l2_memories.in xlat/v4l2_pix_fmts.in \
+       xlat/v4l2_sdr_fmts.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/waitid_types.in xlat/watchdog_ioctl_cmds.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_modes.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/af_packet_versions.h xlat/aio_cmds.h xlat/archvals.h \
+       xlat/af_packet_versions.h xlat/aio_cmds.h \
+       xlat/aio_iocb_flags.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/ax25_protocols.h xlat/baud_options.h xlat/bdaddr_types.h \
@@ -1331,9 +1581,10 @@ XLAT_HEADER_FILES = xlat/access_flags.h xlat/addrfams.h \
        xlat/bpf_attach_flags.h xlat/bpf_attach_type.h \
        xlat/bpf_class.h xlat/bpf_commands.h \
        xlat/bpf_file_mode_flags.h xlat/bpf_map_flags.h \
-       xlat/bpf_map_types.h xlat/bpf_map_update_elem_flags.h \
-       xlat/bpf_miscop.h xlat/bpf_mode.h xlat/bpf_op_alu.h \
-       xlat/bpf_op_jmp.h xlat/bpf_prog_flags.h xlat/bpf_prog_types.h \
+       xlat/bpf_map_lookup_elem_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_query_flags.h xlat/bpf_rval.h xlat/bpf_size.h \
        xlat/bpf_src.h xlat/bpf_task_fd_type.h xlat/bsg_flags.h \
        xlat/bsg_protocol.h xlat/bsg_subprotocol.h xlat/bt_protocols.h \
@@ -1352,57 +1603,66 @@ XLAT_HEADER_FILES = xlat/access_flags.h xlat/addrfams.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/caif_protocols.h \
-       xlat/can_protocols.h xlat/cap.h xlat/cap_mask0.h \
-       xlat/cap_mask1.h xlat/cap_version.h xlat/clockflags.h \
-       xlat/clocknames.h xlat/clone_flags.h xlat/cpuclocknames.h \
-       xlat/crypto_nl_attrs.h xlat/dcb_commands.h \
-       xlat/delete_module_flags.h xlat/dirent_types.h xlat/dm_flags.h \
-       xlat/ebpf_class.h xlat/ebpf_mode.h xlat/ebpf_op_alu.h \
-       xlat/ebpf_op_jmp.h xlat/ebpf_regs.h xlat/ebpf_size.h \
-       xlat/efd_flags.h xlat/epollctls.h xlat/epollevents.h \
+       xlat/cacheflush_flags.h xlat/cacheflush_scope.h \
+       xlat/caif_protocols.h xlat/can_protocols.h xlat/cap.h \
+       xlat/cap_mask0.h xlat/cap_mask1.h xlat/cap_version.h \
+       xlat/clockflags.h xlat/clocknames.h xlat/clone3_flags.h \
+       xlat/clone_flags.h xlat/close_range_flags.h \
+       xlat/cpuclocknames.h xlat/crypto_msgs.h xlat/crypto_nl_attrs.h \
+       xlat/dcb_commands.h xlat/delete_module_flags.h \
+       xlat/dirent_types.h xlat/dm_flags.h xlat/ebpf_class.h \
+       xlat/ebpf_mode.h xlat/ebpf_op_alu.h xlat/ebpf_op_jmp.h \
+       xlat/ebpf_regs.h xlat/ebpf_size.h xlat/efd_flags.h \
+       xlat/elf_em.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_ff_types.h xlat/evdev_ioctl_cmds.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/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/fcntlcmds.h \
-       xlat/fdflags.h xlat/fib_rule_actions.h xlat/fib_rule_flags.h \
+       xlat/faccessat_flags.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/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/futexbitset.h \
-       xlat/futexops.h xlat/futexwakecmps.h xlat/futexwakeops.h \
+       xlat/flockcmds.h xlat/fsconfig_cmds.h xlat/fsmagic.h \
+       xlat/fsmount_flags.h xlat/fsopen_flags.h xlat/fspick_flags.h \
+       xlat/futexbitset.h xlat/futexops.h xlat/futexwakecmps.h \
+       xlat/futexwakeops.h xlat/get_mempolicy_flags.h \
        xlat/getrandom_flags.h xlat/getsock_ip_options.h \
        xlat/getsock_ipv6_options.h xlat/getsock_options.h \
-       xlat/hci_channels.h xlat/hw_breakpoint_len.h \
-       xlat/hw_breakpoint_type.h xlat/icmpfilterflags.h \
-       xlat/if_dqblk_valid.h xlat/if_dqinfo_flags.h \
-       xlat/if_dqinfo_valid.h xlat/ifaddrflags.h xlat/iffflags.h \
-       xlat/in6_addr_gen_mode.h xlat/inet6_devconf_indices.h \
-       xlat/inet6_if_flags.h xlat/inet_devconf_indices.h \
-       xlat/inet_diag_attrs.h xlat/inet_diag_bytecodes.h \
-       xlat/inet_diag_extended_flags.h xlat/inet_diag_req_attrs.h \
-       xlat/inet_protocols.h xlat/inotify_flags.h \
-       xlat/inotify_init_flags.h xlat/ioctl_dirs.h \
-       xlat/ioprio_class.h xlat/ioprio_who.h xlat/ip_cmsg_types.h \
-       xlat/ip_type_of_services.h xlat/ipc_msg_flags.h \
-       xlat/ipc_private.h xlat/ipccalls.h xlat/irda_protocols.h \
-       xlat/isdn_protocols.h xlat/itimer_which.h xlat/kcm_protocols.h \
-       xlat/kcmp_types.h xlat/kexec_arch_values.h \
-       xlat/kexec_file_load_flags.h xlat/kexec_load_flags.h \
-       xlat/key_perms.h xlat/key_reqkeys.h xlat/key_spec.h \
-       xlat/keyctl_commands.h xlat/kvm_cap.h xlat/kvm_cpuid_flags.h \
+       xlat/hci_channels.h xlat/hdio_drive_cmds.h \
+       xlat/hw_breakpoint_len.h xlat/hw_breakpoint_type.h \
+       xlat/icmpfilterflags.h xlat/if_dqblk_valid.h \
+       xlat/if_dqinfo_flags.h xlat/if_dqinfo_valid.h \
+       xlat/ifaddrflags.h xlat/iffflags.h xlat/in6_addr_gen_mode.h \
+       xlat/inet6_devconf_indices.h xlat/inet6_if_flags.h \
+       xlat/inet_devconf_indices.h xlat/inet_diag_attrs.h \
+       xlat/inet_diag_bytecodes.h xlat/inet_diag_extended_flags.h \
+       xlat/inet_diag_req_attrs.h xlat/inet_protocols.h \
+       xlat/inotify_flags.h xlat/inotify_init_flags.h \
+       xlat/ioctl_dirs.h xlat/ioprio_class.h xlat/ioprio_who.h \
+       xlat/ip_cmsg_types.h xlat/ip_type_of_services.h \
+       xlat/ipc_msg_flags.h xlat/ipc_private.h xlat/ipccalls.h \
+       xlat/irda_protocols.h xlat/isdn_protocols.h \
+       xlat/itimer_which.h xlat/kcm_protocols.h xlat/kcmp_types.h \
+       xlat/kexec_arch_values.h xlat/kexec_file_load_flags.h \
+       xlat/kexec_load_flags.h xlat/key_perms.h xlat/key_reqkeys.h \
+       xlat/key_spec.h xlat/keyctl_caps0.h xlat/keyctl_caps1.h \
+       xlat/keyctl_commands.h xlat/keyctl_move_flags.h \
+       xlat/keyctl_pkey_ops.h xlat/kvm_cap.h xlat/kvm_cpuid_flags.h \
        xlat/kvm_exit_reason.h xlat/kvm_mem_flags.h xlat/lockfcmds.h \
        xlat/loop_cmds.h xlat/loop_crypt_type_options.h \
        xlat/loop_flags_options.h xlat/lwtunnel_encap_types.h \
-       xlat/madvise_cmds.h xlat/mbindflags.h xlat/mctl_sync.h \
+       xlat/madvise_cmds.h xlat/mbind_flags.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/memfd_create_flags.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_attr_flags.h xlat/mount_flags.h \
+       xlat/move_mount_flags.h xlat/move_pages_flags.h \
+       xlat/mpol_mode_flags.h xlat/mpol_modes.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 \
@@ -1430,6 +1690,7 @@ XLAT_HEADER_FILES = xlat/access_flags.h xlat/addrfams.h \
        xlat/nl_xfrm_types.h xlat/nlmsgerr_attrs.h xlat/notifyflags.h \
        xlat/nt_descriptor_types.h xlat/numa_node.h \
        xlat/open_access_modes.h xlat/open_mode_flags.h \
+       xlat/open_resolve_flags.h xlat/open_tree_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 \
@@ -1439,14 +1700,14 @@ XLAT_HEADER_FILES = xlat/access_flags.h xlat/addrfams.h \
        xlat/perf_hw_id.h xlat/perf_ioctl_cmds.h \
        xlat/perf_ioctl_flags.h xlat/perf_sw_ids.h xlat/perf_type_id.h \
        xlat/personality_flags.h xlat/personality_types.h \
-       xlat/phonet_protocols.h xlat/pkey_access.h xlat/policies.h \
-       xlat/pollflags.h xlat/pr_cap_ambient.h xlat/pr_dumpable.h \
-       xlat/pr_fp_mode.h xlat/pr_mce_kill.h xlat/pr_mce_kill_policy.h \
-       xlat/pr_set_mm.h xlat/pr_spec_cmds.h \
-       xlat/pr_spec_get_store_bypass_flags.h \
+       xlat/phonet_protocols.h xlat/pkey_access.h xlat/pollflags.h \
+       xlat/pr_cap_ambient.h xlat/pr_dumpable.h xlat/pr_fp_mode.h \
+       xlat/pr_mce_kill.h xlat/pr_mce_kill_policy.h xlat/pr_set_mm.h \
+       xlat/pr_spec_cmds.h xlat/pr_spec_get_store_bypass_flags.h \
        xlat/pr_spec_set_store_bypass_flags.h xlat/pr_sve_vl_flags.h \
        xlat/pr_tsc.h xlat/pr_unalign_flags.h xlat/prctl_options.h \
-       xlat/priorities.h xlat/ptp_flags_options.h xlat/ptrace_cmds.h \
+       xlat/priorities.h xlat/ptp_extts_flags.h \
+       xlat/ptp_perout_flags.h xlat/ptrace_cmds.h \
        xlat/ptrace_events.h xlat/ptrace_peeksiginfo_flags.h \
        xlat/ptrace_setoptions_flags.h xlat/ptrace_syscall_info_op.h \
        xlat/quota_formats.h xlat/quotacmds.h xlat/quotatypes.h \
@@ -1455,9 +1716,9 @@ XLAT_HEADER_FILES = xlat/access_flags.h xlat/addrfams.h \
        xlat/riscv_flush_icache_flags.h xlat/route_nexthop_flags.h \
        xlat/routing_flags.h xlat/routing_protocols.h \
        xlat/routing_scopes.h xlat/routing_table_ids.h \
-       xlat/routing_types.h xlat/rtnl_addr_attrs.h \
-       xlat/rtnl_addrlabel_attrs.h xlat/rtnl_dcb_attrs.h \
-       xlat/rtnl_ifla_af_spec_inet6_attrs.h \
+       xlat/routing_types.h xlat/rtc_ioctl_cmds.h xlat/rtc_vl_flags.h \
+       xlat/rtnl_addr_attrs.h xlat/rtnl_addrlabel_attrs.h \
+       xlat/rtnl_dcb_attrs.h xlat/rtnl_ifla_af_spec_inet6_attrs.h \
        xlat/rtnl_ifla_af_spec_inet_attrs.h \
        xlat/rtnl_ifla_brport_attrs.h xlat/rtnl_ifla_events.h \
        xlat/rtnl_ifla_info_attrs.h \
@@ -1473,7 +1734,8 @@ XLAT_HEADER_FILES = xlat/access_flags.h xlat/addrfams.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_tc_attrs.h xlat/rtnl_tca_act_flags.h \
+       xlat/rtnl_tca_act_hw_stats.h xlat/rtnl_tca_stab_attrs.h \
        xlat/rtnl_tca_stats_attrs.h xlat/rwf_flags.h \
        xlat/s390_guarded_storage_commands.h \
        xlat/s390_runtime_instr_commands.h \
@@ -1523,8 +1785,13 @@ XLAT_HEADER_FILES = xlat/access_flags.h xlat/addrfams.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/syslog_console_levels.h xlat/sysmips_operations.h \
+       xlat/tcflsh_options.h xlat/tcp_state_flags.h xlat/tcp_states.h \
+       xlat/tcxonc_options.h xlat/tee_ioctl_cmds.h \
+       xlat/tee_ioctl_gen_caps.h xlat/tee_ioctl_impl_ids.h \
+       xlat/tee_ioctl_login_types.h xlat/tee_ioctl_max_arg_size.h \
+       xlat/tee_ioctl_optee_caps.h xlat/tee_ioctl_origins.h \
+       xlat/tee_ioctl_param_attr_types.h xlat/tee_ioctl_shm_flags.h \
        xlat/timerfdflags.h xlat/tun_device_types.h \
        xlat/ubi_volume_props.h xlat/ubi_volume_types.h \
        xlat/uffd_api_features.h xlat/uffd_api_flags.h \
@@ -1533,23 +1800,28 @@ XLAT_HEADER_FILES = xlat/access_flags.h xlat/addrfams.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/uring_enter_flags.h xlat/uring_register_opcodes.h \
+       xlat/uring_cqring_flags.h xlat/uring_enter_flags.h \
+       xlat/uring_op_flags.h xlat/uring_ops.h \
+       xlat/uring_register_opcodes.h xlat/uring_setup_features.h \
        xlat/uring_setup_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_id_bases.h \
-       xlat/v4l2_control_ids.h xlat/v4l2_control_types.h \
+       xlat/v4l2_buf_flags_masks.h xlat/v4l2_buf_flags_ts_src.h \
+       xlat/v4l2_buf_flags_ts_type.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_id_bases.h xlat/v4l2_control_ids.h \
+       xlat/v4l2_control_query_flags.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_pix_fmts.h xlat/v4l2_sdr_fmts.h \
+       xlat/v4l2_input_types.h xlat/v4l2_ioctl_cmds.h \
+       xlat/v4l2_memories.h xlat/v4l2_pix_fmts.h xlat/v4l2_sdr_fmts.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/watchdog_ioctl_cmds.h xlat/whence_codes.h \
+       xlat/xattrflags.h xlat/xdp_flags.h xlat/xfs_dqblk_flags.h \
+       xlat/xfs_quota_flags.h
 strace_CPPFLAGS = $(AM_CPPFLAGS) $(am__append_3) $(am__append_8) \
        $(am__append_11) $(CODE_COVERAGE_CPPFLAGS)
 strace_CFLAGS = $(AM_CFLAGS) $(am__append_4) $(CODE_COVERAGE_CFLAGS)
@@ -1557,69 +1829,58 @@ strace_LDFLAGS = $(am__append_5) $(am__append_9) $(am__append_12)
 strace_LDADD = libstrace.a $(clock_LIBS) $(timer_LIBS) $(am__append_6) \
        $(am__append_10) $(am__append_13) $(CODE_COVERAGE_LIBS) \
        $(am__append_14) $(am__append_18)
+strace_SOURCES = strace.c
 noinst_LIBRARIES = libstrace.a $(am__append_15) $(am__append_19)
 libstrace_a_CPPFLAGS = $(strace_CPPFLAGS)
 libstrace_a_CFLAGS = $(strace_CFLAGS)
-libstrace_a_SOURCES = \
-       fetch_indirect_syscall_args.c \
-       fstatfs.c \
-       fstatfs64.c \
-       getpagesize.c \
-       ipc.c \
-       mmap_cache.c    \
-       mmap_cache.h    \
-       sigreturn.c     \
-       socketcall.c \
-       statfs.c \
-       statfs64.c \
-       sync_file_range.c \
-       sync_file_range2.c \
-       upeek.c         \
-       upoke.c         \
-       # end of libstrace_a_SOURCES
-
-strace_SOURCES = access.c affinity.c aio.c alpha.c arch_defs.h \
+libstrace_a_SOURCES = access.c affinity.c aio.c alpha.c arch_defs.h \
        basic_filters.c bind.c bjm.c block.c bpf.c bpf_attr.h \
        bpf_filter.c bpf_filter.h bpf_fprog.h bpf_seccomp_filter.c \
        bpf_sock_filter.c btrfs.c cacheflush.c capability.c caps0.h \
-       caps1.h chdir.c chmod.c clone.c copy_file_range.c count.c \
-       defs.h delay.c delay.h desc.c dirent.c dirent64.c dm.c \
-       dyxlat.c empty.h epoll.c error_prints.c error_prints.h evdev.c \
-       evdev_mpers.c eventfd.c execve.c f_owner_ex.h fadvise.c \
-       fallocate.c fanotify.c fchownat.c fcntl.c fetch_bpf_fprog.c \
-       fetch_struct_flock.c fetch_struct_keyctl_kdf_params.c \
-       fetch_struct_mmsghdr.c fetch_struct_msghdr.c \
-       fetch_struct_stat.c fetch_struct_stat64.c \
-       fetch_struct_statfs.c fetch_struct_xfs_quotastat.c \
-       file_handle.c file_ioctl.c filter.h filter_qualify.c flock.c \
-       flock.h fs_x_ioctl.c futex.c gcc_compat.h get_personality.c \
-       get_personality.h get_robust_list.c getcpu.c getcwd.c \
-       getrandom.c hdio.c hostname.c inotify.c inotify_ioctl.c io.c \
-       io_uring.c ioctl.c ioperm.c iopl.c ioprio.c ipc_defs.h \
-       ipc_msg.c ipc_msgctl.c ipc_sem.c ipc_shm.c ipc_shmctl.c kcmp.c \
-       kernel_timespec.h kernel_timeval.h kernel_timex.h \
-       kernel_types.h kexec.c keyctl.c keyctl_kdf_params.h \
+       caps1.h chdir.c chmod.c clone.c close_range.c \
+       copy_file_range.c count.c defs.h delay.c delay.h desc.c \
+       dirent.c dirent64.c dirent_types.c dm.c dup.c dyxlat.c empty.h \
+       epoll.c error_prints.c error_prints.h evdev.c evdev_mpers.c \
+       eventfd.c execve.c f_owner_ex.h fadvise.c fallocate.c \
+       fanotify.c fchownat.c fcntl.c fetch_bpf_fprog.c \
+       fetch_indirect_syscall_args.c fetch_struct_flock.c \
+       fetch_struct_keyctl_kdf_params.c fetch_struct_mmsghdr.c \
+       fetch_struct_msghdr.c fetch_struct_stat.c \
+       fetch_struct_stat64.c fetch_struct_statfs.c \
+       fetch_struct_xfs_quotastat.c file_handle.c file_ioctl.c \
+       filter.h filter_qualify.c filter_seccomp.c filter_seccomp.h \
+       flock.c flock.h fs_x_ioctl.c fsconfig.c fsmount.c fsopen.c \
+       fspick.c fstatfs.c fstatfs64.c futex.c gcc_compat.h \
+       get_personality.c get_personality.h get_robust_list.c getcpu.c \
+       getcwd.c getpagesize.c getpid.c getrandom.c hdio.c hostname.c \
+       inotify.c inotify_ioctl.c io.c io_uring.c ioctl.c ioperm.c \
+       iopl.c ioprio.c ipc.c ipc_defs.h ipc_msg.c ipc_msgctl.c \
+       ipc_sem.c ipc_semctl.c ipc_shm.c ipc_shmctl.c kcmp.c \
+       kernel_dirent.h kernel_rusage.h kernel_timespec.h \
+       kernel_timeval.h kernel_timex.h kernel_types.h \
+       kernel_v4l2_types.h kexec.c keyctl.c keyctl_kdf_params.h \
        kill_save_errno.h kvm.c largefile_wrappers.h ldt.c link.c \
        linux/asm_stat.h linux/x32/asm_stat.h linux/x86_64/asm_stat.h \
        list.h listen.c lookup_dcookie.c loop.c lseek.c macros.h mem.c \
-       membarrier.c memfd_create.c mknod.c mmap_notify.c \
-       mmap_notify.h mmsghdr.c mount.c mpers_type.h mq.c msghdr.c \
-       msghdr.h mtd.c native_defs.h nbd_ioctl.c negated_errno.h net.c \
-       netlink.c netlink.h netlink_crypto.c netlink_inet_diag.c \
-       netlink_kobject_uevent.c netlink_kobject_uevent.h \
-       netlink_netfilter.c netlink_netlink_diag.c \
-       netlink_packet_diag.c netlink_route.c netlink_route.h \
-       netlink_selinux.c netlink_smc_diag.c netlink_sock_diag.c \
-       netlink_sock_diag.h netlink_unix_diag.c nlattr.c nlattr.h \
-       nsfs.c nsfs.h nsig.h numa.c number_set.c number_set.h \
-       oldstat.c open.c or1k_atomic.c pathtrace.c perf.c \
-       perf_event_struct.h perf_ioctl.c personality.c pkeys.c poll.c \
-       prctl.c print_aio_sigset.c print_dev_t.c print_fields.h \
+       membarrier.c memfd_create.c mknod.c mmap_cache.c mmap_cache.h \
+       mmap_notify.c mmap_notify.h mmsghdr.c mount.c move_mount.c \
+       mpers_type.h mq.c msghdr.c msghdr.h mtd.c native_defs.h \
+       nbd_ioctl.c negated_errno.h net.c netlink.c netlink.h \
+       netlink_crypto.c netlink_inet_diag.c netlink_kobject_uevent.c \
+       netlink_kobject_uevent.h netlink_netfilter.c \
+       netlink_netlink_diag.c netlink_packet_diag.c netlink_route.c \
+       netlink_route.h netlink_selinux.c netlink_smc_diag.c \
+       netlink_sock_diag.c netlink_sock_diag.h netlink_unix_diag.c \
+       nlattr.c nlattr.h nsfs.c nsfs.h nsig.h numa.c number_set.c \
+       number_set.h oldstat.c open.c open_tree.c or1k_atomic.c \
+       pathtrace.c perf.c perf_event_struct.h perf_ioctl.c \
+       personality.c pidfd_getfd.c pidfd_open.c pidns.c pkeys.c \
+       poll.c prctl.c print_aio_sigset.c print_dev_t.c print_fields.h \
        print_group_req.c print_ifindex.c print_instruction_pointer.c \
        print_kernel_version.c print_mac.c print_mq_attr.c \
        print_msgbuf.c print_sg_req_info.c print_sigevent.c \
-       print_statfs.c print_struct_stat.c print_time.c \
-       print_timespec.c print_timespec.h print_timespec32.c \
+       print_statfs.c print_struct_stat.c print_syscall_number.c \
+       print_time.c print_timespec.h print_timespec32.c \
        print_timespec64.c print_timeval.c print_timeval64.c \
        print_timex.c print_timex.h print_utils.h printmode.c \
        printrusage.c printsiginfo.c printsiginfo.h process.c \
@@ -1632,23 +1893,26 @@ strace_SOURCES = access.c affinity.c aio.c alpha.c arch_defs.h \
        rtnl_route.c rtnl_rule.c rtnl_tc.c rtnl_tc_action.c s390.c \
        sched.c sched_attr.h scsi.c seccomp.c sendfile.c sg_io_v3.c \
        sg_io_v4.c shutdown.c sigaltstack.c sigevent.h signal.c \
-       signalfd.c sock.c sockaddr.c socketutils.c sparc.c \
-       sram_alloc.c stat.c stat.h stat64.c statfs.c statfs.h \
-       static_assert.h statx.c statx.h strace.c string_to_uint.c \
-       string_to_uint.h swapon.c syscall.c sysctl.c sysent.h \
-       sysent_shorthand_defs.h sysent_shorthand_undefs.h sysinfo.c \
-       syslog.c sysmips.c term.c time.c times.c trace_event.h \
-       truncate.c ubi.c ucopy.c uid.c uid16.c umask.c umount.c \
-       uname.c userfaultfd.c ustat.c util.c utime.c utimes.c v4l2.c \
-       wait.c wait.h xattr.c xfs_quota_stat.h xlat.c xlat.h xmalloc.c \
-       xmalloc.h xstring.h $(strace_SOURCES_check) $(am__append_1) \
-       $(am__append_2) $(am__append_7)
-strace_SOURCES_check = bpf_attr_check.c
+       signalfd.c sigreturn.c sock.c sockaddr.c socketcall.c \
+       socketutils.c sparc.c sram_alloc.c stage_output.c stat.c \
+       stat.h stat64.c statfs.c statfs.c statfs.h statfs64.c \
+       static_assert.h statx.c statx.h string_to_uint.c \
+       string_to_uint.h swapon.c sync_file_range.c sync_file_range2.c \
+       syscall.c sysctl.c sysent.h sysent_shorthand_defs.h \
+       sysent_shorthand_undefs.h sysinfo.c syslog.c sysmips.c tee.c \
+       term.c time.c times.c trace_event.h trie.c trie.h truncate.c \
+       ubi.c ucopy.c uid.c uid16.c umask.c umount.c uname.c upeek.c \
+       upoke.c userfaultfd.c ustat.c util.c utime.c utimes.c v4l2.c \
+       wait.c wait.h watchdog_ioctl.c xattr.c xfs_quota_stat.h \
+       xgetdents.c xgetdents.h xlat.c xlat.h xmalloc.c xmalloc.h \
+       xstring.h $(TYPES_HEADER_FILES) $(strace_SOURCES_check) \
+       $(am__append_1) $(am__append_2) $(am__append_7)
+strace_SOURCES_check = bpf_attr_check.c $(TYPES_CHECK_FILES)
 CODE_COVERAGE_BRANCH_COVERAGE = 1
 CODE_COVERAGE_GENHTML_OPTIONS = $(CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT) \
        --prefix $(shell cd $(abs_top_srcdir)/.. && pwd || echo .)
 
-CODE_COVERAGE_IGNORE_PATTERN = '/usr/include/*'
+CODE_COVERAGE_IGNORE_PATTERN = '/usr/include/*' '*/tests/*' '*/tests-m32/*' '*/tests-mx32/*'
 
 # Enable this to get link map generated
 #strace_LDFLAGS += -Wl,-Map=strace.mapfile
@@ -1662,6 +1926,7 @@ EXTRA_DIST = \
        LGPL-2.1-or-later               \
        README-configure                \
        README-linux-ptrace             \
+       copyright-year-gen              \
        debian/changelog                \
        debian/compat                   \
        debian/control                  \
@@ -1676,14 +1941,17 @@ EXTRA_DIST = \
        debian/strace64.install         \
        debian/strace64.manpages        \
        debian/watch                    \
+       file-date-gen                   \
        gen_bpf_attr_check.sh           \
        generate_sen.sh                 \
+       git-version-gen                 \
        ioctl_iocdef.c                  \
        ioctlsort.c                     \
        linux/32/ioctls_inc.h           \
        linux/32/ioctls_inc_align16.h   \
        linux/32/ioctls_inc_align32.h   \
        linux/32/ioctls_inc_align64.h   \
+       linux/32/syscallent-time32.h    \
        linux/32/syscallent.h           \
        linux/64/ioctls_inc.h           \
        linux/64/syscallent.h           \
@@ -1798,7 +2066,6 @@ EXTRA_DIST = \
        linux/hppa/get_error.c          \
        linux/hppa/get_scno.c           \
        linux/hppa/get_syscall_args.c   \
-       linux/hppa/get_syscall_result.c \
        linux/hppa/ioctls_arch0.h       \
        linux/hppa/ioctls_inc0.h        \
        linux/hppa/raw_syscall.h        \
@@ -1839,7 +2106,9 @@ EXTRA_DIST = \
        linux/ia64/rt_sigframe.h        \
        linux/ia64/set_error.c          \
        linux/ia64/set_scno.c           \
+       linux/ia64/shuffle_scno.c       \
        linux/ia64/syscallent.h         \
+       linux/ia64/syscallent_base_nr.h \
        linux/ia64/userent.h            \
        linux/inet_diag.h               \
        linux/m68k/arch_defs_.h         \
@@ -1968,27 +2237,38 @@ EXTRA_DIST = \
        linux/powerpc64/syscallent.h    \
        linux/powerpc64/syscallent1.h   \
        linux/powerpc64/userent.h       \
+       linux/powerpc64le/arch_defs_.h  \
+       linux/powerpc64le/arch_regs.c   \
+       linux/powerpc64le/arch_rt_sigframe.c    \
+       linux/powerpc64le/errnoent.h    \
+       linux/powerpc64le/get_error.c   \
+       linux/powerpc64le/get_scno.c    \
+       linux/powerpc64le/get_syscall_args.c    \
+       linux/powerpc64le/ioctls_arch0.h        \
+       linux/powerpc64le/ioctls_inc0.h \
+       linux/powerpc64le/raw_syscall.h \
+       linux/powerpc64le/rt_sigframe.h \
+       linux/powerpc64le/set_error.c   \
+       linux/powerpc64le/set_scno.c    \
+       linux/powerpc64le/syscallent.h  \
+       linux/powerpc64le/userent.h     \
        linux/ptrace_pokeuser.c         \
        linux/raw_syscall.h             \
-       linux/riscv/arch_defs_.h        \
-       linux/riscv/arch_get_personality.c \
-       linux/riscv/arch_regs.c         \
-       linux/riscv/get_error.c         \
-       linux/riscv/get_scno.c          \
-       linux/riscv/get_syscall_args.c  \
-       linux/riscv/ioctls_arch0.h      \
-       linux/riscv/ioctls_arch1.h      \
-       linux/riscv/ioctls_inc0.h       \
-       linux/riscv/ioctls_inc1.h       \
-       linux/riscv/raw_syscall.h       \
-       linux/riscv/set_error.c         \
-       linux/riscv/set_scno.c          \
-       linux/riscv/syscallent.h        \
-       linux/riscv/syscallent1.h       \
+       linux/riscv64/arch_regs.c               \
+       linux/riscv64/get_error.c               \
+       linux/riscv64/get_scno.c                \
+       linux/riscv64/get_syscall_args.c        \
+       linux/riscv64/ioctls_arch0.h    \
+       linux/riscv64/ioctls_inc0.h     \
+       linux/riscv64/raw_syscall.h     \
+       linux/riscv64/set_error.c               \
+       linux/riscv64/set_scno.c                \
+       linux/riscv64/syscallent.h      \
        linux/rt_sigframe.h             \
        linux/s390/arch_defs_.h         \
        linux/s390/arch_regs.c          \
        linux/s390/arch_sigreturn.c     \
+       linux/s390/check_scno.c         \
        linux/s390/get_error.c          \
        linux/s390/get_scno.c           \
        linux/s390/get_syscall_args.c   \
@@ -2006,6 +2286,7 @@ EXTRA_DIST = \
        linux/s390x/arch_get_personality.c \
        linux/s390x/arch_regs.c         \
        linux/s390x/arch_sigreturn.c    \
+       linux/s390x/check_scno.c        \
        linux/s390x/get_error.c         \
        linux/s390x/get_scno.c          \
        linux/s390x/get_syscall_args.c  \
@@ -2026,7 +2307,6 @@ EXTRA_DIST = \
        linux/sh/get_error.c            \
        linux/sh/get_scno.c             \
        linux/sh/get_syscall_args.c     \
-       linux/sh/get_syscall_result.c   \
        linux/sh/ioctls_arch0.h         \
        linux/sh/ioctls_inc0.h          \
        linux/sh/raw_syscall.h          \
@@ -2037,11 +2317,9 @@ EXTRA_DIST = \
        linux/sh/userent0.h             \
        linux/sh64/arch_defs_.h         \
        linux/sh64/arch_regs.c          \
-       linux/sh64/arch_regs.h          \
        linux/sh64/get_error.c          \
        linux/sh64/get_scno.c           \
        linux/sh64/get_syscall_args.c   \
-       linux/sh64/get_syscall_result.c \
        linux/sh64/ioctls_arch0.h       \
        linux/sh64/ioctls_inc0.h        \
        linux/sh64/raw_syscall.h        \
@@ -2098,6 +2376,9 @@ EXTRA_DIST = \
        linux/subcall32.h               \
        linux/subcall64.h               \
        linux/syscall.h                 \
+       linux/syscallent-common-32.h    \
+       linux/syscallent-common.h       \
+       linux/syscallent_base_nr.h      \
        linux/tile/arch_defs_.h         \
        linux/tile/arch_get_personality.c \
        linux/tile/arch_regs.c          \
@@ -2174,7 +2455,6 @@ EXTRA_DIST = \
        linux/xtensa/get_error.c        \
        linux/xtensa/get_scno.c         \
        linux/xtensa/get_syscall_args.c \
-       linux/xtensa/get_syscall_result.c       \
        linux/xtensa/ioctls_arch0.h     \
        linux/xtensa/ioctls_inc0.h      \
        linux/xtensa/raw_syscall.h      \
@@ -2190,6 +2470,8 @@ EXTRA_DIST = \
        strace-graph                    \
        strace-log-merge                \
        strace.spec                     \
+       types/find_last_type_fields.awk \
+       types/gen.sh                    \
        $(XLAT_INPUT_FILES)             \
        $(XLAT_HEADER_FILES)            \
        xlat/gen.sh                     \
@@ -2200,6 +2482,7 @@ strace_SOURCES_c = \
 
 sys_func_h_sources = $(filter-out $(strace_SOURCES_check),$(strace_SOURCES_c))
 syscallent_names = subcall.h syscallent.h syscallent1.h \
+                  syscallent-common.h syscallent-common-32.h \
                   syscallent-n32.h syscallent-n64.h syscallent-o32.h
 
 syscallent_patterns = $(patsubst %,\%/%,$(syscallent_names))
@@ -2233,7 +2516,7 @@ al_nums = [[:alnum:]_][[:alnum:]_]*
 SCNO_SED = /TRACE_INDIRECT_SUBCALL/d; s/^\[[[:space:]]*\($(digits)\([[:space:]]*+[[:space:]]*$(digits)\)\?\)\][[:space:]]*=[[:space:]]*{[^,]*,[^,]*,[^,]*,[[:space:]]*"\($(al_nums)\)"[[:space:]]*},.*/\#ifndef __NR_\3\n\# define __NR_\3 (SYSCALL_BIT | (\1))\n\#endif/p
 
 # Generated by ./generate_mpers_am.sh; do not edit.
-mpers_source_files = block.c btrfs.c dirent.c evdev_mpers.c fetch_bpf_fprog.c fetch_struct_flock.c fetch_struct_keyctl_kdf_params.c fetch_struct_mmsghdr.c fetch_struct_msghdr.c fetch_struct_stat.c fetch_struct_stat64.c fetch_struct_statfs.c fetch_struct_xfs_quotastat.c hdio.c ipc_msgctl.c ipc_shmctl.c loop.c mtd.c perf_ioctl.c print_aio_sigset.c print_group_req.c print_mq_attr.c print_msgbuf.c print_sg_req_info.c print_sigevent.c print_time.c print_timespec.c print_timeval.c printrusage.c printsiginfo.c rt_sigreturn.c rtc.c sg_io_v3.c sigaltstack.c sock.c sysinfo.c times.c ustat.c utime.c v4l2.c 
+mpers_source_files = block.c btrfs.c dirent.c evdev_mpers.c fetch_bpf_fprog.c fetch_struct_flock.c fetch_struct_keyctl_kdf_params.c fetch_struct_mmsghdr.c fetch_struct_msghdr.c fetch_struct_stat.c fetch_struct_stat64.c fetch_struct_statfs.c fetch_struct_xfs_quotastat.c hdio.c ipc_msgctl.c ipc_semctl.c ipc_shmctl.c loop.c mtd.c perf_ioctl.c print_aio_sigset.c print_group_req.c print_mq_attr.c print_msgbuf.c print_sg_req_info.c print_sigevent.c print_time.c print_timeval.c printrusage.c printsiginfo.c rt_sigreturn.c rtc.c sg_io_v3.c sigaltstack.c sock.c sysinfo.c times.c ustat.c utime.c v4l2.c 
 
 # defines mpers_source_files
 srcdir_mpers_source_files = $(patsubst %,$(srcdir)/%,$(mpers_source_files))
@@ -2242,8 +2525,8 @@ mpers_NAME =
 mpers_PREFIX = $(mpers_NAME)_
 mpers_DEFS = $(DEFS)
 mpers_INCLUDES = $(DEFAULT_INCLUDES) $(INCLUDES)
-mpers_CPPFLAGS = $(strace_CPPFLAGS) $(CPPFLAGS)
-mpers_sh_opts = $(mpers_DEFS) $(mpers_INCLUDES) $(mpers_CPPFLAGS)
+mpers_CPPFLAGS = $(CPPFLAGS)
+mpers_sh_opts = $(mpers_DEFS) $(mpers_INCLUDES) $(strace_CPPFLAGS) $(mpers_CPPFLAGS)
 libmpers_CPPFLAGS = $(strace_CPPFLAGS) -DIN_MPERS
 libmpers_CFLAGS = $(strace_CFLAGS)
 mpers_printer_decl_pattern = ^MPERS_PRINTER_DECL\(([^,)]+),[[:space:]]*([^,)]+),[[:space:]]*([^)]+)\)$$
@@ -2263,7 +2546,7 @@ all: $(BUILT_SOURCES) config.h
 .SUFFIXES: .c .o .obj
 am--refresh: Makefile
        @:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/xlat/Makemodule.am $(srcdir)/scno.am $(srcdir)/mpers.am $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/types/Makemodule.am $(srcdir)/xlat/Makemodule.am $(srcdir)/scno.am $(srcdir)/mpers.am $(am__configure_deps)
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
@@ -2285,7 +2568,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
            echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \
            cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \
        esac;
-$(srcdir)/xlat/Makemodule.am $(srcdir)/scno.am $(srcdir)/mpers.am $(am__empty):
+$(srcdir)/types/Makemodule.am $(srcdir)/xlat/Makemodule.am $(srcdir)/scno.am $(srcdir)/mpers.am $(am__empty):
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
        $(SHELL) ./config.status --recheck
@@ -2373,6 +2656,36 @@ libmpers-mx32.a: $(libmpers_mx32_a_OBJECTS) $(libmpers_mx32_a_DEPENDENCIES) $(EX
        $(AM_V_at)-rm -f libmpers-mx32.a
        $(AM_V_AR)$(libmpers_mx32_a_AR) libmpers-mx32.a $(libmpers_mx32_a_OBJECTS) $(libmpers_mx32_a_LIBADD)
        $(AM_V_at)$(RANLIB) libmpers-mx32.a
+types/$(am__dirstamp):
+       @$(MKDIR_P) types
+       @: > types/$(am__dirstamp)
+types/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) types/$(DEPDIR)
+       @: > types/$(DEPDIR)/$(am__dirstamp)
+types/libstrace_a-check-btrfs.$(OBJEXT): types/$(am__dirstamp) \
+       types/$(DEPDIR)/$(am__dirstamp)
+types/libstrace_a-check-cryptouser.$(OBJEXT): types/$(am__dirstamp) \
+       types/$(DEPDIR)/$(am__dirstamp)
+types/libstrace_a-check-evdev.$(OBJEXT): types/$(am__dirstamp) \
+       types/$(DEPDIR)/$(am__dirstamp)
+types/libstrace_a-check-io_uring.$(OBJEXT): types/$(am__dirstamp) \
+       types/$(DEPDIR)/$(am__dirstamp)
+types/libstrace_a-check-loop.$(OBJEXT): types/$(am__dirstamp) \
+       types/$(DEPDIR)/$(am__dirstamp)
+types/libstrace_a-check-openat2.$(OBJEXT): types/$(am__dirstamp) \
+       types/$(DEPDIR)/$(am__dirstamp)
+types/libstrace_a-check-rtnl_link.$(OBJEXT): types/$(am__dirstamp) \
+       types/$(DEPDIR)/$(am__dirstamp)
+types/libstrace_a-check-rtnl_mdb.$(OBJEXT): types/$(am__dirstamp) \
+       types/$(DEPDIR)/$(am__dirstamp)
+types/libstrace_a-check-rtnl_neightbl.$(OBJEXT):  \
+       types/$(am__dirstamp) types/$(DEPDIR)/$(am__dirstamp)
+types/libstrace_a-check-rtnl_route.$(OBJEXT): types/$(am__dirstamp) \
+       types/$(DEPDIR)/$(am__dirstamp)
+types/libstrace_a-check-tee.$(OBJEXT): types/$(am__dirstamp) \
+       types/$(DEPDIR)/$(am__dirstamp)
+types/libstrace_a-check-v4l2.$(OBJEXT): types/$(am__dirstamp) \
+       types/$(DEPDIR)/$(am__dirstamp)
 
 libstrace.a: $(libstrace_a_OBJECTS) $(libstrace_a_DEPENDENCIES) $(EXTRA_libstrace_a_DEPENDENCIES) 
        $(AM_V_at)-rm -f libstrace.a
@@ -2420,6 +2733,7 @@ uninstall-binSCRIPTS:
 
 mostlyclean-compile:
        -rm -f *.$(OBJEXT)
+       -rm -f types/*.$(OBJEXT)
 
 distclean-compile:
        -rm -f *.tab.c
@@ -2439,6 +2753,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_m32_a-fetch_struct_xfs_quotastat.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_m32_a-hdio.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_m32_a-ipc_msgctl.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_m32_a-ipc_semctl.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_m32_a-ipc_shmctl.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_m32_a-loop.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_m32_a-mtd.Po@am__quote@ # am--include-marker
@@ -2450,7 +2765,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_m32_a-print_sg_req_info.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_m32_a-print_sigevent.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_m32_a-print_time.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_m32_a-print_timespec.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_m32_a-print_timeval.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_m32_a-printrusage.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_m32_a-printsiginfo.Po@am__quote@ # am--include-marker
@@ -2479,6 +2793,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_mx32_a-fetch_struct_xfs_quotastat.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_mx32_a-hdio.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_mx32_a-ipc_msgctl.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_mx32_a-ipc_semctl.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_mx32_a-ipc_shmctl.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_mx32_a-loop.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_mx32_a-mtd.Po@am__quote@ # am--include-marker
@@ -2490,7 +2805,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_mx32_a-print_sg_req_info.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_mx32_a-print_sigevent.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_mx32_a-print_time.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_mx32_a-print_timespec.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_mx32_a-print_timeval.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_mx32_a-printrusage.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_mx32_a-printsiginfo.Po@am__quote@ # am--include-marker
@@ -2504,245 +2818,276 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_mx32_a-ustat.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_mx32_a-utime.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_mx32_a-v4l2.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-access.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-affinity.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-aio.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-alpha.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-basic_filters.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-bind.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-bjm.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-block.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-bpf.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-bpf_attr_check.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-bpf_filter.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-bpf_seccomp_filter.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-bpf_sock_filter.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-btrfs.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-cacheflush.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-capability.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-chdir.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-chmod.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-clone.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-close_range.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-copy_file_range.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-count.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-delay.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-desc.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-dirent.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-dirent64.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-dirent_types.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-dm.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-dup.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-dyxlat.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-epoll.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-error_prints.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-evdev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-evdev_mpers.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-eventfd.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-execve.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-fadvise.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-fallocate.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-fanotify.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-fchownat.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-fcntl.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-fetch_bpf_fprog.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-fetch_indirect_syscall_args.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-fetch_struct_flock.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-fetch_struct_keyctl_kdf_params.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-fetch_struct_mmsghdr.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-fetch_struct_msghdr.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-fetch_struct_stat.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-fetch_struct_stat64.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-fetch_struct_statfs.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-fetch_struct_xfs_quotastat.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-file_handle.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-file_ioctl.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-filter_qualify.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-filter_seccomp.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-flock.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-fs_x_ioctl.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-fsconfig.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-fsmount.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-fsopen.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-fspick.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-fstatfs.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-fstatfs64.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-futex.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-get_personality.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-get_robust_list.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-getcpu.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-getcwd.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-getpagesize.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-getpid.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-getrandom.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-hdio.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-hostname.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-inotify.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-inotify_ioctl.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-io.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-io_uring.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-ioctl.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-ioperm.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-iopl.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-ioprio.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-ipc.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-ipc_msg.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-ipc_msgctl.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-ipc_sem.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-ipc_semctl.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-ipc_shm.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-ipc_shmctl.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-kcmp.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-kexec.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-keyctl.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-kvm.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-ldt.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-link.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-listen.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-lookup_dcookie.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-loop.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-lseek.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-mem.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-membarrier.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-memfd_create.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-mknod.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-mmap_cache.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-mmap_notify.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-mmsghdr.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-mount.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-move_mount.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-mq.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-msghdr.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-mtd.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-nbd_ioctl.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-net.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-netlink.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-netlink_crypto.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-netlink_inet_diag.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-netlink_kobject_uevent.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-netlink_netfilter.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-netlink_netlink_diag.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-netlink_packet_diag.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-netlink_route.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-netlink_selinux.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-netlink_smc_diag.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-netlink_sock_diag.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-netlink_unix_diag.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-nlattr.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-nsfs.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-numa.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-number_set.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-oldstat.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-open.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-open_tree.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-or1k_atomic.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-pathtrace.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-perf.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-perf_ioctl.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-personality.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-pidfd_getfd.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-pidfd_open.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-pidns.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-pkeys.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-poll.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-prctl.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-print_aio_sigset.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-print_dev_t.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-print_group_req.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-print_ifindex.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-print_instruction_pointer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-print_kernel_version.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-print_mac.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-print_mq_attr.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-print_msgbuf.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-print_sg_req_info.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-print_sigevent.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-print_statfs.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-print_struct_stat.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-print_syscall_number.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-print_time.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-print_timespec32.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-print_timespec64.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-print_timeval.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-print_timeval64.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-print_timex.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-printmode.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-printrusage.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-printsiginfo.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-process.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-process_vm.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-ptp.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-ptrace_syscall_info.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-quota.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-random_ioctl.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-readahead.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-readlink.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-reboot.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-renameat.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-resource.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-retval.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-riscv.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-rt_sigframe.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-rt_sigreturn.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-rtc.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-rtnl_addr.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-rtnl_addrlabel.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-rtnl_dcb.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-rtnl_link.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-rtnl_mdb.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-rtnl_neigh.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-rtnl_neightbl.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-rtnl_netconf.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-rtnl_nsid.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-rtnl_route.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-rtnl_rule.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-rtnl_tc.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-rtnl_tc_action.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-s390.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-sched.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-scsi.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-seccomp.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-sendfile.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-sg_io_v3.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-sg_io_v4.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-shutdown.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-sigaltstack.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-signal.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-signalfd.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-sigreturn.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-sock.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-sockaddr.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-socketcall.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-socketutils.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-sparc.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-sram_alloc.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-stage_output.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-stat.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-stat64.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-statfs.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-statfs64.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-statx.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-string_to_uint.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-swapon.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-sync_file_range.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-sync_file_range2.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-syscall.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-sysctl.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-sysinfo.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-syslog.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-sysmips.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-tee.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-term.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-time.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-times.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-trie.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-truncate.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-ubi.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-ucopy.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-uid.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-uid16.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-umask.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-umount.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-uname.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-unwind-libdw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-unwind-libunwind.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-unwind.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-upeek.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-upoke.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-access.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-affinity.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-aio.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-alpha.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-basic_filters.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-bind.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-bjm.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-block.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-bpf.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-bpf_attr_check.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-bpf_filter.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-bpf_seccomp_filter.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-bpf_sock_filter.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-btrfs.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-cacheflush.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-capability.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-chdir.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-chmod.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-clone.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-copy_file_range.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-count.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-delay.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-desc.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-dirent.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-dirent64.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-dm.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-dyxlat.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-epoll.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-error_prints.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-evdev.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-evdev_mpers.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-eventfd.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-execve.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-fadvise.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-fallocate.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-fanotify.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-fchownat.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-fcntl.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-fetch_bpf_fprog.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-fetch_struct_flock.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-fetch_struct_keyctl_kdf_params.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-fetch_struct_mmsghdr.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-fetch_struct_msghdr.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-fetch_struct_stat.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-fetch_struct_stat64.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-fetch_struct_statfs.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-fetch_struct_xfs_quotastat.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-file_handle.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-file_ioctl.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-filter_qualify.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-flock.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-fs_x_ioctl.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-futex.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-get_personality.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-get_robust_list.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-getcpu.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-getcwd.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-getrandom.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-hdio.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-hostname.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-inotify.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-inotify_ioctl.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-io.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-io_uring.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-ioctl.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-ioperm.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-iopl.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-ioprio.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-ipc_msg.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-ipc_msgctl.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-ipc_sem.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-ipc_shm.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-ipc_shmctl.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-kcmp.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-kexec.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-keyctl.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-kvm.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-ldt.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-link.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-listen.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-lookup_dcookie.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-loop.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-lseek.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-mem.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-membarrier.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-memfd_create.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-mknod.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-mmap_notify.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-mmsghdr.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-mount.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-mq.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-msghdr.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-mtd.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-nbd_ioctl.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-net.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-netlink.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-netlink_crypto.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-netlink_inet_diag.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-netlink_kobject_uevent.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-netlink_netfilter.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-netlink_netlink_diag.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-netlink_packet_diag.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-netlink_route.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-netlink_selinux.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-netlink_smc_diag.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-netlink_sock_diag.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-netlink_unix_diag.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-nlattr.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-nsfs.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-numa.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-number_set.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-oldstat.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-open.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-or1k_atomic.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-pathtrace.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-perf.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-perf_ioctl.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-personality.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-pkeys.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-poll.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-prctl.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-print_aio_sigset.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-print_dev_t.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-print_group_req.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-print_ifindex.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-print_instruction_pointer.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-print_kernel_version.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-print_mac.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-print_mq_attr.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-print_msgbuf.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-print_sg_req_info.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-print_sigevent.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-print_statfs.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-print_struct_stat.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-print_time.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-print_timespec.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-print_timespec32.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-print_timespec64.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-print_timeval.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-print_timeval64.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-print_timex.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-printmode.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-printrusage.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-printsiginfo.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-process.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-process_vm.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-ptp.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-ptrace_syscall_info.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-quota.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-random_ioctl.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-readahead.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-readlink.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-reboot.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-renameat.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-resource.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-retval.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-riscv.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-rt_sigframe.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-rt_sigreturn.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-rtc.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-rtnl_addr.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-rtnl_addrlabel.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-rtnl_dcb.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-rtnl_link.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-rtnl_mdb.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-rtnl_neigh.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-rtnl_neightbl.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-rtnl_netconf.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-rtnl_nsid.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-rtnl_route.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-rtnl_rule.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-rtnl_tc.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-rtnl_tc_action.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-s390.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-sched.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-scsi.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-seccomp.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-sendfile.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-sg_io_v3.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-sg_io_v4.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-shutdown.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-sigaltstack.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-signal.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-signalfd.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-sock.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-sockaddr.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-socketutils.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-sparc.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-sram_alloc.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-stat.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-stat64.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-statfs.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-statx.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-userfaultfd.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-ustat.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-util.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-utime.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-utimes.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-v4l2.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-wait.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-watchdog_ioctl.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-xattr.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-xgetdents.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-xlat.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-xmalloc.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-strace.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-string_to_uint.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-swapon.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-syscall.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-sysctl.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-sysinfo.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-syslog.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-sysmips.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-term.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-time.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-times.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-truncate.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-ubi.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-ucopy.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-uid.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-uid16.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-umask.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-umount.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-uname.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-unwind-libdw.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-unwind-libunwind.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-unwind.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-userfaultfd.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-ustat.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-util.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-utime.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-utimes.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-v4l2.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-wait.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-xattr.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-xlat.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-xmalloc.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@types/$(DEPDIR)/libstrace_a-check-btrfs.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@types/$(DEPDIR)/libstrace_a-check-cryptouser.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@types/$(DEPDIR)/libstrace_a-check-evdev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@types/$(DEPDIR)/libstrace_a-check-io_uring.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@types/$(DEPDIR)/libstrace_a-check-loop.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@types/$(DEPDIR)/libstrace_a-check-openat2.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@types/$(DEPDIR)/libstrace_a-check-rtnl_link.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@types/$(DEPDIR)/libstrace_a-check-rtnl_mdb.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@types/$(DEPDIR)/libstrace_a-check-rtnl_neightbl.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@types/$(DEPDIR)/libstrace_a-check-rtnl_route.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@types/$(DEPDIR)/libstrace_a-check-tee.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@types/$(DEPDIR)/libstrace_a-check-v4l2.Po@am__quote@ # am--include-marker
 
 $(am__depfiles_remade):
        @$(MKDIR_P) $(@D)
@@ -2751,15 +3096,17 @@ $(am__depfiles_remade):
 am--depfiles: $(am__depfiles_remade)
 
 .c.o:
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_TRUE@   $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_TRUE@   $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCC_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
@@ -2974,6 +3321,20 @@ libmpers_m32_a-ipc_msgctl.obj: ipc_msgctl.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_m32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_m32_a_CFLAGS) $(CFLAGS) -c -o libmpers_m32_a-ipc_msgctl.obj `if test -f 'ipc_msgctl.c'; then $(CYGPATH_W) 'ipc_msgctl.c'; else $(CYGPATH_W) '$(srcdir)/ipc_msgctl.c'; fi`
 
+libmpers_m32_a-ipc_semctl.o: ipc_semctl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_m32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_m32_a_CFLAGS) $(CFLAGS) -MT libmpers_m32_a-ipc_semctl.o -MD -MP -MF $(DEPDIR)/libmpers_m32_a-ipc_semctl.Tpo -c -o libmpers_m32_a-ipc_semctl.o `test -f 'ipc_semctl.c' || echo '$(srcdir)/'`ipc_semctl.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libmpers_m32_a-ipc_semctl.Tpo $(DEPDIR)/libmpers_m32_a-ipc_semctl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ipc_semctl.c' object='libmpers_m32_a-ipc_semctl.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_m32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_m32_a_CFLAGS) $(CFLAGS) -c -o libmpers_m32_a-ipc_semctl.o `test -f 'ipc_semctl.c' || echo '$(srcdir)/'`ipc_semctl.c
+
+libmpers_m32_a-ipc_semctl.obj: ipc_semctl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_m32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_m32_a_CFLAGS) $(CFLAGS) -MT libmpers_m32_a-ipc_semctl.obj -MD -MP -MF $(DEPDIR)/libmpers_m32_a-ipc_semctl.Tpo -c -o libmpers_m32_a-ipc_semctl.obj `if test -f 'ipc_semctl.c'; then $(CYGPATH_W) 'ipc_semctl.c'; else $(CYGPATH_W) '$(srcdir)/ipc_semctl.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libmpers_m32_a-ipc_semctl.Tpo $(DEPDIR)/libmpers_m32_a-ipc_semctl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ipc_semctl.c' object='libmpers_m32_a-ipc_semctl.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_m32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_m32_a_CFLAGS) $(CFLAGS) -c -o libmpers_m32_a-ipc_semctl.obj `if test -f 'ipc_semctl.c'; then $(CYGPATH_W) 'ipc_semctl.c'; else $(CYGPATH_W) '$(srcdir)/ipc_semctl.c'; fi`
+
 libmpers_m32_a-ipc_shmctl.o: ipc_shmctl.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_m32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_m32_a_CFLAGS) $(CFLAGS) -MT libmpers_m32_a-ipc_shmctl.o -MD -MP -MF $(DEPDIR)/libmpers_m32_a-ipc_shmctl.Tpo -c -o libmpers_m32_a-ipc_shmctl.o `test -f 'ipc_shmctl.c' || echo '$(srcdir)/'`ipc_shmctl.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libmpers_m32_a-ipc_shmctl.Tpo $(DEPDIR)/libmpers_m32_a-ipc_shmctl.Po
@@ -3128,20 +3489,6 @@ libmpers_m32_a-print_time.obj: print_time.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_m32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_m32_a_CFLAGS) $(CFLAGS) -c -o libmpers_m32_a-print_time.obj `if test -f 'print_time.c'; then $(CYGPATH_W) 'print_time.c'; else $(CYGPATH_W) '$(srcdir)/print_time.c'; fi`
 
-libmpers_m32_a-print_timespec.o: print_timespec.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_m32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_m32_a_CFLAGS) $(CFLAGS) -MT libmpers_m32_a-print_timespec.o -MD -MP -MF $(DEPDIR)/libmpers_m32_a-print_timespec.Tpo -c -o libmpers_m32_a-print_timespec.o `test -f 'print_timespec.c' || echo '$(srcdir)/'`print_timespec.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libmpers_m32_a-print_timespec.Tpo $(DEPDIR)/libmpers_m32_a-print_timespec.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_timespec.c' object='libmpers_m32_a-print_timespec.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_m32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_m32_a_CFLAGS) $(CFLAGS) -c -o libmpers_m32_a-print_timespec.o `test -f 'print_timespec.c' || echo '$(srcdir)/'`print_timespec.c
-
-libmpers_m32_a-print_timespec.obj: print_timespec.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_m32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_m32_a_CFLAGS) $(CFLAGS) -MT libmpers_m32_a-print_timespec.obj -MD -MP -MF $(DEPDIR)/libmpers_m32_a-print_timespec.Tpo -c -o libmpers_m32_a-print_timespec.obj `if test -f 'print_timespec.c'; then $(CYGPATH_W) 'print_timespec.c'; else $(CYGPATH_W) '$(srcdir)/print_timespec.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libmpers_m32_a-print_timespec.Tpo $(DEPDIR)/libmpers_m32_a-print_timespec.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_timespec.c' object='libmpers_m32_a-print_timespec.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_m32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_m32_a_CFLAGS) $(CFLAGS) -c -o libmpers_m32_a-print_timespec.obj `if test -f 'print_timespec.c'; then $(CYGPATH_W) 'print_timespec.c'; else $(CYGPATH_W) '$(srcdir)/print_timespec.c'; fi`
-
 libmpers_m32_a-print_timeval.o: print_timeval.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_m32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_m32_a_CFLAGS) $(CFLAGS) -MT libmpers_m32_a-print_timeval.o -MD -MP -MF $(DEPDIR)/libmpers_m32_a-print_timeval.Tpo -c -o libmpers_m32_a-print_timeval.o `test -f 'print_timeval.c' || echo '$(srcdir)/'`print_timeval.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libmpers_m32_a-print_timeval.Tpo $(DEPDIR)/libmpers_m32_a-print_timeval.Po
@@ -3534,6 +3881,20 @@ libmpers_mx32_a-ipc_msgctl.obj: ipc_msgctl.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_mx32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_mx32_a_CFLAGS) $(CFLAGS) -c -o libmpers_mx32_a-ipc_msgctl.obj `if test -f 'ipc_msgctl.c'; then $(CYGPATH_W) 'ipc_msgctl.c'; else $(CYGPATH_W) '$(srcdir)/ipc_msgctl.c'; fi`
 
+libmpers_mx32_a-ipc_semctl.o: ipc_semctl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_mx32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_mx32_a_CFLAGS) $(CFLAGS) -MT libmpers_mx32_a-ipc_semctl.o -MD -MP -MF $(DEPDIR)/libmpers_mx32_a-ipc_semctl.Tpo -c -o libmpers_mx32_a-ipc_semctl.o `test -f 'ipc_semctl.c' || echo '$(srcdir)/'`ipc_semctl.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libmpers_mx32_a-ipc_semctl.Tpo $(DEPDIR)/libmpers_mx32_a-ipc_semctl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ipc_semctl.c' object='libmpers_mx32_a-ipc_semctl.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_mx32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_mx32_a_CFLAGS) $(CFLAGS) -c -o libmpers_mx32_a-ipc_semctl.o `test -f 'ipc_semctl.c' || echo '$(srcdir)/'`ipc_semctl.c
+
+libmpers_mx32_a-ipc_semctl.obj: ipc_semctl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_mx32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_mx32_a_CFLAGS) $(CFLAGS) -MT libmpers_mx32_a-ipc_semctl.obj -MD -MP -MF $(DEPDIR)/libmpers_mx32_a-ipc_semctl.Tpo -c -o libmpers_mx32_a-ipc_semctl.obj `if test -f 'ipc_semctl.c'; then $(CYGPATH_W) 'ipc_semctl.c'; else $(CYGPATH_W) '$(srcdir)/ipc_semctl.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libmpers_mx32_a-ipc_semctl.Tpo $(DEPDIR)/libmpers_mx32_a-ipc_semctl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ipc_semctl.c' object='libmpers_mx32_a-ipc_semctl.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_mx32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_mx32_a_CFLAGS) $(CFLAGS) -c -o libmpers_mx32_a-ipc_semctl.obj `if test -f 'ipc_semctl.c'; then $(CYGPATH_W) 'ipc_semctl.c'; else $(CYGPATH_W) '$(srcdir)/ipc_semctl.c'; fi`
+
 libmpers_mx32_a-ipc_shmctl.o: ipc_shmctl.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_mx32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_mx32_a_CFLAGS) $(CFLAGS) -MT libmpers_mx32_a-ipc_shmctl.o -MD -MP -MF $(DEPDIR)/libmpers_mx32_a-ipc_shmctl.Tpo -c -o libmpers_mx32_a-ipc_shmctl.o `test -f 'ipc_shmctl.c' || echo '$(srcdir)/'`ipc_shmctl.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libmpers_mx32_a-ipc_shmctl.Tpo $(DEPDIR)/libmpers_mx32_a-ipc_shmctl.Po
@@ -3688,20 +4049,6 @@ libmpers_mx32_a-print_time.obj: print_time.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_mx32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_mx32_a_CFLAGS) $(CFLAGS) -c -o libmpers_mx32_a-print_time.obj `if test -f 'print_time.c'; then $(CYGPATH_W) 'print_time.c'; else $(CYGPATH_W) '$(srcdir)/print_time.c'; fi`
 
-libmpers_mx32_a-print_timespec.o: print_timespec.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_mx32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_mx32_a_CFLAGS) $(CFLAGS) -MT libmpers_mx32_a-print_timespec.o -MD -MP -MF $(DEPDIR)/libmpers_mx32_a-print_timespec.Tpo -c -o libmpers_mx32_a-print_timespec.o `test -f 'print_timespec.c' || echo '$(srcdir)/'`print_timespec.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libmpers_mx32_a-print_timespec.Tpo $(DEPDIR)/libmpers_mx32_a-print_timespec.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_timespec.c' object='libmpers_mx32_a-print_timespec.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_mx32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_mx32_a_CFLAGS) $(CFLAGS) -c -o libmpers_mx32_a-print_timespec.o `test -f 'print_timespec.c' || echo '$(srcdir)/'`print_timespec.c
-
-libmpers_mx32_a-print_timespec.obj: print_timespec.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_mx32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_mx32_a_CFLAGS) $(CFLAGS) -MT libmpers_mx32_a-print_timespec.obj -MD -MP -MF $(DEPDIR)/libmpers_mx32_a-print_timespec.Tpo -c -o libmpers_mx32_a-print_timespec.obj `if test -f 'print_timespec.c'; then $(CYGPATH_W) 'print_timespec.c'; else $(CYGPATH_W) '$(srcdir)/print_timespec.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libmpers_mx32_a-print_timespec.Tpo $(DEPDIR)/libmpers_mx32_a-print_timespec.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_timespec.c' object='libmpers_mx32_a-print_timespec.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_mx32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_mx32_a_CFLAGS) $(CFLAGS) -c -o libmpers_mx32_a-print_timespec.obj `if test -f 'print_timespec.c'; then $(CYGPATH_W) 'print_timespec.c'; else $(CYGPATH_W) '$(srcdir)/print_timespec.c'; fi`
-
 libmpers_mx32_a-print_timeval.o: print_timeval.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_mx32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_mx32_a_CFLAGS) $(CFLAGS) -MT libmpers_mx32_a-print_timeval.o -MD -MP -MF $(DEPDIR)/libmpers_mx32_a-print_timeval.Tpo -c -o libmpers_mx32_a-print_timeval.o `test -f 'print_timeval.c' || echo '$(srcdir)/'`print_timeval.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libmpers_mx32_a-print_timeval.Tpo $(DEPDIR)/libmpers_mx32_a-print_timeval.Po
@@ -3884,3351 +4231,3785 @@ libmpers_mx32_a-v4l2.obj: v4l2.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_mx32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_mx32_a_CFLAGS) $(CFLAGS) -c -o libmpers_mx32_a-v4l2.obj `if test -f 'v4l2.c'; then $(CYGPATH_W) 'v4l2.c'; else $(CYGPATH_W) '$(srcdir)/v4l2.c'; fi`
 
-libstrace_a-fetch_indirect_syscall_args.o: fetch_indirect_syscall_args.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fetch_indirect_syscall_args.o -MD -MP -MF $(DEPDIR)/libstrace_a-fetch_indirect_syscall_args.Tpo -c -o libstrace_a-fetch_indirect_syscall_args.o `test -f 'fetch_indirect_syscall_args.c' || echo '$(srcdir)/'`fetch_indirect_syscall_args.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fetch_indirect_syscall_args.Tpo $(DEPDIR)/libstrace_a-fetch_indirect_syscall_args.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fetch_indirect_syscall_args.c' object='libstrace_a-fetch_indirect_syscall_args.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-access.o: access.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-access.o -MD -MP -MF $(DEPDIR)/libstrace_a-access.Tpo -c -o libstrace_a-access.o `test -f 'access.c' || echo '$(srcdir)/'`access.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-access.Tpo $(DEPDIR)/libstrace_a-access.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='access.c' object='libstrace_a-access.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fetch_indirect_syscall_args.o `test -f 'fetch_indirect_syscall_args.c' || echo '$(srcdir)/'`fetch_indirect_syscall_args.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-access.o `test -f 'access.c' || echo '$(srcdir)/'`access.c
 
-libstrace_a-fetch_indirect_syscall_args.obj: fetch_indirect_syscall_args.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fetch_indirect_syscall_args.obj -MD -MP -MF $(DEPDIR)/libstrace_a-fetch_indirect_syscall_args.Tpo -c -o libstrace_a-fetch_indirect_syscall_args.obj `if test -f 'fetch_indirect_syscall_args.c'; then $(CYGPATH_W) 'fetch_indirect_syscall_args.c'; else $(CYGPATH_W) '$(srcdir)/fetch_indirect_syscall_args.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fetch_indirect_syscall_args.Tpo $(DEPDIR)/libstrace_a-fetch_indirect_syscall_args.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fetch_indirect_syscall_args.c' object='libstrace_a-fetch_indirect_syscall_args.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-access.obj: access.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-access.obj -MD -MP -MF $(DEPDIR)/libstrace_a-access.Tpo -c -o libstrace_a-access.obj `if test -f 'access.c'; then $(CYGPATH_W) 'access.c'; else $(CYGPATH_W) '$(srcdir)/access.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-access.Tpo $(DEPDIR)/libstrace_a-access.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='access.c' object='libstrace_a-access.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fetch_indirect_syscall_args.obj `if test -f 'fetch_indirect_syscall_args.c'; then $(CYGPATH_W) 'fetch_indirect_syscall_args.c'; else $(CYGPATH_W) '$(srcdir)/fetch_indirect_syscall_args.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-access.obj `if test -f 'access.c'; then $(CYGPATH_W) 'access.c'; else $(CYGPATH_W) '$(srcdir)/access.c'; fi`
 
-libstrace_a-fstatfs.o: fstatfs.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fstatfs.o -MD -MP -MF $(DEPDIR)/libstrace_a-fstatfs.Tpo -c -o libstrace_a-fstatfs.o `test -f 'fstatfs.c' || echo '$(srcdir)/'`fstatfs.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fstatfs.Tpo $(DEPDIR)/libstrace_a-fstatfs.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fstatfs.c' object='libstrace_a-fstatfs.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-affinity.o: affinity.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-affinity.o -MD -MP -MF $(DEPDIR)/libstrace_a-affinity.Tpo -c -o libstrace_a-affinity.o `test -f 'affinity.c' || echo '$(srcdir)/'`affinity.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-affinity.Tpo $(DEPDIR)/libstrace_a-affinity.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='affinity.c' object='libstrace_a-affinity.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fstatfs.o `test -f 'fstatfs.c' || echo '$(srcdir)/'`fstatfs.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-affinity.o `test -f 'affinity.c' || echo '$(srcdir)/'`affinity.c
 
-libstrace_a-fstatfs.obj: fstatfs.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fstatfs.obj -MD -MP -MF $(DEPDIR)/libstrace_a-fstatfs.Tpo -c -o libstrace_a-fstatfs.obj `if test -f 'fstatfs.c'; then $(CYGPATH_W) 'fstatfs.c'; else $(CYGPATH_W) '$(srcdir)/fstatfs.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fstatfs.Tpo $(DEPDIR)/libstrace_a-fstatfs.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fstatfs.c' object='libstrace_a-fstatfs.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-affinity.obj: affinity.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-affinity.obj -MD -MP -MF $(DEPDIR)/libstrace_a-affinity.Tpo -c -o libstrace_a-affinity.obj `if test -f 'affinity.c'; then $(CYGPATH_W) 'affinity.c'; else $(CYGPATH_W) '$(srcdir)/affinity.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-affinity.Tpo $(DEPDIR)/libstrace_a-affinity.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='affinity.c' object='libstrace_a-affinity.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fstatfs.obj `if test -f 'fstatfs.c'; then $(CYGPATH_W) 'fstatfs.c'; else $(CYGPATH_W) '$(srcdir)/fstatfs.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-affinity.obj `if test -f 'affinity.c'; then $(CYGPATH_W) 'affinity.c'; else $(CYGPATH_W) '$(srcdir)/affinity.c'; fi`
 
-libstrace_a-fstatfs64.o: fstatfs64.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fstatfs64.o -MD -MP -MF $(DEPDIR)/libstrace_a-fstatfs64.Tpo -c -o libstrace_a-fstatfs64.o `test -f 'fstatfs64.c' || echo '$(srcdir)/'`fstatfs64.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fstatfs64.Tpo $(DEPDIR)/libstrace_a-fstatfs64.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fstatfs64.c' object='libstrace_a-fstatfs64.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-aio.o: aio.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-aio.o -MD -MP -MF $(DEPDIR)/libstrace_a-aio.Tpo -c -o libstrace_a-aio.o `test -f 'aio.c' || echo '$(srcdir)/'`aio.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-aio.Tpo $(DEPDIR)/libstrace_a-aio.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='aio.c' object='libstrace_a-aio.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fstatfs64.o `test -f 'fstatfs64.c' || echo '$(srcdir)/'`fstatfs64.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-aio.o `test -f 'aio.c' || echo '$(srcdir)/'`aio.c
 
-libstrace_a-fstatfs64.obj: fstatfs64.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fstatfs64.obj -MD -MP -MF $(DEPDIR)/libstrace_a-fstatfs64.Tpo -c -o libstrace_a-fstatfs64.obj `if test -f 'fstatfs64.c'; then $(CYGPATH_W) 'fstatfs64.c'; else $(CYGPATH_W) '$(srcdir)/fstatfs64.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fstatfs64.Tpo $(DEPDIR)/libstrace_a-fstatfs64.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fstatfs64.c' object='libstrace_a-fstatfs64.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-aio.obj: aio.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-aio.obj -MD -MP -MF $(DEPDIR)/libstrace_a-aio.Tpo -c -o libstrace_a-aio.obj `if test -f 'aio.c'; then $(CYGPATH_W) 'aio.c'; else $(CYGPATH_W) '$(srcdir)/aio.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-aio.Tpo $(DEPDIR)/libstrace_a-aio.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='aio.c' object='libstrace_a-aio.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fstatfs64.obj `if test -f 'fstatfs64.c'; then $(CYGPATH_W) 'fstatfs64.c'; else $(CYGPATH_W) '$(srcdir)/fstatfs64.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-aio.obj `if test -f 'aio.c'; then $(CYGPATH_W) 'aio.c'; else $(CYGPATH_W) '$(srcdir)/aio.c'; fi`
 
-libstrace_a-getpagesize.o: getpagesize.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-getpagesize.o -MD -MP -MF $(DEPDIR)/libstrace_a-getpagesize.Tpo -c -o libstrace_a-getpagesize.o `test -f 'getpagesize.c' || echo '$(srcdir)/'`getpagesize.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-getpagesize.Tpo $(DEPDIR)/libstrace_a-getpagesize.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='getpagesize.c' object='libstrace_a-getpagesize.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-alpha.o: alpha.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-alpha.o -MD -MP -MF $(DEPDIR)/libstrace_a-alpha.Tpo -c -o libstrace_a-alpha.o `test -f 'alpha.c' || echo '$(srcdir)/'`alpha.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-alpha.Tpo $(DEPDIR)/libstrace_a-alpha.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='alpha.c' object='libstrace_a-alpha.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-getpagesize.o `test -f 'getpagesize.c' || echo '$(srcdir)/'`getpagesize.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-alpha.o `test -f 'alpha.c' || echo '$(srcdir)/'`alpha.c
 
-libstrace_a-getpagesize.obj: getpagesize.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-getpagesize.obj -MD -MP -MF $(DEPDIR)/libstrace_a-getpagesize.Tpo -c -o libstrace_a-getpagesize.obj `if test -f 'getpagesize.c'; then $(CYGPATH_W) 'getpagesize.c'; else $(CYGPATH_W) '$(srcdir)/getpagesize.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-getpagesize.Tpo $(DEPDIR)/libstrace_a-getpagesize.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='getpagesize.c' object='libstrace_a-getpagesize.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-alpha.obj: alpha.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-alpha.obj -MD -MP -MF $(DEPDIR)/libstrace_a-alpha.Tpo -c -o libstrace_a-alpha.obj `if test -f 'alpha.c'; then $(CYGPATH_W) 'alpha.c'; else $(CYGPATH_W) '$(srcdir)/alpha.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-alpha.Tpo $(DEPDIR)/libstrace_a-alpha.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='alpha.c' object='libstrace_a-alpha.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-getpagesize.obj `if test -f 'getpagesize.c'; then $(CYGPATH_W) 'getpagesize.c'; else $(CYGPATH_W) '$(srcdir)/getpagesize.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-alpha.obj `if test -f 'alpha.c'; then $(CYGPATH_W) 'alpha.c'; else $(CYGPATH_W) '$(srcdir)/alpha.c'; fi`
 
-libstrace_a-ipc.o: ipc.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-ipc.o -MD -MP -MF $(DEPDIR)/libstrace_a-ipc.Tpo -c -o libstrace_a-ipc.o `test -f 'ipc.c' || echo '$(srcdir)/'`ipc.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-ipc.Tpo $(DEPDIR)/libstrace_a-ipc.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ipc.c' object='libstrace_a-ipc.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-basic_filters.o: basic_filters.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-basic_filters.o -MD -MP -MF $(DEPDIR)/libstrace_a-basic_filters.Tpo -c -o libstrace_a-basic_filters.o `test -f 'basic_filters.c' || echo '$(srcdir)/'`basic_filters.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-basic_filters.Tpo $(DEPDIR)/libstrace_a-basic_filters.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='basic_filters.c' object='libstrace_a-basic_filters.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-ipc.o `test -f 'ipc.c' || echo '$(srcdir)/'`ipc.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-basic_filters.o `test -f 'basic_filters.c' || echo '$(srcdir)/'`basic_filters.c
 
-libstrace_a-ipc.obj: ipc.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-ipc.obj -MD -MP -MF $(DEPDIR)/libstrace_a-ipc.Tpo -c -o libstrace_a-ipc.obj `if test -f 'ipc.c'; then $(CYGPATH_W) 'ipc.c'; else $(CYGPATH_W) '$(srcdir)/ipc.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-ipc.Tpo $(DEPDIR)/libstrace_a-ipc.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ipc.c' object='libstrace_a-ipc.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-basic_filters.obj: basic_filters.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-basic_filters.obj -MD -MP -MF $(DEPDIR)/libstrace_a-basic_filters.Tpo -c -o libstrace_a-basic_filters.obj `if test -f 'basic_filters.c'; then $(CYGPATH_W) 'basic_filters.c'; else $(CYGPATH_W) '$(srcdir)/basic_filters.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-basic_filters.Tpo $(DEPDIR)/libstrace_a-basic_filters.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='basic_filters.c' object='libstrace_a-basic_filters.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-ipc.obj `if test -f 'ipc.c'; then $(CYGPATH_W) 'ipc.c'; else $(CYGPATH_W) '$(srcdir)/ipc.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-basic_filters.obj `if test -f 'basic_filters.c'; then $(CYGPATH_W) 'basic_filters.c'; else $(CYGPATH_W) '$(srcdir)/basic_filters.c'; fi`
 
-libstrace_a-mmap_cache.o: mmap_cache.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-mmap_cache.o -MD -MP -MF $(DEPDIR)/libstrace_a-mmap_cache.Tpo -c -o libstrace_a-mmap_cache.o `test -f 'mmap_cache.c' || echo '$(srcdir)/'`mmap_cache.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-mmap_cache.Tpo $(DEPDIR)/libstrace_a-mmap_cache.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='mmap_cache.c' object='libstrace_a-mmap_cache.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-bind.o: bind.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-bind.o -MD -MP -MF $(DEPDIR)/libstrace_a-bind.Tpo -c -o libstrace_a-bind.o `test -f 'bind.c' || echo '$(srcdir)/'`bind.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-bind.Tpo $(DEPDIR)/libstrace_a-bind.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='bind.c' object='libstrace_a-bind.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-mmap_cache.o `test -f 'mmap_cache.c' || echo '$(srcdir)/'`mmap_cache.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-bind.o `test -f 'bind.c' || echo '$(srcdir)/'`bind.c
 
-libstrace_a-mmap_cache.obj: mmap_cache.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-mmap_cache.obj -MD -MP -MF $(DEPDIR)/libstrace_a-mmap_cache.Tpo -c -o libstrace_a-mmap_cache.obj `if test -f 'mmap_cache.c'; then $(CYGPATH_W) 'mmap_cache.c'; else $(CYGPATH_W) '$(srcdir)/mmap_cache.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-mmap_cache.Tpo $(DEPDIR)/libstrace_a-mmap_cache.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='mmap_cache.c' object='libstrace_a-mmap_cache.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-bind.obj: bind.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-bind.obj -MD -MP -MF $(DEPDIR)/libstrace_a-bind.Tpo -c -o libstrace_a-bind.obj `if test -f 'bind.c'; then $(CYGPATH_W) 'bind.c'; else $(CYGPATH_W) '$(srcdir)/bind.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-bind.Tpo $(DEPDIR)/libstrace_a-bind.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='bind.c' object='libstrace_a-bind.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-mmap_cache.obj `if test -f 'mmap_cache.c'; then $(CYGPATH_W) 'mmap_cache.c'; else $(CYGPATH_W) '$(srcdir)/mmap_cache.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-bind.obj `if test -f 'bind.c'; then $(CYGPATH_W) 'bind.c'; else $(CYGPATH_W) '$(srcdir)/bind.c'; fi`
 
-libstrace_a-sigreturn.o: sigreturn.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-sigreturn.o -MD -MP -MF $(DEPDIR)/libstrace_a-sigreturn.Tpo -c -o libstrace_a-sigreturn.o `test -f 'sigreturn.c' || echo '$(srcdir)/'`sigreturn.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-sigreturn.Tpo $(DEPDIR)/libstrace_a-sigreturn.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sigreturn.c' object='libstrace_a-sigreturn.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-bjm.o: bjm.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-bjm.o -MD -MP -MF $(DEPDIR)/libstrace_a-bjm.Tpo -c -o libstrace_a-bjm.o `test -f 'bjm.c' || echo '$(srcdir)/'`bjm.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-bjm.Tpo $(DEPDIR)/libstrace_a-bjm.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='bjm.c' object='libstrace_a-bjm.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-sigreturn.o `test -f 'sigreturn.c' || echo '$(srcdir)/'`sigreturn.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-bjm.o `test -f 'bjm.c' || echo '$(srcdir)/'`bjm.c
 
-libstrace_a-sigreturn.obj: sigreturn.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-sigreturn.obj -MD -MP -MF $(DEPDIR)/libstrace_a-sigreturn.Tpo -c -o libstrace_a-sigreturn.obj `if test -f 'sigreturn.c'; then $(CYGPATH_W) 'sigreturn.c'; else $(CYGPATH_W) '$(srcdir)/sigreturn.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-sigreturn.Tpo $(DEPDIR)/libstrace_a-sigreturn.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sigreturn.c' object='libstrace_a-sigreturn.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-bjm.obj: bjm.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-bjm.obj -MD -MP -MF $(DEPDIR)/libstrace_a-bjm.Tpo -c -o libstrace_a-bjm.obj `if test -f 'bjm.c'; then $(CYGPATH_W) 'bjm.c'; else $(CYGPATH_W) '$(srcdir)/bjm.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-bjm.Tpo $(DEPDIR)/libstrace_a-bjm.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='bjm.c' object='libstrace_a-bjm.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-sigreturn.obj `if test -f 'sigreturn.c'; then $(CYGPATH_W) 'sigreturn.c'; else $(CYGPATH_W) '$(srcdir)/sigreturn.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-bjm.obj `if test -f 'bjm.c'; then $(CYGPATH_W) 'bjm.c'; else $(CYGPATH_W) '$(srcdir)/bjm.c'; fi`
 
-libstrace_a-socketcall.o: socketcall.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-socketcall.o -MD -MP -MF $(DEPDIR)/libstrace_a-socketcall.Tpo -c -o libstrace_a-socketcall.o `test -f 'socketcall.c' || echo '$(srcdir)/'`socketcall.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-socketcall.Tpo $(DEPDIR)/libstrace_a-socketcall.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='socketcall.c' object='libstrace_a-socketcall.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-block.o: block.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-block.o -MD -MP -MF $(DEPDIR)/libstrace_a-block.Tpo -c -o libstrace_a-block.o `test -f 'block.c' || echo '$(srcdir)/'`block.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-block.Tpo $(DEPDIR)/libstrace_a-block.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='block.c' object='libstrace_a-block.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-socketcall.o `test -f 'socketcall.c' || echo '$(srcdir)/'`socketcall.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-block.o `test -f 'block.c' || echo '$(srcdir)/'`block.c
 
-libstrace_a-socketcall.obj: socketcall.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-socketcall.obj -MD -MP -MF $(DEPDIR)/libstrace_a-socketcall.Tpo -c -o libstrace_a-socketcall.obj `if test -f 'socketcall.c'; then $(CYGPATH_W) 'socketcall.c'; else $(CYGPATH_W) '$(srcdir)/socketcall.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-socketcall.Tpo $(DEPDIR)/libstrace_a-socketcall.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='socketcall.c' object='libstrace_a-socketcall.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-block.obj: block.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-block.obj -MD -MP -MF $(DEPDIR)/libstrace_a-block.Tpo -c -o libstrace_a-block.obj `if test -f 'block.c'; then $(CYGPATH_W) 'block.c'; else $(CYGPATH_W) '$(srcdir)/block.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-block.Tpo $(DEPDIR)/libstrace_a-block.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='block.c' object='libstrace_a-block.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-socketcall.obj `if test -f 'socketcall.c'; then $(CYGPATH_W) 'socketcall.c'; else $(CYGPATH_W) '$(srcdir)/socketcall.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-block.obj `if test -f 'block.c'; then $(CYGPATH_W) 'block.c'; else $(CYGPATH_W) '$(srcdir)/block.c'; fi`
 
-libstrace_a-statfs.o: statfs.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-statfs.o -MD -MP -MF $(DEPDIR)/libstrace_a-statfs.Tpo -c -o libstrace_a-statfs.o `test -f 'statfs.c' || echo '$(srcdir)/'`statfs.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-statfs.Tpo $(DEPDIR)/libstrace_a-statfs.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='statfs.c' object='libstrace_a-statfs.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-bpf.o: bpf.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-bpf.o -MD -MP -MF $(DEPDIR)/libstrace_a-bpf.Tpo -c -o libstrace_a-bpf.o `test -f 'bpf.c' || echo '$(srcdir)/'`bpf.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-bpf.Tpo $(DEPDIR)/libstrace_a-bpf.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='bpf.c' object='libstrace_a-bpf.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-statfs.o `test -f 'statfs.c' || echo '$(srcdir)/'`statfs.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-bpf.o `test -f 'bpf.c' || echo '$(srcdir)/'`bpf.c
 
-libstrace_a-statfs.obj: statfs.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-statfs.obj -MD -MP -MF $(DEPDIR)/libstrace_a-statfs.Tpo -c -o libstrace_a-statfs.obj `if test -f 'statfs.c'; then $(CYGPATH_W) 'statfs.c'; else $(CYGPATH_W) '$(srcdir)/statfs.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-statfs.Tpo $(DEPDIR)/libstrace_a-statfs.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='statfs.c' object='libstrace_a-statfs.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-bpf.obj: bpf.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-bpf.obj -MD -MP -MF $(DEPDIR)/libstrace_a-bpf.Tpo -c -o libstrace_a-bpf.obj `if test -f 'bpf.c'; then $(CYGPATH_W) 'bpf.c'; else $(CYGPATH_W) '$(srcdir)/bpf.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-bpf.Tpo $(DEPDIR)/libstrace_a-bpf.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='bpf.c' object='libstrace_a-bpf.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-statfs.obj `if test -f 'statfs.c'; then $(CYGPATH_W) 'statfs.c'; else $(CYGPATH_W) '$(srcdir)/statfs.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-bpf.obj `if test -f 'bpf.c'; then $(CYGPATH_W) 'bpf.c'; else $(CYGPATH_W) '$(srcdir)/bpf.c'; fi`
 
-libstrace_a-statfs64.o: statfs64.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-statfs64.o -MD -MP -MF $(DEPDIR)/libstrace_a-statfs64.Tpo -c -o libstrace_a-statfs64.o `test -f 'statfs64.c' || echo '$(srcdir)/'`statfs64.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-statfs64.Tpo $(DEPDIR)/libstrace_a-statfs64.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='statfs64.c' object='libstrace_a-statfs64.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-bpf_filter.o: bpf_filter.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-bpf_filter.o -MD -MP -MF $(DEPDIR)/libstrace_a-bpf_filter.Tpo -c -o libstrace_a-bpf_filter.o `test -f 'bpf_filter.c' || echo '$(srcdir)/'`bpf_filter.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-bpf_filter.Tpo $(DEPDIR)/libstrace_a-bpf_filter.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='bpf_filter.c' object='libstrace_a-bpf_filter.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-statfs64.o `test -f 'statfs64.c' || echo '$(srcdir)/'`statfs64.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-bpf_filter.o `test -f 'bpf_filter.c' || echo '$(srcdir)/'`bpf_filter.c
 
-libstrace_a-statfs64.obj: statfs64.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-statfs64.obj -MD -MP -MF $(DEPDIR)/libstrace_a-statfs64.Tpo -c -o libstrace_a-statfs64.obj `if test -f 'statfs64.c'; then $(CYGPATH_W) 'statfs64.c'; else $(CYGPATH_W) '$(srcdir)/statfs64.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-statfs64.Tpo $(DEPDIR)/libstrace_a-statfs64.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='statfs64.c' object='libstrace_a-statfs64.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-bpf_filter.obj: bpf_filter.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-bpf_filter.obj -MD -MP -MF $(DEPDIR)/libstrace_a-bpf_filter.Tpo -c -o libstrace_a-bpf_filter.obj `if test -f 'bpf_filter.c'; then $(CYGPATH_W) 'bpf_filter.c'; else $(CYGPATH_W) '$(srcdir)/bpf_filter.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-bpf_filter.Tpo $(DEPDIR)/libstrace_a-bpf_filter.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='bpf_filter.c' object='libstrace_a-bpf_filter.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-statfs64.obj `if test -f 'statfs64.c'; then $(CYGPATH_W) 'statfs64.c'; else $(CYGPATH_W) '$(srcdir)/statfs64.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-bpf_filter.obj `if test -f 'bpf_filter.c'; then $(CYGPATH_W) 'bpf_filter.c'; else $(CYGPATH_W) '$(srcdir)/bpf_filter.c'; fi`
 
-libstrace_a-sync_file_range.o: sync_file_range.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-sync_file_range.o -MD -MP -MF $(DEPDIR)/libstrace_a-sync_file_range.Tpo -c -o libstrace_a-sync_file_range.o `test -f 'sync_file_range.c' || echo '$(srcdir)/'`sync_file_range.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-sync_file_range.Tpo $(DEPDIR)/libstrace_a-sync_file_range.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sync_file_range.c' object='libstrace_a-sync_file_range.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-bpf_seccomp_filter.o: bpf_seccomp_filter.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-bpf_seccomp_filter.o -MD -MP -MF $(DEPDIR)/libstrace_a-bpf_seccomp_filter.Tpo -c -o libstrace_a-bpf_seccomp_filter.o `test -f 'bpf_seccomp_filter.c' || echo '$(srcdir)/'`bpf_seccomp_filter.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-bpf_seccomp_filter.Tpo $(DEPDIR)/libstrace_a-bpf_seccomp_filter.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='bpf_seccomp_filter.c' object='libstrace_a-bpf_seccomp_filter.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-sync_file_range.o `test -f 'sync_file_range.c' || echo '$(srcdir)/'`sync_file_range.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-bpf_seccomp_filter.o `test -f 'bpf_seccomp_filter.c' || echo '$(srcdir)/'`bpf_seccomp_filter.c
 
-libstrace_a-sync_file_range.obj: sync_file_range.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-sync_file_range.obj -MD -MP -MF $(DEPDIR)/libstrace_a-sync_file_range.Tpo -c -o libstrace_a-sync_file_range.obj `if test -f 'sync_file_range.c'; then $(CYGPATH_W) 'sync_file_range.c'; else $(CYGPATH_W) '$(srcdir)/sync_file_range.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-sync_file_range.Tpo $(DEPDIR)/libstrace_a-sync_file_range.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sync_file_range.c' object='libstrace_a-sync_file_range.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-bpf_seccomp_filter.obj: bpf_seccomp_filter.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-bpf_seccomp_filter.obj -MD -MP -MF $(DEPDIR)/libstrace_a-bpf_seccomp_filter.Tpo -c -o libstrace_a-bpf_seccomp_filter.obj `if test -f 'bpf_seccomp_filter.c'; then $(CYGPATH_W) 'bpf_seccomp_filter.c'; else $(CYGPATH_W) '$(srcdir)/bpf_seccomp_filter.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-bpf_seccomp_filter.Tpo $(DEPDIR)/libstrace_a-bpf_seccomp_filter.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='bpf_seccomp_filter.c' object='libstrace_a-bpf_seccomp_filter.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-sync_file_range.obj `if test -f 'sync_file_range.c'; then $(CYGPATH_W) 'sync_file_range.c'; else $(CYGPATH_W) '$(srcdir)/sync_file_range.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-bpf_seccomp_filter.obj `if test -f 'bpf_seccomp_filter.c'; then $(CYGPATH_W) 'bpf_seccomp_filter.c'; else $(CYGPATH_W) '$(srcdir)/bpf_seccomp_filter.c'; fi`
 
-libstrace_a-sync_file_range2.o: sync_file_range2.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-sync_file_range2.o -MD -MP -MF $(DEPDIR)/libstrace_a-sync_file_range2.Tpo -c -o libstrace_a-sync_file_range2.o `test -f 'sync_file_range2.c' || echo '$(srcdir)/'`sync_file_range2.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-sync_file_range2.Tpo $(DEPDIR)/libstrace_a-sync_file_range2.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sync_file_range2.c' object='libstrace_a-sync_file_range2.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-bpf_sock_filter.o: bpf_sock_filter.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-bpf_sock_filter.o -MD -MP -MF $(DEPDIR)/libstrace_a-bpf_sock_filter.Tpo -c -o libstrace_a-bpf_sock_filter.o `test -f 'bpf_sock_filter.c' || echo '$(srcdir)/'`bpf_sock_filter.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-bpf_sock_filter.Tpo $(DEPDIR)/libstrace_a-bpf_sock_filter.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='bpf_sock_filter.c' object='libstrace_a-bpf_sock_filter.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-sync_file_range2.o `test -f 'sync_file_range2.c' || echo '$(srcdir)/'`sync_file_range2.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-bpf_sock_filter.o `test -f 'bpf_sock_filter.c' || echo '$(srcdir)/'`bpf_sock_filter.c
 
-libstrace_a-sync_file_range2.obj: sync_file_range2.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-sync_file_range2.obj -MD -MP -MF $(DEPDIR)/libstrace_a-sync_file_range2.Tpo -c -o libstrace_a-sync_file_range2.obj `if test -f 'sync_file_range2.c'; then $(CYGPATH_W) 'sync_file_range2.c'; else $(CYGPATH_W) '$(srcdir)/sync_file_range2.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-sync_file_range2.Tpo $(DEPDIR)/libstrace_a-sync_file_range2.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sync_file_range2.c' object='libstrace_a-sync_file_range2.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-bpf_sock_filter.obj: bpf_sock_filter.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-bpf_sock_filter.obj -MD -MP -MF $(DEPDIR)/libstrace_a-bpf_sock_filter.Tpo -c -o libstrace_a-bpf_sock_filter.obj `if test -f 'bpf_sock_filter.c'; then $(CYGPATH_W) 'bpf_sock_filter.c'; else $(CYGPATH_W) '$(srcdir)/bpf_sock_filter.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-bpf_sock_filter.Tpo $(DEPDIR)/libstrace_a-bpf_sock_filter.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='bpf_sock_filter.c' object='libstrace_a-bpf_sock_filter.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-sync_file_range2.obj `if test -f 'sync_file_range2.c'; then $(CYGPATH_W) 'sync_file_range2.c'; else $(CYGPATH_W) '$(srcdir)/sync_file_range2.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-bpf_sock_filter.obj `if test -f 'bpf_sock_filter.c'; then $(CYGPATH_W) 'bpf_sock_filter.c'; else $(CYGPATH_W) '$(srcdir)/bpf_sock_filter.c'; fi`
 
-libstrace_a-upeek.o: upeek.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-upeek.o -MD -MP -MF $(DEPDIR)/libstrace_a-upeek.Tpo -c -o libstrace_a-upeek.o `test -f 'upeek.c' || echo '$(srcdir)/'`upeek.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-upeek.Tpo $(DEPDIR)/libstrace_a-upeek.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='upeek.c' object='libstrace_a-upeek.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-btrfs.o: btrfs.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-btrfs.o -MD -MP -MF $(DEPDIR)/libstrace_a-btrfs.Tpo -c -o libstrace_a-btrfs.o `test -f 'btrfs.c' || echo '$(srcdir)/'`btrfs.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-btrfs.Tpo $(DEPDIR)/libstrace_a-btrfs.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='btrfs.c' object='libstrace_a-btrfs.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-upeek.o `test -f 'upeek.c' || echo '$(srcdir)/'`upeek.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-btrfs.o `test -f 'btrfs.c' || echo '$(srcdir)/'`btrfs.c
 
-libstrace_a-upeek.obj: upeek.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-upeek.obj -MD -MP -MF $(DEPDIR)/libstrace_a-upeek.Tpo -c -o libstrace_a-upeek.obj `if test -f 'upeek.c'; then $(CYGPATH_W) 'upeek.c'; else $(CYGPATH_W) '$(srcdir)/upeek.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-upeek.Tpo $(DEPDIR)/libstrace_a-upeek.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='upeek.c' object='libstrace_a-upeek.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-btrfs.obj: btrfs.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-btrfs.obj -MD -MP -MF $(DEPDIR)/libstrace_a-btrfs.Tpo -c -o libstrace_a-btrfs.obj `if test -f 'btrfs.c'; then $(CYGPATH_W) 'btrfs.c'; else $(CYGPATH_W) '$(srcdir)/btrfs.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-btrfs.Tpo $(DEPDIR)/libstrace_a-btrfs.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='btrfs.c' object='libstrace_a-btrfs.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-upeek.obj `if test -f 'upeek.c'; then $(CYGPATH_W) 'upeek.c'; else $(CYGPATH_W) '$(srcdir)/upeek.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-btrfs.obj `if test -f 'btrfs.c'; then $(CYGPATH_W) 'btrfs.c'; else $(CYGPATH_W) '$(srcdir)/btrfs.c'; fi`
 
-libstrace_a-upoke.o: upoke.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-upoke.o -MD -MP -MF $(DEPDIR)/libstrace_a-upoke.Tpo -c -o libstrace_a-upoke.o `test -f 'upoke.c' || echo '$(srcdir)/'`upoke.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-upoke.Tpo $(DEPDIR)/libstrace_a-upoke.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='upoke.c' object='libstrace_a-upoke.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-cacheflush.o: cacheflush.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-cacheflush.o -MD -MP -MF $(DEPDIR)/libstrace_a-cacheflush.Tpo -c -o libstrace_a-cacheflush.o `test -f 'cacheflush.c' || echo '$(srcdir)/'`cacheflush.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-cacheflush.Tpo $(DEPDIR)/libstrace_a-cacheflush.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cacheflush.c' object='libstrace_a-cacheflush.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-upoke.o `test -f 'upoke.c' || echo '$(srcdir)/'`upoke.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-cacheflush.o `test -f 'cacheflush.c' || echo '$(srcdir)/'`cacheflush.c
 
-libstrace_a-upoke.obj: upoke.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-upoke.obj -MD -MP -MF $(DEPDIR)/libstrace_a-upoke.Tpo -c -o libstrace_a-upoke.obj `if test -f 'upoke.c'; then $(CYGPATH_W) 'upoke.c'; else $(CYGPATH_W) '$(srcdir)/upoke.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-upoke.Tpo $(DEPDIR)/libstrace_a-upoke.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='upoke.c' object='libstrace_a-upoke.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-cacheflush.obj: cacheflush.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-cacheflush.obj -MD -MP -MF $(DEPDIR)/libstrace_a-cacheflush.Tpo -c -o libstrace_a-cacheflush.obj `if test -f 'cacheflush.c'; then $(CYGPATH_W) 'cacheflush.c'; else $(CYGPATH_W) '$(srcdir)/cacheflush.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-cacheflush.Tpo $(DEPDIR)/libstrace_a-cacheflush.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cacheflush.c' object='libstrace_a-cacheflush.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-upoke.obj `if test -f 'upoke.c'; then $(CYGPATH_W) 'upoke.c'; else $(CYGPATH_W) '$(srcdir)/upoke.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-cacheflush.obj `if test -f 'cacheflush.c'; then $(CYGPATH_W) 'cacheflush.c'; else $(CYGPATH_W) '$(srcdir)/cacheflush.c'; fi`
 
-strace-access.o: access.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-access.o -MD -MP -MF $(DEPDIR)/strace-access.Tpo -c -o strace-access.o `test -f 'access.c' || echo '$(srcdir)/'`access.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-access.Tpo $(DEPDIR)/strace-access.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='access.c' object='strace-access.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-capability.o: capability.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-capability.o -MD -MP -MF $(DEPDIR)/libstrace_a-capability.Tpo -c -o libstrace_a-capability.o `test -f 'capability.c' || echo '$(srcdir)/'`capability.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-capability.Tpo $(DEPDIR)/libstrace_a-capability.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='capability.c' object='libstrace_a-capability.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-access.o `test -f 'access.c' || echo '$(srcdir)/'`access.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-capability.o `test -f 'capability.c' || echo '$(srcdir)/'`capability.c
 
-strace-access.obj: access.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-access.obj -MD -MP -MF $(DEPDIR)/strace-access.Tpo -c -o strace-access.obj `if test -f 'access.c'; then $(CYGPATH_W) 'access.c'; else $(CYGPATH_W) '$(srcdir)/access.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-access.Tpo $(DEPDIR)/strace-access.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='access.c' object='strace-access.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-capability.obj: capability.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-capability.obj -MD -MP -MF $(DEPDIR)/libstrace_a-capability.Tpo -c -o libstrace_a-capability.obj `if test -f 'capability.c'; then $(CYGPATH_W) 'capability.c'; else $(CYGPATH_W) '$(srcdir)/capability.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-capability.Tpo $(DEPDIR)/libstrace_a-capability.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='capability.c' object='libstrace_a-capability.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-access.obj `if test -f 'access.c'; then $(CYGPATH_W) 'access.c'; else $(CYGPATH_W) '$(srcdir)/access.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-capability.obj `if test -f 'capability.c'; then $(CYGPATH_W) 'capability.c'; else $(CYGPATH_W) '$(srcdir)/capability.c'; fi`
 
-strace-affinity.o: affinity.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-affinity.o -MD -MP -MF $(DEPDIR)/strace-affinity.Tpo -c -o strace-affinity.o `test -f 'affinity.c' || echo '$(srcdir)/'`affinity.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-affinity.Tpo $(DEPDIR)/strace-affinity.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='affinity.c' object='strace-affinity.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-chdir.o: chdir.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-chdir.o -MD -MP -MF $(DEPDIR)/libstrace_a-chdir.Tpo -c -o libstrace_a-chdir.o `test -f 'chdir.c' || echo '$(srcdir)/'`chdir.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-chdir.Tpo $(DEPDIR)/libstrace_a-chdir.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='chdir.c' object='libstrace_a-chdir.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-affinity.o `test -f 'affinity.c' || echo '$(srcdir)/'`affinity.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-chdir.o `test -f 'chdir.c' || echo '$(srcdir)/'`chdir.c
 
-strace-affinity.obj: affinity.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-affinity.obj -MD -MP -MF $(DEPDIR)/strace-affinity.Tpo -c -o strace-affinity.obj `if test -f 'affinity.c'; then $(CYGPATH_W) 'affinity.c'; else $(CYGPATH_W) '$(srcdir)/affinity.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-affinity.Tpo $(DEPDIR)/strace-affinity.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='affinity.c' object='strace-affinity.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-chdir.obj: chdir.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-chdir.obj -MD -MP -MF $(DEPDIR)/libstrace_a-chdir.Tpo -c -o libstrace_a-chdir.obj `if test -f 'chdir.c'; then $(CYGPATH_W) 'chdir.c'; else $(CYGPATH_W) '$(srcdir)/chdir.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-chdir.Tpo $(DEPDIR)/libstrace_a-chdir.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='chdir.c' object='libstrace_a-chdir.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-affinity.obj `if test -f 'affinity.c'; then $(CYGPATH_W) 'affinity.c'; else $(CYGPATH_W) '$(srcdir)/affinity.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-chdir.obj `if test -f 'chdir.c'; then $(CYGPATH_W) 'chdir.c'; else $(CYGPATH_W) '$(srcdir)/chdir.c'; fi`
 
-strace-aio.o: aio.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-aio.o -MD -MP -MF $(DEPDIR)/strace-aio.Tpo -c -o strace-aio.o `test -f 'aio.c' || echo '$(srcdir)/'`aio.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-aio.Tpo $(DEPDIR)/strace-aio.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='aio.c' object='strace-aio.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-chmod.o: chmod.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-chmod.o -MD -MP -MF $(DEPDIR)/libstrace_a-chmod.Tpo -c -o libstrace_a-chmod.o `test -f 'chmod.c' || echo '$(srcdir)/'`chmod.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-chmod.Tpo $(DEPDIR)/libstrace_a-chmod.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='chmod.c' object='libstrace_a-chmod.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-aio.o `test -f 'aio.c' || echo '$(srcdir)/'`aio.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-chmod.o `test -f 'chmod.c' || echo '$(srcdir)/'`chmod.c
 
-strace-aio.obj: aio.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-aio.obj -MD -MP -MF $(DEPDIR)/strace-aio.Tpo -c -o strace-aio.obj `if test -f 'aio.c'; then $(CYGPATH_W) 'aio.c'; else $(CYGPATH_W) '$(srcdir)/aio.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-aio.Tpo $(DEPDIR)/strace-aio.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='aio.c' object='strace-aio.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-chmod.obj: chmod.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-chmod.obj -MD -MP -MF $(DEPDIR)/libstrace_a-chmod.Tpo -c -o libstrace_a-chmod.obj `if test -f 'chmod.c'; then $(CYGPATH_W) 'chmod.c'; else $(CYGPATH_W) '$(srcdir)/chmod.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-chmod.Tpo $(DEPDIR)/libstrace_a-chmod.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='chmod.c' object='libstrace_a-chmod.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-aio.obj `if test -f 'aio.c'; then $(CYGPATH_W) 'aio.c'; else $(CYGPATH_W) '$(srcdir)/aio.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-chmod.obj `if test -f 'chmod.c'; then $(CYGPATH_W) 'chmod.c'; else $(CYGPATH_W) '$(srcdir)/chmod.c'; fi`
 
-strace-alpha.o: alpha.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-alpha.o -MD -MP -MF $(DEPDIR)/strace-alpha.Tpo -c -o strace-alpha.o `test -f 'alpha.c' || echo '$(srcdir)/'`alpha.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-alpha.Tpo $(DEPDIR)/strace-alpha.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='alpha.c' object='strace-alpha.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-clone.o: clone.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-clone.o -MD -MP -MF $(DEPDIR)/libstrace_a-clone.Tpo -c -o libstrace_a-clone.o `test -f 'clone.c' || echo '$(srcdir)/'`clone.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-clone.Tpo $(DEPDIR)/libstrace_a-clone.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='clone.c' object='libstrace_a-clone.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-alpha.o `test -f 'alpha.c' || echo '$(srcdir)/'`alpha.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-clone.o `test -f 'clone.c' || echo '$(srcdir)/'`clone.c
 
-strace-alpha.obj: alpha.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-alpha.obj -MD -MP -MF $(DEPDIR)/strace-alpha.Tpo -c -o strace-alpha.obj `if test -f 'alpha.c'; then $(CYGPATH_W) 'alpha.c'; else $(CYGPATH_W) '$(srcdir)/alpha.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-alpha.Tpo $(DEPDIR)/strace-alpha.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='alpha.c' object='strace-alpha.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-clone.obj: clone.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-clone.obj -MD -MP -MF $(DEPDIR)/libstrace_a-clone.Tpo -c -o libstrace_a-clone.obj `if test -f 'clone.c'; then $(CYGPATH_W) 'clone.c'; else $(CYGPATH_W) '$(srcdir)/clone.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-clone.Tpo $(DEPDIR)/libstrace_a-clone.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='clone.c' object='libstrace_a-clone.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-alpha.obj `if test -f 'alpha.c'; then $(CYGPATH_W) 'alpha.c'; else $(CYGPATH_W) '$(srcdir)/alpha.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-clone.obj `if test -f 'clone.c'; then $(CYGPATH_W) 'clone.c'; else $(CYGPATH_W) '$(srcdir)/clone.c'; fi`
 
-strace-basic_filters.o: basic_filters.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-basic_filters.o -MD -MP -MF $(DEPDIR)/strace-basic_filters.Tpo -c -o strace-basic_filters.o `test -f 'basic_filters.c' || echo '$(srcdir)/'`basic_filters.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-basic_filters.Tpo $(DEPDIR)/strace-basic_filters.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='basic_filters.c' object='strace-basic_filters.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-close_range.o: close_range.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-close_range.o -MD -MP -MF $(DEPDIR)/libstrace_a-close_range.Tpo -c -o libstrace_a-close_range.o `test -f 'close_range.c' || echo '$(srcdir)/'`close_range.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-close_range.Tpo $(DEPDIR)/libstrace_a-close_range.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='close_range.c' object='libstrace_a-close_range.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-basic_filters.o `test -f 'basic_filters.c' || echo '$(srcdir)/'`basic_filters.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-close_range.o `test -f 'close_range.c' || echo '$(srcdir)/'`close_range.c
 
-strace-basic_filters.obj: basic_filters.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-basic_filters.obj -MD -MP -MF $(DEPDIR)/strace-basic_filters.Tpo -c -o strace-basic_filters.obj `if test -f 'basic_filters.c'; then $(CYGPATH_W) 'basic_filters.c'; else $(CYGPATH_W) '$(srcdir)/basic_filters.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-basic_filters.Tpo $(DEPDIR)/strace-basic_filters.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='basic_filters.c' object='strace-basic_filters.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-close_range.obj: close_range.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-close_range.obj -MD -MP -MF $(DEPDIR)/libstrace_a-close_range.Tpo -c -o libstrace_a-close_range.obj `if test -f 'close_range.c'; then $(CYGPATH_W) 'close_range.c'; else $(CYGPATH_W) '$(srcdir)/close_range.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-close_range.Tpo $(DEPDIR)/libstrace_a-close_range.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='close_range.c' object='libstrace_a-close_range.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-basic_filters.obj `if test -f 'basic_filters.c'; then $(CYGPATH_W) 'basic_filters.c'; else $(CYGPATH_W) '$(srcdir)/basic_filters.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-close_range.obj `if test -f 'close_range.c'; then $(CYGPATH_W) 'close_range.c'; else $(CYGPATH_W) '$(srcdir)/close_range.c'; fi`
 
-strace-bind.o: bind.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-bind.o -MD -MP -MF $(DEPDIR)/strace-bind.Tpo -c -o strace-bind.o `test -f 'bind.c' || echo '$(srcdir)/'`bind.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-bind.Tpo $(DEPDIR)/strace-bind.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='bind.c' object='strace-bind.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-copy_file_range.o: copy_file_range.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-copy_file_range.o -MD -MP -MF $(DEPDIR)/libstrace_a-copy_file_range.Tpo -c -o libstrace_a-copy_file_range.o `test -f 'copy_file_range.c' || echo '$(srcdir)/'`copy_file_range.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-copy_file_range.Tpo $(DEPDIR)/libstrace_a-copy_file_range.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='copy_file_range.c' object='libstrace_a-copy_file_range.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-bind.o `test -f 'bind.c' || echo '$(srcdir)/'`bind.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-copy_file_range.o `test -f 'copy_file_range.c' || echo '$(srcdir)/'`copy_file_range.c
 
-strace-bind.obj: bind.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-bind.obj -MD -MP -MF $(DEPDIR)/strace-bind.Tpo -c -o strace-bind.obj `if test -f 'bind.c'; then $(CYGPATH_W) 'bind.c'; else $(CYGPATH_W) '$(srcdir)/bind.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-bind.Tpo $(DEPDIR)/strace-bind.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='bind.c' object='strace-bind.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-copy_file_range.obj: copy_file_range.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-copy_file_range.obj -MD -MP -MF $(DEPDIR)/libstrace_a-copy_file_range.Tpo -c -o libstrace_a-copy_file_range.obj `if test -f 'copy_file_range.c'; then $(CYGPATH_W) 'copy_file_range.c'; else $(CYGPATH_W) '$(srcdir)/copy_file_range.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-copy_file_range.Tpo $(DEPDIR)/libstrace_a-copy_file_range.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='copy_file_range.c' object='libstrace_a-copy_file_range.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-bind.obj `if test -f 'bind.c'; then $(CYGPATH_W) 'bind.c'; else $(CYGPATH_W) '$(srcdir)/bind.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-copy_file_range.obj `if test -f 'copy_file_range.c'; then $(CYGPATH_W) 'copy_file_range.c'; else $(CYGPATH_W) '$(srcdir)/copy_file_range.c'; fi`
 
-strace-bjm.o: bjm.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-bjm.o -MD -MP -MF $(DEPDIR)/strace-bjm.Tpo -c -o strace-bjm.o `test -f 'bjm.c' || echo '$(srcdir)/'`bjm.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-bjm.Tpo $(DEPDIR)/strace-bjm.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='bjm.c' object='strace-bjm.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-count.o: count.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-count.o -MD -MP -MF $(DEPDIR)/libstrace_a-count.Tpo -c -o libstrace_a-count.o `test -f 'count.c' || echo '$(srcdir)/'`count.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-count.Tpo $(DEPDIR)/libstrace_a-count.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='count.c' object='libstrace_a-count.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-bjm.o `test -f 'bjm.c' || echo '$(srcdir)/'`bjm.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-count.o `test -f 'count.c' || echo '$(srcdir)/'`count.c
 
-strace-bjm.obj: bjm.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-bjm.obj -MD -MP -MF $(DEPDIR)/strace-bjm.Tpo -c -o strace-bjm.obj `if test -f 'bjm.c'; then $(CYGPATH_W) 'bjm.c'; else $(CYGPATH_W) '$(srcdir)/bjm.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-bjm.Tpo $(DEPDIR)/strace-bjm.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='bjm.c' object='strace-bjm.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-count.obj: count.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-count.obj -MD -MP -MF $(DEPDIR)/libstrace_a-count.Tpo -c -o libstrace_a-count.obj `if test -f 'count.c'; then $(CYGPATH_W) 'count.c'; else $(CYGPATH_W) '$(srcdir)/count.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-count.Tpo $(DEPDIR)/libstrace_a-count.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='count.c' object='libstrace_a-count.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-bjm.obj `if test -f 'bjm.c'; then $(CYGPATH_W) 'bjm.c'; else $(CYGPATH_W) '$(srcdir)/bjm.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-count.obj `if test -f 'count.c'; then $(CYGPATH_W) 'count.c'; else $(CYGPATH_W) '$(srcdir)/count.c'; fi`
 
-strace-block.o: block.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-block.o -MD -MP -MF $(DEPDIR)/strace-block.Tpo -c -o strace-block.o `test -f 'block.c' || echo '$(srcdir)/'`block.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-block.Tpo $(DEPDIR)/strace-block.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='block.c' object='strace-block.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-delay.o: delay.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-delay.o -MD -MP -MF $(DEPDIR)/libstrace_a-delay.Tpo -c -o libstrace_a-delay.o `test -f 'delay.c' || echo '$(srcdir)/'`delay.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-delay.Tpo $(DEPDIR)/libstrace_a-delay.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='delay.c' object='libstrace_a-delay.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-block.o `test -f 'block.c' || echo '$(srcdir)/'`block.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-delay.o `test -f 'delay.c' || echo '$(srcdir)/'`delay.c
 
-strace-block.obj: block.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-block.obj -MD -MP -MF $(DEPDIR)/strace-block.Tpo -c -o strace-block.obj `if test -f 'block.c'; then $(CYGPATH_W) 'block.c'; else $(CYGPATH_W) '$(srcdir)/block.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-block.Tpo $(DEPDIR)/strace-block.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='block.c' object='strace-block.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-delay.obj: delay.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-delay.obj -MD -MP -MF $(DEPDIR)/libstrace_a-delay.Tpo -c -o libstrace_a-delay.obj `if test -f 'delay.c'; then $(CYGPATH_W) 'delay.c'; else $(CYGPATH_W) '$(srcdir)/delay.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-delay.Tpo $(DEPDIR)/libstrace_a-delay.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='delay.c' object='libstrace_a-delay.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-block.obj `if test -f 'block.c'; then $(CYGPATH_W) 'block.c'; else $(CYGPATH_W) '$(srcdir)/block.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-delay.obj `if test -f 'delay.c'; then $(CYGPATH_W) 'delay.c'; else $(CYGPATH_W) '$(srcdir)/delay.c'; fi`
 
-strace-bpf.o: bpf.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-bpf.o -MD -MP -MF $(DEPDIR)/strace-bpf.Tpo -c -o strace-bpf.o `test -f 'bpf.c' || echo '$(srcdir)/'`bpf.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-bpf.Tpo $(DEPDIR)/strace-bpf.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='bpf.c' object='strace-bpf.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-desc.o: desc.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-desc.o -MD -MP -MF $(DEPDIR)/libstrace_a-desc.Tpo -c -o libstrace_a-desc.o `test -f 'desc.c' || echo '$(srcdir)/'`desc.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-desc.Tpo $(DEPDIR)/libstrace_a-desc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='desc.c' object='libstrace_a-desc.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-bpf.o `test -f 'bpf.c' || echo '$(srcdir)/'`bpf.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-desc.o `test -f 'desc.c' || echo '$(srcdir)/'`desc.c
 
-strace-bpf.obj: bpf.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-bpf.obj -MD -MP -MF $(DEPDIR)/strace-bpf.Tpo -c -o strace-bpf.obj `if test -f 'bpf.c'; then $(CYGPATH_W) 'bpf.c'; else $(CYGPATH_W) '$(srcdir)/bpf.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-bpf.Tpo $(DEPDIR)/strace-bpf.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='bpf.c' object='strace-bpf.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-desc.obj: desc.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-desc.obj -MD -MP -MF $(DEPDIR)/libstrace_a-desc.Tpo -c -o libstrace_a-desc.obj `if test -f 'desc.c'; then $(CYGPATH_W) 'desc.c'; else $(CYGPATH_W) '$(srcdir)/desc.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-desc.Tpo $(DEPDIR)/libstrace_a-desc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='desc.c' object='libstrace_a-desc.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-bpf.obj `if test -f 'bpf.c'; then $(CYGPATH_W) 'bpf.c'; else $(CYGPATH_W) '$(srcdir)/bpf.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-desc.obj `if test -f 'desc.c'; then $(CYGPATH_W) 'desc.c'; else $(CYGPATH_W) '$(srcdir)/desc.c'; fi`
 
-strace-bpf_filter.o: bpf_filter.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-bpf_filter.o -MD -MP -MF $(DEPDIR)/strace-bpf_filter.Tpo -c -o strace-bpf_filter.o `test -f 'bpf_filter.c' || echo '$(srcdir)/'`bpf_filter.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-bpf_filter.Tpo $(DEPDIR)/strace-bpf_filter.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='bpf_filter.c' object='strace-bpf_filter.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-dirent.o: dirent.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-dirent.o -MD -MP -MF $(DEPDIR)/libstrace_a-dirent.Tpo -c -o libstrace_a-dirent.o `test -f 'dirent.c' || echo '$(srcdir)/'`dirent.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-dirent.Tpo $(DEPDIR)/libstrace_a-dirent.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='dirent.c' object='libstrace_a-dirent.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-bpf_filter.o `test -f 'bpf_filter.c' || echo '$(srcdir)/'`bpf_filter.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-dirent.o `test -f 'dirent.c' || echo '$(srcdir)/'`dirent.c
 
-strace-bpf_filter.obj: bpf_filter.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-bpf_filter.obj -MD -MP -MF $(DEPDIR)/strace-bpf_filter.Tpo -c -o strace-bpf_filter.obj `if test -f 'bpf_filter.c'; then $(CYGPATH_W) 'bpf_filter.c'; else $(CYGPATH_W) '$(srcdir)/bpf_filter.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-bpf_filter.Tpo $(DEPDIR)/strace-bpf_filter.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='bpf_filter.c' object='strace-bpf_filter.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-dirent.obj: dirent.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-dirent.obj -MD -MP -MF $(DEPDIR)/libstrace_a-dirent.Tpo -c -o libstrace_a-dirent.obj `if test -f 'dirent.c'; then $(CYGPATH_W) 'dirent.c'; else $(CYGPATH_W) '$(srcdir)/dirent.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-dirent.Tpo $(DEPDIR)/libstrace_a-dirent.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='dirent.c' object='libstrace_a-dirent.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-bpf_filter.obj `if test -f 'bpf_filter.c'; then $(CYGPATH_W) 'bpf_filter.c'; else $(CYGPATH_W) '$(srcdir)/bpf_filter.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-dirent.obj `if test -f 'dirent.c'; then $(CYGPATH_W) 'dirent.c'; else $(CYGPATH_W) '$(srcdir)/dirent.c'; fi`
 
-strace-bpf_seccomp_filter.o: bpf_seccomp_filter.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-bpf_seccomp_filter.o -MD -MP -MF $(DEPDIR)/strace-bpf_seccomp_filter.Tpo -c -o strace-bpf_seccomp_filter.o `test -f 'bpf_seccomp_filter.c' || echo '$(srcdir)/'`bpf_seccomp_filter.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-bpf_seccomp_filter.Tpo $(DEPDIR)/strace-bpf_seccomp_filter.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='bpf_seccomp_filter.c' object='strace-bpf_seccomp_filter.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-dirent64.o: dirent64.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-dirent64.o -MD -MP -MF $(DEPDIR)/libstrace_a-dirent64.Tpo -c -o libstrace_a-dirent64.o `test -f 'dirent64.c' || echo '$(srcdir)/'`dirent64.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-dirent64.Tpo $(DEPDIR)/libstrace_a-dirent64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='dirent64.c' object='libstrace_a-dirent64.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-bpf_seccomp_filter.o `test -f 'bpf_seccomp_filter.c' || echo '$(srcdir)/'`bpf_seccomp_filter.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-dirent64.o `test -f 'dirent64.c' || echo '$(srcdir)/'`dirent64.c
 
-strace-bpf_seccomp_filter.obj: bpf_seccomp_filter.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-bpf_seccomp_filter.obj -MD -MP -MF $(DEPDIR)/strace-bpf_seccomp_filter.Tpo -c -o strace-bpf_seccomp_filter.obj `if test -f 'bpf_seccomp_filter.c'; then $(CYGPATH_W) 'bpf_seccomp_filter.c'; else $(CYGPATH_W) '$(srcdir)/bpf_seccomp_filter.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-bpf_seccomp_filter.Tpo $(DEPDIR)/strace-bpf_seccomp_filter.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='bpf_seccomp_filter.c' object='strace-bpf_seccomp_filter.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-dirent64.obj: dirent64.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-dirent64.obj -MD -MP -MF $(DEPDIR)/libstrace_a-dirent64.Tpo -c -o libstrace_a-dirent64.obj `if test -f 'dirent64.c'; then $(CYGPATH_W) 'dirent64.c'; else $(CYGPATH_W) '$(srcdir)/dirent64.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-dirent64.Tpo $(DEPDIR)/libstrace_a-dirent64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='dirent64.c' object='libstrace_a-dirent64.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-bpf_seccomp_filter.obj `if test -f 'bpf_seccomp_filter.c'; then $(CYGPATH_W) 'bpf_seccomp_filter.c'; else $(CYGPATH_W) '$(srcdir)/bpf_seccomp_filter.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-dirent64.obj `if test -f 'dirent64.c'; then $(CYGPATH_W) 'dirent64.c'; else $(CYGPATH_W) '$(srcdir)/dirent64.c'; fi`
 
-strace-bpf_sock_filter.o: bpf_sock_filter.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-bpf_sock_filter.o -MD -MP -MF $(DEPDIR)/strace-bpf_sock_filter.Tpo -c -o strace-bpf_sock_filter.o `test -f 'bpf_sock_filter.c' || echo '$(srcdir)/'`bpf_sock_filter.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-bpf_sock_filter.Tpo $(DEPDIR)/strace-bpf_sock_filter.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='bpf_sock_filter.c' object='strace-bpf_sock_filter.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-dirent_types.o: dirent_types.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-dirent_types.o -MD -MP -MF $(DEPDIR)/libstrace_a-dirent_types.Tpo -c -o libstrace_a-dirent_types.o `test -f 'dirent_types.c' || echo '$(srcdir)/'`dirent_types.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-dirent_types.Tpo $(DEPDIR)/libstrace_a-dirent_types.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='dirent_types.c' object='libstrace_a-dirent_types.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-bpf_sock_filter.o `test -f 'bpf_sock_filter.c' || echo '$(srcdir)/'`bpf_sock_filter.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-dirent_types.o `test -f 'dirent_types.c' || echo '$(srcdir)/'`dirent_types.c
 
-strace-bpf_sock_filter.obj: bpf_sock_filter.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-bpf_sock_filter.obj -MD -MP -MF $(DEPDIR)/strace-bpf_sock_filter.Tpo -c -o strace-bpf_sock_filter.obj `if test -f 'bpf_sock_filter.c'; then $(CYGPATH_W) 'bpf_sock_filter.c'; else $(CYGPATH_W) '$(srcdir)/bpf_sock_filter.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-bpf_sock_filter.Tpo $(DEPDIR)/strace-bpf_sock_filter.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='bpf_sock_filter.c' object='strace-bpf_sock_filter.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-dirent_types.obj: dirent_types.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-dirent_types.obj -MD -MP -MF $(DEPDIR)/libstrace_a-dirent_types.Tpo -c -o libstrace_a-dirent_types.obj `if test -f 'dirent_types.c'; then $(CYGPATH_W) 'dirent_types.c'; else $(CYGPATH_W) '$(srcdir)/dirent_types.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-dirent_types.Tpo $(DEPDIR)/libstrace_a-dirent_types.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='dirent_types.c' object='libstrace_a-dirent_types.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-bpf_sock_filter.obj `if test -f 'bpf_sock_filter.c'; then $(CYGPATH_W) 'bpf_sock_filter.c'; else $(CYGPATH_W) '$(srcdir)/bpf_sock_filter.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-dirent_types.obj `if test -f 'dirent_types.c'; then $(CYGPATH_W) 'dirent_types.c'; else $(CYGPATH_W) '$(srcdir)/dirent_types.c'; fi`
 
-strace-btrfs.o: btrfs.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-btrfs.o -MD -MP -MF $(DEPDIR)/strace-btrfs.Tpo -c -o strace-btrfs.o `test -f 'btrfs.c' || echo '$(srcdir)/'`btrfs.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-btrfs.Tpo $(DEPDIR)/strace-btrfs.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='btrfs.c' object='strace-btrfs.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-dm.o: dm.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-dm.o -MD -MP -MF $(DEPDIR)/libstrace_a-dm.Tpo -c -o libstrace_a-dm.o `test -f 'dm.c' || echo '$(srcdir)/'`dm.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-dm.Tpo $(DEPDIR)/libstrace_a-dm.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='dm.c' object='libstrace_a-dm.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-btrfs.o `test -f 'btrfs.c' || echo '$(srcdir)/'`btrfs.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-dm.o `test -f 'dm.c' || echo '$(srcdir)/'`dm.c
 
-strace-btrfs.obj: btrfs.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-btrfs.obj -MD -MP -MF $(DEPDIR)/strace-btrfs.Tpo -c -o strace-btrfs.obj `if test -f 'btrfs.c'; then $(CYGPATH_W) 'btrfs.c'; else $(CYGPATH_W) '$(srcdir)/btrfs.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-btrfs.Tpo $(DEPDIR)/strace-btrfs.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='btrfs.c' object='strace-btrfs.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-dm.obj: dm.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-dm.obj -MD -MP -MF $(DEPDIR)/libstrace_a-dm.Tpo -c -o libstrace_a-dm.obj `if test -f 'dm.c'; then $(CYGPATH_W) 'dm.c'; else $(CYGPATH_W) '$(srcdir)/dm.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-dm.Tpo $(DEPDIR)/libstrace_a-dm.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='dm.c' object='libstrace_a-dm.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-btrfs.obj `if test -f 'btrfs.c'; then $(CYGPATH_W) 'btrfs.c'; else $(CYGPATH_W) '$(srcdir)/btrfs.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-dm.obj `if test -f 'dm.c'; then $(CYGPATH_W) 'dm.c'; else $(CYGPATH_W) '$(srcdir)/dm.c'; fi`
 
-strace-cacheflush.o: cacheflush.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-cacheflush.o -MD -MP -MF $(DEPDIR)/strace-cacheflush.Tpo -c -o strace-cacheflush.o `test -f 'cacheflush.c' || echo '$(srcdir)/'`cacheflush.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-cacheflush.Tpo $(DEPDIR)/strace-cacheflush.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cacheflush.c' object='strace-cacheflush.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-dup.o: dup.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-dup.o -MD -MP -MF $(DEPDIR)/libstrace_a-dup.Tpo -c -o libstrace_a-dup.o `test -f 'dup.c' || echo '$(srcdir)/'`dup.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-dup.Tpo $(DEPDIR)/libstrace_a-dup.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='dup.c' object='libstrace_a-dup.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-cacheflush.o `test -f 'cacheflush.c' || echo '$(srcdir)/'`cacheflush.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-dup.o `test -f 'dup.c' || echo '$(srcdir)/'`dup.c
 
-strace-cacheflush.obj: cacheflush.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-cacheflush.obj -MD -MP -MF $(DEPDIR)/strace-cacheflush.Tpo -c -o strace-cacheflush.obj `if test -f 'cacheflush.c'; then $(CYGPATH_W) 'cacheflush.c'; else $(CYGPATH_W) '$(srcdir)/cacheflush.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-cacheflush.Tpo $(DEPDIR)/strace-cacheflush.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cacheflush.c' object='strace-cacheflush.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-dup.obj: dup.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-dup.obj -MD -MP -MF $(DEPDIR)/libstrace_a-dup.Tpo -c -o libstrace_a-dup.obj `if test -f 'dup.c'; then $(CYGPATH_W) 'dup.c'; else $(CYGPATH_W) '$(srcdir)/dup.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-dup.Tpo $(DEPDIR)/libstrace_a-dup.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='dup.c' object='libstrace_a-dup.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-cacheflush.obj `if test -f 'cacheflush.c'; then $(CYGPATH_W) 'cacheflush.c'; else $(CYGPATH_W) '$(srcdir)/cacheflush.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-dup.obj `if test -f 'dup.c'; then $(CYGPATH_W) 'dup.c'; else $(CYGPATH_W) '$(srcdir)/dup.c'; fi`
 
-strace-capability.o: capability.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-capability.o -MD -MP -MF $(DEPDIR)/strace-capability.Tpo -c -o strace-capability.o `test -f 'capability.c' || echo '$(srcdir)/'`capability.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-capability.Tpo $(DEPDIR)/strace-capability.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='capability.c' object='strace-capability.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-dyxlat.o: dyxlat.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-dyxlat.o -MD -MP -MF $(DEPDIR)/libstrace_a-dyxlat.Tpo -c -o libstrace_a-dyxlat.o `test -f 'dyxlat.c' || echo '$(srcdir)/'`dyxlat.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-dyxlat.Tpo $(DEPDIR)/libstrace_a-dyxlat.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='dyxlat.c' object='libstrace_a-dyxlat.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-capability.o `test -f 'capability.c' || echo '$(srcdir)/'`capability.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-dyxlat.o `test -f 'dyxlat.c' || echo '$(srcdir)/'`dyxlat.c
 
-strace-capability.obj: capability.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-capability.obj -MD -MP -MF $(DEPDIR)/strace-capability.Tpo -c -o strace-capability.obj `if test -f 'capability.c'; then $(CYGPATH_W) 'capability.c'; else $(CYGPATH_W) '$(srcdir)/capability.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-capability.Tpo $(DEPDIR)/strace-capability.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='capability.c' object='strace-capability.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-dyxlat.obj: dyxlat.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-dyxlat.obj -MD -MP -MF $(DEPDIR)/libstrace_a-dyxlat.Tpo -c -o libstrace_a-dyxlat.obj `if test -f 'dyxlat.c'; then $(CYGPATH_W) 'dyxlat.c'; else $(CYGPATH_W) '$(srcdir)/dyxlat.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-dyxlat.Tpo $(DEPDIR)/libstrace_a-dyxlat.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='dyxlat.c' object='libstrace_a-dyxlat.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-capability.obj `if test -f 'capability.c'; then $(CYGPATH_W) 'capability.c'; else $(CYGPATH_W) '$(srcdir)/capability.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-dyxlat.obj `if test -f 'dyxlat.c'; then $(CYGPATH_W) 'dyxlat.c'; else $(CYGPATH_W) '$(srcdir)/dyxlat.c'; fi`
 
-strace-chdir.o: chdir.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-chdir.o -MD -MP -MF $(DEPDIR)/strace-chdir.Tpo -c -o strace-chdir.o `test -f 'chdir.c' || echo '$(srcdir)/'`chdir.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-chdir.Tpo $(DEPDIR)/strace-chdir.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='chdir.c' object='strace-chdir.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-epoll.o: epoll.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-epoll.o -MD -MP -MF $(DEPDIR)/libstrace_a-epoll.Tpo -c -o libstrace_a-epoll.o `test -f 'epoll.c' || echo '$(srcdir)/'`epoll.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-epoll.Tpo $(DEPDIR)/libstrace_a-epoll.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='epoll.c' object='libstrace_a-epoll.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-chdir.o `test -f 'chdir.c' || echo '$(srcdir)/'`chdir.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-epoll.o `test -f 'epoll.c' || echo '$(srcdir)/'`epoll.c
 
-strace-chdir.obj: chdir.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-chdir.obj -MD -MP -MF $(DEPDIR)/strace-chdir.Tpo -c -o strace-chdir.obj `if test -f 'chdir.c'; then $(CYGPATH_W) 'chdir.c'; else $(CYGPATH_W) '$(srcdir)/chdir.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-chdir.Tpo $(DEPDIR)/strace-chdir.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='chdir.c' object='strace-chdir.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-epoll.obj: epoll.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-epoll.obj -MD -MP -MF $(DEPDIR)/libstrace_a-epoll.Tpo -c -o libstrace_a-epoll.obj `if test -f 'epoll.c'; then $(CYGPATH_W) 'epoll.c'; else $(CYGPATH_W) '$(srcdir)/epoll.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-epoll.Tpo $(DEPDIR)/libstrace_a-epoll.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='epoll.c' object='libstrace_a-epoll.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-chdir.obj `if test -f 'chdir.c'; then $(CYGPATH_W) 'chdir.c'; else $(CYGPATH_W) '$(srcdir)/chdir.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-epoll.obj `if test -f 'epoll.c'; then $(CYGPATH_W) 'epoll.c'; else $(CYGPATH_W) '$(srcdir)/epoll.c'; fi`
 
-strace-chmod.o: chmod.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-chmod.o -MD -MP -MF $(DEPDIR)/strace-chmod.Tpo -c -o strace-chmod.o `test -f 'chmod.c' || echo '$(srcdir)/'`chmod.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-chmod.Tpo $(DEPDIR)/strace-chmod.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='chmod.c' object='strace-chmod.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-error_prints.o: error_prints.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-error_prints.o -MD -MP -MF $(DEPDIR)/libstrace_a-error_prints.Tpo -c -o libstrace_a-error_prints.o `test -f 'error_prints.c' || echo '$(srcdir)/'`error_prints.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-error_prints.Tpo $(DEPDIR)/libstrace_a-error_prints.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='error_prints.c' object='libstrace_a-error_prints.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-chmod.o `test -f 'chmod.c' || echo '$(srcdir)/'`chmod.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-error_prints.o `test -f 'error_prints.c' || echo '$(srcdir)/'`error_prints.c
 
-strace-chmod.obj: chmod.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-chmod.obj -MD -MP -MF $(DEPDIR)/strace-chmod.Tpo -c -o strace-chmod.obj `if test -f 'chmod.c'; then $(CYGPATH_W) 'chmod.c'; else $(CYGPATH_W) '$(srcdir)/chmod.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-chmod.Tpo $(DEPDIR)/strace-chmod.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='chmod.c' object='strace-chmod.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-error_prints.obj: error_prints.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-error_prints.obj -MD -MP -MF $(DEPDIR)/libstrace_a-error_prints.Tpo -c -o libstrace_a-error_prints.obj `if test -f 'error_prints.c'; then $(CYGPATH_W) 'error_prints.c'; else $(CYGPATH_W) '$(srcdir)/error_prints.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-error_prints.Tpo $(DEPDIR)/libstrace_a-error_prints.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='error_prints.c' object='libstrace_a-error_prints.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-chmod.obj `if test -f 'chmod.c'; then $(CYGPATH_W) 'chmod.c'; else $(CYGPATH_W) '$(srcdir)/chmod.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-error_prints.obj `if test -f 'error_prints.c'; then $(CYGPATH_W) 'error_prints.c'; else $(CYGPATH_W) '$(srcdir)/error_prints.c'; fi`
 
-strace-clone.o: clone.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-clone.o -MD -MP -MF $(DEPDIR)/strace-clone.Tpo -c -o strace-clone.o `test -f 'clone.c' || echo '$(srcdir)/'`clone.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-clone.Tpo $(DEPDIR)/strace-clone.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='clone.c' object='strace-clone.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-evdev.o: evdev.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-evdev.o -MD -MP -MF $(DEPDIR)/libstrace_a-evdev.Tpo -c -o libstrace_a-evdev.o `test -f 'evdev.c' || echo '$(srcdir)/'`evdev.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-evdev.Tpo $(DEPDIR)/libstrace_a-evdev.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='evdev.c' object='libstrace_a-evdev.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-clone.o `test -f 'clone.c' || echo '$(srcdir)/'`clone.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-evdev.o `test -f 'evdev.c' || echo '$(srcdir)/'`evdev.c
 
-strace-clone.obj: clone.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-clone.obj -MD -MP -MF $(DEPDIR)/strace-clone.Tpo -c -o strace-clone.obj `if test -f 'clone.c'; then $(CYGPATH_W) 'clone.c'; else $(CYGPATH_W) '$(srcdir)/clone.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-clone.Tpo $(DEPDIR)/strace-clone.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='clone.c' object='strace-clone.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-evdev.obj: evdev.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-evdev.obj -MD -MP -MF $(DEPDIR)/libstrace_a-evdev.Tpo -c -o libstrace_a-evdev.obj `if test -f 'evdev.c'; then $(CYGPATH_W) 'evdev.c'; else $(CYGPATH_W) '$(srcdir)/evdev.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-evdev.Tpo $(DEPDIR)/libstrace_a-evdev.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='evdev.c' object='libstrace_a-evdev.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-clone.obj `if test -f 'clone.c'; then $(CYGPATH_W) 'clone.c'; else $(CYGPATH_W) '$(srcdir)/clone.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-evdev.obj `if test -f 'evdev.c'; then $(CYGPATH_W) 'evdev.c'; else $(CYGPATH_W) '$(srcdir)/evdev.c'; fi`
 
-strace-copy_file_range.o: copy_file_range.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-copy_file_range.o -MD -MP -MF $(DEPDIR)/strace-copy_file_range.Tpo -c -o strace-copy_file_range.o `test -f 'copy_file_range.c' || echo '$(srcdir)/'`copy_file_range.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-copy_file_range.Tpo $(DEPDIR)/strace-copy_file_range.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='copy_file_range.c' object='strace-copy_file_range.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-evdev_mpers.o: evdev_mpers.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-evdev_mpers.o -MD -MP -MF $(DEPDIR)/libstrace_a-evdev_mpers.Tpo -c -o libstrace_a-evdev_mpers.o `test -f 'evdev_mpers.c' || echo '$(srcdir)/'`evdev_mpers.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-evdev_mpers.Tpo $(DEPDIR)/libstrace_a-evdev_mpers.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='evdev_mpers.c' object='libstrace_a-evdev_mpers.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-copy_file_range.o `test -f 'copy_file_range.c' || echo '$(srcdir)/'`copy_file_range.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-evdev_mpers.o `test -f 'evdev_mpers.c' || echo '$(srcdir)/'`evdev_mpers.c
 
-strace-copy_file_range.obj: copy_file_range.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-copy_file_range.obj -MD -MP -MF $(DEPDIR)/strace-copy_file_range.Tpo -c -o strace-copy_file_range.obj `if test -f 'copy_file_range.c'; then $(CYGPATH_W) 'copy_file_range.c'; else $(CYGPATH_W) '$(srcdir)/copy_file_range.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-copy_file_range.Tpo $(DEPDIR)/strace-copy_file_range.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='copy_file_range.c' object='strace-copy_file_range.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-evdev_mpers.obj: evdev_mpers.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-evdev_mpers.obj -MD -MP -MF $(DEPDIR)/libstrace_a-evdev_mpers.Tpo -c -o libstrace_a-evdev_mpers.obj `if test -f 'evdev_mpers.c'; then $(CYGPATH_W) 'evdev_mpers.c'; else $(CYGPATH_W) '$(srcdir)/evdev_mpers.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-evdev_mpers.Tpo $(DEPDIR)/libstrace_a-evdev_mpers.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='evdev_mpers.c' object='libstrace_a-evdev_mpers.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-copy_file_range.obj `if test -f 'copy_file_range.c'; then $(CYGPATH_W) 'copy_file_range.c'; else $(CYGPATH_W) '$(srcdir)/copy_file_range.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-evdev_mpers.obj `if test -f 'evdev_mpers.c'; then $(CYGPATH_W) 'evdev_mpers.c'; else $(CYGPATH_W) '$(srcdir)/evdev_mpers.c'; fi`
 
-strace-count.o: count.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-count.o -MD -MP -MF $(DEPDIR)/strace-count.Tpo -c -o strace-count.o `test -f 'count.c' || echo '$(srcdir)/'`count.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-count.Tpo $(DEPDIR)/strace-count.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='count.c' object='strace-count.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-eventfd.o: eventfd.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-eventfd.o -MD -MP -MF $(DEPDIR)/libstrace_a-eventfd.Tpo -c -o libstrace_a-eventfd.o `test -f 'eventfd.c' || echo '$(srcdir)/'`eventfd.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-eventfd.Tpo $(DEPDIR)/libstrace_a-eventfd.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='eventfd.c' object='libstrace_a-eventfd.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-count.o `test -f 'count.c' || echo '$(srcdir)/'`count.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-eventfd.o `test -f 'eventfd.c' || echo '$(srcdir)/'`eventfd.c
 
-strace-count.obj: count.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-count.obj -MD -MP -MF $(DEPDIR)/strace-count.Tpo -c -o strace-count.obj `if test -f 'count.c'; then $(CYGPATH_W) 'count.c'; else $(CYGPATH_W) '$(srcdir)/count.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-count.Tpo $(DEPDIR)/strace-count.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='count.c' object='strace-count.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-eventfd.obj: eventfd.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-eventfd.obj -MD -MP -MF $(DEPDIR)/libstrace_a-eventfd.Tpo -c -o libstrace_a-eventfd.obj `if test -f 'eventfd.c'; then $(CYGPATH_W) 'eventfd.c'; else $(CYGPATH_W) '$(srcdir)/eventfd.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-eventfd.Tpo $(DEPDIR)/libstrace_a-eventfd.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='eventfd.c' object='libstrace_a-eventfd.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-count.obj `if test -f 'count.c'; then $(CYGPATH_W) 'count.c'; else $(CYGPATH_W) '$(srcdir)/count.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-eventfd.obj `if test -f 'eventfd.c'; then $(CYGPATH_W) 'eventfd.c'; else $(CYGPATH_W) '$(srcdir)/eventfd.c'; fi`
 
-strace-delay.o: delay.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-delay.o -MD -MP -MF $(DEPDIR)/strace-delay.Tpo -c -o strace-delay.o `test -f 'delay.c' || echo '$(srcdir)/'`delay.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-delay.Tpo $(DEPDIR)/strace-delay.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='delay.c' object='strace-delay.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-execve.o: execve.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-execve.o -MD -MP -MF $(DEPDIR)/libstrace_a-execve.Tpo -c -o libstrace_a-execve.o `test -f 'execve.c' || echo '$(srcdir)/'`execve.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-execve.Tpo $(DEPDIR)/libstrace_a-execve.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='execve.c' object='libstrace_a-execve.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-delay.o `test -f 'delay.c' || echo '$(srcdir)/'`delay.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-execve.o `test -f 'execve.c' || echo '$(srcdir)/'`execve.c
 
-strace-delay.obj: delay.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-delay.obj -MD -MP -MF $(DEPDIR)/strace-delay.Tpo -c -o strace-delay.obj `if test -f 'delay.c'; then $(CYGPATH_W) 'delay.c'; else $(CYGPATH_W) '$(srcdir)/delay.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-delay.Tpo $(DEPDIR)/strace-delay.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='delay.c' object='strace-delay.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-execve.obj: execve.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-execve.obj -MD -MP -MF $(DEPDIR)/libstrace_a-execve.Tpo -c -o libstrace_a-execve.obj `if test -f 'execve.c'; then $(CYGPATH_W) 'execve.c'; else $(CYGPATH_W) '$(srcdir)/execve.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-execve.Tpo $(DEPDIR)/libstrace_a-execve.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='execve.c' object='libstrace_a-execve.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-delay.obj `if test -f 'delay.c'; then $(CYGPATH_W) 'delay.c'; else $(CYGPATH_W) '$(srcdir)/delay.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-execve.obj `if test -f 'execve.c'; then $(CYGPATH_W) 'execve.c'; else $(CYGPATH_W) '$(srcdir)/execve.c'; fi`
 
-strace-desc.o: desc.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-desc.o -MD -MP -MF $(DEPDIR)/strace-desc.Tpo -c -o strace-desc.o `test -f 'desc.c' || echo '$(srcdir)/'`desc.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-desc.Tpo $(DEPDIR)/strace-desc.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='desc.c' object='strace-desc.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-fadvise.o: fadvise.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fadvise.o -MD -MP -MF $(DEPDIR)/libstrace_a-fadvise.Tpo -c -o libstrace_a-fadvise.o `test -f 'fadvise.c' || echo '$(srcdir)/'`fadvise.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fadvise.Tpo $(DEPDIR)/libstrace_a-fadvise.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fadvise.c' object='libstrace_a-fadvise.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-desc.o `test -f 'desc.c' || echo '$(srcdir)/'`desc.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fadvise.o `test -f 'fadvise.c' || echo '$(srcdir)/'`fadvise.c
 
-strace-desc.obj: desc.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-desc.obj -MD -MP -MF $(DEPDIR)/strace-desc.Tpo -c -o strace-desc.obj `if test -f 'desc.c'; then $(CYGPATH_W) 'desc.c'; else $(CYGPATH_W) '$(srcdir)/desc.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-desc.Tpo $(DEPDIR)/strace-desc.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='desc.c' object='strace-desc.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-fadvise.obj: fadvise.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fadvise.obj -MD -MP -MF $(DEPDIR)/libstrace_a-fadvise.Tpo -c -o libstrace_a-fadvise.obj `if test -f 'fadvise.c'; then $(CYGPATH_W) 'fadvise.c'; else $(CYGPATH_W) '$(srcdir)/fadvise.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fadvise.Tpo $(DEPDIR)/libstrace_a-fadvise.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fadvise.c' object='libstrace_a-fadvise.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-desc.obj `if test -f 'desc.c'; then $(CYGPATH_W) 'desc.c'; else $(CYGPATH_W) '$(srcdir)/desc.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fadvise.obj `if test -f 'fadvise.c'; then $(CYGPATH_W) 'fadvise.c'; else $(CYGPATH_W) '$(srcdir)/fadvise.c'; fi`
 
-strace-dirent.o: dirent.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-dirent.o -MD -MP -MF $(DEPDIR)/strace-dirent.Tpo -c -o strace-dirent.o `test -f 'dirent.c' || echo '$(srcdir)/'`dirent.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-dirent.Tpo $(DEPDIR)/strace-dirent.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='dirent.c' object='strace-dirent.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-fallocate.o: fallocate.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fallocate.o -MD -MP -MF $(DEPDIR)/libstrace_a-fallocate.Tpo -c -o libstrace_a-fallocate.o `test -f 'fallocate.c' || echo '$(srcdir)/'`fallocate.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fallocate.Tpo $(DEPDIR)/libstrace_a-fallocate.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fallocate.c' object='libstrace_a-fallocate.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-dirent.o `test -f 'dirent.c' || echo '$(srcdir)/'`dirent.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fallocate.o `test -f 'fallocate.c' || echo '$(srcdir)/'`fallocate.c
 
-strace-dirent.obj: dirent.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-dirent.obj -MD -MP -MF $(DEPDIR)/strace-dirent.Tpo -c -o strace-dirent.obj `if test -f 'dirent.c'; then $(CYGPATH_W) 'dirent.c'; else $(CYGPATH_W) '$(srcdir)/dirent.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-dirent.Tpo $(DEPDIR)/strace-dirent.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='dirent.c' object='strace-dirent.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-fallocate.obj: fallocate.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fallocate.obj -MD -MP -MF $(DEPDIR)/libstrace_a-fallocate.Tpo -c -o libstrace_a-fallocate.obj `if test -f 'fallocate.c'; then $(CYGPATH_W) 'fallocate.c'; else $(CYGPATH_W) '$(srcdir)/fallocate.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fallocate.Tpo $(DEPDIR)/libstrace_a-fallocate.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fallocate.c' object='libstrace_a-fallocate.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-dirent.obj `if test -f 'dirent.c'; then $(CYGPATH_W) 'dirent.c'; else $(CYGPATH_W) '$(srcdir)/dirent.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fallocate.obj `if test -f 'fallocate.c'; then $(CYGPATH_W) 'fallocate.c'; else $(CYGPATH_W) '$(srcdir)/fallocate.c'; fi`
 
-strace-dirent64.o: dirent64.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-dirent64.o -MD -MP -MF $(DEPDIR)/strace-dirent64.Tpo -c -o strace-dirent64.o `test -f 'dirent64.c' || echo '$(srcdir)/'`dirent64.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-dirent64.Tpo $(DEPDIR)/strace-dirent64.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='dirent64.c' object='strace-dirent64.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-fanotify.o: fanotify.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fanotify.o -MD -MP -MF $(DEPDIR)/libstrace_a-fanotify.Tpo -c -o libstrace_a-fanotify.o `test -f 'fanotify.c' || echo '$(srcdir)/'`fanotify.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fanotify.Tpo $(DEPDIR)/libstrace_a-fanotify.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fanotify.c' object='libstrace_a-fanotify.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-dirent64.o `test -f 'dirent64.c' || echo '$(srcdir)/'`dirent64.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fanotify.o `test -f 'fanotify.c' || echo '$(srcdir)/'`fanotify.c
 
-strace-dirent64.obj: dirent64.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-dirent64.obj -MD -MP -MF $(DEPDIR)/strace-dirent64.Tpo -c -o strace-dirent64.obj `if test -f 'dirent64.c'; then $(CYGPATH_W) 'dirent64.c'; else $(CYGPATH_W) '$(srcdir)/dirent64.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-dirent64.Tpo $(DEPDIR)/strace-dirent64.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='dirent64.c' object='strace-dirent64.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-fanotify.obj: fanotify.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fanotify.obj -MD -MP -MF $(DEPDIR)/libstrace_a-fanotify.Tpo -c -o libstrace_a-fanotify.obj `if test -f 'fanotify.c'; then $(CYGPATH_W) 'fanotify.c'; else $(CYGPATH_W) '$(srcdir)/fanotify.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fanotify.Tpo $(DEPDIR)/libstrace_a-fanotify.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fanotify.c' object='libstrace_a-fanotify.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-dirent64.obj `if test -f 'dirent64.c'; then $(CYGPATH_W) 'dirent64.c'; else $(CYGPATH_W) '$(srcdir)/dirent64.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fanotify.obj `if test -f 'fanotify.c'; then $(CYGPATH_W) 'fanotify.c'; else $(CYGPATH_W) '$(srcdir)/fanotify.c'; fi`
 
-strace-dm.o: dm.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-dm.o -MD -MP -MF $(DEPDIR)/strace-dm.Tpo -c -o strace-dm.o `test -f 'dm.c' || echo '$(srcdir)/'`dm.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-dm.Tpo $(DEPDIR)/strace-dm.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='dm.c' object='strace-dm.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-fchownat.o: fchownat.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fchownat.o -MD -MP -MF $(DEPDIR)/libstrace_a-fchownat.Tpo -c -o libstrace_a-fchownat.o `test -f 'fchownat.c' || echo '$(srcdir)/'`fchownat.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fchownat.Tpo $(DEPDIR)/libstrace_a-fchownat.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fchownat.c' object='libstrace_a-fchownat.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-dm.o `test -f 'dm.c' || echo '$(srcdir)/'`dm.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fchownat.o `test -f 'fchownat.c' || echo '$(srcdir)/'`fchownat.c
 
-strace-dm.obj: dm.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-dm.obj -MD -MP -MF $(DEPDIR)/strace-dm.Tpo -c -o strace-dm.obj `if test -f 'dm.c'; then $(CYGPATH_W) 'dm.c'; else $(CYGPATH_W) '$(srcdir)/dm.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-dm.Tpo $(DEPDIR)/strace-dm.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='dm.c' object='strace-dm.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-fchownat.obj: fchownat.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fchownat.obj -MD -MP -MF $(DEPDIR)/libstrace_a-fchownat.Tpo -c -o libstrace_a-fchownat.obj `if test -f 'fchownat.c'; then $(CYGPATH_W) 'fchownat.c'; else $(CYGPATH_W) '$(srcdir)/fchownat.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fchownat.Tpo $(DEPDIR)/libstrace_a-fchownat.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fchownat.c' object='libstrace_a-fchownat.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-dm.obj `if test -f 'dm.c'; then $(CYGPATH_W) 'dm.c'; else $(CYGPATH_W) '$(srcdir)/dm.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fchownat.obj `if test -f 'fchownat.c'; then $(CYGPATH_W) 'fchownat.c'; else $(CYGPATH_W) '$(srcdir)/fchownat.c'; fi`
 
-strace-dyxlat.o: dyxlat.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-dyxlat.o -MD -MP -MF $(DEPDIR)/strace-dyxlat.Tpo -c -o strace-dyxlat.o `test -f 'dyxlat.c' || echo '$(srcdir)/'`dyxlat.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-dyxlat.Tpo $(DEPDIR)/strace-dyxlat.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='dyxlat.c' object='strace-dyxlat.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-fcntl.o: fcntl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fcntl.o -MD -MP -MF $(DEPDIR)/libstrace_a-fcntl.Tpo -c -o libstrace_a-fcntl.o `test -f 'fcntl.c' || echo '$(srcdir)/'`fcntl.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fcntl.Tpo $(DEPDIR)/libstrace_a-fcntl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fcntl.c' object='libstrace_a-fcntl.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-dyxlat.o `test -f 'dyxlat.c' || echo '$(srcdir)/'`dyxlat.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fcntl.o `test -f 'fcntl.c' || echo '$(srcdir)/'`fcntl.c
 
-strace-dyxlat.obj: dyxlat.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-dyxlat.obj -MD -MP -MF $(DEPDIR)/strace-dyxlat.Tpo -c -o strace-dyxlat.obj `if test -f 'dyxlat.c'; then $(CYGPATH_W) 'dyxlat.c'; else $(CYGPATH_W) '$(srcdir)/dyxlat.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-dyxlat.Tpo $(DEPDIR)/strace-dyxlat.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='dyxlat.c' object='strace-dyxlat.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-fcntl.obj: fcntl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fcntl.obj -MD -MP -MF $(DEPDIR)/libstrace_a-fcntl.Tpo -c -o libstrace_a-fcntl.obj `if test -f 'fcntl.c'; then $(CYGPATH_W) 'fcntl.c'; else $(CYGPATH_W) '$(srcdir)/fcntl.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fcntl.Tpo $(DEPDIR)/libstrace_a-fcntl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fcntl.c' object='libstrace_a-fcntl.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-dyxlat.obj `if test -f 'dyxlat.c'; then $(CYGPATH_W) 'dyxlat.c'; else $(CYGPATH_W) '$(srcdir)/dyxlat.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fcntl.obj `if test -f 'fcntl.c'; then $(CYGPATH_W) 'fcntl.c'; else $(CYGPATH_W) '$(srcdir)/fcntl.c'; fi`
 
-strace-epoll.o: epoll.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-epoll.o -MD -MP -MF $(DEPDIR)/strace-epoll.Tpo -c -o strace-epoll.o `test -f 'epoll.c' || echo '$(srcdir)/'`epoll.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-epoll.Tpo $(DEPDIR)/strace-epoll.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='epoll.c' object='strace-epoll.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-fetch_bpf_fprog.o: fetch_bpf_fprog.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fetch_bpf_fprog.o -MD -MP -MF $(DEPDIR)/libstrace_a-fetch_bpf_fprog.Tpo -c -o libstrace_a-fetch_bpf_fprog.o `test -f 'fetch_bpf_fprog.c' || echo '$(srcdir)/'`fetch_bpf_fprog.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fetch_bpf_fprog.Tpo $(DEPDIR)/libstrace_a-fetch_bpf_fprog.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fetch_bpf_fprog.c' object='libstrace_a-fetch_bpf_fprog.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-epoll.o `test -f 'epoll.c' || echo '$(srcdir)/'`epoll.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fetch_bpf_fprog.o `test -f 'fetch_bpf_fprog.c' || echo '$(srcdir)/'`fetch_bpf_fprog.c
 
-strace-epoll.obj: epoll.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-epoll.obj -MD -MP -MF $(DEPDIR)/strace-epoll.Tpo -c -o strace-epoll.obj `if test -f 'epoll.c'; then $(CYGPATH_W) 'epoll.c'; else $(CYGPATH_W) '$(srcdir)/epoll.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-epoll.Tpo $(DEPDIR)/strace-epoll.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='epoll.c' object='strace-epoll.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-fetch_bpf_fprog.obj: fetch_bpf_fprog.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fetch_bpf_fprog.obj -MD -MP -MF $(DEPDIR)/libstrace_a-fetch_bpf_fprog.Tpo -c -o libstrace_a-fetch_bpf_fprog.obj `if test -f 'fetch_bpf_fprog.c'; then $(CYGPATH_W) 'fetch_bpf_fprog.c'; else $(CYGPATH_W) '$(srcdir)/fetch_bpf_fprog.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fetch_bpf_fprog.Tpo $(DEPDIR)/libstrace_a-fetch_bpf_fprog.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fetch_bpf_fprog.c' object='libstrace_a-fetch_bpf_fprog.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-epoll.obj `if test -f 'epoll.c'; then $(CYGPATH_W) 'epoll.c'; else $(CYGPATH_W) '$(srcdir)/epoll.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fetch_bpf_fprog.obj `if test -f 'fetch_bpf_fprog.c'; then $(CYGPATH_W) 'fetch_bpf_fprog.c'; else $(CYGPATH_W) '$(srcdir)/fetch_bpf_fprog.c'; fi`
 
-strace-error_prints.o: error_prints.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-error_prints.o -MD -MP -MF $(DEPDIR)/strace-error_prints.Tpo -c -o strace-error_prints.o `test -f 'error_prints.c' || echo '$(srcdir)/'`error_prints.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-error_prints.Tpo $(DEPDIR)/strace-error_prints.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='error_prints.c' object='strace-error_prints.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-fetch_indirect_syscall_args.o: fetch_indirect_syscall_args.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fetch_indirect_syscall_args.o -MD -MP -MF $(DEPDIR)/libstrace_a-fetch_indirect_syscall_args.Tpo -c -o libstrace_a-fetch_indirect_syscall_args.o `test -f 'fetch_indirect_syscall_args.c' || echo '$(srcdir)/'`fetch_indirect_syscall_args.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fetch_indirect_syscall_args.Tpo $(DEPDIR)/libstrace_a-fetch_indirect_syscall_args.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fetch_indirect_syscall_args.c' object='libstrace_a-fetch_indirect_syscall_args.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-error_prints.o `test -f 'error_prints.c' || echo '$(srcdir)/'`error_prints.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fetch_indirect_syscall_args.o `test -f 'fetch_indirect_syscall_args.c' || echo '$(srcdir)/'`fetch_indirect_syscall_args.c
 
-strace-error_prints.obj: error_prints.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-error_prints.obj -MD -MP -MF $(DEPDIR)/strace-error_prints.Tpo -c -o strace-error_prints.obj `if test -f 'error_prints.c'; then $(CYGPATH_W) 'error_prints.c'; else $(CYGPATH_W) '$(srcdir)/error_prints.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-error_prints.Tpo $(DEPDIR)/strace-error_prints.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='error_prints.c' object='strace-error_prints.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-fetch_indirect_syscall_args.obj: fetch_indirect_syscall_args.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fetch_indirect_syscall_args.obj -MD -MP -MF $(DEPDIR)/libstrace_a-fetch_indirect_syscall_args.Tpo -c -o libstrace_a-fetch_indirect_syscall_args.obj `if test -f 'fetch_indirect_syscall_args.c'; then $(CYGPATH_W) 'fetch_indirect_syscall_args.c'; else $(CYGPATH_W) '$(srcdir)/fetch_indirect_syscall_args.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fetch_indirect_syscall_args.Tpo $(DEPDIR)/libstrace_a-fetch_indirect_syscall_args.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fetch_indirect_syscall_args.c' object='libstrace_a-fetch_indirect_syscall_args.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-error_prints.obj `if test -f 'error_prints.c'; then $(CYGPATH_W) 'error_prints.c'; else $(CYGPATH_W) '$(srcdir)/error_prints.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fetch_indirect_syscall_args.obj `if test -f 'fetch_indirect_syscall_args.c'; then $(CYGPATH_W) 'fetch_indirect_syscall_args.c'; else $(CYGPATH_W) '$(srcdir)/fetch_indirect_syscall_args.c'; fi`
 
-strace-evdev.o: evdev.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-evdev.o -MD -MP -MF $(DEPDIR)/strace-evdev.Tpo -c -o strace-evdev.o `test -f 'evdev.c' || echo '$(srcdir)/'`evdev.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-evdev.Tpo $(DEPDIR)/strace-evdev.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='evdev.c' object='strace-evdev.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-fetch_struct_flock.o: fetch_struct_flock.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fetch_struct_flock.o -MD -MP -MF $(DEPDIR)/libstrace_a-fetch_struct_flock.Tpo -c -o libstrace_a-fetch_struct_flock.o `test -f 'fetch_struct_flock.c' || echo '$(srcdir)/'`fetch_struct_flock.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fetch_struct_flock.Tpo $(DEPDIR)/libstrace_a-fetch_struct_flock.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fetch_struct_flock.c' object='libstrace_a-fetch_struct_flock.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-evdev.o `test -f 'evdev.c' || echo '$(srcdir)/'`evdev.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fetch_struct_flock.o `test -f 'fetch_struct_flock.c' || echo '$(srcdir)/'`fetch_struct_flock.c
 
-strace-evdev.obj: evdev.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-evdev.obj -MD -MP -MF $(DEPDIR)/strace-evdev.Tpo -c -o strace-evdev.obj `if test -f 'evdev.c'; then $(CYGPATH_W) 'evdev.c'; else $(CYGPATH_W) '$(srcdir)/evdev.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-evdev.Tpo $(DEPDIR)/strace-evdev.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='evdev.c' object='strace-evdev.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-fetch_struct_flock.obj: fetch_struct_flock.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fetch_struct_flock.obj -MD -MP -MF $(DEPDIR)/libstrace_a-fetch_struct_flock.Tpo -c -o libstrace_a-fetch_struct_flock.obj `if test -f 'fetch_struct_flock.c'; then $(CYGPATH_W) 'fetch_struct_flock.c'; else $(CYGPATH_W) '$(srcdir)/fetch_struct_flock.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fetch_struct_flock.Tpo $(DEPDIR)/libstrace_a-fetch_struct_flock.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fetch_struct_flock.c' object='libstrace_a-fetch_struct_flock.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-evdev.obj `if test -f 'evdev.c'; then $(CYGPATH_W) 'evdev.c'; else $(CYGPATH_W) '$(srcdir)/evdev.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fetch_struct_flock.obj `if test -f 'fetch_struct_flock.c'; then $(CYGPATH_W) 'fetch_struct_flock.c'; else $(CYGPATH_W) '$(srcdir)/fetch_struct_flock.c'; fi`
 
-strace-evdev_mpers.o: evdev_mpers.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-evdev_mpers.o -MD -MP -MF $(DEPDIR)/strace-evdev_mpers.Tpo -c -o strace-evdev_mpers.o `test -f 'evdev_mpers.c' || echo '$(srcdir)/'`evdev_mpers.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-evdev_mpers.Tpo $(DEPDIR)/strace-evdev_mpers.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='evdev_mpers.c' object='strace-evdev_mpers.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-fetch_struct_keyctl_kdf_params.o: fetch_struct_keyctl_kdf_params.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fetch_struct_keyctl_kdf_params.o -MD -MP -MF $(DEPDIR)/libstrace_a-fetch_struct_keyctl_kdf_params.Tpo -c -o libstrace_a-fetch_struct_keyctl_kdf_params.o `test -f 'fetch_struct_keyctl_kdf_params.c' || echo '$(srcdir)/'`fetch_struct_keyctl_kdf_params.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fetch_struct_keyctl_kdf_params.Tpo $(DEPDIR)/libstrace_a-fetch_struct_keyctl_kdf_params.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fetch_struct_keyctl_kdf_params.c' object='libstrace_a-fetch_struct_keyctl_kdf_params.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-evdev_mpers.o `test -f 'evdev_mpers.c' || echo '$(srcdir)/'`evdev_mpers.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fetch_struct_keyctl_kdf_params.o `test -f 'fetch_struct_keyctl_kdf_params.c' || echo '$(srcdir)/'`fetch_struct_keyctl_kdf_params.c
 
-strace-evdev_mpers.obj: evdev_mpers.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-evdev_mpers.obj -MD -MP -MF $(DEPDIR)/strace-evdev_mpers.Tpo -c -o strace-evdev_mpers.obj `if test -f 'evdev_mpers.c'; then $(CYGPATH_W) 'evdev_mpers.c'; else $(CYGPATH_W) '$(srcdir)/evdev_mpers.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-evdev_mpers.Tpo $(DEPDIR)/strace-evdev_mpers.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='evdev_mpers.c' object='strace-evdev_mpers.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-fetch_struct_keyctl_kdf_params.obj: fetch_struct_keyctl_kdf_params.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fetch_struct_keyctl_kdf_params.obj -MD -MP -MF $(DEPDIR)/libstrace_a-fetch_struct_keyctl_kdf_params.Tpo -c -o libstrace_a-fetch_struct_keyctl_kdf_params.obj `if test -f 'fetch_struct_keyctl_kdf_params.c'; then $(CYGPATH_W) 'fetch_struct_keyctl_kdf_params.c'; else $(CYGPATH_W) '$(srcdir)/fetch_struct_keyctl_kdf_params.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fetch_struct_keyctl_kdf_params.Tpo $(DEPDIR)/libstrace_a-fetch_struct_keyctl_kdf_params.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fetch_struct_keyctl_kdf_params.c' object='libstrace_a-fetch_struct_keyctl_kdf_params.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-evdev_mpers.obj `if test -f 'evdev_mpers.c'; then $(CYGPATH_W) 'evdev_mpers.c'; else $(CYGPATH_W) '$(srcdir)/evdev_mpers.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fetch_struct_keyctl_kdf_params.obj `if test -f 'fetch_struct_keyctl_kdf_params.c'; then $(CYGPATH_W) 'fetch_struct_keyctl_kdf_params.c'; else $(CYGPATH_W) '$(srcdir)/fetch_struct_keyctl_kdf_params.c'; fi`
 
-strace-eventfd.o: eventfd.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-eventfd.o -MD -MP -MF $(DEPDIR)/strace-eventfd.Tpo -c -o strace-eventfd.o `test -f 'eventfd.c' || echo '$(srcdir)/'`eventfd.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-eventfd.Tpo $(DEPDIR)/strace-eventfd.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='eventfd.c' object='strace-eventfd.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-fetch_struct_mmsghdr.o: fetch_struct_mmsghdr.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fetch_struct_mmsghdr.o -MD -MP -MF $(DEPDIR)/libstrace_a-fetch_struct_mmsghdr.Tpo -c -o libstrace_a-fetch_struct_mmsghdr.o `test -f 'fetch_struct_mmsghdr.c' || echo '$(srcdir)/'`fetch_struct_mmsghdr.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fetch_struct_mmsghdr.Tpo $(DEPDIR)/libstrace_a-fetch_struct_mmsghdr.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fetch_struct_mmsghdr.c' object='libstrace_a-fetch_struct_mmsghdr.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-eventfd.o `test -f 'eventfd.c' || echo '$(srcdir)/'`eventfd.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fetch_struct_mmsghdr.o `test -f 'fetch_struct_mmsghdr.c' || echo '$(srcdir)/'`fetch_struct_mmsghdr.c
 
-strace-eventfd.obj: eventfd.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-eventfd.obj -MD -MP -MF $(DEPDIR)/strace-eventfd.Tpo -c -o strace-eventfd.obj `if test -f 'eventfd.c'; then $(CYGPATH_W) 'eventfd.c'; else $(CYGPATH_W) '$(srcdir)/eventfd.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-eventfd.Tpo $(DEPDIR)/strace-eventfd.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='eventfd.c' object='strace-eventfd.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-fetch_struct_mmsghdr.obj: fetch_struct_mmsghdr.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fetch_struct_mmsghdr.obj -MD -MP -MF $(DEPDIR)/libstrace_a-fetch_struct_mmsghdr.Tpo -c -o libstrace_a-fetch_struct_mmsghdr.obj `if test -f 'fetch_struct_mmsghdr.c'; then $(CYGPATH_W) 'fetch_struct_mmsghdr.c'; else $(CYGPATH_W) '$(srcdir)/fetch_struct_mmsghdr.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fetch_struct_mmsghdr.Tpo $(DEPDIR)/libstrace_a-fetch_struct_mmsghdr.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fetch_struct_mmsghdr.c' object='libstrace_a-fetch_struct_mmsghdr.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-eventfd.obj `if test -f 'eventfd.c'; then $(CYGPATH_W) 'eventfd.c'; else $(CYGPATH_W) '$(srcdir)/eventfd.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fetch_struct_mmsghdr.obj `if test -f 'fetch_struct_mmsghdr.c'; then $(CYGPATH_W) 'fetch_struct_mmsghdr.c'; else $(CYGPATH_W) '$(srcdir)/fetch_struct_mmsghdr.c'; fi`
 
-strace-execve.o: execve.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-execve.o -MD -MP -MF $(DEPDIR)/strace-execve.Tpo -c -o strace-execve.o `test -f 'execve.c' || echo '$(srcdir)/'`execve.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-execve.Tpo $(DEPDIR)/strace-execve.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='execve.c' object='strace-execve.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-fetch_struct_msghdr.o: fetch_struct_msghdr.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fetch_struct_msghdr.o -MD -MP -MF $(DEPDIR)/libstrace_a-fetch_struct_msghdr.Tpo -c -o libstrace_a-fetch_struct_msghdr.o `test -f 'fetch_struct_msghdr.c' || echo '$(srcdir)/'`fetch_struct_msghdr.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fetch_struct_msghdr.Tpo $(DEPDIR)/libstrace_a-fetch_struct_msghdr.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fetch_struct_msghdr.c' object='libstrace_a-fetch_struct_msghdr.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-execve.o `test -f 'execve.c' || echo '$(srcdir)/'`execve.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fetch_struct_msghdr.o `test -f 'fetch_struct_msghdr.c' || echo '$(srcdir)/'`fetch_struct_msghdr.c
 
-strace-execve.obj: execve.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-execve.obj -MD -MP -MF $(DEPDIR)/strace-execve.Tpo -c -o strace-execve.obj `if test -f 'execve.c'; then $(CYGPATH_W) 'execve.c'; else $(CYGPATH_W) '$(srcdir)/execve.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-execve.Tpo $(DEPDIR)/strace-execve.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='execve.c' object='strace-execve.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-fetch_struct_msghdr.obj: fetch_struct_msghdr.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fetch_struct_msghdr.obj -MD -MP -MF $(DEPDIR)/libstrace_a-fetch_struct_msghdr.Tpo -c -o libstrace_a-fetch_struct_msghdr.obj `if test -f 'fetch_struct_msghdr.c'; then $(CYGPATH_W) 'fetch_struct_msghdr.c'; else $(CYGPATH_W) '$(srcdir)/fetch_struct_msghdr.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fetch_struct_msghdr.Tpo $(DEPDIR)/libstrace_a-fetch_struct_msghdr.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fetch_struct_msghdr.c' object='libstrace_a-fetch_struct_msghdr.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-execve.obj `if test -f 'execve.c'; then $(CYGPATH_W) 'execve.c'; else $(CYGPATH_W) '$(srcdir)/execve.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fetch_struct_msghdr.obj `if test -f 'fetch_struct_msghdr.c'; then $(CYGPATH_W) 'fetch_struct_msghdr.c'; else $(CYGPATH_W) '$(srcdir)/fetch_struct_msghdr.c'; fi`
 
-strace-fadvise.o: fadvise.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-fadvise.o -MD -MP -MF $(DEPDIR)/strace-fadvise.Tpo -c -o strace-fadvise.o `test -f 'fadvise.c' || echo '$(srcdir)/'`fadvise.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-fadvise.Tpo $(DEPDIR)/strace-fadvise.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fadvise.c' object='strace-fadvise.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-fetch_struct_stat.o: fetch_struct_stat.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fetch_struct_stat.o -MD -MP -MF $(DEPDIR)/libstrace_a-fetch_struct_stat.Tpo -c -o libstrace_a-fetch_struct_stat.o `test -f 'fetch_struct_stat.c' || echo '$(srcdir)/'`fetch_struct_stat.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fetch_struct_stat.Tpo $(DEPDIR)/libstrace_a-fetch_struct_stat.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fetch_struct_stat.c' object='libstrace_a-fetch_struct_stat.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-fadvise.o `test -f 'fadvise.c' || echo '$(srcdir)/'`fadvise.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fetch_struct_stat.o `test -f 'fetch_struct_stat.c' || echo '$(srcdir)/'`fetch_struct_stat.c
 
-strace-fadvise.obj: fadvise.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-fadvise.obj -MD -MP -MF $(DEPDIR)/strace-fadvise.Tpo -c -o strace-fadvise.obj `if test -f 'fadvise.c'; then $(CYGPATH_W) 'fadvise.c'; else $(CYGPATH_W) '$(srcdir)/fadvise.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-fadvise.Tpo $(DEPDIR)/strace-fadvise.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fadvise.c' object='strace-fadvise.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-fetch_struct_stat.obj: fetch_struct_stat.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fetch_struct_stat.obj -MD -MP -MF $(DEPDIR)/libstrace_a-fetch_struct_stat.Tpo -c -o libstrace_a-fetch_struct_stat.obj `if test -f 'fetch_struct_stat.c'; then $(CYGPATH_W) 'fetch_struct_stat.c'; else $(CYGPATH_W) '$(srcdir)/fetch_struct_stat.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fetch_struct_stat.Tpo $(DEPDIR)/libstrace_a-fetch_struct_stat.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fetch_struct_stat.c' object='libstrace_a-fetch_struct_stat.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-fadvise.obj `if test -f 'fadvise.c'; then $(CYGPATH_W) 'fadvise.c'; else $(CYGPATH_W) '$(srcdir)/fadvise.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fetch_struct_stat.obj `if test -f 'fetch_struct_stat.c'; then $(CYGPATH_W) 'fetch_struct_stat.c'; else $(CYGPATH_W) '$(srcdir)/fetch_struct_stat.c'; fi`
 
-strace-fallocate.o: fallocate.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-fallocate.o -MD -MP -MF $(DEPDIR)/strace-fallocate.Tpo -c -o strace-fallocate.o `test -f 'fallocate.c' || echo '$(srcdir)/'`fallocate.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-fallocate.Tpo $(DEPDIR)/strace-fallocate.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fallocate.c' object='strace-fallocate.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-fetch_struct_stat64.o: fetch_struct_stat64.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fetch_struct_stat64.o -MD -MP -MF $(DEPDIR)/libstrace_a-fetch_struct_stat64.Tpo -c -o libstrace_a-fetch_struct_stat64.o `test -f 'fetch_struct_stat64.c' || echo '$(srcdir)/'`fetch_struct_stat64.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fetch_struct_stat64.Tpo $(DEPDIR)/libstrace_a-fetch_struct_stat64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fetch_struct_stat64.c' object='libstrace_a-fetch_struct_stat64.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-fallocate.o `test -f 'fallocate.c' || echo '$(srcdir)/'`fallocate.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fetch_struct_stat64.o `test -f 'fetch_struct_stat64.c' || echo '$(srcdir)/'`fetch_struct_stat64.c
 
-strace-fallocate.obj: fallocate.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-fallocate.obj -MD -MP -MF $(DEPDIR)/strace-fallocate.Tpo -c -o strace-fallocate.obj `if test -f 'fallocate.c'; then $(CYGPATH_W) 'fallocate.c'; else $(CYGPATH_W) '$(srcdir)/fallocate.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-fallocate.Tpo $(DEPDIR)/strace-fallocate.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fallocate.c' object='strace-fallocate.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-fetch_struct_stat64.obj: fetch_struct_stat64.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fetch_struct_stat64.obj -MD -MP -MF $(DEPDIR)/libstrace_a-fetch_struct_stat64.Tpo -c -o libstrace_a-fetch_struct_stat64.obj `if test -f 'fetch_struct_stat64.c'; then $(CYGPATH_W) 'fetch_struct_stat64.c'; else $(CYGPATH_W) '$(srcdir)/fetch_struct_stat64.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fetch_struct_stat64.Tpo $(DEPDIR)/libstrace_a-fetch_struct_stat64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fetch_struct_stat64.c' object='libstrace_a-fetch_struct_stat64.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-fallocate.obj `if test -f 'fallocate.c'; then $(CYGPATH_W) 'fallocate.c'; else $(CYGPATH_W) '$(srcdir)/fallocate.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fetch_struct_stat64.obj `if test -f 'fetch_struct_stat64.c'; then $(CYGPATH_W) 'fetch_struct_stat64.c'; else $(CYGPATH_W) '$(srcdir)/fetch_struct_stat64.c'; fi`
 
-strace-fanotify.o: fanotify.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-fanotify.o -MD -MP -MF $(DEPDIR)/strace-fanotify.Tpo -c -o strace-fanotify.o `test -f 'fanotify.c' || echo '$(srcdir)/'`fanotify.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-fanotify.Tpo $(DEPDIR)/strace-fanotify.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fanotify.c' object='strace-fanotify.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-fetch_struct_statfs.o: fetch_struct_statfs.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fetch_struct_statfs.o -MD -MP -MF $(DEPDIR)/libstrace_a-fetch_struct_statfs.Tpo -c -o libstrace_a-fetch_struct_statfs.o `test -f 'fetch_struct_statfs.c' || echo '$(srcdir)/'`fetch_struct_statfs.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fetch_struct_statfs.Tpo $(DEPDIR)/libstrace_a-fetch_struct_statfs.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fetch_struct_statfs.c' object='libstrace_a-fetch_struct_statfs.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-fanotify.o `test -f 'fanotify.c' || echo '$(srcdir)/'`fanotify.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fetch_struct_statfs.o `test -f 'fetch_struct_statfs.c' || echo '$(srcdir)/'`fetch_struct_statfs.c
 
-strace-fanotify.obj: fanotify.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-fanotify.obj -MD -MP -MF $(DEPDIR)/strace-fanotify.Tpo -c -o strace-fanotify.obj `if test -f 'fanotify.c'; then $(CYGPATH_W) 'fanotify.c'; else $(CYGPATH_W) '$(srcdir)/fanotify.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-fanotify.Tpo $(DEPDIR)/strace-fanotify.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fanotify.c' object='strace-fanotify.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-fetch_struct_statfs.obj: fetch_struct_statfs.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fetch_struct_statfs.obj -MD -MP -MF $(DEPDIR)/libstrace_a-fetch_struct_statfs.Tpo -c -o libstrace_a-fetch_struct_statfs.obj `if test -f 'fetch_struct_statfs.c'; then $(CYGPATH_W) 'fetch_struct_statfs.c'; else $(CYGPATH_W) '$(srcdir)/fetch_struct_statfs.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fetch_struct_statfs.Tpo $(DEPDIR)/libstrace_a-fetch_struct_statfs.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fetch_struct_statfs.c' object='libstrace_a-fetch_struct_statfs.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-fanotify.obj `if test -f 'fanotify.c'; then $(CYGPATH_W) 'fanotify.c'; else $(CYGPATH_W) '$(srcdir)/fanotify.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fetch_struct_statfs.obj `if test -f 'fetch_struct_statfs.c'; then $(CYGPATH_W) 'fetch_struct_statfs.c'; else $(CYGPATH_W) '$(srcdir)/fetch_struct_statfs.c'; fi`
 
-strace-fchownat.o: fchownat.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-fchownat.o -MD -MP -MF $(DEPDIR)/strace-fchownat.Tpo -c -o strace-fchownat.o `test -f 'fchownat.c' || echo '$(srcdir)/'`fchownat.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-fchownat.Tpo $(DEPDIR)/strace-fchownat.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fchownat.c' object='strace-fchownat.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-fetch_struct_xfs_quotastat.o: fetch_struct_xfs_quotastat.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fetch_struct_xfs_quotastat.o -MD -MP -MF $(DEPDIR)/libstrace_a-fetch_struct_xfs_quotastat.Tpo -c -o libstrace_a-fetch_struct_xfs_quotastat.o `test -f 'fetch_struct_xfs_quotastat.c' || echo '$(srcdir)/'`fetch_struct_xfs_quotastat.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fetch_struct_xfs_quotastat.Tpo $(DEPDIR)/libstrace_a-fetch_struct_xfs_quotastat.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fetch_struct_xfs_quotastat.c' object='libstrace_a-fetch_struct_xfs_quotastat.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-fchownat.o `test -f 'fchownat.c' || echo '$(srcdir)/'`fchownat.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fetch_struct_xfs_quotastat.o `test -f 'fetch_struct_xfs_quotastat.c' || echo '$(srcdir)/'`fetch_struct_xfs_quotastat.c
 
-strace-fchownat.obj: fchownat.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-fchownat.obj -MD -MP -MF $(DEPDIR)/strace-fchownat.Tpo -c -o strace-fchownat.obj `if test -f 'fchownat.c'; then $(CYGPATH_W) 'fchownat.c'; else $(CYGPATH_W) '$(srcdir)/fchownat.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-fchownat.Tpo $(DEPDIR)/strace-fchownat.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fchownat.c' object='strace-fchownat.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-fetch_struct_xfs_quotastat.obj: fetch_struct_xfs_quotastat.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fetch_struct_xfs_quotastat.obj -MD -MP -MF $(DEPDIR)/libstrace_a-fetch_struct_xfs_quotastat.Tpo -c -o libstrace_a-fetch_struct_xfs_quotastat.obj `if test -f 'fetch_struct_xfs_quotastat.c'; then $(CYGPATH_W) 'fetch_struct_xfs_quotastat.c'; else $(CYGPATH_W) '$(srcdir)/fetch_struct_xfs_quotastat.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fetch_struct_xfs_quotastat.Tpo $(DEPDIR)/libstrace_a-fetch_struct_xfs_quotastat.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fetch_struct_xfs_quotastat.c' object='libstrace_a-fetch_struct_xfs_quotastat.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-fchownat.obj `if test -f 'fchownat.c'; then $(CYGPATH_W) 'fchownat.c'; else $(CYGPATH_W) '$(srcdir)/fchownat.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fetch_struct_xfs_quotastat.obj `if test -f 'fetch_struct_xfs_quotastat.c'; then $(CYGPATH_W) 'fetch_struct_xfs_quotastat.c'; else $(CYGPATH_W) '$(srcdir)/fetch_struct_xfs_quotastat.c'; fi`
 
-strace-fcntl.o: fcntl.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-fcntl.o -MD -MP -MF $(DEPDIR)/strace-fcntl.Tpo -c -o strace-fcntl.o `test -f 'fcntl.c' || echo '$(srcdir)/'`fcntl.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-fcntl.Tpo $(DEPDIR)/strace-fcntl.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fcntl.c' object='strace-fcntl.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-file_handle.o: file_handle.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-file_handle.o -MD -MP -MF $(DEPDIR)/libstrace_a-file_handle.Tpo -c -o libstrace_a-file_handle.o `test -f 'file_handle.c' || echo '$(srcdir)/'`file_handle.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-file_handle.Tpo $(DEPDIR)/libstrace_a-file_handle.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='file_handle.c' object='libstrace_a-file_handle.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-fcntl.o `test -f 'fcntl.c' || echo '$(srcdir)/'`fcntl.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-file_handle.o `test -f 'file_handle.c' || echo '$(srcdir)/'`file_handle.c
 
-strace-fcntl.obj: fcntl.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-fcntl.obj -MD -MP -MF $(DEPDIR)/strace-fcntl.Tpo -c -o strace-fcntl.obj `if test -f 'fcntl.c'; then $(CYGPATH_W) 'fcntl.c'; else $(CYGPATH_W) '$(srcdir)/fcntl.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-fcntl.Tpo $(DEPDIR)/strace-fcntl.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fcntl.c' object='strace-fcntl.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-file_handle.obj: file_handle.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-file_handle.obj -MD -MP -MF $(DEPDIR)/libstrace_a-file_handle.Tpo -c -o libstrace_a-file_handle.obj `if test -f 'file_handle.c'; then $(CYGPATH_W) 'file_handle.c'; else $(CYGPATH_W) '$(srcdir)/file_handle.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-file_handle.Tpo $(DEPDIR)/libstrace_a-file_handle.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='file_handle.c' object='libstrace_a-file_handle.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-fcntl.obj `if test -f 'fcntl.c'; then $(CYGPATH_W) 'fcntl.c'; else $(CYGPATH_W) '$(srcdir)/fcntl.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-file_handle.obj `if test -f 'file_handle.c'; then $(CYGPATH_W) 'file_handle.c'; else $(CYGPATH_W) '$(srcdir)/file_handle.c'; fi`
 
-strace-fetch_bpf_fprog.o: fetch_bpf_fprog.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-fetch_bpf_fprog.o -MD -MP -MF $(DEPDIR)/strace-fetch_bpf_fprog.Tpo -c -o strace-fetch_bpf_fprog.o `test -f 'fetch_bpf_fprog.c' || echo '$(srcdir)/'`fetch_bpf_fprog.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-fetch_bpf_fprog.Tpo $(DEPDIR)/strace-fetch_bpf_fprog.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fetch_bpf_fprog.c' object='strace-fetch_bpf_fprog.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-file_ioctl.o: file_ioctl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-file_ioctl.o -MD -MP -MF $(DEPDIR)/libstrace_a-file_ioctl.Tpo -c -o libstrace_a-file_ioctl.o `test -f 'file_ioctl.c' || echo '$(srcdir)/'`file_ioctl.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-file_ioctl.Tpo $(DEPDIR)/libstrace_a-file_ioctl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='file_ioctl.c' object='libstrace_a-file_ioctl.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-fetch_bpf_fprog.o `test -f 'fetch_bpf_fprog.c' || echo '$(srcdir)/'`fetch_bpf_fprog.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-file_ioctl.o `test -f 'file_ioctl.c' || echo '$(srcdir)/'`file_ioctl.c
 
-strace-fetch_bpf_fprog.obj: fetch_bpf_fprog.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-fetch_bpf_fprog.obj -MD -MP -MF $(DEPDIR)/strace-fetch_bpf_fprog.Tpo -c -o strace-fetch_bpf_fprog.obj `if test -f 'fetch_bpf_fprog.c'; then $(CYGPATH_W) 'fetch_bpf_fprog.c'; else $(CYGPATH_W) '$(srcdir)/fetch_bpf_fprog.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-fetch_bpf_fprog.Tpo $(DEPDIR)/strace-fetch_bpf_fprog.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fetch_bpf_fprog.c' object='strace-fetch_bpf_fprog.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-file_ioctl.obj: file_ioctl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-file_ioctl.obj -MD -MP -MF $(DEPDIR)/libstrace_a-file_ioctl.Tpo -c -o libstrace_a-file_ioctl.obj `if test -f 'file_ioctl.c'; then $(CYGPATH_W) 'file_ioctl.c'; else $(CYGPATH_W) '$(srcdir)/file_ioctl.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-file_ioctl.Tpo $(DEPDIR)/libstrace_a-file_ioctl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='file_ioctl.c' object='libstrace_a-file_ioctl.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-fetch_bpf_fprog.obj `if test -f 'fetch_bpf_fprog.c'; then $(CYGPATH_W) 'fetch_bpf_fprog.c'; else $(CYGPATH_W) '$(srcdir)/fetch_bpf_fprog.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-file_ioctl.obj `if test -f 'file_ioctl.c'; then $(CYGPATH_W) 'file_ioctl.c'; else $(CYGPATH_W) '$(srcdir)/file_ioctl.c'; fi`
 
-strace-fetch_struct_flock.o: fetch_struct_flock.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-fetch_struct_flock.o -MD -MP -MF $(DEPDIR)/strace-fetch_struct_flock.Tpo -c -o strace-fetch_struct_flock.o `test -f 'fetch_struct_flock.c' || echo '$(srcdir)/'`fetch_struct_flock.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-fetch_struct_flock.Tpo $(DEPDIR)/strace-fetch_struct_flock.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fetch_struct_flock.c' object='strace-fetch_struct_flock.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-filter_qualify.o: filter_qualify.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-filter_qualify.o -MD -MP -MF $(DEPDIR)/libstrace_a-filter_qualify.Tpo -c -o libstrace_a-filter_qualify.o `test -f 'filter_qualify.c' || echo '$(srcdir)/'`filter_qualify.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-filter_qualify.Tpo $(DEPDIR)/libstrace_a-filter_qualify.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='filter_qualify.c' object='libstrace_a-filter_qualify.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-fetch_struct_flock.o `test -f 'fetch_struct_flock.c' || echo '$(srcdir)/'`fetch_struct_flock.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-filter_qualify.o `test -f 'filter_qualify.c' || echo '$(srcdir)/'`filter_qualify.c
 
-strace-fetch_struct_flock.obj: fetch_struct_flock.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-fetch_struct_flock.obj -MD -MP -MF $(DEPDIR)/strace-fetch_struct_flock.Tpo -c -o strace-fetch_struct_flock.obj `if test -f 'fetch_struct_flock.c'; then $(CYGPATH_W) 'fetch_struct_flock.c'; else $(CYGPATH_W) '$(srcdir)/fetch_struct_flock.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-fetch_struct_flock.Tpo $(DEPDIR)/strace-fetch_struct_flock.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fetch_struct_flock.c' object='strace-fetch_struct_flock.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-filter_qualify.obj: filter_qualify.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-filter_qualify.obj -MD -MP -MF $(DEPDIR)/libstrace_a-filter_qualify.Tpo -c -o libstrace_a-filter_qualify.obj `if test -f 'filter_qualify.c'; then $(CYGPATH_W) 'filter_qualify.c'; else $(CYGPATH_W) '$(srcdir)/filter_qualify.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-filter_qualify.Tpo $(DEPDIR)/libstrace_a-filter_qualify.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='filter_qualify.c' object='libstrace_a-filter_qualify.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-fetch_struct_flock.obj `if test -f 'fetch_struct_flock.c'; then $(CYGPATH_W) 'fetch_struct_flock.c'; else $(CYGPATH_W) '$(srcdir)/fetch_struct_flock.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-filter_qualify.obj `if test -f 'filter_qualify.c'; then $(CYGPATH_W) 'filter_qualify.c'; else $(CYGPATH_W) '$(srcdir)/filter_qualify.c'; fi`
 
-strace-fetch_struct_keyctl_kdf_params.o: fetch_struct_keyctl_kdf_params.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-fetch_struct_keyctl_kdf_params.o -MD -MP -MF $(DEPDIR)/strace-fetch_struct_keyctl_kdf_params.Tpo -c -o strace-fetch_struct_keyctl_kdf_params.o `test -f 'fetch_struct_keyctl_kdf_params.c' || echo '$(srcdir)/'`fetch_struct_keyctl_kdf_params.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-fetch_struct_keyctl_kdf_params.Tpo $(DEPDIR)/strace-fetch_struct_keyctl_kdf_params.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fetch_struct_keyctl_kdf_params.c' object='strace-fetch_struct_keyctl_kdf_params.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-filter_seccomp.o: filter_seccomp.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-filter_seccomp.o -MD -MP -MF $(DEPDIR)/libstrace_a-filter_seccomp.Tpo -c -o libstrace_a-filter_seccomp.o `test -f 'filter_seccomp.c' || echo '$(srcdir)/'`filter_seccomp.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-filter_seccomp.Tpo $(DEPDIR)/libstrace_a-filter_seccomp.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='filter_seccomp.c' object='libstrace_a-filter_seccomp.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-fetch_struct_keyctl_kdf_params.o `test -f 'fetch_struct_keyctl_kdf_params.c' || echo '$(srcdir)/'`fetch_struct_keyctl_kdf_params.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-filter_seccomp.o `test -f 'filter_seccomp.c' || echo '$(srcdir)/'`filter_seccomp.c
 
-strace-fetch_struct_keyctl_kdf_params.obj: fetch_struct_keyctl_kdf_params.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-fetch_struct_keyctl_kdf_params.obj -MD -MP -MF $(DEPDIR)/strace-fetch_struct_keyctl_kdf_params.Tpo -c -o strace-fetch_struct_keyctl_kdf_params.obj `if test -f 'fetch_struct_keyctl_kdf_params.c'; then $(CYGPATH_W) 'fetch_struct_keyctl_kdf_params.c'; else $(CYGPATH_W) '$(srcdir)/fetch_struct_keyctl_kdf_params.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-fetch_struct_keyctl_kdf_params.Tpo $(DEPDIR)/strace-fetch_struct_keyctl_kdf_params.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fetch_struct_keyctl_kdf_params.c' object='strace-fetch_struct_keyctl_kdf_params.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-filter_seccomp.obj: filter_seccomp.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-filter_seccomp.obj -MD -MP -MF $(DEPDIR)/libstrace_a-filter_seccomp.Tpo -c -o libstrace_a-filter_seccomp.obj `if test -f 'filter_seccomp.c'; then $(CYGPATH_W) 'filter_seccomp.c'; else $(CYGPATH_W) '$(srcdir)/filter_seccomp.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-filter_seccomp.Tpo $(DEPDIR)/libstrace_a-filter_seccomp.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='filter_seccomp.c' object='libstrace_a-filter_seccomp.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-fetch_struct_keyctl_kdf_params.obj `if test -f 'fetch_struct_keyctl_kdf_params.c'; then $(CYGPATH_W) 'fetch_struct_keyctl_kdf_params.c'; else $(CYGPATH_W) '$(srcdir)/fetch_struct_keyctl_kdf_params.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-filter_seccomp.obj `if test -f 'filter_seccomp.c'; then $(CYGPATH_W) 'filter_seccomp.c'; else $(CYGPATH_W) '$(srcdir)/filter_seccomp.c'; fi`
 
-strace-fetch_struct_mmsghdr.o: fetch_struct_mmsghdr.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-fetch_struct_mmsghdr.o -MD -MP -MF $(DEPDIR)/strace-fetch_struct_mmsghdr.Tpo -c -o strace-fetch_struct_mmsghdr.o `test -f 'fetch_struct_mmsghdr.c' || echo '$(srcdir)/'`fetch_struct_mmsghdr.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-fetch_struct_mmsghdr.Tpo $(DEPDIR)/strace-fetch_struct_mmsghdr.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fetch_struct_mmsghdr.c' object='strace-fetch_struct_mmsghdr.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-flock.o: flock.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-flock.o -MD -MP -MF $(DEPDIR)/libstrace_a-flock.Tpo -c -o libstrace_a-flock.o `test -f 'flock.c' || echo '$(srcdir)/'`flock.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-flock.Tpo $(DEPDIR)/libstrace_a-flock.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='flock.c' object='libstrace_a-flock.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-fetch_struct_mmsghdr.o `test -f 'fetch_struct_mmsghdr.c' || echo '$(srcdir)/'`fetch_struct_mmsghdr.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-flock.o `test -f 'flock.c' || echo '$(srcdir)/'`flock.c
 
-strace-fetch_struct_mmsghdr.obj: fetch_struct_mmsghdr.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-fetch_struct_mmsghdr.obj -MD -MP -MF $(DEPDIR)/strace-fetch_struct_mmsghdr.Tpo -c -o strace-fetch_struct_mmsghdr.obj `if test -f 'fetch_struct_mmsghdr.c'; then $(CYGPATH_W) 'fetch_struct_mmsghdr.c'; else $(CYGPATH_W) '$(srcdir)/fetch_struct_mmsghdr.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-fetch_struct_mmsghdr.Tpo $(DEPDIR)/strace-fetch_struct_mmsghdr.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fetch_struct_mmsghdr.c' object='strace-fetch_struct_mmsghdr.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-flock.obj: flock.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-flock.obj -MD -MP -MF $(DEPDIR)/libstrace_a-flock.Tpo -c -o libstrace_a-flock.obj `if test -f 'flock.c'; then $(CYGPATH_W) 'flock.c'; else $(CYGPATH_W) '$(srcdir)/flock.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-flock.Tpo $(DEPDIR)/libstrace_a-flock.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='flock.c' object='libstrace_a-flock.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-fetch_struct_mmsghdr.obj `if test -f 'fetch_struct_mmsghdr.c'; then $(CYGPATH_W) 'fetch_struct_mmsghdr.c'; else $(CYGPATH_W) '$(srcdir)/fetch_struct_mmsghdr.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-flock.obj `if test -f 'flock.c'; then $(CYGPATH_W) 'flock.c'; else $(CYGPATH_W) '$(srcdir)/flock.c'; fi`
 
-strace-fetch_struct_msghdr.o: fetch_struct_msghdr.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-fetch_struct_msghdr.o -MD -MP -MF $(DEPDIR)/strace-fetch_struct_msghdr.Tpo -c -o strace-fetch_struct_msghdr.o `test -f 'fetch_struct_msghdr.c' || echo '$(srcdir)/'`fetch_struct_msghdr.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-fetch_struct_msghdr.Tpo $(DEPDIR)/strace-fetch_struct_msghdr.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fetch_struct_msghdr.c' object='strace-fetch_struct_msghdr.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-fs_x_ioctl.o: fs_x_ioctl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fs_x_ioctl.o -MD -MP -MF $(DEPDIR)/libstrace_a-fs_x_ioctl.Tpo -c -o libstrace_a-fs_x_ioctl.o `test -f 'fs_x_ioctl.c' || echo '$(srcdir)/'`fs_x_ioctl.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fs_x_ioctl.Tpo $(DEPDIR)/libstrace_a-fs_x_ioctl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fs_x_ioctl.c' object='libstrace_a-fs_x_ioctl.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-fetch_struct_msghdr.o `test -f 'fetch_struct_msghdr.c' || echo '$(srcdir)/'`fetch_struct_msghdr.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fs_x_ioctl.o `test -f 'fs_x_ioctl.c' || echo '$(srcdir)/'`fs_x_ioctl.c
 
-strace-fetch_struct_msghdr.obj: fetch_struct_msghdr.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-fetch_struct_msghdr.obj -MD -MP -MF $(DEPDIR)/strace-fetch_struct_msghdr.Tpo -c -o strace-fetch_struct_msghdr.obj `if test -f 'fetch_struct_msghdr.c'; then $(CYGPATH_W) 'fetch_struct_msghdr.c'; else $(CYGPATH_W) '$(srcdir)/fetch_struct_msghdr.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-fetch_struct_msghdr.Tpo $(DEPDIR)/strace-fetch_struct_msghdr.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fetch_struct_msghdr.c' object='strace-fetch_struct_msghdr.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-fs_x_ioctl.obj: fs_x_ioctl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fs_x_ioctl.obj -MD -MP -MF $(DEPDIR)/libstrace_a-fs_x_ioctl.Tpo -c -o libstrace_a-fs_x_ioctl.obj `if test -f 'fs_x_ioctl.c'; then $(CYGPATH_W) 'fs_x_ioctl.c'; else $(CYGPATH_W) '$(srcdir)/fs_x_ioctl.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fs_x_ioctl.Tpo $(DEPDIR)/libstrace_a-fs_x_ioctl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fs_x_ioctl.c' object='libstrace_a-fs_x_ioctl.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-fetch_struct_msghdr.obj `if test -f 'fetch_struct_msghdr.c'; then $(CYGPATH_W) 'fetch_struct_msghdr.c'; else $(CYGPATH_W) '$(srcdir)/fetch_struct_msghdr.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fs_x_ioctl.obj `if test -f 'fs_x_ioctl.c'; then $(CYGPATH_W) 'fs_x_ioctl.c'; else $(CYGPATH_W) '$(srcdir)/fs_x_ioctl.c'; fi`
 
-strace-fetch_struct_stat.o: fetch_struct_stat.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-fetch_struct_stat.o -MD -MP -MF $(DEPDIR)/strace-fetch_struct_stat.Tpo -c -o strace-fetch_struct_stat.o `test -f 'fetch_struct_stat.c' || echo '$(srcdir)/'`fetch_struct_stat.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-fetch_struct_stat.Tpo $(DEPDIR)/strace-fetch_struct_stat.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fetch_struct_stat.c' object='strace-fetch_struct_stat.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-fsconfig.o: fsconfig.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fsconfig.o -MD -MP -MF $(DEPDIR)/libstrace_a-fsconfig.Tpo -c -o libstrace_a-fsconfig.o `test -f 'fsconfig.c' || echo '$(srcdir)/'`fsconfig.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fsconfig.Tpo $(DEPDIR)/libstrace_a-fsconfig.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fsconfig.c' object='libstrace_a-fsconfig.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-fetch_struct_stat.o `test -f 'fetch_struct_stat.c' || echo '$(srcdir)/'`fetch_struct_stat.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fsconfig.o `test -f 'fsconfig.c' || echo '$(srcdir)/'`fsconfig.c
 
-strace-fetch_struct_stat.obj: fetch_struct_stat.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-fetch_struct_stat.obj -MD -MP -MF $(DEPDIR)/strace-fetch_struct_stat.Tpo -c -o strace-fetch_struct_stat.obj `if test -f 'fetch_struct_stat.c'; then $(CYGPATH_W) 'fetch_struct_stat.c'; else $(CYGPATH_W) '$(srcdir)/fetch_struct_stat.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-fetch_struct_stat.Tpo $(DEPDIR)/strace-fetch_struct_stat.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fetch_struct_stat.c' object='strace-fetch_struct_stat.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-fsconfig.obj: fsconfig.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fsconfig.obj -MD -MP -MF $(DEPDIR)/libstrace_a-fsconfig.Tpo -c -o libstrace_a-fsconfig.obj `if test -f 'fsconfig.c'; then $(CYGPATH_W) 'fsconfig.c'; else $(CYGPATH_W) '$(srcdir)/fsconfig.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fsconfig.Tpo $(DEPDIR)/libstrace_a-fsconfig.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fsconfig.c' object='libstrace_a-fsconfig.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-fetch_struct_stat.obj `if test -f 'fetch_struct_stat.c'; then $(CYGPATH_W) 'fetch_struct_stat.c'; else $(CYGPATH_W) '$(srcdir)/fetch_struct_stat.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fsconfig.obj `if test -f 'fsconfig.c'; then $(CYGPATH_W) 'fsconfig.c'; else $(CYGPATH_W) '$(srcdir)/fsconfig.c'; fi`
 
-strace-fetch_struct_stat64.o: fetch_struct_stat64.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-fetch_struct_stat64.o -MD -MP -MF $(DEPDIR)/strace-fetch_struct_stat64.Tpo -c -o strace-fetch_struct_stat64.o `test -f 'fetch_struct_stat64.c' || echo '$(srcdir)/'`fetch_struct_stat64.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-fetch_struct_stat64.Tpo $(DEPDIR)/strace-fetch_struct_stat64.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fetch_struct_stat64.c' object='strace-fetch_struct_stat64.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-fsmount.o: fsmount.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fsmount.o -MD -MP -MF $(DEPDIR)/libstrace_a-fsmount.Tpo -c -o libstrace_a-fsmount.o `test -f 'fsmount.c' || echo '$(srcdir)/'`fsmount.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fsmount.Tpo $(DEPDIR)/libstrace_a-fsmount.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fsmount.c' object='libstrace_a-fsmount.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-fetch_struct_stat64.o `test -f 'fetch_struct_stat64.c' || echo '$(srcdir)/'`fetch_struct_stat64.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fsmount.o `test -f 'fsmount.c' || echo '$(srcdir)/'`fsmount.c
 
-strace-fetch_struct_stat64.obj: fetch_struct_stat64.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-fetch_struct_stat64.obj -MD -MP -MF $(DEPDIR)/strace-fetch_struct_stat64.Tpo -c -o strace-fetch_struct_stat64.obj `if test -f 'fetch_struct_stat64.c'; then $(CYGPATH_W) 'fetch_struct_stat64.c'; else $(CYGPATH_W) '$(srcdir)/fetch_struct_stat64.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-fetch_struct_stat64.Tpo $(DEPDIR)/strace-fetch_struct_stat64.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fetch_struct_stat64.c' object='strace-fetch_struct_stat64.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-fsmount.obj: fsmount.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fsmount.obj -MD -MP -MF $(DEPDIR)/libstrace_a-fsmount.Tpo -c -o libstrace_a-fsmount.obj `if test -f 'fsmount.c'; then $(CYGPATH_W) 'fsmount.c'; else $(CYGPATH_W) '$(srcdir)/fsmount.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fsmount.Tpo $(DEPDIR)/libstrace_a-fsmount.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fsmount.c' object='libstrace_a-fsmount.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-fetch_struct_stat64.obj `if test -f 'fetch_struct_stat64.c'; then $(CYGPATH_W) 'fetch_struct_stat64.c'; else $(CYGPATH_W) '$(srcdir)/fetch_struct_stat64.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fsmount.obj `if test -f 'fsmount.c'; then $(CYGPATH_W) 'fsmount.c'; else $(CYGPATH_W) '$(srcdir)/fsmount.c'; fi`
 
-strace-fetch_struct_statfs.o: fetch_struct_statfs.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-fetch_struct_statfs.o -MD -MP -MF $(DEPDIR)/strace-fetch_struct_statfs.Tpo -c -o strace-fetch_struct_statfs.o `test -f 'fetch_struct_statfs.c' || echo '$(srcdir)/'`fetch_struct_statfs.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-fetch_struct_statfs.Tpo $(DEPDIR)/strace-fetch_struct_statfs.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fetch_struct_statfs.c' object='strace-fetch_struct_statfs.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-fsopen.o: fsopen.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fsopen.o -MD -MP -MF $(DEPDIR)/libstrace_a-fsopen.Tpo -c -o libstrace_a-fsopen.o `test -f 'fsopen.c' || echo '$(srcdir)/'`fsopen.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fsopen.Tpo $(DEPDIR)/libstrace_a-fsopen.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fsopen.c' object='libstrace_a-fsopen.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-fetch_struct_statfs.o `test -f 'fetch_struct_statfs.c' || echo '$(srcdir)/'`fetch_struct_statfs.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fsopen.o `test -f 'fsopen.c' || echo '$(srcdir)/'`fsopen.c
 
-strace-fetch_struct_statfs.obj: fetch_struct_statfs.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-fetch_struct_statfs.obj -MD -MP -MF $(DEPDIR)/strace-fetch_struct_statfs.Tpo -c -o strace-fetch_struct_statfs.obj `if test -f 'fetch_struct_statfs.c'; then $(CYGPATH_W) 'fetch_struct_statfs.c'; else $(CYGPATH_W) '$(srcdir)/fetch_struct_statfs.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-fetch_struct_statfs.Tpo $(DEPDIR)/strace-fetch_struct_statfs.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fetch_struct_statfs.c' object='strace-fetch_struct_statfs.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-fsopen.obj: fsopen.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fsopen.obj -MD -MP -MF $(DEPDIR)/libstrace_a-fsopen.Tpo -c -o libstrace_a-fsopen.obj `if test -f 'fsopen.c'; then $(CYGPATH_W) 'fsopen.c'; else $(CYGPATH_W) '$(srcdir)/fsopen.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fsopen.Tpo $(DEPDIR)/libstrace_a-fsopen.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fsopen.c' object='libstrace_a-fsopen.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-fetch_struct_statfs.obj `if test -f 'fetch_struct_statfs.c'; then $(CYGPATH_W) 'fetch_struct_statfs.c'; else $(CYGPATH_W) '$(srcdir)/fetch_struct_statfs.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fsopen.obj `if test -f 'fsopen.c'; then $(CYGPATH_W) 'fsopen.c'; else $(CYGPATH_W) '$(srcdir)/fsopen.c'; fi`
 
-strace-fetch_struct_xfs_quotastat.o: fetch_struct_xfs_quotastat.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-fetch_struct_xfs_quotastat.o -MD -MP -MF $(DEPDIR)/strace-fetch_struct_xfs_quotastat.Tpo -c -o strace-fetch_struct_xfs_quotastat.o `test -f 'fetch_struct_xfs_quotastat.c' || echo '$(srcdir)/'`fetch_struct_xfs_quotastat.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-fetch_struct_xfs_quotastat.Tpo $(DEPDIR)/strace-fetch_struct_xfs_quotastat.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fetch_struct_xfs_quotastat.c' object='strace-fetch_struct_xfs_quotastat.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-fspick.o: fspick.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fspick.o -MD -MP -MF $(DEPDIR)/libstrace_a-fspick.Tpo -c -o libstrace_a-fspick.o `test -f 'fspick.c' || echo '$(srcdir)/'`fspick.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fspick.Tpo $(DEPDIR)/libstrace_a-fspick.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fspick.c' object='libstrace_a-fspick.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-fetch_struct_xfs_quotastat.o `test -f 'fetch_struct_xfs_quotastat.c' || echo '$(srcdir)/'`fetch_struct_xfs_quotastat.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fspick.o `test -f 'fspick.c' || echo '$(srcdir)/'`fspick.c
 
-strace-fetch_struct_xfs_quotastat.obj: fetch_struct_xfs_quotastat.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-fetch_struct_xfs_quotastat.obj -MD -MP -MF $(DEPDIR)/strace-fetch_struct_xfs_quotastat.Tpo -c -o strace-fetch_struct_xfs_quotastat.obj `if test -f 'fetch_struct_xfs_quotastat.c'; then $(CYGPATH_W) 'fetch_struct_xfs_quotastat.c'; else $(CYGPATH_W) '$(srcdir)/fetch_struct_xfs_quotastat.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-fetch_struct_xfs_quotastat.Tpo $(DEPDIR)/strace-fetch_struct_xfs_quotastat.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fetch_struct_xfs_quotastat.c' object='strace-fetch_struct_xfs_quotastat.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-fspick.obj: fspick.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fspick.obj -MD -MP -MF $(DEPDIR)/libstrace_a-fspick.Tpo -c -o libstrace_a-fspick.obj `if test -f 'fspick.c'; then $(CYGPATH_W) 'fspick.c'; else $(CYGPATH_W) '$(srcdir)/fspick.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fspick.Tpo $(DEPDIR)/libstrace_a-fspick.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fspick.c' object='libstrace_a-fspick.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-fetch_struct_xfs_quotastat.obj `if test -f 'fetch_struct_xfs_quotastat.c'; then $(CYGPATH_W) 'fetch_struct_xfs_quotastat.c'; else $(CYGPATH_W) '$(srcdir)/fetch_struct_xfs_quotastat.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fspick.obj `if test -f 'fspick.c'; then $(CYGPATH_W) 'fspick.c'; else $(CYGPATH_W) '$(srcdir)/fspick.c'; fi`
 
-strace-file_handle.o: file_handle.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-file_handle.o -MD -MP -MF $(DEPDIR)/strace-file_handle.Tpo -c -o strace-file_handle.o `test -f 'file_handle.c' || echo '$(srcdir)/'`file_handle.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-file_handle.Tpo $(DEPDIR)/strace-file_handle.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='file_handle.c' object='strace-file_handle.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-fstatfs.o: fstatfs.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fstatfs.o -MD -MP -MF $(DEPDIR)/libstrace_a-fstatfs.Tpo -c -o libstrace_a-fstatfs.o `test -f 'fstatfs.c' || echo '$(srcdir)/'`fstatfs.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fstatfs.Tpo $(DEPDIR)/libstrace_a-fstatfs.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fstatfs.c' object='libstrace_a-fstatfs.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-file_handle.o `test -f 'file_handle.c' || echo '$(srcdir)/'`file_handle.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fstatfs.o `test -f 'fstatfs.c' || echo '$(srcdir)/'`fstatfs.c
 
-strace-file_handle.obj: file_handle.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-file_handle.obj -MD -MP -MF $(DEPDIR)/strace-file_handle.Tpo -c -o strace-file_handle.obj `if test -f 'file_handle.c'; then $(CYGPATH_W) 'file_handle.c'; else $(CYGPATH_W) '$(srcdir)/file_handle.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-file_handle.Tpo $(DEPDIR)/strace-file_handle.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='file_handle.c' object='strace-file_handle.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-fstatfs.obj: fstatfs.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fstatfs.obj -MD -MP -MF $(DEPDIR)/libstrace_a-fstatfs.Tpo -c -o libstrace_a-fstatfs.obj `if test -f 'fstatfs.c'; then $(CYGPATH_W) 'fstatfs.c'; else $(CYGPATH_W) '$(srcdir)/fstatfs.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fstatfs.Tpo $(DEPDIR)/libstrace_a-fstatfs.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fstatfs.c' object='libstrace_a-fstatfs.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-file_handle.obj `if test -f 'file_handle.c'; then $(CYGPATH_W) 'file_handle.c'; else $(CYGPATH_W) '$(srcdir)/file_handle.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fstatfs.obj `if test -f 'fstatfs.c'; then $(CYGPATH_W) 'fstatfs.c'; else $(CYGPATH_W) '$(srcdir)/fstatfs.c'; fi`
 
-strace-file_ioctl.o: file_ioctl.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-file_ioctl.o -MD -MP -MF $(DEPDIR)/strace-file_ioctl.Tpo -c -o strace-file_ioctl.o `test -f 'file_ioctl.c' || echo '$(srcdir)/'`file_ioctl.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-file_ioctl.Tpo $(DEPDIR)/strace-file_ioctl.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='file_ioctl.c' object='strace-file_ioctl.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-fstatfs64.o: fstatfs64.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fstatfs64.o -MD -MP -MF $(DEPDIR)/libstrace_a-fstatfs64.Tpo -c -o libstrace_a-fstatfs64.o `test -f 'fstatfs64.c' || echo '$(srcdir)/'`fstatfs64.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fstatfs64.Tpo $(DEPDIR)/libstrace_a-fstatfs64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fstatfs64.c' object='libstrace_a-fstatfs64.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-file_ioctl.o `test -f 'file_ioctl.c' || echo '$(srcdir)/'`file_ioctl.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fstatfs64.o `test -f 'fstatfs64.c' || echo '$(srcdir)/'`fstatfs64.c
 
-strace-file_ioctl.obj: file_ioctl.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-file_ioctl.obj -MD -MP -MF $(DEPDIR)/strace-file_ioctl.Tpo -c -o strace-file_ioctl.obj `if test -f 'file_ioctl.c'; then $(CYGPATH_W) 'file_ioctl.c'; else $(CYGPATH_W) '$(srcdir)/file_ioctl.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-file_ioctl.Tpo $(DEPDIR)/strace-file_ioctl.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='file_ioctl.c' object='strace-file_ioctl.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-fstatfs64.obj: fstatfs64.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-fstatfs64.obj -MD -MP -MF $(DEPDIR)/libstrace_a-fstatfs64.Tpo -c -o libstrace_a-fstatfs64.obj `if test -f 'fstatfs64.c'; then $(CYGPATH_W) 'fstatfs64.c'; else $(CYGPATH_W) '$(srcdir)/fstatfs64.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-fstatfs64.Tpo $(DEPDIR)/libstrace_a-fstatfs64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fstatfs64.c' object='libstrace_a-fstatfs64.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-file_ioctl.obj `if test -f 'file_ioctl.c'; then $(CYGPATH_W) 'file_ioctl.c'; else $(CYGPATH_W) '$(srcdir)/file_ioctl.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-fstatfs64.obj `if test -f 'fstatfs64.c'; then $(CYGPATH_W) 'fstatfs64.c'; else $(CYGPATH_W) '$(srcdir)/fstatfs64.c'; fi`
 
-strace-filter_qualify.o: filter_qualify.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-filter_qualify.o -MD -MP -MF $(DEPDIR)/strace-filter_qualify.Tpo -c -o strace-filter_qualify.o `test -f 'filter_qualify.c' || echo '$(srcdir)/'`filter_qualify.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-filter_qualify.Tpo $(DEPDIR)/strace-filter_qualify.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='filter_qualify.c' object='strace-filter_qualify.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-futex.o: futex.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-futex.o -MD -MP -MF $(DEPDIR)/libstrace_a-futex.Tpo -c -o libstrace_a-futex.o `test -f 'futex.c' || echo '$(srcdir)/'`futex.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-futex.Tpo $(DEPDIR)/libstrace_a-futex.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='futex.c' object='libstrace_a-futex.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-filter_qualify.o `test -f 'filter_qualify.c' || echo '$(srcdir)/'`filter_qualify.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-futex.o `test -f 'futex.c' || echo '$(srcdir)/'`futex.c
 
-strace-filter_qualify.obj: filter_qualify.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-filter_qualify.obj -MD -MP -MF $(DEPDIR)/strace-filter_qualify.Tpo -c -o strace-filter_qualify.obj `if test -f 'filter_qualify.c'; then $(CYGPATH_W) 'filter_qualify.c'; else $(CYGPATH_W) '$(srcdir)/filter_qualify.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-filter_qualify.Tpo $(DEPDIR)/strace-filter_qualify.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='filter_qualify.c' object='strace-filter_qualify.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-futex.obj: futex.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-futex.obj -MD -MP -MF $(DEPDIR)/libstrace_a-futex.Tpo -c -o libstrace_a-futex.obj `if test -f 'futex.c'; then $(CYGPATH_W) 'futex.c'; else $(CYGPATH_W) '$(srcdir)/futex.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-futex.Tpo $(DEPDIR)/libstrace_a-futex.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='futex.c' object='libstrace_a-futex.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-filter_qualify.obj `if test -f 'filter_qualify.c'; then $(CYGPATH_W) 'filter_qualify.c'; else $(CYGPATH_W) '$(srcdir)/filter_qualify.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-futex.obj `if test -f 'futex.c'; then $(CYGPATH_W) 'futex.c'; else $(CYGPATH_W) '$(srcdir)/futex.c'; fi`
 
-strace-flock.o: flock.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-flock.o -MD -MP -MF $(DEPDIR)/strace-flock.Tpo -c -o strace-flock.o `test -f 'flock.c' || echo '$(srcdir)/'`flock.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-flock.Tpo $(DEPDIR)/strace-flock.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='flock.c' object='strace-flock.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-get_personality.o: get_personality.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-get_personality.o -MD -MP -MF $(DEPDIR)/libstrace_a-get_personality.Tpo -c -o libstrace_a-get_personality.o `test -f 'get_personality.c' || echo '$(srcdir)/'`get_personality.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-get_personality.Tpo $(DEPDIR)/libstrace_a-get_personality.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='get_personality.c' object='libstrace_a-get_personality.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-flock.o `test -f 'flock.c' || echo '$(srcdir)/'`flock.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-get_personality.o `test -f 'get_personality.c' || echo '$(srcdir)/'`get_personality.c
 
-strace-flock.obj: flock.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-flock.obj -MD -MP -MF $(DEPDIR)/strace-flock.Tpo -c -o strace-flock.obj `if test -f 'flock.c'; then $(CYGPATH_W) 'flock.c'; else $(CYGPATH_W) '$(srcdir)/flock.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-flock.Tpo $(DEPDIR)/strace-flock.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='flock.c' object='strace-flock.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-get_personality.obj: get_personality.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-get_personality.obj -MD -MP -MF $(DEPDIR)/libstrace_a-get_personality.Tpo -c -o libstrace_a-get_personality.obj `if test -f 'get_personality.c'; then $(CYGPATH_W) 'get_personality.c'; else $(CYGPATH_W) '$(srcdir)/get_personality.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-get_personality.Tpo $(DEPDIR)/libstrace_a-get_personality.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='get_personality.c' object='libstrace_a-get_personality.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-flock.obj `if test -f 'flock.c'; then $(CYGPATH_W) 'flock.c'; else $(CYGPATH_W) '$(srcdir)/flock.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-get_personality.obj `if test -f 'get_personality.c'; then $(CYGPATH_W) 'get_personality.c'; else $(CYGPATH_W) '$(srcdir)/get_personality.c'; fi`
 
-strace-fs_x_ioctl.o: fs_x_ioctl.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-fs_x_ioctl.o -MD -MP -MF $(DEPDIR)/strace-fs_x_ioctl.Tpo -c -o strace-fs_x_ioctl.o `test -f 'fs_x_ioctl.c' || echo '$(srcdir)/'`fs_x_ioctl.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-fs_x_ioctl.Tpo $(DEPDIR)/strace-fs_x_ioctl.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fs_x_ioctl.c' object='strace-fs_x_ioctl.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-get_robust_list.o: get_robust_list.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-get_robust_list.o -MD -MP -MF $(DEPDIR)/libstrace_a-get_robust_list.Tpo -c -o libstrace_a-get_robust_list.o `test -f 'get_robust_list.c' || echo '$(srcdir)/'`get_robust_list.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-get_robust_list.Tpo $(DEPDIR)/libstrace_a-get_robust_list.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='get_robust_list.c' object='libstrace_a-get_robust_list.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-fs_x_ioctl.o `test -f 'fs_x_ioctl.c' || echo '$(srcdir)/'`fs_x_ioctl.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-get_robust_list.o `test -f 'get_robust_list.c' || echo '$(srcdir)/'`get_robust_list.c
 
-strace-fs_x_ioctl.obj: fs_x_ioctl.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-fs_x_ioctl.obj -MD -MP -MF $(DEPDIR)/strace-fs_x_ioctl.Tpo -c -o strace-fs_x_ioctl.obj `if test -f 'fs_x_ioctl.c'; then $(CYGPATH_W) 'fs_x_ioctl.c'; else $(CYGPATH_W) '$(srcdir)/fs_x_ioctl.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-fs_x_ioctl.Tpo $(DEPDIR)/strace-fs_x_ioctl.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fs_x_ioctl.c' object='strace-fs_x_ioctl.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-get_robust_list.obj: get_robust_list.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-get_robust_list.obj -MD -MP -MF $(DEPDIR)/libstrace_a-get_robust_list.Tpo -c -o libstrace_a-get_robust_list.obj `if test -f 'get_robust_list.c'; then $(CYGPATH_W) 'get_robust_list.c'; else $(CYGPATH_W) '$(srcdir)/get_robust_list.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-get_robust_list.Tpo $(DEPDIR)/libstrace_a-get_robust_list.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='get_robust_list.c' object='libstrace_a-get_robust_list.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-fs_x_ioctl.obj `if test -f 'fs_x_ioctl.c'; then $(CYGPATH_W) 'fs_x_ioctl.c'; else $(CYGPATH_W) '$(srcdir)/fs_x_ioctl.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-get_robust_list.obj `if test -f 'get_robust_list.c'; then $(CYGPATH_W) 'get_robust_list.c'; else $(CYGPATH_W) '$(srcdir)/get_robust_list.c'; fi`
 
-strace-futex.o: futex.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-futex.o -MD -MP -MF $(DEPDIR)/strace-futex.Tpo -c -o strace-futex.o `test -f 'futex.c' || echo '$(srcdir)/'`futex.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-futex.Tpo $(DEPDIR)/strace-futex.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='futex.c' object='strace-futex.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-getcpu.o: getcpu.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-getcpu.o -MD -MP -MF $(DEPDIR)/libstrace_a-getcpu.Tpo -c -o libstrace_a-getcpu.o `test -f 'getcpu.c' || echo '$(srcdir)/'`getcpu.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-getcpu.Tpo $(DEPDIR)/libstrace_a-getcpu.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='getcpu.c' object='libstrace_a-getcpu.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-futex.o `test -f 'futex.c' || echo '$(srcdir)/'`futex.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-getcpu.o `test -f 'getcpu.c' || echo '$(srcdir)/'`getcpu.c
 
-strace-futex.obj: futex.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-futex.obj -MD -MP -MF $(DEPDIR)/strace-futex.Tpo -c -o strace-futex.obj `if test -f 'futex.c'; then $(CYGPATH_W) 'futex.c'; else $(CYGPATH_W) '$(srcdir)/futex.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-futex.Tpo $(DEPDIR)/strace-futex.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='futex.c' object='strace-futex.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-getcpu.obj: getcpu.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-getcpu.obj -MD -MP -MF $(DEPDIR)/libstrace_a-getcpu.Tpo -c -o libstrace_a-getcpu.obj `if test -f 'getcpu.c'; then $(CYGPATH_W) 'getcpu.c'; else $(CYGPATH_W) '$(srcdir)/getcpu.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-getcpu.Tpo $(DEPDIR)/libstrace_a-getcpu.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='getcpu.c' object='libstrace_a-getcpu.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-futex.obj `if test -f 'futex.c'; then $(CYGPATH_W) 'futex.c'; else $(CYGPATH_W) '$(srcdir)/futex.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-getcpu.obj `if test -f 'getcpu.c'; then $(CYGPATH_W) 'getcpu.c'; else $(CYGPATH_W) '$(srcdir)/getcpu.c'; fi`
 
-strace-get_personality.o: get_personality.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-get_personality.o -MD -MP -MF $(DEPDIR)/strace-get_personality.Tpo -c -o strace-get_personality.o `test -f 'get_personality.c' || echo '$(srcdir)/'`get_personality.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-get_personality.Tpo $(DEPDIR)/strace-get_personality.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='get_personality.c' object='strace-get_personality.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-getcwd.o: getcwd.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-getcwd.o -MD -MP -MF $(DEPDIR)/libstrace_a-getcwd.Tpo -c -o libstrace_a-getcwd.o `test -f 'getcwd.c' || echo '$(srcdir)/'`getcwd.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-getcwd.Tpo $(DEPDIR)/libstrace_a-getcwd.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='getcwd.c' object='libstrace_a-getcwd.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-get_personality.o `test -f 'get_personality.c' || echo '$(srcdir)/'`get_personality.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-getcwd.o `test -f 'getcwd.c' || echo '$(srcdir)/'`getcwd.c
 
-strace-get_personality.obj: get_personality.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-get_personality.obj -MD -MP -MF $(DEPDIR)/strace-get_personality.Tpo -c -o strace-get_personality.obj `if test -f 'get_personality.c'; then $(CYGPATH_W) 'get_personality.c'; else $(CYGPATH_W) '$(srcdir)/get_personality.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-get_personality.Tpo $(DEPDIR)/strace-get_personality.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='get_personality.c' object='strace-get_personality.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-getcwd.obj: getcwd.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-getcwd.obj -MD -MP -MF $(DEPDIR)/libstrace_a-getcwd.Tpo -c -o libstrace_a-getcwd.obj `if test -f 'getcwd.c'; then $(CYGPATH_W) 'getcwd.c'; else $(CYGPATH_W) '$(srcdir)/getcwd.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-getcwd.Tpo $(DEPDIR)/libstrace_a-getcwd.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='getcwd.c' object='libstrace_a-getcwd.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-get_personality.obj `if test -f 'get_personality.c'; then $(CYGPATH_W) 'get_personality.c'; else $(CYGPATH_W) '$(srcdir)/get_personality.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-getcwd.obj `if test -f 'getcwd.c'; then $(CYGPATH_W) 'getcwd.c'; else $(CYGPATH_W) '$(srcdir)/getcwd.c'; fi`
 
-strace-get_robust_list.o: get_robust_list.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-get_robust_list.o -MD -MP -MF $(DEPDIR)/strace-get_robust_list.Tpo -c -o strace-get_robust_list.o `test -f 'get_robust_list.c' || echo '$(srcdir)/'`get_robust_list.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-get_robust_list.Tpo $(DEPDIR)/strace-get_robust_list.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='get_robust_list.c' object='strace-get_robust_list.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-getpagesize.o: getpagesize.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-getpagesize.o -MD -MP -MF $(DEPDIR)/libstrace_a-getpagesize.Tpo -c -o libstrace_a-getpagesize.o `test -f 'getpagesize.c' || echo '$(srcdir)/'`getpagesize.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-getpagesize.Tpo $(DEPDIR)/libstrace_a-getpagesize.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='getpagesize.c' object='libstrace_a-getpagesize.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-get_robust_list.o `test -f 'get_robust_list.c' || echo '$(srcdir)/'`get_robust_list.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-getpagesize.o `test -f 'getpagesize.c' || echo '$(srcdir)/'`getpagesize.c
 
-strace-get_robust_list.obj: get_robust_list.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-get_robust_list.obj -MD -MP -MF $(DEPDIR)/strace-get_robust_list.Tpo -c -o strace-get_robust_list.obj `if test -f 'get_robust_list.c'; then $(CYGPATH_W) 'get_robust_list.c'; else $(CYGPATH_W) '$(srcdir)/get_robust_list.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-get_robust_list.Tpo $(DEPDIR)/strace-get_robust_list.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='get_robust_list.c' object='strace-get_robust_list.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-getpagesize.obj: getpagesize.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-getpagesize.obj -MD -MP -MF $(DEPDIR)/libstrace_a-getpagesize.Tpo -c -o libstrace_a-getpagesize.obj `if test -f 'getpagesize.c'; then $(CYGPATH_W) 'getpagesize.c'; else $(CYGPATH_W) '$(srcdir)/getpagesize.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-getpagesize.Tpo $(DEPDIR)/libstrace_a-getpagesize.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='getpagesize.c' object='libstrace_a-getpagesize.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-get_robust_list.obj `if test -f 'get_robust_list.c'; then $(CYGPATH_W) 'get_robust_list.c'; else $(CYGPATH_W) '$(srcdir)/get_robust_list.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-getpagesize.obj `if test -f 'getpagesize.c'; then $(CYGPATH_W) 'getpagesize.c'; else $(CYGPATH_W) '$(srcdir)/getpagesize.c'; fi`
 
-strace-getcpu.o: getcpu.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-getcpu.o -MD -MP -MF $(DEPDIR)/strace-getcpu.Tpo -c -o strace-getcpu.o `test -f 'getcpu.c' || echo '$(srcdir)/'`getcpu.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-getcpu.Tpo $(DEPDIR)/strace-getcpu.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='getcpu.c' object='strace-getcpu.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-getpid.o: getpid.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-getpid.o -MD -MP -MF $(DEPDIR)/libstrace_a-getpid.Tpo -c -o libstrace_a-getpid.o `test -f 'getpid.c' || echo '$(srcdir)/'`getpid.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-getpid.Tpo $(DEPDIR)/libstrace_a-getpid.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='getpid.c' object='libstrace_a-getpid.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-getcpu.o `test -f 'getcpu.c' || echo '$(srcdir)/'`getcpu.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-getpid.o `test -f 'getpid.c' || echo '$(srcdir)/'`getpid.c
 
-strace-getcpu.obj: getcpu.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-getcpu.obj -MD -MP -MF $(DEPDIR)/strace-getcpu.Tpo -c -o strace-getcpu.obj `if test -f 'getcpu.c'; then $(CYGPATH_W) 'getcpu.c'; else $(CYGPATH_W) '$(srcdir)/getcpu.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-getcpu.Tpo $(DEPDIR)/strace-getcpu.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='getcpu.c' object='strace-getcpu.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-getpid.obj: getpid.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-getpid.obj -MD -MP -MF $(DEPDIR)/libstrace_a-getpid.Tpo -c -o libstrace_a-getpid.obj `if test -f 'getpid.c'; then $(CYGPATH_W) 'getpid.c'; else $(CYGPATH_W) '$(srcdir)/getpid.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-getpid.Tpo $(DEPDIR)/libstrace_a-getpid.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='getpid.c' object='libstrace_a-getpid.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-getcpu.obj `if test -f 'getcpu.c'; then $(CYGPATH_W) 'getcpu.c'; else $(CYGPATH_W) '$(srcdir)/getcpu.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-getpid.obj `if test -f 'getpid.c'; then $(CYGPATH_W) 'getpid.c'; else $(CYGPATH_W) '$(srcdir)/getpid.c'; fi`
 
-strace-getcwd.o: getcwd.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-getcwd.o -MD -MP -MF $(DEPDIR)/strace-getcwd.Tpo -c -o strace-getcwd.o `test -f 'getcwd.c' || echo '$(srcdir)/'`getcwd.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-getcwd.Tpo $(DEPDIR)/strace-getcwd.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='getcwd.c' object='strace-getcwd.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-getrandom.o: getrandom.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-getrandom.o -MD -MP -MF $(DEPDIR)/libstrace_a-getrandom.Tpo -c -o libstrace_a-getrandom.o `test -f 'getrandom.c' || echo '$(srcdir)/'`getrandom.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-getrandom.Tpo $(DEPDIR)/libstrace_a-getrandom.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='getrandom.c' object='libstrace_a-getrandom.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-getcwd.o `test -f 'getcwd.c' || echo '$(srcdir)/'`getcwd.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-getrandom.o `test -f 'getrandom.c' || echo '$(srcdir)/'`getrandom.c
 
-strace-getcwd.obj: getcwd.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-getcwd.obj -MD -MP -MF $(DEPDIR)/strace-getcwd.Tpo -c -o strace-getcwd.obj `if test -f 'getcwd.c'; then $(CYGPATH_W) 'getcwd.c'; else $(CYGPATH_W) '$(srcdir)/getcwd.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-getcwd.Tpo $(DEPDIR)/strace-getcwd.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='getcwd.c' object='strace-getcwd.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-getrandom.obj: getrandom.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-getrandom.obj -MD -MP -MF $(DEPDIR)/libstrace_a-getrandom.Tpo -c -o libstrace_a-getrandom.obj `if test -f 'getrandom.c'; then $(CYGPATH_W) 'getrandom.c'; else $(CYGPATH_W) '$(srcdir)/getrandom.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-getrandom.Tpo $(DEPDIR)/libstrace_a-getrandom.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='getrandom.c' object='libstrace_a-getrandom.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-getcwd.obj `if test -f 'getcwd.c'; then $(CYGPATH_W) 'getcwd.c'; else $(CYGPATH_W) '$(srcdir)/getcwd.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-getrandom.obj `if test -f 'getrandom.c'; then $(CYGPATH_W) 'getrandom.c'; else $(CYGPATH_W) '$(srcdir)/getrandom.c'; fi`
 
-strace-getrandom.o: getrandom.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-getrandom.o -MD -MP -MF $(DEPDIR)/strace-getrandom.Tpo -c -o strace-getrandom.o `test -f 'getrandom.c' || echo '$(srcdir)/'`getrandom.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-getrandom.Tpo $(DEPDIR)/strace-getrandom.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='getrandom.c' object='strace-getrandom.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-hdio.o: hdio.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-hdio.o -MD -MP -MF $(DEPDIR)/libstrace_a-hdio.Tpo -c -o libstrace_a-hdio.o `test -f 'hdio.c' || echo '$(srcdir)/'`hdio.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-hdio.Tpo $(DEPDIR)/libstrace_a-hdio.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='hdio.c' object='libstrace_a-hdio.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-getrandom.o `test -f 'getrandom.c' || echo '$(srcdir)/'`getrandom.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-hdio.o `test -f 'hdio.c' || echo '$(srcdir)/'`hdio.c
 
-strace-getrandom.obj: getrandom.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-getrandom.obj -MD -MP -MF $(DEPDIR)/strace-getrandom.Tpo -c -o strace-getrandom.obj `if test -f 'getrandom.c'; then $(CYGPATH_W) 'getrandom.c'; else $(CYGPATH_W) '$(srcdir)/getrandom.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-getrandom.Tpo $(DEPDIR)/strace-getrandom.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='getrandom.c' object='strace-getrandom.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-hdio.obj: hdio.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-hdio.obj -MD -MP -MF $(DEPDIR)/libstrace_a-hdio.Tpo -c -o libstrace_a-hdio.obj `if test -f 'hdio.c'; then $(CYGPATH_W) 'hdio.c'; else $(CYGPATH_W) '$(srcdir)/hdio.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-hdio.Tpo $(DEPDIR)/libstrace_a-hdio.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='hdio.c' object='libstrace_a-hdio.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-getrandom.obj `if test -f 'getrandom.c'; then $(CYGPATH_W) 'getrandom.c'; else $(CYGPATH_W) '$(srcdir)/getrandom.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-hdio.obj `if test -f 'hdio.c'; then $(CYGPATH_W) 'hdio.c'; else $(CYGPATH_W) '$(srcdir)/hdio.c'; fi`
 
-strace-hdio.o: hdio.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-hdio.o -MD -MP -MF $(DEPDIR)/strace-hdio.Tpo -c -o strace-hdio.o `test -f 'hdio.c' || echo '$(srcdir)/'`hdio.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-hdio.Tpo $(DEPDIR)/strace-hdio.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='hdio.c' object='strace-hdio.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-hostname.o: hostname.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-hostname.o -MD -MP -MF $(DEPDIR)/libstrace_a-hostname.Tpo -c -o libstrace_a-hostname.o `test -f 'hostname.c' || echo '$(srcdir)/'`hostname.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-hostname.Tpo $(DEPDIR)/libstrace_a-hostname.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='hostname.c' object='libstrace_a-hostname.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-hdio.o `test -f 'hdio.c' || echo '$(srcdir)/'`hdio.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-hostname.o `test -f 'hostname.c' || echo '$(srcdir)/'`hostname.c
 
-strace-hdio.obj: hdio.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-hdio.obj -MD -MP -MF $(DEPDIR)/strace-hdio.Tpo -c -o strace-hdio.obj `if test -f 'hdio.c'; then $(CYGPATH_W) 'hdio.c'; else $(CYGPATH_W) '$(srcdir)/hdio.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-hdio.Tpo $(DEPDIR)/strace-hdio.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='hdio.c' object='strace-hdio.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-hostname.obj: hostname.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-hostname.obj -MD -MP -MF $(DEPDIR)/libstrace_a-hostname.Tpo -c -o libstrace_a-hostname.obj `if test -f 'hostname.c'; then $(CYGPATH_W) 'hostname.c'; else $(CYGPATH_W) '$(srcdir)/hostname.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-hostname.Tpo $(DEPDIR)/libstrace_a-hostname.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='hostname.c' object='libstrace_a-hostname.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-hdio.obj `if test -f 'hdio.c'; then $(CYGPATH_W) 'hdio.c'; else $(CYGPATH_W) '$(srcdir)/hdio.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-hostname.obj `if test -f 'hostname.c'; then $(CYGPATH_W) 'hostname.c'; else $(CYGPATH_W) '$(srcdir)/hostname.c'; fi`
 
-strace-hostname.o: hostname.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-hostname.o -MD -MP -MF $(DEPDIR)/strace-hostname.Tpo -c -o strace-hostname.o `test -f 'hostname.c' || echo '$(srcdir)/'`hostname.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-hostname.Tpo $(DEPDIR)/strace-hostname.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='hostname.c' object='strace-hostname.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-inotify.o: inotify.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-inotify.o -MD -MP -MF $(DEPDIR)/libstrace_a-inotify.Tpo -c -o libstrace_a-inotify.o `test -f 'inotify.c' || echo '$(srcdir)/'`inotify.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-inotify.Tpo $(DEPDIR)/libstrace_a-inotify.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='inotify.c' object='libstrace_a-inotify.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-hostname.o `test -f 'hostname.c' || echo '$(srcdir)/'`hostname.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-inotify.o `test -f 'inotify.c' || echo '$(srcdir)/'`inotify.c
 
-strace-hostname.obj: hostname.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-hostname.obj -MD -MP -MF $(DEPDIR)/strace-hostname.Tpo -c -o strace-hostname.obj `if test -f 'hostname.c'; then $(CYGPATH_W) 'hostname.c'; else $(CYGPATH_W) '$(srcdir)/hostname.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-hostname.Tpo $(DEPDIR)/strace-hostname.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='hostname.c' object='strace-hostname.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-inotify.obj: inotify.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-inotify.obj -MD -MP -MF $(DEPDIR)/libstrace_a-inotify.Tpo -c -o libstrace_a-inotify.obj `if test -f 'inotify.c'; then $(CYGPATH_W) 'inotify.c'; else $(CYGPATH_W) '$(srcdir)/inotify.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-inotify.Tpo $(DEPDIR)/libstrace_a-inotify.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='inotify.c' object='libstrace_a-inotify.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-hostname.obj `if test -f 'hostname.c'; then $(CYGPATH_W) 'hostname.c'; else $(CYGPATH_W) '$(srcdir)/hostname.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-inotify.obj `if test -f 'inotify.c'; then $(CYGPATH_W) 'inotify.c'; else $(CYGPATH_W) '$(srcdir)/inotify.c'; fi`
 
-strace-inotify.o: inotify.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-inotify.o -MD -MP -MF $(DEPDIR)/strace-inotify.Tpo -c -o strace-inotify.o `test -f 'inotify.c' || echo '$(srcdir)/'`inotify.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-inotify.Tpo $(DEPDIR)/strace-inotify.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='inotify.c' object='strace-inotify.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-inotify_ioctl.o: inotify_ioctl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-inotify_ioctl.o -MD -MP -MF $(DEPDIR)/libstrace_a-inotify_ioctl.Tpo -c -o libstrace_a-inotify_ioctl.o `test -f 'inotify_ioctl.c' || echo '$(srcdir)/'`inotify_ioctl.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-inotify_ioctl.Tpo $(DEPDIR)/libstrace_a-inotify_ioctl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='inotify_ioctl.c' object='libstrace_a-inotify_ioctl.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-inotify.o `test -f 'inotify.c' || echo '$(srcdir)/'`inotify.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-inotify_ioctl.o `test -f 'inotify_ioctl.c' || echo '$(srcdir)/'`inotify_ioctl.c
 
-strace-inotify.obj: inotify.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-inotify.obj -MD -MP -MF $(DEPDIR)/strace-inotify.Tpo -c -o strace-inotify.obj `if test -f 'inotify.c'; then $(CYGPATH_W) 'inotify.c'; else $(CYGPATH_W) '$(srcdir)/inotify.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-inotify.Tpo $(DEPDIR)/strace-inotify.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='inotify.c' object='strace-inotify.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-inotify_ioctl.obj: inotify_ioctl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-inotify_ioctl.obj -MD -MP -MF $(DEPDIR)/libstrace_a-inotify_ioctl.Tpo -c -o libstrace_a-inotify_ioctl.obj `if test -f 'inotify_ioctl.c'; then $(CYGPATH_W) 'inotify_ioctl.c'; else $(CYGPATH_W) '$(srcdir)/inotify_ioctl.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-inotify_ioctl.Tpo $(DEPDIR)/libstrace_a-inotify_ioctl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='inotify_ioctl.c' object='libstrace_a-inotify_ioctl.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-inotify.obj `if test -f 'inotify.c'; then $(CYGPATH_W) 'inotify.c'; else $(CYGPATH_W) '$(srcdir)/inotify.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-inotify_ioctl.obj `if test -f 'inotify_ioctl.c'; then $(CYGPATH_W) 'inotify_ioctl.c'; else $(CYGPATH_W) '$(srcdir)/inotify_ioctl.c'; fi`
 
-strace-inotify_ioctl.o: inotify_ioctl.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-inotify_ioctl.o -MD -MP -MF $(DEPDIR)/strace-inotify_ioctl.Tpo -c -o strace-inotify_ioctl.o `test -f 'inotify_ioctl.c' || echo '$(srcdir)/'`inotify_ioctl.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-inotify_ioctl.Tpo $(DEPDIR)/strace-inotify_ioctl.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='inotify_ioctl.c' object='strace-inotify_ioctl.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-io.o: io.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-io.o -MD -MP -MF $(DEPDIR)/libstrace_a-io.Tpo -c -o libstrace_a-io.o `test -f 'io.c' || echo '$(srcdir)/'`io.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-io.Tpo $(DEPDIR)/libstrace_a-io.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='io.c' object='libstrace_a-io.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-inotify_ioctl.o `test -f 'inotify_ioctl.c' || echo '$(srcdir)/'`inotify_ioctl.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-io.o `test -f 'io.c' || echo '$(srcdir)/'`io.c
 
-strace-inotify_ioctl.obj: inotify_ioctl.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-inotify_ioctl.obj -MD -MP -MF $(DEPDIR)/strace-inotify_ioctl.Tpo -c -o strace-inotify_ioctl.obj `if test -f 'inotify_ioctl.c'; then $(CYGPATH_W) 'inotify_ioctl.c'; else $(CYGPATH_W) '$(srcdir)/inotify_ioctl.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-inotify_ioctl.Tpo $(DEPDIR)/strace-inotify_ioctl.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='inotify_ioctl.c' object='strace-inotify_ioctl.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-io.obj: io.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-io.obj -MD -MP -MF $(DEPDIR)/libstrace_a-io.Tpo -c -o libstrace_a-io.obj `if test -f 'io.c'; then $(CYGPATH_W) 'io.c'; else $(CYGPATH_W) '$(srcdir)/io.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-io.Tpo $(DEPDIR)/libstrace_a-io.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='io.c' object='libstrace_a-io.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-inotify_ioctl.obj `if test -f 'inotify_ioctl.c'; then $(CYGPATH_W) 'inotify_ioctl.c'; else $(CYGPATH_W) '$(srcdir)/inotify_ioctl.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-io.obj `if test -f 'io.c'; then $(CYGPATH_W) 'io.c'; else $(CYGPATH_W) '$(srcdir)/io.c'; fi`
 
-strace-io.o: io.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-io.o -MD -MP -MF $(DEPDIR)/strace-io.Tpo -c -o strace-io.o `test -f 'io.c' || echo '$(srcdir)/'`io.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-io.Tpo $(DEPDIR)/strace-io.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='io.c' object='strace-io.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-io_uring.o: io_uring.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-io_uring.o -MD -MP -MF $(DEPDIR)/libstrace_a-io_uring.Tpo -c -o libstrace_a-io_uring.o `test -f 'io_uring.c' || echo '$(srcdir)/'`io_uring.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-io_uring.Tpo $(DEPDIR)/libstrace_a-io_uring.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='io_uring.c' object='libstrace_a-io_uring.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-io.o `test -f 'io.c' || echo '$(srcdir)/'`io.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-io_uring.o `test -f 'io_uring.c' || echo '$(srcdir)/'`io_uring.c
 
-strace-io.obj: io.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-io.obj -MD -MP -MF $(DEPDIR)/strace-io.Tpo -c -o strace-io.obj `if test -f 'io.c'; then $(CYGPATH_W) 'io.c'; else $(CYGPATH_W) '$(srcdir)/io.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-io.Tpo $(DEPDIR)/strace-io.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='io.c' object='strace-io.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-io_uring.obj: io_uring.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-io_uring.obj -MD -MP -MF $(DEPDIR)/libstrace_a-io_uring.Tpo -c -o libstrace_a-io_uring.obj `if test -f 'io_uring.c'; then $(CYGPATH_W) 'io_uring.c'; else $(CYGPATH_W) '$(srcdir)/io_uring.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-io_uring.Tpo $(DEPDIR)/libstrace_a-io_uring.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='io_uring.c' object='libstrace_a-io_uring.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-io.obj `if test -f 'io.c'; then $(CYGPATH_W) 'io.c'; else $(CYGPATH_W) '$(srcdir)/io.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-io_uring.obj `if test -f 'io_uring.c'; then $(CYGPATH_W) 'io_uring.c'; else $(CYGPATH_W) '$(srcdir)/io_uring.c'; fi`
 
-strace-io_uring.o: io_uring.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-io_uring.o -MD -MP -MF $(DEPDIR)/strace-io_uring.Tpo -c -o strace-io_uring.o `test -f 'io_uring.c' || echo '$(srcdir)/'`io_uring.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-io_uring.Tpo $(DEPDIR)/strace-io_uring.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='io_uring.c' object='strace-io_uring.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-ioctl.o: ioctl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-ioctl.o -MD -MP -MF $(DEPDIR)/libstrace_a-ioctl.Tpo -c -o libstrace_a-ioctl.o `test -f 'ioctl.c' || echo '$(srcdir)/'`ioctl.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-ioctl.Tpo $(DEPDIR)/libstrace_a-ioctl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ioctl.c' object='libstrace_a-ioctl.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-io_uring.o `test -f 'io_uring.c' || echo '$(srcdir)/'`io_uring.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-ioctl.o `test -f 'ioctl.c' || echo '$(srcdir)/'`ioctl.c
 
-strace-io_uring.obj: io_uring.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-io_uring.obj -MD -MP -MF $(DEPDIR)/strace-io_uring.Tpo -c -o strace-io_uring.obj `if test -f 'io_uring.c'; then $(CYGPATH_W) 'io_uring.c'; else $(CYGPATH_W) '$(srcdir)/io_uring.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-io_uring.Tpo $(DEPDIR)/strace-io_uring.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='io_uring.c' object='strace-io_uring.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-ioctl.obj: ioctl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-ioctl.obj -MD -MP -MF $(DEPDIR)/libstrace_a-ioctl.Tpo -c -o libstrace_a-ioctl.obj `if test -f 'ioctl.c'; then $(CYGPATH_W) 'ioctl.c'; else $(CYGPATH_W) '$(srcdir)/ioctl.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-ioctl.Tpo $(DEPDIR)/libstrace_a-ioctl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ioctl.c' object='libstrace_a-ioctl.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-io_uring.obj `if test -f 'io_uring.c'; then $(CYGPATH_W) 'io_uring.c'; else $(CYGPATH_W) '$(srcdir)/io_uring.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-ioctl.obj `if test -f 'ioctl.c'; then $(CYGPATH_W) 'ioctl.c'; else $(CYGPATH_W) '$(srcdir)/ioctl.c'; fi`
 
-strace-ioctl.o: ioctl.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-ioctl.o -MD -MP -MF $(DEPDIR)/strace-ioctl.Tpo -c -o strace-ioctl.o `test -f 'ioctl.c' || echo '$(srcdir)/'`ioctl.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-ioctl.Tpo $(DEPDIR)/strace-ioctl.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ioctl.c' object='strace-ioctl.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-ioperm.o: ioperm.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-ioperm.o -MD -MP -MF $(DEPDIR)/libstrace_a-ioperm.Tpo -c -o libstrace_a-ioperm.o `test -f 'ioperm.c' || echo '$(srcdir)/'`ioperm.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-ioperm.Tpo $(DEPDIR)/libstrace_a-ioperm.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ioperm.c' object='libstrace_a-ioperm.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-ioctl.o `test -f 'ioctl.c' || echo '$(srcdir)/'`ioctl.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-ioperm.o `test -f 'ioperm.c' || echo '$(srcdir)/'`ioperm.c
 
-strace-ioctl.obj: ioctl.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-ioctl.obj -MD -MP -MF $(DEPDIR)/strace-ioctl.Tpo -c -o strace-ioctl.obj `if test -f 'ioctl.c'; then $(CYGPATH_W) 'ioctl.c'; else $(CYGPATH_W) '$(srcdir)/ioctl.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-ioctl.Tpo $(DEPDIR)/strace-ioctl.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ioctl.c' object='strace-ioctl.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-ioperm.obj: ioperm.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-ioperm.obj -MD -MP -MF $(DEPDIR)/libstrace_a-ioperm.Tpo -c -o libstrace_a-ioperm.obj `if test -f 'ioperm.c'; then $(CYGPATH_W) 'ioperm.c'; else $(CYGPATH_W) '$(srcdir)/ioperm.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-ioperm.Tpo $(DEPDIR)/libstrace_a-ioperm.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ioperm.c' object='libstrace_a-ioperm.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-ioctl.obj `if test -f 'ioctl.c'; then $(CYGPATH_W) 'ioctl.c'; else $(CYGPATH_W) '$(srcdir)/ioctl.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-ioperm.obj `if test -f 'ioperm.c'; then $(CYGPATH_W) 'ioperm.c'; else $(CYGPATH_W) '$(srcdir)/ioperm.c'; fi`
 
-strace-ioperm.o: ioperm.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-ioperm.o -MD -MP -MF $(DEPDIR)/strace-ioperm.Tpo -c -o strace-ioperm.o `test -f 'ioperm.c' || echo '$(srcdir)/'`ioperm.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-ioperm.Tpo $(DEPDIR)/strace-ioperm.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ioperm.c' object='strace-ioperm.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-iopl.o: iopl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-iopl.o -MD -MP -MF $(DEPDIR)/libstrace_a-iopl.Tpo -c -o libstrace_a-iopl.o `test -f 'iopl.c' || echo '$(srcdir)/'`iopl.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-iopl.Tpo $(DEPDIR)/libstrace_a-iopl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='iopl.c' object='libstrace_a-iopl.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-ioperm.o `test -f 'ioperm.c' || echo '$(srcdir)/'`ioperm.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-iopl.o `test -f 'iopl.c' || echo '$(srcdir)/'`iopl.c
 
-strace-ioperm.obj: ioperm.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-ioperm.obj -MD -MP -MF $(DEPDIR)/strace-ioperm.Tpo -c -o strace-ioperm.obj `if test -f 'ioperm.c'; then $(CYGPATH_W) 'ioperm.c'; else $(CYGPATH_W) '$(srcdir)/ioperm.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-ioperm.Tpo $(DEPDIR)/strace-ioperm.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ioperm.c' object='strace-ioperm.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-iopl.obj: iopl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-iopl.obj -MD -MP -MF $(DEPDIR)/libstrace_a-iopl.Tpo -c -o libstrace_a-iopl.obj `if test -f 'iopl.c'; then $(CYGPATH_W) 'iopl.c'; else $(CYGPATH_W) '$(srcdir)/iopl.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-iopl.Tpo $(DEPDIR)/libstrace_a-iopl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='iopl.c' object='libstrace_a-iopl.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-ioperm.obj `if test -f 'ioperm.c'; then $(CYGPATH_W) 'ioperm.c'; else $(CYGPATH_W) '$(srcdir)/ioperm.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-iopl.obj `if test -f 'iopl.c'; then $(CYGPATH_W) 'iopl.c'; else $(CYGPATH_W) '$(srcdir)/iopl.c'; fi`
 
-strace-iopl.o: iopl.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-iopl.o -MD -MP -MF $(DEPDIR)/strace-iopl.Tpo -c -o strace-iopl.o `test -f 'iopl.c' || echo '$(srcdir)/'`iopl.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-iopl.Tpo $(DEPDIR)/strace-iopl.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='iopl.c' object='strace-iopl.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-ioprio.o: ioprio.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-ioprio.o -MD -MP -MF $(DEPDIR)/libstrace_a-ioprio.Tpo -c -o libstrace_a-ioprio.o `test -f 'ioprio.c' || echo '$(srcdir)/'`ioprio.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-ioprio.Tpo $(DEPDIR)/libstrace_a-ioprio.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ioprio.c' object='libstrace_a-ioprio.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-iopl.o `test -f 'iopl.c' || echo '$(srcdir)/'`iopl.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-ioprio.o `test -f 'ioprio.c' || echo '$(srcdir)/'`ioprio.c
 
-strace-iopl.obj: iopl.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-iopl.obj -MD -MP -MF $(DEPDIR)/strace-iopl.Tpo -c -o strace-iopl.obj `if test -f 'iopl.c'; then $(CYGPATH_W) 'iopl.c'; else $(CYGPATH_W) '$(srcdir)/iopl.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-iopl.Tpo $(DEPDIR)/strace-iopl.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='iopl.c' object='strace-iopl.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-ioprio.obj: ioprio.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-ioprio.obj -MD -MP -MF $(DEPDIR)/libstrace_a-ioprio.Tpo -c -o libstrace_a-ioprio.obj `if test -f 'ioprio.c'; then $(CYGPATH_W) 'ioprio.c'; else $(CYGPATH_W) '$(srcdir)/ioprio.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-ioprio.Tpo $(DEPDIR)/libstrace_a-ioprio.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ioprio.c' object='libstrace_a-ioprio.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-iopl.obj `if test -f 'iopl.c'; then $(CYGPATH_W) 'iopl.c'; else $(CYGPATH_W) '$(srcdir)/iopl.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-ioprio.obj `if test -f 'ioprio.c'; then $(CYGPATH_W) 'ioprio.c'; else $(CYGPATH_W) '$(srcdir)/ioprio.c'; fi`
 
-strace-ioprio.o: ioprio.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-ioprio.o -MD -MP -MF $(DEPDIR)/strace-ioprio.Tpo -c -o strace-ioprio.o `test -f 'ioprio.c' || echo '$(srcdir)/'`ioprio.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-ioprio.Tpo $(DEPDIR)/strace-ioprio.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ioprio.c' object='strace-ioprio.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-ipc.o: ipc.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-ipc.o -MD -MP -MF $(DEPDIR)/libstrace_a-ipc.Tpo -c -o libstrace_a-ipc.o `test -f 'ipc.c' || echo '$(srcdir)/'`ipc.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-ipc.Tpo $(DEPDIR)/libstrace_a-ipc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ipc.c' object='libstrace_a-ipc.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-ioprio.o `test -f 'ioprio.c' || echo '$(srcdir)/'`ioprio.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-ipc.o `test -f 'ipc.c' || echo '$(srcdir)/'`ipc.c
 
-strace-ioprio.obj: ioprio.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-ioprio.obj -MD -MP -MF $(DEPDIR)/strace-ioprio.Tpo -c -o strace-ioprio.obj `if test -f 'ioprio.c'; then $(CYGPATH_W) 'ioprio.c'; else $(CYGPATH_W) '$(srcdir)/ioprio.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-ioprio.Tpo $(DEPDIR)/strace-ioprio.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ioprio.c' object='strace-ioprio.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-ipc.obj: ipc.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-ipc.obj -MD -MP -MF $(DEPDIR)/libstrace_a-ipc.Tpo -c -o libstrace_a-ipc.obj `if test -f 'ipc.c'; then $(CYGPATH_W) 'ipc.c'; else $(CYGPATH_W) '$(srcdir)/ipc.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-ipc.Tpo $(DEPDIR)/libstrace_a-ipc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ipc.c' object='libstrace_a-ipc.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-ioprio.obj `if test -f 'ioprio.c'; then $(CYGPATH_W) 'ioprio.c'; else $(CYGPATH_W) '$(srcdir)/ioprio.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-ipc.obj `if test -f 'ipc.c'; then $(CYGPATH_W) 'ipc.c'; else $(CYGPATH_W) '$(srcdir)/ipc.c'; fi`
 
-strace-ipc_msg.o: ipc_msg.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-ipc_msg.o -MD -MP -MF $(DEPDIR)/strace-ipc_msg.Tpo -c -o strace-ipc_msg.o `test -f 'ipc_msg.c' || echo '$(srcdir)/'`ipc_msg.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-ipc_msg.Tpo $(DEPDIR)/strace-ipc_msg.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ipc_msg.c' object='strace-ipc_msg.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-ipc_msg.o: ipc_msg.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-ipc_msg.o -MD -MP -MF $(DEPDIR)/libstrace_a-ipc_msg.Tpo -c -o libstrace_a-ipc_msg.o `test -f 'ipc_msg.c' || echo '$(srcdir)/'`ipc_msg.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-ipc_msg.Tpo $(DEPDIR)/libstrace_a-ipc_msg.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ipc_msg.c' object='libstrace_a-ipc_msg.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-ipc_msg.o `test -f 'ipc_msg.c' || echo '$(srcdir)/'`ipc_msg.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-ipc_msg.o `test -f 'ipc_msg.c' || echo '$(srcdir)/'`ipc_msg.c
 
-strace-ipc_msg.obj: ipc_msg.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-ipc_msg.obj -MD -MP -MF $(DEPDIR)/strace-ipc_msg.Tpo -c -o strace-ipc_msg.obj `if test -f 'ipc_msg.c'; then $(CYGPATH_W) 'ipc_msg.c'; else $(CYGPATH_W) '$(srcdir)/ipc_msg.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-ipc_msg.Tpo $(DEPDIR)/strace-ipc_msg.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ipc_msg.c' object='strace-ipc_msg.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-ipc_msg.obj: ipc_msg.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-ipc_msg.obj -MD -MP -MF $(DEPDIR)/libstrace_a-ipc_msg.Tpo -c -o libstrace_a-ipc_msg.obj `if test -f 'ipc_msg.c'; then $(CYGPATH_W) 'ipc_msg.c'; else $(CYGPATH_W) '$(srcdir)/ipc_msg.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-ipc_msg.Tpo $(DEPDIR)/libstrace_a-ipc_msg.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ipc_msg.c' object='libstrace_a-ipc_msg.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-ipc_msg.obj `if test -f 'ipc_msg.c'; then $(CYGPATH_W) 'ipc_msg.c'; else $(CYGPATH_W) '$(srcdir)/ipc_msg.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-ipc_msg.obj `if test -f 'ipc_msg.c'; then $(CYGPATH_W) 'ipc_msg.c'; else $(CYGPATH_W) '$(srcdir)/ipc_msg.c'; fi`
 
-strace-ipc_msgctl.o: ipc_msgctl.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-ipc_msgctl.o -MD -MP -MF $(DEPDIR)/strace-ipc_msgctl.Tpo -c -o strace-ipc_msgctl.o `test -f 'ipc_msgctl.c' || echo '$(srcdir)/'`ipc_msgctl.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-ipc_msgctl.Tpo $(DEPDIR)/strace-ipc_msgctl.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ipc_msgctl.c' object='strace-ipc_msgctl.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-ipc_msgctl.o: ipc_msgctl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-ipc_msgctl.o -MD -MP -MF $(DEPDIR)/libstrace_a-ipc_msgctl.Tpo -c -o libstrace_a-ipc_msgctl.o `test -f 'ipc_msgctl.c' || echo '$(srcdir)/'`ipc_msgctl.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-ipc_msgctl.Tpo $(DEPDIR)/libstrace_a-ipc_msgctl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ipc_msgctl.c' object='libstrace_a-ipc_msgctl.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-ipc_msgctl.o `test -f 'ipc_msgctl.c' || echo '$(srcdir)/'`ipc_msgctl.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-ipc_msgctl.o `test -f 'ipc_msgctl.c' || echo '$(srcdir)/'`ipc_msgctl.c
 
-strace-ipc_msgctl.obj: ipc_msgctl.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-ipc_msgctl.obj -MD -MP -MF $(DEPDIR)/strace-ipc_msgctl.Tpo -c -o strace-ipc_msgctl.obj `if test -f 'ipc_msgctl.c'; then $(CYGPATH_W) 'ipc_msgctl.c'; else $(CYGPATH_W) '$(srcdir)/ipc_msgctl.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-ipc_msgctl.Tpo $(DEPDIR)/strace-ipc_msgctl.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ipc_msgctl.c' object='strace-ipc_msgctl.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-ipc_msgctl.obj: ipc_msgctl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-ipc_msgctl.obj -MD -MP -MF $(DEPDIR)/libstrace_a-ipc_msgctl.Tpo -c -o libstrace_a-ipc_msgctl.obj `if test -f 'ipc_msgctl.c'; then $(CYGPATH_W) 'ipc_msgctl.c'; else $(CYGPATH_W) '$(srcdir)/ipc_msgctl.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-ipc_msgctl.Tpo $(DEPDIR)/libstrace_a-ipc_msgctl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ipc_msgctl.c' object='libstrace_a-ipc_msgctl.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-ipc_msgctl.obj `if test -f 'ipc_msgctl.c'; then $(CYGPATH_W) 'ipc_msgctl.c'; else $(CYGPATH_W) '$(srcdir)/ipc_msgctl.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-ipc_msgctl.obj `if test -f 'ipc_msgctl.c'; then $(CYGPATH_W) 'ipc_msgctl.c'; else $(CYGPATH_W) '$(srcdir)/ipc_msgctl.c'; fi`
 
-strace-ipc_sem.o: ipc_sem.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-ipc_sem.o -MD -MP -MF $(DEPDIR)/strace-ipc_sem.Tpo -c -o strace-ipc_sem.o `test -f 'ipc_sem.c' || echo '$(srcdir)/'`ipc_sem.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-ipc_sem.Tpo $(DEPDIR)/strace-ipc_sem.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ipc_sem.c' object='strace-ipc_sem.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-ipc_sem.o: ipc_sem.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-ipc_sem.o -MD -MP -MF $(DEPDIR)/libstrace_a-ipc_sem.Tpo -c -o libstrace_a-ipc_sem.o `test -f 'ipc_sem.c' || echo '$(srcdir)/'`ipc_sem.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-ipc_sem.Tpo $(DEPDIR)/libstrace_a-ipc_sem.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ipc_sem.c' object='libstrace_a-ipc_sem.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-ipc_sem.o `test -f 'ipc_sem.c' || echo '$(srcdir)/'`ipc_sem.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-ipc_sem.o `test -f 'ipc_sem.c' || echo '$(srcdir)/'`ipc_sem.c
 
-strace-ipc_sem.obj: ipc_sem.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-ipc_sem.obj -MD -MP -MF $(DEPDIR)/strace-ipc_sem.Tpo -c -o strace-ipc_sem.obj `if test -f 'ipc_sem.c'; then $(CYGPATH_W) 'ipc_sem.c'; else $(CYGPATH_W) '$(srcdir)/ipc_sem.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-ipc_sem.Tpo $(DEPDIR)/strace-ipc_sem.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ipc_sem.c' object='strace-ipc_sem.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-ipc_sem.obj: ipc_sem.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-ipc_sem.obj -MD -MP -MF $(DEPDIR)/libstrace_a-ipc_sem.Tpo -c -o libstrace_a-ipc_sem.obj `if test -f 'ipc_sem.c'; then $(CYGPATH_W) 'ipc_sem.c'; else $(CYGPATH_W) '$(srcdir)/ipc_sem.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-ipc_sem.Tpo $(DEPDIR)/libstrace_a-ipc_sem.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ipc_sem.c' object='libstrace_a-ipc_sem.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-ipc_sem.obj `if test -f 'ipc_sem.c'; then $(CYGPATH_W) 'ipc_sem.c'; else $(CYGPATH_W) '$(srcdir)/ipc_sem.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-ipc_sem.obj `if test -f 'ipc_sem.c'; then $(CYGPATH_W) 'ipc_sem.c'; else $(CYGPATH_W) '$(srcdir)/ipc_sem.c'; fi`
 
-strace-ipc_shm.o: ipc_shm.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-ipc_shm.o -MD -MP -MF $(DEPDIR)/strace-ipc_shm.Tpo -c -o strace-ipc_shm.o `test -f 'ipc_shm.c' || echo '$(srcdir)/'`ipc_shm.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-ipc_shm.Tpo $(DEPDIR)/strace-ipc_shm.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ipc_shm.c' object='strace-ipc_shm.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-ipc_semctl.o: ipc_semctl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-ipc_semctl.o -MD -MP -MF $(DEPDIR)/libstrace_a-ipc_semctl.Tpo -c -o libstrace_a-ipc_semctl.o `test -f 'ipc_semctl.c' || echo '$(srcdir)/'`ipc_semctl.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-ipc_semctl.Tpo $(DEPDIR)/libstrace_a-ipc_semctl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ipc_semctl.c' object='libstrace_a-ipc_semctl.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-ipc_shm.o `test -f 'ipc_shm.c' || echo '$(srcdir)/'`ipc_shm.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-ipc_semctl.o `test -f 'ipc_semctl.c' || echo '$(srcdir)/'`ipc_semctl.c
 
-strace-ipc_shm.obj: ipc_shm.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-ipc_shm.obj -MD -MP -MF $(DEPDIR)/strace-ipc_shm.Tpo -c -o strace-ipc_shm.obj `if test -f 'ipc_shm.c'; then $(CYGPATH_W) 'ipc_shm.c'; else $(CYGPATH_W) '$(srcdir)/ipc_shm.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-ipc_shm.Tpo $(DEPDIR)/strace-ipc_shm.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ipc_shm.c' object='strace-ipc_shm.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-ipc_semctl.obj: ipc_semctl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-ipc_semctl.obj -MD -MP -MF $(DEPDIR)/libstrace_a-ipc_semctl.Tpo -c -o libstrace_a-ipc_semctl.obj `if test -f 'ipc_semctl.c'; then $(CYGPATH_W) 'ipc_semctl.c'; else $(CYGPATH_W) '$(srcdir)/ipc_semctl.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-ipc_semctl.Tpo $(DEPDIR)/libstrace_a-ipc_semctl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ipc_semctl.c' object='libstrace_a-ipc_semctl.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-ipc_shm.obj `if test -f 'ipc_shm.c'; then $(CYGPATH_W) 'ipc_shm.c'; else $(CYGPATH_W) '$(srcdir)/ipc_shm.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-ipc_semctl.obj `if test -f 'ipc_semctl.c'; then $(CYGPATH_W) 'ipc_semctl.c'; else $(CYGPATH_W) '$(srcdir)/ipc_semctl.c'; fi`
 
-strace-ipc_shmctl.o: ipc_shmctl.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-ipc_shmctl.o -MD -MP -MF $(DEPDIR)/strace-ipc_shmctl.Tpo -c -o strace-ipc_shmctl.o `test -f 'ipc_shmctl.c' || echo '$(srcdir)/'`ipc_shmctl.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-ipc_shmctl.Tpo $(DEPDIR)/strace-ipc_shmctl.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ipc_shmctl.c' object='strace-ipc_shmctl.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-ipc_shm.o: ipc_shm.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-ipc_shm.o -MD -MP -MF $(DEPDIR)/libstrace_a-ipc_shm.Tpo -c -o libstrace_a-ipc_shm.o `test -f 'ipc_shm.c' || echo '$(srcdir)/'`ipc_shm.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-ipc_shm.Tpo $(DEPDIR)/libstrace_a-ipc_shm.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ipc_shm.c' object='libstrace_a-ipc_shm.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-ipc_shmctl.o `test -f 'ipc_shmctl.c' || echo '$(srcdir)/'`ipc_shmctl.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-ipc_shm.o `test -f 'ipc_shm.c' || echo '$(srcdir)/'`ipc_shm.c
 
-strace-ipc_shmctl.obj: ipc_shmctl.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-ipc_shmctl.obj -MD -MP -MF $(DEPDIR)/strace-ipc_shmctl.Tpo -c -o strace-ipc_shmctl.obj `if test -f 'ipc_shmctl.c'; then $(CYGPATH_W) 'ipc_shmctl.c'; else $(CYGPATH_W) '$(srcdir)/ipc_shmctl.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-ipc_shmctl.Tpo $(DEPDIR)/strace-ipc_shmctl.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ipc_shmctl.c' object='strace-ipc_shmctl.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-ipc_shm.obj: ipc_shm.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-ipc_shm.obj -MD -MP -MF $(DEPDIR)/libstrace_a-ipc_shm.Tpo -c -o libstrace_a-ipc_shm.obj `if test -f 'ipc_shm.c'; then $(CYGPATH_W) 'ipc_shm.c'; else $(CYGPATH_W) '$(srcdir)/ipc_shm.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-ipc_shm.Tpo $(DEPDIR)/libstrace_a-ipc_shm.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ipc_shm.c' object='libstrace_a-ipc_shm.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-ipc_shmctl.obj `if test -f 'ipc_shmctl.c'; then $(CYGPATH_W) 'ipc_shmctl.c'; else $(CYGPATH_W) '$(srcdir)/ipc_shmctl.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-ipc_shm.obj `if test -f 'ipc_shm.c'; then $(CYGPATH_W) 'ipc_shm.c'; else $(CYGPATH_W) '$(srcdir)/ipc_shm.c'; fi`
 
-strace-kcmp.o: kcmp.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-kcmp.o -MD -MP -MF $(DEPDIR)/strace-kcmp.Tpo -c -o strace-kcmp.o `test -f 'kcmp.c' || echo '$(srcdir)/'`kcmp.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-kcmp.Tpo $(DEPDIR)/strace-kcmp.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='kcmp.c' object='strace-kcmp.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-ipc_shmctl.o: ipc_shmctl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-ipc_shmctl.o -MD -MP -MF $(DEPDIR)/libstrace_a-ipc_shmctl.Tpo -c -o libstrace_a-ipc_shmctl.o `test -f 'ipc_shmctl.c' || echo '$(srcdir)/'`ipc_shmctl.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-ipc_shmctl.Tpo $(DEPDIR)/libstrace_a-ipc_shmctl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ipc_shmctl.c' object='libstrace_a-ipc_shmctl.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-kcmp.o `test -f 'kcmp.c' || echo '$(srcdir)/'`kcmp.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-ipc_shmctl.o `test -f 'ipc_shmctl.c' || echo '$(srcdir)/'`ipc_shmctl.c
 
-strace-kcmp.obj: kcmp.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-kcmp.obj -MD -MP -MF $(DEPDIR)/strace-kcmp.Tpo -c -o strace-kcmp.obj `if test -f 'kcmp.c'; then $(CYGPATH_W) 'kcmp.c'; else $(CYGPATH_W) '$(srcdir)/kcmp.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-kcmp.Tpo $(DEPDIR)/strace-kcmp.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='kcmp.c' object='strace-kcmp.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-ipc_shmctl.obj: ipc_shmctl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-ipc_shmctl.obj -MD -MP -MF $(DEPDIR)/libstrace_a-ipc_shmctl.Tpo -c -o libstrace_a-ipc_shmctl.obj `if test -f 'ipc_shmctl.c'; then $(CYGPATH_W) 'ipc_shmctl.c'; else $(CYGPATH_W) '$(srcdir)/ipc_shmctl.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-ipc_shmctl.Tpo $(DEPDIR)/libstrace_a-ipc_shmctl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ipc_shmctl.c' object='libstrace_a-ipc_shmctl.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-kcmp.obj `if test -f 'kcmp.c'; then $(CYGPATH_W) 'kcmp.c'; else $(CYGPATH_W) '$(srcdir)/kcmp.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-ipc_shmctl.obj `if test -f 'ipc_shmctl.c'; then $(CYGPATH_W) 'ipc_shmctl.c'; else $(CYGPATH_W) '$(srcdir)/ipc_shmctl.c'; fi`
 
-strace-kexec.o: kexec.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-kexec.o -MD -MP -MF $(DEPDIR)/strace-kexec.Tpo -c -o strace-kexec.o `test -f 'kexec.c' || echo '$(srcdir)/'`kexec.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-kexec.Tpo $(DEPDIR)/strace-kexec.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='kexec.c' object='strace-kexec.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-kcmp.o: kcmp.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-kcmp.o -MD -MP -MF $(DEPDIR)/libstrace_a-kcmp.Tpo -c -o libstrace_a-kcmp.o `test -f 'kcmp.c' || echo '$(srcdir)/'`kcmp.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-kcmp.Tpo $(DEPDIR)/libstrace_a-kcmp.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='kcmp.c' object='libstrace_a-kcmp.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-kexec.o `test -f 'kexec.c' || echo '$(srcdir)/'`kexec.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-kcmp.o `test -f 'kcmp.c' || echo '$(srcdir)/'`kcmp.c
 
-strace-kexec.obj: kexec.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-kexec.obj -MD -MP -MF $(DEPDIR)/strace-kexec.Tpo -c -o strace-kexec.obj `if test -f 'kexec.c'; then $(CYGPATH_W) 'kexec.c'; else $(CYGPATH_W) '$(srcdir)/kexec.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-kexec.Tpo $(DEPDIR)/strace-kexec.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='kexec.c' object='strace-kexec.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-kcmp.obj: kcmp.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-kcmp.obj -MD -MP -MF $(DEPDIR)/libstrace_a-kcmp.Tpo -c -o libstrace_a-kcmp.obj `if test -f 'kcmp.c'; then $(CYGPATH_W) 'kcmp.c'; else $(CYGPATH_W) '$(srcdir)/kcmp.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-kcmp.Tpo $(DEPDIR)/libstrace_a-kcmp.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='kcmp.c' object='libstrace_a-kcmp.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-kexec.obj `if test -f 'kexec.c'; then $(CYGPATH_W) 'kexec.c'; else $(CYGPATH_W) '$(srcdir)/kexec.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-kcmp.obj `if test -f 'kcmp.c'; then $(CYGPATH_W) 'kcmp.c'; else $(CYGPATH_W) '$(srcdir)/kcmp.c'; fi`
 
-strace-keyctl.o: keyctl.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-keyctl.o -MD -MP -MF $(DEPDIR)/strace-keyctl.Tpo -c -o strace-keyctl.o `test -f 'keyctl.c' || echo '$(srcdir)/'`keyctl.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-keyctl.Tpo $(DEPDIR)/strace-keyctl.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='keyctl.c' object='strace-keyctl.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-kexec.o: kexec.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-kexec.o -MD -MP -MF $(DEPDIR)/libstrace_a-kexec.Tpo -c -o libstrace_a-kexec.o `test -f 'kexec.c' || echo '$(srcdir)/'`kexec.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-kexec.Tpo $(DEPDIR)/libstrace_a-kexec.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='kexec.c' object='libstrace_a-kexec.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-keyctl.o `test -f 'keyctl.c' || echo '$(srcdir)/'`keyctl.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-kexec.o `test -f 'kexec.c' || echo '$(srcdir)/'`kexec.c
 
-strace-keyctl.obj: keyctl.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-keyctl.obj -MD -MP -MF $(DEPDIR)/strace-keyctl.Tpo -c -o strace-keyctl.obj `if test -f 'keyctl.c'; then $(CYGPATH_W) 'keyctl.c'; else $(CYGPATH_W) '$(srcdir)/keyctl.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-keyctl.Tpo $(DEPDIR)/strace-keyctl.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='keyctl.c' object='strace-keyctl.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-kexec.obj: kexec.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-kexec.obj -MD -MP -MF $(DEPDIR)/libstrace_a-kexec.Tpo -c -o libstrace_a-kexec.obj `if test -f 'kexec.c'; then $(CYGPATH_W) 'kexec.c'; else $(CYGPATH_W) '$(srcdir)/kexec.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-kexec.Tpo $(DEPDIR)/libstrace_a-kexec.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='kexec.c' object='libstrace_a-kexec.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-keyctl.obj `if test -f 'keyctl.c'; then $(CYGPATH_W) 'keyctl.c'; else $(CYGPATH_W) '$(srcdir)/keyctl.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-kexec.obj `if test -f 'kexec.c'; then $(CYGPATH_W) 'kexec.c'; else $(CYGPATH_W) '$(srcdir)/kexec.c'; fi`
 
-strace-kvm.o: kvm.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-kvm.o -MD -MP -MF $(DEPDIR)/strace-kvm.Tpo -c -o strace-kvm.o `test -f 'kvm.c' || echo '$(srcdir)/'`kvm.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-kvm.Tpo $(DEPDIR)/strace-kvm.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='kvm.c' object='strace-kvm.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-keyctl.o: keyctl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-keyctl.o -MD -MP -MF $(DEPDIR)/libstrace_a-keyctl.Tpo -c -o libstrace_a-keyctl.o `test -f 'keyctl.c' || echo '$(srcdir)/'`keyctl.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-keyctl.Tpo $(DEPDIR)/libstrace_a-keyctl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='keyctl.c' object='libstrace_a-keyctl.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-kvm.o `test -f 'kvm.c' || echo '$(srcdir)/'`kvm.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-keyctl.o `test -f 'keyctl.c' || echo '$(srcdir)/'`keyctl.c
 
-strace-kvm.obj: kvm.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-kvm.obj -MD -MP -MF $(DEPDIR)/strace-kvm.Tpo -c -o strace-kvm.obj `if test -f 'kvm.c'; then $(CYGPATH_W) 'kvm.c'; else $(CYGPATH_W) '$(srcdir)/kvm.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-kvm.Tpo $(DEPDIR)/strace-kvm.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='kvm.c' object='strace-kvm.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-keyctl.obj: keyctl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-keyctl.obj -MD -MP -MF $(DEPDIR)/libstrace_a-keyctl.Tpo -c -o libstrace_a-keyctl.obj `if test -f 'keyctl.c'; then $(CYGPATH_W) 'keyctl.c'; else $(CYGPATH_W) '$(srcdir)/keyctl.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-keyctl.Tpo $(DEPDIR)/libstrace_a-keyctl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='keyctl.c' object='libstrace_a-keyctl.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-kvm.obj `if test -f 'kvm.c'; then $(CYGPATH_W) 'kvm.c'; else $(CYGPATH_W) '$(srcdir)/kvm.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-keyctl.obj `if test -f 'keyctl.c'; then $(CYGPATH_W) 'keyctl.c'; else $(CYGPATH_W) '$(srcdir)/keyctl.c'; fi`
 
-strace-ldt.o: ldt.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-ldt.o -MD -MP -MF $(DEPDIR)/strace-ldt.Tpo -c -o strace-ldt.o `test -f 'ldt.c' || echo '$(srcdir)/'`ldt.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-ldt.Tpo $(DEPDIR)/strace-ldt.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ldt.c' object='strace-ldt.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-kvm.o: kvm.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-kvm.o -MD -MP -MF $(DEPDIR)/libstrace_a-kvm.Tpo -c -o libstrace_a-kvm.o `test -f 'kvm.c' || echo '$(srcdir)/'`kvm.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-kvm.Tpo $(DEPDIR)/libstrace_a-kvm.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='kvm.c' object='libstrace_a-kvm.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-ldt.o `test -f 'ldt.c' || echo '$(srcdir)/'`ldt.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-kvm.o `test -f 'kvm.c' || echo '$(srcdir)/'`kvm.c
 
-strace-ldt.obj: ldt.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-ldt.obj -MD -MP -MF $(DEPDIR)/strace-ldt.Tpo -c -o strace-ldt.obj `if test -f 'ldt.c'; then $(CYGPATH_W) 'ldt.c'; else $(CYGPATH_W) '$(srcdir)/ldt.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-ldt.Tpo $(DEPDIR)/strace-ldt.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ldt.c' object='strace-ldt.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-kvm.obj: kvm.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-kvm.obj -MD -MP -MF $(DEPDIR)/libstrace_a-kvm.Tpo -c -o libstrace_a-kvm.obj `if test -f 'kvm.c'; then $(CYGPATH_W) 'kvm.c'; else $(CYGPATH_W) '$(srcdir)/kvm.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-kvm.Tpo $(DEPDIR)/libstrace_a-kvm.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='kvm.c' object='libstrace_a-kvm.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-ldt.obj `if test -f 'ldt.c'; then $(CYGPATH_W) 'ldt.c'; else $(CYGPATH_W) '$(srcdir)/ldt.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-kvm.obj `if test -f 'kvm.c'; then $(CYGPATH_W) 'kvm.c'; else $(CYGPATH_W) '$(srcdir)/kvm.c'; fi`
 
-strace-link.o: link.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-link.o -MD -MP -MF $(DEPDIR)/strace-link.Tpo -c -o strace-link.o `test -f 'link.c' || echo '$(srcdir)/'`link.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-link.Tpo $(DEPDIR)/strace-link.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='link.c' object='strace-link.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-ldt.o: ldt.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-ldt.o -MD -MP -MF $(DEPDIR)/libstrace_a-ldt.Tpo -c -o libstrace_a-ldt.o `test -f 'ldt.c' || echo '$(srcdir)/'`ldt.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-ldt.Tpo $(DEPDIR)/libstrace_a-ldt.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ldt.c' object='libstrace_a-ldt.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-link.o `test -f 'link.c' || echo '$(srcdir)/'`link.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-ldt.o `test -f 'ldt.c' || echo '$(srcdir)/'`ldt.c
 
-strace-link.obj: link.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-link.obj -MD -MP -MF $(DEPDIR)/strace-link.Tpo -c -o strace-link.obj `if test -f 'link.c'; then $(CYGPATH_W) 'link.c'; else $(CYGPATH_W) '$(srcdir)/link.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-link.Tpo $(DEPDIR)/strace-link.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='link.c' object='strace-link.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-ldt.obj: ldt.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-ldt.obj -MD -MP -MF $(DEPDIR)/libstrace_a-ldt.Tpo -c -o libstrace_a-ldt.obj `if test -f 'ldt.c'; then $(CYGPATH_W) 'ldt.c'; else $(CYGPATH_W) '$(srcdir)/ldt.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-ldt.Tpo $(DEPDIR)/libstrace_a-ldt.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ldt.c' object='libstrace_a-ldt.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-link.obj `if test -f 'link.c'; then $(CYGPATH_W) 'link.c'; else $(CYGPATH_W) '$(srcdir)/link.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-ldt.obj `if test -f 'ldt.c'; then $(CYGPATH_W) 'ldt.c'; else $(CYGPATH_W) '$(srcdir)/ldt.c'; fi`
 
-strace-listen.o: listen.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-listen.o -MD -MP -MF $(DEPDIR)/strace-listen.Tpo -c -o strace-listen.o `test -f 'listen.c' || echo '$(srcdir)/'`listen.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-listen.Tpo $(DEPDIR)/strace-listen.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='listen.c' object='strace-listen.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-link.o: link.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-link.o -MD -MP -MF $(DEPDIR)/libstrace_a-link.Tpo -c -o libstrace_a-link.o `test -f 'link.c' || echo '$(srcdir)/'`link.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-link.Tpo $(DEPDIR)/libstrace_a-link.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='link.c' object='libstrace_a-link.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-listen.o `test -f 'listen.c' || echo '$(srcdir)/'`listen.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-link.o `test -f 'link.c' || echo '$(srcdir)/'`link.c
 
-strace-listen.obj: listen.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-listen.obj -MD -MP -MF $(DEPDIR)/strace-listen.Tpo -c -o strace-listen.obj `if test -f 'listen.c'; then $(CYGPATH_W) 'listen.c'; else $(CYGPATH_W) '$(srcdir)/listen.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-listen.Tpo $(DEPDIR)/strace-listen.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='listen.c' object='strace-listen.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-link.obj: link.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-link.obj -MD -MP -MF $(DEPDIR)/libstrace_a-link.Tpo -c -o libstrace_a-link.obj `if test -f 'link.c'; then $(CYGPATH_W) 'link.c'; else $(CYGPATH_W) '$(srcdir)/link.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-link.Tpo $(DEPDIR)/libstrace_a-link.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='link.c' object='libstrace_a-link.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-listen.obj `if test -f 'listen.c'; then $(CYGPATH_W) 'listen.c'; else $(CYGPATH_W) '$(srcdir)/listen.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-link.obj `if test -f 'link.c'; then $(CYGPATH_W) 'link.c'; else $(CYGPATH_W) '$(srcdir)/link.c'; fi`
 
-strace-lookup_dcookie.o: lookup_dcookie.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-lookup_dcookie.o -MD -MP -MF $(DEPDIR)/strace-lookup_dcookie.Tpo -c -o strace-lookup_dcookie.o `test -f 'lookup_dcookie.c' || echo '$(srcdir)/'`lookup_dcookie.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-lookup_dcookie.Tpo $(DEPDIR)/strace-lookup_dcookie.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lookup_dcookie.c' object='strace-lookup_dcookie.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-listen.o: listen.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-listen.o -MD -MP -MF $(DEPDIR)/libstrace_a-listen.Tpo -c -o libstrace_a-listen.o `test -f 'listen.c' || echo '$(srcdir)/'`listen.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-listen.Tpo $(DEPDIR)/libstrace_a-listen.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='listen.c' object='libstrace_a-listen.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-lookup_dcookie.o `test -f 'lookup_dcookie.c' || echo '$(srcdir)/'`lookup_dcookie.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-listen.o `test -f 'listen.c' || echo '$(srcdir)/'`listen.c
 
-strace-lookup_dcookie.obj: lookup_dcookie.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-lookup_dcookie.obj -MD -MP -MF $(DEPDIR)/strace-lookup_dcookie.Tpo -c -o strace-lookup_dcookie.obj `if test -f 'lookup_dcookie.c'; then $(CYGPATH_W) 'lookup_dcookie.c'; else $(CYGPATH_W) '$(srcdir)/lookup_dcookie.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-lookup_dcookie.Tpo $(DEPDIR)/strace-lookup_dcookie.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lookup_dcookie.c' object='strace-lookup_dcookie.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-listen.obj: listen.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-listen.obj -MD -MP -MF $(DEPDIR)/libstrace_a-listen.Tpo -c -o libstrace_a-listen.obj `if test -f 'listen.c'; then $(CYGPATH_W) 'listen.c'; else $(CYGPATH_W) '$(srcdir)/listen.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-listen.Tpo $(DEPDIR)/libstrace_a-listen.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='listen.c' object='libstrace_a-listen.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-lookup_dcookie.obj `if test -f 'lookup_dcookie.c'; then $(CYGPATH_W) 'lookup_dcookie.c'; else $(CYGPATH_W) '$(srcdir)/lookup_dcookie.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-listen.obj `if test -f 'listen.c'; then $(CYGPATH_W) 'listen.c'; else $(CYGPATH_W) '$(srcdir)/listen.c'; fi`
 
-strace-loop.o: loop.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-loop.o -MD -MP -MF $(DEPDIR)/strace-loop.Tpo -c -o strace-loop.o `test -f 'loop.c' || echo '$(srcdir)/'`loop.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-loop.Tpo $(DEPDIR)/strace-loop.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='loop.c' object='strace-loop.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-lookup_dcookie.o: lookup_dcookie.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-lookup_dcookie.o -MD -MP -MF $(DEPDIR)/libstrace_a-lookup_dcookie.Tpo -c -o libstrace_a-lookup_dcookie.o `test -f 'lookup_dcookie.c' || echo '$(srcdir)/'`lookup_dcookie.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-lookup_dcookie.Tpo $(DEPDIR)/libstrace_a-lookup_dcookie.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lookup_dcookie.c' object='libstrace_a-lookup_dcookie.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-loop.o `test -f 'loop.c' || echo '$(srcdir)/'`loop.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-lookup_dcookie.o `test -f 'lookup_dcookie.c' || echo '$(srcdir)/'`lookup_dcookie.c
 
-strace-loop.obj: loop.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-loop.obj -MD -MP -MF $(DEPDIR)/strace-loop.Tpo -c -o strace-loop.obj `if test -f 'loop.c'; then $(CYGPATH_W) 'loop.c'; else $(CYGPATH_W) '$(srcdir)/loop.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-loop.Tpo $(DEPDIR)/strace-loop.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='loop.c' object='strace-loop.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-lookup_dcookie.obj: lookup_dcookie.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-lookup_dcookie.obj -MD -MP -MF $(DEPDIR)/libstrace_a-lookup_dcookie.Tpo -c -o libstrace_a-lookup_dcookie.obj `if test -f 'lookup_dcookie.c'; then $(CYGPATH_W) 'lookup_dcookie.c'; else $(CYGPATH_W) '$(srcdir)/lookup_dcookie.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-lookup_dcookie.Tpo $(DEPDIR)/libstrace_a-lookup_dcookie.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lookup_dcookie.c' object='libstrace_a-lookup_dcookie.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-loop.obj `if test -f 'loop.c'; then $(CYGPATH_W) 'loop.c'; else $(CYGPATH_W) '$(srcdir)/loop.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-lookup_dcookie.obj `if test -f 'lookup_dcookie.c'; then $(CYGPATH_W) 'lookup_dcookie.c'; else $(CYGPATH_W) '$(srcdir)/lookup_dcookie.c'; fi`
 
-strace-lseek.o: lseek.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-lseek.o -MD -MP -MF $(DEPDIR)/strace-lseek.Tpo -c -o strace-lseek.o `test -f 'lseek.c' || echo '$(srcdir)/'`lseek.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-lseek.Tpo $(DEPDIR)/strace-lseek.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lseek.c' object='strace-lseek.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-loop.o: loop.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-loop.o -MD -MP -MF $(DEPDIR)/libstrace_a-loop.Tpo -c -o libstrace_a-loop.o `test -f 'loop.c' || echo '$(srcdir)/'`loop.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-loop.Tpo $(DEPDIR)/libstrace_a-loop.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='loop.c' object='libstrace_a-loop.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-lseek.o `test -f 'lseek.c' || echo '$(srcdir)/'`lseek.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-loop.o `test -f 'loop.c' || echo '$(srcdir)/'`loop.c
 
-strace-lseek.obj: lseek.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-lseek.obj -MD -MP -MF $(DEPDIR)/strace-lseek.Tpo -c -o strace-lseek.obj `if test -f 'lseek.c'; then $(CYGPATH_W) 'lseek.c'; else $(CYGPATH_W) '$(srcdir)/lseek.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-lseek.Tpo $(DEPDIR)/strace-lseek.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lseek.c' object='strace-lseek.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-loop.obj: loop.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-loop.obj -MD -MP -MF $(DEPDIR)/libstrace_a-loop.Tpo -c -o libstrace_a-loop.obj `if test -f 'loop.c'; then $(CYGPATH_W) 'loop.c'; else $(CYGPATH_W) '$(srcdir)/loop.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-loop.Tpo $(DEPDIR)/libstrace_a-loop.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='loop.c' object='libstrace_a-loop.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-lseek.obj `if test -f 'lseek.c'; then $(CYGPATH_W) 'lseek.c'; else $(CYGPATH_W) '$(srcdir)/lseek.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-loop.obj `if test -f 'loop.c'; then $(CYGPATH_W) 'loop.c'; else $(CYGPATH_W) '$(srcdir)/loop.c'; fi`
 
-strace-mem.o: mem.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-mem.o -MD -MP -MF $(DEPDIR)/strace-mem.Tpo -c -o strace-mem.o `test -f 'mem.c' || echo '$(srcdir)/'`mem.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-mem.Tpo $(DEPDIR)/strace-mem.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='mem.c' object='strace-mem.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-lseek.o: lseek.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-lseek.o -MD -MP -MF $(DEPDIR)/libstrace_a-lseek.Tpo -c -o libstrace_a-lseek.o `test -f 'lseek.c' || echo '$(srcdir)/'`lseek.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-lseek.Tpo $(DEPDIR)/libstrace_a-lseek.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lseek.c' object='libstrace_a-lseek.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-mem.o `test -f 'mem.c' || echo '$(srcdir)/'`mem.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-lseek.o `test -f 'lseek.c' || echo '$(srcdir)/'`lseek.c
 
-strace-mem.obj: mem.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-mem.obj -MD -MP -MF $(DEPDIR)/strace-mem.Tpo -c -o strace-mem.obj `if test -f 'mem.c'; then $(CYGPATH_W) 'mem.c'; else $(CYGPATH_W) '$(srcdir)/mem.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-mem.Tpo $(DEPDIR)/strace-mem.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='mem.c' object='strace-mem.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-lseek.obj: lseek.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-lseek.obj -MD -MP -MF $(DEPDIR)/libstrace_a-lseek.Tpo -c -o libstrace_a-lseek.obj `if test -f 'lseek.c'; then $(CYGPATH_W) 'lseek.c'; else $(CYGPATH_W) '$(srcdir)/lseek.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-lseek.Tpo $(DEPDIR)/libstrace_a-lseek.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lseek.c' object='libstrace_a-lseek.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-mem.obj `if test -f 'mem.c'; then $(CYGPATH_W) 'mem.c'; else $(CYGPATH_W) '$(srcdir)/mem.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-lseek.obj `if test -f 'lseek.c'; then $(CYGPATH_W) 'lseek.c'; else $(CYGPATH_W) '$(srcdir)/lseek.c'; fi`
 
-strace-membarrier.o: membarrier.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-membarrier.o -MD -MP -MF $(DEPDIR)/strace-membarrier.Tpo -c -o strace-membarrier.o `test -f 'membarrier.c' || echo '$(srcdir)/'`membarrier.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-membarrier.Tpo $(DEPDIR)/strace-membarrier.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='membarrier.c' object='strace-membarrier.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-mem.o: mem.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-mem.o -MD -MP -MF $(DEPDIR)/libstrace_a-mem.Tpo -c -o libstrace_a-mem.o `test -f 'mem.c' || echo '$(srcdir)/'`mem.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-mem.Tpo $(DEPDIR)/libstrace_a-mem.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='mem.c' object='libstrace_a-mem.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-membarrier.o `test -f 'membarrier.c' || echo '$(srcdir)/'`membarrier.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-mem.o `test -f 'mem.c' || echo '$(srcdir)/'`mem.c
 
-strace-membarrier.obj: membarrier.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-membarrier.obj -MD -MP -MF $(DEPDIR)/strace-membarrier.Tpo -c -o strace-membarrier.obj `if test -f 'membarrier.c'; then $(CYGPATH_W) 'membarrier.c'; else $(CYGPATH_W) '$(srcdir)/membarrier.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-membarrier.Tpo $(DEPDIR)/strace-membarrier.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='membarrier.c' object='strace-membarrier.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-mem.obj: mem.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-mem.obj -MD -MP -MF $(DEPDIR)/libstrace_a-mem.Tpo -c -o libstrace_a-mem.obj `if test -f 'mem.c'; then $(CYGPATH_W) 'mem.c'; else $(CYGPATH_W) '$(srcdir)/mem.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-mem.Tpo $(DEPDIR)/libstrace_a-mem.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='mem.c' object='libstrace_a-mem.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-membarrier.obj `if test -f 'membarrier.c'; then $(CYGPATH_W) 'membarrier.c'; else $(CYGPATH_W) '$(srcdir)/membarrier.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-mem.obj `if test -f 'mem.c'; then $(CYGPATH_W) 'mem.c'; else $(CYGPATH_W) '$(srcdir)/mem.c'; fi`
 
-strace-memfd_create.o: memfd_create.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-memfd_create.o -MD -MP -MF $(DEPDIR)/strace-memfd_create.Tpo -c -o strace-memfd_create.o `test -f 'memfd_create.c' || echo '$(srcdir)/'`memfd_create.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-memfd_create.Tpo $(DEPDIR)/strace-memfd_create.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='memfd_create.c' object='strace-memfd_create.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-membarrier.o: membarrier.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-membarrier.o -MD -MP -MF $(DEPDIR)/libstrace_a-membarrier.Tpo -c -o libstrace_a-membarrier.o `test -f 'membarrier.c' || echo '$(srcdir)/'`membarrier.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-membarrier.Tpo $(DEPDIR)/libstrace_a-membarrier.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='membarrier.c' object='libstrace_a-membarrier.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-memfd_create.o `test -f 'memfd_create.c' || echo '$(srcdir)/'`memfd_create.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-membarrier.o `test -f 'membarrier.c' || echo '$(srcdir)/'`membarrier.c
 
-strace-memfd_create.obj: memfd_create.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-memfd_create.obj -MD -MP -MF $(DEPDIR)/strace-memfd_create.Tpo -c -o strace-memfd_create.obj `if test -f 'memfd_create.c'; then $(CYGPATH_W) 'memfd_create.c'; else $(CYGPATH_W) '$(srcdir)/memfd_create.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-memfd_create.Tpo $(DEPDIR)/strace-memfd_create.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='memfd_create.c' object='strace-memfd_create.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-membarrier.obj: membarrier.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-membarrier.obj -MD -MP -MF $(DEPDIR)/libstrace_a-membarrier.Tpo -c -o libstrace_a-membarrier.obj `if test -f 'membarrier.c'; then $(CYGPATH_W) 'membarrier.c'; else $(CYGPATH_W) '$(srcdir)/membarrier.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-membarrier.Tpo $(DEPDIR)/libstrace_a-membarrier.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='membarrier.c' object='libstrace_a-membarrier.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-memfd_create.obj `if test -f 'memfd_create.c'; then $(CYGPATH_W) 'memfd_create.c'; else $(CYGPATH_W) '$(srcdir)/memfd_create.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-membarrier.obj `if test -f 'membarrier.c'; then $(CYGPATH_W) 'membarrier.c'; else $(CYGPATH_W) '$(srcdir)/membarrier.c'; fi`
 
-strace-mknod.o: mknod.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-mknod.o -MD -MP -MF $(DEPDIR)/strace-mknod.Tpo -c -o strace-mknod.o `test -f 'mknod.c' || echo '$(srcdir)/'`mknod.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-mknod.Tpo $(DEPDIR)/strace-mknod.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='mknod.c' object='strace-mknod.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-memfd_create.o: memfd_create.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-memfd_create.o -MD -MP -MF $(DEPDIR)/libstrace_a-memfd_create.Tpo -c -o libstrace_a-memfd_create.o `test -f 'memfd_create.c' || echo '$(srcdir)/'`memfd_create.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-memfd_create.Tpo $(DEPDIR)/libstrace_a-memfd_create.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='memfd_create.c' object='libstrace_a-memfd_create.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-mknod.o `test -f 'mknod.c' || echo '$(srcdir)/'`mknod.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-memfd_create.o `test -f 'memfd_create.c' || echo '$(srcdir)/'`memfd_create.c
 
-strace-mknod.obj: mknod.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-mknod.obj -MD -MP -MF $(DEPDIR)/strace-mknod.Tpo -c -o strace-mknod.obj `if test -f 'mknod.c'; then $(CYGPATH_W) 'mknod.c'; else $(CYGPATH_W) '$(srcdir)/mknod.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-mknod.Tpo $(DEPDIR)/strace-mknod.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='mknod.c' object='strace-mknod.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-memfd_create.obj: memfd_create.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-memfd_create.obj -MD -MP -MF $(DEPDIR)/libstrace_a-memfd_create.Tpo -c -o libstrace_a-memfd_create.obj `if test -f 'memfd_create.c'; then $(CYGPATH_W) 'memfd_create.c'; else $(CYGPATH_W) '$(srcdir)/memfd_create.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-memfd_create.Tpo $(DEPDIR)/libstrace_a-memfd_create.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='memfd_create.c' object='libstrace_a-memfd_create.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-mknod.obj `if test -f 'mknod.c'; then $(CYGPATH_W) 'mknod.c'; else $(CYGPATH_W) '$(srcdir)/mknod.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-memfd_create.obj `if test -f 'memfd_create.c'; then $(CYGPATH_W) 'memfd_create.c'; else $(CYGPATH_W) '$(srcdir)/memfd_create.c'; fi`
 
-strace-mmap_notify.o: mmap_notify.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-mmap_notify.o -MD -MP -MF $(DEPDIR)/strace-mmap_notify.Tpo -c -o strace-mmap_notify.o `test -f 'mmap_notify.c' || echo '$(srcdir)/'`mmap_notify.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-mmap_notify.Tpo $(DEPDIR)/strace-mmap_notify.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='mmap_notify.c' object='strace-mmap_notify.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-mknod.o: mknod.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-mknod.o -MD -MP -MF $(DEPDIR)/libstrace_a-mknod.Tpo -c -o libstrace_a-mknod.o `test -f 'mknod.c' || echo '$(srcdir)/'`mknod.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-mknod.Tpo $(DEPDIR)/libstrace_a-mknod.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='mknod.c' object='libstrace_a-mknod.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-mmap_notify.o `test -f 'mmap_notify.c' || echo '$(srcdir)/'`mmap_notify.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-mknod.o `test -f 'mknod.c' || echo '$(srcdir)/'`mknod.c
 
-strace-mmap_notify.obj: mmap_notify.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-mmap_notify.obj -MD -MP -MF $(DEPDIR)/strace-mmap_notify.Tpo -c -o strace-mmap_notify.obj `if test -f 'mmap_notify.c'; then $(CYGPATH_W) 'mmap_notify.c'; else $(CYGPATH_W) '$(srcdir)/mmap_notify.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-mmap_notify.Tpo $(DEPDIR)/strace-mmap_notify.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='mmap_notify.c' object='strace-mmap_notify.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-mknod.obj: mknod.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-mknod.obj -MD -MP -MF $(DEPDIR)/libstrace_a-mknod.Tpo -c -o libstrace_a-mknod.obj `if test -f 'mknod.c'; then $(CYGPATH_W) 'mknod.c'; else $(CYGPATH_W) '$(srcdir)/mknod.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-mknod.Tpo $(DEPDIR)/libstrace_a-mknod.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='mknod.c' object='libstrace_a-mknod.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-mmap_notify.obj `if test -f 'mmap_notify.c'; then $(CYGPATH_W) 'mmap_notify.c'; else $(CYGPATH_W) '$(srcdir)/mmap_notify.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-mknod.obj `if test -f 'mknod.c'; then $(CYGPATH_W) 'mknod.c'; else $(CYGPATH_W) '$(srcdir)/mknod.c'; fi`
 
-strace-mmsghdr.o: mmsghdr.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-mmsghdr.o -MD -MP -MF $(DEPDIR)/strace-mmsghdr.Tpo -c -o strace-mmsghdr.o `test -f 'mmsghdr.c' || echo '$(srcdir)/'`mmsghdr.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-mmsghdr.Tpo $(DEPDIR)/strace-mmsghdr.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='mmsghdr.c' object='strace-mmsghdr.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-mmap_cache.o: mmap_cache.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-mmap_cache.o -MD -MP -MF $(DEPDIR)/libstrace_a-mmap_cache.Tpo -c -o libstrace_a-mmap_cache.o `test -f 'mmap_cache.c' || echo '$(srcdir)/'`mmap_cache.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-mmap_cache.Tpo $(DEPDIR)/libstrace_a-mmap_cache.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='mmap_cache.c' object='libstrace_a-mmap_cache.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-mmsghdr.o `test -f 'mmsghdr.c' || echo '$(srcdir)/'`mmsghdr.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-mmap_cache.o `test -f 'mmap_cache.c' || echo '$(srcdir)/'`mmap_cache.c
 
-strace-mmsghdr.obj: mmsghdr.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-mmsghdr.obj -MD -MP -MF $(DEPDIR)/strace-mmsghdr.Tpo -c -o strace-mmsghdr.obj `if test -f 'mmsghdr.c'; then $(CYGPATH_W) 'mmsghdr.c'; else $(CYGPATH_W) '$(srcdir)/mmsghdr.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-mmsghdr.Tpo $(DEPDIR)/strace-mmsghdr.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='mmsghdr.c' object='strace-mmsghdr.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-mmap_cache.obj: mmap_cache.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-mmap_cache.obj -MD -MP -MF $(DEPDIR)/libstrace_a-mmap_cache.Tpo -c -o libstrace_a-mmap_cache.obj `if test -f 'mmap_cache.c'; then $(CYGPATH_W) 'mmap_cache.c'; else $(CYGPATH_W) '$(srcdir)/mmap_cache.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-mmap_cache.Tpo $(DEPDIR)/libstrace_a-mmap_cache.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='mmap_cache.c' object='libstrace_a-mmap_cache.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-mmsghdr.obj `if test -f 'mmsghdr.c'; then $(CYGPATH_W) 'mmsghdr.c'; else $(CYGPATH_W) '$(srcdir)/mmsghdr.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-mmap_cache.obj `if test -f 'mmap_cache.c'; then $(CYGPATH_W) 'mmap_cache.c'; else $(CYGPATH_W) '$(srcdir)/mmap_cache.c'; fi`
 
-strace-mount.o: mount.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-mount.o -MD -MP -MF $(DEPDIR)/strace-mount.Tpo -c -o strace-mount.o `test -f 'mount.c' || echo '$(srcdir)/'`mount.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-mount.Tpo $(DEPDIR)/strace-mount.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='mount.c' object='strace-mount.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-mmap_notify.o: mmap_notify.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-mmap_notify.o -MD -MP -MF $(DEPDIR)/libstrace_a-mmap_notify.Tpo -c -o libstrace_a-mmap_notify.o `test -f 'mmap_notify.c' || echo '$(srcdir)/'`mmap_notify.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-mmap_notify.Tpo $(DEPDIR)/libstrace_a-mmap_notify.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='mmap_notify.c' object='libstrace_a-mmap_notify.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-mount.o `test -f 'mount.c' || echo '$(srcdir)/'`mount.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-mmap_notify.o `test -f 'mmap_notify.c' || echo '$(srcdir)/'`mmap_notify.c
 
-strace-mount.obj: mount.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-mount.obj -MD -MP -MF $(DEPDIR)/strace-mount.Tpo -c -o strace-mount.obj `if test -f 'mount.c'; then $(CYGPATH_W) 'mount.c'; else $(CYGPATH_W) '$(srcdir)/mount.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-mount.Tpo $(DEPDIR)/strace-mount.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='mount.c' object='strace-mount.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-mmap_notify.obj: mmap_notify.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-mmap_notify.obj -MD -MP -MF $(DEPDIR)/libstrace_a-mmap_notify.Tpo -c -o libstrace_a-mmap_notify.obj `if test -f 'mmap_notify.c'; then $(CYGPATH_W) 'mmap_notify.c'; else $(CYGPATH_W) '$(srcdir)/mmap_notify.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-mmap_notify.Tpo $(DEPDIR)/libstrace_a-mmap_notify.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='mmap_notify.c' object='libstrace_a-mmap_notify.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-mount.obj `if test -f 'mount.c'; then $(CYGPATH_W) 'mount.c'; else $(CYGPATH_W) '$(srcdir)/mount.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-mmap_notify.obj `if test -f 'mmap_notify.c'; then $(CYGPATH_W) 'mmap_notify.c'; else $(CYGPATH_W) '$(srcdir)/mmap_notify.c'; fi`
 
-strace-mq.o: mq.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-mq.o -MD -MP -MF $(DEPDIR)/strace-mq.Tpo -c -o strace-mq.o `test -f 'mq.c' || echo '$(srcdir)/'`mq.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-mq.Tpo $(DEPDIR)/strace-mq.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='mq.c' object='strace-mq.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-mmsghdr.o: mmsghdr.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-mmsghdr.o -MD -MP -MF $(DEPDIR)/libstrace_a-mmsghdr.Tpo -c -o libstrace_a-mmsghdr.o `test -f 'mmsghdr.c' || echo '$(srcdir)/'`mmsghdr.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-mmsghdr.Tpo $(DEPDIR)/libstrace_a-mmsghdr.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='mmsghdr.c' object='libstrace_a-mmsghdr.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-mq.o `test -f 'mq.c' || echo '$(srcdir)/'`mq.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-mmsghdr.o `test -f 'mmsghdr.c' || echo '$(srcdir)/'`mmsghdr.c
 
-strace-mq.obj: mq.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-mq.obj -MD -MP -MF $(DEPDIR)/strace-mq.Tpo -c -o strace-mq.obj `if test -f 'mq.c'; then $(CYGPATH_W) 'mq.c'; else $(CYGPATH_W) '$(srcdir)/mq.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-mq.Tpo $(DEPDIR)/strace-mq.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='mq.c' object='strace-mq.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-mmsghdr.obj: mmsghdr.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-mmsghdr.obj -MD -MP -MF $(DEPDIR)/libstrace_a-mmsghdr.Tpo -c -o libstrace_a-mmsghdr.obj `if test -f 'mmsghdr.c'; then $(CYGPATH_W) 'mmsghdr.c'; else $(CYGPATH_W) '$(srcdir)/mmsghdr.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-mmsghdr.Tpo $(DEPDIR)/libstrace_a-mmsghdr.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='mmsghdr.c' object='libstrace_a-mmsghdr.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-mq.obj `if test -f 'mq.c'; then $(CYGPATH_W) 'mq.c'; else $(CYGPATH_W) '$(srcdir)/mq.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-mmsghdr.obj `if test -f 'mmsghdr.c'; then $(CYGPATH_W) 'mmsghdr.c'; else $(CYGPATH_W) '$(srcdir)/mmsghdr.c'; fi`
 
-strace-msghdr.o: msghdr.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-msghdr.o -MD -MP -MF $(DEPDIR)/strace-msghdr.Tpo -c -o strace-msghdr.o `test -f 'msghdr.c' || echo '$(srcdir)/'`msghdr.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-msghdr.Tpo $(DEPDIR)/strace-msghdr.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='msghdr.c' object='strace-msghdr.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-mount.o: mount.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-mount.o -MD -MP -MF $(DEPDIR)/libstrace_a-mount.Tpo -c -o libstrace_a-mount.o `test -f 'mount.c' || echo '$(srcdir)/'`mount.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-mount.Tpo $(DEPDIR)/libstrace_a-mount.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='mount.c' object='libstrace_a-mount.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-msghdr.o `test -f 'msghdr.c' || echo '$(srcdir)/'`msghdr.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-mount.o `test -f 'mount.c' || echo '$(srcdir)/'`mount.c
 
-strace-msghdr.obj: msghdr.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-msghdr.obj -MD -MP -MF $(DEPDIR)/strace-msghdr.Tpo -c -o strace-msghdr.obj `if test -f 'msghdr.c'; then $(CYGPATH_W) 'msghdr.c'; else $(CYGPATH_W) '$(srcdir)/msghdr.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-msghdr.Tpo $(DEPDIR)/strace-msghdr.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='msghdr.c' object='strace-msghdr.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-mount.obj: mount.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-mount.obj -MD -MP -MF $(DEPDIR)/libstrace_a-mount.Tpo -c -o libstrace_a-mount.obj `if test -f 'mount.c'; then $(CYGPATH_W) 'mount.c'; else $(CYGPATH_W) '$(srcdir)/mount.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-mount.Tpo $(DEPDIR)/libstrace_a-mount.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='mount.c' object='libstrace_a-mount.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-msghdr.obj `if test -f 'msghdr.c'; then $(CYGPATH_W) 'msghdr.c'; else $(CYGPATH_W) '$(srcdir)/msghdr.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-mount.obj `if test -f 'mount.c'; then $(CYGPATH_W) 'mount.c'; else $(CYGPATH_W) '$(srcdir)/mount.c'; fi`
 
-strace-mtd.o: mtd.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-mtd.o -MD -MP -MF $(DEPDIR)/strace-mtd.Tpo -c -o strace-mtd.o `test -f 'mtd.c' || echo '$(srcdir)/'`mtd.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-mtd.Tpo $(DEPDIR)/strace-mtd.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='mtd.c' object='strace-mtd.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-move_mount.o: move_mount.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-move_mount.o -MD -MP -MF $(DEPDIR)/libstrace_a-move_mount.Tpo -c -o libstrace_a-move_mount.o `test -f 'move_mount.c' || echo '$(srcdir)/'`move_mount.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-move_mount.Tpo $(DEPDIR)/libstrace_a-move_mount.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='move_mount.c' object='libstrace_a-move_mount.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-mtd.o `test -f 'mtd.c' || echo '$(srcdir)/'`mtd.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-move_mount.o `test -f 'move_mount.c' || echo '$(srcdir)/'`move_mount.c
 
-strace-mtd.obj: mtd.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-mtd.obj -MD -MP -MF $(DEPDIR)/strace-mtd.Tpo -c -o strace-mtd.obj `if test -f 'mtd.c'; then $(CYGPATH_W) 'mtd.c'; else $(CYGPATH_W) '$(srcdir)/mtd.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-mtd.Tpo $(DEPDIR)/strace-mtd.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='mtd.c' object='strace-mtd.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-move_mount.obj: move_mount.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-move_mount.obj -MD -MP -MF $(DEPDIR)/libstrace_a-move_mount.Tpo -c -o libstrace_a-move_mount.obj `if test -f 'move_mount.c'; then $(CYGPATH_W) 'move_mount.c'; else $(CYGPATH_W) '$(srcdir)/move_mount.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-move_mount.Tpo $(DEPDIR)/libstrace_a-move_mount.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='move_mount.c' object='libstrace_a-move_mount.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-mtd.obj `if test -f 'mtd.c'; then $(CYGPATH_W) 'mtd.c'; else $(CYGPATH_W) '$(srcdir)/mtd.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-move_mount.obj `if test -f 'move_mount.c'; then $(CYGPATH_W) 'move_mount.c'; else $(CYGPATH_W) '$(srcdir)/move_mount.c'; fi`
 
-strace-nbd_ioctl.o: nbd_ioctl.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-nbd_ioctl.o -MD -MP -MF $(DEPDIR)/strace-nbd_ioctl.Tpo -c -o strace-nbd_ioctl.o `test -f 'nbd_ioctl.c' || echo '$(srcdir)/'`nbd_ioctl.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-nbd_ioctl.Tpo $(DEPDIR)/strace-nbd_ioctl.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='nbd_ioctl.c' object='strace-nbd_ioctl.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-mq.o: mq.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-mq.o -MD -MP -MF $(DEPDIR)/libstrace_a-mq.Tpo -c -o libstrace_a-mq.o `test -f 'mq.c' || echo '$(srcdir)/'`mq.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-mq.Tpo $(DEPDIR)/libstrace_a-mq.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='mq.c' object='libstrace_a-mq.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-nbd_ioctl.o `test -f 'nbd_ioctl.c' || echo '$(srcdir)/'`nbd_ioctl.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-mq.o `test -f 'mq.c' || echo '$(srcdir)/'`mq.c
 
-strace-nbd_ioctl.obj: nbd_ioctl.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-nbd_ioctl.obj -MD -MP -MF $(DEPDIR)/strace-nbd_ioctl.Tpo -c -o strace-nbd_ioctl.obj `if test -f 'nbd_ioctl.c'; then $(CYGPATH_W) 'nbd_ioctl.c'; else $(CYGPATH_W) '$(srcdir)/nbd_ioctl.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-nbd_ioctl.Tpo $(DEPDIR)/strace-nbd_ioctl.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='nbd_ioctl.c' object='strace-nbd_ioctl.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-mq.obj: mq.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-mq.obj -MD -MP -MF $(DEPDIR)/libstrace_a-mq.Tpo -c -o libstrace_a-mq.obj `if test -f 'mq.c'; then $(CYGPATH_W) 'mq.c'; else $(CYGPATH_W) '$(srcdir)/mq.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-mq.Tpo $(DEPDIR)/libstrace_a-mq.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='mq.c' object='libstrace_a-mq.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-nbd_ioctl.obj `if test -f 'nbd_ioctl.c'; then $(CYGPATH_W) 'nbd_ioctl.c'; else $(CYGPATH_W) '$(srcdir)/nbd_ioctl.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-mq.obj `if test -f 'mq.c'; then $(CYGPATH_W) 'mq.c'; else $(CYGPATH_W) '$(srcdir)/mq.c'; fi`
 
-strace-net.o: net.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-net.o -MD -MP -MF $(DEPDIR)/strace-net.Tpo -c -o strace-net.o `test -f 'net.c' || echo '$(srcdir)/'`net.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-net.Tpo $(DEPDIR)/strace-net.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='net.c' object='strace-net.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-msghdr.o: msghdr.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-msghdr.o -MD -MP -MF $(DEPDIR)/libstrace_a-msghdr.Tpo -c -o libstrace_a-msghdr.o `test -f 'msghdr.c' || echo '$(srcdir)/'`msghdr.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-msghdr.Tpo $(DEPDIR)/libstrace_a-msghdr.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='msghdr.c' object='libstrace_a-msghdr.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-net.o `test -f 'net.c' || echo '$(srcdir)/'`net.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-msghdr.o `test -f 'msghdr.c' || echo '$(srcdir)/'`msghdr.c
 
-strace-net.obj: net.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-net.obj -MD -MP -MF $(DEPDIR)/strace-net.Tpo -c -o strace-net.obj `if test -f 'net.c'; then $(CYGPATH_W) 'net.c'; else $(CYGPATH_W) '$(srcdir)/net.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-net.Tpo $(DEPDIR)/strace-net.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='net.c' object='strace-net.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-msghdr.obj: msghdr.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-msghdr.obj -MD -MP -MF $(DEPDIR)/libstrace_a-msghdr.Tpo -c -o libstrace_a-msghdr.obj `if test -f 'msghdr.c'; then $(CYGPATH_W) 'msghdr.c'; else $(CYGPATH_W) '$(srcdir)/msghdr.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-msghdr.Tpo $(DEPDIR)/libstrace_a-msghdr.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='msghdr.c' object='libstrace_a-msghdr.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-net.obj `if test -f 'net.c'; then $(CYGPATH_W) 'net.c'; else $(CYGPATH_W) '$(srcdir)/net.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-msghdr.obj `if test -f 'msghdr.c'; then $(CYGPATH_W) 'msghdr.c'; else $(CYGPATH_W) '$(srcdir)/msghdr.c'; fi`
 
-strace-netlink.o: netlink.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-netlink.o -MD -MP -MF $(DEPDIR)/strace-netlink.Tpo -c -o strace-netlink.o `test -f 'netlink.c' || echo '$(srcdir)/'`netlink.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-netlink.Tpo $(DEPDIR)/strace-netlink.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='netlink.c' object='strace-netlink.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-mtd.o: mtd.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-mtd.o -MD -MP -MF $(DEPDIR)/libstrace_a-mtd.Tpo -c -o libstrace_a-mtd.o `test -f 'mtd.c' || echo '$(srcdir)/'`mtd.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-mtd.Tpo $(DEPDIR)/libstrace_a-mtd.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='mtd.c' object='libstrace_a-mtd.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-netlink.o `test -f 'netlink.c' || echo '$(srcdir)/'`netlink.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-mtd.o `test -f 'mtd.c' || echo '$(srcdir)/'`mtd.c
 
-strace-netlink.obj: netlink.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-netlink.obj -MD -MP -MF $(DEPDIR)/strace-netlink.Tpo -c -o strace-netlink.obj `if test -f 'netlink.c'; then $(CYGPATH_W) 'netlink.c'; else $(CYGPATH_W) '$(srcdir)/netlink.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-netlink.Tpo $(DEPDIR)/strace-netlink.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='netlink.c' object='strace-netlink.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-mtd.obj: mtd.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-mtd.obj -MD -MP -MF $(DEPDIR)/libstrace_a-mtd.Tpo -c -o libstrace_a-mtd.obj `if test -f 'mtd.c'; then $(CYGPATH_W) 'mtd.c'; else $(CYGPATH_W) '$(srcdir)/mtd.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-mtd.Tpo $(DEPDIR)/libstrace_a-mtd.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='mtd.c' object='libstrace_a-mtd.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-netlink.obj `if test -f 'netlink.c'; then $(CYGPATH_W) 'netlink.c'; else $(CYGPATH_W) '$(srcdir)/netlink.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-mtd.obj `if test -f 'mtd.c'; then $(CYGPATH_W) 'mtd.c'; else $(CYGPATH_W) '$(srcdir)/mtd.c'; fi`
 
-strace-netlink_crypto.o: netlink_crypto.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-netlink_crypto.o -MD -MP -MF $(DEPDIR)/strace-netlink_crypto.Tpo -c -o strace-netlink_crypto.o `test -f 'netlink_crypto.c' || echo '$(srcdir)/'`netlink_crypto.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-netlink_crypto.Tpo $(DEPDIR)/strace-netlink_crypto.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='netlink_crypto.c' object='strace-netlink_crypto.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-nbd_ioctl.o: nbd_ioctl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-nbd_ioctl.o -MD -MP -MF $(DEPDIR)/libstrace_a-nbd_ioctl.Tpo -c -o libstrace_a-nbd_ioctl.o `test -f 'nbd_ioctl.c' || echo '$(srcdir)/'`nbd_ioctl.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-nbd_ioctl.Tpo $(DEPDIR)/libstrace_a-nbd_ioctl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='nbd_ioctl.c' object='libstrace_a-nbd_ioctl.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-netlink_crypto.o `test -f 'netlink_crypto.c' || echo '$(srcdir)/'`netlink_crypto.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-nbd_ioctl.o `test -f 'nbd_ioctl.c' || echo '$(srcdir)/'`nbd_ioctl.c
 
-strace-netlink_crypto.obj: netlink_crypto.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-netlink_crypto.obj -MD -MP -MF $(DEPDIR)/strace-netlink_crypto.Tpo -c -o strace-netlink_crypto.obj `if test -f 'netlink_crypto.c'; then $(CYGPATH_W) 'netlink_crypto.c'; else $(CYGPATH_W) '$(srcdir)/netlink_crypto.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-netlink_crypto.Tpo $(DEPDIR)/strace-netlink_crypto.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='netlink_crypto.c' object='strace-netlink_crypto.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-nbd_ioctl.obj: nbd_ioctl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-nbd_ioctl.obj -MD -MP -MF $(DEPDIR)/libstrace_a-nbd_ioctl.Tpo -c -o libstrace_a-nbd_ioctl.obj `if test -f 'nbd_ioctl.c'; then $(CYGPATH_W) 'nbd_ioctl.c'; else $(CYGPATH_W) '$(srcdir)/nbd_ioctl.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-nbd_ioctl.Tpo $(DEPDIR)/libstrace_a-nbd_ioctl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='nbd_ioctl.c' object='libstrace_a-nbd_ioctl.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-netlink_crypto.obj `if test -f 'netlink_crypto.c'; then $(CYGPATH_W) 'netlink_crypto.c'; else $(CYGPATH_W) '$(srcdir)/netlink_crypto.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-nbd_ioctl.obj `if test -f 'nbd_ioctl.c'; then $(CYGPATH_W) 'nbd_ioctl.c'; else $(CYGPATH_W) '$(srcdir)/nbd_ioctl.c'; fi`
 
-strace-netlink_inet_diag.o: netlink_inet_diag.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-netlink_inet_diag.o -MD -MP -MF $(DEPDIR)/strace-netlink_inet_diag.Tpo -c -o strace-netlink_inet_diag.o `test -f 'netlink_inet_diag.c' || echo '$(srcdir)/'`netlink_inet_diag.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-netlink_inet_diag.Tpo $(DEPDIR)/strace-netlink_inet_diag.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='netlink_inet_diag.c' object='strace-netlink_inet_diag.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-net.o: net.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-net.o -MD -MP -MF $(DEPDIR)/libstrace_a-net.Tpo -c -o libstrace_a-net.o `test -f 'net.c' || echo '$(srcdir)/'`net.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-net.Tpo $(DEPDIR)/libstrace_a-net.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='net.c' object='libstrace_a-net.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-netlink_inet_diag.o `test -f 'netlink_inet_diag.c' || echo '$(srcdir)/'`netlink_inet_diag.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-net.o `test -f 'net.c' || echo '$(srcdir)/'`net.c
 
-strace-netlink_inet_diag.obj: netlink_inet_diag.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-netlink_inet_diag.obj -MD -MP -MF $(DEPDIR)/strace-netlink_inet_diag.Tpo -c -o strace-netlink_inet_diag.obj `if test -f 'netlink_inet_diag.c'; then $(CYGPATH_W) 'netlink_inet_diag.c'; else $(CYGPATH_W) '$(srcdir)/netlink_inet_diag.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-netlink_inet_diag.Tpo $(DEPDIR)/strace-netlink_inet_diag.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='netlink_inet_diag.c' object='strace-netlink_inet_diag.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-net.obj: net.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-net.obj -MD -MP -MF $(DEPDIR)/libstrace_a-net.Tpo -c -o libstrace_a-net.obj `if test -f 'net.c'; then $(CYGPATH_W) 'net.c'; else $(CYGPATH_W) '$(srcdir)/net.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-net.Tpo $(DEPDIR)/libstrace_a-net.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='net.c' object='libstrace_a-net.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-netlink_inet_diag.obj `if test -f 'netlink_inet_diag.c'; then $(CYGPATH_W) 'netlink_inet_diag.c'; else $(CYGPATH_W) '$(srcdir)/netlink_inet_diag.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-net.obj `if test -f 'net.c'; then $(CYGPATH_W) 'net.c'; else $(CYGPATH_W) '$(srcdir)/net.c'; fi`
 
-strace-netlink_kobject_uevent.o: netlink_kobject_uevent.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-netlink_kobject_uevent.o -MD -MP -MF $(DEPDIR)/strace-netlink_kobject_uevent.Tpo -c -o strace-netlink_kobject_uevent.o `test -f 'netlink_kobject_uevent.c' || echo '$(srcdir)/'`netlink_kobject_uevent.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-netlink_kobject_uevent.Tpo $(DEPDIR)/strace-netlink_kobject_uevent.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='netlink_kobject_uevent.c' object='strace-netlink_kobject_uevent.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-netlink.o: netlink.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-netlink.o -MD -MP -MF $(DEPDIR)/libstrace_a-netlink.Tpo -c -o libstrace_a-netlink.o `test -f 'netlink.c' || echo '$(srcdir)/'`netlink.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-netlink.Tpo $(DEPDIR)/libstrace_a-netlink.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='netlink.c' object='libstrace_a-netlink.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-netlink_kobject_uevent.o `test -f 'netlink_kobject_uevent.c' || echo '$(srcdir)/'`netlink_kobject_uevent.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-netlink.o `test -f 'netlink.c' || echo '$(srcdir)/'`netlink.c
 
-strace-netlink_kobject_uevent.obj: netlink_kobject_uevent.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-netlink_kobject_uevent.obj -MD -MP -MF $(DEPDIR)/strace-netlink_kobject_uevent.Tpo -c -o strace-netlink_kobject_uevent.obj `if test -f 'netlink_kobject_uevent.c'; then $(CYGPATH_W) 'netlink_kobject_uevent.c'; else $(CYGPATH_W) '$(srcdir)/netlink_kobject_uevent.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-netlink_kobject_uevent.Tpo $(DEPDIR)/strace-netlink_kobject_uevent.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='netlink_kobject_uevent.c' object='strace-netlink_kobject_uevent.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-netlink.obj: netlink.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-netlink.obj -MD -MP -MF $(DEPDIR)/libstrace_a-netlink.Tpo -c -o libstrace_a-netlink.obj `if test -f 'netlink.c'; then $(CYGPATH_W) 'netlink.c'; else $(CYGPATH_W) '$(srcdir)/netlink.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-netlink.Tpo $(DEPDIR)/libstrace_a-netlink.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='netlink.c' object='libstrace_a-netlink.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-netlink_kobject_uevent.obj `if test -f 'netlink_kobject_uevent.c'; then $(CYGPATH_W) 'netlink_kobject_uevent.c'; else $(CYGPATH_W) '$(srcdir)/netlink_kobject_uevent.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-netlink.obj `if test -f 'netlink.c'; then $(CYGPATH_W) 'netlink.c'; else $(CYGPATH_W) '$(srcdir)/netlink.c'; fi`
 
-strace-netlink_netfilter.o: netlink_netfilter.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-netlink_netfilter.o -MD -MP -MF $(DEPDIR)/strace-netlink_netfilter.Tpo -c -o strace-netlink_netfilter.o `test -f 'netlink_netfilter.c' || echo '$(srcdir)/'`netlink_netfilter.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-netlink_netfilter.Tpo $(DEPDIR)/strace-netlink_netfilter.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='netlink_netfilter.c' object='strace-netlink_netfilter.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-netlink_crypto.o: netlink_crypto.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-netlink_crypto.o -MD -MP -MF $(DEPDIR)/libstrace_a-netlink_crypto.Tpo -c -o libstrace_a-netlink_crypto.o `test -f 'netlink_crypto.c' || echo '$(srcdir)/'`netlink_crypto.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-netlink_crypto.Tpo $(DEPDIR)/libstrace_a-netlink_crypto.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='netlink_crypto.c' object='libstrace_a-netlink_crypto.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-netlink_netfilter.o `test -f 'netlink_netfilter.c' || echo '$(srcdir)/'`netlink_netfilter.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-netlink_crypto.o `test -f 'netlink_crypto.c' || echo '$(srcdir)/'`netlink_crypto.c
 
-strace-netlink_netfilter.obj: netlink_netfilter.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-netlink_netfilter.obj -MD -MP -MF $(DEPDIR)/strace-netlink_netfilter.Tpo -c -o strace-netlink_netfilter.obj `if test -f 'netlink_netfilter.c'; then $(CYGPATH_W) 'netlink_netfilter.c'; else $(CYGPATH_W) '$(srcdir)/netlink_netfilter.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-netlink_netfilter.Tpo $(DEPDIR)/strace-netlink_netfilter.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='netlink_netfilter.c' object='strace-netlink_netfilter.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-netlink_crypto.obj: netlink_crypto.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-netlink_crypto.obj -MD -MP -MF $(DEPDIR)/libstrace_a-netlink_crypto.Tpo -c -o libstrace_a-netlink_crypto.obj `if test -f 'netlink_crypto.c'; then $(CYGPATH_W) 'netlink_crypto.c'; else $(CYGPATH_W) '$(srcdir)/netlink_crypto.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-netlink_crypto.Tpo $(DEPDIR)/libstrace_a-netlink_crypto.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='netlink_crypto.c' object='libstrace_a-netlink_crypto.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-netlink_netfilter.obj `if test -f 'netlink_netfilter.c'; then $(CYGPATH_W) 'netlink_netfilter.c'; else $(CYGPATH_W) '$(srcdir)/netlink_netfilter.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-netlink_crypto.obj `if test -f 'netlink_crypto.c'; then $(CYGPATH_W) 'netlink_crypto.c'; else $(CYGPATH_W) '$(srcdir)/netlink_crypto.c'; fi`
 
-strace-netlink_netlink_diag.o: netlink_netlink_diag.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-netlink_netlink_diag.o -MD -MP -MF $(DEPDIR)/strace-netlink_netlink_diag.Tpo -c -o strace-netlink_netlink_diag.o `test -f 'netlink_netlink_diag.c' || echo '$(srcdir)/'`netlink_netlink_diag.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-netlink_netlink_diag.Tpo $(DEPDIR)/strace-netlink_netlink_diag.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='netlink_netlink_diag.c' object='strace-netlink_netlink_diag.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-netlink_inet_diag.o: netlink_inet_diag.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-netlink_inet_diag.o -MD -MP -MF $(DEPDIR)/libstrace_a-netlink_inet_diag.Tpo -c -o libstrace_a-netlink_inet_diag.o `test -f 'netlink_inet_diag.c' || echo '$(srcdir)/'`netlink_inet_diag.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-netlink_inet_diag.Tpo $(DEPDIR)/libstrace_a-netlink_inet_diag.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='netlink_inet_diag.c' object='libstrace_a-netlink_inet_diag.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-netlink_netlink_diag.o `test -f 'netlink_netlink_diag.c' || echo '$(srcdir)/'`netlink_netlink_diag.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-netlink_inet_diag.o `test -f 'netlink_inet_diag.c' || echo '$(srcdir)/'`netlink_inet_diag.c
 
-strace-netlink_netlink_diag.obj: netlink_netlink_diag.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-netlink_netlink_diag.obj -MD -MP -MF $(DEPDIR)/strace-netlink_netlink_diag.Tpo -c -o strace-netlink_netlink_diag.obj `if test -f 'netlink_netlink_diag.c'; then $(CYGPATH_W) 'netlink_netlink_diag.c'; else $(CYGPATH_W) '$(srcdir)/netlink_netlink_diag.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-netlink_netlink_diag.Tpo $(DEPDIR)/strace-netlink_netlink_diag.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='netlink_netlink_diag.c' object='strace-netlink_netlink_diag.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-netlink_inet_diag.obj: netlink_inet_diag.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-netlink_inet_diag.obj -MD -MP -MF $(DEPDIR)/libstrace_a-netlink_inet_diag.Tpo -c -o libstrace_a-netlink_inet_diag.obj `if test -f 'netlink_inet_diag.c'; then $(CYGPATH_W) 'netlink_inet_diag.c'; else $(CYGPATH_W) '$(srcdir)/netlink_inet_diag.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-netlink_inet_diag.Tpo $(DEPDIR)/libstrace_a-netlink_inet_diag.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='netlink_inet_diag.c' object='libstrace_a-netlink_inet_diag.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-netlink_netlink_diag.obj `if test -f 'netlink_netlink_diag.c'; then $(CYGPATH_W) 'netlink_netlink_diag.c'; else $(CYGPATH_W) '$(srcdir)/netlink_netlink_diag.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-netlink_inet_diag.obj `if test -f 'netlink_inet_diag.c'; then $(CYGPATH_W) 'netlink_inet_diag.c'; else $(CYGPATH_W) '$(srcdir)/netlink_inet_diag.c'; fi`
 
-strace-netlink_packet_diag.o: netlink_packet_diag.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-netlink_packet_diag.o -MD -MP -MF $(DEPDIR)/strace-netlink_packet_diag.Tpo -c -o strace-netlink_packet_diag.o `test -f 'netlink_packet_diag.c' || echo '$(srcdir)/'`netlink_packet_diag.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-netlink_packet_diag.Tpo $(DEPDIR)/strace-netlink_packet_diag.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='netlink_packet_diag.c' object='strace-netlink_packet_diag.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-netlink_kobject_uevent.o: netlink_kobject_uevent.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-netlink_kobject_uevent.o -MD -MP -MF $(DEPDIR)/libstrace_a-netlink_kobject_uevent.Tpo -c -o libstrace_a-netlink_kobject_uevent.o `test -f 'netlink_kobject_uevent.c' || echo '$(srcdir)/'`netlink_kobject_uevent.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-netlink_kobject_uevent.Tpo $(DEPDIR)/libstrace_a-netlink_kobject_uevent.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='netlink_kobject_uevent.c' object='libstrace_a-netlink_kobject_uevent.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-netlink_packet_diag.o `test -f 'netlink_packet_diag.c' || echo '$(srcdir)/'`netlink_packet_diag.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-netlink_kobject_uevent.o `test -f 'netlink_kobject_uevent.c' || echo '$(srcdir)/'`netlink_kobject_uevent.c
 
-strace-netlink_packet_diag.obj: netlink_packet_diag.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-netlink_packet_diag.obj -MD -MP -MF $(DEPDIR)/strace-netlink_packet_diag.Tpo -c -o strace-netlink_packet_diag.obj `if test -f 'netlink_packet_diag.c'; then $(CYGPATH_W) 'netlink_packet_diag.c'; else $(CYGPATH_W) '$(srcdir)/netlink_packet_diag.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-netlink_packet_diag.Tpo $(DEPDIR)/strace-netlink_packet_diag.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='netlink_packet_diag.c' object='strace-netlink_packet_diag.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-netlink_kobject_uevent.obj: netlink_kobject_uevent.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-netlink_kobject_uevent.obj -MD -MP -MF $(DEPDIR)/libstrace_a-netlink_kobject_uevent.Tpo -c -o libstrace_a-netlink_kobject_uevent.obj `if test -f 'netlink_kobject_uevent.c'; then $(CYGPATH_W) 'netlink_kobject_uevent.c'; else $(CYGPATH_W) '$(srcdir)/netlink_kobject_uevent.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-netlink_kobject_uevent.Tpo $(DEPDIR)/libstrace_a-netlink_kobject_uevent.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='netlink_kobject_uevent.c' object='libstrace_a-netlink_kobject_uevent.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-netlink_packet_diag.obj `if test -f 'netlink_packet_diag.c'; then $(CYGPATH_W) 'netlink_packet_diag.c'; else $(CYGPATH_W) '$(srcdir)/netlink_packet_diag.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-netlink_kobject_uevent.obj `if test -f 'netlink_kobject_uevent.c'; then $(CYGPATH_W) 'netlink_kobject_uevent.c'; else $(CYGPATH_W) '$(srcdir)/netlink_kobject_uevent.c'; fi`
 
-strace-netlink_route.o: netlink_route.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-netlink_route.o -MD -MP -MF $(DEPDIR)/strace-netlink_route.Tpo -c -o strace-netlink_route.o `test -f 'netlink_route.c' || echo '$(srcdir)/'`netlink_route.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-netlink_route.Tpo $(DEPDIR)/strace-netlink_route.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='netlink_route.c' object='strace-netlink_route.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-netlink_netfilter.o: netlink_netfilter.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-netlink_netfilter.o -MD -MP -MF $(DEPDIR)/libstrace_a-netlink_netfilter.Tpo -c -o libstrace_a-netlink_netfilter.o `test -f 'netlink_netfilter.c' || echo '$(srcdir)/'`netlink_netfilter.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-netlink_netfilter.Tpo $(DEPDIR)/libstrace_a-netlink_netfilter.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='netlink_netfilter.c' object='libstrace_a-netlink_netfilter.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-netlink_route.o `test -f 'netlink_route.c' || echo '$(srcdir)/'`netlink_route.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-netlink_netfilter.o `test -f 'netlink_netfilter.c' || echo '$(srcdir)/'`netlink_netfilter.c
 
-strace-netlink_route.obj: netlink_route.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-netlink_route.obj -MD -MP -MF $(DEPDIR)/strace-netlink_route.Tpo -c -o strace-netlink_route.obj `if test -f 'netlink_route.c'; then $(CYGPATH_W) 'netlink_route.c'; else $(CYGPATH_W) '$(srcdir)/netlink_route.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-netlink_route.Tpo $(DEPDIR)/strace-netlink_route.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='netlink_route.c' object='strace-netlink_route.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-netlink_netfilter.obj: netlink_netfilter.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-netlink_netfilter.obj -MD -MP -MF $(DEPDIR)/libstrace_a-netlink_netfilter.Tpo -c -o libstrace_a-netlink_netfilter.obj `if test -f 'netlink_netfilter.c'; then $(CYGPATH_W) 'netlink_netfilter.c'; else $(CYGPATH_W) '$(srcdir)/netlink_netfilter.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-netlink_netfilter.Tpo $(DEPDIR)/libstrace_a-netlink_netfilter.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='netlink_netfilter.c' object='libstrace_a-netlink_netfilter.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-netlink_route.obj `if test -f 'netlink_route.c'; then $(CYGPATH_W) 'netlink_route.c'; else $(CYGPATH_W) '$(srcdir)/netlink_route.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-netlink_netfilter.obj `if test -f 'netlink_netfilter.c'; then $(CYGPATH_W) 'netlink_netfilter.c'; else $(CYGPATH_W) '$(srcdir)/netlink_netfilter.c'; fi`
 
-strace-netlink_selinux.o: netlink_selinux.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-netlink_selinux.o -MD -MP -MF $(DEPDIR)/strace-netlink_selinux.Tpo -c -o strace-netlink_selinux.o `test -f 'netlink_selinux.c' || echo '$(srcdir)/'`netlink_selinux.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-netlink_selinux.Tpo $(DEPDIR)/strace-netlink_selinux.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='netlink_selinux.c' object='strace-netlink_selinux.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-netlink_netlink_diag.o: netlink_netlink_diag.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-netlink_netlink_diag.o -MD -MP -MF $(DEPDIR)/libstrace_a-netlink_netlink_diag.Tpo -c -o libstrace_a-netlink_netlink_diag.o `test -f 'netlink_netlink_diag.c' || echo '$(srcdir)/'`netlink_netlink_diag.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-netlink_netlink_diag.Tpo $(DEPDIR)/libstrace_a-netlink_netlink_diag.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='netlink_netlink_diag.c' object='libstrace_a-netlink_netlink_diag.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-netlink_selinux.o `test -f 'netlink_selinux.c' || echo '$(srcdir)/'`netlink_selinux.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-netlink_netlink_diag.o `test -f 'netlink_netlink_diag.c' || echo '$(srcdir)/'`netlink_netlink_diag.c
 
-strace-netlink_selinux.obj: netlink_selinux.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-netlink_selinux.obj -MD -MP -MF $(DEPDIR)/strace-netlink_selinux.Tpo -c -o strace-netlink_selinux.obj `if test -f 'netlink_selinux.c'; then $(CYGPATH_W) 'netlink_selinux.c'; else $(CYGPATH_W) '$(srcdir)/netlink_selinux.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-netlink_selinux.Tpo $(DEPDIR)/strace-netlink_selinux.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='netlink_selinux.c' object='strace-netlink_selinux.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-netlink_netlink_diag.obj: netlink_netlink_diag.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-netlink_netlink_diag.obj -MD -MP -MF $(DEPDIR)/libstrace_a-netlink_netlink_diag.Tpo -c -o libstrace_a-netlink_netlink_diag.obj `if test -f 'netlink_netlink_diag.c'; then $(CYGPATH_W) 'netlink_netlink_diag.c'; else $(CYGPATH_W) '$(srcdir)/netlink_netlink_diag.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-netlink_netlink_diag.Tpo $(DEPDIR)/libstrace_a-netlink_netlink_diag.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='netlink_netlink_diag.c' object='libstrace_a-netlink_netlink_diag.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-netlink_selinux.obj `if test -f 'netlink_selinux.c'; then $(CYGPATH_W) 'netlink_selinux.c'; else $(CYGPATH_W) '$(srcdir)/netlink_selinux.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-netlink_netlink_diag.obj `if test -f 'netlink_netlink_diag.c'; then $(CYGPATH_W) 'netlink_netlink_diag.c'; else $(CYGPATH_W) '$(srcdir)/netlink_netlink_diag.c'; fi`
 
-strace-netlink_smc_diag.o: netlink_smc_diag.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-netlink_smc_diag.o -MD -MP -MF $(DEPDIR)/strace-netlink_smc_diag.Tpo -c -o strace-netlink_smc_diag.o `test -f 'netlink_smc_diag.c' || echo '$(srcdir)/'`netlink_smc_diag.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-netlink_smc_diag.Tpo $(DEPDIR)/strace-netlink_smc_diag.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='netlink_smc_diag.c' object='strace-netlink_smc_diag.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-netlink_packet_diag.o: netlink_packet_diag.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-netlink_packet_diag.o -MD -MP -MF $(DEPDIR)/libstrace_a-netlink_packet_diag.Tpo -c -o libstrace_a-netlink_packet_diag.o `test -f 'netlink_packet_diag.c' || echo '$(srcdir)/'`netlink_packet_diag.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-netlink_packet_diag.Tpo $(DEPDIR)/libstrace_a-netlink_packet_diag.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='netlink_packet_diag.c' object='libstrace_a-netlink_packet_diag.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-netlink_smc_diag.o `test -f 'netlink_smc_diag.c' || echo '$(srcdir)/'`netlink_smc_diag.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-netlink_packet_diag.o `test -f 'netlink_packet_diag.c' || echo '$(srcdir)/'`netlink_packet_diag.c
 
-strace-netlink_smc_diag.obj: netlink_smc_diag.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-netlink_smc_diag.obj -MD -MP -MF $(DEPDIR)/strace-netlink_smc_diag.Tpo -c -o strace-netlink_smc_diag.obj `if test -f 'netlink_smc_diag.c'; then $(CYGPATH_W) 'netlink_smc_diag.c'; else $(CYGPATH_W) '$(srcdir)/netlink_smc_diag.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-netlink_smc_diag.Tpo $(DEPDIR)/strace-netlink_smc_diag.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='netlink_smc_diag.c' object='strace-netlink_smc_diag.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-netlink_packet_diag.obj: netlink_packet_diag.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-netlink_packet_diag.obj -MD -MP -MF $(DEPDIR)/libstrace_a-netlink_packet_diag.Tpo -c -o libstrace_a-netlink_packet_diag.obj `if test -f 'netlink_packet_diag.c'; then $(CYGPATH_W) 'netlink_packet_diag.c'; else $(CYGPATH_W) '$(srcdir)/netlink_packet_diag.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-netlink_packet_diag.Tpo $(DEPDIR)/libstrace_a-netlink_packet_diag.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='netlink_packet_diag.c' object='libstrace_a-netlink_packet_diag.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-netlink_smc_diag.obj `if test -f 'netlink_smc_diag.c'; then $(CYGPATH_W) 'netlink_smc_diag.c'; else $(CYGPATH_W) '$(srcdir)/netlink_smc_diag.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-netlink_packet_diag.obj `if test -f 'netlink_packet_diag.c'; then $(CYGPATH_W) 'netlink_packet_diag.c'; else $(CYGPATH_W) '$(srcdir)/netlink_packet_diag.c'; fi`
 
-strace-netlink_sock_diag.o: netlink_sock_diag.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-netlink_sock_diag.o -MD -MP -MF $(DEPDIR)/strace-netlink_sock_diag.Tpo -c -o strace-netlink_sock_diag.o `test -f 'netlink_sock_diag.c' || echo '$(srcdir)/'`netlink_sock_diag.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-netlink_sock_diag.Tpo $(DEPDIR)/strace-netlink_sock_diag.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='netlink_sock_diag.c' object='strace-netlink_sock_diag.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-netlink_route.o: netlink_route.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-netlink_route.o -MD -MP -MF $(DEPDIR)/libstrace_a-netlink_route.Tpo -c -o libstrace_a-netlink_route.o `test -f 'netlink_route.c' || echo '$(srcdir)/'`netlink_route.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-netlink_route.Tpo $(DEPDIR)/libstrace_a-netlink_route.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='netlink_route.c' object='libstrace_a-netlink_route.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-netlink_sock_diag.o `test -f 'netlink_sock_diag.c' || echo '$(srcdir)/'`netlink_sock_diag.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-netlink_route.o `test -f 'netlink_route.c' || echo '$(srcdir)/'`netlink_route.c
 
-strace-netlink_sock_diag.obj: netlink_sock_diag.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-netlink_sock_diag.obj -MD -MP -MF $(DEPDIR)/strace-netlink_sock_diag.Tpo -c -o strace-netlink_sock_diag.obj `if test -f 'netlink_sock_diag.c'; then $(CYGPATH_W) 'netlink_sock_diag.c'; else $(CYGPATH_W) '$(srcdir)/netlink_sock_diag.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-netlink_sock_diag.Tpo $(DEPDIR)/strace-netlink_sock_diag.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='netlink_sock_diag.c' object='strace-netlink_sock_diag.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-netlink_route.obj: netlink_route.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-netlink_route.obj -MD -MP -MF $(DEPDIR)/libstrace_a-netlink_route.Tpo -c -o libstrace_a-netlink_route.obj `if test -f 'netlink_route.c'; then $(CYGPATH_W) 'netlink_route.c'; else $(CYGPATH_W) '$(srcdir)/netlink_route.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-netlink_route.Tpo $(DEPDIR)/libstrace_a-netlink_route.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='netlink_route.c' object='libstrace_a-netlink_route.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-netlink_sock_diag.obj `if test -f 'netlink_sock_diag.c'; then $(CYGPATH_W) 'netlink_sock_diag.c'; else $(CYGPATH_W) '$(srcdir)/netlink_sock_diag.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-netlink_route.obj `if test -f 'netlink_route.c'; then $(CYGPATH_W) 'netlink_route.c'; else $(CYGPATH_W) '$(srcdir)/netlink_route.c'; fi`
 
-strace-netlink_unix_diag.o: netlink_unix_diag.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-netlink_unix_diag.o -MD -MP -MF $(DEPDIR)/strace-netlink_unix_diag.Tpo -c -o strace-netlink_unix_diag.o `test -f 'netlink_unix_diag.c' || echo '$(srcdir)/'`netlink_unix_diag.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-netlink_unix_diag.Tpo $(DEPDIR)/strace-netlink_unix_diag.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='netlink_unix_diag.c' object='strace-netlink_unix_diag.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-netlink_selinux.o: netlink_selinux.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-netlink_selinux.o -MD -MP -MF $(DEPDIR)/libstrace_a-netlink_selinux.Tpo -c -o libstrace_a-netlink_selinux.o `test -f 'netlink_selinux.c' || echo '$(srcdir)/'`netlink_selinux.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-netlink_selinux.Tpo $(DEPDIR)/libstrace_a-netlink_selinux.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='netlink_selinux.c' object='libstrace_a-netlink_selinux.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-netlink_unix_diag.o `test -f 'netlink_unix_diag.c' || echo '$(srcdir)/'`netlink_unix_diag.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-netlink_selinux.o `test -f 'netlink_selinux.c' || echo '$(srcdir)/'`netlink_selinux.c
 
-strace-netlink_unix_diag.obj: netlink_unix_diag.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-netlink_unix_diag.obj -MD -MP -MF $(DEPDIR)/strace-netlink_unix_diag.Tpo -c -o strace-netlink_unix_diag.obj `if test -f 'netlink_unix_diag.c'; then $(CYGPATH_W) 'netlink_unix_diag.c'; else $(CYGPATH_W) '$(srcdir)/netlink_unix_diag.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-netlink_unix_diag.Tpo $(DEPDIR)/strace-netlink_unix_diag.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='netlink_unix_diag.c' object='strace-netlink_unix_diag.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-netlink_selinux.obj: netlink_selinux.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-netlink_selinux.obj -MD -MP -MF $(DEPDIR)/libstrace_a-netlink_selinux.Tpo -c -o libstrace_a-netlink_selinux.obj `if test -f 'netlink_selinux.c'; then $(CYGPATH_W) 'netlink_selinux.c'; else $(CYGPATH_W) '$(srcdir)/netlink_selinux.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-netlink_selinux.Tpo $(DEPDIR)/libstrace_a-netlink_selinux.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='netlink_selinux.c' object='libstrace_a-netlink_selinux.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-netlink_unix_diag.obj `if test -f 'netlink_unix_diag.c'; then $(CYGPATH_W) 'netlink_unix_diag.c'; else $(CYGPATH_W) '$(srcdir)/netlink_unix_diag.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-netlink_selinux.obj `if test -f 'netlink_selinux.c'; then $(CYGPATH_W) 'netlink_selinux.c'; else $(CYGPATH_W) '$(srcdir)/netlink_selinux.c'; fi`
 
-strace-nlattr.o: nlattr.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-nlattr.o -MD -MP -MF $(DEPDIR)/strace-nlattr.Tpo -c -o strace-nlattr.o `test -f 'nlattr.c' || echo '$(srcdir)/'`nlattr.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-nlattr.Tpo $(DEPDIR)/strace-nlattr.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='nlattr.c' object='strace-nlattr.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-netlink_smc_diag.o: netlink_smc_diag.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-netlink_smc_diag.o -MD -MP -MF $(DEPDIR)/libstrace_a-netlink_smc_diag.Tpo -c -o libstrace_a-netlink_smc_diag.o `test -f 'netlink_smc_diag.c' || echo '$(srcdir)/'`netlink_smc_diag.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-netlink_smc_diag.Tpo $(DEPDIR)/libstrace_a-netlink_smc_diag.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='netlink_smc_diag.c' object='libstrace_a-netlink_smc_diag.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-nlattr.o `test -f 'nlattr.c' || echo '$(srcdir)/'`nlattr.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-netlink_smc_diag.o `test -f 'netlink_smc_diag.c' || echo '$(srcdir)/'`netlink_smc_diag.c
 
-strace-nlattr.obj: nlattr.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-nlattr.obj -MD -MP -MF $(DEPDIR)/strace-nlattr.Tpo -c -o strace-nlattr.obj `if test -f 'nlattr.c'; then $(CYGPATH_W) 'nlattr.c'; else $(CYGPATH_W) '$(srcdir)/nlattr.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-nlattr.Tpo $(DEPDIR)/strace-nlattr.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='nlattr.c' object='strace-nlattr.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-netlink_smc_diag.obj: netlink_smc_diag.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-netlink_smc_diag.obj -MD -MP -MF $(DEPDIR)/libstrace_a-netlink_smc_diag.Tpo -c -o libstrace_a-netlink_smc_diag.obj `if test -f 'netlink_smc_diag.c'; then $(CYGPATH_W) 'netlink_smc_diag.c'; else $(CYGPATH_W) '$(srcdir)/netlink_smc_diag.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-netlink_smc_diag.Tpo $(DEPDIR)/libstrace_a-netlink_smc_diag.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='netlink_smc_diag.c' object='libstrace_a-netlink_smc_diag.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-nlattr.obj `if test -f 'nlattr.c'; then $(CYGPATH_W) 'nlattr.c'; else $(CYGPATH_W) '$(srcdir)/nlattr.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-netlink_smc_diag.obj `if test -f 'netlink_smc_diag.c'; then $(CYGPATH_W) 'netlink_smc_diag.c'; else $(CYGPATH_W) '$(srcdir)/netlink_smc_diag.c'; fi`
 
-strace-nsfs.o: nsfs.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-nsfs.o -MD -MP -MF $(DEPDIR)/strace-nsfs.Tpo -c -o strace-nsfs.o `test -f 'nsfs.c' || echo '$(srcdir)/'`nsfs.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-nsfs.Tpo $(DEPDIR)/strace-nsfs.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='nsfs.c' object='strace-nsfs.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-netlink_sock_diag.o: netlink_sock_diag.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-netlink_sock_diag.o -MD -MP -MF $(DEPDIR)/libstrace_a-netlink_sock_diag.Tpo -c -o libstrace_a-netlink_sock_diag.o `test -f 'netlink_sock_diag.c' || echo '$(srcdir)/'`netlink_sock_diag.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-netlink_sock_diag.Tpo $(DEPDIR)/libstrace_a-netlink_sock_diag.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='netlink_sock_diag.c' object='libstrace_a-netlink_sock_diag.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-nsfs.o `test -f 'nsfs.c' || echo '$(srcdir)/'`nsfs.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-netlink_sock_diag.o `test -f 'netlink_sock_diag.c' || echo '$(srcdir)/'`netlink_sock_diag.c
 
-strace-nsfs.obj: nsfs.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-nsfs.obj -MD -MP -MF $(DEPDIR)/strace-nsfs.Tpo -c -o strace-nsfs.obj `if test -f 'nsfs.c'; then $(CYGPATH_W) 'nsfs.c'; else $(CYGPATH_W) '$(srcdir)/nsfs.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-nsfs.Tpo $(DEPDIR)/strace-nsfs.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='nsfs.c' object='strace-nsfs.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-netlink_sock_diag.obj: netlink_sock_diag.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-netlink_sock_diag.obj -MD -MP -MF $(DEPDIR)/libstrace_a-netlink_sock_diag.Tpo -c -o libstrace_a-netlink_sock_diag.obj `if test -f 'netlink_sock_diag.c'; then $(CYGPATH_W) 'netlink_sock_diag.c'; else $(CYGPATH_W) '$(srcdir)/netlink_sock_diag.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-netlink_sock_diag.Tpo $(DEPDIR)/libstrace_a-netlink_sock_diag.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='netlink_sock_diag.c' object='libstrace_a-netlink_sock_diag.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-nsfs.obj `if test -f 'nsfs.c'; then $(CYGPATH_W) 'nsfs.c'; else $(CYGPATH_W) '$(srcdir)/nsfs.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-netlink_sock_diag.obj `if test -f 'netlink_sock_diag.c'; then $(CYGPATH_W) 'netlink_sock_diag.c'; else $(CYGPATH_W) '$(srcdir)/netlink_sock_diag.c'; fi`
 
-strace-numa.o: numa.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-numa.o -MD -MP -MF $(DEPDIR)/strace-numa.Tpo -c -o strace-numa.o `test -f 'numa.c' || echo '$(srcdir)/'`numa.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-numa.Tpo $(DEPDIR)/strace-numa.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='numa.c' object='strace-numa.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-netlink_unix_diag.o: netlink_unix_diag.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-netlink_unix_diag.o -MD -MP -MF $(DEPDIR)/libstrace_a-netlink_unix_diag.Tpo -c -o libstrace_a-netlink_unix_diag.o `test -f 'netlink_unix_diag.c' || echo '$(srcdir)/'`netlink_unix_diag.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-netlink_unix_diag.Tpo $(DEPDIR)/libstrace_a-netlink_unix_diag.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='netlink_unix_diag.c' object='libstrace_a-netlink_unix_diag.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-numa.o `test -f 'numa.c' || echo '$(srcdir)/'`numa.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-netlink_unix_diag.o `test -f 'netlink_unix_diag.c' || echo '$(srcdir)/'`netlink_unix_diag.c
 
-strace-numa.obj: numa.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-numa.obj -MD -MP -MF $(DEPDIR)/strace-numa.Tpo -c -o strace-numa.obj `if test -f 'numa.c'; then $(CYGPATH_W) 'numa.c'; else $(CYGPATH_W) '$(srcdir)/numa.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-numa.Tpo $(DEPDIR)/strace-numa.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='numa.c' object='strace-numa.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-netlink_unix_diag.obj: netlink_unix_diag.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-netlink_unix_diag.obj -MD -MP -MF $(DEPDIR)/libstrace_a-netlink_unix_diag.Tpo -c -o libstrace_a-netlink_unix_diag.obj `if test -f 'netlink_unix_diag.c'; then $(CYGPATH_W) 'netlink_unix_diag.c'; else $(CYGPATH_W) '$(srcdir)/netlink_unix_diag.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-netlink_unix_diag.Tpo $(DEPDIR)/libstrace_a-netlink_unix_diag.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='netlink_unix_diag.c' object='libstrace_a-netlink_unix_diag.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-numa.obj `if test -f 'numa.c'; then $(CYGPATH_W) 'numa.c'; else $(CYGPATH_W) '$(srcdir)/numa.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-netlink_unix_diag.obj `if test -f 'netlink_unix_diag.c'; then $(CYGPATH_W) 'netlink_unix_diag.c'; else $(CYGPATH_W) '$(srcdir)/netlink_unix_diag.c'; fi`
 
-strace-number_set.o: number_set.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-number_set.o -MD -MP -MF $(DEPDIR)/strace-number_set.Tpo -c -o strace-number_set.o `test -f 'number_set.c' || echo '$(srcdir)/'`number_set.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-number_set.Tpo $(DEPDIR)/strace-number_set.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='number_set.c' object='strace-number_set.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-nlattr.o: nlattr.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-nlattr.o -MD -MP -MF $(DEPDIR)/libstrace_a-nlattr.Tpo -c -o libstrace_a-nlattr.o `test -f 'nlattr.c' || echo '$(srcdir)/'`nlattr.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-nlattr.Tpo $(DEPDIR)/libstrace_a-nlattr.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='nlattr.c' object='libstrace_a-nlattr.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-number_set.o `test -f 'number_set.c' || echo '$(srcdir)/'`number_set.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-nlattr.o `test -f 'nlattr.c' || echo '$(srcdir)/'`nlattr.c
 
-strace-number_set.obj: number_set.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-number_set.obj -MD -MP -MF $(DEPDIR)/strace-number_set.Tpo -c -o strace-number_set.obj `if test -f 'number_set.c'; then $(CYGPATH_W) 'number_set.c'; else $(CYGPATH_W) '$(srcdir)/number_set.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-number_set.Tpo $(DEPDIR)/strace-number_set.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='number_set.c' object='strace-number_set.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-nlattr.obj: nlattr.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-nlattr.obj -MD -MP -MF $(DEPDIR)/libstrace_a-nlattr.Tpo -c -o libstrace_a-nlattr.obj `if test -f 'nlattr.c'; then $(CYGPATH_W) 'nlattr.c'; else $(CYGPATH_W) '$(srcdir)/nlattr.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-nlattr.Tpo $(DEPDIR)/libstrace_a-nlattr.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='nlattr.c' object='libstrace_a-nlattr.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-number_set.obj `if test -f 'number_set.c'; then $(CYGPATH_W) 'number_set.c'; else $(CYGPATH_W) '$(srcdir)/number_set.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-nlattr.obj `if test -f 'nlattr.c'; then $(CYGPATH_W) 'nlattr.c'; else $(CYGPATH_W) '$(srcdir)/nlattr.c'; fi`
 
-strace-oldstat.o: oldstat.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-oldstat.o -MD -MP -MF $(DEPDIR)/strace-oldstat.Tpo -c -o strace-oldstat.o `test -f 'oldstat.c' || echo '$(srcdir)/'`oldstat.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-oldstat.Tpo $(DEPDIR)/strace-oldstat.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='oldstat.c' object='strace-oldstat.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-nsfs.o: nsfs.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-nsfs.o -MD -MP -MF $(DEPDIR)/libstrace_a-nsfs.Tpo -c -o libstrace_a-nsfs.o `test -f 'nsfs.c' || echo '$(srcdir)/'`nsfs.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-nsfs.Tpo $(DEPDIR)/libstrace_a-nsfs.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='nsfs.c' object='libstrace_a-nsfs.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-oldstat.o `test -f 'oldstat.c' || echo '$(srcdir)/'`oldstat.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-nsfs.o `test -f 'nsfs.c' || echo '$(srcdir)/'`nsfs.c
 
-strace-oldstat.obj: oldstat.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-oldstat.obj -MD -MP -MF $(DEPDIR)/strace-oldstat.Tpo -c -o strace-oldstat.obj `if test -f 'oldstat.c'; then $(CYGPATH_W) 'oldstat.c'; else $(CYGPATH_W) '$(srcdir)/oldstat.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-oldstat.Tpo $(DEPDIR)/strace-oldstat.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='oldstat.c' object='strace-oldstat.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-nsfs.obj: nsfs.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-nsfs.obj -MD -MP -MF $(DEPDIR)/libstrace_a-nsfs.Tpo -c -o libstrace_a-nsfs.obj `if test -f 'nsfs.c'; then $(CYGPATH_W) 'nsfs.c'; else $(CYGPATH_W) '$(srcdir)/nsfs.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-nsfs.Tpo $(DEPDIR)/libstrace_a-nsfs.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='nsfs.c' object='libstrace_a-nsfs.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-oldstat.obj `if test -f 'oldstat.c'; then $(CYGPATH_W) 'oldstat.c'; else $(CYGPATH_W) '$(srcdir)/oldstat.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-nsfs.obj `if test -f 'nsfs.c'; then $(CYGPATH_W) 'nsfs.c'; else $(CYGPATH_W) '$(srcdir)/nsfs.c'; fi`
 
-strace-open.o: open.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-open.o -MD -MP -MF $(DEPDIR)/strace-open.Tpo -c -o strace-open.o `test -f 'open.c' || echo '$(srcdir)/'`open.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-open.Tpo $(DEPDIR)/strace-open.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='open.c' object='strace-open.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-numa.o: numa.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-numa.o -MD -MP -MF $(DEPDIR)/libstrace_a-numa.Tpo -c -o libstrace_a-numa.o `test -f 'numa.c' || echo '$(srcdir)/'`numa.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-numa.Tpo $(DEPDIR)/libstrace_a-numa.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='numa.c' object='libstrace_a-numa.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-open.o `test -f 'open.c' || echo '$(srcdir)/'`open.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-numa.o `test -f 'numa.c' || echo '$(srcdir)/'`numa.c
 
-strace-open.obj: open.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-open.obj -MD -MP -MF $(DEPDIR)/strace-open.Tpo -c -o strace-open.obj `if test -f 'open.c'; then $(CYGPATH_W) 'open.c'; else $(CYGPATH_W) '$(srcdir)/open.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-open.Tpo $(DEPDIR)/strace-open.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='open.c' object='strace-open.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-numa.obj: numa.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-numa.obj -MD -MP -MF $(DEPDIR)/libstrace_a-numa.Tpo -c -o libstrace_a-numa.obj `if test -f 'numa.c'; then $(CYGPATH_W) 'numa.c'; else $(CYGPATH_W) '$(srcdir)/numa.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-numa.Tpo $(DEPDIR)/libstrace_a-numa.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='numa.c' object='libstrace_a-numa.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-open.obj `if test -f 'open.c'; then $(CYGPATH_W) 'open.c'; else $(CYGPATH_W) '$(srcdir)/open.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-numa.obj `if test -f 'numa.c'; then $(CYGPATH_W) 'numa.c'; else $(CYGPATH_W) '$(srcdir)/numa.c'; fi`
 
-strace-or1k_atomic.o: or1k_atomic.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-or1k_atomic.o -MD -MP -MF $(DEPDIR)/strace-or1k_atomic.Tpo -c -o strace-or1k_atomic.o `test -f 'or1k_atomic.c' || echo '$(srcdir)/'`or1k_atomic.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-or1k_atomic.Tpo $(DEPDIR)/strace-or1k_atomic.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='or1k_atomic.c' object='strace-or1k_atomic.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-number_set.o: number_set.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-number_set.o -MD -MP -MF $(DEPDIR)/libstrace_a-number_set.Tpo -c -o libstrace_a-number_set.o `test -f 'number_set.c' || echo '$(srcdir)/'`number_set.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-number_set.Tpo $(DEPDIR)/libstrace_a-number_set.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='number_set.c' object='libstrace_a-number_set.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-or1k_atomic.o `test -f 'or1k_atomic.c' || echo '$(srcdir)/'`or1k_atomic.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-number_set.o `test -f 'number_set.c' || echo '$(srcdir)/'`number_set.c
 
-strace-or1k_atomic.obj: or1k_atomic.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-or1k_atomic.obj -MD -MP -MF $(DEPDIR)/strace-or1k_atomic.Tpo -c -o strace-or1k_atomic.obj `if test -f 'or1k_atomic.c'; then $(CYGPATH_W) 'or1k_atomic.c'; else $(CYGPATH_W) '$(srcdir)/or1k_atomic.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-or1k_atomic.Tpo $(DEPDIR)/strace-or1k_atomic.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='or1k_atomic.c' object='strace-or1k_atomic.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-number_set.obj: number_set.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-number_set.obj -MD -MP -MF $(DEPDIR)/libstrace_a-number_set.Tpo -c -o libstrace_a-number_set.obj `if test -f 'number_set.c'; then $(CYGPATH_W) 'number_set.c'; else $(CYGPATH_W) '$(srcdir)/number_set.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-number_set.Tpo $(DEPDIR)/libstrace_a-number_set.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='number_set.c' object='libstrace_a-number_set.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-or1k_atomic.obj `if test -f 'or1k_atomic.c'; then $(CYGPATH_W) 'or1k_atomic.c'; else $(CYGPATH_W) '$(srcdir)/or1k_atomic.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-number_set.obj `if test -f 'number_set.c'; then $(CYGPATH_W) 'number_set.c'; else $(CYGPATH_W) '$(srcdir)/number_set.c'; fi`
 
-strace-pathtrace.o: pathtrace.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-pathtrace.o -MD -MP -MF $(DEPDIR)/strace-pathtrace.Tpo -c -o strace-pathtrace.o `test -f 'pathtrace.c' || echo '$(srcdir)/'`pathtrace.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-pathtrace.Tpo $(DEPDIR)/strace-pathtrace.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pathtrace.c' object='strace-pathtrace.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-oldstat.o: oldstat.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-oldstat.o -MD -MP -MF $(DEPDIR)/libstrace_a-oldstat.Tpo -c -o libstrace_a-oldstat.o `test -f 'oldstat.c' || echo '$(srcdir)/'`oldstat.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-oldstat.Tpo $(DEPDIR)/libstrace_a-oldstat.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='oldstat.c' object='libstrace_a-oldstat.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-pathtrace.o `test -f 'pathtrace.c' || echo '$(srcdir)/'`pathtrace.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-oldstat.o `test -f 'oldstat.c' || echo '$(srcdir)/'`oldstat.c
 
-strace-pathtrace.obj: pathtrace.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-pathtrace.obj -MD -MP -MF $(DEPDIR)/strace-pathtrace.Tpo -c -o strace-pathtrace.obj `if test -f 'pathtrace.c'; then $(CYGPATH_W) 'pathtrace.c'; else $(CYGPATH_W) '$(srcdir)/pathtrace.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-pathtrace.Tpo $(DEPDIR)/strace-pathtrace.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pathtrace.c' object='strace-pathtrace.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-oldstat.obj: oldstat.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-oldstat.obj -MD -MP -MF $(DEPDIR)/libstrace_a-oldstat.Tpo -c -o libstrace_a-oldstat.obj `if test -f 'oldstat.c'; then $(CYGPATH_W) 'oldstat.c'; else $(CYGPATH_W) '$(srcdir)/oldstat.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-oldstat.Tpo $(DEPDIR)/libstrace_a-oldstat.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='oldstat.c' object='libstrace_a-oldstat.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-pathtrace.obj `if test -f 'pathtrace.c'; then $(CYGPATH_W) 'pathtrace.c'; else $(CYGPATH_W) '$(srcdir)/pathtrace.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-oldstat.obj `if test -f 'oldstat.c'; then $(CYGPATH_W) 'oldstat.c'; else $(CYGPATH_W) '$(srcdir)/oldstat.c'; fi`
 
-strace-perf.o: perf.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-perf.o -MD -MP -MF $(DEPDIR)/strace-perf.Tpo -c -o strace-perf.o `test -f 'perf.c' || echo '$(srcdir)/'`perf.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-perf.Tpo $(DEPDIR)/strace-perf.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='perf.c' object='strace-perf.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-open.o: open.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-open.o -MD -MP -MF $(DEPDIR)/libstrace_a-open.Tpo -c -o libstrace_a-open.o `test -f 'open.c' || echo '$(srcdir)/'`open.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-open.Tpo $(DEPDIR)/libstrace_a-open.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='open.c' object='libstrace_a-open.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-perf.o `test -f 'perf.c' || echo '$(srcdir)/'`perf.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-open.o `test -f 'open.c' || echo '$(srcdir)/'`open.c
 
-strace-perf.obj: perf.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-perf.obj -MD -MP -MF $(DEPDIR)/strace-perf.Tpo -c -o strace-perf.obj `if test -f 'perf.c'; then $(CYGPATH_W) 'perf.c'; else $(CYGPATH_W) '$(srcdir)/perf.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-perf.Tpo $(DEPDIR)/strace-perf.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='perf.c' object='strace-perf.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-open.obj: open.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-open.obj -MD -MP -MF $(DEPDIR)/libstrace_a-open.Tpo -c -o libstrace_a-open.obj `if test -f 'open.c'; then $(CYGPATH_W) 'open.c'; else $(CYGPATH_W) '$(srcdir)/open.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-open.Tpo $(DEPDIR)/libstrace_a-open.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='open.c' object='libstrace_a-open.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-perf.obj `if test -f 'perf.c'; then $(CYGPATH_W) 'perf.c'; else $(CYGPATH_W) '$(srcdir)/perf.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-open.obj `if test -f 'open.c'; then $(CYGPATH_W) 'open.c'; else $(CYGPATH_W) '$(srcdir)/open.c'; fi`
 
-strace-perf_ioctl.o: perf_ioctl.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-perf_ioctl.o -MD -MP -MF $(DEPDIR)/strace-perf_ioctl.Tpo -c -o strace-perf_ioctl.o `test -f 'perf_ioctl.c' || echo '$(srcdir)/'`perf_ioctl.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-perf_ioctl.Tpo $(DEPDIR)/strace-perf_ioctl.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='perf_ioctl.c' object='strace-perf_ioctl.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-open_tree.o: open_tree.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-open_tree.o -MD -MP -MF $(DEPDIR)/libstrace_a-open_tree.Tpo -c -o libstrace_a-open_tree.o `test -f 'open_tree.c' || echo '$(srcdir)/'`open_tree.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-open_tree.Tpo $(DEPDIR)/libstrace_a-open_tree.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='open_tree.c' object='libstrace_a-open_tree.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-perf_ioctl.o `test -f 'perf_ioctl.c' || echo '$(srcdir)/'`perf_ioctl.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-open_tree.o `test -f 'open_tree.c' || echo '$(srcdir)/'`open_tree.c
 
-strace-perf_ioctl.obj: perf_ioctl.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-perf_ioctl.obj -MD -MP -MF $(DEPDIR)/strace-perf_ioctl.Tpo -c -o strace-perf_ioctl.obj `if test -f 'perf_ioctl.c'; then $(CYGPATH_W) 'perf_ioctl.c'; else $(CYGPATH_W) '$(srcdir)/perf_ioctl.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-perf_ioctl.Tpo $(DEPDIR)/strace-perf_ioctl.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='perf_ioctl.c' object='strace-perf_ioctl.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-open_tree.obj: open_tree.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-open_tree.obj -MD -MP -MF $(DEPDIR)/libstrace_a-open_tree.Tpo -c -o libstrace_a-open_tree.obj `if test -f 'open_tree.c'; then $(CYGPATH_W) 'open_tree.c'; else $(CYGPATH_W) '$(srcdir)/open_tree.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-open_tree.Tpo $(DEPDIR)/libstrace_a-open_tree.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='open_tree.c' object='libstrace_a-open_tree.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-perf_ioctl.obj `if test -f 'perf_ioctl.c'; then $(CYGPATH_W) 'perf_ioctl.c'; else $(CYGPATH_W) '$(srcdir)/perf_ioctl.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-open_tree.obj `if test -f 'open_tree.c'; then $(CYGPATH_W) 'open_tree.c'; else $(CYGPATH_W) '$(srcdir)/open_tree.c'; fi`
 
-strace-personality.o: personality.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-personality.o -MD -MP -MF $(DEPDIR)/strace-personality.Tpo -c -o strace-personality.o `test -f 'personality.c' || echo '$(srcdir)/'`personality.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-personality.Tpo $(DEPDIR)/strace-personality.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='personality.c' object='strace-personality.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-or1k_atomic.o: or1k_atomic.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-or1k_atomic.o -MD -MP -MF $(DEPDIR)/libstrace_a-or1k_atomic.Tpo -c -o libstrace_a-or1k_atomic.o `test -f 'or1k_atomic.c' || echo '$(srcdir)/'`or1k_atomic.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-or1k_atomic.Tpo $(DEPDIR)/libstrace_a-or1k_atomic.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='or1k_atomic.c' object='libstrace_a-or1k_atomic.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-personality.o `test -f 'personality.c' || echo '$(srcdir)/'`personality.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-or1k_atomic.o `test -f 'or1k_atomic.c' || echo '$(srcdir)/'`or1k_atomic.c
 
-strace-personality.obj: personality.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-personality.obj -MD -MP -MF $(DEPDIR)/strace-personality.Tpo -c -o strace-personality.obj `if test -f 'personality.c'; then $(CYGPATH_W) 'personality.c'; else $(CYGPATH_W) '$(srcdir)/personality.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-personality.Tpo $(DEPDIR)/strace-personality.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='personality.c' object='strace-personality.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-or1k_atomic.obj: or1k_atomic.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-or1k_atomic.obj -MD -MP -MF $(DEPDIR)/libstrace_a-or1k_atomic.Tpo -c -o libstrace_a-or1k_atomic.obj `if test -f 'or1k_atomic.c'; then $(CYGPATH_W) 'or1k_atomic.c'; else $(CYGPATH_W) '$(srcdir)/or1k_atomic.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-or1k_atomic.Tpo $(DEPDIR)/libstrace_a-or1k_atomic.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='or1k_atomic.c' object='libstrace_a-or1k_atomic.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-personality.obj `if test -f 'personality.c'; then $(CYGPATH_W) 'personality.c'; else $(CYGPATH_W) '$(srcdir)/personality.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-or1k_atomic.obj `if test -f 'or1k_atomic.c'; then $(CYGPATH_W) 'or1k_atomic.c'; else $(CYGPATH_W) '$(srcdir)/or1k_atomic.c'; fi`
 
-strace-pkeys.o: pkeys.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-pkeys.o -MD -MP -MF $(DEPDIR)/strace-pkeys.Tpo -c -o strace-pkeys.o `test -f 'pkeys.c' || echo '$(srcdir)/'`pkeys.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-pkeys.Tpo $(DEPDIR)/strace-pkeys.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pkeys.c' object='strace-pkeys.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-pathtrace.o: pathtrace.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-pathtrace.o -MD -MP -MF $(DEPDIR)/libstrace_a-pathtrace.Tpo -c -o libstrace_a-pathtrace.o `test -f 'pathtrace.c' || echo '$(srcdir)/'`pathtrace.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-pathtrace.Tpo $(DEPDIR)/libstrace_a-pathtrace.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pathtrace.c' object='libstrace_a-pathtrace.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-pkeys.o `test -f 'pkeys.c' || echo '$(srcdir)/'`pkeys.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-pathtrace.o `test -f 'pathtrace.c' || echo '$(srcdir)/'`pathtrace.c
 
-strace-pkeys.obj: pkeys.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-pkeys.obj -MD -MP -MF $(DEPDIR)/strace-pkeys.Tpo -c -o strace-pkeys.obj `if test -f 'pkeys.c'; then $(CYGPATH_W) 'pkeys.c'; else $(CYGPATH_W) '$(srcdir)/pkeys.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-pkeys.Tpo $(DEPDIR)/strace-pkeys.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pkeys.c' object='strace-pkeys.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-pathtrace.obj: pathtrace.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-pathtrace.obj -MD -MP -MF $(DEPDIR)/libstrace_a-pathtrace.Tpo -c -o libstrace_a-pathtrace.obj `if test -f 'pathtrace.c'; then $(CYGPATH_W) 'pathtrace.c'; else $(CYGPATH_W) '$(srcdir)/pathtrace.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-pathtrace.Tpo $(DEPDIR)/libstrace_a-pathtrace.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pathtrace.c' object='libstrace_a-pathtrace.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-pkeys.obj `if test -f 'pkeys.c'; then $(CYGPATH_W) 'pkeys.c'; else $(CYGPATH_W) '$(srcdir)/pkeys.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-pathtrace.obj `if test -f 'pathtrace.c'; then $(CYGPATH_W) 'pathtrace.c'; else $(CYGPATH_W) '$(srcdir)/pathtrace.c'; fi`
 
-strace-poll.o: poll.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-poll.o -MD -MP -MF $(DEPDIR)/strace-poll.Tpo -c -o strace-poll.o `test -f 'poll.c' || echo '$(srcdir)/'`poll.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-poll.Tpo $(DEPDIR)/strace-poll.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='poll.c' object='strace-poll.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-perf.o: perf.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-perf.o -MD -MP -MF $(DEPDIR)/libstrace_a-perf.Tpo -c -o libstrace_a-perf.o `test -f 'perf.c' || echo '$(srcdir)/'`perf.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-perf.Tpo $(DEPDIR)/libstrace_a-perf.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='perf.c' object='libstrace_a-perf.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-poll.o `test -f 'poll.c' || echo '$(srcdir)/'`poll.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-perf.o `test -f 'perf.c' || echo '$(srcdir)/'`perf.c
 
-strace-poll.obj: poll.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-poll.obj -MD -MP -MF $(DEPDIR)/strace-poll.Tpo -c -o strace-poll.obj `if test -f 'poll.c'; then $(CYGPATH_W) 'poll.c'; else $(CYGPATH_W) '$(srcdir)/poll.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-poll.Tpo $(DEPDIR)/strace-poll.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='poll.c' object='strace-poll.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-perf.obj: perf.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-perf.obj -MD -MP -MF $(DEPDIR)/libstrace_a-perf.Tpo -c -o libstrace_a-perf.obj `if test -f 'perf.c'; then $(CYGPATH_W) 'perf.c'; else $(CYGPATH_W) '$(srcdir)/perf.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-perf.Tpo $(DEPDIR)/libstrace_a-perf.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='perf.c' object='libstrace_a-perf.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-poll.obj `if test -f 'poll.c'; then $(CYGPATH_W) 'poll.c'; else $(CYGPATH_W) '$(srcdir)/poll.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-perf.obj `if test -f 'perf.c'; then $(CYGPATH_W) 'perf.c'; else $(CYGPATH_W) '$(srcdir)/perf.c'; fi`
 
-strace-prctl.o: prctl.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-prctl.o -MD -MP -MF $(DEPDIR)/strace-prctl.Tpo -c -o strace-prctl.o `test -f 'prctl.c' || echo '$(srcdir)/'`prctl.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-prctl.Tpo $(DEPDIR)/strace-prctl.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='prctl.c' object='strace-prctl.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-perf_ioctl.o: perf_ioctl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-perf_ioctl.o -MD -MP -MF $(DEPDIR)/libstrace_a-perf_ioctl.Tpo -c -o libstrace_a-perf_ioctl.o `test -f 'perf_ioctl.c' || echo '$(srcdir)/'`perf_ioctl.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-perf_ioctl.Tpo $(DEPDIR)/libstrace_a-perf_ioctl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='perf_ioctl.c' object='libstrace_a-perf_ioctl.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-prctl.o `test -f 'prctl.c' || echo '$(srcdir)/'`prctl.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-perf_ioctl.o `test -f 'perf_ioctl.c' || echo '$(srcdir)/'`perf_ioctl.c
 
-strace-prctl.obj: prctl.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-prctl.obj -MD -MP -MF $(DEPDIR)/strace-prctl.Tpo -c -o strace-prctl.obj `if test -f 'prctl.c'; then $(CYGPATH_W) 'prctl.c'; else $(CYGPATH_W) '$(srcdir)/prctl.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-prctl.Tpo $(DEPDIR)/strace-prctl.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='prctl.c' object='strace-prctl.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-perf_ioctl.obj: perf_ioctl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-perf_ioctl.obj -MD -MP -MF $(DEPDIR)/libstrace_a-perf_ioctl.Tpo -c -o libstrace_a-perf_ioctl.obj `if test -f 'perf_ioctl.c'; then $(CYGPATH_W) 'perf_ioctl.c'; else $(CYGPATH_W) '$(srcdir)/perf_ioctl.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-perf_ioctl.Tpo $(DEPDIR)/libstrace_a-perf_ioctl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='perf_ioctl.c' object='libstrace_a-perf_ioctl.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-prctl.obj `if test -f 'prctl.c'; then $(CYGPATH_W) 'prctl.c'; else $(CYGPATH_W) '$(srcdir)/prctl.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-perf_ioctl.obj `if test -f 'perf_ioctl.c'; then $(CYGPATH_W) 'perf_ioctl.c'; else $(CYGPATH_W) '$(srcdir)/perf_ioctl.c'; fi`
 
-strace-print_aio_sigset.o: print_aio_sigset.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_aio_sigset.o -MD -MP -MF $(DEPDIR)/strace-print_aio_sigset.Tpo -c -o strace-print_aio_sigset.o `test -f 'print_aio_sigset.c' || echo '$(srcdir)/'`print_aio_sigset.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_aio_sigset.Tpo $(DEPDIR)/strace-print_aio_sigset.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_aio_sigset.c' object='strace-print_aio_sigset.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-personality.o: personality.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-personality.o -MD -MP -MF $(DEPDIR)/libstrace_a-personality.Tpo -c -o libstrace_a-personality.o `test -f 'personality.c' || echo '$(srcdir)/'`personality.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-personality.Tpo $(DEPDIR)/libstrace_a-personality.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='personality.c' object='libstrace_a-personality.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-print_aio_sigset.o `test -f 'print_aio_sigset.c' || echo '$(srcdir)/'`print_aio_sigset.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-personality.o `test -f 'personality.c' || echo '$(srcdir)/'`personality.c
 
-strace-print_aio_sigset.obj: print_aio_sigset.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_aio_sigset.obj -MD -MP -MF $(DEPDIR)/strace-print_aio_sigset.Tpo -c -o strace-print_aio_sigset.obj `if test -f 'print_aio_sigset.c'; then $(CYGPATH_W) 'print_aio_sigset.c'; else $(CYGPATH_W) '$(srcdir)/print_aio_sigset.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_aio_sigset.Tpo $(DEPDIR)/strace-print_aio_sigset.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_aio_sigset.c' object='strace-print_aio_sigset.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-personality.obj: personality.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-personality.obj -MD -MP -MF $(DEPDIR)/libstrace_a-personality.Tpo -c -o libstrace_a-personality.obj `if test -f 'personality.c'; then $(CYGPATH_W) 'personality.c'; else $(CYGPATH_W) '$(srcdir)/personality.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-personality.Tpo $(DEPDIR)/libstrace_a-personality.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='personality.c' object='libstrace_a-personality.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-print_aio_sigset.obj `if test -f 'print_aio_sigset.c'; then $(CYGPATH_W) 'print_aio_sigset.c'; else $(CYGPATH_W) '$(srcdir)/print_aio_sigset.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-personality.obj `if test -f 'personality.c'; then $(CYGPATH_W) 'personality.c'; else $(CYGPATH_W) '$(srcdir)/personality.c'; fi`
 
-strace-print_dev_t.o: print_dev_t.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_dev_t.o -MD -MP -MF $(DEPDIR)/strace-print_dev_t.Tpo -c -o strace-print_dev_t.o `test -f 'print_dev_t.c' || echo '$(srcdir)/'`print_dev_t.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_dev_t.Tpo $(DEPDIR)/strace-print_dev_t.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_dev_t.c' object='strace-print_dev_t.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-pidfd_getfd.o: pidfd_getfd.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-pidfd_getfd.o -MD -MP -MF $(DEPDIR)/libstrace_a-pidfd_getfd.Tpo -c -o libstrace_a-pidfd_getfd.o `test -f 'pidfd_getfd.c' || echo '$(srcdir)/'`pidfd_getfd.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-pidfd_getfd.Tpo $(DEPDIR)/libstrace_a-pidfd_getfd.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pidfd_getfd.c' object='libstrace_a-pidfd_getfd.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-print_dev_t.o `test -f 'print_dev_t.c' || echo '$(srcdir)/'`print_dev_t.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-pidfd_getfd.o `test -f 'pidfd_getfd.c' || echo '$(srcdir)/'`pidfd_getfd.c
 
-strace-print_dev_t.obj: print_dev_t.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_dev_t.obj -MD -MP -MF $(DEPDIR)/strace-print_dev_t.Tpo -c -o strace-print_dev_t.obj `if test -f 'print_dev_t.c'; then $(CYGPATH_W) 'print_dev_t.c'; else $(CYGPATH_W) '$(srcdir)/print_dev_t.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_dev_t.Tpo $(DEPDIR)/strace-print_dev_t.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_dev_t.c' object='strace-print_dev_t.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-pidfd_getfd.obj: pidfd_getfd.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-pidfd_getfd.obj -MD -MP -MF $(DEPDIR)/libstrace_a-pidfd_getfd.Tpo -c -o libstrace_a-pidfd_getfd.obj `if test -f 'pidfd_getfd.c'; then $(CYGPATH_W) 'pidfd_getfd.c'; else $(CYGPATH_W) '$(srcdir)/pidfd_getfd.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-pidfd_getfd.Tpo $(DEPDIR)/libstrace_a-pidfd_getfd.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pidfd_getfd.c' object='libstrace_a-pidfd_getfd.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-print_dev_t.obj `if test -f 'print_dev_t.c'; then $(CYGPATH_W) 'print_dev_t.c'; else $(CYGPATH_W) '$(srcdir)/print_dev_t.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-pidfd_getfd.obj `if test -f 'pidfd_getfd.c'; then $(CYGPATH_W) 'pidfd_getfd.c'; else $(CYGPATH_W) '$(srcdir)/pidfd_getfd.c'; fi`
 
-strace-print_group_req.o: print_group_req.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_group_req.o -MD -MP -MF $(DEPDIR)/strace-print_group_req.Tpo -c -o strace-print_group_req.o `test -f 'print_group_req.c' || echo '$(srcdir)/'`print_group_req.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_group_req.Tpo $(DEPDIR)/strace-print_group_req.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_group_req.c' object='strace-print_group_req.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-pidfd_open.o: pidfd_open.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-pidfd_open.o -MD -MP -MF $(DEPDIR)/libstrace_a-pidfd_open.Tpo -c -o libstrace_a-pidfd_open.o `test -f 'pidfd_open.c' || echo '$(srcdir)/'`pidfd_open.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-pidfd_open.Tpo $(DEPDIR)/libstrace_a-pidfd_open.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pidfd_open.c' object='libstrace_a-pidfd_open.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-print_group_req.o `test -f 'print_group_req.c' || echo '$(srcdir)/'`print_group_req.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-pidfd_open.o `test -f 'pidfd_open.c' || echo '$(srcdir)/'`pidfd_open.c
 
-strace-print_group_req.obj: print_group_req.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_group_req.obj -MD -MP -MF $(DEPDIR)/strace-print_group_req.Tpo -c -o strace-print_group_req.obj `if test -f 'print_group_req.c'; then $(CYGPATH_W) 'print_group_req.c'; else $(CYGPATH_W) '$(srcdir)/print_group_req.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_group_req.Tpo $(DEPDIR)/strace-print_group_req.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_group_req.c' object='strace-print_group_req.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-pidfd_open.obj: pidfd_open.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-pidfd_open.obj -MD -MP -MF $(DEPDIR)/libstrace_a-pidfd_open.Tpo -c -o libstrace_a-pidfd_open.obj `if test -f 'pidfd_open.c'; then $(CYGPATH_W) 'pidfd_open.c'; else $(CYGPATH_W) '$(srcdir)/pidfd_open.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-pidfd_open.Tpo $(DEPDIR)/libstrace_a-pidfd_open.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pidfd_open.c' object='libstrace_a-pidfd_open.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-print_group_req.obj `if test -f 'print_group_req.c'; then $(CYGPATH_W) 'print_group_req.c'; else $(CYGPATH_W) '$(srcdir)/print_group_req.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-pidfd_open.obj `if test -f 'pidfd_open.c'; then $(CYGPATH_W) 'pidfd_open.c'; else $(CYGPATH_W) '$(srcdir)/pidfd_open.c'; fi`
 
-strace-print_ifindex.o: print_ifindex.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_ifindex.o -MD -MP -MF $(DEPDIR)/strace-print_ifindex.Tpo -c -o strace-print_ifindex.o `test -f 'print_ifindex.c' || echo '$(srcdir)/'`print_ifindex.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_ifindex.Tpo $(DEPDIR)/strace-print_ifindex.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_ifindex.c' object='strace-print_ifindex.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-pidns.o: pidns.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-pidns.o -MD -MP -MF $(DEPDIR)/libstrace_a-pidns.Tpo -c -o libstrace_a-pidns.o `test -f 'pidns.c' || echo '$(srcdir)/'`pidns.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-pidns.Tpo $(DEPDIR)/libstrace_a-pidns.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pidns.c' object='libstrace_a-pidns.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-print_ifindex.o `test -f 'print_ifindex.c' || echo '$(srcdir)/'`print_ifindex.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-pidns.o `test -f 'pidns.c' || echo '$(srcdir)/'`pidns.c
 
-strace-print_ifindex.obj: print_ifindex.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_ifindex.obj -MD -MP -MF $(DEPDIR)/strace-print_ifindex.Tpo -c -o strace-print_ifindex.obj `if test -f 'print_ifindex.c'; then $(CYGPATH_W) 'print_ifindex.c'; else $(CYGPATH_W) '$(srcdir)/print_ifindex.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_ifindex.Tpo $(DEPDIR)/strace-print_ifindex.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_ifindex.c' object='strace-print_ifindex.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-pidns.obj: pidns.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-pidns.obj -MD -MP -MF $(DEPDIR)/libstrace_a-pidns.Tpo -c -o libstrace_a-pidns.obj `if test -f 'pidns.c'; then $(CYGPATH_W) 'pidns.c'; else $(CYGPATH_W) '$(srcdir)/pidns.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-pidns.Tpo $(DEPDIR)/libstrace_a-pidns.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pidns.c' object='libstrace_a-pidns.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-print_ifindex.obj `if test -f 'print_ifindex.c'; then $(CYGPATH_W) 'print_ifindex.c'; else $(CYGPATH_W) '$(srcdir)/print_ifindex.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-pidns.obj `if test -f 'pidns.c'; then $(CYGPATH_W) 'pidns.c'; else $(CYGPATH_W) '$(srcdir)/pidns.c'; fi`
 
-strace-print_instruction_pointer.o: print_instruction_pointer.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_instruction_pointer.o -MD -MP -MF $(DEPDIR)/strace-print_instruction_pointer.Tpo -c -o strace-print_instruction_pointer.o `test -f 'print_instruction_pointer.c' || echo '$(srcdir)/'`print_instruction_pointer.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_instruction_pointer.Tpo $(DEPDIR)/strace-print_instruction_pointer.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_instruction_pointer.c' object='strace-print_instruction_pointer.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-pkeys.o: pkeys.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-pkeys.o -MD -MP -MF $(DEPDIR)/libstrace_a-pkeys.Tpo -c -o libstrace_a-pkeys.o `test -f 'pkeys.c' || echo '$(srcdir)/'`pkeys.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-pkeys.Tpo $(DEPDIR)/libstrace_a-pkeys.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pkeys.c' object='libstrace_a-pkeys.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-print_instruction_pointer.o `test -f 'print_instruction_pointer.c' || echo '$(srcdir)/'`print_instruction_pointer.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-pkeys.o `test -f 'pkeys.c' || echo '$(srcdir)/'`pkeys.c
 
-strace-print_instruction_pointer.obj: print_instruction_pointer.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_instruction_pointer.obj -MD -MP -MF $(DEPDIR)/strace-print_instruction_pointer.Tpo -c -o strace-print_instruction_pointer.obj `if test -f 'print_instruction_pointer.c'; then $(CYGPATH_W) 'print_instruction_pointer.c'; else $(CYGPATH_W) '$(srcdir)/print_instruction_pointer.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_instruction_pointer.Tpo $(DEPDIR)/strace-print_instruction_pointer.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_instruction_pointer.c' object='strace-print_instruction_pointer.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-pkeys.obj: pkeys.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-pkeys.obj -MD -MP -MF $(DEPDIR)/libstrace_a-pkeys.Tpo -c -o libstrace_a-pkeys.obj `if test -f 'pkeys.c'; then $(CYGPATH_W) 'pkeys.c'; else $(CYGPATH_W) '$(srcdir)/pkeys.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-pkeys.Tpo $(DEPDIR)/libstrace_a-pkeys.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pkeys.c' object='libstrace_a-pkeys.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-print_instruction_pointer.obj `if test -f 'print_instruction_pointer.c'; then $(CYGPATH_W) 'print_instruction_pointer.c'; else $(CYGPATH_W) '$(srcdir)/print_instruction_pointer.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-pkeys.obj `if test -f 'pkeys.c'; then $(CYGPATH_W) 'pkeys.c'; else $(CYGPATH_W) '$(srcdir)/pkeys.c'; fi`
 
-strace-print_kernel_version.o: print_kernel_version.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_kernel_version.o -MD -MP -MF $(DEPDIR)/strace-print_kernel_version.Tpo -c -o strace-print_kernel_version.o `test -f 'print_kernel_version.c' || echo '$(srcdir)/'`print_kernel_version.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_kernel_version.Tpo $(DEPDIR)/strace-print_kernel_version.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_kernel_version.c' object='strace-print_kernel_version.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-poll.o: poll.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-poll.o -MD -MP -MF $(DEPDIR)/libstrace_a-poll.Tpo -c -o libstrace_a-poll.o `test -f 'poll.c' || echo '$(srcdir)/'`poll.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-poll.Tpo $(DEPDIR)/libstrace_a-poll.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='poll.c' object='libstrace_a-poll.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-print_kernel_version.o `test -f 'print_kernel_version.c' || echo '$(srcdir)/'`print_kernel_version.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-poll.o `test -f 'poll.c' || echo '$(srcdir)/'`poll.c
 
-strace-print_kernel_version.obj: print_kernel_version.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_kernel_version.obj -MD -MP -MF $(DEPDIR)/strace-print_kernel_version.Tpo -c -o strace-print_kernel_version.obj `if test -f 'print_kernel_version.c'; then $(CYGPATH_W) 'print_kernel_version.c'; else $(CYGPATH_W) '$(srcdir)/print_kernel_version.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_kernel_version.Tpo $(DEPDIR)/strace-print_kernel_version.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_kernel_version.c' object='strace-print_kernel_version.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-poll.obj: poll.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-poll.obj -MD -MP -MF $(DEPDIR)/libstrace_a-poll.Tpo -c -o libstrace_a-poll.obj `if test -f 'poll.c'; then $(CYGPATH_W) 'poll.c'; else $(CYGPATH_W) '$(srcdir)/poll.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-poll.Tpo $(DEPDIR)/libstrace_a-poll.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='poll.c' object='libstrace_a-poll.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-print_kernel_version.obj `if test -f 'print_kernel_version.c'; then $(CYGPATH_W) 'print_kernel_version.c'; else $(CYGPATH_W) '$(srcdir)/print_kernel_version.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-poll.obj `if test -f 'poll.c'; then $(CYGPATH_W) 'poll.c'; else $(CYGPATH_W) '$(srcdir)/poll.c'; fi`
 
-strace-print_mac.o: print_mac.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_mac.o -MD -MP -MF $(DEPDIR)/strace-print_mac.Tpo -c -o strace-print_mac.o `test -f 'print_mac.c' || echo '$(srcdir)/'`print_mac.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_mac.Tpo $(DEPDIR)/strace-print_mac.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_mac.c' object='strace-print_mac.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-prctl.o: prctl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-prctl.o -MD -MP -MF $(DEPDIR)/libstrace_a-prctl.Tpo -c -o libstrace_a-prctl.o `test -f 'prctl.c' || echo '$(srcdir)/'`prctl.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-prctl.Tpo $(DEPDIR)/libstrace_a-prctl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='prctl.c' object='libstrace_a-prctl.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-print_mac.o `test -f 'print_mac.c' || echo '$(srcdir)/'`print_mac.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-prctl.o `test -f 'prctl.c' || echo '$(srcdir)/'`prctl.c
 
-strace-print_mac.obj: print_mac.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_mac.obj -MD -MP -MF $(DEPDIR)/strace-print_mac.Tpo -c -o strace-print_mac.obj `if test -f 'print_mac.c'; then $(CYGPATH_W) 'print_mac.c'; else $(CYGPATH_W) '$(srcdir)/print_mac.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_mac.Tpo $(DEPDIR)/strace-print_mac.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_mac.c' object='strace-print_mac.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-prctl.obj: prctl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-prctl.obj -MD -MP -MF $(DEPDIR)/libstrace_a-prctl.Tpo -c -o libstrace_a-prctl.obj `if test -f 'prctl.c'; then $(CYGPATH_W) 'prctl.c'; else $(CYGPATH_W) '$(srcdir)/prctl.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-prctl.Tpo $(DEPDIR)/libstrace_a-prctl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='prctl.c' object='libstrace_a-prctl.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-print_mac.obj `if test -f 'print_mac.c'; then $(CYGPATH_W) 'print_mac.c'; else $(CYGPATH_W) '$(srcdir)/print_mac.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-prctl.obj `if test -f 'prctl.c'; then $(CYGPATH_W) 'prctl.c'; else $(CYGPATH_W) '$(srcdir)/prctl.c'; fi`
 
-strace-print_mq_attr.o: print_mq_attr.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_mq_attr.o -MD -MP -MF $(DEPDIR)/strace-print_mq_attr.Tpo -c -o strace-print_mq_attr.o `test -f 'print_mq_attr.c' || echo '$(srcdir)/'`print_mq_attr.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_mq_attr.Tpo $(DEPDIR)/strace-print_mq_attr.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_mq_attr.c' object='strace-print_mq_attr.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-print_aio_sigset.o: print_aio_sigset.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-print_aio_sigset.o -MD -MP -MF $(DEPDIR)/libstrace_a-print_aio_sigset.Tpo -c -o libstrace_a-print_aio_sigset.o `test -f 'print_aio_sigset.c' || echo '$(srcdir)/'`print_aio_sigset.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-print_aio_sigset.Tpo $(DEPDIR)/libstrace_a-print_aio_sigset.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_aio_sigset.c' object='libstrace_a-print_aio_sigset.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-print_mq_attr.o `test -f 'print_mq_attr.c' || echo '$(srcdir)/'`print_mq_attr.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-print_aio_sigset.o `test -f 'print_aio_sigset.c' || echo '$(srcdir)/'`print_aio_sigset.c
 
-strace-print_mq_attr.obj: print_mq_attr.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_mq_attr.obj -MD -MP -MF $(DEPDIR)/strace-print_mq_attr.Tpo -c -o strace-print_mq_attr.obj `if test -f 'print_mq_attr.c'; then $(CYGPATH_W) 'print_mq_attr.c'; else $(CYGPATH_W) '$(srcdir)/print_mq_attr.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_mq_attr.Tpo $(DEPDIR)/strace-print_mq_attr.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_mq_attr.c' object='strace-print_mq_attr.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-print_aio_sigset.obj: print_aio_sigset.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-print_aio_sigset.obj -MD -MP -MF $(DEPDIR)/libstrace_a-print_aio_sigset.Tpo -c -o libstrace_a-print_aio_sigset.obj `if test -f 'print_aio_sigset.c'; then $(CYGPATH_W) 'print_aio_sigset.c'; else $(CYGPATH_W) '$(srcdir)/print_aio_sigset.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-print_aio_sigset.Tpo $(DEPDIR)/libstrace_a-print_aio_sigset.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_aio_sigset.c' object='libstrace_a-print_aio_sigset.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-print_mq_attr.obj `if test -f 'print_mq_attr.c'; then $(CYGPATH_W) 'print_mq_attr.c'; else $(CYGPATH_W) '$(srcdir)/print_mq_attr.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-print_aio_sigset.obj `if test -f 'print_aio_sigset.c'; then $(CYGPATH_W) 'print_aio_sigset.c'; else $(CYGPATH_W) '$(srcdir)/print_aio_sigset.c'; fi`
 
-strace-print_msgbuf.o: print_msgbuf.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_msgbuf.o -MD -MP -MF $(DEPDIR)/strace-print_msgbuf.Tpo -c -o strace-print_msgbuf.o `test -f 'print_msgbuf.c' || echo '$(srcdir)/'`print_msgbuf.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_msgbuf.Tpo $(DEPDIR)/strace-print_msgbuf.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_msgbuf.c' object='strace-print_msgbuf.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-print_dev_t.o: print_dev_t.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-print_dev_t.o -MD -MP -MF $(DEPDIR)/libstrace_a-print_dev_t.Tpo -c -o libstrace_a-print_dev_t.o `test -f 'print_dev_t.c' || echo '$(srcdir)/'`print_dev_t.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-print_dev_t.Tpo $(DEPDIR)/libstrace_a-print_dev_t.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_dev_t.c' object='libstrace_a-print_dev_t.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-print_msgbuf.o `test -f 'print_msgbuf.c' || echo '$(srcdir)/'`print_msgbuf.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-print_dev_t.o `test -f 'print_dev_t.c' || echo '$(srcdir)/'`print_dev_t.c
 
-strace-print_msgbuf.obj: print_msgbuf.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_msgbuf.obj -MD -MP -MF $(DEPDIR)/strace-print_msgbuf.Tpo -c -o strace-print_msgbuf.obj `if test -f 'print_msgbuf.c'; then $(CYGPATH_W) 'print_msgbuf.c'; else $(CYGPATH_W) '$(srcdir)/print_msgbuf.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_msgbuf.Tpo $(DEPDIR)/strace-print_msgbuf.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_msgbuf.c' object='strace-print_msgbuf.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-print_dev_t.obj: print_dev_t.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-print_dev_t.obj -MD -MP -MF $(DEPDIR)/libstrace_a-print_dev_t.Tpo -c -o libstrace_a-print_dev_t.obj `if test -f 'print_dev_t.c'; then $(CYGPATH_W) 'print_dev_t.c'; else $(CYGPATH_W) '$(srcdir)/print_dev_t.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-print_dev_t.Tpo $(DEPDIR)/libstrace_a-print_dev_t.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_dev_t.c' object='libstrace_a-print_dev_t.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-print_msgbuf.obj `if test -f 'print_msgbuf.c'; then $(CYGPATH_W) 'print_msgbuf.c'; else $(CYGPATH_W) '$(srcdir)/print_msgbuf.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-print_dev_t.obj `if test -f 'print_dev_t.c'; then $(CYGPATH_W) 'print_dev_t.c'; else $(CYGPATH_W) '$(srcdir)/print_dev_t.c'; fi`
 
-strace-print_sg_req_info.o: print_sg_req_info.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_sg_req_info.o -MD -MP -MF $(DEPDIR)/strace-print_sg_req_info.Tpo -c -o strace-print_sg_req_info.o `test -f 'print_sg_req_info.c' || echo '$(srcdir)/'`print_sg_req_info.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_sg_req_info.Tpo $(DEPDIR)/strace-print_sg_req_info.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_sg_req_info.c' object='strace-print_sg_req_info.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-print_group_req.o: print_group_req.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-print_group_req.o -MD -MP -MF $(DEPDIR)/libstrace_a-print_group_req.Tpo -c -o libstrace_a-print_group_req.o `test -f 'print_group_req.c' || echo '$(srcdir)/'`print_group_req.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-print_group_req.Tpo $(DEPDIR)/libstrace_a-print_group_req.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_group_req.c' object='libstrace_a-print_group_req.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-print_sg_req_info.o `test -f 'print_sg_req_info.c' || echo '$(srcdir)/'`print_sg_req_info.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-print_group_req.o `test -f 'print_group_req.c' || echo '$(srcdir)/'`print_group_req.c
 
-strace-print_sg_req_info.obj: print_sg_req_info.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_sg_req_info.obj -MD -MP -MF $(DEPDIR)/strace-print_sg_req_info.Tpo -c -o strace-print_sg_req_info.obj `if test -f 'print_sg_req_info.c'; then $(CYGPATH_W) 'print_sg_req_info.c'; else $(CYGPATH_W) '$(srcdir)/print_sg_req_info.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_sg_req_info.Tpo $(DEPDIR)/strace-print_sg_req_info.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_sg_req_info.c' object='strace-print_sg_req_info.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-print_group_req.obj: print_group_req.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-print_group_req.obj -MD -MP -MF $(DEPDIR)/libstrace_a-print_group_req.Tpo -c -o libstrace_a-print_group_req.obj `if test -f 'print_group_req.c'; then $(CYGPATH_W) 'print_group_req.c'; else $(CYGPATH_W) '$(srcdir)/print_group_req.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-print_group_req.Tpo $(DEPDIR)/libstrace_a-print_group_req.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_group_req.c' object='libstrace_a-print_group_req.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-print_sg_req_info.obj `if test -f 'print_sg_req_info.c'; then $(CYGPATH_W) 'print_sg_req_info.c'; else $(CYGPATH_W) '$(srcdir)/print_sg_req_info.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-print_group_req.obj `if test -f 'print_group_req.c'; then $(CYGPATH_W) 'print_group_req.c'; else $(CYGPATH_W) '$(srcdir)/print_group_req.c'; fi`
 
-strace-print_sigevent.o: print_sigevent.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_sigevent.o -MD -MP -MF $(DEPDIR)/strace-print_sigevent.Tpo -c -o strace-print_sigevent.o `test -f 'print_sigevent.c' || echo '$(srcdir)/'`print_sigevent.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_sigevent.Tpo $(DEPDIR)/strace-print_sigevent.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_sigevent.c' object='strace-print_sigevent.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-print_ifindex.o: print_ifindex.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-print_ifindex.o -MD -MP -MF $(DEPDIR)/libstrace_a-print_ifindex.Tpo -c -o libstrace_a-print_ifindex.o `test -f 'print_ifindex.c' || echo '$(srcdir)/'`print_ifindex.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-print_ifindex.Tpo $(DEPDIR)/libstrace_a-print_ifindex.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_ifindex.c' object='libstrace_a-print_ifindex.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-print_sigevent.o `test -f 'print_sigevent.c' || echo '$(srcdir)/'`print_sigevent.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-print_ifindex.o `test -f 'print_ifindex.c' || echo '$(srcdir)/'`print_ifindex.c
 
-strace-print_sigevent.obj: print_sigevent.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_sigevent.obj -MD -MP -MF $(DEPDIR)/strace-print_sigevent.Tpo -c -o strace-print_sigevent.obj `if test -f 'print_sigevent.c'; then $(CYGPATH_W) 'print_sigevent.c'; else $(CYGPATH_W) '$(srcdir)/print_sigevent.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_sigevent.Tpo $(DEPDIR)/strace-print_sigevent.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_sigevent.c' object='strace-print_sigevent.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-print_ifindex.obj: print_ifindex.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-print_ifindex.obj -MD -MP -MF $(DEPDIR)/libstrace_a-print_ifindex.Tpo -c -o libstrace_a-print_ifindex.obj `if test -f 'print_ifindex.c'; then $(CYGPATH_W) 'print_ifindex.c'; else $(CYGPATH_W) '$(srcdir)/print_ifindex.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-print_ifindex.Tpo $(DEPDIR)/libstrace_a-print_ifindex.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_ifindex.c' object='libstrace_a-print_ifindex.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-print_sigevent.obj `if test -f 'print_sigevent.c'; then $(CYGPATH_W) 'print_sigevent.c'; else $(CYGPATH_W) '$(srcdir)/print_sigevent.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-print_ifindex.obj `if test -f 'print_ifindex.c'; then $(CYGPATH_W) 'print_ifindex.c'; else $(CYGPATH_W) '$(srcdir)/print_ifindex.c'; fi`
 
-strace-print_statfs.o: print_statfs.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_statfs.o -MD -MP -MF $(DEPDIR)/strace-print_statfs.Tpo -c -o strace-print_statfs.o `test -f 'print_statfs.c' || echo '$(srcdir)/'`print_statfs.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_statfs.Tpo $(DEPDIR)/strace-print_statfs.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_statfs.c' object='strace-print_statfs.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-print_instruction_pointer.o: print_instruction_pointer.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-print_instruction_pointer.o -MD -MP -MF $(DEPDIR)/libstrace_a-print_instruction_pointer.Tpo -c -o libstrace_a-print_instruction_pointer.o `test -f 'print_instruction_pointer.c' || echo '$(srcdir)/'`print_instruction_pointer.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-print_instruction_pointer.Tpo $(DEPDIR)/libstrace_a-print_instruction_pointer.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_instruction_pointer.c' object='libstrace_a-print_instruction_pointer.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-print_statfs.o `test -f 'print_statfs.c' || echo '$(srcdir)/'`print_statfs.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-print_instruction_pointer.o `test -f 'print_instruction_pointer.c' || echo '$(srcdir)/'`print_instruction_pointer.c
 
-strace-print_statfs.obj: print_statfs.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_statfs.obj -MD -MP -MF $(DEPDIR)/strace-print_statfs.Tpo -c -o strace-print_statfs.obj `if test -f 'print_statfs.c'; then $(CYGPATH_W) 'print_statfs.c'; else $(CYGPATH_W) '$(srcdir)/print_statfs.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_statfs.Tpo $(DEPDIR)/strace-print_statfs.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_statfs.c' object='strace-print_statfs.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-print_instruction_pointer.obj: print_instruction_pointer.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-print_instruction_pointer.obj -MD -MP -MF $(DEPDIR)/libstrace_a-print_instruction_pointer.Tpo -c -o libstrace_a-print_instruction_pointer.obj `if test -f 'print_instruction_pointer.c'; then $(CYGPATH_W) 'print_instruction_pointer.c'; else $(CYGPATH_W) '$(srcdir)/print_instruction_pointer.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-print_instruction_pointer.Tpo $(DEPDIR)/libstrace_a-print_instruction_pointer.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_instruction_pointer.c' object='libstrace_a-print_instruction_pointer.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-print_statfs.obj `if test -f 'print_statfs.c'; then $(CYGPATH_W) 'print_statfs.c'; else $(CYGPATH_W) '$(srcdir)/print_statfs.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-print_instruction_pointer.obj `if test -f 'print_instruction_pointer.c'; then $(CYGPATH_W) 'print_instruction_pointer.c'; else $(CYGPATH_W) '$(srcdir)/print_instruction_pointer.c'; fi`
 
-strace-print_struct_stat.o: print_struct_stat.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_struct_stat.o -MD -MP -MF $(DEPDIR)/strace-print_struct_stat.Tpo -c -o strace-print_struct_stat.o `test -f 'print_struct_stat.c' || echo '$(srcdir)/'`print_struct_stat.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_struct_stat.Tpo $(DEPDIR)/strace-print_struct_stat.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_struct_stat.c' object='strace-print_struct_stat.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-print_kernel_version.o: print_kernel_version.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-print_kernel_version.o -MD -MP -MF $(DEPDIR)/libstrace_a-print_kernel_version.Tpo -c -o libstrace_a-print_kernel_version.o `test -f 'print_kernel_version.c' || echo '$(srcdir)/'`print_kernel_version.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-print_kernel_version.Tpo $(DEPDIR)/libstrace_a-print_kernel_version.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_kernel_version.c' object='libstrace_a-print_kernel_version.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-print_struct_stat.o `test -f 'print_struct_stat.c' || echo '$(srcdir)/'`print_struct_stat.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-print_kernel_version.o `test -f 'print_kernel_version.c' || echo '$(srcdir)/'`print_kernel_version.c
 
-strace-print_struct_stat.obj: print_struct_stat.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_struct_stat.obj -MD -MP -MF $(DEPDIR)/strace-print_struct_stat.Tpo -c -o strace-print_struct_stat.obj `if test -f 'print_struct_stat.c'; then $(CYGPATH_W) 'print_struct_stat.c'; else $(CYGPATH_W) '$(srcdir)/print_struct_stat.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_struct_stat.Tpo $(DEPDIR)/strace-print_struct_stat.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_struct_stat.c' object='strace-print_struct_stat.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-print_kernel_version.obj: print_kernel_version.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-print_kernel_version.obj -MD -MP -MF $(DEPDIR)/libstrace_a-print_kernel_version.Tpo -c -o libstrace_a-print_kernel_version.obj `if test -f 'print_kernel_version.c'; then $(CYGPATH_W) 'print_kernel_version.c'; else $(CYGPATH_W) '$(srcdir)/print_kernel_version.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-print_kernel_version.Tpo $(DEPDIR)/libstrace_a-print_kernel_version.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_kernel_version.c' object='libstrace_a-print_kernel_version.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-print_struct_stat.obj `if test -f 'print_struct_stat.c'; then $(CYGPATH_W) 'print_struct_stat.c'; else $(CYGPATH_W) '$(srcdir)/print_struct_stat.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-print_kernel_version.obj `if test -f 'print_kernel_version.c'; then $(CYGPATH_W) 'print_kernel_version.c'; else $(CYGPATH_W) '$(srcdir)/print_kernel_version.c'; fi`
 
-strace-print_time.o: print_time.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_time.o -MD -MP -MF $(DEPDIR)/strace-print_time.Tpo -c -o strace-print_time.o `test -f 'print_time.c' || echo '$(srcdir)/'`print_time.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_time.Tpo $(DEPDIR)/strace-print_time.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_time.c' object='strace-print_time.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-print_mac.o: print_mac.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-print_mac.o -MD -MP -MF $(DEPDIR)/libstrace_a-print_mac.Tpo -c -o libstrace_a-print_mac.o `test -f 'print_mac.c' || echo '$(srcdir)/'`print_mac.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-print_mac.Tpo $(DEPDIR)/libstrace_a-print_mac.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_mac.c' object='libstrace_a-print_mac.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-print_time.o `test -f 'print_time.c' || echo '$(srcdir)/'`print_time.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-print_mac.o `test -f 'print_mac.c' || echo '$(srcdir)/'`print_mac.c
 
-strace-print_time.obj: print_time.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_time.obj -MD -MP -MF $(DEPDIR)/strace-print_time.Tpo -c -o strace-print_time.obj `if test -f 'print_time.c'; then $(CYGPATH_W) 'print_time.c'; else $(CYGPATH_W) '$(srcdir)/print_time.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_time.Tpo $(DEPDIR)/strace-print_time.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_time.c' object='strace-print_time.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-print_mac.obj: print_mac.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-print_mac.obj -MD -MP -MF $(DEPDIR)/libstrace_a-print_mac.Tpo -c -o libstrace_a-print_mac.obj `if test -f 'print_mac.c'; then $(CYGPATH_W) 'print_mac.c'; else $(CYGPATH_W) '$(srcdir)/print_mac.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-print_mac.Tpo $(DEPDIR)/libstrace_a-print_mac.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_mac.c' object='libstrace_a-print_mac.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-print_time.obj `if test -f 'print_time.c'; then $(CYGPATH_W) 'print_time.c'; else $(CYGPATH_W) '$(srcdir)/print_time.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-print_mac.obj `if test -f 'print_mac.c'; then $(CYGPATH_W) 'print_mac.c'; else $(CYGPATH_W) '$(srcdir)/print_mac.c'; fi`
 
-strace-print_timespec.o: print_timespec.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_timespec.o -MD -MP -MF $(DEPDIR)/strace-print_timespec.Tpo -c -o strace-print_timespec.o `test -f 'print_timespec.c' || echo '$(srcdir)/'`print_timespec.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_timespec.Tpo $(DEPDIR)/strace-print_timespec.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_timespec.c' object='strace-print_timespec.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-print_mq_attr.o: print_mq_attr.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-print_mq_attr.o -MD -MP -MF $(DEPDIR)/libstrace_a-print_mq_attr.Tpo -c -o libstrace_a-print_mq_attr.o `test -f 'print_mq_attr.c' || echo '$(srcdir)/'`print_mq_attr.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-print_mq_attr.Tpo $(DEPDIR)/libstrace_a-print_mq_attr.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_mq_attr.c' object='libstrace_a-print_mq_attr.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-print_timespec.o `test -f 'print_timespec.c' || echo '$(srcdir)/'`print_timespec.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-print_mq_attr.o `test -f 'print_mq_attr.c' || echo '$(srcdir)/'`print_mq_attr.c
 
-strace-print_timespec.obj: print_timespec.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_timespec.obj -MD -MP -MF $(DEPDIR)/strace-print_timespec.Tpo -c -o strace-print_timespec.obj `if test -f 'print_timespec.c'; then $(CYGPATH_W) 'print_timespec.c'; else $(CYGPATH_W) '$(srcdir)/print_timespec.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_timespec.Tpo $(DEPDIR)/strace-print_timespec.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_timespec.c' object='strace-print_timespec.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-print_mq_attr.obj: print_mq_attr.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-print_mq_attr.obj -MD -MP -MF $(DEPDIR)/libstrace_a-print_mq_attr.Tpo -c -o libstrace_a-print_mq_attr.obj `if test -f 'print_mq_attr.c'; then $(CYGPATH_W) 'print_mq_attr.c'; else $(CYGPATH_W) '$(srcdir)/print_mq_attr.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-print_mq_attr.Tpo $(DEPDIR)/libstrace_a-print_mq_attr.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_mq_attr.c' object='libstrace_a-print_mq_attr.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-print_timespec.obj `if test -f 'print_timespec.c'; then $(CYGPATH_W) 'print_timespec.c'; else $(CYGPATH_W) '$(srcdir)/print_timespec.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-print_mq_attr.obj `if test -f 'print_mq_attr.c'; then $(CYGPATH_W) 'print_mq_attr.c'; else $(CYGPATH_W) '$(srcdir)/print_mq_attr.c'; fi`
 
-strace-print_timespec32.o: print_timespec32.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_timespec32.o -MD -MP -MF $(DEPDIR)/strace-print_timespec32.Tpo -c -o strace-print_timespec32.o `test -f 'print_timespec32.c' || echo '$(srcdir)/'`print_timespec32.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_timespec32.Tpo $(DEPDIR)/strace-print_timespec32.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_timespec32.c' object='strace-print_timespec32.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-print_msgbuf.o: print_msgbuf.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-print_msgbuf.o -MD -MP -MF $(DEPDIR)/libstrace_a-print_msgbuf.Tpo -c -o libstrace_a-print_msgbuf.o `test -f 'print_msgbuf.c' || echo '$(srcdir)/'`print_msgbuf.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-print_msgbuf.Tpo $(DEPDIR)/libstrace_a-print_msgbuf.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_msgbuf.c' object='libstrace_a-print_msgbuf.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-print_timespec32.o `test -f 'print_timespec32.c' || echo '$(srcdir)/'`print_timespec32.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-print_msgbuf.o `test -f 'print_msgbuf.c' || echo '$(srcdir)/'`print_msgbuf.c
 
-strace-print_timespec32.obj: print_timespec32.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_timespec32.obj -MD -MP -MF $(DEPDIR)/strace-print_timespec32.Tpo -c -o strace-print_timespec32.obj `if test -f 'print_timespec32.c'; then $(CYGPATH_W) 'print_timespec32.c'; else $(CYGPATH_W) '$(srcdir)/print_timespec32.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_timespec32.Tpo $(DEPDIR)/strace-print_timespec32.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_timespec32.c' object='strace-print_timespec32.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-print_msgbuf.obj: print_msgbuf.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-print_msgbuf.obj -MD -MP -MF $(DEPDIR)/libstrace_a-print_msgbuf.Tpo -c -o libstrace_a-print_msgbuf.obj `if test -f 'print_msgbuf.c'; then $(CYGPATH_W) 'print_msgbuf.c'; else $(CYGPATH_W) '$(srcdir)/print_msgbuf.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-print_msgbuf.Tpo $(DEPDIR)/libstrace_a-print_msgbuf.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_msgbuf.c' object='libstrace_a-print_msgbuf.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-print_timespec32.obj `if test -f 'print_timespec32.c'; then $(CYGPATH_W) 'print_timespec32.c'; else $(CYGPATH_W) '$(srcdir)/print_timespec32.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-print_msgbuf.obj `if test -f 'print_msgbuf.c'; then $(CYGPATH_W) 'print_msgbuf.c'; else $(CYGPATH_W) '$(srcdir)/print_msgbuf.c'; fi`
 
-strace-print_timespec64.o: print_timespec64.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_timespec64.o -MD -MP -MF $(DEPDIR)/strace-print_timespec64.Tpo -c -o strace-print_timespec64.o `test -f 'print_timespec64.c' || echo '$(srcdir)/'`print_timespec64.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_timespec64.Tpo $(DEPDIR)/strace-print_timespec64.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_timespec64.c' object='strace-print_timespec64.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-print_sg_req_info.o: print_sg_req_info.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-print_sg_req_info.o -MD -MP -MF $(DEPDIR)/libstrace_a-print_sg_req_info.Tpo -c -o libstrace_a-print_sg_req_info.o `test -f 'print_sg_req_info.c' || echo '$(srcdir)/'`print_sg_req_info.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-print_sg_req_info.Tpo $(DEPDIR)/libstrace_a-print_sg_req_info.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_sg_req_info.c' object='libstrace_a-print_sg_req_info.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-print_timespec64.o `test -f 'print_timespec64.c' || echo '$(srcdir)/'`print_timespec64.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-print_sg_req_info.o `test -f 'print_sg_req_info.c' || echo '$(srcdir)/'`print_sg_req_info.c
 
-strace-print_timespec64.obj: print_timespec64.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_timespec64.obj -MD -MP -MF $(DEPDIR)/strace-print_timespec64.Tpo -c -o strace-print_timespec64.obj `if test -f 'print_timespec64.c'; then $(CYGPATH_W) 'print_timespec64.c'; else $(CYGPATH_W) '$(srcdir)/print_timespec64.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_timespec64.Tpo $(DEPDIR)/strace-print_timespec64.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_timespec64.c' object='strace-print_timespec64.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-print_sg_req_info.obj: print_sg_req_info.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-print_sg_req_info.obj -MD -MP -MF $(DEPDIR)/libstrace_a-print_sg_req_info.Tpo -c -o libstrace_a-print_sg_req_info.obj `if test -f 'print_sg_req_info.c'; then $(CYGPATH_W) 'print_sg_req_info.c'; else $(CYGPATH_W) '$(srcdir)/print_sg_req_info.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-print_sg_req_info.Tpo $(DEPDIR)/libstrace_a-print_sg_req_info.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_sg_req_info.c' object='libstrace_a-print_sg_req_info.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-print_timespec64.obj `if test -f 'print_timespec64.c'; then $(CYGPATH_W) 'print_timespec64.c'; else $(CYGPATH_W) '$(srcdir)/print_timespec64.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-print_sg_req_info.obj `if test -f 'print_sg_req_info.c'; then $(CYGPATH_W) 'print_sg_req_info.c'; else $(CYGPATH_W) '$(srcdir)/print_sg_req_info.c'; fi`
 
-strace-print_timeval.o: print_timeval.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_timeval.o -MD -MP -MF $(DEPDIR)/strace-print_timeval.Tpo -c -o strace-print_timeval.o `test -f 'print_timeval.c' || echo '$(srcdir)/'`print_timeval.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_timeval.Tpo $(DEPDIR)/strace-print_timeval.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_timeval.c' object='strace-print_timeval.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-print_sigevent.o: print_sigevent.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-print_sigevent.o -MD -MP -MF $(DEPDIR)/libstrace_a-print_sigevent.Tpo -c -o libstrace_a-print_sigevent.o `test -f 'print_sigevent.c' || echo '$(srcdir)/'`print_sigevent.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-print_sigevent.Tpo $(DEPDIR)/libstrace_a-print_sigevent.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_sigevent.c' object='libstrace_a-print_sigevent.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-print_timeval.o `test -f 'print_timeval.c' || echo '$(srcdir)/'`print_timeval.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-print_sigevent.o `test -f 'print_sigevent.c' || echo '$(srcdir)/'`print_sigevent.c
 
-strace-print_timeval.obj: print_timeval.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_timeval.obj -MD -MP -MF $(DEPDIR)/strace-print_timeval.Tpo -c -o strace-print_timeval.obj `if test -f 'print_timeval.c'; then $(CYGPATH_W) 'print_timeval.c'; else $(CYGPATH_W) '$(srcdir)/print_timeval.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_timeval.Tpo $(DEPDIR)/strace-print_timeval.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_timeval.c' object='strace-print_timeval.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-print_sigevent.obj: print_sigevent.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-print_sigevent.obj -MD -MP -MF $(DEPDIR)/libstrace_a-print_sigevent.Tpo -c -o libstrace_a-print_sigevent.obj `if test -f 'print_sigevent.c'; then $(CYGPATH_W) 'print_sigevent.c'; else $(CYGPATH_W) '$(srcdir)/print_sigevent.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-print_sigevent.Tpo $(DEPDIR)/libstrace_a-print_sigevent.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_sigevent.c' object='libstrace_a-print_sigevent.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-print_timeval.obj `if test -f 'print_timeval.c'; then $(CYGPATH_W) 'print_timeval.c'; else $(CYGPATH_W) '$(srcdir)/print_timeval.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-print_sigevent.obj `if test -f 'print_sigevent.c'; then $(CYGPATH_W) 'print_sigevent.c'; else $(CYGPATH_W) '$(srcdir)/print_sigevent.c'; fi`
 
-strace-print_timeval64.o: print_timeval64.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_timeval64.o -MD -MP -MF $(DEPDIR)/strace-print_timeval64.Tpo -c -o strace-print_timeval64.o `test -f 'print_timeval64.c' || echo '$(srcdir)/'`print_timeval64.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_timeval64.Tpo $(DEPDIR)/strace-print_timeval64.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_timeval64.c' object='strace-print_timeval64.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-print_statfs.o: print_statfs.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-print_statfs.o -MD -MP -MF $(DEPDIR)/libstrace_a-print_statfs.Tpo -c -o libstrace_a-print_statfs.o `test -f 'print_statfs.c' || echo '$(srcdir)/'`print_statfs.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-print_statfs.Tpo $(DEPDIR)/libstrace_a-print_statfs.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_statfs.c' object='libstrace_a-print_statfs.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-print_timeval64.o `test -f 'print_timeval64.c' || echo '$(srcdir)/'`print_timeval64.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-print_statfs.o `test -f 'print_statfs.c' || echo '$(srcdir)/'`print_statfs.c
 
-strace-print_timeval64.obj: print_timeval64.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_timeval64.obj -MD -MP -MF $(DEPDIR)/strace-print_timeval64.Tpo -c -o strace-print_timeval64.obj `if test -f 'print_timeval64.c'; then $(CYGPATH_W) 'print_timeval64.c'; else $(CYGPATH_W) '$(srcdir)/print_timeval64.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_timeval64.Tpo $(DEPDIR)/strace-print_timeval64.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_timeval64.c' object='strace-print_timeval64.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-print_statfs.obj: print_statfs.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-print_statfs.obj -MD -MP -MF $(DEPDIR)/libstrace_a-print_statfs.Tpo -c -o libstrace_a-print_statfs.obj `if test -f 'print_statfs.c'; then $(CYGPATH_W) 'print_statfs.c'; else $(CYGPATH_W) '$(srcdir)/print_statfs.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-print_statfs.Tpo $(DEPDIR)/libstrace_a-print_statfs.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_statfs.c' object='libstrace_a-print_statfs.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-print_timeval64.obj `if test -f 'print_timeval64.c'; then $(CYGPATH_W) 'print_timeval64.c'; else $(CYGPATH_W) '$(srcdir)/print_timeval64.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-print_statfs.obj `if test -f 'print_statfs.c'; then $(CYGPATH_W) 'print_statfs.c'; else $(CYGPATH_W) '$(srcdir)/print_statfs.c'; fi`
 
-strace-print_timex.o: print_timex.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_timex.o -MD -MP -MF $(DEPDIR)/strace-print_timex.Tpo -c -o strace-print_timex.o `test -f 'print_timex.c' || echo '$(srcdir)/'`print_timex.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_timex.Tpo $(DEPDIR)/strace-print_timex.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_timex.c' object='strace-print_timex.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-print_struct_stat.o: print_struct_stat.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-print_struct_stat.o -MD -MP -MF $(DEPDIR)/libstrace_a-print_struct_stat.Tpo -c -o libstrace_a-print_struct_stat.o `test -f 'print_struct_stat.c' || echo '$(srcdir)/'`print_struct_stat.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-print_struct_stat.Tpo $(DEPDIR)/libstrace_a-print_struct_stat.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_struct_stat.c' object='libstrace_a-print_struct_stat.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-print_timex.o `test -f 'print_timex.c' || echo '$(srcdir)/'`print_timex.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-print_struct_stat.o `test -f 'print_struct_stat.c' || echo '$(srcdir)/'`print_struct_stat.c
 
-strace-print_timex.obj: print_timex.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_timex.obj -MD -MP -MF $(DEPDIR)/strace-print_timex.Tpo -c -o strace-print_timex.obj `if test -f 'print_timex.c'; then $(CYGPATH_W) 'print_timex.c'; else $(CYGPATH_W) '$(srcdir)/print_timex.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_timex.Tpo $(DEPDIR)/strace-print_timex.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_timex.c' object='strace-print_timex.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-print_struct_stat.obj: print_struct_stat.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-print_struct_stat.obj -MD -MP -MF $(DEPDIR)/libstrace_a-print_struct_stat.Tpo -c -o libstrace_a-print_struct_stat.obj `if test -f 'print_struct_stat.c'; then $(CYGPATH_W) 'print_struct_stat.c'; else $(CYGPATH_W) '$(srcdir)/print_struct_stat.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-print_struct_stat.Tpo $(DEPDIR)/libstrace_a-print_struct_stat.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_struct_stat.c' object='libstrace_a-print_struct_stat.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-print_timex.obj `if test -f 'print_timex.c'; then $(CYGPATH_W) 'print_timex.c'; else $(CYGPATH_W) '$(srcdir)/print_timex.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-print_struct_stat.obj `if test -f 'print_struct_stat.c'; then $(CYGPATH_W) 'print_struct_stat.c'; else $(CYGPATH_W) '$(srcdir)/print_struct_stat.c'; fi`
 
-strace-printmode.o: printmode.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-printmode.o -MD -MP -MF $(DEPDIR)/strace-printmode.Tpo -c -o strace-printmode.o `test -f 'printmode.c' || echo '$(srcdir)/'`printmode.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-printmode.Tpo $(DEPDIR)/strace-printmode.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='printmode.c' object='strace-printmode.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-print_syscall_number.o: print_syscall_number.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-print_syscall_number.o -MD -MP -MF $(DEPDIR)/libstrace_a-print_syscall_number.Tpo -c -o libstrace_a-print_syscall_number.o `test -f 'print_syscall_number.c' || echo '$(srcdir)/'`print_syscall_number.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-print_syscall_number.Tpo $(DEPDIR)/libstrace_a-print_syscall_number.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_syscall_number.c' object='libstrace_a-print_syscall_number.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-printmode.o `test -f 'printmode.c' || echo '$(srcdir)/'`printmode.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-print_syscall_number.o `test -f 'print_syscall_number.c' || echo '$(srcdir)/'`print_syscall_number.c
 
-strace-printmode.obj: printmode.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-printmode.obj -MD -MP -MF $(DEPDIR)/strace-printmode.Tpo -c -o strace-printmode.obj `if test -f 'printmode.c'; then $(CYGPATH_W) 'printmode.c'; else $(CYGPATH_W) '$(srcdir)/printmode.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-printmode.Tpo $(DEPDIR)/strace-printmode.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='printmode.c' object='strace-printmode.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-print_syscall_number.obj: print_syscall_number.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-print_syscall_number.obj -MD -MP -MF $(DEPDIR)/libstrace_a-print_syscall_number.Tpo -c -o libstrace_a-print_syscall_number.obj `if test -f 'print_syscall_number.c'; then $(CYGPATH_W) 'print_syscall_number.c'; else $(CYGPATH_W) '$(srcdir)/print_syscall_number.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-print_syscall_number.Tpo $(DEPDIR)/libstrace_a-print_syscall_number.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_syscall_number.c' object='libstrace_a-print_syscall_number.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-printmode.obj `if test -f 'printmode.c'; then $(CYGPATH_W) 'printmode.c'; else $(CYGPATH_W) '$(srcdir)/printmode.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-print_syscall_number.obj `if test -f 'print_syscall_number.c'; then $(CYGPATH_W) 'print_syscall_number.c'; else $(CYGPATH_W) '$(srcdir)/print_syscall_number.c'; fi`
 
-strace-printrusage.o: printrusage.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-printrusage.o -MD -MP -MF $(DEPDIR)/strace-printrusage.Tpo -c -o strace-printrusage.o `test -f 'printrusage.c' || echo '$(srcdir)/'`printrusage.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-printrusage.Tpo $(DEPDIR)/strace-printrusage.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='printrusage.c' object='strace-printrusage.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-print_time.o: print_time.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-print_time.o -MD -MP -MF $(DEPDIR)/libstrace_a-print_time.Tpo -c -o libstrace_a-print_time.o `test -f 'print_time.c' || echo '$(srcdir)/'`print_time.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-print_time.Tpo $(DEPDIR)/libstrace_a-print_time.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_time.c' object='libstrace_a-print_time.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-printrusage.o `test -f 'printrusage.c' || echo '$(srcdir)/'`printrusage.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-print_time.o `test -f 'print_time.c' || echo '$(srcdir)/'`print_time.c
 
-strace-printrusage.obj: printrusage.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-printrusage.obj -MD -MP -MF $(DEPDIR)/strace-printrusage.Tpo -c -o strace-printrusage.obj `if test -f 'printrusage.c'; then $(CYGPATH_W) 'printrusage.c'; else $(CYGPATH_W) '$(srcdir)/printrusage.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-printrusage.Tpo $(DEPDIR)/strace-printrusage.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='printrusage.c' object='strace-printrusage.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-print_time.obj: print_time.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-print_time.obj -MD -MP -MF $(DEPDIR)/libstrace_a-print_time.Tpo -c -o libstrace_a-print_time.obj `if test -f 'print_time.c'; then $(CYGPATH_W) 'print_time.c'; else $(CYGPATH_W) '$(srcdir)/print_time.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-print_time.Tpo $(DEPDIR)/libstrace_a-print_time.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_time.c' object='libstrace_a-print_time.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-printrusage.obj `if test -f 'printrusage.c'; then $(CYGPATH_W) 'printrusage.c'; else $(CYGPATH_W) '$(srcdir)/printrusage.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-print_time.obj `if test -f 'print_time.c'; then $(CYGPATH_W) 'print_time.c'; else $(CYGPATH_W) '$(srcdir)/print_time.c'; fi`
 
-strace-printsiginfo.o: printsiginfo.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-printsiginfo.o -MD -MP -MF $(DEPDIR)/strace-printsiginfo.Tpo -c -o strace-printsiginfo.o `test -f 'printsiginfo.c' || echo '$(srcdir)/'`printsiginfo.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-printsiginfo.Tpo $(DEPDIR)/strace-printsiginfo.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='printsiginfo.c' object='strace-printsiginfo.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-print_timespec32.o: print_timespec32.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-print_timespec32.o -MD -MP -MF $(DEPDIR)/libstrace_a-print_timespec32.Tpo -c -o libstrace_a-print_timespec32.o `test -f 'print_timespec32.c' || echo '$(srcdir)/'`print_timespec32.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-print_timespec32.Tpo $(DEPDIR)/libstrace_a-print_timespec32.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_timespec32.c' object='libstrace_a-print_timespec32.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-printsiginfo.o `test -f 'printsiginfo.c' || echo '$(srcdir)/'`printsiginfo.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-print_timespec32.o `test -f 'print_timespec32.c' || echo '$(srcdir)/'`print_timespec32.c
 
-strace-printsiginfo.obj: printsiginfo.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-printsiginfo.obj -MD -MP -MF $(DEPDIR)/strace-printsiginfo.Tpo -c -o strace-printsiginfo.obj `if test -f 'printsiginfo.c'; then $(CYGPATH_W) 'printsiginfo.c'; else $(CYGPATH_W) '$(srcdir)/printsiginfo.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-printsiginfo.Tpo $(DEPDIR)/strace-printsiginfo.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='printsiginfo.c' object='strace-printsiginfo.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-print_timespec32.obj: print_timespec32.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-print_timespec32.obj -MD -MP -MF $(DEPDIR)/libstrace_a-print_timespec32.Tpo -c -o libstrace_a-print_timespec32.obj `if test -f 'print_timespec32.c'; then $(CYGPATH_W) 'print_timespec32.c'; else $(CYGPATH_W) '$(srcdir)/print_timespec32.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-print_timespec32.Tpo $(DEPDIR)/libstrace_a-print_timespec32.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_timespec32.c' object='libstrace_a-print_timespec32.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-printsiginfo.obj `if test -f 'printsiginfo.c'; then $(CYGPATH_W) 'printsiginfo.c'; else $(CYGPATH_W) '$(srcdir)/printsiginfo.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-print_timespec32.obj `if test -f 'print_timespec32.c'; then $(CYGPATH_W) 'print_timespec32.c'; else $(CYGPATH_W) '$(srcdir)/print_timespec32.c'; fi`
 
-strace-process.o: process.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-process.o -MD -MP -MF $(DEPDIR)/strace-process.Tpo -c -o strace-process.o `test -f 'process.c' || echo '$(srcdir)/'`process.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-process.Tpo $(DEPDIR)/strace-process.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='process.c' object='strace-process.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-print_timespec64.o: print_timespec64.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-print_timespec64.o -MD -MP -MF $(DEPDIR)/libstrace_a-print_timespec64.Tpo -c -o libstrace_a-print_timespec64.o `test -f 'print_timespec64.c' || echo '$(srcdir)/'`print_timespec64.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-print_timespec64.Tpo $(DEPDIR)/libstrace_a-print_timespec64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_timespec64.c' object='libstrace_a-print_timespec64.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-process.o `test -f 'process.c' || echo '$(srcdir)/'`process.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-print_timespec64.o `test -f 'print_timespec64.c' || echo '$(srcdir)/'`print_timespec64.c
 
-strace-process.obj: process.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-process.obj -MD -MP -MF $(DEPDIR)/strace-process.Tpo -c -o strace-process.obj `if test -f 'process.c'; then $(CYGPATH_W) 'process.c'; else $(CYGPATH_W) '$(srcdir)/process.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-process.Tpo $(DEPDIR)/strace-process.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='process.c' object='strace-process.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-print_timespec64.obj: print_timespec64.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-print_timespec64.obj -MD -MP -MF $(DEPDIR)/libstrace_a-print_timespec64.Tpo -c -o libstrace_a-print_timespec64.obj `if test -f 'print_timespec64.c'; then $(CYGPATH_W) 'print_timespec64.c'; else $(CYGPATH_W) '$(srcdir)/print_timespec64.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-print_timespec64.Tpo $(DEPDIR)/libstrace_a-print_timespec64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_timespec64.c' object='libstrace_a-print_timespec64.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-process.obj `if test -f 'process.c'; then $(CYGPATH_W) 'process.c'; else $(CYGPATH_W) '$(srcdir)/process.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-print_timespec64.obj `if test -f 'print_timespec64.c'; then $(CYGPATH_W) 'print_timespec64.c'; else $(CYGPATH_W) '$(srcdir)/print_timespec64.c'; fi`
 
-strace-process_vm.o: process_vm.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-process_vm.o -MD -MP -MF $(DEPDIR)/strace-process_vm.Tpo -c -o strace-process_vm.o `test -f 'process_vm.c' || echo '$(srcdir)/'`process_vm.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-process_vm.Tpo $(DEPDIR)/strace-process_vm.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='process_vm.c' object='strace-process_vm.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-print_timeval.o: print_timeval.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-print_timeval.o -MD -MP -MF $(DEPDIR)/libstrace_a-print_timeval.Tpo -c -o libstrace_a-print_timeval.o `test -f 'print_timeval.c' || echo '$(srcdir)/'`print_timeval.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-print_timeval.Tpo $(DEPDIR)/libstrace_a-print_timeval.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_timeval.c' object='libstrace_a-print_timeval.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-process_vm.o `test -f 'process_vm.c' || echo '$(srcdir)/'`process_vm.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-print_timeval.o `test -f 'print_timeval.c' || echo '$(srcdir)/'`print_timeval.c
 
-strace-process_vm.obj: process_vm.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-process_vm.obj -MD -MP -MF $(DEPDIR)/strace-process_vm.Tpo -c -o strace-process_vm.obj `if test -f 'process_vm.c'; then $(CYGPATH_W) 'process_vm.c'; else $(CYGPATH_W) '$(srcdir)/process_vm.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-process_vm.Tpo $(DEPDIR)/strace-process_vm.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='process_vm.c' object='strace-process_vm.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-print_timeval.obj: print_timeval.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-print_timeval.obj -MD -MP -MF $(DEPDIR)/libstrace_a-print_timeval.Tpo -c -o libstrace_a-print_timeval.obj `if test -f 'print_timeval.c'; then $(CYGPATH_W) 'print_timeval.c'; else $(CYGPATH_W) '$(srcdir)/print_timeval.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-print_timeval.Tpo $(DEPDIR)/libstrace_a-print_timeval.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_timeval.c' object='libstrace_a-print_timeval.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-process_vm.obj `if test -f 'process_vm.c'; then $(CYGPATH_W) 'process_vm.c'; else $(CYGPATH_W) '$(srcdir)/process_vm.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-print_timeval.obj `if test -f 'print_timeval.c'; then $(CYGPATH_W) 'print_timeval.c'; else $(CYGPATH_W) '$(srcdir)/print_timeval.c'; fi`
 
-strace-ptp.o: ptp.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-ptp.o -MD -MP -MF $(DEPDIR)/strace-ptp.Tpo -c -o strace-ptp.o `test -f 'ptp.c' || echo '$(srcdir)/'`ptp.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-ptp.Tpo $(DEPDIR)/strace-ptp.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ptp.c' object='strace-ptp.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-print_timeval64.o: print_timeval64.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-print_timeval64.o -MD -MP -MF $(DEPDIR)/libstrace_a-print_timeval64.Tpo -c -o libstrace_a-print_timeval64.o `test -f 'print_timeval64.c' || echo '$(srcdir)/'`print_timeval64.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-print_timeval64.Tpo $(DEPDIR)/libstrace_a-print_timeval64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_timeval64.c' object='libstrace_a-print_timeval64.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-ptp.o `test -f 'ptp.c' || echo '$(srcdir)/'`ptp.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-print_timeval64.o `test -f 'print_timeval64.c' || echo '$(srcdir)/'`print_timeval64.c
 
-strace-ptp.obj: ptp.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-ptp.obj -MD -MP -MF $(DEPDIR)/strace-ptp.Tpo -c -o strace-ptp.obj `if test -f 'ptp.c'; then $(CYGPATH_W) 'ptp.c'; else $(CYGPATH_W) '$(srcdir)/ptp.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-ptp.Tpo $(DEPDIR)/strace-ptp.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ptp.c' object='strace-ptp.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-print_timeval64.obj: print_timeval64.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-print_timeval64.obj -MD -MP -MF $(DEPDIR)/libstrace_a-print_timeval64.Tpo -c -o libstrace_a-print_timeval64.obj `if test -f 'print_timeval64.c'; then $(CYGPATH_W) 'print_timeval64.c'; else $(CYGPATH_W) '$(srcdir)/print_timeval64.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-print_timeval64.Tpo $(DEPDIR)/libstrace_a-print_timeval64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_timeval64.c' object='libstrace_a-print_timeval64.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-ptp.obj `if test -f 'ptp.c'; then $(CYGPATH_W) 'ptp.c'; else $(CYGPATH_W) '$(srcdir)/ptp.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-print_timeval64.obj `if test -f 'print_timeval64.c'; then $(CYGPATH_W) 'print_timeval64.c'; else $(CYGPATH_W) '$(srcdir)/print_timeval64.c'; fi`
 
-strace-ptrace_syscall_info.o: ptrace_syscall_info.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-ptrace_syscall_info.o -MD -MP -MF $(DEPDIR)/strace-ptrace_syscall_info.Tpo -c -o strace-ptrace_syscall_info.o `test -f 'ptrace_syscall_info.c' || echo '$(srcdir)/'`ptrace_syscall_info.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-ptrace_syscall_info.Tpo $(DEPDIR)/strace-ptrace_syscall_info.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ptrace_syscall_info.c' object='strace-ptrace_syscall_info.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-print_timex.o: print_timex.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-print_timex.o -MD -MP -MF $(DEPDIR)/libstrace_a-print_timex.Tpo -c -o libstrace_a-print_timex.o `test -f 'print_timex.c' || echo '$(srcdir)/'`print_timex.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-print_timex.Tpo $(DEPDIR)/libstrace_a-print_timex.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_timex.c' object='libstrace_a-print_timex.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-ptrace_syscall_info.o `test -f 'ptrace_syscall_info.c' || echo '$(srcdir)/'`ptrace_syscall_info.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-print_timex.o `test -f 'print_timex.c' || echo '$(srcdir)/'`print_timex.c
 
-strace-ptrace_syscall_info.obj: ptrace_syscall_info.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-ptrace_syscall_info.obj -MD -MP -MF $(DEPDIR)/strace-ptrace_syscall_info.Tpo -c -o strace-ptrace_syscall_info.obj `if test -f 'ptrace_syscall_info.c'; then $(CYGPATH_W) 'ptrace_syscall_info.c'; else $(CYGPATH_W) '$(srcdir)/ptrace_syscall_info.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-ptrace_syscall_info.Tpo $(DEPDIR)/strace-ptrace_syscall_info.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ptrace_syscall_info.c' object='strace-ptrace_syscall_info.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-print_timex.obj: print_timex.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-print_timex.obj -MD -MP -MF $(DEPDIR)/libstrace_a-print_timex.Tpo -c -o libstrace_a-print_timex.obj `if test -f 'print_timex.c'; then $(CYGPATH_W) 'print_timex.c'; else $(CYGPATH_W) '$(srcdir)/print_timex.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-print_timex.Tpo $(DEPDIR)/libstrace_a-print_timex.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='print_timex.c' object='libstrace_a-print_timex.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-ptrace_syscall_info.obj `if test -f 'ptrace_syscall_info.c'; then $(CYGPATH_W) 'ptrace_syscall_info.c'; else $(CYGPATH_W) '$(srcdir)/ptrace_syscall_info.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-print_timex.obj `if test -f 'print_timex.c'; then $(CYGPATH_W) 'print_timex.c'; else $(CYGPATH_W) '$(srcdir)/print_timex.c'; fi`
 
-strace-quota.o: quota.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-quota.o -MD -MP -MF $(DEPDIR)/strace-quota.Tpo -c -o strace-quota.o `test -f 'quota.c' || echo '$(srcdir)/'`quota.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-quota.Tpo $(DEPDIR)/strace-quota.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='quota.c' object='strace-quota.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-printmode.o: printmode.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-printmode.o -MD -MP -MF $(DEPDIR)/libstrace_a-printmode.Tpo -c -o libstrace_a-printmode.o `test -f 'printmode.c' || echo '$(srcdir)/'`printmode.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-printmode.Tpo $(DEPDIR)/libstrace_a-printmode.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='printmode.c' object='libstrace_a-printmode.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-quota.o `test -f 'quota.c' || echo '$(srcdir)/'`quota.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-printmode.o `test -f 'printmode.c' || echo '$(srcdir)/'`printmode.c
 
-strace-quota.obj: quota.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-quota.obj -MD -MP -MF $(DEPDIR)/strace-quota.Tpo -c -o strace-quota.obj `if test -f 'quota.c'; then $(CYGPATH_W) 'quota.c'; else $(CYGPATH_W) '$(srcdir)/quota.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-quota.Tpo $(DEPDIR)/strace-quota.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='quota.c' object='strace-quota.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-printmode.obj: printmode.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-printmode.obj -MD -MP -MF $(DEPDIR)/libstrace_a-printmode.Tpo -c -o libstrace_a-printmode.obj `if test -f 'printmode.c'; then $(CYGPATH_W) 'printmode.c'; else $(CYGPATH_W) '$(srcdir)/printmode.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-printmode.Tpo $(DEPDIR)/libstrace_a-printmode.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='printmode.c' object='libstrace_a-printmode.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-quota.obj `if test -f 'quota.c'; then $(CYGPATH_W) 'quota.c'; else $(CYGPATH_W) '$(srcdir)/quota.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-printmode.obj `if test -f 'printmode.c'; then $(CYGPATH_W) 'printmode.c'; else $(CYGPATH_W) '$(srcdir)/printmode.c'; fi`
 
-strace-random_ioctl.o: random_ioctl.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-random_ioctl.o -MD -MP -MF $(DEPDIR)/strace-random_ioctl.Tpo -c -o strace-random_ioctl.o `test -f 'random_ioctl.c' || echo '$(srcdir)/'`random_ioctl.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-random_ioctl.Tpo $(DEPDIR)/strace-random_ioctl.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='random_ioctl.c' object='strace-random_ioctl.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-printrusage.o: printrusage.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-printrusage.o -MD -MP -MF $(DEPDIR)/libstrace_a-printrusage.Tpo -c -o libstrace_a-printrusage.o `test -f 'printrusage.c' || echo '$(srcdir)/'`printrusage.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-printrusage.Tpo $(DEPDIR)/libstrace_a-printrusage.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='printrusage.c' object='libstrace_a-printrusage.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-random_ioctl.o `test -f 'random_ioctl.c' || echo '$(srcdir)/'`random_ioctl.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-printrusage.o `test -f 'printrusage.c' || echo '$(srcdir)/'`printrusage.c
 
-strace-random_ioctl.obj: random_ioctl.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-random_ioctl.obj -MD -MP -MF $(DEPDIR)/strace-random_ioctl.Tpo -c -o strace-random_ioctl.obj `if test -f 'random_ioctl.c'; then $(CYGPATH_W) 'random_ioctl.c'; else $(CYGPATH_W) '$(srcdir)/random_ioctl.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-random_ioctl.Tpo $(DEPDIR)/strace-random_ioctl.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='random_ioctl.c' object='strace-random_ioctl.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-printrusage.obj: printrusage.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-printrusage.obj -MD -MP -MF $(DEPDIR)/libstrace_a-printrusage.Tpo -c -o libstrace_a-printrusage.obj `if test -f 'printrusage.c'; then $(CYGPATH_W) 'printrusage.c'; else $(CYGPATH_W) '$(srcdir)/printrusage.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-printrusage.Tpo $(DEPDIR)/libstrace_a-printrusage.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='printrusage.c' object='libstrace_a-printrusage.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-random_ioctl.obj `if test -f 'random_ioctl.c'; then $(CYGPATH_W) 'random_ioctl.c'; else $(CYGPATH_W) '$(srcdir)/random_ioctl.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-printrusage.obj `if test -f 'printrusage.c'; then $(CYGPATH_W) 'printrusage.c'; else $(CYGPATH_W) '$(srcdir)/printrusage.c'; fi`
 
-strace-readahead.o: readahead.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-readahead.o -MD -MP -MF $(DEPDIR)/strace-readahead.Tpo -c -o strace-readahead.o `test -f 'readahead.c' || echo '$(srcdir)/'`readahead.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-readahead.Tpo $(DEPDIR)/strace-readahead.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='readahead.c' object='strace-readahead.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-printsiginfo.o: printsiginfo.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-printsiginfo.o -MD -MP -MF $(DEPDIR)/libstrace_a-printsiginfo.Tpo -c -o libstrace_a-printsiginfo.o `test -f 'printsiginfo.c' || echo '$(srcdir)/'`printsiginfo.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-printsiginfo.Tpo $(DEPDIR)/libstrace_a-printsiginfo.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='printsiginfo.c' object='libstrace_a-printsiginfo.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-readahead.o `test -f 'readahead.c' || echo '$(srcdir)/'`readahead.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-printsiginfo.o `test -f 'printsiginfo.c' || echo '$(srcdir)/'`printsiginfo.c
 
-strace-readahead.obj: readahead.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-readahead.obj -MD -MP -MF $(DEPDIR)/strace-readahead.Tpo -c -o strace-readahead.obj `if test -f 'readahead.c'; then $(CYGPATH_W) 'readahead.c'; else $(CYGPATH_W) '$(srcdir)/readahead.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-readahead.Tpo $(DEPDIR)/strace-readahead.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='readahead.c' object='strace-readahead.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-printsiginfo.obj: printsiginfo.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-printsiginfo.obj -MD -MP -MF $(DEPDIR)/libstrace_a-printsiginfo.Tpo -c -o libstrace_a-printsiginfo.obj `if test -f 'printsiginfo.c'; then $(CYGPATH_W) 'printsiginfo.c'; else $(CYGPATH_W) '$(srcdir)/printsiginfo.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-printsiginfo.Tpo $(DEPDIR)/libstrace_a-printsiginfo.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='printsiginfo.c' object='libstrace_a-printsiginfo.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-readahead.obj `if test -f 'readahead.c'; then $(CYGPATH_W) 'readahead.c'; else $(CYGPATH_W) '$(srcdir)/readahead.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-printsiginfo.obj `if test -f 'printsiginfo.c'; then $(CYGPATH_W) 'printsiginfo.c'; else $(CYGPATH_W) '$(srcdir)/printsiginfo.c'; fi`
 
-strace-readlink.o: readlink.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-readlink.o -MD -MP -MF $(DEPDIR)/strace-readlink.Tpo -c -o strace-readlink.o `test -f 'readlink.c' || echo '$(srcdir)/'`readlink.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-readlink.Tpo $(DEPDIR)/strace-readlink.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='readlink.c' object='strace-readlink.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-process.o: process.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-process.o -MD -MP -MF $(DEPDIR)/libstrace_a-process.Tpo -c -o libstrace_a-process.o `test -f 'process.c' || echo '$(srcdir)/'`process.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-process.Tpo $(DEPDIR)/libstrace_a-process.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='process.c' object='libstrace_a-process.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-readlink.o `test -f 'readlink.c' || echo '$(srcdir)/'`readlink.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-process.o `test -f 'process.c' || echo '$(srcdir)/'`process.c
 
-strace-readlink.obj: readlink.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-readlink.obj -MD -MP -MF $(DEPDIR)/strace-readlink.Tpo -c -o strace-readlink.obj `if test -f 'readlink.c'; then $(CYGPATH_W) 'readlink.c'; else $(CYGPATH_W) '$(srcdir)/readlink.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-readlink.Tpo $(DEPDIR)/strace-readlink.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='readlink.c' object='strace-readlink.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-process.obj: process.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-process.obj -MD -MP -MF $(DEPDIR)/libstrace_a-process.Tpo -c -o libstrace_a-process.obj `if test -f 'process.c'; then $(CYGPATH_W) 'process.c'; else $(CYGPATH_W) '$(srcdir)/process.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-process.Tpo $(DEPDIR)/libstrace_a-process.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='process.c' object='libstrace_a-process.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-readlink.obj `if test -f 'readlink.c'; then $(CYGPATH_W) 'readlink.c'; else $(CYGPATH_W) '$(srcdir)/readlink.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-process.obj `if test -f 'process.c'; then $(CYGPATH_W) 'process.c'; else $(CYGPATH_W) '$(srcdir)/process.c'; fi`
 
-strace-reboot.o: reboot.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-reboot.o -MD -MP -MF $(DEPDIR)/strace-reboot.Tpo -c -o strace-reboot.o `test -f 'reboot.c' || echo '$(srcdir)/'`reboot.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-reboot.Tpo $(DEPDIR)/strace-reboot.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='reboot.c' object='strace-reboot.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-process_vm.o: process_vm.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-process_vm.o -MD -MP -MF $(DEPDIR)/libstrace_a-process_vm.Tpo -c -o libstrace_a-process_vm.o `test -f 'process_vm.c' || echo '$(srcdir)/'`process_vm.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-process_vm.Tpo $(DEPDIR)/libstrace_a-process_vm.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='process_vm.c' object='libstrace_a-process_vm.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-reboot.o `test -f 'reboot.c' || echo '$(srcdir)/'`reboot.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-process_vm.o `test -f 'process_vm.c' || echo '$(srcdir)/'`process_vm.c
 
-strace-reboot.obj: reboot.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-reboot.obj -MD -MP -MF $(DEPDIR)/strace-reboot.Tpo -c -o strace-reboot.obj `if test -f 'reboot.c'; then $(CYGPATH_W) 'reboot.c'; else $(CYGPATH_W) '$(srcdir)/reboot.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-reboot.Tpo $(DEPDIR)/strace-reboot.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='reboot.c' object='strace-reboot.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-process_vm.obj: process_vm.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-process_vm.obj -MD -MP -MF $(DEPDIR)/libstrace_a-process_vm.Tpo -c -o libstrace_a-process_vm.obj `if test -f 'process_vm.c'; then $(CYGPATH_W) 'process_vm.c'; else $(CYGPATH_W) '$(srcdir)/process_vm.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-process_vm.Tpo $(DEPDIR)/libstrace_a-process_vm.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='process_vm.c' object='libstrace_a-process_vm.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-reboot.obj `if test -f 'reboot.c'; then $(CYGPATH_W) 'reboot.c'; else $(CYGPATH_W) '$(srcdir)/reboot.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-process_vm.obj `if test -f 'process_vm.c'; then $(CYGPATH_W) 'process_vm.c'; else $(CYGPATH_W) '$(srcdir)/process_vm.c'; fi`
 
-strace-renameat.o: renameat.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-renameat.o -MD -MP -MF $(DEPDIR)/strace-renameat.Tpo -c -o strace-renameat.o `test -f 'renameat.c' || echo '$(srcdir)/'`renameat.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-renameat.Tpo $(DEPDIR)/strace-renameat.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='renameat.c' object='strace-renameat.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-ptp.o: ptp.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-ptp.o -MD -MP -MF $(DEPDIR)/libstrace_a-ptp.Tpo -c -o libstrace_a-ptp.o `test -f 'ptp.c' || echo '$(srcdir)/'`ptp.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-ptp.Tpo $(DEPDIR)/libstrace_a-ptp.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ptp.c' object='libstrace_a-ptp.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-renameat.o `test -f 'renameat.c' || echo '$(srcdir)/'`renameat.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-ptp.o `test -f 'ptp.c' || echo '$(srcdir)/'`ptp.c
 
-strace-renameat.obj: renameat.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-renameat.obj -MD -MP -MF $(DEPDIR)/strace-renameat.Tpo -c -o strace-renameat.obj `if test -f 'renameat.c'; then $(CYGPATH_W) 'renameat.c'; else $(CYGPATH_W) '$(srcdir)/renameat.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-renameat.Tpo $(DEPDIR)/strace-renameat.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='renameat.c' object='strace-renameat.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-ptp.obj: ptp.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-ptp.obj -MD -MP -MF $(DEPDIR)/libstrace_a-ptp.Tpo -c -o libstrace_a-ptp.obj `if test -f 'ptp.c'; then $(CYGPATH_W) 'ptp.c'; else $(CYGPATH_W) '$(srcdir)/ptp.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-ptp.Tpo $(DEPDIR)/libstrace_a-ptp.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ptp.c' object='libstrace_a-ptp.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-renameat.obj `if test -f 'renameat.c'; then $(CYGPATH_W) 'renameat.c'; else $(CYGPATH_W) '$(srcdir)/renameat.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-ptp.obj `if test -f 'ptp.c'; then $(CYGPATH_W) 'ptp.c'; else $(CYGPATH_W) '$(srcdir)/ptp.c'; fi`
 
-strace-resource.o: resource.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-resource.o -MD -MP -MF $(DEPDIR)/strace-resource.Tpo -c -o strace-resource.o `test -f 'resource.c' || echo '$(srcdir)/'`resource.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-resource.Tpo $(DEPDIR)/strace-resource.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='resource.c' object='strace-resource.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-ptrace_syscall_info.o: ptrace_syscall_info.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-ptrace_syscall_info.o -MD -MP -MF $(DEPDIR)/libstrace_a-ptrace_syscall_info.Tpo -c -o libstrace_a-ptrace_syscall_info.o `test -f 'ptrace_syscall_info.c' || echo '$(srcdir)/'`ptrace_syscall_info.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-ptrace_syscall_info.Tpo $(DEPDIR)/libstrace_a-ptrace_syscall_info.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ptrace_syscall_info.c' object='libstrace_a-ptrace_syscall_info.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-resource.o `test -f 'resource.c' || echo '$(srcdir)/'`resource.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-ptrace_syscall_info.o `test -f 'ptrace_syscall_info.c' || echo '$(srcdir)/'`ptrace_syscall_info.c
 
-strace-resource.obj: resource.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-resource.obj -MD -MP -MF $(DEPDIR)/strace-resource.Tpo -c -o strace-resource.obj `if test -f 'resource.c'; then $(CYGPATH_W) 'resource.c'; else $(CYGPATH_W) '$(srcdir)/resource.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-resource.Tpo $(DEPDIR)/strace-resource.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='resource.c' object='strace-resource.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-ptrace_syscall_info.obj: ptrace_syscall_info.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-ptrace_syscall_info.obj -MD -MP -MF $(DEPDIR)/libstrace_a-ptrace_syscall_info.Tpo -c -o libstrace_a-ptrace_syscall_info.obj `if test -f 'ptrace_syscall_info.c'; then $(CYGPATH_W) 'ptrace_syscall_info.c'; else $(CYGPATH_W) '$(srcdir)/ptrace_syscall_info.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-ptrace_syscall_info.Tpo $(DEPDIR)/libstrace_a-ptrace_syscall_info.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ptrace_syscall_info.c' object='libstrace_a-ptrace_syscall_info.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-resource.obj `if test -f 'resource.c'; then $(CYGPATH_W) 'resource.c'; else $(CYGPATH_W) '$(srcdir)/resource.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-ptrace_syscall_info.obj `if test -f 'ptrace_syscall_info.c'; then $(CYGPATH_W) 'ptrace_syscall_info.c'; else $(CYGPATH_W) '$(srcdir)/ptrace_syscall_info.c'; fi`
 
-strace-retval.o: retval.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-retval.o -MD -MP -MF $(DEPDIR)/strace-retval.Tpo -c -o strace-retval.o `test -f 'retval.c' || echo '$(srcdir)/'`retval.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-retval.Tpo $(DEPDIR)/strace-retval.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='retval.c' object='strace-retval.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-quota.o: quota.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-quota.o -MD -MP -MF $(DEPDIR)/libstrace_a-quota.Tpo -c -o libstrace_a-quota.o `test -f 'quota.c' || echo '$(srcdir)/'`quota.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-quota.Tpo $(DEPDIR)/libstrace_a-quota.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='quota.c' object='libstrace_a-quota.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-retval.o `test -f 'retval.c' || echo '$(srcdir)/'`retval.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-quota.o `test -f 'quota.c' || echo '$(srcdir)/'`quota.c
 
-strace-retval.obj: retval.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-retval.obj -MD -MP -MF $(DEPDIR)/strace-retval.Tpo -c -o strace-retval.obj `if test -f 'retval.c'; then $(CYGPATH_W) 'retval.c'; else $(CYGPATH_W) '$(srcdir)/retval.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-retval.Tpo $(DEPDIR)/strace-retval.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='retval.c' object='strace-retval.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-quota.obj: quota.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-quota.obj -MD -MP -MF $(DEPDIR)/libstrace_a-quota.Tpo -c -o libstrace_a-quota.obj `if test -f 'quota.c'; then $(CYGPATH_W) 'quota.c'; else $(CYGPATH_W) '$(srcdir)/quota.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-quota.Tpo $(DEPDIR)/libstrace_a-quota.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='quota.c' object='libstrace_a-quota.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-retval.obj `if test -f 'retval.c'; then $(CYGPATH_W) 'retval.c'; else $(CYGPATH_W) '$(srcdir)/retval.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-quota.obj `if test -f 'quota.c'; then $(CYGPATH_W) 'quota.c'; else $(CYGPATH_W) '$(srcdir)/quota.c'; fi`
 
-strace-riscv.o: riscv.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-riscv.o -MD -MP -MF $(DEPDIR)/strace-riscv.Tpo -c -o strace-riscv.o `test -f 'riscv.c' || echo '$(srcdir)/'`riscv.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-riscv.Tpo $(DEPDIR)/strace-riscv.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='riscv.c' object='strace-riscv.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-random_ioctl.o: random_ioctl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-random_ioctl.o -MD -MP -MF $(DEPDIR)/libstrace_a-random_ioctl.Tpo -c -o libstrace_a-random_ioctl.o `test -f 'random_ioctl.c' || echo '$(srcdir)/'`random_ioctl.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-random_ioctl.Tpo $(DEPDIR)/libstrace_a-random_ioctl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='random_ioctl.c' object='libstrace_a-random_ioctl.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-riscv.o `test -f 'riscv.c' || echo '$(srcdir)/'`riscv.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-random_ioctl.o `test -f 'random_ioctl.c' || echo '$(srcdir)/'`random_ioctl.c
 
-strace-riscv.obj: riscv.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-riscv.obj -MD -MP -MF $(DEPDIR)/strace-riscv.Tpo -c -o strace-riscv.obj `if test -f 'riscv.c'; then $(CYGPATH_W) 'riscv.c'; else $(CYGPATH_W) '$(srcdir)/riscv.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-riscv.Tpo $(DEPDIR)/strace-riscv.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='riscv.c' object='strace-riscv.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-random_ioctl.obj: random_ioctl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-random_ioctl.obj -MD -MP -MF $(DEPDIR)/libstrace_a-random_ioctl.Tpo -c -o libstrace_a-random_ioctl.obj `if test -f 'random_ioctl.c'; then $(CYGPATH_W) 'random_ioctl.c'; else $(CYGPATH_W) '$(srcdir)/random_ioctl.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-random_ioctl.Tpo $(DEPDIR)/libstrace_a-random_ioctl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='random_ioctl.c' object='libstrace_a-random_ioctl.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-riscv.obj `if test -f 'riscv.c'; then $(CYGPATH_W) 'riscv.c'; else $(CYGPATH_W) '$(srcdir)/riscv.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-random_ioctl.obj `if test -f 'random_ioctl.c'; then $(CYGPATH_W) 'random_ioctl.c'; else $(CYGPATH_W) '$(srcdir)/random_ioctl.c'; fi`
 
-strace-rt_sigframe.o: rt_sigframe.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-rt_sigframe.o -MD -MP -MF $(DEPDIR)/strace-rt_sigframe.Tpo -c -o strace-rt_sigframe.o `test -f 'rt_sigframe.c' || echo '$(srcdir)/'`rt_sigframe.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-rt_sigframe.Tpo $(DEPDIR)/strace-rt_sigframe.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rt_sigframe.c' object='strace-rt_sigframe.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-readahead.o: readahead.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-readahead.o -MD -MP -MF $(DEPDIR)/libstrace_a-readahead.Tpo -c -o libstrace_a-readahead.o `test -f 'readahead.c' || echo '$(srcdir)/'`readahead.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-readahead.Tpo $(DEPDIR)/libstrace_a-readahead.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='readahead.c' object='libstrace_a-readahead.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-rt_sigframe.o `test -f 'rt_sigframe.c' || echo '$(srcdir)/'`rt_sigframe.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-readahead.o `test -f 'readahead.c' || echo '$(srcdir)/'`readahead.c
 
-strace-rt_sigframe.obj: rt_sigframe.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-rt_sigframe.obj -MD -MP -MF $(DEPDIR)/strace-rt_sigframe.Tpo -c -o strace-rt_sigframe.obj `if test -f 'rt_sigframe.c'; then $(CYGPATH_W) 'rt_sigframe.c'; else $(CYGPATH_W) '$(srcdir)/rt_sigframe.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-rt_sigframe.Tpo $(DEPDIR)/strace-rt_sigframe.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rt_sigframe.c' object='strace-rt_sigframe.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-readahead.obj: readahead.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-readahead.obj -MD -MP -MF $(DEPDIR)/libstrace_a-readahead.Tpo -c -o libstrace_a-readahead.obj `if test -f 'readahead.c'; then $(CYGPATH_W) 'readahead.c'; else $(CYGPATH_W) '$(srcdir)/readahead.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-readahead.Tpo $(DEPDIR)/libstrace_a-readahead.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='readahead.c' object='libstrace_a-readahead.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-rt_sigframe.obj `if test -f 'rt_sigframe.c'; then $(CYGPATH_W) 'rt_sigframe.c'; else $(CYGPATH_W) '$(srcdir)/rt_sigframe.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-readahead.obj `if test -f 'readahead.c'; then $(CYGPATH_W) 'readahead.c'; else $(CYGPATH_W) '$(srcdir)/readahead.c'; fi`
 
-strace-rt_sigreturn.o: rt_sigreturn.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-rt_sigreturn.o -MD -MP -MF $(DEPDIR)/strace-rt_sigreturn.Tpo -c -o strace-rt_sigreturn.o `test -f 'rt_sigreturn.c' || echo '$(srcdir)/'`rt_sigreturn.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-rt_sigreturn.Tpo $(DEPDIR)/strace-rt_sigreturn.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rt_sigreturn.c' object='strace-rt_sigreturn.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-readlink.o: readlink.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-readlink.o -MD -MP -MF $(DEPDIR)/libstrace_a-readlink.Tpo -c -o libstrace_a-readlink.o `test -f 'readlink.c' || echo '$(srcdir)/'`readlink.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-readlink.Tpo $(DEPDIR)/libstrace_a-readlink.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='readlink.c' object='libstrace_a-readlink.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-rt_sigreturn.o `test -f 'rt_sigreturn.c' || echo '$(srcdir)/'`rt_sigreturn.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-readlink.o `test -f 'readlink.c' || echo '$(srcdir)/'`readlink.c
 
-strace-rt_sigreturn.obj: rt_sigreturn.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-rt_sigreturn.obj -MD -MP -MF $(DEPDIR)/strace-rt_sigreturn.Tpo -c -o strace-rt_sigreturn.obj `if test -f 'rt_sigreturn.c'; then $(CYGPATH_W) 'rt_sigreturn.c'; else $(CYGPATH_W) '$(srcdir)/rt_sigreturn.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-rt_sigreturn.Tpo $(DEPDIR)/strace-rt_sigreturn.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rt_sigreturn.c' object='strace-rt_sigreturn.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-readlink.obj: readlink.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-readlink.obj -MD -MP -MF $(DEPDIR)/libstrace_a-readlink.Tpo -c -o libstrace_a-readlink.obj `if test -f 'readlink.c'; then $(CYGPATH_W) 'readlink.c'; else $(CYGPATH_W) '$(srcdir)/readlink.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-readlink.Tpo $(DEPDIR)/libstrace_a-readlink.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='readlink.c' object='libstrace_a-readlink.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-rt_sigreturn.obj `if test -f 'rt_sigreturn.c'; then $(CYGPATH_W) 'rt_sigreturn.c'; else $(CYGPATH_W) '$(srcdir)/rt_sigreturn.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-readlink.obj `if test -f 'readlink.c'; then $(CYGPATH_W) 'readlink.c'; else $(CYGPATH_W) '$(srcdir)/readlink.c'; fi`
 
-strace-rtc.o: rtc.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-rtc.o -MD -MP -MF $(DEPDIR)/strace-rtc.Tpo -c -o strace-rtc.o `test -f 'rtc.c' || echo '$(srcdir)/'`rtc.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-rtc.Tpo $(DEPDIR)/strace-rtc.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtc.c' object='strace-rtc.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-reboot.o: reboot.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-reboot.o -MD -MP -MF $(DEPDIR)/libstrace_a-reboot.Tpo -c -o libstrace_a-reboot.o `test -f 'reboot.c' || echo '$(srcdir)/'`reboot.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-reboot.Tpo $(DEPDIR)/libstrace_a-reboot.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='reboot.c' object='libstrace_a-reboot.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-rtc.o `test -f 'rtc.c' || echo '$(srcdir)/'`rtc.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-reboot.o `test -f 'reboot.c' || echo '$(srcdir)/'`reboot.c
 
-strace-rtc.obj: rtc.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-rtc.obj -MD -MP -MF $(DEPDIR)/strace-rtc.Tpo -c -o strace-rtc.obj `if test -f 'rtc.c'; then $(CYGPATH_W) 'rtc.c'; else $(CYGPATH_W) '$(srcdir)/rtc.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-rtc.Tpo $(DEPDIR)/strace-rtc.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtc.c' object='strace-rtc.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-reboot.obj: reboot.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-reboot.obj -MD -MP -MF $(DEPDIR)/libstrace_a-reboot.Tpo -c -o libstrace_a-reboot.obj `if test -f 'reboot.c'; then $(CYGPATH_W) 'reboot.c'; else $(CYGPATH_W) '$(srcdir)/reboot.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-reboot.Tpo $(DEPDIR)/libstrace_a-reboot.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='reboot.c' object='libstrace_a-reboot.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-rtc.obj `if test -f 'rtc.c'; then $(CYGPATH_W) 'rtc.c'; else $(CYGPATH_W) '$(srcdir)/rtc.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-reboot.obj `if test -f 'reboot.c'; then $(CYGPATH_W) 'reboot.c'; else $(CYGPATH_W) '$(srcdir)/reboot.c'; fi`
 
-strace-rtnl_addr.o: rtnl_addr.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-rtnl_addr.o -MD -MP -MF $(DEPDIR)/strace-rtnl_addr.Tpo -c -o strace-rtnl_addr.o `test -f 'rtnl_addr.c' || echo '$(srcdir)/'`rtnl_addr.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-rtnl_addr.Tpo $(DEPDIR)/strace-rtnl_addr.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_addr.c' object='strace-rtnl_addr.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-renameat.o: renameat.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-renameat.o -MD -MP -MF $(DEPDIR)/libstrace_a-renameat.Tpo -c -o libstrace_a-renameat.o `test -f 'renameat.c' || echo '$(srcdir)/'`renameat.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-renameat.Tpo $(DEPDIR)/libstrace_a-renameat.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='renameat.c' object='libstrace_a-renameat.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-rtnl_addr.o `test -f 'rtnl_addr.c' || echo '$(srcdir)/'`rtnl_addr.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-renameat.o `test -f 'renameat.c' || echo '$(srcdir)/'`renameat.c
 
-strace-rtnl_addr.obj: rtnl_addr.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-rtnl_addr.obj -MD -MP -MF $(DEPDIR)/strace-rtnl_addr.Tpo -c -o strace-rtnl_addr.obj `if test -f 'rtnl_addr.c'; then $(CYGPATH_W) 'rtnl_addr.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_addr.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-rtnl_addr.Tpo $(DEPDIR)/strace-rtnl_addr.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_addr.c' object='strace-rtnl_addr.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-renameat.obj: renameat.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-renameat.obj -MD -MP -MF $(DEPDIR)/libstrace_a-renameat.Tpo -c -o libstrace_a-renameat.obj `if test -f 'renameat.c'; then $(CYGPATH_W) 'renameat.c'; else $(CYGPATH_W) '$(srcdir)/renameat.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-renameat.Tpo $(DEPDIR)/libstrace_a-renameat.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='renameat.c' object='libstrace_a-renameat.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-rtnl_addr.obj `if test -f 'rtnl_addr.c'; then $(CYGPATH_W) 'rtnl_addr.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_addr.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-renameat.obj `if test -f 'renameat.c'; then $(CYGPATH_W) 'renameat.c'; else $(CYGPATH_W) '$(srcdir)/renameat.c'; fi`
 
-strace-rtnl_addrlabel.o: rtnl_addrlabel.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-rtnl_addrlabel.o -MD -MP -MF $(DEPDIR)/strace-rtnl_addrlabel.Tpo -c -o strace-rtnl_addrlabel.o `test -f 'rtnl_addrlabel.c' || echo '$(srcdir)/'`rtnl_addrlabel.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-rtnl_addrlabel.Tpo $(DEPDIR)/strace-rtnl_addrlabel.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_addrlabel.c' object='strace-rtnl_addrlabel.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-resource.o: resource.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-resource.o -MD -MP -MF $(DEPDIR)/libstrace_a-resource.Tpo -c -o libstrace_a-resource.o `test -f 'resource.c' || echo '$(srcdir)/'`resource.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-resource.Tpo $(DEPDIR)/libstrace_a-resource.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='resource.c' object='libstrace_a-resource.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-rtnl_addrlabel.o `test -f 'rtnl_addrlabel.c' || echo '$(srcdir)/'`rtnl_addrlabel.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-resource.o `test -f 'resource.c' || echo '$(srcdir)/'`resource.c
 
-strace-rtnl_addrlabel.obj: rtnl_addrlabel.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-rtnl_addrlabel.obj -MD -MP -MF $(DEPDIR)/strace-rtnl_addrlabel.Tpo -c -o strace-rtnl_addrlabel.obj `if test -f 'rtnl_addrlabel.c'; then $(CYGPATH_W) 'rtnl_addrlabel.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_addrlabel.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-rtnl_addrlabel.Tpo $(DEPDIR)/strace-rtnl_addrlabel.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_addrlabel.c' object='strace-rtnl_addrlabel.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-resource.obj: resource.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-resource.obj -MD -MP -MF $(DEPDIR)/libstrace_a-resource.Tpo -c -o libstrace_a-resource.obj `if test -f 'resource.c'; then $(CYGPATH_W) 'resource.c'; else $(CYGPATH_W) '$(srcdir)/resource.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-resource.Tpo $(DEPDIR)/libstrace_a-resource.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='resource.c' object='libstrace_a-resource.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-rtnl_addrlabel.obj `if test -f 'rtnl_addrlabel.c'; then $(CYGPATH_W) 'rtnl_addrlabel.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_addrlabel.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-resource.obj `if test -f 'resource.c'; then $(CYGPATH_W) 'resource.c'; else $(CYGPATH_W) '$(srcdir)/resource.c'; fi`
 
-strace-rtnl_dcb.o: rtnl_dcb.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-rtnl_dcb.o -MD -MP -MF $(DEPDIR)/strace-rtnl_dcb.Tpo -c -o strace-rtnl_dcb.o `test -f 'rtnl_dcb.c' || echo '$(srcdir)/'`rtnl_dcb.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-rtnl_dcb.Tpo $(DEPDIR)/strace-rtnl_dcb.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_dcb.c' object='strace-rtnl_dcb.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-retval.o: retval.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-retval.o -MD -MP -MF $(DEPDIR)/libstrace_a-retval.Tpo -c -o libstrace_a-retval.o `test -f 'retval.c' || echo '$(srcdir)/'`retval.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-retval.Tpo $(DEPDIR)/libstrace_a-retval.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='retval.c' object='libstrace_a-retval.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-rtnl_dcb.o `test -f 'rtnl_dcb.c' || echo '$(srcdir)/'`rtnl_dcb.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-retval.o `test -f 'retval.c' || echo '$(srcdir)/'`retval.c
 
-strace-rtnl_dcb.obj: rtnl_dcb.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-rtnl_dcb.obj -MD -MP -MF $(DEPDIR)/strace-rtnl_dcb.Tpo -c -o strace-rtnl_dcb.obj `if test -f 'rtnl_dcb.c'; then $(CYGPATH_W) 'rtnl_dcb.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_dcb.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-rtnl_dcb.Tpo $(DEPDIR)/strace-rtnl_dcb.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_dcb.c' object='strace-rtnl_dcb.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-retval.obj: retval.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-retval.obj -MD -MP -MF $(DEPDIR)/libstrace_a-retval.Tpo -c -o libstrace_a-retval.obj `if test -f 'retval.c'; then $(CYGPATH_W) 'retval.c'; else $(CYGPATH_W) '$(srcdir)/retval.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-retval.Tpo $(DEPDIR)/libstrace_a-retval.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='retval.c' object='libstrace_a-retval.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-rtnl_dcb.obj `if test -f 'rtnl_dcb.c'; then $(CYGPATH_W) 'rtnl_dcb.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_dcb.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-retval.obj `if test -f 'retval.c'; then $(CYGPATH_W) 'retval.c'; else $(CYGPATH_W) '$(srcdir)/retval.c'; fi`
 
-strace-rtnl_link.o: rtnl_link.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-rtnl_link.o -MD -MP -MF $(DEPDIR)/strace-rtnl_link.Tpo -c -o strace-rtnl_link.o `test -f 'rtnl_link.c' || echo '$(srcdir)/'`rtnl_link.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-rtnl_link.Tpo $(DEPDIR)/strace-rtnl_link.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_link.c' object='strace-rtnl_link.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-riscv.o: riscv.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-riscv.o -MD -MP -MF $(DEPDIR)/libstrace_a-riscv.Tpo -c -o libstrace_a-riscv.o `test -f 'riscv.c' || echo '$(srcdir)/'`riscv.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-riscv.Tpo $(DEPDIR)/libstrace_a-riscv.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='riscv.c' object='libstrace_a-riscv.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-rtnl_link.o `test -f 'rtnl_link.c' || echo '$(srcdir)/'`rtnl_link.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-riscv.o `test -f 'riscv.c' || echo '$(srcdir)/'`riscv.c
 
-strace-rtnl_link.obj: rtnl_link.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-rtnl_link.obj -MD -MP -MF $(DEPDIR)/strace-rtnl_link.Tpo -c -o strace-rtnl_link.obj `if test -f 'rtnl_link.c'; then $(CYGPATH_W) 'rtnl_link.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_link.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-rtnl_link.Tpo $(DEPDIR)/strace-rtnl_link.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_link.c' object='strace-rtnl_link.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-riscv.obj: riscv.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-riscv.obj -MD -MP -MF $(DEPDIR)/libstrace_a-riscv.Tpo -c -o libstrace_a-riscv.obj `if test -f 'riscv.c'; then $(CYGPATH_W) 'riscv.c'; else $(CYGPATH_W) '$(srcdir)/riscv.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-riscv.Tpo $(DEPDIR)/libstrace_a-riscv.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='riscv.c' object='libstrace_a-riscv.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-rtnl_link.obj `if test -f 'rtnl_link.c'; then $(CYGPATH_W) 'rtnl_link.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_link.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-riscv.obj `if test -f 'riscv.c'; then $(CYGPATH_W) 'riscv.c'; else $(CYGPATH_W) '$(srcdir)/riscv.c'; fi`
 
-strace-rtnl_mdb.o: rtnl_mdb.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-rtnl_mdb.o -MD -MP -MF $(DEPDIR)/strace-rtnl_mdb.Tpo -c -o strace-rtnl_mdb.o `test -f 'rtnl_mdb.c' || echo '$(srcdir)/'`rtnl_mdb.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-rtnl_mdb.Tpo $(DEPDIR)/strace-rtnl_mdb.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_mdb.c' object='strace-rtnl_mdb.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-rt_sigframe.o: rt_sigframe.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-rt_sigframe.o -MD -MP -MF $(DEPDIR)/libstrace_a-rt_sigframe.Tpo -c -o libstrace_a-rt_sigframe.o `test -f 'rt_sigframe.c' || echo '$(srcdir)/'`rt_sigframe.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-rt_sigframe.Tpo $(DEPDIR)/libstrace_a-rt_sigframe.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rt_sigframe.c' object='libstrace_a-rt_sigframe.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-rtnl_mdb.o `test -f 'rtnl_mdb.c' || echo '$(srcdir)/'`rtnl_mdb.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-rt_sigframe.o `test -f 'rt_sigframe.c' || echo '$(srcdir)/'`rt_sigframe.c
 
-strace-rtnl_mdb.obj: rtnl_mdb.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-rtnl_mdb.obj -MD -MP -MF $(DEPDIR)/strace-rtnl_mdb.Tpo -c -o strace-rtnl_mdb.obj `if test -f 'rtnl_mdb.c'; then $(CYGPATH_W) 'rtnl_mdb.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_mdb.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-rtnl_mdb.Tpo $(DEPDIR)/strace-rtnl_mdb.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_mdb.c' object='strace-rtnl_mdb.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-rt_sigframe.obj: rt_sigframe.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-rt_sigframe.obj -MD -MP -MF $(DEPDIR)/libstrace_a-rt_sigframe.Tpo -c -o libstrace_a-rt_sigframe.obj `if test -f 'rt_sigframe.c'; then $(CYGPATH_W) 'rt_sigframe.c'; else $(CYGPATH_W) '$(srcdir)/rt_sigframe.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-rt_sigframe.Tpo $(DEPDIR)/libstrace_a-rt_sigframe.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rt_sigframe.c' object='libstrace_a-rt_sigframe.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-rtnl_mdb.obj `if test -f 'rtnl_mdb.c'; then $(CYGPATH_W) 'rtnl_mdb.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_mdb.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-rt_sigframe.obj `if test -f 'rt_sigframe.c'; then $(CYGPATH_W) 'rt_sigframe.c'; else $(CYGPATH_W) '$(srcdir)/rt_sigframe.c'; fi`
 
-strace-rtnl_neigh.o: rtnl_neigh.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-rtnl_neigh.o -MD -MP -MF $(DEPDIR)/strace-rtnl_neigh.Tpo -c -o strace-rtnl_neigh.o `test -f 'rtnl_neigh.c' || echo '$(srcdir)/'`rtnl_neigh.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-rtnl_neigh.Tpo $(DEPDIR)/strace-rtnl_neigh.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_neigh.c' object='strace-rtnl_neigh.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-rt_sigreturn.o: rt_sigreturn.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-rt_sigreturn.o -MD -MP -MF $(DEPDIR)/libstrace_a-rt_sigreturn.Tpo -c -o libstrace_a-rt_sigreturn.o `test -f 'rt_sigreturn.c' || echo '$(srcdir)/'`rt_sigreturn.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-rt_sigreturn.Tpo $(DEPDIR)/libstrace_a-rt_sigreturn.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rt_sigreturn.c' object='libstrace_a-rt_sigreturn.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-rtnl_neigh.o `test -f 'rtnl_neigh.c' || echo '$(srcdir)/'`rtnl_neigh.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-rt_sigreturn.o `test -f 'rt_sigreturn.c' || echo '$(srcdir)/'`rt_sigreturn.c
 
-strace-rtnl_neigh.obj: rtnl_neigh.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-rtnl_neigh.obj -MD -MP -MF $(DEPDIR)/strace-rtnl_neigh.Tpo -c -o strace-rtnl_neigh.obj `if test -f 'rtnl_neigh.c'; then $(CYGPATH_W) 'rtnl_neigh.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_neigh.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-rtnl_neigh.Tpo $(DEPDIR)/strace-rtnl_neigh.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_neigh.c' object='strace-rtnl_neigh.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-rt_sigreturn.obj: rt_sigreturn.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-rt_sigreturn.obj -MD -MP -MF $(DEPDIR)/libstrace_a-rt_sigreturn.Tpo -c -o libstrace_a-rt_sigreturn.obj `if test -f 'rt_sigreturn.c'; then $(CYGPATH_W) 'rt_sigreturn.c'; else $(CYGPATH_W) '$(srcdir)/rt_sigreturn.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-rt_sigreturn.Tpo $(DEPDIR)/libstrace_a-rt_sigreturn.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rt_sigreturn.c' object='libstrace_a-rt_sigreturn.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-rtnl_neigh.obj `if test -f 'rtnl_neigh.c'; then $(CYGPATH_W) 'rtnl_neigh.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_neigh.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-rt_sigreturn.obj `if test -f 'rt_sigreturn.c'; then $(CYGPATH_W) 'rt_sigreturn.c'; else $(CYGPATH_W) '$(srcdir)/rt_sigreturn.c'; fi`
 
-strace-rtnl_neightbl.o: rtnl_neightbl.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-rtnl_neightbl.o -MD -MP -MF $(DEPDIR)/strace-rtnl_neightbl.Tpo -c -o strace-rtnl_neightbl.o `test -f 'rtnl_neightbl.c' || echo '$(srcdir)/'`rtnl_neightbl.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-rtnl_neightbl.Tpo $(DEPDIR)/strace-rtnl_neightbl.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_neightbl.c' object='strace-rtnl_neightbl.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-rtc.o: rtc.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-rtc.o -MD -MP -MF $(DEPDIR)/libstrace_a-rtc.Tpo -c -o libstrace_a-rtc.o `test -f 'rtc.c' || echo '$(srcdir)/'`rtc.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-rtc.Tpo $(DEPDIR)/libstrace_a-rtc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtc.c' object='libstrace_a-rtc.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-rtnl_neightbl.o `test -f 'rtnl_neightbl.c' || echo '$(srcdir)/'`rtnl_neightbl.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-rtc.o `test -f 'rtc.c' || echo '$(srcdir)/'`rtc.c
 
-strace-rtnl_neightbl.obj: rtnl_neightbl.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-rtnl_neightbl.obj -MD -MP -MF $(DEPDIR)/strace-rtnl_neightbl.Tpo -c -o strace-rtnl_neightbl.obj `if test -f 'rtnl_neightbl.c'; then $(CYGPATH_W) 'rtnl_neightbl.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_neightbl.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-rtnl_neightbl.Tpo $(DEPDIR)/strace-rtnl_neightbl.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_neightbl.c' object='strace-rtnl_neightbl.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-rtc.obj: rtc.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-rtc.obj -MD -MP -MF $(DEPDIR)/libstrace_a-rtc.Tpo -c -o libstrace_a-rtc.obj `if test -f 'rtc.c'; then $(CYGPATH_W) 'rtc.c'; else $(CYGPATH_W) '$(srcdir)/rtc.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-rtc.Tpo $(DEPDIR)/libstrace_a-rtc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtc.c' object='libstrace_a-rtc.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-rtnl_neightbl.obj `if test -f 'rtnl_neightbl.c'; then $(CYGPATH_W) 'rtnl_neightbl.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_neightbl.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-rtc.obj `if test -f 'rtc.c'; then $(CYGPATH_W) 'rtc.c'; else $(CYGPATH_W) '$(srcdir)/rtc.c'; fi`
 
-strace-rtnl_netconf.o: rtnl_netconf.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-rtnl_netconf.o -MD -MP -MF $(DEPDIR)/strace-rtnl_netconf.Tpo -c -o strace-rtnl_netconf.o `test -f 'rtnl_netconf.c' || echo '$(srcdir)/'`rtnl_netconf.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-rtnl_netconf.Tpo $(DEPDIR)/strace-rtnl_netconf.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_netconf.c' object='strace-rtnl_netconf.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-rtnl_addr.o: rtnl_addr.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-rtnl_addr.o -MD -MP -MF $(DEPDIR)/libstrace_a-rtnl_addr.Tpo -c -o libstrace_a-rtnl_addr.o `test -f 'rtnl_addr.c' || echo '$(srcdir)/'`rtnl_addr.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-rtnl_addr.Tpo $(DEPDIR)/libstrace_a-rtnl_addr.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_addr.c' object='libstrace_a-rtnl_addr.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-rtnl_netconf.o `test -f 'rtnl_netconf.c' || echo '$(srcdir)/'`rtnl_netconf.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-rtnl_addr.o `test -f 'rtnl_addr.c' || echo '$(srcdir)/'`rtnl_addr.c
 
-strace-rtnl_netconf.obj: rtnl_netconf.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-rtnl_netconf.obj -MD -MP -MF $(DEPDIR)/strace-rtnl_netconf.Tpo -c -o strace-rtnl_netconf.obj `if test -f 'rtnl_netconf.c'; then $(CYGPATH_W) 'rtnl_netconf.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_netconf.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-rtnl_netconf.Tpo $(DEPDIR)/strace-rtnl_netconf.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_netconf.c' object='strace-rtnl_netconf.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-rtnl_addr.obj: rtnl_addr.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-rtnl_addr.obj -MD -MP -MF $(DEPDIR)/libstrace_a-rtnl_addr.Tpo -c -o libstrace_a-rtnl_addr.obj `if test -f 'rtnl_addr.c'; then $(CYGPATH_W) 'rtnl_addr.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_addr.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-rtnl_addr.Tpo $(DEPDIR)/libstrace_a-rtnl_addr.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_addr.c' object='libstrace_a-rtnl_addr.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-rtnl_netconf.obj `if test -f 'rtnl_netconf.c'; then $(CYGPATH_W) 'rtnl_netconf.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_netconf.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-rtnl_addr.obj `if test -f 'rtnl_addr.c'; then $(CYGPATH_W) 'rtnl_addr.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_addr.c'; fi`
 
-strace-rtnl_nsid.o: rtnl_nsid.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-rtnl_nsid.o -MD -MP -MF $(DEPDIR)/strace-rtnl_nsid.Tpo -c -o strace-rtnl_nsid.o `test -f 'rtnl_nsid.c' || echo '$(srcdir)/'`rtnl_nsid.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-rtnl_nsid.Tpo $(DEPDIR)/strace-rtnl_nsid.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_nsid.c' object='strace-rtnl_nsid.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-rtnl_addrlabel.o: rtnl_addrlabel.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-rtnl_addrlabel.o -MD -MP -MF $(DEPDIR)/libstrace_a-rtnl_addrlabel.Tpo -c -o libstrace_a-rtnl_addrlabel.o `test -f 'rtnl_addrlabel.c' || echo '$(srcdir)/'`rtnl_addrlabel.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-rtnl_addrlabel.Tpo $(DEPDIR)/libstrace_a-rtnl_addrlabel.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_addrlabel.c' object='libstrace_a-rtnl_addrlabel.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-rtnl_nsid.o `test -f 'rtnl_nsid.c' || echo '$(srcdir)/'`rtnl_nsid.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-rtnl_addrlabel.o `test -f 'rtnl_addrlabel.c' || echo '$(srcdir)/'`rtnl_addrlabel.c
 
-strace-rtnl_nsid.obj: rtnl_nsid.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-rtnl_nsid.obj -MD -MP -MF $(DEPDIR)/strace-rtnl_nsid.Tpo -c -o strace-rtnl_nsid.obj `if test -f 'rtnl_nsid.c'; then $(CYGPATH_W) 'rtnl_nsid.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_nsid.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-rtnl_nsid.Tpo $(DEPDIR)/strace-rtnl_nsid.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_nsid.c' object='strace-rtnl_nsid.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-rtnl_addrlabel.obj: rtnl_addrlabel.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-rtnl_addrlabel.obj -MD -MP -MF $(DEPDIR)/libstrace_a-rtnl_addrlabel.Tpo -c -o libstrace_a-rtnl_addrlabel.obj `if test -f 'rtnl_addrlabel.c'; then $(CYGPATH_W) 'rtnl_addrlabel.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_addrlabel.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-rtnl_addrlabel.Tpo $(DEPDIR)/libstrace_a-rtnl_addrlabel.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_addrlabel.c' object='libstrace_a-rtnl_addrlabel.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-rtnl_nsid.obj `if test -f 'rtnl_nsid.c'; then $(CYGPATH_W) 'rtnl_nsid.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_nsid.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-rtnl_addrlabel.obj `if test -f 'rtnl_addrlabel.c'; then $(CYGPATH_W) 'rtnl_addrlabel.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_addrlabel.c'; fi`
 
-strace-rtnl_route.o: rtnl_route.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-rtnl_route.o -MD -MP -MF $(DEPDIR)/strace-rtnl_route.Tpo -c -o strace-rtnl_route.o `test -f 'rtnl_route.c' || echo '$(srcdir)/'`rtnl_route.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-rtnl_route.Tpo $(DEPDIR)/strace-rtnl_route.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_route.c' object='strace-rtnl_route.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-rtnl_dcb.o: rtnl_dcb.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-rtnl_dcb.o -MD -MP -MF $(DEPDIR)/libstrace_a-rtnl_dcb.Tpo -c -o libstrace_a-rtnl_dcb.o `test -f 'rtnl_dcb.c' || echo '$(srcdir)/'`rtnl_dcb.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-rtnl_dcb.Tpo $(DEPDIR)/libstrace_a-rtnl_dcb.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_dcb.c' object='libstrace_a-rtnl_dcb.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-rtnl_route.o `test -f 'rtnl_route.c' || echo '$(srcdir)/'`rtnl_route.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-rtnl_dcb.o `test -f 'rtnl_dcb.c' || echo '$(srcdir)/'`rtnl_dcb.c
 
-strace-rtnl_route.obj: rtnl_route.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-rtnl_route.obj -MD -MP -MF $(DEPDIR)/strace-rtnl_route.Tpo -c -o strace-rtnl_route.obj `if test -f 'rtnl_route.c'; then $(CYGPATH_W) 'rtnl_route.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_route.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-rtnl_route.Tpo $(DEPDIR)/strace-rtnl_route.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_route.c' object='strace-rtnl_route.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-rtnl_dcb.obj: rtnl_dcb.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-rtnl_dcb.obj -MD -MP -MF $(DEPDIR)/libstrace_a-rtnl_dcb.Tpo -c -o libstrace_a-rtnl_dcb.obj `if test -f 'rtnl_dcb.c'; then $(CYGPATH_W) 'rtnl_dcb.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_dcb.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-rtnl_dcb.Tpo $(DEPDIR)/libstrace_a-rtnl_dcb.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_dcb.c' object='libstrace_a-rtnl_dcb.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-rtnl_route.obj `if test -f 'rtnl_route.c'; then $(CYGPATH_W) 'rtnl_route.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_route.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-rtnl_dcb.obj `if test -f 'rtnl_dcb.c'; then $(CYGPATH_W) 'rtnl_dcb.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_dcb.c'; fi`
 
-strace-rtnl_rule.o: rtnl_rule.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-rtnl_rule.o -MD -MP -MF $(DEPDIR)/strace-rtnl_rule.Tpo -c -o strace-rtnl_rule.o `test -f 'rtnl_rule.c' || echo '$(srcdir)/'`rtnl_rule.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-rtnl_rule.Tpo $(DEPDIR)/strace-rtnl_rule.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_rule.c' object='strace-rtnl_rule.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-rtnl_link.o: rtnl_link.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-rtnl_link.o -MD -MP -MF $(DEPDIR)/libstrace_a-rtnl_link.Tpo -c -o libstrace_a-rtnl_link.o `test -f 'rtnl_link.c' || echo '$(srcdir)/'`rtnl_link.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-rtnl_link.Tpo $(DEPDIR)/libstrace_a-rtnl_link.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_link.c' object='libstrace_a-rtnl_link.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-rtnl_rule.o `test -f 'rtnl_rule.c' || echo '$(srcdir)/'`rtnl_rule.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-rtnl_link.o `test -f 'rtnl_link.c' || echo '$(srcdir)/'`rtnl_link.c
 
-strace-rtnl_rule.obj: rtnl_rule.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-rtnl_rule.obj -MD -MP -MF $(DEPDIR)/strace-rtnl_rule.Tpo -c -o strace-rtnl_rule.obj `if test -f 'rtnl_rule.c'; then $(CYGPATH_W) 'rtnl_rule.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_rule.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-rtnl_rule.Tpo $(DEPDIR)/strace-rtnl_rule.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_rule.c' object='strace-rtnl_rule.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-rtnl_link.obj: rtnl_link.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-rtnl_link.obj -MD -MP -MF $(DEPDIR)/libstrace_a-rtnl_link.Tpo -c -o libstrace_a-rtnl_link.obj `if test -f 'rtnl_link.c'; then $(CYGPATH_W) 'rtnl_link.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_link.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-rtnl_link.Tpo $(DEPDIR)/libstrace_a-rtnl_link.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_link.c' object='libstrace_a-rtnl_link.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-rtnl_rule.obj `if test -f 'rtnl_rule.c'; then $(CYGPATH_W) 'rtnl_rule.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_rule.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-rtnl_link.obj `if test -f 'rtnl_link.c'; then $(CYGPATH_W) 'rtnl_link.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_link.c'; fi`
 
-strace-rtnl_tc.o: rtnl_tc.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-rtnl_tc.o -MD -MP -MF $(DEPDIR)/strace-rtnl_tc.Tpo -c -o strace-rtnl_tc.o `test -f 'rtnl_tc.c' || echo '$(srcdir)/'`rtnl_tc.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-rtnl_tc.Tpo $(DEPDIR)/strace-rtnl_tc.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_tc.c' object='strace-rtnl_tc.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-rtnl_mdb.o: rtnl_mdb.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-rtnl_mdb.o -MD -MP -MF $(DEPDIR)/libstrace_a-rtnl_mdb.Tpo -c -o libstrace_a-rtnl_mdb.o `test -f 'rtnl_mdb.c' || echo '$(srcdir)/'`rtnl_mdb.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-rtnl_mdb.Tpo $(DEPDIR)/libstrace_a-rtnl_mdb.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_mdb.c' object='libstrace_a-rtnl_mdb.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-rtnl_tc.o `test -f 'rtnl_tc.c' || echo '$(srcdir)/'`rtnl_tc.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-rtnl_mdb.o `test -f 'rtnl_mdb.c' || echo '$(srcdir)/'`rtnl_mdb.c
 
-strace-rtnl_tc.obj: rtnl_tc.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-rtnl_tc.obj -MD -MP -MF $(DEPDIR)/strace-rtnl_tc.Tpo -c -o strace-rtnl_tc.obj `if test -f 'rtnl_tc.c'; then $(CYGPATH_W) 'rtnl_tc.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_tc.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-rtnl_tc.Tpo $(DEPDIR)/strace-rtnl_tc.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_tc.c' object='strace-rtnl_tc.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-rtnl_mdb.obj: rtnl_mdb.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-rtnl_mdb.obj -MD -MP -MF $(DEPDIR)/libstrace_a-rtnl_mdb.Tpo -c -o libstrace_a-rtnl_mdb.obj `if test -f 'rtnl_mdb.c'; then $(CYGPATH_W) 'rtnl_mdb.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_mdb.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-rtnl_mdb.Tpo $(DEPDIR)/libstrace_a-rtnl_mdb.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_mdb.c' object='libstrace_a-rtnl_mdb.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-rtnl_tc.obj `if test -f 'rtnl_tc.c'; then $(CYGPATH_W) 'rtnl_tc.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_tc.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-rtnl_mdb.obj `if test -f 'rtnl_mdb.c'; then $(CYGPATH_W) 'rtnl_mdb.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_mdb.c'; fi`
 
-strace-rtnl_tc_action.o: rtnl_tc_action.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-rtnl_tc_action.o -MD -MP -MF $(DEPDIR)/strace-rtnl_tc_action.Tpo -c -o strace-rtnl_tc_action.o `test -f 'rtnl_tc_action.c' || echo '$(srcdir)/'`rtnl_tc_action.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-rtnl_tc_action.Tpo $(DEPDIR)/strace-rtnl_tc_action.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_tc_action.c' object='strace-rtnl_tc_action.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-rtnl_neigh.o: rtnl_neigh.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-rtnl_neigh.o -MD -MP -MF $(DEPDIR)/libstrace_a-rtnl_neigh.Tpo -c -o libstrace_a-rtnl_neigh.o `test -f 'rtnl_neigh.c' || echo '$(srcdir)/'`rtnl_neigh.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-rtnl_neigh.Tpo $(DEPDIR)/libstrace_a-rtnl_neigh.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_neigh.c' object='libstrace_a-rtnl_neigh.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-rtnl_tc_action.o `test -f 'rtnl_tc_action.c' || echo '$(srcdir)/'`rtnl_tc_action.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-rtnl_neigh.o `test -f 'rtnl_neigh.c' || echo '$(srcdir)/'`rtnl_neigh.c
 
-strace-rtnl_tc_action.obj: rtnl_tc_action.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-rtnl_tc_action.obj -MD -MP -MF $(DEPDIR)/strace-rtnl_tc_action.Tpo -c -o strace-rtnl_tc_action.obj `if test -f 'rtnl_tc_action.c'; then $(CYGPATH_W) 'rtnl_tc_action.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_tc_action.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-rtnl_tc_action.Tpo $(DEPDIR)/strace-rtnl_tc_action.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_tc_action.c' object='strace-rtnl_tc_action.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-rtnl_neigh.obj: rtnl_neigh.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-rtnl_neigh.obj -MD -MP -MF $(DEPDIR)/libstrace_a-rtnl_neigh.Tpo -c -o libstrace_a-rtnl_neigh.obj `if test -f 'rtnl_neigh.c'; then $(CYGPATH_W) 'rtnl_neigh.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_neigh.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-rtnl_neigh.Tpo $(DEPDIR)/libstrace_a-rtnl_neigh.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_neigh.c' object='libstrace_a-rtnl_neigh.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-rtnl_tc_action.obj `if test -f 'rtnl_tc_action.c'; then $(CYGPATH_W) 'rtnl_tc_action.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_tc_action.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-rtnl_neigh.obj `if test -f 'rtnl_neigh.c'; then $(CYGPATH_W) 'rtnl_neigh.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_neigh.c'; fi`
 
-strace-s390.o: s390.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-s390.o -MD -MP -MF $(DEPDIR)/strace-s390.Tpo -c -o strace-s390.o `test -f 's390.c' || echo '$(srcdir)/'`s390.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-s390.Tpo $(DEPDIR)/strace-s390.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='s390.c' object='strace-s390.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-rtnl_neightbl.o: rtnl_neightbl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-rtnl_neightbl.o -MD -MP -MF $(DEPDIR)/libstrace_a-rtnl_neightbl.Tpo -c -o libstrace_a-rtnl_neightbl.o `test -f 'rtnl_neightbl.c' || echo '$(srcdir)/'`rtnl_neightbl.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-rtnl_neightbl.Tpo $(DEPDIR)/libstrace_a-rtnl_neightbl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_neightbl.c' object='libstrace_a-rtnl_neightbl.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-s390.o `test -f 's390.c' || echo '$(srcdir)/'`s390.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-rtnl_neightbl.o `test -f 'rtnl_neightbl.c' || echo '$(srcdir)/'`rtnl_neightbl.c
 
-strace-s390.obj: s390.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-s390.obj -MD -MP -MF $(DEPDIR)/strace-s390.Tpo -c -o strace-s390.obj `if test -f 's390.c'; then $(CYGPATH_W) 's390.c'; else $(CYGPATH_W) '$(srcdir)/s390.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-s390.Tpo $(DEPDIR)/strace-s390.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='s390.c' object='strace-s390.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-rtnl_neightbl.obj: rtnl_neightbl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-rtnl_neightbl.obj -MD -MP -MF $(DEPDIR)/libstrace_a-rtnl_neightbl.Tpo -c -o libstrace_a-rtnl_neightbl.obj `if test -f 'rtnl_neightbl.c'; then $(CYGPATH_W) 'rtnl_neightbl.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_neightbl.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-rtnl_neightbl.Tpo $(DEPDIR)/libstrace_a-rtnl_neightbl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_neightbl.c' object='libstrace_a-rtnl_neightbl.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-s390.obj `if test -f 's390.c'; then $(CYGPATH_W) 's390.c'; else $(CYGPATH_W) '$(srcdir)/s390.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-rtnl_neightbl.obj `if test -f 'rtnl_neightbl.c'; then $(CYGPATH_W) 'rtnl_neightbl.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_neightbl.c'; fi`
 
-strace-sched.o: sched.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-sched.o -MD -MP -MF $(DEPDIR)/strace-sched.Tpo -c -o strace-sched.o `test -f 'sched.c' || echo '$(srcdir)/'`sched.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-sched.Tpo $(DEPDIR)/strace-sched.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sched.c' object='strace-sched.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-rtnl_netconf.o: rtnl_netconf.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-rtnl_netconf.o -MD -MP -MF $(DEPDIR)/libstrace_a-rtnl_netconf.Tpo -c -o libstrace_a-rtnl_netconf.o `test -f 'rtnl_netconf.c' || echo '$(srcdir)/'`rtnl_netconf.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-rtnl_netconf.Tpo $(DEPDIR)/libstrace_a-rtnl_netconf.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_netconf.c' object='libstrace_a-rtnl_netconf.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-sched.o `test -f 'sched.c' || echo '$(srcdir)/'`sched.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-rtnl_netconf.o `test -f 'rtnl_netconf.c' || echo '$(srcdir)/'`rtnl_netconf.c
 
-strace-sched.obj: sched.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-sched.obj -MD -MP -MF $(DEPDIR)/strace-sched.Tpo -c -o strace-sched.obj `if test -f 'sched.c'; then $(CYGPATH_W) 'sched.c'; else $(CYGPATH_W) '$(srcdir)/sched.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-sched.Tpo $(DEPDIR)/strace-sched.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sched.c' object='strace-sched.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-rtnl_netconf.obj: rtnl_netconf.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-rtnl_netconf.obj -MD -MP -MF $(DEPDIR)/libstrace_a-rtnl_netconf.Tpo -c -o libstrace_a-rtnl_netconf.obj `if test -f 'rtnl_netconf.c'; then $(CYGPATH_W) 'rtnl_netconf.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_netconf.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-rtnl_netconf.Tpo $(DEPDIR)/libstrace_a-rtnl_netconf.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_netconf.c' object='libstrace_a-rtnl_netconf.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-sched.obj `if test -f 'sched.c'; then $(CYGPATH_W) 'sched.c'; else $(CYGPATH_W) '$(srcdir)/sched.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-rtnl_netconf.obj `if test -f 'rtnl_netconf.c'; then $(CYGPATH_W) 'rtnl_netconf.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_netconf.c'; fi`
 
-strace-scsi.o: scsi.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-scsi.o -MD -MP -MF $(DEPDIR)/strace-scsi.Tpo -c -o strace-scsi.o `test -f 'scsi.c' || echo '$(srcdir)/'`scsi.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-scsi.Tpo $(DEPDIR)/strace-scsi.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='scsi.c' object='strace-scsi.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-rtnl_nsid.o: rtnl_nsid.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-rtnl_nsid.o -MD -MP -MF $(DEPDIR)/libstrace_a-rtnl_nsid.Tpo -c -o libstrace_a-rtnl_nsid.o `test -f 'rtnl_nsid.c' || echo '$(srcdir)/'`rtnl_nsid.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-rtnl_nsid.Tpo $(DEPDIR)/libstrace_a-rtnl_nsid.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_nsid.c' object='libstrace_a-rtnl_nsid.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-scsi.o `test -f 'scsi.c' || echo '$(srcdir)/'`scsi.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-rtnl_nsid.o `test -f 'rtnl_nsid.c' || echo '$(srcdir)/'`rtnl_nsid.c
 
-strace-scsi.obj: scsi.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-scsi.obj -MD -MP -MF $(DEPDIR)/strace-scsi.Tpo -c -o strace-scsi.obj `if test -f 'scsi.c'; then $(CYGPATH_W) 'scsi.c'; else $(CYGPATH_W) '$(srcdir)/scsi.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-scsi.Tpo $(DEPDIR)/strace-scsi.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='scsi.c' object='strace-scsi.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-rtnl_nsid.obj: rtnl_nsid.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-rtnl_nsid.obj -MD -MP -MF $(DEPDIR)/libstrace_a-rtnl_nsid.Tpo -c -o libstrace_a-rtnl_nsid.obj `if test -f 'rtnl_nsid.c'; then $(CYGPATH_W) 'rtnl_nsid.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_nsid.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-rtnl_nsid.Tpo $(DEPDIR)/libstrace_a-rtnl_nsid.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_nsid.c' object='libstrace_a-rtnl_nsid.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-scsi.obj `if test -f 'scsi.c'; then $(CYGPATH_W) 'scsi.c'; else $(CYGPATH_W) '$(srcdir)/scsi.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-rtnl_nsid.obj `if test -f 'rtnl_nsid.c'; then $(CYGPATH_W) 'rtnl_nsid.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_nsid.c'; fi`
 
-strace-seccomp.o: seccomp.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-seccomp.o -MD -MP -MF $(DEPDIR)/strace-seccomp.Tpo -c -o strace-seccomp.o `test -f 'seccomp.c' || echo '$(srcdir)/'`seccomp.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-seccomp.Tpo $(DEPDIR)/strace-seccomp.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='seccomp.c' object='strace-seccomp.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-rtnl_route.o: rtnl_route.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-rtnl_route.o -MD -MP -MF $(DEPDIR)/libstrace_a-rtnl_route.Tpo -c -o libstrace_a-rtnl_route.o `test -f 'rtnl_route.c' || echo '$(srcdir)/'`rtnl_route.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-rtnl_route.Tpo $(DEPDIR)/libstrace_a-rtnl_route.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_route.c' object='libstrace_a-rtnl_route.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-seccomp.o `test -f 'seccomp.c' || echo '$(srcdir)/'`seccomp.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-rtnl_route.o `test -f 'rtnl_route.c' || echo '$(srcdir)/'`rtnl_route.c
 
-strace-seccomp.obj: seccomp.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-seccomp.obj -MD -MP -MF $(DEPDIR)/strace-seccomp.Tpo -c -o strace-seccomp.obj `if test -f 'seccomp.c'; then $(CYGPATH_W) 'seccomp.c'; else $(CYGPATH_W) '$(srcdir)/seccomp.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-seccomp.Tpo $(DEPDIR)/strace-seccomp.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='seccomp.c' object='strace-seccomp.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-rtnl_route.obj: rtnl_route.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-rtnl_route.obj -MD -MP -MF $(DEPDIR)/libstrace_a-rtnl_route.Tpo -c -o libstrace_a-rtnl_route.obj `if test -f 'rtnl_route.c'; then $(CYGPATH_W) 'rtnl_route.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_route.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-rtnl_route.Tpo $(DEPDIR)/libstrace_a-rtnl_route.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_route.c' object='libstrace_a-rtnl_route.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-seccomp.obj `if test -f 'seccomp.c'; then $(CYGPATH_W) 'seccomp.c'; else $(CYGPATH_W) '$(srcdir)/seccomp.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-rtnl_route.obj `if test -f 'rtnl_route.c'; then $(CYGPATH_W) 'rtnl_route.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_route.c'; fi`
 
-strace-sendfile.o: sendfile.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-sendfile.o -MD -MP -MF $(DEPDIR)/strace-sendfile.Tpo -c -o strace-sendfile.o `test -f 'sendfile.c' || echo '$(srcdir)/'`sendfile.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-sendfile.Tpo $(DEPDIR)/strace-sendfile.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sendfile.c' object='strace-sendfile.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-rtnl_rule.o: rtnl_rule.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-rtnl_rule.o -MD -MP -MF $(DEPDIR)/libstrace_a-rtnl_rule.Tpo -c -o libstrace_a-rtnl_rule.o `test -f 'rtnl_rule.c' || echo '$(srcdir)/'`rtnl_rule.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-rtnl_rule.Tpo $(DEPDIR)/libstrace_a-rtnl_rule.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_rule.c' object='libstrace_a-rtnl_rule.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-sendfile.o `test -f 'sendfile.c' || echo '$(srcdir)/'`sendfile.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-rtnl_rule.o `test -f 'rtnl_rule.c' || echo '$(srcdir)/'`rtnl_rule.c
 
-strace-sendfile.obj: sendfile.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-sendfile.obj -MD -MP -MF $(DEPDIR)/strace-sendfile.Tpo -c -o strace-sendfile.obj `if test -f 'sendfile.c'; then $(CYGPATH_W) 'sendfile.c'; else $(CYGPATH_W) '$(srcdir)/sendfile.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-sendfile.Tpo $(DEPDIR)/strace-sendfile.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sendfile.c' object='strace-sendfile.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-rtnl_rule.obj: rtnl_rule.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-rtnl_rule.obj -MD -MP -MF $(DEPDIR)/libstrace_a-rtnl_rule.Tpo -c -o libstrace_a-rtnl_rule.obj `if test -f 'rtnl_rule.c'; then $(CYGPATH_W) 'rtnl_rule.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_rule.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-rtnl_rule.Tpo $(DEPDIR)/libstrace_a-rtnl_rule.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_rule.c' object='libstrace_a-rtnl_rule.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-sendfile.obj `if test -f 'sendfile.c'; then $(CYGPATH_W) 'sendfile.c'; else $(CYGPATH_W) '$(srcdir)/sendfile.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-rtnl_rule.obj `if test -f 'rtnl_rule.c'; then $(CYGPATH_W) 'rtnl_rule.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_rule.c'; fi`
 
-strace-sg_io_v3.o: sg_io_v3.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-sg_io_v3.o -MD -MP -MF $(DEPDIR)/strace-sg_io_v3.Tpo -c -o strace-sg_io_v3.o `test -f 'sg_io_v3.c' || echo '$(srcdir)/'`sg_io_v3.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-sg_io_v3.Tpo $(DEPDIR)/strace-sg_io_v3.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sg_io_v3.c' object='strace-sg_io_v3.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-rtnl_tc.o: rtnl_tc.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-rtnl_tc.o -MD -MP -MF $(DEPDIR)/libstrace_a-rtnl_tc.Tpo -c -o libstrace_a-rtnl_tc.o `test -f 'rtnl_tc.c' || echo '$(srcdir)/'`rtnl_tc.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-rtnl_tc.Tpo $(DEPDIR)/libstrace_a-rtnl_tc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_tc.c' object='libstrace_a-rtnl_tc.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-sg_io_v3.o `test -f 'sg_io_v3.c' || echo '$(srcdir)/'`sg_io_v3.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-rtnl_tc.o `test -f 'rtnl_tc.c' || echo '$(srcdir)/'`rtnl_tc.c
 
-strace-sg_io_v3.obj: sg_io_v3.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-sg_io_v3.obj -MD -MP -MF $(DEPDIR)/strace-sg_io_v3.Tpo -c -o strace-sg_io_v3.obj `if test -f 'sg_io_v3.c'; then $(CYGPATH_W) 'sg_io_v3.c'; else $(CYGPATH_W) '$(srcdir)/sg_io_v3.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-sg_io_v3.Tpo $(DEPDIR)/strace-sg_io_v3.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sg_io_v3.c' object='strace-sg_io_v3.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-rtnl_tc.obj: rtnl_tc.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-rtnl_tc.obj -MD -MP -MF $(DEPDIR)/libstrace_a-rtnl_tc.Tpo -c -o libstrace_a-rtnl_tc.obj `if test -f 'rtnl_tc.c'; then $(CYGPATH_W) 'rtnl_tc.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_tc.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-rtnl_tc.Tpo $(DEPDIR)/libstrace_a-rtnl_tc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_tc.c' object='libstrace_a-rtnl_tc.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-sg_io_v3.obj `if test -f 'sg_io_v3.c'; then $(CYGPATH_W) 'sg_io_v3.c'; else $(CYGPATH_W) '$(srcdir)/sg_io_v3.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-rtnl_tc.obj `if test -f 'rtnl_tc.c'; then $(CYGPATH_W) 'rtnl_tc.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_tc.c'; fi`
 
-strace-sg_io_v4.o: sg_io_v4.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-sg_io_v4.o -MD -MP -MF $(DEPDIR)/strace-sg_io_v4.Tpo -c -o strace-sg_io_v4.o `test -f 'sg_io_v4.c' || echo '$(srcdir)/'`sg_io_v4.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-sg_io_v4.Tpo $(DEPDIR)/strace-sg_io_v4.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sg_io_v4.c' object='strace-sg_io_v4.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-rtnl_tc_action.o: rtnl_tc_action.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-rtnl_tc_action.o -MD -MP -MF $(DEPDIR)/libstrace_a-rtnl_tc_action.Tpo -c -o libstrace_a-rtnl_tc_action.o `test -f 'rtnl_tc_action.c' || echo '$(srcdir)/'`rtnl_tc_action.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-rtnl_tc_action.Tpo $(DEPDIR)/libstrace_a-rtnl_tc_action.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_tc_action.c' object='libstrace_a-rtnl_tc_action.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-sg_io_v4.o `test -f 'sg_io_v4.c' || echo '$(srcdir)/'`sg_io_v4.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-rtnl_tc_action.o `test -f 'rtnl_tc_action.c' || echo '$(srcdir)/'`rtnl_tc_action.c
 
-strace-sg_io_v4.obj: sg_io_v4.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-sg_io_v4.obj -MD -MP -MF $(DEPDIR)/strace-sg_io_v4.Tpo -c -o strace-sg_io_v4.obj `if test -f 'sg_io_v4.c'; then $(CYGPATH_W) 'sg_io_v4.c'; else $(CYGPATH_W) '$(srcdir)/sg_io_v4.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-sg_io_v4.Tpo $(DEPDIR)/strace-sg_io_v4.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sg_io_v4.c' object='strace-sg_io_v4.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-rtnl_tc_action.obj: rtnl_tc_action.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-rtnl_tc_action.obj -MD -MP -MF $(DEPDIR)/libstrace_a-rtnl_tc_action.Tpo -c -o libstrace_a-rtnl_tc_action.obj `if test -f 'rtnl_tc_action.c'; then $(CYGPATH_W) 'rtnl_tc_action.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_tc_action.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-rtnl_tc_action.Tpo $(DEPDIR)/libstrace_a-rtnl_tc_action.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtnl_tc_action.c' object='libstrace_a-rtnl_tc_action.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-sg_io_v4.obj `if test -f 'sg_io_v4.c'; then $(CYGPATH_W) 'sg_io_v4.c'; else $(CYGPATH_W) '$(srcdir)/sg_io_v4.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-rtnl_tc_action.obj `if test -f 'rtnl_tc_action.c'; then $(CYGPATH_W) 'rtnl_tc_action.c'; else $(CYGPATH_W) '$(srcdir)/rtnl_tc_action.c'; fi`
 
-strace-shutdown.o: shutdown.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-shutdown.o -MD -MP -MF $(DEPDIR)/strace-shutdown.Tpo -c -o strace-shutdown.o `test -f 'shutdown.c' || echo '$(srcdir)/'`shutdown.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-shutdown.Tpo $(DEPDIR)/strace-shutdown.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='shutdown.c' object='strace-shutdown.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-s390.o: s390.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-s390.o -MD -MP -MF $(DEPDIR)/libstrace_a-s390.Tpo -c -o libstrace_a-s390.o `test -f 's390.c' || echo '$(srcdir)/'`s390.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-s390.Tpo $(DEPDIR)/libstrace_a-s390.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='s390.c' object='libstrace_a-s390.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-shutdown.o `test -f 'shutdown.c' || echo '$(srcdir)/'`shutdown.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-s390.o `test -f 's390.c' || echo '$(srcdir)/'`s390.c
 
-strace-shutdown.obj: shutdown.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-shutdown.obj -MD -MP -MF $(DEPDIR)/strace-shutdown.Tpo -c -o strace-shutdown.obj `if test -f 'shutdown.c'; then $(CYGPATH_W) 'shutdown.c'; else $(CYGPATH_W) '$(srcdir)/shutdown.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-shutdown.Tpo $(DEPDIR)/strace-shutdown.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='shutdown.c' object='strace-shutdown.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-s390.obj: s390.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-s390.obj -MD -MP -MF $(DEPDIR)/libstrace_a-s390.Tpo -c -o libstrace_a-s390.obj `if test -f 's390.c'; then $(CYGPATH_W) 's390.c'; else $(CYGPATH_W) '$(srcdir)/s390.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-s390.Tpo $(DEPDIR)/libstrace_a-s390.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='s390.c' object='libstrace_a-s390.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-shutdown.obj `if test -f 'shutdown.c'; then $(CYGPATH_W) 'shutdown.c'; else $(CYGPATH_W) '$(srcdir)/shutdown.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-s390.obj `if test -f 's390.c'; then $(CYGPATH_W) 's390.c'; else $(CYGPATH_W) '$(srcdir)/s390.c'; fi`
 
-strace-sigaltstack.o: sigaltstack.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-sigaltstack.o -MD -MP -MF $(DEPDIR)/strace-sigaltstack.Tpo -c -o strace-sigaltstack.o `test -f 'sigaltstack.c' || echo '$(srcdir)/'`sigaltstack.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-sigaltstack.Tpo $(DEPDIR)/strace-sigaltstack.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sigaltstack.c' object='strace-sigaltstack.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-sched.o: sched.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-sched.o -MD -MP -MF $(DEPDIR)/libstrace_a-sched.Tpo -c -o libstrace_a-sched.o `test -f 'sched.c' || echo '$(srcdir)/'`sched.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-sched.Tpo $(DEPDIR)/libstrace_a-sched.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sched.c' object='libstrace_a-sched.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-sigaltstack.o `test -f 'sigaltstack.c' || echo '$(srcdir)/'`sigaltstack.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-sched.o `test -f 'sched.c' || echo '$(srcdir)/'`sched.c
 
-strace-sigaltstack.obj: sigaltstack.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-sigaltstack.obj -MD -MP -MF $(DEPDIR)/strace-sigaltstack.Tpo -c -o strace-sigaltstack.obj `if test -f 'sigaltstack.c'; then $(CYGPATH_W) 'sigaltstack.c'; else $(CYGPATH_W) '$(srcdir)/sigaltstack.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-sigaltstack.Tpo $(DEPDIR)/strace-sigaltstack.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sigaltstack.c' object='strace-sigaltstack.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-sched.obj: sched.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-sched.obj -MD -MP -MF $(DEPDIR)/libstrace_a-sched.Tpo -c -o libstrace_a-sched.obj `if test -f 'sched.c'; then $(CYGPATH_W) 'sched.c'; else $(CYGPATH_W) '$(srcdir)/sched.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-sched.Tpo $(DEPDIR)/libstrace_a-sched.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sched.c' object='libstrace_a-sched.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-sigaltstack.obj `if test -f 'sigaltstack.c'; then $(CYGPATH_W) 'sigaltstack.c'; else $(CYGPATH_W) '$(srcdir)/sigaltstack.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-sched.obj `if test -f 'sched.c'; then $(CYGPATH_W) 'sched.c'; else $(CYGPATH_W) '$(srcdir)/sched.c'; fi`
 
-strace-signal.o: signal.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-signal.o -MD -MP -MF $(DEPDIR)/strace-signal.Tpo -c -o strace-signal.o `test -f 'signal.c' || echo '$(srcdir)/'`signal.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-signal.Tpo $(DEPDIR)/strace-signal.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='signal.c' object='strace-signal.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-scsi.o: scsi.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-scsi.o -MD -MP -MF $(DEPDIR)/libstrace_a-scsi.Tpo -c -o libstrace_a-scsi.o `test -f 'scsi.c' || echo '$(srcdir)/'`scsi.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-scsi.Tpo $(DEPDIR)/libstrace_a-scsi.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='scsi.c' object='libstrace_a-scsi.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-signal.o `test -f 'signal.c' || echo '$(srcdir)/'`signal.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-scsi.o `test -f 'scsi.c' || echo '$(srcdir)/'`scsi.c
 
-strace-signal.obj: signal.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-signal.obj -MD -MP -MF $(DEPDIR)/strace-signal.Tpo -c -o strace-signal.obj `if test -f 'signal.c'; then $(CYGPATH_W) 'signal.c'; else $(CYGPATH_W) '$(srcdir)/signal.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-signal.Tpo $(DEPDIR)/strace-signal.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='signal.c' object='strace-signal.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-scsi.obj: scsi.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-scsi.obj -MD -MP -MF $(DEPDIR)/libstrace_a-scsi.Tpo -c -o libstrace_a-scsi.obj `if test -f 'scsi.c'; then $(CYGPATH_W) 'scsi.c'; else $(CYGPATH_W) '$(srcdir)/scsi.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-scsi.Tpo $(DEPDIR)/libstrace_a-scsi.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='scsi.c' object='libstrace_a-scsi.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-signal.obj `if test -f 'signal.c'; then $(CYGPATH_W) 'signal.c'; else $(CYGPATH_W) '$(srcdir)/signal.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-scsi.obj `if test -f 'scsi.c'; then $(CYGPATH_W) 'scsi.c'; else $(CYGPATH_W) '$(srcdir)/scsi.c'; fi`
 
-strace-signalfd.o: signalfd.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-signalfd.o -MD -MP -MF $(DEPDIR)/strace-signalfd.Tpo -c -o strace-signalfd.o `test -f 'signalfd.c' || echo '$(srcdir)/'`signalfd.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-signalfd.Tpo $(DEPDIR)/strace-signalfd.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='signalfd.c' object='strace-signalfd.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-seccomp.o: seccomp.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-seccomp.o -MD -MP -MF $(DEPDIR)/libstrace_a-seccomp.Tpo -c -o libstrace_a-seccomp.o `test -f 'seccomp.c' || echo '$(srcdir)/'`seccomp.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-seccomp.Tpo $(DEPDIR)/libstrace_a-seccomp.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='seccomp.c' object='libstrace_a-seccomp.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-signalfd.o `test -f 'signalfd.c' || echo '$(srcdir)/'`signalfd.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-seccomp.o `test -f 'seccomp.c' || echo '$(srcdir)/'`seccomp.c
 
-strace-signalfd.obj: signalfd.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-signalfd.obj -MD -MP -MF $(DEPDIR)/strace-signalfd.Tpo -c -o strace-signalfd.obj `if test -f 'signalfd.c'; then $(CYGPATH_W) 'signalfd.c'; else $(CYGPATH_W) '$(srcdir)/signalfd.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-signalfd.Tpo $(DEPDIR)/strace-signalfd.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='signalfd.c' object='strace-signalfd.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-seccomp.obj: seccomp.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-seccomp.obj -MD -MP -MF $(DEPDIR)/libstrace_a-seccomp.Tpo -c -o libstrace_a-seccomp.obj `if test -f 'seccomp.c'; then $(CYGPATH_W) 'seccomp.c'; else $(CYGPATH_W) '$(srcdir)/seccomp.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-seccomp.Tpo $(DEPDIR)/libstrace_a-seccomp.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='seccomp.c' object='libstrace_a-seccomp.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-signalfd.obj `if test -f 'signalfd.c'; then $(CYGPATH_W) 'signalfd.c'; else $(CYGPATH_W) '$(srcdir)/signalfd.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-seccomp.obj `if test -f 'seccomp.c'; then $(CYGPATH_W) 'seccomp.c'; else $(CYGPATH_W) '$(srcdir)/seccomp.c'; fi`
 
-strace-sock.o: sock.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-sock.o -MD -MP -MF $(DEPDIR)/strace-sock.Tpo -c -o strace-sock.o `test -f 'sock.c' || echo '$(srcdir)/'`sock.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-sock.Tpo $(DEPDIR)/strace-sock.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sock.c' object='strace-sock.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-sendfile.o: sendfile.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-sendfile.o -MD -MP -MF $(DEPDIR)/libstrace_a-sendfile.Tpo -c -o libstrace_a-sendfile.o `test -f 'sendfile.c' || echo '$(srcdir)/'`sendfile.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-sendfile.Tpo $(DEPDIR)/libstrace_a-sendfile.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sendfile.c' object='libstrace_a-sendfile.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-sock.o `test -f 'sock.c' || echo '$(srcdir)/'`sock.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-sendfile.o `test -f 'sendfile.c' || echo '$(srcdir)/'`sendfile.c
 
-strace-sock.obj: sock.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-sock.obj -MD -MP -MF $(DEPDIR)/strace-sock.Tpo -c -o strace-sock.obj `if test -f 'sock.c'; then $(CYGPATH_W) 'sock.c'; else $(CYGPATH_W) '$(srcdir)/sock.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-sock.Tpo $(DEPDIR)/strace-sock.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sock.c' object='strace-sock.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-sendfile.obj: sendfile.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-sendfile.obj -MD -MP -MF $(DEPDIR)/libstrace_a-sendfile.Tpo -c -o libstrace_a-sendfile.obj `if test -f 'sendfile.c'; then $(CYGPATH_W) 'sendfile.c'; else $(CYGPATH_W) '$(srcdir)/sendfile.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-sendfile.Tpo $(DEPDIR)/libstrace_a-sendfile.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sendfile.c' object='libstrace_a-sendfile.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-sock.obj `if test -f 'sock.c'; then $(CYGPATH_W) 'sock.c'; else $(CYGPATH_W) '$(srcdir)/sock.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-sendfile.obj `if test -f 'sendfile.c'; then $(CYGPATH_W) 'sendfile.c'; else $(CYGPATH_W) '$(srcdir)/sendfile.c'; fi`
 
-strace-sockaddr.o: sockaddr.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-sockaddr.o -MD -MP -MF $(DEPDIR)/strace-sockaddr.Tpo -c -o strace-sockaddr.o `test -f 'sockaddr.c' || echo '$(srcdir)/'`sockaddr.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-sockaddr.Tpo $(DEPDIR)/strace-sockaddr.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sockaddr.c' object='strace-sockaddr.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-sg_io_v3.o: sg_io_v3.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-sg_io_v3.o -MD -MP -MF $(DEPDIR)/libstrace_a-sg_io_v3.Tpo -c -o libstrace_a-sg_io_v3.o `test -f 'sg_io_v3.c' || echo '$(srcdir)/'`sg_io_v3.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-sg_io_v3.Tpo $(DEPDIR)/libstrace_a-sg_io_v3.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sg_io_v3.c' object='libstrace_a-sg_io_v3.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-sockaddr.o `test -f 'sockaddr.c' || echo '$(srcdir)/'`sockaddr.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-sg_io_v3.o `test -f 'sg_io_v3.c' || echo '$(srcdir)/'`sg_io_v3.c
 
-strace-sockaddr.obj: sockaddr.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-sockaddr.obj -MD -MP -MF $(DEPDIR)/strace-sockaddr.Tpo -c -o strace-sockaddr.obj `if test -f 'sockaddr.c'; then $(CYGPATH_W) 'sockaddr.c'; else $(CYGPATH_W) '$(srcdir)/sockaddr.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-sockaddr.Tpo $(DEPDIR)/strace-sockaddr.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sockaddr.c' object='strace-sockaddr.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-sg_io_v3.obj: sg_io_v3.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-sg_io_v3.obj -MD -MP -MF $(DEPDIR)/libstrace_a-sg_io_v3.Tpo -c -o libstrace_a-sg_io_v3.obj `if test -f 'sg_io_v3.c'; then $(CYGPATH_W) 'sg_io_v3.c'; else $(CYGPATH_W) '$(srcdir)/sg_io_v3.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-sg_io_v3.Tpo $(DEPDIR)/libstrace_a-sg_io_v3.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sg_io_v3.c' object='libstrace_a-sg_io_v3.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-sockaddr.obj `if test -f 'sockaddr.c'; then $(CYGPATH_W) 'sockaddr.c'; else $(CYGPATH_W) '$(srcdir)/sockaddr.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-sg_io_v3.obj `if test -f 'sg_io_v3.c'; then $(CYGPATH_W) 'sg_io_v3.c'; else $(CYGPATH_W) '$(srcdir)/sg_io_v3.c'; fi`
 
-strace-socketutils.o: socketutils.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-socketutils.o -MD -MP -MF $(DEPDIR)/strace-socketutils.Tpo -c -o strace-socketutils.o `test -f 'socketutils.c' || echo '$(srcdir)/'`socketutils.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-socketutils.Tpo $(DEPDIR)/strace-socketutils.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='socketutils.c' object='strace-socketutils.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-sg_io_v4.o: sg_io_v4.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-sg_io_v4.o -MD -MP -MF $(DEPDIR)/libstrace_a-sg_io_v4.Tpo -c -o libstrace_a-sg_io_v4.o `test -f 'sg_io_v4.c' || echo '$(srcdir)/'`sg_io_v4.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-sg_io_v4.Tpo $(DEPDIR)/libstrace_a-sg_io_v4.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sg_io_v4.c' object='libstrace_a-sg_io_v4.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-socketutils.o `test -f 'socketutils.c' || echo '$(srcdir)/'`socketutils.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-sg_io_v4.o `test -f 'sg_io_v4.c' || echo '$(srcdir)/'`sg_io_v4.c
 
-strace-socketutils.obj: socketutils.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-socketutils.obj -MD -MP -MF $(DEPDIR)/strace-socketutils.Tpo -c -o strace-socketutils.obj `if test -f 'socketutils.c'; then $(CYGPATH_W) 'socketutils.c'; else $(CYGPATH_W) '$(srcdir)/socketutils.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-socketutils.Tpo $(DEPDIR)/strace-socketutils.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='socketutils.c' object='strace-socketutils.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-sg_io_v4.obj: sg_io_v4.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-sg_io_v4.obj -MD -MP -MF $(DEPDIR)/libstrace_a-sg_io_v4.Tpo -c -o libstrace_a-sg_io_v4.obj `if test -f 'sg_io_v4.c'; then $(CYGPATH_W) 'sg_io_v4.c'; else $(CYGPATH_W) '$(srcdir)/sg_io_v4.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-sg_io_v4.Tpo $(DEPDIR)/libstrace_a-sg_io_v4.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sg_io_v4.c' object='libstrace_a-sg_io_v4.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-socketutils.obj `if test -f 'socketutils.c'; then $(CYGPATH_W) 'socketutils.c'; else $(CYGPATH_W) '$(srcdir)/socketutils.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-sg_io_v4.obj `if test -f 'sg_io_v4.c'; then $(CYGPATH_W) 'sg_io_v4.c'; else $(CYGPATH_W) '$(srcdir)/sg_io_v4.c'; fi`
 
-strace-sparc.o: sparc.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-sparc.o -MD -MP -MF $(DEPDIR)/strace-sparc.Tpo -c -o strace-sparc.o `test -f 'sparc.c' || echo '$(srcdir)/'`sparc.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-sparc.Tpo $(DEPDIR)/strace-sparc.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sparc.c' object='strace-sparc.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-shutdown.o: shutdown.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-shutdown.o -MD -MP -MF $(DEPDIR)/libstrace_a-shutdown.Tpo -c -o libstrace_a-shutdown.o `test -f 'shutdown.c' || echo '$(srcdir)/'`shutdown.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-shutdown.Tpo $(DEPDIR)/libstrace_a-shutdown.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='shutdown.c' object='libstrace_a-shutdown.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-sparc.o `test -f 'sparc.c' || echo '$(srcdir)/'`sparc.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-shutdown.o `test -f 'shutdown.c' || echo '$(srcdir)/'`shutdown.c
 
-strace-sparc.obj: sparc.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-sparc.obj -MD -MP -MF $(DEPDIR)/strace-sparc.Tpo -c -o strace-sparc.obj `if test -f 'sparc.c'; then $(CYGPATH_W) 'sparc.c'; else $(CYGPATH_W) '$(srcdir)/sparc.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-sparc.Tpo $(DEPDIR)/strace-sparc.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sparc.c' object='strace-sparc.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-shutdown.obj: shutdown.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-shutdown.obj -MD -MP -MF $(DEPDIR)/libstrace_a-shutdown.Tpo -c -o libstrace_a-shutdown.obj `if test -f 'shutdown.c'; then $(CYGPATH_W) 'shutdown.c'; else $(CYGPATH_W) '$(srcdir)/shutdown.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-shutdown.Tpo $(DEPDIR)/libstrace_a-shutdown.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='shutdown.c' object='libstrace_a-shutdown.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-sparc.obj `if test -f 'sparc.c'; then $(CYGPATH_W) 'sparc.c'; else $(CYGPATH_W) '$(srcdir)/sparc.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-shutdown.obj `if test -f 'shutdown.c'; then $(CYGPATH_W) 'shutdown.c'; else $(CYGPATH_W) '$(srcdir)/shutdown.c'; fi`
 
-strace-sram_alloc.o: sram_alloc.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-sram_alloc.o -MD -MP -MF $(DEPDIR)/strace-sram_alloc.Tpo -c -o strace-sram_alloc.o `test -f 'sram_alloc.c' || echo '$(srcdir)/'`sram_alloc.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-sram_alloc.Tpo $(DEPDIR)/strace-sram_alloc.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sram_alloc.c' object='strace-sram_alloc.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-sigaltstack.o: sigaltstack.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-sigaltstack.o -MD -MP -MF $(DEPDIR)/libstrace_a-sigaltstack.Tpo -c -o libstrace_a-sigaltstack.o `test -f 'sigaltstack.c' || echo '$(srcdir)/'`sigaltstack.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-sigaltstack.Tpo $(DEPDIR)/libstrace_a-sigaltstack.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sigaltstack.c' object='libstrace_a-sigaltstack.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-sram_alloc.o `test -f 'sram_alloc.c' || echo '$(srcdir)/'`sram_alloc.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-sigaltstack.o `test -f 'sigaltstack.c' || echo '$(srcdir)/'`sigaltstack.c
 
-strace-sram_alloc.obj: sram_alloc.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-sram_alloc.obj -MD -MP -MF $(DEPDIR)/strace-sram_alloc.Tpo -c -o strace-sram_alloc.obj `if test -f 'sram_alloc.c'; then $(CYGPATH_W) 'sram_alloc.c'; else $(CYGPATH_W) '$(srcdir)/sram_alloc.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-sram_alloc.Tpo $(DEPDIR)/strace-sram_alloc.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sram_alloc.c' object='strace-sram_alloc.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-sigaltstack.obj: sigaltstack.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-sigaltstack.obj -MD -MP -MF $(DEPDIR)/libstrace_a-sigaltstack.Tpo -c -o libstrace_a-sigaltstack.obj `if test -f 'sigaltstack.c'; then $(CYGPATH_W) 'sigaltstack.c'; else $(CYGPATH_W) '$(srcdir)/sigaltstack.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-sigaltstack.Tpo $(DEPDIR)/libstrace_a-sigaltstack.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sigaltstack.c' object='libstrace_a-sigaltstack.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-sram_alloc.obj `if test -f 'sram_alloc.c'; then $(CYGPATH_W) 'sram_alloc.c'; else $(CYGPATH_W) '$(srcdir)/sram_alloc.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-sigaltstack.obj `if test -f 'sigaltstack.c'; then $(CYGPATH_W) 'sigaltstack.c'; else $(CYGPATH_W) '$(srcdir)/sigaltstack.c'; fi`
 
-strace-stat.o: stat.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-stat.o -MD -MP -MF $(DEPDIR)/strace-stat.Tpo -c -o strace-stat.o `test -f 'stat.c' || echo '$(srcdir)/'`stat.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-stat.Tpo $(DEPDIR)/strace-stat.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='stat.c' object='strace-stat.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-signal.o: signal.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-signal.o -MD -MP -MF $(DEPDIR)/libstrace_a-signal.Tpo -c -o libstrace_a-signal.o `test -f 'signal.c' || echo '$(srcdir)/'`signal.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-signal.Tpo $(DEPDIR)/libstrace_a-signal.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='signal.c' object='libstrace_a-signal.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-stat.o `test -f 'stat.c' || echo '$(srcdir)/'`stat.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-signal.o `test -f 'signal.c' || echo '$(srcdir)/'`signal.c
 
-strace-stat.obj: stat.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-stat.obj -MD -MP -MF $(DEPDIR)/strace-stat.Tpo -c -o strace-stat.obj `if test -f 'stat.c'; then $(CYGPATH_W) 'stat.c'; else $(CYGPATH_W) '$(srcdir)/stat.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-stat.Tpo $(DEPDIR)/strace-stat.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='stat.c' object='strace-stat.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-signal.obj: signal.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-signal.obj -MD -MP -MF $(DEPDIR)/libstrace_a-signal.Tpo -c -o libstrace_a-signal.obj `if test -f 'signal.c'; then $(CYGPATH_W) 'signal.c'; else $(CYGPATH_W) '$(srcdir)/signal.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-signal.Tpo $(DEPDIR)/libstrace_a-signal.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='signal.c' object='libstrace_a-signal.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-stat.obj `if test -f 'stat.c'; then $(CYGPATH_W) 'stat.c'; else $(CYGPATH_W) '$(srcdir)/stat.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-signal.obj `if test -f 'signal.c'; then $(CYGPATH_W) 'signal.c'; else $(CYGPATH_W) '$(srcdir)/signal.c'; fi`
 
-strace-stat64.o: stat64.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-stat64.o -MD -MP -MF $(DEPDIR)/strace-stat64.Tpo -c -o strace-stat64.o `test -f 'stat64.c' || echo '$(srcdir)/'`stat64.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-stat64.Tpo $(DEPDIR)/strace-stat64.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='stat64.c' object='strace-stat64.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-signalfd.o: signalfd.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-signalfd.o -MD -MP -MF $(DEPDIR)/libstrace_a-signalfd.Tpo -c -o libstrace_a-signalfd.o `test -f 'signalfd.c' || echo '$(srcdir)/'`signalfd.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-signalfd.Tpo $(DEPDIR)/libstrace_a-signalfd.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='signalfd.c' object='libstrace_a-signalfd.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-stat64.o `test -f 'stat64.c' || echo '$(srcdir)/'`stat64.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-signalfd.o `test -f 'signalfd.c' || echo '$(srcdir)/'`signalfd.c
 
-strace-stat64.obj: stat64.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-stat64.obj -MD -MP -MF $(DEPDIR)/strace-stat64.Tpo -c -o strace-stat64.obj `if test -f 'stat64.c'; then $(CYGPATH_W) 'stat64.c'; else $(CYGPATH_W) '$(srcdir)/stat64.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-stat64.Tpo $(DEPDIR)/strace-stat64.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='stat64.c' object='strace-stat64.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-signalfd.obj: signalfd.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-signalfd.obj -MD -MP -MF $(DEPDIR)/libstrace_a-signalfd.Tpo -c -o libstrace_a-signalfd.obj `if test -f 'signalfd.c'; then $(CYGPATH_W) 'signalfd.c'; else $(CYGPATH_W) '$(srcdir)/signalfd.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-signalfd.Tpo $(DEPDIR)/libstrace_a-signalfd.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='signalfd.c' object='libstrace_a-signalfd.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-stat64.obj `if test -f 'stat64.c'; then $(CYGPATH_W) 'stat64.c'; else $(CYGPATH_W) '$(srcdir)/stat64.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-signalfd.obj `if test -f 'signalfd.c'; then $(CYGPATH_W) 'signalfd.c'; else $(CYGPATH_W) '$(srcdir)/signalfd.c'; fi`
 
-strace-statfs.o: statfs.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-statfs.o -MD -MP -MF $(DEPDIR)/strace-statfs.Tpo -c -o strace-statfs.o `test -f 'statfs.c' || echo '$(srcdir)/'`statfs.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-statfs.Tpo $(DEPDIR)/strace-statfs.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='statfs.c' object='strace-statfs.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-sigreturn.o: sigreturn.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-sigreturn.o -MD -MP -MF $(DEPDIR)/libstrace_a-sigreturn.Tpo -c -o libstrace_a-sigreturn.o `test -f 'sigreturn.c' || echo '$(srcdir)/'`sigreturn.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-sigreturn.Tpo $(DEPDIR)/libstrace_a-sigreturn.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sigreturn.c' object='libstrace_a-sigreturn.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-statfs.o `test -f 'statfs.c' || echo '$(srcdir)/'`statfs.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-sigreturn.o `test -f 'sigreturn.c' || echo '$(srcdir)/'`sigreturn.c
 
-strace-statfs.obj: statfs.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-statfs.obj -MD -MP -MF $(DEPDIR)/strace-statfs.Tpo -c -o strace-statfs.obj `if test -f 'statfs.c'; then $(CYGPATH_W) 'statfs.c'; else $(CYGPATH_W) '$(srcdir)/statfs.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-statfs.Tpo $(DEPDIR)/strace-statfs.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='statfs.c' object='strace-statfs.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-sigreturn.obj: sigreturn.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-sigreturn.obj -MD -MP -MF $(DEPDIR)/libstrace_a-sigreturn.Tpo -c -o libstrace_a-sigreturn.obj `if test -f 'sigreturn.c'; then $(CYGPATH_W) 'sigreturn.c'; else $(CYGPATH_W) '$(srcdir)/sigreturn.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-sigreturn.Tpo $(DEPDIR)/libstrace_a-sigreturn.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sigreturn.c' object='libstrace_a-sigreturn.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-statfs.obj `if test -f 'statfs.c'; then $(CYGPATH_W) 'statfs.c'; else $(CYGPATH_W) '$(srcdir)/statfs.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-sigreturn.obj `if test -f 'sigreturn.c'; then $(CYGPATH_W) 'sigreturn.c'; else $(CYGPATH_W) '$(srcdir)/sigreturn.c'; fi`
 
-strace-statx.o: statx.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-statx.o -MD -MP -MF $(DEPDIR)/strace-statx.Tpo -c -o strace-statx.o `test -f 'statx.c' || echo '$(srcdir)/'`statx.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-statx.Tpo $(DEPDIR)/strace-statx.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='statx.c' object='strace-statx.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-sock.o: sock.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-sock.o -MD -MP -MF $(DEPDIR)/libstrace_a-sock.Tpo -c -o libstrace_a-sock.o `test -f 'sock.c' || echo '$(srcdir)/'`sock.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-sock.Tpo $(DEPDIR)/libstrace_a-sock.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sock.c' object='libstrace_a-sock.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-statx.o `test -f 'statx.c' || echo '$(srcdir)/'`statx.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-sock.o `test -f 'sock.c' || echo '$(srcdir)/'`sock.c
 
-strace-statx.obj: statx.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-statx.obj -MD -MP -MF $(DEPDIR)/strace-statx.Tpo -c -o strace-statx.obj `if test -f 'statx.c'; then $(CYGPATH_W) 'statx.c'; else $(CYGPATH_W) '$(srcdir)/statx.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-statx.Tpo $(DEPDIR)/strace-statx.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='statx.c' object='strace-statx.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-sock.obj: sock.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-sock.obj -MD -MP -MF $(DEPDIR)/libstrace_a-sock.Tpo -c -o libstrace_a-sock.obj `if test -f 'sock.c'; then $(CYGPATH_W) 'sock.c'; else $(CYGPATH_W) '$(srcdir)/sock.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-sock.Tpo $(DEPDIR)/libstrace_a-sock.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sock.c' object='libstrace_a-sock.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-statx.obj `if test -f 'statx.c'; then $(CYGPATH_W) 'statx.c'; else $(CYGPATH_W) '$(srcdir)/statx.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-sock.obj `if test -f 'sock.c'; then $(CYGPATH_W) 'sock.c'; else $(CYGPATH_W) '$(srcdir)/sock.c'; fi`
 
-strace-strace.o: strace.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-strace.o -MD -MP -MF $(DEPDIR)/strace-strace.Tpo -c -o strace-strace.o `test -f 'strace.c' || echo '$(srcdir)/'`strace.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-strace.Tpo $(DEPDIR)/strace-strace.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='strace.c' object='strace-strace.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-sockaddr.o: sockaddr.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-sockaddr.o -MD -MP -MF $(DEPDIR)/libstrace_a-sockaddr.Tpo -c -o libstrace_a-sockaddr.o `test -f 'sockaddr.c' || echo '$(srcdir)/'`sockaddr.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-sockaddr.Tpo $(DEPDIR)/libstrace_a-sockaddr.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sockaddr.c' object='libstrace_a-sockaddr.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-strace.o `test -f 'strace.c' || echo '$(srcdir)/'`strace.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-sockaddr.o `test -f 'sockaddr.c' || echo '$(srcdir)/'`sockaddr.c
 
-strace-strace.obj: strace.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-strace.obj -MD -MP -MF $(DEPDIR)/strace-strace.Tpo -c -o strace-strace.obj `if test -f 'strace.c'; then $(CYGPATH_W) 'strace.c'; else $(CYGPATH_W) '$(srcdir)/strace.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-strace.Tpo $(DEPDIR)/strace-strace.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='strace.c' object='strace-strace.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-sockaddr.obj: sockaddr.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-sockaddr.obj -MD -MP -MF $(DEPDIR)/libstrace_a-sockaddr.Tpo -c -o libstrace_a-sockaddr.obj `if test -f 'sockaddr.c'; then $(CYGPATH_W) 'sockaddr.c'; else $(CYGPATH_W) '$(srcdir)/sockaddr.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-sockaddr.Tpo $(DEPDIR)/libstrace_a-sockaddr.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sockaddr.c' object='libstrace_a-sockaddr.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-strace.obj `if test -f 'strace.c'; then $(CYGPATH_W) 'strace.c'; else $(CYGPATH_W) '$(srcdir)/strace.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-sockaddr.obj `if test -f 'sockaddr.c'; then $(CYGPATH_W) 'sockaddr.c'; else $(CYGPATH_W) '$(srcdir)/sockaddr.c'; fi`
+
+libstrace_a-socketcall.o: socketcall.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-socketcall.o -MD -MP -MF $(DEPDIR)/libstrace_a-socketcall.Tpo -c -o libstrace_a-socketcall.o `test -f 'socketcall.c' || echo '$(srcdir)/'`socketcall.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-socketcall.Tpo $(DEPDIR)/libstrace_a-socketcall.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='socketcall.c' object='libstrace_a-socketcall.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-socketcall.o `test -f 'socketcall.c' || echo '$(srcdir)/'`socketcall.c
+
+libstrace_a-socketcall.obj: socketcall.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-socketcall.obj -MD -MP -MF $(DEPDIR)/libstrace_a-socketcall.Tpo -c -o libstrace_a-socketcall.obj `if test -f 'socketcall.c'; then $(CYGPATH_W) 'socketcall.c'; else $(CYGPATH_W) '$(srcdir)/socketcall.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-socketcall.Tpo $(DEPDIR)/libstrace_a-socketcall.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='socketcall.c' object='libstrace_a-socketcall.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-socketcall.obj `if test -f 'socketcall.c'; then $(CYGPATH_W) 'socketcall.c'; else $(CYGPATH_W) '$(srcdir)/socketcall.c'; fi`
+
+libstrace_a-socketutils.o: socketutils.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-socketutils.o -MD -MP -MF $(DEPDIR)/libstrace_a-socketutils.Tpo -c -o libstrace_a-socketutils.o `test -f 'socketutils.c' || echo '$(srcdir)/'`socketutils.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-socketutils.Tpo $(DEPDIR)/libstrace_a-socketutils.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='socketutils.c' object='libstrace_a-socketutils.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-socketutils.o `test -f 'socketutils.c' || echo '$(srcdir)/'`socketutils.c
+
+libstrace_a-socketutils.obj: socketutils.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-socketutils.obj -MD -MP -MF $(DEPDIR)/libstrace_a-socketutils.Tpo -c -o libstrace_a-socketutils.obj `if test -f 'socketutils.c'; then $(CYGPATH_W) 'socketutils.c'; else $(CYGPATH_W) '$(srcdir)/socketutils.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-socketutils.Tpo $(DEPDIR)/libstrace_a-socketutils.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='socketutils.c' object='libstrace_a-socketutils.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-socketutils.obj `if test -f 'socketutils.c'; then $(CYGPATH_W) 'socketutils.c'; else $(CYGPATH_W) '$(srcdir)/socketutils.c'; fi`
+
+libstrace_a-sparc.o: sparc.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-sparc.o -MD -MP -MF $(DEPDIR)/libstrace_a-sparc.Tpo -c -o libstrace_a-sparc.o `test -f 'sparc.c' || echo '$(srcdir)/'`sparc.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-sparc.Tpo $(DEPDIR)/libstrace_a-sparc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sparc.c' object='libstrace_a-sparc.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-sparc.o `test -f 'sparc.c' || echo '$(srcdir)/'`sparc.c
+
+libstrace_a-sparc.obj: sparc.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-sparc.obj -MD -MP -MF $(DEPDIR)/libstrace_a-sparc.Tpo -c -o libstrace_a-sparc.obj `if test -f 'sparc.c'; then $(CYGPATH_W) 'sparc.c'; else $(CYGPATH_W) '$(srcdir)/sparc.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-sparc.Tpo $(DEPDIR)/libstrace_a-sparc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sparc.c' object='libstrace_a-sparc.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-sparc.obj `if test -f 'sparc.c'; then $(CYGPATH_W) 'sparc.c'; else $(CYGPATH_W) '$(srcdir)/sparc.c'; fi`
+
+libstrace_a-sram_alloc.o: sram_alloc.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-sram_alloc.o -MD -MP -MF $(DEPDIR)/libstrace_a-sram_alloc.Tpo -c -o libstrace_a-sram_alloc.o `test -f 'sram_alloc.c' || echo '$(srcdir)/'`sram_alloc.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-sram_alloc.Tpo $(DEPDIR)/libstrace_a-sram_alloc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sram_alloc.c' object='libstrace_a-sram_alloc.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-sram_alloc.o `test -f 'sram_alloc.c' || echo '$(srcdir)/'`sram_alloc.c
+
+libstrace_a-sram_alloc.obj: sram_alloc.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-sram_alloc.obj -MD -MP -MF $(DEPDIR)/libstrace_a-sram_alloc.Tpo -c -o libstrace_a-sram_alloc.obj `if test -f 'sram_alloc.c'; then $(CYGPATH_W) 'sram_alloc.c'; else $(CYGPATH_W) '$(srcdir)/sram_alloc.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-sram_alloc.Tpo $(DEPDIR)/libstrace_a-sram_alloc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sram_alloc.c' object='libstrace_a-sram_alloc.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-sram_alloc.obj `if test -f 'sram_alloc.c'; then $(CYGPATH_W) 'sram_alloc.c'; else $(CYGPATH_W) '$(srcdir)/sram_alloc.c'; fi`
+
+libstrace_a-stage_output.o: stage_output.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-stage_output.o -MD -MP -MF $(DEPDIR)/libstrace_a-stage_output.Tpo -c -o libstrace_a-stage_output.o `test -f 'stage_output.c' || echo '$(srcdir)/'`stage_output.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-stage_output.Tpo $(DEPDIR)/libstrace_a-stage_output.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='stage_output.c' object='libstrace_a-stage_output.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-stage_output.o `test -f 'stage_output.c' || echo '$(srcdir)/'`stage_output.c
+
+libstrace_a-stage_output.obj: stage_output.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-stage_output.obj -MD -MP -MF $(DEPDIR)/libstrace_a-stage_output.Tpo -c -o libstrace_a-stage_output.obj `if test -f 'stage_output.c'; then $(CYGPATH_W) 'stage_output.c'; else $(CYGPATH_W) '$(srcdir)/stage_output.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-stage_output.Tpo $(DEPDIR)/libstrace_a-stage_output.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='stage_output.c' object='libstrace_a-stage_output.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-stage_output.obj `if test -f 'stage_output.c'; then $(CYGPATH_W) 'stage_output.c'; else $(CYGPATH_W) '$(srcdir)/stage_output.c'; fi`
+
+libstrace_a-stat.o: stat.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-stat.o -MD -MP -MF $(DEPDIR)/libstrace_a-stat.Tpo -c -o libstrace_a-stat.o `test -f 'stat.c' || echo '$(srcdir)/'`stat.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-stat.Tpo $(DEPDIR)/libstrace_a-stat.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='stat.c' object='libstrace_a-stat.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-stat.o `test -f 'stat.c' || echo '$(srcdir)/'`stat.c
+
+libstrace_a-stat.obj: stat.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-stat.obj -MD -MP -MF $(DEPDIR)/libstrace_a-stat.Tpo -c -o libstrace_a-stat.obj `if test -f 'stat.c'; then $(CYGPATH_W) 'stat.c'; else $(CYGPATH_W) '$(srcdir)/stat.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-stat.Tpo $(DEPDIR)/libstrace_a-stat.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='stat.c' object='libstrace_a-stat.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-stat.obj `if test -f 'stat.c'; then $(CYGPATH_W) 'stat.c'; else $(CYGPATH_W) '$(srcdir)/stat.c'; fi`
+
+libstrace_a-stat64.o: stat64.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-stat64.o -MD -MP -MF $(DEPDIR)/libstrace_a-stat64.Tpo -c -o libstrace_a-stat64.o `test -f 'stat64.c' || echo '$(srcdir)/'`stat64.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-stat64.Tpo $(DEPDIR)/libstrace_a-stat64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='stat64.c' object='libstrace_a-stat64.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-stat64.o `test -f 'stat64.c' || echo '$(srcdir)/'`stat64.c
+
+libstrace_a-stat64.obj: stat64.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-stat64.obj -MD -MP -MF $(DEPDIR)/libstrace_a-stat64.Tpo -c -o libstrace_a-stat64.obj `if test -f 'stat64.c'; then $(CYGPATH_W) 'stat64.c'; else $(CYGPATH_W) '$(srcdir)/stat64.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-stat64.Tpo $(DEPDIR)/libstrace_a-stat64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='stat64.c' object='libstrace_a-stat64.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-stat64.obj `if test -f 'stat64.c'; then $(CYGPATH_W) 'stat64.c'; else $(CYGPATH_W) '$(srcdir)/stat64.c'; fi`
+
+libstrace_a-statfs.o: statfs.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-statfs.o -MD -MP -MF $(DEPDIR)/libstrace_a-statfs.Tpo -c -o libstrace_a-statfs.o `test -f 'statfs.c' || echo '$(srcdir)/'`statfs.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-statfs.Tpo $(DEPDIR)/libstrace_a-statfs.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='statfs.c' object='libstrace_a-statfs.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-statfs.o `test -f 'statfs.c' || echo '$(srcdir)/'`statfs.c
+
+libstrace_a-statfs.obj: statfs.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-statfs.obj -MD -MP -MF $(DEPDIR)/libstrace_a-statfs.Tpo -c -o libstrace_a-statfs.obj `if test -f 'statfs.c'; then $(CYGPATH_W) 'statfs.c'; else $(CYGPATH_W) '$(srcdir)/statfs.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-statfs.Tpo $(DEPDIR)/libstrace_a-statfs.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='statfs.c' object='libstrace_a-statfs.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-statfs.obj `if test -f 'statfs.c'; then $(CYGPATH_W) 'statfs.c'; else $(CYGPATH_W) '$(srcdir)/statfs.c'; fi`
+
+libstrace_a-statfs64.o: statfs64.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-statfs64.o -MD -MP -MF $(DEPDIR)/libstrace_a-statfs64.Tpo -c -o libstrace_a-statfs64.o `test -f 'statfs64.c' || echo '$(srcdir)/'`statfs64.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-statfs64.Tpo $(DEPDIR)/libstrace_a-statfs64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='statfs64.c' object='libstrace_a-statfs64.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-statfs64.o `test -f 'statfs64.c' || echo '$(srcdir)/'`statfs64.c
+
+libstrace_a-statfs64.obj: statfs64.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-statfs64.obj -MD -MP -MF $(DEPDIR)/libstrace_a-statfs64.Tpo -c -o libstrace_a-statfs64.obj `if test -f 'statfs64.c'; then $(CYGPATH_W) 'statfs64.c'; else $(CYGPATH_W) '$(srcdir)/statfs64.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-statfs64.Tpo $(DEPDIR)/libstrace_a-statfs64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='statfs64.c' object='libstrace_a-statfs64.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-statfs64.obj `if test -f 'statfs64.c'; then $(CYGPATH_W) 'statfs64.c'; else $(CYGPATH_W) '$(srcdir)/statfs64.c'; fi`
+
+libstrace_a-statx.o: statx.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-statx.o -MD -MP -MF $(DEPDIR)/libstrace_a-statx.Tpo -c -o libstrace_a-statx.o `test -f 'statx.c' || echo '$(srcdir)/'`statx.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-statx.Tpo $(DEPDIR)/libstrace_a-statx.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='statx.c' object='libstrace_a-statx.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-statx.o `test -f 'statx.c' || echo '$(srcdir)/'`statx.c
+
+libstrace_a-statx.obj: statx.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-statx.obj -MD -MP -MF $(DEPDIR)/libstrace_a-statx.Tpo -c -o libstrace_a-statx.obj `if test -f 'statx.c'; then $(CYGPATH_W) 'statx.c'; else $(CYGPATH_W) '$(srcdir)/statx.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-statx.Tpo $(DEPDIR)/libstrace_a-statx.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='statx.c' object='libstrace_a-statx.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-statx.obj `if test -f 'statx.c'; then $(CYGPATH_W) 'statx.c'; else $(CYGPATH_W) '$(srcdir)/statx.c'; fi`
+
+libstrace_a-string_to_uint.o: string_to_uint.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-string_to_uint.o -MD -MP -MF $(DEPDIR)/libstrace_a-string_to_uint.Tpo -c -o libstrace_a-string_to_uint.o `test -f 'string_to_uint.c' || echo '$(srcdir)/'`string_to_uint.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-string_to_uint.Tpo $(DEPDIR)/libstrace_a-string_to_uint.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='string_to_uint.c' object='libstrace_a-string_to_uint.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-string_to_uint.o `test -f 'string_to_uint.c' || echo '$(srcdir)/'`string_to_uint.c
+
+libstrace_a-string_to_uint.obj: string_to_uint.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-string_to_uint.obj -MD -MP -MF $(DEPDIR)/libstrace_a-string_to_uint.Tpo -c -o libstrace_a-string_to_uint.obj `if test -f 'string_to_uint.c'; then $(CYGPATH_W) 'string_to_uint.c'; else $(CYGPATH_W) '$(srcdir)/string_to_uint.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-string_to_uint.Tpo $(DEPDIR)/libstrace_a-string_to_uint.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='string_to_uint.c' object='libstrace_a-string_to_uint.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-string_to_uint.obj `if test -f 'string_to_uint.c'; then $(CYGPATH_W) 'string_to_uint.c'; else $(CYGPATH_W) '$(srcdir)/string_to_uint.c'; fi`
+
+libstrace_a-swapon.o: swapon.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-swapon.o -MD -MP -MF $(DEPDIR)/libstrace_a-swapon.Tpo -c -o libstrace_a-swapon.o `test -f 'swapon.c' || echo '$(srcdir)/'`swapon.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-swapon.Tpo $(DEPDIR)/libstrace_a-swapon.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='swapon.c' object='libstrace_a-swapon.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-swapon.o `test -f 'swapon.c' || echo '$(srcdir)/'`swapon.c
+
+libstrace_a-swapon.obj: swapon.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-swapon.obj -MD -MP -MF $(DEPDIR)/libstrace_a-swapon.Tpo -c -o libstrace_a-swapon.obj `if test -f 'swapon.c'; then $(CYGPATH_W) 'swapon.c'; else $(CYGPATH_W) '$(srcdir)/swapon.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-swapon.Tpo $(DEPDIR)/libstrace_a-swapon.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='swapon.c' object='libstrace_a-swapon.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-swapon.obj `if test -f 'swapon.c'; then $(CYGPATH_W) 'swapon.c'; else $(CYGPATH_W) '$(srcdir)/swapon.c'; fi`
+
+libstrace_a-sync_file_range.o: sync_file_range.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-sync_file_range.o -MD -MP -MF $(DEPDIR)/libstrace_a-sync_file_range.Tpo -c -o libstrace_a-sync_file_range.o `test -f 'sync_file_range.c' || echo '$(srcdir)/'`sync_file_range.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-sync_file_range.Tpo $(DEPDIR)/libstrace_a-sync_file_range.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sync_file_range.c' object='libstrace_a-sync_file_range.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-sync_file_range.o `test -f 'sync_file_range.c' || echo '$(srcdir)/'`sync_file_range.c
+
+libstrace_a-sync_file_range.obj: sync_file_range.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-sync_file_range.obj -MD -MP -MF $(DEPDIR)/libstrace_a-sync_file_range.Tpo -c -o libstrace_a-sync_file_range.obj `if test -f 'sync_file_range.c'; then $(CYGPATH_W) 'sync_file_range.c'; else $(CYGPATH_W) '$(srcdir)/sync_file_range.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-sync_file_range.Tpo $(DEPDIR)/libstrace_a-sync_file_range.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sync_file_range.c' object='libstrace_a-sync_file_range.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-sync_file_range.obj `if test -f 'sync_file_range.c'; then $(CYGPATH_W) 'sync_file_range.c'; else $(CYGPATH_W) '$(srcdir)/sync_file_range.c'; fi`
+
+libstrace_a-sync_file_range2.o: sync_file_range2.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-sync_file_range2.o -MD -MP -MF $(DEPDIR)/libstrace_a-sync_file_range2.Tpo -c -o libstrace_a-sync_file_range2.o `test -f 'sync_file_range2.c' || echo '$(srcdir)/'`sync_file_range2.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-sync_file_range2.Tpo $(DEPDIR)/libstrace_a-sync_file_range2.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sync_file_range2.c' object='libstrace_a-sync_file_range2.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-sync_file_range2.o `test -f 'sync_file_range2.c' || echo '$(srcdir)/'`sync_file_range2.c
 
-strace-string_to_uint.o: string_to_uint.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-string_to_uint.o -MD -MP -MF $(DEPDIR)/strace-string_to_uint.Tpo -c -o strace-string_to_uint.o `test -f 'string_to_uint.c' || echo '$(srcdir)/'`string_to_uint.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-string_to_uint.Tpo $(DEPDIR)/strace-string_to_uint.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='string_to_uint.c' object='strace-string_to_uint.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-sync_file_range2.obj: sync_file_range2.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-sync_file_range2.obj -MD -MP -MF $(DEPDIR)/libstrace_a-sync_file_range2.Tpo -c -o libstrace_a-sync_file_range2.obj `if test -f 'sync_file_range2.c'; then $(CYGPATH_W) 'sync_file_range2.c'; else $(CYGPATH_W) '$(srcdir)/sync_file_range2.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-sync_file_range2.Tpo $(DEPDIR)/libstrace_a-sync_file_range2.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sync_file_range2.c' object='libstrace_a-sync_file_range2.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-string_to_uint.o `test -f 'string_to_uint.c' || echo '$(srcdir)/'`string_to_uint.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-sync_file_range2.obj `if test -f 'sync_file_range2.c'; then $(CYGPATH_W) 'sync_file_range2.c'; else $(CYGPATH_W) '$(srcdir)/sync_file_range2.c'; fi`
 
-strace-string_to_uint.obj: string_to_uint.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-string_to_uint.obj -MD -MP -MF $(DEPDIR)/strace-string_to_uint.Tpo -c -o strace-string_to_uint.obj `if test -f 'string_to_uint.c'; then $(CYGPATH_W) 'string_to_uint.c'; else $(CYGPATH_W) '$(srcdir)/string_to_uint.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-string_to_uint.Tpo $(DEPDIR)/strace-string_to_uint.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='string_to_uint.c' object='strace-string_to_uint.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-syscall.o: syscall.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-syscall.o -MD -MP -MF $(DEPDIR)/libstrace_a-syscall.Tpo -c -o libstrace_a-syscall.o `test -f 'syscall.c' || echo '$(srcdir)/'`syscall.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-syscall.Tpo $(DEPDIR)/libstrace_a-syscall.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='syscall.c' object='libstrace_a-syscall.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-string_to_uint.obj `if test -f 'string_to_uint.c'; then $(CYGPATH_W) 'string_to_uint.c'; else $(CYGPATH_W) '$(srcdir)/string_to_uint.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-syscall.o `test -f 'syscall.c' || echo '$(srcdir)/'`syscall.c
 
-strace-swapon.o: swapon.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-swapon.o -MD -MP -MF $(DEPDIR)/strace-swapon.Tpo -c -o strace-swapon.o `test -f 'swapon.c' || echo '$(srcdir)/'`swapon.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-swapon.Tpo $(DEPDIR)/strace-swapon.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='swapon.c' object='strace-swapon.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-syscall.obj: syscall.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-syscall.obj -MD -MP -MF $(DEPDIR)/libstrace_a-syscall.Tpo -c -o libstrace_a-syscall.obj `if test -f 'syscall.c'; then $(CYGPATH_W) 'syscall.c'; else $(CYGPATH_W) '$(srcdir)/syscall.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-syscall.Tpo $(DEPDIR)/libstrace_a-syscall.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='syscall.c' object='libstrace_a-syscall.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-swapon.o `test -f 'swapon.c' || echo '$(srcdir)/'`swapon.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-syscall.obj `if test -f 'syscall.c'; then $(CYGPATH_W) 'syscall.c'; else $(CYGPATH_W) '$(srcdir)/syscall.c'; fi`
 
-strace-swapon.obj: swapon.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-swapon.obj -MD -MP -MF $(DEPDIR)/strace-swapon.Tpo -c -o strace-swapon.obj `if test -f 'swapon.c'; then $(CYGPATH_W) 'swapon.c'; else $(CYGPATH_W) '$(srcdir)/swapon.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-swapon.Tpo $(DEPDIR)/strace-swapon.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='swapon.c' object='strace-swapon.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-sysctl.o: sysctl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-sysctl.o -MD -MP -MF $(DEPDIR)/libstrace_a-sysctl.Tpo -c -o libstrace_a-sysctl.o `test -f 'sysctl.c' || echo '$(srcdir)/'`sysctl.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-sysctl.Tpo $(DEPDIR)/libstrace_a-sysctl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sysctl.c' object='libstrace_a-sysctl.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-swapon.obj `if test -f 'swapon.c'; then $(CYGPATH_W) 'swapon.c'; else $(CYGPATH_W) '$(srcdir)/swapon.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-sysctl.o `test -f 'sysctl.c' || echo '$(srcdir)/'`sysctl.c
 
-strace-syscall.o: syscall.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-syscall.o -MD -MP -MF $(DEPDIR)/strace-syscall.Tpo -c -o strace-syscall.o `test -f 'syscall.c' || echo '$(srcdir)/'`syscall.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-syscall.Tpo $(DEPDIR)/strace-syscall.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='syscall.c' object='strace-syscall.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-sysctl.obj: sysctl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-sysctl.obj -MD -MP -MF $(DEPDIR)/libstrace_a-sysctl.Tpo -c -o libstrace_a-sysctl.obj `if test -f 'sysctl.c'; then $(CYGPATH_W) 'sysctl.c'; else $(CYGPATH_W) '$(srcdir)/sysctl.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-sysctl.Tpo $(DEPDIR)/libstrace_a-sysctl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sysctl.c' object='libstrace_a-sysctl.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-syscall.o `test -f 'syscall.c' || echo '$(srcdir)/'`syscall.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-sysctl.obj `if test -f 'sysctl.c'; then $(CYGPATH_W) 'sysctl.c'; else $(CYGPATH_W) '$(srcdir)/sysctl.c'; fi`
 
-strace-syscall.obj: syscall.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-syscall.obj -MD -MP -MF $(DEPDIR)/strace-syscall.Tpo -c -o strace-syscall.obj `if test -f 'syscall.c'; then $(CYGPATH_W) 'syscall.c'; else $(CYGPATH_W) '$(srcdir)/syscall.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-syscall.Tpo $(DEPDIR)/strace-syscall.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='syscall.c' object='strace-syscall.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-sysinfo.o: sysinfo.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-sysinfo.o -MD -MP -MF $(DEPDIR)/libstrace_a-sysinfo.Tpo -c -o libstrace_a-sysinfo.o `test -f 'sysinfo.c' || echo '$(srcdir)/'`sysinfo.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-sysinfo.Tpo $(DEPDIR)/libstrace_a-sysinfo.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sysinfo.c' object='libstrace_a-sysinfo.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-syscall.obj `if test -f 'syscall.c'; then $(CYGPATH_W) 'syscall.c'; else $(CYGPATH_W) '$(srcdir)/syscall.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-sysinfo.o `test -f 'sysinfo.c' || echo '$(srcdir)/'`sysinfo.c
 
-strace-sysctl.o: sysctl.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-sysctl.o -MD -MP -MF $(DEPDIR)/strace-sysctl.Tpo -c -o strace-sysctl.o `test -f 'sysctl.c' || echo '$(srcdir)/'`sysctl.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-sysctl.Tpo $(DEPDIR)/strace-sysctl.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sysctl.c' object='strace-sysctl.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-sysinfo.obj: sysinfo.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-sysinfo.obj -MD -MP -MF $(DEPDIR)/libstrace_a-sysinfo.Tpo -c -o libstrace_a-sysinfo.obj `if test -f 'sysinfo.c'; then $(CYGPATH_W) 'sysinfo.c'; else $(CYGPATH_W) '$(srcdir)/sysinfo.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-sysinfo.Tpo $(DEPDIR)/libstrace_a-sysinfo.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sysinfo.c' object='libstrace_a-sysinfo.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-sysctl.o `test -f 'sysctl.c' || echo '$(srcdir)/'`sysctl.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-sysinfo.obj `if test -f 'sysinfo.c'; then $(CYGPATH_W) 'sysinfo.c'; else $(CYGPATH_W) '$(srcdir)/sysinfo.c'; fi`
 
-strace-sysctl.obj: sysctl.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-sysctl.obj -MD -MP -MF $(DEPDIR)/strace-sysctl.Tpo -c -o strace-sysctl.obj `if test -f 'sysctl.c'; then $(CYGPATH_W) 'sysctl.c'; else $(CYGPATH_W) '$(srcdir)/sysctl.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-sysctl.Tpo $(DEPDIR)/strace-sysctl.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sysctl.c' object='strace-sysctl.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-syslog.o: syslog.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-syslog.o -MD -MP -MF $(DEPDIR)/libstrace_a-syslog.Tpo -c -o libstrace_a-syslog.o `test -f 'syslog.c' || echo '$(srcdir)/'`syslog.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-syslog.Tpo $(DEPDIR)/libstrace_a-syslog.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='syslog.c' object='libstrace_a-syslog.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-sysctl.obj `if test -f 'sysctl.c'; then $(CYGPATH_W) 'sysctl.c'; else $(CYGPATH_W) '$(srcdir)/sysctl.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-syslog.o `test -f 'syslog.c' || echo '$(srcdir)/'`syslog.c
 
-strace-sysinfo.o: sysinfo.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-sysinfo.o -MD -MP -MF $(DEPDIR)/strace-sysinfo.Tpo -c -o strace-sysinfo.o `test -f 'sysinfo.c' || echo '$(srcdir)/'`sysinfo.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-sysinfo.Tpo $(DEPDIR)/strace-sysinfo.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sysinfo.c' object='strace-sysinfo.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-syslog.obj: syslog.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-syslog.obj -MD -MP -MF $(DEPDIR)/libstrace_a-syslog.Tpo -c -o libstrace_a-syslog.obj `if test -f 'syslog.c'; then $(CYGPATH_W) 'syslog.c'; else $(CYGPATH_W) '$(srcdir)/syslog.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-syslog.Tpo $(DEPDIR)/libstrace_a-syslog.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='syslog.c' object='libstrace_a-syslog.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-sysinfo.o `test -f 'sysinfo.c' || echo '$(srcdir)/'`sysinfo.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-syslog.obj `if test -f 'syslog.c'; then $(CYGPATH_W) 'syslog.c'; else $(CYGPATH_W) '$(srcdir)/syslog.c'; fi`
 
-strace-sysinfo.obj: sysinfo.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-sysinfo.obj -MD -MP -MF $(DEPDIR)/strace-sysinfo.Tpo -c -o strace-sysinfo.obj `if test -f 'sysinfo.c'; then $(CYGPATH_W) 'sysinfo.c'; else $(CYGPATH_W) '$(srcdir)/sysinfo.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-sysinfo.Tpo $(DEPDIR)/strace-sysinfo.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sysinfo.c' object='strace-sysinfo.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-sysmips.o: sysmips.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-sysmips.o -MD -MP -MF $(DEPDIR)/libstrace_a-sysmips.Tpo -c -o libstrace_a-sysmips.o `test -f 'sysmips.c' || echo '$(srcdir)/'`sysmips.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-sysmips.Tpo $(DEPDIR)/libstrace_a-sysmips.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sysmips.c' object='libstrace_a-sysmips.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-sysinfo.obj `if test -f 'sysinfo.c'; then $(CYGPATH_W) 'sysinfo.c'; else $(CYGPATH_W) '$(srcdir)/sysinfo.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-sysmips.o `test -f 'sysmips.c' || echo '$(srcdir)/'`sysmips.c
 
-strace-syslog.o: syslog.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-syslog.o -MD -MP -MF $(DEPDIR)/strace-syslog.Tpo -c -o strace-syslog.o `test -f 'syslog.c' || echo '$(srcdir)/'`syslog.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-syslog.Tpo $(DEPDIR)/strace-syslog.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='syslog.c' object='strace-syslog.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-sysmips.obj: sysmips.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-sysmips.obj -MD -MP -MF $(DEPDIR)/libstrace_a-sysmips.Tpo -c -o libstrace_a-sysmips.obj `if test -f 'sysmips.c'; then $(CYGPATH_W) 'sysmips.c'; else $(CYGPATH_W) '$(srcdir)/sysmips.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-sysmips.Tpo $(DEPDIR)/libstrace_a-sysmips.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sysmips.c' object='libstrace_a-sysmips.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-syslog.o `test -f 'syslog.c' || echo '$(srcdir)/'`syslog.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-sysmips.obj `if test -f 'sysmips.c'; then $(CYGPATH_W) 'sysmips.c'; else $(CYGPATH_W) '$(srcdir)/sysmips.c'; fi`
 
-strace-syslog.obj: syslog.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-syslog.obj -MD -MP -MF $(DEPDIR)/strace-syslog.Tpo -c -o strace-syslog.obj `if test -f 'syslog.c'; then $(CYGPATH_W) 'syslog.c'; else $(CYGPATH_W) '$(srcdir)/syslog.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-syslog.Tpo $(DEPDIR)/strace-syslog.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='syslog.c' object='strace-syslog.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-tee.o: tee.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-tee.o -MD -MP -MF $(DEPDIR)/libstrace_a-tee.Tpo -c -o libstrace_a-tee.o `test -f 'tee.c' || echo '$(srcdir)/'`tee.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-tee.Tpo $(DEPDIR)/libstrace_a-tee.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='tee.c' object='libstrace_a-tee.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-syslog.obj `if test -f 'syslog.c'; then $(CYGPATH_W) 'syslog.c'; else $(CYGPATH_W) '$(srcdir)/syslog.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-tee.o `test -f 'tee.c' || echo '$(srcdir)/'`tee.c
 
-strace-sysmips.o: sysmips.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-sysmips.o -MD -MP -MF $(DEPDIR)/strace-sysmips.Tpo -c -o strace-sysmips.o `test -f 'sysmips.c' || echo '$(srcdir)/'`sysmips.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-sysmips.Tpo $(DEPDIR)/strace-sysmips.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sysmips.c' object='strace-sysmips.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-tee.obj: tee.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-tee.obj -MD -MP -MF $(DEPDIR)/libstrace_a-tee.Tpo -c -o libstrace_a-tee.obj `if test -f 'tee.c'; then $(CYGPATH_W) 'tee.c'; else $(CYGPATH_W) '$(srcdir)/tee.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-tee.Tpo $(DEPDIR)/libstrace_a-tee.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='tee.c' object='libstrace_a-tee.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-sysmips.o `test -f 'sysmips.c' || echo '$(srcdir)/'`sysmips.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-tee.obj `if test -f 'tee.c'; then $(CYGPATH_W) 'tee.c'; else $(CYGPATH_W) '$(srcdir)/tee.c'; fi`
 
-strace-sysmips.obj: sysmips.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-sysmips.obj -MD -MP -MF $(DEPDIR)/strace-sysmips.Tpo -c -o strace-sysmips.obj `if test -f 'sysmips.c'; then $(CYGPATH_W) 'sysmips.c'; else $(CYGPATH_W) '$(srcdir)/sysmips.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-sysmips.Tpo $(DEPDIR)/strace-sysmips.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='sysmips.c' object='strace-sysmips.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-term.o: term.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-term.o -MD -MP -MF $(DEPDIR)/libstrace_a-term.Tpo -c -o libstrace_a-term.o `test -f 'term.c' || echo '$(srcdir)/'`term.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-term.Tpo $(DEPDIR)/libstrace_a-term.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='term.c' object='libstrace_a-term.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-sysmips.obj `if test -f 'sysmips.c'; then $(CYGPATH_W) 'sysmips.c'; else $(CYGPATH_W) '$(srcdir)/sysmips.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-term.o `test -f 'term.c' || echo '$(srcdir)/'`term.c
 
-strace-term.o: term.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-term.o -MD -MP -MF $(DEPDIR)/strace-term.Tpo -c -o strace-term.o `test -f 'term.c' || echo '$(srcdir)/'`term.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-term.Tpo $(DEPDIR)/strace-term.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='term.c' object='strace-term.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-term.obj: term.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-term.obj -MD -MP -MF $(DEPDIR)/libstrace_a-term.Tpo -c -o libstrace_a-term.obj `if test -f 'term.c'; then $(CYGPATH_W) 'term.c'; else $(CYGPATH_W) '$(srcdir)/term.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-term.Tpo $(DEPDIR)/libstrace_a-term.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='term.c' object='libstrace_a-term.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-term.o `test -f 'term.c' || echo '$(srcdir)/'`term.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-term.obj `if test -f 'term.c'; then $(CYGPATH_W) 'term.c'; else $(CYGPATH_W) '$(srcdir)/term.c'; fi`
 
-strace-term.obj: term.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-term.obj -MD -MP -MF $(DEPDIR)/strace-term.Tpo -c -o strace-term.obj `if test -f 'term.c'; then $(CYGPATH_W) 'term.c'; else $(CYGPATH_W) '$(srcdir)/term.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-term.Tpo $(DEPDIR)/strace-term.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='term.c' object='strace-term.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-time.o: time.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-time.o -MD -MP -MF $(DEPDIR)/libstrace_a-time.Tpo -c -o libstrace_a-time.o `test -f 'time.c' || echo '$(srcdir)/'`time.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-time.Tpo $(DEPDIR)/libstrace_a-time.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='time.c' object='libstrace_a-time.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-term.obj `if test -f 'term.c'; then $(CYGPATH_W) 'term.c'; else $(CYGPATH_W) '$(srcdir)/term.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-time.o `test -f 'time.c' || echo '$(srcdir)/'`time.c
 
-strace-time.o: time.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-time.o -MD -MP -MF $(DEPDIR)/strace-time.Tpo -c -o strace-time.o `test -f 'time.c' || echo '$(srcdir)/'`time.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-time.Tpo $(DEPDIR)/strace-time.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='time.c' object='strace-time.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-time.obj: time.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-time.obj -MD -MP -MF $(DEPDIR)/libstrace_a-time.Tpo -c -o libstrace_a-time.obj `if test -f 'time.c'; then $(CYGPATH_W) 'time.c'; else $(CYGPATH_W) '$(srcdir)/time.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-time.Tpo $(DEPDIR)/libstrace_a-time.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='time.c' object='libstrace_a-time.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-time.o `test -f 'time.c' || echo '$(srcdir)/'`time.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-time.obj `if test -f 'time.c'; then $(CYGPATH_W) 'time.c'; else $(CYGPATH_W) '$(srcdir)/time.c'; fi`
 
-strace-time.obj: time.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-time.obj -MD -MP -MF $(DEPDIR)/strace-time.Tpo -c -o strace-time.obj `if test -f 'time.c'; then $(CYGPATH_W) 'time.c'; else $(CYGPATH_W) '$(srcdir)/time.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-time.Tpo $(DEPDIR)/strace-time.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='time.c' object='strace-time.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-times.o: times.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-times.o -MD -MP -MF $(DEPDIR)/libstrace_a-times.Tpo -c -o libstrace_a-times.o `test -f 'times.c' || echo '$(srcdir)/'`times.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-times.Tpo $(DEPDIR)/libstrace_a-times.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='times.c' object='libstrace_a-times.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-time.obj `if test -f 'time.c'; then $(CYGPATH_W) 'time.c'; else $(CYGPATH_W) '$(srcdir)/time.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-times.o `test -f 'times.c' || echo '$(srcdir)/'`times.c
 
-strace-times.o: times.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-times.o -MD -MP -MF $(DEPDIR)/strace-times.Tpo -c -o strace-times.o `test -f 'times.c' || echo '$(srcdir)/'`times.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-times.Tpo $(DEPDIR)/strace-times.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='times.c' object='strace-times.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-times.obj: times.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-times.obj -MD -MP -MF $(DEPDIR)/libstrace_a-times.Tpo -c -o libstrace_a-times.obj `if test -f 'times.c'; then $(CYGPATH_W) 'times.c'; else $(CYGPATH_W) '$(srcdir)/times.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-times.Tpo $(DEPDIR)/libstrace_a-times.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='times.c' object='libstrace_a-times.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-times.o `test -f 'times.c' || echo '$(srcdir)/'`times.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-times.obj `if test -f 'times.c'; then $(CYGPATH_W) 'times.c'; else $(CYGPATH_W) '$(srcdir)/times.c'; fi`
 
-strace-times.obj: times.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-times.obj -MD -MP -MF $(DEPDIR)/strace-times.Tpo -c -o strace-times.obj `if test -f 'times.c'; then $(CYGPATH_W) 'times.c'; else $(CYGPATH_W) '$(srcdir)/times.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-times.Tpo $(DEPDIR)/strace-times.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='times.c' object='strace-times.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-trie.o: trie.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-trie.o -MD -MP -MF $(DEPDIR)/libstrace_a-trie.Tpo -c -o libstrace_a-trie.o `test -f 'trie.c' || echo '$(srcdir)/'`trie.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-trie.Tpo $(DEPDIR)/libstrace_a-trie.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='trie.c' object='libstrace_a-trie.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-times.obj `if test -f 'times.c'; then $(CYGPATH_W) 'times.c'; else $(CYGPATH_W) '$(srcdir)/times.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-trie.o `test -f 'trie.c' || echo '$(srcdir)/'`trie.c
 
-strace-truncate.o: truncate.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-truncate.o -MD -MP -MF $(DEPDIR)/strace-truncate.Tpo -c -o strace-truncate.o `test -f 'truncate.c' || echo '$(srcdir)/'`truncate.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-truncate.Tpo $(DEPDIR)/strace-truncate.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='truncate.c' object='strace-truncate.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-trie.obj: trie.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-trie.obj -MD -MP -MF $(DEPDIR)/libstrace_a-trie.Tpo -c -o libstrace_a-trie.obj `if test -f 'trie.c'; then $(CYGPATH_W) 'trie.c'; else $(CYGPATH_W) '$(srcdir)/trie.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-trie.Tpo $(DEPDIR)/libstrace_a-trie.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='trie.c' object='libstrace_a-trie.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-truncate.o `test -f 'truncate.c' || echo '$(srcdir)/'`truncate.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-trie.obj `if test -f 'trie.c'; then $(CYGPATH_W) 'trie.c'; else $(CYGPATH_W) '$(srcdir)/trie.c'; fi`
 
-strace-truncate.obj: truncate.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-truncate.obj -MD -MP -MF $(DEPDIR)/strace-truncate.Tpo -c -o strace-truncate.obj `if test -f 'truncate.c'; then $(CYGPATH_W) 'truncate.c'; else $(CYGPATH_W) '$(srcdir)/truncate.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-truncate.Tpo $(DEPDIR)/strace-truncate.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='truncate.c' object='strace-truncate.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-truncate.o: truncate.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-truncate.o -MD -MP -MF $(DEPDIR)/libstrace_a-truncate.Tpo -c -o libstrace_a-truncate.o `test -f 'truncate.c' || echo '$(srcdir)/'`truncate.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-truncate.Tpo $(DEPDIR)/libstrace_a-truncate.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='truncate.c' object='libstrace_a-truncate.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-truncate.obj `if test -f 'truncate.c'; then $(CYGPATH_W) 'truncate.c'; else $(CYGPATH_W) '$(srcdir)/truncate.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-truncate.o `test -f 'truncate.c' || echo '$(srcdir)/'`truncate.c
 
-strace-ubi.o: ubi.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-ubi.o -MD -MP -MF $(DEPDIR)/strace-ubi.Tpo -c -o strace-ubi.o `test -f 'ubi.c' || echo '$(srcdir)/'`ubi.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-ubi.Tpo $(DEPDIR)/strace-ubi.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ubi.c' object='strace-ubi.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-truncate.obj: truncate.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-truncate.obj -MD -MP -MF $(DEPDIR)/libstrace_a-truncate.Tpo -c -o libstrace_a-truncate.obj `if test -f 'truncate.c'; then $(CYGPATH_W) 'truncate.c'; else $(CYGPATH_W) '$(srcdir)/truncate.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-truncate.Tpo $(DEPDIR)/libstrace_a-truncate.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='truncate.c' object='libstrace_a-truncate.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-ubi.o `test -f 'ubi.c' || echo '$(srcdir)/'`ubi.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-truncate.obj `if test -f 'truncate.c'; then $(CYGPATH_W) 'truncate.c'; else $(CYGPATH_W) '$(srcdir)/truncate.c'; fi`
 
-strace-ubi.obj: ubi.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-ubi.obj -MD -MP -MF $(DEPDIR)/strace-ubi.Tpo -c -o strace-ubi.obj `if test -f 'ubi.c'; then $(CYGPATH_W) 'ubi.c'; else $(CYGPATH_W) '$(srcdir)/ubi.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-ubi.Tpo $(DEPDIR)/strace-ubi.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ubi.c' object='strace-ubi.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-ubi.o: ubi.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-ubi.o -MD -MP -MF $(DEPDIR)/libstrace_a-ubi.Tpo -c -o libstrace_a-ubi.o `test -f 'ubi.c' || echo '$(srcdir)/'`ubi.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-ubi.Tpo $(DEPDIR)/libstrace_a-ubi.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ubi.c' object='libstrace_a-ubi.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-ubi.obj `if test -f 'ubi.c'; then $(CYGPATH_W) 'ubi.c'; else $(CYGPATH_W) '$(srcdir)/ubi.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-ubi.o `test -f 'ubi.c' || echo '$(srcdir)/'`ubi.c
 
-strace-ucopy.o: ucopy.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-ucopy.o -MD -MP -MF $(DEPDIR)/strace-ucopy.Tpo -c -o strace-ucopy.o `test -f 'ucopy.c' || echo '$(srcdir)/'`ucopy.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-ucopy.Tpo $(DEPDIR)/strace-ucopy.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ucopy.c' object='strace-ucopy.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-ubi.obj: ubi.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-ubi.obj -MD -MP -MF $(DEPDIR)/libstrace_a-ubi.Tpo -c -o libstrace_a-ubi.obj `if test -f 'ubi.c'; then $(CYGPATH_W) 'ubi.c'; else $(CYGPATH_W) '$(srcdir)/ubi.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-ubi.Tpo $(DEPDIR)/libstrace_a-ubi.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ubi.c' object='libstrace_a-ubi.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-ucopy.o `test -f 'ucopy.c' || echo '$(srcdir)/'`ucopy.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-ubi.obj `if test -f 'ubi.c'; then $(CYGPATH_W) 'ubi.c'; else $(CYGPATH_W) '$(srcdir)/ubi.c'; fi`
 
-strace-ucopy.obj: ucopy.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-ucopy.obj -MD -MP -MF $(DEPDIR)/strace-ucopy.Tpo -c -o strace-ucopy.obj `if test -f 'ucopy.c'; then $(CYGPATH_W) 'ucopy.c'; else $(CYGPATH_W) '$(srcdir)/ucopy.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-ucopy.Tpo $(DEPDIR)/strace-ucopy.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ucopy.c' object='strace-ucopy.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-ucopy.o: ucopy.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-ucopy.o -MD -MP -MF $(DEPDIR)/libstrace_a-ucopy.Tpo -c -o libstrace_a-ucopy.o `test -f 'ucopy.c' || echo '$(srcdir)/'`ucopy.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-ucopy.Tpo $(DEPDIR)/libstrace_a-ucopy.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ucopy.c' object='libstrace_a-ucopy.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-ucopy.obj `if test -f 'ucopy.c'; then $(CYGPATH_W) 'ucopy.c'; else $(CYGPATH_W) '$(srcdir)/ucopy.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-ucopy.o `test -f 'ucopy.c' || echo '$(srcdir)/'`ucopy.c
 
-strace-uid.o: uid.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-uid.o -MD -MP -MF $(DEPDIR)/strace-uid.Tpo -c -o strace-uid.o `test -f 'uid.c' || echo '$(srcdir)/'`uid.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-uid.Tpo $(DEPDIR)/strace-uid.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='uid.c' object='strace-uid.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-ucopy.obj: ucopy.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-ucopy.obj -MD -MP -MF $(DEPDIR)/libstrace_a-ucopy.Tpo -c -o libstrace_a-ucopy.obj `if test -f 'ucopy.c'; then $(CYGPATH_W) 'ucopy.c'; else $(CYGPATH_W) '$(srcdir)/ucopy.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-ucopy.Tpo $(DEPDIR)/libstrace_a-ucopy.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ucopy.c' object='libstrace_a-ucopy.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-uid.o `test -f 'uid.c' || echo '$(srcdir)/'`uid.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-ucopy.obj `if test -f 'ucopy.c'; then $(CYGPATH_W) 'ucopy.c'; else $(CYGPATH_W) '$(srcdir)/ucopy.c'; fi`
 
-strace-uid.obj: uid.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-uid.obj -MD -MP -MF $(DEPDIR)/strace-uid.Tpo -c -o strace-uid.obj `if test -f 'uid.c'; then $(CYGPATH_W) 'uid.c'; else $(CYGPATH_W) '$(srcdir)/uid.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-uid.Tpo $(DEPDIR)/strace-uid.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='uid.c' object='strace-uid.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-uid.o: uid.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-uid.o -MD -MP -MF $(DEPDIR)/libstrace_a-uid.Tpo -c -o libstrace_a-uid.o `test -f 'uid.c' || echo '$(srcdir)/'`uid.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-uid.Tpo $(DEPDIR)/libstrace_a-uid.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='uid.c' object='libstrace_a-uid.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-uid.obj `if test -f 'uid.c'; then $(CYGPATH_W) 'uid.c'; else $(CYGPATH_W) '$(srcdir)/uid.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-uid.o `test -f 'uid.c' || echo '$(srcdir)/'`uid.c
 
-strace-uid16.o: uid16.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-uid16.o -MD -MP -MF $(DEPDIR)/strace-uid16.Tpo -c -o strace-uid16.o `test -f 'uid16.c' || echo '$(srcdir)/'`uid16.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-uid16.Tpo $(DEPDIR)/strace-uid16.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='uid16.c' object='strace-uid16.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-uid.obj: uid.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-uid.obj -MD -MP -MF $(DEPDIR)/libstrace_a-uid.Tpo -c -o libstrace_a-uid.obj `if test -f 'uid.c'; then $(CYGPATH_W) 'uid.c'; else $(CYGPATH_W) '$(srcdir)/uid.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-uid.Tpo $(DEPDIR)/libstrace_a-uid.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='uid.c' object='libstrace_a-uid.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-uid16.o `test -f 'uid16.c' || echo '$(srcdir)/'`uid16.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-uid.obj `if test -f 'uid.c'; then $(CYGPATH_W) 'uid.c'; else $(CYGPATH_W) '$(srcdir)/uid.c'; fi`
 
-strace-uid16.obj: uid16.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-uid16.obj -MD -MP -MF $(DEPDIR)/strace-uid16.Tpo -c -o strace-uid16.obj `if test -f 'uid16.c'; then $(CYGPATH_W) 'uid16.c'; else $(CYGPATH_W) '$(srcdir)/uid16.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-uid16.Tpo $(DEPDIR)/strace-uid16.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='uid16.c' object='strace-uid16.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-uid16.o: uid16.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-uid16.o -MD -MP -MF $(DEPDIR)/libstrace_a-uid16.Tpo -c -o libstrace_a-uid16.o `test -f 'uid16.c' || echo '$(srcdir)/'`uid16.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-uid16.Tpo $(DEPDIR)/libstrace_a-uid16.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='uid16.c' object='libstrace_a-uid16.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-uid16.obj `if test -f 'uid16.c'; then $(CYGPATH_W) 'uid16.c'; else $(CYGPATH_W) '$(srcdir)/uid16.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-uid16.o `test -f 'uid16.c' || echo '$(srcdir)/'`uid16.c
 
-strace-umask.o: umask.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-umask.o -MD -MP -MF $(DEPDIR)/strace-umask.Tpo -c -o strace-umask.o `test -f 'umask.c' || echo '$(srcdir)/'`umask.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-umask.Tpo $(DEPDIR)/strace-umask.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='umask.c' object='strace-umask.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-uid16.obj: uid16.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-uid16.obj -MD -MP -MF $(DEPDIR)/libstrace_a-uid16.Tpo -c -o libstrace_a-uid16.obj `if test -f 'uid16.c'; then $(CYGPATH_W) 'uid16.c'; else $(CYGPATH_W) '$(srcdir)/uid16.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-uid16.Tpo $(DEPDIR)/libstrace_a-uid16.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='uid16.c' object='libstrace_a-uid16.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-umask.o `test -f 'umask.c' || echo '$(srcdir)/'`umask.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-uid16.obj `if test -f 'uid16.c'; then $(CYGPATH_W) 'uid16.c'; else $(CYGPATH_W) '$(srcdir)/uid16.c'; fi`
 
-strace-umask.obj: umask.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-umask.obj -MD -MP -MF $(DEPDIR)/strace-umask.Tpo -c -o strace-umask.obj `if test -f 'umask.c'; then $(CYGPATH_W) 'umask.c'; else $(CYGPATH_W) '$(srcdir)/umask.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-umask.Tpo $(DEPDIR)/strace-umask.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='umask.c' object='strace-umask.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-umask.o: umask.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-umask.o -MD -MP -MF $(DEPDIR)/libstrace_a-umask.Tpo -c -o libstrace_a-umask.o `test -f 'umask.c' || echo '$(srcdir)/'`umask.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-umask.Tpo $(DEPDIR)/libstrace_a-umask.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='umask.c' object='libstrace_a-umask.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-umask.obj `if test -f 'umask.c'; then $(CYGPATH_W) 'umask.c'; else $(CYGPATH_W) '$(srcdir)/umask.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-umask.o `test -f 'umask.c' || echo '$(srcdir)/'`umask.c
 
-strace-umount.o: umount.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-umount.o -MD -MP -MF $(DEPDIR)/strace-umount.Tpo -c -o strace-umount.o `test -f 'umount.c' || echo '$(srcdir)/'`umount.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-umount.Tpo $(DEPDIR)/strace-umount.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='umount.c' object='strace-umount.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-umask.obj: umask.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-umask.obj -MD -MP -MF $(DEPDIR)/libstrace_a-umask.Tpo -c -o libstrace_a-umask.obj `if test -f 'umask.c'; then $(CYGPATH_W) 'umask.c'; else $(CYGPATH_W) '$(srcdir)/umask.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-umask.Tpo $(DEPDIR)/libstrace_a-umask.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='umask.c' object='libstrace_a-umask.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-umount.o `test -f 'umount.c' || echo '$(srcdir)/'`umount.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-umask.obj `if test -f 'umask.c'; then $(CYGPATH_W) 'umask.c'; else $(CYGPATH_W) '$(srcdir)/umask.c'; fi`
 
-strace-umount.obj: umount.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-umount.obj -MD -MP -MF $(DEPDIR)/strace-umount.Tpo -c -o strace-umount.obj `if test -f 'umount.c'; then $(CYGPATH_W) 'umount.c'; else $(CYGPATH_W) '$(srcdir)/umount.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-umount.Tpo $(DEPDIR)/strace-umount.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='umount.c' object='strace-umount.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-umount.o: umount.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-umount.o -MD -MP -MF $(DEPDIR)/libstrace_a-umount.Tpo -c -o libstrace_a-umount.o `test -f 'umount.c' || echo '$(srcdir)/'`umount.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-umount.Tpo $(DEPDIR)/libstrace_a-umount.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='umount.c' object='libstrace_a-umount.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-umount.obj `if test -f 'umount.c'; then $(CYGPATH_W) 'umount.c'; else $(CYGPATH_W) '$(srcdir)/umount.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-umount.o `test -f 'umount.c' || echo '$(srcdir)/'`umount.c
 
-strace-uname.o: uname.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-uname.o -MD -MP -MF $(DEPDIR)/strace-uname.Tpo -c -o strace-uname.o `test -f 'uname.c' || echo '$(srcdir)/'`uname.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-uname.Tpo $(DEPDIR)/strace-uname.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='uname.c' object='strace-uname.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-umount.obj: umount.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-umount.obj -MD -MP -MF $(DEPDIR)/libstrace_a-umount.Tpo -c -o libstrace_a-umount.obj `if test -f 'umount.c'; then $(CYGPATH_W) 'umount.c'; else $(CYGPATH_W) '$(srcdir)/umount.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-umount.Tpo $(DEPDIR)/libstrace_a-umount.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='umount.c' object='libstrace_a-umount.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-uname.o `test -f 'uname.c' || echo '$(srcdir)/'`uname.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-umount.obj `if test -f 'umount.c'; then $(CYGPATH_W) 'umount.c'; else $(CYGPATH_W) '$(srcdir)/umount.c'; fi`
 
-strace-uname.obj: uname.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-uname.obj -MD -MP -MF $(DEPDIR)/strace-uname.Tpo -c -o strace-uname.obj `if test -f 'uname.c'; then $(CYGPATH_W) 'uname.c'; else $(CYGPATH_W) '$(srcdir)/uname.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-uname.Tpo $(DEPDIR)/strace-uname.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='uname.c' object='strace-uname.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-uname.o: uname.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-uname.o -MD -MP -MF $(DEPDIR)/libstrace_a-uname.Tpo -c -o libstrace_a-uname.o `test -f 'uname.c' || echo '$(srcdir)/'`uname.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-uname.Tpo $(DEPDIR)/libstrace_a-uname.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='uname.c' object='libstrace_a-uname.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-uname.obj `if test -f 'uname.c'; then $(CYGPATH_W) 'uname.c'; else $(CYGPATH_W) '$(srcdir)/uname.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-uname.o `test -f 'uname.c' || echo '$(srcdir)/'`uname.c
 
-strace-userfaultfd.o: userfaultfd.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-userfaultfd.o -MD -MP -MF $(DEPDIR)/strace-userfaultfd.Tpo -c -o strace-userfaultfd.o `test -f 'userfaultfd.c' || echo '$(srcdir)/'`userfaultfd.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-userfaultfd.Tpo $(DEPDIR)/strace-userfaultfd.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='userfaultfd.c' object='strace-userfaultfd.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-uname.obj: uname.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-uname.obj -MD -MP -MF $(DEPDIR)/libstrace_a-uname.Tpo -c -o libstrace_a-uname.obj `if test -f 'uname.c'; then $(CYGPATH_W) 'uname.c'; else $(CYGPATH_W) '$(srcdir)/uname.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-uname.Tpo $(DEPDIR)/libstrace_a-uname.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='uname.c' object='libstrace_a-uname.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-userfaultfd.o `test -f 'userfaultfd.c' || echo '$(srcdir)/'`userfaultfd.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-uname.obj `if test -f 'uname.c'; then $(CYGPATH_W) 'uname.c'; else $(CYGPATH_W) '$(srcdir)/uname.c'; fi`
 
-strace-userfaultfd.obj: userfaultfd.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-userfaultfd.obj -MD -MP -MF $(DEPDIR)/strace-userfaultfd.Tpo -c -o strace-userfaultfd.obj `if test -f 'userfaultfd.c'; then $(CYGPATH_W) 'userfaultfd.c'; else $(CYGPATH_W) '$(srcdir)/userfaultfd.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-userfaultfd.Tpo $(DEPDIR)/strace-userfaultfd.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='userfaultfd.c' object='strace-userfaultfd.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-upeek.o: upeek.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-upeek.o -MD -MP -MF $(DEPDIR)/libstrace_a-upeek.Tpo -c -o libstrace_a-upeek.o `test -f 'upeek.c' || echo '$(srcdir)/'`upeek.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-upeek.Tpo $(DEPDIR)/libstrace_a-upeek.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='upeek.c' object='libstrace_a-upeek.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-userfaultfd.obj `if test -f 'userfaultfd.c'; then $(CYGPATH_W) 'userfaultfd.c'; else $(CYGPATH_W) '$(srcdir)/userfaultfd.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-upeek.o `test -f 'upeek.c' || echo '$(srcdir)/'`upeek.c
 
-strace-ustat.o: ustat.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-ustat.o -MD -MP -MF $(DEPDIR)/strace-ustat.Tpo -c -o strace-ustat.o `test -f 'ustat.c' || echo '$(srcdir)/'`ustat.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-ustat.Tpo $(DEPDIR)/strace-ustat.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ustat.c' object='strace-ustat.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-upeek.obj: upeek.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-upeek.obj -MD -MP -MF $(DEPDIR)/libstrace_a-upeek.Tpo -c -o libstrace_a-upeek.obj `if test -f 'upeek.c'; then $(CYGPATH_W) 'upeek.c'; else $(CYGPATH_W) '$(srcdir)/upeek.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-upeek.Tpo $(DEPDIR)/libstrace_a-upeek.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='upeek.c' object='libstrace_a-upeek.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-upeek.obj `if test -f 'upeek.c'; then $(CYGPATH_W) 'upeek.c'; else $(CYGPATH_W) '$(srcdir)/upeek.c'; fi`
+
+libstrace_a-upoke.o: upoke.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-upoke.o -MD -MP -MF $(DEPDIR)/libstrace_a-upoke.Tpo -c -o libstrace_a-upoke.o `test -f 'upoke.c' || echo '$(srcdir)/'`upoke.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-upoke.Tpo $(DEPDIR)/libstrace_a-upoke.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='upoke.c' object='libstrace_a-upoke.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-ustat.o `test -f 'ustat.c' || echo '$(srcdir)/'`ustat.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-upoke.o `test -f 'upoke.c' || echo '$(srcdir)/'`upoke.c
 
-strace-ustat.obj: ustat.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-ustat.obj -MD -MP -MF $(DEPDIR)/strace-ustat.Tpo -c -o strace-ustat.obj `if test -f 'ustat.c'; then $(CYGPATH_W) 'ustat.c'; else $(CYGPATH_W) '$(srcdir)/ustat.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-ustat.Tpo $(DEPDIR)/strace-ustat.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ustat.c' object='strace-ustat.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-upoke.obj: upoke.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-upoke.obj -MD -MP -MF $(DEPDIR)/libstrace_a-upoke.Tpo -c -o libstrace_a-upoke.obj `if test -f 'upoke.c'; then $(CYGPATH_W) 'upoke.c'; else $(CYGPATH_W) '$(srcdir)/upoke.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-upoke.Tpo $(DEPDIR)/libstrace_a-upoke.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='upoke.c' object='libstrace_a-upoke.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-ustat.obj `if test -f 'ustat.c'; then $(CYGPATH_W) 'ustat.c'; else $(CYGPATH_W) '$(srcdir)/ustat.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-upoke.obj `if test -f 'upoke.c'; then $(CYGPATH_W) 'upoke.c'; else $(CYGPATH_W) '$(srcdir)/upoke.c'; fi`
 
-strace-util.o: util.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-util.o -MD -MP -MF $(DEPDIR)/strace-util.Tpo -c -o strace-util.o `test -f 'util.c' || echo '$(srcdir)/'`util.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-util.Tpo $(DEPDIR)/strace-util.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='util.c' object='strace-util.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-userfaultfd.o: userfaultfd.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-userfaultfd.o -MD -MP -MF $(DEPDIR)/libstrace_a-userfaultfd.Tpo -c -o libstrace_a-userfaultfd.o `test -f 'userfaultfd.c' || echo '$(srcdir)/'`userfaultfd.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-userfaultfd.Tpo $(DEPDIR)/libstrace_a-userfaultfd.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='userfaultfd.c' object='libstrace_a-userfaultfd.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-util.o `test -f 'util.c' || echo '$(srcdir)/'`util.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-userfaultfd.o `test -f 'userfaultfd.c' || echo '$(srcdir)/'`userfaultfd.c
 
-strace-util.obj: util.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-util.obj -MD -MP -MF $(DEPDIR)/strace-util.Tpo -c -o strace-util.obj `if test -f 'util.c'; then $(CYGPATH_W) 'util.c'; else $(CYGPATH_W) '$(srcdir)/util.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-util.Tpo $(DEPDIR)/strace-util.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='util.c' object='strace-util.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-userfaultfd.obj: userfaultfd.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-userfaultfd.obj -MD -MP -MF $(DEPDIR)/libstrace_a-userfaultfd.Tpo -c -o libstrace_a-userfaultfd.obj `if test -f 'userfaultfd.c'; then $(CYGPATH_W) 'userfaultfd.c'; else $(CYGPATH_W) '$(srcdir)/userfaultfd.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-userfaultfd.Tpo $(DEPDIR)/libstrace_a-userfaultfd.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='userfaultfd.c' object='libstrace_a-userfaultfd.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-util.obj `if test -f 'util.c'; then $(CYGPATH_W) 'util.c'; else $(CYGPATH_W) '$(srcdir)/util.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-userfaultfd.obj `if test -f 'userfaultfd.c'; then $(CYGPATH_W) 'userfaultfd.c'; else $(CYGPATH_W) '$(srcdir)/userfaultfd.c'; fi`
 
-strace-utime.o: utime.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-utime.o -MD -MP -MF $(DEPDIR)/strace-utime.Tpo -c -o strace-utime.o `test -f 'utime.c' || echo '$(srcdir)/'`utime.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-utime.Tpo $(DEPDIR)/strace-utime.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='utime.c' object='strace-utime.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-ustat.o: ustat.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-ustat.o -MD -MP -MF $(DEPDIR)/libstrace_a-ustat.Tpo -c -o libstrace_a-ustat.o `test -f 'ustat.c' || echo '$(srcdir)/'`ustat.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-ustat.Tpo $(DEPDIR)/libstrace_a-ustat.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ustat.c' object='libstrace_a-ustat.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-utime.o `test -f 'utime.c' || echo '$(srcdir)/'`utime.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-ustat.o `test -f 'ustat.c' || echo '$(srcdir)/'`ustat.c
 
-strace-utime.obj: utime.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-utime.obj -MD -MP -MF $(DEPDIR)/strace-utime.Tpo -c -o strace-utime.obj `if test -f 'utime.c'; then $(CYGPATH_W) 'utime.c'; else $(CYGPATH_W) '$(srcdir)/utime.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-utime.Tpo $(DEPDIR)/strace-utime.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='utime.c' object='strace-utime.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-ustat.obj: ustat.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-ustat.obj -MD -MP -MF $(DEPDIR)/libstrace_a-ustat.Tpo -c -o libstrace_a-ustat.obj `if test -f 'ustat.c'; then $(CYGPATH_W) 'ustat.c'; else $(CYGPATH_W) '$(srcdir)/ustat.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-ustat.Tpo $(DEPDIR)/libstrace_a-ustat.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ustat.c' object='libstrace_a-ustat.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-utime.obj `if test -f 'utime.c'; then $(CYGPATH_W) 'utime.c'; else $(CYGPATH_W) '$(srcdir)/utime.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-ustat.obj `if test -f 'ustat.c'; then $(CYGPATH_W) 'ustat.c'; else $(CYGPATH_W) '$(srcdir)/ustat.c'; fi`
 
-strace-utimes.o: utimes.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-utimes.o -MD -MP -MF $(DEPDIR)/strace-utimes.Tpo -c -o strace-utimes.o `test -f 'utimes.c' || echo '$(srcdir)/'`utimes.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-utimes.Tpo $(DEPDIR)/strace-utimes.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='utimes.c' object='strace-utimes.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-util.o: util.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-util.o -MD -MP -MF $(DEPDIR)/libstrace_a-util.Tpo -c -o libstrace_a-util.o `test -f 'util.c' || echo '$(srcdir)/'`util.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-util.Tpo $(DEPDIR)/libstrace_a-util.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='util.c' object='libstrace_a-util.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-utimes.o `test -f 'utimes.c' || echo '$(srcdir)/'`utimes.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-util.o `test -f 'util.c' || echo '$(srcdir)/'`util.c
 
-strace-utimes.obj: utimes.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-utimes.obj -MD -MP -MF $(DEPDIR)/strace-utimes.Tpo -c -o strace-utimes.obj `if test -f 'utimes.c'; then $(CYGPATH_W) 'utimes.c'; else $(CYGPATH_W) '$(srcdir)/utimes.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-utimes.Tpo $(DEPDIR)/strace-utimes.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='utimes.c' object='strace-utimes.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-util.obj: util.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-util.obj -MD -MP -MF $(DEPDIR)/libstrace_a-util.Tpo -c -o libstrace_a-util.obj `if test -f 'util.c'; then $(CYGPATH_W) 'util.c'; else $(CYGPATH_W) '$(srcdir)/util.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-util.Tpo $(DEPDIR)/libstrace_a-util.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='util.c' object='libstrace_a-util.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-utimes.obj `if test -f 'utimes.c'; then $(CYGPATH_W) 'utimes.c'; else $(CYGPATH_W) '$(srcdir)/utimes.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-util.obj `if test -f 'util.c'; then $(CYGPATH_W) 'util.c'; else $(CYGPATH_W) '$(srcdir)/util.c'; fi`
 
-strace-v4l2.o: v4l2.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-v4l2.o -MD -MP -MF $(DEPDIR)/strace-v4l2.Tpo -c -o strace-v4l2.o `test -f 'v4l2.c' || echo '$(srcdir)/'`v4l2.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-v4l2.Tpo $(DEPDIR)/strace-v4l2.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='v4l2.c' object='strace-v4l2.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-utime.o: utime.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-utime.o -MD -MP -MF $(DEPDIR)/libstrace_a-utime.Tpo -c -o libstrace_a-utime.o `test -f 'utime.c' || echo '$(srcdir)/'`utime.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-utime.Tpo $(DEPDIR)/libstrace_a-utime.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='utime.c' object='libstrace_a-utime.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-v4l2.o `test -f 'v4l2.c' || echo '$(srcdir)/'`v4l2.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-utime.o `test -f 'utime.c' || echo '$(srcdir)/'`utime.c
 
-strace-v4l2.obj: v4l2.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-v4l2.obj -MD -MP -MF $(DEPDIR)/strace-v4l2.Tpo -c -o strace-v4l2.obj `if test -f 'v4l2.c'; then $(CYGPATH_W) 'v4l2.c'; else $(CYGPATH_W) '$(srcdir)/v4l2.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-v4l2.Tpo $(DEPDIR)/strace-v4l2.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='v4l2.c' object='strace-v4l2.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-utime.obj: utime.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-utime.obj -MD -MP -MF $(DEPDIR)/libstrace_a-utime.Tpo -c -o libstrace_a-utime.obj `if test -f 'utime.c'; then $(CYGPATH_W) 'utime.c'; else $(CYGPATH_W) '$(srcdir)/utime.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-utime.Tpo $(DEPDIR)/libstrace_a-utime.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='utime.c' object='libstrace_a-utime.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-v4l2.obj `if test -f 'v4l2.c'; then $(CYGPATH_W) 'v4l2.c'; else $(CYGPATH_W) '$(srcdir)/v4l2.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-utime.obj `if test -f 'utime.c'; then $(CYGPATH_W) 'utime.c'; else $(CYGPATH_W) '$(srcdir)/utime.c'; fi`
 
-strace-wait.o: wait.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-wait.o -MD -MP -MF $(DEPDIR)/strace-wait.Tpo -c -o strace-wait.o `test -f 'wait.c' || echo '$(srcdir)/'`wait.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-wait.Tpo $(DEPDIR)/strace-wait.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='wait.c' object='strace-wait.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-utimes.o: utimes.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-utimes.o -MD -MP -MF $(DEPDIR)/libstrace_a-utimes.Tpo -c -o libstrace_a-utimes.o `test -f 'utimes.c' || echo '$(srcdir)/'`utimes.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-utimes.Tpo $(DEPDIR)/libstrace_a-utimes.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='utimes.c' object='libstrace_a-utimes.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-wait.o `test -f 'wait.c' || echo '$(srcdir)/'`wait.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-utimes.o `test -f 'utimes.c' || echo '$(srcdir)/'`utimes.c
 
-strace-wait.obj: wait.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-wait.obj -MD -MP -MF $(DEPDIR)/strace-wait.Tpo -c -o strace-wait.obj `if test -f 'wait.c'; then $(CYGPATH_W) 'wait.c'; else $(CYGPATH_W) '$(srcdir)/wait.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-wait.Tpo $(DEPDIR)/strace-wait.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='wait.c' object='strace-wait.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-utimes.obj: utimes.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-utimes.obj -MD -MP -MF $(DEPDIR)/libstrace_a-utimes.Tpo -c -o libstrace_a-utimes.obj `if test -f 'utimes.c'; then $(CYGPATH_W) 'utimes.c'; else $(CYGPATH_W) '$(srcdir)/utimes.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-utimes.Tpo $(DEPDIR)/libstrace_a-utimes.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='utimes.c' object='libstrace_a-utimes.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-wait.obj `if test -f 'wait.c'; then $(CYGPATH_W) 'wait.c'; else $(CYGPATH_W) '$(srcdir)/wait.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-utimes.obj `if test -f 'utimes.c'; then $(CYGPATH_W) 'utimes.c'; else $(CYGPATH_W) '$(srcdir)/utimes.c'; fi`
 
-strace-xattr.o: xattr.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-xattr.o -MD -MP -MF $(DEPDIR)/strace-xattr.Tpo -c -o strace-xattr.o `test -f 'xattr.c' || echo '$(srcdir)/'`xattr.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-xattr.Tpo $(DEPDIR)/strace-xattr.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='xattr.c' object='strace-xattr.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-v4l2.o: v4l2.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-v4l2.o -MD -MP -MF $(DEPDIR)/libstrace_a-v4l2.Tpo -c -o libstrace_a-v4l2.o `test -f 'v4l2.c' || echo '$(srcdir)/'`v4l2.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-v4l2.Tpo $(DEPDIR)/libstrace_a-v4l2.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='v4l2.c' object='libstrace_a-v4l2.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-xattr.o `test -f 'xattr.c' || echo '$(srcdir)/'`xattr.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-v4l2.o `test -f 'v4l2.c' || echo '$(srcdir)/'`v4l2.c
 
-strace-xattr.obj: xattr.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-xattr.obj -MD -MP -MF $(DEPDIR)/strace-xattr.Tpo -c -o strace-xattr.obj `if test -f 'xattr.c'; then $(CYGPATH_W) 'xattr.c'; else $(CYGPATH_W) '$(srcdir)/xattr.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-xattr.Tpo $(DEPDIR)/strace-xattr.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='xattr.c' object='strace-xattr.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-v4l2.obj: v4l2.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-v4l2.obj -MD -MP -MF $(DEPDIR)/libstrace_a-v4l2.Tpo -c -o libstrace_a-v4l2.obj `if test -f 'v4l2.c'; then $(CYGPATH_W) 'v4l2.c'; else $(CYGPATH_W) '$(srcdir)/v4l2.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-v4l2.Tpo $(DEPDIR)/libstrace_a-v4l2.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='v4l2.c' object='libstrace_a-v4l2.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-xattr.obj `if test -f 'xattr.c'; then $(CYGPATH_W) 'xattr.c'; else $(CYGPATH_W) '$(srcdir)/xattr.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-v4l2.obj `if test -f 'v4l2.c'; then $(CYGPATH_W) 'v4l2.c'; else $(CYGPATH_W) '$(srcdir)/v4l2.c'; fi`
 
-strace-xlat.o: xlat.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-xlat.o -MD -MP -MF $(DEPDIR)/strace-xlat.Tpo -c -o strace-xlat.o `test -f 'xlat.c' || echo '$(srcdir)/'`xlat.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-xlat.Tpo $(DEPDIR)/strace-xlat.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='xlat.c' object='strace-xlat.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-wait.o: wait.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-wait.o -MD -MP -MF $(DEPDIR)/libstrace_a-wait.Tpo -c -o libstrace_a-wait.o `test -f 'wait.c' || echo '$(srcdir)/'`wait.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-wait.Tpo $(DEPDIR)/libstrace_a-wait.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='wait.c' object='libstrace_a-wait.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-xlat.o `test -f 'xlat.c' || echo '$(srcdir)/'`xlat.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-wait.o `test -f 'wait.c' || echo '$(srcdir)/'`wait.c
 
-strace-xlat.obj: xlat.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-xlat.obj -MD -MP -MF $(DEPDIR)/strace-xlat.Tpo -c -o strace-xlat.obj `if test -f 'xlat.c'; then $(CYGPATH_W) 'xlat.c'; else $(CYGPATH_W) '$(srcdir)/xlat.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-xlat.Tpo $(DEPDIR)/strace-xlat.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='xlat.c' object='strace-xlat.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-wait.obj: wait.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-wait.obj -MD -MP -MF $(DEPDIR)/libstrace_a-wait.Tpo -c -o libstrace_a-wait.obj `if test -f 'wait.c'; then $(CYGPATH_W) 'wait.c'; else $(CYGPATH_W) '$(srcdir)/wait.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-wait.Tpo $(DEPDIR)/libstrace_a-wait.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='wait.c' object='libstrace_a-wait.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-xlat.obj `if test -f 'xlat.c'; then $(CYGPATH_W) 'xlat.c'; else $(CYGPATH_W) '$(srcdir)/xlat.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-wait.obj `if test -f 'wait.c'; then $(CYGPATH_W) 'wait.c'; else $(CYGPATH_W) '$(srcdir)/wait.c'; fi`
 
-strace-xmalloc.o: xmalloc.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-xmalloc.o -MD -MP -MF $(DEPDIR)/strace-xmalloc.Tpo -c -o strace-xmalloc.o `test -f 'xmalloc.c' || echo '$(srcdir)/'`xmalloc.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-xmalloc.Tpo $(DEPDIR)/strace-xmalloc.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='xmalloc.c' object='strace-xmalloc.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-watchdog_ioctl.o: watchdog_ioctl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-watchdog_ioctl.o -MD -MP -MF $(DEPDIR)/libstrace_a-watchdog_ioctl.Tpo -c -o libstrace_a-watchdog_ioctl.o `test -f 'watchdog_ioctl.c' || echo '$(srcdir)/'`watchdog_ioctl.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-watchdog_ioctl.Tpo $(DEPDIR)/libstrace_a-watchdog_ioctl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='watchdog_ioctl.c' object='libstrace_a-watchdog_ioctl.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-xmalloc.o `test -f 'xmalloc.c' || echo '$(srcdir)/'`xmalloc.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-watchdog_ioctl.o `test -f 'watchdog_ioctl.c' || echo '$(srcdir)/'`watchdog_ioctl.c
 
-strace-xmalloc.obj: xmalloc.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-xmalloc.obj -MD -MP -MF $(DEPDIR)/strace-xmalloc.Tpo -c -o strace-xmalloc.obj `if test -f 'xmalloc.c'; then $(CYGPATH_W) 'xmalloc.c'; else $(CYGPATH_W) '$(srcdir)/xmalloc.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-xmalloc.Tpo $(DEPDIR)/strace-xmalloc.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='xmalloc.c' object='strace-xmalloc.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-watchdog_ioctl.obj: watchdog_ioctl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-watchdog_ioctl.obj -MD -MP -MF $(DEPDIR)/libstrace_a-watchdog_ioctl.Tpo -c -o libstrace_a-watchdog_ioctl.obj `if test -f 'watchdog_ioctl.c'; then $(CYGPATH_W) 'watchdog_ioctl.c'; else $(CYGPATH_W) '$(srcdir)/watchdog_ioctl.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-watchdog_ioctl.Tpo $(DEPDIR)/libstrace_a-watchdog_ioctl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='watchdog_ioctl.c' object='libstrace_a-watchdog_ioctl.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-xmalloc.obj `if test -f 'xmalloc.c'; then $(CYGPATH_W) 'xmalloc.c'; else $(CYGPATH_W) '$(srcdir)/xmalloc.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-watchdog_ioctl.obj `if test -f 'watchdog_ioctl.c'; then $(CYGPATH_W) 'watchdog_ioctl.c'; else $(CYGPATH_W) '$(srcdir)/watchdog_ioctl.c'; fi`
 
-strace-bpf_attr_check.o: bpf_attr_check.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-bpf_attr_check.o -MD -MP -MF $(DEPDIR)/strace-bpf_attr_check.Tpo -c -o strace-bpf_attr_check.o `test -f 'bpf_attr_check.c' || echo '$(srcdir)/'`bpf_attr_check.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-bpf_attr_check.Tpo $(DEPDIR)/strace-bpf_attr_check.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='bpf_attr_check.c' object='strace-bpf_attr_check.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-xattr.o: xattr.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-xattr.o -MD -MP -MF $(DEPDIR)/libstrace_a-xattr.Tpo -c -o libstrace_a-xattr.o `test -f 'xattr.c' || echo '$(srcdir)/'`xattr.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-xattr.Tpo $(DEPDIR)/libstrace_a-xattr.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='xattr.c' object='libstrace_a-xattr.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-bpf_attr_check.o `test -f 'bpf_attr_check.c' || echo '$(srcdir)/'`bpf_attr_check.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-xattr.o `test -f 'xattr.c' || echo '$(srcdir)/'`xattr.c
 
-strace-bpf_attr_check.obj: bpf_attr_check.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-bpf_attr_check.obj -MD -MP -MF $(DEPDIR)/strace-bpf_attr_check.Tpo -c -o strace-bpf_attr_check.obj `if test -f 'bpf_attr_check.c'; then $(CYGPATH_W) 'bpf_attr_check.c'; else $(CYGPATH_W) '$(srcdir)/bpf_attr_check.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-bpf_attr_check.Tpo $(DEPDIR)/strace-bpf_attr_check.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='bpf_attr_check.c' object='strace-bpf_attr_check.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-xattr.obj: xattr.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-xattr.obj -MD -MP -MF $(DEPDIR)/libstrace_a-xattr.Tpo -c -o libstrace_a-xattr.obj `if test -f 'xattr.c'; then $(CYGPATH_W) 'xattr.c'; else $(CYGPATH_W) '$(srcdir)/xattr.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-xattr.Tpo $(DEPDIR)/libstrace_a-xattr.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='xattr.c' object='libstrace_a-xattr.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-bpf_attr_check.obj `if test -f 'bpf_attr_check.c'; then $(CYGPATH_W) 'bpf_attr_check.c'; else $(CYGPATH_W) '$(srcdir)/bpf_attr_check.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-xattr.obj `if test -f 'xattr.c'; then $(CYGPATH_W) 'xattr.c'; else $(CYGPATH_W) '$(srcdir)/xattr.c'; fi`
 
-strace-unwind.o: unwind.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-unwind.o -MD -MP -MF $(DEPDIR)/strace-unwind.Tpo -c -o strace-unwind.o `test -f 'unwind.c' || echo '$(srcdir)/'`unwind.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-unwind.Tpo $(DEPDIR)/strace-unwind.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='unwind.c' object='strace-unwind.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-xgetdents.o: xgetdents.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-xgetdents.o -MD -MP -MF $(DEPDIR)/libstrace_a-xgetdents.Tpo -c -o libstrace_a-xgetdents.o `test -f 'xgetdents.c' || echo '$(srcdir)/'`xgetdents.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-xgetdents.Tpo $(DEPDIR)/libstrace_a-xgetdents.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='xgetdents.c' object='libstrace_a-xgetdents.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-unwind.o `test -f 'unwind.c' || echo '$(srcdir)/'`unwind.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-xgetdents.o `test -f 'xgetdents.c' || echo '$(srcdir)/'`xgetdents.c
 
-strace-unwind.obj: unwind.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-unwind.obj -MD -MP -MF $(DEPDIR)/strace-unwind.Tpo -c -o strace-unwind.obj `if test -f 'unwind.c'; then $(CYGPATH_W) 'unwind.c'; else $(CYGPATH_W) '$(srcdir)/unwind.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-unwind.Tpo $(DEPDIR)/strace-unwind.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='unwind.c' object='strace-unwind.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-xgetdents.obj: xgetdents.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-xgetdents.obj -MD -MP -MF $(DEPDIR)/libstrace_a-xgetdents.Tpo -c -o libstrace_a-xgetdents.obj `if test -f 'xgetdents.c'; then $(CYGPATH_W) 'xgetdents.c'; else $(CYGPATH_W) '$(srcdir)/xgetdents.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-xgetdents.Tpo $(DEPDIR)/libstrace_a-xgetdents.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='xgetdents.c' object='libstrace_a-xgetdents.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-unwind.obj `if test -f 'unwind.c'; then $(CYGPATH_W) 'unwind.c'; else $(CYGPATH_W) '$(srcdir)/unwind.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-xgetdents.obj `if test -f 'xgetdents.c'; then $(CYGPATH_W) 'xgetdents.c'; else $(CYGPATH_W) '$(srcdir)/xgetdents.c'; fi`
 
-strace-unwind-libdw.o: unwind-libdw.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-unwind-libdw.o -MD -MP -MF $(DEPDIR)/strace-unwind-libdw.Tpo -c -o strace-unwind-libdw.o `test -f 'unwind-libdw.c' || echo '$(srcdir)/'`unwind-libdw.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-unwind-libdw.Tpo $(DEPDIR)/strace-unwind-libdw.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='unwind-libdw.c' object='strace-unwind-libdw.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-xlat.o: xlat.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-xlat.o -MD -MP -MF $(DEPDIR)/libstrace_a-xlat.Tpo -c -o libstrace_a-xlat.o `test -f 'xlat.c' || echo '$(srcdir)/'`xlat.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-xlat.Tpo $(DEPDIR)/libstrace_a-xlat.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='xlat.c' object='libstrace_a-xlat.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-unwind-libdw.o `test -f 'unwind-libdw.c' || echo '$(srcdir)/'`unwind-libdw.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-xlat.o `test -f 'xlat.c' || echo '$(srcdir)/'`xlat.c
 
-strace-unwind-libdw.obj: unwind-libdw.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-unwind-libdw.obj -MD -MP -MF $(DEPDIR)/strace-unwind-libdw.Tpo -c -o strace-unwind-libdw.obj `if test -f 'unwind-libdw.c'; then $(CYGPATH_W) 'unwind-libdw.c'; else $(CYGPATH_W) '$(srcdir)/unwind-libdw.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-unwind-libdw.Tpo $(DEPDIR)/strace-unwind-libdw.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='unwind-libdw.c' object='strace-unwind-libdw.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-xlat.obj: xlat.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-xlat.obj -MD -MP -MF $(DEPDIR)/libstrace_a-xlat.Tpo -c -o libstrace_a-xlat.obj `if test -f 'xlat.c'; then $(CYGPATH_W) 'xlat.c'; else $(CYGPATH_W) '$(srcdir)/xlat.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-xlat.Tpo $(DEPDIR)/libstrace_a-xlat.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='xlat.c' object='libstrace_a-xlat.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-unwind-libdw.obj `if test -f 'unwind-libdw.c'; then $(CYGPATH_W) 'unwind-libdw.c'; else $(CYGPATH_W) '$(srcdir)/unwind-libdw.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-xlat.obj `if test -f 'xlat.c'; then $(CYGPATH_W) 'xlat.c'; else $(CYGPATH_W) '$(srcdir)/xlat.c'; fi`
 
-strace-unwind-libunwind.o: unwind-libunwind.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-unwind-libunwind.o -MD -MP -MF $(DEPDIR)/strace-unwind-libunwind.Tpo -c -o strace-unwind-libunwind.o `test -f 'unwind-libunwind.c' || echo '$(srcdir)/'`unwind-libunwind.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-unwind-libunwind.Tpo $(DEPDIR)/strace-unwind-libunwind.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='unwind-libunwind.c' object='strace-unwind-libunwind.o' libtool=no @AMDEPBACKSLASH@
+libstrace_a-xmalloc.o: xmalloc.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-xmalloc.o -MD -MP -MF $(DEPDIR)/libstrace_a-xmalloc.Tpo -c -o libstrace_a-xmalloc.o `test -f 'xmalloc.c' || echo '$(srcdir)/'`xmalloc.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-xmalloc.Tpo $(DEPDIR)/libstrace_a-xmalloc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='xmalloc.c' object='libstrace_a-xmalloc.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-unwind-libunwind.o `test -f 'unwind-libunwind.c' || echo '$(srcdir)/'`unwind-libunwind.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-xmalloc.o `test -f 'xmalloc.c' || echo '$(srcdir)/'`xmalloc.c
 
-strace-unwind-libunwind.obj: unwind-libunwind.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-unwind-libunwind.obj -MD -MP -MF $(DEPDIR)/strace-unwind-libunwind.Tpo -c -o strace-unwind-libunwind.obj `if test -f 'unwind-libunwind.c'; then $(CYGPATH_W) 'unwind-libunwind.c'; else $(CYGPATH_W) '$(srcdir)/unwind-libunwind.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-unwind-libunwind.Tpo $(DEPDIR)/strace-unwind-libunwind.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='unwind-libunwind.c' object='strace-unwind-libunwind.obj' libtool=no @AMDEPBACKSLASH@
+libstrace_a-xmalloc.obj: xmalloc.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-xmalloc.obj -MD -MP -MF $(DEPDIR)/libstrace_a-xmalloc.Tpo -c -o libstrace_a-xmalloc.obj `if test -f 'xmalloc.c'; then $(CYGPATH_W) 'xmalloc.c'; else $(CYGPATH_W) '$(srcdir)/xmalloc.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-xmalloc.Tpo $(DEPDIR)/libstrace_a-xmalloc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='xmalloc.c' object='libstrace_a-xmalloc.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-unwind-libunwind.obj `if test -f 'unwind-libunwind.c'; then $(CYGPATH_W) 'unwind-libunwind.c'; else $(CYGPATH_W) '$(srcdir)/unwind-libunwind.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-xmalloc.obj `if test -f 'xmalloc.c'; then $(CYGPATH_W) 'xmalloc.c'; else $(CYGPATH_W) '$(srcdir)/xmalloc.c'; fi`
+
+libstrace_a-bpf_attr_check.o: bpf_attr_check.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-bpf_attr_check.o -MD -MP -MF $(DEPDIR)/libstrace_a-bpf_attr_check.Tpo -c -o libstrace_a-bpf_attr_check.o `test -f 'bpf_attr_check.c' || echo '$(srcdir)/'`bpf_attr_check.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-bpf_attr_check.Tpo $(DEPDIR)/libstrace_a-bpf_attr_check.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='bpf_attr_check.c' object='libstrace_a-bpf_attr_check.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-bpf_attr_check.o `test -f 'bpf_attr_check.c' || echo '$(srcdir)/'`bpf_attr_check.c
+
+libstrace_a-bpf_attr_check.obj: bpf_attr_check.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-bpf_attr_check.obj -MD -MP -MF $(DEPDIR)/libstrace_a-bpf_attr_check.Tpo -c -o libstrace_a-bpf_attr_check.obj `if test -f 'bpf_attr_check.c'; then $(CYGPATH_W) 'bpf_attr_check.c'; else $(CYGPATH_W) '$(srcdir)/bpf_attr_check.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-bpf_attr_check.Tpo $(DEPDIR)/libstrace_a-bpf_attr_check.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='bpf_attr_check.c' object='libstrace_a-bpf_attr_check.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-bpf_attr_check.obj `if test -f 'bpf_attr_check.c'; then $(CYGPATH_W) 'bpf_attr_check.c'; else $(CYGPATH_W) '$(srcdir)/bpf_attr_check.c'; fi`
+
+types/libstrace_a-check-btrfs.o: types/check-btrfs.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT types/libstrace_a-check-btrfs.o -MD -MP -MF types/$(DEPDIR)/libstrace_a-check-btrfs.Tpo -c -o types/libstrace_a-check-btrfs.o `test -f 'types/check-btrfs.c' || echo '$(srcdir)/'`types/check-btrfs.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) types/$(DEPDIR)/libstrace_a-check-btrfs.Tpo types/$(DEPDIR)/libstrace_a-check-btrfs.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='types/check-btrfs.c' object='types/libstrace_a-check-btrfs.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o types/libstrace_a-check-btrfs.o `test -f 'types/check-btrfs.c' || echo '$(srcdir)/'`types/check-btrfs.c
+
+types/libstrace_a-check-btrfs.obj: types/check-btrfs.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT types/libstrace_a-check-btrfs.obj -MD -MP -MF types/$(DEPDIR)/libstrace_a-check-btrfs.Tpo -c -o types/libstrace_a-check-btrfs.obj `if test -f 'types/check-btrfs.c'; then $(CYGPATH_W) 'types/check-btrfs.c'; else $(CYGPATH_W) '$(srcdir)/types/check-btrfs.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) types/$(DEPDIR)/libstrace_a-check-btrfs.Tpo types/$(DEPDIR)/libstrace_a-check-btrfs.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='types/check-btrfs.c' object='types/libstrace_a-check-btrfs.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o types/libstrace_a-check-btrfs.obj `if test -f 'types/check-btrfs.c'; then $(CYGPATH_W) 'types/check-btrfs.c'; else $(CYGPATH_W) '$(srcdir)/types/check-btrfs.c'; fi`
+
+types/libstrace_a-check-cryptouser.o: types/check-cryptouser.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT types/libstrace_a-check-cryptouser.o -MD -MP -MF types/$(DEPDIR)/libstrace_a-check-cryptouser.Tpo -c -o types/libstrace_a-check-cryptouser.o `test -f 'types/check-cryptouser.c' || echo '$(srcdir)/'`types/check-cryptouser.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) types/$(DEPDIR)/libstrace_a-check-cryptouser.Tpo types/$(DEPDIR)/libstrace_a-check-cryptouser.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='types/check-cryptouser.c' object='types/libstrace_a-check-cryptouser.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o types/libstrace_a-check-cryptouser.o `test -f 'types/check-cryptouser.c' || echo '$(srcdir)/'`types/check-cryptouser.c
+
+types/libstrace_a-check-cryptouser.obj: types/check-cryptouser.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT types/libstrace_a-check-cryptouser.obj -MD -MP -MF types/$(DEPDIR)/libstrace_a-check-cryptouser.Tpo -c -o types/libstrace_a-check-cryptouser.obj `if test -f 'types/check-cryptouser.c'; then $(CYGPATH_W) 'types/check-cryptouser.c'; else $(CYGPATH_W) '$(srcdir)/types/check-cryptouser.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) types/$(DEPDIR)/libstrace_a-check-cryptouser.Tpo types/$(DEPDIR)/libstrace_a-check-cryptouser.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='types/check-cryptouser.c' object='types/libstrace_a-check-cryptouser.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o types/libstrace_a-check-cryptouser.obj `if test -f 'types/check-cryptouser.c'; then $(CYGPATH_W) 'types/check-cryptouser.c'; else $(CYGPATH_W) '$(srcdir)/types/check-cryptouser.c'; fi`
+
+types/libstrace_a-check-evdev.o: types/check-evdev.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT types/libstrace_a-check-evdev.o -MD -MP -MF types/$(DEPDIR)/libstrace_a-check-evdev.Tpo -c -o types/libstrace_a-check-evdev.o `test -f 'types/check-evdev.c' || echo '$(srcdir)/'`types/check-evdev.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) types/$(DEPDIR)/libstrace_a-check-evdev.Tpo types/$(DEPDIR)/libstrace_a-check-evdev.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='types/check-evdev.c' object='types/libstrace_a-check-evdev.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o types/libstrace_a-check-evdev.o `test -f 'types/check-evdev.c' || echo '$(srcdir)/'`types/check-evdev.c
+
+types/libstrace_a-check-evdev.obj: types/check-evdev.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT types/libstrace_a-check-evdev.obj -MD -MP -MF types/$(DEPDIR)/libstrace_a-check-evdev.Tpo -c -o types/libstrace_a-check-evdev.obj `if test -f 'types/check-evdev.c'; then $(CYGPATH_W) 'types/check-evdev.c'; else $(CYGPATH_W) '$(srcdir)/types/check-evdev.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) types/$(DEPDIR)/libstrace_a-check-evdev.Tpo types/$(DEPDIR)/libstrace_a-check-evdev.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='types/check-evdev.c' object='types/libstrace_a-check-evdev.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o types/libstrace_a-check-evdev.obj `if test -f 'types/check-evdev.c'; then $(CYGPATH_W) 'types/check-evdev.c'; else $(CYGPATH_W) '$(srcdir)/types/check-evdev.c'; fi`
+
+types/libstrace_a-check-io_uring.o: types/check-io_uring.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT types/libstrace_a-check-io_uring.o -MD -MP -MF types/$(DEPDIR)/libstrace_a-check-io_uring.Tpo -c -o types/libstrace_a-check-io_uring.o `test -f 'types/check-io_uring.c' || echo '$(srcdir)/'`types/check-io_uring.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) types/$(DEPDIR)/libstrace_a-check-io_uring.Tpo types/$(DEPDIR)/libstrace_a-check-io_uring.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='types/check-io_uring.c' object='types/libstrace_a-check-io_uring.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o types/libstrace_a-check-io_uring.o `test -f 'types/check-io_uring.c' || echo '$(srcdir)/'`types/check-io_uring.c
+
+types/libstrace_a-check-io_uring.obj: types/check-io_uring.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT types/libstrace_a-check-io_uring.obj -MD -MP -MF types/$(DEPDIR)/libstrace_a-check-io_uring.Tpo -c -o types/libstrace_a-check-io_uring.obj `if test -f 'types/check-io_uring.c'; then $(CYGPATH_W) 'types/check-io_uring.c'; else $(CYGPATH_W) '$(srcdir)/types/check-io_uring.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) types/$(DEPDIR)/libstrace_a-check-io_uring.Tpo types/$(DEPDIR)/libstrace_a-check-io_uring.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='types/check-io_uring.c' object='types/libstrace_a-check-io_uring.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o types/libstrace_a-check-io_uring.obj `if test -f 'types/check-io_uring.c'; then $(CYGPATH_W) 'types/check-io_uring.c'; else $(CYGPATH_W) '$(srcdir)/types/check-io_uring.c'; fi`
+
+types/libstrace_a-check-loop.o: types/check-loop.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT types/libstrace_a-check-loop.o -MD -MP -MF types/$(DEPDIR)/libstrace_a-check-loop.Tpo -c -o types/libstrace_a-check-loop.o `test -f 'types/check-loop.c' || echo '$(srcdir)/'`types/check-loop.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) types/$(DEPDIR)/libstrace_a-check-loop.Tpo types/$(DEPDIR)/libstrace_a-check-loop.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='types/check-loop.c' object='types/libstrace_a-check-loop.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o types/libstrace_a-check-loop.o `test -f 'types/check-loop.c' || echo '$(srcdir)/'`types/check-loop.c
+
+types/libstrace_a-check-loop.obj: types/check-loop.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT types/libstrace_a-check-loop.obj -MD -MP -MF types/$(DEPDIR)/libstrace_a-check-loop.Tpo -c -o types/libstrace_a-check-loop.obj `if test -f 'types/check-loop.c'; then $(CYGPATH_W) 'types/check-loop.c'; else $(CYGPATH_W) '$(srcdir)/types/check-loop.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) types/$(DEPDIR)/libstrace_a-check-loop.Tpo types/$(DEPDIR)/libstrace_a-check-loop.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='types/check-loop.c' object='types/libstrace_a-check-loop.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o types/libstrace_a-check-loop.obj `if test -f 'types/check-loop.c'; then $(CYGPATH_W) 'types/check-loop.c'; else $(CYGPATH_W) '$(srcdir)/types/check-loop.c'; fi`
+
+types/libstrace_a-check-openat2.o: types/check-openat2.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT types/libstrace_a-check-openat2.o -MD -MP -MF types/$(DEPDIR)/libstrace_a-check-openat2.Tpo -c -o types/libstrace_a-check-openat2.o `test -f 'types/check-openat2.c' || echo '$(srcdir)/'`types/check-openat2.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) types/$(DEPDIR)/libstrace_a-check-openat2.Tpo types/$(DEPDIR)/libstrace_a-check-openat2.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='types/check-openat2.c' object='types/libstrace_a-check-openat2.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o types/libstrace_a-check-openat2.o `test -f 'types/check-openat2.c' || echo '$(srcdir)/'`types/check-openat2.c
+
+types/libstrace_a-check-openat2.obj: types/check-openat2.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT types/libstrace_a-check-openat2.obj -MD -MP -MF types/$(DEPDIR)/libstrace_a-check-openat2.Tpo -c -o types/libstrace_a-check-openat2.obj `if test -f 'types/check-openat2.c'; then $(CYGPATH_W) 'types/check-openat2.c'; else $(CYGPATH_W) '$(srcdir)/types/check-openat2.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) types/$(DEPDIR)/libstrace_a-check-openat2.Tpo types/$(DEPDIR)/libstrace_a-check-openat2.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='types/check-openat2.c' object='types/libstrace_a-check-openat2.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o types/libstrace_a-check-openat2.obj `if test -f 'types/check-openat2.c'; then $(CYGPATH_W) 'types/check-openat2.c'; else $(CYGPATH_W) '$(srcdir)/types/check-openat2.c'; fi`
+
+types/libstrace_a-check-rtnl_link.o: types/check-rtnl_link.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT types/libstrace_a-check-rtnl_link.o -MD -MP -MF types/$(DEPDIR)/libstrace_a-check-rtnl_link.Tpo -c -o types/libstrace_a-check-rtnl_link.o `test -f 'types/check-rtnl_link.c' || echo '$(srcdir)/'`types/check-rtnl_link.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) types/$(DEPDIR)/libstrace_a-check-rtnl_link.Tpo types/$(DEPDIR)/libstrace_a-check-rtnl_link.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='types/check-rtnl_link.c' object='types/libstrace_a-check-rtnl_link.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o types/libstrace_a-check-rtnl_link.o `test -f 'types/check-rtnl_link.c' || echo '$(srcdir)/'`types/check-rtnl_link.c
+
+types/libstrace_a-check-rtnl_link.obj: types/check-rtnl_link.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT types/libstrace_a-check-rtnl_link.obj -MD -MP -MF types/$(DEPDIR)/libstrace_a-check-rtnl_link.Tpo -c -o types/libstrace_a-check-rtnl_link.obj `if test -f 'types/check-rtnl_link.c'; then $(CYGPATH_W) 'types/check-rtnl_link.c'; else $(CYGPATH_W) '$(srcdir)/types/check-rtnl_link.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) types/$(DEPDIR)/libstrace_a-check-rtnl_link.Tpo types/$(DEPDIR)/libstrace_a-check-rtnl_link.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='types/check-rtnl_link.c' object='types/libstrace_a-check-rtnl_link.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o types/libstrace_a-check-rtnl_link.obj `if test -f 'types/check-rtnl_link.c'; then $(CYGPATH_W) 'types/check-rtnl_link.c'; else $(CYGPATH_W) '$(srcdir)/types/check-rtnl_link.c'; fi`
+
+types/libstrace_a-check-rtnl_mdb.o: types/check-rtnl_mdb.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT types/libstrace_a-check-rtnl_mdb.o -MD -MP -MF types/$(DEPDIR)/libstrace_a-check-rtnl_mdb.Tpo -c -o types/libstrace_a-check-rtnl_mdb.o `test -f 'types/check-rtnl_mdb.c' || echo '$(srcdir)/'`types/check-rtnl_mdb.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) types/$(DEPDIR)/libstrace_a-check-rtnl_mdb.Tpo types/$(DEPDIR)/libstrace_a-check-rtnl_mdb.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='types/check-rtnl_mdb.c' object='types/libstrace_a-check-rtnl_mdb.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o types/libstrace_a-check-rtnl_mdb.o `test -f 'types/check-rtnl_mdb.c' || echo '$(srcdir)/'`types/check-rtnl_mdb.c
+
+types/libstrace_a-check-rtnl_mdb.obj: types/check-rtnl_mdb.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT types/libstrace_a-check-rtnl_mdb.obj -MD -MP -MF types/$(DEPDIR)/libstrace_a-check-rtnl_mdb.Tpo -c -o types/libstrace_a-check-rtnl_mdb.obj `if test -f 'types/check-rtnl_mdb.c'; then $(CYGPATH_W) 'types/check-rtnl_mdb.c'; else $(CYGPATH_W) '$(srcdir)/types/check-rtnl_mdb.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) types/$(DEPDIR)/libstrace_a-check-rtnl_mdb.Tpo types/$(DEPDIR)/libstrace_a-check-rtnl_mdb.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='types/check-rtnl_mdb.c' object='types/libstrace_a-check-rtnl_mdb.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o types/libstrace_a-check-rtnl_mdb.obj `if test -f 'types/check-rtnl_mdb.c'; then $(CYGPATH_W) 'types/check-rtnl_mdb.c'; else $(CYGPATH_W) '$(srcdir)/types/check-rtnl_mdb.c'; fi`
+
+types/libstrace_a-check-rtnl_neightbl.o: types/check-rtnl_neightbl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT types/libstrace_a-check-rtnl_neightbl.o -MD -MP -MF types/$(DEPDIR)/libstrace_a-check-rtnl_neightbl.Tpo -c -o types/libstrace_a-check-rtnl_neightbl.o `test -f 'types/check-rtnl_neightbl.c' || echo '$(srcdir)/'`types/check-rtnl_neightbl.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) types/$(DEPDIR)/libstrace_a-check-rtnl_neightbl.Tpo types/$(DEPDIR)/libstrace_a-check-rtnl_neightbl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='types/check-rtnl_neightbl.c' object='types/libstrace_a-check-rtnl_neightbl.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o types/libstrace_a-check-rtnl_neightbl.o `test -f 'types/check-rtnl_neightbl.c' || echo '$(srcdir)/'`types/check-rtnl_neightbl.c
+
+types/libstrace_a-check-rtnl_neightbl.obj: types/check-rtnl_neightbl.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT types/libstrace_a-check-rtnl_neightbl.obj -MD -MP -MF types/$(DEPDIR)/libstrace_a-check-rtnl_neightbl.Tpo -c -o types/libstrace_a-check-rtnl_neightbl.obj `if test -f 'types/check-rtnl_neightbl.c'; then $(CYGPATH_W) 'types/check-rtnl_neightbl.c'; else $(CYGPATH_W) '$(srcdir)/types/check-rtnl_neightbl.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) types/$(DEPDIR)/libstrace_a-check-rtnl_neightbl.Tpo types/$(DEPDIR)/libstrace_a-check-rtnl_neightbl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='types/check-rtnl_neightbl.c' object='types/libstrace_a-check-rtnl_neightbl.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o types/libstrace_a-check-rtnl_neightbl.obj `if test -f 'types/check-rtnl_neightbl.c'; then $(CYGPATH_W) 'types/check-rtnl_neightbl.c'; else $(CYGPATH_W) '$(srcdir)/types/check-rtnl_neightbl.c'; fi`
+
+types/libstrace_a-check-rtnl_route.o: types/check-rtnl_route.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT types/libstrace_a-check-rtnl_route.o -MD -MP -MF types/$(DEPDIR)/libstrace_a-check-rtnl_route.Tpo -c -o types/libstrace_a-check-rtnl_route.o `test -f 'types/check-rtnl_route.c' || echo '$(srcdir)/'`types/check-rtnl_route.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) types/$(DEPDIR)/libstrace_a-check-rtnl_route.Tpo types/$(DEPDIR)/libstrace_a-check-rtnl_route.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='types/check-rtnl_route.c' object='types/libstrace_a-check-rtnl_route.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o types/libstrace_a-check-rtnl_route.o `test -f 'types/check-rtnl_route.c' || echo '$(srcdir)/'`types/check-rtnl_route.c
+
+types/libstrace_a-check-rtnl_route.obj: types/check-rtnl_route.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT types/libstrace_a-check-rtnl_route.obj -MD -MP -MF types/$(DEPDIR)/libstrace_a-check-rtnl_route.Tpo -c -o types/libstrace_a-check-rtnl_route.obj `if test -f 'types/check-rtnl_route.c'; then $(CYGPATH_W) 'types/check-rtnl_route.c'; else $(CYGPATH_W) '$(srcdir)/types/check-rtnl_route.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) types/$(DEPDIR)/libstrace_a-check-rtnl_route.Tpo types/$(DEPDIR)/libstrace_a-check-rtnl_route.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='types/check-rtnl_route.c' object='types/libstrace_a-check-rtnl_route.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o types/libstrace_a-check-rtnl_route.obj `if test -f 'types/check-rtnl_route.c'; then $(CYGPATH_W) 'types/check-rtnl_route.c'; else $(CYGPATH_W) '$(srcdir)/types/check-rtnl_route.c'; fi`
+
+types/libstrace_a-check-tee.o: types/check-tee.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT types/libstrace_a-check-tee.o -MD -MP -MF types/$(DEPDIR)/libstrace_a-check-tee.Tpo -c -o types/libstrace_a-check-tee.o `test -f 'types/check-tee.c' || echo '$(srcdir)/'`types/check-tee.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) types/$(DEPDIR)/libstrace_a-check-tee.Tpo types/$(DEPDIR)/libstrace_a-check-tee.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='types/check-tee.c' object='types/libstrace_a-check-tee.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o types/libstrace_a-check-tee.o `test -f 'types/check-tee.c' || echo '$(srcdir)/'`types/check-tee.c
+
+types/libstrace_a-check-tee.obj: types/check-tee.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT types/libstrace_a-check-tee.obj -MD -MP -MF types/$(DEPDIR)/libstrace_a-check-tee.Tpo -c -o types/libstrace_a-check-tee.obj `if test -f 'types/check-tee.c'; then $(CYGPATH_W) 'types/check-tee.c'; else $(CYGPATH_W) '$(srcdir)/types/check-tee.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) types/$(DEPDIR)/libstrace_a-check-tee.Tpo types/$(DEPDIR)/libstrace_a-check-tee.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='types/check-tee.c' object='types/libstrace_a-check-tee.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o types/libstrace_a-check-tee.obj `if test -f 'types/check-tee.c'; then $(CYGPATH_W) 'types/check-tee.c'; else $(CYGPATH_W) '$(srcdir)/types/check-tee.c'; fi`
+
+types/libstrace_a-check-v4l2.o: types/check-v4l2.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT types/libstrace_a-check-v4l2.o -MD -MP -MF types/$(DEPDIR)/libstrace_a-check-v4l2.Tpo -c -o types/libstrace_a-check-v4l2.o `test -f 'types/check-v4l2.c' || echo '$(srcdir)/'`types/check-v4l2.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) types/$(DEPDIR)/libstrace_a-check-v4l2.Tpo types/$(DEPDIR)/libstrace_a-check-v4l2.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='types/check-v4l2.c' object='types/libstrace_a-check-v4l2.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o types/libstrace_a-check-v4l2.o `test -f 'types/check-v4l2.c' || echo '$(srcdir)/'`types/check-v4l2.c
+
+types/libstrace_a-check-v4l2.obj: types/check-v4l2.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT types/libstrace_a-check-v4l2.obj -MD -MP -MF types/$(DEPDIR)/libstrace_a-check-v4l2.Tpo -c -o types/libstrace_a-check-v4l2.obj `if test -f 'types/check-v4l2.c'; then $(CYGPATH_W) 'types/check-v4l2.c'; else $(CYGPATH_W) '$(srcdir)/types/check-v4l2.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) types/$(DEPDIR)/libstrace_a-check-v4l2.Tpo types/$(DEPDIR)/libstrace_a-check-v4l2.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='types/check-v4l2.c' object='types/libstrace_a-check-v4l2.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o types/libstrace_a-check-v4l2.obj `if test -f 'types/check-v4l2.c'; then $(CYGPATH_W) 'types/check-v4l2.c'; else $(CYGPATH_W) '$(srcdir)/types/check-v4l2.c'; fi`
+
+libstrace_a-unwind.o: unwind.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-unwind.o -MD -MP -MF $(DEPDIR)/libstrace_a-unwind.Tpo -c -o libstrace_a-unwind.o `test -f 'unwind.c' || echo '$(srcdir)/'`unwind.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-unwind.Tpo $(DEPDIR)/libstrace_a-unwind.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='unwind.c' object='libstrace_a-unwind.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-unwind.o `test -f 'unwind.c' || echo '$(srcdir)/'`unwind.c
+
+libstrace_a-unwind.obj: unwind.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-unwind.obj -MD -MP -MF $(DEPDIR)/libstrace_a-unwind.Tpo -c -o libstrace_a-unwind.obj `if test -f 'unwind.c'; then $(CYGPATH_W) 'unwind.c'; else $(CYGPATH_W) '$(srcdir)/unwind.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-unwind.Tpo $(DEPDIR)/libstrace_a-unwind.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='unwind.c' object='libstrace_a-unwind.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-unwind.obj `if test -f 'unwind.c'; then $(CYGPATH_W) 'unwind.c'; else $(CYGPATH_W) '$(srcdir)/unwind.c'; fi`
+
+libstrace_a-unwind-libdw.o: unwind-libdw.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-unwind-libdw.o -MD -MP -MF $(DEPDIR)/libstrace_a-unwind-libdw.Tpo -c -o libstrace_a-unwind-libdw.o `test -f 'unwind-libdw.c' || echo '$(srcdir)/'`unwind-libdw.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-unwind-libdw.Tpo $(DEPDIR)/libstrace_a-unwind-libdw.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='unwind-libdw.c' object='libstrace_a-unwind-libdw.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-unwind-libdw.o `test -f 'unwind-libdw.c' || echo '$(srcdir)/'`unwind-libdw.c
+
+libstrace_a-unwind-libdw.obj: unwind-libdw.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-unwind-libdw.obj -MD -MP -MF $(DEPDIR)/libstrace_a-unwind-libdw.Tpo -c -o libstrace_a-unwind-libdw.obj `if test -f 'unwind-libdw.c'; then $(CYGPATH_W) 'unwind-libdw.c'; else $(CYGPATH_W) '$(srcdir)/unwind-libdw.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-unwind-libdw.Tpo $(DEPDIR)/libstrace_a-unwind-libdw.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='unwind-libdw.c' object='libstrace_a-unwind-libdw.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-unwind-libdw.obj `if test -f 'unwind-libdw.c'; then $(CYGPATH_W) 'unwind-libdw.c'; else $(CYGPATH_W) '$(srcdir)/unwind-libdw.c'; fi`
+
+libstrace_a-unwind-libunwind.o: unwind-libunwind.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-unwind-libunwind.o -MD -MP -MF $(DEPDIR)/libstrace_a-unwind-libunwind.Tpo -c -o libstrace_a-unwind-libunwind.o `test -f 'unwind-libunwind.c' || echo '$(srcdir)/'`unwind-libunwind.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-unwind-libunwind.Tpo $(DEPDIR)/libstrace_a-unwind-libunwind.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='unwind-libunwind.c' object='libstrace_a-unwind-libunwind.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-unwind-libunwind.o `test -f 'unwind-libunwind.c' || echo '$(srcdir)/'`unwind-libunwind.c
+
+libstrace_a-unwind-libunwind.obj: unwind-libunwind.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-unwind-libunwind.obj -MD -MP -MF $(DEPDIR)/libstrace_a-unwind-libunwind.Tpo -c -o libstrace_a-unwind-libunwind.obj `if test -f 'unwind-libunwind.c'; then $(CYGPATH_W) 'unwind-libunwind.c'; else $(CYGPATH_W) '$(srcdir)/unwind-libunwind.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-unwind-libunwind.Tpo $(DEPDIR)/libstrace_a-unwind-libunwind.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='unwind-libunwind.c' object='libstrace_a-unwind-libunwind.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-unwind-libunwind.obj `if test -f 'unwind-libunwind.c'; then $(CYGPATH_W) 'unwind-libunwind.c'; else $(CYGPATH_W) '$(srcdir)/unwind-libunwind.c'; fi`
+
+strace-strace.o: strace.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-strace.o -MD -MP -MF $(DEPDIR)/strace-strace.Tpo -c -o strace-strace.o `test -f 'strace.c' || echo '$(srcdir)/'`strace.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-strace.Tpo $(DEPDIR)/strace-strace.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='strace.c' object='strace-strace.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-strace.o `test -f 'strace.c' || echo '$(srcdir)/'`strace.c
+
+strace-strace.obj: strace.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-strace.obj -MD -MP -MF $(DEPDIR)/strace-strace.Tpo -c -o strace-strace.obj `if test -f 'strace.c'; then $(CYGPATH_W) 'strace.c'; else $(CYGPATH_W) '$(srcdir)/strace.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/strace-strace.Tpo $(DEPDIR)/strace-strace.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='strace.c' object='strace-strace.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-strace.obj `if test -f 'strace.c'; then $(CYGPATH_W) 'strace.c'; else $(CYGPATH_W) '$(srcdir)/strace.c'; fi`
 install-man1: $(man_MANS)
        @$(NORMAL_INSTALL)
        @list1=''; \
@@ -7469,6 +8250,10 @@ dist-xz: distdir
        tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
        $(am__post_remove_distdir)
 
+dist-zstd: distdir
+       tardir=$(distdir) && $(am__tar) | zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst
+       $(am__post_remove_distdir)
+
 dist-tarZ: distdir
        @echo WARNING: "Support for distribution archives compressed with" \
                       "legacy program 'compress' is deprecated." >&2
@@ -7511,6 +8296,8 @@ distcheck: dist
          eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\
        *.zip*) \
          unzip $(distdir).zip ;;\
+       *.tar.zst*) \
+         zstd -dc $(distdir).tar.zst | $(am__untar) ;;\
        esac
        chmod -R a-w $(distdir)
        chmod u+w $(distdir)
@@ -7526,7 +8313,7 @@ distcheck: dist
            $(DISTCHECK_CONFIGURE_FLAGS) \
            --srcdir=../.. --prefix="$$dc_install_base" \
          && $(MAKE) $(AM_MAKEFLAGS) \
-         && $(MAKE) $(AM_MAKEFLAGS) dvi \
+         && $(MAKE) $(AM_MAKEFLAGS) $(AM_DISTCHECK_DVI_TARGET) \
          && $(MAKE) $(AM_MAKEFLAGS) check \
          && $(MAKE) $(AM_MAKEFLAGS) install \
          && $(MAKE) $(AM_MAKEFLAGS) installcheck \
@@ -7614,6 +8401,8 @@ clean-generic:
 distclean-generic:
        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
        -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+       -rm -f types/$(DEPDIR)/$(am__dirstamp)
+       -rm -f types/$(am__dirstamp)
        -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -7662,6 +8451,7 @@ distclean: distclean-recursive
        -rm -f ./$(DEPDIR)/libmpers_m32_a-fetch_struct_xfs_quotastat.Po
        -rm -f ./$(DEPDIR)/libmpers_m32_a-hdio.Po
        -rm -f ./$(DEPDIR)/libmpers_m32_a-ipc_msgctl.Po
+       -rm -f ./$(DEPDIR)/libmpers_m32_a-ipc_semctl.Po
        -rm -f ./$(DEPDIR)/libmpers_m32_a-ipc_shmctl.Po
        -rm -f ./$(DEPDIR)/libmpers_m32_a-loop.Po
        -rm -f ./$(DEPDIR)/libmpers_m32_a-mtd.Po
@@ -7673,7 +8463,6 @@ distclean: distclean-recursive
        -rm -f ./$(DEPDIR)/libmpers_m32_a-print_sg_req_info.Po
        -rm -f ./$(DEPDIR)/libmpers_m32_a-print_sigevent.Po
        -rm -f ./$(DEPDIR)/libmpers_m32_a-print_time.Po
-       -rm -f ./$(DEPDIR)/libmpers_m32_a-print_timespec.Po
        -rm -f ./$(DEPDIR)/libmpers_m32_a-print_timeval.Po
        -rm -f ./$(DEPDIR)/libmpers_m32_a-printrusage.Po
        -rm -f ./$(DEPDIR)/libmpers_m32_a-printsiginfo.Po
@@ -7702,6 +8491,7 @@ distclean: distclean-recursive
        -rm -f ./$(DEPDIR)/libmpers_mx32_a-fetch_struct_xfs_quotastat.Po
        -rm -f ./$(DEPDIR)/libmpers_mx32_a-hdio.Po
        -rm -f ./$(DEPDIR)/libmpers_mx32_a-ipc_msgctl.Po
+       -rm -f ./$(DEPDIR)/libmpers_mx32_a-ipc_semctl.Po
        -rm -f ./$(DEPDIR)/libmpers_mx32_a-ipc_shmctl.Po
        -rm -f ./$(DEPDIR)/libmpers_mx32_a-loop.Po
        -rm -f ./$(DEPDIR)/libmpers_mx32_a-mtd.Po
@@ -7713,7 +8503,6 @@ distclean: distclean-recursive
        -rm -f ./$(DEPDIR)/libmpers_mx32_a-print_sg_req_info.Po
        -rm -f ./$(DEPDIR)/libmpers_mx32_a-print_sigevent.Po
        -rm -f ./$(DEPDIR)/libmpers_mx32_a-print_time.Po
-       -rm -f ./$(DEPDIR)/libmpers_mx32_a-print_timespec.Po
        -rm -f ./$(DEPDIR)/libmpers_mx32_a-print_timeval.Po
        -rm -f ./$(DEPDIR)/libmpers_mx32_a-printrusage.Po
        -rm -f ./$(DEPDIR)/libmpers_mx32_a-printsiginfo.Po
@@ -7727,245 +8516,276 @@ distclean: distclean-recursive
        -rm -f ./$(DEPDIR)/libmpers_mx32_a-ustat.Po
        -rm -f ./$(DEPDIR)/libmpers_mx32_a-utime.Po
        -rm -f ./$(DEPDIR)/libmpers_mx32_a-v4l2.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-access.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-affinity.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-aio.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-alpha.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-basic_filters.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-bind.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-bjm.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-block.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-bpf.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-bpf_attr_check.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-bpf_filter.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-bpf_seccomp_filter.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-bpf_sock_filter.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-btrfs.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-cacheflush.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-capability.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-chdir.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-chmod.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-clone.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-close_range.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-copy_file_range.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-count.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-delay.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-desc.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-dirent.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-dirent64.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-dirent_types.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-dm.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-dup.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-dyxlat.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-epoll.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-error_prints.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-evdev.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-evdev_mpers.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-eventfd.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-execve.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-fadvise.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-fallocate.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-fanotify.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-fchownat.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-fcntl.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-fetch_bpf_fprog.Po
        -rm -f ./$(DEPDIR)/libstrace_a-fetch_indirect_syscall_args.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-fetch_struct_flock.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-fetch_struct_keyctl_kdf_params.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-fetch_struct_mmsghdr.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-fetch_struct_msghdr.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-fetch_struct_stat.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-fetch_struct_stat64.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-fetch_struct_statfs.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-fetch_struct_xfs_quotastat.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-file_handle.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-file_ioctl.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-filter_qualify.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-filter_seccomp.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-flock.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-fs_x_ioctl.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-fsconfig.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-fsmount.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-fsopen.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-fspick.Po
        -rm -f ./$(DEPDIR)/libstrace_a-fstatfs.Po
        -rm -f ./$(DEPDIR)/libstrace_a-fstatfs64.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-futex.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-get_personality.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-get_robust_list.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-getcpu.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-getcwd.Po
        -rm -f ./$(DEPDIR)/libstrace_a-getpagesize.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-getpid.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-getrandom.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-hdio.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-hostname.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-inotify.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-inotify_ioctl.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-io.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-io_uring.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-ioctl.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-ioperm.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-iopl.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-ioprio.Po
        -rm -f ./$(DEPDIR)/libstrace_a-ipc.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-ipc_msg.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-ipc_msgctl.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-ipc_sem.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-ipc_semctl.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-ipc_shm.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-ipc_shmctl.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-kcmp.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-kexec.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-keyctl.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-kvm.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-ldt.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-link.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-listen.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-lookup_dcookie.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-loop.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-lseek.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-mem.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-membarrier.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-memfd_create.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-mknod.Po
        -rm -f ./$(DEPDIR)/libstrace_a-mmap_cache.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-mmap_notify.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-mmsghdr.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-mount.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-move_mount.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-mq.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-msghdr.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-mtd.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-nbd_ioctl.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-net.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-netlink.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-netlink_crypto.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-netlink_inet_diag.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-netlink_kobject_uevent.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-netlink_netfilter.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-netlink_netlink_diag.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-netlink_packet_diag.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-netlink_route.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-netlink_selinux.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-netlink_smc_diag.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-netlink_sock_diag.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-netlink_unix_diag.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-nlattr.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-nsfs.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-numa.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-number_set.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-oldstat.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-open.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-open_tree.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-or1k_atomic.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-pathtrace.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-perf.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-perf_ioctl.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-personality.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-pidfd_getfd.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-pidfd_open.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-pidns.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-pkeys.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-poll.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-prctl.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-print_aio_sigset.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-print_dev_t.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-print_group_req.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-print_ifindex.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-print_instruction_pointer.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-print_kernel_version.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-print_mac.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-print_mq_attr.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-print_msgbuf.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-print_sg_req_info.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-print_sigevent.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-print_statfs.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-print_struct_stat.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-print_syscall_number.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-print_time.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-print_timespec32.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-print_timespec64.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-print_timeval.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-print_timeval64.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-print_timex.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-printmode.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-printrusage.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-printsiginfo.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-process.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-process_vm.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-ptp.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-ptrace_syscall_info.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-quota.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-random_ioctl.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-readahead.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-readlink.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-reboot.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-renameat.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-resource.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-retval.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-riscv.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-rt_sigframe.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-rt_sigreturn.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-rtc.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-rtnl_addr.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-rtnl_addrlabel.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-rtnl_dcb.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-rtnl_link.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-rtnl_mdb.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-rtnl_neigh.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-rtnl_neightbl.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-rtnl_netconf.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-rtnl_nsid.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-rtnl_route.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-rtnl_rule.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-rtnl_tc.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-rtnl_tc_action.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-s390.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-sched.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-scsi.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-seccomp.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-sendfile.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-sg_io_v3.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-sg_io_v4.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-shutdown.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-sigaltstack.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-signal.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-signalfd.Po
        -rm -f ./$(DEPDIR)/libstrace_a-sigreturn.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-sock.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-sockaddr.Po
        -rm -f ./$(DEPDIR)/libstrace_a-socketcall.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-socketutils.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-sparc.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-sram_alloc.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-stage_output.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-stat.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-stat64.Po
        -rm -f ./$(DEPDIR)/libstrace_a-statfs.Po
        -rm -f ./$(DEPDIR)/libstrace_a-statfs64.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-statx.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-string_to_uint.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-swapon.Po
        -rm -f ./$(DEPDIR)/libstrace_a-sync_file_range.Po
        -rm -f ./$(DEPDIR)/libstrace_a-sync_file_range2.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-syscall.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-sysctl.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-sysinfo.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-syslog.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-sysmips.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-tee.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-term.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-time.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-times.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-trie.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-truncate.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-ubi.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-ucopy.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-uid.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-uid16.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-umask.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-umount.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-uname.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-unwind-libdw.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-unwind-libunwind.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-unwind.Po
        -rm -f ./$(DEPDIR)/libstrace_a-upeek.Po
        -rm -f ./$(DEPDIR)/libstrace_a-upoke.Po
-       -rm -f ./$(DEPDIR)/strace-access.Po
-       -rm -f ./$(DEPDIR)/strace-affinity.Po
-       -rm -f ./$(DEPDIR)/strace-aio.Po
-       -rm -f ./$(DEPDIR)/strace-alpha.Po
-       -rm -f ./$(DEPDIR)/strace-basic_filters.Po
-       -rm -f ./$(DEPDIR)/strace-bind.Po
-       -rm -f ./$(DEPDIR)/strace-bjm.Po
-       -rm -f ./$(DEPDIR)/strace-block.Po
-       -rm -f ./$(DEPDIR)/strace-bpf.Po
-       -rm -f ./$(DEPDIR)/strace-bpf_attr_check.Po
-       -rm -f ./$(DEPDIR)/strace-bpf_filter.Po
-       -rm -f ./$(DEPDIR)/strace-bpf_seccomp_filter.Po
-       -rm -f ./$(DEPDIR)/strace-bpf_sock_filter.Po
-       -rm -f ./$(DEPDIR)/strace-btrfs.Po
-       -rm -f ./$(DEPDIR)/strace-cacheflush.Po
-       -rm -f ./$(DEPDIR)/strace-capability.Po
-       -rm -f ./$(DEPDIR)/strace-chdir.Po
-       -rm -f ./$(DEPDIR)/strace-chmod.Po
-       -rm -f ./$(DEPDIR)/strace-clone.Po
-       -rm -f ./$(DEPDIR)/strace-copy_file_range.Po
-       -rm -f ./$(DEPDIR)/strace-count.Po
-       -rm -f ./$(DEPDIR)/strace-delay.Po
-       -rm -f ./$(DEPDIR)/strace-desc.Po
-       -rm -f ./$(DEPDIR)/strace-dirent.Po
-       -rm -f ./$(DEPDIR)/strace-dirent64.Po
-       -rm -f ./$(DEPDIR)/strace-dm.Po
-       -rm -f ./$(DEPDIR)/strace-dyxlat.Po
-       -rm -f ./$(DEPDIR)/strace-epoll.Po
-       -rm -f ./$(DEPDIR)/strace-error_prints.Po
-       -rm -f ./$(DEPDIR)/strace-evdev.Po
-       -rm -f ./$(DEPDIR)/strace-evdev_mpers.Po
-       -rm -f ./$(DEPDIR)/strace-eventfd.Po
-       -rm -f ./$(DEPDIR)/strace-execve.Po
-       -rm -f ./$(DEPDIR)/strace-fadvise.Po
-       -rm -f ./$(DEPDIR)/strace-fallocate.Po
-       -rm -f ./$(DEPDIR)/strace-fanotify.Po
-       -rm -f ./$(DEPDIR)/strace-fchownat.Po
-       -rm -f ./$(DEPDIR)/strace-fcntl.Po
-       -rm -f ./$(DEPDIR)/strace-fetch_bpf_fprog.Po
-       -rm -f ./$(DEPDIR)/strace-fetch_struct_flock.Po
-       -rm -f ./$(DEPDIR)/strace-fetch_struct_keyctl_kdf_params.Po
-       -rm -f ./$(DEPDIR)/strace-fetch_struct_mmsghdr.Po
-       -rm -f ./$(DEPDIR)/strace-fetch_struct_msghdr.Po
-       -rm -f ./$(DEPDIR)/strace-fetch_struct_stat.Po
-       -rm -f ./$(DEPDIR)/strace-fetch_struct_stat64.Po
-       -rm -f ./$(DEPDIR)/strace-fetch_struct_statfs.Po
-       -rm -f ./$(DEPDIR)/strace-fetch_struct_xfs_quotastat.Po
-       -rm -f ./$(DEPDIR)/strace-file_handle.Po
-       -rm -f ./$(DEPDIR)/strace-file_ioctl.Po
-       -rm -f ./$(DEPDIR)/strace-filter_qualify.Po
-       -rm -f ./$(DEPDIR)/strace-flock.Po
-       -rm -f ./$(DEPDIR)/strace-fs_x_ioctl.Po
-       -rm -f ./$(DEPDIR)/strace-futex.Po
-       -rm -f ./$(DEPDIR)/strace-get_personality.Po
-       -rm -f ./$(DEPDIR)/strace-get_robust_list.Po
-       -rm -f ./$(DEPDIR)/strace-getcpu.Po
-       -rm -f ./$(DEPDIR)/strace-getcwd.Po
-       -rm -f ./$(DEPDIR)/strace-getrandom.Po
-       -rm -f ./$(DEPDIR)/strace-hdio.Po
-       -rm -f ./$(DEPDIR)/strace-hostname.Po
-       -rm -f ./$(DEPDIR)/strace-inotify.Po
-       -rm -f ./$(DEPDIR)/strace-inotify_ioctl.Po
-       -rm -f ./$(DEPDIR)/strace-io.Po
-       -rm -f ./$(DEPDIR)/strace-io_uring.Po
-       -rm -f ./$(DEPDIR)/strace-ioctl.Po
-       -rm -f ./$(DEPDIR)/strace-ioperm.Po
-       -rm -f ./$(DEPDIR)/strace-iopl.Po
-       -rm -f ./$(DEPDIR)/strace-ioprio.Po
-       -rm -f ./$(DEPDIR)/strace-ipc_msg.Po
-       -rm -f ./$(DEPDIR)/strace-ipc_msgctl.Po
-       -rm -f ./$(DEPDIR)/strace-ipc_sem.Po
-       -rm -f ./$(DEPDIR)/strace-ipc_shm.Po
-       -rm -f ./$(DEPDIR)/strace-ipc_shmctl.Po
-       -rm -f ./$(DEPDIR)/strace-kcmp.Po
-       -rm -f ./$(DEPDIR)/strace-kexec.Po
-       -rm -f ./$(DEPDIR)/strace-keyctl.Po
-       -rm -f ./$(DEPDIR)/strace-kvm.Po
-       -rm -f ./$(DEPDIR)/strace-ldt.Po
-       -rm -f ./$(DEPDIR)/strace-link.Po
-       -rm -f ./$(DEPDIR)/strace-listen.Po
-       -rm -f ./$(DEPDIR)/strace-lookup_dcookie.Po
-       -rm -f ./$(DEPDIR)/strace-loop.Po
-       -rm -f ./$(DEPDIR)/strace-lseek.Po
-       -rm -f ./$(DEPDIR)/strace-mem.Po
-       -rm -f ./$(DEPDIR)/strace-membarrier.Po
-       -rm -f ./$(DEPDIR)/strace-memfd_create.Po
-       -rm -f ./$(DEPDIR)/strace-mknod.Po
-       -rm -f ./$(DEPDIR)/strace-mmap_notify.Po
-       -rm -f ./$(DEPDIR)/strace-mmsghdr.Po
-       -rm -f ./$(DEPDIR)/strace-mount.Po
-       -rm -f ./$(DEPDIR)/strace-mq.Po
-       -rm -f ./$(DEPDIR)/strace-msghdr.Po
-       -rm -f ./$(DEPDIR)/strace-mtd.Po
-       -rm -f ./$(DEPDIR)/strace-nbd_ioctl.Po
-       -rm -f ./$(DEPDIR)/strace-net.Po
-       -rm -f ./$(DEPDIR)/strace-netlink.Po
-       -rm -f ./$(DEPDIR)/strace-netlink_crypto.Po
-       -rm -f ./$(DEPDIR)/strace-netlink_inet_diag.Po
-       -rm -f ./$(DEPDIR)/strace-netlink_kobject_uevent.Po
-       -rm -f ./$(DEPDIR)/strace-netlink_netfilter.Po
-       -rm -f ./$(DEPDIR)/strace-netlink_netlink_diag.Po
-       -rm -f ./$(DEPDIR)/strace-netlink_packet_diag.Po
-       -rm -f ./$(DEPDIR)/strace-netlink_route.Po
-       -rm -f ./$(DEPDIR)/strace-netlink_selinux.Po
-       -rm -f ./$(DEPDIR)/strace-netlink_smc_diag.Po
-       -rm -f ./$(DEPDIR)/strace-netlink_sock_diag.Po
-       -rm -f ./$(DEPDIR)/strace-netlink_unix_diag.Po
-       -rm -f ./$(DEPDIR)/strace-nlattr.Po
-       -rm -f ./$(DEPDIR)/strace-nsfs.Po
-       -rm -f ./$(DEPDIR)/strace-numa.Po
-       -rm -f ./$(DEPDIR)/strace-number_set.Po
-       -rm -f ./$(DEPDIR)/strace-oldstat.Po
-       -rm -f ./$(DEPDIR)/strace-open.Po
-       -rm -f ./$(DEPDIR)/strace-or1k_atomic.Po
-       -rm -f ./$(DEPDIR)/strace-pathtrace.Po
-       -rm -f ./$(DEPDIR)/strace-perf.Po
-       -rm -f ./$(DEPDIR)/strace-perf_ioctl.Po
-       -rm -f ./$(DEPDIR)/strace-personality.Po
-       -rm -f ./$(DEPDIR)/strace-pkeys.Po
-       -rm -f ./$(DEPDIR)/strace-poll.Po
-       -rm -f ./$(DEPDIR)/strace-prctl.Po
-       -rm -f ./$(DEPDIR)/strace-print_aio_sigset.Po
-       -rm -f ./$(DEPDIR)/strace-print_dev_t.Po
-       -rm -f ./$(DEPDIR)/strace-print_group_req.Po
-       -rm -f ./$(DEPDIR)/strace-print_ifindex.Po
-       -rm -f ./$(DEPDIR)/strace-print_instruction_pointer.Po
-       -rm -f ./$(DEPDIR)/strace-print_kernel_version.Po
-       -rm -f ./$(DEPDIR)/strace-print_mac.Po
-       -rm -f ./$(DEPDIR)/strace-print_mq_attr.Po
-       -rm -f ./$(DEPDIR)/strace-print_msgbuf.Po
-       -rm -f ./$(DEPDIR)/strace-print_sg_req_info.Po
-       -rm -f ./$(DEPDIR)/strace-print_sigevent.Po
-       -rm -f ./$(DEPDIR)/strace-print_statfs.Po
-       -rm -f ./$(DEPDIR)/strace-print_struct_stat.Po
-       -rm -f ./$(DEPDIR)/strace-print_time.Po
-       -rm -f ./$(DEPDIR)/strace-print_timespec.Po
-       -rm -f ./$(DEPDIR)/strace-print_timespec32.Po
-       -rm -f ./$(DEPDIR)/strace-print_timespec64.Po
-       -rm -f ./$(DEPDIR)/strace-print_timeval.Po
-       -rm -f ./$(DEPDIR)/strace-print_timeval64.Po
-       -rm -f ./$(DEPDIR)/strace-print_timex.Po
-       -rm -f ./$(DEPDIR)/strace-printmode.Po
-       -rm -f ./$(DEPDIR)/strace-printrusage.Po
-       -rm -f ./$(DEPDIR)/strace-printsiginfo.Po
-       -rm -f ./$(DEPDIR)/strace-process.Po
-       -rm -f ./$(DEPDIR)/strace-process_vm.Po
-       -rm -f ./$(DEPDIR)/strace-ptp.Po
-       -rm -f ./$(DEPDIR)/strace-ptrace_syscall_info.Po
-       -rm -f ./$(DEPDIR)/strace-quota.Po
-       -rm -f ./$(DEPDIR)/strace-random_ioctl.Po
-       -rm -f ./$(DEPDIR)/strace-readahead.Po
-       -rm -f ./$(DEPDIR)/strace-readlink.Po
-       -rm -f ./$(DEPDIR)/strace-reboot.Po
-       -rm -f ./$(DEPDIR)/strace-renameat.Po
-       -rm -f ./$(DEPDIR)/strace-resource.Po
-       -rm -f ./$(DEPDIR)/strace-retval.Po
-       -rm -f ./$(DEPDIR)/strace-riscv.Po
-       -rm -f ./$(DEPDIR)/strace-rt_sigframe.Po
-       -rm -f ./$(DEPDIR)/strace-rt_sigreturn.Po
-       -rm -f ./$(DEPDIR)/strace-rtc.Po
-       -rm -f ./$(DEPDIR)/strace-rtnl_addr.Po
-       -rm -f ./$(DEPDIR)/strace-rtnl_addrlabel.Po
-       -rm -f ./$(DEPDIR)/strace-rtnl_dcb.Po
-       -rm -f ./$(DEPDIR)/strace-rtnl_link.Po
-       -rm -f ./$(DEPDIR)/strace-rtnl_mdb.Po
-       -rm -f ./$(DEPDIR)/strace-rtnl_neigh.Po
-       -rm -f ./$(DEPDIR)/strace-rtnl_neightbl.Po
-       -rm -f ./$(DEPDIR)/strace-rtnl_netconf.Po
-       -rm -f ./$(DEPDIR)/strace-rtnl_nsid.Po
-       -rm -f ./$(DEPDIR)/strace-rtnl_route.Po
-       -rm -f ./$(DEPDIR)/strace-rtnl_rule.Po
-       -rm -f ./$(DEPDIR)/strace-rtnl_tc.Po
-       -rm -f ./$(DEPDIR)/strace-rtnl_tc_action.Po
-       -rm -f ./$(DEPDIR)/strace-s390.Po
-       -rm -f ./$(DEPDIR)/strace-sched.Po
-       -rm -f ./$(DEPDIR)/strace-scsi.Po
-       -rm -f ./$(DEPDIR)/strace-seccomp.Po
-       -rm -f ./$(DEPDIR)/strace-sendfile.Po
-       -rm -f ./$(DEPDIR)/strace-sg_io_v3.Po
-       -rm -f ./$(DEPDIR)/strace-sg_io_v4.Po
-       -rm -f ./$(DEPDIR)/strace-shutdown.Po
-       -rm -f ./$(DEPDIR)/strace-sigaltstack.Po
-       -rm -f ./$(DEPDIR)/strace-signal.Po
-       -rm -f ./$(DEPDIR)/strace-signalfd.Po
-       -rm -f ./$(DEPDIR)/strace-sock.Po
-       -rm -f ./$(DEPDIR)/strace-sockaddr.Po
-       -rm -f ./$(DEPDIR)/strace-socketutils.Po
-       -rm -f ./$(DEPDIR)/strace-sparc.Po
-       -rm -f ./$(DEPDIR)/strace-sram_alloc.Po
-       -rm -f ./$(DEPDIR)/strace-stat.Po
-       -rm -f ./$(DEPDIR)/strace-stat64.Po
-       -rm -f ./$(DEPDIR)/strace-statfs.Po
-       -rm -f ./$(DEPDIR)/strace-statx.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-userfaultfd.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-ustat.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-util.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-utime.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-utimes.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-v4l2.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-wait.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-watchdog_ioctl.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-xattr.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-xgetdents.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-xlat.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-xmalloc.Po
        -rm -f ./$(DEPDIR)/strace-strace.Po
-       -rm -f ./$(DEPDIR)/strace-string_to_uint.Po
-       -rm -f ./$(DEPDIR)/strace-swapon.Po
-       -rm -f ./$(DEPDIR)/strace-syscall.Po
-       -rm -f ./$(DEPDIR)/strace-sysctl.Po
-       -rm -f ./$(DEPDIR)/strace-sysinfo.Po
-       -rm -f ./$(DEPDIR)/strace-syslog.Po
-       -rm -f ./$(DEPDIR)/strace-sysmips.Po
-       -rm -f ./$(DEPDIR)/strace-term.Po
-       -rm -f ./$(DEPDIR)/strace-time.Po
-       -rm -f ./$(DEPDIR)/strace-times.Po
-       -rm -f ./$(DEPDIR)/strace-truncate.Po
-       -rm -f ./$(DEPDIR)/strace-ubi.Po
-       -rm -f ./$(DEPDIR)/strace-ucopy.Po
-       -rm -f ./$(DEPDIR)/strace-uid.Po
-       -rm -f ./$(DEPDIR)/strace-uid16.Po
-       -rm -f ./$(DEPDIR)/strace-umask.Po
-       -rm -f ./$(DEPDIR)/strace-umount.Po
-       -rm -f ./$(DEPDIR)/strace-uname.Po
-       -rm -f ./$(DEPDIR)/strace-unwind-libdw.Po
-       -rm -f ./$(DEPDIR)/strace-unwind-libunwind.Po
-       -rm -f ./$(DEPDIR)/strace-unwind.Po
-       -rm -f ./$(DEPDIR)/strace-userfaultfd.Po
-       -rm -f ./$(DEPDIR)/strace-ustat.Po
-       -rm -f ./$(DEPDIR)/strace-util.Po
-       -rm -f ./$(DEPDIR)/strace-utime.Po
-       -rm -f ./$(DEPDIR)/strace-utimes.Po
-       -rm -f ./$(DEPDIR)/strace-v4l2.Po
-       -rm -f ./$(DEPDIR)/strace-wait.Po
-       -rm -f ./$(DEPDIR)/strace-xattr.Po
-       -rm -f ./$(DEPDIR)/strace-xlat.Po
-       -rm -f ./$(DEPDIR)/strace-xmalloc.Po
+       -rm -f types/$(DEPDIR)/libstrace_a-check-btrfs.Po
+       -rm -f types/$(DEPDIR)/libstrace_a-check-cryptouser.Po
+       -rm -f types/$(DEPDIR)/libstrace_a-check-evdev.Po
+       -rm -f types/$(DEPDIR)/libstrace_a-check-io_uring.Po
+       -rm -f types/$(DEPDIR)/libstrace_a-check-loop.Po
+       -rm -f types/$(DEPDIR)/libstrace_a-check-openat2.Po
+       -rm -f types/$(DEPDIR)/libstrace_a-check-rtnl_link.Po
+       -rm -f types/$(DEPDIR)/libstrace_a-check-rtnl_mdb.Po
+       -rm -f types/$(DEPDIR)/libstrace_a-check-rtnl_neightbl.Po
+       -rm -f types/$(DEPDIR)/libstrace_a-check-rtnl_route.Po
+       -rm -f types/$(DEPDIR)/libstrace_a-check-tee.Po
+       -rm -f types/$(DEPDIR)/libstrace_a-check-v4l2.Po
        -rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
        distclean-hdr distclean-tags
@@ -8028,6 +8848,7 @@ maintainer-clean: maintainer-clean-recursive
        -rm -f ./$(DEPDIR)/libmpers_m32_a-fetch_struct_xfs_quotastat.Po
        -rm -f ./$(DEPDIR)/libmpers_m32_a-hdio.Po
        -rm -f ./$(DEPDIR)/libmpers_m32_a-ipc_msgctl.Po
+       -rm -f ./$(DEPDIR)/libmpers_m32_a-ipc_semctl.Po
        -rm -f ./$(DEPDIR)/libmpers_m32_a-ipc_shmctl.Po
        -rm -f ./$(DEPDIR)/libmpers_m32_a-loop.Po
        -rm -f ./$(DEPDIR)/libmpers_m32_a-mtd.Po
@@ -8039,7 +8860,6 @@ maintainer-clean: maintainer-clean-recursive
        -rm -f ./$(DEPDIR)/libmpers_m32_a-print_sg_req_info.Po
        -rm -f ./$(DEPDIR)/libmpers_m32_a-print_sigevent.Po
        -rm -f ./$(DEPDIR)/libmpers_m32_a-print_time.Po
-       -rm -f ./$(DEPDIR)/libmpers_m32_a-print_timespec.Po
        -rm -f ./$(DEPDIR)/libmpers_m32_a-print_timeval.Po
        -rm -f ./$(DEPDIR)/libmpers_m32_a-printrusage.Po
        -rm -f ./$(DEPDIR)/libmpers_m32_a-printsiginfo.Po
@@ -8068,6 +8888,7 @@ maintainer-clean: maintainer-clean-recursive
        -rm -f ./$(DEPDIR)/libmpers_mx32_a-fetch_struct_xfs_quotastat.Po
        -rm -f ./$(DEPDIR)/libmpers_mx32_a-hdio.Po
        -rm -f ./$(DEPDIR)/libmpers_mx32_a-ipc_msgctl.Po
+       -rm -f ./$(DEPDIR)/libmpers_mx32_a-ipc_semctl.Po
        -rm -f ./$(DEPDIR)/libmpers_mx32_a-ipc_shmctl.Po
        -rm -f ./$(DEPDIR)/libmpers_mx32_a-loop.Po
        -rm -f ./$(DEPDIR)/libmpers_mx32_a-mtd.Po
@@ -8079,7 +8900,6 @@ maintainer-clean: maintainer-clean-recursive
        -rm -f ./$(DEPDIR)/libmpers_mx32_a-print_sg_req_info.Po
        -rm -f ./$(DEPDIR)/libmpers_mx32_a-print_sigevent.Po
        -rm -f ./$(DEPDIR)/libmpers_mx32_a-print_time.Po
-       -rm -f ./$(DEPDIR)/libmpers_mx32_a-print_timespec.Po
        -rm -f ./$(DEPDIR)/libmpers_mx32_a-print_timeval.Po
        -rm -f ./$(DEPDIR)/libmpers_mx32_a-printrusage.Po
        -rm -f ./$(DEPDIR)/libmpers_mx32_a-printsiginfo.Po
@@ -8093,245 +8913,276 @@ maintainer-clean: maintainer-clean-recursive
        -rm -f ./$(DEPDIR)/libmpers_mx32_a-ustat.Po
        -rm -f ./$(DEPDIR)/libmpers_mx32_a-utime.Po
        -rm -f ./$(DEPDIR)/libmpers_mx32_a-v4l2.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-access.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-affinity.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-aio.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-alpha.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-basic_filters.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-bind.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-bjm.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-block.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-bpf.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-bpf_attr_check.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-bpf_filter.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-bpf_seccomp_filter.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-bpf_sock_filter.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-btrfs.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-cacheflush.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-capability.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-chdir.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-chmod.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-clone.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-close_range.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-copy_file_range.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-count.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-delay.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-desc.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-dirent.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-dirent64.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-dirent_types.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-dm.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-dup.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-dyxlat.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-epoll.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-error_prints.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-evdev.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-evdev_mpers.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-eventfd.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-execve.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-fadvise.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-fallocate.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-fanotify.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-fchownat.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-fcntl.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-fetch_bpf_fprog.Po
        -rm -f ./$(DEPDIR)/libstrace_a-fetch_indirect_syscall_args.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-fetch_struct_flock.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-fetch_struct_keyctl_kdf_params.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-fetch_struct_mmsghdr.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-fetch_struct_msghdr.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-fetch_struct_stat.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-fetch_struct_stat64.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-fetch_struct_statfs.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-fetch_struct_xfs_quotastat.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-file_handle.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-file_ioctl.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-filter_qualify.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-filter_seccomp.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-flock.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-fs_x_ioctl.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-fsconfig.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-fsmount.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-fsopen.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-fspick.Po
        -rm -f ./$(DEPDIR)/libstrace_a-fstatfs.Po
        -rm -f ./$(DEPDIR)/libstrace_a-fstatfs64.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-futex.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-get_personality.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-get_robust_list.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-getcpu.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-getcwd.Po
        -rm -f ./$(DEPDIR)/libstrace_a-getpagesize.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-getpid.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-getrandom.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-hdio.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-hostname.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-inotify.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-inotify_ioctl.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-io.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-io_uring.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-ioctl.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-ioperm.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-iopl.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-ioprio.Po
        -rm -f ./$(DEPDIR)/libstrace_a-ipc.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-ipc_msg.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-ipc_msgctl.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-ipc_sem.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-ipc_semctl.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-ipc_shm.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-ipc_shmctl.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-kcmp.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-kexec.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-keyctl.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-kvm.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-ldt.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-link.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-listen.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-lookup_dcookie.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-loop.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-lseek.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-mem.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-membarrier.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-memfd_create.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-mknod.Po
        -rm -f ./$(DEPDIR)/libstrace_a-mmap_cache.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-mmap_notify.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-mmsghdr.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-mount.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-move_mount.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-mq.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-msghdr.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-mtd.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-nbd_ioctl.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-net.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-netlink.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-netlink_crypto.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-netlink_inet_diag.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-netlink_kobject_uevent.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-netlink_netfilter.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-netlink_netlink_diag.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-netlink_packet_diag.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-netlink_route.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-netlink_selinux.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-netlink_smc_diag.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-netlink_sock_diag.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-netlink_unix_diag.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-nlattr.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-nsfs.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-numa.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-number_set.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-oldstat.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-open.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-open_tree.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-or1k_atomic.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-pathtrace.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-perf.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-perf_ioctl.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-personality.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-pidfd_getfd.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-pidfd_open.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-pidns.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-pkeys.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-poll.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-prctl.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-print_aio_sigset.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-print_dev_t.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-print_group_req.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-print_ifindex.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-print_instruction_pointer.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-print_kernel_version.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-print_mac.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-print_mq_attr.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-print_msgbuf.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-print_sg_req_info.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-print_sigevent.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-print_statfs.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-print_struct_stat.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-print_syscall_number.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-print_time.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-print_timespec32.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-print_timespec64.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-print_timeval.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-print_timeval64.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-print_timex.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-printmode.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-printrusage.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-printsiginfo.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-process.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-process_vm.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-ptp.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-ptrace_syscall_info.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-quota.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-random_ioctl.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-readahead.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-readlink.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-reboot.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-renameat.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-resource.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-retval.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-riscv.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-rt_sigframe.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-rt_sigreturn.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-rtc.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-rtnl_addr.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-rtnl_addrlabel.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-rtnl_dcb.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-rtnl_link.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-rtnl_mdb.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-rtnl_neigh.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-rtnl_neightbl.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-rtnl_netconf.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-rtnl_nsid.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-rtnl_route.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-rtnl_rule.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-rtnl_tc.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-rtnl_tc_action.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-s390.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-sched.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-scsi.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-seccomp.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-sendfile.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-sg_io_v3.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-sg_io_v4.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-shutdown.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-sigaltstack.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-signal.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-signalfd.Po
        -rm -f ./$(DEPDIR)/libstrace_a-sigreturn.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-sock.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-sockaddr.Po
        -rm -f ./$(DEPDIR)/libstrace_a-socketcall.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-socketutils.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-sparc.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-sram_alloc.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-stage_output.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-stat.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-stat64.Po
        -rm -f ./$(DEPDIR)/libstrace_a-statfs.Po
        -rm -f ./$(DEPDIR)/libstrace_a-statfs64.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-statx.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-string_to_uint.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-swapon.Po
        -rm -f ./$(DEPDIR)/libstrace_a-sync_file_range.Po
        -rm -f ./$(DEPDIR)/libstrace_a-sync_file_range2.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-syscall.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-sysctl.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-sysinfo.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-syslog.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-sysmips.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-tee.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-term.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-time.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-times.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-trie.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-truncate.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-ubi.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-ucopy.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-uid.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-uid16.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-umask.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-umount.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-uname.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-unwind-libdw.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-unwind-libunwind.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-unwind.Po
        -rm -f ./$(DEPDIR)/libstrace_a-upeek.Po
        -rm -f ./$(DEPDIR)/libstrace_a-upoke.Po
-       -rm -f ./$(DEPDIR)/strace-access.Po
-       -rm -f ./$(DEPDIR)/strace-affinity.Po
-       -rm -f ./$(DEPDIR)/strace-aio.Po
-       -rm -f ./$(DEPDIR)/strace-alpha.Po
-       -rm -f ./$(DEPDIR)/strace-basic_filters.Po
-       -rm -f ./$(DEPDIR)/strace-bind.Po
-       -rm -f ./$(DEPDIR)/strace-bjm.Po
-       -rm -f ./$(DEPDIR)/strace-block.Po
-       -rm -f ./$(DEPDIR)/strace-bpf.Po
-       -rm -f ./$(DEPDIR)/strace-bpf_attr_check.Po
-       -rm -f ./$(DEPDIR)/strace-bpf_filter.Po
-       -rm -f ./$(DEPDIR)/strace-bpf_seccomp_filter.Po
-       -rm -f ./$(DEPDIR)/strace-bpf_sock_filter.Po
-       -rm -f ./$(DEPDIR)/strace-btrfs.Po
-       -rm -f ./$(DEPDIR)/strace-cacheflush.Po
-       -rm -f ./$(DEPDIR)/strace-capability.Po
-       -rm -f ./$(DEPDIR)/strace-chdir.Po
-       -rm -f ./$(DEPDIR)/strace-chmod.Po
-       -rm -f ./$(DEPDIR)/strace-clone.Po
-       -rm -f ./$(DEPDIR)/strace-copy_file_range.Po
-       -rm -f ./$(DEPDIR)/strace-count.Po
-       -rm -f ./$(DEPDIR)/strace-delay.Po
-       -rm -f ./$(DEPDIR)/strace-desc.Po
-       -rm -f ./$(DEPDIR)/strace-dirent.Po
-       -rm -f ./$(DEPDIR)/strace-dirent64.Po
-       -rm -f ./$(DEPDIR)/strace-dm.Po
-       -rm -f ./$(DEPDIR)/strace-dyxlat.Po
-       -rm -f ./$(DEPDIR)/strace-epoll.Po
-       -rm -f ./$(DEPDIR)/strace-error_prints.Po
-       -rm -f ./$(DEPDIR)/strace-evdev.Po
-       -rm -f ./$(DEPDIR)/strace-evdev_mpers.Po
-       -rm -f ./$(DEPDIR)/strace-eventfd.Po
-       -rm -f ./$(DEPDIR)/strace-execve.Po
-       -rm -f ./$(DEPDIR)/strace-fadvise.Po
-       -rm -f ./$(DEPDIR)/strace-fallocate.Po
-       -rm -f ./$(DEPDIR)/strace-fanotify.Po
-       -rm -f ./$(DEPDIR)/strace-fchownat.Po
-       -rm -f ./$(DEPDIR)/strace-fcntl.Po
-       -rm -f ./$(DEPDIR)/strace-fetch_bpf_fprog.Po
-       -rm -f ./$(DEPDIR)/strace-fetch_struct_flock.Po
-       -rm -f ./$(DEPDIR)/strace-fetch_struct_keyctl_kdf_params.Po
-       -rm -f ./$(DEPDIR)/strace-fetch_struct_mmsghdr.Po
-       -rm -f ./$(DEPDIR)/strace-fetch_struct_msghdr.Po
-       -rm -f ./$(DEPDIR)/strace-fetch_struct_stat.Po
-       -rm -f ./$(DEPDIR)/strace-fetch_struct_stat64.Po
-       -rm -f ./$(DEPDIR)/strace-fetch_struct_statfs.Po
-       -rm -f ./$(DEPDIR)/strace-fetch_struct_xfs_quotastat.Po
-       -rm -f ./$(DEPDIR)/strace-file_handle.Po
-       -rm -f ./$(DEPDIR)/strace-file_ioctl.Po
-       -rm -f ./$(DEPDIR)/strace-filter_qualify.Po
-       -rm -f ./$(DEPDIR)/strace-flock.Po
-       -rm -f ./$(DEPDIR)/strace-fs_x_ioctl.Po
-       -rm -f ./$(DEPDIR)/strace-futex.Po
-       -rm -f ./$(DEPDIR)/strace-get_personality.Po
-       -rm -f ./$(DEPDIR)/strace-get_robust_list.Po
-       -rm -f ./$(DEPDIR)/strace-getcpu.Po
-       -rm -f ./$(DEPDIR)/strace-getcwd.Po
-       -rm -f ./$(DEPDIR)/strace-getrandom.Po
-       -rm -f ./$(DEPDIR)/strace-hdio.Po
-       -rm -f ./$(DEPDIR)/strace-hostname.Po
-       -rm -f ./$(DEPDIR)/strace-inotify.Po
-       -rm -f ./$(DEPDIR)/strace-inotify_ioctl.Po
-       -rm -f ./$(DEPDIR)/strace-io.Po
-       -rm -f ./$(DEPDIR)/strace-io_uring.Po
-       -rm -f ./$(DEPDIR)/strace-ioctl.Po
-       -rm -f ./$(DEPDIR)/strace-ioperm.Po
-       -rm -f ./$(DEPDIR)/strace-iopl.Po
-       -rm -f ./$(DEPDIR)/strace-ioprio.Po
-       -rm -f ./$(DEPDIR)/strace-ipc_msg.Po
-       -rm -f ./$(DEPDIR)/strace-ipc_msgctl.Po
-       -rm -f ./$(DEPDIR)/strace-ipc_sem.Po
-       -rm -f ./$(DEPDIR)/strace-ipc_shm.Po
-       -rm -f ./$(DEPDIR)/strace-ipc_shmctl.Po
-       -rm -f ./$(DEPDIR)/strace-kcmp.Po
-       -rm -f ./$(DEPDIR)/strace-kexec.Po
-       -rm -f ./$(DEPDIR)/strace-keyctl.Po
-       -rm -f ./$(DEPDIR)/strace-kvm.Po
-       -rm -f ./$(DEPDIR)/strace-ldt.Po
-       -rm -f ./$(DEPDIR)/strace-link.Po
-       -rm -f ./$(DEPDIR)/strace-listen.Po
-       -rm -f ./$(DEPDIR)/strace-lookup_dcookie.Po
-       -rm -f ./$(DEPDIR)/strace-loop.Po
-       -rm -f ./$(DEPDIR)/strace-lseek.Po
-       -rm -f ./$(DEPDIR)/strace-mem.Po
-       -rm -f ./$(DEPDIR)/strace-membarrier.Po
-       -rm -f ./$(DEPDIR)/strace-memfd_create.Po
-       -rm -f ./$(DEPDIR)/strace-mknod.Po
-       -rm -f ./$(DEPDIR)/strace-mmap_notify.Po
-       -rm -f ./$(DEPDIR)/strace-mmsghdr.Po
-       -rm -f ./$(DEPDIR)/strace-mount.Po
-       -rm -f ./$(DEPDIR)/strace-mq.Po
-       -rm -f ./$(DEPDIR)/strace-msghdr.Po
-       -rm -f ./$(DEPDIR)/strace-mtd.Po
-       -rm -f ./$(DEPDIR)/strace-nbd_ioctl.Po
-       -rm -f ./$(DEPDIR)/strace-net.Po
-       -rm -f ./$(DEPDIR)/strace-netlink.Po
-       -rm -f ./$(DEPDIR)/strace-netlink_crypto.Po
-       -rm -f ./$(DEPDIR)/strace-netlink_inet_diag.Po
-       -rm -f ./$(DEPDIR)/strace-netlink_kobject_uevent.Po
-       -rm -f ./$(DEPDIR)/strace-netlink_netfilter.Po
-       -rm -f ./$(DEPDIR)/strace-netlink_netlink_diag.Po
-       -rm -f ./$(DEPDIR)/strace-netlink_packet_diag.Po
-       -rm -f ./$(DEPDIR)/strace-netlink_route.Po
-       -rm -f ./$(DEPDIR)/strace-netlink_selinux.Po
-       -rm -f ./$(DEPDIR)/strace-netlink_smc_diag.Po
-       -rm -f ./$(DEPDIR)/strace-netlink_sock_diag.Po
-       -rm -f ./$(DEPDIR)/strace-netlink_unix_diag.Po
-       -rm -f ./$(DEPDIR)/strace-nlattr.Po
-       -rm -f ./$(DEPDIR)/strace-nsfs.Po
-       -rm -f ./$(DEPDIR)/strace-numa.Po
-       -rm -f ./$(DEPDIR)/strace-number_set.Po
-       -rm -f ./$(DEPDIR)/strace-oldstat.Po
-       -rm -f ./$(DEPDIR)/strace-open.Po
-       -rm -f ./$(DEPDIR)/strace-or1k_atomic.Po
-       -rm -f ./$(DEPDIR)/strace-pathtrace.Po
-       -rm -f ./$(DEPDIR)/strace-perf.Po
-       -rm -f ./$(DEPDIR)/strace-perf_ioctl.Po
-       -rm -f ./$(DEPDIR)/strace-personality.Po
-       -rm -f ./$(DEPDIR)/strace-pkeys.Po
-       -rm -f ./$(DEPDIR)/strace-poll.Po
-       -rm -f ./$(DEPDIR)/strace-prctl.Po
-       -rm -f ./$(DEPDIR)/strace-print_aio_sigset.Po
-       -rm -f ./$(DEPDIR)/strace-print_dev_t.Po
-       -rm -f ./$(DEPDIR)/strace-print_group_req.Po
-       -rm -f ./$(DEPDIR)/strace-print_ifindex.Po
-       -rm -f ./$(DEPDIR)/strace-print_instruction_pointer.Po
-       -rm -f ./$(DEPDIR)/strace-print_kernel_version.Po
-       -rm -f ./$(DEPDIR)/strace-print_mac.Po
-       -rm -f ./$(DEPDIR)/strace-print_mq_attr.Po
-       -rm -f ./$(DEPDIR)/strace-print_msgbuf.Po
-       -rm -f ./$(DEPDIR)/strace-print_sg_req_info.Po
-       -rm -f ./$(DEPDIR)/strace-print_sigevent.Po
-       -rm -f ./$(DEPDIR)/strace-print_statfs.Po
-       -rm -f ./$(DEPDIR)/strace-print_struct_stat.Po
-       -rm -f ./$(DEPDIR)/strace-print_time.Po
-       -rm -f ./$(DEPDIR)/strace-print_timespec.Po
-       -rm -f ./$(DEPDIR)/strace-print_timespec32.Po
-       -rm -f ./$(DEPDIR)/strace-print_timespec64.Po
-       -rm -f ./$(DEPDIR)/strace-print_timeval.Po
-       -rm -f ./$(DEPDIR)/strace-print_timeval64.Po
-       -rm -f ./$(DEPDIR)/strace-print_timex.Po
-       -rm -f ./$(DEPDIR)/strace-printmode.Po
-       -rm -f ./$(DEPDIR)/strace-printrusage.Po
-       -rm -f ./$(DEPDIR)/strace-printsiginfo.Po
-       -rm -f ./$(DEPDIR)/strace-process.Po
-       -rm -f ./$(DEPDIR)/strace-process_vm.Po
-       -rm -f ./$(DEPDIR)/strace-ptp.Po
-       -rm -f ./$(DEPDIR)/strace-ptrace_syscall_info.Po
-       -rm -f ./$(DEPDIR)/strace-quota.Po
-       -rm -f ./$(DEPDIR)/strace-random_ioctl.Po
-       -rm -f ./$(DEPDIR)/strace-readahead.Po
-       -rm -f ./$(DEPDIR)/strace-readlink.Po
-       -rm -f ./$(DEPDIR)/strace-reboot.Po
-       -rm -f ./$(DEPDIR)/strace-renameat.Po
-       -rm -f ./$(DEPDIR)/strace-resource.Po
-       -rm -f ./$(DEPDIR)/strace-retval.Po
-       -rm -f ./$(DEPDIR)/strace-riscv.Po
-       -rm -f ./$(DEPDIR)/strace-rt_sigframe.Po
-       -rm -f ./$(DEPDIR)/strace-rt_sigreturn.Po
-       -rm -f ./$(DEPDIR)/strace-rtc.Po
-       -rm -f ./$(DEPDIR)/strace-rtnl_addr.Po
-       -rm -f ./$(DEPDIR)/strace-rtnl_addrlabel.Po
-       -rm -f ./$(DEPDIR)/strace-rtnl_dcb.Po
-       -rm -f ./$(DEPDIR)/strace-rtnl_link.Po
-       -rm -f ./$(DEPDIR)/strace-rtnl_mdb.Po
-       -rm -f ./$(DEPDIR)/strace-rtnl_neigh.Po
-       -rm -f ./$(DEPDIR)/strace-rtnl_neightbl.Po
-       -rm -f ./$(DEPDIR)/strace-rtnl_netconf.Po
-       -rm -f ./$(DEPDIR)/strace-rtnl_nsid.Po
-       -rm -f ./$(DEPDIR)/strace-rtnl_route.Po
-       -rm -f ./$(DEPDIR)/strace-rtnl_rule.Po
-       -rm -f ./$(DEPDIR)/strace-rtnl_tc.Po
-       -rm -f ./$(DEPDIR)/strace-rtnl_tc_action.Po
-       -rm -f ./$(DEPDIR)/strace-s390.Po
-       -rm -f ./$(DEPDIR)/strace-sched.Po
-       -rm -f ./$(DEPDIR)/strace-scsi.Po
-       -rm -f ./$(DEPDIR)/strace-seccomp.Po
-       -rm -f ./$(DEPDIR)/strace-sendfile.Po
-       -rm -f ./$(DEPDIR)/strace-sg_io_v3.Po
-       -rm -f ./$(DEPDIR)/strace-sg_io_v4.Po
-       -rm -f ./$(DEPDIR)/strace-shutdown.Po
-       -rm -f ./$(DEPDIR)/strace-sigaltstack.Po
-       -rm -f ./$(DEPDIR)/strace-signal.Po
-       -rm -f ./$(DEPDIR)/strace-signalfd.Po
-       -rm -f ./$(DEPDIR)/strace-sock.Po
-       -rm -f ./$(DEPDIR)/strace-sockaddr.Po
-       -rm -f ./$(DEPDIR)/strace-socketutils.Po
-       -rm -f ./$(DEPDIR)/strace-sparc.Po
-       -rm -f ./$(DEPDIR)/strace-sram_alloc.Po
-       -rm -f ./$(DEPDIR)/strace-stat.Po
-       -rm -f ./$(DEPDIR)/strace-stat64.Po
-       -rm -f ./$(DEPDIR)/strace-statfs.Po
-       -rm -f ./$(DEPDIR)/strace-statx.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-userfaultfd.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-ustat.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-util.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-utime.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-utimes.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-v4l2.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-wait.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-watchdog_ioctl.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-xattr.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-xgetdents.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-xlat.Po
+       -rm -f ./$(DEPDIR)/libstrace_a-xmalloc.Po
        -rm -f ./$(DEPDIR)/strace-strace.Po
-       -rm -f ./$(DEPDIR)/strace-string_to_uint.Po
-       -rm -f ./$(DEPDIR)/strace-swapon.Po
-       -rm -f ./$(DEPDIR)/strace-syscall.Po
-       -rm -f ./$(DEPDIR)/strace-sysctl.Po
-       -rm -f ./$(DEPDIR)/strace-sysinfo.Po
-       -rm -f ./$(DEPDIR)/strace-syslog.Po
-       -rm -f ./$(DEPDIR)/strace-sysmips.Po
-       -rm -f ./$(DEPDIR)/strace-term.Po
-       -rm -f ./$(DEPDIR)/strace-time.Po
-       -rm -f ./$(DEPDIR)/strace-times.Po
-       -rm -f ./$(DEPDIR)/strace-truncate.Po
-       -rm -f ./$(DEPDIR)/strace-ubi.Po
-       -rm -f ./$(DEPDIR)/strace-ucopy.Po
-       -rm -f ./$(DEPDIR)/strace-uid.Po
-       -rm -f ./$(DEPDIR)/strace-uid16.Po
-       -rm -f ./$(DEPDIR)/strace-umask.Po
-       -rm -f ./$(DEPDIR)/strace-umount.Po
-       -rm -f ./$(DEPDIR)/strace-uname.Po
-       -rm -f ./$(DEPDIR)/strace-unwind-libdw.Po
-       -rm -f ./$(DEPDIR)/strace-unwind-libunwind.Po
-       -rm -f ./$(DEPDIR)/strace-unwind.Po
-       -rm -f ./$(DEPDIR)/strace-userfaultfd.Po
-       -rm -f ./$(DEPDIR)/strace-ustat.Po
-       -rm -f ./$(DEPDIR)/strace-util.Po
-       -rm -f ./$(DEPDIR)/strace-utime.Po
-       -rm -f ./$(DEPDIR)/strace-utimes.Po
-       -rm -f ./$(DEPDIR)/strace-v4l2.Po
-       -rm -f ./$(DEPDIR)/strace-wait.Po
-       -rm -f ./$(DEPDIR)/strace-xattr.Po
-       -rm -f ./$(DEPDIR)/strace-xlat.Po
-       -rm -f ./$(DEPDIR)/strace-xmalloc.Po
+       -rm -f types/$(DEPDIR)/libstrace_a-check-btrfs.Po
+       -rm -f types/$(DEPDIR)/libstrace_a-check-cryptouser.Po
+       -rm -f types/$(DEPDIR)/libstrace_a-check-evdev.Po
+       -rm -f types/$(DEPDIR)/libstrace_a-check-io_uring.Po
+       -rm -f types/$(DEPDIR)/libstrace_a-check-loop.Po
+       -rm -f types/$(DEPDIR)/libstrace_a-check-openat2.Po
+       -rm -f types/$(DEPDIR)/libstrace_a-check-rtnl_link.Po
+       -rm -f types/$(DEPDIR)/libstrace_a-check-rtnl_mdb.Po
+       -rm -f types/$(DEPDIR)/libstrace_a-check-rtnl_neightbl.Po
+       -rm -f types/$(DEPDIR)/libstrace_a-check-rtnl_route.Po
+       -rm -f types/$(DEPDIR)/libstrace_a-check-tee.Po
+       -rm -f types/$(DEPDIR)/libstrace_a-check-v4l2.Po
        -rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-generic
 
@@ -8364,7 +9215,7 @@ uninstall-man: uninstall-man1
        clean-cscope clean-generic clean-local clean-noinstLIBRARIES \
        cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \
        dist-gzip dist-hook dist-lzip dist-shar dist-tarZ dist-xz \
-       dist-zip distcheck distclean distclean-compile \
+       dist-zip dist-zstd distcheck distclean distclean-compile \
        distclean-generic distclean-hdr distclean-tags distcleancheck \
        distdir distuninstallcheck dvi dvi-am html html-am info \
        info-am install install-am install-binPROGRAMS \
@@ -8381,7 +9232,7 @@ uninstall-man: uninstall-man1
 
 .PRECIOUS: Makefile
 
-$(top_srcdir)/xlat/access_flags.h: $(top_srcdir)/xlat/access_flags.in $(top_srcdir)/xlat/gen.sh
+$(top_srcdir)/xlat/access_modes.h: $(top_srcdir)/xlat/access_modes.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/addrfams.h: $(top_srcdir)/xlat/addrfams.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
@@ -8399,6 +9250,8 @@ $(top_srcdir)/xlat/af_packet_versions.h: $(top_srcdir)/xlat/af_packet_versions.i
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/aio_cmds.h: $(top_srcdir)/xlat/aio_cmds.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/aio_iocb_flags.h: $(top_srcdir)/xlat/aio_iocb_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/archvals.h: $(top_srcdir)/xlat/archvals.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/arp_hardware_types.h: $(top_srcdir)/xlat/arp_hardware_types.in $(top_srcdir)/xlat/gen.sh
@@ -8443,6 +9296,8 @@ $(top_srcdir)/xlat/bpf_file_mode_flags.h: $(top_srcdir)/xlat/bpf_file_mode_flags
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/bpf_map_flags.h: $(top_srcdir)/xlat/bpf_map_flags.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/bpf_map_lookup_elem_flags.h: $(top_srcdir)/xlat/bpf_map_lookup_elem_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/bpf_map_types.h: $(top_srcdir)/xlat/bpf_map_types.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/bpf_map_update_elem_flags.h: $(top_srcdir)/xlat/bpf_map_update_elem_flags.in $(top_srcdir)/xlat/gen.sh
@@ -8529,6 +9384,8 @@ $(top_srcdir)/xlat/btrfs_space_info_flags.h: $(top_srcdir)/xlat/btrfs_space_info
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/btrfs_tree_objectids.h: $(top_srcdir)/xlat/btrfs_tree_objectids.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/cacheflush_flags.h: $(top_srcdir)/xlat/cacheflush_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/cacheflush_scope.h: $(top_srcdir)/xlat/cacheflush_scope.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/caif_protocols.h: $(top_srcdir)/xlat/caif_protocols.in $(top_srcdir)/xlat/gen.sh
@@ -8547,10 +9404,16 @@ $(top_srcdir)/xlat/clockflags.h: $(top_srcdir)/xlat/clockflags.in $(top_srcdir)/
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/clocknames.h: $(top_srcdir)/xlat/clocknames.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/clone3_flags.h: $(top_srcdir)/xlat/clone3_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/clone_flags.h: $(top_srcdir)/xlat/clone_flags.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/close_range_flags.h: $(top_srcdir)/xlat/close_range_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/cpuclocknames.h: $(top_srcdir)/xlat/cpuclocknames.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/crypto_msgs.h: $(top_srcdir)/xlat/crypto_msgs.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/crypto_nl_attrs.h: $(top_srcdir)/xlat/crypto_nl_attrs.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/dcb_commands.h: $(top_srcdir)/xlat/dcb_commands.in $(top_srcdir)/xlat/gen.sh
@@ -8575,6 +9438,8 @@ $(top_srcdir)/xlat/ebpf_size.h: $(top_srcdir)/xlat/ebpf_size.in $(top_srcdir)/xl
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/efd_flags.h: $(top_srcdir)/xlat/efd_flags.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/elf_em.h: $(top_srcdir)/xlat/elf_em.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/epollctls.h: $(top_srcdir)/xlat/epollctls.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/epollevents.h: $(top_srcdir)/xlat/epollevents.in $(top_srcdir)/xlat/gen.sh
@@ -8593,6 +9458,8 @@ $(top_srcdir)/xlat/evdev_ff_status.h: $(top_srcdir)/xlat/evdev_ff_status.in $(to
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/evdev_ff_types.h: $(top_srcdir)/xlat/evdev_ff_types.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/evdev_ioctl_cmds.h: $(top_srcdir)/xlat/evdev_ioctl_cmds.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/evdev_keycode.h: $(top_srcdir)/xlat/evdev_keycode.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/evdev_leds.h: $(top_srcdir)/xlat/evdev_leds.in $(top_srcdir)/xlat/gen.sh
@@ -8613,6 +9480,8 @@ $(top_srcdir)/xlat/f_owner_types.h: $(top_srcdir)/xlat/f_owner_types.in $(top_sr
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/f_seals.h: $(top_srcdir)/xlat/f_seals.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/faccessat_flags.h: $(top_srcdir)/xlat/faccessat_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/falloc_flags.h: $(top_srcdir)/xlat/falloc_flags.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/fan_classes.h: $(top_srcdir)/xlat/fan_classes.in $(top_srcdir)/xlat/gen.sh
@@ -8637,8 +9506,16 @@ $(top_srcdir)/xlat/fiemap_flags.h: $(top_srcdir)/xlat/fiemap_flags.in $(top_srcd
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/flockcmds.h: $(top_srcdir)/xlat/flockcmds.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/fsconfig_cmds.h: $(top_srcdir)/xlat/fsconfig_cmds.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/fsmagic.h: $(top_srcdir)/xlat/fsmagic.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/fsmount_flags.h: $(top_srcdir)/xlat/fsmount_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/fsopen_flags.h: $(top_srcdir)/xlat/fsopen_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/fspick_flags.h: $(top_srcdir)/xlat/fspick_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/futexbitset.h: $(top_srcdir)/xlat/futexbitset.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/futexops.h: $(top_srcdir)/xlat/futexops.in $(top_srcdir)/xlat/gen.sh
@@ -8647,6 +9524,8 @@ $(top_srcdir)/xlat/futexwakecmps.h: $(top_srcdir)/xlat/futexwakecmps.in $(top_sr
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/futexwakeops.h: $(top_srcdir)/xlat/futexwakeops.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/get_mempolicy_flags.h: $(top_srcdir)/xlat/get_mempolicy_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/getrandom_flags.h: $(top_srcdir)/xlat/getrandom_flags.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/getsock_ip_options.h: $(top_srcdir)/xlat/getsock_ip_options.in $(top_srcdir)/xlat/gen.sh
@@ -8657,6 +9536,8 @@ $(top_srcdir)/xlat/getsock_options.h: $(top_srcdir)/xlat/getsock_options.in $(to
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/hci_channels.h: $(top_srcdir)/xlat/hci_channels.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/hdio_drive_cmds.h: $(top_srcdir)/xlat/hdio_drive_cmds.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/hw_breakpoint_len.h: $(top_srcdir)/xlat/hw_breakpoint_len.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/hw_breakpoint_type.h: $(top_srcdir)/xlat/hw_breakpoint_type.in $(top_srcdir)/xlat/gen.sh
@@ -8733,8 +9614,16 @@ $(top_srcdir)/xlat/key_reqkeys.h: $(top_srcdir)/xlat/key_reqkeys.in $(top_srcdir
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/key_spec.h: $(top_srcdir)/xlat/key_spec.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/keyctl_caps0.h: $(top_srcdir)/xlat/keyctl_caps0.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/keyctl_caps1.h: $(top_srcdir)/xlat/keyctl_caps1.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/keyctl_commands.h: $(top_srcdir)/xlat/keyctl_commands.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/keyctl_move_flags.h: $(top_srcdir)/xlat/keyctl_move_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/keyctl_pkey_ops.h: $(top_srcdir)/xlat/keyctl_pkey_ops.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/kvm_cap.h: $(top_srcdir)/xlat/kvm_cap.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/kvm_cpuid_flags.h: $(top_srcdir)/xlat/kvm_cpuid_flags.in $(top_srcdir)/xlat/gen.sh
@@ -8755,7 +9644,7 @@ $(top_srcdir)/xlat/lwtunnel_encap_types.h: $(top_srcdir)/xlat/lwtunnel_encap_typ
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/madvise_cmds.h: $(top_srcdir)/xlat/madvise_cmds.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/mbindflags.h: $(top_srcdir)/xlat/mbindflags.in $(top_srcdir)/xlat/gen.sh
+$(top_srcdir)/xlat/mbind_flags.h: $(top_srcdir)/xlat/mbind_flags.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/mctl_sync.h: $(top_srcdir)/xlat/mctl_sync.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
@@ -8767,8 +9656,6 @@ $(top_srcdir)/xlat/membarrier_cmds.h: $(top_srcdir)/xlat/membarrier_cmds.in $(to
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/memfd_create_flags.h: $(top_srcdir)/xlat/memfd_create_flags.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/mempolicyflags.h: $(top_srcdir)/xlat/mempolicyflags.in $(top_srcdir)/xlat/gen.sh
-       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/mlock_flags.h: $(top_srcdir)/xlat/mlock_flags.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/mlockall_flags.h: $(top_srcdir)/xlat/mlockall_flags.in $(top_srcdir)/xlat/gen.sh
@@ -8783,10 +9670,18 @@ $(top_srcdir)/xlat/modetypes.h: $(top_srcdir)/xlat/modetypes.in $(top_srcdir)/xl
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/module_init_flags.h: $(top_srcdir)/xlat/module_init_flags.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/mount_attr_flags.h: $(top_srcdir)/xlat/mount_attr_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/mount_flags.h: $(top_srcdir)/xlat/mount_flags.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/move_mount_flags.h: $(top_srcdir)/xlat/move_mount_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/move_pages_flags.h: $(top_srcdir)/xlat/move_pages_flags.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/mpol_mode_flags.h: $(top_srcdir)/xlat/mpol_mode_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/mpol_modes.h: $(top_srcdir)/xlat/mpol_modes.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/mq_attr_flags.h: $(top_srcdir)/xlat/mq_attr_flags.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/mremap_flags.h: $(top_srcdir)/xlat/mremap_flags.in $(top_srcdir)/xlat/gen.sh
@@ -8897,6 +9792,10 @@ $(top_srcdir)/xlat/open_access_modes.h: $(top_srcdir)/xlat/open_access_modes.in
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/open_mode_flags.h: $(top_srcdir)/xlat/open_mode_flags.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/open_resolve_flags.h: $(top_srcdir)/xlat/open_resolve_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/open_tree_flags.h: $(top_srcdir)/xlat/open_tree_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/packet_diag_attrs.h: $(top_srcdir)/xlat/packet_diag_attrs.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/packet_diag_info_flags.h: $(top_srcdir)/xlat/packet_diag_info_flags.in $(top_srcdir)/xlat/gen.sh
@@ -8939,8 +9838,6 @@ $(top_srcdir)/xlat/phonet_protocols.h: $(top_srcdir)/xlat/phonet_protocols.in $(
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/pkey_access.h: $(top_srcdir)/xlat/pkey_access.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/policies.h: $(top_srcdir)/xlat/policies.in $(top_srcdir)/xlat/gen.sh
-       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/pollflags.h: $(top_srcdir)/xlat/pollflags.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/pr_cap_ambient.h: $(top_srcdir)/xlat/pr_cap_ambient.in $(top_srcdir)/xlat/gen.sh
@@ -8971,7 +9868,9 @@ $(top_srcdir)/xlat/prctl_options.h: $(top_srcdir)/xlat/prctl_options.in $(top_sr
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/priorities.h: $(top_srcdir)/xlat/priorities.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/ptp_flags_options.h: $(top_srcdir)/xlat/ptp_flags_options.in $(top_srcdir)/xlat/gen.sh
+$(top_srcdir)/xlat/ptp_extts_flags.h: $(top_srcdir)/xlat/ptp_extts_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/ptp_perout_flags.h: $(top_srcdir)/xlat/ptp_perout_flags.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/ptrace_cmds.h: $(top_srcdir)/xlat/ptrace_cmds.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
@@ -9011,6 +9910,10 @@ $(top_srcdir)/xlat/routing_table_ids.h: $(top_srcdir)/xlat/routing_table_ids.in
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/routing_types.h: $(top_srcdir)/xlat/routing_types.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/rtc_ioctl_cmds.h: $(top_srcdir)/xlat/rtc_ioctl_cmds.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/rtc_vl_flags.h: $(top_srcdir)/xlat/rtc_vl_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/rtnl_addr_attrs.h: $(top_srcdir)/xlat/rtnl_addr_attrs.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/rtnl_addrlabel_attrs.h: $(top_srcdir)/xlat/rtnl_addrlabel_attrs.in $(top_srcdir)/xlat/gen.sh
@@ -9073,6 +9976,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_act_flags.h: $(top_srcdir)/xlat/rtnl_tca_act_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/rtnl_tca_act_hw_stats.h: $(top_srcdir)/xlat/rtnl_tca_act_hw_stats.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
@@ -9291,6 +10198,8 @@ $(top_srcdir)/xlat/sysctl_vm.h: $(top_srcdir)/xlat/sysctl_vm.in $(top_srcdir)/xl
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/syslog_action_type.h: $(top_srcdir)/xlat/syslog_action_type.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/syslog_console_levels.h: $(top_srcdir)/xlat/syslog_console_levels.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/sysmips_operations.h: $(top_srcdir)/xlat/sysmips_operations.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/tcflsh_options.h: $(top_srcdir)/xlat/tcflsh_options.in $(top_srcdir)/xlat/gen.sh
@@ -9301,6 +10210,24 @@ $(top_srcdir)/xlat/tcp_states.h: $(top_srcdir)/xlat/tcp_states.in $(top_srcdir)/
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/tcxonc_options.h: $(top_srcdir)/xlat/tcxonc_options.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/tee_ioctl_cmds.h: $(top_srcdir)/xlat/tee_ioctl_cmds.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/tee_ioctl_gen_caps.h: $(top_srcdir)/xlat/tee_ioctl_gen_caps.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/tee_ioctl_impl_ids.h: $(top_srcdir)/xlat/tee_ioctl_impl_ids.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/tee_ioctl_login_types.h: $(top_srcdir)/xlat/tee_ioctl_login_types.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/tee_ioctl_max_arg_size.h: $(top_srcdir)/xlat/tee_ioctl_max_arg_size.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/tee_ioctl_optee_caps.h: $(top_srcdir)/xlat/tee_ioctl_optee_caps.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/tee_ioctl_origins.h: $(top_srcdir)/xlat/tee_ioctl_origins.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/tee_ioctl_param_attr_types.h: $(top_srcdir)/xlat/tee_ioctl_param_attr_types.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/tee_ioctl_shm_flags.h: $(top_srcdir)/xlat/tee_ioctl_shm_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/timerfdflags.h: $(top_srcdir)/xlat/timerfdflags.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/tun_device_types.h: $(top_srcdir)/xlat/tun_device_types.in $(top_srcdir)/xlat/gen.sh
@@ -9331,16 +10258,30 @@ $(top_srcdir)/xlat/unix_diag_show.h: $(top_srcdir)/xlat/unix_diag_show.in $(top_
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/unshare_flags.h: $(top_srcdir)/xlat/unshare_flags.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/uring_cqring_flags.h: $(top_srcdir)/xlat/uring_cqring_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/uring_enter_flags.h: $(top_srcdir)/xlat/uring_enter_flags.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/uring_op_flags.h: $(top_srcdir)/xlat/uring_op_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/uring_ops.h: $(top_srcdir)/xlat/uring_ops.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/uring_register_opcodes.h: $(top_srcdir)/xlat/uring_register_opcodes.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/uring_setup_features.h: $(top_srcdir)/xlat/uring_setup_features.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/uring_setup_flags.h: $(top_srcdir)/xlat/uring_setup_flags.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/usagewho.h: $(top_srcdir)/xlat/usagewho.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/v4l2_buf_flags.h: $(top_srcdir)/xlat/v4l2_buf_flags.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/v4l2_buf_flags_masks.h: $(top_srcdir)/xlat/v4l2_buf_flags_masks.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/v4l2_buf_flags_ts_src.h: $(top_srcdir)/xlat/v4l2_buf_flags_ts_src.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/v4l2_buf_flags_ts_type.h: $(top_srcdir)/xlat/v4l2_buf_flags_ts_type.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/v4l2_buf_types.h: $(top_srcdir)/xlat/v4l2_buf_types.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/v4l2_capture_modes.h: $(top_srcdir)/xlat/v4l2_capture_modes.in $(top_srcdir)/xlat/gen.sh
@@ -9355,6 +10296,8 @@ $(top_srcdir)/xlat/v4l2_control_id_bases.h: $(top_srcdir)/xlat/v4l2_control_id_b
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/v4l2_control_ids.h: $(top_srcdir)/xlat/v4l2_control_ids.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/v4l2_control_query_flags.h: $(top_srcdir)/xlat/v4l2_control_query_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/v4l2_control_types.h: $(top_srcdir)/xlat/v4l2_control_types.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/v4l2_device_capabilities_flags.h: $(top_srcdir)/xlat/v4l2_device_capabilities_flags.in $(top_srcdir)/xlat/gen.sh
@@ -9369,6 +10312,8 @@ $(top_srcdir)/xlat/v4l2_framesize_types.h: $(top_srcdir)/xlat/v4l2_framesize_typ
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/v4l2_input_types.h: $(top_srcdir)/xlat/v4l2_input_types.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/v4l2_ioctl_cmds.h: $(top_srcdir)/xlat/v4l2_ioctl_cmds.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/v4l2_memories.h: $(top_srcdir)/xlat/v4l2_memories.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/v4l2_pix_fmts.h: $(top_srcdir)/xlat/v4l2_pix_fmts.in $(top_srcdir)/xlat/gen.sh
@@ -9393,6 +10338,8 @@ $(top_srcdir)/xlat/wait4_options.h: $(top_srcdir)/xlat/wait4_options.in $(top_sr
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/waitid_types.h: $(top_srcdir)/xlat/waitid_types.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/watchdog_ioctl_cmds.h: $(top_srcdir)/xlat/watchdog_ioctl_cmds.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/whence_codes.h: $(top_srcdir)/xlat/whence_codes.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/xattrflags.h: $(top_srcdir)/xlat/xattrflags.in $(top_srcdir)/xlat/gen.sh
@@ -9490,11 +10437,11 @@ mpers-m%.stamp: $(srcdir_mpers_source_files) | printers.h
        for f in $^; do \
                D="$(D)" \
                READELF="$(READELF)" \
-               CC="$(CC)" \
+               CC="$(mpers_CC)" \
                CFLAGS="$(mpers_sh_opts) -DMPERS_IS_$(mpers_NAME)" \
                CPP="$(CPP)" \
                CPPFLAGS="$(mpers_sh_opts) -DIN_MPERS -DMPERS_IS_$(mpers_NAME)" \
-               $(srcdir)/mpers.sh $(mpers_NAME) $(mpers_CC_FLAGS) $$f || exit; \
+               $(srcdir)/mpers.sh $(mpers_NAME) "$(mpers_CC_FLAGS)" $$f || exit; \
        done
        > $@
 
@@ -9551,10 +10498,14 @@ printers.h: $(mpers_preproc_files)
 native_printer_decls.h native_printer_defs.h: mpers_PREFIX =
 
 @HAVE_M32_MPERS_TRUE@$(mpers_m32_targets): mpers_NAME = m32
-@HAVE_M32_MPERS_TRUE@$(mpers_m32_targets): mpers_CC_FLAGS = @cc_flags_m32@
+@HAVE_M32_MPERS_TRUE@$(mpers_m32_targets): mpers_CC_FLAGS = @CFLAGS_FOR_M32@ @cc_flags_m32@
+@HAVE_M32_MPERS_TRUE@$(mpers_m32_targets): mpers_CPPFLAGS = @CPPFLAGS_FOR_M32@
+@HAVE_M32_MPERS_TRUE@$(mpers_m32_targets): mpers_CC = @CC_FOR_M32@
 
 @HAVE_MX32_MPERS_TRUE@$(mpers_mx32_targets): mpers_NAME = mx32
-@HAVE_MX32_MPERS_TRUE@$(mpers_mx32_targets): mpers_CC_FLAGS = @cc_flags_mx32@
+@HAVE_MX32_MPERS_TRUE@$(mpers_mx32_targets): mpers_CC_FLAGS = @CFLAGS_FOR_MX32@ @cc_flags_mx32@
+@HAVE_MX32_MPERS_TRUE@$(mpers_mx32_targets): mpers_CPPFLAGS = @CPPFLAGS_FOR_MX32@
+@HAVE_MX32_MPERS_TRUE@$(mpers_mx32_targets): mpers_CC = @CC_FOR_MX32@
 
 clean-local:
        -rm -rf mpers-m32 mpers-mx32
diff --git a/NEWS b/NEWS
index 0e5bfa260bec549e002ccdd00440aa81570cb132..bfead285715b734e6b712fa2e3aabd39b60ce3fb 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,243 @@
+Noteworthy changes in release 5.9 (2020-09-24)
+==============================================
+
+* Improvements
+  * Added -n/--syscall-number option for printing syscall numbers.
+  * Added --pidns-translation option for PID namespace translation (addresses
+    Fedora bug #1035433).
+  * Implemented decoding of close_range syscall.
+  * Implemented decoding of TEE_* ioctl commands.
+  * Implemented decoding of struct msginfo argument of IPC_INFO
+    and MSG_INFO msgctl syscall commands.
+  * Implemented decoding of struct msqid_ds argument of MSG_STAT
+    and MSG_STAT_ANY msgctl syscall commands.
+  * Implemented decoding of struct seminfo argument of IPC_INFO
+    and SEM_INFO semctl syscall commands.
+  * Implemented decoding of struct semid_ds argument of IPC_SET,
+    IPC_STAT, SEM_STAT, and SEM_STAT_ANY semctl syscall commands.
+  * Implemented decoding of struct shminfo argument of IPC_INFO
+    shmctl syscall command.
+  * Implemented decoding of struct shm_info argument of SHM_INFO
+    shmctl syscall command.
+  * Implemented decoding of struct shmid_ds argument of SHM_STAT
+    and SHM_STAT_ANY shmctl syscall commands.
+  * Updated lists of BPF_*, CAP_*, FAN_*, IFLA_*, INET_DIAG_REQ_*,
+    IORING_FEAT_*, IP_*, IPV6_*, KVM_*, NDA_*, PTP_PEROUT_*, RTPROT_*,
+    and V4L2_FMT_FLAG_* constants.
+  * Updated lists of ioctl commands from Linux 5.9.
+
+Noteworthy changes in release 5.8 (2020-08-06)
+==============================================
+
+* Changes in behaviour
+  * Modified %process class to contain system calls associated with
+    process lifecycle (creation, exec, termination):
+    kill, tkill, tgkill, pidfd_send_signal and rt_sigqueueinfo are added,
+    arch_prctl and unshare are removed.
+
+* Improvements
+  * Implemented decoding of faccessat2 syscall.
+  * Implemented decoding of LOOP_CONFIGURE ioctl command.
+  * Updated decoding of io_uring_setup syscall to match Linux 5.8.
+  * Updated lists of AUDIT_*, BPF_*, CAP_*, ETH_*, INET_DIAG_*, IORING_*,
+    KEYCTL_*, KVM_*, LOOP_*, NDA_*, RTC_*, TCA_*, STATX_*, and *_MAGIC
+    constants.
+  * Updated lists of ioctl commands from Linux 5.8.
+
+* Bug fixes
+  * Added statx syscall to %fstat trace class.
+
+Noteworthy changes in release 5.7 (2020-06-01)
+==============================================
+
+* Improvements
+  * Implemented interval specification in "when=" subexpression of syscall
+    tampering expressions.
+  * Added -e trace=%clock option for tracing syscalls reading of modifying
+    system clocks.
+  * Implemented decoding of BPF_LINK_CREATE and BPF_LINK_UPDATE bpf
+    syscall commands.
+  * Updated decoding of clone3 syscall to match Linux 5.7.
+  * Updated lists of BPF_*, BTRFS_*, CLONE_*, FAN_*, IORING_*, KVM_*,
+    LWTUNNEL_*, MREMAP_*, PERF_*, SECCOMP_*, UFFDIO_*, V4L2_*, and XDP_*
+    constants.
+  * Updated lists of ioctl commands from Linux 5.7.
+
+* Bug fixes
+  * Fixed decoding of getdents and getdents64 syscalls when they return
+    a lot of directory entries.
+  * Fixed pathtrace matching of openat2 syscall.
+  * Fixed build on systems without fork.
+
+Noteworthy changes in release 5.6 (2020-04-07)
+==============================================
+
+* Changes in behaviour
+  * Messages about unknown tracees are now subject to the strace's quietness
+    setting (-q/--quiet).
+  * If -A option is provided without -o, or -S option without -c/-C, a warning
+    about its uselessness is printed now.
+  * The usage of --seccomp-bpf without -f has no effect now.
+
+* Improvements
+  * Every short option now has a long option alias, which also has enabled
+    the following improvements:
+    * Ability to use human-readable settings for -I/--interruptible,
+      -D/--daemonize options.
+    * Ability to silence specific messages using -e quiet/--quiet qualifier
+      (an alias for the -q option), including those that couldn't be silenced
+      previously (path resolution messages and "superseded by execve").
+    * Ability to specify selected fd decoding features using
+      -e decode-fds/--decode-fds qualifier (an alias for the -y option).
+    * Ability to set precision for the absolute timestamp, relative timestamp,
+      and syscall time output (using --absolute-timestamps,
+      --relative-timestamps, and --syscall-times options, respectively).
+  * Implemented ability to select the set of displayed columns in the call
+    summary output (-U/--summary-columns option).
+  * Implemented ability to sort on any summary column.
+  * Implemented ability to show information about minimum and maximum call
+    duration in the call summary output (addresses Debian bug #240945).
+  * Implemented printing of PIDs associated with pidfds in -yy mode.
+  * Implemented PTRACE_GETREGS API support on hppa, sh, sh64, and xtensa.
+  * Improved performance of libdw-based stack traces printing by implementing
+    a symbol-to-address cache.
+  * Implemented decoding of openat2 and pidfd_getfd syscalls.
+  * Enhanced io_uring_register, prctl, sched_getattr, and sched_setattr syscall
+    decoding.
+  * Implemented decoding of BPF_MAP_LOOKUP_BATCH,
+    BPF_MAP_LOOKUP_AND_DELETE_BATCH, BPF_MAP_UPDATE_BATCH, and
+    BPF_MAP_DELETE_BATCH bpf syscall commands.
+  * Enhanced decoding of BPF_MAP_CREATE and BPF_PROG_ATTACH bpf syscall
+    commands.
+  * Enhanced decoding of RTC_VL_READ ioctl command.
+  * Enhanced decoding of IFLA_* netlink attributes.
+  * Implemented HIDIOCGRAWUNIQ() ioctl command number printing.
+  * Wired up kexec_file_load syscall on hppa.
+  * Updated lists of AUDIT_*, BPF_*, CLONE_*, GRND_*, IFLA_*, IORING_*,
+    IPPROTO_*, KEY_*, KVM_*, RTM_F_*, SCHED_*, and *_MAGIC constants.
+  * Updated lists of ioctl commands from Linux 5.6.
+
+* Bug fixes
+  * Fixed build on csky abiv1 architecture.
+  * Various minor fixes in VIDIOC_* ioctl output formatting.
+  * Fix printing of the size field for _IOC_NONE ioctl command numbers on sparc.
+
+* Portability
+  * On hppa, linux kernel >= 4.7 is required.
+    On sh and sh64, linux kernel >= 2.6.28 is required.
+    Older versions without a decent PTRACE_GETREGS support will not work.
+
+Noteworthy changes in release 5.5 (2020-02-06)
+==============================================
+
+* Improvements
+  * Added -e trace=%creds option for tracing syscalls related to process
+    credentials.
+  * Enhanced decoding of arch_prctl, keyctl, io_uring_register, io_uring_setup,
+    and perf_event_open syscalls.
+  * Enhanced decoding of BPF_PROG_LOAD bpf syscall command.
+  * Updated decoding of clone3 syscall to match Linux 5.5.
+  * Implemented decoding of TCA_ACT_FLAGS and TCA_STATS_PKT64 netlink
+    attributes.
+  * Updated lists of AUDIT_*, BPF_*, CLONE_*, KEY_*, KVM_*, PPC_PTRACE_*,
+    SCTP_*, STATX_*, TIPC_*, V4L2_*, and *_MAGIC constants.
+  * Updated lists of ioctl commands from Linux 5.5.
+  * Enhanced manual page and "strace --help" output.
+
+* Bug fixes
+  * Fixed stack trace printing for early syscalls when strace is configured
+    to use libdw backend for stack tracing (addresses Fedora bug #1788636).
+  * Fixed stack trace caching when --seccomp-bpf option is specified.
+  * Fixed potentially unaligned access in decoder of SO_TIMESTAMP*_NEW
+    control messages.
+  * Fixed decoding of NDA_LLADDR netlink neighbor table attribute.
+  * Fixed build of mpers support when CFLAGS contains -flto.
+  * Fixed build on no-MMU architectures.
+  * Fixed build with glibc-2.31 and Linux kernel headers < 5.3.
+  * Fixed tests for glibc-2.31.
+
+Noteworthy changes in release 5.4 (2019-11-28)
+==============================================
+
+* Improvements
+  * Implemented -DD and -DDD options that move strace into a separate
+    process group and session, respectively.
+  * Enhanced seccomp-bpf tracee syscall filtering support by implementing
+    new "binary match" BPF program generation strategy and automatically
+    choosing the strategy that generates the shortest BPF program.
+  * Implemented decoding of BPF_BTF_GET_NEXT_ID bpf syscall command.
+  * Enhanced decoding of BPF_MAP_LOOKUP_ELEM bpf syscall command.
+  * Implemented PTP_CLOCK_GETCAPS2, PTP_EXTTS_REQUEST2, PTP_PEROUT_REQUEST2,
+    PTP_ENABLE_PPS2, and PTP_SYS_OFFSET2 ioctl decoding.
+  * Updated lists of BPF_*, CAN_*, KEXEC_*, KVM_*, MADV_*, MSG_*, P_*, PR_*,
+    PTP_*, SCTP_*, and V4L2_* constants.
+  * Implemented ability to build ARM EABI mpers support using a separate
+    compiler on aarch64.
+  * Updated lists of ioctl commands from Linux 5.4.
+  * Enhanced manual page.
+
+* Bug fixes
+  * Fixed -b execve when --seccomp-bpf option is specified.
+  * Fixed decoding of BPF_PROG_LOAD bpf syscall command.
+  * Fixed build on no-MMU architectures.
+  * Fixed build on antique systems that do not provide necessary definitions
+    of AUDIT_ARCH_* constants.
+
+Noteworthy changes in release 5.3 (2019-09-25)
+==============================================
+
+* Improvements
+  * Implemented usage of seccomp-bpf for stopping tracees only for filtered
+    syscalls.  Use --seccomp-bpf option to enable.
+  * Implemented decoding of pidfd_open and clone3 syscalls.
+  * Enhanced decoding of io_cancel, io_submit, s390_sthyi, and syslog syscalls.
+  * Enhanced decoding of NETLINK_ROUTE protocol.
+  * Implemented decoding of UNIX_DIAG_UID netlink attribute.
+  * Implemented decoding of WDIOC_* ioctl commands.
+  * Enhanced syscall count statistics: overhead is now applied per-call,
+    added ability for sorting on errors field.
+  * Syscall delay injection and overhead values can now be supplied with
+    time measure unit suffix and provided in IEEE 754 floating point format.
+  * Updated lists of AUDIT_*, BPF_*, ETH_*, KEYCTL_*, KVM_*, MAP_*, SO_*, TCP_*, V4L2_*,
+    XDP_*, and *_MAGIC constants.
+  * Updated lists of ioctl commands from Linux 5.3.
+  * Enhanced manual page.
+
+* Bug fixes
+  * Fixed syscall tampering on arc, avr32, csky, ia64, m68k, metag, mips,
+    nios2, or1k, riscv, s390, s390x, sparc, sparc64, and tile architectures
+    when PTRACE_GET_SYSCALL_INFO is in use.
+  * Fixed decoding of sockaddr_hci (AF_BLUETOOTH) addresses that lack
+    hci_channel field.
+  * Fixed evdev ioctl bitset decoding.
+  * Fixed tests on alpha with Linux kernel headers 5.1+.
+
+* Portability
+  * Removed support for decoding syscalls in range [1024...1079] on AArch64
+    architecture as this range has never been implemented in mainline kernel
+    releases.
+
+Noteworthy changes in release 5.2 (2019-07-12)
+==============================================
+
+* Improvements
+  * Implemented syscall return status filtering with -e status=set option
+    and its aliases: -z (limit syscall printing to successful syscalls only)
+    and -Z (limit syscall printing to failed syscalls only).  Addresses Debian
+    bug #176376.
+  * Implemented decoding of open_tree, move_mount, fsopen, fsconfig, fsmount,
+    and fspick syscalls.
+  * Enhanced decoding of bpf, clone, inotify_init, mbind, and set_mempolicy
+    syscalls.
+  * Updated lists of AT_*, AUDIT_*, BPF_*, CLONE_*, ETH_*, KEY_*, KVM_*, MPOL_*,
+    TIPC_*, and V4L2_* constants.
+  * Updated lists of ioctl commands from Linux 5.2.
+
+* Bug fixes
+  * Fixed syscall tampering on powerpc and powerpc64 when
+    PTRACE_GET_SYSCALL_INFO is in use.
+  * Fixed build with cutting-edge toolchain.
+
 Noteworthy changes in release 5.1 (2019-05-22)
 ==============================================
 
index c39085af995dadc903147fb9cb2ea13d8f4c674e..de1476793722ee7b9654661830a4cb146e460159 100644 (file)
@@ -57,7 +57,7 @@ you want to change it or regenerate 'configure' using a newer version of
 
   2. Type 'make' to compile the package.
 
-  3. Optionally, type 'make check' to run any self-tests that come with
+  3. Optionally, type 'make -k check' to run any self-tests that come with
      the package, generally using the just-built uninstalled binaries.
 
   4. Type 'make install' to install the programs and any data files and
index 5c2e6e99ea4aa675d4b4f6287a55a299c12c17f2..759e0a6a233500bc6e256933b4d9b25f6f6ab6df 100644 (file)
--- a/access.c
+++ b/access.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014-2018 The strace developers.
+ * Copyright (c) 2014-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -9,25 +9,42 @@
 
 #include <fcntl.h>
 
-#include "xlat/access_flags.h"
+#include "xlat/access_modes.h"
+#include "xlat/faccessat_flags.h"
 
-static int
+static void
 decode_access(struct tcb *tcp, int offset)
 {
        printpath(tcp, tcp->u_arg[offset]);
        tprints(", ");
-       printflags(access_flags, tcp->u_arg[offset + 1], "?_OK");
+       printflags(access_modes, tcp->u_arg[offset + 1], "?_OK");
+}
 
+SYS_FUNC(access)
+{
+       decode_access(tcp, 0);
        return RVAL_DECODED;
 }
 
-SYS_FUNC(access)
+static void
+decode_faccessat(struct tcb *tcp)
 {
-       return decode_access(tcp, 0);
+       print_dirfd(tcp, tcp->u_arg[0]);
+       tprints(", ");
+       decode_access(tcp, 1);
 }
 
+
 SYS_FUNC(faccessat)
 {
-       print_dirfd(tcp, tcp->u_arg[0]);
-       return decode_access(tcp, 1);
+       decode_faccessat(tcp);
+       return RVAL_DECODED;
+}
+
+SYS_FUNC(faccessat2)
+{
+       decode_faccessat(tcp);
+       tprints(", ");
+       printflags(faccessat_flags, tcp->u_arg[3], "AT_???");
+       return RVAL_DECODED;
 }
index ce4cb716a44b7ad97785d266261c1135a339bc2f..7cf44c9453d9a2b2fcaf05ec2c0cacd0f603b5b6 100644 (file)
@@ -1,6 +1,6 @@
-# generated automatically by aclocal 1.16.1 -*- Autoconf -*-
+# generated automatically by aclocal 1.16.2 -*- Autoconf -*-
 
-# Copyright (C) 1996-2018 Free Software Foundation, Inc.
+# Copyright (C) 1996-2020 Free Software Foundation, Inc.
 
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -20,7 +20,7 @@ You have another version of autoconf.  It may work, but is not guaranteed to.
 If you have problems, you may need to regenerate the build system entirely.
 To do so, use the procedure documented by the package, typically 'autoreconf'.])])
 
-# Copyright (C) 2002-2018 Free Software Foundation, Inc.
+# Copyright (C) 2002-2020 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -35,7 +35,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION],
 [am__api_version='1.16'
 dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
 dnl require some minimum version.  Point them to the right macro.
-m4_if([$1], [1.16.1], [],
+m4_if([$1], [1.16.2], [],
       [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
 ])
 
@@ -51,14 +51,74 @@ m4_define([_AM_AUTOCONF_VERSION], [])
 # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
 # This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.16.1])dnl
+[AM_AUTOMAKE_VERSION([1.16.2])dnl
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
 _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
 
+# Copyright (C) 2011-2020 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_AR([ACT-IF-FAIL])
+# -------------------------
+# Try to determine the archiver interface, and trigger the ar-lib wrapper
+# if it is needed.  If the detection of archiver interface fails, run
+# ACT-IF-FAIL (default is to abort configure with a proper error message).
+AC_DEFUN([AM_PROG_AR],
+[AC_BEFORE([$0], [LT_INIT])dnl
+AC_BEFORE([$0], [AC_PROG_LIBTOOL])dnl
+AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([ar-lib])dnl
+AC_CHECK_TOOLS([AR], [ar lib "link -lib"], [false])
+: ${AR=ar}
+
+AC_CACHE_CHECK([the archiver ($AR) interface], [am_cv_ar_interface],
+  [AC_LANG_PUSH([C])
+   am_cv_ar_interface=ar
+   AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int some_variable = 0;]])],
+     [am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&AS_MESSAGE_LOG_FD'
+      AC_TRY_EVAL([am_ar_try])
+      if test "$ac_status" -eq 0; then
+        am_cv_ar_interface=ar
+      else
+        am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&AS_MESSAGE_LOG_FD'
+        AC_TRY_EVAL([am_ar_try])
+        if test "$ac_status" -eq 0; then
+          am_cv_ar_interface=lib
+        else
+          am_cv_ar_interface=unknown
+        fi
+      fi
+      rm -f conftest.lib libconftest.a
+     ])
+   AC_LANG_POP([C])])
+
+case $am_cv_ar_interface in
+ar)
+  ;;
+lib)
+  # Microsoft lib, so override with the ar-lib wrapper script.
+  # FIXME: It is wrong to rewrite AR.
+  # But if we don't then we get into trouble of one sort or another.
+  # A longer-term fix would be to have automake use am__AR in this case,
+  # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something
+  # similar.
+  AR="$am_aux_dir/ar-lib $AR"
+  ;;
+unknown)
+  m4_default([$1],
+             [AC_MSG_ERROR([could not determine $AR interface])])
+  ;;
+esac
+AC_SUBST([AR])dnl
+])
+
 # AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
 
-# Copyright (C) 2001-2018 Free Software Foundation, Inc.
+# Copyright (C) 2001-2020 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -110,7 +170,7 @@ am_aux_dir=`cd "$ac_aux_dir" && pwd`
 
 # AM_CONDITIONAL                                            -*- Autoconf -*-
 
-# Copyright (C) 1997-2018 Free Software Foundation, Inc.
+# Copyright (C) 1997-2020 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -141,7 +201,7 @@ AC_CONFIG_COMMANDS_PRE(
 Usually this means the macro was only invoked conditionally.]])
 fi])])
 
-# Copyright (C) 1999-2018 Free Software Foundation, Inc.
+# Copyright (C) 1999-2020 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -332,7 +392,7 @@ _AM_SUBST_NOTMAKE([am__nodep])dnl
 
 # Generate code to set up dependency tracking.              -*- Autoconf -*-
 
-# Copyright (C) 1999-2018 Free Software Foundation, Inc.
+# Copyright (C) 1999-2020 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -371,7 +431,9 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
   done
   if test $am_rc -ne 0; then
     AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments
-    for automatic dependency tracking.  Try re-running configure with the
+    for automatic dependency tracking.  If GNU make was not used, consider
+    re-running the configure script with MAKE="gmake" (or whatever is
+    necessary).  You can also try re-running configure with the
     '--disable-dependency-tracking' option to at least be able to build
     the package (albeit without support for automatic dependency tracking).])
   fi
@@ -398,7 +460,7 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
 
 # AM_EXTRA_RECURSIVE_TARGETS                                -*- Autoconf -*-
 
-# Copyright (C) 2012-2018 Free Software Foundation, Inc.
+# Copyright (C) 2012-2020 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -415,7 +477,7 @@ AC_DEFUN([AM_EXTRA_RECURSIVE_TARGETS], [])
 
 # Do all the work for Automake.                             -*- Autoconf -*-
 
-# Copyright (C) 1996-2018 Free Software Foundation, Inc.
+# Copyright (C) 1996-2020 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -612,7 +674,7 @@ for _am_header in $config_headers :; do
 done
 echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
 
-# Copyright (C) 2001-2018 Free Software Foundation, Inc.
+# Copyright (C) 2001-2020 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -633,7 +695,7 @@ if test x"${install_sh+set}" != xset; then
 fi
 AC_SUBST([install_sh])])
 
-# Copyright (C) 2003-2018 Free Software Foundation, Inc.
+# Copyright (C) 2003-2020 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -655,7 +717,7 @@ AC_SUBST([am__leading_dot])])
 # Add --enable-maintainer-mode option to configure.         -*- Autoconf -*-
 # From Jim Meyering
 
-# Copyright (C) 1996-2018 Free Software Foundation, Inc.
+# Copyright (C) 1996-2020 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -690,7 +752,7 @@ AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
 
 # Check to see how 'make' treats includes.                 -*- Autoconf -*-
 
-# Copyright (C) 2001-2018 Free Software Foundation, Inc.
+# Copyright (C) 2001-2020 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -733,7 +795,7 @@ AC_SUBST([am__quote])])
 
 # Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
 
-# Copyright (C) 1997-2018 Free Software Foundation, Inc.
+# Copyright (C) 1997-2020 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -772,7 +834,7 @@ fi
 
 # Helper functions for option handling.                     -*- Autoconf -*-
 
-# Copyright (C) 2001-2018 Free Software Foundation, Inc.
+# Copyright (C) 2001-2020 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -801,7 +863,7 @@ AC_DEFUN([_AM_SET_OPTIONS],
 AC_DEFUN([_AM_IF_OPTION],
 [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
 
-# Copyright (C) 1999-2018 Free Software Foundation, Inc.
+# Copyright (C) 1999-2020 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -848,7 +910,7 @@ AC_LANG_POP([C])])
 # For backward compatibility.
 AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
 
-# Copyright (C) 2001-2018 Free Software Foundation, Inc.
+# Copyright (C) 2001-2020 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -867,7 +929,7 @@ AC_DEFUN([AM_RUN_LOG],
 
 # Check to make sure that the build environment is sane.    -*- Autoconf -*-
 
-# Copyright (C) 1996-2018 Free Software Foundation, Inc.
+# Copyright (C) 1996-2020 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -948,7 +1010,7 @@ AC_CONFIG_COMMANDS_PRE(
 rm -f conftest.file
 ])
 
-# Copyright (C) 2009-2018 Free Software Foundation, Inc.
+# Copyright (C) 2009-2020 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -1008,7 +1070,7 @@ AC_SUBST([AM_BACKSLASH])dnl
 _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
 ])
 
-# Copyright (C) 2001-2018 Free Software Foundation, Inc.
+# Copyright (C) 2001-2020 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -1036,7 +1098,7 @@ fi
 INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
 AC_SUBST([INSTALL_STRIP_PROGRAM])])
 
-# Copyright (C) 2006-2018 Free Software Foundation, Inc.
+# Copyright (C) 2006-2020 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -1055,7 +1117,7 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
 
 # Check how to create a tarball.                            -*- Autoconf -*-
 
-# Copyright (C) 2004-2018 Free Software Foundation, Inc.
+# Copyright (C) 2004-2020 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -1186,12 +1248,55 @@ AC_SUBST([am__tar])
 AC_SUBST([am__untar])
 ]) # _AM_PROG_TAR
 
+m4_include([xlat/btrfs_compress_types.m4])
+m4_include([xlat/close_range_flags.m4])
+m4_include([xlat/loop_flags_options.m4])
+m4_include([xlat/rtnl_ifla_xdp_attached_mode.m4])
+m4_include([xlat/rtnl_ifla_xdp_attrs.m4])
+m4_include([xlat/rtnl_link_attrs.m4])
+m4_include([xlat/rtnl_tc_action_attrs.m4])
+m4_include([xlat/rtnl_tca_stab_attrs.m4])
+m4_include([xlat/rtnl_tca_stats_attrs.m4])
+m4_include([xlat/st_check_enums.m4])
+m4_include([xlat/sysctl_kern.m4])
+m4_include([xlat/sysctl_net.m4])
+m4_include([xlat/sysctl_net_core.m4])
+m4_include([xlat/sysctl_net_ipv4.m4])
+m4_include([xlat/sysctl_net_ipv4_conf.m4])
+m4_include([xlat/sysctl_net_ipv4_route.m4])
+m4_include([xlat/sysctl_net_ipv6.m4])
+m4_include([xlat/sysctl_net_ipv6_route.m4])
+m4_include([xlat/sysctl_net_unix.m4])
+m4_include([xlat/sysctl_root.m4])
+m4_include([xlat/sysctl_vm.m4])
+m4_include([xlat/v4l2_buf_types.m4])
+m4_include([xlat/v4l2_colorspaces.m4])
+m4_include([xlat/v4l2_control_types.m4])
+m4_include([xlat/v4l2_fields.m4])
+m4_include([xlat/v4l2_framesize_types.m4])
+m4_include([xlat/v4l2_memories.m4])
+m4_include([xlat/v4l2_tuner_types.m4])
+m4_include([xlat/waitid_types.m4])
+m4_include([types/check-btrfs.m4])
+m4_include([types/check-cryptouser.m4])
+m4_include([types/check-evdev.m4])
+m4_include([types/check-io_uring.m4])
+m4_include([types/check-loop.m4])
+m4_include([types/check-openat2.m4])
+m4_include([types/check-rtnl_link.m4])
+m4_include([types/check-rtnl_mdb.m4])
+m4_include([types/check-rtnl_neightbl.m4])
+m4_include([types/check-rtnl_route.m4])
+m4_include([types/check-tee.m4])
+m4_include([types/check-v4l2.m4])
+m4_include([types/st_check_types.m4])
 m4_include([m4/ax_code_coverage.m4])
 m4_include([m4/ax_prog_cc_for_build.m4])
 m4_include([m4/ax_valgrind_check.m4])
 m4_include([m4/bpf_attr.m4])
 m4_include([m4/mpers.m4])
 m4_include([m4/st_demangle.m4])
+m4_include([m4/st_esyscmd_s.m4])
 m4_include([m4/st_libdw.m4])
 m4_include([m4/st_libunwind.m4])
 m4_include([m4/st_save_restore_var.m4])
index eb3158b7f747551dcdfeb64eb93e3080b5110e57..f1aec4be3cb1e27ddc498d237bb0e1dfba307474 100644 (file)
@@ -1,6 +1,7 @@
 /*
  * Copyright (c) 2002-2004 Roland McGrath <roland@redhat.com>
  * Copyright (c) 2009-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2014-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -82,7 +83,8 @@ SYS_FUNC(sched_setaffinity)
        const int pid = tcp->u_arg[0];
        const unsigned int len = tcp->u_arg[1];
 
-       tprintf("%d, %u, ", pid, len);
+       printpid(tcp, pid, PT_TGID);
+       tprintf(", %u, ", len);
        print_affinitylist(tcp, tcp->u_arg[2], len);
 
        return RVAL_DECODED;
@@ -94,7 +96,8 @@ SYS_FUNC(sched_getaffinity)
        const unsigned int len = tcp->u_arg[1];
 
        if (entering(tcp)) {
-               tprintf("%d, %u, ", pid, len);
+               printpid(tcp, pid, PT_TGID);
+               tprintf(", %u, ", len);
        } else {
                print_affinitylist(tcp, tcp->u_arg[2], tcp->u_rval);
        }
diff --git a/aio.c b/aio.c
index a825cae34f92a3042020e6789e7b3e7565d560a5..45b1da88fe3dae322c5241fd906d6059a8389986 100644 (file)
--- a/aio.c
+++ b/aio.c
 
 #include "xlat/aio_cmds.h"
 
+#ifdef HAVE_STRUCT_IOCB_AIO_FLAGS
+# include "xlat/aio_iocb_flags.h"
+#endif
+
+#ifdef HAVE_STRUCT_IOCB_AIO_RW_FLAGS
+# define AIO_RW_FLAGS_FIELD aio_rw_flags
+#else
+# define AIO_RW_FLAGS_FIELD aio_reserved1
+#endif
+
 SYS_FUNC(io_setup)
 {
        if (entering(tcp))
@@ -32,7 +42,7 @@ SYS_FUNC(io_destroy)
 }
 
 enum iocb_sub {
-       SUB_NONE, SUB_COMMON, SUB_VECTOR
+       SUB_NONE, SUB_COMMON, SUB_VECTOR, SUB_POLL
 };
 
 static enum iocb_sub
@@ -44,14 +54,13 @@ tprint_lio_opcode(unsigned int cmd)
                [IOCB_CMD_FSYNC]        = SUB_NONE,
                [IOCB_CMD_FDSYNC]       = SUB_NONE,
                [IOCB_CMD_PREADX]       = SUB_NONE,
-               [IOCB_CMD_POLL]         = SUB_NONE,
+               [IOCB_CMD_POLL]         = SUB_POLL,
                [IOCB_CMD_NOOP]         = SUB_NONE,
                [IOCB_CMD_PREADV]       = SUB_VECTOR,
                [IOCB_CMD_PWRITEV]      = SUB_VECTOR,
        };
 
-       printxval_indexn_ex(ARRSZ_PAIR(aio_cmds) - 1, cmd, "IOCB_CMD_???",
-                           XLAT_STYLE_FMT_U);
+       printxval_ex(aio_cmds, cmd, "IOCB_CMD_???", XLAT_STYLE_FMT_U);
 
        return cmd < ARRAY_SIZE(subs) ? subs[cmd] : SUB_NONE;
 }
@@ -59,13 +68,16 @@ tprint_lio_opcode(unsigned int cmd)
 static void
 print_common_flags(struct tcb *tcp, const struct iocb *cb)
 {
-/* IOCB_FLAG_RESFD is available since v2.6.22-rc1~47 */
-#ifdef IOCB_FLAG_RESFD
+/* aio_flags and aio_resfd fields are available since v2.6.22-rc1~47 */
+#ifdef HAVE_STRUCT_IOCB_AIO_FLAGS
+       if (cb->aio_flags)
+               PRINT_FIELD_FLAGS(", ", *cb, aio_flags, aio_iocb_flags,
+                                 "IOCB_FLAG_???");
+
        if (cb->aio_flags & IOCB_FLAG_RESFD)
                PRINT_FIELD_FD(", ", *cb, aio_resfd, tcp);
-
-       if (cb->aio_flags & ~IOCB_FLAG_RESFD)
-               PRINT_FIELD_X(", ", *cb, aio_flags);
+       else if (cb->aio_resfd)
+               PRINT_FIELD_X(", ", *cb, aio_resfd);
 #endif
 }
 
@@ -82,20 +94,25 @@ print_iocb_header(struct tcb *tcp, const struct iocb *cb)
 {
        enum iocb_sub sub;
 
-       if (cb->aio_data){
-               PRINT_FIELD_X("", *cb, aio_data);
-               tprints(", ");
-       }
+       PRINT_FIELD_X("", *cb, aio_data);
 
-       if (cb->aio_key) {
-               PRINT_FIELD_U("", *cb, aio_key);
-               tprints(", ");
+       if (cb->aio_key)
+               PRINT_FIELD_U(", ", *cb, aio_key);
+
+       if (cb->AIO_RW_FLAGS_FIELD) {
+               tprints(", aio_rw_flags=");
+               printflags(rwf_flags, cb->AIO_RW_FLAGS_FIELD, "RWF_???");
        }
 
-       tprints("aio_lio_opcode=");
+       tprints("aio_lio_opcode=");
        sub = tprint_lio_opcode(cb->aio_lio_opcode);
-       if (cb->aio_reqprio)
+
+       if (cb->aio_flags & IOCB_FLAG_IOPRIO) {
+               tprints(", aio_reqprio=");
+               print_ioprio(zero_extend_signed_to_ull(cb->aio_reqprio));
+       } else if (cb->aio_reqprio) {
                PRINT_FIELD_D(", ", *cb, aio_reqprio);
+       }
 
        PRINT_FIELD_FD(", ", *cb, aio_fildes, tcp);
 
@@ -135,6 +152,10 @@ print_iocb(struct tcb *tcp, const struct iocb *cb)
                PRINT_FIELD_D(", ", *cb, aio_offset);
                print_common_flags(tcp, cb);
                break;
+       case SUB_POLL:
+               PRINT_FIELD_FLAGS(", ", *cb, aio_buf, pollflags, "POLL???");
+               print_common_flags(tcp, cb);
+               break;
        case SUB_NONE:
                break;
        }
diff --git a/ar-lib b/ar-lib
new file mode 100755 (executable)
index 0000000..1e9388e
--- /dev/null
+++ b/ar-lib
@@ -0,0 +1,271 @@
+#! /bin/sh
+# Wrapper for Microsoft lib.exe
+
+me=ar-lib
+scriptversion=2019-07-04.01; # UTC
+
+# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Written by Peter Rosin <peda@lysator.liu.se>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <https://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+
+# func_error message
+func_error ()
+{
+  echo "$me: $1" 1>&2
+  exit 1
+}
+
+file_conv=
+
+# func_file_conv build_file
+# Convert a $build file to $host form and store it in $file
+# Currently only supports Windows hosts.
+func_file_conv ()
+{
+  file=$1
+  case $file in
+    / | /[!/]*) # absolute file, and not a UNC file
+      if test -z "$file_conv"; then
+       # lazily determine how to convert abs files
+       case `uname -s` in
+         MINGW*)
+           file_conv=mingw
+           ;;
+         CYGWIN* | MSYS*)
+           file_conv=cygwin
+           ;;
+         *)
+           file_conv=wine
+           ;;
+       esac
+      fi
+      case $file_conv in
+       mingw)
+         file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
+         ;;
+       cygwin | msys)
+         file=`cygpath -m "$file" || echo "$file"`
+         ;;
+       wine)
+         file=`winepath -w "$file" || echo "$file"`
+         ;;
+      esac
+      ;;
+  esac
+}
+
+# func_at_file at_file operation archive
+# Iterate over all members in AT_FILE performing OPERATION on ARCHIVE
+# for each of them.
+# When interpreting the content of the @FILE, do NOT use func_file_conv,
+# since the user would need to supply preconverted file names to
+# binutils ar, at least for MinGW.
+func_at_file ()
+{
+  operation=$2
+  archive=$3
+  at_file_contents=`cat "$1"`
+  eval set x "$at_file_contents"
+  shift
+
+  for member
+  do
+    $AR -NOLOGO $operation:"$member" "$archive" || exit $?
+  done
+}
+
+case $1 in
+  '')
+     func_error "no command.  Try '$0 --help' for more information."
+     ;;
+  -h | --h*)
+    cat <<EOF
+Usage: $me [--help] [--version] PROGRAM ACTION ARCHIVE [MEMBER...]
+
+Members may be specified in a file named with @FILE.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "$me, version $scriptversion"
+    exit $?
+    ;;
+esac
+
+if test $# -lt 3; then
+  func_error "you must specify a program, an action and an archive"
+fi
+
+AR=$1
+shift
+while :
+do
+  if test $# -lt 2; then
+    func_error "you must specify a program, an action and an archive"
+  fi
+  case $1 in
+    -lib | -LIB \
+    | -ltcg | -LTCG \
+    | -machine* | -MACHINE* \
+    | -subsystem* | -SUBSYSTEM* \
+    | -verbose | -VERBOSE \
+    | -wx* | -WX* )
+      AR="$AR $1"
+      shift
+      ;;
+    *)
+      action=$1
+      shift
+      break
+      ;;
+  esac
+done
+orig_archive=$1
+shift
+func_file_conv "$orig_archive"
+archive=$file
+
+# strip leading dash in $action
+action=${action#-}
+
+delete=
+extract=
+list=
+quick=
+replace=
+index=
+create=
+
+while test -n "$action"
+do
+  case $action in
+    d*) delete=yes  ;;
+    x*) extract=yes ;;
+    t*) list=yes    ;;
+    q*) quick=yes   ;;
+    r*) replace=yes ;;
+    s*) index=yes   ;;
+    S*)             ;; # the index is always updated implicitly
+    c*) create=yes  ;;
+    u*)             ;; # TODO: don't ignore the update modifier
+    v*)             ;; # TODO: don't ignore the verbose modifier
+    *)
+      func_error "unknown action specified"
+      ;;
+  esac
+  action=${action#?}
+done
+
+case $delete$extract$list$quick$replace,$index in
+  yes,* | ,yes)
+    ;;
+  yesyes*)
+    func_error "more than one action specified"
+    ;;
+  *)
+    func_error "no action specified"
+    ;;
+esac
+
+if test -n "$delete"; then
+  if test ! -f "$orig_archive"; then
+    func_error "archive not found"
+  fi
+  for member
+  do
+    case $1 in
+      @*)
+        func_at_file "${1#@}" -REMOVE "$archive"
+        ;;
+      *)
+        func_file_conv "$1"
+        $AR -NOLOGO -REMOVE:"$file" "$archive" || exit $?
+        ;;
+    esac
+  done
+
+elif test -n "$extract"; then
+  if test ! -f "$orig_archive"; then
+    func_error "archive not found"
+  fi
+  if test $# -gt 0; then
+    for member
+    do
+      case $1 in
+        @*)
+          func_at_file "${1#@}" -EXTRACT "$archive"
+          ;;
+        *)
+          func_file_conv "$1"
+          $AR -NOLOGO -EXTRACT:"$file" "$archive" || exit $?
+          ;;
+      esac
+    done
+  else
+    $AR -NOLOGO -LIST "$archive" | tr -d '\r' | sed -e 's/\\/\\\\/g' \
+      | while read member
+        do
+          $AR -NOLOGO -EXTRACT:"$member" "$archive" || exit $?
+        done
+  fi
+
+elif test -n "$quick$replace"; then
+  if test ! -f "$orig_archive"; then
+    if test -z "$create"; then
+      echo "$me: creating $orig_archive"
+    fi
+    orig_archive=
+  else
+    orig_archive=$archive
+  fi
+
+  for member
+  do
+    case $1 in
+    @*)
+      func_file_conv "${1#@}"
+      set x "$@" "@$file"
+      ;;
+    *)
+      func_file_conv "$1"
+      set x "$@" "$file"
+      ;;
+    esac
+    shift
+    shift
+  done
+
+  if test -n "$orig_archive"; then
+    $AR -NOLOGO -OUT:"$archive" "$orig_archive" "$@" || exit $?
+  else
+    $AR -NOLOGO -OUT:"$archive" "$@" || exit $?
+  fi
+
+elif test -n "$list"; then
+  if test ! -f "$orig_archive"; then
+    func_error "archive not found"
+  fi
+  $AR -NOLOGO -LIST "$archive" || exit $?
+fi
index 5f691eaea7a69d80e714f6a3c7d1e9c0f64c79c6..8012818f13b37cd7020f07461563111f95e65344 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -152,6 +152,7 @@ lookup_class(const char *s)
                { "%file",      TRACE_FILE      },
                { "%memory",    TRACE_MEMORY    },
                { "%process",   TRACE_PROCESS   },
+               { "%creds",     TRACE_CREDS     },
                { "%signal",    TRACE_SIGNAL    },
                { "%ipc",       TRACE_IPC       },
                { "%net",       TRACE_NETWORK   },
@@ -164,6 +165,7 @@ lookup_class(const char *s)
                { "%fstatfs",   TRACE_FSTATFS   },
                { "%%statfs",   TRACE_STATFS_LIKE       },
                { "%pure",      TRACE_PURE      },
+               { "%clock",     TRACE_CLOCK     },
                /* legacy class names */
                { "desc",       TRACE_DESC      },
                { "file",       TRACE_FILE      },
diff --git a/block.c b/block.c
index 893269d095bf626d49c600334db461a838d7ed24..783a4b5aa30d8aeab0fba47c3eafbb4e348a4d2d 100644 (file)
--- a/block.c
+++ b/block.c
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2009, 2010 Jeff Mahoney <jeffm@suse.com>
  * Copyright (c) 2011-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2011-2018 The strace developers.
+ * Copyright (c) 2011-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -179,7 +179,7 @@ MPERS_PRINTER_DECL(int, block_ioctl, struct tcb *const tcp,
                        PRINT_FIELD_U(", ", buts, buf_nr);
                        PRINT_FIELD_U(", ", buts, start_lba);
                        PRINT_FIELD_U(", ", buts, end_lba);
-                       PRINT_FIELD_U(", ", buts, pid);
+                       PRINT_FIELD_TGID(", ", buts, pid, tcp);
                        return 0;
                } else {
                        struct_blk_user_trace_setup buts;
diff --git a/bpf.c b/bpf.c
index 420b44026eb832e83465e3e0f980302e2c01250d..0ec33ba4cab47156f0aaf72ddd561cfd31590083 100644 (file)
--- a/bpf.c
+++ b/bpf.c
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2017 Quentin Monnet <quentin.monnet@6wind.com>
- * Copyright (c) 2015-2019 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -23,6 +23,7 @@
 #include "xlat/bpf_map_flags.h"
 #include "xlat/bpf_prog_types.h"
 #include "xlat/bpf_prog_flags.h"
+#include "xlat/bpf_map_lookup_elem_flags.h"
 #include "xlat/bpf_map_update_elem_flags.h"
 #include "xlat/bpf_attach_type.h"
 #include "xlat/bpf_attach_flags.h"
@@ -131,9 +132,9 @@ print_ebpf_insn(struct tcb * const tcp, void * const elem_buf,
 
        /* We can't use PRINT_FIELD_XVAL on bit fields */
        tprints(", dst_reg=");
-       printxval_index(ebpf_regs, insn->dst_reg, "BPF_REG_???");
+       printxval(ebpf_regs, insn->dst_reg, "BPF_REG_???");
        tprints(", src_reg=");
-       printxval_index(ebpf_regs, insn->src_reg, "BPF_REG_???");
+       printxval(ebpf_regs, insn->src_reg, "BPF_REG_???");
 
        PRINT_FIELD_D(", ", *insn, off);
        PRINT_FIELD_X(", ", *insn, imm);
@@ -159,8 +160,8 @@ print_ebpf_prog(struct tcb *const tcp, const uint64_t addr, const uint32_t len)
 
 BEGIN_BPF_CMD_DECODER(BPF_MAP_CREATE)
 {
-       PRINT_FIELD_XVAL_INDEX("{", attr, map_type, bpf_map_types,
-                              "BPF_MAP_TYPE_???");
+       PRINT_FIELD_XVAL("{", attr, map_type, bpf_map_types,
+                        "BPF_MAP_TYPE_???");
        PRINT_FIELD_U(", ", attr, key_size);
        PRINT_FIELD_U(", ", attr, value_size);
        PRINT_FIELD_U(", ", attr, max_entries);
@@ -223,6 +224,14 @@ BEGIN_BPF_CMD_DECODER(BPF_MAP_CREATE)
        PRINT_FIELD_FD(", ", attr, btf_fd, tcp);
        PRINT_FIELD_U(", ", attr, btf_key_type_id);
        PRINT_FIELD_U(", ", attr, btf_value_type_id);
+
+       /*
+        * The following field was introduced by Linux commit
+        * v5.6-rc1~151^2~46^2~37^2~5.
+        */
+       if (len <= offsetof(struct BPF_MAP_CREATE_struct, btf_vmlinux_value_type_id))
+               break;
+       PRINT_FIELD_U(", ", attr, btf_vmlinux_value_type_id);
 }
 END_BPF_CMD_DECODER(RVAL_DECODED | RVAL_FD)
 
@@ -231,6 +240,11 @@ BEGIN_BPF_CMD_DECODER(BPF_MAP_LOOKUP_ELEM)
        PRINT_FIELD_FD("{", attr, map_fd, tcp);
        PRINT_FIELD_ADDR64(", ", attr, key);
        PRINT_FIELD_ADDR64(", ", attr, value);
+       /* flags field was added in Linux commit v5.1-rc1~178^2~375^2~4^2~3.  */
+       if (len <= offsetof(struct BPF_MAP_LOOKUP_ELEM_struct, flags))
+               break;
+       PRINT_FIELD_FLAGS(", ", attr, flags, bpf_map_lookup_elem_flags,
+                         "BPF_???");
 }
 END_BPF_CMD_DECODER(RVAL_DECODED)
 
@@ -241,8 +255,8 @@ BEGIN_BPF_CMD_DECODER(BPF_MAP_UPDATE_ELEM)
        PRINT_FIELD_FD("{", attr, map_fd, tcp);
        PRINT_FIELD_ADDR64(", ", attr, key);
        PRINT_FIELD_ADDR64(", ", attr, value);
-       PRINT_FIELD_XVAL_INDEX(", ", attr, flags, bpf_map_update_elem_flags,
-                              "BPF_???");
+       PRINT_FIELD_XVAL(", ", attr, flags, bpf_map_update_elem_flags,
+                        "BPF_???");
 }
 END_BPF_CMD_DECODER(RVAL_DECODED)
 
@@ -261,15 +275,21 @@ BEGIN_BPF_CMD_DECODER(BPF_MAP_GET_NEXT_KEY)
 }
 END_BPF_CMD_DECODER(RVAL_DECODED)
 
+BEGIN_BPF_CMD_DECODER(BPF_MAP_FREEZE)
+{
+       PRINT_FIELD_FD("{", attr, map_fd, tcp);
+}
+END_BPF_CMD_DECODER(RVAL_DECODED)
+
 BEGIN_BPF_CMD_DECODER(BPF_PROG_LOAD)
 {
-       PRINT_FIELD_XVAL_INDEX("{", attr, prog_type, bpf_prog_types,
-                              "BPF_PROG_TYPE_???");
+       PRINT_FIELD_XVAL("{", attr, prog_type, bpf_prog_types,
+                        "BPF_PROG_TYPE_???");
        PRINT_FIELD_U(", ", attr, insn_cnt);
        tprints(", insns=");
        print_ebpf_prog(tcp, attr.insns, attr.insn_cnt);
 
-       tprintf(", license=");
+       tprints(", license=");
        print_big_u64_addr(attr.license);
        printstr(tcp, attr.license);
 
@@ -278,7 +298,7 @@ BEGIN_BPF_CMD_DECODER(BPF_PROG_LOAD)
                break;
        PRINT_FIELD_U(", ", attr, log_level);
        PRINT_FIELD_U(", ", attr, log_size);
-       tprintf(", log_buf=");
+       tprints(", log_buf=");
        print_big_u64_addr(attr.log_buf);
        printstr_ex(tcp, attr.log_buf, attr.log_size, QUOTE_0_TERMINATED);
 
@@ -331,12 +351,22 @@ BEGIN_BPF_CMD_DECODER(BPF_PROG_LOAD)
        PRINT_FIELD_U(", ", attr, line_info_rec_size);
        PRINT_FIELD_ADDR64(", ", attr, line_info);
        PRINT_FIELD_U(", ", attr, line_info_cnt);
+
+       /* attach_btf_id was added in Linux commit v5.5-rc1~174^2~310^2~19^2~7 */
+       if (len <= offsetof(struct BPF_PROG_LOAD_struct, attach_btf_id))
+               break;
+       PRINT_FIELD_U(", ", attr, attach_btf_id);
+
+       /* attach_prog_fd was added in Linux commit v5.5-rc1~174^2~49^2~12^2~3 */
+       if (len <= offsetof(struct BPF_PROG_LOAD_struct, attach_prog_fd))
+               break;
+       PRINT_FIELD_FD(", ", attr, attach_prog_fd, tcp);
 }
 END_BPF_CMD_DECODER(RVAL_DECODED | RVAL_FD)
 
 BEGIN_BPF_CMD_DECODER(BPF_OBJ_PIN)
 {
-       tprintf("{pathname=");
+       tprints("{pathname=");
        print_big_u64_addr(attr.pathname);
        printpath(tcp, attr.pathname);
 
@@ -356,18 +386,24 @@ BEGIN_BPF_CMD_DECODER(BPF_PROG_ATTACH)
 {
        PRINT_FIELD_FD("{", attr, target_fd, tcp);
        PRINT_FIELD_FD(", ", attr, attach_bpf_fd, tcp);
-       PRINT_FIELD_XVAL_INDEX(", ", attr, attach_type, bpf_attach_type,
-                              "BPF_???");
+       PRINT_FIELD_XVAL(", ", attr, attach_type, bpf_attach_type, "BPF_???");
        PRINT_FIELD_FLAGS(", ", attr, attach_flags, bpf_attach_flags,
                          "BPF_F_???");
+
+       /*
+        * The following field was introduced by Linux commit
+        * v5.6-rc1~151^2~199^2~7^2~3.
+        */
+       if (len <= offsetof(struct BPF_PROG_ATTACH_struct, replace_bpf_fd))
+               break;
+       PRINT_FIELD_FD(", ", attr, replace_bpf_fd, tcp);
 }
 END_BPF_CMD_DECODER(RVAL_DECODED)
 
 BEGIN_BPF_CMD_DECODER(BPF_PROG_DETACH)
 {
        PRINT_FIELD_FD("{", attr, target_fd, tcp);
-       PRINT_FIELD_XVAL_INDEX(", ", attr, attach_type, bpf_attach_type,
-                              "BPF_???");
+       PRINT_FIELD_XVAL(", ", attr, attach_type, bpf_attach_type, "BPF_???");
 }
 END_BPF_CMD_DECODER(RVAL_DECODED)
 
@@ -381,6 +417,16 @@ BEGIN_BPF_CMD_DECODER(BPF_PROG_TEST_RUN)
        PRINT_FIELD_ADDR64(", ", attr, data_out);
        PRINT_FIELD_U(", ", attr, repeat);
        PRINT_FIELD_U(", ", attr, duration);
+       /*
+        * The following four fields were introduced by Linux commit
+        * v5.2-rc1~133^2~193^2~6.
+        */
+       if (len > offsetof(struct BPF_PROG_TEST_RUN_struct, ctx_size_in)) {
+               PRINT_FIELD_U(", ", attr, ctx_size_in);
+               PRINT_FIELD_U(", ", attr, ctx_size_out);
+               PRINT_FIELD_ADDR64(", ", attr, ctx_in);
+               PRINT_FIELD_ADDR64(", ", attr, ctx_out);
+       }
        tprints("}");
 }
 END_BPF_CMD_DECODER(RVAL_DECODED)
@@ -399,6 +445,7 @@ BEGIN_BPF_CMD_DECODER(BPF_PROG_GET_NEXT_ID)
 END_BPF_CMD_DECODER(RVAL_DECODED)
 
 #define decode_BPF_MAP_GET_NEXT_ID decode_BPF_PROG_GET_NEXT_ID
+#define decode_BPF_BTF_GET_NEXT_ID decode_BPF_PROG_GET_NEXT_ID
 
 BEGIN_BPF_CMD_DECODER(BPF_PROG_GET_FD_BY_ID)
 {
@@ -491,6 +538,11 @@ print_bpf_map_info(struct tcb * const tcp, uint32_t bpf_fd,
        if (len <= offsetof(struct bpf_map_info_struct, ifindex))
                goto print_bpf_map_info_end;
        PRINT_FIELD_IFINDEX(", ", info, ifindex);
+       /*
+        * btf_vmlinux_value_type_id field was crammed in
+        * by Linux commit v5.6-rc1~151^2~46^2~37^2~5.
+        */
+       PRINT_FIELD_U(", ", info, btf_vmlinux_value_type_id);
        PRINT_FIELD_DEV(", ", info, netns_dev);
        PRINT_FIELD_U(", ", info, netns_ino);
 
@@ -792,7 +844,7 @@ BEGIN_BPF_CMD_DECODER(BPF_OBJ_GET_INFO_BY_FD)
                if (saved && (saved->info_len != attr.info_len))
                        tprintf(" => %u", attr.info_len);
 
-               tprintf(", info=");
+               tprints(", info=");
        }
 
        print_bpf_obj_info(tcp, attr.bpf_fd, attr.info, attr.info_len, saved);
@@ -810,8 +862,8 @@ BEGIN_BPF_CMD_DECODER(BPF_PROG_QUERY)
 
        if (entering(tcp)) {
                PRINT_FIELD_FD("{query={", attr, target_fd, tcp);
-               PRINT_FIELD_XVAL_INDEX(", ", attr, attach_type, bpf_attach_type,
-                                      "BPF_???");
+               PRINT_FIELD_XVAL(", ", attr, attach_type, bpf_attach_type,
+                                "BPF_???");
                PRINT_FIELD_FLAGS(", ", attr, query_flags, bpf_query_flags,
                                  "BPF_F_QUERY_???");
                PRINT_FIELD_FLAGS(", ", attr, attach_flags, bpf_attach_flags,
@@ -842,7 +894,7 @@ BEGIN_BPF_CMD_DECODER(BPF_RAW_TRACEPOINT_OPEN)
 {
        enum { TP_NAME_SIZE = 128 };
 
-       tprintf("{raw_tracepoint={name=");
+       tprints("{raw_tracepoint={name=");
        print_big_u64_addr(attr.name);
        printstr_ex(tcp, attr.name, TP_NAME_SIZE, QUOTE_0_TERMINATED);
 
@@ -875,7 +927,7 @@ BEGIN_BPF_CMD_DECODER(BPF_TASK_FD_QUERY)
        if (entering(tcp)) {
                set_tcb_priv_ulong(tcp, attr.buf_len);
 
-               PRINT_FIELD_U("{task_fd_query={", attr, pid);
+               PRINT_FIELD_TGID("{task_fd_query={", attr, pid, tcp);
                PRINT_FIELD_FD(", ", attr, fd, tcp);
                PRINT_FIELD_U(", ", attr, flags);
                PRINT_FIELD_U(", ", attr, buf_len);
@@ -889,12 +941,12 @@ BEGIN_BPF_CMD_DECODER(BPF_TASK_FD_QUERY)
                tprintf(" => %u", attr.buf_len);
 
        const unsigned int buf_len = MIN(saved_buf_len, attr.buf_len);
-       tprintf(", buf=");
+       tprints(", buf=");
        print_big_u64_addr(attr.buf);
        printstr_ex(tcp, attr.buf, buf_len, QUOTE_0_TERMINATED);
        PRINT_FIELD_U(", ", attr, prog_id);
-       PRINT_FIELD_XVAL_INDEX(", ", attr, fd_type, bpf_task_fd_type,
-                              "BPF_FD_TYPE_???");
+       PRINT_FIELD_XVAL(", ", attr, fd_type, bpf_task_fd_type,
+                        "BPF_FD_TYPE_???");
        PRINT_FIELD_X(", ", attr, probe_offset);
        PRINT_FIELD_X(", ", attr, probe_addr);
 
@@ -902,6 +954,112 @@ BEGIN_BPF_CMD_DECODER(BPF_TASK_FD_QUERY)
 }
 END_BPF_CMD_DECODER(RVAL_DECODED)
 
+BEGIN_BPF_CMD_DECODER(BPF_MAP_LOOKUP_BATCH)
+{
+       if (entering(tcp)) {
+               set_tcb_priv_ulong(tcp, attr.count);
+
+               PRINT_FIELD_ADDR64("{batch={", attr, in_batch);
+               PRINT_FIELD_ADDR64(", ", attr, out_batch);
+               PRINT_FIELD_ADDR64(", ", attr, keys);
+               PRINT_FIELD_ADDR64(", ", attr, values);
+               PRINT_FIELD_U(", ", attr, count);
+               PRINT_FIELD_FD(", ", attr, map_fd, tcp);
+               PRINT_FIELD_FLAGS(", ", attr, elem_flags,
+                                 bpf_map_lookup_elem_flags, "BPF_???");
+               PRINT_FIELD_X(", ", attr, flags);
+
+               tprints("}");
+       } else {
+               unsigned long count = get_tcb_priv_ulong(tcp);
+
+               if (count != attr.count) {
+                       PRINT_FIELD_U("=> {batch={", attr, count);
+                       tprints("}}");
+               }
+
+               return RVAL_DECODED;
+       }
+}
+END_BPF_CMD_DECODER(0)
+
+#define decode_BPF_MAP_LOOKUP_AND_DELETE_BATCH decode_BPF_MAP_LOOKUP_BATCH
+
+BEGIN_BPF_CMD_DECODER(BPF_MAP_UPDATE_BATCH)
+{
+       if (entering(tcp)) {
+               set_tcb_priv_ulong(tcp, attr.count);
+
+               PRINT_FIELD_ADDR64("{batch={", attr, keys);
+               PRINT_FIELD_ADDR64(", ", attr, values);
+               PRINT_FIELD_U(", ", attr, count);
+               PRINT_FIELD_FD(", ", attr, map_fd, tcp);
+               PRINT_FIELD_FLAGS(", ", attr, elem_flags,
+                                 bpf_map_lookup_elem_flags, "BPF_???");
+               PRINT_FIELD_X(", ", attr, flags);
+
+               tprints("}");
+       } else {
+               unsigned long count = get_tcb_priv_ulong(tcp);
+
+               if (count != attr.count) {
+                       PRINT_FIELD_U("=> {batch={", attr, count);
+                       tprints("}}");
+               }
+
+               return RVAL_DECODED;
+       }
+}
+END_BPF_CMD_DECODER(0)
+
+BEGIN_BPF_CMD_DECODER(BPF_MAP_DELETE_BATCH)
+{
+       if (entering(tcp)) {
+               set_tcb_priv_ulong(tcp, attr.count);
+
+               PRINT_FIELD_ADDR64("{batch={", attr, keys);
+               PRINT_FIELD_U(", ", attr, count);
+               PRINT_FIELD_FD(", ", attr, map_fd, tcp);
+               PRINT_FIELD_FLAGS(", ", attr, elem_flags,
+                                 bpf_map_lookup_elem_flags, "BPF_???");
+               PRINT_FIELD_X(", ", attr, flags);
+
+               tprints("}");
+       } else {
+               unsigned long count = get_tcb_priv_ulong(tcp);
+
+               if (count != attr.count) {
+                       PRINT_FIELD_U("=> {batch={", attr, count);
+                       tprints("}}");
+               }
+
+               return RVAL_DECODED;
+       }
+}
+END_BPF_CMD_DECODER(0)
+
+BEGIN_BPF_CMD_DECODER(BPF_LINK_CREATE)
+{
+       PRINT_FIELD_FD("{link_create={", attr, prog_fd, tcp);
+       PRINT_FIELD_FD(", ", attr, target_fd, tcp);
+       PRINT_FIELD_XVAL(", ", attr, attach_type, bpf_attach_type, "BPF_???");
+       PRINT_FIELD_X(", ", attr, flags);
+       tprints("}");
+}
+END_BPF_CMD_DECODER(RVAL_DECODED | RVAL_FD)
+
+BEGIN_BPF_CMD_DECODER(BPF_LINK_UPDATE)
+{
+       PRINT_FIELD_FD("{link_update={", attr, link_fd, tcp);
+       PRINT_FIELD_FD(", ", attr, new_prog_fd, tcp);
+       PRINT_FIELD_FLAGS(", ", attr, flags, bpf_attach_flags,
+                         "BPF_F_???");
+       if (attr.flags & BPF_F_REPLACE)
+               PRINT_FIELD_FD(", ", attr, old_prog_fd, tcp);
+       tprints("}");
+}
+END_BPF_CMD_DECODER(RVAL_DECODED)
+
 SYS_FUNC(bpf)
 {
        static const bpf_cmd_decoder_t bpf_cmd_decoders[] = {
@@ -927,6 +1085,14 @@ SYS_FUNC(bpf)
                BPF_CMD_ENTRY(BPF_BTF_GET_FD_BY_ID),
                BPF_CMD_ENTRY(BPF_TASK_FD_QUERY),
                BPF_CMD_ENTRY(BPF_MAP_LOOKUP_AND_DELETE_ELEM),
+               BPF_CMD_ENTRY(BPF_MAP_FREEZE),
+               BPF_CMD_ENTRY(BPF_BTF_GET_NEXT_ID),
+               BPF_CMD_ENTRY(BPF_MAP_LOOKUP_BATCH),
+               BPF_CMD_ENTRY(BPF_MAP_LOOKUP_AND_DELETE_BATCH),
+               BPF_CMD_ENTRY(BPF_MAP_UPDATE_BATCH),
+               BPF_CMD_ENTRY(BPF_MAP_DELETE_BATCH),
+               BPF_CMD_ENTRY(BPF_LINK_CREATE),
+               BPF_CMD_ENTRY(BPF_LINK_UPDATE),
        };
 
        const unsigned int cmd = tcp->u_arg[0];
@@ -935,7 +1101,7 @@ SYS_FUNC(bpf)
        int rc = RVAL_DECODED;
 
        if (entering(tcp)) {
-               printxval_index(bpf_commands, cmd, "BPF_???");
+               printxval(bpf_commands, cmd, "BPF_???");
                tprints(", ");
        }
 
index 5c5eee410c8a037d304af5b0f4a166f5ca028e57..bed011bb909c0ad43d4dc9f11d2e7f30bf96b296 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2018-2019 The strace developers.
+ * Copyright (c) 2018-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -49,21 +49,23 @@ struct BPF_MAP_CREATE_struct {
        uint32_t btf_fd;
        uint32_t btf_key_type_id;
        uint32_t btf_value_type_id;
+       uint32_t btf_vmlinux_value_type_id;
 };
 
 # define BPF_MAP_CREATE_struct_size \
        sizeof(struct BPF_MAP_CREATE_struct)
-# define expected_BPF_MAP_CREATE_struct_size 60
+# define expected_BPF_MAP_CREATE_struct_size 64
 
 struct BPF_MAP_LOOKUP_ELEM_struct {
        uint32_t map_fd;
        uint64_t ATTRIBUTE_ALIGNED(8) key;
        uint64_t ATTRIBUTE_ALIGNED(8) value;
+       uint64_t ATTRIBUTE_ALIGNED(8) flags;
 };
 
 # define BPF_MAP_LOOKUP_ELEM_struct_size \
        sizeof(struct BPF_MAP_LOOKUP_ELEM_struct)
-# define expected_BPF_MAP_LOOKUP_ELEM_struct_size 24
+# define expected_BPF_MAP_LOOKUP_ELEM_struct_size 32
 
 struct BPF_MAP_UPDATE_ELEM_struct {
        uint32_t map_fd;
@@ -95,6 +97,14 @@ struct BPF_MAP_GET_NEXT_KEY_struct {
        sizeof(struct BPF_MAP_GET_NEXT_KEY_struct)
 # define expected_BPF_MAP_GET_NEXT_KEY_struct_size 24
 
+struct BPF_MAP_FREEZE_struct {
+       uint32_t map_fd;
+};
+
+# define BPF_MAP_FREEZE_struct_size \
+       sizeof(struct BPF_MAP_FREEZE_struct)
+# define expected_BPF_MAP_FREEZE_struct_size 4
+
 struct BPF_PROG_LOAD_struct {
        uint32_t prog_type;
        uint32_t insn_cnt;
@@ -115,11 +125,13 @@ struct BPF_PROG_LOAD_struct {
        uint32_t line_info_rec_size;
        uint64_t ATTRIBUTE_ALIGNED(8) line_info;
        uint32_t line_info_cnt;
+       uint32_t attach_btf_id;
+       uint32_t attach_prog_fd;
 };
 
 # define BPF_PROG_LOAD_struct_size \
-       offsetofend(struct BPF_PROG_LOAD_struct, line_info_cnt)
-# define expected_BPF_PROG_LOAD_struct_size 108
+       offsetofend(struct BPF_PROG_LOAD_struct, attach_prog_fd)
+# define expected_BPF_PROG_LOAD_struct_size 116
 
 struct BPF_OBJ_PIN_struct {
        uint64_t ATTRIBUTE_ALIGNED(8) pathname;
@@ -139,11 +151,12 @@ struct BPF_PROG_ATTACH_struct {
        uint32_t attach_bpf_fd;
        uint32_t attach_type;
        uint32_t attach_flags;
+       uint32_t replace_bpf_fd;
 };
 
 # define BPF_PROG_ATTACH_struct_size \
        sizeof(struct BPF_PROG_ATTACH_struct)
-# define expected_BPF_PROG_ATTACH_struct_size 16
+# define expected_BPF_PROG_ATTACH_struct_size 20
 
 struct BPF_PROG_DETACH_struct {
        uint32_t target_fd;
@@ -164,11 +177,15 @@ struct BPF_PROG_TEST_RUN_struct /* test */ {
        uint64_t ATTRIBUTE_ALIGNED(8) data_out;
        uint32_t repeat;
        uint32_t duration;
+       uint32_t ctx_size_in;
+       uint32_t ctx_size_out;
+       uint64_t ATTRIBUTE_ALIGNED(8) ctx_in;
+       uint64_t ATTRIBUTE_ALIGNED(8) ctx_out;
 };
 
 # define BPF_PROG_TEST_RUN_struct_size \
        sizeof(struct BPF_PROG_TEST_RUN_struct)
-# define expected_BPF_PROG_TEST_RUN_struct_size 40
+# define expected_BPF_PROG_TEST_RUN_struct_size 64
 
 struct BPF_PROG_GET_NEXT_ID_struct {
        uint32_t start_id;
@@ -183,6 +200,9 @@ struct BPF_PROG_GET_NEXT_ID_struct {
 # define BPF_MAP_GET_NEXT_ID_struct BPF_PROG_GET_NEXT_ID_struct
 # define BPF_MAP_GET_NEXT_ID_struct_size BPF_PROG_GET_NEXT_ID_struct_size
 
+# define BPF_BTF_GET_NEXT_ID_struct BPF_PROG_GET_NEXT_ID_struct
+# define BPF_BTF_GET_NEXT_ID_struct_size BPF_PROG_GET_NEXT_ID_struct_size
+
 struct BPF_PROG_GET_FD_BY_ID_struct {
        uint32_t prog_id;
        uint32_t next_id;
@@ -280,6 +300,7 @@ struct bpf_map_info_struct {
        uint32_t map_flags;
        char     name[BPF_OBJ_NAME_LEN];
        uint32_t ifindex;
+       uint32_t btf_vmlinux_value_type_id;
        /*
         * The kernel UAPI is broken by Linux commit
         * v4.16-rc1~123^2~109^2~5^2~4 .
@@ -340,4 +361,50 @@ struct bpf_prog_info_struct {
        sizeof(struct bpf_prog_info_struct)
 # define expected_bpf_prog_info_struct_size 208
 
+struct BPF_MAP_LOOKUP_BATCH_struct /* batch */ {
+       uint64_t ATTRIBUTE_ALIGNED(8) in_batch;
+       uint64_t ATTRIBUTE_ALIGNED(8) out_batch;
+       uint64_t ATTRIBUTE_ALIGNED(8) keys;
+       uint64_t ATTRIBUTE_ALIGNED(8) values;
+       uint32_t count;
+       uint32_t map_fd;
+       uint64_t ATTRIBUTE_ALIGNED(8) elem_flags;
+       uint64_t ATTRIBUTE_ALIGNED(8) flags;
+};
+
+# define BPF_MAP_LOOKUP_BATCH_struct_size \
+       sizeof(struct BPF_MAP_LOOKUP_BATCH_struct)
+# define expected_BPF_MAP_LOOKUP_BATCH_struct_size 56
+
+# define BPF_MAP_LOOKUP_AND_DELETE_BATCH_struct BPF_MAP_LOOKUP_BATCH_struct
+# define BPF_MAP_LOOKUP_AND_DELETE_BATCH_struct_size BPF_MAP_LOOKUP_BATCH_struct_size
+
+# define BPF_MAP_UPDATE_BATCH_struct BPF_MAP_LOOKUP_BATCH_struct
+# define BPF_MAP_UPDATE_BATCH_struct_size BPF_MAP_LOOKUP_BATCH_struct_size
+
+# define BPF_MAP_DELETE_BATCH_struct BPF_MAP_LOOKUP_BATCH_struct
+# define BPF_MAP_DELETE_BATCH_struct_size BPF_MAP_LOOKUP_BATCH_struct_size
+
+struct BPF_LINK_CREATE_struct /* link_create */ {
+       uint32_t prog_fd;
+       uint32_t target_fd;
+       uint32_t attach_type;
+       uint32_t flags;
+};
+
+# define BPF_LINK_CREATE_struct_size \
+       sizeof(struct BPF_LINK_CREATE_struct)
+# define expected_BPF_LINK_CREATE_struct_size 16
+
+struct BPF_LINK_UPDATE_struct /* link_update */ {
+       uint32_t link_fd;
+       uint32_t new_prog_fd;
+       uint32_t flags;
+       uint32_t old_prog_fd;
+};
+
+# define BPF_LINK_UPDATE_struct_size \
+       sizeof(struct BPF_LINK_UPDATE_struct)
+# define expected_BPF_LINK_UPDATE_struct_size 16
+
 #endif /* !STRACE_BPF_ATTR_H */
index a88c07c0efcec2a37c3b9209e51fd68c7b4e552e..1fde3591539e7780b15b574ff88aeecc10c8e64a 100644 (file)
 # include "bpf_attr.h"
 # include "static_assert.h"
 
-# define SoM(type_, member_) (sizeof(((type_ *)0)->member_))
 
 # ifdef HAVE_UNION_BPF_ATTR_MAP_TYPE
-       static_assert(SoM(struct BPF_MAP_CREATE_struct, map_type) == SoM(union bpf_attr, map_type),
+       static_assert(sizeof_field(struct BPF_MAP_CREATE_struct, map_type) == sizeof_field(union bpf_attr, map_type),
                      "BPF_MAP_CREATE_struct.map_type size mismatch");
        static_assert(offsetof(struct BPF_MAP_CREATE_struct, map_type) == offsetof(union bpf_attr, map_type),
                      "BPF_MAP_CREATE_struct.map_type offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_MAP_TYPE */
 
 # ifdef HAVE_UNION_BPF_ATTR_KEY_SIZE
-       static_assert(SoM(struct BPF_MAP_CREATE_struct, key_size) == SoM(union bpf_attr, key_size),
+       static_assert(sizeof_field(struct BPF_MAP_CREATE_struct, key_size) == sizeof_field(union bpf_attr, key_size),
                      "BPF_MAP_CREATE_struct.key_size size mismatch");
        static_assert(offsetof(struct BPF_MAP_CREATE_struct, key_size) == offsetof(union bpf_attr, key_size),
                      "BPF_MAP_CREATE_struct.key_size offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_KEY_SIZE */
 
 # ifdef HAVE_UNION_BPF_ATTR_VALUE_SIZE
-       static_assert(SoM(struct BPF_MAP_CREATE_struct, value_size) == SoM(union bpf_attr, value_size),
+       static_assert(sizeof_field(struct BPF_MAP_CREATE_struct, value_size) == sizeof_field(union bpf_attr, value_size),
                      "BPF_MAP_CREATE_struct.value_size size mismatch");
        static_assert(offsetof(struct BPF_MAP_CREATE_struct, value_size) == offsetof(union bpf_attr, value_size),
                      "BPF_MAP_CREATE_struct.value_size offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_VALUE_SIZE */
 
 # ifdef HAVE_UNION_BPF_ATTR_MAX_ENTRIES
-       static_assert(SoM(struct BPF_MAP_CREATE_struct, max_entries) == SoM(union bpf_attr, max_entries),
+       static_assert(sizeof_field(struct BPF_MAP_CREATE_struct, max_entries) == sizeof_field(union bpf_attr, max_entries),
                      "BPF_MAP_CREATE_struct.max_entries size mismatch");
        static_assert(offsetof(struct BPF_MAP_CREATE_struct, max_entries) == offsetof(union bpf_attr, max_entries),
                      "BPF_MAP_CREATE_struct.max_entries offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_MAX_ENTRIES */
 
 # ifdef HAVE_UNION_BPF_ATTR_MAP_FLAGS
-       static_assert(SoM(struct BPF_MAP_CREATE_struct, map_flags) == SoM(union bpf_attr, map_flags),
+       static_assert(sizeof_field(struct BPF_MAP_CREATE_struct, map_flags) == sizeof_field(union bpf_attr, map_flags),
                      "BPF_MAP_CREATE_struct.map_flags size mismatch");
        static_assert(offsetof(struct BPF_MAP_CREATE_struct, map_flags) == offsetof(union bpf_attr, map_flags),
                      "BPF_MAP_CREATE_struct.map_flags offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_MAP_FLAGS */
 
 # ifdef HAVE_UNION_BPF_ATTR_INNER_MAP_FD
-       static_assert(SoM(struct BPF_MAP_CREATE_struct, inner_map_fd) == SoM(union bpf_attr, inner_map_fd),
+       static_assert(sizeof_field(struct BPF_MAP_CREATE_struct, inner_map_fd) == sizeof_field(union bpf_attr, inner_map_fd),
                      "BPF_MAP_CREATE_struct.inner_map_fd size mismatch");
        static_assert(offsetof(struct BPF_MAP_CREATE_struct, inner_map_fd) == offsetof(union bpf_attr, inner_map_fd),
                      "BPF_MAP_CREATE_struct.inner_map_fd offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_INNER_MAP_FD */
 
 # ifdef HAVE_UNION_BPF_ATTR_NUMA_NODE
-       static_assert(SoM(struct BPF_MAP_CREATE_struct, numa_node) == SoM(union bpf_attr, numa_node),
+       static_assert(sizeof_field(struct BPF_MAP_CREATE_struct, numa_node) == sizeof_field(union bpf_attr, numa_node),
                      "BPF_MAP_CREATE_struct.numa_node size mismatch");
        static_assert(offsetof(struct BPF_MAP_CREATE_struct, numa_node) == offsetof(union bpf_attr, numa_node),
                      "BPF_MAP_CREATE_struct.numa_node offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_NUMA_NODE */
 
 # ifdef HAVE_UNION_BPF_ATTR_MAP_NAME
-       static_assert(SoM(struct BPF_MAP_CREATE_struct, map_name) == SoM(union bpf_attr, map_name),
+       static_assert(sizeof_field(struct BPF_MAP_CREATE_struct, map_name) == sizeof_field(union bpf_attr, map_name),
                      "BPF_MAP_CREATE_struct.map_name size mismatch");
        static_assert(offsetof(struct BPF_MAP_CREATE_struct, map_name) == offsetof(union bpf_attr, map_name),
                      "BPF_MAP_CREATE_struct.map_name offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_MAP_NAME */
 
 # ifdef HAVE_UNION_BPF_ATTR_MAP_IFINDEX
-       static_assert(SoM(struct BPF_MAP_CREATE_struct, map_ifindex) == SoM(union bpf_attr, map_ifindex),
+       static_assert(sizeof_field(struct BPF_MAP_CREATE_struct, map_ifindex) == sizeof_field(union bpf_attr, map_ifindex),
                      "BPF_MAP_CREATE_struct.map_ifindex size mismatch");
        static_assert(offsetof(struct BPF_MAP_CREATE_struct, map_ifindex) == offsetof(union bpf_attr, map_ifindex),
                      "BPF_MAP_CREATE_struct.map_ifindex offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_MAP_IFINDEX */
 
 # ifdef HAVE_UNION_BPF_ATTR_BTF_FD
-       static_assert(SoM(struct BPF_MAP_CREATE_struct, btf_fd) == SoM(union bpf_attr, btf_fd),
+       static_assert(sizeof_field(struct BPF_MAP_CREATE_struct, btf_fd) == sizeof_field(union bpf_attr, btf_fd),
                      "BPF_MAP_CREATE_struct.btf_fd size mismatch");
        static_assert(offsetof(struct BPF_MAP_CREATE_struct, btf_fd) == offsetof(union bpf_attr, btf_fd),
                      "BPF_MAP_CREATE_struct.btf_fd offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_BTF_FD */
 
 # ifdef HAVE_UNION_BPF_ATTR_BTF_KEY_TYPE_ID
-       static_assert(SoM(struct BPF_MAP_CREATE_struct, btf_key_type_id) == SoM(union bpf_attr, btf_key_type_id),
+       static_assert(sizeof_field(struct BPF_MAP_CREATE_struct, btf_key_type_id) == sizeof_field(union bpf_attr, btf_key_type_id),
                      "BPF_MAP_CREATE_struct.btf_key_type_id size mismatch");
        static_assert(offsetof(struct BPF_MAP_CREATE_struct, btf_key_type_id) == offsetof(union bpf_attr, btf_key_type_id),
                      "BPF_MAP_CREATE_struct.btf_key_type_id offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_BTF_KEY_TYPE_ID */
 
 # ifdef HAVE_UNION_BPF_ATTR_BTF_VALUE_TYPE_ID
-       static_assert(SoM(struct BPF_MAP_CREATE_struct, btf_value_type_id) == SoM(union bpf_attr, btf_value_type_id),
+       static_assert(sizeof_field(struct BPF_MAP_CREATE_struct, btf_value_type_id) == sizeof_field(union bpf_attr, btf_value_type_id),
                      "BPF_MAP_CREATE_struct.btf_value_type_id size mismatch");
        static_assert(offsetof(struct BPF_MAP_CREATE_struct, btf_value_type_id) == offsetof(union bpf_attr, btf_value_type_id),
                      "BPF_MAP_CREATE_struct.btf_value_type_id offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_BTF_VALUE_TYPE_ID */
 
+# ifdef HAVE_UNION_BPF_ATTR_BTF_VMLINUX_VALUE_TYPE_ID
+       static_assert(sizeof_field(struct BPF_MAP_CREATE_struct, btf_vmlinux_value_type_id) == sizeof_field(union bpf_attr, btf_vmlinux_value_type_id),
+                     "BPF_MAP_CREATE_struct.btf_vmlinux_value_type_id size mismatch");
+       static_assert(offsetof(struct BPF_MAP_CREATE_struct, btf_vmlinux_value_type_id) == offsetof(union bpf_attr, btf_vmlinux_value_type_id),
+                     "BPF_MAP_CREATE_struct.btf_vmlinux_value_type_id offset mismatch");
+# endif /* HAVE_UNION_BPF_ATTR_BTF_VMLINUX_VALUE_TYPE_ID */
+
 static_assert(BPF_MAP_CREATE_struct_size == expected_BPF_MAP_CREATE_struct_size,
              "BPF_MAP_CREATE_struct_size mismatch");
 
 # ifdef HAVE_UNION_BPF_ATTR_MAP_FD
-       static_assert(SoM(struct BPF_MAP_LOOKUP_ELEM_struct, map_fd) == SoM(union bpf_attr, map_fd),
+       static_assert(sizeof_field(struct BPF_MAP_LOOKUP_ELEM_struct, map_fd) == sizeof_field(union bpf_attr, map_fd),
                      "BPF_MAP_LOOKUP_ELEM_struct.map_fd size mismatch");
        static_assert(offsetof(struct BPF_MAP_LOOKUP_ELEM_struct, map_fd) == offsetof(union bpf_attr, map_fd),
                      "BPF_MAP_LOOKUP_ELEM_struct.map_fd offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_MAP_FD */
 
 # ifdef HAVE_UNION_BPF_ATTR_KEY
-       static_assert(SoM(struct BPF_MAP_LOOKUP_ELEM_struct, key) == SoM(union bpf_attr, key),
+       static_assert(sizeof_field(struct BPF_MAP_LOOKUP_ELEM_struct, key) == sizeof_field(union bpf_attr, key),
                      "BPF_MAP_LOOKUP_ELEM_struct.key size mismatch");
        static_assert(offsetof(struct BPF_MAP_LOOKUP_ELEM_struct, key) == offsetof(union bpf_attr, key),
                      "BPF_MAP_LOOKUP_ELEM_struct.key offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_KEY */
 
 # ifdef HAVE_UNION_BPF_ATTR_VALUE
-       static_assert(SoM(struct BPF_MAP_LOOKUP_ELEM_struct, value) == SoM(union bpf_attr, value),
+       static_assert(sizeof_field(struct BPF_MAP_LOOKUP_ELEM_struct, value) == sizeof_field(union bpf_attr, value),
                      "BPF_MAP_LOOKUP_ELEM_struct.value size mismatch");
        static_assert(offsetof(struct BPF_MAP_LOOKUP_ELEM_struct, value) == offsetof(union bpf_attr, value),
                      "BPF_MAP_LOOKUP_ELEM_struct.value offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_VALUE */
 
+# ifdef HAVE_UNION_BPF_ATTR_FLAGS
+       static_assert(sizeof_field(struct BPF_MAP_LOOKUP_ELEM_struct, flags) == sizeof_field(union bpf_attr, flags),
+                     "BPF_MAP_LOOKUP_ELEM_struct.flags size mismatch");
+       static_assert(offsetof(struct BPF_MAP_LOOKUP_ELEM_struct, flags) == offsetof(union bpf_attr, flags),
+                     "BPF_MAP_LOOKUP_ELEM_struct.flags offset mismatch");
+# endif /* HAVE_UNION_BPF_ATTR_FLAGS */
+
 static_assert(BPF_MAP_LOOKUP_ELEM_struct_size == expected_BPF_MAP_LOOKUP_ELEM_struct_size,
              "BPF_MAP_LOOKUP_ELEM_struct_size mismatch");
 
 # ifdef HAVE_UNION_BPF_ATTR_MAP_FD
-       static_assert(SoM(struct BPF_MAP_UPDATE_ELEM_struct, map_fd) == SoM(union bpf_attr, map_fd),
+       static_assert(sizeof_field(struct BPF_MAP_UPDATE_ELEM_struct, map_fd) == sizeof_field(union bpf_attr, map_fd),
                      "BPF_MAP_UPDATE_ELEM_struct.map_fd size mismatch");
        static_assert(offsetof(struct BPF_MAP_UPDATE_ELEM_struct, map_fd) == offsetof(union bpf_attr, map_fd),
                      "BPF_MAP_UPDATE_ELEM_struct.map_fd offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_MAP_FD */
 
 # ifdef HAVE_UNION_BPF_ATTR_KEY
-       static_assert(SoM(struct BPF_MAP_UPDATE_ELEM_struct, key) == SoM(union bpf_attr, key),
+       static_assert(sizeof_field(struct BPF_MAP_UPDATE_ELEM_struct, key) == sizeof_field(union bpf_attr, key),
                      "BPF_MAP_UPDATE_ELEM_struct.key size mismatch");
        static_assert(offsetof(struct BPF_MAP_UPDATE_ELEM_struct, key) == offsetof(union bpf_attr, key),
                      "BPF_MAP_UPDATE_ELEM_struct.key offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_KEY */
 
 # ifdef HAVE_UNION_BPF_ATTR_VALUE
-       static_assert(SoM(struct BPF_MAP_UPDATE_ELEM_struct, value) == SoM(union bpf_attr, value),
+       static_assert(sizeof_field(struct BPF_MAP_UPDATE_ELEM_struct, value) == sizeof_field(union bpf_attr, value),
                      "BPF_MAP_UPDATE_ELEM_struct.value size mismatch");
        static_assert(offsetof(struct BPF_MAP_UPDATE_ELEM_struct, value) == offsetof(union bpf_attr, value),
                      "BPF_MAP_UPDATE_ELEM_struct.value offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_VALUE */
 
 # ifdef HAVE_UNION_BPF_ATTR_FLAGS
-       static_assert(SoM(struct BPF_MAP_UPDATE_ELEM_struct, flags) == SoM(union bpf_attr, flags),
+       static_assert(sizeof_field(struct BPF_MAP_UPDATE_ELEM_struct, flags) == sizeof_field(union bpf_attr, flags),
                      "BPF_MAP_UPDATE_ELEM_struct.flags size mismatch");
        static_assert(offsetof(struct BPF_MAP_UPDATE_ELEM_struct, flags) == offsetof(union bpf_attr, flags),
                      "BPF_MAP_UPDATE_ELEM_struct.flags offset mismatch");
@@ -150,14 +163,14 @@ static_assert(BPF_MAP_UPDATE_ELEM_struct_size == expected_BPF_MAP_UPDATE_ELEM_st
              "BPF_MAP_UPDATE_ELEM_struct_size mismatch");
 
 # ifdef HAVE_UNION_BPF_ATTR_MAP_FD
-       static_assert(SoM(struct BPF_MAP_DELETE_ELEM_struct, map_fd) == SoM(union bpf_attr, map_fd),
+       static_assert(sizeof_field(struct BPF_MAP_DELETE_ELEM_struct, map_fd) == sizeof_field(union bpf_attr, map_fd),
                      "BPF_MAP_DELETE_ELEM_struct.map_fd size mismatch");
        static_assert(offsetof(struct BPF_MAP_DELETE_ELEM_struct, map_fd) == offsetof(union bpf_attr, map_fd),
                      "BPF_MAP_DELETE_ELEM_struct.map_fd offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_MAP_FD */
 
 # ifdef HAVE_UNION_BPF_ATTR_KEY
-       static_assert(SoM(struct BPF_MAP_DELETE_ELEM_struct, key) == SoM(union bpf_attr, key),
+       static_assert(sizeof_field(struct BPF_MAP_DELETE_ELEM_struct, key) == sizeof_field(union bpf_attr, key),
                      "BPF_MAP_DELETE_ELEM_struct.key size mismatch");
        static_assert(offsetof(struct BPF_MAP_DELETE_ELEM_struct, key) == offsetof(union bpf_attr, key),
                      "BPF_MAP_DELETE_ELEM_struct.key offset mismatch");
@@ -167,21 +180,21 @@ static_assert(BPF_MAP_DELETE_ELEM_struct_size == expected_BPF_MAP_DELETE_ELEM_st
              "BPF_MAP_DELETE_ELEM_struct_size mismatch");
 
 # ifdef HAVE_UNION_BPF_ATTR_MAP_FD
-       static_assert(SoM(struct BPF_MAP_GET_NEXT_KEY_struct, map_fd) == SoM(union bpf_attr, map_fd),
+       static_assert(sizeof_field(struct BPF_MAP_GET_NEXT_KEY_struct, map_fd) == sizeof_field(union bpf_attr, map_fd),
                      "BPF_MAP_GET_NEXT_KEY_struct.map_fd size mismatch");
        static_assert(offsetof(struct BPF_MAP_GET_NEXT_KEY_struct, map_fd) == offsetof(union bpf_attr, map_fd),
                      "BPF_MAP_GET_NEXT_KEY_struct.map_fd offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_MAP_FD */
 
 # ifdef HAVE_UNION_BPF_ATTR_KEY
-       static_assert(SoM(struct BPF_MAP_GET_NEXT_KEY_struct, key) == SoM(union bpf_attr, key),
+       static_assert(sizeof_field(struct BPF_MAP_GET_NEXT_KEY_struct, key) == sizeof_field(union bpf_attr, key),
                      "BPF_MAP_GET_NEXT_KEY_struct.key size mismatch");
        static_assert(offsetof(struct BPF_MAP_GET_NEXT_KEY_struct, key) == offsetof(union bpf_attr, key),
                      "BPF_MAP_GET_NEXT_KEY_struct.key offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_KEY */
 
 # ifdef HAVE_UNION_BPF_ATTR_NEXT_KEY
-       static_assert(SoM(struct BPF_MAP_GET_NEXT_KEY_struct, next_key) == SoM(union bpf_attr, next_key),
+       static_assert(sizeof_field(struct BPF_MAP_GET_NEXT_KEY_struct, next_key) == sizeof_field(union bpf_attr, next_key),
                      "BPF_MAP_GET_NEXT_KEY_struct.next_key size mismatch");
        static_assert(offsetof(struct BPF_MAP_GET_NEXT_KEY_struct, next_key) == offsetof(union bpf_attr, next_key),
                      "BPF_MAP_GET_NEXT_KEY_struct.next_key offset mismatch");
@@ -190,158 +203,182 @@ static_assert(BPF_MAP_DELETE_ELEM_struct_size == expected_BPF_MAP_DELETE_ELEM_st
 static_assert(BPF_MAP_GET_NEXT_KEY_struct_size == expected_BPF_MAP_GET_NEXT_KEY_struct_size,
              "BPF_MAP_GET_NEXT_KEY_struct_size mismatch");
 
+# ifdef HAVE_UNION_BPF_ATTR_MAP_FD
+       static_assert(sizeof_field(struct BPF_MAP_FREEZE_struct, map_fd) == sizeof_field(union bpf_attr, map_fd),
+                     "BPF_MAP_FREEZE_struct.map_fd size mismatch");
+       static_assert(offsetof(struct BPF_MAP_FREEZE_struct, map_fd) == offsetof(union bpf_attr, map_fd),
+                     "BPF_MAP_FREEZE_struct.map_fd offset mismatch");
+# endif /* HAVE_UNION_BPF_ATTR_MAP_FD */
+
+static_assert(BPF_MAP_FREEZE_struct_size == expected_BPF_MAP_FREEZE_struct_size,
+             "BPF_MAP_FREEZE_struct_size mismatch");
+
 # ifdef HAVE_UNION_BPF_ATTR_PROG_TYPE
-       static_assert(SoM(struct BPF_PROG_LOAD_struct, prog_type) == SoM(union bpf_attr, prog_type),
+       static_assert(sizeof_field(struct BPF_PROG_LOAD_struct, prog_type) == sizeof_field(union bpf_attr, prog_type),
                      "BPF_PROG_LOAD_struct.prog_type size mismatch");
        static_assert(offsetof(struct BPF_PROG_LOAD_struct, prog_type) == offsetof(union bpf_attr, prog_type),
                      "BPF_PROG_LOAD_struct.prog_type offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_PROG_TYPE */
 
 # ifdef HAVE_UNION_BPF_ATTR_INSN_CNT
-       static_assert(SoM(struct BPF_PROG_LOAD_struct, insn_cnt) == SoM(union bpf_attr, insn_cnt),
+       static_assert(sizeof_field(struct BPF_PROG_LOAD_struct, insn_cnt) == sizeof_field(union bpf_attr, insn_cnt),
                      "BPF_PROG_LOAD_struct.insn_cnt size mismatch");
        static_assert(offsetof(struct BPF_PROG_LOAD_struct, insn_cnt) == offsetof(union bpf_attr, insn_cnt),
                      "BPF_PROG_LOAD_struct.insn_cnt offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_INSN_CNT */
 
 # ifdef HAVE_UNION_BPF_ATTR_INSNS
-       static_assert(SoM(struct BPF_PROG_LOAD_struct, insns) == SoM(union bpf_attr, insns),
+       static_assert(sizeof_field(struct BPF_PROG_LOAD_struct, insns) == sizeof_field(union bpf_attr, insns),
                      "BPF_PROG_LOAD_struct.insns size mismatch");
        static_assert(offsetof(struct BPF_PROG_LOAD_struct, insns) == offsetof(union bpf_attr, insns),
                      "BPF_PROG_LOAD_struct.insns offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_INSNS */
 
 # ifdef HAVE_UNION_BPF_ATTR_LICENSE
-       static_assert(SoM(struct BPF_PROG_LOAD_struct, license) == SoM(union bpf_attr, license),
+       static_assert(sizeof_field(struct BPF_PROG_LOAD_struct, license) == sizeof_field(union bpf_attr, license),
                      "BPF_PROG_LOAD_struct.license size mismatch");
        static_assert(offsetof(struct BPF_PROG_LOAD_struct, license) == offsetof(union bpf_attr, license),
                      "BPF_PROG_LOAD_struct.license offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_LICENSE */
 
 # ifdef HAVE_UNION_BPF_ATTR_LOG_LEVEL
-       static_assert(SoM(struct BPF_PROG_LOAD_struct, log_level) == SoM(union bpf_attr, log_level),
+       static_assert(sizeof_field(struct BPF_PROG_LOAD_struct, log_level) == sizeof_field(union bpf_attr, log_level),
                      "BPF_PROG_LOAD_struct.log_level size mismatch");
        static_assert(offsetof(struct BPF_PROG_LOAD_struct, log_level) == offsetof(union bpf_attr, log_level),
                      "BPF_PROG_LOAD_struct.log_level offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_LOG_LEVEL */
 
 # ifdef HAVE_UNION_BPF_ATTR_LOG_SIZE
-       static_assert(SoM(struct BPF_PROG_LOAD_struct, log_size) == SoM(union bpf_attr, log_size),
+       static_assert(sizeof_field(struct BPF_PROG_LOAD_struct, log_size) == sizeof_field(union bpf_attr, log_size),
                      "BPF_PROG_LOAD_struct.log_size size mismatch");
        static_assert(offsetof(struct BPF_PROG_LOAD_struct, log_size) == offsetof(union bpf_attr, log_size),
                      "BPF_PROG_LOAD_struct.log_size offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_LOG_SIZE */
 
 # ifdef HAVE_UNION_BPF_ATTR_LOG_BUF
-       static_assert(SoM(struct BPF_PROG_LOAD_struct, log_buf) == SoM(union bpf_attr, log_buf),
+       static_assert(sizeof_field(struct BPF_PROG_LOAD_struct, log_buf) == sizeof_field(union bpf_attr, log_buf),
                      "BPF_PROG_LOAD_struct.log_buf size mismatch");
        static_assert(offsetof(struct BPF_PROG_LOAD_struct, log_buf) == offsetof(union bpf_attr, log_buf),
                      "BPF_PROG_LOAD_struct.log_buf offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_LOG_BUF */
 
 # ifdef HAVE_UNION_BPF_ATTR_KERN_VERSION
-       static_assert(SoM(struct BPF_PROG_LOAD_struct, kern_version) == SoM(union bpf_attr, kern_version),
+       static_assert(sizeof_field(struct BPF_PROG_LOAD_struct, kern_version) == sizeof_field(union bpf_attr, kern_version),
                      "BPF_PROG_LOAD_struct.kern_version size mismatch");
        static_assert(offsetof(struct BPF_PROG_LOAD_struct, kern_version) == offsetof(union bpf_attr, kern_version),
                      "BPF_PROG_LOAD_struct.kern_version offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_KERN_VERSION */
 
 # ifdef HAVE_UNION_BPF_ATTR_PROG_FLAGS
-       static_assert(SoM(struct BPF_PROG_LOAD_struct, prog_flags) == SoM(union bpf_attr, prog_flags),
+       static_assert(sizeof_field(struct BPF_PROG_LOAD_struct, prog_flags) == sizeof_field(union bpf_attr, prog_flags),
                      "BPF_PROG_LOAD_struct.prog_flags size mismatch");
        static_assert(offsetof(struct BPF_PROG_LOAD_struct, prog_flags) == offsetof(union bpf_attr, prog_flags),
                      "BPF_PROG_LOAD_struct.prog_flags offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_PROG_FLAGS */
 
 # ifdef HAVE_UNION_BPF_ATTR_PROG_NAME
-       static_assert(SoM(struct BPF_PROG_LOAD_struct, prog_name) == SoM(union bpf_attr, prog_name),
+       static_assert(sizeof_field(struct BPF_PROG_LOAD_struct, prog_name) == sizeof_field(union bpf_attr, prog_name),
                      "BPF_PROG_LOAD_struct.prog_name size mismatch");
        static_assert(offsetof(struct BPF_PROG_LOAD_struct, prog_name) == offsetof(union bpf_attr, prog_name),
                      "BPF_PROG_LOAD_struct.prog_name offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_PROG_NAME */
 
 # ifdef HAVE_UNION_BPF_ATTR_PROG_IFINDEX
-       static_assert(SoM(struct BPF_PROG_LOAD_struct, prog_ifindex) == SoM(union bpf_attr, prog_ifindex),
+       static_assert(sizeof_field(struct BPF_PROG_LOAD_struct, prog_ifindex) == sizeof_field(union bpf_attr, prog_ifindex),
                      "BPF_PROG_LOAD_struct.prog_ifindex size mismatch");
        static_assert(offsetof(struct BPF_PROG_LOAD_struct, prog_ifindex) == offsetof(union bpf_attr, prog_ifindex),
                      "BPF_PROG_LOAD_struct.prog_ifindex offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_PROG_IFINDEX */
 
 # ifdef HAVE_UNION_BPF_ATTR_EXPECTED_ATTACH_TYPE
-       static_assert(SoM(struct BPF_PROG_LOAD_struct, expected_attach_type) == SoM(union bpf_attr, expected_attach_type),
+       static_assert(sizeof_field(struct BPF_PROG_LOAD_struct, expected_attach_type) == sizeof_field(union bpf_attr, expected_attach_type),
                      "BPF_PROG_LOAD_struct.expected_attach_type size mismatch");
        static_assert(offsetof(struct BPF_PROG_LOAD_struct, expected_attach_type) == offsetof(union bpf_attr, expected_attach_type),
                      "BPF_PROG_LOAD_struct.expected_attach_type offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_EXPECTED_ATTACH_TYPE */
 
 # ifdef HAVE_UNION_BPF_ATTR_PROG_BTF_FD
-       static_assert(SoM(struct BPF_PROG_LOAD_struct, prog_btf_fd) == SoM(union bpf_attr, prog_btf_fd),
+       static_assert(sizeof_field(struct BPF_PROG_LOAD_struct, prog_btf_fd) == sizeof_field(union bpf_attr, prog_btf_fd),
                      "BPF_PROG_LOAD_struct.prog_btf_fd size mismatch");
        static_assert(offsetof(struct BPF_PROG_LOAD_struct, prog_btf_fd) == offsetof(union bpf_attr, prog_btf_fd),
                      "BPF_PROG_LOAD_struct.prog_btf_fd offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_PROG_BTF_FD */
 
 # ifdef HAVE_UNION_BPF_ATTR_FUNC_INFO_REC_SIZE
-       static_assert(SoM(struct BPF_PROG_LOAD_struct, func_info_rec_size) == SoM(union bpf_attr, func_info_rec_size),
+       static_assert(sizeof_field(struct BPF_PROG_LOAD_struct, func_info_rec_size) == sizeof_field(union bpf_attr, func_info_rec_size),
                      "BPF_PROG_LOAD_struct.func_info_rec_size size mismatch");
        static_assert(offsetof(struct BPF_PROG_LOAD_struct, func_info_rec_size) == offsetof(union bpf_attr, func_info_rec_size),
                      "BPF_PROG_LOAD_struct.func_info_rec_size offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_FUNC_INFO_REC_SIZE */
 
 # ifdef HAVE_UNION_BPF_ATTR_FUNC_INFO
-       static_assert(SoM(struct BPF_PROG_LOAD_struct, func_info) == SoM(union bpf_attr, func_info),
+       static_assert(sizeof_field(struct BPF_PROG_LOAD_struct, func_info) == sizeof_field(union bpf_attr, func_info),
                      "BPF_PROG_LOAD_struct.func_info size mismatch");
        static_assert(offsetof(struct BPF_PROG_LOAD_struct, func_info) == offsetof(union bpf_attr, func_info),
                      "BPF_PROG_LOAD_struct.func_info offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_FUNC_INFO */
 
 # ifdef HAVE_UNION_BPF_ATTR_FUNC_INFO_CNT
-       static_assert(SoM(struct BPF_PROG_LOAD_struct, func_info_cnt) == SoM(union bpf_attr, func_info_cnt),
+       static_assert(sizeof_field(struct BPF_PROG_LOAD_struct, func_info_cnt) == sizeof_field(union bpf_attr, func_info_cnt),
                      "BPF_PROG_LOAD_struct.func_info_cnt size mismatch");
        static_assert(offsetof(struct BPF_PROG_LOAD_struct, func_info_cnt) == offsetof(union bpf_attr, func_info_cnt),
                      "BPF_PROG_LOAD_struct.func_info_cnt offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_FUNC_INFO_CNT */
 
 # ifdef HAVE_UNION_BPF_ATTR_LINE_INFO_REC_SIZE
-       static_assert(SoM(struct BPF_PROG_LOAD_struct, line_info_rec_size) == SoM(union bpf_attr, line_info_rec_size),
+       static_assert(sizeof_field(struct BPF_PROG_LOAD_struct, line_info_rec_size) == sizeof_field(union bpf_attr, line_info_rec_size),
                      "BPF_PROG_LOAD_struct.line_info_rec_size size mismatch");
        static_assert(offsetof(struct BPF_PROG_LOAD_struct, line_info_rec_size) == offsetof(union bpf_attr, line_info_rec_size),
                      "BPF_PROG_LOAD_struct.line_info_rec_size offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_LINE_INFO_REC_SIZE */
 
 # ifdef HAVE_UNION_BPF_ATTR_LINE_INFO
-       static_assert(SoM(struct BPF_PROG_LOAD_struct, line_info) == SoM(union bpf_attr, line_info),
+       static_assert(sizeof_field(struct BPF_PROG_LOAD_struct, line_info) == sizeof_field(union bpf_attr, line_info),
                      "BPF_PROG_LOAD_struct.line_info size mismatch");
        static_assert(offsetof(struct BPF_PROG_LOAD_struct, line_info) == offsetof(union bpf_attr, line_info),
                      "BPF_PROG_LOAD_struct.line_info offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_LINE_INFO */
 
 # ifdef HAVE_UNION_BPF_ATTR_LINE_INFO_CNT
-       static_assert(SoM(struct BPF_PROG_LOAD_struct, line_info_cnt) == SoM(union bpf_attr, line_info_cnt),
+       static_assert(sizeof_field(struct BPF_PROG_LOAD_struct, line_info_cnt) == sizeof_field(union bpf_attr, line_info_cnt),
                      "BPF_PROG_LOAD_struct.line_info_cnt size mismatch");
        static_assert(offsetof(struct BPF_PROG_LOAD_struct, line_info_cnt) == offsetof(union bpf_attr, line_info_cnt),
                      "BPF_PROG_LOAD_struct.line_info_cnt offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_LINE_INFO_CNT */
 
+# ifdef HAVE_UNION_BPF_ATTR_ATTACH_BTF_ID
+       static_assert(sizeof_field(struct BPF_PROG_LOAD_struct, attach_btf_id) == sizeof_field(union bpf_attr, attach_btf_id),
+                     "BPF_PROG_LOAD_struct.attach_btf_id size mismatch");
+       static_assert(offsetof(struct BPF_PROG_LOAD_struct, attach_btf_id) == offsetof(union bpf_attr, attach_btf_id),
+                     "BPF_PROG_LOAD_struct.attach_btf_id offset mismatch");
+# endif /* HAVE_UNION_BPF_ATTR_ATTACH_BTF_ID */
+
+# ifdef HAVE_UNION_BPF_ATTR_ATTACH_PROG_FD
+       static_assert(sizeof_field(struct BPF_PROG_LOAD_struct, attach_prog_fd) == sizeof_field(union bpf_attr, attach_prog_fd),
+                     "BPF_PROG_LOAD_struct.attach_prog_fd size mismatch");
+       static_assert(offsetof(struct BPF_PROG_LOAD_struct, attach_prog_fd) == offsetof(union bpf_attr, attach_prog_fd),
+                     "BPF_PROG_LOAD_struct.attach_prog_fd offset mismatch");
+# endif /* HAVE_UNION_BPF_ATTR_ATTACH_PROG_FD */
+
 static_assert(BPF_PROG_LOAD_struct_size == expected_BPF_PROG_LOAD_struct_size,
              "BPF_PROG_LOAD_struct_size mismatch");
 
 # ifdef HAVE_UNION_BPF_ATTR_PATHNAME
-       static_assert(SoM(struct BPF_OBJ_PIN_struct, pathname) == SoM(union bpf_attr, pathname),
+       static_assert(sizeof_field(struct BPF_OBJ_PIN_struct, pathname) == sizeof_field(union bpf_attr, pathname),
                      "BPF_OBJ_PIN_struct.pathname size mismatch");
        static_assert(offsetof(struct BPF_OBJ_PIN_struct, pathname) == offsetof(union bpf_attr, pathname),
                      "BPF_OBJ_PIN_struct.pathname offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_PATHNAME */
 
 # ifdef HAVE_UNION_BPF_ATTR_BPF_FD
-       static_assert(SoM(struct BPF_OBJ_PIN_struct, bpf_fd) == SoM(union bpf_attr, bpf_fd),
+       static_assert(sizeof_field(struct BPF_OBJ_PIN_struct, bpf_fd) == sizeof_field(union bpf_attr, bpf_fd),
                      "BPF_OBJ_PIN_struct.bpf_fd size mismatch");
        static_assert(offsetof(struct BPF_OBJ_PIN_struct, bpf_fd) == offsetof(union bpf_attr, bpf_fd),
                      "BPF_OBJ_PIN_struct.bpf_fd offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_BPF_FD */
 
 # ifdef HAVE_UNION_BPF_ATTR_FILE_FLAGS
-       static_assert(SoM(struct BPF_OBJ_PIN_struct, file_flags) == SoM(union bpf_attr, file_flags),
+       static_assert(sizeof_field(struct BPF_OBJ_PIN_struct, file_flags) == sizeof_field(union bpf_attr, file_flags),
                      "BPF_OBJ_PIN_struct.file_flags size mismatch");
        static_assert(offsetof(struct BPF_OBJ_PIN_struct, file_flags) == offsetof(union bpf_attr, file_flags),
                      "BPF_OBJ_PIN_struct.file_flags offset mismatch");
@@ -351,52 +388,59 @@ static_assert(BPF_OBJ_PIN_struct_size == expected_BPF_OBJ_PIN_struct_size,
              "BPF_OBJ_PIN_struct_size mismatch");
 
 # ifdef HAVE_UNION_BPF_ATTR_TARGET_FD
-       static_assert(SoM(struct BPF_PROG_ATTACH_struct, target_fd) == SoM(union bpf_attr, target_fd),
+       static_assert(sizeof_field(struct BPF_PROG_ATTACH_struct, target_fd) == sizeof_field(union bpf_attr, target_fd),
                      "BPF_PROG_ATTACH_struct.target_fd size mismatch");
        static_assert(offsetof(struct BPF_PROG_ATTACH_struct, target_fd) == offsetof(union bpf_attr, target_fd),
                      "BPF_PROG_ATTACH_struct.target_fd offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_TARGET_FD */
 
 # ifdef HAVE_UNION_BPF_ATTR_ATTACH_BPF_FD
-       static_assert(SoM(struct BPF_PROG_ATTACH_struct, attach_bpf_fd) == SoM(union bpf_attr, attach_bpf_fd),
+       static_assert(sizeof_field(struct BPF_PROG_ATTACH_struct, attach_bpf_fd) == sizeof_field(union bpf_attr, attach_bpf_fd),
                      "BPF_PROG_ATTACH_struct.attach_bpf_fd size mismatch");
        static_assert(offsetof(struct BPF_PROG_ATTACH_struct, attach_bpf_fd) == offsetof(union bpf_attr, attach_bpf_fd),
                      "BPF_PROG_ATTACH_struct.attach_bpf_fd offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_ATTACH_BPF_FD */
 
 # ifdef HAVE_UNION_BPF_ATTR_ATTACH_TYPE
-       static_assert(SoM(struct BPF_PROG_ATTACH_struct, attach_type) == SoM(union bpf_attr, attach_type),
+       static_assert(sizeof_field(struct BPF_PROG_ATTACH_struct, attach_type) == sizeof_field(union bpf_attr, attach_type),
                      "BPF_PROG_ATTACH_struct.attach_type size mismatch");
        static_assert(offsetof(struct BPF_PROG_ATTACH_struct, attach_type) == offsetof(union bpf_attr, attach_type),
                      "BPF_PROG_ATTACH_struct.attach_type offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_ATTACH_TYPE */
 
 # ifdef HAVE_UNION_BPF_ATTR_ATTACH_FLAGS
-       static_assert(SoM(struct BPF_PROG_ATTACH_struct, attach_flags) == SoM(union bpf_attr, attach_flags),
+       static_assert(sizeof_field(struct BPF_PROG_ATTACH_struct, attach_flags) == sizeof_field(union bpf_attr, attach_flags),
                      "BPF_PROG_ATTACH_struct.attach_flags size mismatch");
        static_assert(offsetof(struct BPF_PROG_ATTACH_struct, attach_flags) == offsetof(union bpf_attr, attach_flags),
                      "BPF_PROG_ATTACH_struct.attach_flags offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_ATTACH_FLAGS */
 
+# ifdef HAVE_UNION_BPF_ATTR_REPLACE_BPF_FD
+       static_assert(sizeof_field(struct BPF_PROG_ATTACH_struct, replace_bpf_fd) == sizeof_field(union bpf_attr, replace_bpf_fd),
+                     "BPF_PROG_ATTACH_struct.replace_bpf_fd size mismatch");
+       static_assert(offsetof(struct BPF_PROG_ATTACH_struct, replace_bpf_fd) == offsetof(union bpf_attr, replace_bpf_fd),
+                     "BPF_PROG_ATTACH_struct.replace_bpf_fd offset mismatch");
+# endif /* HAVE_UNION_BPF_ATTR_REPLACE_BPF_FD */
+
 static_assert(BPF_PROG_ATTACH_struct_size == expected_BPF_PROG_ATTACH_struct_size,
              "BPF_PROG_ATTACH_struct_size mismatch");
 
 # ifdef HAVE_UNION_BPF_ATTR_TARGET_FD
-       static_assert(SoM(struct BPF_PROG_DETACH_struct, target_fd) == SoM(union bpf_attr, target_fd),
+       static_assert(sizeof_field(struct BPF_PROG_DETACH_struct, target_fd) == sizeof_field(union bpf_attr, target_fd),
                      "BPF_PROG_DETACH_struct.target_fd size mismatch");
        static_assert(offsetof(struct BPF_PROG_DETACH_struct, target_fd) == offsetof(union bpf_attr, target_fd),
                      "BPF_PROG_DETACH_struct.target_fd offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_TARGET_FD */
 
 # ifdef HAVE_UNION_BPF_ATTR_DUMMY
-       static_assert(SoM(struct BPF_PROG_DETACH_struct, dummy) == SoM(union bpf_attr, dummy),
+       static_assert(sizeof_field(struct BPF_PROG_DETACH_struct, dummy) == sizeof_field(union bpf_attr, dummy),
                      "BPF_PROG_DETACH_struct.dummy size mismatch");
        static_assert(offsetof(struct BPF_PROG_DETACH_struct, dummy) == offsetof(union bpf_attr, dummy),
                      "BPF_PROG_DETACH_struct.dummy offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_DUMMY */
 
 # ifdef HAVE_UNION_BPF_ATTR_ATTACH_TYPE
-       static_assert(SoM(struct BPF_PROG_DETACH_struct, attach_type) == SoM(union bpf_attr, attach_type),
+       static_assert(sizeof_field(struct BPF_PROG_DETACH_struct, attach_type) == sizeof_field(union bpf_attr, attach_type),
                      "BPF_PROG_DETACH_struct.attach_type size mismatch");
        static_assert(offsetof(struct BPF_PROG_DETACH_struct, attach_type) == offsetof(union bpf_attr, attach_type),
                      "BPF_PROG_DETACH_struct.attach_type offset mismatch");
@@ -406,80 +450,108 @@ static_assert(BPF_PROG_DETACH_struct_size == expected_BPF_PROG_DETACH_struct_siz
              "BPF_PROG_DETACH_struct_size mismatch");
 
 # ifdef HAVE_UNION_BPF_ATTR_TEST_PROG_FD
-       static_assert(SoM(struct BPF_PROG_TEST_RUN_struct, prog_fd) == SoM(union bpf_attr, test.prog_fd),
+       static_assert(sizeof_field(struct BPF_PROG_TEST_RUN_struct, prog_fd) == sizeof_field(union bpf_attr, test.prog_fd),
                      "BPF_PROG_TEST_RUN_struct.prog_fd size mismatch");
        static_assert(offsetof(struct BPF_PROG_TEST_RUN_struct, prog_fd) == offsetof(union bpf_attr, test.prog_fd),
                      "BPF_PROG_TEST_RUN_struct.prog_fd offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_TEST_PROG_FD */
 
 # ifdef HAVE_UNION_BPF_ATTR_TEST_RETVAL
-       static_assert(SoM(struct BPF_PROG_TEST_RUN_struct, retval) == SoM(union bpf_attr, test.retval),
+       static_assert(sizeof_field(struct BPF_PROG_TEST_RUN_struct, retval) == sizeof_field(union bpf_attr, test.retval),
                      "BPF_PROG_TEST_RUN_struct.retval size mismatch");
        static_assert(offsetof(struct BPF_PROG_TEST_RUN_struct, retval) == offsetof(union bpf_attr, test.retval),
                      "BPF_PROG_TEST_RUN_struct.retval offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_TEST_RETVAL */
 
 # ifdef HAVE_UNION_BPF_ATTR_TEST_DATA_SIZE_IN
-       static_assert(SoM(struct BPF_PROG_TEST_RUN_struct, data_size_in) == SoM(union bpf_attr, test.data_size_in),
+       static_assert(sizeof_field(struct BPF_PROG_TEST_RUN_struct, data_size_in) == sizeof_field(union bpf_attr, test.data_size_in),
                      "BPF_PROG_TEST_RUN_struct.data_size_in size mismatch");
        static_assert(offsetof(struct BPF_PROG_TEST_RUN_struct, data_size_in) == offsetof(union bpf_attr, test.data_size_in),
                      "BPF_PROG_TEST_RUN_struct.data_size_in offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_TEST_DATA_SIZE_IN */
 
 # ifdef HAVE_UNION_BPF_ATTR_TEST_DATA_SIZE_OUT
-       static_assert(SoM(struct BPF_PROG_TEST_RUN_struct, data_size_out) == SoM(union bpf_attr, test.data_size_out),
+       static_assert(sizeof_field(struct BPF_PROG_TEST_RUN_struct, data_size_out) == sizeof_field(union bpf_attr, test.data_size_out),
                      "BPF_PROG_TEST_RUN_struct.data_size_out size mismatch");
        static_assert(offsetof(struct BPF_PROG_TEST_RUN_struct, data_size_out) == offsetof(union bpf_attr, test.data_size_out),
                      "BPF_PROG_TEST_RUN_struct.data_size_out offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_TEST_DATA_SIZE_OUT */
 
 # ifdef HAVE_UNION_BPF_ATTR_TEST_DATA_IN
-       static_assert(SoM(struct BPF_PROG_TEST_RUN_struct, data_in) == SoM(union bpf_attr, test.data_in),
+       static_assert(sizeof_field(struct BPF_PROG_TEST_RUN_struct, data_in) == sizeof_field(union bpf_attr, test.data_in),
                      "BPF_PROG_TEST_RUN_struct.data_in size mismatch");
        static_assert(offsetof(struct BPF_PROG_TEST_RUN_struct, data_in) == offsetof(union bpf_attr, test.data_in),
                      "BPF_PROG_TEST_RUN_struct.data_in offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_TEST_DATA_IN */
 
 # ifdef HAVE_UNION_BPF_ATTR_TEST_DATA_OUT
-       static_assert(SoM(struct BPF_PROG_TEST_RUN_struct, data_out) == SoM(union bpf_attr, test.data_out),
+       static_assert(sizeof_field(struct BPF_PROG_TEST_RUN_struct, data_out) == sizeof_field(union bpf_attr, test.data_out),
                      "BPF_PROG_TEST_RUN_struct.data_out size mismatch");
        static_assert(offsetof(struct BPF_PROG_TEST_RUN_struct, data_out) == offsetof(union bpf_attr, test.data_out),
                      "BPF_PROG_TEST_RUN_struct.data_out offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_TEST_DATA_OUT */
 
 # ifdef HAVE_UNION_BPF_ATTR_TEST_REPEAT
-       static_assert(SoM(struct BPF_PROG_TEST_RUN_struct, repeat) == SoM(union bpf_attr, test.repeat),
+       static_assert(sizeof_field(struct BPF_PROG_TEST_RUN_struct, repeat) == sizeof_field(union bpf_attr, test.repeat),
                      "BPF_PROG_TEST_RUN_struct.repeat size mismatch");
        static_assert(offsetof(struct BPF_PROG_TEST_RUN_struct, repeat) == offsetof(union bpf_attr, test.repeat),
                      "BPF_PROG_TEST_RUN_struct.repeat offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_TEST_REPEAT */
 
 # ifdef HAVE_UNION_BPF_ATTR_TEST_DURATION
-       static_assert(SoM(struct BPF_PROG_TEST_RUN_struct, duration) == SoM(union bpf_attr, test.duration),
+       static_assert(sizeof_field(struct BPF_PROG_TEST_RUN_struct, duration) == sizeof_field(union bpf_attr, test.duration),
                      "BPF_PROG_TEST_RUN_struct.duration size mismatch");
        static_assert(offsetof(struct BPF_PROG_TEST_RUN_struct, duration) == offsetof(union bpf_attr, test.duration),
                      "BPF_PROG_TEST_RUN_struct.duration offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_TEST_DURATION */
 
+# ifdef HAVE_UNION_BPF_ATTR_TEST_CTX_SIZE_IN
+       static_assert(sizeof_field(struct BPF_PROG_TEST_RUN_struct, ctx_size_in) == sizeof_field(union bpf_attr, test.ctx_size_in),
+                     "BPF_PROG_TEST_RUN_struct.ctx_size_in size mismatch");
+       static_assert(offsetof(struct BPF_PROG_TEST_RUN_struct, ctx_size_in) == offsetof(union bpf_attr, test.ctx_size_in),
+                     "BPF_PROG_TEST_RUN_struct.ctx_size_in offset mismatch");
+# endif /* HAVE_UNION_BPF_ATTR_TEST_CTX_SIZE_IN */
+
+# ifdef HAVE_UNION_BPF_ATTR_TEST_CTX_SIZE_OUT
+       static_assert(sizeof_field(struct BPF_PROG_TEST_RUN_struct, ctx_size_out) == sizeof_field(union bpf_attr, test.ctx_size_out),
+                     "BPF_PROG_TEST_RUN_struct.ctx_size_out size mismatch");
+       static_assert(offsetof(struct BPF_PROG_TEST_RUN_struct, ctx_size_out) == offsetof(union bpf_attr, test.ctx_size_out),
+                     "BPF_PROG_TEST_RUN_struct.ctx_size_out offset mismatch");
+# endif /* HAVE_UNION_BPF_ATTR_TEST_CTX_SIZE_OUT */
+
+# ifdef HAVE_UNION_BPF_ATTR_TEST_CTX_IN
+       static_assert(sizeof_field(struct BPF_PROG_TEST_RUN_struct, ctx_in) == sizeof_field(union bpf_attr, test.ctx_in),
+                     "BPF_PROG_TEST_RUN_struct.ctx_in size mismatch");
+       static_assert(offsetof(struct BPF_PROG_TEST_RUN_struct, ctx_in) == offsetof(union bpf_attr, test.ctx_in),
+                     "BPF_PROG_TEST_RUN_struct.ctx_in offset mismatch");
+# endif /* HAVE_UNION_BPF_ATTR_TEST_CTX_IN */
+
+# ifdef HAVE_UNION_BPF_ATTR_TEST_CTX_OUT
+       static_assert(sizeof_field(struct BPF_PROG_TEST_RUN_struct, ctx_out) == sizeof_field(union bpf_attr, test.ctx_out),
+                     "BPF_PROG_TEST_RUN_struct.ctx_out size mismatch");
+       static_assert(offsetof(struct BPF_PROG_TEST_RUN_struct, ctx_out) == offsetof(union bpf_attr, test.ctx_out),
+                     "BPF_PROG_TEST_RUN_struct.ctx_out offset mismatch");
+# endif /* HAVE_UNION_BPF_ATTR_TEST_CTX_OUT */
+
 static_assert(BPF_PROG_TEST_RUN_struct_size == expected_BPF_PROG_TEST_RUN_struct_size,
              "BPF_PROG_TEST_RUN_struct_size mismatch");
 
 # ifdef HAVE_UNION_BPF_ATTR_START_ID
-       static_assert(SoM(struct BPF_PROG_GET_NEXT_ID_struct, start_id) == SoM(union bpf_attr, start_id),
+       static_assert(sizeof_field(struct BPF_PROG_GET_NEXT_ID_struct, start_id) == sizeof_field(union bpf_attr, start_id),
                      "BPF_PROG_GET_NEXT_ID_struct.start_id size mismatch");
        static_assert(offsetof(struct BPF_PROG_GET_NEXT_ID_struct, start_id) == offsetof(union bpf_attr, start_id),
                      "BPF_PROG_GET_NEXT_ID_struct.start_id offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_START_ID */
 
 # ifdef HAVE_UNION_BPF_ATTR_NEXT_ID
-       static_assert(SoM(struct BPF_PROG_GET_NEXT_ID_struct, next_id) == SoM(union bpf_attr, next_id),
+       static_assert(sizeof_field(struct BPF_PROG_GET_NEXT_ID_struct, next_id) == sizeof_field(union bpf_attr, next_id),
                      "BPF_PROG_GET_NEXT_ID_struct.next_id size mismatch");
        static_assert(offsetof(struct BPF_PROG_GET_NEXT_ID_struct, next_id) == offsetof(union bpf_attr, next_id),
                      "BPF_PROG_GET_NEXT_ID_struct.next_id offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_NEXT_ID */
 
 # ifdef HAVE_UNION_BPF_ATTR_OPEN_FLAGS
-       static_assert(SoM(struct BPF_PROG_GET_NEXT_ID_struct, open_flags) == SoM(union bpf_attr, open_flags),
+       static_assert(sizeof_field(struct BPF_PROG_GET_NEXT_ID_struct, open_flags) == sizeof_field(union bpf_attr, open_flags),
                      "BPF_PROG_GET_NEXT_ID_struct.open_flags size mismatch");
        static_assert(offsetof(struct BPF_PROG_GET_NEXT_ID_struct, open_flags) == offsetof(union bpf_attr, open_flags),
                      "BPF_PROG_GET_NEXT_ID_struct.open_flags offset mismatch");
@@ -489,21 +561,21 @@ static_assert(BPF_PROG_GET_NEXT_ID_struct_size == expected_BPF_PROG_GET_NEXT_ID_
              "BPF_PROG_GET_NEXT_ID_struct_size mismatch");
 
 # ifdef HAVE_UNION_BPF_ATTR_PROG_ID
-       static_assert(SoM(struct BPF_PROG_GET_FD_BY_ID_struct, prog_id) == SoM(union bpf_attr, prog_id),
+       static_assert(sizeof_field(struct BPF_PROG_GET_FD_BY_ID_struct, prog_id) == sizeof_field(union bpf_attr, prog_id),
                      "BPF_PROG_GET_FD_BY_ID_struct.prog_id size mismatch");
        static_assert(offsetof(struct BPF_PROG_GET_FD_BY_ID_struct, prog_id) == offsetof(union bpf_attr, prog_id),
                      "BPF_PROG_GET_FD_BY_ID_struct.prog_id offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_PROG_ID */
 
 # ifdef HAVE_UNION_BPF_ATTR_NEXT_ID
-       static_assert(SoM(struct BPF_PROG_GET_FD_BY_ID_struct, next_id) == SoM(union bpf_attr, next_id),
+       static_assert(sizeof_field(struct BPF_PROG_GET_FD_BY_ID_struct, next_id) == sizeof_field(union bpf_attr, next_id),
                      "BPF_PROG_GET_FD_BY_ID_struct.next_id size mismatch");
        static_assert(offsetof(struct BPF_PROG_GET_FD_BY_ID_struct, next_id) == offsetof(union bpf_attr, next_id),
                      "BPF_PROG_GET_FD_BY_ID_struct.next_id offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_NEXT_ID */
 
 # ifdef HAVE_UNION_BPF_ATTR_OPEN_FLAGS
-       static_assert(SoM(struct BPF_PROG_GET_FD_BY_ID_struct, open_flags) == SoM(union bpf_attr, open_flags),
+       static_assert(sizeof_field(struct BPF_PROG_GET_FD_BY_ID_struct, open_flags) == sizeof_field(union bpf_attr, open_flags),
                      "BPF_PROG_GET_FD_BY_ID_struct.open_flags size mismatch");
        static_assert(offsetof(struct BPF_PROG_GET_FD_BY_ID_struct, open_flags) == offsetof(union bpf_attr, open_flags),
                      "BPF_PROG_GET_FD_BY_ID_struct.open_flags offset mismatch");
@@ -513,21 +585,21 @@ static_assert(BPF_PROG_GET_FD_BY_ID_struct_size == expected_BPF_PROG_GET_FD_BY_I
              "BPF_PROG_GET_FD_BY_ID_struct_size mismatch");
 
 # ifdef HAVE_UNION_BPF_ATTR_MAP_ID
-       static_assert(SoM(struct BPF_MAP_GET_FD_BY_ID_struct, map_id) == SoM(union bpf_attr, map_id),
+       static_assert(sizeof_field(struct BPF_MAP_GET_FD_BY_ID_struct, map_id) == sizeof_field(union bpf_attr, map_id),
                      "BPF_MAP_GET_FD_BY_ID_struct.map_id size mismatch");
        static_assert(offsetof(struct BPF_MAP_GET_FD_BY_ID_struct, map_id) == offsetof(union bpf_attr, map_id),
                      "BPF_MAP_GET_FD_BY_ID_struct.map_id offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_MAP_ID */
 
 # ifdef HAVE_UNION_BPF_ATTR_NEXT_ID
-       static_assert(SoM(struct BPF_MAP_GET_FD_BY_ID_struct, next_id) == SoM(union bpf_attr, next_id),
+       static_assert(sizeof_field(struct BPF_MAP_GET_FD_BY_ID_struct, next_id) == sizeof_field(union bpf_attr, next_id),
                      "BPF_MAP_GET_FD_BY_ID_struct.next_id size mismatch");
        static_assert(offsetof(struct BPF_MAP_GET_FD_BY_ID_struct, next_id) == offsetof(union bpf_attr, next_id),
                      "BPF_MAP_GET_FD_BY_ID_struct.next_id offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_NEXT_ID */
 
 # ifdef HAVE_UNION_BPF_ATTR_OPEN_FLAGS
-       static_assert(SoM(struct BPF_MAP_GET_FD_BY_ID_struct, open_flags) == SoM(union bpf_attr, open_flags),
+       static_assert(sizeof_field(struct BPF_MAP_GET_FD_BY_ID_struct, open_flags) == sizeof_field(union bpf_attr, open_flags),
                      "BPF_MAP_GET_FD_BY_ID_struct.open_flags size mismatch");
        static_assert(offsetof(struct BPF_MAP_GET_FD_BY_ID_struct, open_flags) == offsetof(union bpf_attr, open_flags),
                      "BPF_MAP_GET_FD_BY_ID_struct.open_flags offset mismatch");
@@ -537,21 +609,21 @@ static_assert(BPF_MAP_GET_FD_BY_ID_struct_size == expected_BPF_MAP_GET_FD_BY_ID_
              "BPF_MAP_GET_FD_BY_ID_struct_size mismatch");
 
 # ifdef HAVE_UNION_BPF_ATTR_INFO_BPF_FD
-       static_assert(SoM(struct BPF_OBJ_GET_INFO_BY_FD_struct, bpf_fd) == SoM(union bpf_attr, info.bpf_fd),
+       static_assert(sizeof_field(struct BPF_OBJ_GET_INFO_BY_FD_struct, bpf_fd) == sizeof_field(union bpf_attr, info.bpf_fd),
                      "BPF_OBJ_GET_INFO_BY_FD_struct.bpf_fd size mismatch");
        static_assert(offsetof(struct BPF_OBJ_GET_INFO_BY_FD_struct, bpf_fd) == offsetof(union bpf_attr, info.bpf_fd),
                      "BPF_OBJ_GET_INFO_BY_FD_struct.bpf_fd offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_INFO_BPF_FD */
 
 # ifdef HAVE_UNION_BPF_ATTR_INFO_INFO_LEN
-       static_assert(SoM(struct BPF_OBJ_GET_INFO_BY_FD_struct, info_len) == SoM(union bpf_attr, info.info_len),
+       static_assert(sizeof_field(struct BPF_OBJ_GET_INFO_BY_FD_struct, info_len) == sizeof_field(union bpf_attr, info.info_len),
                      "BPF_OBJ_GET_INFO_BY_FD_struct.info_len size mismatch");
        static_assert(offsetof(struct BPF_OBJ_GET_INFO_BY_FD_struct, info_len) == offsetof(union bpf_attr, info.info_len),
                      "BPF_OBJ_GET_INFO_BY_FD_struct.info_len offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_INFO_INFO_LEN */
 
 # ifdef HAVE_UNION_BPF_ATTR_INFO_INFO
-       static_assert(SoM(struct BPF_OBJ_GET_INFO_BY_FD_struct, info) == SoM(union bpf_attr, info.info),
+       static_assert(sizeof_field(struct BPF_OBJ_GET_INFO_BY_FD_struct, info) == sizeof_field(union bpf_attr, info.info),
                      "BPF_OBJ_GET_INFO_BY_FD_struct.info size mismatch");
        static_assert(offsetof(struct BPF_OBJ_GET_INFO_BY_FD_struct, info) == offsetof(union bpf_attr, info.info),
                      "BPF_OBJ_GET_INFO_BY_FD_struct.info offset mismatch");
@@ -561,42 +633,42 @@ static_assert(BPF_OBJ_GET_INFO_BY_FD_struct_size == expected_BPF_OBJ_GET_INFO_BY
              "BPF_OBJ_GET_INFO_BY_FD_struct_size mismatch");
 
 # ifdef HAVE_UNION_BPF_ATTR_QUERY_TARGET_FD
-       static_assert(SoM(struct BPF_PROG_QUERY_struct, target_fd) == SoM(union bpf_attr, query.target_fd),
+       static_assert(sizeof_field(struct BPF_PROG_QUERY_struct, target_fd) == sizeof_field(union bpf_attr, query.target_fd),
                      "BPF_PROG_QUERY_struct.target_fd size mismatch");
        static_assert(offsetof(struct BPF_PROG_QUERY_struct, target_fd) == offsetof(union bpf_attr, query.target_fd),
                      "BPF_PROG_QUERY_struct.target_fd offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_QUERY_TARGET_FD */
 
 # ifdef HAVE_UNION_BPF_ATTR_QUERY_ATTACH_TYPE
-       static_assert(SoM(struct BPF_PROG_QUERY_struct, attach_type) == SoM(union bpf_attr, query.attach_type),
+       static_assert(sizeof_field(struct BPF_PROG_QUERY_struct, attach_type) == sizeof_field(union bpf_attr, query.attach_type),
                      "BPF_PROG_QUERY_struct.attach_type size mismatch");
        static_assert(offsetof(struct BPF_PROG_QUERY_struct, attach_type) == offsetof(union bpf_attr, query.attach_type),
                      "BPF_PROG_QUERY_struct.attach_type offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_QUERY_ATTACH_TYPE */
 
 # ifdef HAVE_UNION_BPF_ATTR_QUERY_QUERY_FLAGS
-       static_assert(SoM(struct BPF_PROG_QUERY_struct, query_flags) == SoM(union bpf_attr, query.query_flags),
+       static_assert(sizeof_field(struct BPF_PROG_QUERY_struct, query_flags) == sizeof_field(union bpf_attr, query.query_flags),
                      "BPF_PROG_QUERY_struct.query_flags size mismatch");
        static_assert(offsetof(struct BPF_PROG_QUERY_struct, query_flags) == offsetof(union bpf_attr, query.query_flags),
                      "BPF_PROG_QUERY_struct.query_flags offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_QUERY_QUERY_FLAGS */
 
 # ifdef HAVE_UNION_BPF_ATTR_QUERY_ATTACH_FLAGS
-       static_assert(SoM(struct BPF_PROG_QUERY_struct, attach_flags) == SoM(union bpf_attr, query.attach_flags),
+       static_assert(sizeof_field(struct BPF_PROG_QUERY_struct, attach_flags) == sizeof_field(union bpf_attr, query.attach_flags),
                      "BPF_PROG_QUERY_struct.attach_flags size mismatch");
        static_assert(offsetof(struct BPF_PROG_QUERY_struct, attach_flags) == offsetof(union bpf_attr, query.attach_flags),
                      "BPF_PROG_QUERY_struct.attach_flags offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_QUERY_ATTACH_FLAGS */
 
 # ifdef HAVE_UNION_BPF_ATTR_QUERY_PROG_IDS
-       static_assert(SoM(struct BPF_PROG_QUERY_struct, prog_ids) == SoM(union bpf_attr, query.prog_ids),
+       static_assert(sizeof_field(struct BPF_PROG_QUERY_struct, prog_ids) == sizeof_field(union bpf_attr, query.prog_ids),
                      "BPF_PROG_QUERY_struct.prog_ids size mismatch");
        static_assert(offsetof(struct BPF_PROG_QUERY_struct, prog_ids) == offsetof(union bpf_attr, query.prog_ids),
                      "BPF_PROG_QUERY_struct.prog_ids offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_QUERY_PROG_IDS */
 
 # ifdef HAVE_UNION_BPF_ATTR_QUERY_PROG_CNT
-       static_assert(SoM(struct BPF_PROG_QUERY_struct, prog_cnt) == SoM(union bpf_attr, query.prog_cnt),
+       static_assert(sizeof_field(struct BPF_PROG_QUERY_struct, prog_cnt) == sizeof_field(union bpf_attr, query.prog_cnt),
                      "BPF_PROG_QUERY_struct.prog_cnt size mismatch");
        static_assert(offsetof(struct BPF_PROG_QUERY_struct, prog_cnt) == offsetof(union bpf_attr, query.prog_cnt),
                      "BPF_PROG_QUERY_struct.prog_cnt offset mismatch");
@@ -606,14 +678,14 @@ static_assert(BPF_PROG_QUERY_struct_size == expected_BPF_PROG_QUERY_struct_size,
              "BPF_PROG_QUERY_struct_size mismatch");
 
 # ifdef HAVE_UNION_BPF_ATTR_RAW_TRACEPOINT_NAME
-       static_assert(SoM(struct BPF_RAW_TRACEPOINT_OPEN_struct, name) == SoM(union bpf_attr, raw_tracepoint.name),
+       static_assert(sizeof_field(struct BPF_RAW_TRACEPOINT_OPEN_struct, name) == sizeof_field(union bpf_attr, raw_tracepoint.name),
                      "BPF_RAW_TRACEPOINT_OPEN_struct.name size mismatch");
        static_assert(offsetof(struct BPF_RAW_TRACEPOINT_OPEN_struct, name) == offsetof(union bpf_attr, raw_tracepoint.name),
                      "BPF_RAW_TRACEPOINT_OPEN_struct.name offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_RAW_TRACEPOINT_NAME */
 
 # ifdef HAVE_UNION_BPF_ATTR_RAW_TRACEPOINT_PROG_FD
-       static_assert(SoM(struct BPF_RAW_TRACEPOINT_OPEN_struct, prog_fd) == SoM(union bpf_attr, raw_tracepoint.prog_fd),
+       static_assert(sizeof_field(struct BPF_RAW_TRACEPOINT_OPEN_struct, prog_fd) == sizeof_field(union bpf_attr, raw_tracepoint.prog_fd),
                      "BPF_RAW_TRACEPOINT_OPEN_struct.prog_fd size mismatch");
        static_assert(offsetof(struct BPF_RAW_TRACEPOINT_OPEN_struct, prog_fd) == offsetof(union bpf_attr, raw_tracepoint.prog_fd),
                      "BPF_RAW_TRACEPOINT_OPEN_struct.prog_fd offset mismatch");
@@ -623,35 +695,35 @@ static_assert(BPF_RAW_TRACEPOINT_OPEN_struct_size == expected_BPF_RAW_TRACEPOINT
              "BPF_RAW_TRACEPOINT_OPEN_struct_size mismatch");
 
 # ifdef HAVE_UNION_BPF_ATTR_BTF
-       static_assert(SoM(struct BPF_BTF_LOAD_struct, btf) == SoM(union bpf_attr, btf),
+       static_assert(sizeof_field(struct BPF_BTF_LOAD_struct, btf) == sizeof_field(union bpf_attr, btf),
                      "BPF_BTF_LOAD_struct.btf size mismatch");
        static_assert(offsetof(struct BPF_BTF_LOAD_struct, btf) == offsetof(union bpf_attr, btf),
                      "BPF_BTF_LOAD_struct.btf offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_BTF */
 
 # ifdef HAVE_UNION_BPF_ATTR_BTF_LOG_BUF
-       static_assert(SoM(struct BPF_BTF_LOAD_struct, btf_log_buf) == SoM(union bpf_attr, btf_log_buf),
+       static_assert(sizeof_field(struct BPF_BTF_LOAD_struct, btf_log_buf) == sizeof_field(union bpf_attr, btf_log_buf),
                      "BPF_BTF_LOAD_struct.btf_log_buf size mismatch");
        static_assert(offsetof(struct BPF_BTF_LOAD_struct, btf_log_buf) == offsetof(union bpf_attr, btf_log_buf),
                      "BPF_BTF_LOAD_struct.btf_log_buf offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_BTF_LOG_BUF */
 
 # ifdef HAVE_UNION_BPF_ATTR_BTF_SIZE
-       static_assert(SoM(struct BPF_BTF_LOAD_struct, btf_size) == SoM(union bpf_attr, btf_size),
+       static_assert(sizeof_field(struct BPF_BTF_LOAD_struct, btf_size) == sizeof_field(union bpf_attr, btf_size),
                      "BPF_BTF_LOAD_struct.btf_size size mismatch");
        static_assert(offsetof(struct BPF_BTF_LOAD_struct, btf_size) == offsetof(union bpf_attr, btf_size),
                      "BPF_BTF_LOAD_struct.btf_size offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_BTF_SIZE */
 
 # ifdef HAVE_UNION_BPF_ATTR_BTF_LOG_SIZE
-       static_assert(SoM(struct BPF_BTF_LOAD_struct, btf_log_size) == SoM(union bpf_attr, btf_log_size),
+       static_assert(sizeof_field(struct BPF_BTF_LOAD_struct, btf_log_size) == sizeof_field(union bpf_attr, btf_log_size),
                      "BPF_BTF_LOAD_struct.btf_log_size size mismatch");
        static_assert(offsetof(struct BPF_BTF_LOAD_struct, btf_log_size) == offsetof(union bpf_attr, btf_log_size),
                      "BPF_BTF_LOAD_struct.btf_log_size offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_BTF_LOG_SIZE */
 
 # ifdef HAVE_UNION_BPF_ATTR_BTF_LOG_LEVEL
-       static_assert(SoM(struct BPF_BTF_LOAD_struct, btf_log_level) == SoM(union bpf_attr, btf_log_level),
+       static_assert(sizeof_field(struct BPF_BTF_LOAD_struct, btf_log_level) == sizeof_field(union bpf_attr, btf_log_level),
                      "BPF_BTF_LOAD_struct.btf_log_level size mismatch");
        static_assert(offsetof(struct BPF_BTF_LOAD_struct, btf_log_level) == offsetof(union bpf_attr, btf_log_level),
                      "BPF_BTF_LOAD_struct.btf_log_level offset mismatch");
@@ -661,7 +733,7 @@ static_assert(BPF_BTF_LOAD_struct_size == expected_BPF_BTF_LOAD_struct_size,
              "BPF_BTF_LOAD_struct_size mismatch");
 
 # ifdef HAVE_UNION_BPF_ATTR_BTF_ID
-       static_assert(SoM(struct BPF_BTF_GET_FD_BY_ID_struct, btf_id) == SoM(union bpf_attr, btf_id),
+       static_assert(sizeof_field(struct BPF_BTF_GET_FD_BY_ID_struct, btf_id) == sizeof_field(union bpf_attr, btf_id),
                      "BPF_BTF_GET_FD_BY_ID_struct.btf_id size mismatch");
        static_assert(offsetof(struct BPF_BTF_GET_FD_BY_ID_struct, btf_id) == offsetof(union bpf_attr, btf_id),
                      "BPF_BTF_GET_FD_BY_ID_struct.btf_id offset mismatch");
@@ -671,63 +743,63 @@ static_assert(BPF_BTF_GET_FD_BY_ID_struct_size == expected_BPF_BTF_GET_FD_BY_ID_
              "BPF_BTF_GET_FD_BY_ID_struct_size mismatch");
 
 # ifdef HAVE_UNION_BPF_ATTR_TASK_FD_QUERY_PID
-       static_assert(SoM(struct BPF_TASK_FD_QUERY_struct, pid) == SoM(union bpf_attr, task_fd_query.pid),
+       static_assert(sizeof_field(struct BPF_TASK_FD_QUERY_struct, pid) == sizeof_field(union bpf_attr, task_fd_query.pid),
                      "BPF_TASK_FD_QUERY_struct.pid size mismatch");
        static_assert(offsetof(struct BPF_TASK_FD_QUERY_struct, pid) == offsetof(union bpf_attr, task_fd_query.pid),
                      "BPF_TASK_FD_QUERY_struct.pid offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_TASK_FD_QUERY_PID */
 
 # ifdef HAVE_UNION_BPF_ATTR_TASK_FD_QUERY_FD
-       static_assert(SoM(struct BPF_TASK_FD_QUERY_struct, fd) == SoM(union bpf_attr, task_fd_query.fd),
+       static_assert(sizeof_field(struct BPF_TASK_FD_QUERY_struct, fd) == sizeof_field(union bpf_attr, task_fd_query.fd),
                      "BPF_TASK_FD_QUERY_struct.fd size mismatch");
        static_assert(offsetof(struct BPF_TASK_FD_QUERY_struct, fd) == offsetof(union bpf_attr, task_fd_query.fd),
                      "BPF_TASK_FD_QUERY_struct.fd offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_TASK_FD_QUERY_FD */
 
 # ifdef HAVE_UNION_BPF_ATTR_TASK_FD_QUERY_FLAGS
-       static_assert(SoM(struct BPF_TASK_FD_QUERY_struct, flags) == SoM(union bpf_attr, task_fd_query.flags),
+       static_assert(sizeof_field(struct BPF_TASK_FD_QUERY_struct, flags) == sizeof_field(union bpf_attr, task_fd_query.flags),
                      "BPF_TASK_FD_QUERY_struct.flags size mismatch");
        static_assert(offsetof(struct BPF_TASK_FD_QUERY_struct, flags) == offsetof(union bpf_attr, task_fd_query.flags),
                      "BPF_TASK_FD_QUERY_struct.flags offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_TASK_FD_QUERY_FLAGS */
 
 # ifdef HAVE_UNION_BPF_ATTR_TASK_FD_QUERY_BUF_LEN
-       static_assert(SoM(struct BPF_TASK_FD_QUERY_struct, buf_len) == SoM(union bpf_attr, task_fd_query.buf_len),
+       static_assert(sizeof_field(struct BPF_TASK_FD_QUERY_struct, buf_len) == sizeof_field(union bpf_attr, task_fd_query.buf_len),
                      "BPF_TASK_FD_QUERY_struct.buf_len size mismatch");
        static_assert(offsetof(struct BPF_TASK_FD_QUERY_struct, buf_len) == offsetof(union bpf_attr, task_fd_query.buf_len),
                      "BPF_TASK_FD_QUERY_struct.buf_len offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_TASK_FD_QUERY_BUF_LEN */
 
 # ifdef HAVE_UNION_BPF_ATTR_TASK_FD_QUERY_BUF
-       static_assert(SoM(struct BPF_TASK_FD_QUERY_struct, buf) == SoM(union bpf_attr, task_fd_query.buf),
+       static_assert(sizeof_field(struct BPF_TASK_FD_QUERY_struct, buf) == sizeof_field(union bpf_attr, task_fd_query.buf),
                      "BPF_TASK_FD_QUERY_struct.buf size mismatch");
        static_assert(offsetof(struct BPF_TASK_FD_QUERY_struct, buf) == offsetof(union bpf_attr, task_fd_query.buf),
                      "BPF_TASK_FD_QUERY_struct.buf offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_TASK_FD_QUERY_BUF */
 
 # ifdef HAVE_UNION_BPF_ATTR_TASK_FD_QUERY_PROG_ID
-       static_assert(SoM(struct BPF_TASK_FD_QUERY_struct, prog_id) == SoM(union bpf_attr, task_fd_query.prog_id),
+       static_assert(sizeof_field(struct BPF_TASK_FD_QUERY_struct, prog_id) == sizeof_field(union bpf_attr, task_fd_query.prog_id),
                      "BPF_TASK_FD_QUERY_struct.prog_id size mismatch");
        static_assert(offsetof(struct BPF_TASK_FD_QUERY_struct, prog_id) == offsetof(union bpf_attr, task_fd_query.prog_id),
                      "BPF_TASK_FD_QUERY_struct.prog_id offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_TASK_FD_QUERY_PROG_ID */
 
 # ifdef HAVE_UNION_BPF_ATTR_TASK_FD_QUERY_FD_TYPE
-       static_assert(SoM(struct BPF_TASK_FD_QUERY_struct, fd_type) == SoM(union bpf_attr, task_fd_query.fd_type),
+       static_assert(sizeof_field(struct BPF_TASK_FD_QUERY_struct, fd_type) == sizeof_field(union bpf_attr, task_fd_query.fd_type),
                      "BPF_TASK_FD_QUERY_struct.fd_type size mismatch");
        static_assert(offsetof(struct BPF_TASK_FD_QUERY_struct, fd_type) == offsetof(union bpf_attr, task_fd_query.fd_type),
                      "BPF_TASK_FD_QUERY_struct.fd_type offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_TASK_FD_QUERY_FD_TYPE */
 
 # ifdef HAVE_UNION_BPF_ATTR_TASK_FD_QUERY_PROBE_OFFSET
-       static_assert(SoM(struct BPF_TASK_FD_QUERY_struct, probe_offset) == SoM(union bpf_attr, task_fd_query.probe_offset),
+       static_assert(sizeof_field(struct BPF_TASK_FD_QUERY_struct, probe_offset) == sizeof_field(union bpf_attr, task_fd_query.probe_offset),
                      "BPF_TASK_FD_QUERY_struct.probe_offset size mismatch");
        static_assert(offsetof(struct BPF_TASK_FD_QUERY_struct, probe_offset) == offsetof(union bpf_attr, task_fd_query.probe_offset),
                      "BPF_TASK_FD_QUERY_struct.probe_offset offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_TASK_FD_QUERY_PROBE_OFFSET */
 
 # ifdef HAVE_UNION_BPF_ATTR_TASK_FD_QUERY_PROBE_ADDR
-       static_assert(SoM(struct BPF_TASK_FD_QUERY_struct, probe_addr) == SoM(union bpf_attr, task_fd_query.probe_addr),
+       static_assert(sizeof_field(struct BPF_TASK_FD_QUERY_struct, probe_addr) == sizeof_field(union bpf_attr, task_fd_query.probe_addr),
                      "BPF_TASK_FD_QUERY_struct.probe_addr size mismatch");
        static_assert(offsetof(struct BPF_TASK_FD_QUERY_struct, probe_addr) == offsetof(union bpf_attr, task_fd_query.probe_addr),
                      "BPF_TASK_FD_QUERY_struct.probe_addr offset mismatch");
@@ -737,77 +809,84 @@ static_assert(BPF_TASK_FD_QUERY_struct_size == expected_BPF_TASK_FD_QUERY_struct
              "BPF_TASK_FD_QUERY_struct_size mismatch");
 
 # ifdef HAVE_STRUCT_BPF_MAP_INFO_TYPE
-       static_assert(SoM(struct bpf_map_info_struct, type) == SoM(struct bpf_map_info, type),
+       static_assert(sizeof_field(struct bpf_map_info_struct, type) == sizeof_field(struct bpf_map_info, type),
                      "bpf_map_info_struct.type size mismatch");
        static_assert(offsetof(struct bpf_map_info_struct, type) == offsetof(struct bpf_map_info, type),
                      "bpf_map_info_struct.type offset mismatch");
 # endif /* HAVE_STRUCT_BPF_MAP_INFO_TYPE */
 
 # ifdef HAVE_STRUCT_BPF_MAP_INFO_ID
-       static_assert(SoM(struct bpf_map_info_struct, id) == SoM(struct bpf_map_info, id),
+       static_assert(sizeof_field(struct bpf_map_info_struct, id) == sizeof_field(struct bpf_map_info, id),
                      "bpf_map_info_struct.id size mismatch");
        static_assert(offsetof(struct bpf_map_info_struct, id) == offsetof(struct bpf_map_info, id),
                      "bpf_map_info_struct.id offset mismatch");
 # endif /* HAVE_STRUCT_BPF_MAP_INFO_ID */
 
 # ifdef HAVE_STRUCT_BPF_MAP_INFO_KEY_SIZE
-       static_assert(SoM(struct bpf_map_info_struct, key_size) == SoM(struct bpf_map_info, key_size),
+       static_assert(sizeof_field(struct bpf_map_info_struct, key_size) == sizeof_field(struct bpf_map_info, key_size),
                      "bpf_map_info_struct.key_size size mismatch");
        static_assert(offsetof(struct bpf_map_info_struct, key_size) == offsetof(struct bpf_map_info, key_size),
                      "bpf_map_info_struct.key_size offset mismatch");
 # endif /* HAVE_STRUCT_BPF_MAP_INFO_KEY_SIZE */
 
 # ifdef HAVE_STRUCT_BPF_MAP_INFO_VALUE_SIZE
-       static_assert(SoM(struct bpf_map_info_struct, value_size) == SoM(struct bpf_map_info, value_size),
+       static_assert(sizeof_field(struct bpf_map_info_struct, value_size) == sizeof_field(struct bpf_map_info, value_size),
                      "bpf_map_info_struct.value_size size mismatch");
        static_assert(offsetof(struct bpf_map_info_struct, value_size) == offsetof(struct bpf_map_info, value_size),
                      "bpf_map_info_struct.value_size offset mismatch");
 # endif /* HAVE_STRUCT_BPF_MAP_INFO_VALUE_SIZE */
 
 # ifdef HAVE_STRUCT_BPF_MAP_INFO_MAX_ENTRIES
-       static_assert(SoM(struct bpf_map_info_struct, max_entries) == SoM(struct bpf_map_info, max_entries),
+       static_assert(sizeof_field(struct bpf_map_info_struct, max_entries) == sizeof_field(struct bpf_map_info, max_entries),
                      "bpf_map_info_struct.max_entries size mismatch");
        static_assert(offsetof(struct bpf_map_info_struct, max_entries) == offsetof(struct bpf_map_info, max_entries),
                      "bpf_map_info_struct.max_entries offset mismatch");
 # endif /* HAVE_STRUCT_BPF_MAP_INFO_MAX_ENTRIES */
 
 # ifdef HAVE_STRUCT_BPF_MAP_INFO_MAP_FLAGS
-       static_assert(SoM(struct bpf_map_info_struct, map_flags) == SoM(struct bpf_map_info, map_flags),
+       static_assert(sizeof_field(struct bpf_map_info_struct, map_flags) == sizeof_field(struct bpf_map_info, map_flags),
                      "bpf_map_info_struct.map_flags size mismatch");
        static_assert(offsetof(struct bpf_map_info_struct, map_flags) == offsetof(struct bpf_map_info, map_flags),
                      "bpf_map_info_struct.map_flags offset mismatch");
 # endif /* HAVE_STRUCT_BPF_MAP_INFO_MAP_FLAGS */
 
 # ifdef HAVE_STRUCT_BPF_MAP_INFO_NAME
-       static_assert(SoM(struct bpf_map_info_struct, name) == SoM(struct bpf_map_info, name),
+       static_assert(sizeof_field(struct bpf_map_info_struct, name) == sizeof_field(struct bpf_map_info, name),
                      "bpf_map_info_struct.name size mismatch");
        static_assert(offsetof(struct bpf_map_info_struct, name) == offsetof(struct bpf_map_info, name),
                      "bpf_map_info_struct.name offset mismatch");
 # endif /* HAVE_STRUCT_BPF_MAP_INFO_NAME */
 
 # ifdef HAVE_STRUCT_BPF_MAP_INFO_IFINDEX
-       static_assert(SoM(struct bpf_map_info_struct, ifindex) == SoM(struct bpf_map_info, ifindex),
+       static_assert(sizeof_field(struct bpf_map_info_struct, ifindex) == sizeof_field(struct bpf_map_info, ifindex),
                      "bpf_map_info_struct.ifindex size mismatch");
        static_assert(offsetof(struct bpf_map_info_struct, ifindex) == offsetof(struct bpf_map_info, ifindex),
                      "bpf_map_info_struct.ifindex offset mismatch");
 # endif /* HAVE_STRUCT_BPF_MAP_INFO_IFINDEX */
 
+# ifdef HAVE_STRUCT_BPF_MAP_INFO_BTF_VMLINUX_VALUE_TYPE_ID
+       static_assert(sizeof_field(struct bpf_map_info_struct, btf_vmlinux_value_type_id) == sizeof_field(struct bpf_map_info, btf_vmlinux_value_type_id),
+                     "bpf_map_info_struct.btf_vmlinux_value_type_id size mismatch");
+       static_assert(offsetof(struct bpf_map_info_struct, btf_vmlinux_value_type_id) == offsetof(struct bpf_map_info, btf_vmlinux_value_type_id),
+                     "bpf_map_info_struct.btf_vmlinux_value_type_id offset mismatch");
+# endif /* HAVE_STRUCT_BPF_MAP_INFO_BTF_VMLINUX_VALUE_TYPE_ID */
+
 # ifdef HAVE_STRUCT_BPF_MAP_INFO_BTF_ID
-       static_assert(SoM(struct bpf_map_info_struct, btf_id) == SoM(struct bpf_map_info, btf_id),
+       static_assert(sizeof_field(struct bpf_map_info_struct, btf_id) == sizeof_field(struct bpf_map_info, btf_id),
                      "bpf_map_info_struct.btf_id size mismatch");
        static_assert(offsetof(struct bpf_map_info_struct, btf_id) == offsetof(struct bpf_map_info, btf_id),
                      "bpf_map_info_struct.btf_id offset mismatch");
 # endif /* HAVE_STRUCT_BPF_MAP_INFO_BTF_ID */
 
 # ifdef HAVE_STRUCT_BPF_MAP_INFO_BTF_KEY_TYPE_ID
-       static_assert(SoM(struct bpf_map_info_struct, btf_key_type_id) == SoM(struct bpf_map_info, btf_key_type_id),
+       static_assert(sizeof_field(struct bpf_map_info_struct, btf_key_type_id) == sizeof_field(struct bpf_map_info, btf_key_type_id),
                      "bpf_map_info_struct.btf_key_type_id size mismatch");
        static_assert(offsetof(struct bpf_map_info_struct, btf_key_type_id) == offsetof(struct bpf_map_info, btf_key_type_id),
                      "bpf_map_info_struct.btf_key_type_id offset mismatch");
 # endif /* HAVE_STRUCT_BPF_MAP_INFO_BTF_KEY_TYPE_ID */
 
 # ifdef HAVE_STRUCT_BPF_MAP_INFO_BTF_VALUE_TYPE_ID
-       static_assert(SoM(struct bpf_map_info_struct, btf_value_type_id) == SoM(struct bpf_map_info, btf_value_type_id),
+       static_assert(sizeof_field(struct bpf_map_info_struct, btf_value_type_id) == sizeof_field(struct bpf_map_info, btf_value_type_id),
                      "bpf_map_info_struct.btf_value_type_id size mismatch");
        static_assert(offsetof(struct bpf_map_info_struct, btf_value_type_id) == offsetof(struct bpf_map_info, btf_value_type_id),
                      "bpf_map_info_struct.btf_value_type_id offset mismatch");
@@ -817,217 +896,217 @@ static_assert(bpf_map_info_struct_size == expected_bpf_map_info_struct_size,
              "bpf_map_info_struct_size mismatch");
 
 # ifdef HAVE_STRUCT_BPF_PROG_INFO_TYPE
-       static_assert(SoM(struct bpf_prog_info_struct, type) == SoM(struct bpf_prog_info, type),
+       static_assert(sizeof_field(struct bpf_prog_info_struct, type) == sizeof_field(struct bpf_prog_info, type),
                      "bpf_prog_info_struct.type size mismatch");
        static_assert(offsetof(struct bpf_prog_info_struct, type) == offsetof(struct bpf_prog_info, type),
                      "bpf_prog_info_struct.type offset mismatch");
 # endif /* HAVE_STRUCT_BPF_PROG_INFO_TYPE */
 
 # ifdef HAVE_STRUCT_BPF_PROG_INFO_ID
-       static_assert(SoM(struct bpf_prog_info_struct, id) == SoM(struct bpf_prog_info, id),
+       static_assert(sizeof_field(struct bpf_prog_info_struct, id) == sizeof_field(struct bpf_prog_info, id),
                      "bpf_prog_info_struct.id size mismatch");
        static_assert(offsetof(struct bpf_prog_info_struct, id) == offsetof(struct bpf_prog_info, id),
                      "bpf_prog_info_struct.id offset mismatch");
 # endif /* HAVE_STRUCT_BPF_PROG_INFO_ID */
 
 # ifdef HAVE_STRUCT_BPF_PROG_INFO_TAG
-       static_assert(SoM(struct bpf_prog_info_struct, tag) == SoM(struct bpf_prog_info, tag),
+       static_assert(sizeof_field(struct bpf_prog_info_struct, tag) == sizeof_field(struct bpf_prog_info, tag),
                      "bpf_prog_info_struct.tag size mismatch");
        static_assert(offsetof(struct bpf_prog_info_struct, tag) == offsetof(struct bpf_prog_info, tag),
                      "bpf_prog_info_struct.tag offset mismatch");
 # endif /* HAVE_STRUCT_BPF_PROG_INFO_TAG */
 
 # ifdef HAVE_STRUCT_BPF_PROG_INFO_JITED_PROG_LEN
-       static_assert(SoM(struct bpf_prog_info_struct, jited_prog_len) == SoM(struct bpf_prog_info, jited_prog_len),
+       static_assert(sizeof_field(struct bpf_prog_info_struct, jited_prog_len) == sizeof_field(struct bpf_prog_info, jited_prog_len),
                      "bpf_prog_info_struct.jited_prog_len size mismatch");
        static_assert(offsetof(struct bpf_prog_info_struct, jited_prog_len) == offsetof(struct bpf_prog_info, jited_prog_len),
                      "bpf_prog_info_struct.jited_prog_len offset mismatch");
 # endif /* HAVE_STRUCT_BPF_PROG_INFO_JITED_PROG_LEN */
 
 # ifdef HAVE_STRUCT_BPF_PROG_INFO_XLATED_PROG_LEN
-       static_assert(SoM(struct bpf_prog_info_struct, xlated_prog_len) == SoM(struct bpf_prog_info, xlated_prog_len),
+       static_assert(sizeof_field(struct bpf_prog_info_struct, xlated_prog_len) == sizeof_field(struct bpf_prog_info, xlated_prog_len),
                      "bpf_prog_info_struct.xlated_prog_len size mismatch");
        static_assert(offsetof(struct bpf_prog_info_struct, xlated_prog_len) == offsetof(struct bpf_prog_info, xlated_prog_len),
                      "bpf_prog_info_struct.xlated_prog_len offset mismatch");
 # endif /* HAVE_STRUCT_BPF_PROG_INFO_XLATED_PROG_LEN */
 
 # ifdef HAVE_STRUCT_BPF_PROG_INFO_JITED_PROG_INSNS
-       static_assert(SoM(struct bpf_prog_info_struct, jited_prog_insns) == SoM(struct bpf_prog_info, jited_prog_insns),
+       static_assert(sizeof_field(struct bpf_prog_info_struct, jited_prog_insns) == sizeof_field(struct bpf_prog_info, jited_prog_insns),
                      "bpf_prog_info_struct.jited_prog_insns size mismatch");
        static_assert(offsetof(struct bpf_prog_info_struct, jited_prog_insns) == offsetof(struct bpf_prog_info, jited_prog_insns),
                      "bpf_prog_info_struct.jited_prog_insns offset mismatch");
 # endif /* HAVE_STRUCT_BPF_PROG_INFO_JITED_PROG_INSNS */
 
 # ifdef HAVE_STRUCT_BPF_PROG_INFO_XLATED_PROG_INSNS
-       static_assert(SoM(struct bpf_prog_info_struct, xlated_prog_insns) == SoM(struct bpf_prog_info, xlated_prog_insns),
+       static_assert(sizeof_field(struct bpf_prog_info_struct, xlated_prog_insns) == sizeof_field(struct bpf_prog_info, xlated_prog_insns),
                      "bpf_prog_info_struct.xlated_prog_insns size mismatch");
        static_assert(offsetof(struct bpf_prog_info_struct, xlated_prog_insns) == offsetof(struct bpf_prog_info, xlated_prog_insns),
                      "bpf_prog_info_struct.xlated_prog_insns offset mismatch");
 # endif /* HAVE_STRUCT_BPF_PROG_INFO_XLATED_PROG_INSNS */
 
 # ifdef HAVE_STRUCT_BPF_PROG_INFO_LOAD_TIME
-       static_assert(SoM(struct bpf_prog_info_struct, load_time) == SoM(struct bpf_prog_info, load_time),
+       static_assert(sizeof_field(struct bpf_prog_info_struct, load_time) == sizeof_field(struct bpf_prog_info, load_time),
                      "bpf_prog_info_struct.load_time size mismatch");
        static_assert(offsetof(struct bpf_prog_info_struct, load_time) == offsetof(struct bpf_prog_info, load_time),
                      "bpf_prog_info_struct.load_time offset mismatch");
 # endif /* HAVE_STRUCT_BPF_PROG_INFO_LOAD_TIME */
 
 # ifdef HAVE_STRUCT_BPF_PROG_INFO_CREATED_BY_UID
-       static_assert(SoM(struct bpf_prog_info_struct, created_by_uid) == SoM(struct bpf_prog_info, created_by_uid),
+       static_assert(sizeof_field(struct bpf_prog_info_struct, created_by_uid) == sizeof_field(struct bpf_prog_info, created_by_uid),
                      "bpf_prog_info_struct.created_by_uid size mismatch");
        static_assert(offsetof(struct bpf_prog_info_struct, created_by_uid) == offsetof(struct bpf_prog_info, created_by_uid),
                      "bpf_prog_info_struct.created_by_uid offset mismatch");
 # endif /* HAVE_STRUCT_BPF_PROG_INFO_CREATED_BY_UID */
 
 # ifdef HAVE_STRUCT_BPF_PROG_INFO_NR_MAP_IDS
-       static_assert(SoM(struct bpf_prog_info_struct, nr_map_ids) == SoM(struct bpf_prog_info, nr_map_ids),
+       static_assert(sizeof_field(struct bpf_prog_info_struct, nr_map_ids) == sizeof_field(struct bpf_prog_info, nr_map_ids),
                      "bpf_prog_info_struct.nr_map_ids size mismatch");
        static_assert(offsetof(struct bpf_prog_info_struct, nr_map_ids) == offsetof(struct bpf_prog_info, nr_map_ids),
                      "bpf_prog_info_struct.nr_map_ids offset mismatch");
 # endif /* HAVE_STRUCT_BPF_PROG_INFO_NR_MAP_IDS */
 
 # ifdef HAVE_STRUCT_BPF_PROG_INFO_MAP_IDS
-       static_assert(SoM(struct bpf_prog_info_struct, map_ids) == SoM(struct bpf_prog_info, map_ids),
+       static_assert(sizeof_field(struct bpf_prog_info_struct, map_ids) == sizeof_field(struct bpf_prog_info, map_ids),
                      "bpf_prog_info_struct.map_ids size mismatch");
        static_assert(offsetof(struct bpf_prog_info_struct, map_ids) == offsetof(struct bpf_prog_info, map_ids),
                      "bpf_prog_info_struct.map_ids offset mismatch");
 # endif /* HAVE_STRUCT_BPF_PROG_INFO_MAP_IDS */
 
 # ifdef HAVE_STRUCT_BPF_PROG_INFO_NAME
-       static_assert(SoM(struct bpf_prog_info_struct, name) == SoM(struct bpf_prog_info, name),
+       static_assert(sizeof_field(struct bpf_prog_info_struct, name) == sizeof_field(struct bpf_prog_info, name),
                      "bpf_prog_info_struct.name size mismatch");
        static_assert(offsetof(struct bpf_prog_info_struct, name) == offsetof(struct bpf_prog_info, name),
                      "bpf_prog_info_struct.name offset mismatch");
 # endif /* HAVE_STRUCT_BPF_PROG_INFO_NAME */
 
 # ifdef HAVE_STRUCT_BPF_PROG_INFO_IFINDEX
-       static_assert(SoM(struct bpf_prog_info_struct, ifindex) == SoM(struct bpf_prog_info, ifindex),
+       static_assert(sizeof_field(struct bpf_prog_info_struct, ifindex) == sizeof_field(struct bpf_prog_info, ifindex),
                      "bpf_prog_info_struct.ifindex size mismatch");
        static_assert(offsetof(struct bpf_prog_info_struct, ifindex) == offsetof(struct bpf_prog_info, ifindex),
                      "bpf_prog_info_struct.ifindex offset mismatch");
 # endif /* HAVE_STRUCT_BPF_PROG_INFO_IFINDEX */
 
 # ifdef HAVE_STRUCT_BPF_PROG_INFO_NR_JITED_KSYMS
-       static_assert(SoM(struct bpf_prog_info_struct, nr_jited_ksyms) == SoM(struct bpf_prog_info, nr_jited_ksyms),
+       static_assert(sizeof_field(struct bpf_prog_info_struct, nr_jited_ksyms) == sizeof_field(struct bpf_prog_info, nr_jited_ksyms),
                      "bpf_prog_info_struct.nr_jited_ksyms size mismatch");
        static_assert(offsetof(struct bpf_prog_info_struct, nr_jited_ksyms) == offsetof(struct bpf_prog_info, nr_jited_ksyms),
                      "bpf_prog_info_struct.nr_jited_ksyms offset mismatch");
 # endif /* HAVE_STRUCT_BPF_PROG_INFO_NR_JITED_KSYMS */
 
 # ifdef HAVE_STRUCT_BPF_PROG_INFO_NR_JITED_FUNC_LENS
-       static_assert(SoM(struct bpf_prog_info_struct, nr_jited_func_lens) == SoM(struct bpf_prog_info, nr_jited_func_lens),
+       static_assert(sizeof_field(struct bpf_prog_info_struct, nr_jited_func_lens) == sizeof_field(struct bpf_prog_info, nr_jited_func_lens),
                      "bpf_prog_info_struct.nr_jited_func_lens size mismatch");
        static_assert(offsetof(struct bpf_prog_info_struct, nr_jited_func_lens) == offsetof(struct bpf_prog_info, nr_jited_func_lens),
                      "bpf_prog_info_struct.nr_jited_func_lens offset mismatch");
 # endif /* HAVE_STRUCT_BPF_PROG_INFO_NR_JITED_FUNC_LENS */
 
 # ifdef HAVE_STRUCT_BPF_PROG_INFO_JITED_KSYMS
-       static_assert(SoM(struct bpf_prog_info_struct, jited_ksyms) == SoM(struct bpf_prog_info, jited_ksyms),
+       static_assert(sizeof_field(struct bpf_prog_info_struct, jited_ksyms) == sizeof_field(struct bpf_prog_info, jited_ksyms),
                      "bpf_prog_info_struct.jited_ksyms size mismatch");
        static_assert(offsetof(struct bpf_prog_info_struct, jited_ksyms) == offsetof(struct bpf_prog_info, jited_ksyms),
                      "bpf_prog_info_struct.jited_ksyms offset mismatch");
 # endif /* HAVE_STRUCT_BPF_PROG_INFO_JITED_KSYMS */
 
 # ifdef HAVE_STRUCT_BPF_PROG_INFO_JITED_FUNC_LENS
-       static_assert(SoM(struct bpf_prog_info_struct, jited_func_lens) == SoM(struct bpf_prog_info, jited_func_lens),
+       static_assert(sizeof_field(struct bpf_prog_info_struct, jited_func_lens) == sizeof_field(struct bpf_prog_info, jited_func_lens),
                      "bpf_prog_info_struct.jited_func_lens size mismatch");
        static_assert(offsetof(struct bpf_prog_info_struct, jited_func_lens) == offsetof(struct bpf_prog_info, jited_func_lens),
                      "bpf_prog_info_struct.jited_func_lens offset mismatch");
 # endif /* HAVE_STRUCT_BPF_PROG_INFO_JITED_FUNC_LENS */
 
 # ifdef HAVE_STRUCT_BPF_PROG_INFO_BTF_ID
-       static_assert(SoM(struct bpf_prog_info_struct, btf_id) == SoM(struct bpf_prog_info, btf_id),
+       static_assert(sizeof_field(struct bpf_prog_info_struct, btf_id) == sizeof_field(struct bpf_prog_info, btf_id),
                      "bpf_prog_info_struct.btf_id size mismatch");
        static_assert(offsetof(struct bpf_prog_info_struct, btf_id) == offsetof(struct bpf_prog_info, btf_id),
                      "bpf_prog_info_struct.btf_id offset mismatch");
 # endif /* HAVE_STRUCT_BPF_PROG_INFO_BTF_ID */
 
 # ifdef HAVE_STRUCT_BPF_PROG_INFO_FUNC_INFO_REC_SIZE
-       static_assert(SoM(struct bpf_prog_info_struct, func_info_rec_size) == SoM(struct bpf_prog_info, func_info_rec_size),
+       static_assert(sizeof_field(struct bpf_prog_info_struct, func_info_rec_size) == sizeof_field(struct bpf_prog_info, func_info_rec_size),
                      "bpf_prog_info_struct.func_info_rec_size size mismatch");
        static_assert(offsetof(struct bpf_prog_info_struct, func_info_rec_size) == offsetof(struct bpf_prog_info, func_info_rec_size),
                      "bpf_prog_info_struct.func_info_rec_size offset mismatch");
 # endif /* HAVE_STRUCT_BPF_PROG_INFO_FUNC_INFO_REC_SIZE */
 
 # ifdef HAVE_STRUCT_BPF_PROG_INFO_FUNC_INFO
-       static_assert(SoM(struct bpf_prog_info_struct, func_info) == SoM(struct bpf_prog_info, func_info),
+       static_assert(sizeof_field(struct bpf_prog_info_struct, func_info) == sizeof_field(struct bpf_prog_info, func_info),
                      "bpf_prog_info_struct.func_info size mismatch");
        static_assert(offsetof(struct bpf_prog_info_struct, func_info) == offsetof(struct bpf_prog_info, func_info),
                      "bpf_prog_info_struct.func_info offset mismatch");
 # endif /* HAVE_STRUCT_BPF_PROG_INFO_FUNC_INFO */
 
 # ifdef HAVE_STRUCT_BPF_PROG_INFO_NR_FUNC_INFO
-       static_assert(SoM(struct bpf_prog_info_struct, nr_func_info) == SoM(struct bpf_prog_info, nr_func_info),
+       static_assert(sizeof_field(struct bpf_prog_info_struct, nr_func_info) == sizeof_field(struct bpf_prog_info, nr_func_info),
                      "bpf_prog_info_struct.nr_func_info size mismatch");
        static_assert(offsetof(struct bpf_prog_info_struct, nr_func_info) == offsetof(struct bpf_prog_info, nr_func_info),
                      "bpf_prog_info_struct.nr_func_info offset mismatch");
 # endif /* HAVE_STRUCT_BPF_PROG_INFO_NR_FUNC_INFO */
 
 # ifdef HAVE_STRUCT_BPF_PROG_INFO_NR_LINE_INFO
-       static_assert(SoM(struct bpf_prog_info_struct, nr_line_info) == SoM(struct bpf_prog_info, nr_line_info),
+       static_assert(sizeof_field(struct bpf_prog_info_struct, nr_line_info) == sizeof_field(struct bpf_prog_info, nr_line_info),
                      "bpf_prog_info_struct.nr_line_info size mismatch");
        static_assert(offsetof(struct bpf_prog_info_struct, nr_line_info) == offsetof(struct bpf_prog_info, nr_line_info),
                      "bpf_prog_info_struct.nr_line_info offset mismatch");
 # endif /* HAVE_STRUCT_BPF_PROG_INFO_NR_LINE_INFO */
 
 # ifdef HAVE_STRUCT_BPF_PROG_INFO_LINE_INFO
-       static_assert(SoM(struct bpf_prog_info_struct, line_info) == SoM(struct bpf_prog_info, line_info),
+       static_assert(sizeof_field(struct bpf_prog_info_struct, line_info) == sizeof_field(struct bpf_prog_info, line_info),
                      "bpf_prog_info_struct.line_info size mismatch");
        static_assert(offsetof(struct bpf_prog_info_struct, line_info) == offsetof(struct bpf_prog_info, line_info),
                      "bpf_prog_info_struct.line_info offset mismatch");
 # endif /* HAVE_STRUCT_BPF_PROG_INFO_LINE_INFO */
 
 # ifdef HAVE_STRUCT_BPF_PROG_INFO_JITED_LINE_INFO
-       static_assert(SoM(struct bpf_prog_info_struct, jited_line_info) == SoM(struct bpf_prog_info, jited_line_info),
+       static_assert(sizeof_field(struct bpf_prog_info_struct, jited_line_info) == sizeof_field(struct bpf_prog_info, jited_line_info),
                      "bpf_prog_info_struct.jited_line_info size mismatch");
        static_assert(offsetof(struct bpf_prog_info_struct, jited_line_info) == offsetof(struct bpf_prog_info, jited_line_info),
                      "bpf_prog_info_struct.jited_line_info offset mismatch");
 # endif /* HAVE_STRUCT_BPF_PROG_INFO_JITED_LINE_INFO */
 
 # ifdef HAVE_STRUCT_BPF_PROG_INFO_NR_JITED_LINE_INFO
-       static_assert(SoM(struct bpf_prog_info_struct, nr_jited_line_info) == SoM(struct bpf_prog_info, nr_jited_line_info),
+       static_assert(sizeof_field(struct bpf_prog_info_struct, nr_jited_line_info) == sizeof_field(struct bpf_prog_info, nr_jited_line_info),
                      "bpf_prog_info_struct.nr_jited_line_info size mismatch");
        static_assert(offsetof(struct bpf_prog_info_struct, nr_jited_line_info) == offsetof(struct bpf_prog_info, nr_jited_line_info),
                      "bpf_prog_info_struct.nr_jited_line_info offset mismatch");
 # endif /* HAVE_STRUCT_BPF_PROG_INFO_NR_JITED_LINE_INFO */
 
 # ifdef HAVE_STRUCT_BPF_PROG_INFO_LINE_INFO_REC_SIZE
-       static_assert(SoM(struct bpf_prog_info_struct, line_info_rec_size) == SoM(struct bpf_prog_info, line_info_rec_size),
+       static_assert(sizeof_field(struct bpf_prog_info_struct, line_info_rec_size) == sizeof_field(struct bpf_prog_info, line_info_rec_size),
                      "bpf_prog_info_struct.line_info_rec_size size mismatch");
        static_assert(offsetof(struct bpf_prog_info_struct, line_info_rec_size) == offsetof(struct bpf_prog_info, line_info_rec_size),
                      "bpf_prog_info_struct.line_info_rec_size offset mismatch");
 # endif /* HAVE_STRUCT_BPF_PROG_INFO_LINE_INFO_REC_SIZE */
 
 # ifdef HAVE_STRUCT_BPF_PROG_INFO_JITED_LINE_INFO_REC_SIZE
-       static_assert(SoM(struct bpf_prog_info_struct, jited_line_info_rec_size) == SoM(struct bpf_prog_info, jited_line_info_rec_size),
+       static_assert(sizeof_field(struct bpf_prog_info_struct, jited_line_info_rec_size) == sizeof_field(struct bpf_prog_info, jited_line_info_rec_size),
                      "bpf_prog_info_struct.jited_line_info_rec_size size mismatch");
        static_assert(offsetof(struct bpf_prog_info_struct, jited_line_info_rec_size) == offsetof(struct bpf_prog_info, jited_line_info_rec_size),
                      "bpf_prog_info_struct.jited_line_info_rec_size offset mismatch");
 # endif /* HAVE_STRUCT_BPF_PROG_INFO_JITED_LINE_INFO_REC_SIZE */
 
 # ifdef HAVE_STRUCT_BPF_PROG_INFO_NR_PROG_TAGS
-       static_assert(SoM(struct bpf_prog_info_struct, nr_prog_tags) == SoM(struct bpf_prog_info, nr_prog_tags),
+       static_assert(sizeof_field(struct bpf_prog_info_struct, nr_prog_tags) == sizeof_field(struct bpf_prog_info, nr_prog_tags),
                      "bpf_prog_info_struct.nr_prog_tags size mismatch");
        static_assert(offsetof(struct bpf_prog_info_struct, nr_prog_tags) == offsetof(struct bpf_prog_info, nr_prog_tags),
                      "bpf_prog_info_struct.nr_prog_tags offset mismatch");
 # endif /* HAVE_STRUCT_BPF_PROG_INFO_NR_PROG_TAGS */
 
 # ifdef HAVE_STRUCT_BPF_PROG_INFO_PROG_TAGS
-       static_assert(SoM(struct bpf_prog_info_struct, prog_tags) == SoM(struct bpf_prog_info, prog_tags),
+       static_assert(sizeof_field(struct bpf_prog_info_struct, prog_tags) == sizeof_field(struct bpf_prog_info, prog_tags),
                      "bpf_prog_info_struct.prog_tags size mismatch");
        static_assert(offsetof(struct bpf_prog_info_struct, prog_tags) == offsetof(struct bpf_prog_info, prog_tags),
                      "bpf_prog_info_struct.prog_tags offset mismatch");
 # endif /* HAVE_STRUCT_BPF_PROG_INFO_PROG_TAGS */
 
 # ifdef HAVE_STRUCT_BPF_PROG_INFO_RUN_TIME_NS
-       static_assert(SoM(struct bpf_prog_info_struct, run_time_ns) == SoM(struct bpf_prog_info, run_time_ns),
+       static_assert(sizeof_field(struct bpf_prog_info_struct, run_time_ns) == sizeof_field(struct bpf_prog_info, run_time_ns),
                      "bpf_prog_info_struct.run_time_ns size mismatch");
        static_assert(offsetof(struct bpf_prog_info_struct, run_time_ns) == offsetof(struct bpf_prog_info, run_time_ns),
                      "bpf_prog_info_struct.run_time_ns offset mismatch");
 # endif /* HAVE_STRUCT_BPF_PROG_INFO_RUN_TIME_NS */
 
 # ifdef HAVE_STRUCT_BPF_PROG_INFO_RUN_CNT
-       static_assert(SoM(struct bpf_prog_info_struct, run_cnt) == SoM(struct bpf_prog_info, run_cnt),
+       static_assert(sizeof_field(struct bpf_prog_info_struct, run_cnt) == sizeof_field(struct bpf_prog_info, run_cnt),
                      "bpf_prog_info_struct.run_cnt size mismatch");
        static_assert(offsetof(struct bpf_prog_info_struct, run_cnt) == offsetof(struct bpf_prog_info, run_cnt),
                      "bpf_prog_info_struct.run_cnt offset mismatch");
@@ -1036,4 +1115,125 @@ static_assert(bpf_map_info_struct_size == expected_bpf_map_info_struct_size,
 static_assert(bpf_prog_info_struct_size == expected_bpf_prog_info_struct_size,
              "bpf_prog_info_struct_size mismatch");
 
+# ifdef HAVE_UNION_BPF_ATTR_BATCH_IN_BATCH
+       static_assert(sizeof_field(struct BPF_MAP_LOOKUP_BATCH_struct, in_batch) == sizeof_field(union bpf_attr, batch.in_batch),
+                     "BPF_MAP_LOOKUP_BATCH_struct.in_batch size mismatch");
+       static_assert(offsetof(struct BPF_MAP_LOOKUP_BATCH_struct, in_batch) == offsetof(union bpf_attr, batch.in_batch),
+                     "BPF_MAP_LOOKUP_BATCH_struct.in_batch offset mismatch");
+# endif /* HAVE_UNION_BPF_ATTR_BATCH_IN_BATCH */
+
+# ifdef HAVE_UNION_BPF_ATTR_BATCH_OUT_BATCH
+       static_assert(sizeof_field(struct BPF_MAP_LOOKUP_BATCH_struct, out_batch) == sizeof_field(union bpf_attr, batch.out_batch),
+                     "BPF_MAP_LOOKUP_BATCH_struct.out_batch size mismatch");
+       static_assert(offsetof(struct BPF_MAP_LOOKUP_BATCH_struct, out_batch) == offsetof(union bpf_attr, batch.out_batch),
+                     "BPF_MAP_LOOKUP_BATCH_struct.out_batch offset mismatch");
+# endif /* HAVE_UNION_BPF_ATTR_BATCH_OUT_BATCH */
+
+# ifdef HAVE_UNION_BPF_ATTR_BATCH_KEYS
+       static_assert(sizeof_field(struct BPF_MAP_LOOKUP_BATCH_struct, keys) == sizeof_field(union bpf_attr, batch.keys),
+                     "BPF_MAP_LOOKUP_BATCH_struct.keys size mismatch");
+       static_assert(offsetof(struct BPF_MAP_LOOKUP_BATCH_struct, keys) == offsetof(union bpf_attr, batch.keys),
+                     "BPF_MAP_LOOKUP_BATCH_struct.keys offset mismatch");
+# endif /* HAVE_UNION_BPF_ATTR_BATCH_KEYS */
+
+# ifdef HAVE_UNION_BPF_ATTR_BATCH_VALUES
+       static_assert(sizeof_field(struct BPF_MAP_LOOKUP_BATCH_struct, values) == sizeof_field(union bpf_attr, batch.values),
+                     "BPF_MAP_LOOKUP_BATCH_struct.values size mismatch");
+       static_assert(offsetof(struct BPF_MAP_LOOKUP_BATCH_struct, values) == offsetof(union bpf_attr, batch.values),
+                     "BPF_MAP_LOOKUP_BATCH_struct.values offset mismatch");
+# endif /* HAVE_UNION_BPF_ATTR_BATCH_VALUES */
+
+# ifdef HAVE_UNION_BPF_ATTR_BATCH_COUNT
+       static_assert(sizeof_field(struct BPF_MAP_LOOKUP_BATCH_struct, count) == sizeof_field(union bpf_attr, batch.count),
+                     "BPF_MAP_LOOKUP_BATCH_struct.count size mismatch");
+       static_assert(offsetof(struct BPF_MAP_LOOKUP_BATCH_struct, count) == offsetof(union bpf_attr, batch.count),
+                     "BPF_MAP_LOOKUP_BATCH_struct.count offset mismatch");
+# endif /* HAVE_UNION_BPF_ATTR_BATCH_COUNT */
+
+# ifdef HAVE_UNION_BPF_ATTR_BATCH_MAP_FD
+       static_assert(sizeof_field(struct BPF_MAP_LOOKUP_BATCH_struct, map_fd) == sizeof_field(union bpf_attr, batch.map_fd),
+                     "BPF_MAP_LOOKUP_BATCH_struct.map_fd size mismatch");
+       static_assert(offsetof(struct BPF_MAP_LOOKUP_BATCH_struct, map_fd) == offsetof(union bpf_attr, batch.map_fd),
+                     "BPF_MAP_LOOKUP_BATCH_struct.map_fd offset mismatch");
+# endif /* HAVE_UNION_BPF_ATTR_BATCH_MAP_FD */
+
+# ifdef HAVE_UNION_BPF_ATTR_BATCH_ELEM_FLAGS
+       static_assert(sizeof_field(struct BPF_MAP_LOOKUP_BATCH_struct, elem_flags) == sizeof_field(union bpf_attr, batch.elem_flags),
+                     "BPF_MAP_LOOKUP_BATCH_struct.elem_flags size mismatch");
+       static_assert(offsetof(struct BPF_MAP_LOOKUP_BATCH_struct, elem_flags) == offsetof(union bpf_attr, batch.elem_flags),
+                     "BPF_MAP_LOOKUP_BATCH_struct.elem_flags offset mismatch");
+# endif /* HAVE_UNION_BPF_ATTR_BATCH_ELEM_FLAGS */
+
+# ifdef HAVE_UNION_BPF_ATTR_BATCH_FLAGS
+       static_assert(sizeof_field(struct BPF_MAP_LOOKUP_BATCH_struct, flags) == sizeof_field(union bpf_attr, batch.flags),
+                     "BPF_MAP_LOOKUP_BATCH_struct.flags size mismatch");
+       static_assert(offsetof(struct BPF_MAP_LOOKUP_BATCH_struct, flags) == offsetof(union bpf_attr, batch.flags),
+                     "BPF_MAP_LOOKUP_BATCH_struct.flags offset mismatch");
+# endif /* HAVE_UNION_BPF_ATTR_BATCH_FLAGS */
+
+static_assert(BPF_MAP_LOOKUP_BATCH_struct_size == expected_BPF_MAP_LOOKUP_BATCH_struct_size,
+             "BPF_MAP_LOOKUP_BATCH_struct_size mismatch");
+
+# ifdef HAVE_UNION_BPF_ATTR_LINK_CREATE_PROG_FD
+       static_assert(sizeof_field(struct BPF_LINK_CREATE_struct, prog_fd) == sizeof_field(union bpf_attr, link_create.prog_fd),
+                     "BPF_LINK_CREATE_struct.prog_fd size mismatch");
+       static_assert(offsetof(struct BPF_LINK_CREATE_struct, prog_fd) == offsetof(union bpf_attr, link_create.prog_fd),
+                     "BPF_LINK_CREATE_struct.prog_fd offset mismatch");
+# endif /* HAVE_UNION_BPF_ATTR_LINK_CREATE_PROG_FD */
+
+# ifdef HAVE_UNION_BPF_ATTR_LINK_CREATE_TARGET_FD
+       static_assert(sizeof_field(struct BPF_LINK_CREATE_struct, target_fd) == sizeof_field(union bpf_attr, link_create.target_fd),
+                     "BPF_LINK_CREATE_struct.target_fd size mismatch");
+       static_assert(offsetof(struct BPF_LINK_CREATE_struct, target_fd) == offsetof(union bpf_attr, link_create.target_fd),
+                     "BPF_LINK_CREATE_struct.target_fd offset mismatch");
+# endif /* HAVE_UNION_BPF_ATTR_LINK_CREATE_TARGET_FD */
+
+# ifdef HAVE_UNION_BPF_ATTR_LINK_CREATE_ATTACH_TYPE
+       static_assert(sizeof_field(struct BPF_LINK_CREATE_struct, attach_type) == sizeof_field(union bpf_attr, link_create.attach_type),
+                     "BPF_LINK_CREATE_struct.attach_type size mismatch");
+       static_assert(offsetof(struct BPF_LINK_CREATE_struct, attach_type) == offsetof(union bpf_attr, link_create.attach_type),
+                     "BPF_LINK_CREATE_struct.attach_type offset mismatch");
+# endif /* HAVE_UNION_BPF_ATTR_LINK_CREATE_ATTACH_TYPE */
+
+# ifdef HAVE_UNION_BPF_ATTR_LINK_CREATE_FLAGS
+       static_assert(sizeof_field(struct BPF_LINK_CREATE_struct, flags) == sizeof_field(union bpf_attr, link_create.flags),
+                     "BPF_LINK_CREATE_struct.flags size mismatch");
+       static_assert(offsetof(struct BPF_LINK_CREATE_struct, flags) == offsetof(union bpf_attr, link_create.flags),
+                     "BPF_LINK_CREATE_struct.flags offset mismatch");
+# endif /* HAVE_UNION_BPF_ATTR_LINK_CREATE_FLAGS */
+
+static_assert(BPF_LINK_CREATE_struct_size == expected_BPF_LINK_CREATE_struct_size,
+             "BPF_LINK_CREATE_struct_size mismatch");
+
+# ifdef HAVE_UNION_BPF_ATTR_LINK_UPDATE_LINK_FD
+       static_assert(sizeof_field(struct BPF_LINK_UPDATE_struct, link_fd) == sizeof_field(union bpf_attr, link_update.link_fd),
+                     "BPF_LINK_UPDATE_struct.link_fd size mismatch");
+       static_assert(offsetof(struct BPF_LINK_UPDATE_struct, link_fd) == offsetof(union bpf_attr, link_update.link_fd),
+                     "BPF_LINK_UPDATE_struct.link_fd offset mismatch");
+# endif /* HAVE_UNION_BPF_ATTR_LINK_UPDATE_LINK_FD */
+
+# ifdef HAVE_UNION_BPF_ATTR_LINK_UPDATE_NEW_PROG_FD
+       static_assert(sizeof_field(struct BPF_LINK_UPDATE_struct, new_prog_fd) == sizeof_field(union bpf_attr, link_update.new_prog_fd),
+                     "BPF_LINK_UPDATE_struct.new_prog_fd size mismatch");
+       static_assert(offsetof(struct BPF_LINK_UPDATE_struct, new_prog_fd) == offsetof(union bpf_attr, link_update.new_prog_fd),
+                     "BPF_LINK_UPDATE_struct.new_prog_fd offset mismatch");
+# endif /* HAVE_UNION_BPF_ATTR_LINK_UPDATE_NEW_PROG_FD */
+
+# ifdef HAVE_UNION_BPF_ATTR_LINK_UPDATE_FLAGS
+       static_assert(sizeof_field(struct BPF_LINK_UPDATE_struct, flags) == sizeof_field(union bpf_attr, link_update.flags),
+                     "BPF_LINK_UPDATE_struct.flags size mismatch");
+       static_assert(offsetof(struct BPF_LINK_UPDATE_struct, flags) == offsetof(union bpf_attr, link_update.flags),
+                     "BPF_LINK_UPDATE_struct.flags offset mismatch");
+# endif /* HAVE_UNION_BPF_ATTR_LINK_UPDATE_FLAGS */
+
+# ifdef HAVE_UNION_BPF_ATTR_LINK_UPDATE_OLD_PROG_FD
+       static_assert(sizeof_field(struct BPF_LINK_UPDATE_struct, old_prog_fd) == sizeof_field(union bpf_attr, link_update.old_prog_fd),
+                     "BPF_LINK_UPDATE_struct.old_prog_fd size mismatch");
+       static_assert(offsetof(struct BPF_LINK_UPDATE_struct, old_prog_fd) == offsetof(union bpf_attr, link_update.old_prog_fd),
+                     "BPF_LINK_UPDATE_struct.old_prog_fd offset mismatch");
+# endif /* HAVE_UNION_BPF_ATTR_LINK_UPDATE_OLD_PROG_FD */
+
+static_assert(BPF_LINK_UPDATE_struct_size == expected_BPF_LINK_UPDATE_struct_size,
+             "BPF_LINK_UPDATE_struct_size mismatch");
+
 #endif /* HAVE_LINUX_BPF_H */
index fbd26a5c86fa166cdde7e4b22099dab06945893c..8acf08d78ea60885148fc7c5b46307ee2738a985 100644 (file)
@@ -36,10 +36,8 @@ print_bpf_filter_code(const uint16_t code, bool extended)
        const struct xlat *mode = extended ? ebpf_mode : bpf_mode;
        uint16_t i = code & ~BPF_CLASS(code);
 
-       if (extended)
-               printxval_index(ebpf_class, BPF_CLASS(code), "BPF_???");
-       else
-               printxval_index(bpf_class, BPF_CLASS(code), "BPF_???");
+       printxval(extended ? ebpf_class : bpf_class, BPF_CLASS(code),
+                 "BPF_???");
        switch (BPF_CLASS(code)) {
        case BPF_ST:
        case BPF_STX:
index e66faa8ec74b782da399cf3d8d18e45ac20fd9c8..dbcae5b40728b48a703ea9e1cd742d3ff05b9f05 100644 (file)
@@ -2,7 +2,7 @@
  * Decoder of socket filter programs.
  *
  * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -14,7 +14,9 @@
 
 #include <linux/filter.h>
 #include "xlat/skf_ad.h"
-#include "xlat/skf_off.h"
+#define XLAT_MACROS_ONLY
+# include "xlat/skf_off.h"
+#undef XLAT_MACROS_ONLY
 
 static bool
 print_sock_filter_k(const struct bpf_filter_block *const fp)
diff --git a/btrfs.c b/btrfs.c
index dc5eff1a24b80fa25116592db70261d2bfe52058..77ce151fe05038b272930fdaa936a5a51bc80923 100644 (file)
--- a/btrfs.c
+++ b/btrfs.c
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2016 Jeff Mahoney <jeffm@suse.com>
- * Copyright (c) 2016-2019 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -33,6 +33,7 @@ typedef struct btrfs_ioctl_vol_args_v2
 #ifdef HAVE_LINUX_BTRFS_H
 
 # include "print_fields.h"
+# include "types/btrfs.h"
 # include <linux/fs.h>
 
 /*
@@ -833,7 +834,7 @@ MPERS_PRINTER_DECL(int, btrfs_ioctl,
        }
 
        case BTRFS_IOC_LOGICAL_INO: { /* RW */
-               struct btrfs_ioctl_logical_ino_args args;
+               struct_btrfs_ioctl_logical_ino_args args;
 
                if (entering(tcp))
                        tprints(", ");
@@ -849,23 +850,12 @@ MPERS_PRINTER_DECL(int, btrfs_ioctl,
                        PRINT_FIELD_U("{", args, logical);
                        PRINT_FIELD_U(", ", args, size);
 
-                       if (!IS_ARRAY_ZERO(args.reserved)) {
-                               tprints(", reserved=[");
-                               for (size_t i = 0; i < 3; ++i)
-                                       tprintf("%s%#" PRI__x64,
-                                               i ? ", " : "",
-                                               args.reserved[i]);
-                               tprints("]");
-                       }
+                       if (!IS_ARRAY_ZERO(args.reserved))
+                               PRINT_FIELD_X_ARRAY(", ", args, reserved);
 
-                       tprintf(", flags=");
-                       printflags64(btrfs_logical_ino_args_flags,
-# ifdef HAVE_STRUCT_BTRFS_IOCTL_LOGICAL_INO_ARGS_FLAGS
-                                    args.flags
-# else
-                                    args.reserved[3]
-# endif
-                                    , "BTRFS_LOGICAL_INO_ARGS_???");
+                       tprints(", flags=");
+                       printflags64(btrfs_logical_ino_args_flags, args.flags,
+                                    "BTRFS_LOGICAL_INO_ARGS_???");
                        PRINT_FIELD_ADDR64(", ", args, inodes);
                        tprints("}");
                        return 0;
index ac53745e7d426ea309a57d0c8945fe32ba5b40eb..64030507256bfb24f6f0dbf0644de4cfcfcec1ee 100644 (file)
 
 #ifdef M68K
 # include "xlat/cacheflush_scope.h"
-
-static const struct xlat cacheflush_flags[] = {
-# ifdef FLUSH_CACHE_BOTH
-       XLAT(FLUSH_CACHE_BOTH),
-# endif
-# ifdef FLUSH_CACHE_DATA
-       XLAT(FLUSH_CACHE_DATA),
-# endif
-# ifdef FLUSH_CACHE_INSN
-       XLAT(FLUSH_CACHE_INSN),
-# endif
-       XLAT_END
-};
+# include "xlat/cacheflush_flags.h"
 
 SYS_FUNC(cacheflush)
 {
@@ -50,12 +38,7 @@ SYS_FUNC(cacheflush)
 #endif /* M68K */
 
 #if defined(BFIN) || defined(CSKY)
-static const struct xlat cacheflush_flags[] = {
-       XLAT(ICACHE),
-       XLAT(DCACHE),
-       XLAT(BCACHE),
-       XLAT_END
-};
+# include "xlat/cacheflush_flags.h"
 
 SYS_FUNC(cacheflush)
 {
@@ -71,21 +54,7 @@ SYS_FUNC(cacheflush)
 #endif /* BFIN || CSKY */
 
 #ifdef SH
-static const struct xlat cacheflush_flags[] = {
-# ifdef CACHEFLUSH_D_INVAL
-       XLAT(CACHEFLUSH_D_INVAL),
-# endif
-# ifdef CACHEFLUSH_D_WB
-       XLAT(CACHEFLUSH_D_WB),
-# endif
-# ifdef CACHEFLUSH_D_PURGE
-       XLAT(CACHEFLUSH_D_PURGE),
-# endif
-# ifdef CACHEFLUSH_I
-       XLAT(CACHEFLUSH_I),
-# endif
-       XLAT_END
-};
+# include "xlat/cacheflush_flags.h"
 
 SYS_FUNC(cacheflush)
 {
index 0e763ee1d7b9d5ab368cb797b4abf043526bd4bb..cdd8fac3c3c537f643b415436161bd9662a5846b 100644 (file)
@@ -2,7 +2,7 @@
  * Copyright (c) 2000 Wichert Akkerman <wakkerma@debian.org>
  * Copyright (c) 2011 Denys Vlasenko <dvlasenk@redhat.com>
  * Copyright (c) 2005-2015 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2014-2018 The strace developers.
+ * Copyright (c) 2014-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -70,7 +70,9 @@ print_cap_header(struct tcb *const tcp, const kernel_ulong_t addr,
        tprints("{version=");
        printxval(cap_version, h->version,
                  "_LINUX_CAPABILITY_VERSION_???");
-       tprintf(", pid=%d}", h->pid);
+       tprints(", pid=");
+       printpid(tcp, h->pid, PT_TGID);
+       tprints("}");
 }
 
 static void
diff --git a/caps1.h b/caps1.h
index 7c36160e45d3e254dc9903e821105562debd525e..ef10ddef083604b7e40bd4fc82bee2bf338022f0 100644 (file)
--- a/caps1.h
+++ b/caps1.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2020 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -11,3 +11,6 @@ CAP_SYSLOG,
 CAP_WAKE_ALARM,
 CAP_BLOCK_SUSPEND,
 CAP_AUDIT_READ,
+CAP_PERFMON,
+CAP_BPF,
+CAP_CHECKPOINT_RESTORE,
diff --git a/chmod.c b/chmod.c
index 7668e746c808b599d66a17aef2fb230e0326de93..85b3abec3b5f416fe417974b65786df09605f631 100644 (file)
--- a/chmod.c
+++ b/chmod.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014-2018 The strace developers.
+ * Copyright (c) 2014-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -25,6 +25,7 @@ SYS_FUNC(chmod)
 SYS_FUNC(fchmodat)
 {
        print_dirfd(tcp, tcp->u_arg[0]);
+       tprints(", ");
        decode_chmod(tcp, 1);
 
        return RVAL_DECODED;
diff --git a/clone.c b/clone.c
index 406838c4ffa53879ecd32f5806b03b8277cacb56..45f240656d041de105df003efca4c123ede9e275 100644 (file)
--- a/clone.c
+++ b/clone.c
@@ -4,7 +4,7 @@
  * Copyright (c) 2008 Jan Kratochvil <jan.kratochvil@redhat.com>
  * Copyright (c) 2009-2013 Denys Vlasenko <dvlasenk@redhat.com>
  * Copyright (c) 2006-2015 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2014-2019 The strace developers.
+ * Copyright (c) 2014-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
 
 #include "defs.h"
 #include <sched.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifndef CSIGNAL
 # define CSIGNAL 0x000000ff
 #endif
 
+#include "print_fields.h"
+
 #include "xlat/clone_flags.h"
+#include "xlat/clone3_flags.h"
 #include "xlat/setns_types.h"
 #include "xlat/unshare_flags.h"
 
 #if defined IA64
 # define ARG_FLAGS     0
 # define ARG_STACK     1
-# define ARG_STACKSIZE (tcp->scno == __NR_clone2 ? 2 : -1)
-# define ARG_PTID      (tcp->scno == __NR_clone2 ? 3 : 2)
-# define ARG_CTID      (tcp->scno == __NR_clone2 ? 4 : 3)
-# define ARG_TLS       (tcp->scno == __NR_clone2 ? 5 : 4)
+# define ARG_STACKSIZE (shuffle_scno(tcp->scno) == __NR_clone2 ? 2 : -1)
+# define ARG_PTID      (shuffle_scno(tcp->scno) == __NR_clone2 ? 3 : 2)
+# define ARG_CTID      (shuffle_scno(tcp->scno) == __NR_clone2 ? 4 : 3)
+# define ARG_TLS       (shuffle_scno(tcp->scno) == __NR_clone2 ? 5 : 4)
 #elif defined S390 || defined S390X
 # define ARG_STACK     0
 # define ARG_FLAGS     1
@@ -60,26 +63,24 @@ static void
 print_tls_arg(struct tcb *const tcp, const kernel_ulong_t addr)
 {
 #ifdef HAVE_STRUCT_USER_DESC
-# if SUPPORTED_PERSONALITIES > 1
-       if (current_personality == 1)
-# endif
+       if ((SUPPORTED_PERSONALITIES == 1) || (current_personality == 1))
        {
-               print_user_desc(tcp, tcp->u_arg[ARG_TLS], USER_DESC_BOTH);
+               print_user_desc(tcp, addr, USER_DESC_BOTH);
        }
-# if SUPPORTED_PERSONALITIES > 1
        else
-# endif
 #endif /* HAVE_STRUCT_USER_DESC */
        {
-               printaddr(tcp->u_arg[ARG_TLS]);
+               printaddr(addr);
        }
 }
 
 SYS_FUNC(clone)
 {
-       if (exiting(tcp)) {
-               const char *sep = "|";
-               kernel_ulong_t flags = tcp->u_arg[ARG_FLAGS];
+       const kernel_ulong_t flags = tcp->u_arg[ARG_FLAGS] & ~CSIGNAL;
+
+       if (entering(tcp)) {
+               const unsigned int sig = tcp->u_arg[ARG_FLAGS] & CSIGNAL;
+
                tprints("child_stack=");
                printaddr(tcp->u_arg[ARG_STACK]);
                tprints(", ");
@@ -89,18 +90,40 @@ SYS_FUNC(clone)
                                tcp->u_arg[ARG_STACKSIZE]);
 #endif
                tprints("flags=");
-               if (!printflags64(clone_flags, flags & ~CSIGNAL, NULL))
-                       sep = "";
-               if ((flags & CSIGNAL) != 0) {
-                       tprints(sep);
-                       printsignal(flags & CSIGNAL);
+               if (flags) {
+                       printflags64(clone_flags, flags, "CLONE_???");
+                       if (sig) {
+                               tprints("|");
+                               printsignal(sig);
+                       }
+               } else {
+                       printsignal(sig);
                }
-               if ((flags & (CLONE_PARENT_SETTID|CLONE_CHILD_SETTID
+               /*
+                * TODO on syscall entry:
+                * We can clear CLONE_PTRACE here since it is an ancient hack
+                * to allow us to catch children, and we use another hack for that.
+                * But CLONE_PTRACE can conceivably be used by malicious programs
+                * to subvert us. By clearing this bit, we can defend against it:
+                * in untraced execution, CLONE_PTRACE should have no effect.
+                *
+                * We can also clear CLONE_UNTRACED, since it allows to start
+                * children outside of our control. At the moment
+                * I'm trying to figure out whether there is a *legitimate*
+                * use of this flag which we should respect.
+                */
+               if ((flags & (CLONE_PARENT_SETTID|CLONE_PIDFD|CLONE_CHILD_SETTID
                              |CLONE_CHILD_CLEARTID|CLONE_SETTLS)) == 0)
-                       return 0;
-               if (flags & CLONE_PARENT_SETTID) {
-                       tprints(", parent_tidptr=");
-                       printaddr(tcp->u_arg[ARG_PTID]);
+                       return RVAL_DECODED | RVAL_TID;
+       } else {
+               if (flags & (CLONE_PARENT_SETTID|CLONE_PIDFD)) {
+                       kernel_ulong_t addr = tcp->u_arg[ARG_PTID];
+
+                       tprints(", parent_tid=");
+                       if (flags & CLONE_PARENT_SETTID)
+                               printnum_pid(tcp, addr, PT_TID);
+                       else
+                               printnum_fd(tcp, addr);
                }
                if (flags & CLONE_SETTLS) {
                        tprints(", tls=");
@@ -111,21 +134,155 @@ SYS_FUNC(clone)
                        printaddr(tcp->u_arg[ARG_CTID]);
                }
        }
-       /* TODO on syscall entry:
-        * We can clear CLONE_PTRACE here since it is an ancient hack
-        * to allow us to catch children, and we use another hack for that.
-        * But CLONE_PTRACE can conceivably be used by malicious programs
-        * to subvert us. By clearing this bit, we can defend against it:
-        * in untraced execution, CLONE_PTRACE should have no effect.
-        *
-        * We can also clear CLONE_UNTRACED, since it allows to start
-        * children outside of our control. At the moment
-        * I'm trying to figure out whether there is a *legitimate*
-        * use of this flag which we should respect.
-        */
-       return 0;
+       return RVAL_TID;
 }
 
+
+struct strace_clone_args {
+       uint64_t flags;
+       uint64_t /* fd * */    pidfd;
+       uint64_t /* pid_t * */ child_tid;
+       uint64_t /* pid_t * */ parent_tid;
+       uint64_t /* int */     exit_signal;
+       uint64_t /* void * */  stack;
+       uint64_t stack_size;
+       uint64_t /* struct user_desc * / void * */ tls;
+       uint64_t /* pid_t * */ set_tid;
+       uint64_t set_tid_size;
+       uint64_t cgroup;
+};
+
+SYS_FUNC(clone3)
+{
+       static const size_t minsz = offsetofend(struct strace_clone_args, tls);
+
+       const kernel_ulong_t addr = tcp->u_arg[0];
+       const kernel_ulong_t size = tcp->u_arg[1];
+
+       struct strace_clone_args arg = { 0 };
+       kernel_ulong_t fetch_size;
+
+       fetch_size = MIN(size, sizeof(arg));
+
+       if (entering(tcp)) {
+               if (fetch_size < minsz) {
+                       printaddr(addr);
+                       goto out;
+               } else if (umoven_or_printaddr(tcp, addr, fetch_size, &arg)) {
+                       goto out;
+               }
+
+               tprints("{flags=");
+               printflags_ex(arg.flags, "CLONE_???", XLAT_STYLE_DEFAULT,
+                             clone_flags, clone3_flags, NULL);
+
+               if (arg.flags & CLONE_PIDFD)
+                       PRINT_FIELD_ADDR64(", ", arg, pidfd);
+
+               if (arg.flags & (CLONE_CHILD_SETTID | CLONE_CHILD_CLEARTID))
+                       PRINT_FIELD_ADDR64(", ", arg, child_tid);
+
+               if (arg.flags & CLONE_PARENT_SETTID)
+                       PRINT_FIELD_ADDR64(", ", arg, parent_tid);
+
+               tprints(", exit_signal=");
+               if (arg.exit_signal < INT_MAX)
+                       printsignal(arg.exit_signal);
+               else
+                       tprintf("%" PRIu64, arg.exit_signal);
+
+               PRINT_FIELD_ADDR64(", ", arg, stack);
+               PRINT_FIELD_X(", ", arg, stack_size);
+
+               if (arg.flags & CLONE_SETTLS) {
+                       tprints(", tls=");
+                       print_tls_arg(tcp, arg.tls);
+               }
+
+               if (arg.set_tid || arg.set_tid_size) {
+                       static const unsigned int max_set_tid_size = 32;
+
+                       if (!arg.set_tid || !arg.set_tid_size ||
+                           arg.set_tid_size > max_set_tid_size) {
+                               PRINT_FIELD_ADDR64(", ", arg, set_tid);
+                       } else {
+                               int buf;
+
+                               tprints(", set_tid=");
+                               print_array(tcp, arg.set_tid, arg.set_tid_size,
+                                           &buf, sizeof(buf), tfetch_mem,
+                                           print_int32_array_member, 0);
+                       }
+                       PRINT_FIELD_U(", ", arg, set_tid_size);
+               }
+
+               if (fetch_size > offsetof(struct strace_clone_args, cgroup)
+                   && (arg.cgroup || arg.flags & CLONE_INTO_CGROUP))
+                       PRINT_FIELD_U(", ", arg, cgroup);
+
+               if (size > fetch_size)
+                       print_nonzero_bytes(tcp, ", ", addr, fetch_size,
+                                           MIN(size, get_pagesize()),
+                                           QUOTE_FORCE_HEX);
+
+               tprints("}");
+
+               if ((arg.flags & (CLONE_PIDFD | CLONE_PARENT_SETTID)) ||
+                   (size > fetch_size))
+                       return RVAL_TID;
+
+               goto out;
+       }
+
+       /* exiting */
+
+       if (syserror(tcp))
+               goto out;
+
+       if (umoven(tcp, addr, fetch_size, &arg)) {
+               tprints(" => ");
+               printaddr(addr);
+               goto out;
+       }
+
+       static const char initial_pfx[] = " => {";
+       const char *pfx = initial_pfx;
+
+       if (arg.flags & CLONE_PIDFD) {
+               tprintf("%spidfd=", pfx);
+               printnum_fd(tcp, arg.pidfd);
+               pfx = ", ";
+       }
+
+       if (arg.flags & CLONE_PARENT_SETTID) {
+               tprintf("%sparent_tid=", pfx);
+               printnum_pid(tcp, arg.parent_tid, PT_TID);
+               pfx = ", ";
+       }
+
+       if (size > fetch_size) {
+               /*
+                * TODO: it is possible to also store the tail on entering
+                *       and then compare against it on exiting in order
+                *       to avoid double-printing, but it would also require yet
+                *       another complication of print_nonzero_bytes interface.
+                */
+               if (print_nonzero_bytes(tcp, pfx, addr, fetch_size,
+                                       MIN(size, get_pagesize()),
+                                       QUOTE_FORCE_HEX))
+                       pfx = ", ";
+       }
+
+       if (pfx != initial_pfx)
+               tprints("}");
+
+out:
+       tprintf(", %" PRI_klu, size);
+
+       return RVAL_DECODED | RVAL_TID;
+}
+
+
 SYS_FUNC(setns)
 {
        printfd(tcp, tcp->u_arg[0]);
@@ -143,5 +300,5 @@ SYS_FUNC(unshare)
 
 SYS_FUNC(fork)
 {
-       return RVAL_DECODED;
+       return RVAL_DECODED | RVAL_TGID;
 }
diff --git a/close_range.c b/close_range.c
new file mode 100644 (file)
index 0000000..191537a
--- /dev/null
@@ -0,0 +1,22 @@
+/*
+ * Copyright (c) 2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#include "defs.h"
+#ifdef HAVE_LINUX_CLOSE_RANGE_H
+# include <linux/close_range.h>
+#endif
+#include "xlat/close_range_flags.h"
+
+SYS_FUNC(close_range)
+{
+       printfd(tcp, tcp->u_arg[0]);
+       tprints(", ");
+       printfd(tcp, tcp->u_arg[1]);
+       tprints(", ");
+       printflags(close_range_flags, tcp->u_arg[2], "CLOSE_RANGE_???");
+       return RVAL_DECODED;
+}
diff --git a/compile b/compile
index 99e50524b3bade179355469777b4d664bcd5c964..23fcba011321a3a2b3b94a8abb13201dbdd1faa5 100755 (executable)
--- a/compile
+++ b/compile
@@ -3,7 +3,7 @@
 
 scriptversion=2018-03-07.03; # UTC
 
-# Copyright (C) 1999-2018 Free Software Foundation, Inc.
+# Copyright (C) 1999-2020 Free Software Foundation, Inc.
 # Written by Tom Tromey <tromey@cygnus.com>.
 #
 # This program is free software; you can redistribute it and/or modify
@@ -53,7 +53,7 @@ func_file_conv ()
          MINGW*)
            file_conv=mingw
            ;;
-         CYGWIN*)
+         CYGWIN* | MSYS*)
            file_conv=cygwin
            ;;
          *)
@@ -67,7 +67,7 @@ func_file_conv ()
        mingw/*)
          file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
          ;;
-       cygwin/*)
+       cygwin/* | msys/*)
          file=`cygpath -m "$file" || echo "$file"`
          ;;
        wine/*)
index 10fc48316a2a80b5890aa8bc36c59753c1b7f985..4ba992018b01b5ea84a19c5379675fcf869a968e 100644 (file)
    if you don't. */
 #undef HAVE_DECL_BTRFS_COMPRESS_ZLIB
 
+/* Define to 1 if you have the declaration of `BTRFS_COMPRESS_ZSTD', and to 0
+   if you don't. */
+#undef HAVE_DECL_BTRFS_COMPRESS_ZSTD
+
+/* Define to 1 if you have the declaration of `CLOSE_RANGE_UNSHARE', and to 0
+   if you don't. */
+#undef HAVE_DECL_CLOSE_RANGE_UNSHARE
+
+/* Define to 1 if you have the declaration of `CTL_ABI', and to 0 if you
+   don't. */
+#undef HAVE_DECL_CTL_ABI
+
 /* Define to 1 if you have the declaration of `CTL_ARLAN', and to 0 if you
    don't. */
 #undef HAVE_DECL_CTL_ARLAN
 
+/* Define to 1 if you have the declaration of `CTL_BUS', and to 0 if you
+   don't. */
+#undef HAVE_DECL_CTL_BUS
+
+/* Define to 1 if you have the declaration of `CTL_CPU', and to 0 if you
+   don't. */
+#undef HAVE_DECL_CTL_CPU
+
+/* Define to 1 if you have the declaration of `CTL_DEBUG', and to 0 if you
+   don't. */
+#undef HAVE_DECL_CTL_DEBUG
+
+/* Define to 1 if you have the declaration of `CTL_DEV', and to 0 if you
+   don't. */
+#undef HAVE_DECL_CTL_DEV
+
 /* Define to 1 if you have the declaration of `CTL_FRV', and to 0 if you
    don't. */
 #undef HAVE_DECL_CTL_FRV
 
+/* Define to 1 if you have the declaration of `CTL_FS', and to 0 if you don't.
+   */
+#undef HAVE_DECL_CTL_FS
+
+/* Define to 1 if you have the declaration of `CTL_KERN', and to 0 if you
+   don't. */
+#undef HAVE_DECL_CTL_KERN
+
+/* Define to 1 if you have the declaration of `CTL_NET', and to 0 if you
+   don't. */
+#undef HAVE_DECL_CTL_NET
+
 /* Define to 1 if you have the declaration of `CTL_PM', and to 0 if you don't.
    */
 #undef HAVE_DECL_CTL_PM
    don't. */
 #undef HAVE_DECL_CTL_SUNRPC
 
+/* Define to 1 if you have the declaration of `CTL_VM', and to 0 if you don't.
+   */
+#undef HAVE_DECL_CTL_VM
+
+/* Define to 1 if you have the declaration of `IFLA_ADDRESS', and to 0 if you
+   don't. */
+#undef HAVE_DECL_IFLA_ADDRESS
+
 /* Define to 1 if you have the declaration of `IFLA_AF_SPEC', and to 0 if you
    don't. */
 #undef HAVE_DECL_IFLA_AF_SPEC
 
+/* Define to 1 if you have the declaration of `IFLA_ALT_IFNAME', and to 0 if
+   you don't. */
+#undef HAVE_DECL_IFLA_ALT_IFNAME
+
+/* Define to 1 if you have the declaration of `IFLA_BROADCAST', and to 0 if
+   you don't. */
+#undef HAVE_DECL_IFLA_BROADCAST
+
+/* Define to 1 if you have the declaration of `IFLA_CARRIER', and to 0 if you
+   don't. */
+#undef HAVE_DECL_IFLA_CARRIER
+
+/* Define to 1 if you have the declaration of `IFLA_CARRIER_CHANGES', and to 0
+   if you don't. */
+#undef HAVE_DECL_IFLA_CARRIER_CHANGES
+
+/* Define to 1 if you have the declaration of `IFLA_CARRIER_DOWN_COUNT', and
+   to 0 if you don't. */
+#undef HAVE_DECL_IFLA_CARRIER_DOWN_COUNT
+
+/* Define to 1 if you have the declaration of `IFLA_CARRIER_UP_COUNT', and to
+   0 if you don't. */
+#undef HAVE_DECL_IFLA_CARRIER_UP_COUNT
+
+/* Define to 1 if you have the declaration of `IFLA_COST', and to 0 if you
+   don't. */
+#undef HAVE_DECL_IFLA_COST
+
+/* Define to 1 if you have the declaration of `IFLA_EVENT', and to 0 if you
+   don't. */
+#undef HAVE_DECL_IFLA_EVENT
+
+/* Define to 1 if you have the declaration of `IFLA_EXT_MASK', and to 0 if you
+   don't. */
+#undef HAVE_DECL_IFLA_EXT_MASK
+
+/* Define to 1 if you have the declaration of `IFLA_GROUP', and to 0 if you
+   don't. */
+#undef HAVE_DECL_IFLA_GROUP
+
+/* Define to 1 if you have the declaration of `IFLA_GSO_MAX_SEGS', and to 0 if
+   you don't. */
+#undef HAVE_DECL_IFLA_GSO_MAX_SEGS
+
+/* Define to 1 if you have the declaration of `IFLA_GSO_MAX_SIZE', and to 0 if
+   you don't. */
+#undef HAVE_DECL_IFLA_GSO_MAX_SIZE
+
+/* Define to 1 if you have the declaration of `IFLA_IFALIAS', and to 0 if you
+   don't. */
+#undef HAVE_DECL_IFLA_IFALIAS
+
+/* Define to 1 if you have the declaration of `IFLA_IFNAME', and to 0 if you
+   don't. */
+#undef HAVE_DECL_IFLA_IFNAME
+
+/* Define to 1 if you have the declaration of `IFLA_IF_NETNSID', and to 0 if
+   you don't. */
+#undef HAVE_DECL_IFLA_IF_NETNSID
+
+/* Define to 1 if you have the declaration of `IFLA_LINK', and to 0 if you
+   don't. */
+#undef HAVE_DECL_IFLA_LINK
+
+/* Define to 1 if you have the declaration of `IFLA_LINKINFO', and to 0 if you
+   don't. */
+#undef HAVE_DECL_IFLA_LINKINFO
+
+/* Define to 1 if you have the declaration of `IFLA_LINKMODE', and to 0 if you
+   don't. */
+#undef HAVE_DECL_IFLA_LINKMODE
+
+/* Define to 1 if you have the declaration of `IFLA_LINK_NETNSID', and to 0 if
+   you don't. */
+#undef HAVE_DECL_IFLA_LINK_NETNSID
+
+/* Define to 1 if you have the declaration of `IFLA_MAP', and to 0 if you
+   don't. */
+#undef HAVE_DECL_IFLA_MAP
+
+/* Define to 1 if you have the declaration of `IFLA_MASTER', and to 0 if you
+   don't. */
+#undef HAVE_DECL_IFLA_MASTER
+
+/* Define to 1 if you have the declaration of `IFLA_MAX_MTU', and to 0 if you
+   don't. */
+#undef HAVE_DECL_IFLA_MAX_MTU
+
+/* Define to 1 if you have the declaration of `IFLA_MIN_MTU', and to 0 if you
+   don't. */
+#undef HAVE_DECL_IFLA_MIN_MTU
+
+/* Define to 1 if you have the declaration of `IFLA_MTU', and to 0 if you
+   don't. */
+#undef HAVE_DECL_IFLA_MTU
+
+/* Define to 1 if you have the declaration of `IFLA_NET_NS_FD', and to 0 if
+   you don't. */
+#undef HAVE_DECL_IFLA_NET_NS_FD
+
+/* Define to 1 if you have the declaration of `IFLA_NET_NS_PID', and to 0 if
+   you don't. */
+#undef HAVE_DECL_IFLA_NET_NS_PID
+
+/* Define to 1 if you have the declaration of `IFLA_NEW_IFINDEX', and to 0 if
+   you don't. */
+#undef HAVE_DECL_IFLA_NEW_IFINDEX
+
+/* Define to 1 if you have the declaration of `IFLA_NEW_NETNSID', and to 0 if
+   you don't. */
+#undef HAVE_DECL_IFLA_NEW_NETNSID
+
+/* Define to 1 if you have the declaration of `IFLA_NUM_RX_QUEUES', and to 0
+   if you don't. */
+#undef HAVE_DECL_IFLA_NUM_RX_QUEUES
+
+/* Define to 1 if you have the declaration of `IFLA_NUM_TX_QUEUES', and to 0
+   if you don't. */
+#undef HAVE_DECL_IFLA_NUM_TX_QUEUES
+
+/* Define to 1 if you have the declaration of `IFLA_NUM_VF', and to 0 if you
+   don't. */
+#undef HAVE_DECL_IFLA_NUM_VF
+
+/* Define to 1 if you have the declaration of `IFLA_OPERSTATE', and to 0 if
+   you don't. */
+#undef HAVE_DECL_IFLA_OPERSTATE
+
+/* Define to 1 if you have the declaration of `IFLA_PAD', and to 0 if you
+   don't. */
+#undef HAVE_DECL_IFLA_PAD
+
+/* Define to 1 if you have the declaration of `IFLA_PERM_ADDRESS', and to 0 if
+   you don't. */
+#undef HAVE_DECL_IFLA_PERM_ADDRESS
+
+/* Define to 1 if you have the declaration of `IFLA_PHYS_PORT_ID', and to 0 if
+   you don't. */
+#undef HAVE_DECL_IFLA_PHYS_PORT_ID
+
+/* Define to 1 if you have the declaration of `IFLA_PHYS_PORT_NAME', and to 0
+   if you don't. */
+#undef HAVE_DECL_IFLA_PHYS_PORT_NAME
+
+/* Define to 1 if you have the declaration of `IFLA_PHYS_SWITCH_ID', and to 0
+   if you don't. */
+#undef HAVE_DECL_IFLA_PHYS_SWITCH_ID
+
 /* Define to 1 if you have the declaration of `IFLA_PORT_SELF', and to 0 if
    you don't. */
 #undef HAVE_DECL_IFLA_PORT_SELF
 
+/* Define to 1 if you have the declaration of `IFLA_PRIORITY', and to 0 if you
+   don't. */
+#undef HAVE_DECL_IFLA_PRIORITY
+
+/* Define to 1 if you have the declaration of `IFLA_PROMISCUITY', and to 0 if
+   you don't. */
+#undef HAVE_DECL_IFLA_PROMISCUITY
+
+/* Define to 1 if you have the declaration of `IFLA_PROP_LIST', and to 0 if
+   you don't. */
+#undef HAVE_DECL_IFLA_PROP_LIST
+
 /* Define to 1 if you have the declaration of `IFLA_PROTINFO', and to 0 if you
    don't. */
 #undef HAVE_DECL_IFLA_PROTINFO
 
+/* Define to 1 if you have the declaration of `IFLA_PROTO_DOWN', and to 0 if
+   you don't. */
+#undef HAVE_DECL_IFLA_PROTO_DOWN
+
+/* Define to 1 if you have the declaration of `IFLA_PROTO_DOWN_REASON', and to
+   0 if you don't. */
+#undef HAVE_DECL_IFLA_PROTO_DOWN_REASON
+
+/* Define to 1 if you have the declaration of `IFLA_QDISC', and to 0 if you
+   don't. */
+#undef HAVE_DECL_IFLA_QDISC
+
+/* Define to 1 if you have the declaration of `IFLA_STATS', and to 0 if you
+   don't. */
+#undef HAVE_DECL_IFLA_STATS
+
+/* Define to 1 if you have the declaration of `IFLA_STATS64', and to 0 if you
+   don't. */
+#undef HAVE_DECL_IFLA_STATS64
+
+/* Define to 1 if you have the declaration of `IFLA_TXQLEN', and to 0 if you
+   don't. */
+#undef HAVE_DECL_IFLA_TXQLEN
+
+/* Define to 1 if you have the declaration of `IFLA_UNSPEC', and to 0 if you
+   don't. */
+#undef HAVE_DECL_IFLA_UNSPEC
+
+/* Define to 1 if you have the declaration of `IFLA_VFINFO_LIST', and to 0 if
+   you don't. */
+#undef HAVE_DECL_IFLA_VFINFO_LIST
+
+/* Define to 1 if you have the declaration of `IFLA_VF_PORTS', and to 0 if you
+   don't. */
+#undef HAVE_DECL_IFLA_VF_PORTS
+
+/* Define to 1 if you have the declaration of `IFLA_WEIGHT', and to 0 if you
+   don't. */
+#undef HAVE_DECL_IFLA_WEIGHT
+
+/* Define to 1 if you have the declaration of `IFLA_WIRELESS', and to 0 if you
+   don't. */
+#undef HAVE_DECL_IFLA_WIRELESS
+
 /* Define to 1 if you have the declaration of `IFLA_XDP', and to 0 if you
    don't. */
 #undef HAVE_DECL_IFLA_XDP
 
+/* Define to 1 if you have the declaration of `IFLA_XDP_ATTACHED', and to 0 if
+   you don't. */
+#undef HAVE_DECL_IFLA_XDP_ATTACHED
+
+/* Define to 1 if you have the declaration of `IFLA_XDP_DRV_PROG_ID', and to 0
+   if you don't. */
+#undef HAVE_DECL_IFLA_XDP_DRV_PROG_ID
+
+/* Define to 1 if you have the declaration of `IFLA_XDP_EXPECTED_FD', and to 0
+   if you don't. */
+#undef HAVE_DECL_IFLA_XDP_EXPECTED_FD
+
+/* Define to 1 if you have the declaration of `IFLA_XDP_FD', and to 0 if you
+   don't. */
+#undef HAVE_DECL_IFLA_XDP_FD
+
+/* Define to 1 if you have the declaration of `IFLA_XDP_FLAGS', and to 0 if
+   you don't. */
+#undef HAVE_DECL_IFLA_XDP_FLAGS
+
+/* Define to 1 if you have the declaration of `IFLA_XDP_HW_PROG_ID', and to 0
+   if you don't. */
+#undef HAVE_DECL_IFLA_XDP_HW_PROG_ID
+
+/* Define to 1 if you have the declaration of `IFLA_XDP_PROG_ID', and to 0 if
+   you don't. */
+#undef HAVE_DECL_IFLA_XDP_PROG_ID
+
+/* Define to 1 if you have the declaration of `IFLA_XDP_SKB_PROG_ID', and to 0
+   if you don't. */
+#undef HAVE_DECL_IFLA_XDP_SKB_PROG_ID
+
+/* Define to 1 if you have the declaration of `IFLA_XDP_UNSPEC', and to 0 if
+   you don't. */
+#undef HAVE_DECL_IFLA_XDP_UNSPEC
+
+/* Define to 1 if you have the declaration of `KERN_ACCT', and to 0 if you
+   don't. */
+#undef HAVE_DECL_KERN_ACCT
+
 /* Define to 1 if you have the declaration of `KERN_ACPI_VIDEO_FLAGS', and to
    0 if you don't. */
 #undef HAVE_DECL_KERN_ACPI_VIDEO_FLAGS
    if you don't. */
 #undef HAVE_DECL_KERN_BOOTLOADER_TYPE
 
+/* Define to 1 if you have the declaration of `KERN_CADPID', and to 0 if you
+   don't. */
+#undef HAVE_DECL_KERN_CADPID
+
 /* Define to 1 if you have the declaration of `KERN_COMPAT_LOG', and to 0 if
    you don't. */
 #undef HAVE_DECL_KERN_COMPAT_LOG
 
+/* Define to 1 if you have the declaration of `KERN_CORE_PATTERN', and to 0 if
+   you don't. */
+#undef HAVE_DECL_KERN_CORE_PATTERN
+
+/* Define to 1 if you have the declaration of `KERN_CORE_USES_PID', and to 0
+   if you don't. */
+#undef HAVE_DECL_KERN_CORE_USES_PID
+
+/* Define to 1 if you have the declaration of `KERN_CTLALTDEL', and to 0 if
+   you don't. */
+#undef HAVE_DECL_KERN_CTLALTDEL
+
+/* Define to 1 if you have the declaration of `KERN_DOMAINNAME', and to 0 if
+   you don't. */
+#undef HAVE_DECL_KERN_DOMAINNAME
+
+/* Define to 1 if you have the declaration of `KERN_HOTPLUG', and to 0 if you
+   don't. */
+#undef HAVE_DECL_KERN_HOTPLUG
+
+/* Define to 1 if you have the declaration of `KERN_HPPA_PWRSW', and to 0 if
+   you don't. */
+#undef HAVE_DECL_KERN_HPPA_PWRSW
+
+/* Define to 1 if you have the declaration of `KERN_HPPA_UNALIGNED', and to 0
+   if you don't. */
+#undef HAVE_DECL_KERN_HPPA_UNALIGNED
+
 /* Define to 1 if you have the declaration of `KERN_HZ_TIMER', and to 0 if you
    don't. */
 #undef HAVE_DECL_KERN_HZ_TIMER
    if you don't. */
 #undef HAVE_DECL_KERN_IA64_UNALIGNED
 
+/* Define to 1 if you have the declaration of `KERN_IEEE_EMULATION_WARNINGS',
+   and to 0 if you don't. */
+#undef HAVE_DECL_KERN_IEEE_EMULATION_WARNINGS
+
 /* Define to 1 if you have the declaration of `KERN_MAX_LOCK_DEPTH', and to 0
    if you don't. */
 #undef HAVE_DECL_KERN_MAX_LOCK_DEPTH
 
+/* Define to 1 if you have the declaration of `KERN_MAX_THREADS', and to 0 if
+   you don't. */
+#undef HAVE_DECL_KERN_MAX_THREADS
+
+/* Define to 1 if you have the declaration of `KERN_MODPROBE', and to 0 if you
+   don't. */
+#undef HAVE_DECL_KERN_MODPROBE
+
+/* Define to 1 if you have the declaration of `KERN_MSGMAX', and to 0 if you
+   don't. */
+#undef HAVE_DECL_KERN_MSGMAX
+
+/* Define to 1 if you have the declaration of `KERN_MSGMNB', and to 0 if you
+   don't. */
+#undef HAVE_DECL_KERN_MSGMNB
+
+/* Define to 1 if you have the declaration of `KERN_MSGMNI', and to 0 if you
+   don't. */
+#undef HAVE_DECL_KERN_MSGMNI
+
+/* Define to 1 if you have the declaration of `KERN_MSGPOOL', and to 0 if you
+   don't. */
+#undef HAVE_DECL_KERN_MSGPOOL
+
+/* Define to 1 if you have the declaration of `KERN_NAMETRANS', and to 0 if
+   you don't. */
+#undef HAVE_DECL_KERN_NAMETRANS
+
 /* Define to 1 if you have the declaration of `KERN_NGROUPS_MAX', and to 0 if
    you don't. */
 #undef HAVE_DECL_KERN_NGROUPS_MAX
    you don't. */
 #undef HAVE_DECL_KERN_NMI_WATCHDOG
 
+/* Define to 1 if you have the declaration of `KERN_NODENAME', and to 0 if you
+   don't. */
+#undef HAVE_DECL_KERN_NODENAME
+
+/* Define to 1 if you have the declaration of `KERN_OSRELEASE', and to 0 if
+   you don't. */
+#undef HAVE_DECL_KERN_OSRELEASE
+
+/* Define to 1 if you have the declaration of `KERN_OSREV', and to 0 if you
+   don't. */
+#undef HAVE_DECL_KERN_OSREV
+
+/* Define to 1 if you have the declaration of `KERN_OSTYPE', and to 0 if you
+   don't. */
+#undef HAVE_DECL_KERN_OSTYPE
+
+/* Define to 1 if you have the declaration of `KERN_OVERFLOWGID', and to 0 if
+   you don't. */
+#undef HAVE_DECL_KERN_OVERFLOWGID
+
+/* Define to 1 if you have the declaration of `KERN_OVERFLOWUID', and to 0 if
+   you don't. */
+#undef HAVE_DECL_KERN_OVERFLOWUID
+
+/* Define to 1 if you have the declaration of `KERN_PANIC', and to 0 if you
+   don't. */
+#undef HAVE_DECL_KERN_PANIC
+
 /* Define to 1 if you have the declaration of `KERN_PANIC_ON_NMI', and to 0 if
    you don't. */
 #undef HAVE_DECL_KERN_PANIC_ON_NMI
 
+/* Define to 1 if you have the declaration of `KERN_PANIC_ON_OOPS', and to 0
+   if you don't. */
+#undef HAVE_DECL_KERN_PANIC_ON_OOPS
+
 /* Define to 1 if you have the declaration of `KERN_PANIC_ON_WARN', and to 0
    if you don't. */
 #undef HAVE_DECL_KERN_PANIC_ON_WARN
    you don't. */
 #undef HAVE_DECL_KERN_PANIC_PRINT
 
+/* Define to 1 if you have the declaration of `KERN_PIDMAX', and to 0 if you
+   don't. */
+#undef HAVE_DECL_KERN_PIDMAX
+
+/* Define to 1 if you have the declaration of `KERN_PPC_HTABRECLAIM', and to 0
+   if you don't. */
+#undef HAVE_DECL_KERN_PPC_HTABRECLAIM
+
+/* Define to 1 if you have the declaration of `KERN_PPC_L2CR', and to 0 if you
+   don't. */
+#undef HAVE_DECL_KERN_PPC_L2CR
+
+/* Define to 1 if you have the declaration of `KERN_PPC_POWERSAVE_NAP', and to
+   0 if you don't. */
+#undef HAVE_DECL_KERN_PPC_POWERSAVE_NAP
+
+/* Define to 1 if you have the declaration of `KERN_PPC_ZEROPAGED', and to 0
+   if you don't. */
+#undef HAVE_DECL_KERN_PPC_ZEROPAGED
+
+/* Define to 1 if you have the declaration of `KERN_PRINTK', and to 0 if you
+   don't. */
+#undef HAVE_DECL_KERN_PRINTK
+
 /* Define to 1 if you have the declaration of `KERN_PRINTK_RATELIMIT', and to
    0 if you don't. */
 #undef HAVE_DECL_KERN_PRINTK_RATELIMIT
    and to 0 if you don't. */
 #undef HAVE_DECL_KERN_PRINTK_RATELIMIT_BURST
 
+/* Define to 1 if you have the declaration of `KERN_PROF', and to 0 if you
+   don't. */
+#undef HAVE_DECL_KERN_PROF
+
 /* Define to 1 if you have the declaration of `KERN_PTY', and to 0 if you
    don't. */
 #undef HAVE_DECL_KERN_PTY
 
+/* Define to 1 if you have the declaration of `KERN_RANDOM', and to 0 if you
+   don't. */
+#undef HAVE_DECL_KERN_RANDOM
+
 /* Define to 1 if you have the declaration of `KERN_RANDOMIZE', and to 0 if
    you don't. */
 #undef HAVE_DECL_KERN_RANDOMIZE
 
+/* Define to 1 if you have the declaration of `KERN_REALROOTDEV', and to 0 if
+   you don't. */
+#undef HAVE_DECL_KERN_REALROOTDEV
+
+/* Define to 1 if you have the declaration of `KERN_RTSIGMAX', and to 0 if you
+   don't. */
+#undef HAVE_DECL_KERN_RTSIGMAX
+
+/* Define to 1 if you have the declaration of `KERN_RTSIGNR', and to 0 if you
+   don't. */
+#undef HAVE_DECL_KERN_RTSIGNR
+
+/* Define to 1 if you have the declaration of `KERN_S390_USER_DEBUG_LOGGING',
+   and to 0 if you don't. */
+#undef HAVE_DECL_KERN_S390_USER_DEBUG_LOGGING
+
+/* Define to 1 if you have the declaration of `KERN_SECUREMASK', and to 0 if
+   you don't. */
+#undef HAVE_DECL_KERN_SECUREMASK
+
+/* Define to 1 if you have the declaration of `KERN_SEM', and to 0 if you
+   don't. */
+#undef HAVE_DECL_KERN_SEM
+
 /* Define to 1 if you have the declaration of `KERN_SETUID_DUMPABLE', and to 0
    if you don't. */
 #undef HAVE_DECL_KERN_SETUID_DUMPABLE
 
+/* Define to 1 if you have the declaration of `KERN_SG_BIG_BUFF', and to 0 if
+   you don't. */
+#undef HAVE_DECL_KERN_SG_BIG_BUFF
+
+/* Define to 1 if you have the declaration of `KERN_SHMALL', and to 0 if you
+   don't. */
+#undef HAVE_DECL_KERN_SHMALL
+
+/* Define to 1 if you have the declaration of `KERN_SHMMAX', and to 0 if you
+   don't. */
+#undef HAVE_DECL_KERN_SHMMAX
+
+/* Define to 1 if you have the declaration of `KERN_SHMMNI', and to 0 if you
+   don't. */
+#undef HAVE_DECL_KERN_SHMMNI
+
+/* Define to 1 if you have the declaration of `KERN_SHMPATH', and to 0 if you
+   don't. */
+#undef HAVE_DECL_KERN_SHMPATH
+
+/* Define to 1 if you have the declaration of `KERN_SPARC_REBOOT', and to 0 if
+   you don't. */
+#undef HAVE_DECL_KERN_SPARC_REBOOT
+
 /* Define to 1 if you have the declaration of `KERN_SPARC_SCONS_PWROFF', and
    to 0 if you don't. */
 #undef HAVE_DECL_KERN_SPARC_SCONS_PWROFF
 
+/* Define to 1 if you have the declaration of `KERN_SPARC_STOP_A', and to 0 if
+   you don't. */
+#undef HAVE_DECL_KERN_SPARC_STOP_A
+
 /* Define to 1 if you have the declaration of `KERN_SPIN_RETRY', and to 0 if
    you don't. */
 #undef HAVE_DECL_KERN_SPIN_RETRY
 
+/* Define to 1 if you have the declaration of `KERN_SYSRQ', and to 0 if you
+   don't. */
+#undef HAVE_DECL_KERN_SYSRQ
+
+/* Define to 1 if you have the declaration of `KERN_TAINTED', and to 0 if you
+   don't. */
+#undef HAVE_DECL_KERN_TAINTED
+
 /* Define to 1 if you have the declaration of `KERN_UNKNOWN_NMI_PANIC', and to
    0 if you don't. */
 #undef HAVE_DECL_KERN_UNKNOWN_NMI_PANIC
 
+/* Define to 1 if you have the declaration of `KERN_VERSION', and to 0 if you
+   don't. */
+#undef HAVE_DECL_KERN_VERSION
+
 /* Define to 1 if you have the declaration of `LO_FLAGS_AUTOCLEAR', and to 0
    if you don't. */
 #undef HAVE_DECL_LO_FLAGS_AUTOCLEAR
    you don't. */
 #undef HAVE_DECL_LO_FLAGS_USE_AOPS
 
+/* Define to 1 if you have the declaration of `NET_802', and to 0 if you
+   don't. */
+#undef HAVE_DECL_NET_802
+
+/* Define to 1 if you have the declaration of `NET_ATALK', and to 0 if you
+   don't. */
+#undef HAVE_DECL_NET_ATALK
+
+/* Define to 1 if you have the declaration of `NET_AX25', and to 0 if you
+   don't. */
+#undef HAVE_DECL_NET_AX25
+
+/* Define to 1 if you have the declaration of `NET_BRIDGE', and to 0 if you
+   don't. */
+#undef HAVE_DECL_NET_BRIDGE
+
 /* Define to 1 if you have the declaration of `NET_CIPSOV4_CACHE_BUCKET_SIZE',
    and to 0 if you don't. */
 #undef HAVE_DECL_NET_CIPSOV4_CACHE_BUCKET_SIZE
    and to 0 if you don't. */
 #undef HAVE_DECL_NET_CIPSOV4_RBM_STRICTVALID
 
+/* Define to 1 if you have the declaration of `NET_CORE', and to 0 if you
+   don't. */
+#undef HAVE_DECL_NET_CORE
+
 /* Define to 1 if you have the declaration of `NET_CORE_AEVENT_ETIME', and to
    0 if you don't. */
 #undef HAVE_DECL_NET_CORE_AEVENT_ETIME
    0 if you don't. */
 #undef HAVE_DECL_NET_CORE_DESTROY_DELAY
 
-/* Define to 1 if you have the declaration of `NET_CORE_WARNINGS', and to 0 if
-   you don't. */
-#undef HAVE_DECL_NET_CORE_WARNINGS
+/* Define to 1 if you have the declaration of `NET_CORE_DEV_WEIGHT', and to 0
+   if you don't. */
+#undef HAVE_DECL_NET_CORE_DEV_WEIGHT
+
+/* Define to 1 if you have the declaration of `NET_CORE_DIVERT_VERSION', and
+   to 0 if you don't. */
+#undef HAVE_DECL_NET_CORE_DIVERT_VERSION
+
+/* Define to 1 if you have the declaration of `NET_CORE_FASTROUTE', and to 0
+   if you don't. */
+#undef HAVE_DECL_NET_CORE_FASTROUTE
+
+/* Define to 1 if you have the declaration of `NET_CORE_HOT_LIST_LENGTH', and
+   to 0 if you don't. */
+#undef HAVE_DECL_NET_CORE_HOT_LIST_LENGTH
+
+/* Define to 1 if you have the declaration of `NET_CORE_LO_CONG', and to 0 if
+   you don't. */
+#undef HAVE_DECL_NET_CORE_LO_CONG
+
+/* Define to 1 if you have the declaration of `NET_CORE_MAX_BACKLOG', and to 0
+   if you don't. */
+#undef HAVE_DECL_NET_CORE_MAX_BACKLOG
+
+/* Define to 1 if you have the declaration of `NET_CORE_MOD_CONG', and to 0 if
+   you don't. */
+#undef HAVE_DECL_NET_CORE_MOD_CONG
+
+/* Define to 1 if you have the declaration of `NET_CORE_MSG_BURST', and to 0
+   if you don't. */
+#undef HAVE_DECL_NET_CORE_MSG_BURST
+
+/* Define to 1 if you have the declaration of `NET_CORE_MSG_COST', and to 0 if
+   you don't. */
+#undef HAVE_DECL_NET_CORE_MSG_COST
+
+/* Define to 1 if you have the declaration of `NET_CORE_NO_CONG', and to 0 if
+   you don't. */
+#undef HAVE_DECL_NET_CORE_NO_CONG
+
+/* Define to 1 if you have the declaration of `NET_CORE_NO_CONG_THRESH', and
+   to 0 if you don't. */
+#undef HAVE_DECL_NET_CORE_NO_CONG_THRESH
+
+/* Define to 1 if you have the declaration of `NET_CORE_OPTMEM_MAX', and to 0
+   if you don't. */
+#undef HAVE_DECL_NET_CORE_OPTMEM_MAX
+
+/* Define to 1 if you have the declaration of `NET_CORE_RMEM_DEFAULT', and to
+   0 if you don't. */
+#undef HAVE_DECL_NET_CORE_RMEM_DEFAULT
+
+/* Define to 1 if you have the declaration of `NET_CORE_RMEM_MAX', and to 0 if
+   you don't. */
+#undef HAVE_DECL_NET_CORE_RMEM_MAX
+
+/* Define to 1 if you have the declaration of `NET_CORE_SOMAXCONN', and to 0
+   if you don't. */
+#undef HAVE_DECL_NET_CORE_SOMAXCONN
+
+/* Define to 1 if you have the declaration of `NET_CORE_WARNINGS', and to 0 if
+   you don't. */
+#undef HAVE_DECL_NET_CORE_WARNINGS
+
+/* Define to 1 if you have the declaration of `NET_CORE_WMEM_DEFAULT', and to
+   0 if you don't. */
+#undef HAVE_DECL_NET_CORE_WMEM_DEFAULT
+
+/* Define to 1 if you have the declaration of `NET_CORE_WMEM_MAX', and to 0 if
+   you don't. */
+#undef HAVE_DECL_NET_CORE_WMEM_MAX
 
 /* Define to 1 if you have the declaration of `NET_DCCP', and to 0 if you
    don't. */
 #undef HAVE_DECL_NET_DCCP
 
+/* Define to 1 if you have the declaration of `NET_DECNET', and to 0 if you
+   don't. */
+#undef HAVE_DECL_NET_DECNET
+
+/* Define to 1 if you have the declaration of `NET_ECONET', and to 0 if you
+   don't. */
+#undef HAVE_DECL_NET_ECONET
+
+/* Define to 1 if you have the declaration of `NET_ETHER', and to 0 if you
+   don't. */
+#undef HAVE_DECL_NET_ETHER
+
+/* Define to 1 if you have the declaration of `NET_IPV4', and to 0 if you
+   don't. */
+#undef HAVE_DECL_NET_IPV4
+
+/* Define to 1 if you have the declaration of `NET_IPV4_ALWAYS_DEFRAG', and to
+   0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_ALWAYS_DEFRAG
+
+/* Define to 1 if you have the declaration of `NET_IPV4_AUTOCONFIG', and to 0
+   if you don't. */
+#undef HAVE_DECL_NET_IPV4_AUTOCONFIG
+
+/* Define to 1 if you have the declaration of `NET_IPV4_CONF', and to 0 if you
+   don't. */
+#undef HAVE_DECL_NET_IPV4_CONF
+
+/* Define to 1 if you have the declaration of
+   `NET_IPV4_CONF_ACCEPT_REDIRECTS', and to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_CONF_ACCEPT_REDIRECTS
+
+/* Define to 1 if you have the declaration of
+   `NET_IPV4_CONF_ACCEPT_SOURCE_ROUTE', and to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_CONF_ACCEPT_SOURCE_ROUTE
+
+/* Define to 1 if you have the declaration of `NET_IPV4_CONF_ARPFILTER', and
+   to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_CONF_ARPFILTER
+
 /* Define to 1 if you have the declaration of `NET_IPV4_CONF_ARP_ACCEPT', and
    to 0 if you don't. */
 #undef HAVE_DECL_NET_IPV4_CONF_ARP_ACCEPT
    to 0 if you don't. */
 #undef HAVE_DECL_NET_IPV4_CONF_ARP_NOTIFY
 
+/* Define to 1 if you have the declaration of `NET_IPV4_CONF_BOOTP_RELAY', and
+   to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_CONF_BOOTP_RELAY
+
 /* Define to 1 if you have the declaration of
    `NET_IPV4_CONF_FORCE_IGMP_VERSION', and to 0 if you don't. */
 #undef HAVE_DECL_NET_IPV4_CONF_FORCE_IGMP_VERSION
 
+/* Define to 1 if you have the declaration of `NET_IPV4_CONF_FORWARDING', and
+   to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_CONF_FORWARDING
+
+/* Define to 1 if you have the declaration of `NET_IPV4_CONF_LOG_MARTIANS',
+   and to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_CONF_LOG_MARTIANS
+
+/* Define to 1 if you have the declaration of `NET_IPV4_CONF_MC_FORWARDING',
+   and to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_CONF_MC_FORWARDING
+
+/* Define to 1 if you have the declaration of `NET_IPV4_CONF_MEDIUM_ID', and
+   to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_CONF_MEDIUM_ID
+
+/* Define to 1 if you have the declaration of `NET_IPV4_CONF_NOPOLICY', and to
+   0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_CONF_NOPOLICY
+
+/* Define to 1 if you have the declaration of `NET_IPV4_CONF_NOXFRM', and to 0
+   if you don't. */
+#undef HAVE_DECL_NET_IPV4_CONF_NOXFRM
+
 /* Define to 1 if you have the declaration of
    `NET_IPV4_CONF_PROMOTE_SECONDARIES', and to 0 if you don't. */
 #undef HAVE_DECL_NET_IPV4_CONF_PROMOTE_SECONDARIES
 
+/* Define to 1 if you have the declaration of `NET_IPV4_CONF_PROXY_ARP', and
+   to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_CONF_PROXY_ARP
+
+/* Define to 1 if you have the declaration of `NET_IPV4_CONF_RP_FILTER', and
+   to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_CONF_RP_FILTER
+
+/* Define to 1 if you have the declaration of
+   `NET_IPV4_CONF_SECURE_REDIRECTS', and to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_CONF_SECURE_REDIRECTS
+
+/* Define to 1 if you have the declaration of `NET_IPV4_CONF_SEND_REDIRECTS',
+   and to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_CONF_SEND_REDIRECTS
+
+/* Define to 1 if you have the declaration of `NET_IPV4_CONF_SHARED_MEDIA',
+   and to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_CONF_SHARED_MEDIA
+
+/* Define to 1 if you have the declaration of `NET_IPV4_CONF_TAG', and to 0 if
+   you don't. */
+#undef HAVE_DECL_NET_IPV4_CONF_TAG
+
+/* Define to 1 if you have the declaration of `NET_IPV4_DEFAULT_TTL', and to 0
+   if you don't. */
+#undef HAVE_DECL_NET_IPV4_DEFAULT_TTL
+
+/* Define to 1 if you have the declaration of `NET_IPV4_DYNADDR', and to 0 if
+   you don't. */
+#undef HAVE_DECL_NET_IPV4_DYNADDR
+
+/* Define to 1 if you have the declaration of `NET_IPV4_FIB_HASH', and to 0 if
+   you don't. */
+#undef HAVE_DECL_NET_IPV4_FIB_HASH
+
+/* Define to 1 if you have the declaration of `NET_IPV4_FORWARD', and to 0 if
+   you don't. */
+#undef HAVE_DECL_NET_IPV4_FORWARD
+
+/* Define to 1 if you have the declaration of
+   `NET_IPV4_ICMP_DESTUNREACH_RATE', and to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_ICMP_DESTUNREACH_RATE
+
+/* Define to 1 if you have the declaration of `NET_IPV4_ICMP_ECHOREPLY_RATE',
+   and to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_ICMP_ECHOREPLY_RATE
+
+/* Define to 1 if you have the declaration of `NET_IPV4_ICMP_ECHO_IGNORE_ALL',
+   and to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_ICMP_ECHO_IGNORE_ALL
+
+/* Define to 1 if you have the declaration of
+   `NET_IPV4_ICMP_ECHO_IGNORE_BROADCASTS', and to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_ICMP_ECHO_IGNORE_BROADCASTS
+
 /* Define to 1 if you have the declaration of
    `NET_IPV4_ICMP_ERRORS_USE_INBOUND_IFADDR', and to 0 if you don't. */
 #undef HAVE_DECL_NET_IPV4_ICMP_ERRORS_USE_INBOUND_IFADDR
 
+/* Define to 1 if you have the declaration of
+   `NET_IPV4_ICMP_IGNORE_BOGUS_ERROR_RESPONSES', and to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_ICMP_IGNORE_BOGUS_ERROR_RESPONSES
+
+/* Define to 1 if you have the declaration of `NET_IPV4_ICMP_PARAMPROB_RATE',
+   and to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_ICMP_PARAMPROB_RATE
+
+/* Define to 1 if you have the declaration of `NET_IPV4_ICMP_RATELIMIT', and
+   to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_ICMP_RATELIMIT
+
+/* Define to 1 if you have the declaration of `NET_IPV4_ICMP_RATEMASK', and to
+   0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_ICMP_RATEMASK
+
+/* Define to 1 if you have the declaration of
+   `NET_IPV4_ICMP_SOURCEQUENCH_RATE', and to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_ICMP_SOURCEQUENCH_RATE
+
+/* Define to 1 if you have the declaration of `NET_IPV4_ICMP_TIMEEXCEED_RATE',
+   and to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_ICMP_TIMEEXCEED_RATE
+
+/* Define to 1 if you have the declaration of `NET_IPV4_IGMP_MAX_MEMBERSHIPS',
+   and to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_IGMP_MAX_MEMBERSHIPS
+
 /* Define to 1 if you have the declaration of `NET_IPV4_IGMP_MAX_MSF', and to
    0 if you don't. */
 #undef HAVE_DECL_NET_IPV4_IGMP_MAX_MSF
 
+/* Define to 1 if you have the declaration of `NET_IPV4_INET_PEER_GC_MAXTIME',
+   and to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_INET_PEER_GC_MAXTIME
+
+/* Define to 1 if you have the declaration of `NET_IPV4_INET_PEER_GC_MINTIME',
+   and to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_INET_PEER_GC_MINTIME
+
+/* Define to 1 if you have the declaration of `NET_IPV4_INET_PEER_MAXTTL', and
+   to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_INET_PEER_MAXTTL
+
+/* Define to 1 if you have the declaration of `NET_IPV4_INET_PEER_MINTTL', and
+   to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_INET_PEER_MINTTL
+
+/* Define to 1 if you have the declaration of `NET_IPV4_INET_PEER_THRESHOLD',
+   and to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_INET_PEER_THRESHOLD
+
+/* Define to 1 if you have the declaration of `NET_IPV4_IPFRAG_HIGH_THRESH',
+   and to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_IPFRAG_HIGH_THRESH
+
+/* Define to 1 if you have the declaration of `NET_IPV4_IPFRAG_LOW_THRESH',
+   and to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_IPFRAG_LOW_THRESH
+
 /* Define to 1 if you have the declaration of `NET_IPV4_IPFRAG_MAX_DIST', and
    to 0 if you don't. */
 #undef HAVE_DECL_NET_IPV4_IPFRAG_MAX_DIST
 
+/* Define to 1 if you have the declaration of
+   `NET_IPV4_IPFRAG_SECRET_INTERVAL', and to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_IPFRAG_SECRET_INTERVAL
+
+/* Define to 1 if you have the declaration of `NET_IPV4_IPFRAG_TIME', and to 0
+   if you don't. */
+#undef HAVE_DECL_NET_IPV4_IPFRAG_TIME
+
+/* Define to 1 if you have the declaration of `NET_IPV4_IP_MASQ_DEBUG', and to
+   0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_IP_MASQ_DEBUG
+
+/* Define to 1 if you have the declaration of `NET_IPV4_LOCAL_PORT_RANGE', and
+   to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_LOCAL_PORT_RANGE
+
+/* Define to 1 if you have the declaration of `NET_IPV4_NEIGH', and to 0 if
+   you don't. */
+#undef HAVE_DECL_NET_IPV4_NEIGH
+
+/* Define to 1 if you have the declaration of `NET_IPV4_NETFILTER', and to 0
+   if you don't. */
+#undef HAVE_DECL_NET_IPV4_NETFILTER
+
+/* Define to 1 if you have the declaration of `NET_IPV4_NONLOCAL_BIND', and to
+   0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_NONLOCAL_BIND
+
+/* Define to 1 if you have the declaration of `NET_IPV4_NO_PMTU_DISC', and to
+   0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_NO_PMTU_DISC
+
+/* Define to 1 if you have the declaration of `NET_IPV4_ROUTE', and to 0 if
+   you don't. */
+#undef HAVE_DECL_NET_IPV4_ROUTE
+
+/* Define to 1 if you have the declaration of `NET_IPV4_ROUTE_ERROR_BURST',
+   and to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_ROUTE_ERROR_BURST
+
+/* Define to 1 if you have the declaration of `NET_IPV4_ROUTE_ERROR_COST', and
+   to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_ROUTE_ERROR_COST
+
+/* Define to 1 if you have the declaration of `NET_IPV4_ROUTE_FLUSH', and to 0
+   if you don't. */
+#undef HAVE_DECL_NET_IPV4_ROUTE_FLUSH
+
+/* Define to 1 if you have the declaration of `NET_IPV4_ROUTE_GC_ELASTICITY',
+   and to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_ROUTE_GC_ELASTICITY
+
+/* Define to 1 if you have the declaration of `NET_IPV4_ROUTE_GC_INTERVAL',
+   and to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_ROUTE_GC_INTERVAL
+
+/* Define to 1 if you have the declaration of
+   `NET_IPV4_ROUTE_GC_MIN_INTERVAL', and to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_ROUTE_GC_MIN_INTERVAL
+
 /* Define to 1 if you have the declaration of
    `NET_IPV4_ROUTE_GC_MIN_INTERVAL_MS', and to 0 if you don't. */
 #undef HAVE_DECL_NET_IPV4_ROUTE_GC_MIN_INTERVAL_MS
 
+/* Define to 1 if you have the declaration of `NET_IPV4_ROUTE_GC_THRESH', and
+   to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_ROUTE_GC_THRESH
+
+/* Define to 1 if you have the declaration of `NET_IPV4_ROUTE_GC_TIMEOUT', and
+   to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_ROUTE_GC_TIMEOUT
+
+/* Define to 1 if you have the declaration of `NET_IPV4_ROUTE_MAX_DELAY', and
+   to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_ROUTE_MAX_DELAY
+
+/* Define to 1 if you have the declaration of `NET_IPV4_ROUTE_MAX_SIZE', and
+   to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_ROUTE_MAX_SIZE
+
+/* Define to 1 if you have the declaration of `NET_IPV4_ROUTE_MIN_ADVMSS', and
+   to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_ROUTE_MIN_ADVMSS
+
+/* Define to 1 if you have the declaration of `NET_IPV4_ROUTE_MIN_DELAY', and
+   to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_ROUTE_MIN_DELAY
+
+/* Define to 1 if you have the declaration of `NET_IPV4_ROUTE_MIN_PMTU', and
+   to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_ROUTE_MIN_PMTU
+
+/* Define to 1 if you have the declaration of `NET_IPV4_ROUTE_MTU_EXPIRES',
+   and to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_ROUTE_MTU_EXPIRES
+
+/* Define to 1 if you have the declaration of `NET_IPV4_ROUTE_REDIRECT_LOAD',
+   and to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_ROUTE_REDIRECT_LOAD
+
+/* Define to 1 if you have the declaration of
+   `NET_IPV4_ROUTE_REDIRECT_NUMBER', and to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_ROUTE_REDIRECT_NUMBER
+
+/* Define to 1 if you have the declaration of
+   `NET_IPV4_ROUTE_REDIRECT_SILENCE', and to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_ROUTE_REDIRECT_SILENCE
+
+/* Define to 1 if you have the declaration of
+   `NET_IPV4_ROUTE_SECRET_INTERVAL', and to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_ROUTE_SECRET_INTERVAL
+
+/* Define to 1 if you have the declaration of `NET_IPV4_TCP_FIN_TIMEOUT', and
+   to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_TCP_FIN_TIMEOUT
+
+/* Define to 1 if you have the declaration of `NET_IPV4_TCP_KEEPALIVE_INTVL',
+   and to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_TCP_KEEPALIVE_INTVL
+
+/* Define to 1 if you have the declaration of `NET_IPV4_TCP_KEEPALIVE_PROBES',
+   and to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_TCP_KEEPALIVE_PROBES
+
+/* Define to 1 if you have the declaration of `NET_IPV4_TCP_KEEPALIVE_TIME',
+   and to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_TCP_KEEPALIVE_TIME
+
+/* Define to 1 if you have the declaration of `NET_IPV4_TCP_MAX_KA_PROBES',
+   and to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_TCP_MAX_KA_PROBES
+
+/* Define to 1 if you have the declaration of `NET_IPV4_TCP_RETRANS_COLLAPSE',
+   and to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_TCP_RETRANS_COLLAPSE
+
+/* Define to 1 if you have the declaration of `NET_IPV4_TCP_RETRIES1', and to
+   0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_TCP_RETRIES1
+
+/* Define to 1 if you have the declaration of `NET_IPV4_TCP_RETRIES2', and to
+   0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_TCP_RETRIES2
+
+/* Define to 1 if you have the declaration of `NET_IPV4_TCP_SACK', and to 0 if
+   you don't. */
+#undef HAVE_DECL_NET_IPV4_TCP_SACK
+
+/* Define to 1 if you have the declaration of `NET_IPV4_TCP_SYN_RETRIES', and
+   to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_TCP_SYN_RETRIES
+
+/* Define to 1 if you have the declaration of `NET_IPV4_TCP_TIMESTAMPS', and
+   to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_TCP_TIMESTAMPS
+
+/* Define to 1 if you have the declaration of `NET_IPV4_TCP_WINDOW_SCALING',
+   and to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV4_TCP_WINDOW_SCALING
+
 /* Define to 1 if you have the declaration of
    `NET_IPV4_TCP_WORKAROUND_SIGNED_WINDOWS', and to 0 if you don't. */
 #undef HAVE_DECL_NET_IPV4_TCP_WORKAROUND_SIGNED_WINDOWS
 
+/* Define to 1 if you have the declaration of `NET_IPV6', and to 0 if you
+   don't. */
+#undef HAVE_DECL_NET_IPV6
+
+/* Define to 1 if you have the declaration of `NET_IPV6_BINDV6ONLY', and to 0
+   if you don't. */
+#undef HAVE_DECL_NET_IPV6_BINDV6ONLY
+
+/* Define to 1 if you have the declaration of `NET_IPV6_CONF', and to 0 if you
+   don't. */
+#undef HAVE_DECL_NET_IPV6_CONF
+
+/* Define to 1 if you have the declaration of `NET_IPV6_ICMP', and to 0 if you
+   don't. */
+#undef HAVE_DECL_NET_IPV6_ICMP
+
+/* Define to 1 if you have the declaration of `NET_IPV6_IP6FRAG_HIGH_THRESH',
+   and to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV6_IP6FRAG_HIGH_THRESH
+
+/* Define to 1 if you have the declaration of `NET_IPV6_IP6FRAG_LOW_THRESH',
+   and to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV6_IP6FRAG_LOW_THRESH
+
+/* Define to 1 if you have the declaration of
+   `NET_IPV6_IP6FRAG_SECRET_INTERVAL', and to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV6_IP6FRAG_SECRET_INTERVAL
+
+/* Define to 1 if you have the declaration of `NET_IPV6_IP6FRAG_TIME', and to
+   0 if you don't. */
+#undef HAVE_DECL_NET_IPV6_IP6FRAG_TIME
+
 /* Define to 1 if you have the declaration of `NET_IPV6_MLD_MAX_MSF', and to 0
    if you don't. */
 #undef HAVE_DECL_NET_IPV6_MLD_MAX_MSF
 
+/* Define to 1 if you have the declaration of `NET_IPV6_NEIGH', and to 0 if
+   you don't. */
+#undef HAVE_DECL_NET_IPV6_NEIGH
+
+/* Define to 1 if you have the declaration of `NET_IPV6_ROUTE', and to 0 if
+   you don't. */
+#undef HAVE_DECL_NET_IPV6_ROUTE
+
+/* Define to 1 if you have the declaration of `NET_IPV6_ROUTE_FLUSH', and to 0
+   if you don't. */
+#undef HAVE_DECL_NET_IPV6_ROUTE_FLUSH
+
+/* Define to 1 if you have the declaration of `NET_IPV6_ROUTE_GC_ELASTICITY',
+   and to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV6_ROUTE_GC_ELASTICITY
+
+/* Define to 1 if you have the declaration of `NET_IPV6_ROUTE_GC_INTERVAL',
+   and to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV6_ROUTE_GC_INTERVAL
+
+/* Define to 1 if you have the declaration of
+   `NET_IPV6_ROUTE_GC_MIN_INTERVAL', and to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV6_ROUTE_GC_MIN_INTERVAL
+
 /* Define to 1 if you have the declaration of
    `NET_IPV6_ROUTE_GC_MIN_INTERVAL_MS', and to 0 if you don't. */
 #undef HAVE_DECL_NET_IPV6_ROUTE_GC_MIN_INTERVAL_MS
 
+/* Define to 1 if you have the declaration of `NET_IPV6_ROUTE_GC_THRESH', and
+   to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV6_ROUTE_GC_THRESH
+
+/* Define to 1 if you have the declaration of `NET_IPV6_ROUTE_GC_TIMEOUT', and
+   to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV6_ROUTE_GC_TIMEOUT
+
+/* Define to 1 if you have the declaration of `NET_IPV6_ROUTE_MAX_SIZE', and
+   to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV6_ROUTE_MAX_SIZE
+
+/* Define to 1 if you have the declaration of `NET_IPV6_ROUTE_MIN_ADVMSS', and
+   to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV6_ROUTE_MIN_ADVMSS
+
+/* Define to 1 if you have the declaration of `NET_IPV6_ROUTE_MTU_EXPIRES',
+   and to 0 if you don't. */
+#undef HAVE_DECL_NET_IPV6_ROUTE_MTU_EXPIRES
+
+/* Define to 1 if you have the declaration of `NET_IPX', and to 0 if you
+   don't. */
+#undef HAVE_DECL_NET_IPX
+
 /* Define to 1 if you have the declaration of `NET_IRDA', and to 0 if you
    don't. */
 #undef HAVE_DECL_NET_IRDA
    don't. */
 #undef HAVE_DECL_NET_NETFILTER
 
+/* Define to 1 if you have the declaration of `NET_NETROM', and to 0 if you
+   don't. */
+#undef HAVE_DECL_NET_NETROM
+
+/* Define to 1 if you have the declaration of `NET_ROSE', and to 0 if you
+   don't. */
+#undef HAVE_DECL_NET_ROSE
+
+/* Define to 1 if you have the declaration of `NET_SCTP', and to 0 if you
+   don't. */
+#undef HAVE_DECL_NET_SCTP
+
 /* Define to 1 if you have the declaration of `NET_TCP_ABC', and to 0 if you
    don't. */
 #undef HAVE_DECL_NET_TCP_ABC
 
+/* Define to 1 if you have the declaration of `NET_TCP_ABORT_ON_OVERFLOW', and
+   to 0 if you don't. */
+#undef HAVE_DECL_NET_TCP_ABORT_ON_OVERFLOW
+
+/* Define to 1 if you have the declaration of `NET_TCP_ADV_WIN_SCALE', and to
+   0 if you don't. */
+#undef HAVE_DECL_NET_TCP_ADV_WIN_SCALE
+
 /* Define to 1 if you have the declaration of `NET_TCP_ALLOWED_CONG_CONTROL',
    and to 0 if you don't. */
 #undef HAVE_DECL_NET_TCP_ALLOWED_CONG_CONTROL
 
+/* Define to 1 if you have the declaration of `NET_TCP_APP_WIN', and to 0 if
+   you don't. */
+#undef HAVE_DECL_NET_TCP_APP_WIN
+
 /* Define to 1 if you have the declaration of `NET_TCP_AVAIL_CONG_CONTROL',
    and to 0 if you don't. */
 #undef HAVE_DECL_NET_TCP_AVAIL_CONG_CONTROL
    0 if you don't. */
 #undef HAVE_DECL_NET_TCP_DMA_COPYBREAK
 
+/* Define to 1 if you have the declaration of `NET_TCP_DSACK', and to 0 if you
+   don't. */
+#undef HAVE_DECL_NET_TCP_DSACK
+
+/* Define to 1 if you have the declaration of `NET_TCP_ECN', and to 0 if you
+   don't. */
+#undef HAVE_DECL_NET_TCP_ECN
+
+/* Define to 1 if you have the declaration of `NET_TCP_FACK', and to 0 if you
+   don't. */
+#undef HAVE_DECL_NET_TCP_FACK
+
+/* Define to 1 if you have the declaration of `NET_TCP_FRTO', and to 0 if you
+   don't. */
+#undef HAVE_DECL_NET_TCP_FRTO
+
 /* Define to 1 if you have the declaration of `NET_TCP_FRTO_RESPONSE', and to
    0 if you don't. */
 #undef HAVE_DECL_NET_TCP_FRTO_RESPONSE
 
+/* Define to 1 if you have the declaration of `NET_TCP_LOW_LATENCY', and to 0
+   if you don't. */
+#undef HAVE_DECL_NET_TCP_LOW_LATENCY
+
+/* Define to 1 if you have the declaration of `NET_TCP_MAX_ORPHANS', and to 0
+   if you don't. */
+#undef HAVE_DECL_NET_TCP_MAX_ORPHANS
+
 /* Define to 1 if you have the declaration of `NET_TCP_MAX_SSTHRESH', and to 0
    if you don't. */
 #undef HAVE_DECL_NET_TCP_MAX_SSTHRESH
 
+/* Define to 1 if you have the declaration of `NET_TCP_MAX_SYN_BACKLOG', and
+   to 0 if you don't. */
+#undef HAVE_DECL_NET_TCP_MAX_SYN_BACKLOG
+
+/* Define to 1 if you have the declaration of `NET_TCP_MAX_TW_BUCKETS', and to
+   0 if you don't. */
+#undef HAVE_DECL_NET_TCP_MAX_TW_BUCKETS
+
+/* Define to 1 if you have the declaration of `NET_TCP_MEM', and to 0 if you
+   don't. */
+#undef HAVE_DECL_NET_TCP_MEM
+
 /* Define to 1 if you have the declaration of `NET_TCP_MODERATE_RCVBUF', and
    to 0 if you don't. */
 #undef HAVE_DECL_NET_TCP_MODERATE_RCVBUF
    to 0 if you don't. */
 #undef HAVE_DECL_NET_TCP_NO_METRICS_SAVE
 
+/* Define to 1 if you have the declaration of `NET_TCP_ORPHAN_RETRIES', and to
+   0 if you don't. */
+#undef HAVE_DECL_NET_TCP_ORPHAN_RETRIES
+
+/* Define to 1 if you have the declaration of `NET_TCP_REORDERING', and to 0
+   if you don't. */
+#undef HAVE_DECL_NET_TCP_REORDERING
+
+/* Define to 1 if you have the declaration of `NET_TCP_RFC1337', and to 0 if
+   you don't. */
+#undef HAVE_DECL_NET_TCP_RFC1337
+
+/* Define to 1 if you have the declaration of `NET_TCP_RMEM', and to 0 if you
+   don't. */
+#undef HAVE_DECL_NET_TCP_RMEM
+
 /* Define to 1 if you have the declaration of `NET_TCP_SLOW_START_AFTER_IDLE',
    and to 0 if you don't. */
 #undef HAVE_DECL_NET_TCP_SLOW_START_AFTER_IDLE
 
+/* Define to 1 if you have the declaration of `NET_TCP_STDURG', and to 0 if
+   you don't. */
+#undef HAVE_DECL_NET_TCP_STDURG
+
+/* Define to 1 if you have the declaration of `NET_TCP_SYNACK_RETRIES', and to
+   0 if you don't. */
+#undef HAVE_DECL_NET_TCP_SYNACK_RETRIES
+
+/* Define to 1 if you have the declaration of `NET_TCP_SYNCOOKIES', and to 0
+   if you don't. */
+#undef HAVE_DECL_NET_TCP_SYNCOOKIES
+
+/* Define to 1 if you have the declaration of `NET_TCP_SYN_TAILDROP', and to 0
+   if you don't. */
+#undef HAVE_DECL_NET_TCP_SYN_TAILDROP
+
 /* Define to 1 if you have the declaration of `NET_TCP_TSO_WIN_DIVISOR', and
    to 0 if you don't. */
 #undef HAVE_DECL_NET_TCP_TSO_WIN_DIVISOR
 
+/* Define to 1 if you have the declaration of `NET_TCP_TW_RECYCLE', and to 0
+   if you don't. */
+#undef HAVE_DECL_NET_TCP_TW_RECYCLE
+
+/* Define to 1 if you have the declaration of `NET_TCP_TW_REUSE', and to 0 if
+   you don't. */
+#undef HAVE_DECL_NET_TCP_TW_REUSE
+
+/* Define to 1 if you have the declaration of `NET_TCP_WMEM', and to 0 if you
+   don't. */
+#undef HAVE_DECL_NET_TCP_WMEM
+
+/* Define to 1 if you have the declaration of `NET_TR', and to 0 if you don't.
+   */
+#undef HAVE_DECL_NET_TR
+
+/* Define to 1 if you have the declaration of `NET_UNIX', and to 0 if you
+   don't. */
+#undef HAVE_DECL_NET_UNIX
+
+/* Define to 1 if you have the declaration of `NET_UNIX_DELETE_DELAY', and to
+   0 if you don't. */
+#undef HAVE_DECL_NET_UNIX_DELETE_DELAY
+
+/* Define to 1 if you have the declaration of `NET_UNIX_DESTROY_DELAY', and to
+   0 if you don't. */
+#undef HAVE_DECL_NET_UNIX_DESTROY_DELAY
+
+/* Define to 1 if you have the declaration of `NET_UNIX_MAX_DGRAM_QLEN', and
+   to 0 if you don't. */
+#undef HAVE_DECL_NET_UNIX_MAX_DGRAM_QLEN
+
+/* Define to 1 if you have the declaration of `NET_X25', and to 0 if you
+   don't. */
+#undef HAVE_DECL_NET_X25
+
 /* Define to 1 if you have the declaration of `PTRACE_PEEKUSER', and to 0 if
    you don't. */
 #undef HAVE_DECL_PTRACE_PEEKUSER
    */
 #undef HAVE_DECL_P_ALL
 
-/* Define to 1 if you have the declaration of `P_CID', and to 0 if you don't.
-   */
-#undef HAVE_DECL_P_CID
-
-/* Define to 1 if you have the declaration of `P_GID', and to 0 if you don't.
-   */
-#undef HAVE_DECL_P_GID
-
-/* Define to 1 if you have the declaration of `P_LWPID', and to 0 if you
-   don't. */
-#undef HAVE_DECL_P_LWPID
-
 /* Define to 1 if you have the declaration of `P_PGID', and to 0 if you don't.
    */
 #undef HAVE_DECL_P_PGID
    */
 #undef HAVE_DECL_P_PID
 
-/* Define to 1 if you have the declaration of `P_PPID', and to 0 if you don't.
-   */
-#undef HAVE_DECL_P_PPID
-
-/* Define to 1 if you have the declaration of `P_SID', and to 0 if you don't.
-   */
-#undef HAVE_DECL_P_SID
-
-/* Define to 1 if you have the declaration of `P_UID', and to 0 if you don't.
-   */
-#undef HAVE_DECL_P_UID
+/* Define to 1 if you have the declaration of `P_PIDFD', and to 0 if you
+   don't. */
+#undef HAVE_DECL_P_PIDFD
 
 /* Define to 1 if you have the declaration of `sys_errlist', and to 0 if you
    don't. */
 #undef HAVE_DECL_SYS_ERRLIST
 
-/* Define to 1 if you have the declaration of `TCA_STAB_DATA', and to 0 if you
-   don't. */
-#undef HAVE_DECL_TCA_STAB_DATA
+/* Define to 1 if you have the declaration of `TCA_ACT_COOKIE', and to 0 if
+   you don't. */
+#undef HAVE_DECL_TCA_ACT_COOKIE
+
+/* Define to 1 if you have the declaration of `TCA_ACT_FLAGS', and to 0 if you
+   don't. */
+#undef HAVE_DECL_TCA_ACT_FLAGS
+
+/* Define to 1 if you have the declaration of `TCA_ACT_HW_STATS', and to 0 if
+   you don't. */
+#undef HAVE_DECL_TCA_ACT_HW_STATS
+
+/* Define to 1 if you have the declaration of `TCA_ACT_INDEX', and to 0 if you
+   don't. */
+#undef HAVE_DECL_TCA_ACT_INDEX
+
+/* Define to 1 if you have the declaration of `TCA_ACT_KIND', and to 0 if you
+   don't. */
+#undef HAVE_DECL_TCA_ACT_KIND
+
+/* Define to 1 if you have the declaration of `TCA_ACT_OPTIONS', and to 0 if
+   you don't. */
+#undef HAVE_DECL_TCA_ACT_OPTIONS
+
+/* Define to 1 if you have the declaration of `TCA_ACT_PAD', and to 0 if you
+   don't. */
+#undef HAVE_DECL_TCA_ACT_PAD
+
+/* Define to 1 if you have the declaration of `TCA_ACT_STATS', and to 0 if you
+   don't. */
+#undef HAVE_DECL_TCA_ACT_STATS
+
+/* Define to 1 if you have the declaration of `TCA_ACT_UNSPEC', and to 0 if
+   you don't. */
+#undef HAVE_DECL_TCA_ACT_UNSPEC
+
+/* Define to 1 if you have the declaration of `TCA_ACT_USED_HW_STATS', and to
+   0 if you don't. */
+#undef HAVE_DECL_TCA_ACT_USED_HW_STATS
+
+/* Define to 1 if you have the declaration of `TCA_STAB_BASE', and to 0 if you
+   don't. */
+#undef HAVE_DECL_TCA_STAB_BASE
+
+/* Define to 1 if you have the declaration of `TCA_STAB_DATA', and to 0 if you
+   don't. */
+#undef HAVE_DECL_TCA_STAB_DATA
+
+/* Define to 1 if you have the declaration of `TCA_STAB_UNSPEC', and to 0 if
+   you don't. */
+#undef HAVE_DECL_TCA_STAB_UNSPEC
+
+/* Define to 1 if you have the declaration of `TCA_STATS_APP', and to 0 if you
+   don't. */
+#undef HAVE_DECL_TCA_STATS_APP
+
+/* Define to 1 if you have the declaration of `TCA_STATS_BASIC', and to 0 if
+   you don't. */
+#undef HAVE_DECL_TCA_STATS_BASIC
+
+/* Define to 1 if you have the declaration of `TCA_STATS_BASIC_HW', and to 0
+   if you don't. */
+#undef HAVE_DECL_TCA_STATS_BASIC_HW
+
+/* Define to 1 if you have the declaration of `TCA_STATS_PAD', and to 0 if you
+   don't. */
+#undef HAVE_DECL_TCA_STATS_PAD
+
+/* Define to 1 if you have the declaration of `TCA_STATS_PKT64', and to 0 if
+   you don't. */
+#undef HAVE_DECL_TCA_STATS_PKT64
+
+/* Define to 1 if you have the declaration of `TCA_STATS_QUEUE', and to 0 if
+   you don't. */
+#undef HAVE_DECL_TCA_STATS_QUEUE
+
+/* Define to 1 if you have the declaration of `TCA_STATS_RATE_EST', and to 0
+   if you don't. */
+#undef HAVE_DECL_TCA_STATS_RATE_EST
+
+/* Define to 1 if you have the declaration of `TCA_STATS_RATE_EST64', and to 0
+   if you don't. */
+#undef HAVE_DECL_TCA_STATS_RATE_EST64
+
+/* Define to 1 if you have the declaration of `TCA_STATS_UNSPEC', and to 0 if
+   you don't. */
+#undef HAVE_DECL_TCA_STATS_UNSPEC
+
+/* Define to 1 if you have the declaration of `V4L2_BUF_TYPE_META_CAPTURE',
+   and to 0 if you don't. */
+#undef HAVE_DECL_V4L2_BUF_TYPE_META_CAPTURE
+
+/* Define to 1 if you have the declaration of `V4L2_BUF_TYPE_META_OUTPUT', and
+   to 0 if you don't. */
+#undef HAVE_DECL_V4L2_BUF_TYPE_META_OUTPUT
 
 /* Define to 1 if you have the declaration of `V4L2_BUF_TYPE_SDR_CAPTURE', and
    to 0 if you don't. */
    and to 0 if you don't. */
 #undef HAVE_DECL_V4L2_COLORSPACE_470_SYSTEM_M
 
+/* Define to 1 if you have the declaration of `V4L2_COLORSPACE_BT2020', and to
+   0 if you don't. */
+#undef HAVE_DECL_V4L2_COLORSPACE_BT2020
+
 /* Define to 1 if you have the declaration of `V4L2_COLORSPACE_BT878', and to
    0 if you don't. */
 #undef HAVE_DECL_V4L2_COLORSPACE_BT878
 
+/* Define to 1 if you have the declaration of `V4L2_COLORSPACE_DCI_P3', and to
+   0 if you don't. */
+#undef HAVE_DECL_V4L2_COLORSPACE_DCI_P3
+
+/* Define to 1 if you have the declaration of `V4L2_COLORSPACE_DEFAULT', and
+   to 0 if you don't. */
+#undef HAVE_DECL_V4L2_COLORSPACE_DEFAULT
+
 /* Define to 1 if you have the declaration of `V4L2_COLORSPACE_JPEG', and to 0
    if you don't. */
 #undef HAVE_DECL_V4L2_COLORSPACE_JPEG
 
+/* Define to 1 if you have the declaration of `V4L2_COLORSPACE_OPRGB', and to
+   0 if you don't. */
+#undef HAVE_DECL_V4L2_COLORSPACE_OPRGB
+
+/* Define to 1 if you have the declaration of `V4L2_COLORSPACE_RAW', and to 0
+   if you don't. */
+#undef HAVE_DECL_V4L2_COLORSPACE_RAW
+
 /* Define to 1 if you have the declaration of `V4L2_COLORSPACE_REC709', and to
    0 if you don't. */
 #undef HAVE_DECL_V4L2_COLORSPACE_REC709
    if you don't. */
 #undef HAVE_DECL_V4L2_COLORSPACE_SRGB
 
+/* Define to 1 if you have the declaration of `V4L2_CTRL_TYPE_AREA', and to 0
+   if you don't. */
+#undef HAVE_DECL_V4L2_CTRL_TYPE_AREA
+
 /* Define to 1 if you have the declaration of `V4L2_CTRL_TYPE_BITMASK', and to
    0 if you don't. */
 #undef HAVE_DECL_V4L2_CTRL_TYPE_BITMASK
    0 if you don't. */
 #undef HAVE_DECL_V4L2_CTRL_TYPE_STRING
 
+/* Define to 1 if you have the declaration of `V4L2_CTRL_TYPE_U16', and to 0
+   if you don't. */
+#undef HAVE_DECL_V4L2_CTRL_TYPE_U16
+
+/* Define to 1 if you have the declaration of `V4L2_CTRL_TYPE_U32', and to 0
+   if you don't. */
+#undef HAVE_DECL_V4L2_CTRL_TYPE_U32
+
+/* Define to 1 if you have the declaration of `V4L2_CTRL_TYPE_U8', and to 0 if
+   you don't. */
+#undef HAVE_DECL_V4L2_CTRL_TYPE_U8
+
 /* Define to 1 if you have the declaration of `V4L2_FIELD_ALTERNATE', and to 0
    if you don't. */
 #undef HAVE_DECL_V4L2_FIELD_ALTERNATE
    you don't. */
 #undef HAVE_DECL_V4L2_FIELD_TOP
 
-/* Define to 1 if you have the declaration of `V4L2_FRMIVAL_TYPE_CONTINUOUS',
-   and to 0 if you don't. */
-#undef HAVE_DECL_V4L2_FRMIVAL_TYPE_CONTINUOUS
-
-/* Define to 1 if you have the declaration of `V4L2_FRMIVAL_TYPE_DISCRETE',
-   and to 0 if you don't. */
-#undef HAVE_DECL_V4L2_FRMIVAL_TYPE_DISCRETE
-
-/* Define to 1 if you have the declaration of `V4L2_FRMIVAL_TYPE_STEPWISE',
-   and to 0 if you don't. */
-#undef HAVE_DECL_V4L2_FRMIVAL_TYPE_STEPWISE
-
 /* Define to 1 if you have the declaration of `V4L2_FRMSIZE_TYPE_CONTINUOUS',
    and to 0 if you don't. */
 #undef HAVE_DECL_V4L2_FRMSIZE_TYPE_CONTINUOUS
    if you don't. */
 #undef HAVE_DECL_V4L2_MEMORY_USERPTR
 
-/* Define to 1 if you have the declaration of `V4L2_PRIORITY_BACKGROUND', and
-   to 0 if you don't. */
-#undef HAVE_DECL_V4L2_PRIORITY_BACKGROUND
-
-/* Define to 1 if you have the declaration of `V4L2_PRIORITY_INTERACTIVE', and
-   to 0 if you don't. */
-#undef HAVE_DECL_V4L2_PRIORITY_INTERACTIVE
-
-/* Define to 1 if you have the declaration of `V4L2_PRIORITY_RECORD', and to 0
-   if you don't. */
-#undef HAVE_DECL_V4L2_PRIORITY_RECORD
-
-/* Define to 1 if you have the declaration of `V4L2_PRIORITY_UNSET', and to 0
-   if you don't. */
-#undef HAVE_DECL_V4L2_PRIORITY_UNSET
-
 /* Define to 1 if you have the declaration of `V4L2_TUNER_ANALOG_TV', and to 0
    if you don't. */
 #undef HAVE_DECL_V4L2_TUNER_ANALOG_TV
    you don't. */
 #undef HAVE_DECL_V4L2_TUNER_RADIO
 
+/* Define to 1 if you have the declaration of `V4L2_TUNER_RF', and to 0 if you
+   don't. */
+#undef HAVE_DECL_V4L2_TUNER_RF
+
+/* Define to 1 if you have the declaration of `V4L2_TUNER_SDR', and to 0 if
+   you don't. */
+#undef HAVE_DECL_V4L2_TUNER_SDR
+
 /* Define to 1 if you have the declaration of `VM_BLOCK_DUMP', and to 0 if you
    don't. */
 #undef HAVE_DECL_VM_BLOCK_DUMP
 
+/* Define to 1 if you have the declaration of `VM_DIRTY_BACKGROUND', and to 0
+   if you don't. */
+#undef HAVE_DECL_VM_DIRTY_BACKGROUND
+
+/* Define to 1 if you have the declaration of `VM_DIRTY_EXPIRE_CS', and to 0
+   if you don't. */
+#undef HAVE_DECL_VM_DIRTY_EXPIRE_CS
+
+/* Define to 1 if you have the declaration of `VM_DIRTY_RATIO', and to 0 if
+   you don't. */
+#undef HAVE_DECL_VM_DIRTY_RATIO
+
+/* Define to 1 if you have the declaration of `VM_DIRTY_WB_CS', and to 0 if
+   you don't. */
+#undef HAVE_DECL_VM_DIRTY_WB_CS
+
 /* Define to 1 if you have the declaration of `VM_HUGETLB_GROUP', and to 0 if
    you don't. */
 #undef HAVE_DECL_VM_HUGETLB_GROUP
 
+/* Define to 1 if you have the declaration of `VM_HUGETLB_PAGES', and to 0 if
+   you don't. */
+#undef HAVE_DECL_VM_HUGETLB_PAGES
+
 /* Define to 1 if you have the declaration of `VM_LAPTOP_MODE', and to 0 if
    you don't. */
 #undef HAVE_DECL_VM_LAPTOP_MODE
    if you don't. */
 #undef HAVE_DECL_VM_LEGACY_VA_LAYOUT
 
+/* Define to 1 if you have the declaration of `VM_LOWMEM_RESERVE_RATIO', and
+   to 0 if you don't. */
+#undef HAVE_DECL_VM_LOWMEM_RESERVE_RATIO
+
 /* Define to 1 if you have the declaration of `VM_MAX_MAP_COUNT', and to 0 if
    you don't. */
 #undef HAVE_DECL_VM_MAX_MAP_COUNT
 
+/* Define to 1 if you have the declaration of `VM_MIN_FREE_KBYTES', and to 0
+   if you don't. */
+#undef HAVE_DECL_VM_MIN_FREE_KBYTES
+
+/* Define to 1 if you have the declaration of `VM_NR_PDFLUSH_THREADS', and to
+   0 if you don't. */
+#undef HAVE_DECL_VM_NR_PDFLUSH_THREADS
+
+/* Define to 1 if you have the declaration of `VM_OVERCOMMIT_MEMORY', and to 0
+   if you don't. */
+#undef HAVE_DECL_VM_OVERCOMMIT_MEMORY
+
+/* Define to 1 if you have the declaration of `VM_OVERCOMMIT_RATIO', and to 0
+   if you don't. */
+#undef HAVE_DECL_VM_OVERCOMMIT_RATIO
+
+/* Define to 1 if you have the declaration of `VM_PAGEBUF', and to 0 if you
+   don't. */
+#undef HAVE_DECL_VM_PAGEBUF
+
+/* Define to 1 if you have the declaration of `VM_PAGE_CLUSTER', and to 0 if
+   you don't. */
+#undef HAVE_DECL_VM_PAGE_CLUSTER
+
+/* Define to 1 if you have the declaration of `VM_SWAPPINESS', and to 0 if you
+   don't. */
+#undef HAVE_DECL_VM_SWAPPINESS
+
 /* Define to 1 if you have the declaration of `VM_SWAP_TOKEN_TIMEOUT', and to
    0 if you don't. */
 #undef HAVE_DECL_VM_SWAP_TOKEN_TIMEOUT
    0 if you don't. */
 #undef HAVE_DECL_VM_VFS_CACHE_PRESSURE
 
+/* Define to 1 if you have the declaration of `XDP_ATTACHED_DRV', and to 0 if
+   you don't. */
+#undef HAVE_DECL_XDP_ATTACHED_DRV
+
+/* Define to 1 if you have the declaration of `XDP_ATTACHED_HW', and to 0 if
+   you don't. */
+#undef HAVE_DECL_XDP_ATTACHED_HW
+
+/* Define to 1 if you have the declaration of `XDP_ATTACHED_MULTI', and to 0
+   if you don't. */
+#undef HAVE_DECL_XDP_ATTACHED_MULTI
+
+/* Define to 1 if you have the declaration of `XDP_ATTACHED_NONE', and to 0 if
+   you don't. */
+#undef HAVE_DECL_XDP_ATTACHED_NONE
+
+/* Define to 1 if you have the declaration of `XDP_ATTACHED_SKB', and to 0 if
+   you don't. */
+#undef HAVE_DECL_XDP_ATTACHED_SKB
+
 /* Define to 1 if you have the <demangle.h> header file. */
 #undef HAVE_DEMANGLE_H
 
 /* Define to 1 if you have the `fanotify_mark' function. */
 #undef HAVE_FANOTIFY_MARK
 
+/* Define to 1 if you have the `fcntl64' function. */
+#undef HAVE_FCNTL64
+
 /* Define to 1 if you have the `fopen64' function. */
 #undef HAVE_FOPEN64
 
 /* Define to 1 if you have the `futimens' function. */
 #undef HAVE_FUTIMENS
 
+/* Define to 1 if you have the <gcov.h> header file. */
+#undef HAVE_GCOV_H
+
 /* Define to 1 if you have the <gnu_stubs> header file. */
 #undef HAVE_GNU_STUBS
 
 /* Define to 1 if you have the <linux/btrfs.h> header file. */
 #undef HAVE_LINUX_BTRFS_H
 
+/* Define to 1 if you have the <linux/close_range.h> header file. */
+#undef HAVE_LINUX_CLOSE_RANGE_H
+
 /* Define to 1 if you have the <linux/cryptouser.h> header file. */
 #undef HAVE_LINUX_CRYPTOUSER_H
 
 /* Define to 1 if you have the <linux/if_addr.h> header file. */
 #undef HAVE_LINUX_IF_ADDR_H
 
+/* Define to 1 if you have the <linux/if_bridge.h> header file. */
+#undef HAVE_LINUX_IF_BRIDGE_H
+
 /* Define to 1 if you have the <linux/if_link.h> header file. */
 #undef HAVE_LINUX_IF_LINK_H
 
 /* Define to 1 if you have the <linux/kvm.h> header file. */
 #undef HAVE_LINUX_KVM_H
 
+/* Define to 1 if you have the <linux/loop.h> header file. */
+#undef HAVE_LINUX_LOOP_H
+
 /* Define to 1 if you have the <linux/memfd.h> header file. */
 #undef HAVE_LINUX_MEMFD_H
 
 /* Define to 1 if you have the <linux/mmtimer.h> header file. */
 #undef HAVE_LINUX_MMTIMER_H
 
+/* Define to 1 if you have the <linux/mount.h> header file. */
+#undef HAVE_LINUX_MOUNT_H
+
 /* Define to 1 if you have the <linux/mqueue.h> header file. */
 #undef HAVE_LINUX_MQUEUE_H
 
-/* Define to 1 if you have the <linux/msg.h> header file. */
-#undef HAVE_LINUX_MSG_H
-
 /* Define to 1 if you have the <linux/neighbour.h> header file. */
 #undef HAVE_LINUX_NEIGHBOUR_H
 
 /* Define to 1 if you have the <linux/nsfs.h> header file. */
 #undef HAVE_LINUX_NSFS_H
 
+/* Define to 1 if you have the <linux/openat2.h> header file. */
+#undef HAVE_LINUX_OPENAT2_H
+
 /* Define to 1 if you have the <linux/perf_event.h> header file. */
 #undef HAVE_LINUX_PERF_EVENT_H
 
 /* Define to 1 if you have the <linux/quota.h> header file. */
 #undef HAVE_LINUX_QUOTA_H
 
+/* Define to 1 if you have the <linux/rtnetlink.h> header file. */
+#undef HAVE_LINUX_RTNETLINK_H
+
+/* Define to 1 if you have the <linux/sched.h> header file. */
+#undef HAVE_LINUX_SCHED_H
+
 /* Define to 1 if you have the <linux/seccomp.h> header file. */
 #undef HAVE_LINUX_SECCOMP_H
 
 /* Define to 1 if you have the <linux/securebits.h> header file. */
 #undef HAVE_LINUX_SECUREBITS_H
 
-/* Define to 1 if you have the <linux/sem.h> header file. */
-#undef HAVE_LINUX_SEM_H
-
-/* Define to 1 if you have the <linux/shm.h> header file. */
-#undef HAVE_LINUX_SHM_H
+/* Define to 1 if you have the <linux/tee.h> header file. */
+#undef HAVE_LINUX_TEE_H
 
 /* Define to 1 if you have the <linux/userfaultfd.h> header file. */
 #undef HAVE_LINUX_USERFAULTFD_H
 /* Define to 1 if you have the <linux/utsname.h> header file. */
 #undef HAVE_LINUX_UTSNAME_H
 
+/* Define to 1 if you have the <linux/videodev2.h> header file. */
+#undef HAVE_LINUX_VIDEODEV2_H
+
 /* Define to 1 if you have mpers_name mpers support */
 #undef HAVE_M32_MPERS
 
 /* Define to 1 if you have the `open64' function. */
 #undef HAVE_OPEN64
 
+/* Define to 1 if you have the `open_memstream' function. */
+#undef HAVE_OPEN_MEMSTREAM
+
 /* Define to 1 if you have the <paths.h> header file. */
 #undef HAVE_PATHS_H
 
-/* Define to 1 if you have the `prctl' function. */
-#undef HAVE_PRCTL
-
 /* Define to 1 if you have the `preadv' function. */
 #undef HAVE_PREADV
 
 /* Define to 1 if you have the `strndup' function. */
 #undef HAVE_STRNDUP
 
-/* Define to 1 if you have the <stropts.h> header file. */
-#undef HAVE_STROPTS_H
-
-/* Define to 1 if you have the `strsignal' function. */
-#undef HAVE_STRSIGNAL
-
 /* 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 `btf_value_type_id' is a member of `struct bpf_map_info'. */
 #undef HAVE_STRUCT_BPF_MAP_INFO_BTF_VALUE_TYPE_ID
 
+/* Define to 1 if `btf_vmlinux_value_type_id' is a member of `struct
+   bpf_map_info'. */
+#undef HAVE_STRUCT_BPF_MAP_INFO_BTF_VMLINUX_VALUE_TYPE_ID
+
 /* Define to 1 if `id' is a member of `struct bpf_map_info'. */
 #undef HAVE_STRUCT_BPF_MAP_INFO_ID
 
 /* Define to 1 if the system has the type `struct br_mdb_entry'. */
 #undef HAVE_STRUCT_BR_MDB_ENTRY
 
+/* Define to 1 if `addr' is a member of `struct br_mdb_entry'. */
+#undef HAVE_STRUCT_BR_MDB_ENTRY_ADDR
+
 /* Define to 1 if `flags' is a member of `struct br_mdb_entry'. */
 #undef HAVE_STRUCT_BR_MDB_ENTRY_FLAGS
 
 /* Define to 1 if the system has the type `struct br_port_msg'. */
 #undef HAVE_STRUCT_BR_PORT_MSG
 
+/* Define to 1 if `ifindex' is a member of `struct br_port_msg'. */
+#undef HAVE_STRUCT_BR_PORT_MSG_IFINDEX
+
 /* Define to 1 if `start' is a member of `struct
    btrfs_ioctl_defrag_range_args'. */
 #undef HAVE_STRUCT_BTRFS_IOCTL_DEFRAG_RANGE_ARGS_START
    */
 #undef HAVE_STRUCT_BTRFS_IOCTL_FS_INFO_ARGS_NODESIZE
 
-/* Define to 1 if `flags' is a member of `struct
+/* Define to 1 if the system has the type `struct
+   btrfs_ioctl_logical_ino_args'. */
+#undef HAVE_STRUCT_BTRFS_IOCTL_LOGICAL_INO_ARGS
+
+/* Define to 1 if `inodes' is a member of `struct
    btrfs_ioctl_logical_ino_args'. */
-#undef HAVE_STRUCT_BTRFS_IOCTL_LOGICAL_INO_ARGS_FLAGS
+#undef HAVE_STRUCT_BTRFS_IOCTL_LOGICAL_INO_ARGS_INODES
 
-/* Define to 1 if `buf_size' is a member of `struct
-   btrfs_ioctl_search_args_v2'. */
-#undef HAVE_STRUCT_BTRFS_IOCTL_SEARCH_ARGS_V2_BUF_SIZE
+/* Define to 1 if `cgroup' is a member of `struct clone_args'. */
+#undef HAVE_STRUCT_CLONE_ARGS_CGROUP
 
 /* Define to 1 if the system has the type `struct crypto_report_aead'. */
 #undef HAVE_STRUCT_CRYPTO_REPORT_AEAD
 
+/* Define to 1 if `ivsize' is a member of `struct crypto_report_aead'. */
+#undef HAVE_STRUCT_CRYPTO_REPORT_AEAD_IVSIZE
+
 /* Define to 1 if the system has the type `struct crypto_report_blkcipher'. */
 #undef HAVE_STRUCT_CRYPTO_REPORT_BLKCIPHER
 
+/* Define to 1 if `ivsize' is a member of `struct crypto_report_blkcipher'. */
+#undef HAVE_STRUCT_CRYPTO_REPORT_BLKCIPHER_IVSIZE
+
 /* Define to 1 if the system has the type `struct crypto_report_cipher'. */
 #undef HAVE_STRUCT_CRYPTO_REPORT_CIPHER
 
+/* Define to 1 if `max_keysize' is a member of `struct crypto_report_cipher'.
+   */
+#undef HAVE_STRUCT_CRYPTO_REPORT_CIPHER_MAX_KEYSIZE
+
 /* Define to 1 if the system has the type `struct crypto_report_hash'. */
 #undef HAVE_STRUCT_CRYPTO_REPORT_HASH
 
+/* Define to 1 if `digestsize' is a member of `struct crypto_report_hash'. */
+#undef HAVE_STRUCT_CRYPTO_REPORT_HASH_DIGESTSIZE
+
 /* Define to 1 if the system has the type `struct crypto_report_rng'. */
 #undef HAVE_STRUCT_CRYPTO_REPORT_RNG
 
+/* Define to 1 if `seedsize' is a member of `struct crypto_report_rng'. */
+#undef HAVE_STRUCT_CRYPTO_REPORT_RNG_SEEDSIZE
+
+/* Define to 1 if the system has the type `struct crypto_user_alg'. */
+#undef HAVE_STRUCT_CRYPTO_USER_ALG
+
+/* Define to 1 if `cru_flags' is a member of `struct crypto_user_alg'. */
+#undef HAVE_STRUCT_CRYPTO_USER_ALG_CRU_FLAGS
+
 /* Define to 1 if the system has the type `struct dcbmsg'. */
 #undef HAVE_STRUCT_DCBMSG
 
 /* Define to 1 if the system has the type `struct ifla_bridge_id'. */
 #undef HAVE_STRUCT_IFLA_BRIDGE_ID
 
+/* Define to 1 if `addr' is a member of `struct ifla_bridge_id'. */
+#undef HAVE_STRUCT_IFLA_BRIDGE_ID_ADDR
+
 /* Define to 1 if the system has the type `struct ifla_cacheinfo'. */
 #undef HAVE_STRUCT_IFLA_CACHEINFO
 
 /* Define to 1 if the system has the type `struct ifla_port_vsi'. */
 #undef HAVE_STRUCT_IFLA_PORT_VSI
 
+/* Define to 1 if `pad' is a member of `struct ifla_port_vsi'. */
+#undef HAVE_STRUCT_IFLA_PORT_VSI_PAD
+
+/* Define to 1 if the system has the type `struct input_absinfo'. */
+#undef HAVE_STRUCT_INPUT_ABSINFO
+
 /* 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 input_keymap_entry'. */
+#undef HAVE_STRUCT_INPUT_KEYMAP_ENTRY
+
+/* Define to 1 if `scancode' is a member of `struct input_keymap_entry'. */
+#undef HAVE_STRUCT_INPUT_KEYMAP_ENTRY_SCANCODE
+
+/* Define to 1 if the system has the type `struct input_mask'. */
+#undef HAVE_STRUCT_INPUT_MASK
+
+/* Define to 1 if `codes_ptr' is a member of `struct input_mask'. */
+#undef HAVE_STRUCT_INPUT_MASK_CODES_PTR
+
+/* Define to 1 if `aio_flags' is a member of `struct iocb'. */
+#undef HAVE_STRUCT_IOCB_AIO_FLAGS
+
+/* Define to 1 if `aio_rw_flags' is a member of `struct iocb'. */
+#undef HAVE_STRUCT_IOCB_AIO_RW_FLAGS
+
+/* Define to 1 if the system has the type `struct io_cqring_offsets'. */
+#undef HAVE_STRUCT_IO_CQRING_OFFSETS
+
+/* Define to 1 if `cqes' is a member of `struct io_cqring_offsets'. */
+#undef HAVE_STRUCT_IO_CQRING_OFFSETS_CQES
+
+/* Define to 1 if `flags' is a member of `struct io_cqring_offsets'. */
+#undef HAVE_STRUCT_IO_CQRING_OFFSETS_FLAGS
+
+/* Define to 1 if the system has the type `struct io_sqring_offsets'. */
+#undef HAVE_STRUCT_IO_SQRING_OFFSETS
+
+/* Define to 1 if `resv2' is a member of `struct io_sqring_offsets'. */
+#undef HAVE_STRUCT_IO_SQRING_OFFSETS_RESV2
+
+/* Define to 1 if the system has the type `struct io_uring_files_update'. */
+#undef HAVE_STRUCT_IO_URING_FILES_UPDATE
+
+/* Define to 1 if `fds' is a member of `struct io_uring_files_update'. */
+#undef HAVE_STRUCT_IO_URING_FILES_UPDATE_FDS
+
+/* Define to 1 if the system has the type `struct io_uring_params'. */
+#undef HAVE_STRUCT_IO_URING_PARAMS
+
+/* Define to 1 if `cq_off' is a member of `struct io_uring_params'. */
+#undef HAVE_STRUCT_IO_URING_PARAMS_CQ_OFF
+
+/* Define to 1 if `features' is a member of `struct io_uring_params'. */
+#undef HAVE_STRUCT_IO_URING_PARAMS_FEATURES
+
+/* Define to 1 if `resv' is a member of `struct io_uring_params'. */
+#undef HAVE_STRUCT_IO_URING_PARAMS_RESV
+
+/* Define to 1 if `wq_fd' is a member of `struct io_uring_params'. */
+#undef HAVE_STRUCT_IO_URING_PARAMS_WQ_FD
+
+/* Define to 1 if the system has the type `struct io_uring_probe'. */
+#undef HAVE_STRUCT_IO_URING_PROBE
+
+/* Define to 1 if the system has the type `struct io_uring_probe_op'. */
+#undef HAVE_STRUCT_IO_URING_PROBE_OP
+
+/* Define to 1 if `ops' is a member of `struct io_uring_probe'. */
+#undef HAVE_STRUCT_IO_URING_PROBE_OPS
+
+/* Define to 1 if `resv2' is a member of `struct io_uring_probe_op'. */
+#undef HAVE_STRUCT_IO_URING_PROBE_OP_RESV2
+
 /* 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
 
+/* Define to 1 if the system has the type `struct keyctl_pkey_params'. */
+#undef HAVE_STRUCT_KEYCTL_PKEY_PARAMS
+
+/* Define to 1 if the system has the type `struct keyctl_pkey_query'. */
+#undef HAVE_STRUCT_KEYCTL_PKEY_QUERY
+
 /* Define to 1 if the system has the type `struct kvm_cpuid2'. */
 #undef HAVE_STRUCT_KVM_CPUID2
 
    kvm_userspace_memory_region'. */
 #undef HAVE_STRUCT_KVM_USERSPACE_MEMORY_REGION
 
+/* Define to 1 if the system has the type `struct loop_config'. */
+#undef HAVE_STRUCT_LOOP_CONFIG
+
+/* Define to 1 if `__reserved' is a member of `struct loop_config'. */
+#undef HAVE_STRUCT_LOOP_CONFIG___RESERVED
+
 /* Define to 1 if the system has the type `struct mmsghdr'. */
 #undef HAVE_STRUCT_MMSGHDR
 
 /* Define to 1 if the system has the type `struct ndt_config'. */
 #undef HAVE_STRUCT_NDT_CONFIG
 
+/* Define to 1 if `ndtc_proxy_qlen' is a member of `struct ndt_config'. */
+#undef HAVE_STRUCT_NDT_CONFIG_NDTC_PROXY_QLEN
+
 /* Define to 1 if the system has the type `struct ndt_stats'. */
 #undef HAVE_STRUCT_NDT_STATS
 
 /* Define to 1 if the system has the type `struct netconfmsg'. */
 #undef HAVE_STRUCT_NETCONFMSG
 
+/* Define to 1 if the system has the type `struct open_how'. */
+#undef HAVE_STRUCT_OPEN_HOW
+
+/* Define to 1 if `resolve' is a member of `struct open_how'. */
+#undef HAVE_STRUCT_OPEN_HOW_RESOLVE
+
+/* Define to 1 if `aux_sample_size' is a member of `struct perf_event_attr'.
+   */
+#undef HAVE_STRUCT_PERF_EVENT_ATTR_AUX_SAMPLE_SIZE
+
 /* Define to 1 if `aux_watermark' is a member of `struct perf_event_attr'. */
 #undef HAVE_STRUCT_PERF_EVENT_ATTR_AUX_WATERMARK
 
 /* Define to 1 if the system has the type `struct ptrace_peeksiginfo_args'. */
 #undef HAVE_STRUCT_PTRACE_PEEKSIGINFO_ARGS
 
+/* Define to 1 if the system has the type `struct ptrace_syscall_info'. */
+#undef HAVE_STRUCT_PTRACE_SYSCALL_INFO
+
 /* Define to 1 if the system has the type `struct pt_all_user_regs'. */
 #undef HAVE_STRUCT_PT_ALL_USER_REGS
 
 /* Define to 1 if the system has the type `struct rta_mfc_stats'. */
 #undef HAVE_STRUCT_RTA_MFC_STATS
 
+/* Define to 1 if `mfcs_wrong_if' is a member of `struct rta_mfc_stats'. */
+#undef HAVE_STRUCT_RTA_MFC_STATS_MFCS_WRONG_IF
+
+/* Define to 1 if the system has the type `struct rtnl_link_stats'. */
+#undef HAVE_STRUCT_RTNL_LINK_STATS
+
 /* Define to 1 if the system has the type `struct rtnl_link_stats64'. */
 #undef HAVE_STRUCT_RTNL_LINK_STATS64
 
 /* Define to 1 if the system has the type `struct rtvia'. */
 #undef HAVE_STRUCT_RTVIA
 
+/* Define to 1 if `rtvia_addr' is a member of `struct rtvia'. */
+#undef HAVE_STRUCT_RTVIA_RTVIA_ADDR
+
 /* Define to 1 if the system has the type `struct sigcontext'. */
 #undef HAVE_STRUCT_SIGCONTEXT
 
+/* Define to 1 if `hci_channel' is a member of `struct sockaddr_hci'. */
+#undef HAVE_STRUCT_SOCKADDR_HCI_HCI_CHANNEL
+
 /* Define to 1 if `l2_bdaddr_type' is a member of `struct sockaddr_l2'. */
 #undef HAVE_STRUCT_SOCKADDR_L2_L2_BDADDR_TYPE
 
 /* Define to 1 if `f_fsid.__val' is a member of `struct statfs'. */
 #undef HAVE_STRUCT_STATFS_F_FSID___VAL
 
+/* Define to 1 if the system has the type `struct statx'. */
+#undef HAVE_STRUCT_STATX
+
 /* 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
+/* Define to 1 if the system has the type `struct tee_iocl_supp_recv_arg'. */
+#undef HAVE_STRUCT_TEE_IOCL_SUPP_RECV_ARG
+
+/* Define to 1 if `params' is a member of `struct tee_iocl_supp_recv_arg'. */
+#undef HAVE_STRUCT_TEE_IOCL_SUPP_RECV_ARG_PARAMS
+
+/* Define to 1 if the system has the type `struct tee_iocl_supp_send_arg'. */
+#undef HAVE_STRUCT_TEE_IOCL_SUPP_SEND_ARG
+
+/* Define to 1 if `params' is a member of `struct tee_iocl_supp_send_arg'. */
+#undef HAVE_STRUCT_TEE_IOCL_SUPP_SEND_ARG_PARAMS
+
+/* Define to 1 if the system has the type `struct tee_ioctl_buf_data'. */
+#undef HAVE_STRUCT_TEE_IOCTL_BUF_DATA
+
+/* Define to 1 if `buf_len' is a member of `struct tee_ioctl_buf_data'. */
+#undef HAVE_STRUCT_TEE_IOCTL_BUF_DATA_BUF_LEN
+
+/* Define to 1 if the system has the type `struct tee_ioctl_cancel_arg'. */
+#undef HAVE_STRUCT_TEE_IOCTL_CANCEL_ARG
+
+/* Define to 1 if `session' is a member of `struct tee_ioctl_cancel_arg'. */
+#undef HAVE_STRUCT_TEE_IOCTL_CANCEL_ARG_SESSION
+
+/* Define to 1 if the system has the type `struct
+   tee_ioctl_close_session_arg'. */
+#undef HAVE_STRUCT_TEE_IOCTL_CLOSE_SESSION_ARG
+
+/* Define to 1 if `session' is a member of `struct
+   tee_ioctl_close_session_arg'. */
+#undef HAVE_STRUCT_TEE_IOCTL_CLOSE_SESSION_ARG_SESSION
+
+/* Define to 1 if the system has the type `struct tee_ioctl_invoke_arg'. */
+#undef HAVE_STRUCT_TEE_IOCTL_INVOKE_ARG
+
+/* Define to 1 if `params' is a member of `struct tee_ioctl_invoke_arg'. */
+#undef HAVE_STRUCT_TEE_IOCTL_INVOKE_ARG_PARAMS
+
+/* Define to 1 if the system has the type `struct tee_ioctl_open_session_arg'.
+   */
+#undef HAVE_STRUCT_TEE_IOCTL_OPEN_SESSION_ARG
+
+/* Define to 1 if `params' is a member of `struct tee_ioctl_open_session_arg'.
+   */
+#undef HAVE_STRUCT_TEE_IOCTL_OPEN_SESSION_ARG_PARAMS
+
+/* Define to 1 if the system has the type `struct tee_ioctl_param'. */
+#undef HAVE_STRUCT_TEE_IOCTL_PARAM
+
+/* Define to 1 if `c' is a member of `struct tee_ioctl_param'. */
+#undef HAVE_STRUCT_TEE_IOCTL_PARAM_C
+
+/* Define to 1 if the system has the type `struct tee_ioctl_shm_alloc_data'.
+   */
+#undef HAVE_STRUCT_TEE_IOCTL_SHM_ALLOC_DATA
+
+/* Define to 1 if `id' is a member of `struct tee_ioctl_shm_alloc_data'. */
+#undef HAVE_STRUCT_TEE_IOCTL_SHM_ALLOC_DATA_ID
+
+/* Define to 1 if the system has the type `struct
+   tee_ioctl_shm_register_data'. */
+#undef HAVE_STRUCT_TEE_IOCTL_SHM_REGISTER_DATA
+
+/* Define to 1 if `id' is a member of `struct tee_ioctl_shm_register_data'. */
+#undef HAVE_STRUCT_TEE_IOCTL_SHM_REGISTER_DATA_ID
+
+/* Define to 1 if the system has the type `struct tee_ioctl_version_data'. */
+#undef HAVE_STRUCT_TEE_IOCTL_VERSION_DATA
+
+/* Define to 1 if `gen_caps' is a member of `struct tee_ioctl_version_data'.
+   */
+#undef HAVE_STRUCT_TEE_IOCTL_VERSION_DATA_GEN_CAPS
 
 /* Define to 1 if `max_beb_per1024' is a member of `struct ubi_attach_req'. */
 #undef HAVE_STRUCT_UBI_ATTACH_REQ_MAX_BEB_PER1024
 /* Define to 1 if `domainname' is a member of `struct utsname'. */
 #undef HAVE_STRUCT_UTSNAME_DOMAINNAME
 
+/* Define to 1 if the system has the type `struct v4l2_area'. */
+#undef HAVE_STRUCT_V4L2_AREA
+
+/* Define to 1 if `height' is a member of `struct v4l2_area'. */
+#undef HAVE_STRUCT_V4L2_AREA_HEIGHT
+
+/* Define to 1 if the system has the type `struct v4l2_capability'. */
+#undef HAVE_STRUCT_V4L2_CAPABILITY
+
+/* Define to 1 if `device_caps' is a member of `struct v4l2_capability'. */
+#undef HAVE_STRUCT_V4L2_CAPABILITY_DEVICE_CAPS
+
+/* Define to 1 if `reserved' is a member of `struct v4l2_capability'. */
+#undef HAVE_STRUCT_V4L2_CAPABILITY_RESERVED
+
+/* Define to 1 if the system has the type `struct v4l2_clip'. */
+#undef HAVE_STRUCT_V4L2_CLIP
+
+/* Define to 1 if `next' is a member of `struct v4l2_clip'. */
+#undef HAVE_STRUCT_V4L2_CLIP_NEXT
+
+/* Define to 1 if the system has the type `struct v4l2_create_buffers'. */
+#undef HAVE_STRUCT_V4L2_CREATE_BUFFERS
+
+/* Define to 1 if `reserved' is a member of `struct v4l2_create_buffers'. */
+#undef HAVE_STRUCT_V4L2_CREATE_BUFFERS_RESERVED
+
+/* Define to 1 if the system has the type `struct v4l2_ext_controls'. */
+#undef HAVE_STRUCT_V4L2_EXT_CONTROLS
+
+/* Define to 1 if `controls' is a member of `struct v4l2_ext_controls'. */
+#undef HAVE_STRUCT_V4L2_EXT_CONTROLS_CONTROLS
+
+/* Define to 1 if `string' is a member of `struct v4l2_ext_control'. */
+#undef HAVE_STRUCT_V4L2_EXT_CONTROL_STRING
+
+/* Define to 1 if the system has the type `struct v4l2_format'. */
+#undef HAVE_STRUCT_V4L2_FORMAT
+
+/* Define to 1 if `fmt' is a member of `struct v4l2_format'. */
+#undef HAVE_STRUCT_V4L2_FORMAT_FMT
+
+/* Define to 1 if `fmt.pix_mp' is a member of `struct v4l2_format'. */
+#undef HAVE_STRUCT_V4L2_FORMAT_FMT_PIX_MP
+
+/* Define to 1 if `fmt.sdr' is a member of `struct v4l2_format'. */
+#undef HAVE_STRUCT_V4L2_FORMAT_FMT_SDR
+
+/* Define to 1 if `fmt.sliced' is a member of `struct v4l2_format'. */
+#undef HAVE_STRUCT_V4L2_FORMAT_FMT_SLICED
+
+/* Define to 1 if the system has the type `struct v4l2_frmivalenum'. */
+#undef HAVE_STRUCT_V4L2_FRMIVALENUM
+
+/* Define to 1 if `reserved' is a member of `struct v4l2_frmivalenum'. */
+#undef HAVE_STRUCT_V4L2_FRMIVALENUM_RESERVED
+
+/* Define to 1 if the system has the type `struct v4l2_frmival_stepwise'. */
+#undef HAVE_STRUCT_V4L2_FRMIVAL_STEPWISE
+
+/* Define to 1 if `step' is a member of `struct v4l2_frmival_stepwise'. */
+#undef HAVE_STRUCT_V4L2_FRMIVAL_STEPWISE_STEP
+
+/* Define to 1 if the system has the type `struct v4l2_frmsizeenum'. */
+#undef HAVE_STRUCT_V4L2_FRMSIZEENUM
+
+/* Define to 1 if `reserved' is a member of `struct v4l2_frmsizeenum'. */
+#undef HAVE_STRUCT_V4L2_FRMSIZEENUM_RESERVED
+
+/* Define to 1 if the system has the type `struct v4l2_frmsize_discrete'. */
+#undef HAVE_STRUCT_V4L2_FRMSIZE_DISCRETE
+
+/* Define to 1 if `height' is a member of `struct v4l2_frmsize_discrete'. */
+#undef HAVE_STRUCT_V4L2_FRMSIZE_DISCRETE_HEIGHT
+
+/* Define to 1 if the system has the type `struct v4l2_frmsize_stepwise'. */
+#undef HAVE_STRUCT_V4L2_FRMSIZE_STEPWISE
+
+/* Define to 1 if `step_height' is a member of `struct v4l2_frmsize_stepwise'.
+   */
+#undef HAVE_STRUCT_V4L2_FRMSIZE_STEPWISE_STEP_HEIGHT
+
+/* Define to 1 if the system has the type `struct v4l2_meta_format'. */
+#undef HAVE_STRUCT_V4L2_META_FORMAT
+
+/* Define to 1 if the system has the type `struct v4l2_pix_format'. */
+#undef HAVE_STRUCT_V4L2_PIX_FORMAT
+
+/* Define to 1 if the system has the type `struct v4l2_pix_format_mplane'. */
+#undef HAVE_STRUCT_V4L2_PIX_FORMAT_MPLANE
+
+/* Define to 1 if `xfer_func' is a member of `struct v4l2_pix_format'. */
+#undef HAVE_STRUCT_V4L2_PIX_FORMAT_XFER_FUNC
+
+/* Define to 1 if the system has the type `struct v4l2_plane_pix_format'. */
+#undef HAVE_STRUCT_V4L2_PLANE_PIX_FORMAT
+
+/* Define to 1 if `reserved' is a member of `struct v4l2_plane_pix_format'. */
+#undef HAVE_STRUCT_V4L2_PLANE_PIX_FORMAT_RESERVED
+
+/* Define to 1 if the system has the type `struct v4l2_sdr_format'. */
+#undef HAVE_STRUCT_V4L2_SDR_FORMAT
+
 /* Define to 1 if `buffersize' is a member of `struct v4l2_sdr_format'. */
 #undef HAVE_STRUCT_V4L2_SDR_FORMAT_BUFFERSIZE
 
+/* Define to 1 if the system has the type `struct v4l2_sliced_vbi_cap'. */
+#undef HAVE_STRUCT_V4L2_SLICED_VBI_CAP
+
+/* Define to 1 if `reserved' is a member of `struct v4l2_sliced_vbi_cap'. */
+#undef HAVE_STRUCT_V4L2_SLICED_VBI_CAP_RESERVED
+
+/* Define to 1 if the system has the type `struct v4l2_sliced_vbi_format'. */
+#undef HAVE_STRUCT_V4L2_SLICED_VBI_FORMAT
+
+/* Define to 1 if `reserved' is a member of `struct v4l2_sliced_vbi_format'.
+   */
+#undef HAVE_STRUCT_V4L2_SLICED_VBI_FORMAT_RESERVED
+
+/* Define to 1 if the system has the type `struct v4l2_vbi_format'. */
+#undef HAVE_STRUCT_V4L2_VBI_FORMAT
+
+/* Define to 1 if `reserved' is a member of `struct v4l2_vbi_format'. */
+#undef HAVE_STRUCT_V4L2_VBI_FORMAT_RESERVED
+
+/* Define to 1 if the system has the type `struct v4l2_window'. */
+#undef HAVE_STRUCT_V4L2_WINDOW
+
 /* Define to 1 if `global_alpha' is a member of `struct v4l2_window'. */
 #undef HAVE_STRUCT_V4L2_WINDOW_GLOBAL_ALPHA
 
 /* Define to 1 if the system has the type `struct __old_kernel_stat'. */
 #undef HAVE_STRUCT___OLD_KERNEL_STAT
 
+/* Define to 1 if the system has the type `struct __ptrace_syscall_info'. */
+#undef HAVE_STRUCT___PTRACE_SYSCALL_INFO
+
 /* Define to 1 if you have the `sync_file_range' function. */
 #undef HAVE_SYNC_FILE_RANGE
 
-/* Define to 1 if you have the <sys/conf.h> header file. */
-#undef HAVE_SYS_CONF_H
-
 /* Define to 1 if you have the <sys/eventfd.h> header file. */
 #undef HAVE_SYS_EVENTFD_H
 
 /* Define to 1 if you have the <sys/ipc.h> header file. */
 #undef HAVE_SYS_IPC_H
 
-/* Define to 1 if you have the <sys/msg.h> header file. */
-#undef HAVE_SYS_MSG_H
-
 /* Define to 1 if you have the <sys/quota.h> header file. */
 #undef HAVE_SYS_QUOTA_H
 
-/* Define to 1 if you have the <sys/sem.h> header file. */
-#undef HAVE_SYS_SEM_H
-
-/* Define to 1 if you have the <sys/shm.h> header file. */
-#undef HAVE_SYS_SHM_H
-
 /* Define to 1 if you have the <sys/signalfd.h> header file. */
 #undef HAVE_SYS_SIGNALFD_H
 
 /* Define to 1 if `attach_bpf_fd' is a member of `union bpf_attr'. */
 #undef HAVE_UNION_BPF_ATTR_ATTACH_BPF_FD
 
+/* Define to 1 if `attach_btf_id' is a member of `union bpf_attr'. */
+#undef HAVE_UNION_BPF_ATTR_ATTACH_BTF_ID
+
 /* Define to 1 if `attach_flags' is a member of `union bpf_attr'. */
 #undef HAVE_UNION_BPF_ATTR_ATTACH_FLAGS
 
+/* Define to 1 if `attach_prog_fd' is a member of `union bpf_attr'. */
+#undef HAVE_UNION_BPF_ATTR_ATTACH_PROG_FD
+
 /* Define to 1 if `attach_type' is a member of `union bpf_attr'. */
 #undef HAVE_UNION_BPF_ATTR_ATTACH_TYPE
 
+/* Define to 1 if `batch.count' is a member of `union bpf_attr'. */
+#undef HAVE_UNION_BPF_ATTR_BATCH_COUNT
+
+/* Define to 1 if `batch.elem_flags' is a member of `union bpf_attr'. */
+#undef HAVE_UNION_BPF_ATTR_BATCH_ELEM_FLAGS
+
+/* Define to 1 if `batch.flags' is a member of `union bpf_attr'. */
+#undef HAVE_UNION_BPF_ATTR_BATCH_FLAGS
+
+/* Define to 1 if `batch.in_batch' is a member of `union bpf_attr'. */
+#undef HAVE_UNION_BPF_ATTR_BATCH_IN_BATCH
+
+/* Define to 1 if `batch.keys' is a member of `union bpf_attr'. */
+#undef HAVE_UNION_BPF_ATTR_BATCH_KEYS
+
+/* Define to 1 if `batch.map_fd' is a member of `union bpf_attr'. */
+#undef HAVE_UNION_BPF_ATTR_BATCH_MAP_FD
+
+/* Define to 1 if `batch.out_batch' is a member of `union bpf_attr'. */
+#undef HAVE_UNION_BPF_ATTR_BATCH_OUT_BATCH
+
+/* Define to 1 if `batch.values' is a member of `union bpf_attr'. */
+#undef HAVE_UNION_BPF_ATTR_BATCH_VALUES
+
 /* Define to 1 if `bpf_fd' is a member of `union bpf_attr'. */
 #undef HAVE_UNION_BPF_ATTR_BPF_FD
 
 /* Define to 1 if `btf_value_type_id' is a member of `union bpf_attr'. */
 #undef HAVE_UNION_BPF_ATTR_BTF_VALUE_TYPE_ID
 
+/* Define to 1 if `btf_vmlinux_value_type_id' is a member of `union bpf_attr'.
+   */
+#undef HAVE_UNION_BPF_ATTR_BTF_VMLINUX_VALUE_TYPE_ID
+
 /* Define to 1 if `dummy' is a member of `union bpf_attr'. */
 #undef HAVE_UNION_BPF_ATTR_DUMMY
 
 /* Define to 1 if `line_info_rec_size' is a member of `union bpf_attr'. */
 #undef HAVE_UNION_BPF_ATTR_LINE_INFO_REC_SIZE
 
+/* Define to 1 if `link_create.attach_type' is a member of `union bpf_attr'.
+   */
+#undef HAVE_UNION_BPF_ATTR_LINK_CREATE_ATTACH_TYPE
+
+/* Define to 1 if `link_create.flags' is a member of `union bpf_attr'. */
+#undef HAVE_UNION_BPF_ATTR_LINK_CREATE_FLAGS
+
+/* Define to 1 if `link_create.prog_fd' is a member of `union bpf_attr'. */
+#undef HAVE_UNION_BPF_ATTR_LINK_CREATE_PROG_FD
+
+/* Define to 1 if `link_create.target_fd' is a member of `union bpf_attr'. */
+#undef HAVE_UNION_BPF_ATTR_LINK_CREATE_TARGET_FD
+
+/* Define to 1 if `link_update.flags' is a member of `union bpf_attr'. */
+#undef HAVE_UNION_BPF_ATTR_LINK_UPDATE_FLAGS
+
+/* Define to 1 if `link_update.link_fd' is a member of `union bpf_attr'. */
+#undef HAVE_UNION_BPF_ATTR_LINK_UPDATE_LINK_FD
+
+/* Define to 1 if `link_update.new_prog_fd' is a member of `union bpf_attr'.
+   */
+#undef HAVE_UNION_BPF_ATTR_LINK_UPDATE_NEW_PROG_FD
+
+/* Define to 1 if `link_update.old_prog_fd' is a member of `union bpf_attr'.
+   */
+#undef HAVE_UNION_BPF_ATTR_LINK_UPDATE_OLD_PROG_FD
+
 /* Define to 1 if `log_buf' is a member of `union bpf_attr'. */
 #undef HAVE_UNION_BPF_ATTR_LOG_BUF
 
 /* Define to 1 if `raw_tracepoint.prog_fd' is a member of `union bpf_attr'. */
 #undef HAVE_UNION_BPF_ATTR_RAW_TRACEPOINT_PROG_FD
 
+/* Define to 1 if `replace_bpf_fd' is a member of `union bpf_attr'. */
+#undef HAVE_UNION_BPF_ATTR_REPLACE_BPF_FD
+
 /* Define to 1 if `start_id' is a member of `union bpf_attr'. */
 #undef HAVE_UNION_BPF_ATTR_START_ID
 
 /* Define to 1 if `task_fd_query.prog_id' is a member of `union bpf_attr'. */
 #undef HAVE_UNION_BPF_ATTR_TASK_FD_QUERY_PROG_ID
 
+/* Define to 1 if `test.ctx_in' is a member of `union bpf_attr'. */
+#undef HAVE_UNION_BPF_ATTR_TEST_CTX_IN
+
+/* Define to 1 if `test.ctx_out' is a member of `union bpf_attr'. */
+#undef HAVE_UNION_BPF_ATTR_TEST_CTX_OUT
+
+/* Define to 1 if `test.ctx_size_in' is a member of `union bpf_attr'. */
+#undef HAVE_UNION_BPF_ATTR_TEST_CTX_SIZE_IN
+
+/* Define to 1 if `test.ctx_size_out' is a member of `union bpf_attr'. */
+#undef HAVE_UNION_BPF_ATTR_TEST_CTX_SIZE_OUT
+
 /* Define to 1 if `test.data_in' is a member of `union bpf_attr'. */
 #undef HAVE_UNION_BPF_ATTR_TEST_DATA_IN
 
 /* Define to 1 if you have the <ustat.h> header file. */
 #undef HAVE_USTAT_H
 
-/* Define to 1 if you have the `utimensat' function. */
-#undef HAVE_UTIMENSAT
-
 /* Define to 1 if the system provides _Static_assert */
 #undef HAVE__STATIC_ASSERT
 
 /* The size of `long', as computed by sizeof. */
 #undef M32_SIZEOF_LONG
 
+/* The size of `struct msqid64_ds', as computed by sizeof. */
+#undef M32_SIZEOF_STRUCT_MSQID64_DS
+
 /* Define for the m68k architecture. */
 #undef M68K
 
 /* The size of `long', as computed by sizeof. */
 #undef MX32_SIZEOF_LONG
 
+/* The size of `struct msqid64_ds', as computed by sizeof. */
+#undef MX32_SIZEOF_STRUCT_MSQID64_DS
+
 /* Define for the Nios-II architecture. */
 #undef NIOS2
 
 /* Define for the PowerPC architecture. */
 #undef POWERPC
 
-/* Define for the PowerPC64 architecture. */
+/* Define for the big endian PowerPC64 architecture. */
 #undef POWERPC64
 
-/* Define for the RISC-V architecture */
-#undef RISCV
+/* Define for the little endian PowerPC64 architecture. */
+#undef POWERPC64LE
+
+/* Define for the RISC-V 64-bit architecture */
+#undef RISCV64
 
 /* Define for the S390 architecture. */
 #undef S390
 /* The size of `struct i64_i32', as computed by sizeof. */
 #undef SIZEOF_STRUCT_I64_I32
 
+/* The size of `struct msqid64_ds', as computed by sizeof. */
+#undef SIZEOF_STRUCT_MSQID64_DS
+
 /* Define for the SPARC architecture. */
 #undef SPARC
 
index 7b378b9241748014f83044a162dde9912dfc3a5a..5e0fea5375fab549e415ed32ce868e62d32f40e5 100755 (executable)
--- 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 5.1.
+# Generated by GNU Autoconf 2.69 for strace 5.9.
 #
 # Report bugs to <strace-devel@lists.strace.io>.
 #
@@ -11,7 +11,7 @@
 # This configure script is free software; the Free Software Foundation
 # gives unlimited permission to copy, distribute and modify it.
 #
-# Copyright (c) 1999-2019 The strace developers.
+# Copyright (c) 1999-2020 The strace developers.
 ## -------------------- ##
 ## M4sh Initialization. ##
 ## -------------------- ##
@@ -582,8 +582,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='strace'
 PACKAGE_TARNAME='strace'
-PACKAGE_VERSION='5.1'
-PACKAGE_STRING='strace 5.1'
+PACKAGE_VERSION='5.9'
+PACKAGE_STRING='strace 5.9'
 PACKAGE_BUGREPORT='strace-devel@lists.strace.io'
 PACKAGE_URL='https://strace.io'
 
@@ -647,6 +647,14 @@ HAVE_M32_MPERS_FALSE
 HAVE_M32_MPERS_TRUE
 HAVE_M32_RUNTIME_FALSE
 HAVE_M32_RUNTIME_TRUE
+CFLAGS_FOR_MX32
+CPPFLAGS_FOR_MX32
+CPP_FOR_MX32
+CC_FOR_MX32
+CFLAGS_FOR_M32
+CPPFLAGS_FOR_M32
+CPP_FOR_M32
+CC_FOR_M32
 USE_DEMANGLE_FALSE
 USE_DEMANGLE_TRUE
 libiberty_CPPFLAGS
@@ -666,13 +674,24 @@ libdw_LDFLAGS
 libdw_CFLAGS
 libdw_CPPFLAGS
 READELF
-PERL
 mq_LIBS
 clock_LIBS
 timer_LIBS
 dl_LIBS
 SIZEOF_KERNEL_LONG_T
 SIZEOF_LONG
+ac_ct_AR
+AR
+WARN_CFLAGS_FOR_BUILD
+LDFLAGS_FOR_BUILD
+CPPFLAGS_FOR_BUILD
+CFLAGS_FOR_BUILD
+BUILD_OBJEXT
+BUILD_EXEEXT
+CPP_FOR_BUILD
+ac_ct_CC_FOR_BUILD
+CC_FOR_BUILD
+WARN_CFLAGS
 MIPS_ABI
 arch_native
 cc_flags_mx32
@@ -698,16 +717,6 @@ SED
 EGREP
 GREP
 RANLIB
-WARN_CFLAGS_FOR_BUILD
-LDFLAGS_FOR_BUILD
-CPPFLAGS_FOR_BUILD
-CFLAGS_FOR_BUILD
-BUILD_OBJEXT
-BUILD_EXEEXT
-CPP_FOR_BUILD
-ac_ct_CC_FOR_BUILD
-CC_FOR_BUILD
-WARN_CFLAGS
 CPP
 am__fastdepCC_FALSE
 am__fastdepCC_TRUE
@@ -810,10 +819,10 @@ enable_option_checking
 enable_silent_rules
 enable_maintainer_mode
 enable_dependency_tracking
-enable_gcc_Werror
 with_gcov
 enable_code_coverage
 enable_arm_oabi
+enable_gcc_Werror
 enable_stacktrace
 with_libdw
 with_libunwind
@@ -1374,7 +1383,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 5.1 to adapt to many kinds of systems.
+\`configure' configures strace 5.9 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1444,7 +1453,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of strace 5.1:";;
+     short | recursive ) echo "Configuration of strace 5.9:";;
    esac
   cat <<\_ACEOF
 
@@ -1461,9 +1470,9 @@ Optional Features:
                           do not reject slow dependency extractors
   --disable-dependency-tracking
                           speeds up one-time build
-  --enable-gcc-Werror     turn on gcc's -Werror option
   --enable-code-coverage  Whether to enable code coverage support
   --enable-arm-oabi       enable OABI support on ARM EABI
+  --enable-gcc-Werror     turn on gcc's -Werror option
   --enable-stacktrace=yes|no|check
                           whether to enable stack tracing support, default is
                           check
@@ -1567,14 +1576,14 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-strace configure 5.1
+strace configure 5.9
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
 This configure script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it.
 
-Copyright (c) 1999-2019 The strace developers.
+Copyright (c) 1999-2020 The strace developers.
 _ACEOF
   exit
 fi
@@ -1658,52 +1667,6 @@ fi
 
 } # ac_fn_c_try_cpp
 
-# ac_fn_c_try_link LINENO
-# -----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_link ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext conftest$ac_exeext
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-        test "$cross_compiling" = yes ||
-        test -x conftest$ac_exeext
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_retval=1
-fi
-  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
-  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
-  # interfere with the next link command; also delete a directory that is
-  # left behind by Apple's compiler.  We do this before executing the actions.
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_link
-
 # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
 # -------------------------------------------------------
 # Tests whether HEADER exists, giving a warning if it cannot be compiled using
@@ -2051,6 +2014,52 @@ rm -f conftest.val
 
 } # ac_fn_c_compute_int
 
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext conftest$ac_exeext
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        test -x conftest$ac_exeext
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=1
+fi
+  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+  # interfere with the next link command; also delete a directory that is
+  # left behind by Apple's compiler.  We do this before executing the actions.
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_link
+
 # ac_fn_c_check_func LINENO FUNC VAR
 # ----------------------------------
 # Tests whether FUNC exists, setting the cache variable VAR accordingly
@@ -2307,7 +2316,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 5.1, which was
+It was created by strace $as_me 5.9, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3178,7 +3187,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='strace'
- VERSION='5.1'
+ VERSION='5.9'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -4840,134 +4849,242 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
-if test x${gl_unknown_warnings_are_errors+set} = x; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
-$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
-if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_RANLIB+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-
-  gl_save_compiler_FLAGS="$CFLAGS"
-  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
 else
-  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  CFLAGS="$gl_save_compiler_FLAGS"
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
-$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
-if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
-  gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
 else
-  gl_unknown_warnings_are_errors=
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
 fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Wall" >&5
-$as_echo_n "checking whether $CC handles -Wall... " >&6; }
-if ${gl_cv_warn_CFLAGS__Wall+:} false; then :
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
   $as_echo_n "(cached) " >&6
 else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
-  gl_save_compiler_FLAGS="$CFLAGS"
-  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wall"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS__Wall=yes
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
 else
-  gl_cv_warn_CFLAGS__Wall=no
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  CFLAGS="$gl_save_compiler_FLAGS"
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Wall" >&5
-$as_echo "$gl_cv_warn_CFLAGS__Wall" >&6; }
-if test "x$gl_cv_warn_CFLAGS__Wall" = xyes; then :
-  as_fn_append WARN_CFLAGS " -Wall"
+  if test "x$ac_ct_RANLIB" = x; then
+    RANLIB=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    RANLIB=$ac_ct_RANLIB
+  fi
+else
+  RANLIB="$ac_cv_prog_RANLIB"
 fi
 
 
-if test x${gl_unknown_warnings_are_errors+set} = x; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
-$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
-if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
 
-  gl_save_compiler_FLAGS="$CFLAGS"
-  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
 
-int
-main ()
-{
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if ${ac_cv_path_GREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$GREP"; then
+  ac_path_GREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in grep ggrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_GREP" || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+  # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'GREP' >> "conftest.nl"
+    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_GREP="$ac_path_GREP"
+      ac_path_GREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
+      $ac_path_GREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_GREP"; then
+    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
 else
-  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
+  ac_cv_path_GREP=$GREP
 fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  CFLAGS="$gl_save_compiler_FLAGS"
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
-$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
-if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
-  gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if ${ac_cv_path_EGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  gl_unknown_warnings_are_errors=
-fi
+  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+   then ac_cv_path_EGREP="$GREP -E"
+   else
+     if test -z "$EGREP"; then
+  ac_path_EGREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in egrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_EGREP" || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+  # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'EGREP' >> "conftest.nl"
+    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_EGREP="$ac_path_EGREP"
+      ac_path_EGREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
 
+      $ac_path_EGREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_EGREP"; then
+    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_EGREP=$EGREP
+fi
 
+   fi
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Wempty-body" >&5
-$as_echo_n "checking whether $CC handles -Wempty-body... " >&6; }
-if ${gl_cv_warn_CFLAGS__Wempty_body+:} false; then :
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if ${ac_cv_header_stdc+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-
-  gl_save_compiler_FLAGS="$CFLAGS"
-  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wempty-body"
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
 
 int
 main ()
@@ -4977,189 +5094,147 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS__Wempty_body=yes
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_header_stdc=yes
 else
-  gl_cv_warn_CFLAGS__Wempty_body=no
+  ac_cv_header_stdc=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  CFLAGS="$gl_save_compiler_FLAGS"
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Wempty_body" >&5
-$as_echo "$gl_cv_warn_CFLAGS__Wempty_body" >&6; }
-if test "x$gl_cv_warn_CFLAGS__Wempty_body" = xyes; then :
-  as_fn_append WARN_CFLAGS " -Wempty-body"
-fi
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <string.h>
 
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then :
 
-if test x${gl_unknown_warnings_are_errors+set} = x; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
-$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
-if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
-  $as_echo_n "(cached) " >&6
 else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
 
-  gl_save_compiler_FLAGS="$CFLAGS"
-  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
+#include <stdlib.h>
 
-int
-main ()
-{
-
-  ;
-  return 0;
-}
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
-else
-  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  CFLAGS="$gl_save_compiler_FLAGS"
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then :
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
-$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
-if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
-  gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
 else
-  gl_unknown_warnings_are_errors=
+  ac_cv_header_stdc=no
 fi
-
+rm -f conftest*
 
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Wformat-security" >&5
-$as_echo_n "checking whether $CC handles -Wformat-security... " >&6; }
-if ${gl_cv_warn_CFLAGS__Wformat_security+:} false; then :
-  $as_echo_n "(cached) " >&6
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then :
+  :
 else
-
-  gl_save_compiler_FLAGS="$CFLAGS"
-  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wformat-security"
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+                  (('a' <= (c) && (c) <= 'i') \
+                    || ('j' <= (c) && (c) <= 'r') \
+                    || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
 
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
 int
 main ()
 {
-
-  ;
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+       || toupper (i) != TOUPPER (i))
+      return 2;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS__Wformat_security=yes
+if ac_fn_c_try_run "$LINENO"; then :
+
 else
-  gl_cv_warn_CFLAGS__Wformat_security=no
+  ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  CFLAGS="$gl_save_compiler_FLAGS"
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Wformat_security" >&5
-$as_echo "$gl_cv_warn_CFLAGS__Wformat_security" >&6; }
-if test "x$gl_cv_warn_CFLAGS__Wformat_security" = xyes; then :
-  as_fn_append WARN_CFLAGS " -Wformat-security"
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
 
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
 
-if test x${gl_unknown_warnings_are_errors+set} = x; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
-$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
-if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-  gl_save_compiler_FLAGS="$CFLAGS"
-  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
+fi
 
-  ;
-  return 0;
-}
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+                 inttypes.h stdint.h unistd.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
-else
-  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  CFLAGS="$gl_save_compiler_FLAGS"
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
-$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
-if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
-  gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+
+done
+
+
+
+  ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default"
+if test "x$ac_cv_header_minix_config_h" = xyes; then :
+  MINIX=yes
 else
-  gl_unknown_warnings_are_errors=
+  MINIX=
 fi
 
 
-fi
+  if test "$MINIX" = yes; then
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Wignored-qualifiers" >&5
-$as_echo_n "checking whether $CC handles -Wignored-qualifiers... " >&6; }
-if ${gl_cv_warn_CFLAGS__Wignored_qualifiers+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h
 
-  gl_save_compiler_FLAGS="$CFLAGS"
-  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wignored-qualifiers"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
 
-int
-main ()
-{
+$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS__Wignored_qualifiers=yes
-else
-  gl_cv_warn_CFLAGS__Wignored_qualifiers=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  CFLAGS="$gl_save_compiler_FLAGS"
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Wignored_qualifiers" >&5
-$as_echo "$gl_cv_warn_CFLAGS__Wignored_qualifiers" >&6; }
-if test "x$gl_cv_warn_CFLAGS__Wignored_qualifiers" = xyes; then :
-  as_fn_append WARN_CFLAGS " -Wignored-qualifiers"
-fi
+$as_echo "#define _MINIX 1" >>confdefs.h
 
+  fi
 
-if test x${gl_unknown_warnings_are_errors+set} = x; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
-$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
-if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5
+$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; }
+if ${ac_cv_safe_to_define___extensions__+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-
-  gl_save_compiler_FLAGS="$CFLAGS"
-  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
+#         define __EXTENSIONS__ 1
+          $ac_includes_default
 int
 main ()
 {
@@ -5168,885 +5243,823 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_safe_to_define___extensions__=yes
 else
-  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  CFLAGS="$gl_save_compiler_FLAGS"
-
+  ac_cv_safe_to_define___extensions__=no
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
-$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
-if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
-  gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
-else
-  gl_unknown_warnings_are_errors=
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5
+$as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
+  test $ac_cv_safe_to_define___extensions__ = yes &&
+    $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h
 
+  $as_echo "#define _ALL_SOURCE 1" >>confdefs.h
 
-fi
+  $as_echo "#define _GNU_SOURCE 1" >>confdefs.h
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Wimplicit-fallthrough=5" >&5
-$as_echo_n "checking whether $CC handles -Wimplicit-fallthrough=5... " >&6; }
-if ${gl_cv_warn_CFLAGS__Wimplicit_fallthrough_5+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+  $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h
 
-  gl_save_compiler_FLAGS="$CFLAGS"
-  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wimplicit-fallthrough=5"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+  $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h
 
-int
-main ()
-{
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS__Wimplicit_fallthrough_5=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
+$as_echo_n "checking for a sed that does not truncate output... " >&6; }
+if ${ac_cv_path_SED+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  gl_cv_warn_CFLAGS__Wimplicit_fallthrough_5=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  CFLAGS="$gl_save_compiler_FLAGS"
+            ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+     for ac_i in 1 2 3 4 5 6 7; do
+       ac_script="$ac_script$as_nl$ac_script"
+     done
+     echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
+     { ac_script=; unset ac_script;}
+     if test -z "$SED"; then
+  ac_path_SED_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in sed gsed; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_SED" || continue
+# Check for GNU ac_path_SED and select it if it is found.
+  # Check for GNU $ac_path_SED
+case `"$ac_path_SED" --version 2>&1` in
+*GNU*)
+  ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo '' >> "conftest.nl"
+    "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_SED_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_SED="$ac_path_SED"
+      ac_path_SED_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
 
+      $ac_path_SED_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_SED"; then
+    as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
+  fi
+else
+  ac_cv_path_SED=$SED
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Wimplicit_fallthrough_5" >&5
-$as_echo "$gl_cv_warn_CFLAGS__Wimplicit_fallthrough_5" >&6; }
-if test "x$gl_cv_warn_CFLAGS__Wimplicit_fallthrough_5" = xyes; then :
-  as_fn_append WARN_CFLAGS " -Wimplicit-fallthrough=5"
+
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
+$as_echo "$ac_cv_path_SED" >&6; }
+ SED="$ac_cv_path_SED"
+  rm -f conftest.sed
 
 
-if test x${gl_unknown_warnings_are_errors+set} = x; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
-$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
-if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
 
-  gl_save_compiler_FLAGS="$CFLAGS"
-  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
 
-int
-main ()
-{
+       # allow to override gcov location
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
+# Check whether --with-gcov was given.
+if test "${with_gcov+set}" = set; then :
+  withval=$with_gcov; _AX_CODE_COVERAGE_GCOV_PROG_WITH=$with_gcov
 else
-  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
+  _AX_CODE_COVERAGE_GCOV_PROG_WITH=gcov
 fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  CFLAGS="$gl_save_compiler_FLAGS"
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
-$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
-if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
-  gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build with code coverage support" >&5
+$as_echo_n "checking whether to build with code coverage support... " >&6; }
+       # Check whether --enable-code-coverage was given.
+if test "${enable_code_coverage+set}" = set; then :
+  enableval=$enable_code_coverage;
 else
-  gl_unknown_warnings_are_errors=
+  enable_code_coverage=no
 fi
 
 
+        if test x$enable_code_coverage = xyes; then
+  CODE_COVERAGE_ENABLED_TRUE=
+  CODE_COVERAGE_ENABLED_FALSE='#'
+else
+  CODE_COVERAGE_ENABLED_TRUE='#'
+  CODE_COVERAGE_ENABLED_FALSE=
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Winit-self" >&5
-$as_echo_n "checking whether $CC handles -Winit-self... " >&6; }
-if ${gl_cv_warn_CFLAGS__Winit_self+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+       CODE_COVERAGE_ENABLED=$enable_code_coverage
 
-  gl_save_compiler_FLAGS="$CFLAGS"
-  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Winit-self"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_code_coverage" >&5
+$as_echo "$enable_code_coverage" >&6; }
 
-int
-main ()
-{
+       if  test "$enable_code_coverage" = "yes" ; then :
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS__Winit_self=yes
+               # check for gcov
+               if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}$_AX_CODE_COVERAGE_GCOV_PROG_WITH", so it can be a program name with args.
+set dummy ${ac_tool_prefix}$_AX_CODE_COVERAGE_GCOV_PROG_WITH; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_GCOV+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  gl_cv_warn_CFLAGS__Winit_self=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  CFLAGS="$gl_save_compiler_FLAGS"
+  if test -n "$GCOV"; then
+  ac_cv_prog_GCOV="$GCOV" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_GCOV="${ac_tool_prefix}$_AX_CODE_COVERAGE_GCOV_PROG_WITH"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Winit_self" >&5
-$as_echo "$gl_cv_warn_CFLAGS__Winit_self" >&6; }
-if test "x$gl_cv_warn_CFLAGS__Winit_self" = xyes; then :
-  as_fn_append WARN_CFLAGS " -Winit-self"
+fi
+GCOV=$ac_cv_prog_GCOV
+if test -n "$GCOV"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GCOV" >&5
+$as_echo "$GCOV" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
-if test x${gl_unknown_warnings_are_errors+set} = x; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
-$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
-if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
+fi
+if test -z "$ac_cv_prog_GCOV"; then
+  ac_ct_GCOV=$GCOV
+  # Extract the first word of "$_AX_CODE_COVERAGE_GCOV_PROG_WITH", so it can be a program name with args.
+set dummy $_AX_CODE_COVERAGE_GCOV_PROG_WITH; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_GCOV+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-
-  gl_save_compiler_FLAGS="$CFLAGS"
-  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
+  if test -n "$ac_ct_GCOV"; then
+  ac_cv_prog_ac_ct_GCOV="$ac_ct_GCOV" # Let the user override the test.
 else
-  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  CFLAGS="$gl_save_compiler_FLAGS"
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_GCOV="$_AX_CODE_COVERAGE_GCOV_PROG_WITH"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
-$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
-if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
-  gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+fi
+ac_ct_GCOV=$ac_cv_prog_ac_ct_GCOV
+if test -n "$ac_ct_GCOV"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_GCOV" >&5
+$as_echo "$ac_ct_GCOV" >&6; }
 else
-  gl_unknown_warnings_are_errors=
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
-
+  if test "x$ac_ct_GCOV" = x; then
+    GCOV=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    GCOV=$ac_ct_GCOV
+  fi
+else
+  GCOV="$ac_cv_prog_GCOV"
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Winitializer-overrides" >&5
-$as_echo_n "checking whether $CC handles -Winitializer-overrides... " >&6; }
-if ${gl_cv_warn_CFLAGS__Winitializer_overrides+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+               if test "X$GCOV" = "X:"; then :
+  as_fn_error $? "gcov is needed to do coverage" "$LINENO" 5
+fi
 
-  gl_save_compiler_FLAGS="$CFLAGS"
-  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Winitializer-overrides"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
 
-int
-main ()
-{
+                               if  test "$GCC" = "no" ; then :
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS__Winitializer_overrides=yes
-else
-  gl_cv_warn_CFLAGS__Winitializer_overrides=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  CFLAGS="$gl_save_compiler_FLAGS"
+                       as_fn_error $? "not compiling with gcc, which is required for gcov code coverage" "$LINENO" 5
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Winitializer_overrides" >&5
-$as_echo "$gl_cv_warn_CFLAGS__Winitializer_overrides" >&6; }
-if test "x$gl_cv_warn_CFLAGS__Winitializer_overrides" = xyes; then :
-  as_fn_append WARN_CFLAGS " -Winitializer-overrides"
-fi
 
-
-if test x${gl_unknown_warnings_are_errors+set} = x; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
-$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
-if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
+               # Extract the first word of "lcov", so it can be a program name with args.
+set dummy lcov; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_LCOV+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-
-  gl_save_compiler_FLAGS="$CFLAGS"
-  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
+  if test -n "$LCOV"; then
+  ac_cv_prog_LCOV="$LCOV" # Let the user override the test.
 else
-  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  CFLAGS="$gl_save_compiler_FLAGS"
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_LCOV="lcov"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
-$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
-if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
-  gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+fi
+LCOV=$ac_cv_prog_LCOV
+if test -n "$LCOV"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LCOV" >&5
+$as_echo "$LCOV" >&6; }
 else
-  gl_unknown_warnings_are_errors=
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Wlogical-op" >&5
-$as_echo_n "checking whether $CC handles -Wlogical-op... " >&6; }
-if ${gl_cv_warn_CFLAGS__Wlogical_op+:} false; then :
+               # Extract the first word of "genhtml", so it can be a program name with args.
+set dummy genhtml; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_GENHTML+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-
-  gl_save_compiler_FLAGS="$CFLAGS"
-  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wlogical-op"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS__Wlogical_op=yes
-else
-  gl_cv_warn_CFLAGS__Wlogical_op=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  CFLAGS="$gl_save_compiler_FLAGS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Wlogical_op" >&5
-$as_echo "$gl_cv_warn_CFLAGS__Wlogical_op" >&6; }
-if test "x$gl_cv_warn_CFLAGS__Wlogical_op" = xyes; then :
-  as_fn_append WARN_CFLAGS " -Wlogical-op"
-fi
-
-
-if test x${gl_unknown_warnings_are_errors+set} = x; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
-$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
-if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
-  $as_echo_n "(cached) " >&6
+  if test -n "$GENHTML"; then
+  ac_cv_prog_GENHTML="$GENHTML" # Let the user override the test.
 else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_GENHTML="genhtml"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
-  gl_save_compiler_FLAGS="$CFLAGS"
-  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
-else
-  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  CFLAGS="$gl_save_compiler_FLAGS"
-
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
-$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
-if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
-  gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+GENHTML=$ac_cv_prog_GENHTML
+if test -n "$GENHTML"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GENHTML" >&5
+$as_echo "$GENHTML" >&6; }
 else
-  gl_unknown_warnings_are_errors=
-fi
-
-
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Wmissing-parameter-type" >&5
-$as_echo_n "checking whether $CC handles -Wmissing-parameter-type... " >&6; }
-if ${gl_cv_warn_CFLAGS__Wmissing_parameter_type+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
 
-  gl_save_compiler_FLAGS="$CFLAGS"
-  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wmissing-parameter-type"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
 
-int
-main ()
-{
+               if  test -z "$LCOV" ; then :
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS__Wmissing_parameter_type=yes
-else
-  gl_cv_warn_CFLAGS__Wmissing_parameter_type=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  CFLAGS="$gl_save_compiler_FLAGS"
+                       as_fn_error $? "To enable code coverage reporting you must have lcov installed" "$LINENO" 5
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Wmissing_parameter_type" >&5
-$as_echo "$gl_cv_warn_CFLAGS__Wmissing_parameter_type" >&6; }
-if test "x$gl_cv_warn_CFLAGS__Wmissing_parameter_type" = xyes; then :
-  as_fn_append WARN_CFLAGS " -Wmissing-parameter-type"
-fi
-
 
-if test x${gl_unknown_warnings_are_errors+set} = x; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
-$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
-if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-  gl_save_compiler_FLAGS="$CFLAGS"
-  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
+               if  test -z "$GENHTML" ; then :
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
-else
-  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  CFLAGS="$gl_save_compiler_FLAGS"
+                       as_fn_error $? "Could not find genhtml from the lcov package" "$LINENO" 5
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
-$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
-if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
-  gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
-else
-  gl_unknown_warnings_are_errors=
-fi
 
+                                               CODE_COVERAGE_CPPFLAGS="-DENABLE_COVERAGE_GCOV -DNDEBUG"
+               CODE_COVERAGE_CFLAGS="-O0 -g -fprofile-arcs -ftest-coverage"
+               CODE_COVERAGE_CXXFLAGS="-O0 -g -fprofile-arcs -ftest-coverage"
+               CODE_COVERAGE_LIBS="-lgcov"
+               CODE_COVERAGE_LDFLAGS="$CODE_COVERAGE_LIBS"
 
-fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Wnested-externs" >&5
-$as_echo_n "checking whether $CC handles -Wnested-externs... " >&6; }
-if ${gl_cv_warn_CFLAGS__Wnested_externs+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
 
-  gl_save_compiler_FLAGS="$CFLAGS"
-  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wnested-externs"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
 
-int
-main ()
-{
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS__Wnested_externs=yes
-else
-  gl_cv_warn_CFLAGS__Wnested_externs=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  CFLAGS="$gl_save_compiler_FLAGS"
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Wnested_externs" >&5
-$as_echo "$gl_cv_warn_CFLAGS__Wnested_externs" >&6; }
-if test "x$gl_cv_warn_CFLAGS__Wnested_externs" = xyes; then :
-  as_fn_append WARN_CFLAGS " -Wnested-externs"
-fi
 
+               CODE_COVERAGE_RULES_CHECK='
+       -$(A''M_V_at)$(MAKE) $(AM_MAKEFLAGS) -k check
+       $(A''M_V_at)$(MAKE) $(AM_MAKEFLAGS) code-coverage-capture
+'
+               CODE_COVERAGE_RULES_CAPTURE='
+       $(code_coverage_v_lcov_cap)$(LCOV) $(code_coverage_quiet) $(addprefix --directory ,$(CODE_COVERAGE_DIRECTORY)) --capture --output-file "$(CODE_COVERAGE_OUTPUT_FILE).tmp" --test-name "$(call code_coverage_sanitize,$(PACKAGE_NAME)-$(PACKAGE_VERSION))" --no-checksum --compat-libtool $(CODE_COVERAGE_LCOV_SHOPTS) $(CODE_COVERAGE_LCOV_OPTIONS)
+       $(code_coverage_v_lcov_ign)$(LCOV) $(code_coverage_quiet) $(addprefix --directory ,$(CODE_COVERAGE_DIRECTORY)) --remove "$(CODE_COVERAGE_OUTPUT_FILE).tmp" "/tmp/*" $(CODE_COVERAGE_IGNORE_PATTERN) --output-file "$(CODE_COVERAGE_OUTPUT_FILE)" $(CODE_COVERAGE_LCOV_SHOPTS) $(CODE_COVERAGE_LCOV_RMOPTS)
+       -@rm -f $(CODE_COVERAGE_OUTPUT_FILE).tmp
+       $(code_coverage_v_genhtml)LANG=C $(GENHTML) $(code_coverage_quiet) $(addprefix --prefix ,$(CODE_COVERAGE_DIRECTORY)) --output-directory "$(CODE_COVERAGE_OUTPUT_DIRECTORY)" --title "$(PACKAGE_NAME)-$(PACKAGE_VERSION) Code Coverage" --legend --show-details "$(CODE_COVERAGE_OUTPUT_FILE)" $(CODE_COVERAGE_GENHTML_OPTIONS)
+       @echo "file://$(abs_builddir)/$(CODE_COVERAGE_OUTPUT_DIRECTORY)/index.html"
+'
+               CODE_COVERAGE_RULES_CLEAN='
+clean: code-coverage-clean
+distclean: code-coverage-clean
+code-coverage-clean:
+       -$(LCOV) --directory $(top_builddir) -z
+       -rm -rf $(CODE_COVERAGE_OUTPUT_FILE) $(CODE_COVERAGE_OUTPUT_FILE).tmp $(CODE_COVERAGE_OUTPUT_DIRECTORY)
+       -find . \( -name "*.gcda" -o -name "*.gcno" -o -name "*.gcov" \) -delete
+'
 
-if test x${gl_unknown_warnings_are_errors+set} = x; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
-$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
-if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
-  $as_echo_n "(cached) " >&6
 else
 
-  gl_save_compiler_FLAGS="$CFLAGS"
-  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
+               CODE_COVERAGE_RULES_CHECK='
+       @echo "Need to reconfigure with --enable-code-coverage"
+'
+               CODE_COVERAGE_RULES_CAPTURE="$CODE_COVERAGE_RULES_CHECK"
+               CODE_COVERAGE_RULES_CLEAN=''
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
-else
-  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  CFLAGS="$gl_save_compiler_FLAGS"
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
-$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
-if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
-  gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
-else
-  gl_unknown_warnings_are_errors=
-fi
+CODE_COVERAGE_RULES='
+# Code coverage
+#
+# Optional:
+#  - CODE_COVERAGE_DIRECTORY: Top-level directory for code coverage reporting.
+#    Multiple directories may be specified, separated by whitespace.
+#    (Default: $(top_builddir))
+#  - CODE_COVERAGE_OUTPUT_FILE: Filename and path for the .info file generated
+#    by lcov for code coverage. (Default:
+#    $(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage.info)
+#  - CODE_COVERAGE_OUTPUT_DIRECTORY: Directory for generated code coverage
+#    reports to be created. (Default:
+#    $(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage)
+#  - CODE_COVERAGE_BRANCH_COVERAGE: Set to 1 to enforce branch coverage,
+#    set to 0 to disable it and leave empty to stay with the default.
+#    (Default: empty)
+#  - CODE_COVERAGE_LCOV_SHOPTS_DEFAULT: Extra options shared between both lcov
+#    instances. (Default: based on $CODE_COVERAGE_BRANCH_COVERAGE)
+#  - CODE_COVERAGE_LCOV_SHOPTS: Extra options to shared between both lcov
+#    instances. (Default: $CODE_COVERAGE_LCOV_SHOPTS_DEFAULT)
+#  - CODE_COVERAGE_LCOV_OPTIONS_GCOVPATH: --gcov-tool pathtogcov
+#  - CODE_COVERAGE_LCOV_OPTIONS_DEFAULT: Extra options to pass to the
+#    collecting lcov instance. (Default: $CODE_COVERAGE_LCOV_OPTIONS_GCOVPATH)
+#  - CODE_COVERAGE_LCOV_OPTIONS: Extra options to pass to the collecting lcov
+#    instance. (Default: $CODE_COVERAGE_LCOV_OPTIONS_DEFAULT)
+#  - CODE_COVERAGE_LCOV_RMOPTS_DEFAULT: Extra options to pass to the filtering
+#    lcov instance. (Default: empty)
+#  - CODE_COVERAGE_LCOV_RMOPTS: Extra options to pass to the filtering lcov
+#    instance. (Default: $CODE_COVERAGE_LCOV_RMOPTS_DEFAULT)
+#  - CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT: Extra options to pass to the
+#    genhtml instance. (Default: based on $CODE_COVERAGE_BRANCH_COVERAGE)
+#  - CODE_COVERAGE_GENHTML_OPTIONS: Extra options to pass to the genhtml
+#    instance. (Default: $CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT)
+#  - CODE_COVERAGE_IGNORE_PATTERN: Extra glob pattern of files to ignore
+#
+# The generated report will be titled using the $(PACKAGE_NAME) and
+# $(PACKAGE_VERSION). In order to add the current git hash to the title,
+# use the git-version-gen script, available online.
 
+# Optional variables
+CODE_COVERAGE_DIRECTORY ?= $(top_builddir)
+CODE_COVERAGE_OUTPUT_FILE ?= $(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage.info
+CODE_COVERAGE_OUTPUT_DIRECTORY ?= $(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage
+CODE_COVERAGE_BRANCH_COVERAGE ?=
+CODE_COVERAGE_LCOV_SHOPTS_DEFAULT ?= $(if $(CODE_COVERAGE_BRANCH_COVERAGE),\
+--rc lcov_branch_coverage=$(CODE_COVERAGE_BRANCH_COVERAGE))
+CODE_COVERAGE_LCOV_SHOPTS ?= $(CODE_COVERAGE_LCOV_SHOPTS_DEFAULT)
+CODE_COVERAGE_LCOV_OPTIONS_GCOVPATH ?= --gcov-tool "$(GCOV)"
+CODE_COVERAGE_LCOV_OPTIONS_DEFAULT ?= $(CODE_COVERAGE_LCOV_OPTIONS_GCOVPATH)
+CODE_COVERAGE_LCOV_OPTIONS ?= $(CODE_COVERAGE_LCOV_OPTIONS_DEFAULT)
+CODE_COVERAGE_LCOV_RMOPTS_DEFAULT ?=
+CODE_COVERAGE_LCOV_RMOPTS ?= $(CODE_COVERAGE_LCOV_RMOPTS_DEFAULT)
+CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT ?=\
+$(if $(CODE_COVERAGE_BRANCH_COVERAGE),\
+--rc genhtml_branch_coverage=$(CODE_COVERAGE_BRANCH_COVERAGE))
+CODE_COVERAGE_GENHTML_OPTIONS ?= $(CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT)
+CODE_COVERAGE_IGNORE_PATTERN ?=
 
-fi
+code_coverage_v_lcov_cap = $(code_coverage_v_lcov_cap_$(V))
+code_coverage_v_lcov_cap_ = $(code_coverage_v_lcov_cap_$(AM_DEFAULT_VERBOSITY))
+code_coverage_v_lcov_cap_0 = @echo "  LCOV   --capture"\
+ $(CODE_COVERAGE_OUTPUT_FILE);
+code_coverage_v_lcov_ign = $(code_coverage_v_lcov_ign_$(V))
+code_coverage_v_lcov_ign_ = $(code_coverage_v_lcov_ign_$(AM_DEFAULT_VERBOSITY))
+code_coverage_v_lcov_ign_0 = @echo "  LCOV   --remove /tmp/*"\
+ $(CODE_COVERAGE_IGNORE_PATTERN);
+code_coverage_v_genhtml = $(code_coverage_v_genhtml_$(V))
+code_coverage_v_genhtml_ = $(code_coverage_v_genhtml_$(AM_DEFAULT_VERBOSITY))
+code_coverage_v_genhtml_0 = @echo "  GEN   " $(CODE_COVERAGE_OUTPUT_DIRECTORY);
+code_coverage_quiet = $(code_coverage_quiet_$(V))
+code_coverage_quiet_ = $(code_coverage_quiet_$(AM_DEFAULT_VERBOSITY))
+code_coverage_quiet_0 = --quiet
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Wold-style-declaration" >&5
-$as_echo_n "checking whether $CC handles -Wold-style-declaration... " >&6; }
-if ${gl_cv_warn_CFLAGS__Wold_style_declaration+:} false; then :
+# sanitizes the test-name: replaces with underscores: dashes and dots
+code_coverage_sanitize = $(subst -,_,$(subst .,_,$(1)))
+
+# Use recursive makes in order to ignore errors during check
+check-code-coverage:'"$CODE_COVERAGE_RULES_CHECK"'
+
+# Capture code coverage data
+code-coverage-capture: code-coverage-capture-hook'"$CODE_COVERAGE_RULES_CAPTURE"'
+
+# Hook rule executed before code-coverage-capture, overridable by the user
+code-coverage-capture-hook:
+
+'"$CODE_COVERAGE_RULES_CLEAN"'
+
+GITIGNOREFILES ?=
+GITIGNOREFILES += $(CODE_COVERAGE_OUTPUT_FILE) $(CODE_COVERAGE_OUTPUT_DIRECTORY)
+
+A''M_DISTCHECK_CONFIGURE_FLAGS ?=
+A''M_DISTCHECK_CONFIGURE_FLAGS += --disable-code-coverage
+
+.PHONY: check-code-coverage code-coverage-capture code-coverage-capture-hook code-coverage-clean
+'
+
+
+
+
+
+
+$as_echo "#define COPYRIGHT_YEAR \"2020\"" >>confdefs.h
+
+COPYRIGHT_YEAR=2020
+
+
+
+$as_echo "#define MANPAGE_DATE \"2020-09-23\"" >>confdefs.h
+
+MANPAGE_DATE=2020-09-23
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
+$as_echo_n "checking whether byte ordering is bigendian... " >&6; }
+if ${ac_cv_c_bigendian+:} false; then :
   $as_echo_n "(cached) " >&6
 else
+  ac_cv_c_bigendian=unknown
+    # See if we're dealing with a universal compiler.
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifndef __APPLE_CC__
+              not a universal capable compiler
+            #endif
+            typedef int dummy;
 
-  gl_save_compiler_FLAGS="$CFLAGS"
-  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wold-style-declaration"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+       # Check for potential -arch flags.  It is not universal unless
+       # there are at least two -arch flags with different values.
+       ac_arch=
+       ac_prev=
+       for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do
+        if test -n "$ac_prev"; then
+          case $ac_word in
+            i?86 | x86_64 | ppc | ppc64)
+              if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then
+                ac_arch=$ac_word
+              else
+                ac_cv_c_bigendian=universal
+                break
+              fi
+              ;;
+          esac
+          ac_prev=
+        elif test "x$ac_word" = "x-arch"; then
+          ac_prev=arch
+        fi
+       done
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    if test $ac_cv_c_bigendian = unknown; then
+      # See if sys/param.h defines the BYTE_ORDER macro.
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
+#include <sys/types.h>
+            #include <sys/param.h>
 
 int
 main ()
 {
+#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \
+                    && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \
+                    && LITTLE_ENDIAN)
+             bogus endian macros
+            #endif
 
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS__Wold_style_declaration=yes
-else
-  gl_cv_warn_CFLAGS__Wold_style_declaration=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  CFLAGS="$gl_save_compiler_FLAGS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Wold_style_declaration" >&5
-$as_echo "$gl_cv_warn_CFLAGS__Wold_style_declaration" >&6; }
-if test "x$gl_cv_warn_CFLAGS__Wold_style_declaration" = xyes; then :
-  as_fn_append WARN_CFLAGS " -Wold-style-declaration"
-fi
-
-
-if test x${gl_unknown_warnings_are_errors+set} = x; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
-$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
-if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-  gl_save_compiler_FLAGS="$CFLAGS"
-  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+if ac_fn_c_try_compile "$LINENO"; then :
+  # It does; now see whether it defined to BIG_ENDIAN or not.
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
+#include <sys/types.h>
+               #include <sys/param.h>
 
 int
 main ()
 {
+#if BYTE_ORDER != BIG_ENDIAN
+                not big endian
+               #endif
 
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
-else
-  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  CFLAGS="$gl_save_compiler_FLAGS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
-$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
-if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
-  gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_bigendian=yes
 else
-  gl_unknown_warnings_are_errors=
+  ac_cv_c_bigendian=no
 fi
-
-
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    fi
+    if test $ac_cv_c_bigendian = unknown; then
+      # See if <limits.h> defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris).
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <limits.h>
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Wold-style-definition" >&5
-$as_echo_n "checking whether $CC handles -Wold-style-definition... " >&6; }
-if ${gl_cv_warn_CFLAGS__Wold_style_definition+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+int
+main ()
+{
+#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN)
+             bogus endian macros
+            #endif
 
-  gl_save_compiler_FLAGS="$CFLAGS"
-  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wold-style-definition"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  # It does; now see whether it defined to _BIG_ENDIAN or not.
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
+#include <limits.h>
 
 int
 main ()
 {
+#ifndef _BIG_ENDIAN
+                not big endian
+               #endif
 
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS__Wold_style_definition=yes
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_bigendian=yes
 else
-  gl_cv_warn_CFLAGS__Wold_style_definition=no
+  ac_cv_c_bigendian=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  CFLAGS="$gl_save_compiler_FLAGS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Wold_style_definition" >&5
-$as_echo "$gl_cv_warn_CFLAGS__Wold_style_definition" >&6; }
-if test "x$gl_cv_warn_CFLAGS__Wold_style_definition" = xyes; then :
-  as_fn_append WARN_CFLAGS " -Wold-style-definition"
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-
-
-if test x${gl_unknown_warnings_are_errors+set} = x; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
-$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
-if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-  gl_save_compiler_FLAGS="$CFLAGS"
-  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    fi
+    if test $ac_cv_c_bigendian = unknown; then
+      # Compile a test program.
+      if test "$cross_compiling" = yes; then :
+  # Try to guess by grepping values from an object file.
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
+unsigned short int ascii_mm[] =
+                 { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
+               unsigned short int ascii_ii[] =
+                 { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
+               int use_ascii (int i) {
+                 return ascii_mm[i] + ascii_ii[i];
+               }
+               unsigned short int ebcdic_ii[] =
+                 { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
+               unsigned short int ebcdic_mm[] =
+                 { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
+               int use_ebcdic (int i) {
+                 return ebcdic_mm[i] + ebcdic_ii[i];
+               }
+               extern int foo;
 
 int
 main ()
 {
-
+return use_ascii (foo) == use_ebcdic (foo);
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
-else
-  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  CFLAGS="$gl_save_compiler_FLAGS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
-$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
-if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
-  gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
-else
-  gl_unknown_warnings_are_errors=
-fi
-
-
+if ac_fn_c_try_compile "$LINENO"; then :
+  if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then
+             ac_cv_c_bigendian=yes
+           fi
+           if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then
+             if test "$ac_cv_c_bigendian" = unknown; then
+               ac_cv_c_bigendian=no
+             else
+               # finding both strings is unlikely to happen, but who knows?
+               ac_cv_c_bigendian=unknown
+             fi
+           fi
 fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Woverride-init" >&5
-$as_echo_n "checking whether $CC handles -Woverride-init... " >&6; }
-if ${gl_cv_warn_CFLAGS__Woverride_init+:} false; then :
-  $as_echo_n "(cached) " >&6
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 else
-
-  gl_save_compiler_FLAGS="$CFLAGS"
-  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Woverride-init"
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-
+$ac_includes_default
 int
 main ()
 {
 
+            /* Are we little or big endian?  From Harbison&Steele.  */
+            union
+            {
+              long int l;
+              char c[sizeof (long int)];
+            } u;
+            u.l = 1;
+            return u.c[sizeof (long int) - 1] == 1;
+
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS__Woverride_init=yes
+if ac_fn_c_try_run "$LINENO"; then :
+  ac_cv_c_bigendian=no
 else
-  gl_cv_warn_CFLAGS__Woverride_init=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  CFLAGS="$gl_save_compiler_FLAGS"
-
+  ac_cv_c_bigendian=yes
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Woverride_init" >&5
-$as_echo "$gl_cv_warn_CFLAGS__Woverride_init" >&6; }
-if test "x$gl_cv_warn_CFLAGS__Woverride_init" = xyes; then :
-  as_fn_append WARN_CFLAGS " -Woverride-init"
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
 
+    fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5
+$as_echo "$ac_cv_c_bigendian" >&6; }
+ case $ac_cv_c_bigendian in #(
+   yes)
+     $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h
+;; #(
+   no)
+      ;; #(
+   universal)
 
-if test x${gl_unknown_warnings_are_errors+set} = x; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
-$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
-if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
 
-  gl_save_compiler_FLAGS="$CFLAGS"
-  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+     ;; #(
+   *)
+     as_fn_error $? "unknown endianness
+ presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;;
+ esac
 
-int
-main ()
-{
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
-else
-  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  CFLAGS="$gl_save_compiler_FLAGS"
+arch_enable_Werror=yes
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
-$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
-if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
-  gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
-else
-  gl_unknown_warnings_are_errors=
-fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for supported architecture" >&5
+$as_echo_n "checking for supported architecture... " >&6; }
+arch_m32=
+arch_mx32=
+cc_flags_m32=-m32
+cc_flags_mx32=-mx32
+case "$host_cpu" in
+aarch64*)
+       arch=aarch64
+       arch_m32=arm
+       cc_flags_m32=
 
+$as_echo "#define AARCH64 1" >>confdefs.h
 
-fi
+       ;;
+alpha*)
+       arch=alpha
+       arch_enable_Werror=no
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Wsign-compare" >&5
-$as_echo_n "checking whether $CC handles -Wsign-compare... " >&6; }
-if ${gl_cv_warn_CFLAGS__Wsign_compare+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+$as_echo "#define ALPHA 1" >>confdefs.h
 
-  gl_save_compiler_FLAGS="$CFLAGS"
-  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wsign-compare"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+       ;;
+arc*)
+       arch=arc
 
-int
-main ()
-{
+$as_echo "#define ARC 1" >>confdefs.h
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS__Wsign_compare=yes
-else
-  gl_cv_warn_CFLAGS__Wsign_compare=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  CFLAGS="$gl_save_compiler_FLAGS"
+       ;;
+arm*)
+       arch=arm
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Wsign_compare" >&5
-$as_echo "$gl_cv_warn_CFLAGS__Wsign_compare" >&6; }
-if test "x$gl_cv_warn_CFLAGS__Wsign_compare" = xyes; then :
-  as_fn_append WARN_CFLAGS " -Wsign-compare"
-fi
+$as_echo "#define ARM 1" >>confdefs.h
 
+       ;;
+avr32*)
+       arch=avr32
 
-if test x${gl_unknown_warnings_are_errors+set} = x; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
-$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
-if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+$as_echo "#define AVR32 1" >>confdefs.h
 
-  gl_save_compiler_FLAGS="$CFLAGS"
-  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+       ;;
+bfin)
+       arch=bfin
+       arch_enable_Werror=no
 
-int
-main ()
-{
+$as_echo "#define BFIN 1" >>confdefs.h
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
-else
-  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  CFLAGS="$gl_save_compiler_FLAGS"
+       ;;
+csky*)
+       arch=csky
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
-$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
-if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
-  gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
-else
-  gl_unknown_warnings_are_errors=
-fi
+$as_echo "#define CSKY 1" >>confdefs.h
 
+       ;;
+hppa*|parisc*)
+       arch=hppa
 
-fi
+$as_echo "#define HPPA 1" >>confdefs.h
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Wtype-limits" >&5
-$as_echo_n "checking whether $CC handles -Wtype-limits... " >&6; }
-if ${gl_cv_warn_CFLAGS__Wtype_limits+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+       ;;
+i[3456]86|pentium)
+       arch=i386
 
-  gl_save_compiler_FLAGS="$CFLAGS"
-  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wtype-limits"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+$as_echo "#define I386 1" >>confdefs.h
 
-int
-main ()
-{
+       ;;
+ia64)
+       arch=ia64
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS__Wtype_limits=yes
-else
-  gl_cv_warn_CFLAGS__Wtype_limits=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  CFLAGS="$gl_save_compiler_FLAGS"
+$as_echo "#define IA64 1" >>confdefs.h
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Wtype_limits" >&5
-$as_echo "$gl_cv_warn_CFLAGS__Wtype_limits" >&6; }
-if test "x$gl_cv_warn_CFLAGS__Wtype_limits" = xyes; then :
-  as_fn_append WARN_CFLAGS " -Wtype-limits"
-fi
+       ;;
+m68k)
+       arch=m68k
 
+$as_echo "#define M68K 1" >>confdefs.h
 
-if test x${gl_unknown_warnings_are_errors+set} = x; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
-$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
-if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+       ;;
+metag*)
+       arch=metag
 
-  gl_save_compiler_FLAGS="$CFLAGS"
-  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+$as_echo "#define METAG 1" >>confdefs.h
 
-int
-main ()
-{
+       ;;
+microblaze*)
+       arch=microblaze
+       arch_enable_Werror=no
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
-else
-  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  CFLAGS="$gl_save_compiler_FLAGS"
+$as_echo "#define MICROBLAZE 1" >>confdefs.h
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
-$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
-if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
-  gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
-else
-  gl_unknown_warnings_are_errors=
-fi
+       ;;
+mips*)
+       arch=mips
 
+$as_echo "#define MIPS 1" >>confdefs.h
 
-fi
+       ;;
+nios2*)
+       arch=nios2
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Wwrite-strings" >&5
-$as_echo_n "checking whether $CC handles -Wwrite-strings... " >&6; }
-if ${gl_cv_warn_CFLAGS__Wwrite_strings+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+$as_echo "#define NIOS2 1" >>confdefs.h
 
-  gl_save_compiler_FLAGS="$CFLAGS"
-  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wwrite-strings"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+       ;;
+or1k*)
+       arch=or1k
+
+$as_echo "#define OR1K 1" >>confdefs.h
+
+       ;;
+powerpc*)
+
+$as_echo "#define POWERPC 1" >>confdefs.h
 
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifndef __LP64__
+# error 32 bit
+#endif
 int
 main ()
 {
@@ -6055,78 +6068,88 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS__Wwrite_strings=yes
+if ac_fn_c_try_compile "$LINENO"; then :
+  arch=powerpc64
 else
-  gl_cv_warn_CFLAGS__Wwrite_strings=no
+  arch=powerpc
 fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  CFLAGS="$gl_save_compiler_FLAGS"
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+       if test "$arch" = "powerpc64"; then
+               # $ac_cv_c_bigendian is defined by AC_C_BIGENDIAN
+               case "$ac_cv_c_bigendian" in
+               no)
+                       arch=powerpc64le
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Wwrite_strings" >&5
-$as_echo "$gl_cv_warn_CFLAGS__Wwrite_strings" >&6; }
-if test "x$gl_cv_warn_CFLAGS__Wwrite_strings" = xyes; then :
-  as_fn_append WARN_CFLAGS " -Wwrite-strings"
-fi
+$as_echo "#define POWERPC64LE 1" >>confdefs.h
 
+                       ;;
+               *)
+                       arch_m32=powerpc
 
-# Check whether --enable-gcc-Werror was given.
-if test "${enable_gcc_Werror+set}" = set; then :
-  enableval=$enable_gcc_Werror; case $enableval in
-     yes) if test x${gl_unknown_warnings_are_errors+set} = x; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
-$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
-if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+$as_echo "#define POWERPC64 1" >>confdefs.h
 
-  gl_save_compiler_FLAGS="$CFLAGS"
-  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+                       ;;
+               esac
+       fi
+       ;;
+riscv64*)
+       arch=riscv64
 
-int
-main ()
-{
+$as_echo "#define RISCV64 1" >>confdefs.h
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
-else
-  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  CFLAGS="$gl_save_compiler_FLAGS"
+       ;;
+s390)
+       arch=s390
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
-$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
-if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
-  gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
-else
-  gl_unknown_warnings_are_errors=
-fi
+$as_echo "#define S390 1" >>confdefs.h
 
+       ;;
+s390x)
+       arch=s390x
+       arch_m32=s390
+       cc_flags_m32=-m31
 
-fi
+$as_echo "#define S390X 1" >>confdefs.h
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror" >&5
-$as_echo_n "checking whether $CC handles -Werror... " >&6; }
-if ${gl_cv_warn_CFLAGS__Werror+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+       ;;
+sh64*)
+       arch=sh64
 
-  gl_save_compiler_FLAGS="$CFLAGS"
-  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+$as_echo "#define SH64 1" >>confdefs.h
+
+       ;;
+sh*)
+       arch=sh
+
+$as_echo "#define SH 1" >>confdefs.h
+
+       ;;
+sparc64*)
+       arch=sparc64
+       arch_m32=sparc
+
+$as_echo "#define SPARC64 1" >>confdefs.h
+
+       ;;
+sparc*)
+       arch=sparc
+
+$as_echo "#define SPARC 1" >>confdefs.h
+
+       ;;
+tile*)
+       arch=tile
+
+$as_echo "#define TILE 1" >>confdefs.h
 
+       ;;
+x86?64*)
+       arch_m32=i386
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifndef __ILP32__
+# error not x32
+#endif
 int
 main ()
 {
@@ -6135,457 +6158,497 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS__Werror=yes
+if ac_fn_c_try_compile "$LINENO"; then :
+  arch=x32
 else
-  gl_cv_warn_CFLAGS__Werror=no
+  arch=x86_64
 fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  CFLAGS="$gl_save_compiler_FLAGS"
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+       if test "$arch" = "x86_64"; then
+               arch_mx32=x32
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror" >&5
-$as_echo "$gl_cv_warn_CFLAGS__Werror" >&6; }
-if test "x$gl_cv_warn_CFLAGS__Werror" = xyes; then :
-  as_fn_append WARN_CFLAGS " -Werror"
-fi
+$as_echo "#define X86_64 1" >>confdefs.h
 
- ;;
-     no)  ;;
-     *)   as_fn_error $? "bad value $enableval for gcc-Werror option" "$LINENO" 5 ;;
-   esac
+       else
 
-fi
+$as_echo "#define X32 1" >>confdefs.h
 
+       fi
+       ;;
+xtensa*)
+       arch=xtensa
 
+$as_echo "#define XTENSA 1" >>confdefs.h
 
+       ;;
+*)
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: NO!" >&5
+$as_echo "NO!" >&6; }
+       as_fn_error $? "architecture $host_cpu is not supported by strace" "$LINENO" 5
+       ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $arch" >&5
+$as_echo "$arch" >&6; }
 
+arch_native=$arch
 
+test -n "$arch_m32" ||
+       arch_m32=$arch
+test -n "$arch_mx32" ||
+       arch_mx32=$arch
 
-if test -n "${ac_c_decl_warn_flag+set}"; then :
-  st_saved_ac_c_decl_warn_flag="${ac_c_decl_warn_flag}"; unset ac_c_decl_warn_flag
-fi
 
-if test -n "${ac_c_preproc_warn_flag+set}"; then :
-  st_saved_ac_c_preproc_warn_flag="${ac_c_preproc_warn_flag}"; unset ac_c_preproc_warn_flag
-fi
 
-if test -n "${ac_c_werror_flag+set}"; then :
-  st_saved_ac_c_werror_flag="${ac_c_werror_flag}"; unset ac_c_werror_flag
-fi
 
-if test -n "${ac_compile+set}"; then :
-  st_saved_ac_compile="${ac_compile}"; unset ac_compile
-fi
 
-if test -n "${ac_compiler_gnu+set}"; then :
-  st_saved_ac_compiler_gnu="${ac_compiler_gnu}"; unset ac_compiler_gnu
-fi
 
-if test -n "${ac_cpp+set}"; then :
-  st_saved_ac_cpp="${ac_cpp}"; unset ac_cpp
-fi
 
-if test -n "${ac_cv_c_compiler_gnu+set}"; then :
-  st_saved_ac_cv_c_compiler_gnu="${ac_cv_c_compiler_gnu}"; unset ac_cv_c_compiler_gnu
+MIPS_ABI=
+if test "$arch" = mips; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _MIPS_SIM" >&5
+$as_echo_n "checking for _MIPS_SIM... " >&6; }
+if ${st_cv__MIPS_SIM+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if ac_fn_c_compute_int "$LINENO" "_MIPS_SIM" "st_cv__MIPS_SIM"        ""; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "_MIPS_SIM cannot be determined
+See \`config.log' for more details" "$LINENO" 5; }
 fi
 
-if test -n "${ac_cv_c_decl_report+set}"; then :
-  st_saved_ac_cv_c_decl_report="${ac_cv_c_decl_report}"; unset ac_cv_c_decl_report
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $st_cv__MIPS_SIM" >&5
+$as_echo "$st_cv__MIPS_SIM" >&6; }
 
-if test -n "${ac_link+set}"; then :
-  st_saved_ac_link="${ac_link}"; unset ac_link
+       # requires GCC >= 3.4
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MIPS ABI" >&5
+$as_echo_n "checking for MIPS ABI... " >&6; }
+if ${st_cv_mips_abi+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+int i[_MIPS_SIM == _ABIO32 ? 1 : - 1];
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  st_cv_mips_abi=o32
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+int i[_MIPS_SIM == _ABIN32 ? 1 : - 1];
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  st_cv_mips_abi=n32
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+int i[_MIPS_SIM == _ABI64 ? 1 : - 1];
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  st_cv_mips_abi=n64
+else
+  st_cv_mips_abi=unknown
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $st_cv_mips_abi" >&5
+$as_echo "$st_cv_mips_abi" >&6; }
 
-if test -n "${ac_tool_prefix+set}"; then :
-  st_saved_ac_tool_prefix="${ac_tool_prefix}"; unset ac_tool_prefix
+       case "$st_cv_mips_abi" in
+               o32)
+$as_echo "#define LINUX_MIPSO32 1" >>confdefs.h
+;;
+               n32)
+$as_echo "#define LINUX_MIPSN32 1" >>confdefs.h
+;;
+               n64)
+$as_echo "#define LINUX_MIPSN64 1" >>confdefs.h
+;;
+               *) as_fn_error $? "Unsupported _MIPS_SIM" "$LINENO" 5;;
+       esac
+       MIPS_ABI="$st_cv_mips_abi"
 fi
 
-if test -n "${cross_compiling+set}"; then :
-  st_saved_cross_compiling="${cross_compiling}"; unset cross_compiling
+
+# Check whether --enable-arm-oabi was given.
+if test "${enable_arm_oabi+set}" = set; then :
+  enableval=$enable_arm_oabi;
+else
+  enable_arm_oabi=no
 fi
 
-cross_compiling=no
+case "$enable_arm_oabi" in
+       yes) enable_arm_oabi=1 ;;
+       no) enable_arm_oabi=0 ;;
+       *) as_fn_error $? "bad value $enable_arm_oabi for arm-oabi option" "$LINENO" 5 ;;
+esac
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: looking for a C compiler that generates native executables" >&5
-$as_echo "$as_me: looking for a C compiler that generates native executables" >&6;}
-ac_ext=c
-ac_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD'
-ac_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5'
-ac_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC_FOR_BUILD+:} false; then :
+cat >>confdefs.h <<_ACEOF
+#define ENABLE_ARM_OABI $enable_arm_oabi
+_ACEOF
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC is fresh enough for -Werror" >&5
+$as_echo_n "checking whether $CC is fresh enough for -Werror... " >&6; }
+if ${st_cv_cc_enable_Werror+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$CC_FOR_BUILD"; then
-  ac_cv_prog_CC_FOR_BUILD="$CC_FOR_BUILD" # Let the user override the test.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#if defined __GNUC__ && defined __GNUC_MINOR__
+# define GNUC_PREREQ(maj, min) ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
+#else
+# define GNUC_PREREQ(maj, min) 0
+#endif
+
+#if defined __clang__ && defined __clang_major__ && defined __clang_minor__
+# define CLANG_PREREQ(maj, min) ((__clang_major__ << 16) + __clang_minor__ >= ((maj) << 16) + (min))
+#else
+# define CLANG_PREREQ(maj, min) 0
+#endif
+
+int
+main ()
+{
+int i[GNUC_PREREQ(4, 8) + CLANG_PREREQ(6, 0) > 0 ? 1 : - 1];
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  st_cv_cc_enable_Werror=yes
 else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC_FOR_BUILD="${ac_tool_prefix}gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
+  st_cv_cc_enable_Werror=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $st_cv_cc_enable_Werror" >&5
+$as_echo "$st_cv_cc_enable_Werror" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to try $CC with -Werror by default" >&5
+$as_echo_n "checking whether to try $CC with -Werror by default... " >&6; }
+if ${st_cv_enable_Werror+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$st_cv_cc_enable_Werror" != yes; then
+                 st_cv_enable_Werror='no, the compiler is too old'
+               elif test "$arch_enable_Werror" != yes; then
+                 st_cv_enable_Werror='no, architecture is not ready'
+               else
+                 st_cv_enable_Werror=yes
+               fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $st_cv_enable_Werror" >&5
+$as_echo "$st_cv_enable_Werror" >&6; }
+if test x${gl_unknown_warnings_are_errors+set} = x; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS"
+  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
 
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
+else
+  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
 fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  CFLAGS="$gl_save_compiler_FLAGS"
+
 fi
-CC_FOR_BUILD=$ac_cv_prog_CC_FOR_BUILD
-if test -n "$CC_FOR_BUILD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC_FOR_BUILD" >&5
-$as_echo "$CC_FOR_BUILD" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
+  gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  gl_unknown_warnings_are_errors=
 fi
 
 
 fi
-if test -z "$ac_cv_prog_CC_FOR_BUILD"; then
-  ac_ct_CC_FOR_BUILD=$CC_FOR_BUILD
-  # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC_FOR_BUILD+:} false; then :
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Wall" >&5
+$as_echo_n "checking whether $CC handles -Wall... " >&6; }
+if ${gl_cv_warn_CFLAGS__Wall+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$ac_ct_CC_FOR_BUILD"; then
-  ac_cv_prog_ac_ct_CC_FOR_BUILD="$ac_ct_CC_FOR_BUILD" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CC_FOR_BUILD="gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
 
-fi
-fi
-ac_ct_CC_FOR_BUILD=$ac_cv_prog_ac_ct_CC_FOR_BUILD
-if test -n "$ac_ct_CC_FOR_BUILD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC_FOR_BUILD" >&5
-$as_echo "$ac_ct_CC_FOR_BUILD" >&6; }
+  gl_save_compiler_FLAGS="$CFLAGS"
+  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wall"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS__Wall=yes
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  gl_cv_warn_CFLAGS__Wall=no
 fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  CFLAGS="$gl_save_compiler_FLAGS"
 
-  if test "x$ac_ct_CC_FOR_BUILD" = x; then
-    CC_FOR_BUILD=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with build triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with build triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC_FOR_BUILD=$ac_ct_CC_FOR_BUILD
-  fi
-else
-  CC_FOR_BUILD="$ac_cv_prog_CC_FOR_BUILD"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Wall" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Wall" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Wall" = xyes; then :
+  as_fn_append WARN_CFLAGS " -Wall"
 fi
 
-if test -z "$CC_FOR_BUILD"; then
-          if test -n "$ac_tool_prefix"; then
-    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC_FOR_BUILD+:} false; then :
+
+if test x${gl_unknown_warnings_are_errors+set} = x; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$CC_FOR_BUILD"; then
-  ac_cv_prog_CC_FOR_BUILD="$CC_FOR_BUILD" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC_FOR_BUILD="${ac_tool_prefix}cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
 
+  gl_save_compiler_FLAGS="$CFLAGS"
+  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
+else
+  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
 fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  CFLAGS="$gl_save_compiler_FLAGS"
+
 fi
-CC_FOR_BUILD=$ac_cv_prog_CC_FOR_BUILD
-if test -n "$CC_FOR_BUILD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC_FOR_BUILD" >&5
-$as_echo "$CC_FOR_BUILD" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
+  gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  gl_unknown_warnings_are_errors=
 fi
 
 
-  fi
 fi
-if test -z "$CC_FOR_BUILD"; then
-  # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC_FOR_BUILD+:} false; then :
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Wempty-body" >&5
+$as_echo_n "checking whether $CC handles -Wempty-body... " >&6; }
+if ${gl_cv_warn_CFLAGS__Wempty_body+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$CC_FOR_BUILD"; then
-  ac_cv_prog_CC_FOR_BUILD="$CC_FOR_BUILD" # Let the user override the test.
-else
-  ac_prog_rejected=no
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
-       ac_prog_rejected=yes
-       continue
-     fi
-    ac_cv_prog_CC_FOR_BUILD="cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
 
-if test $ac_prog_rejected = yes; then
-  # We found a bogon in the path, so make sure we never use it.
-  set dummy $ac_cv_prog_CC_FOR_BUILD
-  shift
-  if test $# != 0; then
-    # We chose a different compiler from the bogus one.
-    # However, it has the same basename, so the bogon will be chosen
-    # first if we set CC_FOR_BUILD to just the basename; use the full file name.
-    shift
-    ac_cv_prog_CC_FOR_BUILD="$as_dir/$ac_word${1+' '}$@"
-  fi
-fi
+  gl_save_compiler_FLAGS="$CFLAGS"
+  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wempty-body"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS__Wempty_body=yes
+else
+  gl_cv_warn_CFLAGS__Wempty_body=no
 fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  CFLAGS="$gl_save_compiler_FLAGS"
+
 fi
-CC_FOR_BUILD=$ac_cv_prog_CC_FOR_BUILD
-if test -n "$CC_FOR_BUILD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC_FOR_BUILD" >&5
-$as_echo "$CC_FOR_BUILD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Wempty_body" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Wempty_body" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Wempty_body" = xyes; then :
+  as_fn_append WARN_CFLAGS " -Wempty-body"
 fi
 
 
-fi
-if test -z "$CC_FOR_BUILD"; then
-  if test -n "$ac_tool_prefix"; then
-  for ac_prog in cl.exe
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC_FOR_BUILD+:} false; then :
+if test x${gl_unknown_warnings_are_errors+set} = x; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$CC_FOR_BUILD"; then
-  ac_cv_prog_CC_FOR_BUILD="$CC_FOR_BUILD" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC_FOR_BUILD="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
 
-fi
-fi
-CC_FOR_BUILD=$ac_cv_prog_CC_FOR_BUILD
-if test -n "$CC_FOR_BUILD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC_FOR_BUILD" >&5
-$as_echo "$CC_FOR_BUILD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
+  gl_save_compiler_FLAGS="$CFLAGS"
+  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
+int
+main ()
+{
 
-    test -n "$CC_FOR_BUILD" && break
-  done
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
+else
+  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
 fi
-if test -z "$CC_FOR_BUILD"; then
-  ac_ct_CC_FOR_BUILD=$CC_FOR_BUILD
-  for ac_prog in cl.exe
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC_FOR_BUILD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC_FOR_BUILD"; then
-  ac_cv_prog_ac_ct_CC_FOR_BUILD="$ac_ct_CC_FOR_BUILD" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CC_FOR_BUILD="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  CFLAGS="$gl_save_compiler_FLAGS"
 
 fi
-fi
-ac_ct_CC_FOR_BUILD=$ac_cv_prog_ac_ct_CC_FOR_BUILD
-if test -n "$ac_ct_CC_FOR_BUILD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC_FOR_BUILD" >&5
-$as_echo "$ac_ct_CC_FOR_BUILD" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
+  gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  gl_unknown_warnings_are_errors=
 fi
 
 
-  test -n "$ac_ct_CC_FOR_BUILD" && break
-done
-
-  if test "x$ac_ct_CC_FOR_BUILD" = x; then
-    CC_FOR_BUILD=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with build triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with build triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC_FOR_BUILD=$ac_ct_CC_FOR_BUILD
-  fi
 fi
 
-fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Wformat-security" >&5
+$as_echo_n "checking whether $CC handles -Wformat-security... " >&6; }
+if ${gl_cv_warn_CFLAGS__Wformat_security+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS"
+  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wformat-security"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
+int
+main ()
+{
 
-test -z "$CC_FOR_BUILD" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "no acceptable C compiler found in \$PATH
-See \`config.log' for more details" "$LINENO" 5; }
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS__Wformat_security=yes
+else
+  gl_cv_warn_CFLAGS__Wformat_security=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  CFLAGS="$gl_save_compiler_FLAGS"
 
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-  fi
-  rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Wformat_security" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Wformat_security" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Wformat_security" = xyes; then :
+  as_fn_append WARN_CFLAGS " -Wformat-security"
+fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if ${ac_cv_c_compiler_gnu+:} false; then :
+
+if test x${gl_unknown_warnings_are_errors+set} = x; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
   $as_echo_n "(cached) " >&6
 else
+
+  gl_save_compiler_FLAGS="$CFLAGS"
+  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
 main ()
 {
-#ifndef __GNUC__
-       choke me
-#endif
 
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
 else
-  ac_compiler_gnu=no
+  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
 fi
-rm -f core conftest.err conftest.$ac_build_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  CFLAGS="$gl_save_compiler_FLAGS"
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
-  GCC=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
+  gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
 else
-  GCC=
+  gl_unknown_warnings_are_errors=
 fi
-ac_test_CFLAGS=${CFLAGS_FOR_BUILD+set}
-ac_save_CFLAGS=$CFLAGS_FOR_BUILD
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD accepts -g" >&5
-$as_echo_n "checking whether $CC_FOR_BUILD accepts -g... " >&6; }
-if ${ac_cv_build_prog_cc_g+:} false; then :
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Wignored-qualifiers" >&5
+$as_echo_n "checking whether $CC handles -Wignored-qualifiers... " >&6; }
+if ${gl_cv_warn_CFLAGS__Wignored_qualifiers+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  ac_save_c_werror_flag=$ac_c_werror_flag
-   ac_c_werror_flag=yes
-   ac_cv_build_prog_cc_g=no
-   CFLAGS_FOR_BUILD="-g"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+
+  gl_save_compiler_FLAGS="$CFLAGS"
+  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wignored-qualifiers"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -6596,11 +6659,33 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_build_prog_cc_g=yes
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS__Wignored_qualifiers=yes
 else
-  CFLAGS_FOR_BUILD=""
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+  gl_cv_warn_CFLAGS__Wignored_qualifiers=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Wignored_qualifiers" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Wignored_qualifiers" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Wignored_qualifiers" = xyes; then :
+  as_fn_append WARN_CFLAGS " -Wignored-qualifiers"
+fi
+
+
+if test x${gl_unknown_warnings_are_errors+set} = x; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS"
+  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -6611,12 +6696,36 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
+else
+  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  CFLAGS="$gl_save_compiler_FLAGS"
 
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
+  gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
 else
-  ac_c_werror_flag=$ac_save_c_werror_flag
-        CFLAGS_FOR_BUILD="-g"
-        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+  gl_unknown_warnings_are_errors=
+fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Wimplicit-fallthrough=5" >&5
+$as_echo_n "checking whether $CC handles -Wimplicit-fallthrough=5... " >&6; }
+if ${gl_cv_warn_CFLAGS__Wimplicit_fallthrough_5+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS"
+  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wimplicit-fallthrough=5"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -6627,139 +6736,109 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_build_prog_cc_g=yes
-fi
-rm -f core conftest.err conftest.$ac_build_objext conftest.$ac_ext
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS__Wimplicit_fallthrough_5=yes
+else
+  gl_cv_warn_CFLAGS__Wimplicit_fallthrough_5=no
 fi
-rm -f core conftest.err conftest.$ac_build_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  CFLAGS="$gl_save_compiler_FLAGS"
+
 fi
-rm -f core conftest.err conftest.$ac_build_objext conftest.$ac_ext
-   ac_c_werror_flag=$ac_save_c_werror_flag
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Wimplicit_fallthrough_5" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Wimplicit_fallthrough_5" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Wimplicit_fallthrough_5" = xyes; then :
+  as_fn_append WARN_CFLAGS " -Wimplicit-fallthrough=5"
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build_prog_cc_g" >&5
-$as_echo "$ac_cv_build_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
-  CFLAGS_FOR_BUILD=$ac_save_CFLAGS
-elif test $ac_cv_build_prog_cc_g = yes; then
-  if test "$GCC" = yes; then
-    CFLAGS_FOR_BUILD="-g -O2"
-  else
-    CFLAGS_FOR_BUILD="-g"
-  fi
-else
-  if test "$GCC" = yes; then
-    CFLAGS_FOR_BUILD="-O2"
-  else
-    CFLAGS_FOR_BUILD=
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC_FOR_BUILD option to accept ISO C89" >&5
-$as_echo_n "checking for $CC_FOR_BUILD option to accept ISO C89... " >&6; }
-if ${ac_cv_build_prog_cc_c89+:} false; then :
+
+
+if test x${gl_unknown_warnings_are_errors+set} = x; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  ac_cv_build_prog_cc_c89=no
-ac_save_CC=$CC_FOR_BUILD
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+
+  gl_save_compiler_FLAGS="$CFLAGS"
+  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <stdarg.h>
-#include <stdio.h>
-struct stat;
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
-     char **p;
-     int i;
-{
-  return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
+
+int
+main ()
 {
-  char *s;
-  va_list v;
-  va_start (v,p);
-  s = g (p, va_arg (v,int));
-  va_end (v);
-  return s;
+
+  ;
+  return 0;
 }
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
+else
+  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  CFLAGS="$gl_save_compiler_FLAGS"
 
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
-   function prototypes and stuff, but not '\xHH' hex character constants.
-   These don't provoke an error unfortunately, instead are silently treated
-   as 'x'.  The following induces an error, until -std is added to get
-   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
-   array size at least.  It's necessary to write '\x00'==0 to get something
-   that's true only with -std.  */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
+  gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+else
+  gl_unknown_warnings_are_errors=
+fi
 
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
-   inside strings and character constants.  */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
 
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Winit-self" >&5
+$as_echo_n "checking whether $CC handles -Winit-self... " >&6; }
+if ${gl_cv_warn_CFLAGS__Winit_self+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS"
+  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Winit-self"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
 int
 main ()
 {
-return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+
   ;
   return 0;
 }
 _ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
-       -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
-  CC_FOR_BUILD="$ac_save_CC $ac_arg"
-  if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_build_prog_cc_c89=$ac_arg
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS__Winit_self=yes
+else
+  gl_cv_warn_CFLAGS__Winit_self=no
 fi
-rm -f core conftest.err conftest.$ac_build_objext
-  test "x$ac_cv_build_prog_cc_c89" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CC_FOR_BUILD=$ac_save_CC
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  CFLAGS="$gl_save_compiler_FLAGS"
 
 fi
-# AC_CACHE_VAL
-case "x$ac_cv_build_prog_cc_c89" in
-  x)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
-  xno)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
-  *)
-    CC_FOR_BUILD="$CC_FOR_BUILD $ac_cv_build_prog_cc_c89"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build_prog_cc_c89" >&5
-$as_echo "$ac_cv_build_prog_cc_c89" >&6; } ;;
-esac
-if test "x$ac_cv_build_prog_cc_c89" != xno; then :
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Winit_self" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Winit_self" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Winit_self" = xyes; then :
+  as_fn_append WARN_CFLAGS " -Winit-self"
 fi
 
-ac_ext=c
-ac_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD'
-ac_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5'
-ac_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
-ac_ext=c
-ac_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD'
-ac_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5'
-ac_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD understands -c and -o together" >&5
-$as_echo_n "checking whether $CC_FOR_BUILD understands -c and -o together... " >&6; }
-if ${am_cv_build_prog_cc_c_o+:} false; then :
+if test x${gl_unknown_warnings_are_errors+set} = x; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
   $as_echo_n "(cached) " >&6
 else
+
+  gl_save_compiler_FLAGS="$CFLAGS"
+  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -6771,7845 +6850,14937 @@ main ()
   return 0;
 }
 _ACEOF
-  # Make sure it works both with $CC and with simple cc.
-  # Following AC_PROG_CC_C_O, we do the test twice because some
-  # compilers refuse to overwrite an existing .o file with -o,
-  # though they will create one.
-  am_cv_build_prog_cc_c_o=yes
-  for am_i in 1 2; do
-    if { echo "$as_me:$LINENO: $CC_FOR_BUILD -c conftest.$ac_ext -o conftest2.$ac_build_objext" >&5
-   ($CC_FOR_BUILD -c conftest.$ac_ext -o conftest2.$ac_build_objext) >&5 2>&5
-   ac_status=$?
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); } \
-         && test -f conftest2.$ac_build_objext; then
-      : OK
-    else
-      am_cv_build_prog_cc_c_o=no
-      break
-    fi
-  done
-  rm -f core conftest*
-  unset am_i
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
+else
+  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_build_prog_cc_c_o" >&5
-$as_echo "$am_cv_build_prog_cc_c_o" >&6; }
-if test "$am_cv_build_prog_cc_c_o" != yes; then
-   # Losing compiler, so override with the script.
-   # FIXME: It is wrong to rewrite CC.
-   # But if we don't then we get into trouble of one sort or another.
-   # A longer-term fix would be to have automake use am__CC in this case,
-   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
-   CC_FOR_BUILD="$am_aux_dir/compile $CC_FOR_BUILD"
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
+  gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+else
+  gl_unknown_warnings_are_errors=
 fi
-ac_ext=c
-ac_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD'
-ac_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5'
-ac_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
-depcc="$CC_FOR_BUILD"   am_compiler_list=
+fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
-$as_echo_n "checking dependency style of $depcc... " >&6; }
-if ${am_cv_build_CC_dependencies_compiler_type+:} false; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Winitializer-overrides" >&5
+$as_echo_n "checking whether $CC handles -Winitializer-overrides... " >&6; }
+if ${gl_cv_warn_CFLAGS__Winitializer_overrides+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
-  # We make a subdir and do the tests there.  Otherwise we can end up
-  # making bogus files that we don't know about and never remove.  For
-  # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named 'D' -- because '-MD' means "put the output
-  # in D".
-  rm -rf conftest.dir
-  mkdir conftest.dir
-  # Copy depcomp to subdir because otherwise we won't find it if we're
-  # using a relative directory.
-  cp "$am_depcomp" conftest.dir
-  cd conftest.dir
-  # We will build objects and dependencies in a subdirectory because
-  # it helps to detect inapplicable dependency modes.  For instance
-  # both Tru64's cc and ICC support -MD to output dependencies as a
-  # side effect of compilation, but ICC will put the dependencies in
-  # the current directory while Tru64 will put them in the object
-  # directory.
-  mkdir sub
 
-  am_cv_build_CC_dependencies_compiler_type=none
-  if test "$am_compiler_list" = ""; then
-     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
-  fi
-  am__universal=false
-  case " $depcc " in #(
-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
-     esac
+  gl_save_compiler_FLAGS="$CFLAGS"
+  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Winitializer-overrides"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
-  for depmode in $am_compiler_list; do
-    # Setup a source with many dependencies, because some compilers
-    # like to wrap large dependency lists on column 80 (with \), and
-    # we should not choose a depcomp mode which is confused by this.
-    #
-    # We need to recreate these files for each test, as the compiler may
-    # overwrite some of them when testing with obscure command lines.
-    # This happens at least with the AIX C compiler.
-    : > sub/conftest.c
-    for i in 1 2 3 4 5 6; do
-      echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
-      # Solaris 10 /bin/sh.
-      echo '/* dummy */' > sub/conftst$i.h
-    done
-    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
-    # We check with '-c' and '-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle '-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs.
-    am__obj=sub/conftest.${OBJEXT-o}
-    am__minus_obj="-o $am__obj"
-    case $depmode in
-    gcc)
-      # This depmode causes a compiler race in universal mode.
-      test "$am__universal" = false || continue
-      ;;
-    nosideeffect)
-      # After this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested.
-      if test "x$enable_dependency_tracking" = xyes; then
-       continue
-      else
-       break
-      fi
-      ;;
-    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
-      # This compiler won't grok '-c -o', but also, the minuso test has
-      # not run yet.  These depmodes are late enough in the game, and
-      # so weak that their functioning should not be impacted.
-      am__obj=conftest.${OBJEXT-o}
-      am__minus_obj=
-      ;;
-    none) break ;;
-    esac
-    if depmode=$depmode \
-       source=sub/conftest.c object=$am__obj \
-       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
-         >/dev/null 2>conftest.err &&
-       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
-       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
-      # icc doesn't choke on unknown options, it will just issue warnings
-      # or remarks (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored or not supported.
-      # When given -MP, icc 7.0 and 7.1 complain thusly:
-      #   icc: Command line warning: ignoring option '-M'; no argument required
-      # The diagnosis changed in icc 8.0:
-      #   icc: Command line remark: option '-MP' not supported
-      if (grep 'ignoring option' conftest.err ||
-          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
-        am_cv_build_CC_dependencies_compiler_type=$depmode
-        break
-      fi
-    fi
-  done
+int
+main ()
+{
 
-  cd ..
-  rm -rf conftest.dir
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS__Winitializer_overrides=yes
 else
-  am_cv_build_CC_dependencies_compiler_type=none
+  gl_cv_warn_CFLAGS__Winitializer_overrides=no
 fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  CFLAGS="$gl_save_compiler_FLAGS"
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_build_CC_dependencies_compiler_type" >&5
-$as_echo "$am_cv_build_CC_dependencies_compiler_type" >&6; }
-CCDEPMODE=depmode=$am_cv_build_CC_dependencies_compiler_type
-
- if
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_build_CC_dependencies_compiler_type" = gcc3; then
-  am__fastdepCC_TRUE=
-  am__fastdepCC_FALSE='#'
-else
-  am__fastdepCC_TRUE='#'
-  am__fastdepCC_FALSE=
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Winitializer_overrides" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Winitializer_overrides" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Winitializer_overrides" = xyes; then :
+  as_fn_append WARN_CFLAGS " -Winitializer-overrides"
 fi
 
 
-ac_ext=c
-ac_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD'
-ac_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5'
-ac_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
-$as_echo_n "checking how to run the C preprocessor... " >&6; }
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP_FOR_BUILD" && test -d "$CPP_FOR_BUILD"; then
-  CPP_FOR_BUILD=
-fi
-if test -z "$CPP_FOR_BUILD"; then
-  if ${ac_cv_build_prog_CPP+:} false; then :
+if test x${gl_unknown_warnings_are_errors+set} = x; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-      # Double quotes because CPP needs to be expanded
-    for CPP_FOR_BUILD in "$CC_FOR_BUILD -E" "$CC_FOR_BUILD -E -traditional-cpp" "/lib/cpp"
-    do
-      ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
+
+  gl_save_compiler_FLAGS="$CFLAGS"
+  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-                    Syntax error
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
 _ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
+else
+  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  CFLAGS="$gl_save_compiler_FLAGS"
 
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
+  gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
 else
-  # Broken: fails on valid input.
-continue
+  gl_unknown_warnings_are_errors=
 fi
-rm -f conftest.err conftest.i conftest.$ac_ext
 
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Wlogical-op" >&5
+$as_echo_n "checking whether $CC handles -Wlogical-op... " >&6; }
+if ${gl_cv_warn_CFLAGS__Wlogical_op+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS"
+  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wlogical-op"
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <ac_nonexistent.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
 _ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS__Wlogical_op=yes
 else
-  # Passes both tests.
-ac_preproc_ok=:
-break
+  gl_cv_warn_CFLAGS__Wlogical_op=no
 fi
-rm -f conftest.err conftest.i conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  CFLAGS="$gl_save_compiler_FLAGS"
 
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-  break
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Wlogical_op" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Wlogical_op" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Wlogical_op" = xyes; then :
+  as_fn_append WARN_CFLAGS " -Wlogical-op"
 fi
 
-    done
-    ac_cv_build_prog_CPP=$CPP_FOR_BUILD
 
-fi
-  CPP_FOR_BUILD=$ac_cv_build_prog_CPP
+if test x${gl_unknown_warnings_are_errors+set} = x; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  ac_cv_build_prog_CPP=$CPP_FOR_BUILD
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP_FOR_BUILD" >&5
-$as_echo "$CPP_FOR_BUILD" >&6; }
-ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
+
+  gl_save_compiler_FLAGS="$CFLAGS"
+  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-                    Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
 
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
 else
-  # Broken: fails on valid input.
-continue
+  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
 fi
-rm -f conftest.err conftest.i conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  CFLAGS="$gl_save_compiler_FLAGS"
 
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
+  gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+else
+  gl_unknown_warnings_are_errors=
+fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Wmissing-parameter-type" >&5
+$as_echo_n "checking whether $CC handles -Wmissing-parameter-type... " >&6; }
+if ${gl_cv_warn_CFLAGS__Wmissing_parameter_type+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS"
+  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wmissing-parameter-type"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <ac_nonexistent.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
 _ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS__Wmissing_parameter_type=yes
 else
-  # Passes both tests.
-ac_preproc_ok=:
-break
+  gl_cv_warn_CFLAGS__Wmissing_parameter_type=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Wmissing_parameter_type" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Wmissing_parameter_type" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Wmissing_parameter_type" = xyes; then :
+  as_fn_append WARN_CFLAGS " -Wmissing-parameter-type"
+fi
+
+
+if test x${gl_unknown_warnings_are_errors+set} = x; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS"
+  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
+else
+  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
+  gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+else
+  gl_unknown_warnings_are_errors=
+fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Wnested-externs" >&5
+$as_echo_n "checking whether $CC handles -Wnested-externs... " >&6; }
+if ${gl_cv_warn_CFLAGS__Wnested_externs+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS"
+  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wnested-externs"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS__Wnested_externs=yes
+else
+  gl_cv_warn_CFLAGS__Wnested_externs=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Wnested_externs" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Wnested_externs" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Wnested_externs" = xyes; then :
+  as_fn_append WARN_CFLAGS " -Wnested-externs"
+fi
+
+
+if test x${gl_unknown_warnings_are_errors+set} = x; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS"
+  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
+else
+  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
+  gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+else
+  gl_unknown_warnings_are_errors=
+fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Wold-style-declaration" >&5
+$as_echo_n "checking whether $CC handles -Wold-style-declaration... " >&6; }
+if ${gl_cv_warn_CFLAGS__Wold_style_declaration+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS"
+  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wold-style-declaration"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS__Wold_style_declaration=yes
+else
+  gl_cv_warn_CFLAGS__Wold_style_declaration=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Wold_style_declaration" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Wold_style_declaration" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Wold_style_declaration" = xyes; then :
+  as_fn_append WARN_CFLAGS " -Wold-style-declaration"
+fi
+
+
+if test x${gl_unknown_warnings_are_errors+set} = x; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS"
+  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
+else
+  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
+  gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+else
+  gl_unknown_warnings_are_errors=
+fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Wold-style-definition" >&5
+$as_echo_n "checking whether $CC handles -Wold-style-definition... " >&6; }
+if ${gl_cv_warn_CFLAGS__Wold_style_definition+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS"
+  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wold-style-definition"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS__Wold_style_definition=yes
+else
+  gl_cv_warn_CFLAGS__Wold_style_definition=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Wold_style_definition" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Wold_style_definition" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Wold_style_definition" = xyes; then :
+  as_fn_append WARN_CFLAGS " -Wold-style-definition"
+fi
+
+
+if test x${gl_unknown_warnings_are_errors+set} = x; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS"
+  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
+else
+  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
+  gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+else
+  gl_unknown_warnings_are_errors=
+fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Woverride-init" >&5
+$as_echo_n "checking whether $CC handles -Woverride-init... " >&6; }
+if ${gl_cv_warn_CFLAGS__Woverride_init+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS"
+  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Woverride-init"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS__Woverride_init=yes
+else
+  gl_cv_warn_CFLAGS__Woverride_init=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Woverride_init" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Woverride_init" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Woverride_init" = xyes; then :
+  as_fn_append WARN_CFLAGS " -Woverride-init"
+fi
+
+
+if test x${gl_unknown_warnings_are_errors+set} = x; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS"
+  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
+else
+  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
+  gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+else
+  gl_unknown_warnings_are_errors=
+fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Wsign-compare" >&5
+$as_echo_n "checking whether $CC handles -Wsign-compare... " >&6; }
+if ${gl_cv_warn_CFLAGS__Wsign_compare+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS"
+  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wsign-compare"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS__Wsign_compare=yes
+else
+  gl_cv_warn_CFLAGS__Wsign_compare=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Wsign_compare" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Wsign_compare" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Wsign_compare" = xyes; then :
+  as_fn_append WARN_CFLAGS " -Wsign-compare"
+fi
+
+
+if test x${gl_unknown_warnings_are_errors+set} = x; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS"
+  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
+else
+  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
+  gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+else
+  gl_unknown_warnings_are_errors=
+fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Wtype-limits" >&5
+$as_echo_n "checking whether $CC handles -Wtype-limits... " >&6; }
+if ${gl_cv_warn_CFLAGS__Wtype_limits+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS"
+  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wtype-limits"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS__Wtype_limits=yes
+else
+  gl_cv_warn_CFLAGS__Wtype_limits=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Wtype_limits" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Wtype_limits" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Wtype_limits" = xyes; then :
+  as_fn_append WARN_CFLAGS " -Wtype-limits"
+fi
+
+
+if test x${gl_unknown_warnings_are_errors+set} = x; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS"
+  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
+else
+  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
+  gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+else
+  gl_unknown_warnings_are_errors=
+fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Wwrite-strings" >&5
+$as_echo_n "checking whether $CC handles -Wwrite-strings... " >&6; }
+if ${gl_cv_warn_CFLAGS__Wwrite_strings+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS"
+  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wwrite-strings"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS__Wwrite_strings=yes
+else
+  gl_cv_warn_CFLAGS__Wwrite_strings=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Wwrite_strings" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Wwrite_strings" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Wwrite_strings" = xyes; then :
+  as_fn_append WARN_CFLAGS " -Wwrite-strings"
+fi
+
+
+# Check whether --enable-gcc-Werror was given.
+if test "${enable_gcc_Werror+set}" = set; then :
+  enableval=$enable_gcc_Werror; case "$enable_gcc_Werror" in
+               yes|no|no,*) ;;
+               *) as_fn_error $? "bad value $enable_gcc_Werror for gcc-Werror option" "$LINENO" 5 ;;
+              esac
+else
+  enable_gcc_Werror="$st_cv_enable_Werror"
+fi
+
+if test "$enable_gcc_Werror" = yes; then
+  if test x${gl_unknown_warnings_are_errors+set} = x; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS"
+  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
+else
+  gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
+  gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+else
+  gl_unknown_warnings_are_errors=
+fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror" >&5
+$as_echo_n "checking whether $CC handles -Werror... " >&6; }
+if ${gl_cv_warn_CFLAGS__Werror+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS"
+  as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS__Werror=yes
+else
+  gl_cv_warn_CFLAGS__Werror=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Werror" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Werror" = xyes; then :
+  as_fn_append WARN_CFLAGS " -Werror"
+fi
+
+
+fi
+
+
+
+
+
+if test -n "${ac_c_decl_warn_flag+set}"; then :
+  st_saved_ac_c_decl_warn_flag="${ac_c_decl_warn_flag}"; unset ac_c_decl_warn_flag
+fi
+
+if test -n "${ac_c_preproc_warn_flag+set}"; then :
+  st_saved_ac_c_preproc_warn_flag="${ac_c_preproc_warn_flag}"; unset ac_c_preproc_warn_flag
+fi
+
+if test -n "${ac_c_werror_flag+set}"; then :
+  st_saved_ac_c_werror_flag="${ac_c_werror_flag}"; unset ac_c_werror_flag
+fi
+
+if test -n "${ac_compile+set}"; then :
+  st_saved_ac_compile="${ac_compile}"; unset ac_compile
+fi
+
+if test -n "${ac_compiler_gnu+set}"; then :
+  st_saved_ac_compiler_gnu="${ac_compiler_gnu}"; unset ac_compiler_gnu
+fi
+
+if test -n "${ac_cpp+set}"; then :
+  st_saved_ac_cpp="${ac_cpp}"; unset ac_cpp
+fi
+
+if test -n "${ac_cv_c_compiler_gnu+set}"; then :
+  st_saved_ac_cv_c_compiler_gnu="${ac_cv_c_compiler_gnu}"; unset ac_cv_c_compiler_gnu
+fi
+
+if test -n "${ac_cv_c_decl_report+set}"; then :
+  st_saved_ac_cv_c_decl_report="${ac_cv_c_decl_report}"; unset ac_cv_c_decl_report
+fi
+
+if test -n "${ac_link+set}"; then :
+  st_saved_ac_link="${ac_link}"; unset ac_link
+fi
+
+if test -n "${ac_tool_prefix+set}"; then :
+  st_saved_ac_tool_prefix="${ac_tool_prefix}"; unset ac_tool_prefix
+fi
+
+if test -n "${cross_compiling+set}"; then :
+  st_saved_cross_compiling="${cross_compiling}"; unset cross_compiling
+fi
+
+cross_compiling=no
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: looking for a C compiler that generates native executables" >&5
+$as_echo "$as_me: looking for a C compiler that generates native executables" >&6;}
+ac_ext=c
+ac_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD'
+ac_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5'
+ac_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC_FOR_BUILD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC_FOR_BUILD"; then
+  ac_cv_prog_CC_FOR_BUILD="$CC_FOR_BUILD" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC_FOR_BUILD="${ac_tool_prefix}gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC_FOR_BUILD=$ac_cv_prog_CC_FOR_BUILD
+if test -n "$CC_FOR_BUILD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC_FOR_BUILD" >&5
+$as_echo "$CC_FOR_BUILD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC_FOR_BUILD"; then
+  ac_ct_CC_FOR_BUILD=$CC_FOR_BUILD
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC_FOR_BUILD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC_FOR_BUILD"; then
+  ac_cv_prog_ac_ct_CC_FOR_BUILD="$ac_ct_CC_FOR_BUILD" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC_FOR_BUILD="gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC_FOR_BUILD=$ac_cv_prog_ac_ct_CC_FOR_BUILD
+if test -n "$ac_ct_CC_FOR_BUILD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC_FOR_BUILD" >&5
+$as_echo "$ac_ct_CC_FOR_BUILD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_CC_FOR_BUILD" = x; then
+    CC_FOR_BUILD=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with build triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with build triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC_FOR_BUILD=$ac_ct_CC_FOR_BUILD
+  fi
+else
+  CC_FOR_BUILD="$ac_cv_prog_CC_FOR_BUILD"
+fi
+
+if test -z "$CC_FOR_BUILD"; then
+          if test -n "$ac_tool_prefix"; then
+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC_FOR_BUILD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC_FOR_BUILD"; then
+  ac_cv_prog_CC_FOR_BUILD="$CC_FOR_BUILD" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC_FOR_BUILD="${ac_tool_prefix}cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC_FOR_BUILD=$ac_cv_prog_CC_FOR_BUILD
+if test -n "$CC_FOR_BUILD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC_FOR_BUILD" >&5
+$as_echo "$CC_FOR_BUILD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+fi
+if test -z "$CC_FOR_BUILD"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC_FOR_BUILD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC_FOR_BUILD"; then
+  ac_cv_prog_CC_FOR_BUILD="$CC_FOR_BUILD" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC_FOR_BUILD="cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC_FOR_BUILD
+  shift
+  if test $# != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC_FOR_BUILD to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC_FOR_BUILD="$as_dir/$ac_word${1+' '}$@"
+  fi
+fi
+fi
+fi
+CC_FOR_BUILD=$ac_cv_prog_CC_FOR_BUILD
+if test -n "$CC_FOR_BUILD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC_FOR_BUILD" >&5
+$as_echo "$CC_FOR_BUILD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC_FOR_BUILD"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl.exe
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC_FOR_BUILD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC_FOR_BUILD"; then
+  ac_cv_prog_CC_FOR_BUILD="$CC_FOR_BUILD" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC_FOR_BUILD="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC_FOR_BUILD=$ac_cv_prog_CC_FOR_BUILD
+if test -n "$CC_FOR_BUILD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC_FOR_BUILD" >&5
+$as_echo "$CC_FOR_BUILD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CC_FOR_BUILD" && break
+  done
+fi
+if test -z "$CC_FOR_BUILD"; then
+  ac_ct_CC_FOR_BUILD=$CC_FOR_BUILD
+  for ac_prog in cl.exe
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC_FOR_BUILD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC_FOR_BUILD"; then
+  ac_cv_prog_ac_ct_CC_FOR_BUILD="$ac_ct_CC_FOR_BUILD" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC_FOR_BUILD="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC_FOR_BUILD=$ac_cv_prog_ac_ct_CC_FOR_BUILD
+if test -n "$ac_ct_CC_FOR_BUILD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC_FOR_BUILD" >&5
+$as_echo "$ac_ct_CC_FOR_BUILD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CC_FOR_BUILD" && break
+done
+
+  if test "x$ac_ct_CC_FOR_BUILD" = x; then
+    CC_FOR_BUILD=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with build triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with build triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC_FOR_BUILD=$ac_ct_CC_FOR_BUILD
+  fi
+fi
+
+fi
+
+
+test -z "$CC_FOR_BUILD" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_build_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
+else
+  GCC=
+fi
+ac_test_CFLAGS=${CFLAGS_FOR_BUILD+set}
+ac_save_CFLAGS=$CFLAGS_FOR_BUILD
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD accepts -g" >&5
+$as_echo_n "checking whether $CC_FOR_BUILD accepts -g... " >&6; }
+if ${ac_cv_build_prog_cc_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_c_werror_flag=$ac_c_werror_flag
+   ac_c_werror_flag=yes
+   ac_cv_build_prog_cc_g=no
+   CFLAGS_FOR_BUILD="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_build_prog_cc_g=yes
+else
+  CFLAGS_FOR_BUILD=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  ac_c_werror_flag=$ac_save_c_werror_flag
+        CFLAGS_FOR_BUILD="-g"
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_build_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_build_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_build_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_build_objext conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build_prog_cc_g" >&5
+$as_echo "$ac_cv_build_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS_FOR_BUILD=$ac_save_CFLAGS
+elif test $ac_cv_build_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS_FOR_BUILD="-g -O2"
+  else
+    CFLAGS_FOR_BUILD="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS_FOR_BUILD="-O2"
+  else
+    CFLAGS_FOR_BUILD=
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC_FOR_BUILD option to accept ISO C89" >&5
+$as_echo_n "checking for $CC_FOR_BUILD option to accept ISO C89... " >&6; }
+if ${ac_cv_build_prog_cc_c89+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_build_prog_cc_c89=no
+ac_save_CC=$CC_FOR_BUILD
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+struct stat;
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+       -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC_FOR_BUILD="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_build_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_build_objext
+  test "x$ac_cv_build_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC_FOR_BUILD=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_build_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC_FOR_BUILD="$CC_FOR_BUILD $ac_cv_build_prog_cc_c89"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build_prog_cc_c89" >&5
+$as_echo "$ac_cv_build_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_build_prog_cc_c89" != xno; then :
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD'
+ac_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5'
+ac_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=c
+ac_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD'
+ac_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5'
+ac_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD understands -c and -o together" >&5
+$as_echo_n "checking whether $CC_FOR_BUILD understands -c and -o together... " >&6; }
+if ${am_cv_build_prog_cc_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+  # Make sure it works both with $CC and with simple cc.
+  # Following AC_PROG_CC_C_O, we do the test twice because some
+  # compilers refuse to overwrite an existing .o file with -o,
+  # though they will create one.
+  am_cv_build_prog_cc_c_o=yes
+  for am_i in 1 2; do
+    if { echo "$as_me:$LINENO: $CC_FOR_BUILD -c conftest.$ac_ext -o conftest2.$ac_build_objext" >&5
+   ($CC_FOR_BUILD -c conftest.$ac_ext -o conftest2.$ac_build_objext) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); } \
+         && test -f conftest2.$ac_build_objext; then
+      : OK
+    else
+      am_cv_build_prog_cc_c_o=no
+      break
+    fi
+  done
+  rm -f core conftest*
+  unset am_i
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_build_prog_cc_c_o" >&5
+$as_echo "$am_cv_build_prog_cc_c_o" >&6; }
+if test "$am_cv_build_prog_cc_c_o" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC_FOR_BUILD="$am_aux_dir/compile $CC_FOR_BUILD"
+fi
+ac_ext=c
+ac_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD'
+ac_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5'
+ac_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+depcc="$CC_FOR_BUILD"   am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_build_CC_dependencies_compiler_type+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_build_CC_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  am__universal=false
+  case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
+      if test "x$enable_dependency_tracking" = xyes; then
+       continue
+      else
+       break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_build_CC_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_build_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_build_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_build_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_build_CC_dependencies_compiler_type
+
+ if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_build_CC_dependencies_compiler_type" = gcc3; then
+  am__fastdepCC_TRUE=
+  am__fastdepCC_FALSE='#'
+else
+  am__fastdepCC_TRUE='#'
+  am__fastdepCC_FALSE=
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD'
+ac_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5'
+ac_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP_FOR_BUILD" && test -d "$CPP_FOR_BUILD"; then
+  CPP_FOR_BUILD=
+fi
+if test -z "$CPP_FOR_BUILD"; then
+  if ${ac_cv_build_prog_CPP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+      # Double quotes because CPP needs to be expanded
+    for CPP_FOR_BUILD in "$CC_FOR_BUILD -E" "$CC_FOR_BUILD -E -traditional-cpp" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+                    Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+  break
+fi
+
+    done
+    ac_cv_build_prog_CPP=$CPP_FOR_BUILD
+
+fi
+  CPP_FOR_BUILD=$ac_cv_build_prog_CPP
+else
+  ac_cv_build_prog_CPP=$CPP_FOR_BUILD
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP_FOR_BUILD" >&5
+$as_echo "$CPP_FOR_BUILD" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+                    Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C preprocessor \"$CPP_FOR_BUILD\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD'
+ac_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5'
+ac_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD is fresh enough for -Werror" >&5
+$as_echo_n "checking whether $CC_FOR_BUILD is fresh enough for -Werror... " >&6; }
+if ${st_cv_build_cc_enable_Werror+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#if defined __GNUC__ && defined __GNUC_MINOR__
+# define GNUC_PREREQ(maj, min) ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
+#else
+# define GNUC_PREREQ(maj, min) 0
+#endif
+
+#if defined __clang__ && defined __clang_major__ && defined __clang_minor__
+# define CLANG_PREREQ(maj, min) ((__clang_major__ << 16) + __clang_minor__ >= ((maj) << 16) + (min))
+#else
+# define CLANG_PREREQ(maj, min) 0
+#endif
+
+int
+main ()
+{
+int i[GNUC_PREREQ(4, 8) + CLANG_PREREQ(6, 0) > 0 ? 1 : - 1];
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  st_cv_build_cc_enable_Werror=yes
+else
+  st_cv_build_cc_enable_Werror=no
+fi
+rm -f core conftest.err conftest.$ac_build_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $st_cv_build_cc_enable_Werror" >&5
+$as_echo "$st_cv_build_cc_enable_Werror" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to try $CC_FOR_BUILD with -Werror by default" >&5
+$as_echo_n "checking whether to try $CC_FOR_BUILD with -Werror by default... " >&6; }
+if ${st_cv_build_enable_Werror+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$st_cv_build_cc_enable_Werror" != yes; then
+                 st_cv_build_enable_Werror='no, the compiler is too old'
+               elif test "$arch_enable_Werror" != yes; then
+                 st_cv_build_enable_Werror='no, architecture is not ready'
+               else
+                 st_cv_build_enable_Werror=yes
+               fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $st_cv_build_enable_Werror" >&5
+$as_echo "$st_cv_build_enable_Werror" >&6; }
+if test x${gl_build_unknown_warnings_are_errors+set} = x; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
+  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=yes
+else
+  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=no
+fi
+rm -f core conftest.err conftest.$ac_build_objext \
+    conftest$ac_build_exeext conftest.$ac_ext
+  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" = xyes; then :
+  gl_build_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+else
+  gl_build_unknown_warnings_are_errors=
+fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Wall" >&5
+$as_echo_n "checking whether $CC_FOR_BUILD handles -Wall... " >&6; }
+if ${gl_cv_warn_CFLAGS_FOR_BUILD__Wall+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
+  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Wall"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS_FOR_BUILD__Wall=yes
+else
+  gl_cv_warn_CFLAGS_FOR_BUILD__Wall=no
+fi
+rm -f core conftest.err conftest.$ac_build_objext \
+    conftest$ac_build_exeext conftest.$ac_ext
+  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Wall" >&5
+$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Wall" >&6; }
+if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Wall" = xyes; then :
+  as_fn_append WARN_CFLAGS_FOR_BUILD " -Wall"
+fi
+
+
+if test x${gl_build_unknown_warnings_are_errors+set} = x; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
+  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=yes
+else
+  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=no
+fi
+rm -f core conftest.err conftest.$ac_build_objext \
+    conftest$ac_build_exeext conftest.$ac_ext
+  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" = xyes; then :
+  gl_build_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+else
+  gl_build_unknown_warnings_are_errors=
+fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Wempty-body" >&5
+$as_echo_n "checking whether $CC_FOR_BUILD handles -Wempty-body... " >&6; }
+if ${gl_cv_warn_CFLAGS_FOR_BUILD__Wempty_body+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
+  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Wempty-body"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS_FOR_BUILD__Wempty_body=yes
+else
+  gl_cv_warn_CFLAGS_FOR_BUILD__Wempty_body=no
+fi
+rm -f core conftest.err conftest.$ac_build_objext \
+    conftest$ac_build_exeext conftest.$ac_ext
+  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Wempty_body" >&5
+$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Wempty_body" >&6; }
+if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Wempty_body" = xyes; then :
+  as_fn_append WARN_CFLAGS_FOR_BUILD " -Wempty-body"
+fi
+
+
+if test x${gl_build_unknown_warnings_are_errors+set} = x; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
+  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=yes
+else
+  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=no
+fi
+rm -f core conftest.err conftest.$ac_build_objext \
+    conftest$ac_build_exeext conftest.$ac_ext
+  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" = xyes; then :
+  gl_build_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+else
+  gl_build_unknown_warnings_are_errors=
+fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Wformat-security" >&5
+$as_echo_n "checking whether $CC_FOR_BUILD handles -Wformat-security... " >&6; }
+if ${gl_cv_warn_CFLAGS_FOR_BUILD__Wformat_security+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
+  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Wformat-security"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS_FOR_BUILD__Wformat_security=yes
+else
+  gl_cv_warn_CFLAGS_FOR_BUILD__Wformat_security=no
+fi
+rm -f core conftest.err conftest.$ac_build_objext \
+    conftest$ac_build_exeext conftest.$ac_ext
+  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Wformat_security" >&5
+$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Wformat_security" >&6; }
+if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Wformat_security" = xyes; then :
+  as_fn_append WARN_CFLAGS_FOR_BUILD " -Wformat-security"
+fi
+
+
+if test x${gl_build_unknown_warnings_are_errors+set} = x; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
+  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=yes
+else
+  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=no
+fi
+rm -f core conftest.err conftest.$ac_build_objext \
+    conftest$ac_build_exeext conftest.$ac_ext
+  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" = xyes; then :
+  gl_build_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+else
+  gl_build_unknown_warnings_are_errors=
+fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Wignored-qualifiers" >&5
+$as_echo_n "checking whether $CC_FOR_BUILD handles -Wignored-qualifiers... " >&6; }
+if ${gl_cv_warn_CFLAGS_FOR_BUILD__Wignored_qualifiers+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
+  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Wignored-qualifiers"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS_FOR_BUILD__Wignored_qualifiers=yes
+else
+  gl_cv_warn_CFLAGS_FOR_BUILD__Wignored_qualifiers=no
+fi
+rm -f core conftest.err conftest.$ac_build_objext \
+    conftest$ac_build_exeext conftest.$ac_ext
+  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Wignored_qualifiers" >&5
+$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Wignored_qualifiers" >&6; }
+if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Wignored_qualifiers" = xyes; then :
+  as_fn_append WARN_CFLAGS_FOR_BUILD " -Wignored-qualifiers"
+fi
+
+
+if test x${gl_build_unknown_warnings_are_errors+set} = x; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
+  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=yes
+else
+  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=no
+fi
+rm -f core conftest.err conftest.$ac_build_objext \
+    conftest$ac_build_exeext conftest.$ac_ext
+  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" = xyes; then :
+  gl_build_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+else
+  gl_build_unknown_warnings_are_errors=
+fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Wimplicit-fallthrough=5" >&5
+$as_echo_n "checking whether $CC_FOR_BUILD handles -Wimplicit-fallthrough=5... " >&6; }
+if ${gl_cv_warn_CFLAGS_FOR_BUILD__Wimplicit_fallthrough_5+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
+  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Wimplicit-fallthrough=5"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS_FOR_BUILD__Wimplicit_fallthrough_5=yes
+else
+  gl_cv_warn_CFLAGS_FOR_BUILD__Wimplicit_fallthrough_5=no
+fi
+rm -f core conftest.err conftest.$ac_build_objext \
+    conftest$ac_build_exeext conftest.$ac_ext
+  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Wimplicit_fallthrough_5" >&5
+$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Wimplicit_fallthrough_5" >&6; }
+if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Wimplicit_fallthrough_5" = xyes; then :
+  as_fn_append WARN_CFLAGS_FOR_BUILD " -Wimplicit-fallthrough=5"
+fi
+
+
+if test x${gl_build_unknown_warnings_are_errors+set} = x; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
+  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=yes
+else
+  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=no
+fi
+rm -f core conftest.err conftest.$ac_build_objext \
+    conftest$ac_build_exeext conftest.$ac_ext
+  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" = xyes; then :
+  gl_build_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+else
+  gl_build_unknown_warnings_are_errors=
+fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Winit-self" >&5
+$as_echo_n "checking whether $CC_FOR_BUILD handles -Winit-self... " >&6; }
+if ${gl_cv_warn_CFLAGS_FOR_BUILD__Winit_self+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
+  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Winit-self"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS_FOR_BUILD__Winit_self=yes
+else
+  gl_cv_warn_CFLAGS_FOR_BUILD__Winit_self=no
+fi
+rm -f core conftest.err conftest.$ac_build_objext \
+    conftest$ac_build_exeext conftest.$ac_ext
+  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Winit_self" >&5
+$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Winit_self" >&6; }
+if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Winit_self" = xyes; then :
+  as_fn_append WARN_CFLAGS_FOR_BUILD " -Winit-self"
+fi
+
+
+if test x${gl_build_unknown_warnings_are_errors+set} = x; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
+  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=yes
+else
+  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=no
+fi
+rm -f core conftest.err conftest.$ac_build_objext \
+    conftest$ac_build_exeext conftest.$ac_ext
+  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" = xyes; then :
+  gl_build_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+else
+  gl_build_unknown_warnings_are_errors=
+fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Winitializer-overrides" >&5
+$as_echo_n "checking whether $CC_FOR_BUILD handles -Winitializer-overrides... " >&6; }
+if ${gl_cv_warn_CFLAGS_FOR_BUILD__Winitializer_overrides+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
+  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Winitializer-overrides"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS_FOR_BUILD__Winitializer_overrides=yes
+else
+  gl_cv_warn_CFLAGS_FOR_BUILD__Winitializer_overrides=no
+fi
+rm -f core conftest.err conftest.$ac_build_objext \
+    conftest$ac_build_exeext conftest.$ac_ext
+  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Winitializer_overrides" >&5
+$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Winitializer_overrides" >&6; }
+if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Winitializer_overrides" = xyes; then :
+  as_fn_append WARN_CFLAGS_FOR_BUILD " -Winitializer-overrides"
+fi
+
+
+if test x${gl_build_unknown_warnings_are_errors+set} = x; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
+  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=yes
+else
+  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=no
+fi
+rm -f core conftest.err conftest.$ac_build_objext \
+    conftest$ac_build_exeext conftest.$ac_ext
+  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" = xyes; then :
+  gl_build_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+else
+  gl_build_unknown_warnings_are_errors=
+fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Wlogical-op" >&5
+$as_echo_n "checking whether $CC_FOR_BUILD handles -Wlogical-op... " >&6; }
+if ${gl_cv_warn_CFLAGS_FOR_BUILD__Wlogical_op+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
+  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Wlogical-op"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS_FOR_BUILD__Wlogical_op=yes
+else
+  gl_cv_warn_CFLAGS_FOR_BUILD__Wlogical_op=no
+fi
+rm -f core conftest.err conftest.$ac_build_objext \
+    conftest$ac_build_exeext conftest.$ac_ext
+  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Wlogical_op" >&5
+$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Wlogical_op" >&6; }
+if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Wlogical_op" = xyes; then :
+  as_fn_append WARN_CFLAGS_FOR_BUILD " -Wlogical-op"
+fi
+
+
+if test x${gl_build_unknown_warnings_are_errors+set} = x; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
+  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=yes
+else
+  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=no
+fi
+rm -f core conftest.err conftest.$ac_build_objext \
+    conftest$ac_build_exeext conftest.$ac_ext
+  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" = xyes; then :
+  gl_build_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+else
+  gl_build_unknown_warnings_are_errors=
+fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Wmissing-parameter-type" >&5
+$as_echo_n "checking whether $CC_FOR_BUILD handles -Wmissing-parameter-type... " >&6; }
+if ${gl_cv_warn_CFLAGS_FOR_BUILD__Wmissing_parameter_type+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
+  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Wmissing-parameter-type"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS_FOR_BUILD__Wmissing_parameter_type=yes
+else
+  gl_cv_warn_CFLAGS_FOR_BUILD__Wmissing_parameter_type=no
+fi
+rm -f core conftest.err conftest.$ac_build_objext \
+    conftest$ac_build_exeext conftest.$ac_ext
+  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Wmissing_parameter_type" >&5
+$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Wmissing_parameter_type" >&6; }
+if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Wmissing_parameter_type" = xyes; then :
+  as_fn_append WARN_CFLAGS_FOR_BUILD " -Wmissing-parameter-type"
+fi
+
+
+if test x${gl_build_unknown_warnings_are_errors+set} = x; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
+  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=yes
+else
+  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=no
+fi
+rm -f core conftest.err conftest.$ac_build_objext \
+    conftest$ac_build_exeext conftest.$ac_ext
+  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" = xyes; then :
+  gl_build_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+else
+  gl_build_unknown_warnings_are_errors=
+fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Wnested-externs" >&5
+$as_echo_n "checking whether $CC_FOR_BUILD handles -Wnested-externs... " >&6; }
+if ${gl_cv_warn_CFLAGS_FOR_BUILD__Wnested_externs+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
+  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Wnested-externs"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS_FOR_BUILD__Wnested_externs=yes
+else
+  gl_cv_warn_CFLAGS_FOR_BUILD__Wnested_externs=no
+fi
+rm -f core conftest.err conftest.$ac_build_objext \
+    conftest$ac_build_exeext conftest.$ac_ext
+  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Wnested_externs" >&5
+$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Wnested_externs" >&6; }
+if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Wnested_externs" = xyes; then :
+  as_fn_append WARN_CFLAGS_FOR_BUILD " -Wnested-externs"
+fi
+
+
+if test x${gl_build_unknown_warnings_are_errors+set} = x; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
+  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=yes
+else
+  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=no
+fi
+rm -f core conftest.err conftest.$ac_build_objext \
+    conftest$ac_build_exeext conftest.$ac_ext
+  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" = xyes; then :
+  gl_build_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+else
+  gl_build_unknown_warnings_are_errors=
+fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Wold-style-declaration" >&5
+$as_echo_n "checking whether $CC_FOR_BUILD handles -Wold-style-declaration... " >&6; }
+if ${gl_cv_warn_CFLAGS_FOR_BUILD__Wold_style_declaration+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
+  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Wold-style-declaration"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS_FOR_BUILD__Wold_style_declaration=yes
+else
+  gl_cv_warn_CFLAGS_FOR_BUILD__Wold_style_declaration=no
+fi
+rm -f core conftest.err conftest.$ac_build_objext \
+    conftest$ac_build_exeext conftest.$ac_ext
+  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Wold_style_declaration" >&5
+$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Wold_style_declaration" >&6; }
+if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Wold_style_declaration" = xyes; then :
+  as_fn_append WARN_CFLAGS_FOR_BUILD " -Wold-style-declaration"
+fi
+
+
+if test x${gl_build_unknown_warnings_are_errors+set} = x; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
+  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=yes
+else
+  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=no
+fi
+rm -f core conftest.err conftest.$ac_build_objext \
+    conftest$ac_build_exeext conftest.$ac_ext
+  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" = xyes; then :
+  gl_build_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+else
+  gl_build_unknown_warnings_are_errors=
+fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Wold-style-definition" >&5
+$as_echo_n "checking whether $CC_FOR_BUILD handles -Wold-style-definition... " >&6; }
+if ${gl_cv_warn_CFLAGS_FOR_BUILD__Wold_style_definition+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
+  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Wold-style-definition"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS_FOR_BUILD__Wold_style_definition=yes
+else
+  gl_cv_warn_CFLAGS_FOR_BUILD__Wold_style_definition=no
+fi
+rm -f core conftest.err conftest.$ac_build_objext \
+    conftest$ac_build_exeext conftest.$ac_ext
+  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Wold_style_definition" >&5
+$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Wold_style_definition" >&6; }
+if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Wold_style_definition" = xyes; then :
+  as_fn_append WARN_CFLAGS_FOR_BUILD " -Wold-style-definition"
+fi
+
+
+if test x${gl_build_unknown_warnings_are_errors+set} = x; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
+  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=yes
+else
+  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=no
+fi
+rm -f core conftest.err conftest.$ac_build_objext \
+    conftest$ac_build_exeext conftest.$ac_ext
+  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" = xyes; then :
+  gl_build_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+else
+  gl_build_unknown_warnings_are_errors=
+fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Woverride-init" >&5
+$as_echo_n "checking whether $CC_FOR_BUILD handles -Woverride-init... " >&6; }
+if ${gl_cv_warn_CFLAGS_FOR_BUILD__Woverride_init+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
+  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Woverride-init"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS_FOR_BUILD__Woverride_init=yes
+else
+  gl_cv_warn_CFLAGS_FOR_BUILD__Woverride_init=no
+fi
+rm -f core conftest.err conftest.$ac_build_objext \
+    conftest$ac_build_exeext conftest.$ac_ext
+  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Woverride_init" >&5
+$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Woverride_init" >&6; }
+if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Woverride_init" = xyes; then :
+  as_fn_append WARN_CFLAGS_FOR_BUILD " -Woverride-init"
+fi
+
+
+if test x${gl_build_unknown_warnings_are_errors+set} = x; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
+  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=yes
+else
+  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=no
+fi
+rm -f core conftest.err conftest.$ac_build_objext \
+    conftest$ac_build_exeext conftest.$ac_ext
+  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" = xyes; then :
+  gl_build_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+else
+  gl_build_unknown_warnings_are_errors=
+fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Wsign-compare" >&5
+$as_echo_n "checking whether $CC_FOR_BUILD handles -Wsign-compare... " >&6; }
+if ${gl_cv_warn_CFLAGS_FOR_BUILD__Wsign_compare+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
+  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Wsign-compare"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS_FOR_BUILD__Wsign_compare=yes
+else
+  gl_cv_warn_CFLAGS_FOR_BUILD__Wsign_compare=no
+fi
+rm -f core conftest.err conftest.$ac_build_objext \
+    conftest$ac_build_exeext conftest.$ac_ext
+  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Wsign_compare" >&5
+$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Wsign_compare" >&6; }
+if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Wsign_compare" = xyes; then :
+  as_fn_append WARN_CFLAGS_FOR_BUILD " -Wsign-compare"
+fi
+
+
+if test x${gl_build_unknown_warnings_are_errors+set} = x; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
+  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=yes
+else
+  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=no
+fi
+rm -f core conftest.err conftest.$ac_build_objext \
+    conftest$ac_build_exeext conftest.$ac_ext
+  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" = xyes; then :
+  gl_build_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+else
+  gl_build_unknown_warnings_are_errors=
+fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Wtype-limits" >&5
+$as_echo_n "checking whether $CC_FOR_BUILD handles -Wtype-limits... " >&6; }
+if ${gl_cv_warn_CFLAGS_FOR_BUILD__Wtype_limits+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
+  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Wtype-limits"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS_FOR_BUILD__Wtype_limits=yes
+else
+  gl_cv_warn_CFLAGS_FOR_BUILD__Wtype_limits=no
+fi
+rm -f core conftest.err conftest.$ac_build_objext \
+    conftest$ac_build_exeext conftest.$ac_ext
+  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Wtype_limits" >&5
+$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Wtype_limits" >&6; }
+if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Wtype_limits" = xyes; then :
+  as_fn_append WARN_CFLAGS_FOR_BUILD " -Wtype-limits"
+fi
+
+
+if test x${gl_build_unknown_warnings_are_errors+set} = x; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
+  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=yes
+else
+  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=no
+fi
+rm -f core conftest.err conftest.$ac_build_objext \
+    conftest$ac_build_exeext conftest.$ac_ext
+  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" = xyes; then :
+  gl_build_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+else
+  gl_build_unknown_warnings_are_errors=
+fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Wwrite-strings" >&5
+$as_echo_n "checking whether $CC_FOR_BUILD handles -Wwrite-strings... " >&6; }
+if ${gl_cv_warn_CFLAGS_FOR_BUILD__Wwrite_strings+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
+  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Wwrite-strings"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS_FOR_BUILD__Wwrite_strings=yes
+else
+  gl_cv_warn_CFLAGS_FOR_BUILD__Wwrite_strings=no
+fi
+rm -f core conftest.err conftest.$ac_build_objext \
+    conftest$ac_build_exeext conftest.$ac_ext
+  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Wwrite_strings" >&5
+$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Wwrite_strings" >&6; }
+if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Wwrite_strings" = xyes; then :
+  as_fn_append WARN_CFLAGS_FOR_BUILD " -Wwrite-strings"
+fi
+
+
+# Check whether --enable-gcc-Werror was given.
+if test "${enable_gcc_Werror+set}" = set; then :
+  enableval=$enable_gcc_Werror; case "$enable_gcc_Werror" in
+               yes|no|no,*) ;;
+               *) as_fn_error $? "bad value $enable_gcc_Werror for gcc-Werror option" "$LINENO" 5 ;;
+              esac
+else
+  enable_gcc_Werror="$st_cv_build_enable_Werror"
+fi
+
+if test "$enable_gcc_Werror" = yes; then
+  if test x${gl_build_unknown_warnings_are_errors+set} = x; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
+  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=yes
+else
+  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=no
+fi
+rm -f core conftest.err conftest.$ac_build_objext \
+    conftest$ac_build_exeext conftest.$ac_ext
+  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" = xyes; then :
+  gl_build_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+else
+  gl_build_unknown_warnings_are_errors=
+fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Werror" >&5
+$as_echo_n "checking whether $CC_FOR_BUILD handles -Werror... " >&6; }
+if ${gl_cv_warn_CFLAGS_FOR_BUILD__Werror+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
+  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Werror"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gl_cv_warn_CFLAGS_FOR_BUILD__Werror=yes
+else
+  gl_cv_warn_CFLAGS_FOR_BUILD__Werror=no
+fi
+rm -f core conftest.err conftest.$ac_build_objext \
+    conftest$ac_build_exeext conftest.$ac_ext
+  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Werror" >&5
+$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Werror" >&6; }
+if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Werror" = xyes; then :
+  as_fn_append WARN_CFLAGS_FOR_BUILD " -Werror"
+fi
+
+
+fi
+
+
+
+if test -n "${st_saved_cross_compiling+set}"; then :
+  cross_compiling="${st_saved_cross_compiling}"; unset st_saved_cross_compiling
+fi
+
+if test -n "${st_saved_ac_tool_prefix+set}"; then :
+  ac_tool_prefix="${st_saved_ac_tool_prefix}"; unset st_saved_ac_tool_prefix
+fi
+
+if test -n "${st_saved_ac_link+set}"; then :
+  ac_link="${st_saved_ac_link}"; unset st_saved_ac_link
+fi
+
+if test -n "${st_saved_ac_cv_c_decl_report+set}"; then :
+  ac_cv_c_decl_report="${st_saved_ac_cv_c_decl_report}"; unset st_saved_ac_cv_c_decl_report
+fi
+
+if test -n "${st_saved_ac_cv_c_compiler_gnu+set}"; then :
+  ac_cv_c_compiler_gnu="${st_saved_ac_cv_c_compiler_gnu}"; unset st_saved_ac_cv_c_compiler_gnu
+fi
+
+if test -n "${st_saved_ac_cpp+set}"; then :
+  ac_cpp="${st_saved_ac_cpp}"; unset st_saved_ac_cpp
+fi
+
+if test -n "${st_saved_ac_compiler_gnu+set}"; then :
+  ac_compiler_gnu="${st_saved_ac_compiler_gnu}"; unset st_saved_ac_compiler_gnu
+fi
+
+if test -n "${st_saved_ac_compile+set}"; then :
+  ac_compile="${st_saved_ac_compile}"; unset st_saved_ac_compile
+fi
+
+if test -n "${st_saved_ac_c_werror_flag+set}"; then :
+  ac_c_werror_flag="${st_saved_ac_c_werror_flag}"; unset st_saved_ac_c_werror_flag
+fi
+
+if test -n "${st_saved_ac_c_preproc_warn_flag+set}"; then :
+  ac_c_preproc_warn_flag="${st_saved_ac_c_preproc_warn_flag}"; unset st_saved_ac_c_preproc_warn_flag
+fi
+
+if test -n "${st_saved_ac_c_decl_warn_flag+set}"; then :
+  ac_c_decl_warn_flag="${st_saved_ac_c_decl_warn_flag}"; unset st_saved_ac_c_decl_warn_flag
+fi
+
+
+
+BUILD_EXEEXT=$ac_build_exeext
+BUILD_OBJEXT=$ac_build_objext
+
+if test -n "$ac_tool_prefix"; then
+  for ac_prog in ar lib "link -lib"
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AR+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AR"; then
+  ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+$as_echo "$AR" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$AR" && break
+  done
+fi
+if test -z "$AR"; then
+  ac_ct_AR=$AR
+  for ac_prog in ar lib "link -lib"
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_AR+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_AR"; then
+  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_AR="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+$as_echo "$ac_ct_AR" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_AR" && break
+done
+
+  if test "x$ac_ct_AR" = x; then
+    AR="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    AR=$ac_ct_AR
+  fi
+fi
+
+: ${AR=ar}
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the archiver ($AR) interface" >&5
+$as_echo_n "checking the archiver ($AR) interface... " >&6; }
+if ${am_cv_ar_interface+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+   am_cv_ar_interface=ar
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int some_variable = 0;
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&5'
+      { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5
+  (eval $am_ar_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+      if test "$ac_status" -eq 0; then
+        am_cv_ar_interface=ar
+      else
+        am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&5'
+        { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5
+  (eval $am_ar_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+        if test "$ac_status" -eq 0; then
+          am_cv_ar_interface=lib
+        else
+          am_cv_ar_interface=unknown
+        fi
+      fi
+      rm -f conftest.lib libconftest.a
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_ar_interface" >&5
+$as_echo "$am_cv_ar_interface" >&6; }
+
+case $am_cv_ar_interface in
+ar)
+  ;;
+lib)
+  # Microsoft lib, so override with the ar-lib wrapper script.
+  # FIXME: It is wrong to rewrite AR.
+  # But if we don't then we get into trouble of one sort or another.
+  # A longer-term fix would be to have automake use am__AR in this case,
+  # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something
+  # similar.
+  AR="$am_aux_dir/ar-lib $AR"
+  ;;
+unknown)
+  as_fn_error $? "could not determine $AR interface" "$LINENO" 5
+  ;;
+esac
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for typeof syntax and keyword spelling" >&5
+$as_echo_n "checking for typeof syntax and keyword spelling... " >&6; }
+if ${ac_cv_c_typeof+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_c_typeof=no
+     for ac_kw in typeof __typeof__ no; do
+       test $ac_kw = no && break
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+          int value;
+          typedef struct {
+                  char a [1
+                          + ! (($ac_kw (value))
+                               (($ac_kw (value)) 0 < ($ac_kw (value)) -1
+                                ? ($ac_kw (value)) - 1
+                                : ~ (~ ($ac_kw (value)) 0
+                                     << sizeof ($ac_kw (value)))))]; }
+             ac__typeof_type_;
+          return
+            (! ((void) ((ac__typeof_type_ *) 0), 0));
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_typeof=$ac_kw
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+       test $ac_cv_c_typeof != no && break
+     done
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_typeof" >&5
+$as_echo "$ac_cv_c_typeof" >&6; }
+  if test $ac_cv_c_typeof != no; then
+
+$as_echo "#define HAVE_TYPEOF 1" >>confdefs.h
+
+    if test $ac_cv_c_typeof != typeof; then
+
+cat >>confdefs.h <<_ACEOF
+#define typeof $ac_cv_c_typeof
+_ACEOF
+
+    fi
+  fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5
+$as_echo_n "checking for uid_t in sys/types.h... " >&6; }
+if ${ac_cv_type_uid_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "uid_t" >/dev/null 2>&1; then :
+  ac_cv_type_uid_t=yes
+else
+  ac_cv_type_uid_t=no
+fi
+rm -f conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5
+$as_echo "$ac_cv_type_uid_t" >&6; }
+if test $ac_cv_type_uid_t = no; then
+
+$as_echo "#define uid_t int" >>confdefs.h
+
+
+$as_echo "#define gid_t int" >>confdefs.h
+
+fi
+
+
+for ac_func in accept4 be64toh fallocate fanotify_mark fcntl64 fopen64 fork fputs_unlocked fstatat ftruncate futimens iconv_open if_indextoname open64 open_memstream preadv process_vm_readv pwritev readahead signalfd stpcpy strerror strndup sync_file_range
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+ac_fn_c_check_type "$LINENO" "sig_atomic_t" "ac_cv_type_sig_atomic_t" "#include <signal.h>
+"
+if test "x$ac_cv_type_sig_atomic_t" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_SIG_ATOMIC_T 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_type "$LINENO" "struct sigcontext" "ac_cv_type_struct_sigcontext" "#include <signal.h>
+"
+if test "x$ac_cv_type_struct_sigcontext" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_SIGCONTEXT 1
+_ACEOF
+
+
+fi
+
+
+ac_fn_c_check_type "$LINENO" "struct mmsghdr" "ac_cv_type_struct_mmsghdr" "#include <sys/socket.h>
+"
+if test "x$ac_cv_type_struct_mmsghdr" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_MMSGHDR 1
+_ACEOF
+
+
+fi
+
+
+ac_fn_c_check_type "$LINENO" "__kernel_long_t" "ac_cv_type___kernel_long_t" "#include <asm/posix_types.h>
+"
+if test "x$ac_cv_type___kernel_long_t" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE___KERNEL_LONG_T 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_type "$LINENO" "__kernel_ulong_t" "ac_cv_type___kernel_ulong_t" "#include <asm/posix_types.h>
+"
+if test "x$ac_cv_type___kernel_ulong_t" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE___KERNEL_ULONG_T 1
+_ACEOF
+
+
+fi
+
+
+ac_fn_c_check_type "$LINENO" "struct __kernel_timespec" "ac_cv_type_struct___kernel_timespec" "#include <linux/time_types.h>
+"
+if test "x$ac_cv_type_struct___kernel_timespec" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT___KERNEL_TIMESPEC 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_type "$LINENO" "struct __kernel_sock_timeval" "ac_cv_type_struct___kernel_sock_timeval" "#include <linux/time_types.h>
+"
+if test "x$ac_cv_type_struct___kernel_sock_timeval" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT___KERNEL_SOCK_TIMEVAL 1
+_ACEOF
+
+
+fi
+
+
+ac_fn_c_check_type "$LINENO" "struct stat64" "ac_cv_type_struct_stat64" "#include <sys/types.h>
+#include <asm/stat.h>
+"
+if test "x$ac_cv_type_struct_stat64" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STAT64 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_type "$LINENO" "struct __old_kernel_stat" "ac_cv_type_struct___old_kernel_stat" "#include <sys/types.h>
+#include <asm/stat.h>
+"
+if test "x$ac_cv_type_struct___old_kernel_stat" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT___OLD_KERNEL_STAT 1
+_ACEOF
+
+
+fi
+
+
+ac_fn_c_check_type "$LINENO" "struct user_desc" "ac_cv_type_struct_user_desc" "#include <asm/ldt.h>
+"
+if test "x$ac_cv_type_struct_user_desc" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_USER_DESC 1
+_ACEOF
+
+ac_fn_c_check_member "$LINENO" "struct user_desc" "lm" "ac_cv_member_struct_user_desc_lm" "#include <asm/ldt.h>
+"
+if test "x$ac_cv_member_struct_user_desc_lm" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_USER_DESC_LM 1
+_ACEOF
+
+
+fi
+
+fi
+
+
+ac_fn_c_check_member "$LINENO" "struct stat" "st_mtime_nsec" "ac_cv_member_struct_stat_st_mtime_nsec" "#include <sys/types.h>
+#include <asm/stat.h>
+"
+if test "x$ac_cv_member_struct_stat_st_mtime_nsec" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STAT_ST_MTIME_NSEC 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct stat64" "st_mtime_nsec" "ac_cv_member_struct_stat64_st_mtime_nsec" "#include <sys/types.h>
+#include <asm/stat.h>
+"
+if test "x$ac_cv_member_struct_stat64_st_mtime_nsec" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STAT64_ST_MTIME_NSEC 1
+_ACEOF
+
+
+fi
+
+
+ac_fn_c_check_type "$LINENO" "struct pt_all_user_regs" "ac_cv_type_struct_pt_all_user_regs" "#include <sys/ptrace.h>
+"
+if test "x$ac_cv_type_struct_pt_all_user_regs" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_PT_ALL_USER_REGS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_type "$LINENO" "struct ia64_fpreg" "ac_cv_type_struct_ia64_fpreg" "#include <sys/ptrace.h>
+"
+if test "x$ac_cv_type_struct_ia64_fpreg" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IA64_FPREG 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_type "$LINENO" "struct ptrace_peeksiginfo_args" "ac_cv_type_struct_ptrace_peeksiginfo_args" "#include <sys/ptrace.h>
+"
+if test "x$ac_cv_type_struct_ptrace_peeksiginfo_args" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_PTRACE_PEEKSIGINFO_ARGS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_type "$LINENO" "struct __ptrace_syscall_info" "ac_cv_type_struct___ptrace_syscall_info" "#include <sys/ptrace.h>
+"
+if test "x$ac_cv_type_struct___ptrace_syscall_info" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT___PTRACE_SYSCALL_INFO 1
+_ACEOF
+
+
+fi
+
+
+ac_fn_c_check_type "$LINENO" "struct ptrace_syscall_info" "ac_cv_type_struct_ptrace_syscall_info" "#include <linux/ptrace.h>
+"
+if test "x$ac_cv_type_struct_ptrace_syscall_info" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_PTRACE_SYSCALL_INFO 1
+_ACEOF
+
+
+fi
+
+
+# For kernels that do not have v3.10-rc1~201^2~11
+ac_fn_c_check_type "$LINENO" "s390_compat_regs" "ac_cv_type_s390_compat_regs" "#include <asm/ptrace.h>
+"
+if test "x$ac_cv_type_s390_compat_regs" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_S390_COMPAT_REGS 1
+_ACEOF
+
+
+fi
+
+
+ac_fn_c_check_type "$LINENO" "struct flock" "ac_cv_type_struct_flock" "#include <sys/types.h>
+#include <linux/fcntl.h>
+"
+if test "x$ac_cv_type_struct_flock" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_FLOCK 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_type "$LINENO" "struct flock64" "ac_cv_type_struct_flock64" "#include <sys/types.h>
+#include <linux/fcntl.h>
+"
+if test "x$ac_cv_type_struct_flock64" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_FLOCK64 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_type "$LINENO" "struct __kernel_flock" "ac_cv_type_struct___kernel_flock" "#include <sys/types.h>
+#include <linux/fcntl.h>
+"
+if test "x$ac_cv_type_struct___kernel_flock" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT___KERNEL_FLOCK 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_type "$LINENO" "struct __kernel_flock64" "ac_cv_type_struct___kernel_flock64" "#include <sys/types.h>
+#include <linux/fcntl.h>
+"
+if test "x$ac_cv_type_struct___kernel_flock64" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT___KERNEL_FLOCK64 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_type "$LINENO" "struct f_owner_ex" "ac_cv_type_struct_f_owner_ex" "#include <sys/types.h>
+#include <linux/fcntl.h>
+"
+if test "x$ac_cv_type_struct_f_owner_ex" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_F_OWNER_EX 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_type "$LINENO" "struct __kernel_f_owner_ex" "ac_cv_type_struct___kernel_f_owner_ex" "#include <sys/types.h>
+#include <linux/fcntl.h>
+"
+if test "x$ac_cv_type_struct___kernel_f_owner_ex" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT___KERNEL_F_OWNER_EX 1
+_ACEOF
+
+
+fi
+
+
+ac_fn_c_check_type "$LINENO" "struct 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 :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_KEYCTL_KDF_PARAMS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_type "$LINENO" "struct keyctl_pkey_params" "ac_cv_type_struct_keyctl_pkey_params" "#include <linux/keyctl.h>
+"
+if test "x$ac_cv_type_struct_keyctl_pkey_params" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_KEYCTL_PKEY_PARAMS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_type "$LINENO" "struct keyctl_pkey_query" "ac_cv_type_struct_keyctl_pkey_query" "#include <linux/keyctl.h>
+"
+if test "x$ac_cv_type_struct_keyctl_pkey_query" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_KEYCTL_PKEY_QUERY 1
+_ACEOF
+
+
+fi
+
+
+ac_fn_c_check_member "$LINENO" "struct utsname" "domainname" "ac_cv_member_struct_utsname_domainname" "#include <sys/utsname.h>
+"
+if test "x$ac_cv_member_struct_utsname_domainname" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_UTSNAME_DOMAINNAME 1
+_ACEOF
+
+
+fi
+
+
+ac_fn_c_check_member "$LINENO" "siginfo_t" "si_syscall" "ac_cv_member_siginfo_t_si_syscall" "#include <signal.h>
+"
+if test "x$ac_cv_member_siginfo_t_si_syscall" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_SIGINFO_T_SI_SYSCALL 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "siginfo_t" "si_timerid" "ac_cv_member_siginfo_t_si_timerid" "#include <signal.h>
+"
+if test "x$ac_cv_member_siginfo_t_si_timerid" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_SIGINFO_T_SI_TIMERID 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "siginfo_t" "si_overrun" "ac_cv_member_siginfo_t_si_overrun" "#include <signal.h>
+"
+if test "x$ac_cv_member_siginfo_t_si_overrun" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_SIGINFO_T_SI_OVERRUN 1
+_ACEOF
+
+
+fi
+
+
+ac_fn_c_check_member "$LINENO" "struct perf_event_attr" "precise_ip" "ac_cv_member_struct_perf_event_attr_precise_ip" "#include <linux/perf_event.h>
+"
+if test "x$ac_cv_member_struct_perf_event_attr_precise_ip" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_PERF_EVENT_ATTR_PRECISE_IP 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct perf_event_attr" "mmap_data" "ac_cv_member_struct_perf_event_attr_mmap_data" "#include <linux/perf_event.h>
+"
+if test "x$ac_cv_member_struct_perf_event_attr_mmap_data" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_PERF_EVENT_ATTR_MMAP_DATA 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct perf_event_attr" "sample_id_all" "ac_cv_member_struct_perf_event_attr_sample_id_all" "#include <linux/perf_event.h>
+"
+if test "x$ac_cv_member_struct_perf_event_attr_sample_id_all" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_PERF_EVENT_ATTR_SAMPLE_ID_ALL 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct perf_event_attr" "exclude_host" "ac_cv_member_struct_perf_event_attr_exclude_host" "#include <linux/perf_event.h>
+"
+if test "x$ac_cv_member_struct_perf_event_attr_exclude_host" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_PERF_EVENT_ATTR_EXCLUDE_HOST 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct perf_event_attr" "exclude_guest" "ac_cv_member_struct_perf_event_attr_exclude_guest" "#include <linux/perf_event.h>
+"
+if test "x$ac_cv_member_struct_perf_event_attr_exclude_guest" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_PERF_EVENT_ATTR_EXCLUDE_GUEST 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct perf_event_attr" "exclude_callchain_kernel" "ac_cv_member_struct_perf_event_attr_exclude_callchain_kernel" "#include <linux/perf_event.h>
+"
+if test "x$ac_cv_member_struct_perf_event_attr_exclude_callchain_kernel" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_PERF_EVENT_ATTR_EXCLUDE_CALLCHAIN_KERNEL 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct perf_event_attr" "exclude_callchain_user" "ac_cv_member_struct_perf_event_attr_exclude_callchain_user" "#include <linux/perf_event.h>
+"
+if test "x$ac_cv_member_struct_perf_event_attr_exclude_callchain_user" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_PERF_EVENT_ATTR_EXCLUDE_CALLCHAIN_USER 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct perf_event_attr" "mmap2" "ac_cv_member_struct_perf_event_attr_mmap2" "#include <linux/perf_event.h>
+"
+if test "x$ac_cv_member_struct_perf_event_attr_mmap2" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_PERF_EVENT_ATTR_MMAP2 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct perf_event_attr" "comm_exec" "ac_cv_member_struct_perf_event_attr_comm_exec" "#include <linux/perf_event.h>
+"
+if test "x$ac_cv_member_struct_perf_event_attr_comm_exec" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_PERF_EVENT_ATTR_COMM_EXEC 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct perf_event_attr" "use_clockid" "ac_cv_member_struct_perf_event_attr_use_clockid" "#include <linux/perf_event.h>
+"
+if test "x$ac_cv_member_struct_perf_event_attr_use_clockid" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_PERF_EVENT_ATTR_USE_CLOCKID 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct perf_event_attr" "context_switch" "ac_cv_member_struct_perf_event_attr_context_switch" "#include <linux/perf_event.h>
+"
+if test "x$ac_cv_member_struct_perf_event_attr_context_switch" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_PERF_EVENT_ATTR_CONTEXT_SWITCH 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct perf_event_attr" "write_backward" "ac_cv_member_struct_perf_event_attr_write_backward" "#include <linux/perf_event.h>
+"
+if test "x$ac_cv_member_struct_perf_event_attr_write_backward" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_PERF_EVENT_ATTR_WRITE_BACKWARD 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct perf_event_attr" "namespaces" "ac_cv_member_struct_perf_event_attr_namespaces" "#include <linux/perf_event.h>
+"
+if test "x$ac_cv_member_struct_perf_event_attr_namespaces" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_PERF_EVENT_ATTR_NAMESPACES 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct perf_event_attr" "bp_type" "ac_cv_member_struct_perf_event_attr_bp_type" "#include <linux/perf_event.h>
+"
+if test "x$ac_cv_member_struct_perf_event_attr_bp_type" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_PERF_EVENT_ATTR_BP_TYPE 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct perf_event_attr" "config1" "ac_cv_member_struct_perf_event_attr_config1" "#include <linux/perf_event.h>
+"
+if test "x$ac_cv_member_struct_perf_event_attr_config1" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_PERF_EVENT_ATTR_CONFIG1 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct perf_event_attr" "config2" "ac_cv_member_struct_perf_event_attr_config2" "#include <linux/perf_event.h>
+"
+if test "x$ac_cv_member_struct_perf_event_attr_config2" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_PERF_EVENT_ATTR_CONFIG2 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct perf_event_attr" "branch_sample_type" "ac_cv_member_struct_perf_event_attr_branch_sample_type" "#include <linux/perf_event.h>
+"
+if test "x$ac_cv_member_struct_perf_event_attr_branch_sample_type" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_PERF_EVENT_ATTR_BRANCH_SAMPLE_TYPE 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct perf_event_attr" "sample_regs_user" "ac_cv_member_struct_perf_event_attr_sample_regs_user" "#include <linux/perf_event.h>
+"
+if test "x$ac_cv_member_struct_perf_event_attr_sample_regs_user" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_PERF_EVENT_ATTR_SAMPLE_REGS_USER 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct perf_event_attr" "sample_stack_user" "ac_cv_member_struct_perf_event_attr_sample_stack_user" "#include <linux/perf_event.h>
+"
+if test "x$ac_cv_member_struct_perf_event_attr_sample_stack_user" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_PERF_EVENT_ATTR_SAMPLE_STACK_USER 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct perf_event_attr" "sample_regs_intr" "ac_cv_member_struct_perf_event_attr_sample_regs_intr" "#include <linux/perf_event.h>
+"
+if test "x$ac_cv_member_struct_perf_event_attr_sample_regs_intr" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_PERF_EVENT_ATTR_SAMPLE_REGS_INTR 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct perf_event_attr" "aux_watermark" "ac_cv_member_struct_perf_event_attr_aux_watermark" "#include <linux/perf_event.h>
+"
+if test "x$ac_cv_member_struct_perf_event_attr_aux_watermark" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_PERF_EVENT_ATTR_AUX_WATERMARK 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct perf_event_attr" "sample_max_stack" "ac_cv_member_struct_perf_event_attr_sample_max_stack" "#include <linux/perf_event.h>
+"
+if test "x$ac_cv_member_struct_perf_event_attr_sample_max_stack" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_PERF_EVENT_ATTR_SAMPLE_MAX_STACK 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct perf_event_attr" "aux_sample_size" "ac_cv_member_struct_perf_event_attr_aux_sample_size" "#include <linux/perf_event.h>
+"
+if test "x$ac_cv_member_struct_perf_event_attr_aux_sample_size" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_PERF_EVENT_ATTR_AUX_SAMPLE_SIZE 1
+_ACEOF
+
+
+fi
+
+
+for ac_header in asm/cachectl.h asm/guarded_storage.h asm/sysmips.h elf.h gcov.h iconv.h mqueue.h netinet/sctp.h netipx/ipx.h paths.h scsi/sg.h sys/eventfd.h sys/fanotify.h sys/ipc.h sys/quota.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"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_header in linux/bsg.h linux/close_range.h linux/dm-ioctl.h linux/dqblk_xfs.h linux/falloc.h linux/fib_rules.h linux/fiemap.h linux/hiddev.h linux/ip_vs.h linux/ipc.h linux/kcmp.h linux/kvm.h linux/memfd.h linux/mmtimer.h linux/mount.h linux/mqueue.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/openat2.h linux/perf_event.h linux/quota.h linux/sched.h linux/seccomp.h linux/securebits.h linux/tee.h linux/userfaultfd.h linux/utsname.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+#include <linux/types.h>
+
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_header in linux/if_addr.h linux/if_link.h linux/neighbour.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+#include <sys/socket.h>
+#include <linux/types.h>
+
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_header in asm/sigcontext.h
+do :
+  ac_fn_c_check_header_compile "$LINENO" "asm/sigcontext.h" "ac_cv_header_asm_sigcontext_h" "#include <signal.h>
+"
+if test "x$ac_cv_header_asm_sigcontext_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ASM_SIGCONTEXT_H 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_header in netinet/tcp.h netinet/udp.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "#include <netinet/in.h>
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+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`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "#include <netinet/in.h>
+#include <net/if.h>
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_header in linux/bpf.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "linux/bpf.h" "ac_cv_header_linux_bpf_h" "$ac_includes_default"
+if test "x$ac_cv_header_linux_bpf_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LINUX_BPF_H 1
+_ACEOF
+
+       ac_fn_c_check_type "$LINENO" "struct bpf_insn" "ac_cv_type_struct_bpf_insn" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_type_struct_bpf_insn" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_INSN 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_type "$LINENO" "struct bpf_map_info" "ac_cv_type_struct_bpf_map_info" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_type_struct_bpf_map_info" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_MAP_INFO 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_type "$LINENO" "struct bpf_prog_info" "ac_cv_type_struct_bpf_prog_info" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_type_struct_bpf_prog_info" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_PROG_INFO 1
+_ACEOF
+
+
+fi
+
+               ac_fn_c_check_member "$LINENO" "struct bpf_map_info" "btf_id" "ac_cv_member_struct_bpf_map_info_btf_id" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_map_info_btf_id" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_MAP_INFO_BTF_ID 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_map_info" "btf_key_type_id" "ac_cv_member_struct_bpf_map_info_btf_key_type_id" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_map_info_btf_key_type_id" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_MAP_INFO_BTF_KEY_TYPE_ID 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_map_info" "btf_value_type_id" "ac_cv_member_struct_bpf_map_info_btf_value_type_id" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_map_info_btf_value_type_id" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_MAP_INFO_BTF_VALUE_TYPE_ID 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_map_info" "btf_vmlinux_value_type_id" "ac_cv_member_struct_bpf_map_info_btf_vmlinux_value_type_id" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_map_info_btf_vmlinux_value_type_id" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_MAP_INFO_BTF_VMLINUX_VALUE_TYPE_ID 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_map_info" "id" "ac_cv_member_struct_bpf_map_info_id" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_map_info_id" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_MAP_INFO_ID 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_map_info" "ifindex" "ac_cv_member_struct_bpf_map_info_ifindex" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_map_info_ifindex" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_MAP_INFO_IFINDEX 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_map_info" "key_size" "ac_cv_member_struct_bpf_map_info_key_size" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_map_info_key_size" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_MAP_INFO_KEY_SIZE 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_map_info" "map_flags" "ac_cv_member_struct_bpf_map_info_map_flags" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_map_info_map_flags" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_MAP_INFO_MAP_FLAGS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_map_info" "max_entries" "ac_cv_member_struct_bpf_map_info_max_entries" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_map_info_max_entries" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_MAP_INFO_MAX_ENTRIES 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_map_info" "name" "ac_cv_member_struct_bpf_map_info_name" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_map_info_name" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_MAP_INFO_NAME 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_map_info" "type" "ac_cv_member_struct_bpf_map_info_type" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_map_info_type" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_MAP_INFO_TYPE 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_map_info" "value_size" "ac_cv_member_struct_bpf_map_info_value_size" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_map_info_value_size" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_MAP_INFO_VALUE_SIZE 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "btf_id" "ac_cv_member_struct_bpf_prog_info_btf_id" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_prog_info_btf_id" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_PROG_INFO_BTF_ID 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "created_by_uid" "ac_cv_member_struct_bpf_prog_info_created_by_uid" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_prog_info_created_by_uid" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_PROG_INFO_CREATED_BY_UID 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "func_info" "ac_cv_member_struct_bpf_prog_info_func_info" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_prog_info_func_info" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_PROG_INFO_FUNC_INFO 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "func_info_rec_size" "ac_cv_member_struct_bpf_prog_info_func_info_rec_size" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_prog_info_func_info_rec_size" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_PROG_INFO_FUNC_INFO_REC_SIZE 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "id" "ac_cv_member_struct_bpf_prog_info_id" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_prog_info_id" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_PROG_INFO_ID 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "ifindex" "ac_cv_member_struct_bpf_prog_info_ifindex" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_prog_info_ifindex" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_PROG_INFO_IFINDEX 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "jited_func_lens" "ac_cv_member_struct_bpf_prog_info_jited_func_lens" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_prog_info_jited_func_lens" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_PROG_INFO_JITED_FUNC_LENS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "jited_ksyms" "ac_cv_member_struct_bpf_prog_info_jited_ksyms" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_prog_info_jited_ksyms" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_PROG_INFO_JITED_KSYMS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "jited_line_info" "ac_cv_member_struct_bpf_prog_info_jited_line_info" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_prog_info_jited_line_info" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_PROG_INFO_JITED_LINE_INFO 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "jited_line_info_rec_size" "ac_cv_member_struct_bpf_prog_info_jited_line_info_rec_size" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_prog_info_jited_line_info_rec_size" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_PROG_INFO_JITED_LINE_INFO_REC_SIZE 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "jited_prog_insns" "ac_cv_member_struct_bpf_prog_info_jited_prog_insns" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_prog_info_jited_prog_insns" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_PROG_INFO_JITED_PROG_INSNS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "jited_prog_len" "ac_cv_member_struct_bpf_prog_info_jited_prog_len" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_prog_info_jited_prog_len" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_PROG_INFO_JITED_PROG_LEN 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "line_info" "ac_cv_member_struct_bpf_prog_info_line_info" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_prog_info_line_info" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_PROG_INFO_LINE_INFO 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "line_info_rec_size" "ac_cv_member_struct_bpf_prog_info_line_info_rec_size" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_prog_info_line_info_rec_size" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_PROG_INFO_LINE_INFO_REC_SIZE 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "load_time" "ac_cv_member_struct_bpf_prog_info_load_time" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_prog_info_load_time" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_PROG_INFO_LOAD_TIME 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "map_ids" "ac_cv_member_struct_bpf_prog_info_map_ids" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_prog_info_map_ids" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_PROG_INFO_MAP_IDS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "name" "ac_cv_member_struct_bpf_prog_info_name" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_prog_info_name" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_PROG_INFO_NAME 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "nr_func_info" "ac_cv_member_struct_bpf_prog_info_nr_func_info" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_prog_info_nr_func_info" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_PROG_INFO_NR_FUNC_INFO 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "nr_jited_func_lens" "ac_cv_member_struct_bpf_prog_info_nr_jited_func_lens" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_prog_info_nr_jited_func_lens" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_PROG_INFO_NR_JITED_FUNC_LENS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "nr_jited_ksyms" "ac_cv_member_struct_bpf_prog_info_nr_jited_ksyms" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_prog_info_nr_jited_ksyms" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_PROG_INFO_NR_JITED_KSYMS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "nr_jited_line_info" "ac_cv_member_struct_bpf_prog_info_nr_jited_line_info" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_prog_info_nr_jited_line_info" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_PROG_INFO_NR_JITED_LINE_INFO 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "nr_line_info" "ac_cv_member_struct_bpf_prog_info_nr_line_info" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_prog_info_nr_line_info" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_PROG_INFO_NR_LINE_INFO 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "nr_map_ids" "ac_cv_member_struct_bpf_prog_info_nr_map_ids" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_prog_info_nr_map_ids" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_PROG_INFO_NR_MAP_IDS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "nr_prog_tags" "ac_cv_member_struct_bpf_prog_info_nr_prog_tags" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_prog_info_nr_prog_tags" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_PROG_INFO_NR_PROG_TAGS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "prog_tags" "ac_cv_member_struct_bpf_prog_info_prog_tags" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_prog_info_prog_tags" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_PROG_INFO_PROG_TAGS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "run_cnt" "ac_cv_member_struct_bpf_prog_info_run_cnt" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_prog_info_run_cnt" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_PROG_INFO_RUN_CNT 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "run_time_ns" "ac_cv_member_struct_bpf_prog_info_run_time_ns" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_prog_info_run_time_ns" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_PROG_INFO_RUN_TIME_NS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "tag" "ac_cv_member_struct_bpf_prog_info_tag" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_prog_info_tag" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_PROG_INFO_TAG 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "type" "ac_cv_member_struct_bpf_prog_info_type" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_prog_info_type" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_PROG_INFO_TYPE 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "xlated_prog_insns" "ac_cv_member_struct_bpf_prog_info_xlated_prog_insns" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_prog_info_xlated_prog_insns" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_PROG_INFO_XLATED_PROG_INSNS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "xlated_prog_len" "ac_cv_member_struct_bpf_prog_info_xlated_prog_len" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_prog_info_xlated_prog_len" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_PROG_INFO_XLATED_PROG_LEN 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "attach_bpf_fd" "ac_cv_member_union_bpf_attr_attach_bpf_fd" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_attach_bpf_fd" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_ATTACH_BPF_FD 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "attach_btf_id" "ac_cv_member_union_bpf_attr_attach_btf_id" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_attach_btf_id" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_ATTACH_BTF_ID 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "attach_flags" "ac_cv_member_union_bpf_attr_attach_flags" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_attach_flags" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_ATTACH_FLAGS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "attach_prog_fd" "ac_cv_member_union_bpf_attr_attach_prog_fd" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_attach_prog_fd" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_ATTACH_PROG_FD 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "attach_type" "ac_cv_member_union_bpf_attr_attach_type" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_attach_type" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_ATTACH_TYPE 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "batch.count" "ac_cv_member_union_bpf_attr_batch_count" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_batch_count" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_BATCH_COUNT 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "batch.elem_flags" "ac_cv_member_union_bpf_attr_batch_elem_flags" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_batch_elem_flags" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_BATCH_ELEM_FLAGS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "batch.flags" "ac_cv_member_union_bpf_attr_batch_flags" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_batch_flags" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_BATCH_FLAGS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "batch.in_batch" "ac_cv_member_union_bpf_attr_batch_in_batch" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_batch_in_batch" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_BATCH_IN_BATCH 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "batch.keys" "ac_cv_member_union_bpf_attr_batch_keys" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_batch_keys" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_BATCH_KEYS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "batch.map_fd" "ac_cv_member_union_bpf_attr_batch_map_fd" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_batch_map_fd" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_BATCH_MAP_FD 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "batch.out_batch" "ac_cv_member_union_bpf_attr_batch_out_batch" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_batch_out_batch" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_BATCH_OUT_BATCH 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "batch.values" "ac_cv_member_union_bpf_attr_batch_values" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_batch_values" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_BATCH_VALUES 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "bpf_fd" "ac_cv_member_union_bpf_attr_bpf_fd" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_bpf_fd" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_BPF_FD 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "btf" "ac_cv_member_union_bpf_attr_btf" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_btf" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_BTF 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "btf_fd" "ac_cv_member_union_bpf_attr_btf_fd" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_btf_fd" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_BTF_FD 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "btf_id" "ac_cv_member_union_bpf_attr_btf_id" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_btf_id" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_BTF_ID 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "btf_key_type_id" "ac_cv_member_union_bpf_attr_btf_key_type_id" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_btf_key_type_id" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_BTF_KEY_TYPE_ID 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "btf_log_buf" "ac_cv_member_union_bpf_attr_btf_log_buf" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_btf_log_buf" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_BTF_LOG_BUF 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "btf_log_level" "ac_cv_member_union_bpf_attr_btf_log_level" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_btf_log_level" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_BTF_LOG_LEVEL 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "btf_log_size" "ac_cv_member_union_bpf_attr_btf_log_size" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_btf_log_size" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_BTF_LOG_SIZE 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "btf_size" "ac_cv_member_union_bpf_attr_btf_size" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_btf_size" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_BTF_SIZE 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "btf_value_type_id" "ac_cv_member_union_bpf_attr_btf_value_type_id" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_btf_value_type_id" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_BTF_VALUE_TYPE_ID 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "btf_vmlinux_value_type_id" "ac_cv_member_union_bpf_attr_btf_vmlinux_value_type_id" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_btf_vmlinux_value_type_id" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_BTF_VMLINUX_VALUE_TYPE_ID 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "dummy" "ac_cv_member_union_bpf_attr_dummy" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_dummy" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_DUMMY 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "expected_attach_type" "ac_cv_member_union_bpf_attr_expected_attach_type" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_expected_attach_type" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_EXPECTED_ATTACH_TYPE 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "file_flags" "ac_cv_member_union_bpf_attr_file_flags" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_file_flags" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_FILE_FLAGS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "flags" "ac_cv_member_union_bpf_attr_flags" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_flags" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_FLAGS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "func_info" "ac_cv_member_union_bpf_attr_func_info" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_func_info" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_FUNC_INFO 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "func_info_cnt" "ac_cv_member_union_bpf_attr_func_info_cnt" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_func_info_cnt" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_FUNC_INFO_CNT 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "func_info_rec_size" "ac_cv_member_union_bpf_attr_func_info_rec_size" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_func_info_rec_size" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_FUNC_INFO_REC_SIZE 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "info.bpf_fd" "ac_cv_member_union_bpf_attr_info_bpf_fd" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_info_bpf_fd" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_INFO_BPF_FD 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "info.info" "ac_cv_member_union_bpf_attr_info_info" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_info_info" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_INFO_INFO 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "info.info_len" "ac_cv_member_union_bpf_attr_info_info_len" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_info_info_len" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_INFO_INFO_LEN 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "inner_map_fd" "ac_cv_member_union_bpf_attr_inner_map_fd" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_inner_map_fd" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_INNER_MAP_FD 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "insn_cnt" "ac_cv_member_union_bpf_attr_insn_cnt" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_insn_cnt" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_INSN_CNT 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "insns" "ac_cv_member_union_bpf_attr_insns" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_insns" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_INSNS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "kern_version" "ac_cv_member_union_bpf_attr_kern_version" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_kern_version" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_KERN_VERSION 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "key" "ac_cv_member_union_bpf_attr_key" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_key" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_KEY 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "key_size" "ac_cv_member_union_bpf_attr_key_size" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_key_size" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_KEY_SIZE 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "license" "ac_cv_member_union_bpf_attr_license" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_license" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_LICENSE 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "line_info" "ac_cv_member_union_bpf_attr_line_info" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_line_info" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_LINE_INFO 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "line_info_cnt" "ac_cv_member_union_bpf_attr_line_info_cnt" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_line_info_cnt" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_LINE_INFO_CNT 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "line_info_rec_size" "ac_cv_member_union_bpf_attr_line_info_rec_size" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_line_info_rec_size" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_LINE_INFO_REC_SIZE 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "link_create.attach_type" "ac_cv_member_union_bpf_attr_link_create_attach_type" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_link_create_attach_type" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_LINK_CREATE_ATTACH_TYPE 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "link_create.flags" "ac_cv_member_union_bpf_attr_link_create_flags" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_link_create_flags" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_LINK_CREATE_FLAGS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "link_create.prog_fd" "ac_cv_member_union_bpf_attr_link_create_prog_fd" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_link_create_prog_fd" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_LINK_CREATE_PROG_FD 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "link_create.target_fd" "ac_cv_member_union_bpf_attr_link_create_target_fd" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_link_create_target_fd" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_LINK_CREATE_TARGET_FD 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "link_update.flags" "ac_cv_member_union_bpf_attr_link_update_flags" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_link_update_flags" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_LINK_UPDATE_FLAGS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "link_update.link_fd" "ac_cv_member_union_bpf_attr_link_update_link_fd" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_link_update_link_fd" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_LINK_UPDATE_LINK_FD 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "link_update.new_prog_fd" "ac_cv_member_union_bpf_attr_link_update_new_prog_fd" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_link_update_new_prog_fd" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_LINK_UPDATE_NEW_PROG_FD 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "link_update.old_prog_fd" "ac_cv_member_union_bpf_attr_link_update_old_prog_fd" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_link_update_old_prog_fd" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_LINK_UPDATE_OLD_PROG_FD 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "log_buf" "ac_cv_member_union_bpf_attr_log_buf" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_log_buf" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_LOG_BUF 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "log_level" "ac_cv_member_union_bpf_attr_log_level" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_log_level" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_LOG_LEVEL 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "log_size" "ac_cv_member_union_bpf_attr_log_size" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_log_size" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_LOG_SIZE 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "map_fd" "ac_cv_member_union_bpf_attr_map_fd" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_map_fd" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_MAP_FD 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "map_flags" "ac_cv_member_union_bpf_attr_map_flags" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_map_flags" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_MAP_FLAGS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "map_id" "ac_cv_member_union_bpf_attr_map_id" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_map_id" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_MAP_ID 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "map_ifindex" "ac_cv_member_union_bpf_attr_map_ifindex" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_map_ifindex" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_MAP_IFINDEX 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "map_name" "ac_cv_member_union_bpf_attr_map_name" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_map_name" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_MAP_NAME 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "map_type" "ac_cv_member_union_bpf_attr_map_type" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_map_type" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_MAP_TYPE 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "max_entries" "ac_cv_member_union_bpf_attr_max_entries" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_max_entries" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_MAX_ENTRIES 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "next_id" "ac_cv_member_union_bpf_attr_next_id" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_next_id" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_NEXT_ID 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "next_key" "ac_cv_member_union_bpf_attr_next_key" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_next_key" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_NEXT_KEY 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "numa_node" "ac_cv_member_union_bpf_attr_numa_node" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_numa_node" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_NUMA_NODE 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "open_flags" "ac_cv_member_union_bpf_attr_open_flags" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_open_flags" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_OPEN_FLAGS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "pathname" "ac_cv_member_union_bpf_attr_pathname" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_pathname" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_PATHNAME 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "prog_btf_fd" "ac_cv_member_union_bpf_attr_prog_btf_fd" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_prog_btf_fd" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_PROG_BTF_FD 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "prog_flags" "ac_cv_member_union_bpf_attr_prog_flags" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_prog_flags" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_PROG_FLAGS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "prog_id" "ac_cv_member_union_bpf_attr_prog_id" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_prog_id" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_PROG_ID 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "prog_ifindex" "ac_cv_member_union_bpf_attr_prog_ifindex" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_prog_ifindex" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_PROG_IFINDEX 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "prog_name" "ac_cv_member_union_bpf_attr_prog_name" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_prog_name" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_PROG_NAME 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "prog_type" "ac_cv_member_union_bpf_attr_prog_type" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_prog_type" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_PROG_TYPE 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "query.attach_flags" "ac_cv_member_union_bpf_attr_query_attach_flags" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_query_attach_flags" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_QUERY_ATTACH_FLAGS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "query.attach_type" "ac_cv_member_union_bpf_attr_query_attach_type" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_query_attach_type" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_QUERY_ATTACH_TYPE 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "query.prog_cnt" "ac_cv_member_union_bpf_attr_query_prog_cnt" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_query_prog_cnt" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_QUERY_PROG_CNT 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "query.prog_ids" "ac_cv_member_union_bpf_attr_query_prog_ids" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_query_prog_ids" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_QUERY_PROG_IDS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "query.query_flags" "ac_cv_member_union_bpf_attr_query_query_flags" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_query_query_flags" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_QUERY_QUERY_FLAGS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "query.target_fd" "ac_cv_member_union_bpf_attr_query_target_fd" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_query_target_fd" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_QUERY_TARGET_FD 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "raw_tracepoint.name" "ac_cv_member_union_bpf_attr_raw_tracepoint_name" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_raw_tracepoint_name" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_RAW_TRACEPOINT_NAME 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "raw_tracepoint.prog_fd" "ac_cv_member_union_bpf_attr_raw_tracepoint_prog_fd" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_raw_tracepoint_prog_fd" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_RAW_TRACEPOINT_PROG_FD 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "replace_bpf_fd" "ac_cv_member_union_bpf_attr_replace_bpf_fd" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_replace_bpf_fd" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_REPLACE_BPF_FD 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "start_id" "ac_cv_member_union_bpf_attr_start_id" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_start_id" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_START_ID 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "target_fd" "ac_cv_member_union_bpf_attr_target_fd" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_target_fd" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_TARGET_FD 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "task_fd_query.buf" "ac_cv_member_union_bpf_attr_task_fd_query_buf" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_task_fd_query_buf" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_TASK_FD_QUERY_BUF 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "task_fd_query.buf_len" "ac_cv_member_union_bpf_attr_task_fd_query_buf_len" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_task_fd_query_buf_len" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_TASK_FD_QUERY_BUF_LEN 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "task_fd_query.fd" "ac_cv_member_union_bpf_attr_task_fd_query_fd" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_task_fd_query_fd" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_TASK_FD_QUERY_FD 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "task_fd_query.fd_type" "ac_cv_member_union_bpf_attr_task_fd_query_fd_type" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_task_fd_query_fd_type" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_TASK_FD_QUERY_FD_TYPE 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "task_fd_query.flags" "ac_cv_member_union_bpf_attr_task_fd_query_flags" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_task_fd_query_flags" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_TASK_FD_QUERY_FLAGS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "task_fd_query.pid" "ac_cv_member_union_bpf_attr_task_fd_query_pid" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_task_fd_query_pid" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_TASK_FD_QUERY_PID 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "task_fd_query.probe_addr" "ac_cv_member_union_bpf_attr_task_fd_query_probe_addr" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_task_fd_query_probe_addr" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_TASK_FD_QUERY_PROBE_ADDR 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "task_fd_query.probe_offset" "ac_cv_member_union_bpf_attr_task_fd_query_probe_offset" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_task_fd_query_probe_offset" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_TASK_FD_QUERY_PROBE_OFFSET 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "task_fd_query.prog_id" "ac_cv_member_union_bpf_attr_task_fd_query_prog_id" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_task_fd_query_prog_id" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_TASK_FD_QUERY_PROG_ID 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "test.ctx_in" "ac_cv_member_union_bpf_attr_test_ctx_in" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_test_ctx_in" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_TEST_CTX_IN 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "test.ctx_out" "ac_cv_member_union_bpf_attr_test_ctx_out" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_test_ctx_out" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_TEST_CTX_OUT 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "test.ctx_size_in" "ac_cv_member_union_bpf_attr_test_ctx_size_in" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_test_ctx_size_in" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_TEST_CTX_SIZE_IN 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "test.ctx_size_out" "ac_cv_member_union_bpf_attr_test_ctx_size_out" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_test_ctx_size_out" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_TEST_CTX_SIZE_OUT 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "test.data_in" "ac_cv_member_union_bpf_attr_test_data_in" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_test_data_in" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_TEST_DATA_IN 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "test.data_out" "ac_cv_member_union_bpf_attr_test_data_out" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_test_data_out" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_TEST_DATA_OUT 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "test.data_size_in" "ac_cv_member_union_bpf_attr_test_data_size_in" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_test_data_size_in" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_TEST_DATA_SIZE_IN 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "test.data_size_out" "ac_cv_member_union_bpf_attr_test_data_size_out" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_test_data_size_out" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_TEST_DATA_SIZE_OUT 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "test.duration" "ac_cv_member_union_bpf_attr_test_duration" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_test_duration" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_TEST_DURATION 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "test.prog_fd" "ac_cv_member_union_bpf_attr_test_prog_fd" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_test_prog_fd" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_TEST_PROG_FD 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "test.repeat" "ac_cv_member_union_bpf_attr_test_repeat" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_test_repeat" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_TEST_REPEAT 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "test.retval" "ac_cv_member_union_bpf_attr_test_retval" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_test_retval" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_TEST_RETVAL 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "value" "ac_cv_member_union_bpf_attr_value" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_value" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_VALUE 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "value_size" "ac_cv_member_union_bpf_attr_value_size" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_value_size" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_VALUE_SIZE 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "dummy" "ac_cv_member_union_bpf_attr_dummy" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_dummy" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_DUMMY 1
+_ACEOF
+
+
+fi
+
+
+
+fi
+
+done
+
+
+for ac_header in linux/io_uring.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "linux/io_uring.h" "ac_cv_header_linux_io_uring_h" "$ac_includes_default"
+if test "x$ac_cv_header_linux_io_uring_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LINUX_IO_URING_H 1
+_ACEOF
+
+       ac_fn_c_check_member "$LINENO" "struct io_cqring_offsets" "flags" "ac_cv_member_struct_io_cqring_offsets_flags" "#include <linux/io_uring.h>
+"
+if test "x$ac_cv_member_struct_io_cqring_offsets_flags" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IO_CQRING_OFFSETS_FLAGS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct io_uring_params" "features" "ac_cv_member_struct_io_uring_params_features" "#include <linux/io_uring.h>
+"
+if test "x$ac_cv_member_struct_io_uring_params_features" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IO_URING_PARAMS_FEATURES 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct io_uring_params" "wq_fd" "ac_cv_member_struct_io_uring_params_wq_fd" "#include <linux/io_uring.h>
+"
+if test "x$ac_cv_member_struct_io_uring_params_wq_fd" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IO_URING_PARAMS_WQ_FD 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct io_uring_params" "resv" "ac_cv_member_struct_io_uring_params_resv" "#include <linux/io_uring.h>
+"
+if test "x$ac_cv_member_struct_io_uring_params_resv" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IO_URING_PARAMS_RESV 1
+_ACEOF
+
+
+fi
+
+
+fi
+
+done
+
+
+for ac_header in bluetooth/bluetooth.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "bluetooth/bluetooth.h" "ac_cv_header_bluetooth_bluetooth_h" "$ac_includes_default"
+if test "x$ac_cv_header_bluetooth_bluetooth_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_BLUETOOTH_BLUETOOTH_H 1
+_ACEOF
+
+       ac_fn_c_check_member "$LINENO" "struct sockaddr_hci" "hci_channel" "ac_cv_member_struct_sockaddr_hci_hci_channel" "#include <bluetooth/bluetooth.h>
+                        #include <bluetooth/hci.h>
+"
+if test "x$ac_cv_member_struct_sockaddr_hci_hci_channel" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_SOCKADDR_HCI_HCI_CHANNEL 1
+_ACEOF
+
+
+fi
+
+       ac_fn_c_check_member "$LINENO" "struct sockaddr_l2" "l2_bdaddr_type" "ac_cv_member_struct_sockaddr_l2_l2_bdaddr_type" "#include <bluetooth/bluetooth.h>
+                        #include <bluetooth/l2cap.h>
+"
+if test "x$ac_cv_member_struct_sockaddr_l2_l2_bdaddr_type" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_SOCKADDR_L2_L2_BDADDR_TYPE 1
+_ACEOF
+
+
+fi
+
+
+fi
+
+done
+
+
+ac_fn_c_check_member "$LINENO" "struct br_mdb_entry" "flags" "ac_cv_member_struct_br_mdb_entry_flags" "#include <netinet/in.h>
+#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 <netinet/in.h>
+#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 :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_DCBMSG 1
+_ACEOF
+
+
+fi
+
+ac_fn_c_check_type "$LINENO" "struct ifaddrlblmsg" "ac_cv_type_struct_ifaddrlblmsg" "#include <linux/if_addrlabel.h>
+"
+if test "x$ac_cv_type_struct_ifaddrlblmsg" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IFADDRLBLMSG 1
+_ACEOF
+
+
+fi
+
+ac_fn_c_check_type "$LINENO" "struct netconfmsg" "ac_cv_type_struct_netconfmsg" "#include <linux/netconf.h>
+"
+if test "x$ac_cv_type_struct_netconfmsg" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_NETCONFMSG 1
+_ACEOF
+
+
+fi
+
+
+ac_fn_c_check_type "$LINENO" "struct ifla_cacheinfo" "ac_cv_type_struct_ifla_cacheinfo" "#include <sys/socket.h>
+#include <linux/rtnetlink.h>
+"
+if test "x$ac_cv_type_struct_ifla_cacheinfo" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IFLA_CACHEINFO 1
+_ACEOF
+
+
+fi
+
+
+ac_fn_c_check_type "$LINENO" "struct 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/types.h>
+#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 <sys/socket.h>
+#include <linux/fib_rules.h>
+"
+if test "x$ac_cv_type_struct_fib_rule_uid_range" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_FIB_RULE_UID_RANGE 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_type "$LINENO" "struct fib_rule_port_range" "ac_cv_type_struct_fib_rule_port_range" "#include <sys/socket.h>
+#include <linux/fib_rules.h>
+"
+if test "x$ac_cv_type_struct_fib_rule_port_range" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_FIB_RULE_PORT_RANGE 1
+_ACEOF
+
+
+fi
+
+
+ac_fn_c_check_type "$LINENO" "struct statfs" "ac_cv_type_struct_statfs" "#include <linux/types.h>
+#include <asm/statfs.h>
+"
+if test "x$ac_cv_type_struct_statfs" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STATFS 1
+_ACEOF
+
+
+       ac_fn_c_check_member "$LINENO" "struct statfs" "f_frsize" "ac_cv_member_struct_statfs_f_frsize" "#include <linux/types.h>
+#include <asm/statfs.h>
+"
+if test "x$ac_cv_member_struct_statfs_f_frsize" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STATFS_F_FRSIZE 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct statfs" "f_flags" "ac_cv_member_struct_statfs_f_flags" "#include <linux/types.h>
+#include <asm/statfs.h>
+"
+if test "x$ac_cv_member_struct_statfs_f_flags" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STATFS_F_FLAGS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct statfs" "f_fsid.val" "ac_cv_member_struct_statfs_f_fsid_val" "#include <linux/types.h>
+#include <asm/statfs.h>
+"
+if test "x$ac_cv_member_struct_statfs_f_fsid_val" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STATFS_F_FSID_VAL 1
+_ACEOF
+
+
 fi
-rm -f conftest.err conftest.i conftest.$ac_ext
+ac_fn_c_check_member "$LINENO" "struct statfs" "f_fsid.__val" "ac_cv_member_struct_statfs_f_fsid___val" "#include <linux/types.h>
+#include <asm/statfs.h>
+"
+if test "x$ac_cv_member_struct_statfs_f_fsid___val" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STATFS_F_FSID___VAL 1
+_ACEOF
 
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
 
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "C preprocessor \"$CPP_FOR_BUILD\" fails sanity check
-See \`config.log' for more details" "$LINENO" 5; }
 fi
 
-ac_ext=c
-ac_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD'
-ac_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5'
-ac_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
+fi
 
 
-if test x${gl_build_unknown_warnings_are_errors+set} = x; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option" >&5
-$as_echo_n "checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option... " >&6; }
-if ${gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+ac_fn_c_check_type "$LINENO" "struct statfs64" "ac_cv_type_struct_statfs64" "#include <linux/types.h>
+#include <asm/statfs.h>
+"
+if test "x$ac_cv_type_struct_statfs64" = xyes; then :
 
-  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
-  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STATFS64 1
+_ACEOF
 
-int
-main ()
-{
 
-  ;
-  return 0;
-}
+       ac_fn_c_check_member "$LINENO" "struct statfs64" "f_frsize" "ac_cv_member_struct_statfs64_f_frsize" "#include <linux/types.h>
+#include <asm/statfs.h>
+"
+if test "x$ac_cv_member_struct_statfs64_f_frsize" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STATFS64_F_FRSIZE 1
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=yes
-else
-  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=no
-fi
-rm -f core conftest.err conftest.$ac_build_objext \
-    conftest$ac_build_exeext conftest.$ac_ext
-  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&5
-$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&6; }
-if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" = xyes; then :
-  gl_build_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
-else
-  gl_build_unknown_warnings_are_errors=
-fi
+ac_fn_c_check_member "$LINENO" "struct statfs64" "f_flags" "ac_cv_member_struct_statfs64_f_flags" "#include <linux/types.h>
+#include <asm/statfs.h>
+"
+if test "x$ac_cv_member_struct_statfs64_f_flags" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STATFS64_F_FLAGS 1
+_ACEOF
 
 
 fi
+ac_fn_c_check_member "$LINENO" "struct statfs64" "f_fsid.val" "ac_cv_member_struct_statfs64_f_fsid_val" "#include <linux/types.h>
+#include <asm/statfs.h>
+"
+if test "x$ac_cv_member_struct_statfs64_f_fsid_val" = xyes; then :
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Wall" >&5
-$as_echo_n "checking whether $CC_FOR_BUILD handles -Wall... " >&6; }
-if ${gl_cv_warn_CFLAGS_FOR_BUILD__Wall+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STATFS64_F_FSID_VAL 1
+_ACEOF
 
-  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
-  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Wall"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
 
-int
-main ()
-{
+fi
+ac_fn_c_check_member "$LINENO" "struct statfs64" "f_fsid.__val" "ac_cv_member_struct_statfs64_f_fsid___val" "#include <linux/types.h>
+#include <asm/statfs.h>
+"
+if test "x$ac_cv_member_struct_statfs64_f_fsid___val" = xyes; then :
 
-  ;
-  return 0;
-}
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STATFS64_F_FSID___VAL 1
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS_FOR_BUILD__Wall=yes
-else
-  gl_cv_warn_CFLAGS_FOR_BUILD__Wall=no
-fi
-rm -f core conftest.err conftest.$ac_build_objext \
-    conftest$ac_build_exeext conftest.$ac_ext
-  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Wall" >&5
-$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Wall" >&6; }
-if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Wall" = xyes; then :
-  as_fn_append WARN_CFLAGS_FOR_BUILD " -Wall"
+
 fi
 
 
-if test x${gl_build_unknown_warnings_are_errors+set} = x; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option" >&5
-$as_echo_n "checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option... " >&6; }
-if ${gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+fi
 
-  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
-  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
 
-int
-main ()
-{
+ac_fn_c_check_type "$LINENO" "struct statx" "ac_cv_type_struct_statx" "#include <linux/types.h>
+#include <linux/stat.h>
+"
+if test "x$ac_cv_type_struct_statx" = xyes; then :
 
-  ;
-  return 0;
-}
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STATX 1
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=yes
-else
-  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=no
-fi
-rm -f core conftest.err conftest.$ac_build_objext \
-    conftest$ac_build_exeext conftest.$ac_ext
-  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&5
-$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&6; }
-if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" = xyes; then :
-  gl_build_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
-else
-  gl_build_unknown_warnings_are_errors=
+
 fi
 
 
-fi
+ac_fn_c_check_type "$LINENO" "struct blk_user_trace_setup" "ac_cv_type_struct_blk_user_trace_setup" "#include <linux/blktrace_api.h>
+"
+if test "x$ac_cv_type_struct_blk_user_trace_setup" = xyes; then :
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Wempty-body" >&5
-$as_echo_n "checking whether $CC_FOR_BUILD handles -Wempty-body... " >&6; }
-if ${gl_cv_warn_CFLAGS_FOR_BUILD__Wempty_body+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BLK_USER_TRACE_SETUP 1
+_ACEOF
 
-  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
-  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Wempty-body"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
 
-int
-main ()
-{
+fi
 
-  ;
-  return 0;
-}
+
+ac_fn_c_check_type "$LINENO" "struct mtd_write_req" "ac_cv_type_struct_mtd_write_req" "#include <mtd/mtd-abi.h>
+"
+if test "x$ac_cv_type_struct_mtd_write_req" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_MTD_WRITE_REQ 1
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS_FOR_BUILD__Wempty_body=yes
-else
-  gl_cv_warn_CFLAGS_FOR_BUILD__Wempty_body=no
-fi
-rm -f core conftest.err conftest.$ac_build_objext \
-    conftest$ac_build_exeext conftest.$ac_ext
-  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Wempty_body" >&5
-$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Wempty_body" >&6; }
-if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Wempty_body" = xyes; then :
-  as_fn_append WARN_CFLAGS_FOR_BUILD " -Wempty-body"
+
 fi
 
 
-if test x${gl_build_unknown_warnings_are_errors+set} = x; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option" >&5
-$as_echo_n "checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option... " >&6; }
-if ${gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+ac_fn_c_check_member "$LINENO" "struct ubi_attach_req" "max_beb_per1024" "ac_cv_member_struct_ubi_attach_req_max_beb_per1024" "#include <mtd/ubi-user.h>
+"
+if test "x$ac_cv_member_struct_ubi_attach_req_max_beb_per1024" = xyes; then :
 
-  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
-  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_UBI_ATTACH_REQ_MAX_BEB_PER1024 1
+_ACEOF
 
-int
-main ()
-{
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=yes
-else
-  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=no
 fi
-rm -f core conftest.err conftest.$ac_build_objext \
-    conftest$ac_build_exeext conftest.$ac_ext
-  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
+
+ac_fn_c_check_type "$LINENO" "struct ptp_sys_offset" "ac_cv_type_struct_ptp_sys_offset" "#include <linux/ptp_clock.h>
+"
+if test "x$ac_cv_type_struct_ptp_sys_offset" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_PTP_SYS_OFFSET 1
+_ACEOF
+
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&5
-$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&6; }
-if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" = xyes; then :
-  gl_build_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
-else
-  gl_build_unknown_warnings_are_errors=
-fi
+
+
+ac_fn_c_check_type "$LINENO" "struct kvm_cpuid2" "ac_cv_type_struct_kvm_cpuid2" "#include <linux/kvm.h>
+"
+if test "x$ac_cv_type_struct_kvm_cpuid2" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_KVM_CPUID2 1
+_ACEOF
 
 
 fi
+ac_fn_c_check_type "$LINENO" "struct kvm_regs" "ac_cv_type_struct_kvm_regs" "#include <linux/kvm.h>
+"
+if test "x$ac_cv_type_struct_kvm_regs" = xyes; then :
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Wformat-security" >&5
-$as_echo_n "checking whether $CC_FOR_BUILD handles -Wformat-security... " >&6; }
-if ${gl_cv_warn_CFLAGS_FOR_BUILD__Wformat_security+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_KVM_REGS 1
+_ACEOF
 
-  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
-  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Wformat-security"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
 
-int
-main ()
-{
+fi
+ac_fn_c_check_type "$LINENO" "struct kvm_sregs" "ac_cv_type_struct_kvm_sregs" "#include <linux/kvm.h>
+"
+if test "x$ac_cv_type_struct_kvm_sregs" = xyes; then :
 
-  ;
-  return 0;
-}
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_KVM_SREGS 1
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS_FOR_BUILD__Wformat_security=yes
-else
-  gl_cv_warn_CFLAGS_FOR_BUILD__Wformat_security=no
-fi
-rm -f core conftest.err conftest.$ac_build_objext \
-    conftest$ac_build_exeext conftest.$ac_ext
-  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Wformat_security" >&5
-$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Wformat_security" >&6; }
-if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Wformat_security" = xyes; then :
-  as_fn_append WARN_CFLAGS_FOR_BUILD " -Wformat-security"
+ac_fn_c_check_type "$LINENO" "struct kvm_userspace_memory_region" "ac_cv_type_struct_kvm_userspace_memory_region" "#include <linux/kvm.h>
+"
+if test "x$ac_cv_type_struct_kvm_userspace_memory_region" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_KVM_USERSPACE_MEMORY_REGION 1
+_ACEOF
+
+
 fi
 
 
-if test x${gl_build_unknown_warnings_are_errors+set} = x; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option" >&5
-$as_echo_n "checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option... " >&6; }
-if ${gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option+:} false; then :
+saved_CPPFLAGS="$CPPFLAGS"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether <linux/signal.h> can be used along with <signal.h>" >&5
+$as_echo_n "checking whether <linux/signal.h> can be used along with <signal.h>... " >&6; }
+if ${st_cv_linux_signal+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-
-  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
-  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-int
-main ()
-{
-
-  ;
-  return 0;
-}
+#include <signal.h>
+#include <linux/signal.h>
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=yes
+if ac_fn_c_try_compile "$LINENO"; then :
+  st_cv_linux_signal=yes
 else
-  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=no
+  st_cv_linux_signal=no
 fi
-rm -f core conftest.err conftest.$ac_build_objext \
-    conftest$ac_build_exeext conftest.$ac_ext
-  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
-
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&5
-$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&6; }
-if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" = xyes; then :
-  gl_build_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
-else
-  gl_build_unknown_warnings_are_errors=
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $st_cv_linux_signal" >&5
+$as_echo "$st_cv_linux_signal" >&6; }
+if test "x$st_cv_linux_signal" = xno; then
+       mkdir -p linux/linux
+       cp $srcdir/linux/signal.h.in linux/linux/signal.h
+       CPPFLAGS="$CPPFLAGS -Ilinux"
 fi
 
+ac_fn_c_check_type "$LINENO" "struct __aio_sigset" "ac_cv_type_struct___aio_sigset" "#include <linux/aio_abi.h>
+"
+if test "x$ac_cv_type_struct___aio_sigset" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT___AIO_SIGSET 1
+_ACEOF
 
-fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Wignored-qualifiers" >&5
-$as_echo_n "checking whether $CC_FOR_BUILD handles -Wignored-qualifiers... " >&6; }
-if ${gl_cv_warn_CFLAGS_FOR_BUILD__Wignored_qualifiers+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+fi
 
-  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
-  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Wignored-qualifiers"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
 
-int
-main ()
-{
+ac_fn_c_check_member "$LINENO" "struct iocb" "aio_flags" "ac_cv_member_struct_iocb_aio_flags" "#include <linux/aio_abi.h>
+"
+if test "x$ac_cv_member_struct_iocb_aio_flags" = xyes; then :
 
-  ;
-  return 0;
-}
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IOCB_AIO_FLAGS 1
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS_FOR_BUILD__Wignored_qualifiers=yes
-else
-  gl_cv_warn_CFLAGS_FOR_BUILD__Wignored_qualifiers=no
+
+
 fi
-rm -f core conftest.err conftest.$ac_build_objext \
-    conftest$ac_build_exeext conftest.$ac_ext
-  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+ac_fn_c_check_member "$LINENO" "struct iocb" "aio_rw_flags" "ac_cv_member_struct_iocb_aio_rw_flags" "#include <linux/aio_abi.h>
+"
+if test "x$ac_cv_member_struct_iocb_aio_rw_flags" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IOCB_AIO_RW_FLAGS 1
+_ACEOF
+
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Wignored_qualifiers" >&5
-$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Wignored_qualifiers" >&6; }
-if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Wignored_qualifiers" = xyes; then :
-  as_fn_append WARN_CFLAGS_FOR_BUILD " -Wignored-qualifiers"
+
+
+ac_fn_c_check_member "$LINENO" "struct clone_args" "cgroup" "ac_cv_member_struct_clone_args_cgroup" "#include <linux/sched.h>
+"
+if test "x$ac_cv_member_struct_clone_args_cgroup" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_CLONE_ARGS_CGROUP 1
+_ACEOF
+
+
 fi
 
 
-if test x${gl_build_unknown_warnings_are_errors+set} = x; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option" >&5
-$as_echo_n "checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option... " >&6; }
-if ${gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+CPPFLAGS="$saved_CPPFLAGS"
 
-  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
-  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+for ac_header in linux/btrfs.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "linux/btrfs.h" "ac_cv_header_linux_btrfs_h" "$ac_includes_default"
+if test "x$ac_cv_header_linux_btrfs_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LINUX_BTRFS_H 1
+_ACEOF
 
-int
-main ()
-{
+       ac_fn_c_check_member "$LINENO" "struct btrfs_ioctl_feature_flags" "compat_flags" "ac_cv_member_struct_btrfs_ioctl_feature_flags_compat_flags" " #include <stdio.h>
+#include <linux/btrfs.h>
+"
+if test "x$ac_cv_member_struct_btrfs_ioctl_feature_flags_compat_flags" = xyes; then :
 
-  ;
-  return 0;
-}
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BTRFS_IOCTL_FEATURE_FLAGS_COMPAT_FLAGS 1
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=yes
-else
-  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=no
-fi
-rm -f core conftest.err conftest.$ac_build_objext \
-    conftest$ac_build_exeext conftest.$ac_ext
-  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&5
-$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&6; }
-if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" = xyes; then :
-  gl_build_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
-else
-  gl_build_unknown_warnings_are_errors=
+ac_fn_c_check_member "$LINENO" "struct btrfs_ioctl_fs_info_args" "nodesize" "ac_cv_member_struct_btrfs_ioctl_fs_info_args_nodesize" " #include <stdio.h>
+#include <linux/btrfs.h>
+"
+if test "x$ac_cv_member_struct_btrfs_ioctl_fs_info_args_nodesize" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BTRFS_IOCTL_FS_INFO_ARGS_NODESIZE 1
+_ACEOF
+
+
 fi
+ac_fn_c_check_member "$LINENO" "struct btrfs_ioctl_defrag_range_args" "start" "ac_cv_member_struct_btrfs_ioctl_defrag_range_args_start" " #include <stdio.h>
+#include <linux/btrfs.h>
+"
+if test "x$ac_cv_member_struct_btrfs_ioctl_defrag_range_args_start" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BTRFS_IOCTL_DEFRAG_RANGE_ARGS_START 1
+_ACEOF
 
 
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Wimplicit-fallthrough=5" >&5
-$as_echo_n "checking whether $CC_FOR_BUILD handles -Wimplicit-fallthrough=5... " >&6; }
-if ${gl_cv_warn_CFLAGS_FOR_BUILD__Wimplicit_fallthrough_5+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+fi
 
-  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
-  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Wimplicit-fallthrough=5"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+done
 
-int
-main ()
-{
 
-  ;
-  return 0;
-}
+
+
+for ac_header in linux/btrfs.h
+do :
+  ac_fn_c_check_header_compile "$LINENO" "linux/btrfs.h" "ac_cv_header_linux_btrfs_h" "$ac_includes_default
+#include <stdio.h>
+#include <stdint.h>
+"
+if test "x$ac_cv_header_linux_btrfs_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LINUX_BTRFS_H 1
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS_FOR_BUILD__Wimplicit_fallthrough_5=yes
-else
-  gl_cv_warn_CFLAGS_FOR_BUILD__Wimplicit_fallthrough_5=no
+
+
+ac_fn_c_check_type "$LINENO" "struct btrfs_ioctl_logical_ino_args" "ac_cv_type_struct_btrfs_ioctl_logical_ino_args" "$ac_includes_default
+#include <stdio.h>
+#include <stdint.h>
+#include <linux/btrfs.h>
+"
+if test "x$ac_cv_type_struct_btrfs_ioctl_logical_ino_args" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BTRFS_IOCTL_LOGICAL_INO_ARGS 1
+_ACEOF
+
+ac_fn_c_check_member "$LINENO" "struct btrfs_ioctl_logical_ino_args" "inodes" "ac_cv_member_struct_btrfs_ioctl_logical_ino_args_inodes" "$ac_includes_default
+#include <stdio.h>
+#include <stdint.h>
+#include <linux/btrfs.h>
+"
+if test "x$ac_cv_member_struct_btrfs_ioctl_logical_ino_args_inodes" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BTRFS_IOCTL_LOGICAL_INO_ARGS_INODES 1
+_ACEOF
+
+
 fi
-rm -f core conftest.err conftest.$ac_build_objext \
-    conftest$ac_build_exeext conftest.$ac_ext
-  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Wimplicit_fallthrough_5" >&5
-$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Wimplicit_fallthrough_5" >&6; }
-if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Wimplicit_fallthrough_5" = xyes; then :
-  as_fn_append WARN_CFLAGS_FOR_BUILD " -Wimplicit-fallthrough=5"
+
+
 fi
 
+done
 
-if test x${gl_build_unknown_warnings_are_errors+set} = x; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option" >&5
-$as_echo_n "checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option... " >&6; }
-if ${gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
 
-  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
-  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+for ac_header in linux/cryptouser.h
+do :
+  ac_fn_c_check_header_compile "$LINENO" "linux/cryptouser.h" "ac_cv_header_linux_cryptouser_h" "$ac_includes_default
 
-int
-main ()
-{
+"
+if test "x$ac_cv_header_linux_cryptouser_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LINUX_CRYPTOUSER_H 1
+_ACEOF
 
-  ;
-  return 0;
-}
+
+ac_fn_c_check_type "$LINENO" "struct crypto_user_alg" "ac_cv_type_struct_crypto_user_alg" "$ac_includes_default
+#include <linux/cryptouser.h>
+"
+if test "x$ac_cv_type_struct_crypto_user_alg" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_CRYPTO_USER_ALG 1
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=yes
-else
-  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=no
-fi
-rm -f core conftest.err conftest.$ac_build_objext \
-    conftest$ac_build_exeext conftest.$ac_ext
-  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&5
-$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&6; }
-if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" = xyes; then :
-  gl_build_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
-else
-  gl_build_unknown_warnings_are_errors=
-fi
+ac_fn_c_check_member "$LINENO" "struct crypto_user_alg" "cru_flags" "ac_cv_member_struct_crypto_user_alg_cru_flags" "$ac_includes_default
+#include <linux/cryptouser.h>
+"
+if test "x$ac_cv_member_struct_crypto_user_alg_cru_flags" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_CRYPTO_USER_ALG_CRU_FLAGS 1
+_ACEOF
 
 
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Winit-self" >&5
-$as_echo_n "checking whether $CC_FOR_BUILD handles -Winit-self... " >&6; }
-if ${gl_cv_warn_CFLAGS_FOR_BUILD__Winit_self+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+fi
 
-  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
-  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Winit-self"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
 
-int
-main ()
-{
+ac_fn_c_check_type "$LINENO" "struct crypto_report_hash" "ac_cv_type_struct_crypto_report_hash" "$ac_includes_default
+#include <linux/cryptouser.h>
+"
+if test "x$ac_cv_type_struct_crypto_report_hash" = xyes; then :
 
-  ;
-  return 0;
-}
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_CRYPTO_REPORT_HASH 1
+_ACEOF
+
+ac_fn_c_check_member "$LINENO" "struct crypto_report_hash" "digestsize" "ac_cv_member_struct_crypto_report_hash_digestsize" "$ac_includes_default
+#include <linux/cryptouser.h>
+"
+if test "x$ac_cv_member_struct_crypto_report_hash_digestsize" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_CRYPTO_REPORT_HASH_DIGESTSIZE 1
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS_FOR_BUILD__Winit_self=yes
-else
-  gl_cv_warn_CFLAGS_FOR_BUILD__Winit_self=no
-fi
-rm -f core conftest.err conftest.$ac_build_objext \
-    conftest$ac_build_exeext conftest.$ac_ext
-  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Winit_self" >&5
-$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Winit_self" >&6; }
-if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Winit_self" = xyes; then :
-  as_fn_append WARN_CFLAGS_FOR_BUILD " -Winit-self"
+
 fi
 
 
-if test x${gl_build_unknown_warnings_are_errors+set} = x; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option" >&5
-$as_echo_n "checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option... " >&6; }
-if ${gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+ac_fn_c_check_type "$LINENO" "struct crypto_report_cipher" "ac_cv_type_struct_crypto_report_cipher" "$ac_includes_default
+#include <linux/cryptouser.h>
+"
+if test "x$ac_cv_type_struct_crypto_report_cipher" = xyes; then :
 
-  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
-  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_CRYPTO_REPORT_CIPHER 1
+_ACEOF
 
-int
-main ()
-{
+ac_fn_c_check_member "$LINENO" "struct crypto_report_cipher" "max_keysize" "ac_cv_member_struct_crypto_report_cipher_max_keysize" "$ac_includes_default
+#include <linux/cryptouser.h>
+"
+if test "x$ac_cv_member_struct_crypto_report_cipher_max_keysize" = xyes; then :
 
-  ;
-  return 0;
-}
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_CRYPTO_REPORT_CIPHER_MAX_KEYSIZE 1
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=yes
-else
-  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=no
-fi
-rm -f core conftest.err conftest.$ac_build_objext \
-    conftest$ac_build_exeext conftest.$ac_ext
-  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&5
-$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&6; }
-if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" = xyes; then :
-  gl_build_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
-else
-  gl_build_unknown_warnings_are_errors=
-fi
 
+fi
 
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Winitializer-overrides" >&5
-$as_echo_n "checking whether $CC_FOR_BUILD handles -Winitializer-overrides... " >&6; }
-if ${gl_cv_warn_CFLAGS_FOR_BUILD__Winitializer_overrides+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
 
-  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
-  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Winitializer-overrides"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+ac_fn_c_check_type "$LINENO" "struct crypto_report_blkcipher" "ac_cv_type_struct_crypto_report_blkcipher" "$ac_includes_default
+#include <linux/cryptouser.h>
+"
+if test "x$ac_cv_type_struct_crypto_report_blkcipher" = xyes; then :
 
-int
-main ()
-{
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_CRYPTO_REPORT_BLKCIPHER 1
+_ACEOF
 
-  ;
-  return 0;
-}
+ac_fn_c_check_member "$LINENO" "struct crypto_report_blkcipher" "ivsize" "ac_cv_member_struct_crypto_report_blkcipher_ivsize" "$ac_includes_default
+#include <linux/cryptouser.h>
+"
+if test "x$ac_cv_member_struct_crypto_report_blkcipher_ivsize" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_CRYPTO_REPORT_BLKCIPHER_IVSIZE 1
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS_FOR_BUILD__Winitializer_overrides=yes
-else
-  gl_cv_warn_CFLAGS_FOR_BUILD__Winitializer_overrides=no
-fi
-rm -f core conftest.err conftest.$ac_build_objext \
-    conftest$ac_build_exeext conftest.$ac_ext
-  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Winitializer_overrides" >&5
-$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Winitializer_overrides" >&6; }
-if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Winitializer_overrides" = xyes; then :
-  as_fn_append WARN_CFLAGS_FOR_BUILD " -Winitializer-overrides"
+
 fi
 
 
-if test x${gl_build_unknown_warnings_are_errors+set} = x; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option" >&5
-$as_echo_n "checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option... " >&6; }
-if ${gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+ac_fn_c_check_type "$LINENO" "struct crypto_report_aead" "ac_cv_type_struct_crypto_report_aead" "$ac_includes_default
+#include <linux/cryptouser.h>
+"
+if test "x$ac_cv_type_struct_crypto_report_aead" = xyes; then :
 
-  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
-  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_CRYPTO_REPORT_AEAD 1
+_ACEOF
 
-int
-main ()
-{
+ac_fn_c_check_member "$LINENO" "struct crypto_report_aead" "ivsize" "ac_cv_member_struct_crypto_report_aead_ivsize" "$ac_includes_default
+#include <linux/cryptouser.h>
+"
+if test "x$ac_cv_member_struct_crypto_report_aead_ivsize" = xyes; then :
 
-  ;
-  return 0;
-}
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_CRYPTO_REPORT_AEAD_IVSIZE 1
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=yes
-else
-  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=no
-fi
-rm -f core conftest.err conftest.$ac_build_objext \
-    conftest$ac_build_exeext conftest.$ac_ext
-  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&5
-$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&6; }
-if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" = xyes; then :
-  gl_build_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
-else
-  gl_build_unknown_warnings_are_errors=
-fi
 
+fi
 
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Wlogical-op" >&5
-$as_echo_n "checking whether $CC_FOR_BUILD handles -Wlogical-op... " >&6; }
-if ${gl_cv_warn_CFLAGS_FOR_BUILD__Wlogical_op+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
 
-  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
-  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Wlogical-op"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+ac_fn_c_check_type "$LINENO" "struct crypto_report_rng" "ac_cv_type_struct_crypto_report_rng" "$ac_includes_default
+#include <linux/cryptouser.h>
+"
+if test "x$ac_cv_type_struct_crypto_report_rng" = xyes; then :
 
-int
-main ()
-{
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_CRYPTO_REPORT_RNG 1
+_ACEOF
 
-  ;
-  return 0;
-}
+ac_fn_c_check_member "$LINENO" "struct crypto_report_rng" "seedsize" "ac_cv_member_struct_crypto_report_rng_seedsize" "$ac_includes_default
+#include <linux/cryptouser.h>
+"
+if test "x$ac_cv_member_struct_crypto_report_rng_seedsize" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_CRYPTO_REPORT_RNG_SEEDSIZE 1
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS_FOR_BUILD__Wlogical_op=yes
-else
-  gl_cv_warn_CFLAGS_FOR_BUILD__Wlogical_op=no
+
+
 fi
-rm -f core conftest.err conftest.$ac_build_objext \
-    conftest$ac_build_exeext conftest.$ac_ext
-  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Wlogical_op" >&5
-$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Wlogical_op" >&6; }
-if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Wlogical_op" = xyes; then :
-  as_fn_append WARN_CFLAGS_FOR_BUILD " -Wlogical-op"
+
+
 fi
 
+done
+
+
+for ac_header in linux/input.h
+do :
+  ac_fn_c_check_header_compile "$LINENO" "linux/input.h" "ac_cv_header_linux_input_h" "$ac_includes_default
+
+"
+if test "x$ac_cv_header_linux_input_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LINUX_INPUT_H 1
+_ACEOF
 
-if test x${gl_build_unknown_warnings_are_errors+set} = x; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option" >&5
-$as_echo_n "checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option... " >&6; }
-if ${gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
 
-  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
-  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+ac_fn_c_check_type "$LINENO" "struct input_absinfo" "ac_cv_type_struct_input_absinfo" "$ac_includes_default
+#include <linux/input.h>
+"
+if test "x$ac_cv_type_struct_input_absinfo" = xyes; then :
 
-int
-main ()
-{
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_INPUT_ABSINFO 1
+_ACEOF
 
-  ;
-  return 0;
-}
+ac_fn_c_check_member "$LINENO" "struct input_absinfo" "resolution" "ac_cv_member_struct_input_absinfo_resolution" "$ac_includes_default
+#include <linux/input.h>
+"
+if test "x$ac_cv_member_struct_input_absinfo_resolution" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_INPUT_ABSINFO_RESOLUTION 1
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=yes
-else
-  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=no
-fi
-rm -f core conftest.err conftest.$ac_build_objext \
-    conftest$ac_build_exeext conftest.$ac_ext
-  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&5
-$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&6; }
-if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" = xyes; then :
-  gl_build_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
-else
-  gl_build_unknown_warnings_are_errors=
-fi
 
+fi
 
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Wmissing-parameter-type" >&5
-$as_echo_n "checking whether $CC_FOR_BUILD handles -Wmissing-parameter-type... " >&6; }
-if ${gl_cv_warn_CFLAGS_FOR_BUILD__Wmissing_parameter_type+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
 
-  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
-  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Wmissing-parameter-type"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+ac_fn_c_check_type "$LINENO" "struct input_keymap_entry" "ac_cv_type_struct_input_keymap_entry" "$ac_includes_default
+#include <linux/input.h>
+"
+if test "x$ac_cv_type_struct_input_keymap_entry" = xyes; then :
 
-int
-main ()
-{
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_INPUT_KEYMAP_ENTRY 1
+_ACEOF
 
-  ;
-  return 0;
-}
+ac_fn_c_check_member "$LINENO" "struct input_keymap_entry" "scancode" "ac_cv_member_struct_input_keymap_entry_scancode" "$ac_includes_default
+#include <linux/input.h>
+"
+if test "x$ac_cv_member_struct_input_keymap_entry_scancode" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_INPUT_KEYMAP_ENTRY_SCANCODE 1
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS_FOR_BUILD__Wmissing_parameter_type=yes
-else
-  gl_cv_warn_CFLAGS_FOR_BUILD__Wmissing_parameter_type=no
-fi
-rm -f core conftest.err conftest.$ac_build_objext \
-    conftest$ac_build_exeext conftest.$ac_ext
-  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Wmissing_parameter_type" >&5
-$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Wmissing_parameter_type" >&6; }
-if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Wmissing_parameter_type" = xyes; then :
-  as_fn_append WARN_CFLAGS_FOR_BUILD " -Wmissing-parameter-type"
+
 fi
 
 
-if test x${gl_build_unknown_warnings_are_errors+set} = x; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option" >&5
-$as_echo_n "checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option... " >&6; }
-if ${gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+ac_fn_c_check_type "$LINENO" "struct input_mask" "ac_cv_type_struct_input_mask" "$ac_includes_default
+#include <linux/input.h>
+"
+if test "x$ac_cv_type_struct_input_mask" = xyes; then :
 
-  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
-  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_INPUT_MASK 1
+_ACEOF
 
-int
-main ()
-{
+ac_fn_c_check_member "$LINENO" "struct input_mask" "codes_ptr" "ac_cv_member_struct_input_mask_codes_ptr" "$ac_includes_default
+#include <linux/input.h>
+"
+if test "x$ac_cv_member_struct_input_mask_codes_ptr" = xyes; then :
 
-  ;
-  return 0;
-}
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_INPUT_MASK_CODES_PTR 1
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=yes
-else
-  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=no
-fi
-rm -f core conftest.err conftest.$ac_build_objext \
-    conftest$ac_build_exeext conftest.$ac_ext
-  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&5
-$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&6; }
-if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" = xyes; then :
-  gl_build_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
-else
-  gl_build_unknown_warnings_are_errors=
+
 fi
 
 
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Wnested-externs" >&5
-$as_echo_n "checking whether $CC_FOR_BUILD handles -Wnested-externs... " >&6; }
-if ${gl_cv_warn_CFLAGS_FOR_BUILD__Wnested_externs+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+done
 
-  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
-  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Wnested-externs"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
 
-int
-main ()
-{
+for ac_header in linux/io_uring.h
+do :
+  ac_fn_c_check_header_compile "$LINENO" "linux/io_uring.h" "ac_cv_header_linux_io_uring_h" "$ac_includes_default
 
-  ;
-  return 0;
-}
+"
+if test "x$ac_cv_header_linux_io_uring_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LINUX_IO_URING_H 1
+_ACEOF
+
+
+ac_fn_c_check_type "$LINENO" "struct io_sqring_offsets" "ac_cv_type_struct_io_sqring_offsets" "$ac_includes_default
+#include <linux/io_uring.h>
+"
+if test "x$ac_cv_type_struct_io_sqring_offsets" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IO_SQRING_OFFSETS 1
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS_FOR_BUILD__Wnested_externs=yes
-else
-  gl_cv_warn_CFLAGS_FOR_BUILD__Wnested_externs=no
-fi
-rm -f core conftest.err conftest.$ac_build_objext \
-    conftest$ac_build_exeext conftest.$ac_ext
-  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
+ac_fn_c_check_member "$LINENO" "struct io_sqring_offsets" "resv2" "ac_cv_member_struct_io_sqring_offsets_resv2" "$ac_includes_default
+#include <linux/io_uring.h>
+"
+if test "x$ac_cv_member_struct_io_sqring_offsets_resv2" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IO_SQRING_OFFSETS_RESV2 1
+_ACEOF
+
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Wnested_externs" >&5
-$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Wnested_externs" >&6; }
-if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Wnested_externs" = xyes; then :
-  as_fn_append WARN_CFLAGS_FOR_BUILD " -Wnested-externs"
+
 fi
 
 
-if test x${gl_build_unknown_warnings_are_errors+set} = x; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option" >&5
-$as_echo_n "checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option... " >&6; }
-if ${gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+ac_fn_c_check_type "$LINENO" "struct io_cqring_offsets" "ac_cv_type_struct_io_cqring_offsets" "$ac_includes_default
+#include <linux/io_uring.h>
+"
+if test "x$ac_cv_type_struct_io_cqring_offsets" = xyes; then :
 
-  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
-  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IO_CQRING_OFFSETS 1
+_ACEOF
 
-int
-main ()
-{
+ac_fn_c_check_member "$LINENO" "struct io_cqring_offsets" "cqes" "ac_cv_member_struct_io_cqring_offsets_cqes" "$ac_includes_default
+#include <linux/io_uring.h>
+"
+if test "x$ac_cv_member_struct_io_cqring_offsets_cqes" = xyes; then :
 
-  ;
-  return 0;
-}
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IO_CQRING_OFFSETS_CQES 1
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=yes
-else
-  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=no
-fi
-rm -f core conftest.err conftest.$ac_build_objext \
-    conftest$ac_build_exeext conftest.$ac_ext
-  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&5
-$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&6; }
-if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" = xyes; then :
-  gl_build_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
-else
-  gl_build_unknown_warnings_are_errors=
-fi
 
+fi
 
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Wold-style-declaration" >&5
-$as_echo_n "checking whether $CC_FOR_BUILD handles -Wold-style-declaration... " >&6; }
-if ${gl_cv_warn_CFLAGS_FOR_BUILD__Wold_style_declaration+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
 
-  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
-  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Wold-style-declaration"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+ac_fn_c_check_type "$LINENO" "struct io_uring_params" "ac_cv_type_struct_io_uring_params" "$ac_includes_default
+#include <linux/io_uring.h>
+"
+if test "x$ac_cv_type_struct_io_uring_params" = xyes; then :
 
-int
-main ()
-{
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IO_URING_PARAMS 1
+_ACEOF
 
-  ;
-  return 0;
-}
+ac_fn_c_check_member "$LINENO" "struct io_uring_params" "cq_off" "ac_cv_member_struct_io_uring_params_cq_off" "$ac_includes_default
+#include <linux/io_uring.h>
+"
+if test "x$ac_cv_member_struct_io_uring_params_cq_off" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IO_URING_PARAMS_CQ_OFF 1
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS_FOR_BUILD__Wold_style_declaration=yes
-else
-  gl_cv_warn_CFLAGS_FOR_BUILD__Wold_style_declaration=no
-fi
-rm -f core conftest.err conftest.$ac_build_objext \
-    conftest$ac_build_exeext conftest.$ac_ext
-  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Wold_style_declaration" >&5
-$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Wold_style_declaration" >&6; }
-if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Wold_style_declaration" = xyes; then :
-  as_fn_append WARN_CFLAGS_FOR_BUILD " -Wold-style-declaration"
+
 fi
 
 
-if test x${gl_build_unknown_warnings_are_errors+set} = x; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option" >&5
-$as_echo_n "checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option... " >&6; }
-if ${gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+ac_fn_c_check_type "$LINENO" "struct io_uring_files_update" "ac_cv_type_struct_io_uring_files_update" "$ac_includes_default
+#include <linux/io_uring.h>
+"
+if test "x$ac_cv_type_struct_io_uring_files_update" = xyes; then :
 
-  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
-  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IO_URING_FILES_UPDATE 1
+_ACEOF
 
-int
-main ()
-{
+ac_fn_c_check_member "$LINENO" "struct io_uring_files_update" "fds" "ac_cv_member_struct_io_uring_files_update_fds" "$ac_includes_default
+#include <linux/io_uring.h>
+"
+if test "x$ac_cv_member_struct_io_uring_files_update_fds" = xyes; then :
 
-  ;
-  return 0;
-}
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IO_URING_FILES_UPDATE_FDS 1
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=yes
-else
-  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=no
-fi
-rm -f core conftest.err conftest.$ac_build_objext \
-    conftest$ac_build_exeext conftest.$ac_ext
-  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&5
-$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&6; }
-if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" = xyes; then :
-  gl_build_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
-else
-  gl_build_unknown_warnings_are_errors=
-fi
 
+fi
 
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Wold-style-definition" >&5
-$as_echo_n "checking whether $CC_FOR_BUILD handles -Wold-style-definition... " >&6; }
-if ${gl_cv_warn_CFLAGS_FOR_BUILD__Wold_style_definition+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
 
-  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
-  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Wold-style-definition"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+ac_fn_c_check_type "$LINENO" "struct io_uring_probe_op" "ac_cv_type_struct_io_uring_probe_op" "$ac_includes_default
+#include <linux/io_uring.h>
+"
+if test "x$ac_cv_type_struct_io_uring_probe_op" = xyes; then :
 
-int
-main ()
-{
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IO_URING_PROBE_OP 1
+_ACEOF
 
-  ;
-  return 0;
-}
+ac_fn_c_check_member "$LINENO" "struct io_uring_probe_op" "resv2" "ac_cv_member_struct_io_uring_probe_op_resv2" "$ac_includes_default
+#include <linux/io_uring.h>
+"
+if test "x$ac_cv_member_struct_io_uring_probe_op_resv2" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IO_URING_PROBE_OP_RESV2 1
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS_FOR_BUILD__Wold_style_definition=yes
-else
-  gl_cv_warn_CFLAGS_FOR_BUILD__Wold_style_definition=no
-fi
-rm -f core conftest.err conftest.$ac_build_objext \
-    conftest$ac_build_exeext conftest.$ac_ext
-  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Wold_style_definition" >&5
-$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Wold_style_definition" >&6; }
-if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Wold_style_definition" = xyes; then :
-  as_fn_append WARN_CFLAGS_FOR_BUILD " -Wold-style-definition"
+
 fi
 
 
-if test x${gl_build_unknown_warnings_are_errors+set} = x; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option" >&5
-$as_echo_n "checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option... " >&6; }
-if ${gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+ac_fn_c_check_type "$LINENO" "struct io_uring_probe" "ac_cv_type_struct_io_uring_probe" "$ac_includes_default
+#include <linux/io_uring.h>
+"
+if test "x$ac_cv_type_struct_io_uring_probe" = xyes; then :
 
-  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
-  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IO_URING_PROBE 1
+_ACEOF
 
-int
-main ()
-{
+ac_fn_c_check_member "$LINENO" "struct io_uring_probe" "ops" "ac_cv_member_struct_io_uring_probe_ops" "$ac_includes_default
+#include <linux/io_uring.h>
+"
+if test "x$ac_cv_member_struct_io_uring_probe_ops" = xyes; then :
 
-  ;
-  return 0;
-}
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IO_URING_PROBE_OPS 1
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=yes
-else
-  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=no
-fi
-rm -f core conftest.err conftest.$ac_build_objext \
-    conftest$ac_build_exeext conftest.$ac_ext
-  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&5
-$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&6; }
-if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" = xyes; then :
-  gl_build_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
-else
-  gl_build_unknown_warnings_are_errors=
+
 fi
 
 
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Woverride-init" >&5
-$as_echo_n "checking whether $CC_FOR_BUILD handles -Woverride-init... " >&6; }
-if ${gl_cv_warn_CFLAGS_FOR_BUILD__Woverride_init+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+done
 
-  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
-  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Woverride-init"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
 
-int
-main ()
-{
+for ac_header in linux/loop.h
+do :
+  ac_fn_c_check_header_compile "$LINENO" "linux/loop.h" "ac_cv_header_linux_loop_h" "$ac_includes_default
+#include <linux/ioctl.h>
+"
+if test "x$ac_cv_header_linux_loop_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LINUX_LOOP_H 1
+_ACEOF
 
-  ;
-  return 0;
-}
+
+ac_fn_c_check_type "$LINENO" "struct loop_config" "ac_cv_type_struct_loop_config" "$ac_includes_default
+#include <linux/ioctl.h>
+#include <linux/loop.h>
+"
+if test "x$ac_cv_type_struct_loop_config" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_LOOP_CONFIG 1
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS_FOR_BUILD__Woverride_init=yes
-else
-  gl_cv_warn_CFLAGS_FOR_BUILD__Woverride_init=no
+
+ac_fn_c_check_member "$LINENO" "struct loop_config" "__reserved" "ac_cv_member_struct_loop_config___reserved" "$ac_includes_default
+#include <linux/ioctl.h>
+#include <linux/loop.h>
+"
+if test "x$ac_cv_member_struct_loop_config___reserved" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_LOOP_CONFIG___RESERVED 1
+_ACEOF
+
+
 fi
-rm -f core conftest.err conftest.$ac_build_objext \
-    conftest$ac_build_exeext conftest.$ac_ext
-  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Woverride_init" >&5
-$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Woverride_init" >&6; }
-if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Woverride_init" = xyes; then :
-  as_fn_append WARN_CFLAGS_FOR_BUILD " -Woverride-init"
+
+
 fi
 
+done
 
-if test x${gl_build_unknown_warnings_are_errors+set} = x; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option" >&5
-$as_echo_n "checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option... " >&6; }
-if ${gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
 
-  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
-  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+for ac_header in linux/openat2.h
+do :
+  ac_fn_c_check_header_compile "$LINENO" "linux/openat2.h" "ac_cv_header_linux_openat2_h" "$ac_includes_default
 
-int
-main ()
-{
+"
+if test "x$ac_cv_header_linux_openat2_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LINUX_OPENAT2_H 1
+_ACEOF
 
-  ;
-  return 0;
-}
+
+ac_fn_c_check_type "$LINENO" "struct open_how" "ac_cv_type_struct_open_how" "$ac_includes_default
+#include <linux/openat2.h>
+"
+if test "x$ac_cv_type_struct_open_how" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_OPEN_HOW 1
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=yes
-else
-  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=no
-fi
-rm -f core conftest.err conftest.$ac_build_objext \
-    conftest$ac_build_exeext conftest.$ac_ext
-  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
+ac_fn_c_check_member "$LINENO" "struct open_how" "resolve" "ac_cv_member_struct_open_how_resolve" "$ac_includes_default
+#include <linux/openat2.h>
+"
+if test "x$ac_cv_member_struct_open_how_resolve" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_OPEN_HOW_RESOLVE 1
+_ACEOF
+
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&5
-$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&6; }
-if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" = xyes; then :
-  gl_build_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
-else
-  gl_build_unknown_warnings_are_errors=
+
 fi
 
 
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Wsign-compare" >&5
-$as_echo_n "checking whether $CC_FOR_BUILD handles -Wsign-compare... " >&6; }
-if ${gl_cv_warn_CFLAGS_FOR_BUILD__Wsign_compare+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+done
 
-  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
-  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Wsign-compare"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
 
-int
-main ()
-{
+for ac_header in linux/rtnetlink.h
+do :
+  ac_fn_c_check_header_compile "$LINENO" "linux/rtnetlink.h" "ac_cv_header_linux_rtnetlink_h" "$ac_includes_default
+#include \"$srcdir/netlink.h\"
+"
+if test "x$ac_cv_header_linux_rtnetlink_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LINUX_RTNETLINK_H 1
+_ACEOF
 
-  ;
-  return 0;
-}
+
+ac_fn_c_check_type "$LINENO" "struct rtnl_link_stats" "ac_cv_type_struct_rtnl_link_stats" "$ac_includes_default
+#include \"$srcdir/netlink.h\"
+#include <linux/rtnetlink.h>
+"
+if test "x$ac_cv_type_struct_rtnl_link_stats" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_RTNL_LINK_STATS 1
+_ACEOF
+
+ac_fn_c_check_member "$LINENO" "struct rtnl_link_stats" "rx_nohandler" "ac_cv_member_struct_rtnl_link_stats_rx_nohandler" "$ac_includes_default
+#include \"$srcdir/netlink.h\"
+#include <linux/rtnetlink.h>
+"
+if test "x$ac_cv_member_struct_rtnl_link_stats_rx_nohandler" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_RTNL_LINK_STATS_RX_NOHANDLER 1
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS_FOR_BUILD__Wsign_compare=yes
-else
-  gl_cv_warn_CFLAGS_FOR_BUILD__Wsign_compare=no
-fi
-rm -f core conftest.err conftest.$ac_build_objext \
-    conftest$ac_build_exeext conftest.$ac_ext
-  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Wsign_compare" >&5
-$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Wsign_compare" >&6; }
-if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Wsign_compare" = xyes; then :
-  as_fn_append WARN_CFLAGS_FOR_BUILD " -Wsign-compare"
+
 fi
 
 
-if test x${gl_build_unknown_warnings_are_errors+set} = x; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option" >&5
-$as_echo_n "checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option... " >&6; }
-if ${gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+ac_fn_c_check_type "$LINENO" "struct rtnl_link_stats64" "ac_cv_type_struct_rtnl_link_stats64" "$ac_includes_default
+#include \"$srcdir/netlink.h\"
+#include <linux/rtnetlink.h>
+"
+if test "x$ac_cv_type_struct_rtnl_link_stats64" = xyes; then :
 
-  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
-  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_RTNL_LINK_STATS64 1
+_ACEOF
 
-int
-main ()
-{
+ac_fn_c_check_member "$LINENO" "struct rtnl_link_stats64" "rx_nohandler" "ac_cv_member_struct_rtnl_link_stats64_rx_nohandler" "$ac_includes_default
+#include \"$srcdir/netlink.h\"
+#include <linux/rtnetlink.h>
+"
+if test "x$ac_cv_member_struct_rtnl_link_stats64_rx_nohandler" = xyes; then :
 
-  ;
-  return 0;
-}
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_RTNL_LINK_STATS64_RX_NOHANDLER 1
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=yes
-else
-  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=no
-fi
-rm -f core conftest.err conftest.$ac_build_objext \
-    conftest$ac_build_exeext conftest.$ac_ext
-  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&5
-$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&6; }
-if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" = xyes; then :
-  gl_build_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
-else
-  gl_build_unknown_warnings_are_errors=
-fi
 
+fi
 
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Wtype-limits" >&5
-$as_echo_n "checking whether $CC_FOR_BUILD handles -Wtype-limits... " >&6; }
-if ${gl_cv_warn_CFLAGS_FOR_BUILD__Wtype_limits+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
 
-  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
-  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Wtype-limits"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+ac_fn_c_check_type "$LINENO" "struct ifla_bridge_id" "ac_cv_type_struct_ifla_bridge_id" "$ac_includes_default
+#include \"$srcdir/netlink.h\"
+#include <linux/rtnetlink.h>
+"
+if test "x$ac_cv_type_struct_ifla_bridge_id" = xyes; then :
 
-int
-main ()
-{
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IFLA_BRIDGE_ID 1
+_ACEOF
 
-  ;
-  return 0;
-}
+ac_fn_c_check_member "$LINENO" "struct ifla_bridge_id" "addr" "ac_cv_member_struct_ifla_bridge_id_addr" "$ac_includes_default
+#include \"$srcdir/netlink.h\"
+#include <linux/rtnetlink.h>
+"
+if test "x$ac_cv_member_struct_ifla_bridge_id_addr" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IFLA_BRIDGE_ID_ADDR 1
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS_FOR_BUILD__Wtype_limits=yes
-else
-  gl_cv_warn_CFLAGS_FOR_BUILD__Wtype_limits=no
-fi
-rm -f core conftest.err conftest.$ac_build_objext \
-    conftest$ac_build_exeext conftest.$ac_ext
-  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Wtype_limits" >&5
-$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Wtype_limits" >&6; }
-if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Wtype_limits" = xyes; then :
-  as_fn_append WARN_CFLAGS_FOR_BUILD " -Wtype-limits"
+
 fi
 
 
-if test x${gl_build_unknown_warnings_are_errors+set} = x; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option" >&5
-$as_echo_n "checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option... " >&6; }
-if ${gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+ac_fn_c_check_type "$LINENO" "struct ifla_port_vsi" "ac_cv_type_struct_ifla_port_vsi" "$ac_includes_default
+#include \"$srcdir/netlink.h\"
+#include <linux/rtnetlink.h>
+"
+if test "x$ac_cv_type_struct_ifla_port_vsi" = xyes; then :
 
-  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
-  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IFLA_PORT_VSI 1
+_ACEOF
 
-int
-main ()
-{
+ac_fn_c_check_member "$LINENO" "struct ifla_port_vsi" "pad" "ac_cv_member_struct_ifla_port_vsi_pad" "$ac_includes_default
+#include \"$srcdir/netlink.h\"
+#include <linux/rtnetlink.h>
+"
+if test "x$ac_cv_member_struct_ifla_port_vsi_pad" = xyes; then :
 
-  ;
-  return 0;
-}
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IFLA_PORT_VSI_PAD 1
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=yes
-else
-  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=no
-fi
-rm -f core conftest.err conftest.$ac_build_objext \
-    conftest$ac_build_exeext conftest.$ac_ext
-  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&5
-$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&6; }
-if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" = xyes; then :
-  gl_build_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
-else
-  gl_build_unknown_warnings_are_errors=
+
 fi
 
 
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Wwrite-strings" >&5
-$as_echo_n "checking whether $CC_FOR_BUILD handles -Wwrite-strings... " >&6; }
-if ${gl_cv_warn_CFLAGS_FOR_BUILD__Wwrite_strings+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+done
 
-  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
-  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Wwrite-strings"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
 
-int
-main ()
-{
+for ac_header in linux/if_bridge.h
+do :
+  ac_fn_c_check_header_compile "$LINENO" "linux/if_bridge.h" "ac_cv_header_linux_if_bridge_h" "$ac_includes_default
+#include <netinet/in.h>
+"
+if test "x$ac_cv_header_linux_if_bridge_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LINUX_IF_BRIDGE_H 1
+_ACEOF
 
-  ;
-  return 0;
-}
+
+ac_fn_c_check_type "$LINENO" "struct br_port_msg" "ac_cv_type_struct_br_port_msg" "$ac_includes_default
+#include <netinet/in.h>
+#include <linux/if_bridge.h>
+"
+if test "x$ac_cv_type_struct_br_port_msg" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BR_PORT_MSG 1
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS_FOR_BUILD__Wwrite_strings=yes
-else
-  gl_cv_warn_CFLAGS_FOR_BUILD__Wwrite_strings=no
-fi
-rm -f core conftest.err conftest.$ac_build_objext \
-    conftest$ac_build_exeext conftest.$ac_ext
-  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
+ac_fn_c_check_member "$LINENO" "struct br_port_msg" "ifindex" "ac_cv_member_struct_br_port_msg_ifindex" "$ac_includes_default
+#include <netinet/in.h>
+#include <linux/if_bridge.h>
+"
+if test "x$ac_cv_member_struct_br_port_msg_ifindex" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BR_PORT_MSG_IFINDEX 1
+_ACEOF
+
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Wwrite_strings" >&5
-$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Wwrite_strings" >&6; }
-if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Wwrite_strings" = xyes; then :
-  as_fn_append WARN_CFLAGS_FOR_BUILD " -Wwrite-strings"
+
 fi
 
 
-# Check whether --enable-gcc-Werror was given.
-if test "${enable_gcc_Werror+set}" = set; then :
-  enableval=$enable_gcc_Werror; case $enableval in
-     yes) if test x${gl_build_unknown_warnings_are_errors+set} = x; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option" >&5
-$as_echo_n "checking whether $CC_FOR_BUILD handles -Werror -Wunknown-warning-option... " >&6; }
-if ${gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+ac_fn_c_check_type "$LINENO" "struct br_mdb_entry" "ac_cv_type_struct_br_mdb_entry" "$ac_includes_default
+#include <netinet/in.h>
+#include <linux/if_bridge.h>
+"
+if test "x$ac_cv_type_struct_br_mdb_entry" = xyes; then :
 
-  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
-  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BR_MDB_ENTRY 1
+_ACEOF
 
-int
-main ()
-{
+ac_fn_c_check_member "$LINENO" "struct br_mdb_entry" "addr" "ac_cv_member_struct_br_mdb_entry_addr" "$ac_includes_default
+#include <netinet/in.h>
+#include <linux/if_bridge.h>
+"
+if test "x$ac_cv_member_struct_br_mdb_entry_addr" = xyes; then :
 
-  ;
-  return 0;
-}
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BR_MDB_ENTRY_ADDR 1
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=yes
-else
-  gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option=no
-fi
-rm -f core conftest.err conftest.$ac_build_objext \
-    conftest$ac_build_exeext conftest.$ac_ext
-  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
+
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&5
-$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" >&6; }
-if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Werror__Wunknown_warning_option" = xyes; then :
-  gl_build_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
-else
-  gl_build_unknown_warnings_are_errors=
+
 fi
 
 
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD handles -Werror" >&5
-$as_echo_n "checking whether $CC_FOR_BUILD handles -Werror... " >&6; }
-if ${gl_cv_warn_CFLAGS_FOR_BUILD__Werror+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-  gl_save_compiler_FLAGS="$CFLAGS_FOR_BUILD"
-  as_fn_append CFLAGS_FOR_BUILD " $gl_build_unknown_warnings_are_errors -Werror"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+done
 
-int
-main ()
-{
 
-  ;
-  return 0;
-}
+for ac_header in linux/rtnetlink.h
+do :
+  ac_fn_c_check_header_compile "$LINENO" "linux/rtnetlink.h" "ac_cv_header_linux_rtnetlink_h" "$ac_includes_default
+#include \"$srcdir/netlink.h\"
+"
+if test "x$ac_cv_header_linux_rtnetlink_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LINUX_RTNETLINK_H 1
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  gl_cv_warn_CFLAGS_FOR_BUILD__Werror=yes
-else
-  gl_cv_warn_CFLAGS_FOR_BUILD__Werror=no
-fi
-rm -f core conftest.err conftest.$ac_build_objext \
-    conftest$ac_build_exeext conftest.$ac_ext
-  CFLAGS_FOR_BUILD="$gl_save_compiler_FLAGS"
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS_FOR_BUILD__Werror" >&5
-$as_echo "$gl_cv_warn_CFLAGS_FOR_BUILD__Werror" >&6; }
-if test "x$gl_cv_warn_CFLAGS_FOR_BUILD__Werror" = xyes; then :
-  as_fn_append WARN_CFLAGS_FOR_BUILD " -Werror"
-fi
 
- ;;
-     no)  ;;
-     *)   as_fn_error $? "bad value $enableval for gcc-Werror option" "$LINENO" 5 ;;
-   esac
+ac_fn_c_check_type "$LINENO" "struct ndt_config" "ac_cv_type_struct_ndt_config" "$ac_includes_default
+#include \"$srcdir/netlink.h\"
+#include <linux/rtnetlink.h>
+"
+if test "x$ac_cv_type_struct_ndt_config" = xyes; then :
 
-fi
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_NDT_CONFIG 1
+_ACEOF
 
+ac_fn_c_check_member "$LINENO" "struct ndt_config" "ndtc_proxy_qlen" "ac_cv_member_struct_ndt_config_ndtc_proxy_qlen" "$ac_includes_default
+#include \"$srcdir/netlink.h\"
+#include <linux/rtnetlink.h>
+"
+if test "x$ac_cv_member_struct_ndt_config_ndtc_proxy_qlen" = xyes; then :
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_NDT_CONFIG_NDTC_PROXY_QLEN 1
+_ACEOF
 
 
-if test -n "${st_saved_cross_compiling+set}"; then :
-  cross_compiling="${st_saved_cross_compiling}"; unset st_saved_cross_compiling
 fi
 
-if test -n "${st_saved_ac_tool_prefix+set}"; then :
-  ac_tool_prefix="${st_saved_ac_tool_prefix}"; unset st_saved_ac_tool_prefix
 fi
 
-if test -n "${st_saved_ac_link+set}"; then :
-  ac_link="${st_saved_ac_link}"; unset st_saved_ac_link
-fi
 
-if test -n "${st_saved_ac_cv_c_decl_report+set}"; then :
-  ac_cv_c_decl_report="${st_saved_ac_cv_c_decl_report}"; unset st_saved_ac_cv_c_decl_report
-fi
+ac_fn_c_check_type "$LINENO" "struct ndt_stats" "ac_cv_type_struct_ndt_stats" "$ac_includes_default
+#include \"$srcdir/netlink.h\"
+#include <linux/rtnetlink.h>
+"
+if test "x$ac_cv_type_struct_ndt_stats" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_NDT_STATS 1
+_ACEOF
+
+ac_fn_c_check_member "$LINENO" "struct ndt_stats" "ndts_table_fulls" "ac_cv_member_struct_ndt_stats_ndts_table_fulls" "$ac_includes_default
+#include \"$srcdir/netlink.h\"
+#include <linux/rtnetlink.h>
+"
+if test "x$ac_cv_member_struct_ndt_stats_ndts_table_fulls" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_NDT_STATS_NDTS_TABLE_FULLS 1
+_ACEOF
+
 
-if test -n "${st_saved_ac_cv_c_compiler_gnu+set}"; then :
-  ac_cv_c_compiler_gnu="${st_saved_ac_cv_c_compiler_gnu}"; unset st_saved_ac_cv_c_compiler_gnu
 fi
 
-if test -n "${st_saved_ac_cpp+set}"; then :
-  ac_cpp="${st_saved_ac_cpp}"; unset st_saved_ac_cpp
 fi
 
-if test -n "${st_saved_ac_compiler_gnu+set}"; then :
-  ac_compiler_gnu="${st_saved_ac_compiler_gnu}"; unset st_saved_ac_compiler_gnu
-fi
 
-if test -n "${st_saved_ac_compile+set}"; then :
-  ac_compile="${st_saved_ac_compile}"; unset st_saved_ac_compile
 fi
 
-if test -n "${st_saved_ac_c_werror_flag+set}"; then :
-  ac_c_werror_flag="${st_saved_ac_c_werror_flag}"; unset st_saved_ac_c_werror_flag
-fi
+done
 
-if test -n "${st_saved_ac_c_preproc_warn_flag+set}"; then :
-  ac_c_preproc_warn_flag="${st_saved_ac_c_preproc_warn_flag}"; unset st_saved_ac_c_preproc_warn_flag
-fi
 
-if test -n "${st_saved_ac_c_decl_warn_flag+set}"; then :
-  ac_c_decl_warn_flag="${st_saved_ac_c_decl_warn_flag}"; unset st_saved_ac_c_decl_warn_flag
-fi
+for ac_header in linux/rtnetlink.h
+do :
+  ac_fn_c_check_header_compile "$LINENO" "linux/rtnetlink.h" "ac_cv_header_linux_rtnetlink_h" "$ac_includes_default
+#include \"$srcdir/netlink.h\"
+"
+if test "x$ac_cv_header_linux_rtnetlink_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LINUX_RTNETLINK_H 1
+_ACEOF
+
 
+ac_fn_c_check_type "$LINENO" "struct rta_mfc_stats" "ac_cv_type_struct_rta_mfc_stats" "$ac_includes_default
+#include \"$srcdir/netlink.h\"
+#include <linux/rtnetlink.h>
+"
+if test "x$ac_cv_type_struct_rta_mfc_stats" = xyes; then :
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_RTA_MFC_STATS 1
+_ACEOF
 
-BUILD_EXEEXT=$ac_build_exeext
-BUILD_OBJEXT=$ac_build_objext
+ac_fn_c_check_member "$LINENO" "struct rta_mfc_stats" "mfcs_wrong_if" "ac_cv_member_struct_rta_mfc_stats_mfcs_wrong_if" "$ac_includes_default
+#include \"$srcdir/netlink.h\"
+#include <linux/rtnetlink.h>
+"
+if test "x$ac_cv_member_struct_rta_mfc_stats_mfcs_wrong_if" = xyes; then :
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_RTA_MFC_STATS_MFCS_WRONG_IF 1
+_ACEOF
 
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_RANLIB+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$RANLIB"; then
-  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
 
 fi
-fi
-RANLIB=$ac_cv_prog_RANLIB
-if test -n "$RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
-$as_echo "$RANLIB" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+
 fi
 
 
-fi
-if test -z "$ac_cv_prog_RANLIB"; then
-  ac_ct_RANLIB=$RANLIB
-  # Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_RANLIB"; then
-  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_RANLIB="ranlib"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
+ac_fn_c_check_type "$LINENO" "struct rtvia" "ac_cv_type_struct_rtvia" "$ac_includes_default
+#include \"$srcdir/netlink.h\"
+#include <linux/rtnetlink.h>
+"
+if test "x$ac_cv_type_struct_rtvia" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_RTVIA 1
+_ACEOF
+
+ac_fn_c_check_member "$LINENO" "struct rtvia" "rtvia_addr" "ac_cv_member_struct_rtvia_rtvia_addr" "$ac_includes_default
+#include \"$srcdir/netlink.h\"
+#include <linux/rtnetlink.h>
+"
+if test "x$ac_cv_member_struct_rtvia_rtvia_addr" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_RTVIA_RTVIA_ADDR 1
+_ACEOF
+
 
 fi
-fi
-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
-if test -n "$ac_ct_RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
-$as_echo "$ac_ct_RANLIB" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+
 fi
 
-  if test "x$ac_ct_RANLIB" = x; then
-    RANLIB=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    RANLIB=$ac_ct_RANLIB
-  fi
-else
-  RANLIB="$ac_cv_prog_RANLIB"
+
 fi
 
+done
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
-$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if ${ac_cv_path_GREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$GREP"; then
-  ac_path_GREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in grep ggrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_GREP" || continue
-# Check for GNU ac_path_GREP and select it if it is found.
-  # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'GREP' >> "conftest.nl"
-    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_GREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_GREP="$ac_path_GREP"
-      ac_path_GREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
+for ac_header in linux/tee.h
+do :
+  ac_fn_c_check_header_compile "$LINENO" "linux/tee.h" "ac_cv_header_linux_tee_h" "$ac_includes_default
+#include <linux/ioctl.h>
+"
+if test "x$ac_cv_header_linux_tee_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LINUX_TEE_H 1
+_ACEOF
 
-      $ac_path_GREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_GREP"; then
-    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_GREP=$GREP
-fi
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-$as_echo "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
+ac_fn_c_check_type "$LINENO" "struct tee_ioctl_buf_data" "ac_cv_type_struct_tee_ioctl_buf_data" "$ac_includes_default
+#include <linux/ioctl.h>
+#include <linux/tee.h>
+"
+if test "x$ac_cv_type_struct_tee_ioctl_buf_data" = xyes; then :
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_TEE_IOCTL_BUF_DATA 1
+_ACEOF
+
+ac_fn_c_check_member "$LINENO" "struct tee_ioctl_buf_data" "buf_len" "ac_cv_member_struct_tee_ioctl_buf_data_buf_len" "$ac_includes_default
+#include <linux/ioctl.h>
+#include <linux/tee.h>
+"
+if test "x$ac_cv_member_struct_tee_ioctl_buf_data_buf_len" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_TEE_IOCTL_BUF_DATA_BUF_LEN 1
+_ACEOF
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-$as_echo_n "checking for egrep... " >&6; }
-if ${ac_cv_path_EGREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
-   then ac_cv_path_EGREP="$GREP -E"
-   else
-     if test -z "$EGREP"; then
-  ac_path_EGREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in egrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_EGREP" || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
-  # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'EGREP' >> "conftest.nl"
-    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_EGREP="$ac_path_EGREP"
-      ac_path_EGREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
 
-      $ac_path_EGREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_EGREP"; then
-    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_EGREP=$EGREP
 fi
 
-   fi
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-$as_echo "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if ${ac_cv_header_stdc+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
+ac_fn_c_check_type "$LINENO" "struct tee_ioctl_cancel_arg" "ac_cv_type_struct_tee_ioctl_cancel_arg" "$ac_includes_default
+#include <linux/ioctl.h>
+#include <linux/tee.h>
+"
+if test "x$ac_cv_type_struct_tee_ioctl_cancel_arg" = xyes; then :
 
-int
-main ()
-{
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_TEE_IOCTL_CANCEL_ARG 1
+_ACEOF
 
-  ;
-  return 0;
-}
+ac_fn_c_check_member "$LINENO" "struct tee_ioctl_cancel_arg" "session" "ac_cv_member_struct_tee_ioctl_cancel_arg_session" "$ac_includes_default
+#include <linux/ioctl.h>
+#include <linux/tee.h>
+"
+if test "x$ac_cv_member_struct_tee_ioctl_cancel_arg_session" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_TEE_IOCTL_CANCEL_ARG_SESSION 1
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_header_stdc=yes
-else
-  ac_cv_header_stdc=no
+
+
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <string.h>
+fi
+
+
+ac_fn_c_check_type "$LINENO" "struct tee_ioctl_close_session_arg" "ac_cv_type_struct_tee_ioctl_close_session_arg" "$ac_includes_default
+#include <linux/ioctl.h>
+#include <linux/tee.h>
+"
+if test "x$ac_cv_type_struct_tee_ioctl_close_session_arg" = xyes; then :
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_TEE_IOCTL_CLOSE_SESSION_ARG 1
 _ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then :
 
-else
-  ac_cv_header_stdc=no
+ac_fn_c_check_member "$LINENO" "struct tee_ioctl_close_session_arg" "session" "ac_cv_member_struct_tee_ioctl_close_session_arg_session" "$ac_includes_default
+#include <linux/ioctl.h>
+#include <linux/tee.h>
+"
+if test "x$ac_cv_member_struct_tee_ioctl_close_session_arg_session" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_TEE_IOCTL_CLOSE_SESSION_ARG_SESSION 1
+_ACEOF
+
+
 fi
-rm -f conftest*
 
 fi
 
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
 
+ac_fn_c_check_type "$LINENO" "struct tee_ioctl_shm_alloc_data" "ac_cv_type_struct_tee_ioctl_shm_alloc_data" "$ac_includes_default
+#include <linux/ioctl.h>
+#include <linux/tee.h>
+"
+if test "x$ac_cv_type_struct_tee_ioctl_shm_alloc_data" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_TEE_IOCTL_SHM_ALLOC_DATA 1
 _ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then :
 
-else
-  ac_cv_header_stdc=no
+ac_fn_c_check_member "$LINENO" "struct tee_ioctl_shm_alloc_data" "id" "ac_cv_member_struct_tee_ioctl_shm_alloc_data_id" "$ac_includes_default
+#include <linux/ioctl.h>
+#include <linux/tee.h>
+"
+if test "x$ac_cv_member_struct_tee_ioctl_shm_alloc_data_id" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_TEE_IOCTL_SHM_ALLOC_DATA_ID 1
+_ACEOF
+
+
 fi
-rm -f conftest*
 
 fi
 
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then :
-  :
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
-                  (('a' <= (c) && (c) <= 'i') \
-                    || ('j' <= (c) && (c) <= 'r') \
-                    || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
 
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
-  int i;
-  for (i = 0; i < 256; i++)
-    if (XOR (islower (i), ISLOWER (i))
-       || toupper (i) != TOUPPER (i))
-      return 2;
-  return 0;
-}
+ac_fn_c_check_type "$LINENO" "struct tee_ioctl_shm_register_data" "ac_cv_type_struct_tee_ioctl_shm_register_data" "$ac_includes_default
+#include <linux/ioctl.h>
+#include <linux/tee.h>
+"
+if test "x$ac_cv_type_struct_tee_ioctl_shm_register_data" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_TEE_IOCTL_SHM_REGISTER_DATA 1
 _ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
 
-else
-  ac_cv_header_stdc=no
+ac_fn_c_check_member "$LINENO" "struct tee_ioctl_shm_register_data" "id" "ac_cv_member_struct_tee_ioctl_shm_register_data_id" "$ac_includes_default
+#include <linux/ioctl.h>
+#include <linux/tee.h>
+"
+if test "x$ac_cv_member_struct_tee_ioctl_shm_register_data_id" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_TEE_IOCTL_SHM_REGISTER_DATA_ID 1
+_ACEOF
+
+
 fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
+
 fi
 
+
+ac_fn_c_check_type "$LINENO" "struct tee_ioctl_version_data" "ac_cv_type_struct_tee_ioctl_version_data" "$ac_includes_default
+#include <linux/ioctl.h>
+#include <linux/tee.h>
+"
+if test "x$ac_cv_type_struct_tee_ioctl_version_data" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_TEE_IOCTL_VERSION_DATA 1
+_ACEOF
+
+ac_fn_c_check_member "$LINENO" "struct tee_ioctl_version_data" "gen_caps" "ac_cv_member_struct_tee_ioctl_version_data_gen_caps" "$ac_includes_default
+#include <linux/ioctl.h>
+#include <linux/tee.h>
+"
+if test "x$ac_cv_member_struct_tee_ioctl_version_data_gen_caps" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_TEE_IOCTL_VERSION_DATA_GEN_CAPS 1
+_ACEOF
+
+
 fi
+
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
 
-$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+ac_fn_c_check_type "$LINENO" "struct tee_ioctl_param" "ac_cv_type_struct_tee_ioctl_param" "$ac_includes_default
+#include <linux/ioctl.h>
+#include <linux/tee.h>
+"
+if test "x$ac_cv_type_struct_tee_ioctl_param" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_TEE_IOCTL_PARAM 1
+_ACEOF
+
+ac_fn_c_check_member "$LINENO" "struct tee_ioctl_param" "c" "ac_cv_member_struct_tee_ioctl_param_c" "$ac_includes_default
+#include <linux/ioctl.h>
+#include <linux/tee.h>
+"
+if test "x$ac_cv_member_struct_tee_ioctl_param_c" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_TEE_IOCTL_PARAM_C 1
+_ACEOF
+
 
 fi
 
-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
-                 inttypes.h stdint.h unistd.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+fi
+
+
+ac_fn_c_check_type "$LINENO" "struct tee_ioctl_invoke_arg" "ac_cv_type_struct_tee_ioctl_invoke_arg" "$ac_includes_default
+#include <linux/ioctl.h>
+#include <linux/tee.h>
 "
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+if test "x$ac_cv_type_struct_tee_ioctl_invoke_arg" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_TEE_IOCTL_INVOKE_ARG 1
 _ACEOF
 
+ac_fn_c_check_member "$LINENO" "struct tee_ioctl_invoke_arg" "params" "ac_cv_member_struct_tee_ioctl_invoke_arg_params" "$ac_includes_default
+#include <linux/ioctl.h>
+#include <linux/tee.h>
+"
+if test "x$ac_cv_member_struct_tee_ioctl_invoke_arg_params" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_TEE_IOCTL_INVOKE_ARG_PARAMS 1
+_ACEOF
+
+
 fi
 
-done
+fi
 
 
+ac_fn_c_check_type "$LINENO" "struct tee_iocl_supp_recv_arg" "ac_cv_type_struct_tee_iocl_supp_recv_arg" "$ac_includes_default
+#include <linux/ioctl.h>
+#include <linux/tee.h>
+"
+if test "x$ac_cv_type_struct_tee_iocl_supp_recv_arg" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_TEE_IOCL_SUPP_RECV_ARG 1
+_ACEOF
+
+ac_fn_c_check_member "$LINENO" "struct tee_iocl_supp_recv_arg" "params" "ac_cv_member_struct_tee_iocl_supp_recv_arg_params" "$ac_includes_default
+#include <linux/ioctl.h>
+#include <linux/tee.h>
+"
+if test "x$ac_cv_member_struct_tee_iocl_supp_recv_arg_params" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_TEE_IOCL_SUPP_RECV_ARG_PARAMS 1
+_ACEOF
+
 
-  ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default"
-if test "x$ac_cv_header_minix_config_h" = xyes; then :
-  MINIX=yes
-else
-  MINIX=
 fi
 
+fi
 
-  if test "$MINIX" = yes; then
 
-$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h
+ac_fn_c_check_type "$LINENO" "struct tee_iocl_supp_send_arg" "ac_cv_type_struct_tee_iocl_supp_send_arg" "$ac_includes_default
+#include <linux/ioctl.h>
+#include <linux/tee.h>
+"
+if test "x$ac_cv_type_struct_tee_iocl_supp_send_arg" = xyes; then :
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_TEE_IOCL_SUPP_SEND_ARG 1
+_ACEOF
 
-$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h
+ac_fn_c_check_member "$LINENO" "struct tee_iocl_supp_send_arg" "params" "ac_cv_member_struct_tee_iocl_supp_send_arg_params" "$ac_includes_default
+#include <linux/ioctl.h>
+#include <linux/tee.h>
+"
+if test "x$ac_cv_member_struct_tee_iocl_supp_send_arg_params" = xyes; then :
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_TEE_IOCL_SUPP_SEND_ARG_PARAMS 1
+_ACEOF
 
-$as_echo "#define _MINIX 1" >>confdefs.h
 
-  fi
+fi
 
+fi
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5
-$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; }
-if ${ac_cv_safe_to_define___extensions__+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
 
-#         define __EXTENSIONS__ 1
-          $ac_includes_default
-int
-main ()
-{
+ac_fn_c_check_type "$LINENO" "struct tee_ioctl_open_session_arg" "ac_cv_type_struct_tee_ioctl_open_session_arg" "$ac_includes_default
+#include <linux/ioctl.h>
+#include <linux/tee.h>
+"
+if test "x$ac_cv_type_struct_tee_ioctl_open_session_arg" = xyes; then :
 
-  ;
-  return 0;
-}
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_TEE_IOCTL_OPEN_SESSION_ARG 1
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_safe_to_define___extensions__=yes
-else
-  ac_cv_safe_to_define___extensions__=no
+
+ac_fn_c_check_member "$LINENO" "struct tee_ioctl_open_session_arg" "params" "ac_cv_member_struct_tee_ioctl_open_session_arg_params" "$ac_includes_default
+#include <linux/ioctl.h>
+#include <linux/tee.h>
+"
+if test "x$ac_cv_member_struct_tee_ioctl_open_session_arg_params" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_TEE_IOCTL_OPEN_SESSION_ARG_PARAMS 1
+_ACEOF
+
+
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5
-$as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
-  test $ac_cv_safe_to_define___extensions__ = yes &&
-    $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h
 
-  $as_echo "#define _ALL_SOURCE 1" >>confdefs.h
 
-  $as_echo "#define _GNU_SOURCE 1" >>confdefs.h
+fi
 
-  $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h
+done
 
-  $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h
 
+for ac_header in linux/videodev2.h
+do :
+  ac_fn_c_check_header_compile "$LINENO" "linux/videodev2.h" "ac_cv_header_linux_videodev2_h" "$ac_includes_default
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+"
+if test "x$ac_cv_header_linux_videodev2_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LINUX_VIDEODEV2_H 1
+_ACEOF
+
+
+ac_fn_c_check_type "$LINENO" "struct v4l2_capability" "ac_cv_type_struct_v4l2_capability" "$ac_includes_default
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+"
+if test "x$ac_cv_type_struct_v4l2_capability" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_V4L2_CAPABILITY 1
+_ACEOF
+
+ac_fn_c_check_member "$LINENO" "struct v4l2_capability" "reserved" "ac_cv_member_struct_v4l2_capability_reserved" "$ac_includes_default
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+"
+if test "x$ac_cv_member_struct_v4l2_capability_reserved" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_V4L2_CAPABILITY_RESERVED 1
+_ACEOF
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
-$as_echo_n "checking for a sed that does not truncate output... " >&6; }
-if ${ac_cv_path_SED+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-            ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
-     for ac_i in 1 2 3 4 5 6 7; do
-       ac_script="$ac_script$as_nl$ac_script"
-     done
-     echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
-     { ac_script=; unset ac_script;}
-     if test -z "$SED"; then
-  ac_path_SED_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in sed gsed; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_SED" || continue
-# Check for GNU ac_path_SED and select it if it is found.
-  # Check for GNU $ac_path_SED
-case `"$ac_path_SED" --version 2>&1` in
-*GNU*)
-  ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo '' >> "conftest.nl"
-    "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_SED_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_SED="$ac_path_SED"
-      ac_path_SED_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
 
-      $ac_path_SED_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_SED"; then
-    as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
-  fi
-else
-  ac_cv_path_SED=$SED
 fi
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
-$as_echo "$ac_cv_path_SED" >&6; }
- SED="$ac_cv_path_SED"
-  rm -f conftest.sed
 
 
+ac_fn_c_check_type "$LINENO" "struct v4l2_pix_format" "ac_cv_type_struct_v4l2_pix_format" "$ac_includes_default
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+"
+if test "x$ac_cv_type_struct_v4l2_pix_format" = xyes; then :
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_V4L2_PIX_FORMAT 1
+_ACEOF
 
-       # allow to override gcov location
+ac_fn_c_check_member "$LINENO" "struct v4l2_pix_format" "xfer_func" "ac_cv_member_struct_v4l2_pix_format_xfer_func" "$ac_includes_default
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+"
+if test "x$ac_cv_member_struct_v4l2_pix_format_xfer_func" = xyes; then :
 
-# Check whether --with-gcov was given.
-if test "${with_gcov+set}" = set; then :
-  withval=$with_gcov; _AX_CODE_COVERAGE_GCOV_PROG_WITH=$with_gcov
-else
-  _AX_CODE_COVERAGE_GCOV_PROG_WITH=gcov
-fi
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_V4L2_PIX_FORMAT_XFER_FUNC 1
+_ACEOF
 
 
-       { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build with code coverage support" >&5
-$as_echo_n "checking whether to build with code coverage support... " >&6; }
-       # Check whether --enable-code-coverage was given.
-if test "${enable_code_coverage+set}" = set; then :
-  enableval=$enable_code_coverage;
-else
-  enable_code_coverage=no
 fi
 
-
-        if test x$enable_code_coverage = xyes; then
-  CODE_COVERAGE_ENABLED_TRUE=
-  CODE_COVERAGE_ENABLED_FALSE='#'
-else
-  CODE_COVERAGE_ENABLED_TRUE='#'
-  CODE_COVERAGE_ENABLED_FALSE=
 fi
 
-       CODE_COVERAGE_ENABLED=$enable_code_coverage
 
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_code_coverage" >&5
-$as_echo "$enable_code_coverage" >&6; }
+ac_fn_c_check_type "$LINENO" "struct v4l2_plane_pix_format" "ac_cv_type_struct_v4l2_plane_pix_format" "$ac_includes_default
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+"
+if test "x$ac_cv_type_struct_v4l2_plane_pix_format" = xyes; then :
 
-       if  test "$enable_code_coverage" = "yes" ; then :
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_V4L2_PLANE_PIX_FORMAT 1
+_ACEOF
 
-               # check for gcov
-               if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}$_AX_CODE_COVERAGE_GCOV_PROG_WITH", so it can be a program name with args.
-set dummy ${ac_tool_prefix}$_AX_CODE_COVERAGE_GCOV_PROG_WITH; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_GCOV+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$GCOV"; then
-  ac_cv_prog_GCOV="$GCOV" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_GCOV="${ac_tool_prefix}$_AX_CODE_COVERAGE_GCOV_PROG_WITH"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
+ac_fn_c_check_member "$LINENO" "struct v4l2_plane_pix_format" "reserved" "ac_cv_member_struct_v4l2_plane_pix_format_reserved" "$ac_includes_default
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+"
+if test "x$ac_cv_member_struct_v4l2_plane_pix_format_reserved" = xyes; then :
 
-fi
-fi
-GCOV=$ac_cv_prog_GCOV
-if test -n "$GCOV"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GCOV" >&5
-$as_echo "$GCOV" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_V4L2_PLANE_PIX_FORMAT_RESERVED 1
+_ACEOF
 
 
 fi
-if test -z "$ac_cv_prog_GCOV"; then
-  ac_ct_GCOV=$GCOV
-  # Extract the first word of "$_AX_CODE_COVERAGE_GCOV_PROG_WITH", so it can be a program name with args.
-set dummy $_AX_CODE_COVERAGE_GCOV_PROG_WITH; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_GCOV+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_GCOV"; then
-  ac_cv_prog_ac_ct_GCOV="$ac_ct_GCOV" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_GCOV="$_AX_CODE_COVERAGE_GCOV_PROG_WITH"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
 
-fi
-fi
-ac_ct_GCOV=$ac_cv_prog_ac_ct_GCOV
-if test -n "$ac_ct_GCOV"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_GCOV" >&5
-$as_echo "$ac_ct_GCOV" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
 fi
 
-  if test "x$ac_ct_GCOV" = x; then
-    GCOV=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    GCOV=$ac_ct_GCOV
-  fi
-else
-  GCOV="$ac_cv_prog_GCOV"
+
+ac_fn_c_check_type "$LINENO" "struct v4l2_clip" "ac_cv_type_struct_v4l2_clip" "$ac_includes_default
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+"
+if test "x$ac_cv_type_struct_v4l2_clip" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_V4L2_CLIP 1
+_ACEOF
+
+ac_fn_c_check_member "$LINENO" "struct v4l2_clip" "next" "ac_cv_member_struct_v4l2_clip_next" "$ac_includes_default
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+"
+if test "x$ac_cv_member_struct_v4l2_clip_next" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_V4L2_CLIP_NEXT 1
+_ACEOF
+
+
 fi
 
-               if test "X$GCOV" = "X:"; then :
-  as_fn_error $? "gcov is needed to do coverage" "$LINENO" 5
 fi
 
 
-                               if  test "$GCC" = "no" ; then :
+ac_fn_c_check_type "$LINENO" "struct v4l2_window" "ac_cv_type_struct_v4l2_window" "$ac_includes_default
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+"
+if test "x$ac_cv_type_struct_v4l2_window" = xyes; then :
 
-                       as_fn_error $? "not compiling with gcc, which is required for gcov code coverage" "$LINENO" 5
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_V4L2_WINDOW 1
+_ACEOF
 
-fi
+ac_fn_c_check_member "$LINENO" "struct v4l2_window" "global_alpha" "ac_cv_member_struct_v4l2_window_global_alpha" "$ac_includes_default
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+"
+if test "x$ac_cv_member_struct_v4l2_window_global_alpha" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_V4L2_WINDOW_GLOBAL_ALPHA 1
+_ACEOF
 
-               # Extract the first word of "lcov", so it can be a program name with args.
-set dummy lcov; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_LCOV+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$LCOV"; then
-  ac_cv_prog_LCOV="$LCOV" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_LCOV="lcov"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
 
 fi
-fi
-LCOV=$ac_cv_prog_LCOV
-if test -n "$LCOV"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LCOV" >&5
-$as_echo "$LCOV" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+
 fi
 
 
-               # Extract the first word of "genhtml", so it can be a program name with args.
-set dummy genhtml; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_GENHTML+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$GENHTML"; then
-  ac_cv_prog_GENHTML="$GENHTML" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_GENHTML="genhtml"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
+ac_fn_c_check_type "$LINENO" "struct v4l2_vbi_format" "ac_cv_type_struct_v4l2_vbi_format" "$ac_includes_default
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+"
+if test "x$ac_cv_type_struct_v4l2_vbi_format" = xyes; then :
 
-fi
-fi
-GENHTML=$ac_cv_prog_GENHTML
-if test -n "$GENHTML"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GENHTML" >&5
-$as_echo "$GENHTML" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_V4L2_VBI_FORMAT 1
+_ACEOF
 
+ac_fn_c_check_member "$LINENO" "struct v4l2_vbi_format" "reserved" "ac_cv_member_struct_v4l2_vbi_format_reserved" "$ac_includes_default
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+"
+if test "x$ac_cv_member_struct_v4l2_vbi_format_reserved" = xyes; then :
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_V4L2_VBI_FORMAT_RESERVED 1
+_ACEOF
 
-               if  test -z "$LCOV" ; then :
 
-                       as_fn_error $? "To enable code coverage reporting you must have lcov installed" "$LINENO" 5
+fi
 
 fi
 
-               if  test -z "$GENHTML" ; then :
 
-                       as_fn_error $? "Could not find genhtml from the lcov package" "$LINENO" 5
+ac_fn_c_check_type "$LINENO" "struct v4l2_sliced_vbi_format" "ac_cv_type_struct_v4l2_sliced_vbi_format" "$ac_includes_default
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+"
+if test "x$ac_cv_type_struct_v4l2_sliced_vbi_format" = xyes; then :
 
-fi
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_V4L2_SLICED_VBI_FORMAT 1
+_ACEOF
 
-                                               CODE_COVERAGE_CPPFLAGS="-DENABLE_COVERAGE_GCOV -DNDEBUG"
-               CODE_COVERAGE_CFLAGS="-O0 -g -fprofile-arcs -ftest-coverage"
-               CODE_COVERAGE_CXXFLAGS="-O0 -g -fprofile-arcs -ftest-coverage"
-               CODE_COVERAGE_LIBS="-lgcov"
-               CODE_COVERAGE_LDFLAGS="$CODE_COVERAGE_LIBS"
+ac_fn_c_check_member "$LINENO" "struct v4l2_sliced_vbi_format" "reserved" "ac_cv_member_struct_v4l2_sliced_vbi_format_reserved" "$ac_includes_default
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+"
+if test "x$ac_cv_member_struct_v4l2_sliced_vbi_format_reserved" = xyes; then :
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_V4L2_SLICED_VBI_FORMAT_RESERVED 1
+_ACEOF
 
 
+fi
 
+fi
 
 
+ac_fn_c_check_type "$LINENO" "struct v4l2_sliced_vbi_cap" "ac_cv_type_struct_v4l2_sliced_vbi_cap" "$ac_includes_default
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+"
+if test "x$ac_cv_type_struct_v4l2_sliced_vbi_cap" = xyes; then :
 
-               CODE_COVERAGE_RULES_CHECK='
-       -$(A''M_V_at)$(MAKE) $(AM_MAKEFLAGS) -k check
-       $(A''M_V_at)$(MAKE) $(AM_MAKEFLAGS) code-coverage-capture
-'
-               CODE_COVERAGE_RULES_CAPTURE='
-       $(code_coverage_v_lcov_cap)$(LCOV) $(code_coverage_quiet) $(addprefix --directory ,$(CODE_COVERAGE_DIRECTORY)) --capture --output-file "$(CODE_COVERAGE_OUTPUT_FILE).tmp" --test-name "$(call code_coverage_sanitize,$(PACKAGE_NAME)-$(PACKAGE_VERSION))" --no-checksum --compat-libtool $(CODE_COVERAGE_LCOV_SHOPTS) $(CODE_COVERAGE_LCOV_OPTIONS)
-       $(code_coverage_v_lcov_ign)$(LCOV) $(code_coverage_quiet) $(addprefix --directory ,$(CODE_COVERAGE_DIRECTORY)) --remove "$(CODE_COVERAGE_OUTPUT_FILE).tmp" "/tmp/*" $(CODE_COVERAGE_IGNORE_PATTERN) --output-file "$(CODE_COVERAGE_OUTPUT_FILE)" $(CODE_COVERAGE_LCOV_SHOPTS) $(CODE_COVERAGE_LCOV_RMOPTS)
-       -@rm -f $(CODE_COVERAGE_OUTPUT_FILE).tmp
-       $(code_coverage_v_genhtml)LANG=C $(GENHTML) $(code_coverage_quiet) $(addprefix --prefix ,$(CODE_COVERAGE_DIRECTORY)) --output-directory "$(CODE_COVERAGE_OUTPUT_DIRECTORY)" --title "$(PACKAGE_NAME)-$(PACKAGE_VERSION) Code Coverage" --legend --show-details "$(CODE_COVERAGE_OUTPUT_FILE)" $(CODE_COVERAGE_GENHTML_OPTIONS)
-       @echo "file://$(abs_builddir)/$(CODE_COVERAGE_OUTPUT_DIRECTORY)/index.html"
-'
-               CODE_COVERAGE_RULES_CLEAN='
-clean: code-coverage-clean
-distclean: code-coverage-clean
-code-coverage-clean:
-       -$(LCOV) --directory $(top_builddir) -z
-       -rm -rf $(CODE_COVERAGE_OUTPUT_FILE) $(CODE_COVERAGE_OUTPUT_FILE).tmp $(CODE_COVERAGE_OUTPUT_DIRECTORY)
-       -find . \( -name "*.gcda" -o -name "*.gcno" -o -name "*.gcov" \) -delete
-'
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_V4L2_SLICED_VBI_CAP 1
+_ACEOF
 
-else
+ac_fn_c_check_member "$LINENO" "struct v4l2_sliced_vbi_cap" "reserved" "ac_cv_member_struct_v4l2_sliced_vbi_cap_reserved" "$ac_includes_default
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+"
+if test "x$ac_cv_member_struct_v4l2_sliced_vbi_cap_reserved" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_V4L2_SLICED_VBI_CAP_RESERVED 1
+_ACEOF
 
-               CODE_COVERAGE_RULES_CHECK='
-       @echo "Need to reconfigure with --enable-code-coverage"
-'
-               CODE_COVERAGE_RULES_CAPTURE="$CODE_COVERAGE_RULES_CHECK"
-               CODE_COVERAGE_RULES_CLEAN=''
 
 fi
 
-CODE_COVERAGE_RULES='
-# Code coverage
-#
-# Optional:
-#  - CODE_COVERAGE_DIRECTORY: Top-level directory for code coverage reporting.
-#    Multiple directories may be specified, separated by whitespace.
-#    (Default: $(top_builddir))
-#  - CODE_COVERAGE_OUTPUT_FILE: Filename and path for the .info file generated
-#    by lcov for code coverage. (Default:
-#    $(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage.info)
-#  - CODE_COVERAGE_OUTPUT_DIRECTORY: Directory for generated code coverage
-#    reports to be created. (Default:
-#    $(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage)
-#  - CODE_COVERAGE_BRANCH_COVERAGE: Set to 1 to enforce branch coverage,
-#    set to 0 to disable it and leave empty to stay with the default.
-#    (Default: empty)
-#  - CODE_COVERAGE_LCOV_SHOPTS_DEFAULT: Extra options shared between both lcov
-#    instances. (Default: based on $CODE_COVERAGE_BRANCH_COVERAGE)
-#  - CODE_COVERAGE_LCOV_SHOPTS: Extra options to shared between both lcov
-#    instances. (Default: $CODE_COVERAGE_LCOV_SHOPTS_DEFAULT)
-#  - CODE_COVERAGE_LCOV_OPTIONS_GCOVPATH: --gcov-tool pathtogcov
-#  - CODE_COVERAGE_LCOV_OPTIONS_DEFAULT: Extra options to pass to the
-#    collecting lcov instance. (Default: $CODE_COVERAGE_LCOV_OPTIONS_GCOVPATH)
-#  - CODE_COVERAGE_LCOV_OPTIONS: Extra options to pass to the collecting lcov
-#    instance. (Default: $CODE_COVERAGE_LCOV_OPTIONS_DEFAULT)
-#  - CODE_COVERAGE_LCOV_RMOPTS_DEFAULT: Extra options to pass to the filtering
-#    lcov instance. (Default: empty)
-#  - CODE_COVERAGE_LCOV_RMOPTS: Extra options to pass to the filtering lcov
-#    instance. (Default: $CODE_COVERAGE_LCOV_RMOPTS_DEFAULT)
-#  - CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT: Extra options to pass to the
-#    genhtml instance. (Default: based on $CODE_COVERAGE_BRANCH_COVERAGE)
-#  - CODE_COVERAGE_GENHTML_OPTIONS: Extra options to pass to the genhtml
-#    instance. (Default: $CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT)
-#  - CODE_COVERAGE_IGNORE_PATTERN: Extra glob pattern of files to ignore
-#
-# The generated report will be titled using the $(PACKAGE_NAME) and
-# $(PACKAGE_VERSION). In order to add the current git hash to the title,
-# use the git-version-gen script, available online.
+fi
 
-# Optional variables
-CODE_COVERAGE_DIRECTORY ?= $(top_builddir)
-CODE_COVERAGE_OUTPUT_FILE ?= $(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage.info
-CODE_COVERAGE_OUTPUT_DIRECTORY ?= $(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage
-CODE_COVERAGE_BRANCH_COVERAGE ?=
-CODE_COVERAGE_LCOV_SHOPTS_DEFAULT ?= $(if $(CODE_COVERAGE_BRANCH_COVERAGE),\
---rc lcov_branch_coverage=$(CODE_COVERAGE_BRANCH_COVERAGE))
-CODE_COVERAGE_LCOV_SHOPTS ?= $(CODE_COVERAGE_LCOV_SHOPTS_DEFAULT)
-CODE_COVERAGE_LCOV_OPTIONS_GCOVPATH ?= --gcov-tool "$(GCOV)"
-CODE_COVERAGE_LCOV_OPTIONS_DEFAULT ?= $(CODE_COVERAGE_LCOV_OPTIONS_GCOVPATH)
-CODE_COVERAGE_LCOV_OPTIONS ?= $(CODE_COVERAGE_LCOV_OPTIONS_DEFAULT)
-CODE_COVERAGE_LCOV_RMOPTS_DEFAULT ?=
-CODE_COVERAGE_LCOV_RMOPTS ?= $(CODE_COVERAGE_LCOV_RMOPTS_DEFAULT)
-CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT ?=\
-$(if $(CODE_COVERAGE_BRANCH_COVERAGE),\
---rc genhtml_branch_coverage=$(CODE_COVERAGE_BRANCH_COVERAGE))
-CODE_COVERAGE_GENHTML_OPTIONS ?= $(CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT)
-CODE_COVERAGE_IGNORE_PATTERN ?=
 
-code_coverage_v_lcov_cap = $(code_coverage_v_lcov_cap_$(V))
-code_coverage_v_lcov_cap_ = $(code_coverage_v_lcov_cap_$(AM_DEFAULT_VERBOSITY))
-code_coverage_v_lcov_cap_0 = @echo "  LCOV   --capture"\
- $(CODE_COVERAGE_OUTPUT_FILE);
-code_coverage_v_lcov_ign = $(code_coverage_v_lcov_ign_$(V))
-code_coverage_v_lcov_ign_ = $(code_coverage_v_lcov_ign_$(AM_DEFAULT_VERBOSITY))
-code_coverage_v_lcov_ign_0 = @echo "  LCOV   --remove /tmp/*"\
- $(CODE_COVERAGE_IGNORE_PATTERN);
-code_coverage_v_genhtml = $(code_coverage_v_genhtml_$(V))
-code_coverage_v_genhtml_ = $(code_coverage_v_genhtml_$(AM_DEFAULT_VERBOSITY))
-code_coverage_v_genhtml_0 = @echo "  GEN   " $(CODE_COVERAGE_OUTPUT_DIRECTORY);
-code_coverage_quiet = $(code_coverage_quiet_$(V))
-code_coverage_quiet_ = $(code_coverage_quiet_$(AM_DEFAULT_VERBOSITY))
-code_coverage_quiet_0 = --quiet
+ac_fn_c_check_type "$LINENO" "struct v4l2_format" "ac_cv_type_struct_v4l2_format" "$ac_includes_default
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+"
+if test "x$ac_cv_type_struct_v4l2_format" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_V4L2_FORMAT 1
+_ACEOF
+
+ac_fn_c_check_member "$LINENO" "struct v4l2_format" "fmt" "ac_cv_member_struct_v4l2_format_fmt" "$ac_includes_default
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+"
+if test "x$ac_cv_member_struct_v4l2_format_fmt" = xyes; then :
 
-# sanitizes the test-name: replaces with underscores: dashes and dots
-code_coverage_sanitize = $(subst -,_,$(subst .,_,$(1)))
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_V4L2_FORMAT_FMT 1
+_ACEOF
 
-# Use recursive makes in order to ignore errors during check
-check-code-coverage:'"$CODE_COVERAGE_RULES_CHECK"'
 
-# Capture code coverage data
-code-coverage-capture: code-coverage-capture-hook'"$CODE_COVERAGE_RULES_CAPTURE"'
+fi
 
-# Hook rule executed before code-coverage-capture, overridable by the user
-code-coverage-capture-hook:
+fi
 
-'"$CODE_COVERAGE_RULES_CLEAN"'
 
-GITIGNOREFILES ?=
-GITIGNOREFILES += $(CODE_COVERAGE_OUTPUT_FILE) $(CODE_COVERAGE_OUTPUT_DIRECTORY)
+ac_fn_c_check_type "$LINENO" "struct v4l2_area" "ac_cv_type_struct_v4l2_area" "$ac_includes_default
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+"
+if test "x$ac_cv_type_struct_v4l2_area" = xyes; then :
 
-A''M_DISTCHECK_CONFIGURE_FLAGS ?=
-A''M_DISTCHECK_CONFIGURE_FLAGS += --disable-code-coverage
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_V4L2_AREA 1
+_ACEOF
 
-.PHONY: check-code-coverage code-coverage-capture code-coverage-capture-hook code-coverage-clean
-'
+ac_fn_c_check_member "$LINENO" "struct v4l2_area" "height" "ac_cv_member_struct_v4l2_area_height" "$ac_includes_default
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+"
+if test "x$ac_cv_member_struct_v4l2_area_height" = xyes; then :
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_V4L2_AREA_HEIGHT 1
+_ACEOF
 
 
+fi
 
+fi
 
 
-$as_echo "#define COPYRIGHT_YEAR \"2019\"" >>confdefs.h
+ac_fn_c_check_type "$LINENO" "struct v4l2_ext_controls" "ac_cv_type_struct_v4l2_ext_controls" "$ac_includes_default
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+"
+if test "x$ac_cv_type_struct_v4l2_ext_controls" = xyes; then :
 
-COPYRIGHT_YEAR=2019
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_V4L2_EXT_CONTROLS 1
+_ACEOF
 
+ac_fn_c_check_member "$LINENO" "struct v4l2_ext_controls" "controls" "ac_cv_member_struct_v4l2_ext_controls_controls" "$ac_includes_default
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+"
+if test "x$ac_cv_member_struct_v4l2_ext_controls_controls" = xyes; then :
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_V4L2_EXT_CONTROLS_CONTROLS 1
+_ACEOF
 
-$as_echo "#define MANPAGE_DATE \"2019-03-17\"" >>confdefs.h
 
-MANPAGE_DATE=2019-03-17
+fi
 
+fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for supported architecture" >&5
-$as_echo_n "checking for supported architecture... " >&6; }
-arch_m32=
-arch_mx32=
-cc_flags_m32=-m32
-cc_flags_mx32=-mx32
-case "$host_cpu" in
-aarch64*)
-       arch=aarch64
-       arch_m32=arm
 
-$as_echo "#define AARCH64 1" >>confdefs.h
+ac_fn_c_check_type "$LINENO" "struct v4l2_frmsize_discrete" "ac_cv_type_struct_v4l2_frmsize_discrete" "$ac_includes_default
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+"
+if test "x$ac_cv_type_struct_v4l2_frmsize_discrete" = xyes; then :
 
-       ;;
-alpha*)
-       arch=alpha
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_V4L2_FRMSIZE_DISCRETE 1
+_ACEOF
 
-$as_echo "#define ALPHA 1" >>confdefs.h
+ac_fn_c_check_member "$LINENO" "struct v4l2_frmsize_discrete" "height" "ac_cv_member_struct_v4l2_frmsize_discrete_height" "$ac_includes_default
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+"
+if test "x$ac_cv_member_struct_v4l2_frmsize_discrete_height" = xyes; then :
 
-       ;;
-arc*)
-       arch=arc
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_V4L2_FRMSIZE_DISCRETE_HEIGHT 1
+_ACEOF
 
-$as_echo "#define ARC 1" >>confdefs.h
 
-       ;;
-arm*)
-       arch=arm
+fi
 
-$as_echo "#define ARM 1" >>confdefs.h
+fi
 
-       ;;
-avr32*)
-       arch=avr32
 
-$as_echo "#define AVR32 1" >>confdefs.h
+ac_fn_c_check_type "$LINENO" "struct v4l2_frmsize_stepwise" "ac_cv_type_struct_v4l2_frmsize_stepwise" "$ac_includes_default
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+"
+if test "x$ac_cv_type_struct_v4l2_frmsize_stepwise" = xyes; then :
 
-       ;;
-bfin)
-       arch=bfin
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_V4L2_FRMSIZE_STEPWISE 1
+_ACEOF
 
-$as_echo "#define BFIN 1" >>confdefs.h
+ac_fn_c_check_member "$LINENO" "struct v4l2_frmsize_stepwise" "step_height" "ac_cv_member_struct_v4l2_frmsize_stepwise_step_height" "$ac_includes_default
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+"
+if test "x$ac_cv_member_struct_v4l2_frmsize_stepwise_step_height" = xyes; then :
 
-       ;;
-csky*)
-       arch=csky
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_V4L2_FRMSIZE_STEPWISE_STEP_HEIGHT 1
+_ACEOF
 
-$as_echo "#define CSKY 1" >>confdefs.h
 
-       ;;
-hppa*|parisc*)
-       arch=hppa
+fi
 
-$as_echo "#define HPPA 1" >>confdefs.h
+fi
 
-       ;;
-i[3456]86|pentium)
-       arch=i386
 
-$as_echo "#define I386 1" >>confdefs.h
+ac_fn_c_check_type "$LINENO" "struct v4l2_frmsizeenum" "ac_cv_type_struct_v4l2_frmsizeenum" "$ac_includes_default
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+"
+if test "x$ac_cv_type_struct_v4l2_frmsizeenum" = xyes; then :
 
-       ;;
-ia64)
-       arch=ia64
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_V4L2_FRMSIZEENUM 1
+_ACEOF
 
-$as_echo "#define IA64 1" >>confdefs.h
+ac_fn_c_check_member "$LINENO" "struct v4l2_frmsizeenum" "reserved" "ac_cv_member_struct_v4l2_frmsizeenum_reserved" "$ac_includes_default
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+"
+if test "x$ac_cv_member_struct_v4l2_frmsizeenum_reserved" = xyes; then :
 
-       ;;
-m68k)
-       arch=m68k
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_V4L2_FRMSIZEENUM_RESERVED 1
+_ACEOF
 
-$as_echo "#define M68K 1" >>confdefs.h
 
-       ;;
-metag*)
-       arch=metag
+fi
 
-$as_echo "#define METAG 1" >>confdefs.h
+fi
 
-       ;;
-microblaze*)
-       arch=microblaze
 
-$as_echo "#define MICROBLAZE 1" >>confdefs.h
+ac_fn_c_check_type "$LINENO" "struct v4l2_frmival_stepwise" "ac_cv_type_struct_v4l2_frmival_stepwise" "$ac_includes_default
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+"
+if test "x$ac_cv_type_struct_v4l2_frmival_stepwise" = xyes; then :
 
-       ;;
-mips*)
-       arch=mips
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_V4L2_FRMIVAL_STEPWISE 1
+_ACEOF
 
-$as_echo "#define MIPS 1" >>confdefs.h
+ac_fn_c_check_member "$LINENO" "struct v4l2_frmival_stepwise" "step" "ac_cv_member_struct_v4l2_frmival_stepwise_step" "$ac_includes_default
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+"
+if test "x$ac_cv_member_struct_v4l2_frmival_stepwise_step" = xyes; then :
 
-       ;;
-nios2*)
-       arch=nios2
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_V4L2_FRMIVAL_STEPWISE_STEP 1
+_ACEOF
 
-$as_echo "#define NIOS2 1" >>confdefs.h
 
-       ;;
-or1k*)
-       arch=or1k
+fi
 
-$as_echo "#define OR1K 1" >>confdefs.h
+fi
 
-       ;;
-powerpc*)
 
-$as_echo "#define POWERPC 1" >>confdefs.h
+ac_fn_c_check_type "$LINENO" "struct v4l2_frmivalenum" "ac_cv_type_struct_v4l2_frmivalenum" "$ac_includes_default
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+"
+if test "x$ac_cv_type_struct_v4l2_frmivalenum" = xyes; then :
 
-       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifndef __LP64__
-# error 32 bit
-#endif
-int
-main ()
-{
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_V4L2_FRMIVALENUM 1
+_ACEOF
 
-  ;
-  return 0;
-}
+ac_fn_c_check_member "$LINENO" "struct v4l2_frmivalenum" "reserved" "ac_cv_member_struct_v4l2_frmivalenum_reserved" "$ac_includes_default
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+"
+if test "x$ac_cv_member_struct_v4l2_frmivalenum_reserved" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_V4L2_FRMIVALENUM_RESERVED 1
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  arch=powerpc64
-else
-  arch=powerpc
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-       if test "$arch" = "powerpc64"; then
-               arch_m32=powerpc
 
-$as_echo "#define POWERPC64 1" >>confdefs.h
 
-       fi
-       ;;
-riscv*)
-       arch=riscv
+fi
 
-$as_echo "#define RISCV 1" >>confdefs.h
+fi
 
-       ;;
-s390)
-       arch=s390
 
-$as_echo "#define S390 1" >>confdefs.h
+ac_fn_c_check_type "$LINENO" "struct v4l2_create_buffers" "ac_cv_type_struct_v4l2_create_buffers" "$ac_includes_default
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+"
+if test "x$ac_cv_type_struct_v4l2_create_buffers" = xyes; then :
 
-       ;;
-s390x)
-       arch=s390x
-       arch_m32=s390
-       cc_flags_m32=-m31
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_V4L2_CREATE_BUFFERS 1
+_ACEOF
 
-$as_echo "#define S390X 1" >>confdefs.h
+ac_fn_c_check_member "$LINENO" "struct v4l2_create_buffers" "reserved" "ac_cv_member_struct_v4l2_create_buffers_reserved" "$ac_includes_default
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+"
+if test "x$ac_cv_member_struct_v4l2_create_buffers_reserved" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_V4L2_CREATE_BUFFERS_RESERVED 1
+_ACEOF
 
-       ;;
-sh64*)
-       arch=sh64
 
-$as_echo "#define SH64 1" >>confdefs.h
+fi
 
-       ;;
-sh*)
-       arch=sh
+fi
 
-$as_echo "#define SH 1" >>confdefs.h
 
-       ;;
-sparc64*)
-       arch=sparc64
-       arch_m32=sparc
+fi
 
-$as_echo "#define SPARC64 1" >>confdefs.h
+done
 
-       ;;
-sparc*)
-       arch=sparc
 
-$as_echo "#define SPARC 1" >>confdefs.h
 
-       ;;
-tile*)
-       arch=tile
 
-$as_echo "#define TILE 1" >>confdefs.h
+ac_fn_c_check_decl "$LINENO" "BTRFS_COMPRESS_NONE" "ac_cv_have_decl_BTRFS_COMPRESS_NONE" "
+#include <stdio.h>
+#include <linux/btrfs.h>
 
-       ;;
-x86?64*)
-       arch_m32=i386
-       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifndef __ILP32__
-# error not x32
-#endif
-int
-main ()
-{
+"
+if test "x$ac_cv_have_decl_BTRFS_COMPRESS_NONE" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
-  ;
-  return 0;
-}
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_BTRFS_COMPRESS_NONE $ac_have_decl
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  arch=x32
+ac_fn_c_check_decl "$LINENO" "BTRFS_COMPRESS_ZLIB" "ac_cv_have_decl_BTRFS_COMPRESS_ZLIB" "
+#include <stdio.h>
+#include <linux/btrfs.h>
+
+"
+if test "x$ac_cv_have_decl_BTRFS_COMPRESS_ZLIB" = xyes; then :
+  ac_have_decl=1
 else
-  arch=x86_64
+  ac_have_decl=0
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-       if test "$arch" = "x86_64"; then
-               arch_mx32=x32
-
-$as_echo "#define X86_64 1" >>confdefs.h
 
-       else
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_BTRFS_COMPRESS_ZLIB $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "BTRFS_COMPRESS_LZO" "ac_cv_have_decl_BTRFS_COMPRESS_LZO" "
+#include <stdio.h>
+#include <linux/btrfs.h>
 
-$as_echo "#define X32 1" >>confdefs.h
+"
+if test "x$ac_cv_have_decl_BTRFS_COMPRESS_LZO" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
-       fi
-       ;;
-xtensa*)
-       arch=xtensa
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_BTRFS_COMPRESS_LZO $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "BTRFS_COMPRESS_ZSTD" "ac_cv_have_decl_BTRFS_COMPRESS_ZSTD" "
+#include <stdio.h>
+#include <linux/btrfs.h>
 
-$as_echo "#define XTENSA 1" >>confdefs.h
+"
+if test "x$ac_cv_have_decl_BTRFS_COMPRESS_ZSTD" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
-       ;;
-*)
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: NO!" >&5
-$as_echo "NO!" >&6; }
-       as_fn_error $? "architecture $host_cpu is not supported by strace" "$LINENO" 5
-       ;;
-esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $arch" >&5
-$as_echo "$arch" >&6; }
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_BTRFS_COMPRESS_ZSTD $ac_have_decl
+_ACEOF
 
-arch_native=$arch
 
-test -n "$arch_m32" ||
-       arch_m32=$arch
-test -n "$arch_mx32" ||
-       arch_mx32=$arch
+ac_fn_c_check_decl "$LINENO" "CLOSE_RANGE_UNSHARE" "ac_cv_have_decl_CLOSE_RANGE_UNSHARE" "
+#include <linux/close_range.h>
 
+"
+if test "x$ac_cv_have_decl_CLOSE_RANGE_UNSHARE" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_CLOSE_RANGE_UNSHARE $ac_have_decl
+_ACEOF
 
 
+ac_fn_c_check_decl "$LINENO" "LO_FLAGS_READ_ONLY" "ac_cv_have_decl_LO_FLAGS_READ_ONLY" "
+#include <linux/loop.h>
 
+"
+if test "x$ac_cv_have_decl_LO_FLAGS_READ_ONLY" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_LO_FLAGS_READ_ONLY $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "LO_FLAGS_USE_AOPS" "ac_cv_have_decl_LO_FLAGS_USE_AOPS" "
+#include <linux/loop.h>
 
-MIPS_ABI=
-if test "$arch" = mips; then
-       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _MIPS_SIM" >&5
-$as_echo_n "checking for _MIPS_SIM... " >&6; }
-if ${st_cv__MIPS_SIM+:} false; then :
-  $as_echo_n "(cached) " >&6
+"
+if test "x$ac_cv_have_decl_LO_FLAGS_USE_AOPS" = xyes; then :
+  ac_have_decl=1
 else
-  if ac_fn_c_compute_int "$LINENO" "_MIPS_SIM" "st_cv__MIPS_SIM"        ""; then :
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_LO_FLAGS_USE_AOPS $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "LO_FLAGS_AUTOCLEAR" "ac_cv_have_decl_LO_FLAGS_AUTOCLEAR" "
+#include <linux/loop.h>
 
+"
+if test "x$ac_cv_have_decl_LO_FLAGS_AUTOCLEAR" = xyes; then :
+  ac_have_decl=1
 else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "_MIPS_SIM cannot be determined
-See \`config.log' for more details" "$LINENO" 5; }
+  ac_have_decl=0
 fi
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $st_cv__MIPS_SIM" >&5
-$as_echo "$st_cv__MIPS_SIM" >&6; }
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_LO_FLAGS_AUTOCLEAR $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "LO_FLAGS_PARTSCAN" "ac_cv_have_decl_LO_FLAGS_PARTSCAN" "
+#include <linux/loop.h>
 
-       # requires GCC >= 3.4
-       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MIPS ABI" >&5
-$as_echo_n "checking for MIPS ABI... " >&6; }
-if ${st_cv_mips_abi+:} false; then :
-  $as_echo_n "(cached) " >&6
+"
+if test "x$ac_cv_have_decl_LO_FLAGS_PARTSCAN" = xyes; then :
+  ac_have_decl=1
 else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+  ac_have_decl=0
+fi
 
-int
-main ()
-{
-int i[_MIPS_SIM == _ABIO32 ? 1 : - 1];
-  ;
-  return 0;
-}
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_LO_FLAGS_PARTSCAN $ac_have_decl
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  st_cv_mips_abi=o32
+ac_fn_c_check_decl "$LINENO" "LO_FLAGS_DIRECT_IO" "ac_cv_have_decl_LO_FLAGS_DIRECT_IO" "
+#include <linux/loop.h>
+
+"
+if test "x$ac_cv_have_decl_LO_FLAGS_DIRECT_IO" = xyes; then :
+  ac_have_decl=1
 else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+  ac_have_decl=0
+fi
 
-int
-main ()
-{
-int i[_MIPS_SIM == _ABIN32 ? 1 : - 1];
-  ;
-  return 0;
-}
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_LO_FLAGS_DIRECT_IO $ac_have_decl
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  st_cv_mips_abi=n32
+
+
+ac_fn_c_check_decl "$LINENO" "XDP_ATTACHED_NONE" "ac_cv_have_decl_XDP_ATTACHED_NONE" "
+#include <netinet/in.h>
+#include <linux/rtnetlink.h>
+
+"
+if test "x$ac_cv_have_decl_XDP_ATTACHED_NONE" = xyes; then :
+  ac_have_decl=1
 else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+  ac_have_decl=0
+fi
 
-int
-main ()
-{
-int i[_MIPS_SIM == _ABI64 ? 1 : - 1];
-  ;
-  return 0;
-}
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_XDP_ATTACHED_NONE $ac_have_decl
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  st_cv_mips_abi=n64
+ac_fn_c_check_decl "$LINENO" "XDP_ATTACHED_DRV" "ac_cv_have_decl_XDP_ATTACHED_DRV" "
+#include <netinet/in.h>
+#include <linux/rtnetlink.h>
+
+"
+if test "x$ac_cv_have_decl_XDP_ATTACHED_DRV" = xyes; then :
+  ac_have_decl=1
 else
-  st_cv_mips_abi=unknown
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  ac_have_decl=0
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_XDP_ATTACHED_DRV $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "XDP_ATTACHED_SKB" "ac_cv_have_decl_XDP_ATTACHED_SKB" "
+#include <netinet/in.h>
+#include <linux/rtnetlink.h>
+
+"
+if test "x$ac_cv_have_decl_XDP_ATTACHED_SKB" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $st_cv_mips_abi" >&5
-$as_echo "$st_cv_mips_abi" >&6; }
 
-       case "$st_cv_mips_abi" in
-               o32)
-$as_echo "#define LINUX_MIPSO32 1" >>confdefs.h
-;;
-               n32)
-$as_echo "#define LINUX_MIPSN32 1" >>confdefs.h
-;;
-               n64)
-$as_echo "#define LINUX_MIPSN64 1" >>confdefs.h
-;;
-               *) as_fn_error $? "Unsupported _MIPS_SIM" "$LINENO" 5;;
-       esac
-       MIPS_ABI="$st_cv_mips_abi"
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_XDP_ATTACHED_SKB $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "XDP_ATTACHED_HW" "ac_cv_have_decl_XDP_ATTACHED_HW" "
+#include <netinet/in.h>
+#include <linux/rtnetlink.h>
+
+"
+if test "x$ac_cv_have_decl_XDP_ATTACHED_HW" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_XDP_ATTACHED_HW $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "XDP_ATTACHED_MULTI" "ac_cv_have_decl_XDP_ATTACHED_MULTI" "
+#include <netinet/in.h>
+#include <linux/rtnetlink.h>
 
-# Check whether --enable-arm-oabi was given.
-if test "${enable_arm_oabi+set}" = set; then :
-  enableval=$enable_arm_oabi;
+"
+if test "x$ac_cv_have_decl_XDP_ATTACHED_MULTI" = xyes; then :
+  ac_have_decl=1
 else
-  enable_arm_oabi=no
+  ac_have_decl=0
 fi
 
-case "$enable_arm_oabi" in
-       yes) enable_arm_oabi=1 ;;
-       no) enable_arm_oabi=0 ;;
-       *) as_fn_error $? "bad value $enable_arm_oabi for arm-oabi option" "$LINENO" 5 ;;
-esac
-
 cat >>confdefs.h <<_ACEOF
-#define ENABLE_ARM_OABI $enable_arm_oabi
+#define HAVE_DECL_XDP_ATTACHED_MULTI $ac_have_decl
 _ACEOF
 
 
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
-$as_echo_n "checking whether byte ordering is bigendian... " >&6; }
-if ${ac_cv_c_bigendian+:} false; then :
-  $as_echo_n "(cached) " >&6
+ac_fn_c_check_decl "$LINENO" "IFLA_XDP_UNSPEC" "ac_cv_have_decl_IFLA_XDP_UNSPEC" "
+#include <netinet/in.h>
+#include <linux/rtnetlink.h>
+
+"
+if test "x$ac_cv_have_decl_IFLA_XDP_UNSPEC" = xyes; then :
+  ac_have_decl=1
 else
-  ac_cv_c_bigendian=unknown
-    # See if we're dealing with a universal compiler.
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifndef __APPLE_CC__
-              not a universal capable compiler
-            #endif
-            typedef int dummy;
+  ac_have_decl=0
+fi
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IFLA_XDP_UNSPEC $ac_have_decl
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+ac_fn_c_check_decl "$LINENO" "IFLA_XDP_FD" "ac_cv_have_decl_IFLA_XDP_FD" "
+#include <netinet/in.h>
+#include <linux/rtnetlink.h>
 
-       # Check for potential -arch flags.  It is not universal unless
-       # there are at least two -arch flags with different values.
-       ac_arch=
-       ac_prev=
-       for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do
-        if test -n "$ac_prev"; then
-          case $ac_word in
-            i?86 | x86_64 | ppc | ppc64)
-              if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then
-                ac_arch=$ac_word
-              else
-                ac_cv_c_bigendian=universal
-                break
-              fi
-              ;;
-          esac
-          ac_prev=
-        elif test "x$ac_word" = "x-arch"; then
-          ac_prev=arch
-        fi
-       done
+"
+if test "x$ac_cv_have_decl_IFLA_XDP_FD" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-    if test $ac_cv_c_bigendian = unknown; then
-      # See if sys/param.h defines the BYTE_ORDER macro.
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
-            #include <sys/param.h>
 
-int
-main ()
-{
-#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \
-                    && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \
-                    && LITTLE_ENDIAN)
-             bogus endian macros
-            #endif
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IFLA_XDP_FD $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_XDP_ATTACHED" "ac_cv_have_decl_IFLA_XDP_ATTACHED" "
+#include <netinet/in.h>
+#include <linux/rtnetlink.h>
 
-  ;
-  return 0;
-}
+"
+if test "x$ac_cv_have_decl_IFLA_XDP_ATTACHED" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IFLA_XDP_ATTACHED $ac_have_decl
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  # It does; now see whether it defined to BIG_ENDIAN or not.
-        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
-               #include <sys/param.h>
+ac_fn_c_check_decl "$LINENO" "IFLA_XDP_FLAGS" "ac_cv_have_decl_IFLA_XDP_FLAGS" "
+#include <netinet/in.h>
+#include <linux/rtnetlink.h>
 
-int
-main ()
-{
-#if BYTE_ORDER != BIG_ENDIAN
-                not big endian
-               #endif
+"
+if test "x$ac_cv_have_decl_IFLA_XDP_FLAGS" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
-  ;
-  return 0;
-}
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IFLA_XDP_FLAGS $ac_have_decl
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_c_bigendian=yes
+ac_fn_c_check_decl "$LINENO" "IFLA_XDP_PROG_ID" "ac_cv_have_decl_IFLA_XDP_PROG_ID" "
+#include <netinet/in.h>
+#include <linux/rtnetlink.h>
+
+"
+if test "x$ac_cv_have_decl_IFLA_XDP_PROG_ID" = xyes; then :
+  ac_have_decl=1
 else
-  ac_cv_c_bigendian=no
+  ac_have_decl=0
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IFLA_XDP_PROG_ID $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_XDP_DRV_PROG_ID" "ac_cv_have_decl_IFLA_XDP_DRV_PROG_ID" "
+#include <netinet/in.h>
+#include <linux/rtnetlink.h>
+
+"
+if test "x$ac_cv_have_decl_IFLA_XDP_DRV_PROG_ID" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-    fi
-    if test $ac_cv_c_bigendian = unknown; then
-      # See if <limits.h> defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris).
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <limits.h>
 
-int
-main ()
-{
-#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN)
-             bogus endian macros
-            #endif
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IFLA_XDP_DRV_PROG_ID $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_XDP_SKB_PROG_ID" "ac_cv_have_decl_IFLA_XDP_SKB_PROG_ID" "
+#include <netinet/in.h>
+#include <linux/rtnetlink.h>
 
-  ;
-  return 0;
-}
+"
+if test "x$ac_cv_have_decl_IFLA_XDP_SKB_PROG_ID" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IFLA_XDP_SKB_PROG_ID $ac_have_decl
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  # It does; now see whether it defined to _BIG_ENDIAN or not.
-        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <limits.h>
+ac_fn_c_check_decl "$LINENO" "IFLA_XDP_HW_PROG_ID" "ac_cv_have_decl_IFLA_XDP_HW_PROG_ID" "
+#include <netinet/in.h>
+#include <linux/rtnetlink.h>
 
-int
-main ()
-{
-#ifndef _BIG_ENDIAN
-                not big endian
-               #endif
+"
+if test "x$ac_cv_have_decl_IFLA_XDP_HW_PROG_ID" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
-  ;
-  return 0;
-}
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IFLA_XDP_HW_PROG_ID $ac_have_decl
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_c_bigendian=yes
+ac_fn_c_check_decl "$LINENO" "IFLA_XDP_EXPECTED_FD" "ac_cv_have_decl_IFLA_XDP_EXPECTED_FD" "
+#include <netinet/in.h>
+#include <linux/rtnetlink.h>
+
+"
+if test "x$ac_cv_have_decl_IFLA_XDP_EXPECTED_FD" = xyes; then :
+  ac_have_decl=1
 else
-  ac_cv_c_bigendian=no
+  ac_have_decl=0
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IFLA_XDP_EXPECTED_FD $ac_have_decl
+_ACEOF
+
+
+ac_fn_c_check_decl "$LINENO" "IFLA_UNSPEC" "ac_cv_have_decl_IFLA_UNSPEC" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
+
+"
+if test "x$ac_cv_have_decl_IFLA_UNSPEC" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-    fi
-    if test $ac_cv_c_bigendian = unknown; then
-      # Compile a test program.
-      if test "$cross_compiling" = yes; then :
-  # Try to guess by grepping values from an object file.
-        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-short int ascii_mm[] =
-                 { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
-               short int ascii_ii[] =
-                 { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
-               int use_ascii (int i) {
-                 return ascii_mm[i] + ascii_ii[i];
-               }
-               short int ebcdic_ii[] =
-                 { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
-               short int ebcdic_mm[] =
-                 { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
-               int use_ebcdic (int i) {
-                 return ebcdic_mm[i] + ebcdic_ii[i];
-               }
-               extern int foo;
 
-int
-main ()
-{
-return use_ascii (foo) == use_ebcdic (foo);
-  ;
-  return 0;
-}
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IFLA_UNSPEC $ac_have_decl
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then
-             ac_cv_c_bigendian=yes
-           fi
-           if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then
-             if test "$ac_cv_c_bigendian" = unknown; then
-               ac_cv_c_bigendian=no
-             else
-               # finding both strings is unlikely to happen, but who knows?
-               ac_cv_c_bigendian=unknown
-             fi
-           fi
+ac_fn_c_check_decl "$LINENO" "IFLA_ADDRESS" "ac_cv_have_decl_IFLA_ADDRESS" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
+
+"
+if test "x$ac_cv_have_decl_IFLA_ADDRESS" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IFLA_ADDRESS $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_BROADCAST" "ac_cv_have_decl_IFLA_BROADCAST" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
+
+"
+if test "x$ac_cv_have_decl_IFLA_BROADCAST" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IFLA_BROADCAST $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_IFNAME" "ac_cv_have_decl_IFLA_IFNAME" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
+
+"
+if test "x$ac_cv_have_decl_IFLA_IFNAME" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IFLA_IFNAME $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_MTU" "ac_cv_have_decl_IFLA_MTU" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
+
+"
+if test "x$ac_cv_have_decl_IFLA_MTU" = xyes; then :
+  ac_have_decl=1
 else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
+  ac_have_decl=0
+fi
 
-            /* Are we little or big endian?  From Harbison&Steele.  */
-            union
-            {
-              long int l;
-              char c[sizeof (long int)];
-            } u;
-            u.l = 1;
-            return u.c[sizeof (long int) - 1] == 1;
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IFLA_MTU $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_LINK" "ac_cv_have_decl_IFLA_LINK" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 
-  ;
-  return 0;
-}
+"
+if test "x$ac_cv_have_decl_IFLA_LINK" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IFLA_LINK $ac_have_decl
 _ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  ac_cv_c_bigendian=no
+ac_fn_c_check_decl "$LINENO" "IFLA_QDISC" "ac_cv_have_decl_IFLA_QDISC" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
+
+"
+if test "x$ac_cv_have_decl_IFLA_QDISC" = xyes; then :
+  ac_have_decl=1
 else
-  ac_cv_c_bigendian=yes
+  ac_have_decl=0
 fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IFLA_QDISC $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_STATS" "ac_cv_have_decl_IFLA_STATS" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
+
+"
+if test "x$ac_cv_have_decl_IFLA_STATS" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
 
-    fi
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IFLA_STATS $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_COST" "ac_cv_have_decl_IFLA_COST" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
+
+"
+if test "x$ac_cv_have_decl_IFLA_COST" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5
-$as_echo "$ac_cv_c_bigendian" >&6; }
- case $ac_cv_c_bigendian in #(
-   yes)
-     $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h
-;; #(
-   no)
-      ;; #(
-   universal)
 
-$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IFLA_COST $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_PRIORITY" "ac_cv_have_decl_IFLA_PRIORITY" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 
-     ;; #(
-   *)
-     as_fn_error $? "unknown endianness
- presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;;
- esac
+"
+if test "x$ac_cv_have_decl_IFLA_PRIORITY" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IFLA_PRIORITY $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_MASTER" "ac_cv_have_decl_IFLA_MASTER" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for typeof syntax and keyword spelling" >&5
-$as_echo_n "checking for typeof syntax and keyword spelling... " >&6; }
-if ${ac_cv_c_typeof+:} false; then :
-  $as_echo_n "(cached) " >&6
+"
+if test "x$ac_cv_have_decl_IFLA_MASTER" = xyes; then :
+  ac_have_decl=1
 else
-  ac_cv_c_typeof=no
-     for ac_kw in typeof __typeof__ no; do
-       test $ac_kw = no && break
-       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+  ac_have_decl=0
+fi
 
-int
-main ()
-{
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IFLA_MASTER $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_WIRELESS" "ac_cv_have_decl_IFLA_WIRELESS" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 
-          int value;
-          typedef struct {
-                  char a [1
-                          + ! (($ac_kw (value))
-                               (($ac_kw (value)) 0 < ($ac_kw (value)) -1
-                                ? ($ac_kw (value)) - 1
-                                : ~ (~ ($ac_kw (value)) 0
-                                     << sizeof ($ac_kw (value)))))]; }
-             ac__typeof_type_;
-          return
-            (! ((void) ((ac__typeof_type_ *) 0), 0));
+"
+if test "x$ac_cv_have_decl_IFLA_WIRELESS" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
-  ;
-  return 0;
-}
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IFLA_WIRELESS $ac_have_decl
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_c_typeof=$ac_kw
+ac_fn_c_check_decl "$LINENO" "IFLA_PROTINFO" "ac_cv_have_decl_IFLA_PROTINFO" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
+
+"
+if test "x$ac_cv_have_decl_IFLA_PROTINFO" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-       test $ac_cv_c_typeof != no && break
-     done
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IFLA_PROTINFO $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_TXQLEN" "ac_cv_have_decl_IFLA_TXQLEN" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
+
+"
+if test "x$ac_cv_have_decl_IFLA_TXQLEN" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_typeof" >&5
-$as_echo "$ac_cv_c_typeof" >&6; }
-  if test $ac_cv_c_typeof != no; then
 
-$as_echo "#define HAVE_TYPEOF 1" >>confdefs.h
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IFLA_TXQLEN $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_MAP" "ac_cv_have_decl_IFLA_MAP" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 
-    if test $ac_cv_c_typeof != typeof; then
+"
+if test "x$ac_cv_have_decl_IFLA_MAP" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define typeof $ac_cv_c_typeof
+#define HAVE_DECL_IFLA_MAP $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_WEIGHT" "ac_cv_have_decl_IFLA_WEIGHT" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 
-    fi
-  fi
+"
+if test "x$ac_cv_have_decl_IFLA_WEIGHT" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IFLA_WEIGHT $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_OPERSTATE" "ac_cv_have_decl_IFLA_OPERSTATE" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5
-$as_echo_n "checking for uid_t in sys/types.h... " >&6; }
-if ${ac_cv_type_uid_t+:} false; then :
-  $as_echo_n "(cached) " >&6
+"
+if test "x$ac_cv_have_decl_IFLA_OPERSTATE" = xyes; then :
+  ac_have_decl=1
 else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
+  ac_have_decl=0
+fi
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IFLA_OPERSTATE $ac_have_decl
 _ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "uid_t" >/dev/null 2>&1; then :
-  ac_cv_type_uid_t=yes
+ac_fn_c_check_decl "$LINENO" "IFLA_LINKMODE" "ac_cv_have_decl_IFLA_LINKMODE" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
+
+"
+if test "x$ac_cv_have_decl_IFLA_LINKMODE" = xyes; then :
+  ac_have_decl=1
 else
-  ac_cv_type_uid_t=no
+  ac_have_decl=0
 fi
-rm -f conftest*
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IFLA_LINKMODE $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_LINKINFO" "ac_cv_have_decl_IFLA_LINKINFO" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
+
+"
+if test "x$ac_cv_have_decl_IFLA_LINKINFO" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5
-$as_echo "$ac_cv_type_uid_t" >&6; }
-if test $ac_cv_type_uid_t = no; then
 
-$as_echo "#define uid_t int" >>confdefs.h
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IFLA_LINKINFO $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_NET_NS_PID" "ac_cv_have_decl_IFLA_NET_NS_PID" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 
+"
+if test "x$ac_cv_have_decl_IFLA_NET_NS_PID" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
-$as_echo "#define gid_t int" >>confdefs.h
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IFLA_NET_NS_PID $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_IFALIAS" "ac_cv_have_decl_IFLA_IFALIAS" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 
+"
+if test "x$ac_cv_have_decl_IFLA_IFALIAS" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IFLA_IFALIAS $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_NUM_VF" "ac_cv_have_decl_IFLA_NUM_VF" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 
-for ac_func in accept4 be64toh fallocate fanotify_mark fopen64 fork fputs_unlocked fstatat ftruncate futimens iconv_open if_indextoname open64 prctl preadv process_vm_readv pwritev readahead signalfd stpcpy strerror strndup strsignal sync_file_range utimensat
-do :
-  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+"
+if test "x$ac_cv_have_decl_IFLA_NUM_VF" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IFLA_NUM_VF $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_VFINFO_LIST" "ac_cv_have_decl_IFLA_VFINFO_LIST" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 
+"
+if test "x$ac_cv_have_decl_IFLA_VFINFO_LIST" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
-done
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IFLA_VFINFO_LIST $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_STATS64" "ac_cv_have_decl_IFLA_STATS64" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 
-ac_fn_c_check_type "$LINENO" "sig_atomic_t" "ac_cv_type_sig_atomic_t" "#include <signal.h>
 "
-if test "x$ac_cv_type_sig_atomic_t" = xyes; then :
+if test "x$ac_cv_have_decl_IFLA_STATS64" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_SIG_ATOMIC_T 1
+#define HAVE_DECL_IFLA_STATS64 $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_VF_PORTS" "ac_cv_have_decl_IFLA_VF_PORTS" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 
-
-fi
-ac_fn_c_check_type "$LINENO" "struct sigcontext" "ac_cv_type_struct_sigcontext" "#include <signal.h>
 "
-if test "x$ac_cv_type_struct_sigcontext" = xyes; then :
+if test "x$ac_cv_have_decl_IFLA_VF_PORTS" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_SIGCONTEXT 1
+#define HAVE_DECL_IFLA_VF_PORTS $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_PORT_SELF" "ac_cv_have_decl_IFLA_PORT_SELF" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 
-
+"
+if test "x$ac_cv_have_decl_IFLA_PORT_SELF" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IFLA_PORT_SELF $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_AF_SPEC" "ac_cv_have_decl_IFLA_AF_SPEC" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 
-ac_fn_c_check_type "$LINENO" "struct mmsghdr" "ac_cv_type_struct_mmsghdr" "#include <sys/socket.h>
 "
-if test "x$ac_cv_type_struct_mmsghdr" = xyes; then :
+if test "x$ac_cv_have_decl_IFLA_AF_SPEC" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_MMSGHDR 1
+#define HAVE_DECL_IFLA_AF_SPEC $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_GROUP" "ac_cv_have_decl_IFLA_GROUP" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 
-
+"
+if test "x$ac_cv_have_decl_IFLA_GROUP" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IFLA_GROUP $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_NET_NS_FD" "ac_cv_have_decl_IFLA_NET_NS_FD" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 
-ac_fn_c_check_type "$LINENO" "__kernel_long_t" "ac_cv_type___kernel_long_t" "#include <asm/posix_types.h>
 "
-if test "x$ac_cv_type___kernel_long_t" = xyes; then :
+if test "x$ac_cv_have_decl_IFLA_NET_NS_FD" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE___KERNEL_LONG_T 1
+#define HAVE_DECL_IFLA_NET_NS_FD $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_EXT_MASK" "ac_cv_have_decl_IFLA_EXT_MASK" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 
-
-fi
-ac_fn_c_check_type "$LINENO" "__kernel_ulong_t" "ac_cv_type___kernel_ulong_t" "#include <asm/posix_types.h>
 "
-if test "x$ac_cv_type___kernel_ulong_t" = xyes; then :
+if test "x$ac_cv_have_decl_IFLA_EXT_MASK" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE___KERNEL_ULONG_T 1
+#define HAVE_DECL_IFLA_EXT_MASK $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_PROMISCUITY" "ac_cv_have_decl_IFLA_PROMISCUITY" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 
-
+"
+if test "x$ac_cv_have_decl_IFLA_PROMISCUITY" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IFLA_PROMISCUITY $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_NUM_TX_QUEUES" "ac_cv_have_decl_IFLA_NUM_TX_QUEUES" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 
-ac_fn_c_check_type "$LINENO" "struct __kernel_timespec" "ac_cv_type_struct___kernel_timespec" "#include <linux/time_types.h>
 "
-if test "x$ac_cv_type_struct___kernel_timespec" = xyes; then :
+if test "x$ac_cv_have_decl_IFLA_NUM_TX_QUEUES" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT___KERNEL_TIMESPEC 1
+#define HAVE_DECL_IFLA_NUM_TX_QUEUES $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_NUM_RX_QUEUES" "ac_cv_have_decl_IFLA_NUM_RX_QUEUES" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 
-
-fi
-ac_fn_c_check_type "$LINENO" "struct __kernel_sock_timeval" "ac_cv_type_struct___kernel_sock_timeval" "#include <linux/time_types.h>
 "
-if test "x$ac_cv_type_struct___kernel_sock_timeval" = xyes; then :
+if test "x$ac_cv_have_decl_IFLA_NUM_RX_QUEUES" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT___KERNEL_SOCK_TIMEVAL 1
+#define HAVE_DECL_IFLA_NUM_RX_QUEUES $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_CARRIER" "ac_cv_have_decl_IFLA_CARRIER" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 
-
+"
+if test "x$ac_cv_have_decl_IFLA_CARRIER" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IFLA_CARRIER $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_PHYS_PORT_ID" "ac_cv_have_decl_IFLA_PHYS_PORT_ID" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 
-ac_fn_c_check_type "$LINENO" "struct stat64" "ac_cv_type_struct_stat64" "#include <sys/types.h>
-#include <asm/stat.h>
 "
-if test "x$ac_cv_type_struct_stat64" = xyes; then :
+if test "x$ac_cv_have_decl_IFLA_PHYS_PORT_ID" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STAT64 1
+#define HAVE_DECL_IFLA_PHYS_PORT_ID $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_CARRIER_CHANGES" "ac_cv_have_decl_IFLA_CARRIER_CHANGES" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 
-
-fi
-ac_fn_c_check_type "$LINENO" "struct __old_kernel_stat" "ac_cv_type_struct___old_kernel_stat" "#include <sys/types.h>
-#include <asm/stat.h>
 "
-if test "x$ac_cv_type_struct___old_kernel_stat" = xyes; then :
+if test "x$ac_cv_have_decl_IFLA_CARRIER_CHANGES" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT___OLD_KERNEL_STAT 1
+#define HAVE_DECL_IFLA_CARRIER_CHANGES $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_PHYS_SWITCH_ID" "ac_cv_have_decl_IFLA_PHYS_SWITCH_ID" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 
-
+"
+if test "x$ac_cv_have_decl_IFLA_PHYS_SWITCH_ID" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IFLA_PHYS_SWITCH_ID $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_LINK_NETNSID" "ac_cv_have_decl_IFLA_LINK_NETNSID" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 
-ac_fn_c_check_type "$LINENO" "struct user_desc" "ac_cv_type_struct_user_desc" "#include <asm/ldt.h>
 "
-if test "x$ac_cv_type_struct_user_desc" = xyes; then :
+if test "x$ac_cv_have_decl_IFLA_LINK_NETNSID" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_USER_DESC 1
+#define HAVE_DECL_IFLA_LINK_NETNSID $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_PHYS_PORT_NAME" "ac_cv_have_decl_IFLA_PHYS_PORT_NAME" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 
-ac_fn_c_check_member "$LINENO" "struct user_desc" "lm" "ac_cv_member_struct_user_desc_lm" "#include <asm/ldt.h>
 "
-if test "x$ac_cv_member_struct_user_desc_lm" = xyes; then :
+if test "x$ac_cv_have_decl_IFLA_PHYS_PORT_NAME" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_USER_DESC_LM 1
+#define HAVE_DECL_IFLA_PHYS_PORT_NAME $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_PROTO_DOWN" "ac_cv_have_decl_IFLA_PROTO_DOWN" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 
-
-fi
-
+"
+if test "x$ac_cv_have_decl_IFLA_PROTO_DOWN" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IFLA_PROTO_DOWN $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_GSO_MAX_SEGS" "ac_cv_have_decl_IFLA_GSO_MAX_SEGS" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 
-ac_fn_c_check_member "$LINENO" "struct stat" "st_mtime_nsec" "ac_cv_member_struct_stat_st_mtime_nsec" "#include <sys/types.h>
-#include <asm/stat.h>
 "
-if test "x$ac_cv_member_struct_stat_st_mtime_nsec" = xyes; then :
+if test "x$ac_cv_have_decl_IFLA_GSO_MAX_SEGS" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STAT_ST_MTIME_NSEC 1
+#define HAVE_DECL_IFLA_GSO_MAX_SEGS $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_GSO_MAX_SIZE" "ac_cv_have_decl_IFLA_GSO_MAX_SIZE" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct stat64" "st_mtime_nsec" "ac_cv_member_struct_stat64_st_mtime_nsec" "#include <sys/types.h>
-#include <asm/stat.h>
 "
-if test "x$ac_cv_member_struct_stat64_st_mtime_nsec" = xyes; then :
+if test "x$ac_cv_have_decl_IFLA_GSO_MAX_SIZE" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STAT64_ST_MTIME_NSEC 1
+#define HAVE_DECL_IFLA_GSO_MAX_SIZE $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_PAD" "ac_cv_have_decl_IFLA_PAD" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 
-
+"
+if test "x$ac_cv_have_decl_IFLA_PAD" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IFLA_PAD $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_XDP" "ac_cv_have_decl_IFLA_XDP" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 
-ac_fn_c_check_type "$LINENO" "struct pt_all_user_regs" "ac_cv_type_struct_pt_all_user_regs" "#include <sys/ptrace.h>
 "
-if test "x$ac_cv_type_struct_pt_all_user_regs" = xyes; then :
+if test "x$ac_cv_have_decl_IFLA_XDP" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_PT_ALL_USER_REGS 1
+#define HAVE_DECL_IFLA_XDP $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_EVENT" "ac_cv_have_decl_IFLA_EVENT" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 
-
-fi
-ac_fn_c_check_type "$LINENO" "struct ia64_fpreg" "ac_cv_type_struct_ia64_fpreg" "#include <sys/ptrace.h>
 "
-if test "x$ac_cv_type_struct_ia64_fpreg" = xyes; then :
+if test "x$ac_cv_have_decl_IFLA_EVENT" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_IA64_FPREG 1
+#define HAVE_DECL_IFLA_EVENT $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_NEW_NETNSID" "ac_cv_have_decl_IFLA_NEW_NETNSID" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 
-
-fi
-ac_fn_c_check_type "$LINENO" "struct ptrace_peeksiginfo_args" "ac_cv_type_struct_ptrace_peeksiginfo_args" "#include <sys/ptrace.h>
 "
-if test "x$ac_cv_type_struct_ptrace_peeksiginfo_args" = xyes; then :
+if test "x$ac_cv_have_decl_IFLA_NEW_NETNSID" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_PTRACE_PEEKSIGINFO_ARGS 1
+#define HAVE_DECL_IFLA_NEW_NETNSID $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_IF_NETNSID" "ac_cv_have_decl_IFLA_IF_NETNSID" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 
-
+"
+if test "x$ac_cv_have_decl_IFLA_IF_NETNSID" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IFLA_IF_NETNSID $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_CARRIER_UP_COUNT" "ac_cv_have_decl_IFLA_CARRIER_UP_COUNT" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 
-# For kernels that do not have v3.10-rc1~201^2~11
-ac_fn_c_check_type "$LINENO" "s390_compat_regs" "ac_cv_type_s390_compat_regs" "#include <asm/ptrace.h>
 "
-if test "x$ac_cv_type_s390_compat_regs" = xyes; then :
+if test "x$ac_cv_have_decl_IFLA_CARRIER_UP_COUNT" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_S390_COMPAT_REGS 1
+#define HAVE_DECL_IFLA_CARRIER_UP_COUNT $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_CARRIER_DOWN_COUNT" "ac_cv_have_decl_IFLA_CARRIER_DOWN_COUNT" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 
-
+"
+if test "x$ac_cv_have_decl_IFLA_CARRIER_DOWN_COUNT" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IFLA_CARRIER_DOWN_COUNT $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_NEW_IFINDEX" "ac_cv_have_decl_IFLA_NEW_IFINDEX" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 
-ac_fn_c_check_type "$LINENO" "struct flock" "ac_cv_type_struct_flock" "#include <sys/types.h>
-#include <linux/fcntl.h>
 "
-if test "x$ac_cv_type_struct_flock" = xyes; then :
+if test "x$ac_cv_have_decl_IFLA_NEW_IFINDEX" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_FLOCK 1
+#define HAVE_DECL_IFLA_NEW_IFINDEX $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_MIN_MTU" "ac_cv_have_decl_IFLA_MIN_MTU" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 
-
-fi
-ac_fn_c_check_type "$LINENO" "struct flock64" "ac_cv_type_struct_flock64" "#include <sys/types.h>
-#include <linux/fcntl.h>
 "
-if test "x$ac_cv_type_struct_flock64" = xyes; then :
+if test "x$ac_cv_have_decl_IFLA_MIN_MTU" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_FLOCK64 1
+#define HAVE_DECL_IFLA_MIN_MTU $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_MAX_MTU" "ac_cv_have_decl_IFLA_MAX_MTU" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 
-
-fi
-ac_fn_c_check_type "$LINENO" "struct __kernel_flock" "ac_cv_type_struct___kernel_flock" "#include <sys/types.h>
-#include <linux/fcntl.h>
 "
-if test "x$ac_cv_type_struct___kernel_flock" = xyes; then :
+if test "x$ac_cv_have_decl_IFLA_MAX_MTU" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT___KERNEL_FLOCK 1
+#define HAVE_DECL_IFLA_MAX_MTU $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_PROP_LIST" "ac_cv_have_decl_IFLA_PROP_LIST" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 
-
-fi
-ac_fn_c_check_type "$LINENO" "struct __kernel_flock64" "ac_cv_type_struct___kernel_flock64" "#include <sys/types.h>
-#include <linux/fcntl.h>
 "
-if test "x$ac_cv_type_struct___kernel_flock64" = xyes; then :
+if test "x$ac_cv_have_decl_IFLA_PROP_LIST" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT___KERNEL_FLOCK64 1
+#define HAVE_DECL_IFLA_PROP_LIST $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_ALT_IFNAME" "ac_cv_have_decl_IFLA_ALT_IFNAME" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 
-
-fi
-ac_fn_c_check_type "$LINENO" "struct f_owner_ex" "ac_cv_type_struct_f_owner_ex" "#include <sys/types.h>
-#include <linux/fcntl.h>
 "
-if test "x$ac_cv_type_struct_f_owner_ex" = xyes; then :
+if test "x$ac_cv_have_decl_IFLA_ALT_IFNAME" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_F_OWNER_EX 1
+#define HAVE_DECL_IFLA_ALT_IFNAME $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_PERM_ADDRESS" "ac_cv_have_decl_IFLA_PERM_ADDRESS" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 
-
-fi
-ac_fn_c_check_type "$LINENO" "struct __kernel_f_owner_ex" "ac_cv_type_struct___kernel_f_owner_ex" "#include <sys/types.h>
-#include <linux/fcntl.h>
 "
-if test "x$ac_cv_type_struct___kernel_f_owner_ex" = xyes; then :
+if test "x$ac_cv_have_decl_IFLA_PERM_ADDRESS" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT___KERNEL_F_OWNER_EX 1
+#define HAVE_DECL_IFLA_PERM_ADDRESS $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_PROTO_DOWN_REASON" "ac_cv_have_decl_IFLA_PROTO_DOWN_REASON" "
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 
-
-fi
-
-
-ac_fn_c_check_type "$LINENO" "struct crypto_report_aead" "ac_cv_type_struct_crypto_report_aead" "#include <linux/cryptouser.h>
 "
-if test "x$ac_cv_type_struct_crypto_report_aead" = xyes; then :
+if test "x$ac_cv_have_decl_IFLA_PROTO_DOWN_REASON" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_CRYPTO_REPORT_AEAD 1
+#define HAVE_DECL_IFLA_PROTO_DOWN_REASON $ac_have_decl
 _ACEOF
 
 
-fi
-ac_fn_c_check_type "$LINENO" "struct crypto_report_blkcipher" "ac_cv_type_struct_crypto_report_blkcipher" "#include <linux/cryptouser.h>
+ac_fn_c_check_decl "$LINENO" "TCA_ACT_UNSPEC" "ac_cv_have_decl_TCA_ACT_UNSPEC" "
+#include <linux/pkt_cls.h>
+
 "
-if test "x$ac_cv_type_struct_crypto_report_blkcipher" = xyes; then :
+if test "x$ac_cv_have_decl_TCA_ACT_UNSPEC" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_CRYPTO_REPORT_BLKCIPHER 1
+#define HAVE_DECL_TCA_ACT_UNSPEC $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "TCA_ACT_KIND" "ac_cv_have_decl_TCA_ACT_KIND" "
+#include <linux/pkt_cls.h>
 
-
-fi
-ac_fn_c_check_type "$LINENO" "struct crypto_report_cipher" "ac_cv_type_struct_crypto_report_cipher" "#include <linux/cryptouser.h>
 "
-if test "x$ac_cv_type_struct_crypto_report_cipher" = xyes; then :
+if test "x$ac_cv_have_decl_TCA_ACT_KIND" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_CRYPTO_REPORT_CIPHER 1
+#define HAVE_DECL_TCA_ACT_KIND $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "TCA_ACT_OPTIONS" "ac_cv_have_decl_TCA_ACT_OPTIONS" "
+#include <linux/pkt_cls.h>
 
-
-fi
-ac_fn_c_check_type "$LINENO" "struct crypto_report_hash" "ac_cv_type_struct_crypto_report_hash" "#include <linux/cryptouser.h>
 "
-if test "x$ac_cv_type_struct_crypto_report_hash" = xyes; then :
+if test "x$ac_cv_have_decl_TCA_ACT_OPTIONS" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_CRYPTO_REPORT_HASH 1
+#define HAVE_DECL_TCA_ACT_OPTIONS $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "TCA_ACT_INDEX" "ac_cv_have_decl_TCA_ACT_INDEX" "
+#include <linux/pkt_cls.h>
 
-
-fi
-ac_fn_c_check_type "$LINENO" "struct crypto_report_rng" "ac_cv_type_struct_crypto_report_rng" "#include <linux/cryptouser.h>
 "
-if test "x$ac_cv_type_struct_crypto_report_rng" = xyes; then :
+if test "x$ac_cv_have_decl_TCA_ACT_INDEX" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_CRYPTO_REPORT_RNG 1
+#define HAVE_DECL_TCA_ACT_INDEX $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "TCA_ACT_STATS" "ac_cv_have_decl_TCA_ACT_STATS" "
+#include <linux/pkt_cls.h>
 
-
+"
+if test "x$ac_cv_have_decl_TCA_ACT_STATS" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_TCA_ACT_STATS $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "TCA_ACT_PAD" "ac_cv_have_decl_TCA_ACT_PAD" "
+#include <linux/pkt_cls.h>
 
-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 :
+if test "x$ac_cv_have_decl_TCA_ACT_PAD" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_KCMP_EPOLL_SLOT 1
+#define HAVE_DECL_TCA_ACT_PAD $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "TCA_ACT_COOKIE" "ac_cv_have_decl_TCA_ACT_COOKIE" "
+#include <linux/pkt_cls.h>
 
-
+"
+if test "x$ac_cv_have_decl_TCA_ACT_COOKIE" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_TCA_ACT_COOKIE $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "TCA_ACT_FLAGS" "ac_cv_have_decl_TCA_ACT_FLAGS" "
+#include <linux/pkt_cls.h>
 
-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 :
+if test "x$ac_cv_have_decl_TCA_ACT_FLAGS" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_KEYCTL_KDF_PARAMS 1
+#define HAVE_DECL_TCA_ACT_FLAGS $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "TCA_ACT_HW_STATS" "ac_cv_have_decl_TCA_ACT_HW_STATS" "
+#include <linux/pkt_cls.h>
 
-
+"
+if test "x$ac_cv_have_decl_TCA_ACT_HW_STATS" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_TCA_ACT_HW_STATS $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "TCA_ACT_USED_HW_STATS" "ac_cv_have_decl_TCA_ACT_USED_HW_STATS" "
+#include <linux/pkt_cls.h>
 
-ac_fn_c_check_member "$LINENO" "struct timex" "tai" "ac_cv_member_struct_timex_tai" "#include <sys/timex.h>
 "
-if test "x$ac_cv_member_struct_timex_tai" = xyes; then :
+if test "x$ac_cv_have_decl_TCA_ACT_USED_HW_STATS" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_TIMEX_TAI 1
+#define HAVE_DECL_TCA_ACT_USED_HW_STATS $ac_have_decl
 _ACEOF
 
 
-fi
-
+ac_fn_c_check_decl "$LINENO" "TCA_STAB_UNSPEC" "ac_cv_have_decl_TCA_STAB_UNSPEC" "
+#include <linux/types.h>
+#include <linux/pkt_sched.h>
 
-ac_fn_c_check_member "$LINENO" "struct utsname" "domainname" "ac_cv_member_struct_utsname_domainname" "#include <sys/utsname.h>
 "
-if test "x$ac_cv_member_struct_utsname_domainname" = xyes; then :
+if test "x$ac_cv_have_decl_TCA_STAB_UNSPEC" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_UTSNAME_DOMAINNAME 1
+#define HAVE_DECL_TCA_STAB_UNSPEC $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "TCA_STAB_BASE" "ac_cv_have_decl_TCA_STAB_BASE" "
+#include <linux/types.h>
+#include <linux/pkt_sched.h>
 
-
+"
+if test "x$ac_cv_have_decl_TCA_STAB_BASE" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_TCA_STAB_BASE $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "TCA_STAB_DATA" "ac_cv_have_decl_TCA_STAB_DATA" "
+#include <linux/types.h>
+#include <linux/pkt_sched.h>
 
-ac_fn_c_check_member "$LINENO" "siginfo_t" "si_syscall" "ac_cv_member_siginfo_t_si_syscall" "#include <signal.h>
 "
-if test "x$ac_cv_member_siginfo_t_si_syscall" = xyes; then :
+if test "x$ac_cv_have_decl_TCA_STAB_DATA" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_SIGINFO_T_SI_SYSCALL 1
+#define HAVE_DECL_TCA_STAB_DATA $ac_have_decl
 _ACEOF
 
 
-fi
-ac_fn_c_check_member "$LINENO" "siginfo_t" "si_timerid" "ac_cv_member_siginfo_t_si_timerid" "#include <signal.h>
+ac_fn_c_check_decl "$LINENO" "TCA_STATS_UNSPEC" "ac_cv_have_decl_TCA_STATS_UNSPEC" "
+#include <linux/gen_stats.h>
+
 "
-if test "x$ac_cv_member_siginfo_t_si_timerid" = xyes; then :
+if test "x$ac_cv_have_decl_TCA_STATS_UNSPEC" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_SIGINFO_T_SI_TIMERID 1
+#define HAVE_DECL_TCA_STATS_UNSPEC $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "TCA_STATS_BASIC" "ac_cv_have_decl_TCA_STATS_BASIC" "
+#include <linux/gen_stats.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "siginfo_t" "si_overrun" "ac_cv_member_siginfo_t_si_overrun" "#include <signal.h>
 "
-if test "x$ac_cv_member_siginfo_t_si_overrun" = xyes; then :
+if test "x$ac_cv_have_decl_TCA_STATS_BASIC" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_SIGINFO_T_SI_OVERRUN 1
+#define HAVE_DECL_TCA_STATS_BASIC $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "TCA_STATS_RATE_EST" "ac_cv_have_decl_TCA_STATS_RATE_EST" "
+#include <linux/gen_stats.h>
 
-
+"
+if test "x$ac_cv_have_decl_TCA_STATS_RATE_EST" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_TCA_STATS_RATE_EST $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "TCA_STATS_QUEUE" "ac_cv_have_decl_TCA_STATS_QUEUE" "
+#include <linux/gen_stats.h>
 
-ac_fn_c_check_member "$LINENO" "struct perf_event_attr" "precise_ip" "ac_cv_member_struct_perf_event_attr_precise_ip" "#include <linux/perf_event.h>
 "
-if test "x$ac_cv_member_struct_perf_event_attr_precise_ip" = xyes; then :
+if test "x$ac_cv_have_decl_TCA_STATS_QUEUE" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_PERF_EVENT_ATTR_PRECISE_IP 1
+#define HAVE_DECL_TCA_STATS_QUEUE $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "TCA_STATS_APP" "ac_cv_have_decl_TCA_STATS_APP" "
+#include <linux/gen_stats.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct perf_event_attr" "mmap_data" "ac_cv_member_struct_perf_event_attr_mmap_data" "#include <linux/perf_event.h>
 "
-if test "x$ac_cv_member_struct_perf_event_attr_mmap_data" = xyes; then :
+if test "x$ac_cv_have_decl_TCA_STATS_APP" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_PERF_EVENT_ATTR_MMAP_DATA 1
+#define HAVE_DECL_TCA_STATS_APP $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "TCA_STATS_RATE_EST64" "ac_cv_have_decl_TCA_STATS_RATE_EST64" "
+#include <linux/gen_stats.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct perf_event_attr" "sample_id_all" "ac_cv_member_struct_perf_event_attr_sample_id_all" "#include <linux/perf_event.h>
 "
-if test "x$ac_cv_member_struct_perf_event_attr_sample_id_all" = xyes; then :
+if test "x$ac_cv_have_decl_TCA_STATS_RATE_EST64" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_PERF_EVENT_ATTR_SAMPLE_ID_ALL 1
+#define HAVE_DECL_TCA_STATS_RATE_EST64 $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "TCA_STATS_PAD" "ac_cv_have_decl_TCA_STATS_PAD" "
+#include <linux/gen_stats.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct perf_event_attr" "exclude_host" "ac_cv_member_struct_perf_event_attr_exclude_host" "#include <linux/perf_event.h>
 "
-if test "x$ac_cv_member_struct_perf_event_attr_exclude_host" = xyes; then :
+if test "x$ac_cv_have_decl_TCA_STATS_PAD" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_PERF_EVENT_ATTR_EXCLUDE_HOST 1
+#define HAVE_DECL_TCA_STATS_PAD $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "TCA_STATS_BASIC_HW" "ac_cv_have_decl_TCA_STATS_BASIC_HW" "
+#include <linux/gen_stats.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct perf_event_attr" "exclude_guest" "ac_cv_member_struct_perf_event_attr_exclude_guest" "#include <linux/perf_event.h>
 "
-if test "x$ac_cv_member_struct_perf_event_attr_exclude_guest" = xyes; then :
+if test "x$ac_cv_have_decl_TCA_STATS_BASIC_HW" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_PERF_EVENT_ATTR_EXCLUDE_GUEST 1
+#define HAVE_DECL_TCA_STATS_BASIC_HW $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "TCA_STATS_PKT64" "ac_cv_have_decl_TCA_STATS_PKT64" "
+#include <linux/gen_stats.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct perf_event_attr" "exclude_callchain_kernel" "ac_cv_member_struct_perf_event_attr_exclude_callchain_kernel" "#include <linux/perf_event.h>
 "
-if test "x$ac_cv_member_struct_perf_event_attr_exclude_callchain_kernel" = xyes; then :
+if test "x$ac_cv_have_decl_TCA_STATS_PKT64" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_PERF_EVENT_ATTR_EXCLUDE_CALLCHAIN_KERNEL 1
+#define HAVE_DECL_TCA_STATS_PKT64 $ac_have_decl
 _ACEOF
 
 
-fi
-ac_fn_c_check_member "$LINENO" "struct perf_event_attr" "exclude_callchain_user" "ac_cv_member_struct_perf_event_attr_exclude_callchain_user" "#include <linux/perf_event.h>
+ac_fn_c_check_decl "$LINENO" "KERN_OSTYPE" "ac_cv_have_decl_KERN_OSTYPE" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_member_struct_perf_event_attr_exclude_callchain_user" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_OSTYPE" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_PERF_EVENT_ATTR_EXCLUDE_CALLCHAIN_USER 1
+#define HAVE_DECL_KERN_OSTYPE $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_OSRELEASE" "ac_cv_have_decl_KERN_OSRELEASE" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct perf_event_attr" "mmap2" "ac_cv_member_struct_perf_event_attr_mmap2" "#include <linux/perf_event.h>
 "
-if test "x$ac_cv_member_struct_perf_event_attr_mmap2" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_OSRELEASE" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_PERF_EVENT_ATTR_MMAP2 1
+#define HAVE_DECL_KERN_OSRELEASE $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_OSREV" "ac_cv_have_decl_KERN_OSREV" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct perf_event_attr" "comm_exec" "ac_cv_member_struct_perf_event_attr_comm_exec" "#include <linux/perf_event.h>
 "
-if test "x$ac_cv_member_struct_perf_event_attr_comm_exec" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_OSREV" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_PERF_EVENT_ATTR_COMM_EXEC 1
+#define HAVE_DECL_KERN_OSREV $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_VERSION" "ac_cv_have_decl_KERN_VERSION" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct perf_event_attr" "use_clockid" "ac_cv_member_struct_perf_event_attr_use_clockid" "#include <linux/perf_event.h>
 "
-if test "x$ac_cv_member_struct_perf_event_attr_use_clockid" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_VERSION" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_PERF_EVENT_ATTR_USE_CLOCKID 1
+#define HAVE_DECL_KERN_VERSION $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_SECUREMASK" "ac_cv_have_decl_KERN_SECUREMASK" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct perf_event_attr" "context_switch" "ac_cv_member_struct_perf_event_attr_context_switch" "#include <linux/perf_event.h>
 "
-if test "x$ac_cv_member_struct_perf_event_attr_context_switch" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_SECUREMASK" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_PERF_EVENT_ATTR_CONTEXT_SWITCH 1
+#define HAVE_DECL_KERN_SECUREMASK $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_PROF" "ac_cv_have_decl_KERN_PROF" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct perf_event_attr" "write_backward" "ac_cv_member_struct_perf_event_attr_write_backward" "#include <linux/perf_event.h>
 "
-if test "x$ac_cv_member_struct_perf_event_attr_write_backward" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_PROF" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_PERF_EVENT_ATTR_WRITE_BACKWARD 1
+#define HAVE_DECL_KERN_PROF $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_NODENAME" "ac_cv_have_decl_KERN_NODENAME" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct perf_event_attr" "namespaces" "ac_cv_member_struct_perf_event_attr_namespaces" "#include <linux/perf_event.h>
 "
-if test "x$ac_cv_member_struct_perf_event_attr_namespaces" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_NODENAME" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_PERF_EVENT_ATTR_NAMESPACES 1
+#define HAVE_DECL_KERN_NODENAME $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_DOMAINNAME" "ac_cv_have_decl_KERN_DOMAINNAME" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct perf_event_attr" "bp_type" "ac_cv_member_struct_perf_event_attr_bp_type" "#include <linux/perf_event.h>
 "
-if test "x$ac_cv_member_struct_perf_event_attr_bp_type" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_DOMAINNAME" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_PERF_EVENT_ATTR_BP_TYPE 1
+#define HAVE_DECL_KERN_DOMAINNAME $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_PANIC" "ac_cv_have_decl_KERN_PANIC" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct perf_event_attr" "config1" "ac_cv_member_struct_perf_event_attr_config1" "#include <linux/perf_event.h>
 "
-if test "x$ac_cv_member_struct_perf_event_attr_config1" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_PANIC" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_PERF_EVENT_ATTR_CONFIG1 1
+#define HAVE_DECL_KERN_PANIC $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_REALROOTDEV" "ac_cv_have_decl_KERN_REALROOTDEV" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct perf_event_attr" "config2" "ac_cv_member_struct_perf_event_attr_config2" "#include <linux/perf_event.h>
 "
-if test "x$ac_cv_member_struct_perf_event_attr_config2" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_REALROOTDEV" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_PERF_EVENT_ATTR_CONFIG2 1
+#define HAVE_DECL_KERN_REALROOTDEV $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_SPARC_REBOOT" "ac_cv_have_decl_KERN_SPARC_REBOOT" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct perf_event_attr" "branch_sample_type" "ac_cv_member_struct_perf_event_attr_branch_sample_type" "#include <linux/perf_event.h>
 "
-if test "x$ac_cv_member_struct_perf_event_attr_branch_sample_type" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_SPARC_REBOOT" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_PERF_EVENT_ATTR_BRANCH_SAMPLE_TYPE 1
+#define HAVE_DECL_KERN_SPARC_REBOOT $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_CTLALTDEL" "ac_cv_have_decl_KERN_CTLALTDEL" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct perf_event_attr" "sample_regs_user" "ac_cv_member_struct_perf_event_attr_sample_regs_user" "#include <linux/perf_event.h>
 "
-if test "x$ac_cv_member_struct_perf_event_attr_sample_regs_user" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_CTLALTDEL" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_PERF_EVENT_ATTR_SAMPLE_REGS_USER 1
+#define HAVE_DECL_KERN_CTLALTDEL $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_PRINTK" "ac_cv_have_decl_KERN_PRINTK" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct perf_event_attr" "sample_stack_user" "ac_cv_member_struct_perf_event_attr_sample_stack_user" "#include <linux/perf_event.h>
 "
-if test "x$ac_cv_member_struct_perf_event_attr_sample_stack_user" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_PRINTK" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_PERF_EVENT_ATTR_SAMPLE_STACK_USER 1
+#define HAVE_DECL_KERN_PRINTK $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_NAMETRANS" "ac_cv_have_decl_KERN_NAMETRANS" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct perf_event_attr" "sample_regs_intr" "ac_cv_member_struct_perf_event_attr_sample_regs_intr" "#include <linux/perf_event.h>
 "
-if test "x$ac_cv_member_struct_perf_event_attr_sample_regs_intr" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_NAMETRANS" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_PERF_EVENT_ATTR_SAMPLE_REGS_INTR 1
+#define HAVE_DECL_KERN_NAMETRANS $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_PPC_HTABRECLAIM" "ac_cv_have_decl_KERN_PPC_HTABRECLAIM" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct perf_event_attr" "aux_watermark" "ac_cv_member_struct_perf_event_attr_aux_watermark" "#include <linux/perf_event.h>
 "
-if test "x$ac_cv_member_struct_perf_event_attr_aux_watermark" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_PPC_HTABRECLAIM" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_PERF_EVENT_ATTR_AUX_WATERMARK 1
+#define HAVE_DECL_KERN_PPC_HTABRECLAIM $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_PPC_ZEROPAGED" "ac_cv_have_decl_KERN_PPC_ZEROPAGED" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct perf_event_attr" "sample_max_stack" "ac_cv_member_struct_perf_event_attr_sample_max_stack" "#include <linux/perf_event.h>
 "
-if test "x$ac_cv_member_struct_perf_event_attr_sample_max_stack" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_PPC_ZEROPAGED" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_PERF_EVENT_ATTR_SAMPLE_MAX_STACK 1
+#define HAVE_DECL_KERN_PPC_ZEROPAGED $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_PPC_POWERSAVE_NAP" "ac_cv_have_decl_KERN_PPC_POWERSAVE_NAP" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
+"
+if test "x$ac_cv_have_decl_KERN_PPC_POWERSAVE_NAP" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
 
-
-for ac_header in asm/cachectl.h asm/guarded_storage.h asm/sysmips.h elf.h iconv.h inttypes.h linux/bsg.h linux/cryptouser.h linux/dm-ioctl.h linux/dqblk_xfs.h linux/falloc.h linux/fib_rules.h linux/fiemap.h linux/hiddev.h linux/if_addr.h linux/if_link.h linux/io_uring.h linux/ip_vs.h linux/ipc.h linux/kcmp.h linux/kvm.h linux/memfd.h linux/mmtimer.h linux/msg.h linux/neighbour.h linux/netfilter/ipset/ip_set.h linux/netfilter/nf_tables.h linux/netfilter/nf_tables_compat.h linux/netfilter/nfnetlink.h linux/netfilter/nfnetlink_acct.h linux/netfilter/nfnetlink_conntrack.h linux/netfilter/nfnetlink_cthelper.h linux/netfilter/nfnetlink_cttimeout.h linux/netfilter/nfnetlink_log.h linux/netfilter/nfnetlink_queue.h linux/nsfs.h linux/perf_event.h linux/quota.h linux/seccomp.h linux/securebits.h linux/sem.h linux/shm.h linux/userfaultfd.h linux/utsname.h mqueue.h netinet/sctp.h netipx/ipx.h paths.h scsi/sg.h stropts.h sys/conf.h sys/eventfd.h sys/fanotify.h sys/ipc.h sys/msg.h sys/quota.h sys/sem.h sys/shm.h sys/signalfd.h sys/xattr.h ustat.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_KERN_PPC_POWERSAVE_NAP $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_MODPROBE" "ac_cv_have_decl_KERN_MODPROBE" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
+"
+if test "x$ac_cv_have_decl_KERN_MODPROBE" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
 
-done
-
-
-for ac_header in asm/sigcontext.h
-do :
-  ac_fn_c_check_header_compile "$LINENO" "asm/sigcontext.h" "ac_cv_header_asm_sigcontext_h" "#include <signal.h>
-"
-if test "x$ac_cv_header_asm_sigcontext_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_ASM_SIGCONTEXT_H 1
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_KERN_MODPROBE $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_SG_BIG_BUFF" "ac_cv_have_decl_KERN_SG_BIG_BUFF" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
+"
+if test "x$ac_cv_have_decl_KERN_SG_BIG_BUFF" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
 
-done
-
-
-for ac_header in netinet/tcp.h netinet/udp.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "#include <netinet/in.h>
-"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_KERN_SG_BIG_BUFF $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_ACCT" "ac_cv_have_decl_KERN_ACCT" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
+"
+if test "x$ac_cv_have_decl_KERN_ACCT" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
 
-done
-
-
-for ac_header in linux/mqueue.h
-do :
-  ac_fn_c_check_header_compile "$LINENO" "linux/mqueue.h" "ac_cv_header_linux_mqueue_h" "#include <linux/types.h>
-"
-if test "x$ac_cv_header_linux_mqueue_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LINUX_MQUEUE_H 1
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_KERN_ACCT $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_PPC_L2CR" "ac_cv_have_decl_KERN_PPC_L2CR" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
+"
+if test "x$ac_cv_have_decl_KERN_PPC_L2CR" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 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
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_KERN_PPC_L2CR $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_RTSIGNR" "ac_cv_have_decl_KERN_RTSIGNR" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
+"
+if test "x$ac_cv_have_decl_KERN_RTSIGNR" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
 
-done
-
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_KERN_RTSIGNR $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_RTSIGMAX" "ac_cv_have_decl_KERN_RTSIGMAX" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-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`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "#include <netinet/in.h>
-#include <net/if.h>
 "
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+if test "x$ac_cv_have_decl_KERN_RTSIGMAX" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_KERN_RTSIGMAX $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_SHMMAX" "ac_cv_have_decl_KERN_SHMMAX" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
+"
+if test "x$ac_cv_have_decl_KERN_SHMMAX" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
 
-done
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_KERN_SHMMAX $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_MSGMAX" "ac_cv_have_decl_KERN_MSGMAX" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
+"
+if test "x$ac_cv_have_decl_KERN_MSGMAX" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
-for ac_header in linux/input.h
-do :
-  ac_fn_c_check_header_mongrel "$LINENO" "linux/input.h" "ac_cv_header_linux_input_h" "$ac_includes_default"
-if test "x$ac_cv_header_linux_input_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LINUX_INPUT_H 1
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_KERN_MSGMAX $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_MSGMNB" "ac_cv_have_decl_KERN_MSGMNB" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-       ac_fn_c_check_member "$LINENO" "struct input_absinfo" "resolution" "ac_cv_member_struct_input_absinfo_resolution" "#include <linux/input.h>
 "
-if test "x$ac_cv_member_struct_input_absinfo_resolution" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_MSGMNB" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_INPUT_ABSINFO_RESOLUTION 1
+#define HAVE_DECL_KERN_MSGMNB $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_MSGPOOL" "ac_cv_have_decl_KERN_MSGPOOL" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
+"
+if test "x$ac_cv_have_decl_KERN_MSGPOOL" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_KERN_MSGPOOL $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_SYSRQ" "ac_cv_have_decl_KERN_SYSRQ" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
+"
+if test "x$ac_cv_have_decl_KERN_SYSRQ" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
 
-done
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_KERN_SYSRQ $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_MAX_THREADS" "ac_cv_have_decl_KERN_MAX_THREADS" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
+"
+if test "x$ac_cv_have_decl_KERN_MAX_THREADS" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
-for ac_header in linux/bpf.h
-do :
-  ac_fn_c_check_header_mongrel "$LINENO" "linux/bpf.h" "ac_cv_header_linux_bpf_h" "$ac_includes_default"
-if test "x$ac_cv_header_linux_bpf_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LINUX_BPF_H 1
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_KERN_MAX_THREADS $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_RANDOM" "ac_cv_have_decl_KERN_RANDOM" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-       ac_fn_c_check_type "$LINENO" "struct bpf_insn" "ac_cv_type_struct_bpf_insn" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_type_struct_bpf_insn" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_RANDOM" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BPF_INSN 1
+#define HAVE_DECL_KERN_RANDOM $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_SHMALL" "ac_cv_have_decl_KERN_SHMALL" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_type "$LINENO" "struct bpf_map_info" "ac_cv_type_struct_bpf_map_info" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_type_struct_bpf_map_info" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_SHMALL" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BPF_MAP_INFO 1
+#define HAVE_DECL_KERN_SHMALL $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_MSGMNI" "ac_cv_have_decl_KERN_MSGMNI" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_type "$LINENO" "struct bpf_prog_info" "ac_cv_type_struct_bpf_prog_info" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_type_struct_bpf_prog_info" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_MSGMNI" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BPF_PROG_INFO 1
+#define HAVE_DECL_KERN_MSGMNI $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_SEM" "ac_cv_have_decl_KERN_SEM" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
+"
+if test "x$ac_cv_have_decl_KERN_SEM" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
 
-               ac_fn_c_check_member "$LINENO" "struct bpf_map_info" "btf_id" "ac_cv_member_struct_bpf_map_info_btf_id" "#include <linux/bpf.h>
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_KERN_SEM $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_SPARC_STOP_A" "ac_cv_have_decl_KERN_SPARC_STOP_A" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_member_struct_bpf_map_info_btf_id" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_SPARC_STOP_A" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BPF_MAP_INFO_BTF_ID 1
+#define HAVE_DECL_KERN_SPARC_STOP_A $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_SHMMNI" "ac_cv_have_decl_KERN_SHMMNI" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct bpf_map_info" "btf_key_type_id" "ac_cv_member_struct_bpf_map_info_btf_key_type_id" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_struct_bpf_map_info_btf_key_type_id" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_SHMMNI" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BPF_MAP_INFO_BTF_KEY_TYPE_ID 1
+#define HAVE_DECL_KERN_SHMMNI $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_OVERFLOWUID" "ac_cv_have_decl_KERN_OVERFLOWUID" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct bpf_map_info" "btf_value_type_id" "ac_cv_member_struct_bpf_map_info_btf_value_type_id" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_struct_bpf_map_info_btf_value_type_id" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_OVERFLOWUID" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BPF_MAP_INFO_BTF_VALUE_TYPE_ID 1
+#define HAVE_DECL_KERN_OVERFLOWUID $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_OVERFLOWGID" "ac_cv_have_decl_KERN_OVERFLOWGID" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct bpf_map_info" "id" "ac_cv_member_struct_bpf_map_info_id" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_struct_bpf_map_info_id" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_OVERFLOWGID" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BPF_MAP_INFO_ID 1
+#define HAVE_DECL_KERN_OVERFLOWGID $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_SHMPATH" "ac_cv_have_decl_KERN_SHMPATH" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct bpf_map_info" "ifindex" "ac_cv_member_struct_bpf_map_info_ifindex" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_struct_bpf_map_info_ifindex" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_SHMPATH" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BPF_MAP_INFO_IFINDEX 1
+#define HAVE_DECL_KERN_SHMPATH $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_HOTPLUG" "ac_cv_have_decl_KERN_HOTPLUG" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct bpf_map_info" "key_size" "ac_cv_member_struct_bpf_map_info_key_size" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_struct_bpf_map_info_key_size" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_HOTPLUG" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BPF_MAP_INFO_KEY_SIZE 1
+#define HAVE_DECL_KERN_HOTPLUG $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_IEEE_EMULATION_WARNINGS" "ac_cv_have_decl_KERN_IEEE_EMULATION_WARNINGS" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct bpf_map_info" "map_flags" "ac_cv_member_struct_bpf_map_info_map_flags" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_struct_bpf_map_info_map_flags" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_IEEE_EMULATION_WARNINGS" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BPF_MAP_INFO_MAP_FLAGS 1
+#define HAVE_DECL_KERN_IEEE_EMULATION_WARNINGS $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_S390_USER_DEBUG_LOGGING" "ac_cv_have_decl_KERN_S390_USER_DEBUG_LOGGING" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct bpf_map_info" "max_entries" "ac_cv_member_struct_bpf_map_info_max_entries" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_struct_bpf_map_info_max_entries" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_S390_USER_DEBUG_LOGGING" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BPF_MAP_INFO_MAX_ENTRIES 1
+#define HAVE_DECL_KERN_S390_USER_DEBUG_LOGGING $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_CORE_USES_PID" "ac_cv_have_decl_KERN_CORE_USES_PID" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct bpf_map_info" "name" "ac_cv_member_struct_bpf_map_info_name" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_struct_bpf_map_info_name" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_CORE_USES_PID" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BPF_MAP_INFO_NAME 1
+#define HAVE_DECL_KERN_CORE_USES_PID $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_TAINTED" "ac_cv_have_decl_KERN_TAINTED" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct bpf_map_info" "type" "ac_cv_member_struct_bpf_map_info_type" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_struct_bpf_map_info_type" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_TAINTED" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BPF_MAP_INFO_TYPE 1
+#define HAVE_DECL_KERN_TAINTED $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_CADPID" "ac_cv_have_decl_KERN_CADPID" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct bpf_map_info" "value_size" "ac_cv_member_struct_bpf_map_info_value_size" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_struct_bpf_map_info_value_size" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_CADPID" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BPF_MAP_INFO_VALUE_SIZE 1
+#define HAVE_DECL_KERN_CADPID $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_PIDMAX" "ac_cv_have_decl_KERN_PIDMAX" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "btf_id" "ac_cv_member_struct_bpf_prog_info_btf_id" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_struct_bpf_prog_info_btf_id" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_PIDMAX" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BPF_PROG_INFO_BTF_ID 1
+#define HAVE_DECL_KERN_PIDMAX $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_CORE_PATTERN" "ac_cv_have_decl_KERN_CORE_PATTERN" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "created_by_uid" "ac_cv_member_struct_bpf_prog_info_created_by_uid" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_struct_bpf_prog_info_created_by_uid" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_CORE_PATTERN" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BPF_PROG_INFO_CREATED_BY_UID 1
+#define HAVE_DECL_KERN_CORE_PATTERN $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_PANIC_ON_OOPS" "ac_cv_have_decl_KERN_PANIC_ON_OOPS" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
+"
+if test "x$ac_cv_have_decl_KERN_PANIC_ON_OOPS" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
-ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "func_info" "ac_cv_member_struct_bpf_prog_info_func_info" "#include <linux/bpf.h>
-"
-if test "x$ac_cv_member_struct_bpf_prog_info_func_info" = xyes; then :
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BPF_PROG_INFO_FUNC_INFO 1
+#define HAVE_DECL_KERN_PANIC_ON_OOPS $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_HPPA_PWRSW" "ac_cv_have_decl_KERN_HPPA_PWRSW" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "func_info_rec_size" "ac_cv_member_struct_bpf_prog_info_func_info_rec_size" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_struct_bpf_prog_info_func_info_rec_size" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_HPPA_PWRSW" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BPF_PROG_INFO_FUNC_INFO_REC_SIZE 1
+#define HAVE_DECL_KERN_HPPA_PWRSW $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_HPPA_UNALIGNED" "ac_cv_have_decl_KERN_HPPA_UNALIGNED" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "id" "ac_cv_member_struct_bpf_prog_info_id" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_struct_bpf_prog_info_id" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_HPPA_UNALIGNED" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BPF_PROG_INFO_ID 1
+#define HAVE_DECL_KERN_HPPA_UNALIGNED $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_PRINTK_RATELIMIT" "ac_cv_have_decl_KERN_PRINTK_RATELIMIT" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "ifindex" "ac_cv_member_struct_bpf_prog_info_ifindex" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_struct_bpf_prog_info_ifindex" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_PRINTK_RATELIMIT" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BPF_PROG_INFO_IFINDEX 1
+#define HAVE_DECL_KERN_PRINTK_RATELIMIT $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_PRINTK_RATELIMIT_BURST" "ac_cv_have_decl_KERN_PRINTK_RATELIMIT_BURST" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "jited_func_lens" "ac_cv_member_struct_bpf_prog_info_jited_func_lens" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_struct_bpf_prog_info_jited_func_lens" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_PRINTK_RATELIMIT_BURST" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BPF_PROG_INFO_JITED_FUNC_LENS 1
+#define HAVE_DECL_KERN_PRINTK_RATELIMIT_BURST $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_PTY" "ac_cv_have_decl_KERN_PTY" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "jited_ksyms" "ac_cv_member_struct_bpf_prog_info_jited_ksyms" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_struct_bpf_prog_info_jited_ksyms" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_PTY" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BPF_PROG_INFO_JITED_KSYMS 1
+#define HAVE_DECL_KERN_PTY $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_NGROUPS_MAX" "ac_cv_have_decl_KERN_NGROUPS_MAX" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "jited_line_info" "ac_cv_member_struct_bpf_prog_info_jited_line_info" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_struct_bpf_prog_info_jited_line_info" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_NGROUPS_MAX" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BPF_PROG_INFO_JITED_LINE_INFO 1
+#define HAVE_DECL_KERN_NGROUPS_MAX $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_SPARC_SCONS_PWROFF" "ac_cv_have_decl_KERN_SPARC_SCONS_PWROFF" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "jited_line_info_rec_size" "ac_cv_member_struct_bpf_prog_info_jited_line_info_rec_size" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_struct_bpf_prog_info_jited_line_info_rec_size" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_SPARC_SCONS_PWROFF" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BPF_PROG_INFO_JITED_LINE_INFO_REC_SIZE 1
+#define HAVE_DECL_KERN_SPARC_SCONS_PWROFF $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_HZ_TIMER" "ac_cv_have_decl_KERN_HZ_TIMER" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "jited_prog_insns" "ac_cv_member_struct_bpf_prog_info_jited_prog_insns" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_struct_bpf_prog_info_jited_prog_insns" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_HZ_TIMER" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BPF_PROG_INFO_JITED_PROG_INSNS 1
+#define HAVE_DECL_KERN_HZ_TIMER $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_UNKNOWN_NMI_PANIC" "ac_cv_have_decl_KERN_UNKNOWN_NMI_PANIC" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "jited_prog_len" "ac_cv_member_struct_bpf_prog_info_jited_prog_len" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_struct_bpf_prog_info_jited_prog_len" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_UNKNOWN_NMI_PANIC" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BPF_PROG_INFO_JITED_PROG_LEN 1
+#define HAVE_DECL_KERN_UNKNOWN_NMI_PANIC $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_BOOTLOADER_TYPE" "ac_cv_have_decl_KERN_BOOTLOADER_TYPE" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "line_info" "ac_cv_member_struct_bpf_prog_info_line_info" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_struct_bpf_prog_info_line_info" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_BOOTLOADER_TYPE" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BPF_PROG_INFO_LINE_INFO 1
+#define HAVE_DECL_KERN_BOOTLOADER_TYPE $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_RANDOMIZE" "ac_cv_have_decl_KERN_RANDOMIZE" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "line_info_rec_size" "ac_cv_member_struct_bpf_prog_info_line_info_rec_size" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_struct_bpf_prog_info_line_info_rec_size" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_RANDOMIZE" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BPF_PROG_INFO_LINE_INFO_REC_SIZE 1
+#define HAVE_DECL_KERN_RANDOMIZE $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_SETUID_DUMPABLE" "ac_cv_have_decl_KERN_SETUID_DUMPABLE" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "load_time" "ac_cv_member_struct_bpf_prog_info_load_time" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_struct_bpf_prog_info_load_time" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_SETUID_DUMPABLE" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BPF_PROG_INFO_LOAD_TIME 1
+#define HAVE_DECL_KERN_SETUID_DUMPABLE $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_SPIN_RETRY" "ac_cv_have_decl_KERN_SPIN_RETRY" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "map_ids" "ac_cv_member_struct_bpf_prog_info_map_ids" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_struct_bpf_prog_info_map_ids" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_SPIN_RETRY" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BPF_PROG_INFO_MAP_IDS 1
+#define HAVE_DECL_KERN_SPIN_RETRY $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_ACPI_VIDEO_FLAGS" "ac_cv_have_decl_KERN_ACPI_VIDEO_FLAGS" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "name" "ac_cv_member_struct_bpf_prog_info_name" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_struct_bpf_prog_info_name" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_ACPI_VIDEO_FLAGS" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BPF_PROG_INFO_NAME 1
+#define HAVE_DECL_KERN_ACPI_VIDEO_FLAGS $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_IA64_UNALIGNED" "ac_cv_have_decl_KERN_IA64_UNALIGNED" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "nr_func_info" "ac_cv_member_struct_bpf_prog_info_nr_func_info" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_struct_bpf_prog_info_nr_func_info" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_IA64_UNALIGNED" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BPF_PROG_INFO_NR_FUNC_INFO 1
+#define HAVE_DECL_KERN_IA64_UNALIGNED $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_COMPAT_LOG" "ac_cv_have_decl_KERN_COMPAT_LOG" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "nr_jited_func_lens" "ac_cv_member_struct_bpf_prog_info_nr_jited_func_lens" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_struct_bpf_prog_info_nr_jited_func_lens" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_COMPAT_LOG" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BPF_PROG_INFO_NR_JITED_FUNC_LENS 1
+#define HAVE_DECL_KERN_COMPAT_LOG $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_MAX_LOCK_DEPTH" "ac_cv_have_decl_KERN_MAX_LOCK_DEPTH" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "nr_jited_ksyms" "ac_cv_member_struct_bpf_prog_info_nr_jited_ksyms" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_struct_bpf_prog_info_nr_jited_ksyms" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_MAX_LOCK_DEPTH" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BPF_PROG_INFO_NR_JITED_KSYMS 1
+#define HAVE_DECL_KERN_MAX_LOCK_DEPTH $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_NMI_WATCHDOG" "ac_cv_have_decl_KERN_NMI_WATCHDOG" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "nr_jited_line_info" "ac_cv_member_struct_bpf_prog_info_nr_jited_line_info" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_struct_bpf_prog_info_nr_jited_line_info" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_NMI_WATCHDOG" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BPF_PROG_INFO_NR_JITED_LINE_INFO 1
+#define HAVE_DECL_KERN_NMI_WATCHDOG $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_PANIC_ON_NMI" "ac_cv_have_decl_KERN_PANIC_ON_NMI" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "nr_line_info" "ac_cv_member_struct_bpf_prog_info_nr_line_info" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_struct_bpf_prog_info_nr_line_info" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_PANIC_ON_NMI" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BPF_PROG_INFO_NR_LINE_INFO 1
+#define HAVE_DECL_KERN_PANIC_ON_NMI $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_PANIC_ON_WARN" "ac_cv_have_decl_KERN_PANIC_ON_WARN" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
+"
+if test "x$ac_cv_have_decl_KERN_PANIC_ON_WARN" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
-ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "nr_map_ids" "ac_cv_member_struct_bpf_prog_info_nr_map_ids" "#include <linux/bpf.h>
-"
-if test "x$ac_cv_member_struct_bpf_prog_info_nr_map_ids" = xyes; then :
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BPF_PROG_INFO_NR_MAP_IDS 1
+#define HAVE_DECL_KERN_PANIC_ON_WARN $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "KERN_PANIC_PRINT" "ac_cv_have_decl_KERN_PANIC_PRINT" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "nr_prog_tags" "ac_cv_member_struct_bpf_prog_info_nr_prog_tags" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_struct_bpf_prog_info_nr_prog_tags" = xyes; then :
+if test "x$ac_cv_have_decl_KERN_PANIC_PRINT" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BPF_PROG_INFO_NR_PROG_TAGS 1
+#define HAVE_DECL_KERN_PANIC_PRINT $ac_have_decl
 _ACEOF
 
 
-fi
-ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "prog_tags" "ac_cv_member_struct_bpf_prog_info_prog_tags" "#include <linux/bpf.h>
+ac_fn_c_check_decl "$LINENO" "NET_CORE" "ac_cv_have_decl_NET_CORE" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_member_struct_bpf_prog_info_prog_tags" = xyes; then :
+if test "x$ac_cv_have_decl_NET_CORE" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BPF_PROG_INFO_PROG_TAGS 1
+#define HAVE_DECL_NET_CORE $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_ETHER" "ac_cv_have_decl_NET_ETHER" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "run_cnt" "ac_cv_member_struct_bpf_prog_info_run_cnt" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_struct_bpf_prog_info_run_cnt" = xyes; then :
+if test "x$ac_cv_have_decl_NET_ETHER" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BPF_PROG_INFO_RUN_CNT 1
+#define HAVE_DECL_NET_ETHER $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_802" "ac_cv_have_decl_NET_802" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "run_time_ns" "ac_cv_member_struct_bpf_prog_info_run_time_ns" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_struct_bpf_prog_info_run_time_ns" = xyes; then :
+if test "x$ac_cv_have_decl_NET_802" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BPF_PROG_INFO_RUN_TIME_NS 1
+#define HAVE_DECL_NET_802 $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_UNIX" "ac_cv_have_decl_NET_UNIX" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "tag" "ac_cv_member_struct_bpf_prog_info_tag" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_struct_bpf_prog_info_tag" = xyes; then :
+if test "x$ac_cv_have_decl_NET_UNIX" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BPF_PROG_INFO_TAG 1
+#define HAVE_DECL_NET_UNIX $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4" "ac_cv_have_decl_NET_IPV4" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "type" "ac_cv_member_struct_bpf_prog_info_type" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_struct_bpf_prog_info_type" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BPF_PROG_INFO_TYPE 1
+#define HAVE_DECL_NET_IPV4 $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPX" "ac_cv_have_decl_NET_IPX" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "xlated_prog_insns" "ac_cv_member_struct_bpf_prog_info_xlated_prog_insns" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_struct_bpf_prog_info_xlated_prog_insns" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPX" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BPF_PROG_INFO_XLATED_PROG_INSNS 1
+#define HAVE_DECL_NET_IPX $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_ATALK" "ac_cv_have_decl_NET_ATALK" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "xlated_prog_len" "ac_cv_member_struct_bpf_prog_info_xlated_prog_len" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_struct_bpf_prog_info_xlated_prog_len" = xyes; then :
+if test "x$ac_cv_have_decl_NET_ATALK" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BPF_PROG_INFO_XLATED_PROG_LEN 1
+#define HAVE_DECL_NET_ATALK $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_NETROM" "ac_cv_have_decl_NET_NETROM" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "attach_bpf_fd" "ac_cv_member_union_bpf_attr_attach_bpf_fd" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_attach_bpf_fd" = xyes; then :
+if test "x$ac_cv_have_decl_NET_NETROM" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_ATTACH_BPF_FD 1
+#define HAVE_DECL_NET_NETROM $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_AX25" "ac_cv_have_decl_NET_AX25" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "attach_flags" "ac_cv_member_union_bpf_attr_attach_flags" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_attach_flags" = xyes; then :
+if test "x$ac_cv_have_decl_NET_AX25" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_ATTACH_FLAGS 1
+#define HAVE_DECL_NET_AX25 $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_BRIDGE" "ac_cv_have_decl_NET_BRIDGE" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "attach_type" "ac_cv_member_union_bpf_attr_attach_type" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_attach_type" = xyes; then :
+if test "x$ac_cv_have_decl_NET_BRIDGE" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_ATTACH_TYPE 1
+#define HAVE_DECL_NET_BRIDGE $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_ROSE" "ac_cv_have_decl_NET_ROSE" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "bpf_fd" "ac_cv_member_union_bpf_attr_bpf_fd" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_bpf_fd" = xyes; then :
+if test "x$ac_cv_have_decl_NET_ROSE" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_BPF_FD 1
+#define HAVE_DECL_NET_ROSE $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV6" "ac_cv_have_decl_NET_IPV6" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "btf" "ac_cv_member_union_bpf_attr_btf" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_btf" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV6" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_BTF 1
+#define HAVE_DECL_NET_IPV6 $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_X25" "ac_cv_have_decl_NET_X25" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "btf_fd" "ac_cv_member_union_bpf_attr_btf_fd" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_btf_fd" = xyes; then :
+if test "x$ac_cv_have_decl_NET_X25" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_BTF_FD 1
+#define HAVE_DECL_NET_X25 $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_TR" "ac_cv_have_decl_NET_TR" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "btf_id" "ac_cv_member_union_bpf_attr_btf_id" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_btf_id" = xyes; then :
+if test "x$ac_cv_have_decl_NET_TR" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_BTF_ID 1
+#define HAVE_DECL_NET_TR $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_DECNET" "ac_cv_have_decl_NET_DECNET" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "btf_key_type_id" "ac_cv_member_union_bpf_attr_btf_key_type_id" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_btf_key_type_id" = xyes; then :
+if test "x$ac_cv_have_decl_NET_DECNET" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_BTF_KEY_TYPE_ID 1
+#define HAVE_DECL_NET_DECNET $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_ECONET" "ac_cv_have_decl_NET_ECONET" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "btf_log_buf" "ac_cv_member_union_bpf_attr_btf_log_buf" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_btf_log_buf" = xyes; then :
+if test "x$ac_cv_have_decl_NET_ECONET" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_BTF_LOG_BUF 1
+#define HAVE_DECL_NET_ECONET $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_SCTP" "ac_cv_have_decl_NET_SCTP" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "btf_log_level" "ac_cv_member_union_bpf_attr_btf_log_level" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_btf_log_level" = xyes; then :
+if test "x$ac_cv_have_decl_NET_SCTP" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_BTF_LOG_LEVEL 1
+#define HAVE_DECL_NET_SCTP $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_LLC" "ac_cv_have_decl_NET_LLC" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "btf_log_size" "ac_cv_member_union_bpf_attr_btf_log_size" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_btf_log_size" = xyes; then :
+if test "x$ac_cv_have_decl_NET_LLC" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_BTF_LOG_SIZE 1
+#define HAVE_DECL_NET_LLC $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_NETFILTER" "ac_cv_have_decl_NET_NETFILTER" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "btf_size" "ac_cv_member_union_bpf_attr_btf_size" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_btf_size" = xyes; then :
+if test "x$ac_cv_have_decl_NET_NETFILTER" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_BTF_SIZE 1
+#define HAVE_DECL_NET_NETFILTER $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_DCCP" "ac_cv_have_decl_NET_DCCP" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "btf_value_type_id" "ac_cv_member_union_bpf_attr_btf_value_type_id" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_btf_value_type_id" = xyes; then :
+if test "x$ac_cv_have_decl_NET_DCCP" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_BTF_VALUE_TYPE_ID 1
+#define HAVE_DECL_NET_DCCP $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IRDA" "ac_cv_have_decl_NET_IRDA" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "dummy" "ac_cv_member_union_bpf_attr_dummy" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_dummy" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IRDA" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_DUMMY 1
+#define HAVE_DECL_NET_IRDA $ac_have_decl
 _ACEOF
 
 
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "expected_attach_type" "ac_cv_member_union_bpf_attr_expected_attach_type" "#include <linux/bpf.h>
+ac_fn_c_check_decl "$LINENO" "NET_CORE_WMEM_MAX" "ac_cv_have_decl_NET_CORE_WMEM_MAX" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_member_union_bpf_attr_expected_attach_type" = xyes; then :
+if test "x$ac_cv_have_decl_NET_CORE_WMEM_MAX" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_EXPECTED_ATTACH_TYPE 1
+#define HAVE_DECL_NET_CORE_WMEM_MAX $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_CORE_RMEM_MAX" "ac_cv_have_decl_NET_CORE_RMEM_MAX" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "file_flags" "ac_cv_member_union_bpf_attr_file_flags" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_file_flags" = xyes; then :
+if test "x$ac_cv_have_decl_NET_CORE_RMEM_MAX" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_FILE_FLAGS 1
+#define HAVE_DECL_NET_CORE_RMEM_MAX $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_CORE_WMEM_DEFAULT" "ac_cv_have_decl_NET_CORE_WMEM_DEFAULT" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "flags" "ac_cv_member_union_bpf_attr_flags" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_flags" = xyes; then :
+if test "x$ac_cv_have_decl_NET_CORE_WMEM_DEFAULT" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_FLAGS 1
+#define HAVE_DECL_NET_CORE_WMEM_DEFAULT $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_CORE_RMEM_DEFAULT" "ac_cv_have_decl_NET_CORE_RMEM_DEFAULT" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "func_info" "ac_cv_member_union_bpf_attr_func_info" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_func_info" = xyes; then :
+if test "x$ac_cv_have_decl_NET_CORE_RMEM_DEFAULT" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_FUNC_INFO 1
+#define HAVE_DECL_NET_CORE_RMEM_DEFAULT $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_CORE_MAX_BACKLOG" "ac_cv_have_decl_NET_CORE_MAX_BACKLOG" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "func_info_cnt" "ac_cv_member_union_bpf_attr_func_info_cnt" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_func_info_cnt" = xyes; then :
+if test "x$ac_cv_have_decl_NET_CORE_MAX_BACKLOG" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_FUNC_INFO_CNT 1
+#define HAVE_DECL_NET_CORE_MAX_BACKLOG $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_CORE_FASTROUTE" "ac_cv_have_decl_NET_CORE_FASTROUTE" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "func_info_rec_size" "ac_cv_member_union_bpf_attr_func_info_rec_size" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_func_info_rec_size" = xyes; then :
+if test "x$ac_cv_have_decl_NET_CORE_FASTROUTE" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_FUNC_INFO_REC_SIZE 1
+#define HAVE_DECL_NET_CORE_FASTROUTE $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_CORE_MSG_COST" "ac_cv_have_decl_NET_CORE_MSG_COST" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "info.bpf_fd" "ac_cv_member_union_bpf_attr_info_bpf_fd" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_info_bpf_fd" = xyes; then :
+if test "x$ac_cv_have_decl_NET_CORE_MSG_COST" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_INFO_BPF_FD 1
+#define HAVE_DECL_NET_CORE_MSG_COST $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_CORE_MSG_BURST" "ac_cv_have_decl_NET_CORE_MSG_BURST" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "info.info" "ac_cv_member_union_bpf_attr_info_info" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_info_info" = xyes; then :
+if test "x$ac_cv_have_decl_NET_CORE_MSG_BURST" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_INFO_INFO 1
+#define HAVE_DECL_NET_CORE_MSG_BURST $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_CORE_OPTMEM_MAX" "ac_cv_have_decl_NET_CORE_OPTMEM_MAX" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "info.info_len" "ac_cv_member_union_bpf_attr_info_info_len" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_info_info_len" = xyes; then :
+if test "x$ac_cv_have_decl_NET_CORE_OPTMEM_MAX" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_INFO_INFO_LEN 1
+#define HAVE_DECL_NET_CORE_OPTMEM_MAX $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_CORE_HOT_LIST_LENGTH" "ac_cv_have_decl_NET_CORE_HOT_LIST_LENGTH" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "inner_map_fd" "ac_cv_member_union_bpf_attr_inner_map_fd" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_inner_map_fd" = xyes; then :
+if test "x$ac_cv_have_decl_NET_CORE_HOT_LIST_LENGTH" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_INNER_MAP_FD 1
+#define HAVE_DECL_NET_CORE_HOT_LIST_LENGTH $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_CORE_DIVERT_VERSION" "ac_cv_have_decl_NET_CORE_DIVERT_VERSION" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "insn_cnt" "ac_cv_member_union_bpf_attr_insn_cnt" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_insn_cnt" = xyes; then :
+if test "x$ac_cv_have_decl_NET_CORE_DIVERT_VERSION" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_INSN_CNT 1
+#define HAVE_DECL_NET_CORE_DIVERT_VERSION $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_CORE_NO_CONG_THRESH" "ac_cv_have_decl_NET_CORE_NO_CONG_THRESH" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "insns" "ac_cv_member_union_bpf_attr_insns" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_insns" = xyes; then :
+if test "x$ac_cv_have_decl_NET_CORE_NO_CONG_THRESH" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_INSNS 1
+#define HAVE_DECL_NET_CORE_NO_CONG_THRESH $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_CORE_NO_CONG" "ac_cv_have_decl_NET_CORE_NO_CONG" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "kern_version" "ac_cv_member_union_bpf_attr_kern_version" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_kern_version" = xyes; then :
+if test "x$ac_cv_have_decl_NET_CORE_NO_CONG" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_KERN_VERSION 1
+#define HAVE_DECL_NET_CORE_NO_CONG $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_CORE_LO_CONG" "ac_cv_have_decl_NET_CORE_LO_CONG" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "key" "ac_cv_member_union_bpf_attr_key" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_key" = xyes; then :
+if test "x$ac_cv_have_decl_NET_CORE_LO_CONG" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_KEY 1
+#define HAVE_DECL_NET_CORE_LO_CONG $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_CORE_MOD_CONG" "ac_cv_have_decl_NET_CORE_MOD_CONG" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "key_size" "ac_cv_member_union_bpf_attr_key_size" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_key_size" = xyes; then :
+if test "x$ac_cv_have_decl_NET_CORE_MOD_CONG" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_KEY_SIZE 1
+#define HAVE_DECL_NET_CORE_MOD_CONG $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_CORE_DEV_WEIGHT" "ac_cv_have_decl_NET_CORE_DEV_WEIGHT" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "license" "ac_cv_member_union_bpf_attr_license" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_license" = xyes; then :
+if test "x$ac_cv_have_decl_NET_CORE_DEV_WEIGHT" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_LICENSE 1
+#define HAVE_DECL_NET_CORE_DEV_WEIGHT $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_CORE_SOMAXCONN" "ac_cv_have_decl_NET_CORE_SOMAXCONN" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "line_info" "ac_cv_member_union_bpf_attr_line_info" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_line_info" = xyes; then :
+if test "x$ac_cv_have_decl_NET_CORE_SOMAXCONN" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_LINE_INFO 1
+#define HAVE_DECL_NET_CORE_SOMAXCONN $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_CORE_DESTROY_DELAY" "ac_cv_have_decl_NET_CORE_DESTROY_DELAY" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "line_info_cnt" "ac_cv_member_union_bpf_attr_line_info_cnt" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_line_info_cnt" = xyes; then :
+if test "x$ac_cv_have_decl_NET_CORE_DESTROY_DELAY" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_LINE_INFO_CNT 1
+#define HAVE_DECL_NET_CORE_DESTROY_DELAY $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_CORE_BUDGET" "ac_cv_have_decl_NET_CORE_BUDGET" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "line_info_rec_size" "ac_cv_member_union_bpf_attr_line_info_rec_size" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_line_info_rec_size" = xyes; then :
+if test "x$ac_cv_have_decl_NET_CORE_BUDGET" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_LINE_INFO_REC_SIZE 1
+#define HAVE_DECL_NET_CORE_BUDGET $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_CORE_AEVENT_ETIME" "ac_cv_have_decl_NET_CORE_AEVENT_ETIME" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "log_buf" "ac_cv_member_union_bpf_attr_log_buf" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_log_buf" = xyes; then :
+if test "x$ac_cv_have_decl_NET_CORE_AEVENT_ETIME" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_LOG_BUF 1
+#define HAVE_DECL_NET_CORE_AEVENT_ETIME $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_CORE_AEVENT_RSEQTH" "ac_cv_have_decl_NET_CORE_AEVENT_RSEQTH" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "log_level" "ac_cv_member_union_bpf_attr_log_level" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_log_level" = xyes; then :
+if test "x$ac_cv_have_decl_NET_CORE_AEVENT_RSEQTH" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_LOG_LEVEL 1
+#define HAVE_DECL_NET_CORE_AEVENT_RSEQTH $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_CORE_WARNINGS" "ac_cv_have_decl_NET_CORE_WARNINGS" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "log_size" "ac_cv_member_union_bpf_attr_log_size" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_log_size" = xyes; then :
+if test "x$ac_cv_have_decl_NET_CORE_WARNINGS" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_LOG_SIZE 1
+#define HAVE_DECL_NET_CORE_WARNINGS $ac_have_decl
 _ACEOF
 
 
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "map_fd" "ac_cv_member_union_bpf_attr_map_fd" "#include <linux/bpf.h>
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_FORWARD" "ac_cv_have_decl_NET_IPV4_FORWARD" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_member_union_bpf_attr_map_fd" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_FORWARD" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_MAP_FD 1
+#define HAVE_DECL_NET_IPV4_FORWARD $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_DYNADDR" "ac_cv_have_decl_NET_IPV4_DYNADDR" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "map_flags" "ac_cv_member_union_bpf_attr_map_flags" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_map_flags" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_DYNADDR" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_MAP_FLAGS 1
+#define HAVE_DECL_NET_IPV4_DYNADDR $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_CONF" "ac_cv_have_decl_NET_IPV4_CONF" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "map_id" "ac_cv_member_union_bpf_attr_map_id" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_map_id" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_CONF" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_MAP_ID 1
+#define HAVE_DECL_NET_IPV4_CONF $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_NEIGH" "ac_cv_have_decl_NET_IPV4_NEIGH" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "map_ifindex" "ac_cv_member_union_bpf_attr_map_ifindex" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_map_ifindex" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_NEIGH" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_MAP_IFINDEX 1
+#define HAVE_DECL_NET_IPV4_NEIGH $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_ROUTE" "ac_cv_have_decl_NET_IPV4_ROUTE" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "map_name" "ac_cv_member_union_bpf_attr_map_name" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_map_name" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_ROUTE" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_MAP_NAME 1
+#define HAVE_DECL_NET_IPV4_ROUTE $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_FIB_HASH" "ac_cv_have_decl_NET_IPV4_FIB_HASH" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "map_type" "ac_cv_member_union_bpf_attr_map_type" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_map_type" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_FIB_HASH" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_MAP_TYPE 1
+#define HAVE_DECL_NET_IPV4_FIB_HASH $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_NETFILTER" "ac_cv_have_decl_NET_IPV4_NETFILTER" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "max_entries" "ac_cv_member_union_bpf_attr_max_entries" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_max_entries" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_NETFILTER" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_MAX_ENTRIES 1
+#define HAVE_DECL_NET_IPV4_NETFILTER $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_TCP_TIMESTAMPS" "ac_cv_have_decl_NET_IPV4_TCP_TIMESTAMPS" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "next_id" "ac_cv_member_union_bpf_attr_next_id" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_next_id" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_TCP_TIMESTAMPS" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_NEXT_ID 1
+#define HAVE_DECL_NET_IPV4_TCP_TIMESTAMPS $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_TCP_WINDOW_SCALING" "ac_cv_have_decl_NET_IPV4_TCP_WINDOW_SCALING" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "next_key" "ac_cv_member_union_bpf_attr_next_key" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_next_key" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_TCP_WINDOW_SCALING" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_NEXT_KEY 1
+#define HAVE_DECL_NET_IPV4_TCP_WINDOW_SCALING $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_TCP_SACK" "ac_cv_have_decl_NET_IPV4_TCP_SACK" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "numa_node" "ac_cv_member_union_bpf_attr_numa_node" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_numa_node" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_TCP_SACK" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_NUMA_NODE 1
+#define HAVE_DECL_NET_IPV4_TCP_SACK $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_TCP_RETRANS_COLLAPSE" "ac_cv_have_decl_NET_IPV4_TCP_RETRANS_COLLAPSE" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "open_flags" "ac_cv_member_union_bpf_attr_open_flags" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_open_flags" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_TCP_RETRANS_COLLAPSE" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_OPEN_FLAGS 1
+#define HAVE_DECL_NET_IPV4_TCP_RETRANS_COLLAPSE $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_DEFAULT_TTL" "ac_cv_have_decl_NET_IPV4_DEFAULT_TTL" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "pathname" "ac_cv_member_union_bpf_attr_pathname" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_pathname" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_DEFAULT_TTL" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_PATHNAME 1
+#define HAVE_DECL_NET_IPV4_DEFAULT_TTL $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_AUTOCONFIG" "ac_cv_have_decl_NET_IPV4_AUTOCONFIG" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "prog_btf_fd" "ac_cv_member_union_bpf_attr_prog_btf_fd" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_prog_btf_fd" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_AUTOCONFIG" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_PROG_BTF_FD 1
+#define HAVE_DECL_NET_IPV4_AUTOCONFIG $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_NO_PMTU_DISC" "ac_cv_have_decl_NET_IPV4_NO_PMTU_DISC" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "prog_flags" "ac_cv_member_union_bpf_attr_prog_flags" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_prog_flags" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_NO_PMTU_DISC" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_PROG_FLAGS 1
+#define HAVE_DECL_NET_IPV4_NO_PMTU_DISC $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_TCP_SYN_RETRIES" "ac_cv_have_decl_NET_IPV4_TCP_SYN_RETRIES" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "prog_id" "ac_cv_member_union_bpf_attr_prog_id" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_prog_id" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_TCP_SYN_RETRIES" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_PROG_ID 1
+#define HAVE_DECL_NET_IPV4_TCP_SYN_RETRIES $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_IPFRAG_HIGH_THRESH" "ac_cv_have_decl_NET_IPV4_IPFRAG_HIGH_THRESH" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "prog_ifindex" "ac_cv_member_union_bpf_attr_prog_ifindex" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_prog_ifindex" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_IPFRAG_HIGH_THRESH" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_PROG_IFINDEX 1
+#define HAVE_DECL_NET_IPV4_IPFRAG_HIGH_THRESH $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_IPFRAG_LOW_THRESH" "ac_cv_have_decl_NET_IPV4_IPFRAG_LOW_THRESH" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "prog_name" "ac_cv_member_union_bpf_attr_prog_name" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_prog_name" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_IPFRAG_LOW_THRESH" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_PROG_NAME 1
+#define HAVE_DECL_NET_IPV4_IPFRAG_LOW_THRESH $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_IPFRAG_TIME" "ac_cv_have_decl_NET_IPV4_IPFRAG_TIME" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "prog_type" "ac_cv_member_union_bpf_attr_prog_type" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_prog_type" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_IPFRAG_TIME" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_PROG_TYPE 1
+#define HAVE_DECL_NET_IPV4_IPFRAG_TIME $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_TCP_MAX_KA_PROBES" "ac_cv_have_decl_NET_IPV4_TCP_MAX_KA_PROBES" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "query.attach_flags" "ac_cv_member_union_bpf_attr_query_attach_flags" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_query_attach_flags" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_TCP_MAX_KA_PROBES" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_QUERY_ATTACH_FLAGS 1
+#define HAVE_DECL_NET_IPV4_TCP_MAX_KA_PROBES $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_TCP_KEEPALIVE_TIME" "ac_cv_have_decl_NET_IPV4_TCP_KEEPALIVE_TIME" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "query.attach_type" "ac_cv_member_union_bpf_attr_query_attach_type" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_query_attach_type" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_TCP_KEEPALIVE_TIME" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_QUERY_ATTACH_TYPE 1
+#define HAVE_DECL_NET_IPV4_TCP_KEEPALIVE_TIME $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_TCP_KEEPALIVE_PROBES" "ac_cv_have_decl_NET_IPV4_TCP_KEEPALIVE_PROBES" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "query.prog_cnt" "ac_cv_member_union_bpf_attr_query_prog_cnt" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_query_prog_cnt" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_TCP_KEEPALIVE_PROBES" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_QUERY_PROG_CNT 1
+#define HAVE_DECL_NET_IPV4_TCP_KEEPALIVE_PROBES $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_TCP_RETRIES1" "ac_cv_have_decl_NET_IPV4_TCP_RETRIES1" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "query.prog_ids" "ac_cv_member_union_bpf_attr_query_prog_ids" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_query_prog_ids" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_TCP_RETRIES1" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_QUERY_PROG_IDS 1
+#define HAVE_DECL_NET_IPV4_TCP_RETRIES1 $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_TCP_RETRIES2" "ac_cv_have_decl_NET_IPV4_TCP_RETRIES2" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "query.query_flags" "ac_cv_member_union_bpf_attr_query_query_flags" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_query_query_flags" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_TCP_RETRIES2" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_QUERY_QUERY_FLAGS 1
+#define HAVE_DECL_NET_IPV4_TCP_RETRIES2 $ac_have_decl
 _ACEOF
-
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "query.target_fd" "ac_cv_member_union_bpf_attr_query_target_fd" "#include <linux/bpf.h>
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_TCP_FIN_TIMEOUT" "ac_cv_have_decl_NET_IPV4_TCP_FIN_TIMEOUT" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_member_union_bpf_attr_query_target_fd" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_TCP_FIN_TIMEOUT" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_QUERY_TARGET_FD 1
+#define HAVE_DECL_NET_IPV4_TCP_FIN_TIMEOUT $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_IP_MASQ_DEBUG" "ac_cv_have_decl_NET_IPV4_IP_MASQ_DEBUG" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "raw_tracepoint.name" "ac_cv_member_union_bpf_attr_raw_tracepoint_name" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_raw_tracepoint_name" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_IP_MASQ_DEBUG" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_RAW_TRACEPOINT_NAME 1
+#define HAVE_DECL_NET_IPV4_IP_MASQ_DEBUG $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_TCP_SYNCOOKIES" "ac_cv_have_decl_NET_TCP_SYNCOOKIES" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "raw_tracepoint.prog_fd" "ac_cv_member_union_bpf_attr_raw_tracepoint_prog_fd" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_raw_tracepoint_prog_fd" = xyes; then :
+if test "x$ac_cv_have_decl_NET_TCP_SYNCOOKIES" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_RAW_TRACEPOINT_PROG_FD 1
+#define HAVE_DECL_NET_TCP_SYNCOOKIES $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_TCP_STDURG" "ac_cv_have_decl_NET_TCP_STDURG" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "start_id" "ac_cv_member_union_bpf_attr_start_id" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_start_id" = xyes; then :
+if test "x$ac_cv_have_decl_NET_TCP_STDURG" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_START_ID 1
+#define HAVE_DECL_NET_TCP_STDURG $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_TCP_RFC1337" "ac_cv_have_decl_NET_TCP_RFC1337" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "target_fd" "ac_cv_member_union_bpf_attr_target_fd" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_target_fd" = xyes; then :
+if test "x$ac_cv_have_decl_NET_TCP_RFC1337" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_TARGET_FD 1
+#define HAVE_DECL_NET_TCP_RFC1337 $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_TCP_SYN_TAILDROP" "ac_cv_have_decl_NET_TCP_SYN_TAILDROP" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "task_fd_query.buf" "ac_cv_member_union_bpf_attr_task_fd_query_buf" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_task_fd_query_buf" = xyes; then :
+if test "x$ac_cv_have_decl_NET_TCP_SYN_TAILDROP" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_TASK_FD_QUERY_BUF 1
+#define HAVE_DECL_NET_TCP_SYN_TAILDROP $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_TCP_MAX_SYN_BACKLOG" "ac_cv_have_decl_NET_TCP_MAX_SYN_BACKLOG" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "task_fd_query.buf_len" "ac_cv_member_union_bpf_attr_task_fd_query_buf_len" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_task_fd_query_buf_len" = xyes; then :
+if test "x$ac_cv_have_decl_NET_TCP_MAX_SYN_BACKLOG" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_TASK_FD_QUERY_BUF_LEN 1
+#define HAVE_DECL_NET_TCP_MAX_SYN_BACKLOG $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_LOCAL_PORT_RANGE" "ac_cv_have_decl_NET_IPV4_LOCAL_PORT_RANGE" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "task_fd_query.fd" "ac_cv_member_union_bpf_attr_task_fd_query_fd" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_task_fd_query_fd" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_LOCAL_PORT_RANGE" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_TASK_FD_QUERY_FD 1
+#define HAVE_DECL_NET_IPV4_LOCAL_PORT_RANGE $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_ICMP_ECHO_IGNORE_ALL" "ac_cv_have_decl_NET_IPV4_ICMP_ECHO_IGNORE_ALL" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "task_fd_query.fd_type" "ac_cv_member_union_bpf_attr_task_fd_query_fd_type" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_task_fd_query_fd_type" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_ICMP_ECHO_IGNORE_ALL" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_TASK_FD_QUERY_FD_TYPE 1
+#define HAVE_DECL_NET_IPV4_ICMP_ECHO_IGNORE_ALL $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_ICMP_ECHO_IGNORE_BROADCASTS" "ac_cv_have_decl_NET_IPV4_ICMP_ECHO_IGNORE_BROADCASTS" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "task_fd_query.flags" "ac_cv_member_union_bpf_attr_task_fd_query_flags" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_task_fd_query_flags" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_ICMP_ECHO_IGNORE_BROADCASTS" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_TASK_FD_QUERY_FLAGS 1
+#define HAVE_DECL_NET_IPV4_ICMP_ECHO_IGNORE_BROADCASTS $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_ICMP_SOURCEQUENCH_RATE" "ac_cv_have_decl_NET_IPV4_ICMP_SOURCEQUENCH_RATE" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "task_fd_query.pid" "ac_cv_member_union_bpf_attr_task_fd_query_pid" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_task_fd_query_pid" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_ICMP_SOURCEQUENCH_RATE" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_TASK_FD_QUERY_PID 1
+#define HAVE_DECL_NET_IPV4_ICMP_SOURCEQUENCH_RATE $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_ICMP_DESTUNREACH_RATE" "ac_cv_have_decl_NET_IPV4_ICMP_DESTUNREACH_RATE" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "task_fd_query.probe_addr" "ac_cv_member_union_bpf_attr_task_fd_query_probe_addr" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_task_fd_query_probe_addr" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_ICMP_DESTUNREACH_RATE" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_TASK_FD_QUERY_PROBE_ADDR 1
+#define HAVE_DECL_NET_IPV4_ICMP_DESTUNREACH_RATE $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_ICMP_TIMEEXCEED_RATE" "ac_cv_have_decl_NET_IPV4_ICMP_TIMEEXCEED_RATE" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "task_fd_query.probe_offset" "ac_cv_member_union_bpf_attr_task_fd_query_probe_offset" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_task_fd_query_probe_offset" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_ICMP_TIMEEXCEED_RATE" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_TASK_FD_QUERY_PROBE_OFFSET 1
+#define HAVE_DECL_NET_IPV4_ICMP_TIMEEXCEED_RATE $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_ICMP_PARAMPROB_RATE" "ac_cv_have_decl_NET_IPV4_ICMP_PARAMPROB_RATE" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "task_fd_query.prog_id" "ac_cv_member_union_bpf_attr_task_fd_query_prog_id" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_task_fd_query_prog_id" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_ICMP_PARAMPROB_RATE" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_TASK_FD_QUERY_PROG_ID 1
+#define HAVE_DECL_NET_IPV4_ICMP_PARAMPROB_RATE $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_ICMP_ECHOREPLY_RATE" "ac_cv_have_decl_NET_IPV4_ICMP_ECHOREPLY_RATE" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "test.data_in" "ac_cv_member_union_bpf_attr_test_data_in" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_test_data_in" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_ICMP_ECHOREPLY_RATE" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_TEST_DATA_IN 1
+#define HAVE_DECL_NET_IPV4_ICMP_ECHOREPLY_RATE $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_ICMP_IGNORE_BOGUS_ERROR_RESPONSES" "ac_cv_have_decl_NET_IPV4_ICMP_IGNORE_BOGUS_ERROR_RESPONSES" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "test.data_out" "ac_cv_member_union_bpf_attr_test_data_out" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_test_data_out" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_ICMP_IGNORE_BOGUS_ERROR_RESPONSES" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_TEST_DATA_OUT 1
+#define HAVE_DECL_NET_IPV4_ICMP_IGNORE_BOGUS_ERROR_RESPONSES $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_IGMP_MAX_MEMBERSHIPS" "ac_cv_have_decl_NET_IPV4_IGMP_MAX_MEMBERSHIPS" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "test.data_size_in" "ac_cv_member_union_bpf_attr_test_data_size_in" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_test_data_size_in" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_IGMP_MAX_MEMBERSHIPS" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_TEST_DATA_SIZE_IN 1
+#define HAVE_DECL_NET_IPV4_IGMP_MAX_MEMBERSHIPS $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_TCP_TW_RECYCLE" "ac_cv_have_decl_NET_TCP_TW_RECYCLE" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "test.data_size_out" "ac_cv_member_union_bpf_attr_test_data_size_out" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_test_data_size_out" = xyes; then :
+if test "x$ac_cv_have_decl_NET_TCP_TW_RECYCLE" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_TEST_DATA_SIZE_OUT 1
+#define HAVE_DECL_NET_TCP_TW_RECYCLE $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_ALWAYS_DEFRAG" "ac_cv_have_decl_NET_IPV4_ALWAYS_DEFRAG" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "test.duration" "ac_cv_member_union_bpf_attr_test_duration" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_test_duration" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_ALWAYS_DEFRAG" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_TEST_DURATION 1
+#define HAVE_DECL_NET_IPV4_ALWAYS_DEFRAG $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_TCP_KEEPALIVE_INTVL" "ac_cv_have_decl_NET_IPV4_TCP_KEEPALIVE_INTVL" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "test.prog_fd" "ac_cv_member_union_bpf_attr_test_prog_fd" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_test_prog_fd" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_TCP_KEEPALIVE_INTVL" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_TEST_PROG_FD 1
+#define HAVE_DECL_NET_IPV4_TCP_KEEPALIVE_INTVL $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_INET_PEER_THRESHOLD" "ac_cv_have_decl_NET_IPV4_INET_PEER_THRESHOLD" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "test.repeat" "ac_cv_member_union_bpf_attr_test_repeat" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_test_repeat" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_INET_PEER_THRESHOLD" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_TEST_REPEAT 1
+#define HAVE_DECL_NET_IPV4_INET_PEER_THRESHOLD $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_INET_PEER_MINTTL" "ac_cv_have_decl_NET_IPV4_INET_PEER_MINTTL" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "test.retval" "ac_cv_member_union_bpf_attr_test_retval" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_test_retval" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_INET_PEER_MINTTL" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_TEST_RETVAL 1
+#define HAVE_DECL_NET_IPV4_INET_PEER_MINTTL $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_INET_PEER_MAXTTL" "ac_cv_have_decl_NET_IPV4_INET_PEER_MAXTTL" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "value" "ac_cv_member_union_bpf_attr_value" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_value" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_INET_PEER_MAXTTL" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_VALUE 1
+#define HAVE_DECL_NET_IPV4_INET_PEER_MAXTTL $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_INET_PEER_GC_MINTIME" "ac_cv_have_decl_NET_IPV4_INET_PEER_GC_MINTIME" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
+"
+if test "x$ac_cv_have_decl_NET_IPV4_INET_PEER_GC_MINTIME" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "value_size" "ac_cv_member_union_bpf_attr_value_size" "#include <linux/bpf.h>
-"
-if test "x$ac_cv_member_union_bpf_attr_value_size" = xyes; then :
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_VALUE_SIZE 1
+#define HAVE_DECL_NET_IPV4_INET_PEER_GC_MINTIME $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_INET_PEER_GC_MAXTIME" "ac_cv_have_decl_NET_IPV4_INET_PEER_GC_MAXTIME" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "dummy" "ac_cv_member_union_bpf_attr_dummy" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_dummy" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_INET_PEER_GC_MAXTIME" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_DUMMY 1
+#define HAVE_DECL_NET_IPV4_INET_PEER_GC_MAXTIME $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_TCP_ORPHAN_RETRIES" "ac_cv_have_decl_NET_TCP_ORPHAN_RETRIES" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-
-
-
+"
+if test "x$ac_cv_have_decl_NET_TCP_ORPHAN_RETRIES" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
 
-done
-
-
-for ac_header in bluetooth/bluetooth.h
-do :
-  ac_fn_c_check_header_mongrel "$LINENO" "bluetooth/bluetooth.h" "ac_cv_header_bluetooth_bluetooth_h" "$ac_includes_default"
-if test "x$ac_cv_header_bluetooth_bluetooth_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_BLUETOOTH_BLUETOOTH_H 1
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_NET_TCP_ORPHAN_RETRIES $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_TCP_ABORT_ON_OVERFLOW" "ac_cv_have_decl_NET_TCP_ABORT_ON_OVERFLOW" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-       ac_fn_c_check_member "$LINENO" "struct sockaddr_l2" "l2_bdaddr_type" "ac_cv_member_struct_sockaddr_l2_l2_bdaddr_type" "#include <bluetooth/bluetooth.h>
-                        #include <bluetooth/l2cap.h>
 "
-if test "x$ac_cv_member_struct_sockaddr_l2_l2_bdaddr_type" = xyes; then :
+if test "x$ac_cv_have_decl_NET_TCP_ABORT_ON_OVERFLOW" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_SOCKADDR_L2_L2_BDADDR_TYPE 1
+#define HAVE_DECL_NET_TCP_ABORT_ON_OVERFLOW $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_TCP_SYNACK_RETRIES" "ac_cv_have_decl_NET_TCP_SYNACK_RETRIES" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
+"
+if test "x$ac_cv_have_decl_NET_TCP_SYNACK_RETRIES" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_NET_TCP_SYNACK_RETRIES $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_TCP_MAX_ORPHANS" "ac_cv_have_decl_NET_TCP_MAX_ORPHANS" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
+"
+if test "x$ac_cv_have_decl_NET_TCP_MAX_ORPHANS" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
 
-done
-
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_NET_TCP_MAX_ORPHANS $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_TCP_MAX_TW_BUCKETS" "ac_cv_have_decl_NET_TCP_MAX_TW_BUCKETS" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-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 :
+if test "x$ac_cv_have_decl_NET_TCP_MAX_TW_BUCKETS" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BR_MDB_ENTRY 1
+#define HAVE_DECL_NET_TCP_MAX_TW_BUCKETS $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_TCP_FACK" "ac_cv_have_decl_NET_TCP_FACK" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-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 :
+if test "x$ac_cv_have_decl_NET_TCP_FACK" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BR_PORT_MSG 1
+#define HAVE_DECL_NET_TCP_FACK $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_TCP_REORDERING" "ac_cv_have_decl_NET_TCP_REORDERING" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-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 :
+if test "x$ac_cv_have_decl_NET_TCP_REORDERING" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BR_MDB_ENTRY_FLAGS 1
+#define HAVE_DECL_NET_TCP_REORDERING $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_TCP_ECN" "ac_cv_have_decl_NET_TCP_ECN" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-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 :
+if test "x$ac_cv_have_decl_NET_TCP_ECN" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BR_MDB_ENTRY_VID 1
+#define HAVE_DECL_NET_TCP_ECN $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_TCP_DSACK" "ac_cv_have_decl_NET_TCP_DSACK" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
+"
+if test "x$ac_cv_have_decl_NET_TCP_DSACK" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_NET_TCP_DSACK $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_TCP_MEM" "ac_cv_have_decl_NET_TCP_MEM" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-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 :
+if test "x$ac_cv_have_decl_NET_TCP_MEM" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_DCBMSG 1
+#define HAVE_DECL_NET_TCP_MEM $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_TCP_WMEM" "ac_cv_have_decl_NET_TCP_WMEM" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-
-ac_fn_c_check_type "$LINENO" "struct ifaddrlblmsg" "ac_cv_type_struct_ifaddrlblmsg" "#include <linux/if_addrlabel.h>
 "
-if test "x$ac_cv_type_struct_ifaddrlblmsg" = xyes; then :
+if test "x$ac_cv_have_decl_NET_TCP_WMEM" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_IFADDRLBLMSG 1
+#define HAVE_DECL_NET_TCP_WMEM $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_TCP_RMEM" "ac_cv_have_decl_NET_TCP_RMEM" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-
-ac_fn_c_check_type "$LINENO" "struct netconfmsg" "ac_cv_type_struct_netconfmsg" "#include <linux/netconf.h>
 "
-if test "x$ac_cv_type_struct_netconfmsg" = xyes; then :
+if test "x$ac_cv_have_decl_NET_TCP_RMEM" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_NETCONFMSG 1
+#define HAVE_DECL_NET_TCP_RMEM $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_TCP_APP_WIN" "ac_cv_have_decl_NET_TCP_APP_WIN" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
+"
+if test "x$ac_cv_have_decl_NET_TCP_APP_WIN" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_NET_TCP_APP_WIN $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_TCP_ADV_WIN_SCALE" "ac_cv_have_decl_NET_TCP_ADV_WIN_SCALE" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-ac_fn_c_check_type "$LINENO" "struct rta_mfc_stats" "ac_cv_type_struct_rta_mfc_stats" "#include <sys/socket.h>
-#include <linux/rtnetlink.h>
 "
-if test "x$ac_cv_type_struct_rta_mfc_stats" = xyes; then :
+if test "x$ac_cv_have_decl_NET_TCP_ADV_WIN_SCALE" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_RTA_MFC_STATS 1
+#define HAVE_DECL_NET_TCP_ADV_WIN_SCALE $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_NONLOCAL_BIND" "ac_cv_have_decl_NET_IPV4_NONLOCAL_BIND" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_type "$LINENO" "struct rtvia" "ac_cv_type_struct_rtvia" "#include <sys/socket.h>
-#include <linux/rtnetlink.h>
 "
-if test "x$ac_cv_type_struct_rtvia" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_NONLOCAL_BIND" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_RTVIA 1
+#define HAVE_DECL_NET_IPV4_NONLOCAL_BIND $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_ICMP_RATELIMIT" "ac_cv_have_decl_NET_IPV4_ICMP_RATELIMIT" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
+"
+if test "x$ac_cv_have_decl_NET_IPV4_ICMP_RATELIMIT" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_NET_IPV4_ICMP_RATELIMIT $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_ICMP_RATEMASK" "ac_cv_have_decl_NET_IPV4_ICMP_RATEMASK" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-ac_fn_c_check_member "$LINENO" "struct ndt_stats" "ndts_table_fulls" "ac_cv_member_struct_ndt_stats_ndts_table_fulls" "#include <linux/neighbour.h>
 "
-if test "x$ac_cv_member_struct_ndt_stats_ndts_table_fulls" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_ICMP_RATEMASK" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_NDT_STATS_NDTS_TABLE_FULLS 1
+#define HAVE_DECL_NET_IPV4_ICMP_RATEMASK $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_TCP_TW_REUSE" "ac_cv_have_decl_NET_TCP_TW_REUSE" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-
-ac_fn_c_check_type "$LINENO" "struct ndt_config" "ac_cv_type_struct_ndt_config" "#include <linux/neighbour.h>
 "
-if test "x$ac_cv_type_struct_ndt_config" = xyes; then :
+if test "x$ac_cv_have_decl_NET_TCP_TW_REUSE" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_NDT_CONFIG 1
+#define HAVE_DECL_NET_TCP_TW_REUSE $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_TCP_FRTO" "ac_cv_have_decl_NET_TCP_FRTO" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_type "$LINENO" "struct ndt_stats" "ac_cv_type_struct_ndt_stats" "#include <linux/neighbour.h>
 "
-if test "x$ac_cv_type_struct_ndt_stats" = xyes; then :
+if test "x$ac_cv_have_decl_NET_TCP_FRTO" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_NDT_STATS 1
+#define HAVE_DECL_NET_TCP_FRTO $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_TCP_LOW_LATENCY" "ac_cv_have_decl_NET_TCP_LOW_LATENCY" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
+"
+if test "x$ac_cv_have_decl_NET_TCP_LOW_LATENCY" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_NET_TCP_LOW_LATENCY $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_IPFRAG_SECRET_INTERVAL" "ac_cv_have_decl_NET_IPV4_IPFRAG_SECRET_INTERVAL" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-ac_fn_c_check_type "$LINENO" "struct ifla_bridge_id" "ac_cv_type_struct_ifla_bridge_id" "#include <sys/socket.h>
-#include <linux/rtnetlink.h>
 "
-if test "x$ac_cv_type_struct_ifla_bridge_id" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_IPFRAG_SECRET_INTERVAL" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_IFLA_BRIDGE_ID 1
+#define HAVE_DECL_NET_IPV4_IPFRAG_SECRET_INTERVAL $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_IGMP_MAX_MSF" "ac_cv_have_decl_NET_IPV4_IGMP_MAX_MSF" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_type "$LINENO" "struct ifla_cacheinfo" "ac_cv_type_struct_ifla_cacheinfo" "#include <sys/socket.h>
-#include <linux/rtnetlink.h>
 "
-if test "x$ac_cv_type_struct_ifla_cacheinfo" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_IGMP_MAX_MSF" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_IFLA_CACHEINFO 1
+#define HAVE_DECL_NET_IPV4_IGMP_MAX_MSF $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_TCP_NO_METRICS_SAVE" "ac_cv_have_decl_NET_TCP_NO_METRICS_SAVE" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_type "$LINENO" "struct ifla_port_vsi" "ac_cv_type_struct_ifla_port_vsi" "#include <sys/socket.h>
-#include <linux/rtnetlink.h>
 "
-if test "x$ac_cv_type_struct_ifla_port_vsi" = xyes; then :
+if test "x$ac_cv_have_decl_NET_TCP_NO_METRICS_SAVE" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_IFLA_PORT_VSI 1
+#define HAVE_DECL_NET_TCP_NO_METRICS_SAVE $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_TCP_DEFAULT_WIN_SCALE" "ac_cv_have_decl_NET_TCP_DEFAULT_WIN_SCALE" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_type "$LINENO" "struct rtnl_link_stats64" "ac_cv_type_struct_rtnl_link_stats64" "#include <sys/socket.h>
-#include <linux/rtnetlink.h>
 "
-if test "x$ac_cv_type_struct_rtnl_link_stats64" = xyes; then :
+if test "x$ac_cv_have_decl_NET_TCP_DEFAULT_WIN_SCALE" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_RTNL_LINK_STATS64 1
+#define HAVE_DECL_NET_TCP_DEFAULT_WIN_SCALE $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_TCP_MODERATE_RCVBUF" "ac_cv_have_decl_NET_TCP_MODERATE_RCVBUF" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-
-ac_fn_c_check_member "$LINENO" "struct rtnl_link_stats" "rx_nohandler" "ac_cv_member_struct_rtnl_link_stats_rx_nohandler" "#include <sys/socket.h>
-#include <linux/rtnetlink.h>
 "
-if test "x$ac_cv_member_struct_rtnl_link_stats_rx_nohandler" = xyes; then :
+if test "x$ac_cv_have_decl_NET_TCP_MODERATE_RCVBUF" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_RTNL_LINK_STATS_RX_NOHANDLER 1
+#define HAVE_DECL_NET_TCP_MODERATE_RCVBUF $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_TCP_TSO_WIN_DIVISOR" "ac_cv_have_decl_NET_TCP_TSO_WIN_DIVISOR" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct rtnl_link_stats64" "rx_nohandler" "ac_cv_member_struct_rtnl_link_stats64_rx_nohandler" "#include <sys/socket.h>
-#include <linux/rtnetlink.h>
 "
-if test "x$ac_cv_member_struct_rtnl_link_stats64_rx_nohandler" = xyes; then :
+if test "x$ac_cv_have_decl_NET_TCP_TSO_WIN_DIVISOR" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_RTNL_LINK_STATS64_RX_NOHANDLER 1
+#define HAVE_DECL_NET_TCP_TSO_WIN_DIVISOR $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_TCP_BIC_BETA" "ac_cv_have_decl_NET_TCP_BIC_BETA" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-
-ac_fn_c_check_decl "$LINENO" "IFLA_PORT_SELF" "ac_cv_have_decl_IFLA_PORT_SELF" "#include <sys/socket.h>
-#include <linux/rtnetlink.h>
 "
-if test "x$ac_cv_have_decl_IFLA_PORT_SELF" = xyes; then :
+if test "x$ac_cv_have_decl_NET_TCP_BIC_BETA" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_IFLA_PORT_SELF $ac_have_decl
+#define HAVE_DECL_NET_TCP_BIC_BETA $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "IFLA_PROTINFO" "ac_cv_have_decl_IFLA_PROTINFO" "#include <sys/socket.h>
-#include <linux/rtnetlink.h>
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_ICMP_ERRORS_USE_INBOUND_IFADDR" "ac_cv_have_decl_NET_IPV4_ICMP_ERRORS_USE_INBOUND_IFADDR" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_IFLA_PROTINFO" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_ICMP_ERRORS_USE_INBOUND_IFADDR" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_IFLA_PROTINFO $ac_have_decl
+#define HAVE_DECL_NET_IPV4_ICMP_ERRORS_USE_INBOUND_IFADDR $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "IFLA_AF_SPEC" "ac_cv_have_decl_IFLA_AF_SPEC" "#include <sys/socket.h>
-#include <linux/rtnetlink.h>
+ac_fn_c_check_decl "$LINENO" "NET_TCP_CONG_CONTROL" "ac_cv_have_decl_NET_TCP_CONG_CONTROL" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_IFLA_AF_SPEC" = xyes; then :
+if test "x$ac_cv_have_decl_NET_TCP_CONG_CONTROL" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_IFLA_AF_SPEC $ac_have_decl
+#define HAVE_DECL_NET_TCP_CONG_CONTROL $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "IFLA_XDP" "ac_cv_have_decl_IFLA_XDP" "#include <sys/socket.h>
-#include <linux/rtnetlink.h>
+ac_fn_c_check_decl "$LINENO" "NET_TCP_ABC" "ac_cv_have_decl_NET_TCP_ABC" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_IFLA_XDP" = xyes; then :
+if test "x$ac_cv_have_decl_NET_TCP_ABC" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_IFLA_XDP $ac_have_decl
+#define HAVE_DECL_NET_TCP_ABC $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_IPFRAG_MAX_DIST" "ac_cv_have_decl_NET_IPV4_IPFRAG_MAX_DIST" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-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 :
+if test "x$ac_cv_have_decl_NET_IPV4_IPFRAG_MAX_DIST" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_GNET_STATS_BASIC 1
+#define HAVE_DECL_NET_IPV4_IPFRAG_MAX_DIST $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_TCP_MTU_PROBING" "ac_cv_have_decl_NET_TCP_MTU_PROBING" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-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 :
+if test "x$ac_cv_have_decl_NET_TCP_MTU_PROBING" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_GNET_STATS_QUEUE 1
+#define HAVE_DECL_NET_TCP_MTU_PROBING $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_TCP_BASE_MSS" "ac_cv_have_decl_NET_TCP_BASE_MSS" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-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 :
+if test "x$ac_cv_have_decl_NET_TCP_BASE_MSS" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_GNET_STATS_RATE_EST 1
+#define HAVE_DECL_NET_TCP_BASE_MSS $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_TCP_WORKAROUND_SIGNED_WINDOWS" "ac_cv_have_decl_NET_IPV4_TCP_WORKAROUND_SIGNED_WINDOWS" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-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 :
+if test "x$ac_cv_have_decl_NET_IPV4_TCP_WORKAROUND_SIGNED_WINDOWS" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_GNET_STATS_RATE_EST64 1
+#define HAVE_DECL_NET_IPV4_TCP_WORKAROUND_SIGNED_WINDOWS $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_TCP_DMA_COPYBREAK" "ac_cv_have_decl_NET_TCP_DMA_COPYBREAK" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-
-
-ac_fn_c_check_type "$LINENO" "struct tc_sizespec" "ac_cv_type_struct_tc_sizespec" "#include <linux/types.h>
-#include <linux/pkt_sched.h>
 "
-if test "x$ac_cv_type_struct_tc_sizespec" = xyes; then :
+if test "x$ac_cv_have_decl_NET_TCP_DMA_COPYBREAK" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_TC_SIZESPEC 1
+#define HAVE_DECL_NET_TCP_DMA_COPYBREAK $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_TCP_SLOW_START_AFTER_IDLE" "ac_cv_have_decl_NET_TCP_SLOW_START_AFTER_IDLE" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-
-ac_fn_c_check_decl "$LINENO" "TCA_STAB_DATA" "ac_cv_have_decl_TCA_STAB_DATA" "#include <linux/types.h>
-#include <linux/pkt_sched.h>
 "
-if test "x$ac_cv_have_decl_TCA_STAB_DATA" = xyes; then :
+if test "x$ac_cv_have_decl_NET_TCP_SLOW_START_AFTER_IDLE" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_TCA_STAB_DATA $ac_have_decl
+#define HAVE_DECL_NET_TCP_SLOW_START_AFTER_IDLE $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_CIPSOV4_CACHE_ENABLE" "ac_cv_have_decl_NET_CIPSOV4_CACHE_ENABLE" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-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 :
+if test "x$ac_cv_have_decl_NET_CIPSOV4_CACHE_ENABLE" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_FIB_RULE_UID_RANGE 1
+#define HAVE_DECL_NET_CIPSOV4_CACHE_ENABLE $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_CIPSOV4_CACHE_BUCKET_SIZE" "ac_cv_have_decl_NET_CIPSOV4_CACHE_BUCKET_SIZE" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_type "$LINENO" "struct fib_rule_port_range" "ac_cv_type_struct_fib_rule_port_range" "#include <linux/fib_rules.h>
 "
-if test "x$ac_cv_type_struct_fib_rule_port_range" = xyes; then :
+if test "x$ac_cv_have_decl_NET_CIPSOV4_CACHE_BUCKET_SIZE" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_FIB_RULE_PORT_RANGE 1
+#define HAVE_DECL_NET_CIPSOV4_CACHE_BUCKET_SIZE $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_CIPSOV4_RBM_OPTFMT" "ac_cv_have_decl_NET_CIPSOV4_RBM_OPTFMT" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
+"
+if test "x$ac_cv_have_decl_NET_CIPSOV4_RBM_OPTFMT" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_NET_CIPSOV4_RBM_OPTFMT $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_CIPSOV4_RBM_STRICTVALID" "ac_cv_have_decl_NET_CIPSOV4_RBM_STRICTVALID" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-ac_fn_c_check_type "$LINENO" "struct statfs" "ac_cv_type_struct_statfs" "#include <linux/types.h>
-#include <asm/statfs.h>
 "
-if test "x$ac_cv_type_struct_statfs" = xyes; then :
+if test "x$ac_cv_have_decl_NET_CIPSOV4_RBM_STRICTVALID" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STATFS 1
+#define HAVE_DECL_NET_CIPSOV4_RBM_STRICTVALID $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_TCP_AVAIL_CONG_CONTROL" "ac_cv_have_decl_NET_TCP_AVAIL_CONG_CONTROL" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-       ac_fn_c_check_member "$LINENO" "struct statfs" "f_frsize" "ac_cv_member_struct_statfs_f_frsize" "#include <linux/types.h>
-#include <asm/statfs.h>
 "
-if test "x$ac_cv_member_struct_statfs_f_frsize" = xyes; then :
+if test "x$ac_cv_have_decl_NET_TCP_AVAIL_CONG_CONTROL" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STATFS_F_FRSIZE 1
+#define HAVE_DECL_NET_TCP_AVAIL_CONG_CONTROL $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_TCP_ALLOWED_CONG_CONTROL" "ac_cv_have_decl_NET_TCP_ALLOWED_CONG_CONTROL" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct statfs" "f_flags" "ac_cv_member_struct_statfs_f_flags" "#include <linux/types.h>
-#include <asm/statfs.h>
 "
-if test "x$ac_cv_member_struct_statfs_f_flags" = xyes; then :
+if test "x$ac_cv_have_decl_NET_TCP_ALLOWED_CONG_CONTROL" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STATFS_F_FLAGS 1
+#define HAVE_DECL_NET_TCP_ALLOWED_CONG_CONTROL $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_TCP_MAX_SSTHRESH" "ac_cv_have_decl_NET_TCP_MAX_SSTHRESH" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct statfs" "f_fsid.val" "ac_cv_member_struct_statfs_f_fsid_val" "#include <linux/types.h>
-#include <asm/statfs.h>
 "
-if test "x$ac_cv_member_struct_statfs_f_fsid_val" = xyes; then :
+if test "x$ac_cv_have_decl_NET_TCP_MAX_SSTHRESH" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STATFS_F_FSID_VAL 1
+#define HAVE_DECL_NET_TCP_MAX_SSTHRESH $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_TCP_FRTO_RESPONSE" "ac_cv_have_decl_NET_TCP_FRTO_RESPONSE" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct statfs" "f_fsid.__val" "ac_cv_member_struct_statfs_f_fsid___val" "#include <linux/types.h>
-#include <asm/statfs.h>
 "
-if test "x$ac_cv_member_struct_statfs_f_fsid___val" = xyes; then :
+if test "x$ac_cv_have_decl_NET_TCP_FRTO_RESPONSE" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STATFS_F_FSID___VAL 1
+#define HAVE_DECL_NET_TCP_FRTO_RESPONSE $ac_have_decl
 _ACEOF
 
 
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_CONF_FORWARDING" "ac_cv_have_decl_NET_IPV4_CONF_FORWARDING" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
+
+"
+if test "x$ac_cv_have_decl_NET_IPV4_CONF_FORWARDING" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_NET_IPV4_CONF_FORWARDING $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_CONF_MC_FORWARDING" "ac_cv_have_decl_NET_IPV4_CONF_MC_FORWARDING" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
+"
+if test "x$ac_cv_have_decl_NET_IPV4_CONF_MC_FORWARDING" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_NET_IPV4_CONF_MC_FORWARDING $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_CONF_PROXY_ARP" "ac_cv_have_decl_NET_IPV4_CONF_PROXY_ARP" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-ac_fn_c_check_type "$LINENO" "struct statfs64" "ac_cv_type_struct_statfs64" "#include <linux/types.h>
-#include <asm/statfs.h>
 "
-if test "x$ac_cv_type_struct_statfs64" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_CONF_PROXY_ARP" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STATFS64 1
+#define HAVE_DECL_NET_IPV4_CONF_PROXY_ARP $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_CONF_ACCEPT_REDIRECTS" "ac_cv_have_decl_NET_IPV4_CONF_ACCEPT_REDIRECTS" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-       ac_fn_c_check_member "$LINENO" "struct statfs64" "f_frsize" "ac_cv_member_struct_statfs64_f_frsize" "#include <linux/types.h>
-#include <asm/statfs.h>
 "
-if test "x$ac_cv_member_struct_statfs64_f_frsize" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_CONF_ACCEPT_REDIRECTS" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STATFS64_F_FRSIZE 1
+#define HAVE_DECL_NET_IPV4_CONF_ACCEPT_REDIRECTS $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_CONF_SECURE_REDIRECTS" "ac_cv_have_decl_NET_IPV4_CONF_SECURE_REDIRECTS" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct statfs64" "f_flags" "ac_cv_member_struct_statfs64_f_flags" "#include <linux/types.h>
-#include <asm/statfs.h>
 "
-if test "x$ac_cv_member_struct_statfs64_f_flags" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_CONF_SECURE_REDIRECTS" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STATFS64_F_FLAGS 1
+#define HAVE_DECL_NET_IPV4_CONF_SECURE_REDIRECTS $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_CONF_SEND_REDIRECTS" "ac_cv_have_decl_NET_IPV4_CONF_SEND_REDIRECTS" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct statfs64" "f_fsid.val" "ac_cv_member_struct_statfs64_f_fsid_val" "#include <linux/types.h>
-#include <asm/statfs.h>
 "
-if test "x$ac_cv_member_struct_statfs64_f_fsid_val" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_CONF_SEND_REDIRECTS" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STATFS64_F_FSID_VAL 1
+#define HAVE_DECL_NET_IPV4_CONF_SEND_REDIRECTS $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_CONF_SHARED_MEDIA" "ac_cv_have_decl_NET_IPV4_CONF_SHARED_MEDIA" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct statfs64" "f_fsid.__val" "ac_cv_member_struct_statfs64_f_fsid___val" "#include <linux/types.h>
-#include <asm/statfs.h>
 "
-if test "x$ac_cv_member_struct_statfs64_f_fsid___val" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_CONF_SHARED_MEDIA" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STATFS64_F_FSID___VAL 1
+#define HAVE_DECL_NET_IPV4_CONF_SHARED_MEDIA $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_CONF_RP_FILTER" "ac_cv_have_decl_NET_IPV4_CONF_RP_FILTER" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
+"
+if test "x$ac_cv_have_decl_NET_IPV4_CONF_RP_FILTER" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_NET_IPV4_CONF_RP_FILTER $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_CONF_ACCEPT_SOURCE_ROUTE" "ac_cv_have_decl_NET_IPV4_CONF_ACCEPT_SOURCE_ROUTE" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
+"
+if test "x$ac_cv_have_decl_NET_IPV4_CONF_ACCEPT_SOURCE_ROUTE" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_NET_IPV4_CONF_ACCEPT_SOURCE_ROUTE $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_CONF_BOOTP_RELAY" "ac_cv_have_decl_NET_IPV4_CONF_BOOTP_RELAY" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-ac_fn_c_check_type "$LINENO" "struct blk_user_trace_setup" "ac_cv_type_struct_blk_user_trace_setup" "#include <linux/blktrace_api.h>
 "
-if test "x$ac_cv_type_struct_blk_user_trace_setup" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_CONF_BOOTP_RELAY" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BLK_USER_TRACE_SETUP 1
+#define HAVE_DECL_NET_IPV4_CONF_BOOTP_RELAY $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_CONF_LOG_MARTIANS" "ac_cv_have_decl_NET_IPV4_CONF_LOG_MARTIANS" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
+"
+if test "x$ac_cv_have_decl_NET_IPV4_CONF_LOG_MARTIANS" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_NET_IPV4_CONF_LOG_MARTIANS $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_CONF_TAG" "ac_cv_have_decl_NET_IPV4_CONF_TAG" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-ac_fn_c_check_type "$LINENO" "struct mtd_write_req" "ac_cv_type_struct_mtd_write_req" "#include <mtd/mtd-abi.h>
 "
-if test "x$ac_cv_type_struct_mtd_write_req" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_CONF_TAG" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_MTD_WRITE_REQ 1
+#define HAVE_DECL_NET_IPV4_CONF_TAG $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_CONF_ARPFILTER" "ac_cv_have_decl_NET_IPV4_CONF_ARPFILTER" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
+"
+if test "x$ac_cv_have_decl_NET_IPV4_CONF_ARPFILTER" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_NET_IPV4_CONF_ARPFILTER $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_CONF_MEDIUM_ID" "ac_cv_have_decl_NET_IPV4_CONF_MEDIUM_ID" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-ac_fn_c_check_member "$LINENO" "struct ubi_attach_req" "max_beb_per1024" "ac_cv_member_struct_ubi_attach_req_max_beb_per1024" "#include <mtd/ubi-user.h>
 "
-if test "x$ac_cv_member_struct_ubi_attach_req_max_beb_per1024" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_CONF_MEDIUM_ID" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_UBI_ATTACH_REQ_MAX_BEB_PER1024 1
+#define HAVE_DECL_NET_IPV4_CONF_MEDIUM_ID $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_CONF_NOXFRM" "ac_cv_have_decl_NET_IPV4_CONF_NOXFRM" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
+"
+if test "x$ac_cv_have_decl_NET_IPV4_CONF_NOXFRM" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_NET_IPV4_CONF_NOXFRM $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_CONF_NOPOLICY" "ac_cv_have_decl_NET_IPV4_CONF_NOPOLICY" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-ac_fn_c_check_type "$LINENO" "struct ptp_sys_offset" "ac_cv_type_struct_ptp_sys_offset" "#include <linux/ptp_clock.h>
 "
-if test "x$ac_cv_type_struct_ptp_sys_offset" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_CONF_NOPOLICY" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_PTP_SYS_OFFSET 1
+#define HAVE_DECL_NET_IPV4_CONF_NOPOLICY $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_CONF_FORCE_IGMP_VERSION" "ac_cv_have_decl_NET_IPV4_CONF_FORCE_IGMP_VERSION" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
+"
+if test "x$ac_cv_have_decl_NET_IPV4_CONF_FORCE_IGMP_VERSION" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_NET_IPV4_CONF_FORCE_IGMP_VERSION $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_CONF_ARP_ANNOUNCE" "ac_cv_have_decl_NET_IPV4_CONF_ARP_ANNOUNCE" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-ac_fn_c_check_type "$LINENO" "struct kvm_cpuid2" "ac_cv_type_struct_kvm_cpuid2" "#include <linux/kvm.h>
 "
-if test "x$ac_cv_type_struct_kvm_cpuid2" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_CONF_ARP_ANNOUNCE" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_KVM_CPUID2 1
+#define HAVE_DECL_NET_IPV4_CONF_ARP_ANNOUNCE $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_CONF_ARP_IGNORE" "ac_cv_have_decl_NET_IPV4_CONF_ARP_IGNORE" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_type "$LINENO" "struct kvm_regs" "ac_cv_type_struct_kvm_regs" "#include <linux/kvm.h>
 "
-if test "x$ac_cv_type_struct_kvm_regs" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_CONF_ARP_IGNORE" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_KVM_REGS 1
+#define HAVE_DECL_NET_IPV4_CONF_ARP_IGNORE $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_CONF_PROMOTE_SECONDARIES" "ac_cv_have_decl_NET_IPV4_CONF_PROMOTE_SECONDARIES" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_type "$LINENO" "struct kvm_sregs" "ac_cv_type_struct_kvm_sregs" "#include <linux/kvm.h>
 "
-if test "x$ac_cv_type_struct_kvm_sregs" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_CONF_PROMOTE_SECONDARIES" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_KVM_SREGS 1
+#define HAVE_DECL_NET_IPV4_CONF_PROMOTE_SECONDARIES $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_CONF_ARP_ACCEPT" "ac_cv_have_decl_NET_IPV4_CONF_ARP_ACCEPT" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_type "$LINENO" "struct kvm_userspace_memory_region" "ac_cv_type_struct_kvm_userspace_memory_region" "#include <linux/kvm.h>
 "
-if test "x$ac_cv_type_struct_kvm_userspace_memory_region" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_CONF_ARP_ACCEPT" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_KVM_USERSPACE_MEMORY_REGION 1
+#define HAVE_DECL_NET_IPV4_CONF_ARP_ACCEPT $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_CONF_ARP_NOTIFY" "ac_cv_have_decl_NET_IPV4_CONF_ARP_NOTIFY" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
+"
+if test "x$ac_cv_have_decl_NET_IPV4_CONF_ARP_NOTIFY" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_NET_IPV4_CONF_ARP_NOTIFY $ac_have_decl
+_ACEOF
 
-saved_CPPFLAGS="$CPPFLAGS"
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether <linux/signal.h> can be used along with <signal.h>" >&5
-$as_echo_n "checking whether <linux/signal.h> can be used along with <signal.h>... " >&6; }
-if ${st_cv_linux_signal+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_ROUTE_FLUSH" "ac_cv_have_decl_NET_IPV4_ROUTE_FLUSH" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-#include <signal.h>
-#include <linux/signal.h>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  st_cv_linux_signal=yes
+"
+if test "x$ac_cv_have_decl_NET_IPV4_ROUTE_FLUSH" = xyes; then :
+  ac_have_decl=1
 else
-  st_cv_linux_signal=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $st_cv_linux_signal" >&5
-$as_echo "$st_cv_linux_signal" >&6; }
-if test "x$st_cv_linux_signal" = xno; then
-       mkdir -p linux/linux
-       cp $srcdir/linux/signal.h.in linux/linux/signal.h
-       CPPFLAGS="$CPPFLAGS -Ilinux"
+  ac_have_decl=0
 fi
 
-ac_fn_c_check_type "$LINENO" "struct __aio_sigset" "ac_cv_type_struct___aio_sigset" "#include <linux/aio_abi.h>
-"
-if test "x$ac_cv_type_struct___aio_sigset" = xyes; then :
-
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT___AIO_SIGSET 1
+#define HAVE_DECL_NET_IPV4_ROUTE_FLUSH $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_ROUTE_MIN_DELAY" "ac_cv_have_decl_NET_IPV4_ROUTE_MIN_DELAY" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
+"
+if test "x$ac_cv_have_decl_NET_IPV4_ROUTE_MIN_DELAY" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
 
-
-CPPFLAGS="$saved_CPPFLAGS"
-
-for ac_header in linux/btrfs.h
-do :
-  ac_fn_c_check_header_mongrel "$LINENO" "linux/btrfs.h" "ac_cv_header_linux_btrfs_h" "$ac_includes_default"
-if test "x$ac_cv_header_linux_btrfs_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LINUX_BTRFS_H 1
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_NET_IPV4_ROUTE_MIN_DELAY $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_ROUTE_MAX_DELAY" "ac_cv_have_decl_NET_IPV4_ROUTE_MAX_DELAY" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-       ac_fn_c_check_member "$LINENO" "struct btrfs_ioctl_feature_flags" "compat_flags" "ac_cv_member_struct_btrfs_ioctl_feature_flags_compat_flags" " #include <stdio.h>
-#include <linux/btrfs.h>
 "
-if test "x$ac_cv_member_struct_btrfs_ioctl_feature_flags_compat_flags" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_ROUTE_MAX_DELAY" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BTRFS_IOCTL_FEATURE_FLAGS_COMPAT_FLAGS 1
+#define HAVE_DECL_NET_IPV4_ROUTE_MAX_DELAY $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_ROUTE_GC_THRESH" "ac_cv_have_decl_NET_IPV4_ROUTE_GC_THRESH" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct btrfs_ioctl_fs_info_args" "nodesize" "ac_cv_member_struct_btrfs_ioctl_fs_info_args_nodesize" " #include <stdio.h>
-#include <linux/btrfs.h>
 "
-if test "x$ac_cv_member_struct_btrfs_ioctl_fs_info_args_nodesize" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_ROUTE_GC_THRESH" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BTRFS_IOCTL_FS_INFO_ARGS_NODESIZE 1
+#define HAVE_DECL_NET_IPV4_ROUTE_GC_THRESH $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_ROUTE_MAX_SIZE" "ac_cv_have_decl_NET_IPV4_ROUTE_MAX_SIZE" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct btrfs_ioctl_defrag_range_args" "start" "ac_cv_member_struct_btrfs_ioctl_defrag_range_args_start" " #include <stdio.h>
-#include <linux/btrfs.h>
 "
-if test "x$ac_cv_member_struct_btrfs_ioctl_defrag_range_args_start" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_ROUTE_MAX_SIZE" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BTRFS_IOCTL_DEFRAG_RANGE_ARGS_START 1
+#define HAVE_DECL_NET_IPV4_ROUTE_MAX_SIZE $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_ROUTE_GC_MIN_INTERVAL" "ac_cv_have_decl_NET_IPV4_ROUTE_GC_MIN_INTERVAL" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct btrfs_ioctl_search_args_v2" "buf_size" "ac_cv_member_struct_btrfs_ioctl_search_args_v2_buf_size" " #include <stdio.h>
-#include <linux/btrfs.h>
 "
-if test "x$ac_cv_member_struct_btrfs_ioctl_search_args_v2_buf_size" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_ROUTE_GC_MIN_INTERVAL" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BTRFS_IOCTL_SEARCH_ARGS_V2_BUF_SIZE 1
+#define HAVE_DECL_NET_IPV4_ROUTE_GC_MIN_INTERVAL $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_ROUTE_GC_TIMEOUT" "ac_cv_have_decl_NET_IPV4_ROUTE_GC_TIMEOUT" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-ac_fn_c_check_member "$LINENO" "struct btrfs_ioctl_logical_ino_args" "flags" "ac_cv_member_struct_btrfs_ioctl_logical_ino_args_flags" " #include <stdio.h>
-#include <linux/btrfs.h>
 "
-if test "x$ac_cv_member_struct_btrfs_ioctl_logical_ino_args_flags" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_ROUTE_GC_TIMEOUT" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_BTRFS_IOCTL_LOGICAL_INO_ARGS_FLAGS 1
+#define HAVE_DECL_NET_IPV4_ROUTE_GC_TIMEOUT $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_ROUTE_GC_INTERVAL" "ac_cv_have_decl_NET_IPV4_ROUTE_GC_INTERVAL" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-fi
-
-       ac_fn_c_check_decl "$LINENO" "BTRFS_COMPRESS_NONE" "ac_cv_have_decl_BTRFS_COMPRESS_NONE" " #include <stdio.h>
-#include <linux/btrfs.h>
 "
-if test "x$ac_cv_have_decl_BTRFS_COMPRESS_NONE" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_ROUTE_GC_INTERVAL" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_BTRFS_COMPRESS_NONE $ac_have_decl
+#define HAVE_DECL_NET_IPV4_ROUTE_GC_INTERVAL $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "BTRFS_COMPRESS_ZLIB" "ac_cv_have_decl_BTRFS_COMPRESS_ZLIB" " #include <stdio.h>
-#include <linux/btrfs.h>
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_ROUTE_REDIRECT_LOAD" "ac_cv_have_decl_NET_IPV4_ROUTE_REDIRECT_LOAD" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_BTRFS_COMPRESS_ZLIB" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_ROUTE_REDIRECT_LOAD" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_BTRFS_COMPRESS_ZLIB $ac_have_decl
+#define HAVE_DECL_NET_IPV4_ROUTE_REDIRECT_LOAD $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "BTRFS_COMPRESS_LZO" "ac_cv_have_decl_BTRFS_COMPRESS_LZO" " #include <stdio.h>
-#include <linux/btrfs.h>
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_ROUTE_REDIRECT_NUMBER" "ac_cv_have_decl_NET_IPV4_ROUTE_REDIRECT_NUMBER" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_BTRFS_COMPRESS_LZO" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_ROUTE_REDIRECT_NUMBER" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_BTRFS_COMPRESS_LZO $ac_have_decl
+#define HAVE_DECL_NET_IPV4_ROUTE_REDIRECT_NUMBER $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_ROUTE_REDIRECT_SILENCE" "ac_cv_have_decl_NET_IPV4_ROUTE_REDIRECT_SILENCE" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
+"
+if test "x$ac_cv_have_decl_NET_IPV4_ROUTE_REDIRECT_SILENCE" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
 fi
 
-done
-
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_NET_IPV4_ROUTE_REDIRECT_SILENCE $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_ROUTE_ERROR_COST" "ac_cv_have_decl_NET_IPV4_ROUTE_ERROR_COST" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-ac_fn_c_check_decl "$LINENO" "sys_errlist" "ac_cv_have_decl_sys_errlist" "$ac_includes_default"
-if test "x$ac_cv_have_decl_sys_errlist" = xyes; then :
+"
+if test "x$ac_cv_have_decl_NET_IPV4_ROUTE_ERROR_COST" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_SYS_ERRLIST $ac_have_decl
+#define HAVE_DECL_NET_IPV4_ROUTE_ERROR_COST $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_ROUTE_ERROR_BURST" "ac_cv_have_decl_NET_IPV4_ROUTE_ERROR_BURST" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-ac_fn_c_check_decl "$LINENO" "PTRACE_PEEKUSER" "ac_cv_have_decl_PTRACE_PEEKUSER" "#include <sys/ptrace.h>
 "
-if test "x$ac_cv_have_decl_PTRACE_PEEKUSER" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_ROUTE_ERROR_BURST" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_PTRACE_PEEKUSER $ac_have_decl
+#define HAVE_DECL_NET_IPV4_ROUTE_ERROR_BURST $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "PTRACE_POKEUSER" "ac_cv_have_decl_PTRACE_POKEUSER" "#include <sys/ptrace.h>
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_ROUTE_GC_ELASTICITY" "ac_cv_have_decl_NET_IPV4_ROUTE_GC_ELASTICITY" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_PTRACE_POKEUSER" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_ROUTE_GC_ELASTICITY" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_PTRACE_POKEUSER $ac_have_decl
+#define HAVE_DECL_NET_IPV4_ROUTE_GC_ELASTICITY $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_ROUTE_MTU_EXPIRES" "ac_cv_have_decl_NET_IPV4_ROUTE_MTU_EXPIRES" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-ac_fn_c_check_decl "$LINENO" "P_PID" "ac_cv_have_decl_P_PID" "#include <sys/wait.h>
 "
-if test "x$ac_cv_have_decl_P_PID" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_ROUTE_MTU_EXPIRES" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_P_PID $ac_have_decl
+#define HAVE_DECL_NET_IPV4_ROUTE_MTU_EXPIRES $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "P_PPID" "ac_cv_have_decl_P_PPID" "#include <sys/wait.h>
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_ROUTE_MIN_PMTU" "ac_cv_have_decl_NET_IPV4_ROUTE_MIN_PMTU" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_P_PPID" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_ROUTE_MIN_PMTU" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_P_PPID $ac_have_decl
+#define HAVE_DECL_NET_IPV4_ROUTE_MIN_PMTU $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "P_PGID" "ac_cv_have_decl_P_PGID" "#include <sys/wait.h>
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_ROUTE_MIN_ADVMSS" "ac_cv_have_decl_NET_IPV4_ROUTE_MIN_ADVMSS" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_P_PGID" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_ROUTE_MIN_ADVMSS" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_P_PGID $ac_have_decl
+#define HAVE_DECL_NET_IPV4_ROUTE_MIN_ADVMSS $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "P_SID" "ac_cv_have_decl_P_SID" "#include <sys/wait.h>
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_ROUTE_SECRET_INTERVAL" "ac_cv_have_decl_NET_IPV4_ROUTE_SECRET_INTERVAL" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_P_SID" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_ROUTE_SECRET_INTERVAL" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_P_SID $ac_have_decl
+#define HAVE_DECL_NET_IPV4_ROUTE_SECRET_INTERVAL $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "P_CID" "ac_cv_have_decl_P_CID" "#include <sys/wait.h>
+ac_fn_c_check_decl "$LINENO" "NET_IPV4_ROUTE_GC_MIN_INTERVAL_MS" "ac_cv_have_decl_NET_IPV4_ROUTE_GC_MIN_INTERVAL_MS" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_P_CID" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV4_ROUTE_GC_MIN_INTERVAL_MS" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_P_CID $ac_have_decl
+#define HAVE_DECL_NET_IPV4_ROUTE_GC_MIN_INTERVAL_MS $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "P_UID" "ac_cv_have_decl_P_UID" "#include <sys/wait.h>
+
+
+ac_fn_c_check_decl "$LINENO" "NET_IPV6_CONF" "ac_cv_have_decl_NET_IPV6_CONF" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_P_UID" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV6_CONF" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_P_UID $ac_have_decl
+#define HAVE_DECL_NET_IPV6_CONF $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "P_GID" "ac_cv_have_decl_P_GID" "#include <sys/wait.h>
+ac_fn_c_check_decl "$LINENO" "NET_IPV6_NEIGH" "ac_cv_have_decl_NET_IPV6_NEIGH" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_P_GID" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV6_NEIGH" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_P_GID $ac_have_decl
+#define HAVE_DECL_NET_IPV6_NEIGH $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "P_ALL" "ac_cv_have_decl_P_ALL" "#include <sys/wait.h>
+ac_fn_c_check_decl "$LINENO" "NET_IPV6_ROUTE" "ac_cv_have_decl_NET_IPV6_ROUTE" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_P_ALL" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV6_ROUTE" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_P_ALL $ac_have_decl
+#define HAVE_DECL_NET_IPV6_ROUTE $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "P_LWPID" "ac_cv_have_decl_P_LWPID" "#include <sys/wait.h>
+ac_fn_c_check_decl "$LINENO" "NET_IPV6_ICMP" "ac_cv_have_decl_NET_IPV6_ICMP" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_P_LWPID" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV6_ICMP" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_P_LWPID $ac_have_decl
+#define HAVE_DECL_NET_IPV6_ICMP $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "NET_IPV6_BINDV6ONLY" "ac_cv_have_decl_NET_IPV6_BINDV6ONLY" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
 
-
-ac_fn_c_check_decl "$LINENO" "LO_FLAGS_READ_ONLY" "ac_cv_have_decl_LO_FLAGS_READ_ONLY" "#include <linux/loop.h>
 "
-if test "x$ac_cv_have_decl_LO_FLAGS_READ_ONLY" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV6_BINDV6ONLY" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_LO_FLAGS_READ_ONLY $ac_have_decl
+#define HAVE_DECL_NET_IPV6_BINDV6ONLY $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "LO_FLAGS_USE_AOPS" "ac_cv_have_decl_LO_FLAGS_USE_AOPS" "#include <linux/loop.h>
+ac_fn_c_check_decl "$LINENO" "NET_IPV6_IP6FRAG_HIGH_THRESH" "ac_cv_have_decl_NET_IPV6_IP6FRAG_HIGH_THRESH" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_LO_FLAGS_USE_AOPS" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV6_IP6FRAG_HIGH_THRESH" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_LO_FLAGS_USE_AOPS $ac_have_decl
+#define HAVE_DECL_NET_IPV6_IP6FRAG_HIGH_THRESH $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "LO_FLAGS_AUTOCLEAR" "ac_cv_have_decl_LO_FLAGS_AUTOCLEAR" "#include <linux/loop.h>
+ac_fn_c_check_decl "$LINENO" "NET_IPV6_IP6FRAG_LOW_THRESH" "ac_cv_have_decl_NET_IPV6_IP6FRAG_LOW_THRESH" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_LO_FLAGS_AUTOCLEAR" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV6_IP6FRAG_LOW_THRESH" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_LO_FLAGS_AUTOCLEAR $ac_have_decl
+#define HAVE_DECL_NET_IPV6_IP6FRAG_LOW_THRESH $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "LO_FLAGS_PARTSCAN" "ac_cv_have_decl_LO_FLAGS_PARTSCAN" "#include <linux/loop.h>
+ac_fn_c_check_decl "$LINENO" "NET_IPV6_IP6FRAG_TIME" "ac_cv_have_decl_NET_IPV6_IP6FRAG_TIME" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_LO_FLAGS_PARTSCAN" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV6_IP6FRAG_TIME" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_LO_FLAGS_PARTSCAN $ac_have_decl
+#define HAVE_DECL_NET_IPV6_IP6FRAG_TIME $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "LO_FLAGS_DIRECT_IO" "ac_cv_have_decl_LO_FLAGS_DIRECT_IO" "#include <linux/loop.h>
+ac_fn_c_check_decl "$LINENO" "NET_IPV6_IP6FRAG_SECRET_INTERVAL" "ac_cv_have_decl_NET_IPV6_IP6FRAG_SECRET_INTERVAL" "
+#include <sys/types.h>
+#include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_LO_FLAGS_DIRECT_IO" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV6_IP6FRAG_SECRET_INTERVAL" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_LO_FLAGS_DIRECT_IO $ac_have_decl
+#define HAVE_DECL_NET_IPV6_IP6FRAG_SECRET_INTERVAL $ac_have_decl
 _ACEOF
-
-
-ac_fn_c_check_decl "$LINENO" "CTL_PROC" "ac_cv_have_decl_CTL_PROC" "#include <sys/types.h>
+ac_fn_c_check_decl "$LINENO" "NET_IPV6_MLD_MAX_MSF" "ac_cv_have_decl_NET_IPV6_MLD_MAX_MSF" "
+#include <sys/types.h>
 #include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_CTL_PROC" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV6_MLD_MAX_MSF" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_CTL_PROC $ac_have_decl
+#define HAVE_DECL_NET_IPV6_MLD_MAX_MSF $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "CTL_ARLAN" "ac_cv_have_decl_CTL_ARLAN" "#include <sys/types.h>
+
+
+ac_fn_c_check_decl "$LINENO" "NET_IPV6_ROUTE_FLUSH" "ac_cv_have_decl_NET_IPV6_ROUTE_FLUSH" "
+#include <sys/types.h>
 #include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_CTL_ARLAN" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV6_ROUTE_FLUSH" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_CTL_ARLAN $ac_have_decl
+#define HAVE_DECL_NET_IPV6_ROUTE_FLUSH $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "CTL_S390DBF" "ac_cv_have_decl_CTL_S390DBF" "#include <sys/types.h>
+ac_fn_c_check_decl "$LINENO" "NET_IPV6_ROUTE_GC_THRESH" "ac_cv_have_decl_NET_IPV6_ROUTE_GC_THRESH" "
+#include <sys/types.h>
 #include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_CTL_S390DBF" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV6_ROUTE_GC_THRESH" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_CTL_S390DBF $ac_have_decl
+#define HAVE_DECL_NET_IPV6_ROUTE_GC_THRESH $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "CTL_SUNRPC" "ac_cv_have_decl_CTL_SUNRPC" "#include <sys/types.h>
+ac_fn_c_check_decl "$LINENO" "NET_IPV6_ROUTE_MAX_SIZE" "ac_cv_have_decl_NET_IPV6_ROUTE_MAX_SIZE" "
+#include <sys/types.h>
 #include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_CTL_SUNRPC" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV6_ROUTE_MAX_SIZE" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_CTL_SUNRPC $ac_have_decl
+#define HAVE_DECL_NET_IPV6_ROUTE_MAX_SIZE $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "CTL_PM" "ac_cv_have_decl_CTL_PM" "#include <sys/types.h>
+ac_fn_c_check_decl "$LINENO" "NET_IPV6_ROUTE_GC_MIN_INTERVAL" "ac_cv_have_decl_NET_IPV6_ROUTE_GC_MIN_INTERVAL" "
+#include <sys/types.h>
 #include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_CTL_PM" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV6_ROUTE_GC_MIN_INTERVAL" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_CTL_PM $ac_have_decl
+#define HAVE_DECL_NET_IPV6_ROUTE_GC_MIN_INTERVAL $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "CTL_FRV" "ac_cv_have_decl_CTL_FRV" "#include <sys/types.h>
+ac_fn_c_check_decl "$LINENO" "NET_IPV6_ROUTE_GC_TIMEOUT" "ac_cv_have_decl_NET_IPV6_ROUTE_GC_TIMEOUT" "
+#include <sys/types.h>
 #include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_CTL_FRV" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV6_ROUTE_GC_TIMEOUT" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_CTL_FRV $ac_have_decl
+#define HAVE_DECL_NET_IPV6_ROUTE_GC_TIMEOUT $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "KERN_PRINTK_RATELIMIT" "ac_cv_have_decl_KERN_PRINTK_RATELIMIT" "#include <sys/types.h>
+ac_fn_c_check_decl "$LINENO" "NET_IPV6_ROUTE_GC_INTERVAL" "ac_cv_have_decl_NET_IPV6_ROUTE_GC_INTERVAL" "
+#include <sys/types.h>
 #include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_KERN_PRINTK_RATELIMIT" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV6_ROUTE_GC_INTERVAL" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_KERN_PRINTK_RATELIMIT $ac_have_decl
+#define HAVE_DECL_NET_IPV6_ROUTE_GC_INTERVAL $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "KERN_PRINTK_RATELIMIT_BURST" "ac_cv_have_decl_KERN_PRINTK_RATELIMIT_BURST" "#include <sys/types.h>
+ac_fn_c_check_decl "$LINENO" "NET_IPV6_ROUTE_GC_ELASTICITY" "ac_cv_have_decl_NET_IPV6_ROUTE_GC_ELASTICITY" "
+#include <sys/types.h>
 #include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_KERN_PRINTK_RATELIMIT_BURST" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV6_ROUTE_GC_ELASTICITY" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_KERN_PRINTK_RATELIMIT_BURST $ac_have_decl
+#define HAVE_DECL_NET_IPV6_ROUTE_GC_ELASTICITY $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "KERN_PTY" "ac_cv_have_decl_KERN_PTY" "#include <sys/types.h>
+ac_fn_c_check_decl "$LINENO" "NET_IPV6_ROUTE_MTU_EXPIRES" "ac_cv_have_decl_NET_IPV6_ROUTE_MTU_EXPIRES" "
+#include <sys/types.h>
 #include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_KERN_PTY" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV6_ROUTE_MTU_EXPIRES" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_KERN_PTY $ac_have_decl
+#define HAVE_DECL_NET_IPV6_ROUTE_MTU_EXPIRES $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "KERN_NGROUPS_MAX" "ac_cv_have_decl_KERN_NGROUPS_MAX" "#include <sys/types.h>
+ac_fn_c_check_decl "$LINENO" "NET_IPV6_ROUTE_MIN_ADVMSS" "ac_cv_have_decl_NET_IPV6_ROUTE_MIN_ADVMSS" "
+#include <sys/types.h>
 #include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_KERN_NGROUPS_MAX" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV6_ROUTE_MIN_ADVMSS" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_KERN_NGROUPS_MAX $ac_have_decl
+#define HAVE_DECL_NET_IPV6_ROUTE_MIN_ADVMSS $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "KERN_SPARC_SCONS_PWROFF" "ac_cv_have_decl_KERN_SPARC_SCONS_PWROFF" "#include <sys/types.h>
+ac_fn_c_check_decl "$LINENO" "NET_IPV6_ROUTE_GC_MIN_INTERVAL_MS" "ac_cv_have_decl_NET_IPV6_ROUTE_GC_MIN_INTERVAL_MS" "
+#include <sys/types.h>
 #include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_KERN_SPARC_SCONS_PWROFF" = xyes; then :
+if test "x$ac_cv_have_decl_NET_IPV6_ROUTE_GC_MIN_INTERVAL_MS" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_KERN_SPARC_SCONS_PWROFF $ac_have_decl
+#define HAVE_DECL_NET_IPV6_ROUTE_GC_MIN_INTERVAL_MS $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "KERN_HZ_TIMER" "ac_cv_have_decl_KERN_HZ_TIMER" "#include <sys/types.h>
+
+
+ac_fn_c_check_decl "$LINENO" "NET_UNIX_DESTROY_DELAY" "ac_cv_have_decl_NET_UNIX_DESTROY_DELAY" "
+#include <sys/types.h>
 #include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_KERN_HZ_TIMER" = xyes; then :
+if test "x$ac_cv_have_decl_NET_UNIX_DESTROY_DELAY" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_KERN_HZ_TIMER $ac_have_decl
+#define HAVE_DECL_NET_UNIX_DESTROY_DELAY $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "KERN_UNKNOWN_NMI_PANIC" "ac_cv_have_decl_KERN_UNKNOWN_NMI_PANIC" "#include <sys/types.h>
+ac_fn_c_check_decl "$LINENO" "NET_UNIX_DELETE_DELAY" "ac_cv_have_decl_NET_UNIX_DELETE_DELAY" "
+#include <sys/types.h>
 #include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_KERN_UNKNOWN_NMI_PANIC" = xyes; then :
+if test "x$ac_cv_have_decl_NET_UNIX_DELETE_DELAY" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_KERN_UNKNOWN_NMI_PANIC $ac_have_decl
+#define HAVE_DECL_NET_UNIX_DELETE_DELAY $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "KERN_BOOTLOADER_TYPE" "ac_cv_have_decl_KERN_BOOTLOADER_TYPE" "#include <sys/types.h>
+ac_fn_c_check_decl "$LINENO" "NET_UNIX_MAX_DGRAM_QLEN" "ac_cv_have_decl_NET_UNIX_MAX_DGRAM_QLEN" "
+#include <sys/types.h>
 #include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_KERN_BOOTLOADER_TYPE" = xyes; then :
+if test "x$ac_cv_have_decl_NET_UNIX_MAX_DGRAM_QLEN" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_KERN_BOOTLOADER_TYPE $ac_have_decl
+#define HAVE_DECL_NET_UNIX_MAX_DGRAM_QLEN $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "KERN_RANDOMIZE" "ac_cv_have_decl_KERN_RANDOMIZE" "#include <sys/types.h>
+
+
+ac_fn_c_check_decl "$LINENO" "CTL_KERN" "ac_cv_have_decl_CTL_KERN" "
+#include <sys/types.h>
 #include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_KERN_RANDOMIZE" = xyes; then :
+if test "x$ac_cv_have_decl_CTL_KERN" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_KERN_RANDOMIZE $ac_have_decl
+#define HAVE_DECL_CTL_KERN $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "KERN_SETUID_DUMPABLE" "ac_cv_have_decl_KERN_SETUID_DUMPABLE" "#include <sys/types.h>
+ac_fn_c_check_decl "$LINENO" "CTL_VM" "ac_cv_have_decl_CTL_VM" "
+#include <sys/types.h>
 #include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_KERN_SETUID_DUMPABLE" = xyes; then :
+if test "x$ac_cv_have_decl_CTL_VM" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_KERN_SETUID_DUMPABLE $ac_have_decl
+#define HAVE_DECL_CTL_VM $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "KERN_SPIN_RETRY" "ac_cv_have_decl_KERN_SPIN_RETRY" "#include <sys/types.h>
+ac_fn_c_check_decl "$LINENO" "CTL_NET" "ac_cv_have_decl_CTL_NET" "
+#include <sys/types.h>
 #include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_KERN_SPIN_RETRY" = xyes; then :
+if test "x$ac_cv_have_decl_CTL_NET" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_KERN_SPIN_RETRY $ac_have_decl
+#define HAVE_DECL_CTL_NET $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "KERN_ACPI_VIDEO_FLAGS" "ac_cv_have_decl_KERN_ACPI_VIDEO_FLAGS" "#include <sys/types.h>
+ac_fn_c_check_decl "$LINENO" "CTL_FS" "ac_cv_have_decl_CTL_FS" "
+#include <sys/types.h>
 #include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_KERN_ACPI_VIDEO_FLAGS" = xyes; then :
+if test "x$ac_cv_have_decl_CTL_FS" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_KERN_ACPI_VIDEO_FLAGS $ac_have_decl
+#define HAVE_DECL_CTL_FS $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "KERN_IA64_UNALIGNED" "ac_cv_have_decl_KERN_IA64_UNALIGNED" "#include <sys/types.h>
+ac_fn_c_check_decl "$LINENO" "CTL_DEBUG" "ac_cv_have_decl_CTL_DEBUG" "
+#include <sys/types.h>
 #include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_KERN_IA64_UNALIGNED" = xyes; then :
+if test "x$ac_cv_have_decl_CTL_DEBUG" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_KERN_IA64_UNALIGNED $ac_have_decl
+#define HAVE_DECL_CTL_DEBUG $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "KERN_COMPAT_LOG" "ac_cv_have_decl_KERN_COMPAT_LOG" "#include <sys/types.h>
+ac_fn_c_check_decl "$LINENO" "CTL_DEV" "ac_cv_have_decl_CTL_DEV" "
+#include <sys/types.h>
 #include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_KERN_COMPAT_LOG" = xyes; then :
+if test "x$ac_cv_have_decl_CTL_DEV" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_KERN_COMPAT_LOG $ac_have_decl
+#define HAVE_DECL_CTL_DEV $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "KERN_MAX_LOCK_DEPTH" "ac_cv_have_decl_KERN_MAX_LOCK_DEPTH" "#include <sys/types.h>
+ac_fn_c_check_decl "$LINENO" "CTL_BUS" "ac_cv_have_decl_CTL_BUS" "
+#include <sys/types.h>
 #include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_KERN_MAX_LOCK_DEPTH" = xyes; then :
+if test "x$ac_cv_have_decl_CTL_BUS" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_KERN_MAX_LOCK_DEPTH $ac_have_decl
+#define HAVE_DECL_CTL_BUS $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "KERN_NMI_WATCHDOG" "ac_cv_have_decl_KERN_NMI_WATCHDOG" "#include <sys/types.h>
+ac_fn_c_check_decl "$LINENO" "CTL_ABI" "ac_cv_have_decl_CTL_ABI" "
+#include <sys/types.h>
 #include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_KERN_NMI_WATCHDOG" = xyes; then :
+if test "x$ac_cv_have_decl_CTL_ABI" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_KERN_NMI_WATCHDOG $ac_have_decl
+#define HAVE_DECL_CTL_ABI $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "KERN_PANIC_ON_NMI" "ac_cv_have_decl_KERN_PANIC_ON_NMI" "#include <sys/types.h>
+ac_fn_c_check_decl "$LINENO" "CTL_CPU" "ac_cv_have_decl_CTL_CPU" "
+#include <sys/types.h>
 #include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_KERN_PANIC_ON_NMI" = xyes; then :
+if test "x$ac_cv_have_decl_CTL_CPU" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_KERN_PANIC_ON_NMI $ac_have_decl
+#define HAVE_DECL_CTL_CPU $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "KERN_PANIC_ON_WARN" "ac_cv_have_decl_KERN_PANIC_ON_WARN" "#include <sys/types.h>
+ac_fn_c_check_decl "$LINENO" "CTL_PROC" "ac_cv_have_decl_CTL_PROC" "
+#include <sys/types.h>
 #include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_KERN_PANIC_ON_WARN" = xyes; then :
+if test "x$ac_cv_have_decl_CTL_PROC" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_KERN_PANIC_ON_WARN $ac_have_decl
+#define HAVE_DECL_CTL_PROC $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "KERN_PANIC_PRINT" "ac_cv_have_decl_KERN_PANIC_PRINT" "#include <sys/types.h>
+ac_fn_c_check_decl "$LINENO" "CTL_ARLAN" "ac_cv_have_decl_CTL_ARLAN" "
+#include <sys/types.h>
 #include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_KERN_PANIC_PRINT" = xyes; then :
+if test "x$ac_cv_have_decl_CTL_ARLAN" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_KERN_PANIC_PRINT $ac_have_decl
+#define HAVE_DECL_CTL_ARLAN $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "NET_LLC" "ac_cv_have_decl_NET_LLC" "#include <sys/types.h>
+ac_fn_c_check_decl "$LINENO" "CTL_S390DBF" "ac_cv_have_decl_CTL_S390DBF" "
+#include <sys/types.h>
 #include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_NET_LLC" = xyes; then :
+if test "x$ac_cv_have_decl_CTL_S390DBF" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_NET_LLC $ac_have_decl
+#define HAVE_DECL_CTL_S390DBF $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "NET_NETFILTER" "ac_cv_have_decl_NET_NETFILTER" "#include <sys/types.h>
+ac_fn_c_check_decl "$LINENO" "CTL_SUNRPC" "ac_cv_have_decl_CTL_SUNRPC" "
+#include <sys/types.h>
 #include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_NET_NETFILTER" = xyes; then :
+if test "x$ac_cv_have_decl_CTL_SUNRPC" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_NET_NETFILTER $ac_have_decl
+#define HAVE_DECL_CTL_SUNRPC $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "NET_DCCP" "ac_cv_have_decl_NET_DCCP" "#include <sys/types.h>
+ac_fn_c_check_decl "$LINENO" "CTL_PM" "ac_cv_have_decl_CTL_PM" "
+#include <sys/types.h>
 #include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_NET_DCCP" = xyes; then :
+if test "x$ac_cv_have_decl_CTL_PM" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_NET_DCCP $ac_have_decl
+#define HAVE_DECL_CTL_PM $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "NET_IRDA" "ac_cv_have_decl_NET_IRDA" "#include <sys/types.h>
+ac_fn_c_check_decl "$LINENO" "CTL_FRV" "ac_cv_have_decl_CTL_FRV" "
+#include <sys/types.h>
 #include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_NET_IRDA" = xyes; then :
+if test "x$ac_cv_have_decl_CTL_FRV" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_NET_IRDA $ac_have_decl
+#define HAVE_DECL_CTL_FRV $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "NET_CORE_DESTROY_DELAY" "ac_cv_have_decl_NET_CORE_DESTROY_DELAY" "#include <sys/types.h>
+
+
+ac_fn_c_check_decl "$LINENO" "VM_OVERCOMMIT_MEMORY" "ac_cv_have_decl_VM_OVERCOMMIT_MEMORY" "
+#include <sys/types.h>
 #include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_NET_CORE_DESTROY_DELAY" = xyes; then :
+if test "x$ac_cv_have_decl_VM_OVERCOMMIT_MEMORY" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_NET_CORE_DESTROY_DELAY $ac_have_decl
+#define HAVE_DECL_VM_OVERCOMMIT_MEMORY $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "NET_CORE_BUDGET" "ac_cv_have_decl_NET_CORE_BUDGET" "#include <sys/types.h>
+ac_fn_c_check_decl "$LINENO" "VM_PAGE_CLUSTER" "ac_cv_have_decl_VM_PAGE_CLUSTER" "
+#include <sys/types.h>
 #include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_NET_CORE_BUDGET" = xyes; then :
+if test "x$ac_cv_have_decl_VM_PAGE_CLUSTER" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_NET_CORE_BUDGET $ac_have_decl
+#define HAVE_DECL_VM_PAGE_CLUSTER $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "NET_CORE_AEVENT_ETIME" "ac_cv_have_decl_NET_CORE_AEVENT_ETIME" "#include <sys/types.h>
+ac_fn_c_check_decl "$LINENO" "VM_DIRTY_BACKGROUND" "ac_cv_have_decl_VM_DIRTY_BACKGROUND" "
+#include <sys/types.h>
 #include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_NET_CORE_AEVENT_ETIME" = xyes; then :
+if test "x$ac_cv_have_decl_VM_DIRTY_BACKGROUND" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_NET_CORE_AEVENT_ETIME $ac_have_decl
+#define HAVE_DECL_VM_DIRTY_BACKGROUND $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "NET_CORE_AEVENT_RSEQTH" "ac_cv_have_decl_NET_CORE_AEVENT_RSEQTH" "#include <sys/types.h>
+ac_fn_c_check_decl "$LINENO" "VM_DIRTY_RATIO" "ac_cv_have_decl_VM_DIRTY_RATIO" "
+#include <sys/types.h>
 #include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_NET_CORE_AEVENT_RSEQTH" = xyes; then :
+if test "x$ac_cv_have_decl_VM_DIRTY_RATIO" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_NET_CORE_AEVENT_RSEQTH $ac_have_decl
+#define HAVE_DECL_VM_DIRTY_RATIO $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "NET_CORE_WARNINGS" "ac_cv_have_decl_NET_CORE_WARNINGS" "#include <sys/types.h>
+ac_fn_c_check_decl "$LINENO" "VM_DIRTY_WB_CS" "ac_cv_have_decl_VM_DIRTY_WB_CS" "
+#include <sys/types.h>
 #include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_NET_CORE_WARNINGS" = xyes; then :
+if test "x$ac_cv_have_decl_VM_DIRTY_WB_CS" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_NET_CORE_WARNINGS $ac_have_decl
+#define HAVE_DECL_VM_DIRTY_WB_CS $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "NET_IPV4_IGMP_MAX_MSF" "ac_cv_have_decl_NET_IPV4_IGMP_MAX_MSF" "#include <sys/types.h>
+ac_fn_c_check_decl "$LINENO" "VM_DIRTY_EXPIRE_CS" "ac_cv_have_decl_VM_DIRTY_EXPIRE_CS" "
+#include <sys/types.h>
 #include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_NET_IPV4_IGMP_MAX_MSF" = xyes; then :
+if test "x$ac_cv_have_decl_VM_DIRTY_EXPIRE_CS" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_NET_IPV4_IGMP_MAX_MSF $ac_have_decl
+#define HAVE_DECL_VM_DIRTY_EXPIRE_CS $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "NET_TCP_NO_METRICS_SAVE" "ac_cv_have_decl_NET_TCP_NO_METRICS_SAVE" "#include <sys/types.h>
+ac_fn_c_check_decl "$LINENO" "VM_NR_PDFLUSH_THREADS" "ac_cv_have_decl_VM_NR_PDFLUSH_THREADS" "
+#include <sys/types.h>
 #include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_NET_TCP_NO_METRICS_SAVE" = xyes; then :
+if test "x$ac_cv_have_decl_VM_NR_PDFLUSH_THREADS" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_NET_TCP_NO_METRICS_SAVE $ac_have_decl
+#define HAVE_DECL_VM_NR_PDFLUSH_THREADS $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "NET_TCP_DEFAULT_WIN_SCALE" "ac_cv_have_decl_NET_TCP_DEFAULT_WIN_SCALE" "#include <sys/types.h>
+ac_fn_c_check_decl "$LINENO" "VM_OVERCOMMIT_RATIO" "ac_cv_have_decl_VM_OVERCOMMIT_RATIO" "
+#include <sys/types.h>
 #include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_NET_TCP_DEFAULT_WIN_SCALE" = xyes; then :
+if test "x$ac_cv_have_decl_VM_OVERCOMMIT_RATIO" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_NET_TCP_DEFAULT_WIN_SCALE $ac_have_decl
+#define HAVE_DECL_VM_OVERCOMMIT_RATIO $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "NET_TCP_MODERATE_RCVBUF" "ac_cv_have_decl_NET_TCP_MODERATE_RCVBUF" "#include <sys/types.h>
+ac_fn_c_check_decl "$LINENO" "VM_PAGEBUF" "ac_cv_have_decl_VM_PAGEBUF" "
+#include <sys/types.h>
 #include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_NET_TCP_MODERATE_RCVBUF" = xyes; then :
+if test "x$ac_cv_have_decl_VM_PAGEBUF" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_NET_TCP_MODERATE_RCVBUF $ac_have_decl
+#define HAVE_DECL_VM_PAGEBUF $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "NET_TCP_TSO_WIN_DIVISOR" "ac_cv_have_decl_NET_TCP_TSO_WIN_DIVISOR" "#include <sys/types.h>
+ac_fn_c_check_decl "$LINENO" "VM_HUGETLB_PAGES" "ac_cv_have_decl_VM_HUGETLB_PAGES" "
+#include <sys/types.h>
 #include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_NET_TCP_TSO_WIN_DIVISOR" = xyes; then :
+if test "x$ac_cv_have_decl_VM_HUGETLB_PAGES" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_NET_TCP_TSO_WIN_DIVISOR $ac_have_decl
+#define HAVE_DECL_VM_HUGETLB_PAGES $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "NET_TCP_BIC_BETA" "ac_cv_have_decl_NET_TCP_BIC_BETA" "#include <sys/types.h>
+ac_fn_c_check_decl "$LINENO" "VM_SWAPPINESS" "ac_cv_have_decl_VM_SWAPPINESS" "
+#include <sys/types.h>
 #include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_NET_TCP_BIC_BETA" = xyes; then :
+if test "x$ac_cv_have_decl_VM_SWAPPINESS" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_NET_TCP_BIC_BETA $ac_have_decl
+#define HAVE_DECL_VM_SWAPPINESS $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "NET_IPV4_ICMP_ERRORS_USE_INBOUND_IFADDR" "ac_cv_have_decl_NET_IPV4_ICMP_ERRORS_USE_INBOUND_IFADDR" "#include <sys/types.h>
+ac_fn_c_check_decl "$LINENO" "VM_LOWMEM_RESERVE_RATIO" "ac_cv_have_decl_VM_LOWMEM_RESERVE_RATIO" "
+#include <sys/types.h>
 #include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_NET_IPV4_ICMP_ERRORS_USE_INBOUND_IFADDR" = xyes; then :
+if test "x$ac_cv_have_decl_VM_LOWMEM_RESERVE_RATIO" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_NET_IPV4_ICMP_ERRORS_USE_INBOUND_IFADDR $ac_have_decl
+#define HAVE_DECL_VM_LOWMEM_RESERVE_RATIO $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "NET_TCP_CONG_CONTROL" "ac_cv_have_decl_NET_TCP_CONG_CONTROL" "#include <sys/types.h>
+ac_fn_c_check_decl "$LINENO" "VM_MIN_FREE_KBYTES" "ac_cv_have_decl_VM_MIN_FREE_KBYTES" "
+#include <sys/types.h>
 #include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_NET_TCP_CONG_CONTROL" = xyes; then :
+if test "x$ac_cv_have_decl_VM_MIN_FREE_KBYTES" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_NET_TCP_CONG_CONTROL $ac_have_decl
+#define HAVE_DECL_VM_MIN_FREE_KBYTES $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "NET_TCP_ABC" "ac_cv_have_decl_NET_TCP_ABC" "#include <sys/types.h>
+ac_fn_c_check_decl "$LINENO" "VM_MAX_MAP_COUNT" "ac_cv_have_decl_VM_MAX_MAP_COUNT" "
+#include <sys/types.h>
 #include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_NET_TCP_ABC" = xyes; then :
+if test "x$ac_cv_have_decl_VM_MAX_MAP_COUNT" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_NET_TCP_ABC $ac_have_decl
+#define HAVE_DECL_VM_MAX_MAP_COUNT $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "NET_IPV4_IPFRAG_MAX_DIST" "ac_cv_have_decl_NET_IPV4_IPFRAG_MAX_DIST" "#include <sys/types.h>
+ac_fn_c_check_decl "$LINENO" "VM_LAPTOP_MODE" "ac_cv_have_decl_VM_LAPTOP_MODE" "
+#include <sys/types.h>
 #include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_NET_IPV4_IPFRAG_MAX_DIST" = xyes; then :
+if test "x$ac_cv_have_decl_VM_LAPTOP_MODE" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_NET_IPV4_IPFRAG_MAX_DIST $ac_have_decl
+#define HAVE_DECL_VM_LAPTOP_MODE $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "NET_TCP_MTU_PROBING" "ac_cv_have_decl_NET_TCP_MTU_PROBING" "#include <sys/types.h>
+ac_fn_c_check_decl "$LINENO" "VM_BLOCK_DUMP" "ac_cv_have_decl_VM_BLOCK_DUMP" "
+#include <sys/types.h>
 #include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_NET_TCP_MTU_PROBING" = xyes; then :
+if test "x$ac_cv_have_decl_VM_BLOCK_DUMP" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_NET_TCP_MTU_PROBING $ac_have_decl
+#define HAVE_DECL_VM_BLOCK_DUMP $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "NET_TCP_BASE_MSS" "ac_cv_have_decl_NET_TCP_BASE_MSS" "#include <sys/types.h>
+ac_fn_c_check_decl "$LINENO" "VM_HUGETLB_GROUP" "ac_cv_have_decl_VM_HUGETLB_GROUP" "
+#include <sys/types.h>
 #include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_NET_TCP_BASE_MSS" = xyes; then :
+if test "x$ac_cv_have_decl_VM_HUGETLB_GROUP" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_NET_TCP_BASE_MSS $ac_have_decl
+#define HAVE_DECL_VM_HUGETLB_GROUP $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "NET_IPV4_TCP_WORKAROUND_SIGNED_WINDOWS" "ac_cv_have_decl_NET_IPV4_TCP_WORKAROUND_SIGNED_WINDOWS" "#include <sys/types.h>
+ac_fn_c_check_decl "$LINENO" "VM_VFS_CACHE_PRESSURE" "ac_cv_have_decl_VM_VFS_CACHE_PRESSURE" "
+#include <sys/types.h>
 #include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_NET_IPV4_TCP_WORKAROUND_SIGNED_WINDOWS" = xyes; then :
+if test "x$ac_cv_have_decl_VM_VFS_CACHE_PRESSURE" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_NET_IPV4_TCP_WORKAROUND_SIGNED_WINDOWS $ac_have_decl
+#define HAVE_DECL_VM_VFS_CACHE_PRESSURE $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "NET_TCP_DMA_COPYBREAK" "ac_cv_have_decl_NET_TCP_DMA_COPYBREAK" "#include <sys/types.h>
+ac_fn_c_check_decl "$LINENO" "VM_LEGACY_VA_LAYOUT" "ac_cv_have_decl_VM_LEGACY_VA_LAYOUT" "
+#include <sys/types.h>
 #include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_NET_TCP_DMA_COPYBREAK" = xyes; then :
+if test "x$ac_cv_have_decl_VM_LEGACY_VA_LAYOUT" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_NET_TCP_DMA_COPYBREAK $ac_have_decl
+#define HAVE_DECL_VM_LEGACY_VA_LAYOUT $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "NET_TCP_SLOW_START_AFTER_IDLE" "ac_cv_have_decl_NET_TCP_SLOW_START_AFTER_IDLE" "#include <sys/types.h>
+ac_fn_c_check_decl "$LINENO" "VM_SWAP_TOKEN_TIMEOUT" "ac_cv_have_decl_VM_SWAP_TOKEN_TIMEOUT" "
+#include <sys/types.h>
 #include <linux/sysctl.h>
+
 "
-if test "x$ac_cv_have_decl_NET_TCP_SLOW_START_AFTER_IDLE" = xyes; then :
+if test "x$ac_cv_have_decl_VM_SWAP_TOKEN_TIMEOUT" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_NET_TCP_SLOW_START_AFTER_IDLE $ac_have_decl
+#define HAVE_DECL_VM_SWAP_TOKEN_TIMEOUT $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "NET_CIPSOV4_CACHE_ENABLE" "ac_cv_have_decl_NET_CIPSOV4_CACHE_ENABLE" "#include <sys/types.h>
-#include <linux/sysctl.h>
+
+
+ac_fn_c_check_decl "$LINENO" "V4L2_BUF_TYPE_VIDEO_CAPTURE" "ac_cv_have_decl_V4L2_BUF_TYPE_VIDEO_CAPTURE" "
+#include <sys/time.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_NET_CIPSOV4_CACHE_ENABLE" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_BUF_TYPE_VIDEO_CAPTURE" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_NET_CIPSOV4_CACHE_ENABLE $ac_have_decl
+#define HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "NET_CIPSOV4_CACHE_BUCKET_SIZE" "ac_cv_have_decl_NET_CIPSOV4_CACHE_BUCKET_SIZE" "#include <sys/types.h>
-#include <linux/sysctl.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_BUF_TYPE_VIDEO_OUTPUT" "ac_cv_have_decl_V4L2_BUF_TYPE_VIDEO_OUTPUT" "
+#include <sys/time.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_NET_CIPSOV4_CACHE_BUCKET_SIZE" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_BUF_TYPE_VIDEO_OUTPUT" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_NET_CIPSOV4_CACHE_BUCKET_SIZE $ac_have_decl
+#define HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "NET_CIPSOV4_RBM_OPTFMT" "ac_cv_have_decl_NET_CIPSOV4_RBM_OPTFMT" "#include <sys/types.h>
-#include <linux/sysctl.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_BUF_TYPE_VIDEO_OVERLAY" "ac_cv_have_decl_V4L2_BUF_TYPE_VIDEO_OVERLAY" "
+#include <sys/time.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_NET_CIPSOV4_RBM_OPTFMT" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_BUF_TYPE_VIDEO_OVERLAY" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_NET_CIPSOV4_RBM_OPTFMT $ac_have_decl
+#define HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OVERLAY $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "NET_CIPSOV4_RBM_STRICTVALID" "ac_cv_have_decl_NET_CIPSOV4_RBM_STRICTVALID" "#include <sys/types.h>
-#include <linux/sysctl.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_BUF_TYPE_VBI_CAPTURE" "ac_cv_have_decl_V4L2_BUF_TYPE_VBI_CAPTURE" "
+#include <sys/time.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_NET_CIPSOV4_RBM_STRICTVALID" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_BUF_TYPE_VBI_CAPTURE" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_NET_CIPSOV4_RBM_STRICTVALID $ac_have_decl
+#define HAVE_DECL_V4L2_BUF_TYPE_VBI_CAPTURE $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "NET_TCP_AVAIL_CONG_CONTROL" "ac_cv_have_decl_NET_TCP_AVAIL_CONG_CONTROL" "#include <sys/types.h>
-#include <linux/sysctl.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_BUF_TYPE_VBI_OUTPUT" "ac_cv_have_decl_V4L2_BUF_TYPE_VBI_OUTPUT" "
+#include <sys/time.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_NET_TCP_AVAIL_CONG_CONTROL" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_BUF_TYPE_VBI_OUTPUT" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_NET_TCP_AVAIL_CONG_CONTROL $ac_have_decl
+#define HAVE_DECL_V4L2_BUF_TYPE_VBI_OUTPUT $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "NET_TCP_ALLOWED_CONG_CONTROL" "ac_cv_have_decl_NET_TCP_ALLOWED_CONG_CONTROL" "#include <sys/types.h>
-#include <linux/sysctl.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_BUF_TYPE_SLICED_VBI_CAPTURE" "ac_cv_have_decl_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE" "
+#include <sys/time.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_NET_TCP_ALLOWED_CONG_CONTROL" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_NET_TCP_ALLOWED_CONG_CONTROL $ac_have_decl
+#define HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "NET_TCP_MAX_SSTHRESH" "ac_cv_have_decl_NET_TCP_MAX_SSTHRESH" "#include <sys/types.h>
-#include <linux/sysctl.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_BUF_TYPE_SLICED_VBI_OUTPUT" "ac_cv_have_decl_V4L2_BUF_TYPE_SLICED_VBI_OUTPUT" "
+#include <sys/time.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_NET_TCP_MAX_SSTHRESH" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_BUF_TYPE_SLICED_VBI_OUTPUT" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_NET_TCP_MAX_SSTHRESH $ac_have_decl
+#define HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_OUTPUT $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "NET_TCP_FRTO_RESPONSE" "ac_cv_have_decl_NET_TCP_FRTO_RESPONSE" "#include <sys/types.h>
-#include <linux/sysctl.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY" "ac_cv_have_decl_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY" "
+#include <sys/time.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_NET_TCP_FRTO_RESPONSE" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_NET_TCP_FRTO_RESPONSE $ac_have_decl
+#define HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "NET_IPV4_ROUTE_GC_MIN_INTERVAL_MS" "ac_cv_have_decl_NET_IPV4_ROUTE_GC_MIN_INTERVAL_MS" "#include <sys/types.h>
-#include <linux/sysctl.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE" "ac_cv_have_decl_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE" "
+#include <sys/time.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_NET_IPV4_ROUTE_GC_MIN_INTERVAL_MS" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_NET_IPV4_ROUTE_GC_MIN_INTERVAL_MS $ac_have_decl
+#define HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "NET_IPV4_CONF_FORCE_IGMP_VERSION" "ac_cv_have_decl_NET_IPV4_CONF_FORCE_IGMP_VERSION" "#include <sys/types.h>
-#include <linux/sysctl.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE" "ac_cv_have_decl_V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE" "
+#include <sys/time.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_NET_IPV4_CONF_FORCE_IGMP_VERSION" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_NET_IPV4_CONF_FORCE_IGMP_VERSION $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "NET_IPV4_CONF_ARP_ANNOUNCE" "ac_cv_have_decl_NET_IPV4_CONF_ARP_ANNOUNCE" "#include <sys/types.h>
-#include <linux/sysctl.h>
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "V4L2_BUF_TYPE_SDR_CAPTURE" "ac_cv_have_decl_V4L2_BUF_TYPE_SDR_CAPTURE" "
+#include <sys/time.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_NET_IPV4_CONF_ARP_ANNOUNCE" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_BUF_TYPE_SDR_CAPTURE" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_NET_IPV4_CONF_ARP_ANNOUNCE $ac_have_decl
+#define HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "NET_IPV4_CONF_ARP_IGNORE" "ac_cv_have_decl_NET_IPV4_CONF_ARP_IGNORE" "#include <sys/types.h>
-#include <linux/sysctl.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_BUF_TYPE_SDR_OUTPUT" "ac_cv_have_decl_V4L2_BUF_TYPE_SDR_OUTPUT" "
+#include <sys/time.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_NET_IPV4_CONF_ARP_IGNORE" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_BUF_TYPE_SDR_OUTPUT" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_NET_IPV4_CONF_ARP_IGNORE $ac_have_decl
+#define HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "NET_IPV4_CONF_PROMOTE_SECONDARIES" "ac_cv_have_decl_NET_IPV4_CONF_PROMOTE_SECONDARIES" "#include <sys/types.h>
-#include <linux/sysctl.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_BUF_TYPE_META_CAPTURE" "ac_cv_have_decl_V4L2_BUF_TYPE_META_CAPTURE" "
+#include <sys/time.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_NET_IPV4_CONF_PROMOTE_SECONDARIES" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_BUF_TYPE_META_CAPTURE" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_NET_IPV4_CONF_PROMOTE_SECONDARIES $ac_have_decl
+#define HAVE_DECL_V4L2_BUF_TYPE_META_CAPTURE $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "NET_IPV4_CONF_ARP_ACCEPT" "ac_cv_have_decl_NET_IPV4_CONF_ARP_ACCEPT" "#include <sys/types.h>
-#include <linux/sysctl.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_BUF_TYPE_META_OUTPUT" "ac_cv_have_decl_V4L2_BUF_TYPE_META_OUTPUT" "
+#include <sys/time.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_NET_IPV4_CONF_ARP_ACCEPT" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_BUF_TYPE_META_OUTPUT" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_NET_IPV4_CONF_ARP_ACCEPT $ac_have_decl
+#define HAVE_DECL_V4L2_BUF_TYPE_META_OUTPUT $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "NET_IPV4_CONF_ARP_NOTIFY" "ac_cv_have_decl_NET_IPV4_CONF_ARP_NOTIFY" "#include <sys/types.h>
-#include <linux/sysctl.h>
+
+
+ac_fn_c_check_decl "$LINENO" "V4L2_COLORSPACE_DEFAULT" "ac_cv_have_decl_V4L2_COLORSPACE_DEFAULT" "
+#include <sys/time.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_NET_IPV4_CONF_ARP_NOTIFY" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_COLORSPACE_DEFAULT" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_NET_IPV4_CONF_ARP_NOTIFY $ac_have_decl
+#define HAVE_DECL_V4L2_COLORSPACE_DEFAULT $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "NET_IPV6_MLD_MAX_MSF" "ac_cv_have_decl_NET_IPV6_MLD_MAX_MSF" "#include <sys/types.h>
-#include <linux/sysctl.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_COLORSPACE_SMPTE170M" "ac_cv_have_decl_V4L2_COLORSPACE_SMPTE170M" "
+#include <sys/time.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_NET_IPV6_MLD_MAX_MSF" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_COLORSPACE_SMPTE170M" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_NET_IPV6_MLD_MAX_MSF $ac_have_decl
+#define HAVE_DECL_V4L2_COLORSPACE_SMPTE170M $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "NET_IPV6_ROUTE_GC_MIN_INTERVAL_MS" "ac_cv_have_decl_NET_IPV6_ROUTE_GC_MIN_INTERVAL_MS" "#include <sys/types.h>
-#include <linux/sysctl.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_COLORSPACE_SMPTE240M" "ac_cv_have_decl_V4L2_COLORSPACE_SMPTE240M" "
+#include <sys/time.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_NET_IPV6_ROUTE_GC_MIN_INTERVAL_MS" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_COLORSPACE_SMPTE240M" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_NET_IPV6_ROUTE_GC_MIN_INTERVAL_MS $ac_have_decl
+#define HAVE_DECL_V4L2_COLORSPACE_SMPTE240M $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "VM_MAX_MAP_COUNT" "ac_cv_have_decl_VM_MAX_MAP_COUNT" "#include <sys/types.h>
-#include <linux/sysctl.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_COLORSPACE_REC709" "ac_cv_have_decl_V4L2_COLORSPACE_REC709" "
+#include <sys/time.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_VM_MAX_MAP_COUNT" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_COLORSPACE_REC709" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_VM_MAX_MAP_COUNT $ac_have_decl
+#define HAVE_DECL_V4L2_COLORSPACE_REC709 $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "VM_LAPTOP_MODE" "ac_cv_have_decl_VM_LAPTOP_MODE" "#include <sys/types.h>
-#include <linux/sysctl.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_COLORSPACE_BT878" "ac_cv_have_decl_V4L2_COLORSPACE_BT878" "
+#include <sys/time.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_VM_LAPTOP_MODE" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_COLORSPACE_BT878" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_VM_LAPTOP_MODE $ac_have_decl
+#define HAVE_DECL_V4L2_COLORSPACE_BT878 $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "VM_BLOCK_DUMP" "ac_cv_have_decl_VM_BLOCK_DUMP" "#include <sys/types.h>
-#include <linux/sysctl.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_COLORSPACE_470_SYSTEM_M" "ac_cv_have_decl_V4L2_COLORSPACE_470_SYSTEM_M" "
+#include <sys/time.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_VM_BLOCK_DUMP" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_COLORSPACE_470_SYSTEM_M" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_VM_BLOCK_DUMP $ac_have_decl
+#define HAVE_DECL_V4L2_COLORSPACE_470_SYSTEM_M $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "VM_HUGETLB_GROUP" "ac_cv_have_decl_VM_HUGETLB_GROUP" "#include <sys/types.h>
-#include <linux/sysctl.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_COLORSPACE_470_SYSTEM_BG" "ac_cv_have_decl_V4L2_COLORSPACE_470_SYSTEM_BG" "
+#include <sys/time.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_VM_HUGETLB_GROUP" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_COLORSPACE_470_SYSTEM_BG" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_VM_HUGETLB_GROUP $ac_have_decl
+#define HAVE_DECL_V4L2_COLORSPACE_470_SYSTEM_BG $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "VM_VFS_CACHE_PRESSURE" "ac_cv_have_decl_VM_VFS_CACHE_PRESSURE" "#include <sys/types.h>
-#include <linux/sysctl.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_COLORSPACE_JPEG" "ac_cv_have_decl_V4L2_COLORSPACE_JPEG" "
+#include <sys/time.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_VM_VFS_CACHE_PRESSURE" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_COLORSPACE_JPEG" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_VM_VFS_CACHE_PRESSURE $ac_have_decl
+#define HAVE_DECL_V4L2_COLORSPACE_JPEG $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "VM_LEGACY_VA_LAYOUT" "ac_cv_have_decl_VM_LEGACY_VA_LAYOUT" "#include <sys/types.h>
-#include <linux/sysctl.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_COLORSPACE_SRGB" "ac_cv_have_decl_V4L2_COLORSPACE_SRGB" "
+#include <sys/time.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_VM_LEGACY_VA_LAYOUT" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_COLORSPACE_SRGB" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_VM_LEGACY_VA_LAYOUT $ac_have_decl
+#define HAVE_DECL_V4L2_COLORSPACE_SRGB $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "VM_SWAP_TOKEN_TIMEOUT" "ac_cv_have_decl_VM_SWAP_TOKEN_TIMEOUT" "#include <sys/types.h>
-#include <linux/sysctl.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_COLORSPACE_OPRGB" "ac_cv_have_decl_V4L2_COLORSPACE_OPRGB" "
+#include <sys/time.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_VM_SWAP_TOKEN_TIMEOUT" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_COLORSPACE_OPRGB" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_VM_SWAP_TOKEN_TIMEOUT $ac_have_decl
+#define HAVE_DECL_V4L2_COLORSPACE_OPRGB $ac_have_decl
 _ACEOF
-
-
-ac_fn_c_check_decl "$LINENO" "V4L2_FIELD_ANY" "ac_cv_have_decl_V4L2_FIELD_ANY" "#include <sys/time.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_COLORSPACE_BT2020" "ac_cv_have_decl_V4L2_COLORSPACE_BT2020" "
+#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_V4L2_FIELD_ANY" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_COLORSPACE_BT2020" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_FIELD_ANY $ac_have_decl
+#define HAVE_DECL_V4L2_COLORSPACE_BT2020 $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_FIELD_NONE" "ac_cv_have_decl_V4L2_FIELD_NONE" "#include <sys/time.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_COLORSPACE_RAW" "ac_cv_have_decl_V4L2_COLORSPACE_RAW" "
+#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_V4L2_FIELD_NONE" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_COLORSPACE_RAW" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_FIELD_NONE $ac_have_decl
+#define HAVE_DECL_V4L2_COLORSPACE_RAW $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_FIELD_TOP" "ac_cv_have_decl_V4L2_FIELD_TOP" "#include <sys/time.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_COLORSPACE_DCI_P3" "ac_cv_have_decl_V4L2_COLORSPACE_DCI_P3" "
+#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_V4L2_FIELD_TOP" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_COLORSPACE_DCI_P3" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_FIELD_TOP $ac_have_decl
+#define HAVE_DECL_V4L2_COLORSPACE_DCI_P3 $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_FIELD_BOTTOM" "ac_cv_have_decl_V4L2_FIELD_BOTTOM" "#include <sys/time.h>
+
+
+ac_fn_c_check_decl "$LINENO" "V4L2_CTRL_TYPE_INTEGER" "ac_cv_have_decl_V4L2_CTRL_TYPE_INTEGER" "
+#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_V4L2_FIELD_BOTTOM" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_CTRL_TYPE_INTEGER" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_FIELD_BOTTOM $ac_have_decl
+#define HAVE_DECL_V4L2_CTRL_TYPE_INTEGER $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_FIELD_INTERLACED" "ac_cv_have_decl_V4L2_FIELD_INTERLACED" "#include <sys/time.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_CTRL_TYPE_BOOLEAN" "ac_cv_have_decl_V4L2_CTRL_TYPE_BOOLEAN" "
+#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_V4L2_FIELD_INTERLACED" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_CTRL_TYPE_BOOLEAN" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_FIELD_INTERLACED $ac_have_decl
+#define HAVE_DECL_V4L2_CTRL_TYPE_BOOLEAN $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_FIELD_SEQ_TB" "ac_cv_have_decl_V4L2_FIELD_SEQ_TB" "#include <sys/time.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_CTRL_TYPE_MENU" "ac_cv_have_decl_V4L2_CTRL_TYPE_MENU" "
+#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_V4L2_FIELD_SEQ_TB" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_CTRL_TYPE_MENU" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_FIELD_SEQ_TB $ac_have_decl
+#define HAVE_DECL_V4L2_CTRL_TYPE_MENU $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_FIELD_SEQ_BT" "ac_cv_have_decl_V4L2_FIELD_SEQ_BT" "#include <sys/time.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_CTRL_TYPE_BUTTON" "ac_cv_have_decl_V4L2_CTRL_TYPE_BUTTON" "
+#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_V4L2_FIELD_SEQ_BT" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_CTRL_TYPE_BUTTON" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_FIELD_SEQ_BT $ac_have_decl
+#define HAVE_DECL_V4L2_CTRL_TYPE_BUTTON $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_FIELD_ALTERNATE" "ac_cv_have_decl_V4L2_FIELD_ALTERNATE" "#include <sys/time.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_CTRL_TYPE_INTEGER64" "ac_cv_have_decl_V4L2_CTRL_TYPE_INTEGER64" "
+#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_V4L2_FIELD_ALTERNATE" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_CTRL_TYPE_INTEGER64" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_FIELD_ALTERNATE $ac_have_decl
+#define HAVE_DECL_V4L2_CTRL_TYPE_INTEGER64 $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_FIELD_INTERLACED_TB" "ac_cv_have_decl_V4L2_FIELD_INTERLACED_TB" "#include <sys/time.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_CTRL_TYPE_CTRL_CLASS" "ac_cv_have_decl_V4L2_CTRL_TYPE_CTRL_CLASS" "
+#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_V4L2_FIELD_INTERLACED_TB" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_CTRL_TYPE_CTRL_CLASS" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_FIELD_INTERLACED_TB $ac_have_decl
+#define HAVE_DECL_V4L2_CTRL_TYPE_CTRL_CLASS $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_FIELD_INTERLACED_BT" "ac_cv_have_decl_V4L2_FIELD_INTERLACED_BT" "#include <sys/time.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_CTRL_TYPE_STRING" "ac_cv_have_decl_V4L2_CTRL_TYPE_STRING" "
+#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_V4L2_FIELD_INTERLACED_BT" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_CTRL_TYPE_STRING" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_FIELD_INTERLACED_BT $ac_have_decl
+#define HAVE_DECL_V4L2_CTRL_TYPE_STRING $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_BUF_TYPE_VIDEO_CAPTURE" "ac_cv_have_decl_V4L2_BUF_TYPE_VIDEO_CAPTURE" "#include <sys/time.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_CTRL_TYPE_BITMASK" "ac_cv_have_decl_V4L2_CTRL_TYPE_BITMASK" "
+#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_V4L2_BUF_TYPE_VIDEO_CAPTURE" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_CTRL_TYPE_BITMASK" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE $ac_have_decl
+#define HAVE_DECL_V4L2_CTRL_TYPE_BITMASK $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE" "ac_cv_have_decl_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE" "#include <sys/time.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_CTRL_TYPE_INTEGER_MENU" "ac_cv_have_decl_V4L2_CTRL_TYPE_INTEGER_MENU" "
+#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_CTRL_TYPE_INTEGER_MENU" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE $ac_have_decl
+#define HAVE_DECL_V4L2_CTRL_TYPE_INTEGER_MENU $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_BUF_TYPE_VIDEO_OUTPUT" "ac_cv_have_decl_V4L2_BUF_TYPE_VIDEO_OUTPUT" "#include <sys/time.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_CTRL_TYPE_U8" "ac_cv_have_decl_V4L2_CTRL_TYPE_U8" "
+#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_V4L2_BUF_TYPE_VIDEO_OUTPUT" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_CTRL_TYPE_U8" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT $ac_have_decl
+#define HAVE_DECL_V4L2_CTRL_TYPE_U8 $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE" "ac_cv_have_decl_V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE" "#include <sys/time.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_CTRL_TYPE_U16" "ac_cv_have_decl_V4L2_CTRL_TYPE_U16" "
+#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_CTRL_TYPE_U16" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE $ac_have_decl
+#define HAVE_DECL_V4L2_CTRL_TYPE_U16 $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_BUF_TYPE_VIDEO_OVERLAY" "ac_cv_have_decl_V4L2_BUF_TYPE_VIDEO_OVERLAY" "#include <sys/time.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_CTRL_TYPE_U32" "ac_cv_have_decl_V4L2_CTRL_TYPE_U32" "
+#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_V4L2_BUF_TYPE_VIDEO_OVERLAY" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_CTRL_TYPE_U32" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OVERLAY $ac_have_decl
+#define HAVE_DECL_V4L2_CTRL_TYPE_U32 $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_BUF_TYPE_VBI_CAPTURE" "ac_cv_have_decl_V4L2_BUF_TYPE_VBI_CAPTURE" "#include <sys/time.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_CTRL_TYPE_AREA" "ac_cv_have_decl_V4L2_CTRL_TYPE_AREA" "
+#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_V4L2_BUF_TYPE_VBI_CAPTURE" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_CTRL_TYPE_AREA" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_BUF_TYPE_VBI_CAPTURE $ac_have_decl
+#define HAVE_DECL_V4L2_CTRL_TYPE_AREA $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_BUF_TYPE_VBI_OUTPUT" "ac_cv_have_decl_V4L2_BUF_TYPE_VBI_OUTPUT" "#include <sys/time.h>
+
+
+ac_fn_c_check_decl "$LINENO" "V4L2_FIELD_ANY" "ac_cv_have_decl_V4L2_FIELD_ANY" "
+#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_V4L2_BUF_TYPE_VBI_OUTPUT" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_FIELD_ANY" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_BUF_TYPE_VBI_OUTPUT $ac_have_decl
+#define HAVE_DECL_V4L2_FIELD_ANY $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_BUF_TYPE_SLICED_VBI_CAPTURE" "ac_cv_have_decl_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE" "#include <sys/time.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_FIELD_NONE" "ac_cv_have_decl_V4L2_FIELD_NONE" "
+#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_FIELD_NONE" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE $ac_have_decl
+#define HAVE_DECL_V4L2_FIELD_NONE $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_BUF_TYPE_SLICED_VBI_OUTPUT" "ac_cv_have_decl_V4L2_BUF_TYPE_SLICED_VBI_OUTPUT" "#include <sys/time.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_FIELD_TOP" "ac_cv_have_decl_V4L2_FIELD_TOP" "
+#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_V4L2_BUF_TYPE_SLICED_VBI_OUTPUT" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_FIELD_TOP" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_OUTPUT $ac_have_decl
+#define HAVE_DECL_V4L2_FIELD_TOP $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY" "ac_cv_have_decl_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY" "#include <sys/time.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_FIELD_BOTTOM" "ac_cv_have_decl_V4L2_FIELD_BOTTOM" "
+#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_FIELD_BOTTOM" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY $ac_have_decl
+#define HAVE_DECL_V4L2_FIELD_BOTTOM $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_BUF_TYPE_SDR_CAPTURE" "ac_cv_have_decl_V4L2_BUF_TYPE_SDR_CAPTURE" "#include <sys/time.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_FIELD_INTERLACED" "ac_cv_have_decl_V4L2_FIELD_INTERLACED" "
+#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_V4L2_BUF_TYPE_SDR_CAPTURE" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_FIELD_INTERLACED" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE $ac_have_decl
+#define HAVE_DECL_V4L2_FIELD_INTERLACED $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_BUF_TYPE_SDR_OUTPUT" "ac_cv_have_decl_V4L2_BUF_TYPE_SDR_OUTPUT" "#include <sys/time.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_FIELD_SEQ_TB" "ac_cv_have_decl_V4L2_FIELD_SEQ_TB" "
+#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_V4L2_BUF_TYPE_SDR_OUTPUT" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_FIELD_SEQ_TB" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT $ac_have_decl
+#define HAVE_DECL_V4L2_FIELD_SEQ_TB $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_TUNER_RADIO" "ac_cv_have_decl_V4L2_TUNER_RADIO" "#include <sys/time.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_FIELD_SEQ_BT" "ac_cv_have_decl_V4L2_FIELD_SEQ_BT" "
+#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_V4L2_TUNER_RADIO" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_FIELD_SEQ_BT" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_TUNER_RADIO $ac_have_decl
+#define HAVE_DECL_V4L2_FIELD_SEQ_BT $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_TUNER_ANALOG_TV" "ac_cv_have_decl_V4L2_TUNER_ANALOG_TV" "#include <sys/time.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_FIELD_ALTERNATE" "ac_cv_have_decl_V4L2_FIELD_ALTERNATE" "
+#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_V4L2_TUNER_ANALOG_TV" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_FIELD_ALTERNATE" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_TUNER_ANALOG_TV $ac_have_decl
+#define HAVE_DECL_V4L2_FIELD_ALTERNATE $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_TUNER_DIGITAL_TV" "ac_cv_have_decl_V4L2_TUNER_DIGITAL_TV" "#include <sys/time.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_FIELD_INTERLACED_TB" "ac_cv_have_decl_V4L2_FIELD_INTERLACED_TB" "
+#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_V4L2_TUNER_DIGITAL_TV" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_FIELD_INTERLACED_TB" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_TUNER_DIGITAL_TV $ac_have_decl
+#define HAVE_DECL_V4L2_FIELD_INTERLACED_TB $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_MEMORY_MMAP" "ac_cv_have_decl_V4L2_MEMORY_MMAP" "#include <sys/time.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_FIELD_INTERLACED_BT" "ac_cv_have_decl_V4L2_FIELD_INTERLACED_BT" "
+#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_V4L2_MEMORY_MMAP" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_FIELD_INTERLACED_BT" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_MEMORY_MMAP $ac_have_decl
+#define HAVE_DECL_V4L2_FIELD_INTERLACED_BT $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_MEMORY_USERPTR" "ac_cv_have_decl_V4L2_MEMORY_USERPTR" "#include <sys/time.h>
+
+
+ac_fn_c_check_decl "$LINENO" "V4L2_FRMSIZE_TYPE_DISCRETE" "ac_cv_have_decl_V4L2_FRMSIZE_TYPE_DISCRETE" "
+#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_V4L2_MEMORY_USERPTR" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_FRMSIZE_TYPE_DISCRETE" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_MEMORY_USERPTR $ac_have_decl
+#define HAVE_DECL_V4L2_FRMSIZE_TYPE_DISCRETE $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_MEMORY_OVERLAY" "ac_cv_have_decl_V4L2_MEMORY_OVERLAY" "#include <sys/time.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_FRMSIZE_TYPE_CONTINUOUS" "ac_cv_have_decl_V4L2_FRMSIZE_TYPE_CONTINUOUS" "
+#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_V4L2_MEMORY_OVERLAY" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_FRMSIZE_TYPE_CONTINUOUS" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_MEMORY_OVERLAY $ac_have_decl
+#define HAVE_DECL_V4L2_FRMSIZE_TYPE_CONTINUOUS $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_MEMORY_DMABUF" "ac_cv_have_decl_V4L2_MEMORY_DMABUF" "#include <sys/time.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_FRMSIZE_TYPE_STEPWISE" "ac_cv_have_decl_V4L2_FRMSIZE_TYPE_STEPWISE" "
+#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_V4L2_MEMORY_DMABUF" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_FRMSIZE_TYPE_STEPWISE" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_MEMORY_DMABUF $ac_have_decl
+#define HAVE_DECL_V4L2_FRMSIZE_TYPE_STEPWISE $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_COLORSPACE_SMPTE170M" "ac_cv_have_decl_V4L2_COLORSPACE_SMPTE170M" "#include <sys/time.h>
+
+
+ac_fn_c_check_decl "$LINENO" "V4L2_MEMORY_MMAP" "ac_cv_have_decl_V4L2_MEMORY_MMAP" "
+#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_V4L2_COLORSPACE_SMPTE170M" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_MEMORY_MMAP" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_COLORSPACE_SMPTE170M $ac_have_decl
+#define HAVE_DECL_V4L2_MEMORY_MMAP $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_COLORSPACE_SMPTE240M" "ac_cv_have_decl_V4L2_COLORSPACE_SMPTE240M" "#include <sys/time.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_MEMORY_USERPTR" "ac_cv_have_decl_V4L2_MEMORY_USERPTR" "
+#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_V4L2_COLORSPACE_SMPTE240M" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_MEMORY_USERPTR" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_COLORSPACE_SMPTE240M $ac_have_decl
+#define HAVE_DECL_V4L2_MEMORY_USERPTR $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_COLORSPACE_REC709" "ac_cv_have_decl_V4L2_COLORSPACE_REC709" "#include <sys/time.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_MEMORY_OVERLAY" "ac_cv_have_decl_V4L2_MEMORY_OVERLAY" "
+#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_V4L2_COLORSPACE_REC709" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_MEMORY_OVERLAY" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_COLORSPACE_REC709 $ac_have_decl
+#define HAVE_DECL_V4L2_MEMORY_OVERLAY $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_COLORSPACE_BT878" "ac_cv_have_decl_V4L2_COLORSPACE_BT878" "#include <sys/time.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_MEMORY_DMABUF" "ac_cv_have_decl_V4L2_MEMORY_DMABUF" "
+#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_V4L2_COLORSPACE_BT878" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_MEMORY_DMABUF" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_COLORSPACE_BT878 $ac_have_decl
+#define HAVE_DECL_V4L2_MEMORY_DMABUF $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_COLORSPACE_470_SYSTEM_M" "ac_cv_have_decl_V4L2_COLORSPACE_470_SYSTEM_M" "#include <sys/time.h>
+
+
+ac_fn_c_check_decl "$LINENO" "V4L2_TUNER_RADIO" "ac_cv_have_decl_V4L2_TUNER_RADIO" "
+#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_V4L2_COLORSPACE_470_SYSTEM_M" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_TUNER_RADIO" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_COLORSPACE_470_SYSTEM_M $ac_have_decl
+#define HAVE_DECL_V4L2_TUNER_RADIO $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_COLORSPACE_470_SYSTEM_BG" "ac_cv_have_decl_V4L2_COLORSPACE_470_SYSTEM_BG" "#include <sys/time.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_TUNER_ANALOG_TV" "ac_cv_have_decl_V4L2_TUNER_ANALOG_TV" "
+#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_V4L2_COLORSPACE_470_SYSTEM_BG" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_TUNER_ANALOG_TV" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_COLORSPACE_470_SYSTEM_BG $ac_have_decl
+#define HAVE_DECL_V4L2_TUNER_ANALOG_TV $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_COLORSPACE_JPEG" "ac_cv_have_decl_V4L2_COLORSPACE_JPEG" "#include <sys/time.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_TUNER_DIGITAL_TV" "ac_cv_have_decl_V4L2_TUNER_DIGITAL_TV" "
+#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_V4L2_COLORSPACE_JPEG" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_TUNER_DIGITAL_TV" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_COLORSPACE_JPEG $ac_have_decl
+#define HAVE_DECL_V4L2_TUNER_DIGITAL_TV $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_COLORSPACE_SRGB" "ac_cv_have_decl_V4L2_COLORSPACE_SRGB" "#include <sys/time.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_TUNER_SDR" "ac_cv_have_decl_V4L2_TUNER_SDR" "
+#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_V4L2_COLORSPACE_SRGB" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_TUNER_SDR" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_COLORSPACE_SRGB $ac_have_decl
+#define HAVE_DECL_V4L2_TUNER_SDR $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_PRIORITY_UNSET" "ac_cv_have_decl_V4L2_PRIORITY_UNSET" "#include <sys/time.h>
+ac_fn_c_check_decl "$LINENO" "V4L2_TUNER_RF" "ac_cv_have_decl_V4L2_TUNER_RF" "
+#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>
+
 "
-if test "x$ac_cv_have_decl_V4L2_PRIORITY_UNSET" = xyes; then :
+if test "x$ac_cv_have_decl_V4L2_TUNER_RF" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_PRIORITY_UNSET $ac_have_decl
+#define HAVE_DECL_V4L2_TUNER_RF $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_PRIORITY_BACKGROUND" "ac_cv_have_decl_V4L2_PRIORITY_BACKGROUND" "#include <sys/time.h>
-#include <linux/ioctl.h>
-#include <linux/types.h>
-#include <linux/videodev2.h>
+
+
+ac_fn_c_check_decl "$LINENO" "P_ALL" "ac_cv_have_decl_P_ALL" "
+#include <sys/types.h>
+#include <sys/wait.h>
+
 "
-if test "x$ac_cv_have_decl_V4L2_PRIORITY_BACKGROUND" = xyes; then :
+if test "x$ac_cv_have_decl_P_ALL" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_PRIORITY_BACKGROUND $ac_have_decl
+#define HAVE_DECL_P_ALL $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_PRIORITY_INTERACTIVE" "ac_cv_have_decl_V4L2_PRIORITY_INTERACTIVE" "#include <sys/time.h>
-#include <linux/ioctl.h>
-#include <linux/types.h>
-#include <linux/videodev2.h>
+ac_fn_c_check_decl "$LINENO" "P_PID" "ac_cv_have_decl_P_PID" "
+#include <sys/types.h>
+#include <sys/wait.h>
+
 "
-if test "x$ac_cv_have_decl_V4L2_PRIORITY_INTERACTIVE" = xyes; then :
+if test "x$ac_cv_have_decl_P_PID" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_PRIORITY_INTERACTIVE $ac_have_decl
+#define HAVE_DECL_P_PID $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_PRIORITY_RECORD" "ac_cv_have_decl_V4L2_PRIORITY_RECORD" "#include <sys/time.h>
-#include <linux/ioctl.h>
-#include <linux/types.h>
-#include <linux/videodev2.h>
+ac_fn_c_check_decl "$LINENO" "P_PGID" "ac_cv_have_decl_P_PGID" "
+#include <sys/types.h>
+#include <sys/wait.h>
+
 "
-if test "x$ac_cv_have_decl_V4L2_PRIORITY_RECORD" = xyes; then :
+if test "x$ac_cv_have_decl_P_PGID" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_PRIORITY_RECORD $ac_have_decl
+#define HAVE_DECL_P_PGID $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_FRMSIZE_TYPE_DISCRETE" "ac_cv_have_decl_V4L2_FRMSIZE_TYPE_DISCRETE" "#include <sys/time.h>
-#include <linux/ioctl.h>
-#include <linux/types.h>
-#include <linux/videodev2.h>
+ac_fn_c_check_decl "$LINENO" "P_PIDFD" "ac_cv_have_decl_P_PIDFD" "
+#include <sys/types.h>
+#include <sys/wait.h>
+
 "
-if test "x$ac_cv_have_decl_V4L2_FRMSIZE_TYPE_DISCRETE" = xyes; then :
+if test "x$ac_cv_have_decl_P_PIDFD" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_FRMSIZE_TYPE_DISCRETE $ac_have_decl
+#define HAVE_DECL_P_PIDFD $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_FRMSIZE_TYPE_CONTINUOUS" "ac_cv_have_decl_V4L2_FRMSIZE_TYPE_CONTINUOUS" "#include <sys/time.h>
-#include <linux/ioctl.h>
-#include <linux/types.h>
-#include <linux/videodev2.h>
-"
-if test "x$ac_cv_have_decl_V4L2_FRMSIZE_TYPE_CONTINUOUS" = xyes; then :
+
+
+
+ac_fn_c_check_decl "$LINENO" "sys_errlist" "ac_cv_have_decl_sys_errlist" "$ac_includes_default"
+if test "x$ac_cv_have_decl_sys_errlist" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_FRMSIZE_TYPE_CONTINUOUS $ac_have_decl
+#define HAVE_DECL_SYS_ERRLIST $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_FRMSIZE_TYPE_STEPWISE" "ac_cv_have_decl_V4L2_FRMSIZE_TYPE_STEPWISE" "#include <sys/time.h>
-#include <linux/ioctl.h>
-#include <linux/types.h>
-#include <linux/videodev2.h>
+
+ac_fn_c_check_decl "$LINENO" "PTRACE_PEEKUSER" "ac_cv_have_decl_PTRACE_PEEKUSER" "#include <sys/ptrace.h>
 "
-if test "x$ac_cv_have_decl_V4L2_FRMSIZE_TYPE_STEPWISE" = xyes; then :
+if test "x$ac_cv_have_decl_PTRACE_PEEKUSER" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_FRMSIZE_TYPE_STEPWISE $ac_have_decl
+#define HAVE_DECL_PTRACE_PEEKUSER $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_FRMIVAL_TYPE_DISCRETE" "ac_cv_have_decl_V4L2_FRMIVAL_TYPE_DISCRETE" "#include <sys/time.h>
-#include <linux/ioctl.h>
-#include <linux/types.h>
-#include <linux/videodev2.h>
+ac_fn_c_check_decl "$LINENO" "PTRACE_POKEUSER" "ac_cv_have_decl_PTRACE_POKEUSER" "#include <sys/ptrace.h>
 "
-if test "x$ac_cv_have_decl_V4L2_FRMIVAL_TYPE_DISCRETE" = xyes; then :
+if test "x$ac_cv_have_decl_PTRACE_POKEUSER" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_FRMIVAL_TYPE_DISCRETE $ac_have_decl
+#define HAVE_DECL_PTRACE_POKEUSER $ac_have_decl
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_FRMIVAL_TYPE_CONTINUOUS" "ac_cv_have_decl_V4L2_FRMIVAL_TYPE_CONTINUOUS" "#include <sys/time.h>
+
+
+ac_fn_c_check_type "$LINENO" "struct v4l2_create_buffers" "ac_cv_type_struct_v4l2_create_buffers" "#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>
 "
-if test "x$ac_cv_have_decl_V4L2_FRMIVAL_TYPE_CONTINUOUS" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
+if test "x$ac_cv_type_struct_v4l2_create_buffers" = xyes; then :
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_FRMIVAL_TYPE_CONTINUOUS $ac_have_decl
+#define HAVE_STRUCT_V4L2_CREATE_BUFFERS 1
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_FRMIVAL_TYPE_STEPWISE" "ac_cv_have_decl_V4L2_FRMIVAL_TYPE_STEPWISE" "#include <sys/time.h>
+
+
+fi
+ac_fn_c_check_type "$LINENO" "struct v4l2_frmsizeenum" "ac_cv_type_struct_v4l2_frmsizeenum" "#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>
 "
-if test "x$ac_cv_have_decl_V4L2_FRMIVAL_TYPE_STEPWISE" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
+if test "x$ac_cv_type_struct_v4l2_frmsizeenum" = xyes; then :
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_FRMIVAL_TYPE_STEPWISE $ac_have_decl
+#define HAVE_STRUCT_V4L2_FRMSIZEENUM 1
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_CTRL_TYPE_INTEGER" "ac_cv_have_decl_V4L2_CTRL_TYPE_INTEGER" "#include <sys/time.h>
+
+
+fi
+ac_fn_c_check_type "$LINENO" "struct v4l2_frmivalenum" "ac_cv_type_struct_v4l2_frmivalenum" "#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>
 "
-if test "x$ac_cv_have_decl_V4L2_CTRL_TYPE_INTEGER" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
+if test "x$ac_cv_type_struct_v4l2_frmivalenum" = xyes; then :
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_CTRL_TYPE_INTEGER $ac_have_decl
+#define HAVE_STRUCT_V4L2_FRMIVALENUM 1
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_CTRL_TYPE_BOOLEAN" "ac_cv_have_decl_V4L2_CTRL_TYPE_BOOLEAN" "#include <sys/time.h>
+
+
+fi
+ac_fn_c_check_type "$LINENO" "struct v4l2_meta_format" "ac_cv_type_struct_v4l2_meta_format" "#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>
 "
-if test "x$ac_cv_have_decl_V4L2_CTRL_TYPE_BOOLEAN" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
+if test "x$ac_cv_type_struct_v4l2_meta_format" = xyes; then :
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_CTRL_TYPE_BOOLEAN $ac_have_decl
+#define HAVE_STRUCT_V4L2_META_FORMAT 1
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_CTRL_TYPE_MENU" "ac_cv_have_decl_V4L2_CTRL_TYPE_MENU" "#include <sys/time.h>
+
+
+fi
+ac_fn_c_check_type "$LINENO" "struct v4l2_pix_format_mplane" "ac_cv_type_struct_v4l2_pix_format_mplane" "#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>
 "
-if test "x$ac_cv_have_decl_V4L2_CTRL_TYPE_MENU" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
+if test "x$ac_cv_type_struct_v4l2_pix_format_mplane" = xyes; then :
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_CTRL_TYPE_MENU $ac_have_decl
+#define HAVE_STRUCT_V4L2_PIX_FORMAT_MPLANE 1
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_CTRL_TYPE_BUTTON" "ac_cv_have_decl_V4L2_CTRL_TYPE_BUTTON" "#include <sys/time.h>
+
+
+fi
+ac_fn_c_check_type "$LINENO" "struct v4l2_plane_pix_format" "ac_cv_type_struct_v4l2_plane_pix_format" "#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>
 "
-if test "x$ac_cv_have_decl_V4L2_CTRL_TYPE_BUTTON" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
+if test "x$ac_cv_type_struct_v4l2_plane_pix_format" = xyes; then :
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_CTRL_TYPE_BUTTON $ac_have_decl
+#define HAVE_STRUCT_V4L2_PLANE_PIX_FORMAT 1
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_CTRL_TYPE_INTEGER64" "ac_cv_have_decl_V4L2_CTRL_TYPE_INTEGER64" "#include <sys/time.h>
+
+
+fi
+ac_fn_c_check_type "$LINENO" "struct v4l2_sdr_format" "ac_cv_type_struct_v4l2_sdr_format" "#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>
 "
-if test "x$ac_cv_have_decl_V4L2_CTRL_TYPE_INTEGER64" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
+if test "x$ac_cv_type_struct_v4l2_sdr_format" = xyes; then :
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_CTRL_TYPE_INTEGER64 $ac_have_decl
+#define HAVE_STRUCT_V4L2_SDR_FORMAT 1
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_CTRL_TYPE_CTRL_CLASS" "ac_cv_have_decl_V4L2_CTRL_TYPE_CTRL_CLASS" "#include <sys/time.h>
+
+
+fi
+
+
+ac_fn_c_check_member "$LINENO" "struct v4l2_capability" "device_caps" "ac_cv_member_struct_v4l2_capability_device_caps" "#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>
 "
-if test "x$ac_cv_have_decl_V4L2_CTRL_TYPE_CTRL_CLASS" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
+if test "x$ac_cv_member_struct_v4l2_capability_device_caps" = xyes; then :
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_CTRL_TYPE_CTRL_CLASS $ac_have_decl
+#define HAVE_STRUCT_V4L2_CAPABILITY_DEVICE_CAPS 1
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_CTRL_TYPE_STRING" "ac_cv_have_decl_V4L2_CTRL_TYPE_STRING" "#include <sys/time.h>
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct v4l2_ext_control" "string" "ac_cv_member_struct_v4l2_ext_control_string" "#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>
 "
-if test "x$ac_cv_have_decl_V4L2_CTRL_TYPE_STRING" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
+if test "x$ac_cv_member_struct_v4l2_ext_control_string" = xyes; then :
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_CTRL_TYPE_STRING $ac_have_decl
+#define HAVE_STRUCT_V4L2_EXT_CONTROL_STRING 1
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_CTRL_TYPE_BITMASK" "ac_cv_have_decl_V4L2_CTRL_TYPE_BITMASK" "#include <sys/time.h>
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct v4l2_format" "fmt.pix_mp" "ac_cv_member_struct_v4l2_format_fmt_pix_mp" "#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>
 "
-if test "x$ac_cv_have_decl_V4L2_CTRL_TYPE_BITMASK" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
+if test "x$ac_cv_member_struct_v4l2_format_fmt_pix_mp" = xyes; then :
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_CTRL_TYPE_BITMASK $ac_have_decl
+#define HAVE_STRUCT_V4L2_FORMAT_FMT_PIX_MP 1
 _ACEOF
-ac_fn_c_check_decl "$LINENO" "V4L2_CTRL_TYPE_INTEGER_MENU" "ac_cv_have_decl_V4L2_CTRL_TYPE_INTEGER_MENU" "#include <sys/time.h>
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct v4l2_format" "fmt.sdr" "ac_cv_member_struct_v4l2_format_fmt_sdr" "#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>
 "
-if test "x$ac_cv_have_decl_V4L2_CTRL_TYPE_INTEGER_MENU" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
+if test "x$ac_cv_member_struct_v4l2_format_fmt_sdr" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_V4L2_FORMAT_FMT_SDR 1
+_ACEOF
+
+
 fi
+ac_fn_c_check_member "$LINENO" "struct v4l2_format" "fmt.sliced" "ac_cv_member_struct_v4l2_format_fmt_sliced" "#include <sys/time.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+"
+if test "x$ac_cv_member_struct_v4l2_format_fmt_sliced" = xyes; then :
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_V4L2_CTRL_TYPE_INTEGER_MENU $ac_have_decl
+#define HAVE_STRUCT_V4L2_FORMAT_FMT_SLICED 1
 _ACEOF
 
 
+fi
 ac_fn_c_check_member "$LINENO" "struct v4l2_window" "global_alpha" "ac_cv_member_struct_v4l2_window_global_alpha" "#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
@@ -14810,6 +21981,40 @@ cat >>confdefs.h <<_ACEOF
 _ACEOF
 
 
+# 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 struct msqid64_ds" >&5
+$as_echo_n "checking size of struct msqid64_ds... " >&6; }
+if ${ac_cv_sizeof_struct_msqid64_ds+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (struct msqid64_ds))" "ac_cv_sizeof_struct_msqid64_ds"        "#include <linux/msg.h>
+"; then :
+
+else
+  if test "$ac_cv_type_struct_msqid64_ds" = 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 (struct msqid64_ds)
+See \`config.log' for more details" "$LINENO" 5; }
+   else
+     ac_cv_sizeof_struct_msqid64_ds=0
+   fi
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_struct_msqid64_ds" >&5
+$as_echo "$ac_cv_sizeof_struct_msqid64_ds" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_STRUCT_MSQID64_DS $ac_cv_sizeof_struct_msqid64_ds
+_ACEOF
+
+
 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SIGRTMIN" >&5
@@ -14980,13 +22185,13 @@ $as_echo "#define HAVE__STATIC_ASSERT 1" >>confdefs.h
                ;;
 esac
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dladdr in -ldl" >&5
-$as_echo_n "checking for dladdr in -ldl... " >&6; }
-if ${ac_cv_lib_dl_dladdr+:} false; then :
+saved_LIBS="$LIBS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dladdr" >&5
+$as_echo_n "checking for library containing dladdr... " >&6; }
+if ${ac_cv_search_dladdr+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl  $LIBS"
+  ac_func_search_save_LIBS=$LIBS
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -15005,27 +22210,47 @@ return dladdr ();
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dl_dladdr=yes
-else
-  ac_cv_lib_dl_dladdr=no
+for ac_lib in '' dl; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_dladdr=$ac_res
 fi
 rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
+    conftest$ac_exeext
+  if ${ac_cv_search_dladdr+:} false; then :
+  break
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dladdr" >&5
-$as_echo "$ac_cv_lib_dl_dladdr" >&6; }
-if test "x$ac_cv_lib_dl_dladdr" = xyes; then :
-  dl_LIBS='-ldl'
+done
+if ${ac_cv_search_dladdr+:} false; then :
+
 else
-  dl_LIBS=
+  ac_cv_search_dladdr=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dladdr" >&5
+$as_echo "$ac_cv_search_dladdr" >&6; }
+ac_res=$ac_cv_search_dladdr
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
 fi
 
-if test "x$ac_cv_lib_dl_dladdr" = xyes; then
+LIBS="$saved_LIBS"
+dl_LIBS=""
+if test "$ac_cv_search_dladdr" != no; then
 
 $as_echo "#define HAVE_DLADDR 1" >>confdefs.h
 
+       case "$ac_cv_search_dladdr" in
+               -l*) dl_LIBS="$ac_cv_search_dladdr" ;;
+       esac
 fi
 
 
@@ -15229,47 +22454,6 @@ case "$ac_cv_search_mq_open" in
 esac
 
 
-# Extract the first word of "perl", so it can be a program name with args.
-set dummy perl; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PERL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $PERL in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_PERL="$PERL" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-PERL=$ac_cv_path_PERL
-if test -n "$PERL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5
-$as_echo "$PERL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}readelf", so it can be a program name with args.
 set dummy ${ac_tool_prefix}readelf; ac_word=$2
 
 if test "$arch" = mips && test "$no_create" != yes; then
        mkdir -p linux/mips
-       if $srcdir/linux/mips/genstub.sh linux/mips; then
+       if $srcdir/linux/mips/genstub.sh \
+          $srcdir/linux/mips linux/mips n32 n64 o32 &&
+          $srcdir/linux/mips/genstub.sh \
+          $srcdir/linux linux/mips common common-32; then
                { $as_echo "$as_me:${as_lineno-$LINENO}: result: Generated MIPS syscallent stubs" >&5
 $as_echo "Generated MIPS syscallent stubs" >&6; }
        else
@@ -15963,6 +23150,79 @@ else
 fi
 
 
+if test x$arch = xaarch64; then :
+  # So far, only aarch64 needs a separate compiler for its compat
+       # personality (which is AArch32, that is more or less ARMv7 EABI)
+       #
+       # Some heuristics regarding possible compiler name:
+       #   Debian:  arm-linux-gnueabi{,hf}-gcc
+       #   SuSE:    arm7{,hl}-linux-gnueabi-gcc
+       #   Red Hat: arm-redhat-linux-gnu-gcc
+       #   Fedora:  arm-linux-gnu-gcc
+       #   ALT:     armh-alt-linux-gnueabi-gcc
+
+       for ac_prog in                                                           arm-linux-gnu-gcc                                                               arm-linux-gnu-cc                                                                arm-linux-gnueabi-gcc                                                           arm-linux-gnueabi-cc                                                            arm-linux-gnueabihf-gcc                                                                 arm-linux-gnueabihf-cc                                                          arm-$host_vendor-linux-gnu-gcc                                                          arm-$host_vendor-linux-gnu-cc                                                           arm-$host_vendor-linux-gnueabi-gcc                                                              arm-$host_vendor-linux-gnueabi-cc                                                               arm-$host_vendor-linux-gnueabihf-gcc                                                            arm-$host_vendor-linux-gnueabihf-cc                                                             arm7-linux-gnu-gcc                                                              arm7-linux-gnu-cc                                                               arm7-linux-gnueabi-gcc                                                          arm7-linux-gnueabi-cc                                                           arm7-linux-gnueabihf-gcc                                                                arm7-linux-gnueabihf-cc                                                                 arm7-$host_vendor-linux-gnu-gcc                                                                 arm7-$host_vendor-linux-gnu-cc                                                          arm7-$host_vendor-linux-gnueabi-gcc                                                             arm7-$host_vendor-linux-gnueabi-cc                                                              arm7-$host_vendor-linux-gnueabihf-gcc                                                           arm7-$host_vendor-linux-gnueabihf-cc                                                            arm7hl-linux-gnu-gcc                                                            arm7hl-linux-gnu-cc                                                             arm7hl-linux-gnueabi-gcc                                                                arm7hl-linux-gnueabi-cc                                                                 arm7hl-linux-gnueabihf-gcc                                                              arm7hl-linux-gnueabihf-cc                                                               arm7hl-$host_vendor-linux-gnu-gcc                                                               arm7hl-$host_vendor-linux-gnu-cc                                                                arm7hl-$host_vendor-linux-gnueabi-gcc                                                           arm7hl-$host_vendor-linux-gnueabi-cc                                                            arm7hl-$host_vendor-linux-gnueabihf-gcc                                                                 arm7hl-$host_vendor-linux-gnueabihf-cc                                                          armh-linux-gnu-gcc                                                              armh-linux-gnu-cc                                                               armh-linux-gnueabi-gcc                                                          armh-linux-gnueabi-cc                                                           armh-linux-gnueabihf-gcc                                                                armh-linux-gnueabihf-cc                                                                 armh-$host_vendor-linux-gnu-gcc                                                                 armh-$host_vendor-linux-gnu-cc                                                          armh-$host_vendor-linux-gnueabi-gcc                                                             armh-$host_vendor-linux-gnueabi-cc                                                              armh-$host_vendor-linux-gnueabihf-gcc                                                           armh-$host_vendor-linux-gnueabihf-cc
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC_FOR_M32+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC_FOR_M32"; then
+  ac_cv_prog_CC_FOR_M32="$CC_FOR_M32" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC_FOR_M32="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC_FOR_M32=$ac_cv_prog_CC_FOR_M32
+if test -n "$CC_FOR_M32"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC_FOR_M32" >&5
+$as_echo "$CC_FOR_M32" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$CC_FOR_M32" && break
+done
+
+       if test -n "$CC_FOR_M32"; then :
+  : ${CPP_FOR_M32=$CC_FOR_M32 -E}
+             : ${CFLAGS_FOR_M32=-std=gnu99}
+             : ${CPPFLAGS_FOR_M32=}
+
+fi
+
+fi
+
+# Set default compiler variables for personalities.
+                              : ${CC_FOR_M32=$CC}
+                                              : ${CPP_FOR_M32=$CPP}
+                                              : ${CPPFLAGS_FOR_M32=$CPPFLAGS}
+                                                      : ${CFLAGS_FOR_M32=}
+                                                      : ${CC_FOR_MX32=$CC}
+                                              : ${CPP_FOR_MX32=$CPP}
+                                              : ${CPPFLAGS_FOR_MX32=$CPPFLAGS}
+                                                      : ${CFLAGS_FOR_MX32=}
+
+
 
 
 
 
 
 
+
+if test -n "${CC+set}"; then :
+  st_saved_CC="${CC}"; unset CC
+fi
+
+if test -n "${CPP+set}"; then :
+  st_saved_CPP="${CPP}"; unset CPP
+fi
+
+if test -n "${CFLAGS+set}"; then :
+  st_saved_CFLAGS="${CFLAGS}"; unset CFLAGS
+fi
+
+if test -n "${CPPFLAGS+set}"; then :
+  st_saved_CPPFLAGS="${CPPFLAGS}"; unset CPPFLAGS
+fi
+
+
+CC=$CC_FOR_M32
+CPP=$CPP_FOR_M32
+CFLAGS=$CFLAGS_FOR_M32
+CPPFLAGS=$CPPFLAGS_FOR_M32
+
 case "$arch" in
-       aarch64|powerpc64|riscv|s390x|sparc64|tile|x32|x86_64)
+       aarch64|powerpc64|s390x|sparc64|tile|x32|x86_64)
        case "$enable_mpers" in
        yes|check|m32)
 
 done
 
 
+       saved_CPPFLAGS="$CPPFLAGS"
+       CPPFLAGS="$CPPFLAGS${IFLAG:+ }$IFLAG"
        saved_CFLAGS="$CFLAGS"
-       CFLAGS="$CFLAGS $cc_flags_m32 $IFLAG"
-       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for m32 personality compile support" >&5
-$as_echo_n "checking for m32 personality compile support... " >&6; }
+       CFLAGS="$CFLAGS $cc_flags_m32"
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for m32 personality compile support (using $CC $CPPFLAGS $CFLAGS)" >&5
+$as_echo_n "checking for m32 personality compile support (using $CC $CPPFLAGS $CFLAGS)... " >&6; }
 if ${st_cv_m32_cc+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdint.h>
-                                                    int main(){return 0;}
+int
+main ()
+{
+return 0
+  ;
+  return 0;
+}
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
   st_cv_m32_cc=yes
@@ -16034,7 +23325,13 @@ else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdint.h>
-                                                        int main(){return 0;}
+int
+main ()
+{
+return 0
+  ;
+  return 0;
+}
 _ACEOF
 if ac_fn_c_try_run "$LINENO"; then :
   st_cv_m32_runtime=yes
@@ -16054,8 +23351,8 @@ if ${st_cv_m32_mpers+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if READELF="$READELF" \
-                           CC="$CC" CPP="$CPP" CPPFLAGS="$CPPFLAGS $IFLAG" \
-                           $srcdir/mpers_test.sh m32 $cc_flags_m32; then
+                           CC="$CC" CPP="$CPP" CPPFLAGS="$CPPFLAGS" \
+                           $srcdir/mpers_test.sh m32 "$cc_flags_m32"; then
                                st_cv_m32_mpers=yes
                         else
                                st_cv_m32_mpers=no
 
 
 
+
+
+
+
+
+
+
+
+if test -n "${ac_cv_sizeof_struct_msqid64_ds+set}"; then :
+  saved_ac_cv_sizeof_struct_msqid64_ds="${ac_cv_sizeof_struct_msqid64_ds}"; unset ac_cv_sizeof_struct_msqid64_ds
+fi
+if test -n "${ac_cv_m32_sizeof_struct_msqid64_ds+set}"; then :
+  ac_cv_sizeof_struct_msqid64_ds="${ac_cv_m32_sizeof_struct_msqid64_ds}"
+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 struct msqid64_ds" >&5
+$as_echo_n "checking size of struct msqid64_ds... " >&6; }
+if ${ac_cv_sizeof_struct_msqid64_ds+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (struct msqid64_ds))" "ac_cv_sizeof_struct_msqid64_ds"        "#include <linux/msg.h>
+"; then :
+
+else
+  if test "$ac_cv_type_struct_msqid64_ds" = 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 (struct msqid64_ds)
+See \`config.log' for more details" "$LINENO" 5; }
+   else
+     ac_cv_sizeof_struct_msqid64_ds=0
+   fi
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_struct_msqid64_ds" >&5
+$as_echo "$ac_cv_sizeof_struct_msqid64_ds" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define M32_SIZEOF_STRUCT_MSQID64_DS $ac_cv_sizeof_struct_msqid64_ds
+_ACEOF
+
+
+
+
+
+
+
+
+if test -n "${ac_cv_sizeof_struct_msqid64_ds+set}"; then :
+  ac_cv_m32_sizeof_struct_msqid64_ds="${ac_cv_sizeof_struct_msqid64_ds}"
+fi
+if test -n "${saved_ac_cv_sizeof_struct_msqid64_ds+set}"; then :
+  ac_cv_sizeof_struct_msqid64_ds="${saved_ac_cv_sizeof_struct_msqid64_ds}"; unset saved_ac_cv_sizeof_struct_msqid64_ds
+fi
+
+
+
+
+
+
+
                        fi
                fi
        fi
+       CPPFLAGS="$saved_CPPFLAGS"
        CFLAGS="$saved_CFLAGS"
        ;;
 
@@ -16452,6 +23823,24 @@ else
 fi
 
 
+if test -n "${st_saved_CC+set}"; then :
+  CC="${st_saved_CC}"; unset st_saved_CC
+fi
+
+if test -n "${st_saved_CPP+set}"; then :
+  CPP="${st_saved_CPP}"; unset st_saved_CPP
+fi
+
+if test -n "${st_saved_CFLAGS+set}"; then :
+  CFLAGS="${st_saved_CFLAGS}"; unset st_saved_CFLAGS
+fi
+
+if test -n "${st_saved_CPPFLAGS+set}"; then :
+  CPPFLAGS="${st_saved_CPPFLAGS}"; unset st_saved_CPPFLAGS
+fi
+
+
+
 
 
 
 
 
 
+
+
+if test -n "${CC+set}"; then :
+  st_saved_CC="${CC}"; unset CC
+fi
+
+if test -n "${CPP+set}"; then :
+  st_saved_CPP="${CPP}"; unset CPP
+fi
+
+if test -n "${CFLAGS+set}"; then :
+  st_saved_CFLAGS="${CFLAGS}"; unset CFLAGS
+fi
+
+if test -n "${CPPFLAGS+set}"; then :
+  st_saved_CPPFLAGS="${CPPFLAGS}"; unset CPPFLAGS
+fi
+
+
+CC=$CC_FOR_MX32
+CPP=$CPP_FOR_MX32
+CFLAGS=$CFLAGS_FOR_MX32
+CPPFLAGS=$CPPFLAGS_FOR_MX32
 
 case "$arch" in
        x86_64)
 done
 
 
+       saved_CPPFLAGS="$CPPFLAGS"
+       CPPFLAGS="$CPPFLAGS${IFLAG:+ }$IFLAG"
        saved_CFLAGS="$CFLAGS"
-       CFLAGS="$CFLAGS $cc_flags_mx32 $IFLAG"
-       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for mx32 personality compile support" >&5
-$as_echo_n "checking for mx32 personality compile support... " >&6; }
+       CFLAGS="$CFLAGS $cc_flags_mx32"
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for mx32 personality compile support (using $CC $CPPFLAGS $CFLAGS)" >&5
+$as_echo_n "checking for mx32 personality compile support (using $CC $CPPFLAGS $CFLAGS)... " >&6; }
 if ${st_cv_mx32_cc+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdint.h>
-                                                    int main(){return 0;}
+int
+main ()
+{
+return 0
+  ;
+  return 0;
+}
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
   st_cv_mx32_cc=yes
@@ -16533,7 +23953,13 @@ else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdint.h>
-                                                        int main(){return 0;}
+int
+main ()
+{
+return 0
+  ;
+  return 0;
+}
 _ACEOF
 if ac_fn_c_try_run "$LINENO"; then :
   st_cv_mx32_runtime=yes
@@ -16553,8 +23979,8 @@ if ${st_cv_mx32_mpers+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if READELF="$READELF" \
-                           CC="$CC" CPP="$CPP" CPPFLAGS="$CPPFLAGS $IFLAG" \
-                           $srcdir/mpers_test.sh mx32 $cc_flags_mx32; then
+                           CC="$CC" CPP="$CPP" CPPFLAGS="$CPPFLAGS" \
+                           $srcdir/mpers_test.sh mx32 "$cc_flags_mx32"; then
                                st_cv_mx32_mpers=yes
                         else
                                st_cv_mx32_mpers=no
 
 
 
+
+
+
+
+
+
+
+
+if test -n "${ac_cv_sizeof_struct_msqid64_ds+set}"; then :
+  saved_ac_cv_sizeof_struct_msqid64_ds="${ac_cv_sizeof_struct_msqid64_ds}"; unset ac_cv_sizeof_struct_msqid64_ds
+fi
+if test -n "${ac_cv_mx32_sizeof_struct_msqid64_ds+set}"; then :
+  ac_cv_sizeof_struct_msqid64_ds="${ac_cv_mx32_sizeof_struct_msqid64_ds}"
+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 struct msqid64_ds" >&5
+$as_echo_n "checking size of struct msqid64_ds... " >&6; }
+if ${ac_cv_sizeof_struct_msqid64_ds+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (struct msqid64_ds))" "ac_cv_sizeof_struct_msqid64_ds"        "#include <linux/msg.h>
+"; then :
+
+else
+  if test "$ac_cv_type_struct_msqid64_ds" = 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 (struct msqid64_ds)
+See \`config.log' for more details" "$LINENO" 5; }
+   else
+     ac_cv_sizeof_struct_msqid64_ds=0
+   fi
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_struct_msqid64_ds" >&5
+$as_echo "$ac_cv_sizeof_struct_msqid64_ds" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define MX32_SIZEOF_STRUCT_MSQID64_DS $ac_cv_sizeof_struct_msqid64_ds
+_ACEOF
+
+
+
+
+
+
+
+
+if test -n "${ac_cv_sizeof_struct_msqid64_ds+set}"; then :
+  ac_cv_mx32_sizeof_struct_msqid64_ds="${ac_cv_sizeof_struct_msqid64_ds}"
+fi
+if test -n "${saved_ac_cv_sizeof_struct_msqid64_ds+set}"; then :
+  ac_cv_sizeof_struct_msqid64_ds="${saved_ac_cv_sizeof_struct_msqid64_ds}"; unset saved_ac_cv_sizeof_struct_msqid64_ds
+fi
+
+
+
+
+
+
+
                        fi
                fi
        fi
+       CPPFLAGS="$saved_CPPFLAGS"
        CFLAGS="$saved_CFLAGS"
        ;;
 
@@ -16951,6 +24451,24 @@ else
 fi
 
 
+if test -n "${st_saved_CC+set}"; then :
+  CC="${st_saved_CC}"; unset st_saved_CC
+fi
+
+if test -n "${st_saved_CPP+set}"; then :
+  CPP="${st_saved_CPP}"; unset st_saved_CPP
+fi
+
+if test -n "${st_saved_CFLAGS+set}"; then :
+  CFLAGS="${st_saved_CFLAGS}"; unset st_saved_CFLAGS
+fi
+
+if test -n "${st_saved_CPPFLAGS+set}"; then :
+  CPPFLAGS="${st_saved_CPPFLAGS}"; unset st_saved_CPPFLAGS
+fi
+
+
+
 
 
 
@@ -17512,15 +25030,15 @@ if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
   as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
-if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
-  as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
 if test -z "${CODE_COVERAGE_ENABLED_TRUE}" && test -z "${CODE_COVERAGE_ENABLED_FALSE}"; then
   as_fn_error $? "conditional \"CODE_COVERAGE_ENABLED\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+  as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 if test -z "${ENABLE_STACKTRACE_TRUE}" && test -z "${ENABLE_STACKTRACE_FALSE}"; then
   as_fn_error $? "conditional \"ENABLE_STACKTRACE\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -17954,7 +25472,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 5.1, which was
+This file was extended by strace $as_me 5.9, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -18021,7 +25539,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 5.1
+strace config.status 5.9
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
@@ -18833,7 +26351,9 @@ $as_echo X/"$am_mf" |
     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
 as_fn_error $? "Something went wrong bootstrapping makefile fragments
-    for automatic dependency tracking.  Try re-running configure with the
+    for automatic dependency tracking.  If GNU make was not used, consider
+    re-running the configure script with MAKE=\"gmake\" (or whatever is
+    necessary).  You can also try re-running configure with the
     '--disable-dependency-tracking' option to at least be able to build
     the package (albeit without support for automatic dependency tracking).
 See \`config.log' for more details" "$LINENO" 5; }
index 621312ac4b38b2e0a0f335e4133014fb04ac1079..4e7bc2a8958342d32b2a359417ac988ff6f2a7a2 100644 (file)
@@ -5,24 +5,24 @@
 # Copyright (c) 2006-2016 Dmitry V. Levin <ldv@altlinux.org>
 # Copyright (c) 2008-2015 Mike Frysinger <vapier@gentoo.org>
 # Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
-# Copyright (c) 2002-2019 The strace developers.
+# Copyright (c) 2002-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: LGPL-2.1-or-later
 
 AC_PREREQ(2.57)
 AC_INIT([strace],
-       m4_esyscmd([./git-version-gen .tarball-version]),
+       st_esyscmd_s([./git-version-gen .tarball-version]),
        [strace-devel@lists.strace.io],
        [strace],
        [https://strace.io])
-m4_define([copyright_year], m4_esyscmd([./copyright-year-gen .year]))
-m4_define([manpage_date], m4_esyscmd([./file-date-gen strace.1.in]))
+m4_define([copyright_year], st_esyscmd_s([./copyright-year-gen .year]))
+m4_define([manpage_date], st_esyscmd_s([./file-date-gen strace.1.in]))
 AC_COPYRIGHT([Copyright (c) 1999-]copyright_year[ The strace developers.])
 AC_CONFIG_SRCDIR([strace.c])
 AC_CONFIG_AUX_DIR([.])
 AC_CONFIG_HEADERS([config.h])
-AM_INIT_AUTOMAKE([foreign nostdinc dist-xz silent-rules parallel-tests 1.13])
+AM_INIT_AUTOMAKE([foreign nostdinc dist-xz silent-rules parallel-tests subdir-objects 1.13])
 AM_MAINTAINER_MODE
 AC_CANONICAL_HOST
 
@@ -34,8 +34,6 @@ AC_SUBST(DEB_CHANGELOGTIME)
 AC_PROG_CC
 AC_PROG_CC_STDC
 AC_PROG_CPP
-st_WARN_CFLAGS
-AX_PROG_CC_FOR_BUILD
 AC_PROG_INSTALL
 AC_PROG_RANLIB
 
@@ -48,6 +46,11 @@ AC_SUBST([COPYRIGHT_YEAR], [copyright_year])
 AC_DEFINE([MANPAGE_DATE], "[manpage_date]", [Date])
 AC_SUBST([MANPAGE_DATE], [manpage_date])
 
+AC_C_BIGENDIAN
+
+dnl arch-specific default for --enable-gcc-Werror
+arch_enable_Werror=yes
+
 AC_MSG_CHECKING([for supported architecture])
 arch_m32=
 arch_mx32=
@@ -57,10 +60,12 @@ case "$host_cpu" in
 aarch64*)
        arch=aarch64
        arch_m32=arm
+       cc_flags_m32=
        AC_DEFINE([AARCH64], 1, [Define for the AArch64 architecture.])
        ;;
 alpha*)
        arch=alpha
+       arch_enable_Werror=no
        AC_DEFINE([ALPHA], 1, [Define for the Alpha architecture.])
        ;;
 arc*)
@@ -77,6 +82,7 @@ avr32*)
        ;;
 bfin)
        arch=bfin
+       arch_enable_Werror=no
        AC_DEFINE([BFIN], 1, [Define for the Blackfin architecture.])
        ;;
 csky*)
@@ -105,6 +111,7 @@ metag*)
        ;;
 microblaze*)
        arch=microblaze
+       arch_enable_Werror=no
        AC_DEFINE([MICROBLAZE], 1, [Define for the MicroBlaze architecture.])
        ;;
 mips*)
@@ -126,13 +133,24 @@ powerpc*)
 # error 32 bit
 #endif], [], arch=powerpc64, arch=powerpc)
        if test "$arch" = "powerpc64"; then
-               arch_m32=powerpc
-               AC_DEFINE([POWERPC64], 1, [Define for the PowerPC64 architecture.])
+               # $ac_cv_c_bigendian is defined by AC_C_BIGENDIAN
+               case "$ac_cv_c_bigendian" in
+               no)
+                       arch=powerpc64le
+                       AC_DEFINE([POWERPC64LE], 1,
+                                 [Define for the little endian PowerPC64 architecture.])
+                       ;;
+               *)
+                       arch_m32=powerpc
+                       AC_DEFINE([POWERPC64], 1,
+                                 [Define for the big endian PowerPC64 architecture.])
+                       ;;
+               esac
        fi
        ;;
-riscv*)
-       arch=riscv
-       AC_DEFINE([RISCV], 1, [Define for the RISC-V architecture])
+riscv64*)
+       arch=riscv64
+       AC_DEFINE([RISCV64], 1, [Define for the RISC-V 64-bit architecture])
        ;;
 s390)
        arch=s390
@@ -243,7 +261,10 @@ esac
 AC_DEFINE_UNQUOTED([ENABLE_ARM_OABI], [$enable_arm_oabi],
                   [Define to 1 if you want OABI support on ARM EABI.])
 
-AC_C_BIGENDIAN
+st_WARN_CFLAGS
+AX_PROG_CC_FOR_BUILD
+AM_PROG_AR
+
 AC_C_TYPEOF
 
 AC_TYPE_UID_T
@@ -253,6 +274,7 @@ AC_CHECK_FUNCS(m4_normalize([
        be64toh
        fallocate
        fanotify_mark
+       fcntl64
        fopen64
        fork
        fputs_unlocked
@@ -262,7 +284,7 @@ AC_CHECK_FUNCS(m4_normalize([
        iconv_open
        if_indextoname
        open64
-       prctl
+       open_memstream
        preadv
        process_vm_readv
        pwritev
@@ -271,9 +293,7 @@ AC_CHECK_FUNCS(m4_normalize([
        stpcpy
        strerror
        strndup
-       strsignal
        sync_file_range
-       utimensat
 ]))
 
 AC_CHECK_TYPES([sig_atomic_t, struct sigcontext],,, [#include <signal.h>])
@@ -302,9 +322,12 @@ AC_CHECK_MEMBERS([struct stat.st_mtime_nsec, struct stat64.st_mtime_nsec],,,
 AC_CHECK_TYPES(m4_normalize([
        struct pt_all_user_regs,
        struct ia64_fpreg,
-       struct ptrace_peeksiginfo_args
+       struct ptrace_peeksiginfo_args,
+       struct __ptrace_syscall_info
 ]),,, [#include <sys/ptrace.h>])
 
+AC_CHECK_TYPES([struct ptrace_syscall_info],,, [#include <linux/ptrace.h>])
+
 # For kernels that do not have v3.10-rc1~201^2~11
 AC_CHECK_TYPES([s390_compat_regs],,, [#include <asm/ptrace.h>])
 
@@ -319,24 +342,16 @@ AC_CHECK_TYPES(m4_normalize([
 [#include <sys/types.h>
 #include <linux/fcntl.h>])
 
-AC_CHECK_TYPES(m4_normalize([
-       struct crypto_report_aead,
-       struct crypto_report_blkcipher,
-       struct crypto_report_cipher,
-       struct crypto_report_hash,
-       struct crypto_report_rng
-]),,, [#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
+       struct keyctl_kdf_params,
+       struct keyctl_pkey_params,
+       struct keyctl_pkey_query
 ]),,, [#include <linux/keyctl.h>])
 
-AC_CHECK_MEMBERS([struct timex.tai],,, [#include <sys/timex.h>])
-
 AC_CHECK_MEMBERS([struct utsname.domainname],,, [#include <sys/utsname.h>])
 
 AC_CHECK_MEMBERS(m4_normalize([
@@ -367,7 +382,8 @@ AC_CHECK_MEMBERS(m4_normalize([
        struct perf_event_attr.sample_stack_user,
        struct perf_event_attr.sample_regs_intr,
        struct perf_event_attr.aux_watermark,
-       struct perf_event_attr.sample_max_stack
+       struct perf_event_attr.sample_max_stack,
+       struct perf_event_attr.aux_sample_size
 ]),,, [#include <linux/perf_event.h>])
 
 AC_CHECK_HEADERS(m4_normalize([
@@ -375,27 +391,39 @@ AC_CHECK_HEADERS(m4_normalize([
        asm/guarded_storage.h
        asm/sysmips.h
        elf.h
+       gcov.h
        iconv.h
-       inttypes.h
+       mqueue.h
+       netinet/sctp.h
+       netipx/ipx.h
+       paths.h
+       scsi/sg.h
+       sys/eventfd.h
+       sys/fanotify.h
+       sys/ipc.h
+       sys/quota.h
+       sys/signalfd.h
+       sys/xattr.h
+       ustat.h
+]))
+
+AC_CHECK_HEADERS(m4_normalize([
        linux/bsg.h
-       linux/cryptouser.h
+       linux/close_range.h
        linux/dm-ioctl.h
        linux/dqblk_xfs.h
        linux/falloc.h
        linux/fib_rules.h
        linux/fiemap.h
        linux/hiddev.h
-       linux/if_addr.h
-       linux/if_link.h
-       linux/io_uring.h
        linux/ip_vs.h
        linux/ipc.h
        linux/kcmp.h
        linux/kvm.h
        linux/memfd.h
        linux/mmtimer.h
-       linux/msg.h
-       linux/neighbour.h
+       linux/mount.h
+       linux/mqueue.h
        linux/netfilter/ipset/ip_set.h
        linux/netfilter/nf_tables.h
        linux/netfilter/nf_tables_compat.h
@@ -407,39 +435,32 @@ AC_CHECK_HEADERS(m4_normalize([
        linux/netfilter/nfnetlink_log.h
        linux/netfilter/nfnetlink_queue.h
        linux/nsfs.h
+       linux/openat2.h
        linux/perf_event.h
        linux/quota.h
+       linux/sched.h
        linux/seccomp.h
        linux/securebits.h
-       linux/sem.h
-       linux/shm.h
+       linux/tee.h
        linux/userfaultfd.h
        linux/utsname.h
-       mqueue.h
-       netinet/sctp.h
-       netipx/ipx.h
-       paths.h
-       scsi/sg.h
-       stropts.h
-       sys/conf.h
-       sys/eventfd.h
-       sys/fanotify.h
-       sys/ipc.h
-       sys/msg.h
-       sys/quota.h
-       sys/sem.h
-       sys/shm.h
-       sys/signalfd.h
-       sys/xattr.h
-       ustat.h
-]))
+]),,, [AC_INCLUDES_DEFAULT
+#include <linux/types.h>
+])
+
+AC_CHECK_HEADERS(m4_normalize([
+       linux/if_addr.h
+       linux/if_link.h
+       linux/neighbour.h
+]),,, [AC_INCLUDES_DEFAULT
+#include <sys/socket.h>
+#include <linux/types.h>
+])
 
 AC_CHECK_HEADERS([asm/sigcontext.h],,, [#include <signal.h>])
 
 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>])
 
@@ -451,10 +472,6 @@ AC_CHECK_HEADERS(m4_normalize([
 ]),,, [#include <netinet/in.h>
 #include <net/if.h>])
 
-AC_CHECK_HEADERS([linux/input.h], [
-       AC_CHECK_MEMBERS([struct input_absinfo.resolution],,, [#include <linux/input.h>])
-])
-
 AC_CHECK_HEADERS([linux/bpf.h], [
        AC_CHECK_TYPES(m4_normalize([
                struct bpf_insn,
@@ -464,54 +481,36 @@ AC_CHECK_HEADERS([linux/bpf.h], [
        st_BPF_ATTR
 ])
 
+AC_CHECK_HEADERS([linux/io_uring.h], [
+       AC_CHECK_MEMBERS(m4_normalize([
+               struct io_cqring_offsets.flags,
+               struct io_uring_params.features,
+               struct io_uring_params.wq_fd,
+               struct io_uring_params.resv
+       ]),,, [#include <linux/io_uring.h>])
+])
+
 AC_CHECK_HEADERS([bluetooth/bluetooth.h], [
+       AC_CHECK_MEMBERS([struct sockaddr_hci.hci_channel],,,
+                        [#include <bluetooth/bluetooth.h>
+                        #include <bluetooth/hci.h>])
        AC_CHECK_MEMBERS([struct sockaddr_l2.l2_bdaddr_type],,,
                         [#include <bluetooth/bluetooth.h>
                         #include <bluetooth/l2cap.h>])
 ])
 
-AC_CHECK_TYPES(m4_normalize([
-       struct br_mdb_entry,
-       struct br_port_msg
-]),,, [#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>])
+]),,, [#include <netinet/in.h>
+#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>])
 
 AC_CHECK_TYPES(m4_normalize([
-       struct rta_mfc_stats,
-       struct rtvia
-]),,, [#include <sys/socket.h>
-#include <linux/rtnetlink.h>])
-
-AC_CHECK_MEMBERS([struct ndt_stats.ndts_table_fulls],,, [#include <linux/neighbour.h>])
-AC_CHECK_TYPES(m4_normalize([
-       struct ndt_config,
-       struct ndt_stats
-]),,, [#include <linux/neighbour.h>])
-
-AC_CHECK_TYPES(m4_normalize([
-       struct ifla_bridge_id,
-       struct ifla_cacheinfo,
-       struct ifla_port_vsi,
-       struct rtnl_link_stats64
-]),,, [#include <sys/socket.h>
-#include <linux/rtnetlink.h>])
-AC_CHECK_MEMBERS(m4_normalize([
-       struct rtnl_link_stats.rx_nohandler,
-       struct rtnl_link_stats64.rx_nohandler
-]),,, [#include <sys/socket.h>
-#include <linux/rtnetlink.h>])
-AC_CHECK_DECLS(m4_normalize([
-       IFLA_PORT_SELF,
-       IFLA_PROTINFO,
-       IFLA_AF_SPEC,
-       IFLA_XDP
+       struct ifla_cacheinfo
 ]),,, [#include <sys/socket.h>
 #include <linux/rtnetlink.h>])
 
@@ -524,13 +523,12 @@ AC_CHECK_TYPES(m4_normalize([
 
 AC_CHECK_TYPES([struct tc_sizespec],,, [#include <linux/types.h>
 #include <linux/pkt_sched.h>])
-AC_CHECK_DECLS([TCA_STAB_DATA],,, [#include <linux/types.h>
-#include <linux/pkt_sched.h>])
 
 AC_CHECK_TYPES(m4_normalize([
        struct fib_rule_uid_range,
        struct fib_rule_port_range
-]),,, [#include <linux/fib_rules.h>])
+]),,, [#include <sys/socket.h>
+#include <linux/fib_rules.h>])
 
 AC_CHECK_TYPES([struct statfs], [
        AC_CHECK_MEMBERS(m4_normalize([
@@ -554,6 +552,9 @@ AC_CHECK_TYPES([struct statfs64], [
 ],, [#include <linux/types.h>
 #include <asm/statfs.h>])
 
+AC_CHECK_TYPES([struct statx],,, [#include <linux/types.h>
+#include <linux/stat.h>])
+
 AC_CHECK_TYPES([struct blk_user_trace_setup],,, [#include <linux/blktrace_api.h>])
 
 AC_CHECK_TYPES([struct mtd_write_req],,, [#include <mtd/mtd-abi.h>])
@@ -588,188 +589,51 @@ fi
 
 AC_CHECK_TYPES([struct __aio_sigset],,, [#include <linux/aio_abi.h>])
 
+AC_CHECK_MEMBERS(m4_normalize([
+               struct iocb.aio_flags,
+               struct iocb.aio_rw_flags
+               ]),,, [#include <linux/aio_abi.h>])
+
+AC_CHECK_MEMBERS([struct clone_args.cgroup],,, [#include <linux/sched.h>])
+
 CPPFLAGS="$saved_CPPFLAGS"
 
 AC_CHECK_HEADERS([linux/btrfs.h], [
        AC_CHECK_MEMBERS(m4_normalize([
                struct btrfs_ioctl_feature_flags.compat_flags,
                struct btrfs_ioctl_fs_info_args.nodesize,
-               struct btrfs_ioctl_defrag_range_args.start,
-               struct btrfs_ioctl_search_args_v2.buf_size,
-               struct btrfs_ioctl_logical_ino_args.flags
+               struct btrfs_ioctl_defrag_range_args.start
                ]),,, [ #include <stdio.h>
-#include <linux/btrfs.h>])
-       AC_CHECK_DECLS(m4_normalize([BTRFS_COMPRESS_NONE, BTRFS_COMPRESS_ZLIB,
-                               BTRFS_COMPRESS_LZO]),,,[ #include <stdio.h>
 #include <linux/btrfs.h>])])
 
+st_CHECK_TYPES
+st_CHECK_ENUMS
+
 AC_CHECK_DECLS([sys_errlist])
 AC_CHECK_DECLS(m4_normalize([
        PTRACE_PEEKUSER,
        PTRACE_POKEUSER
 ]),,, [#include <sys/ptrace.h>])
 
-AC_CHECK_DECLS(m4_normalize([
-       P_PID,
-       P_PPID,
-       P_PGID,
-       P_SID,
-       P_CID,
-       P_UID,
-       P_GID,
-       P_ALL,
-       P_LWPID
-]),,, [#include <sys/wait.h>])
-
-AC_CHECK_DECLS(m4_normalize([
-       LO_FLAGS_READ_ONLY,
-       LO_FLAGS_USE_AOPS,
-       LO_FLAGS_AUTOCLEAR,
-       LO_FLAGS_PARTSCAN,
-       LO_FLAGS_DIRECT_IO
-]),,, [#include <linux/loop.h>])
-
-AC_CHECK_DECLS(m4_normalize([
-       CTL_PROC,
-       CTL_ARLAN,
-       CTL_S390DBF,
-       CTL_SUNRPC,
-       CTL_PM,
-       CTL_FRV,
-       KERN_PRINTK_RATELIMIT,
-       KERN_PRINTK_RATELIMIT_BURST,
-       KERN_PTY,
-       KERN_NGROUPS_MAX,
-       KERN_SPARC_SCONS_PWROFF,
-       KERN_HZ_TIMER,
-       KERN_UNKNOWN_NMI_PANIC,
-       KERN_BOOTLOADER_TYPE,
-       KERN_RANDOMIZE,
-       KERN_SETUID_DUMPABLE,
-       KERN_SPIN_RETRY,
-       KERN_ACPI_VIDEO_FLAGS,
-       KERN_IA64_UNALIGNED,
-       KERN_COMPAT_LOG,
-       KERN_MAX_LOCK_DEPTH,
-       KERN_NMI_WATCHDOG,
-       KERN_PANIC_ON_NMI,
-       KERN_PANIC_ON_WARN,
-       KERN_PANIC_PRINT,
-       NET_LLC,
-       NET_NETFILTER,
-       NET_DCCP,
-       NET_IRDA,
-       NET_CORE_DESTROY_DELAY,
-       NET_CORE_BUDGET,
-       NET_CORE_AEVENT_ETIME,
-       NET_CORE_AEVENT_RSEQTH,
-       NET_CORE_WARNINGS,
-       NET_IPV4_IGMP_MAX_MSF,
-       NET_TCP_NO_METRICS_SAVE,
-       NET_TCP_DEFAULT_WIN_SCALE,
-       NET_TCP_MODERATE_RCVBUF,
-       NET_TCP_TSO_WIN_DIVISOR,
-       NET_TCP_BIC_BETA,
-       NET_IPV4_ICMP_ERRORS_USE_INBOUND_IFADDR,
-       NET_TCP_CONG_CONTROL,
-       NET_TCP_ABC,
-       NET_IPV4_IPFRAG_MAX_DIST,
-       NET_TCP_MTU_PROBING,
-       NET_TCP_BASE_MSS,
-       NET_IPV4_TCP_WORKAROUND_SIGNED_WINDOWS,
-       NET_TCP_DMA_COPYBREAK,
-       NET_TCP_SLOW_START_AFTER_IDLE,
-       NET_CIPSOV4_CACHE_ENABLE,
-       NET_CIPSOV4_CACHE_BUCKET_SIZE,
-       NET_CIPSOV4_RBM_OPTFMT,
-       NET_CIPSOV4_RBM_STRICTVALID,
-       NET_TCP_AVAIL_CONG_CONTROL,
-       NET_TCP_ALLOWED_CONG_CONTROL,
-       NET_TCP_MAX_SSTHRESH,
-       NET_TCP_FRTO_RESPONSE,
-       NET_IPV4_ROUTE_GC_MIN_INTERVAL_MS,
-       NET_IPV4_CONF_FORCE_IGMP_VERSION,
-       NET_IPV4_CONF_ARP_ANNOUNCE,
-       NET_IPV4_CONF_ARP_IGNORE,
-       NET_IPV4_CONF_PROMOTE_SECONDARIES,
-       NET_IPV4_CONF_ARP_ACCEPT,
-       NET_IPV4_CONF_ARP_NOTIFY,
-       NET_IPV6_MLD_MAX_MSF,
-       NET_IPV6_ROUTE_GC_MIN_INTERVAL_MS,
-       VM_MAX_MAP_COUNT,
-       VM_LAPTOP_MODE,
-       VM_BLOCK_DUMP,
-       VM_HUGETLB_GROUP,
-       VM_VFS_CACHE_PRESSURE,
-       VM_LEGACY_VA_LAYOUT,
-       VM_SWAP_TOKEN_TIMEOUT
-]),,,
-[#include <sys/types.h>
-#include <linux/sysctl.h>])
-
-AC_CHECK_DECLS(m4_normalize([
-       V4L2_FIELD_ANY,
-       V4L2_FIELD_NONE,
-       V4L2_FIELD_TOP,
-       V4L2_FIELD_BOTTOM,
-       V4L2_FIELD_INTERLACED,
-       V4L2_FIELD_SEQ_TB,
-       V4L2_FIELD_SEQ_BT,
-       V4L2_FIELD_ALTERNATE,
-       V4L2_FIELD_INTERLACED_TB,
-       V4L2_FIELD_INTERLACED_BT,
-       V4L2_BUF_TYPE_VIDEO_CAPTURE,
-       V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE,
-       V4L2_BUF_TYPE_VIDEO_OUTPUT,
-       V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE,
-       V4L2_BUF_TYPE_VIDEO_OVERLAY,
-       V4L2_BUF_TYPE_VBI_CAPTURE,
-       V4L2_BUF_TYPE_VBI_OUTPUT,
-       V4L2_BUF_TYPE_SLICED_VBI_CAPTURE,
-       V4L2_BUF_TYPE_SLICED_VBI_OUTPUT,
-       V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY,
-       V4L2_BUF_TYPE_SDR_CAPTURE,
-       V4L2_BUF_TYPE_SDR_OUTPUT,
-       V4L2_TUNER_RADIO,
-       V4L2_TUNER_ANALOG_TV,
-       V4L2_TUNER_DIGITAL_TV,
-       V4L2_MEMORY_MMAP,
-       V4L2_MEMORY_USERPTR,
-       V4L2_MEMORY_OVERLAY,
-       V4L2_MEMORY_DMABUF,
-       V4L2_COLORSPACE_SMPTE170M,
-       V4L2_COLORSPACE_SMPTE240M,
-       V4L2_COLORSPACE_REC709,
-       V4L2_COLORSPACE_BT878,
-       V4L2_COLORSPACE_470_SYSTEM_M,
-       V4L2_COLORSPACE_470_SYSTEM_BG,
-       V4L2_COLORSPACE_JPEG,
-       V4L2_COLORSPACE_SRGB,
-       V4L2_PRIORITY_UNSET,
-       V4L2_PRIORITY_BACKGROUND,
-       V4L2_PRIORITY_INTERACTIVE,
-       V4L2_PRIORITY_RECORD,
-       V4L2_FRMSIZE_TYPE_DISCRETE,
-       V4L2_FRMSIZE_TYPE_CONTINUOUS,
-       V4L2_FRMSIZE_TYPE_STEPWISE,
-       V4L2_FRMIVAL_TYPE_DISCRETE,
-       V4L2_FRMIVAL_TYPE_CONTINUOUS,
-       V4L2_FRMIVAL_TYPE_STEPWISE,
-       V4L2_CTRL_TYPE_INTEGER,
-       V4L2_CTRL_TYPE_BOOLEAN,
-       V4L2_CTRL_TYPE_MENU,
-       V4L2_CTRL_TYPE_BUTTON,
-       V4L2_CTRL_TYPE_INTEGER64,
-       V4L2_CTRL_TYPE_CTRL_CLASS,
-       V4L2_CTRL_TYPE_STRING,
-       V4L2_CTRL_TYPE_BITMASK,
-       V4L2_CTRL_TYPE_INTEGER_MENU
+AC_CHECK_TYPES(m4_normalize([
+       struct v4l2_create_buffers,
+       struct v4l2_frmsizeenum,
+       struct v4l2_frmivalenum,
+       struct v4l2_meta_format,
+       struct v4l2_pix_format_mplane,
+       struct v4l2_plane_pix_format,
+       struct v4l2_sdr_format
 ]),,, [#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/videodev2.h>])
 
 AC_CHECK_MEMBERS(m4_normalize([
+       struct v4l2_capability.device_caps,
+       struct v4l2_ext_control.string,
+       struct v4l2_format.fmt.pix_mp,
+       struct v4l2_format.fmt.sdr,
+       struct v4l2_format.fmt.sliced,
        struct v4l2_window.global_alpha,
        struct v4l2_sdr_format.buffersize
 ]),,, [#include <sys/time.h>
@@ -786,6 +650,7 @@ AC_CHECK_SIZEOF([kernel_long_t],,[#include "$srcdir/kernel_types.h"])
 SIZEOF_KERNEL_LONG_T="$ac_cv_sizeof_kernel_long_t"
 AC_SUBST(SIZEOF_KERNEL_LONG_T)
 AC_CHECK_SIZEOF([struct i64_i32],,[struct i64_i32 {long long i64; int i32;};])
+AC_CHECK_SIZEOF([struct msqid64_ds],,[#include <linux/msg.h>])
 
 
 AC_CACHE_CHECK([for SIGRTMIN], [st_cv_SIGRTMIN],
@@ -854,9 +719,15 @@ case "x$st_cv_have_static_assert" in
                ;;
 esac
 
-AC_CHECK_LIB([dl], [dladdr], [dl_LIBS='-ldl'], [dl_LIBS=])
-if test "x$ac_cv_lib_dl_dladdr" = xyes; then
+saved_LIBS="$LIBS"
+AC_SEARCH_LIBS([dladdr], [dl])
+LIBS="$saved_LIBS"
+dl_LIBS=""
+if test "$ac_cv_search_dladdr" != no; then
        AC_DEFINE([HAVE_DLADDR], [1], [Define to 1 if the system provides dladdr])
+       case "$ac_cv_search_dladdr" in
+               -l*) dl_LIBS="$ac_cv_search_dladdr" ;;
+       esac
 fi
 AC_SUBST(dl_LIBS)
 
@@ -889,15 +760,16 @@ case "$ac_cv_search_mq_open" in
 esac
 AC_SUBST(mq_LIBS)
 
-AC_PATH_PROG([PERL], [perl])
-
 AC_CHECK_TOOL([READELF], [readelf])
 
 st_STACKTRACE
 
 if test "$arch" = mips && test "$no_create" != yes; then
        mkdir -p linux/mips
-       if $srcdir/linux/mips/genstub.sh linux/mips; then
+       if $srcdir/linux/mips/genstub.sh \
+          $srcdir/linux/mips linux/mips n32 n64 o32 &&
+          $srcdir/linux/mips/genstub.sh \
+          $srcdir/linux linux/mips common common-32; then
                AC_MSG_RESULT([Generated MIPS syscallent stubs])
        else
                AC_MSG_ERROR([Failed to generate syscallent stubs])
@@ -918,7 +790,40 @@ AC_ARG_ENABLE([mpers],
         esac],
        [enable_mpers=yes])
 
-st_MPERS([m32], [aarch64|powerpc64|riscv|s390x|sparc64|tile|x32|x86_64])
+AS_IF([test x$arch = xaarch64],
+      [# So far, only aarch64 needs a separate compiler for its compat
+       # personality (which is AArch32, that is more or less ARMv7 EABI)
+       #
+       # Some heuristics regarding possible compiler name:
+       #   Debian:  arm-linux-gnueabi{,hf}-gcc
+       #   SuSE:    arm7{,hl}-linux-gnueabi-gcc
+       #   Red Hat: arm-redhat-linux-gnu-gcc
+       #   Fedora:  arm-linux-gnu-gcc
+       #   ALT:     armh-alt-linux-gnueabi-gcc
+       m4_foreach([triplet1], [arm, arm7, arm7hl, armh], dnl
+                 [m4_foreach([triplet2], [, $host_vendor-], dnl
+                             [m4_foreach([triplet3], [gnu, gnueabi, gnueabihf], dnl
+                                         [m4_foreach([triplet_cc], [gcc, cc], dnl
+                                                     [m4_append([arm_compat_compilers], dnl
+                                                                triplet1[-]triplet2[linux-]triplet3[-]triplet_cc)])])])])
+       AC_CHECK_PROGS(CC_FOR_M32, arm_compat_compilers)
+       AS_IF([test -n "$CC_FOR_M32"],
+            [: ${CPP_FOR_M32=$CC_FOR_M32 -E}
+             : ${CFLAGS_FOR_M32=-std=gnu99}
+             : ${CPPFLAGS_FOR_M32=}
+            ])
+      ])
+
+# Set default compiler variables for personalities.
+m4_foreach([pers], [M32, MX32], dnl
+          [m4_foreach([var], [CC, CPP, CPPFLAGS], dnl
+                      [[: ${]var[_FOR_]pers[=$]var[}]
+                       AC_SUBST(var[_FOR_]pers)]) dnl
+           m4_foreach([var], [CFLAGS], dnl
+                      [[: ${]var[_FOR_]pers[=][}]
+                       AC_SUBST(var[_FOR_]pers)])])
+
+st_MPERS([m32], [aarch64|powerpc64|s390x|sparc64|tile|x32|x86_64])
 st_MPERS([mx32], [x86_64])
 
 AX_VALGRIND_DFLT([sgcheck], [off])
diff --git a/copyright-year-gen b/copyright-year-gen
new file mode 100755 (executable)
index 0000000..e044601
--- /dev/null
@@ -0,0 +1,39 @@
+#!/bin/sh
+#
+# Copyright (c) 2017-2019 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+: ${YEAR_FILE:=$1}
+: ${DEFAULT_YEAR:=$2}
+LC_TIME=C; export LC_TIME
+
+year=
+
+[ -n "${YEAR_FILE}" ] || {
+       echo >&2 "$0 $(dirname "$0")/.year [DEFAULT_YEAR]"
+       exit 1
+}
+
+[ -f "${YEAR_FILE}" ] && year="$(cat "${YEAR_FILE}")"
+
+[ -n "${year}" ] ||
+       year="$(date -u +%Y -d "$(git show -s --format=format:%cD)")"
+
+[ -n "${year}" ] ||
+       year="${DEFAULT_YEAR}"
+
+[ -n "${year}" ] ||
+       [ -z "${SOURCE_DATE_EPOCH-}" ] ||
+       year="$(date -u +%Y -d "@${SOURCE_DATE_EPOCH}")"
+
+[ -n "${year}" ] ||
+       year="$(date -u +%Y)"
+
+[ -n "${year}" ] || {
+       printf >&2 "%s: Undefined year.\n" "$0"
+       exit 1
+}
+
+printf "%s" "${year}"
diff --git a/count.c b/count.c
index 561afe448d7d33e18d5214a79d1c35d637f96718..a397eba2b0be91aa90f1c8e492a5b415c016d8e4 100644 (file)
--- a/count.c
+++ b/count.c
@@ -8,7 +8,7 @@
  *                    <barrow_dj@mail.yahoo.com,djbarrow@de.ibm.com>
  * Copyright (c) 2004 Roland McGrath <roland@redhat.com>
  * Copyright (c) 2006 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2006-2018 The strace developers.
+ * Copyright (c) 2006-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
 
 #include "defs.h"
 
+#include <stdarg.h>
+
 /* Per-syscall stats structure */
 struct call_counts {
        /* time may be total latency or system time */
        struct timespec time;
-       unsigned int calls, errors;
+       struct timespec time_min;
+       struct timespec time_max;
+       struct timespec time_avg;
+       uint64_t calls, errors;
 };
 
 static struct call_counts *countv[SUPPORTED_PERSONALITIES];
 #define counts (countv[current_personality])
 
+static const struct timespec zero_ts;
+static const struct timespec max_ts = {
+       (time_t) (long long) (zero_extend_signed_to_ull((time_t) -1ULL) >> 1),
+       999999999 };
+
 static struct timespec overhead;
 
+
+enum count_summary_columns {
+       CSC_NONE,
+       CSC_TIME_100S,
+       CSC_TIME_TOTAL,
+       CSC_TIME_MIN,
+       CSC_TIME_MAX,
+       CSC_TIME_AVG,
+       CSC_CALLS,
+       CSC_ERRORS,
+       CSC_SC_NAME,
+
+       CSC_MAX,
+};
+
+static uint8_t columns[CSC_MAX] = {
+       CSC_TIME_100S,
+       CSC_TIME_TOTAL,
+       CSC_TIME_AVG,
+       CSC_CALLS,
+       CSC_ERRORS,
+       CSC_SC_NAME,
+};
+
+static const struct {
+       const char *name;
+       uint8_t     column;
+} column_aliases[] = {
+       { "time",         CSC_TIME_100S  },
+       { "time_percent", CSC_TIME_100S  },
+       { "time-percent", CSC_TIME_100S  },
+       { "time_total",   CSC_TIME_TOTAL },
+       { "time-total",   CSC_TIME_TOTAL },
+       { "total_time",   CSC_TIME_TOTAL },
+       { "total-time",   CSC_TIME_TOTAL },
+       { "min_time",     CSC_TIME_MIN   },
+       { "min-time",     CSC_TIME_MIN   },
+       { "shortest",     CSC_TIME_MIN   },
+       { "time_min",     CSC_TIME_MIN   },
+       { "time-min",     CSC_TIME_MIN   },
+       { "longest" ,     CSC_TIME_MAX   },
+       { "max_time",     CSC_TIME_MAX   },
+       { "max-time",     CSC_TIME_MAX   },
+       { "time_max",     CSC_TIME_MAX   },
+       { "time-max",     CSC_TIME_MAX   },
+       { "avg_time",     CSC_TIME_AVG   },
+       { "avg-time",     CSC_TIME_AVG   },
+       { "time_avg",     CSC_TIME_AVG   },
+       { "time-avg",     CSC_TIME_AVG   },
+       { "calls",        CSC_CALLS      },
+       { "count",        CSC_CALLS      },
+       { "error",        CSC_ERRORS     },
+       { "errors",       CSC_ERRORS     },
+       { "name",         CSC_SC_NAME    },
+       { "syscall",      CSC_SC_NAME    },
+       { "syscall_name", CSC_SC_NAME    },
+       { "syscall-name", CSC_SC_NAME    },
+       { "none",         CSC_NONE       },
+       { "nothing",      CSC_NONE       },
+};
+
 void
 count_syscall(struct tcb *tcp, const struct timespec *syscall_exiting_ts)
 {
        if (!scno_in_range(tcp->scno))
                return;
 
-       if (!counts)
+       if (!counts) {
                counts = xcalloc(nsyscalls, sizeof(*counts));
+
+               for (size_t i = 0; i < nsyscalls; i++)
+                       counts[i].time_min = max_ts;
+       }
        struct call_counts *cc = &counts[tcp->scno];
 
        cc->calls++;
        if (syserror(tcp))
                cc->errors++;
 
+       struct timespec wts;
        if (count_wallclock) {
                /* wall clock time spent while in syscall */
-               struct timespec wts;
                ts_sub(&wts, syscall_exiting_ts, &tcp->etime);
-
-               ts_add(&cc->time, &cc->time, &wts);
        } else {
                /* system CPU time spent while in syscall */
-               ts_add(&cc->time, &cc->time, &tcp->dtime);
+               ts_sub(&wts, &tcp->stime, &tcp->ltime);
        }
+
+       ts_sub(&wts, &wts, &overhead);
+
+       const struct timespec *wts_nonneg = ts_max(&wts, &zero_ts);
+
+       ts_add(&cc->time, &cc->time, wts_nonneg);
+       cc->time_min = *ts_min(&cc->time_min, wts_nonneg);
+       cc->time_max = *ts_max(&cc->time_max, wts_nonneg);
+}
+
+static int
+time_cmp(const void *a, const void *b)
+{
+       const unsigned int *a_int = a;
+       const unsigned int *b_int = b;
+       return -ts_cmp(&counts[*a_int].time, &counts[*b_int].time);
+}
+
+static int
+min_time_cmp(const void *a, const void *b)
+{
+       return -ts_cmp(&counts[*((unsigned int *) a)].time_min,
+                      &counts[*((unsigned int *) b)].time_min);
+}
+
+static int
+max_time_cmp(const void *a, const void *b)
+{
+       return -ts_cmp(&counts[*((unsigned int *) a)].time_max,
+                      &counts[*((unsigned int *) b)].time_max);
 }
 
 static int
-time_cmp(void *a, void *b)
+avg_time_cmp(const void *a, const void *b)
 {
-       return -ts_cmp(&counts[*((int *) a)].time,
-                      &counts[*((int *) b)].time);
+       return -ts_cmp(&counts[*((unsigned int *) a)].time_avg,
+                      &counts[*((unsigned int *) b)].time_avg);
 }
 
 static int
-syscall_cmp(void *a, void *b)
+syscall_cmp(const void *a, const void *b)
 {
-       const char *a_name = sysent[*((int *) a)].sys_name;
-       const char *b_name = sysent[*((int *) b)].sys_name;
+       const unsigned int *a_int = a;
+       const unsigned int *b_int = b;
+       const char *a_name = sysent[*a_int].sys_name;
+       const char *b_name = sysent[*b_int].sys_name;
        return strcmp(a_name ? a_name : "", b_name ? b_name : "");
 }
 
 static int
-count_cmp(void *a, void *b)
+count_cmp(const void *a, const void *b)
 {
-       int     m = counts[*((int *) a)].calls;
-       int     n = counts[*((int *) b)].calls;
+       const unsigned int *a_int = a;
+       const unsigned int *b_int = b;
+       unsigned int m = counts[*a_int].calls;
+       unsigned int n = counts[*b_int].calls;
 
        return (m < n) ? 1 : (m > n) ? -1 : 0;
 }
 
-static int (*sortfun)();
+static int
+error_cmp(const void *a, const void *b)
+{
+       const unsigned int *a_int = a;
+       const unsigned int *b_int = b;
+       unsigned int m = counts[*a_int].errors;
+       unsigned int n = counts[*b_int].errors;
+
+       return (m < n) ? 1 : (m > n) ? -1 : 0;
+}
+
+typedef int (*sort_func)(const void *, const void *);
+static sort_func sortfun;
 
 void
 set_sortby(const char *sortby)
 {
-       if (strcmp(sortby, "time") == 0)
-               sortfun = time_cmp;
-       else if (strcmp(sortby, "calls") == 0)
-               sortfun = count_cmp;
-       else if (strcmp(sortby, "name") == 0)
-               sortfun = syscall_cmp;
-       else if (strcmp(sortby, "nothing") == 0)
-               sortfun = NULL;
-       else {
-               error_msg_and_help("invalid sortby: '%s'", sortby);
+       static const sort_func sort_fns[CSC_MAX] = {
+               [CSC_TIME_100S]  = time_cmp,
+               [CSC_TIME_TOTAL] = time_cmp,
+               [CSC_TIME_MIN]   = min_time_cmp,
+               [CSC_TIME_MAX]   = max_time_cmp,
+               [CSC_TIME_AVG]   = avg_time_cmp,
+               [CSC_CALLS]      = count_cmp,
+               [CSC_ERRORS]     = error_cmp,
+               [CSC_SC_NAME]    = syscall_cmp,
+       };
+
+       for (size_t i = 0; i < ARRAY_SIZE(column_aliases); ++i) {
+               if (!strcmp(column_aliases[i].name, sortby)) {
+                       sortfun = sort_fns[column_aliases[i].column];
+                       return;
+               }
+       }
+
+       error_msg_and_help("invalid sortby: '%s'", sortby);
+}
+
+void
+set_count_summary_columns(const char *s)
+{
+       uint8_t visible[CSC_MAX] = { 0 };
+       const char *prev = s;
+       size_t cur = 0;
+
+       memset(columns, 0, sizeof(columns));
+
+       for (;;) {
+               bool found = false;
+               const char *pos = strchr(prev, ',');
+               size_t len = pos ? (size_t) (pos - prev) : strlen(prev);
+
+               for (size_t i = 0; i < ARRAY_SIZE(column_aliases); i++) {
+                       if (strncmp(column_aliases[i].name, prev, len) ||
+                           column_aliases[i].name[len])
+                               continue;
+                       if (column_aliases[i].column == CSC_NONE ||
+                           column_aliases[i].column >= CSC_MAX)
+                               continue;
+
+                       if (visible[column_aliases[i].column])
+                               error_msg_and_help("call summary column "
+                                                  "has been provided more "
+                                                  "than once: '%s' (-U option "
+                                                  "residual: '%s')",
+                                                  column_aliases[i].name,
+                                                  prev);
+
+                       columns[cur++] = column_aliases[i].column;
+                       visible[column_aliases[i].column] = 1;
+                       found = true;
+
+                       break;
+               }
+
+               if (!found)
+                       error_msg_and_help("unknown column name: '%.*s'",
+                                          (int) MIN(len, INT_MAX), prev);
+
+               if (!pos)
+                       break;
+
+               prev = pos + 1;
        }
+
+       /*
+        * Always enable syscall name column, as without it table is meaningless
+        */
+       if (!visible[CSC_SC_NAME])
+               columns[cur++] = CSC_SC_NAME;
 }
 
-void set_overhead(int n)
+int
+set_overhead(const char *str)
 {
-       overhead.tv_sec = n / 1000000;
-       overhead.tv_nsec = n % 1000000 * 1000;
+       return parse_ts(str, &overhead);
+}
+
+static size_t ATTRIBUTE_FORMAT((printf, 1, 2))
+num_chars(const char *fmt, ...)
+{
+       va_list ap;
+
+       va_start(ap, fmt);
+       int ret = vsnprintf(NULL, 0, fmt, ap);
+       va_end(ap);
+
+       return (unsigned int) MAX(ret, 0);
 }
 
 static void
 call_summary_pers(FILE *outf)
 {
-       static const char dashes[]  = "----------------";
-       static const char header[]  = "%6.6s %11.11s %11.11s %9.9s %9.9s %s\n";
-       static const char data[]    = "%6.2f %11.6f %11lu %9u %9.u %s\n";
-       static const char summary[] = "%6.6s %11.6f %11.11s %9u %9.u %s\n";
-
-       unsigned int i;
-       unsigned int call_cum, error_cum;
-       struct timespec tv_cum, dtv;
-       double  float_tv_cum;
-       double  percent;
-       unsigned int *sorted_count;
-
-       fprintf(outf, header,
-               "% time", "seconds", "usecs/call",
-               "calls", "errors", "syscall");
-       fprintf(outf, header, dashes, dashes, dashes, dashes, dashes, dashes);
-
-       sorted_count = xcalloc(sizeof(sorted_count[0]), nsyscalls);
-       call_cum = error_cum = tv_cum.tv_sec = tv_cum.tv_nsec = 0;
-       for (i = 0; i < nsyscalls; i++) {
-               sorted_count[i] = i;
-               if (counts == NULL || counts[i].calls == 0)
+       unsigned int *indices;
+       size_t last_column = 0;
+
+       struct timespec tv_cum = zero_ts;
+       const struct timespec *tv_min = &max_ts;
+       const struct timespec *tv_min_max = &zero_ts;
+       const struct timespec *tv_max = &zero_ts;
+       const struct timespec *tv_avg_max = &zero_ts;
+       uint64_t call_cum = 0;
+       uint64_t error_cum = 0;
+
+       double float_tv_cum;
+       double percent;
+
+       size_t sc_name_max = 0;
+
+
+       /* sort, calculate statistics */
+       indices = xcalloc(sizeof(indices[0]), nsyscalls);
+       for (size_t i = 0; i < nsyscalls; ++i) {
+               indices[i] = i;
+               if (counts[i].calls == 0)
                        continue;
-               ts_mul(&dtv, &overhead, counts[i].calls);
-               ts_sub(&counts[i].time, &counts[i].time, &dtv);
-               if (counts[i].time.tv_sec < 0 || counts[i].time.tv_nsec < 0)
-                       counts[i].time.tv_sec = counts[i].time.tv_nsec = 0;
+
+               ts_add(&tv_cum, &tv_cum, &counts[i].time);
+               tv_min = ts_min(tv_min, &counts[i].time_min);
+               tv_min_max = ts_max(tv_min_max, &counts[i].time_min);
+               tv_max = ts_max(tv_max, &counts[i].time_max);
                call_cum += counts[i].calls;
                error_cum += counts[i].errors;
-               ts_add(&tv_cum, &tv_cum, &counts[i].time);
+
+               ts_div(&counts[i].time_avg, &counts[i].time, counts[i].calls);
+               tv_avg_max = ts_max(tv_avg_max, &counts[i].time_avg);
+
+               sc_name_max = MAX(sc_name_max, strlen(sysent[i].sys_name));
        }
        float_tv_cum = ts_float(&tv_cum);
-       if (counts) {
-               if (sortfun)
-                       qsort((void *) sorted_count, nsyscalls,
-                             sizeof(sorted_count[0]), sortfun);
-               for (i = 0; i < nsyscalls; i++) {
-                       double float_syscall_time;
-                       unsigned int idx = sorted_count[i];
-                       struct call_counts *cc = &counts[idx];
-                       if (cc->calls == 0)
-                               continue;
-                       ts_div(&dtv, &cc->time, cc->calls);
-                       float_syscall_time = ts_float(&cc->time);
-                       percent = (100.0 * float_syscall_time);
-                       if (percent != 0.0)
-                                  percent /= float_tv_cum;
-                       /* else: float_tv_cum can be 0.0 too and we get 0/0 = NAN */
-                       fprintf(outf, data,
-                               percent, float_syscall_time,
-                               (long) (1000000 * dtv.tv_sec + dtv.tv_nsec / 1000),
-                               cc->calls, cc->errors, sysent[idx].sys_name);
+
+       if (sortfun)
+               qsort((void *) indices, nsyscalls, sizeof(indices[0]), sortfun);
+
+       enum column_flags {
+               CF_L = 1 << 0, /* Left-aligned column */
+       };
+       static const struct {
+               const char *s;
+               size_t sz;
+               const char *fmt;
+               const char *last_fmt;
+               uint32_t flags;
+       } cdesc[] = {
+               [CSC_TIME_100S]  = { ARRSZ_PAIR("% time") - 1,   "%1$*2$.2f" },
+               [CSC_TIME_MIN]   = { ARRSZ_PAIR("shortest") - 1, "%1$*2$.6f" },
+               [CSC_TIME_MAX]   = { ARRSZ_PAIR("longest") - 1,  "%1$*2$.6f" },
+               /* Historical field sizes are preserved */
+               [CSC_TIME_TOTAL] = { "seconds",    11, "%1$*2$.6f" },
+               [CSC_TIME_AVG]   = { "usecs/call", 11, "%1$*2$" PRIu64 },
+               [CSC_CALLS]      = { "calls",       9, "%1$*2$" PRIu64 },
+               [CSC_ERRORS]     = { "errors",      9, "%1$*2$.0" PRIu64 },
+               [CSC_SC_NAME]    = { "syscall",    16, "%1$-*2$s", "%1$s", CF_L },
+       };
+
+       /* calculate column widths */
+#define W_(c_, v_) [c_] = MAX(cdesc[c_].sz, (v_))
+       unsigned int cwidths[CSC_MAX] = {
+               W_(CSC_TIME_100S,  sizeof("100.00") - 1),
+               W_(CSC_TIME_TOTAL, num_chars("%.6f", float_tv_cum)),
+               W_(CSC_TIME_MIN,   num_chars("%" PRId64 ".000000",
+                                            (int64_t) tv_min_max->tv_sec)),
+               W_(CSC_TIME_MAX,   num_chars("%" PRId64 ".000000",
+                                            (int64_t) tv_max->tv_sec)),
+               W_(CSC_TIME_AVG,   num_chars("%" PRId64 ,
+                                            (uint64_t) (ts_float(tv_avg_max)
+                                                        * 1e6))),
+               W_(CSC_CALLS,      num_chars("%" PRIu64, call_cum)),
+               W_(CSC_ERRORS,     num_chars("%" PRIu64, error_cum)),
+               W_(CSC_SC_NAME,    sc_name_max + 1),
+       };
+#undef W_
+
+       /* find the last column */
+       for (size_t i = 0; i < ARRAY_SIZE(columns) && columns[i]; ++i)
+               last_column = i;
+
+       /* header */
+       for (size_t i = 0; i <= last_column; ++i) {
+               const char *fmt = cdesc[columns[i]].flags & CF_L
+                                 ? (i == last_column ? "%1$s" : "%1$-*2$s")
+                                 : "%1$*2$s";
+               if (i)
+                       fputc(' ', outf);
+               fprintf(outf, fmt, cdesc[columns[i]].s, cwidths[columns[i]]);
+       }
+       fputc('\n', outf);
+
+       /* divider */
+       for (size_t i = 0; i <= last_column; ++i) {
+               if (i)
+                       fputc(' ', outf);
+
+               for (size_t j = 0; j < cwidths[columns[i]]; ++j)
+                       fputc('-', outf);
+       }
+       fputc('\n', outf);
+
+       /* cache column formats */
+#define FC_(c_) \
+       case (c_): \
+               column_fmts[i] = (i == last_column) && cdesc[c].last_fmt \
+                                ? cdesc[c].last_fmt : cdesc[c].fmt; \
+               break
+#define PC_(c_, val_) \
+       case (c_): \
+               fprintf(outf, column_fmts[i], (val_), cwidths[c]); \
+               break
+
+       const char *column_fmts[last_column + 1];
+       for (size_t i = 0; i <= last_column; ++i) {
+               const size_t c = columns[i];
+
+               switch (c) {
+               FC_(CSC_TIME_100S);
+               FC_(CSC_TIME_TOTAL);
+               FC_(CSC_TIME_MIN);
+               FC_(CSC_TIME_MAX);
+               FC_(CSC_TIME_AVG);
+               FC_(CSC_CALLS);
+               FC_(CSC_ERRORS);
+               FC_(CSC_SC_NAME);
+               }
+       }
+
+       /* data output */
+       for (size_t j = 0; j < nsyscalls; ++j) {
+               unsigned int idx = indices[j];
+               struct call_counts *cc = &counts[idx];
+               double float_syscall_time;
+
+               if (cc->calls == 0)
+                       continue;
+
+               float_syscall_time = ts_float(&cc->time);
+               percent = (100.0 * float_syscall_time);
+               /* else: float_tv_cum can be 0.0 too and we get 0/0 = NAN */
+               if (percent != 0.0)
+                          percent /= float_tv_cum;
+
+               for (size_t i = 0; i <= last_column; ++i) {
+                       const size_t c = columns[i];
+                       if (i)
+                               fputc(' ', outf);
+
+                       switch (c) {
+                       PC_(CSC_TIME_100S,  percent);
+                       PC_(CSC_TIME_TOTAL, float_syscall_time);
+                       PC_(CSC_TIME_MIN,   ts_float(&cc->time_min));
+                       PC_(CSC_TIME_MAX,   ts_float(&cc->time_max));
+                       PC_(CSC_TIME_AVG,
+                           (uint64_t) (ts_float(&cc->time_avg) * 1e6));
+                       PC_(CSC_CALLS,      cc->calls);
+                       PC_(CSC_ERRORS,     cc->errors);
+                       PC_(CSC_SC_NAME,    sysent[idx].sys_name);
+                       }
+               }
+
+               fputc('\n', outf);
+       }
+
+       free(indices);
+
+       /* footer */
+       for (size_t i = 0; i <= last_column; ++i) {
+               if (i)
+                       fputc(' ', outf);
+
+               for (size_t j = 0; j < cwidths[columns[i]]; ++j)
+                       fputc('-', outf);
+       }
+       fputc('\n', outf);
+
+       /* totals */
+       for (size_t i = 0; i <= last_column; ++i) {
+               const size_t c = columns[i];
+               if (i)
+                       fputc(' ', outf);
+
+               switch (c) {
+               PC_(CSC_TIME_100S, 100.0);
+               PC_(CSC_TIME_TOTAL, float_tv_cum);
+               PC_(CSC_TIME_MIN, ts_float(tv_min));
+               PC_(CSC_TIME_MAX, ts_float(tv_max));
+               PC_(CSC_TIME_AVG, (uint64_t) (float_tv_cum / call_cum * 1e6));
+               PC_(CSC_CALLS, call_cum);
+               PC_(CSC_ERRORS, error_cum);
+               PC_(CSC_SC_NAME, "total");
                }
        }
-       free(sorted_count);
+       fputc('\n', outf);
 
-       fprintf(outf, header, dashes, dashes, dashes, dashes, dashes, dashes);
-       fprintf(outf, summary,
-               "100.00", float_tv_cum, "",
-               call_cum, error_cum, "total");
+#undef PC_
+#undef FC_
 }
 
 void
index b2c835a57e851b13abb36bde5fda0505a9f5f851..884ccb495fb3beb4f260e154869ed7cc76a83990 100644 (file)
@@ -1,8 +1,56 @@
-strace (5.1-1) experimental; urgency=low
+strace (5.9-1) experimental; urgency=low
 
-  * strace 5.1 snapshot.
+  * strace 5.9 snapshot.
 
- -- Strace <strace-devel@lists.strace.io>  Wed, 22 May 2019 13:08:43 +0000
+ -- Strace <strace-devel@lists.strace.io>  Thu, 24 Sep 2020 09:19:03 +0000
+
+strace (5.8-1) unstable; urgency=medium
+
+  * New upstream version.
+
+ -- Dmitry V. Levin <ldv@altlinux.org>  Thu, 06 Aug 2020 08:00:00 +0000
+
+strace (5.7-1) unstable; urgency=medium
+
+  * New upstream version.
+
+ -- Dmitry V. Levin <ldv@altlinux.org>  Mon, 01 Jun 2020 14:15:16 +0000
+
+strace (5.6-1) unstable; urgency=medium
+
+  * New upstream version.
+
+ -- Dmitry V. Levin <ldv@altlinux.org>  Tue, 07 Apr 2020 10:11:12 +0000
+
+strace (5.5-1) unstable; urgency=medium
+
+  * New upstream version.
+
+ -- Dmitry V. Levin <ldv@altlinux.org>  Thu, 06 Feb 2020 15:16:17 +0000
+
+strace (5.4-1) unstable; urgency=medium
+
+  * New upstream version.
+
+ -- Dmitry V. Levin <ldv@altlinux.org>  Thu, 28 Nov 2019 20:21:22 +0000
+
+strace (5.3-1) unstable; urgency=medium
+
+  * New upstream version.
+
+ -- Dmitry V. Levin <ldv@altlinux.org>  Wed, 25 Sep 2019 01:02:03 +0000
+
+strace (5.2-1) unstable; urgency=medium
+
+  * New upstream version.
+
+ -- Dmitry V. Levin <ldv@altlinux.org>  Fri, 12 Jul 2019 12:13:14 +0000
+
+strace (5.1-1) unstable; urgency=medium
+
+  * New upstream version.
+
+ -- Dmitry V. Levin <ldv@altlinux.org>  Wed, 22 May 2019 11:12:13 +0000
 
 strace (5.0-1) unstable; urgency=medium
 
index 51e2fda73febc881d8ac01f1f6139f48e5621a32..8427edc9fd2f3429c6536ecbf1e6bb5a30c0ef16 100644 (file)
@@ -4,6 +4,54 @@ strace (@PACKAGE_VERSION@-1) experimental; urgency=low
 
  -- Strace <@PACKAGE_BUGREPORT@>  @DEB_CHANGELOGTIME@
 
+strace (5.8-1) unstable; urgency=medium
+
+  * New upstream version.
+
+ -- Dmitry V. Levin <ldv@altlinux.org>  Thu, 06 Aug 2020 08:00:00 +0000
+
+strace (5.7-1) unstable; urgency=medium
+
+  * New upstream version.
+
+ -- Dmitry V. Levin <ldv@altlinux.org>  Mon, 01 Jun 2020 14:15:16 +0000
+
+strace (5.6-1) unstable; urgency=medium
+
+  * New upstream version.
+
+ -- Dmitry V. Levin <ldv@altlinux.org>  Tue, 07 Apr 2020 10:11:12 +0000
+
+strace (5.5-1) unstable; urgency=medium
+
+  * New upstream version.
+
+ -- Dmitry V. Levin <ldv@altlinux.org>  Thu, 06 Feb 2020 15:16:17 +0000
+
+strace (5.4-1) unstable; urgency=medium
+
+  * New upstream version.
+
+ -- Dmitry V. Levin <ldv@altlinux.org>  Thu, 28 Nov 2019 20:21:22 +0000
+
+strace (5.3-1) unstable; urgency=medium
+
+  * New upstream version.
+
+ -- Dmitry V. Levin <ldv@altlinux.org>  Wed, 25 Sep 2019 01:02:03 +0000
+
+strace (5.2-1) unstable; urgency=medium
+
+  * New upstream version.
+
+ -- Dmitry V. Levin <ldv@altlinux.org>  Fri, 12 Jul 2019 12:13:14 +0000
+
+strace (5.1-1) unstable; urgency=medium
+
+  * New upstream version.
+
+ -- Dmitry V. Levin <ldv@altlinux.org>  Wed, 22 May 2019 11:12:13 +0000
+
 strace (5.0-1) unstable; urgency=medium
 
   * New upstream version.
index 38e13a13403f14170a916bf861525a03eb390890..0da25c4b992884635e6d6838de9f596b20b6fc2d 100644 (file)
@@ -2,7 +2,7 @@ Source: strace
 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 ppc64el s390 s390x sparc sparc64 x32], debhelper (>= 7.0.0), gawk, libdw-dev, libiberty-dev, libbluetooth-dev
+Build-Depends: libc6-dev (>= 2.2.2) [!alpha !ia64], libc6.1-dev (>= 2.2.2) [alpha ia64], gcc-multilib [amd64 i386 powerpc ppc64 s390 s390x sparc sparc64 x32], gcc-arm-linux-gnueabi [arm64]|gcc-arm-linux-gnueabihf [arm64], libc6-dev-armel-cross [arm64]|libc6-dev-armhf-cross [arm64], linux-libc-dev-armel-cross [arm64]|linux-libc-dev-armhf-cross [arm64], debhelper (>= 7.0.0), gawk, libdw-dev, libiberty-dev, libbluetooth-dev
 Standards-Version: 4.1.3
 Homepage: https://strace.io
 Vcs-Git: https://salsa.debian.org/debian/strace.git
index abaa28b61b2e5c87e1f9ed47b7e02fe960fdf181..217b9a00ca3a04cfab9088ba7219b013289a2b7c 100644 (file)
@@ -11,7 +11,7 @@ Copyright (c) 1993 Ulrich Pegelow <pegelow@moorea.uni-muenster.de>
 Copyright (c) 1995, 1996 Michael Elizabeth Chastain <mec@duracef.shout.net>
 Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com>
 Copyright (c) 1998-2001 Wichert Akkerman <wakkerma@deephackmode.org>
-Copyright (c) 2001-2019 The strace developers.
+Copyright (c) 2001-2020 The strace developers.
 All rights reserved.
 
 strace is free software; you can redistribute it and/or modify it
index b22767acf04683c3ac915f8c1da438a1ab2c9b82..87c7bc061db0d4851be906efd3520a6da0ffa8b7 100755 (executable)
@@ -61,7 +61,7 @@ build/Makefile: configure
 build-udeb/Makefile: configure
        mkdir -p $(@D)
        cd $(@D); sh ../configure --enable-mpers=check --prefix=/usr \
-               --without-stacktrace --without-libiberty $(CONFIG_OPTS)
+               --disable-stacktrace --without-libiberty $(CONFIG_OPTS)
 
 build64/Makefile: configure
        mkdir -p $(@D)
index 8bb7f45ac22d2e6452d2b3f9acf158612c4256e1..a3fc620479766dd48ce8e995126ba3162969b27d 100644 (file)
@@ -1,2 +1,2 @@
-version=3
-opts=pgpsigurlmangle=s/$/.asc/,uversionmangle=s/-/./g http://sf.net/strace/strace-([[:digit:].-]*)\.tar\.xz
+version=4
+opts=pgpsigurlmangle=s/$/.asc/,uversionmangle=s/-/./g https://strace.io/files/@ANY_VERSION@/@PACKAGE@-@ANY_VERSION@@ARCHIVE_EXT@
diff --git a/defs.h b/defs.h
index 512ad51f513ccfbd9649e1ac52b2ad78bb76e590..7151e90cb5240f749dd4b1e33bc963c8afa17a37 100644 (file)
--- a/defs.h
+++ b/defs.h
@@ -2,7 +2,7 @@
  * Copyright (c) 1991, 1992 Paul Kranenburg <pk@cs.few.eur.nl>
  * Copyright (c) 1993 Branko Lankester <branko@hacktic.nl>
  * Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com>
- * Copyright (c) 2001-2019 The strace developers.
+ * Copyright (c) 1999-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -153,6 +153,63 @@ extern char *stpcpy(char *dst, const char *src);
 #  define is_bigendian false
 # endif
 
+# if SUPPORTED_PERSONALITIES > 1
+extern void set_personality(unsigned int personality);
+extern unsigned current_personality;
+# else
+#  define set_personality(personality) ((void)0)
+#  define current_personality 0
+# endif
+
+# if SUPPORTED_PERSONALITIES == 1
+#  define current_wordsize PERSONALITY0_WORDSIZE
+#  define current_klongsize PERSONALITY0_KLONGSIZE
+# else
+#  if SUPPORTED_PERSONALITIES == 2 && PERSONALITY0_WORDSIZE == PERSONALITY1_WORDSIZE
+#   define current_wordsize PERSONALITY0_WORDSIZE
+#  else
+extern unsigned current_wordsize;
+#  endif
+#  if SUPPORTED_PERSONALITIES == 2 && PERSONALITY0_KLONGSIZE == PERSONALITY1_KLONGSIZE
+#   define current_klongsize PERSONALITY0_KLONGSIZE
+#  else
+extern unsigned current_klongsize;
+#  endif
+# endif
+
+# define max_addr() (~0ULL >> ((8 - current_wordsize) * 8))
+# define max_kaddr() (~0ULL >> ((8 - current_klongsize) * 8))
+
+/* Shorthands for defining word/klong-based dispatcher function bodies */
+# ifndef current_wordsize
+#  define opt_wordsize(opt_64_, opt_32_) \
+       ((current_wordsize > sizeof(uint32_t)) ? (opt_64_) : (opt_32_))
+#  define dispatch_wordsize(call_64_, call_32_, ...) \
+       ((current_wordsize > sizeof(uint32_t)) \
+               ? (call_64_)(__VA_ARGS__) : (call_32_)(__VA_ARGS__))
+# elif current_wordsize > 4
+#  define opt_wordsize(opt_64_, opt_32_) (opt_64_)
+#  define dispatch_wordsize(call_64_, call_32_, ...) ((call_64_)(__VA_ARGS__))
+# else /* current_wordsize == 4 */
+#  define opt_wordsize(opt_64_, opt_32_) (opt_32_)
+#  define dispatch_wordsize(call_64_, call_32_, ...) ((call_32_)(__VA_ARGS__))
+# endif
+
+# ifndef current_klongsize
+#  define opt_klongsize(opt_64_, opt_32_) \
+       ((current_klongsize > sizeof(uint32_t)) ? (opt_64_) : (opt_32_))
+#  define dispatch_klongsize(call_64_, call_32_, ...) \
+       ((current_klongsize > sizeof(uint32_t)) \
+               ? (call_64_)(__VA_ARGS__) : (call_32_)(__VA_ARGS__))
+# elif current_klongsize > 4
+#  define opt_klongsize(opt_64_, opt_32_) (opt_64_)
+#  define dispatch_klongsize(call_64_, call_32_, ...) ((call_64_)(__VA_ARGS__))
+# else /* current_klongsize == 4 */
+#  define opt_klongsize(opt_64_, opt_32_) (opt_32_)
+#  define dispatch_klongsize(call_64_, call_32_, ...) ((call_32_)(__VA_ARGS__))
+# endif
+
+
 typedef struct ioctlent {
        const char *symbol;
        unsigned int code;
@@ -183,10 +240,13 @@ struct inject_data {
 
 struct inject_opts {
        uint16_t first;
+       uint16_t last;
        uint16_t step;
        struct inject_data data;
 };
 
+# define INJECT_LAST_INF       ((uint16_t) -1)
+
 # define MAX_ERRNO_VALUE                       4095
 
 /* Trace Control Block */
@@ -194,16 +254,19 @@ struct tcb {
        int flags;              /* See below for TCB_ values */
        int pid;                /* If 0, this tcb is free */
        int qual_flg;           /* qual_flags[scno] or DEFAULT_QUAL_FLAGS + RAW */
+# if SUPPORTED_PERSONALITIES > 1
+       unsigned int currpers;  /* Personality at the time of scno update */
+# endif
        unsigned long u_error;  /* Error code */
        kernel_ulong_t scno;    /* System call number */
+       kernel_ulong_t true_scno;       /* Same, but without subcall decoding and shuffling */
        kernel_ulong_t u_arg[MAX_ARGS]; /* System call arguments */
        kernel_long_t u_rval;   /* Return value */
-# if SUPPORTED_PERSONALITIES > 1
-       unsigned int currpers;  /* Personality at the time of scno update */
-# endif
        int sys_func_rval;      /* Syscall entry parser's return value */
        int curcol;             /* Output column for this process */
        FILE *outf;             /* Output file for this process */
+       struct staged_output_data *staged_output_data;
+
        const char *auxstr;     /* Auxiliary info from syscall (see RVAL_STR) */
        void *_priv_data;       /* Private data for syscall decoding functions */
        void (*_free_priv_data)(void *); /* Callback for freeing priv_data */
@@ -213,10 +276,18 @@ struct tcb {
        const struct_sysent *s_prev_ent; /* for "resuming interrupted SYSCALL" msg */
        struct inject_opts *inject_vec[SUPPORTED_PERSONALITIES];
        struct timespec stime;  /* System time usage as of last process wait */
-       struct timespec dtime;  /* Delta for system time usage */
-       struct timespec etime;  /* Syscall entry time */
+       struct timespec ltime;  /* System time usage as of last syscall entry */
+       struct timespec atime;  /* System time right after attach */
+       struct timespec etime;  /* Syscall entry time (CLOCK_MONOTONIC) */
        struct timespec delay_expiration_time; /* When does the delay end */
 
+       /*
+        * The ID of the PID namespace of this process
+        * (inode number of /proc/<pid>/ns/pid)
+        * (0: not initialized)
+        */
+       unsigned int pid_ns;
+
        struct mmap_cache_t *mmap_cache;
 
        /*
@@ -272,6 +343,9 @@ struct tcb {
 # define TCB_DELAYED   0x2000  /* Current syscall has been delayed */
 # define TCB_TAMPERED_NO_FAIL 0x4000   /* We tamper tcb with syscall
                                           that should not fail. */
+# define TCB_SECCOMP_FILTER    0x8000  /* This process has a seccomp filter
+                                        * attached.
+                                        */
 
 /* qualifier flags */
 # define QUAL_TRACE    0x001   /* this system call should be traced */
@@ -298,6 +372,7 @@ struct tcb {
 # define inject_delay_exit(tcp)        ((tcp)->flags & TCB_INJECT_DELAY_EXIT)
 # define syscall_delayed(tcp)  ((tcp)->flags & TCB_DELAYED)
 # define syscall_tampered_nofail(tcp) ((tcp)->flags & TCB_TAMPERED_NO_FAIL)
+# define has_seccomp_filter(tcp)       ((tcp)->flags & TCB_SECCOMP_FILTER)
 
 extern const struct_sysent stub_sysent;
 # define tcp_sysent(tcp) (tcp->s_ent ?: &stub_sysent)
@@ -306,30 +381,13 @@ extern const struct_sysent stub_sysent;
 # include "xlat.h"
 
 extern const struct xlat addrfams[];
-
-/** Protocol hardware identifiers array, sorted, defined in sockaddr.c. */
 extern const struct xlat arp_hardware_types[];
-/** Protocol hardware identifiers array size without terminating record. */
-extern const size_t arp_hardware_types_size;
-
 extern const struct xlat at_flags[];
 extern const struct xlat clocknames[];
 extern const struct xlat dirent_types[];
-
-/** Ethernet protocols list, sorted, defined in sockaddr.c. */
 extern const struct xlat ethernet_protocols[];
-/** Ethernet protocols array size without terminating record. */
-extern const size_t ethernet_protocols_size;
-
-/** IP protocols list, sorted, defined in net.c. */
 extern const struct xlat inet_protocols[];
-/** IP protocols array size without terminating record. */
-extern const size_t inet_protocols_size;
-
 extern const struct xlat evdev_abs[];
-/** Number of elements in evdev_abs array without the terminating record. */
-extern const size_t evdev_abs_size;
-
 extern const struct xlat audit_arch[];
 extern const struct xlat evdev_ev[];
 extern const struct xlat iffflags[];
@@ -341,11 +399,13 @@ extern const struct xlat nl_netfilter_msg_types[];
 extern const struct xlat nl_route_types[];
 extern const struct xlat open_access_modes[];
 extern const struct xlat open_mode_flags[];
+extern const struct xlat pollflags[];
 extern const struct xlat ptrace_cmds[];
 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 rwf_flags[];
 extern const struct xlat seccomp_filter_flags[];
 extern const struct xlat seccomp_ret_action[];
 extern const struct xlat setns_types[];
@@ -361,7 +421,11 @@ extern const struct xlat whence_codes[];
 # define RVAL_HEX      001     /* hex format */
 # define RVAL_OCTAL    002     /* octal format */
 # define RVAL_FD               010     /* file descriptor */
-# define RVAL_MASK     013     /* mask for these values */
+# define RVAL_TID      011     /* task ID */
+# define RVAL_SID      012     /* session ID */
+# define RVAL_TGID     013     /* thread group ID */
+# define RVAL_PGID     014     /* process group ID */
+# define RVAL_MASK     017     /* mask for these values */
 
 # define RVAL_STR      020     /* Print `auxstr' field after return val */
 # define RVAL_NONE     040     /* Print nothing */
@@ -376,6 +440,16 @@ extern const struct xlat whence_codes[];
 
 # define indirect_ipccall(tcp) (tcp_sysent(tcp)->sys_flags & TRACE_INDIRECT_SUBCALL)
 
+enum pid_type {
+       PT_TID,
+       PT_TGID,
+       PT_PGID,
+       PT_SID,
+
+       PT_COUNT,
+       PT_NONE = -1
+};
+
 enum sock_proto {
        SOCK_PROTO_UNKNOWN,
        SOCK_PROTO_UNIX,
@@ -413,11 +487,11 @@ typedef enum {
 } cflag_t;
 extern cflag_t cflag;
 extern bool Tflag;
+extern int Tflag_scale;
+extern int Tflag_width;
 extern bool iflag;
 extern bool count_wallclock;
-extern unsigned int qflag;
-extern bool not_failing_only;
-extern unsigned int show_fd_path;
+extern unsigned int pidns_translation;
 /* are we filtering traces based on paths? */
 extern struct path_set {
        const char **paths_selected;
@@ -425,8 +499,16 @@ extern struct path_set {
        size_t size;
 } global_path_set;
 # define tracing_paths (global_path_set.num_selected != 0)
+enum xflag_opts {
+       HEXSTR_NONE,
+       HEXSTR_NON_ASCII,
+       HEXSTR_ALL,
+
+       NUM_HEXSTR_OPTS
+};
 extern unsigned xflag;
-extern unsigned followfork;
+extern bool followfork;
+extern bool output_separately;
 # ifdef ENABLE_STACKTRACE
 /* if this is true do the stack trace for every system call */
 extern bool stack_trace_enabled;
@@ -439,15 +521,18 @@ extern unsigned os_release;
 # undef KERNEL_VERSION
 # define KERNEL_VERSION(a, b, c) (((a) << 16) + ((b) << 8) + (c))
 
-extern int read_int_from_file(struct tcb *, const char *, int *);
+extern int read_int_from_file(const char *, int *);
 
 extern void set_sortby(const char *);
-extern void set_overhead(int);
+extern int set_overhead(const char *);
+extern void set_count_summary_columns(const char *columns);
 
 extern bool get_instruction_pointer(struct tcb *, kernel_ulong_t *);
 extern bool get_stack_pointer(struct tcb *, kernel_ulong_t *);
 extern void print_instruction_pointer(struct tcb *);
 
+extern void print_syscall_number(struct tcb *);
+
 extern void print_syscall_resume(struct tcb *tcp);
 
 extern int syscall_entering_decode(struct tcb *);
@@ -492,7 +577,14 @@ extern kernel_long_t scno_by_name(const char *s, unsigned p,
  * @return     Shuffled or raw syscall number, respectively.
  */
 extern kernel_ulong_t shuffle_scno(kernel_ulong_t scno);
-extern const char *err_name(unsigned long err);
+/**
+ * Print error name in accordance with current xlat style setting.
+ *
+ * @param err     Error value.
+ * @param negated If set to true, negative values of the err parameter indicate
+ *                error condition, otherwise positive.
+ */
+extern void print_err(int64_t err, bool negated);
 
 extern bool is_erestart(struct tcb *);
 extern void temporarily_clear_syserror(struct tcb *);
@@ -594,6 +686,9 @@ umoven_or_printaddr_ignore_syserror(struct tcb *tcp, const kernel_ulong_t addr,
 extern int
 umovestr(struct tcb *, kernel_ulong_t addr, unsigned int len, char *laddr);
 
+/* Invalidate the cache used by umove* functions.  */
+extern void invalidate_umove_cache(void);
+
 extern int upeek(struct tcb *tcp, unsigned long, kernel_ulong_t *);
 extern int upoke(struct tcb *tcp, unsigned long, kernel_ulong_t);
 
@@ -618,13 +713,19 @@ pathtrace_match(struct tcb *tcp)
        return pathtrace_match_set(tcp, &global_path_set);
 }
 
-extern int getfdpath(struct tcb *, int, char *, unsigned);
+extern int getfdpath_pid(pid_t pid, int fd, char *buf, unsigned bufsize);
+
+static inline int
+getfdpath(struct tcb *tcp, int fd, char *buf, unsigned bufsize)
+{
+       return getfdpath_pid(tcp->pid, fd, buf, bufsize);
+}
+
 extern unsigned long getfdinode(struct tcb *, int);
 extern enum sock_proto getfdproto(struct tcb *, int);
 
 extern const char *xlookup(const struct xlat *, const uint64_t);
-extern const char *xlat_search(const struct xlat *, const size_t, const uint64_t);
-extern const char *xlat_idx(const struct xlat *xlat, size_t nmemb, uint64_t val);
+extern const char *xlookup_le(const struct xlat *, uint64_t *);
 
 struct dyxlat;
 struct dyxlat *dyxlat_alloc(size_t nmemb);
@@ -651,11 +752,18 @@ str_strip_prefix_len(const char *str, const char *prefix, size_t prefix_len)
 # define STR_STRIP_PREFIX(str, prefix) \
        str_strip_prefix_len((str), (prefix), sizeof(prefix) - 1)
 
+/** String is '\0'-terminated. */
 # define QUOTE_0_TERMINATED                    0x01
+/** Do not emit leading and ending '"' characters. */
 # define QUOTE_OMIT_LEADING_TRAILING_QUOTES    0x02
+/** Do not print '\0' if it is the last character. */
 # define QUOTE_OMIT_TRAILING_0                 0x08
-# define QUOTE_FORCE_HEX                               0x10
-# define QUOTE_EMIT_COMMENT                    0x20
+/** Print ellipsis if the last character is not '\0' */
+# define QUOTE_EXPECT_TRAILING_0               0x10
+/** Print string in hex (using '\xHH' notation). */
+# define QUOTE_FORCE_HEX                       0x20
+/** Enclose the string in C comment syntax. */
+# define QUOTE_EMIT_COMMENT                    0x40
 
 extern int string_quote(const char *, char *, unsigned int, unsigned int,
                        const char *escape_chars);
@@ -696,46 +804,8 @@ extern int printxvals_ex(uint64_t val, const char *dflt,
        ATTRIBUTE_SENTINEL;
 # define printxvals(val_, dflt_, ...) \
        printxvals_ex((val_), (dflt_), XLAT_STYLE_DEFAULT, __VA_ARGS__)
-
-extern int printxval_searchn_ex(const struct xlat *, size_t xlat_size,
-                               uint64_t val, const char *dflt,
-                               enum xlat_style);
-
-static inline int
-printxval_searchn(const struct xlat *xlat, size_t xlat_size, uint64_t val,
-                 const char *dflt)
-{
-       return printxval_searchn_ex(xlat, xlat_size, val, dflt,
-                                   XLAT_STYLE_DEFAULT);
-}
-
-/**
- * Wrapper around printxval_searchn that passes ARRAY_SIZE - 1
- * as the array size, as all arrays are XLAT_END-terminated and
- * printxval_searchn expects a size without the terminating record.
- */
-# define printxval_search(xlat__, val__, dflt__) \
-       printxval_searchn(xlat__, ARRAY_SIZE(xlat__) - 1, val__, dflt__)
-# define printxval_search_ex(xlat__, val__, dflt__, style__) \
-       printxval_searchn_ex((xlat__), ARRAY_SIZE(xlat__) - 1, (val__), \
-                            (dflt__), (style__))
-
-extern int printxval_indexn_ex(const struct xlat *, size_t xlat_size,
-                              uint64_t val, const char *dflt, enum xlat_style);
-
-static inline int
-printxval_indexn(const struct xlat *xlat, size_t xlat_size, uint64_t val,
-                const char *dflt)
-{
-       return printxval_indexn_ex(xlat, xlat_size, val, dflt,
-                                  XLAT_STYLE_DEFAULT);
-}
-
-# define printxval_index(xlat__, val__, dflt__) \
-       printxval_indexn(xlat__, ARRAY_SIZE(xlat__) - 1, val__, dflt__)
-# define printxval_index_ex(xlat__, val__, dflt__) \
-       printxval_indexn_ex((xlat__), ARRAY_SIZE(xlat__) - 1, (val__), \
-                           (dflt__), XLAT_STYLE_DEFAULT)
+# define printxval_ex(xlat_, val_, dflt_, style_) \
+       printxvals_ex((val_), (dflt_), (style_), (xlat_), NULL)
 
 extern int sprintxval_ex(char *buf, size_t size, const struct xlat *,
                         unsigned int val, const char *dflt, enum xlat_style);
@@ -747,43 +817,36 @@ sprintxval(char *buf, size_t size, const struct xlat *xlat, unsigned int val,
        return sprintxval_ex(buf, size, xlat, val, dflt, XLAT_STYLE_DEFAULT);
 }
 
-extern void printxval_dispatch_ex(const struct xlat *, size_t xlat_size,
-                                 uint64_t val, const char *dflt,
-                                 enum xlat_type, enum xlat_style);
-static inline void
-printxval_dispatch(const struct xlat *xlat, size_t xlat_size, uint64_t val,
-                  const char *dflt, enum xlat_type xt)
-{
-       return printxval_dispatch_ex(xlat, xlat_size, val, dflt, xt,
-                                    XLAT_STYLE_DEFAULT);
-}
-
 enum xlat_style_private_flag_bits {
        /* print_array */
        PAF_PRINT_INDICES_BIT = XLAT_STYLE_SPEC_BITS + 1,
-       PAF_INDEX_XLAT_SORTED_BIT,
-       PAF_INDEX_XLAT_VALUE_INDEXED_BIT,
+       PAF_ARRAY_TRUNCATED_BIT,
 
        /* print_xlat */
        PXF_DEFAULT_STR_BIT,
 };
 
-# define FLAG_(name_) name_ = 1 << name_##_BIT
-
 enum xlat_style_private_flags {
        /* print_array */
-       FLAG_(PAF_PRINT_INDICES),
-       FLAG_(PAF_INDEX_XLAT_SORTED),
-       FLAG_(PAF_INDEX_XLAT_VALUE_INDEXED),
+       FLAG(PAF_PRINT_INDICES),
+       FLAG(PAF_ARRAY_TRUNCATED),
 
        /* print_xlat */
-       FLAG_(PXF_DEFAULT_STR),
+       FLAG(PXF_DEFAULT_STR),
 };
 
-# undef FLAG_
-
-/** Print a value in accordance with xlat formatting settings. */
-extern void print_xlat_ex(uint64_t val, const char *str, enum xlat_style style);
+/**
+ * Print a value in accordance with xlat formatting settings.
+ *
+ * @param val   Value itself.
+ * @param str   String representation of the value.  Semantics may be affected
+ *              by style argument;
+ * @param style Combination of flags from enum xlat_style and PXF_* flags
+ *              from enum xlat_style_private_flags:
+ *               - PXF_DEFAULT_STR - interpret str argument as default
+ *                 (fallback) string and not as string representation of val.
+ */
+extern void print_xlat_ex(uint64_t val, const char *str, uint32_t style);
 # define print_xlat(val_) \
        print_xlat_ex((val_), #val_, XLAT_STYLE_DEFAULT)
 # define print_xlat32(val_) \
@@ -801,30 +864,40 @@ extern int printflags_ex(uint64_t flags, const char *dflt,
                         enum xlat_style, const struct xlat *, ...)
        ATTRIBUTE_SENTINEL;
 extern const char *sprintflags_ex(const char *prefix, const struct xlat *,
-                                 uint64_t flags, enum xlat_style);
+                                 uint64_t flags, char sep, enum xlat_style);
 
 static inline const char *
 sprintflags(const char *prefix, const struct xlat *xlat, uint64_t flags)
 {
-       return sprintflags_ex(prefix, xlat, flags, XLAT_STYLE_DEFAULT);
+       return sprintflags_ex(prefix, xlat, flags, '\0', XLAT_STYLE_DEFAULT);
 }
 
 extern const char *sprinttime(long long sec);
 extern const char *sprinttime_nsec(long long sec, unsigned long long nsec);
 extern const char *sprinttime_usec(long long sec, unsigned long long usec);
 
+# ifndef MAX_ADDR_LEN
+#  define MAX_ADDR_LEN 32
+# endif
+
 extern const char *sprint_mac_addr(const uint8_t addr[], size_t size);
 extern void print_mac_addr(const char *prefix,
                           const uint8_t addr[], size_t size);
 
+extern const char *sprint_hwaddr(const uint8_t addr[], size_t size,
+                                uint32_t devtype);
+extern void print_hwaddr(const char *prefix,
+                        const uint8_t addr[], size_t size, uint32_t devtype);
+
 extern void print_uuid(const unsigned char *uuid);
 
 extern void print_symbolic_mode_t(unsigned int);
 extern void print_numeric_umode_t(unsigned short);
-extern void print_numeric_long_umask(unsigned long);
+extern void print_numeric_ll_umode_t(unsigned long long);
 extern void print_dev_t(unsigned long long dev);
 extern void print_kernel_version(unsigned long version);
 extern void print_abnormal_hi(kernel_ulong_t);
+extern void print_ioprio(unsigned int ioprio);
 
 extern bool print_int32_array_member(struct tcb *, void *elem_buf,
                                     size_t elem_size, void *data);
@@ -832,6 +905,20 @@ extern bool print_uint32_array_member(struct tcb *, void *elem_buf,
                                      size_t elem_size, void *data);
 extern bool print_uint64_array_member(struct tcb *, void *elem_buf,
                                      size_t elem_size, void *data);
+extern bool print_xint32_array_member(struct tcb *, void *elem_buf,
+                                     size_t elem_size, void *data);
+extern bool print_xint64_array_member(struct tcb *, void *elem_buf,
+                                     size_t elem_size, void *data);
+
+static inline bool
+print_xlong_array_member(struct tcb *tcp, void *elem_buf, size_t elem_size,
+                        void *data)
+{
+       return dispatch_wordsize(print_xint64_array_member,
+                                print_xint32_array_member,
+                                tcp, elem_buf, elem_size, data);
+}
+
 
 typedef bool (*tfetch_mem_fn)(struct tcb *, kernel_ulong_t addr,
                              unsigned int size, void *dest);
@@ -842,8 +929,29 @@ typedef const char * (*sprint_obj_by_addr_fn)(struct tcb *, kernel_ulong_t);
 
 
 /**
- * @param flags Combination of xlat style settings and additional flags from
- *              enum print_array_flags.
+ * Array printing function with over-engineered interface.
+ *
+ * @param start_addr       If tfetch_mem_fn is non-NULL: address in tracee's
+ *                         memory where the start of the array is located.
+ *                         If tfetch_mem_fn is NULL: ignored.
+ * @param nmemb            Number of elements in array.
+ * @param elem_buf         If tfetch_mem_fn is non-NULL: a buffer where each
+ *                         element fetched by tfetch_mem_fn is stored.
+ *                         If tfetch_mem_fn is NULL: address of the start of
+ *                         the array in local memory.
+ * @param elem_size        Size (in bytes) of each element in the array.
+ * @param tfetch_mem_fn    Fetching function. If NULL, then elem_buf is treated
+ *                         as local array of nmemb members elem_size each;
+ *                         start_addr is ignored.
+ * @param print_func       Element printing callback.
+ * @param opaque_data      A value that is unconditionally passed to print_func
+ *                         in opaque_data argument.
+ * @param flags            Combination of xlat style settings and additional
+ *                         flags from enum print_array_flags.
+ * @param index_xlat       Xlat array that is used for printing indices.
+ * @param index_xlat_size  The size of xlat array.
+ * @param index_dflt       Default string for the values not found
+ *                         in index_xlat.
  */
 extern bool
 print_array_ex(struct tcb *,
@@ -856,9 +964,9 @@ print_array_ex(struct tcb *,
               void *opaque_data,
               unsigned int flags,
               const struct xlat *index_xlat,
-              size_t index_xlat_size,
               const char *index_dflt);
 
+/** Print an array from tracee's memory without any index printing features. */
 static inline bool
 print_array(struct tcb *const tcp,
            const kernel_ulong_t start_addr,
@@ -871,12 +979,58 @@ print_array(struct tcb *const tcp,
 {
        return print_array_ex(tcp, start_addr, nmemb, elem_buf, elem_size,
                              tfetch_mem_func, print_func, opaque_data,
-                             0, NULL, 0, NULL);
+                             0, NULL, NULL);
+}
+
+/** Shorthand for printing local arrays. */
+static inline bool
+print_local_array_ex(struct tcb *tcp,
+                    void *start_addr,
+                    const size_t nmemb,
+                    const size_t elem_size,
+                    print_fn print_func,
+                    void *const opaque_data,
+                    unsigned int flags,
+                    const struct xlat *index_xlat,
+                    const char *index_dflt)
+{
+       return print_array_ex(tcp, (uintptr_t) start_addr, nmemb,
+                             NULL, elem_size, NULL, print_func,
+                             opaque_data, flags, index_xlat, index_dflt);
 }
 
+/** Shorthand for a shorthand for printing local arrays. */
+# define print_local_array(tcp_, start_addr_, print_func_)      \
+       print_local_array_ex((tcp_), (start_addr_), ARRAY_SIZE(start_addr_), \
+                            sizeof((start_addr_)[0]), (print_func_),        \
+                            NULL, 0, NULL, NULL)
+
 extern kernel_ulong_t *
 fetch_indirect_syscall_args(struct tcb *, kernel_ulong_t addr, unsigned int n_args);
 
+extern void pidns_init(void);
+
+/**
+ * Returns the pid of the tracee as present in /proc of the tracer (can be
+ * different from tcp->pid if /proc and the tracer process are in different PID
+ * namespaces).
+ */
+extern int get_proc_pid(struct tcb *);
+
+/**
+ * Translates a pid from tracee's namespace to our namepace.
+ *
+ * @param tcp             The tcb of the tracee
+ *                        (NULL: from_id is in strace's namespace. Useful for
+ *                         getting the proc PID of from_id)
+ * @param from_id         The id to be translated
+ * @param type            The PID type of from_id
+ * @param proc_pid_ptr    If not NULL, writes the proc PID to this location
+ * @return                The translated id, or 0 if translation fails.
+ */
+extern int translate_pid(struct tcb *, int dest_id, enum pid_type type,
+                   int *proc_pid_ptr);
+
 extern void
 dumpiov_in_msghdr(struct tcb *, kernel_ulong_t addr, kernel_ulong_t data_size);
 
@@ -893,6 +1047,35 @@ extern int
 printstr_ex(struct tcb *, kernel_ulong_t addr, kernel_ulong_t len,
            unsigned int user_style);
 
+/**
+ * Print a region of tracee memory only in case non-zero bytes are present
+ * there.  It almost fits into printstr_ex, but it has some pretty specific
+ * behaviour peculiarities (like printing of ellipsis on error) to readily
+ * integrate it there.
+ *
+ * Since it is expected to be used for printing tail of a structure in tracee's
+ * memory, it accepts a combination of start_addr/start_offs/total_len and does
+ * the relevant calculations itself.
+ *
+ * @param prefix     A string printed in cases something is going to be printed.
+ * @param start_addr Address of the beginning of a structure (whose tail
+ *                   is supposedly to be printed) in tracee's memory.
+ * @param start_offs Offset from the beginning of the structure where the tail
+ *                   data starts.
+ * @param total_len  Total size of the tracee's memory region containing
+ *                   the structure and the tail data.
+ *                   Caller is responsible for imposing a sensible (usually
+ *                   mandated by the kernel interface, like get_pagesize())
+ *                   limit here.
+ * @param style      Passed to string_quote as "style" parameter.
+ * @return           Returns true is anything was printed, false otherwise.
+ */
+extern bool print_nonzero_bytes(struct tcb *const tcp, const char *prefix,
+                               const kernel_ulong_t start_addr,
+                               const unsigned int start_offs,
+                               const unsigned int total_len,
+                               const unsigned int style);
+
 extern int
 printpathn(struct tcb *, kernel_ulong_t addr, unsigned int n);
 
@@ -901,8 +1084,38 @@ printpath(struct tcb *, kernel_ulong_t addr);
 
 # define TIMESPEC_TEXT_BUFSIZE \
                (sizeof(long long) * 3 * 2 + sizeof("{tv_sec=-, tv_nsec=}"))
-extern void printfd(struct tcb *, int);
-extern void print_sockaddr(const void *sa, int len);
+
+/**
+ * Returns the pid associated with pidfd of the process with ID pid_of_fd
+ */
+extern pid_t pidfd_get_pid(pid_t pid_of_fd, int fd);
+/**
+ * Print file descriptor fd owned by process with ID pid (from the PID NS
+ * of the tracer).
+ */
+extern void printfd_pid(struct tcb *tcp, pid_t pid, int fd);
+
+static inline void
+printfd(struct tcb *tcp, int fd)
+{
+       printfd_pid(tcp, tcp->pid, fd);
+}
+
+/**
+ * Print file descriptor fd owned by process with ID pid (from the PID NS
+ * of the tracee).
+ */
+extern void printfd_pid_tracee_ns(struct tcb *tcp, pid_t pid, int fd);
+
+/** Prints a PID specified in the tracee's PID namespace */
+extern void printpid(struct tcb *, int pid, enum pid_type type);
+
+/**
+ * Prints pid as a TGID if positive, and PGID if negative
+ * (like the first argument of kill).
+ */
+extern void printpid_tgid_pgid(struct tcb *, int pid);
+extern void print_sockaddr(struct tcb *, const void *sa, int len);
 extern bool
 print_inet_addr(int af, const void *addr, unsigned int len, const char *var_name);
 extern bool
@@ -974,6 +1187,19 @@ extern void print_ifindex(unsigned int);
 extern void print_bpf_filter_code(const uint16_t code, bool extended);
 
 extern void qualify(const char *);
+extern void qualify_trace(const char *);
+extern void qualify_abbrev(const char *);
+extern void qualify_verbose(const char *);
+extern void qualify_raw(const char *);
+extern void qualify_signals(const char *);
+extern void qualify_status(const char *);
+extern void qualify_quiet(const char *);
+extern void qualify_decode_fd(const char *);
+extern void qualify_read(const char *);
+extern void qualify_write(const char *);
+extern void qualify_fault(const char *);
+extern void qualify_inject(const char *);
+extern void qualify_kvm(const char *);
 extern unsigned int qual_flags(const unsigned int);
 
 # define DECL_IOCTL(name)                                              \
@@ -992,9 +1218,11 @@ DECL_IOCTL(nsfs);
 DECL_IOCTL(ptp);
 DECL_IOCTL(random);
 DECL_IOCTL(scsi);
+DECL_IOCTL(tee);
 DECL_IOCTL(term);
 DECL_IOCTL(ubi);
 DECL_IOCTL(uffdio);
+DECL_IOCTL(watchdog);
 # undef DECL_IOCTL
 
 extern int decode_sg_io_v4(struct tcb *, const kernel_ulong_t arg);
@@ -1021,13 +1249,86 @@ extern void
 decode_netlink_kobject_uevent(struct tcb *, kernel_ulong_t addr,
                              kernel_ulong_t len);
 
+enum find_xlat_flag_bits {
+       FXL_CASE_SENSITIVE_BIT,
+};
+
+enum find_xlat_flags {
+       /** Whether to use strcmp instead of strcasecmp for comparison */
+       FLAG(FXL_CASE_SENSITIVE),
+};
+
+/**
+ * Searches for a string-value pair in the provided array of pairs.
+ *
+ * @param items     Array of string-value pairs to search in.
+ * @param s         String to search for.
+ * @param num_items Item count in items array.
+ * @param flags     Bitwise-or'ed flags from enum find_xlat_flags.
+ * @return          Pointer to the first matching string-value pair inside items
+ *                  or NULL if nothing has been found.
+ */
+extern const struct xlat_data *find_xlat_val_ex(const struct xlat_data *items,
+                                               const char *s, size_t num_items,
+                                               unsigned int flags);
+# define find_xlat_val(items_, s_) \
+       find_xlat_val_ex((items_), (s_), ARRAY_SIZE(items_), 0)
+# define find_xlat_val_case(items_, s_) \
+       find_xlat_val_ex((items_), (s_), ARRAY_SIZE(items_), FXL_CASE_SENSITIVE)
+
+/**
+ * A find_xlat_val_ex wrapper for option arguments parsing.  Provides a value
+ * from strs array that matched the supplied arg string.  If arg is NULL,
+ * default_val is returned.  If nothing has matched, not_found value
+ * is returned.
+ *
+ * find_arg_val provides a wrapper for the common case of statically-defined
+ * strs arrays.
+ *
+ * @param arg         Argument string to parse
+ * @param strs        Array of string-value pairs to match arg against.
+ * @param strs_size   Element count in the strs array.
+ * @param default_val Value to return if arg is NULL.
+ * @param not_found   Value to return if arg hasn't found among strs.
+ * @return            default_val is arg is NULL, value part of the matched
+ *                    string-value pair, or not_found if nothing has matched.
+ */
+extern uint64_t find_arg_val_(const char *arg, const struct xlat_data *strs,
+                             size_t strs_size, uint64_t default_val,
+                             uint64_t not_found);
+/** A find_arg_val_ wrapper that supplies strs_size to it using ARRAY_SIZE. */
+# define find_arg_val(arg_, strs_, dflt_, not_found_) \
+       find_arg_val_((arg_), (strs_), ARRAY_SIZE(strs_), (dflt_), (not_found_))
+
+/**
+ * A find_arg_val wrapper for parsing time scale names.
+ *
+ * @param arg        String to parse
+ * @param empty_dflt Default scale for the empty arg.
+ * @param null_dflt  Default scale for the NULL arg.
+ * @param width      Width of the field required to print the second part
+ *                   with the specified precision.
+ * @return           Time scale (amount of nanoseconds) if found,
+ *                   empty_dflt if arg is empty, null_dflt if arg is NULL,
+ *                   -1 if arg doesn't match any known time scale.
+ */
+extern int str2timescale_ex(const char *arg, int empty_dflt, int null_dflt,
+                           int *width);
+/** str2timescale_ex wrapper for handling a separate argument. */
+# define str2timescale_optarg(arg_, w_) str2timescale_ex((arg_), -1, 1000, (w_))
+/** str2timescale_ex wrapper for handling a suffix in existing argument. */
+# define str2timescale_sfx(arg_, w_) str2timescale_ex((arg_), 1000, -1, (w_))
+
 extern int ts_nz(const struct timespec *);
 extern int ts_cmp(const struct timespec *, const struct timespec *);
 extern double ts_float(const struct timespec *);
 extern void ts_add(struct timespec *, const struct timespec *, const struct timespec *);
 extern void ts_sub(struct timespec *, const struct timespec *, const struct timespec *);
-extern void ts_mul(struct timespec *, const struct timespec *, int);
-extern void ts_div(struct timespec *, const struct timespec *, int);
+extern void ts_mul(struct timespec *, const struct timespec *, uint64_t);
+extern void ts_div(struct timespec *, const struct timespec *, uint64_t);
+extern const struct timespec *ts_min(const struct timespec *, const struct timespec *);
+extern const struct timespec *ts_max(const struct timespec *, const struct timespec *);
+extern int parse_ts(const char *s, struct timespec *t);
 
 # ifdef ENABLE_STACKTRACE
 extern void unwind_init(void);
@@ -1109,11 +1410,13 @@ tprint_iov(struct tcb *tcp, kernel_ulong_t len, kernel_ulong_t addr,
        tprint_iov_upto(tcp, len, addr, decode_iov, -1);
 }
 
-# if HAVE_ARCH_TIME32_SYSCALLS
+# if HAVE_ARCH_TIME32_SYSCALLS || HAVE_ARCH_TIMESPEC32
 extern bool print_timespec32_data_size(const void *arg, size_t size);
 extern bool print_timespec32_array_data_size(const void *arg,
                                             unsigned int nmemb,
                                             size_t size);
+# endif /* HAVE_ARCH_TIME32_SYSCALLS || HAVE_ARCH_TIMESPEC32 */
+# if HAVE_ARCH_TIME32_SYSCALLS
 extern int print_timespec32(struct tcb *, kernel_ulong_t);
 extern const char *sprint_timespec32(struct tcb *, kernel_ulong_t);
 extern int print_timespec32_utime_pair(struct tcb *, kernel_ulong_t);
@@ -1195,39 +1498,18 @@ extern void tprints(const char *str);
 extern void tprintf_comment(const char *fmt, ...) ATTRIBUTE_FORMAT((printf, 1, 2));
 extern void tprints_comment(const char *str);
 
+/*
+ * Staging output for status qualifier.
+ */
+extern FILE *strace_open_memstream(struct tcb *tcp);
+extern void strace_close_memstream(struct tcb *tcp, bool publish);
+
 static inline void
 printaddr_comment(const kernel_ulong_t addr)
 {
        tprintf_comment("%#llx", (unsigned long long) addr);
 }
 
-# if SUPPORTED_PERSONALITIES > 1
-extern void set_personality(unsigned int personality);
-extern unsigned current_personality;
-# else
-#  define set_personality(personality) ((void)0)
-#  define current_personality 0
-# endif
-
-# if SUPPORTED_PERSONALITIES == 1
-#  define current_wordsize PERSONALITY0_WORDSIZE
-#  define current_klongsize PERSONALITY0_KLONGSIZE
-# else
-#  if SUPPORTED_PERSONALITIES == 2 && PERSONALITY0_WORDSIZE == PERSONALITY1_WORDSIZE
-#   define current_wordsize PERSONALITY0_WORDSIZE
-#  else
-extern unsigned current_wordsize;
-#  endif
-#  if SUPPORTED_PERSONALITIES == 2 && PERSONALITY0_KLONGSIZE == PERSONALITY1_KLONGSIZE
-#   define current_klongsize PERSONALITY0_KLONGSIZE
-#  else
-extern unsigned current_klongsize;
-#  endif
-# endif
-
-# define max_addr() (~0ULL >> ((8 - current_wordsize) * 8))
-# define max_kaddr() (~0ULL >> ((8 - current_klongsize) * 8))
-
 /*
  * When u64 is interpreted by the kernel as an address, there is a difference
  * in behaviour between 32-bit and 64-bit kernel in the way u64_to_user_ptr
@@ -1280,101 +1562,40 @@ DECL_PRINTNUM_ADDR(int);
 DECL_PRINTNUM_ADDR(int64);
 # undef DECL_PRINTNUM_ADDR
 
-# ifndef current_wordsize
 extern bool
-printnum_long_int(struct tcb *, kernel_ulong_t addr,
-                 const char *fmt_long, const char *fmt_int)
-       ATTRIBUTE_FORMAT((printf, 3, 0))
-       ATTRIBUTE_FORMAT((printf, 4, 0));
-
-extern bool printnum_addr_long_int(struct tcb *, kernel_ulong_t addr);
+printnum_fd(struct tcb *, kernel_ulong_t addr);
 
-static inline bool
-printnum_slong(struct tcb *tcp, kernel_ulong_t addr)
-{
-       return printnum_long_int(tcp, addr, "%" PRId64, "%d");
-}
-
-static inline bool
-printnum_ulong(struct tcb *tcp, kernel_ulong_t addr)
-{
-       return printnum_long_int(tcp, addr, "%" PRIu64, "%u");
-}
-
-static inline bool
-printnum_ptr(struct tcb *tcp, kernel_ulong_t addr)
-{
-       return printnum_addr_long_int(tcp, addr);
-}
-
-# elif current_wordsize > 4
-
-static inline bool
-printnum_slong(struct tcb *tcp, kernel_ulong_t addr)
-{
-       return printnum_int64(tcp, addr, "%" PRId64);
-}
-
-static inline bool
-printnum_ulong(struct tcb *tcp, kernel_ulong_t addr)
-{
-       return printnum_int64(tcp, addr, "%" PRIu64);
-}
-
-static inline bool
-printnum_ptr(struct tcb *tcp, kernel_ulong_t addr)
-{
-       return printnum_addr_int64(tcp, addr);
-}
-
-# else /* current_wordsize == 4 */
+extern bool
+printnum_pid(struct tcb *const tcp, const kernel_ulong_t addr, enum pid_type type);
 
 static inline bool
 printnum_slong(struct tcb *tcp, kernel_ulong_t addr)
 {
-       return printnum_int(tcp, addr, "%d");
+       return dispatch_wordsize(printnum_int64, printnum_int,
+                                tcp, addr, opt_wordsize("%" PRId64, "%d"));
 }
 
 static inline bool
 printnum_ulong(struct tcb *tcp, kernel_ulong_t addr)
 {
-       return printnum_int(tcp, addr, "%u");
+       return dispatch_wordsize(printnum_int64, printnum_int,
+                                tcp, addr, opt_wordsize("%" PRIu64, "%u"));
 }
 
 static inline bool
 printnum_ptr(struct tcb *tcp, kernel_ulong_t addr)
 {
-       return printnum_addr_int(tcp, addr);
+       return dispatch_wordsize(printnum_addr_int64, printnum_addr_int,
+                                tcp, addr);
 }
 
-# endif
-
-# ifndef current_klongsize
-extern bool printnum_addr_klong_int(struct tcb *, kernel_ulong_t addr);
-
 static inline bool
 printnum_kptr(struct tcb *tcp, kernel_ulong_t addr)
 {
-       return printnum_addr_klong_int(tcp, addr);
+       return dispatch_klongsize(printnum_addr_int64, printnum_addr_int,
+                                 tcp, addr);
 }
 
-# elif current_klongsize > 4
-
-static inline bool
-printnum_kptr(struct tcb *tcp, kernel_ulong_t addr)
-{
-       return printnum_addr_int64(tcp, addr);
-}
-
-# else /* current_klongsize == 4 */
-
-static inline bool
-printnum_kptr(struct tcb *tcp, kernel_ulong_t addr)
-{
-       return printnum_addr_int(tcp, addr);
-}
-
-# endif
 
 # define DECL_PRINTPAIR(name)                                          \
 extern bool                                                            \
@@ -1437,6 +1658,28 @@ truncate_kulong_to_current_wordsize(const kernel_ulong_t v)
         sizeof(v) == sizeof(long) ? (long long) (long) (v) : \
         (long long) (v))
 
+/*
+ * Computes the popcount of a vector of 32-bit values.
+ */
+static inline unsigned int
+popcount32(const uint32_t *a, unsigned int size)
+{
+       unsigned int count = 0;
+
+       for (; size; ++a, --size) {
+               uint32_t x = *a;
+
+# ifdef HAVE___BUILTIN_POPCOUNT
+               count += __builtin_popcount(x);
+# else
+               for (; x; ++count)
+                       x &= x - 1;
+# endif
+       }
+
+       return count;
+}
+
 extern const char *const errnoent[];
 extern const char *const signalent[];
 extern const unsigned int nerrnos;
@@ -1464,6 +1707,17 @@ extern const unsigned int nsyscall_vec[SUPPORTED_PERSONALITIES];
 extern const struct_sysent *const sysent_vec[SUPPORTED_PERSONALITIES];
 extern struct inject_opts *inject_vec[SUPPORTED_PERSONALITIES];
 
+# ifdef ENABLE_COVERAGE_GCOV
+#  ifdef HAVE_GCOV_H
+#   include <gcov.h>
+#  else
+extern void __gcov_dump(void);
+#  endif
+#  define GCOV_DUMP __gcov_dump()
+# else
+#  define GCOV_DUMP
+# endif
+
 # ifdef IN_MPERS_BOOTSTRAP
 /* Transform multi-line MPERS_PRINTER_DECL statements to one-liners.  */
 #  define MPERS_PRINTER_DECL(type, name, ...) MPERS_PRINTER_DECL(type, name, __VA_ARGS__)
@@ -1504,4 +1758,64 @@ scno_is_valid(kernel_ulong_t scno)
 
 # define SYS_FUNC(syscall_name) int SYS_FUNC_NAME(sys_ ## syscall_name)(struct tcb *tcp)
 
+# define ILOG2_ITER_(val_, ret_, bit_)                                 \
+       do {                                                            \
+               typeof(ret_) shift_ =                                   \
+                       ((val_) > ((((typeof(val_)) 1)                  \
+                                  << (1 << (bit_))) - 1)) << (bit_);   \
+               (val_) >>= shift_;                                      \
+               (ret_) |= shift_;                                       \
+       } while (0)
+
+/**
+ * Calculate floor(log2(val)), with the exception of val == 0, for which 0
+ * is returned as well.
+ *
+ * @param val 64-bit value to calculate integer base-2 logarithm for.
+ * @return    (unsigned int) floor(log2(val)) if val > 0, 0 if val == 0.
+ */
+static inline unsigned int
+ilog2_64(uint64_t val)
+{
+       unsigned int ret = 0;
+
+       ILOG2_ITER_(val, ret, 5);
+       ILOG2_ITER_(val, ret, 4);
+       ILOG2_ITER_(val, ret, 3);
+       ILOG2_ITER_(val, ret, 2);
+       ILOG2_ITER_(val, ret, 1);
+       ILOG2_ITER_(val, ret, 0);
+
+       return ret;
+}
+
+/**
+ * Calculate floor(log2(val)), with the exception of val == 0, for which 0
+ * is returned as well.
+ *
+ * @param val 32-bit value to calculate integer base-2 logarithm for.
+ * @return    (unsigned int) floor(log2(val)) if val > 0, 0 if val == 0.
+ */
+static inline unsigned int
+ilog2_32(uint32_t val)
+{
+       unsigned int ret = 0;
+
+       ILOG2_ITER_(val, ret, 4);
+       ILOG2_ITER_(val, ret, 3);
+       ILOG2_ITER_(val, ret, 2);
+       ILOG2_ITER_(val, ret, 1);
+       ILOG2_ITER_(val, ret, 0);
+
+       return ret;
+}
+
+# if SIZEOF_KERNEL_LONG_T > 4
+#  define ilog2_klong ilog2_64
+# else
+#  define ilog2_klong ilog2_32
+# endif
+
+# undef ILOG2_ITER_
+
 #endif /* !STRACE_DEFS_H */
diff --git a/delay.c b/delay.c
index e32dc5027bd1d2ba27ca149271572b96b5c8649b..538992ff99ee0e0c60a045f94d7d9d2df519db0f 100644 (file)
--- a/delay.c
+++ b/delay.c
@@ -46,7 +46,7 @@ alloc_delay_data(void)
 }
 
 void
-fill_delay_data(uint16_t delay_idx, int intval, bool isenter)
+fill_delay_data(uint16_t delay_idx, struct timespec *val, bool isenter)
 {
        if (delay_idx >= delay_data_vec_size)
                error_func_msg_and_die("delay_idx >= delay_data_vec_size");
@@ -57,8 +57,7 @@ fill_delay_data(uint16_t delay_idx, int intval, bool isenter)
        else
                ts = &(delay_data_vec[delay_idx].ts_exit);
 
-       ts->tv_sec = intval / 1000000;
-       ts->tv_nsec = intval % 1000000 * 1000;
+       *ts = *val;
 }
 
 static bool
diff --git a/delay.h b/delay.h
index fa111c76024fabd01191a42f5c3ebfd5ae8bbeed..1dc27304280a209e32717066234a431af46abc2e 100644 (file)
--- a/delay.h
+++ b/delay.h
@@ -9,7 +9,7 @@
 # define STRACE_DELAY_H
 
 uint16_t alloc_delay_data(void);
-void fill_delay_data(uint16_t delay_idx, int intval, bool isenter);
+void fill_delay_data(uint16_t delay_idx, struct timespec *val, bool isenter);
 bool is_delay_timer_armed(void);
 void delay_timer_expired(void);
 void arm_delay_timer(const struct tcb *);
diff --git a/depcomp b/depcomp
index 65cbf7093a1e4c4a2da08ac8dcd725f8376c344c..6b391623c4bf023255fdbc8eceb7acf110e5fa79 100755 (executable)
--- a/depcomp
+++ b/depcomp
@@ -3,7 +3,7 @@
 
 scriptversion=2018-03-07.03; # UTC
 
-# Copyright (C) 1999-2018 Free Software Foundation, Inc.
+# Copyright (C) 1999-2020 Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/desc.c b/desc.c
index 92e6fe1694defc5d42216aa1064827934e6c4be8..32fc188275ae7f5d73fc216d415c76eb2f1f4b96 100644 (file)
--- a/desc.c
+++ b/desc.c
@@ -3,7 +3,7 @@
  * Copyright (c) 1993 Branko Lankester <branko@hacktic.nl>
  * Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com>
  * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
- * Copyright (c) 1999-2019 The strace developers.
+ * Copyright (c) 1999-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -19,37 +19,6 @@ SYS_FUNC(close)
        return RVAL_DECODED;
 }
 
-SYS_FUNC(dup)
-{
-       printfd(tcp, tcp->u_arg[0]);
-
-       return RVAL_DECODED | RVAL_FD;
-}
-
-static int
-do_dup2(struct tcb *tcp, int flags_arg)
-{
-       printfd(tcp, tcp->u_arg[0]);
-       tprints(", ");
-       printfd(tcp, tcp->u_arg[1]);
-       if (flags_arg >= 0) {
-               tprints(", ");
-               printflags(open_mode_flags, tcp->u_arg[flags_arg], "O_???");
-       }
-
-       return RVAL_DECODED | RVAL_FD;
-}
-
-SYS_FUNC(dup2)
-{
-       return do_dup2(tcp, -1);
-}
-
-SYS_FUNC(dup3)
-{
-       return do_dup2(tcp, 2);
-}
-
 static int
 decode_select(struct tcb *const tcp, const kernel_ulong_t *const args,
              const print_obj_by_addr_fn print_tv_ts,
index 5c0a09dd965fc527896f69ccc23d1a9e81046c69..5dbb492a4605d699c56db2cc9f6453645cdd95d3 100644 (file)
--- a/dirent.c
+++ b/dirent.c
@@ -4,34 +4,95 @@
  * Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com>
  * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
  * Copyright (c) 2005-2015 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2014-2018 The strace developers.
+ * Copyright (c) 2014-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
  */
 
 #include "defs.h"
+#include "kernel_dirent.h"
 
-#include DEF_MPERS_TYPE(kernel_dirent)
+#include DEF_MPERS_TYPE(kernel_dirent_t)
 
 #include MPERS_DEFS
 
+#include "xgetdents.h"
+#include "print_fields.h"
+
 #define D_NAME_LEN_MAX 256
 
+/* The minimum size of a valid directory entry.  */
+static const unsigned int header_size =
+       offsetof(kernel_dirent_t, d_name);
+
+static void
+print_dentry_head(const kernel_dirent_t *const dent)
+{
+       PRINT_FIELD_U("{", *dent, d_ino);
+       PRINT_FIELD_U(", ", *dent, d_off);
+       PRINT_FIELD_U(", ", *dent, d_reclen);
+}
+
+static unsigned int
+decode_dentry_head(struct tcb *const tcp, const void *const arg)
+{
+       const kernel_dirent_t *const dent = arg;
+
+       if (!abbrev(tcp))
+               print_dentry_head(dent);
+
+       return dent->d_reclen;
+}
+
+static int
+decode_dentry_tail(struct tcb *const tcp, kernel_ulong_t addr,
+                  const void *const arg, const unsigned int d_name_type_len)
+{
+       int rc = 0;
+
+       /* !abbrev(tcp) */
+
+       if (d_name_type_len) {
+               unsigned int d_name_len = d_name_type_len - 1;
+               if (d_name_len) {
+                       if (d_name_len > D_NAME_LEN_MAX)
+                               d_name_len = D_NAME_LEN_MAX;
+                       tprints(", d_name=");
+                       rc = printpathn(tcp, addr, d_name_len - 1);
+               }
+               tprints(", d_type=");
+               const kernel_ulong_t d_type_addr =
+                       addr + (d_name_type_len - 1);
+               unsigned char d_type;
+               if (umove_or_printaddr(tcp, d_type_addr, &d_type))
+                       rc = -1;
+               else
+                       printxval(dirent_types, d_type, "DT_???");
+       }
+       tprints("}");
+
+       return rc;
+}
+
+SYS_FUNC(getdents)
+{
+       return xgetdents(tcp, header_size,
+                        decode_dentry_head, decode_dentry_tail);
+}
+
 static void
 print_old_dirent(struct tcb *const tcp, const kernel_ulong_t addr)
 {
-       kernel_dirent d;
+       kernel_dirent_t dent;
 
-       if (umove_or_printaddr(tcp, addr, &d))
+       if (umove_or_printaddr(tcp, addr, &dent))
                return;
 
-       tprintf("{d_ino=%llu, d_off=%llu, d_reclen=%u, d_name=",
-               zero_extend_signed_to_ull(d.d_ino),
-               zero_extend_signed_to_ull(d.d_off), d.d_reclen);
-       if (d.d_reclen > D_NAME_LEN_MAX)
-               d.d_reclen = D_NAME_LEN_MAX;
-       printpathn(tcp, addr + offsetof(kernel_dirent, d_name), d.d_reclen);
+       print_dentry_head(&dent);
+       tprints(", d_name=");
+       printpathn(tcp, addr + header_size,
+                  MIN(dent.d_reclen, D_NAME_LEN_MAX));
        tprints("}");
 }
 
@@ -45,94 +106,10 @@ SYS_FUNC(readdir)
                        printaddr(tcp->u_arg[1]);
                else
                        print_old_dirent(tcp, tcp->u_arg[1]);
+               const unsigned int count = tcp->u_arg[2];
                /* Not much point in printing this out, it is always 1. */
-               if (tcp->u_arg[2] != 1)
-                       tprintf(", %" PRI_klu, tcp->u_arg[2]);
-       }
-       return 0;
-}
-
-SYS_FUNC(getdents)
-{
-       unsigned int i, len, dents = 0;
-       unsigned char *buf;
-
-       if (entering(tcp)) {
-               printfd(tcp, tcp->u_arg[0]);
-               return 0;
-       }
-
-       const unsigned int count = tcp->u_arg[2];
-
-       if (syserror(tcp) || !verbose(tcp)) {
-               tprints(", ");
-               printaddr(tcp->u_arg[1]);
-               tprintf(", %u", count);
-               return 0;
-       }
-
-       /* Beware of insanely large or too small values in tcp->u_rval */
-       if (tcp->u_rval > 1024*1024)
-               len = 1024*1024;
-       else if (tcp->u_rval < (int) sizeof(kernel_dirent))
-               len = 0;
-       else
-               len = tcp->u_rval;
-
-       if (len) {
-               buf = malloc(len);
-               if (!buf || umoven(tcp, tcp->u_arg[1], len, buf) < 0) {
-                       tprints(", ");
-                       printaddr(tcp->u_arg[1]);
+               if (count != 1)
                        tprintf(", %u", count);
-                       free(buf);
-                       return 0;
-               }
-       } else {
-               buf = NULL;
-       }
-
-       tprints(",");
-       if (!abbrev(tcp))
-               tprints(" [");
-       for (i = 0; len && i <= len - sizeof(kernel_dirent); ) {
-               kernel_dirent *d = (kernel_dirent *) &buf[i];
-
-               if (!abbrev(tcp)) {
-                       int oob = d->d_reclen < sizeof(kernel_dirent) ||
-                                 i + d->d_reclen - 1 >= len;
-                       int d_name_len = oob ? len - i : d->d_reclen;
-                       d_name_len -= offsetof(kernel_dirent, d_name) + 1;
-                       if (d_name_len > D_NAME_LEN_MAX)
-                               d_name_len = D_NAME_LEN_MAX;
-
-                       tprintf("%s{d_ino=%llu, d_off=%llu, d_reclen=%u"
-                               ", d_name=", i ? ", " : "",
-                               zero_extend_signed_to_ull(d->d_ino),
-                               zero_extend_signed_to_ull(d->d_off),
-                               d->d_reclen);
-
-                       print_quoted_cstring(d->d_name, d_name_len);
-
-                       tprints(", d_type=");
-                       if (oob)
-                               tprints("?");
-                       else
-                               printxval(dirent_types, buf[i + d->d_reclen - 1], "DT_???");
-                       tprints("}");
-               }
-               dents++;
-               if (d->d_reclen < sizeof(kernel_dirent)) {
-                       tprints_comment("d_reclen < sizeof(struct dirent)");
-                       break;
-               }
-               i += d->d_reclen;
        }
-       if (!abbrev(tcp))
-               tprints("]");
-       else
-               tprintf_comment("%u entries", dents);
-       tprintf(", %u", count);
-       free(buf);
        return 0;
 }
index f7d68daa4c8ee8564efb4f3e409f1dbb06d0baa0..40ab4b3dcf9f44d1992424f585e81aed44f39b0f 100644 (file)
 /*
- * Copyright (c) 1991, 1992 Paul Kranenburg <pk@cs.few.eur.nl>
- * Copyright (c) 1993 Branko Lankester <branko@hacktic.nl>
- * Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com>
- * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
- * Copyright (c) 2005-2015 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2020 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
  */
 
-#include "defs.h"
-#include <dirent.h>
-
-#include "xlat/dirent_types.h"
+#include "xgetdents.h"
+#include "kernel_dirent.h"
+#include "print_fields.h"
 
 #define D_NAME_LEN_MAX 256
 
-SYS_FUNC(getdents64)
+static void
+print_dentry_head(const kernel_dirent64_t *const dent)
 {
-       /* the minimum size of a valid dirent64 structure */
-       const unsigned int d_name_offset = offsetof(struct dirent64, d_name);
+       PRINT_FIELD_U("{", *dent, d_ino);
+       PRINT_FIELD_U(", ", *dent, d_off);
+       PRINT_FIELD_U(", ", *dent, d_reclen);
+}
 
-       unsigned int i, len, dents = 0;
-       char *buf;
+static unsigned int
+decode_dentry_head(struct tcb *const tcp, const void *const arg)
+{
+       const kernel_dirent64_t *const dent = arg;
 
-       if (entering(tcp)) {
-               printfd(tcp, tcp->u_arg[0]);
-               return 0;
-       }
+       if (!abbrev(tcp))
+               print_dentry_head(dent);
 
-       const unsigned int count = tcp->u_arg[2];
+       return dent->d_reclen;
+}
 
-       if (syserror(tcp) || !verbose(tcp)) {
-               tprints(", ");
-               printaddr(tcp->u_arg[1]);
-               tprintf(", %u", count);
-               return 0;
-       }
+static int
+decode_dentry_tail(struct tcb *const tcp, kernel_ulong_t addr,
+                  const void *const arg, unsigned int d_name_len)
+{
+       const kernel_dirent64_t *const dent = arg;
+       int rc = 0;
 
-       /* Beware of insanely large or too small values in tcp->u_rval */
-       if (tcp->u_rval > 1024*1024)
-               len = 1024*1024;
-       else if (tcp->u_rval < (int) d_name_offset)
-               len = 0;
-       else
-               len = tcp->u_rval;
+       /* !abbrev(tcp) */
 
-       if (len) {
-               buf = malloc(len);
-               if (!buf || umoven(tcp, tcp->u_arg[1], len, buf) < 0) {
-                       tprints(", ");
-                       printaddr(tcp->u_arg[1]);
-                       tprintf(", %u", count);
-                       free(buf);
-                       return 0;
-               }
-       } else {
-               buf = NULL;
-       }
+       PRINT_FIELD_XVAL(", ", *dent, d_type, dirent_types, "DT_???");
 
-       tprints(",");
-       if (!abbrev(tcp))
-               tprints(" [");
-       for (i = 0; len && i <= len - d_name_offset; ) {
-               struct dirent64 *d = (struct dirent64 *) &buf[i];
-               if (!abbrev(tcp)) {
-                       int d_name_len;
-                       if (d->d_reclen >= d_name_offset
-                           && i + d->d_reclen <= len) {
-                               d_name_len = d->d_reclen - d_name_offset;
-                       } else {
-                               d_name_len = len - i - d_name_offset;
-                       }
-                       if (d_name_len > D_NAME_LEN_MAX)
-                               d_name_len = D_NAME_LEN_MAX;
+       if (d_name_len) {
+               if (d_name_len > D_NAME_LEN_MAX)
+                       d_name_len = D_NAME_LEN_MAX;
+               tprints(", d_name=");
+               rc = printpathn(tcp, addr, d_name_len - 1);
+       }
+       tprints("}");
 
-                       tprintf("%s{d_ino=%" PRIu64 ", d_off=%" PRId64
-                               ", d_reclen=%u, d_type=",
-                               i ? ", " : "",
-                               d->d_ino,
-                               d->d_off,
-                               d->d_reclen);
-                       printxval(dirent_types, d->d_type, "DT_???");
+       return rc;
+}
 
-                       tprints(", d_name=");
-                       print_quoted_cstring(d->d_name, d_name_len);
+SYS_FUNC(getdents64)
+{
+       /* The minimum size of a valid directory entry.  */
+       static const unsigned int header_size =
+               offsetof(kernel_dirent64_t, d_name);
 
-                       tprints("}");
-               }
-               if (d->d_reclen < d_name_offset) {
-                       tprints_comment("d_reclen < offsetof(struct dirent64, d_name)");
-                       break;
-               }
-               i += d->d_reclen;
-               dents++;
-       }
-       if (!abbrev(tcp))
-               tprints("]");
-       else
-               tprintf_comment("%u entries", dents);
-       tprintf(", %u", count);
-       free(buf);
-       return 0;
+       return xgetdents(tcp, header_size,
+                        decode_dentry_head, decode_dentry_tail);
 }
diff --git a/dirent_types.c b/dirent_types.c
new file mode 100644 (file)
index 0000000..aafe333
--- /dev/null
@@ -0,0 +1,11 @@
+/*
+ * Copyright (c) 2005-2015 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#include "defs.h"
+#include <dirent.h>
+#include "xlat/dirent_types.h"
diff --git a/dup.c b/dup.c
new file mode 100644 (file)
index 0000000..aa86dd9
--- /dev/null
+++ b/dup.c
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 1999-2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#include "defs.h"
+
+static int
+dup_123(struct tcb *const tcp, const int newfd_arg, const int flags_arg)
+{
+       printfd(tcp, tcp->u_arg[0]);
+
+       if (newfd_arg > 0) {
+               tprints(", ");
+               printfd(tcp, tcp->u_arg[newfd_arg]);
+
+               if (flags_arg > 0) {
+                       tprints(", ");
+                       printflags(open_mode_flags, tcp->u_arg[flags_arg],
+                                  "O_???");
+               }
+       }
+
+       return RVAL_DECODED | RVAL_FD;
+}
+
+SYS_FUNC(dup)
+{
+       return dup_123(tcp, -1, -1);
+}
+
+SYS_FUNC(dup2)
+{
+       return dup_123(tcp, 1, -1);
+}
+
+SYS_FUNC(dup3)
+{
+       return dup_123(tcp, 1, 2);
+}
index d575d46018ba6fd9b283decc75663e2692ae3237..52d20a49775763c9296e255b12c81024df466f4a 100644 (file)
--- a/dyxlat.c
+++ b/dyxlat.c
@@ -7,26 +7,21 @@
 #include "defs.h"
 
 struct dyxlat {
-       size_t used;
        size_t allocated;
-       struct xlat *xlat;
+       struct xlat xlat;
+       struct xlat_data *data;
 };
 
-#define MARK_END(xlat)                         \
-       do {                                    \
-               (xlat).val = 0;                 \
-               (xlat).str = 0;                 \
-       } while (0)
-
 struct dyxlat *
 dyxlat_alloc(const size_t nmemb)
 {
        struct dyxlat *const dyxlat = xmalloc(sizeof(*dyxlat));
 
-       dyxlat->used = 1;
+       dyxlat->xlat.type = XT_NORMAL;
+       dyxlat->xlat.size = 0;
        dyxlat->allocated = nmemb;
-       dyxlat->xlat = xgrowarray(NULL, &dyxlat->allocated, sizeof(struct xlat));
-       MARK_END(dyxlat->xlat[0]);
+       dyxlat->xlat.data = dyxlat->data = xgrowarray(NULL, &dyxlat->allocated,
+                                                     sizeof(struct xlat_data));
 
        return dyxlat;
 }
@@ -36,20 +31,20 @@ dyxlat_free(struct dyxlat *const dyxlat)
 {
        size_t i;
 
-       for (i = 0; i < dyxlat->used - 1; ++i) {
-               free((void *) dyxlat->xlat[i].str);
-               dyxlat->xlat[i].str = NULL;
+       for (i = 0; i < dyxlat->xlat.size; ++i) {
+               free((void *) dyxlat->data[i].str);
+               dyxlat->data[i].str = NULL;
        }
 
-       free(dyxlat->xlat);
-       dyxlat->xlat = NULL;
+       free(dyxlat->data);
+       dyxlat->xlat.data = NULL;
        free(dyxlat);
 }
 
 const struct xlat *
 dyxlat_get(const struct dyxlat *const dyxlat)
 {
-       return dyxlat->xlat;
+       return &dyxlat->xlat;
 }
 
 void
@@ -58,24 +53,24 @@ dyxlat_add_pair(struct dyxlat *const dyxlat, const uint64_t val,
 {
        size_t i;
 
-       for (i = 0; i < dyxlat->used - 1; ++i) {
-               if (dyxlat->xlat[i].val == val) {
-                       if (strncmp(dyxlat->xlat[i].str, str, len) == 0
-                           && dyxlat->xlat[i].str[len] == '\0')
+       for (i = 0; i < dyxlat->xlat.size; ++i) {
+               if (dyxlat->data[i].val == val) {
+                       if (strncmp(dyxlat->data[i].str, str, len) == 0
+                           && dyxlat->data[i].str[len] == '\0')
                                return;
 
-                       free((void *) dyxlat->xlat[i].str);
-                       dyxlat->xlat[i].str = xstrndup(str, len);
+                       free((void *) dyxlat->data[i].str);
+                       dyxlat->data[i].str = xstrndup(str, len);
                        return;
                }
        }
 
-       if (dyxlat->used >= dyxlat->allocated)
-               dyxlat->xlat = xgrowarray(dyxlat->xlat, &dyxlat->allocated,
-                                         sizeof(struct xlat));
+       if (dyxlat->xlat.size >= dyxlat->allocated)
+               dyxlat->xlat.data = dyxlat->data =
+                       xgrowarray(dyxlat->data, &dyxlat->allocated,
+                                  sizeof(struct xlat_data));
 
-       dyxlat->xlat[dyxlat->used - 1].val = val;
-       dyxlat->xlat[dyxlat->used - 1].str = xstrndup(str, len);
-       MARK_END(dyxlat->xlat[dyxlat->used]);
-       dyxlat->used++;
+       dyxlat->data[dyxlat->xlat.size].val = val;
+       dyxlat->data[dyxlat->xlat.size].str = xstrndup(str, len);
+       dyxlat->xlat.size++;
 }
diff --git a/evdev.c b/evdev.c
index e402d26e2b3ea84c56ec637109a85c1f88566c82..1d4e9aef3217df3da65fc6c206cfcb86357969b9 100644 (file)
--- a/evdev.c
+++ b/evdev.c
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2015 Etienne Gemsa <etienne.gemsa@lse.epita.fr>
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -14,8 +14,9 @@
 
 #ifdef HAVE_LINUX_INPUT_H
 
+# include "print_fields.h"
 # include <linux/ioctl.h>
-# include <linux/input.h>
+# include "types/evdev.h"
 
 # include "xlat/evdev_autorepeat.h"
 # include "xlat/evdev_ff_status.h"
 # include "xlat/evdev_snd.h"
 # include "xlat/evdev_switch.h"
 
+/** Added by Linux commit v2.6.38-rc1~247^2~1^2~2^2~5 */
+# ifndef INPUT_PROP_MAX
+#  define INPUT_PROP_MAX 0x1f
+# endif
 # ifndef SYN_MAX
 #  define SYN_MAX 0xf
 # endif
 
-const size_t evdev_abs_size = ARRAY_SIZE(evdev_abs) - 1;
+/*
+ * Has to be included after struct_* type definitions, since _IO* macros
+ * used in fallback definitions require them for sizeof().
+ */
+# define XLAT_MACROS_ONLY
+#  include "xlat/evdev_ioctl_cmds.h"
+# undef XLAT_MACROS_ONLY
+
+# ifndef EVIOCGPROP
+#  define EVIOCGPROP(len)      _IOR('E', 0x09, len)
+# endif
+# ifndef EVIOCGMTSLOTS
+#  define EVIOCGMTSLOTS(len)   _IOR('E', 0x0a, len)
+# endif
+# ifndef EVIOCGSW
+#  define EVIOCGSW(len)                _IOR('E', 0x1b, len)
+# endif
 
 static int
-abs_ioctl(struct tcb *const tcp, const kernel_ulong_t arg)
+abs_ioctl(struct tcb *const tcp, const unsigned int code,
+         const kernel_ulong_t arg)
 {
+       static const size_t orig_sz = offsetofend(struct_input_absinfo, flat);
+       static const size_t res_sz = offsetofend(struct_input_absinfo,
+                                                resolution);
+
+       struct_input_absinfo absinfo;
+       size_t sz = _IOC_SIZE(code);
+       size_t read_sz = MIN(sz, sizeof(absinfo));
+
+       if (sz < orig_sz)
+               return RVAL_DECODED;
+
        tprints(", ");
 
-       struct input_absinfo absinfo;
-
-       if (!umove_or_printaddr(tcp, arg, &absinfo)) {
-               tprintf("{value=%u"
-                       ", minimum=%u, ",
-                       absinfo.value,
-                       absinfo.minimum);
-
-               if (!abbrev(tcp)) {
-                       tprintf("maximum=%u"
-                               ", fuzz=%u"
-                               ", flat=%u",
-                               absinfo.maximum,
-                               absinfo.fuzz,
-                               absinfo.flat);
-# ifdef HAVE_STRUCT_INPUT_ABSINFO_RESOLUTION
-                       tprintf(", resolution=%u",
-                               absinfo.resolution);
-# endif
-               } else {
-                       tprints("...");
-               }
+       if (umoven_or_printaddr(tcp, arg, read_sz, &absinfo))
+               return RVAL_IOCTL_DECODED;
 
-               tprints("}");
+       PRINT_FIELD_U("{", absinfo, value);
+       PRINT_FIELD_U(", ", absinfo, minimum);
+
+       if (!abbrev(tcp)) {
+               PRINT_FIELD_U(", ", absinfo, maximum);
+               PRINT_FIELD_U(", ", absinfo, fuzz);
+               PRINT_FIELD_U(", ", absinfo, flat);
+               if (sz > orig_sz) {
+                       if (sz >= res_sz)
+                               PRINT_FIELD_U(", ", absinfo, resolution);
+                       if (sz != res_sz)
+                               tprints(", ...");
+               }
+       } else {
+               tprints(", ...");
        }
 
+       tprints("}");
+
        return RVAL_IOCTL_DECODED;
 }
 
@@ -78,50 +107,38 @@ keycode_ioctl(struct tcb *const tcp, const kernel_ulong_t arg)
 
        if (!umove_or_printaddr(tcp, arg, &keycode)) {
                tprintf("[%u, ", keycode[0]);
-               printxval_index(evdev_keycode, keycode[1], "KEY_???");
+               printxval(evdev_keycode, keycode[1], "KEY_???");
                tprints("]");
        }
 
        return RVAL_IOCTL_DECODED;
 }
 
-# ifdef EVIOCGKEYCODE_V2
 static int
 keycode_V2_ioctl(struct tcb *const tcp, const kernel_ulong_t arg)
 {
        tprints(", ");
 
-       struct input_keymap_entry ike;
+       struct_input_keymap_entry ike;
 
        if (umove_or_printaddr(tcp, arg, &ike))
                return RVAL_IOCTL_DECODED;
 
-       tprintf("{flags=%" PRIu8
-               ", len=%" PRIu8 ", ",
-               ike.flags,
-               ike.len);
+       PRINT_FIELD_U("{", ike, flags);
+       PRINT_FIELD_U(", ", ike, len);
 
        if (!abbrev(tcp)) {
-               unsigned int i;
-
-               tprintf("index=%" PRIu16 ", keycode=", ike.index);
-               printxval_index(evdev_keycode, ike.keycode, "KEY_???");
-               tprints(", scancode=[");
-               for (i = 0; i < ARRAY_SIZE(ike.scancode); i++) {
-                       if (i > 0)
-                               tprints(", ");
-                       tprintf("%" PRIx8, ike.scancode[i]);
-               }
-               tprints("]");
+               PRINT_FIELD_U(", ", ike, index);
+               PRINT_FIELD_XVAL(", ", ike, keycode, evdev_keycode, "KEY_???");
+               PRINT_FIELD_X_ARRAY(", ", ike, scancode);
        } else {
-               tprints("...");
+               tprints("...");
        }
 
        tprints("}");
 
        return RVAL_IOCTL_DECODED;
 }
-# endif /* EVIOCGKEYCODE_V2 */
 
 static int
 getid_ioctl(struct tcb *const tcp, const kernel_ulong_t arg)
@@ -130,67 +147,85 @@ getid_ioctl(struct tcb *const tcp, const kernel_ulong_t arg)
 
        struct input_id id;
 
-       if (!umove_or_printaddr(tcp, arg, &id))
-               tprintf("{ID_BUS=%" PRIu16
-                       ", ID_VENDOR=%" PRIu16
-                       ", ID_PRODUCT=%" PRIu16
-                       ", ID_VERSION=%" PRIu16 "}",
-                       id.bustype,
-                       id.vendor,
-                       id.product,
-                       id.version);
+       if (!umove_or_printaddr(tcp, arg, &id)) {
+               PRINT_FIELD_U("{", id, bustype);
+               PRINT_FIELD_U(", ", id, vendor);
+               PRINT_FIELD_U(", ", id, product);
+               PRINT_FIELD_U(", ", id, version);
+               tprints("}");
+       }
 
        return RVAL_IOCTL_DECODED;
 }
 
 static int
-decode_bitset_(struct tcb *const tcp, const kernel_ulong_t arg,
-              const struct xlat decode_nr[], const unsigned int max_nr,
-              const char *const dflt, size_t decode_nr_size, enum xlat_type xt)
+decode_bitset(struct tcb *const tcp, const kernel_ulong_t arg,
+             const struct xlat *decode_nr, const unsigned int max_nr,
+             const char *const dflt)
 {
        tprints(", ");
 
        unsigned int size;
+       unsigned int size_bits;
+
        if ((kernel_ulong_t) tcp->u_rval > max_nr / 8)
-               size = max_nr;
+               size_bits = max_nr;
        else
-               size = tcp->u_rval * 8;
+               size_bits = tcp->u_rval * 8;
+
+       size = ROUNDUP(ROUNDUP_DIV(size_bits, 8), current_wordsize);
+
+       if (syserror(tcp) || !size) {
+               printaddr(arg);
+
+               return RVAL_IOCTL_DECODED;
+       }
+
        char decoded_arg[size];
 
        if (umove_or_printaddr(tcp, arg, &decoded_arg))
                return RVAL_IOCTL_DECODED;
 
-       tprints("[");
-
-       int bit_displayed = 0;
-       int i = next_set_bit(decoded_arg, 0, size);
-       if (i < 0) {
-               tprints(" 0 ");
-       } else {
-               printxval_dispatch(decode_nr, decode_nr_size, i, dflt, xt);
+       if (xlat_verbose(xlat_verbosity) != XLAT_STYLE_RAW) {
+               tprints("[");
 
-               while ((i = next_set_bit(decoded_arg, i + 1, size)) > 0) {
-                       if (abbrev(tcp) && bit_displayed >= 3) {
-                               tprints(", ...");
-                               break;
+               int bit_displayed = 0;
+               int i = next_set_bit(decoded_arg, 0, size_bits);
+               if (i < 0) {
+                       tprints(" 0 ");
+               } else {
+                       printxval(decode_nr, i, dflt);
+
+                       while ((i = next_set_bit(decoded_arg, i + 1,
+                                                size_bits)) > 0) {
+                               if (abbrev(tcp) && bit_displayed >= 3) {
+                                       tprints(", ...");
+                                       break;
+                               }
+                               tprints(", ");
+                               printxval(decode_nr, i, dflt);
+                               bit_displayed++;
                        }
-                       tprints(", ");
-                       printxval_dispatch(decode_nr, decode_nr_size, i, dflt,
-                                          xt);
-                       bit_displayed++;
                }
+
+               tprints("]");
+       }
+
+       if (xlat_verbose(xlat_verbosity) == XLAT_STYLE_VERBOSE)
+               tprints(" /* ");
+
+       if (xlat_verbose(xlat_verbosity) != XLAT_STYLE_ABBREV) {
+               print_local_array_ex(tcp, decoded_arg, size / current_wordsize,
+                                    current_wordsize, print_xlong_array_member,
+                                    NULL, 0, NULL, NULL);
        }
 
-       tprints("]");
+       if (xlat_verbose(xlat_verbosity) == XLAT_STYLE_VERBOSE)
+               tprints(" */");
 
        return RVAL_IOCTL_DECODED;
 }
 
-# define decode_bitset(tcp_, arg_, decode_nr_, max_nr_, dflt_, xt_) \
-       decode_bitset_((tcp_), (arg_), (decode_nr_), (max_nr_), \
-                      (dflt_), ARRAY_SIZE(decode_nr_) - 1, (xt_))
-
-# ifdef EVIOCGMTSLOTS
 static int
 mtslots_ioctl(struct tcb *const tcp, const unsigned int code,
              const kernel_ulong_t arg)
@@ -221,9 +256,7 @@ mtslots_ioctl(struct tcb *const tcp, const unsigned int code,
 
        return RVAL_IOCTL_DECODED;
 }
-# endif /* EVIOCGMTSLOTS */
 
-# if defined EVIOCGREP || defined EVIOCSREP
 static int
 repeat_ioctl(struct tcb *const tcp, const kernel_ulong_t arg)
 {
@@ -231,55 +264,53 @@ repeat_ioctl(struct tcb *const tcp, const kernel_ulong_t arg)
        printpair_int(tcp, arg, "%u");
        return RVAL_IOCTL_DECODED;
 }
-# endif /* EVIOCGREP || EVIOCSREP */
 
 static int
 bit_ioctl(struct tcb *const tcp, const unsigned int ev_nr,
          const kernel_ulong_t arg)
 {
        switch (ev_nr) {
-               case 0:
-                       return decode_bitset(tcp, arg, evdev_ev,
-                                            EV_MAX, "EV_???", XT_SORTED);
-               case EV_KEY:
-                       return decode_bitset(tcp, arg, evdev_keycode,
-                                            KEY_MAX, "KEY_???", XT_INDEXED);
-               case EV_REL:
-                       return decode_bitset(tcp, arg, evdev_relative_axes,
-                                            REL_MAX, "REL_???", XT_INDEXED);
-               case EV_ABS:
-                       return decode_bitset(tcp, arg, evdev_abs,
-                                            ABS_MAX, "ABS_???", XT_INDEXED);
-               case EV_MSC:
-                       return decode_bitset(tcp, arg, evdev_misc,
-                                            MSC_MAX, "MSC_???", XT_INDEXED);
-               case EV_SW:
-                       return decode_bitset(tcp, arg, evdev_switch,
-                                            SW_MAX, "SW_???", XT_INDEXED);
-               case EV_LED:
-                       return decode_bitset(tcp, arg, evdev_leds,
-                                            LED_MAX, "LED_???", XT_INDEXED);
-               case EV_SND:
-                       return decode_bitset(tcp, arg, evdev_snd,
-                                            SND_MAX, "SND_???", XT_INDEXED);
-               case EV_REP:
-                       return decode_bitset(tcp, arg, evdev_autorepeat,
-                                            REP_MAX, "REP_???", XT_INDEXED);
-               case EV_FF:
-                       return decode_bitset(tcp, arg, evdev_ff_types,
-                                            FF_MAX, "FF_???", XT_SORTED);
-               case EV_PWR:
-                       tprints(", ");
-                       printnum_int(tcp, arg, "%d");
-                       return RVAL_IOCTL_DECODED;
-               case EV_FF_STATUS:
-                       return decode_bitset(tcp, arg, evdev_ff_status,
-                                            FF_STATUS_MAX, "FF_STATUS_???",
-                                            XT_INDEXED);
-               default:
-                       tprints(", ");
-                       printaddr(arg);
-                       return RVAL_IOCTL_DECODED;
+       case 0:
+               return decode_bitset(tcp, arg, evdev_ev,
+                                    EV_MAX, "EV_???");
+       case EV_KEY:
+               return decode_bitset(tcp, arg, evdev_keycode,
+                                    KEY_MAX, "KEY_???");
+       case EV_REL:
+               return decode_bitset(tcp, arg, evdev_relative_axes,
+                                    REL_MAX, "REL_???");
+       case EV_ABS:
+               return decode_bitset(tcp, arg, evdev_abs,
+                                    ABS_MAX, "ABS_???");
+       case EV_MSC:
+               return decode_bitset(tcp, arg, evdev_misc,
+                                    MSC_MAX, "MSC_???");
+       case EV_SW:
+               return decode_bitset(tcp, arg, evdev_switch,
+                                    SW_MAX, "SW_???");
+       case EV_LED:
+               return decode_bitset(tcp, arg, evdev_leds,
+                                    LED_MAX, "LED_???");
+       case EV_SND:
+               return decode_bitset(tcp, arg, evdev_snd,
+                                    SND_MAX, "SND_???");
+       case EV_REP:
+               return decode_bitset(tcp, arg, evdev_autorepeat,
+                                    REP_MAX, "REP_???");
+       case EV_FF:
+               return decode_bitset(tcp, arg, evdev_ff_types,
+                                    FF_MAX, "FF_???");
+       case EV_PWR:
+               tprints(", ");
+               printnum_int(tcp, arg, "%d");
+               return RVAL_IOCTL_DECODED;
+       case EV_FF_STATUS:
+               return decode_bitset(tcp, arg, evdev_ff_status,
+                                    FF_STATUS_MAX, "FF_STATUS_???");
+       default:
+               tprints(", ");
+               printaddr(arg);
+               return RVAL_IOCTL_DECODED;
        }
 }
 
@@ -289,68 +320,57 @@ evdev_read_ioctl(struct tcb *const tcp, const unsigned int code,
 {
        /* fixed-number fixed-length commands */
        switch (code) {
-               case EVIOCGVERSION:
-                       tprints(", ");
-                       printnum_int(tcp, arg, "%#x");
-                       return RVAL_IOCTL_DECODED;
-               case EVIOCGEFFECTS:
-                       tprints(", ");
-                       printnum_int(tcp, arg, "%u");
-                       return RVAL_IOCTL_DECODED;
-               case EVIOCGID:
-                       return getid_ioctl(tcp, arg);
-# ifdef EVIOCGREP
-               case EVIOCGREP:
-                       return repeat_ioctl(tcp, arg);
-# endif
-               case EVIOCGKEYCODE:
-                       return keycode_ioctl(tcp, arg);
-# ifdef EVIOCGKEYCODE_V2
-               case EVIOCGKEYCODE_V2:
-                       return keycode_V2_ioctl(tcp, arg);
-# endif
+       case EVIOCGVERSION:
+               tprints(", ");
+               printnum_int(tcp, arg, "%#x");
+               return RVAL_IOCTL_DECODED;
+       case EVIOCGEFFECTS:
+               tprints(", ");
+               printnum_int(tcp, arg, "%u");
+               return RVAL_IOCTL_DECODED;
+       case EVIOCGID:
+               return getid_ioctl(tcp, arg);
+       case EVIOCGREP:
+               return repeat_ioctl(tcp, arg);
+       case EVIOCGKEYCODE:
+               return keycode_ioctl(tcp, arg);
+       case EVIOCGKEYCODE_V2:
+               return keycode_V2_ioctl(tcp, arg);
        }
 
        /* fixed-number variable-length commands */
        switch (_IOC_NR(code)) {
-# ifdef EVIOCGMTSLOTS
-               case _IOC_NR(EVIOCGMTSLOTS(0)):
-                       return mtslots_ioctl(tcp, code, arg);
-# endif
-               case _IOC_NR(EVIOCGNAME(0)):
-               case _IOC_NR(EVIOCGPHYS(0)):
-               case _IOC_NR(EVIOCGUNIQ(0)):
-                       tprints(", ");
-                       if (syserror(tcp))
-                               printaddr(arg);
-                       else
-                               printstrn(tcp, arg, tcp->u_rval);
-                       return RVAL_IOCTL_DECODED;
-# ifdef EVIOCGPROP
-               case _IOC_NR(EVIOCGPROP(0)):
-                       return decode_bitset(tcp, arg, evdev_prop,
-                                            INPUT_PROP_MAX, "PROP_???",
-                                            XT_INDEXED);
-# endif
-               case _IOC_NR(EVIOCGSND(0)):
-                       return decode_bitset(tcp, arg, evdev_snd,
-                                            SND_MAX, "SND_???", XT_INDEXED);
-# ifdef EVIOCGSW
-               case _IOC_NR(EVIOCGSW(0)):
-                       return decode_bitset(tcp, arg, evdev_switch,
-                                            SW_MAX, "SW_???", XT_INDEXED);
-# endif
-               case _IOC_NR(EVIOCGKEY(0)):
-                       return decode_bitset(tcp, arg, evdev_keycode,
-                                            KEY_MAX, "KEY_???", XT_INDEXED);
-               case _IOC_NR(EVIOCGLED(0)):
-                       return decode_bitset(tcp, arg, evdev_leds,
-                                            LED_MAX, "LED_???", XT_INDEXED);
+       case _IOC_NR(EVIOCGMTSLOTS(0)):
+               return mtslots_ioctl(tcp, code, arg);
+       case _IOC_NR(EVIOCGNAME(0)):
+       case _IOC_NR(EVIOCGPHYS(0)):
+       case _IOC_NR(EVIOCGUNIQ(0)):
+               tprints(", ");
+               if (syserror(tcp))
+                       printaddr(arg);
+               else
+                       printstrn(tcp, arg, tcp->u_rval);
+               return RVAL_IOCTL_DECODED;
+       case _IOC_NR(EVIOCGPROP(0)):
+               return decode_bitset(tcp, arg, evdev_prop,
+                                    INPUT_PROP_MAX, "PROP_???");
+       case _IOC_NR(EVIOCGSND(0)):
+               return decode_bitset(tcp, arg, evdev_snd,
+                                    SND_MAX, "SND_???");
+       case _IOC_NR(EVIOCGSW(0)):
+               return decode_bitset(tcp, arg, evdev_switch,
+                                    SW_MAX, "SW_???");
+       case _IOC_NR(EVIOCGKEY(0)):
+               return decode_bitset(tcp, arg, evdev_keycode,
+                                    KEY_MAX, "KEY_???");
+       case _IOC_NR(EVIOCGLED(0)):
+               return decode_bitset(tcp, arg, evdev_leds,
+                                    LED_MAX, "LED_???");
        }
 
        /* multi-number fixed-length commands */
        if ((_IOC_NR(code) & ~ABS_MAX) == _IOC_NR(EVIOCGABS(0)))
-               return abs_ioctl(tcp, arg);
+               return abs_ioctl(tcp, code, arg);
 
        /* multi-number variable-length commands */
        if ((_IOC_NR(code) & ~EV_MAX) == _IOC_NR(EVIOCGBIT(0, 0)))
@@ -365,42 +385,33 @@ evdev_write_ioctl(struct tcb *const tcp, const unsigned int code,
 {
        /* fixed-number fixed-length commands */
        switch (code) {
-# ifdef EVIOCSREP
-               case EVIOCSREP:
-                       return repeat_ioctl(tcp, arg);
-# endif
-               case EVIOCSKEYCODE:
-                       return keycode_ioctl(tcp, arg);
-# ifdef EVIOCSKEYCODE_V2
-               case EVIOCSKEYCODE_V2:
-                       return keycode_V2_ioctl(tcp, arg);
-# endif
-               case EVIOCRMFF:
-                       tprintf(", %d", (int) arg);
-                       return RVAL_IOCTL_DECODED;
-               case EVIOCGRAB:
-# ifdef EVIOCREVOKE
-               case EVIOCREVOKE:
-# endif
-                       tprintf(", %" PRI_klu, arg);
-                       return RVAL_IOCTL_DECODED;
-# ifdef EVIOCSCLOCKID
-               case EVIOCSCLOCKID:
-                       tprints(", ");
-                       printnum_int(tcp, arg, "%u");
-                       return RVAL_IOCTL_DECODED;
-# endif
-               default: {
-                       int rc = evdev_write_ioctl_mpers(tcp, code, arg);
-
-                       if (rc != RVAL_DECODED)
-                               return rc;
-               }
+       case EVIOCSREP:
+               return repeat_ioctl(tcp, arg);
+       case EVIOCSKEYCODE:
+               return keycode_ioctl(tcp, arg);
+       case EVIOCSKEYCODE_V2:
+               return keycode_V2_ioctl(tcp, arg);
+       case EVIOCRMFF:
+               tprintf(", %d", (int) arg);
+               return RVAL_IOCTL_DECODED;
+       case EVIOCGRAB:
+       case EVIOCREVOKE:
+               tprintf(", %" PRI_klu, arg);
+               return RVAL_IOCTL_DECODED;
+       case EVIOCSCLOCKID:
+               tprints(", ");
+               printnum_int(tcp, arg, "%u");
+               return RVAL_IOCTL_DECODED;
        }
 
+       int rc = evdev_write_ioctl_mpers(tcp, code, arg);
+
+       if (rc != RVAL_DECODED)
+               return rc;
+
        /* multi-number fixed-length commands */
        if ((_IOC_NR(code) & ~ABS_MAX) == _IOC_NR(EVIOCSABS(0)))
-               return abs_ioctl(tcp, arg);
+               return abs_ioctl(tcp, code, arg);
 
        return 0;
 }
@@ -416,14 +427,14 @@ evdev_ioctl(struct tcb *const tcp,
            const unsigned int code, const kernel_ulong_t arg)
 {
        switch (_IOC_DIR(code)) {
-               case _IOC_READ:
-                       if (entering(tcp))
-                               return 0;
-                       return evdev_read_ioctl(tcp, code, arg);
-               case _IOC_WRITE:
-                       return evdev_write_ioctl(tcp, code, arg) | RVAL_DECODED;
-               default:
-                       return RVAL_DECODED;
+       case _IOC_READ:
+               if (entering(tcp))
+                       return 0;
+               return evdev_read_ioctl(tcp, code, arg);
+       case _IOC_WRITE:
+               return evdev_write_ioctl(tcp, code, arg) | RVAL_DECODED;
+       default:
+               return RVAL_DECODED;
        }
 }
 
index ff99544bac217d3e4da1bdb6dc7a03ed890639c5..f862e2714183f6f52d03713b4a5fdfd01b1bfb0b 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2015 Etienne Gemsa <etienne.gemsa@lse.epita.fr>
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -24,19 +24,18 @@ typedef struct ff_effect struct_ff_effect;
 
 #ifdef HAVE_LINUX_INPUT_H
 
+# include "print_fields.h"
+
 static void
 decode_envelope(void *const data)
 {
        const struct ff_envelope *const envelope = data;
 
-       tprintf(", envelope={attack_length=%" PRIu16
-               ", attack_level=%" PRIu16
-               ", fade_length=%" PRIu16
-               ", fade_level=%#x}",
-               envelope->attack_length,
-               envelope->attack_level,
-               envelope->fade_length,
-               envelope->fade_level);
+       PRINT_FIELD_U(", envelope={", *envelope, attack_length);
+       PRINT_FIELD_U(", ", *envelope, attack_level);
+       PRINT_FIELD_U(", ", *envelope, fade_length);
+       PRINT_FIELD_X(", ", *envelope, fade_level);
+       tprints("}");
 }
 
 static int
@@ -51,65 +50,51 @@ ff_effect_ioctl(struct tcb *const tcp, const kernel_ulong_t arg)
 
        tprints("{type=");
        print_evdev_ff_type(ffe.type);
-       tprintf(", id=%" PRIu16
-               ", direction=%" PRIu16 ", ",
-               ffe.id,
-               ffe.direction);
+       PRINT_FIELD_D(", ", ffe, id);
+       PRINT_FIELD_U(", ", ffe, direction);
 
        if (abbrev(tcp)) {
-               tprints("...}");
+               tprints("...}");
                return RVAL_IOCTL_DECODED;
        }
 
-       tprintf("trigger={button=%" PRIu16
-               ", interval=%" PRIu16 "}"
-               ", replay={length=%" PRIu16
-               ", delay=%" PRIu16 "}",
-               ffe.trigger.button,
-               ffe.trigger.interval,
-               ffe.replay.length,
-               ffe.replay.delay);
+       PRINT_FIELD_U(", trigger={", ffe.trigger, button);
+       PRINT_FIELD_U(", ", ffe.trigger, interval);
+       PRINT_FIELD_U("}, replay={", ffe.replay, length);
+       PRINT_FIELD_U(", ", ffe.replay, delay);
+       tprints("}");
 
        switch (ffe.type) {
-               case FF_CONSTANT:
-                       tprintf(", constant={level=%" PRId16,
-                               ffe.u.constant.level);
-                       decode_envelope(&ffe.u.constant.envelope);
-                       tprints("}");
-                       break;
-               case FF_RAMP:
-                       tprintf(", ramp={start_level=%" PRId16
-                               ", end_level=%" PRId16,
-                               ffe.u.ramp.start_level,
-                               ffe.u.ramp.end_level);
-                       decode_envelope(&ffe.u.ramp.envelope);
-                       tprints("}");
-                       break;
-               case FF_PERIODIC:
-                       tprintf(", periodic={waveform=%" PRIu16
-                               ", period=%" PRIu16
-                               ", magnitude=%" PRId16
-                               ", offset=%" PRId16
-                               ", phase=%" PRIu16,
-                               ffe.u.periodic.waveform,
-                               ffe.u.periodic.period,
-                               ffe.u.periodic.magnitude,
-                               ffe.u.periodic.offset,
-                               ffe.u.periodic.phase);
-                       decode_envelope(&ffe.u.periodic.envelope);
-                       tprintf(", custom_len=%u, custom_data=",
-                               ffe.u.periodic.custom_len);
-                       printaddr(ptr_to_kulong(ffe.u.periodic.custom_data));
-                       tprints("}");
-                       break;
-               case FF_RUMBLE:
-                       tprintf(", rumble={strong_magnitude=%" PRIu16
-                               ", weak_magnitude=%" PRIu16 "}",
-                               ffe.u.rumble.strong_magnitude,
-                               ffe.u.rumble.weak_magnitude);
-                       break;
-               default:
-                       break;
+       case FF_CONSTANT:
+               PRINT_FIELD_D(", constant={", ffe.u.constant, level);
+               decode_envelope(&ffe.u.constant.envelope);
+               tprints("}");
+               break;
+       case FF_RAMP:
+               PRINT_FIELD_D(", ramp={", ffe.u.ramp, start_level);
+               PRINT_FIELD_D(", ", ffe.u.ramp, end_level);
+               decode_envelope(&ffe.u.ramp.envelope);
+               tprints("}");
+               break;
+       case FF_PERIODIC:
+               PRINT_FIELD_U(", periodic={", ffe.u.periodic, waveform);
+               PRINT_FIELD_U(", ", ffe.u.periodic, period);
+               PRINT_FIELD_D(", ", ffe.u.periodic, magnitude);
+               PRINT_FIELD_D(", ", ffe.u.periodic, offset);
+               PRINT_FIELD_U(", ", ffe.u.periodic, phase);
+               decode_envelope(&ffe.u.periodic.envelope);
+               PRINT_FIELD_U(", ", ffe.u.periodic, custom_len);
+               tprints(", custom_data=");
+               printaddr(ptr_to_kulong(ffe.u.periodic.custom_data));
+               tprints("}");
+               break;
+       case FF_RUMBLE:
+               PRINT_FIELD_U(", rumble={", ffe.u.rumble, strong_magnitude);
+               PRINT_FIELD_U(", ", ffe.u.rumble, weak_magnitude);
+               tprints("}");
+               break;
+       default:
+               break;
        }
 
        tprints("}");
@@ -121,10 +106,10 @@ MPERS_PRINTER_DECL(int, evdev_write_ioctl_mpers, struct tcb *const tcp,
                   const unsigned int code, const kernel_ulong_t arg)
 {
        switch (code) {
-               case EVIOCSFF:
-                       return ff_effect_ioctl(tcp, arg);
-               default:
-                       return RVAL_DECODED;
+       case EVIOCSFF:
+               return ff_effect_ioctl(tcp, arg);
+       default:
+               return RVAL_DECODED;
        }
 }
 
index b675cd26900a34278b47d5af7e7be26e081a1660..567dcbef0379c54853ac97d8b261f85cc14fba79 100644 (file)
--- a/execve.c
+++ b/execve.c
@@ -6,7 +6,7 @@
  * Copyright (c) 2007 Roland McGrath <roland@redhat.com>
  * Copyright (c) 2011-2012 Denys Vlasenko <vda.linux@googlemail.com>
  * Copyright (c) 2010-2015 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2014-2018 The strace developers.
+ * Copyright (c) 2014-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -109,6 +109,7 @@ SYS_FUNC(execve)
 SYS_FUNC(execveat)
 {
        print_dirfd(tcp, tcp->u_arg[0]);
+       tprints(", ");
        decode_execve(tcp, 1);
        tprints(", ");
        printflags(at_flags, tcp->u_arg[4], "AT_???");
index 9a0d5c628b3f57589fb16d10993a9382a9f297f7..91edf068222cab2fe3f0256c63f1c0de47913709 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2014-2015 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2014-2018 The strace developers.
+ * Copyright (c) 2014-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -55,12 +55,11 @@ SYS_FUNC(fanotify_mark)
 #endif
        printflags64(fan_event_flags, mask, "FAN_???");
        tprints(", ");
-       if ((int) tcp->u_arg[argn] == FAN_NOFD) {
+       if ((int) tcp->u_arg[argn] == FAN_NOFD)
                print_xlat_d(FAN_NOFD);
-               tprints(", ");
-       } else {
+       else
                print_dirfd(tcp, tcp->u_arg[argn]);
-       }
+       tprints(", ");
        printpath(tcp, tcp->u_arg[argn + 1]);
 
        return RVAL_DECODED;
index 15fcb063665242767b17469b1f768b3a9dc887b0..b573b5bae9d0c9b910f5d050ed867e110a01c4d7 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014-2018 The strace developers.
+ * Copyright (c) 2014-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -10,6 +10,7 @@
 SYS_FUNC(fchownat)
 {
        print_dirfd(tcp, tcp->u_arg[0]);
+       tprints(", ");
        printpath(tcp, tcp->u_arg[1]);
        printuid(", ", tcp->u_arg[2]);
        printuid(", ", tcp->u_arg[3]);
diff --git a/fcntl.c b/fcntl.c
index 0b4221cedb76d99670c55379adb362f190edd0ce..5c630a06e67aadf50c3b52adc1015cd49936f02d 100644 (file)
--- a/fcntl.c
+++ b/fcntl.c
@@ -3,7 +3,7 @@
  * Copyright (c) 1993 Branko Lankester <branko@hacktic.nl>
  * Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com>
  * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
- * Copyright (c) 1999-2018 The strace developers.
+ * Copyright (c) 1999-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -11,6 +11,7 @@
 
 #include "defs.h"
 #include "flock.h"
+#include "print_fields.h"
 
 #include "xlat/f_owner_types.h"
 #include "xlat/f_seals.h"
 #include "xlat/notifyflags.h"
 
 static void
-print_struct_flock64(const struct_kernel_flock64 *fl, const int getlk)
+print_struct_flock64(struct tcb *const tcp, const struct_kernel_flock64 *fl, const int getlk)
 {
-       tprints("{l_type=");
-       printxval(lockfcmds, (unsigned short) fl->l_type, "F_???");
-       tprints(", l_whence=");
-       printxval(whence_codes, (unsigned short) fl->l_whence, "SEEK_???");
-       tprintf(", l_start=%" PRId64 ", l_len=%" PRId64,
-               (int64_t) fl->l_start, (int64_t) fl->l_len);
+       PRINT_FIELD_XVAL("{", *fl, l_type, lockfcmds, "F_???");
+       PRINT_FIELD_XVAL(", ", *fl, l_whence, whence_codes, "SEEK_???");
+       PRINT_FIELD_D(", ", *fl, l_start);
+       PRINT_FIELD_D(", ", *fl, l_len);
        if (getlk)
-               tprintf(", l_pid=%lu", (unsigned long) fl->l_pid);
+               PRINT_FIELD_TGID(", ", *fl, l_pid, tcp);
        tprints("}");
 }
 
@@ -39,7 +38,7 @@ printflock64(struct tcb *const tcp, const kernel_ulong_t addr, const int getlk)
        struct_kernel_flock64 fl;
 
        if (fetch_struct_flock64(tcp, addr, &fl))
-               print_struct_flock64(&fl, getlk);
+               print_struct_flock64(tcp, &fl, getlk);
 }
 
 static void
@@ -48,7 +47,7 @@ printflock(struct tcb *const tcp, const kernel_ulong_t addr, const int getlk)
        struct_kernel_flock64 fl;
 
        if (fetch_struct_flock(tcp, addr, &fl))
-               print_struct_flock64(&fl, getlk);
+               print_struct_flock64(tcp, &fl, getlk);
 }
 
 static void
@@ -59,9 +58,24 @@ print_f_owner_ex(struct tcb *const tcp, const kernel_ulong_t addr)
        if (umove_or_printaddr(tcp, addr, &owner))
                return;
 
-       tprints("{type=");
-       printxval(f_owner_types, owner.type, "F_OWNER_???");
-       tprintf(", pid=%d}", owner.pid);
+       PRINT_FIELD_XVAL("{", owner, type, f_owner_types, "F_OWNER_???");
+
+       enum pid_type pid_type = PT_NONE;
+       switch (owner.type)
+       {
+       case F_OWNER_TID:
+               pid_type = PT_TID;
+               break;
+       case F_OWNER_PID:
+               pid_type = PT_TGID;
+               break;
+       case F_OWNER_PGRP:
+               pid_type = PT_PGID;
+               break;
+       }
+       tprints(", pid=");
+       printpid(tcp, owner.pid, pid_type);
+       tprints("}");
 }
 
 static int
@@ -75,6 +89,9 @@ print_fcntl(struct tcb *tcp)
                printflags(fdflags, tcp->u_arg[2], "FD_???");
                break;
        case F_SETOWN:
+               tprints(", ");
+               printpid_tgid_pgid(tcp, tcp->u_arg[2]);
+               break;
        case F_SETPIPE_SZ:
                tprintf(", %" PRI_kld, tcp->u_arg[2]);
                break;
@@ -117,6 +134,8 @@ print_fcntl(struct tcb *tcp)
                printsignal(tcp->u_arg[2]);
                break;
        case F_GETOWN:
+               return RVAL_DECODED |
+                      ((int) tcp->u_rval < 0 ? RVAL_PGID : RVAL_TGID);
        case F_GETPIPE_SZ:
                break;
        case F_GETFD:
diff --git a/file-date-gen b/file-date-gen
new file mode 100755 (executable)
index 0000000..12314af
--- /dev/null
@@ -0,0 +1,53 @@
+#!/bin/sh
+#
+# Copyright (c) 2017-2019 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+if [ "$1" = "-f" ]; then
+       shift
+       DATE_FORMAT="$1"
+       shift
+fi
+
+: ${FILE:=$1}
+: ${DATE_FILE:=$(dirname "$FILE")/.$(basename "${FILE}").date}
+: ${DEFAULT_DATE:=$2}
+: ${DATE_FORMAT:=%Y-%m-%d}
+LC_TIME=C; export LC_TIME
+
+date=
+
+[ -n "${FILE}" ] || {
+       echo >&2 "$0 $(dirname "$0")/file [$(dirname "$0")/file.date [DEFAULT_DATE]]"
+       exit 1
+}
+
+[ -f "${DATE_FILE}" ] && date="$(cat "${DATE_FILE}")"
+
+[ -n "${date}" ] ||
+       date="$(git log -s -n 1 --format=format:%cD "${FILE}")"
+
+[ -n "${date}" ] ||
+       date="${DEFAULT_DATE}"
+
+[ -n "${date}" ] ||
+       [ -z "${SOURCE_DATE_EPOCH-}" ] ||
+       date="$(date -u -d "@${SOURCE_DATE_EPOCH}")"
+
+[ -n "${date}" ] ||
+       date="$(date -u)"
+
+[ -n "${date}" ] || {
+       printf >&2 "%s: Undefined date.\n" "$0"
+       exit 1
+}
+
+datestr="$(date -u "+${DATE_FORMAT}" -d "${date}")" &&
+[ -n "${datestr}" ] || {
+       printf >&2 "%s: Invalid date: %s\n" "$0" "$date"
+       exit 1
+}
+
+exec printf '%s' "$datestr"
index 7ac135b0dad36518ff2af6f53bc56055ffd096e5..d82a1bc7a43dc3bf3f5f23de4de7e995f1e33c92 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2015 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -27,6 +27,7 @@ SYS_FUNC(name_to_handle_at)
        if (entering(tcp)) {
                /* dirfd */
                print_dirfd(tcp, tcp->u_arg[0]);
+               tprints(", ");
 
                /* pathname */
                printpath(tcp, tcp->u_arg[1]);
index 27ba4c8243df0af036892a171d8232221e25cfe2..d9a07ab0335eb6b88bd3ebd2a74b8eb257e091ad 100644 (file)
@@ -1,16 +1,18 @@
 /*
  * Copyright (c) 2016 Jeff Mahoney <jeffm@suse.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
  */
 
 #include "defs.h"
+#include "print_fields.h"
 #include <linux/ioctl.h>
 #include <linux/fs.h>
 
 #ifdef HAVE_LINUX_FIEMAP_H
+# include <linux/types.h>
 # include <linux/fiemap.h>
 # include "xlat/fiemap_flags.h"
 # include "xlat/fiemap_extent_flags.h"
@@ -72,14 +74,13 @@ print_file_dedupe_range_info(struct tcb *tcp, void *elem_buf,
        }
 
        if (entering(tcp)) {
-               tprints("{dest_fd=");
-               printfd(tcp, info->dest_fd);
-               tprintf(", dest_offset=%" PRIu64 "}",
-                       (uint64_t) info->dest_offset);
+               PRINT_FIELD_FD("{", *info, dest_fd, tcp);
+               PRINT_FIELD_U(", ", *info, dest_offset);
        } else {
-               tprintf("{bytes_deduped=%" PRIu64 ", status=%d}",
-                       (uint64_t) info->bytes_deduped, info->status);
+               PRINT_FIELD_U("{", *info, bytes_deduped);
+               PRINT_FIELD_D(", ", *info, status);
        }
+       tprints("}");
 
        return true;
 }
@@ -90,13 +91,11 @@ print_fiemap_extent(struct tcb *tcp, void *elem_buf, size_t elem_size, void *dat
 {
        const struct fiemap_extent *fe = elem_buf;
 
-       tprintf("{fe_logical=%" PRI__u64
-               ", fe_physical=%" PRI__u64
-               ", fe_length=%" PRI__u64 ", ",
-               fe->fe_logical, fe->fe_physical, fe->fe_length);
-
-       printflags64(fiemap_extent_flags, fe->fe_flags,
-                    "FIEMAP_EXTENT_???");
+       PRINT_FIELD_U("{", *fe, fe_logical);
+       PRINT_FIELD_U(", ", *fe, fe_physical);
+       PRINT_FIELD_U(", ", *fe, fe_length);
+       PRINT_FIELD_FLAGS(", ", *fe, fe_flags, fiemap_extent_flags,
+                         "FIEMAP_EXTENT_???");
        tprints("}");
 
        return true;
@@ -119,14 +118,11 @@ file_ioctl(struct tcb *const tcp, const unsigned int code,
                if (umove_or_printaddr(tcp, arg, &args))
                        break;
 
-               tprints("{src_fd=");
-               printfd(tcp, args.src_fd);
-               tprintf(", src_offset=%" PRIu64
-                       ", src_length=%" PRIu64
-                       ", dest_offset=%" PRIu64 "}",
-                       (uint64_t) args.src_offset,
-                       (uint64_t) args.src_length,
-                       (uint64_t) args.dest_offset);
+               PRINT_FIELD_FD("{", args, src_fd, tcp);
+               PRINT_FIELD_U(", ", args, src_offset);
+               PRINT_FIELD_U(", ", args, src_length);
+               PRINT_FIELD_U(", ", args, dest_offset);
+               tprints("}");
                break;
        }
 
@@ -149,12 +145,10 @@ file_ioctl(struct tcb *const tcp, const unsigned int code,
 
                tprints("{");
                if (entering(tcp)) {
-                       tprintf("src_offset=%" PRIu64
-                               ", src_length=%" PRIu64
-                               ", dest_count=%hu, ",
-                               (uint64_t) args.src_offset,
-                               (uint64_t) args.src_length,
-                               (uint16_t) args.dest_count);
+                       PRINT_FIELD_U("", args, src_offset);
+                       PRINT_FIELD_U(", ", args, src_length);
+                       PRINT_FIELD_U(", ", args, dest_count);
+                       tprints(", ");
                }
 
                tprints("info=");
@@ -190,21 +184,18 @@ file_ioctl(struct tcb *const tcp, const unsigned int code,
                        break;
 
                if (entering(tcp)) {
-                       tprintf("{fm_start=%" PRI__u64 ", "
-                               "fm_length=%" PRI__u64 ", "
-                               "fm_flags=",
-                               args.fm_start, args.fm_length);
-                       printflags64(fiemap_flags, args.fm_flags,
-                                    "FIEMAP_FLAG_???");
-                       tprintf(", fm_extent_count=%u}", args.fm_extent_count);
+                       PRINT_FIELD_U("{", args, fm_start);
+                       PRINT_FIELD_U(", ", args, fm_length);
+                       PRINT_FIELD_FLAGS(", ", args, fm_flags, fiemap_flags,
+                                         "FIEMAP_FLAG_???");
+                       PRINT_FIELD_U(", ", args, fm_extent_count);
+                       tprints("}");
                        return 0;
                }
 
-               tprints("{fm_flags=");
-               printflags64(fiemap_flags, args.fm_flags,
-                            "FIEMAP_FLAG_???");
-               tprintf(", fm_mapped_extents=%u",
-                       args.fm_mapped_extents);
+               PRINT_FIELD_FLAGS("{", args, fm_flags, fiemap_flags,
+                                 "FIEMAP_FLAG_???");
+               PRINT_FIELD_U(", ", args, fm_mapped_extents);
                if (abbrev(tcp)) {
                        tprints(", ...");
                } else {
index 4a05f1b277cb340f98e81ee75c199d09735d8b7a..37581fde1a46519061c9da00f73dc8d0645584ac 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
 #include "filter.h"
 #include "delay.h"
 #include "retval.h"
+#include "static_assert.h"
 
 struct number_set *read_set;
 struct number_set *write_set;
 struct number_set *signal_set;
+struct number_set *status_set;
+struct number_set *quiet_set;
+struct number_set *decode_fd_set;
+struct number_set *trace_set;
+
+bool quiet_set_updated = false;
+bool decode_fd_set_updated = false;
 
 static struct number_set *abbrev_set;
 static struct number_set *inject_set;
 static struct number_set *raw_set;
-static struct number_set *trace_set;
 static struct number_set *verbose_set;
 
 /* Only syscall numbers are personality-specific so far.  */
@@ -57,6 +64,49 @@ sigstr_to_uint(const char *s)
        return -1;
 }
 
+static int
+statusstr_to_uint(const char *str)
+{
+       static const struct xlat_data statuses[] = {
+               { STATUS_SUCCESSFUL,  "successful" },
+               { STATUS_FAILED,      "failed" },
+               { STATUS_UNFINISHED,  "unfinished" },
+               { STATUS_UNAVAILABLE, "unavailable" },
+               { STATUS_DETACHED,    "detached" },
+       };
+
+       return (int) find_arg_val(str, statuses, -1ULL, -1ULL);
+}
+
+static int
+quietstr_to_uint(const char *str)
+{
+       static const struct xlat_data quiet_strs[] = {
+               { QUIET_ATTACH,        "attach" },
+               { QUIET_EXIT,          "exit" },
+               { QUIET_EXIT,          "exits" },
+               { QUIET_PATH_RESOLVE,  "path-resolution" },
+               { QUIET_PERSONALITY,   "personality" },
+               { QUIET_THREAD_EXECVE, "superseded" },
+               { QUIET_THREAD_EXECVE, "thread-execve" },
+       };
+
+       return (int) find_arg_val(str, quiet_strs, -1ULL, -1ULL);
+}
+
+static int
+decode_fd_str_to_uint(const char *str)
+{
+       static const struct xlat_data decode_fd_strs[] = {
+               { DECODE_FD_PATH,      "path" },
+               { DECODE_FD_SOCKET,    "socket" },
+               { DECODE_FD_DEV,       "dev" },
+               { DECODE_FD_PIDFD,     "pidfd" },
+       };
+
+       return (int) find_arg_val(str, decode_fd_strs, -1ULL, -1ULL);
+}
+
 static int
 find_errno_by_name(const char *name)
 {
@@ -75,14 +125,15 @@ parse_delay_token(const char *input, struct inject_opts *fopts, bool isenter)
 
        if (fopts->data.flags & flag) /* duplicate */
                return false;
-       long long intval = string_to_ulonglong(input);
-       if (intval < 0) /* couldn't parse */
+       struct timespec tsval;
+
+       if (parse_ts(input, &tsval) < 0) /* couldn't parse */
                return false;
 
        if (fopts->data.delay_idx == (uint16_t) -1)
                fopts->data.delay_idx = alloc_delay_data();
        /* populate .ts_enter or .ts_exit */
-       fill_delay_data(fopts->data.delay_idx, intval, isenter);
+       fill_delay_data(fopts->data.delay_idx, &tsval, isenter);
        fopts->data.flags |= flag;
 
        return true;
@@ -98,33 +149,67 @@ parse_inject_token(const char *const token, struct inject_opts *const fopts,
 
        if ((val = STR_STRIP_PREFIX(token, "when=")) != token) {
                /*
-                *      == 1+1
-                * F    == F+0
-                * F+   == F+1
-                * F+S
+                *        == 1..INF+1
+                * F      == F..INF+0
+                * F+     == F..INF+1
+                * F+S    == F..INF+S
+                * F..L   == F..L+1
+                * F..L+S
                 */
                char *end;
-               intval = string_to_uint_ex(val, &end, 0xffff, "+");
+               intval = string_to_uint_ex(val, &end, 0xffff, "+.");
                if (intval < 1)
                        return false;
 
                fopts->first = intval;
 
-               if (*end) {
+               if (end[0] == '.') {
+                       if (end[1] != '.')
+                               return false;
+                       /*
+                        * F..L
+                        * F..L+S
+                        */
+                       val = end + 2;
+                       intval = string_to_uint_ex(val, &end, 0xffff, "+");
+                       if (intval < fopts->first || intval == INJECT_LAST_INF)
+                               return false;
+                       fopts->last = intval;
+               } else {
+                       /*
+                        * F   == F..INF+0
+                        * F+  == F..INF+1
+                        * F+S == F..INF+S
+                        */
+                       fopts->last = INJECT_LAST_INF;
+               }
+
+               if (end[0] != '\0') {
                        val = end + 1;
-                       if (*val) {
-                               /* F+S */
+                       if (val[0] != '\0') {
+                               /*
+                                * F+S    == F..INF+S
+                                * F..L+S
+                                */
                                intval = string_to_uint_upto(val, 0xffff);
                                if (intval < 1)
                                        return false;
                                fopts->step = intval;
                        } else {
-                               /* F+ == F+1 */
+                               /*
+                                * F+    == F..INF+1
+                                * F..L+ == F..L+1
+                                */
                                fopts->step = 1;
                        }
                } else {
-                       /* F == F+0 */
-                       fopts->step = 0;
+                       if (fopts->last == INJECT_LAST_INF) {
+                               /* F == F..INF+0 */
+                               fopts->step = 0;
+                       } else {
+                               /* F..L == F..L+1 */
+                               fopts->step = 1;
+                       }
                }
        } else if ((val = STR_STRIP_PREFIX(token, "syscall=")) != token) {
                if (fopts->data.flags & INJECT_F_SYSCALL)
@@ -251,7 +336,7 @@ parse_inject_expression(char *const str,
        return name;
 }
 
-static void
+void
 qualify_read(const char *const str)
 {
        if (!read_set)
@@ -259,7 +344,7 @@ qualify_read(const char *const str)
        qualify_tokens(str, read_set, string_to_uint, "descriptor");
 }
 
-static void
+void
 qualify_write(const char *const str)
 {
        if (!write_set)
@@ -267,7 +352,7 @@ qualify_write(const char *const str)
        qualify_tokens(str, write_set, string_to_uint, "descriptor");
 }
 
-static void
+void
 qualify_signals(const char *const str)
 {
        if (!signal_set)
@@ -275,7 +360,36 @@ qualify_signals(const char *const str)
        qualify_tokens(str, signal_set, sigstr_to_uint, "signal");
 }
 
-static void
+void
+qualify_status(const char *const str)
+{
+       if (!status_set)
+               status_set = alloc_number_set_array(1);
+       qualify_tokens(str, status_set, statusstr_to_uint, "status");
+}
+
+void
+qualify_quiet(const char *const str)
+{
+       if (!quiet_set)
+               quiet_set = alloc_number_set_array(1);
+       else
+               quiet_set_updated = true;
+       qualify_tokens(str, quiet_set, quietstr_to_uint, "quiet");
+}
+
+void
+qualify_decode_fd(const char *const str)
+{
+       if (!decode_fd_set)
+               decode_fd_set = alloc_number_set_array(1);
+       else
+               decode_fd_set_updated = true;
+       qualify_tokens(str, decode_fd_set, decode_fd_str_to_uint,
+                      "decode-fds");
+}
+
+void
 qualify_trace(const char *const str)
 {
        if (!trace_set)
@@ -283,7 +397,7 @@ qualify_trace(const char *const str)
        qualify_syscall_tokens(str, trace_set);
 }
 
-static void
+void
 qualify_abbrev(const char *const str)
 {
        if (!abbrev_set)
@@ -291,7 +405,7 @@ qualify_abbrev(const char *const str)
        qualify_syscall_tokens(str, abbrev_set);
 }
 
-static void
+void
 qualify_verbose(const char *const str)
 {
        if (!verbose_set)
@@ -299,7 +413,7 @@ qualify_verbose(const char *const str)
        qualify_syscall_tokens(str, verbose_set);
 }
 
-static void
+void
 qualify_raw(const char *const str)
 {
        if (!raw_set)
@@ -314,6 +428,7 @@ qualify_inject_common(const char *const str,
 {
        struct inject_opts opts = {
                .first = 1,
+               .last = INJECT_LAST_INF,
                .step = 1,
                .data = {
                        .delay_idx = -1
@@ -376,19 +491,19 @@ qualify_inject_common(const char *const str,
        free_number_set_array(tmp_set, SUPPORTED_PERSONALITIES);
 }
 
-static void
+void
 qualify_fault(const char *const str)
 {
        qualify_inject_common(str, true, "fault argument");
 }
 
-static void
+void
 qualify_inject(const char *const str)
 {
        qualify_inject_common(str, false, "inject argument");
 }
 
-static void
+void
 qualify_kvm(const char *const str)
 {
        if (strcmp(str, "vcpu") == 0) {
@@ -421,7 +536,12 @@ static const struct qual_options {
        { "x",          qualify_raw     },
        { "signal",     qualify_signals },
        { "signals",    qualify_signals },
+       { "status",     qualify_status  },
        { "s",          qualify_signals },
+       { "quiet",      qualify_quiet   },
+       { "silent",     qualify_quiet   },
+       { "silence",    qualify_quiet   },
+       { "q",          qualify_quiet   },
        { "read",       qualify_read    },
        { "reads",      qualify_read    },
        { "r",          qualify_read    },
@@ -431,6 +551,8 @@ static const struct qual_options {
        { "fault",      qualify_fault   },
        { "inject",     qualify_inject  },
        { "kvm",        qualify_kvm     },
+       { "decode-fd",  qualify_decode_fd },
+       { "decode-fds", qualify_decode_fd },
 };
 
 void
diff --git a/filter_seccomp.c b/filter_seccomp.c
new file mode 100644 (file)
index 0000000..adb9f23
--- /dev/null
@@ -0,0 +1,762 @@
+/*
+ * Copyright (c) 2018 Chen Jingpiao <chenjingpiao@gmail.com>
+ * Copyright (c) 2019 Paul Chaignon <paul.chaignon@gmail.com>
+ * Copyright (c) 2018-2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#include "defs.h"
+
+#include "ptrace.h"
+#include <signal.h>
+#include <sys/prctl.h>
+#include <sys/wait.h>
+#include <linux/filter.h>
+
+#include "filter_seccomp.h"
+#include "number_set.h"
+#include "syscall.h"
+#include "scno.h"
+
+bool seccomp_filtering;
+bool seccomp_before_sysentry;
+
+#ifdef HAVE_LINUX_SECCOMP_H
+
+# include <linux/seccomp.h>
+
+#else
+
+# define XLAT_MACROS_ONLY
+#  include "xlat/prctl_options.h"
+#  include "xlat/seccomp_mode.h"
+#  include "xlat/seccomp_ret_action.h"
+# undef XLAT_MACROS_ONLY
+
+struct seccomp_data {
+       int nr;
+       uint32_t arch;
+       uint64_t instruction_pointer;
+       uint64_t args[6];
+};
+
+#endif /* !HAVE_LINUX_SECCOMP_H */
+
+/* PERSONALITY*_AUDIT_ARCH definitions depend on AUDIT_ARCH_* constants.  */
+#ifdef PERSONALITY0_AUDIT_ARCH
+# include <linux/audit.h>
+# define XLAT_MACROS_ONLY
+#  include "xlat/elf_em.h"
+#  include "xlat/audit_arch.h"
+# undef XLAT_MACROS_ONLY
+#endif
+
+#ifndef BPF_MAXINSNS
+# define BPF_MAXINSNS 4096
+#endif
+
+#define JMP_PLACEHOLDER_NEXT  ((unsigned char) -1)
+#define JMP_PLACEHOLDER_TRACE ((unsigned char) -2)
+#define JMP_PLACEHOLDER_ALLOW ((unsigned char) -3)
+
+#define SET_BPF(filter, code, jt, jf, k) \
+       (*(filter) = (struct sock_filter) { code, jt, jf, k })
+
+#define SET_BPF_STMT(filter, code, k) \
+       SET_BPF(filter, code, 0, 0, k)
+
+#define SET_BPF_JUMP(filter, code, k, jt, jf) \
+       SET_BPF(filter, BPF_JMP | code, jt, jf, k)
+
+struct audit_arch_t {
+       unsigned int arch;
+       unsigned int flag;
+};
+
+static const struct audit_arch_t audit_arch_vec[SUPPORTED_PERSONALITIES] = {
+#if SUPPORTED_PERSONALITIES > 1
+       PERSONALITY0_AUDIT_ARCH,
+       PERSONALITY1_AUDIT_ARCH,
+# if SUPPORTED_PERSONALITIES > 2
+       PERSONALITY2_AUDIT_ARCH,
+# endif
+#endif
+};
+
+typedef unsigned short (*filter_generator_t)(struct sock_filter *,
+                                            bool *overflow);
+static unsigned short linear_filter_generator(struct sock_filter *,
+                                             bool *overflow);
+static unsigned short binary_match_filter_generator(struct sock_filter *,
+                                                   bool *overflow);
+static filter_generator_t filter_generators[] = {
+       linear_filter_generator,
+       binary_match_filter_generator,
+};
+
+/*
+ * Keep some margin in seccomp_filter as programs larger than allowed may
+ * be constructed before we discard them.
+ */
+static struct sock_filter
+filters[ARRAY_SIZE(filter_generators)][2 * BPF_MAXINSNS];
+static struct sock_fprog bpf_prog = {
+       .len = USHRT_MAX,
+       .filter = NULL,
+};
+
+#ifdef HAVE_FORK
+
+static void ATTRIBUTE_NORETURN
+check_seccomp_order_do_child(void)
+{
+       static const struct sock_filter filter[] = {
+               /* return (nr == __NR_gettid) ? RET_TRACE : RET_ALLOW; */
+               BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
+                        offsetof(struct seccomp_data, nr)),
+               BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, __NR_gettid, 0, 1),
+               BPF_STMT(BPF_RET | BPF_K, SECCOMP_RET_TRACE),
+               BPF_STMT(BPF_RET | BPF_K, SECCOMP_RET_ALLOW)
+       };
+       static const struct sock_fprog prog = {
+               .len = ARRAY_SIZE(filter),
+               .filter = (struct sock_filter *) filter
+       };
+
+       /* Get everything ready before PTRACE_TRACEME.  */
+       if (prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0) < 0)
+               perror_func_msg_and_die("prctl(PR_SET_NO_NEW_PRIVS, 1");
+       if (prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &prog) < 0)
+               perror_func_msg_and_die("prctl(PR_SET_SECCOMP)");
+       int pid = getpid();
+
+       if (ptrace(PTRACE_TRACEME, 0L, 0L, 0L) < 0) {
+               /* Exit with a nonzero exit status.  */
+               perror_func_msg_and_die("PTRACE_TRACEME");
+       }
+
+       GCOV_DUMP;
+
+       kill(pid, SIGSTOP);
+       syscall(__NR_gettid);
+       _exit(0);
+}
+
+static int
+check_seccomp_order_tracer(int pid)
+{
+       unsigned int step;
+
+       for (step = 0; ; ++step) {
+               int status;
+
+               for (;;) {
+                       long rc = waitpid(pid, &status, 0);
+                       if (rc < 0 && errno == EINTR)
+                               continue;
+                       if (rc == pid)
+                               break;
+                       /* Cannot happen.  */
+                       perror_func_msg("#%d: unexpected wait result %ld",
+                                       step, rc);
+                       return pid;
+               }
+
+               if (WIFEXITED(status)) {
+                       /* The tracee is no more.  */
+                       pid = 0;
+
+                       int exitstatus = WEXITSTATUS(status);
+                       if (step == 5 && exitstatus == 0) {
+                               seccomp_filtering = true;
+                       } else {
+                               error_func_msg("#%d: unexpected exit status %u",
+                                              step, exitstatus);
+                       }
+                       break;
+               }
+
+               if (WIFSIGNALED(status)) {
+                       /* The tracee is no more.  */
+                       pid = 0;
+
+                       error_func_msg("#%d: unexpected signal %u",
+                                      step, WTERMSIG(status));
+                       break;
+               }
+
+               if (!WIFSTOPPED(status)) {
+                       /* Cannot happen.  */
+                       error_func_msg("#%d: unexpected wait status %#x",
+                                      step, status);
+                       break;
+               }
+
+               unsigned int event = (unsigned int) status >> 16;
+
+               switch (WSTOPSIG(status)) {
+               case SIGSTOP:
+                       if (step != 0) {
+                               error_func_msg("#%d: unexpected signal stop",
+                                              step);
+                               return pid;
+                       }
+                       if (ptrace(PTRACE_SETOPTIONS, pid, 0L,
+                                  PTRACE_O_TRACESYSGOOD|
+                                  PTRACE_O_TRACESECCOMP) < 0) {
+                               perror_func_msg("PTRACE_SETOPTIONS");
+                               return pid;
+                       }
+                       break;
+
+               case SIGTRAP:
+                       if (event != PTRACE_EVENT_SECCOMP) {
+                               error_func_msg("#%d: unexpected trap %#x",
+                                              step, event);
+                               return pid;
+                       }
+
+                       switch (step) {
+                       case 1: /* Seccomp stop before entering gettid.  */
+                               seccomp_before_sysentry = true;
+                               break;
+                       case 2: /* Seccomp stop after entering gettid.  */
+                               if (!seccomp_before_sysentry)
+                                       break;
+                               ATTRIBUTE_FALLTHROUGH;
+                       default:
+                               error_func_msg("#%d: unexpected seccomp stop",
+                                              step);
+                               return pid;
+                       }
+                       break;
+
+               case SIGTRAP | 0x80:
+                       switch (step) {
+                       case 3: /* Exiting gettid.  */
+                       case 4: /* Entering exit_group.  */
+                               break;
+                       case 1: /* Entering gettid before seccomp stop.  */
+                               seccomp_before_sysentry = false;
+                               break;
+                       case 2: /* Entering gettid after seccomp stop.  */
+                               if (seccomp_before_sysentry)
+                                       break;
+                               ATTRIBUTE_FALLTHROUGH;
+                       default:
+                               error_func_msg("#%d: unexpected syscall stop",
+                                              step);
+                               return pid;
+                       }
+                       break;
+
+               default:
+                       error_func_msg("#%d: unexpected stop signal %#x",
+                                      step, WSTOPSIG(status));
+                       return pid;
+               }
+
+               if (ptrace(PTRACE_SYSCALL, pid, 0L, 0L) < 0) {
+                       /* Cannot happen.  */
+                       perror_func_msg("#%d: PTRACE_SYSCALL", step);
+                       break;
+               }
+       }
+
+       return pid;
+}
+#endif /* HAVE_FORK */
+
+static void
+check_seccomp_order(void)
+{
+       seccomp_filtering = false;
+
+       /* NOMMU provides no forks necessary for the test.  */
+#ifdef HAVE_FORK
+       int pid = fork();
+       if (pid < 0) {
+               perror_func_msg("fork");
+               return;
+       }
+
+       if (pid == 0)
+               check_seccomp_order_do_child();
+
+       pid = check_seccomp_order_tracer(pid);
+       if (pid) {
+               kill(pid, SIGKILL);
+               for (;;) {
+                       long rc = waitpid(pid, NULL, 0);
+                       if (rc < 0 && errno == EINTR)
+                               continue;
+                       break;
+               }
+       }
+#endif /* HAVE_FORK */
+}
+
+static bool
+traced_by_seccomp(unsigned int scno, unsigned int p)
+{
+       unsigned int always_trace_flags =
+               TRACE_INDIRECT_SUBCALL | TRACE_SECCOMP_DEFAULT |
+               (stack_trace_enabled ? MEMORY_MAPPING_CHANGE : 0);
+       return sysent_vec[p][scno].sys_flags & always_trace_flags ||
+               is_number_in_set_array(scno, trace_set, p);
+}
+
+static void
+replace_jmp_placeholders(unsigned char *jmp_offset, unsigned char jmp_next,
+                        unsigned char jmp_trace, unsigned char jmp_allow)
+{
+       switch (*jmp_offset) {
+       case JMP_PLACEHOLDER_NEXT:
+               *jmp_offset = jmp_next;
+               break;
+       case JMP_PLACEHOLDER_TRACE:
+               *jmp_offset = jmp_trace;
+               break;
+       case JMP_PLACEHOLDER_ALLOW:
+               *jmp_offset = jmp_allow;
+               break;
+       default:
+               break;
+       }
+}
+
+static unsigned short
+bpf_syscalls_cmp(struct sock_filter *filter,
+                unsigned int lower, unsigned int upper)
+{
+       if (lower + 1 == upper) {
+               /* if (nr == lower) return RET_TRACE; */
+               SET_BPF_JUMP(filter, BPF_JEQ | BPF_K, lower,
+                            JMP_PLACEHOLDER_TRACE, 0);
+               return 1;
+       } else {
+               /* if (nr >= lower && nr < upper) return RET_TRACE; */
+               SET_BPF_JUMP(filter, BPF_JGE | BPF_K, lower, 0, 1);
+               SET_BPF_JUMP(filter + 1, BPF_JGE | BPF_K, upper, 0,
+                            JMP_PLACEHOLDER_TRACE);
+               return 2;
+       }
+}
+
+static unsigned short
+linear_filter_generator(struct sock_filter *filter, bool *overflow)
+{
+       /*
+        * Generated program looks like:
+        * if (arch == AUDIT_ARCH_A && nr >= flag) {
+        *      if (nr == 59)
+        *              return SECCOMP_RET_TRACE;
+        *      if (nr >= 321 && nr <= 323)
+        *              return SECCOMP_RET_TRACE;
+        *      ...
+        *      return SECCOMP_RET_ALLOW;
+        * }
+        * if (arch == AUDIT_ARCH_A) {
+        *      ...
+        * }
+        * if (arch == AUDIT_ARCH_B) {
+        *      ...
+        * }
+        * return SECCOMP_RET_TRACE;
+        */
+       unsigned short pos = 0;
+
+#if SUPPORTED_PERSONALITIES > 1
+       SET_BPF_STMT(&filter[pos++], BPF_LD | BPF_W | BPF_ABS,
+                    offsetof(struct seccomp_data, arch));
+#endif
+
+       /*
+        * Personalities are iterated in reverse-order in the BPF program so
+        * that the x86 case is naturally handled.  On x86, the first and third
+        * personalities have the same arch identifier.  The third can be
+        * distinguished based on its associated syscall flag, so we check it
+        * first.  The only drawback here is that the first personality is more
+        * common, which may make the BPF program slower to match syscalls on
+        * average.
+        */
+       for (int p = SUPPORTED_PERSONALITIES - 1; p >= 0; --p) {
+               unsigned int lower = UINT_MAX;
+               unsigned short start = pos, end;
+
+#if SUPPORTED_PERSONALITIES > 1
+               /* if (arch != audit_arch_vec[p].arch) goto next; */
+               SET_BPF_JUMP(&filter[pos++], BPF_JEQ | BPF_K,
+                            audit_arch_vec[p].arch, 0, JMP_PLACEHOLDER_NEXT);
+#endif
+               SET_BPF_STMT(&filter[pos++], BPF_LD | BPF_W | BPF_ABS,
+                            offsetof(struct seccomp_data, nr));
+
+#if SUPPORTED_PERSONALITIES > 1
+               if (audit_arch_vec[p].flag) {
+                       /* if (nr < audit_arch_vec[p].flag) goto next; */
+                       SET_BPF_JUMP(&filter[pos++], BPF_JGE | BPF_K,
+                                    audit_arch_vec[p].flag, 2, 0);
+                       SET_BPF_STMT(&filter[pos++], BPF_LD | BPF_W | BPF_ABS,
+                                    offsetof(struct seccomp_data, arch));
+                       SET_BPF_JUMP(&filter[pos++], BPF_JA,
+                                    JMP_PLACEHOLDER_NEXT, 0, 0);
+               }
+#endif
+
+               for (unsigned int i = 0; i < nsyscall_vec[p]; ++i) {
+                       if (traced_by_seccomp(i, p)) {
+                               if (lower == UINT_MAX)
+                                       lower = i;
+                               continue;
+                       }
+                       if (lower == UINT_MAX)
+                               continue;
+                       pos += bpf_syscalls_cmp(filter + pos,
+                                               lower | audit_arch_vec[p].flag,
+                                               i | audit_arch_vec[p].flag);
+                       lower = UINT_MAX;
+               }
+               if (lower != UINT_MAX)
+                       pos += bpf_syscalls_cmp(filter + pos,
+                                               lower | audit_arch_vec[p].flag,
+                                               nsyscall_vec[p]
+                                               | audit_arch_vec[p].flag);
+               end = pos;
+
+               /* if (nr >= max_nr) return RET_TRACE; */
+               SET_BPF_JUMP(&filter[pos++], BPF_JGE | BPF_K,
+                            nsyscall_vec[p] | audit_arch_vec[p].flag, 1, 0);
+
+               SET_BPF_STMT(&filter[pos++], BPF_RET | BPF_K,
+                            SECCOMP_RET_ALLOW);
+               SET_BPF_STMT(&filter[pos++], BPF_RET | BPF_K,
+                            SECCOMP_RET_TRACE);
+
+               /*
+                * Within generated BPF programs, the origin and destination of
+                * jumps are always in the same personality section.  The
+                * largest jump is therefore the jump from the first
+                * instruction of the section to the last, to skip the
+                * personality and try to compare .arch to the next
+                * personality.
+                * If we have a personality section with more than 255
+                * instructions, the jump offset will overflow.  Such program
+                * is unlikely to happen, so we simply disable seccomp-filter
+                * in such a case.
+                */
+               if (pos - start > UCHAR_MAX) {
+                       *overflow = true;
+                       return pos;
+               }
+
+               for (unsigned int i = start; i < end; ++i) {
+                       if (BPF_CLASS(filter[i].code) != BPF_JMP)
+                               continue;
+                       unsigned char jmp_next = pos - i - 1;
+                       unsigned char jmp_trace = pos - i - 2;
+                       unsigned char jmp_allow = pos - i - 3;
+                       replace_jmp_placeholders(&filter[i].jt, jmp_next,
+                                                jmp_trace, jmp_allow);
+                       replace_jmp_placeholders(&filter[i].jf, jmp_next,
+                                                jmp_trace, jmp_allow);
+                       if (BPF_OP(filter[i].code) == BPF_JA)
+                               filter[i].k = (unsigned int) jmp_next;
+               }
+       }
+
+#if SUPPORTED_PERSONALITIES > 1
+       /* Jumps conditioned on .arch default to this RET_TRACE. */
+       SET_BPF_STMT(&filter[pos++], BPF_RET | BPF_K, SECCOMP_RET_TRACE);
+#endif
+
+       return pos;
+}
+
+static unsigned short
+bpf_syscalls_match(struct sock_filter *filter, unsigned int bitarray,
+                  unsigned int bitarray_idx)
+{
+       if (!bitarray) {
+               /* return RET_ALLOW; */
+               SET_BPF_JUMP(filter, BPF_JMP | BPF_JEQ | BPF_K, bitarray_idx,
+                            JMP_PLACEHOLDER_ALLOW, 0);
+               return 1;
+       }
+       if (bitarray == UINT_MAX) {
+               /* return RET_TRACE; */
+               SET_BPF_JUMP(filter, BPF_JMP | BPF_JEQ | BPF_K, bitarray_idx,
+                            JMP_PLACEHOLDER_TRACE, 0);
+               return 1;
+       }
+       /*
+        * if (A == nr / 32)
+        *   return (X & bitarray) ? RET_TRACE : RET_ALLOW;
+        */
+       SET_BPF_JUMP(filter, BPF_JMP | BPF_JEQ | BPF_K, bitarray_idx,
+                    0, 2);
+       SET_BPF_STMT(filter + 1, BPF_MISC | BPF_TXA, 0);
+       SET_BPF_JUMP(filter + 2, BPF_JMP | BPF_JSET | BPF_K, bitarray,
+                    JMP_PLACEHOLDER_TRACE, JMP_PLACEHOLDER_ALLOW);
+       return 3;
+}
+
+static unsigned short
+binary_match_filter_generator(struct sock_filter *filter, bool *overflow)
+{
+       unsigned short pos = 0;
+
+#if SUPPORTED_PERSONALITIES > 1
+       SET_BPF_STMT(&filter[pos++], BPF_LD | BPF_W | BPF_ABS,
+                    offsetof(struct seccomp_data, arch));
+#endif
+
+       /* Personalities are iterated in reverse-order in the BPF program so that
+        * the x86 case is naturally handled.  In x86, the first and third
+        * personalities have the same arch identifier.  The third can be
+        * distinguished based on its associated bit mask, so we check it first.
+        * The only drawback here is that the first personality is more common,
+        * which may make the BPF program slower to match syscalls on average. */
+       for (int p = SUPPORTED_PERSONALITIES - 1;
+                p >= 0 && pos <= BPF_MAXINSNS;
+                --p) {
+               unsigned short start = pos, end;
+               unsigned int bitarray = 0;
+               unsigned int i;
+
+#if SUPPORTED_PERSONALITIES > 1
+               SET_BPF_JUMP(&filter[pos++], BPF_JMP | BPF_JEQ | BPF_K,
+                            audit_arch_vec[p].arch, 0, JMP_PLACEHOLDER_NEXT);
+#endif
+               SET_BPF_STMT(&filter[pos++], BPF_LD | BPF_W | BPF_ABS,
+                            offsetof(struct seccomp_data, nr));
+
+#if SUPPORTED_PERSONALITIES > 1
+               if (audit_arch_vec[p].flag) {
+                       SET_BPF_JUMP(&filter[pos++], BPF_JMP | BPF_JGE | BPF_K,
+                                    audit_arch_vec[p].flag, 2, 0);
+                       SET_BPF_STMT(&filter[pos++], BPF_LD | BPF_W | BPF_ABS,
+                                    offsetof(struct seccomp_data, arch));
+                       SET_BPF_JUMP(&filter[pos++], BPF_JMP | BPF_JA,
+                                    JMP_PLACEHOLDER_NEXT, 0, 0);
+
+                       /* nr = nr & ~mask */
+                       SET_BPF_STMT(&filter[pos++], BPF_ALU | BPF_AND | BPF_K,
+                                    ~audit_arch_vec[p].flag);
+               }
+#endif
+
+               /* X = 1 << nr % 32 = 1 << nr & 0x1F; */
+               SET_BPF_STMT(&filter[pos++], BPF_ALU | BPF_AND | BPF_K, 0x1F);
+               SET_BPF_STMT(&filter[pos++], BPF_MISC | BPF_TAX, 0);
+               SET_BPF_STMT(&filter[pos++], BPF_LD | BPF_IMM, 1);
+               SET_BPF_STMT(&filter[pos++], BPF_ALU | BPF_LSH | BPF_X, 0);
+               SET_BPF_STMT(&filter[pos++], BPF_MISC | BPF_TAX, 0);
+
+               /* A = nr / 32 = n >> 5; */
+               SET_BPF_STMT(&filter[pos++], BPF_LD | BPF_W | BPF_ABS,
+                            offsetof(struct seccomp_data, nr));
+               if (audit_arch_vec[p].flag) {
+                       /* nr = nr & ~mask */
+                       SET_BPF_STMT(&filter[pos++], BPF_ALU | BPF_AND | BPF_K,
+                                    ~audit_arch_vec[p].flag);
+               }
+               SET_BPF_STMT(&filter[pos++], BPF_ALU | BPF_RSH | BPF_K, 5);
+
+               for (i = 0; i < nsyscall_vec[p] && pos <= BPF_MAXINSNS; ++i) {
+                       if (traced_by_seccomp(i, p))
+                               bitarray |= (1 << i % 32);
+                       if (i % 32 == 31) {
+                               pos += bpf_syscalls_match(filter + pos,
+                                                         bitarray, i / 32);
+                               bitarray = 0;
+                       }
+               }
+               if (i % 32 != 0)
+                       pos += bpf_syscalls_match(filter + pos, bitarray,
+                                                 i / 32);
+
+               end = pos;
+
+               SET_BPF_STMT(&filter[pos++], BPF_RET | BPF_K,
+                            SECCOMP_RET_ALLOW);
+               SET_BPF_STMT(&filter[pos++], BPF_RET | BPF_K,
+                            SECCOMP_RET_TRACE);
+
+               if (pos - start > UCHAR_MAX) {
+                       *overflow = true;
+                       return pos;
+               }
+
+               for (unsigned int i = start; i < end; ++i) {
+                       if (BPF_CLASS(filter[i].code) != BPF_JMP)
+                               continue;
+                       unsigned char jmp_next = pos - i - 1;
+                       unsigned char jmp_trace = pos - i - 2;
+                       unsigned char jmp_allow = pos - i - 3;
+                       replace_jmp_placeholders(&filter[i].jt, jmp_next,
+                                                jmp_trace, jmp_allow);
+                       replace_jmp_placeholders(&filter[i].jf, jmp_next,
+                                                jmp_trace, jmp_allow);
+                       if (BPF_OP(filter[i].code) == BPF_JA)
+                               filter[i].k = (unsigned int)jmp_next;
+               }
+       }
+
+#if SUPPORTED_PERSONALITIES > 1
+       SET_BPF_STMT(&filter[pos++], BPF_RET | BPF_K, SECCOMP_RET_TRACE);
+#endif
+
+       return pos;
+}
+
+static void
+check_seccomp_filter_properties(void)
+{
+       int rc = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, NULL, 0, 0);
+       seccomp_filtering = rc < 0 && errno != EINVAL;
+       if (!seccomp_filtering) {
+               debug_func_perror_msg("prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER)");
+               return;
+       }
+
+       for (unsigned int i = 0; i < ARRAY_SIZE(filter_generators); ++i) {
+               bool overflow = false;
+               unsigned short len = filter_generators[i](filters[i],
+                                                         &overflow);
+               if (len < bpf_prog.len && !overflow) {
+                       bpf_prog.len = len;
+                       bpf_prog.filter = filters[i];
+               }
+       }
+       if (bpf_prog.len == USHRT_MAX) {
+               debug_msg("seccomp filter disabled due to jump offset "
+                         "overflow");
+               seccomp_filtering = false;
+       } else if (bpf_prog.len > BPF_MAXINSNS) {
+               debug_msg("seccomp filter disabled due to BPF program "
+                         "being oversized (%u > %d)", bpf_prog.len,
+                         BPF_MAXINSNS);
+               seccomp_filtering = false;
+       }
+
+       if (seccomp_filtering)
+               check_seccomp_order();
+}
+
+static void
+dump_seccomp_bpf(void)
+{
+       const struct sock_filter *filter = bpf_prog.filter;
+       for (unsigned int i = 0; i < bpf_prog.len; ++i) {
+               switch (filter[i].code) {
+               case BPF_LD | BPF_W | BPF_ABS:
+                       switch (filter[i].k) {
+                       case offsetof(struct seccomp_data, arch):
+                               error_msg("STMT(BPF_LDWABS, data->arch)");
+                               break;
+                       case offsetof(struct seccomp_data, nr):
+                               error_msg("STMT(BPF_LDWABS, data->nr)");
+                               break;
+                       default:
+                               error_msg("STMT(BPF_LDWABS, 0x%x)",
+                                         filter[i].k);
+                       }
+                       break;
+               case BPF_LD + BPF_W + BPF_IMM:
+                       error_msg("STMT(BPF_LDWIMM, 0x%x)", filter[i].k);
+                       break;
+               case BPF_RET | BPF_K:
+                       switch (filter[i].k) {
+                       case SECCOMP_RET_TRACE:
+                               error_msg("STMT(BPF_RET, SECCOMP_RET_TRACE)");
+                               break;
+                       case SECCOMP_RET_ALLOW:
+                               error_msg("STMT(BPF_RET, SECCOMP_RET_ALLOW)");
+                               break;
+                       default:
+                               error_msg("STMT(BPF_RET, 0x%x)", filter[i].k);
+                       }
+                       break;
+               case BPF_JMP | BPF_JEQ | BPF_K:
+                       error_msg("JUMP(BPF_JEQ, %u, %u, %u)",
+                                 filter[i].jt, filter[i].jf,
+                                 filter[i].k);
+                       break;
+               case BPF_JMP | BPF_JGE | BPF_K:
+                       error_msg("JUMP(BPF_JGE, %u, %u, %u)",
+                                 filter[i].jt, filter[i].jf,
+                                 filter[i].k);
+                       break;
+               case BPF_JMP + BPF_JSET + BPF_K:
+                       error_msg("JUMP(BPF_JSET, %u, %u, 0x%x)",
+                                 filter[i].jt, filter[i].jf,
+                                 filter[i].k);
+                       break;
+               case BPF_JMP | BPF_JA:
+                       error_msg("JUMP(BPF_JA, %u)", filter[i].k);
+                       break;
+               case BPF_ALU + BPF_RSH + BPF_K:
+                       error_msg("STMT(BPF_RSH, %u)", filter[i].k);
+                       break;
+               case BPF_ALU + BPF_LSH + BPF_X:
+                       error_msg("STMT(BPF_LSH, X)");
+                       break;
+               case BPF_ALU + BPF_AND + BPF_K:
+                       error_msg("STMT(BPF_AND, 0x%x)", filter[i].k);
+                       break;
+               case BPF_MISC + BPF_TAX:
+                       error_msg("STMT(BPF_TAX)");
+                       break;
+               case BPF_MISC + BPF_TXA:
+                       error_msg("STMT(BPF_TXA)");
+                       break;
+               default:
+                       error_msg("STMT(0x%x, %u, %u, 0x%x)", filter[i].code,
+                                 filter[i].jt, filter[i].jf, filter[i].k);
+               }
+       }
+}
+
+void
+init_seccomp_filter(void)
+{
+       if (prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0) < 0)
+               perror_func_msg_and_die("prctl(PR_SET_NO_NEW_PRIVS)");
+
+       if (debug_flag)
+               dump_seccomp_bpf();
+
+       if (prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &bpf_prog) < 0)
+               perror_func_msg_and_die("prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER)");
+}
+
+int
+seccomp_filter_restart_operator(const struct tcb *tcp)
+{
+       if (exiting(tcp) && tcp->scno < nsyscall_vec[current_personality]
+           && traced_by_seccomp(tcp->scno, current_personality))
+               return PTRACE_SYSCALL;
+       return PTRACE_CONT;
+}
+
+void
+check_seccomp_filter(void)
+{
+       /* Let's avoid enabling seccomp if all syscalls are traced. */
+       seccomp_filtering = !is_complete_set_array(trace_set, nsyscall_vec,
+                                                  SUPPORTED_PERSONALITIES);
+       if (!seccomp_filtering) {
+               error_msg("Seccomp filter is requested "
+                         "but there are no syscalls to filter.  "
+                         "See -e trace to filter syscalls.");
+               return;
+       }
+
+       check_seccomp_filter_properties();
+
+       if (!seccomp_filtering)
+               error_msg("seccomp filter is requested but unavailable");
+}
diff --git a/filter_seccomp.h b/filter_seccomp.h
new file mode 100644 (file)
index 0000000..76539e0
--- /dev/null
@@ -0,0 +1,22 @@
+/*
+ * Copyright (c) 2018 Chen Jingpiao <chenjingpiao@gmail.com>
+ * Copyright (c) 2019 Paul Chaignon <paul.chaignon@gmail.com>
+ * Copyright (c) 2018-2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#ifndef STRACE_SECCOMP_FILTER_H
+# define STRACE_SECCOMP_FILTER_H
+
+# include "defs.h"
+
+extern bool seccomp_filtering;
+extern bool seccomp_before_sysentry;
+
+extern void check_seccomp_filter(void);
+extern void init_seccomp_filter(void);
+extern int seccomp_filter_restart_operator(const struct tcb *);
+
+#endif /* !STRACE_SECCOMP_FILTER_H */
diff --git a/fsconfig.c b/fsconfig.c
new file mode 100644 (file)
index 0000000..4ae6561
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#include "defs.h"
+#ifdef HAVE_LINUX_MOUNT_H
+# include <linux/mount.h>
+#endif
+#include "xlat/fsconfig_cmds.h"
+
+SYS_FUNC(fsconfig)
+{
+       const int fs_fd = tcp->u_arg[0];
+       const unsigned int cmd = tcp->u_arg[1];
+       const kernel_ulong_t key = tcp->u_arg[2];
+       const kernel_ulong_t value = tcp->u_arg[3];
+       const int aux = tcp->u_arg[4];
+
+       printfd(tcp, fs_fd);
+       tprints(", ");
+
+       printxval(fsconfig_cmds, cmd, "FSCONFIG_???");
+       tprints(", ");
+
+       switch (cmd) {
+               case FSCONFIG_SET_FLAG:
+               case FSCONFIG_SET_STRING:
+               case FSCONFIG_SET_BINARY:
+               case FSCONFIG_SET_PATH:
+               case FSCONFIG_SET_PATH_EMPTY:
+               case FSCONFIG_SET_FD:
+                       printstr_ex(tcp, key, 256, QUOTE_0_TERMINATED);
+                       break;
+               case FSCONFIG_CMD_CREATE:
+               case FSCONFIG_CMD_RECONFIGURE:
+               default:
+                       printaddr(key);
+                       break;
+       }
+       tprints(", ");
+
+       switch (cmd) {
+               case FSCONFIG_SET_STRING:
+                       printstr_ex(tcp, value, 256, QUOTE_0_TERMINATED);
+                       break;
+               case FSCONFIG_SET_PATH:
+               case FSCONFIG_SET_PATH_EMPTY:
+                       printpath(tcp, value);
+                       break;
+               case FSCONFIG_SET_BINARY:
+                       if (aux >= 0 && aux <= 1024 * 1024) {
+                               printstr_ex(tcp, value, aux, QUOTE_FORCE_HEX);
+                               break;
+                       }
+                       ATTRIBUTE_FALLTHROUGH;
+               case FSCONFIG_SET_FLAG:
+               case FSCONFIG_SET_FD:
+               case FSCONFIG_CMD_CREATE:
+               case FSCONFIG_CMD_RECONFIGURE:
+               default:
+                       printaddr(value);
+                       break;
+       }
+       tprints(", ");
+
+       switch (cmd) {
+               case FSCONFIG_SET_PATH:
+               case FSCONFIG_SET_PATH_EMPTY:
+                       print_dirfd(tcp, aux);
+                       break;
+               case FSCONFIG_SET_FD:
+                       printfd(tcp, aux);
+                       break;
+               case FSCONFIG_SET_FLAG:
+               case FSCONFIG_SET_STRING:
+               case FSCONFIG_SET_BINARY:
+               case FSCONFIG_CMD_CREATE:
+               case FSCONFIG_CMD_RECONFIGURE:
+               default:
+                       tprintf("%d", aux);
+                       break;
+       }
+
+       return RVAL_DECODED;
+}
diff --git a/fsmount.c b/fsmount.c
new file mode 100644 (file)
index 0000000..c64e256
--- /dev/null
+++ b/fsmount.c
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#include "defs.h"
+#ifdef HAVE_LINUX_MOUNT_H
+# include <linux/mount.h>
+#endif
+#include "xlat/fsmount_flags.h"
+#include "xlat/mount_attr_flags.h"
+
+SYS_FUNC(fsmount)
+{
+       printfd(tcp, tcp->u_arg[0]);
+       tprints(", ");
+
+       printflags(fsmount_flags, tcp->u_arg[1], "FSMOUNT_???");
+       tprints(", ");
+
+       printflags(mount_attr_flags, tcp->u_arg[2], "MOUNT_ATTR_???");
+
+       return RVAL_DECODED | RVAL_FD;
+}
diff --git a/fsopen.c b/fsopen.c
new file mode 100644 (file)
index 0000000..1bae2c5
--- /dev/null
+++ b/fsopen.c
@@ -0,0 +1,20 @@
+/*
+ * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#include "defs.h"
+#ifdef HAVE_LINUX_MOUNT_H
+# include <linux/mount.h>
+#endif
+#include "xlat/fsopen_flags.h"
+
+SYS_FUNC(fsopen)
+{
+       printstr(tcp, tcp->u_arg[0]);
+       tprints(", ");
+       printflags(fsopen_flags, tcp->u_arg[1], "FSOPEN_???");
+       return RVAL_DECODED | RVAL_FD;
+}
diff --git a/fspick.c b/fspick.c
new file mode 100644 (file)
index 0000000..3d00379
--- /dev/null
+++ b/fspick.c
@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#include "defs.h"
+#ifdef HAVE_LINUX_MOUNT_H
+# include <linux/mount.h>
+#endif
+#include "xlat/fspick_flags.h"
+
+SYS_FUNC(fspick)
+{
+       print_dirfd(tcp, tcp->u_arg[0]);
+       tprints(", ");
+
+       printpath(tcp, tcp->u_arg[1]);
+       tprints(", ");
+
+       printflags(fspick_flags, tcp->u_arg[2], "FSPICK_???");
+
+       return RVAL_DECODED | RVAL_FD;
+}
index 2d5d7f9eeb2caafcf1b90ad6e542029d951d8ec9..4c23ebc9e3e351c3828f9361b7fba1a7bd1b1891 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2015 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
 #  define CLANG_PREREQ(maj, min)       0
 # endif
 
+# ifdef __GLIBC__
+#  ifdef __GLIBC_MINOR__
+#   define GLIBC_PREREQ_GE(maj, min)   \
+       ((__GLIBC__ << 16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min))
+#   define GLIBC_PREREQ_LT(maj, min)   \
+       ((__GLIBC__ << 16) + __GLIBC_MINOR__ < ((maj) << 16) + (min))
+#  else /* !__GLIBC_MINOR__ */
+#   define GLIBC_PREREQ_GE(maj, min)   0
+#   define GLIBC_PREREQ_LT(maj, min)   1
+#  endif
+# else /* !__GLIBC__ */
+#  define GLIBC_PREREQ_GE(maj, min)    0
+#  define GLIBC_PREREQ_LT(maj, min)    0
+# endif
+
 # if !(GNUC_PREREQ(2, 0) || CLANG_PREREQ(1, 0))
 #  define __attribute__(x)     /* empty */
 # endif
@@ -50,6 +65,7 @@
 #  define MUST_BE_ARRAY(a) FAIL_BUILD_ON_ZERO(!SAME_TYPE((a), &(a)[0]))
 # else
 #  define SAME_TYPE(x, y)      0
+#  define FAIL_BUILD_ON_ZERO(e) 0
 #  define MUST_BE_ARRAY(a)     0
 # endif
 
index 76c12ca64dcb2e67a6953bf49104512cd8ad197b..44ea21abfcc06f3050b0f2e4da820689700a7757 100755 (executable)
@@ -1,6 +1,6 @@
 #!/bin/sh -efu
 # Copyright (c) 2018 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2018-2019 The strace developers.
+# Copyright (c) 2018-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: LGPL-2.1-or-later
@@ -18,7 +18,6 @@ cat <<EOF
 # include "bpf_attr.h"
 # include "static_assert.h"
 
-# define SoM(type_, member_) (sizeof(((type_ *)0)->member_))
 EOF
 
 for struct in $(sed -n 's/^struct \([^[:space:]]\+_struct\) .*/\1/p' < "$input"); do
@@ -39,7 +38,7 @@ for struct in $(sed -n 's/^struct \([^[:space:]]\+_struct\) .*/\1/p' < "$input")
                cat <<EOF
 
 # ifdef HAVE_${TYPE_NAME}_$ENUM$FIELD
-       static_assert(SoM(struct $struct, $field) == SoM($type_name, $enum$field),
+       static_assert(sizeof_field(struct $struct, $field) == sizeof_field($type_name, $enum$field),
                      "$struct.$field size mismatch");
        static_assert(offsetof(struct $struct, $field) == offsetof($type_name, $enum$field),
                      "$struct.$field offset mismatch");
index 4fa096945113b7329162cda66e61697b029f33df..ed49a033b09efb9d728f604a8b3d3024f0da09c7 100644 (file)
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2018-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -10,5 +11,9 @@
 #if SUPPORTED_PERSONALITIES > 1
 # include "get_personality.h"
 # include <linux/audit.h>
+# define XLAT_MACROS_ONLY
+#  include "xlat/elf_em.h"
+#  include "xlat/audit_arch.h"
+# undef XLAT_MACROS_ONLY
 # include "arch_get_personality.c"
 #endif
index ab0181544cf9ae0d8e0e703030e350f04e11d74b..b77253a9ca44dfc603890c1c9607857779c141f7 100644 (file)
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2018-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -11,6 +12,6 @@
 # include "ptrace.h"
 
 extern int
-get_personality_from_syscall_info(const struct ptrace_syscall_info *);
+get_personality_from_syscall_info(const struct_ptrace_syscall_info *);
 
 #endif /* !STRACE_GET_PERSONALITY_H */
index b5aebaff4fc27e12d07c76d365805093156d1101..3d1b686f99c0ba1e13b12014ec7d0b6de2ebc9ef 100644 (file)
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2012-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2014-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -10,7 +11,8 @@
 SYS_FUNC(get_robust_list)
 {
        if (entering(tcp)) {
-               tprintf("%d, ", (int) tcp->u_arg[0]);
+               printpid(tcp, tcp->u_arg[0], PT_TID);
+               tprints(", ");
        } else {
                printnum_ptr(tcp, tcp->u_arg[1]);
                tprints(", ");
diff --git a/getpid.c b/getpid.c
new file mode 100644 (file)
index 0000000..5e9a1a2
--- /dev/null
+++ b/getpid.c
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2020 Ákos Uzonyi <uzonyi.akos@gmail.com>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#include "defs.h"
+
+SYS_FUNC(getpid)
+{
+       return RVAL_DECODED | RVAL_TGID;
+}
+
+SYS_FUNC(gettid)
+{
+       return RVAL_DECODED | RVAL_TID;
+}
+
+SYS_FUNC(getpgrp)
+{
+       return RVAL_DECODED | RVAL_PGID;
+}
+
+SYS_FUNC(getpgid)
+{
+       printpid(tcp, tcp->u_arg[0], PT_TGID);
+
+       return RVAL_DECODED | RVAL_PGID;
+}
+
+SYS_FUNC(getsid)
+{
+       printpid(tcp, tcp->u_arg[0], PT_TGID);
+
+       return RVAL_DECODED | RVAL_SID;
+}
+
+SYS_FUNC(setpgid)
+{
+       printpid(tcp, tcp->u_arg[0], PT_TGID);
+       tprints(", ");
+       printpid(tcp, tcp->u_arg[1], PT_PGID);
+
+       return RVAL_DECODED;
+}
diff --git a/git-version-gen b/git-version-gen
new file mode 100755 (executable)
index 0000000..c3d8f95
--- /dev/null
@@ -0,0 +1,230 @@
+#!/bin/sh
+# Print a version string.
+scriptversion=2018-03-07.03; # UTC
+
+# Copyright (C) 2007-2019 Free Software Foundation, Inc.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <https://www.gnu.org/licenses/>.
+
+# This script is derived from GIT-VERSION-GEN from GIT: https://git-scm.com/.
+# It may be run two ways:
+# - from a git repository in which the "git describe" command below
+#   produces useful output (thus requiring at least one signed tag)
+# - from a non-git-repo directory containing a .tarball-version file, which
+#   presumes this script is invoked like "./git-version-gen .tarball-version".
+
+# In order to use intra-version strings in your project, you will need two
+# separate generated version string files:
+#
+# .tarball-version - present only in a distribution tarball, and not in
+#   a checked-out repository.  Created with contents that were learned at
+#   the last time autoconf was run, and used by git-version-gen.  Must not
+#   be present in either $(srcdir) or $(builddir) for git-version-gen to
+#   give accurate answers during normal development with a checked out tree,
+#   but must be present in a tarball when there is no version control system.
+#   Therefore, it cannot be used in any dependencies.  GNUmakefile has
+#   hooks to force a reconfigure at distribution time to get the value
+#   correct, without penalizing normal development with extra reconfigures.
+#
+# .version - present in a checked-out repository and in a distribution
+#   tarball.  Usable in dependencies, particularly for files that don't
+#   want to depend on config.h but do want to track version changes.
+#   Delete this file prior to any autoconf run where you want to rebuild
+#   files to pick up a version string change; and leave it stale to
+#   minimize rebuild time after unrelated changes to configure sources.
+#
+# As with any generated file in a VC'd directory, you should add
+# /.version to .gitignore, so that you don't accidentally commit it.
+# .tarball-version is never generated in a VC'd directory, so needn't
+# be listed there.
+#
+# Use the following line in your configure.ac, so that $(VERSION) will
+# automatically be up-to-date each time configure is run (and note that
+# since configure.ac no longer includes a version string, Makefile rules
+# should not depend on configure.ac for version updates).
+#
+# AC_INIT([GNU project],
+#         m4_esyscmd([build-aux/git-version-gen .tarball-version]),
+#         [bug-project@example])
+#
+# Then use the following lines in your Makefile.am, so that .version
+# will be present for dependencies, and so that .version and
+# .tarball-version will exist in distribution tarballs.
+#
+# EXTRA_DIST = $(top_srcdir)/.version
+# BUILT_SOURCES = $(top_srcdir)/.version
+# $(top_srcdir)/.version:
+#      echo $(VERSION) > $@-t && mv $@-t $@
+# dist-hook:
+#      echo $(VERSION) > $(distdir)/.tarball-version
+
+
+me=$0
+
+year=`expr "$scriptversion" : '\([^-]*\)'`
+version="git-version-gen $scriptversion
+
+Copyright $year Free Software Foundation, Inc.
+There is NO warranty.  You may redistribute this software
+under the terms of the GNU General Public License.
+For more information about these matters, see the files named COPYING."
+
+usage="\
+Usage: $me [OPTION]... \$srcdir/.tarball-version [TAG-NORMALIZATION-SED-SCRIPT]
+Print a version string.
+
+Options:
+
+   --prefix PREFIX    prefix of git tags (default 'v')
+   --fallback VERSION
+                      fallback version to use if \"git --version\" fails
+
+   --help             display this help and exit
+   --version          output version information and exit
+
+Running without arguments will suffice in most cases."
+
+prefix=v
+fallback=
+
+while test $# -gt 0; do
+  case $1 in
+    --help) echo "$usage"; exit 0;;
+    --version) echo "$version"; exit 0;;
+    --prefix) shift; prefix=${1?};;
+    --fallback) shift; fallback=${1?};;
+    -*)
+      echo "$0: Unknown option '$1'." >&2
+      echo "$0: Try '--help' for more information." >&2
+      exit 1;;
+    *)
+      if test "x$tarball_version_file" = x; then
+        tarball_version_file="$1"
+      elif test "x$tag_sed_script" = x; then
+        tag_sed_script="$1"
+      else
+        echo "$0: extra non-option argument '$1'." >&2
+        exit 1
+      fi;;
+  esac
+  shift
+done
+
+if test "x$tarball_version_file" = x; then
+    echo "$usage"
+    exit 1
+fi
+
+tag_sed_script="${tag_sed_script:-s/x/x/}"
+
+nl='
+'
+
+# Avoid meddling by environment variable of the same name.
+v=
+v_from_git=
+
+# First see if there is a tarball-only version file.
+# then try "git describe", then default.
+if test -f $tarball_version_file
+then
+    v=`cat $tarball_version_file` || v=
+    case $v in
+        *$nl*) v= ;; # reject multi-line output
+        [0-9]*) ;;
+        *) v= ;;
+    esac
+    test "x$v" = x \
+        && echo "$0: WARNING: $tarball_version_file is missing or damaged" 1>&2
+fi
+
+if test "x$v" != x
+then
+    : # use $v
+# Otherwise, if there is at least one git commit involving the working
+# directory, and "git describe" output looks sensible, use that to
+# derive a version string.
+elif test "`git log -1 --pretty=format:x . 2>&1`" = x \
+    && v=`git describe --abbrev=4 --match="$prefix*" HEAD 2>/dev/null \
+          || git describe --abbrev=4 HEAD 2>/dev/null` \
+    && v=`printf '%s\n' "$v" | sed "$tag_sed_script"` \
+    && case $v in
+         $prefix[0-9]*) ;;
+         *) (exit 1) ;;
+       esac
+then
+    # Is this a new git that lists number of commits since the last
+    # tag or the previous older version that did not?
+    #   Newer: v6.10-77-g0f8faeb
+    #   Older: v6.10-g0f8faeb
+    vprefix=`expr "X$v" : 'X\(.*\)-g[^-]*$'` || vprefix=$v
+    case $vprefix in
+        *-*) : git describe is probably okay three part flavor ;;
+        *)
+            : git describe is older two part flavor
+            # Recreate the number of commits and rewrite such that the
+            # result is the same as if we were using the newer version
+            # of git describe.
+            vtag=`echo "$v" | sed 's/-.*//'`
+            commit_list=`git rev-list "$vtag"..HEAD 2>/dev/null` \
+                || { commit_list=failed;
+                     echo "$0: WARNING: git rev-list failed" 1>&2; }
+            numcommits=`echo "$commit_list" | wc -l`
+            v=`echo "$v" | sed "s/\(.*\)-\(.*\)/\1-$numcommits-\2/"`;
+            test "$commit_list" = failed && v=UNKNOWN
+            ;;
+    esac
+
+    # Change the penultimate "-" to ".", for version-comparing tools.
+    # Remove the "g" to save a byte.
+    # Change remaining '-' to '.', so version conforms to policies.
+    v=`echo "$v" | sed 's/-\([^-]*\)-g\([^-]*\)$/.0.\1.\2/'`;
+
+    v_from_git=1
+elif test "x$fallback" = x || git --version >/dev/null 2>&1; then
+    v=UNKNOWN
+else
+    v=$fallback
+fi
+
+v=`echo "$v" |sed "s/^$prefix//"`
+
+# Test whether to append the "-dirty" suffix only if the version
+# string we're using came from git.  I.e., skip the test if it's "UNKNOWN"
+# or if it came from .tarball-version.
+if test "x$v_from_git" != x; then
+  # Don't declare a version "dirty" merely because a timestamp has changed.
+  git update-index --refresh > /dev/null 2>&1
+
+  dirty=`exec 2>/dev/null;git diff-index --name-only HEAD` || dirty=
+  case "$dirty" in
+      '') ;;
+      *) # Append the suffix only if there isn't one already.
+          case $v in
+            *-dirty) ;;
+            *) v="$v-dirty" ;;
+          esac ;;
+  esac
+fi
+
+# Omit the trailing newline, so that m4_esyscmd can use the result directly.
+printf %s "$v"
+
+# Local variables:
+# eval: (add-hook 'before-save-hook 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC0"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/hdio.c b/hdio.c
index 6a0a80274cebe159369124e5771c445f44fc570f..316c212059d75da512fd5cd76eb50af91607936b 100644 (file)
--- a/hdio.c
+++ b/hdio.c
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2009, 2010 Jeff Mahoney <jeffm@suse.com>
  * Copyright (c) 2011-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -17,26 +17,83 @@ typedef struct hd_geometry struct_hd_geometry;
 
 #include MPERS_DEFS
 
+#include "print_fields.h"
+
+#include "xlat/hdio_drive_cmds.h"
+
+static int
+print_hdio_getgeo(struct tcb *const tcp, const kernel_ulong_t arg)
+{
+       if (entering(tcp)) {
+               tprints(", ");
+
+               return 0;
+       }
+
+       /* exiting */
+       struct_hd_geometry geo;
+
+       if (umove_or_printaddr(tcp, arg, &geo))
+               return RVAL_IOCTL_DECODED;
+
+       PRINT_FIELD_U("{", geo, heads);
+       PRINT_FIELD_U(", ", geo, sectors);
+       PRINT_FIELD_U(", ", geo, cylinders);
+       PRINT_FIELD_U(", ", geo, start);
+       tprints("}");
+
+       return RVAL_IOCTL_DECODED;
+}
+
+static int
+print_hdio_drive_cmd(struct tcb *const tcp, const kernel_ulong_t arg)
+{
+       enum { SECTOR_SIZE = 512 };
+
+       struct hd_drive_cmd_hdr c;
+
+       if (entering(tcp)) {
+               tprints(", ");
+
+               if (umove_or_printaddr(tcp, arg, &c))
+                       return RVAL_IOCTL_DECODED;
+
+               PRINT_FIELD_XVAL("{", c, command, hdio_drive_cmds,
+                                "ATA_CMD_???");
+               PRINT_FIELD_U(", ", c, sector_number);
+               PRINT_FIELD_U(", ", c, feature);
+               PRINT_FIELD_U(", ", c, sector_count);
+               tprints("}");
+
+               return 0;
+       }
+
+       /* exiting */
+       if ((syserror(tcp) && tcp->u_error != EIO) || umove(tcp, arg, &c))
+               return RVAL_IOCTL_DECODED;
+
+       tprintf(" => {/* status */ %#x, /* error */ %u, /* nsector */ %u",
+               c.command, c.sector_number, c.feature);
+
+       if (c.sector_count) {
+               tprints(", ");
+               printstr_ex(tcp, arg + 4, c.sector_count * SECTOR_SIZE,
+                           QUOTE_FORCE_HEX);
+       }
+
+       tprints("}");
+
+       return RVAL_IOCTL_DECODED;
+}
+
 MPERS_PRINTER_DECL(int, hdio_ioctl, struct tcb *const tcp,
                   const unsigned int code, const kernel_ulong_t arg)
 {
        switch (code) {
        case HDIO_GETGEO:
-               if (entering(tcp))
-                       return 0;
-               else {
-                       struct_hd_geometry geo;
-
-                       tprints(", ");
-                       if (!umove_or_printaddr(tcp, arg, &geo))
-                               tprintf("{heads=%u, sectors=%u, "
-                                       "cylinders=%hu, start=%lu}",
-                                       (unsigned) geo.heads,
-                                       (unsigned) geo.sectors,
-                                       geo.cylinders,
-                                       (unsigned long) geo.start);
-               }
-               break;
+               return print_hdio_getgeo(tcp, arg);
+       case HDIO_DRIVE_CMD:
+               return print_hdio_drive_cmd(tcp, arg);
        default:
                return RVAL_DECODED;
        }
index e12df34b014f7582858d810d597dfa012a89b697..cd1562f98c114c455a623cdbef7ce0e7ad6da67c 100644 (file)
--- a/inotify.c
+++ b/inotify.c
@@ -36,6 +36,11 @@ SYS_FUNC(inotify_rm_watch)
        return RVAL_DECODED;
 }
 
+SYS_FUNC(inotify_init)
+{
+       return RVAL_DECODED | RVAL_FD;
+}
+
 SYS_FUNC(inotify_init1)
 {
        printflags(inotify_init_flags, tcp->u_arg[0], "IN_???");
index 8175c640fe6288a75cc846567ea5506086f326f4..b34a8fc5ab97ce3559beb316a787d6b2be723fbd 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/sh
 # install - install a program, script, or datafile
 
-scriptversion=2018-03-11.20; # UTC
+scriptversion=2020-07-26.22; # UTC
 
 # This originates from X11R5 (mit/util/scripts/install.sh), which was
 # later released in X11R6 (xc/config/util/install.sh) with the
@@ -69,6 +69,10 @@ posix_mkdir=
 # Desired mode of installed file.
 mode=0755
 
+# Create dirs (including intermediate dirs) using mode 755.
+# This is like GNU 'install' as of coreutils 8.32 (2020).
+mkdir_umask=22
+
 chgrpcmd=
 chmodcmd=$chmodprog
 chowncmd=
@@ -301,22 +305,6 @@ do
   if test $dstdir_status != 0; then
     case $posix_mkdir in
       '')
-        # Create intermediate dirs using mode 755 as modified by the umask.
-        # This is like FreeBSD 'install' as of 1997-10-28.
-        umask=`umask`
-        case $stripcmd.$umask in
-          # Optimize common cases.
-          *[2367][2367]) mkdir_umask=$umask;;
-          .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
-
-          *[0-7])
-            mkdir_umask=`expr $umask + 22 \
-              - $umask % 100 % 40 + $umask % 20 \
-              - $umask % 10 % 4 + $umask % 2
-            `;;
-          *) mkdir_umask=$umask,go-w;;
-        esac
-
         # With -d, create the new directory with the user-specified mode.
         # Otherwise, rely on $mkdir_umask.
         if test -n "$dir_arg"; then
@@ -326,52 +314,49 @@ do
         fi
 
         posix_mkdir=false
-        case $umask in
-          *[123567][0-7][0-7])
-            # POSIX mkdir -p sets u+wx bits regardless of umask, which
-            # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
-            ;;
-          *)
-            # Note that $RANDOM variable is not portable (e.g. dash);  Use it
-            # here however when possible just to lower collision chance.
-            tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
-
-            trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0
-
-            # Because "mkdir -p" follows existing symlinks and we likely work
-            # directly in world-writeable /tmp, make sure that the '$tmpdir'
-            # directory is successfully created first before we actually test
-            # 'mkdir -p' feature.
-            if (umask $mkdir_umask &&
-                $mkdirprog $mkdir_mode "$tmpdir" &&
-                exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1
-            then
-              if test -z "$dir_arg" || {
-                   # Check for POSIX incompatibilities with -m.
-                   # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
-                   # other-writable bit of parent directory when it shouldn't.
-                   # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
-                   test_tmpdir="$tmpdir/a"
-                   ls_ld_tmpdir=`ls -ld "$test_tmpdir"`
-                   case $ls_ld_tmpdir in
-                     d????-?r-*) different_mode=700;;
-                     d????-?--*) different_mode=755;;
-                     *) false;;
-                   esac &&
-                   $mkdirprog -m$different_mode -p -- "$test_tmpdir" && {
-                     ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"`
-                     test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
-                   }
-                 }
-              then posix_mkdir=:
-              fi
-              rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir"
-            else
-              # Remove any dirs left behind by ancient mkdir implementations.
-              rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null
-            fi
-            trap '' 0;;
-        esac;;
+       # The $RANDOM variable is not portable (e.g., dash).  Use it
+       # here however when possible just to lower collision chance.
+       tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+
+       trap '
+         ret=$?
+         rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null
+         exit $ret
+       ' 0
+
+       # Because "mkdir -p" follows existing symlinks and we likely work
+       # directly in world-writeable /tmp, make sure that the '$tmpdir'
+       # directory is successfully created first before we actually test
+       # 'mkdir -p'.
+       if (umask $mkdir_umask &&
+           $mkdirprog $mkdir_mode "$tmpdir" &&
+           exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1
+       then
+         if test -z "$dir_arg" || {
+              # Check for POSIX incompatibilities with -m.
+              # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+              # other-writable bit of parent directory when it shouldn't.
+              # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+              test_tmpdir="$tmpdir/a"
+              ls_ld_tmpdir=`ls -ld "$test_tmpdir"`
+              case $ls_ld_tmpdir in
+                d????-?r-*) different_mode=700;;
+                d????-?--*) different_mode=755;;
+                *) false;;
+              esac &&
+              $mkdirprog -m$different_mode -p -- "$test_tmpdir" && {
+                ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"`
+                test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+              }
+            }
+         then posix_mkdir=:
+         fi
+         rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir"
+       else
+         # Remove any dirs left behind by ancient mkdir implementations.
+         rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null
+       fi
+       trap '' 0;;
     esac
 
     if
@@ -382,7 +367,7 @@ do
     then :
     else
 
-      # The umask is ridiculous, or mkdir does not conform to POSIX,
+      # mkdir does not conform to POSIX,
       # or it failed possibly due to a race condition.  Create the
       # directory the slow way, step by step, checking for races as we go.
 
@@ -411,7 +396,7 @@ do
           prefixes=
         else
           if $posix_mkdir; then
-            (umask=$mkdir_umask &&
+            (umask $mkdir_umask &&
              $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
             # Don't fail if two instances are running concurrently.
             test -d "$prefix" || exit 1
@@ -451,7 +436,18 @@ do
     trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
 
     # Copy the file name to the temp name.
-    (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
+    (umask $cp_umask &&
+     { test -z "$stripcmd" || {
+        # Create $dsttmp read-write so that cp doesn't create it read-only,
+        # which would cause strip to fail.
+        if test -z "$doit"; then
+          : >"$dsttmp" # No need to fork-exec 'touch'.
+        else
+          $doit touch "$dsttmp"
+        fi
+       }
+     } &&
+     $doit_exec $cpprog "$src" "$dsttmp") &&
 
     # and set any options; do chmod last to preserve setuid bits.
     #
diff --git a/io.c b/io.c
index 4fd6cf06d4a36e7c96ecc29cccbd251e232d53e5..8882c7834e3d9f370a77c62e9e820c2b9094462f 100644 (file)
--- a/io.c
+++ b/io.c
@@ -3,7 +3,7 @@
  * Copyright (c) 1993 Branko Lankester <branko@hacktic.nl>
  * Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com>
  * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
- * Copyright (c) 1999-2018 The strace developers.
+ * Copyright (c) 1999-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -90,7 +90,7 @@ print_iovec(struct tcb *tcp, void *elem_buf, size_t elem_size, void *data)
 
 /*
  * data_size limits the cumulative size of printed data.
- * Example: recvmsg returing a short read.
+ * Example: recvmsg returning a short read.
  */
 void
 tprint_iov_upto(struct tcb *const tcp, const kernel_ulong_t len,
index 0b82a07542f0f665349e48659efcdc1aa7e8bace..2ffe163eda45934116392ef223174c3fb61b7516 100644 (file)
@@ -1,28 +1,46 @@
 /*
  * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2019-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
  */
 
 #include "defs.h"
+#include "print_fields.h"
 
-#ifdef HAVE_LINUX_IO_URING_H
-# include "print_fields.h"
-# include <linux/io_uring.h>
-#endif
+#include "types/io_uring.h"
 
+#include "xlat/uring_op_flags.h"
+#include "xlat/uring_ops.h"
+#include "xlat/uring_setup_features.h"
 #include "xlat/uring_setup_flags.h"
 #include "xlat/uring_enter_flags.h"
 #include "xlat/uring_register_opcodes.h"
+#include "xlat/uring_cqring_flags.h"
+
+#ifdef HAVE_STRUCT_IO_URING_PARAMS
+# ifdef HAVE_STRUCT_IO_URING_PARAMS_RESV
+static_assert(offsetof(struct_io_uring_params, resv)
+             >= offsetof(struct io_uring_params, resv),
+             "struct io_uring_params.resv offset mismatch"
+             ", please update the decoder");
+static_assert(sizeof_field(struct_io_uring_params, resv)
+             <= sizeof_field(struct io_uring_params, resv),
+             "struct io_uring_params.resv size mismatch"
+             ", please update the decoder");
+# else /* !HAVE_STRUCT_IO_URING_PARAMS_RESV */
+static_assert(0, "struct io_uring_params.resv is missing"
+                ", please update the decoder");
+# endif
+#endif /* HAVE_STRUCT_IO_URING_PARAMS */
+
 
 SYS_FUNC(io_uring_setup)
 {
        const uint32_t nentries = tcp->u_arg[0];
        const kernel_ulong_t params_addr = tcp->u_arg[1];
-
-#ifdef HAVE_LINUX_IO_URING_H
-       struct io_uring_params params;
+       struct_io_uring_params params;
 
        if (entering(tcp)) {
                tprintf("%u, ", nentries);
@@ -34,46 +52,52 @@ SYS_FUNC(io_uring_setup)
                                  "IORING_SETUP_???");
                PRINT_FIELD_X(", ", params, sq_thread_cpu);
                PRINT_FIELD_U(", ", params, sq_thread_idle);
-               for (unsigned int i = 0; i < ARRAY_SIZE(params.resv); ++i) {
-                       if (params.resv[i]) {
-                               for (i = 0; i < ARRAY_SIZE(params.resv); ++i)
-                                       tprintf("%s%#x",
-                                               (i ? ", " : ", resv={"),
-                                               params.resv[i]);
-                               tprints("}");
-                               break;
-                       }
+               if (params.flags & IORING_SETUP_ATTACH_WQ)
+                       PRINT_FIELD_FD(", ", params, wq_fd, tcp);
+               if (!IS_ARRAY_ZERO(params.resv)) {
+                       PRINT_FIELD_ARRAY(", ", params, resv, tcp,
+                                         print_xint32_array_member);
                }
                return 0;
+       }
+
+       /* exiting */
+       if (syserror(tcp)) {
+               /* The remaining part of params is irrelevant.  */
+       } else if (umove(tcp, params_addr, &params)) {
+               tprints(", ???");
        } else {
-               if (syserror(tcp)) {
-                       /* The remaining part of params is irrelevant.  */
-               } else if (umove(tcp, params_addr, &params)) {
-                       tprints(", ???");
-               } else {
-                       PRINT_FIELD_U(", ", params, sq_entries);
-                       PRINT_FIELD_U(", ", params, cq_entries);
-                       PRINT_FIELD_U(", sq_off={", params.sq_off, head);
-                       PRINT_FIELD_U(", ", params.sq_off, tail);
-                       PRINT_FIELD_U(", ", params.sq_off, ring_mask);
-                       PRINT_FIELD_U(", ", params.sq_off, ring_entries);
-                       PRINT_FIELD_U(", ", params.sq_off, flags);
-                       PRINT_FIELD_U(", ", params.sq_off, dropped);
-                       PRINT_FIELD_U(", ", params.sq_off, array);
-                       PRINT_FIELD_U("}, cq_off={", params.cq_off, head);
-                       PRINT_FIELD_U(", ", params.cq_off, tail);
-                       PRINT_FIELD_U(", ", params.cq_off, ring_mask);
-                       PRINT_FIELD_U(", ", params.cq_off, ring_entries);
-                       PRINT_FIELD_U(", ", params.cq_off, overflow);
-                       PRINT_FIELD_U(", ", params.cq_off, cqes);
-                       tprints("}");
-               }
+               PRINT_FIELD_U(", ", params, sq_entries);
+               PRINT_FIELD_U(", ", params, cq_entries);
+               PRINT_FIELD_FLAGS(", ", params, features,
+                                 uring_setup_features,
+                                 "IORING_FEAT_???");
+               PRINT_FIELD_U(", sq_off={", params.sq_off, head);
+               PRINT_FIELD_U(", ", params.sq_off, tail);
+               PRINT_FIELD_U(", ", params.sq_off, ring_mask);
+               PRINT_FIELD_U(", ", params.sq_off, ring_entries);
+               PRINT_FIELD_U(", ", params.sq_off, flags);
+               PRINT_FIELD_U(", ", params.sq_off, dropped);
+               PRINT_FIELD_U(", ", params.sq_off, array);
+               if (params.sq_off.resv1)
+                       PRINT_FIELD_X(", ", params.sq_off, resv1);
+               if (params.sq_off.resv2)
+                       PRINT_FIELD_X(", ", params.sq_off, resv2);
+               PRINT_FIELD_U("}, cq_off={", params.cq_off, head);
+               PRINT_FIELD_U(", ", params.cq_off, tail);
+               PRINT_FIELD_U(", ", params.cq_off, ring_mask);
+               PRINT_FIELD_U(", ", params.cq_off, ring_entries);
+               PRINT_FIELD_U(", ", params.cq_off, overflow);
+               PRINT_FIELD_U(", ", params.cq_off, cqes);
+               PRINT_FIELD_FLAGS(", ", params.cq_off, flags,
+                                 uring_cqring_flags, "IORING_CQ_???");
+               if (params.cq_off.resv1)
+                       PRINT_FIELD_X(", ", params.cq_off, resv1);
+               if (params.cq_off.resv2)
+                       PRINT_FIELD_X(", ", params.cq_off, resv2);
                tprints("}");
        }
-#else /* !HAVE_LINUX_IO_URING_H */
-       tprintf("%u, ", nentries);
-       printaddr(params_addr);
-#endif
+       tprints("}");
 
        return RVAL_DECODED | RVAL_FD;
 }
@@ -105,31 +129,134 @@ print_fd_array_member(struct tcb *tcp, void *elem_buf, size_t elem_size,
        return true;
 }
 
+static void
+print_io_uring_files_update(struct tcb *tcp, const kernel_ulong_t addr,
+                           const unsigned int nargs)
+{
+       struct_io_uring_files_update arg;
+       int buf;
+
+       if (umove_or_printaddr(tcp, addr, &arg))
+               return;
+
+       PRINT_FIELD_U("{", arg, offset);
+       if (arg.resv)
+               PRINT_FIELD_X(", ", arg, resv);
+       tprints(", fds=");
+       print_big_u64_addr(arg.fds);
+       print_array(tcp, arg.fds, nargs, &buf, sizeof(buf),
+                   tfetch_mem, print_fd_array_member, NULL);
+       tprints("}");
+}
+
+static bool
+print_io_uring_probe_op(struct tcb *tcp, void *elem_buf, size_t elem_size,
+                       void *data)
+{
+       struct_io_uring_probe_op *op = (struct_io_uring_probe_op *) elem_buf;
+
+       PRINT_FIELD_XVAL_U("{", *op, op, uring_ops, "IORING_OP_???");
+       if (op->resv)
+               PRINT_FIELD_X(", ", *op, resv);
+       PRINT_FIELD_FLAGS(", ", *op, flags, uring_op_flags, "IO_URING_OP_???");
+       if (op->resv2)
+               PRINT_FIELD_X(", ", *op, resv2);
+       tprints("}");
+
+       return true;
+}
+
+static int
+print_io_uring_probe(struct tcb *tcp, const kernel_ulong_t addr,
+                    const unsigned int nargs)
+{
+       struct_io_uring_probe *probe;
+       unsigned long printed = exiting(tcp) ? get_tcb_priv_ulong(tcp) : false;
+
+       if (exiting(tcp) && syserror(tcp)) {
+               if (!printed)
+                       printaddr(addr);
+               return RVAL_DECODED;
+       }
+       if (nargs > 256) {
+               printaddr(addr);
+               return RVAL_DECODED;
+       }
+       if (printed)
+               tprints(" => ");
+
+       /* Maximum size is 8 * 256 + 16, a bit over 4k */
+       size_t probe_sz = sizeof(probe->ops[0]) * nargs + sizeof(*probe);
+       probe = alloca(probe_sz);
+
+       /*
+        * So far, the operation doesn't use any data from the arg provided,
+        * but it checks that it is filled with zeroes.
+        */
+       if (umoven_or_printaddr(tcp, addr, probe_sz, probe))
+               return RVAL_DECODED;
+       if (entering(tcp) && is_filled((const char *) probe, 0, probe_sz))
+               return 0;
+       set_tcb_priv_ulong(tcp, true);
+
+       PRINT_FIELD_XVAL_U("{", *probe, last_op, uring_ops, "IORING_OP_???");
+       PRINT_FIELD_U(", ", *probe, ops_len);
+       if (probe->resv)
+               PRINT_FIELD_X(", ", *probe, resv);
+       if (!IS_ARRAY_ZERO(probe->resv2)) {
+               PRINT_FIELD_ARRAY(", ", *probe, resv2, tcp,
+                                 print_xint32_array_member);
+       }
+       tprints(", ops=");
+       print_local_array_ex(tcp, probe->ops,
+                            entering(tcp) ? nargs : probe->ops_len,
+                            sizeof(probe->ops[0]), print_io_uring_probe_op,
+                            NULL, 0, NULL, NULL);
+       tprints("}");
+
+       return 0;
+}
+
 SYS_FUNC(io_uring_register)
 {
        const int fd = tcp->u_arg[0];
        const unsigned int opcode = tcp->u_arg[1];
        const kernel_ulong_t arg = tcp->u_arg[2];
        const unsigned int nargs = tcp->u_arg[3];
+       int rc = RVAL_DECODED;
        int buf;
 
-       printfd(tcp, fd);
-       tprints(", ");
-       printxval(uring_register_opcodes, opcode, "IORING_REGISTER_???");
-       tprints(", ");
+       if (entering(tcp)) {
+               printfd(tcp, fd);
+               tprints(", ");
+               printxval(uring_register_opcodes, opcode,
+                         "IORING_REGISTER_???");
+               tprints(", ");
+       }
+
        switch (opcode) {
-               case IORING_REGISTER_BUFFERS:
-                       tprint_iov(tcp, nargs, arg, IOV_DECODE_ADDR);
-                       break;
-               case IORING_REGISTER_FILES:
-                       print_array(tcp, arg, nargs, &buf, sizeof(buf),
-                                   tfetch_mem, print_fd_array_member, NULL);
-                       break;
-               default:
-                       printaddr(arg);
-                       break;
+       case IORING_REGISTER_BUFFERS:
+               tprint_iov(tcp, nargs, arg, IOV_DECODE_ADDR);
+               break;
+       case IORING_REGISTER_FILES:
+       case IORING_REGISTER_EVENTFD:
+       case IORING_REGISTER_EVENTFD_ASYNC:
+               print_array(tcp, arg, nargs, &buf, sizeof(buf),
+                           tfetch_mem, print_fd_array_member, NULL);
+               break;
+       case IORING_REGISTER_FILES_UPDATE:
+               print_io_uring_files_update(tcp, arg, nargs);
+               break;
+       case IORING_REGISTER_PROBE:
+               rc = print_io_uring_probe(tcp, arg, nargs);
+               break;
+       default:
+               printaddr(arg);
+               break;
        }
-       tprintf(", %u", nargs);
 
-       return RVAL_DECODED;
+       if (rc || exiting(tcp))
+               tprintf(", %u", nargs);
+
+       return rc;
 }
diff --git a/ioctl.c b/ioctl.c
index d3205b22936756c1518ee7a4fa9c34da0b4c8f19..1e3ec910247854f6fb648a81823e9e1ed9d49940 100644 (file)
--- a/ioctl.c
+++ b/ioctl.c
@@ -3,7 +3,7 @@
  * Copyright (c) 1993 Branko Lankester <branko@hacktic.nl>
  * Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com>
  * Copyright (c) 1996-2001 Wichert Akkerman <wichert@cistron.nl>
- * Copyright (c) 1999-2018 The strace developers.
+ * Copyright (c) 1999-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
 #include <linux/ioctl.h>
 #include "xlat/ioctl_dirs.h"
 
+#if defined(SPARC) || defined(SPARC64)
+/*
+ * While Alpha, MIPS, PA-RISC, and POWER simply define _IOC_SIZEBITS to 13
+ * and utilise 3 bits for _IOC_DIRBITS, SPARC tries to provide 14 bits
+ * for the size field ("as on i386") by (ab)using the lowest direction bit.
+ * Unfortunately, while doing so, they decide to define _IOC_SIZE to 0
+ * when the direction doesn't have _IOC_READ/_IOC_WRITE bits set, which
+ * breaks the invariant
+ *
+ *     _IOC_SIZE(_IOC(dir, type, nr, size)) == size
+ *
+ * for _IOC_DIR(val) that doesn't include _IOC_READ or _IOC_WRITE, which
+ * is unacceptable for strace's use case.
+ * So, let's redefine _IOC_SIZE in a way that is more suitable for us.
+ */
+# undef _IOC_SIZE
+# define _IOC_SIZE(nr)                                         \
+       ((_IOC_DIR(nr) & (_IOC_WRITE | _IOC_READ))              \
+               ? (((nr) >> _IOC_SIZESHIFT) & _IOC_XSIZEMASK)   \
+               : (((nr) >> _IOC_SIZESHIFT) & _IOC_SIZEMASK))   \
+       /* end of _IOC_SIZE definition */
+#endif
+
 static int
 compare(const void *a, const void *b)
 {
@@ -51,8 +74,12 @@ ioctl_next_match(const struct_ioctlent *iop)
 static void
 ioctl_print_code(const unsigned int code)
 {
+       const bool abbrev = xlat_verbose(xlat_verbosity) != XLAT_STYLE_VERBOSE;
+
        tprints("_IOC(");
-       printflags(ioctl_dirs, _IOC_DIR(code), "_IOC_???");
+       printflags_ex(_IOC_DIR(code), abbrev ? "_IOC_???" : NULL,
+                     abbrev ? XLAT_STYLE_DEFAULT : XLAT_STYLE_ABBREV,
+                     ioctl_dirs, NULL);
        tprintf(", %#x, %#x, %#x)",
                _IOC_TYPE(code), _IOC_NR(code), _IOC_SIZE(code));
 }
@@ -61,12 +88,15 @@ static int
 evdev_decode_number(const unsigned int code)
 {
        const unsigned int nr = _IOC_NR(code);
+       const bool abbrev = xlat_verbose(xlat_verbosity) != XLAT_STYLE_VERBOSE;
 
        if (_IOC_DIR(code) == _IOC_WRITE) {
                if (nr >= 0xc0 && nr <= 0xc0 + 0x3f) {
                        tprints("EVIOCSABS(");
-                       printxval_indexn(evdev_abs, evdev_abs_size, nr - 0xc0,
-                                        "ABS_???");
+                       printxval_ex(evdev_abs, nr - 0xc0,
+                                    abbrev ? "ABS_???" : NULL,
+                                    abbrev ? XLAT_STYLE_DEFAULT
+                                           : XLAT_STYLE_ABBREV);
                        tprints(")");
                        return 1;
                }
@@ -78,49 +108,52 @@ evdev_decode_number(const unsigned int code)
        if (nr >= 0x20 && nr <= 0x20 + 0x1f) {
                tprints("EVIOCGBIT(");
                if (nr == 0x20)
-                       tprintf("0");
+                       tprints("0");
                else
-                       printxval(evdev_ev, nr - 0x20, "EV_???");
+                       printxval_ex(evdev_ev, nr - 0x20,
+                                    abbrev ? "EV_???" : NULL,
+                                    abbrev ? XLAT_STYLE_DEFAULT
+                                           : XLAT_STYLE_ABBREV);
                tprintf(", %u)", _IOC_SIZE(code));
                return 1;
        } else if (nr >= 0x40 && nr <= 0x40 + 0x3f) {
                tprints("EVIOCGABS(");
-               printxval_indexn(evdev_abs, evdev_abs_size, nr - 0x40,
-                                "ABS_???");
+               printxval_ex(evdev_abs, nr - 0x40, abbrev ? "ABS_???" : NULL,
+                            abbrev ? XLAT_STYLE_DEFAULT : XLAT_STYLE_ABBREV);
                tprints(")");
                return 1;
        }
 
-       switch (_IOC_NR(nr)) {
-               case 0x06:
-                       tprintf("EVIOCGNAME(%u)", _IOC_SIZE(code));
-                       return 1;
-               case 0x07:
-                       tprintf("EVIOCGPHYS(%u)", _IOC_SIZE(code));
-                       return 1;
-               case 0x08:
-                       tprintf("EVIOCGUNIQ(%u)", _IOC_SIZE(code));
-                       return 1;
-               case 0x09:
-                       tprintf("EVIOCGPROP(%u)", _IOC_SIZE(code));
-                       return 1;
-               case 0x0a:
-                       tprintf("EVIOCGMTSLOTS(%u)", _IOC_SIZE(code));
-                       return 1;
-               case 0x18:
-                       tprintf("EVIOCGKEY(%u)", _IOC_SIZE(code));
-                       return 1;
-               case 0x19:
-                       tprintf("EVIOCGLED(%u)", _IOC_SIZE(code));
-                       return 1;
-               case 0x1a:
-                       tprintf("EVIOCGSND(%u)", _IOC_SIZE(code));
-                       return 1;
-               case 0x1b:
-                       tprintf("EVIOCGSW(%u)", _IOC_SIZE(code));
-                       return 1;
-               default:
-                       return 0;
+       switch (nr) {
+       case 0x06:
+               tprintf("EVIOCGNAME(%u)", _IOC_SIZE(code));
+               return 1;
+       case 0x07:
+               tprintf("EVIOCGPHYS(%u)", _IOC_SIZE(code));
+               return 1;
+       case 0x08:
+               tprintf("EVIOCGUNIQ(%u)", _IOC_SIZE(code));
+               return 1;
+       case 0x09:
+               tprintf("EVIOCGPROP(%u)", _IOC_SIZE(code));
+               return 1;
+       case 0x0a:
+               tprintf("EVIOCGMTSLOTS(%u)", _IOC_SIZE(code));
+               return 1;
+       case 0x18:
+               tprintf("EVIOCGKEY(%u)", _IOC_SIZE(code));
+               return 1;
+       case 0x19:
+               tprintf("EVIOCGLED(%u)", _IOC_SIZE(code));
+               return 1;
+       case 0x1a:
+               tprintf("EVIOCGSND(%u)", _IOC_SIZE(code));
+               return 1;
+       case 0x1b:
+               tprintf("EVIOCGSW(%u)", _IOC_SIZE(code));
+               return 1;
+       default:
+               return 0;
        }
 }
 
@@ -129,31 +162,34 @@ hiddev_decode_number(const unsigned int code)
 {
        if (_IOC_DIR(code) == _IOC_READ) {
                switch (_IOC_NR(code)) {
-                       case 0x04:
-                               tprintf("HIDIOCGRAWNAME(%u)", _IOC_SIZE(code));
-                               return 1;
-                       case 0x05:
-                               tprintf("HIDIOCGRAWPHYS(%u)", _IOC_SIZE(code));
-                               return 1;
-                       case 0x06:
-                               tprintf("HIDIOCSFEATURE(%u)", _IOC_SIZE(code));
-                               return 1;
-                       case 0x12:
-                               tprintf("HIDIOCGPHYS(%u)", _IOC_SIZE(code));
-                               return 1;
-                       default:
-                               return 0;
+               case 0x04:
+                       tprintf("HIDIOCGRAWNAME(%u)", _IOC_SIZE(code));
+                       return 1;
+               case 0x05:
+                       tprintf("HIDIOCGRAWPHYS(%u)", _IOC_SIZE(code));
+                       return 1;
+               case 0x06:
+                       tprintf("HIDIOCSFEATURE(%u)", _IOC_SIZE(code));
+                       return 1;
+               case 0x08:
+                       tprintf("HIDIOCGRAWUNIQ(%u)", _IOC_SIZE(code));
+                       return 1;
+               case 0x12:
+                       tprintf("HIDIOCGPHYS(%u)", _IOC_SIZE(code));
+                       return 1;
+               default:
+                       return 0;
                }
        } else if (_IOC_DIR(code) == (_IOC_READ | _IOC_WRITE)) {
                switch (_IOC_NR(code)) {
-                       case 0x06:
-                               tprintf("HIDIOCSFEATURE(%u)", _IOC_SIZE(code));
-                               return 1;
-                       case 0x07:
-                               tprintf("HIDIOCGFEATURE(%u)", _IOC_SIZE(code));
-                               return 1;
-                       default:
-                               return 0;
+               case 0x06:
+                       tprintf("HIDIOCSFEATURE(%u)", _IOC_SIZE(code));
+                       return 1;
+               case 0x07:
+                       tprintf("HIDIOCGFEATURE(%u)", _IOC_SIZE(code));
+                       return 1;
+               default:
+                       return 0;
                }
        }
 
@@ -166,39 +202,39 @@ ioctl_decode_command_number(struct tcb *tcp)
        const unsigned int code = tcp->u_arg[1];
 
        switch (_IOC_TYPE(code)) {
-               case 'E':
-                       return evdev_decode_number(code);
-               case 'H':
-                       return hiddev_decode_number(code);
-               case 'M':
-                       if (_IOC_DIR(code) == _IOC_WRITE) {
-                               tprintf("MIXER_WRITE(%u)", _IOC_NR(code));
-                               return 1;
-                       } else if (_IOC_DIR(code) == _IOC_READ) {
-                               tprintf("MIXER_READ(%u)", _IOC_NR(code));
-                               return 1;
-                       }
-                       return 0;
-               case 'U':
-                       if (_IOC_DIR(code) == _IOC_READ && _IOC_NR(code) == 0x2c) {
-                               tprintf("UI_GET_SYSNAME(%u)", _IOC_SIZE(code));
-                               return 1;
-                       }
-                       return 0;
-               case 'j':
-                       if (_IOC_DIR(code) == _IOC_READ && _IOC_NR(code) == 0x13) {
-                               tprintf("JSIOCGNAME(%u)", _IOC_SIZE(code));
-                               return 1;
-                       }
-                       return 0;
-               case 'k':
-                       if (_IOC_DIR(code) == _IOC_WRITE && _IOC_NR(code) == 0) {
-                               tprintf("SPI_IOC_MESSAGE(%u)", _IOC_SIZE(code));
-                               return 1;
-                       }
-                       return 0;
-               default:
-                       return 0;
+       case 'E':
+               return evdev_decode_number(code);
+       case 'H':
+               return hiddev_decode_number(code);
+       case 'M':
+               if (_IOC_DIR(code) == _IOC_WRITE) {
+                       tprintf("MIXER_WRITE(%u)", _IOC_NR(code));
+                       return 1;
+               } else if (_IOC_DIR(code) == _IOC_READ) {
+                       tprintf("MIXER_READ(%u)", _IOC_NR(code));
+                       return 1;
+               }
+               return 0;
+       case 'U':
+               if (_IOC_DIR(code) == _IOC_READ && _IOC_NR(code) == 0x2c) {
+                       tprintf("UI_GET_SYSNAME(%u)", _IOC_SIZE(code));
+                       return 1;
+               }
+               return 0;
+       case 'j':
+               if (_IOC_DIR(code) == _IOC_READ && _IOC_NR(code) == 0x13) {
+                       tprintf("JSIOCGNAME(%u)", _IOC_SIZE(code));
+                       return 1;
+               }
+               return 0;
+       case 'k':
+               if (_IOC_DIR(code) == _IOC_WRITE && _IOC_NR(code) == 0) {
+                       tprintf("SPI_IOC_MESSAGE(%u)", _IOC_SIZE(code));
+                       return 1;
+               }
+               return 0;
+       default:
+               return 0;
        }
 }
 
@@ -236,36 +272,24 @@ ioctl_decode(struct tcb *tcp)
        const kernel_ulong_t arg = tcp->u_arg[2];
 
        switch (_IOC_TYPE(code)) {
-       case '$':
-               return perf_ioctl(tcp, code, arg);
-#if defined(ALPHA) || defined(POWERPC)
-       case 'f': {
-               int ret = file_ioctl(tcp, code, arg);
-               if (ret != RVAL_DECODED)
-                       return ret;
-               ATTRIBUTE_FALLTHROUGH;
-       }
-       case 't':
-       case 'T':
-               return term_ioctl(tcp, code, arg);
-#else /* !ALPHA */
-       case 'f':
-               return file_ioctl(tcp, code, arg);
-       case 0x54:
-#endif /* !ALPHA */
-               return term_ioctl(tcp, code, arg);
-       case 0x89:
-               return sock_ioctl(tcp, code, arg);
-       case 'p':
-               return rtc_ioctl(tcp, code, arg);
        case 0x03:
                return hdio_ioctl(tcp, code, arg);
        case 0x12:
                return block_ioctl(tcp, code, arg);
-       case 'X':
-               return fs_x_ioctl(tcp, code, arg);
-       case 0x22:
+       case '"': /* 0x22 */
                return scsi_ioctl(tcp, code, arg);
+       case '$': /* 0x24 */
+               return perf_ioctl(tcp, code, arg);
+#ifdef HAVE_STRUCT_PTP_SYS_OFFSET
+       case '=': /* 0x3d */
+               return ptp_ioctl(tcp, code, arg);
+#endif
+#ifdef HAVE_LINUX_INPUT_H
+       case 'E':
+               return evdev_ioctl(tcp, code, arg);
+#endif
+       case 'I':
+               return inotify_ioctl(tcp, code, arg);
        case 'L':
                return loop_ioctl(tcp, code, arg);
 #ifdef HAVE_STRUCT_MTD_WRITE_REQ
@@ -273,27 +297,56 @@ ioctl_decode(struct tcb *tcp)
                return mtd_ioctl(tcp, code, arg);
 #endif
 #ifdef HAVE_STRUCT_UBI_ATTACH_REQ_MAX_BEB_PER1024
-       case 'o':
        case 'O':
                return ubi_ioctl(tcp, code, arg);
 #endif
+       case 'R':
+               return random_ioctl(tcp, code, arg);
+       case 'T':
+               return term_ioctl(tcp, code, arg);
        case 'V':
                return v4l2_ioctl(tcp, code, arg);
-#ifdef HAVE_STRUCT_PTP_SYS_OFFSET
-       case '=':
-               return ptp_ioctl(tcp, code, arg);
+       case 'W':
+               return watchdog_ioctl(tcp, code, arg);
+       case 'X':
+               return fs_x_ioctl(tcp, code, arg);
+       case 'f': {
+#if defined(ALPHA) || defined(POWERPC)
+               int ret = file_ioctl(tcp, code, arg);
+               if (ret != RVAL_DECODED)
+                       return ret;
+               return term_ioctl(tcp, code, arg);
+#else /* !(ALPHA || POWERPC) */
+               return file_ioctl(tcp, code, arg);
+#endif /* (ALPHA || POWERPC) */
+       }
+#ifdef HAVE_STRUCT_UBI_ATTACH_REQ_MAX_BEB_PER1024
+       case 'o':
+               return ubi_ioctl(tcp, code, arg);
 #endif
-#ifdef HAVE_LINUX_INPUT_H
-       case 'E':
-               return evdev_ioctl(tcp, code, arg);
+       case 'p':
+               return rtc_ioctl(tcp, code, arg);
+#if defined(ALPHA) || defined(POWERPC)
+       case 't':
+               return term_ioctl(tcp, code, arg);
+#endif /* !ALPHA */
+       case 0x89:
+               return sock_ioctl(tcp, code, arg);
+#ifdef HAVE_LINUX_BTRFS_H
+       case 0x94:
+               return btrfs_ioctl(tcp, code, arg);
 #endif
+       case 0xa4:
+               return tee_ioctl(tcp, code, arg);
 #ifdef HAVE_LINUX_USERFAULTFD_H
        case 0xaa:
                return uffdio_ioctl(tcp, code, arg);
 #endif
-#ifdef HAVE_LINUX_BTRFS_H
-       case 0x94:
-               return btrfs_ioctl(tcp, code, arg);
+       case 0xab:
+               return nbd_ioctl(tcp, code, arg);
+#ifdef HAVE_LINUX_KVM_H
+       case 0xae:
+               return kvm_ioctl(tcp, code, arg);
 #endif
        case 0xb7:
                return nsfs_ioctl(tcp, code, arg);
@@ -301,16 +354,6 @@ ioctl_decode(struct tcb *tcp)
        case 0xfd:
                return dm_ioctl(tcp, code, arg);
 #endif
-#ifdef HAVE_LINUX_KVM_H
-       case 0xae:
-               return kvm_ioctl(tcp, code, arg);
-#endif
-       case 'I':
-               return inotify_ioctl(tcp, code, arg);
-       case 0xab:
-               return nbd_ioctl(tcp, code, arg);
-       case 'R':
-               return random_ioctl(tcp, code, arg);
        default:
                break;
        }
index d4770ef242851e17ff66283ae1fb2e3bfb541c23..5df3eb5e67975c6c6f993e164c99241c4b03a319 100644 (file)
--- a/ioprio.c
+++ b/ioprio.c
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2015 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2014-2019 The strace developers.
+ * Copyright (c) 2014-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -34,13 +34,45 @@ sprint_ioprio(unsigned int ioprio)
        return outstr;
 }
 
+void
+print_ioprio(unsigned int ioprio)
+{
+       if (xlat_verbose(xlat_verbosity) != XLAT_STYLE_ABBREV)
+               tprintf("%#x", ioprio);
+
+       if (xlat_verbose(xlat_verbosity) == XLAT_STYLE_RAW)
+               return;
+
+       const char *str = sprint_ioprio(ioprio);
+
+       (xlat_verbose(xlat_verbosity) == XLAT_STYLE_VERBOSE
+               ? tprints_comment : tprints)(str);
+}
+
+static void
+ioprio_print_who(struct tcb *tcp, int which, int who)
+{
+       switch (which)
+       {
+       case IOPRIO_WHO_PROCESS:
+               printpid(tcp, who, PT_TGID);
+               break;
+       case IOPRIO_WHO_PGRP:
+               printpid(tcp, who, PT_PGID);
+               break;
+       default:
+               tprintf("%d", who);
+               break;
+       }
+}
+
 SYS_FUNC(ioprio_get)
 {
        if (entering(tcp)) {
                /* int which */
                printxval(ioprio_who, tcp->u_arg[0], "IOPRIO_WHO_???");
-               /* int who */
-               tprintf(", %d", (int) tcp->u_arg[1]);
+               tprints(", ");
+               ioprio_print_who(tcp, tcp->u_arg[0], tcp->u_arg[1]);
                return 0;
        } else {
                if (syserror(tcp))
@@ -57,8 +89,9 @@ SYS_FUNC(ioprio_set)
 {
        /* int which */
        printxval(ioprio_who, tcp->u_arg[0], "IOPRIO_WHO_???");
-       /* int who */
-       tprintf(", %d, ", (int) tcp->u_arg[1]);
+       tprints(", ");
+       ioprio_print_who(tcp, tcp->u_arg[0], tcp->u_arg[1]);
+       tprints(", ");
        /* int ioprio */
        if (xlat_verbose(xlat_verbosity) != XLAT_STYLE_ABBREV)
                tprintf("%d", (int) tcp->u_arg[2]);
index b5900e0bc40ec8b8dda174507711cbd9f7bc6e80..1fb5a792092d26a4abee3912f327f87a7473d505 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2003 Roland McGrath <roland@redhat.com>
- * Copyright (c) 2003-2018 The strace developers.
+ * Copyright (c) 2003-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -9,12 +9,50 @@
 #ifndef STRACE_IPC_DEFS_H
 # define STRACE_IPC_DEFS_H
 
-# ifdef HAVE_SYS_IPC_H
-#  include <sys/ipc.h>
-# elif defined HAVE_LINUX_IPC_H
+# ifdef HAVE_LINUX_IPC_H
+#  if defined MPERS_IS_m32
+#   if defined ARCH_M32_SIZEOF_STRUCT_MSQID64_DS && \
+       defined M32_SIZEOF_STRUCT_MSQID64_DS && \
+       ARCH_M32_SIZEOF_STRUCT_MSQID64_DS != M32_SIZEOF_STRUCT_MSQID64_DS
+#    undef HAVE_LINUX_IPC_H
+#   endif
+#  elif defined MPERS_IS_mx32
+#   if defined ARCH_MX32_SIZEOF_STRUCT_MSQID64_DS && \
+       defined MX32_SIZEOF_STRUCT_MSQID64_DS && \
+       ARCH_MX32_SIZEOF_STRUCT_MSQID64_DS != MX32_SIZEOF_STRUCT_MSQID64_DS
+#    undef HAVE_LINUX_IPC_H
+#   endif
+#  else /* !IN_MPERS */
+#   if defined ARCH_SIZEOF_STRUCT_MSQID64_DS && \
+       defined SIZEOF_STRUCT_MSQID64_DS && \
+       ARCH_SIZEOF_STRUCT_MSQID64_DS != SIZEOF_STRUCT_MSQID64_DS
+#    undef HAVE_LINUX_IPC_H
+#   endif
+#  endif
+# endif /* HAVE_LINUX_IPC_H */
+
+# if defined HAVE_LINUX_IPC_H
 #  include <linux/ipc.h>
-/* While glibc uses __key, the kernel uses key. */
-#  define __key key
+#  define MSG_H_PROVIDER "linux/msg.h"
+#  define SEM_H_PROVIDER "linux/sem.h"
+#  define SHM_H_PROVIDER "linux/shm.h"
+#  define NAME_OF_STRUCT_MSQID_DS msqid64_ds
+#  define NAME_OF_STRUCT_SEMID_DS semid64_ds
+#  define NAME_OF_STRUCT_SHMID_DS shmid64_ds
+#  define NAME_OF_STRUCT_SHMINFO shminfo64
+#  define NAME_OF_STRUCT_IPC_PERM_KEY key
+# elif defined HAVE_SYS_IPC_H
+#  include <sys/ipc.h>
+#  define MSG_H_PROVIDER "sys/msg.h"
+#  define SEM_H_PROVIDER "sys/sem.h"
+#  define SHM_H_PROVIDER "sys/shm.h"
+#  define NAME_OF_STRUCT_MSQID_DS msqid_ds
+#  define NAME_OF_STRUCT_SEMID_DS semid_ds
+#  define NAME_OF_STRUCT_SHMID_DS shmid_ds
+#  define NAME_OF_STRUCT_SHMINFO shminfo
+#  define NAME_OF_STRUCT_IPC_PERM_KEY __key
+# else
+#  error Neither <sys/ipc.h> nor <linux/ipc.h> is available
 # endif
 
 # if !defined IPC_64
index d57035570ffa3dc760e3f8e6abc17766817d4703..2541ddeffe22528c26d4345a30d1ad7cfc707724 100644 (file)
--- a/ipc_msg.c
+++ b/ipc_msg.c
@@ -5,7 +5,7 @@
  * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
  * Copyright (c) 2003-2006 Roland McGrath <roland@redhat.com>
  * Copyright (c) 2006-2015 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
 #include "defs.h"
 #include "ipc_defs.h"
 
-#ifdef HAVE_SYS_MSG_H
-# include <sys/msg.h>
-#elif defined HAVE_LINUX_MSG_H
-# include <linux/msg.h>
-#endif
+#include MSG_H_PROVIDER
 
 #include "xlat/ipc_msg_flags.h"
 #include "xlat/ipc_private.h"
index 8c5337cfbb2393caaf46cc2084bb4a7d4b1ae0fe..a1c4122952104d97a5618b6d38337623d22f0b71 100644 (file)
@@ -5,7 +5,7 @@
  * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
  * Copyright (c) 2003-2006 Roland McGrath <roland@redhat.com>
  * Copyright (c) 2006-2015 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
 
 #include "ipc_defs.h"
 
-#ifdef HAVE_SYS_MSG_H
-/* The C library generally exports the struct the current kernel expects. */
-# include <sys/msg.h>
-typedef struct msqid_ds msqid_ds_t;
-#elif defined HAVE_LINUX_MSG_H
-/* The linux header might provide the right struct. */
-# include <linux/msg.h>
-typedef struct msqid64_ds msqid_ds_t;
-#endif
+#include MSG_H_PROVIDER
+typedef struct NAME_OF_STRUCT_MSQID_DS msqid_ds_t;
 
 #include MPERS_DEFS
 
+#include "print_fields.h"
 #include "xlat/msgctl_flags.h"
 
+#define key NAME_OF_STRUCT_IPC_PERM_KEY
+
 static void
-print_msqid_ds(struct tcb *const tcp, const kernel_ulong_t addr, int cmd)
+print_msqid_ds(struct tcb *const tcp, const kernel_ulong_t addr,
+              const unsigned int cmd)
 {
-       /* TODO: We don't properly decode old compat ipc calls. */
-       if (cmd & IPC_64)
-               cmd &= ~IPC_64;
        msqid_ds_t msqid_ds;
-       switch (cmd) {
-       case IPC_SET:
-       case IPC_STAT:
-               if (umove_or_printaddr(tcp, addr, &msqid_ds))
-                       return;
-
-               tprints("{msg_perm={");
-               printuid("uid=", msqid_ds.msg_perm.uid);
-               printuid(", gid=", msqid_ds.msg_perm.gid);
-               tprints(", mode=");
-               print_numeric_umode_t(msqid_ds.msg_perm.mode);
-
-               if (cmd != IPC_STAT) {
-                       tprints("}, ...}");
-                       break;
-               }
 
-               tprintf(", key=%u", (unsigned) msqid_ds.msg_perm.__key);
-               printuid(", cuid=", msqid_ds.msg_perm.cuid);
-               printuid(", cgid=", msqid_ds.msg_perm.cgid);
-               tprints("}");
-               tprintf(", msg_stime=%u", (unsigned) msqid_ds.msg_stime);
-               tprintf(", msg_rtime=%u", (unsigned) msqid_ds.msg_rtime);
-               tprintf(", msg_ctime=%u", (unsigned) msqid_ds.msg_ctime);
-               tprintf(", msg_qnum=%u", (unsigned) msqid_ds.msg_qnum);
-               tprintf(", msg_qbytes=%u", (unsigned) msqid_ds.msg_qbytes);
-               tprintf(", msg_lspid=%u", (unsigned) msqid_ds.msg_lspid);
-               tprintf(", msg_lrpid=%u", (unsigned) msqid_ds.msg_lrpid);
-               tprints("}");
-               break;
-
-       default:
-               printaddr(addr);
-               break;
+       if (umove_or_printaddr(tcp, addr, &msqid_ds))
+               return;
+
+       PRINT_FIELD_UID("{msg_perm={", msqid_ds.msg_perm, uid);
+       PRINT_FIELD_UID(", ", msqid_ds.msg_perm, gid);
+       PRINT_FIELD_NUMERIC_UMODE_T(", ", msqid_ds.msg_perm, mode);
+       if (cmd != IPC_SET) {
+               PRINT_FIELD_U(", ", msqid_ds.msg_perm, key);
+               PRINT_FIELD_UID(", ", msqid_ds.msg_perm, cuid);
+               PRINT_FIELD_UID(", ", msqid_ds.msg_perm, cgid);
        }
+       tprints("}");
+       if (cmd != IPC_SET) {
+               PRINT_FIELD_U(", ", msqid_ds, msg_stime);
+               PRINT_FIELD_U(", ", msqid_ds, msg_rtime);
+               PRINT_FIELD_U(", ", msqid_ds, msg_ctime);
+               PRINT_FIELD_U(", ", msqid_ds, msg_qnum);
+       }
+       PRINT_FIELD_U(", ", msqid_ds, msg_qbytes);
+       if (cmd != IPC_SET) {
+               PRINT_FIELD_D(", ", msqid_ds, msg_lspid);
+               PRINT_FIELD_D(", ", msqid_ds, msg_lrpid);
+       }
+       tprints("}");
+}
+
+static void
+print_msginfo(struct tcb *const tcp, const kernel_ulong_t addr,
+             const unsigned int cmd)
+{
+       struct msginfo info;
+
+       if (umove_or_printaddr(tcp, addr, &info))
+               return;
+
+       PRINT_FIELD_D("{", info, msgpool);
+       PRINT_FIELD_D(", ", info, msgmap);
+       PRINT_FIELD_D(", ", info, msgmax);
+       PRINT_FIELD_D(", ", info, msgmnb);
+       PRINT_FIELD_D(", ", info, msgmni);
+       PRINT_FIELD_D(", ", info, msgssz);
+       PRINT_FIELD_D(", ", info, msgtql);
+       PRINT_FIELD_U(", ", info, msgseg);
+       tprints("}");
 }
 
 SYS_FUNC(msgctl)
 {
+       const kernel_ulong_t addr = tcp->u_arg[indirect_ipccall(tcp) ? 3 : 2];
+       unsigned int cmd = tcp->u_arg[1];
+
+       /* TODO: We don't properly decode old compat ipc calls. */
+       if (cmd & IPC_64)
+               cmd &= ~IPC_64;
+
        if (entering(tcp)) {
                tprintf("%d, ", (int) tcp->u_arg[0]);
                PRINTCTL(msgctl_flags, tcp->u_arg[1], "MSG_???");
                tprints(", ");
+               switch (cmd) {
+               case IPC_SET:
+                       print_msqid_ds(tcp, addr, cmd);
+                       return RVAL_DECODED;
+
+               case IPC_STAT:
+               case MSG_STAT:
+               case MSG_STAT_ANY:
+               case IPC_INFO:
+               case MSG_INFO:
+                       /* decode on exiting */
+                       break;
+
+               default:
+                       printaddr(addr);
+                       return RVAL_DECODED;
+               }
        } else {
-               const kernel_ulong_t addr = tcp->u_arg[indirect_ipccall(tcp) ? 3 : 2];
-               print_msqid_ds(tcp, addr, tcp->u_arg[1]);
+               switch (cmd) {
+               case IPC_STAT:
+               case MSG_STAT:
+               case MSG_STAT_ANY:
+                       print_msqid_ds(tcp, addr, cmd);
+                       break;
+
+               case IPC_INFO:
+               case MSG_INFO:
+                       print_msginfo(tcp, addr, cmd);
+                       break;
+               }
        }
        return 0;
 }
index 0be29666527ba70fbd69ce9e1eb27bb3fb37f88b..b30aa56c8ac9639aca9885cc88777aa83c733968 100644 (file)
--- a/ipc_sem.c
+++ b/ipc_sem.c
@@ -5,7 +5,7 @@
  * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
  * Copyright (c) 2003-2006 Roland McGrath <roland@redhat.com>
  * Copyright (c) 2006-2015 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2019 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
 #include "defs.h"
 #include "ipc_defs.h"
 
-#ifdef HAVE_SYS_SEM_H
-# include <sys/sem.h>
-#elif defined HAVE_LINUX_SEM_H
-# include <linux/sem.h>
-#endif
+#include SEM_H_PROVIDER
 
-#include "xlat/semctl_flags.h"
 #include "xlat/semop_flags.h"
 
-#if defined HAVE_SYS_SEM_H || defined HAVE_LINUX_SEM_H
 static bool
 print_sembuf(struct tcb *tcp, void *elem_buf, size_t elem_size, void *data)
 {
@@ -35,19 +29,14 @@ print_sembuf(struct tcb *tcp, void *elem_buf, size_t elem_size, void *data)
 
        return true;
 }
-#endif
 
 static void
 tprint_sembuf_array(struct tcb *const tcp, const kernel_ulong_t addr,
                    const unsigned int count)
 {
-#if defined HAVE_SYS_SEM_H || defined HAVE_LINUX_SEM_H
        struct sembuf sb;
        print_array(tcp, addr, count, &sb, sizeof(sb),
                    tfetch_mem, print_sembuf, 0);
-#else
-       printaddr(addr);
-#endif
        tprintf(", %u", count);
 }
 
@@ -103,20 +92,3 @@ SYS_FUNC(semget)
        print_numeric_umode_t(tcp->u_arg[2] & 0777);
        return RVAL_DECODED;
 }
-
-SYS_FUNC(semctl)
-{
-       tprintf("%d, %d, ", (int) tcp->u_arg[0], (int) tcp->u_arg[1]);
-       PRINTCTL(semctl_flags, tcp->u_arg[2], "SEM_???");
-       tprints(", ");
-       if (indirect_ipccall(tcp)
-#ifdef SPARC64
-           && current_personality != 0
-#endif
-          ) {
-               printnum_ptr(tcp, tcp->u_arg[3]);
-       } else {
-               printaddr(tcp->u_arg[3]);
-       }
-       return RVAL_DECODED;
-}
diff --git a/ipc_semctl.c b/ipc_semctl.c
new file mode 100644 (file)
index 0000000..efff6f3
--- /dev/null
@@ -0,0 +1,160 @@
+/*
+ * Copyright (c) 1993 Ulrich Pegelow <pegelow@moorea.uni-muenster.de>
+ * Copyright (c) 1993 Branko Lankester <branko@hacktic.nl>
+ * Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com>
+ * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
+ * Copyright (c) 2003-2006 Roland McGrath <roland@redhat.com>
+ * Copyright (c) 2006-2015 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#include "defs.h"
+
+#include DEF_MPERS_TYPE(semid_ds_t)
+#include DEF_MPERS_TYPE(semun_ptr_t)
+
+#include "ipc_defs.h"
+
+#include SEM_H_PROVIDER
+
+typedef struct NAME_OF_STRUCT_SEMID_DS semid_ds_t;
+typedef kernel_ulong_t semun_ptr_t;
+
+#include MPERS_DEFS
+
+#include "print_fields.h"
+#include "xlat/semctl_flags.h"
+
+#define key NAME_OF_STRUCT_IPC_PERM_KEY
+
+static void
+print_semid_ds(struct tcb *const tcp, const kernel_ulong_t addr,
+              const unsigned int cmd, const bool indirect_addr)
+{
+       semid_ds_t ds;
+
+       if (!tfetch_mem(tcp, addr, sizeof(ds), &ds)) {
+               if (indirect_addr)
+                       tprints("[");
+               printaddr(addr);
+               if (indirect_addr)
+                       tprints("]");
+               return;
+       }
+
+       PRINT_FIELD_UID("{sem_perm={", ds.sem_perm, uid);
+       PRINT_FIELD_UID(", ", ds.sem_perm, gid);
+       PRINT_FIELD_NUMERIC_UMODE_T(", ", ds.sem_perm, mode);
+       if (cmd != IPC_SET) {
+               PRINT_FIELD_U(", ", ds.sem_perm, key);
+               PRINT_FIELD_UID(", ", ds.sem_perm, cuid);
+               PRINT_FIELD_UID(", ", ds.sem_perm, cgid);
+       }
+       tprints("}");
+       if (cmd != IPC_SET) {
+               PRINT_FIELD_U(", ", ds, sem_otime);
+               PRINT_FIELD_U(", ", ds, sem_ctime);
+               PRINT_FIELD_U(", ", ds, sem_nsems);
+       }
+       tprints("}");
+}
+
+static void
+print_seminfo(struct tcb *const tcp, const kernel_ulong_t addr,
+             const unsigned int cmd, const bool indirect_addr)
+{
+       struct seminfo info;
+
+       if (umove_or_printaddr(tcp, addr, &info))
+               return;
+       if (!tfetch_mem(tcp, addr, sizeof(info), &info)) {
+               if (indirect_addr)
+                       tprints("[");
+               printaddr(addr);
+               if (indirect_addr)
+                       tprints("]");
+               return;
+       }
+
+       PRINT_FIELD_D("{", info, semmap);
+       PRINT_FIELD_D(", ", info, semmni);
+       PRINT_FIELD_D(", ", info, semmns);
+       PRINT_FIELD_D(", ", info, semmnu);
+       PRINT_FIELD_D(", ", info, semmsl);
+       PRINT_FIELD_D(", ", info, semopm);
+       PRINT_FIELD_D(", ", info, semume);
+       PRINT_FIELD_D(", ", info, semusz);
+       PRINT_FIELD_D(", ", info, semvmx);
+       PRINT_FIELD_D(", ", info, semaem);
+       tprints("}");
+}
+
+SYS_FUNC(semctl)
+{
+       kernel_ulong_t addr;
+       unsigned int cmd = tcp->u_arg[2];
+       const bool indirect_addr = indirect_ipccall(tcp)
+#ifdef SPARC64
+                   && current_personality != 0
+#endif
+                   ;
+
+       /* TODO: We don't properly decode old compat ipc calls. */
+       if (cmd & IPC_64)
+               cmd &= ~IPC_64;
+
+       if (entering(tcp)) {
+               tprintf("%d, %d, ", (int) tcp->u_arg[0], (int) tcp->u_arg[1]);
+               PRINTCTL(semctl_flags, tcp->u_arg[2], "SEM_???");
+               tprints(", ");
+
+               if (indirect_addr) {
+                       semun_ptr_t ptr;
+                       if (umove_or_printaddr(tcp, tcp->u_arg[3], &ptr))
+                               return RVAL_DECODED;
+                       addr = ptr;
+               } else {
+                       addr = tcp->u_arg[3];
+               }
+               switch (cmd) {
+               case IPC_SET:
+                       print_semid_ds(tcp, addr, cmd, indirect_addr);
+                       return RVAL_DECODED;
+
+               case IPC_STAT:
+               case SEM_STAT:
+               case SEM_STAT_ANY:
+               case IPC_INFO:
+               case SEM_INFO:
+                       /* decode on exiting */
+                       set_tcb_priv_ulong(tcp, addr);
+                       break;
+
+               default:
+                       if (indirect_addr)
+                               tprints("[");
+                       printaddr(addr);
+                       if (indirect_addr)
+                               tprints("]");
+                       return RVAL_DECODED;
+               }
+       } else {
+               addr = get_tcb_priv_ulong(tcp);
+               switch (cmd) {
+               case IPC_STAT:
+               case SEM_STAT:
+               case SEM_STAT_ANY:
+                       print_semid_ds(tcp, addr, cmd, indirect_addr);
+                       break;
+
+               case IPC_INFO:
+               case SEM_INFO:
+                       print_seminfo(tcp, addr, cmd, indirect_addr);
+                       break;
+               }
+       }
+       return 0;
+}
index b54cd8c4bd459e04d5bc108a7094588f2e585dd1..b5e7878d6fafab21d56c52af93af450d6cdaf19f 100644 (file)
--- a/ipc_shm.c
+++ b/ipc_shm.c
@@ -5,19 +5,16 @@
  * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
  * Copyright (c) 2003-2006 Roland McGrath <roland@redhat.com>
  * Copyright (c) 2006-2015 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
  */
 
 #include "defs.h"
+#include "ipc_defs.h"
 
-#ifdef HAVE_SYS_SHM_H
-# include <sys/shm.h>
-#elif defined HAVE_LINUX_SHM_H
-# include <linux/shm.h>
-#endif
+#include SHM_H_PROVIDER
 
 #ifndef SHM_HUGE_SHIFT
 # define SHM_HUGE_SHIFT 26
index 25f44716f6b6a8883acc9439130376e3679e1973..c898233292aaf9527212b7ef6b28fae27d1bf6f6 100644 (file)
@@ -5,7 +5,7 @@
  * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
  * Copyright (c) 2003-2006 Roland McGrath <roland@redhat.com>
  * Copyright (c) 2006-2015 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
 #include "defs.h"
 
 #include DEF_MPERS_TYPE(shmid_ds_t)
+#include DEF_MPERS_TYPE(struct_shm_info_t)
+#include DEF_MPERS_TYPE(struct_shm_ipc_info_t)
 
 #include "ipc_defs.h"
 
-#ifdef HAVE_SYS_SHM_H
-/* The C library generally exports the struct the current kernel expects. */
-# include <sys/shm.h>
-typedef struct shmid_ds shmid_ds_t;
-#elif defined HAVE_LINUX_SHM_H
-/* The linux header might provide the right struct. */
-# include <linux/shm.h>
-typedef struct shmid64_ds shmid_ds_t;
-#endif
+#include SHM_H_PROVIDER
+typedef struct NAME_OF_STRUCT_SHMID_DS shmid_ds_t;
+typedef struct shm_info struct_shm_info_t;
+typedef struct NAME_OF_STRUCT_SHMINFO struct_shm_ipc_info_t;
 
 #include MPERS_DEFS
 
+#include "print_fields.h"
 #include "xlat/shmctl_flags.h"
 
+#define key NAME_OF_STRUCT_IPC_PERM_KEY
+
 static void
-print_shmid_ds(struct tcb *const tcp, const kernel_ulong_t addr, int cmd)
+print_shmid_ds(struct tcb *const tcp, const kernel_ulong_t addr,
+              const unsigned int cmd)
 {
-       /* TODO: We don't properly decode old compat ipc calls. */
-       if (cmd & IPC_64)
-               cmd &= ~IPC_64;
        shmid_ds_t shmid_ds;
-       switch (cmd) {
-       case IPC_SET:
-       case IPC_STAT:
-               if (umove_or_printaddr(tcp, addr, &shmid_ds))
-                       return;
-
-               tprints("{shm_perm={");
-               printuid("uid=", shmid_ds.shm_perm.uid);
-               printuid(", gid=", shmid_ds.shm_perm.gid);
-               tprints(", mode=");
-               print_numeric_umode_t(shmid_ds.shm_perm.mode);
-
-               if (cmd != IPC_STAT) {
-                       tprints("}, ...}");
-                       break;
-               }
 
-               tprintf(", key=%u", (unsigned) shmid_ds.shm_perm.__key);
-               printuid(", cuid=", shmid_ds.shm_perm.cuid);
-               printuid(", cgid=", shmid_ds.shm_perm.cgid);
-               tprints("}");
-               tprintf(", shm_segsz=%u", (unsigned) shmid_ds.shm_segsz);
-               tprintf(", shm_cpid=%u", (unsigned) shmid_ds.shm_cpid);
-               tprintf(", shm_lpid=%u", (unsigned) shmid_ds.shm_lpid);
-               tprintf(", shm_nattch=%u", (unsigned) shmid_ds.shm_nattch);
-               tprintf(", shm_atime=%u", (unsigned) shmid_ds.shm_atime);
-               tprintf(", shm_dtime=%u", (unsigned) shmid_ds.shm_dtime);
-               tprintf(", shm_ctime=%u", (unsigned) shmid_ds.shm_ctime);
-               tprints("}");
-               break;
-
-       default:
-               printaddr(addr);
-               break;
+       if (umove_or_printaddr(tcp, addr, &shmid_ds))
+               return;
+
+       PRINT_FIELD_UID("{shm_perm={", shmid_ds.shm_perm, uid);
+       PRINT_FIELD_UID(", ", shmid_ds.shm_perm, gid);
+       PRINT_FIELD_NUMERIC_UMODE_T(", ", shmid_ds.shm_perm, mode);
+
+       if (cmd != IPC_SET) {
+               PRINT_FIELD_U(", ", shmid_ds.shm_perm, key);
+               PRINT_FIELD_UID(", ", shmid_ds.shm_perm, cuid);
+               PRINT_FIELD_UID(", ", shmid_ds.shm_perm, cgid);
+       }
+       tprints("}");
+       if (cmd != IPC_SET) {
+               PRINT_FIELD_U(", ", shmid_ds, shm_segsz);
+               PRINT_FIELD_TGID(", ", shmid_ds, shm_cpid, tcp);
+               PRINT_FIELD_TGID(", ", shmid_ds, shm_lpid, tcp);
+               PRINT_FIELD_U(", ", shmid_ds, shm_nattch);
+               PRINT_FIELD_U(", ", shmid_ds, shm_atime);
+               PRINT_FIELD_U(", ", shmid_ds, shm_dtime);
+               PRINT_FIELD_U(", ", shmid_ds, shm_ctime);
        }
+       tprints("}");
+}
+
+static void
+print_ipc_info(struct tcb *const tcp, const kernel_ulong_t addr,
+              const unsigned int cmd)
+{
+       struct_shm_ipc_info_t info;
+
+       if (umove_or_printaddr(tcp, addr, &info))
+               return;
+
+       PRINT_FIELD_U("{", info, shmmax);
+       PRINT_FIELD_U(", ", info, shmmin);
+       PRINT_FIELD_U(", ", info, shmmni);
+       PRINT_FIELD_U(", ", info, shmseg);
+       PRINT_FIELD_U(", ", info, shmall);
+       tprints("}");
+}
+
+static void
+print_shm_info(struct tcb *const tcp, const kernel_ulong_t addr,
+              const unsigned int cmd)
+{
+       struct_shm_info_t info;
+
+       if (umove_or_printaddr(tcp, addr, &info))
+               return;
+
+       PRINT_FIELD_D("{", info, used_ids);
+       PRINT_FIELD_U(", ", info, shm_tot);
+       PRINT_FIELD_U(", ", info, shm_rss);
+       PRINT_FIELD_U(", ", info, shm_swp);
+       PRINT_FIELD_U(", ", info, swap_attempts);
+       PRINT_FIELD_U(", ", info, swap_successes);
+       tprints("}");
 }
 
 SYS_FUNC(shmctl)
 {
+       const kernel_ulong_t addr = tcp->u_arg[indirect_ipccall(tcp) ? 3 : 2];
+       unsigned int cmd = tcp->u_arg[1];
+
+       /* TODO: We don't properly decode old compat ipc calls. */
+       if (cmd & IPC_64)
+               cmd &= ~IPC_64;
+
        if (entering(tcp)) {
                tprintf("%d, ", (int) tcp->u_arg[0]);
                PRINTCTL(shmctl_flags, tcp->u_arg[1], "SHM_???");
                tprints(", ");
+               switch (cmd) {
+               case IPC_SET:
+                       print_shmid_ds(tcp, addr, cmd);
+                       return RVAL_DECODED;
+
+               case IPC_STAT:
+               case SHM_STAT:
+               case SHM_STAT_ANY:
+               case IPC_INFO:
+               case SHM_INFO:
+                       /* decode on exiting */
+                       break;
+
+               default:
+                       printaddr(addr);
+                       return RVAL_DECODED;
+               }
        } else {
-               const kernel_ulong_t addr = tcp->u_arg[indirect_ipccall(tcp) ? 3 : 2];
-               print_shmid_ds(tcp, addr, tcp->u_arg[1]);
+               switch (cmd) {
+               case IPC_STAT:
+               case SHM_STAT:
+               case SHM_STAT_ANY:
+                       print_shmid_ds(tcp, addr, cmd);
+                       break;
+
+               case IPC_INFO:
+                       print_ipc_info(tcp, addr, cmd);
+                       break;
+
+               case SHM_INFO:
+                       print_shm_info(tcp, addr, cmd);
+                       break;
+               }
        }
        return 0;
 }
diff --git a/kcmp.c b/kcmp.c
index 6722d77429fe68833de39a90587d14f380562460..a5e1cdcebd402529dcff431666095e98b983c7b9 100644 (file)
--- a/kcmp.c
+++ b/kcmp.c
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2015 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -16,20 +16,10 @@ struct strace_kcmp_epoll_slot {
        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_);            \
+               printfd_pid_tracee_ns((tcp_), (pid_), (where_).field_);         \
        } while (0)
 
 SYS_FUNC(kcmp)
@@ -40,15 +30,18 @@ SYS_FUNC(kcmp)
        kernel_ulong_t idx1 = tcp->u_arg[3];
        kernel_ulong_t idx2 = tcp->u_arg[4];
 
-       tprintf("%d, %d, ", pid1, pid2);
+       printpid(tcp, pid1, PT_TGID);
+       tprints(", ");
+       printpid(tcp, pid2, PT_TGID);
+       tprints(", ");
        printxval(kcmp_types, type, "KCMP_???");
 
        switch (type) {
                case KCMP_FILE:
                        tprints(", ");
-                       printpidfd(tcp, pid1, idx1);
+                       printfd_pid_tracee_ns(tcp, pid1, idx1);
                        tprints(", ");
-                       printpidfd(tcp, pid1, idx2);
+                       printfd_pid_tracee_ns(tcp, pid2, idx2);
 
                        break;
 
@@ -56,7 +49,7 @@ SYS_FUNC(kcmp)
                        struct strace_kcmp_epoll_slot slot;
 
                        tprints(", ");
-                       printpidfd(tcp, pid1, idx1);
+                       printfd_pid_tracee_ns(tcp, pid1, idx1);
                        tprints(", ");
 
                        if (umove_or_printaddr(tcp, idx2, &slot))
diff --git a/kernel_dirent.h b/kernel_dirent.h
new file mode 100644 (file)
index 0000000..ee4afdb
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2015 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#ifndef STRACE_KERNEL_DIRENT_H
+# define STRACE_KERNEL_DIRENT_H
+
+# include "kernel_types.h"
+
+typedef struct {
+       kernel_ulong_t  d_ino;
+       kernel_ulong_t  d_off;
+       unsigned short  d_reclen;
+       char            d_name[1];
+} kernel_dirent_t;
+
+typedef struct {
+       uint64_t        d_ino;
+       uint64_t        d_off;
+       unsigned short  d_reclen;
+       unsigned char   d_type;
+       char            d_name[1];
+} kernel_dirent64_t;
+
+#endif /* !STRACE_KERNEL_DIRENT_H */
diff --git a/kernel_rusage.h b/kernel_rusage.h
new file mode 100644 (file)
index 0000000..c9028cb
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 1999-2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#ifndef STRACE_KERNEL_RUSAGE_H
+# define STRACE_KERNEL_RUSAGE_H
+
+# include "kernel_timeval.h"
+
+typedef struct {
+       kernel_old_timeval_t    ru_utime;
+       kernel_old_timeval_t    ru_stime;
+       kernel_long_t           ru_maxrss;
+       kernel_long_t           ru_ixrss;
+       kernel_long_t           ru_idrss;
+       kernel_long_t           ru_isrss;
+       kernel_long_t           ru_minflt;
+       kernel_long_t           ru_majflt;
+       kernel_long_t           ru_nswap;
+       kernel_long_t           ru_inblock;
+       kernel_long_t           ru_oublock;
+       kernel_long_t           ru_msgsnd;
+       kernel_long_t           ru_msgrcv;
+       kernel_long_t           ru_nsignals;
+       kernel_long_t           ru_nvcsw;
+       kernel_long_t           ru_nivcsw;
+} kernel_rusage_t;
+
+#endif /* !STRACE_KERNEL_RUSAGE_H */
index 99fb2c6c8a2489f9824c7a8bf2b6b755e2d6f250..af65638157cf0260aa7802406d5fd1cf8e021461 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2019-2020 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -13,13 +13,13 @@ typedef struct {
        long long tv_nsec;
 } kernel_timespec64_t;
 
-# if HAVE_ARCH_TIME32_SYSCALLS
+# if HAVE_ARCH_TIME32_SYSCALLS || HAVE_ARCH_TIMESPEC32
 
 typedef struct {
        int tv_sec;
        int tv_nsec;
 } kernel_timespec32_t;
 
-# endif /* HAVE_ARCH_TIME32_SYSCALLS */
+# endif /* HAVE_ARCH_TIME32_SYSCALLS || HAVE_ARCH_TIMESPEC32 */
 
 #endif /* !STRACE_KERNEL_TIMESPEC_H */
index 4170937aec65646c5b2b109f1245f089ed7d619b..7a3dc1b2cfca2189161d79aa5bee8cb3c5d2e3a4 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2019-2020 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -8,9 +8,20 @@
 #ifndef STRACE_KERNEL_TIMEVAL_H
 # define STRACE_KERNEL_TIMEVAL_H
 
+# include "kernel_types.h"
+
 typedef struct {
        long long tv_sec;
        long long tv_usec;
 } kernel_timeval64_t;
 
+typedef struct {
+       kernel_long_t tv_sec;
+# if defined __sparc__ && defined __arch64__
+       int tv_usec;
+# else
+       kernel_long_t tv_usec;
+# endif
+} kernel_old_timeval_t;
+
 #endif /* !STRACE_KERNEL_TIMEVAL_H */
index a597e3539f380400f03aa3e46f4bd77014b84cf3..11b29e02de2390c20ae69aa165c539b0eff483e2 100644 (file)
@@ -37,7 +37,7 @@ typedef struct {
        int pad3[11];
 } kernel_timex64_t;
 
-#ifdef SPARC64
+# ifdef SPARC64
 
 typedef struct {
        unsigned int modes;
@@ -69,7 +69,7 @@ typedef struct {
        int pad3[11];
 } kernel_sparc64_timex_t;
 
-#endif /* SPARC64 */
+# endif /* SPARC64 */
 
 # if HAVE_ARCH_TIME32_SYSCALLS
 
index f7c2aedb0659a6fc33d7bbb793e6cf74c6d18c1b..d308a0ea247228ad7347b80c37a06fc160c40ee1 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2015 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -28,13 +28,6 @@ typedef unsigned long kernel_ulong_t;
 
 # endif
 
-typedef struct {
-       kernel_ulong_t  d_ino;
-       kernel_ulong_t  d_off;
-       unsigned short  d_reclen;
-       char            d_name[1];
-} kernel_dirent;
-
 # if SIZEOF_KERNEL_LONG_T > SIZEOF_LONG
 #  define PRI_kl "ll"
 # else
diff --git a/kernel_v4l2_types.h b/kernel_v4l2_types.h
new file mode 100644 (file)
index 0000000..c6aee55
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2020 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#ifndef STRACE_KERNEL_V4L2_BUFFER_H
+# define STRACE_KERNEL_V4L2_BUFFER_H
+
+# include "types/v4l2.h"
+# include "kernel_timeval.h"
+# include "kernel_timespec.h"
+
+# if defined __sparc__ && defined __arch64__
+typedef struct {
+       long long tv_sec;
+       int tv_usec;
+       int pad;
+} kernel_v4l2_timeval_t;
+# else
+typedef kernel_timeval64_t kernel_v4l2_timeval_t;
+# endif
+
+typedef struct {
+       uint32_t                        index;
+       uint32_t                        type;
+       uint32_t                        bytesused;
+       uint32_t                        flags;
+       uint32_t                        field;
+       kernel_v4l2_timeval_t           timestamp;
+       struct v4l2_timecode            timecode;
+       uint32_t                        sequence;
+       uint32_t                        memory;
+       union {
+               uint32_t                offset;
+               unsigned long           userptr;
+               struct v4l2_plane       *planes;
+               int32_t                 fd;
+       } m;
+       uint32_t                        length;
+       uint32_t                        reserved2;
+       union {
+               int32_t                 request_fd;
+               uint32_t                reserved;
+       };
+} kernel_v4l2_buffer_t;
+
+typedef struct {
+       uint32_t                                type;
+       union {
+               uint64_t                        data[8];
+       } u;
+       uint32_t                                pending;
+       uint32_t                                sequence;
+       kernel_timespec64_t                     timestamp;
+       uint32_t                                id;
+       uint32_t                                reserved[8];
+} kernel_v4l2_event_t;
+
+#endif /* !STRACE_KERNEL_V4L2_BUFFER_H */
index e880410c1adcaebafbd39f7510d6348a972c26f5..0333e56bcc744cdcc9bfdba1e6473402f9010583 100644 (file)
--- a/keyctl.c
+++ b/keyctl.c
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2014-2015 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2014-2018 The strace developers.
+ * Copyright (c) 2014-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
 #include "keyctl_kdf_params.h"
 #include "print_fields.h"
 
-typedef int32_t key_serial_t;
-
+#include "xlat/key_perms.h"
+#include "xlat/key_reqkeys.h"
 #include "xlat/key_spec.h"
+#include "xlat/keyctl_caps0.h"
+#include "xlat/keyctl_caps1.h"
+#include "xlat/keyctl_commands.h"
+#include "xlat/keyctl_move_flags.h"
+#include "xlat/keyctl_pkey_ops.h"
+
+
+typedef int32_t key_serial_t;
 
 struct keyctl_dh_params {
        int32_t private;
@@ -21,6 +29,27 @@ struct keyctl_dh_params {
        int32_t base;
 };
 
+struct keyctl_pkey_query {
+       uint32_t supported_ops;
+       uint32_t key_size;
+       uint16_t max_data_size;
+       uint16_t max_sig_size;
+       uint16_t max_enc_size;
+       uint16_t max_dec_size;
+       uint32_t __spare[10];
+};
+
+struct keyctl_pkey_params {
+       int32_t  key_id;
+       uint32_t in_len;
+       union {
+               uint32_t out_len;
+               uint32_t in2_len;
+       };
+       uint32_t __spare[7];
+};
+
+
 static void
 print_keyring_serial_number(key_serial_t id)
 {
@@ -166,11 +195,9 @@ static void
 keyctl_reject_key(struct tcb *tcp, key_serial_t id1, unsigned timeout,
                  unsigned error, key_serial_t id2)
 {
-       const char *err_str = err_name(error);
-
        print_keyring_serial_number(id1);
        tprintf(", %u, ", timeout);
-       print_xlat_ex(error, err_str, XLAT_STYLE_FMT_U);
+       print_err(error, false);
        tprints(", ");
        print_keyring_serial_number(id2);
 }
@@ -190,8 +217,6 @@ keyctl_get_persistent(struct tcb *tcp, unsigned uid, key_serial_t id)
        print_keyring_serial_number(id);
 }
 
-#include "xlat/key_perms.h"
-
 static void
 keyctl_setperm_key(struct tcb *tcp, key_serial_t id, uint32_t perm)
 {
@@ -240,8 +265,6 @@ keyctl_dh_compute(struct tcb *tcp, kernel_ulong_t params, kernel_ulong_t buf,
                if (fetch_keyctl_kdf_params(tcp, kdf_addr, &kdf)) {
                        printaddr(kdf_addr);
                } else {
-                       size_t i;
-
                        PRINT_FIELD_STR("{", kdf, hashname, tcp);
 
                        /*
@@ -256,28 +279,129 @@ keyctl_dh_compute(struct tcb *tcp, kernel_ulong_t params, kernel_ulong_t buf,
 
                        PRINT_FIELD_U(", ", kdf, otherinfolen);
 
-                       /* Some future-proofing */
-                       for (i = 0; i < ARRAY_SIZE(kdf.__spare); i++) {
-                               if (kdf.__spare[i])
-                                       break;
+                       if (!IS_ARRAY_ZERO(kdf.__spare)) {
+                               PRINT_FIELD_ARRAY(", ", kdf, __spare, tcp,
+                                                 print_xint32_array_member);
                        }
 
-                       if (i < ARRAY_SIZE(kdf.__spare)) {
-                               tprints(", __spare=[");
+                       tprints("}");
+               }
+       }
+}
 
-                               for (i = 0; i < ARRAY_SIZE(kdf.__spare); i++) {
-                                       if (i)
-                                               tprints(", ");
+static void
+print_pkey_query(struct tcb *tcp, kernel_ulong_t addr)
+{
+       struct keyctl_pkey_query query;
 
-                                       tprintf("%#x", kdf.__spare[i]);
-                               }
+       if (umove_or_printaddr(tcp, addr, &query))
+               return;
 
-                               tprints("]");
-                       }
+       PRINT_FIELD_FLAGS("{", query, supported_ops, keyctl_pkey_ops,
+                         "KEYCTL_SUPPORTS_???");
+       PRINT_FIELD_U(", ", query, key_size);
+       PRINT_FIELD_U(", ", query, max_data_size);
+       PRINT_FIELD_U(", ", query, max_sig_size);
+       PRINT_FIELD_U(", ", query, max_enc_size);
+       PRINT_FIELD_U(", ", query, max_dec_size);
+
+       if (!IS_ARRAY_ZERO(query.__spare)) {
+               PRINT_FIELD_ARRAY(", ", query, __spare, tcp,
+                                 print_xint32_array_member);
+       }
 
-                       tprints("}");
+       tprints("}");
+}
+
+static void
+keyctl_pkey_query(struct tcb *const tcp,
+                 const key_serial_t id,
+                 const kernel_ulong_t reserved,
+                 const kernel_ulong_t /* char * */ info,
+                 const kernel_ulong_t /* keyctl_pkey_query * */ res)
+{
+       if (entering(tcp)) {
+               print_keyring_serial_number(id);
+               tprints(", ");
+               tprintf("%#" PRI_klx, reserved);
+               tprints(", ");
+               printstr(tcp, info);
+               tprints(", ");
+       } else {
+               print_pkey_query(tcp, res);
+       }
+}
+
+static bool
+fetch_print_pkey_params(struct tcb *tcp, kernel_ulong_t addr,
+                       struct keyctl_pkey_params *params, bool out)
+{
+       if (umove_or_printaddr(tcp, addr, params))
+               return false;
+
+       tprints("{key_id=");
+       print_keyring_serial_number(params->key_id);
+
+       PRINT_FIELD_U(", ", *params, in_len);
+
+       if (out)
+               PRINT_FIELD_U(", ", *params, out_len);
+       else
+               PRINT_FIELD_U(", ", *params, in2_len);
+
+       if (!IS_ARRAY_ZERO(params->__spare)) {
+               PRINT_FIELD_ARRAY(", ", *params, __spare, tcp,
+                                 print_xint32_array_member);
+       }
+
+       tprints("}");
+
+       return true;
+}
+
+static int
+keyctl_pkey_op(struct tcb *const tcp,
+              const kernel_ulong_t /* keyctl_pkey_params * */ params_addr,
+              const kernel_ulong_t /* char * */ info,
+              const kernel_ulong_t /* void * */ op1,
+              const kernel_ulong_t /* void * */ op2,
+              bool out)
+{
+       if (entering(tcp)) {
+               struct keyctl_pkey_params params;
+               bool ret;
+
+               ret = fetch_print_pkey_params(tcp, params_addr, &params, out);
+               if (ret && out)
+                       set_tcb_priv_ulong(tcp, params.out_len);
+
+               tprints(", ");
+               printstr(tcp, info);
+               tprints(", ");
+               if (ret)
+                       printstrn(tcp, op1, params.in_len);
+               else
+                       printaddr(op1);
+               tprints(", ");
+
+               if (!out || !ret) {
+                       if (ret)
+                               printstrn(tcp, op2, params.in2_len);
+                       else
+                               printaddr(op2);
                }
+
+               return ret && out ? 0 : RVAL_DECODED;
+       } else {
+               unsigned long out_len = get_tcb_priv_ulong(tcp);
+
+               if (syserror(tcp))
+                       printaddr(op2);
+               else
+                       printstrn(tcp, op2, out_len);
        }
+
+       return 0;
 }
 
 static void
@@ -293,8 +417,67 @@ keyctl_restrict_keyring(struct tcb *const tcp,
        printstr(tcp, addr2);
 }
 
-#include "xlat/key_reqkeys.h"
-#include "xlat/keyctl_commands.h"
+static void
+keyctl_move(struct tcb *const tcp,
+           const key_serial_t id,
+           const key_serial_t from,
+           const key_serial_t to,
+           const unsigned int flags)
+{
+       print_keyring_serial_number(id);
+       tprints(", ");
+       print_keyring_serial_number(from);
+       tprints(", ");
+       print_keyring_serial_number(to);
+       tprints(", ");
+       printflags(keyctl_move_flags, flags, "KEYCTL_MOVE_???");
+}
+
+bool
+print_keyctl_caps(struct tcb *tcp, void *elem_buf, size_t elem_size, void *data)
+{
+       static const struct {
+               const struct xlat *xlat;
+               const char *dflt;
+       } caps[] = {
+               { keyctl_caps0, "KEYCTL_CAPS0_???" },
+               { keyctl_caps1, "KEYCTL_CAPS1_???" },
+       };
+
+       kernel_ulong_t *pos = data;
+       unsigned char *elem = elem_buf;
+
+       if (*pos < ARRAY_SIZE(caps))
+               printflags(caps[*pos].xlat, *elem, caps[*pos].dflt);
+       else
+               tprintf("%#hhx", *elem);
+
+       (*pos)++;
+
+       return true;
+}
+
+static void
+keyctl_capabilities(struct tcb *const tcp,
+                   const kernel_ulong_t /* char * */ buf,
+                   const kernel_ulong_t buflen)
+{
+       kernel_ulong_t pos = 0;
+       unsigned char elem;
+
+       if (entering(tcp))
+               return;
+
+       if (syserror(tcp)) {
+               printaddr(buf);
+       } else {
+               print_array(tcp, buf, MIN(buflen, (kernel_ulong_t) tcp->u_rval),
+                           &elem, sizeof(elem),
+                           tfetch_mem, print_keyctl_caps, &pos);
+       }
+
+       tprintf(", %" PRI_klu, buflen);
+}
 
 SYS_FUNC(keyctl)
 {
@@ -394,10 +577,31 @@ SYS_FUNC(keyctl)
                keyctl_dh_compute(tcp, arg2, arg3, arg4, arg5);
                return 0;
 
+       case KEYCTL_PKEY_QUERY:
+               keyctl_pkey_query(tcp, arg2, arg3, arg4, arg5);
+               return 0;
+
+       case KEYCTL_PKEY_ENCRYPT:
+       case KEYCTL_PKEY_DECRYPT:
+       case KEYCTL_PKEY_SIGN:
+               return keyctl_pkey_op(tcp, arg2, arg3, arg4, arg5, true);
+
+       case KEYCTL_PKEY_VERIFY:
+               keyctl_pkey_op(tcp, arg2, arg3, arg4, arg5, false);
+               break;
+
        case KEYCTL_RESTRICT_KEYRING:
                keyctl_restrict_keyring(tcp, arg2, arg3, arg4);
                break;
 
+       case KEYCTL_MOVE:
+               keyctl_move(tcp, arg2, arg3, arg4, arg5);
+               break;
+
+       case KEYCTL_CAPABILITIES:
+               keyctl_capabilities(tcp, arg2, arg3);
+               return 0;
+
        default:
                tprintf("%#" PRI_klx ", %#" PRI_klx
                        ", %#" PRI_klx ", %#" PRI_klx,
diff --git a/kvm.c b/kvm.c
index 984a75e86b3f9bd908e7b74060eb7dedb61d2ed6..5de41b2dbf8c549b6ddddaf00a537c41ed71ad24 100644 (file)
--- a/kvm.c
+++ b/kvm.c
@@ -76,10 +76,9 @@ vcpu_register(struct tcb *const tcp, int fd, int cpuid)
 
        struct vcpu_info *vcpu_info = vcpu_find(tcp, fd);
 
-       if (!vcpu_info)
-               vcpu_info = vcpu_alloc(tcp, fd, cpuid);
-       else if (vcpu_info->cpuid != cpuid)
-       {
+       if (!vcpu_info) {
+               vcpu_alloc(tcp, fd, cpuid);
+       } else if (vcpu_info->cpuid != cpuid) {
                vcpu_info->cpuid = cpuid;
                vcpu_info->resolved = false;
        }
@@ -309,7 +308,7 @@ kvm_ioctl_decode_check_extension(struct tcb *const tcp, const unsigned int code,
                                 const kernel_ulong_t arg)
 {
        tprints(", ");
-       printxval_index(kvm_cap, arg, "KVM_CAP_???");
+       printxval64(kvm_cap, arg, "KVM_CAP_???");
        return RVAL_IOCTL_DECODED;
 }
 
@@ -327,8 +326,7 @@ kvm_ioctl_run_attach_auxstr(struct tcb *const tcp,
        if (umove(tcp, info->mmap_addr, &vcpu_run_struct) < 0)
                return;
 
-       tcp->auxstr = xlat_idx(kvm_exit_reason, ARRAY_SIZE(kvm_exit_reason) - 1,
-                              vcpu_run_struct.exit_reason);
+       tcp->auxstr = xlookup(kvm_exit_reason, vcpu_run_struct.exit_reason);
        if (!tcp->auxstr)
                tcp->auxstr = "KVM_EXIT_???";
 }
index 902dc98a4d8eeab092121007a1e5d8cf9c314210..bde4eb1baafd8763c42904c38167d89340e310e7 100644 (file)
@@ -1,8 +1,8 @@
 /*
  * Wrappers for handling discrepancies in LF64-themed syscalls availability and
- * necessity between verious architectures and kernel veriosns.
+ * necessity between various architectures and kernel versions.
  *
- * Copyright (c) 2012-2019 The strace developers.
+ * Copyright (c) 2012-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
 #  else
 #   define fopen_stream fopen
 #  endif
+#  ifdef HAVE_FCNTL64
+#   define fcntl_fd fcntl64
+#  else
+#   define fcntl_fd fcntl
+#  endif
+#  define fstat_fd fstat64
 #  define strace_stat_t struct stat64
 #  define stat_file stat64
 #  define struct_dirent struct dirent64
@@ -33,6 +39,8 @@
 # else
 #  define open_file open
 #  define fopen_stream fopen
+#  define fcntl_fd fcntl
+#  define fstat_fd fstat
 #  define strace_stat_t struct stat
 #  define stat_file stat
 #  define struct_dirent struct dirent
diff --git a/link.c b/link.c
index 3171f9f9a2c2254de22ce34f0d2fcdde973f17c5..889e320dc659bb3febcdb5e848e460ad4f9eeb58 100644 (file)
--- a/link.c
+++ b/link.c
@@ -5,7 +5,7 @@
  * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
  * Copyright (c) 2006 Ulrich Drepper <drepper@redhat.com>
  * Copyright (c) 2006 Bernhard Kaindl <bk@suse.de>
- * Copyright (c) 2006-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2006-2019 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -29,9 +29,11 @@ SYS_FUNC(link)
 SYS_FUNC(linkat)
 {
        print_dirfd(tcp, tcp->u_arg[0]);
+       tprints(", ");
        printpath(tcp, tcp->u_arg[1]);
        tprints(", ");
        print_dirfd(tcp, tcp->u_arg[2]);
+       tprints(", ");
        printpath(tcp, tcp->u_arg[3]);
        tprints(", ");
        printflags(at_flags, tcp->u_arg[4], "AT_???");
@@ -42,6 +44,7 @@ SYS_FUNC(linkat)
 SYS_FUNC(unlinkat)
 {
        print_dirfd(tcp, tcp->u_arg[0]);
+       tprints(", ");
        printpath(tcp, tcp->u_arg[1]);
        tprints(", ");
        printflags(at_flags, tcp->u_arg[2], "AT_???");
@@ -54,6 +57,7 @@ SYS_FUNC(symlinkat)
        printpath(tcp, tcp->u_arg[0]);
        tprints(", ");
        print_dirfd(tcp, tcp->u_arg[1]);
+       tprints(", ");
        printpath(tcp, tcp->u_arg[2]);
 
        return RVAL_DECODED;
index a58d10d9e5ab8f9bf339e53667a4aedf6cccc1e0..a309f14c8aa061a6be6bb7738347a23c30b80975 100644 (file)
@@ -81,8 +81,8 @@
 { "asm-generic/sockios.h", "FIOSETOWN", 0, 0x8901, 0 },
 { "asm-generic/sockios.h", "SIOCATMARK", 0, 0x8905, 0 },
 { "asm-generic/sockios.h", "SIOCGPGRP", 0, 0x8904, 0 },
-{ "asm-generic/sockios.h", "SIOCGSTAMP", 0, 0x8906, 0 },
-{ "asm-generic/sockios.h", "SIOCGSTAMPNS", 0, 0x8907, 0 },
+{ "asm-generic/sockios.h", "SIOCGSTAMPNS_OLD", 0, 0x8907, 0 },
+{ "asm-generic/sockios.h", "SIOCGSTAMP_OLD", 0, 0x8906, 0 },
 { "asm-generic/sockios.h", "SIOCSPGRP", 0, 0x8902, 0 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_BO_LIST", _IOC_READ|_IOC_WRITE, 0x6443, 0x18 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_CS", _IOC_READ|_IOC_WRITE, 0x6444, 0x18 },
 { "drm/drm.h", "DRM_IOCTL_MODE_GETCRTC", _IOC_READ|_IOC_WRITE, 0x64a1, 0x68 },
 { "drm/drm.h", "DRM_IOCTL_MODE_GETENCODER", _IOC_READ|_IOC_WRITE, 0x64a6, 0x14 },
 { "drm/drm.h", "DRM_IOCTL_MODE_GETFB", _IOC_READ|_IOC_WRITE, 0x64ad, 0x1c },
+{ "drm/drm.h", "DRM_IOCTL_MODE_GETFB2", _IOC_READ|_IOC_WRITE, 0x64ce, 0x64 },
 { "drm/drm.h", "DRM_IOCTL_MODE_GETGAMMA", _IOC_READ|_IOC_WRITE, 0x64a4, 0x20 },
 { "drm/drm.h", "DRM_IOCTL_MODE_GETPLANE", _IOC_READ|_IOC_WRITE, 0x64b6, 0x20 },
 { "drm/drm.h", "DRM_IOCTL_MODE_GETPLANERESOURCES", _IOC_READ|_IOC_WRITE, 0x64b5, 0x0c },
 { "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_QUERY", _IOC_READ|_IOC_WRITE, 0x64cb, 0x18 },
 { "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_TIMELINE_SIGNAL", _IOC_READ|_IOC_WRITE, 0x64cd, 0x18 },
+{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_TIMELINE_WAIT", _IOC_READ|_IOC_WRITE, 0x64ca, 0x28 },
+{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_TRANSFER", _IOC_READ|_IOC_WRITE, 0x64cc, 0x20 },
 { "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/i915_drm.h", "DRM_IOCTL_I915_FREE", _IOC_WRITE, 0x6449, 0x08 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_BUSY", _IOC_READ|_IOC_WRITE, 0x6457, 0x08 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CONTEXT_CREATE", _IOC_READ|_IOC_WRITE, 0x646d, 0x08 },
+{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CONTEXT_CREATE_EXT", _IOC_READ|_IOC_WRITE, 0x646d, 0x10 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CONTEXT_DESTROY", _IOC_WRITE, 0x646e, 0x08 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CONTEXT_GETPARAM", _IOC_READ|_IOC_WRITE, 0x6474, 0x18 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM", _IOC_READ|_IOC_WRITE, 0x6475, 0x18 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_MADVISE", _IOC_READ|_IOC_WRITE, 0x6466, 0x0c },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_MMAP", _IOC_READ|_IOC_WRITE, 0x645e, 0x28 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_MMAP_GTT", _IOC_READ|_IOC_WRITE, 0x6464, 0x10 },
+{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_MMAP_OFFSET", _IOC_READ|_IOC_WRITE, 0x6464, 0x20 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_PIN", _IOC_READ|_IOC_WRITE, 0x6455, 0x18 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_PREAD", _IOC_WRITE, 0x645c, 0x20 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_PWRITE", _IOC_WRITE, 0x645d, 0x20 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_THROTTLE", _IOC_NONE, 0x6458, 0x00 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_UNPIN", _IOC_WRITE, 0x6456, 0x08 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_USERPTR", _IOC_READ|_IOC_WRITE, 0x6473, 0x18 },
+{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_VM_CREATE", _IOC_READ|_IOC_WRITE, 0x647a, 0x10 },
+{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_VM_DESTROY", _IOC_WRITE, 0x647b, 0x10 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_WAIT", _IOC_READ|_IOC_WRITE, 0x646c, 0x10 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GETPARAM", _IOC_READ|_IOC_WRITE, 0x6446, 0x08 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GET_PIPE_FROM_CRTC_ID", _IOC_READ|_IOC_WRITE, 0x6465, 0x08 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_SET_SPRITE_COLORKEY", _IOC_READ|_IOC_WRITE, 0x646b, 0x14 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_SET_VBLANK_PIPE", _IOC_WRITE, 0x644d, 0x04 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_VBLANK_SWAP", _IOC_READ|_IOC_WRITE, 0x644f, 0x0c },
+{ "drm/i915_drm.h", "I915_PERF_IOCTL_CONFIG", _IOC_NONE, 0x6902, 0x00 },
 { "drm/i915_drm.h", "I915_PERF_IOCTL_DISABLE", _IOC_NONE, 0x6901, 0x00 },
 { "drm/i915_drm.h", "I915_PERF_IOCTL_ENABLE", _IOC_NONE, 0x6900, 0x00 },
+{ "drm/lima_drm.h", "DRM_IOCTL_LIMA_CTX_CREATE", _IOC_READ, 0x6445, 0x08 },
+{ "drm/lima_drm.h", "DRM_IOCTL_LIMA_CTX_FREE", _IOC_WRITE, 0x6446, 0x08 },
+{ "drm/lima_drm.h", "DRM_IOCTL_LIMA_GEM_CREATE", _IOC_READ|_IOC_WRITE, 0x6441, 0x10 },
+{ "drm/lima_drm.h", "DRM_IOCTL_LIMA_GEM_INFO", _IOC_READ|_IOC_WRITE, 0x6442, 0x10 },
+{ "drm/lima_drm.h", "DRM_IOCTL_LIMA_GEM_SUBMIT", _IOC_WRITE, 0x6443, 0x30 },
+{ "drm/lima_drm.h", "DRM_IOCTL_LIMA_GEM_WAIT", _IOC_WRITE, 0x6444, 0x10 },
+{ "drm/lima_drm.h", "DRM_IOCTL_LIMA_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6440, 0x10 },
 { "drm/mga_drm.h", "DRM_IOCTL_MGA_BLIT", _IOC_WRITE, 0x6448, 0x34 },
 { "drm/mga_drm.h", "DRM_IOCTL_MGA_CLEAR", _IOC_WRITE, 0x6444, 0x14 },
 { "drm/mga_drm.h", "DRM_IOCTL_MGA_DMA_BOOTSTRAP", _IOC_READ|_IOC_WRITE, 0x644c, 0x1a },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_INFO", _IOC_READ|_IOC_WRITE, 0x6443, 0x18 },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_MADVISE", _IOC_READ|_IOC_WRITE, 0x6448, 0x0c },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_NEW", _IOC_READ|_IOC_WRITE, 0x6442, 0x10 },
-{ "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_SUBMIT", _IOC_READ|_IOC_WRITE, 0x6446, 0x28 },
+{ "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_SUBMIT", _IOC_READ|_IOC_WRITE, 0x6446, 0x48 },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6440, 0x10 },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_SUBMITQUEUE_CLOSE", _IOC_WRITE, 0x644b, 0x04 },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_SUBMITQUEUE_NEW", _IOC_READ|_IOC_WRITE, 0x644a, 0x0c },
+{ "drm/msm_drm.h", "DRM_IOCTL_MSM_SUBMITQUEUE_QUERY", _IOC_WRITE, 0x644c, 0x18 },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_WAIT_FENCE", _IOC_WRITE, 0x6447, 0x1c },
 { "drm/nouveau_drm.h", "DRM_IOCTL_NOUVEAU_GEM_CPU_FINI", _IOC_WRITE, 0x6483, 0x04 },
 { "drm/nouveau_drm.h", "DRM_IOCTL_NOUVEAU_GEM_CPU_PREP", _IOC_WRITE, 0x6482, 0x08 },
 { "drm/omap_drm.h", "DRM_IOCTL_OMAP_GEM_NEW", _IOC_READ|_IOC_WRITE, 0x6443, 0x10 },
 { "drm/omap_drm.h", "DRM_IOCTL_OMAP_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6440, 0x10 },
 { "drm/omap_drm.h", "DRM_IOCTL_OMAP_SET_PARAM", _IOC_WRITE, 0x6441, 0x10 },
+{ "drm/panfrost_drm.h", "DRM_IOCTL_PANFROST_CREATE_BO", _IOC_READ|_IOC_WRITE, 0x6442, 0x18 },
+{ "drm/panfrost_drm.h", "DRM_IOCTL_PANFROST_GET_BO_OFFSET", _IOC_READ|_IOC_WRITE, 0x6445, 0x10 },
+{ "drm/panfrost_drm.h", "DRM_IOCTL_PANFROST_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6444, 0x10 },
+{ "drm/panfrost_drm.h", "DRM_IOCTL_PANFROST_MADVISE", _IOC_READ|_IOC_WRITE, 0x6448, 0x0c },
+{ "drm/panfrost_drm.h", "DRM_IOCTL_PANFROST_MMAP_BO", _IOC_READ|_IOC_WRITE, 0x6443, 0x10 },
+{ "drm/panfrost_drm.h", "DRM_IOCTL_PANFROST_PERFCNT_DUMP", _IOC_WRITE, 0x6447, 0x08 },
+{ "drm/panfrost_drm.h", "DRM_IOCTL_PANFROST_PERFCNT_ENABLE", _IOC_WRITE, 0x6446, 0x08 },
+{ "drm/panfrost_drm.h", "DRM_IOCTL_PANFROST_SUBMIT", _IOC_WRITE, 0x6440, 0x28 },
+{ "drm/panfrost_drm.h", "DRM_IOCTL_PANFROST_WAIT_BO", _IOC_WRITE, 0x6441, 0x10 },
 { "drm/qxl_drm.h", "DRM_IOCTL_QXL_ALLOC", _IOC_READ|_IOC_WRITE, 0x6440, 0x08 },
 { "drm/qxl_drm.h", "DRM_IOCTL_QXL_ALLOC_SURF", _IOC_READ|_IOC_WRITE, 0x6446, 0x18 },
 { "drm/qxl_drm.h", "DRM_IOCTL_QXL_CLIENTCAP", _IOC_WRITE, 0x6445, 0x08 },
 { "drm/v3d_drm.h", "DRM_IOCTL_V3D_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6444, 0x10 },
 { "drm/v3d_drm.h", "DRM_IOCTL_V3D_MMAP_BO", _IOC_READ|_IOC_WRITE, 0x6443, 0x10 },
 { "drm/v3d_drm.h", "DRM_IOCTL_V3D_SUBMIT_CL", _IOC_READ|_IOC_WRITE, 0x6440, 0x38 },
+{ "drm/v3d_drm.h", "DRM_IOCTL_V3D_SUBMIT_CSD", _IOC_WRITE, 0x6447, 0x40 },
 { "drm/v3d_drm.h", "DRM_IOCTL_V3D_SUBMIT_TFU", _IOC_WRITE, 0x6446, 0x44 },
 { "drm/v3d_drm.h", "DRM_IOCTL_V3D_WAIT_BO", _IOC_READ|_IOC_WRITE, 0x6441, 0x10 },
 { "drm/vc4_drm.h", "DRM_IOCTL_VC4_CREATE_BO", _IOC_READ|_IOC_WRITE, 0x6443, 0x10 },
 { "linux/arcfb.h", "FBIO_WAITEVENT", _IOC_NONE, 0x4688, 0x00 },
 { "linux/aspeed-lpc-ctrl.h", "ASPEED_LPC_CTRL_IOCTL_GET_SIZE", _IOC_READ|_IOC_WRITE, 0xb200, 0x10 },
 { "linux/aspeed-lpc-ctrl.h", "ASPEED_LPC_CTRL_IOCTL_MAP", _IOC_WRITE, 0xb201, 0x10 },
+{ "linux/aspeed-p2a-ctrl.h", "ASPEED_P2A_CTRL_IOCTL_GET_MEMORY_CONFIG", _IOC_READ|_IOC_WRITE, 0xb301, 0x10 },
+{ "linux/aspeed-p2a-ctrl.h", "ASPEED_P2A_CTRL_IOCTL_SET_WINDOW", _IOC_WRITE, 0xb300, 0x10 },
 { "linux/atm_eni.h", "ENI_MEMDUMP", _IOC_WRITE, 0x6160, 0x0c },
 { "linux/atm_eni.h", "ENI_SETMULT", _IOC_WRITE, 0x6167, 0x0c },
 { "linux/atm_he.h", "HE_GET_REG", _IOC_WRITE, 0x6160, 0x0c },
 { "linux/auto_fs.h", "AUTOFS_IOC_SETTIMEOUT", _IOC_READ|_IOC_WRITE, 0x9364, 0x04 },
 { "linux/auto_fs.h", "AUTOFS_IOC_SETTIMEOUT32", _IOC_READ|_IOC_WRITE, 0x9364, 0x04 },
 { "linux/blkpg.h", "BLKPG", _IOC_NONE, 0x1269, 0x00 },
+{ "linux/blkzoned.h", "BLKCLOSEZONE", _IOC_WRITE, 0x1287, 0x10 },
+{ "linux/blkzoned.h", "BLKFINISHZONE", _IOC_WRITE, 0x1288, 0x10 },
 { "linux/blkzoned.h", "BLKGETNRZONES", _IOC_READ, 0x1285, 0x04 },
 { "linux/blkzoned.h", "BLKGETZONESZ", _IOC_READ, 0x1284, 0x04 },
+{ "linux/blkzoned.h", "BLKOPENZONE", _IOC_WRITE, 0x1286, 0x10 },
 { "linux/blkzoned.h", "BLKREPORTZONE", _IOC_READ|_IOC_WRITE, 0x1282, 0x10 },
 { "linux/blkzoned.h", "BLKRESETZONE", _IOC_WRITE, 0x1283, 0x10 },
 { "linux/bt-bmc.h", "BT_BMC_IOCTL_SMS_ATN", _IOC_NONE, 0xb100, 0x00 },
 { "linux/btrfs.h", "BTRFS_IOC_SNAP_CREATE", _IOC_WRITE, 0x9401, 0x1000 },
 { "linux/btrfs.h", "BTRFS_IOC_SNAP_CREATE_V2", _IOC_WRITE, 0x9417, 0x1000 },
 { "linux/btrfs.h", "BTRFS_IOC_SNAP_DESTROY", _IOC_WRITE, 0x940f, 0x1000 },
+{ "linux/btrfs.h", "BTRFS_IOC_SNAP_DESTROY_V2", _IOC_WRITE, 0x943f, 0x1000 },
 { "linux/btrfs.h", "BTRFS_IOC_SPACE_INFO", _IOC_READ|_IOC_WRITE, 0x9414, 0x10 },
 { "linux/btrfs.h", "BTRFS_IOC_START_SYNC", _IOC_READ, 0x9418, 0x08 },
 { "linux/btrfs.h", "BTRFS_IOC_SUBVOL_CREATE", _IOC_WRITE, 0x940e, 0x1000 },
 { "linux/cdrom.h", "DVD_READ_STRUCT", 0, 0x5390, 0 },
 { "linux/cdrom.h", "DVD_WRITE_STRUCT", 0, 0x5391, 0 },
 { "linux/cec.h", "CEC_ADAP_G_CAPS", _IOC_READ|_IOC_WRITE, 0x6100, 0x4c },
+{ "linux/cec.h", "CEC_ADAP_G_CONNECTOR_INFO", _IOC_READ, 0x610a, 0x44 },
 { "linux/cec.h", "CEC_ADAP_G_LOG_ADDRS", _IOC_READ, 0x6103, 0x5c },
 { "linux/cec.h", "CEC_ADAP_G_PHYS_ADDR", _IOC_READ, 0x6101, 0x02 },
 { "linux/cec.h", "CEC_ADAP_S_LOG_ADDRS", _IOC_READ|_IOC_WRITE, 0x6104, 0x5c },
 { "linux/dm-ioctl.h", "DM_DEV_STATUS", _IOC_READ|_IOC_WRITE, 0xfd07, 0x138 },
 { "linux/dm-ioctl.h", "DM_DEV_SUSPEND", _IOC_READ|_IOC_WRITE, 0xfd06, 0x138 },
 { "linux/dm-ioctl.h", "DM_DEV_WAIT", _IOC_READ|_IOC_WRITE, 0xfd08, 0x138 },
+{ "linux/dm-ioctl.h", "DM_GET_TARGET_VERSION", _IOC_READ|_IOC_WRITE, 0xfd11, 0x138 },
 { "linux/dm-ioctl.h", "DM_LIST_DEVICES", _IOC_READ|_IOC_WRITE, 0xfd02, 0x138 },
 { "linux/dm-ioctl.h", "DM_LIST_VERSIONS", _IOC_READ|_IOC_WRITE, 0xfd0d, 0x138 },
 { "linux/dm-ioctl.h", "DM_REMOVE_ALL", _IOC_READ|_IOC_WRITE, 0xfd01, 0x138 },
 { "linux/dm-ioctl.h", "DM_TARGET_MSG", _IOC_READ|_IOC_WRITE, 0xfd0e, 0x138 },
 { "linux/dm-ioctl.h", "DM_VERSION", _IOC_READ|_IOC_WRITE, 0xfd00, 0x138 },
 { "linux/dma-buf.h", "DMA_BUF_IOCTL_SYNC", _IOC_WRITE, 0x6200, 0x08 },
+{ "linux/dma-buf.h", "DMA_BUF_SET_NAME_A", _IOC_WRITE, 0x6201, 0x04 },
+{ "linux/dma-buf.h", "DMA_BUF_SET_NAME_B", _IOC_WRITE, 0x6201, 0x08 },
+{ "linux/dma-heap.h", "DMA_HEAP_IOCTL_ALLOC", _IOC_READ|_IOC_WRITE, 0x4800, 0x18 },
 { "linux/dn.h", "OSIOCGNETADDR", _IOC_READ, 0x89e1, 0x04 },
 { "linux/dn.h", "OSIOCSNETADDR", _IOC_WRITE, 0x89e0, 0x04 },
 { "linux/dn.h", "SIOCGNETADDR", _IOC_READ, 0x89e1, 0x04 },
 { "linux/firewire-cdev.h", "FW_CDEV_IOC_START_ISO", _IOC_WRITE, 0x230a, 0x10 },
 { "linux/firewire-cdev.h", "FW_CDEV_IOC_STOP_ISO", _IOC_WRITE, 0x230b, 0x04 },
 { "linux/fpga-dfl.h", "DFL_FPGA_CHECK_EXTENSION", _IOC_NONE, 0xb601, 0x00 },
+{ "linux/fpga-dfl.h", "DFL_FPGA_FME_ERR_GET_IRQ_NUM", _IOC_READ, 0xb683, 0x04 },
+{ "linux/fpga-dfl.h", "DFL_FPGA_FME_ERR_SET_IRQ", _IOC_WRITE, 0xb684, 0x08 },
+{ "linux/fpga-dfl.h", "DFL_FPGA_FME_PORT_ASSIGN", _IOC_WRITE, 0xb682, 0x04 },
 { "linux/fpga-dfl.h", "DFL_FPGA_FME_PORT_PR", _IOC_NONE, 0xb680, 0x00 },
+{ "linux/fpga-dfl.h", "DFL_FPGA_FME_PORT_RELEASE", _IOC_WRITE, 0xb681, 0x04 },
 { "linux/fpga-dfl.h", "DFL_FPGA_GET_API_VERSION", _IOC_NONE, 0xb600, 0x00 },
 { "linux/fpga-dfl.h", "DFL_FPGA_PORT_DMA_MAP", _IOC_NONE, 0xb643, 0x00 },
 { "linux/fpga-dfl.h", "DFL_FPGA_PORT_DMA_UNMAP", _IOC_NONE, 0xb644, 0x00 },
+{ "linux/fpga-dfl.h", "DFL_FPGA_PORT_ERR_GET_IRQ_NUM", _IOC_READ, 0xb645, 0x04 },
+{ "linux/fpga-dfl.h", "DFL_FPGA_PORT_ERR_SET_IRQ", _IOC_WRITE, 0xb646, 0x08 },
 { "linux/fpga-dfl.h", "DFL_FPGA_PORT_GET_INFO", _IOC_NONE, 0xb641, 0x00 },
 { "linux/fpga-dfl.h", "DFL_FPGA_PORT_GET_REGION_INFO", _IOC_NONE, 0xb642, 0x00 },
 { "linux/fpga-dfl.h", "DFL_FPGA_PORT_RESET", _IOC_NONE, 0xb640, 0x00 },
+{ "linux/fpga-dfl.h", "DFL_FPGA_PORT_UINT_GET_IRQ_NUM", _IOC_READ, 0xb647, 0x04 },
+{ "linux/fpga-dfl.h", "DFL_FPGA_PORT_UINT_SET_IRQ", _IOC_WRITE, 0xb648, 0x08 },
 { "linux/fs.h", "BLKALIGNOFF", _IOC_NONE, 0x127a, 0x00 },
 { "linux/fs.h", "BLKBSZGET", _IOC_READ, 0x1270, 0x04 },
 { "linux/fs.h", "BLKBSZSET", _IOC_WRITE, 0x1271, 0x04 },
 { "linux/fs.h", "FS_IOC_GETFLAGS", _IOC_READ, 0x6601, 0x04 },
 { "linux/fs.h", "FS_IOC_GETFSLABEL", _IOC_READ, 0x9431, 0x100 },
 { "linux/fs.h", "FS_IOC_GETVERSION", _IOC_READ, 0x7601, 0x04 },
-{ "linux/fs.h", "FS_IOC_GET_ENCRYPTION_POLICY", _IOC_WRITE, 0x6615, 0x0c },
-{ "linux/fs.h", "FS_IOC_GET_ENCRYPTION_PWSALT", _IOC_WRITE, 0x6614, 0x10 },
 { "linux/fs.h", "FS_IOC_SETFLAGS", _IOC_WRITE, 0x6602, 0x04 },
 { "linux/fs.h", "FS_IOC_SETFSLABEL", _IOC_WRITE, 0x9432, 0x100 },
 { "linux/fs.h", "FS_IOC_SETVERSION", _IOC_WRITE, 0x7602, 0x04 },
-{ "linux/fs.h", "FS_IOC_SET_ENCRYPTION_POLICY", _IOC_READ, 0x6613, 0x0c },
+{ "linux/fscrypt.h", "FS_IOC_ADD_ENCRYPTION_KEY", _IOC_READ|_IOC_WRITE, 0x6617, 0x50 },
+{ "linux/fscrypt.h", "FS_IOC_GET_ENCRYPTION_KEY_STATUS", _IOC_READ|_IOC_WRITE, 0x661a, 0x80 },
+{ "linux/fscrypt.h", "FS_IOC_GET_ENCRYPTION_NONCE", _IOC_READ, 0x661b, 0x10 },
+{ "linux/fscrypt.h", "FS_IOC_GET_ENCRYPTION_POLICY", _IOC_WRITE, 0x6615, 0x0c },
+{ "linux/fscrypt.h", "FS_IOC_GET_ENCRYPTION_POLICY_EX", _IOC_READ|_IOC_WRITE, 0x6616, 0x09 },
+{ "linux/fscrypt.h", "FS_IOC_GET_ENCRYPTION_PWSALT", _IOC_WRITE, 0x6614, 0x10 },
+{ "linux/fscrypt.h", "FS_IOC_REMOVE_ENCRYPTION_KEY", _IOC_READ|_IOC_WRITE, 0x6618, 0x40 },
+{ "linux/fscrypt.h", "FS_IOC_REMOVE_ENCRYPTION_KEY_ALL_USERS", _IOC_READ|_IOC_WRITE, 0x6619, 0x40 },
+{ "linux/fscrypt.h", "FS_IOC_SET_ENCRYPTION_POLICY", _IOC_READ, 0x6613, 0x0c },
 { "linux/fsi.h", "FSI_SCOM_CHECK", _IOC_READ, 0x7300, 0x04 },
 { "linux/fsi.h", "FSI_SCOM_READ", _IOC_READ|_IOC_WRITE, 0x7301, 0x1e },
 { "linux/fsi.h", "FSI_SCOM_RESET", _IOC_WRITE, 0x7303, 0x04 },
 { "linux/fsl_hypervisor.h", "FSL_HV_IOCTL_PARTITION_STOP", _IOC_READ|_IOC_WRITE, 0xaf04, 0x08 },
 { "linux/fsl_hypervisor.h", "FSL_HV_IOCTL_SETPROP", _IOC_READ|_IOC_WRITE, 0xaf08, 0x28 },
 { "linux/fsmap.h", "FS_IOC_GETFSMAP", _IOC_READ|_IOC_WRITE, 0x583b, 0xc0 },
+{ "linux/fsverity.h", "FS_IOC_ENABLE_VERITY", _IOC_WRITE, 0x6685, 0x80 },
+{ "linux/fsverity.h", "FS_IOC_MEASURE_VERITY", _IOC_READ|_IOC_WRITE, 0x6686, 0x04 },
 { "linux/fuse.h", "FUSE_DEV_IOC_CLONE", _IOC_READ, 0xe500, 0x04 },
 { "linux/genwqe/genwqe_card.h", "GENWQE_EXECUTE_DDCB", _IOC_READ|_IOC_WRITE, 0xa532, 0xe8 },
 { "linux/genwqe/genwqe_card.h", "GENWQE_EXECUTE_RAW_DDCB", _IOC_READ|_IOC_WRITE, 0xa533, 0xe8 },
 { "linux/genwqe/genwqe_card.h", "GENWQE_WRITE_REG16", _IOC_WRITE, 0xa523, 0x10 },
 { "linux/genwqe/genwqe_card.h", "GENWQE_WRITE_REG32", _IOC_WRITE, 0xa521, 0x10 },
 { "linux/genwqe/genwqe_card.h", "GENWQE_WRITE_REG64", _IOC_WRITE, 0xa51f, 0x10 },
-{ "linux/gigaset_dev.h", "GIGASET_BRKCHARS", _IOC_WRITE, 0x4702, 0x06 },
-{ "linux/gigaset_dev.h", "GIGASET_CONFIG", _IOC_READ|_IOC_WRITE, 0x4701, 0x04 },
-{ "linux/gigaset_dev.h", "GIGASET_REDIR", _IOC_READ|_IOC_WRITE, 0x4700, 0x04 },
-{ "linux/gigaset_dev.h", "GIGASET_VERSION", _IOC_READ|_IOC_WRITE, 0x4703, 0x10 },
 { "linux/gpio.h", "GPIOHANDLE_GET_LINE_VALUES_IOCTL", _IOC_READ|_IOC_WRITE, 0xb408, 0x40 },
+{ "linux/gpio.h", "GPIOHANDLE_SET_CONFIG_IOCTL", _IOC_READ|_IOC_WRITE, 0xb40a, 0x54 },
 { "linux/gpio.h", "GPIOHANDLE_SET_LINE_VALUES_IOCTL", _IOC_READ|_IOC_WRITE, 0xb409, 0x40 },
 { "linux/gpio.h", "GPIO_GET_CHIPINFO_IOCTL", _IOC_READ, 0xb401, 0x44 },
 { "linux/gpio.h", "GPIO_GET_LINEEVENT_IOCTL", _IOC_READ|_IOC_WRITE, 0xb404, 0x30 },
 { "linux/gpio.h", "GPIO_GET_LINEHANDLE_IOCTL", _IOC_READ|_IOC_WRITE, 0xb403, 0x16c },
 { "linux/gpio.h", "GPIO_GET_LINEINFO_IOCTL", _IOC_READ|_IOC_WRITE, 0xb402, 0x48 },
+{ "linux/gpio.h", "GPIO_GET_LINEINFO_UNWATCH_IOCTL", _IOC_READ|_IOC_WRITE, 0xb40c, 0x04 },
+{ "linux/gpio.h", "GPIO_GET_LINEINFO_WATCH_IOCTL", _IOC_READ|_IOC_WRITE, 0xb40b, 0x48 },
 { "linux/gsmmux.h", "GSMIOC_DISABLE_NET", _IOC_NONE, 0x4703, 0x00 },
 { "linux/gsmmux.h", "GSMIOC_ENABLE_NET", _IOC_WRITE, 0x4702, 0x34 },
 { "linux/gsmmux.h", "GSMIOC_GETCONF", _IOC_READ, 0x4700, 0x4c },
+{ "linux/gsmmux.h", "GSMIOC_GETFIRST", _IOC_READ, 0x4704, 0x04 },
 { "linux/gsmmux.h", "GSMIOC_SETCONF", _IOC_WRITE, 0x4701, 0x4c },
 { "linux/hdreg.h", "HDIO_DRIVE_CMD", 0, 0x031f, 0 },
 { "linux/hdreg.h", "HDIO_DRIVE_RESET", 0, 0x031c, 0 },
 { "linux/if_pppox.h", "PPPOEIOCSFWD", _IOC_WRITE, 0xb100, 0x04 },
 { "linux/if_tun.h", "TUNATTACHFILTER", _IOC_WRITE, 0x54d5, 0x06 },
 { "linux/if_tun.h", "TUNDETACHFILTER", _IOC_WRITE, 0x54d6, 0x06 },
+{ "linux/if_tun.h", "TUNGETDEVNETNS", _IOC_NONE, 0x54e3, 0x00 },
 { "linux/if_tun.h", "TUNGETFEATURES", _IOC_READ, 0x54cf, 0x04 },
 { "linux/if_tun.h", "TUNGETFILTER", _IOC_READ, 0x54db, 0x06 },
 { "linux/if_tun.h", "TUNGETIFF", _IOC_READ, 0x54d2, 0x04 },
 { "linux/ipmi_bmc.h", "IPMI_BMC_IOCTL_CLEAR_SMS_ATN", _IOC_NONE, 0xb101, 0x00 },
 { "linux/ipmi_bmc.h", "IPMI_BMC_IOCTL_FORCE_ABORT", _IOC_NONE, 0xb102, 0x00 },
 { "linux/ipmi_bmc.h", "IPMI_BMC_IOCTL_SET_SMS_ATN", _IOC_NONE, 0xb100, 0x00 },
-{ "linux/isdn.h", "IIOCDBGVAR", _IOC_NONE, 0x497f, 0x00 },
-{ "linux/isdn.h", "IIOCDRVCTL", _IOC_NONE, 0x4980, 0x00 },
-{ "linux/isdn.h", "IIOCGETCPS", _IOC_NONE, 0x4915, 0x00 },
-{ "linux/isdn.h", "IIOCGETDVR", _IOC_NONE, 0x4916, 0x00 },
-{ "linux/isdn.h", "IIOCGETMAP", _IOC_NONE, 0x4911, 0x00 },
-{ "linux/isdn.h", "IIOCGETPRF", _IOC_NONE, 0x490f, 0x00 },
-{ "linux/isdn.h", "IIOCGETSET", _IOC_NONE, 0x4908, 0x00 },
-{ "linux/isdn.h", "IIOCNETAIF", _IOC_NONE, 0x4901, 0x00 },
-{ "linux/isdn.h", "IIOCNETALN", _IOC_NONE, 0x4920, 0x00 },
-{ "linux/isdn.h", "IIOCNETANM", _IOC_NONE, 0x4905, 0x00 },
-{ "linux/isdn.h", "IIOCNETASL", _IOC_NONE, 0x4913, 0x00 },
-{ "linux/isdn.h", "IIOCNETDIF", _IOC_NONE, 0x4902, 0x00 },
-{ "linux/isdn.h", "IIOCNETDIL", _IOC_NONE, 0x4914, 0x00 },
-{ "linux/isdn.h", "IIOCNETDLN", _IOC_NONE, 0x4921, 0x00 },
-{ "linux/isdn.h", "IIOCNETDNM", _IOC_NONE, 0x4906, 0x00 },
-{ "linux/isdn.h", "IIOCNETDWRSET", _IOC_NONE, 0x4918, 0x00 },
-{ "linux/isdn.h", "IIOCNETGCF", _IOC_NONE, 0x4904, 0x00 },
-{ "linux/isdn.h", "IIOCNETGNM", _IOC_NONE, 0x4907, 0x00 },
-{ "linux/isdn.h", "IIOCNETGPN", _IOC_NONE, 0x4922, 0x00 },
-{ "linux/isdn.h", "IIOCNETHUP", _IOC_NONE, 0x490b, 0x00 },
-{ "linux/isdn.h", "IIOCNETLCR", _IOC_NONE, 0x4917, 0x00 },
-{ "linux/isdn.h", "IIOCNETSCF", _IOC_NONE, 0x4903, 0x00 },
-{ "linux/isdn.h", "IIOCSETBRJ", _IOC_NONE, 0x490d, 0x00 },
-{ "linux/isdn.h", "IIOCSETGST", _IOC_NONE, 0x490c, 0x00 },
-{ "linux/isdn.h", "IIOCSETMAP", _IOC_NONE, 0x4912, 0x00 },
-{ "linux/isdn.h", "IIOCSETPRF", _IOC_NONE, 0x4910, 0x00 },
-{ "linux/isdn.h", "IIOCSETSET", _IOC_NONE, 0x4909, 0x00 },
-{ "linux/isdn.h", "IIOCSETVER", _IOC_NONE, 0x490a, 0x00 },
-{ "linux/isdn.h", "IIOCSIGPRF", _IOC_NONE, 0x490e, 0x00 },
-{ "linux/isdn_ppp.h", "PPPIOCBUNDLE", _IOC_WRITE, 0x7481, 0x04 },
-{ "linux/isdn_ppp.h", "PPPIOCGCALLINFO", _IOC_READ|_IOC_WRITE, 0x7480, 0x88 },
-{ "linux/isdn_ppp.h", "PPPIOCGCOMPRESSORS", _IOC_READ, 0x7486, 0x20 },
-{ "linux/isdn_ppp.h", "PPPIOCGIFNAME", _IOC_READ, 0x7488, 0x10 },
-{ "linux/isdn_ppp.h", "PPPIOCGMPFLAGS", _IOC_READ, 0x7482, 0x04 },
-{ "linux/isdn_ppp.h", "PPPIOCSCOMPRESSOR", _IOC_WRITE, 0x7487, 0x04 },
-{ "linux/isdn_ppp.h", "PPPIOCSMPFLAGS", _IOC_WRITE, 0x7483, 0x04 },
-{ "linux/isdn_ppp.h", "PPPIOCSMPMRU", _IOC_WRITE, 0x7485, 0x04 },
-{ "linux/isdn_ppp.h", "PPPIOCSMPMTU", _IOC_WRITE, 0x7484, 0x04 },
+{ "linux/isst_if.h", "ISST_IF_GET_PHY_ID", _IOC_READ|_IOC_WRITE, 0xfe01, 0x04 },
+{ "linux/isst_if.h", "ISST_IF_GET_PLATFORM_INFO", _IOC_READ, 0xfe00, 0x04 },
+{ "linux/isst_if.h", "ISST_IF_IO_CMD", _IOC_WRITE, 0xfe02, 0x04 },
+{ "linux/isst_if.h", "ISST_IF_MBOX_COMMAND", _IOC_READ|_IOC_WRITE, 0xfe03, 0x04 },
+{ "linux/isst_if.h", "ISST_IF_MSR_COMMAND", _IOC_READ|_IOC_WRITE, 0xfe04, 0x04 },
 { "linux/ivtv.h", "IVTV_IOC_DMA_FRAME", _IOC_WRITE, 0x56c0, 0x38 },
 { "linux/ivtv.h", "IVTV_IOC_PASSTHROUGH_MODE", _IOC_WRITE, 0x56c1, 0x04 },
 { "linux/ivtvfb.h", "IVTVFB_IOC_DMA_FRAME", _IOC_WRITE, 0x56c0, 0x0c },
 { "linux/kcov.h", "KCOV_DISABLE", _IOC_NONE, 0x6365, 0x00 },
 { "linux/kcov.h", "KCOV_ENABLE", _IOC_NONE, 0x6364, 0x00 },
 { "linux/kcov.h", "KCOV_INIT_TRACE", _IOC_READ, 0x6301, 0x04 },
+{ "linux/kcov.h", "KCOV_REMOTE_ENABLE", _IOC_WRITE, 0x6366, 0x18 },
 { "linux/kd.h", "GIO_CMAP", 0, 0x4B70, 0 },
 { "linux/kd.h", "GIO_FONT", 0, 0x4B60, 0 },
 { "linux/kd.h", "GIO_FONTX", 0, 0x4B6B, 0 },
 { "linux/kd.h", "PIO_UNISCRNMAP", 0, 0x4B6A, 0 },
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_ACQUIRE_VM", _IOC_WRITE, 0x4b15, 0x08 },
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_ALLOC_MEMORY_OF_GPU", _IOC_READ|_IOC_WRITE, 0x4b16, 0x28 },
+{ "linux/kfd_ioctl.h", "AMDKFD_IOC_ALLOC_QUEUE_GWS", _IOC_READ|_IOC_WRITE, 0x4b1e, 0x10 },
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_CREATE_EVENT", _IOC_READ|_IOC_WRITE, 0x4b08, 0x20 },
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_CREATE_QUEUE", _IOC_READ|_IOC_WRITE, 0x4b02, 0x58 },
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_DBG_ADDRESS_WATCH", _IOC_WRITE, 0x4b0f, 0x10 },
 { "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_SET_TRAP_HANDLER", _IOC_WRITE, 0x4b13, 0x18 },
+{ "linux/kfd_ioctl.h", "AMDKFD_IOC_SMI_EVENTS", _IOC_READ|_IOC_WRITE, 0x4b1f, 0x08 },
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_UNMAP_MEMORY_FROM_GPU", _IOC_READ|_IOC_WRITE, 0x4b19, 0x18 },
 { "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/lirc.h", "LIRC_SET_WIDEBAND_RECEIVER", _IOC_WRITE, 0x6923, 0x04 },
 { "linux/loop.h", "LOOP_CHANGE_FD", 0, 0x4C06, 0 },
 { "linux/loop.h", "LOOP_CLR_FD", 0, 0x4C01, 0 },
+{ "linux/loop.h", "LOOP_CONFIGURE", 0, 0x4C0A, 0 },
 { "linux/loop.h", "LOOP_CTL_ADD", 0, 0x4C80, 0 },
 { "linux/loop.h", "LOOP_CTL_GET_FREE", 0, 0x4C82, 0 },
 { "linux/loop.h", "LOOP_CTL_REMOVE", 0, 0x4C81, 0 },
 { "linux/nsfs.h", "NS_GET_OWNER_UID", _IOC_NONE, 0xb704, 0x00 },
 { "linux/nsfs.h", "NS_GET_PARENT", _IOC_NONE, 0xb702, 0x00 },
 { "linux/nsfs.h", "NS_GET_USERNS", _IOC_NONE, 0xb701, 0x00 },
+{ "linux/nvme_ioctl.h", "NVME_IOCTL_ADMIN64_CMD", _IOC_READ|_IOC_WRITE, 0x4e47, 0x50 },
 { "linux/nvme_ioctl.h", "NVME_IOCTL_ADMIN_CMD", _IOC_READ|_IOC_WRITE, 0x4e41, 0x48 },
 { "linux/nvme_ioctl.h", "NVME_IOCTL_ID", _IOC_NONE, 0x4e40, 0x00 },
+{ "linux/nvme_ioctl.h", "NVME_IOCTL_IO64_CMD", _IOC_READ|_IOC_WRITE, 0x4e48, 0x50 },
 { "linux/nvme_ioctl.h", "NVME_IOCTL_IO_CMD", _IOC_READ|_IOC_WRITE, 0x4e43, 0x48 },
 { "linux/nvme_ioctl.h", "NVME_IOCTL_RESCAN", _IOC_NONE, 0x4e46, 0x00 },
 { "linux/nvme_ioctl.h", "NVME_IOCTL_RESET", _IOC_NONE, 0x4e44, 0x00 },
 { "linux/omapfb.h", "OMAPFB_WAITFORGO", _IOC_NONE, 0x4f3c, 0x00 },
 { "linux/omapfb.h", "OMAPFB_WAITFORVSYNC", _IOC_NONE, 0x4f39, 0x00 },
 { "linux/pcitest.h", "PCITEST_BAR", _IOC_NONE, 0x5001, 0x00 },
+{ "linux/pcitest.h", "PCITEST_CLEAR_IRQ", _IOC_NONE, 0x5010, 0x00 },
 { "linux/pcitest.h", "PCITEST_COPY", _IOC_WRITE, 0x5006, 0x04 },
 { "linux/pcitest.h", "PCITEST_GET_IRQTYPE", _IOC_NONE, 0x5009, 0x00 },
 { "linux/pcitest.h", "PCITEST_LEGACY_IRQ", _IOC_NONE, 0x5002, 0x00 },
 { "linux/phantom.h", "PHN_SET_REG", _IOC_WRITE, 0x7001, 0x04 },
 { "linux/phantom.h", "PHN_SET_REGS", _IOC_WRITE, 0x7003, 0x04 },
 { "linux/pktcdvd.h", "PACKET_CTRL_CMD", _IOC_READ|_IOC_WRITE, 0x5801, 0x18 },
+{ "linux/platform_data/cros_ec_chardev.h", "CROS_EC_DEV_IOCEVENTMASK", _IOC_NONE, 0xec02, 0x00 },
+{ "linux/platform_data/cros_ec_chardev.h", "CROS_EC_DEV_IOCRDMEM", _IOC_READ|_IOC_WRITE, 0xec01, 0x108 },
+{ "linux/platform_data/cros_ec_chardev.h", "CROS_EC_DEV_IOCXCMD", _IOC_READ|_IOC_WRITE, 0xec00, 0x14 },
 { "linux/platform_data/media/si4713.h", "SI4713_IOC_MEASURE_RNL", _IOC_READ|_IOC_WRITE, 0x56c0, 0x1c },
 { "linux/pmu.h", "PMU_IOC_CAN_SLEEP", _IOC_READ, 0x4205, 0x04 },
 { "linux/pmu.h", "PMU_IOC_GET_BACKLIGHT", _IOC_READ, 0x4201, 0x04 },
 { "linux/ppp-ioctl.h", "PPPIOCGDEBUG", _IOC_READ, 0x7441, 0x04 },
 { "linux/ppp-ioctl.h", "PPPIOCGFLAGS", _IOC_READ, 0x745a, 0x04 },
 { "linux/ppp-ioctl.h", "PPPIOCGIDLE", _IOC_READ, 0x743f, 0x08 },
+{ "linux/ppp-ioctl.h", "PPPIOCGIDLE32", _IOC_READ, 0x743f, 0x08 },
+{ "linux/ppp-ioctl.h", "PPPIOCGIDLE64", _IOC_READ, 0x743f, 0x10 },
 { "linux/ppp-ioctl.h", "PPPIOCGL2TPSTATS", _IOC_READ, 0x7436, 0x48 },
 { "linux/ppp-ioctl.h", "PPPIOCGMRU", _IOC_READ, 0x7453, 0x04 },
 { "linux/ppp-ioctl.h", "PPPIOCGNPMODE", _IOC_READ|_IOC_WRITE, 0x744c, 0x08 },
 { "linux/pr.h", "IOC_PR_RESERVE", _IOC_WRITE, 0x70c9, 0x10 },
 { "linux/psp-sev.h", "SEV_ISSUE_CMD", _IOC_READ|_IOC_WRITE, 0x5300, 0x10 },
 { "linux/ptp_clock.h", "PTP_CLOCK_GETCAPS", _IOC_READ, 0x3d01, 0x50 },
+{ "linux/ptp_clock.h", "PTP_CLOCK_GETCAPS2", _IOC_READ, 0x3d0a, 0x50 },
 { "linux/ptp_clock.h", "PTP_ENABLE_PPS", _IOC_WRITE, 0x3d04, 0x04 },
+{ "linux/ptp_clock.h", "PTP_ENABLE_PPS2", _IOC_WRITE, 0x3d0d, 0x04 },
 { "linux/ptp_clock.h", "PTP_EXTTS_REQUEST", _IOC_WRITE, 0x3d02, 0x10 },
+{ "linux/ptp_clock.h", "PTP_EXTTS_REQUEST2", _IOC_WRITE, 0x3d0b, 0x10 },
 { "linux/ptp_clock.h", "PTP_PEROUT_REQUEST", _IOC_WRITE, 0x3d03, 0x38 },
+{ "linux/ptp_clock.h", "PTP_PEROUT_REQUEST2", _IOC_WRITE, 0x3d0c, 0x38 },
 { "linux/ptp_clock.h", "PTP_PIN_GETFUNC", _IOC_READ|_IOC_WRITE, 0x3d06, 0x60 },
+{ "linux/ptp_clock.h", "PTP_PIN_GETFUNC2", _IOC_READ|_IOC_WRITE, 0x3d0f, 0x60 },
 { "linux/ptp_clock.h", "PTP_PIN_SETFUNC", _IOC_WRITE, 0x3d07, 0x60 },
+{ "linux/ptp_clock.h", "PTP_PIN_SETFUNC2", _IOC_WRITE, 0x3d10, 0x60 },
 { "linux/ptp_clock.h", "PTP_SYS_OFFSET", _IOC_WRITE, 0x3d05, 0x340 },
+{ "linux/ptp_clock.h", "PTP_SYS_OFFSET2", _IOC_WRITE, 0x3d0e, 0x340 },
 { "linux/ptp_clock.h", "PTP_SYS_OFFSET_EXTENDED", _IOC_READ|_IOC_WRITE, 0x3d09, 0x4c0 },
+{ "linux/ptp_clock.h", "PTP_SYS_OFFSET_EXTENDED2", _IOC_READ|_IOC_WRITE, 0x3d12, 0x4c0 },
 { "linux/ptp_clock.h", "PTP_SYS_OFFSET_PRECISE", _IOC_READ|_IOC_WRITE, 0x3d08, 0x40 },
+{ "linux/ptp_clock.h", "PTP_SYS_OFFSET_PRECISE2", _IOC_READ|_IOC_WRITE, 0x3d11, 0x40 },
 { "linux/radeonfb.h", "FBIO_RADEON_GET_MIRROR", _IOC_READ, 0x4003, 0x04 },
 { "linux/radeonfb.h", "FBIO_RADEON_SET_MIRROR", _IOC_WRITE, 0x4004, 0x04 },
 { "linux/raid/md_u.h", "ADD_NEW_DISK", _IOC_WRITE, 0x0921, 0x14 },
 { "linux/raw.h", "RAW_GETBIND", _IOC_NONE, 0xac01, 0x00 },
 { "linux/raw.h", "RAW_SETBIND", _IOC_NONE, 0xac00, 0x00 },
 { "linux/reiserfs_fs.h", "REISERFS_IOC_UNPACK", _IOC_WRITE, 0xcd01, 0x04 },
+{ "linux/remoteproc_cdev.h", "RPROC_GET_SHUTDOWN_ON_RELEASE", _IOC_READ, 0xb702, 0x04 },
+{ "linux/remoteproc_cdev.h", "RPROC_SET_SHUTDOWN_ON_RELEASE", _IOC_WRITE, 0xb701, 0x04 },
 { "linux/rfkill.h", "RFKILL_IOCTL_NOINPUT", _IOC_NONE, 0x5201, 0x00 },
 { "linux/rio_cm_cdev.h", "RIO_CM_CHAN_ACCEPT", _IOC_READ|_IOC_WRITE, 0x6307, 0x08 },
 { "linux/rio_cm_cdev.h", "RIO_CM_CHAN_BIND", _IOC_WRITE, 0x6305, 0x08 },
 { "linux/scif_ioctl.h", "SCIF_VREADFROM", _IOC_READ|_IOC_WRITE, 0x730c, 0x24 },
 { "linux/scif_ioctl.h", "SCIF_VWRITETO", _IOC_READ|_IOC_WRITE, 0x730d, 0x24 },
 { "linux/scif_ioctl.h", "SCIF_WRITETO", _IOC_READ|_IOC_WRITE, 0x730b, 0x24 },
-{ "linux/seccomp.h", "SECCOMP_IOCTL_NOTIF_ID_VALID", _IOC_READ, 0x2102, 0x08 },
+{ "linux/seccomp.h", "SECCOMP_IOCTL_NOTIF_ADDFD", _IOC_WRITE, 0x2103, 0x18 },
+{ "linux/seccomp.h", "SECCOMP_IOCTL_NOTIF_ID_VALID", _IOC_WRITE, 0x2102, 0x08 },
 { "linux/seccomp.h", "SECCOMP_IOCTL_NOTIF_RECV", _IOC_READ|_IOC_WRITE, 0x2100, 0x50 },
 { "linux/seccomp.h", "SECCOMP_IOCTL_NOTIF_SEND", _IOC_READ|_IOC_WRITE, 0x2101, 0x18 },
 { "linux/sed-opal.h", "IOC_OPAL_ACTIVATE_LSP", _IOC_WRITE, 0x70df, 0x118 },
 { "linux/sed-opal.h", "IOC_OPAL_ADD_USR_TO_LR", _IOC_WRITE, 0x70e4, 0x118 },
 { "linux/sed-opal.h", "IOC_OPAL_ENABLE_DISABLE_MBR", _IOC_WRITE, 0x70e5, 0x110 },
 { "linux/sed-opal.h", "IOC_OPAL_ERASE_LR", _IOC_WRITE, 0x70e6, 0x110 },
+{ "linux/sed-opal.h", "IOC_OPAL_GENERIC_TABLE_RW", _IOC_WRITE, 0x70eb, 0x138 },
 { "linux/sed-opal.h", "IOC_OPAL_LOCK_UNLOCK", _IOC_WRITE, 0x70dd, 0x118 },
 { "linux/sed-opal.h", "IOC_OPAL_LR_SETUP", _IOC_WRITE, 0x70e3, 0x128 },
+{ "linux/sed-opal.h", "IOC_OPAL_MBR_DONE", _IOC_WRITE, 0x70e9, 0x110 },
+{ "linux/sed-opal.h", "IOC_OPAL_PSID_REVERT_TPR", _IOC_WRITE, 0x70e8, 0x108 },
 { "linux/sed-opal.h", "IOC_OPAL_REVERT_TPR", _IOC_WRITE, 0x70e2, 0x108 },
 { "linux/sed-opal.h", "IOC_OPAL_SAVE", _IOC_WRITE, 0x70dc, 0x118 },
 { "linux/sed-opal.h", "IOC_OPAL_SECURE_ERASE_LR", _IOC_WRITE, 0x70e7, 0x110 },
 { "linux/sed-opal.h", "IOC_OPAL_SET_PW", _IOC_WRITE, 0x70e0, 0x220 },
 { "linux/sed-opal.h", "IOC_OPAL_TAKE_OWNERSHIP", _IOC_WRITE, 0x70de, 0x108 },
+{ "linux/sed-opal.h", "IOC_OPAL_WRITE_SHADOW_MBR", _IOC_WRITE, 0x70ea, 0x120 },
 { "linux/serio.h", "SPIOCSTYPE", _IOC_WRITE, 0x7101, 0x04 },
 { "linux/sockios.h", "SIOCADDDLCI", 0, 0x8980, 0 },
 { "linux/sockios.h", "SIOCADDMULTI", 0, 0x8931, 0 },
 { "linux/sockios.h", "SIOCGMIIREG", 0, 0x8948, 0 },
 { "linux/sockios.h", "SIOCGRARP", 0, 0x8961, 0 },
 { "linux/sockios.h", "SIOCGSKNS", 0, 0x894C, 0 },
+{ "linux/sockios.h", "SIOCGSTAMPNS_NEW", _IOC_READ, 0x8907, 0x10 },
+{ "linux/sockios.h", "SIOCGSTAMP_NEW", _IOC_READ, 0x8906, 0x10 },
 { "linux/sockios.h", "SIOCOUTQNSD", 0, 0x894B, 0 },
 { "linux/sockios.h", "SIOCPROTOPRIVATE", 0, 0x89E0, 0 },
 { "linux/sockios.h", "SIOCRTMSG", 0, 0x890D, 0 },
 { "linux/suspend_ioctls.h", "SNAPSHOT_SET_SWAP_AREA", _IOC_WRITE, 0x330d, 0x0c },
 { "linux/suspend_ioctls.h", "SNAPSHOT_UNFREEZE", _IOC_NONE, 0x3302, 0x00 },
 { "linux/switchtec_ioctl.h", "SWITCHTEC_IOCTL_EVENT_CTL", _IOC_READ|_IOC_WRITE, 0x5743, 0x28 },
-{ "linux/switchtec_ioctl.h", "SWITCHTEC_IOCTL_EVENT_SUMMARY", _IOC_READ, 0x5742, 0x198 },
+{ "linux/switchtec_ioctl.h", "SWITCHTEC_IOCTL_EVENT_SUMMARY", _IOC_READ, 0x5742, 0x4d4 },
+{ "linux/switchtec_ioctl.h", "SWITCHTEC_IOCTL_EVENT_SUMMARY_LEGACY", _IOC_READ, 0x5742, 0x198 },
 { "linux/switchtec_ioctl.h", "SWITCHTEC_IOCTL_FLASH_INFO", _IOC_READ, 0x5740, 0x10 },
 { "linux/switchtec_ioctl.h", "SWITCHTEC_IOCTL_FLASH_PART_INFO", _IOC_READ|_IOC_WRITE, 0x5741, 0x10 },
 { "linux/switchtec_ioctl.h", "SWITCHTEC_IOCTL_PFF_TO_PORT", _IOC_READ|_IOC_WRITE, 0x5744, 0x0c },
 { "linux/usb/iowarrior.h", "IOW_GETINFO", _IOC_READ, 0xc003, 0x26 },
 { "linux/usb/iowarrior.h", "IOW_READ", _IOC_WRITE, 0xc002, 0x04 },
 { "linux/usb/iowarrior.h", "IOW_WRITE", _IOC_WRITE, 0xc001, 0x04 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_CONFIGURE", _IOC_NONE, 0x5509, 0x00 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP0_READ", _IOC_READ|_IOC_WRITE, 0x5504, 0x08 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP0_STALL", _IOC_NONE, 0x550c, 0x00 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP0_WRITE", _IOC_WRITE, 0x5503, 0x08 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EPS_INFO", _IOC_READ, 0x550b, 0x384 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP_CLEAR_HALT", _IOC_WRITE, 0x550e, 0x04 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP_DISABLE", _IOC_WRITE, 0x5506, 0x04 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP_ENABLE", _IOC_WRITE, 0x5505, 0x09 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP_READ", _IOC_READ|_IOC_WRITE, 0x5508, 0x08 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP_SET_HALT", _IOC_WRITE, 0x550d, 0x04 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP_SET_WEDGE", _IOC_WRITE, 0x550f, 0x04 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP_WRITE", _IOC_WRITE, 0x5507, 0x08 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EVENT_FETCH", _IOC_READ, 0x5502, 0x08 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_INIT", _IOC_WRITE, 0x5500, 0x101 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_RUN", _IOC_NONE, 0x5501, 0x00 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_VBUS_DRAW", _IOC_WRITE, 0x550a, 0x04 },
 { "linux/usb/tmc.h", "USBTMC488_IOCTL_GET_CAPS", _IOC_READ, 0x5b11, 0x01 },
 { "linux/usb/tmc.h", "USBTMC488_IOCTL_GOTO_LOCAL", _IOC_NONE, 0x5b14, 0x00 },
 { "linux/usb/tmc.h", "USBTMC488_IOCTL_LOCAL_LOCKOUT", _IOC_NONE, 0x5b15, 0x00 },
 { "linux/usb/tmc.h", "USBTMC_IOCTL_WRITE", _IOC_READ|_IOC_WRITE, 0x5b0d, 0x10 },
 { "linux/usb/tmc.h", "USBTMC_IOCTL_WRITE_RESULT", _IOC_READ|_IOC_WRITE, 0x5b0f, 0x04 },
 { "linux/usbdevice_fs.h", "USBDEVFS_ALLOC_STREAMS", _IOC_READ, 0x551c, 0x08 },
+{ "linux/usbdevice_fs.h", "USBDEVFS_ALLOW_SUSPEND", _IOC_NONE, 0x5522, 0x00 },
 { "linux/usbdevice_fs.h", "USBDEVFS_BULK", _IOC_READ|_IOC_WRITE, 0x5502, 0x10 },
 { "linux/usbdevice_fs.h", "USBDEVFS_BULK32", _IOC_READ|_IOC_WRITE, 0x5502, 0x10 },
 { "linux/usbdevice_fs.h", "USBDEVFS_CLAIMINTERFACE", _IOC_READ, 0x550f, 0x04 },
 { "linux/usbdevice_fs.h", "USBDEVFS_DISCSIGNAL", _IOC_READ, 0x550e, 0x08 },
 { "linux/usbdevice_fs.h", "USBDEVFS_DISCSIGNAL32", _IOC_READ, 0x550e, 0x08 },
 { "linux/usbdevice_fs.h", "USBDEVFS_DROP_PRIVILEGES", _IOC_WRITE, 0x551e, 0x04 },
+{ "linux/usbdevice_fs.h", "USBDEVFS_FORBID_SUSPEND", _IOC_NONE, 0x5521, 0x00 },
 { "linux/usbdevice_fs.h", "USBDEVFS_FREE_STREAMS", _IOC_READ, 0x551d, 0x08 },
 { "linux/usbdevice_fs.h", "USBDEVFS_GETDRIVER", _IOC_WRITE, 0x5508, 0x104 },
 { "linux/usbdevice_fs.h", "USBDEVFS_GET_CAPABILITIES", _IOC_READ, 0x551a, 0x04 },
 { "linux/usbdevice_fs.h", "USBDEVFS_SETINTERFACE", _IOC_READ, 0x5504, 0x08 },
 { "linux/usbdevice_fs.h", "USBDEVFS_SUBMITURB", _IOC_READ, 0x550a, 0x2a },
 { "linux/usbdevice_fs.h", "USBDEVFS_SUBMITURB32", _IOC_READ, 0x550a, 0x2a },
+{ "linux/usbdevice_fs.h", "USBDEVFS_WAIT_FOR_RESUME", _IOC_NONE, 0x5523, 0x00 },
 { "linux/userfaultfd.h", "UFFDIO_API", _IOC_READ|_IOC_WRITE, 0xaa3f, 0x18 },
 { "linux/userfaultfd.h", "UFFDIO_COPY", _IOC_READ|_IOC_WRITE, 0xaa03, 0x28 },
 { "linux/userfaultfd.h", "UFFDIO_REGISTER", _IOC_READ|_IOC_WRITE, 0xaa00, 0x20 },
 { "linux/userfaultfd.h", "UFFDIO_UNREGISTER", _IOC_READ, 0xaa01, 0x10 },
 { "linux/userfaultfd.h", "UFFDIO_WAKE", _IOC_READ, 0xaa02, 0x10 },
+{ "linux/userfaultfd.h", "UFFDIO_WRITEPROTECT", _IOC_READ|_IOC_WRITE, 0xaa06, 0x18 },
 { "linux/userfaultfd.h", "UFFDIO_ZEROPAGE", _IOC_READ|_IOC_WRITE, 0xaa04, 0x20 },
 { "linux/uvcvideo.h", "UVCIOC_CTRL_MAP", _IOC_READ|_IOC_WRITE, 0x7520, 0x58 },
 { "linux/uvcvideo.h", "UVCIOC_CTRL_QUERY", _IOC_READ|_IOC_WRITE, 0x7521, 0x0a },
 { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_G_FMT", _IOC_READ|_IOC_WRITE, 0x5604, 0x58 },
 { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_G_FRAME_INTERVAL", _IOC_READ|_IOC_WRITE, 0x5615, 0x30 },
 { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_G_SELECTION", _IOC_READ|_IOC_WRITE, 0x563d, 0x40 },
+{ "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_QUERYCAP", _IOC_READ, 0x5600, 0x40 },
 { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_CROP", _IOC_READ|_IOC_WRITE, 0x563c, 0x38 },
 { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_FMT", _IOC_READ|_IOC_WRITE, 0x5605, 0x58 },
 { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_FRAME_INTERVAL", _IOC_READ|_IOC_WRITE, 0x5616, 0x30 },
 { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_SELECTION", _IOC_READ|_IOC_WRITE, 0x563e, 0x40 },
+{ "linux/vboxguest.h", "VBG_IOCTL_ACQUIRE_GUEST_CAPABILITIES", _IOC_READ|_IOC_WRITE, 0x560d, 0x24 },
 { "linux/vboxguest.h", "VBG_IOCTL_CHANGE_FILTER_MASK", _IOC_READ|_IOC_WRITE, 0x560c, 0x20 },
 { "linux/vboxguest.h", "VBG_IOCTL_CHANGE_GUEST_CAPABILITIES", _IOC_READ|_IOC_WRITE, 0x560e, 0x20 },
 { "linux/vboxguest.h", "VBG_IOCTL_CHECK_BALLOON", _IOC_READ|_IOC_WRITE, 0x5611, 0x20 },
 { "linux/vboxguest.h", "VBG_IOCTL_HGCM_CONNECT", _IOC_READ|_IOC_WRITE, 0x5604, 0x9c },
 { "linux/vboxguest.h", "VBG_IOCTL_HGCM_DISCONNECT", _IOC_READ|_IOC_WRITE, 0x5605, 0x1c },
 { "linux/vboxguest.h", "VBG_IOCTL_INTERRUPT_ALL_WAIT_FOR_EVENTS", _IOC_READ|_IOC_WRITE, 0x560b, 0x18 },
-{ "linux/vboxguest.h", "VBG_IOCTL_VMMDEV_REQUEST_BIG", _IOC_READ|_IOC_WRITE, 0x5603, 0x00 },
+{ "linux/vboxguest.h", "VBG_IOCTL_VMMDEV_REQUEST_BIG", _IOC_NONE, 0x5603, 0x00 },
 { "linux/vboxguest.h", "VBG_IOCTL_WAIT_FOR_EVENTS", _IOC_READ|_IOC_WRITE, 0x560a, 0x20 },
 { "linux/vboxguest.h", "VBG_IOCTL_WRITE_CORE_DUMP", _IOC_READ|_IOC_WRITE, 0x5613, 0x1c },
 { "linux/vfio.h", "VFIO_CHECK_EXTENSION", _IOC_NONE, 0x3b65, 0x00 },
+{ "linux/vfio.h", "VFIO_DEVICE_FEATURE", _IOC_NONE, 0x3b75, 0x00 },
 { "linux/vfio.h", "VFIO_DEVICE_GET_GFX_DMABUF", _IOC_NONE, 0x3b73, 0x00 },
 { "linux/vfio.h", "VFIO_DEVICE_GET_INFO", _IOC_NONE, 0x3b6b, 0x00 },
 { "linux/vfio.h", "VFIO_DEVICE_GET_IRQ_INFO", _IOC_NONE, 0x3b6d, 0x00 },
 { "linux/vfio.h", "VFIO_GROUP_GET_STATUS", _IOC_NONE, 0x3b67, 0x00 },
 { "linux/vfio.h", "VFIO_GROUP_SET_CONTAINER", _IOC_NONE, 0x3b68, 0x00 },
 { "linux/vfio.h", "VFIO_GROUP_UNSET_CONTAINER", _IOC_NONE, 0x3b69, 0x00 },
+{ "linux/vfio.h", "VFIO_IOMMU_DIRTY_PAGES", _IOC_NONE, 0x3b75, 0x00 },
 { "linux/vfio.h", "VFIO_IOMMU_DISABLE", _IOC_NONE, 0x3b74, 0x00 },
 { "linux/vfio.h", "VFIO_IOMMU_ENABLE", _IOC_NONE, 0x3b73, 0x00 },
 { "linux/vfio.h", "VFIO_IOMMU_GET_INFO", _IOC_NONE, 0x3b70, 0x00 },
 { "linux/vhost.h", "VHOST_SET_VRING_ERR", _IOC_WRITE, 0xaf22, 0x08 },
 { "linux/vhost.h", "VHOST_SET_VRING_KICK", _IOC_WRITE, 0xaf20, 0x08 },
 { "linux/vhost.h", "VHOST_SET_VRING_NUM", _IOC_WRITE, 0xaf10, 0x08 },
+{ "linux/vhost.h", "VHOST_VDPA_GET_CONFIG", _IOC_READ, 0xaf73, 0x08 },
+{ "linux/vhost.h", "VHOST_VDPA_GET_DEVICE_ID", _IOC_READ, 0xaf70, 0x04 },
+{ "linux/vhost.h", "VHOST_VDPA_GET_STATUS", _IOC_READ, 0xaf71, 0x01 },
+{ "linux/vhost.h", "VHOST_VDPA_GET_VRING_NUM", _IOC_READ, 0xaf76, 0x02 },
+{ "linux/vhost.h", "VHOST_VDPA_SET_CONFIG", _IOC_WRITE, 0xaf74, 0x08 },
+{ "linux/vhost.h", "VHOST_VDPA_SET_CONFIG_CALL", _IOC_WRITE, 0xaf77, 0x04 },
+{ "linux/vhost.h", "VHOST_VDPA_SET_STATUS", _IOC_WRITE, 0xaf72, 0x01 },
+{ "linux/vhost.h", "VHOST_VDPA_SET_VRING_ENABLE", _IOC_WRITE, 0xaf75, 0x08 },
 { "linux/vhost.h", "VHOST_VSOCK_SET_GUEST_CID", _IOC_WRITE, 0xaf60, 0x08 },
 { "linux/vhost.h", "VHOST_VSOCK_SET_RUNNING", _IOC_WRITE, 0xaf61, 0x04 },
 { "linux/videodev2.h", "VIDIOC_CREATE_BUFS", _IOC_READ|_IOC_WRITE, 0x565c, 0xf8 },
 { "linux/videodev2.h", "VIDIOC_DBG_G_REGISTER", _IOC_READ|_IOC_WRITE, 0x5650, 0x38 },
 { "linux/videodev2.h", "VIDIOC_DBG_S_REGISTER", _IOC_WRITE, 0x564f, 0x38 },
 { "linux/videodev2.h", "VIDIOC_DECODER_CMD", _IOC_READ|_IOC_WRITE, 0x5660, 0x48 },
-{ "linux/videodev2.h", "VIDIOC_DQBUF", _IOC_READ|_IOC_WRITE, 0x5611, 0x44 },
-{ "linux/videodev2.h", "VIDIOC_DQEVENT", _IOC_READ, 0x5659, 0x78 },
+{ "linux/videodev2.h", "VIDIOC_DQBUF", _IOC_READ|_IOC_WRITE, 0x5611, 0x4c },
+{ "linux/videodev2.h", "VIDIOC_DQEVENT", _IOC_READ, 0x5659, 0x80 },
 { "linux/videodev2.h", "VIDIOC_DV_TIMINGS_CAP", _IOC_READ|_IOC_WRITE, 0x5664, 0x90 },
 { "linux/videodev2.h", "VIDIOC_ENCODER_CMD", _IOC_READ|_IOC_WRITE, 0x564d, 0x28 },
 { "linux/videodev2.h", "VIDIOC_ENUMAUDIO", _IOC_READ|_IOC_WRITE, 0x5641, 0x34 },
 { "linux/videodev2.h", "VIDIOC_G_TUNER", _IOC_READ|_IOC_WRITE, 0x561d, 0x54 },
 { "linux/videodev2.h", "VIDIOC_LOG_STATUS", _IOC_NONE, 0x5646, 0x00 },
 { "linux/videodev2.h", "VIDIOC_OVERLAY", _IOC_WRITE, 0x560e, 0x04 },
-{ "linux/videodev2.h", "VIDIOC_PREPARE_BUF", _IOC_READ|_IOC_WRITE, 0x565d, 0x44 },
-{ "linux/videodev2.h", "VIDIOC_QBUF", _IOC_READ|_IOC_WRITE, 0x560f, 0x44 },
-{ "linux/videodev2.h", "VIDIOC_QUERYBUF", _IOC_READ|_IOC_WRITE, 0x5609, 0x44 },
+{ "linux/videodev2.h", "VIDIOC_PREPARE_BUF", _IOC_READ|_IOC_WRITE, 0x565d, 0x4c },
+{ "linux/videodev2.h", "VIDIOC_QBUF", _IOC_READ|_IOC_WRITE, 0x560f, 0x4c },
+{ "linux/videodev2.h", "VIDIOC_QUERYBUF", _IOC_READ|_IOC_WRITE, 0x5609, 0x4c },
 { "linux/videodev2.h", "VIDIOC_QUERYCAP", _IOC_READ, 0x5600, 0x68 },
 { "linux/videodev2.h", "VIDIOC_QUERYCTRL", _IOC_READ|_IOC_WRITE, 0x5624, 0x44 },
 { "linux/videodev2.h", "VIDIOC_QUERYMENU", _IOC_READ|_IOC_WRITE, 0x5625, 0x2c },
 { "linux/vt.h", "VT_WAITACTIVE", 0, 0x5607, 0 },
 { "linux/vt.h", "VT_WAITEVENT", 0, 0x560E, 0 },
 { "linux/vtpm_proxy.h", "VTPM_PROXY_IOC_NEW_DEV", _IOC_READ|_IOC_WRITE, 0xa100, 0x14 },
+{ "linux/watch_queue.h", "IOC_WATCH_QUEUE_SET_FILTER", _IOC_NONE, 0x5761, 0x00 },
+{ "linux/watch_queue.h", "IOC_WATCH_QUEUE_SET_SIZE", _IOC_NONE, 0x5760, 0x00 },
 { "linux/watchdog.h", "WDIOC_GETBOOTSTATUS", _IOC_READ, 0x5702, 0x04 },
 { "linux/watchdog.h", "WDIOC_GETPRETIMEOUT", _IOC_READ, 0x5709, 0x04 },
 { "linux/watchdog.h", "WDIOC_GETSTATUS", _IOC_READ, 0x5701, 0x04 },
 { "media/i2c/saa6588.h", "SAA6588_CMD_READ", _IOC_READ, 0x5203, 0x04 },
 { "media/v4l2-common.h", "TUNER_SET_CONFIG", _IOC_WRITE, 0x645c, 0x08 },
 { "media/v4l2-common.h", "VIDIOC_INT_RESET", _IOC_WRITE, 0x6466, 0x04 },
-{ "media/v4l2-subdev.h", "V4L2_DEVICE_NOTIFY_EVENT", _IOC_WRITE, 0x7602, 0x78 },
+{ "media/v4l2-ioctl.h", "VIDIOC_DQBUF_TIME32", _IOC_READ|_IOC_WRITE, 0x5611, 0x44 },
+{ "media/v4l2-ioctl.h", "VIDIOC_DQEVENT_TIME32", _IOC_READ, 0x5659, 0x78 },
+{ "media/v4l2-ioctl.h", "VIDIOC_PREPARE_BUF_TIME32", _IOC_READ|_IOC_WRITE, 0x565d, 0x44 },
+{ "media/v4l2-ioctl.h", "VIDIOC_QBUF_TIME32", _IOC_READ|_IOC_WRITE, 0x560f, 0x44 },
+{ "media/v4l2-ioctl.h", "VIDIOC_QUERYBUF_TIME32", _IOC_READ|_IOC_WRITE, 0x5609, 0x44 },
+{ "media/v4l2-subdev.h", "V4L2_DEVICE_NOTIFY_EVENT", _IOC_WRITE, 0x7602, 0x80 },
 { "media/v4l2-subdev.h", "V4L2_SUBDEV_IR_RX_NOTIFY", _IOC_WRITE, 0x7600, 0x04 },
 { "media/v4l2-subdev.h", "V4L2_SUBDEV_IR_TX_NOTIFY", _IOC_WRITE, 0x7601, 0x04 },
 { "misc/cxl.h", "CXL_IOCTL_DOWNLOAD_IMAGE", _IOC_WRITE, 0xca0a, 0x40 },
 { "misc/fastrpc.h", "FASTRPC_IOCTL_INIT_ATTACH", _IOC_NONE, 0x5204, 0x00 },
 { "misc/fastrpc.h", "FASTRPC_IOCTL_INIT_CREATE", _IOC_READ|_IOC_WRITE, 0x5205, 0x18 },
 { "misc/fastrpc.h", "FASTRPC_IOCTL_INVOKE", _IOC_READ|_IOC_WRITE, 0x5203, 0x10 },
+{ "misc/fastrpc.h", "FASTRPC_IOCTL_MMAP", _IOC_READ|_IOC_WRITE, 0x5206, 0x20 },
+{ "misc/fastrpc.h", "FASTRPC_IOCTL_MUNMAP", _IOC_READ|_IOC_WRITE, 0x5207, 0x10 },
 { "misc/habanalabs.h", "HL_IOCTL_CB", _IOC_READ|_IOC_WRITE, 0x4802, 0x18 },
 { "misc/habanalabs.h", "HL_IOCTL_CS", _IOC_READ|_IOC_WRITE, 0x4803, 0x2c },
+{ "misc/habanalabs.h", "HL_IOCTL_DEBUG", _IOC_READ|_IOC_WRITE, 0x4806, 0x28 },
 { "misc/habanalabs.h", "HL_IOCTL_INFO", _IOC_READ|_IOC_WRITE, 0x4801, 0x18 },
 { "misc/habanalabs.h", "HL_IOCTL_MEMORY", _IOC_READ|_IOC_WRITE, 0x4805, 0x28 },
 { "misc/habanalabs.h", "HL_IOCTL_WAIT_CS", _IOC_READ|_IOC_WRITE, 0x4804, 0x18 },
 { "misc/ocxl.h", "OCXL_IOCTL_IRQ_ALLOC", _IOC_READ, 0xca11, 0x08 },
 { "misc/ocxl.h", "OCXL_IOCTL_IRQ_FREE", _IOC_WRITE, 0xca12, 0x08 },
 { "misc/ocxl.h", "OCXL_IOCTL_IRQ_SET_FD", _IOC_WRITE, 0xca13, 0x10 },
+{ "misc/uacce/hisi_qm.h", "UACCE_CMD_QM_SET_QP_CTX", _IOC_READ|_IOC_WRITE, 0x480a, 0x04 },
+{ "misc/uacce/uacce.h", "UACCE_CMD_PUT_Q", _IOC_NONE, 0x5701, 0x00 },
+{ "misc/uacce/uacce.h", "UACCE_CMD_START_Q", _IOC_NONE, 0x5700, 0x00 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_ADD_LDPC_CODE_PARAMS", _IOC_WRITE, 0x6605, 0x4a },
+{ "misc/xilinx_sdfec.h", "XSDFEC_CLEAR_STATS", _IOC_NONE, 0x660b, 0x00 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_GET_CONFIG", _IOC_READ, 0x6606, 0x1c },
+{ "misc/xilinx_sdfec.h", "XSDFEC_GET_STATS", _IOC_READ, 0x660c, 0x0c },
+{ "misc/xilinx_sdfec.h", "XSDFEC_GET_STATUS", _IOC_READ, 0x6602, 0x06 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_GET_TURBO", _IOC_READ, 0x6607, 0x06 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_IS_ACTIVE", _IOC_READ, 0x660a, 0x01 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_SET_BYPASS", _IOC_WRITE, 0x6609, 0x01 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_SET_DEFAULT_CONFIG", _IOC_NONE, 0x660d, 0x00 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_SET_IRQ", _IOC_WRITE, 0x6603, 0x02 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_SET_ORDER", _IOC_WRITE, 0x6608, 0x04 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_SET_TURBO", _IOC_WRITE, 0x6604, 0x06 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_START_DEV", _IOC_NONE, 0x6600, 0x00 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_STOP_DEV", _IOC_NONE, 0x6601, 0x00 },
 { "mtd/mtd-abi.h", "ECCGETLAYOUT", _IOC_READ, 0x4d11, 0x148 },
 { "mtd/mtd-abi.h", "ECCGETSTATS", _IOC_READ, 0x4d12, 0x10 },
 { "mtd/mtd-abi.h", "MEMERASE", _IOC_WRITE, 0x4d02, 0x08 },
 { "sound/asound.h", "SNDRV_TIMER_IOCTL_START", _IOC_NONE, 0x54a0, 0x00 },
 { "sound/asound.h", "SNDRV_TIMER_IOCTL_STATUS", _IOC_READ, 0x5414, 0x58 },
 { "sound/asound.h", "SNDRV_TIMER_IOCTL_STOP", _IOC_NONE, 0x54a1, 0x00 },
-{ "sound/asound.h", "SNDRV_TIMER_IOCTL_TREAD", _IOC_WRITE, 0x5402, 0x04 },
+{ "sound/asound.h", "SNDRV_TIMER_IOCTL_TREAD64", _IOC_WRITE, 0x54a4, 0x04 },
+{ "sound/asound.h", "SNDRV_TIMER_IOCTL_TREAD_OLD", _IOC_WRITE, 0x5402, 0x04 },
 { "sound/asound_fm.h", "SNDRV_DM_FM_IOCTL_CLEAR_PATCHES", _IOC_NONE, 0x4840, 0x00 },
 { "sound/asound_fm.h", "SNDRV_DM_FM_IOCTL_INFO", _IOC_READ, 0x4820, 0x02 },
 { "sound/asound_fm.h", "SNDRV_DM_FM_IOCTL_PLAY_NOTE", _IOC_WRITE, 0x4822, 0x08 },
 { "sound/hdspm.h", "SNDRV_HDSPM_IOCTL_GET_PEAK_RMS", _IOC_READ, 0x4842, 0x906 },
 { "sound/hdspm.h", "SNDRV_HDSPM_IOCTL_GET_STATUS", _IOC_READ, 0x4847, 0x1a },
 { "sound/hdspm.h", "SNDRV_HDSPM_IOCTL_GET_VERSION", _IOC_READ, 0x4848, 0x20 },
+{ "sound/pcm.h", "SNDRV_PCM_IOCTL_STATUS32", _IOC_READ, 0x4120, 0x6c },
+{ "sound/pcm.h", "SNDRV_PCM_IOCTL_STATUS64", _IOC_READ, 0x4120, 0x80 },
+{ "sound/pcm.h", "SNDRV_PCM_IOCTL_STATUS_EXT32", _IOC_READ|_IOC_WRITE, 0x4124, 0x6c },
+{ "sound/pcm.h", "SNDRV_PCM_IOCTL_STATUS_EXT64", _IOC_READ|_IOC_WRITE, 0x4124, 0x80 },
 { "sound/sb16_csp.h", "SNDRV_SB_CSP_IOCTL_INFO", _IOC_READ, 0x4810, 0x26 },
 { "sound/sb16_csp.h", "SNDRV_SB_CSP_IOCTL_LOAD_CODE", _IOC_WRITE, 0x4811, 0x3012 },
 { "sound/sb16_csp.h", "SNDRV_SB_CSP_IOCTL_PAUSE", _IOC_NONE, 0x4815, 0x00 },
 { "staging/android/ashmem.h", "ASHMEM_UNPIN", _IOC_WRITE, 0x7708, 0x08 },
 { "staging/android/ion.h", "ION_IOC_ALLOC", _IOC_READ|_IOC_WRITE, 0x4900, 0x18 },
 { "staging/android/ion.h", "ION_IOC_HEAP_QUERY", _IOC_READ|_IOC_WRITE, 0x4908, 0x18 },
-{ "staging/android/vsoc_shm.h", "VSOC_COND_WAIT", _IOC_READ|_IOC_WRITE, 0xf507, 0x20 },
-{ "staging/android/vsoc_shm.h", "VSOC_COND_WAKE", _IOC_NONE, 0xf508, 0x00 },
-{ "staging/android/vsoc_shm.h", "VSOC_CREATE_FD_SCOPED_PERMISSION", _IOC_WRITE, 0xf500, 0x10 },
-{ "staging/android/vsoc_shm.h", "VSOC_DESCRIBE_REGION", _IOC_READ, 0xf504, 0x3c },
-{ "staging/android/vsoc_shm.h", "VSOC_GET_FD_SCOPED_PERMISSION", _IOC_READ, 0xf501, 0x10 },
-{ "staging/android/vsoc_shm.h", "VSOC_MAYBE_SEND_INTERRUPT_TO_HOST", _IOC_NONE, 0xf502, 0x00 },
-{ "staging/android/vsoc_shm.h", "VSOC_SELF_INTERRUPT", _IOC_NONE, 0xf505, 0x00 },
-{ "staging/android/vsoc_shm.h", "VSOC_SEND_INTERRUPT_TO_HOST", _IOC_NONE, 0xf506, 0x00 },
-{ "staging/android/vsoc_shm.h", "VSOC_WAIT_FOR_INCOMING_INTERRUPT", _IOC_NONE, 0xf503, 0x00 },
 { "video/da8xx-fb.h", "FBIGET_BRIGHTNESS", _IOC_READ, 0x4603, 0x04 },
 { "video/da8xx-fb.h", "FBIGET_COLOR", _IOC_READ, 0x4605, 0x04 },
 { "video/da8xx-fb.h", "FBIOGET_CONTRAST", _IOC_READ, 0x4601, 0x04 },
index 92c8c186ce1c8e866ccddadcb3db27b4a557cafd..0bded58cb7bfc18fe43ce6b40184fa53d67f1ca7 100644 (file)
@@ -81,8 +81,8 @@
 { "asm-generic/sockios.h", "FIOSETOWN", 0, 0x8901, 0 },
 { "asm-generic/sockios.h", "SIOCATMARK", 0, 0x8905, 0 },
 { "asm-generic/sockios.h", "SIOCGPGRP", 0, 0x8904, 0 },
-{ "asm-generic/sockios.h", "SIOCGSTAMP", 0, 0x8906, 0 },
-{ "asm-generic/sockios.h", "SIOCGSTAMPNS", 0, 0x8907, 0 },
+{ "asm-generic/sockios.h", "SIOCGSTAMPNS_OLD", 0, 0x8907, 0 },
+{ "asm-generic/sockios.h", "SIOCGSTAMP_OLD", 0, 0x8906, 0 },
 { "asm-generic/sockios.h", "SIOCSPGRP", 0, 0x8902, 0 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_BO_LIST", _IOC_READ|_IOC_WRITE, 0x6443, 0x18 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_CS", _IOC_READ|_IOC_WRITE, 0x6444, 0x18 },
 { "drm/drm.h", "DRM_IOCTL_MODE_GETCRTC", _IOC_READ|_IOC_WRITE, 0x64a1, 0x68 },
 { "drm/drm.h", "DRM_IOCTL_MODE_GETENCODER", _IOC_READ|_IOC_WRITE, 0x64a6, 0x14 },
 { "drm/drm.h", "DRM_IOCTL_MODE_GETFB", _IOC_READ|_IOC_WRITE, 0x64ad, 0x1c },
+{ "drm/drm.h", "DRM_IOCTL_MODE_GETFB2", _IOC_READ|_IOC_WRITE, 0x64ce, 0x64 },
 { "drm/drm.h", "DRM_IOCTL_MODE_GETGAMMA", _IOC_READ|_IOC_WRITE, 0x64a4, 0x20 },
 { "drm/drm.h", "DRM_IOCTL_MODE_GETPLANE", _IOC_READ|_IOC_WRITE, 0x64b6, 0x20 },
 { "drm/drm.h", "DRM_IOCTL_MODE_GETPLANERESOURCES", _IOC_READ|_IOC_WRITE, 0x64b5, 0x0c },
 { "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_QUERY", _IOC_READ|_IOC_WRITE, 0x64cb, 0x18 },
 { "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_TIMELINE_SIGNAL", _IOC_READ|_IOC_WRITE, 0x64cd, 0x18 },
+{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_TIMELINE_WAIT", _IOC_READ|_IOC_WRITE, 0x64ca, 0x28 },
+{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_TRANSFER", _IOC_READ|_IOC_WRITE, 0x64cc, 0x20 },
 { "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/i915_drm.h", "DRM_IOCTL_I915_FREE", _IOC_WRITE, 0x6449, 0x08 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_BUSY", _IOC_READ|_IOC_WRITE, 0x6457, 0x08 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CONTEXT_CREATE", _IOC_READ|_IOC_WRITE, 0x646d, 0x08 },
+{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CONTEXT_CREATE_EXT", _IOC_READ|_IOC_WRITE, 0x646d, 0x10 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CONTEXT_DESTROY", _IOC_WRITE, 0x646e, 0x08 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CONTEXT_GETPARAM", _IOC_READ|_IOC_WRITE, 0x6474, 0x18 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM", _IOC_READ|_IOC_WRITE, 0x6475, 0x18 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_MADVISE", _IOC_READ|_IOC_WRITE, 0x6466, 0x0c },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_MMAP", _IOC_READ|_IOC_WRITE, 0x645e, 0x28 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_MMAP_GTT", _IOC_READ|_IOC_WRITE, 0x6464, 0x10 },
+{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_MMAP_OFFSET", _IOC_READ|_IOC_WRITE, 0x6464, 0x20 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_PIN", _IOC_READ|_IOC_WRITE, 0x6455, 0x18 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_PREAD", _IOC_WRITE, 0x645c, 0x20 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_PWRITE", _IOC_WRITE, 0x645d, 0x20 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_THROTTLE", _IOC_NONE, 0x6458, 0x00 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_UNPIN", _IOC_WRITE, 0x6456, 0x08 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_USERPTR", _IOC_READ|_IOC_WRITE, 0x6473, 0x18 },
+{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_VM_CREATE", _IOC_READ|_IOC_WRITE, 0x647a, 0x10 },
+{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_VM_DESTROY", _IOC_WRITE, 0x647b, 0x10 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_WAIT", _IOC_READ|_IOC_WRITE, 0x646c, 0x10 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GETPARAM", _IOC_READ|_IOC_WRITE, 0x6446, 0x08 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GET_PIPE_FROM_CRTC_ID", _IOC_READ|_IOC_WRITE, 0x6465, 0x08 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_SET_SPRITE_COLORKEY", _IOC_READ|_IOC_WRITE, 0x646b, 0x14 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_SET_VBLANK_PIPE", _IOC_WRITE, 0x644d, 0x04 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_VBLANK_SWAP", _IOC_READ|_IOC_WRITE, 0x644f, 0x0c },
+{ "drm/i915_drm.h", "I915_PERF_IOCTL_CONFIG", _IOC_NONE, 0x6902, 0x00 },
 { "drm/i915_drm.h", "I915_PERF_IOCTL_DISABLE", _IOC_NONE, 0x6901, 0x00 },
 { "drm/i915_drm.h", "I915_PERF_IOCTL_ENABLE", _IOC_NONE, 0x6900, 0x00 },
+{ "drm/lima_drm.h", "DRM_IOCTL_LIMA_CTX_CREATE", _IOC_READ, 0x6445, 0x08 },
+{ "drm/lima_drm.h", "DRM_IOCTL_LIMA_CTX_FREE", _IOC_WRITE, 0x6446, 0x08 },
+{ "drm/lima_drm.h", "DRM_IOCTL_LIMA_GEM_CREATE", _IOC_READ|_IOC_WRITE, 0x6441, 0x10 },
+{ "drm/lima_drm.h", "DRM_IOCTL_LIMA_GEM_INFO", _IOC_READ|_IOC_WRITE, 0x6442, 0x10 },
+{ "drm/lima_drm.h", "DRM_IOCTL_LIMA_GEM_SUBMIT", _IOC_WRITE, 0x6443, 0x30 },
+{ "drm/lima_drm.h", "DRM_IOCTL_LIMA_GEM_WAIT", _IOC_WRITE, 0x6444, 0x10 },
+{ "drm/lima_drm.h", "DRM_IOCTL_LIMA_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6440, 0x10 },
 { "drm/mga_drm.h", "DRM_IOCTL_MGA_BLIT", _IOC_WRITE, 0x6448, 0x34 },
 { "drm/mga_drm.h", "DRM_IOCTL_MGA_CLEAR", _IOC_WRITE, 0x6444, 0x14 },
 { "drm/mga_drm.h", "DRM_IOCTL_MGA_DMA_BOOTSTRAP", _IOC_READ|_IOC_WRITE, 0x644c, 0x1c },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_INFO", _IOC_READ|_IOC_WRITE, 0x6443, 0x18 },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_MADVISE", _IOC_READ|_IOC_WRITE, 0x6448, 0x0c },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_NEW", _IOC_READ|_IOC_WRITE, 0x6442, 0x10 },
-{ "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_SUBMIT", _IOC_READ|_IOC_WRITE, 0x6446, 0x28 },
+{ "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_SUBMIT", _IOC_READ|_IOC_WRITE, 0x6446, 0x48 },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6440, 0x10 },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_SUBMITQUEUE_CLOSE", _IOC_WRITE, 0x644b, 0x04 },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_SUBMITQUEUE_NEW", _IOC_READ|_IOC_WRITE, 0x644a, 0x0c },
+{ "drm/msm_drm.h", "DRM_IOCTL_MSM_SUBMITQUEUE_QUERY", _IOC_WRITE, 0x644c, 0x18 },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_WAIT_FENCE", _IOC_WRITE, 0x6447, 0x1c },
 { "drm/nouveau_drm.h", "DRM_IOCTL_NOUVEAU_GEM_CPU_FINI", _IOC_WRITE, 0x6483, 0x04 },
 { "drm/nouveau_drm.h", "DRM_IOCTL_NOUVEAU_GEM_CPU_PREP", _IOC_WRITE, 0x6482, 0x08 },
 { "drm/omap_drm.h", "DRM_IOCTL_OMAP_GEM_NEW", _IOC_READ|_IOC_WRITE, 0x6443, 0x10 },
 { "drm/omap_drm.h", "DRM_IOCTL_OMAP_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6440, 0x10 },
 { "drm/omap_drm.h", "DRM_IOCTL_OMAP_SET_PARAM", _IOC_WRITE, 0x6441, 0x10 },
+{ "drm/panfrost_drm.h", "DRM_IOCTL_PANFROST_CREATE_BO", _IOC_READ|_IOC_WRITE, 0x6442, 0x18 },
+{ "drm/panfrost_drm.h", "DRM_IOCTL_PANFROST_GET_BO_OFFSET", _IOC_READ|_IOC_WRITE, 0x6445, 0x10 },
+{ "drm/panfrost_drm.h", "DRM_IOCTL_PANFROST_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6444, 0x10 },
+{ "drm/panfrost_drm.h", "DRM_IOCTL_PANFROST_MADVISE", _IOC_READ|_IOC_WRITE, 0x6448, 0x0c },
+{ "drm/panfrost_drm.h", "DRM_IOCTL_PANFROST_MMAP_BO", _IOC_READ|_IOC_WRITE, 0x6443, 0x10 },
+{ "drm/panfrost_drm.h", "DRM_IOCTL_PANFROST_PERFCNT_DUMP", _IOC_WRITE, 0x6447, 0x08 },
+{ "drm/panfrost_drm.h", "DRM_IOCTL_PANFROST_PERFCNT_ENABLE", _IOC_WRITE, 0x6446, 0x08 },
+{ "drm/panfrost_drm.h", "DRM_IOCTL_PANFROST_SUBMIT", _IOC_WRITE, 0x6440, 0x28 },
+{ "drm/panfrost_drm.h", "DRM_IOCTL_PANFROST_WAIT_BO", _IOC_WRITE, 0x6441, 0x10 },
 { "drm/qxl_drm.h", "DRM_IOCTL_QXL_ALLOC", _IOC_READ|_IOC_WRITE, 0x6440, 0x08 },
 { "drm/qxl_drm.h", "DRM_IOCTL_QXL_ALLOC_SURF", _IOC_READ|_IOC_WRITE, 0x6446, 0x18 },
 { "drm/qxl_drm.h", "DRM_IOCTL_QXL_CLIENTCAP", _IOC_WRITE, 0x6445, 0x08 },
 { "drm/v3d_drm.h", "DRM_IOCTL_V3D_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6444, 0x10 },
 { "drm/v3d_drm.h", "DRM_IOCTL_V3D_MMAP_BO", _IOC_READ|_IOC_WRITE, 0x6443, 0x10 },
 { "drm/v3d_drm.h", "DRM_IOCTL_V3D_SUBMIT_CL", _IOC_READ|_IOC_WRITE, 0x6440, 0x38 },
+{ "drm/v3d_drm.h", "DRM_IOCTL_V3D_SUBMIT_CSD", _IOC_WRITE, 0x6447, 0x40 },
 { "drm/v3d_drm.h", "DRM_IOCTL_V3D_SUBMIT_TFU", _IOC_WRITE, 0x6446, 0x44 },
 { "drm/v3d_drm.h", "DRM_IOCTL_V3D_WAIT_BO", _IOC_READ|_IOC_WRITE, 0x6441, 0x10 },
 { "drm/vc4_drm.h", "DRM_IOCTL_VC4_CREATE_BO", _IOC_READ|_IOC_WRITE, 0x6443, 0x10 },
 { "linux/arcfb.h", "FBIO_WAITEVENT", _IOC_NONE, 0x4688, 0x00 },
 { "linux/aspeed-lpc-ctrl.h", "ASPEED_LPC_CTRL_IOCTL_GET_SIZE", _IOC_READ|_IOC_WRITE, 0xb200, 0x10 },
 { "linux/aspeed-lpc-ctrl.h", "ASPEED_LPC_CTRL_IOCTL_MAP", _IOC_WRITE, 0xb201, 0x10 },
+{ "linux/aspeed-p2a-ctrl.h", "ASPEED_P2A_CTRL_IOCTL_GET_MEMORY_CONFIG", _IOC_READ|_IOC_WRITE, 0xb301, 0x10 },
+{ "linux/aspeed-p2a-ctrl.h", "ASPEED_P2A_CTRL_IOCTL_SET_WINDOW", _IOC_WRITE, 0xb300, 0x10 },
 { "linux/atm_eni.h", "ENI_MEMDUMP", _IOC_WRITE, 0x6160, 0x0c },
 { "linux/atm_eni.h", "ENI_SETMULT", _IOC_WRITE, 0x6167, 0x0c },
 { "linux/atm_he.h", "HE_GET_REG", _IOC_WRITE, 0x6160, 0x0c },
 { "linux/auto_fs.h", "AUTOFS_IOC_SETTIMEOUT", _IOC_READ|_IOC_WRITE, 0x9364, 0x04 },
 { "linux/auto_fs.h", "AUTOFS_IOC_SETTIMEOUT32", _IOC_READ|_IOC_WRITE, 0x9364, 0x04 },
 { "linux/blkpg.h", "BLKPG", _IOC_NONE, 0x1269, 0x00 },
+{ "linux/blkzoned.h", "BLKCLOSEZONE", _IOC_WRITE, 0x1287, 0x10 },
+{ "linux/blkzoned.h", "BLKFINISHZONE", _IOC_WRITE, 0x1288, 0x10 },
 { "linux/blkzoned.h", "BLKGETNRZONES", _IOC_READ, 0x1285, 0x04 },
 { "linux/blkzoned.h", "BLKGETZONESZ", _IOC_READ, 0x1284, 0x04 },
+{ "linux/blkzoned.h", "BLKOPENZONE", _IOC_WRITE, 0x1286, 0x10 },
 { "linux/blkzoned.h", "BLKREPORTZONE", _IOC_READ|_IOC_WRITE, 0x1282, 0x10 },
 { "linux/blkzoned.h", "BLKRESETZONE", _IOC_WRITE, 0x1283, 0x10 },
 { "linux/bt-bmc.h", "BT_BMC_IOCTL_SMS_ATN", _IOC_NONE, 0xb100, 0x00 },
 { "linux/btrfs.h", "BTRFS_IOC_SNAP_CREATE", _IOC_WRITE, 0x9401, 0x1000 },
 { "linux/btrfs.h", "BTRFS_IOC_SNAP_CREATE_V2", _IOC_WRITE, 0x9417, 0x1000 },
 { "linux/btrfs.h", "BTRFS_IOC_SNAP_DESTROY", _IOC_WRITE, 0x940f, 0x1000 },
+{ "linux/btrfs.h", "BTRFS_IOC_SNAP_DESTROY_V2", _IOC_WRITE, 0x943f, 0x1000 },
 { "linux/btrfs.h", "BTRFS_IOC_SPACE_INFO", _IOC_READ|_IOC_WRITE, 0x9414, 0x10 },
 { "linux/btrfs.h", "BTRFS_IOC_START_SYNC", _IOC_READ, 0x9418, 0x08 },
 { "linux/btrfs.h", "BTRFS_IOC_SUBVOL_CREATE", _IOC_WRITE, 0x940e, 0x1000 },
 { "linux/cdrom.h", "DVD_READ_STRUCT", 0, 0x5390, 0 },
 { "linux/cdrom.h", "DVD_WRITE_STRUCT", 0, 0x5391, 0 },
 { "linux/cec.h", "CEC_ADAP_G_CAPS", _IOC_READ|_IOC_WRITE, 0x6100, 0x4c },
+{ "linux/cec.h", "CEC_ADAP_G_CONNECTOR_INFO", _IOC_READ, 0x610a, 0x44 },
 { "linux/cec.h", "CEC_ADAP_G_LOG_ADDRS", _IOC_READ, 0x6103, 0x5c },
 { "linux/cec.h", "CEC_ADAP_G_PHYS_ADDR", _IOC_READ, 0x6101, 0x02 },
 { "linux/cec.h", "CEC_ADAP_S_LOG_ADDRS", _IOC_READ|_IOC_WRITE, 0x6104, 0x5c },
 { "linux/dm-ioctl.h", "DM_DEV_STATUS", _IOC_READ|_IOC_WRITE, 0xfd07, 0x138 },
 { "linux/dm-ioctl.h", "DM_DEV_SUSPEND", _IOC_READ|_IOC_WRITE, 0xfd06, 0x138 },
 { "linux/dm-ioctl.h", "DM_DEV_WAIT", _IOC_READ|_IOC_WRITE, 0xfd08, 0x138 },
+{ "linux/dm-ioctl.h", "DM_GET_TARGET_VERSION", _IOC_READ|_IOC_WRITE, 0xfd11, 0x138 },
 { "linux/dm-ioctl.h", "DM_LIST_DEVICES", _IOC_READ|_IOC_WRITE, 0xfd02, 0x138 },
 { "linux/dm-ioctl.h", "DM_LIST_VERSIONS", _IOC_READ|_IOC_WRITE, 0xfd0d, 0x138 },
 { "linux/dm-ioctl.h", "DM_REMOVE_ALL", _IOC_READ|_IOC_WRITE, 0xfd01, 0x138 },
 { "linux/dm-ioctl.h", "DM_TARGET_MSG", _IOC_READ|_IOC_WRITE, 0xfd0e, 0x138 },
 { "linux/dm-ioctl.h", "DM_VERSION", _IOC_READ|_IOC_WRITE, 0xfd00, 0x138 },
 { "linux/dma-buf.h", "DMA_BUF_IOCTL_SYNC", _IOC_WRITE, 0x6200, 0x08 },
+{ "linux/dma-buf.h", "DMA_BUF_SET_NAME_A", _IOC_WRITE, 0x6201, 0x04 },
+{ "linux/dma-buf.h", "DMA_BUF_SET_NAME_B", _IOC_WRITE, 0x6201, 0x08 },
+{ "linux/dma-heap.h", "DMA_HEAP_IOCTL_ALLOC", _IOC_READ|_IOC_WRITE, 0x4800, 0x18 },
 { "linux/dn.h", "OSIOCGNETADDR", _IOC_READ, 0x89e1, 0x04 },
 { "linux/dn.h", "OSIOCSNETADDR", _IOC_WRITE, 0x89e0, 0x04 },
 { "linux/dn.h", "SIOCGNETADDR", _IOC_READ, 0x89e1, 0x04 },
 { "linux/firewire-cdev.h", "FW_CDEV_IOC_START_ISO", _IOC_WRITE, 0x230a, 0x10 },
 { "linux/firewire-cdev.h", "FW_CDEV_IOC_STOP_ISO", _IOC_WRITE, 0x230b, 0x04 },
 { "linux/fpga-dfl.h", "DFL_FPGA_CHECK_EXTENSION", _IOC_NONE, 0xb601, 0x00 },
+{ "linux/fpga-dfl.h", "DFL_FPGA_FME_ERR_GET_IRQ_NUM", _IOC_READ, 0xb683, 0x04 },
+{ "linux/fpga-dfl.h", "DFL_FPGA_FME_ERR_SET_IRQ", _IOC_WRITE, 0xb684, 0x08 },
+{ "linux/fpga-dfl.h", "DFL_FPGA_FME_PORT_ASSIGN", _IOC_WRITE, 0xb682, 0x04 },
 { "linux/fpga-dfl.h", "DFL_FPGA_FME_PORT_PR", _IOC_NONE, 0xb680, 0x00 },
+{ "linux/fpga-dfl.h", "DFL_FPGA_FME_PORT_RELEASE", _IOC_WRITE, 0xb681, 0x04 },
 { "linux/fpga-dfl.h", "DFL_FPGA_GET_API_VERSION", _IOC_NONE, 0xb600, 0x00 },
 { "linux/fpga-dfl.h", "DFL_FPGA_PORT_DMA_MAP", _IOC_NONE, 0xb643, 0x00 },
 { "linux/fpga-dfl.h", "DFL_FPGA_PORT_DMA_UNMAP", _IOC_NONE, 0xb644, 0x00 },
+{ "linux/fpga-dfl.h", "DFL_FPGA_PORT_ERR_GET_IRQ_NUM", _IOC_READ, 0xb645, 0x04 },
+{ "linux/fpga-dfl.h", "DFL_FPGA_PORT_ERR_SET_IRQ", _IOC_WRITE, 0xb646, 0x08 },
 { "linux/fpga-dfl.h", "DFL_FPGA_PORT_GET_INFO", _IOC_NONE, 0xb641, 0x00 },
 { "linux/fpga-dfl.h", "DFL_FPGA_PORT_GET_REGION_INFO", _IOC_NONE, 0xb642, 0x00 },
 { "linux/fpga-dfl.h", "DFL_FPGA_PORT_RESET", _IOC_NONE, 0xb640, 0x00 },
+{ "linux/fpga-dfl.h", "DFL_FPGA_PORT_UINT_GET_IRQ_NUM", _IOC_READ, 0xb647, 0x04 },
+{ "linux/fpga-dfl.h", "DFL_FPGA_PORT_UINT_SET_IRQ", _IOC_WRITE, 0xb648, 0x08 },
 { "linux/fs.h", "BLKALIGNOFF", _IOC_NONE, 0x127a, 0x00 },
 { "linux/fs.h", "BLKBSZGET", _IOC_READ, 0x1270, 0x04 },
 { "linux/fs.h", "BLKBSZSET", _IOC_WRITE, 0x1271, 0x04 },
 { "linux/fs.h", "FS_IOC_GETFLAGS", _IOC_READ, 0x6601, 0x04 },
 { "linux/fs.h", "FS_IOC_GETFSLABEL", _IOC_READ, 0x9431, 0x100 },
 { "linux/fs.h", "FS_IOC_GETVERSION", _IOC_READ, 0x7601, 0x04 },
-{ "linux/fs.h", "FS_IOC_GET_ENCRYPTION_POLICY", _IOC_WRITE, 0x6615, 0x0c },
-{ "linux/fs.h", "FS_IOC_GET_ENCRYPTION_PWSALT", _IOC_WRITE, 0x6614, 0x10 },
 { "linux/fs.h", "FS_IOC_SETFLAGS", _IOC_WRITE, 0x6602, 0x04 },
 { "linux/fs.h", "FS_IOC_SETFSLABEL", _IOC_WRITE, 0x9432, 0x100 },
 { "linux/fs.h", "FS_IOC_SETVERSION", _IOC_WRITE, 0x7602, 0x04 },
-{ "linux/fs.h", "FS_IOC_SET_ENCRYPTION_POLICY", _IOC_READ, 0x6613, 0x0c },
+{ "linux/fscrypt.h", "FS_IOC_ADD_ENCRYPTION_KEY", _IOC_READ|_IOC_WRITE, 0x6617, 0x50 },
+{ "linux/fscrypt.h", "FS_IOC_GET_ENCRYPTION_KEY_STATUS", _IOC_READ|_IOC_WRITE, 0x661a, 0x80 },
+{ "linux/fscrypt.h", "FS_IOC_GET_ENCRYPTION_NONCE", _IOC_READ, 0x661b, 0x10 },
+{ "linux/fscrypt.h", "FS_IOC_GET_ENCRYPTION_POLICY", _IOC_WRITE, 0x6615, 0x0c },
+{ "linux/fscrypt.h", "FS_IOC_GET_ENCRYPTION_POLICY_EX", _IOC_READ|_IOC_WRITE, 0x6616, 0x09 },
+{ "linux/fscrypt.h", "FS_IOC_GET_ENCRYPTION_PWSALT", _IOC_WRITE, 0x6614, 0x10 },
+{ "linux/fscrypt.h", "FS_IOC_REMOVE_ENCRYPTION_KEY", _IOC_READ|_IOC_WRITE, 0x6618, 0x40 },
+{ "linux/fscrypt.h", "FS_IOC_REMOVE_ENCRYPTION_KEY_ALL_USERS", _IOC_READ|_IOC_WRITE, 0x6619, 0x40 },
+{ "linux/fscrypt.h", "FS_IOC_SET_ENCRYPTION_POLICY", _IOC_READ, 0x6613, 0x0c },
 { "linux/fsi.h", "FSI_SCOM_CHECK", _IOC_READ, 0x7300, 0x04 },
 { "linux/fsi.h", "FSI_SCOM_READ", _IOC_READ|_IOC_WRITE, 0x7301, 0x20 },
 { "linux/fsi.h", "FSI_SCOM_RESET", _IOC_WRITE, 0x7303, 0x04 },
 { "linux/fsl_hypervisor.h", "FSL_HV_IOCTL_PARTITION_STOP", _IOC_READ|_IOC_WRITE, 0xaf04, 0x08 },
 { "linux/fsl_hypervisor.h", "FSL_HV_IOCTL_SETPROP", _IOC_READ|_IOC_WRITE, 0xaf08, 0x28 },
 { "linux/fsmap.h", "FS_IOC_GETFSMAP", _IOC_READ|_IOC_WRITE, 0x583b, 0xc0 },
+{ "linux/fsverity.h", "FS_IOC_ENABLE_VERITY", _IOC_WRITE, 0x6685, 0x80 },
+{ "linux/fsverity.h", "FS_IOC_MEASURE_VERITY", _IOC_READ|_IOC_WRITE, 0x6686, 0x04 },
 { "linux/fuse.h", "FUSE_DEV_IOC_CLONE", _IOC_READ, 0xe500, 0x04 },
 { "linux/genwqe/genwqe_card.h", "GENWQE_EXECUTE_DDCB", _IOC_READ|_IOC_WRITE, 0xa532, 0xe8 },
 { "linux/genwqe/genwqe_card.h", "GENWQE_EXECUTE_RAW_DDCB", _IOC_READ|_IOC_WRITE, 0xa533, 0xe8 },
 { "linux/genwqe/genwqe_card.h", "GENWQE_WRITE_REG16", _IOC_WRITE, 0xa523, 0x10 },
 { "linux/genwqe/genwqe_card.h", "GENWQE_WRITE_REG32", _IOC_WRITE, 0xa521, 0x10 },
 { "linux/genwqe/genwqe_card.h", "GENWQE_WRITE_REG64", _IOC_WRITE, 0xa51f, 0x10 },
-{ "linux/gigaset_dev.h", "GIGASET_BRKCHARS", _IOC_WRITE, 0x4702, 0x06 },
-{ "linux/gigaset_dev.h", "GIGASET_CONFIG", _IOC_READ|_IOC_WRITE, 0x4701, 0x04 },
-{ "linux/gigaset_dev.h", "GIGASET_REDIR", _IOC_READ|_IOC_WRITE, 0x4700, 0x04 },
-{ "linux/gigaset_dev.h", "GIGASET_VERSION", _IOC_READ|_IOC_WRITE, 0x4703, 0x10 },
 { "linux/gpio.h", "GPIOHANDLE_GET_LINE_VALUES_IOCTL", _IOC_READ|_IOC_WRITE, 0xb408, 0x40 },
+{ "linux/gpio.h", "GPIOHANDLE_SET_CONFIG_IOCTL", _IOC_READ|_IOC_WRITE, 0xb40a, 0x54 },
 { "linux/gpio.h", "GPIOHANDLE_SET_LINE_VALUES_IOCTL", _IOC_READ|_IOC_WRITE, 0xb409, 0x40 },
 { "linux/gpio.h", "GPIO_GET_CHIPINFO_IOCTL", _IOC_READ, 0xb401, 0x44 },
 { "linux/gpio.h", "GPIO_GET_LINEEVENT_IOCTL", _IOC_READ|_IOC_WRITE, 0xb404, 0x30 },
 { "linux/gpio.h", "GPIO_GET_LINEHANDLE_IOCTL", _IOC_READ|_IOC_WRITE, 0xb403, 0x16c },
 { "linux/gpio.h", "GPIO_GET_LINEINFO_IOCTL", _IOC_READ|_IOC_WRITE, 0xb402, 0x48 },
+{ "linux/gpio.h", "GPIO_GET_LINEINFO_UNWATCH_IOCTL", _IOC_READ|_IOC_WRITE, 0xb40c, 0x04 },
+{ "linux/gpio.h", "GPIO_GET_LINEINFO_WATCH_IOCTL", _IOC_READ|_IOC_WRITE, 0xb40b, 0x48 },
 { "linux/gsmmux.h", "GSMIOC_DISABLE_NET", _IOC_NONE, 0x4703, 0x00 },
 { "linux/gsmmux.h", "GSMIOC_ENABLE_NET", _IOC_WRITE, 0x4702, 0x34 },
 { "linux/gsmmux.h", "GSMIOC_GETCONF", _IOC_READ, 0x4700, 0x4c },
+{ "linux/gsmmux.h", "GSMIOC_GETFIRST", _IOC_READ, 0x4704, 0x04 },
 { "linux/gsmmux.h", "GSMIOC_SETCONF", _IOC_WRITE, 0x4701, 0x4c },
 { "linux/hdreg.h", "HDIO_DRIVE_CMD", 0, 0x031f, 0 },
 { "linux/hdreg.h", "HDIO_DRIVE_RESET", 0, 0x031c, 0 },
 { "linux/if_pppox.h", "PPPOEIOCSFWD", _IOC_WRITE, 0xb100, 0x04 },
 { "linux/if_tun.h", "TUNATTACHFILTER", _IOC_WRITE, 0x54d5, 0x08 },
 { "linux/if_tun.h", "TUNDETACHFILTER", _IOC_WRITE, 0x54d6, 0x08 },
+{ "linux/if_tun.h", "TUNGETDEVNETNS", _IOC_NONE, 0x54e3, 0x00 },
 { "linux/if_tun.h", "TUNGETFEATURES", _IOC_READ, 0x54cf, 0x04 },
 { "linux/if_tun.h", "TUNGETFILTER", _IOC_READ, 0x54db, 0x08 },
 { "linux/if_tun.h", "TUNGETIFF", _IOC_READ, 0x54d2, 0x04 },
 { "linux/ipmi_bmc.h", "IPMI_BMC_IOCTL_CLEAR_SMS_ATN", _IOC_NONE, 0xb101, 0x00 },
 { "linux/ipmi_bmc.h", "IPMI_BMC_IOCTL_FORCE_ABORT", _IOC_NONE, 0xb102, 0x00 },
 { "linux/ipmi_bmc.h", "IPMI_BMC_IOCTL_SET_SMS_ATN", _IOC_NONE, 0xb100, 0x00 },
-{ "linux/isdn.h", "IIOCDBGVAR", _IOC_NONE, 0x497f, 0x00 },
-{ "linux/isdn.h", "IIOCDRVCTL", _IOC_NONE, 0x4980, 0x00 },
-{ "linux/isdn.h", "IIOCGETCPS", _IOC_NONE, 0x4915, 0x00 },
-{ "linux/isdn.h", "IIOCGETDVR", _IOC_NONE, 0x4916, 0x00 },
-{ "linux/isdn.h", "IIOCGETMAP", _IOC_NONE, 0x4911, 0x00 },
-{ "linux/isdn.h", "IIOCGETPRF", _IOC_NONE, 0x490f, 0x00 },
-{ "linux/isdn.h", "IIOCGETSET", _IOC_NONE, 0x4908, 0x00 },
-{ "linux/isdn.h", "IIOCNETAIF", _IOC_NONE, 0x4901, 0x00 },
-{ "linux/isdn.h", "IIOCNETALN", _IOC_NONE, 0x4920, 0x00 },
-{ "linux/isdn.h", "IIOCNETANM", _IOC_NONE, 0x4905, 0x00 },
-{ "linux/isdn.h", "IIOCNETASL", _IOC_NONE, 0x4913, 0x00 },
-{ "linux/isdn.h", "IIOCNETDIF", _IOC_NONE, 0x4902, 0x00 },
-{ "linux/isdn.h", "IIOCNETDIL", _IOC_NONE, 0x4914, 0x00 },
-{ "linux/isdn.h", "IIOCNETDLN", _IOC_NONE, 0x4921, 0x00 },
-{ "linux/isdn.h", "IIOCNETDNM", _IOC_NONE, 0x4906, 0x00 },
-{ "linux/isdn.h", "IIOCNETDWRSET", _IOC_NONE, 0x4918, 0x00 },
-{ "linux/isdn.h", "IIOCNETGCF", _IOC_NONE, 0x4904, 0x00 },
-{ "linux/isdn.h", "IIOCNETGNM", _IOC_NONE, 0x4907, 0x00 },
-{ "linux/isdn.h", "IIOCNETGPN", _IOC_NONE, 0x4922, 0x00 },
-{ "linux/isdn.h", "IIOCNETHUP", _IOC_NONE, 0x490b, 0x00 },
-{ "linux/isdn.h", "IIOCNETLCR", _IOC_NONE, 0x4917, 0x00 },
-{ "linux/isdn.h", "IIOCNETSCF", _IOC_NONE, 0x4903, 0x00 },
-{ "linux/isdn.h", "IIOCSETBRJ", _IOC_NONE, 0x490d, 0x00 },
-{ "linux/isdn.h", "IIOCSETGST", _IOC_NONE, 0x490c, 0x00 },
-{ "linux/isdn.h", "IIOCSETMAP", _IOC_NONE, 0x4912, 0x00 },
-{ "linux/isdn.h", "IIOCSETPRF", _IOC_NONE, 0x4910, 0x00 },
-{ "linux/isdn.h", "IIOCSETSET", _IOC_NONE, 0x4909, 0x00 },
-{ "linux/isdn.h", "IIOCSETVER", _IOC_NONE, 0x490a, 0x00 },
-{ "linux/isdn.h", "IIOCSIGPRF", _IOC_NONE, 0x490e, 0x00 },
-{ "linux/isdn_ppp.h", "PPPIOCBUNDLE", _IOC_WRITE, 0x7481, 0x04 },
-{ "linux/isdn_ppp.h", "PPPIOCGCALLINFO", _IOC_READ|_IOC_WRITE, 0x7480, 0x88 },
-{ "linux/isdn_ppp.h", "PPPIOCGCOMPRESSORS", _IOC_READ, 0x7486, 0x20 },
-{ "linux/isdn_ppp.h", "PPPIOCGIFNAME", _IOC_READ, 0x7488, 0x10 },
-{ "linux/isdn_ppp.h", "PPPIOCGMPFLAGS", _IOC_READ, 0x7482, 0x04 },
-{ "linux/isdn_ppp.h", "PPPIOCSCOMPRESSOR", _IOC_WRITE, 0x7487, 0x04 },
-{ "linux/isdn_ppp.h", "PPPIOCSMPFLAGS", _IOC_WRITE, 0x7483, 0x04 },
-{ "linux/isdn_ppp.h", "PPPIOCSMPMRU", _IOC_WRITE, 0x7485, 0x04 },
-{ "linux/isdn_ppp.h", "PPPIOCSMPMTU", _IOC_WRITE, 0x7484, 0x04 },
+{ "linux/isst_if.h", "ISST_IF_GET_PHY_ID", _IOC_READ|_IOC_WRITE, 0xfe01, 0x04 },
+{ "linux/isst_if.h", "ISST_IF_GET_PLATFORM_INFO", _IOC_READ, 0xfe00, 0x04 },
+{ "linux/isst_if.h", "ISST_IF_IO_CMD", _IOC_WRITE, 0xfe02, 0x04 },
+{ "linux/isst_if.h", "ISST_IF_MBOX_COMMAND", _IOC_READ|_IOC_WRITE, 0xfe03, 0x04 },
+{ "linux/isst_if.h", "ISST_IF_MSR_COMMAND", _IOC_READ|_IOC_WRITE, 0xfe04, 0x04 },
 { "linux/ivtv.h", "IVTV_IOC_DMA_FRAME", _IOC_WRITE, 0x56c0, 0x38 },
 { "linux/ivtv.h", "IVTV_IOC_PASSTHROUGH_MODE", _IOC_WRITE, 0x56c1, 0x04 },
 { "linux/ivtvfb.h", "IVTVFB_IOC_DMA_FRAME", _IOC_WRITE, 0x56c0, 0x0c },
 { "linux/kcov.h", "KCOV_DISABLE", _IOC_NONE, 0x6365, 0x00 },
 { "linux/kcov.h", "KCOV_ENABLE", _IOC_NONE, 0x6364, 0x00 },
 { "linux/kcov.h", "KCOV_INIT_TRACE", _IOC_READ, 0x6301, 0x04 },
+{ "linux/kcov.h", "KCOV_REMOTE_ENABLE", _IOC_WRITE, 0x6366, 0x18 },
 { "linux/kd.h", "GIO_CMAP", 0, 0x4B70, 0 },
 { "linux/kd.h", "GIO_FONT", 0, 0x4B60, 0 },
 { "linux/kd.h", "GIO_FONTX", 0, 0x4B6B, 0 },
 { "linux/kd.h", "PIO_UNISCRNMAP", 0, 0x4B6A, 0 },
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_ACQUIRE_VM", _IOC_WRITE, 0x4b15, 0x08 },
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_ALLOC_MEMORY_OF_GPU", _IOC_READ|_IOC_WRITE, 0x4b16, 0x28 },
+{ "linux/kfd_ioctl.h", "AMDKFD_IOC_ALLOC_QUEUE_GWS", _IOC_READ|_IOC_WRITE, 0x4b1e, 0x10 },
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_CREATE_EVENT", _IOC_READ|_IOC_WRITE, 0x4b08, 0x20 },
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_CREATE_QUEUE", _IOC_READ|_IOC_WRITE, 0x4b02, 0x58 },
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_DBG_ADDRESS_WATCH", _IOC_WRITE, 0x4b0f, 0x10 },
 { "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_SET_TRAP_HANDLER", _IOC_WRITE, 0x4b13, 0x18 },
+{ "linux/kfd_ioctl.h", "AMDKFD_IOC_SMI_EVENTS", _IOC_READ|_IOC_WRITE, 0x4b1f, 0x08 },
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_UNMAP_MEMORY_FROM_GPU", _IOC_READ|_IOC_WRITE, 0x4b19, 0x18 },
 { "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/lirc.h", "LIRC_SET_WIDEBAND_RECEIVER", _IOC_WRITE, 0x6923, 0x04 },
 { "linux/loop.h", "LOOP_CHANGE_FD", 0, 0x4C06, 0 },
 { "linux/loop.h", "LOOP_CLR_FD", 0, 0x4C01, 0 },
+{ "linux/loop.h", "LOOP_CONFIGURE", 0, 0x4C0A, 0 },
 { "linux/loop.h", "LOOP_CTL_ADD", 0, 0x4C80, 0 },
 { "linux/loop.h", "LOOP_CTL_GET_FREE", 0, 0x4C82, 0 },
 { "linux/loop.h", "LOOP_CTL_REMOVE", 0, 0x4C81, 0 },
 { "linux/nsfs.h", "NS_GET_OWNER_UID", _IOC_NONE, 0xb704, 0x00 },
 { "linux/nsfs.h", "NS_GET_PARENT", _IOC_NONE, 0xb702, 0x00 },
 { "linux/nsfs.h", "NS_GET_USERNS", _IOC_NONE, 0xb701, 0x00 },
+{ "linux/nvme_ioctl.h", "NVME_IOCTL_ADMIN64_CMD", _IOC_READ|_IOC_WRITE, 0x4e47, 0x50 },
 { "linux/nvme_ioctl.h", "NVME_IOCTL_ADMIN_CMD", _IOC_READ|_IOC_WRITE, 0x4e41, 0x48 },
 { "linux/nvme_ioctl.h", "NVME_IOCTL_ID", _IOC_NONE, 0x4e40, 0x00 },
+{ "linux/nvme_ioctl.h", "NVME_IOCTL_IO64_CMD", _IOC_READ|_IOC_WRITE, 0x4e48, 0x50 },
 { "linux/nvme_ioctl.h", "NVME_IOCTL_IO_CMD", _IOC_READ|_IOC_WRITE, 0x4e43, 0x48 },
 { "linux/nvme_ioctl.h", "NVME_IOCTL_RESCAN", _IOC_NONE, 0x4e46, 0x00 },
 { "linux/nvme_ioctl.h", "NVME_IOCTL_RESET", _IOC_NONE, 0x4e44, 0x00 },
 { "linux/omapfb.h", "OMAPFB_WAITFORGO", _IOC_NONE, 0x4f3c, 0x00 },
 { "linux/omapfb.h", "OMAPFB_WAITFORVSYNC", _IOC_NONE, 0x4f39, 0x00 },
 { "linux/pcitest.h", "PCITEST_BAR", _IOC_NONE, 0x5001, 0x00 },
+{ "linux/pcitest.h", "PCITEST_CLEAR_IRQ", _IOC_NONE, 0x5010, 0x00 },
 { "linux/pcitest.h", "PCITEST_COPY", _IOC_WRITE, 0x5006, 0x04 },
 { "linux/pcitest.h", "PCITEST_GET_IRQTYPE", _IOC_NONE, 0x5009, 0x00 },
 { "linux/pcitest.h", "PCITEST_LEGACY_IRQ", _IOC_NONE, 0x5002, 0x00 },
 { "linux/phantom.h", "PHN_SET_REG", _IOC_WRITE, 0x7001, 0x04 },
 { "linux/phantom.h", "PHN_SET_REGS", _IOC_WRITE, 0x7003, 0x04 },
 { "linux/pktcdvd.h", "PACKET_CTRL_CMD", _IOC_READ|_IOC_WRITE, 0x5801, 0x18 },
+{ "linux/platform_data/cros_ec_chardev.h", "CROS_EC_DEV_IOCEVENTMASK", _IOC_NONE, 0xec02, 0x00 },
+{ "linux/platform_data/cros_ec_chardev.h", "CROS_EC_DEV_IOCRDMEM", _IOC_READ|_IOC_WRITE, 0xec01, 0x108 },
+{ "linux/platform_data/cros_ec_chardev.h", "CROS_EC_DEV_IOCXCMD", _IOC_READ|_IOC_WRITE, 0xec00, 0x14 },
 { "linux/platform_data/media/si4713.h", "SI4713_IOC_MEASURE_RNL", _IOC_READ|_IOC_WRITE, 0x56c0, 0x1c },
 { "linux/pmu.h", "PMU_IOC_CAN_SLEEP", _IOC_READ, 0x4205, 0x04 },
 { "linux/pmu.h", "PMU_IOC_GET_BACKLIGHT", _IOC_READ, 0x4201, 0x04 },
 { "linux/ppp-ioctl.h", "PPPIOCGDEBUG", _IOC_READ, 0x7441, 0x04 },
 { "linux/ppp-ioctl.h", "PPPIOCGFLAGS", _IOC_READ, 0x745a, 0x04 },
 { "linux/ppp-ioctl.h", "PPPIOCGIDLE", _IOC_READ, 0x743f, 0x08 },
+{ "linux/ppp-ioctl.h", "PPPIOCGIDLE32", _IOC_READ, 0x743f, 0x08 },
+{ "linux/ppp-ioctl.h", "PPPIOCGIDLE64", _IOC_READ, 0x743f, 0x10 },
 { "linux/ppp-ioctl.h", "PPPIOCGL2TPSTATS", _IOC_READ, 0x7436, 0x48 },
 { "linux/ppp-ioctl.h", "PPPIOCGMRU", _IOC_READ, 0x7453, 0x04 },
 { "linux/ppp-ioctl.h", "PPPIOCGNPMODE", _IOC_READ|_IOC_WRITE, 0x744c, 0x08 },
 { "linux/pr.h", "IOC_PR_RESERVE", _IOC_WRITE, 0x70c9, 0x10 },
 { "linux/psp-sev.h", "SEV_ISSUE_CMD", _IOC_READ|_IOC_WRITE, 0x5300, 0x10 },
 { "linux/ptp_clock.h", "PTP_CLOCK_GETCAPS", _IOC_READ, 0x3d01, 0x50 },
+{ "linux/ptp_clock.h", "PTP_CLOCK_GETCAPS2", _IOC_READ, 0x3d0a, 0x50 },
 { "linux/ptp_clock.h", "PTP_ENABLE_PPS", _IOC_WRITE, 0x3d04, 0x04 },
+{ "linux/ptp_clock.h", "PTP_ENABLE_PPS2", _IOC_WRITE, 0x3d0d, 0x04 },
 { "linux/ptp_clock.h", "PTP_EXTTS_REQUEST", _IOC_WRITE, 0x3d02, 0x10 },
+{ "linux/ptp_clock.h", "PTP_EXTTS_REQUEST2", _IOC_WRITE, 0x3d0b, 0x10 },
 { "linux/ptp_clock.h", "PTP_PEROUT_REQUEST", _IOC_WRITE, 0x3d03, 0x38 },
+{ "linux/ptp_clock.h", "PTP_PEROUT_REQUEST2", _IOC_WRITE, 0x3d0c, 0x38 },
 { "linux/ptp_clock.h", "PTP_PIN_GETFUNC", _IOC_READ|_IOC_WRITE, 0x3d06, 0x60 },
+{ "linux/ptp_clock.h", "PTP_PIN_GETFUNC2", _IOC_READ|_IOC_WRITE, 0x3d0f, 0x60 },
 { "linux/ptp_clock.h", "PTP_PIN_SETFUNC", _IOC_WRITE, 0x3d07, 0x60 },
+{ "linux/ptp_clock.h", "PTP_PIN_SETFUNC2", _IOC_WRITE, 0x3d10, 0x60 },
 { "linux/ptp_clock.h", "PTP_SYS_OFFSET", _IOC_WRITE, 0x3d05, 0x340 },
+{ "linux/ptp_clock.h", "PTP_SYS_OFFSET2", _IOC_WRITE, 0x3d0e, 0x340 },
 { "linux/ptp_clock.h", "PTP_SYS_OFFSET_EXTENDED", _IOC_READ|_IOC_WRITE, 0x3d09, 0x4c0 },
+{ "linux/ptp_clock.h", "PTP_SYS_OFFSET_EXTENDED2", _IOC_READ|_IOC_WRITE, 0x3d12, 0x4c0 },
 { "linux/ptp_clock.h", "PTP_SYS_OFFSET_PRECISE", _IOC_READ|_IOC_WRITE, 0x3d08, 0x40 },
+{ "linux/ptp_clock.h", "PTP_SYS_OFFSET_PRECISE2", _IOC_READ|_IOC_WRITE, 0x3d11, 0x40 },
 { "linux/radeonfb.h", "FBIO_RADEON_GET_MIRROR", _IOC_READ, 0x4003, 0x04 },
 { "linux/radeonfb.h", "FBIO_RADEON_SET_MIRROR", _IOC_WRITE, 0x4004, 0x04 },
 { "linux/raid/md_u.h", "ADD_NEW_DISK", _IOC_WRITE, 0x0921, 0x14 },
 { "linux/raw.h", "RAW_GETBIND", _IOC_NONE, 0xac01, 0x00 },
 { "linux/raw.h", "RAW_SETBIND", _IOC_NONE, 0xac00, 0x00 },
 { "linux/reiserfs_fs.h", "REISERFS_IOC_UNPACK", _IOC_WRITE, 0xcd01, 0x04 },
+{ "linux/remoteproc_cdev.h", "RPROC_GET_SHUTDOWN_ON_RELEASE", _IOC_READ, 0xb702, 0x04 },
+{ "linux/remoteproc_cdev.h", "RPROC_SET_SHUTDOWN_ON_RELEASE", _IOC_WRITE, 0xb701, 0x04 },
 { "linux/rfkill.h", "RFKILL_IOCTL_NOINPUT", _IOC_NONE, 0x5201, 0x00 },
 { "linux/rio_cm_cdev.h", "RIO_CM_CHAN_ACCEPT", _IOC_READ|_IOC_WRITE, 0x6307, 0x08 },
 { "linux/rio_cm_cdev.h", "RIO_CM_CHAN_BIND", _IOC_WRITE, 0x6305, 0x08 },
 { "linux/scif_ioctl.h", "SCIF_VREADFROM", _IOC_READ|_IOC_WRITE, 0x730c, 0x24 },
 { "linux/scif_ioctl.h", "SCIF_VWRITETO", _IOC_READ|_IOC_WRITE, 0x730d, 0x24 },
 { "linux/scif_ioctl.h", "SCIF_WRITETO", _IOC_READ|_IOC_WRITE, 0x730b, 0x24 },
-{ "linux/seccomp.h", "SECCOMP_IOCTL_NOTIF_ID_VALID", _IOC_READ, 0x2102, 0x08 },
+{ "linux/seccomp.h", "SECCOMP_IOCTL_NOTIF_ADDFD", _IOC_WRITE, 0x2103, 0x18 },
+{ "linux/seccomp.h", "SECCOMP_IOCTL_NOTIF_ID_VALID", _IOC_WRITE, 0x2102, 0x08 },
 { "linux/seccomp.h", "SECCOMP_IOCTL_NOTIF_RECV", _IOC_READ|_IOC_WRITE, 0x2100, 0x50 },
 { "linux/seccomp.h", "SECCOMP_IOCTL_NOTIF_SEND", _IOC_READ|_IOC_WRITE, 0x2101, 0x18 },
 { "linux/sed-opal.h", "IOC_OPAL_ACTIVATE_LSP", _IOC_WRITE, 0x70df, 0x118 },
 { "linux/sed-opal.h", "IOC_OPAL_ADD_USR_TO_LR", _IOC_WRITE, 0x70e4, 0x118 },
 { "linux/sed-opal.h", "IOC_OPAL_ENABLE_DISABLE_MBR", _IOC_WRITE, 0x70e5, 0x110 },
 { "linux/sed-opal.h", "IOC_OPAL_ERASE_LR", _IOC_WRITE, 0x70e6, 0x110 },
+{ "linux/sed-opal.h", "IOC_OPAL_GENERIC_TABLE_RW", _IOC_WRITE, 0x70eb, 0x138 },
 { "linux/sed-opal.h", "IOC_OPAL_LOCK_UNLOCK", _IOC_WRITE, 0x70dd, 0x118 },
 { "linux/sed-opal.h", "IOC_OPAL_LR_SETUP", _IOC_WRITE, 0x70e3, 0x128 },
+{ "linux/sed-opal.h", "IOC_OPAL_MBR_DONE", _IOC_WRITE, 0x70e9, 0x110 },
+{ "linux/sed-opal.h", "IOC_OPAL_PSID_REVERT_TPR", _IOC_WRITE, 0x70e8, 0x108 },
 { "linux/sed-opal.h", "IOC_OPAL_REVERT_TPR", _IOC_WRITE, 0x70e2, 0x108 },
 { "linux/sed-opal.h", "IOC_OPAL_SAVE", _IOC_WRITE, 0x70dc, 0x118 },
 { "linux/sed-opal.h", "IOC_OPAL_SECURE_ERASE_LR", _IOC_WRITE, 0x70e7, 0x110 },
 { "linux/sed-opal.h", "IOC_OPAL_SET_PW", _IOC_WRITE, 0x70e0, 0x220 },
 { "linux/sed-opal.h", "IOC_OPAL_TAKE_OWNERSHIP", _IOC_WRITE, 0x70de, 0x108 },
+{ "linux/sed-opal.h", "IOC_OPAL_WRITE_SHADOW_MBR", _IOC_WRITE, 0x70ea, 0x120 },
 { "linux/serio.h", "SPIOCSTYPE", _IOC_WRITE, 0x7101, 0x04 },
 { "linux/sockios.h", "SIOCADDDLCI", 0, 0x8980, 0 },
 { "linux/sockios.h", "SIOCADDMULTI", 0, 0x8931, 0 },
 { "linux/sockios.h", "SIOCGMIIREG", 0, 0x8948, 0 },
 { "linux/sockios.h", "SIOCGRARP", 0, 0x8961, 0 },
 { "linux/sockios.h", "SIOCGSKNS", 0, 0x894C, 0 },
+{ "linux/sockios.h", "SIOCGSTAMPNS_NEW", _IOC_READ, 0x8907, 0x10 },
+{ "linux/sockios.h", "SIOCGSTAMP_NEW", _IOC_READ, 0x8906, 0x10 },
 { "linux/sockios.h", "SIOCOUTQNSD", 0, 0x894B, 0 },
 { "linux/sockios.h", "SIOCPROTOPRIVATE", 0, 0x89E0, 0 },
 { "linux/sockios.h", "SIOCRTMSG", 0, 0x890D, 0 },
 { "linux/suspend_ioctls.h", "SNAPSHOT_SET_SWAP_AREA", _IOC_WRITE, 0x330d, 0x0c },
 { "linux/suspend_ioctls.h", "SNAPSHOT_UNFREEZE", _IOC_NONE, 0x3302, 0x00 },
 { "linux/switchtec_ioctl.h", "SWITCHTEC_IOCTL_EVENT_CTL", _IOC_READ|_IOC_WRITE, 0x5743, 0x28 },
-{ "linux/switchtec_ioctl.h", "SWITCHTEC_IOCTL_EVENT_SUMMARY", _IOC_READ, 0x5742, 0x198 },
+{ "linux/switchtec_ioctl.h", "SWITCHTEC_IOCTL_EVENT_SUMMARY", _IOC_READ, 0x5742, 0x4d4 },
+{ "linux/switchtec_ioctl.h", "SWITCHTEC_IOCTL_EVENT_SUMMARY_LEGACY", _IOC_READ, 0x5742, 0x198 },
 { "linux/switchtec_ioctl.h", "SWITCHTEC_IOCTL_FLASH_INFO", _IOC_READ, 0x5740, 0x10 },
 { "linux/switchtec_ioctl.h", "SWITCHTEC_IOCTL_FLASH_PART_INFO", _IOC_READ|_IOC_WRITE, 0x5741, 0x10 },
 { "linux/switchtec_ioctl.h", "SWITCHTEC_IOCTL_PFF_TO_PORT", _IOC_READ|_IOC_WRITE, 0x5744, 0x0c },
 { "linux/usb/iowarrior.h", "IOW_GETINFO", _IOC_READ, 0xc003, 0x28 },
 { "linux/usb/iowarrior.h", "IOW_READ", _IOC_WRITE, 0xc002, 0x04 },
 { "linux/usb/iowarrior.h", "IOW_WRITE", _IOC_WRITE, 0xc001, 0x04 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_CONFIGURE", _IOC_NONE, 0x5509, 0x00 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP0_READ", _IOC_READ|_IOC_WRITE, 0x5504, 0x08 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP0_STALL", _IOC_NONE, 0x550c, 0x00 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP0_WRITE", _IOC_WRITE, 0x5503, 0x08 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EPS_INFO", _IOC_READ, 0x550b, 0x3c0 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP_CLEAR_HALT", _IOC_WRITE, 0x550e, 0x04 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP_DISABLE", _IOC_WRITE, 0x5506, 0x04 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP_ENABLE", _IOC_WRITE, 0x5505, 0x09 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP_READ", _IOC_READ|_IOC_WRITE, 0x5508, 0x08 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP_SET_HALT", _IOC_WRITE, 0x550d, 0x04 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP_SET_WEDGE", _IOC_WRITE, 0x550f, 0x04 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP_WRITE", _IOC_WRITE, 0x5507, 0x08 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EVENT_FETCH", _IOC_READ, 0x5502, 0x08 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_INIT", _IOC_WRITE, 0x5500, 0x101 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_RUN", _IOC_NONE, 0x5501, 0x00 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_VBUS_DRAW", _IOC_WRITE, 0x550a, 0x04 },
 { "linux/usb/tmc.h", "USBTMC488_IOCTL_GET_CAPS", _IOC_READ, 0x5b11, 0x01 },
 { "linux/usb/tmc.h", "USBTMC488_IOCTL_GOTO_LOCAL", _IOC_NONE, 0x5b14, 0x00 },
 { "linux/usb/tmc.h", "USBTMC488_IOCTL_LOCAL_LOCKOUT", _IOC_NONE, 0x5b15, 0x00 },
 { "linux/usb/tmc.h", "USBTMC_IOCTL_WRITE", _IOC_READ|_IOC_WRITE, 0x5b0d, 0x10 },
 { "linux/usb/tmc.h", "USBTMC_IOCTL_WRITE_RESULT", _IOC_READ|_IOC_WRITE, 0x5b0f, 0x04 },
 { "linux/usbdevice_fs.h", "USBDEVFS_ALLOC_STREAMS", _IOC_READ, 0x551c, 0x08 },
+{ "linux/usbdevice_fs.h", "USBDEVFS_ALLOW_SUSPEND", _IOC_NONE, 0x5522, 0x00 },
 { "linux/usbdevice_fs.h", "USBDEVFS_BULK", _IOC_READ|_IOC_WRITE, 0x5502, 0x10 },
 { "linux/usbdevice_fs.h", "USBDEVFS_BULK32", _IOC_READ|_IOC_WRITE, 0x5502, 0x10 },
 { "linux/usbdevice_fs.h", "USBDEVFS_CLAIMINTERFACE", _IOC_READ, 0x550f, 0x04 },
 { "linux/usbdevice_fs.h", "USBDEVFS_DISCSIGNAL", _IOC_READ, 0x550e, 0x08 },
 { "linux/usbdevice_fs.h", "USBDEVFS_DISCSIGNAL32", _IOC_READ, 0x550e, 0x08 },
 { "linux/usbdevice_fs.h", "USBDEVFS_DROP_PRIVILEGES", _IOC_WRITE, 0x551e, 0x04 },
+{ "linux/usbdevice_fs.h", "USBDEVFS_FORBID_SUSPEND", _IOC_NONE, 0x5521, 0x00 },
 { "linux/usbdevice_fs.h", "USBDEVFS_FREE_STREAMS", _IOC_READ, 0x551d, 0x08 },
 { "linux/usbdevice_fs.h", "USBDEVFS_GETDRIVER", _IOC_WRITE, 0x5508, 0x104 },
 { "linux/usbdevice_fs.h", "USBDEVFS_GET_CAPABILITIES", _IOC_READ, 0x551a, 0x04 },
 { "linux/usbdevice_fs.h", "USBDEVFS_SETINTERFACE", _IOC_READ, 0x5504, 0x08 },
 { "linux/usbdevice_fs.h", "USBDEVFS_SUBMITURB", _IOC_READ, 0x550a, 0x2c },
 { "linux/usbdevice_fs.h", "USBDEVFS_SUBMITURB32", _IOC_READ, 0x550a, 0x2a },
+{ "linux/usbdevice_fs.h", "USBDEVFS_WAIT_FOR_RESUME", _IOC_NONE, 0x5523, 0x00 },
 { "linux/userfaultfd.h", "UFFDIO_API", _IOC_READ|_IOC_WRITE, 0xaa3f, 0x18 },
 { "linux/userfaultfd.h", "UFFDIO_COPY", _IOC_READ|_IOC_WRITE, 0xaa03, 0x28 },
 { "linux/userfaultfd.h", "UFFDIO_REGISTER", _IOC_READ|_IOC_WRITE, 0xaa00, 0x20 },
 { "linux/userfaultfd.h", "UFFDIO_UNREGISTER", _IOC_READ, 0xaa01, 0x10 },
 { "linux/userfaultfd.h", "UFFDIO_WAKE", _IOC_READ, 0xaa02, 0x10 },
+{ "linux/userfaultfd.h", "UFFDIO_WRITEPROTECT", _IOC_READ|_IOC_WRITE, 0xaa06, 0x18 },
 { "linux/userfaultfd.h", "UFFDIO_ZEROPAGE", _IOC_READ|_IOC_WRITE, 0xaa04, 0x20 },
 { "linux/uvcvideo.h", "UVCIOC_CTRL_MAP", _IOC_READ|_IOC_WRITE, 0x7520, 0x58 },
 { "linux/uvcvideo.h", "UVCIOC_CTRL_QUERY", _IOC_READ|_IOC_WRITE, 0x7521, 0x0c },
 { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_G_FMT", _IOC_READ|_IOC_WRITE, 0x5604, 0x58 },
 { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_G_FRAME_INTERVAL", _IOC_READ|_IOC_WRITE, 0x5615, 0x30 },
 { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_G_SELECTION", _IOC_READ|_IOC_WRITE, 0x563d, 0x40 },
+{ "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_QUERYCAP", _IOC_READ, 0x5600, 0x40 },
 { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_CROP", _IOC_READ|_IOC_WRITE, 0x563c, 0x38 },
 { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_FMT", _IOC_READ|_IOC_WRITE, 0x5605, 0x58 },
 { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_FRAME_INTERVAL", _IOC_READ|_IOC_WRITE, 0x5616, 0x30 },
 { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_SELECTION", _IOC_READ|_IOC_WRITE, 0x563e, 0x40 },
+{ "linux/vboxguest.h", "VBG_IOCTL_ACQUIRE_GUEST_CAPABILITIES", _IOC_READ|_IOC_WRITE, 0x560d, 0x24 },
 { "linux/vboxguest.h", "VBG_IOCTL_CHANGE_FILTER_MASK", _IOC_READ|_IOC_WRITE, 0x560c, 0x20 },
 { "linux/vboxguest.h", "VBG_IOCTL_CHANGE_GUEST_CAPABILITIES", _IOC_READ|_IOC_WRITE, 0x560e, 0x20 },
 { "linux/vboxguest.h", "VBG_IOCTL_CHECK_BALLOON", _IOC_READ|_IOC_WRITE, 0x5611, 0x20 },
 { "linux/vboxguest.h", "VBG_IOCTL_HGCM_CONNECT", _IOC_READ|_IOC_WRITE, 0x5604, 0x9c },
 { "linux/vboxguest.h", "VBG_IOCTL_HGCM_DISCONNECT", _IOC_READ|_IOC_WRITE, 0x5605, 0x1c },
 { "linux/vboxguest.h", "VBG_IOCTL_INTERRUPT_ALL_WAIT_FOR_EVENTS", _IOC_READ|_IOC_WRITE, 0x560b, 0x18 },
-{ "linux/vboxguest.h", "VBG_IOCTL_VMMDEV_REQUEST_BIG", _IOC_READ|_IOC_WRITE, 0x5603, 0x00 },
+{ "linux/vboxguest.h", "VBG_IOCTL_VMMDEV_REQUEST_BIG", _IOC_NONE, 0x5603, 0x00 },
 { "linux/vboxguest.h", "VBG_IOCTL_WAIT_FOR_EVENTS", _IOC_READ|_IOC_WRITE, 0x560a, 0x20 },
 { "linux/vboxguest.h", "VBG_IOCTL_WRITE_CORE_DUMP", _IOC_READ|_IOC_WRITE, 0x5613, 0x1c },
 { "linux/vfio.h", "VFIO_CHECK_EXTENSION", _IOC_NONE, 0x3b65, 0x00 },
+{ "linux/vfio.h", "VFIO_DEVICE_FEATURE", _IOC_NONE, 0x3b75, 0x00 },
 { "linux/vfio.h", "VFIO_DEVICE_GET_GFX_DMABUF", _IOC_NONE, 0x3b73, 0x00 },
 { "linux/vfio.h", "VFIO_DEVICE_GET_INFO", _IOC_NONE, 0x3b6b, 0x00 },
 { "linux/vfio.h", "VFIO_DEVICE_GET_IRQ_INFO", _IOC_NONE, 0x3b6d, 0x00 },
 { "linux/vfio.h", "VFIO_GROUP_GET_STATUS", _IOC_NONE, 0x3b67, 0x00 },
 { "linux/vfio.h", "VFIO_GROUP_SET_CONTAINER", _IOC_NONE, 0x3b68, 0x00 },
 { "linux/vfio.h", "VFIO_GROUP_UNSET_CONTAINER", _IOC_NONE, 0x3b69, 0x00 },
+{ "linux/vfio.h", "VFIO_IOMMU_DIRTY_PAGES", _IOC_NONE, 0x3b75, 0x00 },
 { "linux/vfio.h", "VFIO_IOMMU_DISABLE", _IOC_NONE, 0x3b74, 0x00 },
 { "linux/vfio.h", "VFIO_IOMMU_ENABLE", _IOC_NONE, 0x3b73, 0x00 },
 { "linux/vfio.h", "VFIO_IOMMU_GET_INFO", _IOC_NONE, 0x3b70, 0x00 },
 { "linux/vhost.h", "VHOST_SET_VRING_ERR", _IOC_WRITE, 0xaf22, 0x08 },
 { "linux/vhost.h", "VHOST_SET_VRING_KICK", _IOC_WRITE, 0xaf20, 0x08 },
 { "linux/vhost.h", "VHOST_SET_VRING_NUM", _IOC_WRITE, 0xaf10, 0x08 },
+{ "linux/vhost.h", "VHOST_VDPA_GET_CONFIG", _IOC_READ, 0xaf73, 0x08 },
+{ "linux/vhost.h", "VHOST_VDPA_GET_DEVICE_ID", _IOC_READ, 0xaf70, 0x04 },
+{ "linux/vhost.h", "VHOST_VDPA_GET_STATUS", _IOC_READ, 0xaf71, 0x01 },
+{ "linux/vhost.h", "VHOST_VDPA_GET_VRING_NUM", _IOC_READ, 0xaf76, 0x02 },
+{ "linux/vhost.h", "VHOST_VDPA_SET_CONFIG", _IOC_WRITE, 0xaf74, 0x08 },
+{ "linux/vhost.h", "VHOST_VDPA_SET_CONFIG_CALL", _IOC_WRITE, 0xaf77, 0x04 },
+{ "linux/vhost.h", "VHOST_VDPA_SET_STATUS", _IOC_WRITE, 0xaf72, 0x01 },
+{ "linux/vhost.h", "VHOST_VDPA_SET_VRING_ENABLE", _IOC_WRITE, 0xaf75, 0x08 },
 { "linux/vhost.h", "VHOST_VSOCK_SET_GUEST_CID", _IOC_WRITE, 0xaf60, 0x08 },
 { "linux/vhost.h", "VHOST_VSOCK_SET_RUNNING", _IOC_WRITE, 0xaf61, 0x04 },
 { "linux/videodev2.h", "VIDIOC_CREATE_BUFS", _IOC_READ|_IOC_WRITE, 0x565c, 0xf8 },
 { "linux/videodev2.h", "VIDIOC_DBG_G_REGISTER", _IOC_READ|_IOC_WRITE, 0x5650, 0x38 },
 { "linux/videodev2.h", "VIDIOC_DBG_S_REGISTER", _IOC_WRITE, 0x564f, 0x38 },
 { "linux/videodev2.h", "VIDIOC_DECODER_CMD", _IOC_READ|_IOC_WRITE, 0x5660, 0x48 },
-{ "linux/videodev2.h", "VIDIOC_DQBUF", _IOC_READ|_IOC_WRITE, 0x5611, 0x44 },
-{ "linux/videodev2.h", "VIDIOC_DQEVENT", _IOC_READ, 0x5659, 0x78 },
+{ "linux/videodev2.h", "VIDIOC_DQBUF", _IOC_READ|_IOC_WRITE, 0x5611, 0x4c },
+{ "linux/videodev2.h", "VIDIOC_DQEVENT", _IOC_READ, 0x5659, 0x80 },
 { "linux/videodev2.h", "VIDIOC_DV_TIMINGS_CAP", _IOC_READ|_IOC_WRITE, 0x5664, 0x90 },
 { "linux/videodev2.h", "VIDIOC_ENCODER_CMD", _IOC_READ|_IOC_WRITE, 0x564d, 0x28 },
 { "linux/videodev2.h", "VIDIOC_ENUMAUDIO", _IOC_READ|_IOC_WRITE, 0x5641, 0x34 },
 { "linux/videodev2.h", "VIDIOC_G_TUNER", _IOC_READ|_IOC_WRITE, 0x561d, 0x54 },
 { "linux/videodev2.h", "VIDIOC_LOG_STATUS", _IOC_NONE, 0x5646, 0x00 },
 { "linux/videodev2.h", "VIDIOC_OVERLAY", _IOC_WRITE, 0x560e, 0x04 },
-{ "linux/videodev2.h", "VIDIOC_PREPARE_BUF", _IOC_READ|_IOC_WRITE, 0x565d, 0x44 },
-{ "linux/videodev2.h", "VIDIOC_QBUF", _IOC_READ|_IOC_WRITE, 0x560f, 0x44 },
-{ "linux/videodev2.h", "VIDIOC_QUERYBUF", _IOC_READ|_IOC_WRITE, 0x5609, 0x44 },
+{ "linux/videodev2.h", "VIDIOC_PREPARE_BUF", _IOC_READ|_IOC_WRITE, 0x565d, 0x4c },
+{ "linux/videodev2.h", "VIDIOC_QBUF", _IOC_READ|_IOC_WRITE, 0x560f, 0x4c },
+{ "linux/videodev2.h", "VIDIOC_QUERYBUF", _IOC_READ|_IOC_WRITE, 0x5609, 0x4c },
 { "linux/videodev2.h", "VIDIOC_QUERYCAP", _IOC_READ, 0x5600, 0x68 },
 { "linux/videodev2.h", "VIDIOC_QUERYCTRL", _IOC_READ|_IOC_WRITE, 0x5624, 0x44 },
 { "linux/videodev2.h", "VIDIOC_QUERYMENU", _IOC_READ|_IOC_WRITE, 0x5625, 0x2c },
 { "linux/vt.h", "VT_WAITACTIVE", 0, 0x5607, 0 },
 { "linux/vt.h", "VT_WAITEVENT", 0, 0x560E, 0 },
 { "linux/vtpm_proxy.h", "VTPM_PROXY_IOC_NEW_DEV", _IOC_READ|_IOC_WRITE, 0xa100, 0x14 },
+{ "linux/watch_queue.h", "IOC_WATCH_QUEUE_SET_FILTER", _IOC_NONE, 0x5761, 0x00 },
+{ "linux/watch_queue.h", "IOC_WATCH_QUEUE_SET_SIZE", _IOC_NONE, 0x5760, 0x00 },
 { "linux/watchdog.h", "WDIOC_GETBOOTSTATUS", _IOC_READ, 0x5702, 0x04 },
 { "linux/watchdog.h", "WDIOC_GETPRETIMEOUT", _IOC_READ, 0x5709, 0x04 },
 { "linux/watchdog.h", "WDIOC_GETSTATUS", _IOC_READ, 0x5701, 0x04 },
 { "media/i2c/saa6588.h", "SAA6588_CMD_READ", _IOC_READ, 0x5203, 0x04 },
 { "media/v4l2-common.h", "TUNER_SET_CONFIG", _IOC_WRITE, 0x645c, 0x08 },
 { "media/v4l2-common.h", "VIDIOC_INT_RESET", _IOC_WRITE, 0x6466, 0x04 },
-{ "media/v4l2-subdev.h", "V4L2_DEVICE_NOTIFY_EVENT", _IOC_WRITE, 0x7602, 0x78 },
+{ "media/v4l2-ioctl.h", "VIDIOC_DQBUF_TIME32", _IOC_READ|_IOC_WRITE, 0x5611, 0x44 },
+{ "media/v4l2-ioctl.h", "VIDIOC_DQEVENT_TIME32", _IOC_READ, 0x5659, 0x78 },
+{ "media/v4l2-ioctl.h", "VIDIOC_PREPARE_BUF_TIME32", _IOC_READ|_IOC_WRITE, 0x565d, 0x44 },
+{ "media/v4l2-ioctl.h", "VIDIOC_QBUF_TIME32", _IOC_READ|_IOC_WRITE, 0x560f, 0x44 },
+{ "media/v4l2-ioctl.h", "VIDIOC_QUERYBUF_TIME32", _IOC_READ|_IOC_WRITE, 0x5609, 0x44 },
+{ "media/v4l2-subdev.h", "V4L2_DEVICE_NOTIFY_EVENT", _IOC_WRITE, 0x7602, 0x80 },
 { "media/v4l2-subdev.h", "V4L2_SUBDEV_IR_RX_NOTIFY", _IOC_WRITE, 0x7600, 0x04 },
 { "media/v4l2-subdev.h", "V4L2_SUBDEV_IR_TX_NOTIFY", _IOC_WRITE, 0x7601, 0x04 },
 { "misc/cxl.h", "CXL_IOCTL_DOWNLOAD_IMAGE", _IOC_WRITE, 0xca0a, 0x40 },
 { "misc/fastrpc.h", "FASTRPC_IOCTL_INIT_ATTACH", _IOC_NONE, 0x5204, 0x00 },
 { "misc/fastrpc.h", "FASTRPC_IOCTL_INIT_CREATE", _IOC_READ|_IOC_WRITE, 0x5205, 0x18 },
 { "misc/fastrpc.h", "FASTRPC_IOCTL_INVOKE", _IOC_READ|_IOC_WRITE, 0x5203, 0x10 },
+{ "misc/fastrpc.h", "FASTRPC_IOCTL_MMAP", _IOC_READ|_IOC_WRITE, 0x5206, 0x20 },
+{ "misc/fastrpc.h", "FASTRPC_IOCTL_MUNMAP", _IOC_READ|_IOC_WRITE, 0x5207, 0x10 },
 { "misc/habanalabs.h", "HL_IOCTL_CB", _IOC_READ|_IOC_WRITE, 0x4802, 0x18 },
 { "misc/habanalabs.h", "HL_IOCTL_CS", _IOC_READ|_IOC_WRITE, 0x4803, 0x2c },
+{ "misc/habanalabs.h", "HL_IOCTL_DEBUG", _IOC_READ|_IOC_WRITE, 0x4806, 0x28 },
 { "misc/habanalabs.h", "HL_IOCTL_INFO", _IOC_READ|_IOC_WRITE, 0x4801, 0x18 },
 { "misc/habanalabs.h", "HL_IOCTL_MEMORY", _IOC_READ|_IOC_WRITE, 0x4805, 0x28 },
 { "misc/habanalabs.h", "HL_IOCTL_WAIT_CS", _IOC_READ|_IOC_WRITE, 0x4804, 0x18 },
 { "misc/ocxl.h", "OCXL_IOCTL_IRQ_ALLOC", _IOC_READ, 0xca11, 0x08 },
 { "misc/ocxl.h", "OCXL_IOCTL_IRQ_FREE", _IOC_WRITE, 0xca12, 0x08 },
 { "misc/ocxl.h", "OCXL_IOCTL_IRQ_SET_FD", _IOC_WRITE, 0xca13, 0x10 },
+{ "misc/uacce/hisi_qm.h", "UACCE_CMD_QM_SET_QP_CTX", _IOC_READ|_IOC_WRITE, 0x480a, 0x04 },
+{ "misc/uacce/uacce.h", "UACCE_CMD_PUT_Q", _IOC_NONE, 0x5701, 0x00 },
+{ "misc/uacce/uacce.h", "UACCE_CMD_START_Q", _IOC_NONE, 0x5700, 0x00 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_ADD_LDPC_CODE_PARAMS", _IOC_WRITE, 0x6605, 0x4c },
+{ "misc/xilinx_sdfec.h", "XSDFEC_CLEAR_STATS", _IOC_NONE, 0x660b, 0x00 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_GET_CONFIG", _IOC_READ, 0x6606, 0x1c },
+{ "misc/xilinx_sdfec.h", "XSDFEC_GET_STATS", _IOC_READ, 0x660c, 0x0c },
+{ "misc/xilinx_sdfec.h", "XSDFEC_GET_STATUS", _IOC_READ, 0x6602, 0x08 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_GET_TURBO", _IOC_READ, 0x6607, 0x08 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_IS_ACTIVE", _IOC_READ, 0x660a, 0x01 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_SET_BYPASS", _IOC_WRITE, 0x6609, 0x01 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_SET_DEFAULT_CONFIG", _IOC_NONE, 0x660d, 0x00 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_SET_IRQ", _IOC_WRITE, 0x6603, 0x02 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_SET_ORDER", _IOC_WRITE, 0x6608, 0x04 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_SET_TURBO", _IOC_WRITE, 0x6604, 0x08 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_START_DEV", _IOC_NONE, 0x6600, 0x00 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_STOP_DEV", _IOC_NONE, 0x6601, 0x00 },
 { "mtd/mtd-abi.h", "ECCGETLAYOUT", _IOC_READ, 0x4d11, 0x148 },
 { "mtd/mtd-abi.h", "ECCGETSTATS", _IOC_READ, 0x4d12, 0x10 },
 { "mtd/mtd-abi.h", "MEMERASE", _IOC_WRITE, 0x4d02, 0x08 },
 { "sound/asound.h", "SNDRV_TIMER_IOCTL_START", _IOC_NONE, 0x54a0, 0x00 },
 { "sound/asound.h", "SNDRV_TIMER_IOCTL_STATUS", _IOC_READ, 0x5414, 0x58 },
 { "sound/asound.h", "SNDRV_TIMER_IOCTL_STOP", _IOC_NONE, 0x54a1, 0x00 },
-{ "sound/asound.h", "SNDRV_TIMER_IOCTL_TREAD", _IOC_WRITE, 0x5402, 0x04 },
+{ "sound/asound.h", "SNDRV_TIMER_IOCTL_TREAD64", _IOC_WRITE, 0x54a4, 0x04 },
+{ "sound/asound.h", "SNDRV_TIMER_IOCTL_TREAD_OLD", _IOC_WRITE, 0x5402, 0x04 },
 { "sound/asound_fm.h", "SNDRV_DM_FM_IOCTL_CLEAR_PATCHES", _IOC_NONE, 0x4840, 0x00 },
 { "sound/asound_fm.h", "SNDRV_DM_FM_IOCTL_INFO", _IOC_READ, 0x4820, 0x02 },
 { "sound/asound_fm.h", "SNDRV_DM_FM_IOCTL_PLAY_NOTE", _IOC_WRITE, 0x4822, 0x0c },
 { "sound/hdspm.h", "SNDRV_HDSPM_IOCTL_GET_PEAK_RMS", _IOC_READ, 0x4842, 0x908 },
 { "sound/hdspm.h", "SNDRV_HDSPM_IOCTL_GET_STATUS", _IOC_READ, 0x4847, 0x1c },
 { "sound/hdspm.h", "SNDRV_HDSPM_IOCTL_GET_VERSION", _IOC_READ, 0x4848, 0x24 },
+{ "sound/pcm.h", "SNDRV_PCM_IOCTL_STATUS32", _IOC_READ, 0x4120, 0x6c },
+{ "sound/pcm.h", "SNDRV_PCM_IOCTL_STATUS64", _IOC_READ, 0x4120, 0x80 },
+{ "sound/pcm.h", "SNDRV_PCM_IOCTL_STATUS_EXT32", _IOC_READ|_IOC_WRITE, 0x4124, 0x6c },
+{ "sound/pcm.h", "SNDRV_PCM_IOCTL_STATUS_EXT64", _IOC_READ|_IOC_WRITE, 0x4124, 0x80 },
 { "sound/sb16_csp.h", "SNDRV_SB_CSP_IOCTL_INFO", _IOC_READ, 0x4810, 0x28 },
 { "sound/sb16_csp.h", "SNDRV_SB_CSP_IOCTL_LOAD_CODE", _IOC_WRITE, 0x4811, 0x3012 },
 { "sound/sb16_csp.h", "SNDRV_SB_CSP_IOCTL_PAUSE", _IOC_NONE, 0x4815, 0x00 },
 { "staging/android/ashmem.h", "ASHMEM_UNPIN", _IOC_WRITE, 0x7708, 0x08 },
 { "staging/android/ion.h", "ION_IOC_ALLOC", _IOC_READ|_IOC_WRITE, 0x4900, 0x18 },
 { "staging/android/ion.h", "ION_IOC_HEAP_QUERY", _IOC_READ|_IOC_WRITE, 0x4908, 0x18 },
-{ "staging/android/vsoc_shm.h", "VSOC_COND_WAIT", _IOC_READ|_IOC_WRITE, 0xf507, 0x20 },
-{ "staging/android/vsoc_shm.h", "VSOC_COND_WAKE", _IOC_NONE, 0xf508, 0x00 },
-{ "staging/android/vsoc_shm.h", "VSOC_CREATE_FD_SCOPED_PERMISSION", _IOC_WRITE, 0xf500, 0x10 },
-{ "staging/android/vsoc_shm.h", "VSOC_DESCRIBE_REGION", _IOC_READ, 0xf504, 0x3c },
-{ "staging/android/vsoc_shm.h", "VSOC_GET_FD_SCOPED_PERMISSION", _IOC_READ, 0xf501, 0x10 },
-{ "staging/android/vsoc_shm.h", "VSOC_MAYBE_SEND_INTERRUPT_TO_HOST", _IOC_NONE, 0xf502, 0x00 },
-{ "staging/android/vsoc_shm.h", "VSOC_SELF_INTERRUPT", _IOC_NONE, 0xf505, 0x00 },
-{ "staging/android/vsoc_shm.h", "VSOC_SEND_INTERRUPT_TO_HOST", _IOC_NONE, 0xf506, 0x00 },
-{ "staging/android/vsoc_shm.h", "VSOC_WAIT_FOR_INCOMING_INTERRUPT", _IOC_NONE, 0xf503, 0x00 },
 { "video/da8xx-fb.h", "FBIGET_BRIGHTNESS", _IOC_READ, 0x4603, 0x04 },
 { "video/da8xx-fb.h", "FBIGET_COLOR", _IOC_READ, 0x4605, 0x04 },
 { "video/da8xx-fb.h", "FBIOGET_CONTRAST", _IOC_READ, 0x4601, 0x04 },
index 7df239e1a31a36e08949d97aeb184e9fe0e7ee8c..881c9ab10ce227f1ce83e42e147397ddb84f531d 100644 (file)
@@ -81,8 +81,8 @@
 { "asm-generic/sockios.h", "FIOSETOWN", 0, 0x8901, 0 },
 { "asm-generic/sockios.h", "SIOCATMARK", 0, 0x8905, 0 },
 { "asm-generic/sockios.h", "SIOCGPGRP", 0, 0x8904, 0 },
-{ "asm-generic/sockios.h", "SIOCGSTAMP", 0, 0x8906, 0 },
-{ "asm-generic/sockios.h", "SIOCGSTAMPNS", 0, 0x8907, 0 },
+{ "asm-generic/sockios.h", "SIOCGSTAMPNS_OLD", 0, 0x8907, 0 },
+{ "asm-generic/sockios.h", "SIOCGSTAMP_OLD", 0, 0x8906, 0 },
 { "asm-generic/sockios.h", "SIOCSPGRP", 0, 0x8902, 0 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_BO_LIST", _IOC_READ|_IOC_WRITE, 0x6443, 0x18 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_CS", _IOC_READ|_IOC_WRITE, 0x6444, 0x18 },
 { "drm/drm.h", "DRM_IOCTL_MODE_GETCRTC", _IOC_READ|_IOC_WRITE, 0x64a1, 0x68 },
 { "drm/drm.h", "DRM_IOCTL_MODE_GETENCODER", _IOC_READ|_IOC_WRITE, 0x64a6, 0x14 },
 { "drm/drm.h", "DRM_IOCTL_MODE_GETFB", _IOC_READ|_IOC_WRITE, 0x64ad, 0x1c },
+{ "drm/drm.h", "DRM_IOCTL_MODE_GETFB2", _IOC_READ|_IOC_WRITE, 0x64ce, 0x68 },
 { "drm/drm.h", "DRM_IOCTL_MODE_GETGAMMA", _IOC_READ|_IOC_WRITE, 0x64a4, 0x20 },
 { "drm/drm.h", "DRM_IOCTL_MODE_GETPLANE", _IOC_READ|_IOC_WRITE, 0x64b6, 0x20 },
 { "drm/drm.h", "DRM_IOCTL_MODE_GETPLANERESOURCES", _IOC_READ|_IOC_WRITE, 0x64b5, 0x10 },
 { "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_QUERY", _IOC_READ|_IOC_WRITE, 0x64cb, 0x18 },
 { "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_TIMELINE_SIGNAL", _IOC_READ|_IOC_WRITE, 0x64cd, 0x18 },
+{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_TIMELINE_WAIT", _IOC_READ|_IOC_WRITE, 0x64ca, 0x28 },
+{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_TRANSFER", _IOC_READ|_IOC_WRITE, 0x64cc, 0x20 },
 { "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/i915_drm.h", "DRM_IOCTL_I915_FREE", _IOC_WRITE, 0x6449, 0x08 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_BUSY", _IOC_READ|_IOC_WRITE, 0x6457, 0x08 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CONTEXT_CREATE", _IOC_READ|_IOC_WRITE, 0x646d, 0x08 },
+{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CONTEXT_CREATE_EXT", _IOC_READ|_IOC_WRITE, 0x646d, 0x10 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CONTEXT_DESTROY", _IOC_WRITE, 0x646e, 0x08 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CONTEXT_GETPARAM", _IOC_READ|_IOC_WRITE, 0x6474, 0x18 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM", _IOC_READ|_IOC_WRITE, 0x6475, 0x18 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_MADVISE", _IOC_READ|_IOC_WRITE, 0x6466, 0x0c },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_MMAP", _IOC_READ|_IOC_WRITE, 0x645e, 0x28 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_MMAP_GTT", _IOC_READ|_IOC_WRITE, 0x6464, 0x10 },
+{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_MMAP_OFFSET", _IOC_READ|_IOC_WRITE, 0x6464, 0x20 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_PIN", _IOC_READ|_IOC_WRITE, 0x6455, 0x18 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_PREAD", _IOC_WRITE, 0x645c, 0x20 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_PWRITE", _IOC_WRITE, 0x645d, 0x20 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_THROTTLE", _IOC_NONE, 0x6458, 0x00 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_UNPIN", _IOC_WRITE, 0x6456, 0x08 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_USERPTR", _IOC_READ|_IOC_WRITE, 0x6473, 0x18 },
+{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_VM_CREATE", _IOC_READ|_IOC_WRITE, 0x647a, 0x10 },
+{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_VM_DESTROY", _IOC_WRITE, 0x647b, 0x10 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_WAIT", _IOC_READ|_IOC_WRITE, 0x646c, 0x10 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GETPARAM", _IOC_READ|_IOC_WRITE, 0x6446, 0x08 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GET_PIPE_FROM_CRTC_ID", _IOC_READ|_IOC_WRITE, 0x6465, 0x08 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_SET_SPRITE_COLORKEY", _IOC_READ|_IOC_WRITE, 0x646b, 0x14 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_SET_VBLANK_PIPE", _IOC_WRITE, 0x644d, 0x04 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_VBLANK_SWAP", _IOC_READ|_IOC_WRITE, 0x644f, 0x0c },
+{ "drm/i915_drm.h", "I915_PERF_IOCTL_CONFIG", _IOC_NONE, 0x6902, 0x00 },
 { "drm/i915_drm.h", "I915_PERF_IOCTL_DISABLE", _IOC_NONE, 0x6901, 0x00 },
 { "drm/i915_drm.h", "I915_PERF_IOCTL_ENABLE", _IOC_NONE, 0x6900, 0x00 },
+{ "drm/lima_drm.h", "DRM_IOCTL_LIMA_CTX_CREATE", _IOC_READ, 0x6445, 0x08 },
+{ "drm/lima_drm.h", "DRM_IOCTL_LIMA_CTX_FREE", _IOC_WRITE, 0x6446, 0x08 },
+{ "drm/lima_drm.h", "DRM_IOCTL_LIMA_GEM_CREATE", _IOC_READ|_IOC_WRITE, 0x6441, 0x10 },
+{ "drm/lima_drm.h", "DRM_IOCTL_LIMA_GEM_INFO", _IOC_READ|_IOC_WRITE, 0x6442, 0x10 },
+{ "drm/lima_drm.h", "DRM_IOCTL_LIMA_GEM_SUBMIT", _IOC_WRITE, 0x6443, 0x30 },
+{ "drm/lima_drm.h", "DRM_IOCTL_LIMA_GEM_WAIT", _IOC_WRITE, 0x6444, 0x10 },
+{ "drm/lima_drm.h", "DRM_IOCTL_LIMA_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6440, 0x10 },
 { "drm/mga_drm.h", "DRM_IOCTL_MGA_BLIT", _IOC_WRITE, 0x6448, 0x34 },
 { "drm/mga_drm.h", "DRM_IOCTL_MGA_CLEAR", _IOC_WRITE, 0x6444, 0x14 },
 { "drm/mga_drm.h", "DRM_IOCTL_MGA_DMA_BOOTSTRAP", _IOC_READ|_IOC_WRITE, 0x644c, 0x1c },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_INFO", _IOC_READ|_IOC_WRITE, 0x6443, 0x18 },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_MADVISE", _IOC_READ|_IOC_WRITE, 0x6448, 0x0c },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_NEW", _IOC_READ|_IOC_WRITE, 0x6442, 0x10 },
-{ "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_SUBMIT", _IOC_READ|_IOC_WRITE, 0x6446, 0x28 },
+{ "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_SUBMIT", _IOC_READ|_IOC_WRITE, 0x6446, 0x48 },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6440, 0x10 },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_SUBMITQUEUE_CLOSE", _IOC_WRITE, 0x644b, 0x04 },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_SUBMITQUEUE_NEW", _IOC_READ|_IOC_WRITE, 0x644a, 0x0c },
+{ "drm/msm_drm.h", "DRM_IOCTL_MSM_SUBMITQUEUE_QUERY", _IOC_WRITE, 0x644c, 0x18 },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_WAIT_FENCE", _IOC_WRITE, 0x6447, 0x20 },
 { "drm/nouveau_drm.h", "DRM_IOCTL_NOUVEAU_GEM_CPU_FINI", _IOC_WRITE, 0x6483, 0x04 },
 { "drm/nouveau_drm.h", "DRM_IOCTL_NOUVEAU_GEM_CPU_PREP", _IOC_WRITE, 0x6482, 0x08 },
 { "drm/omap_drm.h", "DRM_IOCTL_OMAP_GEM_NEW", _IOC_READ|_IOC_WRITE, 0x6443, 0x10 },
 { "drm/omap_drm.h", "DRM_IOCTL_OMAP_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6440, 0x10 },
 { "drm/omap_drm.h", "DRM_IOCTL_OMAP_SET_PARAM", _IOC_WRITE, 0x6441, 0x10 },
+{ "drm/panfrost_drm.h", "DRM_IOCTL_PANFROST_CREATE_BO", _IOC_READ|_IOC_WRITE, 0x6442, 0x18 },
+{ "drm/panfrost_drm.h", "DRM_IOCTL_PANFROST_GET_BO_OFFSET", _IOC_READ|_IOC_WRITE, 0x6445, 0x10 },
+{ "drm/panfrost_drm.h", "DRM_IOCTL_PANFROST_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6444, 0x10 },
+{ "drm/panfrost_drm.h", "DRM_IOCTL_PANFROST_MADVISE", _IOC_READ|_IOC_WRITE, 0x6448, 0x0c },
+{ "drm/panfrost_drm.h", "DRM_IOCTL_PANFROST_MMAP_BO", _IOC_READ|_IOC_WRITE, 0x6443, 0x10 },
+{ "drm/panfrost_drm.h", "DRM_IOCTL_PANFROST_PERFCNT_DUMP", _IOC_WRITE, 0x6447, 0x08 },
+{ "drm/panfrost_drm.h", "DRM_IOCTL_PANFROST_PERFCNT_ENABLE", _IOC_WRITE, 0x6446, 0x08 },
+{ "drm/panfrost_drm.h", "DRM_IOCTL_PANFROST_SUBMIT", _IOC_WRITE, 0x6440, 0x28 },
+{ "drm/panfrost_drm.h", "DRM_IOCTL_PANFROST_WAIT_BO", _IOC_WRITE, 0x6441, 0x10 },
 { "drm/qxl_drm.h", "DRM_IOCTL_QXL_ALLOC", _IOC_READ|_IOC_WRITE, 0x6440, 0x08 },
 { "drm/qxl_drm.h", "DRM_IOCTL_QXL_ALLOC_SURF", _IOC_READ|_IOC_WRITE, 0x6446, 0x18 },
 { "drm/qxl_drm.h", "DRM_IOCTL_QXL_CLIENTCAP", _IOC_WRITE, 0x6445, 0x08 },
 { "drm/v3d_drm.h", "DRM_IOCTL_V3D_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6444, 0x10 },
 { "drm/v3d_drm.h", "DRM_IOCTL_V3D_MMAP_BO", _IOC_READ|_IOC_WRITE, 0x6443, 0x10 },
 { "drm/v3d_drm.h", "DRM_IOCTL_V3D_SUBMIT_CL", _IOC_READ|_IOC_WRITE, 0x6440, 0x38 },
+{ "drm/v3d_drm.h", "DRM_IOCTL_V3D_SUBMIT_CSD", _IOC_WRITE, 0x6447, 0x48 },
 { "drm/v3d_drm.h", "DRM_IOCTL_V3D_SUBMIT_TFU", _IOC_WRITE, 0x6446, 0x44 },
 { "drm/v3d_drm.h", "DRM_IOCTL_V3D_WAIT_BO", _IOC_READ|_IOC_WRITE, 0x6441, 0x10 },
 { "drm/vc4_drm.h", "DRM_IOCTL_VC4_CREATE_BO", _IOC_READ|_IOC_WRITE, 0x6443, 0x10 },
 { "linux/arcfb.h", "FBIO_WAITEVENT", _IOC_NONE, 0x4688, 0x00 },
 { "linux/aspeed-lpc-ctrl.h", "ASPEED_LPC_CTRL_IOCTL_GET_SIZE", _IOC_READ|_IOC_WRITE, 0xb200, 0x10 },
 { "linux/aspeed-lpc-ctrl.h", "ASPEED_LPC_CTRL_IOCTL_MAP", _IOC_WRITE, 0xb201, 0x10 },
+{ "linux/aspeed-p2a-ctrl.h", "ASPEED_P2A_CTRL_IOCTL_GET_MEMORY_CONFIG", _IOC_READ|_IOC_WRITE, 0xb301, 0x10 },
+{ "linux/aspeed-p2a-ctrl.h", "ASPEED_P2A_CTRL_IOCTL_SET_WINDOW", _IOC_WRITE, 0xb300, 0x10 },
 { "linux/atm_eni.h", "ENI_MEMDUMP", _IOC_WRITE, 0x6160, 0x0c },
 { "linux/atm_eni.h", "ENI_SETMULT", _IOC_WRITE, 0x6167, 0x0c },
 { "linux/atm_he.h", "HE_GET_REG", _IOC_WRITE, 0x6160, 0x0c },
 { "linux/auto_fs.h", "AUTOFS_IOC_SETTIMEOUT", _IOC_READ|_IOC_WRITE, 0x9364, 0x04 },
 { "linux/auto_fs.h", "AUTOFS_IOC_SETTIMEOUT32", _IOC_READ|_IOC_WRITE, 0x9364, 0x04 },
 { "linux/blkpg.h", "BLKPG", _IOC_NONE, 0x1269, 0x00 },
+{ "linux/blkzoned.h", "BLKCLOSEZONE", _IOC_WRITE, 0x1287, 0x10 },
+{ "linux/blkzoned.h", "BLKFINISHZONE", _IOC_WRITE, 0x1288, 0x10 },
 { "linux/blkzoned.h", "BLKGETNRZONES", _IOC_READ, 0x1285, 0x04 },
 { "linux/blkzoned.h", "BLKGETZONESZ", _IOC_READ, 0x1284, 0x04 },
+{ "linux/blkzoned.h", "BLKOPENZONE", _IOC_WRITE, 0x1286, 0x10 },
 { "linux/blkzoned.h", "BLKREPORTZONE", _IOC_READ|_IOC_WRITE, 0x1282, 0x10 },
 { "linux/blkzoned.h", "BLKRESETZONE", _IOC_WRITE, 0x1283, 0x10 },
 { "linux/bt-bmc.h", "BT_BMC_IOCTL_SMS_ATN", _IOC_NONE, 0xb100, 0x00 },
 { "linux/btrfs.h", "BTRFS_IOC_SNAP_CREATE", _IOC_WRITE, 0x9401, 0x1000 },
 { "linux/btrfs.h", "BTRFS_IOC_SNAP_CREATE_V2", _IOC_WRITE, 0x9417, 0x1000 },
 { "linux/btrfs.h", "BTRFS_IOC_SNAP_DESTROY", _IOC_WRITE, 0x940f, 0x1000 },
+{ "linux/btrfs.h", "BTRFS_IOC_SNAP_DESTROY_V2", _IOC_WRITE, 0x943f, 0x1000 },
 { "linux/btrfs.h", "BTRFS_IOC_SPACE_INFO", _IOC_READ|_IOC_WRITE, 0x9414, 0x10 },
 { "linux/btrfs.h", "BTRFS_IOC_START_SYNC", _IOC_READ, 0x9418, 0x08 },
 { "linux/btrfs.h", "BTRFS_IOC_SUBVOL_CREATE", _IOC_WRITE, 0x940e, 0x1000 },
 { "linux/cdrom.h", "DVD_READ_STRUCT", 0, 0x5390, 0 },
 { "linux/cdrom.h", "DVD_WRITE_STRUCT", 0, 0x5391, 0 },
 { "linux/cec.h", "CEC_ADAP_G_CAPS", _IOC_READ|_IOC_WRITE, 0x6100, 0x4c },
+{ "linux/cec.h", "CEC_ADAP_G_CONNECTOR_INFO", _IOC_READ, 0x610a, 0x44 },
 { "linux/cec.h", "CEC_ADAP_G_LOG_ADDRS", _IOC_READ, 0x6103, 0x5c },
 { "linux/cec.h", "CEC_ADAP_G_PHYS_ADDR", _IOC_READ, 0x6101, 0x02 },
 { "linux/cec.h", "CEC_ADAP_S_LOG_ADDRS", _IOC_READ|_IOC_WRITE, 0x6104, 0x5c },
 { "linux/dm-ioctl.h", "DM_DEV_STATUS", _IOC_READ|_IOC_WRITE, 0xfd07, 0x138 },
 { "linux/dm-ioctl.h", "DM_DEV_SUSPEND", _IOC_READ|_IOC_WRITE, 0xfd06, 0x138 },
 { "linux/dm-ioctl.h", "DM_DEV_WAIT", _IOC_READ|_IOC_WRITE, 0xfd08, 0x138 },
+{ "linux/dm-ioctl.h", "DM_GET_TARGET_VERSION", _IOC_READ|_IOC_WRITE, 0xfd11, 0x138 },
 { "linux/dm-ioctl.h", "DM_LIST_DEVICES", _IOC_READ|_IOC_WRITE, 0xfd02, 0x138 },
 { "linux/dm-ioctl.h", "DM_LIST_VERSIONS", _IOC_READ|_IOC_WRITE, 0xfd0d, 0x138 },
 { "linux/dm-ioctl.h", "DM_REMOVE_ALL", _IOC_READ|_IOC_WRITE, 0xfd01, 0x138 },
 { "linux/dm-ioctl.h", "DM_TARGET_MSG", _IOC_READ|_IOC_WRITE, 0xfd0e, 0x138 },
 { "linux/dm-ioctl.h", "DM_VERSION", _IOC_READ|_IOC_WRITE, 0xfd00, 0x138 },
 { "linux/dma-buf.h", "DMA_BUF_IOCTL_SYNC", _IOC_WRITE, 0x6200, 0x08 },
+{ "linux/dma-buf.h", "DMA_BUF_SET_NAME_A", _IOC_WRITE, 0x6201, 0x04 },
+{ "linux/dma-buf.h", "DMA_BUF_SET_NAME_B", _IOC_WRITE, 0x6201, 0x08 },
+{ "linux/dma-heap.h", "DMA_HEAP_IOCTL_ALLOC", _IOC_READ|_IOC_WRITE, 0x4800, 0x18 },
 { "linux/dn.h", "OSIOCGNETADDR", _IOC_READ, 0x89e1, 0x04 },
 { "linux/dn.h", "OSIOCSNETADDR", _IOC_WRITE, 0x89e0, 0x04 },
 { "linux/dn.h", "SIOCGNETADDR", _IOC_READ, 0x89e1, 0x04 },
 { "linux/firewire-cdev.h", "FW_CDEV_IOC_START_ISO", _IOC_WRITE, 0x230a, 0x10 },
 { "linux/firewire-cdev.h", "FW_CDEV_IOC_STOP_ISO", _IOC_WRITE, 0x230b, 0x04 },
 { "linux/fpga-dfl.h", "DFL_FPGA_CHECK_EXTENSION", _IOC_NONE, 0xb601, 0x00 },
+{ "linux/fpga-dfl.h", "DFL_FPGA_FME_ERR_GET_IRQ_NUM", _IOC_READ, 0xb683, 0x04 },
+{ "linux/fpga-dfl.h", "DFL_FPGA_FME_ERR_SET_IRQ", _IOC_WRITE, 0xb684, 0x08 },
+{ "linux/fpga-dfl.h", "DFL_FPGA_FME_PORT_ASSIGN", _IOC_WRITE, 0xb682, 0x04 },
 { "linux/fpga-dfl.h", "DFL_FPGA_FME_PORT_PR", _IOC_NONE, 0xb680, 0x00 },
+{ "linux/fpga-dfl.h", "DFL_FPGA_FME_PORT_RELEASE", _IOC_WRITE, 0xb681, 0x04 },
 { "linux/fpga-dfl.h", "DFL_FPGA_GET_API_VERSION", _IOC_NONE, 0xb600, 0x00 },
 { "linux/fpga-dfl.h", "DFL_FPGA_PORT_DMA_MAP", _IOC_NONE, 0xb643, 0x00 },
 { "linux/fpga-dfl.h", "DFL_FPGA_PORT_DMA_UNMAP", _IOC_NONE, 0xb644, 0x00 },
+{ "linux/fpga-dfl.h", "DFL_FPGA_PORT_ERR_GET_IRQ_NUM", _IOC_READ, 0xb645, 0x04 },
+{ "linux/fpga-dfl.h", "DFL_FPGA_PORT_ERR_SET_IRQ", _IOC_WRITE, 0xb646, 0x08 },
 { "linux/fpga-dfl.h", "DFL_FPGA_PORT_GET_INFO", _IOC_NONE, 0xb641, 0x00 },
 { "linux/fpga-dfl.h", "DFL_FPGA_PORT_GET_REGION_INFO", _IOC_NONE, 0xb642, 0x00 },
 { "linux/fpga-dfl.h", "DFL_FPGA_PORT_RESET", _IOC_NONE, 0xb640, 0x00 },
+{ "linux/fpga-dfl.h", "DFL_FPGA_PORT_UINT_GET_IRQ_NUM", _IOC_READ, 0xb647, 0x04 },
+{ "linux/fpga-dfl.h", "DFL_FPGA_PORT_UINT_SET_IRQ", _IOC_WRITE, 0xb648, 0x08 },
 { "linux/fs.h", "BLKALIGNOFF", _IOC_NONE, 0x127a, 0x00 },
 { "linux/fs.h", "BLKBSZGET", _IOC_READ, 0x1270, 0x04 },
 { "linux/fs.h", "BLKBSZSET", _IOC_WRITE, 0x1271, 0x04 },
 { "linux/fs.h", "FS_IOC_GETFLAGS", _IOC_READ, 0x6601, 0x04 },
 { "linux/fs.h", "FS_IOC_GETFSLABEL", _IOC_READ, 0x9431, 0x100 },
 { "linux/fs.h", "FS_IOC_GETVERSION", _IOC_READ, 0x7601, 0x04 },
-{ "linux/fs.h", "FS_IOC_GET_ENCRYPTION_POLICY", _IOC_WRITE, 0x6615, 0x0c },
-{ "linux/fs.h", "FS_IOC_GET_ENCRYPTION_PWSALT", _IOC_WRITE, 0x6614, 0x10 },
 { "linux/fs.h", "FS_IOC_SETFLAGS", _IOC_WRITE, 0x6602, 0x04 },
 { "linux/fs.h", "FS_IOC_SETFSLABEL", _IOC_WRITE, 0x9432, 0x100 },
 { "linux/fs.h", "FS_IOC_SETVERSION", _IOC_WRITE, 0x7602, 0x04 },
-{ "linux/fs.h", "FS_IOC_SET_ENCRYPTION_POLICY", _IOC_READ, 0x6613, 0x0c },
+{ "linux/fscrypt.h", "FS_IOC_ADD_ENCRYPTION_KEY", _IOC_READ|_IOC_WRITE, 0x6617, 0x50 },
+{ "linux/fscrypt.h", "FS_IOC_GET_ENCRYPTION_KEY_STATUS", _IOC_READ|_IOC_WRITE, 0x661a, 0x80 },
+{ "linux/fscrypt.h", "FS_IOC_GET_ENCRYPTION_NONCE", _IOC_READ, 0x661b, 0x10 },
+{ "linux/fscrypt.h", "FS_IOC_GET_ENCRYPTION_POLICY", _IOC_WRITE, 0x6615, 0x0c },
+{ "linux/fscrypt.h", "FS_IOC_GET_ENCRYPTION_POLICY_EX", _IOC_READ|_IOC_WRITE, 0x6616, 0x09 },
+{ "linux/fscrypt.h", "FS_IOC_GET_ENCRYPTION_PWSALT", _IOC_WRITE, 0x6614, 0x10 },
+{ "linux/fscrypt.h", "FS_IOC_REMOVE_ENCRYPTION_KEY", _IOC_READ|_IOC_WRITE, 0x6618, 0x40 },
+{ "linux/fscrypt.h", "FS_IOC_REMOVE_ENCRYPTION_KEY_ALL_USERS", _IOC_READ|_IOC_WRITE, 0x6619, 0x40 },
+{ "linux/fscrypt.h", "FS_IOC_SET_ENCRYPTION_POLICY", _IOC_READ, 0x6613, 0x0c },
 { "linux/fsi.h", "FSI_SCOM_CHECK", _IOC_READ, 0x7300, 0x04 },
 { "linux/fsi.h", "FSI_SCOM_READ", _IOC_READ|_IOC_WRITE, 0x7301, 0x20 },
 { "linux/fsi.h", "FSI_SCOM_RESET", _IOC_WRITE, 0x7303, 0x04 },
 { "linux/fsl_hypervisor.h", "FSL_HV_IOCTL_PARTITION_STOP", _IOC_READ|_IOC_WRITE, 0xaf04, 0x08 },
 { "linux/fsl_hypervisor.h", "FSL_HV_IOCTL_SETPROP", _IOC_READ|_IOC_WRITE, 0xaf08, 0x28 },
 { "linux/fsmap.h", "FS_IOC_GETFSMAP", _IOC_READ|_IOC_WRITE, 0x583b, 0xc0 },
+{ "linux/fsverity.h", "FS_IOC_ENABLE_VERITY", _IOC_WRITE, 0x6685, 0x80 },
+{ "linux/fsverity.h", "FS_IOC_MEASURE_VERITY", _IOC_READ|_IOC_WRITE, 0x6686, 0x04 },
 { "linux/fuse.h", "FUSE_DEV_IOC_CLONE", _IOC_READ, 0xe500, 0x04 },
 { "linux/genwqe/genwqe_card.h", "GENWQE_EXECUTE_DDCB", _IOC_READ|_IOC_WRITE, 0xa532, 0xe8 },
 { "linux/genwqe/genwqe_card.h", "GENWQE_EXECUTE_RAW_DDCB", _IOC_READ|_IOC_WRITE, 0xa533, 0xe8 },
 { "linux/genwqe/genwqe_card.h", "GENWQE_WRITE_REG16", _IOC_WRITE, 0xa523, 0x10 },
 { "linux/genwqe/genwqe_card.h", "GENWQE_WRITE_REG32", _IOC_WRITE, 0xa521, 0x10 },
 { "linux/genwqe/genwqe_card.h", "GENWQE_WRITE_REG64", _IOC_WRITE, 0xa51f, 0x10 },
-{ "linux/gigaset_dev.h", "GIGASET_BRKCHARS", _IOC_WRITE, 0x4702, 0x06 },
-{ "linux/gigaset_dev.h", "GIGASET_CONFIG", _IOC_READ|_IOC_WRITE, 0x4701, 0x04 },
-{ "linux/gigaset_dev.h", "GIGASET_REDIR", _IOC_READ|_IOC_WRITE, 0x4700, 0x04 },
-{ "linux/gigaset_dev.h", "GIGASET_VERSION", _IOC_READ|_IOC_WRITE, 0x4703, 0x10 },
 { "linux/gpio.h", "GPIOHANDLE_GET_LINE_VALUES_IOCTL", _IOC_READ|_IOC_WRITE, 0xb408, 0x40 },
+{ "linux/gpio.h", "GPIOHANDLE_SET_CONFIG_IOCTL", _IOC_READ|_IOC_WRITE, 0xb40a, 0x54 },
 { "linux/gpio.h", "GPIOHANDLE_SET_LINE_VALUES_IOCTL", _IOC_READ|_IOC_WRITE, 0xb409, 0x40 },
 { "linux/gpio.h", "GPIO_GET_CHIPINFO_IOCTL", _IOC_READ, 0xb401, 0x44 },
 { "linux/gpio.h", "GPIO_GET_LINEEVENT_IOCTL", _IOC_READ|_IOC_WRITE, 0xb404, 0x30 },
 { "linux/gpio.h", "GPIO_GET_LINEHANDLE_IOCTL", _IOC_READ|_IOC_WRITE, 0xb403, 0x16c },
 { "linux/gpio.h", "GPIO_GET_LINEINFO_IOCTL", _IOC_READ|_IOC_WRITE, 0xb402, 0x48 },
+{ "linux/gpio.h", "GPIO_GET_LINEINFO_UNWATCH_IOCTL", _IOC_READ|_IOC_WRITE, 0xb40c, 0x04 },
+{ "linux/gpio.h", "GPIO_GET_LINEINFO_WATCH_IOCTL", _IOC_READ|_IOC_WRITE, 0xb40b, 0x48 },
 { "linux/gsmmux.h", "GSMIOC_DISABLE_NET", _IOC_NONE, 0x4703, 0x00 },
 { "linux/gsmmux.h", "GSMIOC_ENABLE_NET", _IOC_WRITE, 0x4702, 0x34 },
 { "linux/gsmmux.h", "GSMIOC_GETCONF", _IOC_READ, 0x4700, 0x4c },
+{ "linux/gsmmux.h", "GSMIOC_GETFIRST", _IOC_READ, 0x4704, 0x04 },
 { "linux/gsmmux.h", "GSMIOC_SETCONF", _IOC_WRITE, 0x4701, 0x4c },
 { "linux/hdreg.h", "HDIO_DRIVE_CMD", 0, 0x031f, 0 },
 { "linux/hdreg.h", "HDIO_DRIVE_RESET", 0, 0x031c, 0 },
 { "linux/if_pppox.h", "PPPOEIOCSFWD", _IOC_WRITE, 0xb100, 0x04 },
 { "linux/if_tun.h", "TUNATTACHFILTER", _IOC_WRITE, 0x54d5, 0x08 },
 { "linux/if_tun.h", "TUNDETACHFILTER", _IOC_WRITE, 0x54d6, 0x08 },
+{ "linux/if_tun.h", "TUNGETDEVNETNS", _IOC_NONE, 0x54e3, 0x00 },
 { "linux/if_tun.h", "TUNGETFEATURES", _IOC_READ, 0x54cf, 0x04 },
 { "linux/if_tun.h", "TUNGETFILTER", _IOC_READ, 0x54db, 0x08 },
 { "linux/if_tun.h", "TUNGETIFF", _IOC_READ, 0x54d2, 0x04 },
 { "linux/ipmi_bmc.h", "IPMI_BMC_IOCTL_CLEAR_SMS_ATN", _IOC_NONE, 0xb101, 0x00 },
 { "linux/ipmi_bmc.h", "IPMI_BMC_IOCTL_FORCE_ABORT", _IOC_NONE, 0xb102, 0x00 },
 { "linux/ipmi_bmc.h", "IPMI_BMC_IOCTL_SET_SMS_ATN", _IOC_NONE, 0xb100, 0x00 },
-{ "linux/isdn.h", "IIOCDBGVAR", _IOC_NONE, 0x497f, 0x00 },
-{ "linux/isdn.h", "IIOCDRVCTL", _IOC_NONE, 0x4980, 0x00 },
-{ "linux/isdn.h", "IIOCGETCPS", _IOC_NONE, 0x4915, 0x00 },
-{ "linux/isdn.h", "IIOCGETDVR", _IOC_NONE, 0x4916, 0x00 },
-{ "linux/isdn.h", "IIOCGETMAP", _IOC_NONE, 0x4911, 0x00 },
-{ "linux/isdn.h", "IIOCGETPRF", _IOC_NONE, 0x490f, 0x00 },
-{ "linux/isdn.h", "IIOCGETSET", _IOC_NONE, 0x4908, 0x00 },
-{ "linux/isdn.h", "IIOCNETAIF", _IOC_NONE, 0x4901, 0x00 },
-{ "linux/isdn.h", "IIOCNETALN", _IOC_NONE, 0x4920, 0x00 },
-{ "linux/isdn.h", "IIOCNETANM", _IOC_NONE, 0x4905, 0x00 },
-{ "linux/isdn.h", "IIOCNETASL", _IOC_NONE, 0x4913, 0x00 },
-{ "linux/isdn.h", "IIOCNETDIF", _IOC_NONE, 0x4902, 0x00 },
-{ "linux/isdn.h", "IIOCNETDIL", _IOC_NONE, 0x4914, 0x00 },
-{ "linux/isdn.h", "IIOCNETDLN", _IOC_NONE, 0x4921, 0x00 },
-{ "linux/isdn.h", "IIOCNETDNM", _IOC_NONE, 0x4906, 0x00 },
-{ "linux/isdn.h", "IIOCNETDWRSET", _IOC_NONE, 0x4918, 0x00 },
-{ "linux/isdn.h", "IIOCNETGCF", _IOC_NONE, 0x4904, 0x00 },
-{ "linux/isdn.h", "IIOCNETGNM", _IOC_NONE, 0x4907, 0x00 },
-{ "linux/isdn.h", "IIOCNETGPN", _IOC_NONE, 0x4922, 0x00 },
-{ "linux/isdn.h", "IIOCNETHUP", _IOC_NONE, 0x490b, 0x00 },
-{ "linux/isdn.h", "IIOCNETLCR", _IOC_NONE, 0x4917, 0x00 },
-{ "linux/isdn.h", "IIOCNETSCF", _IOC_NONE, 0x4903, 0x00 },
-{ "linux/isdn.h", "IIOCSETBRJ", _IOC_NONE, 0x490d, 0x00 },
-{ "linux/isdn.h", "IIOCSETGST", _IOC_NONE, 0x490c, 0x00 },
-{ "linux/isdn.h", "IIOCSETMAP", _IOC_NONE, 0x4912, 0x00 },
-{ "linux/isdn.h", "IIOCSETPRF", _IOC_NONE, 0x4910, 0x00 },
-{ "linux/isdn.h", "IIOCSETSET", _IOC_NONE, 0x4909, 0x00 },
-{ "linux/isdn.h", "IIOCSETVER", _IOC_NONE, 0x490a, 0x00 },
-{ "linux/isdn.h", "IIOCSIGPRF", _IOC_NONE, 0x490e, 0x00 },
-{ "linux/isdn_ppp.h", "PPPIOCBUNDLE", _IOC_WRITE, 0x7481, 0x04 },
-{ "linux/isdn_ppp.h", "PPPIOCGCALLINFO", _IOC_READ|_IOC_WRITE, 0x7480, 0x88 },
-{ "linux/isdn_ppp.h", "PPPIOCGCOMPRESSORS", _IOC_READ, 0x7486, 0x20 },
-{ "linux/isdn_ppp.h", "PPPIOCGIFNAME", _IOC_READ, 0x7488, 0x10 },
-{ "linux/isdn_ppp.h", "PPPIOCGMPFLAGS", _IOC_READ, 0x7482, 0x04 },
-{ "linux/isdn_ppp.h", "PPPIOCSCOMPRESSOR", _IOC_WRITE, 0x7487, 0x04 },
-{ "linux/isdn_ppp.h", "PPPIOCSMPFLAGS", _IOC_WRITE, 0x7483, 0x04 },
-{ "linux/isdn_ppp.h", "PPPIOCSMPMRU", _IOC_WRITE, 0x7485, 0x04 },
-{ "linux/isdn_ppp.h", "PPPIOCSMPMTU", _IOC_WRITE, 0x7484, 0x04 },
+{ "linux/isst_if.h", "ISST_IF_GET_PHY_ID", _IOC_READ|_IOC_WRITE, 0xfe01, 0x04 },
+{ "linux/isst_if.h", "ISST_IF_GET_PLATFORM_INFO", _IOC_READ, 0xfe00, 0x04 },
+{ "linux/isst_if.h", "ISST_IF_IO_CMD", _IOC_WRITE, 0xfe02, 0x04 },
+{ "linux/isst_if.h", "ISST_IF_MBOX_COMMAND", _IOC_READ|_IOC_WRITE, 0xfe03, 0x04 },
+{ "linux/isst_if.h", "ISST_IF_MSR_COMMAND", _IOC_READ|_IOC_WRITE, 0xfe04, 0x04 },
 { "linux/ivtv.h", "IVTV_IOC_DMA_FRAME", _IOC_WRITE, 0x56c0, 0x38 },
 { "linux/ivtv.h", "IVTV_IOC_PASSTHROUGH_MODE", _IOC_WRITE, 0x56c1, 0x04 },
 { "linux/ivtvfb.h", "IVTVFB_IOC_DMA_FRAME", _IOC_WRITE, 0x56c0, 0x0c },
 { "linux/kcov.h", "KCOV_DISABLE", _IOC_NONE, 0x6365, 0x00 },
 { "linux/kcov.h", "KCOV_ENABLE", _IOC_NONE, 0x6364, 0x00 },
 { "linux/kcov.h", "KCOV_INIT_TRACE", _IOC_READ, 0x6301, 0x04 },
+{ "linux/kcov.h", "KCOV_REMOTE_ENABLE", _IOC_WRITE, 0x6366, 0x18 },
 { "linux/kd.h", "GIO_CMAP", 0, 0x4B70, 0 },
 { "linux/kd.h", "GIO_FONT", 0, 0x4B60, 0 },
 { "linux/kd.h", "GIO_FONTX", 0, 0x4B6B, 0 },
 { "linux/kd.h", "PIO_UNISCRNMAP", 0, 0x4B6A, 0 },
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_ACQUIRE_VM", _IOC_WRITE, 0x4b15, 0x08 },
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_ALLOC_MEMORY_OF_GPU", _IOC_READ|_IOC_WRITE, 0x4b16, 0x28 },
+{ "linux/kfd_ioctl.h", "AMDKFD_IOC_ALLOC_QUEUE_GWS", _IOC_READ|_IOC_WRITE, 0x4b1e, 0x10 },
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_CREATE_EVENT", _IOC_READ|_IOC_WRITE, 0x4b08, 0x20 },
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_CREATE_QUEUE", _IOC_READ|_IOC_WRITE, 0x4b02, 0x58 },
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_DBG_ADDRESS_WATCH", _IOC_WRITE, 0x4b0f, 0x10 },
 { "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_SET_TRAP_HANDLER", _IOC_WRITE, 0x4b13, 0x18 },
+{ "linux/kfd_ioctl.h", "AMDKFD_IOC_SMI_EVENTS", _IOC_READ|_IOC_WRITE, 0x4b1f, 0x08 },
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_UNMAP_MEMORY_FROM_GPU", _IOC_READ|_IOC_WRITE, 0x4b19, 0x18 },
 { "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/lirc.h", "LIRC_SET_WIDEBAND_RECEIVER", _IOC_WRITE, 0x6923, 0x04 },
 { "linux/loop.h", "LOOP_CHANGE_FD", 0, 0x4C06, 0 },
 { "linux/loop.h", "LOOP_CLR_FD", 0, 0x4C01, 0 },
+{ "linux/loop.h", "LOOP_CONFIGURE", 0, 0x4C0A, 0 },
 { "linux/loop.h", "LOOP_CTL_ADD", 0, 0x4C80, 0 },
 { "linux/loop.h", "LOOP_CTL_GET_FREE", 0, 0x4C82, 0 },
 { "linux/loop.h", "LOOP_CTL_REMOVE", 0, 0x4C81, 0 },
 { "linux/nsfs.h", "NS_GET_OWNER_UID", _IOC_NONE, 0xb704, 0x00 },
 { "linux/nsfs.h", "NS_GET_PARENT", _IOC_NONE, 0xb702, 0x00 },
 { "linux/nsfs.h", "NS_GET_USERNS", _IOC_NONE, 0xb701, 0x00 },
+{ "linux/nvme_ioctl.h", "NVME_IOCTL_ADMIN64_CMD", _IOC_READ|_IOC_WRITE, 0x4e47, 0x50 },
 { "linux/nvme_ioctl.h", "NVME_IOCTL_ADMIN_CMD", _IOC_READ|_IOC_WRITE, 0x4e41, 0x48 },
 { "linux/nvme_ioctl.h", "NVME_IOCTL_ID", _IOC_NONE, 0x4e40, 0x00 },
+{ "linux/nvme_ioctl.h", "NVME_IOCTL_IO64_CMD", _IOC_READ|_IOC_WRITE, 0x4e48, 0x50 },
 { "linux/nvme_ioctl.h", "NVME_IOCTL_IO_CMD", _IOC_READ|_IOC_WRITE, 0x4e43, 0x48 },
 { "linux/nvme_ioctl.h", "NVME_IOCTL_RESCAN", _IOC_NONE, 0x4e46, 0x00 },
 { "linux/nvme_ioctl.h", "NVME_IOCTL_RESET", _IOC_NONE, 0x4e44, 0x00 },
 { "linux/omapfb.h", "OMAPFB_WAITFORGO", _IOC_NONE, 0x4f3c, 0x00 },
 { "linux/omapfb.h", "OMAPFB_WAITFORVSYNC", _IOC_NONE, 0x4f39, 0x00 },
 { "linux/pcitest.h", "PCITEST_BAR", _IOC_NONE, 0x5001, 0x00 },
+{ "linux/pcitest.h", "PCITEST_CLEAR_IRQ", _IOC_NONE, 0x5010, 0x00 },
 { "linux/pcitest.h", "PCITEST_COPY", _IOC_WRITE, 0x5006, 0x04 },
 { "linux/pcitest.h", "PCITEST_GET_IRQTYPE", _IOC_NONE, 0x5009, 0x00 },
 { "linux/pcitest.h", "PCITEST_LEGACY_IRQ", _IOC_NONE, 0x5002, 0x00 },
 { "linux/phantom.h", "PHN_SET_REG", _IOC_WRITE, 0x7001, 0x04 },
 { "linux/phantom.h", "PHN_SET_REGS", _IOC_WRITE, 0x7003, 0x04 },
 { "linux/pktcdvd.h", "PACKET_CTRL_CMD", _IOC_READ|_IOC_WRITE, 0x5801, 0x18 },
+{ "linux/platform_data/cros_ec_chardev.h", "CROS_EC_DEV_IOCEVENTMASK", _IOC_NONE, 0xec02, 0x00 },
+{ "linux/platform_data/cros_ec_chardev.h", "CROS_EC_DEV_IOCRDMEM", _IOC_READ|_IOC_WRITE, 0xec01, 0x108 },
+{ "linux/platform_data/cros_ec_chardev.h", "CROS_EC_DEV_IOCXCMD", _IOC_READ|_IOC_WRITE, 0xec00, 0x14 },
 { "linux/platform_data/media/si4713.h", "SI4713_IOC_MEASURE_RNL", _IOC_READ|_IOC_WRITE, 0x56c0, 0x1c },
 { "linux/pmu.h", "PMU_IOC_CAN_SLEEP", _IOC_READ, 0x4205, 0x04 },
 { "linux/pmu.h", "PMU_IOC_GET_BACKLIGHT", _IOC_READ, 0x4201, 0x04 },
 { "linux/ppp-ioctl.h", "PPPIOCGDEBUG", _IOC_READ, 0x7441, 0x04 },
 { "linux/ppp-ioctl.h", "PPPIOCGFLAGS", _IOC_READ, 0x745a, 0x04 },
 { "linux/ppp-ioctl.h", "PPPIOCGIDLE", _IOC_READ, 0x743f, 0x08 },
+{ "linux/ppp-ioctl.h", "PPPIOCGIDLE32", _IOC_READ, 0x743f, 0x08 },
+{ "linux/ppp-ioctl.h", "PPPIOCGIDLE64", _IOC_READ, 0x743f, 0x10 },
 { "linux/ppp-ioctl.h", "PPPIOCGL2TPSTATS", _IOC_READ, 0x7436, 0x48 },
 { "linux/ppp-ioctl.h", "PPPIOCGMRU", _IOC_READ, 0x7453, 0x04 },
 { "linux/ppp-ioctl.h", "PPPIOCGNPMODE", _IOC_READ|_IOC_WRITE, 0x744c, 0x08 },
 { "linux/pr.h", "IOC_PR_RESERVE", _IOC_WRITE, 0x70c9, 0x10 },
 { "linux/psp-sev.h", "SEV_ISSUE_CMD", _IOC_READ|_IOC_WRITE, 0x5300, 0x10 },
 { "linux/ptp_clock.h", "PTP_CLOCK_GETCAPS", _IOC_READ, 0x3d01, 0x50 },
+{ "linux/ptp_clock.h", "PTP_CLOCK_GETCAPS2", _IOC_READ, 0x3d0a, 0x50 },
 { "linux/ptp_clock.h", "PTP_ENABLE_PPS", _IOC_WRITE, 0x3d04, 0x04 },
+{ "linux/ptp_clock.h", "PTP_ENABLE_PPS2", _IOC_WRITE, 0x3d0d, 0x04 },
 { "linux/ptp_clock.h", "PTP_EXTTS_REQUEST", _IOC_WRITE, 0x3d02, 0x10 },
+{ "linux/ptp_clock.h", "PTP_EXTTS_REQUEST2", _IOC_WRITE, 0x3d0b, 0x10 },
 { "linux/ptp_clock.h", "PTP_PEROUT_REQUEST", _IOC_WRITE, 0x3d03, 0x38 },
+{ "linux/ptp_clock.h", "PTP_PEROUT_REQUEST2", _IOC_WRITE, 0x3d0c, 0x38 },
 { "linux/ptp_clock.h", "PTP_PIN_GETFUNC", _IOC_READ|_IOC_WRITE, 0x3d06, 0x60 },
+{ "linux/ptp_clock.h", "PTP_PIN_GETFUNC2", _IOC_READ|_IOC_WRITE, 0x3d0f, 0x60 },
 { "linux/ptp_clock.h", "PTP_PIN_SETFUNC", _IOC_WRITE, 0x3d07, 0x60 },
+{ "linux/ptp_clock.h", "PTP_PIN_SETFUNC2", _IOC_WRITE, 0x3d10, 0x60 },
 { "linux/ptp_clock.h", "PTP_SYS_OFFSET", _IOC_WRITE, 0x3d05, 0x340 },
+{ "linux/ptp_clock.h", "PTP_SYS_OFFSET2", _IOC_WRITE, 0x3d0e, 0x340 },
 { "linux/ptp_clock.h", "PTP_SYS_OFFSET_EXTENDED", _IOC_READ|_IOC_WRITE, 0x3d09, 0x4c0 },
+{ "linux/ptp_clock.h", "PTP_SYS_OFFSET_EXTENDED2", _IOC_READ|_IOC_WRITE, 0x3d12, 0x4c0 },
 { "linux/ptp_clock.h", "PTP_SYS_OFFSET_PRECISE", _IOC_READ|_IOC_WRITE, 0x3d08, 0x40 },
+{ "linux/ptp_clock.h", "PTP_SYS_OFFSET_PRECISE2", _IOC_READ|_IOC_WRITE, 0x3d11, 0x40 },
 { "linux/radeonfb.h", "FBIO_RADEON_GET_MIRROR", _IOC_READ, 0x4003, 0x04 },
 { "linux/radeonfb.h", "FBIO_RADEON_SET_MIRROR", _IOC_WRITE, 0x4004, 0x04 },
 { "linux/raid/md_u.h", "ADD_NEW_DISK", _IOC_WRITE, 0x0921, 0x14 },
 { "linux/raw.h", "RAW_GETBIND", _IOC_NONE, 0xac01, 0x00 },
 { "linux/raw.h", "RAW_SETBIND", _IOC_NONE, 0xac00, 0x00 },
 { "linux/reiserfs_fs.h", "REISERFS_IOC_UNPACK", _IOC_WRITE, 0xcd01, 0x04 },
+{ "linux/remoteproc_cdev.h", "RPROC_GET_SHUTDOWN_ON_RELEASE", _IOC_READ, 0xb702, 0x04 },
+{ "linux/remoteproc_cdev.h", "RPROC_SET_SHUTDOWN_ON_RELEASE", _IOC_WRITE, 0xb701, 0x04 },
 { "linux/rfkill.h", "RFKILL_IOCTL_NOINPUT", _IOC_NONE, 0x5201, 0x00 },
 { "linux/rio_cm_cdev.h", "RIO_CM_CHAN_ACCEPT", _IOC_READ|_IOC_WRITE, 0x6307, 0x08 },
 { "linux/rio_cm_cdev.h", "RIO_CM_CHAN_BIND", _IOC_WRITE, 0x6305, 0x08 },
 { "linux/scif_ioctl.h", "SCIF_VREADFROM", _IOC_READ|_IOC_WRITE, 0x730c, 0x28 },
 { "linux/scif_ioctl.h", "SCIF_VWRITETO", _IOC_READ|_IOC_WRITE, 0x730d, 0x28 },
 { "linux/scif_ioctl.h", "SCIF_WRITETO", _IOC_READ|_IOC_WRITE, 0x730b, 0x28 },
-{ "linux/seccomp.h", "SECCOMP_IOCTL_NOTIF_ID_VALID", _IOC_READ, 0x2102, 0x08 },
+{ "linux/seccomp.h", "SECCOMP_IOCTL_NOTIF_ADDFD", _IOC_WRITE, 0x2103, 0x18 },
+{ "linux/seccomp.h", "SECCOMP_IOCTL_NOTIF_ID_VALID", _IOC_WRITE, 0x2102, 0x08 },
 { "linux/seccomp.h", "SECCOMP_IOCTL_NOTIF_RECV", _IOC_READ|_IOC_WRITE, 0x2100, 0x50 },
 { "linux/seccomp.h", "SECCOMP_IOCTL_NOTIF_SEND", _IOC_READ|_IOC_WRITE, 0x2101, 0x18 },
 { "linux/sed-opal.h", "IOC_OPAL_ACTIVATE_LSP", _IOC_WRITE, 0x70df, 0x118 },
 { "linux/sed-opal.h", "IOC_OPAL_ADD_USR_TO_LR", _IOC_WRITE, 0x70e4, 0x118 },
 { "linux/sed-opal.h", "IOC_OPAL_ENABLE_DISABLE_MBR", _IOC_WRITE, 0x70e5, 0x110 },
 { "linux/sed-opal.h", "IOC_OPAL_ERASE_LR", _IOC_WRITE, 0x70e6, 0x110 },
+{ "linux/sed-opal.h", "IOC_OPAL_GENERIC_TABLE_RW", _IOC_WRITE, 0x70eb, 0x138 },
 { "linux/sed-opal.h", "IOC_OPAL_LOCK_UNLOCK", _IOC_WRITE, 0x70dd, 0x118 },
 { "linux/sed-opal.h", "IOC_OPAL_LR_SETUP", _IOC_WRITE, 0x70e3, 0x128 },
+{ "linux/sed-opal.h", "IOC_OPAL_MBR_DONE", _IOC_WRITE, 0x70e9, 0x110 },
+{ "linux/sed-opal.h", "IOC_OPAL_PSID_REVERT_TPR", _IOC_WRITE, 0x70e8, 0x108 },
 { "linux/sed-opal.h", "IOC_OPAL_REVERT_TPR", _IOC_WRITE, 0x70e2, 0x108 },
 { "linux/sed-opal.h", "IOC_OPAL_SAVE", _IOC_WRITE, 0x70dc, 0x118 },
 { "linux/sed-opal.h", "IOC_OPAL_SECURE_ERASE_LR", _IOC_WRITE, 0x70e7, 0x110 },
 { "linux/sed-opal.h", "IOC_OPAL_SET_PW", _IOC_WRITE, 0x70e0, 0x220 },
 { "linux/sed-opal.h", "IOC_OPAL_TAKE_OWNERSHIP", _IOC_WRITE, 0x70de, 0x108 },
+{ "linux/sed-opal.h", "IOC_OPAL_WRITE_SHADOW_MBR", _IOC_WRITE, 0x70ea, 0x120 },
 { "linux/serio.h", "SPIOCSTYPE", _IOC_WRITE, 0x7101, 0x04 },
 { "linux/sockios.h", "SIOCADDDLCI", 0, 0x8980, 0 },
 { "linux/sockios.h", "SIOCADDMULTI", 0, 0x8931, 0 },
 { "linux/sockios.h", "SIOCGMIIREG", 0, 0x8948, 0 },
 { "linux/sockios.h", "SIOCGRARP", 0, 0x8961, 0 },
 { "linux/sockios.h", "SIOCGSKNS", 0, 0x894C, 0 },
+{ "linux/sockios.h", "SIOCGSTAMPNS_NEW", _IOC_READ, 0x8907, 0x10 },
+{ "linux/sockios.h", "SIOCGSTAMP_NEW", _IOC_READ, 0x8906, 0x10 },
 { "linux/sockios.h", "SIOCOUTQNSD", 0, 0x894B, 0 },
 { "linux/sockios.h", "SIOCPROTOPRIVATE", 0, 0x89E0, 0 },
 { "linux/sockios.h", "SIOCRTMSG", 0, 0x890D, 0 },
 { "linux/suspend_ioctls.h", "SNAPSHOT_SET_SWAP_AREA", _IOC_WRITE, 0x330d, 0x0c },
 { "linux/suspend_ioctls.h", "SNAPSHOT_UNFREEZE", _IOC_NONE, 0x3302, 0x00 },
 { "linux/switchtec_ioctl.h", "SWITCHTEC_IOCTL_EVENT_CTL", _IOC_READ|_IOC_WRITE, 0x5743, 0x28 },
-{ "linux/switchtec_ioctl.h", "SWITCHTEC_IOCTL_EVENT_SUMMARY", _IOC_READ, 0x5742, 0x198 },
+{ "linux/switchtec_ioctl.h", "SWITCHTEC_IOCTL_EVENT_SUMMARY", _IOC_READ, 0x5742, 0x4d8 },
+{ "linux/switchtec_ioctl.h", "SWITCHTEC_IOCTL_EVENT_SUMMARY_LEGACY", _IOC_READ, 0x5742, 0x198 },
 { "linux/switchtec_ioctl.h", "SWITCHTEC_IOCTL_FLASH_INFO", _IOC_READ, 0x5740, 0x10 },
 { "linux/switchtec_ioctl.h", "SWITCHTEC_IOCTL_FLASH_PART_INFO", _IOC_READ|_IOC_WRITE, 0x5741, 0x10 },
 { "linux/switchtec_ioctl.h", "SWITCHTEC_IOCTL_PFF_TO_PORT", _IOC_READ|_IOC_WRITE, 0x5744, 0x0c },
 { "linux/usb/iowarrior.h", "IOW_GETINFO", _IOC_READ, 0xc003, 0x28 },
 { "linux/usb/iowarrior.h", "IOW_READ", _IOC_WRITE, 0xc002, 0x04 },
 { "linux/usb/iowarrior.h", "IOW_WRITE", _IOC_WRITE, 0xc001, 0x04 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_CONFIGURE", _IOC_NONE, 0x5509, 0x00 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP0_READ", _IOC_READ|_IOC_WRITE, 0x5504, 0x08 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP0_STALL", _IOC_NONE, 0x550c, 0x00 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP0_WRITE", _IOC_WRITE, 0x5503, 0x08 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EPS_INFO", _IOC_READ, 0x550b, 0x3c0 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP_CLEAR_HALT", _IOC_WRITE, 0x550e, 0x04 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP_DISABLE", _IOC_WRITE, 0x5506, 0x04 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP_ENABLE", _IOC_WRITE, 0x5505, 0x09 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP_READ", _IOC_READ|_IOC_WRITE, 0x5508, 0x08 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP_SET_HALT", _IOC_WRITE, 0x550d, 0x04 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP_SET_WEDGE", _IOC_WRITE, 0x550f, 0x04 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP_WRITE", _IOC_WRITE, 0x5507, 0x08 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EVENT_FETCH", _IOC_READ, 0x5502, 0x08 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_INIT", _IOC_WRITE, 0x5500, 0x101 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_RUN", _IOC_NONE, 0x5501, 0x00 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_VBUS_DRAW", _IOC_WRITE, 0x550a, 0x04 },
 { "linux/usb/tmc.h", "USBTMC488_IOCTL_GET_CAPS", _IOC_READ, 0x5b11, 0x01 },
 { "linux/usb/tmc.h", "USBTMC488_IOCTL_GOTO_LOCAL", _IOC_NONE, 0x5b14, 0x00 },
 { "linux/usb/tmc.h", "USBTMC488_IOCTL_LOCAL_LOCKOUT", _IOC_NONE, 0x5b15, 0x00 },
 { "linux/usb/tmc.h", "USBTMC_IOCTL_WRITE", _IOC_READ|_IOC_WRITE, 0x5b0d, 0x10 },
 { "linux/usb/tmc.h", "USBTMC_IOCTL_WRITE_RESULT", _IOC_READ|_IOC_WRITE, 0x5b0f, 0x04 },
 { "linux/usbdevice_fs.h", "USBDEVFS_ALLOC_STREAMS", _IOC_READ, 0x551c, 0x08 },
+{ "linux/usbdevice_fs.h", "USBDEVFS_ALLOW_SUSPEND", _IOC_NONE, 0x5522, 0x00 },
 { "linux/usbdevice_fs.h", "USBDEVFS_BULK", _IOC_READ|_IOC_WRITE, 0x5502, 0x10 },
 { "linux/usbdevice_fs.h", "USBDEVFS_BULK32", _IOC_READ|_IOC_WRITE, 0x5502, 0x10 },
 { "linux/usbdevice_fs.h", "USBDEVFS_CLAIMINTERFACE", _IOC_READ, 0x550f, 0x04 },
 { "linux/usbdevice_fs.h", "USBDEVFS_DISCSIGNAL", _IOC_READ, 0x550e, 0x08 },
 { "linux/usbdevice_fs.h", "USBDEVFS_DISCSIGNAL32", _IOC_READ, 0x550e, 0x08 },
 { "linux/usbdevice_fs.h", "USBDEVFS_DROP_PRIVILEGES", _IOC_WRITE, 0x551e, 0x04 },
+{ "linux/usbdevice_fs.h", "USBDEVFS_FORBID_SUSPEND", _IOC_NONE, 0x5521, 0x00 },
 { "linux/usbdevice_fs.h", "USBDEVFS_FREE_STREAMS", _IOC_READ, 0x551d, 0x08 },
 { "linux/usbdevice_fs.h", "USBDEVFS_GETDRIVER", _IOC_WRITE, 0x5508, 0x104 },
 { "linux/usbdevice_fs.h", "USBDEVFS_GET_CAPABILITIES", _IOC_READ, 0x551a, 0x04 },
 { "linux/usbdevice_fs.h", "USBDEVFS_SETINTERFACE", _IOC_READ, 0x5504, 0x08 },
 { "linux/usbdevice_fs.h", "USBDEVFS_SUBMITURB", _IOC_READ, 0x550a, 0x2c },
 { "linux/usbdevice_fs.h", "USBDEVFS_SUBMITURB32", _IOC_READ, 0x550a, 0x2a },
+{ "linux/usbdevice_fs.h", "USBDEVFS_WAIT_FOR_RESUME", _IOC_NONE, 0x5523, 0x00 },
 { "linux/userfaultfd.h", "UFFDIO_API", _IOC_READ|_IOC_WRITE, 0xaa3f, 0x18 },
 { "linux/userfaultfd.h", "UFFDIO_COPY", _IOC_READ|_IOC_WRITE, 0xaa03, 0x28 },
 { "linux/userfaultfd.h", "UFFDIO_REGISTER", _IOC_READ|_IOC_WRITE, 0xaa00, 0x20 },
 { "linux/userfaultfd.h", "UFFDIO_UNREGISTER", _IOC_READ, 0xaa01, 0x10 },
 { "linux/userfaultfd.h", "UFFDIO_WAKE", _IOC_READ, 0xaa02, 0x10 },
+{ "linux/userfaultfd.h", "UFFDIO_WRITEPROTECT", _IOC_READ|_IOC_WRITE, 0xaa06, 0x18 },
 { "linux/userfaultfd.h", "UFFDIO_ZEROPAGE", _IOC_READ|_IOC_WRITE, 0xaa04, 0x20 },
 { "linux/uvcvideo.h", "UVCIOC_CTRL_MAP", _IOC_READ|_IOC_WRITE, 0x7520, 0x58 },
 { "linux/uvcvideo.h", "UVCIOC_CTRL_QUERY", _IOC_READ|_IOC_WRITE, 0x7521, 0x0c },
 { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_G_FMT", _IOC_READ|_IOC_WRITE, 0x5604, 0x58 },
 { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_G_FRAME_INTERVAL", _IOC_READ|_IOC_WRITE, 0x5615, 0x30 },
 { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_G_SELECTION", _IOC_READ|_IOC_WRITE, 0x563d, 0x40 },
+{ "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_QUERYCAP", _IOC_READ, 0x5600, 0x40 },
 { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_CROP", _IOC_READ|_IOC_WRITE, 0x563c, 0x38 },
 { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_FMT", _IOC_READ|_IOC_WRITE, 0x5605, 0x58 },
 { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_FRAME_INTERVAL", _IOC_READ|_IOC_WRITE, 0x5616, 0x30 },
 { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_SELECTION", _IOC_READ|_IOC_WRITE, 0x563e, 0x40 },
+{ "linux/vboxguest.h", "VBG_IOCTL_ACQUIRE_GUEST_CAPABILITIES", _IOC_READ|_IOC_WRITE, 0x560d, 0x24 },
 { "linux/vboxguest.h", "VBG_IOCTL_CHANGE_FILTER_MASK", _IOC_READ|_IOC_WRITE, 0x560c, 0x20 },
 { "linux/vboxguest.h", "VBG_IOCTL_CHANGE_GUEST_CAPABILITIES", _IOC_READ|_IOC_WRITE, 0x560e, 0x20 },
 { "linux/vboxguest.h", "VBG_IOCTL_CHECK_BALLOON", _IOC_READ|_IOC_WRITE, 0x5611, 0x20 },
 { "linux/vboxguest.h", "VBG_IOCTL_HGCM_CONNECT", _IOC_READ|_IOC_WRITE, 0x5604, 0x9c },
 { "linux/vboxguest.h", "VBG_IOCTL_HGCM_DISCONNECT", _IOC_READ|_IOC_WRITE, 0x5605, 0x1c },
 { "linux/vboxguest.h", "VBG_IOCTL_INTERRUPT_ALL_WAIT_FOR_EVENTS", _IOC_READ|_IOC_WRITE, 0x560b, 0x18 },
-{ "linux/vboxguest.h", "VBG_IOCTL_VMMDEV_REQUEST_BIG", _IOC_READ|_IOC_WRITE, 0x5603, 0x00 },
+{ "linux/vboxguest.h", "VBG_IOCTL_VMMDEV_REQUEST_BIG", _IOC_NONE, 0x5603, 0x00 },
 { "linux/vboxguest.h", "VBG_IOCTL_WAIT_FOR_EVENTS", _IOC_READ|_IOC_WRITE, 0x560a, 0x20 },
 { "linux/vboxguest.h", "VBG_IOCTL_WRITE_CORE_DUMP", _IOC_READ|_IOC_WRITE, 0x5613, 0x1c },
 { "linux/vfio.h", "VFIO_CHECK_EXTENSION", _IOC_NONE, 0x3b65, 0x00 },
+{ "linux/vfio.h", "VFIO_DEVICE_FEATURE", _IOC_NONE, 0x3b75, 0x00 },
 { "linux/vfio.h", "VFIO_DEVICE_GET_GFX_DMABUF", _IOC_NONE, 0x3b73, 0x00 },
 { "linux/vfio.h", "VFIO_DEVICE_GET_INFO", _IOC_NONE, 0x3b6b, 0x00 },
 { "linux/vfio.h", "VFIO_DEVICE_GET_IRQ_INFO", _IOC_NONE, 0x3b6d, 0x00 },
 { "linux/vfio.h", "VFIO_GROUP_GET_STATUS", _IOC_NONE, 0x3b67, 0x00 },
 { "linux/vfio.h", "VFIO_GROUP_SET_CONTAINER", _IOC_NONE, 0x3b68, 0x00 },
 { "linux/vfio.h", "VFIO_GROUP_UNSET_CONTAINER", _IOC_NONE, 0x3b69, 0x00 },
+{ "linux/vfio.h", "VFIO_IOMMU_DIRTY_PAGES", _IOC_NONE, 0x3b75, 0x00 },
 { "linux/vfio.h", "VFIO_IOMMU_DISABLE", _IOC_NONE, 0x3b74, 0x00 },
 { "linux/vfio.h", "VFIO_IOMMU_ENABLE", _IOC_NONE, 0x3b73, 0x00 },
 { "linux/vfio.h", "VFIO_IOMMU_GET_INFO", _IOC_NONE, 0x3b70, 0x00 },
 { "linux/vhost.h", "VHOST_SET_VRING_ERR", _IOC_WRITE, 0xaf22, 0x08 },
 { "linux/vhost.h", "VHOST_SET_VRING_KICK", _IOC_WRITE, 0xaf20, 0x08 },
 { "linux/vhost.h", "VHOST_SET_VRING_NUM", _IOC_WRITE, 0xaf10, 0x08 },
+{ "linux/vhost.h", "VHOST_VDPA_GET_CONFIG", _IOC_READ, 0xaf73, 0x08 },
+{ "linux/vhost.h", "VHOST_VDPA_GET_DEVICE_ID", _IOC_READ, 0xaf70, 0x04 },
+{ "linux/vhost.h", "VHOST_VDPA_GET_STATUS", _IOC_READ, 0xaf71, 0x01 },
+{ "linux/vhost.h", "VHOST_VDPA_GET_VRING_NUM", _IOC_READ, 0xaf76, 0x02 },
+{ "linux/vhost.h", "VHOST_VDPA_SET_CONFIG", _IOC_WRITE, 0xaf74, 0x08 },
+{ "linux/vhost.h", "VHOST_VDPA_SET_CONFIG_CALL", _IOC_WRITE, 0xaf77, 0x04 },
+{ "linux/vhost.h", "VHOST_VDPA_SET_STATUS", _IOC_WRITE, 0xaf72, 0x01 },
+{ "linux/vhost.h", "VHOST_VDPA_SET_VRING_ENABLE", _IOC_WRITE, 0xaf75, 0x08 },
 { "linux/vhost.h", "VHOST_VSOCK_SET_GUEST_CID", _IOC_WRITE, 0xaf60, 0x08 },
 { "linux/vhost.h", "VHOST_VSOCK_SET_RUNNING", _IOC_WRITE, 0xaf61, 0x04 },
 { "linux/videodev2.h", "VIDIOC_CREATE_BUFS", _IOC_READ|_IOC_WRITE, 0x565c, 0xf8 },
 { "linux/videodev2.h", "VIDIOC_DBG_G_REGISTER", _IOC_READ|_IOC_WRITE, 0x5650, 0x38 },
 { "linux/videodev2.h", "VIDIOC_DBG_S_REGISTER", _IOC_WRITE, 0x564f, 0x38 },
 { "linux/videodev2.h", "VIDIOC_DECODER_CMD", _IOC_READ|_IOC_WRITE, 0x5660, 0x48 },
-{ "linux/videodev2.h", "VIDIOC_DQBUF", _IOC_READ|_IOC_WRITE, 0x5611, 0x44 },
-{ "linux/videodev2.h", "VIDIOC_DQEVENT", _IOC_READ, 0x5659, 0x80 },
+{ "linux/videodev2.h", "VIDIOC_DQBUF", _IOC_READ|_IOC_WRITE, 0x5611, 0x50 },
+{ "linux/videodev2.h", "VIDIOC_DQEVENT", _IOC_READ, 0x5659, 0x88 },
 { "linux/videodev2.h", "VIDIOC_DV_TIMINGS_CAP", _IOC_READ|_IOC_WRITE, 0x5664, 0x90 },
 { "linux/videodev2.h", "VIDIOC_ENCODER_CMD", _IOC_READ|_IOC_WRITE, 0x564d, 0x28 },
 { "linux/videodev2.h", "VIDIOC_ENUMAUDIO", _IOC_READ|_IOC_WRITE, 0x5641, 0x34 },
 { "linux/videodev2.h", "VIDIOC_G_TUNER", _IOC_READ|_IOC_WRITE, 0x561d, 0x54 },
 { "linux/videodev2.h", "VIDIOC_LOG_STATUS", _IOC_NONE, 0x5646, 0x00 },
 { "linux/videodev2.h", "VIDIOC_OVERLAY", _IOC_WRITE, 0x560e, 0x04 },
-{ "linux/videodev2.h", "VIDIOC_PREPARE_BUF", _IOC_READ|_IOC_WRITE, 0x565d, 0x44 },
-{ "linux/videodev2.h", "VIDIOC_QBUF", _IOC_READ|_IOC_WRITE, 0x560f, 0x44 },
-{ "linux/videodev2.h", "VIDIOC_QUERYBUF", _IOC_READ|_IOC_WRITE, 0x5609, 0x44 },
+{ "linux/videodev2.h", "VIDIOC_PREPARE_BUF", _IOC_READ|_IOC_WRITE, 0x565d, 0x50 },
+{ "linux/videodev2.h", "VIDIOC_QBUF", _IOC_READ|_IOC_WRITE, 0x560f, 0x50 },
+{ "linux/videodev2.h", "VIDIOC_QUERYBUF", _IOC_READ|_IOC_WRITE, 0x5609, 0x50 },
 { "linux/videodev2.h", "VIDIOC_QUERYCAP", _IOC_READ, 0x5600, 0x68 },
 { "linux/videodev2.h", "VIDIOC_QUERYCTRL", _IOC_READ|_IOC_WRITE, 0x5624, 0x44 },
 { "linux/videodev2.h", "VIDIOC_QUERYMENU", _IOC_READ|_IOC_WRITE, 0x5625, 0x2c },
 { "linux/vt.h", "VT_WAITACTIVE", 0, 0x5607, 0 },
 { "linux/vt.h", "VT_WAITEVENT", 0, 0x560E, 0 },
 { "linux/vtpm_proxy.h", "VTPM_PROXY_IOC_NEW_DEV", _IOC_READ|_IOC_WRITE, 0xa100, 0x14 },
+{ "linux/watch_queue.h", "IOC_WATCH_QUEUE_SET_FILTER", _IOC_NONE, 0x5761, 0x00 },
+{ "linux/watch_queue.h", "IOC_WATCH_QUEUE_SET_SIZE", _IOC_NONE, 0x5760, 0x00 },
 { "linux/watchdog.h", "WDIOC_GETBOOTSTATUS", _IOC_READ, 0x5702, 0x04 },
 { "linux/watchdog.h", "WDIOC_GETPRETIMEOUT", _IOC_READ, 0x5709, 0x04 },
 { "linux/watchdog.h", "WDIOC_GETSTATUS", _IOC_READ, 0x5701, 0x04 },
 { "media/i2c/saa6588.h", "SAA6588_CMD_READ", _IOC_READ, 0x5203, 0x04 },
 { "media/v4l2-common.h", "TUNER_SET_CONFIG", _IOC_WRITE, 0x645c, 0x08 },
 { "media/v4l2-common.h", "VIDIOC_INT_RESET", _IOC_WRITE, 0x6466, 0x04 },
-{ "media/v4l2-subdev.h", "V4L2_DEVICE_NOTIFY_EVENT", _IOC_WRITE, 0x7602, 0x80 },
+{ "media/v4l2-ioctl.h", "VIDIOC_DQBUF_TIME32", _IOC_READ|_IOC_WRITE, 0x5611, 0x44 },
+{ "media/v4l2-ioctl.h", "VIDIOC_DQEVENT_TIME32", _IOC_READ, 0x5659, 0x80 },
+{ "media/v4l2-ioctl.h", "VIDIOC_PREPARE_BUF_TIME32", _IOC_READ|_IOC_WRITE, 0x565d, 0x44 },
+{ "media/v4l2-ioctl.h", "VIDIOC_QBUF_TIME32", _IOC_READ|_IOC_WRITE, 0x560f, 0x44 },
+{ "media/v4l2-ioctl.h", "VIDIOC_QUERYBUF_TIME32", _IOC_READ|_IOC_WRITE, 0x5609, 0x44 },
+{ "media/v4l2-subdev.h", "V4L2_DEVICE_NOTIFY_EVENT", _IOC_WRITE, 0x7602, 0x88 },
 { "media/v4l2-subdev.h", "V4L2_SUBDEV_IR_RX_NOTIFY", _IOC_WRITE, 0x7600, 0x04 },
 { "media/v4l2-subdev.h", "V4L2_SUBDEV_IR_TX_NOTIFY", _IOC_WRITE, 0x7601, 0x04 },
 { "misc/cxl.h", "CXL_IOCTL_DOWNLOAD_IMAGE", _IOC_WRITE, 0xca0a, 0x40 },
 { "misc/fastrpc.h", "FASTRPC_IOCTL_INIT_ATTACH", _IOC_NONE, 0x5204, 0x00 },
 { "misc/fastrpc.h", "FASTRPC_IOCTL_INIT_CREATE", _IOC_READ|_IOC_WRITE, 0x5205, 0x18 },
 { "misc/fastrpc.h", "FASTRPC_IOCTL_INVOKE", _IOC_READ|_IOC_WRITE, 0x5203, 0x10 },
+{ "misc/fastrpc.h", "FASTRPC_IOCTL_MMAP", _IOC_READ|_IOC_WRITE, 0x5206, 0x20 },
+{ "misc/fastrpc.h", "FASTRPC_IOCTL_MUNMAP", _IOC_READ|_IOC_WRITE, 0x5207, 0x10 },
 { "misc/habanalabs.h", "HL_IOCTL_CB", _IOC_READ|_IOC_WRITE, 0x4802, 0x18 },
 { "misc/habanalabs.h", "HL_IOCTL_CS", _IOC_READ|_IOC_WRITE, 0x4803, 0x30 },
+{ "misc/habanalabs.h", "HL_IOCTL_DEBUG", _IOC_READ|_IOC_WRITE, 0x4806, 0x28 },
 { "misc/habanalabs.h", "HL_IOCTL_INFO", _IOC_READ|_IOC_WRITE, 0x4801, 0x18 },
 { "misc/habanalabs.h", "HL_IOCTL_MEMORY", _IOC_READ|_IOC_WRITE, 0x4805, 0x28 },
 { "misc/habanalabs.h", "HL_IOCTL_WAIT_CS", _IOC_READ|_IOC_WRITE, 0x4804, 0x18 },
 { "misc/ocxl.h", "OCXL_IOCTL_IRQ_ALLOC", _IOC_READ, 0xca11, 0x08 },
 { "misc/ocxl.h", "OCXL_IOCTL_IRQ_FREE", _IOC_WRITE, 0xca12, 0x08 },
 { "misc/ocxl.h", "OCXL_IOCTL_IRQ_SET_FD", _IOC_WRITE, 0xca13, 0x10 },
+{ "misc/uacce/hisi_qm.h", "UACCE_CMD_QM_SET_QP_CTX", _IOC_READ|_IOC_WRITE, 0x480a, 0x04 },
+{ "misc/uacce/uacce.h", "UACCE_CMD_PUT_Q", _IOC_NONE, 0x5701, 0x00 },
+{ "misc/uacce/uacce.h", "UACCE_CMD_START_Q", _IOC_NONE, 0x5700, 0x00 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_ADD_LDPC_CODE_PARAMS", _IOC_WRITE, 0x6605, 0x4c },
+{ "misc/xilinx_sdfec.h", "XSDFEC_CLEAR_STATS", _IOC_NONE, 0x660b, 0x00 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_GET_CONFIG", _IOC_READ, 0x6606, 0x1c },
+{ "misc/xilinx_sdfec.h", "XSDFEC_GET_STATS", _IOC_READ, 0x660c, 0x0c },
+{ "misc/xilinx_sdfec.h", "XSDFEC_GET_STATUS", _IOC_READ, 0x6602, 0x08 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_GET_TURBO", _IOC_READ, 0x6607, 0x08 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_IS_ACTIVE", _IOC_READ, 0x660a, 0x01 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_SET_BYPASS", _IOC_WRITE, 0x6609, 0x01 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_SET_DEFAULT_CONFIG", _IOC_NONE, 0x660d, 0x00 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_SET_IRQ", _IOC_WRITE, 0x6603, 0x02 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_SET_ORDER", _IOC_WRITE, 0x6608, 0x04 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_SET_TURBO", _IOC_WRITE, 0x6604, 0x08 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_START_DEV", _IOC_NONE, 0x6600, 0x00 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_STOP_DEV", _IOC_NONE, 0x6601, 0x00 },
 { "mtd/mtd-abi.h", "ECCGETLAYOUT", _IOC_READ, 0x4d11, 0x148 },
 { "mtd/mtd-abi.h", "ECCGETSTATS", _IOC_READ, 0x4d12, 0x10 },
 { "mtd/mtd-abi.h", "MEMERASE", _IOC_WRITE, 0x4d02, 0x08 },
 { "sound/asound.h", "SNDRV_TIMER_IOCTL_START", _IOC_NONE, 0x54a0, 0x00 },
 { "sound/asound.h", "SNDRV_TIMER_IOCTL_STATUS", _IOC_READ, 0x5414, 0x58 },
 { "sound/asound.h", "SNDRV_TIMER_IOCTL_STOP", _IOC_NONE, 0x54a1, 0x00 },
-{ "sound/asound.h", "SNDRV_TIMER_IOCTL_TREAD", _IOC_WRITE, 0x5402, 0x04 },
+{ "sound/asound.h", "SNDRV_TIMER_IOCTL_TREAD64", _IOC_WRITE, 0x54a4, 0x04 },
+{ "sound/asound.h", "SNDRV_TIMER_IOCTL_TREAD_OLD", _IOC_WRITE, 0x5402, 0x04 },
 { "sound/asound_fm.h", "SNDRV_DM_FM_IOCTL_CLEAR_PATCHES", _IOC_NONE, 0x4840, 0x00 },
 { "sound/asound_fm.h", "SNDRV_DM_FM_IOCTL_INFO", _IOC_READ, 0x4820, 0x02 },
 { "sound/asound_fm.h", "SNDRV_DM_FM_IOCTL_PLAY_NOTE", _IOC_WRITE, 0x4822, 0x0c },
 { "sound/hdspm.h", "SNDRV_HDSPM_IOCTL_GET_PEAK_RMS", _IOC_READ, 0x4842, 0x908 },
 { "sound/hdspm.h", "SNDRV_HDSPM_IOCTL_GET_STATUS", _IOC_READ, 0x4847, 0x20 },
 { "sound/hdspm.h", "SNDRV_HDSPM_IOCTL_GET_VERSION", _IOC_READ, 0x4848, 0x24 },
+{ "sound/pcm.h", "SNDRV_PCM_IOCTL_STATUS32", _IOC_READ, 0x4120, 0x6c },
+{ "sound/pcm.h", "SNDRV_PCM_IOCTL_STATUS64", _IOC_READ, 0x4120, 0x80 },
+{ "sound/pcm.h", "SNDRV_PCM_IOCTL_STATUS_EXT32", _IOC_READ|_IOC_WRITE, 0x4124, 0x6c },
+{ "sound/pcm.h", "SNDRV_PCM_IOCTL_STATUS_EXT64", _IOC_READ|_IOC_WRITE, 0x4124, 0x80 },
 { "sound/sb16_csp.h", "SNDRV_SB_CSP_IOCTL_INFO", _IOC_READ, 0x4810, 0x28 },
 { "sound/sb16_csp.h", "SNDRV_SB_CSP_IOCTL_LOAD_CODE", _IOC_WRITE, 0x4811, 0x3012 },
 { "sound/sb16_csp.h", "SNDRV_SB_CSP_IOCTL_PAUSE", _IOC_NONE, 0x4815, 0x00 },
 { "staging/android/ashmem.h", "ASHMEM_UNPIN", _IOC_WRITE, 0x7708, 0x08 },
 { "staging/android/ion.h", "ION_IOC_ALLOC", _IOC_READ|_IOC_WRITE, 0x4900, 0x18 },
 { "staging/android/ion.h", "ION_IOC_HEAP_QUERY", _IOC_READ|_IOC_WRITE, 0x4908, 0x18 },
-{ "staging/android/vsoc_shm.h", "VSOC_COND_WAIT", _IOC_READ|_IOC_WRITE, 0xf507, 0x20 },
-{ "staging/android/vsoc_shm.h", "VSOC_COND_WAKE", _IOC_NONE, 0xf508, 0x00 },
-{ "staging/android/vsoc_shm.h", "VSOC_CREATE_FD_SCOPED_PERMISSION", _IOC_WRITE, 0xf500, 0x10 },
-{ "staging/android/vsoc_shm.h", "VSOC_DESCRIBE_REGION", _IOC_READ, 0xf504, 0x3c },
-{ "staging/android/vsoc_shm.h", "VSOC_GET_FD_SCOPED_PERMISSION", _IOC_READ, 0xf501, 0x10 },
-{ "staging/android/vsoc_shm.h", "VSOC_MAYBE_SEND_INTERRUPT_TO_HOST", _IOC_NONE, 0xf502, 0x00 },
-{ "staging/android/vsoc_shm.h", "VSOC_SELF_INTERRUPT", _IOC_NONE, 0xf505, 0x00 },
-{ "staging/android/vsoc_shm.h", "VSOC_SEND_INTERRUPT_TO_HOST", _IOC_NONE, 0xf506, 0x00 },
-{ "staging/android/vsoc_shm.h", "VSOC_WAIT_FOR_INCOMING_INTERRUPT", _IOC_NONE, 0xf503, 0x00 },
 { "video/da8xx-fb.h", "FBIGET_BRIGHTNESS", _IOC_READ, 0x4603, 0x04 },
 { "video/da8xx-fb.h", "FBIGET_COLOR", _IOC_READ, 0x4605, 0x04 },
 { "video/da8xx-fb.h", "FBIOGET_CONTRAST", _IOC_READ, 0x4601, 0x04 },
diff --git a/linux/32/syscallent-time32.h b/linux/32/syscallent-time32.h
new file mode 100644 (file)
index 0000000..5f9d0e4
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+[  4] = { 5,   0,              SEN(io_getevents_time32),       "io_getevents"          },
+[ 72] = { 6,   TD,             SEN(pselect6_time32),           "pselect6"              },
+[ 73] = { 5,   TD,             SEN(ppoll_time32),              "ppoll"                 },
+[ 86] = { 4,   TD,             SEN(timerfd_settime32),         "timerfd_settime"       },
+[ 87] = { 2,   TD,             SEN(timerfd_gettime32),         "timerfd_gettime"       },
+[ 88] = { 4,   TD|TF,          SEN(utimensat_time32),          "utimensat"             },
+[ 98] = { 6,   0,              SEN(futex_time32),              "futex"                 },
+[101] = { 2,   0,              SEN(nanosleep_time32),          "nanosleep"             },
+[108] = { 2,   0,              SEN(timer_gettime32),           "timer_gettime"         },
+[110] = { 4,   0,              SEN(timer_settime32),           "timer_settime"         },
+[112] = { 2,   TCL,            SEN(clock_settime32),           "clock_settime"         },
+[113] = { 2,   TCL,            SEN(clock_gettime32),           "clock_gettime"         },
+[114] = { 2,   TCL,            SEN(clock_getres_time32),       "clock_getres"          },
+[115] = { 4,   0,              SEN(clock_nanosleep_time32),    "clock_nanosleep"       },
+[127] = { 2,   0,              SEN(sched_rr_get_interval_time32),"sched_rr_get_interval"},
+[137] = { 4,   TS,             SEN(rt_sigtimedwait_time32),    "rt_sigtimedwait"       },
+[169] = { 2,   TCL,            SEN(gettimeofday),              "gettimeofday"          },
+[170] = { 2,   TCL,            SEN(settimeofday),              "settimeofday"          },
+[171] = { 1,   TCL,            SEN(adjtimex32),                "adjtimex"              },
+[182] = { 5,   TD,             SEN(mq_timedsend_time32),       "mq_timedsend"          },
+[183] = { 5,   TD,             SEN(mq_timedreceive_time32),    "mq_timedreceive"       },
+[192] = { 4,   TI,             SEN(semtimedop_time32),         "semtimedop"            },
+[243] = { 5,   TN,             SEN(recvmmsg_time32),           "recvmmsg"              },
+[260] = { 4,   TP,             SEN(wait4),                     "wait4"                 },
+[266] = { 2,   TCL,            SEN(clock_adjtime32),           "clock_adjtime"         },
+[292] = { 6,   0,              SEN(io_pgetevents_time32),      "io_pgetevents"         },
index 01a5009df1ace0b40919ad4503c3c3e2af4724ef..18a76b296c9f9163fb269f2c1dd2b90bde51b9df 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2019 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -12,7 +12,7 @@
 [  1] = { 1,   TM,             SEN(io_destroy),                "io_destroy"            },
 [  2] = { 3,   0,              SEN(io_submit),                 "io_submit"             },
 [  3] = { 3,   0,              SEN(io_cancel),                 "io_cancel"             },
-[  4] = { 5,   0,              SEN(io_getevents_time32),       "io_getevents"          },
+/* [  4] io_getevents */
 [  5] = { 5,   TF,             SEN(setxattr),                  "setxattr"              },
 [  6] = { 5,   TF,             SEN(setxattr),                  "lsetxattr"             },
 [  7] = { 5,   TD,             SEN(fsetxattr),                 "fsetxattr"             },
@@ -80,8 +80,8 @@
 [ 69] = { 5,   TD,             SEN(preadv),                    "preadv"                },
 [ 70] = { 5,   TD,             SEN(pwritev),                   "pwritev"               },
 [ 71] = { 4,   TD|TN,          SEN(sendfile64),                "sendfile64"            },
-[ 72] = { 6,   TD,             SEN(pselect6_time32),           "pselect6"              },
-[ 73] = { 5,   TD,             SEN(ppoll_time32),              "ppoll"                 },
+/* [ 72] pselect6 */
+/* [ 73] ppoll */
 [ 74] = { 4,   TD|TS,          SEN(signalfd4),                 "signalfd4"             },
 [ 75] = { 4,   TD,             SEN(vmsplice),                  "vmsplice"              },
 [ 76] = { 6,   TD,             SEN(splice),                    "splice"                },
 [ 84] = { 6,   TD,             SEN(sync_file_range),           "sync_file_range"       },
 #endif
 [ 85] = { 2,   TD,             SEN(timerfd_create),            "timerfd_create"        },
-[ 86] = { 4,   TD,             SEN(timerfd_settime32),         "timerfd_settime"       },
-[ 87] = { 2,   TD,             SEN(timerfd_gettime32),         "timerfd_gettime"       },
-[ 88] = { 4,   TD|TF,          SEN(utimensat_time32),          "utimensat"             },
+/* [ 86] timerfd_settime */
+/* [ 87] timerfd_gettime */
+/* [ 88] utimensat */
 [ 89] = { 1,   TF,             SEN(acct),                      "acct"                  },
-[ 90] = { 2,   0,              SEN(capget),                    "capget"                },
-[ 91] = { 2,   0,              SEN(capset),                    "capset"                },
+[ 90] = { 2,   TC,             SEN(capget),                    "capget"                },
+[ 91] = { 2,   TC,             SEN(capset),                    "capset"                },
 [ 92] = { 1,   NF,             SEN(personality),               "personality"           },
 [ 93] = { 1,   TP|SE,          SEN(exit),                      "exit"                  },
 [ 94] = { 1,   TP|SE,          SEN(exit),                      "exit_group"            },
 [ 95] = { 5,   TP,             SEN(waitid),                    "waitid"                },
 [ 96] = { 1,   0,              SEN(set_tid_address),           "set_tid_address"       },
-[ 97] = { 1,   TP,             SEN(unshare),                   "unshare"               },
-[ 98] = { 6,   0,              SEN(futex_time32),              "futex"                 },
+[ 97] = { 1,   0,              SEN(unshare),                   "unshare"               },
+/* [ 98] futex */
 [ 99] = { 2,   0,              SEN(set_robust_list),           "set_robust_list"       },
 [100] = { 3,   0,              SEN(get_robust_list),           "get_robust_list"       },
-[101] = { 2,   0,              SEN(nanosleep_time32),          "nanosleep"             },
+/* [101] nanosleep */
 [102] = { 2,   0,              SEN(getitimer),                 "getitimer"             },
 [103] = { 3,   0,              SEN(setitimer),                 "setitimer"             },
 [104] = { 4,   0,              SEN(kexec_load),                "kexec_load"            },
 [105] = { 3,   0,              SEN(init_module),               "init_module"           },
 [106] = { 2,   0,              SEN(delete_module),             "delete_module"         },
 [107] = { 3,   0,              SEN(timer_create),              "timer_create"          },
-[108] = { 2,   0,              SEN(timer_gettime32),           "timer_gettime"         },
+/* [108] timer_gettime */
 [109] = { 1,   0,              SEN(timer_getoverrun),          "timer_getoverrun"      },
-[110] = { 4,   0,              SEN(timer_settime32),           "timer_settime"         },
+/* [110] timer_settime */
 [111] = { 1,   0,              SEN(timer_delete),              "timer_delete"          },
-[112] = { 2,   0,              SEN(clock_settime32),           "clock_settime"         },
-[113] = { 2,   0,              SEN(clock_gettime32),           "clock_gettime"         },
-[114] = { 2,   0,              SEN(clock_getres_time32),       "clock_getres"          },
-[115] = { 4,   0,              SEN(clock_nanosleep_time32),    "clock_nanosleep"       },
+/* [112] clock_settime */
+/* [113] clock_gettime */
+/* [114] clock_getres */
+/* [115] clock_nanosleep */
 [116] = { 3,   0,              SEN(syslog),                    "syslog"                },
 [117] = { 4,   0,              SEN(ptrace),                    "ptrace"                },
 [118] = { 2,   0,              SEN(sched_setparam),            "sched_setparam"        },
 [124] = { 0,   0,              SEN(sched_yield),               "sched_yield"           },
 [125] = { 1,   0,              SEN(sched_get_priority_max),    "sched_get_priority_max"},
 [126] = { 1,   0,              SEN(sched_get_priority_min),    "sched_get_priority_min"},
-[127] = { 2,   0,              SEN(sched_rr_get_interval_time32),"sched_rr_get_interval"},
+/* [127] sched_rr_get_interval */
 [128] = { 0,   0,              SEN(restart_syscall),           "restart_syscall"       },
-[129] = { 2,   TS,             SEN(kill),                      "kill"                  },
-[130] = { 2,   TS,             SEN(kill),                      "tkill"                 },
-[131] = { 3,   TS,             SEN(tgkill),                    "tgkill"                },
+[129] = { 2,   TS|TP,          SEN(kill),                      "kill"                  },
+[130] = { 2,   TS|TP,          SEN(tkill),                     "tkill"                 },
+[131] = { 3,   TS|TP,          SEN(tgkill),                    "tgkill"                },
 [132] = { 2,   TS,             SEN(sigaltstack),               "sigaltstack"           },
 [133] = { 2,   TS,             SEN(rt_sigsuspend),             "rt_sigsuspend"         },
 [134] = { 4,   TS,             SEN(rt_sigaction),              "rt_sigaction"          },
 [135] = { 4,   TS,             SEN(rt_sigprocmask),            "rt_sigprocmask"        },
 [136] = { 2,   TS,             SEN(rt_sigpending),             "rt_sigpending"         },
-[137] = { 4,   TS,             SEN(rt_sigtimedwait_time32),    "rt_sigtimedwait"       },
-[138] = { 3,   TS,             SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
+/* [137] rt_sigtimedwait */
+[138] = { 3,   TS|TP,          SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
 [139] = { 0,   TS,             SEN(rt_sigreturn),              "rt_sigreturn"          },
 [140] = { 3,   0,              SEN(setpriority),               "setpriority"           },
 [141] = { 2,   0,              SEN(getpriority),               "getpriority"           },
 [142] = { 4,   0,              SEN(reboot),                    "reboot"                },
-[143] = { 2,   0,              SEN(setregid),                  "setregid"              },
-[144] = { 1,   0,              SEN(setgid),                    "setgid"                },
-[145] = { 2,   0,              SEN(setreuid),                  "setreuid"              },
-[146] = { 1,   0,              SEN(setuid),                    "setuid"                },
-[147] = { 3,   0,              SEN(setresuid),                 "setresuid"             },
-[148] = { 3,   0,              SEN(getresuid),                 "getresuid"             },
-[149] = { 3,   0,              SEN(setresgid),                 "setresgid"             },
-[150] = { 3,   0,              SEN(getresgid),                 "getresgid"             },
-[151] = { 1,   NF,             SEN(setfsuid),                  "setfsuid"              },
-[152] = { 1,   NF,             SEN(setfsgid),                  "setfsgid"              },
+[143] = { 2,   TC,             SEN(setregid),                  "setregid"              },
+[144] = { 1,   TC,             SEN(setgid),                    "setgid"                },
+[145] = { 2,   TC,             SEN(setreuid),                  "setreuid"              },
+[146] = { 1,   TC,             SEN(setuid),                    "setuid"                },
+[147] = { 3,   TC,             SEN(setresuid),                 "setresuid"             },
+[148] = { 3,   TC,             SEN(getresuid),                 "getresuid"             },
+[149] = { 3,   TC,             SEN(setresgid),                 "setresgid"             },
+[150] = { 3,   TC,             SEN(getresgid),                 "getresgid"             },
+[151] = { 1,   TC|NF,          SEN(setfsuid),                  "setfsuid"              },
+[152] = { 1,   TC|NF,          SEN(setfsgid),                  "setfsgid"              },
 [153] = { 1,   0,              SEN(times),                     "times"                 },
 [154] = { 2,   0,              SEN(setpgid),                   "setpgid"               },
 [155] = { 1,   0,              SEN(getpgid),                   "getpgid"               },
 [156] = { 1,   0,              SEN(getsid),                    "getsid"                },
 [157] = { 0,   0,              SEN(setsid),                    "setsid"                },
-[158] = { 2,   0,              SEN(getgroups),                 "getgroups"             },
-[159] = { 2,   0,              SEN(setgroups),                 "setgroups"             },
+[158] = { 2,   TC,             SEN(getgroups),                 "getgroups"             },
+[159] = { 2,   TC,             SEN(setgroups),                 "setgroups"             },
 [160] = { 1,   0,              SEN(uname),                     "uname"                 },
 [161] = { 2,   0,              SEN(sethostname),               "sethostname"           },
 [162] = { 2,   0,              SEN(setdomainname),             "setdomainname"         },
 [164] = { 2,   0,              SEN(setrlimit),                 "setrlimit"             },
 [165] = { 2,   0,              SEN(getrusage),                 "getrusage"             },
 [166] = { 1,   NF,             SEN(umask),                     "umask"                 },
-[167] = { 5,   0,              SEN(prctl),                     "prctl"                 },
+[167] = { 5,   TC,             SEN(prctl),                     "prctl"                 },
 [168] = { 3,   0,              SEN(getcpu),                    "getcpu"                },
-[169] = { 2,   0,              SEN(gettimeofday),              "gettimeofday"          },
-[170] = { 2,   0,              SEN(settimeofday),              "settimeofday"          },
-[171] = { 1,   0,              SEN(adjtimex32),                "adjtimex"              },
+/* [169] gettimeofday */
+/* [170] settimeofday */
+/* [171] adjtimex */
 [172] = { 0,   PU|NF,          SEN(getpid),                    "getpid"                },
 [173] = { 0,   PU|NF,          SEN(getppid),                   "getppid"               },
-[174] = { 0,   PU|NF,          SEN(getuid),                    "getuid"                },
-[175] = { 0,   PU|NF,          SEN(geteuid),                   "geteuid"               },
-[176] = { 0,   PU|NF,          SEN(getgid),                    "getgid"                },
-[177] = { 0,   PU|NF,          SEN(getegid),                   "getegid"               },
+[174] = { 0,   TC|PU|NF,       SEN(getuid),                    "getuid"                },
+[175] = { 0,   TC|PU|NF,       SEN(geteuid),                   "geteuid"               },
+[176] = { 0,   TC|PU|NF,       SEN(getgid),                    "getgid"                },
+[177] = { 0,   TC|PU|NF,       SEN(getegid),                   "getegid"               },
 [178] = { 0,   PU|NF,          SEN(gettid),                    "gettid"                },
 [179] = { 1,   0,              SEN(sysinfo),                   "sysinfo"               },
 [180] = { 4,   TD,             SEN(mq_open),                   "mq_open"               },
 [181] = { 1,   0,              SEN(mq_unlink),                 "mq_unlink"             },
-[182] = { 5,   TD,             SEN(mq_timedsend_time32),       "mq_timedsend"          },
-[183] = { 5,   TD,             SEN(mq_timedreceive_time32),    "mq_timedreceive"       },
+/* [182] mq_timedsend */
+/* [183] mq_timedreceive */
 [184] = { 2,   TD,             SEN(mq_notify),                 "mq_notify"             },
 [185] = { 3,   TD,             SEN(mq_getsetattr),             "mq_getsetattr"         },
 [186] = { 2,   TI,             SEN(msgget),                    "msgget"                },
 [189] = { 4,   TI,             SEN(msgsnd),                    "msgsnd"                },
 [190] = { 3,   TI,             SEN(semget),                    "semget"                },
 [191] = { 4,   TI,             SEN(semctl),                    "semctl"                },
-[192] = { 4,   TI,             SEN(semtimedop_time32),         "semtimedop"            },
+/* [192] semtimedop */
 [193] = { 3,   TI,             SEN(semop),                     "semop"                 },
 [194] = { 3,   TI,             SEN(shmget),                    "shmget"                },
 [195] = { 3,   TI,             SEN(shmctl),                    "shmctl"                },
 [218] = { 4,   0,              SEN(request_key),               "request_key"           },
 [219] = { 5,   0,              SEN(keyctl),                    "keyctl"                },
 [220] = { 5,   TP,             SEN(clone),                     "clone"                 },
-[221] = { 3,   TF|TP|SE|SI,    SEN(execve),                    "execve"                },
+[221] = { 3,   TF|TP|TSD|SE|SI,        SEN(execve),                    "execve"                },
 [222] = { 6,   TD|TM|SI,       SEN(ARCH_mmap),                 "mmap2"                 },
 [223] = { 6,   TD,             SEN(fadvise64_64),              "fadvise64_64"          },
 [224] = { 2,   TF,             SEN(swapon),                    "swapon"                },
 [240] = { 4,   TP|TS,          SEN(rt_tgsigqueueinfo),         "rt_tgsigqueueinfo"     },
 [241] = { 5,   TD,             SEN(perf_event_open),           "perf_event_open"       },
 [242] = { 4,   TN,             SEN(accept4),                   "accept4"               },
-[243] = { 5,   TN,             SEN(recvmmsg_time32),           "recvmmsg"              },
+/* [243] recvmmsg */
 /* [244 ... 259] are arch specific */
-[260] = { 4,   TP,             SEN(wait4),                     "wait4"                 },
+/* [260] wait4 */
 [261] = { 4,   0,              SEN(prlimit64),                 "prlimit64"             },
 [262] = { 2,   TD,             SEN(fanotify_init),             "fanotify_init"         },
 [263] = { 6,   TD|TF,          SEN(fanotify_mark),             "fanotify_mark"         },
 [264] = { 5,   TD|TF,          SEN(name_to_handle_at),         "name_to_handle_at"     },
 [265] = { 3,   TD,             SEN(open_by_handle_at),         "open_by_handle_at"     },
-[266] = { 2,   0,              SEN(clock_adjtime32),           "clock_adjtime"         },
+/* [266] clock_adjtime */
 [267] = { 1,   TD,             SEN(syncfs),                    "syncfs"                },
 [268] = { 2,   TD,             SEN(setns),                     "setns"                 },
 [269] = { 4,   TN,             SEN(sendmmsg),                  "sendmmsg"              },
 [278] = { 3,   0,              SEN(getrandom),                 "getrandom"             },
 [279] = { 2,   TD,             SEN(memfd_create),              "memfd_create"          },
 [280] = { 3,   TD,             SEN(bpf),                       "bpf"                   },
-[281] = { 5,   TD|TF|TP|SE|SI, SEN(execveat),                  "execveat"              },
+[281] = { 5,   TD|TF|TP|TSD|SE|SI,     SEN(execveat),                  "execveat"              },
 [282] = { 1,   TD,             SEN(userfaultfd),               "userfaultfd"           },
 [283] = { 2,   0,              SEN(membarrier),                "membarrier"            },
 [284] = { 3,   TM,             SEN(mlock2),                    "mlock2"                },
 [288] = { 4,   TM|SI,          SEN(pkey_mprotect),             "pkey_mprotect"         },
 [289] = { 2,   0,              SEN(pkey_alloc),                "pkey_alloc"            },
 [290] = { 1,   0,              SEN(pkey_free),                 "pkey_free"             },
-[291] = { 5,   TD|TF|TSTA,     SEN(statx),                     "statx"                 },
-[292] = { 6,   0,              SEN(io_pgetevents_time32),      "io_pgetevents"         },
+[291] = { 5,   TD|TF|TFST|TSTA,SEN(statx),                     "statx"                 },
+/* [292] io_pgetevents */
 [293] = { 4,   0,              SEN(rseq),                      "rseq"                  },
 [294] = { 5,   TD,             SEN(kexec_file_load),           "kexec_file_load"       },
-[403] = { 2,   0,              SEN(clock_gettime64),           "clock_gettime64"       },
-[404] = { 2,   0,              SEN(clock_settime64),           "clock_settime64"       },
-[405] = { 2,   0,              SEN(clock_adjtime64),           "clock_adjtime64"       },
-[406] = { 2,   0,              SEN(clock_getres_time64),       "clock_getres_time64"   },
-[407] = { 4,   0,              SEN(clock_nanosleep_time64),    "clock_nanosleep_time64"},
-[408] = { 2,   0,              SEN(timer_gettime64),           "timer_gettime64"       },
-[409] = { 4,   0,              SEN(timer_settime64),           "timer_settime64"       },
-[410] = { 2,   TD,             SEN(timerfd_gettime64),         "timerfd_gettime64"     },
-[411] = { 4,   TD,             SEN(timerfd_settime64),         "timerfd_settime64"     },
-[412] = { 4,   TD|TF,          SEN(utimensat_time64),          "utimensat_time64"      },
-[413] = { 6,   TD,             SEN(pselect6_time64),           "pselect6_time64"       },
-[414] = { 5,   TD,             SEN(ppoll_time64),              "ppoll_time64"          },
-[416] = { 6,   0,              SEN(io_pgetevents_time64),      "io_pgetevents_time64"  },
-[417] = { 5,   TN,             SEN(recvmmsg_time64),           "recvmmsg_time64"       },
-[418] = { 5,   TD,             SEN(mq_timedsend_time64),       "mq_timedsend_time64"   },
-[419] = { 5,   TD,             SEN(mq_timedreceive_time64),    "mq_timedreceive_time64"},
-[420] = { 4,   TI,             SEN(semtimedop_time64),         "semtimedop_time64"     },
-[421] = { 4,   TS,             SEN(rt_sigtimedwait_time64),    "rt_sigtimedwait_time64"},
-[422] = { 6,   0,              SEN(futex_time64),              "futex_time64"          },
-[423] = { 2,   0,              SEN(sched_rr_get_interval_time64),      "sched_rr_get_interval_time64"  },
-[424] = { 4,   TD|TS,          SEN(pidfd_send_signal),         "pidfd_send_signal"     },
-[425] = { 2,   TD,             SEN(io_uring_setup),            "io_uring_setup"        },
-[426] = { 6,   TD|TS,          SEN(io_uring_enter),            "io_uring_enter"        },
-[427] = { 4,   TD|TM,          SEN(io_uring_register),         "io_uring_register"     },
+#if HAVE_ARCH_TIME32_SYSCALLS
+# include "32/syscallent-time32.h"
+#endif
+/* [295 ... 402] - reserved to sync up with other architectures */
+#include "syscallent-common-32.h"
+#include "syscallent-common.h"
 
 #undef sys_ARCH_mmap
 #undef ARCH_WANT_SYNC_FILE_RANGE2
index bc5ba746ad034ebfaa33ad9c7ffe8c75bc3abdd7..32033e97bc29f029899dac9d205d0cd23b15705a 100644 (file)
@@ -81,8 +81,8 @@
 { "asm-generic/sockios.h", "FIOSETOWN", 0, 0x8901, 0 },
 { "asm-generic/sockios.h", "SIOCATMARK", 0, 0x8905, 0 },
 { "asm-generic/sockios.h", "SIOCGPGRP", 0, 0x8904, 0 },
-{ "asm-generic/sockios.h", "SIOCGSTAMP", 0, 0x8906, 0 },
-{ "asm-generic/sockios.h", "SIOCGSTAMPNS", 0, 0x8907, 0 },
+{ "asm-generic/sockios.h", "SIOCGSTAMPNS_OLD", 0, 0x8907, 0 },
+{ "asm-generic/sockios.h", "SIOCGSTAMP_OLD", 0, 0x8906, 0 },
 { "asm-generic/sockios.h", "SIOCSPGRP", 0, 0x8902, 0 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_BO_LIST", _IOC_READ|_IOC_WRITE, 0x6443, 0x18 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_CS", _IOC_READ|_IOC_WRITE, 0x6444, 0x18 },
 { "drm/drm.h", "DRM_IOCTL_MODE_GETCRTC", _IOC_READ|_IOC_WRITE, 0x64a1, 0x68 },
 { "drm/drm.h", "DRM_IOCTL_MODE_GETENCODER", _IOC_READ|_IOC_WRITE, 0x64a6, 0x14 },
 { "drm/drm.h", "DRM_IOCTL_MODE_GETFB", _IOC_READ|_IOC_WRITE, 0x64ad, 0x1c },
+{ "drm/drm.h", "DRM_IOCTL_MODE_GETFB2", _IOC_READ|_IOC_WRITE, 0x64ce, 0x68 },
 { "drm/drm.h", "DRM_IOCTL_MODE_GETGAMMA", _IOC_READ|_IOC_WRITE, 0x64a4, 0x20 },
 { "drm/drm.h", "DRM_IOCTL_MODE_GETPLANE", _IOC_READ|_IOC_WRITE, 0x64b6, 0x20 },
 { "drm/drm.h", "DRM_IOCTL_MODE_GETPLANERESOURCES", _IOC_READ|_IOC_WRITE, 0x64b5, 0x10 },
 { "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_QUERY", _IOC_READ|_IOC_WRITE, 0x64cb, 0x18 },
 { "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_TIMELINE_SIGNAL", _IOC_READ|_IOC_WRITE, 0x64cd, 0x18 },
+{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_TIMELINE_WAIT", _IOC_READ|_IOC_WRITE, 0x64ca, 0x28 },
+{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_TRANSFER", _IOC_READ|_IOC_WRITE, 0x64cc, 0x20 },
 { "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/i915_drm.h", "DRM_IOCTL_I915_FREE", _IOC_WRITE, 0x6449, 0x08 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_BUSY", _IOC_READ|_IOC_WRITE, 0x6457, 0x08 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CONTEXT_CREATE", _IOC_READ|_IOC_WRITE, 0x646d, 0x08 },
+{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CONTEXT_CREATE_EXT", _IOC_READ|_IOC_WRITE, 0x646d, 0x10 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CONTEXT_DESTROY", _IOC_WRITE, 0x646e, 0x08 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CONTEXT_GETPARAM", _IOC_READ|_IOC_WRITE, 0x6474, 0x18 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM", _IOC_READ|_IOC_WRITE, 0x6475, 0x18 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_MADVISE", _IOC_READ|_IOC_WRITE, 0x6466, 0x0c },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_MMAP", _IOC_READ|_IOC_WRITE, 0x645e, 0x28 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_MMAP_GTT", _IOC_READ|_IOC_WRITE, 0x6464, 0x10 },
+{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_MMAP_OFFSET", _IOC_READ|_IOC_WRITE, 0x6464, 0x20 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_PIN", _IOC_READ|_IOC_WRITE, 0x6455, 0x18 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_PREAD", _IOC_WRITE, 0x645c, 0x20 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_PWRITE", _IOC_WRITE, 0x645d, 0x20 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_THROTTLE", _IOC_NONE, 0x6458, 0x00 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_UNPIN", _IOC_WRITE, 0x6456, 0x08 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_USERPTR", _IOC_READ|_IOC_WRITE, 0x6473, 0x18 },
+{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_VM_CREATE", _IOC_READ|_IOC_WRITE, 0x647a, 0x10 },
+{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_VM_DESTROY", _IOC_WRITE, 0x647b, 0x10 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_WAIT", _IOC_READ|_IOC_WRITE, 0x646c, 0x10 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GETPARAM", _IOC_READ|_IOC_WRITE, 0x6446, 0x10 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GET_PIPE_FROM_CRTC_ID", _IOC_READ|_IOC_WRITE, 0x6465, 0x08 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_SET_SPRITE_COLORKEY", _IOC_READ|_IOC_WRITE, 0x646b, 0x14 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_SET_VBLANK_PIPE", _IOC_WRITE, 0x644d, 0x04 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_VBLANK_SWAP", _IOC_READ|_IOC_WRITE, 0x644f, 0x0c },
+{ "drm/i915_drm.h", "I915_PERF_IOCTL_CONFIG", _IOC_NONE, 0x6902, 0x00 },
 { "drm/i915_drm.h", "I915_PERF_IOCTL_DISABLE", _IOC_NONE, 0x6901, 0x00 },
 { "drm/i915_drm.h", "I915_PERF_IOCTL_ENABLE", _IOC_NONE, 0x6900, 0x00 },
+{ "drm/lima_drm.h", "DRM_IOCTL_LIMA_CTX_CREATE", _IOC_READ, 0x6445, 0x08 },
+{ "drm/lima_drm.h", "DRM_IOCTL_LIMA_CTX_FREE", _IOC_WRITE, 0x6446, 0x08 },
+{ "drm/lima_drm.h", "DRM_IOCTL_LIMA_GEM_CREATE", _IOC_READ|_IOC_WRITE, 0x6441, 0x10 },
+{ "drm/lima_drm.h", "DRM_IOCTL_LIMA_GEM_INFO", _IOC_READ|_IOC_WRITE, 0x6442, 0x10 },
+{ "drm/lima_drm.h", "DRM_IOCTL_LIMA_GEM_SUBMIT", _IOC_WRITE, 0x6443, 0x30 },
+{ "drm/lima_drm.h", "DRM_IOCTL_LIMA_GEM_WAIT", _IOC_WRITE, 0x6444, 0x10 },
+{ "drm/lima_drm.h", "DRM_IOCTL_LIMA_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6440, 0x10 },
 { "drm/mga_drm.h", "DRM_IOCTL_MGA_BLIT", _IOC_WRITE, 0x6448, 0x34 },
 { "drm/mga_drm.h", "DRM_IOCTL_MGA_CLEAR", _IOC_WRITE, 0x6444, 0x14 },
 { "drm/mga_drm.h", "DRM_IOCTL_MGA_DMA_BOOTSTRAP", _IOC_READ|_IOC_WRITE, 0x644c, 0x20 },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_INFO", _IOC_READ|_IOC_WRITE, 0x6443, 0x18 },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_MADVISE", _IOC_READ|_IOC_WRITE, 0x6448, 0x0c },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_NEW", _IOC_READ|_IOC_WRITE, 0x6442, 0x10 },
-{ "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_SUBMIT", _IOC_READ|_IOC_WRITE, 0x6446, 0x28 },
+{ "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_SUBMIT", _IOC_READ|_IOC_WRITE, 0x6446, 0x48 },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6440, 0x10 },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_SUBMITQUEUE_CLOSE", _IOC_WRITE, 0x644b, 0x04 },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_SUBMITQUEUE_NEW", _IOC_READ|_IOC_WRITE, 0x644a, 0x0c },
+{ "drm/msm_drm.h", "DRM_IOCTL_MSM_SUBMITQUEUE_QUERY", _IOC_WRITE, 0x644c, 0x18 },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_WAIT_FENCE", _IOC_WRITE, 0x6447, 0x20 },
 { "drm/nouveau_drm.h", "DRM_IOCTL_NOUVEAU_GEM_CPU_FINI", _IOC_WRITE, 0x6483, 0x04 },
 { "drm/nouveau_drm.h", "DRM_IOCTL_NOUVEAU_GEM_CPU_PREP", _IOC_WRITE, 0x6482, 0x08 },
 { "drm/omap_drm.h", "DRM_IOCTL_OMAP_GEM_NEW", _IOC_READ|_IOC_WRITE, 0x6443, 0x10 },
 { "drm/omap_drm.h", "DRM_IOCTL_OMAP_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6440, 0x10 },
 { "drm/omap_drm.h", "DRM_IOCTL_OMAP_SET_PARAM", _IOC_WRITE, 0x6441, 0x10 },
+{ "drm/panfrost_drm.h", "DRM_IOCTL_PANFROST_CREATE_BO", _IOC_READ|_IOC_WRITE, 0x6442, 0x18 },
+{ "drm/panfrost_drm.h", "DRM_IOCTL_PANFROST_GET_BO_OFFSET", _IOC_READ|_IOC_WRITE, 0x6445, 0x10 },
+{ "drm/panfrost_drm.h", "DRM_IOCTL_PANFROST_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6444, 0x10 },
+{ "drm/panfrost_drm.h", "DRM_IOCTL_PANFROST_MADVISE", _IOC_READ|_IOC_WRITE, 0x6448, 0x0c },
+{ "drm/panfrost_drm.h", "DRM_IOCTL_PANFROST_MMAP_BO", _IOC_READ|_IOC_WRITE, 0x6443, 0x10 },
+{ "drm/panfrost_drm.h", "DRM_IOCTL_PANFROST_PERFCNT_DUMP", _IOC_WRITE, 0x6447, 0x08 },
+{ "drm/panfrost_drm.h", "DRM_IOCTL_PANFROST_PERFCNT_ENABLE", _IOC_WRITE, 0x6446, 0x08 },
+{ "drm/panfrost_drm.h", "DRM_IOCTL_PANFROST_SUBMIT", _IOC_WRITE, 0x6440, 0x28 },
+{ "drm/panfrost_drm.h", "DRM_IOCTL_PANFROST_WAIT_BO", _IOC_WRITE, 0x6441, 0x10 },
 { "drm/qxl_drm.h", "DRM_IOCTL_QXL_ALLOC", _IOC_READ|_IOC_WRITE, 0x6440, 0x08 },
 { "drm/qxl_drm.h", "DRM_IOCTL_QXL_ALLOC_SURF", _IOC_READ|_IOC_WRITE, 0x6446, 0x18 },
 { "drm/qxl_drm.h", "DRM_IOCTL_QXL_CLIENTCAP", _IOC_WRITE, 0x6445, 0x08 },
 { "drm/v3d_drm.h", "DRM_IOCTL_V3D_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6444, 0x10 },
 { "drm/v3d_drm.h", "DRM_IOCTL_V3D_MMAP_BO", _IOC_READ|_IOC_WRITE, 0x6443, 0x10 },
 { "drm/v3d_drm.h", "DRM_IOCTL_V3D_SUBMIT_CL", _IOC_READ|_IOC_WRITE, 0x6440, 0x38 },
+{ "drm/v3d_drm.h", "DRM_IOCTL_V3D_SUBMIT_CSD", _IOC_WRITE, 0x6447, 0x48 },
 { "drm/v3d_drm.h", "DRM_IOCTL_V3D_SUBMIT_TFU", _IOC_WRITE, 0x6446, 0x44 },
 { "drm/v3d_drm.h", "DRM_IOCTL_V3D_WAIT_BO", _IOC_READ|_IOC_WRITE, 0x6441, 0x10 },
 { "drm/vc4_drm.h", "DRM_IOCTL_VC4_CREATE_BO", _IOC_READ|_IOC_WRITE, 0x6443, 0x10 },
 { "linux/arcfb.h", "FBIO_WAITEVENT", _IOC_NONE, 0x4688, 0x00 },
 { "linux/aspeed-lpc-ctrl.h", "ASPEED_LPC_CTRL_IOCTL_GET_SIZE", _IOC_READ|_IOC_WRITE, 0xb200, 0x10 },
 { "linux/aspeed-lpc-ctrl.h", "ASPEED_LPC_CTRL_IOCTL_MAP", _IOC_WRITE, 0xb201, 0x10 },
+{ "linux/aspeed-p2a-ctrl.h", "ASPEED_P2A_CTRL_IOCTL_GET_MEMORY_CONFIG", _IOC_READ|_IOC_WRITE, 0xb301, 0x10 },
+{ "linux/aspeed-p2a-ctrl.h", "ASPEED_P2A_CTRL_IOCTL_SET_WINDOW", _IOC_WRITE, 0xb300, 0x10 },
 { "linux/atm_eni.h", "ENI_MEMDUMP", _IOC_WRITE, 0x6160, 0x10 },
 { "linux/atm_eni.h", "ENI_SETMULT", _IOC_WRITE, 0x6167, 0x10 },
 { "linux/atm_he.h", "HE_GET_REG", _IOC_WRITE, 0x6160, 0x10 },
 { "linux/auto_fs.h", "AUTOFS_IOC_SETTIMEOUT", _IOC_READ|_IOC_WRITE, 0x9364, 0x08 },
 { "linux/auto_fs.h", "AUTOFS_IOC_SETTIMEOUT32", _IOC_READ|_IOC_WRITE, 0x9364, 0x04 },
 { "linux/blkpg.h", "BLKPG", _IOC_NONE, 0x1269, 0x00 },
+{ "linux/blkzoned.h", "BLKCLOSEZONE", _IOC_WRITE, 0x1287, 0x10 },
+{ "linux/blkzoned.h", "BLKFINISHZONE", _IOC_WRITE, 0x1288, 0x10 },
 { "linux/blkzoned.h", "BLKGETNRZONES", _IOC_READ, 0x1285, 0x04 },
 { "linux/blkzoned.h", "BLKGETZONESZ", _IOC_READ, 0x1284, 0x04 },
+{ "linux/blkzoned.h", "BLKOPENZONE", _IOC_WRITE, 0x1286, 0x10 },
 { "linux/blkzoned.h", "BLKREPORTZONE", _IOC_READ|_IOC_WRITE, 0x1282, 0x10 },
 { "linux/blkzoned.h", "BLKRESETZONE", _IOC_WRITE, 0x1283, 0x10 },
 { "linux/bt-bmc.h", "BT_BMC_IOCTL_SMS_ATN", _IOC_NONE, 0xb100, 0x00 },
 { "linux/btrfs.h", "BTRFS_IOC_SNAP_CREATE", _IOC_WRITE, 0x9401, 0x1000 },
 { "linux/btrfs.h", "BTRFS_IOC_SNAP_CREATE_V2", _IOC_WRITE, 0x9417, 0x1000 },
 { "linux/btrfs.h", "BTRFS_IOC_SNAP_DESTROY", _IOC_WRITE, 0x940f, 0x1000 },
+{ "linux/btrfs.h", "BTRFS_IOC_SNAP_DESTROY_V2", _IOC_WRITE, 0x943f, 0x1000 },
 { "linux/btrfs.h", "BTRFS_IOC_SPACE_INFO", _IOC_READ|_IOC_WRITE, 0x9414, 0x10 },
 { "linux/btrfs.h", "BTRFS_IOC_START_SYNC", _IOC_READ, 0x9418, 0x08 },
 { "linux/btrfs.h", "BTRFS_IOC_SUBVOL_CREATE", _IOC_WRITE, 0x940e, 0x1000 },
 { "linux/cdrom.h", "DVD_READ_STRUCT", 0, 0x5390, 0 },
 { "linux/cdrom.h", "DVD_WRITE_STRUCT", 0, 0x5391, 0 },
 { "linux/cec.h", "CEC_ADAP_G_CAPS", _IOC_READ|_IOC_WRITE, 0x6100, 0x4c },
+{ "linux/cec.h", "CEC_ADAP_G_CONNECTOR_INFO", _IOC_READ, 0x610a, 0x44 },
 { "linux/cec.h", "CEC_ADAP_G_LOG_ADDRS", _IOC_READ, 0x6103, 0x5c },
 { "linux/cec.h", "CEC_ADAP_G_PHYS_ADDR", _IOC_READ, 0x6101, 0x02 },
 { "linux/cec.h", "CEC_ADAP_S_LOG_ADDRS", _IOC_READ|_IOC_WRITE, 0x6104, 0x5c },
 { "linux/dm-ioctl.h", "DM_DEV_STATUS", _IOC_READ|_IOC_WRITE, 0xfd07, 0x138 },
 { "linux/dm-ioctl.h", "DM_DEV_SUSPEND", _IOC_READ|_IOC_WRITE, 0xfd06, 0x138 },
 { "linux/dm-ioctl.h", "DM_DEV_WAIT", _IOC_READ|_IOC_WRITE, 0xfd08, 0x138 },
+{ "linux/dm-ioctl.h", "DM_GET_TARGET_VERSION", _IOC_READ|_IOC_WRITE, 0xfd11, 0x138 },
 { "linux/dm-ioctl.h", "DM_LIST_DEVICES", _IOC_READ|_IOC_WRITE, 0xfd02, 0x138 },
 { "linux/dm-ioctl.h", "DM_LIST_VERSIONS", _IOC_READ|_IOC_WRITE, 0xfd0d, 0x138 },
 { "linux/dm-ioctl.h", "DM_REMOVE_ALL", _IOC_READ|_IOC_WRITE, 0xfd01, 0x138 },
 { "linux/dm-ioctl.h", "DM_TARGET_MSG", _IOC_READ|_IOC_WRITE, 0xfd0e, 0x138 },
 { "linux/dm-ioctl.h", "DM_VERSION", _IOC_READ|_IOC_WRITE, 0xfd00, 0x138 },
 { "linux/dma-buf.h", "DMA_BUF_IOCTL_SYNC", _IOC_WRITE, 0x6200, 0x08 },
+{ "linux/dma-buf.h", "DMA_BUF_SET_NAME_A", _IOC_WRITE, 0x6201, 0x04 },
+{ "linux/dma-buf.h", "DMA_BUF_SET_NAME_B", _IOC_WRITE, 0x6201, 0x08 },
+{ "linux/dma-heap.h", "DMA_HEAP_IOCTL_ALLOC", _IOC_READ|_IOC_WRITE, 0x4800, 0x18 },
 { "linux/dn.h", "OSIOCGNETADDR", _IOC_READ, 0x89e1, 0x04 },
 { "linux/dn.h", "OSIOCSNETADDR", _IOC_WRITE, 0x89e0, 0x04 },
 { "linux/dn.h", "SIOCGNETADDR", _IOC_READ, 0x89e1, 0x04 },
 { "linux/firewire-cdev.h", "FW_CDEV_IOC_START_ISO", _IOC_WRITE, 0x230a, 0x10 },
 { "linux/firewire-cdev.h", "FW_CDEV_IOC_STOP_ISO", _IOC_WRITE, 0x230b, 0x04 },
 { "linux/fpga-dfl.h", "DFL_FPGA_CHECK_EXTENSION", _IOC_NONE, 0xb601, 0x00 },
+{ "linux/fpga-dfl.h", "DFL_FPGA_FME_ERR_GET_IRQ_NUM", _IOC_READ, 0xb683, 0x04 },
+{ "linux/fpga-dfl.h", "DFL_FPGA_FME_ERR_SET_IRQ", _IOC_WRITE, 0xb684, 0x08 },
+{ "linux/fpga-dfl.h", "DFL_FPGA_FME_PORT_ASSIGN", _IOC_WRITE, 0xb682, 0x04 },
 { "linux/fpga-dfl.h", "DFL_FPGA_FME_PORT_PR", _IOC_NONE, 0xb680, 0x00 },
+{ "linux/fpga-dfl.h", "DFL_FPGA_FME_PORT_RELEASE", _IOC_WRITE, 0xb681, 0x04 },
 { "linux/fpga-dfl.h", "DFL_FPGA_GET_API_VERSION", _IOC_NONE, 0xb600, 0x00 },
 { "linux/fpga-dfl.h", "DFL_FPGA_PORT_DMA_MAP", _IOC_NONE, 0xb643, 0x00 },
 { "linux/fpga-dfl.h", "DFL_FPGA_PORT_DMA_UNMAP", _IOC_NONE, 0xb644, 0x00 },
+{ "linux/fpga-dfl.h", "DFL_FPGA_PORT_ERR_GET_IRQ_NUM", _IOC_READ, 0xb645, 0x04 },
+{ "linux/fpga-dfl.h", "DFL_FPGA_PORT_ERR_SET_IRQ", _IOC_WRITE, 0xb646, 0x08 },
 { "linux/fpga-dfl.h", "DFL_FPGA_PORT_GET_INFO", _IOC_NONE, 0xb641, 0x00 },
 { "linux/fpga-dfl.h", "DFL_FPGA_PORT_GET_REGION_INFO", _IOC_NONE, 0xb642, 0x00 },
 { "linux/fpga-dfl.h", "DFL_FPGA_PORT_RESET", _IOC_NONE, 0xb640, 0x00 },
+{ "linux/fpga-dfl.h", "DFL_FPGA_PORT_UINT_GET_IRQ_NUM", _IOC_READ, 0xb647, 0x04 },
+{ "linux/fpga-dfl.h", "DFL_FPGA_PORT_UINT_SET_IRQ", _IOC_WRITE, 0xb648, 0x08 },
 { "linux/fs.h", "BLKALIGNOFF", _IOC_NONE, 0x127a, 0x00 },
 { "linux/fs.h", "BLKBSZGET", _IOC_READ, 0x1270, 0x08 },
 { "linux/fs.h", "BLKBSZSET", _IOC_WRITE, 0x1271, 0x08 },
 { "linux/fs.h", "FS_IOC_GETFLAGS", _IOC_READ, 0x6601, 0x08 },
 { "linux/fs.h", "FS_IOC_GETFSLABEL", _IOC_READ, 0x9431, 0x100 },
 { "linux/fs.h", "FS_IOC_GETVERSION", _IOC_READ, 0x7601, 0x08 },
-{ "linux/fs.h", "FS_IOC_GET_ENCRYPTION_POLICY", _IOC_WRITE, 0x6615, 0x0c },
-{ "linux/fs.h", "FS_IOC_GET_ENCRYPTION_PWSALT", _IOC_WRITE, 0x6614, 0x10 },
 { "linux/fs.h", "FS_IOC_SETFLAGS", _IOC_WRITE, 0x6602, 0x08 },
 { "linux/fs.h", "FS_IOC_SETFSLABEL", _IOC_WRITE, 0x9432, 0x100 },
 { "linux/fs.h", "FS_IOC_SETVERSION", _IOC_WRITE, 0x7602, 0x08 },
-{ "linux/fs.h", "FS_IOC_SET_ENCRYPTION_POLICY", _IOC_READ, 0x6613, 0x0c },
+{ "linux/fscrypt.h", "FS_IOC_ADD_ENCRYPTION_KEY", _IOC_READ|_IOC_WRITE, 0x6617, 0x50 },
+{ "linux/fscrypt.h", "FS_IOC_GET_ENCRYPTION_KEY_STATUS", _IOC_READ|_IOC_WRITE, 0x661a, 0x80 },
+{ "linux/fscrypt.h", "FS_IOC_GET_ENCRYPTION_NONCE", _IOC_READ, 0x661b, 0x10 },
+{ "linux/fscrypt.h", "FS_IOC_GET_ENCRYPTION_POLICY", _IOC_WRITE, 0x6615, 0x0c },
+{ "linux/fscrypt.h", "FS_IOC_GET_ENCRYPTION_POLICY_EX", _IOC_READ|_IOC_WRITE, 0x6616, 0x09 },
+{ "linux/fscrypt.h", "FS_IOC_GET_ENCRYPTION_PWSALT", _IOC_WRITE, 0x6614, 0x10 },
+{ "linux/fscrypt.h", "FS_IOC_REMOVE_ENCRYPTION_KEY", _IOC_READ|_IOC_WRITE, 0x6618, 0x40 },
+{ "linux/fscrypt.h", "FS_IOC_REMOVE_ENCRYPTION_KEY_ALL_USERS", _IOC_READ|_IOC_WRITE, 0x6619, 0x40 },
+{ "linux/fscrypt.h", "FS_IOC_SET_ENCRYPTION_POLICY", _IOC_READ, 0x6613, 0x0c },
 { "linux/fsi.h", "FSI_SCOM_CHECK", _IOC_READ, 0x7300, 0x04 },
 { "linux/fsi.h", "FSI_SCOM_READ", _IOC_READ|_IOC_WRITE, 0x7301, 0x20 },
 { "linux/fsi.h", "FSI_SCOM_RESET", _IOC_WRITE, 0x7303, 0x04 },
 { "linux/fsl_hypervisor.h", "FSL_HV_IOCTL_PARTITION_STOP", _IOC_READ|_IOC_WRITE, 0xaf04, 0x08 },
 { "linux/fsl_hypervisor.h", "FSL_HV_IOCTL_SETPROP", _IOC_READ|_IOC_WRITE, 0xaf08, 0x28 },
 { "linux/fsmap.h", "FS_IOC_GETFSMAP", _IOC_READ|_IOC_WRITE, 0x583b, 0xc0 },
+{ "linux/fsverity.h", "FS_IOC_ENABLE_VERITY", _IOC_WRITE, 0x6685, 0x80 },
+{ "linux/fsverity.h", "FS_IOC_MEASURE_VERITY", _IOC_READ|_IOC_WRITE, 0x6686, 0x04 },
 { "linux/fuse.h", "FUSE_DEV_IOC_CLONE", _IOC_READ, 0xe500, 0x04 },
 { "linux/genwqe/genwqe_card.h", "GENWQE_EXECUTE_DDCB", _IOC_READ|_IOC_WRITE, 0xa532, 0xe8 },
 { "linux/genwqe/genwqe_card.h", "GENWQE_EXECUTE_RAW_DDCB", _IOC_READ|_IOC_WRITE, 0xa533, 0xe8 },
 { "linux/genwqe/genwqe_card.h", "GENWQE_WRITE_REG16", _IOC_WRITE, 0xa523, 0x10 },
 { "linux/genwqe/genwqe_card.h", "GENWQE_WRITE_REG32", _IOC_WRITE, 0xa521, 0x10 },
 { "linux/genwqe/genwqe_card.h", "GENWQE_WRITE_REG64", _IOC_WRITE, 0xa51f, 0x10 },
-{ "linux/gigaset_dev.h", "GIGASET_BRKCHARS", _IOC_WRITE, 0x4702, 0x06 },
-{ "linux/gigaset_dev.h", "GIGASET_CONFIG", _IOC_READ|_IOC_WRITE, 0x4701, 0x04 },
-{ "linux/gigaset_dev.h", "GIGASET_REDIR", _IOC_READ|_IOC_WRITE, 0x4700, 0x04 },
-{ "linux/gigaset_dev.h", "GIGASET_VERSION", _IOC_READ|_IOC_WRITE, 0x4703, 0x10 },
 { "linux/gpio.h", "GPIOHANDLE_GET_LINE_VALUES_IOCTL", _IOC_READ|_IOC_WRITE, 0xb408, 0x40 },
+{ "linux/gpio.h", "GPIOHANDLE_SET_CONFIG_IOCTL", _IOC_READ|_IOC_WRITE, 0xb40a, 0x54 },
 { "linux/gpio.h", "GPIOHANDLE_SET_LINE_VALUES_IOCTL", _IOC_READ|_IOC_WRITE, 0xb409, 0x40 },
 { "linux/gpio.h", "GPIO_GET_CHIPINFO_IOCTL", _IOC_READ, 0xb401, 0x44 },
 { "linux/gpio.h", "GPIO_GET_LINEEVENT_IOCTL", _IOC_READ|_IOC_WRITE, 0xb404, 0x30 },
 { "linux/gpio.h", "GPIO_GET_LINEHANDLE_IOCTL", _IOC_READ|_IOC_WRITE, 0xb403, 0x16c },
 { "linux/gpio.h", "GPIO_GET_LINEINFO_IOCTL", _IOC_READ|_IOC_WRITE, 0xb402, 0x48 },
+{ "linux/gpio.h", "GPIO_GET_LINEINFO_UNWATCH_IOCTL", _IOC_READ|_IOC_WRITE, 0xb40c, 0x04 },
+{ "linux/gpio.h", "GPIO_GET_LINEINFO_WATCH_IOCTL", _IOC_READ|_IOC_WRITE, 0xb40b, 0x48 },
 { "linux/gsmmux.h", "GSMIOC_DISABLE_NET", _IOC_NONE, 0x4703, 0x00 },
 { "linux/gsmmux.h", "GSMIOC_ENABLE_NET", _IOC_WRITE, 0x4702, 0x34 },
 { "linux/gsmmux.h", "GSMIOC_GETCONF", _IOC_READ, 0x4700, 0x4c },
+{ "linux/gsmmux.h", "GSMIOC_GETFIRST", _IOC_READ, 0x4704, 0x04 },
 { "linux/gsmmux.h", "GSMIOC_SETCONF", _IOC_WRITE, 0x4701, 0x4c },
 { "linux/hdreg.h", "HDIO_DRIVE_CMD", 0, 0x031f, 0 },
 { "linux/hdreg.h", "HDIO_DRIVE_RESET", 0, 0x031c, 0 },
 { "linux/if_pppox.h", "PPPOEIOCSFWD", _IOC_WRITE, 0xb100, 0x08 },
 { "linux/if_tun.h", "TUNATTACHFILTER", _IOC_WRITE, 0x54d5, 0x10 },
 { "linux/if_tun.h", "TUNDETACHFILTER", _IOC_WRITE, 0x54d6, 0x10 },
+{ "linux/if_tun.h", "TUNGETDEVNETNS", _IOC_NONE, 0x54e3, 0x00 },
 { "linux/if_tun.h", "TUNGETFEATURES", _IOC_READ, 0x54cf, 0x04 },
 { "linux/if_tun.h", "TUNGETFILTER", _IOC_READ, 0x54db, 0x10 },
 { "linux/if_tun.h", "TUNGETIFF", _IOC_READ, 0x54d2, 0x04 },
 { "linux/ipmi_bmc.h", "IPMI_BMC_IOCTL_CLEAR_SMS_ATN", _IOC_NONE, 0xb101, 0x00 },
 { "linux/ipmi_bmc.h", "IPMI_BMC_IOCTL_FORCE_ABORT", _IOC_NONE, 0xb102, 0x00 },
 { "linux/ipmi_bmc.h", "IPMI_BMC_IOCTL_SET_SMS_ATN", _IOC_NONE, 0xb100, 0x00 },
-{ "linux/isdn.h", "IIOCDBGVAR", _IOC_NONE, 0x497f, 0x00 },
-{ "linux/isdn.h", "IIOCDRVCTL", _IOC_NONE, 0x4980, 0x00 },
-{ "linux/isdn.h", "IIOCGETCPS", _IOC_NONE, 0x4915, 0x00 },
-{ "linux/isdn.h", "IIOCGETDVR", _IOC_NONE, 0x4916, 0x00 },
-{ "linux/isdn.h", "IIOCGETMAP", _IOC_NONE, 0x4911, 0x00 },
-{ "linux/isdn.h", "IIOCGETPRF", _IOC_NONE, 0x490f, 0x00 },
-{ "linux/isdn.h", "IIOCGETSET", _IOC_NONE, 0x4908, 0x00 },
-{ "linux/isdn.h", "IIOCNETAIF", _IOC_NONE, 0x4901, 0x00 },
-{ "linux/isdn.h", "IIOCNETALN", _IOC_NONE, 0x4920, 0x00 },
-{ "linux/isdn.h", "IIOCNETANM", _IOC_NONE, 0x4905, 0x00 },
-{ "linux/isdn.h", "IIOCNETASL", _IOC_NONE, 0x4913, 0x00 },
-{ "linux/isdn.h", "IIOCNETDIF", _IOC_NONE, 0x4902, 0x00 },
-{ "linux/isdn.h", "IIOCNETDIL", _IOC_NONE, 0x4914, 0x00 },
-{ "linux/isdn.h", "IIOCNETDLN", _IOC_NONE, 0x4921, 0x00 },
-{ "linux/isdn.h", "IIOCNETDNM", _IOC_NONE, 0x4906, 0x00 },
-{ "linux/isdn.h", "IIOCNETDWRSET", _IOC_NONE, 0x4918, 0x00 },
-{ "linux/isdn.h", "IIOCNETGCF", _IOC_NONE, 0x4904, 0x00 },
-{ "linux/isdn.h", "IIOCNETGNM", _IOC_NONE, 0x4907, 0x00 },
-{ "linux/isdn.h", "IIOCNETGPN", _IOC_NONE, 0x4922, 0x00 },
-{ "linux/isdn.h", "IIOCNETHUP", _IOC_NONE, 0x490b, 0x00 },
-{ "linux/isdn.h", "IIOCNETLCR", _IOC_NONE, 0x4917, 0x00 },
-{ "linux/isdn.h", "IIOCNETSCF", _IOC_NONE, 0x4903, 0x00 },
-{ "linux/isdn.h", "IIOCSETBRJ", _IOC_NONE, 0x490d, 0x00 },
-{ "linux/isdn.h", "IIOCSETGST", _IOC_NONE, 0x490c, 0x00 },
-{ "linux/isdn.h", "IIOCSETMAP", _IOC_NONE, 0x4912, 0x00 },
-{ "linux/isdn.h", "IIOCSETPRF", _IOC_NONE, 0x4910, 0x00 },
-{ "linux/isdn.h", "IIOCSETSET", _IOC_NONE, 0x4909, 0x00 },
-{ "linux/isdn.h", "IIOCSETVER", _IOC_NONE, 0x490a, 0x00 },
-{ "linux/isdn.h", "IIOCSIGPRF", _IOC_NONE, 0x490e, 0x00 },
-{ "linux/isdn_ppp.h", "PPPIOCBUNDLE", _IOC_WRITE, 0x7481, 0x04 },
-{ "linux/isdn_ppp.h", "PPPIOCGCALLINFO", _IOC_READ|_IOC_WRITE, 0x7480, 0x88 },
-{ "linux/isdn_ppp.h", "PPPIOCGCOMPRESSORS", _IOC_READ, 0x7486, 0x40 },
-{ "linux/isdn_ppp.h", "PPPIOCGIFNAME", _IOC_READ, 0x7488, 0x10 },
-{ "linux/isdn_ppp.h", "PPPIOCGMPFLAGS", _IOC_READ, 0x7482, 0x04 },
-{ "linux/isdn_ppp.h", "PPPIOCSCOMPRESSOR", _IOC_WRITE, 0x7487, 0x04 },
-{ "linux/isdn_ppp.h", "PPPIOCSMPFLAGS", _IOC_WRITE, 0x7483, 0x04 },
-{ "linux/isdn_ppp.h", "PPPIOCSMPMRU", _IOC_WRITE, 0x7485, 0x04 },
-{ "linux/isdn_ppp.h", "PPPIOCSMPMTU", _IOC_WRITE, 0x7484, 0x04 },
+{ "linux/isst_if.h", "ISST_IF_GET_PHY_ID", _IOC_READ|_IOC_WRITE, 0xfe01, 0x08 },
+{ "linux/isst_if.h", "ISST_IF_GET_PLATFORM_INFO", _IOC_READ, 0xfe00, 0x08 },
+{ "linux/isst_if.h", "ISST_IF_IO_CMD", _IOC_WRITE, 0xfe02, 0x08 },
+{ "linux/isst_if.h", "ISST_IF_MBOX_COMMAND", _IOC_READ|_IOC_WRITE, 0xfe03, 0x08 },
+{ "linux/isst_if.h", "ISST_IF_MSR_COMMAND", _IOC_READ|_IOC_WRITE, 0xfe04, 0x08 },
 { "linux/ivtv.h", "IVTV_IOC_DMA_FRAME", _IOC_WRITE, 0x56c0, 0x40 },
 { "linux/ivtv.h", "IVTV_IOC_PASSTHROUGH_MODE", _IOC_WRITE, 0x56c1, 0x04 },
 { "linux/ivtvfb.h", "IVTVFB_IOC_DMA_FRAME", _IOC_WRITE, 0x56c0, 0x18 },
 { "linux/kcov.h", "KCOV_DISABLE", _IOC_NONE, 0x6365, 0x00 },
 { "linux/kcov.h", "KCOV_ENABLE", _IOC_NONE, 0x6364, 0x00 },
 { "linux/kcov.h", "KCOV_INIT_TRACE", _IOC_READ, 0x6301, 0x08 },
+{ "linux/kcov.h", "KCOV_REMOTE_ENABLE", _IOC_WRITE, 0x6366, 0x18 },
 { "linux/kd.h", "GIO_CMAP", 0, 0x4B70, 0 },
 { "linux/kd.h", "GIO_FONT", 0, 0x4B60, 0 },
 { "linux/kd.h", "GIO_FONTX", 0, 0x4B6B, 0 },
 { "linux/kd.h", "PIO_UNISCRNMAP", 0, 0x4B6A, 0 },
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_ACQUIRE_VM", _IOC_WRITE, 0x4b15, 0x08 },
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_ALLOC_MEMORY_OF_GPU", _IOC_READ|_IOC_WRITE, 0x4b16, 0x28 },
+{ "linux/kfd_ioctl.h", "AMDKFD_IOC_ALLOC_QUEUE_GWS", _IOC_READ|_IOC_WRITE, 0x4b1e, 0x10 },
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_CREATE_EVENT", _IOC_READ|_IOC_WRITE, 0x4b08, 0x20 },
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_CREATE_QUEUE", _IOC_READ|_IOC_WRITE, 0x4b02, 0x58 },
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_DBG_ADDRESS_WATCH", _IOC_WRITE, 0x4b0f, 0x10 },
 { "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_SET_TRAP_HANDLER", _IOC_WRITE, 0x4b13, 0x18 },
+{ "linux/kfd_ioctl.h", "AMDKFD_IOC_SMI_EVENTS", _IOC_READ|_IOC_WRITE, 0x4b1f, 0x08 },
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_UNMAP_MEMORY_FROM_GPU", _IOC_READ|_IOC_WRITE, 0x4b19, 0x18 },
 { "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/lirc.h", "LIRC_SET_WIDEBAND_RECEIVER", _IOC_WRITE, 0x6923, 0x04 },
 { "linux/loop.h", "LOOP_CHANGE_FD", 0, 0x4C06, 0 },
 { "linux/loop.h", "LOOP_CLR_FD", 0, 0x4C01, 0 },
+{ "linux/loop.h", "LOOP_CONFIGURE", 0, 0x4C0A, 0 },
 { "linux/loop.h", "LOOP_CTL_ADD", 0, 0x4C80, 0 },
 { "linux/loop.h", "LOOP_CTL_GET_FREE", 0, 0x4C82, 0 },
 { "linux/loop.h", "LOOP_CTL_REMOVE", 0, 0x4C81, 0 },
 { "linux/nsfs.h", "NS_GET_OWNER_UID", _IOC_NONE, 0xb704, 0x00 },
 { "linux/nsfs.h", "NS_GET_PARENT", _IOC_NONE, 0xb702, 0x00 },
 { "linux/nsfs.h", "NS_GET_USERNS", _IOC_NONE, 0xb701, 0x00 },
+{ "linux/nvme_ioctl.h", "NVME_IOCTL_ADMIN64_CMD", _IOC_READ|_IOC_WRITE, 0x4e47, 0x50 },
 { "linux/nvme_ioctl.h", "NVME_IOCTL_ADMIN_CMD", _IOC_READ|_IOC_WRITE, 0x4e41, 0x48 },
 { "linux/nvme_ioctl.h", "NVME_IOCTL_ID", _IOC_NONE, 0x4e40, 0x00 },
+{ "linux/nvme_ioctl.h", "NVME_IOCTL_IO64_CMD", _IOC_READ|_IOC_WRITE, 0x4e48, 0x50 },
 { "linux/nvme_ioctl.h", "NVME_IOCTL_IO_CMD", _IOC_READ|_IOC_WRITE, 0x4e43, 0x48 },
 { "linux/nvme_ioctl.h", "NVME_IOCTL_RESCAN", _IOC_NONE, 0x4e46, 0x00 },
 { "linux/nvme_ioctl.h", "NVME_IOCTL_RESET", _IOC_NONE, 0x4e44, 0x00 },
 { "linux/omapfb.h", "OMAPFB_WAITFORGO", _IOC_NONE, 0x4f3c, 0x00 },
 { "linux/omapfb.h", "OMAPFB_WAITFORVSYNC", _IOC_NONE, 0x4f39, 0x00 },
 { "linux/pcitest.h", "PCITEST_BAR", _IOC_NONE, 0x5001, 0x00 },
+{ "linux/pcitest.h", "PCITEST_CLEAR_IRQ", _IOC_NONE, 0x5010, 0x00 },
 { "linux/pcitest.h", "PCITEST_COPY", _IOC_WRITE, 0x5006, 0x08 },
 { "linux/pcitest.h", "PCITEST_GET_IRQTYPE", _IOC_NONE, 0x5009, 0x00 },
 { "linux/pcitest.h", "PCITEST_LEGACY_IRQ", _IOC_NONE, 0x5002, 0x00 },
 { "linux/phantom.h", "PHN_SET_REG", _IOC_WRITE, 0x7001, 0x08 },
 { "linux/phantom.h", "PHN_SET_REGS", _IOC_WRITE, 0x7003, 0x08 },
 { "linux/pktcdvd.h", "PACKET_CTRL_CMD", _IOC_READ|_IOC_WRITE, 0x5801, 0x18 },
+{ "linux/platform_data/cros_ec_chardev.h", "CROS_EC_DEV_IOCEVENTMASK", _IOC_NONE, 0xec02, 0x00 },
+{ "linux/platform_data/cros_ec_chardev.h", "CROS_EC_DEV_IOCRDMEM", _IOC_READ|_IOC_WRITE, 0xec01, 0x108 },
+{ "linux/platform_data/cros_ec_chardev.h", "CROS_EC_DEV_IOCXCMD", _IOC_READ|_IOC_WRITE, 0xec00, 0x14 },
 { "linux/platform_data/media/si4713.h", "SI4713_IOC_MEASURE_RNL", _IOC_READ|_IOC_WRITE, 0x56c0, 0x1c },
 { "linux/pmu.h", "PMU_IOC_CAN_SLEEP", _IOC_READ, 0x4205, 0x08 },
 { "linux/pmu.h", "PMU_IOC_GET_BACKLIGHT", _IOC_READ, 0x4201, 0x08 },
 { "linux/ppp-ioctl.h", "PPPIOCGDEBUG", _IOC_READ, 0x7441, 0x04 },
 { "linux/ppp-ioctl.h", "PPPIOCGFLAGS", _IOC_READ, 0x745a, 0x04 },
 { "linux/ppp-ioctl.h", "PPPIOCGIDLE", _IOC_READ, 0x743f, 0x10 },
+{ "linux/ppp-ioctl.h", "PPPIOCGIDLE32", _IOC_READ, 0x743f, 0x08 },
+{ "linux/ppp-ioctl.h", "PPPIOCGIDLE64", _IOC_READ, 0x743f, 0x10 },
 { "linux/ppp-ioctl.h", "PPPIOCGL2TPSTATS", _IOC_READ, 0x7436, 0x48 },
 { "linux/ppp-ioctl.h", "PPPIOCGMRU", _IOC_READ, 0x7453, 0x04 },
 { "linux/ppp-ioctl.h", "PPPIOCGNPMODE", _IOC_READ|_IOC_WRITE, 0x744c, 0x08 },
 { "linux/pr.h", "IOC_PR_RESERVE", _IOC_WRITE, 0x70c9, 0x10 },
 { "linux/psp-sev.h", "SEV_ISSUE_CMD", _IOC_READ|_IOC_WRITE, 0x5300, 0x10 },
 { "linux/ptp_clock.h", "PTP_CLOCK_GETCAPS", _IOC_READ, 0x3d01, 0x50 },
+{ "linux/ptp_clock.h", "PTP_CLOCK_GETCAPS2", _IOC_READ, 0x3d0a, 0x50 },
 { "linux/ptp_clock.h", "PTP_ENABLE_PPS", _IOC_WRITE, 0x3d04, 0x04 },
+{ "linux/ptp_clock.h", "PTP_ENABLE_PPS2", _IOC_WRITE, 0x3d0d, 0x04 },
 { "linux/ptp_clock.h", "PTP_EXTTS_REQUEST", _IOC_WRITE, 0x3d02, 0x10 },
+{ "linux/ptp_clock.h", "PTP_EXTTS_REQUEST2", _IOC_WRITE, 0x3d0b, 0x10 },
 { "linux/ptp_clock.h", "PTP_PEROUT_REQUEST", _IOC_WRITE, 0x3d03, 0x38 },
+{ "linux/ptp_clock.h", "PTP_PEROUT_REQUEST2", _IOC_WRITE, 0x3d0c, 0x38 },
 { "linux/ptp_clock.h", "PTP_PIN_GETFUNC", _IOC_READ|_IOC_WRITE, 0x3d06, 0x60 },
+{ "linux/ptp_clock.h", "PTP_PIN_GETFUNC2", _IOC_READ|_IOC_WRITE, 0x3d0f, 0x60 },
 { "linux/ptp_clock.h", "PTP_PIN_SETFUNC", _IOC_WRITE, 0x3d07, 0x60 },
+{ "linux/ptp_clock.h", "PTP_PIN_SETFUNC2", _IOC_WRITE, 0x3d10, 0x60 },
 { "linux/ptp_clock.h", "PTP_SYS_OFFSET", _IOC_WRITE, 0x3d05, 0x340 },
+{ "linux/ptp_clock.h", "PTP_SYS_OFFSET2", _IOC_WRITE, 0x3d0e, 0x340 },
 { "linux/ptp_clock.h", "PTP_SYS_OFFSET_EXTENDED", _IOC_READ|_IOC_WRITE, 0x3d09, 0x4c0 },
+{ "linux/ptp_clock.h", "PTP_SYS_OFFSET_EXTENDED2", _IOC_READ|_IOC_WRITE, 0x3d12, 0x4c0 },
 { "linux/ptp_clock.h", "PTP_SYS_OFFSET_PRECISE", _IOC_READ|_IOC_WRITE, 0x3d08, 0x40 },
+{ "linux/ptp_clock.h", "PTP_SYS_OFFSET_PRECISE2", _IOC_READ|_IOC_WRITE, 0x3d11, 0x40 },
 { "linux/radeonfb.h", "FBIO_RADEON_GET_MIRROR", _IOC_READ, 0x4003, 0x08 },
 { "linux/radeonfb.h", "FBIO_RADEON_SET_MIRROR", _IOC_WRITE, 0x4004, 0x08 },
 { "linux/raid/md_u.h", "ADD_NEW_DISK", _IOC_WRITE, 0x0921, 0x14 },
 { "linux/raw.h", "RAW_GETBIND", _IOC_NONE, 0xac01, 0x00 },
 { "linux/raw.h", "RAW_SETBIND", _IOC_NONE, 0xac00, 0x00 },
 { "linux/reiserfs_fs.h", "REISERFS_IOC_UNPACK", _IOC_WRITE, 0xcd01, 0x08 },
+{ "linux/remoteproc_cdev.h", "RPROC_GET_SHUTDOWN_ON_RELEASE", _IOC_READ, 0xb702, 0x04 },
+{ "linux/remoteproc_cdev.h", "RPROC_SET_SHUTDOWN_ON_RELEASE", _IOC_WRITE, 0xb701, 0x04 },
 { "linux/rfkill.h", "RFKILL_IOCTL_NOINPUT", _IOC_NONE, 0x5201, 0x00 },
 { "linux/rio_cm_cdev.h", "RIO_CM_CHAN_ACCEPT", _IOC_READ|_IOC_WRITE, 0x6307, 0x08 },
 { "linux/rio_cm_cdev.h", "RIO_CM_CHAN_BIND", _IOC_WRITE, 0x6305, 0x08 },
 { "linux/scif_ioctl.h", "SCIF_VREADFROM", _IOC_READ|_IOC_WRITE, 0x730c, 0x28 },
 { "linux/scif_ioctl.h", "SCIF_VWRITETO", _IOC_READ|_IOC_WRITE, 0x730d, 0x28 },
 { "linux/scif_ioctl.h", "SCIF_WRITETO", _IOC_READ|_IOC_WRITE, 0x730b, 0x28 },
-{ "linux/seccomp.h", "SECCOMP_IOCTL_NOTIF_ID_VALID", _IOC_READ, 0x2102, 0x08 },
+{ "linux/seccomp.h", "SECCOMP_IOCTL_NOTIF_ADDFD", _IOC_WRITE, 0x2103, 0x18 },
+{ "linux/seccomp.h", "SECCOMP_IOCTL_NOTIF_ID_VALID", _IOC_WRITE, 0x2102, 0x08 },
 { "linux/seccomp.h", "SECCOMP_IOCTL_NOTIF_RECV", _IOC_READ|_IOC_WRITE, 0x2100, 0x50 },
 { "linux/seccomp.h", "SECCOMP_IOCTL_NOTIF_SEND", _IOC_READ|_IOC_WRITE, 0x2101, 0x18 },
 { "linux/sed-opal.h", "IOC_OPAL_ACTIVATE_LSP", _IOC_WRITE, 0x70df, 0x118 },
 { "linux/sed-opal.h", "IOC_OPAL_ADD_USR_TO_LR", _IOC_WRITE, 0x70e4, 0x118 },
 { "linux/sed-opal.h", "IOC_OPAL_ENABLE_DISABLE_MBR", _IOC_WRITE, 0x70e5, 0x110 },
 { "linux/sed-opal.h", "IOC_OPAL_ERASE_LR", _IOC_WRITE, 0x70e6, 0x110 },
+{ "linux/sed-opal.h", "IOC_OPAL_GENERIC_TABLE_RW", _IOC_WRITE, 0x70eb, 0x138 },
 { "linux/sed-opal.h", "IOC_OPAL_LOCK_UNLOCK", _IOC_WRITE, 0x70dd, 0x118 },
 { "linux/sed-opal.h", "IOC_OPAL_LR_SETUP", _IOC_WRITE, 0x70e3, 0x128 },
+{ "linux/sed-opal.h", "IOC_OPAL_MBR_DONE", _IOC_WRITE, 0x70e9, 0x110 },
+{ "linux/sed-opal.h", "IOC_OPAL_PSID_REVERT_TPR", _IOC_WRITE, 0x70e8, 0x108 },
 { "linux/sed-opal.h", "IOC_OPAL_REVERT_TPR", _IOC_WRITE, 0x70e2, 0x108 },
 { "linux/sed-opal.h", "IOC_OPAL_SAVE", _IOC_WRITE, 0x70dc, 0x118 },
 { "linux/sed-opal.h", "IOC_OPAL_SECURE_ERASE_LR", _IOC_WRITE, 0x70e7, 0x110 },
 { "linux/sed-opal.h", "IOC_OPAL_SET_PW", _IOC_WRITE, 0x70e0, 0x220 },
 { "linux/sed-opal.h", "IOC_OPAL_TAKE_OWNERSHIP", _IOC_WRITE, 0x70de, 0x108 },
+{ "linux/sed-opal.h", "IOC_OPAL_WRITE_SHADOW_MBR", _IOC_WRITE, 0x70ea, 0x120 },
 { "linux/serio.h", "SPIOCSTYPE", _IOC_WRITE, 0x7101, 0x08 },
 { "linux/sockios.h", "SIOCADDDLCI", 0, 0x8980, 0 },
 { "linux/sockios.h", "SIOCADDMULTI", 0, 0x8931, 0 },
 { "linux/sockios.h", "SIOCGMIIREG", 0, 0x8948, 0 },
 { "linux/sockios.h", "SIOCGRARP", 0, 0x8961, 0 },
 { "linux/sockios.h", "SIOCGSKNS", 0, 0x894C, 0 },
+{ "linux/sockios.h", "SIOCGSTAMPNS_NEW", _IOC_READ, 0x8907, 0x10 },
+{ "linux/sockios.h", "SIOCGSTAMP_NEW", _IOC_READ, 0x8906, 0x10 },
 { "linux/sockios.h", "SIOCOUTQNSD", 0, 0x894B, 0 },
 { "linux/sockios.h", "SIOCPROTOPRIVATE", 0, 0x89E0, 0 },
 { "linux/sockios.h", "SIOCRTMSG", 0, 0x890D, 0 },
 { "linux/suspend_ioctls.h", "SNAPSHOT_SET_SWAP_AREA", _IOC_WRITE, 0x330d, 0x0c },
 { "linux/suspend_ioctls.h", "SNAPSHOT_UNFREEZE", _IOC_NONE, 0x3302, 0x00 },
 { "linux/switchtec_ioctl.h", "SWITCHTEC_IOCTL_EVENT_CTL", _IOC_READ|_IOC_WRITE, 0x5743, 0x28 },
-{ "linux/switchtec_ioctl.h", "SWITCHTEC_IOCTL_EVENT_SUMMARY", _IOC_READ, 0x5742, 0x198 },
+{ "linux/switchtec_ioctl.h", "SWITCHTEC_IOCTL_EVENT_SUMMARY", _IOC_READ, 0x5742, 0x4d8 },
+{ "linux/switchtec_ioctl.h", "SWITCHTEC_IOCTL_EVENT_SUMMARY_LEGACY", _IOC_READ, 0x5742, 0x198 },
 { "linux/switchtec_ioctl.h", "SWITCHTEC_IOCTL_FLASH_INFO", _IOC_READ, 0x5740, 0x10 },
 { "linux/switchtec_ioctl.h", "SWITCHTEC_IOCTL_FLASH_PART_INFO", _IOC_READ|_IOC_WRITE, 0x5741, 0x10 },
 { "linux/switchtec_ioctl.h", "SWITCHTEC_IOCTL_PFF_TO_PORT", _IOC_READ|_IOC_WRITE, 0x5744, 0x0c },
 { "linux/usb/iowarrior.h", "IOW_GETINFO", _IOC_READ, 0xc003, 0x28 },
 { "linux/usb/iowarrior.h", "IOW_READ", _IOC_WRITE, 0xc002, 0x08 },
 { "linux/usb/iowarrior.h", "IOW_WRITE", _IOC_WRITE, 0xc001, 0x08 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_CONFIGURE", _IOC_NONE, 0x5509, 0x00 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP0_READ", _IOC_READ|_IOC_WRITE, 0x5504, 0x08 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP0_STALL", _IOC_NONE, 0x550c, 0x00 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP0_WRITE", _IOC_WRITE, 0x5503, 0x08 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EPS_INFO", _IOC_READ, 0x550b, 0x3c0 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP_CLEAR_HALT", _IOC_WRITE, 0x550e, 0x04 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP_DISABLE", _IOC_WRITE, 0x5506, 0x04 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP_ENABLE", _IOC_WRITE, 0x5505, 0x09 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP_READ", _IOC_READ|_IOC_WRITE, 0x5508, 0x08 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP_SET_HALT", _IOC_WRITE, 0x550d, 0x04 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP_SET_WEDGE", _IOC_WRITE, 0x550f, 0x04 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP_WRITE", _IOC_WRITE, 0x5507, 0x08 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EVENT_FETCH", _IOC_READ, 0x5502, 0x08 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_INIT", _IOC_WRITE, 0x5500, 0x101 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_RUN", _IOC_NONE, 0x5501, 0x00 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_VBUS_DRAW", _IOC_WRITE, 0x550a, 0x04 },
 { "linux/usb/tmc.h", "USBTMC488_IOCTL_GET_CAPS", _IOC_READ, 0x5b11, 0x01 },
 { "linux/usb/tmc.h", "USBTMC488_IOCTL_GOTO_LOCAL", _IOC_NONE, 0x5b14, 0x00 },
 { "linux/usb/tmc.h", "USBTMC488_IOCTL_LOCAL_LOCKOUT", _IOC_NONE, 0x5b15, 0x00 },
 { "linux/usb/tmc.h", "USBTMC_IOCTL_WRITE", _IOC_READ|_IOC_WRITE, 0x5b0d, 0x14 },
 { "linux/usb/tmc.h", "USBTMC_IOCTL_WRITE_RESULT", _IOC_READ|_IOC_WRITE, 0x5b0f, 0x04 },
 { "linux/usbdevice_fs.h", "USBDEVFS_ALLOC_STREAMS", _IOC_READ, 0x551c, 0x08 },
+{ "linux/usbdevice_fs.h", "USBDEVFS_ALLOW_SUSPEND", _IOC_NONE, 0x5522, 0x00 },
 { "linux/usbdevice_fs.h", "USBDEVFS_BULK", _IOC_READ|_IOC_WRITE, 0x5502, 0x18 },
 { "linux/usbdevice_fs.h", "USBDEVFS_BULK32", _IOC_READ|_IOC_WRITE, 0x5502, 0x10 },
 { "linux/usbdevice_fs.h", "USBDEVFS_CLAIMINTERFACE", _IOC_READ, 0x550f, 0x04 },
 { "linux/usbdevice_fs.h", "USBDEVFS_DISCSIGNAL", _IOC_READ, 0x550e, 0x10 },
 { "linux/usbdevice_fs.h", "USBDEVFS_DISCSIGNAL32", _IOC_READ, 0x550e, 0x08 },
 { "linux/usbdevice_fs.h", "USBDEVFS_DROP_PRIVILEGES", _IOC_WRITE, 0x551e, 0x04 },
+{ "linux/usbdevice_fs.h", "USBDEVFS_FORBID_SUSPEND", _IOC_NONE, 0x5521, 0x00 },
 { "linux/usbdevice_fs.h", "USBDEVFS_FREE_STREAMS", _IOC_READ, 0x551d, 0x08 },
 { "linux/usbdevice_fs.h", "USBDEVFS_GETDRIVER", _IOC_WRITE, 0x5508, 0x104 },
 { "linux/usbdevice_fs.h", "USBDEVFS_GET_CAPABILITIES", _IOC_READ, 0x551a, 0x04 },
 { "linux/usbdevice_fs.h", "USBDEVFS_SETINTERFACE", _IOC_READ, 0x5504, 0x08 },
 { "linux/usbdevice_fs.h", "USBDEVFS_SUBMITURB", _IOC_READ, 0x550a, 0x38 },
 { "linux/usbdevice_fs.h", "USBDEVFS_SUBMITURB32", _IOC_READ, 0x550a, 0x2a },
+{ "linux/usbdevice_fs.h", "USBDEVFS_WAIT_FOR_RESUME", _IOC_NONE, 0x5523, 0x00 },
 { "linux/userfaultfd.h", "UFFDIO_API", _IOC_READ|_IOC_WRITE, 0xaa3f, 0x18 },
 { "linux/userfaultfd.h", "UFFDIO_COPY", _IOC_READ|_IOC_WRITE, 0xaa03, 0x28 },
 { "linux/userfaultfd.h", "UFFDIO_REGISTER", _IOC_READ|_IOC_WRITE, 0xaa00, 0x20 },
 { "linux/userfaultfd.h", "UFFDIO_UNREGISTER", _IOC_READ, 0xaa01, 0x10 },
 { "linux/userfaultfd.h", "UFFDIO_WAKE", _IOC_READ, 0xaa02, 0x10 },
+{ "linux/userfaultfd.h", "UFFDIO_WRITEPROTECT", _IOC_READ|_IOC_WRITE, 0xaa06, 0x18 },
 { "linux/userfaultfd.h", "UFFDIO_ZEROPAGE", _IOC_READ|_IOC_WRITE, 0xaa04, 0x20 },
 { "linux/uvcvideo.h", "UVCIOC_CTRL_MAP", _IOC_READ|_IOC_WRITE, 0x7520, 0x60 },
 { "linux/uvcvideo.h", "UVCIOC_CTRL_QUERY", _IOC_READ|_IOC_WRITE, 0x7521, 0x10 },
 { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_G_FMT", _IOC_READ|_IOC_WRITE, 0x5604, 0x58 },
 { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_G_FRAME_INTERVAL", _IOC_READ|_IOC_WRITE, 0x5615, 0x30 },
 { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_G_SELECTION", _IOC_READ|_IOC_WRITE, 0x563d, 0x40 },
+{ "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_QUERYCAP", _IOC_READ, 0x5600, 0x40 },
 { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_CROP", _IOC_READ|_IOC_WRITE, 0x563c, 0x38 },
 { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_FMT", _IOC_READ|_IOC_WRITE, 0x5605, 0x58 },
 { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_FRAME_INTERVAL", _IOC_READ|_IOC_WRITE, 0x5616, 0x30 },
 { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_SELECTION", _IOC_READ|_IOC_WRITE, 0x563e, 0x40 },
+{ "linux/vboxguest.h", "VBG_IOCTL_ACQUIRE_GUEST_CAPABILITIES", _IOC_READ|_IOC_WRITE, 0x560d, 0x24 },
 { "linux/vboxguest.h", "VBG_IOCTL_CHANGE_FILTER_MASK", _IOC_READ|_IOC_WRITE, 0x560c, 0x20 },
 { "linux/vboxguest.h", "VBG_IOCTL_CHANGE_GUEST_CAPABILITIES", _IOC_READ|_IOC_WRITE, 0x560e, 0x20 },
 { "linux/vboxguest.h", "VBG_IOCTL_CHECK_BALLOON", _IOC_READ|_IOC_WRITE, 0x5611, 0x20 },
 { "linux/vboxguest.h", "VBG_IOCTL_HGCM_CONNECT", _IOC_READ|_IOC_WRITE, 0x5604, 0x9c },
 { "linux/vboxguest.h", "VBG_IOCTL_HGCM_DISCONNECT", _IOC_READ|_IOC_WRITE, 0x5605, 0x1c },
 { "linux/vboxguest.h", "VBG_IOCTL_INTERRUPT_ALL_WAIT_FOR_EVENTS", _IOC_READ|_IOC_WRITE, 0x560b, 0x18 },
-{ "linux/vboxguest.h", "VBG_IOCTL_VMMDEV_REQUEST_BIG", _IOC_READ|_IOC_WRITE, 0x5603, 0x00 },
+{ "linux/vboxguest.h", "VBG_IOCTL_VMMDEV_REQUEST_BIG", _IOC_NONE, 0x5603, 0x00 },
 { "linux/vboxguest.h", "VBG_IOCTL_WAIT_FOR_EVENTS", _IOC_READ|_IOC_WRITE, 0x560a, 0x20 },
 { "linux/vboxguest.h", "VBG_IOCTL_WRITE_CORE_DUMP", _IOC_READ|_IOC_WRITE, 0x5613, 0x1c },
 { "linux/vfio.h", "VFIO_CHECK_EXTENSION", _IOC_NONE, 0x3b65, 0x00 },
+{ "linux/vfio.h", "VFIO_DEVICE_FEATURE", _IOC_NONE, 0x3b75, 0x00 },
 { "linux/vfio.h", "VFIO_DEVICE_GET_GFX_DMABUF", _IOC_NONE, 0x3b73, 0x00 },
 { "linux/vfio.h", "VFIO_DEVICE_GET_INFO", _IOC_NONE, 0x3b6b, 0x00 },
 { "linux/vfio.h", "VFIO_DEVICE_GET_IRQ_INFO", _IOC_NONE, 0x3b6d, 0x00 },
 { "linux/vfio.h", "VFIO_GROUP_GET_STATUS", _IOC_NONE, 0x3b67, 0x00 },
 { "linux/vfio.h", "VFIO_GROUP_SET_CONTAINER", _IOC_NONE, 0x3b68, 0x00 },
 { "linux/vfio.h", "VFIO_GROUP_UNSET_CONTAINER", _IOC_NONE, 0x3b69, 0x00 },
+{ "linux/vfio.h", "VFIO_IOMMU_DIRTY_PAGES", _IOC_NONE, 0x3b75, 0x00 },
 { "linux/vfio.h", "VFIO_IOMMU_DISABLE", _IOC_NONE, 0x3b74, 0x00 },
 { "linux/vfio.h", "VFIO_IOMMU_ENABLE", _IOC_NONE, 0x3b73, 0x00 },
 { "linux/vfio.h", "VFIO_IOMMU_GET_INFO", _IOC_NONE, 0x3b70, 0x00 },
 { "linux/vhost.h", "VHOST_SET_VRING_ERR", _IOC_WRITE, 0xaf22, 0x08 },
 { "linux/vhost.h", "VHOST_SET_VRING_KICK", _IOC_WRITE, 0xaf20, 0x08 },
 { "linux/vhost.h", "VHOST_SET_VRING_NUM", _IOC_WRITE, 0xaf10, 0x08 },
+{ "linux/vhost.h", "VHOST_VDPA_GET_CONFIG", _IOC_READ, 0xaf73, 0x08 },
+{ "linux/vhost.h", "VHOST_VDPA_GET_DEVICE_ID", _IOC_READ, 0xaf70, 0x04 },
+{ "linux/vhost.h", "VHOST_VDPA_GET_STATUS", _IOC_READ, 0xaf71, 0x01 },
+{ "linux/vhost.h", "VHOST_VDPA_GET_VRING_NUM", _IOC_READ, 0xaf76, 0x02 },
+{ "linux/vhost.h", "VHOST_VDPA_SET_CONFIG", _IOC_WRITE, 0xaf74, 0x08 },
+{ "linux/vhost.h", "VHOST_VDPA_SET_CONFIG_CALL", _IOC_WRITE, 0xaf77, 0x04 },
+{ "linux/vhost.h", "VHOST_VDPA_SET_STATUS", _IOC_WRITE, 0xaf72, 0x01 },
+{ "linux/vhost.h", "VHOST_VDPA_SET_VRING_ENABLE", _IOC_WRITE, 0xaf75, 0x08 },
 { "linux/vhost.h", "VHOST_VSOCK_SET_GUEST_CID", _IOC_WRITE, 0xaf60, 0x08 },
 { "linux/vhost.h", "VHOST_VSOCK_SET_RUNNING", _IOC_WRITE, 0xaf61, 0x04 },
 { "linux/videodev2.h", "VIDIOC_CREATE_BUFS", _IOC_READ|_IOC_WRITE, 0x565c, 0x100 },
 { "linux/vt.h", "VT_WAITACTIVE", 0, 0x5607, 0 },
 { "linux/vt.h", "VT_WAITEVENT", 0, 0x560E, 0 },
 { "linux/vtpm_proxy.h", "VTPM_PROXY_IOC_NEW_DEV", _IOC_READ|_IOC_WRITE, 0xa100, 0x14 },
+{ "linux/watch_queue.h", "IOC_WATCH_QUEUE_SET_FILTER", _IOC_NONE, 0x5761, 0x00 },
+{ "linux/watch_queue.h", "IOC_WATCH_QUEUE_SET_SIZE", _IOC_NONE, 0x5760, 0x00 },
 { "linux/watchdog.h", "WDIOC_GETBOOTSTATUS", _IOC_READ, 0x5702, 0x04 },
 { "linux/watchdog.h", "WDIOC_GETPRETIMEOUT", _IOC_READ, 0x5709, 0x04 },
 { "linux/watchdog.h", "WDIOC_GETSTATUS", _IOC_READ, 0x5701, 0x04 },
 { "media/i2c/saa6588.h", "SAA6588_CMD_READ", _IOC_READ, 0x5203, 0x04 },
 { "media/v4l2-common.h", "TUNER_SET_CONFIG", _IOC_WRITE, 0x645c, 0x10 },
 { "media/v4l2-common.h", "VIDIOC_INT_RESET", _IOC_WRITE, 0x6466, 0x04 },
+{ "media/v4l2-ioctl.h", "VIDIOC_DQBUF_TIME32", _IOC_READ|_IOC_WRITE, 0x5611, 0x50 },
+{ "media/v4l2-ioctl.h", "VIDIOC_DQEVENT_TIME32", _IOC_READ, 0x5659, 0x80 },
+{ "media/v4l2-ioctl.h", "VIDIOC_PREPARE_BUF_TIME32", _IOC_READ|_IOC_WRITE, 0x565d, 0x50 },
+{ "media/v4l2-ioctl.h", "VIDIOC_QBUF_TIME32", _IOC_READ|_IOC_WRITE, 0x560f, 0x50 },
+{ "media/v4l2-ioctl.h", "VIDIOC_QUERYBUF_TIME32", _IOC_READ|_IOC_WRITE, 0x5609, 0x50 },
 { "media/v4l2-subdev.h", "V4L2_DEVICE_NOTIFY_EVENT", _IOC_WRITE, 0x7602, 0x88 },
 { "media/v4l2-subdev.h", "V4L2_SUBDEV_IR_RX_NOTIFY", _IOC_WRITE, 0x7600, 0x04 },
 { "media/v4l2-subdev.h", "V4L2_SUBDEV_IR_TX_NOTIFY", _IOC_WRITE, 0x7601, 0x04 },
 { "misc/fastrpc.h", "FASTRPC_IOCTL_INIT_ATTACH", _IOC_NONE, 0x5204, 0x00 },
 { "misc/fastrpc.h", "FASTRPC_IOCTL_INIT_CREATE", _IOC_READ|_IOC_WRITE, 0x5205, 0x18 },
 { "misc/fastrpc.h", "FASTRPC_IOCTL_INVOKE", _IOC_READ|_IOC_WRITE, 0x5203, 0x10 },
+{ "misc/fastrpc.h", "FASTRPC_IOCTL_MMAP", _IOC_READ|_IOC_WRITE, 0x5206, 0x20 },
+{ "misc/fastrpc.h", "FASTRPC_IOCTL_MUNMAP", _IOC_READ|_IOC_WRITE, 0x5207, 0x10 },
 { "misc/habanalabs.h", "HL_IOCTL_CB", _IOC_READ|_IOC_WRITE, 0x4802, 0x18 },
 { "misc/habanalabs.h", "HL_IOCTL_CS", _IOC_READ|_IOC_WRITE, 0x4803, 0x30 },
+{ "misc/habanalabs.h", "HL_IOCTL_DEBUG", _IOC_READ|_IOC_WRITE, 0x4806, 0x28 },
 { "misc/habanalabs.h", "HL_IOCTL_INFO", _IOC_READ|_IOC_WRITE, 0x4801, 0x18 },
 { "misc/habanalabs.h", "HL_IOCTL_MEMORY", _IOC_READ|_IOC_WRITE, 0x4805, 0x28 },
 { "misc/habanalabs.h", "HL_IOCTL_WAIT_CS", _IOC_READ|_IOC_WRITE, 0x4804, 0x18 },
 { "misc/ocxl.h", "OCXL_IOCTL_IRQ_ALLOC", _IOC_READ, 0xca11, 0x08 },
 { "misc/ocxl.h", "OCXL_IOCTL_IRQ_FREE", _IOC_WRITE, 0xca12, 0x08 },
 { "misc/ocxl.h", "OCXL_IOCTL_IRQ_SET_FD", _IOC_WRITE, 0xca13, 0x10 },
+{ "misc/uacce/hisi_qm.h", "UACCE_CMD_QM_SET_QP_CTX", _IOC_READ|_IOC_WRITE, 0x480a, 0x04 },
+{ "misc/uacce/uacce.h", "UACCE_CMD_PUT_Q", _IOC_NONE, 0x5701, 0x00 },
+{ "misc/uacce/uacce.h", "UACCE_CMD_START_Q", _IOC_NONE, 0x5700, 0x00 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_ADD_LDPC_CODE_PARAMS", _IOC_WRITE, 0x6605, 0x60 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_CLEAR_STATS", _IOC_NONE, 0x660b, 0x00 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_GET_CONFIG", _IOC_READ, 0x6606, 0x1c },
+{ "misc/xilinx_sdfec.h", "XSDFEC_GET_STATS", _IOC_READ, 0x660c, 0x0c },
+{ "misc/xilinx_sdfec.h", "XSDFEC_GET_STATUS", _IOC_READ, 0x6602, 0x08 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_GET_TURBO", _IOC_READ, 0x6607, 0x08 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_IS_ACTIVE", _IOC_READ, 0x660a, 0x01 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_SET_BYPASS", _IOC_WRITE, 0x6609, 0x01 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_SET_DEFAULT_CONFIG", _IOC_NONE, 0x660d, 0x00 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_SET_IRQ", _IOC_WRITE, 0x6603, 0x02 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_SET_ORDER", _IOC_WRITE, 0x6608, 0x08 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_SET_TURBO", _IOC_WRITE, 0x6604, 0x08 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_START_DEV", _IOC_NONE, 0x6600, 0x00 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_STOP_DEV", _IOC_NONE, 0x6601, 0x00 },
 { "mtd/mtd-abi.h", "ECCGETLAYOUT", _IOC_READ, 0x4d11, 0x148 },
 { "mtd/mtd-abi.h", "ECCGETSTATS", _IOC_READ, 0x4d12, 0x10 },
 { "mtd/mtd-abi.h", "MEMERASE", _IOC_WRITE, 0x4d02, 0x08 },
 { "sound/asound.h", "SNDRV_TIMER_IOCTL_START", _IOC_NONE, 0x54a0, 0x00 },
 { "sound/asound.h", "SNDRV_TIMER_IOCTL_STATUS", _IOC_READ, 0x5414, 0x60 },
 { "sound/asound.h", "SNDRV_TIMER_IOCTL_STOP", _IOC_NONE, 0x54a1, 0x00 },
-{ "sound/asound.h", "SNDRV_TIMER_IOCTL_TREAD", _IOC_WRITE, 0x5402, 0x04 },
+{ "sound/asound.h", "SNDRV_TIMER_IOCTL_TREAD64", _IOC_WRITE, 0x54a4, 0x04 },
+{ "sound/asound.h", "SNDRV_TIMER_IOCTL_TREAD_OLD", _IOC_WRITE, 0x5402, 0x04 },
 { "sound/asound_fm.h", "SNDRV_DM_FM_IOCTL_CLEAR_PATCHES", _IOC_NONE, 0x4840, 0x00 },
 { "sound/asound_fm.h", "SNDRV_DM_FM_IOCTL_INFO", _IOC_READ, 0x4820, 0x02 },
 { "sound/asound_fm.h", "SNDRV_DM_FM_IOCTL_PLAY_NOTE", _IOC_WRITE, 0x4822, 0x0c },
 { "sound/hdspm.h", "SNDRV_HDSPM_IOCTL_GET_PEAK_RMS", _IOC_READ, 0x4842, 0x908 },
 { "sound/hdspm.h", "SNDRV_HDSPM_IOCTL_GET_STATUS", _IOC_READ, 0x4847, 0x20 },
 { "sound/hdspm.h", "SNDRV_HDSPM_IOCTL_GET_VERSION", _IOC_READ, 0x4848, 0x24 },
+{ "sound/pcm.h", "SNDRV_PCM_IOCTL_STATUS32", _IOC_READ, 0x4120, 0x6c },
+{ "sound/pcm.h", "SNDRV_PCM_IOCTL_STATUS64", _IOC_READ, 0x4120, 0x98 },
+{ "sound/pcm.h", "SNDRV_PCM_IOCTL_STATUS_EXT32", _IOC_READ|_IOC_WRITE, 0x4124, 0x6c },
+{ "sound/pcm.h", "SNDRV_PCM_IOCTL_STATUS_EXT64", _IOC_READ|_IOC_WRITE, 0x4124, 0x98 },
 { "sound/sb16_csp.h", "SNDRV_SB_CSP_IOCTL_INFO", _IOC_READ, 0x4810, 0x28 },
 { "sound/sb16_csp.h", "SNDRV_SB_CSP_IOCTL_LOAD_CODE", _IOC_WRITE, 0x4811, 0x3012 },
 { "sound/sb16_csp.h", "SNDRV_SB_CSP_IOCTL_PAUSE", _IOC_NONE, 0x4815, 0x00 },
 { "staging/android/ashmem.h", "ASHMEM_UNPIN", _IOC_WRITE, 0x7708, 0x08 },
 { "staging/android/ion.h", "ION_IOC_ALLOC", _IOC_READ|_IOC_WRITE, 0x4900, 0x18 },
 { "staging/android/ion.h", "ION_IOC_HEAP_QUERY", _IOC_READ|_IOC_WRITE, 0x4908, 0x18 },
-{ "staging/android/vsoc_shm.h", "VSOC_COND_WAIT", _IOC_READ|_IOC_WRITE, 0xf507, 0x20 },
-{ "staging/android/vsoc_shm.h", "VSOC_COND_WAKE", _IOC_NONE, 0xf508, 0x00 },
-{ "staging/android/vsoc_shm.h", "VSOC_CREATE_FD_SCOPED_PERMISSION", _IOC_WRITE, 0xf500, 0x10 },
-{ "staging/android/vsoc_shm.h", "VSOC_DESCRIBE_REGION", _IOC_READ, 0xf504, 0x3c },
-{ "staging/android/vsoc_shm.h", "VSOC_GET_FD_SCOPED_PERMISSION", _IOC_READ, 0xf501, 0x10 },
-{ "staging/android/vsoc_shm.h", "VSOC_MAYBE_SEND_INTERRUPT_TO_HOST", _IOC_NONE, 0xf502, 0x00 },
-{ "staging/android/vsoc_shm.h", "VSOC_SELF_INTERRUPT", _IOC_NONE, 0xf505, 0x00 },
-{ "staging/android/vsoc_shm.h", "VSOC_SEND_INTERRUPT_TO_HOST", _IOC_NONE, 0xf506, 0x00 },
-{ "staging/android/vsoc_shm.h", "VSOC_WAIT_FOR_INCOMING_INTERRUPT", _IOC_NONE, 0xf503, 0x00 },
 { "video/da8xx-fb.h", "FBIGET_BRIGHTNESS", _IOC_READ, 0x4603, 0x04 },
 { "video/da8xx-fb.h", "FBIGET_COLOR", _IOC_READ, 0x4605, 0x04 },
 { "video/da8xx-fb.h", "FBIOGET_CONTRAST", _IOC_READ, 0x4601, 0x04 },
index 294da6901c638ee4ed58190945670b3d73d2d0de..120e4d7893a87fd7c0905f3f3fe603692f227c18 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2019 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
 [ 87] = { 2,   TD,             SEN(timerfd_gettime64),         "timerfd_gettime"       },
 [ 88] = { 4,   TD|TF,          SEN(utimensat_time64),          "utimensat"             },
 [ 89] = { 1,   TF,             SEN(acct),                      "acct"                  },
-[ 90] = { 2,   0,              SEN(capget),                    "capget"                },
-[ 91] = { 2,   0,              SEN(capset),                    "capset"                },
+[ 90] = { 2,   TC,             SEN(capget),                    "capget"                },
+[ 91] = { 2,   TC,             SEN(capset),                    "capset"                },
 [ 92] = { 1,   NF,             SEN(personality),               "personality"           },
 [ 93] = { 1,   TP|SE,          SEN(exit),                      "exit"                  },
 [ 94] = { 1,   TP|SE,          SEN(exit),                      "exit_group"            },
 [ 95] = { 5,   TP,             SEN(waitid),                    "waitid"                },
 [ 96] = { 1,   0,              SEN(set_tid_address),           "set_tid_address"       },
-[ 97] = { 1,   TP,             SEN(unshare),                   "unshare"               },
+[ 97] = { 1,   0,              SEN(unshare),                   "unshare"               },
 [ 98] = { 6,   0,              SEN(futex_time64),              "futex"                 },
 [ 99] = { 2,   0,              SEN(set_robust_list),           "set_robust_list"       },
 [100] = { 3,   0,              SEN(get_robust_list),           "get_robust_list"       },
 [109] = { 1,   0,              SEN(timer_getoverrun),          "timer_getoverrun"      },
 [110] = { 4,   0,              SEN(timer_settime64),           "timer_settime"         },
 [111] = { 1,   0,              SEN(timer_delete),              "timer_delete"          },
-[112] = { 2,   0,              SEN(clock_settime64),           "clock_settime"         },
-[113] = { 2,   0,              SEN(clock_gettime64),           "clock_gettime"         },
-[114] = { 2,   0,              SEN(clock_getres_time64),       "clock_getres"          },
+[112] = { 2,   TCL,            SEN(clock_settime64),           "clock_settime"         },
+[113] = { 2,   TCL,            SEN(clock_gettime64),           "clock_gettime"         },
+[114] = { 2,   TCL,            SEN(clock_getres_time64),       "clock_getres"          },
 [115] = { 4,   0,              SEN(clock_nanosleep_time64),    "clock_nanosleep"       },
 [116] = { 3,   0,              SEN(syslog),                    "syslog"                },
 [117] = { 4,   0,              SEN(ptrace),                    "ptrace"                },
 [126] = { 1,   0,              SEN(sched_get_priority_min),    "sched_get_priority_min"},
 [127] = { 2,   0,              SEN(sched_rr_get_interval_time64),"sched_rr_get_interval"},
 [128] = { 0,   0,              SEN(restart_syscall),           "restart_syscall"       },
-[129] = { 2,   TS,             SEN(kill),                      "kill"                  },
-[130] = { 2,   TS,             SEN(kill),                      "tkill"                 },
-[131] = { 3,   TS,             SEN(tgkill),                    "tgkill"                },
+[129] = { 2,   TS|TP,          SEN(kill),                      "kill"                  },
+[130] = { 2,   TS|TP,          SEN(tkill),                     "tkill"                 },
+[131] = { 3,   TS|TP,          SEN(tgkill),                    "tgkill"                },
 [132] = { 2,   TS,             SEN(sigaltstack),               "sigaltstack"           },
 [133] = { 2,   TS,             SEN(rt_sigsuspend),             "rt_sigsuspend"         },
 [134] = { 4,   TS,             SEN(rt_sigaction),              "rt_sigaction"          },
 [135] = { 4,   TS,             SEN(rt_sigprocmask),            "rt_sigprocmask"        },
 [136] = { 2,   TS,             SEN(rt_sigpending),             "rt_sigpending"         },
 [137] = { 4,   TS,             SEN(rt_sigtimedwait_time64),    "rt_sigtimedwait"       },
-[138] = { 3,   TS,             SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
+[138] = { 3,   TS|TP,          SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
 [139] = { 0,   TS,             SEN(rt_sigreturn),              "rt_sigreturn"          },
 [140] = { 3,   0,              SEN(setpriority),               "setpriority"           },
 [141] = { 2,   0,              SEN(getpriority),               "getpriority"           },
 [142] = { 4,   0,              SEN(reboot),                    "reboot"                },
-[143] = { 2,   0,              SEN(setregid),                  "setregid"              },
-[144] = { 1,   0,              SEN(setgid),                    "setgid"                },
-[145] = { 2,   0,              SEN(setreuid),                  "setreuid"              },
-[146] = { 1,   0,              SEN(setuid),                    "setuid"                },
-[147] = { 3,   0,              SEN(setresuid),                 "setresuid"             },
-[148] = { 3,   0,              SEN(getresuid),                 "getresuid"             },
-[149] = { 3,   0,              SEN(setresgid),                 "setresgid"             },
-[150] = { 3,   0,              SEN(getresgid),                 "getresgid"             },
-[151] = { 1,   NF,             SEN(setfsuid),                  "setfsuid"              },
-[152] = { 1,   NF,             SEN(setfsgid),                  "setfsgid"              },
+[143] = { 2,   TC,             SEN(setregid),                  "setregid"              },
+[144] = { 1,   TC,             SEN(setgid),                    "setgid"                },
+[145] = { 2,   TC,             SEN(setreuid),                  "setreuid"              },
+[146] = { 1,   TC,             SEN(setuid),                    "setuid"                },
+[147] = { 3,   TC,             SEN(setresuid),                 "setresuid"             },
+[148] = { 3,   TC,             SEN(getresuid),                 "getresuid"             },
+[149] = { 3,   TC,             SEN(setresgid),                 "setresgid"             },
+[150] = { 3,   TC,             SEN(getresgid),                 "getresgid"             },
+[151] = { 1,   TC|NF,          SEN(setfsuid),                  "setfsuid"              },
+[152] = { 1,   TC|NF,          SEN(setfsgid),                  "setfsgid"              },
 [153] = { 1,   0,              SEN(times),                     "times"                 },
 [154] = { 2,   0,              SEN(setpgid),                   "setpgid"               },
 [155] = { 1,   0,              SEN(getpgid),                   "getpgid"               },
 [156] = { 1,   0,              SEN(getsid),                    "getsid"                },
 [157] = { 0,   0,              SEN(setsid),                    "setsid"                },
-[158] = { 2,   0,              SEN(getgroups),                 "getgroups"             },
-[159] = { 2,   0,              SEN(setgroups),                 "setgroups"             },
+[158] = { 2,   TC,             SEN(getgroups),                 "getgroups"             },
+[159] = { 2,   TC,             SEN(setgroups),                 "setgroups"             },
 [160] = { 1,   0,              SEN(uname),                     "uname"                 },
 [161] = { 2,   0,              SEN(sethostname),               "sethostname"           },
 [162] = { 2,   0,              SEN(setdomainname),             "setdomainname"         },
 [164] = { 2,   0,              SEN(setrlimit),                 "setrlimit"             },
 [165] = { 2,   0,              SEN(getrusage),                 "getrusage"             },
 [166] = { 1,   NF,             SEN(umask),                     "umask"                 },
-[167] = { 5,   0,              SEN(prctl),                     "prctl"                 },
+[167] = { 5,   TC,             SEN(prctl),                     "prctl"                 },
 [168] = { 3,   0,              SEN(getcpu),                    "getcpu"                },
-[169] = { 2,   0,              SEN(gettimeofday),              "gettimeofday"          },
-[170] = { 2,   0,              SEN(settimeofday),              "settimeofday"          },
-[171] = { 1,   0,              SEN(adjtimex64),                "adjtimex"              },
+[169] = { 2,   TCL,            SEN(gettimeofday),              "gettimeofday"          },
+[170] = { 2,   TCL,            SEN(settimeofday),              "settimeofday"          },
+[171] = { 1,   TCL,            SEN(adjtimex64),                "adjtimex"              },
 [172] = { 0,   PU|NF,          SEN(getpid),                    "getpid"                },
 [173] = { 0,   PU|NF,          SEN(getppid),                   "getppid"               },
-[174] = { 0,   PU|NF,          SEN(getuid),                    "getuid"                },
-[175] = { 0,   PU|NF,          SEN(geteuid),                   "geteuid"               },
-[176] = { 0,   PU|NF,          SEN(getgid),                    "getgid"                },
-[177] = { 0,   PU|NF,          SEN(getegid),                   "getegid"               },
+[174] = { 0,   TC|PU|NF,       SEN(getuid),                    "getuid"                },
+[175] = { 0,   TC|PU|NF,       SEN(geteuid),                   "geteuid"               },
+[176] = { 0,   TC|PU|NF,       SEN(getgid),                    "getgid"                },
+[177] = { 0,   TC|PU|NF,       SEN(getegid),                   "getegid"               },
 [178] = { 0,   PU|NF,          SEN(gettid),                    "gettid"                },
 [179] = { 1,   0,              SEN(sysinfo),                   "sysinfo"               },
 [180] = { 4,   TD,             SEN(mq_open),                   "mq_open"               },
 [218] = { 4,   0,              SEN(request_key),               "request_key"           },
 [219] = { 5,   0,              SEN(keyctl),                    "keyctl"                },
 [220] = { 5,   TP,             SEN(clone),                     "clone"                 },
-[221] = { 3,   TF|TP|SE|SI,    SEN(execve),                    "execve"                },
+[221] = { 3,   TF|TP|TSD|SE|SI,        SEN(execve),                    "execve"                },
 [222] = { 6,   TD|TM|SI,       SEN(mmap),                      "mmap"                  },
 [223] = { 4,   TD,             SEN(fadvise64),                 "fadvise64"             },
 [224] = { 2,   TF,             SEN(swapon),                    "swapon"                },
 [263] = { 5,   TD|TF,          SEN(fanotify_mark),             "fanotify_mark"         },
 [264] = { 5,   TD|TF,          SEN(name_to_handle_at),         "name_to_handle_at"     },
 [265] = { 3,   TD,             SEN(open_by_handle_at),         "open_by_handle_at"     },
-[266] = { 2,   0,              SEN(clock_adjtime64),           "clock_adjtime"         },
+[266] = { 2,   TCL,            SEN(clock_adjtime64),           "clock_adjtime"         },
 [267] = { 1,   TD,             SEN(syncfs),                    "syncfs"                },
 [268] = { 2,   TD,             SEN(setns),                     "setns"                 },
 [269] = { 4,   TN,             SEN(sendmmsg),                  "sendmmsg"              },
 [278] = { 3,   0,              SEN(getrandom),                 "getrandom"             },
 [279] = { 2,   TD,             SEN(memfd_create),              "memfd_create"          },
 [280] = { 3,   TD,             SEN(bpf),                       "bpf"                   },
-[281] = { 5,   TD|TF|TP|SE|SI, SEN(execveat),                  "execveat"              },
+[281] = { 5,   TD|TF|TP|TSD|SE|SI,     SEN(execveat),                  "execveat"              },
 [282] = { 1,   TD,             SEN(userfaultfd),               "userfaultfd"           },
 [283] = { 2,   0,              SEN(membarrier),                "membarrier"            },
 [284] = { 3,   TM,             SEN(mlock2),                    "mlock2"                },
 [288] = { 4,   TM|SI,          SEN(pkey_mprotect),             "pkey_mprotect"         },
 [289] = { 2,   0,              SEN(pkey_alloc),                "pkey_alloc"            },
 [290] = { 1,   0,              SEN(pkey_free),                 "pkey_free"             },
-[291] = { 5,   TD|TF|TSTA,     SEN(statx),                     "statx"                 },
+[291] = { 5,   TD|TF|TFST|TSTA,SEN(statx),                     "statx"                 },
 [292] = { 6,   0,              SEN(io_pgetevents_time64),      "io_pgetevents"         },
 [293] = { 4,   0,              SEN(rseq),                      "rseq"                  },
 [294] = { 5,   TD,             SEN(kexec_file_load),           "kexec_file_load"       },
 /* [295 ... 423] - reserved to sync up with other architectures */
-[424] = { 4,   TD|TS,          SEN(pidfd_send_signal),         "pidfd_send_signal"     },
-[425] = { 2,   TD,             SEN(io_uring_setup),            "io_uring_setup"        },
-[426] = { 6,   TD|TS,          SEN(io_uring_enter),            "io_uring_enter"        },
-[427] = { 4,   TD|TM,          SEN(io_uring_register),         "io_uring_register"     },
+#include "syscallent-common.h"
index ed9261f5aff258b345df5044b7df73324a1939d3..fb75722f6bf712fa9ad310d6c2c960a21214898b 100644 (file)
@@ -9,3 +9,5 @@
 #define HAVE_ARCH_OLD_SELECT 1
 #define HAVE_ARCH_UID16_SYSCALLS 1
 #define SUPPORTED_PERSONALITIES 2
+#define PERSONALITY0_AUDIT_ARCH { AUDIT_ARCH_AARCH64, 0 }
+#define PERSONALITY1_AUDIT_ARCH { AUDIT_ARCH_ARM,     0 }
index 534d7f4fec083bfc88fd40993f41fd6ef0f34611..c82fc4d7f63f5d38bf873939cdbf7529f78100a7 100644 (file)
@@ -1,16 +1,13 @@
 /*
  * Copyright (c) 2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2018-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
  */
 
-#ifndef AUDIT_ARCH_ARM
-# define AUDIT_ARCH_ARM 0x40000028
-#endif
-
 int
-get_personality_from_syscall_info(const struct ptrace_syscall_info *sci)
+get_personality_from_syscall_info(const struct_ptrace_syscall_info *sci)
 {
        return sci->arch == AUDIT_ARCH_ARM;
 }
index ef5f78c8e9f192d3edcc8f03a8bbb35005ba1781..5b5121d9d3af1bdc372ff8a029e93edfaadfeded 100644 (file)
@@ -1,6 +1,7 @@
 /* Generated by ioctls_gen.sh from definitions found in $linux/arch/arm64/include/ tree. */
 { "linux/kvm.h", "KVM_ARM_PREFERRED_TARGET", _IOC_READ, 0xaeaf, 0x20 },
 { "linux/kvm.h", "KVM_ARM_SET_DEVICE_ADDR", _IOC_WRITE, 0xaeab, 0x10 },
+{ "linux/kvm.h", "KVM_ARM_VCPU_FINALIZE", _IOC_WRITE, 0xaec2, 0x04 },
 { "linux/kvm.h", "KVM_ARM_VCPU_INIT", _IOC_WRITE, 0xaeae, 0x20 },
 { "linux/kvm.h", "KVM_ASSIGN_DEV_IRQ", _IOC_WRITE, 0xae70, 0x40 },
 { "linux/kvm.h", "KVM_ASSIGN_PCI_DEVICE", _IOC_READ, 0xae69, 0x40 },
index e2b5d8a2aba6337a2389ab1f7912f8e1f0805d0d..668a7570d3a9fba7e5006d894c0c3d35878cf7cf 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -23,7 +23,7 @@ arch_set_scno(struct tcb *tcp, kernel_ulong_t scno)
        };
        int rc = ptrace(PTRACE_SETREGSET, tcp->pid, NT_ARM_SYSTEM_CALL, &io);
        if (rc && errno != ESRCH)
-               perror_msg("arch_set_scno: NT_ARM_SYSTEM_CALL pid:%d scno:%#x",
-                          tcp->pid, n);
+               perror_func_msg("NT_ARM_SYSTEM_CALL pid:%d scno:%#x",
+                               tcp->pid, n);
        return rc;
 }
index c4bb9f67191af79b605946d906244d2ba9bb9b84..4750cd99916ea2eac6d99e5034b29e571ff636d6 100644 (file)
  * Arch-specific block, not used on AArch64.
  * [244 ... 259] = { },
  */
-
-/* Quote from asm-generic/unistd.h:
- *
- * All syscalls below here should go away really,
- * these are provided for both review and as a porting
- * help for the C library version.
- *
- * Last chance: are any of these important enough to
- * enable by default?
- */
-
-[1024] = { 3,  TD|TF,          SEN(open),              "open"          },
-[1025] = { 2,  TF,             SEN(link),              "link"          },
-[1026] = { 1,  TF,             SEN(unlink),            "unlink"        },
-[1027] = { 3,  TF,             SEN(mknod),             "mknod"         },
-[1028] = { 2,  TF,             SEN(chmod),             "chmod"         },
-[1029] = { 3,  TF,             SEN(chown),             "chown"         },
-[1030] = { 2,  TF,             SEN(mkdir),             "mkdir"         },
-[1031] = { 1,  TF,             SEN(rmdir),             "rmdir"         },
-[1032] = { 3,  TF,             SEN(chown),             "lchown"        },
-[1033] = { 2,  TF,             SEN(access),            "access"        },
-[1034] = { 2,  TF,             SEN(rename),            "rename"        },
-[1035] = { 3,  TF,             SEN(readlink),          "readlink"      },
-[1036] = { 2,  TF,             SEN(symlink),           "symlink"       },
-[1037] = { 2,  TF,             SEN(utimes),            "utimes"        },
-[1038] = { 2,  TF|TST|TSTA,    SEN(stat),              "stat"          },
-[1039] = { 2,  TF|TLST|TSTA,   SEN(lstat),             "lstat"         },
-[1040] = { 1,  TD,             SEN(pipe),              "pipe"          },
-[1041] = { 2,  TD,             SEN(dup2),              "dup2"          },
-[1042] = { 1,  TD,             SEN(epoll_create),      "epoll_create"  },
-[1043] = { 0,  TD,             SEN(inotify_init),      "inotify_init"  },
-[1044] = { 1,  TD,             SEN(eventfd),           "eventfd"       },
-[1045] = { 3,  TD|TS,          SEN(signalfd),          "signalfd"      },
-[1046] = { 4,  TD|TN,          SEN(sendfile64),        "sendfile"      },
-[1047] = { 2,  TD,             SEN(ftruncate),         "ftruncate"     },
-[1048] = { 2,  TF,             SEN(truncate),          "truncate"      },
-[1049] = { 2,  TF|TST|TSTA,    SEN(stat),              "stat"          },
-[1050] = { 2,  TF|TLST|TSTA,   SEN(lstat),             "lstat"         },
-[1051] = { 2,  TD|TFST|TSTA,   SEN(fstat),             "fstat"         },
-[1052] = { 3,  TD,             SEN(fcntl),             "fcntl"         },
-[1053] = { 4,  TD,             SEN(fadvise64),         "fadvise64"     },
-[1054] = { 4,  TD|TF|TFST|TSTA,SEN(newfstatat),        "newfstatat"    },
-[1055] = { 2,  TD|TFSF|TSFA,   SEN(fstatfs),           "fstatfs"       },
-[1056] = { 2,  TF|TSF|TSFA,    SEN(statfs),            "statfs"        },
-[1057] = { 3,  TD,             SEN(lseek),             "lseek"         },
-[1058] = { 6,  TD|TM|SI,       SEN(mmap),              "mmap"          },
-[1059] = { 1,  0,              SEN(alarm),             "alarm"         },
-[1060] = { 0,  PU|NF,          SEN(getpgrp),           "getpgrp"       },
-[1061] = { 0,  TS,             SEN(pause),             "pause"         },
-[1062] = { 1,  0,              SEN(time),              "time"          },
-[1063] = { 2,  TF,             SEN(utime),             "utime"         },
-[1064] = { 2,  TD|TF,          SEN(creat),             "creat"         },
-[1065] = { 3,  TD,             SEN(getdents),          "getdents"      },
-[1066] = { 3,  TD|TF,          SEN(futimesat),         "futimesat"     },
-[1067] = { 5,  TD,             SEN(select),            "select"        },
-[1068] = { 3,  TD,             SEN(poll_time64),       "poll"          },
-[1069] = { 4,  TD,             SEN(epoll_wait),        "epoll_wait"    },
-[1070] = { 2,  TSFA,           SEN(ustat),             "ustat"         },
-[1071] = { 0,  TP,             SEN(vfork),             "vfork"         },
-[1072] = { 4,  TP,             SEN(wait4),             "wait4"         },
-[1073] = { 4,  TN,             SEN(recv),              "recv"          },
-[1074] = { 4,  TN,             SEN(send),              "send"          },
-[1075] = { 2,  0,              SEN(bdflush),           "bdflush"       },
-[1076] = { 1,  TF,             SEN(umount),            "umount"        },
-[1077] = { 1,  TF,             SEN(uselib),            "uselib"        },
-[1078] = { 1,  0,              SEN(sysctl),            "sysctl"        },
-[1079] = { 0,  TP,             SEN(fork),              "fork"          },
index 2d5c6d6a1971da17710d7069bd902894b8895a58..7cb61fa18aac57aa3059b0561544e1ea760a7b22 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -22,8 +22,7 @@ arch_get_scno(struct tcb *tcp)
         */
        if (!scno_in_range(scno)) {
                if (alpha_a3 == 0 || alpha_a3 == -1UL) {
-                       if (debug_flag)
-                               error_msg("stray syscall exit: r0 = %lu", scno);
+                       debug_msg("stray syscall exit: r0 = %lu", scno);
                        return 0;
                }
        }
index d569fa6760d29ddf408aee7a0ffd68f682d97530..fa86c9ae6b5b774876bd126bbda4fcb74b9acdcb 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 1993 Branko Lankester <branko@hacktic.nl>
  * Copyright (c) 1993, 1994, 1995 Rick Sladkey <jrs@world.std.com>
- * Copyright (c) 1995-2019 The strace developers.
+ * Copyright (c) 1995-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -30,8 +30,8 @@
 [ 20] = { 0,   PU|NF,          SEN(getxpid),                   "getxpid"               },
 [ 21] = { 4,   0,              SEN(printargs),                 "osf_mount"             },
 [ 22] = { 2,   TF,             SEN(umount2),                   "umount"                },
-[ 23] = { 1,   0,              SEN(setuid),                    "setuid"                },
-[ 24] = { 0,   PU|NF,          SEN(getxuid),                   "getxuid"               },
+[ 23] = { 1,   TC,             SEN(setuid),                    "setuid"                },
+[ 24] = { 0,   TC|PU|NF,       SEN(getxuid),                   "getxuid"               },
 [ 25] = { 5,   0,              SEN(printargs),                 "exec_with_loader"      }, /* not implemented */
 [ 26] = { 4,   0,              SEN(ptrace),                    "ptrace"                },
 [ 27] = { 5,   0,              SEN(printargs),                 "osf_nrecvmsg"          }, /* not implemented */
@@ -44,7 +44,7 @@
 [ 34] = { 5,   0,              SEN(printargs),                 "osf_chflags"           }, /* not implemented */
 [ 35] = { 5,   0,              SEN(printargs),                 "osf_fchflags"          }, /* not implemented */
 [ 36] = { 0,   0,              SEN(sync),                      "sync"                  },
-[ 37] = { 2,   TS,             SEN(kill),                      "kill"                  },
+[ 37] = { 2,   TS|TP,          SEN(kill),                      "kill"                  },
 [ 38] = { 5,   TF|TST|TSTA,    SEN(printargs),                 "osf_old_stat"          }, /* not implemented */
 [ 39] = { 2,   0,              SEN(setpgid),                   "setpgid"               },
 [ 40] = { 5,   TF|TLST|TSTA,   SEN(printargs),                 "osf_old_lstat"         }, /* not implemented */
@@ -54,7 +54,7 @@
 [ 44] = { 5,   0,              SEN(printargs),                 "osf_profil"            }, /* not implemented */
 [ 45] = { 3,   TD|TF,          SEN(open),                      "open"                  },
 [ 46] = { 5,   0,              SEN(printargs),                 "osf_old_sigaction"     }, /* not implemented */
-[ 47] = { 0,   PU|NF,          SEN(getxgid),                   "getxgid"               },
+[ 47] = { 0,   TC|PU|NF,       SEN(getxgid),                   "getxgid"               },
 [ 48] = { 2,   TS,             SEN(osf_sigprocmask),           "osf_sigprocmask"       },
 [ 49] = { 5,   0,              SEN(printargs),                 "osf_getlogin"          }, /* not implemented */
 [ 50] = { 5,   0,              SEN(printargs),                 "osf_setlogin"          }, /* not implemented */
@@ -66,7 +66,7 @@
 [ 56] = { 5,   0,              SEN(printargs),                 "osf_revoke"            }, /* not implemented */
 [ 57] = { 2,   TF,             SEN(symlink),                   "symlink"               },
 [ 58] = { 3,   TF,             SEN(readlink),                  "readlink"              },
-[ 59] = { 3,   TF|TP|SE|SI,    SEN(execve),                    "execve"                },
+[ 59] = { 3,   TF|TP|TSD|SE|SI,        SEN(execve),                    "execve"                },
 [ 60] = { 1,   NF,             SEN(umask),                     "umask"                 },
 [ 61] = { 1,   TF,             SEN(chroot),                    "chroot"                },
 [ 62] = { 5,   TD|TFST|TSTA,   SEN(printargs),                 "osf_old_fstat"         }, /* not implemented */
@@ -86,8 +86,8 @@
 [ 76] = { 0,   0,              SEN(vhangup),                   "vhangup"               },
 [ 77] = { 5,   0,              SEN(printargs),                 "osf_kmodcall"          }, /* not implemented */
 [ 78] = { 5,   TM,             SEN(printargs),                 "osf_mincore"           }, /* not implemented */
-[ 79] = { 2,   0,              SEN(getgroups),                 "getgroups"             },
-[ 80] = { 2,   0,              SEN(setgroups),                 "setgroups"             },
+[ 79] = { 2,   TC,             SEN(getgroups),                 "getgroups"             },
+[ 80] = { 2,   TC,             SEN(setgroups),                 "setgroups"             },
 [ 81] = { 5,   0,              SEN(printargs),                 "osf_old_getpgrp"       }, /* not implemented */
 [ 82] = { 2,   0,              SEN(setpgrp),                   "setpgrp"               },
 [ 83] = { 3,   0,              SEN(osf_setitimer),             "osf_setitimer"         },
 [113] = { 3,   TN,             SEN(recvmsg),                   "recvmsg"               },
 [114] = { 3,   TN,             SEN(sendmsg),                   "sendmsg"               },
 [115] = { 5,   0,              SEN(printargs),                 "osf_old_vtrace"        }, /* not implemented */
-[116] = { 2,   0,              SEN(osf_gettimeofday),          "osf_gettimeofday"      },
+[116] = { 2,   TCL,            SEN(osf_gettimeofday),          "osf_gettimeofday"      },
 [117] = { 2,   0,              SEN(osf_getrusage),             "osf_getrusage"         },
 [118] = { 5,   TN,             SEN(getsockopt),                "getsockopt"            },
 [119] = { },
 [120] = { 3,   TD,             SEN(readv),                     "readv"                 },
 [121] = { 3,   TD,             SEN(writev),                    "writev"                },
-[122] = { 2,   0,              SEN(osf_settimeofday),          "osf_settimeofday"      },
+[122] = { 2,   TCL,            SEN(osf_settimeofday),          "osf_settimeofday"      },
 [123] = { 3,   TD,             SEN(fchown),                    "fchown"                },
 [124] = { 2,   TD,             SEN(fchmod),                    "fchmod"                },
 [125] = { 6,   TN,             SEN(recvfrom),                  "recvfrom"              },
-[126] = { 2,   0,              SEN(setreuid),                  "setreuid"              },
-[127] = { 2,   0,              SEN(setregid),                  "setregid"              },
+[126] = { 2,   TC,             SEN(setreuid),                  "setreuid"              },
+[127] = { 2,   TC,             SEN(setregid),                  "setregid"              },
 [128] = { 2,   TF,             SEN(rename),                    "rename"                },
 [129] = { 2,   TF,             SEN(truncate),                  "truncate"              },
 [130] = { 2,   TD,             SEN(ftruncate),                 "ftruncate"             },
 [131] = { 2,   TD,             SEN(flock),                     "flock"                 },
-[132] = { 1,   0,              SEN(setgid),                    "setgid"                },
+[132] = { 1,   TC,             SEN(setgid),                    "setgid"                },
 [133] = { 6,   TN,             SEN(sendto),                    "sendto"                },
 [134] = { 2,   TN,             SEN(shutdown),                  "shutdown"              },
 [135] = { 4,   TN,             SEN(socketpair),                "socketpair"            },
 [137] = { 1,   TF,             SEN(rmdir),                     "rmdir"                 },
 [138] = { 2,   TF,             SEN(osf_utimes),                "osf_utimes"            },
 [139] = { 5,   0,              SEN(printargs),                 "osf_old_sigreturn"     }, /* not implemented */
-[140] = { 5,   0,              SEN(printargs),                 "osf_adjtime"           }, /* not implemented */
+[140] = { 5,   TCL,            SEN(printargs),                 "osf_adjtime"           }, /* not implemented */
 [141] = { 3,   TN,             SEN(getpeername),               "getpeername"           },
 [142] = { 5,   0,              SEN(printargs),                 "osf_gethostid"         }, /* not implemented */
 [143] = { 5,   0,              SEN(printargs),                 "osf_sethostid"         }, /* not implemented */
 [144] = { 2,   0,              SEN(getrlimit),                 "getrlimit"             },
 [145] = { 2,   0,              SEN(setrlimit),                 "setrlimit"             },
-[146] = { 5,   0,              SEN(printargs),                 "osf_old_killpg"        }, /* not implemented */
+[146] = { 5,   TP,             SEN(printargs),                 "osf_old_killpg"        }, /* not implemented */
 [147] = { 0,   0,              SEN(setsid),                    "setsid"                },
 [148] = { 4,   TF,             SEN(quotactl),                  "quotactl"              },
 [149] = { 5,   0,              SEN(printargs),                 "osf_oldquota"          }, /* not implemented */
 [217] = { 3,   TM,             SEN(msync),                     "msync"                 },
 [218] = { 5,   0,              SEN(printargs),                 "osf_signal"            }, /* not implemented */
 [219] = { 5,   0,              SEN(printargs),                 "osf_utc_gettime"       }, /* not implemented */
-[220] = { 5,   0,              SEN(printargs),                 "osf_utc_adjtime"       }, /* not implemented */
+[220] = { 5,   TCL,            SEN(printargs),                 "osf_utc_adjtime"       }, /* not implemented */
 [221] = { },
 [222] = { 5,   0,              SEN(printargs),                 "osf_security"          }, /* not implemented */
 [223] = { 5,   0,              SEN(printargs),                 "osf_kloadcall"         }, /* not implemented */
 [242] = { 5,   0,              SEN(printargs),                 "osf_uadmin"            }, /* not implemented */
 [243] = { 5,   0,              SEN(printargs),                 "osf_fuser"             }, /* not implemented */
 [244] = { 2,   0,              SEN(printargs),                 "osf_proplist_syscall"  },
-[245] = { 5,   0,              SEN(printargs),                 "osf_ntp_adjtime"       }, /* not implemented */
+[245] = { 5,   TCL,            SEN(printargs),                 "osf_ntp_adjtime"       }, /* not implemented */
 [246] = { 5,   0,              SEN(printargs),                 "osf_ntp_gettime"       }, /* not implemented */
 [247] = { 5,   0,              SEN(printargs),                 "osf_pathconf"          }, /* not implemented */
 [248] = { 5,   0,              SEN(printargs),                 "osf_fpathconf"         }, /* not implemented */
 [300] = { 2,   0,              SEN(bdflush),                   "bdflush"               },
 [301] = { 1,   0,              SEN(printargs),                 "sethae"                },
 [302] = { 5,   TF,             SEN(mount),                     "mount"                 },
-[303] = { 1,   0,              SEN(adjtimex32),                "old_adjtimex"          },
+[303] = { 1,   TCL,            SEN(adjtimex32),                "old_adjtimex"          },
 [304] = { 1,   TF,             SEN(swapoff),                   "swapoff"               },
 [305] = { 3,   TD,             SEN(getdents),                  "getdents"              },
 [306] = { 2,   0,              SEN(create_module),             "create_module"         }, /* not implemented */
 [322] = { 2,   TF,             SEN(swapon),                    "swapon"                },
 [323] = { 1,   0,              SEN(times),                     "times"                 },
 [324] = { 1,   NF,             SEN(personality),               "personality"           },
-[325] = { 1,   NF,             SEN(setfsuid),                  "setfsuid"              },
-[326] = { 1,   NF,             SEN(setfsgid),                  "setfsgid"              },
+[325] = { 1,   TC|NF,          SEN(setfsuid),                  "setfsuid"              },
+[326] = { 1,   TC|NF,          SEN(setfsgid),                  "setfsgid"              },
 [327] = { 2,   TSFA,           SEN(ustat),                     "ustat"                 },
 [328] = { 2,   TF|TSF|TSFA,    SEN(statfs),                    "statfs"                },
 [329] = { 2,   TD|TFSF|TSFA,   SEN(fstatfs),                   "fstatfs"               },
 [340] = { 2,   0,              SEN(nanosleep_time64),          "nanosleep"             },
 [341] = { 5,   TM|SI,          SEN(mremap),                    "mremap"                },
 [342] = { 3,   0,              SEN(nfsservctl),                "nfsservctl"            }, /* not implemented */
-[343] = { 3,   0,              SEN(setresuid),                 "setresuid"             },
-[344] = { 3,   0,              SEN(getresuid),                 "getresuid"             },
+[343] = { 3,   TC,             SEN(setresuid),                 "setresuid"             },
+[344] = { 3,   TC,             SEN(getresuid),                 "getresuid"             },
 [345] = { 5,   0,              SEN(printargs),                 "pciconfig_read"        },
 [346] = { 5,   0,              SEN(printargs),                 "pciconfig_write"       },
 [347] = { 5,   0,              SEN(query_module),              "query_module"          }, /* not implemented */
-[348] = { 5,   0,              SEN(prctl),                     "prctl"                 },
+[348] = { 5,   TC,             SEN(prctl),                     "prctl"                 },
 [349] = { 4,   TD,             SEN(pread),                     "pread64"               },
 [350] = { 4,   TD,             SEN(pwrite),                    "pwrite64"              },
 [351] = { 0,   TS,             SEN(rt_sigreturn),              "rt_sigreturn"          },
 [353] = { 4,   TS,             SEN(rt_sigprocmask),            "rt_sigprocmask"        },
 [354] = { 2,   TS,             SEN(rt_sigpending),             "rt_sigpending"         },
 [355] = { 4,   TS,             SEN(rt_sigtimedwait_time64),    "rt_sigtimedwait"       },
-[356] = { 3,   TS,             SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
+[356] = { 3,   TS|TP,          SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
 [357] = { 2,   TS,             SEN(rt_sigsuspend),             "rt_sigsuspend"         },
 [358] = { 5,   TD,             SEN(select),                    "select"                },
-[359] = { 2,   0,              SEN(gettimeofday),              "gettimeofday"          },
-[360] = { 2,   0,              SEN(settimeofday),              "settimeofday"          },
+[359] = { 2,   TCL,            SEN(gettimeofday),              "gettimeofday"          },
+[360] = { 2,   TCL,            SEN(settimeofday),              "settimeofday"          },
 [361] = { 2,   0,              SEN(getitimer),                 "getitimer"             },
 [362] = { 3,   0,              SEN(setitimer),                 "setitimer"             },
 [363] = { 2,   TF,             SEN(utimes),                    "utimes"                },
 [364] = { 2,   0,              SEN(getrusage),                 "getrusage"             },
 [365] = { 4,   TP,             SEN(wait4),                     "wait4"                 },
-[366] = { 1,   0,              SEN(adjtimex64),                "adjtimex"              },
+[366] = { 1,   TCL,            SEN(adjtimex64),                "adjtimex"              },
 [367] = { 2,   TF,             SEN(getcwd),                    "getcwd"                },
-[368] = { 2,   0,              SEN(capget),                    "capget"                },
-[369] = { 2,   0,              SEN(capset),                    "capset"                },
+[368] = { 2,   TC,             SEN(capget),                    "capget"                },
+[369] = { 2,   TC,             SEN(capset),                    "capset"                },
 [370] = { 4,   TD|TN,          SEN(sendfile),                  "sendfile"              },
-[371] = { 3,   0,              SEN(setresgid),                 "setresgid"             },
-[372] = { 3,   0,              SEN(getresgid),                 "getresgid"             },
+[371] = { 3,   TC,             SEN(setresgid),                 "setresgid"             },
+[372] = { 3,   TC,             SEN(getresgid),                 "getresgid"             },
 [373] = { 4,   0,              SEN(printargs),                 "dipc"                  }, /* not implemented */
 [374] = { 2,   TF,             SEN(pivotroot),                 "pivot_root"            },
 [375] = { 3,   TM,             SEN(mincore),                   "mincore"               },
 [378] = { 0,   PU|NF,          SEN(gettid),                    "gettid"                },
 [379] = { 3,   TD,             SEN(readahead),                 "readahead"             },
 [380] = { },
-[381] = { 2,   TS,             SEN(kill),                      "tkill"                 },
+[381] = { 2,   TS|TP,          SEN(tkill),                     "tkill"                 },
 [382] = { 5,   TF,             SEN(setxattr),                  "setxattr"              },
 [383] = { 5,   TF,             SEN(setxattr),                  "lsetxattr"             },
 [384] = { 5,   TD,             SEN(fsetxattr),                 "fsetxattr"             },
 [416] = { 2,   0,              SEN(timer_gettime64),           "timer_gettime"         },
 [417] = { 1,   0,              SEN(timer_getoverrun),          "timer_getoverrun"      },
 [418] = { 1,   0,              SEN(timer_delete),              "timer_delete"          },
-[419] = { 2,   0,              SEN(clock_settime64),           "clock_settime"         },
-[420] = { 2,   0,              SEN(clock_gettime64),           "clock_gettime"         },
-[421] = { 2,   0,              SEN(clock_getres_time64),       "clock_getres"          },
+[419] = { 2,   TCL,            SEN(clock_settime64),           "clock_settime"         },
+[420] = { 2,   TCL,            SEN(clock_gettime64),           "clock_gettime"         },
+[421] = { 2,   TCL,            SEN(clock_getres_time64),       "clock_getres"          },
 [422] = { 4,   0,              SEN(clock_nanosleep_time64),    "clock_nanosleep"       },
 [423] = { 4,   TI,             SEN(semtimedop_time64),         "semtimedop"            },
-[424] = { 3,   TS,             SEN(tgkill),                    "tgkill"                },
+[424] = { 3,   TS|TP,          SEN(tgkill),                    "tgkill"                },
 [425] = { 2,   TF|TST|TSTA,    SEN(stat64),                    "stat64"                },
 [426] = { 2,   TF|TLST|TSTA,   SEN(lstat64),                   "lstat64"               },
 [427] = { 2,   TD|TFST|TSTA,   SEN(fstat64),                   "fstat64"               },
 [462] = { 3,   TD|TF,          SEN(faccessat),                 "faccessat"             },
 [463] = { 6,   TD,             SEN(pselect6_time64),           "pselect6"              },
 [464] = { 5,   TD,             SEN(ppoll_time64),              "ppoll"                 },
-[465] = { 1,   TP,             SEN(unshare),                   "unshare"               },
+[465] = { 1,   0,              SEN(unshare),                   "unshare"               },
 [466] = { 2,   0,              SEN(set_robust_list),           "set_robust_list"       },
 [467] = { 3,   0,              SEN(get_robust_list),           "get_robust_list"       },
 [468] = { 6,   TD,             SEN(splice),                    "splice"                },
 [496] = { 4,   0,              SEN(prlimit64),                 "prlimit64"             },
 [497] = { 5,   TD|TF,          SEN(name_to_handle_at),         "name_to_handle_at"     },
 [498] = { 3,   TD,             SEN(open_by_handle_at),         "open_by_handle_at"     },
-[499] = { 2,   0,              SEN(clock_adjtime64),           "clock_adjtime"         },
+[499] = { 2,   TCL,            SEN(clock_adjtime64),           "clock_adjtime"         },
 [500] = { 1,   TD,             SEN(syncfs),                    "syncfs"                },
 [501] = { 2,   TD,             SEN(setns),                     "setns"                 },
 [502] = { 4,   TN,             SEN(accept4),                   "accept4"               },
 [510] = { 5,   TD|TF,          SEN(renameat2),                 "renameat2"             },
 [511] = { 3,   0,              SEN(getrandom),                 "getrandom"             },
 [512] = { 2,   TD,             SEN(memfd_create),              "memfd_create"          },
-[513] = { 5,   TD|TF|TP|SE|SI, SEN(execveat),                  "execveat"              },
+[513] = { 5,   TD|TF|TP|TSD|SE|SI,     SEN(execveat),                  "execveat"              },
 [514] = { 3,   0,              SEN(seccomp),                   "seccomp"               },
 [515] = { 3,   TD,             SEN(bpf),                       "bpf"                   },
 [516] = { 1,   TD,             SEN(userfaultfd),               "userfaultfd"           },
 [519] = { 6,   TD,             SEN(copy_file_range),           "copy_file_range"       },
 [520] = { 6,   TD,             SEN(preadv2),                   "preadv2"               },
 [521] = { 6,   TD,             SEN(pwritev2),                  "pwritev2"              },
-[522] = { 5,   TD|TF|TSTA,     SEN(statx),                     "statx"                 },
+[522] = { 5,   TD|TF|TFST|TSTA,SEN(statx),                     "statx"                 },
 [523] = { 6,   0,              SEN(io_pgetevents_time64),      "io_pgetevents"         },
 [524] = { 4,   TM|SI,          SEN(pkey_mprotect),             "pkey_mprotect"         },
 [525] = { 2,   0,              SEN(pkey_alloc),                "pkey_alloc"            },
 [527] = { 4,   0,              SEN(rseq),                      "rseq"                  },
 [528] = { 3,   TF|TSF|TSFA,    SEN(statfs64),                  "statfs64"              },
 [529] = { 3,   TD|TFSF|TSFA,   SEN(fstatfs64),                 "fstatfs64"             },
-[530] = { 0,   PU|NF,          SEN(getegid),                   "getegid"               },
-[531] = { 0,   PU|NF,          SEN(geteuid),                   "geteuid"               },
+[530] = { 0,   TC|PU|NF,       SEN(getegid),                   "getegid"               },
+[531] = { 0,   TC|PU|NF,       SEN(geteuid),                   "geteuid"               },
 [532] = { 0,   PU|NF,          SEN(getppid),                   "getppid"               },
 /* all other architectures have common numbers for new syscalls, alpha is the exception */
-[534] = { 4,   TD|TS,          SEN(pidfd_send_signal),         "pidfd_send_signal"     },
-[535] = { 2,   TD,             SEN(io_uring_setup),            "io_uring_setup"        },
-[536] = { 6,   TD|TS,          SEN(io_uring_enter),            "io_uring_enter"        },
-[537] = { 4,   TD|TM,          SEN(io_uring_register),         "io_uring_register"     },
+/* 534 - 424 == 110 */
+#define BASE_NR 110
+#include "syscallent-common.h"
+#undef BASE_NR
index adbf218ec660f87ea4a3590907eb9c9914730438..9433655a6340705e3fa004072a4ba0d67667fbee 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -8,6 +8,8 @@
 static int
 arch_set_scno(struct tcb *tcp, kernel_ulong_t scno)
 {
+       if (ptrace_syscall_info_is_valid() && get_regs(tcp) < 0)
+               return -1;
        arc_regs.scratch.r8 = scno;
        return set_regs(tcp->pid);
 }
index 5baf3f911e63b07d41bcca1d0c7f1423f9ef7bf3..eb2f97eb9a65a5a8382159d76c9e745c9b54c5ef 100644 (file)
@@ -1,16 +1,12 @@
 /*
  * Fallback file for arch-specific definitions.
  *
- * Copyright (c) 2018-2019 The strace developers.
+ * Copyright (c) 2018-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
  */
 
-#ifndef ARCH_TIMESIZE
-# define ARCH_TIMESIZE SIZEOF_LONG
-#endif
-
 #ifndef HAVE_ARCH_GETRVAL2
 # define HAVE_ARCH_GETRVAL2 0
 #endif
 #ifndef HAVE_ARCH_OLD_TIME64_SYSCALLS
 # define HAVE_ARCH_OLD_TIME64_SYSCALLS (SIZEOF_LONG == 8)
 #endif
+
+#ifndef MIN_KLONGSIZE
+# if SUPPORTED_PERSONALITIES > 1
+#  define MIN_KLONGSIZE 4
+# else
+#  define MIN_KLONGSIZE SIZEOF_KERNEL_LONG_T
+# endif
+#endif
+
+#ifndef HAVE_ARCH_TIMESPEC32
+# define HAVE_ARCH_TIMESPEC32 (MIN_KLONGSIZE == 4)
+#endif
index 2393ba42afbf38bc0f4266f4d9cf237c11f22aaf..35d9ce8c099b64e918f76f888375663e60f8a9a5 100644 (file)
@@ -2,6 +2,7 @@
 { "asm/ioctls.h", "FIOQSIZE", 0, 0x545E, 0 },
 { "linux/kvm.h", "KVM_ARM_PREFERRED_TARGET", _IOC_READ, 0xaeaf, 0x20 },
 { "linux/kvm.h", "KVM_ARM_SET_DEVICE_ADDR", _IOC_WRITE, 0xaeab, 0x10 },
+{ "linux/kvm.h", "KVM_ARM_VCPU_FINALIZE", _IOC_WRITE, 0xaec2, 0x04 },
 { "linux/kvm.h", "KVM_ARM_VCPU_INIT", _IOC_WRITE, 0xaeae, 0x20 },
 { "linux/kvm.h", "KVM_ASSIGN_DEV_IRQ", _IOC_WRITE, 0xae70, 0x40 },
 { "linux/kvm.h", "KVM_ASSIGN_PCI_DEVICE", _IOC_READ, 0xae69, 0x40 },
index 065e79f3d2b4c107354aa63e80e1a1cdded22422..b744074e11c2256f736135f5e1e84760c065b9aa 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 1993 Branko Lankester <branko@hacktic.nl>
  * Copyright (c) 1993, 1994, 1995 Rick Sladkey <jrs@world.std.com>
- * Copyright (c) 1995-2019 The strace developers.
+ * Copyright (c) 1995-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -18,9 +18,9 @@
 [  8] = { 2,   TD|TF,          SEN(creat),                     "creat"                 },
 [  9] = { 2,   TF,             SEN(link),                      "link"                  },
 [ 10] = { 1,   TF,             SEN(unlink),                    "unlink"                },
-[ 11] = { 3,   TF|TP|SE|SI,    SEN(execve),                    "execve"                },
+[ 11] = { 3,   TF|TP|TSD|SE|SI,        SEN(execve),                    "execve"                },
 [ 12] = { 1,   TF,             SEN(chdir),                     "chdir"                 },
-[ 13] = { 1,   0,              SEN(time),                      "time"                  },
+[ 13] = { 1,   TCL,            SEN(time),                      "time"                  },
 [ 14] = { 3,   TF,             SEN(mknod),                     "mknod"                 },
 [ 15] = { 2,   TF,             SEN(chmod),                     "chmod"                 },
 [ 16] = { 3,   TF,             SEN(chown16),                   "lchown"                },
@@ -30,8 +30,8 @@
 [ 20] = { 0,   PU|NF,          SEN(getpid),                    "getpid"                },
 [ 21] = { 5,   TF,             SEN(mount),                     "mount"                 },
 [ 22] = { 1,   TF,             SEN(umount),                    "umount"                },
-[ 23] = { 1,   0,              SEN(setuid16),                  "setuid"                },
-[ 24] = { 0,   PU|NF,          SEN(getuid16),                  "getuid"                },
+[ 23] = { 1,   TC,             SEN(setuid16),                  "setuid"                },
+[ 24] = { 0,   TC|PU|NF,       SEN(getuid16),                  "getuid"                },
 [ 25] = { 1,   0,              SEN(stime),                     "stime"                 },
 [ 26] = { 4,   0,              SEN(ptrace),                    "ptrace"                },
 [ 27] = { 1,   0,              SEN(alarm),                     "alarm"                 },
@@ -44,7 +44,7 @@
 [ 34] = { 1,   0,              SEN(nice),                      "nice"                  },
 [ 35] = { 0,   0,              SEN(ftime),                     "ftime"                 },
 [ 36] = { 0,   0,              SEN(sync),                      "sync"                  },
-[ 37] = { 2,   TS,             SEN(kill),                      "kill"                  },
+[ 37] = { 2,   TS|TP,          SEN(kill),                      "kill"                  },
 [ 38] = { 2,   TF,             SEN(rename),                    "rename"                },
 [ 39] = { 2,   TF,             SEN(mkdir),                     "mkdir"                 },
 [ 40] = { 1,   TF,             SEN(rmdir),                     "rmdir"                 },
 [ 43] = { 1,   0,              SEN(times),                     "times"                 },
 [ 44] = { 0,   0,              SEN(prof),                      "prof"                  },
 [ 45] = { 1,   TM|SI,          SEN(brk),                       "brk"                   },
-[ 46] = { 1,   0,              SEN(setgid16),                  "setgid"                },
-[ 47] = { 0,   PU|NF,          SEN(getgid16),                  "getgid"                },
+[ 46] = { 1,   TC,             SEN(setgid16),                  "setgid"                },
+[ 47] = { 0,   TC|PU|NF,       SEN(getgid16),                  "getgid"                },
 [ 48] = { 2,   TS,             SEN(signal),                    "signal"                },
-[ 49] = { 0,   PU|NF,          SEN(geteuid16),                 "geteuid"               },
-[ 50] = { 0,   PU|NF,          SEN(getegid16),                 "getegid"               },
+[ 49] = { 0,   TC|PU|NF,       SEN(geteuid16),                 "geteuid"               },
+[ 50] = { 0,   TC|PU|NF,       SEN(getegid16),                 "getegid"               },
 [ 51] = { 1,   TF,             SEN(acct),                      "acct"                  },
 [ 52] = { 2,   TF,             SEN(umount2),                   "umount2"               },
 [ 53] = { 0,   0,              SEN(lock),                      "lock"                  },
 [ 67] = { 3,   TS,             SEN(sigaction),                 "sigaction"             },
 [ 68] = { 0,   TS,             SEN(sgetmask),                  "sgetmask"              },
 [ 69] = { 1,   TS,             SEN(ssetmask),                  "ssetmask"              },
-[ 70] = { 2,   0,              SEN(setreuid16),                "setreuid"              },
-[ 71] = { 2,   0,              SEN(setregid16),                "setregid"              },
+[ 70] = { 2,   TC,             SEN(setreuid16),                "setreuid"              },
+[ 71] = { 2,   TC,             SEN(setregid16),                "setregid"              },
 [ 72] = { 3,   TS,             SEN(sigsuspend),                "sigsuspend"            },
 [ 73] = { 1,   TS,             SEN(sigpending),                "sigpending"            },
 [ 74] = { 2,   0,              SEN(sethostname),               "sethostname"           },
 [ 75] = { 2,   0,              SEN(setrlimit),                 "setrlimit"             },
 [ 76] = { 2,   0,              SEN(getrlimit),                 "getrlimit"             },
 [ 77] = { 2,   0,              SEN(getrusage),                 "getrusage"             },
-[ 78] = { 2,   0,              SEN(gettimeofday),              "gettimeofday"          },
-[ 79] = { 2,   0,              SEN(settimeofday),              "settimeofday"          },
-[ 80] = { 2,   0,              SEN(getgroups16),               "getgroups"             },
-[ 81] = { 2,   0,              SEN(setgroups16),               "setgroups"             },
+[ 78] = { 2,   TCL,            SEN(gettimeofday),              "gettimeofday"          },
+[ 79] = { 2,   TCL,            SEN(settimeofday),              "settimeofday"          },
+[ 80] = { 2,   TC,             SEN(getgroups16),               "getgroups"             },
+[ 81] = { 2,   TC,             SEN(setgroups16),               "setgroups"             },
 [ 82] = { 1,   TD,             SEN(oldselect),                 "select"                },
 [ 83] = { 2,   TF,             SEN(symlink),                   "symlink"               },
 [ 84] = { 2,   TF|TLST|TSTA,   SEN(oldlstat),                  "oldlstat"              },
 [ 99] = { 2,   TF|TSF|TSFA,    SEN(statfs),                    "statfs"                },
 [100] = { 2,   TD|TFSF|TSFA,   SEN(fstatfs),                   "fstatfs"               },
 [101] = { 3,   0,              SEN(ioperm),                    "ioperm"                },
-[102] = { 2,   TD,             SEN(socketcall),                "socketcall"            },
+[102] = { 2,   TD|TSD,         SEN(socketcall),                "socketcall"            },
 [103] = { 3,   0,              SEN(syslog),                    "syslog"                },
 [104] = { 3,   0,              SEN(setitimer),                 "setitimer"             },
 [105] = { 2,   0,              SEN(getitimer),                 "getitimer"             },
 [114] = { 4,   TP,             SEN(wait4),                     "wait4"                 },
 [115] = { 1,   TF,             SEN(swapoff),                   "swapoff"               },
 [116] = { 1,   0,              SEN(sysinfo),                   "sysinfo"               },
-[117] = { 6,   TI,             SEN(ipc),                       "ipc"                   },
+[117] = { 6,   TI|TSD,         SEN(ipc),                       "ipc"                   },
 [118] = { 1,   TD,             SEN(fsync),                     "fsync"                 },
 [119] = { 0,   TS,             SEN(sigreturn),                 "sigreturn"             },
 [120] = { 5,   TP,             SEN(clone),                     "clone"                 },
 [121] = { 2,   0,              SEN(setdomainname),             "setdomainname"         },
 [122] = { 1,   0,              SEN(uname),                     "uname"                 },
 [123] = { 3,   0,              SEN(modify_ldt),                "modify_ldt"            },
-[124] = { 1,   0,              SEN(adjtimex32),                "adjtimex"              },
+[124] = { 1,   TCL,            SEN(adjtimex32),                "adjtimex"              },
 [125] = { 3,   TM|SI,          SEN(mprotect),                  "mprotect"              },
 [126] = { 3,   TS,             SEN(sigprocmask),               "sigprocmask"           },
 [127] = { 2,   0,              SEN(create_module),             "create_module"         },
 [135] = { 3,   0,              SEN(sysfs),                     "sysfs"                 },
 [136] = { 1,   NF,             SEN(personality),               "personality"           },
 [137] = { 5,   0,              SEN(afs_syscall),               "afs_syscall"           },
-[138] = { 1,   NF,             SEN(setfsuid16),                "setfsuid"              },
-[139] = { 1,   NF,             SEN(setfsgid16),                "setfsgid"              },
+[138] = { 1,   TC|NF,          SEN(setfsuid16),                "setfsuid"              },
+[139] = { 1,   TC|NF,          SEN(setfsgid16),                "setfsgid"              },
 [140] = { 5,   TD,             SEN(llseek),                    "_llseek"               },
 [141] = { 3,   TD,             SEN(getdents),                  "getdents"              },
 [142] = { 5,   TD,             SEN(select),                    "_newselect"            },
 [161] = { 2,   0,              SEN(sched_rr_get_interval_time32),"sched_rr_get_interval"},
 [162] = { 2,   0,              SEN(nanosleep_time32),          "nanosleep"             },
 [163] = { 5,   TM|SI,          SEN(mremap),                    "mremap"                },
-[164] = { 3,   0,              SEN(setresuid16),               "setresuid"             },
-[165] = { 3,   0,              SEN(getresuid16),               "getresuid"             },
+[164] = { 3,   TC,             SEN(setresuid16),               "setresuid"             },
+[165] = { 3,   TC,             SEN(getresuid16),               "getresuid"             },
 [166] = { 5,   0,              SEN(vm86),                      "vm86"                  },
 [167] = { 5,   0,              SEN(query_module),              "query_module"          },
 [168] = { 3,   TD,             SEN(poll_time32),               "poll"                  },
 [169] = { 3,   0,              SEN(nfsservctl),                "nfsservctl"            },
-[170] = { 3,   0,              SEN(setresgid16),               "setresgid"             },
-[171] = { 3,   0,              SEN(getresgid16),               "getresgid"             },
-[172] = { 5,   0,              SEN(prctl),                     "prctl"                 },
+[170] = { 3,   TC,             SEN(setresgid16),               "setresgid"             },
+[171] = { 3,   TC,             SEN(getresgid16),               "getresgid"             },
+[172] = { 5,   TC,             SEN(prctl),                     "prctl"                 },
 [173] = { 0,   TS,             SEN(rt_sigreturn),              "rt_sigreturn"          },
 [174] = { 4,   TS,             SEN(rt_sigaction),              "rt_sigaction"          },
 [175] = { 4,   TS,             SEN(rt_sigprocmask),            "rt_sigprocmask"        },
 [176] = { 2,   TS,             SEN(rt_sigpending),             "rt_sigpending"         },
 [177] = { 4,   TS,             SEN(rt_sigtimedwait_time32),    "rt_sigtimedwait"       },
-[178] = { 3,   TS,             SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
+[178] = { 3,   TS|TP,          SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
 [179] = { 2,   TS,             SEN(rt_sigsuspend),             "rt_sigsuspend"         },
 [180] = { 6,   TD,             SEN(pread),                     "pread64"               },
 [181] = { 6,   TD,             SEN(pwrite),                    "pwrite64"              },
 [182] = { 3,   TF,             SEN(chown16),                   "chown"                 },
 [183] = { 2,   TF,             SEN(getcwd),                    "getcwd"                },
-[184] = { 2,   0,              SEN(capget),                    "capget"                },
-[185] = { 2,   0,              SEN(capset),                    "capset"                },
+[184] = { 2,   TC,             SEN(capget),                    "capget"                },
+[185] = { 2,   TC,             SEN(capset),                    "capset"                },
 [186] = { 2,   TS,             SEN(sigaltstack),               "sigaltstack"           },
 [187] = { 4,   TD|TN,          SEN(sendfile),                  "sendfile"              },
 [188] = { 5,   TN,             SEN(getpmsg),                   "getpmsg"               },
 [196] = { 2,   TF|TLST|TSTA,   SEN(lstat64),                   "lstat64"               },
 [197] = { 2,   TD|TFST|TSTA,   SEN(fstat64),                   "fstat64"               },
 [198] = { 3,   TF,             SEN(chown),                     "lchown32"              },
-[199] = { 0,   PU|NF,          SEN(getuid),                    "getuid32"              },
-[200] = { 0,   PU|NF,          SEN(getgid),                    "getgid32"              },
-[201] = { 0,   PU|NF,          SEN(geteuid),                   "geteuid32"             },
-[202] = { 0,   PU|NF,          SEN(geteuid),                   "getegid32"             },
-[203] = { 2,   0,              SEN(setreuid),                  "setreuid32"            },
-[204] = { 2,   0,              SEN(setregid),                  "setregid32"            },
-[205] = { 2,   0,              SEN(getgroups),                 "getgroups32"           },
-[206] = { 2,   0,              SEN(setgroups),                 "setgroups32"           },
+[199] = { 0,   TC|PU|NF,       SEN(getuid),                    "getuid32"              },
+[200] = { 0,   TC|PU|NF,       SEN(getgid),                    "getgid32"              },
+[201] = { 0,   TC|PU|NF,       SEN(geteuid),                   "geteuid32"             },
+[202] = { 0,   TC|PU|NF,       SEN(geteuid),                   "getegid32"             },
+[203] = { 2,   TC,             SEN(setreuid),                  "setreuid32"            },
+[204] = { 2,   TC,             SEN(setregid),                  "setregid32"            },
+[205] = { 2,   TC,             SEN(getgroups),                 "getgroups32"           },
+[206] = { 2,   TC,             SEN(setgroups),                 "setgroups32"           },
 [207] = { 3,   TD,             SEN(fchown),                    "fchown32"              },
-[208] = { 3,   0,              SEN(setresuid),                 "setresuid32"           },
-[209] = { 3,   0,              SEN(getresuid),                 "getresuid32"           },
-[210] = { 3,   0,              SEN(setresgid),                 "setresgid32"           },
-[211] = { 3,   0,              SEN(getresgid),                 "getresgid32"           },
+[208] = { 3,   TC,             SEN(setresuid),                 "setresuid32"           },
+[209] = { 3,   TC,             SEN(getresuid),                 "getresuid32"           },
+[210] = { 3,   TC,             SEN(setresgid),                 "setresgid32"           },
+[211] = { 3,   TC,             SEN(getresgid),                 "getresgid32"           },
 [212] = { 3,   TF,             SEN(chown),                     "chown32"               },
-[213] = { 1,   0,              SEN(setuid),                    "setuid32"              },
-[214] = { 1,   0,              SEN(setgid),                    "setgid32"              },
-[215] = { 1,   NF,             SEN(setfsuid),                  "setfsuid32"            },
-[216] = { 1,   NF,             SEN(setfsgid),                  "setfsgid32"            },
+[213] = { 1,   TC,             SEN(setuid),                    "setuid32"              },
+[214] = { 1,   TC,             SEN(setgid),                    "setgid32"              },
+[215] = { 1,   TC|NF,          SEN(setfsuid),                  "setfsuid32"            },
+[216] = { 1,   TC|NF,          SEN(setfsgid),                  "setfsgid32"            },
 [217] = { 3,   TD,             SEN(getdents64),                "getdents64"            },
 [218] = { 2,   TF,             SEN(pivotroot),                 "pivot_root"            },
 [219] = { 3,   TM,             SEN(mincore),                   "mincore"               },
 [235] = { 2,   TF,             SEN(removexattr),               "removexattr"           },
 [236] = { 2,   TF,             SEN(removexattr),               "lremovexattr"          },
 [237] = { 2,   TD,             SEN(fremovexattr),              "fremovexattr"          },
-[238] = { 2,   TS,             SEN(kill),                      "tkill"                 },
+[238] = { 2,   TS|TP,          SEN(tkill),                     "tkill"                 },
 [239] = { 4,   TD|TN,          SEN(sendfile64),                "sendfile64"            },
 [240] = { 6,   0,              SEN(futex_time32),              "futex"                 },
 [241] = { 3,   0,              SEN(sched_setaffinity),         "sched_setaffinity"     },
 [259] = { 2,   0,              SEN(timer_gettime32),           "timer_gettime"         },
 [260] = { 1,   0,              SEN(timer_getoverrun),          "timer_getoverrun"      },
 [261] = { 1,   0,              SEN(timer_delete),              "timer_delete"          },
-[262] = { 2,   0,              SEN(clock_settime32),           "clock_settime"         },
-[263] = { 2,   0,              SEN(clock_gettime32),           "clock_gettime"         },
-[264] = { 2,   0,              SEN(clock_getres_time32),       "clock_getres"          },
+[262] = { 2,   TCL,            SEN(clock_settime32),           "clock_settime"         },
+[263] = { 2,   TCL,            SEN(clock_gettime32),           "clock_gettime"         },
+[264] = { 2,   TCL,            SEN(clock_getres_time32),       "clock_getres"          },
 [265] = { 4,   0,              SEN(clock_nanosleep_time32),    "clock_nanosleep"       },
 [266] = { 3,   TF|TSF|TSFA,    SEN(statfs64),                  "statfs64"              },
 [267] = { 3,   TD|TFSF|TSFA,   SEN(fstatfs64),                 "fstatfs64"             },
-[268] = { 3,   TS,             SEN(tgkill),                    "tgkill"                },
+[268] = { 3,   TS|TP,          SEN(tgkill),                    "tgkill"                },
 [269] = { 2,   TF,             SEN(utimes),                    "utimes"                },
 [270] = { 6,   TD,             SEN(fadvise64_64),              "fadvise64_64"          },
 [271] = { 3,   0,              SEN(printargs),                 "pciconfig_iobase"      },
 [334] = { 3,   TD|TF,          SEN(faccessat),                 "faccessat"             },
 [335] = { 6,   TD,             SEN(pselect6_time32),           "pselect6"              },
 [336] = { 5,   TD,             SEN(ppoll_time32),              "ppoll"                 },
-[337] = { 1,   TP,             SEN(unshare),                   "unshare"               },
+[337] = { 1,   0,              SEN(unshare),                   "unshare"               },
 [338] = { 2,   0,              SEN(set_robust_list),           "set_robust_list"       },
 [339] = { 3,   0,              SEN(get_robust_list),           "get_robust_list"       },
 [340] = { 6,   TD,             SEN(splice),                    "splice"                },
 [369] = { 4,   0,              SEN(prlimit64),                 "prlimit64"             },
 [370] = { 5,   TD|TF,          SEN(name_to_handle_at),         "name_to_handle_at"     },
 [371] = { 3,   TD,             SEN(open_by_handle_at),         "open_by_handle_at"     },
-[372] = { 2,   0,              SEN(clock_adjtime32),           "clock_adjtime"         },
+[372] = { 2,   TCL,            SEN(clock_adjtime32),           "clock_adjtime"         },
 [373] = { 1,   TD,             SEN(syncfs),                    "syncfs"                },
 [374] = { 4,   TN,             SEN(sendmmsg),                  "sendmmsg"              },
 [375] = { 2,   TD,             SEN(setns),                     "setns"                 },
 [384] = { 3,   0,              SEN(getrandom),                 "getrandom"             },
 [385] = { 2,   TD,             SEN(memfd_create),              "memfd_create"          },
 [386] = { 3,   TD,             SEN(bpf),                       "bpf"                   },
-[387] = { 5,   TD|TF|TP|SE|SI, SEN(execveat),                  "execveat"              },
+[387] = { 5,   TD|TF|TP|TSD|SE|SI,     SEN(execveat),                  "execveat"              },
 [388] = { 1,   TD,             SEN(userfaultfd),               "userfaultfd"           },
 [389] = { 2,   0,              SEN(membarrier),                "membarrier"            },
 [390] = { 3,   TM,             SEN(mlock2),                    "mlock2"                },
 [394] = { 4,   TM|SI,          SEN(pkey_mprotect),             "pkey_mprotect"         },
 [395] = { 2,   0,              SEN(pkey_alloc),                "pkey_alloc"            },
 [396] = { 1,   0,              SEN(pkey_free),                 "pkey_free"             },
-[397] = { 5,   TD|TF|TSTA,     SEN(statx),                     "statx"                 },
+[397] = { 5,   TD|TF|TFST|TSTA,SEN(statx),                     "statx"                 },
 [398] = { 4,   0,              SEN(rseq),                      "rseq"                  },
 [399] = { 6,   0,              SEN(io_pgetevents_time32),      "io_pgetevents"         },
 [400] = { 4,   TM,             SEN(migrate_pages),             "migrate_pages"         },
 [401] = { 5,   TD,             SEN(kexec_file_load),           "kexec_file_load"       },
 /* [402] - unused */
-[403] = { 2,   0,              SEN(clock_gettime64),           "clock_gettime64"       },
-[404] = { 2,   0,              SEN(clock_settime64),           "clock_settime64"       },
-[405] = { 2,   0,              SEN(clock_adjtime64),           "clock_adjtime64"       },
-[406] = { 2,   0,              SEN(clock_getres_time64),       "clock_getres_time64"   },
-[407] = { 4,   0,              SEN(clock_nanosleep_time64),    "clock_nanosleep_time64"},
-[408] = { 2,   0,              SEN(timer_gettime64),           "timer_gettime64"       },
-[409] = { 4,   0,              SEN(timer_settime64),           "timer_settime64"       },
-[410] = { 2,   TD,             SEN(timerfd_gettime64),         "timerfd_gettime64"     },
-[411] = { 4,   TD,             SEN(timerfd_settime64),         "timerfd_settime64"     },
-[412] = { 4,   TD|TF,          SEN(utimensat_time64),          "utimensat_time64"      },
-[413] = { 6,   TD,             SEN(pselect6_time64),           "pselect6_time64"       },
-[414] = { 5,   TD,             SEN(ppoll_time64),              "ppoll_time64"          },
-[416] = { 6,   0,              SEN(io_pgetevents_time64),      "io_pgetevents_time64"  },
-[417] = { 5,   TN,             SEN(recvmmsg_time64),           "recvmmsg_time64"       },
-[418] = { 5,   TD,             SEN(mq_timedsend_time64),       "mq_timedsend_time64"   },
-[419] = { 5,   TD,             SEN(mq_timedreceive_time64),    "mq_timedreceive_time64"},
-[420] = { 4,   TI,             SEN(semtimedop_time64),         "semtimedop_time64"     },
-[421] = { 4,   TS,             SEN(rt_sigtimedwait_time64),    "rt_sigtimedwait_time64"},
-[422] = { 6,   0,              SEN(futex_time64),              "futex_time64"          },
-[423] = { 2,   0,              SEN(sched_rr_get_interval_time64),      "sched_rr_get_interval_time64"  },
-[424] = { 4,   TD|TS,          SEN(pidfd_send_signal),         "pidfd_send_signal"     },
-[425] = { 2,   TD,             SEN(io_uring_setup),            "io_uring_setup"        },
-[426] = { 6,   TD|TS,          SEN(io_uring_enter),            "io_uring_enter"        },
-[427] = { 4,   TD|TM,          SEN(io_uring_register),         "io_uring_register"     },
+#include "syscallent-common-32.h"
+#include "syscallent-common.h"
 
 #ifdef __ARM_EABI__
 # define ARM_FIRST_SHUFFLED_SYSCALL 500
index da218f4a7e6641f708ae06f6c1efb60d8de5da63..77dd9477ade624a2755d2ff77575cfe0fc63e195 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -8,6 +8,8 @@
 static int
 arch_set_scno(struct tcb *tcp, kernel_ulong_t scno)
 {
+       if (ptrace_syscall_info_is_valid() && get_regs(tcp) < 0)
+               return -1;
        avr32_regs.r8 = scno;
        return set_regs(tcp->pid);
 }
index 81d18d6bb38ab44fa0c2de58ec9df541883ce2ec..491ff8e9f3c3f498347d01bd76234455759368ab 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2004-2009 Atmel Corporation
- * Copyright (c) 2009-2019 The strace developers.
+ * Copyright (c) 2009-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -17,9 +17,9 @@
 [  8] = { 2,   TD|TF,          SEN(creat),                     "creat"                 },
 [  9] = { 2,   TF,             SEN(link),                      "link"                  },
 [ 10] = { 1,   TF,             SEN(unlink),                    "unlink"                },
-[ 11] = { 3,   TF|TP|SE|SI,    SEN(execve),                    "execve"                },
+[ 11] = { 3,   TF|TP|TSD|SE|SI,        SEN(execve),                    "execve"                },
 [ 12] = { 1,   TF,             SEN(chdir),                     "chdir"                 },
-[ 13] = { 1,   0,              SEN(time),                      "time"                  },
+[ 13] = { 1,   TCL,            SEN(time),                      "time"                  },
 [ 14] = { 3,   TF,             SEN(mknod),                     "mknod"                 },
 [ 15] = { 2,   TF,             SEN(chmod),                     "chmod"                 },
 [ 16] = { 3,   TF,             SEN(chown),                     "chown"                 },
@@ -29,8 +29,8 @@
 [ 20] = { 0,   PU|NF,          SEN(getpid),                    "getpid"                },
 [ 21] = { 5,   TF,             SEN(mount),                     "mount"                 },
 [ 22] = { 1,   TF,             SEN(umount2),                   "umount2"               },
-[ 23] = { 1,   0,              SEN(setuid),                    "setuid"                },
-[ 24] = { 0,   PU|NF,          SEN(getuid),                    "getuid"                },
+[ 23] = { 1,   TC,             SEN(setuid),                    "setuid"                },
+[ 24] = { 0,   TC|PU|NF,       SEN(getuid),                    "getuid"                },
 [ 25] = { 1,   0,              SEN(stime),                     "stime"                 },
 [ 26] = { 4,   0,              SEN(ptrace),                    "ptrace"                },
 [ 27] = { 1,   0,              SEN(alarm),                     "alarm"                 },
@@ -43,7 +43,7 @@
 [ 34] = { 1,   TF,             SEN(chroot),                    "chroot"                },
 [ 35] = { 0,   0,              SEN(sync),                      "sync"                  },
 [ 36] = { 1,   TD,             SEN(fsync),                     "fsync"                 },
-[ 37] = { 2,   TS,             SEN(kill),                      "kill"                  },
+[ 37] = { 2,   TS|TP,          SEN(kill),                      "kill"                  },
 [ 38] = { 2,   TF,             SEN(rename),                    "rename"                },
 [ 39] = { 2,   TF,             SEN(mkdir),                     "mkdir"                 },
 [ 40] = { 1,   TF,             SEN(rmdir),                     "rmdir"                 },
 [ 43] = { 1,   0,              SEN(times),                     "times"                 },
 [ 44] = { 5,   TP,             SEN(clone),                     "clone"                 },
 [ 45] = { 1,   TM|SI,          SEN(brk),                       "brk"                   },
-[ 46] = { 1,   0,              SEN(setgid),                    "setgid"                },
-[ 47] = { 0,   PU|NF,          SEN(getgid),                    "getgid"                },
+[ 46] = { 1,   TC,             SEN(setgid),                    "setgid"                },
+[ 47] = { 0,   TC|PU|NF,       SEN(getgid),                    "getgid"                },
 [ 48] = { 2,   TF,             SEN(getcwd),                    "getcwd"                },
-[ 49] = { 0,   PU|NF,          SEN(geteuid),                   "geteuid"               },
-[ 50] = { 0,   PU|NF,          SEN(getegid),                   "getegid"               },
+[ 49] = { 0,   TC|PU|NF,       SEN(geteuid),                   "geteuid"               },
+[ 50] = { 0,   TC|PU|NF,       SEN(getegid),                   "getegid"               },
 [ 51] = { 1,   TF,             SEN(acct),                      "acct"                  },
-[ 52] = { 1,   NF,             SEN(setfsuid),                  "setfsuid"              },
-[ 53] = { 1,   NF,             SEN(setfsgid),                  "setfsgid"              },
+[ 52] = { 1,   TC|NF,          SEN(setfsuid),                  "setfsuid"              },
+[ 53] = { 1,   TC|NF,          SEN(setfsgid),                  "setfsgid"              },
 [ 54] = { 3,   TD,             SEN(ioctl),                     "ioctl"                 },
 [ 55] = { 3,   TD,             SEN(fcntl),                     "fcntl"                 },
 [ 56] = { 2,   0,              SEN(setpgid),                   "setpgid"               },
 [ 57] = { 5,   TM|SI,          SEN(mremap),                    "mremap"                },
-[ 58] = { 3,   0,              SEN(setresuid),                 "setresuid"             },
-[ 59] = { 3,   0,              SEN(getresuid),                 "getresuid"             },
-[ 60] = { 2,   0,              SEN(setreuid),                  "setreuid"              },
-[ 61] = { 2,   0,              SEN(setregid),                  "setregid"              },
+[ 58] = { 3,   TC,             SEN(setresuid),                 "setresuid"             },
+[ 59] = { 3,   TC,             SEN(getresuid),                 "getresuid"             },
+[ 60] = { 2,   TC,             SEN(setreuid),                  "setreuid"              },
+[ 61] = { 2,   TC,             SEN(setregid),                  "setregid"              },
 [ 62] = { 2,   TSFA,           SEN(ustat),                     "ustat"                 },
 [ 63] = { 2,   TD,             SEN(dup2),                      "dup2"                  },
 [ 64] = { 0,   PU|NF,          SEN(getppid),                   "getppid"               },
 [ 69] = { 4,   TS,             SEN(rt_sigprocmask),            "rt_sigprocmask"        },
 [ 70] = { 2,   TS,             SEN(rt_sigpending),             "rt_sigpending"         },
 [ 71] = { 4,   TS,             SEN(rt_sigtimedwait_time32),    "rt_sigtimedwait"       },
-[ 72] = { 3,   TS,             SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
+[ 72] = { 3,   TS|TP,          SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
 [ 73] = { 2,   TS,             SEN(rt_sigsuspend),             "rt_sigsuspend"         },
 [ 74] = { 2,   0,              SEN(sethostname),               "sethostname"           },
 [ 75] = { 2,   0,              SEN(setrlimit),                 "setrlimit"             },
 [ 76] = { 2,   0,              SEN(getrlimit),                 "getrlimit"             },
 [ 77] = { 2,   0,              SEN(getrusage),                 "getrusage"             },
-[ 78] = { 2,   0,              SEN(gettimeofday),              "gettimeofday"          },
-[ 79] = { 2,   0,              SEN(settimeofday),              "settimeofday"          },
-[ 80] = { 2,   0,              SEN(getgroups),                 "getgroups"             },
-[ 81] = { 2,   0,              SEN(setgroups),                 "setgroups"             },
+[ 78] = { 2,   TCL,            SEN(gettimeofday),              "gettimeofday"          },
+[ 79] = { 2,   TCL,            SEN(settimeofday),              "settimeofday"          },
+[ 80] = { 2,   TC,             SEN(getgroups),                 "getgroups"             },
+[ 81] = { 2,   TC,             SEN(setgroups),                 "setgroups"             },
 [ 82] = { 5,   TD,             SEN(select),                    "select"                },
 [ 83] = { 2,   TF,             SEN(symlink),                   "symlink"               },
 [ 84] = { 1,   TD,             SEN(fchdir),                    "fchdir"                },
 [105] = { 2,   0,              SEN(getitimer),                 "getitimer"             },
 [106] = { 1,   TF,             SEN(swapoff),                   "swapoff"               },
 [107] = { 1,   0,              SEN(sysinfo),                   "sysinfo"               },
-[108] = { 6,   TI,             SEN(ipc),                       "ipc"                   },
+[108] = { 6,   TI|TSD,         SEN(ipc),                       "ipc"                   },
 [109] = { 4,   TD|TN,          SEN(sendfile),                  "sendfile"              },
 [110] = { 2,   0,              SEN(setdomainname),             "setdomainname"         },
 [111] = { 1,   0,              SEN(uname),                     "uname"                 },
-[112] = { 1,   0,              SEN(adjtimex32),                "adjtimex"              },
+[112] = { 1,   TCL,            SEN(adjtimex32),                "adjtimex"              },
 [113] = { 3,   TM|SI,          SEN(mprotect),                  "mprotect"              },
 [114] = { 0,   TP,             SEN(vfork),                     "vfork"                 },
 [115] = { 3,   0,              SEN(init_module),               "init_module"           },
 [143] = { 2,   0,              SEN(nanosleep_time32),          "nanosleep"             },
 [144] = { 3,   TD,             SEN(poll_time32),               "poll"                  },
 [145] = { 3,   0,              SEN(nfsservctl),                "nfsservctl"            },
-[146] = { 3,   0,              SEN(setresgid),                 "setresgid"             },
-[147] = { 3,   0,              SEN(getresgid),                 "getresgid"             },
-[148] = { 5,   0,              SEN(prctl),                     "prctl"                 },
+[146] = { 3,   TC,             SEN(setresgid),                 "setresgid"             },
+[147] = { 3,   TC,             SEN(getresgid),                 "getresgid"             },
+[148] = { 5,   TC,             SEN(prctl),                     "prctl"                 },
 [149] = { 3,   TN,             SEN(socket),                    "socket"                },
 [150] = { 3,   TN,             SEN(bind),                      "bind"                  },
 [151] = { 3,   TN,             SEN(connect),                   "connect"               },
 [187] = { 2,   TF,             SEN(removexattr),               "removexattr"           },
 [188] = { 2,   TF,             SEN(removexattr),               "lremovexattr"          },
 [189] = { 2,   TD,             SEN(fremovexattr),              "fremovexattr"          },
-[190] = { 2,   TS,             SEN(kill),                      "tkill"                 },
+[190] = { 2,   TS|TP,          SEN(tkill),                     "tkill"                 },
 [191] = { 4,   TD|TN,          SEN(sendfile64),                "sendfile64"            },
 [192] = { 6,   0,              SEN(futex_time32),              "futex"                 },
 [193] = { 3,   0,              SEN(sched_setaffinity),         "sched_setaffinity"     },
 [194] = { 3,   0,              SEN(sched_getaffinity),         "sched_getaffinity"     },
-[195] = { 2,   0,              SEN(capget),                    "capget"                },
-[196] = { 2,   0,              SEN(capset),                    "capset"                },
+[195] = { 2,   TC,             SEN(capget),                    "capget"                },
+[196] = { 2,   TC,             SEN(capset),                    "capset"                },
 [197] = { 2,   TM,             SEN(io_setup),                  "io_setup"              },
 [198] = { 1,   TM,             SEN(io_destroy),                "io_destroy"            },
 [199] = { 5,   0,              SEN(io_getevents_time32),       "io_getevents"          },
 [212] = { 2,   0,              SEN(timer_gettime32),           "timer_gettime"         },
 [213] = { 1,   0,              SEN(timer_getoverrun),          "timer_getoverrun"      },
 [214] = { 1,   0,              SEN(timer_delete),              "timer_delete"          },
-[215] = { 2,   0,              SEN(clock_settime32),           "clock_settime"         },
-[216] = { 2,   0,              SEN(clock_gettime32),           "clock_gettime"         },
-[217] = { 2,   0,              SEN(clock_getres_time32),       "clock_getres"          },
+[215] = { 2,   TCL,            SEN(clock_settime32),           "clock_settime"         },
+[216] = { 2,   TCL,            SEN(clock_gettime32),           "clock_gettime"         },
+[217] = { 2,   TCL,            SEN(clock_getres_time32),       "clock_getres"          },
 [218] = { 4,   0,              SEN(clock_nanosleep_time32),    "clock_nanosleep"       },
 [219] = { 3,   TF|TSF|TSFA,    SEN(statfs64),                  "statfs64"              },
 [220] = { 3,   TD|TFSF|TSFA,   SEN(fstatfs64),                 "fstatfs64"             },
-[221] = { 3,   TS,             SEN(tgkill),                    "tgkill"                },
+[221] = { 3,   TS|TP,          SEN(tgkill),                    "tgkill"                },
 [222] = { },
 [223] = { 2,   TF,             SEN(utimes),                    "utimes"                },
 [224] = { 6,   TD,             SEN(fadvise64_64),              "fadvise64_64"          },
 [255] = { 3,   TD|TF,          SEN(faccessat),                 "faccessat"             },
 [256] = { 6,   TD,             SEN(pselect6_time32),           "pselect6"              },
 [257] = { 5,   TD,             SEN(ppoll_time32),              "ppoll"                 },
-[258] = { 1,   TP,             SEN(unshare),                   "unshare"               },
+[258] = { 1,   0,              SEN(unshare),                   "unshare"               },
 [259] = { 2,   0,              SEN(set_robust_list),           "set_robust_list"       },
 [260] = { 3,   0,              SEN(get_robust_list),           "get_robust_list"       },
 [261] = { 6,   TD,             SEN(splice),                    "splice"                },
 [303] = { 4,   0,              SEN(prlimit64),                 "prlimit64"             },
 [304] = { 5,   TD|TF,          SEN(name_to_handle_at),         "name_to_handle_at"     },
 [305] = { 3,   TD,             SEN(open_by_handle_at),         "open_by_handle_at"     },
-[306] = { 2,   0,              SEN(clock_adjtime32),           "clock_adjtime"         },
+[306] = { 2,   TCL,            SEN(clock_adjtime32),           "clock_adjtime"         },
 [307] = { 1,   TD,             SEN(syncfs),                    "syncfs"                },
 [308] = { 4,   TN,             SEN(sendmmsg),                  "sendmmsg"              },
 [309] = { 6,   0,              SEN(process_vm_readv),          "process_vm_readv"      },
 [317] = { 3,   0,              SEN(getrandom),                 "getrandom"             },
 [318] = { 2,   TD,             SEN(memfd_create),              "memfd_create"          },
 [319] = { 3,   TD,             SEN(bpf),                       "bpf"                   },
-[320] = { 5,   TD|TF|TP|SE|SI, SEN(execveat),                  "execveat"              },
+[320] = { 5,   TD|TF|TP|TSD|SE|SI,     SEN(execveat),                  "execveat"              },
 [321] = { 4,   TN,             SEN(accept4),                   "accept4"               },
 [322] = { 1,   TD,             SEN(userfaultfd),               "userfaultfd"           },
 [323] = { 2,   0,              SEN(membarrier),                "membarrier"            },
index 8a3209d1d992bede088dd56e97419963bf9e3918..53d5c235dca21ac281e134343138eaf59ec128c8 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 1993 Branko Lankester <branko@hacktic.nl>
  * Copyright (c) 1993, 1994, 1995 Rick Sladkey <jrs@world.std.com>
- * Copyright (c) 1995-2019 The strace developers.
+ * Copyright (c) 1995-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -18,9 +18,9 @@
 [  8] = { 2,   TD|TF,          SEN(creat),                     "creat"                 },
 [  9] = { 2,   TF,             SEN(link),                      "link"                  },
 [ 10] = { 1,   TF,             SEN(unlink),                    "unlink"                },
-[ 11] = { 3,   TF|TP|SE|SI,    SEN(execve),                    "execve"                },
+[ 11] = { 3,   TF|TP|TSD|SE|SI,        SEN(execve),                    "execve"                },
 [ 12] = { 1,   TF,             SEN(chdir),                     "chdir"                 },
-[ 13] = { 1,   0,              SEN(time),                      "time"                  },
+[ 13] = { 1,   TCL,            SEN(time),                      "time"                  },
 [ 14] = { 3,   TF,             SEN(mknod),                     "mknod"                 },
 [ 15] = { 2,   TF,             SEN(chmod),                     "chmod"                 },
 [ 16] = { 3,   TF,             SEN(chown16),                   "chown"                 },
@@ -30,8 +30,8 @@
 [ 20] = { 0,   PU|NF,          SEN(getpid),                    "getpid"                },
 [ 21] = { 5,   TF,             SEN(mount),                     "mount"                 },
 [ 22] = { 1,   TF,             SEN(umount),                    "umount"                },
-[ 23] = { 1,   0,              SEN(setuid16),                  "setuid"                },
-[ 24] = { 0,   PU|NF,          SEN(getuid16),                  "getuid"                },
+[ 23] = { 1,   TC,             SEN(setuid16),                  "setuid"                },
+[ 24] = { 0,   TC|PU|NF,       SEN(getuid16),                  "getuid"                },
 [ 25] = { 1,   0,              SEN(stime),                     "stime"                 },
 [ 26] = { 4,   0,              SEN(ptrace),                    "ptrace"                },
 [ 27] = { 1,   0,              SEN(alarm),                     "alarm"                 },
@@ -44,7 +44,7 @@
 [ 34] = { 1,   0,              SEN(nice),                      "nice"                  },
 [ 35] = { 0,   0,              SEN(ftime),                     "ftime"                 },
 [ 36] = { 0,   0,              SEN(sync),                      "sync"                  },
-[ 37] = { 2,   TS,             SEN(kill),                      "kill"                  },
+[ 37] = { 2,   TS|TP,          SEN(kill),                      "kill"                  },
 [ 38] = { 2,   TF,             SEN(rename),                    "rename"                },
 [ 39] = { 2,   TF,             SEN(mkdir),                     "mkdir"                 },
 [ 40] = { 1,   TF,             SEN(rmdir),                     "rmdir"                 },
 [ 43] = { 1,   0,              SEN(times),                     "times"                 },
 [ 44] = { 0,   0,              SEN(prof),                      "prof"                  },
 [ 45] = { 1,   TM|SI,          SEN(brk),                       "brk"                   },
-[ 46] = { 1,   0,              SEN(setgid16),                  "setgid"                },
-[ 47] = { 0,   PU|NF,          SEN(getgid16),                  "getgid"                },
+[ 46] = { 1,   TC,             SEN(setgid16),                  "setgid"                },
+[ 47] = { 0,   TC|PU|NF,       SEN(getgid16),                  "getgid"                },
 [ 48] = { 2,   TS,             SEN(signal),                    "signal"                },
-[ 49] = { 0,   PU|NF,          SEN(geteuid16),                 "geteuid"               },
-[ 50] = { 0,   PU|NF,          SEN(getegid16),                 "getegid"               },
+[ 49] = { 0,   TC|PU|NF,       SEN(geteuid16),                 "geteuid"               },
+[ 50] = { 0,   TC|PU|NF,       SEN(getegid16),                 "getegid"               },
 [ 51] = { 1,   TF,             SEN(acct),                      "acct"                  },
 [ 52] = { 2,   TF,             SEN(umount2),                   "umount2"               },
 [ 53] = { 0,   0,              SEN(lock),                      "lock"                  },
 [ 67] = { 3,   TS,             SEN(sigaction),                 "sigaction"             },
 [ 68] = { 0,   TS,             SEN(sgetmask),                  "sgetmask"              },
 [ 69] = { 1,   TS,             SEN(ssetmask),                  "ssetmask"              },
-[ 70] = { 2,   0,              SEN(setreuid16),                "setreuid"              },
-[ 71] = { 2,   0,              SEN(setregid16),                "setregid"              },
+[ 70] = { 2,   TC,             SEN(setreuid16),                "setreuid"              },
+[ 71] = { 2,   TC,             SEN(setregid16),                "setregid"              },
 [ 72] = { 3,   TS,             SEN(sigsuspend),                "sigsuspend"            },
 [ 73] = { 1,   TS,             SEN(sigpending),                "sigpending"            },
 [ 74] = { 2,   0,              SEN(sethostname),               "sethostname"           },
 [ 75] = { 2,   0,              SEN(setrlimit),                 "setrlimit"             },
 [ 76] = { 2,   0,              SEN(getrlimit),                 "old_getrlimit"         },
 [ 77] = { 2,   0,              SEN(getrusage),                 "getrusage"             },
-[ 78] = { 2,   0,              SEN(gettimeofday),              "gettimeofday"          },
-[ 79] = { 2,   0,              SEN(settimeofday),              "settimeofday"          },
-[ 80] = { 2,   0,              SEN(getgroups16),               "getgroups"             },
-[ 81] = { 2,   0,              SEN(setgroups16),               "setgroups"             },
+[ 78] = { 2,   TCL,            SEN(gettimeofday),              "gettimeofday"          },
+[ 79] = { 2,   TCL,            SEN(settimeofday),              "settimeofday"          },
+[ 80] = { 2,   TC,             SEN(getgroups16),               "getgroups"             },
+[ 81] = { 2,   TC,             SEN(setgroups16),               "setgroups"             },
 [ 82] = { 1,   TD,             SEN(oldselect),                 "select"                },
 [ 83] = { 2,   TF,             SEN(symlink),                   "symlink"               },
 [ 84] = { 2,   TF|TLST|TSTA,   SEN(oldlstat),                  "oldlstat"              },
 [ 99] = { 2,   TF|TSF|TSFA,    SEN(statfs),                    "statfs"                },
 [100] = { 2,   TD|TFSF|TSFA,   SEN(fstatfs),                   "fstatfs"               },
 [101] = { 3,   0,              SEN(ioperm),                    "ioperm"                },
-[102] = { 2,   TD,             SEN(socketcall),                "socketcall"            },
+[102] = { 2,   TD|TSD,         SEN(socketcall),                "socketcall"            },
 [103] = { 3,   0,              SEN(syslog),                    "syslog"                },
 [104] = { 3,   0,              SEN(setitimer),                 "setitimer"             },
 [105] = { 2,   0,              SEN(getitimer),                 "getitimer"             },
 [114] = { 4,   TP,             SEN(wait4),                     "wait4"                 },
 [115] = { 1,   TF,             SEN(swapoff),                   "swapoff"               },
 [116] = { 1,   0,              SEN(sysinfo),                   "sysinfo"               },
-[117] = { 6,   TI,             SEN(ipc),                       "ipc"                   },
+[117] = { 6,   TI|TSD,         SEN(ipc),                       "ipc"                   },
 [118] = { 1,   TD,             SEN(fsync),                     "fsync"                 },
 [119] = { 0,   TS,             SEN(sigreturn),                 "sigreturn"             },
 [120] = { 5,   TP,             SEN(clone),                     "clone"                 },
 [121] = { 2,   0,              SEN(setdomainname),             "setdomainname"         },
 [122] = { 1,   0,              SEN(uname),                     "uname"                 },
 [123] = { 3,   0,              SEN(modify_ldt),                "modify_ldt"            },
-[124] = { 1,   0,              SEN(adjtimex32),                "adjtimex"              },
+[124] = { 1,   TCL,            SEN(adjtimex32),                "adjtimex"              },
 [125] = { 3,   TM|SI,          SEN(mprotect),                  "mprotect"              },
 [126] = { 3,   TS,             SEN(sigprocmask),               "sigprocmask"           },
 [127] = { 2,   0,              SEN(create_module),             "create_module"         },
 [135] = { 3,   0,              SEN(sysfs),                     "sysfs"                 },
 [136] = { 1,   NF,             SEN(personality),               "personality"           },
 [137] = { 5,   0,              SEN(afs_syscall),               "afs_syscall"           },
-[138] = { 1,   NF,             SEN(setfsuid16),                "setfsuid"              },
-[139] = { 1,   NF,             SEN(setfsgid16),                "setfsgid"              },
+[138] = { 1,   TC|NF,          SEN(setfsuid16),                "setfsuid"              },
+[139] = { 1,   TC|NF,          SEN(setfsgid16),                "setfsgid"              },
 [140] = { 5,   TD,             SEN(llseek),                    "_llseek"               },
 [141] = { 3,   TD,             SEN(getdents),                  "getdents"              },
 [142] = { 5,   TD,             SEN(select),                    "_newselect"            },
 [161] = { 2,   0,              SEN(sched_rr_get_interval_time32),"sched_rr_get_interval"},
 [162] = { 2,   0,              SEN(nanosleep_time32),          "nanosleep"             },
 [163] = { 5,   TM|SI,          SEN(mremap),                    "mremap"                },
-[164] = { 3,   0,              SEN(setresuid16),               "setresuid"             },
-[165] = { 3,   0,              SEN(getresuid16),               "getresuid"             },
+[164] = { 3,   TC,             SEN(setresuid16),               "setresuid"             },
+[165] = { 3,   TC,             SEN(getresuid16),               "getresuid"             },
 [166] = { 5,   0,              SEN(vm86),                      "vm86"                  },
 [167] = { 5,   0,              SEN(query_module),              "query_module"          },
 [168] = { 3,   TD,             SEN(poll_time32),               "poll"                  },
 [169] = { 3,   0,              SEN(nfsservctl),                "nfsservctl"            },
-[170] = { 3,   0,              SEN(setresgid16),               "setresgid"             },
-[171] = { 3,   0,              SEN(getresgid16),               "getresgid"             },
-[172] = { 5,   0,              SEN(prctl),                     "prctl"                 },
+[170] = { 3,   TC,             SEN(setresgid16),               "setresgid"             },
+[171] = { 3,   TC,             SEN(getresgid16),               "getresgid"             },
+[172] = { 5,   TC,             SEN(prctl),                     "prctl"                 },
 [173] = { 0,   TS,             SEN(rt_sigreturn),              "rt_sigreturn"          },
 [174] = { 4,   TS,             SEN(rt_sigaction),              "rt_sigaction"          },
 [175] = { 4,   TS,             SEN(rt_sigprocmask),            "rt_sigprocmask"        },
 [176] = { 2,   TS,             SEN(rt_sigpending),             "rt_sigpending"         },
 [177] = { 4,   TS,             SEN(rt_sigtimedwait_time32),    "rt_sigtimedwait"       },
-[178] = { 3,   TS,             SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
+[178] = { 3,   TS|TP,          SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
 [179] = { 2,   TS,             SEN(rt_sigsuspend),             "rt_sigsuspend"         },
 [180] = { 5,   TD,             SEN(pread),                     "pread"                 },
 [181] = { 5,   TD,             SEN(pwrite),                    "pwrite"                },
 [182] = { 3,   TF,             SEN(chown16),                   "lchown"                },
 [183] = { 2,   TF,             SEN(getcwd),                    "getcwd"                },
-[184] = { 2,   0,              SEN(capget),                    "capget"                },
-[185] = { 2,   0,              SEN(capset),                    "capset"                },
+[184] = { 2,   TC,             SEN(capget),                    "capget"                },
+[185] = { 2,   TC,             SEN(capset),                    "capset"                },
 [186] = { 2,   TS,             SEN(sigaltstack),               "sigaltstack"           },
 [187] = { 4,   TD|TN,          SEN(sendfile),                  "sendfile"              },
 [188] = { 5,   TN,             SEN(getpmsg),                   "getpmsg"               },
 [196] = { 2,   TF|TLST|TSTA,   SEN(lstat64),                   "lstat64"               },
 [197] = { 2,   TD|TFST|TSTA,   SEN(fstat64),                   "fstat64"               },
 [198] = { 3,   TF,             SEN(chown),                     "chown32"               },
-[199] = { 0,   PU|NF,          SEN(getuid),                    "getuid32"              },
-[200] = { 0,   PU|NF,          SEN(getgid),                    "getgid32"              },
-[201] = { 0,   PU|NF,          SEN(geteuid),                   "geteuid32"             },
-[202] = { 0,   PU|NF,          SEN(geteuid),                   "getegid32"             },
-[203] = { 2,   0,              SEN(setreuid),                  "setreuid32"            },
-[204] = { 2,   0,              SEN(setregid),                  "setregid32"            },
-[205] = { 2,   0,              SEN(getgroups),                 "getgroups32"           },
-[206] = { 2,   0,              SEN(setgroups),                 "setgroups32"           },
+[199] = { 0,   TC|PU|NF,       SEN(getuid),                    "getuid32"              },
+[200] = { 0,   TC|PU|NF,       SEN(getgid),                    "getgid32"              },
+[201] = { 0,   TC|PU|NF,       SEN(geteuid),                   "geteuid32"             },
+[202] = { 0,   TC|PU|NF,       SEN(geteuid),                   "getegid32"             },
+[203] = { 2,   TC,             SEN(setreuid),                  "setreuid32"            },
+[204] = { 2,   TC,             SEN(setregid),                  "setregid32"            },
+[205] = { 2,   TC,             SEN(getgroups),                 "getgroups32"           },
+[206] = { 2,   TC,             SEN(setgroups),                 "setgroups32"           },
 [207] = { 3,   TD,             SEN(fchown),                    "fchown32"              },
-[208] = { 3,   0,              SEN(setresuid),                 "setresuid32"           },
-[209] = { 3,   0,              SEN(getresuid),                 "getresuid32"           },
-[210] = { 3,   0,              SEN(setresgid),                 "setresgid32"           },
-[211] = { 3,   0,              SEN(getresgid),                 "getresgid32"           },
+[208] = { 3,   TC,             SEN(setresuid),                 "setresuid32"           },
+[209] = { 3,   TC,             SEN(getresuid),                 "getresuid32"           },
+[210] = { 3,   TC,             SEN(setresgid),                 "setresgid32"           },
+[211] = { 3,   TC,             SEN(getresgid),                 "getresgid32"           },
 [212] = { 3,   TF,             SEN(chown),                     "lchown32"              },
-[213] = { 1,   0,              SEN(setuid),                    "setuid32"              },
-[214] = { 1,   0,              SEN(setgid),                    "setgid32"              },
-[215] = { 1,   NF,             SEN(setfsuid),                  "setfsuid32"            },
-[216] = { 1,   NF,             SEN(setfsgid),                  "setfsgid32"            },
+[213] = { 1,   TC,             SEN(setuid),                    "setuid32"              },
+[214] = { 1,   TC,             SEN(setgid),                    "setgid32"              },
+[215] = { 1,   TC|NF,          SEN(setfsuid),                  "setfsuid32"            },
+[216] = { 1,   TC|NF,          SEN(setfsgid),                  "setfsgid32"            },
 [217] = { 2,   TF,             SEN(pivotroot),                 "pivot_root"            },
 [218] = { 3,   TM,             SEN(mincore),                   "mincore"               },
 [219] = { 3,   TM,             SEN(madvise),                   "madvise"               },
 [235] = { 2,   TF,             SEN(removexattr),               "removexattr"           },
 [236] = { 2,   TF,             SEN(removexattr),               "lremovexattr"          },
 [237] = { 2,   TD,             SEN(fremovexattr),              "fremovexattr"          },
-[238] = { 2,   TS,             SEN(kill),                      "tkill"                 },
+[238] = { 2,   TS|TP,          SEN(tkill),                     "tkill"                 },
 [239] = { 4,   TD|TN,          SEN(sendfile64),                "sendfile64"            },
 [240] = { 6,   0,              SEN(futex_time32),              "futex"                 },
 [241] = { 3,   0,              SEN(sched_setaffinity),         "sched_setaffinity"     },
 [262] = { 2,   0,              SEN(timer_gettime32),           "timer_gettime"         },
 [263] = { 1,   0,              SEN(timer_getoverrun),          "timer_getoverrun"      },
 [264] = { 1,   0,              SEN(timer_delete),              "timer_delete"          },
-[265] = { 2,   0,              SEN(clock_settime32),           "clock_settime"         },
-[266] = { 2,   0,              SEN(clock_gettime32),           "clock_gettime"         },
-[267] = { 2,   0,              SEN(clock_getres_time32),       "clock_getres"          },
+[265] = { 2,   TCL,            SEN(clock_settime32),           "clock_settime"         },
+[266] = { 2,   TCL,            SEN(clock_gettime32),           "clock_gettime"         },
+[267] = { 2,   TCL,            SEN(clock_getres_time32),       "clock_getres"          },
 [268] = { 4,   0,              SEN(clock_nanosleep_time32),    "clock_nanosleep"       },
 [269] = { 3,   TF|TSF|TSFA,    SEN(statfs64),                  "statfs64"              },
 [270] = { 3,   TD|TFSF|TSFA,   SEN(fstatfs64),                 "fstatfs64"             },
-[271] = { 3,   TS,             SEN(tgkill),                    "tgkill"                },
+[271] = { 3,   TS|TP,          SEN(tgkill),                    "tgkill"                },
 [272] = { 2,   TF,             SEN(utimes),                    "utimes"                },
 [273] = { 6,   TD,             SEN(fadvise64_64),              "fadvise64_64"          },
 [274] = { 5,   0,              SEN(vserver),                   "vserver"               },
 [307] = { 3,   TD|TF,          SEN(faccessat),                 "faccessat"             },
 [308] = { 6,   TD,             SEN(pselect6_time32),           "pselect6"              },
 [309] = { 5,   TD,             SEN(ppoll_time32),              "ppoll"                 },
-[310] = { 1,   TP,             SEN(unshare),                   "unshare"               },
+[310] = { 1,   0,              SEN(unshare),                   "unshare"               },
 [311] = { 2,   0,              SEN(sram_alloc),                "sram_alloc"            },
 [312] = { 1,   0,              SEN(printargs),                 "sram_free"             },
 [313] = { 3,   0,              SEN(printargs),                 "dma_memcpy"            },
 [374] = { 3,   0,              SEN(cacheflush),                "cacheflush"            },
 [375] = { 5,   TD|TF,          SEN(name_to_handle_at),         "name_to_handle_at"     },
 [376] = { 3,   TD,             SEN(open_by_handle_at),         "open_by_handle_at"     },
-[377] = { 2,   0,              SEN(clock_adjtime32),           "clock_adjtime"         },
+[377] = { 2,   TCL,            SEN(clock_adjtime32),           "clock_adjtime"         },
 [378] = { 1,   TD,             SEN(syncfs),                    "syncfs"                },
 [379] = { 2,   TD,             SEN(setns),                     "setns"                 },
 [380] = { 4,   TN,             SEN(sendmmsg),                  "sendmmsg"              },
 [389] = { 3,   0,              SEN(getrandom),                 "getrandom"             },
 [390] = { 2,   TD,             SEN(memfd_create),              "memfd_create"          },
 [391] = { 3,   TD,             SEN(bpf),                       "bpf"                   },
-[392] = { 5,   TD|TF|TP|SE|SI, SEN(execveat),                  "execveat"              },
+[392] = { 5,   TD|TF|TP|TSD|SE|SI,     SEN(execveat),                  "execveat"              },
index 9efb20208c37c57716955401fb7ca47812e97ca7..bfc8619f80fd73c3d09f7831de0a8b4ac5c4791c 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2019 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -12,7 +12,7 @@ arch_get_scno(struct tcb *tcp)
 #if defined(__CSKYABIV2__)
        tcp->scno = csky_regs.regs[3];
 #else
-       tcp->scno = csky_regs.r1;
+       tcp->scno = csky_regs.a1;
 #endif
        return 1;
 }
index aad0abdc53c157d9edf7e1b0c7f1a021e25b17c8..0ffb83ca290f5526868d751dcf49301f0629ec2a 100644 (file)
@@ -6,18 +6,18 @@
  */
 
 #ifndef STRACE_RAW_SYSCALL_H
-#define STRACE_RAW_SYSCALL_H
+# define STRACE_RAW_SYSCALL_H
 
 # include "kernel_types.h"
 
 static inline kernel_ulong_t
 raw_syscall_0(const kernel_ulong_t nr, kernel_ulong_t *err)
 {
-#if defined(__CSKYABIV2__)
+# if defined(__CSKYABIV2__)
        register kernel_ulong_t scno __asm__("r7") = nr;
-#else
+# else
        register kernel_ulong_t scno __asm__("r1") = nr;
-#endif
+# endif
        register kernel_ulong_t a0 __asm__("a0");
        asm volatile("trap 0"
                : "+r"(scno), "=r"(a0)
index 1f043caf750a80f35ed3a0ea6e7de75565567b49..88870e5247448f4ab90af19eac3b3aa98eeb7c15 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2019 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -8,10 +8,12 @@
 static int
 arch_set_scno(struct tcb *tcp, kernel_ulong_t scno)
 {
+       if (ptrace_syscall_info_is_valid() && get_regs(tcp) < 0)
+               return -1;
 #if defined(__CSKYABIV2__)
        csky_regs.regs[3] = scno;
 #else
-       csky_regs.r1 = scno;
+       csky_regs.a1 = scno;
 #endif
        return set_regs(tcp->pid);
 }
index 15621bd530c1ce66edb2436bf575e7a8ed50ad9f..61047190bb4aa764c4b8d27922bb5d1946606d91 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 1993 Branko Lankester <branko@hacktic.nl>
  * Copyright (c) 1993, 1994, 1995 Rick Sladkey <jrs@world.std.com>
- * Copyright (c) 1995-2019 The strace developers.
+ * Copyright (c) 1995-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -53,6 +53,7 @@
 # define sys_getgid            sys_getuid
 # define sys_getgid16          sys_getuid16
 # define sys_getpeername               sys_getsockname
+# define sys_getppid           sys_getpid
 # define sys_getresgid         sys_getresuid
 # define sys_getresgid16               sys_getresuid16
 # define sys_lstat             sys_stat
 # define sys_vfork             sys_fork
 
 /* printargs does the right thing */
-# define sys_getpgrp           printargs
-# define sys_getpid            printargs
-# define sys_getppid           printargs
-# define sys_gettid            printargs
 # define sys_idle              printargs
-# define sys_inotify_init      printargs
 # define sys_munlockall                printargs
 # define sys_pause             printargs
 # define sys_printargs         printargs
 
 /* printargs_d does the right thing */
 # define sys_exit              printargs_d
-# define sys_getpgid           printargs_d
-# define sys_getsid            printargs_d
 # define sys_nice              printargs_d
-# define sys_setpgid           printargs_d
 # define sys_setpgrp           printargs_d
 # define sys_timer_delete      printargs_d
 # define sys_timer_getoverrun  printargs_d
index 6d427e5c4d14dddc861705c45a4065dd567578b0..ec09f9c786b825fcd9fcbbc67d16a2316f142cb6 100644 (file)
@@ -1,14 +1,11 @@
 /*
- * Copyright (c) 2015-2019 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
  */
 
-static unsigned long hppa_r28;
-
-#define PT_GR20 offsetof(struct pt_regs, gr[20])
-#define PT_GR28 offsetof(struct pt_regs, gr[28])
-
-#define ARCH_PC_PEEK_ADDR offsetof(struct pt_regs, iaoq[0])
-#define ARCH_SP_PEEK_ADDR offsetof(struct pt_regs, gr[30])
+static struct user_regs_struct hppa_regs;
+#define ARCH_REGS_FOR_GETREGS hppa_regs
+#define ARCH_PC_REG hppa_regs.iaoq[0]
+#define ARCH_SP_REG hppa_regs.gr[30]
index 0a2d5a8676fed03fae93263d29f742f78ccc62bb..a3721797f4e3da4fd8cc9ef12a1ba988f0a042bb 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
 static void
 arch_get_error(struct tcb *tcp, const bool check_errno)
 {
-       if (check_errno && is_negated_errno(hppa_r28)) {
+       if (check_errno && is_negated_errno(hppa_regs.gr[28])) {
                tcp->u_rval = -1;
-               tcp->u_error = -hppa_r28;
+               tcp->u_error = -hppa_regs.gr[28];
        } else {
-               tcp->u_rval = hppa_r28;
+               tcp->u_rval = hppa_regs.gr[28];
        }
 }
index fe0fb5e36a443a2372498a4e49503c0ed5a9975f..d20c8011a48fe2b90c10fff86adb9817c177c6aa 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -9,5 +9,6 @@
 static int
 arch_get_scno(struct tcb *tcp)
 {
-       return upeek(tcp, PT_GR20, &tcp->scno) < 0 ? -1 : 1;
+       tcp->scno = hppa_regs.gr[20];
+       return 1;
 }
index 186533b8aded031d19404e0d0fc02ed8bedcf62b..7ed762fd4d396fc136c1b77b8b465eba9de36862 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2019 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -9,11 +9,7 @@
 static int
 arch_get_syscall_args(struct tcb *tcp)
 {
-       for (unsigned int i = 0; i < n_args(tcp); ++i) {
-               unsigned int addr = offsetof(struct pt_regs, gr[26 - i]);
-
-               if (upeek(tcp, addr, &tcp->u_arg[i]) < 0)
-                       return -1;
-       }
+       for (unsigned int i = 0; i < n_args(tcp); ++i)
+               tcp->u_arg[i] = hppa_regs.gr[26 - i];
        return 1;
 }
diff --git a/linux/hppa/get_syscall_result.c b/linux/hppa/get_syscall_result.c
deleted file mode 100644 (file)
index af130b0..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-/*
- * Copyright (c) 2015-2018 The strace developers.
- * All rights reserved.
- *
- * SPDX-License-Identifier: LGPL-2.1-or-later
- */
-
-static int
-get_syscall_result_regs(struct tcb *tcp)
-{
-       return upeek(tcp, PT_GR28, &hppa_r28) < 0 ? -1 : 0;
-}
index 288d6f0ab0faefb4d752d2d2971418852dc6eb99..a61c576d1e867dd8bdbb8a2be5fa373e22e92934 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -8,13 +8,13 @@
 static int
 arch_set_error(struct tcb *tcp)
 {
-       hppa_r28 = -tcp->u_error;
-       return upoke(tcp, PT_GR28, hppa_r28);
+       hppa_regs.gr[28] = -tcp->u_error;
+       return set_regs(tcp->pid);
 }
 
 static int
 arch_set_success(struct tcb *tcp)
 {
-       hppa_r28 = tcp->u_rval;
-       return upoke(tcp, PT_GR28, hppa_r28);
+       hppa_regs.gr[28] = tcp->u_rval;
+       return set_regs(tcp->pid);
 }
index 635e9b3329e9b04e52f554431cee98380e89c5ae..8553352cbf9888eedee41293524e123176833f93 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -8,5 +8,8 @@
 static int
 arch_set_scno(struct tcb *tcp, kernel_ulong_t scno)
 {
-       return upoke(tcp, PT_GR20, scno);
+       if (ptrace_syscall_info_is_valid() && get_regs(tcp) < 0)
+               return -1;
+       hppa_regs.gr[20] = scno;
+       return set_regs(tcp->pid);
 }
index 72f15190b140843aa659c43fe54cf1c910e520af..5521694fb1e2c4689ab35145d83a7b0761503bc7 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2001 Hewlett-Packard, Matthew Wilcox
- * Copyright (c) 2001-2019 The strace developers.
+ * Copyright (c) 2001-2020 The strace developers.
  */
 
 [  0] = { 0,   0,              SEN(restart_syscall),           "restart_syscall"       },
@@ -14,9 +14,9 @@
 [  8] = { 2,   TD|TF,          SEN(creat),                     "creat"                 },
 [  9] = { 2,   TF,             SEN(link),                      "link"                  },
 [ 10] = { 1,   TF,             SEN(unlink),                    "unlink"                },
-[ 11] = { 3,   TF|TP|SE|SI,    SEN(execve),                    "execve"                },
+[ 11] = { 3,   TF|TP|TSD|SE|SI,        SEN(execve),                    "execve"                },
 [ 12] = { 1,   TF,             SEN(chdir),                     "chdir"                 },
-[ 13] = { 1,   0,              SEN(time),                      "time"                  },
+[ 13] = { 1,   TCL,            SEN(time),                      "time"                  },
 [ 14] = { 3,   TF,             SEN(mknod),                     "mknod"                 },
 [ 15] = { 2,   TF,             SEN(chmod),                     "chmod"                 },
 [ 16] = { 3,   TF,             SEN(chown),                     "lchown"                },
@@ -26,8 +26,8 @@
 [ 20] = { 0,   PU|NF,          SEN(getpid),                    "getpid"                },
 [ 21] = { 5,   TF,             SEN(mount),                     "mount"                 },
 [ 22] = { 3,   TN,             SEN(bind),                      "bind"                  },
-[ 23] = { 1,   0,              SEN(setuid),                    "setuid"                },
-[ 24] = { 0,   PU|NF,          SEN(getuid),                    "getuid"                },
+[ 23] = { 1,   TC,             SEN(setuid),                    "setuid"                },
+[ 24] = { 0,   TC|PU|NF,       SEN(getuid),                    "getuid"                },
 [ 25] = { 1,   0,              SEN(stime),                     "stime"                 },
 [ 26] = { 4,   0,              SEN(ptrace),                    "ptrace"                },
 [ 27] = { 1,   0,              SEN(alarm),                     "alarm"                 },
@@ -40,7 +40,7 @@
 [ 34] = { 1,   0,              SEN(nice),                      "nice"                  },
 [ 35] = { 3,   TN,             SEN(accept),                    "accept"                },
 [ 36] = { 0,   0,              SEN(sync),                      "sync"                  },
-[ 37] = { 2,   TS,             SEN(kill),                      "kill"                  },
+[ 37] = { 2,   TS|TP,          SEN(kill),                      "kill"                  },
 [ 38] = { 2,   TF,             SEN(rename),                    "rename"                },
 [ 39] = { 2,   TF,             SEN(mkdir),                     "mkdir"                 },
 [ 40] = { 1,   TF,             SEN(rmdir),                     "rmdir"                 },
 [ 43] = { 1,   0,              SEN(times),                     "times"                 },
 [ 44] = { 3,   TN,             SEN(getsockname),               "getsockname"           },
 [ 45] = { 1,   TM|SI,          SEN(brk),                       "brk"                   },
-[ 46] = { 1,   0,              SEN(setgid),                    "setgid"                },
-[ 47] = { 0,   PU|NF,          SEN(getgid),                    "getgid"                },
+[ 46] = { 1,   TC,             SEN(setgid),                    "setgid"                },
+[ 47] = { 0,   TC|PU|NF,       SEN(getgid),                    "getgid"                },
 [ 48] = { 2,   TS,             SEN(signal),                    "signal"                },
-[ 49] = { 0,   PU|NF,          SEN(geteuid),                   "geteuid"               },
-[ 50] = { 0,   PU|NF,          SEN(getegid),                   "getegid"               },
+[ 49] = { 0,   TC|PU|NF,       SEN(geteuid),                   "geteuid"               },
+[ 50] = { 0,   TC|PU|NF,       SEN(getegid),                   "getegid"               },
 [ 51] = { 1,   TF,             SEN(acct),                      "acct"                  },
 [ 52] = { 2,   TF,             SEN(umount2),                   "umount2"               },
 [ 53] = { 3,   TN,             SEN(getpeername),               "getpeername"           },
 [ 67] = { 2,   TF,             SEN(pivotroot),                 "pivot_root"            },
 [ 68] = { 0,   TS,             SEN(sgetmask),                  "sgetmask"              },
 [ 69] = { 1,   TS,             SEN(ssetmask),                  "ssetmask"              },
-[ 70] = { 2,   0,              SEN(setreuid),                  "setreuid"              },
-[ 71] = { 2,   0,              SEN(setregid),                  "setregid"              },
+[ 70] = { 2,   TC,             SEN(setreuid),                  "setreuid"              },
+[ 71] = { 2,   TC,             SEN(setregid),                  "setregid"              },
 [ 72] = { 3,   TM,             SEN(mincore),                   "mincore"               },
 [ 73] = { 1,   TS,             SEN(sigpending),                "sigpending"            },
 [ 74] = { 2,   0,              SEN(sethostname),               "sethostname"           },
 [ 75] = { 2,   0,              SEN(setrlimit),                 "setrlimit"             },
 [ 76] = { 2,   0,              SEN(getrlimit),                 "getrlimit"             },
 [ 77] = { 2,   0,              SEN(getrusage),                 "getrusage"             },
-[ 78] = { 2,   0,              SEN(gettimeofday),              "gettimeofday"          },
-[ 79] = { 2,   0,              SEN(settimeofday),              "settimeofday"          },
-[ 80] = { 2,   0,              SEN(getgroups),                 "getgroups"             },
-[ 81] = { 2,   0,              SEN(setgroups),                 "setgroups"             },
+[ 78] = { 2,   TCL,            SEN(gettimeofday),              "gettimeofday"          },
+[ 79] = { 2,   TCL,            SEN(settimeofday),              "settimeofday"          },
+[ 80] = { 2,   TC,             SEN(getgroups),                 "getgroups"             },
+[ 81] = { 2,   TC,             SEN(setgroups),                 "setgroups"             },
 [ 82] = { 6,   TN,             SEN(sendto),                    "sendto"                },
 [ 83] = { 2,   TF,             SEN(symlink),                   "symlink"               },
 [ 84] = { 2,   TF|TLST|TSTA,   SEN(lstat),                     "lstat"                 },
 [103] = { 3,   0,              SEN(syslog),                    "syslog"                },
 [104] = { 3,   0,              SEN(setitimer),                 "setitimer"             },
 [105] = { 2,   0,              SEN(getitimer),                 "getitimer"             },
-[106] = { 2,   0,              SEN(capget),                    "capget"                },
-[107] = { 2,   0,              SEN(capset),                    "capset"                },
+[106] = { 2,   TC,             SEN(capget),                    "capget"                },
+[107] = { 2,   TC,             SEN(capset),                    "capset"                },
 [108] = { 5,   TD,             SEN(pread),                     "pread64"               },
 [109] = { 5,   TD,             SEN(pwrite),                    "pwrite64"              },
 [110] = { 2,   TF,             SEN(getcwd),                    "getcwd"                },
 [121] = { 2,   0,              SEN(setdomainname),             "setdomainname"         },
 [122] = { 4,   TD|TN,          SEN(sendfile),                  "sendfile"              },
 [123] = { 6,   TN,             SEN(recvfrom),                  "recvfrom"              },
-[124] = { 1,   0,              SEN(adjtimex32),                "adjtimex"              },
+[124] = { 1,   TCL,            SEN(adjtimex32),                "adjtimex"              },
 [125] = { 3,   TM|SI,          SEN(mprotect),                  "mprotect"              },
 [126] = { 3,   TS,             SEN(sigprocmask),               "sigprocmask"           },
 [127] = { 2,   0,              SEN(create_module),             "create_module"         },
 [135] = { 3,   0,              SEN(sysfs),                     "sysfs"                 },
 [136] = { 1,   NF,             SEN(personality),               "personality"           },
 [137] = { 5,   0,              SEN(afs_syscall),               "afs_syscall"           },
-[138] = { 1,   NF,             SEN(setfsuid),                  "setfsuid"              },
-[139] = { 1,   NF,             SEN(setfsgid),                  "setfsgid"              },
+[138] = { 1,   TC|NF,          SEN(setfsuid),                  "setfsuid"              },
+[139] = { 1,   TC|NF,          SEN(setfsgid),                  "setfsgid"              },
 [140] = { 5,   TD,             SEN(llseek),                    "_llseek"               },
 [141] = { 3,   TD,             SEN(getdents),                  "getdents"              },
 [142] = { 5,   TD,             SEN(select),                    "_newselect"            },
 [161] = { 2,   0,              SEN(sched_rr_get_interval_time32),"sched_rr_get_interval"},
 [162] = { 2,   0,              SEN(nanosleep_time32),          "nanosleep"             },
 [163] = { 5,   TM|SI,          SEN(mremap),                    "mremap"                },
-[164] = { 3,   0,              SEN(setresuid),                 "setresuid"             },
-[165] = { 3,   0,              SEN(getresuid),                 "getresuid"             },
+[164] = { 3,   TC,             SEN(setresuid),                 "setresuid"             },
+[165] = { 3,   TC,             SEN(getresuid),                 "getresuid"             },
 [166] = { 2,   TS,             SEN(sigaltstack),               "sigaltstack"           },
 [167] = { 5,   0,              SEN(query_module),              "query_module"          },
 [168] = { 3,   TD,             SEN(poll_time32),               "poll"                  },
 [169] = { 3,   0,              SEN(nfsservctl),                "nfsservctl"            },
-[170] = { 3,   0,              SEN(setresgid),                 "setresgid"             },
-[171] = { 3,   0,              SEN(getresgid),                 "getresgid"             },
-[172] = { 5,   0,              SEN(prctl),                     "prctl"                 },
+[170] = { 3,   TC,             SEN(setresgid),                 "setresgid"             },
+[171] = { 3,   TC,             SEN(getresgid),                 "getresgid"             },
+[172] = { 5,   TC,             SEN(prctl),                     "prctl"                 },
 [173] = { 0,   TS,             SEN(rt_sigreturn),              "rt_sigreturn"          },
 [174] = { 4,   TS,             SEN(rt_sigaction),              "rt_sigaction"          },
 [175] = { 4,   TS,             SEN(rt_sigprocmask),            "rt_sigprocmask"        },
 [176] = { 2,   TS,             SEN(rt_sigpending),             "rt_sigpending"         },
 [177] = { 4,   TS,             SEN(rt_sigtimedwait_time32),    "rt_sigtimedwait"       },
-[178] = { 3,   TS,             SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
+[178] = { 3,   TS|TP,          SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
 [179] = { 2,   TS,             SEN(rt_sigsuspend),             "rt_sigsuspend"         },
 [180] = { 3,   TF,             SEN(chown),                     "chown"                 },
 [181] = { 5,   TN,             SEN(setsockopt),                "setsockopt"            },
 [205] = { 5,   0,              SEN(printargs),                 "acl_set"               },
 [206] = { 0,   PU|NF,          SEN(gettid),                    "gettid"                },
 [207] = { 4,   TD,             SEN(readahead),                 "readahead"             },
-[208] = { 2,   TS,             SEN(kill),                      "tkill"                 },
+[208] = { 2,   TS|TP,          SEN(tkill),                     "tkill"                 },
 [209] = { 4,   TD|TN,          SEN(sendfile64),                "sendfile64"            },
 [210] = { 6,   0,              SEN(futex_time32),              "futex"                 },
 [211] = { 3,   0,              SEN(sched_setaffinity),         "sched_setaffinity"     },
 [252] = { 2,   0,              SEN(timer_gettime32),           "timer_gettime"         },
 [253] = { 1,   0,              SEN(timer_getoverrun),          "timer_getoverrun"      },
 [254] = { 1,   0,              SEN(timer_delete),              "timer_delete"          },
-[255] = { 2,   0,              SEN(clock_settime32),           "clock_settime"         },
-[256] = { 2,   0,              SEN(clock_gettime32),           "clock_gettime"         },
-[257] = { 2,   0,              SEN(clock_getres_time32),       "clock_getres"          },
+[255] = { 2,   TCL,            SEN(clock_settime32),           "clock_settime"         },
+[256] = { 2,   TCL,            SEN(clock_gettime32),           "clock_gettime"         },
+[257] = { 2,   TCL,            SEN(clock_getres_time32),       "clock_getres"          },
 [258] = { 4,   0,              SEN(clock_nanosleep_time32),    "clock_nanosleep"       },
-[259] = { 3,   TS,             SEN(tgkill),                    "tgkill"                },
+[259] = { 3,   TS|TP,          SEN(tgkill),                    "tgkill"                },
 [260] = { 6,   TM,             SEN(mbind),                     "mbind"                 },
 [261] = { 5,   TM,             SEN(get_mempolicy),             "get_mempolicy"         },
 [262] = { 3,   TM,             SEN(set_mempolicy),             "set_mempolicy"         },
 [285] = { 4,   TD|TF,          SEN(readlinkat),                "readlinkat"            },
 [286] = { 3,   TD|TF,          SEN(fchmodat),                  "fchmodat"              },
 [287] = { 3,   TD|TF,          SEN(faccessat),                 "faccessat"             },
-[288] = { 1,   TP,             SEN(unshare),                   "unshare"               },
+[288] = { 1,   0,              SEN(unshare),                   "unshare"               },
 [289] = { 2,   0,              SEN(set_robust_list),           "set_robust_list"       },
 [290] = { 3,   0,              SEN(get_robust_list),           "get_robust_list"       },
 [291] = { 6,   TD,             SEN(splice),                    "splice"                },
 [321] = { 4,   0,              SEN(prlimit64),                 "prlimit64"             },
 [322] = { 2,   TD,             SEN(fanotify_init),             "fanotify_init"         },
 [323] = { 6,   TD|TF,          SEN(fanotify_mark),             "fanotify_mark"         },
-[324] = { 2,   0,              SEN(clock_adjtime32),           "clock_adjtime"         },
+[324] = { 2,   TCL,            SEN(clock_adjtime32),           "clock_adjtime"         },
 [325] = { 5,   TD|TF,          SEN(name_to_handle_at),         "name_to_handle_at"     },
 [326] = { 3,   TD,             SEN(open_by_handle_at),         "open_by_handle_at"     },
 [327] = { 1,   TD,             SEN(syncfs),                    "syncfs"                },
 [339] = { 3,   0,              SEN(getrandom),                 "getrandom"             },
 [340] = { 2,   TD,             SEN(memfd_create),              "memfd_create"          },
 [341] = { 3,   TD,             SEN(bpf),                       "bpf"                   },
-[342] = { 5,   TD|TF|TP|SE|SI, SEN(execveat),                  "execveat"              },
+[342] = { 5,   TD|TF|TP|TSD|SE|SI,     SEN(execveat),                  "execveat"              },
 [343] = { 2,   0,              SEN(membarrier),                "membarrier"            },
 [344] = { 1,   TD,             SEN(userfaultfd),               "userfaultfd"           },
 [345] = { 3,   TM,             SEN(mlock2),                    "mlock2"                },
 [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"                 },
+[349] = { 5,   TD|TF|TFST|TSTA,SEN(statx),                     "statx"                 },
 [350] = { 6,   0,              SEN(io_pgetevents_time32),      "io_pgetevents"         },
 [351] = { 4,   TM|SI,          SEN(pkey_mprotect),             "pkey_mprotect"         },
 [352] = { 2,   0,              SEN(pkey_alloc),                "pkey_alloc"            },
 [353] = { 1,   0,              SEN(pkey_free),                 "pkey_free"             },
 [354] = { 4,   0,              SEN(rseq),                      "rseq"                  },
-/* [355 ... 402] - reserved to sync up with other architectures */
-[403] = { 2,   0,              SEN(clock_gettime64),           "clock_gettime64"       },
-[404] = { 2,   0,              SEN(clock_settime64),           "clock_settime64"       },
-[405] = { 2,   0,              SEN(clock_adjtime64),           "clock_adjtime64"       },
-[406] = { 2,   0,              SEN(clock_getres_time64),       "clock_getres_time64"   },
-[407] = { 4,   0,              SEN(clock_nanosleep_time64),    "clock_nanosleep_time64"},
-[408] = { 2,   0,              SEN(timer_gettime64),           "timer_gettime64"       },
-[409] = { 4,   0,              SEN(timer_settime64),           "timer_settime64"       },
-[410] = { 2,   TD,             SEN(timerfd_gettime64),         "timerfd_gettime64"     },
-[411] = { 4,   TD,             SEN(timerfd_settime64),         "timerfd_settime64"     },
-[412] = { 4,   TD|TF,          SEN(utimensat_time64),          "utimensat_time64"      },
-[413] = { 6,   TD,             SEN(pselect6_time64),           "pselect6_time64"       },
-[414] = { 5,   TD,             SEN(ppoll_time64),              "ppoll_time64"          },
-[416] = { 6,   0,              SEN(io_pgetevents_time64),      "io_pgetevents_time64"  },
-[417] = { 5,   TN,             SEN(recvmmsg_time64),           "recvmmsg_time64"       },
-[418] = { 5,   TD,             SEN(mq_timedsend_time64),       "mq_timedsend_time64"   },
-[419] = { 5,   TD,             SEN(mq_timedreceive_time64),    "mq_timedreceive_time64"},
-[420] = { 4,   TI,             SEN(semtimedop_time64),         "semtimedop_time64"     },
-[421] = { 4,   TS,             SEN(rt_sigtimedwait_time64),    "rt_sigtimedwait_time64"},
-[422] = { 6,   0,              SEN(futex_time64),              "futex_time64"          },
-[423] = { 2,   0,              SEN(sched_rr_get_interval_time64),      "sched_rr_get_interval_time64"  },
-[424] = { 4,   TD|TS,          SEN(pidfd_send_signal),         "pidfd_send_signal"     },
-[425] = { 2,   TD,             SEN(io_uring_setup),            "io_uring_setup"        },
-[426] = { 6,   TD|TS,          SEN(io_uring_enter),            "io_uring_enter"        },
-[427] = { 4,   TD|TM,          SEN(io_uring_register),         "io_uring_register"     },
+[355] = { 5,   TD,             SEN(kexec_file_load),           "kexec_file_load"       },
+/* [356 ... 402] - reserved to sync up with other architectures */
+#include "syscallent-common-32.h"
+#include "syscallent-common.h"
index adeef5d4357c7307af0c1c636e196acf80654ea3..006de2d9dffa66c2e8e3d705c3f996e9cf8231c8 100644 (file)
@@ -96,6 +96,7 @@
 { "linux/kvm.h", "KVM_SET_ONE_REG", _IOC_WRITE, 0xaeac, 0x10 },
 { "linux/kvm.h", "KVM_SET_PIT", _IOC_READ, 0xae66, 0x48 },
 { "linux/kvm.h", "KVM_SET_PIT2", _IOC_WRITE, 0xaea0, 0x70 },
+{ "linux/kvm.h", "KVM_SET_PMU_EVENT_FILTER", _IOC_WRITE, 0xaeb2, 0x20 },
 { "linux/kvm.h", "KVM_SET_REGS", _IOC_WRITE, 0xae82, 0x90 },
 { "linux/kvm.h", "KVM_SET_SIGNAL_MASK", _IOC_WRITE, 0xae8b, 0x04 },
 { "linux/kvm.h", "KVM_SET_SREGS", _IOC_WRITE, 0xae84, 0x138 },
index 98866f3da7490f5ac06f9f816ce8172f345c6895..c6e9cd9b977b96e79c8674d8124357b114f8bf19 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 1993 Branko Lankester <branko@hacktic.nl>
  * Copyright (c) 1993, 1994, 1995 Rick Sladkey <jrs@world.std.com>
- * Copyright (c) 1995-2019 The strace developers.
+ * Copyright (c) 1995-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -18,9 +18,9 @@
 [  8] = { 2,   TD|TF,          SEN(creat),                     "creat"                 },
 [  9] = { 2,   TF,             SEN(link),                      "link"                  },
 [ 10] = { 1,   TF,             SEN(unlink),                    "unlink"                },
-[ 11] = { 3,   TF|TP|SE|SI,    SEN(execve),                    "execve"                },
+[ 11] = { 3,   TF|TP|TSD|SE|SI,        SEN(execve),                    "execve"                },
 [ 12] = { 1,   TF,             SEN(chdir),                     "chdir"                 },
-[ 13] = { 1,   0,              SEN(time),                      "time"                  },
+[ 13] = { 1,   TCL,            SEN(time),                      "time"                  },
 [ 14] = { 3,   TF,             SEN(mknod),                     "mknod"                 },
 [ 15] = { 2,   TF,             SEN(chmod),                     "chmod"                 },
 [ 16] = { 3,   TF,             SEN(chown16),                   "lchown"                },
@@ -30,8 +30,8 @@
 [ 20] = { 0,   PU|NF,          SEN(getpid),                    "getpid"                },
 [ 21] = { 5,   TF,             SEN(mount),                     "mount"                 },
 [ 22] = { 1,   TF,             SEN(umount),                    "umount"                },
-[ 23] = { 1,   0,              SEN(setuid16),                  "setuid"                },
-[ 24] = { 0,   PU|NF,          SEN(getuid16),                  "getuid"                },
+[ 23] = { 1,   TC,             SEN(setuid16),                  "setuid"                },
+[ 24] = { 0,   TC|PU|NF,       SEN(getuid16),                  "getuid"                },
 [ 25] = { 1,   0,              SEN(stime),                     "stime"                 },
 [ 26] = { 4,   0,              SEN(ptrace),                    "ptrace"                },
 [ 27] = { 1,   0,              SEN(alarm),                     "alarm"                 },
@@ -44,7 +44,7 @@
 [ 34] = { 1,   0,              SEN(nice),                      "nice"                  },
 [ 35] = { 0,   0,              SEN(ftime),                     "ftime"                 },
 [ 36] = { 0,   0,              SEN(sync),                      "sync"                  },
-[ 37] = { 2,   TS,             SEN(kill),                      "kill"                  },
+[ 37] = { 2,   TS|TP,          SEN(kill),                      "kill"                  },
 [ 38] = { 2,   TF,             SEN(rename),                    "rename"                },
 [ 39] = { 2,   TF,             SEN(mkdir),                     "mkdir"                 },
 [ 40] = { 1,   TF,             SEN(rmdir),                     "rmdir"                 },
 [ 43] = { 1,   0,              SEN(times),                     "times"                 },
 [ 44] = { 0,   0,              SEN(prof),                      "prof"                  },
 [ 45] = { 1,   TM|SI,          SEN(brk),                       "brk"                   },
-[ 46] = { 1,   0,              SEN(setgid16),                  "setgid"                },
-[ 47] = { 0,   PU|NF,          SEN(getgid16),                  "getgid"                },
+[ 46] = { 1,   TC,             SEN(setgid16),                  "setgid"                },
+[ 47] = { 0,   TC|PU|NF,       SEN(getgid16),                  "getgid"                },
 [ 48] = { 2,   TS,             SEN(signal),                    "signal"                },
-[ 49] = { 0,   PU|NF,          SEN(geteuid16),                 "geteuid"               },
-[ 50] = { 0,   PU|NF,          SEN(getegid16),                 "getegid"               },
+[ 49] = { 0,   TC|PU|NF,       SEN(geteuid16),                 "geteuid"               },
+[ 50] = { 0,   TC|PU|NF,       SEN(getegid16),                 "getegid"               },
 [ 51] = { 1,   TF,             SEN(acct),                      "acct"                  },
 [ 52] = { 2,   TF,             SEN(umount2),                   "umount2"               },
 [ 53] = { 0,   0,              SEN(lock),                      "lock"                  },
 [ 67] = { 3,   TS,             SEN(sigaction),                 "sigaction"             },
 [ 68] = { 0,   TS,             SEN(sgetmask),                  "sgetmask"              },
 [ 69] = { 1,   TS,             SEN(ssetmask),                  "ssetmask"              },
-[ 70] = { 2,   0,              SEN(setreuid16),                "setreuid"              },
-[ 71] = { 2,   0,              SEN(setregid16),                "setregid"              },
+[ 70] = { 2,   TC,             SEN(setreuid16),                "setreuid"              },
+[ 71] = { 2,   TC,             SEN(setregid16),                "setregid"              },
 [ 72] = { 3,   TS,             SEN(sigsuspend),                "sigsuspend"            },
 [ 73] = { 1,   TS,             SEN(sigpending),                "sigpending"            },
 [ 74] = { 2,   0,              SEN(sethostname),               "sethostname"           },
 [ 75] = { 2,   0,              SEN(setrlimit),                 "setrlimit"             },
 [ 76] = { 2,   0,              SEN(getrlimit),                 "getrlimit"             },
 [ 77] = { 2,   0,              SEN(getrusage),                 "getrusage"             },
-[ 78] = { 2,   0,              SEN(gettimeofday),              "gettimeofday"          },
-[ 79] = { 2,   0,              SEN(settimeofday),              "settimeofday"          },
-[ 80] = { 2,   0,              SEN(getgroups16),               "getgroups"             },
-[ 81] = { 2,   0,              SEN(setgroups16),               "setgroups"             },
+[ 78] = { 2,   TCL,            SEN(gettimeofday),              "gettimeofday"          },
+[ 79] = { 2,   TCL,            SEN(settimeofday),              "settimeofday"          },
+[ 80] = { 2,   TC,             SEN(getgroups16),               "getgroups"             },
+[ 81] = { 2,   TC,             SEN(setgroups16),               "setgroups"             },
 [ 82] = { 1,   TD,             SEN(oldselect),                 "select"                },
 [ 83] = { 2,   TF,             SEN(symlink),                   "symlink"               },
 [ 84] = { 2,   TF|TLST|TSTA,   SEN(oldlstat),                  "oldlstat"              },
 [ 99] = { 2,   TF|TSF|TSFA,    SEN(statfs),                    "statfs"                },
 [100] = { 2,   TD|TFSF|TSFA,   SEN(fstatfs),                   "fstatfs"               },
 [101] = { 3,   0,              SEN(ioperm),                    "ioperm"                },
-[102] = { 2,   TD,             SEN(socketcall),                "socketcall"            },
+[102] = { 2,   TD|TSD,         SEN(socketcall),                "socketcall"            },
 [103] = { 3,   0,              SEN(syslog),                    "syslog"                },
 [104] = { 3,   0,              SEN(setitimer),                 "setitimer"             },
 [105] = { 2,   0,              SEN(getitimer),                 "getitimer"             },
 [114] = { 4,   TP,             SEN(wait4),                     "wait4"                 },
 [115] = { 1,   TF,             SEN(swapoff),                   "swapoff"               },
 [116] = { 1,   0,              SEN(sysinfo),                   "sysinfo"               },
-[117] = { 6,   TI,             SEN(ipc),                       "ipc"                   },
+[117] = { 6,   TI|TSD,         SEN(ipc),                       "ipc"                   },
 [118] = { 1,   TD,             SEN(fsync),                     "fsync"                 },
 [119] = { 0,   TS,             SEN(sigreturn),                 "sigreturn"             },
 [120] = { 5,   TP,             SEN(clone),                     "clone"                 },
 [121] = { 2,   0,              SEN(setdomainname),             "setdomainname"         },
 [122] = { 1,   0,              SEN(uname),                     "uname"                 },
 [123] = { 3,   0,              SEN(modify_ldt),                "modify_ldt"            },
-[124] = { 1,   0,              SEN(adjtimex32),                "adjtimex"              },
+[124] = { 1,   TCL,            SEN(adjtimex32),                "adjtimex"              },
 [125] = { 3,   TM|SI,          SEN(mprotect),                  "mprotect"              },
 [126] = { 3,   TS,             SEN(sigprocmask),               "sigprocmask"           },
 [127] = { 2,   0,              SEN(create_module),             "create_module"         },
 [135] = { 3,   0,              SEN(sysfs),                     "sysfs"                 },
 [136] = { 1,   NF,             SEN(personality),               "personality"           },
 [137] = { 5,   0,              SEN(afs_syscall),               "afs_syscall"           },
-[138] = { 1,   NF,             SEN(setfsuid16),                "setfsuid"              },
-[139] = { 1,   NF,             SEN(setfsgid16),                "setfsgid"              },
+[138] = { 1,   TC|NF,          SEN(setfsuid16),                "setfsuid"              },
+[139] = { 1,   TC|NF,          SEN(setfsgid16),                "setfsgid"              },
 [140] = { 5,   TD,             SEN(llseek),                    "_llseek"               },
 [141] = { 3,   TD,             SEN(getdents),                  "getdents"              },
 [142] = { 5,   TD,             SEN(select),                    "_newselect"            },
 [161] = { 2,   0,              SEN(sched_rr_get_interval_time32),"sched_rr_get_interval"},
 [162] = { 2,   0,              SEN(nanosleep_time32),          "nanosleep"             },
 [163] = { 5,   TM|SI,          SEN(mremap),                    "mremap"                },
-[164] = { 3,   0,              SEN(setresuid16),               "setresuid"             },
-[165] = { 3,   0,              SEN(getresuid16),               "getresuid"             },
+[164] = { 3,   TC,             SEN(setresuid16),               "setresuid"             },
+[165] = { 3,   TC,             SEN(getresuid16),               "getresuid"             },
 [166] = { 5,   0,              SEN(vm86),                      "vm86"                  },
 [167] = { 5,   0,              SEN(query_module),              "query_module"          },
 [168] = { 3,   TD,             SEN(poll_time32),               "poll"                  },
 [169] = { 3,   0,              SEN(nfsservctl),                "nfsservctl"            },
-[170] = { 3,   0,              SEN(setresgid16),               "setresgid"             },
-[171] = { 3,   0,              SEN(getresgid16),               "getresgid"             },
-[172] = { 5,   0,              SEN(prctl),                     "prctl"                 },
+[170] = { 3,   TC,             SEN(setresgid16),               "setresgid"             },
+[171] = { 3,   TC,             SEN(getresgid16),               "getresgid"             },
+[172] = { 5,   TC,             SEN(prctl),                     "prctl"                 },
 [173] = { 0,   TS,             SEN(rt_sigreturn),              "rt_sigreturn"          },
 [174] = { 4,   TS,             SEN(rt_sigaction),              "rt_sigaction"          },
 [175] = { 4,   TS,             SEN(rt_sigprocmask),            "rt_sigprocmask"        },
 [176] = { 2,   TS,             SEN(rt_sigpending),             "rt_sigpending"         },
 [177] = { 4,   TS,             SEN(rt_sigtimedwait_time32),    "rt_sigtimedwait"       },
-[178] = { 3,   TS,             SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
+[178] = { 3,   TS|TP,          SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
 [179] = { 2,   TS,             SEN(rt_sigsuspend),             "rt_sigsuspend"         },
 [180] = { 5,   TD,             SEN(pread),                     "pread64"               },
 [181] = { 5,   TD,             SEN(pwrite),                    "pwrite64"              },
 [182] = { 3,   TF,             SEN(chown16),                   "chown"                 },
 [183] = { 2,   TF,             SEN(getcwd),                    "getcwd"                },
-[184] = { 2,   0,              SEN(capget),                    "capget"                },
-[185] = { 2,   0,              SEN(capset),                    "capset"                },
+[184] = { 2,   TC,             SEN(capget),                    "capget"                },
+[185] = { 2,   TC,             SEN(capset),                    "capset"                },
 [186] = { 2,   TS,             SEN(sigaltstack),               "sigaltstack"           },
 [187] = { 4,   TD|TN,          SEN(sendfile),                  "sendfile"              },
 [188] = { 5,   TN,             SEN(getpmsg),                   "getpmsg"               },
 [196] = { 2,   TF|TLST|TSTA,   SEN(lstat64),                   "lstat64"               },
 [197] = { 2,   TD|TFST|TSTA,   SEN(fstat64),                   "fstat64"               },
 [198] = { 3,   TF,             SEN(chown),                     "lchown32"              },
-[199] = { 0,   PU|NF,          SEN(getuid),                    "getuid32"              },
-[200] = { 0,   PU|NF,          SEN(getgid),                    "getgid32"              },
-[201] = { 0,   PU|NF,          SEN(geteuid),                   "geteuid32"             },
-[202] = { 0,   PU|NF,          SEN(getegid),                   "getegid32"             },
-[203] = { 2,   0,              SEN(setreuid),                  "setreuid32"            },
-[204] = { 2,   0,              SEN(setregid),                  "setregid32"            },
-[205] = { 2,   0,              SEN(getgroups),                 "getgroups32"           },
-[206] = { 2,   0,              SEN(setgroups),                 "setgroups32"           },
+[199] = { 0,   TC|PU|NF,       SEN(getuid),                    "getuid32"              },
+[200] = { 0,   TC|PU|NF,       SEN(getgid),                    "getgid32"              },
+[201] = { 0,   TC|PU|NF,       SEN(geteuid),                   "geteuid32"             },
+[202] = { 0,   TC|PU|NF,       SEN(getegid),                   "getegid32"             },
+[203] = { 2,   TC,             SEN(setreuid),                  "setreuid32"            },
+[204] = { 2,   TC,             SEN(setregid),                  "setregid32"            },
+[205] = { 2,   TC,             SEN(getgroups),                 "getgroups32"           },
+[206] = { 2,   TC,             SEN(setgroups),                 "setgroups32"           },
 [207] = { 3,   TD,             SEN(fchown),                    "fchown32"              },
-[208] = { 3,   0,              SEN(setresuid),                 "setresuid32"           },
-[209] = { 3,   0,              SEN(getresuid),                 "getresuid32"           },
-[210] = { 3,   0,              SEN(setresgid),                 "setresgid32"           },
-[211] = { 3,   0,              SEN(getresgid),                 "getresgid32"           },
+[208] = { 3,   TC,             SEN(setresuid),                 "setresuid32"           },
+[209] = { 3,   TC,             SEN(getresuid),                 "getresuid32"           },
+[210] = { 3,   TC,             SEN(setresgid),                 "setresgid32"           },
+[211] = { 3,   TC,             SEN(getresgid),                 "getresgid32"           },
 [212] = { 3,   TF,             SEN(chown),                     "chown32"               },
-[213] = { 1,   0,              SEN(setuid),                    "setuid32"              },
-[214] = { 1,   0,              SEN(setgid),                    "setgid32"              },
-[215] = { 1,   NF,             SEN(setfsuid),                  "setfsuid32"            },
-[216] = { 1,   NF,             SEN(setfsgid),                  "setfsgid32"            },
+[213] = { 1,   TC,             SEN(setuid),                    "setuid32"              },
+[214] = { 1,   TC,             SEN(setgid),                    "setgid32"              },
+[215] = { 1,   TC|NF,          SEN(setfsuid),                  "setfsuid32"            },
+[216] = { 1,   TC|NF,          SEN(setfsgid),                  "setfsgid32"            },
 [217] = { 2,   TF,             SEN(pivotroot),                 "pivot_root"            },
 [218] = { 3,   TM,             SEN(mincore),                   "mincore"               },
 [219] = { 3,   TM,             SEN(madvise),                   "madvise"               },
 [235] = { 2,   TF,             SEN(removexattr),               "removexattr"           },
 [236] = { 2,   TF,             SEN(removexattr),               "lremovexattr"          },
 [237] = { 2,   TD,             SEN(fremovexattr),              "fremovexattr"          },
-[238] = { 2,   TS,             SEN(kill),                      "tkill"                 },
+[238] = { 2,   TS|TP,          SEN(tkill),                     "tkill"                 },
 [239] = { 4,   TD|TN,          SEN(sendfile64),                "sendfile64"            },
 [240] = { 6,   0,              SEN(futex_time32),              "futex"                 },
 [241] = { 3,   0,              SEN(sched_setaffinity),         "sched_setaffinity"     },
 [261] = { 2,   0,              SEN(timer_gettime32),           "timer_gettime"         },
 [262] = { 1,   0,              SEN(timer_getoverrun),          "timer_getoverrun"      },
 [263] = { 1,   0,              SEN(timer_delete),              "timer_delete"          },
-[264] = { 2,   0,              SEN(clock_settime32),           "clock_settime"         },
-[265] = { 2,   0,              SEN(clock_gettime32),           "clock_gettime"         },
-[266] = { 2,   0,              SEN(clock_getres_time32),       "clock_getres"          },
+[264] = { 2,   TCL,            SEN(clock_settime32),           "clock_settime"         },
+[265] = { 2,   TCL,            SEN(clock_gettime32),           "clock_gettime"         },
+[266] = { 2,   TCL,            SEN(clock_getres_time32),       "clock_getres"          },
 [267] = { 4,   0,              SEN(clock_nanosleep_time32),    "clock_nanosleep"       },
 [268] = { 3,   TF|TSF|TSFA,    SEN(statfs64),                  "statfs64"              },
 [269] = { 3,   TD|TFSF|TSFA,   SEN(fstatfs64),                 "fstatfs64"             },
-[270] = { 3,   TS,             SEN(tgkill),                    "tgkill"                },
+[270] = { 3,   TS|TP,          SEN(tgkill),                    "tgkill"                },
 [271] = { 2,   TF,             SEN(utimes),                    "utimes"                },
 [272] = { 6,   TD,             SEN(fadvise64_64),              "fadvise64_64"          },
 [273] = { 5,   0,              SEN(vserver),                   "vserver"               },
 [307] = { 3,   TD|TF,          SEN(faccessat),                 "faccessat"             },
 [308] = { 6,   TD,             SEN(pselect6_time32),           "pselect6"              },
 [309] = { 5,   TD,             SEN(ppoll_time32),              "ppoll"                 },
-[310] = { 1,   TP,             SEN(unshare),                   "unshare"               },
+[310] = { 1,   0,              SEN(unshare),                   "unshare"               },
 [311] = { 2,   0,              SEN(set_robust_list),           "set_robust_list"       },
 [312] = { 3,   0,              SEN(get_robust_list),           "get_robust_list"       },
 [313] = { 6,   TD,             SEN(splice),                    "splice"                },
 [340] = { 4,   0,              SEN(prlimit64),                 "prlimit64"             },
 [341] = { 5,   TD|TF,          SEN(name_to_handle_at),         "name_to_handle_at"     },
 [342] = { 3,   TD,             SEN(open_by_handle_at),         "open_by_handle_at"     },
-[343] = { 2,   0,              SEN(clock_adjtime32),           "clock_adjtime"         },
+[343] = { 2,   TCL,            SEN(clock_adjtime32),           "clock_adjtime"         },
 [344] = { 1,   TD,             SEN(syncfs),                    "syncfs"                },
 [345] = { 4,   TN,             SEN(sendmmsg),                  "sendmmsg"              },
 [346] = { 2,   TD,             SEN(setns),                     "setns"                 },
 [355] = { 3,   0,              SEN(getrandom),                 "getrandom"             },
 [356] = { 2,   TD,             SEN(memfd_create),              "memfd_create"          },
 [357] = { 3,   TD,             SEN(bpf),                       "bpf"                   },
-[358] = { 5,   TD|TF|TP|SE|SI, SEN(execveat),                  "execveat"              },
+[358] = { 5,   TD|TF|TP|TSD|SE|SI,     SEN(execveat),                  "execveat"              },
 [359] = { 3,   TN,             SEN(socket),                    "socket"                },
 [360] = { 4,   TN,             SEN(socketpair),                "socketpair"            },
 [361] = { 3,   TN,             SEN(bind),                      "bind"                  },
 [380] = { 4,   TM|SI,          SEN(pkey_mprotect),             "pkey_mprotect"         },
 [381] = { 2,   0,              SEN(pkey_alloc),                "pkey_alloc"            },
 [382] = { 1,   0,              SEN(pkey_free),                 "pkey_free"             },
-[383] = { 5,   TD|TF|TSTA,     SEN(statx),                     "statx"                 },
-[384] = { 2,   TP,             SEN(arch_prctl),                "arch_prctl"            },
+[383] = { 5,   TD|TF|TFST|TSTA,SEN(statx),                     "statx"                 },
+[384] = { 2,   0,              SEN(arch_prctl),                "arch_prctl"            },
 [385] = { 6,   0,              SEN(io_pgetevents_time32),      "io_pgetevents"         },
 [386] = { 4,   0,              SEN(rseq),                      "rseq"                  },
 /* room for arch specific calls */
 [400] = { 4,   TI,             SEN(msgsnd),                    "msgsnd"                },
 [401] = { 5,   TI,             SEN(msgrcv),                    "msgrcv"                },
 [402] = { 3,   TI,             SEN(msgctl),                    "msgctl"                },
-[403] = { 2,   0,              SEN(clock_gettime64),           "clock_gettime64"       },
-[404] = { 2,   0,              SEN(clock_settime64),           "clock_settime64"       },
-[405] = { 2,   0,              SEN(clock_adjtime64),           "clock_adjtime64"       },
-[406] = { 2,   0,              SEN(clock_getres_time64),       "clock_getres_time64"   },
-[407] = { 4,   0,              SEN(clock_nanosleep_time64),    "clock_nanosleep_time64"},
-[408] = { 2,   0,              SEN(timer_gettime64),           "timer_gettime64"       },
-[409] = { 4,   0,              SEN(timer_settime64),           "timer_settime64"       },
-[410] = { 2,   TD,             SEN(timerfd_gettime64),         "timerfd_gettime64"     },
-[411] = { 4,   TD,             SEN(timerfd_settime64),         "timerfd_settime64"     },
-[412] = { 4,   TD|TF,          SEN(utimensat_time64),          "utimensat_time64"      },
-[413] = { 6,   TD,             SEN(pselect6_time64),           "pselect6_time64"       },
-[414] = { 5,   TD,             SEN(ppoll_time64),              "ppoll_time64"          },
-[416] = { 6,   0,              SEN(io_pgetevents_time64),      "io_pgetevents_time64"  },
-[417] = { 5,   TN,             SEN(recvmmsg_time64),           "recvmmsg_time64"       },
-[418] = { 5,   TD,             SEN(mq_timedsend_time64),       "mq_timedsend_time64"   },
-[419] = { 5,   TD,             SEN(mq_timedreceive_time64),    "mq_timedreceive_time64"},
-[420] = { 4,   TI,             SEN(semtimedop_time64),         "semtimedop_time64"     },
-[421] = { 4,   TS,             SEN(rt_sigtimedwait_time64),    "rt_sigtimedwait_time64"},
-[422] = { 6,   0,              SEN(futex_time64),              "futex_time64"          },
-[423] = { 2,   0,              SEN(sched_rr_get_interval_time64),      "sched_rr_get_interval_time64"  },
-[424] = { 4,   TD|TS,          SEN(pidfd_send_signal),         "pidfd_send_signal"     },
-[425] = { 2,   TD,             SEN(io_uring_setup),            "io_uring_setup"        },
-[426] = { 6,   TD|TS,          SEN(io_uring_enter),            "io_uring_enter"        },
-[427] = { 4,   TD|TM,          SEN(io_uring_register),         "io_uring_register"     },
+#include "syscallent-common-32.h"
+#include "syscallent-common.h"
 
 #define SYS_socket_subcall     500
 #include "subcall32.h"
index 87ca0cdbdb8fb9bfca8c23034aa644c284c3a9d6..107a74df2ffac1786d7a40b76a7053d961534e39 100644 (file)
@@ -9,3 +9,4 @@
 #define HAVE_ARCH_UID16_SYSCALLS 1
 #define HAVE_ARCH_SA_RESTORER 0
 #define HAVE_ARCH_DEDICATED_ERR_REG 1
+#define PERSONALITY0_AUDIT_ARCH { AUDIT_ARCH_IA64, SYSCALLENT_BASE_NR }
index c1c89df9ac943f6f652381b4851bd82cc80562ff..c68c4cd8fa6ecd574dc24b4529b33f1f2934616a 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -8,7 +8,8 @@
 static int
 arch_set_scno(struct tcb *tcp, kernel_ulong_t scno)
 {
+       if (ptrace_syscall_info_is_valid() && get_regs(tcp) < 0)
+               return -1;
        ia64_regs.gr[15] = scno;
-
        return set_regs(tcp->pid);
 }
diff --git a/linux/ia64/shuffle_scno.c b/linux/ia64/shuffle_scno.c
new file mode 100644 (file)
index 0000000..6bac3a8
--- /dev/null
@@ -0,0 +1,11 @@
+static_assert(!(SYSCALLENT_BASE_NR & (SYSCALLENT_BASE_NR - 1)),
+             "SYSCALLENT_BASE_NR is not a power of 2 (or zero)");
+static_assert(nsyscalls0 < SYSCALLENT_BASE_NR,
+             "syscall table is too big, "
+             "shuffling will only make everything worse");
+
+kernel_ulong_t
+shuffle_scno(kernel_ulong_t scno)
+{
+       return scno ^ SYSCALLENT_BASE_NR;
+}
index f6062c4dd7339651b5a0ec955a9565ce585408a9..eeb825740faeb30d68b8e953d5b4ad00ee9f8052 100644 (file)
 /*
  * Copyright (c) 1999, 2001 Hewlett-Packard Co
  *                          David Mosberger-Tang <davidm@hpl.hp.com>
- * Copyright (c) 2000-2019 The strace developers.
+ * Copyright (c) 2000-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
  */
 
-[1024 +   0] = { 0,    0,              SEN(printargs),                 "ni_syscall"            },
-[1024 +   1] = { 1,    TP|SE,          SEN(exit),                      "exit"                  },
-[1024 +   2] = { 3,    TD,             SEN(read),                      "read"                  },
-[1024 +   3] = { 3,    TD,             SEN(write),                     "write"                 },
-[1024 +   4] = { 3,    TD|TF,          SEN(open),                      "open"                  },
-[1024 +   5] = { 1,    TD,             SEN(close),                     "close"                 },
-[1024 +   6] = { 2,    TD|TF,          SEN(creat),                     "creat"                 },
-[1024 +   7] = { 2,    TF,             SEN(link),                      "link"                  },
-[1024 +   8] = { 1,    TF,             SEN(unlink),                    "unlink"                },
-[1024 +   9] = { 3,    TF|TP|SE|SI,    SEN(execve),                    "execve"                },
-[1024 +  10] = { 1,    TF,             SEN(chdir),                     "chdir"                 },
-[1024 +  11] = { 1,    TD,             SEN(fchdir),                    "fchdir"                },
-[1024 +  12] = { 2,    TF,             SEN(utimes),                    "utimes"                },
-[1024 +  13] = { 3,    TF,             SEN(mknod),                     "mknod"                 },
-[1024 +  14] = { 2,    TF,             SEN(chmod),                     "chmod"                 },
-[1024 +  15] = { 3,    TF,             SEN(chown),                     "chown"                 },
-[1024 +  16] = { 3,    TD,             SEN(lseek),                     "lseek"                 },
-[1024 +  17] = { 0,    PU|NF,          SEN(getpid),                    "getpid"                },
-[1024 +  18] = { 0,    PU|NF,          SEN(getppid),                   "getppid"               },
-[1024 +  19] = { 5,    TF,             SEN(mount),                     "mount"                 },
-[1024 +  20] = { 2,    TF,             SEN(umount2),                   "umount"                },
-[1024 +  21] = { 1,    0,              SEN(setuid),                    "setuid"                },
-[1024 +  22] = { 0,    PU|NF,          SEN(getuid),                    "getuid"                },
-[1024 +  23] = { 0,    PU|NF,          SEN(geteuid),                   "geteuid"               },
-[1024 +  24] = { 4,    0,              SEN(ptrace),                    "ptrace"                },
-[1024 +  25] = { 2,    TF,             SEN(access),                    "access"                },
-[1024 +  26] = { 0,    0,              SEN(sync),                      "sync"                  },
-[1024 +  27] = { 1,    TD,             SEN(fsync),                     "fsync"                 },
-[1024 +  28] = { 1,    TD,             SEN(fdatasync),                 "fdatasync"             },
-[1024 +  29] = { 2,    TS,             SEN(kill),                      "kill"                  },
-[1024 +  30] = { 2,    TF,             SEN(rename),                    "rename"                },
-[1024 +  31] = { 2,    TF,             SEN(mkdir),                     "mkdir"                 },
-[1024 +  32] = { 1,    TF,             SEN(rmdir),                     "rmdir"                 },
-[1024 +  33] = { 1,    TD,             SEN(dup),                       "dup"                   },
-[1024 +  34] = { 0,    TD,             SEN(pipe),                      "pipe"                  },
-[1024 +  35] = { 1,    0,              SEN(times),                     "times"                 },
-[1024 +  36] = { 1,    TM|SI,          SEN(brk),                       "brk"                   },
-[1024 +  37] = { 1,    0,              SEN(setgid),                    "setgid"                },
-[1024 +  38] = { 0,    PU|NF,          SEN(getgid),                    "getgid"                },
-[1024 +  39] = { 0,    PU|NF,          SEN(getegid),                   "getegid"               },
-[1024 +  40] = { 1,    TF,             SEN(acct),                      "acct"                  },
-[1024 +  41] = { 3,    TD,             SEN(ioctl),                     "ioctl"                 },
-[1024 +  42] = { 3,    TD,             SEN(fcntl),                     "fcntl"                 },
-[1024 +  43] = { 1,    NF,             SEN(umask),                     "umask"                 },
-[1024 +  44] = { 1,    TF,             SEN(chroot),                    "chroot"                },
-[1024 +  45] = { 2,    TSFA,           SEN(ustat),                     "ustat"                 },
-[1024 +  46] = { 2,    TD,             SEN(dup2),                      "dup2"                  },
-[1024 +  47] = { 2,    0,              SEN(setreuid),                  "setreuid"              },
-[1024 +  48] = { 2,    0,              SEN(setregid),                  "setregid"              },
-[1024 +  49] = { 3,    0,              SEN(getresuid),                 "getresuid"             },
-[1024 +  50] = { 3,    0,              SEN(setresuid),                 "setresuid"             },
-[1024 +  51] = { 3,    0,              SEN(getresgid),                 "getresgid"             },
-[1024 +  52] = { 3,    0,              SEN(setresgid),                 "setresgid"             },
-[1024 +  53] = { 2,    0,              SEN(getgroups),                 "getgroups"             },
-[1024 +  54] = { 2,    0,              SEN(setgroups),                 "setgroups"             },
-[1024 +  55] = { 1,    0,              SEN(getpgid),                   "getpgid"               },
-[1024 +  56] = { 2,    0,              SEN(setpgid),                   "setpgid"               },
-[1024 +  57] = { 0,    0,              SEN(setsid),                    "setsid"                },
-[1024 +  58] = { 1,    0,              SEN(getsid),                    "getsid"                },
-[1024 +  59] = { 2,    0,              SEN(sethostname),               "sethostname"           },
-[1024 +  60] = { 2,    0,              SEN(setrlimit),                 "setrlimit"             },
-[1024 +  61] = { 2,    0,              SEN(getrlimit),                 "getrlimit"             },
-[1024 +  62] = { 2,    0,              SEN(getrusage),                 "getrusage"             },
-[1024 +  63] = { 2,    0,              SEN(gettimeofday),              "gettimeofday"          },
-[1024 +  64] = { 2,    0,              SEN(settimeofday),              "settimeofday"          },
-[1024 +  65] = { 5,    TD,             SEN(select),                    "select"                },
-[1024 +  66] = { 3,    TD,             SEN(poll_time64),               "poll"                  },
-[1024 +  67] = { 2,    TF,             SEN(symlink),                   "symlink"               },
-[1024 +  68] = { 3,    TF,             SEN(readlink),                  "readlink"              },
-[1024 +  69] = { 1,    TF,             SEN(uselib),                    "uselib"                },
-[1024 +  70] = { 2,    TF,             SEN(swapon),                    "swapon"                },
-[1024 +  71] = { 1,    TF,             SEN(swapoff),                   "swapoff"               },
-[1024 +  72] = { 4,    0,              SEN(reboot),                    "reboot"                },
-[1024 +  73] = { 2,    TF,             SEN(truncate),                  "truncate"              },
-[1024 +  74] = { 2,    TD,             SEN(ftruncate),                 "ftruncate"             },
-[1024 +  75] = { 2,    TD,             SEN(fchmod),                    "fchmod"                },
-[1024 +  76] = { 3,    TD,             SEN(fchown),                    "fchown"                },
-[1024 +  77] = { 2,    0,              SEN(getpriority),               "getpriority"           },
-[1024 +  78] = { 3,    0,              SEN(setpriority),               "setpriority"           },
-[1024 +  79] = { 2,    TF|TSF|TSFA,    SEN(statfs),                    "statfs"                },
-[1024 +  80] = { 2,    TD|TFSF|TSFA,   SEN(fstatfs),                   "fstatfs"               },
-[1024 +  81] = { 0,    PU|NF,          SEN(gettid),                    "gettid"                },
-[1024 +  82] = { 3,    TI,             SEN(semget),                    "semget"                },
-[1024 +  83] = { 3,    TI,             SEN(semop),                     "semop"                 },
-[1024 +  84] = { 4,    TI,             SEN(semctl),                    "semctl"                },
-[1024 +  85] = { 2,    TI,             SEN(msgget),                    "msgget"                },
-[1024 +  86] = { 4,    TI,             SEN(msgsnd),                    "msgsnd"                },
-[1024 +  87] = { 5,    TI,             SEN(msgrcv),                    "msgrcv"                },
-[1024 +  88] = { 3,    TI,             SEN(msgctl),                    "msgctl"                },
-[1024 +  89] = { 3,    TI,             SEN(shmget),                    "shmget"                },
-[1024 +  90] = { 3,    TI|TM|SI,       SEN(shmat),                     "shmat"                 },
-[1024 +  91] = { 1,    TI|TM|SI,       SEN(shmdt),                     "shmdt"                 },
-[1024 +  92] = { 3,    TI,             SEN(shmctl),                    "shmctl"                },
-[1024 +  93] = { 3,    0,              SEN(syslog),                    "syslog"                },
-[1024 +  94] = { 3,    0,              SEN(setitimer),                 "setitimer"             },
-[1024 +  95] = { 2,    0,              SEN(getitimer),                 "getitimer"             },
-[1024 +  96] = { 2,    TF|TST|TSTA,    SEN(stat),                      "stat"                  },
-[1024 +  97] = { 2,    TF|TLST|TSTA,   SEN(lstat),                     "lstat"                 },
-[1024 +  98] = { 2,    TD|TFST|TSTA,   SEN(fstat),                     "fstat"                 },
-[1024 +  99] = { 0,    0,              SEN(vhangup),                   "vhangup"               },
-[1024 + 100] = { 3,    TF,             SEN(chown),                     "lchown"                },
-[1024 + 101] = { 5,    TM|SI,          SEN(remap_file_pages),          "remap_file_pages"      },
-[1024 + 102] = { 4,    TP,             SEN(wait4),                     "wait4"                 },
-[1024 + 103] = { 1,    0,              SEN(sysinfo),                   "sysinfo"               },
-[1024 + 104] = { 5,    TP,             SEN(clone),                     "clone"                 },
-[1024 + 105] = { 2,    0,              SEN(setdomainname),             "setdomainname"         },
-[1024 + 106] = { 1,    0,              SEN(uname),                     "uname"                 },
-[1024 + 107] = { 1,    0,              SEN(adjtimex64),                "adjtimex"              },
-[1024 + 108] = { 2,    0,              SEN(create_module),             "create_module"         },
-[1024 + 109] = { 3,    0,              SEN(init_module),               "init_module"           },
-[1024 + 110] = { 2,    0,              SEN(delete_module),             "delete_module"         },
-[1024 + 111] = { 1,    0,              SEN(get_kernel_syms),           "get_kernel_syms"       },
-[1024 + 112] = { 5,    0,              SEN(query_module),              "query_module"          },
-[1024 + 113] = { 4,    TF,             SEN(quotactl),                  "quotactl"              },
-[1024 + 114] = { 2,    0,              SEN(bdflush),                   "bdflush"               },
-[1024 + 115] = { 3,    0,              SEN(sysfs),                     "sysfs"                 },
-[1024 + 116] = { 1,    NF,             SEN(personality),               "personality"           },
-[1024 + 117] = { 5,    0,              SEN(afs_syscall),               "afs_syscall"           },
-[1024 + 118] = { 1,    NF,             SEN(setfsuid),                  "setfsuid"              },
-[1024 + 119] = { 1,    NF,             SEN(setfsgid),                  "setfsgid"              },
-[1024 + 120] = { 3,    TD,             SEN(getdents),                  "getdents"              },
-[1024 + 121] = { 2,    TD,             SEN(flock),                     "flock"                 },
-[1024 + 122] = { 3,    TD,             SEN(readv),                     "readv"                 },
-[1024 + 123] = { 3,    TD,             SEN(writev),                    "writev"                },
-[1024 + 124] = { 4,    TD,             SEN(pread),                     "pread64"               },
-[1024 + 125] = { 4,    TD,             SEN(pwrite),                    "pwrite64"              },
-[1024 + 126] = { 1,    0,              SEN(printargs),                 "_sysctl"               },
-[1024 + 127] = { 6,    TD|TM|SI,       SEN(mmap),                      "mmap"                  },
-[1024 + 128] = { 2,    TM|SI,          SEN(munmap),                    "munmap"                },
-[1024 + 129] = { 2,    TM,             SEN(mlock),                     "mlock"                 },
-[1024 + 130] = { 1,    TM,             SEN(mlockall),                  "mlockall"              },
-[1024 + 131] = { 3,    TM|SI,          SEN(mprotect),                  "mprotect"              },
-[1024 + 132] = { 5,    TM|SI,          SEN(mremap),                    "mremap"                },
-[1024 + 133] = { 3,    TM,             SEN(msync),                     "msync"                 },
-[1024 + 134] = { 2,    TM,             SEN(munlock),                   "munlock"               },
-[1024 + 135] = { 0,    TM,             SEN(munlockall),                "munlockall"            },
-[1024 + 136] = { 2,    0,              SEN(sched_getparam),            "sched_getparam"        },
-[1024 + 137] = { 2,    0,              SEN(sched_setparam),            "sched_setparam"        },
-[1024 + 138] = { 1,    0,              SEN(sched_getscheduler),        "sched_getscheduler"    },
-[1024 + 139] = { 3,    0,              SEN(sched_setscheduler),        "sched_setscheduler"    },
-[1024 + 140] = { 0,    0,              SEN(sched_yield),               "sched_yield"           },
-[1024 + 141] = { 1,    0,              SEN(sched_get_priority_max),    "sched_get_priority_max"},
-[1024 + 142] = { 1,    0,              SEN(sched_get_priority_min),    "sched_get_priority_min"},
-[1024 + 143] = { 2,    0,              SEN(sched_rr_get_interval_time64),"sched_rr_get_interval"},
-[1024 + 144] = { 2,    0,              SEN(nanosleep_time64),          "nanosleep"             },
-[1024 + 145] = { 3,    0,              SEN(nfsservctl),                "nfsservctl"            },
-[1024 + 146] = { 5,    0,              SEN(prctl),                     "prctl"                 },
-[1024 + 147] = { 0,    PU|NF,          SEN(getpagesize),               "getpagesize"           },
-[1024 + 148] = { 6,    TD|TM|SI,       SEN(mmap_pgoff),                "mmap2"                 },
-[1024 + 149] = { 5,    0,              SEN(printargs),                 "pciconfig_read"        },
-[1024 + 150] = { 5,    0,              SEN(printargs),                 "pciconfig_write"       },
-[1024 + 151] = { MA,   0,              SEN(printargs),                 "perfmonctl"            },
-[1024 + 152] = { 2,    TS,             SEN(sigaltstack),               "sigaltstack"           },
-[1024 + 153] = { 4,    TS,             SEN(rt_sigaction),              "rt_sigaction"          },
-[1024 + 154] = { 2,    TS,             SEN(rt_sigpending),             "rt_sigpending"         },
-[1024 + 155] = { 4,    TS,             SEN(rt_sigprocmask),            "rt_sigprocmask"        },
-[1024 + 156] = { 3,    TS,             SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
-[1024 + 157] = { 0,    TS,             SEN(rt_sigreturn),              "rt_sigreturn"          },
-[1024 + 158] = { 2,    TS,             SEN(rt_sigsuspend),             "rt_sigsuspend"         },
-[1024 + 159] = { 4,    TS,             SEN(rt_sigtimedwait_time64),    "rt_sigtimedwait"       },
-[1024 + 160] = { 2,    TF,             SEN(getcwd),                    "getcwd"                },
-[1024 + 161] = { 2,    0,              SEN(capget),                    "capget"                },
-[1024 + 162] = { 2,    0,              SEN(capset),                    "capset"                },
-[1024 + 163] = { 4,    TD|TN,          SEN(sendfile),                  "sendfile"              },
-[1024 + 164] = { 5,    TN,             SEN(getpmsg),                   "getpmsg"               },
-[1024 + 165] = { 5,    TN,             SEN(putpmsg),                   "putpmsg"               },
-[1024 + 166] = { 3,    TN,             SEN(socket),                    "socket"                },
-[1024 + 167] = { 3,    TN,             SEN(bind),                      "bind"                  },
-[1024 + 168] = { 3,    TN,             SEN(connect),                   "connect"               },
-[1024 + 169] = { 2,    TN,             SEN(listen),                    "listen"                },
-[1024 + 170] = { 3,    TN,             SEN(accept),                    "accept"                },
-[1024 + 171] = { 3,    TN,             SEN(getsockname),               "getsockname"           },
-[1024 + 172] = { 3,    TN,             SEN(getpeername),               "getpeername"           },
-[1024 + 173] = { 4,    TN,             SEN(socketpair),                "socketpair"            },
-[1024 + 174] = { 4,    TN,             SEN(send),                      "send"                  },
-[1024 + 175] = { 6,    TN,             SEN(sendto),                    "sendto"                },
-[1024 + 176] = { 4,    TN,             SEN(recv),                      "recv"                  },
-[1024 + 177] = { 6,    TN,             SEN(recvfrom),                  "recvfrom"              },
-[1024 + 178] = { 2,    TN,             SEN(shutdown),                  "shutdown"              },
-[1024 + 179] = { 5,    TN,             SEN(setsockopt),                "setsockopt"            },
-[1024 + 180] = { 5,    TN,             SEN(getsockopt),                "getsockopt"            },
-[1024 + 181] = { 3,    TN,             SEN(sendmsg),                   "sendmsg"               },
-[1024 + 182] = { 3,    TN,             SEN(recvmsg),                   "recvmsg"               },
-[1024 + 183] = { 2,    TF,             SEN(pivotroot),                 "pivot_root"            },
-[1024 + 184] = { 3,    TM,             SEN(mincore),                   "mincore"               },
-[1024 + 185] = { 3,    TM,             SEN(madvise),                   "madvise"               },
-[1024 + 186] = { 2,    TF|TST|TSTA,    SEN(stat),                      "stat"                  },
-[1024 + 187] = { 2,    TF|TLST|TSTA,   SEN(lstat),                     "lstat"                 },
-[1024 + 188] = { 2,    TD|TFST|TSTA,   SEN(fstat),                     "fstat"                 },
-[1024 + 189] = { 6,    TP,             SEN(clone),                     "clone2"                },
-[1024 + 190] = { 3,    TD,             SEN(getdents64),                "getdents64"            },
-[1024 + 191] = { 2,    0,              SEN(printargs),                 "getunwind"             },
-[1024 + 192] = { 3,    TD,             SEN(readahead),                 "readahead"             },
-[1024 + 193] = { 5,    TF,             SEN(setxattr),                  "setxattr"              },
-[1024 + 194] = { 5,    TF,             SEN(setxattr),                  "lsetxattr"             },
-[1024 + 195] = { 5,    TD,             SEN(fsetxattr),                 "fsetxattr"             },
-[1024 + 196] = { 4,    TF,             SEN(getxattr),                  "getxattr"              },
-[1024 + 197] = { 4,    TF,             SEN(getxattr),                  "lgetxattr"             },
-[1024 + 198] = { 4,    TD,             SEN(fgetxattr),                 "fgetxattr"             },
-[1024 + 199] = { 3,    TF,             SEN(listxattr),                 "listxattr"             },
-[1024 + 200] = { 3,    TF,             SEN(listxattr),                 "llistxattr"            },
-[1024 + 201] = { 3,    TD,             SEN(flistxattr),                "flistxattr"            },
-[1024 + 202] = { 2,    TF,             SEN(removexattr),               "removexattr"           },
-[1024 + 203] = { 2,    TF,             SEN(removexattr),               "lremovexattr"          },
-[1024 + 204] = { 2,    TD,             SEN(fremovexattr),              "fremovexattr"          },
-[1024 + 205] = { 2,    TS,             SEN(kill),                      "tkill"                 },
-[1024 + 206] = { 6,    0,              SEN(futex_time64),              "futex"                 },
-[1024 + 207] = { 3,    0,              SEN(sched_setaffinity),         "sched_setaffinity"     },
-[1024 + 208] = { 3,    0,              SEN(sched_getaffinity),         "sched_getaffinity"     },
-[1024 + 209] = { 1,    0,              SEN(set_tid_address),           "set_tid_address"       },
-[1024 + 210] = { 4,    TD,             SEN(fadvise64),                 "fadvise64"             },
-[1024 + 211] = { 3,    TS,             SEN(tgkill),                    "tgkill"                },
-[1024 + 212] = { 1,    TP|SE,          SEN(exit),                      "exit_group"            },
-[1024 + 213] = { 3,    0,              SEN(lookup_dcookie),            "lookup_dcookie"        },
-[1024 + 214] = { 2,    TM,             SEN(io_setup),                  "io_setup"              },
-[1024 + 215] = { 1,    TM,             SEN(io_destroy),                "io_destroy"            },
-[1024 + 216] = { 5,    0,              SEN(io_getevents_time64),       "io_getevents"          },
-[1024 + 217] = { 3,    0,              SEN(io_submit),                 "io_submit"             },
-[1024 + 218] = { 3,    0,              SEN(io_cancel),                 "io_cancel"             },
-[1024 + 219] = { 1,    TD,             SEN(epoll_create),              "epoll_create"          },
-[1024 + 220] = { 4,    TD,             SEN(epoll_ctl),                 "epoll_ctl"             },
-[1024 + 221] = { 4,    TD,             SEN(epoll_wait),                "epoll_wait"            },
-[1024 + 222] = { 0,    0,              SEN(restart_syscall),           "restart_syscall"       },
-[1024 + 223] = { 4,    TI,             SEN(semtimedop_time64),         "semtimedop"            },
-[1024 + 224] = { 3,    0,              SEN(timer_create),              "timer_create"          },
-[1024 + 225] = { 4,    0,              SEN(timer_settime64),           "timer_settime"         },
-[1024 + 226] = { 2,    0,              SEN(timer_gettime64),           "timer_gettime"         },
-[1024 + 227] = { 1,    0,              SEN(timer_getoverrun),          "timer_getoverrun"      },
-[1024 + 228] = { 1,    0,              SEN(timer_delete),              "timer_delete"          },
-[1024 + 229] = { 2,    0,              SEN(clock_settime64),           "clock_settime"         },
-[1024 + 230] = { 2,    0,              SEN(clock_gettime64),           "clock_gettime"         },
-[1024 + 231] = { 2,    0,              SEN(clock_getres_time64),       "clock_getres"          },
-[1024 + 232] = { 4,    0,              SEN(clock_nanosleep_time64),    "clock_nanosleep"       },
-[1024 + 233] = { 3,    TD|TFSF|TSFA,   SEN(fstatfs64),                 "fstatfs64"             },
-[1024 + 234] = { 3,    TF|TSF|TSFA,    SEN(statfs64),                  "statfs64"              },
-[1024 + 235] = { 6,    TM,             SEN(mbind),                     "mbind"                 },
-[1024 + 236] = { 5,    TM,             SEN(get_mempolicy),             "get_mempolicy"         },
-[1024 + 237] = { 3,    TM,             SEN(set_mempolicy),             "set_mempolicy"         },
-[1024 + 238] = { 4,    TD,             SEN(mq_open),                   "mq_open"               },
-[1024 + 239] = { 1,    0,              SEN(mq_unlink),                 "mq_unlink"             },
-[1024 + 240] = { 5,    TD,             SEN(mq_timedsend_time64),       "mq_timedsend"          },
-[1024 + 241] = { 5,    TD,             SEN(mq_timedreceive_time64),    "mq_timedreceive"       },
-[1024 + 242] = { 2,    TD,             SEN(mq_notify),                 "mq_notify"             },
-[1024 + 243] = { 3,    TD,             SEN(mq_getsetattr),             "mq_getsetattr"         },
-[1024 + 244] = { 4,    0,              SEN(kexec_load),                "kexec_load"            },
-[1024 + 245] = { 5,    0,              SEN(vserver),                   "vserver"               },
-[1024 + 246] = { 5,    TP,             SEN(waitid),                    "waitid"                },
-[1024 + 247] = { 5,    0,              SEN(add_key),                   "add_key"               },
-[1024 + 248] = { 4,    0,              SEN(request_key),               "request_key"           },
-[1024 + 249] = { 5,    0,              SEN(keyctl),                    "keyctl"                },
-[1024 + 250] = { 3,    0,              SEN(ioprio_set),                "ioprio_set"            },
-[1024 + 251] = { 2,    0,              SEN(ioprio_get),                "ioprio_get"            },
-[1024 + 252] = { 6,    TM,             SEN(move_pages),                "move_pages"            },
-[1024 + 253] = { 0,    TD,             SEN(inotify_init),              "inotify_init"          },
-[1024 + 254] = { 3,    TD|TF,          SEN(inotify_add_watch),         "inotify_add_watch"     },
-[1024 + 255] = { 2,    TD,             SEN(inotify_rm_watch),          "inotify_rm_watch"      },
-[1024 + 256] = { 4,    TM,             SEN(migrate_pages),             "migrate_pages"         },
-[1024 + 257] = { 4,    TD|TF,          SEN(openat),                    "openat"                },
-[1024 + 258] = { 3,    TD|TF,          SEN(mkdirat),                   "mkdirat"               },
-[1024 + 259] = { 4,    TD|TF,          SEN(mknodat),                   "mknodat"               },
-[1024 + 260] = { 5,    TD|TF,          SEN(fchownat),                  "fchownat"              },
-[1024 + 261] = { 3,    TD|TF,          SEN(futimesat),                 "futimesat"             },
-[1024 + 262] = { 4,    TD|TF|TFST|TSTA,SEN(newfstatat),                "newfstatat"            },
-[1024 + 263] = { 3,    TD|TF,          SEN(unlinkat),                  "unlinkat"              },
-[1024 + 264] = { 4,    TD|TF,          SEN(renameat),                  "renameat"              },
-[1024 + 265] = { 5,    TD|TF,          SEN(linkat),                    "linkat"                },
-[1024 + 266] = { 3,    TD|TF,          SEN(symlinkat),                 "symlinkat"             },
-[1024 + 267] = { 4,    TD|TF,          SEN(readlinkat),                "readlinkat"            },
-[1024 + 268] = { 3,    TD|TF,          SEN(fchmodat),                  "fchmodat"              },
-[1024 + 269] = { 3,    TD|TF,          SEN(faccessat),                 "faccessat"             },
-[1024 + 270] = { 6,    TD,             SEN(pselect6_time64),           "pselect6"              },
-[1024 + 271] = { 5,    TD,             SEN(ppoll_time64),              "ppoll"                 },
-[1024 + 272] = { 1,    TP,             SEN(unshare),                   "unshare"               },
-[1024 + 273] = { 6,    TD,             SEN(splice),                    "splice"                },
-[1024 + 274] = { 2,    0,              SEN(set_robust_list),           "set_robust_list"       },
-[1024 + 275] = { 3,    0,              SEN(get_robust_list),           "get_robust_list"       },
-[1024 + 276] = { 4,    TD,             SEN(sync_file_range),           "sync_file_range"       },
-[1024 + 277] = { 4,    TD,             SEN(tee),                       "tee"                   },
-[1024 + 278] = { 4,    TD,             SEN(vmsplice),                  "vmsplice"              },
-[1024 + 279] = { 4,    TD,             SEN(fallocate),                 "fallocate"             },
-[1024 + 280] = { 3,    0,              SEN(getcpu),                    "getcpu"                },
-[1024 + 281] = { 6,    TD,             SEN(epoll_pwait),               "epoll_pwait"           },
-[1024 + 282] = { 4,    TD|TF,          SEN(utimensat_time64),          "utimensat"             },
-[1024 + 283] = { 3,    TD|TS,          SEN(signalfd),                  "signalfd"              },
-[1024 + 284] = { 4,    TD,             SEN(timerfd),                   "timerfd"               },
-[1024 + 285] = { 1,    TD,             SEN(eventfd),                   "eventfd"               },
-[1024 + 286] = { 2,    TD,             SEN(timerfd_create),            "timerfd_create"        },
-[1024 + 287] = { 4,    TD,             SEN(timerfd_settime64),         "timerfd_settime"       },
-[1024 + 288] = { 2,    TD,             SEN(timerfd_gettime64),         "timerfd_gettime"       },
-[1024 + 289] = { 4,    TD|TS,          SEN(signalfd4),                 "signalfd4"             },
-[1024 + 290] = { 2,    TD,             SEN(eventfd2),                  "eventfd2"              },
-[1024 + 291] = { 1,    TD,             SEN(epoll_create1),             "epoll_create1"         },
-[1024 + 292] = { 3,    TD,             SEN(dup3),                      "dup3"                  },
-[1024 + 293] = { 2,    TD,             SEN(pipe2),                     "pipe2"                 },
-[1024 + 294] = { 1,    TD,             SEN(inotify_init1),             "inotify_init1"         },
-[1024 + 295] = { 4,    TD,             SEN(preadv),                    "preadv"                },
-[1024 + 296] = { 4,    TD,             SEN(pwritev),                   "pwritev"               },
-[1024 + 297] = { 4,    TP|TS,          SEN(rt_tgsigqueueinfo),         "rt_tgsigqueueinfo"     },
-[1024 + 298] = { 5,    TN,             SEN(recvmmsg_time64),           "recvmmsg"              },
-[1024 + 299] = { 2,    TD,             SEN(fanotify_init),             "fanotify_init"         },
-[1024 + 300] = { 5,    TD|TF,          SEN(fanotify_mark),             "fanotify_mark"         },
-[1024 + 301] = { 4,    0,              SEN(prlimit64),                 "prlimit64"             },
-[1024 + 302] = { 5,    TD|TF,          SEN(name_to_handle_at),         "name_to_handle_at"     },
-[1024 + 303] = { 3,    TD,             SEN(open_by_handle_at),         "open_by_handle_at"     },
-[1024 + 304] = { 2,    0,              SEN(clock_adjtime64),           "clock_adjtime"         },
-[1024 + 305] = { 1,    TD,             SEN(syncfs),                    "syncfs"                },
-[1024 + 306] = { 2,    TD,             SEN(setns),                     "setns"                 },
-[1024 + 307] = { 4,    TN,             SEN(sendmmsg),                  "sendmmsg"              },
-[1024 + 308] = { 6,    0,              SEN(process_vm_readv),          "process_vm_readv"      },
-[1024 + 309] = { 6,    0,              SEN(process_vm_writev),         "process_vm_writev"     },
-[1024 + 310] = { 4,    TN,             SEN(accept4),                   "accept4"               },
-[1024 + 311] = { 3,    TD,             SEN(finit_module),              "finit_module"          },
-[1024 + 312] = { 3,    0,              SEN(sched_setattr),             "sched_setattr"         },
-[1024 + 313] = { 4,    0,              SEN(sched_getattr),             "sched_getattr"         },
-[1024 + 314] = { 5,    TD|TF,          SEN(renameat2),                 "renameat2"             },
-[1024 + 315] = { 3,    0,              SEN(getrandom),                 "getrandom"             },
-[1024 + 316] = { 2,    TD,             SEN(memfd_create),              "memfd_create"          },
-[1024 + 317] = { 3,    TD,             SEN(bpf),                       "bpf"                   },
-[1024 + 318] = { 5,    TD|TF|TP|SE|SI, SEN(execveat),                  "execveat"              },
-[1024 + 319] = { 1,    TD,             SEN(userfaultfd),               "userfaultfd"           },
-[1024 + 320] = { 2,    0,              SEN(membarrier),                "membarrier"            },
-[1024 + 321] = { 5,    0,              SEN(kcmp),                      "kcmp"                  },
-[1024 + 322] = { 3,    TM,             SEN(mlock2),                    "mlock2"                },
-[1024 + 323] = { 6,    TD,             SEN(copy_file_range),           "copy_file_range"       },
-[1024 + 324] = { 6,    TD,             SEN(preadv2),                   "preadv2"               },
-[1024 + 325] = { 6,    TD,             SEN(pwritev2),                  "pwritev2"              },
-[1024 + 326] = { 5,    TD|TF|TSTA,     SEN(statx),                     "statx"                 },
-[1024 + 327] = { 6,    0,              SEN(io_pgetevents_time64),      "io_pgetevents"         },
-[1024 + 328] = { 5,    TD,             SEN(perf_event_open),           "perf_event_open"       },
-[1024 + 329] = { 3,    0,              SEN(seccomp),                   "seccomp"               },
-[1024 + 330] = { 4,    TM|SI,          SEN(pkey_mprotect),             "pkey_mprotect"         },
-[1024 + 331] = { 2,    0,              SEN(pkey_alloc),                "pkey_alloc"            },
-[1024 + 332] = { 1,    0,              SEN(pkey_free),                 "pkey_free"             },
-[1024 + 333] = { 4,    0,              SEN(rseq),                      "rseq"                  },
-/* [1024 + 334 ... 1024 + 423] - reserved to sync up with other architectures */
-[1024 + 424] = { 4,    TD|TS,          SEN(pidfd_send_signal),         "pidfd_send_signal"     },
-[1024 + 425] = { 2,    TD,             SEN(io_uring_setup),            "io_uring_setup"        },
-[1024 + 426] = { 6,    TD|TS,          SEN(io_uring_enter),            "io_uring_enter"        },
-[1024 + 427] = { 4,    TD|TM,          SEN(io_uring_register),         "io_uring_register"     },
+#ifdef SYSCALLENT_BASE_NR
+/*
+ * The syscallent table starts from 0 because
+ * it is optimized for use with shuffle_scno.
+ */
+# define BASE_NR 0
+#else
+/*
+ * __NR_* constants start from 1024 as usual.
+ * (1U << 10) cannot be used here because SCNO_SED is not smart enough.
+ */
+# define BASE_NR 1024
+#endif
+[BASE_NR +   0] = { 0, 0,              SEN(printargs),                 "ni_syscall"            },
+[BASE_NR +   1] = { 1, TP|SE,          SEN(exit),                      "exit"                  },
+[BASE_NR +   2] = { 3, TD,             SEN(read),                      "read"                  },
+[BASE_NR +   3] = { 3, TD,             SEN(write),                     "write"                 },
+[BASE_NR +   4] = { 3, TD|TF,          SEN(open),                      "open"                  },
+[BASE_NR +   5] = { 1, TD,             SEN(close),                     "close"                 },
+[BASE_NR +   6] = { 2, TD|TF,          SEN(creat),                     "creat"                 },
+[BASE_NR +   7] = { 2, TF,             SEN(link),                      "link"                  },
+[BASE_NR +   8] = { 1, TF,             SEN(unlink),                    "unlink"                },
+[BASE_NR +   9] = { 3, TF|TP|TSD|SE|SI,        SEN(execve),                    "execve"                },
+[BASE_NR +  10] = { 1, TF,             SEN(chdir),                     "chdir"                 },
+[BASE_NR +  11] = { 1, TD,             SEN(fchdir),                    "fchdir"                },
+[BASE_NR +  12] = { 2, TF,             SEN(utimes),                    "utimes"                },
+[BASE_NR +  13] = { 3, TF,             SEN(mknod),                     "mknod"                 },
+[BASE_NR +  14] = { 2, TF,             SEN(chmod),                     "chmod"                 },
+[BASE_NR +  15] = { 3, TF,             SEN(chown),                     "chown"                 },
+[BASE_NR +  16] = { 3, TD,             SEN(lseek),                     "lseek"                 },
+[BASE_NR +  17] = { 0, PU|NF,          SEN(getpid),                    "getpid"                },
+[BASE_NR +  18] = { 0, PU|NF,          SEN(getppid),                   "getppid"               },
+[BASE_NR +  19] = { 5, TF,             SEN(mount),                     "mount"                 },
+[BASE_NR +  20] = { 2, TF,             SEN(umount2),                   "umount"                },
+[BASE_NR +  21] = { 1, TC,             SEN(setuid),                    "setuid"                },
+[BASE_NR +  22] = { 0, TC|PU|NF,       SEN(getuid),                    "getuid"                },
+[BASE_NR +  23] = { 0, TC|PU|NF,       SEN(geteuid),                   "geteuid"               },
+[BASE_NR +  24] = { 4, 0,              SEN(ptrace),                    "ptrace"                },
+[BASE_NR +  25] = { 2, TF,             SEN(access),                    "access"                },
+[BASE_NR +  26] = { 0, 0,              SEN(sync),                      "sync"                  },
+[BASE_NR +  27] = { 1, TD,             SEN(fsync),                     "fsync"                 },
+[BASE_NR +  28] = { 1, TD,             SEN(fdatasync),                 "fdatasync"             },
+[BASE_NR +  29] = { 2, TS|TP,          SEN(kill),                      "kill"                  },
+[BASE_NR +  30] = { 2, TF,             SEN(rename),                    "rename"                },
+[BASE_NR +  31] = { 2, TF,             SEN(mkdir),                     "mkdir"                 },
+[BASE_NR +  32] = { 1, TF,             SEN(rmdir),                     "rmdir"                 },
+[BASE_NR +  33] = { 1, TD,             SEN(dup),                       "dup"                   },
+[BASE_NR +  34] = { 0, TD,             SEN(pipe),                      "pipe"                  },
+[BASE_NR +  35] = { 1, 0,              SEN(times),                     "times"                 },
+[BASE_NR +  36] = { 1, TM|SI,          SEN(brk),                       "brk"                   },
+[BASE_NR +  37] = { 1, TC,             SEN(setgid),                    "setgid"                },
+[BASE_NR +  38] = { 0, TC|PU|NF,       SEN(getgid),                    "getgid"                },
+[BASE_NR +  39] = { 0, TC|PU|NF,       SEN(getegid),                   "getegid"               },
+[BASE_NR +  40] = { 1, TF,             SEN(acct),                      "acct"                  },
+[BASE_NR +  41] = { 3, TD,             SEN(ioctl),                     "ioctl"                 },
+[BASE_NR +  42] = { 3, TD,             SEN(fcntl),                     "fcntl"                 },
+[BASE_NR +  43] = { 1, NF,             SEN(umask),                     "umask"                 },
+[BASE_NR +  44] = { 1, TF,             SEN(chroot),                    "chroot"                },
+[BASE_NR +  45] = { 2, TSFA,           SEN(ustat),                     "ustat"                 },
+[BASE_NR +  46] = { 2, TD,             SEN(dup2),                      "dup2"                  },
+[BASE_NR +  47] = { 2, TC,             SEN(setreuid),                  "setreuid"              },
+[BASE_NR +  48] = { 2, TC,             SEN(setregid),                  "setregid"              },
+[BASE_NR +  49] = { 3, TC,             SEN(getresuid),                 "getresuid"             },
+[BASE_NR +  50] = { 3, TC,             SEN(setresuid),                 "setresuid"             },
+[BASE_NR +  51] = { 3, TC,             SEN(getresgid),                 "getresgid"             },
+[BASE_NR +  52] = { 3, TC,             SEN(setresgid),                 "setresgid"             },
+[BASE_NR +  53] = { 2, TC,             SEN(getgroups),                 "getgroups"             },
+[BASE_NR +  54] = { 2, TC,             SEN(setgroups),                 "setgroups"             },
+[BASE_NR +  55] = { 1, 0,              SEN(getpgid),                   "getpgid"               },
+[BASE_NR +  56] = { 2, 0,              SEN(setpgid),                   "setpgid"               },
+[BASE_NR +  57] = { 0, 0,              SEN(setsid),                    "setsid"                },
+[BASE_NR +  58] = { 1, 0,              SEN(getsid),                    "getsid"                },
+[BASE_NR +  59] = { 2, 0,              SEN(sethostname),               "sethostname"           },
+[BASE_NR +  60] = { 2, 0,              SEN(setrlimit),                 "setrlimit"             },
+[BASE_NR +  61] = { 2, 0,              SEN(getrlimit),                 "getrlimit"             },
+[BASE_NR +  62] = { 2, 0,              SEN(getrusage),                 "getrusage"             },
+[BASE_NR +  63] = { 2, TCL,            SEN(gettimeofday),              "gettimeofday"          },
+[BASE_NR +  64] = { 2, TCL,            SEN(settimeofday),              "settimeofday"          },
+[BASE_NR +  65] = { 5, TD,             SEN(select),                    "select"                },
+[BASE_NR +  66] = { 3, TD,             SEN(poll_time64),               "poll"                  },
+[BASE_NR +  67] = { 2, TF,             SEN(symlink),                   "symlink"               },
+[BASE_NR +  68] = { 3, TF,             SEN(readlink),                  "readlink"              },
+[BASE_NR +  69] = { 1, TF,             SEN(uselib),                    "uselib"                },
+[BASE_NR +  70] = { 2, TF,             SEN(swapon),                    "swapon"                },
+[BASE_NR +  71] = { 1, TF,             SEN(swapoff),                   "swapoff"               },
+[BASE_NR +  72] = { 4, 0,              SEN(reboot),                    "reboot"                },
+[BASE_NR +  73] = { 2, TF,             SEN(truncate),                  "truncate"              },
+[BASE_NR +  74] = { 2, TD,             SEN(ftruncate),                 "ftruncate"             },
+[BASE_NR +  75] = { 2, TD,             SEN(fchmod),                    "fchmod"                },
+[BASE_NR +  76] = { 3, TD,             SEN(fchown),                    "fchown"                },
+[BASE_NR +  77] = { 2, 0,              SEN(getpriority),               "getpriority"           },
+[BASE_NR +  78] = { 3, 0,              SEN(setpriority),               "setpriority"           },
+[BASE_NR +  79] = { 2, TF|TSF|TSFA,    SEN(statfs),                    "statfs"                },
+[BASE_NR +  80] = { 2, TD|TFSF|TSFA,   SEN(fstatfs),                   "fstatfs"               },
+[BASE_NR +  81] = { 0, PU|NF,          SEN(gettid),                    "gettid"                },
+[BASE_NR +  82] = { 3, TI,             SEN(semget),                    "semget"                },
+[BASE_NR +  83] = { 3, TI,             SEN(semop),                     "semop"                 },
+[BASE_NR +  84] = { 4, TI,             SEN(semctl),                    "semctl"                },
+[BASE_NR +  85] = { 2, TI,             SEN(msgget),                    "msgget"                },
+[BASE_NR +  86] = { 4, TI,             SEN(msgsnd),                    "msgsnd"                },
+[BASE_NR +  87] = { 5, TI,             SEN(msgrcv),                    "msgrcv"                },
+[BASE_NR +  88] = { 3, TI,             SEN(msgctl),                    "msgctl"                },
+[BASE_NR +  89] = { 3, TI,             SEN(shmget),                    "shmget"                },
+[BASE_NR +  90] = { 3, TI|TM|SI,       SEN(shmat),                     "shmat"                 },
+[BASE_NR +  91] = { 1, TI|TM|SI,       SEN(shmdt),                     "shmdt"                 },
+[BASE_NR +  92] = { 3, TI,             SEN(shmctl),                    "shmctl"                },
+[BASE_NR +  93] = { 3, 0,              SEN(syslog),                    "syslog"                },
+[BASE_NR +  94] = { 3, 0,              SEN(setitimer),                 "setitimer"             },
+[BASE_NR +  95] = { 2, 0,              SEN(getitimer),                 "getitimer"             },
+[BASE_NR +  96] = { 2, TF|TST|TSTA,    SEN(stat),                      "stat"                  },
+[BASE_NR +  97] = { 2, TF|TLST|TSTA,   SEN(lstat),                     "lstat"                 },
+[BASE_NR +  98] = { 2, TD|TFST|TSTA,   SEN(fstat),                     "fstat"                 },
+[BASE_NR +  99] = { 0, 0,              SEN(vhangup),                   "vhangup"               },
+[BASE_NR + 100] = { 3, TF,             SEN(chown),                     "lchown"                },
+[BASE_NR + 101] = { 5, TM|SI,          SEN(remap_file_pages),          "remap_file_pages"      },
+[BASE_NR + 102] = { 4, TP,             SEN(wait4),                     "wait4"                 },
+[BASE_NR + 103] = { 1, 0,              SEN(sysinfo),                   "sysinfo"               },
+[BASE_NR + 104] = { 5, TP,             SEN(clone),                     "clone"                 },
+[BASE_NR + 105] = { 2, 0,              SEN(setdomainname),             "setdomainname"         },
+[BASE_NR + 106] = { 1, 0,              SEN(uname),                     "uname"                 },
+[BASE_NR + 107] = { 1, TCL,            SEN(adjtimex64),                "adjtimex"              },
+[BASE_NR + 108] = { 2, 0,              SEN(create_module),             "create_module"         },
+[BASE_NR + 109] = { 3, 0,              SEN(init_module),               "init_module"           },
+[BASE_NR + 110] = { 2, 0,              SEN(delete_module),             "delete_module"         },
+[BASE_NR + 111] = { 1, 0,              SEN(get_kernel_syms),           "get_kernel_syms"       },
+[BASE_NR + 112] = { 5, 0,              SEN(query_module),              "query_module"          },
+[BASE_NR + 113] = { 4, TF,             SEN(quotactl),                  "quotactl"              },
+[BASE_NR + 114] = { 2, 0,              SEN(bdflush),                   "bdflush"               },
+[BASE_NR + 115] = { 3, 0,              SEN(sysfs),                     "sysfs"                 },
+[BASE_NR + 116] = { 1, NF,             SEN(personality),               "personality"           },
+[BASE_NR + 117] = { 5, 0,              SEN(afs_syscall),               "afs_syscall"           },
+[BASE_NR + 118] = { 1, TC|NF,          SEN(setfsuid),                  "setfsuid"              },
+[BASE_NR + 119] = { 1, TC|NF,          SEN(setfsgid),                  "setfsgid"              },
+[BASE_NR + 120] = { 3, TD,             SEN(getdents),                  "getdents"              },
+[BASE_NR + 121] = { 2, TD,             SEN(flock),                     "flock"                 },
+[BASE_NR + 122] = { 3, TD,             SEN(readv),                     "readv"                 },
+[BASE_NR + 123] = { 3, TD,             SEN(writev),                    "writev"                },
+[BASE_NR + 124] = { 4, TD,             SEN(pread),                     "pread64"               },
+[BASE_NR + 125] = { 4, TD,             SEN(pwrite),                    "pwrite64"              },
+[BASE_NR + 126] = { 1, 0,              SEN(printargs),                 "_sysctl"               },
+[BASE_NR + 127] = { 6, TD|TM|SI,       SEN(mmap),                      "mmap"                  },
+[BASE_NR + 128] = { 2, TM|SI,          SEN(munmap),                    "munmap"                },
+[BASE_NR + 129] = { 2, TM,             SEN(mlock),                     "mlock"                 },
+[BASE_NR + 130] = { 1, TM,             SEN(mlockall),                  "mlockall"              },
+[BASE_NR + 131] = { 3, TM|SI,          SEN(mprotect),                  "mprotect"              },
+[BASE_NR + 132] = { 5, TM|SI,          SEN(mremap),                    "mremap"                },
+[BASE_NR + 133] = { 3, TM,             SEN(msync),                     "msync"                 },
+[BASE_NR + 134] = { 2, TM,             SEN(munlock),                   "munlock"               },
+[BASE_NR + 135] = { 0, TM,             SEN(munlockall),                "munlockall"            },
+[BASE_NR + 136] = { 2, 0,              SEN(sched_getparam),            "sched_getparam"        },
+[BASE_NR + 137] = { 2, 0,              SEN(sched_setparam),            "sched_setparam"        },
+[BASE_NR + 138] = { 1, 0,              SEN(sched_getscheduler),        "sched_getscheduler"    },
+[BASE_NR + 139] = { 3, 0,              SEN(sched_setscheduler),        "sched_setscheduler"    },
+[BASE_NR + 140] = { 0, 0,              SEN(sched_yield),               "sched_yield"           },
+[BASE_NR + 141] = { 1, 0,              SEN(sched_get_priority_max),    "sched_get_priority_max"},
+[BASE_NR + 142] = { 1, 0,              SEN(sched_get_priority_min),    "sched_get_priority_min"},
+[BASE_NR + 143] = { 2, 0,              SEN(sched_rr_get_interval_time64),"sched_rr_get_interval"},
+[BASE_NR + 144] = { 2, 0,              SEN(nanosleep_time64),          "nanosleep"             },
+[BASE_NR + 145] = { 3, 0,              SEN(nfsservctl),                "nfsservctl"            },
+[BASE_NR + 146] = { 5, TC,             SEN(prctl),                     "prctl"                 },
+[BASE_NR + 147] = { 0, PU|NF,          SEN(getpagesize),               "old_getpagesize"       },
+[BASE_NR + 148] = { 6, TD|TM|SI,       SEN(mmap_pgoff),                "mmap2"                 },
+[BASE_NR + 149] = { 5, 0,              SEN(printargs),                 "pciconfig_read"        },
+[BASE_NR + 150] = { 5, 0,              SEN(printargs),                 "pciconfig_write"       },
+[BASE_NR + 151] = { MA,        0,              SEN(printargs),                 "perfmonctl"            },
+[BASE_NR + 152] = { 2, TS,             SEN(sigaltstack),               "sigaltstack"           },
+[BASE_NR + 153] = { 4, TS,             SEN(rt_sigaction),              "rt_sigaction"          },
+[BASE_NR + 154] = { 2, TS,             SEN(rt_sigpending),             "rt_sigpending"         },
+[BASE_NR + 155] = { 4, TS,             SEN(rt_sigprocmask),            "rt_sigprocmask"        },
+[BASE_NR + 156] = { 3, TS|TP,          SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
+[BASE_NR + 157] = { 0, TS,             SEN(rt_sigreturn),              "rt_sigreturn"          },
+[BASE_NR + 158] = { 2, TS,             SEN(rt_sigsuspend),             "rt_sigsuspend"         },
+[BASE_NR + 159] = { 4, TS,             SEN(rt_sigtimedwait_time64),    "rt_sigtimedwait"       },
+[BASE_NR + 160] = { 2, TF,             SEN(getcwd),                    "getcwd"                },
+[BASE_NR + 161] = { 2, TC,             SEN(capget),                    "capget"                },
+[BASE_NR + 162] = { 2, TC,             SEN(capset),                    "capset"                },
+[BASE_NR + 163] = { 4, TD|TN,          SEN(sendfile),                  "sendfile"              },
+[BASE_NR + 164] = { 5, TN,             SEN(getpmsg),                   "getpmsg"               },
+[BASE_NR + 165] = { 5, TN,             SEN(putpmsg),                   "putpmsg"               },
+[BASE_NR + 166] = { 3, TN,             SEN(socket),                    "socket"                },
+[BASE_NR + 167] = { 3, TN,             SEN(bind),                      "bind"                  },
+[BASE_NR + 168] = { 3, TN,             SEN(connect),                   "connect"               },
+[BASE_NR + 169] = { 2, TN,             SEN(listen),                    "listen"                },
+[BASE_NR + 170] = { 3, TN,             SEN(accept),                    "accept"                },
+[BASE_NR + 171] = { 3, TN,             SEN(getsockname),               "getsockname"           },
+[BASE_NR + 172] = { 3, TN,             SEN(getpeername),               "getpeername"           },
+[BASE_NR + 173] = { 4, TN,             SEN(socketpair),                "socketpair"            },
+[BASE_NR + 174] = { 4, TN,             SEN(send),                      "send"                  },
+[BASE_NR + 175] = { 6, TN,             SEN(sendto),                    "sendto"                },
+[BASE_NR + 176] = { 4, TN,             SEN(recv),                      "recv"                  },
+[BASE_NR + 177] = { 6, TN,             SEN(recvfrom),                  "recvfrom"              },
+[BASE_NR + 178] = { 2, TN,             SEN(shutdown),                  "shutdown"              },
+[BASE_NR + 179] = { 5, TN,             SEN(setsockopt),                "setsockopt"            },
+[BASE_NR + 180] = { 5, TN,             SEN(getsockopt),                "getsockopt"            },
+[BASE_NR + 181] = { 3, TN,             SEN(sendmsg),                   "sendmsg"               },
+[BASE_NR + 182] = { 3, TN,             SEN(recvmsg),                   "recvmsg"               },
+[BASE_NR + 183] = { 2, TF,             SEN(pivotroot),                 "pivot_root"            },
+[BASE_NR + 184] = { 3, TM,             SEN(mincore),                   "mincore"               },
+[BASE_NR + 185] = { 3, TM,             SEN(madvise),                   "madvise"               },
+[BASE_NR + 186] = { 2, TF|TST|TSTA,    SEN(stat),                      "stat"                  },
+[BASE_NR + 187] = { 2, TF|TLST|TSTA,   SEN(lstat),                     "lstat"                 },
+[BASE_NR + 188] = { 2, TD|TFST|TSTA,   SEN(fstat),                     "fstat"                 },
+[BASE_NR + 189] = { 6, TP,             SEN(clone),                     "clone2"                },
+[BASE_NR + 190] = { 3, TD,             SEN(getdents64),                "getdents64"            },
+[BASE_NR + 191] = { 2, 0,              SEN(printargs),                 "getunwind"             },
+[BASE_NR + 192] = { 3, TD,             SEN(readahead),                 "readahead"             },
+[BASE_NR + 193] = { 5, TF,             SEN(setxattr),                  "setxattr"              },
+[BASE_NR + 194] = { 5, TF,             SEN(setxattr),                  "lsetxattr"             },
+[BASE_NR + 195] = { 5, TD,             SEN(fsetxattr),                 "fsetxattr"             },
+[BASE_NR + 196] = { 4, TF,             SEN(getxattr),                  "getxattr"              },
+[BASE_NR + 197] = { 4, TF,             SEN(getxattr),                  "lgetxattr"             },
+[BASE_NR + 198] = { 4, TD,             SEN(fgetxattr),                 "fgetxattr"             },
+[BASE_NR + 199] = { 3, TF,             SEN(listxattr),                 "listxattr"             },
+[BASE_NR + 200] = { 3, TF,             SEN(listxattr),                 "llistxattr"            },
+[BASE_NR + 201] = { 3, TD,             SEN(flistxattr),                "flistxattr"            },
+[BASE_NR + 202] = { 2, TF,             SEN(removexattr),               "removexattr"           },
+[BASE_NR + 203] = { 2, TF,             SEN(removexattr),               "lremovexattr"          },
+[BASE_NR + 204] = { 2, TD,             SEN(fremovexattr),              "fremovexattr"          },
+[BASE_NR + 205] = { 2, TS|TP,          SEN(tkill),                     "tkill"                 },
+[BASE_NR + 206] = { 6, 0,              SEN(futex_time64),              "futex"                 },
+[BASE_NR + 207] = { 3, 0,              SEN(sched_setaffinity),         "sched_setaffinity"     },
+[BASE_NR + 208] = { 3, 0,              SEN(sched_getaffinity),         "sched_getaffinity"     },
+[BASE_NR + 209] = { 1, 0,              SEN(set_tid_address),           "set_tid_address"       },
+[BASE_NR + 210] = { 4, TD,             SEN(fadvise64),                 "fadvise64"             },
+[BASE_NR + 211] = { 3, TS|TP,          SEN(tgkill),                    "tgkill"                },
+[BASE_NR + 212] = { 1, TP|SE,          SEN(exit),                      "exit_group"            },
+[BASE_NR + 213] = { 3, 0,              SEN(lookup_dcookie),            "lookup_dcookie"        },
+[BASE_NR + 214] = { 2, TM,             SEN(io_setup),                  "io_setup"              },
+[BASE_NR + 215] = { 1, TM,             SEN(io_destroy),                "io_destroy"            },
+[BASE_NR + 216] = { 5, 0,              SEN(io_getevents_time64),       "io_getevents"          },
+[BASE_NR + 217] = { 3, 0,              SEN(io_submit),                 "io_submit"             },
+[BASE_NR + 218] = { 3, 0,              SEN(io_cancel),                 "io_cancel"             },
+[BASE_NR + 219] = { 1, TD,             SEN(epoll_create),              "epoll_create"          },
+[BASE_NR + 220] = { 4, TD,             SEN(epoll_ctl),                 "epoll_ctl"             },
+[BASE_NR + 221] = { 4, TD,             SEN(epoll_wait),                "epoll_wait"            },
+[BASE_NR + 222] = { 0, 0,              SEN(restart_syscall),           "restart_syscall"       },
+[BASE_NR + 223] = { 4, TI,             SEN(semtimedop_time64),         "semtimedop"            },
+[BASE_NR + 224] = { 3, 0,              SEN(timer_create),              "timer_create"          },
+[BASE_NR + 225] = { 4, 0,              SEN(timer_settime64),           "timer_settime"         },
+[BASE_NR + 226] = { 2, 0,              SEN(timer_gettime64),           "timer_gettime"         },
+[BASE_NR + 227] = { 1, 0,              SEN(timer_getoverrun),          "timer_getoverrun"      },
+[BASE_NR + 228] = { 1, 0,              SEN(timer_delete),              "timer_delete"          },
+[BASE_NR + 229] = { 2, TCL,            SEN(clock_settime64),           "clock_settime"         },
+[BASE_NR + 230] = { 2, TCL,            SEN(clock_gettime64),           "clock_gettime"         },
+[BASE_NR + 231] = { 2, TCL,            SEN(clock_getres_time64),       "clock_getres"          },
+[BASE_NR + 232] = { 4, 0,              SEN(clock_nanosleep_time64),    "clock_nanosleep"       },
+[BASE_NR + 233] = { 3, TD|TFSF|TSFA,   SEN(fstatfs64),                 "fstatfs64"             },
+[BASE_NR + 234] = { 3, TF|TSF|TSFA,    SEN(statfs64),                  "statfs64"              },
+[BASE_NR + 235] = { 6, TM,             SEN(mbind),                     "mbind"                 },
+[BASE_NR + 236] = { 5, TM,             SEN(get_mempolicy),             "get_mempolicy"         },
+[BASE_NR + 237] = { 3, TM,             SEN(set_mempolicy),             "set_mempolicy"         },
+[BASE_NR + 238] = { 4, TD,             SEN(mq_open),                   "mq_open"               },
+[BASE_NR + 239] = { 1, 0,              SEN(mq_unlink),                 "mq_unlink"             },
+[BASE_NR + 240] = { 5, TD,             SEN(mq_timedsend_time64),       "mq_timedsend"          },
+[BASE_NR + 241] = { 5, TD,             SEN(mq_timedreceive_time64),    "mq_timedreceive"       },
+[BASE_NR + 242] = { 2, TD,             SEN(mq_notify),                 "mq_notify"             },
+[BASE_NR + 243] = { 3, TD,             SEN(mq_getsetattr),             "mq_getsetattr"         },
+[BASE_NR + 244] = { 4, 0,              SEN(kexec_load),                "kexec_load"            },
+[BASE_NR + 245] = { 5, 0,              SEN(vserver),                   "vserver"               },
+[BASE_NR + 246] = { 5, TP,             SEN(waitid),                    "waitid"                },
+[BASE_NR + 247] = { 5, 0,              SEN(add_key),                   "add_key"               },
+[BASE_NR + 248] = { 4, 0,              SEN(request_key),               "request_key"           },
+[BASE_NR + 249] = { 5, 0,              SEN(keyctl),                    "keyctl"                },
+[BASE_NR + 250] = { 3, 0,              SEN(ioprio_set),                "ioprio_set"            },
+[BASE_NR + 251] = { 2, 0,              SEN(ioprio_get),                "ioprio_get"            },
+[BASE_NR + 252] = { 6, TM,             SEN(move_pages),                "move_pages"            },
+[BASE_NR + 253] = { 0, TD,             SEN(inotify_init),              "inotify_init"          },
+[BASE_NR + 254] = { 3, TD|TF,          SEN(inotify_add_watch),         "inotify_add_watch"     },
+[BASE_NR + 255] = { 2, TD,             SEN(inotify_rm_watch),          "inotify_rm_watch"      },
+[BASE_NR + 256] = { 4, TM,             SEN(migrate_pages),             "migrate_pages"         },
+[BASE_NR + 257] = { 4, TD|TF,          SEN(openat),                    "openat"                },
+[BASE_NR + 258] = { 3, TD|TF,          SEN(mkdirat),                   "mkdirat"               },
+[BASE_NR + 259] = { 4, TD|TF,          SEN(mknodat),                   "mknodat"               },
+[BASE_NR + 260] = { 5, TD|TF,          SEN(fchownat),                  "fchownat"              },
+[BASE_NR + 261] = { 3, TD|TF,          SEN(futimesat),                 "futimesat"             },
+[BASE_NR + 262] = { 4, TD|TF|TFST|TSTA,SEN(newfstatat),                "newfstatat"            },
+[BASE_NR + 263] = { 3, TD|TF,          SEN(unlinkat),                  "unlinkat"              },
+[BASE_NR + 264] = { 4, TD|TF,          SEN(renameat),                  "renameat"              },
+[BASE_NR + 265] = { 5, TD|TF,          SEN(linkat),                    "linkat"                },
+[BASE_NR + 266] = { 3, TD|TF,          SEN(symlinkat),                 "symlinkat"             },
+[BASE_NR + 267] = { 4, TD|TF,          SEN(readlinkat),                "readlinkat"            },
+[BASE_NR + 268] = { 3, TD|TF,          SEN(fchmodat),                  "fchmodat"              },
+[BASE_NR + 269] = { 3, TD|TF,          SEN(faccessat),                 "faccessat"             },
+[BASE_NR + 270] = { 6, TD,             SEN(pselect6_time64),           "pselect6"              },
+[BASE_NR + 271] = { 5, TD,             SEN(ppoll_time64),              "ppoll"                 },
+[BASE_NR + 272] = { 1, 0,              SEN(unshare),                   "unshare"               },
+[BASE_NR + 273] = { 6, TD,             SEN(splice),                    "splice"                },
+[BASE_NR + 274] = { 2, 0,              SEN(set_robust_list),           "set_robust_list"       },
+[BASE_NR + 275] = { 3, 0,              SEN(get_robust_list),           "get_robust_list"       },
+[BASE_NR + 276] = { 4, TD,             SEN(sync_file_range),           "sync_file_range"       },
+[BASE_NR + 277] = { 4, TD,             SEN(tee),                       "tee"                   },
+[BASE_NR + 278] = { 4, TD,             SEN(vmsplice),                  "vmsplice"              },
+[BASE_NR + 279] = { 4, TD,             SEN(fallocate),                 "fallocate"             },
+[BASE_NR + 280] = { 3, 0,              SEN(getcpu),                    "getcpu"                },
+[BASE_NR + 281] = { 6, TD,             SEN(epoll_pwait),               "epoll_pwait"           },
+[BASE_NR + 282] = { 4, TD|TF,          SEN(utimensat_time64),          "utimensat"             },
+[BASE_NR + 283] = { 3, TD|TS,          SEN(signalfd),                  "signalfd"              },
+[BASE_NR + 284] = { 4, TD,             SEN(timerfd),                   "timerfd"               },
+[BASE_NR + 285] = { 1, TD,             SEN(eventfd),                   "eventfd"               },
+[BASE_NR + 286] = { 2, TD,             SEN(timerfd_create),            "timerfd_create"        },
+[BASE_NR + 287] = { 4, TD,             SEN(timerfd_settime64),         "timerfd_settime"       },
+[BASE_NR + 288] = { 2, TD,             SEN(timerfd_gettime64),         "timerfd_gettime"       },
+[BASE_NR + 289] = { 4, TD|TS,          SEN(signalfd4),                 "signalfd4"             },
+[BASE_NR + 290] = { 2, TD,             SEN(eventfd2),                  "eventfd2"              },
+[BASE_NR + 291] = { 1, TD,             SEN(epoll_create1),             "epoll_create1"         },
+[BASE_NR + 292] = { 3, TD,             SEN(dup3),                      "dup3"                  },
+[BASE_NR + 293] = { 2, TD,             SEN(pipe2),                     "pipe2"                 },
+[BASE_NR + 294] = { 1, TD,             SEN(inotify_init1),             "inotify_init1"         },
+[BASE_NR + 295] = { 4, TD,             SEN(preadv),                    "preadv"                },
+[BASE_NR + 296] = { 4, TD,             SEN(pwritev),                   "pwritev"               },
+[BASE_NR + 297] = { 4, TP|TS,          SEN(rt_tgsigqueueinfo),         "rt_tgsigqueueinfo"     },
+[BASE_NR + 298] = { 5, TN,             SEN(recvmmsg_time64),           "recvmmsg"              },
+[BASE_NR + 299] = { 2, TD,             SEN(fanotify_init),             "fanotify_init"         },
+[BASE_NR + 300] = { 5, TD|TF,          SEN(fanotify_mark),             "fanotify_mark"         },
+[BASE_NR + 301] = { 4, 0,              SEN(prlimit64),                 "prlimit64"             },
+[BASE_NR + 302] = { 5, TD|TF,          SEN(name_to_handle_at),         "name_to_handle_at"     },
+[BASE_NR + 303] = { 3, TD,             SEN(open_by_handle_at),         "open_by_handle_at"     },
+[BASE_NR + 304] = { 2, TCL,            SEN(clock_adjtime64),           "clock_adjtime"         },
+[BASE_NR + 305] = { 1, TD,             SEN(syncfs),                    "syncfs"                },
+[BASE_NR + 306] = { 2, TD,             SEN(setns),                     "setns"                 },
+[BASE_NR + 307] = { 4, TN,             SEN(sendmmsg),                  "sendmmsg"              },
+[BASE_NR + 308] = { 6, 0,              SEN(process_vm_readv),          "process_vm_readv"      },
+[BASE_NR + 309] = { 6, 0,              SEN(process_vm_writev),         "process_vm_writev"     },
+[BASE_NR + 310] = { 4, TN,             SEN(accept4),                   "accept4"               },
+[BASE_NR + 311] = { 3, TD,             SEN(finit_module),              "finit_module"          },
+[BASE_NR + 312] = { 3, 0,              SEN(sched_setattr),             "sched_setattr"         },
+[BASE_NR + 313] = { 4, 0,              SEN(sched_getattr),             "sched_getattr"         },
+[BASE_NR + 314] = { 5, TD|TF,          SEN(renameat2),                 "renameat2"             },
+[BASE_NR + 315] = { 3, 0,              SEN(getrandom),                 "getrandom"             },
+[BASE_NR + 316] = { 2, TD,             SEN(memfd_create),              "memfd_create"          },
+[BASE_NR + 317] = { 3, TD,             SEN(bpf),                       "bpf"                   },
+[BASE_NR + 318] = { 5, TD|TF|TP|TSD|SE|SI,     SEN(execveat),                  "execveat"              },
+[BASE_NR + 319] = { 1, TD,             SEN(userfaultfd),               "userfaultfd"           },
+[BASE_NR + 320] = { 2, 0,              SEN(membarrier),                "membarrier"            },
+[BASE_NR + 321] = { 5, 0,              SEN(kcmp),                      "kcmp"                  },
+[BASE_NR + 322] = { 3, TM,             SEN(mlock2),                    "mlock2"                },
+[BASE_NR + 323] = { 6, TD,             SEN(copy_file_range),           "copy_file_range"       },
+[BASE_NR + 324] = { 6, TD,             SEN(preadv2),                   "preadv2"               },
+[BASE_NR + 325] = { 6, TD,             SEN(pwritev2),                  "pwritev2"              },
+[BASE_NR + 326] = { 5, TD|TF|TFST|TSTA,SEN(statx),                     "statx"                 },
+[BASE_NR + 327] = { 6, 0,              SEN(io_pgetevents_time64),      "io_pgetevents"         },
+[BASE_NR + 328] = { 5, TD,             SEN(perf_event_open),           "perf_event_open"       },
+[BASE_NR + 329] = { 3, 0,              SEN(seccomp),                   "seccomp"               },
+[BASE_NR + 330] = { 4, TM|SI,          SEN(pkey_mprotect),             "pkey_mprotect"         },
+[BASE_NR + 331] = { 2, 0,              SEN(pkey_alloc),                "pkey_alloc"            },
+[BASE_NR + 332] = { 1, 0,              SEN(pkey_free),                 "pkey_free"             },
+[BASE_NR + 333] = { 4, 0,              SEN(rseq),                      "rseq"                  },
+/* [BASE_NR + 334 ... BASE_NR + 423] - reserved to sync up with other architectures */
+#include "syscallent-common.h"
+#undef BASE_NR
diff --git a/linux/ia64/syscallent_base_nr.h b/linux/ia64/syscallent_base_nr.h
new file mode 100644 (file)
index 0000000..612668e
--- /dev/null
@@ -0,0 +1 @@
+#define SYSCALLENT_BASE_NR (1U << 10)
index cb9b7b3a10f50675d3624e6c4115bac4f70e9b3d..c132bce6f115164654234b1d67fdea4c445168a5 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014-2018 The strace developers.
+ * Copyright (c) 2014-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -44,6 +44,8 @@ struct inet_diag_req_v2 {
 enum {
        INET_DIAG_REQ_NONE,
        INET_DIAG_REQ_BYTECODE,
+       INET_DIAG_REQ_SK_BPF_STORAGES,
+       INET_DIAG_REQ_PROTOCOL,
 };
 
 struct inet_diag_bc_op {
@@ -66,6 +68,7 @@ enum {
        INET_DIAG_BC_MARK_COND,
        INET_DIAG_BC_S_EQ,
        INET_DIAG_BC_D_EQ,
+       INET_DIAG_BC_CGROUP_COND,
 };
 
 struct inet_diag_hostcond {
@@ -116,6 +119,10 @@ enum {
        INET_DIAG_MARK,
        INET_DIAG_BBRINFO,
        INET_DIAG_CLASS_ID,
+       INET_DIAG_MD5SIG,
+       INET_DIAG_ULP_INFO,
+       INET_DIAG_SK_BPF_STORAGES,
+       INET_DIAG_CGROUP_ID,
 };
 
 /* INET_DIAG_MEM */
index 84e8835c7c7f250308efb2158e17641ba9ff4228..05af3dee0940edfe12930a5261f749d813fbf3a1 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -8,6 +8,8 @@
 static int
 arch_set_scno(struct tcb *tcp, kernel_ulong_t scno)
 {
+       if (ptrace_syscall_info_is_valid() && get_regs(tcp) < 0)
+               return -1;
        m68k_regs.orig_d0 = scno;
        return set_regs(tcp->pid);
 }
index f21176975489993a6ad340b89bd363f930751069..e5ebefe179c78f49cf0d6a0c0dbce722ace0bfce 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 1993 Branko Lankester <branko@hacktic.nl>
  * Copyright (c) 1993, 1994, 1995 Rick Sladkey <jrs@world.std.com>
- * Copyright (c) 1995-2019 The strace developers.
+ * Copyright (c) 1995-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -18,9 +18,9 @@
 [  8] = { 2,   TD|TF,          SEN(creat),                     "creat"                 },
 [  9] = { 2,   TF,             SEN(link),                      "link"                  },
 [ 10] = { 1,   TF,             SEN(unlink),                    "unlink"                },
-[ 11] = { 3,   TF|TP|SE|SI,    SEN(execve),                    "execve"                },
+[ 11] = { 3,   TF|TP|TSD|SE|SI,        SEN(execve),                    "execve"                },
 [ 12] = { 1,   TF,             SEN(chdir),                     "chdir"                 },
-[ 13] = { 1,   0,              SEN(time),                      "time"                  },
+[ 13] = { 1,   TCL,            SEN(time),                      "time"                  },
 [ 14] = { 3,   TF,             SEN(mknod),                     "mknod"                 },
 [ 15] = { 2,   TF,             SEN(chmod),                     "chmod"                 },
 [ 16] = { 3,   TF,             SEN(chown16),                   "chown"                 },
@@ -30,8 +30,8 @@
 [ 20] = { 0,   PU|NF,          SEN(getpid),                    "getpid"                },
 [ 21] = { 5,   TF,             SEN(mount),                     "mount"                 },
 [ 22] = { 1,   TF,             SEN(umount),                    "umount"                },
-[ 23] = { 1,   0,              SEN(setuid16),                  "setuid"                },
-[ 24] = { 0,   PU|NF,          SEN(getuid16),                  "getuid"                },
+[ 23] = { 1,   TC,             SEN(setuid16),                  "setuid"                },
+[ 24] = { 0,   TC|PU|NF,       SEN(getuid16),                  "getuid"                },
 [ 25] = { 1,   0,              SEN(stime),                     "stime"                 },
 [ 26] = { 4,   0,              SEN(ptrace),                    "ptrace"                },
 [ 27] = { 1,   0,              SEN(alarm),                     "alarm"                 },
@@ -44,7 +44,7 @@
 [ 34] = { 1,   0,              SEN(nice),                      "nice"                  },
 [ 35] = { 0,   0,              SEN(ftime),                     "ftime"                 },
 [ 36] = { 0,   0,              SEN(sync),                      "sync"                  },
-[ 37] = { 2,   TS,             SEN(kill),                      "kill"                  },
+[ 37] = { 2,   TS|TP,          SEN(kill),                      "kill"                  },
 [ 38] = { 2,   TF,             SEN(rename),                    "rename"                },
 [ 39] = { 2,   TF,             SEN(mkdir),                     "mkdir"                 },
 [ 40] = { 1,   TF,             SEN(rmdir),                     "rmdir"                 },
 [ 43] = { 1,   0,              SEN(times),                     "times"                 },
 [ 44] = { 0,   0,              SEN(prof),                      "prof"                  },
 [ 45] = { 1,   TM|SI,          SEN(brk),                       "brk"                   },
-[ 46] = { 1,   0,              SEN(setgid16),                  "setgid"                },
-[ 47] = { 0,   PU|NF,          SEN(getgid16),                  "getgid"                },
+[ 46] = { 1,   TC,             SEN(setgid16),                  "setgid"                },
+[ 47] = { 0,   TC|PU|NF,       SEN(getgid16),                  "getgid"                },
 [ 48] = { 2,   TS,             SEN(signal),                    "signal"                },
-[ 49] = { 0,   PU|NF,          SEN(geteuid16),                 "geteuid"               },
-[ 50] = { 0,   PU|NF,          SEN(getegid16),                 "getegid"               },
+[ 49] = { 0,   TC|PU|NF,       SEN(geteuid16),                 "geteuid"               },
+[ 50] = { 0,   TC|PU|NF,       SEN(getegid16),                 "getegid"               },
 [ 51] = { 1,   TF,             SEN(acct),                      "acct"                  },
 [ 52] = { 2,   TF,             SEN(umount2),                   "umount2"               },
 [ 53] = { 0,   0,              SEN(lock),                      "lock"                  },
 [ 67] = { 3,   TS,             SEN(sigaction),                 "sigaction"             },
 [ 68] = { 0,   TS,             SEN(sgetmask),                  "sgetmask"              },
 [ 69] = { 1,   TS,             SEN(ssetmask),                  "ssetmask"              },
-[ 70] = { 2,   0,              SEN(setreuid16),                "setreuid"              },
-[ 71] = { 2,   0,              SEN(setregid16),                "setregid"              },
+[ 70] = { 2,   TC,             SEN(setreuid16),                "setreuid"              },
+[ 71] = { 2,   TC,             SEN(setregid16),                "setregid"              },
 [ 72] = { 3,   TS,             SEN(sigsuspend),                "sigsuspend"            },
 [ 73] = { 1,   TS,             SEN(sigpending),                "sigpending"            },
 [ 74] = { 2,   0,              SEN(sethostname),               "sethostname"           },
 [ 75] = { 2,   0,              SEN(setrlimit),                 "setrlimit"             },
 [ 76] = { 2,   0,              SEN(getrlimit),                 "getrlimit"             },
 [ 77] = { 2,   0,              SEN(getrusage),                 "getrusage"             },
-[ 78] = { 2,   0,              SEN(gettimeofday),              "gettimeofday"          },
-[ 79] = { 2,   0,              SEN(settimeofday),              "settimeofday"          },
-[ 80] = { 2,   0,              SEN(getgroups16),               "getgroups"             },
-[ 81] = { 2,   0,              SEN(setgroups16),               "setgroups"             },
+[ 78] = { 2,   TCL,            SEN(gettimeofday),              "gettimeofday"          },
+[ 79] = { 2,   TCL,            SEN(settimeofday),              "settimeofday"          },
+[ 80] = { 2,   TC,             SEN(getgroups16),               "getgroups"             },
+[ 81] = { 2,   TC,             SEN(setgroups16),               "setgroups"             },
 [ 82] = { 1,   TD,             SEN(oldselect),                 "select"                },
 [ 83] = { 2,   TF,             SEN(symlink),                   "symlink"               },
 [ 84] = { 2,   TF|TLST|TSTA,   SEN(oldlstat),                  "oldlstat"              },
 [ 99] = { 2,   TF|TSF|TSFA,    SEN(statfs),                    "statfs"                },
 [100] = { 2,   TD|TFSF|TSFA,   SEN(fstatfs),                   "fstatfs"               },
 [101] = { 3,   0,              SEN(ioperm),                    "ioperm"                },
-[102] = { 2,   TD,             SEN(socketcall),                "socketcall"            },
+[102] = { 2,   TD|TSD,         SEN(socketcall),                "socketcall"            },
 [103] = { 3,   0,              SEN(syslog),                    "syslog"                },
 [104] = { 3,   0,              SEN(setitimer),                 "setitimer"             },
 [105] = { 2,   0,              SEN(getitimer),                 "getitimer"             },
 [114] = { 4,   TP,             SEN(wait4),                     "wait4"                 },
 [115] = { 1,   TF,             SEN(swapoff),                   "swapoff"               },
 [116] = { 1,   0,              SEN(sysinfo),                   "sysinfo"               },
-[117] = { 6,   TI,             SEN(ipc),                       "ipc"                   },
+[117] = { 6,   TI|TSD,         SEN(ipc),                       "ipc"                   },
 [118] = { 1,   TD,             SEN(fsync),                     "fsync"                 },
 [119] = { 0,   TS,             SEN(sigreturn),                 "sigreturn"             },
 [120] = { 5,   TP,             SEN(clone),                     "clone"                 },
 [121] = { 2,   0,              SEN(setdomainname),             "setdomainname"         },
 [122] = { 1,   0,              SEN(uname),                     "uname"                 },
 [123] = { 4,   0,              SEN(cacheflush),                "cacheflush"            },
-[124] = { 1,   0,              SEN(adjtimex32),                "adjtimex"              },
+[124] = { 1,   TCL,            SEN(adjtimex32),                "adjtimex"              },
 [125] = { 3,   TM|SI,          SEN(mprotect),                  "mprotect"              },
 [126] = { 3,   TS,             SEN(sigprocmask),               "sigprocmask"           },
 [127] = { 2,   0,              SEN(create_module),             "create_module"         },
 [135] = { 3,   0,              SEN(sysfs),                     "sysfs"                 },
 [136] = { 1,   NF,             SEN(personality),               "personality"           },
 [137] = { 5,   0,              SEN(afs_syscall),               "afs_syscall"           },
-[138] = { 1,   NF,             SEN(setfsuid16),                "setfsuid"              },
-[139] = { 1,   NF,             SEN(setfsgid16),                "setfsgid"              },
+[138] = { 1,   TC|NF,          SEN(setfsuid16),                "setfsuid"              },
+[139] = { 1,   TC|NF,          SEN(setfsgid16),                "setfsgid"              },
 [140] = { 5,   TD,             SEN(llseek),                    "_llseek"               },
 [141] = { 3,   TD,             SEN(getdents),                  "getdents"              },
 [142] = { 5,   TD,             SEN(select),                    "_newselect"            },
 [161] = { 2,   0,              SEN(sched_rr_get_interval_time32),"sched_rr_get_interval"},
 [162] = { 2,   0,              SEN(nanosleep_time32),          "nanosleep"             },
 [163] = { 5,   TM|SI,          SEN(mremap),                    "mremap"                },
-[164] = { 3,   0,              SEN(setresuid16),               "setresuid"             },
-[165] = { 3,   0,              SEN(getresuid16),               "getresuid"             },
+[164] = { 3,   TC,             SEN(setresuid16),               "setresuid"             },
+[165] = { 3,   TC,             SEN(getresuid16),               "getresuid"             },
 [166] = { 0,   PU|NF,          SEN(getpagesize),               "getpagesize"           },
 [167] = { 5,   0,              SEN(query_module),              "query_module"          },
 [168] = { 3,   TD,             SEN(poll_time32),               "poll"                  },
 [169] = { 3,   0,              SEN(nfsservctl),                "nfsservctl"            },
-[170] = { 3,   0,              SEN(setresgid16),               "setresgid"             },
-[171] = { 3,   0,              SEN(getresgid16),               "getresgid"             },
-[172] = { 5,   0,              SEN(prctl),                     "prctl"                 },
+[170] = { 3,   TC,             SEN(setresgid16),               "setresgid"             },
+[171] = { 3,   TC,             SEN(getresgid16),               "getresgid"             },
+[172] = { 5,   TC,             SEN(prctl),                     "prctl"                 },
 [173] = { 0,   TS,             SEN(rt_sigreturn),              "rt_sigreturn"          },
 [174] = { 4,   TS,             SEN(rt_sigaction),              "rt_sigaction"          },
 [175] = { 4,   TS,             SEN(rt_sigprocmask),            "rt_sigprocmask"        },
 [176] = { 2,   TS,             SEN(rt_sigpending),             "rt_sigpending"         },
 [177] = { 4,   TS,             SEN(rt_sigtimedwait_time32),    "rt_sigtimedwait"       },
-[178] = { 3,   TS,             SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
+[178] = { 3,   TS|TP,          SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
 [179] = { 2,   TS,             SEN(rt_sigsuspend),             "rt_sigsuspend"         },
 [180] = { 5,   TD,             SEN(pread),                     "pread64"               },
 [181] = { 5,   TD,             SEN(pwrite),                    "pwrite64"              },
 [182] = { 3,   TF,             SEN(chown16),                   "lchown"                },
 [183] = { 2,   TF,             SEN(getcwd),                    "getcwd"                },
-[184] = { 2,   0,              SEN(capget),                    "capget"                },
-[185] = { 2,   0,              SEN(capset),                    "capset"                },
+[184] = { 2,   TC,             SEN(capget),                    "capget"                },
+[185] = { 2,   TC,             SEN(capset),                    "capset"                },
 [186] = { 2,   TS,             SEN(sigaltstack),               "sigaltstack"           },
 [187] = { 4,   TD|TN,          SEN(sendfile),                  "sendfile"              },
 [188] = { 5,   TN,             SEN(getpmsg),                   "getpmsg"               },
 [196] = { 2,   TF|TLST|TSTA,   SEN(lstat64),                   "lstat64"               },
 [197] = { 2,   TD|TFST|TSTA,   SEN(fstat64),                   "fstat64"               },
 [198] = { 3,   TF,             SEN(chown),                     "chown32"               },
-[199] = { 0,   PU|NF,          SEN(getuid),                    "getuid32"              },
-[200] = { 0,   PU|NF,          SEN(getgid),                    "getgid32"              },
-[201] = { 0,   PU|NF,          SEN(geteuid),                   "geteuid32"             },
-[202] = { 0,   PU|NF,          SEN(geteuid),                   "getegid32"             },
-[203] = { 2,   0,              SEN(setreuid),                  "setreuid32"            },
-[204] = { 2,   0,              SEN(setregid),                  "setregid32"            },
-[205] = { 2,   0,              SEN(getgroups),                 "getgroups32"           },
-[206] = { 2,   0,              SEN(setgroups),                 "setgroups32"           },
+[199] = { 0,   TC|PU|NF,       SEN(getuid),                    "getuid32"              },
+[200] = { 0,   TC|PU|NF,       SEN(getgid),                    "getgid32"              },
+[201] = { 0,   TC|PU|NF,       SEN(geteuid),                   "geteuid32"             },
+[202] = { 0,   TC|PU|NF,       SEN(geteuid),                   "getegid32"             },
+[203] = { 2,   TC,             SEN(setreuid),                  "setreuid32"            },
+[204] = { 2,   TC,             SEN(setregid),                  "setregid32"            },
+[205] = { 2,   TC,             SEN(getgroups),                 "getgroups32"           },
+[206] = { 2,   TC,             SEN(setgroups),                 "setgroups32"           },
 [207] = { 3,   TD,             SEN(fchown),                    "fchown32"              },
-[208] = { 3,   0,              SEN(setresuid),                 "setresuid32"           },
-[209] = { 3,   0,              SEN(getresuid),                 "getresuid32"           },
-[210] = { 3,   0,              SEN(setresgid),                 "setresgid32"           },
-[211] = { 3,   0,              SEN(getresgid),                 "getresgid32"           },
+[208] = { 3,   TC,             SEN(setresuid),                 "setresuid32"           },
+[209] = { 3,   TC,             SEN(getresuid),                 "getresuid32"           },
+[210] = { 3,   TC,             SEN(setresgid),                 "setresgid32"           },
+[211] = { 3,   TC,             SEN(getresgid),                 "getresgid32"           },
 [212] = { 3,   TF,             SEN(chown),                     "lchown32"              },
-[213] = { 1,   0,              SEN(setuid),                    "setuid32"              },
-[214] = { 1,   0,              SEN(setgid),                    "setgid32"              },
-[215] = { 1,   NF,             SEN(setfsuid),                  "setfsuid32"            },
-[216] = { 1,   NF,             SEN(setfsgid),                  "setfsgid32"            },
+[213] = { 1,   TC,             SEN(setuid),                    "setuid32"              },
+[214] = { 1,   TC,             SEN(setgid),                    "setgid32"              },
+[215] = { 1,   TC|NF,          SEN(setfsuid),                  "setfsuid32"            },
+[216] = { 1,   TC|NF,          SEN(setfsgid),                  "setfsgid32"            },
 [217] = { 2,   TF,             SEN(pivotroot),                 "pivot_root"            },
 [218 ... 219] = { },
 [220] = { 3,   TD,             SEN(getdents64),                "getdents64"            },
 [221] = { 0,   PU|NF,          SEN(gettid),                    "gettid"                },
-[222] = { 2,   TS,             SEN(kill),                      "tkill"                 },
+[222] = { 2,   TS|TP,          SEN(tkill),                     "tkill"                 },
 [223] = { 5,   TF,             SEN(setxattr),                  "setxattr"              },
 [224] = { 5,   TF,             SEN(setxattr),                  "lsetxattr"             },
 [225] = { 5,   TD,             SEN(fsetxattr),                 "fsetxattr"             },
 [256] = { 2,   0,              SEN(timer_gettime32),           "timer_gettime"         },
 [257] = { 1,   0,              SEN(timer_getoverrun),          "timer_getoverrun"      },
 [258] = { 1,   0,              SEN(timer_delete),              "timer_delete"          },
-[259] = { 2,   0,              SEN(clock_settime32),           "clock_settime"         },
-[260] = { 2,   0,              SEN(clock_gettime32),           "clock_gettime"         },
-[261] = { 2,   0,              SEN(clock_getres_time32),       "clock_getres"          },
+[259] = { 2,   TCL,            SEN(clock_settime32),           "clock_settime"         },
+[260] = { 2,   TCL,            SEN(clock_gettime32),           "clock_gettime"         },
+[261] = { 2,   TCL,            SEN(clock_getres_time32),       "clock_getres"          },
 [262] = { 4,   0,              SEN(clock_nanosleep_time32),    "clock_nanosleep"       },
 [263] = { 3,   TF|TSF|TSFA,    SEN(statfs64),                  "statfs64"              },
 [264] = { 3,   TD|TFSF|TSFA,   SEN(fstatfs64),                 "fstatfs64"             },
-[265] = { 3,   TS,             SEN(tgkill),                    "tgkill"                },
+[265] = { 3,   TS|TP,          SEN(tgkill),                    "tgkill"                },
 [266] = { 2,   TF,             SEN(utimes),                    "utimes"                },
 [267] = { 6,   TD,             SEN(fadvise64_64),              "fadvise64_64"          },
 [268] = { 6,   TM,             SEN(mbind),                     "mbind"                 },
 [300] = { 3,   TD|TF,          SEN(faccessat),                 "faccessat"             },
 [301] = { 6,   TD,             SEN(pselect6_time32),           "pselect6"              },
 [302] = { 5,   TD,             SEN(ppoll_time32),              "ppoll"                 },
-[303] = { 1,   TP,             SEN(unshare),                   "unshare"               },
+[303] = { 1,   0,              SEN(unshare),                   "unshare"               },
 [304] = { 2,   0,              SEN(set_robust_list),           "set_robust_list"       },
 [305] = { 3,   0,              SEN(get_robust_list),           "get_robust_list"       },
 [306] = { 6,   TD,             SEN(splice),                    "splice"                },
 [339] = { 4,   0,              SEN(prlimit64),                 "prlimit64"             },
 [340] = { 5,   TD|TF,          SEN(name_to_handle_at),         "name_to_handle_at"     },
 [341] = { 3,   TD,             SEN(open_by_handle_at),         "open_by_handle_at"     },
-[342] = { 2,   0,              SEN(clock_adjtime32),           "clock_adjtime"         },
+[342] = { 2,   TCL,            SEN(clock_adjtime32),           "clock_adjtime"         },
 [343] = { 1,   TD,             SEN(syncfs),                    "syncfs"                },
 [344] = { 2,   TD,             SEN(setns),                     "setns"                 },
 [345] = { 6,   0,              SEN(process_vm_readv),          "process_vm_readv"      },
 [352] = { 3,   0,              SEN(getrandom),                 "getrandom"             },
 [353] = { 2,   TD,             SEN(memfd_create),              "memfd_create"          },
 [354] = { 3,   TD,             SEN(bpf),                       "bpf"                   },
-[355] = { 5,   TD|TF|TP|SE|SI, SEN(execveat),                  "execveat"              },
+[355] = { 5,   TD|TF|TP|TSD|SE|SI,     SEN(execveat),                  "execveat"              },
 [356] = { 3,   TN,             SEN(socket),                    "socket"                },
 [357] = { 4,   TN,             SEN(socketpair),                "socketpair"            },
 [358] = { 3,   TN,             SEN(bind),                      "bind"                  },
 [376] = { 6,   TD,             SEN(copy_file_range),           "copy_file_range"       },
 [377] = { 6,   TD,             SEN(preadv2),                   "preadv2"               },
 [378] = { 6,   TD,             SEN(pwritev2),                  "pwritev2"              },
-[379] = { 5,   TD|TF|TSTA,     SEN(statx),                     "statx"                 },
+[379] = { 5,   TD|TF|TFST|TSTA,SEN(statx),                     "statx"                 },
 [380] = { 3,   0,              SEN(seccomp),                   "seccomp"               },
 [381] = { 4,   TM|SI,          SEN(pkey_mprotect),             "pkey_mprotect"         },
 [382] = { 2,   0,              SEN(pkey_alloc),                "pkey_alloc"            },
 [400] = { 4,   TI,             SEN(msgsnd),                    "msgsnd"                },
 [401] = { 5,   TI,             SEN(msgrcv),                    "msgrcv"                },
 [402] = { 3,   TI,             SEN(msgctl),                    "msgctl"                },
-[403] = { 2,   0,              SEN(clock_gettime64),           "clock_gettime64"       },
-[404] = { 2,   0,              SEN(clock_settime64),           "clock_settime64"       },
-[405] = { 2,   0,              SEN(clock_adjtime64),           "clock_adjtime64"       },
-[406] = { 2,   0,              SEN(clock_getres_time64),       "clock_getres_time64"   },
-[407] = { 4,   0,              SEN(clock_nanosleep_time64),    "clock_nanosleep_time64"},
-[408] = { 2,   0,              SEN(timer_gettime64),           "timer_gettime64"       },
-[409] = { 4,   0,              SEN(timer_settime64),           "timer_settime64"       },
-[410] = { 2,   TD,             SEN(timerfd_gettime64),         "timerfd_gettime64"     },
-[411] = { 4,   TD,             SEN(timerfd_settime64),         "timerfd_settime64"     },
-[412] = { 4,   TD|TF,          SEN(utimensat_time64),          "utimensat_time64"      },
-[413] = { 6,   TD,             SEN(pselect6_time64),           "pselect6_time64"       },
-[414] = { 5,   TD,             SEN(ppoll_time64),              "ppoll_time64"          },
-[416] = { 6,   0,              SEN(io_pgetevents_time64),      "io_pgetevents_time64"  },
-[417] = { 5,   TN,             SEN(recvmmsg_time64),           "recvmmsg_time64"       },
-[418] = { 5,   TD,             SEN(mq_timedsend_time64),       "mq_timedsend_time64"   },
-[419] = { 5,   TD,             SEN(mq_timedreceive_time64),    "mq_timedreceive_time64"},
-[420] = { 4,   TI,             SEN(semtimedop_time64),         "semtimedop_time64"     },
-[421] = { 4,   TS,             SEN(rt_sigtimedwait_time64),    "rt_sigtimedwait_time64"},
-[422] = { 6,   0,              SEN(futex_time64),              "futex_time64"          },
-[423] = { 2,   0,              SEN(sched_rr_get_interval_time64),      "sched_rr_get_interval_time64"  },
-[424] = { 4,   TD|TS,          SEN(pidfd_send_signal),         "pidfd_send_signal"     },
-[425] = { 2,   TD,             SEN(io_uring_setup),            "io_uring_setup"        },
-[426] = { 6,   TD|TS,          SEN(io_uring_enter),            "io_uring_enter"        },
-[427] = { 4,   TD|TM,          SEN(io_uring_register),         "io_uring_register"     },
+#include "syscallent-common-32.h"
+#include "syscallent-common.h"
 
 #define SYS_socket_subcall     500
 #include "subcall32.h"
index 08dc3cd99c332c8c01a2cb74b049a2c8a861bcb4..ae8f52dc3afc40d3a28b454f5079466a3949cfa9 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -8,6 +8,8 @@
 static int
 arch_set_scno(struct tcb *tcp, kernel_ulong_t scno)
 {
+       if (ptrace_syscall_info_is_valid() && get_regs(tcp) < 0)
+               return -1;
        metag_regs.dx[0][1] = scno;
        return set_regs(tcp->pid);
 }
index 8e2a3dd95e99bd42715d355143ec7bbc2e223593..1c816318162492cc8da19903c52b59410340e5c7 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 1993 Branko Lankester <branko@hacktic.nl>
  * Copyright (c) 1993, 1994, 1995 Rick Sladkey <jrs@world.std.com>
- * Copyright (c) 1995-2019 The strace developers.
+ * Copyright (c) 1995-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -18,9 +18,9 @@
 [  8] = { 2,   TD|TF,          SEN(creat),                     "creat"                 },
 [  9] = { 2,   TF,             SEN(link),                      "link"                  },
 [ 10] = { 1,   TF,             SEN(unlink),                    "unlink"                },
-[ 11] = { 3,   TF|TP|SE|SI,    SEN(execve),                    "execve"                },
+[ 11] = { 3,   TF|TP|TSD|SE|SI,        SEN(execve),                    "execve"                },
 [ 12] = { 1,   TF,             SEN(chdir),                     "chdir"                 },
-[ 13] = { 1,   0,              SEN(time),                      "time"                  },
+[ 13] = { 1,   TCL,            SEN(time),                      "time"                  },
 [ 14] = { 3,   TF,             SEN(mknod),                     "mknod"                 },
 [ 15] = { 2,   TF,             SEN(chmod),                     "chmod"                 },
 [ 16] = { 3,   TF,             SEN(chown16),                   "lchown"                },
@@ -30,8 +30,8 @@
 [ 20] = { 0,   PU|NF,          SEN(getpid),                    "getpid"                },
 [ 21] = { 5,   TF,             SEN(mount),                     "mount"                 },
 [ 22] = { 1,   TF,             SEN(umount),                    "umount"                },
-[ 23] = { 1,   0,              SEN(setuid16),                  "setuid"                },
-[ 24] = { 0,   PU|NF,          SEN(getuid16),                  "getuid"                },
+[ 23] = { 1,   TC,             SEN(setuid16),                  "setuid"                },
+[ 24] = { 0,   TC|PU|NF,       SEN(getuid16),                  "getuid"                },
 [ 25] = { 1,   0,              SEN(stime),                     "stime"                 },
 [ 26] = { 4,   0,              SEN(ptrace),                    "ptrace"                },
 [ 27] = { 1,   0,              SEN(alarm),                     "alarm"                 },
@@ -44,7 +44,7 @@
 [ 34] = { 1,   0,              SEN(nice),                      "nice"                  },
 [ 35] = { 0,   0,              SEN(ftime),                     "ftime"                 },
 [ 36] = { 0,   0,              SEN(sync),                      "sync"                  },
-[ 37] = { 2,   TS,             SEN(kill),                      "kill"                  },
+[ 37] = { 2,   TS|TP,          SEN(kill),                      "kill"                  },
 [ 38] = { 2,   TF,             SEN(rename),                    "rename"                },
 [ 39] = { 2,   TF,             SEN(mkdir),                     "mkdir"                 },
 [ 40] = { 1,   TF,             SEN(rmdir),                     "rmdir"                 },
 [ 43] = { 1,   0,              SEN(times),                     "times"                 },
 [ 44] = { 0,   0,              SEN(prof),                      "prof"                  },
 [ 45] = { 1,   TM|SI,          SEN(brk),                       "brk"                   },
-[ 46] = { 1,   0,              SEN(setgid16),                  "setgid"                },
-[ 47] = { 0,   PU|NF,          SEN(getgid16),                  "getgid"                },
+[ 46] = { 1,   TC,             SEN(setgid16),                  "setgid"                },
+[ 47] = { 0,   TC|PU|NF,       SEN(getgid16),                  "getgid"                },
 [ 48] = { 2,   TS,             SEN(signal),                    "signal"                },
-[ 49] = { 0,   PU|NF,          SEN(geteuid16),                 "geteuid"               },
-[ 50] = { 0,   PU|NF,          SEN(getegid16),                 "getegid"               },
+[ 49] = { 0,   TC|PU|NF,       SEN(geteuid16),                 "geteuid"               },
+[ 50] = { 0,   TC|PU|NF,       SEN(getegid16),                 "getegid"               },
 [ 51] = { 1,   TF,             SEN(acct),                      "acct"                  },
 [ 52] = { 2,   TF,             SEN(umount2),                   "umount2"               },
 [ 53] = { 0,   0,              SEN(lock),                      "lock"                  },
 [ 67] = { 3,   TS,             SEN(sigaction),                 "sigaction"             },
 [ 68] = { 0,   TS,             SEN(sgetmask),                  "sgetmask"              },
 [ 69] = { 1,   TS,             SEN(ssetmask),                  "ssetmask"              },
-[ 70] = { 2,   0,              SEN(setreuid16),                "setreuid"              },
-[ 71] = { 2,   0,              SEN(setregid16),                "setregid"              },
+[ 70] = { 2,   TC,             SEN(setreuid16),                "setreuid"              },
+[ 71] = { 2,   TC,             SEN(setregid16),                "setregid"              },
 [ 72] = { 3,   TS,             SEN(sigsuspend),                "sigsuspend"            },
 [ 73] = { 1,   TS,             SEN(sigpending),                "sigpending"            },
 [ 74] = { 2,   0,              SEN(sethostname),               "sethostname"           },
 [ 75] = { 2,   0,              SEN(setrlimit),                 "setrlimit"             },
 [ 76] = { 2,   0,              SEN(getrlimit),                 "getrlimit"             },
 [ 77] = { 2,   0,              SEN(getrusage),                 "getrusage"             },
-[ 78] = { 2,   0,              SEN(gettimeofday),              "gettimeofday"          },
-[ 79] = { 2,   0,              SEN(settimeofday),              "settimeofday"          },
-[ 80] = { 2,   0,              SEN(getgroups16),               "getgroups"             },
-[ 81] = { 2,   0,              SEN(setgroups16),               "setgroups"             },
+[ 78] = { 2,   TCL,            SEN(gettimeofday),              "gettimeofday"          },
+[ 79] = { 2,   TCL,            SEN(settimeofday),              "settimeofday"          },
+[ 80] = { 2,   TC,             SEN(getgroups16),               "getgroups"             },
+[ 81] = { 2,   TC,             SEN(setgroups16),               "setgroups"             },
 [ 82] = { 1,   TD,             SEN(oldselect),                 "select"                },
 [ 83] = { 2,   TF,             SEN(symlink),                   "symlink"               },
 [ 84] = { 2,   TF|TLST|TSTA,   SEN(oldlstat),                  "oldlstat"              },
 [ 99] = { 2,   TF|TSF|TSFA,    SEN(statfs),                    "statfs"                },
 [100] = { 2,   TD|TFSF|TSFA,   SEN(fstatfs),                   "fstatfs"               },
 [101] = { 3,   0,              SEN(ioperm),                    "ioperm"                },
-[102] = { 2,   TD,             SEN(socketcall),                "socketcall"            },
+[102] = { 2,   TD|TSD,         SEN(socketcall),                "socketcall"            },
 [103] = { 3,   0,              SEN(syslog),                    "syslog"                },
 [104] = { 3,   0,              SEN(setitimer),                 "setitimer"             },
 [105] = { 2,   0,              SEN(getitimer),                 "getitimer"             },
 [114] = { 4,   TP,             SEN(wait4),                     "wait4"                 },
 [115] = { 1,   TF,             SEN(swapoff),                   "swapoff"               },
 [116] = { 1,   0,              SEN(sysinfo),                   "sysinfo"               },
-[117] = { 6,   TI,             SEN(ipc),                       "ipc"                   },
+[117] = { 6,   TI|TSD,         SEN(ipc),                       "ipc"                   },
 [118] = { 1,   TD,             SEN(fsync),                     "fsync"                 },
 [119] = { 0,   TS,             SEN(sigreturn),                 "sigreturn"             },
 [120] = { 6,   TP,             SEN(clone),                     "clone"                 },
 [121] = { 2,   0,              SEN(setdomainname),             "setdomainname"         },
 [122] = { 1,   0,              SEN(uname),                     "uname"                 },
 [123] = { 3,   0,              SEN(modify_ldt),                "modify_ldt"            },
-[124] = { 1,   0,              SEN(adjtimex32),                "adjtimex"              },
+[124] = { 1,   TCL,            SEN(adjtimex32),                "adjtimex"              },
 [125] = { 3,   TM|SI,          SEN(mprotect),                  "mprotect"              },
 [126] = { 3,   TS,             SEN(sigprocmask),               "sigprocmask"           },
 [127] = { 2,   0,              SEN(create_module),             "create_module"         },
 [135] = { 3,   0,              SEN(sysfs),                     "sysfs"                 },
 [136] = { 1,   NF,             SEN(personality),               "personality"           },
 [137] = { 5,   0,              SEN(afs_syscall),               "afs_syscall"           },
-[138] = { 1,   NF,             SEN(setfsuid16),                "setfsuid"              },
-[139] = { 1,   NF,             SEN(setfsgid16),                "setfsgid"              },
+[138] = { 1,   TC|NF,          SEN(setfsuid16),                "setfsuid"              },
+[139] = { 1,   TC|NF,          SEN(setfsgid16),                "setfsgid"              },
 [140] = { 5,   TD,             SEN(llseek),                    "_llseek"               },
 [141] = { 3,   TD,             SEN(getdents),                  "getdents"              },
 [142] = { 5,   TD,             SEN(select),                    "_newselect"            },
 [161] = { 2,   0,              SEN(sched_rr_get_interval_time32),"sched_rr_get_interval"},
 [162] = { 2,   0,              SEN(nanosleep_time32),          "nanosleep"             },
 [163] = { 5,   TM|SI,          SEN(mremap),                    "mremap"                },
-[164] = { 3,   0,              SEN(setresuid16),               "setresuid"             },
-[165] = { 3,   0,              SEN(getresuid16),               "getresuid"             },
+[164] = { 3,   TC,             SEN(setresuid16),               "setresuid"             },
+[165] = { 3,   TC,             SEN(getresuid16),               "getresuid"             },
 [166] = { 5,   0,              SEN(vm86),                      "vm86"                  },
 [167] = { 5,   0,              SEN(query_module),              "query_module"          },
 [168] = { 3,   TD,             SEN(poll_time32),               "poll"                  },
 [169] = { 3,   0,              SEN(nfsservctl),                "nfsservctl"            },
-[170] = { 3,   0,              SEN(setresgid16),               "setresgid"             },
-[171] = { 3,   0,              SEN(getresgid16),               "getresgid"             },
-[172] = { 5,   0,              SEN(prctl),                     "prctl"                 },
+[170] = { 3,   TC,             SEN(setresgid16),               "setresgid"             },
+[171] = { 3,   TC,             SEN(getresgid16),               "getresgid"             },
+[172] = { 5,   TC,             SEN(prctl),                     "prctl"                 },
 [173] = { 0,   TS,             SEN(rt_sigreturn),              "rt_sigreturn"          },
 [174] = { 4,   TS,             SEN(rt_sigaction),              "rt_sigaction"          },
 [175] = { 4,   TS,             SEN(rt_sigprocmask),            "rt_sigprocmask"        },
 [176] = { 2,   TS,             SEN(rt_sigpending),             "rt_sigpending"         },
 [177] = { 4,   TS,             SEN(rt_sigtimedwait_time32),    "rt_sigtimedwait"       },
-[178] = { 3,   TS,             SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
+[178] = { 3,   TS|TP,          SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
 [179] = { 2,   TS,             SEN(rt_sigsuspend),             "rt_sigsuspend"         },
 [180] = { 5,   TD,             SEN(pread),                     "pread64"               },
 [181] = { 5,   TD,             SEN(pwrite),                    "pwrite64"              },
 [182] = { 3,   TF,             SEN(chown16),                   "chown"                 },
 [183] = { 2,   TF,             SEN(getcwd),                    "getcwd"                },
-[184] = { 2,   0,              SEN(capget),                    "capget"                },
-[185] = { 2,   0,              SEN(capset),                    "capset"                },
+[184] = { 2,   TC,             SEN(capget),                    "capget"                },
+[185] = { 2,   TC,             SEN(capset),                    "capset"                },
 [186] = { 2,   TS,             SEN(sigaltstack),               "sigaltstack"           },
 [187] = { 4,   TD|TN,          SEN(sendfile),                  "sendfile"              },
 [188] = { 5,   TN,             SEN(getpmsg),                   "getpmsg"               },
 [196] = { 2,   TF|TLST|TSTA,   SEN(lstat64),                   "lstat64"               },
 [197] = { 2,   TD|TFST|TSTA,   SEN(fstat64),                   "fstat64"               },
 [198] = { 3,   TF,             SEN(chown),                     "lchown32"              },
-[199] = { 0,   PU|NF,          SEN(getuid),                    "getuid32"              },
-[200] = { 0,   PU|NF,          SEN(getgid),                    "getgid32"              },
-[201] = { 0,   PU|NF,          SEN(geteuid),                   "geteuid32"             },
-[202] = { 0,   PU|NF,          SEN(geteuid),                   "getegid32"             },
-[203] = { 2,   0,              SEN(setreuid),                  "setreuid32"            },
-[204] = { 2,   0,              SEN(setregid),                  "setregid32"            },
-[205] = { 2,   0,              SEN(getgroups),                 "getgroups32"           },
-[206] = { 2,   0,              SEN(setgroups),                 "setgroups32"           },
+[199] = { 0,   TC|PU|NF,       SEN(getuid),                    "getuid32"              },
+[200] = { 0,   TC|PU|NF,       SEN(getgid),                    "getgid32"              },
+[201] = { 0,   TC|PU|NF,       SEN(geteuid),                   "geteuid32"             },
+[202] = { 0,   TC|PU|NF,       SEN(geteuid),                   "getegid32"             },
+[203] = { 2,   TC,             SEN(setreuid),                  "setreuid32"            },
+[204] = { 2,   TC,             SEN(setregid),                  "setregid32"            },
+[205] = { 2,   TC,             SEN(getgroups),                 "getgroups32"           },
+[206] = { 2,   TC,             SEN(setgroups),                 "setgroups32"           },
 [207] = { 3,   TD,             SEN(fchown),                    "fchown32"              },
-[208] = { 3,   0,              SEN(setresuid),                 "setresuid32"           },
-[209] = { 3,   0,              SEN(getresuid),                 "getresuid32"           },
-[210] = { 3,   0,              SEN(setresgid),                 "setresgid32"           },
-[211] = { 3,   0,              SEN(getresgid),                 "getresgid32"           },
+[208] = { 3,   TC,             SEN(setresuid),                 "setresuid32"           },
+[209] = { 3,   TC,             SEN(getresuid),                 "getresuid32"           },
+[210] = { 3,   TC,             SEN(setresgid),                 "setresgid32"           },
+[211] = { 3,   TC,             SEN(getresgid),                 "getresgid32"           },
 [212] = { 3,   TF,             SEN(chown),                     "chown32"               },
-[213] = { 1,   0,              SEN(setuid),                    "setuid32"              },
-[214] = { 1,   0,              SEN(setgid),                    "setgid32"              },
-[215] = { 1,   NF,             SEN(setfsuid),                  "setfsuid32"            },
-[216] = { 1,   NF,             SEN(setfsgid),                  "setfsgid32"            },
+[213] = { 1,   TC,             SEN(setuid),                    "setuid32"              },
+[214] = { 1,   TC,             SEN(setgid),                    "setgid32"              },
+[215] = { 1,   TC|NF,          SEN(setfsuid),                  "setfsuid32"            },
+[216] = { 1,   TC|NF,          SEN(setfsgid),                  "setfsgid32"            },
 [217] = { 2,   TF,             SEN(pivotroot),                 "pivot_root"            },
 [218] = { 3,   TM,             SEN(mincore),                   "mincore"               },
 [219] = { 3,   TM,             SEN(madvise),                   "madvise"               },
 [235] = { 2,   TF,             SEN(removexattr),               "removexattr"           },
 [236] = { 2,   TF,             SEN(removexattr),               "lremovexattr"          },
 [237] = { 2,   TD,             SEN(fremovexattr),              "fremovexattr"          },
-[238] = { 2,   TS,             SEN(kill),                      "tkill"                 },
+[238] = { 2,   TS|TP,          SEN(tkill),                     "tkill"                 },
 [239] = { 4,   TD|TN,          SEN(sendfile64),                "sendfile64"            },
 [240] = { 6,   0,              SEN(futex_time32),              "futex"                 },
 [241] = { 3,   0,              SEN(sched_setaffinity),         "sched_setaffinity"     },
 [261] = { 2,   0,              SEN(timer_gettime32),           "timer_gettime"         },
 [262] = { 1,   0,              SEN(timer_getoverrun),          "timer_getoverrun"      },
 [263] = { 1,   0,              SEN(timer_delete),              "timer_delete"          },
-[264] = { 2,   0,              SEN(clock_settime32),           "clock_settime"         },
-[265] = { 2,   0,              SEN(clock_gettime32),           "clock_gettime"         },
-[266] = { 2,   0,              SEN(clock_getres_time32),       "clock_getres"          },
+[264] = { 2,   TCL,            SEN(clock_settime32),           "clock_settime"         },
+[265] = { 2,   TCL,            SEN(clock_gettime32),           "clock_gettime"         },
+[266] = { 2,   TCL,            SEN(clock_getres_time32),       "clock_getres"          },
 [267] = { 4,   0,              SEN(clock_nanosleep_time32),    "clock_nanosleep"       },
 [268] = { 3,   TF|TSF|TSFA,    SEN(statfs64),                  "statfs64"              },
 [269] = { 3,   TD|TFSF|TSFA,   SEN(fstatfs64),                 "fstatfs64"             },
-[270] = { 3,   TS,             SEN(tgkill),                    "tgkill"                },
+[270] = { 3,   TS|TP,          SEN(tgkill),                    "tgkill"                },
 [271] = { 2,   TF,             SEN(utimes),                    "utimes"                },
 [272] = { 6,   TD,             SEN(fadvise64_64),              "fadvise64_64"          },
 [273] = { 5,   0,              SEN(vserver),                   "vserver"               },
 [307] = { 3,   TD|TF,          SEN(faccessat),                 "faccessat"             },
 [308] = { 6,   TD,             SEN(pselect6_time32),           "pselect6"              },
 [309] = { 5,   TD,             SEN(ppoll_time32),              "ppoll"                 },
-[310] = { 1,   TP,             SEN(unshare),                   "unshare"               },
+[310] = { 1,   0,              SEN(unshare),                   "unshare"               },
 [311] = { 2,   0,              SEN(set_robust_list),           "set_robust_list"       },
 [312] = { 3,   0,              SEN(get_robust_list),           "get_robust_list"       },
 [313] = { 6,   TD,             SEN(splice),                    "splice"                },
 [370] = { 4,   0,              SEN(prlimit64),                 "prlimit64"             },
 [371] = { 5,   TD|TF,          SEN(name_to_handle_at),         "name_to_handle_at"     },
 [372] = { 3,   TD,             SEN(open_by_handle_at),         "open_by_handle_at"     },
-[373] = { 2,   0,              SEN(clock_adjtime32),           "clock_adjtime"         },
+[373] = { 2,   TCL,            SEN(clock_adjtime32),           "clock_adjtime"         },
 [374] = { 1,   TD,             SEN(syncfs),                    "syncfs"                },
 [375] = { 2,   TD,             SEN(setns),                     "setns"                 },
 [376] = { 4,   TN,             SEN(sendmmsg),                  "sendmmsg"              },
 [385] = { 3,   0,              SEN(getrandom),                 "getrandom"             },
 [386] = { 2,   TD,             SEN(memfd_create),              "memfd_create"          },
 [387] = { 3,   TD,             SEN(bpf),                       "bpf"                   },
-[388] = { 5,   TD|TF|TP|SE|SI, SEN(execveat),                  "execveat"              },
+[388] = { 5,   TD|TF|TP|TSD|SE|SI,     SEN(execveat),                  "execveat"              },
 [389] = { 1,   TD,             SEN(userfaultfd),               "userfaultfd"           },
 [390] = { 2,   0,              SEN(membarrier),                "membarrier"            },
 [391] = { 3,   TM,             SEN(mlock2),                    "mlock2"                },
 [395] = { 4,   TM|SI,          SEN(pkey_mprotect),             "pkey_mprotect"         },
 [396] = { 2,   0,              SEN(pkey_alloc),                "pkey_alloc"            },
 [397] = { 1,   0,              SEN(pkey_free),                 "pkey_free"             },
-[398] = { 5,   TD|TF|TSTA,     SEN(statx),                     "statx"                 },
+[398] = { 5,   TD|TF|TFST|TSTA,SEN(statx),                     "statx"                 },
 [399] = { 6,   0,              SEN(io_pgetevents_time32),      "io_pgetevents"         },
 [400] = { 4,   0,              SEN(rseq),                      "rseq"                  },
 /* [401 ... 402] - unused */
-[403] = { 2,   0,              SEN(clock_gettime64),           "clock_gettime64"       },
-[404] = { 2,   0,              SEN(clock_settime64),           "clock_settime64"       },
-[405] = { 2,   0,              SEN(clock_adjtime64),           "clock_adjtime64"       },
-[406] = { 2,   0,              SEN(clock_getres_time64),       "clock_getres_time64"   },
-[407] = { 4,   0,              SEN(clock_nanosleep_time64),    "clock_nanosleep_time64"},
-[408] = { 2,   0,              SEN(timer_gettime64),           "timer_gettime64"       },
-[409] = { 4,   0,              SEN(timer_settime64),           "timer_settime64"       },
-[410] = { 2,   TD,             SEN(timerfd_gettime64),         "timerfd_gettime64"     },
-[411] = { 4,   TD,             SEN(timerfd_settime64),         "timerfd_settime64"     },
-[412] = { 4,   TD|TF,          SEN(utimensat_time64),          "utimensat_time64"      },
-[413] = { 6,   TD,             SEN(pselect6_time64),           "pselect6_time64"       },
-[414] = { 5,   TD,             SEN(ppoll_time64),              "ppoll_time64"          },
-[416] = { 6,   0,              SEN(io_pgetevents_time64),      "io_pgetevents_time64"  },
-[417] = { 5,   TN,             SEN(recvmmsg_time64),           "recvmmsg_time64"       },
-[418] = { 5,   TD,             SEN(mq_timedsend_time64),       "mq_timedsend_time64"   },
-[419] = { 5,   TD,             SEN(mq_timedreceive_time64),    "mq_timedreceive_time64"},
-[420] = { 4,   TI,             SEN(semtimedop_time64),         "semtimedop_time64"     },
-[421] = { 4,   TS,             SEN(rt_sigtimedwait_time64),    "rt_sigtimedwait_time64"},
-[422] = { 6,   0,              SEN(futex_time64),              "futex_time64"          },
-[423] = { 2,   0,              SEN(sched_rr_get_interval_time64),      "sched_rr_get_interval_time64"  },
-[424] = { 4,   TD|TS,          SEN(pidfd_send_signal),         "pidfd_send_signal"     },
-[425] = { 2,   TD,             SEN(io_uring_setup),            "io_uring_setup"        },
-[426] = { 6,   TD|TS,          SEN(io_uring_enter),            "io_uring_enter"        },
-[427] = { 4,   TD|TM,          SEN(io_uring_register),         "io_uring_register"     },
+#include "syscallent-common-32.h"
+#include "syscallent-common.h"
index 0d21692e6809f59b672edb32d06110fde8ff8cf5..68775ba3afb3b986577a99fc29748cbaeda7b88c 100755 (executable)
@@ -1,15 +1,15 @@
 #!/bin/sh -e
 #
-# Copyright (c) 2015-2018 The strace developers.
+# Copyright (c) 2015-2019 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: LGPL-2.1-or-later
 
-srcdir="${0%/*}"
+srcdir="$1"; shift
 dstdir="$1"; shift
 
-for n in n32 n64 o32; do
+for n; do
        in="$srcdir/syscallent-$n.h"
        out="$dstdir/syscallent-$n-stub.h"
-       sed -r -n '/^#if/,/^#else/ {s/^([^{]*\{[^,]*,[^,]*,[[:space:]]*)[^,[:space:]]+,[[:space:]]*"([^"]+".*)/\1SEN(printargs), "'$n':\2/; s/^\[.*/&/p}' < "$in" > "$out"
+       sed -r -n '/^#if/,/^#else/ {s/^([^{]*\{[^,]*,[^,]*,[[:space:]]*)[^,[:space:]]+,[[:space:]]*"([^"]+".*)/\1SEN(printargs), SYSCALL_NAME_PREFIX "\2/; s/^\[.*/&/p}' < "$in" > "$out"
 done
index f06fae4628398e4bd6c214ab96408138685cb540..d9815f6301e916a67923ad071a94b251ed7fdc0e 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -13,9 +13,7 @@ arch_get_scno(struct tcb *tcp)
 
        if (!scno_in_range(tcp->scno)) {
                if (mips_REG_A3 == 0 || mips_REG_A3 == (uint64_t) -1) {
-                       if (debug_flag)
-                               error_msg("stray syscall exit: v0 = %ld",
-                                         tcp->scno);
+                       debug_msg("stray syscall exit: v0 = %ld", tcp->scno);
                        return 0;
                }
        }
index fc843f49bd3a042e7a40b4c4036355cfb376a27c..09d47dea046b009ddbb22d17ec1ffcf4f14ea637 100644 (file)
@@ -25,6 +25,9 @@ arch_get_syscall_args(struct tcb *tcp)
            && umoven(tcp, mips_REG_SP + 4 * sizeof(tcp->u_arg[0]),
                      (n_args(tcp) - 4) * sizeof(tcp->u_arg[0]),
                      &tcp->u_arg[4]) < 0) {
+               error_msg("pid %d: cannot fetch 5th and 6th syscall arguments"
+                         " from tracee's memory", tcp->pid);
+
                /*
                 * Let's proceed with the first 4 arguments
                 * instead of reporting the failure.
index 7994bd4356a77491546da9480b032772a5b7583d..6d31ea2fca2e147f298dc07fd7ec51027327dd0c 100644 (file)
@@ -80,8 +80,8 @@
 { "asm/sockios.h", "FIOSETOWN", _IOC_WRITE, 0x667c, 0x04 },
 { "asm/sockios.h", "SIOCATMARK", _IOC_READ, 0x7307, 0x04 },
 { "asm/sockios.h", "SIOCGPGRP", _IOC_READ, 0x7309, 0x04 },
-{ "asm/sockios.h", "SIOCGSTAMP", 0, 0x8906, 0 },
-{ "asm/sockios.h", "SIOCGSTAMPNS", 0, 0x8907, 0 },
+{ "asm/sockios.h", "SIOCGSTAMPNS_OLD", 0, 0x8907, 0 },
+{ "asm/sockios.h", "SIOCGSTAMP_OLD", 0, 0x8906, 0 },
 { "asm/sockios.h", "SIOCSPGRP", _IOC_WRITE, 0x7308, 0x04 },
 { "linux/kvm.h", "KVM_ASSIGN_DEV_IRQ", _IOC_WRITE, 0xae70, 0x40 },
 { "linux/kvm.h", "KVM_ASSIGN_PCI_DEVICE", _IOC_READ, 0xae69, 0x40 },
index ad3125836d477966792581cf096d6002f5880413..66448cfeebbc59ab3a4dc735d3827a7cc1c2911a 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -8,6 +8,8 @@
 static int
 arch_set_scno(struct tcb *tcp, kernel_ulong_t scno)
 {
+       if (ptrace_syscall_info_is_valid() && get_regs(tcp) < 0)
+               return -1;
        mips_REG_V0 = scno;
        return set_regs(tcp->pid);
 }
index fce44a27dabdb40936704ce569d802b062d36a00..61ccfe4ed0ed170033f1f0bbcd8e95f2e1aafa85 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013-2018 The strace developers.
+ * Copyright (c) 2013-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -28,8 +28,8 @@
 [  20] = { 0,  0,      SEN(printargs),         "svr4_getpid"   },
 [  21] = { 0,  0,      SEN(printargs),         "svr4_mount"    },
 [  22] = { 0,  0,      SEN(printargs),         "svr4_umount"   },
-[  23] = { 0,  0,      SEN(printargs),         "svr4_setuid"   },
-[  24] = { 0,  0,      SEN(printargs),         "svr4_getuid"   },
+[  23] = { 0,  TC,     SEN(printargs),         "svr4_setuid"   },
+[  24] = { 0,  TC,     SEN(printargs),         "svr4_getuid"   },
 [  25] = { 0,  0,      SEN(printargs),         "svr4_stime"    },
 [  26] = { 0,  0,      SEN(printargs),         "svr4_ptrace"   },
 [  27] = { 0,  0,      SEN(printargs),         "svr4_alarm"    },
@@ -42,7 +42,7 @@
 [  34] = { 0,  0,      SEN(printargs),         "svr4_nice"     },
 [  35] = { 0,  TF|TSF|TSFA,SEN(printargs),             "svr4_statfs"   },
 [  36] = { 0,  0,      SEN(printargs),         "svr4_sync"     },
-[  37] = { 0,  0,      SEN(printargs),         "svr4_kill"     },
+[  37] = { 0,  TP,     SEN(printargs),         "svr4_kill"     },
 [  38] = { 0,  TD|TFSF|TSFA,SEN(printargs),            "svr4_fstatfs"  },
 [  39] = { 0,  0,      SEN(printargs),         "svr4_setpgrp"  },
 [  40] = { 0,  0,      SEN(printargs),         "svr4_cxenix"   },
@@ -51,8 +51,8 @@
 [  43] = { 0,  0,      SEN(printargs),         "svr4_times"    },
 [  44] = { 0,  0,      SEN(printargs),         "svr4_profil"   },
 [  45] = { 0,  0,      SEN(printargs),         "svr4_plock"    },
-[  46] = { 0,  0,      SEN(printargs),         "svr4_setgid"   },
-[  47] = { 0,  0,      SEN(printargs),         "svr4_getgid"   },
+[  46] = { 0,  TC,     SEN(printargs),         "svr4_setgid"   },
+[  47] = { 0,  TC,     SEN(printargs),         "svr4_getgid"   },
 [  48] = { 0,  0,      SEN(printargs),         "svr4_sig"      },
 [  49] = { 0,  0,      SEN(printargs),         "svr4_msgsys"   },
 [  50] = { 0,  0,      SEN(printargs),         "svr4_sysmips"  },
@@ -91,8 +91,8 @@
 [  88] = { 0,  TF|TLST|TSTA,SEN(printargs),            "svr4_lstat"    },
 [  89] = { 0,  0,      SEN(printargs),         "svr4_symlink"  },
 [  90] = { 0,  0,      SEN(printargs),         "svr4_readlink" },
-[  91] = { 0,  0,      SEN(printargs),         "svr4_setgroups"        },
-[  92] = { 0,  0,      SEN(printargs),         "svr4_getgroups"        },
+[  91] = { 0,  TC,     SEN(printargs),         "svr4_setgroups"        },
+[  92] = { 0,  TC,     SEN(printargs),         "svr4_getgroups"        },
 [  93] = { 0,  0,      SEN(printargs),         "svr4_fchmod"   },
 [  94] = { 0,  0,      SEN(printargs),         "svr4_fchown"   },
 [  95] = { 0,  0,      SEN(printargs),         "svr4_sigprocmask"      },
 [ 133] = { 0,  0,      SEN(printargs),         "svr4_putpmsg"  },
 [ 134] = { 0,  0,      SEN(printargs),         "svr4_rename"   },
 [ 135] = { 0,  0,      SEN(printargs),         "svr4_nuname"   },
-[ 136] = { 0,  0,      SEN(printargs),         "svr4_setegid"  },
+[ 136] = { 0,  TC,     SEN(printargs),         "svr4_setegid"  },
 [ 137] = { 0,  0,      SEN(printargs),         "svr4_sysconf"  },
-[ 138] = { 0,  0,      SEN(printargs),         "svr4_adjtime"  },
+[ 138] = { 0,  TCL,    SEN(printargs),         "svr4_adjtime"  },
 [ 139] = { 0,  0,      SEN(printargs),         "svr4_sysinfo"  },
 [ 140] = { },
-[ 141] = { 0,  0,      SEN(printargs),         "svr4_seteuid"  },
+[ 141] = { 0,  TC,     SEN(printargs),         "svr4_seteuid"  },
 [ 142] = { 0,  0,      SEN(printargs),         "svr4_PYRAMID_statis"   },
 [ 143] = { 0,  0,      SEN(printargs),         "svr4_PYRAMID_tuning"   },
 [ 144] = { 0,  0,      SEN(printargs),         "svr4_PYRAMID_forcerr"  },
 [1020] = { 0,  0,      SEN(printargs),         "sysv_getpid"   },
 [1021] = { 0,  0,      SEN(printargs),         "sysv_mount"    },
 [1022] = { 0,  0,      SEN(printargs),         "sysv_umount"   },
-[1023] = { 0,  0,      SEN(printargs),         "sysv_setuid"   },
-[1024] = { 0,  0,      SEN(printargs),         "sysv_getuid"   },
+[1023] = { 0,  TC,     SEN(printargs),         "sysv_setuid"   },
+[1024] = { 0,  TC,     SEN(printargs),         "sysv_getuid"   },
 [1025] = { 0,  0,      SEN(printargs),         "sysv_stime"    },
 [1026] = { 0,  0,      SEN(printargs),         "sysv_ptrace"   },
 [1027] = { 0,  0,      SEN(printargs),         "sysv_alarm"    },
 [1034] = { 0,  0,      SEN(printargs),         "sysv_nice"     },
 [1035] = { 0,  TF|TSF|TSFA,SEN(printargs),             "sysv_statfs"   },
 [1036] = { 0,  0,      SEN(printargs),         "sysv_sync"     },
-[1037] = { 0,  0,      SEN(printargs),         "sysv_kill"     },
+[1037] = { 0,  TP,     SEN(printargs),         "sysv_kill"     },
 [1038] = { 0,  TD|TFSF|TSFA,SEN(printargs),            "sysv_fstatfs"  },
 [1039] = { 0,  0,      SEN(printargs),         "sysv_setpgrp"  },
 [1040] = { 0,  0,      SEN(printargs),         "sysv_syssgi"   },
 [1043] = { 0,  0,      SEN(printargs),         "sysv_times"    },
 [1044] = { 0,  0,      SEN(printargs),         "sysv_profil"   },
 [1045] = { 0,  0,      SEN(printargs),         "sysv_plock"    },
-[1046] = { 0,  0,      SEN(printargs),         "sysv_setgid"   },
-[1047] = { 0,  0,      SEN(printargs),         "sysv_getgid"   },
+[1046] = { 0,  TC,     SEN(printargs),         "sysv_setgid"   },
+[1047] = { 0,  TC,     SEN(printargs),         "sysv_getgid"   },
 [1048] = { 0,  0,      SEN(printargs),         "sysv_sig"      },
 [1049] = { 0,  0,      SEN(printargs),         "sysv_msgsys"   },
 [1050] = { 0,  0,      SEN(printargs),         "sysv_sysmips"  },
 [1120] = { 0,  0,      SEN(printargs),         "sysv_getfh"    },
 [1121] = { 0,  0,      SEN(printargs),         "sysv_async_daemon"     },
 [1122] = { 0,  0,      SEN(printargs),         "sysv_exportfs" },
-[1123] = { 0,  0,      SEN(printargs),         "sysv_setregid" },
-[1124] = { 0,  0,      SEN(printargs),         "sysv_setreuid" },
+[1123] = { 0,  TC,     SEN(printargs),         "sysv_setregid" },
+[1124] = { 0,  TC,     SEN(printargs),         "sysv_setreuid" },
 [1125] = { 0,  0,      SEN(printargs),         "sysv_getitimer"        },
 [1126] = { 0,  0,      SEN(printargs),         "sysv_setitimer"        },
-[1127] = { 0,  0,      SEN(printargs),         "sysv_adjtime"  },
+[1127] = { 0,  TCL,    SEN(printargs),         "sysv_adjtime"  },
 [1128] = { 0,  0,      SEN(printargs),         "sysv_BSD_getime"       },
 [1129] = { 0,  0,      SEN(printargs),         "sysv_sproc"    },
 [1130] = { 0,  0,      SEN(printargs),         "sysv_prctl"    },
 [2020] = { 0,  0,      SEN(printargs),         "bsd43_getpid"  },
 [2021] = { 0,  0,      SEN(printargs),         "bsd43_oldmount"        },
 [2022] = { 0,  0,      SEN(printargs),         "bsd43_umount"  },
-[2023] = { 0,  0,      SEN(printargs),         "bsd43_setuid"  },
-[2024] = { 0,  0,      SEN(printargs),         "bsd43_getuid"  },
+[2023] = { 0,  TC,     SEN(printargs),         "bsd43_setuid"  },
+[2024] = { 0,  TC,     SEN(printargs),         "bsd43_getuid"  },
 [2025] = { 0,  0,      SEN(printargs),         "bsd43_stime"   },
 [2026] = { 0,  0,      SEN(printargs),         "bsd43_ptrace"  },
 [2027] = { 0,  0,      SEN(printargs),         "bsd43_alarm"   },
 [2034] = { 0,  0,      SEN(printargs),         "bsd43_nice"    },
 [2035] = { 0,  0,      SEN(printargs),         "bsd43_ftime"   },
 [2036] = { 0,  0,      SEN(printargs),         "bsd43_sync"    },
-[2037] = { 0,  0,      SEN(printargs),         "bsd43_kill"    },
+[2037] = { 0,  TP,     SEN(printargs),         "bsd43_kill"    },
 [2038] = { 0,  TF|TST|TSTA,SEN(printargs),             "bsd43_stat"    },
 [2039] = { 0,  0,      SEN(printargs),         "bsd43_oldsetpgrp"      },
 [2040] = { 0,  TF|TLST|TSTA,SEN(printargs),            "bsd43_lstat"   },
 [2043] = { 0,  0,      SEN(printargs),         "bsd43_times"   },
 [2044] = { 0,  0,      SEN(printargs),         "bsd43_profil"  },
 [2045] = { 0,  0,      SEN(printargs),         "bsd43_msgsys"  },
-[2046] = { 0,  0,      SEN(printargs),         "bsd43_setgid"  },
-[2047] = { 0,  0,      SEN(printargs),         "bsd43_getgid"  },
+[2046] = { 0,  TC,     SEN(printargs),         "bsd43_setgid"  },
+[2047] = { 0,  TC,     SEN(printargs),         "bsd43_getgid"  },
 [2048] = { 0,  0,      SEN(printargs),         "bsd43_ssig"    },
 [2049] = { },
 [2050] = { },
 [2076] = { 0,  0,      SEN(printargs),         "bsd43_vhangup" },
 [2077] = { 0,  0,      SEN(printargs),         "bsd43_vlimit"  },
 [2078] = { 0,  TM,     SEN(printargs),         "bsd43_mincore" },
-[2079] = { 0,  0,      SEN(printargs),         "bsd43_getgroups"       },
-[2080] = { 0,  0,      SEN(printargs),         "bsd43_setgroups"       },
+[2079] = { 0,  TC,     SEN(printargs),         "bsd43_getgroups"       },
+[2080] = { 0,  TC,     SEN(printargs),         "bsd43_setgroups"       },
 [2081] = { 0,  0,      SEN(printargs),         "bsd43_getpgrp" },
 [2082] = { 0,  0,      SEN(printargs),         "bsd43_setpgrp" },
 [2083] = { 0,  0,      SEN(printargs),         "bsd43_setitimer"       },
 [2113] = { 0,  0,      SEN(printargs),         "bsd43_oldrecvmsg"      },
 [2114] = { 0,  0,      SEN(printargs),         "bsd43_oldsendmsg"      },
 [2115] = { 0,  0,      SEN(printargs),         "bsd43_vtrace"  },
-[2116] = { 0,  0,      SEN(printargs),         "bsd43_gettimeofday"    },
+[2116] = { 0,  TCL,    SEN(printargs),         "bsd43_gettimeofday"    },
 [2117] = { 0,  0,      SEN(printargs),         "bsd43_getrusage"       },
 [2118] = { 0,  0,      SEN(printargs),         "bsd43_getsockopt"      },
 [2119] = { },
 [2120] = { 0,  0,      SEN(printargs),         "bsd43_readv"   },
 [2121] = { 0,  0,      SEN(printargs),         "bsd43_writev"  },
-[2122] = { 0,  0,      SEN(printargs),         "bsd43_settimeofday"    },
+[2122] = { 0,  TCL,    SEN(printargs),         "bsd43_settimeofday"    },
 [2123] = { 0,  0,      SEN(printargs),         "bsd43_fchown"  },
 [2124] = { 0,  0,      SEN(printargs),         "bsd43_fchmod"  },
 [2125] = { 0,  0,      SEN(printargs),         "bsd43_oldrecvfrom"     },
-[2126] = { 0,  0,      SEN(printargs),         "bsd43_setreuid"        },
-[2127] = { 0,  0,      SEN(printargs),         "bsd43_setregid"        },
+[2126] = { 0,  TC,     SEN(printargs),         "bsd43_setreuid"        },
+[2127] = { 0,  TC,     SEN(printargs),         "bsd43_setregid"        },
 [2128] = { 0,  0,      SEN(printargs),         "bsd43_rename"  },
 [2129] = { 0,  0,      SEN(printargs),         "bsd43_truncate"        },
 [2130] = { 0,  0,      SEN(printargs),         "bsd43_ftruncate"       },
 [2137] = { 0,  0,      SEN(printargs),         "bsd43_rmdir"   },
 [2138] = { 0,  0,      SEN(printargs),         "bsd43_utimes"  },
 [2139] = { 0,  0,      SEN(printargs),         "bsd43_sigcleanup"      },
-[2140] = { 0,  0,      SEN(printargs),         "bsd43_adjtime" },
+[2140] = { 0,  TCL,    SEN(printargs),         "bsd43_adjtime" },
 [2141] = { 0,  0,      SEN(printargs),         "bsd43_oldgetpeername"  },
 [2142] = { 0,  0,      SEN(printargs),         "bsd43_gethostid"       },
 [2143] = { 0,  0,      SEN(printargs),         "bsd43_sethostid"       },
 [2144] = { 0,  0,      SEN(printargs),         "bsd43_getrlimit"       },
 [2145] = { 0,  0,      SEN(printargs),         "bsd43_setrlimit"       },
-[2146] = { 0,  0,      SEN(printargs),         "bsd43_killpg"  },
+[2146] = { 0,  TP,     SEN(printargs),         "bsd43_killpg"  },
 [2147] = { 0,  0,      SEN(printargs),         "bsd43_shmsys"  },
 [2148] = { 0,  0,      SEN(printargs),         "bsd43_quota"   },
 [2149] = { 0,  0,      SEN(printargs),         "bsd43_qquota"  },
 [3020] = { 0,  0,      SEN(printargs),         "posix_getpid"  },
 [3021] = { 0,  0,      SEN(printargs),         "posix_mount"   },
 [3022] = { 0,  0,      SEN(printargs),         "posix_umount"  },
-[3023] = { 0,  0,      SEN(printargs),         "posix_setuid"  },
-[3024] = { 0,  0,      SEN(printargs),         "posix_getuid"  },
+[3023] = { 0,  TC,     SEN(printargs),         "posix_setuid"  },
+[3024] = { 0,  TC,     SEN(printargs),         "posix_getuid"  },
 [3025] = { 0,  0,      SEN(printargs),         "posix_stime"   },
 [3026] = { 0,  0,      SEN(printargs),         "posix_ptrace"  },
 [3027] = { 0,  0,      SEN(printargs),         "posix_alarm"   },
 [3034] = { 0,  0,      SEN(printargs),         "posix_nice"    },
 [3035] = { 0,  TF|TSF|TSFA,SEN(printargs),             "posix_statfs"  },
 [3036] = { 0,  0,      SEN(printargs),         "posix_sync"    },
-[3037] = { 0,  0,      SEN(printargs),         "posix_kill"    },
+[3037] = { 0,  TP,     SEN(printargs),         "posix_kill"    },
 [3038] = { 0,  TD|TFSF|TSFA,SEN(printargs),            "posix_fstatfs" },
 [3039] = { 0,  0,      SEN(printargs),         "posix_getpgrp" },
 [3040] = { 0,  0,      SEN(printargs),         "posix_syssgi"  },
 [3043] = { 0,  0,      SEN(printargs),         "posix_times"   },
 [3044] = { 0,  0,      SEN(printargs),         "posix_profil"  },
 [3045] = { 0,  0,      SEN(printargs),         "posix_lock"    },
-[3046] = { 0,  0,      SEN(printargs),         "posix_setgid"  },
-[3047] = { 0,  0,      SEN(printargs),         "posix_getgid"  },
+[3046] = { 0,  TC,     SEN(printargs),         "posix_setgid"  },
+[3047] = { 0,  TC,     SEN(printargs),         "posix_getgid"  },
 [3048] = { 0,  0,      SEN(printargs),         "posix_sig"     },
 [3049] = { 0,  0,      SEN(printargs),         "posix_msgsys"  },
 [3050] = { 0,  0,      SEN(printargs),         "posix_sysmips" },
 [3120] = { 0,  0,      SEN(printargs),         "posix_nfs_getfh"       },
 [3121] = { 0,  0,      SEN(printargs),         "posix_async_daemon"    },
 [3122] = { 0,  0,      SEN(printargs),         "posix_exportfs"        },
-[3123] = { 0,  0,      SEN(printargs),         "posix_SGI_setregid"    },
-[3124] = { 0,  0,      SEN(printargs),         "posix_SGI_setreuid"    },
+[3123] = { 0,  TC,     SEN(printargs),         "posix_SGI_setregid"    },
+[3124] = { 0,  TC,     SEN(printargs),         "posix_SGI_setreuid"    },
 [3125] = { 0,  0,      SEN(printargs),         "posix_getitimer"       },
 [3126] = { 0,  0,      SEN(printargs),         "posix_setitimer"       },
-[3127] = { 0,  0,      SEN(printargs),         "posix_adjtime" },
+[3127] = { 0,  TCL,    SEN(printargs),         "posix_adjtime" },
 [3128] = { 0,  0,      SEN(printargs),         "posix_SGI_bsdgettime"  },
 [3129] = { 0,  0,      SEN(printargs),         "posix_SGI_sproc"       },
 [3130] = { 0,  0,      SEN(printargs),         "posix_SGI_prctl"       },
 [3156] = { 0,  TM|SI,  SEN(printargs),         "posix_munmap"  },
 [3157] = { 0,  TM,     SEN(printargs),         "posix_madvise" },
 [3158] = { 0,  0,      SEN(printargs),         "posix_BSD_getpagesize" },
-[3159] = { 0,  0,      SEN(printargs),         "posix_setreuid"        },
-[3160] = { 0,  0,      SEN(printargs),         "posix_setregid"        },
+[3159] = { 0,  TC,     SEN(printargs),         "posix_setreuid"        },
+[3160] = { 0,  TC,     SEN(printargs),         "posix_setregid"        },
 [3161] = { 0,  0,      SEN(printargs),         "posix_setpgid" },
-[3162] = { 0,  0,      SEN(printargs),         "posix_getgroups"       },
-[3163] = { 0,  0,      SEN(printargs),         "posix_setgroups"       },
-[3164] = { 0,  0,      SEN(printargs),         "posix_gettimeofday"    },
+[3162] = { 0,  TC,     SEN(printargs),         "posix_getgroups"       },
+[3163] = { 0,  TC,     SEN(printargs),         "posix_setgroups"       },
+[3164] = { 0,  TCL,    SEN(printargs),         "posix_gettimeofday"    },
 [3165] = { 0,  0,      SEN(printargs),         "posix_getrusage"       },
 [3166] = { 0,  0,      SEN(printargs),         "posix_getrlimit"       },
 [3167] = { 0,  0,      SEN(printargs),         "posix_setrlimit"       },
index 16ec2a1bd4bf29f17f2e9801ececc9273b88f28d..9c05c86796c99203cd3dc7cdbe5ad6ae995f25eb 100644 (file)
 /*
- * Copyright (c) 2013-2019 The strace developers.
+ * Copyright (c) 2013-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
  */
 
+#define BASE_NR 6000
 #if defined LINUX_MIPSN32
 /* For an N32 strace decode the N32 64-bit syscalls. */
-[6000] = { 3,  TD,             SEN(read),                      "read"                  }, /* start of Linux N32 */
-[6001] = { 3,  TD,             SEN(write),                     "write"                 },
-[6002] = { 3,  TD|TF,          SEN(open),                      "open"                  },
-[6003] = { 1,  TD,             SEN(close),                     "close"                 },
-[6004] = { 2,  TF|TST|TSTA,    SEN(stat64),                    "stat"                  },
-[6005] = { 2,  TD|TFST|TSTA,   SEN(fstat64),                   "fstat"                 },
-[6006] = { 2,  TF|TLST|TSTA,   SEN(lstat64),                   "lstat"                 },
-[6007] = { 3,  TD,             SEN(poll_time32),               "poll"                  },
-[6008] = { 3,  TD,             SEN(lseek),                     "lseek"                 },
-[6009] = { 6,  TD|TM|SI,       SEN(mmap),                      "mmap"                  },
-[6010] = { 3,  TM|SI,          SEN(mprotect),                  "mprotect"              },
-[6011] = { 2,  TM|SI,          SEN(munmap),                    "munmap"                },
-[6012] = { 1,  TM|SI,          SEN(brk),                       "brk"                   },
-[6013] = { 4,  TS,             SEN(rt_sigaction),              "rt_sigaction"          },
-[6014] = { 4,  TS,             SEN(rt_sigprocmask),            "rt_sigprocmask"        },
-[6015] = { 3,  TD,             SEN(ioctl),                     "ioctl"                 },
-[6016] = { 4,  TD,             SEN(pread),                     "pread64"               },
-[6017] = { 4,  TD,             SEN(pwrite),                    "pwrite64"              },
-[6018] = { 3,  TD,             SEN(readv),                     "readv"                 },
-[6019] = { 3,  TD,             SEN(writev),                    "writev"                },
-[6020] = { 2,  TF,             SEN(access),                    "access"                },
-[6021] = { 0,  TD,             SEN(pipe),                      "pipe"                  },
-[6022] = { 5,  TD,             SEN(select),                    "_newselect"            },
-[6023] = { 0,  0,              SEN(sched_yield),               "sched_yield"           },
-[6024] = { 5,  TM|SI,          SEN(mremap),                    "mremap"                },
-[6025] = { 3,  TM,             SEN(msync),                     "msync"                 },
-[6026] = { 3,  TM,             SEN(mincore),                   "mincore"               },
-[6027] = { 3,  TM,             SEN(madvise),                   "madvise"               },
-[6028] = { 3,  TI,             SEN(shmget),                    "shmget"                },
-[6029] = { 3,  TI|TM|SI,       SEN(shmat),                     "shmat"                 },
-[6030] = { 3,  TI,             SEN(shmctl),                    "shmctl"                },
-[6031] = { 1,  TD,             SEN(dup),                       "dup"                   },
-[6032] = { 2,  TD,             SEN(dup2),                      "dup2"                  },
-[6033] = { 0,  TS,             SEN(pause),                     "pause"                 },
-[6034] = { 2,  0,              SEN(nanosleep_time32),          "nanosleep"             },
-[6035] = { 2,  0,              SEN(getitimer),                 "getitimer"             },
-[6036] = { 3,  0,              SEN(setitimer),                 "setitimer"             },
-[6037] = { 1,  0,              SEN(alarm),                     "alarm"                 },
-[6038] = { 0,  PU|NF,          SEN(getpid),                    "getpid"                },
-[6039] = { 4,  TD|TN,          SEN(sendfile),                  "sendfile"              },
-[6040] = { 3,  TN,             SEN(socket),                    "socket"                },
-[6041] = { 3,  TN,             SEN(connect),                   "connect"               },
-[6042] = { 3,  TN,             SEN(accept),                    "accept"                },
-[6043] = { 6,  TN,             SEN(sendto),                    "sendto"                },
-[6044] = { 6,  TN,             SEN(recvfrom),                  "recvfrom"              },
-[6045] = { 3,  TN,             SEN(sendmsg),                   "sendmsg"               },
-[6046] = { 3,  TN,             SEN(recvmsg),                   "recvmsg"               },
-[6047] = { 2,  TN,             SEN(shutdown),                  "shutdown"              },
-[6048] = { 3,  TN,             SEN(bind),                      "bind"                  },
-[6049] = { 2,  TN,             SEN(listen),                    "listen"                },
-[6050] = { 3,  TN,             SEN(getsockname),               "getsockname"           },
-[6051] = { 3,  TN,             SEN(getpeername),               "getpeername"           },
-[6052] = { 4,  TN,             SEN(socketpair),                "socketpair"            },
-[6053] = { 5,  TN,             SEN(setsockopt),                "setsockopt"            },
-[6054] = { 5,  TN,             SEN(getsockopt),                "getsockopt"            },
-[6055] = { 5,  TP,             SEN(clone),                     "clone"                 },
-[6056] = { 0,  TP,             SEN(fork),                      "fork"                  },
-[6057] = { 3,  TF|TP|SE|SI,    SEN(execve),                    "execve"                },
-[6058] = { 1,  TP|SE,          SEN(exit),                      "exit"                  },
-[6059] = { 4,  TP,             SEN(wait4),                     "wait4"                 },
-[6060] = { 2,  TS,             SEN(kill),                      "kill"                  },
-[6061] = { 1,  0,              SEN(uname),                     "uname"                 },
-[6062] = { 3,  TI,             SEN(semget),                    "semget"                },
-[6063] = { 3,  TI,             SEN(semop),                     "semop"                 },
-[6064] = { 4,  TI,             SEN(semctl),                    "semctl"                },
-[6065] = { 1,  TI|TM|SI,       SEN(shmdt),                     "shmdt"                 },
-[6066] = { 2,  TI,             SEN(msgget),                    "msgget"                },
-[6067] = { 4,  TI,             SEN(msgsnd),                    "msgsnd"                },
-[6068] = { 5,  TI,             SEN(msgrcv),                    "msgrcv"                },
-[6069] = { 3,  TI,             SEN(msgctl),                    "msgctl"                },
-[6070] = { 3,  TD,             SEN(fcntl),                     "fcntl"                 },
-[6071] = { 2,  TD,             SEN(flock),                     "flock"                 },
-[6072] = { 1,  TD,             SEN(fsync),                     "fsync"                 },
-[6073] = { 1,  TD,             SEN(fdatasync),                 "fdatasync"             },
-[6074] = { 2,  TF,             SEN(truncate64),                "truncate"              },
-[6075] = { 2,  TD,             SEN(ftruncate64),               "ftruncate"             },
-[6076] = { 3,  TD,             SEN(getdents),                  "getdents"              },
-[6077] = { 2,  TF,             SEN(getcwd),                    "getcwd"                },
-[6078] = { 1,  TF,             SEN(chdir),                     "chdir"                 },
-[6079] = { 1,  TD,             SEN(fchdir),                    "fchdir"                },
-[6080] = { 2,  TF,             SEN(rename),                    "rename"                },
-[6081] = { 2,  TF,             SEN(mkdir),                     "mkdir"                 },
-[6082] = { 1,  TF,             SEN(rmdir),                     "rmdir"                 },
-[6083] = { 2,  TD|TF,          SEN(creat),                     "creat"                 },
-[6084] = { 2,  TF,             SEN(link),                      "link"                  },
-[6085] = { 1,  TF,             SEN(unlink),                    "unlink"                },
-[6086] = { 2,  TF,             SEN(symlink),                   "symlink"               },
-[6087] = { 3,  TF,             SEN(readlink),                  "readlink"              },
-[6088] = { 2,  TF,             SEN(chmod),                     "chmod"                 },
-[6089] = { 2,  TD,             SEN(fchmod),                    "fchmod"                },
-[6090] = { 3,  TF,             SEN(chown),                     "chown"                 },
-[6091] = { 3,  TD,             SEN(fchown),                    "fchown"                },
-[6092] = { 3,  TF,             SEN(chown),                     "lchown"                },
-[6093] = { 1,  NF,             SEN(umask),                     "umask"                 },
-[6094] = { 2,  0,              SEN(gettimeofday),              "gettimeofday"          },
-[6095] = { 2,  0,              SEN(getrlimit),                 "getrlimit"             },
-[6096] = { 2,  0,              SEN(getrusage),                 "getrusage"             },
-[6097] = { 1,  0,              SEN(sysinfo),                   "sysinfo"               },
-[6098] = { 1,  0,              SEN(times),                     "times"                 },
-[6099] = { 4,  0,              SEN(ptrace),                    "ptrace"                },
-[6100] = { 0,  PU|NF,          SEN(getuid),                    "getuid"                },
-[6101] = { 3,  0,              SEN(syslog),                    "syslog"                },
-[6102] = { 0,  PU|NF,          SEN(getgid),                    "getgid"                },
-[6103] = { 1,  0,              SEN(setuid),                    "setuid"                },
-[6104] = { 1,  0,              SEN(setgid),                    "setgid"                },
-[6105] = { 0,  PU|NF,          SEN(geteuid),                   "geteuid"               },
-[6106] = { 0,  PU|NF,          SEN(getegid),                   "getegid"               },
-[6107] = { 2,  0,              SEN(setpgid),                   "setpgid"               },
-[6108] = { 0,  PU|NF,          SEN(getppid),                   "getppid"               },
-[6109] = { 0,  PU|NF,          SEN(getpgrp),                   "getpgrp"               },
-[6110] = { 0,  0,              SEN(setsid),                    "setsid"                },
-[6111] = { 2,  0,              SEN(setreuid),                  "setreuid"              },
-[6112] = { 2,  0,              SEN(setregid),                  "setregid"              },
-[6113] = { 2,  0,              SEN(getgroups),                 "getgroups"             },
-[6114] = { 2,  0,              SEN(setgroups),                 "setgroups"             },
-[6115] = { 3,  0,              SEN(setresuid),                 "setresuid"             },
-[6116] = { 3,  0,              SEN(getresuid),                 "getresuid"             },
-[6117] = { 3,  0,              SEN(setresgid),                 "setresgid"             },
-[6118] = { 3,  0,              SEN(getresgid),                 "getresgid"             },
-[6119] = { 1,  0,              SEN(getpgid),                   "getpgid"               },
-[6120] = { 1,  NF,             SEN(setfsuid),                  "setfsuid"              },
-[6121] = { 1,  NF,             SEN(setfsgid),                  "setfsgid"              },
-[6122] = { 1,  0,              SEN(getsid),                    "getsid"                },
-[6123] = { 2,  0,              SEN(capget),                    "capget"                },
-[6124] = { 2,  0,              SEN(capset),                    "capset"                },
-[6125] = { 2,  TS,             SEN(rt_sigpending),             "rt_sigpending"         },
-[6126] = { 4,  TS,             SEN(rt_sigtimedwait_time32),    "rt_sigtimedwait"       },
-[6127] = { 3,  TS,             SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
-[6128] = { 2,  TS,             SEN(rt_sigsuspend),             "rt_sigsuspend"         },
-[6129] = { 2,  TS,             SEN(sigaltstack),               "sigaltstack"           },
-[6130] = { 2,  TF,             SEN(utime),                     "utime"                 },
-[6131] = { 3,  TF,             SEN(mknod),                     "mknod"                 },
-[6132] = { 1,  NF,             SEN(personality),               "personality"           },
-[6133] = { 2,  TSFA,           SEN(ustat),                     "ustat"                 },
-[6134] = { 2,  TF|TSF|TSFA,    SEN(statfs),                    "statfs"                },
-[6135] = { 2,  TD|TFSF|TSFA,   SEN(fstatfs),                   "fstatfs"               },
-[6136] = { 3,  0,              SEN(sysfs),                     "sysfs"                 },
-[6137] = { 2,  0,              SEN(getpriority),               "getpriority"           },
-[6138] = { 3,  0,              SEN(setpriority),               "setpriority"           },
-[6139] = { 2,  0,              SEN(sched_setparam),            "sched_setparam"        },
-[6140] = { 2,  0,              SEN(sched_getparam),            "sched_getparam"        },
-[6141] = { 3,  0,              SEN(sched_setscheduler),        "sched_setscheduler"    },
-[6142] = { 1,  0,              SEN(sched_getscheduler),        "sched_getscheduler"    },
-[6143] = { 1,  0,              SEN(sched_get_priority_max),    "sched_get_priority_max"},
-[6144] = { 1,  0,              SEN(sched_get_priority_min),    "sched_get_priority_min"},
-[6145] = { 2,  0,              SEN(sched_rr_get_interval_time32),"sched_rr_get_interval"},
-[6146] = { 2,  TM,             SEN(mlock),                     "mlock"                 },
-[6147] = { 2,  TM,             SEN(munlock),                   "munlock"               },
-[6148] = { 1,  TM,             SEN(mlockall),                  "mlockall"              },
-[6149] = { 0,  TM,             SEN(munlockall),                "munlockall"            },
-[6150] = { 0,  0,              SEN(vhangup),                   "vhangup"               },
-[6151] = { 2,  TF,             SEN(pivotroot),                 "pivot_root"            },
-[6152] = { 1,  0,              SEN(sysctl),                    "_sysctl"               },
-[6153] = { 5,  0,              SEN(prctl),                     "prctl"                 },
-[6154] = { 1,  0,              SEN(adjtimex32),                "adjtimex"              },
-[6155] = { 2,  0,              SEN(setrlimit),                 "setrlimit"             },
-[6156] = { 1,  TF,             SEN(chroot),                    "chroot"                },
-[6157] = { 0,  0,              SEN(sync),                      "sync"                  },
-[6158] = { 1,  TF,             SEN(acct),                      "acct"                  },
-[6159] = { 2,  0,              SEN(settimeofday),              "settimeofday"          },
-[6160] = { 5,  TF,             SEN(mount),                     "mount"                 },
-[6161] = { 2,  TF,             SEN(umount2),                   "umount2"               },
-[6162] = { 2,  TF,             SEN(swapon),                    "swapon"                },
-[6163] = { 1,  TF,             SEN(swapoff),                   "swapoff"               },
-[6164] = { 4,  0,              SEN(reboot),                    "reboot"                },
-[6165] = { 2,  0,              SEN(sethostname),               "sethostname"           },
-[6166] = { 2,  0,              SEN(setdomainname),             "setdomainname"         },
-[6167] = { 2,  0,              SEN(create_module),             "create_module"         },
-[6168] = { 3,  0,              SEN(init_module),               "init_module"           },
-[6169] = { 2,  0,              SEN(delete_module),             "delete_module"         },
-[6170] = { 1,  0,              SEN(get_kernel_syms),           "get_kernel_syms"       },
-[6171] = { 5,  0,              SEN(query_module),              "query_module"          },
-[6172] = { 4,  TF,             SEN(quotactl),                  "quotactl"              },
-[6173] = { 3,  0,              SEN(nfsservctl),                "nfsservctl"            },
-[6174] = { 5,  TN,             SEN(getpmsg),                   "getpmsg"               },
-[6175] = { 5,  TN,             SEN(putpmsg),                   "putpmsg"               },
-[6176] = { 0,  0,              SEN(afs_syscall),               "afs_syscall"           },
-[6177] = { 0,  0,              SEN(printargs),                 "reserved177"           },
-[6178] = { 0,  PU|NF,          SEN(gettid),                    "gettid"                },
-[6179] = { 3,  TD,             SEN(readahead),                 "readahead"             },
-[6180] = { 5,  TF,             SEN(setxattr),                  "setxattr"              },
-[6181] = { 5,  TF,             SEN(setxattr),                  "lsetxattr"             },
-[6182] = { 5,  TD,             SEN(fsetxattr),                 "fsetxattr"             },
-[6183] = { 4,  TF,             SEN(getxattr),                  "getxattr"              },
-[6184] = { 4,  TF,             SEN(getxattr),                  "lgetxattr"             },
-[6185] = { 4,  TD,             SEN(fgetxattr),                 "fgetxattr"             },
-[6186] = { 3,  TF,             SEN(listxattr),                 "listxattr"             },
-[6187] = { 3,  TF,             SEN(listxattr),                 "llistxattr"            },
-[6188] = { 3,  TD,             SEN(flistxattr),                "flistxattr"            },
-[6189] = { 2,  TF,             SEN(removexattr),               "removexattr"           },
-[6190] = { 2,  TF,             SEN(removexattr),               "lremovexattr"          },
-[6191] = { 2,  TD,             SEN(fremovexattr),              "fremovexattr"          },
-[6192] = { 2,  TS,             SEN(kill),                      "tkill"                 },
-[6193] = { 1,  0,              SEN(time),                      "time"                  },
-[6194] = { 6,  0,              SEN(futex_time32),              "futex"                 },
-[6195] = { 3,  0,              SEN(sched_setaffinity),         "sched_setaffinity"     },
-[6196] = { 3,  0,              SEN(sched_getaffinity),         "sched_getaffinity"     },
-[6197] = { 3,  0,              SEN(printargs),                 "cacheflush"            },
-[6198] = { 3,  0,              SEN(printargs),                 "cachectl"              },
-[6199] = { 4,  0,              SEN(sysmips),                   "sysmips"               },
-[6200] = { 2,  TM,             SEN(io_setup),                  "io_setup"              },
-[6201] = { 1,  TM,             SEN(io_destroy),                "io_destroy"            },
-[6202] = { 5,  0,              SEN(io_getevents_time32),       "io_getevents"          },
-[6203] = { 3,  0,              SEN(io_submit),                 "io_submit"             },
-[6204] = { 3,  0,              SEN(io_cancel),                 "io_cancel"             },
-[6205] = { 1,  TP|SE,          SEN(exit),                      "exit_group"            },
-[6206] = { 3,  0,              SEN(lookup_dcookie),            "lookup_dcookie"        },
-[6207] = { 1,  TD,             SEN(epoll_create),              "epoll_create"          },
-[6208] = { 4,  TD,             SEN(epoll_ctl),                 "epoll_ctl"             },
-[6209] = { 4,  TD,             SEN(epoll_wait),                "epoll_wait"            },
-[6210] = { 5,  TM|SI,          SEN(remap_file_pages),          "remap_file_pages"      },
-[6211] = { 0,  TS,             SEN(rt_sigreturn),              "rt_sigreturn"          },
-[6212] = { 3,  TD,             SEN(fcntl64),                   "fcntl64"               },
-[6213] = { 1,  0,              SEN(set_tid_address),           "set_tid_address"       },
-[6214] = { 0,  0,              SEN(restart_syscall),           "restart_syscall"       },
-[6215] = { 4,  TI,             SEN(semtimedop_time32),         "semtimedop"            },
-[6216] = { 4,  TD,             SEN(fadvise64_64),              "fadvise64"             },
-[6217] = { 3,  TF|TSF|TSFA,    SEN(statfs64),                  "statfs64"              },
-[6218] = { 3,  TD|TFSF|TSFA,   SEN(fstatfs64),                 "fstatfs64"             },
-[6219] = { 4,  TD|TN,          SEN(sendfile64),                "sendfile64"            },
-[6220] = { 3,  0,              SEN(timer_create),              "timer_create"          },
-[6221] = { 4,  0,              SEN(timer_settime32),           "timer_settime"         },
-[6222] = { 2,  0,              SEN(timer_gettime32),           "timer_gettime"         },
-[6223] = { 1,  0,              SEN(timer_getoverrun),          "timer_getoverrun"      },
-[6224] = { 1,  0,              SEN(timer_delete),              "timer_delete"          },
-[6225] = { 2,  0,              SEN(clock_settime32),           "clock_settime"         },
-[6226] = { 2,  0,              SEN(clock_gettime32),           "clock_gettime"         },
-[6227] = { 2,  0,              SEN(clock_getres_time32),       "clock_getres"          },
-[6228] = { 4,  0,              SEN(clock_nanosleep_time32),    "clock_nanosleep"       },
-[6229] = { 3,  TS,             SEN(tgkill),                    "tgkill"                },
-[6230] = { 2,  TF,             SEN(utimes),                    "utimes"                },
-[6231] = { 6,  TM,             SEN(mbind),                     "mbind"                 },
-[6232] = { 5,  TM,             SEN(get_mempolicy),             "get_mempolicy"         },
-[6233] = { 3,  TM,             SEN(set_mempolicy),             "set_mempolicy"         },
-[6234] = { 4,  TD,             SEN(mq_open),                   "mq_open"               },
-[6235] = { 1,  0,              SEN(mq_unlink),                 "mq_unlink"             },
-[6236] = { 5,  TD,             SEN(mq_timedsend_time32),       "mq_timedsend"          },
-[6237] = { 5,  TD,             SEN(mq_timedreceive_time32),    "mq_timedreceive"       },
-[6238] = { 2,  TD,             SEN(mq_notify),                 "mq_notify"             },
-[6239] = { 3,  TD,             SEN(mq_getsetattr),             "mq_getsetattr"         },
-[6240] = { 5,  0,              SEN(vserver),                   "vserver"               },
-[6241] = { 5,  TP,             SEN(waitid),                    "waitid"                },
-[6242] = { },
-[6243] = { 5,  0,              SEN(add_key),                   "add_key"               },
-[6244] = { 4,  0,              SEN(request_key),               "request_key"           },
-[6245] = { 5,  0,              SEN(keyctl),                    "keyctl"                },
-[6246] = { 1,  0,              SEN(set_thread_area),           "set_thread_area"       },
-[6247] = { 0,  TD,             SEN(inotify_init),              "inotify_init"          },
-[6248] = { 3,  TD|TF,          SEN(inotify_add_watch),         "inotify_add_watch"     },
-[6249] = { 2,  TD,             SEN(inotify_rm_watch),          "inotify_rm_watch"      },
-[6250] = { 4,  TM,             SEN(migrate_pages),             "migrate_pages"         },
-[6251] = { 4,  TD|TF,          SEN(openat),                    "openat"                },
-[6252] = { 3,  TD|TF,          SEN(mkdirat),                   "mkdirat"               },
-[6253] = { 4,  TD|TF,          SEN(mknodat),                   "mknodat"               },
-[6254] = { 5,  TD|TF,          SEN(fchownat),                  "fchownat"              },
-[6255] = { 3,  TD|TF,          SEN(futimesat),                 "futimesat"             },
-[6256] = { 4,  TD|TF|TFST|TSTA,SEN(newfstatat),                "newfstatat"            },
-[6257] = { 3,  TD|TF,          SEN(unlinkat),                  "unlinkat"              },
-[6258] = { 4,  TD|TF,          SEN(renameat),                  "renameat"              },
-[6259] = { 5,  TD|TF,          SEN(linkat),                    "linkat"                },
-[6260] = { 3,  TD|TF,          SEN(symlinkat),                 "symlinkat"             },
-[6261] = { 4,  TD|TF,          SEN(readlinkat),                "readlinkat"            },
-[6262] = { 3,  TD|TF,          SEN(fchmodat),                  "fchmodat"              },
-[6263] = { 3,  TD|TF,          SEN(faccessat),                 "faccessat"             },
-[6264] = { 6,  TD,             SEN(pselect6_time32),           "pselect6"              },
-[6265] = { 5,  TD,             SEN(ppoll_time32),              "ppoll"                 },
-[6266] = { 1,  TP,             SEN(unshare),                   "unshare"               },
-[6267] = { 6,  TD,             SEN(splice),                    "splice"                },
-[6268] = { 4,  TD,             SEN(sync_file_range),           "sync_file_range"       },
-[6269] = { 4,  TD,             SEN(tee),                       "tee"                   },
-[6270] = { 4,  TD,             SEN(vmsplice),                  "vmsplice"              },
-[6271] = { 6,  TM,             SEN(move_pages),                "move_pages"            },
-[6272] = { 2,  0,              SEN(set_robust_list),           "set_robust_list"       },
-[6273] = { 3,  0,              SEN(get_robust_list),           "get_robust_list"       },
-[6274] = { 4,  0,              SEN(kexec_load),                "kexec_load"            },
-[6275] = { 3,  0,              SEN(getcpu),                    "getcpu"                },
-[6276] = { 6,  TD,             SEN(epoll_pwait),               "epoll_pwait"           },
-[6277] = { 3,  0,              SEN(ioprio_set),                "ioprio_set"            },
-[6278] = { 2,  0,              SEN(ioprio_get),                "ioprio_get"            },
-[6279] = { 4,  TD|TF,          SEN(utimensat_time32),          "utimensat"             },
-[6280] = { 3,  TD|TS,          SEN(signalfd),                  "signalfd"              },
-[6281] = { 4,  TD,             SEN(timerfd),                   "timerfd"               },
-[6282] = { 1,  TD,             SEN(eventfd),                   "eventfd"               },
-[6283] = { 4,  TD,             SEN(fallocate),                 "fallocate"             },
-[6284] = { 2,  TD,             SEN(timerfd_create),            "timerfd_create"        },
-[6285] = { 2,  TD,             SEN(timerfd_gettime32),         "timerfd_gettime"       },
-[6286] = { 4,  TD,             SEN(timerfd_settime32),         "timerfd_settime"       },
-[6287] = { 4,  TD|TS,          SEN(signalfd4),                 "signalfd4"             },
-[6288] = { 2,  TD,             SEN(eventfd2),                  "eventfd2"              },
-[6289] = { 1,  TD,             SEN(epoll_create1),             "epoll_create1"         },
-[6290] = { 3,  TD,             SEN(dup3),                      "dup3"                  },
-[6291] = { 2,  TD,             SEN(pipe2),                     "pipe2"                 },
-[6292] = { 1,  TD,             SEN(inotify_init1),             "inotify_init1"         },
-[6293] = { 4,  TD,             SEN(preadv),                    "preadv"                },
-[6294] = { 4,  TD,             SEN(pwritev),                   "pwritev"               },
-[6295] = { 4,  TP|TS,          SEN(rt_tgsigqueueinfo),         "rt_tgsigqueueinfo"     },
-[6296] = { 5,  TD,             SEN(perf_event_open),           "perf_event_open"       },
-[6297] = { 4,  TN,             SEN(accept4),                   "accept4"               },
-[6298] = { 5,  TN,             SEN(recvmmsg_time32),           "recvmmsg"              },
-[6299] = { 3,  TD,             SEN(getdents64),                "getdents64"            },
-[6300] = { 2,  TD,             SEN(fanotify_init),             "fanotify_init"         },
-[6301] = { 5,  TD|TF,          SEN(fanotify_mark),             "fanotify_mark"         },
-[6302] = { 4,  0,              SEN(prlimit64),                 "prlimit64"             },
-[6303] = { 5,  TD|TF,          SEN(name_to_handle_at),         "name_to_handle_at"     },
-[6304] = { 3,  TD,             SEN(open_by_handle_at),         "open_by_handle_at"     },
-[6305] = { 2,  0,              SEN(clock_adjtime32),           "clock_adjtime"         },
-[6306] = { 1,  TD,             SEN(syncfs),                    "syncfs"                },
-[6307] = { 4,  TN,             SEN(sendmmsg),                  "sendmmsg"              },
-[6308] = { 2,  TD,             SEN(setns),                     "setns"                 },
-[6309] = { 6,  0,              SEN(process_vm_readv),          "process_vm_readv"      },
-[6310] = { 6,  0,              SEN(process_vm_writev),         "process_vm_writev"     },
-[6311] = { 5,  0,              SEN(kcmp),                      "kcmp"                  },
-[6312] = { 3,  TD,             SEN(finit_module),              "finit_module"          },
-[6313] = { 3,  0,              SEN(sched_setattr),             "sched_setattr"         },
-[6314] = { 4,  0,              SEN(sched_getattr),             "sched_getattr"         },
-[6315] = { 5,  TD|TF,          SEN(renameat2),                 "renameat2"             },
-[6316] = { 3,  0,              SEN(seccomp),                   "seccomp"               },
-[6317] = { 3,  0,              SEN(getrandom),                 "getrandom"             },
-[6318] = { 2,  TD,             SEN(memfd_create),              "memfd_create"          },
-[6319] = { 3,  TD,             SEN(bpf),                       "bpf"                   },
-[6320] = { 5,  TD|TF|TP|SE|SI, SEN(execveat),                  "execveat"              },
-[6321] = { 1,  TD,             SEN(userfaultfd),               "userfaultfd"           },
-[6322] = { 2,  0,              SEN(membarrier),                "membarrier"            },
-[6323] = { 3,  TM,             SEN(mlock2),                    "mlock2"                },
-[6324] = { 6,  TD,             SEN(copy_file_range),           "copy_file_range"       },
-[6325] = { 6,  TD,             SEN(preadv2),                   "preadv2"               },
-[6326] = { 6,  TD,             SEN(pwritev2),                  "pwritev2"              },
-[6327] = { 4,  TM|SI,          SEN(pkey_mprotect),             "pkey_mprotect"         },
-[6328] = { 2,  0,              SEN(pkey_alloc),                "pkey_alloc"            },
-[6329] = { 1,  0,              SEN(pkey_free),                 "pkey_free"             },
-[6330] = { 5,  TD|TF|TSTA,     SEN(statx),                     "statx"                 },
-[6331] = { 4,  0,              SEN(rseq),                      "rseq"                  },
-[6332] = { 6,  0,              SEN(io_pgetevents_time32),      "io_pgetevents"         },
-/* [6333 ... 6402] - reserved to sync up with other architectures */
-[6403] = { 2,  0,              SEN(clock_gettime64),           "clock_gettime64"       },
-[6404] = { 2,  0,              SEN(clock_settime64),           "clock_settime64"       },
-[6405] = { 2,  0,              SEN(clock_adjtime64),           "clock_adjtime64"       },
-[6406] = { 2,  0,              SEN(clock_getres_time64),       "clock_getres_time64"   },
-[6407] = { 4,  0,              SEN(clock_nanosleep_time64),    "clock_nanosleep_time64"},
-[6408] = { 2,  0,              SEN(timer_gettime64),           "timer_gettime64"       },
-[6409] = { 4,  0,              SEN(timer_settime64),           "timer_settime64"       },
-[6410] = { 2,  TD,             SEN(timerfd_gettime64),         "timerfd_gettime64"     },
-[6411] = { 4,  TD,             SEN(timerfd_settime64),         "timerfd_settime64"     },
-[6412] = { 4,  TD|TF,          SEN(utimensat_time64),          "utimensat_time64"      },
-[6413] = { 6,  TD,             SEN(pselect6_time64),           "pselect6_time64"       },
-[6414] = { 5,  TD,             SEN(ppoll_time64),              "ppoll_time64"          },
-[6416] = { 6,  0,              SEN(io_pgetevents_time64),      "io_pgetevents_time64"  },
-[6417] = { 5,  TN,             SEN(recvmmsg_time64),           "recvmmsg_time64"       },
-[6418] = { 5,  TD,             SEN(mq_timedsend_time64),       "mq_timedsend_time64"   },
-[6419] = { 5,  TD,             SEN(mq_timedreceive_time64),    "mq_timedreceive_time64"},
-[6420] = { 4,  TI,             SEN(semtimedop_time64),         "semtimedop_time64"     },
-[6421] = { 4,  TS,             SEN(rt_sigtimedwait_time64),    "rt_sigtimedwait_time64"},
-[6422] = { 6,  0,              SEN(futex_time64),              "futex_time64"          },
-[6423] = { 2,  0,              SEN(sched_rr_get_interval_time64),      "sched_rr_get_interval_time64"  },
-[6424] = { 4,  TD|TS,          SEN(pidfd_send_signal),         "pidfd_send_signal"     },
-[6425] = { 2,  TD,             SEN(io_uring_setup),            "io_uring_setup"        },
-[6426] = { 6,  TD|TS,          SEN(io_uring_enter),            "io_uring_enter"        },
-[6427] = { 4,  TD|TM,          SEN(io_uring_register),         "io_uring_register"     },
+[BASE_NR +   0] = { 3, TD,             SEN(read),                      "read"                  }, /* start of Linux N32 */
+[BASE_NR +   1] = { 3, TD,             SEN(write),                     "write"                 },
+[BASE_NR +   2] = { 3, TD|TF,          SEN(open),                      "open"                  },
+[BASE_NR +   3] = { 1, TD,             SEN(close),                     "close"                 },
+[BASE_NR +   4] = { 2, TF|TST|TSTA,    SEN(stat64),                    "stat"                  },
+[BASE_NR +   5] = { 2, TD|TFST|TSTA,   SEN(fstat64),                   "fstat"                 },
+[BASE_NR +   6] = { 2, TF|TLST|TSTA,   SEN(lstat64),                   "lstat"                 },
+[BASE_NR +   7] = { 3, TD,             SEN(poll_time32),               "poll"                  },
+[BASE_NR +   8] = { 3, TD,             SEN(lseek),                     "lseek"                 },
+[BASE_NR +   9] = { 6, TD|TM|SI,       SEN(mmap),                      "mmap"                  },
+[BASE_NR +  10] = { 3, TM|SI,          SEN(mprotect),                  "mprotect"              },
+[BASE_NR +  11] = { 2, TM|SI,          SEN(munmap),                    "munmap"                },
+[BASE_NR +  12] = { 1, TM|SI,          SEN(brk),                       "brk"                   },
+[BASE_NR +  13] = { 4, TS,             SEN(rt_sigaction),              "rt_sigaction"          },
+[BASE_NR +  14] = { 4, TS,             SEN(rt_sigprocmask),            "rt_sigprocmask"        },
+[BASE_NR +  15] = { 3, TD,             SEN(ioctl),                     "ioctl"                 },
+[BASE_NR +  16] = { 4, TD,             SEN(pread),                     "pread64"               },
+[BASE_NR +  17] = { 4, TD,             SEN(pwrite),                    "pwrite64"              },
+[BASE_NR +  18] = { 3, TD,             SEN(readv),                     "readv"                 },
+[BASE_NR +  19] = { 3, TD,             SEN(writev),                    "writev"                },
+[BASE_NR +  20] = { 2, TF,             SEN(access),                    "access"                },
+[BASE_NR +  21] = { 0, TD,             SEN(pipe),                      "pipe"                  },
+[BASE_NR +  22] = { 5, TD,             SEN(select),                    "_newselect"            },
+[BASE_NR +  23] = { 0, 0,              SEN(sched_yield),               "sched_yield"           },
+[BASE_NR +  24] = { 5, TM|SI,          SEN(mremap),                    "mremap"                },
+[BASE_NR +  25] = { 3, TM,             SEN(msync),                     "msync"                 },
+[BASE_NR +  26] = { 3, TM,             SEN(mincore),                   "mincore"               },
+[BASE_NR +  27] = { 3, TM,             SEN(madvise),                   "madvise"               },
+[BASE_NR +  28] = { 3, TI,             SEN(shmget),                    "shmget"                },
+[BASE_NR +  29] = { 3, TI|TM|SI,       SEN(shmat),                     "shmat"                 },
+[BASE_NR +  30] = { 3, TI,             SEN(shmctl),                    "shmctl"                },
+[BASE_NR +  31] = { 1, TD,             SEN(dup),                       "dup"                   },
+[BASE_NR +  32] = { 2, TD,             SEN(dup2),                      "dup2"                  },
+[BASE_NR +  33] = { 0, TS,             SEN(pause),                     "pause"                 },
+[BASE_NR +  34] = { 2, 0,              SEN(nanosleep_time32),          "nanosleep"             },
+[BASE_NR +  35] = { 2, 0,              SEN(getitimer),                 "getitimer"             },
+[BASE_NR +  36] = { 3, 0,              SEN(setitimer),                 "setitimer"             },
+[BASE_NR +  37] = { 1, 0,              SEN(alarm),                     "alarm"                 },
+[BASE_NR +  38] = { 0, PU|NF,          SEN(getpid),                    "getpid"                },
+[BASE_NR +  39] = { 4, TD|TN,          SEN(sendfile),                  "sendfile"              },
+[BASE_NR +  40] = { 3, TN,             SEN(socket),                    "socket"                },
+[BASE_NR +  41] = { 3, TN,             SEN(connect),                   "connect"               },
+[BASE_NR +  42] = { 3, TN,             SEN(accept),                    "accept"                },
+[BASE_NR +  43] = { 6, TN,             SEN(sendto),                    "sendto"                },
+[BASE_NR +  44] = { 6, TN,             SEN(recvfrom),                  "recvfrom"              },
+[BASE_NR +  45] = { 3, TN,             SEN(sendmsg),                   "sendmsg"               },
+[BASE_NR +  46] = { 3, TN,             SEN(recvmsg),                   "recvmsg"               },
+[BASE_NR +  47] = { 2, TN,             SEN(shutdown),                  "shutdown"              },
+[BASE_NR +  48] = { 3, TN,             SEN(bind),                      "bind"                  },
+[BASE_NR +  49] = { 2, TN,             SEN(listen),                    "listen"                },
+[BASE_NR +  50] = { 3, TN,             SEN(getsockname),               "getsockname"           },
+[BASE_NR +  51] = { 3, TN,             SEN(getpeername),               "getpeername"           },
+[BASE_NR +  52] = { 4, TN,             SEN(socketpair),                "socketpair"            },
+[BASE_NR +  53] = { 5, TN,             SEN(setsockopt),                "setsockopt"            },
+[BASE_NR +  54] = { 5, TN,             SEN(getsockopt),                "getsockopt"            },
+[BASE_NR +  55] = { 5, TP,             SEN(clone),                     "clone"                 },
+[BASE_NR +  56] = { 0, TP,             SEN(fork),                      "fork"                  },
+[BASE_NR +  57] = { 3, TF|TP|TSD|SE|SI,        SEN(execve),                    "execve"                },
+[BASE_NR +  58] = { 1, TP|SE,          SEN(exit),                      "exit"                  },
+[BASE_NR +  59] = { 4, TP,             SEN(wait4),                     "wait4"                 },
+[BASE_NR +  60] = { 2, TS|TP,          SEN(kill),                      "kill"                  },
+[BASE_NR +  61] = { 1, 0,              SEN(uname),                     "uname"                 },
+[BASE_NR +  62] = { 3, TI,             SEN(semget),                    "semget"                },
+[BASE_NR +  63] = { 3, TI,             SEN(semop),                     "semop"                 },
+[BASE_NR +  64] = { 4, TI,             SEN(semctl),                    "semctl"                },
+[BASE_NR +  65] = { 1, TI|TM|SI,       SEN(shmdt),                     "shmdt"                 },
+[BASE_NR +  66] = { 2, TI,             SEN(msgget),                    "msgget"                },
+[BASE_NR +  67] = { 4, TI,             SEN(msgsnd),                    "msgsnd"                },
+[BASE_NR +  68] = { 5, TI,             SEN(msgrcv),                    "msgrcv"                },
+[BASE_NR +  69] = { 3, TI,             SEN(msgctl),                    "msgctl"                },
+[BASE_NR +  70] = { 3, TD,             SEN(fcntl),                     "fcntl"                 },
+[BASE_NR +  71] = { 2, TD,             SEN(flock),                     "flock"                 },
+[BASE_NR +  72] = { 1, TD,             SEN(fsync),                     "fsync"                 },
+[BASE_NR +  73] = { 1, TD,             SEN(fdatasync),                 "fdatasync"             },
+[BASE_NR +  74] = { 2, TF,             SEN(truncate64),                "truncate"              },
+[BASE_NR +  75] = { 2, TD,             SEN(ftruncate64),               "ftruncate"             },
+[BASE_NR +  76] = { 3, TD,             SEN(getdents),                  "getdents"              },
+[BASE_NR +  77] = { 2, TF,             SEN(getcwd),                    "getcwd"                },
+[BASE_NR +  78] = { 1, TF,             SEN(chdir),                     "chdir"                 },
+[BASE_NR +  79] = { 1, TD,             SEN(fchdir),                    "fchdir"                },
+[BASE_NR +  80] = { 2, TF,             SEN(rename),                    "rename"                },
+[BASE_NR +  81] = { 2, TF,             SEN(mkdir),                     "mkdir"                 },
+[BASE_NR +  82] = { 1, TF,             SEN(rmdir),                     "rmdir"                 },
+[BASE_NR +  83] = { 2, TD|TF,          SEN(creat),                     "creat"                 },
+[BASE_NR +  84] = { 2, TF,             SEN(link),                      "link"                  },
+[BASE_NR +  85] = { 1, TF,             SEN(unlink),                    "unlink"                },
+[BASE_NR +  86] = { 2, TF,             SEN(symlink),                   "symlink"               },
+[BASE_NR +  87] = { 3, TF,             SEN(readlink),                  "readlink"              },
+[BASE_NR +  88] = { 2, TF,             SEN(chmod),                     "chmod"                 },
+[BASE_NR +  89] = { 2, TD,             SEN(fchmod),                    "fchmod"                },
+[BASE_NR +  90] = { 3, TF,             SEN(chown),                     "chown"                 },
+[BASE_NR +  91] = { 3, TD,             SEN(fchown),                    "fchown"                },
+[BASE_NR +  92] = { 3, TF,             SEN(chown),                     "lchown"                },
+[BASE_NR +  93] = { 1, NF,             SEN(umask),                     "umask"                 },
+[BASE_NR +  94] = { 2, TCL,            SEN(gettimeofday),              "gettimeofday"          },
+[BASE_NR +  95] = { 2, 0,              SEN(getrlimit),                 "getrlimit"             },
+[BASE_NR +  96] = { 2, 0,              SEN(getrusage),                 "getrusage"             },
+[BASE_NR +  97] = { 1, 0,              SEN(sysinfo),                   "sysinfo"               },
+[BASE_NR +  98] = { 1, 0,              SEN(times),                     "times"                 },
+[BASE_NR +  99] = { 4, 0,              SEN(ptrace),                    "ptrace"                },
+[BASE_NR + 100] = { 0, TC|PU|NF,       SEN(getuid),                    "getuid"                },
+[BASE_NR + 101] = { 3, 0,              SEN(syslog),                    "syslog"                },
+[BASE_NR + 102] = { 0, TC|PU|NF,       SEN(getgid),                    "getgid"                },
+[BASE_NR + 103] = { 1, TC,             SEN(setuid),                    "setuid"                },
+[BASE_NR + 104] = { 1, TC,             SEN(setgid),                    "setgid"                },
+[BASE_NR + 105] = { 0, TC|PU|NF,       SEN(geteuid),                   "geteuid"               },
+[BASE_NR + 106] = { 0, TC|PU|NF,       SEN(getegid),                   "getegid"               },
+[BASE_NR + 107] = { 2, 0,              SEN(setpgid),                   "setpgid"               },
+[BASE_NR + 108] = { 0, PU|NF,          SEN(getppid),                   "getppid"               },
+[BASE_NR + 109] = { 0, PU|NF,          SEN(getpgrp),                   "getpgrp"               },
+[BASE_NR + 110] = { 0, 0,              SEN(setsid),                    "setsid"                },
+[BASE_NR + 111] = { 2, TC,             SEN(setreuid),                  "setreuid"              },
+[BASE_NR + 112] = { 2, TC,             SEN(setregid),                  "setregid"              },
+[BASE_NR + 113] = { 2, TC,             SEN(getgroups),                 "getgroups"             },
+[BASE_NR + 114] = { 2, TC,             SEN(setgroups),                 "setgroups"             },
+[BASE_NR + 115] = { 3, TC,             SEN(setresuid),                 "setresuid"             },
+[BASE_NR + 116] = { 3, TC,             SEN(getresuid),                 "getresuid"             },
+[BASE_NR + 117] = { 3, TC,             SEN(setresgid),                 "setresgid"             },
+[BASE_NR + 118] = { 3, TC,             SEN(getresgid),                 "getresgid"             },
+[BASE_NR + 119] = { 1, 0,              SEN(getpgid),                   "getpgid"               },
+[BASE_NR + 120] = { 1, TC|NF,          SEN(setfsuid),                  "setfsuid"              },
+[BASE_NR + 121] = { 1, TC|NF,          SEN(setfsgid),                  "setfsgid"              },
+[BASE_NR + 122] = { 1, 0,              SEN(getsid),                    "getsid"                },
+[BASE_NR + 123] = { 2, TC,             SEN(capget),                    "capget"                },
+[BASE_NR + 124] = { 2, TC,             SEN(capset),                    "capset"                },
+[BASE_NR + 125] = { 2, TS,             SEN(rt_sigpending),             "rt_sigpending"         },
+[BASE_NR + 126] = { 4, TS,             SEN(rt_sigtimedwait_time32),    "rt_sigtimedwait"       },
+[BASE_NR + 127] = { 3, TS|TP,          SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
+[BASE_NR + 128] = { 2, TS,             SEN(rt_sigsuspend),             "rt_sigsuspend"         },
+[BASE_NR + 129] = { 2, TS,             SEN(sigaltstack),               "sigaltstack"           },
+[BASE_NR + 130] = { 2, TF,             SEN(utime),                     "utime"                 },
+[BASE_NR + 131] = { 3, TF,             SEN(mknod),                     "mknod"                 },
+[BASE_NR + 132] = { 1, NF,             SEN(personality),               "personality"           },
+[BASE_NR + 133] = { 2, TSFA,           SEN(ustat),                     "ustat"                 },
+[BASE_NR + 134] = { 2, TF|TSF|TSFA,    SEN(statfs),                    "statfs"                },
+[BASE_NR + 135] = { 2, TD|TFSF|TSFA,   SEN(fstatfs),                   "fstatfs"               },
+[BASE_NR + 136] = { 3, 0,              SEN(sysfs),                     "sysfs"                 },
+[BASE_NR + 137] = { 2, 0,              SEN(getpriority),               "getpriority"           },
+[BASE_NR + 138] = { 3, 0,              SEN(setpriority),               "setpriority"           },
+[BASE_NR + 139] = { 2, 0,              SEN(sched_setparam),            "sched_setparam"        },
+[BASE_NR + 140] = { 2, 0,              SEN(sched_getparam),            "sched_getparam"        },
+[BASE_NR + 141] = { 3, 0,              SEN(sched_setscheduler),        "sched_setscheduler"    },
+[BASE_NR + 142] = { 1, 0,              SEN(sched_getscheduler),        "sched_getscheduler"    },
+[BASE_NR + 143] = { 1, 0,              SEN(sched_get_priority_max),    "sched_get_priority_max"},
+[BASE_NR + 144] = { 1, 0,              SEN(sched_get_priority_min),    "sched_get_priority_min"},
+[BASE_NR + 145] = { 2, 0,              SEN(sched_rr_get_interval_time32),"sched_rr_get_interval"},
+[BASE_NR + 146] = { 2, TM,             SEN(mlock),                     "mlock"                 },
+[BASE_NR + 147] = { 2, TM,             SEN(munlock),                   "munlock"               },
+[BASE_NR + 148] = { 1, TM,             SEN(mlockall),                  "mlockall"              },
+[BASE_NR + 149] = { 0, TM,             SEN(munlockall),                "munlockall"            },
+[BASE_NR + 150] = { 0, 0,              SEN(vhangup),                   "vhangup"               },
+[BASE_NR + 151] = { 2, TF,             SEN(pivotroot),                 "pivot_root"            },
+[BASE_NR + 152] = { 1, 0,              SEN(sysctl),                    "_sysctl"               },
+[BASE_NR + 153] = { 5, TC,             SEN(prctl),                     "prctl"                 },
+[BASE_NR + 154] = { 1, TCL,            SEN(adjtimex32),                "adjtimex"              },
+[BASE_NR + 155] = { 2, 0,              SEN(setrlimit),                 "setrlimit"             },
+[BASE_NR + 156] = { 1, TF,             SEN(chroot),                    "chroot"                },
+[BASE_NR + 157] = { 0, 0,              SEN(sync),                      "sync"                  },
+[BASE_NR + 158] = { 1, TF,             SEN(acct),                      "acct"                  },
+[BASE_NR + 159] = { 2, TCL,            SEN(settimeofday),              "settimeofday"          },
+[BASE_NR + 160] = { 5, TF,             SEN(mount),                     "mount"                 },
+[BASE_NR + 161] = { 2, TF,             SEN(umount2),                   "umount2"               },
+[BASE_NR + 162] = { 2, TF,             SEN(swapon),                    "swapon"                },
+[BASE_NR + 163] = { 1, TF,             SEN(swapoff),                   "swapoff"               },
+[BASE_NR + 164] = { 4, 0,              SEN(reboot),                    "reboot"                },
+[BASE_NR + 165] = { 2, 0,              SEN(sethostname),               "sethostname"           },
+[BASE_NR + 166] = { 2, 0,              SEN(setdomainname),             "setdomainname"         },
+[BASE_NR + 167] = { 2, 0,              SEN(create_module),             "create_module"         },
+[BASE_NR + 168] = { 3, 0,              SEN(init_module),               "init_module"           },
+[BASE_NR + 169] = { 2, 0,              SEN(delete_module),             "delete_module"         },
+[BASE_NR + 170] = { 1, 0,              SEN(get_kernel_syms),           "get_kernel_syms"       },
+[BASE_NR + 171] = { 5, 0,              SEN(query_module),              "query_module"          },
+[BASE_NR + 172] = { 4, TF,             SEN(quotactl),                  "quotactl"              },
+[BASE_NR + 173] = { 3, 0,              SEN(nfsservctl),                "nfsservctl"            },
+[BASE_NR + 174] = { 5, TN,             SEN(getpmsg),                   "getpmsg"               },
+[BASE_NR + 175] = { 5, TN,             SEN(putpmsg),                   "putpmsg"               },
+[BASE_NR + 176] = { 0, 0,              SEN(afs_syscall),               "afs_syscall"           },
+[BASE_NR + 177] = { 0, 0,              SEN(printargs),                 "reserved177"           },
+[BASE_NR + 178] = { 0, PU|NF,          SEN(gettid),                    "gettid"                },
+[BASE_NR + 179] = { 3, TD,             SEN(readahead),                 "readahead"             },
+[BASE_NR + 180] = { 5, TF,             SEN(setxattr),                  "setxattr"              },
+[BASE_NR + 181] = { 5, TF,             SEN(setxattr),                  "lsetxattr"             },
+[BASE_NR + 182] = { 5, TD,             SEN(fsetxattr),                 "fsetxattr"             },
+[BASE_NR + 183] = { 4, TF,             SEN(getxattr),                  "getxattr"              },
+[BASE_NR + 184] = { 4, TF,             SEN(getxattr),                  "lgetxattr"             },
+[BASE_NR + 185] = { 4, TD,             SEN(fgetxattr),                 "fgetxattr"             },
+[BASE_NR + 186] = { 3, TF,             SEN(listxattr),                 "listxattr"             },
+[BASE_NR + 187] = { 3, TF,             SEN(listxattr),                 "llistxattr"            },
+[BASE_NR + 188] = { 3, TD,             SEN(flistxattr),                "flistxattr"            },
+[BASE_NR + 189] = { 2, TF,             SEN(removexattr),               "removexattr"           },
+[BASE_NR + 190] = { 2, TF,             SEN(removexattr),               "lremovexattr"          },
+[BASE_NR + 191] = { 2, TD,             SEN(fremovexattr),              "fremovexattr"          },
+[BASE_NR + 192] = { 2, TS|TP,          SEN(tkill),                     "tkill"                 },
+[BASE_NR + 193] = { 1, TCL,            SEN(time),                      "time"                  },
+[BASE_NR + 194] = { 6, 0,              SEN(futex_time32),              "futex"                 },
+[BASE_NR + 195] = { 3, 0,              SEN(sched_setaffinity),         "sched_setaffinity"     },
+[BASE_NR + 196] = { 3, 0,              SEN(sched_getaffinity),         "sched_getaffinity"     },
+[BASE_NR + 197] = { 3, 0,              SEN(printargs),                 "cacheflush"            },
+[BASE_NR + 198] = { 3, 0,              SEN(printargs),                 "cachectl"              },
+[BASE_NR + 199] = { 4, 0,              SEN(sysmips),                   "sysmips"               },
+[BASE_NR + 200] = { 2, TM,             SEN(io_setup),                  "io_setup"              },
+[BASE_NR + 201] = { 1, TM,             SEN(io_destroy),                "io_destroy"            },
+[BASE_NR + 202] = { 5, 0,              SEN(io_getevents_time32),       "io_getevents"          },
+[BASE_NR + 203] = { 3, 0,              SEN(io_submit),                 "io_submit"             },
+[BASE_NR + 204] = { 3, 0,              SEN(io_cancel),                 "io_cancel"             },
+[BASE_NR + 205] = { 1, TP|SE,          SEN(exit),                      "exit_group"            },
+[BASE_NR + 206] = { 3, 0,              SEN(lookup_dcookie),            "lookup_dcookie"        },
+[BASE_NR + 207] = { 1, TD,             SEN(epoll_create),              "epoll_create"          },
+[BASE_NR + 208] = { 4, TD,             SEN(epoll_ctl),                 "epoll_ctl"             },
+[BASE_NR + 209] = { 4, TD,             SEN(epoll_wait),                "epoll_wait"            },
+[BASE_NR + 210] = { 5, TM|SI,          SEN(remap_file_pages),          "remap_file_pages"      },
+[BASE_NR + 211] = { 0, TS,             SEN(rt_sigreturn),              "rt_sigreturn"          },
+[BASE_NR + 212] = { 3, TD,             SEN(fcntl64),                   "fcntl64"               },
+[BASE_NR + 213] = { 1, 0,              SEN(set_tid_address),           "set_tid_address"       },
+[BASE_NR + 214] = { 0, 0,              SEN(restart_syscall),           "restart_syscall"       },
+[BASE_NR + 215] = { 4, TI,             SEN(semtimedop_time32),         "semtimedop"            },
+[BASE_NR + 216] = { 4, TD,             SEN(fadvise64_64),              "fadvise64"             },
+[BASE_NR + 217] = { 3, TF|TSF|TSFA,    SEN(statfs64),                  "statfs64"              },
+[BASE_NR + 218] = { 3, TD|TFSF|TSFA,   SEN(fstatfs64),                 "fstatfs64"             },
+[BASE_NR + 219] = { 4, TD|TN,          SEN(sendfile64),                "sendfile64"            },
+[BASE_NR + 220] = { 3, 0,              SEN(timer_create),              "timer_create"          },
+[BASE_NR + 221] = { 4, 0,              SEN(timer_settime32),           "timer_settime"         },
+[BASE_NR + 222] = { 2, 0,              SEN(timer_gettime32),           "timer_gettime"         },
+[BASE_NR + 223] = { 1, 0,              SEN(timer_getoverrun),          "timer_getoverrun"      },
+[BASE_NR + 224] = { 1, 0,              SEN(timer_delete),              "timer_delete"          },
+[BASE_NR + 225] = { 2, TCL,            SEN(clock_settime32),           "clock_settime"         },
+[BASE_NR + 226] = { 2, TCL,            SEN(clock_gettime32),           "clock_gettime"         },
+[BASE_NR + 227] = { 2, TCL,            SEN(clock_getres_time32),       "clock_getres"          },
+[BASE_NR + 228] = { 4, 0,              SEN(clock_nanosleep_time32),    "clock_nanosleep"       },
+[BASE_NR + 229] = { 3, TS|TP,          SEN(tgkill),                    "tgkill"                },
+[BASE_NR + 230] = { 2, TF,             SEN(utimes),                    "utimes"                },
+[BASE_NR + 231] = { 6, TM,             SEN(mbind),                     "mbind"                 },
+[BASE_NR + 232] = { 5, TM,             SEN(get_mempolicy),             "get_mempolicy"         },
+[BASE_NR + 233] = { 3, TM,             SEN(set_mempolicy),             "set_mempolicy"         },
+[BASE_NR + 234] = { 4, TD,             SEN(mq_open),                   "mq_open"               },
+[BASE_NR + 235] = { 1, 0,              SEN(mq_unlink),                 "mq_unlink"             },
+[BASE_NR + 236] = { 5, TD,             SEN(mq_timedsend_time32),       "mq_timedsend"          },
+[BASE_NR + 237] = { 5, TD,             SEN(mq_timedreceive_time32),    "mq_timedreceive"       },
+[BASE_NR + 238] = { 2, TD,             SEN(mq_notify),                 "mq_notify"             },
+[BASE_NR + 239] = { 3, TD,             SEN(mq_getsetattr),             "mq_getsetattr"         },
+[BASE_NR + 240] = { 5, 0,              SEN(vserver),                   "vserver"               },
+[BASE_NR + 241] = { 5, TP,             SEN(waitid),                    "waitid"                },
+[BASE_NR + 242] = { },
+[BASE_NR + 243] = { 5, 0,              SEN(add_key),                   "add_key"               },
+[BASE_NR + 244] = { 4, 0,              SEN(request_key),               "request_key"           },
+[BASE_NR + 245] = { 5, 0,              SEN(keyctl),                    "keyctl"                },
+[BASE_NR + 246] = { 1, 0,              SEN(set_thread_area),           "set_thread_area"       },
+[BASE_NR + 247] = { 0, TD,             SEN(inotify_init),              "inotify_init"          },
+[BASE_NR + 248] = { 3, TD|TF,          SEN(inotify_add_watch),         "inotify_add_watch"     },
+[BASE_NR + 249] = { 2, TD,             SEN(inotify_rm_watch),          "inotify_rm_watch"      },
+[BASE_NR + 250] = { 4, TM,             SEN(migrate_pages),             "migrate_pages"         },
+[BASE_NR + 251] = { 4, TD|TF,          SEN(openat),                    "openat"                },
+[BASE_NR + 252] = { 3, TD|TF,          SEN(mkdirat),                   "mkdirat"               },
+[BASE_NR + 253] = { 4, TD|TF,          SEN(mknodat),                   "mknodat"               },
+[BASE_NR + 254] = { 5, TD|TF,          SEN(fchownat),                  "fchownat"              },
+[BASE_NR + 255] = { 3, TD|TF,          SEN(futimesat),                 "futimesat"             },
+[BASE_NR + 256] = { 4, TD|TF|TFST|TSTA,SEN(newfstatat),                "newfstatat"            },
+[BASE_NR + 257] = { 3, TD|TF,          SEN(unlinkat),                  "unlinkat"              },
+[BASE_NR + 258] = { 4, TD|TF,          SEN(renameat),                  "renameat"              },
+[BASE_NR + 259] = { 5, TD|TF,          SEN(linkat),                    "linkat"                },
+[BASE_NR + 260] = { 3, TD|TF,          SEN(symlinkat),                 "symlinkat"             },
+[BASE_NR + 261] = { 4, TD|TF,          SEN(readlinkat),                "readlinkat"            },
+[BASE_NR + 262] = { 3, TD|TF,          SEN(fchmodat),                  "fchmodat"              },
+[BASE_NR + 263] = { 3, TD|TF,          SEN(faccessat),                 "faccessat"             },
+[BASE_NR + 264] = { 6, TD,             SEN(pselect6_time32),           "pselect6"              },
+[BASE_NR + 265] = { 5, TD,             SEN(ppoll_time32),              "ppoll"                 },
+[BASE_NR + 266] = { 1, 0,              SEN(unshare),                   "unshare"               },
+[BASE_NR + 267] = { 6, TD,             SEN(splice),                    "splice"                },
+[BASE_NR + 268] = { 4, TD,             SEN(sync_file_range),           "sync_file_range"       },
+[BASE_NR + 269] = { 4, TD,             SEN(tee),                       "tee"                   },
+[BASE_NR + 270] = { 4, TD,             SEN(vmsplice),                  "vmsplice"              },
+[BASE_NR + 271] = { 6, TM,             SEN(move_pages),                "move_pages"            },
+[BASE_NR + 272] = { 2, 0,              SEN(set_robust_list),           "set_robust_list"       },
+[BASE_NR + 273] = { 3, 0,              SEN(get_robust_list),           "get_robust_list"       },
+[BASE_NR + 274] = { 4, 0,              SEN(kexec_load),                "kexec_load"            },
+[BASE_NR + 275] = { 3, 0,              SEN(getcpu),                    "getcpu"                },
+[BASE_NR + 276] = { 6, TD,             SEN(epoll_pwait),               "epoll_pwait"           },
+[BASE_NR + 277] = { 3, 0,              SEN(ioprio_set),                "ioprio_set"            },
+[BASE_NR + 278] = { 2, 0,              SEN(ioprio_get),                "ioprio_get"            },
+[BASE_NR + 279] = { 4, TD|TF,          SEN(utimensat_time32),          "utimensat"             },
+[BASE_NR + 280] = { 3, TD|TS,          SEN(signalfd),                  "signalfd"              },
+[BASE_NR + 281] = { 4, TD,             SEN(timerfd),                   "timerfd"               },
+[BASE_NR + 282] = { 1, TD,             SEN(eventfd),                   "eventfd"               },
+[BASE_NR + 283] = { 4, TD,             SEN(fallocate),                 "fallocate"             },
+[BASE_NR + 284] = { 2, TD,             SEN(timerfd_create),            "timerfd_create"        },
+[BASE_NR + 285] = { 2, TD,             SEN(timerfd_gettime32),         "timerfd_gettime"       },
+[BASE_NR + 286] = { 4, TD,             SEN(timerfd_settime32),         "timerfd_settime"       },
+[BASE_NR + 287] = { 4, TD|TS,          SEN(signalfd4),                 "signalfd4"             },
+[BASE_NR + 288] = { 2, TD,             SEN(eventfd2),                  "eventfd2"              },
+[BASE_NR + 289] = { 1, TD,             SEN(epoll_create1),             "epoll_create1"         },
+[BASE_NR + 290] = { 3, TD,             SEN(dup3),                      "dup3"                  },
+[BASE_NR + 291] = { 2, TD,             SEN(pipe2),                     "pipe2"                 },
+[BASE_NR + 292] = { 1, TD,             SEN(inotify_init1),             "inotify_init1"         },
+[BASE_NR + 293] = { 4, TD,             SEN(preadv),                    "preadv"                },
+[BASE_NR + 294] = { 4, TD,             SEN(pwritev),                   "pwritev"               },
+[BASE_NR + 295] = { 4, TP|TS,          SEN(rt_tgsigqueueinfo),         "rt_tgsigqueueinfo"     },
+[BASE_NR + 296] = { 5, TD,             SEN(perf_event_open),           "perf_event_open"       },
+[BASE_NR + 297] = { 4, TN,             SEN(accept4),                   "accept4"               },
+[BASE_NR + 298] = { 5, TN,             SEN(recvmmsg_time32),           "recvmmsg"              },
+[BASE_NR + 299] = { 3, TD,             SEN(getdents64),                "getdents64"            },
+[BASE_NR + 300] = { 2, TD,             SEN(fanotify_init),             "fanotify_init"         },
+[BASE_NR + 301] = { 5, TD|TF,          SEN(fanotify_mark),             "fanotify_mark"         },
+[BASE_NR + 302] = { 4, 0,              SEN(prlimit64),                 "prlimit64"             },
+[BASE_NR + 303] = { 5, TD|TF,          SEN(name_to_handle_at),         "name_to_handle_at"     },
+[BASE_NR + 304] = { 3, TD,             SEN(open_by_handle_at),         "open_by_handle_at"     },
+[BASE_NR + 305] = { 2, TCL,            SEN(clock_adjtime32),           "clock_adjtime"         },
+[BASE_NR + 306] = { 1, TD,             SEN(syncfs),                    "syncfs"                },
+[BASE_NR + 307] = { 4, TN,             SEN(sendmmsg),                  "sendmmsg"              },
+[BASE_NR + 308] = { 2, TD,             SEN(setns),                     "setns"                 },
+[BASE_NR + 309] = { 6, 0,              SEN(process_vm_readv),          "process_vm_readv"      },
+[BASE_NR + 310] = { 6, 0,              SEN(process_vm_writev),         "process_vm_writev"     },
+[BASE_NR + 311] = { 5, 0,              SEN(kcmp),                      "kcmp"                  },
+[BASE_NR + 312] = { 3, TD,             SEN(finit_module),              "finit_module"          },
+[BASE_NR + 313] = { 3, 0,              SEN(sched_setattr),             "sched_setattr"         },
+[BASE_NR + 314] = { 4, 0,              SEN(sched_getattr),             "sched_getattr"         },
+[BASE_NR + 315] = { 5, TD|TF,          SEN(renameat2),                 "renameat2"             },
+[BASE_NR + 316] = { 3, 0,              SEN(seccomp),                   "seccomp"               },
+[BASE_NR + 317] = { 3, 0,              SEN(getrandom),                 "getrandom"             },
+[BASE_NR + 318] = { 2, TD,             SEN(memfd_create),              "memfd_create"          },
+[BASE_NR + 319] = { 3, TD,             SEN(bpf),                       "bpf"                   },
+[BASE_NR + 320] = { 5, TD|TF|TP|TSD|SE|SI,     SEN(execveat),                  "execveat"              },
+[BASE_NR + 321] = { 1, TD,             SEN(userfaultfd),               "userfaultfd"           },
+[BASE_NR + 322] = { 2, 0,              SEN(membarrier),                "membarrier"            },
+[BASE_NR + 323] = { 3, TM,             SEN(mlock2),                    "mlock2"                },
+[BASE_NR + 324] = { 6, TD,             SEN(copy_file_range),           "copy_file_range"       },
+[BASE_NR + 325] = { 6, TD,             SEN(preadv2),                   "preadv2"               },
+[BASE_NR + 326] = { 6, TD,             SEN(pwritev2),                  "pwritev2"              },
+[BASE_NR + 327] = { 4, TM|SI,          SEN(pkey_mprotect),             "pkey_mprotect"         },
+[BASE_NR + 328] = { 2, 0,              SEN(pkey_alloc),                "pkey_alloc"            },
+[BASE_NR + 329] = { 1, 0,              SEN(pkey_free),                 "pkey_free"             },
+[BASE_NR + 330] = { 5, TD|TF|TFST|TSTA,SEN(statx),                     "statx"                 },
+[BASE_NR + 331] = { 4, 0,              SEN(rseq),                      "rseq"                  },
+[BASE_NR + 332] = { 6, 0,              SEN(io_pgetevents_time32),      "io_pgetevents"         },
+# include "syscallent-common-32.h"
+# include "syscallent-common.h"
 
 # define SYS_socket_subcall      6500
 # include "subcall32.h"
 
 #else
 
+# define SYSCALL_NAME_PREFIX "n32:"
 # include "syscallent-n32-stub.h"
+# include "syscallent-common-32-stub.h"
+# include "syscallent-common-stub.h"
+# undef SYSCALL_NAME_PREFIX
 
 #endif
+#undef BASE_NR
index 15db301eecd580700b9f216230eb18e49a2046a2..6a71a27b264c31eec43412f860206a8f73fd93b4 100644 (file)
 /*
- * Copyright (c) 2013-2019 The strace developers.
+ * Copyright (c) 2013-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
  */
 
+#define BASE_NR 5000
 #if defined LINUX_MIPSN64
 /* For an N64 strace decode the N64 64-bit syscalls. */
-[5000] = { 3,  TD,             SEN(read),                      "read"                  }, /* start of Linux N64 */
-[5001] = { 3,  TD,             SEN(write),                     "write"                 },
-[5002] = { 3,  TD|TF,          SEN(open),                      "open"                  },
-[5003] = { 1,  TD,             SEN(close),                     "close"                 },
-[5004] = { 2,  TF|TST|TSTA,    SEN(stat),                      "stat"                  },
-[5005] = { 2,  TD|TFST|TSTA,   SEN(fstat),                     "fstat"                 },
-[5006] = { 2,  TF|TLST|TSTA,   SEN(lstat),                     "lstat"                 },
-[5007] = { 3,  TD,             SEN(poll_time64),               "poll"                  },
-[5008] = { 3,  TD,             SEN(lseek),                     "lseek"                 },
-[5009] = { 6,  TD|TM|SI,       SEN(mmap),                      "mmap"                  },
-[5010] = { 3,  TM|SI,          SEN(mprotect),                  "mprotect"              },
-[5011] = { 2,  TM|SI,          SEN(munmap),                    "munmap"                },
-[5012] = { 1,  TM|SI,          SEN(brk),                       "brk"                   },
-[5013] = { 4,  TS,             SEN(rt_sigaction),              "rt_sigaction"          },
-[5014] = { 4,  TS,             SEN(rt_sigprocmask),            "rt_sigprocmask"        },
-[5015] = { 3,  TD,             SEN(ioctl),                     "ioctl"                 },
-[5016] = { 4,  TD,             SEN(pread),                     "pread64"               },
-[5017] = { 4,  TD,             SEN(pwrite),                    "pwrite64"              },
-[5018] = { 3,  TD,             SEN(readv),                     "readv"                 },
-[5019] = { 3,  TD,             SEN(writev),                    "writev"                },
-[5020] = { 2,  TF,             SEN(access),                    "access"                },
-[5021] = { 0,  TD,             SEN(pipe),                      "pipe"                  },
-[5022] = { 5,  TD,             SEN(select),                    "_newselect"            },
-[5023] = { 0,  0,              SEN(sched_yield),               "sched_yield"           },
-[5024] = { 5,  TM|SI,          SEN(mremap),                    "mremap"                },
-[5025] = { 3,  TM,             SEN(msync),                     "msync"                 },
-[5026] = { 3,  TM,             SEN(mincore),                   "mincore"               },
-[5027] = { 3,  TM,             SEN(madvise),                   "madvise"               },
-[5028] = { 3,  TI,             SEN(shmget),                    "shmget"                },
-[5029] = { 3,  TI|TM|SI,       SEN(shmat),                     "shmat"                 },
-[5030] = { 3,  TI,             SEN(shmctl),                    "shmctl"                },
-[5031] = { 1,  TD,             SEN(dup),                       "dup"                   },
-[5032] = { 2,  TD,             SEN(dup2),                      "dup2"                  },
-[5033] = { 0,  TS,             SEN(pause),                     "pause"                 },
-[5034] = { 2,  0,              SEN(nanosleep_time64),          "nanosleep"             },
-[5035] = { 2,  0,              SEN(getitimer),                 "getitimer"             },
-[5036] = { 3,  0,              SEN(setitimer),                 "setitimer"             },
-[5037] = { 1,  0,              SEN(alarm),                     "alarm"                 },
-[5038] = { 0,  PU|NF,          SEN(getpid),                    "getpid"                },
-[5039] = { 4,  TD|TN,          SEN(sendfile),                  "sendfile"              },
-[5040] = { 3,  TN,             SEN(socket),                    "socket"                },
-[5041] = { 3,  TN,             SEN(connect),                   "connect"               },
-[5042] = { 3,  TN,             SEN(accept),                    "accept"                },
-[5043] = { 6,  TN,             SEN(sendto),                    "sendto"                },
-[5044] = { 6,  TN,             SEN(recvfrom),                  "recvfrom"              },
-[5045] = { 3,  TN,             SEN(sendmsg),                   "sendmsg"               },
-[5046] = { 3,  TN,             SEN(recvmsg),                   "recvmsg"               },
-[5047] = { 2,  TN,             SEN(shutdown),                  "shutdown"              },
-[5048] = { 3,  TN,             SEN(bind),                      "bind"                  },
-[5049] = { 2,  TN,             SEN(listen),                    "listen"                },
-[5050] = { 3,  TN,             SEN(getsockname),               "getsockname"           },
-[5051] = { 3,  TN,             SEN(getpeername),               "getpeername"           },
-[5052] = { 4,  TN,             SEN(socketpair),                "socketpair"            },
-[5053] = { 5,  TN,             SEN(setsockopt),                "setsockopt"            },
-[5054] = { 5,  TN,             SEN(getsockopt),                "getsockopt"            },
-[5055] = { 5,  TP,             SEN(clone),                     "clone"                 },
-[5056] = { 0,  TP,             SEN(fork),                      "fork"                  },
-[5057] = { 3,  TF|TP|SE|SI,    SEN(execve),                    "execve"                },
-[5058] = { 1,  TP|SE,          SEN(exit),                      "exit"                  },
-[5059] = { 4,  TP,             SEN(wait4),                     "wait4"                 },
-[5060] = { 2,  TS,             SEN(kill),                      "kill"                  },
-[5061] = { 1,  0,              SEN(uname),                     "uname"                 },
-[5062] = { 3,  TI,             SEN(semget),                    "semget"                },
-[5063] = { 3,  TI,             SEN(semop),                     "semop"                 },
-[5064] = { 4,  TI,             SEN(semctl),                    "semctl"                },
-[5065] = { 1,  TI|TM|SI,       SEN(shmdt),                     "shmdt"                 },
-[5066] = { 2,  TI,             SEN(msgget),                    "msgget"                },
-[5067] = { 4,  TI,             SEN(msgsnd),                    "msgsnd"                },
-[5068] = { 5,  TI,             SEN(msgrcv),                    "msgrcv"                },
-[5069] = { 3,  TI,             SEN(msgctl),                    "msgctl"                },
-[5070] = { 3,  TD,             SEN(fcntl),                     "fcntl"                 },
-[5071] = { 2,  TD,             SEN(flock),                     "flock"                 },
-[5072] = { 1,  TD,             SEN(fsync),                     "fsync"                 },
-[5073] = { 1,  TD,             SEN(fdatasync),                 "fdatasync"             },
-[5074] = { 2,  TF,             SEN(truncate),                  "truncate"              },
-[5075] = { 2,  TD,             SEN(ftruncate),                 "ftruncate"             },
-[5076] = { 3,  TD,             SEN(getdents),                  "getdents"              },
-[5077] = { 2,  TF,             SEN(getcwd),                    "getcwd"                },
-[5078] = { 1,  TF,             SEN(chdir),                     "chdir"                 },
-[5079] = { 1,  TD,             SEN(fchdir),                    "fchdir"                },
-[5080] = { 2,  TF,             SEN(rename),                    "rename"                },
-[5081] = { 2,  TF,             SEN(mkdir),                     "mkdir"                 },
-[5082] = { 1,  TF,             SEN(rmdir),                     "rmdir"                 },
-[5083] = { 2,  TD|TF,          SEN(creat),                     "creat"                 },
-[5084] = { 2,  TF,             SEN(link),                      "link"                  },
-[5085] = { 1,  TF,             SEN(unlink),                    "unlink"                },
-[5086] = { 2,  TF,             SEN(symlink),                   "symlink"               },
-[5087] = { 3,  TF,             SEN(readlink),                  "readlink"              },
-[5088] = { 2,  TF,             SEN(chmod),                     "chmod"                 },
-[5089] = { 2,  TD,             SEN(fchmod),                    "fchmod"                },
-[5090] = { 3,  TF,             SEN(chown),                     "chown"                 },
-[5091] = { 3,  TD,             SEN(fchown),                    "fchown"                },
-[5092] = { 3,  TF,             SEN(chown),                     "lchown"                },
-[5093] = { 1,  NF,             SEN(umask),                     "umask"                 },
-[5094] = { 2,  0,              SEN(gettimeofday),              "gettimeofday"          },
-[5095] = { 2,  0,              SEN(getrlimit),                 "getrlimit"             },
-[5096] = { 2,  0,              SEN(getrusage),                 "getrusage"             },
-[5097] = { 1,  0,              SEN(sysinfo),                   "sysinfo"               },
-[5098] = { 1,  0,              SEN(times),                     "times"                 },
-[5099] = { 4,  0,              SEN(ptrace),                    "ptrace"                },
-[5100] = { 0,  PU|NF,          SEN(getuid),                    "getuid"                },
-[5101] = { 3,  0,              SEN(syslog),                    "syslog"                },
-[5102] = { 0,  PU|NF,          SEN(getgid),                    "getgid"                },
-[5103] = { 1,  0,              SEN(setuid),                    "setuid"                },
-[5104] = { 1,  0,              SEN(setgid),                    "setgid"                },
-[5105] = { 0,  PU|NF,          SEN(geteuid),                   "geteuid"               },
-[5106] = { 0,  PU|NF,          SEN(getegid),                   "getegid"               },
-[5107] = { 2,  0,              SEN(setpgid),                   "setpgid"               },
-[5108] = { 0,  PU|NF,          SEN(getppid),                   "getppid"               },
-[5109] = { 0,  PU|NF,          SEN(getpgrp),                   "getpgrp"               },
-[5110] = { 0,  0,              SEN(setsid),                    "setsid"                },
-[5111] = { 2,  0,              SEN(setreuid),                  "setreuid"              },
-[5112] = { 2,  0,              SEN(setregid),                  "setregid"              },
-[5113] = { 2,  0,              SEN(getgroups),                 "getgroups"             },
-[5114] = { 2,  0,              SEN(setgroups),                 "setgroups"             },
-[5115] = { 3,  0,              SEN(setresuid),                 "setresuid"             },
-[5116] = { 3,  0,              SEN(getresuid),                 "getresuid"             },
-[5117] = { 3,  0,              SEN(setresgid),                 "setresgid"             },
-[5118] = { 3,  0,              SEN(getresgid),                 "getresgid"             },
-[5119] = { 1,  0,              SEN(getpgid),                   "getpgid"               },
-[5120] = { 1,  NF,             SEN(setfsuid),                  "setfsuid"              },
-[5121] = { 1,  NF,             SEN(setfsgid),                  "setfsgid"              },
-[5122] = { 1,  0,              SEN(getsid),                    "getsid"                },
-[5123] = { 2,  0,              SEN(capget),                    "capget"                },
-[5124] = { 2,  0,              SEN(capset),                    "capset"                },
-[5125] = { 2,  TS,             SEN(rt_sigpending),             "rt_sigpending"         },
-[5126] = { 4,  TS,             SEN(rt_sigtimedwait_time64),    "rt_sigtimedwait"       },
-[5127] = { 3,  TS,             SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
-[5128] = { 2,  TS,             SEN(rt_sigsuspend),             "rt_sigsuspend"         },
-[5129] = { 2,  TS,             SEN(sigaltstack),               "sigaltstack"           },
-[5130] = { 2,  TF,             SEN(utime),                     "utime"                 },
-[5131] = { 3,  TF,             SEN(mknod),                     "mknod"                 },
-[5132] = { 1,  NF,             SEN(personality),               "personality"           },
-[5133] = { 2,  TSFA,           SEN(ustat),                     "ustat"                 },
-[5134] = { 2,  TF|TSF|TSFA,    SEN(statfs),                    "statfs"                },
-[5135] = { 2,  TD|TFSF|TSFA,   SEN(fstatfs),                   "fstatfs"               },
-[5136] = { 3,  0,              SEN(sysfs),                     "sysfs"                 },
-[5137] = { 2,  0,              SEN(getpriority),               "getpriority"           },
-[5138] = { 3,  0,              SEN(setpriority),               "setpriority"           },
-[5139] = { 2,  0,              SEN(sched_setparam),            "sched_setparam"        },
-[5140] = { 2,  0,              SEN(sched_getparam),            "sched_getparam"        },
-[5141] = { 3,  0,              SEN(sched_setscheduler),        "sched_setscheduler"    },
-[5142] = { 1,  0,              SEN(sched_getscheduler),        "sched_getscheduler"    },
-[5143] = { 1,  0,              SEN(sched_get_priority_max),    "sched_get_priority_max"},
-[5144] = { 1,  0,              SEN(sched_get_priority_min),    "sched_get_priority_min"},
-[5145] = { 2,  0,              SEN(sched_rr_get_interval_time64),"sched_rr_get_interval"},
-[5146] = { 2,  TM,             SEN(mlock),                     "mlock"                 },
-[5147] = { 2,  TM,             SEN(munlock),                   "munlock"               },
-[5148] = { 1,  TM,             SEN(mlockall),                  "mlockall"              },
-[5149] = { 0,  TM,             SEN(munlockall),                "munlockall"            },
-[5150] = { 0,  0,              SEN(vhangup),                   "vhangup"               },
-[5151] = { 2,  TF,             SEN(pivotroot),                 "pivot_root"            },
-[5152] = { 1,  0,              SEN(sysctl),                    "_sysctl"               },
-[5153] = { 5,  0,              SEN(prctl),                     "prctl"                 },
-[5154] = { 1,  0,              SEN(adjtimex64),                "adjtimex"              },
-[5155] = { 2,  0,              SEN(setrlimit),                 "setrlimit"             },
-[5156] = { 1,  TF,             SEN(chroot),                    "chroot"                },
-[5157] = { 0,  0,              SEN(sync),                      "sync"                  },
-[5158] = { 1,  TF,             SEN(acct),                      "acct"                  },
-[5159] = { 2,  0,              SEN(settimeofday),              "settimeofday"          },
-[5160] = { 5,  TF,             SEN(mount),                     "mount"                 },
-[5161] = { 2,  TF,             SEN(umount2),                   "umount2"               },
-[5162] = { 2,  TF,             SEN(swapon),                    "swapon"                },
-[5163] = { 1,  TF,             SEN(swapoff),                   "swapoff"               },
-[5164] = { 4,  0,              SEN(reboot),                    "reboot"                },
-[5165] = { 2,  0,              SEN(sethostname),               "sethostname"           },
-[5166] = { 2,  0,              SEN(setdomainname),             "setdomainname"         },
-[5167] = { 2,  0,              SEN(create_module),             "create_module"         },
-[5168] = { 3,  0,              SEN(init_module),               "init_module"           },
-[5169] = { 2,  0,              SEN(delete_module),             "delete_module"         },
-[5170] = { 1,  0,              SEN(get_kernel_syms),           "get_kernel_syms"       },
-[5171] = { 5,  0,              SEN(query_module),              "query_module"          },
-[5172] = { 4,  TF,             SEN(quotactl),                  "quotactl"              },
-[5173] = { 3,  0,              SEN(nfsservctl),                "nfsservctl"            },
-[5174] = { 5,  TN,             SEN(getpmsg),                   "getpmsg"               },
-[5175] = { 5,  TN,             SEN(putpmsg),                   "putpmsg"               },
-[5176] = { 0,  0,              SEN(afs_syscall),               "afs_syscall"           },
-[5177] = { 0,  0,              SEN(printargs),                 "reserved177"           },
-[5178] = { 0,  PU|NF,          SEN(gettid),                    "gettid"                },
-[5179] = { 3,  TD,             SEN(readahead),                 "readahead"             },
-[5180] = { 5,  TF,             SEN(setxattr),                  "setxattr"              },
-[5181] = { 5,  TF,             SEN(setxattr),                  "lsetxattr"             },
-[5182] = { 5,  TD,             SEN(fsetxattr),                 "fsetxattr"             },
-[5183] = { 4,  TF,             SEN(getxattr),                  "getxattr"              },
-[5184] = { 4,  TF,             SEN(getxattr),                  "lgetxattr"             },
-[5185] = { 4,  TD,             SEN(fgetxattr),                 "fgetxattr"             },
-[5186] = { 3,  TF,             SEN(listxattr),                 "listxattr"             },
-[5187] = { 3,  TF,             SEN(listxattr),                 "llistxattr"            },
-[5188] = { 3,  TD,             SEN(flistxattr),                "flistxattr"            },
-[5189] = { 2,  TF,             SEN(removexattr),               "removexattr"           },
-[5190] = { 2,  TF,             SEN(removexattr),               "lremovexattr"          },
-[5191] = { 2,  TD,             SEN(fremovexattr),              "fremovexattr"          },
-[5192] = { 2,  TS,             SEN(kill),                      "tkill"                 },
-[5193] = { 1,  0,              SEN(time),                      "time"                  },
-[5194] = { 6,  0,              SEN(futex_time64),              "futex"                 },
-[5195] = { 3,  0,              SEN(sched_setaffinity),         "sched_setaffinity"     },
-[5196] = { 3,  0,              SEN(sched_getaffinity),         "sched_getaffinity"     },
-[5197] = { 3,  0,              SEN(printargs),                 "cacheflush"            },
-[5198] = { 3,  0,              SEN(printargs),                 "cachectl"              },
-[5199] = { 4,  0,              SEN(sysmips),                   "sysmips"               },
-[5200] = { 2,  TM,             SEN(io_setup),                  "io_setup"              },
-[5201] = { 1,  TM,             SEN(io_destroy),                "io_destroy"            },
-[5202] = { 5,  0,              SEN(io_getevents_time64),       "io_getevents"          },
-[5203] = { 3,  0,              SEN(io_submit),                 "io_submit"             },
-[5204] = { 3,  0,              SEN(io_cancel),                 "io_cancel"             },
-[5205] = { 1,  TP|SE,          SEN(exit),                      "exit_group"            },
-[5206] = { 3,  0,              SEN(lookup_dcookie),            "lookup_dcookie"        },
-[5207] = { 1,  TD,             SEN(epoll_create),              "epoll_create"          },
-[5208] = { 4,  TD,             SEN(epoll_ctl),                 "epoll_ctl"             },
-[5209] = { 4,  TD,             SEN(epoll_wait),                "epoll_wait"            },
-[5210] = { 5,  TM|SI,          SEN(remap_file_pages),          "remap_file_pages"      },
-[5211] = { 0,  TS,             SEN(rt_sigreturn),              "rt_sigreturn"          },
-[5212] = { 1,  0,              SEN(set_tid_address),           "set_tid_address"       },
-[5213] = { 0,  0,              SEN(restart_syscall),           "restart_syscall"       },
-[5214] = { 4,  TI,             SEN(semtimedop_time64),         "semtimedop"            },
-[5215] = { 4,  TD,             SEN(fadvise64),                 "fadvise64"             },
-[5216] = { 3,  0,              SEN(timer_create),              "timer_create"          },
-[5217] = { 4,  0,              SEN(timer_settime64),           "timer_settime"         },
-[5218] = { 2,  0,              SEN(timer_gettime64),           "timer_gettime"         },
-[5219] = { 1,  0,              SEN(timer_getoverrun),          "timer_getoverrun"      },
-[5220] = { 1,  0,              SEN(timer_delete),              "timer_delete"          },
-[5221] = { 2,  0,              SEN(clock_settime64),           "clock_settime"         },
-[5222] = { 2,  0,              SEN(clock_gettime64),           "clock_gettime"         },
-[5223] = { 2,  0,              SEN(clock_getres_time64),       "clock_getres"          },
-[5224] = { 4,  0,              SEN(clock_nanosleep_time64),    "clock_nanosleep"       },
-[5225] = { 3,  TS,             SEN(tgkill),                    "tgkill"                },
-[5226] = { 2,  TF,             SEN(utimes),                    "utimes"                },
-[5227] = { 6,  TM,             SEN(mbind),                     "mbind"                 },
-[5228] = { 5,  TM,             SEN(get_mempolicy),             "get_mempolicy"         },
-[5229] = { 3,  TM,             SEN(set_mempolicy),             "set_mempolicy"         },
-[5230] = { 4,  TD,             SEN(mq_open),                   "mq_open"               },
-[5231] = { 1,  0,              SEN(mq_unlink),                 "mq_unlink"             },
-[5232] = { 5,  TD,             SEN(mq_timedsend_time64),       "mq_timedsend"          },
-[5233] = { 5,  TD,             SEN(mq_timedreceive_time64),    "mq_timedreceive"       },
-[5234] = { 2,  TD,             SEN(mq_notify),                 "mq_notify"             },
-[5235] = { 3,  TD,             SEN(mq_getsetattr),             "mq_getsetattr"         },
-[5236] = { 5,  0,              SEN(vserver),                   "vserver"               },
-[5237] = { 5,  TP,             SEN(waitid),                    "waitid"                },
-[5238] = { },
-[5239] = { 5,  0,              SEN(add_key),                   "add_key"               },
-[5240] = { 4,  0,              SEN(request_key),               "request_key"           },
-[5241] = { 5,  0,              SEN(keyctl),                    "keyctl"                },
-[5242] = { 1,  0,              SEN(set_thread_area),           "set_thread_area"       },
-[5243] = { 0,  TD,             SEN(inotify_init),              "inotify_init"          },
-[5244] = { 3,  TD|TF,          SEN(inotify_add_watch),         "inotify_add_watch"     },
-[5245] = { 2,  TD,             SEN(inotify_rm_watch),          "inotify_rm_watch"      },
-[5246] = { 4,  TM,             SEN(migrate_pages),             "migrate_pages"         },
-[5247] = { 4,  TD|TF,          SEN(openat),                    "openat"                },
-[5248] = { 3,  TD|TF,          SEN(mkdirat),                   "mkdirat"               },
-[5249] = { 4,  TD|TF,          SEN(mknodat),                   "mknodat"               },
-[5250] = { 5,  TD|TF,          SEN(fchownat),                  "fchownat"              },
-[5251] = { 3,  TD|TF,          SEN(futimesat),                 "futimesat"             },
-[5252] = { 4,  TD|TF|TFST|TSTA,SEN(newfstatat),                "newfstatat"            },
-[5253] = { 3,  TD|TF,          SEN(unlinkat),                  "unlinkat"              },
-[5254] = { 4,  TD|TF,          SEN(renameat),                  "renameat"              },
-[5255] = { 5,  TD|TF,          SEN(linkat),                    "linkat"                },
-[5256] = { 3,  TD|TF,          SEN(symlinkat),                 "symlinkat"             },
-[5257] = { 4,  TD|TF,          SEN(readlinkat),                "readlinkat"            },
-[5258] = { 3,  TD|TF,          SEN(fchmodat),                  "fchmodat"              },
-[5259] = { 3,  TD|TF,          SEN(faccessat),                 "faccessat"             },
-[5260] = { 6,  TD,             SEN(pselect6_time64),           "pselect6"              },
-[5261] = { 5,  TD,             SEN(ppoll_time64),              "ppoll"                 },
-[5262] = { 1,  TP,             SEN(unshare),                   "unshare"               },
-[5263] = { 6,  TD,             SEN(splice),                    "splice"                },
-[5264] = { 4,  TD,             SEN(sync_file_range),           "sync_file_range"       },
-[5265] = { 4,  TD,             SEN(tee),                       "tee"                   },
-[5266] = { 4,  TD,             SEN(vmsplice),                  "vmsplice"              },
-[5267] = { 6,  TM,             SEN(move_pages),                "move_pages"            },
-[5268] = { 2,  0,              SEN(set_robust_list),           "set_robust_list"       },
-[5269] = { 3,  0,              SEN(get_robust_list),           "get_robust_list"       },
-[5270] = { 4,  0,              SEN(kexec_load),                "kexec_load"            },
-[5271] = { 3,  0,              SEN(getcpu),                    "getcpu"                },
-[5272] = { 6,  TD,             SEN(epoll_pwait),               "epoll_pwait"           },
-[5273] = { 3,  0,              SEN(ioprio_set),                "ioprio_set"            },
-[5274] = { 2,  0,              SEN(ioprio_get),                "ioprio_get"            },
-[5275] = { 4,  TD|TF,          SEN(utimensat_time64),          "utimensat"             },
-[5276] = { 3,  TD|TS,          SEN(signalfd),                  "signalfd"              },
-[5277] = { 4,  TD,             SEN(timerfd),                   "timerfd"               },
-[5278] = { 1,  TD,             SEN(eventfd),                   "eventfd"               },
-[5279] = { 4,  TD,             SEN(fallocate),                 "fallocate"             },
-[5280] = { 2,  TD,             SEN(timerfd_create),            "timerfd_create"        },
-[5281] = { 2,  TD,             SEN(timerfd_gettime64),         "timerfd_gettime"       },
-[5282] = { 4,  TD,             SEN(timerfd_settime64),         "timerfd_settime"       },
-[5283] = { 4,  TD|TS,          SEN(signalfd4),                 "signalfd4"             },
-[5284] = { 2,  TD,             SEN(eventfd2),                  "eventfd2"              },
-[5285] = { 1,  TD,             SEN(epoll_create1),             "epoll_create1"         },
-[5286] = { 3,  TD,             SEN(dup3),                      "dup3"                  },
-[5287] = { 2,  TD,             SEN(pipe2),                     "pipe2"                 },
-[5288] = { 1,  TD,             SEN(inotify_init1),             "inotify_init1"         },
-[5289] = { 4,  TD,             SEN(preadv),                    "preadv"                },
-[5290] = { 4,  TD,             SEN(pwritev),                   "pwritev"               },
-[5291] = { 4,  TP|TS,          SEN(rt_tgsigqueueinfo),         "rt_tgsigqueueinfo"     },
-[5292] = { 5,  TD,             SEN(perf_event_open),           "perf_event_open"       },
-[5293] = { 4,  TN,             SEN(accept4),                   "accept4"               },
-[5294] = { 5,  TN,             SEN(recvmmsg_time64),           "recvmmsg"              },
-[5295] = { 2,  TD,             SEN(fanotify_init),             "fanotify_init"         },
-[5296] = { 5,  TD|TF,          SEN(fanotify_mark),             "fanotify_mark"         },
-[5297] = { 4,  0,              SEN(prlimit64),                 "prlimit64"             },
-[5298] = { 5,  TD|TF,          SEN(name_to_handle_at),         "name_to_handle_at"     },
-[5299] = { 3,  TD,             SEN(open_by_handle_at),         "open_by_handle_at"     },
-[5300] = { 2,  0,              SEN(clock_adjtime64),           "clock_adjtime"         },
-[5301] = { 1,  TD,             SEN(syncfs),                    "syncfs"                },
-[5302] = { 4,  TN,             SEN(sendmmsg),                  "sendmmsg"              },
-[5303] = { 2,  TD,             SEN(setns),                     "setns"                 },
-[5304] = { 6,  0,              SEN(process_vm_readv),          "process_vm_readv"      },
-[5305] = { 6,  0,              SEN(process_vm_writev),         "process_vm_writev"     },
-[5306] = { 5,  0,              SEN(kcmp),                      "kcmp"                  },
-[5307] = { 3,  TD,             SEN(finit_module),              "finit_module"          },
-[5308] = { 3,  TD,             SEN(getdents64),                "getdents64"            },
-[5309] = { 3,  0,              SEN(sched_setattr),             "sched_setattr"         },
-[5310] = { 4,  0,              SEN(sched_getattr),             "sched_getattr"         },
-[5311] = { 5,  TD|TF,          SEN(renameat2),                 "renameat2"             },
-[5312] = { 3,  0,              SEN(seccomp),                   "seccomp"               },
-[5313] = { 3,  0,              SEN(getrandom),                 "getrandom"             },
-[5314] = { 2,  TD,             SEN(memfd_create),              "memfd_create"          },
-[5315] = { 3,  TD,             SEN(bpf),                       "bpf"                   },
-[5316] = { 5,  TD|TF|TP|SE|SI, SEN(execveat),                  "execveat"              },
-[5317] = { 1,  TD,             SEN(userfaultfd),               "userfaultfd"           },
-[5318] = { 2,  0,              SEN(membarrier),                "membarrier"            },
-[5319] = { 3,  TM,             SEN(mlock2),                    "mlock2"                },
-[5320] = { 6,  TD,             SEN(copy_file_range),           "copy_file_range"       },
-[5321] = { 6,  TD,             SEN(preadv2),                   "preadv2"               },
-[5322] = { 6,  TD,             SEN(pwritev2),                  "pwritev2"              },
-[5323] = { 4,  TM|SI,          SEN(pkey_mprotect),             "pkey_mprotect"         },
-[5324] = { 2,  0,              SEN(pkey_alloc),                "pkey_alloc"            },
-[5325] = { 1,  0,              SEN(pkey_free),                 "pkey_free"             },
-[5326] = { 5,  TD|TF|TSTA,     SEN(statx),                     "statx"                 },
-[5327] = { 4,  0,              SEN(rseq),                      "rseq"                  },
-[5328] = { 6,  0,              SEN(io_pgetevents_time64),      "io_pgetevents"         },
-/* [5329 ... 5423] - reserved to sync up with other architectures */
-[5424] = { 4,  TD|TS,          SEN(pidfd_send_signal),         "pidfd_send_signal"     },
-[5425] = { 2,  TD,             SEN(io_uring_setup),            "io_uring_setup"        },
-[5426] = { 6,  TD|TS,          SEN(io_uring_enter),            "io_uring_enter"        },
-[5427] = { 4,  TD|TM,          SEN(io_uring_register),         "io_uring_register"     },
+[BASE_NR +   0] = { 3, TD,             SEN(read),                      "read"                  }, /* start of Linux N64 */
+[BASE_NR +   1] = { 3, TD,             SEN(write),                     "write"                 },
+[BASE_NR +   2] = { 3, TD|TF,          SEN(open),                      "open"                  },
+[BASE_NR +   3] = { 1, TD,             SEN(close),                     "close"                 },
+[BASE_NR +   4] = { 2, TF|TST|TSTA,    SEN(stat),                      "stat"                  },
+[BASE_NR +   5] = { 2, TD|TFST|TSTA,   SEN(fstat),                     "fstat"                 },
+[BASE_NR +   6] = { 2, TF|TLST|TSTA,   SEN(lstat),                     "lstat"                 },
+[BASE_NR +   7] = { 3, TD,             SEN(poll_time64),               "poll"                  },
+[BASE_NR +   8] = { 3, TD,             SEN(lseek),                     "lseek"                 },
+[BASE_NR +   9] = { 6, TD|TM|SI,       SEN(mmap),                      "mmap"                  },
+[BASE_NR +  10] = { 3, TM|SI,          SEN(mprotect),                  "mprotect"              },
+[BASE_NR +  11] = { 2, TM|SI,          SEN(munmap),                    "munmap"                },
+[BASE_NR +  12] = { 1, TM|SI,          SEN(brk),                       "brk"                   },
+[BASE_NR +  13] = { 4, TS,             SEN(rt_sigaction),              "rt_sigaction"          },
+[BASE_NR +  14] = { 4, TS,             SEN(rt_sigprocmask),            "rt_sigprocmask"        },
+[BASE_NR +  15] = { 3, TD,             SEN(ioctl),                     "ioctl"                 },
+[BASE_NR +  16] = { 4, TD,             SEN(pread),                     "pread64"               },
+[BASE_NR +  17] = { 4, TD,             SEN(pwrite),                    "pwrite64"              },
+[BASE_NR +  18] = { 3, TD,             SEN(readv),                     "readv"                 },
+[BASE_NR +  19] = { 3, TD,             SEN(writev),                    "writev"                },
+[BASE_NR +  20] = { 2, TF,             SEN(access),                    "access"                },
+[BASE_NR +  21] = { 0, TD,             SEN(pipe),                      "pipe"                  },
+[BASE_NR +  22] = { 5, TD,             SEN(select),                    "_newselect"            },
+[BASE_NR +  23] = { 0, 0,              SEN(sched_yield),               "sched_yield"           },
+[BASE_NR +  24] = { 5, TM|SI,          SEN(mremap),                    "mremap"                },
+[BASE_NR +  25] = { 3, TM,             SEN(msync),                     "msync"                 },
+[BASE_NR +  26] = { 3, TM,             SEN(mincore),                   "mincore"               },
+[BASE_NR +  27] = { 3, TM,             SEN(madvise),                   "madvise"               },
+[BASE_NR +  28] = { 3, TI,             SEN(shmget),                    "shmget"                },
+[BASE_NR +  29] = { 3, TI|TM|SI,       SEN(shmat),                     "shmat"                 },
+[BASE_NR +  30] = { 3, TI,             SEN(shmctl),                    "shmctl"                },
+[BASE_NR +  31] = { 1, TD,             SEN(dup),                       "dup"                   },
+[BASE_NR +  32] = { 2, TD,             SEN(dup2),                      "dup2"                  },
+[BASE_NR +  33] = { 0, TS,             SEN(pause),                     "pause"                 },
+[BASE_NR +  34] = { 2, 0,              SEN(nanosleep_time64),          "nanosleep"             },
+[BASE_NR +  35] = { 2, 0,              SEN(getitimer),                 "getitimer"             },
+[BASE_NR +  36] = { 3, 0,              SEN(setitimer),                 "setitimer"             },
+[BASE_NR +  37] = { 1, 0,              SEN(alarm),                     "alarm"                 },
+[BASE_NR +  38] = { 0, PU|NF,          SEN(getpid),                    "getpid"                },
+[BASE_NR +  39] = { 4, TD|TN,          SEN(sendfile),                  "sendfile"              },
+[BASE_NR +  40] = { 3, TN,             SEN(socket),                    "socket"                },
+[BASE_NR +  41] = { 3, TN,             SEN(connect),                   "connect"               },
+[BASE_NR +  42] = { 3, TN,             SEN(accept),                    "accept"                },
+[BASE_NR +  43] = { 6, TN,             SEN(sendto),                    "sendto"                },
+[BASE_NR +  44] = { 6, TN,             SEN(recvfrom),                  "recvfrom"              },
+[BASE_NR +  45] = { 3, TN,             SEN(sendmsg),                   "sendmsg"               },
+[BASE_NR +  46] = { 3, TN,             SEN(recvmsg),                   "recvmsg"               },
+[BASE_NR +  47] = { 2, TN,             SEN(shutdown),                  "shutdown"              },
+[BASE_NR +  48] = { 3, TN,             SEN(bind),                      "bind"                  },
+[BASE_NR +  49] = { 2, TN,             SEN(listen),                    "listen"                },
+[BASE_NR +  50] = { 3, TN,             SEN(getsockname),               "getsockname"           },
+[BASE_NR +  51] = { 3, TN,             SEN(getpeername),               "getpeername"           },
+[BASE_NR +  52] = { 4, TN,             SEN(socketpair),                "socketpair"            },
+[BASE_NR +  53] = { 5, TN,             SEN(setsockopt),                "setsockopt"            },
+[BASE_NR +  54] = { 5, TN,             SEN(getsockopt),                "getsockopt"            },
+[BASE_NR +  55] = { 5, TP,             SEN(clone),                     "clone"                 },
+[BASE_NR +  56] = { 0, TP,             SEN(fork),                      "fork"                  },
+[BASE_NR +  57] = { 3, TF|TP|TSD|SE|SI,        SEN(execve),                    "execve"                },
+[BASE_NR +  58] = { 1, TP|SE,          SEN(exit),                      "exit"                  },
+[BASE_NR +  59] = { 4, TP,             SEN(wait4),                     "wait4"                 },
+[BASE_NR +  60] = { 2, TS|TP,          SEN(kill),                      "kill"                  },
+[BASE_NR +  61] = { 1, 0,              SEN(uname),                     "uname"                 },
+[BASE_NR +  62] = { 3, TI,             SEN(semget),                    "semget"                },
+[BASE_NR +  63] = { 3, TI,             SEN(semop),                     "semop"                 },
+[BASE_NR +  64] = { 4, TI,             SEN(semctl),                    "semctl"                },
+[BASE_NR +  65] = { 1, TI|TM|SI,       SEN(shmdt),                     "shmdt"                 },
+[BASE_NR +  66] = { 2, TI,             SEN(msgget),                    "msgget"                },
+[BASE_NR +  67] = { 4, TI,             SEN(msgsnd),                    "msgsnd"                },
+[BASE_NR +  68] = { 5, TI,             SEN(msgrcv),                    "msgrcv"                },
+[BASE_NR +  69] = { 3, TI,             SEN(msgctl),                    "msgctl"                },
+[BASE_NR +  70] = { 3, TD,             SEN(fcntl),                     "fcntl"                 },
+[BASE_NR +  71] = { 2, TD,             SEN(flock),                     "flock"                 },
+[BASE_NR +  72] = { 1, TD,             SEN(fsync),                     "fsync"                 },
+[BASE_NR +  73] = { 1, TD,             SEN(fdatasync),                 "fdatasync"             },
+[BASE_NR +  74] = { 2, TF,             SEN(truncate),                  "truncate"              },
+[BASE_NR +  75] = { 2, TD,             SEN(ftruncate),                 "ftruncate"             },
+[BASE_NR +  76] = { 3, TD,             SEN(getdents),                  "getdents"              },
+[BASE_NR +  77] = { 2, TF,             SEN(getcwd),                    "getcwd"                },
+[BASE_NR +  78] = { 1, TF,             SEN(chdir),                     "chdir"                 },
+[BASE_NR +  79] = { 1, TD,             SEN(fchdir),                    "fchdir"                },
+[BASE_NR +  80] = { 2, TF,             SEN(rename),                    "rename"                },
+[BASE_NR +  81] = { 2, TF,             SEN(mkdir),                     "mkdir"                 },
+[BASE_NR +  82] = { 1, TF,             SEN(rmdir),                     "rmdir"                 },
+[BASE_NR +  83] = { 2, TD|TF,          SEN(creat),                     "creat"                 },
+[BASE_NR +  84] = { 2, TF,             SEN(link),                      "link"                  },
+[BASE_NR +  85] = { 1, TF,             SEN(unlink),                    "unlink"                },
+[BASE_NR +  86] = { 2, TF,             SEN(symlink),                   "symlink"               },
+[BASE_NR +  87] = { 3, TF,             SEN(readlink),                  "readlink"              },
+[BASE_NR +  88] = { 2, TF,             SEN(chmod),                     "chmod"                 },
+[BASE_NR +  89] = { 2, TD,             SEN(fchmod),                    "fchmod"                },
+[BASE_NR +  90] = { 3, TF,             SEN(chown),                     "chown"                 },
+[BASE_NR +  91] = { 3, TD,             SEN(fchown),                    "fchown"                },
+[BASE_NR +  92] = { 3, TF,             SEN(chown),                     "lchown"                },
+[BASE_NR +  93] = { 1, NF,             SEN(umask),                     "umask"                 },
+[BASE_NR +  94] = { 2, TCL,            SEN(gettimeofday),              "gettimeofday"          },
+[BASE_NR +  95] = { 2, 0,              SEN(getrlimit),                 "getrlimit"             },
+[BASE_NR +  96] = { 2, 0,              SEN(getrusage),                 "getrusage"             },
+[BASE_NR +  97] = { 1, 0,              SEN(sysinfo),                   "sysinfo"               },
+[BASE_NR +  98] = { 1, 0,              SEN(times),                     "times"                 },
+[BASE_NR +  99] = { 4, 0,              SEN(ptrace),                    "ptrace"                },
+[BASE_NR + 100] = { 0, TC|PU|NF,       SEN(getuid),                    "getuid"                },
+[BASE_NR + 101] = { 3, 0,              SEN(syslog),                    "syslog"                },
+[BASE_NR + 102] = { 0, TC|PU|NF,       SEN(getgid),                    "getgid"                },
+[BASE_NR + 103] = { 1, TC,             SEN(setuid),                    "setuid"                },
+[BASE_NR + 104] = { 1, TC,             SEN(setgid),                    "setgid"                },
+[BASE_NR + 105] = { 0, TC|PU|NF,       SEN(geteuid),                   "geteuid"               },
+[BASE_NR + 106] = { 0, TC|PU|NF,       SEN(getegid),                   "getegid"               },
+[BASE_NR + 107] = { 2, 0,              SEN(setpgid),                   "setpgid"               },
+[BASE_NR + 108] = { 0, PU|NF,          SEN(getppid),                   "getppid"               },
+[BASE_NR + 109] = { 0, PU|NF,          SEN(getpgrp),                   "getpgrp"               },
+[BASE_NR + 110] = { 0, 0,              SEN(setsid),                    "setsid"                },
+[BASE_NR + 111] = { 2, TC,             SEN(setreuid),                  "setreuid"              },
+[BASE_NR + 112] = { 2, TC,             SEN(setregid),                  "setregid"              },
+[BASE_NR + 113] = { 2, TC,             SEN(getgroups),                 "getgroups"             },
+[BASE_NR + 114] = { 2, TC,             SEN(setgroups),                 "setgroups"             },
+[BASE_NR + 115] = { 3, TC,             SEN(setresuid),                 "setresuid"             },
+[BASE_NR + 116] = { 3, TC,             SEN(getresuid),                 "getresuid"             },
+[BASE_NR + 117] = { 3, TC,             SEN(setresgid),                 "setresgid"             },
+[BASE_NR + 118] = { 3, TC,             SEN(getresgid),                 "getresgid"             },
+[BASE_NR + 119] = { 1, 0,              SEN(getpgid),                   "getpgid"               },
+[BASE_NR + 120] = { 1, TC|NF,          SEN(setfsuid),                  "setfsuid"              },
+[BASE_NR + 121] = { 1, TC|NF,          SEN(setfsgid),                  "setfsgid"              },
+[BASE_NR + 122] = { 1, 0,              SEN(getsid),                    "getsid"                },
+[BASE_NR + 123] = { 2, TC,             SEN(capget),                    "capget"                },
+[BASE_NR + 124] = { 2, TC,             SEN(capset),                    "capset"                },
+[BASE_NR + 125] = { 2, TS,             SEN(rt_sigpending),             "rt_sigpending"         },
+[BASE_NR + 126] = { 4, TS,             SEN(rt_sigtimedwait_time64),    "rt_sigtimedwait"       },
+[BASE_NR + 127] = { 3, TS|TP,          SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
+[BASE_NR + 128] = { 2, TS,             SEN(rt_sigsuspend),             "rt_sigsuspend"         },
+[BASE_NR + 129] = { 2, TS,             SEN(sigaltstack),               "sigaltstack"           },
+[BASE_NR + 130] = { 2, TF,             SEN(utime),                     "utime"                 },
+[BASE_NR + 131] = { 3, TF,             SEN(mknod),                     "mknod"                 },
+[BASE_NR + 132] = { 1, NF,             SEN(personality),               "personality"           },
+[BASE_NR + 133] = { 2, TSFA,           SEN(ustat),                     "ustat"                 },
+[BASE_NR + 134] = { 2, TF|TSF|TSFA,    SEN(statfs),                    "statfs"                },
+[BASE_NR + 135] = { 2, TD|TFSF|TSFA,   SEN(fstatfs),                   "fstatfs"               },
+[BASE_NR + 136] = { 3, 0,              SEN(sysfs),                     "sysfs"                 },
+[BASE_NR + 137] = { 2, 0,              SEN(getpriority),               "getpriority"           },
+[BASE_NR + 138] = { 3, 0,              SEN(setpriority),               "setpriority"           },
+[BASE_NR + 139] = { 2, 0,              SEN(sched_setparam),            "sched_setparam"        },
+[BASE_NR + 140] = { 2, 0,              SEN(sched_getparam),            "sched_getparam"        },
+[BASE_NR + 141] = { 3, 0,              SEN(sched_setscheduler),        "sched_setscheduler"    },
+[BASE_NR + 142] = { 1, 0,              SEN(sched_getscheduler),        "sched_getscheduler"    },
+[BASE_NR + 143] = { 1, 0,              SEN(sched_get_priority_max),    "sched_get_priority_max"},
+[BASE_NR + 144] = { 1, 0,              SEN(sched_get_priority_min),    "sched_get_priority_min"},
+[BASE_NR + 145] = { 2, 0,              SEN(sched_rr_get_interval_time64),"sched_rr_get_interval"},
+[BASE_NR + 146] = { 2, TM,             SEN(mlock),                     "mlock"                 },
+[BASE_NR + 147] = { 2, TM,             SEN(munlock),                   "munlock"               },
+[BASE_NR + 148] = { 1, TM,             SEN(mlockall),                  "mlockall"              },
+[BASE_NR + 149] = { 0, TM,             SEN(munlockall),                "munlockall"            },
+[BASE_NR + 150] = { 0, 0,              SEN(vhangup),                   "vhangup"               },
+[BASE_NR + 151] = { 2, TF,             SEN(pivotroot),                 "pivot_root"            },
+[BASE_NR + 152] = { 1, 0,              SEN(sysctl),                    "_sysctl"               },
+[BASE_NR + 153] = { 5, TC,             SEN(prctl),                     "prctl"                 },
+[BASE_NR + 154] = { 1, TCL,            SEN(adjtimex64),                "adjtimex"              },
+[BASE_NR + 155] = { 2, 0,              SEN(setrlimit),                 "setrlimit"             },
+[BASE_NR + 156] = { 1, TF,             SEN(chroot),                    "chroot"                },
+[BASE_NR + 157] = { 0, 0,              SEN(sync),                      "sync"                  },
+[BASE_NR + 158] = { 1, TF,             SEN(acct),                      "acct"                  },
+[BASE_NR + 159] = { 2, TCL,            SEN(settimeofday),              "settimeofday"          },
+[BASE_NR + 160] = { 5, TF,             SEN(mount),                     "mount"                 },
+[BASE_NR + 161] = { 2, TF,             SEN(umount2),                   "umount2"               },
+[BASE_NR + 162] = { 2, TF,             SEN(swapon),                    "swapon"                },
+[BASE_NR + 163] = { 1, TF,             SEN(swapoff),                   "swapoff"               },
+[BASE_NR + 164] = { 4, 0,              SEN(reboot),                    "reboot"                },
+[BASE_NR + 165] = { 2, 0,              SEN(sethostname),               "sethostname"           },
+[BASE_NR + 166] = { 2, 0,              SEN(setdomainname),             "setdomainname"         },
+[BASE_NR + 167] = { 2, 0,              SEN(create_module),             "create_module"         },
+[BASE_NR + 168] = { 3, 0,              SEN(init_module),               "init_module"           },
+[BASE_NR + 169] = { 2, 0,              SEN(delete_module),             "delete_module"         },
+[BASE_NR + 170] = { 1, 0,              SEN(get_kernel_syms),           "get_kernel_syms"       },
+[BASE_NR + 171] = { 5, 0,              SEN(query_module),              "query_module"          },
+[BASE_NR + 172] = { 4, TF,             SEN(quotactl),                  "quotactl"              },
+[BASE_NR + 173] = { 3, 0,              SEN(nfsservctl),                "nfsservctl"            },
+[BASE_NR + 174] = { 5, TN,             SEN(getpmsg),                   "getpmsg"               },
+[BASE_NR + 175] = { 5, TN,             SEN(putpmsg),                   "putpmsg"               },
+[BASE_NR + 176] = { 0, 0,              SEN(afs_syscall),               "afs_syscall"           },
+[BASE_NR + 177] = { 0, 0,              SEN(printargs),                 "reserved177"           },
+[BASE_NR + 178] = { 0, PU|NF,          SEN(gettid),                    "gettid"                },
+[BASE_NR + 179] = { 3, TD,             SEN(readahead),                 "readahead"             },
+[BASE_NR + 180] = { 5, TF,             SEN(setxattr),                  "setxattr"              },
+[BASE_NR + 181] = { 5, TF,             SEN(setxattr),                  "lsetxattr"             },
+[BASE_NR + 182] = { 5, TD,             SEN(fsetxattr),                 "fsetxattr"             },
+[BASE_NR + 183] = { 4, TF,             SEN(getxattr),                  "getxattr"              },
+[BASE_NR + 184] = { 4, TF,             SEN(getxattr),                  "lgetxattr"             },
+[BASE_NR + 185] = { 4, TD,             SEN(fgetxattr),                 "fgetxattr"             },
+[BASE_NR + 186] = { 3, TF,             SEN(listxattr),                 "listxattr"             },
+[BASE_NR + 187] = { 3, TF,             SEN(listxattr),                 "llistxattr"            },
+[BASE_NR + 188] = { 3, TD,             SEN(flistxattr),                "flistxattr"            },
+[BASE_NR + 189] = { 2, TF,             SEN(removexattr),               "removexattr"           },
+[BASE_NR + 190] = { 2, TF,             SEN(removexattr),               "lremovexattr"          },
+[BASE_NR + 191] = { 2, TD,             SEN(fremovexattr),              "fremovexattr"          },
+[BASE_NR + 192] = { 2, TS|TP,          SEN(tkill),                     "tkill"                 },
+[BASE_NR + 193] = { 1, TCL,            SEN(time),                      "time"                  },
+[BASE_NR + 194] = { 6, 0,              SEN(futex_time64),              "futex"                 },
+[BASE_NR + 195] = { 3, 0,              SEN(sched_setaffinity),         "sched_setaffinity"     },
+[BASE_NR + 196] = { 3, 0,              SEN(sched_getaffinity),         "sched_getaffinity"     },
+[BASE_NR + 197] = { 3, 0,              SEN(printargs),                 "cacheflush"            },
+[BASE_NR + 198] = { 3, 0,              SEN(printargs),                 "cachectl"              },
+[BASE_NR + 199] = { 4, 0,              SEN(sysmips),                   "sysmips"               },
+[BASE_NR + 200] = { 2, TM,             SEN(io_setup),                  "io_setup"              },
+[BASE_NR + 201] = { 1, TM,             SEN(io_destroy),                "io_destroy"            },
+[BASE_NR + 202] = { 5, 0,              SEN(io_getevents_time64),       "io_getevents"          },
+[BASE_NR + 203] = { 3, 0,              SEN(io_submit),                 "io_submit"             },
+[BASE_NR + 204] = { 3, 0,              SEN(io_cancel),                 "io_cancel"             },
+[BASE_NR + 205] = { 1, TP|SE,          SEN(exit),                      "exit_group"            },
+[BASE_NR + 206] = { 3, 0,              SEN(lookup_dcookie),            "lookup_dcookie"        },
+[BASE_NR + 207] = { 1, TD,             SEN(epoll_create),              "epoll_create"          },
+[BASE_NR + 208] = { 4, TD,             SEN(epoll_ctl),                 "epoll_ctl"             },
+[BASE_NR + 209] = { 4, TD,             SEN(epoll_wait),                "epoll_wait"            },
+[BASE_NR + 210] = { 5, TM|SI,          SEN(remap_file_pages),          "remap_file_pages"      },
+[BASE_NR + 211] = { 0, TS,             SEN(rt_sigreturn),              "rt_sigreturn"          },
+[BASE_NR + 212] = { 1, 0,              SEN(set_tid_address),           "set_tid_address"       },
+[BASE_NR + 213] = { 0, 0,              SEN(restart_syscall),           "restart_syscall"       },
+[BASE_NR + 214] = { 4, TI,             SEN(semtimedop_time64),         "semtimedop"            },
+[BASE_NR + 215] = { 4, TD,             SEN(fadvise64),                 "fadvise64"             },
+[BASE_NR + 216] = { 3, 0,              SEN(timer_create),              "timer_create"          },
+[BASE_NR + 217] = { 4, 0,              SEN(timer_settime64),           "timer_settime"         },
+[BASE_NR + 218] = { 2, 0,              SEN(timer_gettime64),           "timer_gettime"         },
+[BASE_NR + 219] = { 1, 0,              SEN(timer_getoverrun),          "timer_getoverrun"      },
+[BASE_NR + 220] = { 1, 0,              SEN(timer_delete),              "timer_delete"          },
+[BASE_NR + 221] = { 2, TCL,            SEN(clock_settime64),           "clock_settime"         },
+[BASE_NR + 222] = { 2, TCL,            SEN(clock_gettime64),           "clock_gettime"         },
+[BASE_NR + 223] = { 2, TCL,            SEN(clock_getres_time64),       "clock_getres"          },
+[BASE_NR + 224] = { 4, 0,              SEN(clock_nanosleep_time64),    "clock_nanosleep"       },
+[BASE_NR + 225] = { 3, TS|TP,          SEN(tgkill),                    "tgkill"                },
+[BASE_NR + 226] = { 2, TF,             SEN(utimes),                    "utimes"                },
+[BASE_NR + 227] = { 6, TM,             SEN(mbind),                     "mbind"                 },
+[BASE_NR + 228] = { 5, TM,             SEN(get_mempolicy),             "get_mempolicy"         },
+[BASE_NR + 229] = { 3, TM,             SEN(set_mempolicy),             "set_mempolicy"         },
+[BASE_NR + 230] = { 4, TD,             SEN(mq_open),                   "mq_open"               },
+[BASE_NR + 231] = { 1, 0,              SEN(mq_unlink),                 "mq_unlink"             },
+[BASE_NR + 232] = { 5, TD,             SEN(mq_timedsend_time64),       "mq_timedsend"          },
+[BASE_NR + 233] = { 5, TD,             SEN(mq_timedreceive_time64),    "mq_timedreceive"       },
+[BASE_NR + 234] = { 2, TD,             SEN(mq_notify),                 "mq_notify"             },
+[BASE_NR + 235] = { 3, TD,             SEN(mq_getsetattr),             "mq_getsetattr"         },
+[BASE_NR + 236] = { 5, 0,              SEN(vserver),                   "vserver"               },
+[BASE_NR + 237] = { 5, TP,             SEN(waitid),                    "waitid"                },
+[BASE_NR + 238] = { },
+[BASE_NR + 239] = { 5, 0,              SEN(add_key),                   "add_key"               },
+[BASE_NR + 240] = { 4, 0,              SEN(request_key),               "request_key"           },
+[BASE_NR + 241] = { 5, 0,              SEN(keyctl),                    "keyctl"                },
+[BASE_NR + 242] = { 1, 0,              SEN(set_thread_area),           "set_thread_area"       },
+[BASE_NR + 243] = { 0, TD,             SEN(inotify_init),              "inotify_init"          },
+[BASE_NR + 244] = { 3, TD|TF,          SEN(inotify_add_watch),         "inotify_add_watch"     },
+[BASE_NR + 245] = { 2, TD,             SEN(inotify_rm_watch),          "inotify_rm_watch"      },
+[BASE_NR + 246] = { 4, TM,             SEN(migrate_pages),             "migrate_pages"         },
+[BASE_NR + 247] = { 4, TD|TF,          SEN(openat),                    "openat"                },
+[BASE_NR + 248] = { 3, TD|TF,          SEN(mkdirat),                   "mkdirat"               },
+[BASE_NR + 249] = { 4, TD|TF,          SEN(mknodat),                   "mknodat"               },
+[BASE_NR + 250] = { 5, TD|TF,          SEN(fchownat),                  "fchownat"              },
+[BASE_NR + 251] = { 3, TD|TF,          SEN(futimesat),                 "futimesat"             },
+[BASE_NR + 252] = { 4, TD|TF|TFST|TSTA,SEN(newfstatat),                "newfstatat"            },
+[BASE_NR + 253] = { 3, TD|TF,          SEN(unlinkat),                  "unlinkat"              },
+[BASE_NR + 254] = { 4, TD|TF,          SEN(renameat),                  "renameat"              },
+[BASE_NR + 255] = { 5, TD|TF,          SEN(linkat),                    "linkat"                },
+[BASE_NR + 256] = { 3, TD|TF,          SEN(symlinkat),                 "symlinkat"             },
+[BASE_NR + 257] = { 4, TD|TF,          SEN(readlinkat),                "readlinkat"            },
+[BASE_NR + 258] = { 3, TD|TF,          SEN(fchmodat),                  "fchmodat"              },
+[BASE_NR + 259] = { 3, TD|TF,          SEN(faccessat),                 "faccessat"             },
+[BASE_NR + 260] = { 6, TD,             SEN(pselect6_time64),           "pselect6"              },
+[BASE_NR + 261] = { 5, TD,             SEN(ppoll_time64),              "ppoll"                 },
+[BASE_NR + 262] = { 1, 0,              SEN(unshare),                   "unshare"               },
+[BASE_NR + 263] = { 6, TD,             SEN(splice),                    "splice"                },
+[BASE_NR + 264] = { 4, TD,             SEN(sync_file_range),           "sync_file_range"       },
+[BASE_NR + 265] = { 4, TD,             SEN(tee),                       "tee"                   },
+[BASE_NR + 266] = { 4, TD,             SEN(vmsplice),                  "vmsplice"              },
+[BASE_NR + 267] = { 6, TM,             SEN(move_pages),                "move_pages"            },
+[BASE_NR + 268] = { 2, 0,              SEN(set_robust_list),           "set_robust_list"       },
+[BASE_NR + 269] = { 3, 0,              SEN(get_robust_list),           "get_robust_list"       },
+[BASE_NR + 270] = { 4, 0,              SEN(kexec_load),                "kexec_load"            },
+[BASE_NR + 271] = { 3, 0,              SEN(getcpu),                    "getcpu"                },
+[BASE_NR + 272] = { 6, TD,             SEN(epoll_pwait),               "epoll_pwait"           },
+[BASE_NR + 273] = { 3, 0,              SEN(ioprio_set),                "ioprio_set"            },
+[BASE_NR + 274] = { 2, 0,              SEN(ioprio_get),                "ioprio_get"            },
+[BASE_NR + 275] = { 4, TD|TF,          SEN(utimensat_time64),          "utimensat"             },
+[BASE_NR + 276] = { 3, TD|TS,          SEN(signalfd),                  "signalfd"              },
+[BASE_NR + 277] = { 4, TD,             SEN(timerfd),                   "timerfd"               },
+[BASE_NR + 278] = { 1, TD,             SEN(eventfd),                   "eventfd"               },
+[BASE_NR + 279] = { 4, TD,             SEN(fallocate),                 "fallocate"             },
+[BASE_NR + 280] = { 2, TD,             SEN(timerfd_create),            "timerfd_create"        },
+[BASE_NR + 281] = { 2, TD,             SEN(timerfd_gettime64),         "timerfd_gettime"       },
+[BASE_NR + 282] = { 4, TD,             SEN(timerfd_settime64),         "timerfd_settime"       },
+[BASE_NR + 283] = { 4, TD|TS,          SEN(signalfd4),                 "signalfd4"             },
+[BASE_NR + 284] = { 2, TD,             SEN(eventfd2),                  "eventfd2"              },
+[BASE_NR + 285] = { 1, TD,             SEN(epoll_create1),             "epoll_create1"         },
+[BASE_NR + 286] = { 3, TD,             SEN(dup3),                      "dup3"                  },
+[BASE_NR + 287] = { 2, TD,             SEN(pipe2),                     "pipe2"                 },
+[BASE_NR + 288] = { 1, TD,             SEN(inotify_init1),             "inotify_init1"         },
+[BASE_NR + 289] = { 4, TD,             SEN(preadv),                    "preadv"                },
+[BASE_NR + 290] = { 4, TD,             SEN(pwritev),                   "pwritev"               },
+[BASE_NR + 291] = { 4, TP|TS,          SEN(rt_tgsigqueueinfo),         "rt_tgsigqueueinfo"     },
+[BASE_NR + 292] = { 5, TD,             SEN(perf_event_open),           "perf_event_open"       },
+[BASE_NR + 293] = { 4, TN,             SEN(accept4),                   "accept4"               },
+[BASE_NR + 294] = { 5, TN,             SEN(recvmmsg_time64),           "recvmmsg"              },
+[BASE_NR + 295] = { 2, TD,             SEN(fanotify_init),             "fanotify_init"         },
+[BASE_NR + 296] = { 5, TD|TF,          SEN(fanotify_mark),             "fanotify_mark"         },
+[BASE_NR + 297] = { 4, 0,              SEN(prlimit64),                 "prlimit64"             },
+[BASE_NR + 298] = { 5, TD|TF,          SEN(name_to_handle_at),         "name_to_handle_at"     },
+[BASE_NR + 299] = { 3, TD,             SEN(open_by_handle_at),         "open_by_handle_at"     },
+[BASE_NR + 300] = { 2, TCL,            SEN(clock_adjtime64),           "clock_adjtime"         },
+[BASE_NR + 301] = { 1, TD,             SEN(syncfs),                    "syncfs"                },
+[BASE_NR + 302] = { 4, TN,             SEN(sendmmsg),                  "sendmmsg"              },
+[BASE_NR + 303] = { 2, TD,             SEN(setns),                     "setns"                 },
+[BASE_NR + 304] = { 6, 0,              SEN(process_vm_readv),          "process_vm_readv"      },
+[BASE_NR + 305] = { 6, 0,              SEN(process_vm_writev),         "process_vm_writev"     },
+[BASE_NR + 306] = { 5, 0,              SEN(kcmp),                      "kcmp"                  },
+[BASE_NR + 307] = { 3, TD,             SEN(finit_module),              "finit_module"          },
+[BASE_NR + 308] = { 3, TD,             SEN(getdents64),                "getdents64"            },
+[BASE_NR + 309] = { 3, 0,              SEN(sched_setattr),             "sched_setattr"         },
+[BASE_NR + 310] = { 4, 0,              SEN(sched_getattr),             "sched_getattr"         },
+[BASE_NR + 311] = { 5, TD|TF,          SEN(renameat2),                 "renameat2"             },
+[BASE_NR + 312] = { 3, 0,              SEN(seccomp),                   "seccomp"               },
+[BASE_NR + 313] = { 3, 0,              SEN(getrandom),                 "getrandom"             },
+[BASE_NR + 314] = { 2, TD,             SEN(memfd_create),              "memfd_create"          },
+[BASE_NR + 315] = { 3, TD,             SEN(bpf),                       "bpf"                   },
+[BASE_NR + 316] = { 5, TD|TF|TP|TSD|SE|SI,     SEN(execveat),                  "execveat"              },
+[BASE_NR + 317] = { 1, TD,             SEN(userfaultfd),               "userfaultfd"           },
+[BASE_NR + 318] = { 2, 0,              SEN(membarrier),                "membarrier"            },
+[BASE_NR + 319] = { 3, TM,             SEN(mlock2),                    "mlock2"                },
+[BASE_NR + 320] = { 6, TD,             SEN(copy_file_range),           "copy_file_range"       },
+[BASE_NR + 321] = { 6, TD,             SEN(preadv2),                   "preadv2"               },
+[BASE_NR + 322] = { 6, TD,             SEN(pwritev2),                  "pwritev2"              },
+[BASE_NR + 323] = { 4, TM|SI,          SEN(pkey_mprotect),             "pkey_mprotect"         },
+[BASE_NR + 324] = { 2, 0,              SEN(pkey_alloc),                "pkey_alloc"            },
+[BASE_NR + 325] = { 1, 0,              SEN(pkey_free),                 "pkey_free"             },
+[BASE_NR + 326] = { 5, TD|TF|TFST|TSTA,SEN(statx),                     "statx"                 },
+[BASE_NR + 327] = { 4, 0,              SEN(rseq),                      "rseq"                  },
+[BASE_NR + 328] = { 6, 0,              SEN(io_pgetevents_time64),      "io_pgetevents"         },
+# include "syscallent-common.h"
 
 # define SYS_socket_subcall      5500
 # include "subcall64.h"
 
 #else
 
+# define SYSCALL_NAME_PREFIX "n64:"
 # include "syscallent-n64-stub.h"
+# include "syscallent-common-stub.h"
+# undef SYSCALL_NAME_PREFIX
 
 #endif
+#undef BASE_NR
index 7fdc60f67147b8f85568eb645692a4ddb3267077..2ff3aa7f874c470f8134d9ec998820eb5310c46e 100644 (file)
 /*
- * Copyright (c) 2013-2019 The strace developers.
+ * Copyright (c) 2013-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
  */
 
+#define BASE_NR 4000
 #if defined LINUX_MIPSO32
 /* For an O32 strace, decode the o32 syscalls.  */
 # define SYS_syscall_subcall   4000
-[4000] = { MA, 0,              SEN(syscall),                   "syscall"               }, /* start of Linux o32 */
-[4001] = { 1,  TP|SE,          SEN(exit),                      "exit"                  },
-[4002] = { 0,  TP,             SEN(fork),                      "fork"                  },
-[4003] = { 3,  TD,             SEN(read),                      "read"                  },
-[4004] = { 3,  TD,             SEN(write),                     "write"                 },
-[4005] = { 3,  TD|TF,          SEN(open),                      "open"                  },
-[4006] = { 1,  TD,             SEN(close),                     "close"                 },
-[4007] = { 3,  TP,             SEN(waitpid),                   "waitpid"               },
-[4008] = { 2,  TD|TF,          SEN(creat),                     "creat"                 },
-[4009] = { 2,  TF,             SEN(link),                      "link"                  },
-[4010] = { 1,  TF,             SEN(unlink),                    "unlink"                },
-[4011] = { 3,  TF|TP|SE|SI,    SEN(execve),                    "execve"                },
-[4012] = { 1,  TF,             SEN(chdir),                     "chdir"                 },
-[4013] = { 1,  0,              SEN(time),                      "time"                  },
-[4014] = { 3,  TF,             SEN(mknod),                     "mknod"                 },
-[4015] = { 2,  TF,             SEN(chmod),                     "chmod"                 },
-[4016] = { 3,  TF,             SEN(chown),                     "lchown"                },
-[4017] = { 0,  TM,             SEN(break),                     "break"                 },
-[4018] = { 2,  TF|TST|TSTA,    SEN(oldstat),                   "oldstat"               },
-[4019] = { 3,  TD,             SEN(lseek),                     "lseek"                 },
-[4020] = { 0,  PU|NF,          SEN(getpid),                    "getpid"                },
-[4021] = { 5,  TF,             SEN(mount),                     "mount"                 },
-[4022] = { 1,  TF,             SEN(umount),                    "umount"                },
-[4023] = { 1,  0,              SEN(setuid),                    "setuid"                },
-[4024] = { 0,  PU|NF,          SEN(getuid),                    "getuid"                },
-[4025] = { 1,  0,              SEN(stime),                     "stime"                 },
-[4026] = { 4,  0,              SEN(ptrace),                    "ptrace"                },
-[4027] = { 1,  0,              SEN(alarm),                     "alarm"                 },
-[4028] = { 2,  TD|TFST|TSTA,   SEN(oldfstat),                  "oldfstat"              },
-[4029] = { 0,  TS,             SEN(pause),                     "pause"                 },
-[4030] = { 2,  TF,             SEN(utime),                     "utime"                 },
-[4031] = { 0,  0,              SEN(stty),                      "stty"                  },
-[4032] = { 0,  0,              SEN(gtty),                      "gtty"                  },
-[4033] = { 2,  TF,             SEN(access),                    "access"                },
-[4034] = { 1,  0,              SEN(nice),                      "nice"                  },
-[4035] = { 1,  0,              SEN(ftime),                     "ftime"                 },
-[4036] = { 0,  0,              SEN(sync),                      "sync"                  },
-[4037] = { 2,  TS,             SEN(kill),                      "kill"                  },
-[4038] = { 2,  TF,             SEN(rename),                    "rename"                },
-[4039] = { 2,  TF,             SEN(mkdir),                     "mkdir"                 },
-[4040] = { 1,  TF,             SEN(rmdir),                     "rmdir"                 },
-[4041] = { 1,  TD,             SEN(dup),                       "dup"                   },
-[4042] = { 0,  TD,             SEN(pipe),                      "pipe"                  },
-[4043] = { 1,  0,              SEN(times),                     "times"                 },
-[4044] = { 0,  0,              SEN(prof),                      "prof"                  },
-[4045] = { 1,  TM|SI,          SEN(brk),                       "brk"                   },
-[4046] = { 1,  0,              SEN(setgid),                    "setgid"                },
-[4047] = { 0,  PU|NF,          SEN(getgid),                    "getgid"                },
-[4048] = { 2,  TS,             SEN(signal),                    "signal"                },
-[4049] = { 0,  PU|NF,          SEN(geteuid),                   "geteuid"               },
-[4050] = { 0,  PU|NF,          SEN(getegid),                   "getegid"               },
-[4051] = { 1,  TF,             SEN(acct),                      "acct"                  },
-[4052] = { 2,  TF,             SEN(umount2),                   "umount2"               },
-[4053] = { 0,  0,              SEN(lock),                      "lock"                  },
-[4054] = { 3,  TD,             SEN(ioctl),                     "ioctl"                 },
-[4055] = { 3,  TD,             SEN(fcntl),                     "fcntl"                 },
-[4056] = { 0,  0,              SEN(mpx),                       "mpx"                   },
-[4057] = { 2,  0,              SEN(setpgid),                   "setpgid"               },
-[4058] = { 0,  0,              SEN(ulimit),                    "ulimit"                },
-[4059] = { 1,  0,              SEN(oldolduname),               "oldolduname"           },
-[4060] = { 1,  NF,             SEN(umask),                     "umask"                 },
-[4061] = { 1,  TF,             SEN(chroot),                    "chroot"                },
-[4062] = { 2,  TSFA,           SEN(ustat),                     "ustat"                 },
-[4063] = { 2,  TD,             SEN(dup2),                      "dup2"                  },
-[4064] = { 0,  PU|NF,          SEN(getppid),                   "getppid"               },
-[4065] = { 0,  PU|NF,          SEN(getpgrp),                   "getpgrp"               },
-[4066] = { 0,  0,              SEN(setsid),                    "setsid"                },
-[4067] = { 3,  TS,             SEN(sigaction),                 "sigaction"             },
-[4068] = { 0,  TS,             SEN(sgetmask),                  "sgetmask"              },
-[4069] = { 1,  TS,             SEN(ssetmask),                  "ssetmask"              },
-[4070] = { 2,  0,              SEN(setreuid),                  "setreuid"              },
-[4071] = { 2,  0,              SEN(setregid),                  "setregid"              },
-[4072] = { 1,  TS,             SEN(sigsuspend),                "sigsuspend"            },
-[4073] = { 1,  TS,             SEN(sigpending),                "sigpending"            },
-[4074] = { 2,  0,              SEN(sethostname),               "sethostname"           },
-[4075] = { 2,  0,              SEN(setrlimit),                 "setrlimit"             },
-[4076] = { 2,  0,              SEN(getrlimit),                 "getrlimit"             },
-[4077] = { 2,  0,              SEN(getrusage),                 "getrusage"             },
-[4078] = { 2,  0,              SEN(gettimeofday),              "gettimeofday"          },
-[4079] = { 2,  0,              SEN(settimeofday),              "settimeofday"          },
-[4080] = { 2,  0,              SEN(getgroups),                 "getgroups"             },
-[4081] = { 2,  0,              SEN(setgroups),                 "setgroups"             },
-[4082] = { 0,  0,              SEN(printargs),                 "reserved82"            },
-[4083] = { 2,  TF,             SEN(symlink),                   "symlink"               },
-[4084] = { 2,  TF|TLST|TSTA,   SEN(oldlstat),                  "oldlstat"              },
-[4085] = { 3,  TF,             SEN(readlink),                  "readlink"              },
-[4086] = { 1,  TF,             SEN(uselib),                    "uselib"                },
-[4087] = { 2,  TF,             SEN(swapon),                    "swapon"                },
-[4088] = { 4,  0,              SEN(reboot),                    "reboot"                },
-[4089] = { 3,  TD,             SEN(readdir),                   "readdir"               },
-[4090] = { 6,  TD|TM|SI,       SEN(mmap),                      "mmap"                  },
-[4091] = { 2,  TM|SI,          SEN(munmap),                    "munmap"                },
-[4092] = { 2,  TF,             SEN(truncate),                  "truncate"              },
-[4093] = { 2,  TD,             SEN(ftruncate),                 "ftruncate"             },
-[4094] = { 2,  TD,             SEN(fchmod),                    "fchmod"                },
-[4095] = { 3,  TD,             SEN(fchown),                    "fchown"                },
-[4096] = { 2,  0,              SEN(getpriority),               "getpriority"           },
-[4097] = { 3,  0,              SEN(setpriority),               "setpriority"           },
-[4098] = { 0,  0,              SEN(profil),                    "profil"                },
-[4099] = { 2,  TF|TSF|TSFA,    SEN(statfs),                    "statfs"                },
-[4100] = { 2,  TD|TFSF|TSFA,   SEN(fstatfs),                   "fstatfs"               },
-[4101] = { 3,  0,              SEN(ioperm),                    "ioperm"                },
-[4102] = { 2,  TD,             SEN(socketcall),                "socketcall"            },
-[4103] = { 3,  0,              SEN(syslog),                    "syslog"                },
-[4104] = { 3,  0,              SEN(setitimer),                 "setitimer"             },
-[4105] = { 2,  0,              SEN(getitimer),                 "getitimer"             },
-[4106] = { 2,  TF|TST|TSTA,    SEN(stat),                      "stat"                  },
-[4107] = { 2,  TF|TLST|TSTA,   SEN(lstat),                     "lstat"                 },
-[4108] = { 2,  TD|TFST|TSTA,   SEN(fstat),                     "fstat"                 },
-[4109] = { 1,  0,              SEN(olduname),                  "olduname"              },
-[4110] = { 1,  0,              SEN(iopl),                      "iopl"                  },
-[4111] = { 0,  0,              SEN(vhangup),                   "vhangup"               },
-[4112] = { 0,  0,              SEN(idle),                      "idle"                  },
-[4113] = { 5,  0,              SEN(vm86old),                   "vm86"                  },
-[4114] = { 4,  TP,             SEN(wait4),                     "wait4"                 },
-[4115] = { 1,  TF,             SEN(swapoff),                   "swapoff"               },
-[4116] = { 1,  0,              SEN(sysinfo),                   "sysinfo"               },
-[4117] = { 6,  TI,             SEN(ipc),                       "ipc"                   },
-[4118] = { 1,  TD,             SEN(fsync),                     "fsync"                 },
-[4119] = { 0,  TS,             SEN(sigreturn),                 "sigreturn"             },
-[4120] = { 5,  TP,             SEN(clone),                     "clone"                 },
-[4121] = { 2,  0,              SEN(setdomainname),             "setdomainname"         },
-[4122] = { 1,  0,              SEN(uname),                     "uname"                 },
-[4123] = { 0,  0,              SEN(modify_ldt),                "modify_ldt"            },
-[4124] = { 1,  0,              SEN(adjtimex32),                "adjtimex"              },
-[4125] = { 3,  TM|SI,          SEN(mprotect),                  "mprotect"              },
-[4126] = { 3,  TS,             SEN(sigprocmask),               "sigprocmask"           },
-[4127] = { 2,  0,              SEN(create_module),             "create_module"         },
-[4128] = { 3,  0,              SEN(init_module),               "init_module"           },
-[4129] = { 2,  0,              SEN(delete_module),             "delete_module"         },
-[4130] = { 1,  0,              SEN(get_kernel_syms),           "get_kernel_syms"       },
-[4131] = { 4,  TF,             SEN(quotactl),                  "quotactl"              },
-[4132] = { 1,  0,              SEN(getpgid),                   "getpgid"               },
-[4133] = { 1,  TD,             SEN(fchdir),                    "fchdir"                },
-[4134] = { 2,  0,              SEN(bdflush),                   "bdflush"               },
-[4135] = { 3,  0,              SEN(sysfs),                     "sysfs"                 },
-[4136] = { 1,  NF,             SEN(personality),               "personality"           },
-[4137] = { 0,  0,              SEN(afs_syscall),               "afs_syscall"           },
-[4138] = { 1,  NF,             SEN(setfsuid),                  "setfsuid"              },
-[4139] = { 1,  NF,             SEN(setfsgid),                  "setfsgid"              },
-[4140] = { 5,  TD,             SEN(llseek),                    "_llseek"               },
-[4141] = { 3,  TD,             SEN(getdents),                  "getdents"              },
-[4142] = { 5,  TD,             SEN(select),                    "_newselect"            },
-[4143] = { 2,  TD,             SEN(flock),                     "flock"                 },
-[4144] = { 3,  TM,             SEN(msync),                     "msync"                 },
-[4145] = { 3,  TD,             SEN(readv),                     "readv"                 },
-[4146] = { 3,  TD,             SEN(writev),                    "writev"                },
-[4147] = { 3,  0,              SEN(printargs),                 "cacheflush"            },
-[4148] = { 3,  0,              SEN(printargs),                 "cachectl"              },
-[4149] = { 4,  0,              SEN(sysmips),                   "sysmips"               },
-[4150] = { 0,  0,              SEN(setup),                     "setup"                 },
-[4151] = { 1,  0,              SEN(getsid),                    "getsid"                },
-[4152] = { 1,  TD,             SEN(fdatasync),                 "fdatasync"             },
-[4153] = { 1,  0,              SEN(sysctl),                    "_sysctl"               },
-[4154] = { 2,  TM,             SEN(mlock),                     "mlock"                 },
-[4155] = { 2,  TM,             SEN(munlock),                   "munlock"               },
-[4156] = { 1,  TM,             SEN(mlockall),                  "mlockall"              },
-[4157] = { 0,  TM,             SEN(munlockall),                "munlockall"            },
-[4158] = { 2,  0,              SEN(sched_setparam),            "sched_setparam"        },
-[4159] = { 2,  0,              SEN(sched_getparam),            "sched_getparam"        },
-[4160] = { 3,  0,              SEN(sched_setscheduler),        "sched_setscheduler"    },
-[4161] = { 1,  0,              SEN(sched_getscheduler),        "sched_getscheduler"    },
-[4162] = { 0,  0,              SEN(sched_yield),               "sched_yield"           },
-[4163] = { 1,  0,              SEN(sched_get_priority_max),    "sched_get_priority_max"},
-[4164] = { 1,  0,              SEN(sched_get_priority_min),    "sched_get_priority_min"},
-[4165] = { 2,  0,              SEN(sched_rr_get_interval_time32),"sched_rr_get_interval"},
-[4166] = { 2,  0,              SEN(nanosleep_time32),          "nanosleep"             },
-[4167] = { 5,  TM|SI,          SEN(mremap),                    "mremap"                },
-[4168] = { 3,  TN,             SEN(accept),                    "accept"                },
-[4169] = { 3,  TN,             SEN(bind),                      "bind"                  },
-[4170] = { 3,  TN,             SEN(connect),                   "connect"               },
-[4171] = { 3,  TN,             SEN(getpeername),               "getpeername"           },
-[4172] = { 3,  TN,             SEN(getsockname),               "getsockname"           },
-[4173] = { 5,  TN,             SEN(getsockopt),                "getsockopt"            },
-[4174] = { 2,  TN,             SEN(listen),                    "listen"                },
-[4175] = { 4,  TN,             SEN(recv),                      "recv"                  },
-[4176] = { 6,  TN,             SEN(recvfrom),                  "recvfrom"              },
-[4177] = { 3,  TN,             SEN(recvmsg),                   "recvmsg"               },
-[4178] = { 4,  TN,             SEN(send),                      "send"                  },
-[4179] = { 3,  TN,             SEN(sendmsg),                   "sendmsg"               },
-[4180] = { 6,  TN,             SEN(sendto),                    "sendto"                },
-[4181] = { 5,  TN,             SEN(setsockopt),                "setsockopt"            },
-[4182] = { 2,  TN,             SEN(shutdown),                  "shutdown"              },
-[4183] = { 3,  TN,             SEN(socket),                    "socket"                },
-[4184] = { 4,  TN,             SEN(socketpair),                "socketpair"            },
-[4185] = { 3,  0,              SEN(setresuid),                 "setresuid"             },
-[4186] = { 3,  0,              SEN(getresuid),                 "getresuid"             },
-[4187] = { 5,  0,              SEN(query_module),              "query_module"          },
-[4188] = { 3,  TD,             SEN(poll_time32),               "poll"                  },
-[4189] = { 3,  0,              SEN(nfsservctl),                "nfsservctl"            },
-[4190] = { 3,  0,              SEN(setresgid),                 "setresgid"             },
-[4191] = { 3,  0,              SEN(getresgid),                 "getresgid"             },
-[4192] = { 5,  0,              SEN(prctl),                     "prctl"                 },
-[4193] = { 0,  TS,             SEN(rt_sigreturn),              "rt_sigreturn"          },
-[4194] = { 4,  TS,             SEN(rt_sigaction),              "rt_sigaction"          },
-[4195] = { 4,  TS,             SEN(rt_sigprocmask),            "rt_sigprocmask"        },
-[4196] = { 2,  TS,             SEN(rt_sigpending),             "rt_sigpending"         },
-[4197] = { 4,  TS,             SEN(rt_sigtimedwait_time32),    "rt_sigtimedwait"       },
-[4198] = { 3,  TS,             SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
-[4199] = { 2,  TS,             SEN(rt_sigsuspend),             "rt_sigsuspend"         },
-[4200] = { 6,  TD,             SEN(pread),                     "pread64"               },
-[4201] = { 6,  TD,             SEN(pwrite),                    "pwrite64"              },
-[4202] = { 3,  TF,             SEN(chown),                     "chown"                 },
-[4203] = { 2,  TF,             SEN(getcwd),                    "getcwd"                },
-[4204] = { 2,  0,              SEN(capget),                    "capget"                },
-[4205] = { 2,  0,              SEN(capset),                    "capset"                },
-[4206] = { 2,  TS,             SEN(sigaltstack),               "sigaltstack"           },
-[4207] = { 4,  TD|TN,          SEN(sendfile),                  "sendfile"              },
-[4208] = { 5,  TN,             SEN(getpmsg),                   "getpmsg"               },
-[4209] = { 5,  TN,             SEN(putpmsg),                   "putpmsg"               },
-[4210] = { 6,  TD|TM|SI,       SEN(mmap_4koff),                "mmap2"                 },
-[4211] = { 4,  TF,             SEN(truncate64),                "truncate64"            },
-[4212] = { 4,  TD,             SEN(ftruncate64),               "ftruncate64"           },
-[4213] = { 2,  TF|TST|TSTA,    SEN(stat64),                    "stat64"                },
-[4214] = { 2,  TF|TLST|TSTA,   SEN(lstat64),                   "lstat64"               },
-[4215] = { 2,  TD|TFST|TSTA,   SEN(fstat64),                   "fstat64"               },
-[4216] = { 2,  TF,             SEN(pivotroot),                 "pivot_root"            },
-[4217] = { 3,  TM,             SEN(mincore),                   "mincore"               },
-[4218] = { 3,  TM,             SEN(madvise),                   "madvise"               },
-[4219] = { 3,  TD,             SEN(getdents64),                "getdents64"            },
-[4220] = { 3,  TD,             SEN(fcntl64),                   "fcntl64"               },
-[4221] = { 0,  0,              SEN(printargs),                 "reserved221"           },
-[4222] = { 0,  PU|NF,          SEN(gettid),                    "gettid"                },
-[4223] = { 5,  TD,             SEN(readahead),                 "readahead"             },
-[4224] = { 5,  TF,             SEN(setxattr),                  "setxattr"              },
-[4225] = { 5,  TF,             SEN(setxattr),                  "lsetxattr"             },
-[4226] = { 5,  TD,             SEN(fsetxattr),                 "fsetxattr"             },
-[4227] = { 4,  TF,             SEN(getxattr),                  "getxattr"              },
-[4228] = { 4,  TF,             SEN(getxattr),                  "lgetxattr"             },
-[4229] = { 4,  TD,             SEN(fgetxattr),                 "fgetxattr"             },
-[4230] = { 3,  TF,             SEN(listxattr),                 "listxattr"             },
-[4231] = { 3,  TF,             SEN(listxattr),                 "llistxattr"            },
-[4232] = { 3,  TD,             SEN(flistxattr),                "flistxattr"            },
-[4233] = { 2,  TF,             SEN(removexattr),               "removexattr"           },
-[4234] = { 2,  TF,             SEN(removexattr),               "lremovexattr"          },
-[4235] = { 2,  TD,             SEN(fremovexattr),              "fremovexattr"          },
-[4236] = { 2,  TS,             SEN(kill),                      "tkill"                 },
-[4237] = { 4,  TD|TN,          SEN(sendfile64),                "sendfile64"            },
-[4238] = { 6,  0,              SEN(futex_time32),              "futex"                 },
-[4239] = { 3,  0,              SEN(sched_setaffinity),         "sched_setaffinity"     },
-[4240] = { 3,  0,              SEN(sched_getaffinity),         "sched_getaffinity"     },
-[4241] = { 2,  TM,             SEN(io_setup),                  "io_setup"              },
-[4242] = { 1,  TM,             SEN(io_destroy),                "io_destroy"            },
-[4243] = { 5,  0,              SEN(io_getevents_time32),       "io_getevents"          },
-[4244] = { 3,  0,              SEN(io_submit),                 "io_submit"             },
-[4245] = { 3,  0,              SEN(io_cancel),                 "io_cancel"             },
-[4246] = { 1,  TP|SE,          SEN(exit),                      "exit_group"            },
-[4247] = { 4,  0,              SEN(lookup_dcookie),            "lookup_dcookie"        },
-[4248] = { 1,  TD,             SEN(epoll_create),              "epoll_create"          },
-[4249] = { 4,  TD,             SEN(epoll_ctl),                 "epoll_ctl"             },
-[4250] = { 4,  TD,             SEN(epoll_wait),                "epoll_wait"            },
-[4251] = { 5,  TM|SI,          SEN(remap_file_pages),          "remap_file_pages"      },
-[4252] = { 1,  0,              SEN(set_tid_address),           "set_tid_address"       },
-[4253] = { 0,  0,              SEN(restart_syscall),           "restart_syscall"       },
-[4254] = { 7,  TD,             SEN(fadvise64_64),              "fadvise64"             },
-[4255] = { 3,  TF|TSF|TSFA,    SEN(statfs64),                  "statfs64"              },
-[4256] = { 3,  TD|TFSF|TSFA,   SEN(fstatfs64),                 "fstatfs64"             },
-[4257] = { 3,  0,              SEN(timer_create),              "timer_create"          },
-[4258] = { 4,  0,              SEN(timer_settime32),           "timer_settime"         },
-[4259] = { 2,  0,              SEN(timer_gettime32),           "timer_gettime"         },
-[4260] = { 1,  0,              SEN(timer_getoverrun),          "timer_getoverrun"      },
-[4261] = { 1,  0,              SEN(timer_delete),              "timer_delete"          },
-[4262] = { 2,  0,              SEN(clock_settime32),           "clock_settime"         },
-[4263] = { 2,  0,              SEN(clock_gettime32),           "clock_gettime"         },
-[4264] = { 2,  0,              SEN(clock_getres_time32),       "clock_getres"          },
-[4265] = { 4,  0,              SEN(clock_nanosleep_time32),    "clock_nanosleep"       },
-[4266] = { 3,  TS,             SEN(tgkill),                    "tgkill"                },
-[4267] = { 2,  TF,             SEN(utimes),                    "utimes"                },
-[4268] = { 6,  TM,             SEN(mbind),                     "mbind"                 },
-[4269] = { 5,  TM,             SEN(get_mempolicy),             "get_mempolicy"         },
-[4270] = { 3,  TM,             SEN(set_mempolicy),             "set_mempolicy"         },
-[4271] = { 4,  TD,             SEN(mq_open),                   "mq_open"               },
-[4272] = { 1,  0,              SEN(mq_unlink),                 "mq_unlink"             },
-[4273] = { 5,  TD,             SEN(mq_timedsend_time32),       "mq_timedsend"          },
-[4274] = { 5,  TD,             SEN(mq_timedreceive_time32),    "mq_timedreceive"       },
-[4275] = { 2,  TD,             SEN(mq_notify),                 "mq_notify"             },
-[4276] = { 3,  TD,             SEN(mq_getsetattr),             "mq_getsetattr"         },
-[4277] = { 5,  0,              SEN(vserver),                   "vserver"               },
-[4278] = { 5,  TP,             SEN(waitid),                    "waitid"                },
-[4279] = { },
-[4280] = { 5,  0,              SEN(add_key),                   "add_key"               },
-[4281] = { 4,  0,              SEN(request_key),               "request_key"           },
-[4282] = { 5,  0,              SEN(keyctl),                    "keyctl"                },
-[4283] = { 1,  0,              SEN(set_thread_area),           "set_thread_area"       },
-[4284] = { 0,  TD,             SEN(inotify_init),              "inotify_init"          },
-[4285] = { 3,  TD|TF,          SEN(inotify_add_watch),         "inotify_add_watch"     },
-[4286] = { 2,  TD,             SEN(inotify_rm_watch),          "inotify_rm_watch"      },
-[4287] = { 4,  TM,             SEN(migrate_pages),             "migrate_pages"         },
-[4288] = { 4,  TD|TF,          SEN(openat),                    "openat"                },
-[4289] = { 3,  TD|TF,          SEN(mkdirat),                   "mkdirat"               },
-[4290] = { 4,  TD|TF,          SEN(mknodat),                   "mknodat"               },
-[4291] = { 5,  TD|TF,          SEN(fchownat),                  "fchownat"              },
-[4292] = { 3,  TD|TF,          SEN(futimesat),                 "futimesat"             },
-[4293] = { 4,  TD|TF|TFST|TSTA,SEN(fstatat64),                 "fstatat64"             },
-[4294] = { 3,  TD|TF,          SEN(unlinkat),                  "unlinkat"              },
-[4295] = { 4,  TD|TF,          SEN(renameat),                  "renameat"              },
-[4296] = { 5,  TD|TF,          SEN(linkat),                    "linkat"                },
-[4297] = { 3,  TD|TF,          SEN(symlinkat),                 "symlinkat"             },
-[4298] = { 4,  TD|TF,          SEN(readlinkat),                "readlinkat"            },
-[4299] = { 3,  TD|TF,          SEN(fchmodat),                  "fchmodat"              },
-[4300] = { 3,  TD|TF,          SEN(faccessat),                 "faccessat"             },
-[4301] = { 6,  TD,             SEN(pselect6_time32),           "pselect6"              },
-[4302] = { 5,  TD,             SEN(ppoll_time32),              "ppoll"                 },
-[4303] = { 1,  TP,             SEN(unshare),                   "unshare"               },
-[4304] = { 6,  TD,             SEN(splice),                    "splice"                },
-[4305] = { 7,  TD,             SEN(sync_file_range),           "sync_file_range"       },
-[4306] = { 4,  TD,             SEN(tee),                       "tee"                   },
-[4307] = { 4,  TD,             SEN(vmsplice),                  "vmsplice"              },
-[4308] = { 6,  TM,             SEN(move_pages),                "move_pages"            },
-[4309] = { 2,  0,              SEN(set_robust_list),           "set_robust_list"       },
-[4310] = { 3,  0,              SEN(get_robust_list),           "get_robust_list"       },
-[4311] = { 4,  0,              SEN(kexec_load),                "kexec_load"            },
-[4312] = { 3,  0,              SEN(getcpu),                    "getcpu"                },
-[4313] = { 6,  TD,             SEN(epoll_pwait),               "epoll_pwait"           },
-[4314] = { 3,  0,              SEN(ioprio_set),                "ioprio_set"            },
-[4315] = { 2,  0,              SEN(ioprio_get),                "ioprio_get"            },
-[4316] = { 4,  TD|TF,          SEN(utimensat_time32),          "utimensat"             },
-[4317] = { 3,  TD|TS,          SEN(signalfd),                  "signalfd"              },
-[4318] = { 4,  TD,             SEN(timerfd),                   "timerfd"               },
-[4319] = { 1,  TD,             SEN(eventfd),                   "eventfd"               },
-[4320] = { 6,  TD,             SEN(fallocate),                 "fallocate"             },
-[4321] = { 2,  TD,             SEN(timerfd_create),            "timerfd_create"        },
-[4322] = { 2,  TD,             SEN(timerfd_gettime32),         "timerfd_gettime"       },
-[4323] = { 4,  TD,             SEN(timerfd_settime32),         "timerfd_settime"       },
-[4324] = { 4,  TD|TS,          SEN(signalfd4),                 "signalfd4"             },
-[4325] = { 2,  TD,             SEN(eventfd2),                  "eventfd2"              },
-[4326] = { 1,  TD,             SEN(epoll_create1),             "epoll_create1"         },
-[4327] = { 3,  TD,             SEN(dup3),                      "dup3"                  },
-[4328] = { 2,  TD,             SEN(pipe2),                     "pipe2"                 },
-[4329] = { 1,  TD,             SEN(inotify_init1),             "inotify_init1"         },
-[4330] = { 5,  TD,             SEN(preadv),                    "preadv"                },
-[4331] = { 5,  TD,             SEN(pwritev),                   "pwritev"               },
-[4332] = { 4,  TP|TS,          SEN(rt_tgsigqueueinfo),         "rt_tgsigqueueinfo"     },
-[4333] = { 5,  TD,             SEN(perf_event_open),           "perf_event_open"       },
-[4334] = { 4,  TN,             SEN(accept4),                   "accept4"               },
-[4335] = { 5,  TN,             SEN(recvmmsg_time32),           "recvmmsg"              },
-[4336] = { 2,  TD,             SEN(fanotify_init),             "fanotify_init"         },
-[4337] = { 6,  TD|TF,          SEN(fanotify_mark),             "fanotify_mark"         },
-[4338] = { 4,  0,              SEN(prlimit64),                 "prlimit64"             },
-[4339] = { 5,  TD|TF,          SEN(name_to_handle_at),         "name_to_handle_at"     },
-[4340] = { 3,  TD,             SEN(open_by_handle_at),         "open_by_handle_at"     },
-[4341] = { 2,  0,              SEN(clock_adjtime32),           "clock_adjtime"         },
-[4342] = { 1,  TD,             SEN(syncfs),                    "syncfs"                },
-[4343] = { 4,  TN,             SEN(sendmmsg),                  "sendmmsg"              },
-[4344] = { 2,  TD,             SEN(setns),                     "setns"                 },
-[4345] = { 6,  0,              SEN(process_vm_readv),          "process_vm_readv"      },
-[4346] = { 6,  0,              SEN(process_vm_writev),         "process_vm_writev"     },
-[4347] = { 5,  0,              SEN(kcmp),                      "kcmp"                  },
-[4348] = { 3,  TD,             SEN(finit_module),              "finit_module"          },
-[4349] = { 3,  0,              SEN(sched_setattr),             "sched_setattr"         },
-[4350] = { 4,  0,              SEN(sched_getattr),             "sched_getattr"         },
-[4351] = { 5,  TD|TF,          SEN(renameat2),                 "renameat2"             },
-[4352] = { 3,  0,              SEN(seccomp),                   "seccomp"               },
-[4353] = { 3,  0,              SEN(getrandom),                 "getrandom"             },
-[4354] = { 2,  TD,             SEN(memfd_create),              "memfd_create"          },
-[4355] = { 3,  TD,             SEN(bpf),                       "bpf"                   },
-[4356] = { 5,  TD|TF|TP|SE|SI, SEN(execveat),                  "execveat"              },
-[4357] = { 1,  TD,             SEN(userfaultfd),               "userfaultfd"           },
-[4358] = { 2,  0,              SEN(membarrier),                "membarrier"            },
-[4359] = { 3,  TM,             SEN(mlock2),                    "mlock2"                },
-[4360] = { 6,  TD,             SEN(copy_file_range),           "copy_file_range"       },
-[4361] = { 6,  TD,             SEN(preadv2),                   "preadv2"               },
-[4362] = { 6,  TD,             SEN(pwritev2),                  "pwritev2"              },
-[4363] = { 4,  TM|SI,          SEN(pkey_mprotect),             "pkey_mprotect"         },
-[4364] = { 2,  0,              SEN(pkey_alloc),                "pkey_alloc"            },
-[4365] = { 1,  0,              SEN(pkey_free),                 "pkey_free"             },
-[4366] = { 5,  TD|TF|TSTA,     SEN(statx),                     "statx"                 },
-[4367] = { 4,  0,              SEN(rseq),                      "rseq"                  },
-[4368] = { 6,  0,              SEN(io_pgetevents_time32),      "io_pgetevents"         },
+[BASE_NR +   0] = { MA,        TSD,            SEN(syscall),                   "syscall"               }, /* start of Linux o32 */
+[BASE_NR +   1] = { 1, TP|SE,          SEN(exit),                      "exit"                  },
+[BASE_NR +   2] = { 0, TP,             SEN(fork),                      "fork"                  },
+[BASE_NR +   3] = { 3, TD,             SEN(read),                      "read"                  },
+[BASE_NR +   4] = { 3, TD,             SEN(write),                     "write"                 },
+[BASE_NR +   5] = { 3, TD|TF,          SEN(open),                      "open"                  },
+[BASE_NR +   6] = { 1, TD,             SEN(close),                     "close"                 },
+[BASE_NR +   7] = { 3, TP,             SEN(waitpid),                   "waitpid"               },
+[BASE_NR +   8] = { 2, TD|TF,          SEN(creat),                     "creat"                 },
+[BASE_NR +   9] = { 2, TF,             SEN(link),                      "link"                  },
+[BASE_NR +  10] = { 1, TF,             SEN(unlink),                    "unlink"                },
+[BASE_NR +  11] = { 3, TF|TP|TSD|SE|SI,        SEN(execve),                    "execve"                },
+[BASE_NR +  12] = { 1, TF,             SEN(chdir),                     "chdir"                 },
+[BASE_NR +  13] = { 1, TCL,            SEN(time),                      "time"                  },
+[BASE_NR +  14] = { 3, TF,             SEN(mknod),                     "mknod"                 },
+[BASE_NR +  15] = { 2, TF,             SEN(chmod),                     "chmod"                 },
+[BASE_NR +  16] = { 3, TF,             SEN(chown),                     "lchown"                },
+[BASE_NR +  17] = { 0, TM,             SEN(break),                     "break"                 },
+[BASE_NR +  18] = { 2, TF|TST|TSTA,    SEN(oldstat),                   "oldstat"               },
+[BASE_NR +  19] = { 3, TD,             SEN(lseek),                     "lseek"                 },
+[BASE_NR +  20] = { 0, PU|NF,          SEN(getpid),                    "getpid"                },
+[BASE_NR +  21] = { 5, TF,             SEN(mount),                     "mount"                 },
+[BASE_NR +  22] = { 1, TF,             SEN(umount),                    "umount"                },
+[BASE_NR +  23] = { 1, TC,             SEN(setuid),                    "setuid"                },
+[BASE_NR +  24] = { 0, TC|PU|NF,       SEN(getuid),                    "getuid"                },
+[BASE_NR +  25] = { 1, 0,              SEN(stime),                     "stime"                 },
+[BASE_NR +  26] = { 4, 0,              SEN(ptrace),                    "ptrace"                },
+[BASE_NR +  27] = { 1, 0,              SEN(alarm),                     "alarm"                 },
+[BASE_NR +  28] = { 2, TD|TFST|TSTA,   SEN(oldfstat),                  "oldfstat"              },
+[BASE_NR +  29] = { 0, TS,             SEN(pause),                     "pause"                 },
+[BASE_NR +  30] = { 2, TF,             SEN(utime),                     "utime"                 },
+[BASE_NR +  31] = { 0, 0,              SEN(stty),                      "stty"                  },
+[BASE_NR +  32] = { 0, 0,              SEN(gtty),                      "gtty"                  },
+[BASE_NR +  33] = { 2, TF,             SEN(access),                    "access"                },
+[BASE_NR +  34] = { 1, 0,              SEN(nice),                      "nice"                  },
+[BASE_NR +  35] = { 1, 0,              SEN(ftime),                     "ftime"                 },
+[BASE_NR +  36] = { 0, 0,              SEN(sync),                      "sync"                  },
+[BASE_NR +  37] = { 2, TS|TP,          SEN(kill),                      "kill"                  },
+[BASE_NR +  38] = { 2, TF,             SEN(rename),                    "rename"                },
+[BASE_NR +  39] = { 2, TF,             SEN(mkdir),                     "mkdir"                 },
+[BASE_NR +  40] = { 1, TF,             SEN(rmdir),                     "rmdir"                 },
+[BASE_NR +  41] = { 1, TD,             SEN(dup),                       "dup"                   },
+[BASE_NR +  42] = { 0, TD,             SEN(pipe),                      "pipe"                  },
+[BASE_NR +  43] = { 1, 0,              SEN(times),                     "times"                 },
+[BASE_NR +  44] = { 0, 0,              SEN(prof),                      "prof"                  },
+[BASE_NR +  45] = { 1, TM|SI,          SEN(brk),                       "brk"                   },
+[BASE_NR +  46] = { 1, TC,             SEN(setgid),                    "setgid"                },
+[BASE_NR +  47] = { 0, TC|PU|NF,       SEN(getgid),                    "getgid"                },
+[BASE_NR +  48] = { 2, TS,             SEN(signal),                    "signal"                },
+[BASE_NR +  49] = { 0, TC|PU|NF,       SEN(geteuid),                   "geteuid"               },
+[BASE_NR +  50] = { 0, TC|PU|NF,       SEN(getegid),                   "getegid"               },
+[BASE_NR +  51] = { 1, TF,             SEN(acct),                      "acct"                  },
+[BASE_NR +  52] = { 2, TF,             SEN(umount2),                   "umount2"               },
+[BASE_NR +  53] = { 0, 0,              SEN(lock),                      "lock"                  },
+[BASE_NR +  54] = { 3, TD,             SEN(ioctl),                     "ioctl"                 },
+[BASE_NR +  55] = { 3, TD,             SEN(fcntl),                     "fcntl"                 },
+[BASE_NR +  56] = { 0, 0,              SEN(mpx),                       "mpx"                   },
+[BASE_NR +  57] = { 2, 0,              SEN(setpgid),                   "setpgid"               },
+[BASE_NR +  58] = { 0, 0,              SEN(ulimit),                    "ulimit"                },
+[BASE_NR +  59] = { 1, 0,              SEN(oldolduname),               "oldolduname"           },
+[BASE_NR +  60] = { 1, NF,             SEN(umask),                     "umask"                 },
+[BASE_NR +  61] = { 1, TF,             SEN(chroot),                    "chroot"                },
+[BASE_NR +  62] = { 2, TSFA,           SEN(ustat),                     "ustat"                 },
+[BASE_NR +  63] = { 2, TD,             SEN(dup2),                      "dup2"                  },
+[BASE_NR +  64] = { 0, PU|NF,          SEN(getppid),                   "getppid"               },
+[BASE_NR +  65] = { 0, PU|NF,          SEN(getpgrp),                   "getpgrp"               },
+[BASE_NR +  66] = { 0, 0,              SEN(setsid),                    "setsid"                },
+[BASE_NR +  67] = { 3, TS,             SEN(sigaction),                 "sigaction"             },
+[BASE_NR +  68] = { 0, TS,             SEN(sgetmask),                  "sgetmask"              },
+[BASE_NR +  69] = { 1, TS,             SEN(ssetmask),                  "ssetmask"              },
+[BASE_NR +  70] = { 2, TC,             SEN(setreuid),                  "setreuid"              },
+[BASE_NR +  71] = { 2, TC,             SEN(setregid),                  "setregid"              },
+[BASE_NR +  72] = { 1, TS,             SEN(sigsuspend),                "sigsuspend"            },
+[BASE_NR +  73] = { 1, TS,             SEN(sigpending),                "sigpending"            },
+[BASE_NR +  74] = { 2, 0,              SEN(sethostname),               "sethostname"           },
+[BASE_NR +  75] = { 2, 0,              SEN(setrlimit),                 "setrlimit"             },
+[BASE_NR +  76] = { 2, 0,              SEN(getrlimit),                 "getrlimit"             },
+[BASE_NR +  77] = { 2, 0,              SEN(getrusage),                 "getrusage"             },
+[BASE_NR +  78] = { 2, TCL,            SEN(gettimeofday),              "gettimeofday"          },
+[BASE_NR +  79] = { 2, TCL,            SEN(settimeofday),              "settimeofday"          },
+[BASE_NR +  80] = { 2, TC,             SEN(getgroups),                 "getgroups"             },
+[BASE_NR +  81] = { 2, TC,             SEN(setgroups),                 "setgroups"             },
+[BASE_NR +  82] = { 0, 0,              SEN(printargs),                 "reserved82"            },
+[BASE_NR +  83] = { 2, TF,             SEN(symlink),                   "symlink"               },
+[BASE_NR +  84] = { 2, TF|TLST|TSTA,   SEN(oldlstat),                  "oldlstat"              },
+[BASE_NR +  85] = { 3, TF,             SEN(readlink),                  "readlink"              },
+[BASE_NR +  86] = { 1, TF,             SEN(uselib),                    "uselib"                },
+[BASE_NR +  87] = { 2, TF,             SEN(swapon),                    "swapon"                },
+[BASE_NR +  88] = { 4, 0,              SEN(reboot),                    "reboot"                },
+[BASE_NR +  89] = { 3, TD,             SEN(readdir),                   "readdir"               },
+[BASE_NR +  90] = { 6, TD|TM|SI,       SEN(mmap),                      "mmap"                  },
+[BASE_NR +  91] = { 2, TM|SI,          SEN(munmap),                    "munmap"                },
+[BASE_NR +  92] = { 2, TF,             SEN(truncate),                  "truncate"              },
+[BASE_NR +  93] = { 2, TD,             SEN(ftruncate),                 "ftruncate"             },
+[BASE_NR +  94] = { 2, TD,             SEN(fchmod),                    "fchmod"                },
+[BASE_NR +  95] = { 3, TD,             SEN(fchown),                    "fchown"                },
+[BASE_NR +  96] = { 2, 0,              SEN(getpriority),               "getpriority"           },
+[BASE_NR +  97] = { 3, 0,              SEN(setpriority),               "setpriority"           },
+[BASE_NR +  98] = { 0, 0,              SEN(profil),                    "profil"                },
+[BASE_NR +  99] = { 2, TF|TSF|TSFA,    SEN(statfs),                    "statfs"                },
+[BASE_NR + 100] = { 2, TD|TFSF|TSFA,   SEN(fstatfs),                   "fstatfs"               },
+[BASE_NR + 101] = { 3, 0,              SEN(ioperm),                    "ioperm"                },
+[BASE_NR + 102] = { 2, TD|TSD,         SEN(socketcall),                "socketcall"            },
+[BASE_NR + 103] = { 3, 0,              SEN(syslog),                    "syslog"                },
+[BASE_NR + 104] = { 3, 0,              SEN(setitimer),                 "setitimer"             },
+[BASE_NR + 105] = { 2, 0,              SEN(getitimer),                 "getitimer"             },
+[BASE_NR + 106] = { 2, TF|TST|TSTA,    SEN(stat),                      "stat"                  },
+[BASE_NR + 107] = { 2, TF|TLST|TSTA,   SEN(lstat),                     "lstat"                 },
+[BASE_NR + 108] = { 2, TD|TFST|TSTA,   SEN(fstat),                     "fstat"                 },
+[BASE_NR + 109] = { 1, 0,              SEN(olduname),                  "olduname"              },
+[BASE_NR + 110] = { 1, 0,              SEN(iopl),                      "iopl"                  },
+[BASE_NR + 111] = { 0, 0,              SEN(vhangup),                   "vhangup"               },
+[BASE_NR + 112] = { 0, 0,              SEN(idle),                      "idle"                  },
+[BASE_NR + 113] = { 5, 0,              SEN(vm86old),                   "vm86"                  },
+[BASE_NR + 114] = { 4, TP,             SEN(wait4),                     "wait4"                 },
+[BASE_NR + 115] = { 1, TF,             SEN(swapoff),                   "swapoff"               },
+[BASE_NR + 116] = { 1, 0,              SEN(sysinfo),                   "sysinfo"               },
+[BASE_NR + 117] = { 6, TI|TSD,         SEN(ipc),                       "ipc"                   },
+[BASE_NR + 118] = { 1, TD,             SEN(fsync),                     "fsync"                 },
+[BASE_NR + 119] = { 0, TS,             SEN(sigreturn),                 "sigreturn"             },
+[BASE_NR + 120] = { 5, TP,             SEN(clone),                     "clone"                 },
+[BASE_NR + 121] = { 2, 0,              SEN(setdomainname),             "setdomainname"         },
+[BASE_NR + 122] = { 1, 0,              SEN(uname),                     "uname"                 },
+[BASE_NR + 123] = { 0, 0,              SEN(modify_ldt),                "modify_ldt"            },
+[BASE_NR + 124] = { 1, TCL,            SEN(adjtimex32),                "adjtimex"              },
+[BASE_NR + 125] = { 3, TM|SI,          SEN(mprotect),                  "mprotect"              },
+[BASE_NR + 126] = { 3, TS,             SEN(sigprocmask),               "sigprocmask"           },
+[BASE_NR + 127] = { 2, 0,              SEN(create_module),             "create_module"         },
+[BASE_NR + 128] = { 3, 0,              SEN(init_module),               "init_module"           },
+[BASE_NR + 129] = { 2, 0,              SEN(delete_module),             "delete_module"         },
+[BASE_NR + 130] = { 1, 0,              SEN(get_kernel_syms),           "get_kernel_syms"       },
+[BASE_NR + 131] = { 4, TF,             SEN(quotactl),                  "quotactl"              },
+[BASE_NR + 132] = { 1, 0,              SEN(getpgid),                   "getpgid"               },
+[BASE_NR + 133] = { 1, TD,             SEN(fchdir),                    "fchdir"                },
+[BASE_NR + 134] = { 2, 0,              SEN(bdflush),                   "bdflush"               },
+[BASE_NR + 135] = { 3, 0,              SEN(sysfs),                     "sysfs"                 },
+[BASE_NR + 136] = { 1, NF,             SEN(personality),               "personality"           },
+[BASE_NR + 137] = { 0, 0,              SEN(afs_syscall),               "afs_syscall"           },
+[BASE_NR + 138] = { 1, TC|NF,          SEN(setfsuid),                  "setfsuid"              },
+[BASE_NR + 139] = { 1, TC|NF,          SEN(setfsgid),                  "setfsgid"              },
+[BASE_NR + 140] = { 5, TD,             SEN(llseek),                    "_llseek"               },
+[BASE_NR + 141] = { 3, TD,             SEN(getdents),                  "getdents"              },
+[BASE_NR + 142] = { 5, TD,             SEN(select),                    "_newselect"            },
+[BASE_NR + 143] = { 2, TD,             SEN(flock),                     "flock"                 },
+[BASE_NR + 144] = { 3, TM,             SEN(msync),                     "msync"                 },
+[BASE_NR + 145] = { 3, TD,             SEN(readv),                     "readv"                 },
+[BASE_NR + 146] = { 3, TD,             SEN(writev),                    "writev"                },
+[BASE_NR + 147] = { 3, 0,              SEN(printargs),                 "cacheflush"            },
+[BASE_NR + 148] = { 3, 0,              SEN(printargs),                 "cachectl"              },
+[BASE_NR + 149] = { 4, 0,              SEN(sysmips),                   "sysmips"               },
+[BASE_NR + 150] = { 0, 0,              SEN(setup),                     "setup"                 },
+[BASE_NR + 151] = { 1, 0,              SEN(getsid),                    "getsid"                },
+[BASE_NR + 152] = { 1, TD,             SEN(fdatasync),                 "fdatasync"             },
+[BASE_NR + 153] = { 1, 0,              SEN(sysctl),                    "_sysctl"               },
+[BASE_NR + 154] = { 2, TM,             SEN(mlock),                     "mlock"                 },
+[BASE_NR + 155] = { 2, TM,             SEN(munlock),                   "munlock"               },
+[BASE_NR + 156] = { 1, TM,             SEN(mlockall),                  "mlockall"              },
+[BASE_NR + 157] = { 0, TM,             SEN(munlockall),                "munlockall"            },
+[BASE_NR + 158] = { 2, 0,              SEN(sched_setparam),            "sched_setparam"        },
+[BASE_NR + 159] = { 2, 0,              SEN(sched_getparam),            "sched_getparam"        },
+[BASE_NR + 160] = { 3, 0,              SEN(sched_setscheduler),        "sched_setscheduler"    },
+[BASE_NR + 161] = { 1, 0,              SEN(sched_getscheduler),        "sched_getscheduler"    },
+[BASE_NR + 162] = { 0, 0,              SEN(sched_yield),               "sched_yield"           },
+[BASE_NR + 163] = { 1, 0,              SEN(sched_get_priority_max),    "sched_get_priority_max"},
+[BASE_NR + 164] = { 1, 0,              SEN(sched_get_priority_min),    "sched_get_priority_min"},
+[BASE_NR + 165] = { 2, 0,              SEN(sched_rr_get_interval_time32),"sched_rr_get_interval"},
+[BASE_NR + 166] = { 2, 0,              SEN(nanosleep_time32),          "nanosleep"             },
+[BASE_NR + 167] = { 5, TM|SI,          SEN(mremap),                    "mremap"                },
+[BASE_NR + 168] = { 3, TN,             SEN(accept),                    "accept"                },
+[BASE_NR + 169] = { 3, TN,             SEN(bind),                      "bind"                  },
+[BASE_NR + 170] = { 3, TN,             SEN(connect),                   "connect"               },
+[BASE_NR + 171] = { 3, TN,             SEN(getpeername),               "getpeername"           },
+[BASE_NR + 172] = { 3, TN,             SEN(getsockname),               "getsockname"           },
+[BASE_NR + 173] = { 5, TN,             SEN(getsockopt),                "getsockopt"            },
+[BASE_NR + 174] = { 2, TN,             SEN(listen),                    "listen"                },
+[BASE_NR + 175] = { 4, TN,             SEN(recv),                      "recv"                  },
+[BASE_NR + 176] = { 6, TN,             SEN(recvfrom),                  "recvfrom"              },
+[BASE_NR + 177] = { 3, TN,             SEN(recvmsg),                   "recvmsg"               },
+[BASE_NR + 178] = { 4, TN,             SEN(send),                      "send"                  },
+[BASE_NR + 179] = { 3, TN,             SEN(sendmsg),                   "sendmsg"               },
+[BASE_NR + 180] = { 6, TN,             SEN(sendto),                    "sendto"                },
+[BASE_NR + 181] = { 5, TN,             SEN(setsockopt),                "setsockopt"            },
+[BASE_NR + 182] = { 2, TN,             SEN(shutdown),                  "shutdown"              },
+[BASE_NR + 183] = { 3, TN,             SEN(socket),                    "socket"                },
+[BASE_NR + 184] = { 4, TN,             SEN(socketpair),                "socketpair"            },
+[BASE_NR + 185] = { 3, TC,             SEN(setresuid),                 "setresuid"             },
+[BASE_NR + 186] = { 3, TC,             SEN(getresuid),                 "getresuid"             },
+[BASE_NR + 187] = { 5, 0,              SEN(query_module),              "query_module"          },
+[BASE_NR + 188] = { 3, TD,             SEN(poll_time32),               "poll"                  },
+[BASE_NR + 189] = { 3, 0,              SEN(nfsservctl),                "nfsservctl"            },
+[BASE_NR + 190] = { 3, TC,             SEN(setresgid),                 "setresgid"             },
+[BASE_NR + 191] = { 3, TC,             SEN(getresgid),                 "getresgid"             },
+[BASE_NR + 192] = { 5, TC,             SEN(prctl),                     "prctl"                 },
+[BASE_NR + 193] = { 0, TS,             SEN(rt_sigreturn),              "rt_sigreturn"          },
+[BASE_NR + 194] = { 4, TS,             SEN(rt_sigaction),              "rt_sigaction"          },
+[BASE_NR + 195] = { 4, TS,             SEN(rt_sigprocmask),            "rt_sigprocmask"        },
+[BASE_NR + 196] = { 2, TS,             SEN(rt_sigpending),             "rt_sigpending"         },
+[BASE_NR + 197] = { 4, TS,             SEN(rt_sigtimedwait_time32),    "rt_sigtimedwait"       },
+[BASE_NR + 198] = { 3, TS|TP,          SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
+[BASE_NR + 199] = { 2, TS,             SEN(rt_sigsuspend),             "rt_sigsuspend"         },
+[BASE_NR + 200] = { 6, TD,             SEN(pread),                     "pread64"               },
+[BASE_NR + 201] = { 6, TD,             SEN(pwrite),                    "pwrite64"              },
+[BASE_NR + 202] = { 3, TF,             SEN(chown),                     "chown"                 },
+[BASE_NR + 203] = { 2, TF,             SEN(getcwd),                    "getcwd"                },
+[BASE_NR + 204] = { 2, TC,             SEN(capget),                    "capget"                },
+[BASE_NR + 205] = { 2, TC,             SEN(capset),                    "capset"                },
+[BASE_NR + 206] = { 2, TS,             SEN(sigaltstack),               "sigaltstack"           },
+[BASE_NR + 207] = { 4, TD|TN,          SEN(sendfile),                  "sendfile"              },
+[BASE_NR + 208] = { 5, TN,             SEN(getpmsg),                   "getpmsg"               },
+[BASE_NR + 209] = { 5, TN,             SEN(putpmsg),                   "putpmsg"               },
+[BASE_NR + 210] = { 6, TD|TM|SI,       SEN(mmap_4koff),                "mmap2"                 },
+[BASE_NR + 211] = { 4, TF,             SEN(truncate64),                "truncate64"            },
+[BASE_NR + 212] = { 4, TD,             SEN(ftruncate64),               "ftruncate64"           },
+[BASE_NR + 213] = { 2, TF|TST|TSTA,    SEN(stat64),                    "stat64"                },
+[BASE_NR + 214] = { 2, TF|TLST|TSTA,   SEN(lstat64),                   "lstat64"               },
+[BASE_NR + 215] = { 2, TD|TFST|TSTA,   SEN(fstat64),                   "fstat64"               },
+[BASE_NR + 216] = { 2, TF,             SEN(pivotroot),                 "pivot_root"            },
+[BASE_NR + 217] = { 3, TM,             SEN(mincore),                   "mincore"               },
+[BASE_NR + 218] = { 3, TM,             SEN(madvise),                   "madvise"               },
+[BASE_NR + 219] = { 3, TD,             SEN(getdents64),                "getdents64"            },
+[BASE_NR + 220] = { 3, TD,             SEN(fcntl64),                   "fcntl64"               },
+[BASE_NR + 221] = { 0, 0,              SEN(printargs),                 "reserved221"           },
+[BASE_NR + 222] = { 0, PU|NF,          SEN(gettid),                    "gettid"                },
+[BASE_NR + 223] = { 5, TD,             SEN(readahead),                 "readahead"             },
+[BASE_NR + 224] = { 5, TF,             SEN(setxattr),                  "setxattr"              },
+[BASE_NR + 225] = { 5, TF,             SEN(setxattr),                  "lsetxattr"             },
+[BASE_NR + 226] = { 5, TD,             SEN(fsetxattr),                 "fsetxattr"             },
+[BASE_NR + 227] = { 4, TF,             SEN(getxattr),                  "getxattr"              },
+[BASE_NR + 228] = { 4, TF,             SEN(getxattr),                  "lgetxattr"             },
+[BASE_NR + 229] = { 4, TD,             SEN(fgetxattr),                 "fgetxattr"             },
+[BASE_NR + 230] = { 3, TF,             SEN(listxattr),                 "listxattr"             },
+[BASE_NR + 231] = { 3, TF,             SEN(listxattr),                 "llistxattr"            },
+[BASE_NR + 232] = { 3, TD,             SEN(flistxattr),                "flistxattr"            },
+[BASE_NR + 233] = { 2, TF,             SEN(removexattr),               "removexattr"           },
+[BASE_NR + 234] = { 2, TF,             SEN(removexattr),               "lremovexattr"          },
+[BASE_NR + 235] = { 2, TD,             SEN(fremovexattr),              "fremovexattr"          },
+[BASE_NR + 236] = { 2, TS|TP,          SEN(tkill),                     "tkill"                 },
+[BASE_NR + 237] = { 4, TD|TN,          SEN(sendfile64),                "sendfile64"            },
+[BASE_NR + 238] = { 6, 0,              SEN(futex_time32),              "futex"                 },
+[BASE_NR + 239] = { 3, 0,              SEN(sched_setaffinity),         "sched_setaffinity"     },
+[BASE_NR + 240] = { 3, 0,              SEN(sched_getaffinity),         "sched_getaffinity"     },
+[BASE_NR + 241] = { 2, TM,             SEN(io_setup),                  "io_setup"              },
+[BASE_NR + 242] = { 1, TM,             SEN(io_destroy),                "io_destroy"            },
+[BASE_NR + 243] = { 5, 0,              SEN(io_getevents_time32),       "io_getevents"          },
+[BASE_NR + 244] = { 3, 0,              SEN(io_submit),                 "io_submit"             },
+[BASE_NR + 245] = { 3, 0,              SEN(io_cancel),                 "io_cancel"             },
+[BASE_NR + 246] = { 1, TP|SE,          SEN(exit),                      "exit_group"            },
+[BASE_NR + 247] = { 4, 0,              SEN(lookup_dcookie),            "lookup_dcookie"        },
+[BASE_NR + 248] = { 1, TD,             SEN(epoll_create),              "epoll_create"          },
+[BASE_NR + 249] = { 4, TD,             SEN(epoll_ctl),                 "epoll_ctl"             },
+[BASE_NR + 250] = { 4, TD,             SEN(epoll_wait),                "epoll_wait"            },
+[BASE_NR + 251] = { 5, TM|SI,          SEN(remap_file_pages),          "remap_file_pages"      },
+[BASE_NR + 252] = { 1, 0,              SEN(set_tid_address),           "set_tid_address"       },
+[BASE_NR + 253] = { 0, 0,              SEN(restart_syscall),           "restart_syscall"       },
+[BASE_NR + 254] = { 7, TD,             SEN(fadvise64_64),              "fadvise64"             },
+[BASE_NR + 255] = { 3, TF|TSF|TSFA,    SEN(statfs64),                  "statfs64"              },
+[BASE_NR + 256] = { 3, TD|TFSF|TSFA,   SEN(fstatfs64),                 "fstatfs64"             },
+[BASE_NR + 257] = { 3, 0,              SEN(timer_create),              "timer_create"          },
+[BASE_NR + 258] = { 4, 0,              SEN(timer_settime32),           "timer_settime"         },
+[BASE_NR + 259] = { 2, 0,              SEN(timer_gettime32),           "timer_gettime"         },
+[BASE_NR + 260] = { 1, 0,              SEN(timer_getoverrun),          "timer_getoverrun"      },
+[BASE_NR + 261] = { 1, 0,              SEN(timer_delete),              "timer_delete"          },
+[BASE_NR + 262] = { 2, TCL,            SEN(clock_settime32),           "clock_settime"         },
+[BASE_NR + 263] = { 2, TCL,            SEN(clock_gettime32),           "clock_gettime"         },
+[BASE_NR + 264] = { 2, TCL,            SEN(clock_getres_time32),       "clock_getres"          },
+[BASE_NR + 265] = { 4, 0,              SEN(clock_nanosleep_time32),    "clock_nanosleep"       },
+[BASE_NR + 266] = { 3, TS|TP,          SEN(tgkill),                    "tgkill"                },
+[BASE_NR + 267] = { 2, TF,             SEN(utimes),                    "utimes"                },
+[BASE_NR + 268] = { 6, TM,             SEN(mbind),                     "mbind"                 },
+[BASE_NR + 269] = { 5, TM,             SEN(get_mempolicy),             "get_mempolicy"         },
+[BASE_NR + 270] = { 3, TM,             SEN(set_mempolicy),             "set_mempolicy"         },
+[BASE_NR + 271] = { 4, TD,             SEN(mq_open),                   "mq_open"               },
+[BASE_NR + 272] = { 1, 0,              SEN(mq_unlink),                 "mq_unlink"             },
+[BASE_NR + 273] = { 5, TD,             SEN(mq_timedsend_time32),       "mq_timedsend"          },
+[BASE_NR + 274] = { 5, TD,             SEN(mq_timedreceive_time32),    "mq_timedreceive"       },
+[BASE_NR + 275] = { 2, TD,             SEN(mq_notify),                 "mq_notify"             },
+[BASE_NR + 276] = { 3, TD,             SEN(mq_getsetattr),             "mq_getsetattr"         },
+[BASE_NR + 277] = { 5, 0,              SEN(vserver),                   "vserver"               },
+[BASE_NR + 278] = { 5, TP,             SEN(waitid),                    "waitid"                },
+[BASE_NR + 279] = { },
+[BASE_NR + 280] = { 5, 0,              SEN(add_key),                   "add_key"               },
+[BASE_NR + 281] = { 4, 0,              SEN(request_key),               "request_key"           },
+[BASE_NR + 282] = { 5, 0,              SEN(keyctl),                    "keyctl"                },
+[BASE_NR + 283] = { 1, 0,              SEN(set_thread_area),           "set_thread_area"       },
+[BASE_NR + 284] = { 0, TD,             SEN(inotify_init),              "inotify_init"          },
+[BASE_NR + 285] = { 3, TD|TF,          SEN(inotify_add_watch),         "inotify_add_watch"     },
+[BASE_NR + 286] = { 2, TD,             SEN(inotify_rm_watch),          "inotify_rm_watch"      },
+[BASE_NR + 287] = { 4, TM,             SEN(migrate_pages),             "migrate_pages"         },
+[BASE_NR + 288] = { 4, TD|TF,          SEN(openat),                    "openat"                },
+[BASE_NR + 289] = { 3, TD|TF,          SEN(mkdirat),                   "mkdirat"               },
+[BASE_NR + 290] = { 4, TD|TF,          SEN(mknodat),                   "mknodat"               },
+[BASE_NR + 291] = { 5, TD|TF,          SEN(fchownat),                  "fchownat"              },
+[BASE_NR + 292] = { 3, TD|TF,          SEN(futimesat),                 "futimesat"             },
+[BASE_NR + 293] = { 4, TD|TF|TFST|TSTA,SEN(fstatat64),                 "fstatat64"             },
+[BASE_NR + 294] = { 3, TD|TF,          SEN(unlinkat),                  "unlinkat"              },
+[BASE_NR + 295] = { 4, TD|TF,          SEN(renameat),                  "renameat"              },
+[BASE_NR + 296] = { 5, TD|TF,          SEN(linkat),                    "linkat"                },
+[BASE_NR + 297] = { 3, TD|TF,          SEN(symlinkat),                 "symlinkat"             },
+[BASE_NR + 298] = { 4, TD|TF,          SEN(readlinkat),                "readlinkat"            },
+[BASE_NR + 299] = { 3, TD|TF,          SEN(fchmodat),                  "fchmodat"              },
+[BASE_NR + 300] = { 3, TD|TF,          SEN(faccessat),                 "faccessat"             },
+[BASE_NR + 301] = { 6, TD,             SEN(pselect6_time32),           "pselect6"              },
+[BASE_NR + 302] = { 5, TD,             SEN(ppoll_time32),              "ppoll"                 },
+[BASE_NR + 303] = { 1, 0,              SEN(unshare),                   "unshare"               },
+[BASE_NR + 304] = { 6, TD,             SEN(splice),                    "splice"                },
+[BASE_NR + 305] = { 7, TD,             SEN(sync_file_range),           "sync_file_range"       },
+[BASE_NR + 306] = { 4, TD,             SEN(tee),                       "tee"                   },
+[BASE_NR + 307] = { 4, TD,             SEN(vmsplice),                  "vmsplice"              },
+[BASE_NR + 308] = { 6, TM,             SEN(move_pages),                "move_pages"            },
+[BASE_NR + 309] = { 2, 0,              SEN(set_robust_list),           "set_robust_list"       },
+[BASE_NR + 310] = { 3, 0,              SEN(get_robust_list),           "get_robust_list"       },
+[BASE_NR + 311] = { 4, 0,              SEN(kexec_load),                "kexec_load"            },
+[BASE_NR + 312] = { 3, 0,              SEN(getcpu),                    "getcpu"                },
+[BASE_NR + 313] = { 6, TD,             SEN(epoll_pwait),               "epoll_pwait"           },
+[BASE_NR + 314] = { 3, 0,              SEN(ioprio_set),                "ioprio_set"            },
+[BASE_NR + 315] = { 2, 0,              SEN(ioprio_get),                "ioprio_get"            },
+[BASE_NR + 316] = { 4, TD|TF,          SEN(utimensat_time32),          "utimensat"             },
+[BASE_NR + 317] = { 3, TD|TS,          SEN(signalfd),                  "signalfd"              },
+[BASE_NR + 318] = { 4, TD,             SEN(timerfd),                   "timerfd"               },
+[BASE_NR + 319] = { 1, TD,             SEN(eventfd),                   "eventfd"               },
+[BASE_NR + 320] = { 6, TD,             SEN(fallocate),                 "fallocate"             },
+[BASE_NR + 321] = { 2, TD,             SEN(timerfd_create),            "timerfd_create"        },
+[BASE_NR + 322] = { 2, TD,             SEN(timerfd_gettime32),         "timerfd_gettime"       },
+[BASE_NR + 323] = { 4, TD,             SEN(timerfd_settime32),         "timerfd_settime"       },
+[BASE_NR + 324] = { 4, TD|TS,          SEN(signalfd4),                 "signalfd4"             },
+[BASE_NR + 325] = { 2, TD,             SEN(eventfd2),                  "eventfd2"              },
+[BASE_NR + 326] = { 1, TD,             SEN(epoll_create1),             "epoll_create1"         },
+[BASE_NR + 327] = { 3, TD,             SEN(dup3),                      "dup3"                  },
+[BASE_NR + 328] = { 2, TD,             SEN(pipe2),                     "pipe2"                 },
+[BASE_NR + 329] = { 1, TD,             SEN(inotify_init1),             "inotify_init1"         },
+[BASE_NR + 330] = { 5, TD,             SEN(preadv),                    "preadv"                },
+[BASE_NR + 331] = { 5, TD,             SEN(pwritev),                   "pwritev"               },
+[BASE_NR + 332] = { 4, TP|TS,          SEN(rt_tgsigqueueinfo),         "rt_tgsigqueueinfo"     },
+[BASE_NR + 333] = { 5, TD,             SEN(perf_event_open),           "perf_event_open"       },
+[BASE_NR + 334] = { 4, TN,             SEN(accept4),                   "accept4"               },
+[BASE_NR + 335] = { 5, TN,             SEN(recvmmsg_time32),           "recvmmsg"              },
+[BASE_NR + 336] = { 2, TD,             SEN(fanotify_init),             "fanotify_init"         },
+[BASE_NR + 337] = { 6, TD|TF,          SEN(fanotify_mark),             "fanotify_mark"         },
+[BASE_NR + 338] = { 4, 0,              SEN(prlimit64),                 "prlimit64"             },
+[BASE_NR + 339] = { 5, TD|TF,          SEN(name_to_handle_at),         "name_to_handle_at"     },
+[BASE_NR + 340] = { 3, TD,             SEN(open_by_handle_at),         "open_by_handle_at"     },
+[BASE_NR + 341] = { 2, TCL,            SEN(clock_adjtime32),           "clock_adjtime"         },
+[BASE_NR + 342] = { 1, TD,             SEN(syncfs),                    "syncfs"                },
+[BASE_NR + 343] = { 4, TN,             SEN(sendmmsg),                  "sendmmsg"              },
+[BASE_NR + 344] = { 2, TD,             SEN(setns),                     "setns"                 },
+[BASE_NR + 345] = { 6, 0,              SEN(process_vm_readv),          "process_vm_readv"      },
+[BASE_NR + 346] = { 6, 0,              SEN(process_vm_writev),         "process_vm_writev"     },
+[BASE_NR + 347] = { 5, 0,              SEN(kcmp),                      "kcmp"                  },
+[BASE_NR + 348] = { 3, TD,             SEN(finit_module),              "finit_module"          },
+[BASE_NR + 349] = { 3, 0,              SEN(sched_setattr),             "sched_setattr"         },
+[BASE_NR + 350] = { 4, 0,              SEN(sched_getattr),             "sched_getattr"         },
+[BASE_NR + 351] = { 5, TD|TF,          SEN(renameat2),                 "renameat2"             },
+[BASE_NR + 352] = { 3, 0,              SEN(seccomp),                   "seccomp"               },
+[BASE_NR + 353] = { 3, 0,              SEN(getrandom),                 "getrandom"             },
+[BASE_NR + 354] = { 2, TD,             SEN(memfd_create),              "memfd_create"          },
+[BASE_NR + 355] = { 3, TD,             SEN(bpf),                       "bpf"                   },
+[BASE_NR + 356] = { 5, TD|TF|TP|TSD|SE|SI,     SEN(execveat),                  "execveat"              },
+[BASE_NR + 357] = { 1, TD,             SEN(userfaultfd),               "userfaultfd"           },
+[BASE_NR + 358] = { 2, 0,              SEN(membarrier),                "membarrier"            },
+[BASE_NR + 359] = { 3, TM,             SEN(mlock2),                    "mlock2"                },
+[BASE_NR + 360] = { 6, TD,             SEN(copy_file_range),           "copy_file_range"       },
+[BASE_NR + 361] = { 6, TD,             SEN(preadv2),                   "preadv2"               },
+[BASE_NR + 362] = { 6, TD,             SEN(pwritev2),                  "pwritev2"              },
+[BASE_NR + 363] = { 4, TM|SI,          SEN(pkey_mprotect),             "pkey_mprotect"         },
+[BASE_NR + 364] = { 2, 0,              SEN(pkey_alloc),                "pkey_alloc"            },
+[BASE_NR + 365] = { 1, 0,              SEN(pkey_free),                 "pkey_free"             },
+[BASE_NR + 366] = { 5, TD|TF|TFST|TSTA,SEN(statx),                     "statx"                 },
+[BASE_NR + 367] = { 4, 0,              SEN(rseq),                      "rseq"                  },
+[BASE_NR + 368] = { 6, 0,              SEN(io_pgetevents_time32),      "io_pgetevents"         },
 /* room for arch specific calls */
-[4393] = { 3,  TI,             SEN(semget),                    "semget"                },
-[4394] = { 4,  TI,             SEN(semctl),                    "semctl"                },
-[4395] = { 3,  TI,             SEN(shmget),                    "shmget"                },
-[4396] = { 3,  TI,             SEN(shmctl),                    "shmctl"                },
-[4397] = { 3,  TI|TM|SI,       SEN(shmat),                     "shmat"                 },
-[4398] = { 1,  TI|TM|SI,       SEN(shmdt),                     "shmdt"                 },
-[4399] = { 2,  TI,             SEN(msgget),                    "msgget"                },
-[4400] = { 4,  TI,             SEN(msgsnd),                    "msgsnd"                },
-[4401] = { 5,  TI,             SEN(msgrcv),                    "msgrcv"                },
-[4402] = { 3,  TI,             SEN(msgctl),                    "msgctl"                },
-[4403] = { 2,  0,              SEN(clock_gettime64),           "clock_gettime64"       },
-[4404] = { 2,  0,              SEN(clock_settime64),           "clock_settime64"       },
-[4405] = { 2,  0,              SEN(clock_adjtime64),           "clock_adjtime64"       },
-[4406] = { 2,  0,              SEN(clock_getres_time64),       "clock_getres_time64"   },
-[4407] = { 4,  0,              SEN(clock_nanosleep_time64),    "clock_nanosleep_time64"},
-[4408] = { 2,  0,              SEN(timer_gettime64),           "timer_gettime64"       },
-[4409] = { 4,  0,              SEN(timer_settime64),           "timer_settime64"       },
-[4410] = { 2,  TD,             SEN(timerfd_gettime64),         "timerfd_gettime64"     },
-[4411] = { 4,  TD,             SEN(timerfd_settime64),         "timerfd_settime64"     },
-[4412] = { 4,  TD|TF,          SEN(utimensat_time64),          "utimensat_time64"      },
-[4413] = { 6,  TD,             SEN(pselect6_time64),           "pselect6_time64"       },
-[4414] = { 5,  TD,             SEN(ppoll_time64),              "ppoll_time64"          },
-[4416] = { 6,  0,              SEN(io_pgetevents_time64),      "io_pgetevents_time64"  },
-[4417] = { 5,  TN,             SEN(recvmmsg_time64),           "recvmmsg_time64"       },
-[4418] = { 5,  TD,             SEN(mq_timedsend_time64),       "mq_timedsend_time64"   },
-[4419] = { 5,  TD,             SEN(mq_timedreceive_time64),    "mq_timedreceive_time64"},
-[4420] = { 4,  TI,             SEN(semtimedop_time64),         "semtimedop_time64"     },
-[4421] = { 4,  TS,             SEN(rt_sigtimedwait_time64),    "rt_sigtimedwait_time64"},
-[4422] = { 6,  0,              SEN(futex_time64),              "futex_time64"          },
-[4423] = { 2,  0,              SEN(sched_rr_get_interval_time64),      "sched_rr_get_interval_time64"  },
-[4424] = { 4,  TD|TS,          SEN(pidfd_send_signal),         "pidfd_send_signal"     },
-[4425] = { 2,  TD,             SEN(io_uring_setup),            "io_uring_setup"        },
-[4426] = { 6,  TD|TS,          SEN(io_uring_enter),            "io_uring_enter"        },
-[4427] = { 4,  TD|TM,          SEN(io_uring_register),         "io_uring_register"     },
+[BASE_NR + 393] = { 3, TI,             SEN(semget),                    "semget"                },
+[BASE_NR + 394] = { 4, TI,             SEN(semctl),                    "semctl"                },
+[BASE_NR + 395] = { 3, TI,             SEN(shmget),                    "shmget"                },
+[BASE_NR + 396] = { 3, TI,             SEN(shmctl),                    "shmctl"                },
+[BASE_NR + 397] = { 3, TI|TM|SI,       SEN(shmat),                     "shmat"                 },
+[BASE_NR + 398] = { 1, TI|TM|SI,       SEN(shmdt),                     "shmdt"                 },
+[BASE_NR + 399] = { 2, TI,             SEN(msgget),                    "msgget"                },
+[BASE_NR + 400] = { 4, TI,             SEN(msgsnd),                    "msgsnd"                },
+[BASE_NR + 401] = { 5, TI,             SEN(msgrcv),                    "msgrcv"                },
+[BASE_NR + 402] = { 3, TI,             SEN(msgctl),                    "msgctl"                },
+# include "syscallent-common-32.h"
+# include "syscallent-common.h"
 
 # define SYS_socket_subcall      4500
 # include "subcall32.h"
 
 #else
 
+# define SYSCALL_NAME_PREFIX "o32:"
 # include "syscallent-o32-stub.h"
+# include "syscallent-common-32-stub.h"
+# include "syscallent-common-stub.h"
+# undef SYSCALL_NAME_PREFIX
 
 #endif
+#undef BASE_NR
index 64f226b16c4c95edb625dba09fc2412ec4e07dae..ae1b196fae7edc438cef53cb31c7c1effcb02114 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -8,6 +8,8 @@
 static int
 arch_set_scno(struct tcb *tcp, kernel_ulong_t scno)
 {
+       if (ptrace_syscall_info_is_valid() && get_regs(tcp) < 0)
+               return -1;
        nios2_regs.regs[2] = scno;
        return set_regs(tcp->pid);
 }
index df2c5ad8e0c8d9c18a549f6a7d6ebced6302848c..853364acd738b794c38331630aafb013562aefb3 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -8,6 +8,8 @@
 static int
 arch_set_scno(struct tcb *tcp, kernel_ulong_t scno)
 {
+       if (ptrace_syscall_info_is_valid() && get_regs(tcp) < 0)
+               return -1;
        or1k_regs.gpr[11] = scno;
        return set_regs(tcp->pid);
 }
index 190887d40ad52721dffadf18c7d70adc8e3e9599..c52552429556da5d748d5633a32f7ed29393b361 100644 (file)
@@ -89,6 +89,7 @@
 { "asm/ps3fb.h", "PS3FB_IOCTL_ON", _IOC_NONE, 0x7204, 0x00 },
 { "asm/ps3fb.h", "PS3FB_IOCTL_SCREENINFO", _IOC_READ, 0x7203, 0x04 },
 { "asm/ps3fb.h", "PS3FB_IOCTL_SETMODE", _IOC_WRITE, 0x7201, 0x04 },
+{ "asm/vas-api.h", "VAS_TX_WIN_OPEN", _IOC_WRITE, 0x7620, 0x40 },
 { "linux/kvm.h", "KVM_ALLOCATE_RMA", _IOC_READ, 0xaea9, 0x08 },
 { "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_PPC_RESIZE_HPT_COMMIT", _IOC_READ, 0xaeae, 0x10 },
 { "linux/kvm.h", "KVM_PPC_RESIZE_HPT_PREPARE", _IOC_READ, 0xaead, 0x10 },
 { "linux/kvm.h", "KVM_PPC_RTAS_DEFINE_TOKEN", _IOC_WRITE, 0xaeac, 0x80 },
+{ "linux/kvm.h", "KVM_PPC_SVM_OFF", _IOC_NONE, 0xaeb3, 0x00 },
 { "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 },
index 9b8a6f2fd39e19e5335defc2ab406761724a2113..90dae8b6d471e261fa60a2711382abb3a30ae12a 100644 (file)
@@ -1,24 +1,35 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
  */
 
+static int
+arch_set_r3_ccr(struct tcb *tcp, const unsigned long r3,
+               const unsigned long ccr_set, const unsigned long ccr_clear)
+{
+       if (ptrace_syscall_info_is_valid() &&
+           upeek(tcp, sizeof(long) * PT_CCR, &ppc_regs.ccr))
+                return -1;
+       const unsigned long old_ccr = ppc_regs.ccr;
+       ppc_regs.gpr[3] = r3;
+       ppc_regs.ccr |= ccr_set;
+       ppc_regs.ccr &= ~ccr_clear;
+       if (ppc_regs.ccr != old_ccr &&
+           upoke(tcp, sizeof(long) * PT_CCR, ppc_regs.ccr))
+               return -1;
+       return upoke(tcp, sizeof(long) * (PT_R0 + 3), ppc_regs.gpr[3]);
+}
+
 static int
 arch_set_error(struct tcb *tcp)
 {
-       ppc_regs.gpr[3] = tcp->u_error;
-       ppc_regs.ccr |= 0x10000000;
-       return upoke(tcp, sizeof(long) * PT_CCR, ppc_regs.ccr) ||
-              upoke(tcp, sizeof(long) * (PT_R0 + 3), ppc_regs.gpr[3]);
+       return arch_set_r3_ccr(tcp, tcp->u_error, 0x10000000, 0);
 }
 
 static int
 arch_set_success(struct tcb *tcp)
 {
-       ppc_regs.gpr[3] = tcp->u_rval;
-       ppc_regs.ccr &= ~0x10000000;
-       return upoke(tcp, sizeof(long) * PT_CCR, ppc_regs.ccr) ||
-              upoke(tcp, sizeof(long) * (PT_R0 + 3), ppc_regs.gpr[3]);
+       return arch_set_r3_ccr(tcp, tcp->u_rval, 0, 0x10000000);
 }
index 4e184646b7b4fe9a7f205de168f9ecb8fd5a8045..db4dd2b54fbffd9974dbbd8f1e99c1a1f710e6dc 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 1993 Branko Lankester <branko@hacktic.nl>
  * Copyright (c) 1993, 1994, 1995 Rick Sladkey <jrs@world.std.com>
- * Copyright (c) 1995-2019 The strace developers.
+ * Copyright (c) 1995-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -18,9 +18,9 @@
 [  8] = { 2,   TD|TF,          SEN(creat),                     "creat"                 },
 [  9] = { 2,   TF,             SEN(link),                      "link"                  },
 [ 10] = { 1,   TF,             SEN(unlink),                    "unlink"                },
-[ 11] = { 3,   TF|TP|SE|SI,    SEN(execve),                    "execve"                },
+[ 11] = { 3,   TF|TP|TSD|SE|SI,        SEN(execve),                    "execve"                },
 [ 12] = { 1,   TF,             SEN(chdir),                     "chdir"                 },
-[ 13] = { 1,   0,              SEN(time),                      "time"                  },
+[ 13] = { 1,   TCL,            SEN(time),                      "time"                  },
 [ 14] = { 3,   TF,             SEN(mknod),                     "mknod"                 },
 [ 15] = { 2,   TF,             SEN(chmod),                     "chmod"                 },
 [ 16] = { 3,   TF,             SEN(chown),                     "lchown"                },
@@ -30,8 +30,8 @@
 [ 20] = { 0,   PU|NF,          SEN(getpid),                    "getpid"                },
 [ 21] = { 5,   TF,             SEN(mount),                     "mount"                 },
 [ 22] = { 1,   TF,             SEN(umount),                    "umount"                },
-[ 23] = { 1,   0,              SEN(setuid),                    "setuid"                },
-[ 24] = { 0,   PU|NF,          SEN(getuid),                    "getuid"                },
+[ 23] = { 1,   TC,             SEN(setuid),                    "setuid"                },
+[ 24] = { 0,   TC|PU|NF,       SEN(getuid),                    "getuid"                },
 [ 25] = { 1,   0,              SEN(stime),                     "stime"                 },
 [ 26] = { 4,   0,              SEN(ptrace),                    "ptrace"                },
 [ 27] = { 1,   0,              SEN(alarm),                     "alarm"                 },
@@ -44,7 +44,7 @@
 [ 34] = { 1,   0,              SEN(nice),                      "nice"                  },
 [ 35] = { 0,   0,              SEN(ftime),                     "ftime"                 },
 [ 36] = { 0,   0,              SEN(sync),                      "sync"                  },
-[ 37] = { 2,   TS,             SEN(kill),                      "kill"                  },
+[ 37] = { 2,   TS|TP,          SEN(kill),                      "kill"                  },
 [ 38] = { 2,   TF,             SEN(rename),                    "rename"                },
 [ 39] = { 2,   TF,             SEN(mkdir),                     "mkdir"                 },
 [ 40] = { 1,   TF,             SEN(rmdir),                     "rmdir"                 },
 [ 43] = { 1,   0,              SEN(times),                     "times"                 },
 [ 44] = { 0,   0,              SEN(prof),                      "prof"                  },
 [ 45] = { 1,   TM|SI,          SEN(brk),                       "brk"                   },
-[ 46] = { 1,   0,              SEN(setgid),                    "setgid"                },
-[ 47] = { 0,   PU|NF,          SEN(getgid),                    "getgid"                },
+[ 46] = { 1,   TC,             SEN(setgid),                    "setgid"                },
+[ 47] = { 0,   TC|PU|NF,       SEN(getgid),                    "getgid"                },
 [ 48] = { 2,   TS,             SEN(signal),                    "signal"                },
-[ 49] = { 0,   PU|NF,          SEN(geteuid),                   "geteuid"               },
-[ 50] = { 0,   PU|NF,          SEN(getegid),                   "getegid"               },
+[ 49] = { 0,   TC|PU|NF,       SEN(geteuid),                   "geteuid"               },
+[ 50] = { 0,   TC|PU|NF,       SEN(getegid),                   "getegid"               },
 [ 51] = { 1,   TF,             SEN(acct),                      "acct"                  },
 [ 52] = { 2,   TF,             SEN(umount2),                   "umount2"               },
 [ 53] = { 0,   0,              SEN(lock),                      "lock"                  },
 [ 67] = { 3,   TS,             SEN(sigaction),                 "sigaction"             },
 [ 68] = { 0,   TS,             SEN(sgetmask),                  "sgetmask"              },
 [ 69] = { 1,   TS,             SEN(ssetmask),                  "ssetmask"              },
-[ 70] = { 2,   0,              SEN(setreuid),                  "setreuid"              },
-[ 71] = { 2,   0,              SEN(setregid),                  "setregid"              },
+[ 70] = { 2,   TC,             SEN(setreuid),                  "setreuid"              },
+[ 71] = { 2,   TC,             SEN(setregid),                  "setregid"              },
 [ 72] = { 1,   TS,             SEN(sigsuspend),                "sigsuspend"            },
 [ 73] = { 1,   TS,             SEN(sigpending),                "sigpending"            },
 [ 74] = { 2,   0,              SEN(sethostname),               "sethostname"           },
 [ 75] = { 2,   0,              SEN(setrlimit),                 "setrlimit"             },
 [ 76] = { 2,   0,              SEN(getrlimit),                 "getrlimit"             },
 [ 77] = { 2,   0,              SEN(getrusage),                 "getrusage"             },
-[ 78] = { 2,   0,              SEN(gettimeofday),              "gettimeofday"          },
-[ 79] = { 2,   0,              SEN(settimeofday),              "settimeofday"          },
-[ 80] = { 2,   0,              SEN(getgroups),                 "getgroups"             },
-[ 81] = { 2,   0,              SEN(setgroups),                 "setgroups"             },
+[ 78] = { 2,   TCL,            SEN(gettimeofday),              "gettimeofday"          },
+[ 79] = { 2,   TCL,            SEN(settimeofday),              "settimeofday"          },
+[ 80] = { 2,   TC,             SEN(getgroups),                 "getgroups"             },
+[ 81] = { 2,   TC,             SEN(setgroups),                 "setgroups"             },
 [ 82] = { 1,   TD,             SEN(oldselect),                 "select"                },
 [ 83] = { 2,   TF,             SEN(symlink),                   "symlink"               },
 [ 84] = { 2,   TF|TLST|TSTA,   SEN(oldlstat),                  "oldlstat"              },
 [ 99] = { 2,   TF|TSF|TSFA,    SEN(statfs),                    "statfs"                },
 [100] = { 2,   TD|TFSF|TSFA,   SEN(fstatfs),                   "fstatfs"               },
 [101] = { 3,   0,              SEN(ioperm),                    "ioperm"                },
-[102] = { 2,   TD,             SEN(socketcall),                "socketcall"            },
+[102] = { 2,   TD|TSD,         SEN(socketcall),                "socketcall"            },
 [103] = { 3,   0,              SEN(syslog),                    "syslog"                },
 [104] = { 3,   0,              SEN(setitimer),                 "setitimer"             },
 [105] = { 2,   0,              SEN(getitimer),                 "getitimer"             },
 [114] = { 4,   TP,             SEN(wait4),                     "wait4"                 },
 [115] = { 1,   TF,             SEN(swapoff),                   "swapoff"               },
 [116] = { 1,   0,              SEN(sysinfo),                   "sysinfo"               },
-[117] = { 6,   TI,             SEN(ipc),                       "ipc"                   },
+[117] = { 6,   TI|TSD,         SEN(ipc),                       "ipc"                   },
 [118] = { 1,   TD,             SEN(fsync),                     "fsync"                 },
 [119] = { 0,   TS,             SEN(sigreturn),                 "sigreturn"             },
 [120] = { 5,   TP,             SEN(clone),                     "clone"                 },
 [121] = { 2,   0,              SEN(setdomainname),             "setdomainname"         },
 [122] = { 1,   0,              SEN(uname),                     "uname"                 },
 [123] = { 5,   0,              SEN(printargs),                 "modify_ldt"            },
-[124] = { 1,   0,              SEN(adjtimex32),                "adjtimex"              },
+[124] = { 1,   TCL,            SEN(adjtimex32),                "adjtimex"              },
 [125] = { 3,   TM|SI,          SEN(mprotect),                  "mprotect"              },
 [126] = { 3,   TS,             SEN(sigprocmask),               "sigprocmask"           },
 [127] = { 2,   0,              SEN(create_module),             "create_module"         },
 [135] = { 3,   0,              SEN(sysfs),                     "sysfs"                 },
 [136] = { 1,   NF,             SEN(personality),               "personality"           },
 [137] = { 5,   0,              SEN(afs_syscall),               "afs_syscall"           },
-[138] = { 1,   NF,             SEN(setfsuid),                  "setfsuid"              },
-[139] = { 1,   NF,             SEN(setfsgid),                  "setfsgid"              },
+[138] = { 1,   TC|NF,          SEN(setfsuid),                  "setfsuid"              },
+[139] = { 1,   TC|NF,          SEN(setfsgid),                  "setfsgid"              },
 [140] = { 5,   TD,             SEN(llseek),                    "_llseek"               },
 [141] = { 3,   TD,             SEN(getdents),                  "getdents"              },
 [142] = { 5,   TD,             SEN(select),                    "_newselect"            },
 [161] = { 2,   0,              SEN(sched_rr_get_interval_time32),"sched_rr_get_interval"},
 [162] = { 2,   0,              SEN(nanosleep_time32),          "nanosleep"             },
 [163] = { 5,   TM|SI,          SEN(mremap),                    "mremap"                },
-[164] = { 3,   0,              SEN(setresuid),                 "setresuid"             },
-[165] = { 3,   0,              SEN(getresuid),                 "getresuid"             },
+[164] = { 3,   TC,             SEN(setresuid),                 "setresuid"             },
+[165] = { 3,   TC,             SEN(getresuid),                 "getresuid"             },
 [166] = { 5,   0,              SEN(query_module),              "query_module"          },
 [167] = { 3,   TD,             SEN(poll_time32),               "poll"                  },
 [168] = { 3,   0,              SEN(nfsservctl),                "nfsservctl"            },
-[169] = { 3,   0,              SEN(setresgid),                 "setresgid"             },
-[170] = { 3,   0,              SEN(getresgid),                 "getresgid"             },
-[171] = { 5,   0,              SEN(prctl),                     "prctl"                 },
+[169] = { 3,   TC,             SEN(setresgid),                 "setresgid"             },
+[170] = { 3,   TC,             SEN(getresgid),                 "getresgid"             },
+[171] = { 5,   TC,             SEN(prctl),                     "prctl"                 },
 [172] = { 0,   TS,             SEN(rt_sigreturn),              "rt_sigreturn"          },
 [173] = { 4,   TS,             SEN(rt_sigaction),              "rt_sigaction"          },
 [174] = { 4,   TS,             SEN(rt_sigprocmask),            "rt_sigprocmask"        },
 [175] = { 2,   TS,             SEN(rt_sigpending),             "rt_sigpending"         },
 [176] = { 4,   TS,             SEN(rt_sigtimedwait_time32),    "rt_sigtimedwait"       },
-[177] = { 3,   TS,             SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
+[177] = { 3,   TS|TP,          SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
 [178] = { 2,   TS,             SEN(rt_sigsuspend),             "rt_sigsuspend"         },
 [179] = { 6,   TD,             SEN(pread),                     "pread64"               },
 [180] = { 6,   TD,             SEN(pwrite),                    "pwrite64"              },
 [181] = { 3,   TF,             SEN(chown),                     "chown"                 },
 [182] = { 2,   TF,             SEN(getcwd),                    "getcwd"                },
-[183] = { 2,   0,              SEN(capget),                    "capget"                },
-[184] = { 2,   0,              SEN(capset),                    "capset"                },
+[183] = { 2,   TC,             SEN(capget),                    "capget"                },
+[184] = { 2,   TC,             SEN(capset),                    "capset"                },
 [185] = { 2,   TS,             SEN(sigaltstack),               "sigaltstack"           },
 [186] = { 4,   TD|TN,          SEN(sendfile),                  "sendfile"              },
 [187] = { 5,   TN,             SEN(getpmsg),                   "getpmsg"               },
 [205] = { 3,   TM,             SEN(madvise),                   "madvise"               },
 [206] = { 3,   TM,             SEN(mincore),                   "mincore"               },
 [207] = { 0,   PU|NF,          SEN(gettid),                    "gettid"                },
-[208] = { 2,   TS,             SEN(kill),                      "tkill"                 },
+[208] = { 2,   TS|TP,          SEN(tkill),                     "tkill"                 },
 [209] = { 5,   TF,             SEN(setxattr),                  "setxattr"              },
 [210] = { 5,   TF,             SEN(setxattr),                  "lsetxattr"             },
 [211] = { 5,   TD,             SEN(fsetxattr),                 "fsetxattr"             },
 [242] = { 2,   0,              SEN(timer_gettime32),           "timer_gettime"         },
 [243] = { 1,   0,              SEN(timer_getoverrun),          "timer_getoverrun"      },
 [244] = { 1,   0,              SEN(timer_delete),              "timer_delete"          },
-[245] = { 2,   0,              SEN(clock_settime32),           "clock_settime"         },
-[246] = { 2,   0,              SEN(clock_gettime32),           "clock_gettime"         },
-[247] = { 2,   0,              SEN(clock_getres_time32),       "clock_getres"          },
+[245] = { 2,   TCL,            SEN(clock_settime32),           "clock_settime"         },
+[246] = { 2,   TCL,            SEN(clock_gettime32),           "clock_gettime"         },
+[247] = { 2,   TCL,            SEN(clock_getres_time32),       "clock_getres"          },
 [248] = { 4,   0,              SEN(clock_nanosleep_time32),    "clock_nanosleep"       },
 [249] = { 2,   0,              SEN(printargs),                 "swapcontext"           },
-[250] = { 3,   TS,             SEN(tgkill),                    "tgkill"                },
+[250] = { 3,   TS|TP,          SEN(tgkill),                    "tgkill"                },
 [251] = { 2,   TF,             SEN(utimes),                    "utimes"                },
 [252] = { 3,   TF|TSF|TSFA,    SEN(statfs64),                  "statfs64"              },
 [253] = { 3,   TD|TFSF|TSFA,   SEN(fstatfs64),                 "fstatfs64"             },
 [279] = { 4,   0,              SEN(printargs),                 "spu_create"            },
 [280] = { 6,   TD,             SEN(pselect6_time32),           "pselect6"              },
 [281] = { 5,   TD,             SEN(ppoll_time32),              "ppoll"                 },
-[282] = { 1,   TP,             SEN(unshare),                   "unshare"               },
+[282] = { 1,   0,              SEN(unshare),                   "unshare"               },
 [283] = { 6,   TD,             SEN(splice),                    "splice"                },
 [284] = { 4,   TD,             SEN(tee),                       "tee"                   },
 [285] = { 4,   TD,             SEN(vmsplice),                  "vmsplice"              },
 [344] = { 4,   TN,             SEN(accept4),                   "accept4"               },
 [345] = { 5,   TD|TF,          SEN(name_to_handle_at),         "name_to_handle_at"     },
 [346] = { 3,   TD,             SEN(open_by_handle_at),         "open_by_handle_at"     },
-[347] = { 2,   0,              SEN(clock_adjtime32),           "clock_adjtime"         },
+[347] = { 2,   TCL,            SEN(clock_adjtime32),           "clock_adjtime"         },
 [348] = { 1,   TD,             SEN(syncfs),                    "syncfs"                },
 [349] = { 4,   TN,             SEN(sendmmsg),                  "sendmmsg"              },
 [350] = { 2,   TD,             SEN(setns),                     "setns"                 },
 [359] = { 3,   0,              SEN(getrandom),                 "getrandom"             },
 [360] = { 2,   TD,             SEN(memfd_create),              "memfd_create"          },
 [361] = { 3,   TD,             SEN(bpf),                       "bpf"                   },
-[362] = { 5,   TD|TF|TP|SE|SI, SEN(execveat),                  "execveat"              },
+[362] = { 5,   TD|TF|TP|TSD|SE|SI,     SEN(execveat),                  "execveat"              },
 [363] = { 0,   0,              SEN(printargs),                 "switch_endian"         },
 [364] = { 1,   TD,             SEN(userfaultfd),               "userfaultfd"           },
 [365] = { 2,   0,              SEN(membarrier),                "membarrier"            },
 [380] = { 6,   TD,             SEN(preadv2),                   "preadv2"               },
 [381] = { 6,   TD,             SEN(pwritev2),                  "pwritev2"              },
 [382] = { 5,   TD,             SEN(kexec_file_load),           "kexec_file_load"       },
-[383] = { 5,   TD|TF|TSTA,     SEN(statx),                     "statx"                 },
+[383] = { 5,   TD|TF|TFST|TSTA,SEN(statx),                     "statx"                 },
 [384] = { 2,   0,              SEN(pkey_alloc),                "pkey_alloc"            },
 [385] = { 1,   0,              SEN(pkey_free),                 "pkey_free"             },
 [386] = { 4,   TM|SI,          SEN(pkey_mprotect),             "pkey_mprotect"         },
 [400] = { 4,   TI,             SEN(msgsnd),                    "msgsnd"                },
 [401] = { 5,   TI,             SEN(msgrcv),                    "msgrcv"                },
 [402] = { 3,   TI,             SEN(msgctl),                    "msgctl"                },
-[403] = { 2,   0,              SEN(clock_gettime64),           "clock_gettime64"       },
-[404] = { 2,   0,              SEN(clock_settime64),           "clock_settime64"       },
-[405] = { 2,   0,              SEN(clock_adjtime64),           "clock_adjtime64"       },
-[406] = { 2,   0,              SEN(clock_getres_time64),       "clock_getres_time64"   },
-[407] = { 4,   0,              SEN(clock_nanosleep_time64),    "clock_nanosleep_time64"},
-[408] = { 2,   0,              SEN(timer_gettime64),           "timer_gettime64"       },
-[409] = { 4,   0,              SEN(timer_settime64),           "timer_settime64"       },
-[410] = { 2,   TD,             SEN(timerfd_gettime64),         "timerfd_gettime64"     },
-[411] = { 4,   TD,             SEN(timerfd_settime64),         "timerfd_settime64"     },
-[412] = { 4,   TD|TF,          SEN(utimensat_time64),          "utimensat_time64"      },
-[413] = { 6,   TD,             SEN(pselect6_time64),           "pselect6_time64"       },
-[414] = { 5,   TD,             SEN(ppoll_time64),              "ppoll_time64"          },
-[416] = { 6,   0,              SEN(io_pgetevents_time64),      "io_pgetevents_time64"  },
-[417] = { 5,   TN,             SEN(recvmmsg_time64),           "recvmmsg_time64"       },
-[418] = { 5,   TD,             SEN(mq_timedsend_time64),       "mq_timedsend_time64"   },
-[419] = { 5,   TD,             SEN(mq_timedreceive_time64),    "mq_timedreceive_time64"},
-[420] = { 4,   TI,             SEN(semtimedop_time64),         "semtimedop_time64"     },
-[421] = { 4,   TS,             SEN(rt_sigtimedwait_time64),    "rt_sigtimedwait_time64"},
-[422] = { 6,   0,              SEN(futex_time64),              "futex_time64"          },
-[423] = { 2,   0,              SEN(sched_rr_get_interval_time64),      "sched_rr_get_interval_time64"  },
-[424] = { 4,   TD|TS,          SEN(pidfd_send_signal),         "pidfd_send_signal"     },
-[425] = { 2,   TD,             SEN(io_uring_setup),            "io_uring_setup"        },
-[426] = { 6,   TD|TS,          SEN(io_uring_enter),            "io_uring_enter"        },
-[427] = { 4,   TD|TM,          SEN(io_uring_register),         "io_uring_register"     },
+#include "syscallent-common-32.h"
+#include "syscallent-common.h"
 
 #define SYS_socket_subcall     500
 #include "subcall32.h"
index 871f4109d51ee02758b714138f7790c7abb34344..a4ac007efeab39831f414435aed926fa0f73244a 100644 (file)
@@ -8,3 +8,5 @@
 #define HAVE_ARCH_OLD_SELECT 1
 #define SUPPORTED_PERSONALITIES 2
 #define HAVE_ARCH_DEDICATED_ERR_REG 1
+#define PERSONALITY0_AUDIT_ARCH { AUDIT_ARCH_PPC64, 0 }
+#define PERSONALITY1_AUDIT_ARCH { AUDIT_ARCH_PPC,   0 }
index 9817d44afcf9f84370e671a7fab81b3dae0e9d33..1bc238a2b6c199999a25c6f53c7942ffd8cb1bef 100644 (file)
@@ -1,16 +1,13 @@
 /*
  * Copyright (c) 2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2018-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
  */
 
-#ifndef AUDIT_ARCH_PPC
-# define AUDIT_ARCH_PPC 0x14
-#endif
-
 int
-get_personality_from_syscall_info(const struct ptrace_syscall_info *sci)
+get_personality_from_syscall_info(const struct_ptrace_syscall_info *sci)
 {
        return sci->arch == AUDIT_ARCH_PPC;
 }
index 47a59990015a9ca1ad6faa77a60c1a1277213214..9c306d28e5d7d624eb620bd4ee21447e46af382a 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 1993 Branko Lankester <branko@hacktic.nl>
  * Copyright (c) 1993, 1994, 1995 Rick Sladkey <jrs@world.std.com>
- * Copyright (c) 1995-2019 The strace developers.
+ * Copyright (c) 1995-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -18,9 +18,9 @@
 [  8] = { 2,   TD|TF,          SEN(creat),                     "creat"                 },
 [  9] = { 2,   TF,             SEN(link),                      "link"                  },
 [ 10] = { 1,   TF,             SEN(unlink),                    "unlink"                },
-[ 11] = { 3,   TF|TP|SE|SI,    SEN(execve),                    "execve"                },
+[ 11] = { 3,   TF|TP|TSD|SE|SI,        SEN(execve),                    "execve"                },
 [ 12] = { 1,   TF,             SEN(chdir),                     "chdir"                 },
-[ 13] = { 1,   0,              SEN(time),                      "time"                  },
+[ 13] = { 1,   TCL,            SEN(time),                      "time"                  },
 [ 14] = { 3,   TF,             SEN(mknod),                     "mknod"                 },
 [ 15] = { 2,   TF,             SEN(chmod),                     "chmod"                 },
 [ 16] = { 3,   TF,             SEN(chown),                     "lchown"                },
@@ -30,8 +30,8 @@
 [ 20] = { 0,   PU|NF,          SEN(getpid),                    "getpid"                },
 [ 21] = { 5,   TF,             SEN(mount),                     "mount"                 },
 [ 22] = { 1,   TF,             SEN(umount),                    "umount"                },
-[ 23] = { 1,   0,              SEN(setuid),                    "setuid"                },
-[ 24] = { 0,   PU|NF,          SEN(getuid),                    "getuid"                },
+[ 23] = { 1,   TC,             SEN(setuid),                    "setuid"                },
+[ 24] = { 0,   TC|PU|NF,       SEN(getuid),                    "getuid"                },
 [ 25] = { 1,   0,              SEN(stime),                     "stime"                 },
 [ 26] = { 4,   0,              SEN(ptrace),                    "ptrace"                },
 [ 27] = { 1,   0,              SEN(alarm),                     "alarm"                 },
@@ -44,7 +44,7 @@
 [ 34] = { 1,   0,              SEN(nice),                      "nice"                  },
 [ 35] = { 0,   0,              SEN(ftime),                     "ftime"                 },
 [ 36] = { 0,   0,              SEN(sync),                      "sync"                  },
-[ 37] = { 2,   TS,             SEN(kill),                      "kill"                  },
+[ 37] = { 2,   TS|TP,          SEN(kill),                      "kill"                  },
 [ 38] = { 2,   TF,             SEN(rename),                    "rename"                },
 [ 39] = { 2,   TF,             SEN(mkdir),                     "mkdir"                 },
 [ 40] = { 1,   TF,             SEN(rmdir),                     "rmdir"                 },
 [ 43] = { 1,   0,              SEN(times),                     "times"                 },
 [ 44] = { 0,   0,              SEN(prof),                      "prof"                  },
 [ 45] = { 1,   TM|SI,          SEN(brk),                       "brk"                   },
-[ 46] = { 1,   0,              SEN(setgid),                    "setgid"                },
-[ 47] = { 0,   PU|NF,          SEN(getgid),                    "getgid"                },
+[ 46] = { 1,   TC,             SEN(setgid),                    "setgid"                },
+[ 47] = { 0,   TC|PU|NF,       SEN(getgid),                    "getgid"                },
 [ 48] = { 2,   TS,             SEN(signal),                    "signal"                },
-[ 49] = { 0,   PU|NF,          SEN(geteuid),                   "geteuid"               },
-[ 50] = { 0,   PU|NF,          SEN(getegid),                   "getegid"               },
+[ 49] = { 0,   TC|PU|NF,       SEN(geteuid),                   "geteuid"               },
+[ 50] = { 0,   TC|PU|NF,       SEN(getegid),                   "getegid"               },
 [ 51] = { 1,   TF,             SEN(acct),                      "acct"                  },
 [ 52] = { 2,   TF,             SEN(umount2),                   "umount2"               },
 [ 53] = { 0,   0,              SEN(lock),                      "lock"                  },
 [ 67] = { 3,   TS,             SEN(sigaction),                 "sigaction"             },
 [ 68] = { 0,   TS,             SEN(sgetmask),                  "sgetmask"              },
 [ 69] = { 1,   TS,             SEN(ssetmask),                  "ssetmask"              },
-[ 70] = { 2,   0,              SEN(setreuid),                  "setreuid"              },
-[ 71] = { 2,   0,              SEN(setregid),                  "setregid"              },
+[ 70] = { 2,   TC,             SEN(setreuid),                  "setreuid"              },
+[ 71] = { 2,   TC,             SEN(setregid),                  "setregid"              },
 [ 72] = { 1,   TS,             SEN(sigsuspend),                "sigsuspend"            },
 [ 73] = { 1,   TS,             SEN(sigpending),                "sigpending"            },
 [ 74] = { 2,   0,              SEN(sethostname),               "sethostname"           },
 [ 75] = { 2,   0,              SEN(setrlimit),                 "setrlimit"             },
 [ 76] = { 2,   0,              SEN(getrlimit),                 "getrlimit"             },
 [ 77] = { 2,   0,              SEN(getrusage),                 "getrusage"             },
-[ 78] = { 2,   0,              SEN(gettimeofday),              "gettimeofday"          },
-[ 79] = { 2,   0,              SEN(settimeofday),              "settimeofday"          },
-[ 80] = { 2,   0,              SEN(getgroups),                 "getgroups"             },
-[ 81] = { 2,   0,              SEN(setgroups),                 "setgroups"             },
+[ 78] = { 2,   TCL,            SEN(gettimeofday),              "gettimeofday"          },
+[ 79] = { 2,   TCL,            SEN(settimeofday),              "settimeofday"          },
+[ 80] = { 2,   TC,             SEN(getgroups),                 "getgroups"             },
+[ 81] = { 2,   TC,             SEN(setgroups),                 "setgroups"             },
 [ 82] = { 1,   TD,             SEN(oldselect),                 "select"                },
 [ 83] = { 2,   TF,             SEN(symlink),                   "symlink"               },
 [ 84] = { 2,   TF|TLST|TSTA,   SEN(oldlstat),                  "oldlstat"              },
 [ 99] = { 2,   TF|TSF|TSFA,    SEN(statfs),                    "statfs"                },
 [100] = { 2,   TD|TFSF|TSFA,   SEN(fstatfs),                   "fstatfs"               },
 [101] = { 3,   0,              SEN(ioperm),                    "ioperm"                },
-[102] = { 2,   TD,             SEN(socketcall),                "socketcall"            },
+[102] = { 2,   TD|TSD,         SEN(socketcall),                "socketcall"            },
 [103] = { 3,   0,              SEN(syslog),                    "syslog"                },
 [104] = { 3,   0,              SEN(setitimer),                 "setitimer"             },
 [105] = { 2,   0,              SEN(getitimer),                 "getitimer"             },
 [114] = { 4,   TP,             SEN(wait4),                     "wait4"                 },
 [115] = { 1,   TF,             SEN(swapoff),                   "swapoff"               },
 [116] = { 1,   0,              SEN(sysinfo),                   "sysinfo"               },
-[117] = { 6,   TI,             SEN(ipc),                       "ipc"                   },
+[117] = { 6,   TI|TSD,         SEN(ipc),                       "ipc"                   },
 [118] = { 1,   TD,             SEN(fsync),                     "fsync"                 },
 [119] = { 0,   TS,             SEN(sigreturn),                 "sigreturn"             },
 [120] = { 5,   TP,             SEN(clone),                     "clone"                 },
 [121] = { 2,   0,              SEN(setdomainname),             "setdomainname"         },
 [122] = { 1,   0,              SEN(uname),                     "uname"                 },
 [123] = { 5,   0,              SEN(printargs),                 "modify_ldt"            },
-[124] = { 1,   0,              SEN(adjtimex64),                "adjtimex"              },
+[124] = { 1,   TCL,            SEN(adjtimex64),                "adjtimex"              },
 [125] = { 3,   TM|SI,          SEN(mprotect),                  "mprotect"              },
 [126] = { 3,   TS,             SEN(sigprocmask),               "sigprocmask"           },
 [127] = { 2,   0,              SEN(create_module),             "create_module"         },
 [135] = { 3,   0,              SEN(sysfs),                     "sysfs"                 },
 [136] = { 1,   NF,             SEN(personality),               "personality"           },
 [137] = { 5,   0,              SEN(afs_syscall),               "afs_syscall"           },
-[138] = { 1,   NF,             SEN(setfsuid),                  "setfsuid"              },
-[139] = { 1,   NF,             SEN(setfsgid),                  "setfsgid"              },
+[138] = { 1,   TC|NF,          SEN(setfsuid),                  "setfsuid"              },
+[139] = { 1,   TC|NF,          SEN(setfsgid),                  "setfsgid"              },
 [140] = { 5,   TD,             SEN(llseek),                    "_llseek"               },
 [141] = { 3,   TD,             SEN(getdents),                  "getdents"              },
 [142] = { 5,   TD,             SEN(select),                    "_newselect"            },
 [161] = { 2,   0,              SEN(sched_rr_get_interval_time64),"sched_rr_get_interval"},
 [162] = { 2,   0,              SEN(nanosleep_time64),          "nanosleep"             },
 [163] = { 5,   TM|SI,          SEN(mremap),                    "mremap"                },
-[164] = { 3,   0,              SEN(setresuid),                 "setresuid"             },
-[165] = { 3,   0,              SEN(getresuid),                 "getresuid"             },
+[164] = { 3,   TC,             SEN(setresuid),                 "setresuid"             },
+[165] = { 3,   TC,             SEN(getresuid),                 "getresuid"             },
 [166] = { 5,   0,              SEN(query_module),              "query_module"          },
 [167] = { 3,   TD,             SEN(poll_time64),               "poll"                  },
 [168] = { 3,   0,              SEN(nfsservctl),                "nfsservctl"            },
-[169] = { 3,   0,              SEN(setresgid),                 "setresgid"             },
-[170] = { 3,   0,              SEN(getresgid),                 "getresgid"             },
-[171] = { 5,   0,              SEN(prctl),                     "prctl"                 },
+[169] = { 3,   TC,             SEN(setresgid),                 "setresgid"             },
+[170] = { 3,   TC,             SEN(getresgid),                 "getresgid"             },
+[171] = { 5,   TC,             SEN(prctl),                     "prctl"                 },
 [172] = { 0,   TS,             SEN(rt_sigreturn),              "rt_sigreturn"          },
 [173] = { 4,   TS,             SEN(rt_sigaction),              "rt_sigaction"          },
 [174] = { 4,   TS,             SEN(rt_sigprocmask),            "rt_sigprocmask"        },
 [175] = { 2,   TS,             SEN(rt_sigpending),             "rt_sigpending"         },
 [176] = { 4,   TS,             SEN(rt_sigtimedwait_time64),    "rt_sigtimedwait"       },
-[177] = { 3,   TS,             SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
+[177] = { 3,   TS|TP,          SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
 [178] = { 2,   TS,             SEN(rt_sigsuspend),             "rt_sigsuspend"         },
 [179] = { 4,   TD,             SEN(pread),                     "pread64"               },
 [180] = { 4,   TD,             SEN(pwrite),                    "pwrite64"              },
 [181] = { 3,   TF,             SEN(chown),                     "chown"                 },
 [182] = { 2,   TF,             SEN(getcwd),                    "getcwd"                },
-[183] = { 2,   0,              SEN(capget),                    "capget"                },
-[184] = { 2,   0,              SEN(capset),                    "capset"                },
+[183] = { 2,   TC,             SEN(capget),                    "capget"                },
+[184] = { 2,   TC,             SEN(capset),                    "capset"                },
 [185] = { 2,   TS,             SEN(sigaltstack),               "sigaltstack"           },
 [186] = { 4,   TD|TN,          SEN(sendfile),                  "sendfile"              },
 [187] = { 5,   TN,             SEN(getpmsg),                   "getpmsg"               },
 [205] = { 3,   TM,             SEN(madvise),                   "madvise"               },
 [206] = { 3,   TM,             SEN(mincore),                   "mincore"               },
 [207] = { 0,   PU|NF,          SEN(gettid),                    "gettid"                },
-[208] = { 2,   TS,             SEN(kill),                      "tkill"                 },
+[208] = { 2,   TS|TP,          SEN(tkill),                     "tkill"                 },
 [209] = { 5,   TF,             SEN(setxattr),                  "setxattr"              },
 [210] = { 5,   TF,             SEN(setxattr),                  "lsetxattr"             },
 [211] = { 5,   TD,             SEN(fsetxattr),                 "fsetxattr"             },
 [242] = { 2,   0,              SEN(timer_gettime64),           "timer_gettime"         },
 [243] = { 1,   0,              SEN(timer_getoverrun),          "timer_getoverrun"      },
 [244] = { 1,   0,              SEN(timer_delete),              "timer_delete"          },
-[245] = { 2,   0,              SEN(clock_settime64),           "clock_settime"         },
-[246] = { 2,   0,              SEN(clock_gettime64),           "clock_gettime"         },
-[247] = { 2,   0,              SEN(clock_getres_time64),       "clock_getres"          },
+[245] = { 2,   TCL,            SEN(clock_settime64),           "clock_settime"         },
+[246] = { 2,   TCL,            SEN(clock_gettime64),           "clock_gettime"         },
+[247] = { 2,   TCL,            SEN(clock_getres_time64),       "clock_getres"          },
 [248] = { 4,   0,              SEN(clock_nanosleep_time64),    "clock_nanosleep"       },
 [249] = { 2,   0,              SEN(printargs),                 "swapcontext"           },
-[250] = { 3,   TS,             SEN(tgkill),                    "tgkill"                },
+[250] = { 3,   TS|TP,          SEN(tgkill),                    "tgkill"                },
 [251] = { 2,   TF,             SEN(utimes),                    "utimes"                },
 [252] = { 3,   TF|TSF|TSFA,    SEN(statfs64),                  "statfs64"              },
 [253] = { 3,   TD|TFSF|TSFA,   SEN(fstatfs64),                 "fstatfs64"             },
 [279] = { 4,   0,              SEN(printargs),                 "spu_create"            },
 [280] = { 6,   TD,             SEN(pselect6_time64),           "pselect6"              },
 [281] = { 5,   TD,             SEN(ppoll_time64),              "ppoll"                 },
-[282] = { 1,   TP,             SEN(unshare),                   "unshare"               },
+[282] = { 1,   0,              SEN(unshare),                   "unshare"               },
 [283] = { 6,   TD,             SEN(splice),                    "splice"                },
 [284] = { 4,   TD,             SEN(tee),                       "tee"                   },
 [285] = { 4,   TD,             SEN(vmsplice),                  "vmsplice"              },
 [344] = { 4,   TN,             SEN(accept4),                   "accept4"               },
 [345] = { 5,   TD|TF,          SEN(name_to_handle_at),         "name_to_handle_at"     },
 [346] = { 3,   TD,             SEN(open_by_handle_at),         "open_by_handle_at"     },
-[347] = { 2,   0,              SEN(clock_adjtime64),           "clock_adjtime"         },
+[347] = { 2,   TCL,            SEN(clock_adjtime64),           "clock_adjtime"         },
 [348] = { 1,   TD,             SEN(syncfs),                    "syncfs"                },
 [349] = { 4,   TN,             SEN(sendmmsg),                  "sendmmsg"              },
 [350] = { 2,   TD,             SEN(setns),                     "setns"                 },
 [359] = { 3,   0,              SEN(getrandom),                 "getrandom"             },
 [360] = { 2,   TD,             SEN(memfd_create),              "memfd_create"          },
 [361] = { 3,   TD,             SEN(bpf),                       "bpf"                   },
-[362] = { 5,   TD|TF|TP|SE|SI, SEN(execveat),                  "execveat"              },
+[362] = { 5,   TD|TF|TP|TSD|SE|SI,     SEN(execveat),                  "execveat"              },
 [363] = { 0,   0,              SEN(printargs),                 "switch_endian"         },
 [364] = { 1,   TD,             SEN(userfaultfd),               "userfaultfd"           },
 [365] = { 2,   0,              SEN(membarrier),                "membarrier"            },
 [380] = { 6,   TD,             SEN(preadv2),                   "preadv2"               },
 [381] = { 6,   TD,             SEN(pwritev2),                  "pwritev2"              },
 [382] = { 5,   TD,             SEN(kexec_file_load),           "kexec_file_load"       },
-[383] = { 5,   TD|TF|TSTA,     SEN(statx),                     "statx"                 },
+[383] = { 5,   TD|TF|TFST|TSTA,SEN(statx),                     "statx"                 },
 [384] = { 2,   0,              SEN(pkey_alloc),                "pkey_alloc"            },
 [385] = { 1,   0,              SEN(pkey_free),                 "pkey_free"             },
 [386] = { 4,   TM|SI,          SEN(pkey_mprotect),             "pkey_mprotect"         },
 [401] = { 5,   TI,             SEN(msgrcv),                    "msgrcv"                },
 [402] = { 3,   TI,             SEN(msgctl),                    "msgctl"                },
 /* [403 ... 423] - reserved to sync up with other architectures */
-[424] = { 4,   TD|TS,          SEN(pidfd_send_signal),         "pidfd_send_signal"     },
-[425] = { 2,   TD,             SEN(io_uring_setup),            "io_uring_setup"        },
-[426] = { 6,   TD|TS,          SEN(io_uring_enter),            "io_uring_enter"        },
-[427] = { 4,   TD|TM,          SEN(io_uring_register),         "io_uring_register"     },
+#include "syscallent-common.h"
 
 #define SYS_socket_subcall     500
 #include "subcall64.h"
diff --git a/linux/powerpc64le/arch_defs_.h b/linux/powerpc64le/arch_defs_.h
new file mode 100644 (file)
index 0000000..494672a
--- /dev/null
@@ -0,0 +1,9 @@
+/*
+ * Copyright (c) 2019 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#define HAVE_ARCH_OLD_SELECT 1
+#define HAVE_ARCH_DEDICATED_ERR_REG 1
diff --git a/linux/powerpc64le/arch_regs.c b/linux/powerpc64le/arch_regs.c
new file mode 100644 (file)
index 0000000..8c4a45d
--- /dev/null
@@ -0,0 +1 @@
+#include "../powerpc/arch_regs.c"
diff --git a/linux/powerpc64le/arch_rt_sigframe.c b/linux/powerpc64le/arch_rt_sigframe.c
new file mode 100644 (file)
index 0000000..ae5a536
--- /dev/null
@@ -0,0 +1,13 @@
+/*
+ * Copyright (c) 2017-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2018-2019 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+FUNC_GET_RT_SIGFRAME_ADDR
+{
+       kernel_ulong_t sp;
+       return get_stack_pointer(tcp, &sp) ? sp : 0;
+}
diff --git a/linux/powerpc64le/errnoent.h b/linux/powerpc64le/errnoent.h
new file mode 100644 (file)
index 0000000..945ce85
--- /dev/null
@@ -0,0 +1 @@
+#include "../powerpc64/errnoent.h"
diff --git a/linux/powerpc64le/get_error.c b/linux/powerpc64le/get_error.c
new file mode 100644 (file)
index 0000000..c7fc341
--- /dev/null
@@ -0,0 +1 @@
+#include "../powerpc64/get_error.c"
diff --git a/linux/powerpc64le/get_scno.c b/linux/powerpc64le/get_scno.c
new file mode 100644 (file)
index 0000000..9a0c9e4
--- /dev/null
@@ -0,0 +1,14 @@
+/*
+ * Copyright (c) 2015-2019 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+/* Return codes: 1 - ok, 0 - ignore, other - error. */
+static int
+arch_get_scno(struct tcb *tcp)
+{
+       tcp->scno = ppc_regs.gpr[0];
+       return 1;
+}
diff --git a/linux/powerpc64le/get_syscall_args.c b/linux/powerpc64le/get_syscall_args.c
new file mode 100644 (file)
index 0000000..281eb60
--- /dev/null
@@ -0,0 +1 @@
+#include "../powerpc64/get_syscall_args.c"
diff --git a/linux/powerpc64le/ioctls_arch0.h b/linux/powerpc64le/ioctls_arch0.h
new file mode 100644 (file)
index 0000000..14d0c0b
--- /dev/null
@@ -0,0 +1 @@
+#include "../powerpc64/ioctls_arch0.h"
diff --git a/linux/powerpc64le/ioctls_inc0.h b/linux/powerpc64le/ioctls_inc0.h
new file mode 100644 (file)
index 0000000..a89fa3c
--- /dev/null
@@ -0,0 +1 @@
+#include "../powerpc64/ioctls_inc0.h"
diff --git a/linux/powerpc64le/raw_syscall.h b/linux/powerpc64le/raw_syscall.h
new file mode 100644 (file)
index 0000000..f1800fc
--- /dev/null
@@ -0,0 +1 @@
+#include "../powerpc64/raw_syscall.h"
diff --git a/linux/powerpc64le/rt_sigframe.h b/linux/powerpc64le/rt_sigframe.h
new file mode 100644 (file)
index 0000000..cd8902f
--- /dev/null
@@ -0,0 +1 @@
+#include "../powerpc64/rt_sigframe.h"
diff --git a/linux/powerpc64le/set_error.c b/linux/powerpc64le/set_error.c
new file mode 100644 (file)
index 0000000..207ffe9
--- /dev/null
@@ -0,0 +1 @@
+#include "../powerpc64/set_error.c"
diff --git a/linux/powerpc64le/set_scno.c b/linux/powerpc64le/set_scno.c
new file mode 100644 (file)
index 0000000..d3f6479
--- /dev/null
@@ -0,0 +1 @@
+#include "../powerpc64/set_scno.c"
diff --git a/linux/powerpc64le/syscallent.h b/linux/powerpc64le/syscallent.h
new file mode 100644 (file)
index 0000000..785a81b
--- /dev/null
@@ -0,0 +1 @@
+#include "../powerpc64/syscallent.h"
diff --git a/linux/powerpc64le/userent.h b/linux/powerpc64le/userent.h
new file mode 100644 (file)
index 0000000..1f71181
--- /dev/null
@@ -0,0 +1 @@
+#include "../powerpc64/userent.h"
diff --git a/linux/riscv/arch_defs_.h b/linux/riscv/arch_defs_.h
deleted file mode 100644 (file)
index a9c27bc..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-/*
- * Copyright (c) 2018 The strace developers.
- * All rights reserved.
- *
- * SPDX-License-Identifier: LGPL-2.1-or-later
- */
-
-#define HAVE_ARCH_UID16_SYSCALLS 1
-#define SUPPORTED_PERSONALITIES 2
-#define CAN_ARCH_BE_COMPAT_ON_64BIT_KERNEL 1
diff --git a/linux/riscv/arch_get_personality.c b/linux/riscv/arch_get_personality.c
deleted file mode 100644 (file)
index 78cf432..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
- * Copyright (c) 2018 Dmitry V. Levin <ldv@altlinux.org>
- * All rights reserved.
- *
- * SPDX-License-Identifier: LGPL-2.1-or-later
- */
-
-#ifndef AUDIT_ARCH_RISCV32
-# define AUDIT_ARCH_RISCV32 0x400000f3
-#endif
-
-int
-get_personality_from_syscall_info(const struct ptrace_syscall_info *sci)
-{
-       return sci->arch == AUDIT_ARCH_RISCV32;
-}
diff --git a/linux/riscv/arch_regs.c b/linux/riscv/arch_regs.c
deleted file mode 100644 (file)
index cbf5a67..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-/*
- * Copyright (c) 2016-2018 The strace developers.
- * All rights reserved.
- *
- * SPDX-License-Identifier: LGPL-2.1-or-later
- */
-
-static struct user_regs_struct riscv_regs;
-#define ARCH_REGS_FOR_GETREGSET riscv_regs
-#define ARCH_PC_REG riscv_regs.pc
-#define ARCH_SP_REG riscv_regs.sp
diff --git a/linux/riscv/get_error.c b/linux/riscv/get_error.c
deleted file mode 100644 (file)
index d406653..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Copyright (c) 2016-2018 The strace developers.
- * All rights reserved.
- *
- * SPDX-License-Identifier: LGPL-2.1-or-later
- */
-
-#include "negated_errno.h"
-
-static void
-arch_get_error(struct tcb *tcp, const bool check_errno)
-{
-       if (check_errno && is_negated_errno(riscv_regs.a0)) {
-               tcp->u_rval = -1;
-               tcp->u_error = -riscv_regs.a0;
-       } else {
-               tcp->u_rval = riscv_regs.a0;
-       }
-}
diff --git a/linux/riscv/get_scno.c b/linux/riscv/get_scno.c
deleted file mode 100644 (file)
index 6b4256e..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
- * Copyright (c) 2015-2018 The strace developers.
- * All rights reserved.
- *
- * SPDX-License-Identifier: LGPL-2.1-or-later
- */
-
-/* Return codes: 1 - ok, 0 - ignore, other - error. */
-static int
-arch_get_scno(struct tcb *tcp)
-{
-       tcp->scno = riscv_regs.a7;
-       return 1;
-}
diff --git a/linux/riscv/get_syscall_args.c b/linux/riscv/get_syscall_args.c
deleted file mode 100644 (file)
index 9418b8e..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Copyright (c) 2016-2018 The strace developers.
- * All rights reserved.
- *
- * SPDX-License-Identifier: LGPL-2.1-or-later
- */
-
-/* Return -1 on error or 1 on success (never 0!). */
-static int
-arch_get_syscall_args(struct tcb *tcp)
-{
-       tcp->u_arg[0] = riscv_regs.a0;
-       tcp->u_arg[1] = riscv_regs.a1;
-       tcp->u_arg[2] = riscv_regs.a2;
-       tcp->u_arg[3] = riscv_regs.a3;
-       tcp->u_arg[4] = riscv_regs.a4;
-       tcp->u_arg[5] = riscv_regs.a5;
-       return 1;
-}
diff --git a/linux/riscv/ioctls_arch0.h b/linux/riscv/ioctls_arch0.h
deleted file mode 100644 (file)
index 9c039fc..0000000
+++ /dev/null
@@ -1 +0,0 @@
-/* Generated by ioctls_gen.sh from definitions found in $linux/arch/riscv/include/ tree. */
diff --git a/linux/riscv/ioctls_arch1.h b/linux/riscv/ioctls_arch1.h
deleted file mode 100644 (file)
index 41d00f9..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include "ioctls_arch0.h"
diff --git a/linux/riscv/ioctls_inc0.h b/linux/riscv/ioctls_inc0.h
deleted file mode 100644 (file)
index f9939fa..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include "64/ioctls_inc.h"
diff --git a/linux/riscv/ioctls_inc1.h b/linux/riscv/ioctls_inc1.h
deleted file mode 100644 (file)
index 4aecf98..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include "32/ioctls_inc.h"
diff --git a/linux/riscv/raw_syscall.h b/linux/riscv/raw_syscall.h
deleted file mode 100644 (file)
index e069b11..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Raw syscalls.
- *
- * Copyright (c) 2018 The strace developers.
- * All rights reserved.
- *
- * SPDX-License-Identifier: LGPL-2.1-or-later
- */
-
-#ifndef STRACE_RAW_SYSCALL_H
-# define STRACE_RAW_SYSCALL_H
-
-# include "kernel_types.h"
-
-static inline kernel_ulong_t
-raw_syscall_0(const kernel_ulong_t nr, kernel_ulong_t *err)
-{
-       *err = 0;
-       register kernel_ulong_t a7 __asm__("a7") = nr;
-       register kernel_ulong_t a0 __asm__("a0");
-       __asm__ __volatile__("scall"
-                            : "=r"(a0)
-                            : "r"(a7)
-                            : "memory");
-       return a0;
-}
-# define raw_syscall_0 raw_syscall_0
-
-#endif /* !STRACE_RAW_SYSCALL_H */
diff --git a/linux/riscv/set_error.c b/linux/riscv/set_error.c
deleted file mode 100644 (file)
index b9038c9..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (c) 2016-2018 The strace developers.
- * All rights reserved.
- *
- * SPDX-License-Identifier: LGPL-2.1-or-later
- */
-
-static int
-arch_set_error(struct tcb *tcp)
-{
-       riscv_regs.a0 = -tcp->u_error;
-       return set_regs(tcp->pid);
-}
-
-static int
-arch_set_success(struct tcb *tcp)
-{
-       riscv_regs.a0 = tcp->u_rval;
-       return set_regs(tcp->pid);
-}
diff --git a/linux/riscv/set_scno.c b/linux/riscv/set_scno.c
deleted file mode 100644 (file)
index 2c586ee..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-/*
- * Copyright (c) 2016-2018 The strace developers.
- * All rights reserved.
- *
- * SPDX-License-Identifier: LGPL-2.1-or-later
- */
-
-static int
-arch_set_scno(struct tcb *tcp, kernel_ulong_t scno)
-{
-       riscv_regs.a7 = scno;
-       return set_regs(tcp->pid);
-}
diff --git a/linux/riscv/syscallent.h b/linux/riscv/syscallent.h
deleted file mode 100644 (file)
index b827458..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-/*
- * Copyright (c) 2016-2018 The strace developers.
- * All rights reserved.
- *
- * SPDX-License-Identifier: LGPL-2.1-or-later
- */
-
-#include "64/syscallent.h"
-
-/* #define __NR_riscv_flush_icache (__NR_arch_specific_syscall + 15) */
-[259] = { 3,   TM,             SEN(riscv_flush_icache),        "riscv_flush_icache"    },
diff --git a/linux/riscv/syscallent1.h b/linux/riscv/syscallent1.h
deleted file mode 100644 (file)
index 22eff67..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include "32/syscallent.h"
diff --git a/linux/riscv64/arch_regs.c b/linux/riscv64/arch_regs.c
new file mode 100644 (file)
index 0000000..5a2bab9
--- /dev/null
@@ -0,0 +1,11 @@
+/*
+ * Copyright (c) 2016-2019 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+static struct user_regs_struct riscv_regs;
+#define ARCH_REGS_FOR_GETREGSET riscv_regs
+#define ARCH_PC_REG riscv_regs.pc
+#define ARCH_SP_REG riscv_regs.sp
diff --git a/linux/riscv64/get_error.c b/linux/riscv64/get_error.c
new file mode 100644 (file)
index 0000000..ac20c76
--- /dev/null
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2016-2019 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#include "negated_errno.h"
+
+static void
+arch_get_error(struct tcb *tcp, const bool check_errno)
+{
+       if (check_errno && is_negated_errno(riscv_regs.a0)) {
+               tcp->u_rval = -1;
+               tcp->u_error = -riscv_regs.a0;
+       } else {
+               tcp->u_rval = riscv_regs.a0;
+       }
+}
diff --git a/linux/riscv64/get_scno.c b/linux/riscv64/get_scno.c
new file mode 100644 (file)
index 0000000..c77f4f5
--- /dev/null
@@ -0,0 +1,14 @@
+/*
+ * Copyright (c) 2015-2019 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+/* Return codes: 1 - ok, 0 - ignore, other - error. */
+static int
+arch_get_scno(struct tcb *tcp)
+{
+       tcp->scno = riscv_regs.a7;
+       return 1;
+}
diff --git a/linux/riscv64/get_syscall_args.c b/linux/riscv64/get_syscall_args.c
new file mode 100644 (file)
index 0000000..0167fa5
--- /dev/null
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2016-2019 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+/* Return -1 on error or 1 on success (never 0!). */
+static int
+arch_get_syscall_args(struct tcb *tcp)
+{
+       tcp->u_arg[0] = riscv_regs.a0;
+       tcp->u_arg[1] = riscv_regs.a1;
+       tcp->u_arg[2] = riscv_regs.a2;
+       tcp->u_arg[3] = riscv_regs.a3;
+       tcp->u_arg[4] = riscv_regs.a4;
+       tcp->u_arg[5] = riscv_regs.a5;
+       return 1;
+}
diff --git a/linux/riscv64/ioctls_arch0.h b/linux/riscv64/ioctls_arch0.h
new file mode 100644 (file)
index 0000000..9c039fc
--- /dev/null
@@ -0,0 +1 @@
+/* Generated by ioctls_gen.sh from definitions found in $linux/arch/riscv/include/ tree. */
diff --git a/linux/riscv64/ioctls_inc0.h b/linux/riscv64/ioctls_inc0.h
new file mode 100644 (file)
index 0000000..f9939fa
--- /dev/null
@@ -0,0 +1 @@
+#include "64/ioctls_inc.h"
diff --git a/linux/riscv64/raw_syscall.h b/linux/riscv64/raw_syscall.h
new file mode 100644 (file)
index 0000000..932975c
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ * Raw syscalls.
+ *
+ * Copyright (c) 2018-2019 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#ifndef STRACE_RAW_SYSCALL_H
+# define STRACE_RAW_SYSCALL_H
+
+# include "kernel_types.h"
+
+static inline kernel_ulong_t
+raw_syscall_0(const kernel_ulong_t nr, kernel_ulong_t *err)
+{
+       *err = 0;
+       register kernel_ulong_t a7 __asm__("a7") = nr;
+       register kernel_ulong_t a0 __asm__("a0");
+       __asm__ __volatile__("scall"
+                            : "=r"(a0)
+                            : "r"(a7)
+                            : "memory");
+       return a0;
+}
+# define raw_syscall_0 raw_syscall_0
+
+#endif /* !STRACE_RAW_SYSCALL_H */
diff --git a/linux/riscv64/set_error.c b/linux/riscv64/set_error.c
new file mode 100644 (file)
index 0000000..b922e10
--- /dev/null
@@ -0,0 +1,20 @@
+/*
+ * Copyright (c) 2016-2019 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+static int
+arch_set_error(struct tcb *tcp)
+{
+       riscv_regs.a0 = -tcp->u_error;
+       return set_regs(tcp->pid);
+}
+
+static int
+arch_set_success(struct tcb *tcp)
+{
+       riscv_regs.a0 = tcp->u_rval;
+       return set_regs(tcp->pid);
+}
diff --git a/linux/riscv64/set_scno.c b/linux/riscv64/set_scno.c
new file mode 100644 (file)
index 0000000..f6d08d4
--- /dev/null
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2016-2019 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+static int
+arch_set_scno(struct tcb *tcp, kernel_ulong_t scno)
+{
+       if (ptrace_syscall_info_is_valid() && get_regs(tcp) < 0)
+               return -1;
+       riscv_regs.a7 = scno;
+       return set_regs(tcp->pid);
+}
diff --git a/linux/riscv64/syscallent.h b/linux/riscv64/syscallent.h
new file mode 100644 (file)
index 0000000..60c6ce5
--- /dev/null
@@ -0,0 +1,11 @@
+/*
+ * Copyright (c) 2016-2019 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#include "64/syscallent.h"
+
+/* #define __NR_riscv_flush_icache (__NR_arch_specific_syscall + 15) */
+[259] = { 3,   TM,             SEN(riscv_flush_icache),        "riscv_flush_icache"    },
index dd872ca3b789232cf72258ffbbd9f8e3837c84d2..e9bda5c0ff8c2491680383f78007b63da3adc54d 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
  */
 
 /* PTRACE_GETREGSET on S390 is available since linux v2.6.27. */
-static struct user_regs_struct s390_regset;
+static s390_regs s390_regset;
 #define ARCH_REGS_FOR_GETREGSET s390_regset
 #define ARCH_PC_REG s390_regset.psw.addr
 #define ARCH_SP_REG s390_regset.gprs[15]
diff --git a/linux/s390/check_scno.c b/linux/s390/check_scno.c
new file mode 100644 (file)
index 0000000..76d0f9c
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+/* Return codes: 1 - ok, 0 - ignore, other - error. */
+static int
+arch_check_scno(struct tcb *tcp)
+{
+       if (ptrace_sci.entry.nr)
+               return 1;
+
+       /*
+        * Apparently, arch/s390/include/asm/syscall.h:syscall_get_nr()
+        * returns 0 for out-of-range syscall numbers.
+        * This kernel bug is exposed via PTRACE_GET_SYSCALL_INFO interface.
+        * Workaround it by falling back to get_regs().
+        */
+
+       if (get_regs(tcp) < 0)
+               return -1;
+
+       arch_get_scno(tcp);
+       if (tcp->scno) {
+               ptrace_sci.entry.nr = tcp->scno;
+               debug_func_msg("fixed scno: 0 -> %#lx", tcp->scno);
+       }
+
+       return 1;
+}
index db6204e470774b8da35da0659f40d409371f6632..9428563061bfade7cc849967a66ed24bdc2a4bcb 100644 (file)
@@ -27,6 +27,7 @@
 { "asm/dasd.h", "BIODASDPRRST", _IOC_NONE, 0x4405, 0x00 },
 { "asm/dasd.h", "BIODASDPSRD", _IOC_READ, 0x4404, 0xc0 },
 { "asm/dasd.h", "BIODASDQUIESCE", _IOC_NONE, 0x4406, 0x00 },
+{ "asm/dasd.h", "BIODASDRAS", _IOC_WRITE, 0x4403, 0x10 },
 { "asm/dasd.h", "BIODASDRESUME", _IOC_NONE, 0x4407, 0x00 },
 { "asm/dasd.h", "BIODASDRLSE", _IOC_NONE, 0x4403, 0x00 },
 { "asm/dasd.h", "BIODASDRSRV", _IOC_NONE, 0x4402, 0x00 },
 { "asm/dasd.h", "DASDAPIVER", _IOC_READ, 0x4400, 0x04 },
 { "asm/hypfs.h", "HYPFS_DIAG304", _IOC_READ|_IOC_WRITE, 0x1020, 0x18 },
 { "asm/ioctls.h", "FIOQSIZE", 0, 0x545E, 0 },
+{ "asm/pkey.h", "PKEY_APQNS4K", _IOC_READ|_IOC_WRITE, 0x701b, 0x14 },
+{ "asm/pkey.h", "PKEY_APQNS4KT", _IOC_READ|_IOC_WRITE, 0x701c, 0x50 },
 { "asm/pkey.h", "PKEY_CLR2PROTK", _IOC_READ|_IOC_WRITE, 0x7004, 0x6c },
 { "asm/pkey.h", "PKEY_CLR2SECK", _IOC_READ|_IOC_WRITE, 0x7002, 0x68 },
+{ "asm/pkey.h", "PKEY_CLR2SECK2", _IOC_READ|_IOC_WRITE, 0x7012, 0x3c },
 { "asm/pkey.h", "PKEY_FINDCARD", _IOC_READ|_IOC_WRITE, 0x7005, 0x44 },
 { "asm/pkey.h", "PKEY_GENPROTK", _IOC_READ|_IOC_WRITE, 0x7008, 0x4c },
 { "asm/pkey.h", "PKEY_GENSECK", _IOC_READ|_IOC_WRITE, 0x7001, 0x48 },
+{ "asm/pkey.h", "PKEY_GENSECK2", _IOC_READ|_IOC_WRITE, 0x7011, 0x1c },
 { "asm/pkey.h", "PKEY_KBLOB2PROTK", _IOC_READ|_IOC_WRITE, 0x700a, 0x50 },
+{ "asm/pkey.h", "PKEY_KBLOB2PROTK2", _IOC_READ|_IOC_WRITE, 0x701a, 0x58 },
 { "asm/pkey.h", "PKEY_SEC2PROTK", _IOC_READ|_IOC_WRITE, 0x7003, 0x8c },
 { "asm/pkey.h", "PKEY_SKEY2PKEY", _IOC_READ|_IOC_WRITE, 0x7006, 0x88 },
 { "asm/pkey.h", "PKEY_VERIFYKEY", _IOC_READ|_IOC_WRITE, 0x7007, 0x4c },
+{ "asm/pkey.h", "PKEY_VERIFYKEY2", _IOC_READ|_IOC_WRITE, 0x7017, 0x18 },
 { "asm/pkey.h", "PKEY_VERIFYPROTK", _IOC_WRITE, 0x7009, 0x48 },
 { "asm/sclp_ctl.h", "SCLP_CTL_SCCB", _IOC_READ|_IOC_WRITE, 0x1010, 0x0c },
 { "asm/tape390.h", "TAPE390_CRYPT_QUERY", _IOC_READ, 0x6403, 0x03 },
 { "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_CLEAR_RESET", _IOC_NONE, 0xaec4, 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_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_NORMAL_RESET", _IOC_NONE, 0xaec3, 0x00 },
+{ "linux/kvm.h", "KVM_S390_PV_COMMAND", _IOC_READ|_IOC_WRITE, 0xaec5, 0x20 },
 { "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 },
index 650deecb841c5402e4e8dca2c1dbac1861167584..6ce2c12f348cd7ebd4ae1f5c576a69d247478aad 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -12,6 +12,8 @@
 static int
 arch_set_scno(struct tcb *tcp, kernel_ulong_t scno)
 {
+       if (ptrace_syscall_info_is_valid() && get_regs(tcp) < 0)
+               return -1;
        ARCH_REGSET.gprs[2] = scno;
        return set_regs(tcp->pid);
 }
index 24cd190b70e154c1dfd66819690237065e4cf8f5..7af96b5cc3db7e6c8d9c3a5150e9a6fe8d4cd235 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2000 IBM Deutschland Entwicklung GmbH, IBM Coporation
- * Copyright (c) 2000-2019 The strace developers.
+ * Copyright (c) 2000-2020 The strace developers.
  * Authors: Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
  *          D.J. Barrow  <barrow_dj@mail.yahoo.com,djbarrow@de.ibm.com>
  * All rights reserved.
@@ -20,9 +20,9 @@
 [  8] = { 2,   TD|TF,          SEN(creat),                     "creat"                 },
 [  9] = { 2,   TF,             SEN(link),                      "link"                  },
 [ 10] = { 1,   TF,             SEN(unlink),                    "unlink"                },
-[ 11] = { 3,   TF|TP|SE|SI,    SEN(execve),                    "execve"                },
+[ 11] = { 3,   TF|TP|TSD|SE|SI,        SEN(execve),                    "execve"                },
 [ 12] = { 1,   TF,             SEN(chdir),                     "chdir"                 },
-[ 13] = { 1,   0,              SEN(time),                      "time"                  },
+[ 13] = { 1,   TCL,            SEN(time),                      "time"                  },
 [ 14] = { 3,   TF,             SEN(mknod),                     "mknod"                 },
 [ 15] = { 2,   TF,             SEN(chmod),                     "chmod"                 },
 [ 16] = { 3,   TF,             SEN(chown16),                   "lchown"                },
@@ -32,8 +32,8 @@
 [ 20] = { 0,   PU|NF,          SEN(getpid),                    "getpid"                },
 [ 21] = { 5,   TF,             SEN(mount),                     "mount"                 },
 [ 22] = { 1,   TF,             SEN(umount),                    "umount"                },
-[ 23] = { 1,   0,              SEN(setuid16),                  "setuid"                },
-[ 24] = { 0,   PU|NF,          SEN(getuid16),                  "getuid"                },
+[ 23] = { 1,   TC,             SEN(setuid16),                  "setuid"                },
+[ 24] = { 0,   TC|PU|NF,       SEN(getuid16),                  "getuid"                },
 [ 25] = { 1,   0,              SEN(stime),                     "stime"                 },
 [ 26] = { 4,   0,              SEN(ptrace),                    "ptrace"                },
 [ 27] = { 1,   0,              SEN(alarm),                     "alarm"                 },
@@ -46,7 +46,7 @@
 [ 34] = { 1,   0,              SEN(nice),                      "nice"                  },
 [ 35] = { },
 [ 36] = { 0,   0,              SEN(sync),                      "sync"                  },
-[ 37] = { 2,   TS,             SEN(kill),                      "kill"                  },
+[ 37] = { 2,   TS|TP,          SEN(kill),                      "kill"                  },
 [ 38] = { 2,   TF,             SEN(rename),                    "rename"                },
 [ 39] = { 2,   TF,             SEN(mkdir),                     "mkdir"                 },
 [ 40] = { 1,   TF,             SEN(rmdir),                     "rmdir"                 },
 [ 43] = { 1,   0,              SEN(times),                     "times"                 },
 [ 44] = { },
 [ 45] = { 1,   TM|SI,          SEN(brk),                       "brk"                   },
-[ 46] = { 1,   0,              SEN(setgid16),                  "setgid"                },
-[ 47] = { 0,   PU|NF,          SEN(getgid16),                  "getgid"                },
+[ 46] = { 1,   TC,             SEN(setgid16),                  "setgid"                },
+[ 47] = { 0,   TC|PU|NF,       SEN(getgid16),                  "getgid"                },
 [ 48] = { 2,   TS,             SEN(signal),                    "signal"                },
-[ 49] = { 0,   PU|NF,          SEN(geteuid16),                 "geteuid"               },
-[ 50] = { 0,   PU|NF,          SEN(getegid16),                 "getegid"               },
+[ 49] = { 0,   TC|PU|NF,       SEN(geteuid16),                 "geteuid"               },
+[ 50] = { 0,   TC|PU|NF,       SEN(getegid16),                 "getegid"               },
 [ 51] = { 1,   TF,             SEN(acct),                      "acct"                  },
 [ 52] = { 2,   TF,             SEN(umount2),                   "umount2"               },
 [ 53] = { },
 [ 67] = { 3,   TS,             SEN(sigaction),                 "sigaction"             },
 [ 68] = { },
 [ 69] = { },
-[ 70] = { 2,   0,              SEN(setreuid16),                "setreuid"              },
-[ 71] = { 2,   0,              SEN(setregid16),                "setregid"              },
+[ 70] = { 2,   TC,             SEN(setreuid16),                "setreuid"              },
+[ 71] = { 2,   TC,             SEN(setregid16),                "setregid"              },
 [ 72] = { 3,   TS,             SEN(sigsuspend),                "sigsuspend"            },
 [ 73] = { 1,   TS,             SEN(sigpending),                "sigpending"            },
 [ 74] = { 2,   0,              SEN(sethostname),               "sethostname"           },
 [ 75] = { 2,   0,              SEN(setrlimit),                 "setrlimit"             },
 [ 76] = { 2,   0,              SEN(getrlimit),                 "getrlimit"             },
 [ 77] = { 2,   0,              SEN(getrusage),                 "getrusage"             },
-[ 78] = { 2,   0,              SEN(gettimeofday),              "gettimeofday"          },
-[ 79] = { 2,   0,              SEN(settimeofday),              "settimeofday"          },
-[ 80] = { 2,   0,              SEN(getgroups16),               "getgroups"             },
-[ 81] = { 2,   0,              SEN(setgroups16),               "setgroups"             },
+[ 78] = { 2,   TCL,            SEN(gettimeofday),              "gettimeofday"          },
+[ 79] = { 2,   TCL,            SEN(settimeofday),              "settimeofday"          },
+[ 80] = { 2,   TC,             SEN(getgroups16),               "getgroups"             },
+[ 81] = { 2,   TC,             SEN(setgroups16),               "setgroups"             },
 [ 82] = { },
 [ 83] = { 2,   TF,             SEN(symlink),                   "symlink"               },
 [ 84] = { },
 [ 99] = { 2,   TF|TSF|TSFA,    SEN(statfs),                    "statfs"                },
 [100] = { 2,   TD|TFSF|TSFA,   SEN(fstatfs),                   "fstatfs"               },
 [101] = { 3,   0,              SEN(ioperm),                    "ioperm"                },
-[102] = { 2,   TD,             SEN(socketcall),                "socketcall"            },
+[102] = { 2,   TD|TSD,         SEN(socketcall),                "socketcall"            },
 [103] = { 3,   0,              SEN(syslog),                    "syslog"                },
 [104] = { 3,   0,              SEN(setitimer),                 "setitimer"             },
 [105] = { 2,   0,              SEN(getitimer),                 "getitimer"             },
 [114] = { 4,   TP,             SEN(wait4),                     "wait4"                 },
 [115] = { 1,   TF,             SEN(swapoff),                   "swapoff"               },
 [116] = { 1,   0,              SEN(sysinfo),                   "sysinfo"               },
-[117] = { 5,   TI,             SEN(ipc),                       "ipc"                   },
+[117] = { 5,   TI|TSD,         SEN(ipc),                       "ipc"                   },
 [118] = { 1,   TD,             SEN(fsync),                     "fsync"                 },
 [119] = { 0,   TS,             SEN(sigreturn),                 "sigreturn"             },
 [120] = { 5,   TP,             SEN(clone),                     "clone"                 },
 [121] = { 2,   0,              SEN(setdomainname),             "setdomainname"         },
 [122] = { 1,   0,              SEN(uname),                     "uname"                 },
 [123] = { },
-[124] = { 1,   0,              SEN(adjtimex32),                "adjtimex"              },
+[124] = { 1,   TCL,            SEN(adjtimex32),                "adjtimex"              },
 [125] = { 3,   TM|SI,          SEN(mprotect),                  "mprotect"              },
 [126] = { 3,   TS,             SEN(sigprocmask),               "sigprocmask"           },
 [127] = { 2,   0,              SEN(create_module),             "create_module"         },
 [135] = { 3,   0,              SEN(sysfs),                     "sysfs"                 },
 [136] = { 1,   NF,             SEN(personality),               "personality"           },
 [137] = { 5,   0,              SEN(afs_syscall),               "afs_syscall"           },
-[138] = { 1,   NF,             SEN(setfsuid16),                "setfsuid"              },
-[139] = { 1,   NF,             SEN(setfsgid16),                "setfsgid"              },
+[138] = { 1,   TC|NF,          SEN(setfsuid16),                "setfsuid"              },
+[139] = { 1,   TC|NF,          SEN(setfsgid16),                "setfsgid"              },
 [140] = { 5,   TD,             SEN(llseek),                    "_llseek"               },
 [141] = { 3,   TD,             SEN(getdents),                  "getdents"              },
 [142] = { 5,   TD,             SEN(select),                    "_newselect"            },
 [161] = { 2,   0,              SEN(sched_rr_get_interval_time32),"sched_rr_get_interval"},
 [162] = { 2,   0,              SEN(nanosleep_time32),          "nanosleep"             },
 [163] = { 5,   TM|SI,          SEN(mremap),                    "mremap"                },
-[164] = { 3,   0,              SEN(setresuid16),               "setresuid"             },
-[165] = { 3,   0,              SEN(getresuid16),               "getresuid"             },
+[164] = { 3,   TC,             SEN(setresuid16),               "setresuid"             },
+[165] = { 3,   TC,             SEN(getresuid16),               "getresuid"             },
 [166] = { },
 [167] = { 5,   0,              SEN(query_module),              "query_module"          },
 [168] = { 3,   TD,             SEN(poll_time32),               "poll"                  },
 [169] = { 3,   0,              SEN(nfsservctl),                "nfsservctl"            },
-[170] = { 3,   0,              SEN(setresgid16),               "setresgid"             },
-[171] = { 3,   0,              SEN(getresgid16),               "getresgid"             },
-[172] = { 5,   0,              SEN(prctl),                     "prctl"                 },
+[170] = { 3,   TC,             SEN(setresgid16),               "setresgid"             },
+[171] = { 3,   TC,             SEN(getresgid16),               "getresgid"             },
+[172] = { 5,   TC,             SEN(prctl),                     "prctl"                 },
 [173] = { 0,   TS,             SEN(rt_sigreturn),              "rt_sigreturn"          },
 [174] = { 4,   TS,             SEN(rt_sigaction),              "rt_sigaction"          },
 [175] = { 4,   TS,             SEN(rt_sigprocmask),            "rt_sigprocmask"        },
 [176] = { 2,   TS,             SEN(rt_sigpending),             "rt_sigpending"         },
 [177] = { 4,   TS,             SEN(rt_sigtimedwait_time32),    "rt_sigtimedwait"       },
-[178] = { 3,   TS,             SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
+[178] = { 3,   TS|TP,          SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
 [179] = { 2,   TS,             SEN(rt_sigsuspend),             "rt_sigsuspend"         },
 [180] = { 5,   TD,             SEN(pread),                     "pread64"               },
 [181] = { 5,   TD,             SEN(pwrite),                    "pwrite64"              },
 [182] = { 3,   TF,             SEN(chown16),                   "chown"                 },
 [183] = { 2,   TF,             SEN(getcwd),                    "getcwd"                },
-[184] = { 2,   0,              SEN(capget),                    "capget"                },
-[185] = { 2,   0,              SEN(capset),                    "capset"                },
+[184] = { 2,   TC,             SEN(capget),                    "capget"                },
+[185] = { 2,   TC,             SEN(capset),                    "capset"                },
 [186] = { 2,   TS,             SEN(sigaltstack),               "sigaltstack"           },
 [187] = { 4,   TD|TN,          SEN(sendfile),                  "sendfile"              },
 [188] = { 5,   TN,             SEN(getpmsg),                   "getpmsg"               },
 [196] = { 2,   TF|TLST|TSTA,   SEN(lstat64),                   "lstat64"               },
 [197] = { 2,   TD|TFST|TSTA,   SEN(fstat64),                   "fstat64"               },
 [198] = { 3,   TF,             SEN(chown),                     "lchown32"              },
-[199] = { 0,   PU|NF,          SEN(getuid),                    "getuid32"              },
-[200] = { 0,   PU|NF,          SEN(getgid),                    "getgid32"              },
-[201] = { 0,   PU|NF,          SEN(geteuid),                   "geteuid32"             },
-[202] = { 0,   PU|NF,          SEN(getegid),                   "getegid32"             },
-[203] = { 2,   0,              SEN(setreuid),                  "setreuid32"            },
-[204] = { 2,   0,              SEN(setregid),                  "setregid32"            },
-[205] = { 2,   0,              SEN(getgroups),                 "getgroups32"           },
-[206] = { 2,   0,              SEN(setgroups),                 "setgroups32"           },
+[199] = { 0,   TC|PU|NF,       SEN(getuid),                    "getuid32"              },
+[200] = { 0,   TC|PU|NF,       SEN(getgid),                    "getgid32"              },
+[201] = { 0,   TC|PU|NF,       SEN(geteuid),                   "geteuid32"             },
+[202] = { 0,   TC|PU|NF,       SEN(getegid),                   "getegid32"             },
+[203] = { 2,   TC,             SEN(setreuid),                  "setreuid32"            },
+[204] = { 2,   TC,             SEN(setregid),                  "setregid32"            },
+[205] = { 2,   TC,             SEN(getgroups),                 "getgroups32"           },
+[206] = { 2,   TC,             SEN(setgroups),                 "setgroups32"           },
 [207] = { 3,   TD,             SEN(fchown),                    "fchown32"              },
-[208] = { 3,   0,              SEN(setresuid),                 "setresuid32"           },
-[209] = { 3,   0,              SEN(getresuid),                 "getresuid32"           },
-[210] = { 3,   0,              SEN(setresgid),                 "setresgid32"           },
-[211] = { 3,   0,              SEN(getresgid),                 "getresgid32"           },
+[208] = { 3,   TC,             SEN(setresuid),                 "setresuid32"           },
+[209] = { 3,   TC,             SEN(getresuid),                 "getresuid32"           },
+[210] = { 3,   TC,             SEN(setresgid),                 "setresgid32"           },
+[211] = { 3,   TC,             SEN(getresgid),                 "getresgid32"           },
 [212] = { 3,   TF,             SEN(chown),                     "chown32"               },
-[213] = { 1,   0,              SEN(setuid),                    "setuid32"              },
-[214] = { 1,   0,              SEN(setgid),                    "setgid32"              },
-[215] = { 1,   NF,             SEN(setfsuid),                  "setfsuid32"            },
-[216] = { 1,   NF,             SEN(setfsgid),                  "setfsgid32"            },
+[213] = { 1,   TC,             SEN(setuid),                    "setuid32"              },
+[214] = { 1,   TC,             SEN(setgid),                    "setgid32"              },
+[215] = { 1,   TC|NF,          SEN(setfsuid),                  "setfsuid32"            },
+[216] = { 1,   TC|NF,          SEN(setfsgid),                  "setfsgid32"            },
 [217] = { 2,   TF,             SEN(pivotroot),                 "pivot_root"            },
 [218] = { 3,   TM,             SEN(mincore),                   "mincore"               },
 [219] = { 3,   TM,             SEN(madvise),                   "madvise"               },
 [234] = { 2,   TF,             SEN(removexattr),               "lremovexattr"          },
 [235] = { 2,   TD,             SEN(fremovexattr),              "fremovexattr"          },
 [236] = { 0,   PU|NF,          SEN(gettid),                    "gettid"                },
-[237] = { 2,   TS,             SEN(kill),                      "tkill"                 },
+[237] = { 2,   TS|TP,          SEN(tkill),                     "tkill"                 },
 [238] = { 6,   0,              SEN(futex_time32),              "futex"                 },
 [239] = { 3,   0,              SEN(sched_setaffinity),         "sched_setaffinity"     },
 [240] = { 3,   0,              SEN(sched_getaffinity),         "sched_getaffinity"     },
-[241] = { 3,   TS,             SEN(tgkill),                    "tgkill"                },
+[241] = { 3,   TS|TP,          SEN(tgkill),                    "tgkill"                },
 [242] = { },
 [243] = { 2,   TM,             SEN(io_setup),                  "io_setup"              },
 [244] = { 1,   TM,             SEN(io_destroy),                "io_destroy"            },
 [256] = { 2,   0,              SEN(timer_gettime32),           "timer_gettime"         },
 [257] = { 1,   0,              SEN(timer_getoverrun),          "timer_getoverrun"      },
 [258] = { 1,   0,              SEN(timer_delete),              "timer_delete"          },
-[259] = { 2,   0,              SEN(clock_settime32),           "clock_settime"         },
-[260] = { 2,   0,              SEN(clock_gettime32),           "clock_gettime"         },
-[261] = { 2,   0,              SEN(clock_getres_time32),       "clock_getres"          },
+[259] = { 2,   TCL,            SEN(clock_settime32),           "clock_settime"         },
+[260] = { 2,   TCL,            SEN(clock_gettime32),           "clock_gettime"         },
+[261] = { 2,   TCL,            SEN(clock_getres_time32),       "clock_getres"          },
 [262] = { 4,   0,              SEN(clock_nanosleep_time32),    "clock_nanosleep"       },
 [263] = { 5,   0,              SEN(vserver),                   "vserver"               },
 [264] = { 6,   TD,             SEN(fadvise64_64),              "fadvise64_64"          },
 [300] = { 3,   TD|TF,          SEN(faccessat),                 "faccessat"             },
 [301] = { 6,   TD,             SEN(pselect6_time32),           "pselect6"              },
 [302] = { 5,   TD,             SEN(ppoll_time32),              "ppoll"                 },
-[303] = { 1,   TP,             SEN(unshare),                   "unshare"               },
+[303] = { 1,   0,              SEN(unshare),                   "unshare"               },
 [304] = { 2,   0,              SEN(set_robust_list),           "set_robust_list"       },
 [305] = { 3,   0,              SEN(get_robust_list),           "get_robust_list"       },
 [306] = { 6,   TD,             SEN(splice),                    "splice"                },
 [334] = { 4,   0,              SEN(prlimit64),                 "prlimit64"             },
 [335] = { 5,   TD|TF,          SEN(name_to_handle_at),         "name_to_handle_at"     },
 [336] = { 3,   TD,             SEN(open_by_handle_at),         "open_by_handle_at"     },
-[337] = { 2,   0,              SEN(clock_adjtime32),           "clock_adjtime"         },
+[337] = { 2,   TCL,            SEN(clock_adjtime32),           "clock_adjtime"         },
 [338] = { 1,   TD,             SEN(syncfs),                    "syncfs"                },
 [339] = { 2,   TD,             SEN(setns),                     "setns"                 },
 [340] = { 6,   0,              SEN(process_vm_readv),          "process_vm_readv"      },
 [351] = { 3,   TD,             SEN(bpf),                       "bpf"                   },
 [352] = { 3,   0,              SEN(s390_pci_mmio_write),       "s390_pci_mmio_write"   },
 [353] = { 3,   0,              SEN(s390_pci_mmio_read),        "s390_pci_mmio_read"    },
-[354] = { 5,   TD|TF|TP|SE|SI, SEN(execveat),                  "execveat"              },
+[354] = { 5,   TD|TF|TP|TSD|SE|SI,     SEN(execveat),                  "execveat"              },
 [355] = { 1,   TD,             SEN(userfaultfd),               "userfaultfd"           },
 [356] = { 2,   0,              SEN(membarrier),                "membarrier"            },
 [357] = { 5,   TN,             SEN(recvmmsg_time32),           "recvmmsg"              },
 [376] = { 6,   TD,             SEN(preadv2),                   "preadv2"               },
 [377] = { 6,   TD,             SEN(pwritev2),                  "pwritev2"              },
 [378] = { 2,   0,              SEN(s390_guarded_storage),      "s390_guarded_storage"  },
-[379] = { 5,   TD|TF|TSTA,     SEN(statx),                     "statx"                 },
+[379] = { 5,   TD|TF|TFST|TSTA,SEN(statx),                     "statx"                 },
 [380] = { 4,   0,              SEN(s390_sthyi),                "s390_sthyi"            },
 [381] = { 5,   TD,             SEN(kexec_file_load),           "kexec_file_load"       },
 [382] = { 6,   0,              SEN(io_pgetevents_time32),      "io_pgetevents"         },
 [400] = { 4,   TI,             SEN(msgsnd),                    "msgsnd"                },
 [401] = { 5,   TI,             SEN(msgrcv),                    "msgrcv"                },
 [402] = { 3,   TI,             SEN(msgctl),                    "msgctl"                },
-[403] = { 2,   0,              SEN(clock_gettime64),           "clock_gettime64"       },
-[404] = { 2,   0,              SEN(clock_settime64),           "clock_settime64"       },
-[405] = { 2,   0,              SEN(clock_adjtime64),           "clock_adjtime64"       },
-[406] = { 2,   0,              SEN(clock_getres_time64),       "clock_getres_time64"   },
-[407] = { 4,   0,              SEN(clock_nanosleep_time64),    "clock_nanosleep_time64"},
-[408] = { 2,   0,              SEN(timer_gettime64),           "timer_gettime64"       },
-[409] = { 4,   0,              SEN(timer_settime64),           "timer_settime64"       },
-[410] = { 2,   TD,             SEN(timerfd_gettime64),         "timerfd_gettime64"     },
-[411] = { 4,   TD,             SEN(timerfd_settime64),         "timerfd_settime64"     },
-[412] = { 4,   TD|TF,          SEN(utimensat_time64),          "utimensat_time64"      },
-[413] = { 6,   TD,             SEN(pselect6_time64),           "pselect6_time64"       },
-[414] = { 5,   TD,             SEN(ppoll_time64),              "ppoll_time64"          },
-[416] = { 6,   0,              SEN(io_pgetevents_time64),      "io_pgetevents_time64"  },
-[417] = { 5,   TN,             SEN(recvmmsg_time64),           "recvmmsg_time64"       },
-[418] = { 5,   TD,             SEN(mq_timedsend_time64),       "mq_timedsend_time64"   },
-[419] = { 5,   TD,             SEN(mq_timedreceive_time64),    "mq_timedreceive_time64"},
-[420] = { 4,   TI,             SEN(semtimedop_time64),         "semtimedop_time64"     },
-[421] = { 4,   TS,             SEN(rt_sigtimedwait_time64),    "rt_sigtimedwait_time64"},
-[422] = { 6,   0,              SEN(futex_time64),              "futex_time64"          },
-[423] = { 2,   0,              SEN(sched_rr_get_interval_time64),      "sched_rr_get_interval_time64"  },
-[424] = { 4,   TD|TS,          SEN(pidfd_send_signal),         "pidfd_send_signal"     },
-[425] = { 2,   TD,             SEN(io_uring_setup),            "io_uring_setup"        },
-[426] = { 6,   TD|TS,          SEN(io_uring_enter),            "io_uring_enter"        },
-[427] = { 4,   TD|TM,          SEN(io_uring_register),         "io_uring_register"     },
+#include "syscallent-common-32.h"
+#include "syscallent-common.h"
 
 #define SYS_socket_subcall     500
 #include "subcall32.h"
index 1e520761d68737d9dffb17eb2ed4bd147d1812a8..750ab51214f9909560a9b91f8159770ea8940af2 100644 (file)
@@ -9,3 +9,5 @@
 #define HAVE_ARCH_OLD_MMAP_PGOFF 1
 #define HAVE_ARCH_UID16_SYSCALLS 1
 #define SUPPORTED_PERSONALITIES 2
+#define PERSONALITY0_AUDIT_ARCH { AUDIT_ARCH_S390X, 0 }
+#define PERSONALITY1_AUDIT_ARCH { AUDIT_ARCH_S390,  0 }
index 8b12132ec51dc40d795433bcd1dadef9bb654e92..c82c6c3e7b28f4632f236bfcd4ea5155cc168da1 100644 (file)
@@ -1,16 +1,13 @@
 /*
  * Copyright (c) 2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2018-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
  */
 
-#ifndef AUDIT_ARCH_S390
-# define AUDIT_ARCH_S390 0x16
-#endif
-
 int
-get_personality_from_syscall_info(const struct ptrace_syscall_info *sci)
+get_personality_from_syscall_info(const struct_ptrace_syscall_info *sci)
 {
        return sci->arch == AUDIT_ARCH_S390;
 }
diff --git a/linux/s390x/check_scno.c b/linux/s390x/check_scno.c
new file mode 100644 (file)
index 0000000..c2e9aaa
--- /dev/null
@@ -0,0 +1 @@
+#include "s390/check_scno.c"
index 2f9e3b7db78e36c22a985a7cc7d636f11c0c2b79..beb8713178db9c2983f9040b2a4bb8f6fc7a0a86 100644 (file)
@@ -27,6 +27,7 @@
 { "asm/dasd.h", "BIODASDPRRST", _IOC_NONE, 0x4405, 0x00 },
 { "asm/dasd.h", "BIODASDPSRD", _IOC_READ, 0x4404, 0xc0 },
 { "asm/dasd.h", "BIODASDQUIESCE", _IOC_NONE, 0x4406, 0x00 },
+{ "asm/dasd.h", "BIODASDRAS", _IOC_WRITE, 0x4403, 0x10 },
 { "asm/dasd.h", "BIODASDRESUME", _IOC_NONE, 0x4407, 0x00 },
 { "asm/dasd.h", "BIODASDRLSE", _IOC_NONE, 0x4403, 0x00 },
 { "asm/dasd.h", "BIODASDRSRV", _IOC_NONE, 0x4402, 0x00 },
 { "asm/dasd.h", "DASDAPIVER", _IOC_READ, 0x4400, 0x04 },
 { "asm/hypfs.h", "HYPFS_DIAG304", _IOC_READ|_IOC_WRITE, 0x1020, 0x18 },
 { "asm/ioctls.h", "FIOQSIZE", 0, 0x545E, 0 },
+{ "asm/pkey.h", "PKEY_APQNS4K", _IOC_READ|_IOC_WRITE, 0x701b, 0x20 },
+{ "asm/pkey.h", "PKEY_APQNS4KT", _IOC_READ|_IOC_WRITE, 0x701c, 0x58 },
 { "asm/pkey.h", "PKEY_CLR2PROTK", _IOC_READ|_IOC_WRITE, 0x7004, 0x6c },
 { "asm/pkey.h", "PKEY_CLR2SECK", _IOC_READ|_IOC_WRITE, 0x7002, 0x68 },
+{ "asm/pkey.h", "PKEY_CLR2SECK2", _IOC_READ|_IOC_WRITE, 0x7012, 0x48 },
 { "asm/pkey.h", "PKEY_FINDCARD", _IOC_READ|_IOC_WRITE, 0x7005, 0x44 },
 { "asm/pkey.h", "PKEY_GENPROTK", _IOC_READ|_IOC_WRITE, 0x7008, 0x4c },
 { "asm/pkey.h", "PKEY_GENSECK", _IOC_READ|_IOC_WRITE, 0x7001, 0x48 },
+{ "asm/pkey.h", "PKEY_GENSECK2", _IOC_READ|_IOC_WRITE, 0x7011, 0x28 },
 { "asm/pkey.h", "PKEY_KBLOB2PROTK", _IOC_READ|_IOC_WRITE, 0x700a, 0x58 },
+{ "asm/pkey.h", "PKEY_KBLOB2PROTK2", _IOC_READ|_IOC_WRITE, 0x701a, 0x68 },
 { "asm/pkey.h", "PKEY_SEC2PROTK", _IOC_READ|_IOC_WRITE, 0x7003, 0x8c },
 { "asm/pkey.h", "PKEY_SKEY2PKEY", _IOC_READ|_IOC_WRITE, 0x7006, 0x88 },
 { "asm/pkey.h", "PKEY_VERIFYKEY", _IOC_READ|_IOC_WRITE, 0x7007, 0x4c },
+{ "asm/pkey.h", "PKEY_VERIFYKEY2", _IOC_READ|_IOC_WRITE, 0x7017, 0x20 },
 { "asm/pkey.h", "PKEY_VERIFYPROTK", _IOC_WRITE, 0x7009, 0x48 },
 { "asm/sclp_ctl.h", "SCLP_CTL_SCCB", _IOC_READ|_IOC_WRITE, 0x1010, 0x0c },
 { "asm/tape390.h", "TAPE390_CRYPT_QUERY", _IOC_READ, 0x6403, 0x03 },
 { "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_CLEAR_RESET", _IOC_NONE, 0xaec4, 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_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_NORMAL_RESET", _IOC_NONE, 0xaec3, 0x00 },
+{ "linux/kvm.h", "KVM_S390_PV_COMMAND", _IOC_READ|_IOC_WRITE, 0xaec5, 0x20 },
 { "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 },
index 5b61cdc28fe0fb089fdbfda0df452d31eef7d28a..6daa310e3b4b67b8ab12b7935b2ee35ccdd7421f 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2000 IBM Deutschland Entwicklung GmbH, IBM Coporation
- * Copyright (c) 2000-2019 The strace developers.
+ * Copyright (c) 2000-2020 The strace developers.
  * Author: Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
  * All rights reserved.
  *
@@ -19,7 +19,7 @@
 [  8] = { 2,   TD|TF,          SEN(creat),                     "creat"                 },
 [  9] = { 2,   TF,             SEN(link),                      "link"                  },
 [ 10] = { 1,   TF,             SEN(unlink),                    "unlink"                },
-[ 11] = { 3,   TF|TP|SE|SI,    SEN(execve),                    "execve"                },
+[ 11] = { 3,   TF|TP|TSD|SE|SI,        SEN(execve),                    "execve"                },
 [ 12] = { 1,   TF,             SEN(chdir),                     "chdir"                 },
 [ 13] = { },
 [ 14] = { 3,   TF,             SEN(mknod),                     "mknod"                 },
@@ -45,7 +45,7 @@
 [ 34] = { 1,   0,              SEN(nice),                      "nice"                  },
 [ 35] = { },
 [ 36] = { 0,   0,              SEN(sync),                      "sync"                  },
-[ 37] = { 2,   TS,             SEN(kill),                      "kill"                  },
+[ 37] = { 2,   TS|TP,          SEN(kill),                      "kill"                  },
 [ 38] = { 2,   TF,             SEN(rename),                    "rename"                },
 [ 39] = { 2,   TF,             SEN(mkdir),                     "mkdir"                 },
 [ 40] = { 1,   TF,             SEN(rmdir),                     "rmdir"                 },
@@ -83,8 +83,8 @@
 [ 75] = { 2,   0,              SEN(setrlimit),                 "setrlimit"             },
 [ 76] = { },
 [ 77] = { 2,   0,              SEN(getrusage),                 "getrusage"             },
-[ 78] = { 2,   0,              SEN(gettimeofday),              "gettimeofday"          },
-[ 79] = { 2,   0,              SEN(settimeofday),              "settimeofday"          },
+[ 78] = { 2,   TCL,            SEN(gettimeofday),              "gettimeofday"          },
+[ 79] = { 2,   TCL,            SEN(settimeofday),              "settimeofday"          },
 [ 80 ... 82] = { },
 [ 83] = { 2,   TF,             SEN(symlink),                   "symlink"               },
 [ 84] = { },
 [ 99] = { 2,   TF|TSF|TSFA,    SEN(statfs),                    "statfs"                },
 [100] = { 2,   TD|TFSF|TSFA,   SEN(fstatfs),                   "fstatfs"               },
 [101] = { },
-[102] = { 2,   TD,             SEN(socketcall),                "socketcall"            },
+[102] = { 2,   TD|TSD,         SEN(socketcall),                "socketcall"            },
 [103] = { 3,   0,              SEN(syslog),                    "syslog"                },
 [104] = { 3,   0,              SEN(setitimer),                 "setitimer"             },
 [105] = { 2,   0,              SEN(getitimer),                 "getitimer"             },
 [114] = { 4,   TP,             SEN(wait4),                     "wait4"                 },
 [115] = { 1,   TF,             SEN(swapoff),                   "swapoff"               },
 [116] = { 1,   0,              SEN(sysinfo),                   "sysinfo"               },
-[117] = { 5,   TI,             SEN(ipc),                       "ipc"                   },
+[117] = { 5,   TI|TSD,         SEN(ipc),                       "ipc"                   },
 [118] = { 1,   TD,             SEN(fsync),                     "fsync"                 },
 [119] = { 0,   TS,             SEN(sigreturn),                 "sigreturn"             },
 [120] = { 5,   TP,             SEN(clone),                     "clone"                 },
 [121] = { 2,   0,              SEN(setdomainname),             "setdomainname"         },
 [122] = { 1,   0,              SEN(uname),                     "uname"                 },
 [123] = { },
-[124] = { 1,   0,              SEN(adjtimex64),                "adjtimex"              },
+[124] = { 1,   TCL,            SEN(adjtimex64),                "adjtimex"              },
 [125] = { 3,   TM|SI,          SEN(mprotect),                  "mprotect"              },
 [126] = { 3,   TS,             SEN(sigprocmask),               "sigprocmask"           },
 [127] = { 2,   0,              SEN(create_module),             "create_module"         },
 [168] = { 3,   TD,             SEN(poll_time64),               "poll"                  },
 [169] = { 3,   0,              SEN(nfsservctl),                "nfsservctl"            },
 [170 ... 171] = { },
-[172] = { 5,   0,              SEN(prctl),                     "prctl"                 },
+[172] = { 5,   TC,             SEN(prctl),                     "prctl"                 },
 [173] = { 0,   TS,             SEN(rt_sigreturn),              "rt_sigreturn"          },
 [174] = { 4,   TS,             SEN(rt_sigaction),              "rt_sigaction"          },
 [175] = { 4,   TS,             SEN(rt_sigprocmask),            "rt_sigprocmask"        },
 [176] = { 2,   TS,             SEN(rt_sigpending),             "rt_sigpending"         },
 [177] = { 4,   TS,             SEN(rt_sigtimedwait_time64),    "rt_sigtimedwait"       },
-[178] = { 3,   TS,             SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
+[178] = { 3,   TS|TP,          SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
 [179] = { 2,   TS,             SEN(rt_sigsuspend),             "rt_sigsuspend"         },
 [180] = { 4,   TD,             SEN(pread),                     "pread64"               },
 [181] = { 4,   TD,             SEN(pwrite),                    "pwrite64"              },
 [182] = { },
 [183] = { 2,   TF,             SEN(getcwd),                    "getcwd"                },
-[184] = { 2,   0,              SEN(capget),                    "capget"                },
-[185] = { 2,   0,              SEN(capset),                    "capset"                },
+[184] = { 2,   TC,             SEN(capget),                    "capget"                },
+[185] = { 2,   TC,             SEN(capset),                    "capset"                },
 [186] = { 2,   TS,             SEN(sigaltstack),               "sigaltstack"           },
 [187] = { 4,   TD|TN,          SEN(sendfile),                  "sendfile"              },
 [188] = { 5,   TN,             SEN(getpmsg),                   "getpmsg"               },
 [191] = { 2,   0,              SEN(getrlimit),                 "getrlimit"             },
 [196 ... 197] = { },
 [198] = { 3,   TF,             SEN(chown),                     "lchown"                },
-[199] = { 0,   PU|NF,          SEN(getuid),                    "getuid"                },
-[200] = { 0,   PU|NF,          SEN(getgid),                    "getgid"                },
-[201] = { 0,   PU|NF,          SEN(geteuid),                   "geteuid"               },
-[202] = { 0,   PU|NF,          SEN(getegid),                   "getegid"               },
-[203] = { 2,   0,              SEN(setreuid),                  "setreuid"              },
-[204] = { 2,   0,              SEN(setregid),                  "setregid"              },
-[205] = { 2,   0,              SEN(getgroups),                 "getgroups"             },
-[206] = { 2,   0,              SEN(setgroups),                 "setgroups"             },
+[199] = { 0,   TC|PU|NF,       SEN(getuid),                    "getuid"                },
+[200] = { 0,   TC|PU|NF,       SEN(getgid),                    "getgid"                },
+[201] = { 0,   TC|PU|NF,       SEN(geteuid),                   "geteuid"               },
+[202] = { 0,   TC|PU|NF,       SEN(getegid),                   "getegid"               },
+[203] = { 2,   TC,             SEN(setreuid),                  "setreuid"              },
+[204] = { 2,   TC,             SEN(setregid),                  "setregid"              },
+[205] = { 2,   TC,             SEN(getgroups),                 "getgroups"             },
+[206] = { 2,   TC,             SEN(setgroups),                 "setgroups"             },
 [207] = { 3,   TD,             SEN(fchown),                    "fchown"                },
-[208] = { 3,   0,              SEN(setresuid),                 "setresuid"             },
-[209] = { 3,   0,              SEN(getresuid),                 "getresuid"             },
-[210] = { 3,   0,              SEN(setresgid),                 "setresgid"             },
-[211] = { 3,   0,              SEN(getresgid),                 "getresgid"             },
+[208] = { 3,   TC,             SEN(setresuid),                 "setresuid"             },
+[209] = { 3,   TC,             SEN(getresuid),                 "getresuid"             },
+[210] = { 3,   TC,             SEN(setresgid),                 "setresgid"             },
+[211] = { 3,   TC,             SEN(getresgid),                 "getresgid"             },
 [212] = { 3,   TF,             SEN(chown),                     "chown"                 },
-[213] = { 1,   0,              SEN(setuid),                    "setuid"                },
-[214] = { 1,   0,              SEN(setgid),                    "setgid"                },
-[215] = { 1,   NF,             SEN(setfsuid),                  "setfsuid"              },
-[216] = { 1,   NF,             SEN(setfsgid),                  "setfsgid"              },
+[213] = { 1,   TC,             SEN(setuid),                    "setuid"                },
+[214] = { 1,   TC,             SEN(setgid),                    "setgid"                },
+[215] = { 1,   TC|NF,          SEN(setfsuid),                  "setfsuid"              },
+[216] = { 1,   TC|NF,          SEN(setfsgid),                  "setfsgid"              },
 [217] = { 2,   TF,             SEN(pivotroot),                 "pivot_root"            },
 [218] = { 3,   TM,             SEN(mincore),                   "mincore"               },
 [219] = { 3,   TM,             SEN(madvise),                   "madvise"               },
 [234] = { 2,   TF,             SEN(removexattr),               "lremovexattr"          },
 [235] = { 2,   TD,             SEN(fremovexattr),              "fremovexattr"          },
 [236] = { 0,   PU|NF,          SEN(gettid),                    "gettid"                },
-[237] = { 2,   TS,             SEN(kill),                      "tkill"                 },
+[237] = { 2,   TS|TP,          SEN(tkill),                     "tkill"                 },
 [238] = { 6,   0,              SEN(futex_time64),              "futex"                 },
 [239] = { 3,   0,              SEN(sched_setaffinity),         "sched_setaffinity"     },
 [240] = { 3,   0,              SEN(sched_getaffinity),         "sched_getaffinity"     },
-[241] = { 3,   TS,             SEN(tgkill),                    "tgkill"                },
+[241] = { 3,   TS|TP,          SEN(tgkill),                    "tgkill"                },
 [242] = { },
 [243] = { 2,   TM,             SEN(io_setup),                  "io_setup"              },
 [244] = { 1,   TM,             SEN(io_destroy),                "io_destroy"            },
 [256] = { 2,   0,              SEN(timer_gettime64),           "timer_gettime"         },
 [257] = { 1,   0,              SEN(timer_getoverrun),          "timer_getoverrun"      },
 [258] = { 1,   0,              SEN(timer_delete),              "timer_delete"          },
-[259] = { 2,   0,              SEN(clock_settime64),           "clock_settime"         },
-[260] = { 2,   0,              SEN(clock_gettime64),           "clock_gettime"         },
-[261] = { 2,   0,              SEN(clock_getres_time64),       "clock_getres"          },
+[259] = { 2,   TCL,            SEN(clock_settime64),           "clock_settime"         },
+[260] = { 2,   TCL,            SEN(clock_gettime64),           "clock_gettime"         },
+[261] = { 2,   TCL,            SEN(clock_getres_time64),       "clock_getres"          },
 [262] = { 4,   0,              SEN(clock_nanosleep_time64),    "clock_nanosleep"       },
 [263] = { 5,   0,              SEN(vserver),                   "vserver"               },
 [264] = { },
 [300] = { 3,   TD|TF,          SEN(faccessat),                 "faccessat"             },
 [301] = { 6,   TD,             SEN(pselect6_time64),           "pselect6"              },
 [302] = { 5,   TD,             SEN(ppoll_time64),              "ppoll"                 },
-[303] = { 1,   TP,             SEN(unshare),                   "unshare"               },
+[303] = { 1,   0,              SEN(unshare),                   "unshare"               },
 [304] = { 2,   0,              SEN(set_robust_list),           "set_robust_list"       },
 [305] = { 3,   0,              SEN(get_robust_list),           "get_robust_list"       },
 [306] = { 6,   TD,             SEN(splice),                    "splice"                },
 [334] = { 4,   0,              SEN(prlimit64),                 "prlimit64"             },
 [335] = { 5,   TD|TF,          SEN(name_to_handle_at),         "name_to_handle_at"     },
 [336] = { 3,   TD,             SEN(open_by_handle_at),         "open_by_handle_at"     },
-[337] = { 2,   0,              SEN(clock_adjtime64),           "clock_adjtime"         },
+[337] = { 2,   TCL,            SEN(clock_adjtime64),           "clock_adjtime"         },
 [338] = { 1,   TD,             SEN(syncfs),                    "syncfs"                },
 [339] = { 2,   TD,             SEN(setns),                     "setns"                 },
 [340] = { 6,   0,              SEN(process_vm_readv),          "process_vm_readv"      },
 [351] = { 3,   TD,             SEN(bpf),                       "bpf"                   },
 [352] = { 3,   0,              SEN(s390_pci_mmio_write),       "s390_pci_mmio_write"   },
 [353] = { 3,   0,              SEN(s390_pci_mmio_read),        "s390_pci_mmio_read"    },
-[354] = { 5,   TD|TF|TP|SE|SI, SEN(execveat),                  "execveat"              },
+[354] = { 5,   TD|TF|TP|TSD|SE|SI,     SEN(execveat),                  "execveat"              },
 [355] = { 1,   TD,             SEN(userfaultfd),               "userfaultfd"           },
 [356] = { 2,   0,              SEN(membarrier),                "membarrier"            },
 [357] = { 5,   TN,             SEN(recvmmsg_time64),           "recvmmsg"              },
 [376] = { 6,   TD,             SEN(preadv2),                   "preadv2"               },
 [377] = { 6,   TD,             SEN(pwritev2),                  "pwritev2"              },
 [378] = { 2,   0,              SEN(s390_guarded_storage),      "s390_guarded_storage"  },
-[379] = { 5,   TD|TF|TSTA,     SEN(statx),                     "statx"                 },
+[379] = { 5,   TD|TF|TFST|TSTA,SEN(statx),                     "statx"                 },
 [380] = { 4,   0,              SEN(s390_sthyi),                "s390_sthyi"            },
 [381] = { 5,   TD,             SEN(kexec_file_load),           "kexec_file_load"       },
 [382] = { 6,   0,              SEN(io_pgetevents_time64),      "io_pgetevents"         },
 [401] = { 5,   TI,             SEN(msgrcv),                    "msgrcv"                },
 [402] = { 3,   TI,             SEN(msgctl),                    "msgctl"                },
 /* [403 ... 423] - reserved to sync up with other architectures */
-[424] = { 4,   TD|TS,          SEN(pidfd_send_signal),         "pidfd_send_signal"     },
-[425] = { 2,   TD,             SEN(io_uring_setup),            "io_uring_setup"        },
-[426] = { 6,   TD|TS,          SEN(io_uring_enter),            "io_uring_enter"        },
-[427] = { 4,   TD|TM,          SEN(io_uring_register),         "io_uring_register"     },
+#include "syscallent-common.h"
 
 #define SYS_socket_subcall     500
 #include "subcall64.h"
index bd32ac8f1e837212ecf6fdc10f20edde3d975119..a01fb20fe47f9b75bb518bb9b6037fcd58914254 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -8,8 +8,5 @@
 long
 getrval2(struct tcb *tcp)
 {
-       unsigned long val;
-       if (upeek(tcp, 4*(REG_REG0+1), &val) < 0)
-               return -1;
-       return val;
+       return sh_regs.regs[1];
 }
index 741645472c92894d65698774c087f880f0db56f2..f318fab896ac6187bac7358cedc33a5da1385d7b 100644 (file)
@@ -1,10 +1,11 @@
 /*
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
  */
 
-static unsigned long sh_r0;
-#define ARCH_PC_PEEK_ADDR (4 * REG_PC)
-#define ARCH_SP_PEEK_ADDR (4 * 15)
+static struct pt_regs sh_regs;
+#define ARCH_REGS_FOR_GETREGS sh_regs
+#define ARCH_PC_REG sh_regs.pc
+#define ARCH_SP_REG sh_regs.regs[15]
index 9319c61257f5e949c7e6bfbd0f59f378036b7993..0109576103b26e537f3e94020aa79a0aae06c075 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
 static void
 arch_get_error(struct tcb *tcp, const bool check_errno)
 {
-       if (check_errno && is_negated_errno(sh_r0)) {
+       if (check_errno && is_negated_errno(sh_regs.regs[0])) {
                tcp->u_rval = -1;
-               tcp->u_error = -sh_r0;
+               tcp->u_error = -sh_regs.regs[0];
        } else {
-               tcp->u_rval = sh_r0;
+               tcp->u_rval = sh_regs.regs[0];
        }
 }
index b23824d5ecb1a3c0623dfe8338e4586bfa82d8c0..7dd26bf0e1260c5e0aabec15d80b18225e40e5b8 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -9,26 +9,6 @@
 static int
 arch_get_scno(struct tcb *tcp)
 {
-       kernel_ulong_t scno = 0;
-
-       /*
-        * In the new syscall ABI, the system call number is in R3.
-        */
-       if (upeek(tcp, 4*(REG_REG0+3), &scno) < 0)
-               return -1;
-
-       if ((long) scno < 0) {
-               /* Odd as it may seem, a glibc bug has been known to cause
-                  glibc to issue bogus negative syscall numbers.  So for
-                  our purposes, make strace print what it *should* have been */
-               kernel_ulong_t correct_scno = (scno & 0xff);
-               if (debug_flag)
-                       error_msg("Detected glibc bug: bogus system call"
-                                 " number = %ld, correcting to %ld",
-                                 scno, correct_scno);
-               scno = correct_scno;
-       }
-
-       tcp->scno = scno;
+       tcp->scno = sh_regs.regs[3];
        return 1;
 }
index 4156baa8df09800b9f38b64e2acd4e27a760104e..3b9391e8523012f74b7ba62866fb474b8b974bea 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2019 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -9,18 +9,9 @@
 static int
 arch_get_syscall_args(struct tcb *tcp)
 {
-       static const int syscall_regs[MAX_ARGS] = {
-               4 * (REG_REG0+4),
-               4 * (REG_REG0+5),
-               4 * (REG_REG0+6),
-               4 * (REG_REG0+7),
-               4 * (REG_REG0  ),
-               4 * (REG_REG0+1)
-       };
-       unsigned int i;
+       static const unsigned int syscall_regs[MAX_ARGS] = { 4, 5, 6, 7, 0, 1 };
 
-       for (i = 0; i < n_args(tcp); ++i)
-               if (upeek(tcp, syscall_regs[i], &tcp->u_arg[i]) < 0)
-                       return -1;
+       for (unsigned int i = 0; i < n_args(tcp); ++i)
+               tcp->u_arg[i] = sh_regs.regs[syscall_regs[i]];
        return 1;
 }
diff --git a/linux/sh/get_syscall_result.c b/linux/sh/get_syscall_result.c
deleted file mode 100644 (file)
index a8d6bc4..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-/*
- * Copyright (c) 2015-2018 The strace developers.
- * All rights reserved.
- *
- * SPDX-License-Identifier: LGPL-2.1-or-later
- */
-
-static int
-get_syscall_result_regs(struct tcb *tcp)
-{
-       /* new syscall ABI returns result in R0 */
-       return upeek(tcp, 4 * REG_REG0, &sh_r0) < 0 ? -1 : 0;
-}
index ef51a5c465c3456058dfa0654c811c0c93322f16..28ed085fb993bc2611144c3b15072c7be0c3c787 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -8,13 +8,13 @@
 static int
 arch_set_error(struct tcb *tcp)
 {
-       sh_r0 = -tcp->u_error;
-       return upoke(tcp, 4 * REG_REG0, sh_r0);
+       sh_regs.regs[0] = -tcp->u_error;
+       return set_regs(tcp->pid);
 }
 
 static int
 arch_set_success(struct tcb *tcp)
 {
-       sh_r0 = tcp->u_rval;
-       return upoke(tcp, 4 * REG_REG0, sh_r0);
+       sh_regs.regs[0] = tcp->u_rval;
+       return set_regs(tcp->pid);
 }
index 2f0b7703b517dfdf6cffbbccdeefb634f72c4e79..fc2a01d754b24bb62bfa9377abc9b4e901be48d9 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -8,5 +8,8 @@
 static int
 arch_set_scno(struct tcb *tcp, kernel_ulong_t scno)
 {
-       return upoke(tcp, 4 * (REG_REG0 + 3), scno);
+       if (ptrace_syscall_info_is_valid() && get_regs(tcp) < 0)
+               return -1;
+       sh_regs.regs[3] = scno;
+       return set_regs(tcp->pid);
 }
index 44cc9d90c67d7dfa4070a173022cc9ab2db507f4..5349f7200865843aa060cc6cfa9c9c7209995da6 100644 (file)
@@ -3,7 +3,7 @@
  * Copyright (c) 1993, 1994, 1995 Rick Sladkey <jrs@world.std.com>
  * Copyright (c) 2000 PocketPenguins Inc.  Linux for Hitachi SuperH
  *                    port by Greg Banks <gbanks@pocketpenguins.com>
- * Copyright (c) 2000-2019 The strace developers.
+ * Copyright (c) 2000-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -20,9 +20,9 @@
 [  8] = { 2,   TD|TF,          SEN(creat),                     "creat"                 },
 [  9] = { 2,   TF,             SEN(link),                      "link"                  },
 [ 10] = { 1,   TF,             SEN(unlink),                    "unlink"                },
-[ 11] = { 3,   TF|TP|SE|SI,    SEN(execve),                    "execve"                },
+[ 11] = { 3,   TF|TP|TSD|SE|SI,        SEN(execve),                    "execve"                },
 [ 12] = { 1,   TF,             SEN(chdir),                     "chdir"                 },
-[ 13] = { 1,   0,              SEN(time),                      "time"                  },
+[ 13] = { 1,   TCL,            SEN(time),                      "time"                  },
 [ 14] = { 3,   TF,             SEN(mknod),                     "mknod"                 },
 [ 15] = { 2,   TF,             SEN(chmod),                     "chmod"                 },
 [ 16] = { 3,   TF,             SEN(chown16),                   "lchown"                },
@@ -32,8 +32,8 @@
 [ 20] = { 0,   PU|NF,          SEN(getpid),                    "getpid"                },
 [ 21] = { 5,   TF,             SEN(mount),                     "mount"                 },
 [ 22] = { 1,   TF,             SEN(umount),                    "umount"                },
-[ 23] = { 1,   0,              SEN(setuid16),                  "setuid"                },
-[ 24] = { 0,   PU|NF,          SEN(getuid16),                  "getuid"                },
+[ 23] = { 1,   TC,             SEN(setuid16),                  "setuid"                },
+[ 24] = { 0,   TC|PU|NF,       SEN(getuid16),                  "getuid"                },
 [ 25] = { 1,   0,              SEN(stime),                     "stime"                 },
 [ 26] = { 4,   0,              SEN(ptrace),                    "ptrace"                },
 [ 27] = { 1,   0,              SEN(alarm),                     "alarm"                 },
@@ -46,7 +46,7 @@
 [ 34] = { 1,   0,              SEN(nice),                      "nice"                  },
 [ 35] = { 0,   0,              SEN(ftime),                     "ftime"                 },
 [ 36] = { 0,   0,              SEN(sync),                      "sync"                  },
-[ 37] = { 2,   TS,             SEN(kill),                      "kill"                  },
+[ 37] = { 2,   TS|TP,          SEN(kill),                      "kill"                  },
 [ 38] = { 2,   TF,             SEN(rename),                    "rename"                },
 [ 39] = { 2,   TF,             SEN(mkdir),                     "mkdir"                 },
 [ 40] = { 1,   TF,             SEN(rmdir),                     "rmdir"                 },
 [ 43] = { 1,   0,              SEN(times),                     "times"                 },
 [ 44] = { 0,   0,              SEN(prof),                      "prof"                  },
 [ 45] = { 1,   TM|SI,          SEN(brk),                       "brk"                   },
-[ 46] = { 1,   0,              SEN(setgid16),                  "setgid"                },
-[ 47] = { 0,   PU|NF,          SEN(getgid16),                  "getgid"                },
+[ 46] = { 1,   TC,             SEN(setgid16),                  "setgid"                },
+[ 47] = { 0,   TC|PU|NF,       SEN(getgid16),                  "getgid"                },
 [ 48] = { 2,   TS,             SEN(signal),                    "signal"                },
-[ 49] = { 0,   PU|NF,          SEN(geteuid16),                 "geteuid"               },
-[ 50] = { 0,   PU|NF,          SEN(getegid16),                 "getegid"               },
+[ 49] = { 0,   TC|PU|NF,       SEN(geteuid16),                 "geteuid"               },
+[ 50] = { 0,   TC|PU|NF,       SEN(getegid16),                 "getegid"               },
 [ 51] = { 1,   TF,             SEN(acct),                      "acct"                  },
 [ 52] = { 2,   TF,             SEN(umount2),                   "umount2"               },
 [ 53] = { 0,   0,              SEN(lock),                      "lock"                  },
 [ 67] = { 3,   TS,             SEN(sigaction),                 "sigaction"             },
 [ 68] = { 0,   TS,             SEN(sgetmask),                  "sgetmask"              },
 [ 69] = { 1,   TS,             SEN(ssetmask),                  "ssetmask"              },
-[ 70] = { 2,   0,              SEN(setreuid16),                "setreuid"              },
-[ 71] = { 2,   0,              SEN(setregid16),                "setregid"              },
+[ 70] = { 2,   TC,             SEN(setreuid16),                "setreuid"              },
+[ 71] = { 2,   TC,             SEN(setregid16),                "setregid"              },
 [ 72] = { 1,   TS,             SEN(sigsuspend),                "sigsuspend"            },
 [ 73] = { 1,   TS,             SEN(sigpending),                "sigpending"            },
 [ 74] = { 2,   0,              SEN(sethostname),               "sethostname"           },
 [ 75] = { 2,   0,              SEN(setrlimit),                 "setrlimit"             },
 [ 76] = { 2,   0,              SEN(getrlimit),                 "getrlimit"             },
 [ 77] = { 2,   0,              SEN(getrusage),                 "getrusage"             },
-[ 78] = { 2,   0,              SEN(gettimeofday),              "gettimeofday"          },
-[ 79] = { 2,   0,              SEN(settimeofday),              "settimeofday"          },
-[ 80] = { 2,   0,              SEN(getgroups16),               "getgroups"             },
-[ 81] = { 2,   0,              SEN(setgroups16),               "setgroups"             },
+[ 78] = { 2,   TCL,            SEN(gettimeofday),              "gettimeofday"          },
+[ 79] = { 2,   TCL,            SEN(settimeofday),              "settimeofday"          },
+[ 80] = { 2,   TC,             SEN(getgroups16),               "getgroups"             },
+[ 81] = { 2,   TC,             SEN(setgroups16),               "setgroups"             },
 [ 82] = { 1,   TD,             SEN(oldselect),                 "select"                },
 [ 83] = { 2,   TF,             SEN(symlink),                   "symlink"               },
 [ 84] = { 2,   TF|TLST|TSTA,   SEN(oldlstat),                  "oldlstat"              },
 [ 99] = { 2,   TF|TSF|TSFA,    SEN(statfs),                    "statfs"                },
 [100] = { 2,   TD|TFSF|TSFA,   SEN(fstatfs),                   "fstatfs"               },
 [101] = { 3,   0,              SEN(ioperm),                    "ioperm"                },
-[102] = { 2,   TD,             SEN(socketcall),                "socketcall"            },
+[102] = { 2,   TD|TSD,         SEN(socketcall),                "socketcall"            },
 [103] = { 3,   0,              SEN(syslog),                    "syslog"                },
 [104] = { 3,   0,              SEN(setitimer),                 "setitimer"             },
 [105] = { 2,   0,              SEN(getitimer),                 "getitimer"             },
 [114] = { 4,   TP,             SEN(wait4),                     "wait4"                 },
 [115] = { 1,   TF,             SEN(swapoff),                   "swapoff"               },
 [116] = { 1,   0,              SEN(sysinfo),                   "sysinfo"               },
-[117] = { 6,   TI,             SEN(ipc),                       "ipc"                   },
+[117] = { 6,   TI|TSD,         SEN(ipc),                       "ipc"                   },
 [118] = { 1,   TD,             SEN(fsync),                     "fsync"                 },
 [119] = { 0,   TS,             SEN(sigreturn),                 "sigreturn"             },
 [120] = { 5,   TP,             SEN(clone),                     "clone"                 },
 [121] = { 2,   0,              SEN(setdomainname),             "setdomainname"         },
 [122] = { 1,   0,              SEN(uname),                     "uname"                 },
 [123] = { 3,   0,              SEN(cacheflush),                "cacheflush"            },
-[124] = { 1,   0,              SEN(adjtimex32),                "adjtimex"              },
+[124] = { 1,   TCL,            SEN(adjtimex32),                "adjtimex"              },
 [125] = { 3,   TM|SI,          SEN(mprotect),                  "mprotect"              },
 [126] = { 3,   TS,             SEN(sigprocmask),               "sigprocmask"           },
 [127] = { 2,   0,              SEN(create_module),             "create_module"         },
 [135] = { 3,   0,              SEN(sysfs),                     "sysfs"                 },
 [136] = { 1,   NF,             SEN(personality),               "personality"           },
 [137] = { 5,   0,              SEN(afs_syscall),               "afs_syscall"           },
-[138] = { 1,   NF,             SEN(setfsuid16),                "setfsuid"              },
-[139] = { 1,   NF,             SEN(setfsgid16),                "setfsgid"              },
+[138] = { 1,   TC|NF,          SEN(setfsuid16),                "setfsuid"              },
+[139] = { 1,   TC|NF,          SEN(setfsgid16),                "setfsgid"              },
 [140] = { 5,   TD,             SEN(llseek),                    "_llseek"               },
 [141] = { 3,   TD,             SEN(getdents),                  "getdents"              },
 [142] = { 5,   TD,             SEN(select),                    "_newselect"            },
 [161] = { 2,   0,              SEN(sched_rr_get_interval_time32),"sched_rr_get_interval"},
 [162] = { 2,   0,              SEN(nanosleep_time32),          "nanosleep"             },
 [163] = { 5,   TM|SI,          SEN(mremap),                    "mremap"                },
-[164] = { 3,   0,              SEN(setresuid16),               "setresuid"             },
-[165] = { 3,   0,              SEN(getresuid16),               "getresuid"             },
+[164] = { 3,   TC,             SEN(setresuid16),               "setresuid"             },
+[165] = { 3,   TC,             SEN(getresuid16),               "getresuid"             },
 [166] = { 5,   0,              SEN(vm86),                      "vm86"                  },
 [167] = { 5,   0,              SEN(query_module),              "query_module"          },
 [168] = { 3,   TD,             SEN(poll_time32),               "poll"                  },
 [169] = { 3,   0,              SEN(nfsservctl),                "nfsservctl"            },
-[170] = { 3,   0,              SEN(setresgid16),               "setresgid"             },
-[171] = { 3,   0,              SEN(getresgid16),               "getresgid"             },
-[172] = { 5,   0,              SEN(prctl),                     "prctl"                 },
+[170] = { 3,   TC,             SEN(setresgid16),               "setresgid"             },
+[171] = { 3,   TC,             SEN(getresgid16),               "getresgid"             },
+[172] = { 5,   TC,             SEN(prctl),                     "prctl"                 },
 [173] = { 0,   TS,             SEN(rt_sigreturn),              "rt_sigreturn"          },
 [174] = { 4,   TS,             SEN(rt_sigaction),              "rt_sigaction"          },
 [175] = { 4,   TS,             SEN(rt_sigprocmask),            "rt_sigprocmask"        },
 [176] = { 2,   TS,             SEN(rt_sigpending),             "rt_sigpending"         },
 [177] = { 4,   TS,             SEN(rt_sigtimedwait_time32),    "rt_sigtimedwait"       },
-[178] = { 3,   TS,             SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
+[178] = { 3,   TS|TP,          SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
 [179] = { 2,   TS,             SEN(rt_sigsuspend),             "rt_sigsuspend"         },
 [180] = { 6,   TD,             SEN(pread),                     "pread64"               },
 [181] = { 6,   TD,             SEN(pwrite),                    "pwrite64"              },
 [182] = { 3,   TF,             SEN(chown16),                   "chown"                 },
 [183] = { 2,   TF,             SEN(getcwd),                    "getcwd"                },
-[184] = { 2,   0,              SEN(capget),                    "capget"                },
-[185] = { 2,   0,              SEN(capset),                    "capset"                },
+[184] = { 2,   TC,             SEN(capget),                    "capget"                },
+[185] = { 2,   TC,             SEN(capset),                    "capset"                },
 [186] = { 2,   TS,             SEN(sigaltstack),               "sigaltstack"           },
 [187] = { 4,   TD|TN,          SEN(sendfile),                  "sendfile"              },
 [188 ... 189] = { },
 [196] = { 2,   TF|TLST|TSTA,   SEN(lstat64),                   "lstat64"               },
 [197] = { 2,   TD|TFST|TSTA,   SEN(fstat64),                   "fstat64"               },
 [198] = { 3,   TF,             SEN(chown),                     "lchown32"              },
-[199] = { 0,   PU|NF,          SEN(getuid),                    "getuid32"              },
-[200] = { 0,   PU|NF,          SEN(getgid),                    "getgid32"              },
-[201] = { 0,   PU|NF,          SEN(geteuid),                   "geteuid32"             },
-[202] = { 0,   PU|NF,          SEN(getegid),                   "getegid32"             },
-[203] = { 2,   0,              SEN(setreuid),                  "setreuid32"            },
-[204] = { 2,   0,              SEN(setregid),                  "setregid32"            },
-[205] = { 2,   0,              SEN(getgroups),                 "getgroups32"           },
-[206] = { 2,   0,              SEN(setgroups),                 "setgroups32"           },
+[199] = { 0,   TC|PU|NF,       SEN(getuid),                    "getuid32"              },
+[200] = { 0,   TC|PU|NF,       SEN(getgid),                    "getgid32"              },
+[201] = { 0,   TC|PU|NF,       SEN(geteuid),                   "geteuid32"             },
+[202] = { 0,   TC|PU|NF,       SEN(getegid),                   "getegid32"             },
+[203] = { 2,   TC,             SEN(setreuid),                  "setreuid32"            },
+[204] = { 2,   TC,             SEN(setregid),                  "setregid32"            },
+[205] = { 2,   TC,             SEN(getgroups),                 "getgroups32"           },
+[206] = { 2,   TC,             SEN(setgroups),                 "setgroups32"           },
 [207] = { 3,   TD,             SEN(fchown),                    "fchown32"              },
-[208] = { 3,   0,              SEN(setresuid),                 "setresuid32"           },
-[209] = { 3,   0,              SEN(getresuid),                 "getresuid32"           },
-[210] = { 3,   0,              SEN(setresgid),                 "setresgid32"           },
-[211] = { 3,   0,              SEN(getresgid),                 "getresgid32"           },
+[208] = { 3,   TC,             SEN(setresuid),                 "setresuid32"           },
+[209] = { 3,   TC,             SEN(getresuid),                 "getresuid32"           },
+[210] = { 3,   TC,             SEN(setresgid),                 "setresgid32"           },
+[211] = { 3,   TC,             SEN(getresgid),                 "getresgid32"           },
 [212] = { 3,   TF,             SEN(chown),                     "chown32"               },
-[213] = { 1,   0,              SEN(setuid),                    "setuid32"              },
-[214] = { 1,   0,              SEN(setgid),                    "setgid32"              },
-[215] = { 1,   NF,             SEN(setfsuid),                  "setfsuid32"            },
-[216] = { 1,   NF,             SEN(setfsgid),                  "setfsgid32"            },
+[213] = { 1,   TC,             SEN(setuid),                    "setuid32"              },
+[214] = { 1,   TC,             SEN(setgid),                    "setgid32"              },
+[215] = { 1,   TC|NF,          SEN(setfsuid),                  "setfsuid32"            },
+[216] = { 1,   TC|NF,          SEN(setfsgid),                  "setfsgid32"            },
 [217] = { 2,   TF,             SEN(pivotroot),                 "pivot_root"            },
 [218] = { 3,   TM,             SEN(mincore),                   "mincore"               },
 [219] = { 3,   TM,             SEN(madvise),                   "madvise"               },
 [235] = { 2,   TF,             SEN(removexattr),               "removexattr"           },
 [236] = { 2,   TF,             SEN(removexattr),               "lremovexattr"          },
 [237] = { 2,   TD,             SEN(fremovexattr),              "fremovexattr"          },
-[238] = { 2,   TS,             SEN(kill),                      "tkill"                 },
+[238] = { 2,   TS|TP,          SEN(tkill),                     "tkill"                 },
 [239] = { 4,   TD|TN,          SEN(sendfile64),                "sendfile64"            },
 [240] = { 6,   0,              SEN(futex_time32),              "futex"                 },
 [241] = { 3,   0,              SEN(sched_setaffinity),         "sched_setaffinity"     },
 [261] = { 2,   0,              SEN(timer_gettime32),           "timer_gettime"         },
 [262] = { 1,   0,              SEN(timer_getoverrun),          "timer_getoverrun"      },
 [263] = { 1,   0,              SEN(timer_delete),              "timer_delete"          },
-[264] = { 2,   0,              SEN(clock_settime32),           "clock_settime"         },
-[265] = { 2,   0,              SEN(clock_gettime32),           "clock_gettime"         },
-[266] = { 2,   0,              SEN(clock_getres_time32),       "clock_getres"          },
+[264] = { 2,   TCL,            SEN(clock_settime32),           "clock_settime"         },
+[265] = { 2,   TCL,            SEN(clock_gettime32),           "clock_gettime"         },
+[266] = { 2,   TCL,            SEN(clock_getres_time32),       "clock_getres"          },
 [267] = { 4,   0,              SEN(clock_nanosleep_time32),    "clock_nanosleep"       },
 [268] = { 3,   TF|TSF|TSFA,    SEN(statfs64),                  "statfs64"              },
 [269] = { 3,   TD|TFSF|TSFA,   SEN(fstatfs64),                 "fstatfs64"             },
-[270] = { 3,   TS,             SEN(tgkill),                    "tgkill"                },
+[270] = { 3,   TS|TP,          SEN(tgkill),                    "tgkill"                },
 [271] = { 2,   TF,             SEN(utimes),                    "utimes"                },
 [272] = { 6,   TD,             SEN(fadvise64_64),              "fadvise64_64"          },
 [273] = { },
 [307] = { 3,   TD|TF,          SEN(faccessat),                 "faccessat"             },
 [308] = { 6,   TD,             SEN(pselect6_time32),           "pselect6"              },
 [309] = { 5,   TD,             SEN(ppoll_time32),              "ppoll"                 },
-[310] = { 1,   TP,             SEN(unshare),                   "unshare"               },
+[310] = { 1,   0,              SEN(unshare),                   "unshare"               },
 [311] = { 2,   0,              SEN(set_robust_list),           "set_robust_list"       },
 [312] = { 3,   0,              SEN(get_robust_list),           "get_robust_list"       },
 [313] = { 6,   TD,             SEN(splice),                    "splice"                },
 [358] = { 4,   TN,             SEN(accept4),                   "accept4"               },
 [359] = { 5,   TD|TF,          SEN(name_to_handle_at),         "name_to_handle_at"     },
 [360] = { 3,   TD,             SEN(open_by_handle_at),         "open_by_handle_at"     },
-[361] = { 2,   0,              SEN(clock_adjtime32),           "clock_adjtime"         },
+[361] = { 2,   TCL,            SEN(clock_adjtime32),           "clock_adjtime"         },
 [362] = { 1,   TD,             SEN(syncfs),                    "syncfs"                },
 [363] = { 4,   TN,             SEN(sendmmsg),                  "sendmmsg"              },
 [364] = { 2,   TD,             SEN(setns),                     "setns"                 },
 [373] = { 3,   0,              SEN(getrandom),                 "getrandom"             },
 [374] = { 2,   TD,             SEN(memfd_create),              "memfd_create"          },
 [375] = { 3,   TD,             SEN(bpf),                       "bpf"                   },
-[376] = { 5,   TD|TF|TP|SE|SI, SEN(execveat),                  "execveat"              },
+[376] = { 5,   TD|TF|TP|TSD|SE|SI,     SEN(execveat),                  "execveat"              },
 [377] = { 1,   TD,             SEN(userfaultfd),               "userfaultfd"           },
 [378] = { 2,   0,              SEN(membarrier),                "membarrier"            },
 [379] = { 3,   TM,             SEN(mlock2),                    "mlock2"                },
 [380] = { 6,   TD,             SEN(copy_file_range),           "copy_file_range"       },
 [381] = { 6,   TD,             SEN(preadv2),                   "preadv2"               },
 [382] = { 6,   TD,             SEN(pwritev2),                  "pwritev2"              },
-[383] = { 5,   TD|TF|TSTA,     SEN(statx),                     "statx"                 },
+[383] = { 5,   TD|TF|TFST|TSTA,SEN(statx),                     "statx"                 },
 [384] = { 4,   TM|SI,          SEN(pkey_mprotect),             "pkey_mprotect"         },
 [385] = { 2,   0,              SEN(pkey_alloc),                "pkey_alloc"            },
 [386] = { 1,   0,              SEN(pkey_free),                 "pkey_free"             },
 [400] = { 4,   TI,             SEN(msgsnd),                    "msgsnd"                },
 [401] = { 5,   TI,             SEN(msgrcv),                    "msgrcv"                },
 [402] = { 3,   TI,             SEN(msgctl),                    "msgctl"                },
-[403] = { 2,   0,              SEN(clock_gettime64),           "clock_gettime64"       },
-[404] = { 2,   0,              SEN(clock_settime64),           "clock_settime64"       },
-[405] = { 2,   0,              SEN(clock_adjtime64),           "clock_adjtime64"       },
-[406] = { 2,   0,              SEN(clock_getres_time64),       "clock_getres_time64"   },
-[407] = { 4,   0,              SEN(clock_nanosleep_time64),    "clock_nanosleep_time64"},
-[408] = { 2,   0,              SEN(timer_gettime64),           "timer_gettime64"       },
-[409] = { 4,   0,              SEN(timer_settime64),           "timer_settime64"       },
-[410] = { 2,   TD,             SEN(timerfd_gettime64),         "timerfd_gettime64"     },
-[411] = { 4,   TD,             SEN(timerfd_settime64),         "timerfd_settime64"     },
-[412] = { 4,   TD|TF,          SEN(utimensat_time64),          "utimensat_time64"      },
-[413] = { 6,   TD,             SEN(pselect6_time64),           "pselect6_time64"       },
-[414] = { 5,   TD,             SEN(ppoll_time64),              "ppoll_time64"          },
-[416] = { 6,   0,              SEN(io_pgetevents_time64),      "io_pgetevents_time64"  },
-[417] = { 5,   TN,             SEN(recvmmsg_time64),           "recvmmsg_time64"       },
-[418] = { 5,   TD,             SEN(mq_timedsend_time64),       "mq_timedsend_time64"   },
-[419] = { 5,   TD,             SEN(mq_timedreceive_time64),    "mq_timedreceive_time64"},
-[420] = { 4,   TI,             SEN(semtimedop_time64),         "semtimedop_time64"     },
-[421] = { 4,   TS,             SEN(rt_sigtimedwait_time64),    "rt_sigtimedwait_time64"},
-[422] = { 6,   0,              SEN(futex_time64),              "futex_time64"          },
-[423] = { 2,   0,              SEN(sched_rr_get_interval_time64),      "sched_rr_get_interval_time64"  },
-[424] = { 4,   TD|TS,          SEN(pidfd_send_signal),         "pidfd_send_signal"     },
-[425] = { 2,   TD,             SEN(io_uring_setup),            "io_uring_setup"        },
-[426] = { 6,   TD|TS,          SEN(io_uring_enter),            "io_uring_enter"        },
-[427] = { 4,   TD|TM,          SEN(io_uring_register),         "io_uring_register"     },
+#include "syscallent-common-32.h"
+#include "syscallent-common.h"
 
 #define SYS_socket_subcall     500
 #include "subcall32.h"
index 9b3d4eb3bcb8d141523b9ef584496cb670463a6b..4bd08b6d35d372b789922e5971fdb31199265cd5 100644 (file)
@@ -1,10 +1,11 @@
 /*
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
  */
 
-static unsigned long sh64_r9;
-#define ARCH_PC_PEEK_ADDR REG_PC
-#define ARCH_SP_PEEK_ADDR REG_GENERAL(15)
+static struct pt_regs sh64_regs;
+#define ARCH_REGS_FOR_GETREGS sh64_regs
+#define ARCH_PC_REG sh64_regs.pc
+#define ARCH_SP_REG sh64_regs.regs[15]
diff --git a/linux/sh64/arch_regs.h b/linux/sh64/arch_regs.h
deleted file mode 100644 (file)
index 5bf759d..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright (c) 2015-2018 The strace developers.
- * All rights reserved.
- *
- * SPDX-License-Identifier: LGPL-2.1-or-later
- */
-
-/* SH64 Linux - this code assumes the following kernel API for system calls:
-       PC           Offset 0
-       System Call  Offset 16 (actually, (syscall no.) | (0x1n << 16),
-                    where n = no. of parameters.
-       Other regs   Offset 24+
-
-       On entry:    R2-7 = parameters 1-6 (as many as necessary)
-       On return:   R9   = result.
-*/
-
-/* Offset for peeks of registers */
-#define REG_OFFSET     (24)
-#define REG_GENERAL(x) (8*(x)+REG_OFFSET)
-#define REG_PC         (0*8)
-#define REG_SYSCALL    (2*8)
index 795031c953a2c0703a40a1b23b20fad962a4e1be..44242299a1e14d06c8de2d16307ffc77574981e7 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
 static void
 arch_get_error(struct tcb *tcp, const bool check_errno)
 {
-       if (check_errno && is_negated_errno(sh64_r9)) {
+       if (check_errno && is_negated_errno(sh64_regs.regs[9])) {
                tcp->u_rval = -1;
-               tcp->u_error = -sh64_r9;
+               tcp->u_error = -sh64_regs.regs[9];
        } else {
-               tcp->u_rval = sh64_r9;
+               tcp->u_rval = sh64_regs.regs[9];
        }
 }
index c85786bd775de547ec5c5d6e19a2ad0e9519d6df..c769dce47a7572e99967ecf16d07703c5f5f7419 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -9,8 +9,6 @@
 static int
 arch_get_scno(struct tcb *tcp)
 {
-       if (upeek(tcp, REG_SYSCALL, &tcp->scno) < 0)
-               return -1;
-       tcp->scno &= 0xffff;
+       tcp->scno = sh64_regs.regs[9];
        return 1;
 }
index 4b53e20eaf6ee0e666a6bb0a000c54b50a08a4e1..8dd38b0b43709f94fa90410acdce46ca47c77d1d 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2019 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -9,13 +9,7 @@
 static int
 arch_get_syscall_args(struct tcb *tcp)
 {
-       /* Registers used by SH5 Linux system calls for parameters */
-       static const int syscall_regs[MAX_ARGS] = { 2, 3, 4, 5, 6, 7 };
-       unsigned int i;
-
-       for (i = 0; i < n_args(tcp); ++i)
-               if (upeek(tcp, REG_GENERAL(syscall_regs[i]),
-                         &tcp->u_arg[i]) < 0)
-                       return -1;
+       for (unsigned int i = 0; i < n_args(tcp); ++i)
+               tcp->u_arg[i] = sh64_regs.regs[i + 2];
        return 1;
 }
diff --git a/linux/sh64/get_syscall_result.c b/linux/sh64/get_syscall_result.c
deleted file mode 100644 (file)
index 1183f68..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-/*
- * Copyright (c) 2015-2018 The strace developers.
- * All rights reserved.
- *
- * SPDX-License-Identifier: LGPL-2.1-or-later
- */
-
-static int
-get_syscall_result_regs(struct tcb *tcp)
-{
-       /* ABI defines result returned in r9 */
-       return upeek(tcp, REG_GENERAL(9), &sh64_r9) < 0 ? -1 : 0;
-}
index 4a9835718093a0d51136c323ed290c4d8e6c423c..91da77724b6d7d9609bbea4c6a1b2ebbcc794b6a 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -8,13 +8,13 @@
 static int
 arch_set_error(struct tcb *tcp)
 {
-       sh64_r9 = -tcp->u_error;
-       return upoke(tcp, REG_GENERAL(9), sh64_r9);
+       sh64_regs.regs[9] = -tcp->u_error;
+       return set_regs(tcp->pid);
 }
 
 static int
 arch_set_success(struct tcb *tcp)
 {
-       sh64_r9 = tcp->u_rval;
-       return upoke(tcp, REG_GENERAL(9), sh64_r9);
+       sh64_regs.regs[9] = tcp->u_rval;
+       return set_regs(tcp->pid);
 }
index f7e0fdfa5baf8865bd8cc17262f4b2ca3429b756..79d7213b0818797a1e318ca5b7573273f459ba26 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -8,5 +8,8 @@
 static int
 arch_set_scno(struct tcb *tcp, kernel_ulong_t scno)
 {
-       return upoke(tcp, REG_SYSCALL, scno);
+       if (ptrace_syscall_info_is_valid() && get_regs(tcp) < 0)
+               return -1;
+       sh64_regs.regs[9] = scno;
+       return set_regs(tcp->pid);
 }
index a21b0c47d63cdf54cde08aff03b7e84da35679ba..4ec35d3159dd2215dcb29d6988f4ba5b5a82d543 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 1993 Branko Lankester <branko@hacktic.nl>
  * Copyright (c) 1993, 1994, 1995 Rick Sladkey <jrs@world.std.com>
- * Copyright (c) 1995-2019 The strace developers.
+ * Copyright (c) 1995-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -18,9 +18,9 @@
 [  8] = { 2,   TD|TF,          SEN(creat),                     "creat"                 },
 [  9] = { 2,   TF,             SEN(link),                      "link"                  },
 [ 10] = { 1,   TF,             SEN(unlink),                    "unlink"                },
-[ 11] = { 3,   TF|TP|SE|SI,    SEN(execve),                    "execve"                },
+[ 11] = { 3,   TF|TP|TSD|SE|SI,        SEN(execve),                    "execve"                },
 [ 12] = { 1,   TF,             SEN(chdir),                     "chdir"                 },
-[ 13] = { 1,   0,              SEN(time),                      "time"                  },
+[ 13] = { 1,   TCL,            SEN(time),                      "time"                  },
 [ 14] = { 3,   TF,             SEN(mknod),                     "mknod"                 },
 [ 15] = { 2,   TF,             SEN(chmod),                     "chmod"                 },
 [ 16] = { 3,   TF,             SEN(chown16),                   "lchown"                },
@@ -30,8 +30,8 @@
 [ 20] = { 0,   PU|NF,          SEN(getpid),                    "getpid"                },
 [ 21] = { 5,   TF,             SEN(mount),                     "mount"                 },
 [ 22] = { 1,   TF,             SEN(umount),                    "umount"                },
-[ 23] = { 1,   0,              SEN(setuid16),                  "setuid"                },
-[ 24] = { 0,   PU|NF,          SEN(getuid16),                  "getuid"                },
+[ 23] = { 1,   TC,             SEN(setuid16),                  "setuid"                },
+[ 24] = { 0,   TC|PU|NF,       SEN(getuid16),                  "getuid"                },
 [ 25] = { 1,   0,              SEN(stime),                     "stime"                 },
 [ 26] = { 4,   0,              SEN(ptrace),                    "ptrace"                },
 [ 27] = { 1,   0,              SEN(alarm),                     "alarm"                 },
@@ -44,7 +44,7 @@
 [ 34] = { 1,   0,              SEN(nice),                      "nice"                  },
 [ 35] = { 0,   0,              SEN(ftime),                     "ftime"                 },
 [ 36] = { 0,   0,              SEN(sync),                      "sync"                  },
-[ 37] = { 2,   TS,             SEN(kill),                      "kill"                  },
+[ 37] = { 2,   TS|TP,          SEN(kill),                      "kill"                  },
 [ 38] = { 2,   TF,             SEN(rename),                    "rename"                },
 [ 39] = { 2,   TF,             SEN(mkdir),                     "mkdir"                 },
 [ 40] = { 1,   TF,             SEN(rmdir),                     "rmdir"                 },
 [ 43] = { 1,   0,              SEN(times),                     "times"                 },
 [ 44] = { 0,   0,              SEN(prof),                      "prof"                  },
 [ 45] = { 1,   TM|SI,          SEN(brk),                       "brk"                   },
-[ 46] = { 1,   0,              SEN(setgid16),                  "setgid"                },
-[ 47] = { 0,   PU|NF,          SEN(getgid16),                  "getgid"                },
+[ 46] = { 1,   TC,             SEN(setgid16),                  "setgid"                },
+[ 47] = { 0,   TC|PU|NF,       SEN(getgid16),                  "getgid"                },
 [ 48] = { 2,   TS,             SEN(signal),                    "signal"                },
-[ 49] = { 0,   PU|NF,          SEN(geteuid16),                 "geteuid"               },
-[ 50] = { 0,   PU|NF,          SEN(getegid16),                 "getegid"               },
+[ 49] = { 0,   TC|PU|NF,       SEN(geteuid16),                 "geteuid"               },
+[ 50] = { 0,   TC|PU|NF,       SEN(getegid16),                 "getegid"               },
 [ 51] = { 1,   TF,             SEN(acct),                      "acct"                  },
 [ 52] = { 2,   TF,             SEN(umount2),                   "umount2"               },
 [ 53] = { 0,   0,              SEN(lock),                      "lock"                  },
 [ 67] = { 3,   TS,             SEN(sigaction),                 "sigaction"             },
 [ 68] = { 0,   TS,             SEN(sgetmask),                  "sgetmask"              },
 [ 69] = { 1,   TS,             SEN(ssetmask),                  "ssetmask"              },
-[ 70] = { 2,   0,              SEN(setreuid16),                "setreuid"              },
-[ 71] = { 2,   0,              SEN(setregid16),                "setregid"              },
+[ 70] = { 2,   TC,             SEN(setreuid16),                "setreuid"              },
+[ 71] = { 2,   TC,             SEN(setregid16),                "setregid"              },
 [ 72] = { 1,   TS,             SEN(sigsuspend),                "sigsuspend"            },
 [ 73] = { 1,   TS,             SEN(sigpending),                "sigpending"            },
 [ 74] = { 2,   0,              SEN(sethostname),               "sethostname"           },
 [ 75] = { 2,   0,              SEN(setrlimit),                 "setrlimit"             },
 [ 76] = { 2,   0,              SEN(getrlimit),                 "getrlimit"             },
 [ 77] = { 2,   0,              SEN(getrusage),                 "getrusage"             },
-[ 78] = { 2,   0,              SEN(gettimeofday),              "gettimeofday"          },
-[ 79] = { 2,   0,              SEN(settimeofday),              "settimeofday"          },
-[ 80] = { 2,   0,              SEN(getgroups16),               "getgroups"             },
-[ 81] = { 2,   0,              SEN(setgroups16),               "setgroups"             },
+[ 78] = { 2,   TCL,            SEN(gettimeofday),              "gettimeofday"          },
+[ 79] = { 2,   TCL,            SEN(settimeofday),              "settimeofday"          },
+[ 80] = { 2,   TC,             SEN(getgroups16),               "getgroups"             },
+[ 81] = { 2,   TC,             SEN(setgroups16),               "setgroups"             },
 [ 82] = { },
 [ 83] = { 2,   TF,             SEN(symlink),                   "symlink"               },
 [ 84] = { 2,   TF|TLST|TSTA,   SEN(oldlstat),                  "oldlstat"              },
 [ 99] = { 2,   TF|TSF|TSFA,    SEN(statfs),                    "statfs"                },
 [100] = { 2,   TD|TFSF|TSFA,   SEN(fstatfs),                   "fstatfs"               },
 [101] = { 3,   0,              SEN(ioperm),                    "ioperm"                },
-[102] = { 2,   TD,             SEN(socketcall),                "socketcall"            },
+[102] = { 2,   TD|TSD,         SEN(socketcall),                "socketcall"            },
 [103] = { 3,   0,              SEN(syslog),                    "syslog"                },
 [104] = { 3,   0,              SEN(setitimer),                 "setitimer"             },
 [105] = { 2,   0,              SEN(getitimer),                 "getitimer"             },
 [114] = { 4,   TP,             SEN(wait4),                     "wait4"                 },
 [115] = { 1,   TF,             SEN(swapoff),                   "swapoff"               },
 [116] = { 1,   0,              SEN(sysinfo),                   "sysinfo"               },
-[117] = { 6,   TI,             SEN(ipc),                       "ipc"                   },
+[117] = { 6,   TI|TSD,         SEN(ipc),                       "ipc"                   },
 [118] = { 1,   TD,             SEN(fsync),                     "fsync"                 },
 [119] = { 0,   TS,             SEN(sigreturn),                 "sigreturn"             },
 [120] = { 5,   TP,             SEN(clone),                     "clone"                 },
 [121] = { 2,   0,              SEN(setdomainname),             "setdomainname"         },
 [122] = { 1,   0,              SEN(uname),                     "uname"                 },
 [123] = { 3,   0,              SEN(printargs),                 "cacheflush"            },
-[124] = { 1,   0,              SEN(adjtimex64),                "adjtimex"              },
+[124] = { 1,   TCL,            SEN(adjtimex64),                "adjtimex"              },
 [125] = { 3,   TM|SI,          SEN(mprotect),                  "mprotect"              },
 [126] = { 3,   TS,             SEN(sigprocmask),               "sigprocmask"           },
 [127] = { 2,   0,              SEN(create_module),             "create_module"         },
 [135] = { 3,   0,              SEN(sysfs),                     "sysfs"                 },
 [136] = { 1,   NF,             SEN(personality),               "personality"           },
 [137] = { 5,   0,              SEN(afs_syscall),               "afs_syscall"           },
-[138] = { 1,   NF,             SEN(setfsuid16),                "setfsuid"              },
-[139] = { 1,   NF,             SEN(setfsgid16),                "setfsgid"              },
+[138] = { 1,   TC|NF,          SEN(setfsuid16),                "setfsuid"              },
+[139] = { 1,   TC|NF,          SEN(setfsgid16),                "setfsgid"              },
 [140] = { 5,   TD,             SEN(llseek),                    "_llseek"               },
 [141] = { 3,   TD,             SEN(getdents),                  "getdents"              },
 [142] = { 5,   TD,             SEN(select),                    "_newselect"            },
 [161] = { 2,   0,              SEN(sched_rr_get_interval_time64),"sched_rr_get_interval"},
 [162] = { 2,   0,              SEN(nanosleep_time64),          "nanosleep"             },
 [163] = { 5,   TM|SI,          SEN(mremap),                    "mremap"                },
-[164] = { 3,   0,              SEN(setresuid16),               "setresuid"             },
-[165] = { 3,   0,              SEN(getresuid16),               "getresuid"             },
+[164] = { 3,   TC,             SEN(setresuid16),               "setresuid"             },
+[165] = { 3,   TC,             SEN(getresuid16),               "getresuid"             },
 [166] = { },
 [167] = { 5,   0,              SEN(query_module),              "query_module"          },
 [168] = { 3,   TD,             SEN(poll_time64),               "poll"                  },
 [169] = { 3,   0,              SEN(nfsservctl),                "nfsservctl"            },
-[170] = { 3,   0,              SEN(setresgid16),               "setresgid"             },
-[171] = { 3,   0,              SEN(getresgid16),               "getresgid"             },
-[172] = { 5,   0,              SEN(prctl),                     "prctl"                 },
+[170] = { 3,   TC,             SEN(setresgid16),               "setresgid"             },
+[171] = { 3,   TC,             SEN(getresgid16),               "getresgid"             },
+[172] = { 5,   TC,             SEN(prctl),                     "prctl"                 },
 [173] = { 0,   TS,             SEN(rt_sigreturn),              "rt_sigreturn"          },
 [174] = { 4,   TS,             SEN(rt_sigaction),              "rt_sigaction"          },
 [175] = { 4,   TS,             SEN(rt_sigprocmask),            "rt_sigprocmask"        },
 [176] = { 2,   TS,             SEN(rt_sigpending),             "rt_sigpending"         },
 [177] = { 4,   TS,             SEN(rt_sigtimedwait_time64),    "rt_sigtimedwait"       },
-[178] = { 3,   TS,             SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
+[178] = { 3,   TS|TP,          SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
 [179] = { 2,   TS,             SEN(rt_sigsuspend),             "rt_sigsuspend"         },
 [180] = { 4,   TD,             SEN(pread),                     "pread64"               },
 [181] = { 4,   TD,             SEN(pwrite),                    "pwrite64"              },
 [182] = { 3,   TF,             SEN(chown16),                   "chown"                 },
 [183] = { 2,   TF,             SEN(getcwd),                    "getcwd"                },
-[184] = { 2,   0,              SEN(capget),                    "capget"                },
-[185] = { 2,   0,              SEN(capset),                    "capset"                },
+[184] = { 2,   TC,             SEN(capget),                    "capget"                },
+[185] = { 2,   TC,             SEN(capset),                    "capset"                },
 [186] = { 2,   TS,             SEN(sigaltstack),               "sigaltstack"           },
 [187] = { 4,   TD|TN,          SEN(sendfile),                  "sendfile"              },
 [188 ... 189] = { },
 [196] = { 2,   TF|TLST|TSTA,   SEN(lstat64),                   "lstat64"               },
 [197] = { 2,   TD|TFST|TSTA,   SEN(fstat64),                   "fstat64"               },
 [198] = { 3,   TF,             SEN(chown),                     "lchown32"              },
-[199] = { 0,   PU|NF,          SEN(getuid),                    "getuid32"              },
-[200] = { 0,   PU|NF,          SEN(getgid),                    "getgid32"              },
-[201] = { 0,   PU|NF,          SEN(geteuid),                   "geteuid32"             },
-[202] = { 0,   PU|NF,          SEN(getegid),                   "getegid32"             },
-[203] = { 2,   0,              SEN(setreuid),                  "setreuid32"            },
-[204] = { 2,   0,              SEN(setregid),                  "setregid32"            },
-[205] = { 2,   0,              SEN(getgroups),                 "getgroups32"           },
-[206] = { 2,   0,              SEN(setgroups),                 "setgroups32"           },
+[199] = { 0,   TC|PU|NF,       SEN(getuid),                    "getuid32"              },
+[200] = { 0,   TC|PU|NF,       SEN(getgid),                    "getgid32"              },
+[201] = { 0,   TC|PU|NF,       SEN(geteuid),                   "geteuid32"             },
+[202] = { 0,   TC|PU|NF,       SEN(getegid),                   "getegid32"             },
+[203] = { 2,   TC,             SEN(setreuid),                  "setreuid32"            },
+[204] = { 2,   TC,             SEN(setregid),                  "setregid32"            },
+[205] = { 2,   TC,             SEN(getgroups),                 "getgroups32"           },
+[206] = { 2,   TC,             SEN(setgroups),                 "setgroups32"           },
 [207] = { 3,   TD,             SEN(fchown),                    "fchown32"              },
-[208] = { 3,   0,              SEN(setresuid),                 "setresuid32"           },
-[209] = { 3,   0,              SEN(getresuid),                 "getresuid32"           },
-[210] = { 3,   0,              SEN(setresgid),                 "setresgid32"           },
-[211] = { 3,   0,              SEN(getresgid),                 "getresgid32"           },
+[208] = { 3,   TC,             SEN(setresuid),                 "setresuid32"           },
+[209] = { 3,   TC,             SEN(getresuid),                 "getresuid32"           },
+[210] = { 3,   TC,             SEN(setresgid),                 "setresgid32"           },
+[211] = { 3,   TC,             SEN(getresgid),                 "getresgid32"           },
 [212] = { 3,   TF,             SEN(chown),                     "chown32"               },
-[213] = { 1,   0,              SEN(setuid),                    "setuid32"              },
-[214] = { 1,   0,              SEN(setgid),                    "setgid32"              },
-[215] = { 1,   NF,             SEN(setfsuid),                  "setfsuid32"            },
-[216] = { 1,   NF,             SEN(setfsgid),                  "setfsgid32"            },
+[213] = { 1,   TC,             SEN(setuid),                    "setuid32"              },
+[214] = { 1,   TC,             SEN(setgid),                    "setgid32"              },
+[215] = { 1,   TC|NF,          SEN(setfsuid),                  "setfsuid32"            },
+[216] = { 1,   TC|NF,          SEN(setfsgid),                  "setfsgid32"            },
 [217] = { 2,   TF,             SEN(pivotroot),                 "pivot_root"            },
 [218] = { 3,   TM,             SEN(mincore),                   "mincore"               },
 [219] = { 3,   TM,             SEN(madvise),                   "madvise"               },
 [263] = { 2,   TF,             SEN(removexattr),               "removexattr"           },
 [264] = { 2,   TF,             SEN(removexattr),               "lremovexattr"          },
 [265] = { 2,   TD,             SEN(fremovexattr),              "fremovexattr"          },
-[266] = { 2,   TS,             SEN(kill),                      "tkill"                 },
+[266] = { 2,   TS|TP,          SEN(tkill),                     "tkill"                 },
 [267] = { 4,   TD|TN,          SEN(sendfile64),                "sendfile64"            },
 [268] = { 6,   0,              SEN(futex_time64),              "futex"                 },
 [269] = { 3,   0,              SEN(sched_setaffinity),         "sched_setaffinity"     },
 [289] = { 2,   0,              SEN(timer_gettime64),           "timer_gettime"         },
 [290] = { 1,   0,              SEN(timer_getoverrun),          "timer_getoverrun"      },
 [291] = { 1,   0,              SEN(timer_delete),              "timer_delete"          },
-[292] = { 2,   0,              SEN(clock_settime64),           "clock_settime"         },
-[293] = { 2,   0,              SEN(clock_gettime64),           "clock_gettime"         },
-[294] = { 2,   0,              SEN(clock_getres_time64),       "clock_getres"          },
+[292] = { 2,   TCL,            SEN(clock_settime64),           "clock_settime"         },
+[293] = { 2,   TCL,            SEN(clock_gettime64),           "clock_gettime"         },
+[294] = { 2,   TCL,            SEN(clock_getres_time64),       "clock_getres"          },
 [295] = { 4,   0,              SEN(clock_nanosleep_time64),    "clock_nanosleep"       },
 [296] = { 3,   TF|TSF|TSFA,    SEN(statfs64),                  "statfs64"              },
 [297] = { 3,   TD|TFSF|TSFA,   SEN(fstatfs64),                 "fstatfs64"             },
-[298] = { 3,   TS,             SEN(tgkill),                    "tgkill"                },
+[298] = { 3,   TS|TP,          SEN(tgkill),                    "tgkill"                },
 [299] = { 2,   TF,             SEN(utimes),                    "utimes"                },
 [300] = { 4,   TD,             SEN(fadvise64_64),              "fadvise64_64"          },
 [301] = { },
 [335] = { 3,   TD|TF,          SEN(faccessat),                 "faccessat"             },
 [336] = { 6,   TD,             SEN(pselect6_time64),           "pselect6"              },
 [337] = { 5,   TD,             SEN(ppoll_time64),              "ppoll"                 },
-[338] = { 1,   TP,             SEN(unshare),                   "unshare"               },
+[338] = { 1,   0,              SEN(unshare),                   "unshare"               },
 [339] = { 2,   0,              SEN(set_robust_list),           "set_robust_list"       },
 [340] = { 3,   0,              SEN(get_robust_list),           "get_robust_list"       },
 [341] = { 6,   TD,             SEN(splice),                    "splice"                },
 [369] = { 4,   0,              SEN(prlimit64),                 "prlimit64"             },
 [370] = { 5,   TD|TF,          SEN(name_to_handle_at),         "name_to_handle_at"     },
 [371] = { 3,   TD,             SEN(open_by_handle_at),         "open_by_handle_at"     },
-[372] = { 2,   0,              SEN(clock_adjtime64),           "clock_adjtime"         },
+[372] = { 2,   TCL,            SEN(clock_adjtime64),           "clock_adjtime"         },
 [373] = { 1,   TD,             SEN(syncfs),                    "syncfs"                },
 [374] = { 4,   TN,             SEN(sendmmsg),                  "sendmmsg"              },
 [375] = { 2,   TD,             SEN(setns),                     "setns"                 },
 [384] = { 3,   0,              SEN(getrandom),                 "getrandom"             },
 [385] = { 2,   TD,             SEN(memfd_create),              "memfd_create"          },
 [386] = { 3,   TD,             SEN(bpf),                       "bpf"                   },
-[387] = { 5,   TD|TF|TP|SE|SI, SEN(execveat),                  "execveat"              },
+[387] = { 5,   TD|TF|TP|TSD|SE|SI,     SEN(execveat),                  "execveat"              },
 [388] = { 1,   TD,             SEN(userfaultfd),               "userfaultfd"           },
 [389] = { 2,   0,              SEN(membarrier),                "membarrier"            },
 [390] = { 3,   TM,             SEN(mlock2),                    "mlock2"                },
 [392] = { 6,   TD,             SEN(preadv2),                   "preadv2"               },
 [393] = { 6,   TD,             SEN(pwritev2),                  "pwritev2"              },
 /* [403 ... 423] - reserved to sync up with other architectures */
-[424] = { 4,   TD|TS,          SEN(pidfd_send_signal),         "pidfd_send_signal"     },
-[425] = { 2,   TD,             SEN(io_uring_setup),            "io_uring_setup"        },
-[426] = { 6,   TD|TS,          SEN(io_uring_enter),            "io_uring_enter"        },
-[427] = { 4,   TD|TM,          SEN(io_uring_register),         "io_uring_register"     },
+#include "syscallent-common.h"
 
 #define SYS_socket_subcall     500
 #include "subcall64.h"
index c4f2088bcdb09747ab548ecd6abf27d30a73dca2..f4bdd7939392c61725f3332572b43fe65ab76649 100644 (file)
@@ -23,7 +23,10 @@ struct smc_diag_req {
 struct smc_diag_msg {
        uint8_t diag_family;
        uint8_t diag_state;
-       uint8_t diag_fallback;
+       union {
+               uint8_t diag_fallback;
+               uint8_t diag_mode;
+       };
        uint8_t diag_shutdown;
        struct inet_diag_sockid id;
 
index 3549c95d5554a53c98c724201b76547876f292cd..184d0010a843ab8f433efe819191f922038654ac 100644 (file)
@@ -1,10 +1,11 @@
 /*
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
  */
 
+#define ARCH_SIZEOF_STRUCT_MSQID64_DS 104
 #define HAVE_ARCH_GETRVAL2 1
 #define HAVE_ARCH_UID16_SYSCALLS 1
 #define HAVE_ARCH_SA_RESTORER 1
index 7cffdd3f8b2b4b6a28d13a201df1bbb817e15e0e..767be69d3853cd5719d935693c58f08a83eb20f7 100644 (file)
@@ -1,22 +1,28 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
  */
 
 static int
-arch_set_error(struct tcb *tcp)
+sparc_set_o0_psr(struct tcb *tcp, const unsigned long o0,
+                const unsigned long psr_set, const unsigned long psr_clear)
 {
-       sparc_regs.psr |= PSR_C;
-       sparc_regs.u_regs[U_REG_O0] = tcp->u_error;
+       sparc_regs.u_regs[U_REG_O0] = o0;
+       sparc_regs.psr |= psr_set;
+       sparc_regs.psr &= ~psr_clear;
        return set_regs(tcp->pid);
 }
 
+static int
+arch_set_error(struct tcb *tcp)
+{
+       return sparc_set_o0_psr(tcp, tcp->u_error, PSR_C, 0);
+}
+
 static int
 arch_set_success(struct tcb *tcp)
 {
-       sparc_regs.psr &= ~PSR_C;
-       sparc_regs.u_regs[U_REG_O0] = tcp->u_rval;
-       return set_regs(tcp->pid);
+       return sparc_set_o0_psr(tcp, tcp->u_rval, 0, PSR_C);
 }
index 813fc3a0fdd93e3bef3632a321615cc9b206709a..b5ab93ca9347cbdb1424ba69f5a93b18c7512d27 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -13,6 +13,8 @@
 static int
 arch_set_scno(struct tcb *tcp, kernel_ulong_t scno)
 {
+       if (ptrace_syscall_info_is_valid() && get_regs(tcp) < 0)
+               return -1;
        sparc_regs.u_regs[U_REG_G1] = scno;
        return set_regs(tcp->pid);
 }
index 706c15e6e38706d8394e2518c117d6ce03c4a50c..a385368abe0c71a27827e8df6ce12be15230e926 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999-2019 The strace developers.
+ * Copyright (c) 1999-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -16,7 +16,7 @@
 [  8] = { 2,   TD|TF,          SEN(creat),                     "creat"                 },
 [  9] = { 2,   TF,             SEN(link),                      "link"                  },
 [ 10] = { 1,   TF,             SEN(unlink),                    "unlink"                },
-[ 11] = { 2,   TF|TP|SE|SI,    SEN(execv),                     "execv"                 },
+[ 11] = { 2,   TF|TP|TSD|SE|SI,        SEN(execv),                     "execv"                 },
 [ 12] = { 1,   TF,             SEN(chdir),                     "chdir"                 },
 [ 13] = { 3,   TF,             SEN(chown16),                   "chown"                 },
 [ 14] = { 3,   TF,             SEN(mknod),                     "mknod"                 },
 [ 18] = { 4,   0,              SEN(printargs),                 "perfctr"               },
 [ 19] = { 3,   TD,             SEN(lseek),                     "lseek"                 },
 [ 20] = { 0,   PU|NF,          SEN(getpid),                    "getpid"                },
-[ 21] = { 2,   0,              SEN(capget),                    "capget"                },
-[ 22] = { 2,   0,              SEN(capset),                    "capset"                },
-[ 23] = { 1,   0,              SEN(setuid16),                  "setuid"                },
-[ 24] = { 0,   PU|NF,          SEN(getuid16),                  "getuid"                },
+[ 21] = { 2,   TC,             SEN(capget),                    "capget"                },
+[ 22] = { 2,   TC,             SEN(capset),                    "capset"                },
+[ 23] = { 1,   TC,             SEN(setuid16),                  "setuid"                },
+[ 24] = { 0,   TC|PU|NF,       SEN(getuid16),                  "getuid"                },
 [ 25] = { 4,   TD,             SEN(vmsplice),                  "vmsplice"              },
 [ 26] = { 4,   0,              SEN(ptrace),                    "ptrace"                },
 [ 27] = { 1,   0,              SEN(alarm),                     "alarm"                 },
 [ 34] = { 1,   0,              SEN(nice),                      "nice"                  },
 [ 35] = { 3,   TF,             SEN(chown),                     "chown32"               },
 [ 36] = { 0,   0,              SEN(sync),                      "sync"                  },
-[ 37] = { 2,   TS,             SEN(kill),                      "kill"                  },
+[ 37] = { 2,   TS|TP,          SEN(kill),                      "kill"                  },
 [ 38] = { 2,   TF|TST|TSTA,    SEN(stat),                      "stat"                  },
 [ 39] = { 4,   TD|TN,          SEN(sendfile),                  "sendfile"              },
 [ 40] = { 2,   TF|TLST|TSTA,   SEN(lstat),                     "lstat"                 },
 [ 41] = { 1,   TD,             SEN(dup),                       "dup"                   },
 [ 42] = { 0,   TD,             SEN(pipe),                      "pipe"                  },
 [ 43] = { 1,   0,              SEN(times),                     "times"                 },
-[ 44] = { 0,   PU|NF,          SEN(getuid),                    "getuid32"              },
+[ 44] = { 0,   TC|PU|NF,       SEN(getuid),                    "getuid32"              },
 [ 45] = { 2,   TF,             SEN(umount2),                   "umount2"               },
-[ 46] = { 1,   0,              SEN(setgid16),                  "setgid"                },
-[ 47] = { 0,   PU|NF,          SEN(getgid16),                  "getgid"                },
+[ 46] = { 1,   TC,             SEN(setgid16),                  "setgid"                },
+[ 47] = { 0,   TC|PU|NF,       SEN(getgid16),                  "getgid"                },
 [ 48] = { 2,   TS,             SEN(signal),                    "signal"                },
-[ 49] = { 0,   PU|NF,          SEN(geteuid16),                 "geteuid"               },
-[ 50] = { 0,   PU|NF,          SEN(getegid16),                 "getegid"               },
+[ 49] = { 0,   TC|PU|NF,       SEN(geteuid16),                 "geteuid"               },
+[ 50] = { 0,   TC|PU|NF,       SEN(getegid16),                 "getegid"               },
 [ 51] = { 1,   TF,             SEN(acct),                      "acct"                  },
 [ 52] = { },
-[ 53] = { 0,   PU|NF,          SEN(getgid),                    "getgid32"              },
+[ 53] = { 0,   TC|PU|NF,       SEN(getgid),                    "getgid32"              },
 [ 54] = { 3,   TD,             SEN(ioctl),                     "ioctl"                 },
 [ 55] = { 4,   0,              SEN(reboot),                    "reboot"                },
 [ 56] = { 6,   TD|TM|SI,       SEN(mmap_4koff),                "mmap2"                 },
 [ 57] = { 2,   TF,             SEN(symlink),                   "symlink"               },
 [ 58] = { 3,   TF,             SEN(readlink),                  "readlink"              },
-[ 59] = { 3,   TF|TP|SE|SI,    SEN(execve),                    "execve"                },
+[ 59] = { 3,   TF|TP|TSD|SE|SI,        SEN(execve),                    "execve"                },
 [ 60] = { 1,   NF,             SEN(umask),                     "umask"                 },
 [ 61] = { 1,   TF,             SEN(chroot),                    "chroot"                },
 [ 62] = { 2,   TD|TFST|TSTA,   SEN(fstat),                     "fstat"                 },
 [ 66] = { 0,   TP,             SEN(vfork),                     "vfork"                 },
 [ 67] = { 5,   TD,             SEN(pread),                     "pread64"               },
 [ 68] = { 5,   TD,             SEN(pwrite),                    "pwrite64"              },
-[ 69] = { 0,   PU|NF,          SEN(geteuid),                   "geteuid32"             },
-[ 70] = { 0,   PU|NF,          SEN(getegid),                   "getegid32"             },
+[ 69] = { 0,   TC|PU|NF,       SEN(geteuid),                   "geteuid32"             },
+[ 70] = { 0,   TC|PU|NF,       SEN(getegid),                   "getegid32"             },
 [ 71] = { 6,   TD|TM|SI,       SEN(mmap),                      "mmap"                  },
-[ 72] = { 2,   0,              SEN(setreuid),                  "setreuid32"            },
+[ 72] = { 2,   TC,             SEN(setreuid),                  "setreuid32"            },
 [ 73] = { 2,   TM|SI,          SEN(munmap),                    "munmap"                },
 [ 74] = { 3,   TM|SI,          SEN(mprotect),                  "mprotect"              },
 [ 75] = { 3,   TM,             SEN(madvise),                   "madvise"               },
 [ 76] = { 0,   0,              SEN(vhangup),                   "vhangup"               },
 [ 77] = { 3,   TF,             SEN(truncate64),                "truncate64"            },
 [ 78] = { 3,   TM,             SEN(mincore),                   "mincore"               },
-[ 79] = { 2,   0,              SEN(getgroups16),               "getgroups"             },
-[ 80] = { 2,   0,              SEN(setgroups16),               "setgroups"             },
+[ 79] = { 2,   TC,             SEN(getgroups16),               "getgroups"             },
+[ 80] = { 2,   TC,             SEN(setgroups16),               "setgroups"             },
 [ 81] = { 0,   PU|NF,          SEN(getpgrp),                   "getpgrp"               },
-[ 82] = { 2,   0,              SEN(setgroups),                 "setgroups32"           },
+[ 82] = { 2,   TC,             SEN(setgroups),                 "setgroups32"           },
 [ 83] = { 3,   0,              SEN(setitimer),                 "setitimer"             },
 [ 84] = { 3,   TD,             SEN(ftruncate64),               "ftruncate64"           },
 [ 85] = { 2,   TF,             SEN(swapon),                    "swapon"                },
 [ 86] = { 2,   0,              SEN(getitimer),                 "getitimer"             },
-[ 87] = { 1,   0,              SEN(setuid),                    "setuid32"              },
+[ 87] = { 1,   TC,             SEN(setuid),                    "setuid32"              },
 [ 88] = { 2,   0,              SEN(sethostname),               "sethostname"           },
-[ 89] = { 1,   0,              SEN(setgid),                    "setgid32"              },
+[ 89] = { 1,   TC,             SEN(setgid),                    "setgid32"              },
 [ 90] = { 2,   TD,             SEN(dup2),                      "dup2"                  },
-[ 91] = { 1,   NF,             SEN(setfsuid),                  "setfsuid32"            },
+[ 91] = { 1,   TC|NF,          SEN(setfsuid),                  "setfsuid32"            },
 [ 92] = { 3,   TD,             SEN(fcntl),                     "fcntl"                 },
 [ 93] = { 5,   TD,             SEN(select),                    "select"                },
-[ 94] = { 1,   NF,             SEN(setfsgid),                  "setfsgid32"            },
+[ 94] = { 1,   TC|NF,          SEN(setfsgid),                  "setfsgid32"            },
 [ 95] = { 1,   TD,             SEN(fsync),                     "fsync"                 },
 [ 96] = { 3,   0,              SEN(setpriority),               "setpriority"           },
 [ 97] = { 3,   TN,             SEN(socket),                    "socket"                },
 [103] = { 4,   TS,             SEN(rt_sigprocmask),            "rt_sigprocmask"        },
 [104] = { 2,   TS,             SEN(rt_sigpending),             "rt_sigpending"         },
 [105] = { 4,   TS,             SEN(rt_sigtimedwait_time32),    "rt_sigtimedwait"       },
-[106] = { 3,   TS,             SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
+[106] = { 3,   TS|TP,          SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
 [107] = { 2,   TS,             SEN(rt_sigsuspend),             "rt_sigsuspend"         },
-[108] = { 3,   0,              SEN(setresuid),                 "setresuid32"           },
-[109] = { 3,   0,              SEN(getresuid),                 "getresuid32"           },
-[110] = { 3,   0,              SEN(setresgid),                 "setresgid32"           },
-[111] = { 3,   0,              SEN(getresgid),                 "getresgid32"           },
-[112] = { 2,   0,              SEN(setregid),                  "setregid32"            },
+[108] = { 3,   TC,             SEN(setresuid),                 "setresuid32"           },
+[109] = { 3,   TC,             SEN(getresuid),                 "getresuid32"           },
+[110] = { 3,   TC,             SEN(setresgid),                 "setresgid32"           },
+[111] = { 3,   TC,             SEN(getresgid),                 "getresgid32"           },
+[112] = { 2,   TC,             SEN(setregid),                  "setregid32"            },
 [113] = { 3,   TN,             SEN(recvmsg),                   "recvmsg"               },
 [114] = { 3,   TN,             SEN(sendmsg),                   "sendmsg"               },
-[115] = { 2,   0,              SEN(getgroups),                 "getgroups32"           },
-[116] = { 2,   0,              SEN(gettimeofday),              "gettimeofday"          },
+[115] = { 2,   TC,             SEN(getgroups),                 "getgroups32"           },
+[116] = { 2,   TCL,            SEN(gettimeofday),              "gettimeofday"          },
 [117] = { 2,   0,              SEN(getrusage),                 "getrusage"             },
 [118] = { 5,   TN,             SEN(getsockopt),                "getsockopt"            },
 [119] = { 2,   TF,             SEN(getcwd),                    "getcwd"                },
 [120] = { 3,   TD,             SEN(readv),                     "readv"                 },
 [121] = { 3,   TD,             SEN(writev),                    "writev"                },
-[122] = { 2,   0,              SEN(settimeofday),              "settimeofday"          },
+[122] = { 2,   TCL,            SEN(settimeofday),              "settimeofday"          },
 [123] = { 3,   TD,             SEN(fchown16),                  "fchown"                },
 [124] = { 2,   TD,             SEN(fchmod),                    "fchmod"                },
 [125] = { 6,   TN,             SEN(recvfrom),                  "recvfrom"              },
-[126] = { 2,   0,              SEN(setreuid16),                "setreuid"              },
-[127] = { 2,   0,              SEN(setregid16),                "setregid"              },
+[126] = { 2,   TC,             SEN(setreuid16),                "setreuid"              },
+[127] = { 2,   TC,             SEN(setregid16),                "setregid"              },
 [128] = { 2,   TF,             SEN(rename),                    "rename"                },
 [129] = { 2,   TF,             SEN(truncate),                  "truncate"              },
 [130] = { 2,   TD,             SEN(ftruncate),                 "ftruncate"             },
 [144] = { 2,   0,              SEN(getrlimit),                 "getrlimit"             },
 [145] = { 2,   0,              SEN(setrlimit),                 "setrlimit"             },
 [146] = { 2,   TF,             SEN(pivotroot),                 "pivot_root"            },
-[147] = { 5,   0,              SEN(prctl),                     "prctl"                 },
+[147] = { 5,   TC,             SEN(prctl),                     "prctl"                 },
 [148] = { 5,   0,              SEN(printargs),                 "pciconfig_read"        },
 [149] = { 5,   0,              SEN(printargs),                 "pciconfig_write"       },
 [150] = { 3,   TN,             SEN(getsockname),               "getsockname"           },
 [184] = { 5,   0,              SEN(query_module),              "query_module"          },
 [185] = { 2,   0,              SEN(setpgid),                   "setpgid"               },
 [186] = { 2,   TD,             SEN(fremovexattr),              "fremovexattr"          },
-[187] = { 2,   TS,             SEN(kill),                      "tkill"                 },
+[187] = { 2,   TS|TP,          SEN(tkill),                     "tkill"                 },
 [188] = { 1,   TP|SE,          SEN(exit),                      "exit_group"            },
 [189] = { 1,   0,              SEN(uname),                     "uname"                 },
 [190] = { 3,   0,              SEN(init_module),               "init_module"           },
 [203] = { 1,   TF,             SEN(uselib),                    "uselib"                },
 [204] = { 3,   TD,             SEN(readdir),                   "readdir"               },
 [205] = { 4,   TD,             SEN(readahead),                 "readahead"             },
-[206] = { 2,   TD,             SEN(socketcall),                "socketcall"            },
+[206] = { 2,   TD|TSD,         SEN(socketcall),                "socketcall"            },
 [207] = { 3,   0,              SEN(syslog),                    "syslog"                },
 [208] = { 4,   0,              SEN(lookup_dcookie),            "lookup_dcookie"        },
 [209] = { 5,   TD,             SEN(fadvise64),                 "fadvise64"             },
 [210] = { 6,   TD,             SEN(fadvise64_64),              "fadvise64_64"          },
-[211] = { 3,   TS,             SEN(tgkill),                    "tgkill"                },
+[211] = { 3,   TS|TP,          SEN(tgkill),                    "tgkill"                },
 [212] = { 3,   TP,             SEN(waitpid),                   "waitpid"               },
 [213] = { 1,   TF,             SEN(swapoff),                   "swapoff"               },
 [214] = { 1,   0,              SEN(sysinfo),                   "sysinfo"               },
-[215] = { 6,   TI,             SEN(ipc),                       "ipc"                   },
+[215] = { 6,   TI|TSD,         SEN(ipc),                       "ipc"                   },
 [216] = { 0,   TS,             SEN(sigreturn),                 "sigreturn"             },
 [217] = { 5,   TP,             SEN(clone),                     "clone"                 },
 [218] = { 2,   0,              SEN(ioprio_get),                "ioprio_get"            },
-[219] = { 1,   0,              SEN(adjtimex32),                "adjtimex"              },
+[219] = { 1,   TCL,            SEN(adjtimex32),                "adjtimex"              },
 [220] = { 3,   TS,             SEN(sigprocmask),               "sigprocmask"           },
 [221] = { 2,   0,              SEN(create_module),             "create_module"         },
 [222] = { 2,   0,              SEN(delete_module),             "delete_module"         },
 [225] = { 2,   0,              SEN(bdflush),                   "bdflush"               },
 [226] = { 3,   0,              SEN(sysfs),                     "sysfs"                 },
 [227] = { 5,   0,              SEN(afs_syscall),               "afs_syscall"           },
-[228] = { 1,   NF,             SEN(setfsuid16),                "setfsuid"              },
-[229] = { 1,   NF,             SEN(setfsgid16),                "setfsgid"              },
+[228] = { 1,   TC|NF,          SEN(setfsuid16),                "setfsuid"              },
+[229] = { 1,   TC|NF,          SEN(setfsgid16),                "setfsgid"              },
 [230] = { 5,   TD,             SEN(select),                    "_newselect"            },
-[231] = { 1,   0,              SEN(time),                      "time"                  },
+[231] = { 1,   TCL,            SEN(time),                      "time"                  },
 [232] = { 6,   TD,             SEN(splice),                    "splice"                },
 [233] = { 1,   0,              SEN(stime),                     "stime"                 },
 [234] = { 3,   TF|TSF|TSFA,    SEN(statfs64),                  "statfs64"              },
 [253] = { 1,   TD,             SEN(fdatasync),                 "fdatasync"             },
 [254] = { 3,   0,              SEN(nfsservctl),                "nfsservctl"            },
 [255] = { 6,   TD,             SEN(sync_file_range),           "sync_file_range"       },
-[256] = { 2,   0,              SEN(clock_settime32),           "clock_settime"         },
-[257] = { 2,   0,              SEN(clock_gettime32),           "clock_gettime"         },
-[258] = { 2,   0,              SEN(clock_getres_time32),       "clock_getres"          },
+[256] = { 2,   TCL,            SEN(clock_settime32),           "clock_settime"         },
+[257] = { 2,   TCL,            SEN(clock_gettime32),           "clock_gettime"         },
+[258] = { 2,   TCL,            SEN(clock_getres_time32),       "clock_getres"          },
 [259] = { 4,   0,              SEN(clock_nanosleep_time32),    "clock_nanosleep"       },
 [260] = { 3,   0,              SEN(sched_getaffinity),         "sched_getaffinity"     },
 [261] = { 3,   0,              SEN(sched_setaffinity),         "sched_setaffinity"     },
 [264] = { 1,   0,              SEN(timer_getoverrun),          "timer_getoverrun"      },
 [265] = { 1,   0,              SEN(timer_delete),              "timer_delete"          },
 [266] = { 3,   0,              SEN(timer_create),              "timer_create"          },
-[267] = { },
+[267] = { 5,   0,              SEN(vserver),                   "vserver"               },
 [268] = { 2,   TM,             SEN(io_setup),                  "io_setup"              },
 [269] = { 1,   TM,             SEN(io_destroy),                "io_destroy"            },
 [270] = { 3,   0,              SEN(io_submit),                 "io_submit"             },
 [296] = { 3,   TD|TF,          SEN(faccessat),                 "faccessat"             },
 [297] = { 6,   TD,             SEN(pselect6_time32),           "pselect6"              },
 [298] = { 5,   TD,             SEN(ppoll_time32),              "ppoll"                 },
-[299] = { 1,   TP,             SEN(unshare),                   "unshare"               },
+[299] = { 1,   0,              SEN(unshare),                   "unshare"               },
 [300] = { 2,   0,              SEN(set_robust_list),           "set_robust_list"       },
 [301] = { 3,   0,              SEN(get_robust_list),           "get_robust_list"       },
 [302] = { 4,   TM,             SEN(migrate_pages),             "migrate_pages"         },
 [331] = { 4,   0,              SEN(prlimit64),                 "prlimit64"             },
 [332] = { 5,   TD|TF,          SEN(name_to_handle_at),         "name_to_handle_at"     },
 [333] = { 3,   TD,             SEN(open_by_handle_at),         "open_by_handle_at"     },
-[334] = { 2,   0,              SEN(clock_adjtime32),           "clock_adjtime"         },
+[334] = { 2,   TCL,            SEN(clock_adjtime32),           "clock_adjtime"         },
 [335] = { 1,   TD,             SEN(syncfs),                    "syncfs"                },
 [336] = { 4,   TN,             SEN(sendmmsg),                  "sendmmsg"              },
 [337] = { 2,   TD,             SEN(setns),                     "setns"                 },
 [347] = { 3,   0,              SEN(getrandom),                 "getrandom"             },
 [348] = { 2,   TD,             SEN(memfd_create),              "memfd_create"          },
 [349] = { 3,   TD,             SEN(bpf),                       "bpf"                   },
-[350] = { 5,   TD|TF|TP|SE|SI, SEN(execveat),                  "execveat"              },
+[350] = { 5,   TD|TF|TP|TSD|SE|SI,     SEN(execveat),                  "execveat"              },
 [351] = { 2,   0,              SEN(membarrier),                "membarrier"            },
 [352] = { 1,   TD,             SEN(userfaultfd),               "userfaultfd"           },
 [353] = { 3,   TN,             SEN(bind),                      "bind"                  },
 [357] = { 6,   TD,             SEN(copy_file_range),           "copy_file_range"       },
 [358] = { 6,   TD,             SEN(preadv2),                   "preadv2"               },
 [359] = { 6,   TD,             SEN(pwritev2),                  "pwritev2"              },
-[360] = { 5,   TD|TF|TSTA,     SEN(statx),                     "statx"                 },
+[360] = { 5,   TD|TF|TFST|TSTA,SEN(statx),                     "statx"                 },
 [361] = { 6,   0,              SEN(io_pgetevents_time32),      "io_pgetevents"         },
 [362] = { 4,   TM|SI,          SEN(pkey_mprotect),             "pkey_mprotect"         },
 [363] = { 2,   0,              SEN(pkey_alloc),                "pkey_alloc"            },
 [400] = { 4,   TI,             SEN(msgsnd),                    "msgsnd"                },
 [401] = { 5,   TI,             SEN(msgrcv),                    "msgrcv"                },
 [402] = { 3,   TI,             SEN(msgctl),                    "msgctl"                },
-[403] = { 2,   0,              SEN(clock_gettime64),           "clock_gettime64"       },
-[404] = { 2,   0,              SEN(clock_settime64),           "clock_settime64"       },
-[405] = { 2,   0,              SEN(clock_adjtime64),           "clock_adjtime64"       },
-[406] = { 2,   0,              SEN(clock_getres_time64),       "clock_getres_time64"   },
-[407] = { 4,   0,              SEN(clock_nanosleep_time64),    "clock_nanosleep_time64"},
-[408] = { 2,   0,              SEN(timer_gettime64),           "timer_gettime64"       },
-[409] = { 4,   0,              SEN(timer_settime64),           "timer_settime64"       },
-[410] = { 2,   TD,             SEN(timerfd_gettime64),         "timerfd_gettime64"     },
-[411] = { 4,   TD,             SEN(timerfd_settime64),         "timerfd_settime64"     },
-[412] = { 4,   TD|TF,          SEN(utimensat_time64),          "utimensat_time64"      },
-[413] = { 6,   TD,             SEN(pselect6_time64),           "pselect6_time64"       },
-[414] = { 5,   TD,             SEN(ppoll_time64),              "ppoll_time64"          },
-[416] = { 6,   0,              SEN(io_pgetevents_time64),      "io_pgetevents_time64"  },
-[417] = { 5,   TN,             SEN(recvmmsg_time64),           "recvmmsg_time64"       },
-[418] = { 5,   TD,             SEN(mq_timedsend_time64),       "mq_timedsend_time64"   },
-[419] = { 5,   TD,             SEN(mq_timedreceive_time64),    "mq_timedreceive_time64"},
-[420] = { 4,   TI,             SEN(semtimedop_time64),         "semtimedop_time64"     },
-[421] = { 4,   TS,             SEN(rt_sigtimedwait_time64),    "rt_sigtimedwait_time64"},
-[422] = { 6,   0,              SEN(futex_time64),              "futex_time64"          },
-[423] = { 2,   0,              SEN(sched_rr_get_interval_time64),      "sched_rr_get_interval_time64"  },
-[424] = { 4,   TD|TS,          SEN(pidfd_send_signal),         "pidfd_send_signal"     },
-[425] = { 2,   TD,             SEN(io_uring_setup),            "io_uring_setup"        },
-[426] = { 6,   TD|TS,          SEN(io_uring_enter),            "io_uring_enter"        },
-[427] = { 4,   TD|TM,          SEN(io_uring_register),         "io_uring_register"     },
+#include "syscallent-common-32.h"
+#include "syscallent-common.h"
 
 #define SYS_socket_subcall     500
 #include "subcall32.h"
index 68eef4fcedcc31d157002bcf0c477812157e2d2d..abefb53886381ae73ade89550cb278bc184a1684 100644 (file)
@@ -1,12 +1,15 @@
 /*
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
  */
 
+#define ARCH_M32_SIZEOF_STRUCT_MSQID64_DS 104
 #define HAVE_ARCH_GETRVAL2 1
 #define HAVE_ARCH_UID16_SYSCALLS 1
 #define HAVE_ARCH_SA_RESTORER 1
 #define SUPPORTED_PERSONALITIES 2
+#define PERSONALITY0_AUDIT_ARCH { AUDIT_ARCH_SPARC64, 0 }
+#define PERSONALITY1_AUDIT_ARCH { AUDIT_ARCH_SPARC,   0 }
 #define HAVE_ARCH_DEDICATED_ERR_REG 1
index 36d11915c55ec37dbde6c37ef40c663d28fa127c..249a842f083e471213a69d3f6e2a7c341c6fd1dd 100644 (file)
@@ -1,16 +1,13 @@
 /*
  * Copyright (c) 2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2018-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
  */
 
-#ifndef AUDIT_ARCH_SPARC
-# define AUDIT_ARCH_SPARC 0x2
-#endif
-
 int
-get_personality_from_syscall_info(const struct ptrace_syscall_info *sci)
+get_personality_from_syscall_info(const struct_ptrace_syscall_info *sci)
 {
        return sci->arch == AUDIT_ARCH_SPARC;
 }
index e89c578e90800829b06b650d418ba409a6ba7f43..69778e573211a0c827ccd5ddc2ed1609ddb4a6d6 100644 (file)
@@ -1,22 +1,29 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
  */
 
 static int
-arch_set_error(struct tcb *tcp)
+sparc64_set_o0_tstate(struct tcb *tcp, const unsigned long o0,
+                     const unsigned long tstate_set,
+                     const unsigned long tstate_clear)
 {
-       sparc_regs.tstate |= 0x1100000000UL;
-       sparc_regs.u_regs[U_REG_O0] = tcp->u_error;
+       sparc_regs.u_regs[U_REG_O0] = o0;
+       sparc_regs.tstate |= tstate_set;
+       sparc_regs.tstate &= ~tstate_clear;
        return set_regs(tcp->pid);
 }
 
+static int
+arch_set_error(struct tcb *tcp)
+{
+       return sparc64_set_o0_tstate(tcp, tcp->u_error, 0x1100000000UL, 0);
+}
+
 static int
 arch_set_success(struct tcb *tcp)
 {
-       sparc_regs.tstate &= ~0x1100000000UL;
-       sparc_regs.u_regs[U_REG_O0] = tcp->u_rval;
-       return set_regs(tcp->pid);
+       return sparc64_set_o0_tstate(tcp, tcp->u_rval, 0, 0x1100000000UL);
 }
index 1023b07df292b45de2f9c9c3e09472a01d40533c..5faa721c5bdb460f65b833156fb0109962cecd7e 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004-2019 The strace developers.
+ * Copyright (c) 2004-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -16,7 +16,7 @@
 [  8] = { 2,   TD|TF,          SEN(creat),                     "creat"                 },
 [  9] = { 2,   TF,             SEN(link),                      "link"                  },
 [ 10] = { 1,   TF,             SEN(unlink),                    "unlink"                },
-[ 11] = { 2,   TF|TP|SE|SI,    SEN(execv),                     "execv"                 },
+[ 11] = { 2,   TF|TP|TSD|SE|SI,        SEN(execv),                     "execv"                 },
 [ 12] = { 1,   TF,             SEN(chdir),                     "chdir"                 },
 [ 13] = { 3,   TF,             SEN(chown),                     "chown"                 },
 [ 14] = { 3,   TF,             SEN(mknod),                     "mknod"                 },
 [ 18] = { 4,   0,              SEN(printargs),                 "perfctr"               },
 [ 19] = { 3,   TD,             SEN(lseek),                     "lseek"                 },
 [ 20] = { 0,   PU|NF,          SEN(getpid),                    "getpid"                },
-[ 21] = { 2,   0,              SEN(capget),                    "capget"                },
-[ 22] = { 2,   0,              SEN(capset),                    "capset"                },
-[ 23] = { 1,   0,              SEN(setuid),                    "setuid"                },
-[ 24] = { 0,   PU|NF,          SEN(getuid),                    "getuid"                },
+[ 21] = { 2,   TC,             SEN(capget),                    "capget"                },
+[ 22] = { 2,   TC,             SEN(capset),                    "capset"                },
+[ 23] = { 1,   TC,             SEN(setuid),                    "setuid"                },
+[ 24] = { 0,   TC|PU|NF,       SEN(getuid),                    "getuid"                },
 [ 25] = { 4,   TD,             SEN(vmsplice),                  "vmsplice"              },
 [ 26] = { 4,   0,              SEN(ptrace),                    "ptrace"                },
 [ 27] = { 1,   0,              SEN(alarm),                     "alarm"                 },
@@ -41,7 +41,7 @@
 [ 34] = { 1,   0,              SEN(nice),                      "nice"                  },
 [ 35] = { },
 [ 36] = { 0,   0,              SEN(sync),                      "sync"                  },
-[ 37] = { 2,   TS,             SEN(kill),                      "kill"                  },
+[ 37] = { 2,   TS|TP,          SEN(kill),                      "kill"                  },
 [ 38] = { 2,   TF|TST|TSTA,    SEN(stat),                      "stat"                  },
 [ 39] = { 4,   TD|TN,          SEN(sendfile),                  "sendfile"              },
 [ 40] = { 2,   TF|TLST|TSTA,   SEN(lstat),                     "lstat"                 },
 [ 43] = { 1,   0,              SEN(times),                     "times"                 },
 [ 44] = { },
 [ 45] = { 2,   TF,             SEN(umount2),                   "umount2"               },
-[ 46] = { 1,   0,              SEN(setgid),                    "setgid"                },
-[ 47] = { 0,   PU|NF,          SEN(getgid),                    "getgid"                },
+[ 46] = { 1,   TC,             SEN(setgid),                    "setgid"                },
+[ 47] = { 0,   TC|PU|NF,       SEN(getgid),                    "getgid"                },
 [ 48] = { 2,   TS,             SEN(signal),                    "signal"                },
-[ 49] = { 0,   PU|NF,          SEN(geteuid),                   "geteuid"               },
-[ 50] = { 0,   PU|NF,          SEN(getegid),                   "getegid"               },
+[ 49] = { 0,   TC|PU|NF,       SEN(geteuid),                   "geteuid"               },
+[ 50] = { 0,   TC|PU|NF,       SEN(getegid),                   "getegid"               },
 [ 51] = { 1,   TF,             SEN(acct),                      "acct"                  },
 [ 52] = { 2,   0,              SEN(printargs),                 "memory_ordering"       },
 [ 53] = { },
@@ -63,7 +63,7 @@
 [ 56] = { },
 [ 57] = { 2,   TF,             SEN(symlink),                   "symlink"               },
 [ 58] = { 3,   TF,             SEN(readlink),                  "readlink"              },
-[ 59] = { 3,   TF|TP|SE|SI,    SEN(execve),                    "execve"                },
+[ 59] = { 3,   TF|TP|TSD|SE|SI,        SEN(execve),                    "execve"                },
 [ 60] = { 1,   NF,             SEN(umask),                     "umask"                 },
 [ 61] = { 1,   TF,             SEN(chroot),                    "chroot"                },
 [ 62] = { 2,   TD|TFST|TSTA,   SEN(fstat),                     "fstat"                 },
@@ -82,8 +82,8 @@
 [ 76] = { 0,   0,              SEN(vhangup),                   "vhangup"               },
 [ 77] = { },
 [ 78] = { 3,   TM,             SEN(mincore),                   "mincore"               },
-[ 79] = { 2,   0,              SEN(getgroups),                 "getgroups"             },
-[ 80] = { 2,   0,              SEN(setgroups),                 "setgroups"             },
+[ 79] = { 2,   TC,             SEN(getgroups),                 "getgroups"             },
+[ 80] = { 2,   TC,             SEN(setgroups),                 "setgroups"             },
 [ 81] = { 0,   PU|NF,          SEN(getpgrp),                   "getpgrp"               },
 [ 82] = { },
 [ 83] = { 3,   0,              SEN(setitimer),                 "setitimer"             },
 [103] = { 4,   TS,             SEN(rt_sigprocmask),            "rt_sigprocmask"        },
 [104] = { 2,   TS,             SEN(rt_sigpending),             "rt_sigpending"         },
 [105] = { 4,   TS,             SEN(rt_sigtimedwait_time64),    "rt_sigtimedwait"       },
-[106] = { 3,   TS,             SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
+[106] = { 3,   TS|TP,          SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
 [107] = { 2,   TS,             SEN(rt_sigsuspend),             "rt_sigsuspend"         },
-[108] = { 3,   0,              SEN(setresuid),                 "setresuid"             },
-[109] = { 3,   0,              SEN(getresuid),                 "getresuid"             },
-[110] = { 3,   0,              SEN(setresgid),                 "setresgid"             },
-[111] = { 3,   0,              SEN(getresgid),                 "getresgid"             },
+[108] = { 3,   TC,             SEN(setresuid),                 "setresuid"             },
+[109] = { 3,   TC,             SEN(getresuid),                 "getresuid"             },
+[110] = { 3,   TC,             SEN(setresgid),                 "setresgid"             },
+[111] = { 3,   TC,             SEN(getresgid),                 "getresgid"             },
 [112] = { },
 [113] = { 3,   TN,             SEN(recvmsg),                   "recvmsg"               },
 [114] = { 3,   TN,             SEN(sendmsg),                   "sendmsg"               },
 [115] = { },
-[116] = { 2,   0,              SEN(gettimeofday),              "gettimeofday"          },
+[116] = { 2,   TCL,            SEN(gettimeofday),              "gettimeofday"          },
 [117] = { 2,   0,              SEN(getrusage),                 "getrusage"             },
 [118] = { 5,   TN,             SEN(getsockopt),                "getsockopt"            },
 [119] = { 2,   TF,             SEN(getcwd),                    "getcwd"                },
 [120] = { 3,   TD,             SEN(readv),                     "readv"                 },
 [121] = { 3,   TD,             SEN(writev),                    "writev"                },
-[122] = { 2,   0,              SEN(settimeofday),              "settimeofday"          },
+[122] = { 2,   TCL,            SEN(settimeofday),              "settimeofday"          },
 [123] = { 3,   TD,             SEN(fchown),                    "fchown"                },
 [124] = { 2,   TD,             SEN(fchmod),                    "fchmod"                },
 [125] = { 6,   TN,             SEN(recvfrom),                  "recvfrom"              },
-[126] = { 2,   0,              SEN(setreuid),                  "setreuid"              },
-[127] = { 2,   0,              SEN(setregid),                  "setregid"              },
+[126] = { 2,   TC,             SEN(setreuid),                  "setreuid"              },
+[127] = { 2,   TC,             SEN(setregid),                  "setregid"              },
 [128] = { 2,   TF,             SEN(rename),                    "rename"                },
 [129] = { 2,   TF,             SEN(truncate),                  "truncate"              },
 [130] = { 2,   TD,             SEN(ftruncate),                 "ftruncate"             },
 [144] = { 2,   0,              SEN(getrlimit),                 "getrlimit"             },
 [145] = { 2,   0,              SEN(setrlimit),                 "setrlimit"             },
 [146] = { 2,   TF,             SEN(pivotroot),                 "pivot_root"            },
-[147] = { 5,   0,              SEN(prctl),                     "prctl"                 },
+[147] = { 5,   TC,             SEN(prctl),                     "prctl"                 },
 [148] = { 5,   0,              SEN(printargs),                 "pciconfig_read"        },
 [149] = { 5,   0,              SEN(printargs),                 "pciconfig_write"       },
 [150] = { 3,   TN,             SEN(getsockname),               "getsockname"           },
 [184] = { 5,   0,              SEN(query_module),              "query_module"          },
 [185] = { 2,   0,              SEN(setpgid),                   "setpgid"               },
 [186] = { 2,   TD,             SEN(fremovexattr),              "fremovexattr"          },
-[187] = { 2,   TS,             SEN(kill),                      "tkill"                 },
+[187] = { 2,   TS|TP,          SEN(tkill),                     "tkill"                 },
 [188] = { 1,   TP|SE,          SEN(exit),                      "exit_group"            },
 [189] = { 1,   0,              SEN(uname),                     "uname"                 },
 [190] = { 3,   0,              SEN(init_module),               "init_module"           },
 [203] = { 1,   TF,             SEN(uselib),                    "uselib"                },
 [204] = { 3,   TD,             SEN(readdir),                   "readdir"               },
 [205] = { 3,   TD,             SEN(readahead),                 "readahead"             },
-[206] = { 2,   TD,             SEN(socketcall),                "socketcall"            },
+[206] = { 2,   TD|TSD,         SEN(socketcall),                "socketcall"            },
 [207] = { 3,   0,              SEN(syslog),                    "syslog"                },
 [208] = { 3,   0,              SEN(lookup_dcookie),            "lookup_dcookie"        },
 [209] = { 4,   TD,             SEN(fadvise64),                 "fadvise64"             },
 [210] = { 4,   TD,             SEN(fadvise64_64),              "fadvise64_64"          },
-[211] = { 3,   TS,             SEN(tgkill),                    "tgkill"                },
+[211] = { 3,   TS|TP,          SEN(tgkill),                    "tgkill"                },
 [212] = { 3,   TP,             SEN(waitpid),                   "waitpid"               },
 [213] = { 1,   TF,             SEN(swapoff),                   "swapoff"               },
 [214] = { 1,   0,              SEN(sysinfo),                   "sysinfo"               },
-[215] = { 6,   TI,             SEN(ipc),                       "ipc"                   },
+[215] = { 6,   TI|TSD,         SEN(ipc),                       "ipc"                   },
 [216] = { 0,   TS,             SEN(sigreturn),                 "sigreturn"             },
 [217] = { 5,   TP,             SEN(clone),                     "clone"                 },
 [218] = { 2,   0,              SEN(ioprio_get),                "ioprio_get"            },
-[219] = { 1,   0,              SEN(adjtimex64),                "adjtimex"              },
+[219] = { 1,   TCL,            SEN(adjtimex64),                "adjtimex"              },
 [220] = { 3,   TS,             SEN(sigprocmask),               "sigprocmask"           },
 [221] = { 2,   0,              SEN(create_module),             "create_module"         },
 [222] = { 2,   0,              SEN(delete_module),             "delete_module"         },
 [225] = { 2,   0,              SEN(bdflush),                   "bdflush"               },
 [226] = { 3,   0,              SEN(sysfs),                     "sysfs"                 },
 [227] = { 5,   0,              SEN(afs_syscall),               "afs_syscall"           },
-[228] = { 1,   NF,             SEN(setfsuid),                  "setfsuid"              },
-[229] = { 1,   NF,             SEN(setfsgid),                  "setfsgid"              },
+[228] = { 1,   TC|NF,          SEN(setfsuid),                  "setfsuid"              },
+[229] = { 1,   TC|NF,          SEN(setfsgid),                  "setfsgid"              },
 [230] = { 5,   TD,             SEN(select),                    "_newselect"            },
 [231] = { },
 [232] = { 6,   TD,             SEN(splice),                    "splice"                },
 [253] = { 1,   TD,             SEN(fdatasync),                 "fdatasync"             },
 [254] = { 3,   0,              SEN(nfsservctl),                "nfsservctl"            },
 [255] = { 4,   TD,             SEN(sync_file_range),           "sync_file_range"       },
-[256] = { 2,   0,              SEN(clock_settime64),           "clock_settime"         },
-[257] = { 2,   0,              SEN(clock_gettime64),           "clock_gettime"         },
-[258] = { 2,   0,              SEN(clock_getres_time64),       "clock_getres"          },
+[256] = { 2,   TCL,            SEN(clock_settime64),           "clock_settime"         },
+[257] = { 2,   TCL,            SEN(clock_gettime64),           "clock_gettime"         },
+[258] = { 2,   TCL,            SEN(clock_getres_time64),       "clock_getres"          },
 [259] = { 4,   0,              SEN(clock_nanosleep_time64),    "clock_nanosleep"       },
 [260] = { 3,   0,              SEN(sched_getaffinity),         "sched_getaffinity"     },
 [261] = { 3,   0,              SEN(sched_setaffinity),         "sched_setaffinity"     },
 [264] = { 1,   0,              SEN(timer_getoverrun),          "timer_getoverrun"      },
 [265] = { 1,   0,              SEN(timer_delete),              "timer_delete"          },
 [266] = { 3,   0,              SEN(timer_create),              "timer_create"          },
-[267] = { },
+[267] = { 5,   0,              SEN(vserver),                   "vserver"               },
 [268] = { 2,   TM,             SEN(io_setup),                  "io_setup"              },
 [269] = { 1,   TM,             SEN(io_destroy),                "io_destroy"            },
 [270] = { 3,   0,              SEN(io_submit),                 "io_submit"             },
 [296] = { 3,   TD|TF,          SEN(faccessat),                 "faccessat"             },
 [297] = { 6,   TD,             SEN(pselect6_time64),           "pselect6"              },
 [298] = { 5,   TD,             SEN(ppoll_time64),              "ppoll"                 },
-[299] = { 1,   TP,             SEN(unshare),                   "unshare"               },
+[299] = { 1,   0,              SEN(unshare),                   "unshare"               },
 [300] = { 2,   0,              SEN(set_robust_list),           "set_robust_list"       },
 [301] = { 3,   0,              SEN(get_robust_list),           "get_robust_list"       },
 [302] = { 4,   TM,             SEN(migrate_pages),             "migrate_pages"         },
 [331] = { 4,   0,              SEN(prlimit64),                 "prlimit64"             },
 [332] = { 5,   TD|TF,          SEN(name_to_handle_at),         "name_to_handle_at"     },
 [333] = { 3,   TD,             SEN(open_by_handle_at),         "open_by_handle_at"     },
-[334] = { 2,   0,              SEN(clock_sparc64_adjtime),     "clock_adjtime"         },
+[334] = { 2,   TCL,            SEN(clock_sparc64_adjtime),     "clock_adjtime"         },
 [335] = { 1,   TD,             SEN(syncfs),                    "syncfs"                },
 [336] = { 4,   TN,             SEN(sendmmsg),                  "sendmmsg"              },
 [337] = { 2,   TD,             SEN(setns),                     "setns"                 },
 [347] = { 3,   0,              SEN(getrandom),                 "getrandom"             },
 [348] = { 2,   TD,             SEN(memfd_create),              "memfd_create"          },
 [349] = { 3,   TD,             SEN(bpf),                       "bpf"                   },
-[350] = { 5,   TD|TF|TP|SE|SI, SEN(execveat),                  "execveat"              },
+[350] = { 5,   TD|TF|TP|TSD|SE|SI,     SEN(execveat),                  "execveat"              },
 [351] = { 2,   0,              SEN(membarrier),                "membarrier"            },
 [352] = { 1,   TD,             SEN(userfaultfd),               "userfaultfd"           },
 [353] = { 3,   TN,             SEN(bind),                      "bind"                  },
 [357] = { 6,   TD,             SEN(copy_file_range),           "copy_file_range"       },
 [358] = { 6,   TD,             SEN(preadv2),                   "preadv2"               },
 [359] = { 6,   TD,             SEN(pwritev2),                  "pwritev2"              },
-[360] = { 5,   TD|TF|TSTA,     SEN(statx),                     "statx"                 },
+[360] = { 5,   TD|TF|TFST|TSTA,SEN(statx),                     "statx"                 },
 [361] = { 6,   0,              SEN(io_pgetevents_time64),      "io_pgetevents"         },
 [362] = { 4,   TM|SI,          SEN(pkey_mprotect),             "pkey_mprotect"         },
 [363] = { 2,   0,              SEN(pkey_alloc),                "pkey_alloc"            },
 [401] = { 5,   TI,             SEN(msgrcv),                    "msgrcv"                },
 [402] = { 3,   TI,             SEN(msgctl),                    "msgctl"                },
 /* [403 ... 423] - reserved to sync up with other architectures */
-[424] = { 4,   TD|TS,          SEN(pidfd_send_signal),         "pidfd_send_signal"     },
-[425] = { 2,   TD,             SEN(io_uring_setup),            "io_uring_setup"        },
-[426] = { 6,   TD|TS,          SEN(io_uring_enter),            "io_uring_enter"        },
-[427] = { 4,   TD|TM,          SEN(io_uring_register),         "io_uring_register"     },
+#include "syscallent-common.h"
 
 #define SYS_socket_subcall     500
 #include "subcall64.h"
diff --git a/linux/syscallent-common-32.h b/linux/syscallent-common-32.h
new file mode 100644 (file)
index 0000000..57d6004
--- /dev/null
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2019 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#ifndef BASE_NR
+# define BASE_NR 0
+#endif
+[BASE_NR + 403] = { 2, 0,              SEN(clock_gettime64),           "clock_gettime64"       },
+[BASE_NR + 404] = { 2, 0,              SEN(clock_settime64),           "clock_settime64"       },
+[BASE_NR + 405] = { 2, 0,              SEN(clock_adjtime64),           "clock_adjtime64"       },
+[BASE_NR + 406] = { 2, 0,              SEN(clock_getres_time64),       "clock_getres_time64"   },
+[BASE_NR + 407] = { 4, 0,              SEN(clock_nanosleep_time64),    "clock_nanosleep_time64"},
+[BASE_NR + 408] = { 2, 0,              SEN(timer_gettime64),           "timer_gettime64"       },
+[BASE_NR + 409] = { 4, 0,              SEN(timer_settime64),           "timer_settime64"       },
+[BASE_NR + 410] = { 2, TD,             SEN(timerfd_gettime64),         "timerfd_gettime64"     },
+[BASE_NR + 411] = { 4, TD,             SEN(timerfd_settime64),         "timerfd_settime64"     },
+[BASE_NR + 412] = { 4, TD|TF,          SEN(utimensat_time64),          "utimensat_time64"      },
+[BASE_NR + 413] = { 6, TD,             SEN(pselect6_time64),           "pselect6_time64"       },
+[BASE_NR + 414] = { 5, TD,             SEN(ppoll_time64),              "ppoll_time64"          },
+[BASE_NR + 416] = { 6, 0,              SEN(io_pgetevents_time64),      "io_pgetevents_time64"  },
+[BASE_NR + 417] = { 5, TN,             SEN(recvmmsg_time64),           "recvmmsg_time64"       },
+[BASE_NR + 418] = { 5, TD,             SEN(mq_timedsend_time64),       "mq_timedsend_time64"   },
+[BASE_NR + 419] = { 5, TD,             SEN(mq_timedreceive_time64),    "mq_timedreceive_time64"},
+[BASE_NR + 420] = { 4, TI,             SEN(semtimedop_time64),         "semtimedop_time64"     },
+[BASE_NR + 421] = { 4, TS,             SEN(rt_sigtimedwait_time64),    "rt_sigtimedwait_time64"},
+[BASE_NR + 422] = { 6, 0,              SEN(futex_time64),              "futex_time64"          },
+[BASE_NR + 423] = { 2, 0,              SEN(sched_rr_get_interval_time64),      "sched_rr_get_interval_time64"  },
diff --git a/linux/syscallent-common.h b/linux/syscallent-common.h
new file mode 100644 (file)
index 0000000..6ca296a
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2019-2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#ifndef BASE_NR
+# define BASE_NR 0
+#endif
+[BASE_NR + 424] = { 4, TD|TS|TP,               SEN(pidfd_send_signal),         "pidfd_send_signal"     },
+[BASE_NR + 425] = { 2, TD,             SEN(io_uring_setup),            "io_uring_setup"        },
+[BASE_NR + 426] = { 6, TD|TS,          SEN(io_uring_enter),            "io_uring_enter"        },
+[BASE_NR + 427] = { 4, TD|TM,          SEN(io_uring_register),         "io_uring_register"     },
+[BASE_NR + 428] = { 3, TD|TF,          SEN(open_tree),                 "open_tree"             },
+[BASE_NR + 429] = { 5, TD|TF,          SEN(move_mount),                "move_mount"            },
+[BASE_NR + 430] = { 2, TD,             SEN(fsopen),                    "fsopen"                },
+[BASE_NR + 431] = { 5, TD|TF,          SEN(fsconfig),                  "fsconfig"              },
+[BASE_NR + 432] = { 3, TD,             SEN(fsmount),                   "fsmount"               },
+[BASE_NR + 433] = { 3, TD|TF,          SEN(fspick),                    "fspick"                },
+[BASE_NR + 434] = { 2, TD,             SEN(pidfd_open),                "pidfd_open"            },
+[BASE_NR + 435] = { 2, TP,             SEN(clone3),                    "clone3"                },
+[BASE_NR + 436] = { 3, TD,             SEN(close_range),               "close_range"           },
+[BASE_NR + 437] = { 4, TD|TF,          SEN(openat2),                   "openat2"               },
+[BASE_NR + 438] = { 3, TD,             SEN(pidfd_getfd),               "pidfd_getfd"           },
+[BASE_NR + 439] = { 4, TD|TF,          SEN(faccessat2),                "faccessat2"            },
diff --git a/linux/syscallent_base_nr.h b/linux/syscallent_base_nr.h
new file mode 100644 (file)
index 0000000..da84fa5
--- /dev/null
@@ -0,0 +1 @@
+/* nothing */
index a781208c2ca07a3c67b2a1683022659a7de2a35a..12ba0d8b6524b9fbcf9f398a2cde01565098dbfa 100644 (file)
@@ -6,6 +6,8 @@
  */
 
 #define SUPPORTED_PERSONALITIES 2
+#define PERSONALITY0_AUDIT_ARCH { AUDIT_ARCH_TILEGX,   0 }
+#define PERSONALITY1_AUDIT_ARCH { AUDIT_ARCH_TILEGX32, 0 }
 #define CAN_ARCH_BE_COMPAT_ON_64BIT_KERNEL 1
 
 #ifdef __tilepro__
index 0a88242d54381b74493de78cae5b8f32cab17357..93c25042b61fb36985ff88795f00bfa9fe97ff65 100644 (file)
@@ -1,19 +1,13 @@
 /*
  * Copyright (c) 2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2018-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
  */
 
-#ifndef AUDIT_ARCH_TILEGX32
-# define AUDIT_ARCH_TILEGX32 0x400000bf
-#endif
-#ifndef AUDIT_ARCH_TILEPRO
-# define AUDIT_ARCH_TILEPRO 0x400000bc
-#endif
-
 int
-get_personality_from_syscall_info(const struct ptrace_syscall_info *sci)
+get_personality_from_syscall_info(const struct_ptrace_syscall_info *sci)
 {
        return sci->arch == AUDIT_ARCH_TILEGX32 ||
               sci->arch == AUDIT_ARCH_TILEPRO;
index c1ab0d55c0eec3cd764f5a99af098f62f9dd811b..d96ebc23e5f49c414baadf14e285c4cf7e7e22e5 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -8,6 +8,8 @@
 static int
 arch_set_scno(struct tcb *tcp, kernel_ulong_t scno)
 {
+       if (ptrace_syscall_info_is_valid() && get_regs(tcp) < 0)
+               return -1;
        tile_regs.regs[10] = scno;
        return set_regs(tcp->pid);
 }
index 1d15a0ce047a5d090311b992d2455a00f8130119..ffabdce58b1cf1123fcca7d36989ade87850672e 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014-2018 The strace developers.
+ * Copyright (c) 2014-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -24,6 +24,7 @@ struct unix_diag_req {
 # define UDIAG_SHOW_ICONS      0x08
 # define UDIAG_SHOW_RQLEN      0x10
 # define UDIAG_SHOW_MEMINFO    0x20
+# define UDIAG_SHOW_UID                0x40
 
 struct unix_diag_msg {
        uint8_t  udiag_family;
@@ -42,6 +43,8 @@ enum {
        UNIX_DIAG_RQLEN,
        UNIX_DIAG_MEMINFO,
        UNIX_DIAG_SHUTDOWN,
+       UNIX_DIAG_UID,
+       UNIX_DIAG_FIRST_UNUSED
 };
 
 struct unix_diag_vfs {
index 1055de123d7d60319cb69283ce2267d45237d691..dfdd440ecd646eb28aa06177141582b1f60ef52a 100644 (file)
@@ -1,13 +1,15 @@
 /*
- * Copyright (c) 2018-2019 The strace developers.
+ * Copyright (c) 2018-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
  */
 
-#define ARCH_TIMESIZE 8
+#define ARCH_SIZEOF_STRUCT_MSQID64_DS 120
 #define HAVE_ARCH_OLD_MMAP 1
 #define HAVE_ARCH_OLD_SELECT 1
 #define HAVE_ARCH_UID16_SYSCALLS 1
 #define HAVE_ARCH_OLD_TIME64_SYSCALLS 1
 #define SUPPORTED_PERSONALITIES 2
+#define PERSONALITY0_AUDIT_ARCH { AUDIT_ARCH_X86_64, __X32_SYSCALL_BIT }
+#define PERSONALITY1_AUDIT_ARCH { AUDIT_ARCH_I386,   0 }
index 0706d019ead5e01934cf04bc129c5490acb906e1..9f936553c95844bc3e9b09d17d29b77ecf17c939 100644 (file)
@@ -81,8 +81,8 @@
 { "asm-generic/sockios.h", "FIOSETOWN", 0, 0x8901, 0 },
 { "asm-generic/sockios.h", "SIOCATMARK", 0, 0x8905, 0 },
 { "asm-generic/sockios.h", "SIOCGPGRP", 0, 0x8904, 0 },
-{ "asm-generic/sockios.h", "SIOCGSTAMP", 0, 0x8906, 0 },
-{ "asm-generic/sockios.h", "SIOCGSTAMPNS", 0, 0x8907, 0 },
+{ "asm-generic/sockios.h", "SIOCGSTAMPNS_OLD", 0, 0x8907, 0 },
+{ "asm-generic/sockios.h", "SIOCGSTAMP_OLD", 0, 0x8906, 0 },
 { "asm-generic/sockios.h", "SIOCSPGRP", 0, 0x8902, 0 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_BO_LIST", _IOC_READ|_IOC_WRITE, 0x6443, 0x18 },
 { "drm/amdgpu_drm.h", "DRM_IOCTL_AMDGPU_CS", _IOC_READ|_IOC_WRITE, 0x6444, 0x18 },
 { "drm/drm.h", "DRM_IOCTL_MODE_GETCRTC", _IOC_READ|_IOC_WRITE, 0x64a1, 0x68 },
 { "drm/drm.h", "DRM_IOCTL_MODE_GETENCODER", _IOC_READ|_IOC_WRITE, 0x64a6, 0x14 },
 { "drm/drm.h", "DRM_IOCTL_MODE_GETFB", _IOC_READ|_IOC_WRITE, 0x64ad, 0x1c },
+{ "drm/drm.h", "DRM_IOCTL_MODE_GETFB2", _IOC_READ|_IOC_WRITE, 0x64ce, 0x68 },
 { "drm/drm.h", "DRM_IOCTL_MODE_GETGAMMA", _IOC_READ|_IOC_WRITE, 0x64a4, 0x20 },
 { "drm/drm.h", "DRM_IOCTL_MODE_GETPLANE", _IOC_READ|_IOC_WRITE, 0x64b6, 0x20 },
 { "drm/drm.h", "DRM_IOCTL_MODE_GETPLANERESOURCES", _IOC_READ|_IOC_WRITE, 0x64b5, 0x10 },
 { "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_QUERY", _IOC_READ|_IOC_WRITE, 0x64cb, 0x18 },
 { "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_TIMELINE_SIGNAL", _IOC_READ|_IOC_WRITE, 0x64cd, 0x18 },
+{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_TIMELINE_WAIT", _IOC_READ|_IOC_WRITE, 0x64ca, 0x28 },
+{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_TRANSFER", _IOC_READ|_IOC_WRITE, 0x64cc, 0x20 },
 { "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/i915_drm.h", "DRM_IOCTL_I915_FREE", _IOC_WRITE, 0x6449, 0x08 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_BUSY", _IOC_READ|_IOC_WRITE, 0x6457, 0x08 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CONTEXT_CREATE", _IOC_READ|_IOC_WRITE, 0x646d, 0x08 },
+{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CONTEXT_CREATE_EXT", _IOC_READ|_IOC_WRITE, 0x646d, 0x10 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CONTEXT_DESTROY", _IOC_WRITE, 0x646e, 0x08 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CONTEXT_GETPARAM", _IOC_READ|_IOC_WRITE, 0x6474, 0x18 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM", _IOC_READ|_IOC_WRITE, 0x6475, 0x18 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_MADVISE", _IOC_READ|_IOC_WRITE, 0x6466, 0x0c },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_MMAP", _IOC_READ|_IOC_WRITE, 0x645e, 0x28 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_MMAP_GTT", _IOC_READ|_IOC_WRITE, 0x6464, 0x10 },
+{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_MMAP_OFFSET", _IOC_READ|_IOC_WRITE, 0x6464, 0x20 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_PIN", _IOC_READ|_IOC_WRITE, 0x6455, 0x18 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_PREAD", _IOC_WRITE, 0x645c, 0x20 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_PWRITE", _IOC_WRITE, 0x645d, 0x20 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_THROTTLE", _IOC_NONE, 0x6458, 0x00 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_UNPIN", _IOC_WRITE, 0x6456, 0x08 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_USERPTR", _IOC_READ|_IOC_WRITE, 0x6473, 0x18 },
+{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_VM_CREATE", _IOC_READ|_IOC_WRITE, 0x647a, 0x10 },
+{ "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_VM_DESTROY", _IOC_WRITE, 0x647b, 0x10 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GEM_WAIT", _IOC_READ|_IOC_WRITE, 0x646c, 0x10 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GETPARAM", _IOC_READ|_IOC_WRITE, 0x6446, 0x08 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_GET_PIPE_FROM_CRTC_ID", _IOC_READ|_IOC_WRITE, 0x6465, 0x08 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_SET_SPRITE_COLORKEY", _IOC_READ|_IOC_WRITE, 0x646b, 0x14 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_SET_VBLANK_PIPE", _IOC_WRITE, 0x644d, 0x04 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_VBLANK_SWAP", _IOC_READ|_IOC_WRITE, 0x644f, 0x0c },
+{ "drm/i915_drm.h", "I915_PERF_IOCTL_CONFIG", _IOC_NONE, 0x6902, 0x00 },
 { "drm/i915_drm.h", "I915_PERF_IOCTL_DISABLE", _IOC_NONE, 0x6901, 0x00 },
 { "drm/i915_drm.h", "I915_PERF_IOCTL_ENABLE", _IOC_NONE, 0x6900, 0x00 },
+{ "drm/lima_drm.h", "DRM_IOCTL_LIMA_CTX_CREATE", _IOC_READ, 0x6445, 0x08 },
+{ "drm/lima_drm.h", "DRM_IOCTL_LIMA_CTX_FREE", _IOC_WRITE, 0x6446, 0x08 },
+{ "drm/lima_drm.h", "DRM_IOCTL_LIMA_GEM_CREATE", _IOC_READ|_IOC_WRITE, 0x6441, 0x10 },
+{ "drm/lima_drm.h", "DRM_IOCTL_LIMA_GEM_INFO", _IOC_READ|_IOC_WRITE, 0x6442, 0x10 },
+{ "drm/lima_drm.h", "DRM_IOCTL_LIMA_GEM_SUBMIT", _IOC_WRITE, 0x6443, 0x30 },
+{ "drm/lima_drm.h", "DRM_IOCTL_LIMA_GEM_WAIT", _IOC_WRITE, 0x6444, 0x10 },
+{ "drm/lima_drm.h", "DRM_IOCTL_LIMA_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6440, 0x10 },
 { "drm/mga_drm.h", "DRM_IOCTL_MGA_BLIT", _IOC_WRITE, 0x6448, 0x34 },
 { "drm/mga_drm.h", "DRM_IOCTL_MGA_CLEAR", _IOC_WRITE, 0x6444, 0x14 },
 { "drm/mga_drm.h", "DRM_IOCTL_MGA_DMA_BOOTSTRAP", _IOC_READ|_IOC_WRITE, 0x644c, 0x1c },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_INFO", _IOC_READ|_IOC_WRITE, 0x6443, 0x18 },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_MADVISE", _IOC_READ|_IOC_WRITE, 0x6448, 0x0c },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_NEW", _IOC_READ|_IOC_WRITE, 0x6442, 0x10 },
-{ "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_SUBMIT", _IOC_READ|_IOC_WRITE, 0x6446, 0x28 },
+{ "drm/msm_drm.h", "DRM_IOCTL_MSM_GEM_SUBMIT", _IOC_READ|_IOC_WRITE, 0x6446, 0x48 },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6440, 0x10 },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_SUBMITQUEUE_CLOSE", _IOC_WRITE, 0x644b, 0x04 },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_SUBMITQUEUE_NEW", _IOC_READ|_IOC_WRITE, 0x644a, 0x0c },
+{ "drm/msm_drm.h", "DRM_IOCTL_MSM_SUBMITQUEUE_QUERY", _IOC_WRITE, 0x644c, 0x18 },
 { "drm/msm_drm.h", "DRM_IOCTL_MSM_WAIT_FENCE", _IOC_WRITE, 0x6447, 0x20 },
 { "drm/nouveau_drm.h", "DRM_IOCTL_NOUVEAU_GEM_CPU_FINI", _IOC_WRITE, 0x6483, 0x04 },
 { "drm/nouveau_drm.h", "DRM_IOCTL_NOUVEAU_GEM_CPU_PREP", _IOC_WRITE, 0x6482, 0x08 },
 { "drm/omap_drm.h", "DRM_IOCTL_OMAP_GEM_NEW", _IOC_READ|_IOC_WRITE, 0x6443, 0x10 },
 { "drm/omap_drm.h", "DRM_IOCTL_OMAP_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6440, 0x10 },
 { "drm/omap_drm.h", "DRM_IOCTL_OMAP_SET_PARAM", _IOC_WRITE, 0x6441, 0x10 },
+{ "drm/panfrost_drm.h", "DRM_IOCTL_PANFROST_CREATE_BO", _IOC_READ|_IOC_WRITE, 0x6442, 0x18 },
+{ "drm/panfrost_drm.h", "DRM_IOCTL_PANFROST_GET_BO_OFFSET", _IOC_READ|_IOC_WRITE, 0x6445, 0x10 },
+{ "drm/panfrost_drm.h", "DRM_IOCTL_PANFROST_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6444, 0x10 },
+{ "drm/panfrost_drm.h", "DRM_IOCTL_PANFROST_MADVISE", _IOC_READ|_IOC_WRITE, 0x6448, 0x0c },
+{ "drm/panfrost_drm.h", "DRM_IOCTL_PANFROST_MMAP_BO", _IOC_READ|_IOC_WRITE, 0x6443, 0x10 },
+{ "drm/panfrost_drm.h", "DRM_IOCTL_PANFROST_PERFCNT_DUMP", _IOC_WRITE, 0x6447, 0x08 },
+{ "drm/panfrost_drm.h", "DRM_IOCTL_PANFROST_PERFCNT_ENABLE", _IOC_WRITE, 0x6446, 0x08 },
+{ "drm/panfrost_drm.h", "DRM_IOCTL_PANFROST_SUBMIT", _IOC_WRITE, 0x6440, 0x28 },
+{ "drm/panfrost_drm.h", "DRM_IOCTL_PANFROST_WAIT_BO", _IOC_WRITE, 0x6441, 0x10 },
 { "drm/qxl_drm.h", "DRM_IOCTL_QXL_ALLOC", _IOC_READ|_IOC_WRITE, 0x6440, 0x08 },
 { "drm/qxl_drm.h", "DRM_IOCTL_QXL_ALLOC_SURF", _IOC_READ|_IOC_WRITE, 0x6446, 0x18 },
 { "drm/qxl_drm.h", "DRM_IOCTL_QXL_CLIENTCAP", _IOC_WRITE, 0x6445, 0x08 },
 { "drm/v3d_drm.h", "DRM_IOCTL_V3D_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6444, 0x10 },
 { "drm/v3d_drm.h", "DRM_IOCTL_V3D_MMAP_BO", _IOC_READ|_IOC_WRITE, 0x6443, 0x10 },
 { "drm/v3d_drm.h", "DRM_IOCTL_V3D_SUBMIT_CL", _IOC_READ|_IOC_WRITE, 0x6440, 0x38 },
+{ "drm/v3d_drm.h", "DRM_IOCTL_V3D_SUBMIT_CSD", _IOC_WRITE, 0x6447, 0x48 },
 { "drm/v3d_drm.h", "DRM_IOCTL_V3D_SUBMIT_TFU", _IOC_WRITE, 0x6446, 0x44 },
 { "drm/v3d_drm.h", "DRM_IOCTL_V3D_WAIT_BO", _IOC_READ|_IOC_WRITE, 0x6441, 0x10 },
 { "drm/vc4_drm.h", "DRM_IOCTL_VC4_CREATE_BO", _IOC_READ|_IOC_WRITE, 0x6443, 0x10 },
 { "linux/arcfb.h", "FBIO_WAITEVENT", _IOC_NONE, 0x4688, 0x00 },
 { "linux/aspeed-lpc-ctrl.h", "ASPEED_LPC_CTRL_IOCTL_GET_SIZE", _IOC_READ|_IOC_WRITE, 0xb200, 0x10 },
 { "linux/aspeed-lpc-ctrl.h", "ASPEED_LPC_CTRL_IOCTL_MAP", _IOC_WRITE, 0xb201, 0x10 },
+{ "linux/aspeed-p2a-ctrl.h", "ASPEED_P2A_CTRL_IOCTL_GET_MEMORY_CONFIG", _IOC_READ|_IOC_WRITE, 0xb301, 0x10 },
+{ "linux/aspeed-p2a-ctrl.h", "ASPEED_P2A_CTRL_IOCTL_SET_WINDOW", _IOC_WRITE, 0xb300, 0x10 },
 { "linux/atm_eni.h", "ENI_MEMDUMP", _IOC_WRITE, 0x6160, 0x0c },
 { "linux/atm_eni.h", "ENI_SETMULT", _IOC_WRITE, 0x6167, 0x0c },
 { "linux/atm_he.h", "HE_GET_REG", _IOC_WRITE, 0x6160, 0x0c },
 { "linux/auto_fs.h", "AUTOFS_IOC_SETTIMEOUT", _IOC_READ|_IOC_WRITE, 0x9364, 0x04 },
 { "linux/auto_fs.h", "AUTOFS_IOC_SETTIMEOUT32", _IOC_READ|_IOC_WRITE, 0x9364, 0x04 },
 { "linux/blkpg.h", "BLKPG", _IOC_NONE, 0x1269, 0x00 },
+{ "linux/blkzoned.h", "BLKCLOSEZONE", _IOC_WRITE, 0x1287, 0x10 },
+{ "linux/blkzoned.h", "BLKFINISHZONE", _IOC_WRITE, 0x1288, 0x10 },
 { "linux/blkzoned.h", "BLKGETNRZONES", _IOC_READ, 0x1285, 0x04 },
 { "linux/blkzoned.h", "BLKGETZONESZ", _IOC_READ, 0x1284, 0x04 },
+{ "linux/blkzoned.h", "BLKOPENZONE", _IOC_WRITE, 0x1286, 0x10 },
 { "linux/blkzoned.h", "BLKREPORTZONE", _IOC_READ|_IOC_WRITE, 0x1282, 0x10 },
 { "linux/blkzoned.h", "BLKRESETZONE", _IOC_WRITE, 0x1283, 0x10 },
 { "linux/bt-bmc.h", "BT_BMC_IOCTL_SMS_ATN", _IOC_NONE, 0xb100, 0x00 },
 { "linux/btrfs.h", "BTRFS_IOC_SNAP_CREATE", _IOC_WRITE, 0x9401, 0x1000 },
 { "linux/btrfs.h", "BTRFS_IOC_SNAP_CREATE_V2", _IOC_WRITE, 0x9417, 0x1000 },
 { "linux/btrfs.h", "BTRFS_IOC_SNAP_DESTROY", _IOC_WRITE, 0x940f, 0x1000 },
+{ "linux/btrfs.h", "BTRFS_IOC_SNAP_DESTROY_V2", _IOC_WRITE, 0x943f, 0x1000 },
 { "linux/btrfs.h", "BTRFS_IOC_SPACE_INFO", _IOC_READ|_IOC_WRITE, 0x9414, 0x10 },
 { "linux/btrfs.h", "BTRFS_IOC_START_SYNC", _IOC_READ, 0x9418, 0x08 },
 { "linux/btrfs.h", "BTRFS_IOC_SUBVOL_CREATE", _IOC_WRITE, 0x940e, 0x1000 },
 { "linux/cdrom.h", "DVD_READ_STRUCT", 0, 0x5390, 0 },
 { "linux/cdrom.h", "DVD_WRITE_STRUCT", 0, 0x5391, 0 },
 { "linux/cec.h", "CEC_ADAP_G_CAPS", _IOC_READ|_IOC_WRITE, 0x6100, 0x4c },
+{ "linux/cec.h", "CEC_ADAP_G_CONNECTOR_INFO", _IOC_READ, 0x610a, 0x44 },
 { "linux/cec.h", "CEC_ADAP_G_LOG_ADDRS", _IOC_READ, 0x6103, 0x5c },
 { "linux/cec.h", "CEC_ADAP_G_PHYS_ADDR", _IOC_READ, 0x6101, 0x02 },
 { "linux/cec.h", "CEC_ADAP_S_LOG_ADDRS", _IOC_READ|_IOC_WRITE, 0x6104, 0x5c },
 { "linux/dm-ioctl.h", "DM_DEV_STATUS", _IOC_READ|_IOC_WRITE, 0xfd07, 0x138 },
 { "linux/dm-ioctl.h", "DM_DEV_SUSPEND", _IOC_READ|_IOC_WRITE, 0xfd06, 0x138 },
 { "linux/dm-ioctl.h", "DM_DEV_WAIT", _IOC_READ|_IOC_WRITE, 0xfd08, 0x138 },
+{ "linux/dm-ioctl.h", "DM_GET_TARGET_VERSION", _IOC_READ|_IOC_WRITE, 0xfd11, 0x138 },
 { "linux/dm-ioctl.h", "DM_LIST_DEVICES", _IOC_READ|_IOC_WRITE, 0xfd02, 0x138 },
 { "linux/dm-ioctl.h", "DM_LIST_VERSIONS", _IOC_READ|_IOC_WRITE, 0xfd0d, 0x138 },
 { "linux/dm-ioctl.h", "DM_REMOVE_ALL", _IOC_READ|_IOC_WRITE, 0xfd01, 0x138 },
 { "linux/dm-ioctl.h", "DM_TARGET_MSG", _IOC_READ|_IOC_WRITE, 0xfd0e, 0x138 },
 { "linux/dm-ioctl.h", "DM_VERSION", _IOC_READ|_IOC_WRITE, 0xfd00, 0x138 },
 { "linux/dma-buf.h", "DMA_BUF_IOCTL_SYNC", _IOC_WRITE, 0x6200, 0x08 },
+{ "linux/dma-buf.h", "DMA_BUF_SET_NAME_A", _IOC_WRITE, 0x6201, 0x04 },
+{ "linux/dma-buf.h", "DMA_BUF_SET_NAME_B", _IOC_WRITE, 0x6201, 0x08 },
+{ "linux/dma-heap.h", "DMA_HEAP_IOCTL_ALLOC", _IOC_READ|_IOC_WRITE, 0x4800, 0x18 },
 { "linux/dn.h", "OSIOCGNETADDR", _IOC_READ, 0x89e1, 0x04 },
 { "linux/dn.h", "OSIOCSNETADDR", _IOC_WRITE, 0x89e0, 0x04 },
 { "linux/dn.h", "SIOCGNETADDR", _IOC_READ, 0x89e1, 0x04 },
 { "linux/firewire-cdev.h", "FW_CDEV_IOC_START_ISO", _IOC_WRITE, 0x230a, 0x10 },
 { "linux/firewire-cdev.h", "FW_CDEV_IOC_STOP_ISO", _IOC_WRITE, 0x230b, 0x04 },
 { "linux/fpga-dfl.h", "DFL_FPGA_CHECK_EXTENSION", _IOC_NONE, 0xb601, 0x00 },
+{ "linux/fpga-dfl.h", "DFL_FPGA_FME_ERR_GET_IRQ_NUM", _IOC_READ, 0xb683, 0x04 },
+{ "linux/fpga-dfl.h", "DFL_FPGA_FME_ERR_SET_IRQ", _IOC_WRITE, 0xb684, 0x08 },
+{ "linux/fpga-dfl.h", "DFL_FPGA_FME_PORT_ASSIGN", _IOC_WRITE, 0xb682, 0x04 },
 { "linux/fpga-dfl.h", "DFL_FPGA_FME_PORT_PR", _IOC_NONE, 0xb680, 0x00 },
+{ "linux/fpga-dfl.h", "DFL_FPGA_FME_PORT_RELEASE", _IOC_WRITE, 0xb681, 0x04 },
 { "linux/fpga-dfl.h", "DFL_FPGA_GET_API_VERSION", _IOC_NONE, 0xb600, 0x00 },
 { "linux/fpga-dfl.h", "DFL_FPGA_PORT_DMA_MAP", _IOC_NONE, 0xb643, 0x00 },
 { "linux/fpga-dfl.h", "DFL_FPGA_PORT_DMA_UNMAP", _IOC_NONE, 0xb644, 0x00 },
+{ "linux/fpga-dfl.h", "DFL_FPGA_PORT_ERR_GET_IRQ_NUM", _IOC_READ, 0xb645, 0x04 },
+{ "linux/fpga-dfl.h", "DFL_FPGA_PORT_ERR_SET_IRQ", _IOC_WRITE, 0xb646, 0x08 },
 { "linux/fpga-dfl.h", "DFL_FPGA_PORT_GET_INFO", _IOC_NONE, 0xb641, 0x00 },
 { "linux/fpga-dfl.h", "DFL_FPGA_PORT_GET_REGION_INFO", _IOC_NONE, 0xb642, 0x00 },
 { "linux/fpga-dfl.h", "DFL_FPGA_PORT_RESET", _IOC_NONE, 0xb640, 0x00 },
+{ "linux/fpga-dfl.h", "DFL_FPGA_PORT_UINT_GET_IRQ_NUM", _IOC_READ, 0xb647, 0x04 },
+{ "linux/fpga-dfl.h", "DFL_FPGA_PORT_UINT_SET_IRQ", _IOC_WRITE, 0xb648, 0x08 },
 { "linux/fs.h", "BLKALIGNOFF", _IOC_NONE, 0x127a, 0x00 },
 { "linux/fs.h", "BLKBSZGET", _IOC_READ, 0x1270, 0x04 },
 { "linux/fs.h", "BLKBSZSET", _IOC_WRITE, 0x1271, 0x04 },
 { "linux/fs.h", "FS_IOC_GETFLAGS", _IOC_READ, 0x6601, 0x04 },
 { "linux/fs.h", "FS_IOC_GETFSLABEL", _IOC_READ, 0x9431, 0x100 },
 { "linux/fs.h", "FS_IOC_GETVERSION", _IOC_READ, 0x7601, 0x04 },
-{ "linux/fs.h", "FS_IOC_GET_ENCRYPTION_POLICY", _IOC_WRITE, 0x6615, 0x0c },
-{ "linux/fs.h", "FS_IOC_GET_ENCRYPTION_PWSALT", _IOC_WRITE, 0x6614, 0x10 },
 { "linux/fs.h", "FS_IOC_SETFLAGS", _IOC_WRITE, 0x6602, 0x04 },
 { "linux/fs.h", "FS_IOC_SETFSLABEL", _IOC_WRITE, 0x9432, 0x100 },
 { "linux/fs.h", "FS_IOC_SETVERSION", _IOC_WRITE, 0x7602, 0x04 },
-{ "linux/fs.h", "FS_IOC_SET_ENCRYPTION_POLICY", _IOC_READ, 0x6613, 0x0c },
+{ "linux/fscrypt.h", "FS_IOC_ADD_ENCRYPTION_KEY", _IOC_READ|_IOC_WRITE, 0x6617, 0x50 },
+{ "linux/fscrypt.h", "FS_IOC_GET_ENCRYPTION_KEY_STATUS", _IOC_READ|_IOC_WRITE, 0x661a, 0x80 },
+{ "linux/fscrypt.h", "FS_IOC_GET_ENCRYPTION_NONCE", _IOC_READ, 0x661b, 0x10 },
+{ "linux/fscrypt.h", "FS_IOC_GET_ENCRYPTION_POLICY", _IOC_WRITE, 0x6615, 0x0c },
+{ "linux/fscrypt.h", "FS_IOC_GET_ENCRYPTION_POLICY_EX", _IOC_READ|_IOC_WRITE, 0x6616, 0x09 },
+{ "linux/fscrypt.h", "FS_IOC_GET_ENCRYPTION_PWSALT", _IOC_WRITE, 0x6614, 0x10 },
+{ "linux/fscrypt.h", "FS_IOC_REMOVE_ENCRYPTION_KEY", _IOC_READ|_IOC_WRITE, 0x6618, 0x40 },
+{ "linux/fscrypt.h", "FS_IOC_REMOVE_ENCRYPTION_KEY_ALL_USERS", _IOC_READ|_IOC_WRITE, 0x6619, 0x40 },
+{ "linux/fscrypt.h", "FS_IOC_SET_ENCRYPTION_POLICY", _IOC_READ, 0x6613, 0x0c },
 { "linux/fsi.h", "FSI_SCOM_CHECK", _IOC_READ, 0x7300, 0x04 },
 { "linux/fsi.h", "FSI_SCOM_READ", _IOC_READ|_IOC_WRITE, 0x7301, 0x20 },
 { "linux/fsi.h", "FSI_SCOM_RESET", _IOC_WRITE, 0x7303, 0x04 },
 { "linux/fsl_hypervisor.h", "FSL_HV_IOCTL_PARTITION_STOP", _IOC_READ|_IOC_WRITE, 0xaf04, 0x08 },
 { "linux/fsl_hypervisor.h", "FSL_HV_IOCTL_SETPROP", _IOC_READ|_IOC_WRITE, 0xaf08, 0x28 },
 { "linux/fsmap.h", "FS_IOC_GETFSMAP", _IOC_READ|_IOC_WRITE, 0x583b, 0xc0 },
+{ "linux/fsverity.h", "FS_IOC_ENABLE_VERITY", _IOC_WRITE, 0x6685, 0x80 },
+{ "linux/fsverity.h", "FS_IOC_MEASURE_VERITY", _IOC_READ|_IOC_WRITE, 0x6686, 0x04 },
 { "linux/fuse.h", "FUSE_DEV_IOC_CLONE", _IOC_READ, 0xe500, 0x04 },
 { "linux/genwqe/genwqe_card.h", "GENWQE_EXECUTE_DDCB", _IOC_READ|_IOC_WRITE, 0xa532, 0xe8 },
 { "linux/genwqe/genwqe_card.h", "GENWQE_EXECUTE_RAW_DDCB", _IOC_READ|_IOC_WRITE, 0xa533, 0xe8 },
 { "linux/genwqe/genwqe_card.h", "GENWQE_WRITE_REG16", _IOC_WRITE, 0xa523, 0x10 },
 { "linux/genwqe/genwqe_card.h", "GENWQE_WRITE_REG32", _IOC_WRITE, 0xa521, 0x10 },
 { "linux/genwqe/genwqe_card.h", "GENWQE_WRITE_REG64", _IOC_WRITE, 0xa51f, 0x10 },
-{ "linux/gigaset_dev.h", "GIGASET_BRKCHARS", _IOC_WRITE, 0x4702, 0x06 },
-{ "linux/gigaset_dev.h", "GIGASET_CONFIG", _IOC_READ|_IOC_WRITE, 0x4701, 0x04 },
-{ "linux/gigaset_dev.h", "GIGASET_REDIR", _IOC_READ|_IOC_WRITE, 0x4700, 0x04 },
-{ "linux/gigaset_dev.h", "GIGASET_VERSION", _IOC_READ|_IOC_WRITE, 0x4703, 0x10 },
 { "linux/gpio.h", "GPIOHANDLE_GET_LINE_VALUES_IOCTL", _IOC_READ|_IOC_WRITE, 0xb408, 0x40 },
+{ "linux/gpio.h", "GPIOHANDLE_SET_CONFIG_IOCTL", _IOC_READ|_IOC_WRITE, 0xb40a, 0x54 },
 { "linux/gpio.h", "GPIOHANDLE_SET_LINE_VALUES_IOCTL", _IOC_READ|_IOC_WRITE, 0xb409, 0x40 },
 { "linux/gpio.h", "GPIO_GET_CHIPINFO_IOCTL", _IOC_READ, 0xb401, 0x44 },
 { "linux/gpio.h", "GPIO_GET_LINEEVENT_IOCTL", _IOC_READ|_IOC_WRITE, 0xb404, 0x30 },
 { "linux/gpio.h", "GPIO_GET_LINEHANDLE_IOCTL", _IOC_READ|_IOC_WRITE, 0xb403, 0x16c },
 { "linux/gpio.h", "GPIO_GET_LINEINFO_IOCTL", _IOC_READ|_IOC_WRITE, 0xb402, 0x48 },
+{ "linux/gpio.h", "GPIO_GET_LINEINFO_UNWATCH_IOCTL", _IOC_READ|_IOC_WRITE, 0xb40c, 0x04 },
+{ "linux/gpio.h", "GPIO_GET_LINEINFO_WATCH_IOCTL", _IOC_READ|_IOC_WRITE, 0xb40b, 0x48 },
 { "linux/gsmmux.h", "GSMIOC_DISABLE_NET", _IOC_NONE, 0x4703, 0x00 },
 { "linux/gsmmux.h", "GSMIOC_ENABLE_NET", _IOC_WRITE, 0x4702, 0x34 },
 { "linux/gsmmux.h", "GSMIOC_GETCONF", _IOC_READ, 0x4700, 0x4c },
+{ "linux/gsmmux.h", "GSMIOC_GETFIRST", _IOC_READ, 0x4704, 0x04 },
 { "linux/gsmmux.h", "GSMIOC_SETCONF", _IOC_WRITE, 0x4701, 0x4c },
 { "linux/hdreg.h", "HDIO_DRIVE_CMD", 0, 0x031f, 0 },
 { "linux/hdreg.h", "HDIO_DRIVE_RESET", 0, 0x031c, 0 },
 { "linux/if_pppox.h", "PPPOEIOCSFWD", _IOC_WRITE, 0xb100, 0x04 },
 { "linux/if_tun.h", "TUNATTACHFILTER", _IOC_WRITE, 0x54d5, 0x08 },
 { "linux/if_tun.h", "TUNDETACHFILTER", _IOC_WRITE, 0x54d6, 0x08 },
+{ "linux/if_tun.h", "TUNGETDEVNETNS", _IOC_NONE, 0x54e3, 0x00 },
 { "linux/if_tun.h", "TUNGETFEATURES", _IOC_READ, 0x54cf, 0x04 },
 { "linux/if_tun.h", "TUNGETFILTER", _IOC_READ, 0x54db, 0x08 },
 { "linux/if_tun.h", "TUNGETIFF", _IOC_READ, 0x54d2, 0x04 },
 { "linux/ipmi_bmc.h", "IPMI_BMC_IOCTL_CLEAR_SMS_ATN", _IOC_NONE, 0xb101, 0x00 },
 { "linux/ipmi_bmc.h", "IPMI_BMC_IOCTL_FORCE_ABORT", _IOC_NONE, 0xb102, 0x00 },
 { "linux/ipmi_bmc.h", "IPMI_BMC_IOCTL_SET_SMS_ATN", _IOC_NONE, 0xb100, 0x00 },
-{ "linux/isdn.h", "IIOCDBGVAR", _IOC_NONE, 0x497f, 0x00 },
-{ "linux/isdn.h", "IIOCDRVCTL", _IOC_NONE, 0x4980, 0x00 },
-{ "linux/isdn.h", "IIOCGETCPS", _IOC_NONE, 0x4915, 0x00 },
-{ "linux/isdn.h", "IIOCGETDVR", _IOC_NONE, 0x4916, 0x00 },
-{ "linux/isdn.h", "IIOCGETMAP", _IOC_NONE, 0x4911, 0x00 },
-{ "linux/isdn.h", "IIOCGETPRF", _IOC_NONE, 0x490f, 0x00 },
-{ "linux/isdn.h", "IIOCGETSET", _IOC_NONE, 0x4908, 0x00 },
-{ "linux/isdn.h", "IIOCNETAIF", _IOC_NONE, 0x4901, 0x00 },
-{ "linux/isdn.h", "IIOCNETALN", _IOC_NONE, 0x4920, 0x00 },
-{ "linux/isdn.h", "IIOCNETANM", _IOC_NONE, 0x4905, 0x00 },
-{ "linux/isdn.h", "IIOCNETASL", _IOC_NONE, 0x4913, 0x00 },
-{ "linux/isdn.h", "IIOCNETDIF", _IOC_NONE, 0x4902, 0x00 },
-{ "linux/isdn.h", "IIOCNETDIL", _IOC_NONE, 0x4914, 0x00 },
-{ "linux/isdn.h", "IIOCNETDLN", _IOC_NONE, 0x4921, 0x00 },
-{ "linux/isdn.h", "IIOCNETDNM", _IOC_NONE, 0x4906, 0x00 },
-{ "linux/isdn.h", "IIOCNETDWRSET", _IOC_NONE, 0x4918, 0x00 },
-{ "linux/isdn.h", "IIOCNETGCF", _IOC_NONE, 0x4904, 0x00 },
-{ "linux/isdn.h", "IIOCNETGNM", _IOC_NONE, 0x4907, 0x00 },
-{ "linux/isdn.h", "IIOCNETGPN", _IOC_NONE, 0x4922, 0x00 },
-{ "linux/isdn.h", "IIOCNETHUP", _IOC_NONE, 0x490b, 0x00 },
-{ "linux/isdn.h", "IIOCNETLCR", _IOC_NONE, 0x4917, 0x00 },
-{ "linux/isdn.h", "IIOCNETSCF", _IOC_NONE, 0x4903, 0x00 },
-{ "linux/isdn.h", "IIOCSETBRJ", _IOC_NONE, 0x490d, 0x00 },
-{ "linux/isdn.h", "IIOCSETGST", _IOC_NONE, 0x490c, 0x00 },
-{ "linux/isdn.h", "IIOCSETMAP", _IOC_NONE, 0x4912, 0x00 },
-{ "linux/isdn.h", "IIOCSETPRF", _IOC_NONE, 0x4910, 0x00 },
-{ "linux/isdn.h", "IIOCSETSET", _IOC_NONE, 0x4909, 0x00 },
-{ "linux/isdn.h", "IIOCSETVER", _IOC_NONE, 0x490a, 0x00 },
-{ "linux/isdn.h", "IIOCSIGPRF", _IOC_NONE, 0x490e, 0x00 },
-{ "linux/isdn_ppp.h", "PPPIOCBUNDLE", _IOC_WRITE, 0x7481, 0x04 },
-{ "linux/isdn_ppp.h", "PPPIOCGCALLINFO", _IOC_READ|_IOC_WRITE, 0x7480, 0x88 },
-{ "linux/isdn_ppp.h", "PPPIOCGCOMPRESSORS", _IOC_READ, 0x7486, 0x20 },
-{ "linux/isdn_ppp.h", "PPPIOCGIFNAME", _IOC_READ, 0x7488, 0x10 },
-{ "linux/isdn_ppp.h", "PPPIOCGMPFLAGS", _IOC_READ, 0x7482, 0x04 },
-{ "linux/isdn_ppp.h", "PPPIOCSCOMPRESSOR", _IOC_WRITE, 0x7487, 0x04 },
-{ "linux/isdn_ppp.h", "PPPIOCSMPFLAGS", _IOC_WRITE, 0x7483, 0x04 },
-{ "linux/isdn_ppp.h", "PPPIOCSMPMRU", _IOC_WRITE, 0x7485, 0x04 },
-{ "linux/isdn_ppp.h", "PPPIOCSMPMTU", _IOC_WRITE, 0x7484, 0x04 },
+{ "linux/isst_if.h", "ISST_IF_GET_PHY_ID", _IOC_READ|_IOC_WRITE, 0xfe01, 0x04 },
+{ "linux/isst_if.h", "ISST_IF_GET_PLATFORM_INFO", _IOC_READ, 0xfe00, 0x04 },
+{ "linux/isst_if.h", "ISST_IF_IO_CMD", _IOC_WRITE, 0xfe02, 0x04 },
+{ "linux/isst_if.h", "ISST_IF_MBOX_COMMAND", _IOC_READ|_IOC_WRITE, 0xfe03, 0x04 },
+{ "linux/isst_if.h", "ISST_IF_MSR_COMMAND", _IOC_READ|_IOC_WRITE, 0xfe04, 0x04 },
 { "linux/ivtv.h", "IVTV_IOC_DMA_FRAME", _IOC_WRITE, 0x56c0, 0x38 },
 { "linux/ivtv.h", "IVTV_IOC_PASSTHROUGH_MODE", _IOC_WRITE, 0x56c1, 0x04 },
 { "linux/ivtvfb.h", "IVTVFB_IOC_DMA_FRAME", _IOC_WRITE, 0x56c0, 0x0c },
 { "linux/kcov.h", "KCOV_DISABLE", _IOC_NONE, 0x6365, 0x00 },
 { "linux/kcov.h", "KCOV_ENABLE", _IOC_NONE, 0x6364, 0x00 },
 { "linux/kcov.h", "KCOV_INIT_TRACE", _IOC_READ, 0x6301, 0x04 },
+{ "linux/kcov.h", "KCOV_REMOTE_ENABLE", _IOC_WRITE, 0x6366, 0x18 },
 { "linux/kd.h", "GIO_CMAP", 0, 0x4B70, 0 },
 { "linux/kd.h", "GIO_FONT", 0, 0x4B60, 0 },
 { "linux/kd.h", "GIO_FONTX", 0, 0x4B6B, 0 },
 { "linux/kd.h", "PIO_UNISCRNMAP", 0, 0x4B6A, 0 },
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_ACQUIRE_VM", _IOC_WRITE, 0x4b15, 0x08 },
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_ALLOC_MEMORY_OF_GPU", _IOC_READ|_IOC_WRITE, 0x4b16, 0x28 },
+{ "linux/kfd_ioctl.h", "AMDKFD_IOC_ALLOC_QUEUE_GWS", _IOC_READ|_IOC_WRITE, 0x4b1e, 0x10 },
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_CREATE_EVENT", _IOC_READ|_IOC_WRITE, 0x4b08, 0x20 },
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_CREATE_QUEUE", _IOC_READ|_IOC_WRITE, 0x4b02, 0x58 },
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_DBG_ADDRESS_WATCH", _IOC_WRITE, 0x4b0f, 0x10 },
 { "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_SET_TRAP_HANDLER", _IOC_WRITE, 0x4b13, 0x18 },
+{ "linux/kfd_ioctl.h", "AMDKFD_IOC_SMI_EVENTS", _IOC_READ|_IOC_WRITE, 0x4b1f, 0x08 },
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_UNMAP_MEMORY_FROM_GPU", _IOC_READ|_IOC_WRITE, 0x4b19, 0x18 },
 { "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/lirc.h", "LIRC_SET_WIDEBAND_RECEIVER", _IOC_WRITE, 0x6923, 0x04 },
 { "linux/loop.h", "LOOP_CHANGE_FD", 0, 0x4C06, 0 },
 { "linux/loop.h", "LOOP_CLR_FD", 0, 0x4C01, 0 },
+{ "linux/loop.h", "LOOP_CONFIGURE", 0, 0x4C0A, 0 },
 { "linux/loop.h", "LOOP_CTL_ADD", 0, 0x4C80, 0 },
 { "linux/loop.h", "LOOP_CTL_GET_FREE", 0, 0x4C82, 0 },
 { "linux/loop.h", "LOOP_CTL_REMOVE", 0, 0x4C81, 0 },
 { "linux/nsfs.h", "NS_GET_OWNER_UID", _IOC_NONE, 0xb704, 0x00 },
 { "linux/nsfs.h", "NS_GET_PARENT", _IOC_NONE, 0xb702, 0x00 },
 { "linux/nsfs.h", "NS_GET_USERNS", _IOC_NONE, 0xb701, 0x00 },
+{ "linux/nvme_ioctl.h", "NVME_IOCTL_ADMIN64_CMD", _IOC_READ|_IOC_WRITE, 0x4e47, 0x50 },
 { "linux/nvme_ioctl.h", "NVME_IOCTL_ADMIN_CMD", _IOC_READ|_IOC_WRITE, 0x4e41, 0x48 },
 { "linux/nvme_ioctl.h", "NVME_IOCTL_ID", _IOC_NONE, 0x4e40, 0x00 },
+{ "linux/nvme_ioctl.h", "NVME_IOCTL_IO64_CMD", _IOC_READ|_IOC_WRITE, 0x4e48, 0x50 },
 { "linux/nvme_ioctl.h", "NVME_IOCTL_IO_CMD", _IOC_READ|_IOC_WRITE, 0x4e43, 0x48 },
 { "linux/nvme_ioctl.h", "NVME_IOCTL_RESCAN", _IOC_NONE, 0x4e46, 0x00 },
 { "linux/nvme_ioctl.h", "NVME_IOCTL_RESET", _IOC_NONE, 0x4e44, 0x00 },
 { "linux/omapfb.h", "OMAPFB_WAITFORGO", _IOC_NONE, 0x4f3c, 0x00 },
 { "linux/omapfb.h", "OMAPFB_WAITFORVSYNC", _IOC_NONE, 0x4f39, 0x00 },
 { "linux/pcitest.h", "PCITEST_BAR", _IOC_NONE, 0x5001, 0x00 },
+{ "linux/pcitest.h", "PCITEST_CLEAR_IRQ", _IOC_NONE, 0x5010, 0x00 },
 { "linux/pcitest.h", "PCITEST_COPY", _IOC_WRITE, 0x5006, 0x04 },
 { "linux/pcitest.h", "PCITEST_GET_IRQTYPE", _IOC_NONE, 0x5009, 0x00 },
 { "linux/pcitest.h", "PCITEST_LEGACY_IRQ", _IOC_NONE, 0x5002, 0x00 },
 { "linux/phantom.h", "PHN_SET_REG", _IOC_WRITE, 0x7001, 0x04 },
 { "linux/phantom.h", "PHN_SET_REGS", _IOC_WRITE, 0x7003, 0x04 },
 { "linux/pktcdvd.h", "PACKET_CTRL_CMD", _IOC_READ|_IOC_WRITE, 0x5801, 0x18 },
+{ "linux/platform_data/cros_ec_chardev.h", "CROS_EC_DEV_IOCEVENTMASK", _IOC_NONE, 0xec02, 0x00 },
+{ "linux/platform_data/cros_ec_chardev.h", "CROS_EC_DEV_IOCRDMEM", _IOC_READ|_IOC_WRITE, 0xec01, 0x108 },
+{ "linux/platform_data/cros_ec_chardev.h", "CROS_EC_DEV_IOCXCMD", _IOC_READ|_IOC_WRITE, 0xec00, 0x14 },
 { "linux/platform_data/media/si4713.h", "SI4713_IOC_MEASURE_RNL", _IOC_READ|_IOC_WRITE, 0x56c0, 0x1c },
 { "linux/pmu.h", "PMU_IOC_CAN_SLEEP", _IOC_READ, 0x4205, 0x04 },
 { "linux/pmu.h", "PMU_IOC_GET_BACKLIGHT", _IOC_READ, 0x4201, 0x04 },
 { "linux/ppp-ioctl.h", "PPPIOCGDEBUG", _IOC_READ, 0x7441, 0x04 },
 { "linux/ppp-ioctl.h", "PPPIOCGFLAGS", _IOC_READ, 0x745a, 0x04 },
 { "linux/ppp-ioctl.h", "PPPIOCGIDLE", _IOC_READ, 0x743f, 0x10 },
+{ "linux/ppp-ioctl.h", "PPPIOCGIDLE32", _IOC_READ, 0x743f, 0x08 },
+{ "linux/ppp-ioctl.h", "PPPIOCGIDLE64", _IOC_READ, 0x743f, 0x10 },
 { "linux/ppp-ioctl.h", "PPPIOCGL2TPSTATS", _IOC_READ, 0x7436, 0x48 },
 { "linux/ppp-ioctl.h", "PPPIOCGMRU", _IOC_READ, 0x7453, 0x04 },
 { "linux/ppp-ioctl.h", "PPPIOCGNPMODE", _IOC_READ|_IOC_WRITE, 0x744c, 0x08 },
 { "linux/pr.h", "IOC_PR_RESERVE", _IOC_WRITE, 0x70c9, 0x10 },
 { "linux/psp-sev.h", "SEV_ISSUE_CMD", _IOC_READ|_IOC_WRITE, 0x5300, 0x10 },
 { "linux/ptp_clock.h", "PTP_CLOCK_GETCAPS", _IOC_READ, 0x3d01, 0x50 },
+{ "linux/ptp_clock.h", "PTP_CLOCK_GETCAPS2", _IOC_READ, 0x3d0a, 0x50 },
 { "linux/ptp_clock.h", "PTP_ENABLE_PPS", _IOC_WRITE, 0x3d04, 0x04 },
+{ "linux/ptp_clock.h", "PTP_ENABLE_PPS2", _IOC_WRITE, 0x3d0d, 0x04 },
 { "linux/ptp_clock.h", "PTP_EXTTS_REQUEST", _IOC_WRITE, 0x3d02, 0x10 },
+{ "linux/ptp_clock.h", "PTP_EXTTS_REQUEST2", _IOC_WRITE, 0x3d0b, 0x10 },
 { "linux/ptp_clock.h", "PTP_PEROUT_REQUEST", _IOC_WRITE, 0x3d03, 0x38 },
+{ "linux/ptp_clock.h", "PTP_PEROUT_REQUEST2", _IOC_WRITE, 0x3d0c, 0x38 },
 { "linux/ptp_clock.h", "PTP_PIN_GETFUNC", _IOC_READ|_IOC_WRITE, 0x3d06, 0x60 },
+{ "linux/ptp_clock.h", "PTP_PIN_GETFUNC2", _IOC_READ|_IOC_WRITE, 0x3d0f, 0x60 },
 { "linux/ptp_clock.h", "PTP_PIN_SETFUNC", _IOC_WRITE, 0x3d07, 0x60 },
+{ "linux/ptp_clock.h", "PTP_PIN_SETFUNC2", _IOC_WRITE, 0x3d10, 0x60 },
 { "linux/ptp_clock.h", "PTP_SYS_OFFSET", _IOC_WRITE, 0x3d05, 0x340 },
+{ "linux/ptp_clock.h", "PTP_SYS_OFFSET2", _IOC_WRITE, 0x3d0e, 0x340 },
 { "linux/ptp_clock.h", "PTP_SYS_OFFSET_EXTENDED", _IOC_READ|_IOC_WRITE, 0x3d09, 0x4c0 },
+{ "linux/ptp_clock.h", "PTP_SYS_OFFSET_EXTENDED2", _IOC_READ|_IOC_WRITE, 0x3d12, 0x4c0 },
 { "linux/ptp_clock.h", "PTP_SYS_OFFSET_PRECISE", _IOC_READ|_IOC_WRITE, 0x3d08, 0x40 },
+{ "linux/ptp_clock.h", "PTP_SYS_OFFSET_PRECISE2", _IOC_READ|_IOC_WRITE, 0x3d11, 0x40 },
 { "linux/radeonfb.h", "FBIO_RADEON_GET_MIRROR", _IOC_READ, 0x4003, 0x04 },
 { "linux/radeonfb.h", "FBIO_RADEON_SET_MIRROR", _IOC_WRITE, 0x4004, 0x04 },
 { "linux/raid/md_u.h", "ADD_NEW_DISK", _IOC_WRITE, 0x0921, 0x14 },
 { "linux/raw.h", "RAW_GETBIND", _IOC_NONE, 0xac01, 0x00 },
 { "linux/raw.h", "RAW_SETBIND", _IOC_NONE, 0xac00, 0x00 },
 { "linux/reiserfs_fs.h", "REISERFS_IOC_UNPACK", _IOC_WRITE, 0xcd01, 0x04 },
+{ "linux/remoteproc_cdev.h", "RPROC_GET_SHUTDOWN_ON_RELEASE", _IOC_READ, 0xb702, 0x04 },
+{ "linux/remoteproc_cdev.h", "RPROC_SET_SHUTDOWN_ON_RELEASE", _IOC_WRITE, 0xb701, 0x04 },
 { "linux/rfkill.h", "RFKILL_IOCTL_NOINPUT", _IOC_NONE, 0x5201, 0x00 },
 { "linux/rio_cm_cdev.h", "RIO_CM_CHAN_ACCEPT", _IOC_READ|_IOC_WRITE, 0x6307, 0x08 },
 { "linux/rio_cm_cdev.h", "RIO_CM_CHAN_BIND", _IOC_WRITE, 0x6305, 0x08 },
 { "linux/scif_ioctl.h", "SCIF_VREADFROM", _IOC_READ|_IOC_WRITE, 0x730c, 0x28 },
 { "linux/scif_ioctl.h", "SCIF_VWRITETO", _IOC_READ|_IOC_WRITE, 0x730d, 0x28 },
 { "linux/scif_ioctl.h", "SCIF_WRITETO", _IOC_READ|_IOC_WRITE, 0x730b, 0x28 },
-{ "linux/seccomp.h", "SECCOMP_IOCTL_NOTIF_ID_VALID", _IOC_READ, 0x2102, 0x08 },
+{ "linux/seccomp.h", "SECCOMP_IOCTL_NOTIF_ADDFD", _IOC_WRITE, 0x2103, 0x18 },
+{ "linux/seccomp.h", "SECCOMP_IOCTL_NOTIF_ID_VALID", _IOC_WRITE, 0x2102, 0x08 },
 { "linux/seccomp.h", "SECCOMP_IOCTL_NOTIF_RECV", _IOC_READ|_IOC_WRITE, 0x2100, 0x50 },
 { "linux/seccomp.h", "SECCOMP_IOCTL_NOTIF_SEND", _IOC_READ|_IOC_WRITE, 0x2101, 0x18 },
 { "linux/sed-opal.h", "IOC_OPAL_ACTIVATE_LSP", _IOC_WRITE, 0x70df, 0x118 },
 { "linux/sed-opal.h", "IOC_OPAL_ADD_USR_TO_LR", _IOC_WRITE, 0x70e4, 0x118 },
 { "linux/sed-opal.h", "IOC_OPAL_ENABLE_DISABLE_MBR", _IOC_WRITE, 0x70e5, 0x110 },
 { "linux/sed-opal.h", "IOC_OPAL_ERASE_LR", _IOC_WRITE, 0x70e6, 0x110 },
+{ "linux/sed-opal.h", "IOC_OPAL_GENERIC_TABLE_RW", _IOC_WRITE, 0x70eb, 0x138 },
 { "linux/sed-opal.h", "IOC_OPAL_LOCK_UNLOCK", _IOC_WRITE, 0x70dd, 0x118 },
 { "linux/sed-opal.h", "IOC_OPAL_LR_SETUP", _IOC_WRITE, 0x70e3, 0x128 },
+{ "linux/sed-opal.h", "IOC_OPAL_MBR_DONE", _IOC_WRITE, 0x70e9, 0x110 },
+{ "linux/sed-opal.h", "IOC_OPAL_PSID_REVERT_TPR", _IOC_WRITE, 0x70e8, 0x108 },
 { "linux/sed-opal.h", "IOC_OPAL_REVERT_TPR", _IOC_WRITE, 0x70e2, 0x108 },
 { "linux/sed-opal.h", "IOC_OPAL_SAVE", _IOC_WRITE, 0x70dc, 0x118 },
 { "linux/sed-opal.h", "IOC_OPAL_SECURE_ERASE_LR", _IOC_WRITE, 0x70e7, 0x110 },
 { "linux/sed-opal.h", "IOC_OPAL_SET_PW", _IOC_WRITE, 0x70e0, 0x220 },
 { "linux/sed-opal.h", "IOC_OPAL_TAKE_OWNERSHIP", _IOC_WRITE, 0x70de, 0x108 },
+{ "linux/sed-opal.h", "IOC_OPAL_WRITE_SHADOW_MBR", _IOC_WRITE, 0x70ea, 0x120 },
 { "linux/serio.h", "SPIOCSTYPE", _IOC_WRITE, 0x7101, 0x04 },
 { "linux/sockios.h", "SIOCADDDLCI", 0, 0x8980, 0 },
 { "linux/sockios.h", "SIOCADDMULTI", 0, 0x8931, 0 },
 { "linux/sockios.h", "SIOCGMIIREG", 0, 0x8948, 0 },
 { "linux/sockios.h", "SIOCGRARP", 0, 0x8961, 0 },
 { "linux/sockios.h", "SIOCGSKNS", 0, 0x894C, 0 },
+{ "linux/sockios.h", "SIOCGSTAMPNS_NEW", _IOC_READ, 0x8907, 0x10 },
+{ "linux/sockios.h", "SIOCGSTAMP_NEW", _IOC_READ, 0x8906, 0x10 },
 { "linux/sockios.h", "SIOCOUTQNSD", 0, 0x894B, 0 },
 { "linux/sockios.h", "SIOCPROTOPRIVATE", 0, 0x89E0, 0 },
 { "linux/sockios.h", "SIOCRTMSG", 0, 0x890D, 0 },
 { "linux/suspend_ioctls.h", "SNAPSHOT_SET_SWAP_AREA", _IOC_WRITE, 0x330d, 0x0c },
 { "linux/suspend_ioctls.h", "SNAPSHOT_UNFREEZE", _IOC_NONE, 0x3302, 0x00 },
 { "linux/switchtec_ioctl.h", "SWITCHTEC_IOCTL_EVENT_CTL", _IOC_READ|_IOC_WRITE, 0x5743, 0x28 },
-{ "linux/switchtec_ioctl.h", "SWITCHTEC_IOCTL_EVENT_SUMMARY", _IOC_READ, 0x5742, 0x198 },
+{ "linux/switchtec_ioctl.h", "SWITCHTEC_IOCTL_EVENT_SUMMARY", _IOC_READ, 0x5742, 0x4d8 },
+{ "linux/switchtec_ioctl.h", "SWITCHTEC_IOCTL_EVENT_SUMMARY_LEGACY", _IOC_READ, 0x5742, 0x198 },
 { "linux/switchtec_ioctl.h", "SWITCHTEC_IOCTL_FLASH_INFO", _IOC_READ, 0x5740, 0x10 },
 { "linux/switchtec_ioctl.h", "SWITCHTEC_IOCTL_FLASH_PART_INFO", _IOC_READ|_IOC_WRITE, 0x5741, 0x10 },
 { "linux/switchtec_ioctl.h", "SWITCHTEC_IOCTL_PFF_TO_PORT", _IOC_READ|_IOC_WRITE, 0x5744, 0x0c },
 { "linux/usb/iowarrior.h", "IOW_GETINFO", _IOC_READ, 0xc003, 0x28 },
 { "linux/usb/iowarrior.h", "IOW_READ", _IOC_WRITE, 0xc002, 0x04 },
 { "linux/usb/iowarrior.h", "IOW_WRITE", _IOC_WRITE, 0xc001, 0x04 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_CONFIGURE", _IOC_NONE, 0x5509, 0x00 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP0_READ", _IOC_READ|_IOC_WRITE, 0x5504, 0x08 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP0_STALL", _IOC_NONE, 0x550c, 0x00 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP0_WRITE", _IOC_WRITE, 0x5503, 0x08 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EPS_INFO", _IOC_READ, 0x550b, 0x3c0 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP_CLEAR_HALT", _IOC_WRITE, 0x550e, 0x04 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP_DISABLE", _IOC_WRITE, 0x5506, 0x04 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP_ENABLE", _IOC_WRITE, 0x5505, 0x09 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP_READ", _IOC_READ|_IOC_WRITE, 0x5508, 0x08 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP_SET_HALT", _IOC_WRITE, 0x550d, 0x04 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP_SET_WEDGE", _IOC_WRITE, 0x550f, 0x04 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EP_WRITE", _IOC_WRITE, 0x5507, 0x08 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_EVENT_FETCH", _IOC_READ, 0x5502, 0x08 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_INIT", _IOC_WRITE, 0x5500, 0x101 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_RUN", _IOC_NONE, 0x5501, 0x00 },
+{ "linux/usb/raw_gadget.h", "USB_RAW_IOCTL_VBUS_DRAW", _IOC_WRITE, 0x550a, 0x04 },
 { "linux/usb/tmc.h", "USBTMC488_IOCTL_GET_CAPS", _IOC_READ, 0x5b11, 0x01 },
 { "linux/usb/tmc.h", "USBTMC488_IOCTL_GOTO_LOCAL", _IOC_NONE, 0x5b14, 0x00 },
 { "linux/usb/tmc.h", "USBTMC488_IOCTL_LOCAL_LOCKOUT", _IOC_NONE, 0x5b15, 0x00 },
 { "linux/usb/tmc.h", "USBTMC_IOCTL_WRITE", _IOC_READ|_IOC_WRITE, 0x5b0d, 0x10 },
 { "linux/usb/tmc.h", "USBTMC_IOCTL_WRITE_RESULT", _IOC_READ|_IOC_WRITE, 0x5b0f, 0x04 },
 { "linux/usbdevice_fs.h", "USBDEVFS_ALLOC_STREAMS", _IOC_READ, 0x551c, 0x08 },
+{ "linux/usbdevice_fs.h", "USBDEVFS_ALLOW_SUSPEND", _IOC_NONE, 0x5522, 0x00 },
 { "linux/usbdevice_fs.h", "USBDEVFS_BULK", _IOC_READ|_IOC_WRITE, 0x5502, 0x10 },
 { "linux/usbdevice_fs.h", "USBDEVFS_BULK32", _IOC_READ|_IOC_WRITE, 0x5502, 0x10 },
 { "linux/usbdevice_fs.h", "USBDEVFS_CLAIMINTERFACE", _IOC_READ, 0x550f, 0x04 },
 { "linux/usbdevice_fs.h", "USBDEVFS_DISCSIGNAL", _IOC_READ, 0x550e, 0x08 },
 { "linux/usbdevice_fs.h", "USBDEVFS_DISCSIGNAL32", _IOC_READ, 0x550e, 0x08 },
 { "linux/usbdevice_fs.h", "USBDEVFS_DROP_PRIVILEGES", _IOC_WRITE, 0x551e, 0x04 },
+{ "linux/usbdevice_fs.h", "USBDEVFS_FORBID_SUSPEND", _IOC_NONE, 0x5521, 0x00 },
 { "linux/usbdevice_fs.h", "USBDEVFS_FREE_STREAMS", _IOC_READ, 0x551d, 0x08 },
 { "linux/usbdevice_fs.h", "USBDEVFS_GETDRIVER", _IOC_WRITE, 0x5508, 0x104 },
 { "linux/usbdevice_fs.h", "USBDEVFS_GET_CAPABILITIES", _IOC_READ, 0x551a, 0x04 },
 { "linux/usbdevice_fs.h", "USBDEVFS_SETINTERFACE", _IOC_READ, 0x5504, 0x08 },
 { "linux/usbdevice_fs.h", "USBDEVFS_SUBMITURB", _IOC_READ, 0x550a, 0x2c },
 { "linux/usbdevice_fs.h", "USBDEVFS_SUBMITURB32", _IOC_READ, 0x550a, 0x2a },
+{ "linux/usbdevice_fs.h", "USBDEVFS_WAIT_FOR_RESUME", _IOC_NONE, 0x5523, 0x00 },
 { "linux/userfaultfd.h", "UFFDIO_API", _IOC_READ|_IOC_WRITE, 0xaa3f, 0x18 },
 { "linux/userfaultfd.h", "UFFDIO_COPY", _IOC_READ|_IOC_WRITE, 0xaa03, 0x28 },
 { "linux/userfaultfd.h", "UFFDIO_REGISTER", _IOC_READ|_IOC_WRITE, 0xaa00, 0x20 },
 { "linux/userfaultfd.h", "UFFDIO_UNREGISTER", _IOC_READ, 0xaa01, 0x10 },
 { "linux/userfaultfd.h", "UFFDIO_WAKE", _IOC_READ, 0xaa02, 0x10 },
+{ "linux/userfaultfd.h", "UFFDIO_WRITEPROTECT", _IOC_READ|_IOC_WRITE, 0xaa06, 0x18 },
 { "linux/userfaultfd.h", "UFFDIO_ZEROPAGE", _IOC_READ|_IOC_WRITE, 0xaa04, 0x20 },
 { "linux/uvcvideo.h", "UVCIOC_CTRL_MAP", _IOC_READ|_IOC_WRITE, 0x7520, 0x58 },
 { "linux/uvcvideo.h", "UVCIOC_CTRL_QUERY", _IOC_READ|_IOC_WRITE, 0x7521, 0x0c },
 { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_G_FMT", _IOC_READ|_IOC_WRITE, 0x5604, 0x58 },
 { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_G_FRAME_INTERVAL", _IOC_READ|_IOC_WRITE, 0x5615, 0x30 },
 { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_G_SELECTION", _IOC_READ|_IOC_WRITE, 0x563d, 0x40 },
+{ "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_QUERYCAP", _IOC_READ, 0x5600, 0x40 },
 { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_CROP", _IOC_READ|_IOC_WRITE, 0x563c, 0x38 },
 { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_FMT", _IOC_READ|_IOC_WRITE, 0x5605, 0x58 },
 { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_FRAME_INTERVAL", _IOC_READ|_IOC_WRITE, 0x5616, 0x30 },
 { "linux/v4l2-subdev.h", "VIDIOC_SUBDEV_S_SELECTION", _IOC_READ|_IOC_WRITE, 0x563e, 0x40 },
+{ "linux/vboxguest.h", "VBG_IOCTL_ACQUIRE_GUEST_CAPABILITIES", _IOC_READ|_IOC_WRITE, 0x560d, 0x24 },
 { "linux/vboxguest.h", "VBG_IOCTL_CHANGE_FILTER_MASK", _IOC_READ|_IOC_WRITE, 0x560c, 0x20 },
 { "linux/vboxguest.h", "VBG_IOCTL_CHANGE_GUEST_CAPABILITIES", _IOC_READ|_IOC_WRITE, 0x560e, 0x20 },
 { "linux/vboxguest.h", "VBG_IOCTL_CHECK_BALLOON", _IOC_READ|_IOC_WRITE, 0x5611, 0x20 },
 { "linux/vboxguest.h", "VBG_IOCTL_HGCM_CONNECT", _IOC_READ|_IOC_WRITE, 0x5604, 0x9c },
 { "linux/vboxguest.h", "VBG_IOCTL_HGCM_DISCONNECT", _IOC_READ|_IOC_WRITE, 0x5605, 0x1c },
 { "linux/vboxguest.h", "VBG_IOCTL_INTERRUPT_ALL_WAIT_FOR_EVENTS", _IOC_READ|_IOC_WRITE, 0x560b, 0x18 },
-{ "linux/vboxguest.h", "VBG_IOCTL_VMMDEV_REQUEST_BIG", _IOC_READ|_IOC_WRITE, 0x5603, 0x00 },
+{ "linux/vboxguest.h", "VBG_IOCTL_VMMDEV_REQUEST_BIG", _IOC_NONE, 0x5603, 0x00 },
 { "linux/vboxguest.h", "VBG_IOCTL_WAIT_FOR_EVENTS", _IOC_READ|_IOC_WRITE, 0x560a, 0x20 },
 { "linux/vboxguest.h", "VBG_IOCTL_WRITE_CORE_DUMP", _IOC_READ|_IOC_WRITE, 0x5613, 0x1c },
 { "linux/vfio.h", "VFIO_CHECK_EXTENSION", _IOC_NONE, 0x3b65, 0x00 },
+{ "linux/vfio.h", "VFIO_DEVICE_FEATURE", _IOC_NONE, 0x3b75, 0x00 },
 { "linux/vfio.h", "VFIO_DEVICE_GET_GFX_DMABUF", _IOC_NONE, 0x3b73, 0x00 },
 { "linux/vfio.h", "VFIO_DEVICE_GET_INFO", _IOC_NONE, 0x3b6b, 0x00 },
 { "linux/vfio.h", "VFIO_DEVICE_GET_IRQ_INFO", _IOC_NONE, 0x3b6d, 0x00 },
 { "linux/vfio.h", "VFIO_GROUP_GET_STATUS", _IOC_NONE, 0x3b67, 0x00 },
 { "linux/vfio.h", "VFIO_GROUP_SET_CONTAINER", _IOC_NONE, 0x3b68, 0x00 },
 { "linux/vfio.h", "VFIO_GROUP_UNSET_CONTAINER", _IOC_NONE, 0x3b69, 0x00 },
+{ "linux/vfio.h", "VFIO_IOMMU_DIRTY_PAGES", _IOC_NONE, 0x3b75, 0x00 },
 { "linux/vfio.h", "VFIO_IOMMU_DISABLE", _IOC_NONE, 0x3b74, 0x00 },
 { "linux/vfio.h", "VFIO_IOMMU_ENABLE", _IOC_NONE, 0x3b73, 0x00 },
 { "linux/vfio.h", "VFIO_IOMMU_GET_INFO", _IOC_NONE, 0x3b70, 0x00 },
 { "linux/vhost.h", "VHOST_SET_VRING_ERR", _IOC_WRITE, 0xaf22, 0x08 },
 { "linux/vhost.h", "VHOST_SET_VRING_KICK", _IOC_WRITE, 0xaf20, 0x08 },
 { "linux/vhost.h", "VHOST_SET_VRING_NUM", _IOC_WRITE, 0xaf10, 0x08 },
+{ "linux/vhost.h", "VHOST_VDPA_GET_CONFIG", _IOC_READ, 0xaf73, 0x08 },
+{ "linux/vhost.h", "VHOST_VDPA_GET_DEVICE_ID", _IOC_READ, 0xaf70, 0x04 },
+{ "linux/vhost.h", "VHOST_VDPA_GET_STATUS", _IOC_READ, 0xaf71, 0x01 },
+{ "linux/vhost.h", "VHOST_VDPA_GET_VRING_NUM", _IOC_READ, 0xaf76, 0x02 },
+{ "linux/vhost.h", "VHOST_VDPA_SET_CONFIG", _IOC_WRITE, 0xaf74, 0x08 },
+{ "linux/vhost.h", "VHOST_VDPA_SET_CONFIG_CALL", _IOC_WRITE, 0xaf77, 0x04 },
+{ "linux/vhost.h", "VHOST_VDPA_SET_STATUS", _IOC_WRITE, 0xaf72, 0x01 },
+{ "linux/vhost.h", "VHOST_VDPA_SET_VRING_ENABLE", _IOC_WRITE, 0xaf75, 0x08 },
 { "linux/vhost.h", "VHOST_VSOCK_SET_GUEST_CID", _IOC_WRITE, 0xaf60, 0x08 },
 { "linux/vhost.h", "VHOST_VSOCK_SET_RUNNING", _IOC_WRITE, 0xaf61, 0x04 },
 { "linux/videodev2.h", "VIDIOC_CREATE_BUFS", _IOC_READ|_IOC_WRITE, 0x565c, 0xf8 },
 { "linux/vt.h", "VT_WAITACTIVE", 0, 0x5607, 0 },
 { "linux/vt.h", "VT_WAITEVENT", 0, 0x560E, 0 },
 { "linux/vtpm_proxy.h", "VTPM_PROXY_IOC_NEW_DEV", _IOC_READ|_IOC_WRITE, 0xa100, 0x14 },
+{ "linux/watch_queue.h", "IOC_WATCH_QUEUE_SET_FILTER", _IOC_NONE, 0x5761, 0x00 },
+{ "linux/watch_queue.h", "IOC_WATCH_QUEUE_SET_SIZE", _IOC_NONE, 0x5760, 0x00 },
 { "linux/watchdog.h", "WDIOC_GETBOOTSTATUS", _IOC_READ, 0x5702, 0x04 },
 { "linux/watchdog.h", "WDIOC_GETPRETIMEOUT", _IOC_READ, 0x5709, 0x04 },
 { "linux/watchdog.h", "WDIOC_GETSTATUS", _IOC_READ, 0x5701, 0x04 },
 { "media/i2c/saa6588.h", "SAA6588_CMD_READ", _IOC_READ, 0x5203, 0x04 },
 { "media/v4l2-common.h", "TUNER_SET_CONFIG", _IOC_WRITE, 0x645c, 0x08 },
 { "media/v4l2-common.h", "VIDIOC_INT_RESET", _IOC_WRITE, 0x6466, 0x04 },
+{ "media/v4l2-ioctl.h", "VIDIOC_DQBUF_TIME32", _IOC_READ|_IOC_WRITE, 0x5611, 0x44 },
+{ "media/v4l2-ioctl.h", "VIDIOC_DQEVENT_TIME32", _IOC_READ, 0x5659, 0x80 },
+{ "media/v4l2-ioctl.h", "VIDIOC_PREPARE_BUF_TIME32", _IOC_READ|_IOC_WRITE, 0x565d, 0x44 },
+{ "media/v4l2-ioctl.h", "VIDIOC_QBUF_TIME32", _IOC_READ|_IOC_WRITE, 0x560f, 0x44 },
+{ "media/v4l2-ioctl.h", "VIDIOC_QUERYBUF_TIME32", _IOC_READ|_IOC_WRITE, 0x5609, 0x44 },
 { "media/v4l2-subdev.h", "V4L2_DEVICE_NOTIFY_EVENT", _IOC_WRITE, 0x7602, 0x88 },
 { "media/v4l2-subdev.h", "V4L2_SUBDEV_IR_RX_NOTIFY", _IOC_WRITE, 0x7600, 0x04 },
 { "media/v4l2-subdev.h", "V4L2_SUBDEV_IR_TX_NOTIFY", _IOC_WRITE, 0x7601, 0x04 },
 { "misc/fastrpc.h", "FASTRPC_IOCTL_INIT_ATTACH", _IOC_NONE, 0x5204, 0x00 },
 { "misc/fastrpc.h", "FASTRPC_IOCTL_INIT_CREATE", _IOC_READ|_IOC_WRITE, 0x5205, 0x18 },
 { "misc/fastrpc.h", "FASTRPC_IOCTL_INVOKE", _IOC_READ|_IOC_WRITE, 0x5203, 0x10 },
+{ "misc/fastrpc.h", "FASTRPC_IOCTL_MMAP", _IOC_READ|_IOC_WRITE, 0x5206, 0x20 },
+{ "misc/fastrpc.h", "FASTRPC_IOCTL_MUNMAP", _IOC_READ|_IOC_WRITE, 0x5207, 0x10 },
 { "misc/habanalabs.h", "HL_IOCTL_CB", _IOC_READ|_IOC_WRITE, 0x4802, 0x18 },
 { "misc/habanalabs.h", "HL_IOCTL_CS", _IOC_READ|_IOC_WRITE, 0x4803, 0x30 },
+{ "misc/habanalabs.h", "HL_IOCTL_DEBUG", _IOC_READ|_IOC_WRITE, 0x4806, 0x28 },
 { "misc/habanalabs.h", "HL_IOCTL_INFO", _IOC_READ|_IOC_WRITE, 0x4801, 0x18 },
 { "misc/habanalabs.h", "HL_IOCTL_MEMORY", _IOC_READ|_IOC_WRITE, 0x4805, 0x28 },
 { "misc/habanalabs.h", "HL_IOCTL_WAIT_CS", _IOC_READ|_IOC_WRITE, 0x4804, 0x18 },
 { "misc/ocxl.h", "OCXL_IOCTL_IRQ_ALLOC", _IOC_READ, 0xca11, 0x08 },
 { "misc/ocxl.h", "OCXL_IOCTL_IRQ_FREE", _IOC_WRITE, 0xca12, 0x08 },
 { "misc/ocxl.h", "OCXL_IOCTL_IRQ_SET_FD", _IOC_WRITE, 0xca13, 0x10 },
+{ "misc/uacce/hisi_qm.h", "UACCE_CMD_QM_SET_QP_CTX", _IOC_READ|_IOC_WRITE, 0x480a, 0x04 },
+{ "misc/uacce/uacce.h", "UACCE_CMD_PUT_Q", _IOC_NONE, 0x5701, 0x00 },
+{ "misc/uacce/uacce.h", "UACCE_CMD_START_Q", _IOC_NONE, 0x5700, 0x00 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_ADD_LDPC_CODE_PARAMS", _IOC_WRITE, 0x6605, 0x4c },
+{ "misc/xilinx_sdfec.h", "XSDFEC_CLEAR_STATS", _IOC_NONE, 0x660b, 0x00 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_GET_CONFIG", _IOC_READ, 0x6606, 0x1c },
+{ "misc/xilinx_sdfec.h", "XSDFEC_GET_STATS", _IOC_READ, 0x660c, 0x0c },
+{ "misc/xilinx_sdfec.h", "XSDFEC_GET_STATUS", _IOC_READ, 0x6602, 0x08 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_GET_TURBO", _IOC_READ, 0x6607, 0x08 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_IS_ACTIVE", _IOC_READ, 0x660a, 0x01 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_SET_BYPASS", _IOC_WRITE, 0x6609, 0x01 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_SET_DEFAULT_CONFIG", _IOC_NONE, 0x660d, 0x00 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_SET_IRQ", _IOC_WRITE, 0x6603, 0x02 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_SET_ORDER", _IOC_WRITE, 0x6608, 0x04 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_SET_TURBO", _IOC_WRITE, 0x6604, 0x08 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_START_DEV", _IOC_NONE, 0x6600, 0x00 },
+{ "misc/xilinx_sdfec.h", "XSDFEC_STOP_DEV", _IOC_NONE, 0x6601, 0x00 },
 { "mtd/mtd-abi.h", "ECCGETLAYOUT", _IOC_READ, 0x4d11, 0x148 },
 { "mtd/mtd-abi.h", "ECCGETSTATS", _IOC_READ, 0x4d12, 0x10 },
 { "mtd/mtd-abi.h", "MEMERASE", _IOC_WRITE, 0x4d02, 0x08 },
 { "sound/asound.h", "SNDRV_TIMER_IOCTL_START", _IOC_NONE, 0x54a0, 0x00 },
 { "sound/asound.h", "SNDRV_TIMER_IOCTL_STATUS", _IOC_READ, 0x5414, 0x60 },
 { "sound/asound.h", "SNDRV_TIMER_IOCTL_STOP", _IOC_NONE, 0x54a1, 0x00 },
-{ "sound/asound.h", "SNDRV_TIMER_IOCTL_TREAD", _IOC_WRITE, 0x5402, 0x04 },
+{ "sound/asound.h", "SNDRV_TIMER_IOCTL_TREAD64", _IOC_WRITE, 0x54a4, 0x04 },
+{ "sound/asound.h", "SNDRV_TIMER_IOCTL_TREAD_OLD", _IOC_WRITE, 0x5402, 0x04 },
 { "sound/asound_fm.h", "SNDRV_DM_FM_IOCTL_CLEAR_PATCHES", _IOC_NONE, 0x4840, 0x00 },
 { "sound/asound_fm.h", "SNDRV_DM_FM_IOCTL_INFO", _IOC_READ, 0x4820, 0x02 },
 { "sound/asound_fm.h", "SNDRV_DM_FM_IOCTL_PLAY_NOTE", _IOC_WRITE, 0x4822, 0x0c },
 { "sound/hdspm.h", "SNDRV_HDSPM_IOCTL_GET_PEAK_RMS", _IOC_READ, 0x4842, 0x908 },
 { "sound/hdspm.h", "SNDRV_HDSPM_IOCTL_GET_STATUS", _IOC_READ, 0x4847, 0x20 },
 { "sound/hdspm.h", "SNDRV_HDSPM_IOCTL_GET_VERSION", _IOC_READ, 0x4848, 0x24 },
+{ "sound/pcm.h", "SNDRV_PCM_IOCTL_STATUS32", _IOC_READ, 0x4120, 0x6c },
+{ "sound/pcm.h", "SNDRV_PCM_IOCTL_STATUS64", _IOC_READ, 0x4120, 0x80 },
+{ "sound/pcm.h", "SNDRV_PCM_IOCTL_STATUS_EXT32", _IOC_READ|_IOC_WRITE, 0x4124, 0x6c },
+{ "sound/pcm.h", "SNDRV_PCM_IOCTL_STATUS_EXT64", _IOC_READ|_IOC_WRITE, 0x4124, 0x80 },
 { "sound/sb16_csp.h", "SNDRV_SB_CSP_IOCTL_INFO", _IOC_READ, 0x4810, 0x28 },
 { "sound/sb16_csp.h", "SNDRV_SB_CSP_IOCTL_LOAD_CODE", _IOC_WRITE, 0x4811, 0x3012 },
 { "sound/sb16_csp.h", "SNDRV_SB_CSP_IOCTL_PAUSE", _IOC_NONE, 0x4815, 0x00 },
 { "staging/android/ashmem.h", "ASHMEM_UNPIN", _IOC_WRITE, 0x7708, 0x08 },
 { "staging/android/ion.h", "ION_IOC_ALLOC", _IOC_READ|_IOC_WRITE, 0x4900, 0x18 },
 { "staging/android/ion.h", "ION_IOC_HEAP_QUERY", _IOC_READ|_IOC_WRITE, 0x4908, 0x18 },
-{ "staging/android/vsoc_shm.h", "VSOC_COND_WAIT", _IOC_READ|_IOC_WRITE, 0xf507, 0x20 },
-{ "staging/android/vsoc_shm.h", "VSOC_COND_WAKE", _IOC_NONE, 0xf508, 0x00 },
-{ "staging/android/vsoc_shm.h", "VSOC_CREATE_FD_SCOPED_PERMISSION", _IOC_WRITE, 0xf500, 0x10 },
-{ "staging/android/vsoc_shm.h", "VSOC_DESCRIBE_REGION", _IOC_READ, 0xf504, 0x3c },
-{ "staging/android/vsoc_shm.h", "VSOC_GET_FD_SCOPED_PERMISSION", _IOC_READ, 0xf501, 0x10 },
-{ "staging/android/vsoc_shm.h", "VSOC_MAYBE_SEND_INTERRUPT_TO_HOST", _IOC_NONE, 0xf502, 0x00 },
-{ "staging/android/vsoc_shm.h", "VSOC_SELF_INTERRUPT", _IOC_NONE, 0xf505, 0x00 },
-{ "staging/android/vsoc_shm.h", "VSOC_SEND_INTERRUPT_TO_HOST", _IOC_NONE, 0xf506, 0x00 },
-{ "staging/android/vsoc_shm.h", "VSOC_WAIT_FOR_INCOMING_INTERRUPT", _IOC_NONE, 0xf503, 0x00 },
 { "video/da8xx-fb.h", "FBIGET_BRIGHTNESS", _IOC_READ, 0x4603, 0x04 },
 { "video/da8xx-fb.h", "FBIGET_COLOR", _IOC_READ, 0x4605, 0x04 },
 { "video/da8xx-fb.h", "FBIOGET_CONTRAST", _IOC_READ, 0x4601, 0x04 },
index 76d4676eaa7d76a9850e989e44f13eb28a1e53aa..d4eaf8c1cdcd454267f2846cc3f7326447f16491 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012-2019 The strace developers.
+ * Copyright (c) 2012-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -67,7 +67,7 @@
 [ 59] = { 3,   TF|TP|SE|SI,    SEN(printargs),                 "execve#64"             },
 [ 60] = { 1,   TP|SE,          SEN(exit),                      "exit"                  },
 [ 61] = { 4,   TP,             SEN(wait4),                     "wait4"                 },
-[ 62] = { 2,   TS,             SEN(kill),                      "kill"                  },
+[ 62] = { 2,   TS|TP,          SEN(kill),                      "kill"                  },
 [ 63] = { 1,   0,              SEN(uname),                     "uname"                 },
 [ 64] = { 3,   TI,             SEN(semget),                    "semget"                },
 [ 65] = { 3,   TI,             SEN(semop),                     "semop"                 },
 [ 93] = { 3,   TD,             SEN(fchown),                    "fchown"                },
 [ 94] = { 3,   TF,             SEN(chown),                     "lchown"                },
 [ 95] = { 1,   NF,             SEN(umask),                     "umask"                 },
-[ 96] = { 2,   0,              SEN(gettimeofday),              "gettimeofday"          },
+[ 96] = { 2,   TCL,            SEN(gettimeofday),              "gettimeofday"          },
 [ 97] = { 2,   0,              SEN(getrlimit),                 "getrlimit"             },
 [ 98] = { 2,   0,              SEN(getrusage),                 "getrusage"             },
 [ 99] = { 1,   0,              SEN(sysinfo),                   "sysinfo"               },
 [100] = { 1,   0,              SEN(times),                     "times"                 },
 [101] = { 4,   0,              SEN(printargs),                 "ptrace#64"             },
-[102] = { 0,   PU|NF,          SEN(getuid),                    "getuid"                },
+[102] = { 0,   TC|PU|NF,       SEN(getuid),                    "getuid"                },
 [103] = { 3,   0,              SEN(syslog),                    "syslog"                },
-[104] = { 0,   PU|NF,          SEN(getgid),                    "getgid"                },
-[105] = { 1,   0,              SEN(setuid),                    "setuid"                },
-[106] = { 1,   0,              SEN(setgid),                    "setgid"                },
-[107] = { 0,   PU|NF,          SEN(geteuid),                   "geteuid"               },
-[108] = { 0,   PU|NF,          SEN(getegid),                   "getegid"               },
+[104] = { 0,   TC|PU|NF,       SEN(getgid),                    "getgid"                },
+[105] = { 1,   TC,             SEN(setuid),                    "setuid"                },
+[106] = { 1,   TC,             SEN(setgid),                    "setgid"                },
+[107] = { 0,   TC|PU|NF,       SEN(geteuid),                   "geteuid"               },
+[108] = { 0,   TC|PU|NF,       SEN(getegid),                   "getegid"               },
 [109] = { 2,   0,              SEN(setpgid),                   "setpgid"               },
 [110] = { 0,   PU|NF,          SEN(getppid),                   "getppid"               },
 [111] = { 0,   PU|NF,          SEN(getpgrp),                   "getpgrp"               },
 [112] = { 0,   0,              SEN(setsid),                    "setsid"                },
-[113] = { 2,   0,              SEN(setreuid),                  "setreuid"              },
-[114] = { 2,   0,              SEN(setregid),                  "setregid"              },
-[115] = { 2,   0,              SEN(getgroups),                 "getgroups"             },
-[116] = { 2,   0,              SEN(setgroups),                 "setgroups"             },
-[117] = { 3,   0,              SEN(setresuid),                 "setresuid"             },
-[118] = { 3,   0,              SEN(getresuid),                 "getresuid"             },
-[119] = { 3,   0,              SEN(setresgid),                 "setresgid"             },
-[120] = { 3,   0,              SEN(getresgid),                 "getresgid"             },
+[113] = { 2,   TC,             SEN(setreuid),                  "setreuid"              },
+[114] = { 2,   TC,             SEN(setregid),                  "setregid"              },
+[115] = { 2,   TC,             SEN(getgroups),                 "getgroups"             },
+[116] = { 2,   TC,             SEN(setgroups),                 "setgroups"             },
+[117] = { 3,   TC,             SEN(setresuid),                 "setresuid"             },
+[118] = { 3,   TC,             SEN(getresuid),                 "getresuid"             },
+[119] = { 3,   TC,             SEN(setresgid),                 "setresgid"             },
+[120] = { 3,   TC,             SEN(getresgid),                 "getresgid"             },
 [121] = { 1,   0,              SEN(getpgid),                   "getpgid"               },
-[122] = { 1,   NF,             SEN(setfsuid),                  "setfsuid"              },
-[123] = { 1,   NF,             SEN(setfsgid),                  "setfsgid"              },
+[122] = { 1,   TC|NF,          SEN(setfsuid),                  "setfsuid"              },
+[123] = { 1,   TC|NF,          SEN(setfsgid),                  "setfsgid"              },
 [124] = { 1,   0,              SEN(getsid),                    "getsid"                },
-[125] = { 2,   0,              SEN(capget),                    "capget"                },
-[126] = { 2,   0,              SEN(capset),                    "capset"                },
+[125] = { 2,   TC,             SEN(capget),                    "capget"                },
+[126] = { 2,   TC,             SEN(capset),                    "capset"                },
 [127] = { 2,   TS,             SEN(printargs),                 "rt_sigpending#64"      },
 [128] = { 4,   TS,             SEN(printargs),                 "rt_sigtimedwait#64"    },
-[129] = { 3,   TS,             SEN(printargs),                 "rt_sigqueueinfo#64"    },
+[129] = { 3,   TS|TP,          SEN(printargs),                 "rt_sigqueueinfo#64"    },
 [130] = { 2,   TS,             SEN(rt_sigsuspend),             "rt_sigsuspend"         },
 [131] = { 2,   TS,             SEN(printargs),                 "sigaltstack#64"        },
 [132] = { 2,   TF,             SEN(utime),                     "utime"                 },
 [154] = { 3,   0,              SEN(modify_ldt),                "modify_ldt"            },
 [155] = { 2,   TF,             SEN(pivotroot),                 "pivot_root"            },
 [156] = { 1,   0,              SEN(printargs),                 "_sysctl#64"            },
-[157] = { 5,   0,              SEN(prctl),                     "prctl"                 },
-[158] = { 2,   TP,             SEN(arch_prctl),                "arch_prctl"            },
-[159] = { 1,   0,              SEN(adjtimex64),                "adjtimex"              },
+[157] = { 5,   TC,             SEN(prctl),                     "prctl"                 },
+[158] = { 2,   0,              SEN(arch_prctl),                "arch_prctl"            },
+[159] = { 1,   TCL,            SEN(adjtimex64),                "adjtimex"              },
 [160] = { 2,   0,              SEN(setrlimit),                 "setrlimit"             },
 [161] = { 1,   TF,             SEN(chroot),                    "chroot"                },
 [162] = { 0,   0,              SEN(sync),                      "sync"                  },
 [163] = { 1,   TF,             SEN(acct),                      "acct"                  },
-[164] = { 2,   0,              SEN(settimeofday),              "settimeofday"          },
+[164] = { 2,   TCL,            SEN(settimeofday),              "settimeofday"          },
 [165] = { 5,   TF,             SEN(mount),                     "mount"                 },
 [166] = { 2,   TF,             SEN(umount2),                   "umount2"               },
 [167] = { 2,   TF,             SEN(swapon),                    "swapon"                },
 [197] = { 2,   TF,             SEN(removexattr),               "removexattr"           },
 [198] = { 2,   TF,             SEN(removexattr),               "lremovexattr"          },
 [199] = { 2,   TD,             SEN(fremovexattr),              "fremovexattr"          },
-[200] = { 2,   TS,             SEN(kill),                      "tkill"                 },
-[201] = { 1,   0,              SEN(time),                      "time"                  },
+[200] = { 2,   TS|TP,          SEN(tkill),                     "tkill"                 },
+[201] = { 1,   TCL,            SEN(time),                      "time"                  },
 [202] = { 6,   0,              SEN(futex_time64),              "futex"                 },
 [203] = { 3,   0,              SEN(sched_setaffinity),         "sched_setaffinity"     },
 [204] = { 3,   0,              SEN(sched_getaffinity),         "sched_getaffinity"     },
 [224] = { 2,   0,              SEN(timer_gettime64),           "timer_gettime"         },
 [225] = { 1,   0,              SEN(timer_getoverrun),          "timer_getoverrun"      },
 [226] = { 1,   0,              SEN(timer_delete),              "timer_delete"          },
-[227] = { 2,   0,              SEN(clock_settime64),           "clock_settime"         },
-[228] = { 2,   0,              SEN(clock_gettime64),           "clock_gettime"         },
-[229] = { 2,   0,              SEN(clock_getres_time64),       "clock_getres"          },
+[227] = { 2,   TCL,            SEN(clock_settime64),           "clock_settime"         },
+[228] = { 2,   TCL,            SEN(clock_gettime64),           "clock_gettime"         },
+[229] = { 2,   TCL,            SEN(clock_getres_time64),       "clock_getres"          },
 [230] = { 4,   0,              SEN(clock_nanosleep_time64),    "clock_nanosleep"       },
 [231] = { 1,   TP|SE,          SEN(exit),                      "exit_group"            },
 [232] = { 4,   TD,             SEN(epoll_wait),                "epoll_wait"            },
 [233] = { 4,   TD,             SEN(epoll_ctl),                 "epoll_ctl"             },
-[234] = { 3,   TS,             SEN(tgkill),                    "tgkill"                },
+[234] = { 3,   TS|TP,          SEN(tgkill),                    "tgkill"                },
 [235] = { 2,   TF,             SEN(utimes),                    "utimes"                },
 [236] = { 5,   0,              SEN(printargs),                 "vserver#64"            },
 [237] = { 6,   TM,             SEN(mbind),                     "mbind"                 },
 [269] = { 3,   TD|TF,          SEN(faccessat),                 "faccessat"             },
 [270] = { 6,   TD,             SEN(pselect6_time64),           "pselect6"              },
 [271] = { 5,   TD,             SEN(ppoll_time64),              "ppoll"                 },
-[272] = { 1,   TP,             SEN(unshare),                   "unshare"               },
+[272] = { 1,   0,              SEN(unshare),                   "unshare"               },
 [273] = { 2,   0,              SEN(printargs),                 "set_robust_list#64"    },
 [274] = { 3,   0,              SEN(printargs),                 "get_robust_list#64"    },
 [275] = { 6,   TD,             SEN(splice),                    "splice"                },
 [302] = { 4,   0,              SEN(prlimit64),                 "prlimit64"             },
 [303] = { 5,   TD|TF,          SEN(name_to_handle_at),         "name_to_handle_at"     },
 [304] = { 3,   TD,             SEN(open_by_handle_at),         "open_by_handle_at"     },
-[305] = { 2,   0,              SEN(clock_adjtime64),           "clock_adjtime"         },
+[305] = { 2,   TCL,            SEN(clock_adjtime64),           "clock_adjtime"         },
 [306] = { 1,   TD,             SEN(syncfs),                    "syncfs"                },
 [307] = { 4,   TN,             SEN(printargs),                 "sendmmsg#64"           },
 [308] = { 2,   TD,             SEN(setns),                     "setns"                 },
 [329] = { 4,   TM|SI,          SEN(pkey_mprotect),             "pkey_mprotect"         },
 [330] = { 2,   0,              SEN(pkey_alloc),                "pkey_alloc"            },
 [331] = { 1,   0,              SEN(pkey_free),                 "pkey_free"             },
-[332] = { 5,   TD|TF|TSTA,     SEN(statx),                     "statx"                 },
+[332] = { 5,   TD|TF|TFST|TSTA,SEN(statx),                     "statx"                 },
 [333] = { 6,   0,              SEN(io_pgetevents_time64),      "io_pgetevents"         },
 [334] = { 4,   0,              SEN(rseq),                      "rseq"                  },
 /* [335 ... 423] - reserved to sync up with other architectures */
-[424] = { 4,   TD|TS,          SEN(pidfd_send_signal),         "pidfd_send_signal"     },
+#include "syscallent-common.h"
 /*
  * x32-specific system call numbers start at 512 to avoid cache impact
  * for native 64-bit operation.
 [517] = { 6,   CST|TN,         SEN(recvfrom),                  "recvfrom"              },
 [518] = { 3,   CST|TN,         SEN(sendmsg),                   "sendmsg"               },
 [519] = { 3,   CST|TN,         SEN(recvmsg),                   "recvmsg"               },
-[520] = { 3,   CST|TF|TP|SE|SI,SEN(execve),                    "execve"                },
+[520] = { 3,   CST|TF|TP|TSD|SE|SI,SEN(execve),                        "execve"                },
 [521] = { 4,   CST,            SEN(ptrace),                    "ptrace"                },
 [522] = { 2,   CST|TS,         SEN(rt_sigpending),             "rt_sigpending"         },
 [523] = { 4,   CST|TS,         SEN(rt_sigtimedwait_time64),    "rt_sigtimedwait"       },
-[524] = { 3,   CST|TS,         SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
+[524] = { 3,   CST|TS|TP,              SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
 [525] = { 2,   CST|TS,         SEN(sigaltstack),               "sigaltstack"           },
 [526] = { 3,   CST,            SEN(timer_create),              "timer_create"          },
 [527] = { 2,   CST|TD,         SEN(mq_notify),                 "mq_notify"             },
 [542] = { 5,   CST|TN,         SEN(getsockopt),                "getsockopt"            },
 [543] = { 2,   CST|TM,         SEN(io_setup),                  "io_setup"              },
 [544] = { 3,   CST,            SEN(io_submit),                 "io_submit"             },
-[545] = { 5,   CST|TD|TF|TP|SE|SI,     SEN(execveat),          "execveat"              },
+[545] = { 5,   CST|TD|TF|TP|TSD|SE|SI, SEN(execveat),          "execveat"              },
 [546] = { 5,   TD,             SEN(preadv2),                   "preadv2"               },
 [547] = { 5,   TD,             SEN(pwritev2),                  "pwritev2"              },
-[425] = { 2,   TD,             SEN(io_uring_setup),            "io_uring_setup"        },
-[426] = { 6,   TD|TS,          SEN(io_uring_enter),            "io_uring_enter"        },
-[427] = { 4,   TD|TM,          SEN(io_uring_register),         "io_uring_register"     },
index a8c1d99188b7561cc4e43e1306b717717ba3733c..a4daf87273b46b0d11288ffb301a33a21f29e84d 100644 (file)
@@ -1,11 +1,18 @@
 /*
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
  */
 
+#define ARCH_MX32_SIZEOF_STRUCT_MSQID64_DS 120
 #define HAVE_ARCH_OLD_MMAP 1
 #define HAVE_ARCH_OLD_SELECT 1
 #define HAVE_ARCH_UID16_SYSCALLS 1
 #define SUPPORTED_PERSONALITIES 3
+#define PERSONALITY0_AUDIT_ARCH { AUDIT_ARCH_X86_64, 0 }
+#define PERSONALITY1_AUDIT_ARCH { AUDIT_ARCH_I386,   0 }
+#define PERSONALITY2_AUDIT_ARCH { AUDIT_ARCH_X86_64, __X32_SYSCALL_BIT }
+#ifndef __X32_SYSCALL_BIT
+# define __X32_SYSCALL_BIT 0x40000000UL
+#endif
index 1dcc6932d7787d165075a75bb20190d00f5cbec3..0e5a3b4b7ac7cfdb920f56bc68ae3b699bd93741 100644 (file)
@@ -1,16 +1,12 @@
 /*
- * Copyright (c) 2010-2018 The strace developers.
+ * Copyright (c) 2010-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
  */
 
-#ifndef AUDIT_ARCH_I386
-# define AUDIT_ARCH_I386 0x40000003
-#endif
-
 int
-get_personality_from_syscall_info(const struct ptrace_syscall_info *sci)
+get_personality_from_syscall_info(const struct_ptrace_syscall_info *sci)
 {
        unsigned int pers = sci->arch == AUDIT_ARCH_I386;
 
@@ -25,10 +21,6 @@ get_personality_from_syscall_info(const struct ptrace_syscall_info *sci)
 
        kernel_ulong_t scno = sci->entry.nr;
 
-# ifndef __X32_SYSCALL_BIT
-#  define __X32_SYSCALL_BIT    0x40000000
-# endif
-
        if (pers == 0 && (scno & __X32_SYSCALL_BIT)) {
                /*
                 * Syscall number -1 requires special treatment:
index cb168f34d1a815e2c0a4d35009495033af9d1ef0..92164829bf45ffd7e3b800fc32b46712b1690b62 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -104,14 +104,7 @@ arch_print_kvm_sregs(struct tcb *const tcp,
        PRINT_FIELD_U(", ", *sregs, cr8);
        PRINT_FIELD_U(", ", *sregs, efer);
        PRINT_FIELD_X(", ", *sregs, apic_base);
-       tprints(", interrupt_bitmap=[");
-
-       unsigned int i;
-       for (i = 0; i < ARRAY_SIZE(sregs->interrupt_bitmap); i++) {
-               if (i != 0)
-                       tprints(", ");
-               tprintf("%#" PRI__x64, sregs->interrupt_bitmap[i]);
-       }
-       tprints("]}");
+       PRINT_FIELD_X_ARRAY(", ", *sregs, interrupt_bitmap);
+       tprints("}");
 }
 #endif /* HAVE_STRUCT_KVM_SREGS */
index 0a274888ac91d560592cd74dd16edaafa03dd086..b9eaa1446d28c1c0c9d835a89a532ba70796756d 100644 (file)
@@ -5,7 +5,7 @@
  * Copyright (c) 2008-2013 Denys Vlasenko <vda.linux@googlemail.com>
  * Copyright (c) 2012 H.J. Lu <hongjiu.lu@intel.com>
  * Copyright (c) 2010-2015 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -18,10 +18,6 @@ arch_get_scno(struct tcb *tcp)
        kernel_ulong_t scno = 0;
        unsigned int currpers;
 
-#ifndef __X32_SYSCALL_BIT
-# define __X32_SYSCALL_BIT     0x40000000
-#endif
-
        /*
         * GETREGSET of NT_PRSTATUS tells us regset size,
         * which unambiguously detects i386.
index 06e93fa9b19fc84946a19a51b5a6c62bb15e56bf..9a4c67522956f50cf757b5edeaf7e6ca5961d66e 100644 (file)
@@ -96,6 +96,7 @@
 { "linux/kvm.h", "KVM_SET_ONE_REG", _IOC_WRITE, 0xaeac, 0x10 },
 { "linux/kvm.h", "KVM_SET_PIT", _IOC_READ, 0xae66, 0x48 },
 { "linux/kvm.h", "KVM_SET_PIT2", _IOC_WRITE, 0xaea0, 0x70 },
+{ "linux/kvm.h", "KVM_SET_PMU_EVENT_FILTER", _IOC_WRITE, 0xaeb2, 0x20 },
 { "linux/kvm.h", "KVM_SET_REGS", _IOC_WRITE, 0xae82, 0x90 },
 { "linux/kvm.h", "KVM_SET_SIGNAL_MASK", _IOC_WRITE, 0xae8b, 0x04 },
 { "linux/kvm.h", "KVM_SET_SREGS", _IOC_WRITE, 0xae84, 0x138 },
index 03bda0d6ccadf78d2357d9f417846959f86734ae..a1606295edeb87a17cc44bf9beef8f14b739bd4e 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002-2019 The strace developers.
+ * Copyright (c) 2002-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
 [ 56] = { 5,   TP,             SEN(clone),                     "clone"                 },
 [ 57] = { 0,   TP,             SEN(fork),                      "fork"                  },
 [ 58] = { 0,   TP,             SEN(vfork),                     "vfork"                 },
-[ 59] = { 3,   TF|TP|SE|SI,    SEN(execve),                    "execve"                },
+[ 59] = { 3,   TF|TP|TSD|SE|SI,        SEN(execve),                    "execve"                },
 [ 60] = { 1,   TP|SE,          SEN(exit),                      "exit"                  },
 [ 61] = { 4,   TP,             SEN(wait4),                     "wait4"                 },
-[ 62] = { 2,   TS,             SEN(kill),                      "kill"                  },
+[ 62] = { 2,   TS|TP,          SEN(kill),                      "kill"                  },
 [ 63] = { 1,   0,              SEN(uname),                     "uname"                 },
 [ 64] = { 3,   TI,             SEN(semget),                    "semget"                },
 [ 65] = { 3,   TI,             SEN(semop),                     "semop"                 },
 [ 93] = { 3,   TD,             SEN(fchown),                    "fchown"                },
 [ 94] = { 3,   TF,             SEN(chown),                     "lchown"                },
 [ 95] = { 1,   NF,             SEN(umask),                     "umask"                 },
-[ 96] = { 2,   0,              SEN(gettimeofday),              "gettimeofday"          },
+[ 96] = { 2,   TCL,            SEN(gettimeofday),              "gettimeofday"          },
 [ 97] = { 2,   0,              SEN(getrlimit),                 "getrlimit"             },
 [ 98] = { 2,   0,              SEN(getrusage),                 "getrusage"             },
 [ 99] = { 1,   0,              SEN(sysinfo),                   "sysinfo"               },
 [100] = { 1,   0,              SEN(times),                     "times"                 },
 [101] = { 4,   0,              SEN(ptrace),                    "ptrace"                },
-[102] = { 0,   PU|NF,          SEN(getuid),                    "getuid"                },
+[102] = { 0,   TC|PU|NF,       SEN(getuid),                    "getuid"                },
 [103] = { 3,   0,              SEN(syslog),                    "syslog"                },
-[104] = { 0,   PU|NF,          SEN(getgid),                    "getgid"                },
-[105] = { 1,   0,              SEN(setuid),                    "setuid"                },
-[106] = { 1,   0,              SEN(setgid),                    "setgid"                },
-[107] = { 0,   PU|NF,          SEN(geteuid),                   "geteuid"               },
-[108] = { 0,   PU|NF,          SEN(getegid),                   "getegid"               },
+[104] = { 0,   TC|PU|NF,       SEN(getgid),                    "getgid"                },
+[105] = { 1,   TC,             SEN(setuid),                    "setuid"                },
+[106] = { 1,   TC,             SEN(setgid),                    "setgid"                },
+[107] = { 0,   TC|PU|NF,       SEN(geteuid),                   "geteuid"               },
+[108] = { 0,   TC|PU|NF,       SEN(getegid),                   "getegid"               },
 [109] = { 2,   0,              SEN(setpgid),                   "setpgid"               },
 [110] = { 0,   PU|NF,          SEN(getppid),                   "getppid"               },
 [111] = { 0,   PU|NF,          SEN(getpgrp),                   "getpgrp"               },
 [112] = { 0,   0,              SEN(setsid),                    "setsid"                },
-[113] = { 2,   0,              SEN(setreuid),                  "setreuid"              },
-[114] = { 2,   0,              SEN(setregid),                  "setregid"              },
-[115] = { 2,   0,              SEN(getgroups),                 "getgroups"             },
-[116] = { 2,   0,              SEN(setgroups),                 "setgroups"             },
-[117] = { 3,   0,              SEN(setresuid),                 "setresuid"             },
-[118] = { 3,   0,              SEN(getresuid),                 "getresuid"             },
-[119] = { 3,   0,              SEN(setresgid),                 "setresgid"             },
-[120] = { 3,   0,              SEN(getresgid),                 "getresgid"             },
+[113] = { 2,   TC,             SEN(setreuid),                  "setreuid"              },
+[114] = { 2,   TC,             SEN(setregid),                  "setregid"              },
+[115] = { 2,   TC,             SEN(getgroups),                 "getgroups"             },
+[116] = { 2,   TC,             SEN(setgroups),                 "setgroups"             },
+[117] = { 3,   TC,             SEN(setresuid),                 "setresuid"             },
+[118] = { 3,   TC,             SEN(getresuid),                 "getresuid"             },
+[119] = { 3,   TC,             SEN(setresgid),                 "setresgid"             },
+[120] = { 3,   TC,             SEN(getresgid),                 "getresgid"             },
 [121] = { 1,   0,              SEN(getpgid),                   "getpgid"               },
-[122] = { 1,   NF,             SEN(setfsuid),                  "setfsuid"              },
-[123] = { 1,   NF,             SEN(setfsgid),                  "setfsgid"              },
+[122] = { 1,   TC|NF,          SEN(setfsuid),                  "setfsuid"              },
+[123] = { 1,   TC|NF,          SEN(setfsgid),                  "setfsgid"              },
 [124] = { 1,   0,              SEN(getsid),                    "getsid"                },
-[125] = { 2,   0,              SEN(capget),                    "capget"                },
-[126] = { 2,   0,              SEN(capset),                    "capset"                },
+[125] = { 2,   TC,             SEN(capget),                    "capget"                },
+[126] = { 2,   TC,             SEN(capset),                    "capset"                },
 [127] = { 2,   TS,             SEN(rt_sigpending),             "rt_sigpending"         },
 [128] = { 4,   TS,             SEN(rt_sigtimedwait_time64),    "rt_sigtimedwait"       },
-[129] = { 3,   TS,             SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
+[129] = { 3,   TS|TP,          SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
 [130] = { 2,   TS,             SEN(rt_sigsuspend),             "rt_sigsuspend"         },
 [131] = { 2,   TS,             SEN(sigaltstack),               "sigaltstack"           },
 [132] = { 2,   TF,             SEN(utime),                     "utime"                 },
 [154] = { 3,   0,              SEN(modify_ldt),                "modify_ldt"            },
 [155] = { 2,   TF,             SEN(pivotroot),                 "pivot_root"            },
 [156] = { 1,   0,              SEN(sysctl),                    "_sysctl"               },
-[157] = { 5,   0,              SEN(prctl),                     "prctl"                 },
-[158] = { 2,   TP,             SEN(arch_prctl),                "arch_prctl"            },
-[159] = { 1,   0,              SEN(adjtimex64),                "adjtimex"              },
+[157] = { 5,   TC,             SEN(prctl),                     "prctl"                 },
+[158] = { 2,   0,              SEN(arch_prctl),                "arch_prctl"            },
+[159] = { 1,   TCL,            SEN(adjtimex64),                "adjtimex"              },
 [160] = { 2,   0,              SEN(setrlimit),                 "setrlimit"             },
 [161] = { 1,   TF,             SEN(chroot),                    "chroot"                },
 [162] = { 0,   0,              SEN(sync),                      "sync"                  },
 [163] = { 1,   TF,             SEN(acct),                      "acct"                  },
-[164] = { 2,   0,              SEN(settimeofday),              "settimeofday"          },
+[164] = { 2,   TCL,            SEN(settimeofday),              "settimeofday"          },
 [165] = { 5,   TF,             SEN(mount),                     "mount"                 },
 [166] = { 2,   TF,             SEN(umount2),                   "umount2"               },
 [167] = { 2,   TF,             SEN(swapon),                    "swapon"                },
 [197] = { 2,   TF,             SEN(removexattr),               "removexattr"           },
 [198] = { 2,   TF,             SEN(removexattr),               "lremovexattr"          },
 [199] = { 2,   TD,             SEN(fremovexattr),              "fremovexattr"          },
-[200] = { 2,   TS,             SEN(kill),                      "tkill"                 },
-[201] = { 1,   0,              SEN(time),                      "time"                  },
+[200] = { 2,   TS|TP,          SEN(tkill),                     "tkill"                 },
+[201] = { 1,   TCL,            SEN(time),                      "time"                  },
 [202] = { 6,   0,              SEN(futex_time64),              "futex"                 },
 [203] = { 3,   0,              SEN(sched_setaffinity),         "sched_setaffinity"     },
 [204] = { 3,   0,              SEN(sched_getaffinity),         "sched_getaffinity"     },
 [224] = { 2,   0,              SEN(timer_gettime64),           "timer_gettime"         },
 [225] = { 1,   0,              SEN(timer_getoverrun),          "timer_getoverrun"      },
 [226] = { 1,   0,              SEN(timer_delete),              "timer_delete"          },
-[227] = { 2,   0,              SEN(clock_settime64),           "clock_settime"         },
-[228] = { 2,   0,              SEN(clock_gettime64),           "clock_gettime"         },
-[229] = { 2,   0,              SEN(clock_getres_time64),       "clock_getres"          },
+[227] = { 2,   TCL,            SEN(clock_settime64),           "clock_settime"         },
+[228] = { 2,   TCL,            SEN(clock_gettime64),           "clock_gettime"         },
+[229] = { 2,   TCL,            SEN(clock_getres_time64),       "clock_getres"          },
 [230] = { 4,   0,              SEN(clock_nanosleep_time64),    "clock_nanosleep"       },
 [231] = { 1,   TP|SE,          SEN(exit),                      "exit_group"            },
 [232] = { 4,   TD,             SEN(epoll_wait),                "epoll_wait"            },
 [233] = { 4,   TD,             SEN(epoll_ctl),                 "epoll_ctl"             },
-[234] = { 3,   TS,             SEN(tgkill),                    "tgkill"                },
+[234] = { 3,   TS|TP,          SEN(tgkill),                    "tgkill"                },
 [235] = { 2,   TF,             SEN(utimes),                    "utimes"                },
 [236] = { 5,   0,              SEN(vserver),                   "vserver"               },
 [237] = { 6,   TM,             SEN(mbind),                     "mbind"                 },
 [269] = { 3,   TD|TF,          SEN(faccessat),                 "faccessat"             },
 [270] = { 6,   TD,             SEN(pselect6_time64),           "pselect6"              },
 [271] = { 5,   TD,             SEN(ppoll_time64),              "ppoll"                 },
-[272] = { 1,   TP,             SEN(unshare),                   "unshare"               },
+[272] = { 1,   0,              SEN(unshare),                   "unshare"               },
 [273] = { 2,   0,              SEN(set_robust_list),           "set_robust_list"       },
 [274] = { 3,   0,              SEN(get_robust_list),           "get_robust_list"       },
 [275] = { 6,   TD,             SEN(splice),                    "splice"                },
 [302] = { 4,   0,              SEN(prlimit64),                 "prlimit64"             },
 [303] = { 5,   TD|TF,          SEN(name_to_handle_at),         "name_to_handle_at"     },
 [304] = { 3,   TD,             SEN(open_by_handle_at),         "open_by_handle_at"     },
-[305] = { 2,   0,              SEN(clock_adjtime64),           "clock_adjtime"         },
+[305] = { 2,   TCL,            SEN(clock_adjtime64),           "clock_adjtime"         },
 [306] = { 1,   TD,             SEN(syncfs),                    "syncfs"                },
 [307] = { 4,   TN,             SEN(sendmmsg),                  "sendmmsg"              },
 [308] = { 2,   TD,             SEN(setns),                     "setns"                 },
 [319] = { 2,   TD,             SEN(memfd_create),              "memfd_create"          },
 [320] = { 5,   TD,             SEN(kexec_file_load),           "kexec_file_load"       },
 [321] = { 3,   TD,             SEN(bpf),                       "bpf"                   },
-[322] = { 5,   TD|TF|TP|SE|SI, SEN(execveat),                  "execveat"              },
+[322] = { 5,   TD|TF|TP|TSD|SE|SI,     SEN(execveat),                  "execveat"              },
 [323] = { 1,   TD,             SEN(userfaultfd),               "userfaultfd"           },
 [324] = { 2,   0,              SEN(membarrier),                "membarrier"            },
 [325] = { 3,   TM,             SEN(mlock2),                    "mlock2"                },
 [329] = { 4,   TM|SI,          SEN(pkey_mprotect),             "pkey_mprotect"         },
 [330] = { 2,   0,              SEN(pkey_alloc),                "pkey_alloc"            },
 [331] = { 1,   0,              SEN(pkey_free),                 "pkey_free"             },
-[332] = { 5,   TD|TF|TSTA,     SEN(statx),                     "statx"                 },
+[332] = { 5,   TD|TF|TFST|TSTA,SEN(statx),                     "statx"                 },
 [333] = { 6,   0,              SEN(io_pgetevents_time64),      "io_pgetevents"         },
 [334] = { 4,   0,              SEN(rseq),                      "rseq"                  },
 /* [335 ... 423] - reserved to sync up with other architectures */
-[424] = { 4,   TD|TS,          SEN(pidfd_send_signal),         "pidfd_send_signal"     },
-[425] = { 2,   TD,             SEN(io_uring_setup),            "io_uring_setup"        },
-[426] = { 6,   TD|TS,          SEN(io_uring_enter),            "io_uring_enter"        },
-[427] = { 4,   TD|TM,          SEN(io_uring_register),         "io_uring_register"     },
+#include "syscallent-common.h"
index 557e5bacd1039ac70946db11838df7945111aa49..dfcc31507262d728a61e97aede8b748a86e7591d 100644 (file)
@@ -1,10 +1,11 @@
 /*
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
  */
 
-static unsigned long xtensa_a2;
-#define ARCH_PC_PEEK_ADDR REG_PC
-#define ARCH_SP_PEEK_ADDR (REG_A_BASE + 1)
+static struct user_pt_regs xtensa_regs;
+#define ARCH_REGS_FOR_GETREGS xtensa_regs
+#define ARCH_PC_REG xtensa_regs.pc
+#define ARCH_SP_REG xtensa_regs.a[1]
index 7fc8ac2c03a57ce359bf1290d40641c6d86434aa..70e6fa19ab2479da2037d0e22f2dda6270435848 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
 static void
 arch_get_error(struct tcb *tcp, const bool check_errno)
 {
-       if (check_errno && is_negated_errno(xtensa_a2)) {
+       if (check_errno && is_negated_errno(xtensa_regs.a[2])) {
                tcp->u_rval = -1;
-               tcp->u_error = -xtensa_a2;
+               tcp->u_error = -xtensa_regs.a[2];
        } else {
-               tcp->u_rval = xtensa_a2;
+               tcp->u_rval = xtensa_regs.a[2];
        }
 }
index 69b981c3696a53e61f5a76d16337da89f787d465..7bdc19850eba72efc7051afb44eadad6ad549ec5 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2019 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -9,19 +9,9 @@
 static int
 arch_get_syscall_args(struct tcb *tcp)
 {
-       /* arg0: a6, arg1: a3, arg2: a4, arg3: a5, arg4: a8, arg5: a9 */
-       static const int xtensaregs[MAX_ARGS] = {
-               REG_A_BASE + 6,
-               REG_A_BASE + 3,
-               REG_A_BASE + 4,
-               REG_A_BASE + 5,
-               REG_A_BASE + 8,
-               REG_A_BASE + 9
-       };
-       unsigned int i;
+       static const unsigned int syscall_regs[MAX_ARGS] = { 6, 3, 4, 5, 8, 9 };
 
-       for (i = 0; i < n_args(tcp); ++i)
-               if (upeek(tcp, xtensaregs[i], &tcp->u_arg[i]) < 0)
-                       return -1;
+       for (unsigned int i = 0; i < n_args(tcp); ++i)
+               tcp->u_arg[i] = xtensa_regs.a[syscall_regs[i]];
        return 1;
 }
diff --git a/linux/xtensa/get_syscall_result.c b/linux/xtensa/get_syscall_result.c
deleted file mode 100644 (file)
index bbb091c..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-/*
- * Copyright (c) 2015-2018 The strace developers.
- * All rights reserved.
- *
- * SPDX-License-Identifier: LGPL-2.1-or-later
- */
-
-static int
-get_syscall_result_regs(struct tcb *tcp)
-{
-       return upeek(tcp, REG_A_BASE + 2, &xtensa_a2) < 0 ? -1 : 0;
-}
index cd6d627bc3f4e6c63c0b86b6a58bfb8a7f9e4b4f..8fcc658ac2f60ab58f3e6d3160941e561887eb7a 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -8,13 +8,13 @@
 static int
 arch_set_error(struct tcb *tcp)
 {
-       xtensa_a2 = -tcp->u_error;
-       return upoke(tcp, REG_A_BASE + 2, xtensa_a2);
+       xtensa_regs.a[2] = -tcp->u_error;
+       return set_regs(tcp->pid);
 }
 
 static int
 arch_set_success(struct tcb *tcp)
 {
-       xtensa_a2 = tcp->u_rval;
-       return upoke(tcp, REG_A_BASE + 2, xtensa_a2);
+       xtensa_regs.a[2] = tcp->u_rval;
+       return set_regs(tcp->pid);
 }
index 8cb6a46c76054249b3f76334ff85e2dd87bb06ac..a94fd93dae267d1e59a4ddf4fe4177a929129b29 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013-2019 The strace developers.
+ * Copyright (c) 2013-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
 [114] = { 4,   TD|TN,          SEN(sendfile64),                "sendfile64"            },
 [115] = { 4,   TN,             SEN(sendmmsg),                  "sendmmsg"              },
 [116] = { 5,   TP,             SEN(clone),                     "clone"                 },
-[117] = { 3,   TF|TP|SE|SI,    SEN(execve),                    "execve"                },
+[117] = { 3,   TF|TP|TSD|SE|SI,        SEN(execve),                    "execve"                },
 [118] = { 1,   TP|SE,          SEN(exit),                      "exit"                  },
 [119] = { 1,   TP|SE,          SEN(exit),                      "exit_group"            },
 [120] = { 0,   PU|NF,          SEN(getpid),                    "getpid"                },
 [121] = { 4,   TP,             SEN(wait4),                     "wait4"                 },
 [122] = { 5,   TP,             SEN(waitid),                    "waitid"                },
-[123] = { 2,   TS,             SEN(kill),                      "kill"                  },
-[124] = { 2,   TS,             SEN(kill),                      "tkill"                 },
-[125] = { 3,   TS,             SEN(tgkill),                    "tgkill"                },
+[123] = { 2,   TS|TP,          SEN(kill),                      "kill"                  },
+[124] = { 2,   TS|TP,          SEN(tkill),                     "tkill"                 },
+[125] = { 3,   TS|TP,          SEN(tgkill),                    "tgkill"                },
 [126] = { 1,   0,              SEN(set_tid_address),           "set_tid_address"       },
 [127] = { 0,   PU|NF,          SEN(gettid),                    "gettid"                },
 [128] = { 0,   0,              SEN(setsid),                    "setsid"                },
 [129] = { 1,   0,              SEN(getsid),                    "getsid"                },
-[130] = { 5,   0,              SEN(prctl),                     "prctl"                 },
+[130] = { 5,   TC,             SEN(prctl),                     "prctl"                 },
 [131] = { 1,   NF,             SEN(personality),               "personality"           },
 [132] = { 2,   0,              SEN(getpriority),               "getpriority"           },
 [133] = { 3,   0,              SEN(setpriority),               "setpriority"           },
 [134] = { 3,   0,              SEN(setitimer),                 "setitimer"             },
 [135] = { 2,   0,              SEN(getitimer),                 "getitimer"             },
-[136] = { 1,   0,              SEN(setuid),                    "setuid"                },
-[137] = { 0,   PU|NF,          SEN(getuid),                    "getuid"                },
-[138] = { 1,   0,              SEN(setgid),                    "setgid"                },
-[139] = { 0,   PU|NF,          SEN(getgid),                    "getgid"                },
-[140] = { 0,   PU|NF,          SEN(geteuid),                   "geteuid"               },
-[141] = { 0,   PU|NF,          SEN(getegid),                   "getegid"               },
-[142] = { 2,   0,              SEN(setreuid),                  "setreuid"              },
-[143] = { 2,   0,              SEN(setregid),                  "setregid"              },
-[144] = { 3,   0,              SEN(setresuid),                 "setresuid"             },
-[145] = { 3,   0,              SEN(getresuid),                 "getresuid"             },
-[146] = { 3,   0,              SEN(setresgid),                 "setresgid"             },
-[147] = { 3,   0,              SEN(getresgid),                 "getresgid"             },
+[136] = { 1,   TC,             SEN(setuid),                    "setuid"                },
+[137] = { 0,   TC|PU|NF,       SEN(getuid),                    "getuid"                },
+[138] = { 1,   TC,             SEN(setgid),                    "setgid"                },
+[139] = { 0,   TC|PU|NF,       SEN(getgid),                    "getgid"                },
+[140] = { 0,   TC|PU|NF,       SEN(geteuid),                   "geteuid"               },
+[141] = { 0,   TC|PU|NF,       SEN(getegid),                   "getegid"               },
+[142] = { 2,   TC,             SEN(setreuid),                  "setreuid"              },
+[143] = { 2,   TC,             SEN(setregid),                  "setregid"              },
+[144] = { 3,   TC,             SEN(setresuid),                 "setresuid"             },
+[145] = { 3,   TC,             SEN(getresuid),                 "getresuid"             },
+[146] = { 3,   TC,             SEN(setresgid),                 "setresgid"             },
+[147] = { 3,   TC,             SEN(getresgid),                 "getresgid"             },
 [148] = { 2,   0,              SEN(setpgid),                   "setpgid"               },
 [149] = { 1,   0,              SEN(getpgid),                   "getpgid"               },
 [150] = { 0,   PU|NF,          SEN(getppid),                   "getppid"               },
 [155] = { 1,   TF,             SEN(acct),                      "acct"                  },
 [156] = { 3,   0,              SEN(sched_setaffinity),         "sched_setaffinity"     },
 [157] = { 3,   0,              SEN(sched_getaffinity),         "sched_getaffinity"     },
-[158] = { 2,   0,              SEN(capget),                    "capget"                },
-[159] = { 2,   0,              SEN(capset),                    "capset"                },
+[158] = { 2,   TC,             SEN(capget),                    "capget"                },
+[159] = { 2,   TC,             SEN(capset),                    "capset"                },
 [160] = { 4,   0,              SEN(ptrace),                    "ptrace"                },
 [161] = { 4,   TI,             SEN(semtimedop_time32),         "semtimedop"            },
 [162] = { 3,   TI,             SEN(semget),                    "semget"                },
 [177] = { 1,   TF,             SEN(swapoff),                   "swapoff"               },
 [178] = { 0,   0,              SEN(sync),                      "sync"                  },
 [179] = { 1,   TD,             SEN(syncfs),                    "syncfs"                },
-[180] = { 1,   NF,             SEN(setfsuid),                  "setfsuid"              },
-[181] = { 1,   NF,             SEN(setfsgid),                  "setfsgid"              },
+[180] = { 1,   TC|NF,          SEN(setfsuid),                  "setfsuid"              },
+[181] = { 1,   TC|NF,          SEN(setfsgid),                  "setfsgid"              },
 [182] = { 3,   0,              SEN(sysfs),                     "sysfs"                 },
 [183] = { 2,   TSFA,           SEN(ustat),                     "ustat"                 },
 [184] = { 2,   TF|TSF|TSFA,    SEN(statfs),                    "statfs"                },
 [189] = { 2,   0,              SEN(getrlimit),                 "getrlimit"             },
 [190] = { 2,   0,              SEN(getrusage),                 "getrusage"             },
 [191] = { 6,   0,              SEN(futex_time32),              "futex"                 },
-[192] = { 2,   0,              SEN(gettimeofday),              "gettimeofday"          },
-[193] = { 2,   0,              SEN(settimeofday),              "settimeofday"          },
-[194] = { 1,   0,              SEN(adjtimex32),                "adjtimex"              },
+[192] = { 2,   TCL,            SEN(gettimeofday),              "gettimeofday"          },
+[193] = { 2,   TCL,            SEN(settimeofday),              "settimeofday"          },
+[194] = { 1,   TCL,            SEN(adjtimex32),                "adjtimex"              },
 [195] = { 2,   0,              SEN(nanosleep_time32),          "nanosleep"             },
-[196] = { 2,   0,              SEN(getgroups),                 "getgroups"             },
-[197] = { 2,   0,              SEN(setgroups),                 "setgroups"             },
+[196] = { 2,   TC,             SEN(getgroups),                 "getgroups"             },
+[197] = { 2,   TC,             SEN(setgroups),                 "setgroups"             },
 [198] = { 2,   0,              SEN(sethostname),               "sethostname"           },
 [199] = { 2,   0,              SEN(setdomainname),             "setdomainname"         },
 [200] = { 3,   0,              SEN(syslog),                    "syslog"                },
 [227] = { 4,   TS,             SEN(rt_sigprocmask),            "rt_sigprocmask"        },
 [228] = { 2,   TS,             SEN(rt_sigpending),             "rt_sigpending"         },
 [229] = { 4,   TS,             SEN(rt_sigtimedwait_time32),    "rt_sigtimedwait"       },
-[230] = { 3,   TS,             SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
+[230] = { 3,   TS|TP,          SEN(rt_sigqueueinfo),           "rt_sigqueueinfo"       },
 [231] = { 2,   TS,             SEN(rt_sigsuspend),             "rt_sigsuspend"         },
 [232] = { 4,   TD,             SEN(mq_open),                   "mq_open"               },
 [233] = { 1,   0,              SEN(mq_unlink),                 "mq_unlink"             },
 [241] = { 3,   0,              SEN(io_submit),                 "io_submit"             },
 [242] = { 5,   0,              SEN(io_getevents_time32),       "io_getevents"          },
 [243] = { 3,   0,              SEN(io_cancel),                 "io_cancel"             },
-[244] = { 2,   0,              SEN(clock_settime32),           "clock_settime"         },
-[245] = { 2,   0,              SEN(clock_gettime32),           "clock_gettime"         },
-[246] = { 2,   0,              SEN(clock_getres_time32),       "clock_getres"          },
+[244] = { 2,   TCL,            SEN(clock_settime32),           "clock_settime"         },
+[245] = { 2,   TCL,            SEN(clock_gettime32),           "clock_gettime"         },
+[246] = { 2,   TCL,            SEN(clock_getres_time32),       "clock_getres"          },
 [247] = { 4,   0,              SEN(clock_nanosleep_time32),    "clock_nanosleep"       },
 [248] = { 3,   0,              SEN(timer_create),              "timer_create"          },
 [249] = { 1,   0,              SEN(timer_delete),              "timer_delete"          },
 [263] = { 6,   TM,             SEN(mbind),                     "mbind"                 },
 [264] = { 5,   TM,             SEN(get_mempolicy),             "get_mempolicy"         },
 [265] = { 3,   TM,             SEN(set_mempolicy),             "set_mempolicy"         },
-[266] = { 1,   TP,             SEN(unshare),                   "unshare"               },
+[266] = { 1,   0,              SEN(unshare),                   "unshare"               },
 [267] = { 6,   TM,             SEN(move_pages),                "move_pages"            },
 [268] = { 6,   TD,             SEN(splice),                    "splice"                },
 [269] = { 4,   TD,             SEN(tee),                       "tee"                   },
 [326] = { 6,   TD,             SEN(sync_file_range2),          "sync_file_range2"      },
 [327] = { 5,   TD,             SEN(perf_event_open),           "perf_event_open"       },
 [328] = { 4,   TP|TS,          SEN(rt_tgsigqueueinfo),         "rt_tgsigqueueinfo"     },
-[329] = { 2,   0,              SEN(clock_adjtime32),           "clock_adjtime"         },
+[329] = { 2,   TCL,            SEN(clock_adjtime32),           "clock_adjtime"         },
 [330] = { 4,   0,              SEN(prlimit64),                 "prlimit64"             },
 [331] = { 5,   0,              SEN(kcmp),                      "kcmp"                  },
 [332] = { 3,   TD,             SEN(finit_module),              "finit_module"          },
 [338] = { 3,   0,              SEN(getrandom),                 "getrandom"             },
 [339] = { 2,   TD,             SEN(memfd_create),              "memfd_create"          },
 [340] = { 3,   TD,             SEN(bpf),                       "bpf"                   },
-[341] = { 5,   TD|TF|TP|SE|SI, SEN(execveat),                  "execveat"              },
+[341] = { 5,   TD|TF|TP|TSD|SE|SI,     SEN(execveat),                  "execveat"              },
 [342] = { 1,   TD,             SEN(userfaultfd),               "userfaultfd"           },
 [343] = { 2,   0,              SEN(membarrier),                "membarrier"            },
 [344] = { 3,   TM,             SEN(mlock2),                    "mlock2"                },
 [348] = { 4,   TM|SI,          SEN(pkey_mprotect),             "pkey_mprotect"         },
 [349] = { 2,   0,              SEN(pkey_alloc),                "pkey_alloc"            },
 [350] = { 1,   0,              SEN(pkey_free),                 "pkey_free"             },
-[351] = { 5,   TD|TF|TSTA,     SEN(statx),                     "statx"                 },
+[351] = { 5,   TD|TF|TFST|TSTA,SEN(statx),                     "statx"                 },
 [352] = { 4,   0,              SEN(rseq),                      "rseq"                  },
 /* [353 ... 402] - reserved to sync up with other architectures */
-[403] = { 2,   0,              SEN(clock_gettime64),           "clock_gettime64"       },
-[404] = { 2,   0,              SEN(clock_settime64),           "clock_settime64"       },
-[405] = { 2,   0,              SEN(clock_adjtime64),           "clock_adjtime64"       },
-[406] = { 2,   0,              SEN(clock_getres_time64),       "clock_getres_time64"   },
-[407] = { 4,   0,              SEN(clock_nanosleep_time64),    "clock_nanosleep_time64"},
-[408] = { 2,   0,              SEN(timer_gettime64),           "timer_gettime64"       },
-[409] = { 4,   0,              SEN(timer_settime64),           "timer_settime64"       },
-[410] = { 2,   TD,             SEN(timerfd_gettime64),         "timerfd_gettime64"     },
-[411] = { 4,   TD,             SEN(timerfd_settime64),         "timerfd_settime64"     },
-[412] = { 4,   TD|TF,          SEN(utimensat_time64),          "utimensat_time64"      },
-[413] = { 6,   TD,             SEN(pselect6_time64),           "pselect6_time64"       },
-[414] = { 5,   TD,             SEN(ppoll_time64),              "ppoll_time64"          },
-[416] = { 6,   0,              SEN(io_pgetevents_time64),      "io_pgetevents_time64"  },
-[417] = { 5,   TN,             SEN(recvmmsg_time64),           "recvmmsg_time64"       },
-[418] = { 5,   TD,             SEN(mq_timedsend_time64),       "mq_timedsend_time64"   },
-[419] = { 5,   TD,             SEN(mq_timedreceive_time64),    "mq_timedreceive_time64"},
-[420] = { 4,   TI,             SEN(semtimedop_time64),         "semtimedop_time64"     },
-[421] = { 4,   TS,             SEN(rt_sigtimedwait_time64),    "rt_sigtimedwait_time64"},
-[422] = { 6,   0,              SEN(futex_time64),              "futex_time64"          },
-[423] = { 2,   0,              SEN(sched_rr_get_interval_time64),      "sched_rr_get_interval_time64"  },
-[424] = { 4,   TD|TS,          SEN(pidfd_send_signal),         "pidfd_send_signal"     },
-[425] = { 2,   TD,             SEN(io_uring_setup),            "io_uring_setup"        },
-[426] = { 6,   TD|TS,          SEN(io_uring_enter),            "io_uring_enter"        },
-[427] = { 4,   TD|TM,          SEN(io_uring_register),         "io_uring_register"     },
+#include "syscallent-common-32.h"
+#include "syscallent-common.h"
diff --git a/list.h b/list.h
index 98563e4ddbc6a27a223fb1f5976433551cbb3f29..ddaf33ca1bb0e09dc5c737de07abfe1ffbb01ae7 100644 (file)
--- a/list.h
+++ b/list.h
@@ -1,7 +1,7 @@
 /*
  * Some simple implementation of lists similar to the one used in the kernel.
  *
- * Copyright (c) 2016-2019 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -33,7 +33,7 @@
  * to the next and the previous items in the list, respectively.  Note that
  * they do not perform additional checks for the validity of these pointers,
  * so they have to be guarded with respective list_head/list_tail checks in case
- * of lists with designated heads (where the list's head is not embedded withing
+ * of lists with designated heads (where the list's head is not embedded within
  * a list item.
  *
  * list_{insert,append,remove,remove_tail,remove_head,replace} provide some
diff --git a/loop.c b/loop.c
index 36a40c5575d9a44bd1a60b6482bd5e1fd94ff95d..9fdd1ddb7800af95baca66abe0362e9d156b736c 100644 (file)
--- a/loop.c
+++ b/loop.c
@@ -1,14 +1,13 @@
 /*
  * Copyright (c) 2012 The Chromium OS Authors.
- * Copyright (c) 2012-2018 The strace developers.
+ * Copyright (c) 2012-2020 The strace developers.
  * Written by Mike Frysinger <vapier@gentoo.org>.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
  */
 
 #include "defs.h"
-#include <linux/ioctl.h>
-#include <linux/loop.h>
+#include "types/loop.h"
 
 typedef struct loop_info struct_loop_info;
 
@@ -34,30 +33,28 @@ decode_loop_info(struct tcb *const tcp, const kernel_ulong_t addr)
        if (umove_or_printaddr(tcp, addr, &info))
                return;
 
-       tprintf("{lo_number=%d", info.lo_number);
+       PRINT_FIELD_D("{", info, lo_number);
 
        if (!abbrev(tcp)) {
                PRINT_FIELD_DEV(", ", info, lo_device);
-               tprintf(", lo_inode=%" PRI_klu, (kernel_ulong_t) info.lo_inode);
+               PRINT_FIELD_U(", ", info, lo_inode);
                PRINT_FIELD_DEV(", ", info, lo_rdevice);
        }
 
-       tprintf(", lo_offset=%#x", info.lo_offset);
+       PRINT_FIELD_X(", ", info, lo_offset);
 
        if (!abbrev(tcp) || info.lo_encrypt_type != LO_CRYPT_NONE) {
-               tprints(", lo_encrypt_type=");
-               printxval(loop_crypt_type_options, info.lo_encrypt_type,
-                       "LO_CRYPT_???");
+               PRINT_FIELD_XVAL(", ", info, lo_encrypt_type,
+                                loop_crypt_type_options, "LO_CRYPT_???");
                /*
-                * It is converted to unsigned before use in kernel, see
-                * loop_info64_from_old in drivers/block/loop.c
+                * It is converted to unsigned before use in the kernel,
+                * see loop_info64_from_old in drivers/block/loop.c
                 */
-               tprintf(", lo_encrypt_key_size=%" PRIu32,
-                       (uint32_t) info.lo_encrypt_key_size);
+               PRINT_FIELD_U(", ", info, lo_encrypt_key_size);
        }
 
-       tprints(", lo_flags=");
-       printflags(loop_flags_options, info.lo_flags, "LO_FLAGS_???");
+       PRINT_FIELD_FLAGS(", ", info, lo_flags,
+                         loop_flags_options, "LO_FLAGS_???");
 
        PRINT_FIELD_CSTRING(", ", info, lo_name);
 
@@ -68,68 +65,88 @@ decode_loop_info(struct tcb *const tcp, const kernel_ulong_t addr)
                                          lo_encrypt_key_size, 0);
        }
 
-       if (!abbrev(tcp))
-               tprintf(", lo_init=[%#" PRI_klx ", %#" PRI_klx "]"
-                       ", reserved=[%#hhx, %#hhx, %#hhx, %#hhx]}",
-                       (kernel_ulong_t) info.lo_init[0],
-                       (kernel_ulong_t) info.lo_init[1],
-                       info.reserved[0], info.reserved[1],
-                       info.reserved[2], info.reserved[3]);
-       else
-               tprints(", ...}");
+       if (!abbrev(tcp)) {
+               PRINT_FIELD_X_ARRAY(", ", info, lo_init);
+               PRINT_FIELD_X_ARRAY(", ", info, reserved);
+       } else {
+               tprints(", ...");
+       }
+
+       tprints("}");
 }
 
 static void
-decode_loop_info64(struct tcb *const tcp, const kernel_ulong_t addr)
+print_loop_info64(struct tcb *const tcp, const struct loop_info64 *const info64)
 {
-       struct loop_info64 info64;
-
-       tprints(", ");
-       if (umove_or_printaddr(tcp, addr, &info64))
-               return;
-
        if (!abbrev(tcp)) {
-               PRINT_FIELD_DEV("{", info64, lo_device);
-               tprintf(", lo_inode=%" PRIu64, (uint64_t) info64.lo_inode);
-               PRINT_FIELD_DEV(", ", info64, lo_rdevice);
-               tprintf(", lo_offset=%#" PRIx64 ", lo_sizelimit=%" PRIu64
-                       ", lo_number=%" PRIu32,
-                       (uint64_t) info64.lo_offset,
-                       (uint64_t) info64.lo_sizelimit,
-                       (uint32_t) info64.lo_number);
+               PRINT_FIELD_DEV("{", *info64, lo_device);
+               PRINT_FIELD_U(", ", *info64, lo_inode);
+               PRINT_FIELD_DEV(", ", *info64, lo_rdevice);
+               PRINT_FIELD_X(", ", *info64, lo_offset);
+               PRINT_FIELD_U(", ", *info64, lo_sizelimit);
+               PRINT_FIELD_U(", ", *info64, lo_number);
        } else {
-               tprintf("{lo_offset=%#" PRIx64 ", lo_number=%" PRIu32,
-                       (uint64_t) info64.lo_offset,
-                       (uint32_t) info64.lo_number);
+               PRINT_FIELD_X("{", *info64, lo_offset);
+               PRINT_FIELD_U(", ", *info64, lo_number);
        }
 
-       if (!abbrev(tcp) || info64.lo_encrypt_type != LO_CRYPT_NONE) {
-               tprints(", lo_encrypt_type=");
-               printxval(loop_crypt_type_options, info64.lo_encrypt_type,
-                       "LO_CRYPT_???");
-               tprintf(", lo_encrypt_key_size=%" PRIu32,
-                       info64.lo_encrypt_key_size);
+       if (!abbrev(tcp) || info64->lo_encrypt_type != LO_CRYPT_NONE) {
+               PRINT_FIELD_XVAL(", ", *info64, lo_encrypt_type,
+                                loop_crypt_type_options, "LO_CRYPT_???");
+               PRINT_FIELD_U(", ", *info64, lo_encrypt_key_size);
        }
 
-       tprints(", lo_flags=");
-       printflags(loop_flags_options, info64.lo_flags, "LO_FLAGS_???");
+       PRINT_FIELD_FLAGS(", ", *info64, lo_flags,
+                         loop_flags_options, "LO_FLAGS_???");
 
-       PRINT_FIELD_CSTRING(", ", info64, lo_file_name);
+       PRINT_FIELD_CSTRING(", ", *info64, lo_file_name);
 
-       if (!abbrev(tcp) || info64.lo_encrypt_type != LO_CRYPT_NONE) {
-               PRINT_FIELD_CSTRING(", ", info64, lo_crypt_name);
+       if (!abbrev(tcp) || info64->lo_encrypt_type != LO_CRYPT_NONE) {
+               PRINT_FIELD_CSTRING(", ", *info64, lo_crypt_name);
                const unsigned int lo_encrypt_key_size =
-                       MIN((unsigned) info64.lo_encrypt_key_size, LO_KEY_SIZE);
-               PRINT_FIELD_STRING(", ", info64, lo_encrypt_key,
+                       MIN((unsigned) info64->lo_encrypt_key_size, LO_KEY_SIZE);
+               PRINT_FIELD_STRING(", ", *info64, lo_encrypt_key,
                                          lo_encrypt_key_size, 0);
        }
 
        if (!abbrev(tcp))
-               tprintf(", lo_init=[%#" PRIx64 ", %#" PRIx64 "]}",
-                       (uint64_t) info64.lo_init[0],
-                       (uint64_t) info64.lo_init[1]);
+               PRINT_FIELD_X_ARRAY(", ", *info64, lo_init);
        else
-               tprints(", ...}");
+               tprints(", ...");
+
+       tprints("}");
+}
+
+static void
+decode_loop_info64(struct tcb *const tcp, const kernel_ulong_t addr)
+{
+       struct loop_info64 info64;
+
+       tprints(", ");
+       if (!umove_or_printaddr(tcp, addr, &info64))
+               print_loop_info64(tcp, &info64);
+}
+
+static void
+decode_loop_config(struct tcb *const tcp, const kernel_ulong_t addr)
+{
+       struct_loop_config config;
+
+       tprints(", ");
+       if (umove_or_printaddr(tcp, addr, &config))
+               return;
+
+       PRINT_FIELD_FD("{", config, fd, tcp);
+
+       PRINT_FIELD_U(", ", config, block_size);
+
+       tprints(", info=");
+       print_loop_info64(tcp, &config.info);
+
+       if (!IS_ARRAY_ZERO(config.__reserved))
+               PRINT_FIELD_X_ARRAY(", ", config, __reserved);
+
+       tprints("}");
 }
 
 MPERS_PRINTER_DECL(int, loop_ioctl,
@@ -153,6 +170,10 @@ MPERS_PRINTER_DECL(int, loop_ioctl,
                decode_loop_info64(tcp, arg);
                break;
 
+       case LOOP_CONFIGURE:
+               decode_loop_config(tcp, arg);
+               break;
+
        case LOOP_CLR_FD:
        case LOOP_SET_CAPACITY:
        /* newer loop-control stuff */
index 0572e25146701de33a9d789651d036c3b2f34f7d..868878c6a0f8d01e3971349b632f004f8a573677 100644 (file)
@@ -1,5 +1,5 @@
 # ===========================================================================
-#   http://www.gnu.org/software/autoconf-archive/ax_prog_cc_for_build.html
+#   https://www.gnu.org/software/autoconf-archive/ax_prog_cc_for_build.html
 # ===========================================================================
 #
 # SYNOPSIS
 # LICENSE
 #
 #   Copyright (c) 2008 Paolo Bonzini <bonzini@gnu.org>
-#   Copyright (c) 2008-2017 The strace developers.
+#   Copyright (c) 2008-2020 The strace developers.
 #
 #   Copying and distribution of this file, with or without modification, are
 #   permitted in any medium without royalty provided the copyright notice
 #   and this notice are preserved. This file is offered as-is, without any
 #   warranty.
 
-#serial 8
+#serial 9
 #modified for strace project
 
 AU_ALIAS([AC_PROG_CC_FOR_BUILD], [AX_PROG_CC_FOR_BUILD])
@@ -77,6 +77,8 @@ pushdef([ac_cv_host_os], ac_cv_build_os)dnl
 pushdef([am_cv_prog_cc_c_o], am_cv_build_prog_cc_c_o)dnl
 pushdef([am_cv_CC_dependencies_compiler_type], am_cv_build_CC_dependencies_compiler_type)dnl
 pushdef([gl_unknown_warnings_are_errors], gl_build_unknown_warnings_are_errors)dnl
+pushdef([st_cv_enable_Werror], st_cv_build_enable_Werror)dnl
+pushdef([st_cv_cc_enable_Werror], st_cv_build_cc_enable_Werror)dnl
 
 st_SAVE_VAR([ac_c_decl_warn_flag])
 st_SAVE_VAR([ac_c_preproc_warn_flag])
@@ -112,6 +114,8 @@ st_RESTORE_VAR([ac_c_decl_warn_flag])
 
 dnl Restore the old definitions
 dnl
+popdef([st_cv_cc_enable_Werror])dnl
+popdef([st_cv_enable_Werror])dnl
 popdef([gl_unknown_warnings_are_errors])dnl
 popdef([am_cv_CC_dependencies_compiler_type])dnl
 popdef([am_cv_prog_cc_c_o])dnl
index 8db2a643eef79de20940c3742ad86b732f045181..60dfff991f00baf46e786328baf67c6d8b472e75 100644 (file)
@@ -4,6 +4,7 @@ AC_DEFUN([st_BPF_ATTR], [dnl
                struct bpf_map_info.btf_id,
                struct bpf_map_info.btf_key_type_id,
                struct bpf_map_info.btf_value_type_id,
+               struct bpf_map_info.btf_vmlinux_value_type_id,
                struct bpf_map_info.id,
                struct bpf_map_info.ifindex,
                struct bpf_map_info.key_size,
@@ -44,8 +45,18 @@ AC_DEFUN([st_BPF_ATTR], [dnl
                struct bpf_prog_info.xlated_prog_insns,
                struct bpf_prog_info.xlated_prog_len,
                union bpf_attr.attach_bpf_fd,
+               union bpf_attr.attach_btf_id,
                union bpf_attr.attach_flags,
+               union bpf_attr.attach_prog_fd,
                union bpf_attr.attach_type,
+               union bpf_attr.batch.count,
+               union bpf_attr.batch.elem_flags,
+               union bpf_attr.batch.flags,
+               union bpf_attr.batch.in_batch,
+               union bpf_attr.batch.keys,
+               union bpf_attr.batch.map_fd,
+               union bpf_attr.batch.out_batch,
+               union bpf_attr.batch.values,
                union bpf_attr.bpf_fd,
                union bpf_attr.btf,
                union bpf_attr.btf_fd,
@@ -56,6 +67,7 @@ AC_DEFUN([st_BPF_ATTR], [dnl
                union bpf_attr.btf_log_size,
                union bpf_attr.btf_size,
                union bpf_attr.btf_value_type_id,
+               union bpf_attr.btf_vmlinux_value_type_id,
                union bpf_attr.dummy,
                union bpf_attr.expected_attach_type,
                union bpf_attr.file_flags,
@@ -76,6 +88,14 @@ AC_DEFUN([st_BPF_ATTR], [dnl
                union bpf_attr.line_info,
                union bpf_attr.line_info_cnt,
                union bpf_attr.line_info_rec_size,
+               union bpf_attr.link_create.attach_type,
+               union bpf_attr.link_create.flags,
+               union bpf_attr.link_create.prog_fd,
+               union bpf_attr.link_create.target_fd,
+               union bpf_attr.link_update.flags,
+               union bpf_attr.link_update.link_fd,
+               union bpf_attr.link_update.new_prog_fd,
+               union bpf_attr.link_update.old_prog_fd,
                union bpf_attr.log_buf,
                union bpf_attr.log_level,
                union bpf_attr.log_size,
@@ -105,6 +125,7 @@ AC_DEFUN([st_BPF_ATTR], [dnl
                union bpf_attr.query.target_fd,
                union bpf_attr.raw_tracepoint.name,
                union bpf_attr.raw_tracepoint.prog_fd,
+               union bpf_attr.replace_bpf_fd,
                union bpf_attr.start_id,
                union bpf_attr.target_fd,
                union bpf_attr.task_fd_query.buf,
@@ -116,6 +137,10 @@ AC_DEFUN([st_BPF_ATTR], [dnl
                union bpf_attr.task_fd_query.probe_addr,
                union bpf_attr.task_fd_query.probe_offset,
                union bpf_attr.task_fd_query.prog_id,
+               union bpf_attr.test.ctx_in,
+               union bpf_attr.test.ctx_out,
+               union bpf_attr.test.ctx_size_in,
+               union bpf_attr.test.ctx_size_out,
                union bpf_attr.test.data_in,
                union bpf_attr.test.data_out,
                union bpf_attr.test.data_size_in,
index 13725d71654cfe453d475001996b1bd10ac17b50..4b4634cb14e1a28e5f995aee337876bae515ff1c 100644 (file)
@@ -2,7 +2,7 @@
 #
 # Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
 # Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
-# Copyright (c) 2015-2018 The strace developers.
+# Copyright (c) 2015-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: LGPL-2.1-or-later
@@ -68,6 +68,21 @@ pushdef([st_cv_cc], [st_cv_$1_cc])
 pushdef([st_cv_runtime], [st_cv_$1_runtime])
 pushdef([st_cv_mpers], [st_cv_$1_mpers])
 
+pushdef([EXEEXT], MPERS_NAME[_EXEEXT])dnl
+pushdef([OBJEXT], MPERS_NAME[_OBJEXT])dnl
+pushdef([LDFLAGS], [LDFLAGS_FOR_]MPERS_NAME)dnl
+pushdef([WARN_CFLAGS], [WARN_CFLAGS_FOR_]MPERS_NAME)dnl
+
+st_SAVE_VAR([CC])
+st_SAVE_VAR([CPP])
+st_SAVE_VAR([CFLAGS])
+st_SAVE_VAR([CPPFLAGS])
+
+CC=[$CC_FOR_]MPERS_NAME
+CPP=[$CPP_FOR_]MPERS_NAME
+CFLAGS=[$CFLAGS_FOR_]MPERS_NAME
+CPPFLAGS=[$CPPFLAGS_FOR_]MPERS_NAME
+
 case "$arch" in
        [$2])
        case "$enable_mpers" in
@@ -84,26 +99,29 @@ case "$arch" in
                          AC_MSG_NOTICE([Created empty gnu_stubs])
                          IFLAG=-I.])
        popdef([gnu_stubs])
+       saved_CPPFLAGS="$CPPFLAGS"
+       CPPFLAGS="$CPPFLAGS${IFLAG:+ }$IFLAG"
        saved_CFLAGS="$CFLAGS"
-       CFLAGS="$CFLAGS MPERS_CFLAGS $IFLAG"
-       AC_CACHE_CHECK([for mpers_name personality compile support], [st_cv_cc],
-               [AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <stdint.h>
-                                                    int main(){return 0;}]])],
+       CFLAGS="$CFLAGS MPERS_CFLAGS"
+       AC_CACHE_CHECK([for mpers_name personality compile support (using $CC $CPPFLAGS $CFLAGS)],
+               [st_cv_cc],
+               [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdint.h>]],
+                                                   [[return 0]])],
                                   [st_cv_cc=yes],
                                   [st_cv_cc=no])])
        if test $st_cv_cc = yes; then
                AC_CACHE_CHECK([for mpers_name personality runtime support],
                        [st_cv_runtime],
-                       [AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdint.h>
-                                                        int main(){return 0;}]])],
+                       [AC_RUN_IFELSE([AC_LANG_PROGRAM([[#include <stdint.h>]],
+                                                       [[return 0]])],
                                       [st_cv_runtime=yes],
                                       [st_cv_runtime=no],
                                       [st_cv_runtime=no])])
                AC_CACHE_CHECK([whether mpers.sh mpers_name MPERS_CFLAGS works],
                        [st_cv_mpers],
                        [if READELF="$READELF" \
-                           CC="$CC" CPP="$CPP" CPPFLAGS="$CPPFLAGS $IFLAG" \
-                           $srcdir/mpers_test.sh [$1] MPERS_CFLAGS; then
+                           CC="$CC" CPP="$CPP" CPPFLAGS="$CPPFLAGS" \
+                           $srcdir/mpers_test.sh [$1] "MPERS_CFLAGS"; then
                                st_cv_mpers=yes
                         else
                                st_cv_mpers=no
@@ -129,9 +147,18 @@ case "$arch" in
                                                [#include "$srcdir/kernel_types.h"])
                                st_MPERS_SAVE_AC_CV([sizeof_kernel_long_t])
                                popdef([SIZEOF_KERNEL_LONG_T])
+
+                               pushdef([SIZEOF_STRUCT_MSQID64_DS],
+                                       MPERS_NAME[_SIZEOF_STRUCT_MSQID64_DS])
+                               st_MPERS_LOAD_AC_CV([sizeof_struct_msqid64_ds])
+                               AC_CHECK_SIZEOF([struct msqid64_ds],,
+                                               [#include <linux/msg.h>])
+                               st_MPERS_SAVE_AC_CV([sizeof_struct_msqid64_ds])
+                               popdef([SIZEOF_STRUCT_MSQID64_DS])
                        fi
                fi
        fi
+       CPPFLAGS="$saved_CPPFLAGS"
        CFLAGS="$saved_CFLAGS"
        ;;
 
@@ -162,6 +189,16 @@ esac
 AM_CONDITIONAL(HAVE_RUNTIME, [test "$st_cv_mpers$st_cv_runtime" = yesyes])
 AM_CONDITIONAL(HAVE_MPERS, [test "$st_cv_mpers" = yes])
 
+st_RESTORE_VAR([CC])
+st_RESTORE_VAR([CPP])
+st_RESTORE_VAR([CFLAGS])
+st_RESTORE_VAR([CPPFLAGS])
+
+popdef([WARN_CFLAGS])dnl
+popdef([LDFLAGS])dnl
+popdef([OBJEXT])dnl
+popdef([EXEEXT])dnl
+
 popdef([st_cv_mpers])
 popdef([st_cv_runtime])
 popdef([st_cv_cc])
diff --git a/m4/st_esyscmd_s.m4 b/m4/st_esyscmd_s.m4
new file mode 100644 (file)
index 0000000..df1302c
--- /dev/null
@@ -0,0 +1,10 @@
+#!/usr/bin/m4
+#
+# Copyright (c) 2019 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+AC_DEFUN([st_esyscmd_s], [dnl
+m4_esyscmd_s([$1])dnl
+m4_assert(m4_sysval == 0)])
index 9e4d7e3e69ccdb7b8068eb4695b6fb0a81fcaadc..0ddc6bd2fed65c70d5be2489673741f230e2d8b7 100644 (file)
@@ -1,11 +1,38 @@
 #!/usr/bin/m4
 #
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: LGPL-2.1-or-later
 
 AC_DEFUN([st_WARN_CFLAGS], [dnl
+AC_CACHE_CHECK([whether $[]_AC_CC[] is fresh enough for -Werror],
+              [st_cv_cc_enable_Werror],
+               [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#if defined __GNUC__ && defined __GNUC_MINOR__
+# define GNUC_PREREQ(maj, min) ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
+#else
+# define GNUC_PREREQ(maj, min) 0
+#endif
+
+#if defined __clang__ && defined __clang_major__ && defined __clang_minor__
+# define CLANG_PREREQ(maj, min) ((__clang_major__ << 16) + __clang_minor__ >= ((maj) << 16) + (min))
+#else
+# define CLANG_PREREQ(maj, min) 0
+#endif
+]],
+                              [[int i[GNUC_PREREQ(4, 8) + CLANG_PREREQ(6, 0) > 0 ? 1 : - 1];]])],
+                              [st_cv_cc_enable_Werror=yes],
+                              [st_cv_cc_enable_Werror=no])])
+AC_CACHE_CHECK([whether to try $[]_AC_CC[] with -Werror by default],
+              [st_cv_enable_Werror],
+              [if test "$st_cv_cc_enable_Werror" != yes; then
+                 st_cv_enable_Werror='no, the compiler is too old'
+               elif test "$arch_enable_Werror" != yes; then
+                 st_cv_enable_Werror='no, architecture is not ready'
+               else
+                 st_cv_enable_Werror=yes
+               fi])
 gl_WARN_ADD([-Wall])
 gl_WARN_ADD([-Wempty-body])
 gl_WARN_ADD([-Wformat-security])
@@ -23,12 +50,15 @@ gl_WARN_ADD([-Wsign-compare])
 gl_WARN_ADD([-Wtype-limits])
 gl_WARN_ADD([-Wwrite-strings])
 AC_ARG_ENABLE([gcc-Werror],
-  [AS_HELP_STRING([--enable-gcc-Werror], [turn on gcc's -Werror option])],
-  [case $enableval in
-     yes) gl_WARN_ADD([-Werror]) ;;
-     no)  ;;
-     *)   AC_MSG_ERROR([bad value $enableval for gcc-Werror option]) ;;
-   esac]
-)
+             [AS_HELP_STRING([--enable-gcc-Werror],
+                             [turn on gcc's -Werror option])],
+             [case "$enable_gcc_Werror" in
+               yes|no|no,*) ;;
+               *) AC_MSG_ERROR([bad value $enable_gcc_Werror for gcc-Werror option]) ;;
+              esac],
+             [enable_gcc_Werror="$st_cv_enable_Werror"])
+if test "$enable_gcc_Werror" = yes; then
+  gl_WARN_ADD([-Werror])
+fi
 AC_SUBST([WARN_CFLAGS])
 ])
index f3ebdaf41bb6f1b60b8dec5e393fd6f2d2f0feea..2391b082f487ce85442d2ad534edcf47c7bc00c7 100644 (file)
--- a/macros.h
+++ b/macros.h
@@ -9,6 +9,7 @@
 # define STRACE_MACROS_H
 
 # include <stdbool.h>
+# include <stddef.h>
 # include <sys/types.h>
 
 # include "gcc_compat.h"
 #  define ROUNDUP(val_, div_) (ROUNDUP_DIV((val_), (div_)) * (div_))
 # endif
 
+# define sizeof_field(type_, member_) (sizeof(((type_ *)0)->member_))
+
 # ifndef offsetofend
 #  define offsetofend(type_, member_)  \
-       (offsetof(type_, member_) + sizeof(((type_ *)0)->member_))
+       (offsetof(type_, member_) + sizeof_field(type_, member_))
 # endif
 
 # ifndef cast_ptr
@@ -73,4 +76,10 @@ is_filled(const char *ptr, char fill, size_t size)
 # define IS_ARRAY_ZERO(arr_)   \
        is_filled((const char *) (arr_), 0, sizeof(arr_) + MUST_BE_ARRAY(arr_))
 
+# ifndef BIT
+#  define BIT(x_) (1U << (x_))
+# endif
+
+# define FLAG(name_) name_ = BIT(name_##_BIT)
+
 #endif /* !STRACE_MACROS_H */
diff --git a/missing b/missing
index 625aeb11897a2221d5cda1d55b6866d61d21f660..8d0eaad250fc1ea8f3728338c1b016596cedfc60 100755 (executable)
--- a/missing
+++ b/missing
@@ -3,7 +3,7 @@
 
 scriptversion=2018-03-07.03; # UTC
 
-# Copyright (C) 1996-2018 Free Software Foundation, Inc.
+# Copyright (C) 1996-2020 Free Software Foundation, Inc.
 # Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
 
 # This program is free software; you can redistribute it and/or modify
diff --git a/mknod.c b/mknod.c
index b01e6000bba6606ce90fd032f0047ec099e56b7e..ca6d57bd926de5ff289ee7be104efef7a26cc421 100644 (file)
--- a/mknod.c
+++ b/mknod.c
@@ -6,7 +6,7 @@
  * Copyright (c) 2006 Ulrich Drepper <drepper@redhat.com>
  * Copyright (c) 2006 Bernhard Kaindl <bk@suse.de>
  * Copyright (c) 2006-2015 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2014-2018 The strace developers.
+ * Copyright (c) 2014-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -46,6 +46,7 @@ SYS_FUNC(mknod)
 SYS_FUNC(mknodat)
 {
        print_dirfd(tcp, tcp->u_arg[0]);
+       tprints(", ");
        decode_mknod(tcp, 1);
 
        return RVAL_DECODED;
index 89c622549c0030b3a9ca4d91c49065d6bcf3568c..5f1948b28d34bf1251e80234d027e34dd681cb86 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2013 Luca Clementi <luca.clementi@gmail.com>
- * Copyright (c) 2013-2018 The strace developers.
+ * Copyright (c) 2013-2020 The strace developers.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
  */
@@ -84,7 +84,7 @@ mmap_cache_rebuild_if_invalid(struct tcb *tcp, const char *caller)
                return MMAP_CACHE_REBUILD_READY;
 
        char filename[sizeof("/proc/4294967296/maps")];
-       xsprintf(filename, "/proc/%u/maps", tcp->pid);
+       xsprintf(filename, "/proc/%u/maps", get_proc_pid(tcp));
 
        FILE *fp = fopen_stream(filename, "r");
        if (!fp) {
diff --git a/move_mount.c b/move_mount.c
new file mode 100644 (file)
index 0000000..df15011
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#include "defs.h"
+#ifdef HAVE_LINUX_MOUNT_H
+# include <linux/mount.h>
+#endif
+#include "xlat/move_mount_flags.h"
+
+SYS_FUNC(move_mount)
+{
+       print_dirfd(tcp, tcp->u_arg[0]);
+       tprints(", ");
+       printpath(tcp, tcp->u_arg[1]);
+       tprints(", ");
+       print_dirfd(tcp, tcp->u_arg[2]);
+       tprints(", ");
+       printpath(tcp, tcp->u_arg[3]);
+       tprints(", ");
+       printflags(move_mount_flags, tcp->u_arg[4], "MOVE_MOUNT_???");
+       return RVAL_DECODED;
+}
index 873879679e47b23ab69b3add287175c529f69d6e..cb1307cdcbb1c84e4bd4ea2d1125bd45d4ffd775 100644 (file)
--- a/mpers.am
+++ b/mpers.am
@@ -1,2 +1,2 @@
 # Generated by ./generate_mpers_am.sh; do not edit.
-mpers_source_files = block.c btrfs.c dirent.c evdev_mpers.c fetch_bpf_fprog.c fetch_struct_flock.c fetch_struct_keyctl_kdf_params.c fetch_struct_mmsghdr.c fetch_struct_msghdr.c fetch_struct_stat.c fetch_struct_stat64.c fetch_struct_statfs.c fetch_struct_xfs_quotastat.c hdio.c ipc_msgctl.c ipc_shmctl.c loop.c mtd.c perf_ioctl.c print_aio_sigset.c print_group_req.c print_mq_attr.c print_msgbuf.c print_sg_req_info.c print_sigevent.c print_time.c print_timespec.c print_timeval.c printrusage.c printsiginfo.c rt_sigreturn.c rtc.c sg_io_v3.c sigaltstack.c sock.c sysinfo.c times.c ustat.c utime.c v4l2.c 
+mpers_source_files = block.c btrfs.c dirent.c evdev_mpers.c fetch_bpf_fprog.c fetch_struct_flock.c fetch_struct_keyctl_kdf_params.c fetch_struct_mmsghdr.c fetch_struct_msghdr.c fetch_struct_stat.c fetch_struct_stat64.c fetch_struct_statfs.c fetch_struct_xfs_quotastat.c hdio.c ipc_msgctl.c ipc_semctl.c ipc_shmctl.c loop.c mtd.c perf_ioctl.c print_aio_sigset.c print_group_req.c print_mq_attr.c print_msgbuf.c print_sg_req_info.c print_sigevent.c print_time.c print_timeval.c printrusage.c printsiginfo.c rt_sigreturn.c rtc.c sg_io_v3.c sigaltstack.c sock.c sysinfo.c times.c ustat.c utime.c v4l2.c 
index 110ce092f4aee0e13affb00c248554f77e840431..b0ee566012a7bcf01ecc6da467d0f0734d25ebfb 100755 (executable)
@@ -2,7 +2,7 @@
 #
 # Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
 # Copyright (c) 2015 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2015-2019 The strace developers.
+# Copyright (c) 2015-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: LGPL-2.1-or-later
@@ -22,6 +22,7 @@ mkdir -p "$mpers_dir"
 
 sample="$mpers_dir/sample.c"
 cat > "$sample" <<EOF
+#include <stdint.h>
 #include "mpers_type.h"
 #include DEF_MPERS_TYPE(sample_struct)
 typedef struct {
@@ -56,6 +57,14 @@ typedef struct {
                unsigned short us[4];
                char sc;
                unsigned char uc;
+               int8_t i8;
+               int16_t i16;
+               int32_t i32;
+               int64_t i64;
+               uint8_t u8;
+               uint16_t u16;
+               uint32_t u32;
+               uint64_t u64;
        } u[3][2];
        short f[0];
 } sample_struct;
@@ -103,6 +112,14 @@ int16_t ss[7][9];
 uint16_t us[4];
 char sc;
 unsigned char uc;
+signed char i8;
+int16_t i16;
+int32_t i32;
+int64_t i64;
+unsigned char u8;
+uint16_t u16;
+uint32_t u32;
+uint64_t u64;
 } u[3][2];
 int16_t f[0];
 } ATTRIBUTE_PACKED ${mpers_name}_sample_struct;
index 7ba3cbcc8a4ba129ec04988440a70a8c1f267249..a6c3c75f77cb975beac8ae886feab5cbdf587e39 100644 (file)
@@ -26,7 +26,9 @@ extern const struct xlat btrfs_send_flags[];
 extern const struct xlat btrfs_snap_flags_v2[];
 extern const struct xlat btrfs_space_info_flags[];
 extern const struct xlat btrfs_tree_objectids[];
+extern const struct xlat hdio_drive_cmds[];
 extern const struct xlat msgctl_flags[];
+extern const struct xlat semctl_flags[];
 extern const struct xlat shmctl_flags[];
 extern const struct xlat loop_cmds[];
 extern const struct xlat loop_flags_options[];
@@ -41,6 +43,7 @@ extern const struct xlat perf_ioctl_cmds[];
 extern const struct xlat perf_ioctl_flags[];
 extern const struct xlat mq_attr_flags[];
 extern const struct xlat sigev_value[];
+extern const struct xlat elf_em[];
 extern const struct xlat audit_arch[];
 extern const struct xlat sigbus_codes[];
 extern const struct xlat sigchld_codes[];
@@ -53,6 +56,8 @@ extern const struct xlat sigsegv_codes[];
 extern const struct xlat sigsys_codes[];
 extern const struct xlat sigtrap_codes[];
 extern const struct xlat sigemt_codes[];
+extern const struct xlat rtc_vl_flags[];
+extern const struct xlat rtc_ioctl_cmds[];
 extern const struct xlat sg_io_info[];
 extern const struct xlat sg_io_dxfer_direction[];
 extern const struct xlat sg_io_flags[];
@@ -61,6 +66,7 @@ extern const struct xlat iffflags[];
 extern const struct xlat arp_hardware_types[];
 extern const struct xlat v4l2_pix_fmts[];
 extern const struct xlat v4l2_sdr_fmts[];
+extern const struct xlat v4l2_ioctl_cmds[];
 extern const struct xlat v4l2_device_capabilities_flags[];
 extern const struct xlat v4l2_buf_types[];
 extern const struct xlat v4l2_format_description_flags[];
@@ -70,12 +76,16 @@ extern const struct xlat v4l2_vbi_flags[];
 extern const struct xlat v4l2_sliced_flags[];
 extern const struct xlat v4l2_memories[];
 extern const struct xlat v4l2_buf_flags[];
+extern const struct xlat v4l2_buf_flags_ts_type[];
+extern const struct xlat v4l2_buf_flags_ts_src[];
+extern const struct xlat v4l2_buf_flags_masks[];
 extern const struct xlat v4l2_streaming_capabilities[];
 extern const struct xlat v4l2_capture_modes[];
 extern const struct xlat v4l2_input_types[];
 extern const struct xlat v4l2_control_classes[];
 extern const struct xlat v4l2_control_id_bases[];
 extern const struct xlat v4l2_control_ids[];
+extern const struct xlat v4l2_control_query_flags[];
 extern const struct xlat v4l2_tuner_types[];
 extern const struct xlat v4l2_tuner_capabilities[];
 extern const struct xlat v4l2_tuner_rxsubchanses[];
index 830c59184dfca2d9aee081142388cfb271af2e63..170b8e5106b01715b16dada97cadf6ac2b6093ee 100644 (file)
--- a/msghdr.c
+++ b/msghdr.c
@@ -4,7 +4,7 @@
  * Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com>
  * Copyright (c) 1996-2000 Wichert Akkerman <wichert@cistron.nl>
  * Copyright (c) 2005-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2019 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -69,7 +69,7 @@ print_scm_creds(struct tcb *tcp, const void *cmsg_data,
 {
        const struct ucred *uc = cmsg_data;
 
-       PRINT_FIELD_U("{", *uc, pid);
+       PRINT_FIELD_TGID("{", *uc, pid, tcp);
        PRINT_FIELD_UID(", ", *uc, uid);
        PRINT_FIELD_UID(", ", *uc, gid);
        tprints("}");
@@ -89,18 +89,37 @@ print_scm_timestamp_old(struct tcb *tcp, const void *cmsg_data,
        print_struct_timeval_data_size(cmsg_data, data_len);
 }
 
+#ifdef current_klongsize
+# if current_klongsize == 4
+#  define PRINT_TIMESPEC_DATA_SIZE print_timespec32_data_size
+#  define PRINT_TIMESPEC_ARRAY_DATA_SIZE print_timespec32_array_data_size
+# else
+#  define PRINT_TIMESPEC_DATA_SIZE print_timespec64_data_size
+#  define PRINT_TIMESPEC_ARRAY_DATA_SIZE print_timespec64_array_data_size
+# endif
+#else
+# define PRINT_TIMESPEC_DATA_SIZE                      \
+       ((current_klongsize == 4) ?                     \
+               print_timespec32_data_size :            \
+               print_timespec64_data_size)
+# define PRINT_TIMESPEC_ARRAY_DATA_SIZE                        \
+       ((current_klongsize == 4) ?                     \
+               print_timespec32_array_data_size :      \
+               print_timespec64_array_data_size)
+#endif
+
 static void
 print_scm_timestampns_old(struct tcb *tcp, const void *cmsg_data,
                          const unsigned int data_len)
 {
-       print_struct_timespec_data_size(cmsg_data, data_len);
+       PRINT_TIMESPEC_DATA_SIZE(cmsg_data, data_len);
 }
 
 static void
 print_scm_timestamping_old(struct tcb *tcp, const void *cmsg_data,
                           const unsigned int data_len)
 {
-       print_struct_timespec_array_data_size(cmsg_data, 3, data_len);
+       PRINT_TIMESPEC_ARRAY_DATA_SIZE(cmsg_data, 3, data_len);
 }
 
 static void
@@ -197,7 +216,7 @@ print_cmsg_ip_recverr(struct tcb *tcp, const void *cmsg_data,
        PRINT_FIELD_U(", ", *err, ee_code);
        PRINT_FIELD_U(", ", *err, ee_info);
        PRINT_FIELD_U(", ", *err, ee_data);
-       PRINT_FIELD_SOCKADDR(", ", *err, offender);
+       PRINT_FIELD_SOCKADDR(", ", *err, offender, tcp);
        tprints("}");
 }
 
@@ -209,7 +228,7 @@ print_cmsg_ip_origdstaddr(struct tcb *tcp, const void *cmsg_data,
                data_len > sizeof(struct sockaddr_storage)
                ? sizeof(struct sockaddr_storage) : data_len;
 
-       print_sockaddr(cmsg_data, addr_len);
+       print_sockaddr(tcp, cmsg_data, addr_len);
 }
 
 typedef void (* const cmsg_printer)(struct tcb *, const void *, unsigned int);
@@ -274,7 +293,7 @@ get_optmem_max(struct tcb *tcp)
        static int optmem_max;
 
        if (!optmem_max) {
-               if (read_int_from_file(tcp, "/proc/sys/net/core/optmem_max",
+               if (read_int_from_file("/proc/sys/net/core/optmem_max",
                                       &optmem_max) || optmem_max <= 0) {
                        optmem_max = sizeof(long long) * (2 * IOV_MAX + 512);
                } else {
diff --git a/net.c b/net.c
index f08691c7cd222690e65189c19e307e9424012e93..2099f0acb7a9846691bd1eaf725b1229516a12a0 100644 (file)
--- a/net.c
+++ b/net.c
@@ -3,7 +3,7 @@
  * Copyright (c) 1993 Branko Lankester <branko@hacktic.nl>
  * Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com>
  * Copyright (c) 1996-2000 Wichert Akkerman <wichert@cistron.nl>
- * Copyright (c) 1999-2019 The strace developers.
+ * Copyright (c) 1999-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -123,14 +123,13 @@ SYS_FUNC(socket)
        switch (tcp->u_arg[0]) {
        case AF_INET:
        case AF_INET6:
-               printxval_search(inet_protocols, tcp->u_arg[2], "IPPROTO_???");
+               printxval(inet_protocols, tcp->u_arg[2], "IPPROTO_???");
                break;
 
        case AF_AX25:
                /* Those are not available in public headers.  */
-               printxval_searchn_ex(ARRSZ_PAIR(ax25_protocols) - 1,
-                                    tcp->u_arg[2], "AX25_P_???",
-                                    XLAT_STYLE_VERBOSE);
+               printxval_ex(ax25_protocols, tcp->u_arg[2], "AX25_P_???",
+                            XLAT_STYLE_VERBOSE);
                break;
 
        case AF_NETLINK:
@@ -139,21 +138,21 @@ SYS_FUNC(socket)
 
        case AF_PACKET:
                tprints("htons(");
-               printxval_searchn(ethernet_protocols, ethernet_protocols_size,
-                                 ntohs(tcp->u_arg[2]), "ETH_P_???");
+               printxval(ethernet_protocols, ntohs(tcp->u_arg[2]),
+                         "ETH_P_???");
                tprints(")");
                break;
 
        case AF_IRDA:
-               printxval_index(can_protocols, tcp->u_arg[2], "IRDAPROTO_???");
+               printxval(can_protocols, tcp->u_arg[2], "IRDAPROTO_???");
                break;
 
        case AF_CAN:
-               printxval_index(can_protocols, tcp->u_arg[2], "CAN_???");
+               printxval(can_protocols, tcp->u_arg[2], "CAN_???");
                break;
 
        case AF_BLUETOOTH:
-               printxval_index(bt_protocols, tcp->u_arg[2], "BTPROTO_???");
+               printxval(bt_protocols, tcp->u_arg[2], "BTPROTO_???");
                break;
 
        case AF_RXRPC:
@@ -165,24 +164,23 @@ SYS_FUNC(socket)
                break;
 
        case AF_PHONET:
-               printxval_index(phonet_protocols, tcp->u_arg[2], "PN_PROTO_???");
+               printxval(phonet_protocols, tcp->u_arg[2], "PN_PROTO_???");
                break;
 
        case AF_CAIF:
-               printxval_index(caif_protocols, tcp->u_arg[2], "CAIFPROTO_???");
+               printxval(caif_protocols, tcp->u_arg[2], "CAIFPROTO_???");
                break;
 
        case AF_NFC:
-               printxval_index(nfc_protocols, tcp->u_arg[2],
-                               "NFC_SOCKPROTO_???");
+               printxval(nfc_protocols, tcp->u_arg[2], "NFC_SOCKPROTO_???");
                break;
 
        case AF_KCM:
-               printxval_index(kcm_protocols, tcp->u_arg[2], "KCMPROTO_???");
+               printxval(kcm_protocols, tcp->u_arg[2], "KCMPROTO_???");
                break;
 
        case AF_SMC:
-               printxval_index(smc_protocols, tcp->u_arg[2], "SMCPROTO_???");
+               printxval(smc_protocols, tcp->u_arg[2], "SMCPROTO_???");
                break;
 
        default:
@@ -293,7 +291,8 @@ SYS_FUNC(recv)
                        printaddr(tcp->u_arg[1]);
                } else {
                        decode_sockbuf(tcp, tcp->u_arg[0], tcp->u_arg[1],
-                                    tcp->u_rval);
+                                      MIN((kernel_ulong_t) tcp->u_rval,
+                                          tcp->u_arg[2]));
                }
 
                tprintf(", %" PRI_klu ", ", tcp->u_arg[2]);
@@ -318,7 +317,8 @@ SYS_FUNC(recvfrom)
                        printaddr(tcp->u_arg[1]);
                } else {
                        decode_sockbuf(tcp, tcp->u_arg[0], tcp->u_arg[1],
-                                    tcp->u_rval);
+                                      MIN((kernel_ulong_t) tcp->u_rval,
+                                          tcp->u_arg[2]));
                }
                /* size */
                tprintf(", %" PRI_klu ", ", tcp->u_arg[2]);
@@ -463,7 +463,7 @@ print_sockopt_fd_level_name(struct tcb *tcp, int fd, unsigned int level,
 {
        printfd(tcp, fd);
        tprints(", ");
-       printxval_search(socketlayers, level, "SOL_??");
+       printxval(socketlayers, level, "SOL_??");
        tprints(", ");
 
        switch (level) {
@@ -486,13 +486,13 @@ print_sockopt_fd_level_name(struct tcb *tcp, int fd, unsigned int level,
                printxval(sock_ipx_options, name, "IPX_???");
                break;
        case SOL_AX25:
-               printxval_search(sock_ax25_options, name, "AX25_???");
+               printxval(sock_ax25_options, name, "AX25_???");
                break;
        case SOL_PACKET:
                printxval(sock_packet_options, name, "PACKET_???");
                break;
        case SOL_TCP:
-               printxval_index(sock_tcp_options, name, "TCP_???");
+               printxval(sock_tcp_options, name, "TCP_???");
                break;
        case SOL_SCTP:
                printxval(sock_sctp_options, name, "SCTP_???");
@@ -507,31 +507,31 @@ print_sockopt_fd_level_name(struct tcb *tcp, int fd, unsigned int level,
                printxval(sock_udp_options, name, "UDP_???");
                break;
        case SOL_IRDA:
-               printxval_index(sock_irda_options, name, "IRLMP_???");
+               printxval(sock_irda_options, name, "IRLMP_???");
                break;
        case SOL_LLC:
-               printxval_index(sock_llc_options, name, "LLC_OPT_???");
+               printxval(sock_llc_options, name, "LLC_OPT_???");
                break;
        case SOL_DCCP:
-               printxval_search(sock_dccp_options, name, "DCCP_SOCKOPT_???");
+               printxval(sock_dccp_options, name, "DCCP_SOCKOPT_???");
                break;
        case SOL_TIPC:
-               printxval_search(sock_tipc_options, name, "TIPC_???");
+               printxval(sock_tipc_options, name, "TIPC_???");
                break;
        case SOL_RXRPC:
-               printxval_index(sock_rxrpc_options, name, "RXRPC_???");
+               printxval(sock_rxrpc_options, name, "RXRPC_???");
                break;
        case SOL_PPPOL2TP:
-               printxval_index(sock_pppol2tp_options, name, "PPPOL2TP_SO_???");
+               printxval(sock_pppol2tp_options, name, "PPPOL2TP_SO_???");
                break;
        case SOL_BLUETOOTH:
-               printxval_search(sock_bluetooth_options, name, "BT_???");
+               printxval(sock_bluetooth_options, name, "BT_???");
                break;
        case SOL_PNPIPE:
                printxval(sock_pnp_options, name, "PNPIPE_???");
                break;
        case SOL_RDS:
-               printxval_search(sock_rds_options, name, "RDS_???");
+               printxval(sock_rds_options, name, "RDS_???");
                break;
        case SOL_IUCV:
                printxval(sock_iucv_options, name, "SO_???");
@@ -540,10 +540,10 @@ print_sockopt_fd_level_name(struct tcb *tcp, int fd, unsigned int level,
                printxval(sock_caif_options, name, "CAIFSO_???");
                break;
        case SOL_ALG:
-               printxval_index(sock_alg_options, name, "ALG_???");
+               printxval(sock_alg_options, name, "ALG_???");
                break;
        case SOL_NFC:
-               printxval_index(sock_nfcllcp_options, name, "NFC_LLCP_???");
+               printxval(sock_nfcllcp_options, name, "NFC_LLCP_???");
                break;
        case SOL_KCM:
                printxval(sock_kcm_options, name, "KCM_???");
@@ -552,7 +552,7 @@ print_sockopt_fd_level_name(struct tcb *tcp, int fd, unsigned int level,
                printxval(sock_tls_options, name, "TLS_???");
                break;
        case SOL_XDP:
-               printxval_index(sock_xdp_options, name, "XDP_???");
+               printxval(sock_xdp_options, name, "XDP_???");
                break;
 
                /* Other SOL_* protocol levels still need work. */
@@ -579,24 +579,8 @@ print_get_linger(struct tcb *const tcp, const kernel_ulong_t addr,
        if (umoven_or_printaddr(tcp, addr, len, &linger))
                return;
 
-       if (len < sizeof(linger.l_onoff)) {
-               tprints("{l_onoff=");
-               print_quoted_string((void *) &linger.l_onoff,
-                                   len, QUOTE_FORCE_HEX);
-       } else {
-               PRINT_FIELD_D("{", linger, l_onoff);
-
-               if (len > offsetof(struct linger, l_linger)) {
-                       len -= offsetof(struct linger, l_linger);
-                       if (len < sizeof(linger.l_linger)) {
-                               tprints(", l_linger=");
-                               print_quoted_string((void *) &linger.l_linger,
-                                                   len, QUOTE_FORCE_HEX);
-                       } else {
-                               PRINT_FIELD_D(", ", linger, l_linger);
-                       }
-               }
-       }
+       PRINT_FIELD_LEN("{", linger, l_onoff, len, PRINT_FIELD_D);
+       PRINT_FIELD_LEN(", ", linger, l_linger, len, PRINT_FIELD_D);
        tprints("}");
 }
 
@@ -617,38 +601,9 @@ print_get_ucred(struct tcb *const tcp, const kernel_ulong_t addr,
        if (umoven_or_printaddr(tcp, addr, len, &uc))
                return;
 
-       if (len < sizeof(uc.pid)) {
-               tprints("{pid=");
-               print_quoted_string((void *) &uc.pid,
-                                   len, QUOTE_FORCE_HEX);
-       } else {
-               PRINT_FIELD_D("{", uc, pid);
-
-               if (len > offsetof(struct ucred, uid)) {
-                       len -= offsetof(struct ucred, uid);
-                       if (len < sizeof(uc.uid)) {
-                               tprints(", uid=");
-                               print_quoted_string((void *) &uc.uid,
-                                                   len, QUOTE_FORCE_HEX);
-                       } else {
-                               PRINT_FIELD_UID(", ", uc, uid);
-
-                               if (len > offsetof(struct ucred, gid) -
-                                         offsetof(struct ucred, uid)) {
-                                       len -= offsetof(struct ucred, gid) -
-                                              offsetof(struct ucred, uid);
-                                       if (len < sizeof(uc.gid)) {
-                                               tprints(", gid=");
-                                               print_quoted_string((void *) &uc.gid,
-                                                                   len,
-                                                                   QUOTE_FORCE_HEX);
-                                       } else {
-                                               PRINT_FIELD_UID(", ", uc, gid);
-                                       }
-                               }
-                       }
-               }
-       }
+       PRINT_FIELD_LEN("{", uc, pid, len, PRINT_FIELD_TGID, tcp);
+       PRINT_FIELD_LEN(", ", uc, uid, len, PRINT_FIELD_UID);
+       PRINT_FIELD_LEN(", ", uc, gid, len, PRINT_FIELD_UID);
        tprints("}");
 }
 
@@ -665,7 +620,7 @@ print_get_error(struct tcb *const tcp, const kernel_ulong_t addr,
                return;
 
        tprints("[");
-       print_xlat_ex(err, err_name(err), XLAT_STYLE_FMT_U);
+       print_err(err, false);
        tprints("]");
 }
 
@@ -688,38 +643,9 @@ print_tpacket_stats(struct tcb *const tcp, const kernel_ulong_t addr,
        if (umoven_or_printaddr(tcp, addr, len, &stats))
                return;
 
-       if (len < sizeof(stats.tp_packets)) {
-               tprints("{tp_packets=");
-               print_quoted_string((void *) &stats.tp_packets,
-                                   len, QUOTE_FORCE_HEX);
-       } else {
-               PRINT_FIELD_U("{", stats, tp_packets);
-
-               if (len > offsetof(struct tp_stats, tp_drops)) {
-                       len -= offsetof(struct tp_stats, tp_drops);
-                       if (len < sizeof(stats.tp_drops)) {
-                               tprints(", tp_drops=");
-                               print_quoted_string((void *) &stats.tp_drops,
-                                                   len, QUOTE_FORCE_HEX);
-                       } else {
-                               PRINT_FIELD_U(", ", stats, tp_drops);
-
-                               if (len > offsetof(struct tp_stats, tp_freeze_q_cnt) -
-                                         offsetof(struct tp_stats, tp_drops)) {
-                                       len -= offsetof(struct tp_stats, tp_freeze_q_cnt) -
-                                              offsetof(struct tp_stats, tp_drops);
-                                       if (len < sizeof(stats.tp_freeze_q_cnt)) {
-                                               tprints(", tp_freeze_q_cnt=");
-                                               print_quoted_string((void *) &stats.tp_freeze_q_cnt,
-                                                                   len,
-                                                                   QUOTE_FORCE_HEX);
-                                       } else {
-                                               PRINT_FIELD_U(", ", stats, tp_freeze_q_cnt);
-                                       }
-                               }
-                       }
-               }
-       }
+       PRINT_FIELD_LEN("{", stats, tp_packets, len, PRINT_FIELD_U);
+       PRINT_FIELD_LEN(", ", stats, tp_drops, len, PRINT_FIELD_U);
+       PRINT_FIELD_LEN(", ", stats, tp_freeze_q_cnt, len, PRINT_FIELD_U);
        tprints("}");
 }
 #endif /* PACKET_STATISTICS */
index a107a17505b8c8a1421253bac824c7bc02cb43d7..cb29033a9375b9e1ba73f927317b62587dfdc604 100644 (file)
--- a/netlink.c
+++ b/netlink.c
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -13,6 +13,7 @@
 #include <linux/audit.h>
 #include <linux/rtnetlink.h>
 #include <linux/xfrm.h>
+#include "print_fields.h"
 #include "xlat/netlink_ack_flags.h"
 #include "xlat/netlink_delete_flags.h"
 #include "xlat/netlink_flags.h"
 #include "xlat/nl_xfrm_types.h"
 #include "xlat/nlmsgerr_attrs.h"
 
+#define XLAT_MACROS_ONLY
+# include "xlat/crypto_msgs.h"
+#undef XLAT_MACROS_ONLY
+
 /*
  * Fetch a struct nlmsghdr from the given address.
  */
@@ -80,11 +85,14 @@ get_fd_nl_family(struct tcb *const tcp, const int fd)
        if (nl_details == details)
                return -1;
 
-       const struct xlat *xlats = netlink_protocols;
-       for (; xlats->str; ++xlats) {
-               const char *name = STR_STRIP_PREFIX(xlats->str, "NETLINK_");
+       const struct xlat_data *xlats = netlink_protocols->data;
+       for (uint32_t idx = 0; idx < netlink_protocols->size; idx++) {
+               if (!netlink_protocols->data[idx].str)
+                       continue;
+
+               const char *name = STR_STRIP_PREFIX(xlats[idx].str, "NETLINK_");
                if (!strncmp(nl_details, name, strlen(name)))
-                       return xlats->val;
+                       return xlats[idx].val;
        }
 
        if (*nl_details >= '0' && *nl_details <= '9')
@@ -438,8 +446,9 @@ print_nlmsghdr(struct tcb *tcp,
        decode_nlmsg_flags(nlmsghdr->nlmsg_flags,
                           nlmsghdr->nlmsg_type, family);
 
-       tprintf(", seq=%u, pid=%u}", nlmsghdr->nlmsg_seq,
-               nlmsghdr->nlmsg_pid);
+       tprintf(", seq=%u, pid=", nlmsghdr->nlmsg_seq);
+       printpid(tcp, nlmsghdr->nlmsg_pid, PT_TGID);
+       tprints("}");
 }
 
 static bool
@@ -498,12 +507,7 @@ decode_nlmsgerr(struct tcb *const tcp,
        if (umove_or_printaddr(tcp, addr, &err.error))
                return;
 
-       tprints("{error=");
-       if (err.error < 0 && (unsigned) -err.error < nerrnos) {
-               tprintf("-%s", errnoent[-err.error]);
-       } else {
-               tprintf("%d", err.error);
-       }
+       PRINT_FIELD_ERR_D("{", err, error);
 
        addr += offsetof(struct nlmsgerr, msg);
        len -= offsetof(struct nlmsgerr, msg);
@@ -534,9 +538,7 @@ decode_nlmsgerr(struct tcb *const tcp,
 }
 
 static const netlink_decoder_t netlink_decoders[] = {
-#ifdef HAVE_LINUX_CRYPTOUSER_H
        [NETLINK_CRYPTO] = decode_netlink_crypto,
-#endif
 #ifdef HAVE_LINUX_NETFILTER_NFNETLINK_H
        [NETLINK_NETFILTER] = decode_netlink_netfilter,
 #endif
index 135416b4ab62625bbd1f4661c52edf79ffdfdceb..a1e05b523c7d1dcf4a179911a2d2ef7f0d5476ca 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -8,15 +8,18 @@
 
 #include "defs.h"
 
-#ifdef HAVE_LINUX_CRYPTOUSER_H
+#include "netlink.h"
+#include "nlattr.h"
+#include "print_fields.h"
 
-# include "netlink.h"
-# include "nlattr.h"
-# include "print_fields.h"
+#include "types/cryptouser.h"
 
-# include <linux/cryptouser.h>
+#include "xlat/crypto_nl_attrs.h"
+
+#define XLAT_MACROS_ONLY
+# include "xlat/crypto_msgs.h"
+#undef XLAT_MACROS_ONLY
 
-# include "xlat/crypto_nl_attrs.h"
 
 static bool
 decode_crypto_report_generic(struct tcb *const tcp,
@@ -37,8 +40,7 @@ decode_crypto_report_hash(struct tcb *const tcp,
                          const unsigned int len,
                          const void *const opaque_data)
 {
-# ifdef HAVE_STRUCT_CRYPTO_REPORT_HASH
-       struct crypto_report_hash rhash;
+       struct_crypto_report_hash rhash;
 
        if (len < sizeof(rhash))
                printstrn(tcp, addr, len);
@@ -48,9 +50,6 @@ decode_crypto_report_hash(struct tcb *const tcp,
                PRINT_FIELD_U(", ", rhash, digestsize);
                tprints("}");
        }
-# else
-       printstrn(tcp, addr, len);
-# endif
 
        return true;
 }
@@ -61,8 +60,7 @@ decode_crypto_report_blkcipher(struct tcb *const tcp,
                               const unsigned int len,
                               const void *const opaque_data)
 {
-# ifdef HAVE_STRUCT_CRYPTO_REPORT_BLKCIPHER
-       struct crypto_report_blkcipher rblkcipher;
+       struct_crypto_report_blkcipher rblkcipher;
 
        if (len < sizeof(rblkcipher))
                printstrn(tcp, addr, len);
@@ -75,9 +73,6 @@ decode_crypto_report_blkcipher(struct tcb *const tcp,
                PRINT_FIELD_U(", ", rblkcipher, ivsize);
                tprints("}");
        }
-# else
-       printstrn(tcp, addr, len);
-# endif
 
        return true;
 }
@@ -88,8 +83,7 @@ decode_crypto_report_aead(struct tcb *const tcp,
                          const unsigned int len,
                          const void *const opaque_data)
 {
-# ifdef HAVE_STRUCT_CRYPTO_REPORT_AEAD
-       struct crypto_report_aead raead;
+       struct_crypto_report_aead raead;
 
        if (len < sizeof(raead))
                printstrn(tcp, addr, len);
@@ -101,9 +95,6 @@ decode_crypto_report_aead(struct tcb *const tcp,
                PRINT_FIELD_U(", ", raead, ivsize);
                tprints("}");
        }
-# else
-       printstrn(tcp, addr, len);
-# endif
 
        return true;
 }
@@ -114,8 +105,7 @@ decode_crypto_report_rng(struct tcb *const tcp,
                         const unsigned int len,
                         const void *const opaque_data)
 {
-# ifdef HAVE_STRUCT_CRYPTO_REPORT_RNG
-       struct crypto_report_rng rrng;
+       struct_crypto_report_rng rrng;
 
        if (len < sizeof(rrng))
                printstrn(tcp, addr, len);
@@ -124,9 +114,6 @@ decode_crypto_report_rng(struct tcb *const tcp,
                PRINT_FIELD_U(", ", rrng, seedsize);
                tprints("}");
        }
-# else
-       printstrn(tcp, addr, len);
-# endif
 
        return true;
 }
@@ -137,8 +124,7 @@ decode_crypto_report_cipher(struct tcb *const tcp,
                            const unsigned int len,
                            const void *const opaque_data)
 {
-# ifdef HAVE_STRUCT_CRYPTO_REPORT_CIPHER
-       struct crypto_report_cipher rcipher;
+       struct_crypto_report_cipher rcipher;
 
        if (len < sizeof(rcipher))
                printstrn(tcp, addr, len);
@@ -149,9 +135,6 @@ decode_crypto_report_cipher(struct tcb *const tcp,
                PRINT_FIELD_U(", ", rcipher, max_keysize);
                tprints("}");
        }
-# else
-       printstrn(tcp, addr, len);
-# endif
 
        return true;
 }
@@ -175,7 +158,7 @@ decode_crypto_user_alg(struct tcb *const tcp,
                       const kernel_ulong_t addr,
                       const unsigned int len)
 {
-       struct crypto_user_alg alg;
+       struct_crypto_user_alg alg;
 
        if (len < sizeof(alg))
                printstrn(tcp, addr, len);
@@ -220,5 +203,3 @@ decode_netlink_crypto(struct tcb *const tcp,
 
        return true;
 }
-
-#endif /* HAVE_LINUX_CRYPTOUSER_H */
index dd26f95aa30ef775e314ba0d92f993489c6dd3c9..6355429bf0cd5317a961ba01e8cb49948861d914 100644 (file)
@@ -174,10 +174,8 @@ DECL_NETLINK_DIAG_DECODER(decode_packet_diag_msg)
                                         (char *) &msg + offset)) {
                        PRINT_FIELD_XVAL("", msg, pdiag_type,
                                         socktypes, "SOCK_???");
-                       PRINT_FIELD_XVAL_SORTED_SIZED(", ", msg, pdiag_num,
-                                                     ethernet_protocols,
-                                                     ethernet_protocols_size,
-                                                     "ETH_P_???");
+                       PRINT_FIELD_XVAL(", ", msg, pdiag_num,
+                                        ethernet_protocols, "ETH_P_???");
                        PRINT_FIELD_U(", ", msg, pdiag_ino);
                        PRINT_FIELD_COOKIE(", ", msg, pdiag_cookie);
                        decode_nla = true;
index ff803fae53d6f627dd87fb695c33971d20a5bb61..0811760fd4c59b104d3f4675062100a7fb81201b 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -90,15 +90,17 @@ static const netlink_route_decoder_t route_decoders[] = {
        [RTM_NEWNETCONF - RTM_BASE] = decode_netconfmsg,
 #endif
 
-#ifdef HAVE_STRUCT_BR_PORT_MSG
        [RTM_DELMDB - RTM_BASE] = decode_br_port_msg,
        [RTM_GETMDB - RTM_BASE] = decode_br_port_msg,
        [RTM_NEWMDB - RTM_BASE] = decode_br_port_msg,
-#endif
 
        [RTM_DELNSID - RTM_BASE] = decode_rtgenmsg,
        [RTM_GETNSID - RTM_BASE] = decode_rtgenmsg,
-       [RTM_NEWNSID - RTM_BASE] = decode_rtgenmsg
+       [RTM_NEWNSID - RTM_BASE] = decode_rtgenmsg,
+
+       [RTM_NEWCHAIN - RTM_BASE] = decode_tcmsg,
+       [RTM_DELCHAIN - RTM_BASE] = decode_tcmsg,
+       [RTM_GETCHAIN - RTM_BASE] = decode_tcmsg,
 };
 
 bool
index 9255c0de1a8cd20bca004499c9f902eaec7d2acf..16815fdea5af1bcc684e6f1ad994547d20a3f73e 100644 (file)
@@ -136,7 +136,7 @@ decode_smc_diag_shutdown(struct tcb *const tcp,
                         const void *const opaque_data)
 {
        const struct decode_nla_xlat_opts opts = {
-               ARRSZ_PAIR(sock_shutdown_flags) - 1, "???_SHUTDOWN",
+               sock_shutdown_flags, "???_SHUTDOWN",
                .size = 1,
        };
 
@@ -183,11 +183,11 @@ decode_smc_diag_fallback(struct tcb *const tcp,
         * net/smc/smc_clc.h
         */
        tprints("{reason=");
-       printxval_search_ex(smc_decl_codes, fb.reason,
-                           "SMC_CLC_DECL_???", XLAT_STYLE_VERBOSE);
+       printxval_ex(smc_decl_codes, fb.reason, "SMC_CLC_DECL_???",
+                    XLAT_STYLE_VERBOSE);
        tprints(", peer_diagnosis=");
-       printxval_search_ex(smc_decl_codes, fb.peer_diagnosis,
-                           "SMC_CLC_DECL_???", XLAT_STYLE_VERBOSE);
+       printxval_ex(smc_decl_codes, fb.peer_diagnosis, "SMC_CLC_DECL_???",
+                    XLAT_STYLE_VERBOSE);
        tprints("}");
 
        return true;
@@ -215,9 +215,8 @@ DECL_NETLINK_DIAG_DECODER(decode_smc_diag_msg)
                                         (void *) &msg + offset)) {
                        PRINT_FIELD_XVAL("", msg, diag_state,
                                         smc_states, "SMC_???");
-                       PRINT_FIELD_XVAL_INDEX(", ", msg, diag_fallback,
-                                              smc_diag_mode,
-                                              "SMC_DIAG_MODE_???");
+                       PRINT_FIELD_XVAL(", ", msg, diag_fallback,
+                                        smc_diag_mode, "SMC_DIAG_MODE_???");
                        PRINT_FIELD_U(", ", msg, diag_shutdown);
                        /*
                         * AF_SMC protocol family socket handler
index 5a9099634e7da0d86bab859bb0299c340779a399..a41fe3c85e98929dd90e8cfc33a65f35c6f86e8a 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -119,7 +119,8 @@ static const nla_decoder_t unix_diag_msg_nla_decoders[] = {
        [UNIX_DIAG_ICONS]       = decode_unix_diag_inode,
        [UNIX_DIAG_RQLEN]       = decode_unix_diag_rqlen,
        [UNIX_DIAG_MEMINFO]     = decode_nla_meminfo,
-       [UNIX_DIAG_SHUTDOWN]    = decode_nla_u8
+       [UNIX_DIAG_SHUTDOWN]    = decode_nla_u8,
+       [UNIX_DIAG_UID]         = decode_nla_uid
 };
 
 DECL_NETLINK_DIAG_DECODER(decode_unix_diag_msg)
index f3df7d9984c2ccdd16a667eb0e58fa7f31b0d834..7f13642cd8fb5d8d897bc68e69d0b84905f7bcfd 100644 (file)
--- a/nlattr.c
+++ b/nlattr.c
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -165,7 +165,8 @@ decode_nla_str(struct tcb *const tcp,
               const unsigned int len,
               const void *const opaque_data)
 {
-       printstr_ex(tcp, addr, len, QUOTE_0_TERMINATED);
+       printstr_ex(tcp, addr, len,
+                   QUOTE_OMIT_TRAILING_0 | QUOTE_EXPECT_TRAILING_0);
 
        return true;
 }
@@ -196,10 +197,8 @@ decode_nla_meminfo(struct tcb *const tcp,
        unsigned int count = 0;
        print_array_ex(tcp, addr, nmemb, &mem, sizeof(mem),
                       tfetch_mem, print_uint32_array_member, &count,
-                      PAF_PRINT_INDICES | PAF_INDEX_XLAT_VALUE_INDEXED
-                       | XLAT_STYLE_FMT_U,
-                      ARRSZ_PAIR(netlink_sk_meminfo_indices) - 1,
-                      "SK_MEMINFO_???");
+                      PAF_PRINT_INDICES | XLAT_STYLE_FMT_U,
+                      netlink_sk_meminfo_indices, "SK_MEMINFO_???");
 
        return true;
 }
@@ -286,8 +285,7 @@ decode_nla_xval(struct tcb *const tcp,
                        data.val = opts->process_fn(data.val);
                if (opts->prefix)
                        tprints(opts->prefix);
-               printxval_dispatch_ex(opts->xlat, opts->xlat_size, data.val,
-                                     opts->dflt, opts->xt, opts->style);
+               printxval_ex(opts->xlat, data.val, opts->dflt, opts->style);
                if (opts->suffix)
                        tprints(opts->suffix);
        }
@@ -307,11 +305,9 @@ decode_nla_ether_proto(struct tcb *const tcp,
                       const unsigned int len,
                       const void *const opaque_data)
 {
-       const struct decode_nla_xlat_opts opts = {
+       static const struct decode_nla_xlat_opts opts = {
                .xlat = ethernet_protocols,
-               .xlat_size = ethernet_protocols_size,
                .dflt = "ETHER_P_???",
-               .xt = XT_SORTED,
                .prefix = "htons(",
                .suffix = ")",
                .size = 2,
@@ -327,10 +323,8 @@ decode_nla_ip_proto(struct tcb *const tcp,
                    const unsigned int len,
                    const void *const opaque_data)
 {
-       const struct decode_nla_xlat_opts opts = {
+       static const struct decode_nla_xlat_opts opts = {
                .xlat = inet_protocols,
-               .xlat_size = inet_protocols_size,
-               .xt = XT_SORTED,
                .dflt = "IPPROTO_???",
                .size = 1,
        };
@@ -338,6 +332,26 @@ decode_nla_ip_proto(struct tcb *const tcp,
        return decode_nla_xval(tcp, addr, len, &opts);
 }
 
+bool
+decode_nla_hwaddr(struct tcb *const tcp,
+               const kernel_ulong_t addr,
+               const unsigned int len,
+               const void *const opaque_data)
+{
+       if (len > MAX_ADDR_LEN)
+               return false;
+
+       uint8_t buf[len];
+       const uintptr_t arphrd = (uintptr_t) opaque_data;
+
+       if (!umoven_or_printaddr(tcp, addr, len, buf)) {
+               print_hwaddr("", buf, len, arphrd & NLA_HWADDR_FAMILY_OFFSET
+                               ? arphrd & ~NLA_HWADDR_FAMILY_OFFSET : -1U);
+       }
+
+       return true;
+}
+
 bool
 decode_nla_in_addr(struct tcb *const tcp,
                   const kernel_ulong_t addr,
@@ -390,10 +404,6 @@ decode_nla_flags(struct tcb *const tcp,
 
        const size_t bytes_offs = is_bigendian ? sizeof(data) - len : 0;
 
-       if (opts->xt == XT_INDEXED)
-               error_func_msg("indexed xlats are currently incompatible with "
-                              "printflags");
-
        if (!umoven_or_printaddr(tcp, addr, len, data.bytes + bytes_offs)) {
                if (opts->process_fn)
                        data.flags = opts->process_fn(data.flags);
index a11f2f1d2d332ca9cc6b550e00b68fcf3600003d..8b9b841fb38fc5a9ed4e17867c2a76241a609fb0 100644 (file)
--- a/nlattr.h
+++ b/nlattr.h
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -14,9 +14,7 @@
 
 struct decode_nla_xlat_opts {
        const struct xlat *xlat;
-       size_t xlat_size; /* is not needed for XT_NORMAL */
        const char *dflt;
-       enum xlat_type xt;
        enum xlat_style style;
        const char *prefix;
        const char *suffix;
@@ -89,4 +87,34 @@ DECL_NLA(rt_class);
 DECL_NLA(rt_proto);
 DECL_NLA(tc_stats);
 
+# define NLA_HWADDR_FAMILY_OFFSET 1024
+
+/**
+ * Print hardware (low-level, L2) address.
+ * @param opaque_data Interpreted as integer value, not pointer
+ */
+DECL_NLA(hwaddr);
+
+/** Non-standard decoder that accepts ARPHRD_* value as an argument */
+static inline bool
+decode_nla_hwaddr_family(struct tcb *const tcp,
+               const kernel_ulong_t addr,
+               const unsigned int len,
+               const unsigned int arphrd)
+{
+       return decode_nla_hwaddr(tcp, addr, len, (void *) (uintptr_t) (
+                                arphrd > NLA_HWADDR_FAMILY_OFFSET ? 0
+                                       : NLA_HWADDR_FAMILY_OFFSET | arphrd));
+}
+
+/** decode_nla_hwaddr wrapper that ignores opaque_data */
+static inline bool
+decode_nla_hwaddr_nofamily(struct tcb *const tcp,
+               const kernel_ulong_t addr,
+               const unsigned int len,
+               const void *const opaque_data)
+{
+       return decode_nla_hwaddr(tcp, addr, len, NULL);
+}
+
 #endif /* !STRACE_NLATTR_H */
diff --git a/numa.c b/numa.c
index 0029dfb3a3fefda441eb34d306560bee833fe88c..5cd5fe12e6a39ad72105850238c5a9ad5d4a132b 100644 (file)
--- a/numa.c
+++ b/numa.c
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2003-2007 Ulrich Drepper <drepper@redhat.com>
  * Copyright (c) 2005-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2019 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -44,7 +44,8 @@ print_nodemask(struct tcb *const tcp, const kernel_ulong_t addr,
 
 SYS_FUNC(migrate_pages)
 {
-       tprintf("%d, %" PRI_klu ", ", (int) tcp->u_arg[0], tcp->u_arg[1]);
+       printpid(tcp, tcp->u_arg[0], PT_TGID);
+       tprintf(", %" PRI_klu ", ", tcp->u_arg[1]);
        print_nodemask(tcp, tcp->u_arg[2], tcp->u_arg[1]);
        tprints(", ");
        print_nodemask(tcp, tcp->u_arg[3], tcp->u_arg[1]);
@@ -52,25 +53,62 @@ SYS_FUNC(migrate_pages)
        return RVAL_DECODED;
 }
 
-#include "xlat/policies.h"
-#include "xlat/mbindflags.h"
+#include "xlat/mpol_modes.h"
+#include "xlat/mpol_mode_flags.h"
+#include "xlat/mbind_flags.h"
+
+static void
+print_mode(struct tcb *const tcp, const kernel_ulong_t mode_arg)
+{
+       const kernel_ulong_t flags_mask =
+               MPOL_F_STATIC_NODES | MPOL_F_RELATIVE_NODES;
+       const kernel_ulong_t mode = mode_arg & ~flags_mask;
+       const unsigned int flags = mode_arg & flags_mask;
+
+       if (!flags) {
+               printxval64(mpol_modes, mode, "MPOL_???");
+               return;
+       }
+
+       const char *mode_str = xlookup(mpol_modes, mode);
+       if (!mode_str) {
+               printflags64(mpol_mode_flags, mode_arg, "MPOL_???");
+               return;
+       }
+
+       if (xlat_verbose(xlat_verbosity) != XLAT_STYLE_ABBREV)
+               tprintf("%#" PRI_klx, mode_arg);
+
+       if (xlat_verbose(xlat_verbosity) == XLAT_STYLE_RAW)
+               return;
+
+       if (xlat_verbose(xlat_verbosity) == XLAT_STYLE_VERBOSE)
+               tprints(" /* ");
+
+       tprints(mode_str);
+       tprints("|");
+       printflags_ex(flags, NULL, XLAT_STYLE_ABBREV, mpol_mode_flags, NULL);
+
+       if (xlat_verbose(xlat_verbosity) == XLAT_STYLE_VERBOSE)
+               tprints(" */");
+}
 
 SYS_FUNC(mbind)
 {
        printaddr(tcp->u_arg[0]);
        tprintf(", %" PRI_klu ", ", tcp->u_arg[1]);
-       printxval64(policies, tcp->u_arg[2], "MPOL_???");
+       print_mode(tcp, tcp->u_arg[2]);
        tprints(", ");
        print_nodemask(tcp, tcp->u_arg[3], tcp->u_arg[4]);
        tprintf(", %" PRI_klu ", ", tcp->u_arg[4]);
-       printflags(mbindflags, tcp->u_arg[5], "MPOL_???");
+       printflags(mbind_flags, tcp->u_arg[5], "MPOL_???");
 
        return RVAL_DECODED;
 }
 
 SYS_FUNC(set_mempolicy)
 {
-       printxval(policies, tcp->u_arg[0], "MPOL_???");
+       print_mode(tcp, (unsigned int) tcp->u_arg[0]);
        tprints(", ");
        print_nodemask(tcp, tcp->u_arg[1], tcp->u_arg[2]);
        tprintf(", %" PRI_klu, tcp->u_arg[2]);
@@ -78,7 +116,7 @@ SYS_FUNC(set_mempolicy)
        return RVAL_DECODED;
 }
 
-#include "xlat/mempolicyflags.h"
+#include "xlat/get_mempolicy_flags.h"
 
 SYS_FUNC(get_mempolicy)
 {
@@ -86,7 +124,7 @@ SYS_FUNC(get_mempolicy)
                int pol;
                if (!umove_or_printaddr(tcp, tcp->u_arg[0], &pol)) {
                        tprints("[");
-                       printxval(policies, pol, "MPOL_???");
+                       printxval(mpol_modes, pol, "MPOL_???");
                        tprints("]");
                }
                tprints(", ");
@@ -94,7 +132,7 @@ SYS_FUNC(get_mempolicy)
                tprintf(", %" PRI_klu ", ", tcp->u_arg[2]);
                printaddr(tcp->u_arg[3]);
                tprints(", ");
-               printflags64(mempolicyflags, tcp->u_arg[4], "MPOL_???");
+               printflags64(get_mempolicy_flags, tcp->u_arg[4], "MPOL_???");
        }
        return 0;
 }
@@ -121,21 +159,8 @@ static bool
 print_status(struct tcb *tcp, void *elem_buf, size_t elem_size, void *data)
 {
        const int status = *(int *) elem_buf;
-       bool is_errno = (status < 0) && ((unsigned) -status < nerrnos);
-
-       if (!is_errno || xlat_verbose(xlat_verbosity) != XLAT_STYLE_ABBREV)
-               tprintf("%d", status);
 
-       if (!is_errno || xlat_verbose(xlat_verbosity) == XLAT_STYLE_RAW)
-               return true;
-
-       if (xlat_verbose(xlat_verbosity) == XLAT_STYLE_VERBOSE)
-               tprints(" /* ");
-
-       tprintf("-%s", errnoent[-status]);
-
-       if (xlat_verbose(xlat_verbosity) == XLAT_STYLE_VERBOSE)
-               tprints(" */");
+       print_err(status, true);
 
        return true;
 }
@@ -146,7 +171,8 @@ SYS_FUNC(move_pages)
        kernel_ulong_t buf;
 
        if (entering(tcp)) {
-               tprintf("%d, %" PRI_klu ", ", (int) tcp->u_arg[0], npages);
+               printpid(tcp, tcp->u_arg[0], PT_TGID);
+               tprintf(", %" PRI_klu ", ", npages);
                print_array(tcp, tcp->u_arg[2], npages, &buf, current_wordsize,
                            tfetch_mem, print_addr, 0);
                tprints(", ");
index 4092ffdac91cf62d4011426dd1a155666dc9bd1d..3f9e5fa733354b2b46079ac87dabbd82fda74cb4 100644 (file)
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -12,7 +13,9 @@
 #include <stdbool.h>
 #include <stdlib.h>
 #include <string.h>
+#include "defs.h"
 #include "number_set.h"
+#include "static_assert.h"
 #include "xmalloc.h"
 
 typedef unsigned int number_slot_t;
@@ -47,6 +50,14 @@ reallocate_number_set(struct number_set *const set, const unsigned int new_nslot
        set->nslots = new_nslots;
 }
 
+static unsigned int
+get_number_setbit(const struct number_set *const set)
+{
+       static_assert(sizeof(number_slot_t) == sizeof(uint32_t),
+                     "number_slot_t is not 32-bit long");
+       return popcount32(set->vec, set->nslots);
+}
+
 bool
 number_set_array_is_empty(const struct number_set *const set,
                          const unsigned int idx)
@@ -69,6 +80,25 @@ is_number_in_set_array(const unsigned int number, const struct number_set *const
                && number_isset(number, set[idx].vec)) ^ set[idx].not;
 }
 
+bool
+is_complete_set(const struct number_set *const set, const unsigned int max_numbers)
+{
+       return set && ((set->not && !set->nslots) ||
+                      (get_number_setbit(set) == max_numbers));
+}
+
+bool
+is_complete_set_array(const struct number_set *const set,
+                     const unsigned int *const max_numbers,
+                     const unsigned int nmemb)
+{
+       for (unsigned int i = 0; i < nmemb; ++i) {
+               if (!is_complete_set(&set[i], max_numbers[i]))
+                       return false;
+       }
+       return true;
+}
+
 void
 add_number_to_set(const unsigned int number, struct number_set *const set)
 {
index 77dc3a9c02609f067c9709cb57e937609b2277e2..4ceebaa084aae62ae264af62a7f24e83bcd3b7ee 100644 (file)
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -21,6 +22,13 @@ is_number_in_set(unsigned int number, const struct number_set *);
 extern bool
 is_number_in_set_array(unsigned int number, const struct number_set *, unsigned int idx);
 
+extern bool
+is_complete_set(const struct number_set *, unsigned int max_numbers);
+
+extern bool
+is_complete_set_array(const struct number_set *, const unsigned int *,
+                     const unsigned int nmemb);
+
 extern void
 add_number_to_set(unsigned int number, struct number_set *);
 
@@ -39,8 +47,48 @@ alloc_number_set_array(unsigned int nmemb) ATTRIBUTE_MALLOC;
 extern void
 free_number_set_array(struct number_set *, unsigned int nmemb);
 
+enum status_t {
+       STATUS_SUCCESSFUL,
+       STATUS_FAILED,
+       STATUS_UNFINISHED,
+       STATUS_UNAVAILABLE,
+       STATUS_DETACHED,
+       NUMBER_OF_STATUSES
+};
+
+enum quiet_bits {
+       /** Do not print messages on tracee attach/detach. */
+       QUIET_ATTACH,
+       /** Do not print messages on tracee exits. */
+       QUIET_EXIT,
+       /** Do not print messages about path tracing path resolution. */
+       QUIET_PATH_RESOLVE,
+       /** Do not print messages on personality change. */
+       QUIET_PERSONALITY,
+       /** Do not print messages on superseding execve. */
+       QUIET_THREAD_EXECVE,
+
+       NUM_QUIET_BITS
+};
+
+enum decode_fd_bits {
+       DECODE_FD_PATH,
+       DECODE_FD_SOCKET,
+       DECODE_FD_DEV,
+       DECODE_FD_PIDFD,
+
+       NUM_DECODE_FD_BITS
+};
+
+extern bool quiet_set_updated;
+extern bool decode_fd_set_updated;
+
 extern struct number_set *read_set;
 extern struct number_set *write_set;
 extern struct number_set *signal_set;
+extern struct number_set *status_set;
+extern struct number_set *quiet_set;
+extern struct number_set *decode_fd_set;
+extern struct number_set *trace_set;
 
 #endif /* !STRACE_NUMBER_SET_H */
diff --git a/open.c b/open.c
index 153c93a231f5feeb98eeda956f566f48625bae17..eb6af08835e393702586344bf84026076e2b79cf 100644 (file)
--- a/open.c
+++ b/open.c
@@ -7,7 +7,7 @@
  * Copyright (c) 2006-2007 Ulrich Drepper <drepper@redhat.com>
  * Copyright (c) 2009-2013 Denys Vlasenko <dvlasenk@redhat.com>
  * Copyright (c) 2005-2015 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2014-2018 The strace developers.
+ * Copyright (c) 2014-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
 
 #include <asm/fcntl.h>
 
+#include "print_fields.h"
+
+#include "types/openat2.h"
+
 /* some libcs are guilty of messing up with O_ACCMODE */
 #undef O_ACCMODE
 #define O_ACCMODE 03
@@ -30,6 +34,7 @@
 
 #include "xlat/open_access_modes.h"
 #include "xlat/open_mode_flags.h"
+#include "xlat/open_resolve_flags.h"
 
 #ifndef AT_FDCWD
 # define AT_FDCWD      -100
@@ -45,22 +50,19 @@ print_dirfd(struct tcb *tcp, int fd)
                print_xlat_d(AT_FDCWD);
        else
                printfd(tcp, fd);
-
-       tprints(", ");
 }
 
 /*
  * low bits of the open(2) flags define access mode,
  * other bits are real flags.
  */
-const char *
-sprint_open_modes(unsigned int flags)
+static const char *
+sprint_open_modes64(uint64_t flags)
 {
-       static char outstr[(1 + ARRAY_SIZE(open_mode_flags)) * sizeof("O_LARGEFILE")];
+       static char outstr[sizeof("flags O_ACCMODE")];
        char *p;
        char sep;
        const char *str;
-       const struct xlat *x;
 
        sep = ' ';
        p = stpcpy(outstr, "flags");
@@ -73,28 +75,28 @@ sprint_open_modes(unsigned int flags)
                        return outstr;
                sep = '|';
        }
+       *p = '\0';
 
-       for (x = open_mode_flags; x->str; x++) {
-               if ((flags & x->val) == x->val) {
-                       *p++ = sep;
-                       p = stpcpy(p, x->str);
-                       flags &= ~x->val;
-                       if (!flags)
-                               return outstr;
-                       sep = '|';
-               }
-       }
-       /* flags is still nonzero */
-       *p++ = sep;
-       p = xappendstr(outstr, p, "%#x", flags);
-       return outstr;
+       return sprintflags_ex(outstr, open_mode_flags, flags, sep,
+                             XLAT_STYLE_ABBREV) ?: outstr;
 }
 
+const char *
+sprint_open_modes(unsigned int flags)
+{
+       return sprint_open_modes64(flags);
+}
+
+static void
+tprint_open_modes64(uint64_t flags)
+{
+       print_xlat_ex(flags, sprint_open_modes64(flags) + sizeof("flags"),
+                     XLAT_STYLE_DEFAULT);
+}
 void
 tprint_open_modes(unsigned int flags)
 {
-       print_xlat_ex(flags, sprint_open_modes(flags) + sizeof("flags"),
-                     XLAT_STYLE_DEFAULT);
+       tprint_open_modes64(flags);
 }
 
 static int
@@ -118,12 +120,54 @@ SYS_FUNC(open)
        return decode_open(tcp, 0);
 }
 
+static void
+print_open_how(struct tcb *tcp, kernel_ulong_t addr, kernel_ulong_t size)
+{
+       enum { OPEN_HOW_MIN_SIZE = 24 };
+
+       struct_open_how how;
+
+       if (size < OPEN_HOW_MIN_SIZE) {
+               printaddr(addr);
+               return;
+       }
+       if (umoven_or_printaddr(tcp, addr, MIN(size, sizeof(how)), &how))
+               return;
+
+       tprints("{flags=");
+       tprint_open_modes64(how.flags);
+       if ((how.flags & (O_CREAT| __O_TMPFILE)) || how.mode)
+               PRINT_FIELD_NUMERIC_UMODE_T(", ", how, mode);
+       PRINT_FIELD_FLAGS(", ", how, resolve, open_resolve_flags,
+                         "RESOLVE_???");
+
+       if (size > sizeof(how)) {
+               print_nonzero_bytes(tcp, ", ", addr, sizeof(how),
+                                   MIN(size, get_pagesize()), QUOTE_FORCE_HEX);
+       }
+
+       tprints("}");
+}
+
 SYS_FUNC(openat)
 {
        print_dirfd(tcp, tcp->u_arg[0]);
+       tprints(", ");
        return decode_open(tcp, 1);
 }
 
+SYS_FUNC(openat2)
+{
+       print_dirfd(tcp, tcp->u_arg[0]);
+       tprints(", ");
+       printpath(tcp, tcp->u_arg[1]);
+       tprints(", ");
+       print_open_how(tcp, tcp->u_arg[2], tcp->u_arg[3]);
+       tprintf(", %" PRI_klu, tcp->u_arg[3]);
+
+       return RVAL_DECODED | RVAL_FD;
+}
+
 SYS_FUNC(creat)
 {
        printpath(tcp, tcp->u_arg[0]);
diff --git a/open_tree.c b/open_tree.c
new file mode 100644 (file)
index 0000000..15adec5
--- /dev/null
@@ -0,0 +1,23 @@
+/*
+ * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#include "defs.h"
+#include <fcntl.h>
+#ifdef HAVE_LINUX_MOUNT_H
+# include <linux/mount.h>
+#endif
+#include "xlat/open_tree_flags.h"
+
+SYS_FUNC(open_tree)
+{
+       print_dirfd(tcp, tcp->u_arg[0]);
+       tprints(", ");
+       printpath(tcp, tcp->u_arg[1]);
+       tprints(", ");
+       printflags(open_tree_flags, tcp->u_arg[2], "OPEN_TREE_???");
+       return RVAL_DECODED | RVAL_FD;
+}
index 142e1b65933e77734cae7dedbef79b1836ce69f8..7c184151798342c0bf2cfd9bc23620eb6ade0ca1 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2011 Comtrol Corp.
- * Copyright (c) 2011-2019 The strace developers.
+ * Copyright (c) 2011-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -11,6 +11,7 @@
 #include <limits.h>
 #include <poll.h>
 
+#include "number_set.h"
 #include "syscall.h"
 #include "xstring.h"
 
@@ -75,10 +76,10 @@ storepath(const char *path, struct path_set *set)
 }
 
 /*
- * Get path associated with fd.
+ * Get path associated with fd of a process with pid.
  */
 int
-getfdpath(struct tcb *tcp, int fd, char *buf, unsigned bufsize)
+getfdpath_pid(pid_t pid, int fd, char *buf, unsigned bufsize)
 {
        char linkpath[sizeof("/proc/%u/fd/%u") + 2 * sizeof(int)*3];
        ssize_t n;
@@ -86,7 +87,12 @@ getfdpath(struct tcb *tcp, int fd, char *buf, unsigned bufsize)
        if (fd < 0)
                return -1;
 
-       xsprintf(linkpath, "/proc/%u/fd/%u", tcp->pid, fd);
+       int proc_pid = 0;
+       translate_pid(NULL, pid, PT_TID, &proc_pid);
+       if (!proc_pid)
+               return -1;
+
+       xsprintf(linkpath, "/proc/%u/fd/%u", proc_pid, fd);
        n = readlink(linkpath, buf, bufsize - 1);
        /*
         * NB: if buf is too small, readlink doesn't fail,
@@ -119,7 +125,21 @@ pathtrace_select_set(const char *path, struct path_set *set)
                return;
        }
 
-       error_msg("Requested path '%s' resolved into '%s'", path, rpath);
+       if (!is_number_in_set(QUIET_PATH_RESOLVE, quiet_set)) {
+               char *path_quoted = xmalloc(strlen(path) * 4 + 4);
+               char *rpath_quoted = xmalloc(strlen(rpath) * 4 + 4);
+
+               string_quote(path, path_quoted, strlen(path) + 1,
+                            QUOTE_0_TERMINATED, NULL);
+               string_quote(rpath, rpath_quoted, strlen(rpath) + 1,
+                            QUOTE_0_TERMINATED, NULL);
+
+               error_msg("Requested path %s resolved into %s",
+                         path_quoted, rpath_quoted);
+
+               free(path_quoted);
+               free(rpath_quoted);
+       }
        storepath(rpath, set);
 }
 
@@ -178,6 +198,7 @@ pathtrace_match_set(struct tcb *tcp, struct path_set *set)
         */
 
        switch (s->sen) {
+       case SEN_close_range:
        case SEN_dup2:
        case SEN_dup3:
        case SEN_kexec_file_load:
@@ -190,8 +211,10 @@ pathtrace_match_set(struct tcb *tcp, struct path_set *set)
 
        case SEN_execveat:
        case SEN_faccessat:
+       case SEN_faccessat2:
        case SEN_fchmodat:
        case SEN_fchownat:
+       case SEN_fspick:
        case SEN_fstatat64:
        case SEN_futimesat:
        case SEN_inotify_add_watch:
@@ -199,7 +222,9 @@ pathtrace_match_set(struct tcb *tcp, struct path_set *set)
        case SEN_mknodat:
        case SEN_name_to_handle_at:
        case SEN_newfstatat:
+       case SEN_open_tree:
        case SEN_openat:
+       case SEN_openat2:
        case SEN_readlinkat:
        case SEN_statx:
        case SEN_unlinkat:
@@ -222,6 +247,7 @@ pathtrace_match_set(struct tcb *tcp, struct path_set *set)
                return upathmatch(tcp, tcp->u_arg[1], set);
 
        case SEN_linkat:
+       case SEN_move_mount:
        case SEN_renameat2:
        case SEN_renameat:
                /* fd, path, fd, path */
@@ -316,6 +342,21 @@ pathtrace_match_set(struct tcb *tcp, struct path_set *set)
                return false;
        }
 
+       case SEN_fsconfig: {
+               /* x, x, x, maybe path, maybe fd */
+               const unsigned int cmd = tcp->u_arg[1];
+               switch (cmd) {
+                       case 3 /* FSCONFIG_SET_PATH */:
+                       case 4 /* FSCONFIG_SET_PATH_EMPTY */:
+                               return fdmatch(tcp, tcp->u_arg[4], set) ||
+                                       upathmatch(tcp, tcp->u_arg[3], set);
+                       case 5 /* FSCONFIG_SET_FD */:
+                               return fdmatch(tcp, tcp->u_arg[4], set);
+               }
+
+               return false;
+       }
+
        case SEN_accept4:
        case SEN_accept:
        case SEN_bpf:
@@ -324,6 +365,8 @@ pathtrace_match_set(struct tcb *tcp, struct path_set *set)
        case SEN_eventfd2:
        case SEN_eventfd:
        case SEN_fanotify_init:
+       case SEN_fsmount:
+       case SEN_fsopen:
        case SEN_inotify_init:
        case SEN_inotify_init1:
        case SEN_io_uring_enter:
@@ -338,6 +381,7 @@ pathtrace_match_set(struct tcb *tcp, struct path_set *set)
        case SEN_mq_timedsend_time32:
        case SEN_mq_timedsend_time64:
        case SEN_perf_event_open:
+       case SEN_pidfd_open:
        case SEN_pipe:
        case SEN_pipe2:
        case SEN_printargs:
diff --git a/perf.c b/perf.c
index 1c45f8d1f296cb5f95cd0fe0e5a9341946fbf0a9..b65ec1e5d5a978a290363dac99ffc0c50001f362 100644 (file)
--- a/perf.c
+++ b/perf.c
@@ -2,7 +2,7 @@
  * Copyright (c) 2013 Ben Noordhuis <info@bnoordhuis.nl>
  * Copyright (c) 2013-2015 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2015-2019 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -371,8 +371,16 @@ print_perf_event_attr(struct tcb *const tcp, const kernel_ulong_t addr)
        _PERF_CHECK_FIELD(sample_max_stack);
        PRINT_FIELD_U(", ", *attr, sample_max_stack);
 
-       /* _PERF_CHECK_FIELD(__reserved_2);
-       PRINT_FIELD_U(", ", *attr, __reserved2); */
+       _PERF_CHECK_FIELD(__reserved_2);
+       if (attr->__reserved_2)
+               tprintf(" /* bytes 110..111: %#hx */", attr->__reserved_2);
+
+       _PERF_CHECK_FIELD(aux_sample_size);
+       PRINT_FIELD_U(", ", *attr, aux_sample_size);
+
+       /* _PERF_CHECK_FIELD(__reserved_3);
+       if (attr->__reserved_3)
+               PRINT_FIELD_X(", ", *attr, __reserved_3); */
 
 print_perf_event_attr_out:
        if ((attr->size && (attr->size > size)) ||
index b9489a65c5c5cb55c51da7e3e1750a37dc5ced53..69f53b89d56cd48573286b294867fa7a1207bf97 100644 (file)
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2016-2018 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -76,6 +77,9 @@ struct perf_event_attr {
        uint16_t sample_max_stack;
        uint16_t __reserved_2;
        /* End of ver 5 - 112 bytes */
+       uint32_t aux_sample_size;
+       uint32_t __reserved_3;
+       /* End of ver 6 - 120 bytes */
 };
 
 struct perf_event_query_bpf {
index 427aa9eb997d2dcf781c5253a27e341972f0c79e..cad5fdb97f7ceebd376f93c7f1d8f66a7b2047f9 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -90,7 +90,7 @@ MPERS_PRINTER_DECL(int, perf_ioctl,
 
        case PERF_EVENT_IOC_SET_OUTPUT:
        case PERF_EVENT_IOC_SET_BPF:
-               tprintf(", ");
+               tprints(", ");
                printfd(tcp, (int) arg);
 
                return RVAL_IOCTL_DECODED;
diff --git a/pidfd_getfd.c b/pidfd_getfd.c
new file mode 100644 (file)
index 0000000..dc263e2
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * pidfd_getfd() syscall decoder.
+ *
+ * Copyright (c) 2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#include "defs.h"
+#include "number_set.h"
+
+SYS_FUNC(pidfd_getfd)
+{
+       int pidfd = (int) tcp->u_arg[0];
+       int targetfd = (int) tcp->u_arg[1];
+       unsigned int flags = (unsigned int) tcp->u_arg[2];
+
+       printfd(tcp, pidfd);
+       tprints(", ");
+
+       pid_t target_pid = pidfd_get_pid(tcp->pid, pidfd);
+       if (target_pid > 0)
+               printfd_pid(tcp, target_pid, targetfd);
+       else
+               tprintf("%d", targetfd);
+
+       tprintf(", %#x", flags);
+
+       return RVAL_DECODED | RVAL_FD;
+}
diff --git a/pidfd_open.c b/pidfd_open.c
new file mode 100644 (file)
index 0000000..11d8061
--- /dev/null
@@ -0,0 +1,20 @@
+/*
+ * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2019-2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#include "defs.h"
+
+SYS_FUNC(pidfd_open)
+{
+       /* pid_t pid */
+       printpid(tcp, tcp->u_arg[0], PT_TGID);
+
+       /* unsigned int flags */
+       tprintf(", %#x", (unsigned int) tcp->u_arg[1]);
+
+       return RVAL_DECODED | RVAL_FD;
+}
diff --git a/pidns.c b/pidns.c
new file mode 100644 (file)
index 0000000..94b16fa
--- /dev/null
+++ b/pidns.c
@@ -0,0 +1,608 @@
+/*
+ * Copyright (c) 2020 Ákos Uzonyi <uzonyi.akos@gmail.com>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#include "defs.h"
+
+
+#include <dirent.h>
+#include <fcntl.h>
+#include <stdint.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <asm/unistd.h>
+
+#include <sys/ioctl.h>
+#include <sys/param.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include "largefile_wrappers.h"
+#include "trie.h"
+#include "nsfs.h"
+#include "xmalloc.h"
+#include "xstring.h"
+
+/**
+ * Key:   PID NS ID
+ * Value: a btree:
+ *           Key:   a process PID in NS
+ *           Value: the process's PID as present in /proc
+ */
+static struct trie *ns_pid_to_proc_pid[PT_COUNT];
+
+/**
+ * Key:   Proc PID
+ * Value: struct proc_data
+ */
+static struct trie *proc_data_cache;
+
+static bool ns_get_parent_enotty = false;
+
+static const char tid_str[]  = "NSpid:\t";
+static const char tgid_str[] = "NStgid:\t";
+static const char pgid_str[] = "NSpgid:\t";
+static const char sid_str[]  = "NSsid:\t";
+
+static const struct {
+       const char *str;
+       size_t size;
+} id_strs[PT_COUNT] = {
+       [PT_TID] =  { tid_str,  sizeof(tid_str)  - 1 },
+       [PT_TGID] = { tgid_str, sizeof(tgid_str) - 1 },
+       [PT_PGID] = { pgid_str, sizeof(pgid_str) - 1 },
+       [PT_SID] =  { sid_str,  sizeof(sid_str)  - 1 },
+};
+
+
+/**
+ * Limit on PID NS hierarchy depth, imposed since Linux 3.7. NS traversal
+ * is not possible before Linux 4.9, so we consider this limit pretty universal.
+ */
+#define MAX_NS_DEPTH 32
+
+static const size_t ns_id_size = sizeof(unsigned int) * 8;
+static const uint8_t ptr_sz_lg = (sizeof(void *) == 8 ? 6 : 5);
+
+static int pid_max;
+static uint8_t pid_max_size, pid_max_size_lg;
+
+struct proc_data {
+       int proc_pid;
+       int ns_count;
+       unsigned int ns_hierarchy[MAX_NS_DEPTH];
+       int id_count[PT_COUNT];
+       int id_hierarchy[PT_COUNT][MAX_NS_DEPTH];
+};
+
+/**
+ * Helper function for creating a trie.
+ *
+ * For node_key_bits and data_block_key_bits 4 is used (so trie height is 32 / 4
+ * = 8, and node sizes are 8 byte * 2^4 = 128 bytes), which seems to be a good
+ * tradeoff between memory usage and lookup time. It should not be too large,
+ * since there can be large holes between PIDs, and it would be just a waste of
+ * memory having large nodes with lot of NULL pointers in them.
+ */
+static struct trie *
+create_trie_4(uint8_t key_size, uint8_t item_size_lg, uint64_t empty_value)
+{
+       struct trie *t = trie_create(key_size, item_size_lg, 4, 4, empty_value);
+       if (!t)
+               error_msg_and_die("creating trie failed");
+
+       return t;
+}
+
+void
+pidns_init(void)
+{
+       if (proc_data_cache)
+               return;
+
+       pid_max = INT_MAX;
+       if (read_int_from_file("/proc/sys/kernel/pid_max", &pid_max) < 0)
+               debug_func_perror_msg("reading /proc/sys/kernel/pid_max");
+       pid_max_size = ilog2_32(pid_max - 1) + 1;
+       pid_max_size_lg = ilog2_32(pid_max_size - 1) + 1;
+
+       for (int i = 0; i < PT_COUNT; i++)
+               ns_pid_to_proc_pid[i] = create_trie_4(ns_id_size, ptr_sz_lg, 0);
+
+       proc_data_cache = create_trie_4(pid_max_size, ptr_sz_lg, 0);
+}
+
+static void
+put_proc_pid(unsigned int ns, int ns_pid, enum pid_type type, int proc_pid)
+{
+       struct trie *b = (struct trie *) (uintptr_t) trie_get(ns_pid_to_proc_pid[type], ns);
+       if (!b) {
+               b = create_trie_4(pid_max_size, pid_max_size_lg, 0);
+               trie_set(ns_pid_to_proc_pid[type], ns, (uint64_t) (uintptr_t) b);
+       }
+       trie_set(b, ns_pid, proc_pid);
+}
+
+static int
+get_cached_proc_pid(unsigned int ns, int ns_pid, enum pid_type type)
+{
+       struct trie *b = (struct trie *) (uintptr_t)
+               trie_get(ns_pid_to_proc_pid[type], ns);
+       if (!b)
+               return 0;
+
+       return trie_get(b, ns_pid);
+}
+
+/**
+ * Helper function, converts pid to string, or to "self" for pid == 0.
+ * Uses static buffer for operation.
+ */
+static const char *
+pid_to_str(pid_t pid)
+{
+       if (!pid)
+               return "self";
+
+       static char buf[sizeof("-2147483648")];
+       xsprintf(buf, "%d", pid);
+       return buf;
+}
+
+/**
+ * Returns a list of PID NS IDs for the specified PID.
+ *
+ * @param proc_pid PID (as present in /proc) to get information for.
+ * @param ns_buf   Pointer to buffer that is able to contain at least
+ *                 ns_buf_size items.
+ * @return         Amount of NS in list. 0 indicates error.
+ */
+static size_t
+get_ns_hierarchy(int proc_pid, unsigned int *ns_buf, size_t ns_buf_size)
+{
+       char path[PATH_MAX + 1];
+       xsprintf(path, "/proc/%s/ns/pid", pid_to_str(proc_pid));
+
+       int fd = open_file(path, O_RDONLY);
+       if (fd < 0)
+               return 0;
+
+       size_t n = 0;
+       while (n < ns_buf_size) {
+               strace_stat_t st;
+               if (fstat_fd(fd, &st))
+                       break;
+
+               ns_buf[n++] = st.st_ino;
+               if (n >= ns_buf_size)
+                       break;
+
+               if (ns_get_parent_enotty)
+                       break;
+
+               int parent_fd = ioctl(fd, NS_GET_PARENT);
+               if (parent_fd < 0) {
+                       switch (errno) {
+                       case EPERM:
+                               break;
+
+                       case ENOTTY:
+                               ns_get_parent_enotty = true;
+                               error_msg("NS_* ioctl commands are not "
+                                         "supported by the kernel");
+                               break;
+
+                       default:
+                               perror_func_msg("ioctl(NS_GET_PARENT)");
+                               break;
+                       }
+
+                       break;
+               }
+
+               close(fd);
+               fd = parent_fd;
+       }
+
+       close(fd);
+
+       return n;
+}
+
+/**
+ * Get list of IDs present in NS* proc status record. IDs are placed as they are
+ * stored in /proc (from top to bottom of NS hierarchy).
+ *
+ * @param proc_pid    PID (as present in /proc) to get information for.
+ * @param id_buf      Pointer to buffer that is able to contain at least
+ *                    MAX_NS_DEPTH items. Can be NULL.
+ * @param type        Type of ID requested.
+ * @return            Number of items stored in id_list. 0 indicates error.
+ */
+static size_t
+get_id_list(int proc_pid, int *id_buf, enum pid_type type)
+{
+       const char *ns_str = id_strs[type].str;
+       size_t ns_str_size = id_strs[type].size;
+
+       size_t n = 0;
+
+       char status_path[PATH_MAX + 1];
+       xsprintf(status_path, "/proc/%s/status", pid_to_str(proc_pid));
+       FILE *f = fopen_stream(status_path, "r");
+       if (!f)
+               return 0;
+
+       char *line = NULL;
+       size_t linesize = 0;
+       char *p = NULL;
+
+       while (getline(&line, &linesize, f) > 0) {
+               if (strncmp(line, ns_str, ns_str_size) == 0) {
+                       p = line + ns_str_size;
+                       break;
+               }
+       }
+
+       while (p) {
+               errno = 0;
+               long id = strtol(p, NULL, 10);
+
+               if (id < 0 || id > INT_MAX || errno) {
+                       perror_func_msg("converting pid (%ld) to int", id);
+                       break;
+               }
+
+               if (id_buf)
+                       id_buf[n] = (int) id;
+
+               n++;
+               strsep(&p, "\t");
+       }
+
+       free(line);
+       fclose(f);
+
+       return n;
+}
+
+/**
+ * Returns whether the /proc filesystem's PID namespace is the same as strace's.
+ */
+static bool
+is_proc_ours(void)
+{
+       static int cached_val = -1;
+
+       if (cached_val < 0)
+               cached_val = get_id_list(0, NULL, PT_TID) <= 1;
+
+       return cached_val;
+}
+
+/**
+ * Returns the PID namespace of the tracee
+ */
+static unsigned int
+get_ns(struct tcb *tcp)
+{
+       if (!tcp->pid_ns) {
+               int proc_pid = 0;
+               translate_pid(NULL, tcp->pid, PT_TID, &proc_pid);
+
+               if (proc_pid)
+                       get_ns_hierarchy(proc_pid, &tcp->pid_ns, 1);
+       }
+
+       return tcp->pid_ns;
+}
+
+/**
+ * Returns the PID namespace of strace
+ */
+static unsigned int
+get_our_ns(void)
+{
+       static unsigned int our_ns = 0;
+       static bool our_ns_initialised = false;
+
+       if (!our_ns_initialised) {
+               get_ns_hierarchy(0, &our_ns, 1);
+               our_ns_initialised = true;
+       }
+
+       return our_ns;
+}
+
+/**
+ * Returns the cached proc_data struct associated with proc_pid.
+ * If none found, allocates a new proc_data.
+ */
+static struct proc_data *
+get_or_create_proc_data(int proc_pid)
+{
+       struct proc_data *pd = (struct proc_data *) (uintptr_t)
+               trie_get(proc_data_cache, proc_pid);
+
+       if (!pd) {
+               pd = calloc(1, sizeof(*pd));
+               if (!pd)
+                       return NULL;
+
+               pd->proc_pid = proc_pid;
+               trie_set(proc_data_cache, proc_pid, (uint64_t) (uintptr_t) pd);
+       }
+
+       return pd;
+}
+
+/**
+ * Updates the proc_data from /proc
+ * If the process does not exists, returns false, and frees the proc_data
+ */
+static bool
+update_proc_data(struct proc_data *pd, enum pid_type type)
+{
+       pd->ns_count = get_ns_hierarchy(pd->proc_pid,
+               pd->ns_hierarchy, MAX_NS_DEPTH);
+       if (!pd->ns_count)
+               goto fail;
+
+       pd->id_count[type] = get_id_list(pd->proc_pid,
+               pd->id_hierarchy[type], type);
+       if (!pd->id_count[type])
+               goto fail;
+
+       return true;
+
+fail:
+       trie_set(proc_data_cache, pd->proc_pid, (uint64_t) (uintptr_t) NULL);
+       free(pd);
+       return false;
+}
+
+/**
+ * Paramters for id translation
+ */
+struct translate_id_params {
+       /* The result (output) */
+       int result_id;
+       /* The proc data of the process (output) */
+       struct proc_data *pd;
+
+       /* The namespace to be translated from */
+       unsigned int from_ns;
+       /* The id to be translated */
+       int from_id;
+       /* The type of the id */
+       enum pid_type type;
+};
+
+/**
+ * Translates an id to our namespace, given the proc_pid of the process,
+ * by reading files in /proc.
+ *
+ * @param tip      The parameters
+ * @param proc_pid The proc pid of the process.
+ *                 If 0, use the cached values in tip->pd.
+ */
+static void
+translate_id_proc_pid(struct translate_id_params *tip, int proc_pid)
+{
+       struct proc_data *pd = proc_pid ?
+               get_or_create_proc_data(proc_pid) :
+               tip->pd;
+
+       tip->result_id = 0;
+       tip->pd = NULL;
+
+       if (!pd)
+               return;
+
+       if (proc_pid && !update_proc_data(pd, tip->type))
+               return;
+
+       if (!pd->ns_count || pd->id_count[tip->type] < pd->ns_count)
+               return;
+
+       int *id_hierarchy = pd->id_hierarchy[tip->type];
+       int id_count = pd->id_count[tip->type];
+
+       for (int i = 0; i < pd->ns_count; i++) {
+               unsigned int ns = pd->ns_hierarchy[i];
+               int ns_id = id_hierarchy[id_count - i - 1];
+               int our_id = id_hierarchy[id_count - pd->ns_count];
+
+               if (ns != tip->from_ns)
+                       continue;
+
+               if (ns_id != tip->from_id)
+                       return;
+
+               tip->result_id = our_id;
+               tip->pd = pd;
+               return;
+       }
+}
+
+/**
+ * Translates an id to our namespace by reading all proc entries in a directory.
+ * The directory is either /proc or /proc/<pid>/task.
+ *
+ *
+ * @param tip            The parameters
+ * @param path           The path of the directory to be read.
+ * @param read_task_dir  Whether recurse to "task" subdirectory.
+ */
+static void
+translate_id_dir(struct translate_id_params *tip, const char *path,
+                 bool read_task_dir)
+{
+       DIR *dir = opendir(path);
+       if (!dir) {
+               debug_func_perror_msg("opening dir: %s", path);
+               return;
+       }
+
+       while (!tip->result_id) {
+               errno = 0;
+               struct_dirent *entry = read_dir(dir);
+               if (!entry) {
+                       if (errno)
+                               perror_func_msg("readdir");
+
+                       break;
+               }
+
+               if (entry->d_type != DT_DIR)
+                       continue;
+
+               errno = 0;
+               long proc_pid = strtol(entry->d_name, NULL, 10);
+               if (proc_pid < 1 || proc_pid > INT_MAX || errno)
+                       continue;
+
+               if (read_task_dir) {
+                       char task_dir_path[PATH_MAX + 1];
+                       xsprintf(task_dir_path, "/proc/%ld/task", proc_pid);
+                       translate_id_dir(tip, task_dir_path, false);
+               }
+
+               if (tip->result_id)
+                       break;
+
+               translate_id_proc_pid(tip, proc_pid);
+       }
+
+       closedir(dir);
+}
+
+/**
+ * Iterator function of the proc_data_cache for id translation.
+ * If the cache contains the id we are looking for, reads the corresponding
+ * directory in /proc, and if cache is valid, saves the result.
+ */
+static void
+proc_data_cache_iterator_fn(void* fn_data, uint64_t key, uint64_t val)
+{
+       struct translate_id_params *tip = (struct translate_id_params *)fn_data;
+       struct proc_data *pd = (struct proc_data *) (uintptr_t) val;
+
+       if (!pd)
+               return;
+
+       /* Result already found in an earlier iteration */
+       if (tip->result_id)
+               return;
+
+       /* Translate from cache */
+       tip->pd = pd;
+       translate_id_proc_pid(tip, 0);
+       if (!tip->result_id)
+               return;
+
+       /* Now translate from actual data in /proc, to check cache validity */
+       translate_id_proc_pid(tip, pd->proc_pid);
+}
+
+int
+translate_pid(struct tcb *tcp, int from_id, enum pid_type type,
+              int *proc_pid_ptr)
+{
+       if (from_id <= 0 || type < 0 || type >= PT_COUNT)
+               return 0;
+
+       /* If translation is trivial */
+       if ((!tcp || get_ns(tcp) == get_our_ns()) &&
+           (!proc_pid_ptr || is_proc_ours())) {
+               if (proc_pid_ptr)
+                       *proc_pid_ptr = from_id;
+
+               return from_id;
+       }
+
+       struct translate_id_params tip = {
+               .result_id = 0,
+               .pd = NULL,
+               .from_ns = tcp ? get_ns(tcp) : get_our_ns(),
+               .from_id = from_id,
+               .type = type,
+       };
+
+       if (!tip.from_ns)
+               return 0;
+
+       if (ns_get_parent_enotty)
+               return 0;
+
+       /* Look for a cached proc_pid for this (from_ns, from_id) pair */
+       int cached_proc_pid = get_cached_proc_pid(tip.from_ns, tip.from_id,
+               tip.type);
+       if (cached_proc_pid) {
+               translate_id_proc_pid(&tip, cached_proc_pid);
+               if (tip.result_id)
+                       goto exit;
+       }
+
+       /* Iterate through the cache, find potential proc_data */
+       trie_iterate_keys(proc_data_cache, 0, pid_max - 1,
+               proc_data_cache_iterator_fn, &tip);
+       /* (proc_data_cache_iterator_fn takes care about updating proc_data) */
+       if (tip.result_id)
+               goto exit;
+
+       /* No cache helped, read all entries in /proc */
+       translate_id_dir(&tip, "/proc", true);
+
+exit:
+       if (tip.pd) {
+               if (tip.pd->proc_pid)
+                       put_proc_pid(tip.from_ns, tip.from_id, tip.type,
+                               tip.pd->proc_pid);
+
+               if (proc_pid_ptr)
+                       *proc_pid_ptr = tip.pd->proc_pid;
+       }
+
+       return tip.result_id;
+}
+
+int
+get_proc_pid(struct tcb *tcp)
+{
+       int proc_pid = 0;
+       translate_pid(NULL, tcp->pid, PT_TID, &proc_pid);
+       return proc_pid;
+}
+
+static void
+printpid_translation(struct tcb *tcp, int pid, enum pid_type type)
+{
+       if (!pidns_translation)
+               return;
+
+       int strace_pid = translate_pid(tcp, pid, type, NULL);
+       if (strace_pid && strace_pid != pid)
+               tprintf_comment("%d in strace's PID NS", strace_pid);
+}
+
+void
+printpid(struct tcb *tcp, int pid, enum pid_type type)
+{
+       tprintf("%d", pid);
+       printpid_translation(tcp, pid, type);
+}
+
+void
+printpid_tgid_pgid(struct tcb *tcp, int pid)
+{
+       tprintf("%d", pid);
+       if (pid > 0)
+               printpid_translation(tcp,  pid, PT_TGID);
+       else if (pid < -1)
+               printpid_translation(tcp, -pid, PT_PGID);
+}
diff --git a/prctl.c b/prctl.c
index 814abc2a3975d96433d58e2292ee1354f279c989..b904fa346364d4a89ed92830996ef3194ddce32c 100644 (file)
--- a/prctl.c
+++ b/prctl.c
@@ -3,7 +3,7 @@
  * Copyright (c) 1996-2000 Wichert Akkerman <wichert@cistron.nl>
  * Copyright (c) 2005-2007 Roland McGrath <roland@redhat.com>
  * Copyright (c) 2008-2015 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2014-2019 The strace developers.
+ * Copyright (c) 2014-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -104,6 +104,7 @@ SYS_FUNC(prctl)
        case PR_GET_SECCOMP:
        case PR_GET_TIMERSLACK:
        case PR_GET_TIMING:
+       case PR_GET_TAGGED_ADDR_CTRL:
                return RVAL_DECODED;
 
        case PR_GET_CHILD_SUBREAPER:
@@ -241,6 +242,7 @@ SYS_FUNC(prctl)
        case PR_SET_FPEXC:
        case PR_SET_KEEPCAPS:
        case PR_SET_TIMING:
+       case PR_SET_TAGGED_ADDR_CTRL:
                tprintf(", %" PRI_klu, arg2);
                return RVAL_DECODED;
 
@@ -367,6 +369,7 @@ SYS_FUNC(prctl)
 
        case PR_SET_NO_NEW_PRIVS:
        case PR_SET_THP_DISABLE:
+       case PR_SET_IO_FLUSHER:
                tprintf(", %" PRI_klu, arg2);
                print_prctl_args(tcp, 2);
                return RVAL_DECODED;
@@ -409,6 +412,7 @@ SYS_FUNC(prctl)
        case PR_GET_THP_DISABLE:
        case PR_MPX_DISABLE_MANAGEMENT:
        case PR_MPX_ENABLE_MANAGEMENT:
+       case PR_GET_IO_FLUSHER:
        default:
                print_prctl_args(tcp, 1);
                return RVAL_DECODED;
@@ -433,8 +437,11 @@ SYS_FUNC(arch_prctl)
                if (entering(tcp))
                        tprints(", ");
                else
-                       printnum_ptr(tcp, addr);
+                       printnum_kptr(tcp, addr);
                return 0;
+
+       case ARCH_GET_CPUID: /* has no arguments */
+               return RVAL_DECODED;
        }
 
        tprintf(", %#" PRI_klx, addr);
index 63968af33c2b4ec171297fa7509f5fd0cbc729b4..33d4a45847b7ab157c8cab9e819143869c6691b6 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2016-2017 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2017-2019 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -9,6 +9,8 @@
 #ifndef STRACE_PRINT_FIELDS_H
 # define STRACE_PRINT_FIELDS_H
 
+# include "static_assert.h"
+
 /*
  * The printf-like function to use in header files
  * shared between strace and its tests.
                      (int) sizeof((where_).field_) * 2,                \
                      zero_extend_signed_to_ull((where_).field_))
 
+# define PRINT_FIELD_UINT_ARRAY(prefix_, where_, field_, fmt_)                 \
+       do {                                                                    \
+               STRACE_PRINTF("%s%s=", (prefix_), #field_);                     \
+               for (size_t i_ = 0; i_ < ARRAY_SIZE((where_).field_); ++i_)     \
+                       STRACE_PRINTF("%s" fmt_, (i_ ? ", " : "["),             \
+                               zero_extend_signed_to_ull((where_).field_[i_]));\
+               STRACE_PRINTF("]");                                             \
+       } while (0)
+
+# define PRINT_FIELD_U_ARRAY(prefix_, where_, field_)                  \
+       PRINT_FIELD_UINT_ARRAY((prefix_), (where_), field_, "%llu")
+
+# define PRINT_FIELD_X_ARRAY(prefix_, where_, field_)                  \
+       PRINT_FIELD_UINT_ARRAY((prefix_), (where_), field_, "%#llx")
+
+
 # define PRINT_FIELD_COOKIE(prefix_, where_, field_)                   \
-       STRACE_PRINTF("%s%s=[%llu, %llu]", (prefix_), #field_,          \
-                     zero_extend_signed_to_ull((where_).field_[0]),    \
-                     zero_extend_signed_to_ull((where_).field_[1]))
+       do {                                                            \
+               static_assert(ARRAY_SIZE((where_).field_) == 2,         \
+                             "unexpected array size");                 \
+               PRINT_FIELD_U_ARRAY((prefix_), (where_), field_);       \
+       } while (0)
 
 # define PRINT_FIELD_FLAGS(prefix_, where_, field_, xlat_, dflt_)      \
        do {                                                            \
                              (xlat_), NULL);                           \
        } while (0)
 
-# define PRINT_FIELD_XVAL_SORTED_SIZED(prefix_, where_, field_, xlat_, \
-                                     xlat_size_, dflt_)                \
+# define PRINT_FIELD_ERR_D(prefix_, where_, field_)                    \
        do {                                                            \
                STRACE_PRINTF("%s%s=", (prefix_), #field_);             \
-               printxval_searchn((xlat_), (xlat_size_),                \
-                                 zero_extend_signed_to_ull((where_).field_), \
-                                 (dflt_));                             \
+               print_err(sign_extend_unsigned_to_ll((where_).field_),  \
+                         true);                                        \
        } while (0)
 
-# define PRINT_FIELD_XVAL_INDEX(prefix_, where_, field_, xlat_, dflt_) \
+# define PRINT_FIELD_ERR_U(prefix_, where_, field_)                    \
        do {                                                            \
                STRACE_PRINTF("%s%s=", (prefix_), #field_);             \
-               printxval_index((xlat_),                                \
-                               zero_extend_signed_to_ull((where_).field_), \
-                               (dflt_));                               \
+               print_err(zero_extend_signed_to_ull((where_).field_),   \
+                         false);                                       \
        } while (0)
 
 /*
                                     (size_));                          \
        } while (0)
 
+# define PRINT_FIELD_ARRAY(prefix_, where_, field_, tcp_, print_func_) \
+       do {                                                            \
+               STRACE_PRINTF("%s%s=", (prefix_), #field_);             \
+               print_local_array((tcp_), (where_).field_,              \
+                                 (print_func_));                       \
+       } while (0)
+
 # define PRINT_FIELD_HEX_ARRAY(prefix_, where_, field_)                        \
        do {                                                            \
                STRACE_PRINTF("%s%s=", (prefix_), #field_);             \
                print_ifindex((where_).field_);                         \
        } while (0)
 
-# define PRINT_FIELD_SOCKADDR(prefix_, where_, field_)                 \
+# define PRINT_FIELD_SOCKADDR(prefix_, where_, field_, tcp_)                   \
        do {                                                            \
                STRACE_PRINTF("%s%s=", (prefix_), #field_);             \
-               print_sockaddr(&(where_).field_,                        \
+               print_sockaddr(tcp_, &(where_).field_,                  \
                               sizeof((where_).field_));                \
        } while (0)
 
                print_dev_t((where_).field_);                           \
        } while (0)
 
+# define PRINT_FIELD_NUMERIC_UMODE_T(prefix_, where_, field_)          \
+       do {                                                            \
+               STRACE_PRINTF("%s%s=", (prefix_), #field_);             \
+               print_numeric_ll_umode_t(                               \
+                       zero_extend_signed_to_ull((where_).field_));    \
+       } while (0)
+
 # define PRINT_FIELD_PTR(prefix_, where_, field_)                      \
        do {                                                            \
                STRACE_PRINTF("%s%s=", (prefix_), #field_);             \
                printfd((tcp_), (where_).field_);                       \
        } while (0)
 
+# define PRINT_FIELD_TID(prefix_, where_, field_, tcp_)                        \
+       do {                                                            \
+               STRACE_PRINTF("%s%s=", (prefix_), #field_);             \
+               printpid((tcp_), (where_).field_, PT_TID);                      \
+       } while (0)
+
+# define PRINT_FIELD_TGID(prefix_, where_, field_, tcp_)                       \
+       do {                                                            \
+               STRACE_PRINTF("%s%s=", (prefix_), #field_);             \
+               printpid((tcp_), (where_).field_, PT_TGID);                     \
+       } while (0)
+
+# define PRINT_FIELD_PGID(prefix_, where_, field_, tcp_)                       \
+       do {                                                            \
+               STRACE_PRINTF("%s%s=", (prefix_), #field_);             \
+               printpid((tcp_), (where_).field_, PT_PGID);                     \
+       } while (0)
+
+# define PRINT_FIELD_SID(prefix_, where_, field_, tcp_)                        \
+       do {                                                            \
+               STRACE_PRINTF("%s%s=", (prefix_), #field_);             \
+               printpid((tcp_), (where_).field_, PT_SID);                      \
+       } while (0)
+
 # define PRINT_FIELD_STRN(prefix_, where_, field_, len_, tcp_)         \
        do {                                                            \
                STRACE_PRINTF("%s%s=", (prefix_), #field_);             \
                               (size_));                                \
        } while (0)
 
+# define PRINT_FIELD_HWADDR_SZ(prefix_, where_, field_, size_, hwtype_)        \
+       do {                                                            \
+               static_assert(sizeof(((where_).field_)[0]) == 1,        \
+                             "hwaddress is not a byte array"); \
+               STRACE_PRINTF("%s%s=", (prefix_), #field_);             \
+               print_hwaddr("", (const uint8_t *) ((where_).field_),   \
+                              (size_), (hwtype_));                     \
+       } while (0)
+
+# define PRINT_FIELD_LEN(prefix_, where_, field_,                      \
+                       len_, print_func_, ...)                         \
+       do {                                                            \
+               unsigned int start = offsetof(typeof(where_), field_);  \
+               unsigned int end = start + sizeof(where_.field_);       \
+               if (len_ >= end) {                                      \
+                       print_func_(prefix_, where_, field_,            \
+                                       ##__VA_ARGS__);                 \
+               } else if (len_ > start) {                              \
+                       tprintf("%s%s=", prefix_, #field_);             \
+                       print_quoted_string((void *)&where_.field_,     \
+                                       len_ - start, QUOTE_FORCE_HEX); \
+               }                                                       \
+       } while (0)
+
 #endif /* !STRACE_PRINT_FIELDS_H */
index f0ce58b98538501880028fe5e72190d0737d25c7..7ea62e5df8516050a9a3d41228221e4a418f5ab7 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -30,7 +30,7 @@ MPERS_PRINTER_DECL(void, print_group_req, struct tcb *const tcp,
                printaddr(addr);
        } else if (!umove_or_printaddr(tcp, addr, &greq)) {
                PRINT_FIELD_IFINDEX("{", greq, gr_interface);
-               PRINT_FIELD_SOCKADDR(", ", greq, gr_group);
+               PRINT_FIELD_SOCKADDR(", ", greq, gr_group, tcp);
                tprints("}");
        }
 }
index 8753954e92a11ea01dfc1df2b6845870ff7016e1..c5d5f5c44e10288104e4d431ba1c9fadec36fd1e 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2018-2019 The strace developers.
+ * Copyright (c) 2018-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
 #include "error_prints.h"
 #include "xstring.h"
 
-#ifndef MAX_ADDR_LEN
-# define MAX_ADDR_LEN 32
-#endif
+#define XLAT_MACROS_ONLY
+# include "xlat/arp_hardware_types.h"
+#undef XLAT_MACROS_ONLY
+
+DIAG_PUSH_IGNORE_OVERRIDE_INIT
+
+static uint8_t hwaddr_sizes[] = {
+       [0 ... ARPHRD_VSOCKMON] = 255,
+
+       [ARPHRD_NETROM]     =  7 /* AX25_ADDR_LEN */,
+       [ARPHRD_ETHER]      =  6 /* ETH_ALEN */,
+       /* ARPHRD_EETHER - no actual devices in Linux */
+       [ARPHRD_AX25]       =  7 /* AX25_ADDR_LEN */,
+       /* ARPHRD_PRONET - no actual devices in Linux */
+       /* ARPHRD_CHAOS - no actual devices in Linux */
+       [ARPHRD_IEEE802]    =  6 /* FC_ALEN */,
+       [ARPHRD_ARCNET]     =  1 /* ARCNET_ALEN */,
+       /* ARPHRD_APPLETLK - no actual devices in Linux */
+       [ARPHRD_DLCI]       = sizeof(short),
+       /* ARPHRD_ATM - no explicit setting */
+       /* ARPHRD_METRICOM - no actual devices in Linux */
+       [ARPHRD_IEEE1394]   = 16 /* FWNET_ALEN */,
+       [ARPHRD_EUI64]      =  8 /* EUI64_ADDR_LEN */,
+       [ARPHRD_INFINIBAND] = 20 /* INFINIBAND_ALEN */,
+       [ARPHRD_SLIP]       =  0,
+       /* ARPHRD_CSLIP - no actual devices in Linux */
+       /* ARPHRD_SLIP6 - no actual devices in Linux */
+       /* ARPHRD_CSLIP6 - no actual devices in Linux */
+       /* ARPHRD_RSRVD - no actual devices in Linux */
+       /* ARPHRD_ADAPT - no actual devices in Linux */
+       [ARPHRD_ROSE]       =  5 /* ROSE_ADDR_LEN */,
+       [ARPHRD_X25]        =  0,
+       /* ARPHRD_HWX25 - no actual devices in Linux */
+       [ARPHRD_CAN]        =  0,
+       [ARPHRD_PPP]        =  0,
+       /* ARPHRD_CISCO - no actual devices in Linux */
+       /* ARPHRD_LAPB - no actual devices in Linux */
+       /* ARPHRD_DDCMP - no actual devices in Linux */
+       [ARPHRD_RAWHDLC]    =  0,
+       [ARPHRD_RAWIP]      =  0,
+       [ARPHRD_TUNNEL]     =  4 /* IPIP */,
+       [ARPHRD_TUNNEL6]    = 16 /* sizeof(struct in6_addr) */,
+       /* ARPHRD_FRAD - no actual devices in Linux */
+       /* ARPHRD_SKIP - no actual devices in Linux */
+       [ARPHRD_LOOPBACK]   =  6 /* ETH_ALEN */,
+       [ARPHRD_LOCALTLK]   =  1 /* LTALK_ALEN */,
+       [ARPHRD_FDDI]       =  6 /* FDDI_K_ALEN */,
+       /* ARPHRD_BIF - no actual devices in Linux */
+       [ARPHRD_SIT]        =  4,
+       [ARPHRD_IPDDP]      =  0,
+       [ARPHRD_IPGRE]      =  4,
+       [ARPHRD_PIMREG]     =  0,
+       [ARPHRD_HIPPI]      =  6 /* HIPPI_ALEN */,
+       /* ARPHRD_ASH - no actual devices in Linux */
+       /* ARPHRD_ECONET - no actual devices in Linux */
+       [ARPHRD_IRDA]       =  4 /* LAP_ALEN */,
+       /* ARPHRD_FCPP - no actual devices in Linux */
+       /* ARPHRD_FCAL - no actual devices in Linux */
+       /* ARPHRD_FCPL - no actual devices in Linux */
+       /* ARPHRD_FCFABRIC - no actual devices in Linux */
+       /* ARPHRD_IEEE802_TR - no actual devices in Linux */
+       [ARPHRD_IEEE80211]  =  6 /* ETH_ALEN */,
+       [ARPHRD_IEEE80211_PRISM] = 6 /* ETH_ALEN */,
+       [ARPHRD_IEEE80211_RADIOTAP] = 6 /* ETH_ALEN */,
+       [ARPHRD_IEEE802154]
+               = 8 /* IEEE802154_EXTENDED_ADDR_LEN */,
+       [ARPHRD_IEEE802154_MONITOR]
+               = 8 /* IEEE802154_EXTENDED_ADDR_LEN */,
+       [ARPHRD_PHONET]     =  1,
+       [ARPHRD_PHONET_PIPE] = 1,
+       [ARPHRD_CAIF]       =  0,
+       [ARPHRD_IP6GRE]     = 16 /* sizeof(struct in6_addr) */,
+       [ARPHRD_NETLINK]    =  0,
+       [ARPHRD_6LOWPAN]    =  8 /* EUI64_ADDR_LEN */
+               /* ^ or ETH_ALEN, depending on lltype */,
+       [ARPHRD_VSOCKMON]   =  0,
+};
+
+DIAG_POP_IGNORE_OVERRIDE_INIT
 
 const char *
 sprint_mac_addr(const uint8_t addr[], size_t size)
@@ -38,11 +114,39 @@ void
 print_mac_addr(const char *prefix, const uint8_t addr[], size_t size)
 {
        tprints(prefix);
-       if (xlat_verbose(xlat_verbosity) != XLAT_STYLE_ABBREV)
+       if (xlat_verbose(xlat_verbosity) != XLAT_STYLE_ABBREV
+           || size > MAX_ADDR_LEN)
                print_quoted_string((const char *) addr, size,
                                    QUOTE_FORCE_HEX);
-       if (xlat_verbose(xlat_verbosity) == XLAT_STYLE_RAW)
+       if (xlat_verbose(xlat_verbosity) == XLAT_STYLE_RAW
+           || size > MAX_ADDR_LEN)
                return;
        (xlat_verbose(xlat_verbosity) == XLAT_STYLE_VERBOSE
                ? tprints_comment : tprints)(sprint_mac_addr(addr, size));
 }
+
+const char *
+sprint_hwaddr(const uint8_t hwaddr[], size_t size, uint32_t devtype)
+{
+       uint8_t sz = (devtype < ARRAY_SIZE(hwaddr_sizes))
+                       ? hwaddr_sizes[devtype] : 255;
+
+       return sprint_mac_addr(hwaddr, MIN(size, sz));
+}
+
+void
+print_hwaddr(const char *prefix, const uint8_t addr[], size_t size,
+            uint32_t devtype)
+{
+       tprints(prefix);
+       if (xlat_verbose(xlat_verbosity) != XLAT_STYLE_ABBREV
+           || size > MAX_ADDR_LEN)
+               print_quoted_string((const char *) addr, size,
+                                   QUOTE_FORCE_HEX);
+       if (xlat_verbose(xlat_verbosity) == XLAT_STYLE_RAW
+           || size > MAX_ADDR_LEN)
+               return;
+       (xlat_verbose(xlat_verbosity) == XLAT_STYLE_VERBOSE
+               ? tprints_comment : tprints)(sprint_hwaddr(addr, size,
+                                                          devtype));
+}
index e61eef92e24892e71428ce061cd339dca2422dea..a25498ff17c0cae8624a46b017cc11763ee6403c 100644 (file)
@@ -5,15 +5,16 @@
  * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
  * Copyright (c) 2003-2006 Roland McGrath <roland@redhat.com>
  * Copyright (c) 2006-2015 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
  */
 
 #include "defs.h"
+#include "ipc_defs.h"
 
-#include <sys/msg.h>
+#include MSG_H_PROVIDER
 
 #include DEF_MPERS_TYPE(msgbuf_t)
 typedef struct msgbuf msgbuf_t;
index b4e8f1e01f1e53eb238b3a68ba4cda808bfb7766..80ecf2f40c38917cb24b2b501f3e7c72788d425c 100644 (file)
@@ -14,7 +14,7 @@ static void
 print_statfs_type(const char *const prefix, const unsigned long long magic)
 {
        tprints(prefix);
-       printxval_search(fsmagic, magic, NULL);
+       printxval(fsmagic, magic, NULL);
 }
 
 #if defined HAVE_STRUCT_STATFS_F_FLAGS || defined HAVE_STRUCT_STATFS64_F_FLAGS
diff --git a/print_syscall_number.c b/print_syscall_number.c
new file mode 100644 (file)
index 0000000..5427afb
--- /dev/null
@@ -0,0 +1,18 @@
+/*
+ * Copyright (c) 2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#include "defs.h"
+
+void
+print_syscall_number(struct tcb *tcp)
+{
+       if (tcp->true_scno != (kernel_ulong_t) -1) {
+               tprintf("[%4" PRI_klu "] ", tcp->true_scno);
+       } else {
+               tprintf("[????] ");
+       }
+}
diff --git a/print_timespec.c b/print_timespec.c
deleted file mode 100644 (file)
index 5b353ce..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2019 The strace developers.
- * All rights reserved.
- *
- * SPDX-License-Identifier: LGPL-2.1-or-later
- */
-
-#include "defs.h"
-
-#include DEF_MPERS_TYPE(timespec_t)
-
-#include "kernel_timespec.h"
-
-#if defined MPERS_IS_mx32
-# define TIMESPEC_IS_32BIT 0
-#elif defined MPERS_IS_m32
-# define TIMESPEC_IS_32BIT 1
-#elif ARCH_TIMESIZE == 4
-# define TIMESPEC_IS_32BIT 1
-#else
-# define TIMESPEC_IS_32BIT 0
-#endif
-
-#if TIMESPEC_IS_32BIT
-typedef kernel_timespec32_t timespec_t;
-# define PRINT_TIMESPEC_DATA_SIZE print_timespec32_data_size
-# define PRINT_TIMESPEC_ARRAY_DATA_SIZE print_timespec32_array_data_size
-#else
-typedef kernel_timespec64_t timespec_t;
-# define PRINT_TIMESPEC_DATA_SIZE print_timespec64_data_size
-# define PRINT_TIMESPEC_ARRAY_DATA_SIZE print_timespec64_array_data_size
-#endif
-
-#include MPERS_DEFS
-
-MPERS_PRINTER_DECL(bool, print_struct_timespec_data_size,
-                  const void *arg, const size_t size)
-{
-       return PRINT_TIMESPEC_DATA_SIZE(arg, size);
-}
-
-MPERS_PRINTER_DECL(bool, print_struct_timespec_array_data_size,
-                  const void *arg, const unsigned int nmemb,
-                  const size_t size)
-{
-       return PRINT_TIMESPEC_ARRAY_DATA_SIZE(arg, nmemb, size);
-}
index 9199d530ff39bd8fb1ac4aa8e920f851edbde0ec..0f0e296dc0a0e4783864da0300d5aec0e4594e9d 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2019 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -38,6 +38,16 @@ print_timespec_t(const TIMESPEC_T *t)
        print_sec_nsec(TIMESPEC_TO_SEC_NSEC(t));
 }
 
+#if defined PRINT_TIMESPEC_DATA_SIZE || defined PRINT_TIMESPEC_ARRAY_DATA_SIZE
+static void
+print_unaligned_timespec_t(const void *arg)
+{
+       TIMESPEC_T t;
+       memcpy(&t, arg, sizeof(t));
+       print_timespec_t(&t);
+}
+#endif /* PRINT_TIMESPEC_DATA_SIZE || PRINT_TIMESPEC_ARRAY_DATA_SIZE */
+
 #ifdef PRINT_TIMESPEC_DATA_SIZE
 bool
 PRINT_TIMESPEC_DATA_SIZE(const void *arg, const size_t size)
@@ -47,7 +57,7 @@ PRINT_TIMESPEC_DATA_SIZE(const void *arg, const size_t size)
                return false;
        }
 
-       print_timespec_t(arg);
+       print_unaligned_timespec_t(arg);
        return true;
 }
 #endif /* PRINT_TIMESPEC_DATA_SIZE */
@@ -57,9 +67,6 @@ bool
 PRINT_TIMESPEC_ARRAY_DATA_SIZE(const void *arg, const unsigned int nmemb,
                               const size_t size)
 {
-       const TIMESPEC_T *ts = arg;
-       unsigned int i;
-
        if (nmemb > size / sizeof(TIMESPEC_T)) {
                tprints("?");
                return false;
@@ -67,10 +74,10 @@ PRINT_TIMESPEC_ARRAY_DATA_SIZE(const void *arg, const unsigned int nmemb,
 
        tprints("[");
 
-       for (i = 0; i < nmemb; i++) {
+       for (unsigned int i = 0; i < nmemb; i++, arg += sizeof(TIMESPEC_T)) {
                if (i)
                        tprints(", ");
-               print_timespec_t(&ts[i]);
+               print_unaligned_timespec_t(arg);
        }
 
        tprints("]");
index f6a16bc902e9c006d9b28917cdae38e73886537d..8e69e2a2f48acd97ddae4546a48dfff50e7e82dd 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2019-2020 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -7,17 +7,19 @@
 
 #include "defs.h"
 
-#if HAVE_ARCH_TIME32_SYSCALLS
+#if HAVE_ARCH_TIME32_SYSCALLS || HAVE_ARCH_TIMESPEC32
 
 # define TIMESPEC_T kernel_timespec32_t
 # define PRINT_TIMESPEC_DATA_SIZE print_timespec32_data_size
 # define PRINT_TIMESPEC_ARRAY_DATA_SIZE print_timespec32_array_data_size
-# define PRINT_TIMESPEC print_timespec32
-# define SPRINT_TIMESPEC sprint_timespec32
-# define PRINT_TIMESPEC_UTIME_PAIR print_timespec32_utime_pair
-# define PRINT_ITIMERSPEC print_itimerspec32
+# if HAVE_ARCH_TIME32_SYSCALLS
+#  define PRINT_TIMESPEC print_timespec32
+#  define SPRINT_TIMESPEC sprint_timespec32
+#  define PRINT_TIMESPEC_UTIME_PAIR print_timespec32_utime_pair
+#  define PRINT_ITIMERSPEC print_itimerspec32
+# endif /* HAVE_ARCH_TIME32_SYSCALLS */
 
 # include "kernel_timespec.h"
 # include "print_timespec.h"
 
-#endif /* HAVE_ARCH_TIME32_SYSCALLS */
+#endif /* HAVE_ARCH_TIME32_SYSCALLS || HAVE_ARCH_TIMESPEC32 */
index ff87b27b7de9665f48d98db2b208af9c7bedc2c8..ab60976ebb59104bfaab315053718f770b40ae72 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2019 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -10,7 +10,9 @@
 
 #include DEF_MPERS_TYPE(timeval_t)
 
-typedef struct timeval timeval_t;
+#include "kernel_timeval.h"
+
+typedef kernel_old_timeval_t timeval_t;
 
 #include MPERS_DEFS
 
index 30468fbf324fbbe48c792e437af7458d0c76bf54..a53a6ce444d3323e297b11f28c4ca5cc4ea15f17 100644 (file)
@@ -4,7 +4,7 @@
  * Copyright (c) 1993-1996 Rick Sladkey <jrs@world.std.com>
  * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
  * Copyright (c) 2012 Denys Vlasenko <vda.linux@googlemail.com>
- * Copyright (c) 2012-2018 The strace developers.
+ * Copyright (c) 2012-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -47,7 +47,7 @@ print_numeric_umode_t(const unsigned short mode)
 }
 
 void
-print_numeric_long_umask(const unsigned long mode)
+print_numeric_ll_umode_t(const unsigned long long mode)
 {
-       tprintf("%#03lo", mode);
+       tprintf("%#03llo", mode);
 }
index 27a9c36d2820923989aba573b08c552db53cfd76..a78a87e8b5980222347ba4c42507181826cd3ebb 100644 (file)
@@ -3,25 +3,27 @@
  * Copyright (c) 1993 Branko Lankester <branko@hacktic.nl>
  * Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com>
  * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
- * Copyright (c) 1999-2018 The strace developers.
+ * Copyright (c) 1999-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
  */
 
 #include "defs.h"
-#include <sys/resource.h>
 
-#include DEF_MPERS_TYPE(rusage_t)
+#include DEF_MPERS_TYPE(kernel_rusage_t)
 
-typedef struct rusage rusage_t;
+#include "kernel_rusage.h"
 
 #include MPERS_DEFS
 
+#include <sys/resource.h>
+#include "print_fields.h"
+
 MPERS_PRINTER_DECL(void, printrusage,
                   struct tcb *const tcp, const kernel_ulong_t addr)
 {
-       rusage_t ru;
+       kernel_rusage_t ru;
 
        if (umove_or_printaddr(tcp, addr, &ru))
                return;
@@ -30,26 +32,23 @@ MPERS_PRINTER_DECL(void, printrusage,
        MPERS_FUNC_NAME(print_struct_timeval)(&ru.ru_utime);
        tprints(", ru_stime=");
        MPERS_FUNC_NAME(print_struct_timeval)(&ru.ru_stime);
-       if (abbrev(tcp))
+       if (abbrev(tcp)) {
                tprints(", ...");
-       else {
-#define PRINT_RUSAGE_MEMBER(member) \
-               tprintf(", " #member "=%llu", zero_extend_signed_to_ull(ru.member))
-               PRINT_RUSAGE_MEMBER(ru_maxrss);
-               PRINT_RUSAGE_MEMBER(ru_ixrss);
-               PRINT_RUSAGE_MEMBER(ru_idrss);
-               PRINT_RUSAGE_MEMBER(ru_isrss);
-               PRINT_RUSAGE_MEMBER(ru_minflt);
-               PRINT_RUSAGE_MEMBER(ru_majflt);
-               PRINT_RUSAGE_MEMBER(ru_nswap);
-               PRINT_RUSAGE_MEMBER(ru_inblock);
-               PRINT_RUSAGE_MEMBER(ru_oublock);
-               PRINT_RUSAGE_MEMBER(ru_msgsnd);
-               PRINT_RUSAGE_MEMBER(ru_msgrcv);
-               PRINT_RUSAGE_MEMBER(ru_nsignals);
-               PRINT_RUSAGE_MEMBER(ru_nvcsw);
-               PRINT_RUSAGE_MEMBER(ru_nivcsw);
-#undef PRINT_RUSAGE_MEMBER
+       } else {
+               PRINT_FIELD_U(", ", ru, ru_maxrss);
+               PRINT_FIELD_U(", ", ru, ru_ixrss);
+               PRINT_FIELD_U(", ", ru, ru_idrss);
+               PRINT_FIELD_U(", ", ru, ru_isrss);
+               PRINT_FIELD_U(", ", ru, ru_minflt);
+               PRINT_FIELD_U(", ", ru, ru_majflt);
+               PRINT_FIELD_U(", ", ru, ru_nswap);
+               PRINT_FIELD_U(", ", ru, ru_inblock);
+               PRINT_FIELD_U(", ", ru, ru_oublock);
+               PRINT_FIELD_U(", ", ru, ru_msgsnd);
+               PRINT_FIELD_U(", ", ru, ru_msgrcv);
+               PRINT_FIELD_U(", ", ru, ru_nsignals);
+               PRINT_FIELD_U(", ", ru, ru_nvcsw);
+               PRINT_FIELD_U(", ", ru, ru_nivcsw);
        }
        tprints("}");
 }
@@ -84,26 +83,23 @@ printrusage32(struct tcb *const tcp, const kernel_ulong_t addr)
        print_timeval32_t(&ru.ru_utime);
        tprints(", ru_stime=");
        print_timeval32_t(&ru.ru_stime);
-       if (abbrev(tcp))
+       if (abbrev(tcp)) {
                tprints(", ...");
-       else {
-# define PRINT_RUSAGE_MEMBER(member) \
-               tprintf(", " #member "=%lu", ru.member)
-               PRINT_RUSAGE_MEMBER(ru_maxrss);
-               PRINT_RUSAGE_MEMBER(ru_ixrss);
-               PRINT_RUSAGE_MEMBER(ru_idrss);
-               PRINT_RUSAGE_MEMBER(ru_isrss);
-               PRINT_RUSAGE_MEMBER(ru_minflt);
-               PRINT_RUSAGE_MEMBER(ru_majflt);
-               PRINT_RUSAGE_MEMBER(ru_nswap);
-               PRINT_RUSAGE_MEMBER(ru_inblock);
-               PRINT_RUSAGE_MEMBER(ru_oublock);
-               PRINT_RUSAGE_MEMBER(ru_msgsnd);
-               PRINT_RUSAGE_MEMBER(ru_msgrcv);
-               PRINT_RUSAGE_MEMBER(ru_nsignals);
-               PRINT_RUSAGE_MEMBER(ru_nvcsw);
-               PRINT_RUSAGE_MEMBER(ru_nivcsw);
-# undef PRINT_RUSAGE_MEMBER
+       } else {
+               PRINT_FIELD_U(", ", ru, ru_maxrss);
+               PRINT_FIELD_U(", ", ru, ru_ixrss);
+               PRINT_FIELD_U(", ", ru, ru_idrss);
+               PRINT_FIELD_U(", ", ru, ru_isrss);
+               PRINT_FIELD_U(", ", ru, ru_minflt);
+               PRINT_FIELD_U(", ", ru, ru_majflt);
+               PRINT_FIELD_U(", ", ru, ru_nswap);
+               PRINT_FIELD_U(", ", ru, ru_inblock);
+               PRINT_FIELD_U(", ", ru, ru_oublock);
+               PRINT_FIELD_U(", ", ru, ru_msgsnd);
+               PRINT_FIELD_U(", ", ru, ru_msgrcv);
+               PRINT_FIELD_U(", ", ru, ru_nsignals);
+               PRINT_FIELD_U(", ", ru, ru_nvcsw);
+               PRINT_FIELD_U(", ", ru, ru_nivcsw);
        }
        tprints("}");
 }
index 9cfc4c63e10545c12fe8596fc43f06ab037031d2..cb4cde4a607e7fd04bc8751ac5b2b4b34fae774f 100644 (file)
@@ -7,7 +7,7 @@
  * Copyright (c) 2013 Denys Vlasenko <vda.linux@googlemail.com>
  * Copyright (c) 2011-2015 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
 
 #include "nr_prefix.c"
 
+#include "print_fields.h"
+
 #ifndef IN_MPERS
 # include "printsiginfo.h"
 #endif
 
+#define XLAT_MACROS_ONLY
+/* For xlat/audit_arch.h */
+# include "xlat/elf_em.h"
+#undef XLAT_MACROS_ONLY
+
 #include "xlat/audit_arch.h"
 #include "xlat/sigbus_codes.h"
 #include "xlat/sigchld_codes.h"
 #endif
 
 static void
-printsigsource(const siginfo_t *sip)
+printsigsource(struct tcb *tcp, const siginfo_t *sip)
 {
-       tprintf(", si_pid=%u, si_uid=%u",
-               (unsigned int) sip->si_pid,
-               (unsigned int) sip->si_uid);
+       PRINT_FIELD_TGID(", ", *sip, si_pid, tcp);
+       PRINT_FIELD_UID(", ", *sip, si_uid);
 }
 
 static void
@@ -110,24 +116,18 @@ print_si_code(int si_signo, unsigned int si_code)
 }
 
 static void
-print_si_info(const siginfo_t *sip)
+print_si_info(struct tcb *tcp, const siginfo_t *sip)
 {
-       if (sip->si_errno) {
-               tprints(", si_errno=");
-               if ((unsigned) sip->si_errno < nerrnos
-                   && errnoent[sip->si_errno])
-                       tprints(errnoent[sip->si_errno]);
-               else
-                       tprintf("%d", sip->si_errno);
-       }
+       if (sip->si_errno)
+               PRINT_FIELD_ERR_U(", ", *sip, si_errno);
 
        if (SI_FROMUSER(sip)) {
                switch (sip->si_code) {
                case SI_USER:
-                       printsigsource(sip);
+                       printsigsource(tcp, sip);
                        break;
                case SI_TKILL:
-                       printsigsource(sip);
+                       printsigsource(tcp, sip);
                        break;
 #if defined HAVE_SIGINFO_T_SI_TIMERID && defined HAVE_SIGINFO_T_SI_OVERRUN
                case SI_TIMER:
@@ -137,7 +137,7 @@ print_si_info(const siginfo_t *sip)
                        break;
 #endif
                default:
-                       printsigsource(sip);
+                       printsigsource(tcp, sip);
                        if (sip->si_ptr)
                                printsigval(sip);
                        break;
@@ -145,7 +145,7 @@ print_si_info(const siginfo_t *sip)
        } else {
                switch (sip->si_signo) {
                case SIGCHLD:
-                       printsigsource(sip);
+                       printsigsource(tcp, sip);
                        tprints(", si_status=");
                        if (sip->si_code == CLD_EXITED)
                                tprintf("%d", sip->si_status);
@@ -171,7 +171,7 @@ print_si_info(const siginfo_t *sip)
 #ifdef HAVE_SIGINFO_T_SI_SYSCALL
                case SIGSYS: {
                        /*
-                        * Note that we can safely use the personlity set in
+                        * Note that we can safely use the personality set in
                         * current_personality  here (and don't have to guess it
                         * based on X32_SYSCALL_BIT and si_arch, for example):
                         *  - The signal is delivered as a result of seccomp
@@ -204,7 +204,7 @@ print_si_info(const siginfo_t *sip)
 #endif
                default:
                        if (sip->si_pid || sip->si_uid)
-                               printsigsource(sip);
+                               printsigsource(tcp, sip);
                        if (sip->si_ptr)
                                printsigval(sip);
                }
@@ -215,7 +215,7 @@ print_si_info(const siginfo_t *sip)
 static
 #endif
 void
-printsiginfo(const siginfo_t *sip)
+printsiginfo(struct tcb *tcp, const siginfo_t *sip)
 {
        if (sip->si_signo == 0) {
                tprints("{}");
@@ -230,7 +230,7 @@ printsiginfo(const siginfo_t *sip)
 #ifdef SI_NOINFO
        if (sip->si_code != SI_NOINFO)
 #endif
-               print_si_info(sip);
+               print_si_info(tcp, sip);
 
        tprints("}");
 }
@@ -241,13 +241,13 @@ MPERS_PRINTER_DECL(void, printsiginfo_at,
        siginfo_t si;
 
        if (!umove_or_printaddr(tcp, addr, &si))
-               printsiginfo(&si);
+               printsiginfo(tcp, &si);
 }
 
 static bool
 print_siginfo_t(struct tcb *tcp, void *elem_buf, size_t elem_size, void *data)
 {
-       printsiginfo((const siginfo_t *) elem_buf);
+       printsiginfo(tcp, (const siginfo_t *) elem_buf);
        return true;
 }
 
index 4088cb5408e06d1d03ee1bd53c7169a182d05872..ee5ecc8eba57330cadaaefc7d8e2712ed5522d45 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -8,6 +8,6 @@
 #ifndef STRACE_PRINTSIGINFO_H
 # define STRACE_PRINTSIGINFO_H
 
-extern void printsiginfo(const siginfo_t *);
+extern void printsiginfo(struct tcb *, const siginfo_t *);
 
 #endif /* !STRACE_PRINTSIGINFO_H */
index d224c396d4b400f831b973891d2601a52e9ce1b7..72a74922bfb660a124b6a488a4699a48c93abf31 100644 (file)
--- a/process.c
+++ b/process.c
@@ -8,7 +8,7 @@
  *                    <barrow_dj@mail.yahoo.com,djbarrow@de.ibm.com>
  * Copyright (c) 2000 PocketPenguins Inc.  Linux for Hitachi SuperH
  *                    port by Greg Banks <gbanks@pocketpenguins.com>
- * Copyright (c) 1999-2018 The strace developers.
+ * Copyright (c) 1999-2020 The strace developers.
  *
  * All rights reserved.
  *
 #define uoff(member)   offsetof(struct user, member)
 #define XLAT_UOFF(member)      { uoff(member), "offsetof(struct user, " #member ")" }
 
-static const struct xlat struct_user_offsets[] = {
+static const struct xlat_data struct_user_offsets_data[] = {
 #include "userent.h"
-       XLAT_END
+       { 0, 0 }
+};
+
+static const struct xlat struct_user_offsets = {
+       .type = XT_SORTED,
+       .size = ARRAY_SIZE(struct_user_offsets_data) - 1,
+       .data = struct_user_offsets_data,
 };
 
 static void
 print_user_offset_addr(const kernel_ulong_t addr)
 {
-       bool no_str = false;
-       const struct xlat *x;
+       const uint64_t last_user_offset = struct_user_offsets.size ?
+               struct_user_offsets.data[struct_user_offsets.size - 1].val : 0;
 
-       for (x = struct_user_offsets; x->str; ++x) {
-               if (x->val >= addr)
-                       break;
-       }
+       uint64_t base_addr = addr;
+       const char *str = xlookup_le(&struct_user_offsets, &base_addr);
 
-       if (!x->str || (x == struct_user_offsets && x->val > addr))
-               no_str = true;
-       if (no_str || xlat_verbose(xlat_verbosity) != XLAT_STYLE_ABBREV)
+       /* We don't want to pretty print addresses beyond struct user */
+       if (addr > base_addr && base_addr == last_user_offset)
+               str = NULL;
+
+       if (!str || xlat_verbose(xlat_verbosity) != XLAT_STYLE_ABBREV)
                printaddr(addr);
-       if (no_str || xlat_verbose(xlat_verbosity) == XLAT_STYLE_RAW)
+       if (!str || xlat_verbose(xlat_verbosity) == XLAT_STYLE_RAW)
                return;
 
        if (xlat_verbose(xlat_verbosity) == XLAT_STYLE_VERBOSE)
                tprints(" /* ");
 
-       if (x->val > addr) {
-               --x;
+       if (base_addr == addr)
+               tprints(str);
+       else
                tprintf("%s + %" PRI_klu,
-                       x->str, addr - (kernel_ulong_t) x->val);
-       } else {
-               tprints(x->str);
-       }
+                       str, addr - (kernel_ulong_t) base_addr);
 
        if (xlat_verbose(xlat_verbosity) == XLAT_STYLE_VERBOSE)
                tprints(" */");
@@ -88,7 +92,8 @@ SYS_FUNC(ptrace)
                }
 
                /* pid */
-               tprintf(", %d", pid);
+               tprints(", ");
+               printpid(tcp, pid, PT_TGID);
 
                /* addr */
                switch (request) {
index abee1e68f8b35dd2be1e846ffa053efce1e28500..9a151c602a9e4c965cb2310086c998174045b76f 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2012 Denys Vlasenko <vda.linux@googlemail.com>
  * Copyright (c) 2012-2015 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2014-2018 The strace developers.
+ * Copyright (c) 2014-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -13,7 +13,8 @@ SYS_FUNC(process_vm_readv)
 {
        if (entering(tcp)) {
                /* arg 1: pid */
-               tprintf("%d, ", (int) tcp->u_arg[0]);
+               printpid(tcp, tcp->u_arg[0], PT_TGID);
+               tprints(", ");
        } else {
                kernel_ulong_t local_iovcnt = tcp->u_arg[2];
                kernel_ulong_t remote_iovcnt = tcp->u_arg[4];
@@ -42,7 +43,8 @@ SYS_FUNC(process_vm_writev)
        kernel_ulong_t flags = tcp->u_arg[5];
 
        /* arg 1: pid */
-       tprintf("%d, ", (int) tcp->u_arg[0]);
+       printpid(tcp, tcp->u_arg[0], PT_TGID);
+       tprints(", ");
        /* arg 2: local iov */
        tprint_iov(tcp, local_iovcnt, tcp->u_arg[1], IOV_DECODE_STR);
        /* arg 3: local iovcnt */
diff --git a/ptp.c b/ptp.c
index ffc16063071e543f0e604f226ea7b53e74f386ca..d925829d0ad92195a10ea4910d16fce974cb561e 100644 (file)
--- a/ptp.c
+++ b/ptp.c
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2014 Stefan Sørensen <stefan.sorensen@spectralink.com>
  * Copyright (c) 2014-2015 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2014-2018 The strace developers.
+ * Copyright (c) 2014-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
 
 #ifdef HAVE_STRUCT_PTP_SYS_OFFSET
 
+# include "print_fields.h"
+
 # include <linux/ioctl.h>
 # include <linux/ptp_clock.h>
 
-# include "print_fields.h"
-# include "xlat/ptp_flags_options.h"
+# ifndef PTP_CLOCK_GETCAPS2
+#  define PTP_CLOCK_GETCAPS2 _IOR(PTP_CLK_MAGIC, 10, struct ptp_clock_caps)
+# endif
+# ifndef PTP_EXTTS_REQUEST2
+#  define PTP_EXTTS_REQUEST2 _IOW(PTP_CLK_MAGIC, 11, struct ptp_extts_request)
+# endif
+# ifndef PTP_PEROUT_REQUEST2
+#  define PTP_PEROUT_REQUEST2 _IOW(PTP_CLK_MAGIC, 12, struct ptp_perout_request)
+# endif
+# ifndef PTP_ENABLE_PPS2
+#  define PTP_ENABLE_PPS2 _IOW(PTP_CLK_MAGIC, 13, int)
+# endif
+# ifndef PTP_SYS_OFFSET2
+#  define PTP_SYS_OFFSET2 _IOW(PTP_CLK_MAGIC, 14, struct ptp_sys_offset)
+# endif
+
+# include "xlat/ptp_extts_flags.h"
+# include "xlat/ptp_perout_flags.h"
 
 int
 ptp_ioctl(struct tcb *const tcp, const unsigned int code,
@@ -25,7 +43,8 @@ ptp_ioctl(struct tcb *const tcp, const unsigned int code,
                return RVAL_DECODED;
 
        switch (code) {
-       case PTP_EXTTS_REQUEST: {
+       case PTP_EXTTS_REQUEST:
+       case PTP_EXTTS_REQUEST2: {
                struct ptp_extts_request extts;
 
                tprints(", ");
@@ -33,12 +52,13 @@ ptp_ioctl(struct tcb *const tcp, const unsigned int code,
                        break;
 
                PRINT_FIELD_D("{", extts, index);
-               PRINT_FIELD_FLAGS(", ", extts, flags, ptp_flags_options, "PTP_???");
+               PRINT_FIELD_FLAGS(", ", extts, flags, ptp_extts_flags, "PTP_???");
                tprints("}");
                break;
        }
 
-       case PTP_PEROUT_REQUEST: {
+       case PTP_PEROUT_REQUEST:
+       case PTP_PEROUT_REQUEST2: {
                struct ptp_perout_request perout;
 
                tprints(", ");
@@ -50,16 +70,18 @@ ptp_ioctl(struct tcb *const tcp, const unsigned int code,
                PRINT_FIELD_D("}, period={", perout.period, sec);
                PRINT_FIELD_U(", ", perout.period, nsec);
                PRINT_FIELD_D("}, ", perout, index);
-               PRINT_FIELD_FLAGS(", ", perout, flags, ptp_flags_options, "PTP_???");
+               PRINT_FIELD_FLAGS(", ", perout, flags, ptp_perout_flags, "PTP_???");
                tprints("}");
                break;
        }
 
        case PTP_ENABLE_PPS:
+       case PTP_ENABLE_PPS2:
                tprintf(", %" PRI_kld, arg);
                break;
 
-       case PTP_SYS_OFFSET: {
+       case PTP_SYS_OFFSET:
+       case PTP_SYS_OFFSET2: {
                struct ptp_sys_offset sysoff;
 
                if (entering(tcp)) {
@@ -99,7 +121,8 @@ ptp_ioctl(struct tcb *const tcp, const unsigned int code,
                        break;
                }
        }
-       case PTP_CLOCK_GETCAPS: {
+       case PTP_CLOCK_GETCAPS:
+       case PTP_CLOCK_GETCAPS2: {
                struct ptp_clock_caps caps;
 
                if (entering(tcp))
index e4a5851dfd927406b92e5ebeaa9c2d45b3415da0..197c4ce83b2c6ef9ef5130ce29b00f2a38719b93 100644 (file)
--- a/ptrace.h
+++ b/ptrace.h
@@ -8,7 +8,7 @@
  * Copyright (c) 2011-2016 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2013 Ali Polatel <alip@exherbo.org>
  * Copyright (c) 2015 Mike Frysinger <vapier@gentoo.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
 #  define PTRACE_SYSCALL_INFO_ENTRY    1
 #  define PTRACE_SYSCALL_INFO_EXIT     2
 #  define PTRACE_SYSCALL_INFO_SECCOMP  3
+# endif
+
+# if defined HAVE_STRUCT_PTRACE_SYSCALL_INFO
+typedef struct ptrace_syscall_info struct_ptrace_syscall_info;
+# elif defined HAVE_STRUCT___PTRACE_SYSCALL_INFO
+typedef struct __ptrace_syscall_info struct_ptrace_syscall_info;
+# else
 struct ptrace_syscall_info {
        uint8_t op;
        uint8_t pad[3];
@@ -184,6 +191,7 @@ struct ptrace_syscall_info {
                } seccomp;
        };
 };
+typedef struct ptrace_syscall_info struct_ptrace_syscall_info;
 # endif
 
 # if !HAVE_DECL_PTRACE_PEEKUSER
index 8ded55ad15756a439a30b7b7351c362b3785a436..2310c147850c03584c5616a47711cbce8f2a352c 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2018 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2018-2019 The strace developers.
+ * Copyright (c) 2018-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
 
 bool ptrace_get_syscall_info_supported;
 
+#define FAIL   do { ptrace_stop = -1U; goto done; } while (0)
+
+#ifdef HAVE_FORK
 static int
 kill_tracee(pid_t pid)
 {
        return kill_save_errno(pid, SIGKILL);
 }
 
-#define FAIL   do { ptrace_stop = -1U; goto done; } while (0)
-
 static const unsigned int expected_none_size =
-       offsetof(struct ptrace_syscall_info, entry);
+       offsetof(struct_ptrace_syscall_info, entry);
 static const unsigned int expected_entry_size =
-       offsetofend(struct ptrace_syscall_info, entry.args);
+       offsetofend(struct_ptrace_syscall_info, entry.args);
+#endif /* HAVE_FORK */
 static const unsigned int expected_exit_size =
-       offsetofend(struct ptrace_syscall_info, exit.is_error);
+       offsetofend(struct_ptrace_syscall_info, exit.is_error);
 static const unsigned int expected_seccomp_size =
-       offsetofend(struct ptrace_syscall_info, seccomp.ret_data);
+       offsetofend(struct_ptrace_syscall_info, seccomp.ret_data);
 
 /*
  * Test that PTRACE_GET_SYSCALL_INFO API is supported by the kernel, and
@@ -81,6 +83,12 @@ test_ptrace_get_syscall_info(void)
        };
        const unsigned long *exp_args;
 
+# if SIZEOF_KERNEL_LONG_T > SIZEOF_LONG
+#  define CAST (unsigned long)
+# else
+#  define CAST
+# endif
+
        int pid = fork();
        if (pid < 0)
                perror_func_msg_and_die("fork");
@@ -113,7 +121,7 @@ test_ptrace_get_syscall_info(void)
        unsigned int ptrace_stop;
 
        for (ptrace_stop = 0; ; ++ptrace_stop) {
-               struct ptrace_syscall_info info = {
+               struct_ptrace_syscall_info info = {
                        .op = 0xff      /* invalid PTRACE_SYSCALL_INFO_* op */
                };
                const size_t size = sizeof(info);
@@ -196,12 +204,12 @@ test_ptrace_get_syscall_info(void)
                                    || !info.instruction_pointer
                                    || !info.stack_pointer
                                    || (info.entry.nr != exp_args[0])
-                                   || (info.entry.args[0] != exp_args[1])
-                                   || (info.entry.args[1] != exp_args[2])
-                                   || (info.entry.args[2] != exp_args[3])
-                                   || (info.entry.args[3] != exp_args[4])
-                                   || (info.entry.args[4] != exp_args[5])
-                                   || (info.entry.args[5] != exp_args[6])) {
+                                   || (CAST info.entry.args[0] != exp_args[1])
+                                   || (CAST info.entry.args[1] != exp_args[2])
+                                   || (CAST info.entry.args[2] != exp_args[3])
+                                   || (CAST info.entry.args[3] != exp_args[4])
+                                   || (CAST info.entry.args[4] != exp_args[5])
+                                   || (CAST info.entry.args[5] != exp_args[6])) {
                                        debug_func_msg("#%d: entry stop"
                                                       " mismatch",
                                                       ptrace_stop);
@@ -267,7 +275,7 @@ void
 print_ptrace_syscall_info(struct tcb *tcp, kernel_ulong_t addr,
                          kernel_ulong_t user_len)
 {
-       struct ptrace_syscall_info info;
+       struct_ptrace_syscall_info info;
        kernel_ulong_t kernel_len = tcp->u_rval;
        kernel_ulong_t ret_len = MIN(user_len, kernel_len);
        kernel_ulong_t fetch_size = MIN(ret_len, expected_seccomp_size);
@@ -277,22 +285,22 @@ print_ptrace_syscall_info(struct tcb *tcp, kernel_ulong_t addr,
                return;
        }
 
-       PRINT_FIELD_XVAL_INDEX("{", info, op, ptrace_syscall_info_op,
-                              "PTRACE_SYSCALL_INFO_???");
-       if (fetch_size < offsetofend(struct ptrace_syscall_info, arch))
+       PRINT_FIELD_XVAL("{", info, op, ptrace_syscall_info_op,
+                        "PTRACE_SYSCALL_INFO_???");
+       if (fetch_size < offsetofend(struct_ptrace_syscall_info, arch))
                goto printed;
        PRINT_FIELD_XVAL(", ", info, arch, audit_arch, "AUDIT_ARCH_???");
 
-       if (fetch_size < offsetofend(struct ptrace_syscall_info,
+       if (fetch_size < offsetofend(struct_ptrace_syscall_info,
                                     instruction_pointer))
                goto printed;
        PRINT_FIELD_ADDR64(", ", info, instruction_pointer);
 
-       if (fetch_size < offsetofend(struct ptrace_syscall_info, stack_pointer))
+       if (fetch_size < offsetofend(struct_ptrace_syscall_info, stack_pointer))
                goto printed;
        PRINT_FIELD_ADDR64(", ", info, stack_pointer);
 
-       if (fetch_size < offsetofend(struct ptrace_syscall_info, entry.nr))
+       if (fetch_size < offsetofend(struct_ptrace_syscall_info, entry.nr))
                goto printed;
 
        switch(info.op) {
@@ -304,7 +312,7 @@ print_ptrace_syscall_info(struct tcb *tcp, kernel_ulong_t addr,
                        for (unsigned int i = 0;
                             i < ARRAY_SIZE(info.entry.args); ++i) {
                                const unsigned int i_size =
-                                       offsetofend(struct ptrace_syscall_info,
+                                       offsetofend(struct_ptrace_syscall_info,
                                                    entry.args[i]);
                                if (fetch_size < i_size) {
                                        if (i)
@@ -326,11 +334,7 @@ entry_printed:
                        tprints(", exit={");
                        if (fetch_size >= expected_exit_size
                            && info.exit.is_error) {
-                               uint64_t err = -info.exit.rval;
-
-                               tprints("rval=-");
-                               print_xlat_ex(err, err_name(err),
-                                             XLAT_STYLE_FMT_U);
+                               PRINT_FIELD_ERR_D("", info.exit, rval);
                        } else {
                                PRINT_FIELD_D("", info.exit, rval);
                        }
index 6a4920e42efbecd20e30f962dc9a080c6e49feff..aa6279dc6f3991048696bff1ac23a71ec02129c1 100644 (file)
@@ -6,7 +6,7 @@
  * Copyright (c) 2006 Ulrich Drepper <drepper@redhat.com>
  * Copyright (c) 2006 Bernhard Kaindl <bk@suse.de>
  * Copyright (c) 2006-2015 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2014-2018 The strace developers.
+ * Copyright (c) 2014-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -44,7 +44,9 @@ SYS_FUNC(readlink)
 
 SYS_FUNC(readlinkat)
 {
-       if (entering(tcp))
+       if (entering(tcp)) {
                print_dirfd(tcp, tcp->u_arg[0]);
+               tprints(", ");
+       }
        return decode_readlink(tcp, 1);
 }
index 8f7118de4dc738913e4ce595b12adf6a51331a0b..584ea0206898bb25d590aa3bb9a36a5494334b2e 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014-2018 The strace developers.
+ * Copyright (c) 2014-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -11,9 +11,11 @@ static void
 decode_renameat(struct tcb *tcp)
 {
        print_dirfd(tcp, tcp->u_arg[0]);
+       tprints(", ");
        printpath(tcp, tcp->u_arg[1]);
        tprints(", ");
        print_dirfd(tcp, tcp->u_arg[2]);
+       tprints(", ");
        printpath(tcp, tcp->u_arg[3]);
 }
 
index 53192ee9e1d3482fb2c5a053734cc6aeec7ac1fd..284f38ec6ba5d53d75bf6a3b86437808ca88c078 100644 (file)
@@ -3,7 +3,7 @@
  * Copyright (c) 1993 Branko Lankester <branko@hacktic.nl>
  * Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com>
  * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
- * Copyright (c) 1999-2019 The strace developers.
+ * Copyright (c) 1999-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -142,7 +142,8 @@ SYS_FUNC(setrlimit)
 SYS_FUNC(prlimit64)
 {
        if (entering(tcp)) {
-               tprintf("%d, ", (int) tcp->u_arg[0]);
+               printpid(tcp, tcp->u_arg[0], PT_TGID);
+               tprints(", ");
                printxval(resources, tcp->u_arg[1], "RLIMIT_???");
                tprints(", ");
                print_rlimit64(tcp, tcp->u_arg[2]);
@@ -179,10 +180,28 @@ SYS_FUNC(osf_getrusage)
 
 #include "xlat/priorities.h"
 
+static void
+priority_print_who(struct tcb *tcp, int which, int who)
+{
+       switch (which)
+       {
+       case PRIO_PROCESS:
+               printpid(tcp, who, PT_TGID);
+               break;
+       case PRIO_PGRP:
+               printpid(tcp, who, PT_PGID);
+               break;
+       default:
+               tprintf("%d", who);
+               break;
+       }
+}
+
 SYS_FUNC(getpriority)
 {
        printxval(priorities, tcp->u_arg[0], "PRIO_???");
-       tprintf(", %d", (int) tcp->u_arg[1]);
+       tprints(", ");
+       priority_print_who(tcp, tcp->u_arg[0], tcp->u_arg[1]);
 
        return RVAL_DECODED;
 }
@@ -190,7 +209,9 @@ SYS_FUNC(getpriority)
 SYS_FUNC(setpriority)
 {
        printxval(priorities, tcp->u_arg[0], "PRIO_???");
-       tprintf(", %d, %d", (int) tcp->u_arg[1], (int) tcp->u_arg[2]);
+       tprints(", ");
+       priority_print_who(tcp, tcp->u_arg[0], tcp->u_arg[1]);
+       tprintf(", %d", (int) tcp->u_arg[2]);
 
        return RVAL_DECODED;
 }
diff --git a/riscv.c b/riscv.c
index 7f37281fbe08a0e7b70a38e63d94da7b10761468..825eb293660b0d1587a5a19b52184c53c0dcf4f3 100644 (file)
--- a/riscv.c
+++ b/riscv.c
@@ -1,7 +1,7 @@
 /*
  * RISC-V-specific syscall decoders.
  *
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -9,7 +9,7 @@
 
 #include "defs.h"
 
-#ifdef RISCV
+#ifdef RISCV64
 
 # include "xlat/riscv_flush_icache_flags.h"
 
@@ -30,4 +30,4 @@ SYS_FUNC(riscv_flush_icache)
        return RVAL_DECODED;
 }
 
-#endif /* RISCV */
+#endif /* RISCV64 */
diff --git a/rtc.c b/rtc.c
index dd29247142b953685592b3b0ce8f3a5acb147755..68ea1eb9cbaaf2913ae59b3f0f4e997f96018554 100644 (file)
--- a/rtc.c
+++ b/rtc.c
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2004 Ulrich Drepper <drepper@redhat.com>
  * Copyright (c) 2004-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -18,6 +18,12 @@ typedef struct rtc_pll_info struct_rtc_pll_info;
 
 #include MPERS_DEFS
 
+#include "xlat/rtc_vl_flags.h"
+
+#define XLAT_MACROS_ONLY
+# include "xlat/rtc_ioctl_cmds.h"
+#undef XLAT_MACROS_ONLY
+
 static void
 print_rtc_time(struct tcb *tcp, const struct rtc_time *rt)
 {
@@ -65,6 +71,19 @@ decode_rtc_pll_info(struct tcb *const tcp, const kernel_ulong_t addr)
                        pll.pll_posmult, pll.pll_negmult, (long) pll.pll_clock);
 }
 
+static void
+decode_rtc_vl(struct tcb *const tcp, const kernel_ulong_t addr)
+{
+       unsigned int val;
+
+       if (umove_or_printaddr(tcp, addr, &val))
+               return;
+
+       tprints("[");
+       printflags(rtc_vl_flags, val, "RTC_VL_???");
+       tprints("]");
+}
+
 MPERS_PRINTER_DECL(int, rtc_ioctl, struct tcb *const tcp,
                   const unsigned int code, const kernel_ulong_t arg)
 {
@@ -106,14 +125,12 @@ MPERS_PRINTER_DECL(int, rtc_ioctl, struct tcb *const tcp,
                tprints(", ");
                decode_rtc_pll_info(tcp, arg);
                break;
-#ifdef RTC_VL_READ
        case RTC_VL_READ:
                if (entering(tcp))
                        return 0;
                tprints(", ");
-               printnum_int(tcp, arg, "%d");
+               decode_rtc_vl(tcp, arg);
                break;
-#endif
        case RTC_AIE_ON:
        case RTC_AIE_OFF:
        case RTC_UIE_ON:
@@ -122,9 +139,7 @@ MPERS_PRINTER_DECL(int, rtc_ioctl, struct tcb *const tcp,
        case RTC_PIE_OFF:
        case RTC_WIE_ON:
        case RTC_WIE_OFF:
-#ifdef RTC_VL_CLR
        case RTC_VL_CLR:
-#endif
                /* no args */
                break;
        default:
index 88ef39c1950086cda795b14c5d648647ba6bbf18..f2f283e8ad0b8efd698e24e302954ce912b5424b 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -50,7 +50,7 @@ decode_ifa_cacheinfo(struct tcb *const tcp,
                PRINT_FIELD_U(", ", ci, ifa_valid);
                PRINT_FIELD_U(", ", ci, cstamp);
                PRINT_FIELD_U(", ", ci, tstamp);
-               tprintf("}");
+               tprints("}");
        }
 
        return true;
@@ -73,14 +73,16 @@ decode_ifa_flags(struct tcb *const tcp,
 }
 
 static const nla_decoder_t ifaddrmsg_nla_decoders[] = {
-       [IFA_ADDRESS]   = decode_ifa_address,
-       [IFA_LOCAL]     = decode_ifa_address,
-       [IFA_LABEL]     = decode_nla_str,
-       [IFA_BROADCAST] = decode_ifa_address,
-       [IFA_ANYCAST]   = decode_ifa_address,
-       [IFA_CACHEINFO] = decode_ifa_cacheinfo,
-       [IFA_MULTICAST] = decode_ifa_address,
-       [IFA_FLAGS]     = decode_ifa_flags
+       [IFA_ADDRESS]           = decode_ifa_address,
+       [IFA_LOCAL]             = decode_ifa_address,
+       [IFA_LABEL]             = decode_nla_str,
+       [IFA_BROADCAST]         = decode_ifa_address,
+       [IFA_ANYCAST]           = decode_ifa_address,
+       [IFA_CACHEINFO]         = decode_ifa_cacheinfo,
+       [IFA_MULTICAST]         = decode_ifa_address,
+       [IFA_FLAGS]             = decode_ifa_flags,
+       [IFA_RT_PRIORITY]       = decode_nla_u32,
+       [IFA_TARGET_NETNSID]    = decode_nla_s32,
 };
 
 DECL_NETLINK_ROUTE_DECODER(decode_ifaddrmsg)
index 92bc1e03c07cdb34ef0fcc165101bdd19b835c1b..7f81414a228a298381796d2d6d60a9808a1f7e93 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
 
 #include <netinet/in.h>
 
-#ifdef HAVE_LINUX_IF_LINK_H
-# include <linux/if_link.h>
-#endif
 #include <linux/rtnetlink.h>
 
+#include "types/rtnl_link.h"
+
 #include "xlat/in6_addr_gen_mode.h"
 #include "xlat/inet_devconf_indices.h"
 #include "xlat/inet6_devconf_indices.h"
 #include "xlat/tun_device_types.h"
 #include "xlat/xdp_flags.h"
 
+static bool
+decode_ifla_hwaddr(struct tcb *const tcp,
+                  const kernel_ulong_t addr,
+                  const unsigned int len,
+                  const void *const opaque_data)
+{
+       const struct ifinfomsg *ifinfo = (const struct ifinfomsg *) opaque_data;
+
+       return decode_nla_hwaddr_family(tcp, addr, len, ifinfo->ifi_family);
+}
+
 static bool
 decode_rtnl_link_stats(struct tcb *const tcp,
                       const kernel_ulong_t addr,
                       const unsigned int len,
                       const void *const opaque_data)
 {
-       struct rtnl_link_stats st;
+       struct_rtnl_link_stats st;
        const unsigned int min_size =
-               offsetofend(struct rtnl_link_stats, tx_compressed);
+               offsetofend(struct_rtnl_link_stats, tx_compressed);
        const unsigned int def_size = sizeof(st);
        const unsigned int size =
                (len >= def_size) ? def_size :
@@ -86,10 +96,9 @@ decode_rtnl_link_stats(struct tcb *const tcp,
 
                PRINT_FIELD_U(", ", st, rx_compressed);
                PRINT_FIELD_U(", ", st, tx_compressed);
-#ifdef HAVE_STRUCT_RTNL_LINK_STATS_RX_NOHANDLER
+
                if (len >= def_size)
                        PRINT_FIELD_U(", ", st, rx_nohandler);
-#endif
                tprints("}");
        }
 
@@ -289,7 +298,7 @@ static const nla_decoder_t ifla_info_data_bridge_nla_decoders[] = {
        [IFLA_BR_TCN_TIMER]                     = decode_nla_u64,
        [IFLA_BR_TOPOLOGY_CHANGE_TIMER]         = decode_nla_u64,
        [IFLA_BR_GC_TIMER]                      = decode_nla_u64,
-       [IFLA_BR_GROUP_ADDR]                    = NULL, /* MAC address */
+       [IFLA_BR_GROUP_ADDR]                    = decode_nla_hwaddr_nofamily,
        [IFLA_BR_FDB_FLUSH]                     = NULL, /* unspecified */
        [IFLA_BR_MCAST_ROUTER]                  = decode_nla_u8,
        [IFLA_BR_MCAST_SNOOPING]                = decode_nla_u8,
@@ -337,10 +346,8 @@ decode_nla_tun_type(struct tcb *const tcp,
                    const unsigned int len,
                    const void *const opaque_data)
 {
-       const struct decode_nla_xlat_opts opts = {
+       static const struct decode_nla_xlat_opts opts = {
                .xlat = tun_device_types,
-               .xlat_size = ARRAY_SIZE(tun_device_types) - 1,
-               .xt = XT_INDEXED,
                .dflt = "IFF_???",
                .size = 1,
        };
@@ -424,10 +431,9 @@ decode_rtnl_link_stats64(struct tcb *const tcp,
                         const unsigned int len,
                         const void *const opaque_data)
 {
-#ifdef HAVE_STRUCT_RTNL_LINK_STATS64
-       struct rtnl_link_stats64 st;
+       struct_rtnl_link_stats64 st;
        const unsigned int min_size =
-               offsetofend(struct rtnl_link_stats64, tx_compressed);
+               offsetofend(struct_rtnl_link_stats64, tx_compressed);
        const unsigned int def_size = sizeof(st);
        const unsigned int size =
                (len >= def_size) ? def_size :
@@ -463,17 +469,13 @@ decode_rtnl_link_stats64(struct tcb *const tcp,
 
                PRINT_FIELD_U(", ", st, rx_compressed);
                PRINT_FIELD_U(", ", st, tx_compressed);
-# ifdef HAVE_STRUCT_RTNL_LINK_STATS64_RX_NOHANDLER
+
                if (len >= def_size)
                        PRINT_FIELD_U(", ", st, rx_nohandler);
-# endif
                tprints("}");
        }
 
        return true;
-#else
-       return false;
-#endif
 }
 
 static bool
@@ -482,23 +484,24 @@ decode_ifla_port_vsi(struct tcb *const tcp,
                     const unsigned int len,
                     const void *const opaque_data)
 {
-#ifdef HAVE_STRUCT_IFLA_PORT_VSI
-       struct ifla_port_vsi vsi;
+       struct_ifla_port_vsi vsi;
 
        if (len < sizeof(vsi))
                return false;
-       else if (!umove_or_printaddr(tcp, addr, &vsi)) {
-               PRINT_FIELD_U("{", vsi, vsi_mgr_id);
-               PRINT_FIELD_STRING(", ", vsi, vsi_type_id,
-                                  sizeof(vsi.vsi_type_id), QUOTE_FORCE_HEX);
-               PRINT_FIELD_U(", ", vsi, vsi_type_version);
-               tprints("}");
-       }
+       if (umove_or_printaddr(tcp, addr, &vsi))
+               return true;
+
+       PRINT_FIELD_U("{", vsi, vsi_mgr_id);
+       PRINT_FIELD_STRING(", ", vsi, vsi_type_id,
+                          sizeof(vsi.vsi_type_id), QUOTE_FORCE_HEX);
+       PRINT_FIELD_U(", ", vsi, vsi_type_version);
+
+       if (!IS_ARRAY_ZERO(vsi.pad))
+               PRINT_FIELD_HEX_ARRAY(", ", vsi, pad);
+
+       tprints("}");
 
        return true;
-#else
-       return false;
-#endif
 }
 
 static const nla_decoder_t ifla_port_nla_decoders[] = {
@@ -563,10 +566,8 @@ decode_ifla_xdp_attached(struct tcb *const tcp,
                         const unsigned int len,
                         const void *const opaque_data)
 {
-       const struct decode_nla_xlat_opts opts = {
+       static const struct decode_nla_xlat_opts opts = {
                .xlat = rtnl_ifla_xdp_attached_mode,
-               .xlat_size = ARRAY_SIZE(rtnl_ifla_xdp_attached_mode) - 1,
-               .xt = XT_INDEXED,
                .dflt = "XDP_ATTACHED_???",
                .size = 1,
        };
@@ -582,6 +583,7 @@ static const nla_decoder_t ifla_xdp_nla_decoders[] = {
        [IFLA_XDP_DRV_PROG_ID]  = decode_nla_u32,
        [IFLA_XDP_SKB_PROG_ID]  = decode_nla_u32,
        [IFLA_XDP_HW_PROG_ID]   = decode_nla_u32,
+       [IFLA_XDP_EXPECTED_FD]  = decode_nla_fd,
 };
 
 static bool
@@ -628,10 +630,8 @@ decode_ifla_inet_conf(struct tcb *const tcp,
 
        print_array_ex(tcp, addr, cnt, &elem, sizeof(elem),
                       tfetch_mem, print_int32_array_member, NULL,
-                      PAF_PRINT_INDICES | PAF_INDEX_XLAT_VALUE_INDEXED
-                       | XLAT_STYLE_FMT_D,
-                      ARRSZ_PAIR(inet_devconf_indices) - 1,
-                      "IPV4_DEVCONF_???");
+                      PAF_PRINT_INDICES | XLAT_STYLE_FMT_D,
+                      inet_devconf_indices, "IPV4_DEVCONF_???");
 
        return true;
 }
@@ -646,8 +646,8 @@ decode_ifla_inet6_flags(struct tcb *const tcp,
                        const unsigned int len,
                        const void *const opaque_data)
 {
-       const struct decode_nla_xlat_opts opts = {
-               ARRSZ_PAIR(inet6_if_flags) - 1, "IF_???",
+       static const struct decode_nla_xlat_opts opts = {
+               inet6_if_flags, "IF_???",
                .size = 4,
        };
 
@@ -668,10 +668,8 @@ decode_ifla_inet6_conf(struct tcb *const tcp,
 
        print_array_ex(tcp, addr, cnt, &elem, sizeof(elem),
                       tfetch_mem, print_int32_array_member, NULL,
-                      PAF_PRINT_INDICES | PAF_INDEX_XLAT_VALUE_INDEXED
-                       | XLAT_STYLE_FMT_D,
-                      ARRSZ_PAIR(inet6_devconf_indices) - 1,
-                      "DEVCONF_???");
+                      PAF_PRINT_INDICES | XLAT_STYLE_FMT_D,
+                      inet6_devconf_indices, "DEVCONF_???");
 
        return true;
 }
@@ -690,9 +688,8 @@ decode_ifla_inet6_stats(struct tcb *const tcp,
 
        print_array_ex(tcp, addr, cnt, &elem, sizeof(elem),
                       tfetch_mem, print_uint64_array_member, NULL,
-                      PAF_PRINT_INDICES | PAF_INDEX_XLAT_VALUE_INDEXED
-                       | XLAT_STYLE_FMT_U, ARRSZ_PAIR(snmp_ip_stats) - 1,
-                      "IPSTATS_MIB_???");
+                      PAF_PRINT_INDICES | XLAT_STYLE_FMT_U,
+                      snmp_ip_stats, "IPSTATS_MIB_???");
 
        return true;
 }
@@ -737,9 +734,8 @@ decode_ifla_inet6_icmp6_stats(struct tcb *const tcp,
 
        print_array_ex(tcp, addr, cnt, &elem, sizeof(elem),
                       tfetch_mem, print_uint64_array_member, NULL,
-                      PAF_PRINT_INDICES | PAF_INDEX_XLAT_VALUE_INDEXED
-                       | XLAT_STYLE_FMT_U, ARRSZ_PAIR(snmp_icmp6_stats) - 1,
-                      "ICMP6_MIB_???");
+                      PAF_PRINT_INDICES | XLAT_STYLE_FMT_U,
+                      snmp_icmp6_stats, "ICMP6_MIB_???");
 
        return true;
 }
@@ -750,9 +746,8 @@ decode_ifla_inet6_agm(struct tcb *const tcp,
                      const unsigned int len,
                      const void *const opaque_data)
 {
-       const struct decode_nla_xlat_opts opts = {
-               ARRSZ_PAIR(in6_addr_gen_mode) - 1, "IN6_ADDR_GEN_MODE_???",
-               .xt = XT_INDEXED,
+       static const struct decode_nla_xlat_opts opts = {
+               in6_addr_gen_mode, "IN6_ADDR_GEN_MODE_???",
                .size = 1,
        };
 
@@ -820,9 +815,48 @@ decode_ifla_af_spec(struct tcb *const tcp,
        return true;
 }
 
+static bool
+decode_ifla_prop_list_attr(struct tcb *const tcp,
+                          const kernel_ulong_t addr,
+                          const unsigned int len,
+                          const void *const opaque_data)
+{
+       const uintptr_t type = (uintptr_t) opaque_data;
+
+       switch (type) {
+       case IFLA_ALT_IFNAME:
+               return decode_nla_str(tcp, addr, len, NULL);
+       default:
+               return false;
+       }
+
+       return true;
+}
+
+static bool
+decode_ifla_prop_list(struct tcb *const tcp,
+                     const kernel_ulong_t addr,
+                     const unsigned int len,
+                     const void *const opaque_data)
+{
+       nla_decoder_t ifla_prop_list_decoder = &decode_ifla_prop_list_attr;
+
+       /*
+        * We're using the zero-size decoder list in order to avoid large table,
+        * as IFLA_ALT_IFNAME is the only attribute type we need to decode
+        * inside the IFLA_PROP_LIST attribute so far, and it has rather large
+        * value of 53.
+        */
+       decode_nlattr(tcp, addr, len, rtnl_link_attrs, "IFLA_???",
+                     &ifla_prop_list_decoder, 0, NULL);
+
+       return true;
+}
+
+
 static const nla_decoder_t ifinfomsg_nla_decoders[] = {
-       [IFLA_ADDRESS]          = NULL, /* unimplemented */
-       [IFLA_BROADCAST]        = NULL, /* unimplemented */
+       [IFLA_ADDRESS]          = decode_ifla_hwaddr,
+       [IFLA_BROADCAST]        = decode_ifla_hwaddr,
        [IFLA_IFNAME]           = decode_nla_str,
        [IFLA_MTU]              = decode_nla_u32,
        [IFLA_LINK]             = decode_nla_u32,
@@ -872,6 +906,9 @@ static const nla_decoder_t ifinfomsg_nla_decoders[] = {
        [IFLA_NEW_IFINDEX]      = decode_nla_ifindex,
        [IFLA_MIN_MTU]          = decode_nla_u32,
        [IFLA_MAX_MTU]          = decode_nla_u32,
+       [IFLA_PROP_LIST]        = decode_ifla_prop_list,
+       [IFLA_ALT_IFNAME]       = decode_nla_str,
+       [IFLA_PERM_ADDRESS]     = decode_ifla_hwaddr,
 };
 
 DECL_NETLINK_ROUTE_DECODER(decode_ifinfomsg)
@@ -887,10 +924,8 @@ DECL_NETLINK_ROUTE_DECODER(decode_ifinfomsg)
                if (!umoven_or_printaddr(tcp, addr + offset,
                                         sizeof(ifinfo) - offset,
                                         (char *) &ifinfo + offset)) {
-                       PRINT_FIELD_XVAL_SORTED_SIZED("", ifinfo, ifi_type,
-                                                     arp_hardware_types,
-                                                     arp_hardware_types_size,
-                                                     "ARPHRD_???");
+                       PRINT_FIELD_XVAL("", ifinfo, ifi_type,
+                                        arp_hardware_types, "ARPHRD_???");
                        PRINT_FIELD_IFINDEX(", ", ifinfo, ifi_index);
                        PRINT_FIELD_FLAGS(", ", ifinfo, ifi_flags,
                                          iffflags, "IFF_???");
@@ -906,6 +941,6 @@ DECL_NETLINK_ROUTE_DECODER(decode_ifinfomsg)
                tprints(", ");
                decode_nlattr(tcp, addr + offset, len - offset,
                              rtnl_link_attrs, "IFLA_???",
-                             ARRSZ_PAIR(ifinfomsg_nla_decoders), NULL);
+                             ARRSZ_PAIR(ifinfomsg_nla_decoders), &ifinfo);
        }
 }
index dbbfb8961e04dad64694967105b1a36c6f7843f5..a2030d48f68be71d18ba2134f623973b8ae4946e 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -9,27 +9,22 @@
 
 #include "defs.h"
 
-#ifdef HAVE_STRUCT_BR_PORT_MSG
+#include "netlink_route.h"
+#include "nlattr.h"
+#include "print_fields.h"
 
-# include "netlink_route.h"
-# include "nlattr.h"
-# include "print_fields.h"
+#include "types/rtnl_mdb.h"
+#include "netlink.h"
 
-# include <netinet/in.h>
-# 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"
+#include "xlat/mdb_flags.h"
+#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
@@ -41,21 +36,22 @@ decode_mdba_mdb_entry_info(struct tcb *const tcp,
                           const unsigned int len,
                           const void *const opaque_data)
 {
-# ifdef HAVE_STRUCT_BR_MDB_ENTRY
-       struct br_mdb_entry 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
+
+               /*
+                * Note that it's impossible to derive if flags/vid fields
+                * are present on all architectures except m68k; as a side note,
+                * v4.3-rc1~96^2~365 has introduced an ABI breakage on m68k.
+                */
                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);
 
@@ -77,9 +73,6 @@ decode_mdba_mdb_entry_info(struct tcb *const tcp,
        }
 
        return true;
-# else
-       return false;
-# endif /* HAVE_STRUCT_BR_MDB_ENTRY */
 }
 
 static const nla_decoder_t mdba_mdb_entry_nla_decoders[] = {
@@ -185,7 +178,7 @@ static const nla_decoder_t br_port_msg_nla_decoders[] = {
 
 DECL_NETLINK_ROUTE_DECODER(decode_br_port_msg)
 {
-       struct br_port_msg bpm = { .family = family };
+       struct_br_port_msg bpm = { .family = family };
        size_t offset = sizeof(bpm.family);
        bool decode_nla = false;
 
@@ -212,5 +205,3 @@ DECL_NETLINK_ROUTE_DECODER(decode_br_port_msg)
                              ARRAY_SIZE(br_port_msg_nla_decoders), NULL);
        }
 }
-
-#endif
index c542fee628fe6b0927164e67f933cadd57a2c35d..90e77eb5820652a43226f66d06dd544412cc0812 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2016-2019 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -58,7 +58,7 @@ decode_nda_cacheinfo(struct tcb *const tcp,
 
 static const nla_decoder_t ndmsg_nla_decoders[] = {
        [NDA_DST]               = decode_neigh_addr,
-       [NDA_LLADDR]            = decode_neigh_addr,
+       [NDA_LLADDR]            = decode_nla_hwaddr_nofamily,
        [NDA_CACHEINFO]         = decode_nda_cacheinfo,
        [NDA_PROBES]            = decode_nla_u32,
        [NDA_VLAN]              = decode_nla_u16,
@@ -69,6 +69,7 @@ static const nla_decoder_t ndmsg_nla_decoders[] = {
        [NDA_LINK_NETNSID]      = decode_nla_u32,
        [NDA_SRC_VNI]           = NULL,
        [NDA_PROTOCOL]          = decode_nla_u8,
+       [NDA_NH_ID]             = decode_nla_u32,
 };
 
 DECL_NETLINK_ROUTE_DECODER(decode_ndmsg)
index f9f5756b6f1e71f171a55fbecda30d0640c8113d..4c1752f211d8da7829422878f62c3c5b4db0ed55 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
 #include "nlattr.h"
 #include "print_fields.h"
 
-#include "netlink.h"
-#include <linux/rtnetlink.h>
-#ifdef HAVE_LINUX_NEIGHBOUR_H
-# include <linux/neighbour.h>
-#endif
+#include "types/rtnl_neightbl.h"
 
 #include "xlat/rtnl_neightbl_attrs.h"
 #include "xlat/rtnl_neightbl_parms_attrs.h"
@@ -27,8 +23,7 @@ decode_ndt_config(struct tcb *const tcp,
                  const unsigned int len,
                  const void *const opaque_data)
 {
-#ifdef HAVE_STRUCT_NDT_CONFIG
-       struct ndt_config ndtc;
+       struct_ndt_config ndtc;
 
        if (len < sizeof(ndtc))
                return false;
@@ -46,9 +41,6 @@ decode_ndt_config(struct tcb *const tcp,
        }
 
        return true;
-#else
-       return false;
-#endif
 }
 
 static const nla_decoder_t ndt_parms_nla_decoders[] = {
@@ -91,8 +83,7 @@ decode_ndt_stats(struct tcb *const tcp,
                 const unsigned int len,
                 const void *const opaque_data)
 {
-#ifdef HAVE_STRUCT_NDT_STATS
-       struct ndt_stats ndtst;
+       struct_ndt_stats ndtst;
        const unsigned int min_size =
                offsetofend(struct ndt_stats, ndts_forced_gc_runs);
        const unsigned int def_size = sizeof(ndtst);
@@ -114,17 +105,12 @@ decode_ndt_stats(struct tcb *const tcp,
                PRINT_FIELD_U(", ", ndtst, ndts_rcv_probes_ucast);
                PRINT_FIELD_U(", ", ndtst, ndts_periodic_gc_runs);
                PRINT_FIELD_U(", ", ndtst, ndts_forced_gc_runs);
-# ifdef HAVE_STRUCT_NDT_STATS_NDTS_TABLE_FULLS
                if (len >= def_size)
                        PRINT_FIELD_U(", ", ndtst, ndts_table_fulls);
-# endif
                tprints("}");
        }
 
        return true;
-#else
-       return false;
-#endif
 }
 
 static const nla_decoder_t ndtmsg_nla_decoders[] = {
index f1bca94d6c9d51b945b22a89c1a93a187c331559..f8f534a56686c5b18b578934c842767bfbb43f11 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -13,8 +13,7 @@
 #include "print_fields.h"
 
 #include <linux/ip.h>
-#include "netlink.h"
-#include <linux/rtnetlink.h>
+#include "types/rtnl_route.h"
 
 #include "xlat/ip_type_of_services.h"
 #include "xlat/lwtunnel_encap_types.h"
@@ -52,7 +51,7 @@ decode_nla_rt_proto(struct tcb *const tcp,
        if (len < sizeof(num))
                return false;
        if (!umove_or_printaddr(tcp, addr, &num))
-               printxval_search(routing_protocols, num, "RTPROT_???");
+               printxval(routing_protocols, num, "RTPROT_???");
        return true;
 }
 
@@ -138,8 +137,7 @@ decode_rta_mfc_stats(struct tcb *const tcp,
                     const unsigned int len,
                     const void *const opaque_data)
 {
-#ifdef HAVE_STRUCT_RTA_MFC_STATS
-       struct rta_mfc_stats mfcs;
+       struct_rta_mfc_stats mfcs;
 
        if (len < sizeof(mfcs))
                return false;
@@ -151,9 +149,6 @@ decode_rta_mfc_stats(struct tcb *const tcp,
        }
 
        return true;
-#else
-       return false;
-#endif
 }
 
 static bool
@@ -162,15 +157,14 @@ decode_rtvia(struct tcb *const tcp,
             const unsigned int len,
             const void *const opaque_data)
 {
-#ifdef HAVE_STRUCT_RTVIA
-       struct rtvia via;
+       struct_rtvia via;
 
        if (len < sizeof(via))
                return false;
        else if (!umove_or_printaddr(tcp, addr, &via)) {
                PRINT_FIELD_XVAL("{", via, rtvia_family, addrfams, "AF_???");
 
-               const unsigned int offset = offsetof(struct rtvia, rtvia_addr);
+               const unsigned int offset = offsetof(struct_rtvia, rtvia_addr);
 
                if (len > offset) {
                        tprints(", ");
@@ -181,9 +175,6 @@ decode_rtvia(struct tcb *const tcp,
        }
 
        return true;
-#else
-       return false;
-#endif
 }
 
 static bool
index 7c628dbd7f743fe95c3a24d0271a678e0c11ef45..87fb960f7aa945298a63c660339a309e2f8ef52b 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -42,8 +42,10 @@ decode_fib_rule_uid_range(struct tcb *const tcp,
                          const unsigned int len,
                          const void *const opaque_data)
 {
-#ifdef HAVE_STRUCT_FIB_RULE_UID_RANGE
-       struct fib_rule_uid_range range;
+       struct /* fib_rule_uid_range */ {
+               uint32_t start;
+               uint32_t end;
+       } range;
 
        if (len < sizeof(range))
                return false;
@@ -54,9 +56,6 @@ decode_fib_rule_uid_range(struct tcb *const tcp,
        }
 
        return true;
-#else
-       return false;
-#endif
 }
 
 static bool
index dd056e1969cbe0dd778dea8c425c74aae6cf8010..5cd28ce2d074f0d41877baea4fbc467a6739b2a3 100644 (file)
--- a/rtnl_tc.c
+++ b/rtnl_tc.c
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -174,6 +174,7 @@ static const nla_decoder_t tca_stats_nla_decoders[] = {
        [TCA_STATS_RATE_EST64]  = decode_gnet_stats_rate_est64,
        [TCA_STATS_PAD]         = NULL,
        [TCA_STATS_BASIC_HW]    = decode_gnet_stats_basic,
+       [TCA_STATS_PKT64]       = decode_nla_u64,
 };
 
 bool
@@ -278,6 +279,7 @@ static const nla_decoder_t tcmsg_nla_decoders[] = {
        [TCA_HW_OFFLOAD]        = decode_nla_u8,
        [TCA_INGRESS_BLOCK]     = decode_nla_u32,
        [TCA_EGRESS_BLOCK]      = decode_nla_u32,
+       [TCA_DUMP_FLAGS]        = decode_nla_u32,
 };
 
 DECL_NETLINK_ROUTE_DECODER(decode_tcmsg)
index b23d84d6c7f44d84365c07b779fcfcc989f397ff..a4d58b44f3a47674111681e61d5a9d73f84f1ed0 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
 #include "print_fields.h"
 
 #include "netlink.h"
+#include <linux/pkt_cls.h>
 #include <linux/rtnetlink.h>
 
 #include "xlat/rtnl_tc_action_attrs.h"
+#include "xlat/rtnl_tca_act_flags.h"
+#include "xlat/rtnl_tca_act_hw_stats.h"
+
+
+static bool
+decode_tca_act_flags(struct tcb *const tcp,
+                       const kernel_ulong_t addr,
+                       const unsigned int len,
+                       const void *const opaque_data)
+{
+       static const struct decode_nla_xlat_opts opts = {
+               rtnl_tca_act_flags, "TCA_ACT_FLAGS_???",
+               .size = 4,
+       };
+
+       return decode_nla_flags(tcp, addr, len, &opts);
+}
+
+static bool
+decode_tca_act_hw_stats(struct tcb *const tcp,
+                       const kernel_ulong_t addr,
+                       const unsigned int len,
+                       const void *const opaque_data)
+{
+       static const struct decode_nla_xlat_opts opts = {
+               rtnl_tca_act_hw_stats, "TCA_ACT_HW_STATS_???",
+               .size = 4,
+       };
+
+       return decode_nla_flags(tcp, addr, len, &opts);
+}
 
 static const nla_decoder_t tcamsg_nla_decoders[] = {
        [TCA_ACT_KIND]          = decode_nla_str,
@@ -23,7 +55,10 @@ static const nla_decoder_t tcamsg_nla_decoders[] = {
        [TCA_ACT_INDEX]         = decode_nla_u32,
        [TCA_ACT_STATS]         = decode_nla_tc_stats,
        [TCA_ACT_PAD]           = NULL,
-       [TCA_ACT_COOKIE]        = NULL /* default parser */
+       [TCA_ACT_COOKIE]        = NULL, /* default parser */
+       [TCA_ACT_FLAGS]         = decode_tca_act_flags,
+       [TCA_ACT_HW_STATS]      = decode_tca_act_hw_stats,
+       [TCA_ACT_USED_HW_STATS] = decode_tca_act_hw_stats,
 };
 
 DECL_NETLINK_ROUTE_DECODER(decode_tcamsg)
diff --git a/s390.c b/s390.c
index a650b23f92ceacfbfdcde72158d04435fac332f0..5864b542b23ffe04d8d9dd02b1a6b17b22cd32e8 100644 (file)
--- a/s390.c
+++ b/s390.c
@@ -1,7 +1,7 @@
 /*
  * s390-specific syscalls decoders.
  *
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -73,25 +73,29 @@ struct sthyi_hdr {
        uint16_t infhlen3; /**< Length of Hypervisor Section3 */
        uint16_t infgoff3; /**< Offset to Guest Section3 mapped by INF0GST */
        uint16_t infglen3; /**< Length of Guest Section3 */
-       /* 44 bytes in total */
 } ATTRIBUTE_PACKED;
+static_assert(sizeof(struct sthyi_hdr) == 44,
+             "Unexpected struct sthyi_hdr size");
 
 struct sthyi_machine {
        uint8_t  infmflg1; /**< Machine Flag Byte 1 reserved for IBM use */
        uint8_t  infmflg2; /**< Machine Flag Byte 2 reserved for IBM use */
        /**
-        * Machine Validity Byte 1
-        *  - 0x80 - Processor Count Validity. When this bit is on, it indicates
-        *           that INFMSCPS, INFMDCPS, INFMSIFL, and INFMDIFL contain
-        *           valid counts. The validity bit may be off when:
-        *   - STHYI support is not available on a lower level hypervisor, or
-        *   - Global Performance Data is not enabled.
-        *  - 0x40 - Machine ID Validity. This bit being on indicates that a
-        *           SYSIB 1.1.1 was obtained from STSI and information reported
-        *           in the following fields is valid: INFMTYPE, INFMMANU,
-        *           INFMSEQ, and INFMPMAN.
-        *  - 0x20 - Machine Name Validity. This bit being on indicates that the
-        *           INFMNAME field is valid.
+        * Machine Validity Byte 1.
+        *  - 0x80 - INFMPROC, Processor Count Validity. When this bit is on,
+        *           it indicates that INFMSCPS, INFMDCPS, INFMSIFL,
+        *           and INFMDIFL contain valid counts. The validity bit
+        *           may be off when:
+        *            - STHYI support is not available on a lower level
+        *              hypervisor, or
+        *            - Global Performance Data is not enabled.
+        *  - 0x40 - INFMMID, Machine ID Validity. This bit being on indicates
+        *           that a SYSIB 1.1.1 was obtained from STSI and information
+        *           reported in the following fields is valid: INFMTYPE,
+        *           INFMMANU, INFMSEQ, and INFMPMAN.
+        *  - 0x20 - INFMMNAM, Machine Name Validity. This bit being on
+        *           indicates that the INFMNAME field is valid.
+        *  - 0x10 - INFMPLNV, reserved for IBM use.
         */
        uint8_t  infmval1;
        uint8_t  infmval2; /**< Machine Validity Byte 2 reserved for IBM use */
@@ -120,32 +124,40 @@ struct sthyi_machine {
        char     infmmanu[16]; /**< EBCDIC Manufacturer */
        char     infmseq[16];  /**< EBCDIC Sequence Code */
        char     infmpman[4];  /**< EBCDIC Plant of Manufacture */
-       /* 60 bytes in total*/
+       char     reserved_1__[4]; /**< Reserved for future IBM use */
+       char     infmplnm[8];  /**< EBCDIC Reserved for IBM use */
 } ATTRIBUTE_PACKED;
+static_assert(sizeof(struct sthyi_machine) == 72,
+             "Unexpected struct sthyi_machine size");
 
 struct sthyi_partition {
        /**
-        * Partition Flag Byte 1
-        *  - 0x80 - Multithreading (MT) is enabled.
+        * Partition Flag Byte 1.
+        *  - 0x80 - INFPMTEN, multithreading (MT) is enabled.
+        *  - 0x40 - INFPPOOL, reserved for IBM use.
         */
        uint8_t  infpflg1;
        /** Partition Flag Byte 2 reserved for IBM use */
        uint8_t  infpflg2;
        /**
-        * Partition Validity Byte 1
-        *  - 0x80 - Processor count validity. This bit being on indicates that
-        *           INFPSCPS, INFPDCPS, INFPSIFL, and INFPDIFL contain valid
-        *           counts.
-        *  - 0x40 - Partition weight-based capped capacity validity. This bit
-        *           being on indicates that INFPWBCP and INFPWBIF are valid
-        *  - 0x20 - Partition absolute capped capacity validity. This bit being
-        *           on indicates that INFPABCP and INFPABIF are valid.
-        *  - 0x10 - Partition ID validity. This bit being on indicates that a
-        *           SYSIB 2.2.2 was obtained from STSI and information reported
-        *           in the following fields is valid: INFPPNUM and INFPPNAM.
-        *  - 0x08 - LPAR group absolute capacity capping information validity.
-        *           This bit being on indicates that INFPLGNM, INFPLGCP, and
-        *           INFPLGIF are valid.
+        * Partition Validity Byte 1.
+        *  - 0x80 - INFPPROC, Processor Count Validity. This bit being on
+        *           indicates that INFPSCPS, INFPDCPS, INFPSIFL, and INFPDIFL
+        *           contain valid counts.
+        *  - 0x40 - INFPWBCC, Partition Weight-Based Capped Capacity Validity.
+        *           This bit being on indicates that INFPWBCP and INFPWBIF
+        *           are valid.
+        *  - 0x20 - INFPACC, Partition Absolute Capped Capacity Validity.
+        *           This bit being on indicates that INFPABCP and INFPABIF
+        *           are valid.
+        *  - 0x10 - INFPPID, Partition ID Validity. This bit being on indicates
+        *           that a SYSIB 2.2.2 was obtained from STSI and information
+        *           reported in the following fields is valid: INFPPNUM
+        *           and INFPPNAM.
+        *  - 0x08 - INFPLGVL, LPAR Group Absolute Capacity Capping Information
+        *           Validity. This bit being on indicates that INFPLGNM,
+        *           INFPLGCP, and INFPLGIF are valid.
+        *  - 0x04 - INFPPLNV, reserved for IBM use.
         */
        uint8_t  infpval1;
        /** Partition Validity Byte 2 reserved for IBM use */
@@ -217,16 +229,19 @@ struct sthyi_partition {
         * contains a scaled number where 0x00010000 represents one core.
         */
        uint32_t infplgif;
-       /* 56 bytes */
+       char     infpplnm[8]; /**< Reserved for future IBM use. */
 } ATTRIBUTE_PACKED;
+static_assert(sizeof(struct sthyi_partition) == 64,
+             "Unexpected struct sthyi_partition size");
 
 struct sthyi_hypervisor {
        /**
         * Hypervisor Flag Byte 1
-        *  - 0x80 - Guest CPU usage hard limiting is using the consumption
-        *           method.
-        *  - 0x40 - If on, LIMITHARD caps use prorated core time for capping.
-        *           If off, raw CPU time is used.
+        *  - 0x80 - INFYLMCN, guest CPU usage hard limiting is using
+        *           the consumption method.
+        *  - 0x40 - INFYLMPR, if on, LIMITHARD caps use prorated core time
+        *           for capping. If off, raw CPU time is used.
+        *  - 0x20 - INFYMTEN, hypervisor is MT-enabled.
         */
        uint8_t infyflg1;
        uint8_t infyflg2; /**< Hypervisor Flag Byte 2 reserved for IBM use */
@@ -279,8 +294,34 @@ struct sthyi_hypervisor {
         * Number of cores when MT enabled.
         */
        uint16_t infydifl;
-       /* 32 bytes */
+       /**
+        * Mask of installed function codes. Bit position corresponding
+        * to the function code number is on if the function code is supported
+        * by this hypervisor. Bits may be on even if the guest
+        * is not authorized.
+        *
+        * Element 0 (INFYINS0) flags:
+        *  - 0x80 - INFYFCCP, FC = 0, Obtain CPU Capacity Info.
+        *  - 0x40 - INFYFHYP, FC = 1, Hypervisor Environment Info.
+        *  - 0x20 - INFYFGLS, FC = 2, Guest List.
+        *  - 0x10 - INFYFGST, FC = 3, Designated Guest Info.
+        *  - 0x08 - INFYFPLS, FC = 4, Resource Pool List.
+        *  - 0x04 - INFYFPDS, FC = 5, Designated Resource Pool Information.
+        *  - 0x02 - INFYFPML, FC = 6, Resource Pool Member List.
+        */
+       uint8_t  infyinsf[8];
+       /**
+        * Mask of authorized functions codes. Bit position corresponding
+        * to the function code number is on if the function code is supported
+        * by this hypervisor and the guest has been authorized
+        * in the directory.
+        *
+        * The flags are the same as in infyinsf.
+        */
+       uint8_t  infyautf[8];
 } ATTRIBUTE_PACKED;
+static_assert(sizeof(struct sthyi_hypervisor) == 48,
+             "Unexpected struct sthyi_hypervisor size");
 
 struct sthyi_guest {
        /**
@@ -366,8 +407,9 @@ struct sthyi_guest {
         * not capped.
         */
        uint32_t infgpicc;
-       /* 56 bytes */
 } ATTRIBUTE_PACKED;
+static_assert(sizeof(struct sthyi_guest) == 56,
+             "Unexpected struct sthyi_guest size");
 
 
 static void
@@ -434,13 +476,13 @@ decode_ebcdic(const char *ebcdic, char *ascii, size_t size)
 # define IS_BLANK(arr_) /* 0x40 is space in EBCDIC */ \
        is_filled(arr_, '\x40', sizeof(arr_) + MUST_BE_ARRAY(arr_))
 
-# define CHECK_SIZE(hdr_, size_, name_, ...) \
+# define CHECK_SIZE_EX(hdr_, min_size_, size_, name_, ...) \
        do { \
-               if ((size_) < sizeof(*(hdr_))) { \
+               if ((size_) < (min_size_)) { \
                        tprintf_comment("Invalid " name_ " with size " \
                                        "%hu < %zu expected", \
                                        ##__VA_ARGS__, \
-                                       (size_), sizeof(*(hdr_))); \
+                                       (size_), (min_size_)); \
                        print_quoted_string((char *) (hdr_), (size_), \
                                            QUOTE_FORCE_HEX); \
                        \
@@ -448,25 +490,32 @@ decode_ebcdic(const char *ebcdic, char *ascii, size_t size)
                } \
        } while (0)
 
-# define PRINT_UNKNOWN_TAIL(hdr_, size_) \
+# define CHECK_SIZE(hdr_, size_, name_, ...) \
+       CHECK_SIZE_EX((hdr_), sizeof(*(hdr_)), (size_), name_, ##__VA_ARGS__)
+
+# define PRINT_UNKNOWN_TAIL_EX(hdr_, hdr_size_, size_) \
        do { \
-               if ((size_) > sizeof(*(hdr_)) && \
-                   !is_filled((char *) ((hdr_) + 1), '\0', \
-                              (size_) - sizeof(*(hdr_)))) {    \
-                       tprints(", ");                             \
-                       print_quoted_string((char *) ((hdr_) + 1), \
-                                           (size_) - sizeof(*(hdr_)), \
+               if ((size_) > (hdr_size_) && \
+                   !is_filled(((char *) hdr_) + (hdr_size_), '\0', \
+                              (size_) - (hdr_size_))) { \
+                       tprints(", "); \
+                       print_quoted_string(((char *) hdr_) + (hdr_size_), \
+                                           (size_) - (hdr_size_), \
                                            QUOTE_FORCE_HEX); \
                } \
        } while (0)
 
+# define PRINT_UNKNOWN_TAIL(hdr_, size_) \
+       PRINT_UNKNOWN_TAIL_EX((hdr_), sizeof(*(hdr_)), (size_))
+
 static void
 print_sthyi_machine(struct tcb *tcp, struct sthyi_machine *hdr, uint16_t size,
                    bool *dummy)
 {
+       size_t last_decoded = offsetofend(typeof(*hdr), infmpman);
        int cnt_val, name_val, id_val;
 
-       CHECK_SIZE(hdr, size, "machine structure");
+       CHECK_SIZE_EX(hdr, last_decoded, size, "machine structure");
 
        tprints("/* machine */ {");
        if (!abbrev(tcp)) {
@@ -520,7 +569,18 @@ print_sthyi_machine(struct tcb *tcp, struct sthyi_machine *hdr, uint16_t size,
                if (id_val || !IS_ARRAY_ZERO(hdr->infmpman))
                        PRINT_FIELD_EBCDIC(", ", *hdr, infmpman);
 
-               PRINT_UNKNOWN_TAIL(hdr, size);
+               if (size >= offsetofend(struct sthyi_machine, infmplnm)) {
+                       last_decoded = offsetofend(struct sthyi_machine,
+                                                  infmplnm);
+
+                       if (!IS_ARRAY_ZERO(hdr->reserved_1__))
+                               PRINT_FIELD_HEX_ARRAY(", ", *hdr, reserved_1__);
+
+                       if (!IS_ARRAY_ZERO(hdr->infmplnm))
+                               PRINT_FIELD_EBCDIC(", ", *hdr, infmplnm);
+               }
+
+               PRINT_UNKNOWN_TAIL_EX(hdr, last_decoded, size);
        } else {
                tprints(", ...");
        }
@@ -532,11 +592,12 @@ static void
 print_sthyi_partition(struct tcb *tcp, struct sthyi_partition *hdr,
                      uint16_t size, bool *mt)
 {
+       size_t last_decoded = offsetofend(typeof(*hdr), infpabif);
        int cnt_val, wcap_val, acap_val, id_val, lpar_val;
 
        *mt = false;
 
-       CHECK_SIZE(hdr, size, "partition structure");
+       CHECK_SIZE_EX(hdr, last_decoded, size, "partition structure");
 
        *mt = !!(hdr->infpflg1 & 0x80);
 
@@ -601,21 +662,31 @@ print_sthyi_partition(struct tcb *tcp, struct sthyi_partition *hdr,
                if (acap_val || hdr->infpabif)
                        PRINT_FIELD_WEIGHT(", ", *hdr, infpabif);
 
-               if (!IS_ARRAY_ZERO(hdr->infplgnm)) {
-                       PRINT_FIELD_EBCDIC(", ", *hdr, infplgnm);
-
-                       PRINT_FIELD_WEIGHT(", ", *hdr, infplgcp);
-                       PRINT_FIELD_WEIGHT(", ", *hdr, infplgif);
-               } else {
-                       if (lpar_val)
-                               PRINT_FIELD_HEX_ARRAY(", ", *hdr, infplgnm);
-                       if (hdr->infplgcp)
-                               PRINT_FIELD_X(", ", *hdr, infplgcp);
-                       if (hdr->infplgif)
-                               PRINT_FIELD_X(", ", *hdr, infplgif);
+               if (size >= offsetofend(struct sthyi_partition, infplgif)) {
+                       if (!IS_ARRAY_ZERO(hdr->infplgnm)) {
+                               PRINT_FIELD_EBCDIC(", ", *hdr, infplgnm);
+
+                               PRINT_FIELD_WEIGHT(", ", *hdr, infplgcp);
+                               PRINT_FIELD_WEIGHT(", ", *hdr, infplgif);
+                       } else {
+                               if (lpar_val)
+                                       PRINT_FIELD_HEX_ARRAY(", ", *hdr, infplgnm);
+                               if (hdr->infplgcp)
+                                       PRINT_FIELD_X(", ", *hdr, infplgcp);
+                               if (hdr->infplgif)
+                                       PRINT_FIELD_X(", ", *hdr, infplgif);
+                       }
                }
 
-               PRINT_UNKNOWN_TAIL(hdr, size);
+               if (size >= offsetofend(struct sthyi_partition, infpplnm)) {
+                       last_decoded = offsetofend(struct sthyi_partition,
+                                                  infpplnm);
+
+                       if (!IS_ARRAY_ZERO(hdr->infpplnm))
+                               PRINT_FIELD_EBCDIC(", ", *hdr, infpplnm);
+               }
+
+               PRINT_UNKNOWN_TAIL_EX(hdr, last_decoded, size);
        } else {
                tprints(", ...");
        }
@@ -623,16 +694,57 @@ print_sthyi_partition(struct tcb *tcp, struct sthyi_partition *hdr,
        tprints("}");
 }
 
+static void
+print_funcs(const uint8_t funcs[8])
+{
+       static const char *func_descs[] = {
+               [0] = "Obtain CPU Capacity Info",
+               [1] = "Hypervisor Environment Info",
+               [2] = "Guest List",
+               [3] = "Designated Guest Info",
+               [4] = "Resource Pool List",
+               [5] = "Designated Resource Pool Information",
+               [6] = "Resource Pool Member List",
+       };
+
+       static_assert(ARRAY_SIZE(func_descs) <= 64,
+                     "func_descs is too big");
+
+       if (is_filled((const char *) funcs, 0, 8))
+               return;
+
+       bool cont = false;
+
+       for (size_t i = 0; i < ARRAY_SIZE(func_descs); i++) {
+               if (!func_descs[i])
+                       continue;
+
+               size_t b = i >> 3;
+               size_t f = 1 << (7 - (i & 7));
+
+               if (!(funcs[b] & f))
+                       continue;
+
+               tprintf("%s%zu: %s", cont ? ", " : " /* ", i, func_descs[i]);
+               cont = true;
+       }
+
+       if (cont)
+               tprints(" */");
+}
+
 static void
 print_sthyi_hypervisor(struct tcb *tcp, struct sthyi_hypervisor *hdr,
                       uint16_t size, int num, bool mt)
 {
-       CHECK_SIZE(hdr, size, "hypervisor %d structure", num);
+       size_t last_decoded = offsetofend(typeof(*hdr), infydifl);
+
+       CHECK_SIZE_EX(hdr, last_decoded, size, "hypervisor %d structure", num);
 
        tprintf("/* hypervisor %d */ ", num);
        PRINT_FIELD_0X("{", *hdr, infyflg1);
        if (!abbrev(tcp) && hdr->infyflg1)
-               tprintf_comment("%s%s%s%s%#.0x%s",
+               tprintf_comment("%s%s%s%s%s%s%#.0x%s",
                        hdr->infyflg1 & 0x80 ?
                                "0x80 - guest CPU usage had limiting is using "
                                "the consumption method" : "",
@@ -641,10 +753,14 @@ print_sthyi_hypervisor(struct tcb *tcp, struct sthyi_hypervisor *hdr,
                        hdr->infyflg1 & 0x40 ?
                                "0x40 - LIMITHARD caps use prorated core time "
                                "for capping" : "",
-                       (hdr->infyflg1 & 0xC0) && (hdr->infyflg1 & 0x3F) ?
+                       (hdr->infyflg1 & 0xC0) && (hdr->infyflg1 & 0x20) ?
                                ", " : "",
-                       hdr->infyflg1 & 0x3F,
-                       hdr->infyflg1 & 0x3F ? " - ???" : "");
+                       hdr->infyflg1 & 0x20 ?
+                               "0x20 - hypervisor is MT-enabled" :"",
+                       (hdr->infyflg1 & 0xE0) && (hdr->infyflg1 & 0x1F) ?
+                               ", " : "",
+                       hdr->infyflg1 & 0x1F,
+                       hdr->infyflg1 & 0x1F ? " - ???" : "");
 
        if (!abbrev(tcp)) {
                if (hdr->infyflg2) /* Reserved */
@@ -687,7 +803,18 @@ print_sthyi_hypervisor(struct tcb *tcp, struct sthyi_hypervisor *hdr,
                PRINT_FIELD_U(", ", *hdr, infydifl);
 
        if (!abbrev(tcp)) {
-               PRINT_UNKNOWN_TAIL(hdr, size);
+               if (size >= offsetofend(struct sthyi_hypervisor, infyautf)) {
+                       last_decoded = offsetofend(struct sthyi_hypervisor,
+                                                  infyautf);
+
+                       PRINT_FIELD_HEX_ARRAY(", ", *hdr, infyinsf);
+                       print_funcs(hdr->infyinsf);
+
+                       PRINT_FIELD_HEX_ARRAY(", ", *hdr, infyautf);
+                       print_funcs(hdr->infyautf);
+               }
+
+               PRINT_UNKNOWN_TAIL_EX(hdr, last_decoded, size);
        } else {
                tprints(", ...");
        }
@@ -962,7 +1089,9 @@ sthyi_sections:
 /**
  * Wrapper for the s390 STHYI instruction that provides hypervisor information.
  *
- * See https://www.ibm.com/support/knowledgecenter/SSB27U_6.3.0/com.ibm.zvm.v630.hcpb4/hcpb4sth.htm
+ * See
+ * https://www.ibm.com/support/knowledgecenter/SSB27U_6.4.0/com.ibm.zvm.v640.hcpb4/hcpb4sth.htm
+ * https://web.archive.org/web/20170306000915/https://www.ibm.com/support/knowledgecenter/SSB27U_6.3.0/com.ibm.zvm.v630.hcpb4/hcpb4sth.htm
  * for the instruction documentation.
  *
  * The difference in the kernel wrapper is that it doesn't require the 4K
diff --git a/sched.c b/sched.c
index 417ff742ee864936bbb6aea1aaac01abb1148b86..ff427e4877931c23d67c405ea221adf057fd83a6 100644 (file)
--- a/sched.c
+++ b/sched.c
@@ -2,7 +2,7 @@
  * Copyright (c) 2004 Ulrich Drepper <drepper@redhat.com>
  * Copyright (c) 2005 Roland McGrath <roland@redhat.com>
  * Copyright (c) 2012-2015 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2014-2019 The strace developers.
+ * Copyright (c) 2014-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
 #include <sched.h>
 #include "sched_attr.h"
 
+#include "print_fields.h"
+
 #include "xlat/schedulers.h"
 #include "xlat/sched_flags.h"
 
 SYS_FUNC(sched_getscheduler)
 {
        if (entering(tcp)) {
-               tprintf("%d", (int) tcp->u_arg[0]);
+               printpid(tcp, tcp->u_arg[0], PT_TGID);
        } else if (!syserror(tcp)) {
                tcp->auxstr = xlookup(schedulers, (kernel_ulong_t) tcp->u_rval);
                return RVAL_STR;
@@ -29,7 +31,8 @@ SYS_FUNC(sched_getscheduler)
 
 SYS_FUNC(sched_setscheduler)
 {
-       tprintf("%d, ", (int) tcp->u_arg[0]);
+       printpid(tcp, tcp->u_arg[0], PT_TGID);
+       tprints(", ");
        printxval(schedulers, tcp->u_arg[1], "SCHED_???");
        tprints(", ");
        printnum_int(tcp, tcp->u_arg[2], "%d");
@@ -39,16 +42,19 @@ SYS_FUNC(sched_setscheduler)
 
 SYS_FUNC(sched_getparam)
 {
-       if (entering(tcp))
-               tprintf("%d, ", (int) tcp->u_arg[0]);
-       else
+       if (entering(tcp)) {
+               printpid(tcp, tcp->u_arg[0], PT_TGID);
+               tprints(", ");
+       } else {
                printnum_int(tcp, tcp->u_arg[1], "%d");
+       }
        return 0;
 }
 
 SYS_FUNC(sched_setparam)
 {
-       tprintf("%d, ", (int) tcp->u_arg[0]);
+       printpid(tcp, tcp->u_arg[0], PT_TGID);
+       tprints(", ");
        printnum_int(tcp, tcp->u_arg[1], "%d");
 
        return RVAL_DECODED;
@@ -66,7 +72,8 @@ do_sched_rr_get_interval(struct tcb *const tcp,
                         const print_obj_by_addr_fn print_ts)
 {
        if (entering(tcp)) {
-               tprintf("%d, ", (int) tcp->u_arg[0]);
+               printpid(tcp, tcp->u_arg[0], PT_TGID);
+               tprints(", ");
        } else {
                if (syserror(tcp))
                        printaddr(tcp->u_arg[1]);
@@ -94,6 +101,7 @@ print_sched_attr(struct tcb *const tcp, const kernel_ulong_t addr,
 {
        struct sched_attr attr = {};
        unsigned int size;
+       bool is_set = false;
 
        if (usize) {
                /* called from sched_getattr */
@@ -104,6 +112,8 @@ print_sched_attr(struct tcb *const tcp, const kernel_ulong_t addr,
                size = attr.size;
        } else {
                /* called from sched_setattr */
+               is_set = true;
+
                if (umove_or_printaddr(tcp, addr, &attr.size))
                        return;
                usize = attr.size;
@@ -116,34 +126,47 @@ print_sched_attr(struct tcb *const tcp, const kernel_ulong_t addr,
                }
        }
 
-       tprintf("{size=%u", attr.size);
+       PRINT_FIELD_U("{", attr, size);
 
-       if (size >= SCHED_ATTR_MIN_SIZE) {
-               tprints(", sched_policy=");
-               printxval(schedulers, attr.sched_policy, "SCHED_???");
-               tprints(", sched_flags=");
-               printflags64(sched_flags, attr.sched_flags, "SCHED_FLAG_???");
+       if (size < SCHED_ATTR_MIN_SIZE)
+               goto end;
 
-#define PRINT_SCHED_FIELD(field, fmt)                  \
-               tprintf(", " #field "=%" fmt, attr.field)
+       if (!is_set
+           || (int) attr.sched_policy < 0
+           || !(attr.sched_flags & (SCHED_FLAG_KEEP_POLICY
+                                    | SCHED_FLAG_KEEP_PARAMS)))
+               PRINT_FIELD_XVAL(", ", attr, sched_policy, schedulers,
+                                "SCHED_???");
+       PRINT_FIELD_FLAGS(", ", attr, sched_flags, sched_flags,
+                         "SCHED_FLAG_???");
 
-               PRINT_SCHED_FIELD(sched_nice, "d");
-               PRINT_SCHED_FIELD(sched_priority, "u");
-               PRINT_SCHED_FIELD(sched_runtime, PRIu64);
-               PRINT_SCHED_FIELD(sched_deadline, PRIu64);
-               PRINT_SCHED_FIELD(sched_period, PRIu64);
 
-               if (usize > size)
-                       tprints(", ...");
+       if (!is_set || !(attr.sched_flags & SCHED_FLAG_KEEP_PARAMS)) {
+               PRINT_FIELD_D(", ", attr, sched_nice);
+               PRINT_FIELD_U(", ", attr, sched_priority);
+               PRINT_FIELD_U(", ", attr, sched_runtime);
+               PRINT_FIELD_U(", ", attr, sched_deadline);
+               PRINT_FIELD_U(", ", attr, sched_period);
        }
 
+       if (size < SCHED_ATTR_SIZE_VER1)
+               goto end;
+
+       PRINT_FIELD_U(", ", attr, sched_util_min);
+       PRINT_FIELD_U(", ", attr, sched_util_max);
+
+end:
+       if ((is_set ? usize : attr.size) > size)
+               tprints(", ...");
+
        tprints("}");
 }
 
 SYS_FUNC(sched_setattr)
 {
        if (entering(tcp)) {
-               tprintf("%d, ", (int) tcp->u_arg[0]);
+               printpid(tcp, tcp->u_arg[0], PT_TGID);
+               tprints(", ");
                print_sched_attr(tcp, tcp->u_arg[1], 0);
        } else {
                struct sched_attr attr;
@@ -162,7 +185,8 @@ SYS_FUNC(sched_setattr)
 SYS_FUNC(sched_getattr)
 {
        if (entering(tcp)) {
-               tprintf("%d, ", (int) tcp->u_arg[0]);
+               printpid(tcp, tcp->u_arg[0], PT_TGID);
+               tprints(", ");
        } else {
                const unsigned int size = tcp->u_arg[2];
 
index c305ccfb65a0d3453b15d4e88894cc8b7a92ad24..ce3e327dc040428ab7ff3809bf54cd34981da503 100644 (file)
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2017-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -19,8 +20,14 @@ struct sched_attr {
        uint64_t sched_runtime;
        uint64_t sched_deadline;
        uint64_t sched_period;
+       /* ver. 1 fields below */
+       uint32_t sched_util_min;
+       uint32_t sched_util_max;
 };
 
 # define SCHED_ATTR_MIN_SIZE   48
+# ifndef SCHED_ATTR_SIZE_VER1
+#  define SCHED_ATTR_SIZE_VER1  56
+# endif
 
 #endif /* !STRACE_SCHED_ATTR_H */
index 11814b15f9f50c714b253fe00eef31c630d73c77..8e2e6e38ff03c1b136877687b54be6d0ddde8baf 100644 (file)
--- a/scno.head
+++ b/scno.head
@@ -5,6 +5,8 @@
  * SPDX-License-Identifier: LGPL-2.1-or-later
  */
 
+#include <asm/unistd.h>
+
 #if defined __X32_SYSCALL_BIT && defined __NR_read \
  && (__X32_SYSCALL_BIT & __NR_read) == __X32_SYSCALL_BIT
 # define SYSCALL_BIT __X32_SYSCALL_BIT
diff --git a/scsi.c b/scsi.c
index 02749a38bbd9d9528c7f61a951f59bc38317977c..e968b41ef6d8055f12d33507814638aa76d28739 100644 (file)
--- a/scsi.c
+++ b/scsi.c
@@ -1,6 +1,7 @@
 /*
  * Copyright (c) 2007 Vladimir Nadvornik <nadvornik@suse.cz>
  * Copyright (c) 2007-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2007-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -12,7 +13,9 @@
 # include <scsi/sg.h>
 #endif
 
-#include "xlat/scsi_sg_commands.h"
+#define XLAT_MACROS_ONLY
+# include "xlat/scsi_sg_commands.h"
+#undef XLAT_MACROS_ONLY
 #include "xlat/sg_scsi_reset.h"
 
 static int
index fcaf9d4ffaf2c58ee4d7348d77ac877a644e69cf..49b4ebd53ae0142f66f1bdd4c82a16cd40061964 100644 (file)
--- a/signal.c
+++ b/signal.c
@@ -6,7 +6,7 @@
  * Copyright (c) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation
  *                     Linux for s390 port by D.J. Barrow
  *                    <barrow_dj@mail.yahoo.com,djbarrow@de.ibm.com>
- * Copyright (c) 2001-2019 The strace developers.
+ * Copyright (c) 1999-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -138,25 +138,6 @@ sprintsigname(const int sig)
        return buf;
 }
 
-static unsigned int
-popcount32(const uint32_t *a, unsigned int size)
-{
-       unsigned int count = 0;
-
-       for (; size; ++a, --size) {
-               uint32_t x = *a;
-
-#ifdef HAVE___BUILTIN_POPCOUNT
-               count += __builtin_popcount(x);
-#else
-               for (; x; ++count)
-                       x &= x - 1;
-#endif
-       }
-
-       return count;
-}
-
 const char *
 sprintsigmask_n(const char *prefix, const void *sig_mask, unsigned int bytes)
 {
@@ -458,17 +439,31 @@ SYS_FUNC(sigprocmask)
 SYS_FUNC(kill)
 {
        /* pid */
-       tprintf("%d, ", (int) tcp->u_arg[0]);
+       printpid_tgid_pgid(tcp, tcp->u_arg[0]);
+       tprints(", ");
        /* signal */
        printsignal(tcp->u_arg[1]);
 
        return RVAL_DECODED;
 }
 
+SYS_FUNC(tkill)
+{
+       printpid(tcp, tcp->u_arg[0], PT_TID);
+       tprints(", ");
+       printsignal(tcp->u_arg[1]);
+
+       return RVAL_DECODED;
+}
+
 SYS_FUNC(tgkill)
 {
-       /* tgid, tid */
-       tprintf("%d, %d, ", (int) tcp->u_arg[0], (int) tcp->u_arg[1]);
+       /* tgid */
+       printpid(tcp, tcp->u_arg[0], PT_TGID);
+       tprints(", ");
+       /* tid */
+       printpid(tcp, tcp->u_arg[1], PT_TID);
+       tprints(", ");
        /* signal */
        printsignal(tcp->u_arg[2]);
 
@@ -634,7 +629,8 @@ print_sigqueueinfo(struct tcb *const tcp, const int sig,
 
 SYS_FUNC(rt_sigqueueinfo)
 {
-       tprintf("%d, ", (int) tcp->u_arg[0]);
+       printpid(tcp, tcp->u_arg[0], PT_TGID);
+       tprints(", ");
        print_sigqueueinfo(tcp, tcp->u_arg[1], tcp->u_arg[2]);
 
        return RVAL_DECODED;
@@ -642,7 +638,10 @@ SYS_FUNC(rt_sigqueueinfo)
 
 SYS_FUNC(rt_tgsigqueueinfo)
 {
-       tprintf("%d, %d, ", (int) tcp->u_arg[0], (int) tcp->u_arg[1]);
+       printpid(tcp, tcp->u_arg[0], PT_TGID);
+       tprints(", ");
+       printpid(tcp, tcp->u_arg[1], PT_TID);
+       tprints(", ");
        print_sigqueueinfo(tcp, tcp->u_arg[2], tcp->u_arg[3]);
 
        return RVAL_DECODED;
diff --git a/sock.c b/sock.c
index a0152bddd4f5191a80c6b7054f7a86b9f1c0725a..1dfbf7ea137d8086bd15be3a753526a00e383cbc 100644 (file)
--- a/sock.c
+++ b/sock.c
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com>
- * Copyright (c) 1996-2018 The strace developers.
+ * Copyright (c) 1996-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -37,8 +37,6 @@ print_ifname(const char *ifname)
        print_quoted_string(ifname, IFNAMSIZ + 1, QUOTE_0_TERMINATED);
 }
 
-DIAG_PUSH_IGNORE_OVERRIDE_INIT
-
 static void
 print_ifreq(struct tcb *const tcp, const unsigned int code,
            const kernel_ulong_t arg, const struct_ifreq *const ifr)
@@ -46,104 +44,27 @@ print_ifreq(struct tcb *const tcp, const unsigned int code,
        switch (code) {
        case SIOCSIFADDR:
        case SIOCGIFADDR:
-               PRINT_FIELD_SOCKADDR("", *ifr, ifr_addr);
+               PRINT_FIELD_SOCKADDR("", *ifr, ifr_addr, tcp);
                break;
        case SIOCSIFDSTADDR:
        case SIOCGIFDSTADDR:
-               PRINT_FIELD_SOCKADDR("", *ifr, ifr_dstaddr);
+               PRINT_FIELD_SOCKADDR("", *ifr, ifr_dstaddr, tcp);
                break;
        case SIOCSIFBRDADDR:
        case SIOCGIFBRDADDR:
-               PRINT_FIELD_SOCKADDR("", *ifr, ifr_broadaddr);
+               PRINT_FIELD_SOCKADDR("", *ifr, ifr_broadaddr, tcp);
                break;
        case SIOCSIFNETMASK:
        case SIOCGIFNETMASK:
-               PRINT_FIELD_SOCKADDR("", *ifr, ifr_netmask);
+               PRINT_FIELD_SOCKADDR("", *ifr, ifr_netmask, tcp);
                break;
        case SIOCSIFHWADDR:
        case SIOCGIFHWADDR: {
-               static uint8_t hwaddr_sizes[] = {
-                       [0 ... ARPHRD_IEEE802_TR] = 255,
-
-                       [ARPHRD_NETROM]     =  7 /* AX25_ADDR_LEN */,
-                       [ARPHRD_ETHER]      =  6 /* ETH_ALEN */,
-                       /* ARPHRD_EETHER - no actual devices in Linux */
-                       [ARPHRD_AX25]       =  7 /* AX25_ADDR_LEN */,
-                       /* ARPHRD_PRONET - no actual devices in Linux */
-                       /* ARPHRD_CHAOS - no actual devices in Linux */
-                       [ARPHRD_IEEE802]    =  6 /* FC_ALEN */,
-                       [ARPHRD_ARCNET]     =  1 /* ARCNET_ALEN */,
-                       /* ARPHRD_APPLETLK - no actual devices in Linux */
-                       [ARPHRD_DLCI]       = sizeof(short),
-                       /* ARPHRD_ATM - no explicit setting */
-                       /* ARPHRD_METRICOM - no actual devices in Linux */
-                       [ARPHRD_IEEE1394]   = 16 /* FWNET_ALEN */,
-                       [ARPHRD_EUI64]      =  8 /* EUI64_ADDR_LEN */,
-                       [ARPHRD_INFINIBAND] = 20 /* INFINIBAND_ALEN */,
-                       [ARPHRD_SLIP]       =  0,
-                       /* ARPHRD_CSLIP - no actual devices in Linux */
-                       /* ARPHRD_SLIP6 - no actual devices in Linux */
-                       /* ARPHRD_CSLIP6 - no actual devices in Linux */
-                       /* ARPHRD_RSRVD - no actual devices in Linux */
-                       /* ARPHRD_ADAPT - no actual devices in Linux */
-                       [ARPHRD_ROSE]       =  5 /* ROSE_ADDR_LEN */,
-                       [ARPHRD_X25]        =  0,
-                       /* ARPHRD_HWX25 - no actual devices in Linux */
-                       [ARPHRD_CAN]        =  0,
-                       [ARPHRD_PPP]        =  0,
-                       /* ARPHRD_CISCO - no actual devices in Linux */
-                       /* ARPHRD_LAPB - no actual devices in Linux */
-                       /* ARPHRD_DDCMP - no actual devices in Linux */
-                       [ARPHRD_RAWHDLC]    =  0,
-                       [ARPHRD_RAWIP]      =  0,
-                       [ARPHRD_TUNNEL]     =  4 /* IPIP */,
-                       [ARPHRD_TUNNEL6]    = 16 /* sizeof(struct in6_addr) */,
-                       /* ARPHRD_FRAD - no actual devices in Linux */
-                       /* ARPHRD_SKIP - no actual devices in Linux */
-                       [ARPHRD_LOOPBACK]   =  6 /* ETH_ALEN */,
-                       [ARPHRD_LOCALTLK]   =  1 /* LTALK_ALEN */,
-                       [ARPHRD_FDDI]       =  6 /* FDDI_K_ALEN */,
-                       /* ARPHRD_BIF - no actual devices in Linux */
-                       [ARPHRD_SIT]        =  4,
-                       [ARPHRD_IPDDP]      =  0,
-                       [ARPHRD_IPGRE]      =  4,
-                       [ARPHRD_PIMREG]     =  0,
-                       [ARPHRD_HIPPI]      =  6 /* HIPPI_ALEN */,
-                       /* ARPHRD_ASH - no actual devices in Linux */
-                       /* ARPHRD_ECONET - no actual devices in Linux */
-                       [ARPHRD_IRDA]       =  4 /* LAP_ALEN */,
-                       /* ARPHRD_FCPP - no actual devices in Linux */
-                       /* ARPHRD_FCAL - no actual devices in Linux */
-                       /* ARPHRD_FCPL - no actual devices in Linux */
-                       /* ARPHRD_FCFABRIC - no actual devices in Linux */
-                       /* ARPHRD_IEEE802_TR - no actual devices in Linux */
-                       [ARPHRD_IEEE80211]  =  6 /* ETH_ALEN */,
-                       [ARPHRD_IEEE80211_PRISM] = 6 /* ETH_ALEN */,
-                       [ARPHRD_IEEE80211_RADIOTAP] = 6 /* ETH_ALEN */,
-                       [ARPHRD_IEEE802154]
-                               = 8 /* IEEE802154_EXTENDED_ADDR_LEN */,
-                       [ARPHRD_IEEE802154_MONITOR]
-                               = 8 /* IEEE802154_EXTENDED_ADDR_LEN */,
-                       [ARPHRD_PHONET]     =  1,
-                       [ARPHRD_PHONET_PIPE] = 1,
-                       [ARPHRD_CAIF]       =  0,
-                       [ARPHRD_IP6GRE]     = 16 /* sizeof(struct in6_addr) */,
-                       [ARPHRD_NETLINK]    =  0,
-                       [ARPHRD_6LOWPAN]    =  8 /* EUI64_ADDR_LEN */
-                               /* ^ or ETH_ALEN, depending on lltype */,
-                       [ARPHRD_VSOCKMON]   =  0,
-               };
-
-               uint16_t proto = ifr->ifr_hwaddr.sa_family;
-               uint8_t sz = (proto < ARRAY_SIZE(hwaddr_sizes))
-                               ? hwaddr_sizes[proto] : 255;
-
-               PRINT_FIELD_XVAL_SORTED_SIZED("ifr_hwaddr={", ifr->ifr_hwaddr,
-                                             sa_family, arp_hardware_types,
-                                             arp_hardware_types_size,
-                                             "ARPHRD_???");
-               PRINT_FIELD_MAC_SZ(", ", ifr->ifr_hwaddr, sa_data,
-                                  MIN(sizeof(ifr->ifr_hwaddr.sa_data), sz));
+               PRINT_FIELD_XVAL("ifr_hwaddr={", ifr->ifr_hwaddr, sa_family,
+                                arp_hardware_types, "ARPHRD_???");
+               PRINT_FIELD_HWADDR_SZ(", ", ifr->ifr_hwaddr, sa_data,
+                                     sizeof(ifr->ifr_hwaddr.sa_data),
+                                     ifr->ifr_hwaddr.sa_family);
                tprints("}");
                break;
        }
@@ -184,8 +105,6 @@ print_ifreq(struct tcb *const tcp, const unsigned int code,
        }
 }
 
-DIAG_POP_IGNORE_OVERRIDE_INIT
-
 static unsigned int
 print_ifc_len(int len)
 {
@@ -207,7 +126,7 @@ print_ifconf_ifreq(struct tcb *tcp, void *elem_buf, size_t elem_size,
 
        tprints("{ifr_name=");
        print_ifname(ifr->ifr_name);
-       PRINT_FIELD_SOCKADDR(", ", *ifr, ifr_addr);
+       PRINT_FIELD_SOCKADDR(", ", *ifr, ifr_addr, tcp);
        tprints("}");
 
        return true;
index acba7f02b65682b909a06031921e3b7063ee0934..fb8887c217fb936b9cac6b76a31a785d94f0680b 100644 (file)
@@ -4,7 +4,7 @@
  * Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com>
  * Copyright (c) 1996-2000 Wichert Akkerman <wichert@cistron.nl>
  * Copyright (c) 2005-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2019 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
 #include "xlat/bluetooth_l2_psm.h"
 #include "xlat/hci_channels.h"
 
-#define SIZEOF_SA_FAMILY sizeof(((struct sockaddr *) 0)->sa_family)
+#define SIZEOF_SA_FAMILY sizeof_field(struct sockaddr, sa_family)
 
 const size_t arp_hardware_types_size = ARRAY_SIZE(arp_hardware_types) - 1;
 const size_t ethernet_protocols_size = ARRAY_SIZE(ethernet_protocols) - 1;
 
 static void
-print_sockaddr_data_un(const void *const buf, const int addrlen)
+print_sockaddr_data_un(struct tcb *tcp, const void *const buf, const int addrlen)
 {
        const struct sockaddr_un *const sa_un = buf;
        const int un_len = addrlen > (int) sizeof(*sa_un)
@@ -172,7 +172,8 @@ decode_inet_addr(struct tcb *const tcp,
 }
 
 static void
-print_sockaddr_data_in(const void *const buf, const int addrlen)
+print_sockaddr_data_in(struct tcb *tcp, const void *const buf,
+                      const int addrlen)
 {
        const struct sockaddr_in *const sa_in = buf;
 
@@ -183,7 +184,8 @@ print_sockaddr_data_in(const void *const buf, const int addrlen)
 #define SIN6_MIN_LEN offsetof(struct sockaddr_in6, sin6_scope_id)
 
 static void
-print_sockaddr_data_in6(const void *const buf, const int addrlen)
+print_sockaddr_data_in6(struct tcb *tcp, const void *const buf,
+                       const int addrlen)
 {
        const struct sockaddr_in6 *const sa_in6 = buf;
 
@@ -322,7 +324,8 @@ print_ax25_addr(const void /* ax25_address */ *addr_void)
 }
 
 static void
-print_sockaddr_data_ax25(const void *const buf, const int addrlen)
+print_sockaddr_data_ax25(struct tcb *tcp, const void *const buf,
+                        const int addrlen)
 {
        const struct full_sockaddr_ax25 *const sax25 = buf;
        size_t addrlen_us = MAX(addrlen, 0);
@@ -372,7 +375,8 @@ digis_end:
 }
 
 static void
-print_sockaddr_data_ipx(const void *const buf, const int addrlen)
+print_sockaddr_data_ipx(struct tcb *tcp, const void *const buf,
+                       const int addrlen)
 {
        const struct sockaddr_ipx *const sa_ipx = buf;
        unsigned int i;
@@ -399,7 +403,8 @@ print_x25_addr(const void /* struct x25_address */ *addr_void)
 }
 
 static void
-print_sockaddr_data_x25(const void *const buf, const int addrlen)
+print_sockaddr_data_x25(struct tcb *tcp, const void *const buf,
+                       const int addrlen)
 {
        const struct sockaddr_x25 *const sa_x25 = buf;
 
@@ -407,11 +412,11 @@ print_sockaddr_data_x25(const void *const buf, const int addrlen)
 }
 
 static void
-print_sockaddr_data_nl(const void *const buf, const int addrlen)
+print_sockaddr_data_nl(struct tcb *tcp, const void *const buf, const int addrlen)
 {
        const struct sockaddr_nl *const sa_nl = buf;
 
-       PRINT_FIELD_D("", *sa_nl, nl_pid);
+       PRINT_FIELD_TGID("", *sa_nl, nl_pid, tcp);
        PRINT_FIELD_0X(", ", *sa_nl, nl_groups);
 }
 
@@ -433,8 +438,8 @@ print_sll_protocol(const struct sockaddr_ll *const sa_ll)
                tprints(" /* ");
 
        tprints("htons(");
-       printxval_search_ex(ethernet_protocols, ntohs(sa_ll->sll_protocol),
-                           "ETH_P_???", XLAT_STYLE_ABBREV);
+       printxval_ex(ethernet_protocols, ntohs(sa_ll->sll_protocol),
+                    "ETH_P_???", XLAT_STYLE_ABBREV);
        tprints(")");
 
        if (x_style == XLAT_STYLE_VERBOSE)
@@ -442,16 +447,17 @@ print_sll_protocol(const struct sockaddr_ll *const sa_ll)
 }
 
 static void
-print_sockaddr_data_ll(const void *const buf, const int addrlen)
+print_sockaddr_data_ll(struct tcb *tcp, const void *const buf,
+                      const int addrlen)
 {
        const struct sockaddr_ll *const sa_ll = buf;
 
        print_sll_protocol(sa_ll);
        PRINT_FIELD_IFINDEX(", ", *sa_ll, sll_ifindex);
        tprints(", sll_hatype=");
-       printxval_search(arp_hardware_types, sa_ll->sll_hatype, "ARPHRD_???");
+       printxval(arp_hardware_types, sa_ll->sll_hatype, "ARPHRD_???");
        tprints(", sll_pkttype=");
-       printxval_index(af_packet_types, sa_ll->sll_pkttype, "PACKET_???");
+       printxval(af_packet_types, sa_ll->sll_pkttype, "PACKET_???");
        tprintf(", sll_halen=%u", sa_ll->sll_halen);
        if (sa_ll->sll_halen) {
                const unsigned int oob_halen =
@@ -567,7 +573,8 @@ print_bluetooth_l2_cid_end:
 }
 
 static void
-print_sockaddr_data_bt(const void *const buf, const int addrlen)
+print_sockaddr_data_bt(struct tcb *tcp, const void *const buf,
+                      const int addrlen)
 {
        struct sockaddr_hci {
                /* sa_family_t */ uint16_t      hci_family;
@@ -599,12 +606,21 @@ print_sockaddr_data_bt(const void *const buf, const int addrlen)
        };
 
        switch (addrlen) {
+       case offsetofend(struct sockaddr_hci, hci_dev):
        case sizeof(struct sockaddr_hci): {
                const struct sockaddr_hci *const hci = buf;
-               tprintf("hci_dev=htobs(%hu), hci_channel=",
-                       btohs(hci->hci_dev));
-               printxval_index(hci_channels, hci->hci_channel,
-                               "HCI_CHANNEL_???");
+               tprintf("hci_dev=htobs(%hu)", btohs(hci->hci_dev));
+
+               /*
+                * hci_channel field has been introduced
+                * Linux commit in v2.6.38-rc1~476^2~14^2~3^2~43^2~9.
+                */
+               if (addrlen == sizeof(struct sockaddr_hci)) {
+                       tprints(", hci_channel=");
+                       printxval(hci_channels, hci->hci_channel,
+                                 "HCI_CHANNEL_???");
+               }
+
                break;
        }
        case sizeof(struct sockaddr_sco): {
@@ -630,8 +646,8 @@ print_sockaddr_data_bt(const void *const buf, const int addrlen)
 
                if (addrlen == sizeof(struct sockaddr_l2)) {
                        tprints(", l2_bdaddr_type=");
-                       printxval_index(bdaddr_types, l2->l2_bdaddr_type,
-                                       "BDADDR_???");
+                       printxval(bdaddr_types, l2->l2_bdaddr_type,
+                                 "BDADDR_???");
                }
 
                break;
@@ -642,7 +658,7 @@ print_sockaddr_data_bt(const void *const buf, const int addrlen)
        }
 }
 
-typedef void (* const sockaddr_printer)(const void *const, const int);
+typedef void (* const sockaddr_printer)(struct tcb *tcp, const void *const, const int);
 
 static const struct {
        const sockaddr_printer printer;
@@ -660,12 +676,12 @@ static const struct {
 };
 
 void
-print_sockaddr(const void *const buf, const int addrlen)
+print_sockaddr(struct tcb *tcp, const void *const buf, const int addrlen)
 {
        const struct sockaddr *const sa = buf;
 
        tprints("{sa_family=");
-       printxval_index(addrfams, sa->sa_family, "AF_???");
+       printxval(addrfams, sa->sa_family, "AF_???");
 
        if (addrlen > (int) SIZEOF_SA_FAMILY) {
                tprints(", ");
@@ -673,7 +689,7 @@ print_sockaddr(const void *const buf, const int addrlen)
                if (sa->sa_family < ARRAY_SIZE(sa_printers)
                    && sa_printers[sa->sa_family].printer
                    && addrlen >= sa_printers[sa->sa_family].min_len) {
-                       sa_printers[sa->sa_family].printer(buf, addrlen);
+                       sa_printers[sa->sa_family].printer(tcp, buf, addrlen);
                } else {
                        print_sockaddr_data_raw(buf, addrlen);
                }
@@ -704,7 +720,7 @@ decode_sockaddr(struct tcb *const tcp, const kernel_ulong_t addr, int addrlen)
 
        memset(&addrbuf.pad[addrlen], 0, sizeof(addrbuf.pad) - addrlen);
 
-       print_sockaddr(&addrbuf, addrlen);
+       print_sockaddr(tcp, &addrbuf, addrlen);
 
        return addrbuf.sa.sa_family;
 }
index d6191187768bded2356a55571f688b67b76fbf92..be459714251a44b18eb19548d3d71074b15b0dc0 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2014 Zubin Mithra <zubin.mithra@gmail.com>
  * Copyright (c) 2014-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2014-2018 The strace developers.
+ * Copyright (c) 2014-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -21,7 +21,7 @@
 
 #include <sys/un.h>
 #ifndef UNIX_PATH_MAX
-# define UNIX_PATH_MAX sizeof(((struct sockaddr_un *) 0)->sun_path)
+# define UNIX_PATH_MAX sizeof_field(struct sockaddr_un, sun_path)
 #endif
 
 #include "xstring.h"
diff --git a/stage_output.c b/stage_output.c
new file mode 100644 (file)
index 0000000..3bfbdba
--- /dev/null
@@ -0,0 +1,75 @@
+/*
+ * Copyright (c) 2017 Intel Corporation
+ * Copyright (c) 2019 Paul Chaignon <paul.chaignon@gmail.com>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+/*
+ * open_memstream returns a FILE stream that allows writing to a
+ * dynamically growing buffer, that can be either copied to
+ * tcp->outf (syscall successful) or dropped (syscall failed)
+ */
+
+#include "defs.h"
+
+struct staged_output_data {
+       char *memfptr;
+       size_t memfloc;
+       FILE *real_outf;        /* Backup for real outf while staging */
+};
+
+FILE *
+strace_open_memstream(struct tcb *tcp)
+{
+       FILE *fp = NULL;
+
+#if HAVE_OPEN_MEMSTREAM
+       tcp->staged_output_data = xmalloc(sizeof(*tcp->staged_output_data));
+       fp = open_memstream(&tcp->staged_output_data->memfptr,
+                           &tcp->staged_output_data->memfloc);
+       if (!fp)
+               perror_msg_and_die("open_memstream");
+       /*
+        * Call to fflush required to update tcp->memfptr,
+        * see open_memstream man page.
+        */
+       fflush(fp);
+
+       /* Store the FILE pointer for later restoration. */
+       tcp->staged_output_data->real_outf = tcp->outf;
+       tcp->outf = fp;
+#endif
+
+       return fp;
+}
+
+void
+strace_close_memstream(struct tcb *tcp, bool publish)
+{
+#if HAVE_OPEN_MEMSTREAM
+       if (!tcp->staged_output_data) {
+               debug_msg("memstream already closed");
+               return;
+       }
+
+       if (fclose(tcp->outf))
+               perror_msg("fclose(tcp->outf)");
+
+       tcp->outf = tcp->staged_output_data->real_outf;
+       if (tcp->staged_output_data->memfptr) {
+               if (publish)
+                       fputs_unlocked(tcp->staged_output_data->memfptr,
+                                      tcp->outf);
+               else
+                       debug_msg("syscall output dropped: %s",
+                                 tcp->staged_output_data->memfptr);
+
+               free(tcp->staged_output_data->memfptr);
+               tcp->staged_output_data->memfptr = NULL;
+       }
+       free(tcp->staged_output_data);
+       tcp->staged_output_data = NULL;
+#endif
+}
diff --git a/stat.c b/stat.c
index c7ad481119ae527b85221ed6d6766402b2d198b2..de39f9d59942da17c8b1867259ab49fd4ab42516 100644 (file)
--- a/stat.c
+++ b/stat.c
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2005-2015 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -44,6 +44,7 @@ SYS_FUNC(newfstatat)
 {
        if (entering(tcp)) {
                print_dirfd(tcp, tcp->u_arg[0]);
+               tprints(", ");
                printpath(tcp, tcp->u_arg[1]);
                tprints(", ");
        } else {
index 62584728d048a381f7fc09e18c30cfa1c6bf5966..f7899e4068b312fe6826634478e8dd8fc2a7322a 100644 (file)
--- a/stat64.c
+++ b/stat64.c
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2005-2015 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -44,6 +44,7 @@ SYS_FUNC(fstatat64)
 {
        if (entering(tcp)) {
                print_dirfd(tcp, tcp->u_arg[0]);
+               tprints(", ");
                printpath(tcp, tcp->u_arg[1]);
                tprints(", ");
        } else {
diff --git a/statx.c b/statx.c
index 9cc30c4f701c7f4709b5e64b4d26674d2078780f..f5fb3cad1bd9c4ccdbc12cf0ec8a81e68104cc21 100644 (file)
--- a/statx.c
+++ b/statx.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -19,6 +19,7 @@ SYS_FUNC(statx)
 {
        if (entering(tcp)) {
                print_dirfd(tcp, tcp->u_arg[0]);
+               tprints(", ");
                printpath(tcp, tcp->u_arg[1]);
                tprints(", ");
 
@@ -48,19 +49,19 @@ SYS_FUNC(statx)
                if (umove_or_printaddr(tcp, tcp->u_arg[4], &stx))
                        return 0;
 
-               tprints("{stx_mask=");
-               printflags(statx_masks, stx.stx_mask, "STATX_???");
+               PRINT_FIELD_FLAGS("{", stx, stx_mask, statx_masks,
+                                 "STATX_???");
 
                if (!abbrev(tcp))
                        PRINT_FIELD_U(", ", stx, stx_blksize);
 
-               tprints(", stx_attributes=");
-               printflags(statx_attrs, stx.stx_attributes, "STATX_ATTR_???");
+               PRINT_FIELD_FLAGS(", ", stx, stx_attributes, statx_attrs,
+                                 "STATX_ATTR_???");
 
                if (!abbrev(tcp)) {
                        PRINT_FIELD_U(", ", stx, stx_nlink);
-                       printuid(", stx_uid=", stx.stx_uid);
-                       printuid(", stx_gid=", stx.stx_gid);
+                       PRINT_FIELD_UID(", ", stx, stx_uid);
+                       PRINT_FIELD_UID(", ", stx, stx_gid);
                }
 
                tprints(", stx_mode=");
@@ -73,11 +74,8 @@ SYS_FUNC(statx)
 
                if (!abbrev(tcp)) {
                        PRINT_FIELD_U(", ", stx, stx_blocks);
-
-                       tprints(", stx_attributes_mask=");
-                       printflags(statx_attrs, stx.stx_attributes_mask,
-                                  "STATX_ATTR_???");
-
+                       PRINT_FIELD_FLAGS(", ", stx, stx_attributes_mask,
+                                         statx_attrs, "STATX_ATTR_???");
                        PRINT_FIELD_TIME(stx_atime);
                        PRINT_FIELD_TIME(stx_btime);
                        PRINT_FIELD_TIME(stx_ctime);
index 2236392e1246c03988e6904b5098e2722d3291a0..24d8b4aa446fb8efe5a5311c659305e199803e72 100644 (file)
@@ -11,7 +11,7 @@
 .    BR "\\$1"
 ..
 .\"
-.TH STRACE-LOG-MERGE 1 "2019-03-17" "strace 5.1"
+.TH STRACE-LOG-MERGE 1 "2020-09-23" "strace 5.9"
 .\"
 .SH NAME
 strace-log-merge \- merge strace \-ff \-tt output
index bd463f29c5fb41d8ff402856662c8413540cb2d4..59472a41bac5726a6cfe8c076bb738a40eb9a8ff 100644 (file)
--- a/strace.1
+++ b/strace.1
 .  el \
 .    BR "\\$1"
 ..
-.TH STRACE 1 "2019-03-17" "strace 5.1"
+.TH STRACE 1 "2020-09-23" "strace 5.9"
 .SH NAME
 strace \- trace system calls and signals
 .SH SYNOPSIS
 .SY strace
-.if ''#' .ig end_unwind_opt
-.OP \-ACdffhikqrtttTvVxxy
-.end_unwind_opt
-.if '#'#' .ig end_no_unwind_opt
-.OP \-ACdffhiqrtttTvVxxy
-.end_no_unwind_opt
+.if ''#' .OP \-ACdffhikqqrtttTvVwxxyyzZ
+.if '#'#' .OP \-ACdffhiqqrtttTvVwxxyyzZ
 .OP \-I n
 .OP \-b execve
 .OM \-e expr
+.OP \-O overhead
+.OP \-S sortby
+.OP \-U columns
 .OP \-a column
 .OP \-o file
 .OP \-s strsize
 .OP \-X format
 .OM \-P path
 .OM \-p pid
+.OP \-\-seccomp\-bpf
 .BR "" {
 .OR \-p pid
 .BR "" |
-.OP \-D
+.OP \-DDD
 .OM \-E var\fR[=\fIval\fR]
 .OP \-u username
 .IR command " [" args ]
@@ -64,24 +64,25 @@ strace \- trace system calls and signals
 .YS
 .SY strace
 .B \-c
-.OP \-df
+.OP \-dfwzZ
 .OP \-I n
 .OP \-b execve
 .OM \-e expr
 .OP \-O overhead
 .OP \-S sortby
+.OP \-U columns
 .OM \-P path
 .OM \-p pid
+.OP \-\-seccomp\-bpf
 .BR "" {
 .OR \-p pid
 .BR "" |
-.OP \-D
+.OP \-DDD
 .OM \-E var\fR[=\fIval\fR]
 .OP -u username
 .IR command " [" args ]
 .BR "" }
 .YS
-
 .SH DESCRIPTION
 .IX "strace command" "" "\fLstrace\fR command"
 .LP
@@ -156,9 +157,9 @@ This example shows the shell performing ">>xyzzy" output redirection:
 .CW
 open("xyzzy", O_WRONLY|O_APPEND|O_CREAT, 0666) = 3
 .CE
-Here, the third argument of
+Here, the second and the third argument of
 .BR open (2)
-is decoded by breaking down the
+are decoded by breaking down the
 flag argument into its three bitwise-OR constituents and printing the
 mode value in octal by tradition.  Where the traditional or native
 usage differs from ANSI or POSIX, the latter forms are preferred.
@@ -217,9 +218,9 @@ on a system with supplementary group ids:
 .CW
 getgroups(32, [100, 0]) = 2
 .CE
-On the other hand, bit-sets are also shown using square brackets
-but set elements are separated only by a space.  Here is the shell,
-preparing to execute an external command:
+On the other hand, bit-sets are also shown using square brackets,
+but set elements are separated only by a space.
+Here is the shell, preparing to execute an external command:
 .CW
 sigprocmask(SIG_BLOCK, [CHLD TTOU], []) = 0
 .CE
@@ -233,184 +234,33 @@ sigprocmask(SIG_UNBLOCK, ~[], NULL) = 0
 .CE
 Here, the second argument represents the full set of all signals.
 .SH OPTIONS
-.SS Output format
-.TP 12
-.BI "\-a " column
-Align return values in a specific column (default column 40).
-.TP
-.B \-i
-Print the instruction pointer at the time of the system call.
-.if ''#' .ig end_unwind
-.TP
-.B \-k
-Print the execution stack trace of the traced processes after each system call.
-.end_unwind
-.TP
-.BI "\-o " filename
-Write the trace output to the file
-.I filename
-rather than to stderr.
-.IR filename . pid
-form is used if
-.B \-ff
-option is supplied.
-If the argument begins with '|' or '!', the rest of the
-argument is treated as a command and all output is piped to it.
-This is convenient for piping the debugging output to a program
-without affecting the redirections of executed programs.
-The latter is not compatible with
-.B \-ff
-option currently.
-.TP
-.B \-A
-Open the file provided in the
-.B \-o
-option in append mode.
-.TP
-.B \-q
-Suppress messages about attaching, detaching etc.  This happens
-automatically when output is redirected to a file and the command
-is run directly instead of attaching.
-.TP
-.B \-qq
-If given twice, suppress messages about process exit status.
-.TP
-.B \-r
-Print a relative timestamp upon entry to each system call.  This
-records the time difference between the beginning of successive
-system calls.
-Note that since
-.B \-r
-option uses the monotonic clock time for measuring time difference and not the
-wall clock time, its measurements can differ from the difference in time
-reported by the
-.B \-t
-option.
-.TP
-.BI "\-s " strsize
-Specify the maximum string size to print (the default is 32).  Note
-that filenames are not considered strings and are always printed in
-full.
-.TP
-.B \-t
-Prefix each line of the trace with the wall clock time.
-.TP
-.B \-tt
-If given twice, the time printed will include the microseconds.
-.TP
-.B \-ttt
-If given thrice, the time printed will include the microseconds
-and the leading portion will be printed as the number
-of seconds since the epoch.
-.TP
-.B \-T
-Show the time spent in system calls.  This records the time
-difference between the beginning and the end of each system call.
-.TP
-.B \-x
-Print all non-ASCII strings in hexadecimal string format.
-.TP
-.B \-xx
-Print all strings in hexadecimal string format.
-.TP
-.BI "\-X " format
-Set the format for printing of named constants and flags.
-Supported
-.I format
-values are:
-.RS
-.TP 10
-.B raw
-Raw number output, without decoding.
-.TP
-.B abbrev
-Output a named constant or a set of flags instead of the raw number if they are
-found.
-This is the default
-.B strace
-behaviour.
-.TP
-.B verbose
-Output both the raw value and the decoded string (as a comment).
-.RE
-.TP
-.B \-y
-Print paths associated with file descriptor arguments.
-.TP
-.B \-yy
-Print protocol specific information associated with socket file descriptors,
-and block/character device number associated with device file descriptors.
-.SS Statistics
-.TP 12
-.B \-c
-Count time, calls, and errors for each system call and report a summary on
-program exit, suppressing the regular output.
-This attempts to show system time (CPU time spent running
-in the kernel) independent of wall clock time.  If
-.B \-c
-is used with
-.BR \-f ,
-only aggregate totals for all traced processes are kept.
-.TP
-.B \-C
-Like
-.B \-c
-but also print regular output while processes are running.
-.TP
-.BI "\-O " overhead
-Set the overhead for tracing system calls to
-.I overhead
-microseconds.
-This is useful for overriding the default heuristic for guessing
-how much time is spent in mere measuring when timing system calls using
-the
-.B \-c
-option.  The accuracy of the heuristic can be gauged by timing a given
-program run without tracing (using
-.BR time (1))
-and comparing the accumulated
-system call time to the total produced using
-.BR \-c .
-.TP
-.BI "\-S " sortby
-Sort the output of the histogram printed by the
-.B \-c
-option by the specified criterion.  Legal values are
-.BR time ,
-.BR calls ,
-.BR name ,
-and
-.B nothing
-(default is
-.BR time ).
-.TP
-.B \-w
-Summarise the time difference between the beginning and end of
-each system call.  The default is to summarise the system time.
-.SS Filtering
+.SS General
 .TP 12
 .BI "\-e " expr
 A qualifying expression which modifies which events to trace
 or how to trace them.  The format of the expression is:
 .RS 15
 .IP
-[\,\fIqualifier\/\fB=\fR][\fB!\fR][\fB?\fR]\,\fIvalue1\/\fR[\fB,\fR[\fB?\fR]\,\fIvalue2\/\fR]...
+[\,\fIqualifier\/\fB=\fR][\fB!\fR]\,\fIvalue\/\fR[\fB,\fR\,\fIvalue\/\fR]...
 .RE
 .IP
 where
 .I qualifier
 is one of
-.BR trace ,
-.BR abbrev ,
-.BR verbose ,
-.BR raw ,
-.BR signal ,
-.BR read ,
-.BR write ,
+.BR trace " (or " t ),
+.BR abbrev " (or " a ),
+.BR verbose " (or " v ),
+.BR raw " (or " x ),
+.BR signal " (or " signals " or " s ),
+.BR read " (or " reads " or " r ),
+.BR write " (or " writes " or " w ),
 .BR fault ,
 .BR inject ,
+.BR status ,
+.BR quiet " (or " silent " or " silence " or " q ),
+.BR decode\-fds " (or " decode\-fd ),
 or
-.B kvm
+.BR kvm ,
 and
 .I value
 is a qualifier-dependent symbol or number.  The default
@@ -426,11 +276,6 @@ system call.  By contrast,
 .BR \-e "\ " trace "=!" open
 means to trace every system call except
 .BR open .
-Question mark before the syscall qualification allows suppression of error
-in case no syscalls matched the qualification provided.
-Appending one of "@64", "@32", or "@x32" suffixes to the syscall qualification
-allows specifying syscalls only for the 64-bit, 32-bit, or 32-on-64-bit
-personality, respectively.
 In addition, the special values
 .B all
 and
@@ -440,104 +285,325 @@ have the obvious meanings.
 Note that some shells use the exclamation point for history
 expansion even inside quoted arguments.  If so, you must escape
 the exclamation point with a backslash.
+.SS Startup
+.TP 12
+\fB\-E\ \fIvar\fR=\,\fIval\fR
+.TQ
+.BR "\-\-env" = \fIvar\fR = \fIval\fR
+Run command with
+.IR var = val
+in its list of environment variables.
 .TP
-\fB\-e\ trace\fR=\,\fIset\fR
-Trace only the specified set of system calls.  The
-.B \-c
-option is useful for determining which system calls might be useful
-to trace.  For example,
-.BR trace = open,close,read,write
-means to only
-trace those four system calls.  Be careful when making inferences
-about the user/kernel boundary if only a subset of system calls
-are being monitored.  The default is
-.BR trace = all .
-.TP
-\fB\-e\ trace\fR=/\,\fIregex\fR
-Trace only those system calls that match the
-.IR regex .
-You can use
-.B POSIX
-Extended Regular Expression syntax (see
-.BR regex (7)).
-.TP
-.BR "\-e\ trace" = %file
+.BI "\-E " var
 .TQ
-.BR "\-e\ trace" = file " (deprecated)"
-Trace all system calls which take a file name as an argument.  You
-can think of this as an abbreviation for
-.BR "\-e\ trace" = open , stat , chmod , unlink ,...
-which is useful to seeing what files the process is referencing.
-Furthermore, using the abbreviation will ensure that you don't
-accidentally forget to include a call like
-.BR lstat (2)
-in the list.  Betchya woulda forgot that one.
+.BR "\-\-env" = \fIvar\fR
+Remove
+.IR var
+from the inherited list of environment variables before passing it on to
+the command.
 .TP
-.BR "\-e\ trace" = %process
+.BI "\-p " pid
 .TQ
-.BR "\-e\ trace" = process " (deprecated)"
-Trace all system calls which involve process management.  This
-is useful for watching the fork, wait, and exec steps of a process.
+.BR "\-\-attach" = \fIpid\fR
+Attach to the process with the process
+.SM ID
+.I pid
+and begin tracing.
+The trace may be terminated
+at any time by a keyboard interrupt signal
+.RB ( CTRL\-C ).
+.B strace
+will respond by detaching itself from the traced process(es)
+leaving it (them) to continue running.
+Multiple
+.B \-p
+options can be used to attach to many processes in addition to
+.I command
+(which is optional if at least one
+.B \-p
+option is given).
+.B \-p
+"`pidof PROG`" syntax is supported.
 .TP
-.BR "\-e\ trace" = %net
+.BI "\-u " username
 .TQ
-.BR "\-e\ trace" = %network
+.BR "\-\-user" = \fIusername\fR
+Run command with the user \s-1ID\s0, group \s-2ID\s0, and
+supplementary groups of
+.IR username .
+This option is only useful when running as root and enables the
+correct execution of setuid and/or setgid binaries.
+Unless this option is used setuid and setgid programs are executed
+without effective privileges.
+.SS Tracing
+.TP 12
+.BI "\-b " syscall
 .TQ
-.BR "\-e\ trace" = network " (deprecated)"
-Trace all the network related system calls.
+.BR "\-\-detach\-on" = \fIsyscall\fR
+If specified syscall is reached, detach from traced process.
+Currently, only
+.BR execve (2)
+syscall is supported.  This option is useful if you want to trace
+multi-threaded process and therefore require
+.BR \-f ,
+but don't want to trace its (potentially very complex) children.
 .TP
-.BR "\-e\ trace" = %signal
+.B \-D
 .TQ
-.BR "\-e\ trace" = signal " (deprecated)"
-Trace all signal related system calls.
-.TP
-.BR "\-e\ trace" = %ipc
+.B \-\-daemonize
 .TQ
-.BR "\-e\ trace" = ipc " (deprecated)"
-Trace all IPC related system calls.
+.BR \-\-daemonize = grandchild
+Run tracer process as a grandchild, not as the parent of the
+tracee.  This reduces the visible effect of
+.B strace
+by keeping the tracee a direct child of the calling process.
 .TP
-.BR "\-e\ trace" = %desc
+.B \-DD
 .TQ
-.BR "\-e\ trace" = desc " (deprecated)"
-Trace all file descriptor related system calls.
+.BR \-\-daemonize = pgroup
+.TQ
+.BR \-\-daemonize = pgrp
+Run tracer process as tracee's grandchild in a separate process group.
+In addition to reduction of the visible effect of
+.BR strace ,
+it also avoids killing of
+.B strace
+with
+.BR kill (2)
+issued to the whole process group.
 .TP
-.BR "\-e\ trace" = %memory
+.B \-DDD
 .TQ
-.BR "\-e\ trace" = memory " (deprecated)"
-Trace all memory mapping related system calls.
+.BR \-\-daemonize = session
+Run tracer process as tracee's grandchild in a separate session
+("true daemonisation").
+In addition to reduction of the visible effect of
+.BR strace ,
+it also avoids killing of
+.B strace
+upon session termination.
 .TP
-.BR "\-e\ trace" = %stat
-Trace stat syscall variants.
+.B \-f
+.TQ
+.BR \-\-follow\-forks
+Trace child processes as they are created by currently traced
+processes as a result of the
+.BR fork (2),
+.BR vfork (2)
+and
+.BR clone (2)
+system calls.  Note that
+.B \-p
+.I PID
+.B \-f
+will attach all threads of process
+.I PID
+if it is multi-threaded, not only thread with
+.IR thread_id " = " PID .
 .TP
-.BR "\-e\ trace" = %lstat
-Trace lstat syscall variants.
+.B \-\-output\-separately
+If the
+.BR \-\-output = \fIfilename\fR
+option is in effect, each processes trace is written to
+.IR filename . pid
+where
+.I pid
+is the numeric process id of each process.
 .TP
-.BR "\-e\ trace" = %fstat
-Trace fstat and fstatat syscall variants.
+.B \-ff
+.TQ
+.B \-\-follow\-forks \-\-output\-separately
+Combine the effects of
+.B \-\-follow\-forks
+and
+.B \-\-output\-separately
+options.
+This is incompatible with
+.BR \-c ,
+since no per-process counts are kept.
+.IP
+One might want to consider using
+.BR strace-log-merge (1)
+to obtain a combined strace log view.
 .TP
-.BR "\-e\ trace" = %%stat
+.BI "\-I " interruptible
+.TQ
+.BR "\-\-interruptible" = \fIinterruptible\fR
+When
+.B strace
+can be interrupted by signals (such as pressing
+.BR CTRL\-C ).
+.RS
+.TP 15
+.BR 1 ", " anywhere
+no signals are blocked;
+.TQ
+.BR 2 ", " waiting
+fatal signals are blocked while decoding syscall (default);
+.TQ
+.BR 3 ", " never
+fatal signals are always blocked (default if
+.BR -o " " \fIFILE\fR " " \fIPROG\fR );
+.TQ
+.BR 4 ", " never_tstp
+fatal signals and
+.BR SIGTSTP " (" CTRL\-Z )
+are always blocked (useful to make
+.BI "strace -o " "FILE PROG"
+not stop on
+.BR CTRL\-Z ,
+default if
+.BR \-D ).
+.RE
+.SS Filtering
+.TP 12
+\fB\-e\ trace\fR=\,\fIsyscall_set\fR
+.TQ
+\fB\-\-trace\fR=\,\fIsyscall_set\fR
+Trace only the specified set of system calls.
+.I syscall_set
+is defined as
+[\fB!\fR]\,\fIvalue\fR[\fB,\fR\,\fIvalue\/\fR],
+and
+.I value
+can be one of the following:
+.RS
+.TP 13
+.I syscall
+Trace specific syscall, specified by its name (but see
+.BR NOTES ).
+.TP
+.BI ? value
+Question mark before the syscall qualification allows suppression of error
+in case no syscalls matched the qualification provided.
+.TP
+.BI / regex
+Trace only those system calls that match the
+.IR regex .
+You can use
+.B POSIX
+Extended Regular Expression syntax (see
+.BR regex (7)).
+.TP
+.IB syscall @64
+Trace
+.I syscall
+only for the 64-bit personality.
+.TP
+.IB syscall @32
+Trace
+.I syscall
+only for the 32-bit personality.
+.TP
+.IB syscall @x32
+Trace
+.I syscall
+only for the 32-on-64-bit personality.
+.TP
+.B %file
+.TQ
+.BR file
+Trace all system calls which take a file name as an argument.  You
+can think of this as an abbreviation for
+.BR "\-e\ trace" = open , stat , chmod , unlink ,...
+which is useful to seeing what files the process is referencing.
+Furthermore, using the abbreviation will ensure that you don't
+accidentally forget to include a call like
+.BR lstat (2)
+in the list.  Betchya woulda forgot that one.
+The syntax without a preceding percent sign
+.RB (\[dq] "-e trace" = file \[dq])
+is deprecated.
+.TP
+.B %process
+.TQ
+.B process
+Trace system calls associated with process lifecycle
+(creation, exec, termination).
+The syntax without a preceding percent sign
+.RB (\[dq] "-e trace" = process \[dq])
+is deprecated.
+.TP
+.B %net
+.TQ
+.B %network
+.TQ
+.B network
+Trace all the network related system calls.
+The syntax without a preceding percent sign
+.RB (\[dq] "-e trace" = network \[dq])
+is deprecated.
+.TP
+.BR %signal
+.TQ
+.BR signal
+Trace all signal related system calls.
+The syntax without a preceding percent sign
+.RB (\[dq] "-e trace" = signal \[dq])
+is deprecated.
+.TP
+.BR %ipc
+.TQ
+.BR ipc
+Trace all IPC related system calls.
+The syntax without a preceding percent sign
+.RB (\[dq] "-e trace" = ipc \[dq])
+is deprecated.
+.TP
+.BR %desc
+.TQ
+.BR desc
+Trace all file descriptor related system calls.
+The syntax without a preceding percent sign
+.RB (\[dq] "-e trace" = desc \[dq])
+is deprecated.
+.TP
+.BR %memory
+.TQ
+.BR memory
+Trace all memory mapping related system calls.
+The syntax without a preceding percent sign
+.RB (\[dq] "-e trace" = memory \[dq])
+is deprecated.
+.TP
+.BR %creds
+Trace system calls that read or modify user and group identifiers or capability sets.
+.TP
+.BR %stat
+Trace stat syscall variants.
+.TP
+.BR %lstat
+Trace lstat syscall variants.
+.TP
+.BR %fstat
+Trace fstat, fstatat, and statx syscall variants.
+.TP
+.BR %%stat
 Trace syscalls used for requesting file status (stat, lstat, fstat, fstatat,
 statx, and their variants).
 .TP
-.BR "\-e\ trace" = %statfs
+.BR %statfs
 Trace statfs, statfs64, statvfs, osf_statfs, and osf_statfs64 system calls.
 The same effect can be achieved with
 .BR "\-e\ trace" = /^(.*_)?statv?fs
 regular expression.
 .TP
-.BR "\-e\ trace" = %fstatfs
+.BR %fstatfs
 Trace fstatfs, fstatfs64, fstatvfs, osf_fstatfs, and osf_fstatfs64 system calls.
 The same effect can be achieved with
 .BR "\-e\ trace" = /fstatv?fs
 regular expression.
 .TP
-.BR "\-e\ trace" = %%statfs
+.BR %%statfs
 Trace syscalls related to file system statistics (statfs-like, fstatfs-like,
 and ustat).  The same effect can be achieved with
 .BR "\-e\ trace" = /statv?fs|fsstat|ustat
 regular expression.
 .TP
-.BR "\-e\ trace" = %pure
+.BR %clock
+Trace system calls that read or modify system clocks.
+.TP
+.BR %pure
 Trace syscalls that always succeed and have no arguments.
 Currently, this list includes
 .BR arc_gettls "(2), " getdtablesize "(2), " getegid "(2), " getegid32 "(2),"
@@ -549,9 +615,121 @@ Currently, this list includes
 .BR getxgid "(2), " getxpid "(2), " getxuid "(2), " kern_features "(2), and"
 .BR metag_get_tls "(2)"
 syscalls.
+.RE
+.IP
+The
+.B \-c
+option is useful for determining which system calls might be useful
+to trace.  For example,
+.BR trace = open,close,read,write
+means to only
+trace those four system calls.  Be careful when making inferences
+about the user/kernel boundary if only a subset of system calls
+are being monitored.  The default is
+.BR trace = all .
+.TP
+\fB\-e\ signal\fR=\,\fIset\fR
+.TQ
+\fB\-\-signal\fR=\,\fIset\fR
+Trace only the specified subset of signals.  The default is
+.BR signal = all .
+For example,
+.BR signal "=!" SIGIO
+(or
+.BR signal "=!" io )
+causes
+.B SIGIO
+signals not to be traced.
+.TP
+\fB\-e\ status\fR=\,\fIset\fR
+.TQ
+\fB\-\-status\fR=\,\fIset\fR
+Print only system calls with the specified return status.  The default is
+.BR status = all .
+When using the
+.B status
+qualifier, because
+.B strace
+waits for system calls to return before deciding whether they should be printed
+or not, the traditional order of events may not be preserved anymore.  If two
+system calls are executed by concurrent threads,
+.B strace
+will first print both the entry and exit of the first system call to exit,
+regardless of their respective entry time.  The entry and exit of the second
+system call to exit will be printed afterwards.  Here is an example when
+.BR select (2)
+is called, but a different thread calls
+.BR clock_gettime (2)
+before
+.BR select (2)
+finishes:
+.CW
+[pid 28779] 1130322148.939977 clock_gettime(CLOCK_REALTIME, {1130322148, 939977000}) = 0
+[pid 28772] 1130322148.438139 select(4, [3], NULL, NULL, NULL) = 1 (in [3])
+.CE
+.I set
+can include the following elements:
+.RS
+.TP 13
+.B successful
+Trace system calls that returned without an error code.
+The
+.B -z
+option has the effect of
+.BR status = successful .
+.TQ
+.B failed
+Trace system calls that returned with an error code.
+The
+.B -Z
+option has the effect of
+.BR status = failed .
+.TQ
+.B unfinished
+Trace system calls that did not return.  This might happen, for example, due to
+an execve call in a neighbour thread.
+.TQ
+.B unavailable
+Trace system calls that returned but strace failed to fetch the error status.
+.TQ
+.B detached
+Trace system calls for which strace detached before the return.
+.RE
+.TP
+.BI "\-P " path
+.TQ
+.BR "\-\-trace\-path" = \fIpath\fR
+Trace only system calls accessing
+.IR path .
+Multiple
+.B \-P
+options can be used to specify several paths.
+.TP
+.B \-z
+.TQ
+.B \-\-successful\-only
+Print only syscalls that returned without an error code.
+.TP
+.B \-Z
+.TQ
+.B \-\-failed\-only
+Print only syscalls that returned with an error code.
+.SS Output format
+.TP 12
+.BI "\-a " column
+.TQ
+.BR "\-\-columns" = \fIcolumn\fR
+Align return values in a specific column (default column 40).
 .TP
-\fB\-e\ abbrev\fR=\,\fIset\fR
+\fB\-e\ abbrev\fR=\,\fIsyscall_set\fR
+.TQ
+\fB\-\-abbrev\fR=\,\fIsyscall_set\fR
 Abbreviate the output from printing each member of large structures.
+The syntax of the
+.I syscall_set
+specification is the same as in the
+.B "-e trace"
+option.
 The default is
 .BR abbrev = all .
 The
@@ -559,13 +737,27 @@ The
 option has the effect of
 .BR abbrev = none .
 .TP
-\fB\-e\ verbose\fR=\,\fIset\fR
-Dereference structures for the specified set of system calls.  The
-default is
+\fB\-e\ verbose\fR=\,\fIsyscall_set\fR
+.TQ
+\fB\-\-verbose\fR=\,\fIsyscall_set\fR
+Dereference structures for the specified set of system calls.
+The syntax of the
+.I syscall_set
+specification is the same as in the
+.B "-e trace"
+option.
+The default is
 .BR verbose = all .
 .TP
-\fB\-e\ raw\fR=\,\fIset\fR
+\fB\-e\ raw\fR=\,\fIsyscall_set\fR
+.TQ
+\fB\-\-raw\fR=\,\fIsyscall_set\fR
 Print raw, undecoded arguments for the specified set of system calls.
+The syntax of the
+.I syscall_set
+specification is the same as in the
+.B "-e trace"
+option.
 This option has the effect of causing all arguments to be printed
 in hexadecimal.  This is mostly useful if you don't trust the
 decoding or you need to know the actual numeric value of an
@@ -574,48 +766,443 @@ See also
 .B \-X raw
 option.
 .TP
-\fB\-e\ signal\fR=\,\fIset\fR
-Trace only the specified subset of signals.  The default is
-.BR signal = all .
-For example,
-.BR signal "=!" SIGIO
-(or
-.BR signal "=!" io )
-causes
-.B SIGIO
-signals not to be traced.
+\fB\-e\ read\fR=\,\fIset\fR
+.TQ
+\fB\-\-read\fR=\,\fIset\fR
+Perform a full hexadecimal and ASCII dump of all the data read from
+file descriptors listed in the specified set.  For example, to see
+all input activity on file descriptors
+.I 3
+and
+.I 5
+use
+\fB\-e\ read\fR=\,\fI3\fR,\fI5\fR.
+Note that this is independent from the normal tracing of the
+.BR read (2)
+system call which is controlled by the option
+.BR -e "\ " trace = read .
+.TP
+\fB\-e\ write\fR=\,\fIset\fR
+.TQ
+\fB\-\-write\fR=\,\fIset\fR
+Perform a full hexadecimal and ASCII dump of all the data written to
+file descriptors listed in the specified set.  For example, to see
+all output activity on file descriptors
+.I 3
+and
+.I 5
+use
+\fB\-e\ write\fR=\,\fI3\fR,\,\fI5\fR.
+Note that this is independent from the normal tracing of the
+.BR write (2)
+system call which is controlled by the option
+.BR -e "\ " trace = write .
+.TP
+\fB\-e\ quiet\fR=\,\fIset\fR
+.TQ
+\fB\-\-quiet\fR=\,\fIset\fR
+.TQ
+\fB\-\-silent\fR=\,\fIset\fR
+.TQ
+\fB\-\-silence\fR=\,\fIset\fR
+Suppress various information messages.  The default is
+.BR quiet = none .
+.I set
+can include the following elements:
+.RS
+.TP 17
+.B attach
+Suppress messages about attaching and detaching
+.RB (\[dq] "[ Process NNNN attached ]" "\[dq],"
+.RB "\[dq]" "[ Process NNNN detached ]" "\[dq])."
+.TQ
+.B exit
+Suppress messages about process exits
+.RB (\[dq] "+++ exited with SSS +++" \[dq]).
+.TQ
+.B path-resolution
+Suppress messages about resolution of paths provided via the
+.B \-P
+option
+.RB (\[dq] "Requested path \[dq]...\[dq] resolved into \[dq]...\[dq]" \[dq]).
+.TQ
+.B personality
+Suppress messages about process personality changes
+.RB (\[dq] "[ Process PID=NNNN runs in PPP mode. ]" \[dq]).
+.TQ
+.B thread-execve
+.TQ
+.B superseded
+Suppress messages about process being superseded by
+.BR execve (2)
+in another thread
+.RB (\[dq] "+++ superseded by execve in pid NNNN +++" \[dq]).
+.RE
+.TP
+\fB\-e\ decode\-fds\fR=\,\fIset\fR
+.TQ
+\fB\-\-decode\-fds\fR=\,\fIset\fR
+Decode various information associated with file descriptors.  The default is
+.BR decode\-fds = none .
+.I set
+can include the following elements:
+.RS
+.TP 8
+.B path
+Print file paths.
+.TQ
+.B socket
+Print socket protocol-specific information,
+.TQ
+.B dev
+Print character/block device numbers.
+.TQ
+.B pidfd
+Print PIDs associated with pidfd file descriptors.
+.RE
+.TP
+.BR "\-e\ kvm" = vcpu
+.TQ
+.BR "\-\-kvm" = vcpu
+Print the exit reason of kvm vcpu.  Requires Linux kernel version 4.16.0
+or higher.
+.TP
+.B \-i
+.TQ
+.B \-\-instruction\-pointer
+Print the instruction pointer at the time of the system call.
+.TP
+.B \-n
+.TQ
+.B \-\-syscall\-number
+Print the syscall number.
+.if ''#' .TP
+.if ''#' .B \-k
+.if ''#' .TQ
+.if ''#' .B \-\-stack\-traces
+.if ''#' Print the execution stack trace of the traced
+.if ''#' processes after each system call.
+.TP
+.BI "\-o " filename
+.TQ
+.BR "\-\-output" = \fIfilename\fR
+Write the trace output to the file
+.I filename
+rather than to stderr.
+.IR filename . pid
+form is used if
+.B \-ff
+option is supplied.
+If the argument begins with '|' or '!', the rest of the
+argument is treated as a command and all output is piped to it.
+This is convenient for piping the debugging output to a program
+without affecting the redirections of executed programs.
+The latter is not compatible with
+.B \-ff
+option currently.
+.TP
+.B \-A
+.TQ
+.B \-\-output\-append\-mode
+Open the file provided in the
+.B \-o
+option in append mode.
+.TP
+.B \-q
+.TQ
+.B \-\-quiet
+.TQ
+.BR \-\-quiet = attach , personality
+Suppress messages about attaching, detaching, and personality changes.
+This happens automatically when output is redirected to a file
+and the command is run directly instead of attaching.
+.TP
+.B \-qq
+.TQ
+.BR \-\-quiet = attach , personality , exit
+Suppress messages attaching, detaching, personality changes,
+and about process exit status.
+.TP
+.B \-qqq
+.TQ
+.BR \-\-quiet = all
+Suppress all suppressible messages (please refer to the
+.B -e quiet
+option description for the full list of suppressible messages).
+.TP
+.B \-r
+.TQ
+.BR \-\-relative\-timestamps [= \fIprecision\fR ]
+Print a relative timestamp upon entry to each system call.  This
+records the time difference between the beginning of successive
+system calls.
+.I precision
+can be one of
+.BR s " (for seconds), " ms " (milliseconds), " us " (microseconds), or " ns
+(nanoseconds), and allows setting the precision of time value being printed.
+Default is
+.B us
+(microseconds).
+Note that since
+.B \-r
+option uses the monotonic clock time for measuring time difference and not the
+wall clock time, its measurements can differ from the difference in time
+reported by the
+.B \-t
+option.
+.TP
+.BI "\-s " strsize
+.TQ
+.BR "\-\-string\-limit" = \fIstrsize\fR
+Specify the maximum string size to print (the default is 32).  Note
+that filenames are not considered strings and are always printed in
+full.
+.TP
+.BR \-\-absolute\-timestamps [=[[ format: ] \fIformat\fR ],[[ precision: ] \fIprecision ]]
+.TQ
+.BR \-\-timestamps [=[[ format: ] \fIformat\fR ],[[ precision: ] \fIprecision ]]
+Prefix each line of the trace with the wall clock time in the specified
+.I format
+with the specified
+.IR precision .
+.I format
+can be one of the following:
+.RS
+.TP 14
+.B none
+No time stamp is printed.
+Can be used to override the previous setting.
+.TQ
+.B time
+Wall clock time
+.RB ( strftime (3)
+format string is
+.BR %T ).
+.TQ
+.B unix
+Number of seconds since the epoch
+.RB ( strftime (3)
+format string is
+.BR %s ).
+.RE
+.IP
+.I precision
+can be one of
+.BR s " (for seconds), " ms " (milliseconds), " us " (microseconds), or " ns
+(nanoseconds).
+Default arguments for the option are
+.BR format:time , precision:s .
+.TP
+.B \-t
+.TQ
+.B \-\-absolute\-timestamps
+Prefix each line of the trace with the wall clock time.
+.TP
+.B \-tt
+.TQ
+.BR \-\-absolute\-timestamps = precision:us
+If given twice, the time printed will include the microseconds.
+.TP
+.B \-ttt
+.TQ
+.BR \-\-absolute\-timestamps = format:unix , precision:us
+If given thrice, the time printed will include the microseconds
+and the leading portion will be printed as the number
+of seconds since the epoch.
+.TP
+.B \-T
+.TQ
+.BR \-\-syscall\-times [= \fIprecision\fR ]
+Show the time spent in system calls.  This records the time
+difference between the beginning and the end of each system call.
+.I precision
+can be one of
+.BR s " (for seconds), " ms " (milliseconds), " us " (microseconds), or " ns
+(nanoseconds), and allows setting the precision of time value being printed.
+Default is
+.B us
+(microseconds).
+.TP
+.B \-v
+.TQ
+.B \-\-no\-abbrev
+Print unabbreviated versions of environment, stat, termios, etc.
+calls.  These structures are very common in calls and so the default
+behavior displays a reasonable subset of structure members.  Use
+this option to get all of the gory details.
+.TP
+.B \-x
+.TQ
+.BR \-\-strings\-in\-hex = \fInon\-ascii\fR
+Print all non-ASCII strings in hexadecimal string format.
+.TP
+.B \-xx
+.TQ
+.B \-\-strings\-in\-hex
+.TQ
+.BR \-\-strings\-in\-hex = \fIall\fR
+Print all strings in hexadecimal string format.
+.TP
+.BI "\-X " format
+.TQ
+.BR "\-\-const\-print\-style" = \fIformat\fR
+Set the format for printing of named constants and flags.
+Supported
+.I format
+values are:
+.RS
+.TP 10
+.B raw
+Raw number output, without decoding.
+.TQ
+.B abbrev
+Output a named constant or a set of flags instead of the raw number if they are
+found.
+This is the default
+.B strace
+behaviour.
+.TQ
+.B verbose
+Output both the raw value and the decoded string (as a comment).
+.RE
+.TP
+.B \-y
+.TQ
+.B \-\-decode\-fds
+.TQ
+.BR \-\-decode\-fds = path
+Print paths associated with file descriptor arguments.
+.TP
+.B \-yy
+.TQ
+.BR \-\-decode\-fds = all
+Print all available information associated with file descritors:
+protocol-specific information associated with socket file descriptors,
+block/character device number associated with device file descriptors,
+and PIDs asociated with pidfd file descriptors.
+.TP
+.B \-\-pidns\-translation
+If strace and tracee are in different PID namespaces, print PIDs in
+strace's namespace, too.
+.SS Statistics
+.TP 12
+.B \-c
+.TQ
+.B \-\-summary\-only
+Count time, calls, and errors for each system call and report a summary on
+program exit, suppressing the regular output.
+This attempts to show system time (CPU time spent running
+in the kernel) independent of wall clock time.  If
+.B \-c
+is used with
+.BR \-f ,
+only aggregate totals for all traced processes are kept.
+.TP
+.B \-C
+.TQ
+.B \-\-summary
+Like
+.B \-c
+but also print regular output while processes are running.
+.TP
+.BI "\-O " overhead
+.TQ
+.BR "\-\-summary\-syscall\-overhead " = \fIoverhead\fR
+Set the overhead for tracing system calls to
+.IR overhead .
+This is useful for overriding the default heuristic for guessing
+how much time is spent in mere measuring when timing system calls using
+the
+.B \-c
+option.  The accuracy of the heuristic can be gauged by timing a given
+program run without tracing (using
+.BR time (1))
+and comparing the accumulated
+system call time to the total produced using
+.BR \-c .
+.IP
+The format of
+.I overhead
+specification is described in section
+.IR "Time specification format description".
 .TP
-\fB\-e\ read\fR=\,\fIset\fR
-Perform a full hexadecimal and ASCII dump of all the data read from
-file descriptors listed in the specified set.  For example, to see
-all input activity on file descriptors
-.I 3
+.BI "\-S " sortby
+.TQ
+.BR "\-\-summary\-sort\-by" = \fIsortby\fR
+Sort the output of the histogram printed by the
+.B \-c
+option by the specified criterion.  Legal values are
+.BR time " (or " time\-percent " or " time\-total " or " total\-time ),
+.BR min\-time " (or " shortest " or " time\-min ),
+.BR max\-time " (or " longest " or " time\-max ),
+.BR avg\-time " (or " time\-avg ),
+.BR calls " (or " count ),
+.BR errors " (or " error ),
+.BR name " (or " syscall " or " syscall\-name ),
 and
-.I 5
-use
-\fB\-e\ read\fR=\,\fI3\fR,\fI5\fR.
-Note that this is independent from the normal tracing of the
-.BR read (2)
-system call which is controlled by the option
-.BR -e "\ " trace = read .
+.BR nothing " (or " none );
+default is
+.BR time .
 .TP
-\fB\-e\ write\fR=\,\fIset\fR
-Perform a full hexadecimal and ASCII dump of all the data written to
-file descriptors listed in the specified set.  For example, to see
-all output activity on file descriptors
-.I 3
-and
-.I 5
-use
-\fB\-e\ write\fR=\,\fI3\fR,\,\fI5\fR.
-Note that this is independent from the normal tracing of the
-.BR write (2)
-system call which is controlled by the option
-.BR -e "\ " trace = write .
+.BI "\-U " columns
+.TQ
+.BR "\-\-summary\-columns" = \fIcolumns\fR
+Configure a set (and order) of columns being shown in the call summary.
+The
+.I columns
+argument is a comma-separated list with items being one of the following:
+.RS
+.TP 36
+.BR time\-percent " (or " time )
+Percentage of cumulative time consumed by a specific system call.
+.TQ
+.BR total\-time " (or " time\-total )
+Total system (or wall clock, if
+.B \-w
+option is provided) time consumed by a specific system call.
+.TQ
+.BR min\-time " (or " shortest " or " time\-min )
+Minimum observed call duration.
+.TQ
+.BR max\-time " (or " longest " or " time\-max )
+Maximum observed call duration.
+.TQ
+.BR avg\-time " (or " time\-avg )
+Average call duration.
+.TQ
+.BR calls " (or " count )
+Call count.
+.TQ
+.BR errors " (or " error )
+Error count.
+.TQ
+.BR name " (or " syscall " or " syscall\-name )
+Syscall name.
+.RE
+.IP
+The default value is
+.BR time\-percent , total\-time , avg\-time , calls , errors , name .
+If the
+.B name
+field is not supplied explicitly, it is added as the last column.
 .TP
-\fB\-e\ inject\fR=\,\fIset\/\fR[:\fBerror\fR=\,\fIerrno\/\fR|:\fBretval\fR=\,\fIvalue\/\fR][:\fBsignal\fR=\,\fIsig\/\fR][:\fBsyscall\fR=\fIsyscall\fR][:\fBdelay_enter\fR=\,\fIusecs\/\fR][:\fBdelay_exit\fR=\,\fIusecs\/\fR][:\fBwhen\fR=\,\fIexpr\/\fR]
+.B \-w
+.TQ
+.B \-\-summary\-wall\-clock
+Summarise the time difference between the beginning and end of
+each system call.  The default is to summarise the system time.
+.SS Tampering
+.TP 12
+\fB\-e\ inject\fR=\,\fIsyscall_set\/\fR[:\fBerror\fR=\,\fIerrno\/\fR|:\fBretval\fR=\,\fIvalue\/\fR][:\fBsignal\fR=\,\fIsig\/\fR][:\fBsyscall\fR=\fIsyscall\fR][:\fBdelay_enter\fR=\,\fIdelay\/\fR][:\fBdelay_exit\fR=\,\fIdelay\/\fR][:\fBwhen\fR=\,\fIexpr\/\fR]
+.TQ
+\fB\-\-inject\fR=\,\fIsyscall_set\/\fR[:\fBerror\fR=\,\fIerrno\/\fR|:\fBretval\fR=\,\fIvalue\/\fR][:\fBsignal\fR=\,\fIsig\/\fR][:\fBsyscall\fR=\fIsyscall\fR][:\fBdelay_enter\fR=\,\fIdelay\/\fR][:\fBdelay_exit\fR=\,\fIdelay\/\fR][:\fBwhen\fR=\,\fIexpr\/\fR]
 Perform syscall tampering for the specified set of syscalls.
-
+The syntax of the
+.I syscall_set
+specification is the same as in the
+.B "-e trace"
+option.
+.IP
 At least one of
 .BR error ,
 .BR retval ,
@@ -628,7 +1215,7 @@ options has to be specified.
 and
 .B retval
 are mutually exclusive.
-
+.IP
 If :\fBerror\fR=\,\fIerrno\/\fR option is specified,
 a fault is injected into a syscall invocation:
 the syscall number is replaced by -1 which corresponds to an invalid syscall
@@ -638,24 +1225,28 @@ and the error code is specified using a symbolic
 value like
 .B ENOSYS
 or a numeric value within 1..4095 range.
-
+.IP
 If :\fBretval\fR=\,\fIvalue\/\fR option is specified,
 success injection is performed: the syscall number is replaced by -1,
 but a bogus success value is returned to the callee.
-
+.IP
 If :\fBsignal\fR=\,\fIsig\/\fR option is specified with either a symbolic value
 like
 .B SIGSEGV
 or a numeric value within 1..\fBSIGRTMAX\fR range,
 that signal is delivered on entering every syscall specified by the
 .IR set .
-
-If :\fBdelay_enter\fR=\,\fIusecs\/\fR or :\fBdelay_exit\fR=\,\fIusecs\/\fR
+.IP
+If :\fBdelay_enter\fR=\,\fIdelay\/\fR or :\fBdelay_exit\fR=\,\fIdelay\/\fR
 options are specified, delay injection is performed: the tracee is delayed
-by at least
-.IR usecs
-microseconds on entering or exiting the syscall.
-
+by time period specified by
+.IR delay
+on entering or exiting the syscall, respectively.
+The format of
+.I delay
+specification is described in section
+.IR "Time specification format description".
+.IP
 If :\fBsignal\fR=\,\fIsig\/\fR option is specified without
 :\fBerror\fR=\,\fIerrno\/\fR, :\fBretval\fR=\,\fIvalue\/\fR or
 :\fBdelay_{enter,exit}\fR=\,\fIusecs\/\fR options,
@@ -664,48 +1255,74 @@ then only a signal
 is delivered without a syscall fault or delay injection.
 Conversely, :\fBerror\fR=\,\fIerrno\/\fR or
 :\fBretval\fR=\,\fIvalue\/\fR option without
-:\fBdelay_enter\fR=\,\fIusecs\/\fR,
-:\fBdelay_exit\fR=\,\fIusecs\/\fR or
+:\fBdelay_enter\fR=\,\fIdelay\/\fR,
+:\fBdelay_exit\fR=\,\fIdelay\/\fR or
 :\fBsignal\fR=\,\fIsig\/\fR options injects a fault without delivering a signal
 or injecting a delay, etc.
-
+.IP
 If both :\fBerror\fR=\,\fIerrno\/\fR or :\fBretval\fR=\,\fIvalue\/\fR
 and :\fBsignal\fR=\,\fIsig\/\fR options are specified, then both
 a fault or success is injected and a signal is delivered.
-
+.IP
 if :\fBsyscall\fR=\fIsyscall\fR option is specified, the corresponding syscall
 with no side effects is injected instead of -1.
 Currently, only "pure" (see
 .BR "-e trace" = "%pure"
 description) syscalls can be specified there.
-
+.IP
 Unless a :\fBwhen\fR=\,\fIexpr\fR subexpression is specified,
 an injection is being made into every invocation of each syscall from the
 .IR set .
-
-The format of the subexpression is one of the following:
+.IP
+The format of the subexpression is:
+.RS 15
+.IP
+\fIfirst\/\fR[\fB..\fR\,\fIlast\/\fR][\fB+\fR[\,\fIstep\/\fR]]
+.RE
+.IP
+Number
+.I first
+stands for the first invocation number in the range, number
+.I last
+stands for the last invocation number in the range, and
+.I step
+stands for the step between two consecutive invocations.
+The following combinations are useful:
 .RS
-.IP "" 2
+.TP 18
 .I first
-.RS 4
 For every syscall from the
 .IR set ,
 perform an injection for the syscall invocation number
 .I first
 only.
-.RE
-.IP "" 2
+.TQ
+\fIfirst\/\fB..\fR\,\fIlast\fR
+For every syscall from the
+.IR set ,
+perform an injection for the syscall invocation number
+.I first
+and all subsequent invocations until the invocation number
+.I last
+(inclusive).
+.TQ
 \fIfirst\/\fB+\fR
-.RS 4
 For every syscall from the
 .IR set ,
 perform injections for the syscall invocation number
 .I first
 and all subsequent invocations.
-.RE
-.IP "" 2
-\fIfirst\/\fB+\fIstep\fR
-.RS 4
+.TQ
+\fIfirst\/\fB..\fR\,\fIlast\/\fB+\fR
+For every syscall from the
+.IR set ,
+perform injections for the syscall invocation number
+.I first
+and all subsequent invocations until the invocation number
+.I last
+(inclusive).
+.TQ
+\fIfirst\/\fB+\fR\,\fIstep\fR
 For every syscall from the
 .IR set ,
 perform injections for syscall invocations number
@@ -713,20 +1330,26 @@ perform injections for syscall invocations number
 .IR first + step ,
 .IR first + step + step ,
 and so on.
-.RE
+.TQ
+\fIfirst\/\fB..\fR\,\fIlast\fB+\fR\,\fIstep\fR
+Same as the previous, but consider only syscall invocations with numbers up to
+.I last
+(inclusive).
 .RE
 .IP
 For example, to fail each third and subsequent chdir syscalls with
 .BR ENOENT ,
 use
 \fB\-e\ inject\fR=\,\fIchdir\/\fR:\fBerror\fR=\,\fIENOENT\/\fR:\fBwhen\fR=\,\fI3\/\fB+\fR.
-
+.IP
 The valid range for numbers
 .I first
 and
 .I step
-is 1..65535.
-
+is 1..65535, and for number
+.I last
+is 1..65534.
+.IP
 An injection expression can contain only one
 .BR error =
 or
@@ -736,163 +1359,29 @@ specification, and only one
 specification.  If an injection expression contains multiple
 .BR when =
 specifications, the last one takes precedence.
-
+.IP
 Accounting of syscalls that are subject to injection
 is done per syscall and per tracee.
-
+.IP
 Specification of syscall injection can be combined
 with other syscall filtering options, for example,
 \fB\-P \fI/dev/urandom \fB\-e inject\fR=\,\fIfile\/\fR:\fBerror\fR=\,\fIENOENT\fR.
-
 .TP
-\fB\-e\ fault\fR=\,\fIset\/\fR[:\fBerror\fR=\,\fIerrno\/\fR][:\fBwhen\fR=\,\fIexpr\/\fR]
+\fB\-e\ fault\fR=\,\fIsyscall_set\/\fR[:\fBerror\fR=\,\fIerrno\/\fR][:\fBwhen\fR=\,\fIexpr\/\fR]
+.TQ
+\fB\-\-fault\fR=\,\fIsyscall_set\/\fR[:\fBerror\fR=\,\fIerrno\/\fR][:\fBwhen\fR=\,\fIexpr\/\fR]
 Perform syscall fault injection for the specified set of syscalls.
-
+.IP
 This is equivalent to more generic
 \fB\-e\ inject\fR= expression with default value of
 .I errno
 option set to
 .BR ENOSYS .
-.TP
-.BR "\-e\ kvm" = vcpu
-Print the exit reason of kvm vcpu.  Requires Linux kernel version 4.16.0
-or higher.
-
-.TP
-.BI "\-P " path
-Trace only system calls accessing
-.IR path .
-Multiple
-.B \-P
-options can be used to specify several paths.
-.TP
-.B \-v
-Print unabbreviated versions of environment, stat, termios, etc.
-calls.  These structures are very common in calls and so the default
-behavior displays a reasonable subset of structure members.  Use
-this option to get all of the gory details.
-.SS Tracing
-.TP 12
-.BI "\-b " syscall
-If specified syscall is reached, detach from traced process.
-Currently, only
-.BR execve (2)
-syscall is supported.  This option is useful if you want to trace
-multi-threaded process and therefore require
-.BR \-f ,
-but don't want to trace its (potentially very complex) children.
-.TP
-.B \-D
-Run tracer process as a detached grandchild, not as parent of the
-tracee.  This reduces the visible effect of
-.B strace
-by keeping the tracee a direct child of the calling process.
-.TP
-.B \-f
-Trace child processes as they are created by currently traced
-processes as a result of the
-.BR fork (2),
-.BR vfork (2)
-and
-.BR clone (2)
-system calls.  Note that
-.B \-p
-.I PID
-.B \-f
-will attach all threads of process
-.I PID
-if it is multi-threaded, not only thread with
-.IR thread_id " = " PID .
-.TP
-.B \-ff
-If the
-.B \-o
-.I filename
-option is in effect, each processes trace is written to
-.IR filename . pid
-where
-.I pid
-is the numeric process id of each process.
-This is incompatible with
-.BR \-c ,
-since no per-process counts are kept.
-
-One might want to consider using
-.BR strace-log-merge (1)
-to obtain a combined strace log view.
-.TP
-.BI "\-I " interruptible
-When
-.B strace
-can be interrupted by signals (such as pressing
-.BR CTRL\-C ).
-.RS
-.TP 4
-.B 1
-no signals are blocked;
-.TQ
-.B 2
-fatal signals are blocked while decoding syscall (default);
-.TQ
-.B 3
-fatal signals are always blocked (default if
-.BR -o " " \fIFILE\fR " " \fIPROG\fR );
-.TQ
-.B 4
-fatal signals and
-.BR SIGTSTP " (" CTRL\-Z )
-are always blocked (useful to make
-.BI "strace -o " "FILE PROG"
-not stop on
-.BR CTRL\-Z ,
-default if
-.BR \-D ).
-.RE
-.SS Startup
-.TP 12
-\fB\-E\ \fIvar\fR=\,\fIval\fR
-Run command with
-.IR var = val
-in its list of environment variables.
-.TP
-.BI "\-E " var
-Remove
-.IR var
-from the inherited list of environment variables before passing it on to
-the command.
-.TP
-.BI "\-p " pid
-Attach to the process with the process
-.SM ID
-.I pid
-and begin tracing.
-The trace may be terminated
-at any time by a keyboard interrupt signal
-.RB ( CTRL\-C ).
-.B strace
-will respond by detaching itself from the traced process(es)
-leaving it (them) to continue running.
-Multiple
-.B \-p
-options can be used to attach to many processes in addition to
-.I command
-(which is optional if at least one
-.B \-p
-option is given).
-.B \-p
-"`pidof PROG`" syntax is supported.
-.TP
-.BI "\-u " username
-Run command with the user \s-1ID\s0, group \s-2ID\s0, and
-supplementary groups of
-.IR username .
-This option is only useful when running as root and enables the
-correct execution of setuid and/or setgid binaries.
-Unless this option is used setuid and setgid programs are executed
-without effective privileges.
 .SS Miscellaneous
 .TP 12
 .B \-d
+.TQ
+.B \-\-debug
 Show some debugging output of
 .B strace
 itself on the standard error.
@@ -909,11 +1398,56 @@ and it is ignored at all if used along with one or more instances of
 option.
 .TP
 .B \-h
+.TQ
+.B \-\-help
 Print the help summary.
 .TP
+.B \-\-seccomp\-bpf
+Try to enable use of seccomp-bpf (see
+.BR seccomp (2))
+to have
+.BR ptrace (2)-stops
+only when system calls that are being traced occur in the traced processes.
+This option has no effect unless
+.BR \-f / \-\-follow\-forks
+is also specified.
+.B \-\-seccomp\-bpf
+is also not applicable to processes attached using
+.BR \-p / \-\-attach
+option.  An attempt to enable system calls filtering using seccomp-bpf may
+fail for various reasons, e.g. there are too many system calls to filter,
+the seccomp API is not available, or
+.B strace
+itself is being traced.
+In cases when seccomp-bpf filter setup failed,
+.B strace
+proceeds as usual and stops traced processes on every system call.
+.TP
 .B \-V
+.TQ
+.B \-\-version
 Print the version number of
 .BR strace .
+.SS "Time specification format description"
+.PP
+Time values can be specified as a decimal floating point number
+(in a format accepted by
+.BR strtod (3)),
+optionally followed by one of the following suffices that specify
+the unit of time:
+.B s
+(seconds),
+.B ms
+(milliseconds),
+.B us
+(microseconds), or
+.B ns
+(nanoseconds).
+If no suffix is specified, the value is interpreted as microseconds.
+.PP
+The described format is used for
+.BR \-O ", " "\-e inject" = delay_enter ", and " "\-e inject" = delay_exit
+options.
 .SH DIAGNOSTICS
 When
 .I command
@@ -968,7 +1502,7 @@ If you do use this feature, please remember to install
 a regular non-setuid version of
 .B strace
 for ordinary users to use.
-.SH "MULTIPLE PERSONALITY SUPPORT"
+.SH "MULTIPLE PERSONALITIES SUPPORT"
 On some architectures,
 .B strace
 supports decoding of syscalls for processes that use different ABI rather than
@@ -983,14 +1517,28 @@ allbox;
 lb lb
 l l.
 Architecture   ABIs supported
-x86_64 i386, x32 (when built as an x86_64 application); i386 (when built as an x32 application)
+x86_64 i386, x32 [1]; i386 [2]
 AArch64        ARM 32-bit EABI
-PowerPC 64-bit PowerPC 32-bit
-RISC-V 64-bit  RISC-V 32-bit
+PowerPC 64-bit [3]     PowerPC 32-bit
 s390x  s390
 SPARC 64-bit   SPARC 32-bit
 TILE 64-bit    TILE 32-bit
 .TE
+.RS 0
+.TP 5
+[1]
+When
+.B strace
+is built as an x86_64 application
+.TQ
+[2]
+When
+.B strace
+is built as an x32 application
+.TQ
+[3]
+Big endian only
+.RE
 .PP
 This support is optional and relies on ability to generate and parse structure
 definitions during the build time.
@@ -1005,15 +1553,15 @@ has):
 .B m32-mpers
 .B strace
 can trace and properly decode non-native 32-bit binaries.
-.TP
+.TQ
 .B no-m32-mpers
 .B strace
 can trace, but cannot properly decode non-native 32-bit binaries.
-.TP
+.TQ
 .B mx32-mpers
 .B strace
 can trace and properly decode non-native 32-on-64-bit binaries.
-.TP
+.TQ
 .B no-mx32-mpers
 .B strace
 can trace, but cannot properly decode non-native 32-on-64-bit binaries.
@@ -1109,7 +1657,9 @@ effective user
 .SM ID
 privileges while being traced.
 .LP
-A traced process runs slowly.
+A traced process runs slowly (but check out the
+.B \-\-seccomp\-bpf
+option).
 .LP
 Traced processes which are descended from
 .I command
@@ -1171,7 +1721,7 @@ Since 2009,
 .B strace
 is actively maintained by Dmitry Levin.
 .B strace
-gained support for AArch64, ARC, AVR32, Blackfin, Meta, Nios II, OpenSISC 1000,
+gained support for AArch64, ARC, AVR32, Blackfin, Meta, Nios II, OpenRISC 1000,
 RISC-V, Tile/TileGx, Xtensa architectures since that time.
 In 2012, unmaintained and apparently broken support for non-Linux operating
 systems was removed.
@@ -1190,8 +1740,10 @@ repository commit log.
 Problems with
 .B strace
 should be reported to the
+.UR mailto:strace\-devel@lists.strace.io
 .B strace
-mailing list at <strace\-devel@lists.strace.io>.
+mailing list
+.UE .
 .SH "SEE ALSO"
 .BR strace-log-merge (1),
 .BR ltrace (1),
@@ -1200,3 +1752,14 @@ mailing list at <strace\-devel@lists.strace.io>.
 .BR time (1),
 .BR ptrace (2),
 .BR proc (5)
+.PP
+.UR https://strace.io/
+.B strace
+Home Page
+.UE
+.SH AUTHORS
+The complete list of
+.B strace
+contributors can be found in the
+.B CREDITS
+file.
index 76a74119268114b0012328d540cdbbe15eb66d2b..53f5082abf858d0bfe17bb0a56315ae829004964 100644 (file)
 strace \- trace system calls and signals
 .SH SYNOPSIS
 .SY strace
-.if '@ENABLE_STACKTRACE_TRUE@'#' .ig end_unwind_opt
-.OP \-ACdffhikqrtttTvVxxy
-.end_unwind_opt
-.if '@ENABLE_STACKTRACE_FALSE@'#' .ig end_no_unwind_opt
-.OP \-ACdffhiqrtttTvVxxy
-.end_no_unwind_opt
+.if '@ENABLE_STACKTRACE_FALSE@'#' .OP \-ACdffhikqqrtttTvVwxxyyzZ
+.if '@ENABLE_STACKTRACE_TRUE@'#' .OP \-ACdffhiqqrtttTvVwxxyyzZ
 .OP \-I n
 .OP \-b execve
 .OM \-e expr
+.OP \-O overhead
+.OP \-S sortby
+.OP \-U columns
 .OP \-a column
 .OP \-o file
 .OP \-s strsize
 .OP \-X format
 .OM \-P path
 .OM \-p pid
+.OP \-\-seccomp\-bpf
 .BR "" {
 .OR \-p pid
 .BR "" |
-.OP \-D
+.OP \-DDD
 .OM \-E var\fR[=\fIval\fR]
 .OP \-u username
 .IR command " [" args ]
@@ -64,24 +64,25 @@ strace \- trace system calls and signals
 .YS
 .SY strace
 .B \-c
-.OP \-df
+.OP \-dfwzZ
 .OP \-I n
 .OP \-b execve
 .OM \-e expr
 .OP \-O overhead
 .OP \-S sortby
+.OP \-U columns
 .OM \-P path
 .OM \-p pid
+.OP \-\-seccomp\-bpf
 .BR "" {
 .OR \-p pid
 .BR "" |
-.OP \-D
+.OP \-DDD
 .OM \-E var\fR[=\fIval\fR]
 .OP -u username
 .IR command " [" args ]
 .BR "" }
 .YS
-
 .SH DESCRIPTION
 .IX "strace command" "" "\fLstrace\fR command"
 .LP
@@ -156,9 +157,9 @@ This example shows the shell performing ">>xyzzy" output redirection:
 .CW
 open("xyzzy", O_WRONLY|O_APPEND|O_CREAT, 0666) = 3
 .CE
-Here, the third argument of
+Here, the second and the third argument of
 .BR open (2)
-is decoded by breaking down the
+are decoded by breaking down the
 flag argument into its three bitwise-OR constituents and printing the
 mode value in octal by tradition.  Where the traditional or native
 usage differs from ANSI or POSIX, the latter forms are preferred.
@@ -217,9 +218,9 @@ on a system with supplementary group ids:
 .CW
 getgroups(32, [100, 0]) = 2
 .CE
-On the other hand, bit-sets are also shown using square brackets
-but set elements are separated only by a space.  Here is the shell,
-preparing to execute an external command:
+On the other hand, bit-sets are also shown using square brackets,
+but set elements are separated only by a space.
+Here is the shell, preparing to execute an external command:
 .CW
 sigprocmask(SIG_BLOCK, [CHLD TTOU], []) = 0
 .CE
@@ -233,184 +234,33 @@ sigprocmask(SIG_UNBLOCK, ~[], NULL) = 0
 .CE
 Here, the second argument represents the full set of all signals.
 .SH OPTIONS
-.SS Output format
-.TP 12
-.BI "\-a " column
-Align return values in a specific column (default column 40).
-.TP
-.B \-i
-Print the instruction pointer at the time of the system call.
-.if '@ENABLE_STACKTRACE_TRUE@'#' .ig end_unwind
-.TP
-.B \-k
-Print the execution stack trace of the traced processes after each system call.
-.end_unwind
-.TP
-.BI "\-o " filename
-Write the trace output to the file
-.I filename
-rather than to stderr.
-.IR filename . pid
-form is used if
-.B \-ff
-option is supplied.
-If the argument begins with '|' or '!', the rest of the
-argument is treated as a command and all output is piped to it.
-This is convenient for piping the debugging output to a program
-without affecting the redirections of executed programs.
-The latter is not compatible with
-.B \-ff
-option currently.
-.TP
-.B \-A
-Open the file provided in the
-.B \-o
-option in append mode.
-.TP
-.B \-q
-Suppress messages about attaching, detaching etc.  This happens
-automatically when output is redirected to a file and the command
-is run directly instead of attaching.
-.TP
-.B \-qq
-If given twice, suppress messages about process exit status.
-.TP
-.B \-r
-Print a relative timestamp upon entry to each system call.  This
-records the time difference between the beginning of successive
-system calls.
-Note that since
-.B \-r
-option uses the monotonic clock time for measuring time difference and not the
-wall clock time, its measurements can differ from the difference in time
-reported by the
-.B \-t
-option.
-.TP
-.BI "\-s " strsize
-Specify the maximum string size to print (the default is 32).  Note
-that filenames are not considered strings and are always printed in
-full.
-.TP
-.B \-t
-Prefix each line of the trace with the wall clock time.
-.TP
-.B \-tt
-If given twice, the time printed will include the microseconds.
-.TP
-.B \-ttt
-If given thrice, the time printed will include the microseconds
-and the leading portion will be printed as the number
-of seconds since the epoch.
-.TP
-.B \-T
-Show the time spent in system calls.  This records the time
-difference between the beginning and the end of each system call.
-.TP
-.B \-x
-Print all non-ASCII strings in hexadecimal string format.
-.TP
-.B \-xx
-Print all strings in hexadecimal string format.
-.TP
-.BI "\-X " format
-Set the format for printing of named constants and flags.
-Supported
-.I format
-values are:
-.RS
-.TP 10
-.B raw
-Raw number output, without decoding.
-.TP
-.B abbrev
-Output a named constant or a set of flags instead of the raw number if they are
-found.
-This is the default
-.B strace
-behaviour.
-.TP
-.B verbose
-Output both the raw value and the decoded string (as a comment).
-.RE
-.TP
-.B \-y
-Print paths associated with file descriptor arguments.
-.TP
-.B \-yy
-Print protocol specific information associated with socket file descriptors,
-and block/character device number associated with device file descriptors.
-.SS Statistics
-.TP 12
-.B \-c
-Count time, calls, and errors for each system call and report a summary on
-program exit, suppressing the regular output.
-This attempts to show system time (CPU time spent running
-in the kernel) independent of wall clock time.  If
-.B \-c
-is used with
-.BR \-f ,
-only aggregate totals for all traced processes are kept.
-.TP
-.B \-C
-Like
-.B \-c
-but also print regular output while processes are running.
-.TP
-.BI "\-O " overhead
-Set the overhead for tracing system calls to
-.I overhead
-microseconds.
-This is useful for overriding the default heuristic for guessing
-how much time is spent in mere measuring when timing system calls using
-the
-.B \-c
-option.  The accuracy of the heuristic can be gauged by timing a given
-program run without tracing (using
-.BR time (1))
-and comparing the accumulated
-system call time to the total produced using
-.BR \-c .
-.TP
-.BI "\-S " sortby
-Sort the output of the histogram printed by the
-.B \-c
-option by the specified criterion.  Legal values are
-.BR time ,
-.BR calls ,
-.BR name ,
-and
-.B nothing
-(default is
-.BR time ).
-.TP
-.B \-w
-Summarise the time difference between the beginning and end of
-each system call.  The default is to summarise the system time.
-.SS Filtering
+.SS General
 .TP 12
 .BI "\-e " expr
 A qualifying expression which modifies which events to trace
 or how to trace them.  The format of the expression is:
 .RS 15
 .IP
-[\,\fIqualifier\/\fB=\fR][\fB!\fR][\fB?\fR]\,\fIvalue1\/\fR[\fB,\fR[\fB?\fR]\,\fIvalue2\/\fR]...
+[\,\fIqualifier\/\fB=\fR][\fB!\fR]\,\fIvalue\/\fR[\fB,\fR\,\fIvalue\/\fR]...
 .RE
 .IP
 where
 .I qualifier
 is one of
-.BR trace ,
-.BR abbrev ,
-.BR verbose ,
-.BR raw ,
-.BR signal ,
-.BR read ,
-.BR write ,
+.BR trace " (or " t ),
+.BR abbrev " (or " a ),
+.BR verbose " (or " v ),
+.BR raw " (or " x ),
+.BR signal " (or " signals " or " s ),
+.BR read " (or " reads " or " r ),
+.BR write " (or " writes " or " w ),
 .BR fault ,
 .BR inject ,
+.BR status ,
+.BR quiet " (or " silent " or " silence " or " q ),
+.BR decode\-fds " (or " decode\-fd ),
 or
-.B kvm
+.BR kvm ,
 and
 .I value
 is a qualifier-dependent symbol or number.  The default
@@ -426,11 +276,6 @@ system call.  By contrast,
 .BR \-e "\ " trace "=!" open
 means to trace every system call except
 .BR open .
-Question mark before the syscall qualification allows suppression of error
-in case no syscalls matched the qualification provided.
-Appending one of "@64", "@32", or "@x32" suffixes to the syscall qualification
-allows specifying syscalls only for the 64-bit, 32-bit, or 32-on-64-bit
-personality, respectively.
 In addition, the special values
 .B all
 and
@@ -440,104 +285,325 @@ have the obvious meanings.
 Note that some shells use the exclamation point for history
 expansion even inside quoted arguments.  If so, you must escape
 the exclamation point with a backslash.
+.SS Startup
+.TP 12
+\fB\-E\ \fIvar\fR=\,\fIval\fR
+.TQ
+.BR "\-\-env" = \fIvar\fR = \fIval\fR
+Run command with
+.IR var = val
+in its list of environment variables.
 .TP
-\fB\-e\ trace\fR=\,\fIset\fR
-Trace only the specified set of system calls.  The
-.B \-c
-option is useful for determining which system calls might be useful
-to trace.  For example,
-.BR trace = open,close,read,write
-means to only
-trace those four system calls.  Be careful when making inferences
-about the user/kernel boundary if only a subset of system calls
-are being monitored.  The default is
-.BR trace = all .
-.TP
-\fB\-e\ trace\fR=/\,\fIregex\fR
-Trace only those system calls that match the
-.IR regex .
-You can use
-.B POSIX
-Extended Regular Expression syntax (see
-.BR regex (7)).
-.TP
-.BR "\-e\ trace" = %file
+.BI "\-E " var
 .TQ
-.BR "\-e\ trace" = file " (deprecated)"
-Trace all system calls which take a file name as an argument.  You
-can think of this as an abbreviation for
-.BR "\-e\ trace" = open , stat , chmod , unlink ,...
-which is useful to seeing what files the process is referencing.
-Furthermore, using the abbreviation will ensure that you don't
-accidentally forget to include a call like
-.BR lstat (2)
-in the list.  Betchya woulda forgot that one.
+.BR "\-\-env" = \fIvar\fR
+Remove
+.IR var
+from the inherited list of environment variables before passing it on to
+the command.
 .TP
-.BR "\-e\ trace" = %process
+.BI "\-p " pid
 .TQ
-.BR "\-e\ trace" = process " (deprecated)"
-Trace all system calls which involve process management.  This
-is useful for watching the fork, wait, and exec steps of a process.
+.BR "\-\-attach" = \fIpid\fR
+Attach to the process with the process
+.SM ID
+.I pid
+and begin tracing.
+The trace may be terminated
+at any time by a keyboard interrupt signal
+.RB ( CTRL\-C ).
+.B strace
+will respond by detaching itself from the traced process(es)
+leaving it (them) to continue running.
+Multiple
+.B \-p
+options can be used to attach to many processes in addition to
+.I command
+(which is optional if at least one
+.B \-p
+option is given).
+.B \-p
+"`pidof PROG`" syntax is supported.
 .TP
-.BR "\-e\ trace" = %net
+.BI "\-u " username
 .TQ
-.BR "\-e\ trace" = %network
+.BR "\-\-user" = \fIusername\fR
+Run command with the user \s-1ID\s0, group \s-2ID\s0, and
+supplementary groups of
+.IR username .
+This option is only useful when running as root and enables the
+correct execution of setuid and/or setgid binaries.
+Unless this option is used setuid and setgid programs are executed
+without effective privileges.
+.SS Tracing
+.TP 12
+.BI "\-b " syscall
 .TQ
-.BR "\-e\ trace" = network " (deprecated)"
-Trace all the network related system calls.
+.BR "\-\-detach\-on" = \fIsyscall\fR
+If specified syscall is reached, detach from traced process.
+Currently, only
+.BR execve (2)
+syscall is supported.  This option is useful if you want to trace
+multi-threaded process and therefore require
+.BR \-f ,
+but don't want to trace its (potentially very complex) children.
 .TP
-.BR "\-e\ trace" = %signal
+.B \-D
 .TQ
-.BR "\-e\ trace" = signal " (deprecated)"
-Trace all signal related system calls.
-.TP
-.BR "\-e\ trace" = %ipc
+.B \-\-daemonize
 .TQ
-.BR "\-e\ trace" = ipc " (deprecated)"
-Trace all IPC related system calls.
+.BR \-\-daemonize = grandchild
+Run tracer process as a grandchild, not as the parent of the
+tracee.  This reduces the visible effect of
+.B strace
+by keeping the tracee a direct child of the calling process.
 .TP
-.BR "\-e\ trace" = %desc
+.B \-DD
 .TQ
-.BR "\-e\ trace" = desc " (deprecated)"
-Trace all file descriptor related system calls.
+.BR \-\-daemonize = pgroup
+.TQ
+.BR \-\-daemonize = pgrp
+Run tracer process as tracee's grandchild in a separate process group.
+In addition to reduction of the visible effect of
+.BR strace ,
+it also avoids killing of
+.B strace
+with
+.BR kill (2)
+issued to the whole process group.
 .TP
-.BR "\-e\ trace" = %memory
+.B \-DDD
 .TQ
-.BR "\-e\ trace" = memory " (deprecated)"
-Trace all memory mapping related system calls.
+.BR \-\-daemonize = session
+Run tracer process as tracee's grandchild in a separate session
+("true daemonisation").
+In addition to reduction of the visible effect of
+.BR strace ,
+it also avoids killing of
+.B strace
+upon session termination.
 .TP
-.BR "\-e\ trace" = %stat
-Trace stat syscall variants.
+.B \-f
+.TQ
+.BR \-\-follow\-forks
+Trace child processes as they are created by currently traced
+processes as a result of the
+.BR fork (2),
+.BR vfork (2)
+and
+.BR clone (2)
+system calls.  Note that
+.B \-p
+.I PID
+.B \-f
+will attach all threads of process
+.I PID
+if it is multi-threaded, not only thread with
+.IR thread_id " = " PID .
 .TP
-.BR "\-e\ trace" = %lstat
-Trace lstat syscall variants.
+.B \-\-output\-separately
+If the
+.BR \-\-output = \fIfilename\fR
+option is in effect, each processes trace is written to
+.IR filename . pid
+where
+.I pid
+is the numeric process id of each process.
 .TP
-.BR "\-e\ trace" = %fstat
-Trace fstat and fstatat syscall variants.
+.B \-ff
+.TQ
+.B \-\-follow\-forks \-\-output\-separately
+Combine the effects of
+.B \-\-follow\-forks
+and
+.B \-\-output\-separately
+options.
+This is incompatible with
+.BR \-c ,
+since no per-process counts are kept.
+.IP
+One might want to consider using
+.BR strace-log-merge (1)
+to obtain a combined strace log view.
 .TP
-.BR "\-e\ trace" = %%stat
+.BI "\-I " interruptible
+.TQ
+.BR "\-\-interruptible" = \fIinterruptible\fR
+When
+.B strace
+can be interrupted by signals (such as pressing
+.BR CTRL\-C ).
+.RS
+.TP 15
+.BR 1 ", " anywhere
+no signals are blocked;
+.TQ
+.BR 2 ", " waiting
+fatal signals are blocked while decoding syscall (default);
+.TQ
+.BR 3 ", " never
+fatal signals are always blocked (default if
+.BR -o " " \fIFILE\fR " " \fIPROG\fR );
+.TQ
+.BR 4 ", " never_tstp
+fatal signals and
+.BR SIGTSTP " (" CTRL\-Z )
+are always blocked (useful to make
+.BI "strace -o " "FILE PROG"
+not stop on
+.BR CTRL\-Z ,
+default if
+.BR \-D ).
+.RE
+.SS Filtering
+.TP 12
+\fB\-e\ trace\fR=\,\fIsyscall_set\fR
+.TQ
+\fB\-\-trace\fR=\,\fIsyscall_set\fR
+Trace only the specified set of system calls.
+.I syscall_set
+is defined as
+[\fB!\fR]\,\fIvalue\fR[\fB,\fR\,\fIvalue\/\fR],
+and
+.I value
+can be one of the following:
+.RS
+.TP 13
+.I syscall
+Trace specific syscall, specified by its name (but see
+.BR NOTES ).
+.TP
+.BI ? value
+Question mark before the syscall qualification allows suppression of error
+in case no syscalls matched the qualification provided.
+.TP
+.BI / regex
+Trace only those system calls that match the
+.IR regex .
+You can use
+.B POSIX
+Extended Regular Expression syntax (see
+.BR regex (7)).
+.TP
+.IB syscall @64
+Trace
+.I syscall
+only for the 64-bit personality.
+.TP
+.IB syscall @32
+Trace
+.I syscall
+only for the 32-bit personality.
+.TP
+.IB syscall @x32
+Trace
+.I syscall
+only for the 32-on-64-bit personality.
+.TP
+.B %file
+.TQ
+.BR file
+Trace all system calls which take a file name as an argument.  You
+can think of this as an abbreviation for
+.BR "\-e\ trace" = open , stat , chmod , unlink ,...
+which is useful to seeing what files the process is referencing.
+Furthermore, using the abbreviation will ensure that you don't
+accidentally forget to include a call like
+.BR lstat (2)
+in the list.  Betchya woulda forgot that one.
+The syntax without a preceding percent sign
+.RB (\[dq] "-e trace" = file \[dq])
+is deprecated.
+.TP
+.B %process
+.TQ
+.B process
+Trace system calls associated with process lifecycle
+(creation, exec, termination).
+The syntax without a preceding percent sign
+.RB (\[dq] "-e trace" = process \[dq])
+is deprecated.
+.TP
+.B %net
+.TQ
+.B %network
+.TQ
+.B network
+Trace all the network related system calls.
+The syntax without a preceding percent sign
+.RB (\[dq] "-e trace" = network \[dq])
+is deprecated.
+.TP
+.BR %signal
+.TQ
+.BR signal
+Trace all signal related system calls.
+The syntax without a preceding percent sign
+.RB (\[dq] "-e trace" = signal \[dq])
+is deprecated.
+.TP
+.BR %ipc
+.TQ
+.BR ipc
+Trace all IPC related system calls.
+The syntax without a preceding percent sign
+.RB (\[dq] "-e trace" = ipc \[dq])
+is deprecated.
+.TP
+.BR %desc
+.TQ
+.BR desc
+Trace all file descriptor related system calls.
+The syntax without a preceding percent sign
+.RB (\[dq] "-e trace" = desc \[dq])
+is deprecated.
+.TP
+.BR %memory
+.TQ
+.BR memory
+Trace all memory mapping related system calls.
+The syntax without a preceding percent sign
+.RB (\[dq] "-e trace" = memory \[dq])
+is deprecated.
+.TP
+.BR %creds
+Trace system calls that read or modify user and group identifiers or capability sets.
+.TP
+.BR %stat
+Trace stat syscall variants.
+.TP
+.BR %lstat
+Trace lstat syscall variants.
+.TP
+.BR %fstat
+Trace fstat, fstatat, and statx syscall variants.
+.TP
+.BR %%stat
 Trace syscalls used for requesting file status (stat, lstat, fstat, fstatat,
 statx, and their variants).
 .TP
-.BR "\-e\ trace" = %statfs
+.BR %statfs
 Trace statfs, statfs64, statvfs, osf_statfs, and osf_statfs64 system calls.
 The same effect can be achieved with
 .BR "\-e\ trace" = /^(.*_)?statv?fs
 regular expression.
 .TP
-.BR "\-e\ trace" = %fstatfs
+.BR %fstatfs
 Trace fstatfs, fstatfs64, fstatvfs, osf_fstatfs, and osf_fstatfs64 system calls.
 The same effect can be achieved with
 .BR "\-e\ trace" = /fstatv?fs
 regular expression.
 .TP
-.BR "\-e\ trace" = %%statfs
+.BR %%statfs
 Trace syscalls related to file system statistics (statfs-like, fstatfs-like,
 and ustat).  The same effect can be achieved with
 .BR "\-e\ trace" = /statv?fs|fsstat|ustat
 regular expression.
 .TP
-.BR "\-e\ trace" = %pure
+.BR %clock
+Trace system calls that read or modify system clocks.
+.TP
+.BR %pure
 Trace syscalls that always succeed and have no arguments.
 Currently, this list includes
 .BR arc_gettls "(2), " getdtablesize "(2), " getegid "(2), " getegid32 "(2),"
@@ -549,9 +615,121 @@ Currently, this list includes
 .BR getxgid "(2), " getxpid "(2), " getxuid "(2), " kern_features "(2), and"
 .BR metag_get_tls "(2)"
 syscalls.
+.RE
+.IP
+The
+.B \-c
+option is useful for determining which system calls might be useful
+to trace.  For example,
+.BR trace = open,close,read,write
+means to only
+trace those four system calls.  Be careful when making inferences
+about the user/kernel boundary if only a subset of system calls
+are being monitored.  The default is
+.BR trace = all .
+.TP
+\fB\-e\ signal\fR=\,\fIset\fR
+.TQ
+\fB\-\-signal\fR=\,\fIset\fR
+Trace only the specified subset of signals.  The default is
+.BR signal = all .
+For example,
+.BR signal "=!" SIGIO
+(or
+.BR signal "=!" io )
+causes
+.B SIGIO
+signals not to be traced.
+.TP
+\fB\-e\ status\fR=\,\fIset\fR
+.TQ
+\fB\-\-status\fR=\,\fIset\fR
+Print only system calls with the specified return status.  The default is
+.BR status = all .
+When using the
+.B status
+qualifier, because
+.B strace
+waits for system calls to return before deciding whether they should be printed
+or not, the traditional order of events may not be preserved anymore.  If two
+system calls are executed by concurrent threads,
+.B strace
+will first print both the entry and exit of the first system call to exit,
+regardless of their respective entry time.  The entry and exit of the second
+system call to exit will be printed afterwards.  Here is an example when
+.BR select (2)
+is called, but a different thread calls
+.BR clock_gettime (2)
+before
+.BR select (2)
+finishes:
+.CW
+[pid 28779] 1130322148.939977 clock_gettime(CLOCK_REALTIME, {1130322148, 939977000}) = 0
+[pid 28772] 1130322148.438139 select(4, [3], NULL, NULL, NULL) = 1 (in [3])
+.CE
+.I set
+can include the following elements:
+.RS
+.TP 13
+.B successful
+Trace system calls that returned without an error code.
+The
+.B -z
+option has the effect of
+.BR status = successful .
+.TQ
+.B failed
+Trace system calls that returned with an error code.
+The
+.B -Z
+option has the effect of
+.BR status = failed .
+.TQ
+.B unfinished
+Trace system calls that did not return.  This might happen, for example, due to
+an execve call in a neighbour thread.
+.TQ
+.B unavailable
+Trace system calls that returned but strace failed to fetch the error status.
+.TQ
+.B detached
+Trace system calls for which strace detached before the return.
+.RE
+.TP
+.BI "\-P " path
+.TQ
+.BR "\-\-trace\-path" = \fIpath\fR
+Trace only system calls accessing
+.IR path .
+Multiple
+.B \-P
+options can be used to specify several paths.
+.TP
+.B \-z
+.TQ
+.B \-\-successful\-only
+Print only syscalls that returned without an error code.
+.TP
+.B \-Z
+.TQ
+.B \-\-failed\-only
+Print only syscalls that returned with an error code.
+.SS Output format
+.TP 12
+.BI "\-a " column
+.TQ
+.BR "\-\-columns" = \fIcolumn\fR
+Align return values in a specific column (default column 40).
 .TP
-\fB\-e\ abbrev\fR=\,\fIset\fR
+\fB\-e\ abbrev\fR=\,\fIsyscall_set\fR
+.TQ
+\fB\-\-abbrev\fR=\,\fIsyscall_set\fR
 Abbreviate the output from printing each member of large structures.
+The syntax of the
+.I syscall_set
+specification is the same as in the
+.B "-e trace"
+option.
 The default is
 .BR abbrev = all .
 The
@@ -559,13 +737,27 @@ The
 option has the effect of
 .BR abbrev = none .
 .TP
-\fB\-e\ verbose\fR=\,\fIset\fR
-Dereference structures for the specified set of system calls.  The
-default is
+\fB\-e\ verbose\fR=\,\fIsyscall_set\fR
+.TQ
+\fB\-\-verbose\fR=\,\fIsyscall_set\fR
+Dereference structures for the specified set of system calls.
+The syntax of the
+.I syscall_set
+specification is the same as in the
+.B "-e trace"
+option.
+The default is
 .BR verbose = all .
 .TP
-\fB\-e\ raw\fR=\,\fIset\fR
+\fB\-e\ raw\fR=\,\fIsyscall_set\fR
+.TQ
+\fB\-\-raw\fR=\,\fIsyscall_set\fR
 Print raw, undecoded arguments for the specified set of system calls.
+The syntax of the
+.I syscall_set
+specification is the same as in the
+.B "-e trace"
+option.
 This option has the effect of causing all arguments to be printed
 in hexadecimal.  This is mostly useful if you don't trust the
 decoding or you need to know the actual numeric value of an
@@ -574,48 +766,443 @@ See also
 .B \-X raw
 option.
 .TP
-\fB\-e\ signal\fR=\,\fIset\fR
-Trace only the specified subset of signals.  The default is
-.BR signal = all .
-For example,
-.BR signal "=!" SIGIO
-(or
-.BR signal "=!" io )
-causes
-.B SIGIO
-signals not to be traced.
+\fB\-e\ read\fR=\,\fIset\fR
+.TQ
+\fB\-\-read\fR=\,\fIset\fR
+Perform a full hexadecimal and ASCII dump of all the data read from
+file descriptors listed in the specified set.  For example, to see
+all input activity on file descriptors
+.I 3
+and
+.I 5
+use
+\fB\-e\ read\fR=\,\fI3\fR,\fI5\fR.
+Note that this is independent from the normal tracing of the
+.BR read (2)
+system call which is controlled by the option
+.BR -e "\ " trace = read .
+.TP
+\fB\-e\ write\fR=\,\fIset\fR
+.TQ
+\fB\-\-write\fR=\,\fIset\fR
+Perform a full hexadecimal and ASCII dump of all the data written to
+file descriptors listed in the specified set.  For example, to see
+all output activity on file descriptors
+.I 3
+and
+.I 5
+use
+\fB\-e\ write\fR=\,\fI3\fR,\,\fI5\fR.
+Note that this is independent from the normal tracing of the
+.BR write (2)
+system call which is controlled by the option
+.BR -e "\ " trace = write .
+.TP
+\fB\-e\ quiet\fR=\,\fIset\fR
+.TQ
+\fB\-\-quiet\fR=\,\fIset\fR
+.TQ
+\fB\-\-silent\fR=\,\fIset\fR
+.TQ
+\fB\-\-silence\fR=\,\fIset\fR
+Suppress various information messages.  The default is
+.BR quiet = none .
+.I set
+can include the following elements:
+.RS
+.TP 17
+.B attach
+Suppress messages about attaching and detaching
+.RB (\[dq] "[ Process NNNN attached ]" "\[dq],"
+.RB "\[dq]" "[ Process NNNN detached ]" "\[dq])."
+.TQ
+.B exit
+Suppress messages about process exits
+.RB (\[dq] "+++ exited with SSS +++" \[dq]).
+.TQ
+.B path-resolution
+Suppress messages about resolution of paths provided via the
+.B \-P
+option
+.RB (\[dq] "Requested path \[dq]...\[dq] resolved into \[dq]...\[dq]" \[dq]).
+.TQ
+.B personality
+Suppress messages about process personality changes
+.RB (\[dq] "[ Process PID=NNNN runs in PPP mode. ]" \[dq]).
+.TQ
+.B thread-execve
+.TQ
+.B superseded
+Suppress messages about process being superseded by
+.BR execve (2)
+in another thread
+.RB (\[dq] "+++ superseded by execve in pid NNNN +++" \[dq]).
+.RE
+.TP
+\fB\-e\ decode\-fds\fR=\,\fIset\fR
+.TQ
+\fB\-\-decode\-fds\fR=\,\fIset\fR
+Decode various information associated with file descriptors.  The default is
+.BR decode\-fds = none .
+.I set
+can include the following elements:
+.RS
+.TP 8
+.B path
+Print file paths.
+.TQ
+.B socket
+Print socket protocol-specific information,
+.TQ
+.B dev
+Print character/block device numbers.
+.TQ
+.B pidfd
+Print PIDs associated with pidfd file descriptors.
+.RE
+.TP
+.BR "\-e\ kvm" = vcpu
+.TQ
+.BR "\-\-kvm" = vcpu
+Print the exit reason of kvm vcpu.  Requires Linux kernel version 4.16.0
+or higher.
+.TP
+.B \-i
+.TQ
+.B \-\-instruction\-pointer
+Print the instruction pointer at the time of the system call.
+.TP
+.B \-n
+.TQ
+.B \-\-syscall\-number
+Print the syscall number.
+.if '@ENABLE_STACKTRACE_FALSE@'#' .TP
+.if '@ENABLE_STACKTRACE_FALSE@'#' .B \-k
+.if '@ENABLE_STACKTRACE_FALSE@'#' .TQ
+.if '@ENABLE_STACKTRACE_FALSE@'#' .B \-\-stack\-traces
+.if '@ENABLE_STACKTRACE_FALSE@'#' Print the execution stack trace of the traced
+.if '@ENABLE_STACKTRACE_FALSE@'#' processes after each system call.
+.TP
+.BI "\-o " filename
+.TQ
+.BR "\-\-output" = \fIfilename\fR
+Write the trace output to the file
+.I filename
+rather than to stderr.
+.IR filename . pid
+form is used if
+.B \-ff
+option is supplied.
+If the argument begins with '|' or '!', the rest of the
+argument is treated as a command and all output is piped to it.
+This is convenient for piping the debugging output to a program
+without affecting the redirections of executed programs.
+The latter is not compatible with
+.B \-ff
+option currently.
+.TP
+.B \-A
+.TQ
+.B \-\-output\-append\-mode
+Open the file provided in the
+.B \-o
+option in append mode.
+.TP
+.B \-q
+.TQ
+.B \-\-quiet
+.TQ
+.BR \-\-quiet = attach , personality
+Suppress messages about attaching, detaching, and personality changes.
+This happens automatically when output is redirected to a file
+and the command is run directly instead of attaching.
+.TP
+.B \-qq
+.TQ
+.BR \-\-quiet = attach , personality , exit
+Suppress messages attaching, detaching, personality changes,
+and about process exit status.
+.TP
+.B \-qqq
+.TQ
+.BR \-\-quiet = all
+Suppress all suppressible messages (please refer to the
+.B -e quiet
+option description for the full list of suppressible messages).
+.TP
+.B \-r
+.TQ
+.BR \-\-relative\-timestamps [= \fIprecision\fR ]
+Print a relative timestamp upon entry to each system call.  This
+records the time difference between the beginning of successive
+system calls.
+.I precision
+can be one of
+.BR s " (for seconds), " ms " (milliseconds), " us " (microseconds), or " ns
+(nanoseconds), and allows setting the precision of time value being printed.
+Default is
+.B us
+(microseconds).
+Note that since
+.B \-r
+option uses the monotonic clock time for measuring time difference and not the
+wall clock time, its measurements can differ from the difference in time
+reported by the
+.B \-t
+option.
+.TP
+.BI "\-s " strsize
+.TQ
+.BR "\-\-string\-limit" = \fIstrsize\fR
+Specify the maximum string size to print (the default is 32).  Note
+that filenames are not considered strings and are always printed in
+full.
+.TP
+.BR \-\-absolute\-timestamps [=[[ format: ] \fIformat\fR ],[[ precision: ] \fIprecision ]]
+.TQ
+.BR \-\-timestamps [=[[ format: ] \fIformat\fR ],[[ precision: ] \fIprecision ]]
+Prefix each line of the trace with the wall clock time in the specified
+.I format
+with the specified
+.IR precision .
+.I format
+can be one of the following:
+.RS
+.TP 14
+.B none
+No time stamp is printed.
+Can be used to override the previous setting.
+.TQ
+.B time
+Wall clock time
+.RB ( strftime (3)
+format string is
+.BR %T ).
+.TQ
+.B unix
+Number of seconds since the epoch
+.RB ( strftime (3)
+format string is
+.BR %s ).
+.RE
+.IP
+.I precision
+can be one of
+.BR s " (for seconds), " ms " (milliseconds), " us " (microseconds), or " ns
+(nanoseconds).
+Default arguments for the option are
+.BR format:time , precision:s .
+.TP
+.B \-t
+.TQ
+.B \-\-absolute\-timestamps
+Prefix each line of the trace with the wall clock time.
+.TP
+.B \-tt
+.TQ
+.BR \-\-absolute\-timestamps = precision:us
+If given twice, the time printed will include the microseconds.
+.TP
+.B \-ttt
+.TQ
+.BR \-\-absolute\-timestamps = format:unix , precision:us
+If given thrice, the time printed will include the microseconds
+and the leading portion will be printed as the number
+of seconds since the epoch.
+.TP
+.B \-T
+.TQ
+.BR \-\-syscall\-times [= \fIprecision\fR ]
+Show the time spent in system calls.  This records the time
+difference between the beginning and the end of each system call.
+.I precision
+can be one of
+.BR s " (for seconds), " ms " (milliseconds), " us " (microseconds), or " ns
+(nanoseconds), and allows setting the precision of time value being printed.
+Default is
+.B us
+(microseconds).
+.TP
+.B \-v
+.TQ
+.B \-\-no\-abbrev
+Print unabbreviated versions of environment, stat, termios, etc.
+calls.  These structures are very common in calls and so the default
+behavior displays a reasonable subset of structure members.  Use
+this option to get all of the gory details.
+.TP
+.B \-x
+.TQ
+.BR \-\-strings\-in\-hex = \fInon\-ascii\fR
+Print all non-ASCII strings in hexadecimal string format.
+.TP
+.B \-xx
+.TQ
+.B \-\-strings\-in\-hex
+.TQ
+.BR \-\-strings\-in\-hex = \fIall\fR
+Print all strings in hexadecimal string format.
+.TP
+.BI "\-X " format
+.TQ
+.BR "\-\-const\-print\-style" = \fIformat\fR
+Set the format for printing of named constants and flags.
+Supported
+.I format
+values are:
+.RS
+.TP 10
+.B raw
+Raw number output, without decoding.
+.TQ
+.B abbrev
+Output a named constant or a set of flags instead of the raw number if they are
+found.
+This is the default
+.B strace
+behaviour.
+.TQ
+.B verbose
+Output both the raw value and the decoded string (as a comment).
+.RE
+.TP
+.B \-y
+.TQ
+.B \-\-decode\-fds
+.TQ
+.BR \-\-decode\-fds = path
+Print paths associated with file descriptor arguments.
+.TP
+.B \-yy
+.TQ
+.BR \-\-decode\-fds = all
+Print all available information associated with file descritors:
+protocol-specific information associated with socket file descriptors,
+block/character device number associated with device file descriptors,
+and PIDs asociated with pidfd file descriptors.
+.TP
+.B \-\-pidns\-translation
+If strace and tracee are in different PID namespaces, print PIDs in
+strace's namespace, too.
+.SS Statistics
+.TP 12
+.B \-c
+.TQ
+.B \-\-summary\-only
+Count time, calls, and errors for each system call and report a summary on
+program exit, suppressing the regular output.
+This attempts to show system time (CPU time spent running
+in the kernel) independent of wall clock time.  If
+.B \-c
+is used with
+.BR \-f ,
+only aggregate totals for all traced processes are kept.
+.TP
+.B \-C
+.TQ
+.B \-\-summary
+Like
+.B \-c
+but also print regular output while processes are running.
+.TP
+.BI "\-O " overhead
+.TQ
+.BR "\-\-summary\-syscall\-overhead " = \fIoverhead\fR
+Set the overhead for tracing system calls to
+.IR overhead .
+This is useful for overriding the default heuristic for guessing
+how much time is spent in mere measuring when timing system calls using
+the
+.B \-c
+option.  The accuracy of the heuristic can be gauged by timing a given
+program run without tracing (using
+.BR time (1))
+and comparing the accumulated
+system call time to the total produced using
+.BR \-c .
+.IP
+The format of
+.I overhead
+specification is described in section
+.IR "Time specification format description".
 .TP
-\fB\-e\ read\fR=\,\fIset\fR
-Perform a full hexadecimal and ASCII dump of all the data read from
-file descriptors listed in the specified set.  For example, to see
-all input activity on file descriptors
-.I 3
+.BI "\-S " sortby
+.TQ
+.BR "\-\-summary\-sort\-by" = \fIsortby\fR
+Sort the output of the histogram printed by the
+.B \-c
+option by the specified criterion.  Legal values are
+.BR time " (or " time\-percent " or " time\-total " or " total\-time ),
+.BR min\-time " (or " shortest " or " time\-min ),
+.BR max\-time " (or " longest " or " time\-max ),
+.BR avg\-time " (or " time\-avg ),
+.BR calls " (or " count ),
+.BR errors " (or " error ),
+.BR name " (or " syscall " or " syscall\-name ),
 and
-.I 5
-use
-\fB\-e\ read\fR=\,\fI3\fR,\fI5\fR.
-Note that this is independent from the normal tracing of the
-.BR read (2)
-system call which is controlled by the option
-.BR -e "\ " trace = read .
+.BR nothing " (or " none );
+default is
+.BR time .
 .TP
-\fB\-e\ write\fR=\,\fIset\fR
-Perform a full hexadecimal and ASCII dump of all the data written to
-file descriptors listed in the specified set.  For example, to see
-all output activity on file descriptors
-.I 3
-and
-.I 5
-use
-\fB\-e\ write\fR=\,\fI3\fR,\,\fI5\fR.
-Note that this is independent from the normal tracing of the
-.BR write (2)
-system call which is controlled by the option
-.BR -e "\ " trace = write .
+.BI "\-U " columns
+.TQ
+.BR "\-\-summary\-columns" = \fIcolumns\fR
+Configure a set (and order) of columns being shown in the call summary.
+The
+.I columns
+argument is a comma-separated list with items being one of the following:
+.RS
+.TP 36
+.BR time\-percent " (or " time )
+Percentage of cumulative time consumed by a specific system call.
+.TQ
+.BR total\-time " (or " time\-total )
+Total system (or wall clock, if
+.B \-w
+option is provided) time consumed by a specific system call.
+.TQ
+.BR min\-time " (or " shortest " or " time\-min )
+Minimum observed call duration.
+.TQ
+.BR max\-time " (or " longest " or " time\-max )
+Maximum observed call duration.
+.TQ
+.BR avg\-time " (or " time\-avg )
+Average call duration.
+.TQ
+.BR calls " (or " count )
+Call count.
+.TQ
+.BR errors " (or " error )
+Error count.
+.TQ
+.BR name " (or " syscall " or " syscall\-name )
+Syscall name.
+.RE
+.IP
+The default value is
+.BR time\-percent , total\-time , avg\-time , calls , errors , name .
+If the
+.B name
+field is not supplied explicitly, it is added as the last column.
 .TP
-\fB\-e\ inject\fR=\,\fIset\/\fR[:\fBerror\fR=\,\fIerrno\/\fR|:\fBretval\fR=\,\fIvalue\/\fR][:\fBsignal\fR=\,\fIsig\/\fR][:\fBsyscall\fR=\fIsyscall\fR][:\fBdelay_enter\fR=\,\fIusecs\/\fR][:\fBdelay_exit\fR=\,\fIusecs\/\fR][:\fBwhen\fR=\,\fIexpr\/\fR]
+.B \-w
+.TQ
+.B \-\-summary\-wall\-clock
+Summarise the time difference between the beginning and end of
+each system call.  The default is to summarise the system time.
+.SS Tampering
+.TP 12
+\fB\-e\ inject\fR=\,\fIsyscall_set\/\fR[:\fBerror\fR=\,\fIerrno\/\fR|:\fBretval\fR=\,\fIvalue\/\fR][:\fBsignal\fR=\,\fIsig\/\fR][:\fBsyscall\fR=\fIsyscall\fR][:\fBdelay_enter\fR=\,\fIdelay\/\fR][:\fBdelay_exit\fR=\,\fIdelay\/\fR][:\fBwhen\fR=\,\fIexpr\/\fR]
+.TQ
+\fB\-\-inject\fR=\,\fIsyscall_set\/\fR[:\fBerror\fR=\,\fIerrno\/\fR|:\fBretval\fR=\,\fIvalue\/\fR][:\fBsignal\fR=\,\fIsig\/\fR][:\fBsyscall\fR=\fIsyscall\fR][:\fBdelay_enter\fR=\,\fIdelay\/\fR][:\fBdelay_exit\fR=\,\fIdelay\/\fR][:\fBwhen\fR=\,\fIexpr\/\fR]
 Perform syscall tampering for the specified set of syscalls.
-
+The syntax of the
+.I syscall_set
+specification is the same as in the
+.B "-e trace"
+option.
+.IP
 At least one of
 .BR error ,
 .BR retval ,
@@ -628,7 +1215,7 @@ options has to be specified.
 and
 .B retval
 are mutually exclusive.
-
+.IP
 If :\fBerror\fR=\,\fIerrno\/\fR option is specified,
 a fault is injected into a syscall invocation:
 the syscall number is replaced by -1 which corresponds to an invalid syscall
@@ -638,24 +1225,28 @@ and the error code is specified using a symbolic
 value like
 .B ENOSYS
 or a numeric value within 1..4095 range.
-
+.IP
 If :\fBretval\fR=\,\fIvalue\/\fR option is specified,
 success injection is performed: the syscall number is replaced by -1,
 but a bogus success value is returned to the callee.
-
+.IP
 If :\fBsignal\fR=\,\fIsig\/\fR option is specified with either a symbolic value
 like
 .B SIGSEGV
 or a numeric value within 1..\fBSIGRTMAX\fR range,
 that signal is delivered on entering every syscall specified by the
 .IR set .
-
-If :\fBdelay_enter\fR=\,\fIusecs\/\fR or :\fBdelay_exit\fR=\,\fIusecs\/\fR
+.IP
+If :\fBdelay_enter\fR=\,\fIdelay\/\fR or :\fBdelay_exit\fR=\,\fIdelay\/\fR
 options are specified, delay injection is performed: the tracee is delayed
-by at least
-.IR usecs
-microseconds on entering or exiting the syscall.
-
+by time period specified by
+.IR delay
+on entering or exiting the syscall, respectively.
+The format of
+.I delay
+specification is described in section
+.IR "Time specification format description".
+.IP
 If :\fBsignal\fR=\,\fIsig\/\fR option is specified without
 :\fBerror\fR=\,\fIerrno\/\fR, :\fBretval\fR=\,\fIvalue\/\fR or
 :\fBdelay_{enter,exit}\fR=\,\fIusecs\/\fR options,
@@ -664,48 +1255,74 @@ then only a signal
 is delivered without a syscall fault or delay injection.
 Conversely, :\fBerror\fR=\,\fIerrno\/\fR or
 :\fBretval\fR=\,\fIvalue\/\fR option without
-:\fBdelay_enter\fR=\,\fIusecs\/\fR,
-:\fBdelay_exit\fR=\,\fIusecs\/\fR or
+:\fBdelay_enter\fR=\,\fIdelay\/\fR,
+:\fBdelay_exit\fR=\,\fIdelay\/\fR or
 :\fBsignal\fR=\,\fIsig\/\fR options injects a fault without delivering a signal
 or injecting a delay, etc.
-
+.IP
 If both :\fBerror\fR=\,\fIerrno\/\fR or :\fBretval\fR=\,\fIvalue\/\fR
 and :\fBsignal\fR=\,\fIsig\/\fR options are specified, then both
 a fault or success is injected and a signal is delivered.
-
+.IP
 if :\fBsyscall\fR=\fIsyscall\fR option is specified, the corresponding syscall
 with no side effects is injected instead of -1.
 Currently, only "pure" (see
 .BR "-e trace" = "%pure"
 description) syscalls can be specified there.
-
+.IP
 Unless a :\fBwhen\fR=\,\fIexpr\fR subexpression is specified,
 an injection is being made into every invocation of each syscall from the
 .IR set .
-
-The format of the subexpression is one of the following:
+.IP
+The format of the subexpression is:
+.RS 15
+.IP
+\fIfirst\/\fR[\fB..\fR\,\fIlast\/\fR][\fB+\fR[\,\fIstep\/\fR]]
+.RE
+.IP
+Number
+.I first
+stands for the first invocation number in the range, number
+.I last
+stands for the last invocation number in the range, and
+.I step
+stands for the step between two consecutive invocations.
+The following combinations are useful:
 .RS
-.IP "" 2
+.TP 18
 .I first
-.RS 4
 For every syscall from the
 .IR set ,
 perform an injection for the syscall invocation number
 .I first
 only.
-.RE
-.IP "" 2
+.TQ
+\fIfirst\/\fB..\fR\,\fIlast\fR
+For every syscall from the
+.IR set ,
+perform an injection for the syscall invocation number
+.I first
+and all subsequent invocations until the invocation number
+.I last
+(inclusive).
+.TQ
 \fIfirst\/\fB+\fR
-.RS 4
 For every syscall from the
 .IR set ,
 perform injections for the syscall invocation number
 .I first
 and all subsequent invocations.
-.RE
-.IP "" 2
-\fIfirst\/\fB+\fIstep\fR
-.RS 4
+.TQ
+\fIfirst\/\fB..\fR\,\fIlast\/\fB+\fR
+For every syscall from the
+.IR set ,
+perform injections for the syscall invocation number
+.I first
+and all subsequent invocations until the invocation number
+.I last
+(inclusive).
+.TQ
+\fIfirst\/\fB+\fR\,\fIstep\fR
 For every syscall from the
 .IR set ,
 perform injections for syscall invocations number
@@ -713,20 +1330,26 @@ perform injections for syscall invocations number
 .IR first + step ,
 .IR first + step + step ,
 and so on.
-.RE
+.TQ
+\fIfirst\/\fB..\fR\,\fIlast\fB+\fR\,\fIstep\fR
+Same as the previous, but consider only syscall invocations with numbers up to
+.I last
+(inclusive).
 .RE
 .IP
 For example, to fail each third and subsequent chdir syscalls with
 .BR ENOENT ,
 use
 \fB\-e\ inject\fR=\,\fIchdir\/\fR:\fBerror\fR=\,\fIENOENT\/\fR:\fBwhen\fR=\,\fI3\/\fB+\fR.
-
+.IP
 The valid range for numbers
 .I first
 and
 .I step
-is 1..65535.
-
+is 1..65535, and for number
+.I last
+is 1..65534.
+.IP
 An injection expression can contain only one
 .BR error =
 or
@@ -736,163 +1359,29 @@ specification, and only one
 specification.  If an injection expression contains multiple
 .BR when =
 specifications, the last one takes precedence.
-
+.IP
 Accounting of syscalls that are subject to injection
 is done per syscall and per tracee.
-
+.IP
 Specification of syscall injection can be combined
 with other syscall filtering options, for example,
 \fB\-P \fI/dev/urandom \fB\-e inject\fR=\,\fIfile\/\fR:\fBerror\fR=\,\fIENOENT\fR.
-
 .TP
-\fB\-e\ fault\fR=\,\fIset\/\fR[:\fBerror\fR=\,\fIerrno\/\fR][:\fBwhen\fR=\,\fIexpr\/\fR]
+\fB\-e\ fault\fR=\,\fIsyscall_set\/\fR[:\fBerror\fR=\,\fIerrno\/\fR][:\fBwhen\fR=\,\fIexpr\/\fR]
+.TQ
+\fB\-\-fault\fR=\,\fIsyscall_set\/\fR[:\fBerror\fR=\,\fIerrno\/\fR][:\fBwhen\fR=\,\fIexpr\/\fR]
 Perform syscall fault injection for the specified set of syscalls.
-
+.IP
 This is equivalent to more generic
 \fB\-e\ inject\fR= expression with default value of
 .I errno
 option set to
 .BR ENOSYS .
-.TP
-.BR "\-e\ kvm" = vcpu
-Print the exit reason of kvm vcpu.  Requires Linux kernel version 4.16.0
-or higher.
-
-.TP
-.BI "\-P " path
-Trace only system calls accessing
-.IR path .
-Multiple
-.B \-P
-options can be used to specify several paths.
-.TP
-.B \-v
-Print unabbreviated versions of environment, stat, termios, etc.
-calls.  These structures are very common in calls and so the default
-behavior displays a reasonable subset of structure members.  Use
-this option to get all of the gory details.
-.SS Tracing
-.TP 12
-.BI "\-b " syscall
-If specified syscall is reached, detach from traced process.
-Currently, only
-.BR execve (2)
-syscall is supported.  This option is useful if you want to trace
-multi-threaded process and therefore require
-.BR \-f ,
-but don't want to trace its (potentially very complex) children.
-.TP
-.B \-D
-Run tracer process as a detached grandchild, not as parent of the
-tracee.  This reduces the visible effect of
-.B strace
-by keeping the tracee a direct child of the calling process.
-.TP
-.B \-f
-Trace child processes as they are created by currently traced
-processes as a result of the
-.BR fork (2),
-.BR vfork (2)
-and
-.BR clone (2)
-system calls.  Note that
-.B \-p
-.I PID
-.B \-f
-will attach all threads of process
-.I PID
-if it is multi-threaded, not only thread with
-.IR thread_id " = " PID .
-.TP
-.B \-ff
-If the
-.B \-o
-.I filename
-option is in effect, each processes trace is written to
-.IR filename . pid
-where
-.I pid
-is the numeric process id of each process.
-This is incompatible with
-.BR \-c ,
-since no per-process counts are kept.
-
-One might want to consider using
-.BR strace-log-merge (1)
-to obtain a combined strace log view.
-.TP
-.BI "\-I " interruptible
-When
-.B strace
-can be interrupted by signals (such as pressing
-.BR CTRL\-C ).
-.RS
-.TP 4
-.B 1
-no signals are blocked;
-.TQ
-.B 2
-fatal signals are blocked while decoding syscall (default);
-.TQ
-.B 3
-fatal signals are always blocked (default if
-.BR -o " " \fIFILE\fR " " \fIPROG\fR );
-.TQ
-.B 4
-fatal signals and
-.BR SIGTSTP " (" CTRL\-Z )
-are always blocked (useful to make
-.BI "strace -o " "FILE PROG"
-not stop on
-.BR CTRL\-Z ,
-default if
-.BR \-D ).
-.RE
-.SS Startup
-.TP 12
-\fB\-E\ \fIvar\fR=\,\fIval\fR
-Run command with
-.IR var = val
-in its list of environment variables.
-.TP
-.BI "\-E " var
-Remove
-.IR var
-from the inherited list of environment variables before passing it on to
-the command.
-.TP
-.BI "\-p " pid
-Attach to the process with the process
-.SM ID
-.I pid
-and begin tracing.
-The trace may be terminated
-at any time by a keyboard interrupt signal
-.RB ( CTRL\-C ).
-.B strace
-will respond by detaching itself from the traced process(es)
-leaving it (them) to continue running.
-Multiple
-.B \-p
-options can be used to attach to many processes in addition to
-.I command
-(which is optional if at least one
-.B \-p
-option is given).
-.B \-p
-"`pidof PROG`" syntax is supported.
-.TP
-.BI "\-u " username
-Run command with the user \s-1ID\s0, group \s-2ID\s0, and
-supplementary groups of
-.IR username .
-This option is only useful when running as root and enables the
-correct execution of setuid and/or setgid binaries.
-Unless this option is used setuid and setgid programs are executed
-without effective privileges.
 .SS Miscellaneous
 .TP 12
 .B \-d
+.TQ
+.B \-\-debug
 Show some debugging output of
 .B strace
 itself on the standard error.
@@ -909,11 +1398,56 @@ and it is ignored at all if used along with one or more instances of
 option.
 .TP
 .B \-h
+.TQ
+.B \-\-help
 Print the help summary.
 .TP
+.B \-\-seccomp\-bpf
+Try to enable use of seccomp-bpf (see
+.BR seccomp (2))
+to have
+.BR ptrace (2)-stops
+only when system calls that are being traced occur in the traced processes.
+This option has no effect unless
+.BR \-f / \-\-follow\-forks
+is also specified.
+.B \-\-seccomp\-bpf
+is also not applicable to processes attached using
+.BR \-p / \-\-attach
+option.  An attempt to enable system calls filtering using seccomp-bpf may
+fail for various reasons, e.g. there are too many system calls to filter,
+the seccomp API is not available, or
+.B strace
+itself is being traced.
+In cases when seccomp-bpf filter setup failed,
+.B strace
+proceeds as usual and stops traced processes on every system call.
+.TP
 .B \-V
+.TQ
+.B \-\-version
 Print the version number of
 .BR strace .
+.SS "Time specification format description"
+.PP
+Time values can be specified as a decimal floating point number
+(in a format accepted by
+.BR strtod (3)),
+optionally followed by one of the following suffices that specify
+the unit of time:
+.B s
+(seconds),
+.B ms
+(milliseconds),
+.B us
+(microseconds), or
+.B ns
+(nanoseconds).
+If no suffix is specified, the value is interpreted as microseconds.
+.PP
+The described format is used for
+.BR \-O ", " "\-e inject" = delay_enter ", and " "\-e inject" = delay_exit
+options.
 .SH DIAGNOSTICS
 When
 .I command
@@ -968,7 +1502,7 @@ If you do use this feature, please remember to install
 a regular non-setuid version of
 .B strace
 for ordinary users to use.
-.SH "MULTIPLE PERSONALITY SUPPORT"
+.SH "MULTIPLE PERSONALITIES SUPPORT"
 On some architectures,
 .B strace
 supports decoding of syscalls for processes that use different ABI rather than
@@ -983,14 +1517,28 @@ allbox;
 lb lb
 l l.
 Architecture   ABIs supported
-x86_64 i386, x32 (when built as an x86_64 application); i386 (when built as an x32 application)
+x86_64 i386, x32 [1]; i386 [2]
 AArch64        ARM 32-bit EABI
-PowerPC 64-bit PowerPC 32-bit
-RISC-V 64-bit  RISC-V 32-bit
+PowerPC 64-bit [3]     PowerPC 32-bit
 s390x  s390
 SPARC 64-bit   SPARC 32-bit
 TILE 64-bit    TILE 32-bit
 .TE
+.RS 0
+.TP 5
+[1]
+When
+.B strace
+is built as an x86_64 application
+.TQ
+[2]
+When
+.B strace
+is built as an x32 application
+.TQ
+[3]
+Big endian only
+.RE
 .PP
 This support is optional and relies on ability to generate and parse structure
 definitions during the build time.
@@ -1005,15 +1553,15 @@ has):
 .B m32-mpers
 .B strace
 can trace and properly decode non-native 32-bit binaries.
-.TP
+.TQ
 .B no-m32-mpers
 .B strace
 can trace, but cannot properly decode non-native 32-bit binaries.
-.TP
+.TQ
 .B mx32-mpers
 .B strace
 can trace and properly decode non-native 32-on-64-bit binaries.
-.TP
+.TQ
 .B no-mx32-mpers
 .B strace
 can trace, but cannot properly decode non-native 32-on-64-bit binaries.
@@ -1109,7 +1657,9 @@ effective user
 .SM ID
 privileges while being traced.
 .LP
-A traced process runs slowly.
+A traced process runs slowly (but check out the
+.B \-\-seccomp\-bpf
+option).
 .LP
 Traced processes which are descended from
 .I command
@@ -1171,7 +1721,7 @@ Since 2009,
 .B strace
 is actively maintained by Dmitry Levin.
 .B strace
-gained support for AArch64, ARC, AVR32, Blackfin, Meta, Nios II, OpenSISC 1000,
+gained support for AArch64, ARC, AVR32, Blackfin, Meta, Nios II, OpenRISC 1000,
 RISC-V, Tile/TileGx, Xtensa architectures since that time.
 In 2012, unmaintained and apparently broken support for non-Linux operating
 systems was removed.
@@ -1190,8 +1740,10 @@ repository commit log.
 Problems with
 .B strace
 should be reported to the
+.UR mailto:strace\-devel@lists.strace.io
 .B strace
-mailing list at <strace\-devel@lists.strace.io>.
+mailing list
+.UE .
 .SH "SEE ALSO"
 .BR strace-log-merge (1),
 .BR ltrace (1),
@@ -1200,3 +1752,14 @@ mailing list at <strace\-devel@lists.strace.io>.
 .BR time (1),
 .BR ptrace (2),
 .BR proc (5)
+.PP
+.UR https://strace.io/
+.B strace
+Home Page
+.UE
+.SH AUTHORS
+The complete list of
+.B strace
+contributors can be found in the
+.B CREDITS
+file.
index 318b1409eeaa47c8d7f2fe5ac849ffed79ce9a2c..2897195c9b249d4342e1ebbd1ebeae0532cd79e3 100644 (file)
--- a/strace.c
+++ b/strace.c
@@ -3,7 +3,7 @@
  * Copyright (c) 1993 Branko Lankester <branko@hacktic.nl>
  * Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com>
  * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
- * Copyright (c) 1999-2019 The strace developers.
+ * Copyright (c) 1999-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
 #ifdef HAVE_PATHS_H
 # include <paths.h>
 #endif
+#include <getopt.h>
 #include <pwd.h>
 #include <grp.h>
 #include <dirent.h>
 #include <locale.h>
 #include <sys/utsname.h>
-#ifdef HAVE_PRCTL
-# include <sys/prctl.h>
-#endif
-#include <asm/unistd.h>
+#include <sys/prctl.h>
 
 #include "kill_save_errno.h"
+#include "filter_seccomp.h"
 #include "largefile_wrappers.h"
 #include "mmap_cache.h"
 #include "number_set.h"
@@ -66,17 +65,28 @@ bool stack_trace_enabled;
 const unsigned int syscall_trap_sig = SIGTRAP | 0x80;
 
 cflag_t cflag = CFLAG_NONE;
-unsigned int followfork;
+bool followfork;
+bool output_separately;
 unsigned int ptrace_setoptions = PTRACE_O_TRACESYSGOOD | PTRACE_O_TRACEEXEC
                                 | PTRACE_O_TRACEEXIT;
+static struct xlat_data xflag_str[] = {
+       { HEXSTR_NON_ASCII,     "non-ascii" },
+       { HEXSTR_ALL,           "all" },
+};
 unsigned int xflag;
 bool debug_flag;
 bool Tflag;
+int Tflag_scale = 1000;
+int Tflag_width = 6;
 bool iflag;
+bool nflag;
 bool count_wallclock;
-unsigned int qflag;
-static unsigned int tflag;
+static int tflag_scale = 1000000000;
+static unsigned tflag_width = 0;
+static const char *tflag_format = NULL;
 static bool rflag;
+static int rflag_scale = 1000;
+static int rflag_width = 6;
 static bool print_pid_pfx;
 
 /* -I n */
@@ -92,6 +102,21 @@ static int opt_intr;
 /* We play with signal mask only if this mode is active: */
 #define interactive (opt_intr == INTR_WHILE_WAIT)
 
+enum {
+       DAEMONIZE_NONE        = 0,
+       DAEMONIZE_GRANDCHILD  = 1,
+       DAEMONIZE_NEW_PGROUP  = 2,
+       DAEMONIZE_NEW_SESSION = 3,
+
+       DAEMONIZE_OPTS_GUARD__,
+       MAX_DAEMONIZE_OPTS    = DAEMONIZE_OPTS_GUARD__ - 1
+};
+static struct xlat_data daemonize_str[] = {
+       { DAEMONIZE_GRANDCHILD,         "grandchild" },
+       { DAEMONIZE_NEW_PGROUP,         "pgroup" },
+       { DAEMONIZE_NEW_PGROUP,         "pgrp" },
+       { DAEMONIZE_NEW_SESSION,        "session" },
+};
 /*
  * daemonized_tracer supports -D option.
  * With this option, strace forks twice.
@@ -104,16 +129,12 @@ static int opt_intr;
  * wait() etc. Without -D, strace process gets lodged in between,
  * disrupting parent<->child link.
  */
-static bool daemonized_tracer;
+static unsigned int daemonized_tracer;
 
 static int post_attach_sigstop = TCB_IGNORE_ONE_SIGSTOP;
 #define use_seize (post_attach_sigstop == 0)
 
-/* Sometimes we want to print only succeeding syscalls. */
-bool not_failing_only;
-
-/* Show path associated with fd arguments */
-unsigned int show_fd_path;
+unsigned int pidns_translation;
 
 static bool detach_on_execve;
 
@@ -233,80 +254,200 @@ print_version(void)
 static void
 usage(void)
 {
+#ifdef ENABLE_STACKTRACE
+# define K_OPT "k"
+#else
+# define K_OPT ""
+#endif
+
        printf("\
-usage: strace [-CdffhiqrtttTvVwxxy] [-I n] [-e expr]...\n\
-              [-a column] [-o file] [-s strsize] [-P path]...\n\
-              -p pid... / [-D] [-E var=val]... [-u username] PROG [ARGS]\n\
-   or: strace -c[dfw] [-I n] [-e expr]... [-O overhead] [-S sortby]\n\
-              -p pid... / [-D] [-E var=val]... [-u username] PROG [ARGS]\n\
+Usage: strace [-ACdffhi" K_OPT "qqrtttTvVwxxyyzZ] [-I N] [-b execve] [-e EXPR]...\n\
+              [-a COLUMN] [-o FILE] [-s STRSIZE] [-X FORMAT] [-O OVERHEAD]\n\
+              [-S SORTBY] [-P PATH]... [-p PID]... [-U COLUMNS] [--seccomp-bpf]\n\
+              { -p PID | [-DDD] [-E VAR=VAL]... [-u USERNAME] PROG [ARGS] }\n\
+   or: strace -c[dfwzZ] [-I N] [-b execve] [-e EXPR]... [-O OVERHEAD]\n\
+              [-S SORTBY] [-P PATH]... [-p PID]... [-U COLUMNS] [--seccomp-bpf]\n\
+              { -p PID | [-DDD] [-E VAR=VAL]... [-u USERNAME] PROG [ARGS] }\n\
+\n\
+General:\n\
+  -e EXPR        a qualifying expression: OPTION=[!]all or OPTION=[!]VAL1[,VAL2]...\n\
+     options:    trace, abbrev, verbose, raw, signal, read, write, fault,\n\
+                 inject, status, quiet, kvm, decode-fds\n\
+\n\
+Startup:\n\
+  -E VAR=VAL, --env=VAR=VAL\n\
+                 put VAR=VAL in the environment for command\n\
+  -E VAR, --env=VAR\n\
+                 remove VAR from the environment for command\n\
+  -p PID, --attach=PID\n\
+                 trace process with process id PID, may be repeated\n\
+  -u USERNAME, --user=USERNAME\n\
+                 run command as USERNAME handling setuid and/or setgid\n\
+\n\
+Tracing:\n\
+  -b execve, --detach-on=execve\n\
+                 detach on execve syscall\n\
+  -D, --daemonize[=grandchild]\n\
+                 run tracer process as a grandchild, not as a parent\n\
+  -DD, --daemonize=pgroup\n\
+                 run tracer process in a separate process group\n\
+  -DDD, --daemonize=session\n\
+                 run tracer process in a separate session\n\
+  -f, --follow-forks\n\
+                 follow forks\n\
+  -ff, --follow-forks --output-separately\n\
+                 follow forks with output into separate files\n\
+  -I INTERRUPTIBLE, --interruptible=INTERRUPTIBLE\n\
+     1, anywhere:   no signals are blocked\n\
+     2, waiting:    fatal signals are blocked while decoding syscall (default)\n\
+     3, never:      fatal signals are always blocked (default if '-o FILE PROG')\n\
+     4, never_tstp: fatal signals and SIGTSTP (^Z) are always blocked\n\
+                    (useful to make 'strace -o FILE PROG' not stop on ^Z)\n\
+\n\
+Filtering:\n\
+  -e trace=[!]{[?]SYSCALL[@64|@32|@x32]|[?]/REGEX|GROUP|all|none},\n\
+  --trace=[!]{[?]SYSCALL[@64|@32|@x32]|[?]/REGEX|GROUP|all|none}\n\
+                 trace only specified syscalls.\n\
+     groups:     %%clock, %%creds, %%desc, %%file, %%fstat, %%fstatfs %%ipc, %%lstat,\n\
+                 %%memory, %%net, %%process, %%pure, %%signal, %%stat, %%%%stat,\n\
+                 %%statfs, %%%%statfs\n\
+  -e signal=SET, --signal=SET\n\
+                 trace only the specified set of signals\n\
+                 print only the signals from SET\n\
+  -e status=SET, --status=SET\n\
+                 print only system calls with the return statuses in SET\n\
+     statuses:   successful, failed, unfinished, unavailable, detached\n\
+  -P PATH, --trace-path=PATH\n\
+                 trace accesses to PATH\n\
+  -z, --successful-only\n\
+                 print only syscalls that returned without an error code\n\
+  -Z, --failed-only\n\
+                 print only syscalls that returned with an error code\n\
 \n\
 Output format:\n\
-  -a column      alignment COLUMN for printing syscall results (default %d)\n\
-  -i             print instruction pointer at time of syscall\n\
+  -a COLUMN, --columns=COLUMN\n\
+                 alignment COLUMN for printing syscall results (default %d)\n\
+  -e abbrev=SET, --abbrev=SET\n\
+                 abbreviate output for the syscalls in SET\n\
+  -e verbose=SET, --verbose=SET\n\
+                 dereference structures for the syscall in SET\n\
+  -e raw=SET, --raw=SET\n\
+                 print undecoded arguments for the syscalls in SET\n\
+  -e read=SET, --read=SET\n\
+                 dump the data read from the file descriptors in SET\n\
+  -e write=SET, --write=SET\n\
+                 dump the data written to the file descriptors in SET\n\
+  -e quiet=SET, --quiet=SET\n\
+                 suppress various informational messages\n\
+     messages:   attach, exit, path-resolution, personality, thread-execve\n\
+  -e kvm=vcpu, --kvm=vcpu\n\
+                 print exit reason of kvm vcpu\n\
+  -e decode-fds=SET, --decode-fds=SET\n\
+                 what kinds of file descritor information details to decode\n\
+     details:    dev (device major/minor for block/char device files)\n\
+                 path (file path),\n\
+                 pidfd (associated PID for pidfds),\n\
+                 socket (protocol-specific information for socket descriptors)\n\
+  -i, --instruction-pointer\n\
+                 print instruction pointer at time of syscall\n\
 "
 #ifdef ENABLE_STACKTRACE
 "\
-  -k             obtain stack trace between each syscall\n\
+  -k, --stack-traces\n\
+                 obtain stack trace between each syscall\n\
 "
 #endif
 "\
-  -o file        send trace output to FILE instead of stderr\n\
-  -q             suppress messages about attaching, detaching, etc.\n\
-  -r             print relative timestamp\n\
-  -s strsize     limit length of print strings to STRSIZE chars (default %d)\n\
-  -t             print absolute timestamp\n\
-  -tt            print absolute timestamp with usecs\n\
-  -T             print time spent in each syscall\n\
-  -x             print non-ascii strings in hex\n\
-  -xx            print all strings in hex\n\
-  -X format      set the format for printing of named constants and flags\n\
-  -y             print paths associated with file descriptor arguments\n\
-  -yy            print protocol specific information associated with socket file descriptors\n\
+  -n, --syscall-number\n\
+                 print syscall number\n\
+  -o FILE, --output=FILE\n\
+                 send trace output to FILE instead of stderr\n\
+  -A, --output-append-mode\n\
+                 open the file provided in the -o option in append mode\n\
+  --output-separately\n\
+                 output into separate files (by appending pid to file names)\n\
+  -q, --quiet=attach,personality\n\
+                 suppress messages about attaching, detaching, etc.\n\
+  -qq, --quiet=attach,personality,exit\n\
+                 suppress messages about process exit status as well.\n\
+  -qqq, --quiet=all\n\
+                 suppress all suppressible messages.\n\
+  -r, --relative-timestamps[=PRECISION]\n\
+                 print relative timestamp\n\
+     precision:  one of s, ms, us, ns; default is microseconds\n\
+  -s STRSIZE, --string-limit=STRSIZE\n\
+                 limit length of print strings to STRSIZE chars (default %d)\n\
+  --absolute-timestamps=[[format:]FORMAT[,[precision:]PRECISION]]\n\
+                 set the format of absolute timestamps\n\
+     format:     none, time, or unix; default is time\n\
+     precision:  one of s, ms, us, ns; default is seconds\n\
+  -t, --absolute-timestamps[=time]\n\
+                 print absolute timestamp\n\
+  -tt, --absolute-timestamps=[time,]us\n\
+                 print absolute timestamp with usecs\n\
+  -ttt, --absolute-timestamps=unix,us\n\
+                 print absolute UNIX time with usecs\n\
+  -T, --syscall-times[=PRECISION]\n\
+                 print time spent in each syscall\n\
+     precision:  one of s, ms, us, ns; default is microseconds\n\
+  -v, --no-abbrev\n\
+                 verbose mode: print entities unabbreviated\n\
+  -x, --strings-in-hex=non-ascii\n\
+                 print non-ascii strings in hex\n\
+  -xx, --strings-in-hex[=all]\n\
+                 print all strings in hex\n\
+  -X FORMAT, --const-print-style=FORMAT\n\
+                 set the FORMAT for printing of named constants and flags\n\
+     formats:    raw, abbrev, verbose\n\
+  -y, --decode-fds[=path]\n\
+                 print paths associated with file descriptor arguments\n\
+  -yy, --decode-fds=all\n\
+                 print all available information associated with file\n\
+                 descriptors in addition to paths\n\
 \n\
 Statistics:\n\
-  -c             count time, calls, and errors for each syscall and report summary\n\
-  -C             like -c but also print regular output\n\
-  -O overhead    set overhead for tracing syscalls to OVERHEAD usecs\n\
-  -S sortby      sort syscall counts by: time, calls, name, nothing (default %s)\n\
-  -w             summarise syscall latency (default is system time)\n\
+  -c, --summary-only\n\
+                 count time, calls, and errors for each syscall and report\n\
+                 summary\n\
+  -C, --summary  like -c, but also print the regular output\n\
+  -O OVERHEAD[UNIT], --summary-syscall-overhead=OVERHEAD[UNIT]\n\
+                 set overhead for tracing syscalls to OVERHEAD UNITs\n\
+     units:      one of s, ms, us, ns; default is microseconds\n\
+  -S SORTBY, --summary-sort-by=SORTBY\n\
+                 sort syscall counts by: time, min-time, max-time, avg-time,\n\
+                 calls, errors, name, nothing (default %s)\n\
+  -U COLUMNS, --summary-columns=COLUMNS\n\
+                 show specific columns in the summary report: comma-separated\n\
+                 list of time-percent, total-time, min-time, max-time, \n\
+                 avg-time, calls, errors, name\n\
+                 (default time-percent,total-time,avg-time,calls,errors,name)\n\
+  -w, --summary-wall-clock\n\
+                 summarise syscall latency (default is system time)\n\
 \n\
-Filtering:\n\
-  -e expr        a qualifying expression: option=[!]all or option=[!]val1[,val2]...\n\
-     options:    trace, abbrev, verbose, raw, signal, read, write, fault, inject, kvm\n\
-  -P path        trace accesses to path\n\
-\n\
-Tracing:\n\
-  -b execve      detach on execve syscall\n\
-  -D             run tracer process as a detached grandchild, not as parent\n\
-  -f             follow forks\n\
-  -ff            follow forks with output into separate files\n\
-  -I interruptible\n\
-     1:          no signals are blocked\n\
-     2:          fatal signals are blocked while decoding syscall (default)\n\
-     3:          fatal signals are always blocked (default if '-o FILE PROG')\n\
-     4:          fatal signals and SIGTSTP (^Z) are always blocked\n\
-                 (useful to make 'strace -o FILE PROG' not stop on ^Z)\n\
-\n\
-Startup:\n\
-  -E var         remove var from the environment for command\n\
-  -E var=val     put var=val in the environment for command\n\
-  -p pid         trace process with process id PID, may be repeated\n\
-  -u username    run command as username handling setuid and/or setgid\n\
+Tampering:\n\
+  -e inject=SET[:error=ERRNO|:retval=VALUE][:signal=SIG][:syscall=SYSCALL]\n\
+            [:delay_enter=DELAY][:delay_exit=DELAY][:when=WHEN],\n\
+  --inject=SET[:error=ERRNO|:retval=VALUE][:signal=SIG][:syscall=SYSCALL]\n\
+           [:delay_enter=DELAY][:delay_exit=DELAY][:when=WHEN]\n\
+                 perform syscall tampering for the syscalls in SET\n\
+     delay:      microseconds or NUMBER{s|ms|us|ns}\n\
+     when:       FIRST[..LAST][+[STEP]]\n\
+  -e fault=SET[:error=ERRNO][:when=WHEN], --fault=SET[:error=ERRNO][:when=WHEN]\n\
+                 synonym for -e inject with default ERRNO set to ENOSYS.\n\
 \n\
 Miscellaneous:\n\
-  -d             enable debug output to stderr\n\
-  -v             verbose mode: print unabbreviated argv, stat, termios, etc. args\n\
-  -h             print help message\n\
-  -V             print version\n\
+  -d, --debug    enable debug output to stderr\n\
+  -h, --help     print help message\n\
+  --seccomp-bpf  enable seccomp-bpf filtering\n\
+  -V, --version  print version\n\
 "
 /* ancient, no one should use it
 -F -- attempt to follow vforks (deprecated, use -f)\n\
  */
-/* this is broken, so don't document it
--z -- print only succeeding syscalls\n\
- */
 , DEFAULT_ACOLUMN, DEFAULT_STRLEN, DEFAULT_SORTBY);
        exit(0);
+
+#undef K_OPT
 }
 
 void ATTRIBUTE_NORETURN
@@ -321,9 +462,14 @@ die(void)
 }
 
 static void
-error_opt_arg(int opt, const char *arg)
+error_opt_arg(int opt, const struct option *lopt, const char *arg)
 {
-       error_msg_and_help("invalid -%c argument: '%s'", opt, arg);
+       if (lopt && lopt->name) {
+               error_msg_and_help("invalid --%s argument: '%s'",
+                                  lopt->name, arg);
+       } else {
+               error_msg_and_help("invalid -%c argument: '%s'", opt, arg);
+       }
 }
 
 static const char *ptrace_attach_cmd;
@@ -397,7 +543,7 @@ set_cloexec_flag(int fd)
 {
        int flags, newflags;
 
-       flags = fcntl(fd, F_GETFD);
+       flags = fcntl_fd(fd, F_GETFD);
        if (flags < 0) {
                /* Can happen only if fd is bad.
                 * Should never happen: if it does, we have a bug
@@ -411,7 +557,7 @@ set_cloexec_flag(int fd)
        if (flags == newflags)
                return;
 
-       if (fcntl(fd, F_SETFD, newflags)) /* never fails */
+       if (fcntl_fd(fd, F_SETFD, newflags)) /* never fails */
                perror_msg_and_die("fcntl(%d, F_SETFD, %#x)", fd, newflags);
 }
 
@@ -500,7 +646,7 @@ outf_perror(const struct tcb * const tcp)
                return;
 
        /* This is ugly, but we don't store separate file names */
-       if (followfork >= 2)
+       if (output_separately)
                perror_msg("%s.%u", outfname, tcp->pid);
        else
                perror_msg("%s", outfname);
@@ -604,12 +750,13 @@ printleader(struct tcb *tcp)
        /* If -ff, "previous tcb we printed" is always the same as current,
         * because we have per-tcb output files.
         */
-       if (followfork >= 2)
+       if (output_separately)
                printing_tcp = tcp;
 
        if (printing_tcp) {
                set_current_tcp(printing_tcp);
-               if (printing_tcp->curcol != 0 && (followfork < 2 || printing_tcp == tcp)) {
+               if (!tcp->staged_output_data && printing_tcp->curcol != 0 &&
+                   (!output_separately || printing_tcp == tcp)) {
                        /*
                         * case 1: we have a shared log (i.e. not -ff), and last line
                         * wasn't finished (same or different tcb, doesn't matter).
@@ -630,28 +777,23 @@ printleader(struct tcb *tcp)
        else if (nprocs > 1 && !outfname)
                tprintf("[pid %5u] ", tcp->pid);
 
-       if (tflag) {
+       if (tflag_format) {
                struct timespec ts;
                clock_gettime(CLOCK_REALTIME, &ts);
 
-               if (tflag > 2) {
-                       tprintf("%lld.%06ld ",
-                               (long long) ts.tv_sec, (long) ts.tv_nsec / 1000);
-               } else {
-                       time_t local = ts.tv_sec;
-                       char str[MAX(sizeof("HH:MM:SS"), sizeof(ts.tv_sec) * 3)];
-                       struct tm *tm = localtime(&local);
+               time_t local = ts.tv_sec;
+               char str[MAX(sizeof("HH:MM:SS"), sizeof(local) * 3)];
+               struct tm *tm = localtime(&local);
 
-                       if (tm)
-                               strftime(str, sizeof(str), "%T", tm);
-                       else
-                               xsprintf(str, "%lld", (long long) local);
-                       if (tflag > 1)
-                               tprintf("%s.%06ld ",
-                                       str, (long) ts.tv_nsec / 1000);
-                       else
-                               tprintf("%s ", str);
-               }
+               if (tm)
+                       strftime(str, sizeof(str), tflag_format, tm);
+               else
+                       xsprintf(str, "%lld", (long long) local);
+               if (tflag_width)
+                       tprintf("%s.%0*ld ", str, tflag_width,
+                               (long) ts.tv_nsec / tflag_scale);
+               else
+                       tprintf("%s ", str);
        }
 
        if (rflag) {
@@ -666,12 +808,17 @@ printleader(struct tcb *tcp)
                ts_sub(&dts, &ts, &ots);
                ots = ts;
 
-               tprintf("%s%6ld.%06ld%s ",
-                       tflag ? "(+" : "",
-                       (long) dts.tv_sec, (long) dts.tv_nsec / 1000,
-                       tflag ? ")" : "");
+               tprintf("%s%6ld", tflag_format ? "(+" : "", (long) dts.tv_sec);
+               if (rflag_width) {
+                       tprintf(".%0*ld",
+                               rflag_width, (long) dts.tv_nsec / rflag_scale);
+               }
+               tprints(tflag_format ? ") " : " ");
        }
 
+       if (nflag)
+               print_syscall_number(tcp);
+
        if (iflag)
                print_instruction_pointer(tcp);
 }
@@ -692,7 +839,7 @@ after_successful_attach(struct tcb *tcp, const unsigned int flags)
 {
        tcp->flags |= TCB_ATTACHED | TCB_STARTUP | flags;
        tcp->outf = shared_log; /* if not -ff mode, the same file is for all */
-       if (followfork >= 2) {
+       if (output_separately) {
                char name[PATH_MAX];
                xsprintf(name, "%s.%u", outfname, tcp->pid);
                tcp->outf = strace_fopen(name);
@@ -790,6 +937,14 @@ droptcb(struct tcb *tcp)
        if (tcp->pid == 0)
                return;
 
+       if (cflag && debug_flag) {
+               struct timespec dt;
+
+               ts_sub(&dt, &tcp->stime, &tcp->atime);
+               debug_func_msg("pid %d: %.9f seconds of system time spent "
+                              "since attach", tcp->pid, ts_float(&dt));
+       }
+
        int p;
        for (p = 0; p < SUPPORTED_PERSONALITIES; ++p)
                free(tcp->inject_vec[p]);
@@ -812,12 +967,18 @@ droptcb(struct tcb *tcp)
        debug_msg("dropped tcb for pid %d, %d remain", tcp->pid, nprocs);
 
        if (tcp->outf) {
-               if (followfork >= 2) {
-                       if (tcp->curcol != 0)
+               bool publish = true;
+               if (!is_complete_set(status_set, NUMBER_OF_STATUSES)) {
+                       publish = is_number_in_set(STATUS_DETACHED, status_set);
+                       strace_close_memstream(tcp, publish);
+               }
+
+               if (output_separately) {
+                       if (tcp->curcol != 0 && publish)
                                fprintf(tcp->outf, " <detached ...>\n");
                        fclose(tcp->outf);
                } else {
-                       if (printing_tcp == tcp && tcp->curcol != 0)
+                       if (printing_tcp == tcp && tcp->curcol != 0 && publish)
                                fprintf(tcp->outf, " <detached ...>\n");
                        flush_tcp_output(tcp);
                }
@@ -987,7 +1148,8 @@ detach(struct tcb *tcp)
        }
 
  drop:
-       if (!qflag && (tcp->flags & TCB_ATTACHED))
+       if (!is_number_in_set(QUIET_ATTACH, quiet_set)
+           && (tcp->flags & TCB_ATTACHED))
                error_msg("Process %u detached", tcp->pid);
 
        droptcb(tcp);
@@ -1040,7 +1202,7 @@ attach_tcb(struct tcb *const tcp)
        unsigned int ntid = 0, nerr = 0;
 
        if (followfork && tcp->pid != strace_child &&
-           xsprintf(procdir, task_path, tcp->pid) > 0 &&
+           xsprintf(procdir, task_path, get_proc_pid(tcp)) > 0 &&
            (dir = opendir(procdir)) != NULL) {
                struct_dirent *de;
 
@@ -1068,7 +1230,7 @@ attach_tcb(struct tcb *const tcp)
                closedir(dir);
        }
 
-       if (!qflag) {
+       if (!is_number_in_set(QUIET_ATTACH, quiet_set)) {
                if (ntid > nerr)
                        error_msg("Process %u attached"
                                  " with %u threads",
@@ -1104,6 +1266,27 @@ startup_attach(void)
                /* grandchild */
                /* We will be the tracer process. Remember our new pid: */
                strace_tracer_pid = getpid();
+
+               switch (daemonized_tracer) {
+               case DAEMONIZE_NEW_PGROUP:
+                       /*
+                        * If -D is passed twice, create a new process group,
+                        * so we won't be killed by kill(0, ...).
+                        */
+                       if (setpgid(0, 0) < 0)
+                               perror_msg_and_die("Cannot create a new"
+                                                  " process group");
+                       break;
+               case DAEMONIZE_NEW_SESSION:
+                       /*
+                        * If -D is passed thrice, create a new session,
+                        * so we won't be killed upon session termination.
+                        */
+                       if (setsid() < 0)
+                               perror_msg_and_die("Cannot create a new"
+                                                  " session");
+                       break;
+               }
        }
 
        for (tcbi = 0; tcbi < tcbtabsize; tcbi++) {
@@ -1147,6 +1330,7 @@ struct exec_params {
        uid_t run_euid;
        gid_t run_egid;
        char **argv;
+       char **env;
        char *pathname;
        struct sigaction child_sa;
 };
@@ -1205,7 +1389,11 @@ exec_or_die(void)
        if (params_for_tracee.child_sa.sa_handler != SIG_DFL)
                sigaction(SIGCHLD, &params_for_tracee.child_sa, NULL);
 
-       execv(params->pathname, params->argv);
+       debug_msg("seccomp filter %s",
+                 seccomp_filtering ? "enabled" : "disabled");
+       if (seccomp_filtering)
+               init_seccomp_filter();
+       execve(params->pathname, params->argv, params->env);
        perror_msg_and_die("exec");
 }
 
@@ -1274,7 +1462,7 @@ redirect_standard_fds(void)
 }
 
 static void
-startup_child(char **argv)
+startup_child(char **argv, char **env)
 {
        strace_stat_t statbuf;
        const char *filename;
@@ -1347,13 +1535,14 @@ startup_child(char **argv)
        params_for_tracee.run_euid = (statbuf.st_mode & S_ISUID) ? statbuf.st_uid : run_uid;
        params_for_tracee.run_egid = (statbuf.st_mode & S_ISGID) ? statbuf.st_gid : run_gid;
        params_for_tracee.argv = argv;
+       params_for_tracee.env = env;
        /*
         * On NOMMU, can be safely freed only after execve in tracee.
         * It's hard to know when that happens, so we just leak it.
         */
        params_for_tracee.pathname = NOMMU_SYSTEM ? xstrdup(pathname) : pathname;
 
-#if defined HAVE_PRCTL && defined PR_SET_PTRACER && defined PR_SET_PTRACER_ANY
+#if defined PR_SET_PTRACER && defined PR_SET_PTRACER_ANY
        if (daemonized_tracer)
                prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY);
 #endif
@@ -1443,6 +1632,10 @@ startup_child(char **argv)
                 * to create a genuine separate stack and execute on it.
                 */
        }
+
+       if (seccomp_filtering)
+               tcp->flags |= TCB_SECCOMP_FILTER;
+
        /*
         * A case where straced process is part of a pipe:
         * { sleep 1; yes | head -n99999; } | strace -o/dev/null sh -c 'exec <&-; sleep 9'
@@ -1507,35 +1700,29 @@ test_ptrace_seize(void)
        }
 }
 
-static unsigned
+static unsigned int
 get_os_release(void)
 {
-       unsigned rel;
-       const char *p;
        struct utsname u;
        if (uname(&u) < 0)
                perror_msg_and_die("uname");
-       /* u.release has this form: "3.2.9[-some-garbage]" */
-       rel = 0;
-       p = u.release;
-       for (;;) {
-               if (!(*p >= '0' && *p <= '9'))
-                       error_msg_and_die("Bad OS release string: '%s'", u.release);
-               /* Note: this open-codes KERNEL_VERSION(): */
-               rel = (rel << 8) | atoi(p);
-               if (rel >= KERNEL_VERSION(1, 0, 0))
-                       break;
-               while (*p >= '0' && *p <= '9')
-                       p++;
-               if (*p != '.') {
-                       if (rel >= KERNEL_VERSION(0, 1, 0)) {
-                               /* "X.Y-something" means "X.Y.0" */
-                               rel <<= 8;
-                               break;
-                       }
-                       error_msg_and_die("Bad OS release string: '%s'", u.release);
+       /*
+        * u.release string consists of at most three parts
+        * and normally has this form: "3.2.9[-some-garbage]",
+        * "X.Y-something" means "X.Y.0".
+        */
+       const char *p = u.release;
+       unsigned int rel = 0;
+       for (unsigned int parts = 0; parts < 3; ++parts) {
+               unsigned int n = 0;
+               for (; (*p >= '0') && (*p <= '9'); ++p) {
+                       n *= 10;
+                       n += *p - '0';
                }
-               p++;
+               rel <<= 8;
+               rel |= n;
+               if (*p == '.')
+                       ++p;
        }
        return rel;
 }
@@ -1547,6 +1734,211 @@ set_sighandler(int signo, void (*sighandler)(int), struct sigaction *oldact)
        sigaction(signo, &sa, oldact);
 }
 
+static int
+parse_interruptible_arg(const char *arg)
+{
+       static const struct xlat_data intr_str[] = {
+               { INTR_ANYWHERE,        "anywhere" },
+               { INTR_ANYWHERE,        "always" },
+               { INTR_WHILE_WAIT,      "waiting" },
+               { INTR_NEVER,           "never" },
+               { INTR_BLOCK_TSTP_TOO,  "never_tstp" },
+       };
+
+       const struct xlat_data *intr_arg = find_xlat_val(intr_str, arg);
+
+       return intr_arg ? (int) intr_arg->val
+                       : (int) string_to_uint_upto(arg, NUM_INTR_OPTS - 1);
+}
+
+static int
+parse_ts_arg(const char *in_arg)
+{
+       static const char format_pfx[] = "format:";
+       static const char scale_pfx[] = "precision:";
+
+       enum {
+               TOKEN_FORMAT = 1 << 0,
+               TOKEN_SCALE  = 1 << 1,
+       } token_type;
+       enum {
+               FK_UNSET,
+               FK_NONE,
+               FK_TIME,
+               FK_UNIX,
+       } format_kind = FK_UNSET;
+       int precision_width;
+       int precision_scale = 0;
+       char *arg = xstrdup(in_arg);
+       char *saveptr = NULL;
+
+       for (const char *token = strtok_r(arg, ",", &saveptr);
+            token; token = strtok_r(NULL, ",", &saveptr)) {
+               token_type = TOKEN_FORMAT | TOKEN_SCALE;
+
+               if (!strncasecmp(token, format_pfx, sizeof(format_pfx) - 1)) {
+                       token += sizeof(format_pfx) - 1;
+                       token_type = TOKEN_FORMAT;
+               } else if (!strncasecmp(token, scale_pfx,
+                                       sizeof(scale_pfx) - 1)) {
+                       token += sizeof(scale_pfx) - 1;
+                       token_type = TOKEN_SCALE;
+
+               }
+
+               if (token_type & TOKEN_FORMAT) {
+                       if (!strcasecmp(token, "none")) {
+                               format_kind = FK_NONE;
+                               continue;
+                       } else if (!strcasecmp(token, "time")) {
+                               format_kind = FK_TIME;
+                               continue;
+                       } else if (!strcasecmp(token, "unix")) {
+                               format_kind = FK_UNIX;
+                               continue;
+                       }
+               }
+
+               if (token_type & TOKEN_SCALE) {
+                       precision_scale =
+                               str2timescale_optarg(token, &precision_width);
+
+                       if (precision_scale > 0)
+                               continue;
+               }
+
+               free(arg);
+               return -1;
+       }
+
+       switch (format_kind) {
+       case FK_UNSET:
+               if (!tflag_format)
+                       tflag_format = "%T";
+               break;
+       case FK_NONE:
+               tflag_format = NULL;
+               break;
+       case FK_TIME:
+               tflag_format = "%T";
+               break;
+       case FK_UNIX:
+               tflag_format = "%s";
+               break;
+       }
+
+       if (precision_scale > 0) {
+               tflag_scale = precision_scale;
+               tflag_width = precision_width;
+       }
+
+       free(arg);
+       return 0;
+}
+
+static void
+remove_from_env(char **env, size_t *env_count, const char *var)
+{
+       const size_t len = strlen(var);
+       size_t w = 0;
+
+       debug_func_msg("Removing variable \"%s\" from the command environment",
+                      var);
+
+       for (size_t r = 0; r < *env_count; ++r) {
+               if (!strncmp(env[r], var, len) &&
+                   (env[r][len] == '=' || env[r][len] == '\0')) {
+                       debug_func_msg("Skipping entry %zu (\"%s\")",
+                                      r, env[r]);
+                       continue;
+               }
+               if (w < r) {
+                       debug_func_msg("Copying entry %zu to %zu", r, w);
+                       env[w] = env[r];
+               }
+               ++w;
+       }
+
+       if (w < *env_count) {
+               debug_func_msg("Decreasing env count from %zu to %zu",
+                              *env_count, w);
+               *env_count = w;
+       }
+}
+
+static void
+add_to_env(char **env, size_t *env_count, char *var, const size_t len)
+{
+       size_t r;
+
+       for (r = 0; r < *env_count; ++r) {
+               if (!strncmp(env[r], var, len) &&
+                   (env[r][len] == '=' || env[r][len] == '\0'))
+                       break;
+       }
+
+       if (r < *env_count) {
+               debug_func_msg("Replacing entry %zu (\"%s\")"
+                              ", key=\"%.*s\", var=\"%s\"",
+                              r, env[r], (int) len, var, var);
+       } else {
+               debug_func_msg("Adding entry %zu"
+                              ", key=\"%.*s\", var=\"%s\"",
+                              r, (int) len, var, var);
+               *env_count += 1;
+       }
+
+       env[r] = var;
+}
+
+static void
+update_env(char **env, size_t *env_count, char *var)
+{
+       char *val = strchr(var, '=');
+
+       if (val)
+               add_to_env(env, env_count, var, val - var);
+       else
+               remove_from_env(env, env_count, var);
+}
+
+static char **
+make_env(char **orig_env, char *const *env_changes, size_t env_change_count)
+{
+       if (!env_change_count)
+               return orig_env;
+
+       char **new_env;
+       size_t new_env_count = 0;
+       size_t new_env_size;
+
+       /* Determining the environment variable count.  */
+       if (orig_env) {
+               for (; orig_env[new_env_count]; ++new_env_count)
+                       ;
+       }
+       new_env_size = new_env_count + env_change_count;
+
+       if (new_env_size < new_env_count || new_env_size < env_change_count ||
+           new_env_size + 1 < new_env_size)
+               error_msg_and_die("Cannot construct new environment: the sum "
+                                 "of old environment variable count (%zu) and "
+                                 "environment changes count (%zu) is too big",
+                                 new_env_count, env_change_count);
+
+       new_env_size++;
+       new_env = xallocarray(new_env_size, sizeof(*new_env));
+       if (new_env_count)
+               memcpy(new_env, orig_env, new_env_count * sizeof(*orig_env));
+
+       for (size_t i = 0; i < env_change_count; ++i)
+               update_env(new_env, &new_env_count, env_changes[i]);
+
+       new_env[new_env_count] = NULL;
+
+       return new_env;
+}
+
 /*
  * Initialization part of main() was eating much stack (~0.5k),
  * which was unused after init.
@@ -1558,8 +1950,51 @@ set_sighandler(int signo, void (*sighandler)(int), struct sigaction *oldact)
 static void ATTRIBUTE_NOINLINE
 init(int argc, char *argv[])
 {
+       static const char qflag_qual[] = "attach,personality";
+       static const char qqflag_qual[] = "exit,attach,personality";
+       static const char qqqflag_qual[] = "all";
+       static const char yflag_qual[] = "path";
+       static const char yyflag_qual[] = "all";
+       static const char tflag_str[] = "format:time";
+       static const char ttflag_str[] = "precision:us,format:time";
+       static const char tttflag_str[] = "format:unix,precision:us";
+
        int c, i;
-       int optF = 0;
+       int optF = 0, zflags = 0;
+       int lopt_idx;
+       int daemonized_tracer_long = DAEMONIZE_NONE;
+       int xflag_long = HEXSTR_NONE;
+       int qflag_short = 0;
+       int followfork_short = 0;
+       int yflag_short = 0;
+       bool tflag_long_set = false;
+       int tflag_short = 0;
+       bool columns_set = false;
+       bool sortby_set = false;
+
+       /*
+        * We can initialise global_path_set only after tracing backend
+        * initialisation, so we store pointers to all the paths from
+        * command-line arguments during parsing in this array and then,
+        * after the successful backend initialisation, iterate over it
+        * in order to add them to global_path_set.
+        */
+       const char **pathtrace_paths = NULL;
+       size_t pathtrace_size = 0;
+       size_t pathtrace_count = 0;
+
+       /**
+        * Storage for environment changes requested for command.  They
+        * are stored in a temporary array and not applied as is during
+        * command line parsing for two reasons:
+        *  - putenv() changes environment of the tracer as well,
+        *    which is unacceptable.
+        *  - Environment changes have to be applied
+        *    in a tracing-backend-specific way.
+        */
+       char **env_changes = NULL;
+       size_t env_change_size = 0;
+       size_t env_change_count = 0;
 
        if (!program_invocation_name || !*program_invocation_name) {
                static char name[] = "strace";
@@ -1571,26 +2006,121 @@ init(int argc, char *argv[])
 
        os_release = get_os_release();
 
+       pidns_init();
+
        shared_log = stderr;
        set_sortby(DEFAULT_SORTBY);
        set_personality(DEFAULT_PERSONALITY);
-       qualify("trace=all");
-       qualify("abbrev=all");
-       qualify("verbose=all");
+       qualify_trace("all");
+       qualify_abbrev("all");
+       qualify_verbose("all");
 #if DEFAULT_QUAL_FLAGS != (QUAL_TRACE | QUAL_ABBREV | QUAL_VERBOSE)
 # error Bug in DEFAULT_QUAL_FLAGS
 #endif
-       qualify("signal=all");
-       while ((c = getopt(argc, argv, "+"
-#ifdef ENABLE_STACKTRACE
-           "k"
-#endif
-           "a:Ab:cCdDe:E:fFhiI:o:O:p:P:qrs:S:tTu:vVwxX:yz")) != EOF) {
+       qualify_status("all");
+       qualify_quiet("none");
+       qualify_decode_fd("none");
+       qualify_signals("all");
+
+       static const char optstring[] =
+               "+a:Ab:cCdDe:E:fFhiI:kno:O:p:P:qrs:S:tTu:U:vVwxX:yzZ";
+
+       enum {
+               GETOPT_SECCOMP = 0x100,
+               GETOPT_DAEMONIZE,
+               GETOPT_HEX_STR,
+               GETOPT_FOLLOWFORKS,
+               GETOPT_OUTPUT_SEPARATELY,
+               GETOPT_TS,
+               GETOPT_PIDNS_TRANSLATION,
+
+               GETOPT_QUAL_TRACE,
+               GETOPT_QUAL_ABBREV,
+               GETOPT_QUAL_VERBOSE,
+               GETOPT_QUAL_RAW,
+               GETOPT_QUAL_SIGNAL,
+               GETOPT_QUAL_STATUS,
+               GETOPT_QUAL_READ,
+               GETOPT_QUAL_WRITE,
+               GETOPT_QUAL_FAULT,
+               GETOPT_QUAL_INJECT,
+               GETOPT_QUAL_KVM,
+               GETOPT_QUAL_QUIET,
+               GETOPT_QUAL_DECODE_FD,
+       };
+       static const struct option longopts[] = {
+               { "columns",            required_argument, 0, 'a' },
+               { "output-append-mode", no_argument,       0, 'A' },
+               { "detach-on",          required_argument, 0, 'b' },
+               { "summary-only",       no_argument,       0, 'c' },
+               { "summary",            no_argument,       0, 'C' },
+               { "debug",              no_argument,       0, 'd' },
+               { "daemonize",          optional_argument, 0, GETOPT_DAEMONIZE },
+               { "daemonised",         optional_argument, 0, GETOPT_DAEMONIZE },
+               { "daemonized",         optional_argument, 0, GETOPT_DAEMONIZE },
+               { "env",                required_argument, 0, 'E' },
+               { "follow-forks",       no_argument,       0, GETOPT_FOLLOWFORKS },
+               { "output-separately",  no_argument,       0,
+                       GETOPT_OUTPUT_SEPARATELY },
+               { "help",               no_argument,       0, 'h' },
+               { "instruction-pointer", no_argument,      0, 'i' },
+               { "interruptible",      required_argument, 0, 'I' },
+               { "stack-traces",       no_argument,       0, 'k' },
+               { "syscall-number",     no_argument,       0, 'n' },
+               { "output",             required_argument, 0, 'o' },
+               { "summary-syscall-overhead", required_argument, 0, 'O' },
+               { "attach",             required_argument, 0, 'p' },
+               { "trace-path",         required_argument, 0, 'P' },
+               { "relative-timestamps", optional_argument, 0, 'r' },
+               { "string-limit",       required_argument, 0, 's' },
+               { "summary-sort-by",    required_argument, 0, 'S' },
+               { "absolute-timestamps", optional_argument, 0, GETOPT_TS },
+               { "timestamps",         optional_argument, 0, GETOPT_TS },
+               { "syscall-times",      optional_argument, 0, 'T' },
+               { "user",               required_argument, 0, 'u' },
+               { "summary-columns",    required_argument, 0, 'U' },
+               { "no-abbrev",          no_argument,       0, 'v' },
+               { "version",            no_argument,       0, 'V' },
+               { "summary-wall-clock", no_argument,       0, 'w' },
+               { "strings-in-hex",     optional_argument, 0, GETOPT_HEX_STR },
+               { "const-print-style",  required_argument, 0, 'X' },
+               { "pidns-translation",  no_argument      , 0, GETOPT_PIDNS_TRANSLATION },
+               { "successful-only",    no_argument,       0, 'z' },
+               { "failed-only",        no_argument,       0, 'Z' },
+               { "failing-only",       no_argument,       0, 'Z' },
+               { "seccomp-bpf",        no_argument,       0, GETOPT_SECCOMP },
+
+               { "trace",      required_argument, 0, GETOPT_QUAL_TRACE },
+               { "abbrev",     required_argument, 0, GETOPT_QUAL_ABBREV },
+               { "verbose",    required_argument, 0, GETOPT_QUAL_VERBOSE },
+               { "raw",        required_argument, 0, GETOPT_QUAL_RAW },
+               { "signals",    required_argument, 0, GETOPT_QUAL_SIGNAL },
+               { "status",     required_argument, 0, GETOPT_QUAL_STATUS },
+               { "read",       required_argument, 0, GETOPT_QUAL_READ },
+               { "write",      required_argument, 0, GETOPT_QUAL_WRITE },
+               { "fault",      required_argument, 0, GETOPT_QUAL_FAULT },
+               { "inject",     required_argument, 0, GETOPT_QUAL_INJECT },
+               { "kvm",        required_argument, 0, GETOPT_QUAL_KVM },
+               { "quiet",      optional_argument, 0, GETOPT_QUAL_QUIET },
+               { "silent",     optional_argument, 0, GETOPT_QUAL_QUIET },
+               { "silence",    optional_argument, 0, GETOPT_QUAL_QUIET },
+               { "decode-fds", optional_argument, 0, GETOPT_QUAL_DECODE_FD },
+
+               { 0, 0, 0, 0 }
+       };
+
+       lopt_idx = -1;
+       while ((c = getopt_long(argc, argv, optstring, longopts, &lopt_idx)) != EOF) {
+               const struct option *lopt = lopt_idx >= 0
+                       && (unsigned) lopt_idx < ARRAY_SIZE(longopts)
+                       ? longopts + lopt_idx : NULL;
+               lopt_idx = -1;
+
                switch (c) {
                case 'a':
                        acolumn = string_to_uint(optarg);
                        if (acolumn < 0)
-                               error_opt_arg(c, optarg);
+                               error_opt_arg(c, lopt, optarg);
                        break;
                case 'A':
                        open_append = true;
@@ -1603,13 +2133,17 @@ init(int argc, char *argv[])
                        break;
                case 'c':
                        if (cflag == CFLAG_BOTH) {
-                               error_msg_and_help("-c and -C are mutually exclusive");
+                               error_msg_and_help("-c/--summary-only and "
+                                                  "-C/--summary are mutually "
+                                                  "exclusive");
                        }
                        cflag = CFLAG_ONLY_STATS;
                        break;
                case 'C':
                        if (cflag == CFLAG_ONLY_STATS) {
-                               error_msg_and_help("-c and -C are mutually exclusive");
+                               error_msg_and_help("-c/--summary-only and "
+                                                  "-C/--summary are mutually "
+                                                  "exclusive");
                        }
                        cflag = CFLAG_BOTH;
                        break;
@@ -1617,17 +2151,35 @@ init(int argc, char *argv[])
                        debug_flag = 1;
                        break;
                case 'D':
-                       daemonized_tracer = 1;
+                       daemonized_tracer++;
+                       break;
+               case GETOPT_DAEMONIZE:
+                       daemonized_tracer_long =
+                               find_arg_val(optarg, daemonize_str,
+                                            DAEMONIZE_GRANDCHILD,
+                                            DAEMONIZE_NONE);
+                       if (daemonized_tracer_long <= DAEMONIZE_NONE)
+                               error_opt_arg(c, lopt, optarg);
                        break;
                case 'e':
                        qualify(optarg);
                        break;
                case 'E':
-                       if (putenv(optarg) < 0)
-                               perror_msg_and_die("putenv");
+                       if (env_change_count >= env_change_size)
+                               env_changes = xgrowarray(env_changes,
+                                                        &env_change_size,
+                                                        sizeof(*env_changes));
+
+                       env_changes[env_change_count++] = optarg;
                        break;
                case 'f':
-                       followfork++;
+                       followfork_short++;
+                       break;
+               case GETOPT_FOLLOWFORKS:
+                       followfork = true;
+                       break;
+               case GETOPT_OUTPUT_SEPARATELY:
+                       output_separately = true;
                        break;
                case 'F':
                        optF = 1;
@@ -1639,56 +2191,86 @@ init(int argc, char *argv[])
                        iflag = 1;
                        break;
                case 'I':
-                       opt_intr = string_to_uint_upto(optarg, NUM_INTR_OPTS - 1);
+                       opt_intr = parse_interruptible_arg(optarg);
                        if (opt_intr <= 0)
-                               error_opt_arg(c, optarg);
+                               error_opt_arg(c, lopt, optarg);
                        break;
-#ifdef ENABLE_STACKTRACE
                case 'k':
+#ifdef ENABLE_STACKTRACE
                        stack_trace_enabled = true;
-                       break;
+#else
+                       error_msg_and_die("Stack traces (-k/--stack-traces "
+                                         "option) are not supported by this "
+                                         "build of strace");
 #endif
+                       break;
+               case 'n':
+                       nflag = 1;
+                       break;
                case 'o':
                        outfname = optarg;
                        break;
                case 'O':
-                       i = string_to_uint(optarg);
-                       if (i < 0)
-                               error_opt_arg(c, optarg);
-                       set_overhead(i);
+                       if (set_overhead(optarg) < 0)
+                               error_opt_arg(c, lopt, optarg);
                        break;
                case 'p':
                        process_opt_p_list(optarg);
                        break;
                case 'P':
-                       pathtrace_select(optarg);
+                       if (pathtrace_count >= pathtrace_size)
+                               pathtrace_paths = xgrowarray(pathtrace_paths,
+                                       &pathtrace_size,
+                                       sizeof(pathtrace_paths[0]));
+
+                       pathtrace_paths[pathtrace_count++] = optarg;
                        break;
                case 'q':
-                       qflag++;
+                       qflag_short++;
                        break;
                case 'r':
                        rflag = 1;
+                       rflag_width = 6;
+                       rflag_scale = str2timescale_optarg(optarg,
+                                                          &rflag_width);
+                       if (rflag_scale < 0)
+                               error_opt_arg(c, lopt, optarg);
                        break;
                case 's':
                        i = string_to_uint(optarg);
                        if (i < 0 || (unsigned int) i > -1U / 4)
-                               error_opt_arg(c, optarg);
+                               error_opt_arg(c, lopt, optarg);
                        max_strlen = i;
                        break;
                case 'S':
                        set_sortby(optarg);
+                       sortby_set = true;
                        break;
                case 't':
-                       tflag++;
+                       tflag_short++;
+                       break;
+               case GETOPT_TS:
+                       tflag_long_set = true;
+                       if (parse_ts_arg(optarg ?: tflag_str))
+                               error_opt_arg(c, lopt, optarg);
                        break;
                case 'T':
                        Tflag = 1;
+                       Tflag_width = 6;
+                       Tflag_scale = str2timescale_optarg(optarg,
+                                                          &Tflag_width);
+                       if (Tflag_scale < 0)
+                               error_opt_arg(c, lopt, optarg);
                        break;
                case 'u':
                        username = optarg;
                        break;
+               case 'U':
+                       columns_set = true;
+                       set_count_summary_columns(optarg);
+                       break;
                case 'v':
-                       qualify("abbrev=none");
+                       qualify_abbrev("none");
                        break;
                case 'V':
                        print_version();
@@ -1700,6 +2282,12 @@ init(int argc, char *argv[])
                case 'x':
                        xflag++;
                        break;
+               case GETOPT_HEX_STR:
+                       xflag_long = find_arg_val(optarg, xflag_str,
+                                                 HEXSTR_ALL, HEXSTR_NONE);
+                       if (xflag_long <= HEXSTR_NONE)
+                               error_opt_arg(c, lopt, optarg);
+                       break;
                case 'X':
                        if (!strcmp(optarg, "raw"))
                                xlat_verbosity = XLAT_STYLE_RAW;
@@ -1708,13 +2296,65 @@ init(int argc, char *argv[])
                        else if (!strcmp(optarg, "verbose"))
                                xlat_verbosity = XLAT_STYLE_VERBOSE;
                        else
-                               error_opt_arg(c, optarg);
+                               error_opt_arg(c, lopt, optarg);
                        break;
                case 'y':
-                       show_fd_path++;
+                       yflag_short++;
+                       break;
+               case GETOPT_PIDNS_TRANSLATION:
+                       pidns_translation++;
                        break;
                case 'z':
-                       not_failing_only = 1;
+                       clear_number_set_array(status_set, 1);
+                       add_number_to_set(STATUS_SUCCESSFUL, status_set);
+                       zflags++;
+                       break;
+               case 'Z':
+                       clear_number_set_array(status_set, 1);
+                       add_number_to_set(STATUS_FAILED, status_set);
+                       zflags++;
+                       break;
+               case GETOPT_SECCOMP:
+                       seccomp_filtering = true;
+                       break;
+               case GETOPT_QUAL_TRACE:
+                       qualify_trace(optarg);
+                       break;
+               case GETOPT_QUAL_ABBREV:
+                       qualify_abbrev(optarg);
+                       break;
+               case GETOPT_QUAL_VERBOSE:
+                       qualify_verbose(optarg);
+                       break;
+               case GETOPT_QUAL_RAW:
+                       qualify_raw(optarg);
+                       break;
+               case GETOPT_QUAL_SIGNAL:
+                       qualify_signals(optarg);
+                       break;
+               case GETOPT_QUAL_STATUS:
+                       qualify_status(optarg);
+                       break;
+               case GETOPT_QUAL_READ:
+                       qualify_read(optarg);
+                       break;
+               case GETOPT_QUAL_WRITE:
+                       qualify_write(optarg);
+                       break;
+               case GETOPT_QUAL_FAULT:
+                       qualify_fault(optarg);
+                       break;
+               case GETOPT_QUAL_INJECT:
+                       qualify_inject(optarg);
+                       break;
+               case GETOPT_QUAL_KVM:
+                       qualify_kvm(optarg);
+                       break;
+               case GETOPT_QUAL_QUIET:
+                       qualify_quiet(optarg ?: qflag_qual);
+                       break;
+               case GETOPT_QUAL_DECODE_FD:
+                       qualify_decode_fd(optarg ?: yflag_qual);
                        break;
                default:
                        error_msg_and_help(NULL);
@@ -1729,8 +2369,81 @@ init(int argc, char *argv[])
                error_msg_and_help("must have PROG [ARGS] or -p PID");
        }
 
+       if (daemonized_tracer_long) {
+               if (daemonized_tracer) {
+                       error_msg_and_die("-D and --daemonize cannot"
+                                         " be provided simultaneously");
+               } else {
+                       daemonized_tracer = daemonized_tracer_long;
+               }
+       }
+
        if (!argc && daemonized_tracer) {
-               error_msg_and_help("PROG [ARGS] must be specified with -D");
+               error_msg_and_help("PROG [ARGS] must be specified with "
+                                  "-D/--daemonize");
+       }
+
+       if (daemonized_tracer > (unsigned int) MAX_DAEMONIZE_OPTS)
+               error_msg_and_help("Too many -D's (%u), maximum supported -D "
+                                  "count is %d",
+                                  daemonized_tracer, MAX_DAEMONIZE_OPTS);
+
+       if (tflag_short) {
+               if (tflag_long_set) {
+                       error_msg_and_die("-t and --absolute-timestamps cannot"
+                                         " be provided simultaneously");
+               }
+
+               parse_ts_arg(tflag_short == 1 ? tflag_str :
+                            tflag_short == 2 ? ttflag_str : tttflag_str);
+       }
+
+       if (xflag_long) {
+               if (xflag) {
+                       error_msg_and_die("-x and --strings-in-hex cannot"
+                                         " be provided simultaneously");
+               } else {
+                       xflag = xflag_long;
+               }
+       }
+
+       if (yflag_short) {
+               if (decode_fd_set_updated) {
+                       error_msg_and_die("-y and --decode-fds cannot"
+                                         " be provided simultaneously");
+               }
+
+               qualify_decode_fd(yflag_short == 1 ? yflag_qual : yyflag_qual);
+       }
+
+       if (seccomp_filtering && detach_on_execve) {
+               error_msg("--seccomp-bpf is not enabled because"
+                         " it is not compatible with -b");
+               seccomp_filtering = false;
+       }
+
+       if (followfork_short) {
+               if (followfork) {
+                       error_msg_and_die("-f and --follow-forks cannot"
+                                         " be provided simultaneously");
+               } else if (followfork_short >= 2 && output_separately) {
+                       error_msg_and_die("-ff and --output-separately cannot"
+                                         " be provided simultaneously");
+               } else {
+                       followfork = true;
+                       output_separately = followfork_short >= 2;
+               }
+       }
+
+       if (seccomp_filtering) {
+               if (nprocs && (!argc || debug_flag))
+                       error_msg("--seccomp-bpf is not enabled for processes"
+                                 " attached with -p");
+               if (!followfork) {
+                       error_msg("--seccomp-bpf cannot be used without "
+                                 "-f/--follow-forks, disabling");
+                       seccomp_filtering = false;
+               }
        }
 
        if (optF) {
@@ -1738,34 +2451,80 @@ init(int argc, char *argv[])
                        error_msg("deprecated option -F ignored");
                } else {
                        error_msg("option -F is deprecated, "
-                                 "please use -f instead");
-                       followfork = optF;
+                                 "please use -f/--follow-forks instead");
+                       followfork = true;
                }
        }
 
-       if (followfork >= 2 && cflag) {
-               error_msg_and_help("(-c or -C) and -ff are mutually exclusive");
+       if (output_separately && cflag) {
+               error_msg_and_help("(-c/--summary-only or -C/--summary) and"
+                                  " -ff/--output-separately"
+                                  " are mutually exclusive");
        }
 
        if (count_wallclock && !cflag) {
-               error_msg_and_help("-w must be given with (-c or -C)");
+               error_msg_and_help("-w/--summary-wall-clock must be given with"
+                                  " (-c/--summary-only or -C/--summary)");
+       }
+
+       if (columns_set && !cflag) {
+               error_msg_and_help("-U/--summary-columns must be given with"
+                                  " (-c/--summary-only or -C/--summary)");
+       }
+
+       if (sortby_set && !cflag) {
+               error_msg("-S/--summary-sort-by has no effect without"
+                         " (-c/--summary-only or -C/--summary)");
        }
 
        if (cflag == CFLAG_ONLY_STATS) {
                if (iflag)
-                       error_msg("-%c has no effect with -c", 'i');
+                       error_msg("-i/--instruction-pointer has no effect "
+                                 "with -c/--summary-only");
                if (stack_trace_enabled)
-                       error_msg("-%c has no effect with -c", 'k');
+                       error_msg("-k/--stack-traces has no effect "
+                                 "with -c/--summary-only");
+               if (nflag)
+                       error_msg("-n/--syscall-number has no effect "
+                                 "with -c/--summary-only");
                if (rflag)
-                       error_msg("-%c has no effect with -c", 'r');
-               if (tflag)
-                       error_msg("-%c has no effect with -c", 't');
+                       error_msg("-r/--relative-timestamps has no effect "
+                                 "with -c/--summary-only");
+               if (tflag_format)
+                       error_msg("-t/--absolute-timestamps has no effect "
+                                 "with -c/--summary-only");
                if (Tflag)
-                       error_msg("-%c has no effect with -c", 'T');
-               if (show_fd_path)
-                       error_msg("-%c has no effect with -c", 'y');
+                       error_msg("-T/--syscall-times has no effect "
+                                 "with -c/--summary-only");
+               if (!number_set_array_is_empty(decode_fd_set, 0))
+                       error_msg("-y/--decode-fds has no effect "
+                                 "with -c/--summary-only");
        }
 
+       if (!outfname) {
+               if (output_separately && !followfork)
+                       error_msg("--output-separately has no effect "
+                                 "without -o/--output");
+               if (open_append)
+                       error_msg("-A/--output-append-mode has no effect "
+                                 "without -o/--output");
+       }
+
+#ifndef HAVE_OPEN_MEMSTREAM
+       if (!is_complete_set(status_set, NUMBER_OF_STATUSES))
+               error_msg_and_help("open_memstream is required to use -z, -Z, or -e status");
+#endif
+
+       if (zflags > 1)
+               error_msg("Only the last of "
+                         "-z/--successful-only/-Z/--failed-only options will "
+                         "take effect. "
+                         "See status qualifier for more complex filters.");
+
+       for (size_t cnt = 0; cnt < pathtrace_count; ++cnt)
+               pathtrace_select(pathtrace_paths[cnt]);
+       free(pathtrace_paths);
+
        acolumn_spaces = xmalloc(acolumn + 1);
        memset(acolumn_spaces, ' ', acolumn);
        acolumn_spaces[acolumn] = '\0';
@@ -1782,7 +2541,8 @@ init(int argc, char *argv[])
                struct passwd *pent;
 
                if (getuid() != 0 || geteuid() != 0) {
-                       error_msg_and_die("You must be root to use the -u option");
+                       error_msg_and_die("You must be root to use "
+                                         "the -u/--username option");
                }
                pent = getpwnam(username);
                if (pent == NULL) {
@@ -1799,6 +2559,12 @@ init(int argc, char *argv[])
                ptrace_setoptions |= PTRACE_O_TRACECLONE |
                                     PTRACE_O_TRACEFORK |
                                     PTRACE_O_TRACEVFORK;
+
+       if (seccomp_filtering)
+               check_seccomp_filter();
+       if (seccomp_filtering)
+               ptrace_setoptions |= PTRACE_O_TRACESECCOMP;
+
        debug_msg("ptrace_setoptions = %#x", ptrace_setoptions);
        test_ptrace_seize();
        test_ptrace_get_syscall_info();
@@ -1824,11 +2590,12 @@ init(int argc, char *argv[])
                         * We can't do the <outfname>.PID funny business
                         * when using popen, so prohibit it.
                         */
-                       if (followfork >= 2)
-                               error_msg_and_help("piping the output and -ff "
+                       if (output_separately)
+                               error_msg_and_help("piping the output and "
+                                                  "-ff/--output-separately "
                                                   "are mutually exclusive");
                        shared_log = strace_popen(outfname + 1);
-               } else if (followfork < 2) {
+               } else if (!output_separately) {
                        shared_log = strace_fopen(outfname);
                } else if (strlen(outfname) >= PATH_MAX - sizeof(int) * 3) {
                        errno = ENAMETOOLONG;
@@ -1836,8 +2603,7 @@ init(int argc, char *argv[])
                }
        } else {
                /* -ff without -o FILE is the same as single -f */
-               if (followfork >= 2)
-                       followfork = 1;
+               output_separately = false;
        }
 
        if (!outfname || outfname[0] == '|' || outfname[0] == '!') {
@@ -1857,12 +2623,22 @@ init(int argc, char *argv[])
        if (outfname && argc) {
                if (!opt_intr)
                        opt_intr = INTR_NEVER;
-               if (!qflag)
-                       qflag = 1;
+               if (!qflag_short && !quiet_set_updated)
+                       qflag_short = 1;
        }
        if (!opt_intr)
                opt_intr = INTR_WHILE_WAIT;
 
+       if (qflag_short) {
+               if (quiet_set_updated) {
+                       error_msg_and_die("-q and -e quiet/--quiet cannot"
+                                         " be provided simultaneously");
+               }
+
+               qualify_quiet(qflag_short == 1 ? qflag_qual :
+                             qflag_short == 2 ? qqflag_qual : qqqflag_qual);
+       }
+
        /*
         * startup_child() must be called before the signal handlers get
         * installed below as they are inherited into the spawned process.
@@ -1870,7 +2646,19 @@ init(int argc, char *argv[])
         * in the startup_child() mode we kill the spawned process anyway.
         */
        if (argc) {
-               startup_child(argv);
+               char **new_environ = make_env(environ, env_changes,
+                                             env_change_count);
+               free(env_changes);
+
+               startup_child(argv, new_environ);
+
+               /*
+                * On a NOMMU system, new_environ can be freed only after exec
+                * in child, so we leak it in that case, similar to pathname
+                * in startup_child().
+                */
+               if (new_environ != environ && !NOMMU_SYSTEM)
+                       free(new_environ);
        }
 
        set_sighandler(SIGTTOU, SIG_IGN, NULL);
@@ -1904,7 +2692,8 @@ init(int argc, char *argv[])
         * -f: yes (there can be more pids in the future); or
         * -p PID1,PID2: yes (there are already more than one pid)
         */
-       print_pid_pfx = (outfname && followfork < 2 && (followfork == 1 || nprocs > 1));
+       print_pid_pfx = outfname && !output_separately &&
+               ((followfork && !output_separately) || nprocs > 1);
 }
 
 static struct tcb *
@@ -1986,6 +2775,7 @@ print_debug_info(const int pid, int status)
                        [PTRACE_EVENT_VFORK_DONE] = "VFORK_DONE",
                        [PTRACE_EVENT_EXEC]  = "EXEC",
                        [PTRACE_EVENT_EXIT]  = "EXIT",
+                       [PTRACE_EVENT_SECCOMP]  = "SECCOMP",
                        /* [PTRACE_EVENT_STOP (=128)] would make biggish array */
                };
                const char *e = "??";
@@ -2007,18 +2797,20 @@ maybe_allocate_tcb(const int pid, int status)
                        strace_child = 0;
                        return NULL;
                }
-               /*
-                * This can happen if we inherited an unknown child.
-                * Example: (sleep 1 & exec strace true)
-                */
-               error_msg("Exit of unknown pid %u ignored", pid);
+               if (!is_number_in_set(QUIET_EXIT, quiet_set)) {
+                       /*
+                        * This can happen if we inherited an unknown child.
+                        * Example: (sleep 1 & exec strace true)
+                        */
+                       error_msg("Exit of unknown pid %u ignored", pid);
+               }
                return NULL;
        }
        if (followfork) {
                /* We assume it's a fork/vfork/clone child */
                struct tcb *tcp = alloctcb(pid);
                after_successful_attach(tcp, post_attach_sigstop);
-               if (!qflag)
+               if (!is_number_in_set(QUIET_ATTACH, quiet_set))
                        error_msg("Process %d attached", pid);
                return tcp;
        } else {
@@ -2030,40 +2822,66 @@ maybe_allocate_tcb(const int pid, int status)
                 * observable stop here is the initial ptrace-stop.
                 */
                ptrace(PTRACE_DETACH, pid, NULL, 0L);
-               error_msg("Detached unknown pid %d", pid);
+               if (!is_number_in_set(QUIET_ATTACH, quiet_set))
+                       error_msg("Detached unknown pid %d", pid);
                return NULL;
        }
 }
 
+/*
+ * Under Linux, execve changes pid to thread leader's pid, and we see this
+ * changed pid on EVENT_EXEC and later, execve sysexit.  Leader "disappears"
+ * without exit notification.  Let user know that, drop leader's tcb, and fix
+ * up pid in execve thread's tcb.  Effectively, execve thread's tcb replaces
+ * leader's tcb.
+ *
+ * BTW, leader is 'stuck undead' (doesn't report WIFEXITED on exit syscall)
+ * in multi-threaded programs exactly in order to handle this case.
+ */
 static struct tcb *
 maybe_switch_tcbs(struct tcb *tcp, const int pid)
 {
-       FILE *fp;
-       struct tcb *execve_thread;
-       long old_pid = tcb_wait_tab[tcp->wait_data_idx].msg;
+       /*
+        * PTRACE_GETEVENTMSG returns old pid starting from Linux 3.0.
+        * On 2.6 and earlier it can return garbage.
+        */
+       if (os_release < KERNEL_VERSION(3, 0, 0))
+               return NULL;
+
+       const long old_pid = tcb_wait_tab[tcp->wait_data_idx].msg;
 
        /* Avoid truncation in pid2tcb() param passing */
        if (old_pid <= 0 || old_pid == pid)
-               return tcp;
+               return NULL;
        if ((unsigned long) old_pid > UINT_MAX)
-               return tcp;
-       execve_thread = pid2tcb(old_pid);
+               return NULL;
+       struct tcb *execve_thread = pid2tcb(old_pid);
        /* It should be !NULL, but I feel paranoid */
        if (!execve_thread)
-               return tcp;
+               return NULL;
 
        if (execve_thread->curcol != 0) {
                /*
-                * One case we are here is -ff:
-                * try "strace -oLOG -ff test/threaded_execve"
+                * One case we are here is -ff, try
+                * "strace -oLOG -ff test/threaded_execve".
+                * Another case is demonstrated by
+                * tests/maybe_switch_current_tcp.c
                 */
                fprintf(execve_thread->outf, " <pid changed to %d ...>\n", pid);
                /*execve_thread->curcol = 0; - no need, see code below */
        }
-       /* Swap output FILEs (needed for -ff) */
-       fp = execve_thread->outf;
+       /* Swap output FILEs and memstream (needed for -ff) */
+       FILE *fp = execve_thread->outf;
        execve_thread->outf = tcp->outf;
        tcp->outf = fp;
+       if (execve_thread->staged_output_data || tcp->staged_output_data) {
+               struct staged_output_data *staged_output_data;
+
+               staged_output_data = execve_thread->staged_output_data;
+               execve_thread->staged_output_data = tcp->staged_output_data;
+               tcp->staged_output_data = staged_output_data;
+       }
+
        /* And their column positions */
        execve_thread->curcol = tcp->curcol;
        tcp->curcol = 0;
@@ -2073,15 +2891,35 @@ maybe_switch_tcbs(struct tcb *tcp, const int pid)
        tcp = execve_thread;
        tcp->pid = pid;
        if (cflag != CFLAG_ONLY_STATS) {
-               printleader(tcp);
-               tprintf("+++ superseded by execve in pid %lu +++\n", old_pid);
-               line_ended();
+               if (!is_number_in_set(QUIET_THREAD_EXECVE, quiet_set)) {
+                       printleader(tcp);
+                       tprintf("+++ superseded by execve in pid %lu +++\n",
+                               old_pid);
+                       line_ended();
+               }
+               /*
+                * Need to reopen memstream for thread
+                * as we closed it in droptcb.
+                */
+               if (!is_complete_set(status_set, NUMBER_OF_STATUSES))
+                       strace_open_memstream(tcp);
                tcp->flags |= TCB_REPRINT;
        }
 
        return tcp;
 }
 
+static struct tcb *
+maybe_switch_current_tcp(void)
+{
+       struct tcb *tcp = maybe_switch_tcbs(current_tcp, current_tcp->pid);
+
+       if (tcp)
+               set_current_tcp(tcp);
+
+       return tcp;
+}
+
 static void
 print_signalled(struct tcb *tcp, const int pid, int status)
 {
@@ -2109,7 +2947,7 @@ print_exited(struct tcb *tcp, const int pid, int status)
        }
 
        if (cflag != CFLAG_ONLY_STATS &&
-           qflag < 2) {
+           !is_number_in_set(QUIET_EXIT, quiet_set)) {
                printleader(tcp);
                tprintf("+++ exited with %d +++\n", WEXITSTATUS(status));
                line_ended();
@@ -2125,7 +2963,7 @@ print_stopped(struct tcb *tcp, const siginfo_t *si, const unsigned int sig)
                printleader(tcp);
                if (si) {
                        tprintf("--- %s ", sprintsigname(sig));
-                       printsiginfo(si);
+                       printsiginfo(tcp, si);
                        tprints(" ---\n");
                } else
                        tprintf("--- stopped by %s ---\n", sprintsigname(sig));
@@ -2158,6 +2996,10 @@ startup_tcb(struct tcb *tcp)
 
        if ((tcp->flags & TCB_GRABBED) && (get_scno(tcp) == 1))
                tcp->s_prev_ent = tcp->s_ent;
+
+       if (cflag) {
+               tcp->atime = tcp->stime;
+       }
 }
 
 static void
@@ -2168,7 +3010,7 @@ print_event_exit(struct tcb *tcp)
                return;
        }
 
-       if (followfork < 2 && printing_tcp && printing_tcp != tcp
+       if (!output_separately && printing_tcp && printing_tcp != tcp
            && printing_tcp->curcol != 0) {
                set_current_tcp(printing_tcp);
                tprints(" <unfinished ...>\n");
@@ -2191,6 +3033,10 @@ print_event_exit(struct tcb *tcp)
        tprints(") ");
        tabto();
        tprints("= ?\n");
+       if (!is_complete_set(status_set, NUMBER_OF_STATUSES)) {
+               bool publish = is_number_in_set(STATUS_UNFINISHED, status_set);
+               strace_close_memstream(tcp, publish);
+       }
        line_ended();
 }
 
@@ -2242,6 +3088,8 @@ next_event(void)
        if (interrupted)
                return NULL;
 
+       invalidate_umove_cache();
+
        struct tcb *tcp = NULL;
        struct list_item *elem;
 
@@ -2370,12 +3218,8 @@ next_event(void)
                }
 
                if (cflag) {
-                       struct timespec stime = {
-                               .tv_sec = ru.ru_stime.tv_sec,
-                               .tv_nsec = ru.ru_stime.tv_usec * 1000
-                       };
-                       ts_sub(&tcp->dtime, &stime, &tcp->stime);
-                       tcp->stime = stime;
+                       tcp->stime.tv_sec = ru.ru_stime.tv_sec;
+                       tcp->stime.tv_nsec = ru.ru_stime.tv_usec * 1000;
                }
 
                tcb_wait_tab_check_size(wait_tab_pos);
@@ -2463,6 +3307,9 @@ next_event(void)
                        case PTRACE_EVENT_EXIT:
                                wd->te = TE_STOP_BEFORE_EXIT;
                                break;
+                       case PTRACE_EVENT_SECCOMP:
+                               wd->te = TE_SECCOMP;
+                               break;
                        default:
                                wd->te = TE_RESTART;
                        }
@@ -2548,7 +3395,7 @@ trace_syscall(struct tcb *tcp, unsigned int *sig)
 static bool
 dispatch_event(const struct tcb_wait_data *wd)
 {
-       unsigned int restart_op = PTRACE_SYSCALL;
+       unsigned int restart_op;
        unsigned int restart_sig = 0;
        enum trace_event te = wd ? wd->te : TE_BREAK;
        /*
@@ -2557,6 +3404,11 @@ dispatch_event(const struct tcb_wait_data *wd)
         */
        int status = wd ? wd->status : 0;
 
+       if (current_tcp && has_seccomp_filter(current_tcp))
+               restart_op = seccomp_filter_restart_operator(current_tcp);
+       else
+               restart_op = PTRACE_SYSCALL;
+
        switch (te) {
        case TE_BREAK:
                return false;
@@ -2567,6 +3419,27 @@ dispatch_event(const struct tcb_wait_data *wd)
        case TE_RESTART:
                break;
 
+       case TE_SECCOMP:
+               if (!has_seccomp_filter(current_tcp)) {
+                       /*
+                        * We don't know if forks/clones have a seccomp filter
+                        * when they are created, but we can detect it when we
+                        * have a seccomp-stop.
+                        * In such a case, if !seccomp_before_sysentry, we have
+                        * already processed the syscall entry, so we avoid
+                        * processing it a second time.
+                        */
+                       current_tcp->flags |= TCB_SECCOMP_FILTER;
+                       restart_op = PTRACE_SYSCALL;
+                       break;
+               }
+
+               if (seccomp_before_sysentry) {
+                       restart_op = PTRACE_SYSCALL;
+                       break;
+               }
+               ATTRIBUTE_FALLTHROUGH;
+
        case TE_SYSCALL_STOP:
                if (trace_syscall(current_tcp, &restart_sig) < 0) {
                        /*
@@ -2582,6 +3455,42 @@ dispatch_event(const struct tcb_wait_data *wd)
                         */
                        return true;
                }
+               if (has_seccomp_filter(current_tcp)) {
+                       /*
+                        * Syscall and seccomp stops can happen in different
+                        * orders depending on kernel.  strace tests this in
+                        * check_seccomp_order_tracer().
+                        *
+                        * Linux 3.5--4.7:
+                        * (seccomp-stop before syscall-entry-stop)
+                        *         +--> seccomp-stop ->-PTRACE_SYSCALL->-+
+                        *         |                                     |
+                        *     PTRACE_CONT                   syscall-entry-stop
+                        *         |                                     |
+                        * syscall-exit-stop <---PTRACE_SYSCALL-----<----+
+                        *
+                        * Linux 4.8+:
+                        * (seccomp-stop after syscall-entry-stop)
+                        *                 syscall-entry-stop
+                        *
+                        *         +---->-----PTRACE_CONT---->----+
+                        *         |                              |
+                        *  syscall-exit-stop               seccomp-stop
+                        *         |                              |
+                        *         +----<----PTRACE_SYSCALL---<---+
+                        *
+                        * Note in Linux 4.8+, we restart in PTRACE_CONT
+                        * after syscall-exit to skip the syscall-entry-stop.
+                        * The next seccomp-stop will be treated as a syscall
+                        * entry.
+                        *
+                        * The line below implements this behavior.
+                        * Note that exiting(current_tcp) actually marks
+                        * a syscall-entry-stop because the flag was inverted
+                        * in the above call to trace_syscall.
+                        */
+                       restart_op = exiting(current_tcp) ? PTRACE_SYSCALL : PTRACE_CONT;
+               }
                break;
 
        case TE_SIGNAL_DELIVERY_STOP:
@@ -2625,7 +3534,7 @@ dispatch_event(const struct tcb_wait_data *wd)
                 * and all the following syscall state tracking is screwed up
                 * otherwise.
                 */
-               if (entering(current_tcp)) {
+               if (!maybe_switch_current_tcp() && entering(current_tcp)) {
                        int ret;
 
                        error_msg("Stray PTRACE_EVENT_EXEC from pid %d"
@@ -2642,25 +3551,6 @@ dispatch_event(const struct tcb_wait_data *wd)
                        }
                }
 
-               /*
-                * Under Linux, execve changes pid to thread leader's pid,
-                * and we see this changed pid on EVENT_EXEC and later,
-                * execve sysexit. Leader "disappears" without exit
-                * notification. Let user know that, drop leader's tcb,
-                * and fix up pid in execve thread's tcb.
-                * Effectively, execve thread's tcb replaces leader's tcb.
-                *
-                * BTW, leader is 'stuck undead' (doesn't report WIFEXITED
-                * on exit syscall) in multithreaded programs exactly
-                * in order to handle this case.
-                *
-                * PTRACE_GETEVENTMSG returns old pid starting from Linux 3.0.
-                * On 2.6 and earlier, it can return garbage.
-                */
-               if (os_release >= KERNEL_VERSION(3, 0, 0))
-                       set_current_tcp(maybe_switch_tcbs(current_tcp,
-                                                         current_tcp->pid));
-
                if (detach_on_execve) {
                        if (current_tcp->flags & TCB_SKIP_DETACH_ON_FIRST_EXEC) {
                                current_tcp->flags &= ~TCB_SKIP_DETACH_ON_FIRST_EXEC;
@@ -2780,10 +3670,6 @@ timer_sighandler(int sig)
        errno = saved_errno;
 }
 
-#ifdef ENABLE_COVERAGE_GCOV
-extern void __gcov_flush(void);
-#endif
-
 static void ATTRIBUTE_NORETURN
 terminate(void)
 {
@@ -2810,18 +3696,14 @@ terminate(void)
                /* Child was killed by a signal, mimic that.  */
                exit_code &= 0xff;
                signal(exit_code, SIG_DFL);
-#ifdef ENABLE_COVERAGE_GCOV
-               __gcov_flush();
-#endif
+               GCOV_DUMP;
                raise(exit_code);
 
                /* Unblock the signal.  */
                sigset_t mask;
                sigemptyset(&mask);
                sigaddset(&mask, exit_code);
-#ifdef ENABLE_COVERAGE_GCOV
-               __gcov_flush();
-#endif
+               GCOV_DUMP;
                sigprocmask(SIG_UNBLOCK, &mask, NULL);
 
                /* Paranoia - what if this signal is not fatal?
index 8f8ce6b2eeac4d2a89820a289f1225cc1620348a..32a7b5a5a12268f364632effef8385cd33310b5e 100644 (file)
@@ -1,9 +1,9 @@
 Summary: Tracks and displays system calls associated with a running process
 Name: strace
-Version: 5.1
+Version: 5.9
 Release: 1%{?dist}
 # The test suite is GPLv2+, all the rest is LGPLv2.1+.
-License: LGPL-2.1-or-later and GPL-2.0-or-later
+License: LGPL-2.1+ and GPL-2.0+
 # Some distros require Group tag to be present,
 # some require Group tag to be absent,
 # some do not care about Group tag at all,
@@ -12,11 +12,16 @@ License: LGPL-2.1-or-later and GPL-2.0-or-later
 Group: Development%{?suse_version:/Tools}/Debuggers
 %endif
 URL: https://strace.io
+%if 0%{?fedora} >= 12 || 0%{?centos} >= 6 || 0%{?rhel} >= 6 || 0%{?suse_version} >= 1200
 Source: https://strace.io/files/%{version}/strace-%{version}.tar.xz
+BuildRequires: xz
+%else
+Source: strace-%{version}.tar.gz
+%endif
 BuildRequires: gcc gzip
 
 # Install Bluetooth headers for AF_BLUETOOTH sockets decoding.
-%if 0%{?fedora} >= 18 || 0%{?centos} >= 8 || 0%{?rhel} >= 8 || 0%{?suse_version} >= 1200
+%if 0%{?fedora} >= 18 || 0%{?centos} >= 6 || 0%{?rhel} >= 8 || 0%{?suse_version} >= 1200
 BuildRequires: pkgconfig(bluez)
 %endif
 
@@ -34,6 +39,12 @@ BuildRequires: pkgconfig(bluez)
 %{?!buildroot:BuildRoot: %_tmppath/buildroot-%name-%version-%release}
 %define maybe_use_defattr %{?suse_version:%%defattr(-,root,root)}
 
+# Fallback definitions for make_build/make_install macros
+%{?!__make:       %global __make %_bindir/make}
+%{?!__install:    %global __install %_bindir/install}
+%{?!make_build:   %global make_build %__make %{?_smp_mflags}}
+%{?!make_install: %global make_install %__make install DESTDIR="%{?buildroot}" INSTALL="%__install -p"}
+
 %description
 The strace program intercepts and records the system calls called and
 received by a running process.  Strace can print a record of each
@@ -47,8 +58,8 @@ received by a process.
 %prep
 %setup -q
 echo -n %version-%release > .tarball-version
-echo -n 2019 > .year
-echo -n 2019-03-17 > .strace.1.in.date
+echo -n 2020 > .year
+echo -n 2020-09-23 > .strace.1.in.date
 
 %build
 echo 'BEGIN OF BUILD ENVIRONMENT INFORMATION'
@@ -64,10 +75,10 @@ echo 'END OF BUILD ENVIRONMENT INFORMATION'
 
 CFLAGS_FOR_BUILD="$RPM_OPT_FLAGS"; export CFLAGS_FOR_BUILD
 %configure --enable-mpers=check
-make %{?_smp_mflags}
+%make_build
 
 %install
-make DESTDIR=%{buildroot} install
+%make_install
 
 # remove unpackaged files from the buildroot
 rm -f %{buildroot}%{_bindir}/strace-graph
@@ -80,9 +91,9 @@ wait
 
 %check
 %{buildroot}%{_bindir}/strace -V
-make %{?_smp_mflags} -k check VERBOSE=1
+%make_build -k check VERBOSE=1
 echo 'BEGIN OF TEST SUITE INFORMATION'
-tail -n 99999 -- tests*/test-suite.log tests*/ksysent.log
+tail -n 99999 -- tests*/test-suite.log tests*/ksysent.gen.log
 find tests* -type f -name '*.log' -print0 |
        xargs -r0 grep -H '^KERNEL BUG:' -- ||:
 echo 'END OF TEST SUITE INFORMATION'
@@ -95,8 +106,32 @@ echo 'END OF TEST SUITE INFORMATION'
 %{_mandir}/man1/*
 
 %changelog
-* Wed May 22 2019 strace-devel@lists.strace.io - 5.1-1
-- strace 5.1 snapshot.
+* Thu Sep 24 2020 strace-devel@lists.strace.io - 5.9-1
+- strace 5.9 snapshot.
+
+* Thu Aug 06 2020 Dmitry V. Levin <ldv@altlinux.org> - 5.8-1
+- v5.7 -> v5.8.
+
+* Mon Jun 01 2020 Dmitry V. Levin <ldv@altlinux.org> - 5.7-1
+- v5.6 -> v5.7.
+
+* Tue Apr 07 2020 Dmitry V. Levin <ldv@altlinux.org> - 5.6-1
+- v5.5 -> v5.6.
+
+* Thu Feb 06 2020 Dmitry V. Levin <ldv@altlinux.org> - 5.5-1
+- v5.4 -> v5.5.
+
+* Thu Nov 28 2019 Dmitry V. Levin <ldv@altlinux.org> - 5.4-1
+- v5.3 -> v5.4.
+
+* Wed Sep 25 2019 Dmitry V. Levin <ldv@altlinux.org> - 5.3-1
+- v5.2 -> v5.3.
+
+* Fri Jul 12 2019 Dmitry V. Levin <ldv@altlinux.org> - 5.2-1
+- v5.1 -> v5.2.
+
+* Wed May 22 2019 Dmitry V. Levin <ldv@altlinux.org> - 5.1-1
+- v5.0 -> v5.1.
 
 * Tue Mar 19 2019 Dmitry V. Levin <ldv@altlinux.org> - 5.0-1
 - v4.26 -> v5.0 (resolves: #478419, #526740, #851457, #1609318,
index 9a12658fc488dfeb16b6790864074f92127b1778..14e2c8c70d437161b6f346d48f0f00dbdd91e01e 100644 (file)
@@ -3,7 +3,7 @@ Name: strace
 Version: @PACKAGE_VERSION@
 Release: 1%{?dist}
 # The test suite is GPLv2+, all the rest is LGPLv2.1+.
-License: LGPL-2.1-or-later and GPL-2.0-or-later
+License: LGPL-2.1+ and GPL-2.0+
 # Some distros require Group tag to be present,
 # some require Group tag to be absent,
 # some do not care about Group tag at all,
@@ -12,11 +12,16 @@ License: LGPL-2.1-or-later and GPL-2.0-or-later
 Group: Development%{?suse_version:/Tools}/Debuggers
 %endif
 URL: https://strace.io
+%if 0%{?fedora} >= 12 || 0%{?centos} >= 6 || 0%{?rhel} >= 6 || 0%{?suse_version} >= 1200
 Source: https://strace.io/files/%{version}/strace-%{version}.tar.xz
+BuildRequires: xz
+%else
+Source: strace-%{version}.tar.gz
+%endif
 BuildRequires: gcc gzip
 
 # Install Bluetooth headers for AF_BLUETOOTH sockets decoding.
-%if 0%{?fedora} >= 18 || 0%{?centos} >= 8 || 0%{?rhel} >= 8 || 0%{?suse_version} >= 1200
+%if 0%{?fedora} >= 18 || 0%{?centos} >= 6 || 0%{?rhel} >= 8 || 0%{?suse_version} >= 1200
 BuildRequires: pkgconfig(bluez)
 %endif
 
@@ -34,6 +39,12 @@ BuildRequires: pkgconfig(bluez)
 %{?!buildroot:BuildRoot: %_tmppath/buildroot-%name-%version-%release}
 %define maybe_use_defattr %{?suse_version:%%defattr(-,root,root)}
 
+# Fallback definitions for make_build/make_install macros
+%{?!__make:       %global __make %_bindir/make}
+%{?!__install:    %global __install %_bindir/install}
+%{?!make_build:   %global make_build %__make %{?_smp_mflags}}
+%{?!make_install: %global make_install %__make install DESTDIR="%{?buildroot}" INSTALL="%__install -p"}
+
 %description
 The strace program intercepts and records the system calls called and
 received by a running process.  Strace can print a record of each
@@ -64,10 +75,10 @@ echo 'END OF BUILD ENVIRONMENT INFORMATION'
 
 CFLAGS_FOR_BUILD="$RPM_OPT_FLAGS"; export CFLAGS_FOR_BUILD
 %configure --enable-mpers=check
-make %{?_smp_mflags}
+%make_build
 
 %install
-make DESTDIR=%{buildroot} install
+%make_install
 
 # remove unpackaged files from the buildroot
 rm -f %{buildroot}%{_bindir}/strace-graph
@@ -80,9 +91,9 @@ wait
 
 %check
 %{buildroot}%{_bindir}/strace -V
-make %{?_smp_mflags} -k check VERBOSE=1
+%make_build -k check VERBOSE=1
 echo 'BEGIN OF TEST SUITE INFORMATION'
-tail -n 99999 -- tests*/test-suite.log tests*/ksysent.log
+tail -n 99999 -- tests*/test-suite.log tests*/ksysent.gen.log
 find tests* -type f -name '*.log' -print0 |
        xargs -r0 grep -H '^KERNEL BUG:' -- ||:
 echo 'END OF TEST SUITE INFORMATION'
@@ -98,6 +109,30 @@ echo 'END OF TEST SUITE INFORMATION'
 * @RPM_CHANGELOGTIME@ @PACKAGE_BUGREPORT@ - @PACKAGE_VERSION@-1
 - @PACKAGE_STRING@ snapshot.
 
+* Thu Aug 06 2020 Dmitry V. Levin <ldv@altlinux.org> - 5.8-1
+- v5.7 -> v5.8.
+
+* Mon Jun 01 2020 Dmitry V. Levin <ldv@altlinux.org> - 5.7-1
+- v5.6 -> v5.7.
+
+* Tue Apr 07 2020 Dmitry V. Levin <ldv@altlinux.org> - 5.6-1
+- v5.5 -> v5.6.
+
+* Thu Feb 06 2020 Dmitry V. Levin <ldv@altlinux.org> - 5.5-1
+- v5.4 -> v5.5.
+
+* Thu Nov 28 2019 Dmitry V. Levin <ldv@altlinux.org> - 5.4-1
+- v5.3 -> v5.4.
+
+* Wed Sep 25 2019 Dmitry V. Levin <ldv@altlinux.org> - 5.3-1
+- v5.2 -> v5.3.
+
+* Fri Jul 12 2019 Dmitry V. Levin <ldv@altlinux.org> - 5.2-1
+- v5.1 -> v5.2.
+
+* Wed May 22 2019 Dmitry V. Levin <ldv@altlinux.org> - 5.1-1
+- v5.0 -> v5.1.
+
 * Tue Mar 19 2019 Dmitry V. Levin <ldv@altlinux.org> - 5.0-1
 - v4.26 -> v5.0 (resolves: #478419, #526740, #851457, #1609318,
   #1610774, #1662936, #1676045).
index e249cb101c47f4747f058b6bd018cb460321d1cb..09d42a739c9946b5502a9019f78cab671236ab32 100644 (file)
@@ -20,7 +20,7 @@ SYS_FUNC(sync_file_range2)
        printflags(sync_file_range_flags, tcp->u_arg[1],
                   "SYNC_FILE_RANGE_???");
        argn = printllval(tcp, ", %lld, ", 2);
-       argn = printllval(tcp, "%lld", argn);
+       printllval(tcp, "%lld", argn);
 
        return RVAL_DECODED;
 }
index bae7343c3b590ca07cd4b6070ae26c89465e6781..d228ae4d5405dfecfc7af2d70743dfa6e18b9a44 100644 (file)
--- a/syscall.c
+++ b/syscall.c
@@ -6,7 +6,7 @@
  * Copyright (c) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation
  *                     Linux for s390 port by D.J. Barrow
  *                    <barrow_dj@mail.yahoo.com,djbarrow@de.ibm.com>
- * Copyright (c) 1999-2019 The strace developers.
+ * Copyright (c) 1999-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -28,7 +28,7 @@
 #include <sys/uio.h>
 
 /* for __X32_SYSCALL_BIT */
-#include <asm/unistd.h>
+#include "scno.h"
 
 #include "regs.h"
 
@@ -41,6 +41,7 @@
 
 #include "syscall.h"
 #include "xstring.h"
+#include "syscallent_base_nr.h"
 
 /* Define these shorthand notations to simplify the syscallent files. */
 #include "sysent_shorthand_defs.h"
@@ -267,9 +268,11 @@ update_personality(struct tcb *tcp, unsigned int personality)
                return;
        tcp->currpers = personality;
 
-       if (!qflag) {
-               error_msg("[ Process PID=%d runs in %s mode. ]",
-                         tcp->pid, personality_names[personality]);
+       if (!is_number_in_set(QUIET_PERSONALITY, quiet_set)) {
+               printleader(tcp);
+               tprintf("[ Process PID=%d runs in %s mode. ]\n",
+                       tcp->pid, personality_names[personality]);
+               line_ended();
        }
 
        if (need_mpers_warning[personality]) {
@@ -416,13 +419,24 @@ dumpio(struct tcb *tcp)
        }
 }
 
-const char *
-err_name(unsigned long err)
+static const char *
+err_name(uint64_t err)
+{
+       return err < nerrnos ? errnoent[err] : NULL;
+}
+
+void
+print_err(int64_t err, bool negated)
 {
-       if ((err < nerrnos) && errnoent[err])
-               return errnoent[err];
+       const char *str = err_name(negated ? -err : err);
 
-       return NULL;
+       if (!str || xlat_verbose(xlat_verbosity) != XLAT_STYLE_ABBREV)
+               tprintf(negated ? "%" PRId64 : "%" PRIu64, err);
+       if (!str || xlat_verbose(xlat_verbosity) == XLAT_STYLE_RAW)
+               return;
+       (xlat_verbose(xlat_verbosity) == XLAT_STYLE_ABBREV
+               ? tprintf : tprintf_comment)("%s%s",
+                                            negated ? "-" : "", str);
 }
 
 static void
@@ -477,9 +491,12 @@ tamper_with_syscall_entering(struct tcb *tcp, unsigned int *signo)
 
        struct inject_opts *opts = tcb_inject_opts(tcp);
 
-       if (!opts || opts->first == 0)
+       if (!opts || opts->first == 0 || opts->last == 0)
                return 0;
 
+       if (opts->last != INJECT_LAST_INF)
+               --opts->last;
+
        --opts->first;
 
        if (opts->first != 0)
@@ -579,11 +596,13 @@ syscall_entering_decode(struct tcb *tcp)
                return res;
        }
 
+#ifdef SYS_syscall_subcall
+       if (tcp_sysent(tcp)->sen == SEN_syscall)
+               decode_syscall_subcall(tcp);
+#endif
 #if defined SYS_ipc_subcall    \
- || defined SYS_socket_subcall \
- || defined SYS_syscall_subcall
-       for (;;) {
-               switch (tcp_sysent(tcp)->sen) {
+ || defined SYS_socket_subcall
+       switch (tcp_sysent(tcp)->sen) {
 # ifdef SYS_ipc_subcall
                case SEN_ipc:
                        decode_ipc_subcall(tcp);
@@ -594,15 +613,6 @@ syscall_entering_decode(struct tcb *tcp)
                        decode_socket_subcall(tcp);
                        break;
 # endif
-# ifdef SYS_syscall_subcall
-               case SEN_syscall:
-                       decode_syscall_subcall(tcp);
-                       if (tcp_sysent(tcp)->sen != SEN_syscall)
-                               continue;
-                       break;
-# endif
-               }
-               break;
        }
 #endif
 
@@ -615,7 +625,7 @@ syscall_entering_trace(struct tcb *tcp, unsigned int *sig)
        if (hide_log(tcp)) {
                /*
                 * Restrain from fault injection
-                * while the trace executes strace code.
+                * while the tracee executes strace code.
                 */
                tcp->qual_flg &= ~QUAL_INJECT;
 
@@ -650,12 +660,16 @@ syscall_entering_trace(struct tcb *tcp, unsigned int *sig)
        }
 
 #ifdef ENABLE_STACKTRACE
-       if (stack_trace_enabled) {
-               if (tcp_sysent(tcp)->sys_flags & STACKTRACE_CAPTURE_ON_ENTER)
-                       unwind_tcb_capture(tcp);
+       if (stack_trace_enabled &&
+           !check_exec_syscall(tcp) &&
+           tcp_sysent(tcp)->sys_flags & STACKTRACE_CAPTURE_ON_ENTER) {
+               unwind_tcb_capture(tcp);
        }
 #endif
 
+       if (!is_complete_set(status_set, NUMBER_OF_STATUSES))
+               strace_open_memstream(tcp);
+
        printleader(tcp);
        tprintf("%s(", tcp_sysent(tcp)->sys_name);
        int res = raw(tcp) ? printargs(tcp) : tcp_sysent(tcp)->sys_func(tcp);
@@ -668,9 +682,27 @@ syscall_entering_finish(struct tcb *tcp, int res)
 {
        tcp->flags |= TCB_INSYSCALL;
        tcp->sys_func_rval = res;
+
        /* Measure the entrance time as late as possible to avoid errors. */
        if ((Tflag || cflag) && !filtered(tcp))
                clock_gettime(CLOCK_MONOTONIC, &tcp->etime);
+
+       /* Start tracking system time */
+       if (cflag) {
+               if (debug_flag) {
+                       struct timespec dt;
+
+                       ts_sub(&dt, &tcp->stime, &tcp->ltime);
+
+                       if (ts_nz(&dt))
+                               debug_func_msg("pid %d: %.9f seconds of system "
+                                              "time spent since the last "
+                                              "syscall exit",
+                                              tcp->pid, ts_float(&dt));
+               }
+
+               tcp->ltime = tcp->stime;
+       }
 }
 
 /* Returns:
@@ -718,7 +750,7 @@ print_syscall_resume(struct tcb *tcp)
         * "strace -ff -oLOG test/threaded_execve" corner case.
         * It's the only case when -ff mode needs reprinting.
         */
-       if ((followfork < 2 && printing_tcp != tcp)
+       if ((!output_separately && printing_tcp != tcp && !tcp->staged_output_data)
            || (tcp->flags & TCB_REPRINT)) {
                tcp->flags &= ~TCB_REPRINT;
                printleader(tcp);
@@ -748,6 +780,11 @@ syscall_exiting_trace(struct tcb *tcp, struct timespec *ts, int res)
                tprints(") ");
                tabto();
                tprints("= ? <unavailable>\n");
+               if (!is_complete_set(status_set, NUMBER_OF_STATUSES)) {
+                       bool publish = is_number_in_set(STATUS_UNAVAILABLE,
+                                                       status_set);
+                       strace_close_memstream(tcp, publish);
+               }
                line_ended();
                return res;
        }
@@ -757,22 +794,24 @@ syscall_exiting_trace(struct tcb *tcp, struct timespec *ts, int res)
        if (raw(tcp)) {
                /* sys_res = printargs(tcp); - but it's nop on sysexit */
        } else {
-       /* FIXME: not_failing_only (IOW, option -z) is broken:
-        * failure of syscall is known only after syscall return.
-        * Thus we end up with something like this on, say, ENOENT:
-        *     open("does_not_exist", O_RDONLY <unfinished ...>
-        *     {next syscall decode}
-        * whereas the intended result is that open(...) line
-        * is not shown at all.
-        */
-               if (not_failing_only && tcp->u_error)
-                       return 0;       /* ignore failed syscalls */
                if (tcp->sys_func_rval & RVAL_DECODED)
                        sys_res = tcp->sys_func_rval;
                else
                        sys_res = tcp_sysent(tcp)->sys_func(tcp);
        }
 
+       if (!is_complete_set(status_set, NUMBER_OF_STATUSES)) {
+               bool publish = syserror(tcp)
+                              && is_number_in_set(STATUS_FAILED, status_set);
+               publish |= !syserror(tcp)
+                          && is_number_in_set(STATUS_SUCCESSFUL, status_set);
+               strace_close_memstream(tcp, publish);
+               if (!publish) {
+                       line_ended();
+                       return 0;
+               }
+       }
+
        tprints(") ");
        tabto();
 
@@ -863,10 +902,17 @@ syscall_exiting_trace(struct tcb *tcp, struct timespec *ts, int res)
                                        tprintf("= %#" PRI_klx, tcp->u_rval);
                                }
                                break;
-                       case RVAL_OCTAL:
+                       case RVAL_OCTAL: {
+                               unsigned long long mode =
+                                       zero_extend_signed_to_ull(tcp->u_rval);
                                tprints("= ");
-                               print_numeric_long_umask(tcp->u_rval);
+#if ANY_WORDSIZE_LESS_THAN_KERNEL_LONG
+                               if (current_klongsize < sizeof(tcp->u_rval))
+                                       mode = (unsigned int) mode;
+#endif
+                               print_numeric_ll_umode_t(mode);
                                break;
+                       }
                        case RVAL_UDECIMAL:
 #if ANY_WORDSIZE_LESS_THAN_KERNEL_LONG
                                if (current_klongsize < sizeof(tcp->u_rval)) {
@@ -879,12 +925,33 @@ syscall_exiting_trace(struct tcb *tcp, struct timespec *ts, int res)
                                }
                                break;
                        case RVAL_FD:
-                               if (show_fd_path) {
+                               /*
+                                * printfd accepts int as fd and it makes
+                                * little sense to pass negative fds to it.
+                                */
+                               if ((current_klongsize < sizeof(tcp->u_rval)) ||
+                                   ((kernel_ulong_t) tcp->u_rval <= INT_MAX)) {
                                        tprints("= ");
                                        printfd(tcp, tcp->u_rval);
-                               } else
+                               } else {
                                        tprintf("= %" PRI_kld, tcp->u_rval);
+                               }
+                               break;
+                       case RVAL_TID:
+                       case RVAL_SID:
+                       case RVAL_TGID:
+                       case RVAL_PGID: {
+                               #define _(_t) [RVAL_##_t - RVAL_TID] = PT_##_t
+                               static const enum pid_type types[] = {
+                                       _(TID), _(SID), _(TGID), _(PGID),
+                               };
+                               #undef _
+
+                               tprints("= ");
+                               printpid(tcp, tcp->u_rval,
+                                        types[(sys_res & RVAL_MASK) - RVAL_TID]);
                                break;
+                       }
                        default:
                                error_msg("invalid rval format");
                                break;
@@ -897,8 +964,12 @@ syscall_exiting_trace(struct tcb *tcp, struct timespec *ts, int res)
        }
        if (Tflag) {
                ts_sub(ts, ts, &tcp->etime);
-               tprintf(" <%ld.%06ld>",
-                       (long) ts->tv_sec, (long) ts->tv_nsec / 1000);
+               tprintf(" <%ld", (long) ts->tv_sec);
+               if (Tflag_width) {
+                       tprintf(".%0*ld",
+                               Tflag_width, (long) ts->tv_nsec / Tflag_scale);
+               }
+               tprints(">");
        }
        tprints("\n");
        dumpio(tcp);
@@ -917,6 +988,9 @@ syscall_exiting_finish(struct tcb *tcp)
        tcp->flags &= ~(TCB_INSYSCALL | TCB_TAMPERED | TCB_INJECT_DELAY_EXIT);
        tcp->sys_func_rval = 0;
        free_tcb_priv_data(tcp);
+
+       if (cflag)
+               tcp->ltime = tcp->stime;
 }
 
 bool
@@ -948,7 +1022,7 @@ restore_cleared_syserror(struct tcb *tcp)
        tcp->u_error = saved_u_error;
 }
 
-static struct ptrace_syscall_info ptrace_sci;
+static struct_ptrace_syscall_info ptrace_sci;
 
 static bool
 ptrace_syscall_info_is_valid(void)
@@ -1152,7 +1226,7 @@ free_sysent_buf(void *ptr)
 }
 
 static bool
-ptrace_get_syscall_info(struct tcb *tcp)
+strace_get_syscall_info(struct tcb *tcp)
 {
        /*
         * ptrace_get_syscall_info_supported should have been checked
@@ -1198,7 +1272,7 @@ get_instruction_pointer(struct tcb *tcp, kernel_ulong_t *ip)
                return false;
 
        if (ptrace_get_syscall_info_supported) {
-               if (!ptrace_get_syscall_info(tcp))
+               if (!strace_get_syscall_info(tcp))
                        return false;
                *ip = (kernel_ulong_t) ptrace_sci.instruction_pointer;
                return true;
@@ -1225,7 +1299,7 @@ get_stack_pointer(struct tcb *tcp, kernel_ulong_t *sp)
                return false;
 
        if (ptrace_get_syscall_info_supported) {
-               if (!ptrace_get_syscall_info(tcp))
+               if (!strace_get_syscall_info(tcp))
                        return false;
                *sp = (kernel_ulong_t) ptrace_sci.stack_pointer;
                return true;
@@ -1252,7 +1326,7 @@ get_syscall_regs(struct tcb *tcp)
                return get_regs_error;
 
        if (ptrace_get_syscall_info_supported)
-               return ptrace_get_syscall_info(tcp) ? 0 : get_regs_error;
+               return strace_get_syscall_info(tcp) ? 0 : get_regs_error;
 
        return get_regs(tcp);
 }
@@ -1284,10 +1358,7 @@ get_scno(struct tcb *tcp)
                return -1;
 
        if (ptrace_syscall_info_is_valid()) {
-               /*
-                * So far it's just a workaround for x32,
-                * but let's pretend it could be used elsewhere.
-                */
+               /* Apply arch-specific workarounds.  */
                int rc = arch_check_scno(tcp);
                if (rc != 1)
                        return rc;
@@ -1298,6 +1369,7 @@ get_scno(struct tcb *tcp)
                        return rc;
        }
 
+       tcp->true_scno = tcp->scno;
        tcp->scno = shuffle_scno(tcp->scno);
 
        if (scno_is_valid(tcp->scno)) {
index 336a30bfe437a95c7f4ae14f0765e9123ed63cbf..eed15b25a6bcf38e7864e4d2bbb117697dd018aa 100644 (file)
--- a/sysent.h
+++ b/sysent.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -16,25 +16,28 @@ typedef struct sysent {
        const char *sys_name;
 } struct_sysent;
 
-# define TRACE_FILE                    00000001        /* Trace file-related syscalls. */
-# define TRACE_IPC                     00000002        /* Trace IPC-related syscalls. */
-# define TRACE_NETWORK                 00000004        /* Trace network-related syscalls. */
-# define TRACE_PROCESS                 00000010        /* Trace process-related syscalls. */
-# define TRACE_SIGNAL                  00000020        /* Trace signal-related syscalls. */
-# define TRACE_DESC                    00000040        /* Trace file descriptor-related syscalls. */
-# define TRACE_MEMORY                  00000100        /* Trace memory mapping-related syscalls. */
-# define SYSCALL_NEVER_FAILS           00000200        /* Syscall is always successful. */
-# define MEMORY_MAPPING_CHANGE         00000400        /* Trigger proc/maps cache updating */
-# define STACKTRACE_CAPTURE_ON_ENTER   00001000        /* Capture stacktrace on "entering" stage */
-# define TRACE_INDIRECT_SUBCALL                00002000        /* Syscall is an indirect socket/ipc subcall. */
-# define COMPAT_SYSCALL_TYPES          00004000        /* A compat syscall that uses compat types. */
-# define TRACE_STAT                    00010000        /* Trace {,*_}{,old}{,x}stat{,64} syscalls. */
-# define TRACE_LSTAT                   00020000        /* Trace *lstat* syscalls. */
-# define TRACE_STATFS                  00040000        /* Trace statfs, statfs64, and statvfs syscalls. */
-# define TRACE_FSTATFS                 00100000        /* Trace fstatfs, fstatfs64 and fstatvfs syscalls. */
-# define TRACE_STATFS_LIKE             00200000        /* Trace statfs-like, fstatfs-like and ustat syscalls. */
-# define TRACE_FSTAT                   00400000        /* Trace *fstat{,at}{,64} syscalls. */
-# define TRACE_STAT_LIKE               01000000        /* Trace *{,l,f}stat{,x,at}{,64} syscalls. */
-# define TRACE_PURE                    02000000        /* Trace getter syscalls with no arguments. */
+# define TRACE_FILE                    000000001       /* Trace file-related syscalls. */
+# define TRACE_IPC                     000000002       /* Trace IPC-related syscalls. */
+# define TRACE_NETWORK                 000000004       /* Trace network-related syscalls. */
+# define TRACE_PROCESS                 000000010       /* Trace process-related syscalls. */
+# define TRACE_SIGNAL                  000000020       /* Trace signal-related syscalls. */
+# define TRACE_DESC                    000000040       /* Trace file descriptor-related syscalls. */
+# define TRACE_MEMORY                  000000100       /* Trace memory mapping-related syscalls. */
+# define SYSCALL_NEVER_FAILS           000000200       /* Syscall is always successful. */
+# define MEMORY_MAPPING_CHANGE         000000400       /* Trigger proc/maps cache updating */
+# define STACKTRACE_CAPTURE_ON_ENTER   000001000       /* Capture stacktrace on "entering" stage */
+# define TRACE_INDIRECT_SUBCALL                000002000       /* Syscall is an indirect socket/ipc subcall. */
+# define COMPAT_SYSCALL_TYPES          000004000       /* A compat syscall that uses compat types. */
+# define TRACE_STAT                    000010000       /* Trace {,*_}{,old}{,x}stat{,64} syscalls. */
+# define TRACE_LSTAT                   000020000       /* Trace *lstat* syscalls. */
+# define TRACE_STATFS                  000040000       /* Trace statfs, statfs64, and statvfs syscalls. */
+# define TRACE_FSTATFS                 000100000       /* Trace fstatfs, fstatfs64 and fstatvfs syscalls. */
+# define TRACE_STATFS_LIKE             000200000       /* Trace statfs-like, fstatfs-like and ustat syscalls. */
+# define TRACE_FSTAT                   000400000       /* Trace *fstat{,at}{,64} syscalls. */
+# define TRACE_STAT_LIKE               001000000       /* Trace *{,l,f}stat{,x,at}{,64} syscalls. */
+# define TRACE_PURE                    002000000       /* Trace getter syscalls with no arguments. */
+# define TRACE_SECCOMP_DEFAULT         004000000       /* Syscall is traced by seccomp filter by default. */
+# define TRACE_CREDS                   010000000       /* Trace process credentials-related syscalls. */
+# define TRACE_CLOCK                   020000000       /* Trace syscalls reading or modifying system clocks. */
 
 #endif /* !STRACE_SYSENT_H */
index 009f9a4bc36f0362980a364966699e6d5303585e..e9c83f74c041fd72528af87a91a8cbb52c170dd1 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -27,6 +27,9 @@
 # define SI    0
 # define SE    0
 # define CST   0
+# define TSD   0
+# define TC    0
+# define TCL   0
 # define SEN(a)        0, 0
 
 #else  /*      !STRACE_TESTS_H */
@@ -51,6 +54,9 @@
 # define SI    MEMORY_MAPPING_CHANGE
 # define SE    STACKTRACE_CAPTURE_ON_ENTER
 # define CST   COMPAT_SYSCALL_TYPES
+# define TSD   TRACE_SECCOMP_DEFAULT
+# define TC    TRACE_CREDS
+# define TCL   TRACE_CLOCK
 /* SEN(a) is defined elsewhere */
 
 #endif
index bc9ad1315365ce4c8b9f309e2aba079b993f2494..708dd552fcd24c69342c1708225967dfe5d11bf2 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
 #undef TSF
 #undef TFSF
 #undef TSFA
+#undef PU
 #undef NF
 #undef MA
 #undef SI
 #undef SE
 #undef CST
+#undef TSD
+#undef TC
+#undef TCL
 #undef SEN
index 34d5619978af5222418fab174a1dd64fac18b976..b5e0d8f342956ac4d5e6323b0c62a7f1ef27d529 100644 (file)
--- a/syslog.c
+++ b/syslog.c
@@ -9,37 +9,63 @@
 #include "defs.h"
 
 #include "xlat/syslog_action_type.h"
+#include "xlat/syslog_console_levels.h"
 
 SYS_FUNC(syslog)
 {
        int type = tcp->u_arg[0];
+       int len = tcp->u_arg[2];
 
        if (entering(tcp)) {
                /* type */
-               printxval(syslog_action_type, type, "SYSLOG_ACTION_???");
-               tprints(", ");
+               printxval_ex(syslog_action_type, type, "SYSLOG_ACTION_???",
+                            XLAT_STYLE_VERBOSE | XLAT_STYLE_FMT_D);
        }
 
        switch (type) {
-               case SYSLOG_ACTION_READ:
-               case SYSLOG_ACTION_READ_ALL:
-               case SYSLOG_ACTION_READ_CLEAR:
-                       if (entering(tcp))
-                               return 0;
-                       break;
-               default:
-                       printaddr(tcp->u_arg[1]);
-                       tprintf(", %" PRI_klu, tcp->u_arg[2]);
-                       return RVAL_DECODED;
+       /* Those commands have bufp and len ignored */
+       case SYSLOG_ACTION_CLOSE:
+       case SYSLOG_ACTION_OPEN:
+       case SYSLOG_ACTION_CLEAR:
+       case SYSLOG_ACTION_CONSOLE_OFF:
+       case SYSLOG_ACTION_CONSOLE_ON:
+       case SYSLOG_ACTION_SIZE_UNREAD:
+       case SYSLOG_ACTION_SIZE_BUFFER:
+               return RVAL_DECODED;
+
+       case SYSLOG_ACTION_READ:
+       case SYSLOG_ACTION_READ_ALL:
+       case SYSLOG_ACTION_READ_CLEAR:
+               if (entering(tcp)) {
+                       tprints(", ");
+                       return 0;
+               }
+               break;
+
+       case SYSLOG_ACTION_CONSOLE_LEVEL: /* Uses len */
+               tprints(", ");
+               printaddr64(tcp->u_arg[1]);
+               tprints(", ");
+               printxval_ex(syslog_console_levels, len, "LOGLEVEL_???",
+                            XLAT_STYLE_VERBOSE | XLAT_STYLE_FMT_D);
+               return RVAL_DECODED;
+
+       default:
+               tprints(", ");
+               printaddr64(tcp->u_arg[1]);
+               tprintf(", %d", len);
+               return RVAL_DECODED;
        }
 
+       /* syscall exit handler for SYSLOG_ACTION_READ* */
+
        /* bufp */
        if (syserror(tcp))
-               printaddr(tcp->u_arg[1]);
+               printaddr64(tcp->u_arg[1]);
        else
                printstrn(tcp, tcp->u_arg[1], tcp->u_rval);
        /* len */
-       tprintf(", %d", (int) tcp->u_arg[2]);
+       tprintf(", %d", len);
 
        return 0;
 }
diff --git a/tee.c b/tee.c
new file mode 100644 (file)
index 0000000..af16163
--- /dev/null
+++ b/tee.c
@@ -0,0 +1,525 @@
+/*
+ * Copyright (c) 2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#include "defs.h"
+#include "print_fields.h"
+
+#include "types/tee.h"
+
+#define XLAT_MACROS_ONLY
+#include "xlat/tee_ioctl_cmds.h"
+#undef XLAT_MACROS_ONLY
+
+#include "xlat/tee_ioctl_gen_caps.h"
+#include "xlat/tee_ioctl_impl_ids.h"
+#include "xlat/tee_ioctl_login_types.h"
+#include "xlat/tee_ioctl_max_arg_size.h"
+#include "xlat/tee_ioctl_origins.h"
+#include "xlat/tee_ioctl_optee_caps.h"
+#include "xlat/tee_ioctl_param_attr_types.h"
+#include "xlat/tee_ioctl_shm_flags.h"
+
+#define TEE_IOCTL_PARAM_SIZE(x) (sizeof(struct_tee_ioctl_param) * (x))
+
+#define TEE_FETCH_BUF_DATA(buf_, arg_, params_) \
+       tee_fetch_buf_data(tcp, arg, &buf_, sizeof(arg_), \
+                          &arg_, &arg_.num_params, \
+                          params_)
+
+/* session id is printed as 0x%x in libteec */
+#define PRINT_FIELD_SESSION(prefix_, where_, field_) \
+       PRINT_FIELD_X(prefix_, where_, field_)
+
+static void
+tee_print_buf(struct_tee_ioctl_buf_data *buf)
+{
+       PRINT_FIELD_U("{", *buf, buf_len);
+       PRINT_FIELD_ADDR64(", ", *buf, buf_ptr);
+       tprints("}");
+}
+
+static int
+tee_fetch_buf_data(struct tcb *const tcp,
+                  const kernel_ulong_t arg,
+                  struct_tee_ioctl_buf_data *buf,
+                  size_t arg_size,
+                  void *arg_struct,
+                  unsigned *num_params,
+                  uint64_t *params)
+{
+       if (umove_or_printaddr(tcp, arg, buf))
+               return RVAL_IOCTL_DECODED;
+       if (buf->buf_len > TEE_MAX_ARG_SIZE || buf->buf_len < arg_size) {
+               tee_print_buf(buf);
+               return RVAL_IOCTL_DECODED;
+       }
+       if (umoven(tcp, buf->buf_ptr, arg_size, arg_struct)) {
+               tee_print_buf(buf);
+               return RVAL_IOCTL_DECODED;
+       }
+       if (entering(tcp) &&
+           (arg_size + TEE_IOCTL_PARAM_SIZE(*num_params) != buf->buf_len)) {
+               /*
+                * We could print whatever number of params
+                * is in buf_data, but the kernel would ignore
+                * them anyway (and return -EINVAL) if
+                * the above condition is not satisfied.
+                *
+                * Except for on exiting. The kernel has the right
+                * to update num_params but not buf_len
+                * (see tee_ioctl_supp_recv)
+                */
+               tee_print_buf(buf);
+               return RVAL_IOCTL_DECODED;
+       }
+       if (*num_params) {
+               *params = buf->buf_ptr + arg_size;
+       } else {
+               *params = 0;
+       }
+
+       return 0;
+}
+
+static bool
+tee_print_param_fn(struct tcb *tcp, void *elem_buf, size_t elem_size, void *data)
+{
+       struct_tee_ioctl_param *param = (struct_tee_ioctl_param *) elem_buf;
+
+       tprintf("{attr=");
+       printxval(tee_ioctl_param_attr_types,
+                   param->attr & ~TEE_IOCTL_PARAM_ATTR_META,
+                   "TEE_IOCTL_PARAM_ATTR_");
+       if (param->attr & TEE_IOCTL_PARAM_ATTR_META)
+               tprintf("|TEE_IOCTL_PARAM_ATTR_META");
+
+       switch (param->attr) {
+       case TEE_IOCTL_PARAM_ATTR_TYPE_NONE:
+               break;
+
+       case TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INPUT:
+       case TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INOUT:
+       case TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_OUTPUT:
+               tprintf(", shm_offs=%#llx", (unsigned long long) param->a);
+               tprintf(", size=%#llx", (unsigned long long) param->b);
+               tprintf(", shm_id=%llu", (unsigned long long) param->c);
+               break;
+
+       case TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INPUT:
+       case TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INOUT:
+       case TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_OUTPUT:
+       default:
+               PRINT_FIELD_X(", ", *param, a);
+               PRINT_FIELD_X(", ", *param, b);
+               PRINT_FIELD_X(", ", *param, c);
+               break;
+       }
+       tprints("}");
+       return true;
+}
+
+static void
+tee_print_params(struct tcb *const tcp, uint64_t params_start, unsigned num_params)
+{
+       struct_tee_ioctl_param param_buffer;
+
+       tprints(", params=");
+       print_array(tcp, params_start, num_params, &param_buffer, sizeof(param_buffer),
+                   tfetch_mem, tee_print_param_fn, NULL);
+}
+
+static int
+tee_version(struct tcb *const tcp, const kernel_ulong_t arg)
+{
+       struct_tee_ioctl_version_data version;
+
+       if (entering(tcp)) {
+               tprints(", ");
+               return 0;
+       }
+
+       if (umove_or_printaddr(tcp, arg, &version))
+               return RVAL_IOCTL_DECODED;
+
+       PRINT_FIELD_XVAL("{", version, impl_id,
+                        tee_ioctl_impl_ids, "TEE_IMPL_ID_???");
+       PRINT_FIELD_FLAGS(", ", version, gen_caps,
+                         tee_ioctl_gen_caps, "TEE_GEN_CAP_???");
+       if (version.impl_id == TEE_IMPL_ID_OPTEE) {
+               PRINT_FIELD_FLAGS(", ", version, impl_caps,
+                                 tee_ioctl_optee_caps, "TEE_OPTEE_CAP_???");
+       } else {
+               PRINT_FIELD_X(", ", version, impl_caps);
+       }
+
+       tprints("}");
+       return RVAL_IOCTL_DECODED;
+}
+
+static int
+tee_open_session(struct tcb *const tcp, const kernel_ulong_t arg)
+{
+       int rval;
+       struct_tee_ioctl_buf_data buf_data;
+       struct_tee_ioctl_open_session_arg open_session;
+       uint64_t params;
+       gid_t gid;
+
+       if (entering(tcp)) {
+               tprints(", ");
+
+               if ((rval = TEE_FETCH_BUF_DATA(buf_data, open_session, &params)))
+                       return rval;
+
+               PRINT_FIELD_U("{", buf_data, buf_len);
+               PRINT_FIELD_UUID(", buf_ptr={", open_session, uuid);
+               PRINT_FIELD_XVAL(", ", open_session, clnt_login,
+                                tee_ioctl_login_types, "TEE_IOCTL_LOGIN_???");
+               /*
+                * tee_ioctl_open_session_arg.clnt_uuid is used to pass
+                * connectionData, which is currently only used to indicate
+                * which group the client application wishes to authenticate as
+                * (when TEE_IOCTL_LOGIN_GROUP or TEE_IOCTL_LOGIN_GROUP_APPLICATION
+                * are used).
+                *
+                * It is not an UUID; actual client UUID is computed in the kernel.
+                */
+               switch (open_session.clnt_login) {
+               case TEE_IOCTL_LOGIN_PUBLIC:
+               case TEE_IOCTL_LOGIN_USER:
+               case TEE_IOCTL_LOGIN_APPLICATION:
+               case TEE_IOCTL_LOGIN_USER_APPLICATION:
+                       break;
+               case TEE_IOCTL_LOGIN_GROUP:
+               case TEE_IOCTL_LOGIN_GROUP_APPLICATION:
+                       memcpy(&gid, open_session.clnt_uuid, sizeof(gid));
+                       printuid(", clnt_uuid=", gid);
+                       break;
+               default:
+                       PRINT_FIELD_X_ARRAY(", ", open_session, clnt_uuid);
+               }
+               PRINT_FIELD_U(", ", open_session, cancel_id);
+               PRINT_FIELD_U(", ", open_session, num_params);
+               tee_print_params(tcp, params, open_session.num_params);
+
+               tprints("}");
+               return 0;
+
+       } else if (syserror(tcp)) {
+               tprints("}");
+               return RVAL_IOCTL_DECODED;
+
+       } else {
+               tprints(" => ");
+               /*
+                * Yes, params are [in/out] for TEE_IOC_OPEN_SESSION.
+                * As for all other operations they are used in.
+                */
+               if ((rval = TEE_FETCH_BUF_DATA(buf_data, open_session, &params)))
+                       return rval;
+
+               PRINT_FIELD_SESSION("{", open_session, session);
+               PRINT_FIELD_U(", ", open_session, ret);
+               PRINT_FIELD_XVAL(", ", open_session, ret_origin, tee_ioctl_origins,
+                                "TEEC_ORIGIN_???");
+               tee_print_params(tcp, params, open_session.num_params);
+
+               tprints("}}");
+               return RVAL_IOCTL_DECODED;
+       }
+}
+
+static int
+tee_invoke(struct tcb *const tcp, const kernel_ulong_t arg)
+{
+       int rval;
+       struct_tee_ioctl_buf_data buf_data;
+       struct_tee_ioctl_invoke_arg invoke;
+       uint64_t params;
+
+       if (entering(tcp)) {
+               tprints(", ");
+               if ((rval = TEE_FETCH_BUF_DATA(buf_data, invoke, &params)))
+                       return rval;
+
+               PRINT_FIELD_U("{", buf_data, buf_len);
+               PRINT_FIELD_U(", buf_ptr={", invoke, func);
+               PRINT_FIELD_SESSION(", ", invoke, session);
+               PRINT_FIELD_U(", ", invoke, cancel_id);
+               PRINT_FIELD_U(", ", invoke, num_params);
+               tee_print_params(tcp, params, invoke.num_params);
+
+               tprints("}");
+               return 0;
+
+       } else if (syserror(tcp)) {
+               tprints("}");
+               return RVAL_IOCTL_DECODED;
+
+       } else {
+               tprints(" => ");
+               if ((rval = TEE_FETCH_BUF_DATA(buf_data, invoke, &params)))
+                       return rval;
+
+               PRINT_FIELD_U("{", invoke, ret);
+               PRINT_FIELD_XVAL(", ", invoke, ret_origin, tee_ioctl_origins,
+                                "TEEC_ORIGIN_???");
+               tee_print_params(tcp, params, invoke.num_params);
+
+               tprints("}}");
+               return RVAL_IOCTL_DECODED;
+       }
+}
+
+static int
+tee_cancel(struct tcb *const tcp, const kernel_ulong_t arg)
+{
+       struct_tee_ioctl_cancel_arg cancel;
+
+       tprints(", ");
+       if (umove_or_printaddr(tcp, arg, &cancel))
+               return RVAL_IOCTL_DECODED;
+
+       PRINT_FIELD_U("{", cancel, cancel_id);
+       PRINT_FIELD_SESSION(", ", cancel, session);
+
+       tprints("}");
+       return RVAL_IOCTL_DECODED;
+}
+
+static int
+tee_close_session(struct tcb *const tcp, const kernel_ulong_t arg)
+{
+       struct_tee_ioctl_close_session_arg close_session;
+
+       tprints(", ");
+       if (umove_or_printaddr(tcp, arg, &close_session))
+               return RVAL_IOCTL_DECODED;
+
+       PRINT_FIELD_SESSION("{", close_session, session);
+
+       tprints("}");
+       return RVAL_IOCTL_DECODED;
+}
+
+static int
+tee_suppl_recv(struct tcb *const tcp, const kernel_ulong_t arg)
+{
+       int rval;
+       struct_tee_ioctl_buf_data buf_data;
+       struct_tee_iocl_supp_recv_arg supp_recv;
+       uint64_t params;
+
+       if (entering(tcp)) {
+               tprints(", ");
+               if ((rval = TEE_FETCH_BUF_DATA(buf_data, supp_recv, &params)))
+                       return rval;
+
+               PRINT_FIELD_U("{", buf_data, buf_len);
+               PRINT_FIELD_U(", buf_ptr={", supp_recv, func);
+               PRINT_FIELD_U(", ", supp_recv, num_params);
+               tee_print_params(tcp, params, supp_recv.num_params);
+
+               tprints("}");
+               return 0;
+
+       } else if (syserror(tcp)) {
+               tprints("}");
+               return RVAL_IOCTL_DECODED;
+
+       } else {
+               tprints(" => ");
+               if ((rval = TEE_FETCH_BUF_DATA(buf_data, supp_recv, &params)))
+                       return rval;
+
+               /* num_params is [in/out] for TEE_IOC_SUPPL_RECV only */
+               PRINT_FIELD_U("{", supp_recv, num_params);
+               tee_print_params(tcp, params, supp_recv.num_params);
+
+               tprints("}}");
+               return RVAL_IOCTL_DECODED;
+       }
+}
+
+static int
+tee_suppl_send(struct tcb *const tcp, const kernel_ulong_t arg)
+{
+       int rval;
+       struct_tee_ioctl_buf_data buf_data;
+       struct_tee_iocl_supp_send_arg supp_send;
+       uint64_t params;
+
+       if (entering(tcp)) {
+               tprints(", ");
+               if ((rval = TEE_FETCH_BUF_DATA(buf_data, supp_send, &params)))
+                       return rval;
+
+               PRINT_FIELD_U("{", buf_data, buf_len);
+               PRINT_FIELD_U(", buf_ptr={", supp_send, num_params);
+               tee_print_params(tcp, params, supp_send.num_params);
+
+               tprints("}");
+               return 0;
+
+       } else if (syserror(tcp)) {
+               tprints("}");
+               return RVAL_IOCTL_DECODED;
+
+       } else {
+               tprints(" => ");
+               if ((rval = TEE_FETCH_BUF_DATA(buf_data, supp_send, &params)))
+                       return rval;
+
+               PRINT_FIELD_U("{", supp_send, ret);
+               tee_print_params(tcp, params, supp_send.num_params);
+
+               tprints("}}");
+               return RVAL_IOCTL_DECODED;
+       }
+}
+
+static int
+tee_shm_alloc(struct tcb *const tcp, const kernel_ulong_t arg)
+{
+       struct_tee_ioctl_shm_alloc_data shm_alloc;
+
+       if (entering(tcp)) {
+               tprints(", ");
+               if (umove_or_printaddr(tcp, arg, &shm_alloc))
+                       return RVAL_IOCTL_DECODED;
+
+               PRINT_FIELD_X("{", shm_alloc, size);
+               PRINT_FIELD_FLAGS(", ", shm_alloc, flags,
+                                 tee_ioctl_shm_flags, "TEE_IOCTL_SHM_???");
+               tprints("}");
+               return 0;
+
+       } else if (syserror(tcp)) {
+               return RVAL_IOCTL_DECODED;
+
+       } else {
+               tprints(" => ");
+               if (umove_or_printaddr(tcp, arg, &shm_alloc))
+                       return RVAL_IOCTL_DECODED;
+
+               PRINT_FIELD_X("{", shm_alloc, size);
+               PRINT_FIELD_FLAGS(", ", shm_alloc, flags,
+                                 tee_ioctl_shm_flags, "TEE_IOCTL_SHM_???");
+               PRINT_FIELD_D(", ", shm_alloc, id);
+
+               tprints("}");
+               return RVAL_IOCTL_DECODED;
+       }
+}
+
+static int
+tee_shm_register_fd(struct tcb *const tcp, const kernel_ulong_t arg)
+{
+       struct_tee_ioctl_shm_register_fd_data shm_register_fd;
+
+       if (entering(tcp)) {
+               tprints(", ");
+               if (umove_or_printaddr(tcp, arg, &shm_register_fd))
+                       return RVAL_IOCTL_DECODED;
+
+               PRINT_FIELD_FD("{", shm_register_fd, fd, tcp);
+               PRINT_FIELD_FLAGS(", ", shm_register_fd, flags,
+                                 tee_ioctl_shm_flags, "TEE_IOCTL_SHM_???");
+               tprints("}");
+               return 0;
+
+       } else if (syserror(tcp)) {
+               return RVAL_IOCTL_DECODED;
+
+       } else {
+               tprints(" => ");
+               if (umove_or_printaddr(tcp, arg, &shm_register_fd))
+                       return RVAL_IOCTL_DECODED;
+
+               PRINT_FIELD_X("{", shm_register_fd, size);
+               PRINT_FIELD_D(", ", shm_register_fd, id);
+
+               tprints("}");
+               return RVAL_IOCTL_DECODED;
+       }
+}
+
+static int
+tee_shm_register(struct tcb *const tcp, const kernel_ulong_t arg)
+{
+       struct_tee_ioctl_shm_register_data shm_register;
+
+       if (entering(tcp)) {
+               tprints(", ");
+               if (umove_or_printaddr(tcp, arg, &shm_register))
+                       return RVAL_IOCTL_DECODED;
+
+               PRINT_FIELD_ADDR64("{", shm_register, addr);
+               PRINT_FIELD_X(", ", shm_register, length);
+               PRINT_FIELD_FLAGS(", ", shm_register, flags,
+                                 tee_ioctl_shm_flags, "TEE_IOCTL_SHM_???");
+               tprints("}");
+               return 0;
+
+       } else if (syserror(tcp)) {
+               return RVAL_IOCTL_DECODED;
+
+       } else {
+               tprints(" => ");
+               if (umove_or_printaddr(tcp, arg, &shm_register))
+                       return RVAL_IOCTL_DECODED;
+
+               PRINT_FIELD_X("{", shm_register, length);
+               PRINT_FIELD_FLAGS(", ", shm_register, flags,
+                                 tee_ioctl_shm_flags, "TEE_IOCTL_SHM_???");
+               PRINT_FIELD_D(", ", shm_register, id);
+
+               tprints("}");
+               return RVAL_IOCTL_DECODED;
+       }
+}
+
+int
+tee_ioctl(struct tcb *const tcp, const unsigned int code,
+         const kernel_ulong_t arg)
+{
+       switch (code) {
+       case TEE_IOC_VERSION:
+               return tee_version(tcp, arg);
+
+       case TEE_IOC_OPEN_SESSION:
+               return tee_open_session(tcp, arg);
+
+       case TEE_IOC_INVOKE:
+               return tee_invoke(tcp, arg);
+
+       case TEE_IOC_CANCEL:
+               return tee_cancel(tcp, arg);
+
+       case TEE_IOC_CLOSE_SESSION:
+               return tee_close_session(tcp, arg);
+
+       case TEE_IOC_SUPPL_RECV:
+               return tee_suppl_recv(tcp, arg);
+
+       case TEE_IOC_SUPPL_SEND:
+               return tee_suppl_send(tcp, arg);
+
+       case TEE_IOC_SHM_ALLOC:
+               return tee_shm_alloc(tcp, arg);
+
+       case TEE_IOC_SHM_REGISTER_FD:
+               /* This one isn't upstream */
+               return tee_shm_register_fd(tcp, arg);
+
+       case TEE_IOC_SHM_REGISTER:
+               return tee_shm_register(tcp, arg);
+
+       default:
+               return RVAL_DECODED;
+       }
+}
index b8521a482e2b79eaf6fbd7db6725d78091b47299..9759384aa72c4e4a80362a046b3e71d496e15651 100755 (executable)
@@ -3,7 +3,7 @@
 
 scriptversion=2018-03-07.03; # UTC
 
-# Copyright (C) 2011-2018 Free Software Foundation, Inc.
+# Copyright (C) 2011-2020 Free Software Foundation, Inc.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -42,11 +42,13 @@ print_usage ()
 {
   cat <<END
 Usage:
-  test-driver --test-name=NAME --log-file=PATH --trs-file=PATH
-              [--expect-failure={yes|no}] [--color-tests={yes|no}]
-              [--enable-hard-errors={yes|no}] [--]
+  test-driver --test-name NAME --log-file PATH --trs-file PATH
+              [--expect-failure {yes|no}] [--color-tests {yes|no}]
+              [--enable-hard-errors {yes|no}] [--]
               TEST-SCRIPT [TEST-SCRIPT-ARGUMENTS]
+
 The '--test-name', '--log-file' and '--trs-file' options are mandatory.
+See the GNU Automake documentation for information.
 END
 }
 
index 6aba591913ba118f7ce53f9a644afb53aa21030c..059b0321d58218ff49bd8f9139403436144cf012 100644 (file)
@@ -1,4 +1,4 @@
-Copyright (c) 2011-2019 The strace developers.
+Copyright (c) 2011-2020 The strace developers.
 All rights reserved.
 
 strace test suite is free software; you can redistribute it and/or modify
index 303655235aeb636478af9a12122b3e07b0d9c275..be704c050427224fedc779be3e492d5d6b5c8db9 100644 (file)
@@ -1,18 +1,19 @@
 # Automake input for strace tests.
 #
 # Copyright (c) 2011-2016 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2011-2019 The strace developers.
+# Copyright (c) 2011-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 OS = linux
+CC = @CC_FOR_M32@
 ARCH = @arch_m32@
 NATIVE_ARCH = @arch_native@
 SIZEOF_KERNEL_LONG_T = 4
 SIZEOF_LONG = 4
 MPERS_NAME = m32
-MPERS_CC_FLAGS = @cc_flags_m32@
+MPERS_CC_FLAGS = @CFLAGS_FOR_M32@ @cc_flags_m32@
 ARCH_MFLAGS = -DMPERS_IS_$(MPERS_NAME) $(MPERS_CC_FLAGS)
 AM_CFLAGS = $(WARN_CFLAGS)
 AM_CPPFLAGS = $(ARCH_MFLAGS) \
@@ -29,6 +30,7 @@ AM_LDFLAGS = $(ARCH_MFLAGS)
 
 libtests_a_SOURCES = \
        create_nl_socket.c \
+       create_tmpfile.c \
        errno2name.c \
        error_msg.c \
        fill_memory.c \
@@ -40,15 +42,21 @@ libtests_a_SOURCES = \
        inode_of_sockfd.c \
        libmmsg.c \
        libsocketcall.c \
+       lock_file.c \
        overflowuid.c \
+       pidns.c \
+       pidns.h \
        pipe_maxfd.c \
        print_quoted_string.c \
        print_time.c \
        printflags.c \
-       printxval.c \
+       printxval-Xabbrev.c \
+       printxval-Xraw.c \
+       printxval-Xverbose.c \
        signal2name.c \
        skip_unavailable.c \
        sprintrc.c \
+       status.c \
        tail_alloc.c \
        test_netlink.h \
        test_nlattr.h \
@@ -58,6 +66,7 @@ libtests_a_SOURCES = \
        test_ucopy.h \
        tests.h \
        tprintf.c \
+       xmalloc_for_tests.c \
        # end of libtests_a_SOURCES
 libtests_a_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 check_LIBRARIES = libtests.a
@@ -73,49 +82,102 @@ check_PROGRAMS = $(PURE_EXECUTABLES) \
        attach-p-cmd-cmd \
        attach-p-cmd-p \
        block_reset_raise_run \
+       block_reset_run \
        bpf-obj_get_info_by_fd \
        bpf-obj_get_info_by_fd-prog \
        bpf-obj_get_info_by_fd-prog-v \
        bpf-obj_get_info_by_fd-v \
        bpf-success \
+       bpf-success-long-y \
        bpf-success-v \
        caps-abbrev \
        check_sigblock \
        check_sigign \
        clone_parent \
+       clone_parent--quiet-exit \
+       clone_parent-q \
+       clone_parent-qq \
        clone_ptrace \
+       clone_ptrace--quiet-attach \
+       clone_ptrace--quiet-exit \
+       clone_ptrace-q \
+       clone_ptrace-qq \
+       clone3-success \
+       clone3-success-Xabbrev \
+       clone3-success-Xraw \
+       clone3-success-Xverbose \
        count-f \
        delay \
        execve-v \
        execveat-v \
+       fcntl--pidns-translation \
+       fcntl64--pidns-translation \
+       filter_seccomp-flag \
+       filter_seccomp-perf \
        filter-unavailable \
        fork-f \
+       fork--pidns-translation \
        fsync-y \
+       get_process_reaper \
+       getpgrp--pidns-translation      \
        getpid  \
+       getpid--pidns-translation       \
        getppid \
+       getsid--pidns-translation \
        gettid \
+       gettid--pidns-translation \
        inject-nf \
        int_0x80 \
+       ioctl_block--pidns-translation \
        ioctl_dm-v \
        ioctl_evdev-success \
+       ioctl_evdev-success-Xabbrev \
+       ioctl_evdev-success-Xraw \
+       ioctl_evdev-success-Xverbose \
        ioctl_evdev-success-v \
-       ioctl_evdev-v \
+       ioctl_evdev-success-v-Xabbrev \
+       ioctl_evdev-success-v-Xraw \
+       ioctl_evdev-success-v-Xverbose \
+       ioctl_hdio-success \
+       ioctl_hdio-success-Xabbrev \
+       ioctl_hdio-success-Xraw \
+       ioctl_hdio-success-Xverbose \
+       ioctl_hdio-success-v \
+       ioctl_hdio-success-v-Xabbrev \
+       ioctl_hdio-success-v-Xraw \
+       ioctl_hdio-success-v-Xverbose \
        ioctl_loop-nv \
        ioctl_loop-v \
        ioctl_nsfs \
        ioctl_perf-success \
        ioctl_rtc-v \
+       ioctl_v4l2-success \
+       ioctl_v4l2-success-Xabbrev \
+       ioctl_v4l2-success-Xraw \
+       ioctl_v4l2-success-Xverbose \
+       ioctl_v4l2-success-v \
+       ioctl_v4l2-success-v-Xabbrev \
+       ioctl_v4l2-success-v-Xraw \
+       ioctl_v4l2-success-v-Xverbose \
+       ioprio--pidns-translation \
        is_linux_mips_n64 \
+       kcmp-y--pidns-translation \
        kill_child \
+       kill--pidns-translation \
        ksysent \
        list_sigaction_signum \
        localtime \
        looping_threads \
+       migrate_pages--pidns-translation \
        mmsg-silent \
        mmsg_name-v \
+       move_pages--pidns-translation \
        msg_control-v \
        net-accept-connect \
+       net-sockaddr--pidns-translation \
        net-tpacket_stats-success \
+       nlattr_ifla_xdp-y \
+       netlink_audit--pidns-translation \
        netlink_inet_diag \
        netlink_netlink_diag \
        netlink_unix_diag \
@@ -127,11 +189,20 @@ check_PROGRAMS = $(PURE_EXECUTABLES) \
        pc \
        perf_event_open_nonverbose \
        perf_event_open_unabbrev \
+       pidfd_open--pidns-translation \
+       pidfd_send_signal--pidns-translation \
+       pidns-cache \
+       poll-P \
+       ppoll-P \
        ppoll-v \
+       prlimit64--pidns-translation \
        prctl-seccomp-filter-v \
        prctl-seccomp-strict \
        prctl-spec-inject \
        print_maxfd \
+       print_ppid_tracerpid \
+       process_vm_readv--pidns-translation \
+       process_vm_writev--pidns-translation \
        qual_fault \
        qual_inject-error-signal \
        qual_inject-retval \
@@ -145,7 +216,13 @@ check_PROGRAMS = $(PURE_EXECUTABLES) \
        quotactl-xfs-v \
        redirect-fds \
        restart_syscall \
+       rt_sigqueueinfo--pidns-translation \
+       rt_tgsigqueueinfo--pidns-translation \
        run_expect_termsig \
+       sched_xetaffinity--pidns-translation \
+       sched_xetattr--pidns-translation \
+       sched_xetparam--pidns-translation \
+       sched_xetscheduler--pidns-translation \
        scm_rights \
        seccomp-filter-v \
        seccomp-strict \
@@ -153,17 +230,35 @@ check_PROGRAMS = $(PURE_EXECUTABLES) \
        set_ptracer_any \
        set_sigblock \
        set_sigign \
+       setpgrp-exec \
        signal_receive \
+       signal_receive--pidns-translation \
        sleep \
        stack-fcall \
+       stack-fcall-attach \
        stack-fcall-mangled \
+       status-none-threads \
+       status-unfinished-threads \
+       so_peercred--pidns-translation \
+       syslog-success \
+       tgkill--pidns-translation \
        threads-execve \
+       threads-execve--quiet-thread-execve \
+       threads-execve-q \
+       threads-execve-qq \
+       threads-execve-qqq \
+       tkill--pidns-translation \
+       tracer_ppid_pgid_sid \
+       trie_test \
        unblock_reset_raise \
        unix-pair-send-recv \
        unix-pair-sendto-recvfrom \
        vfork-f \
        wait4-v \
        waitid-v \
+       xetpgid--pidns-translation \
+       xetpriority--pidns-translation \
+       xet_robust_list--pidns-translation \
        zeroargc \
        # end of check_PROGRAMS
 
@@ -177,6 +272,8 @@ ftruncate64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 localtime_LDADD = $(clock_LIBS) $(LDADD)
 looping_threads_LDADD = -lpthread $(LDADD)
 lstat64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
+maybe_switch_current_tcp_LDADD = -lpthread $(LDADD)
+maybe_switch_current_tcp__quiet_thread_execve_LDADD = -lpthread $(LDADD)
 mmap64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 mmap64_Xabbrev_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 mmap64_Xraw_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
@@ -190,7 +287,13 @@ preadv_pwritev_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 pwritev_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 stat64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 statfs_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
+status_none_threads_LDADD = -lpthread $(LDADD)
+status_unfinished_threads_LDADD = -lpthread $(LDADD)
 threads_execve_LDADD = -lpthread $(clock_LIBS) $(LDADD)
+threads_execve__quiet_thread_execve_LDADD = -lpthread $(clock_LIBS) $(LDADD)
+threads_execve_q_LDADD = -lpthread $(clock_LIBS) $(LDADD)
+threads_execve_qq_LDADD = -lpthread $(clock_LIBS) $(LDADD)
+threads_execve_qqq_LDADD = -lpthread $(clock_LIBS) $(LDADD)
 times_LDADD = $(clock_LIBS) $(LDADD)
 truncate64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 uio_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
@@ -198,14 +301,22 @@ uio_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 stack_fcall_SOURCES = stack-fcall.c \
        stack-fcall-0.c stack-fcall-1.c stack-fcall-2.c stack-fcall-3.c
 
+stack_fcall_attach_SOURCES = stack-fcall-attach.c \
+       stack-fcall-0.c stack-fcall-1.c stack-fcall-2.c stack-fcall-3.c
+
 stack_fcall_mangled_SOURCES = stack-fcall-mangled.c \
        stack-fcall-mangled-0.c stack-fcall-mangled-1.c \
        stack-fcall-mangled-2.c stack-fcall-mangled-3.c
 
+trie_test_SOURCES = trie_test.c trie_for_tests.c
+trie_test_CPPFLAGS = $(AM_CPPFLAGS) $(CODE_COVERAGE_CPPFLAGS)
+trie_test_CFLAGS = $(AM_CFLAGS) $(CODE_COVERAGE_CFLAGS)
+trie_test_LDADD = $(LDADD) $(CODE_COVERAGE_LIBS)
+
 include gen_tests.am
 
 if ENABLE_STACKTRACE
-STACKTRACE_TESTS = strace-k.test
+STACKTRACE_TESTS = strace-k.test strace-k-p.test
 if USE_DEMANGLE
 STACKTRACE_TESTS += strace-k-demangle.test
 endif
@@ -214,6 +325,7 @@ STACKTRACE_TESTS =
 endif
 
 DECODER_TESTS = \
+       bpf-success-long-y.test \
        bpf-success-v.test \
        bpf-success.test \
        brk.test \
@@ -226,17 +338,21 @@ DECODER_TESTS = \
        btrfs-wX.test \
        caps-abbrev.test \
        caps.test \
+       clone-flags.test \
+       clone3-success.test \
        eventfd.test \
        execve-v.test \
        execve.test \
        fadvise64.test \
+       faccessat.test \
+       faccessat2.test \
        futex.test \
        getuid.test \
        int_0x80.test \
+       inotify_init-y.test \
        ioctl.test \
-       ioctl_evdev-success-v.test \
+       ioctl_block--pidns-translation.test \
        ioctl_evdev-success.test \
-       ioctl_perf-success.test \
        ipc_msgbuf.test \
        kern_features-fault.test \
        llseek.test \
@@ -278,6 +394,7 @@ DECODER_TESTS = \
        seccomp-strict.test \
        sigaltstack.test \
        sun_path.test \
+       syslog-success.test \
        uio.test \
        umount.test \
        umount2.test \
@@ -293,7 +410,6 @@ MISC_TESTS = \
        attach-f-p.test \
        attach-p-cmd.test \
        bexecve.test \
-       clone_parent.test \
        clone_ptrace.test \
        count-f.test \
        count.test \
@@ -302,20 +418,24 @@ MISC_TESTS = \
        detach-sleeping.test \
        detach-stopped.test \
        fflush.test \
+       filter_seccomp-perf.test \
        filter-unavailable.test \
        filtering_fd-syntax.test \
        filtering_syscall-syntax.test \
        first_exec_failure.test \
+       fork--pidns-translation.test \
        get_regs.test \
+       gettid--pidns-translation.test \
        inject-nf.test \
        interactive_block.test \
        kill_child.test \
-       ksysent.test \
        localtime.test \
        looping_threads.test \
+       netlink_audit--pidns-translation.test \
        opipe.test \
        options-syntax.test \
        pc.test \
+       pidns-cache.test \
        printpath-umovestr-legacy.test \
        printstrn-umoven-legacy.test \
        qual_fault-syntax.test \
@@ -335,8 +455,16 @@ MISC_TESTS = \
        restart_syscall.test \
        sigblock.test \
        sigign.test \
+       status-detached.test \
+       status-none-threads.test \
+       status-unfinished-threads.test \
        strace-C.test \
+       strace-D.test \
+       strace-DD.test \
+       strace-DDD.test \
        strace-E.test \
+       strace-E-override.test \
+       strace-E-unset.test \
        strace-S.test \
        strace-T.test \
        strace-V.test \
@@ -349,6 +477,7 @@ MISC_TESTS = \
        strace-ttt.test \
        termsig.test \
        threads-execve.test \
+       umovestr_cached.test \
        # end of MISC_TESTS
 
 TESTS = $(GEN_TESTS) $(DECODER_TESTS) $(MISC_TESTS) $(STACKTRACE_TESTS)
@@ -381,7 +510,10 @@ EXTRA_DIST = \
        eventfd.expected \
        fadvise.h \
        fcntl-common.c \
+       filter_seccomp.in \
+       filter_seccomp.sh \
        filter-unavailable.expected \
+       fork--pidns-translation.awk \
        fstatat.c \
        fstatx.c \
        gen_pure_executables.sh \
@@ -390,17 +522,20 @@ EXTRA_DIST = \
        getresugid.c \
        init.sh \
        init_delete_module.h \
+       ioctl-success.sh \
        ioctl_kvm_run_common.c \
        ipc.sh \
+       kernel_old_timespec.h \
+       kernel_old_timex.h \
        ksysent.sed \
        lstatx.c \
        match.awk \
        net.expected \
-       netlink_sock_diag-v.sh \
        nlattr_ifla.h \
        pipe.expected \
        print_user_desc.c \
        printsignal.c \
+       printxval.c \
        process_vm_readv_writev.c \
        pure_executables.list \
        qual_fault-exit_group.expected \
@@ -414,6 +549,7 @@ EXTRA_DIST = \
        run.sh \
        sched.in \
        scno_tampering.sh \
+       semop-common.c \
        setfsugid.c \
        setresugid.c \
        setreugid.c \
@@ -422,18 +558,37 @@ EXTRA_DIST = \
        sockaddr_xlat.c \
        sockname.c \
        stack-fcall.h \
+       status-detached.expected \
+       strace--follow-forks-output-separately.expected \
+       strace--relative-timestamps.expected \
+       strace--relative-timestamps-s.expected \
+       strace--relative-timestamps-ms.expected \
+       strace--relative-timestamps-us.expected \
+       strace--relative-timestamps-ns.expected \
+       strace--syscall-times.expected \
+       strace--syscall-times-s.expected \
+       strace--syscall-times-ms.expected \
+       strace--syscall-times-us.expected \
+       strace--syscall-times-ns.expected \
        strace-C.expected \
+       strace-D.expected \
+       strace-DDD.expected \
        strace-E.expected \
+       strace-E-unset.expected \
        strace-T.expected \
        strace-ff.expected \
        strace-k-demangle.expected \
        strace-k-demangle.test \
+       strace-k-p.expected \
+       strace-k-p.test \
        strace-k.expected \
        strace-k.test \
        strace-r.expected \
        strace.supp \
        sun_path.expected \
        syntax.sh \
+       trace_clock.in \
+       trace_creds.in \
        trace_fstat.in \
        trace_fstatfs.in \
        trace_lstat.in \
@@ -454,6 +609,7 @@ EXTRA_DIST = \
        unix-pair-send-recv.expected \
        unix-pair-sendto-recvfrom.expected \
        xchownx.c \
+       xgetdents.c \
        xgetrlimit.c \
        xselect.c \
        xstatfs.c \
index 9c424933ca45e94756a0ba766d282ae3e48f59eb..defaf8351836b965c384b7a7bf3c1a526d53acbf 100644 (file)
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.2 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -17,7 +17,7 @@
 # Automake input for strace tests.
 #
 # Copyright (c) 2011-2016 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2011-2019 The strace developers.
+# Copyright (c) 2011-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -105,59 +105,173 @@ host_triplet = @host@
 check_PROGRAMS = $(am__EXEEXT_1) _newselect-P$(EXEEXT) answer$(EXEEXT) \
        attach-f-p$(EXEEXT) attach-f-p-cmd$(EXEEXT) \
        attach-p-cmd-cmd$(EXEEXT) attach-p-cmd-p$(EXEEXT) \
-       block_reset_raise_run$(EXEEXT) bpf-obj_get_info_by_fd$(EXEEXT) \
+       block_reset_raise_run$(EXEEXT) block_reset_run$(EXEEXT) \
+       bpf-obj_get_info_by_fd$(EXEEXT) \
        bpf-obj_get_info_by_fd-prog$(EXEEXT) \
        bpf-obj_get_info_by_fd-prog-v$(EXEEXT) \
        bpf-obj_get_info_by_fd-v$(EXEEXT) bpf-success$(EXEEXT) \
-       bpf-success-v$(EXEEXT) caps-abbrev$(EXEEXT) \
-       check_sigblock$(EXEEXT) check_sigign$(EXEEXT) \
-       clone_parent$(EXEEXT) clone_ptrace$(EXEEXT) count-f$(EXEEXT) \
+       bpf-success-long-y$(EXEEXT) bpf-success-v$(EXEEXT) \
+       caps-abbrev$(EXEEXT) check_sigblock$(EXEEXT) \
+       check_sigign$(EXEEXT) clone_parent$(EXEEXT) \
+       clone_parent--quiet-exit$(EXEEXT) clone_parent-q$(EXEEXT) \
+       clone_parent-qq$(EXEEXT) clone_ptrace$(EXEEXT) \
+       clone_ptrace--quiet-attach$(EXEEXT) \
+       clone_ptrace--quiet-exit$(EXEEXT) clone_ptrace-q$(EXEEXT) \
+       clone_ptrace-qq$(EXEEXT) clone3-success$(EXEEXT) \
+       clone3-success-Xabbrev$(EXEEXT) clone3-success-Xraw$(EXEEXT) \
+       clone3-success-Xverbose$(EXEEXT) count-f$(EXEEXT) \
        delay$(EXEEXT) execve-v$(EXEEXT) execveat-v$(EXEEXT) \
-       filter-unavailable$(EXEEXT) fork-f$(EXEEXT) fsync-y$(EXEEXT) \
-       getpid$(EXEEXT) getppid$(EXEEXT) gettid$(EXEEXT) \
-       inject-nf$(EXEEXT) int_0x80$(EXEEXT) ioctl_dm-v$(EXEEXT) \
-       ioctl_evdev-success$(EXEEXT) ioctl_evdev-success-v$(EXEEXT) \
-       ioctl_evdev-v$(EXEEXT) ioctl_loop-nv$(EXEEXT) \
+       fcntl--pidns-translation$(EXEEXT) \
+       fcntl64--pidns-translation$(EXEEXT) \
+       filter_seccomp-flag$(EXEEXT) filter_seccomp-perf$(EXEEXT) \
+       filter-unavailable$(EXEEXT) fork-f$(EXEEXT) \
+       fork--pidns-translation$(EXEEXT) fsync-y$(EXEEXT) \
+       get_process_reaper$(EXEEXT) \
+       getpgrp--pidns-translation$(EXEEXT) getpid$(EXEEXT) \
+       getpid--pidns-translation$(EXEEXT) getppid$(EXEEXT) \
+       getsid--pidns-translation$(EXEEXT) gettid$(EXEEXT) \
+       gettid--pidns-translation$(EXEEXT) inject-nf$(EXEEXT) \
+       int_0x80$(EXEEXT) ioctl_block--pidns-translation$(EXEEXT) \
+       ioctl_dm-v$(EXEEXT) ioctl_evdev-success$(EXEEXT) \
+       ioctl_evdev-success-Xabbrev$(EXEEXT) \
+       ioctl_evdev-success-Xraw$(EXEEXT) \
+       ioctl_evdev-success-Xverbose$(EXEEXT) \
+       ioctl_evdev-success-v$(EXEEXT) \
+       ioctl_evdev-success-v-Xabbrev$(EXEEXT) \
+       ioctl_evdev-success-v-Xraw$(EXEEXT) \
+       ioctl_evdev-success-v-Xverbose$(EXEEXT) \
+       ioctl_hdio-success$(EXEEXT) \
+       ioctl_hdio-success-Xabbrev$(EXEEXT) \
+       ioctl_hdio-success-Xraw$(EXEEXT) \
+       ioctl_hdio-success-Xverbose$(EXEEXT) \
+       ioctl_hdio-success-v$(EXEEXT) \
+       ioctl_hdio-success-v-Xabbrev$(EXEEXT) \
+       ioctl_hdio-success-v-Xraw$(EXEEXT) \
+       ioctl_hdio-success-v-Xverbose$(EXEEXT) ioctl_loop-nv$(EXEEXT) \
        ioctl_loop-v$(EXEEXT) ioctl_nsfs$(EXEEXT) \
        ioctl_perf-success$(EXEEXT) ioctl_rtc-v$(EXEEXT) \
-       is_linux_mips_n64$(EXEEXT) kill_child$(EXEEXT) \
-       ksysent$(EXEEXT) list_sigaction_signum$(EXEEXT) \
-       localtime$(EXEEXT) looping_threads$(EXEEXT) \
-       mmsg-silent$(EXEEXT) mmsg_name-v$(EXEEXT) \
+       ioctl_v4l2-success$(EXEEXT) \
+       ioctl_v4l2-success-Xabbrev$(EXEEXT) \
+       ioctl_v4l2-success-Xraw$(EXEEXT) \
+       ioctl_v4l2-success-Xverbose$(EXEEXT) \
+       ioctl_v4l2-success-v$(EXEEXT) \
+       ioctl_v4l2-success-v-Xabbrev$(EXEEXT) \
+       ioctl_v4l2-success-v-Xraw$(EXEEXT) \
+       ioctl_v4l2-success-v-Xverbose$(EXEEXT) \
+       ioprio--pidns-translation$(EXEEXT) is_linux_mips_n64$(EXEEXT) \
+       kcmp-y--pidns-translation$(EXEEXT) kill_child$(EXEEXT) \
+       kill--pidns-translation$(EXEEXT) ksysent$(EXEEXT) \
+       list_sigaction_signum$(EXEEXT) localtime$(EXEEXT) \
+       looping_threads$(EXEEXT) \
+       migrate_pages--pidns-translation$(EXEEXT) mmsg-silent$(EXEEXT) \
+       mmsg_name-v$(EXEEXT) move_pages--pidns-translation$(EXEEXT) \
        msg_control-v$(EXEEXT) net-accept-connect$(EXEEXT) \
-       net-tpacket_stats-success$(EXEEXT) netlink_inet_diag$(EXEEXT) \
-       netlink_netlink_diag$(EXEEXT) netlink_unix_diag$(EXEEXT) \
-       nsyscalls$(EXEEXT) nsyscalls-d$(EXEEXT) oldselect-P$(EXEEXT) \
+       net-sockaddr--pidns-translation$(EXEEXT) \
+       net-tpacket_stats-success$(EXEEXT) nlattr_ifla_xdp-y$(EXEEXT) \
+       netlink_audit--pidns-translation$(EXEEXT) \
+       netlink_inet_diag$(EXEEXT) netlink_netlink_diag$(EXEEXT) \
+       netlink_unix_diag$(EXEEXT) nsyscalls$(EXEEXT) \
+       nsyscalls-d$(EXEEXT) oldselect-P$(EXEEXT) \
        oldselect-efault-P$(EXEEXT) orphaned_process_group$(EXEEXT) \
        pc$(EXEEXT) perf_event_open_nonverbose$(EXEEXT) \
-       perf_event_open_unabbrev$(EXEEXT) ppoll-v$(EXEEXT) \
+       perf_event_open_unabbrev$(EXEEXT) \
+       pidfd_open--pidns-translation$(EXEEXT) \
+       pidfd_send_signal--pidns-translation$(EXEEXT) \
+       pidns-cache$(EXEEXT) poll-P$(EXEEXT) ppoll-P$(EXEEXT) \
+       ppoll-v$(EXEEXT) prlimit64--pidns-translation$(EXEEXT) \
        prctl-seccomp-filter-v$(EXEEXT) prctl-seccomp-strict$(EXEEXT) \
        prctl-spec-inject$(EXEEXT) print_maxfd$(EXEEXT) \
+       print_ppid_tracerpid$(EXEEXT) \
+       process_vm_readv--pidns-translation$(EXEEXT) \
+       process_vm_writev--pidns-translation$(EXEEXT) \
        qual_fault$(EXEEXT) qual_inject-error-signal$(EXEEXT) \
        qual_inject-retval$(EXEEXT) qual_inject-signal$(EXEEXT) \
        qual_signal$(EXEEXT) quotactl-success$(EXEEXT) \
        quotactl-success-v$(EXEEXT) quotactl-v$(EXEEXT) \
        quotactl-xfs-success$(EXEEXT) quotactl-xfs-success-v$(EXEEXT) \
        quotactl-xfs-v$(EXEEXT) redirect-fds$(EXEEXT) \
-       restart_syscall$(EXEEXT) run_expect_termsig$(EXEEXT) \
+       restart_syscall$(EXEEXT) \
+       rt_sigqueueinfo--pidns-translation$(EXEEXT) \
+       rt_tgsigqueueinfo--pidns-translation$(EXEEXT) \
+       run_expect_termsig$(EXEEXT) \
+       sched_xetaffinity--pidns-translation$(EXEEXT) \
+       sched_xetattr--pidns-translation$(EXEEXT) \
+       sched_xetparam--pidns-translation$(EXEEXT) \
+       sched_xetscheduler--pidns-translation$(EXEEXT) \
        scm_rights$(EXEEXT) seccomp-filter-v$(EXEEXT) \
        seccomp-strict$(EXEEXT) select-P$(EXEEXT) \
        set_ptracer_any$(EXEEXT) set_sigblock$(EXEEXT) \
-       set_sigign$(EXEEXT) signal_receive$(EXEEXT) sleep$(EXEEXT) \
-       stack-fcall$(EXEEXT) stack-fcall-mangled$(EXEEXT) \
-       threads-execve$(EXEEXT) unblock_reset_raise$(EXEEXT) \
-       unix-pair-send-recv$(EXEEXT) \
+       set_sigign$(EXEEXT) setpgrp-exec$(EXEEXT) \
+       signal_receive$(EXEEXT) \
+       signal_receive--pidns-translation$(EXEEXT) sleep$(EXEEXT) \
+       stack-fcall$(EXEEXT) stack-fcall-attach$(EXEEXT) \
+       stack-fcall-mangled$(EXEEXT) status-none-threads$(EXEEXT) \
+       status-unfinished-threads$(EXEEXT) \
+       so_peercred--pidns-translation$(EXEEXT) \
+       syslog-success$(EXEEXT) tgkill--pidns-translation$(EXEEXT) \
+       threads-execve$(EXEEXT) \
+       threads-execve--quiet-thread-execve$(EXEEXT) \
+       threads-execve-q$(EXEEXT) threads-execve-qq$(EXEEXT) \
+       threads-execve-qqq$(EXEEXT) tkill--pidns-translation$(EXEEXT) \
+       tracer_ppid_pgid_sid$(EXEEXT) trie_test$(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)
+       wait4-v$(EXEEXT) waitid-v$(EXEEXT) \
+       xetpgid--pidns-translation$(EXEEXT) \
+       xetpriority--pidns-translation$(EXEEXT) \
+       xet_robust_list--pidns-translation$(EXEEXT) zeroargc$(EXEEXT)
 @ENABLE_STACKTRACE_TRUE@@USE_DEMANGLE_TRUE@am__append_1 = strace-k-demangle.test
 TESTS = $(GEN_TESTS) $(DECODER_TESTS) $(MISC_TESTS) $(am__EXEEXT_2)
 subdir = tests-m32
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_code_coverage.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/xlat/btrfs_compress_types.m4 \
+       $(top_srcdir)/xlat/close_range_flags.m4 \
+       $(top_srcdir)/xlat/loop_flags_options.m4 \
+       $(top_srcdir)/xlat/rtnl_ifla_xdp_attached_mode.m4 \
+       $(top_srcdir)/xlat/rtnl_ifla_xdp_attrs.m4 \
+       $(top_srcdir)/xlat/rtnl_link_attrs.m4 \
+       $(top_srcdir)/xlat/rtnl_tc_action_attrs.m4 \
+       $(top_srcdir)/xlat/rtnl_tca_stab_attrs.m4 \
+       $(top_srcdir)/xlat/rtnl_tca_stats_attrs.m4 \
+       $(top_srcdir)/xlat/st_check_enums.m4 \
+       $(top_srcdir)/xlat/sysctl_kern.m4 \
+       $(top_srcdir)/xlat/sysctl_net.m4 \
+       $(top_srcdir)/xlat/sysctl_net_core.m4 \
+       $(top_srcdir)/xlat/sysctl_net_ipv4.m4 \
+       $(top_srcdir)/xlat/sysctl_net_ipv4_conf.m4 \
+       $(top_srcdir)/xlat/sysctl_net_ipv4_route.m4 \
+       $(top_srcdir)/xlat/sysctl_net_ipv6.m4 \
+       $(top_srcdir)/xlat/sysctl_net_ipv6_route.m4 \
+       $(top_srcdir)/xlat/sysctl_net_unix.m4 \
+       $(top_srcdir)/xlat/sysctl_root.m4 \
+       $(top_srcdir)/xlat/sysctl_vm.m4 \
+       $(top_srcdir)/xlat/v4l2_buf_types.m4 \
+       $(top_srcdir)/xlat/v4l2_colorspaces.m4 \
+       $(top_srcdir)/xlat/v4l2_control_types.m4 \
+       $(top_srcdir)/xlat/v4l2_fields.m4 \
+       $(top_srcdir)/xlat/v4l2_framesize_types.m4 \
+       $(top_srcdir)/xlat/v4l2_memories.m4 \
+       $(top_srcdir)/xlat/v4l2_tuner_types.m4 \
+       $(top_srcdir)/xlat/waitid_types.m4 \
+       $(top_srcdir)/types/check-btrfs.m4 \
+       $(top_srcdir)/types/check-cryptouser.m4 \
+       $(top_srcdir)/types/check-evdev.m4 \
+       $(top_srcdir)/types/check-io_uring.m4 \
+       $(top_srcdir)/types/check-loop.m4 \
+       $(top_srcdir)/types/check-openat2.m4 \
+       $(top_srcdir)/types/check-rtnl_link.m4 \
+       $(top_srcdir)/types/check-rtnl_mdb.m4 \
+       $(top_srcdir)/types/check-rtnl_neightbl.m4 \
+       $(top_srcdir)/types/check-rtnl_route.m4 \
+       $(top_srcdir)/types/check-tee.m4 \
+       $(top_srcdir)/types/check-v4l2.m4 \
+       $(top_srcdir)/types/st_check_types.m4 \
+       $(top_srcdir)/m4/ax_code_coverage.m4 \
        $(top_srcdir)/m4/ax_prog_cc_for_build.m4 \
        $(top_srcdir)/m4/ax_valgrind_check.m4 \
        $(top_srcdir)/m4/bpf_attr.m4 $(top_srcdir)/m4/mpers.m4 \
-       $(top_srcdir)/m4/st_demangle.m4 $(top_srcdir)/m4/st_libdw.m4 \
+       $(top_srcdir)/m4/st_demangle.m4 \
+       $(top_srcdir)/m4/st_esyscmd_s.m4 $(top_srcdir)/m4/st_libdw.m4 \
        $(top_srcdir)/m4/st_libunwind.m4 \
        $(top_srcdir)/m4/st_save_restore_var.m4 \
        $(top_srcdir)/m4/st_stacktrace.m4 \
@@ -173,19 +287,27 @@ CONFIG_CLEAN_VPATH_FILES =
 am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \
        access$(EXEEXT) acct$(EXEEXT) add_key$(EXEEXT) \
        adjtimex$(EXEEXT) aio$(EXEEXT) aio_pgetevents$(EXEEXT) \
-       alarm$(EXEEXT) bpf$(EXEEXT) bpf-obj_get_info_by_fd$(EXEEXT) \
-       bpf-obj_get_info_by_fd-prog$(EXEEXT) \
-       bpf-obj_get_info_by_fd-prog-v$(EXEEXT) \
-       bpf-obj_get_info_by_fd-v$(EXEEXT) bpf-v$(EXEEXT) brk$(EXEEXT) \
+       alarm$(EXEEXT) bpf$(EXEEXT) bpf-v$(EXEEXT) brk$(EXEEXT) \
        btrfs$(EXEEXT) caps$(EXEEXT) chmod$(EXEEXT) chown$(EXEEXT) \
        chown32$(EXEEXT) chroot$(EXEEXT) clock_adjtime$(EXEEXT) \
        clock_nanosleep$(EXEEXT) clock_xettime$(EXEEXT) \
+       clone-flags$(EXEEXT) clone3$(EXEEXT) clone3-Xabbrev$(EXEEXT) \
+       clone3-Xraw$(EXEEXT) clone3-Xverbose$(EXEEXT) \
+       close_range$(EXEEXT) close_range-P$(EXEEXT) \
+       close_range-y$(EXEEXT) close_range-yy$(EXEEXT) \
        copy_file_range$(EXEEXT) creat$(EXEEXT) delete_module$(EXEEXT) \
-       dev-yy$(EXEEXT) dup$(EXEEXT) dup2$(EXEEXT) dup3$(EXEEXT) \
+       dev--decode-fds-dev$(EXEEXT) dev--decode-fds-path$(EXEEXT) \
+       dev--decode-fds-socket$(EXEEXT) dev-yy$(EXEEXT) dup$(EXEEXT) \
+       dup-P$(EXEEXT) dup-y$(EXEEXT) dup-yy$(EXEEXT) dup2$(EXEEXT) \
+       dup2-P$(EXEEXT) dup2-y$(EXEEXT) dup2-yy$(EXEEXT) dup3$(EXEEXT) \
+       dup3-P$(EXEEXT) dup3-y$(EXEEXT) dup3-yy$(EXEEXT) \
        epoll_create$(EXEEXT) epoll_create1$(EXEEXT) \
        epoll_ctl$(EXEEXT) epoll_pwait$(EXEEXT) epoll_wait$(EXEEXT) \
        erestartsys$(EXEEXT) eventfd$(EXEEXT) execve$(EXEEXT) \
-       execveat$(EXEEXT) faccessat$(EXEEXT) fadvise64$(EXEEXT) \
+       execveat$(EXEEXT) faccessat$(EXEEXT) faccessat-P$(EXEEXT) \
+       faccessat-y$(EXEEXT) faccessat-yy$(EXEEXT) faccessat2$(EXEEXT) \
+       faccessat2-P$(EXEEXT) faccessat2-y$(EXEEXT) \
+       faccessat2-yy$(EXEEXT) fadvise64$(EXEEXT) \
        fadvise64_64$(EXEEXT) fallocate$(EXEEXT) \
        fanotify_init$(EXEEXT) fanotify_mark$(EXEEXT) \
        fanotify_mark-Xabbrev$(EXEEXT) fanotify_mark-Xraw$(EXEEXT) \
@@ -194,37 +316,54 @@ am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \
        fchown32$(EXEEXT) fchownat$(EXEEXT) fcntl$(EXEEXT) \
        fcntl64$(EXEEXT) fdatasync$(EXEEXT) fflush$(EXEEXT) \
        file_handle$(EXEEXT) file_ioctl$(EXEEXT) finit_module$(EXEEXT) \
-       flock$(EXEEXT) fstat$(EXEEXT) fstat-Xabbrev$(EXEEXT) \
+       flock$(EXEEXT) fsconfig$(EXEEXT) fsconfig-P$(EXEEXT) \
+       fsmount$(EXEEXT) fsopen$(EXEEXT) fspick$(EXEEXT) \
+       fspick-P$(EXEEXT) fstat$(EXEEXT) fstat-Xabbrev$(EXEEXT) \
        fstat-Xraw$(EXEEXT) fstat-Xverbose$(EXEEXT) fstat64$(EXEEXT) \
        fstat64-Xabbrev$(EXEEXT) fstat64-Xraw$(EXEEXT) \
        fstat64-Xverbose$(EXEEXT) fstatat64$(EXEEXT) fstatfs$(EXEEXT) \
        fstatfs64$(EXEEXT) fsync$(EXEEXT) ftruncate$(EXEEXT) \
        ftruncate64$(EXEEXT) futex$(EXEEXT) futimesat$(EXEEXT) \
        get_mempolicy$(EXEEXT) getcpu$(EXEEXT) getcwd$(EXEEXT) \
-       getdents$(EXEEXT) getdents64$(EXEEXT) getegid$(EXEEXT) \
-       getegid32$(EXEEXT) geteuid$(EXEEXT) geteuid32$(EXEEXT) \
-       getgid$(EXEEXT) getgid32$(EXEEXT) getgroups$(EXEEXT) \
-       getgroups32$(EXEEXT) getpeername$(EXEEXT) getpgrp$(EXEEXT) \
-       getpid$(EXEEXT) getppid$(EXEEXT) getrandom$(EXEEXT) \
-       getresgid$(EXEEXT) getresgid32$(EXEEXT) getresuid$(EXEEXT) \
-       getresuid32$(EXEEXT) getrlimit$(EXEEXT) getrusage$(EXEEXT) \
-       getsid$(EXEEXT) getsockname$(EXEEXT) getuid$(EXEEXT) \
-       getuid32$(EXEEXT) getxxid$(EXEEXT) group_req$(EXEEXT) \
-       inet-cmsg$(EXEEXT) init_module$(EXEEXT) inotify$(EXEEXT) \
-       inotify_init1$(EXEEXT) io_uring_enter$(EXEEXT) \
-       io_uring_register$(EXEEXT) io_uring_setup$(EXEEXT) \
-       ioctl$(EXEEXT) ioctl_block$(EXEEXT) ioctl_dm$(EXEEXT) \
-       ioctl_evdev$(EXEEXT) ioctl_inotify$(EXEEXT) \
+       getdents$(EXEEXT) getdents-v$(EXEEXT) getdents64$(EXEEXT) \
+       getdents64-v$(EXEEXT) getegid$(EXEEXT) getegid32$(EXEEXT) \
+       geteuid$(EXEEXT) geteuid32$(EXEEXT) getgid$(EXEEXT) \
+       getgid32$(EXEEXT) getgroups$(EXEEXT) getgroups32$(EXEEXT) \
+       getpeername$(EXEEXT) getpgrp$(EXEEXT) getpid$(EXEEXT) \
+       getppid$(EXEEXT) getrandom$(EXEEXT) getresgid$(EXEEXT) \
+       getresgid32$(EXEEXT) getresuid$(EXEEXT) getresuid32$(EXEEXT) \
+       getrlimit$(EXEEXT) getrusage$(EXEEXT) getsid$(EXEEXT) \
+       getsockname$(EXEEXT) getuid$(EXEEXT) getuid32$(EXEEXT) \
+       getxgid$(EXEEXT) getxpid$(EXEEXT) getxuid$(EXEEXT) \
+       group_req$(EXEEXT) inet-cmsg$(EXEEXT) init_module$(EXEEXT) \
+       inotify$(EXEEXT) inotify_init$(EXEEXT) inotify_init-y$(EXEEXT) \
+       inotify_init1$(EXEEXT) inotify_init1-y$(EXEEXT) \
+       io_uring_enter$(EXEEXT) io_uring_register$(EXEEXT) \
+       io_uring_setup$(EXEEXT) ioctl$(EXEEXT) ioctl_block$(EXEEXT) \
+       ioctl_dm$(EXEEXT) ioctl_evdev$(EXEEXT) \
+       ioctl_evdev-Xabbrev$(EXEEXT) ioctl_evdev-Xraw$(EXEEXT) \
+       ioctl_evdev-Xverbose$(EXEEXT) ioctl_evdev-v$(EXEEXT) \
+       ioctl_evdev-v-Xabbrev$(EXEEXT) ioctl_evdev-v-Xraw$(EXEEXT) \
+       ioctl_evdev-v-Xverbose$(EXEEXT) ioctl_hdio$(EXEEXT) \
+       ioctl_hdio-Xabbrev$(EXEEXT) ioctl_hdio-Xraw$(EXEEXT) \
+       ioctl_hdio-Xverbose$(EXEEXT) ioctl_hdio-v$(EXEEXT) \
+       ioctl_hdio-v-Xabbrev$(EXEEXT) ioctl_hdio-v-Xraw$(EXEEXT) \
+       ioctl_hdio-v-Xverbose$(EXEEXT) ioctl_inotify$(EXEEXT) \
        ioctl_kvm_run$(EXEEXT) ioctl_kvm_run-v$(EXEEXT) \
        ioctl_kvm_run_auxstr_vcpu$(EXEEXT) ioctl_loop$(EXEEXT) \
        ioctl_mtd$(EXEEXT) ioctl_nbd$(EXEEXT) ioctl_perf$(EXEEXT) \
        ioctl_ptp$(EXEEXT) ioctl_random$(EXEEXT) ioctl_rtc$(EXEEXT) \
        ioctl_scsi$(EXEEXT) ioctl_sg_io_v3$(EXEEXT) \
        ioctl_sg_io_v4$(EXEEXT) ioctl_sock_gifconf$(EXEEXT) \
-       ioctl_uffdio$(EXEEXT) ioctl_v4l2$(EXEEXT) ioperm$(EXEEXT) \
-       iopl$(EXEEXT) ioprio$(EXEEXT) ioprio-Xabbrev$(EXEEXT) \
-       ioprio-Xraw$(EXEEXT) ioprio-Xverbose$(EXEEXT) ip_mreq$(EXEEXT) \
-       ipc$(EXEEXT) ipc_msg$(EXEEXT) ipc_msg-Xabbrev$(EXEEXT) \
+       ioctl_tee$(EXEEXT) ioctl_uffdio$(EXEEXT) ioctl_v4l2$(EXEEXT) \
+       ioctl_v4l2-Xabbrev$(EXEEXT) ioctl_v4l2-Xraw$(EXEEXT) \
+       ioctl_v4l2-Xverbose$(EXEEXT) ioctl_v4l2-v$(EXEEXT) \
+       ioctl_v4l2-v-Xabbrev$(EXEEXT) ioctl_v4l2-v-Xraw$(EXEEXT) \
+       ioctl_v4l2-v-Xverbose$(EXEEXT) ioctl_watchdog$(EXEEXT) \
+       ioperm$(EXEEXT) iopl$(EXEEXT) ioprio$(EXEEXT) \
+       ioprio-Xabbrev$(EXEEXT) ioprio-Xraw$(EXEEXT) \
+       ioprio-Xverbose$(EXEEXT) ip_mreq$(EXEEXT) ipc$(EXEEXT) \
+       ipc_msg$(EXEEXT) ipc_msg-Xabbrev$(EXEEXT) \
        ipc_msg-Xraw$(EXEEXT) ipc_msg-Xverbose$(EXEEXT) \
        ipc_msgbuf$(EXEEXT) ipc_msgbuf-Xabbrev$(EXEEXT) \
        ipc_msgbuf-Xraw$(EXEEXT) ipc_msgbuf-Xverbose$(EXEEXT) \
@@ -240,7 +379,10 @@ am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(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) \
+       madvise$(EXEEXT) maybe_switch_current_tcp$(EXEEXT) \
+       maybe_switch_current_tcp--quiet-thread-execve$(EXEEXT) \
+       mbind$(EXEEXT) mbind-Xabbrev$(EXEEXT) mbind-Xraw$(EXEEXT) \
+       mbind-Xverbose$(EXEEXT) membarrier$(EXEEXT) \
        memfd_create$(EXEEXT) memfd_create-Xabbrev$(EXEEXT) \
        memfd_create-Xraw$(EXEEXT) memfd_create-Xverbose$(EXEEXT) \
        migrate_pages$(EXEEXT) mincore$(EXEEXT) mkdir$(EXEEXT) \
@@ -251,14 +393,18 @@ am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \
        mmap64-Xraw$(EXEEXT) mmap64-Xverbose$(EXEEXT) mmsg$(EXEEXT) \
        mmsg_name$(EXEEXT) modify_ldt$(EXEEXT) mount$(EXEEXT) \
        mount-Xabbrev$(EXEEXT) mount-Xraw$(EXEEXT) \
-       mount-Xverbose$(EXEEXT) move_pages$(EXEEXT) \
+       mount-Xverbose$(EXEEXT) move_mount$(EXEEXT) \
+       move_mount-P$(EXEEXT) move_pages$(EXEEXT) \
        move_pages-Xabbrev$(EXEEXT) move_pages-Xraw$(EXEEXT) \
        move_pages-Xverbose$(EXEEXT) mq$(EXEEXT) mq_sendrecv$(EXEEXT) \
        mq_sendrecv-read$(EXEEXT) mq_sendrecv-write$(EXEEXT) \
        msg_control$(EXEEXT) msg_name$(EXEEXT) munlockall$(EXEEXT) \
-       nanosleep$(EXEEXT) net-icmp_filter$(EXEEXT) \
-       net-packet_mreq$(EXEEXT) net-packet_mreq-Xabbrev$(EXEEXT) \
-       net-packet_mreq-Xraw$(EXEEXT) \
+       nanosleep$(EXEEXT) net--decode-fds-dev-netlink$(EXEEXT) \
+       net--decode-fds-none-netlink$(EXEEXT) \
+       net--decode-fds-path-netlink$(EXEEXT) \
+       net--decode-fds-socket-netlink$(EXEEXT) \
+       net-icmp_filter$(EXEEXT) net-packet_mreq$(EXEEXT) \
+       net-packet_mreq-Xabbrev$(EXEEXT) net-packet_mreq-Xraw$(EXEEXT) \
        net-packet_mreq-Xverbose$(EXEEXT) net-sockaddr$(EXEEXT) \
        net-tpacket_req$(EXEEXT) net-tpacket_stats$(EXEEXT) \
        net-y-unix$(EXEEXT) net-yy-inet$(EXEEXT) net-yy-inet6$(EXEEXT) \
@@ -296,18 +442,28 @@ am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \
        old_mmap-Xraw$(EXEEXT) old_mmap-Xverbose$(EXEEXT) \
        old_mmap-v-none$(EXEEXT) oldfstat$(EXEEXT) oldlstat$(EXEEXT) \
        oldselect$(EXEEXT) oldselect-efault$(EXEEXT) oldstat$(EXEEXT) \
-       open$(EXEEXT) openat$(EXEEXT) osf_utimes$(EXEEXT) \
-       pause$(EXEEXT) perf_event_open$(EXEEXT) personality$(EXEEXT) \
-       personality-Xabbrev$(EXEEXT) personality-Xraw$(EXEEXT) \
-       personality-Xverbose$(EXEEXT) pidfd_send_signal$(EXEEXT) \
-       pipe$(EXEEXT) pipe2$(EXEEXT) pkey_alloc$(EXEEXT) \
-       pkey_free$(EXEEXT) pkey_mprotect$(EXEEXT) poll$(EXEEXT) \
-       poll-P$(EXEEXT) ppoll$(EXEEXT) ppoll-P$(EXEEXT) \
-       prctl-arg2-intptr$(EXEEXT) prctl-dumpable$(EXEEXT) \
-       prctl-name$(EXEEXT) prctl-no-args$(EXEEXT) \
-       prctl-pdeathsig$(EXEEXT) prctl-securebits$(EXEEXT) \
-       prctl-tid_address$(EXEEXT) prctl-tsc$(EXEEXT) \
-       pread64-pwrite64$(EXEEXT) preadv$(EXEEXT) \
+       open$(EXEEXT) open_tree$(EXEEXT) open_tree-P$(EXEEXT) \
+       openat$(EXEEXT) openat2$(EXEEXT) openat2-Xabbrev$(EXEEXT) \
+       openat2-Xraw$(EXEEXT) openat2-Xverbose$(EXEEXT) \
+       openat2-v$(EXEEXT) openat2-v-y$(EXEEXT) \
+       openat2-v-y-Xabbrev$(EXEEXT) openat2-v-y-Xraw$(EXEEXT) \
+       openat2-v-y-Xverbose$(EXEEXT) openat2-y$(EXEEXT) \
+       osf_utimes$(EXEEXT) pause$(EXEEXT) perf_event_open$(EXEEXT) \
+       personality$(EXEEXT) personality-Xabbrev$(EXEEXT) \
+       personality-Xraw$(EXEEXT) personality-Xverbose$(EXEEXT) \
+       pidfd_getfd$(EXEEXT) pidfd_getfd-y$(EXEEXT) \
+       pidfd_getfd-yy$(EXEEXT) pidfd_open$(EXEEXT) \
+       pidfd_open--decode-fd-path$(EXEEXT) \
+       pidfd_open--decode-fd-pidfd$(EXEEXT) \
+       pidfd_open--decode-fd-socket$(EXEEXT) pidfd_open-P$(EXEEXT) \
+       pidfd_open-y$(EXEEXT) pidfd_open-yy$(EXEEXT) \
+       pidfd_send_signal$(EXEEXT) pipe$(EXEEXT) pipe2$(EXEEXT) \
+       pkey_alloc$(EXEEXT) pkey_free$(EXEEXT) pkey_mprotect$(EXEEXT) \
+       poll$(EXEEXT) ppoll$(EXEEXT) prctl-arg2-intptr$(EXEEXT) \
+       prctl-dumpable$(EXEEXT) prctl-name$(EXEEXT) \
+       prctl-no-args$(EXEEXT) prctl-pdeathsig$(EXEEXT) \
+       prctl-securebits$(EXEEXT) prctl-tid_address$(EXEEXT) \
+       prctl-tsc$(EXEEXT) pread64-pwrite64$(EXEEXT) preadv$(EXEEXT) \
        preadv-pwritev$(EXEEXT) preadv2-pwritev2$(EXEEXT) \
        printpath-umovestr$(EXEEXT) \
        printpath-umovestr-peekdata$(EXEEXT) \
@@ -322,7 +478,8 @@ am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \
        quotactl-Xraw$(EXEEXT) quotactl-Xverbose$(EXEEXT) \
        quotactl-xfs$(EXEEXT) read-write$(EXEEXT) readahead$(EXEEXT) \
        readdir$(EXEEXT) readlink$(EXEEXT) readlinkat$(EXEEXT) \
-       readv$(EXEEXT) reboot$(EXEEXT) recvfrom$(EXEEXT) \
+       readv$(EXEEXT) reboot$(EXEEXT) recv-MSG_TRUNC$(EXEEXT) \
+       recvfrom$(EXEEXT) recvfrom-MSG_TRUNC$(EXEEXT) \
        recvmmsg-timeout$(EXEEXT) recvmsg$(EXEEXT) \
        remap_file_pages$(EXEEXT) remap_file_pages-Xabbrev$(EXEEXT) \
        remap_file_pages-Xraw$(EXEEXT) \
@@ -341,8 +498,10 @@ am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \
        sched_xetparam$(EXEEXT) sched_xetscheduler$(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) \
+       semop$(EXEEXT) semop-indirect$(EXEEXT) semtimedop$(EXEEXT) \
+       sendfile$(EXEEXT) sendfile64$(EXEEXT) set_mempolicy$(EXEEXT) \
+       set_mempolicy-Xabbrev$(EXEEXT) set_mempolicy-Xraw$(EXEEXT) \
+       set_mempolicy-Xverbose$(EXEEXT) setdomainname$(EXEEXT) \
        setfsgid$(EXEEXT) setfsgid32$(EXEEXT) setfsuid$(EXEEXT) \
        setfsuid32$(EXEEXT) setgid$(EXEEXT) setgid32$(EXEEXT) \
        setgroups$(EXEEXT) setgroups32$(EXEEXT) sethostname$(EXEEXT) \
@@ -364,27 +523,36 @@ am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \
        sockaddr_xlat-Xverbose$(EXEEXT) socketcall$(EXEEXT) \
        sockopt-sol_netlink$(EXEEXT) sockopt-timestamp$(EXEEXT) \
        splice$(EXEEXT) stat$(EXEEXT) stat64$(EXEEXT) statfs$(EXEEXT) \
-       statfs64$(EXEEXT) statx$(EXEEXT) swap$(EXEEXT) \
+       statfs64$(EXEEXT) status-all$(EXEEXT) status-failed$(EXEEXT) \
+       status-failed-long$(EXEEXT) status-failed-status$(EXEEXT) \
+       status-none$(EXEEXT) status-none-f$(EXEEXT) \
+       status-successful$(EXEEXT) status-successful-long$(EXEEXT) \
+       status-successful-status$(EXEEXT) status-unfinished$(EXEEXT) \
+       statx$(EXEEXT) strace--strings-in-hex$(EXEEXT) \
+       strace--strings-in-hex-all$(EXEEXT) \
+       strace--strings-in-hex-non-ascii$(EXEEXT) strace-n$(EXEEXT) \
+       strace-x$(EXEEXT) strace-xx$(EXEEXT) swap$(EXEEXT) \
        sxetmask$(EXEEXT) symlink$(EXEEXT) symlinkat$(EXEEXT) \
        sync$(EXEEXT) sync_file_range$(EXEEXT) \
        sync_file_range2$(EXEEXT) sysinfo$(EXEEXT) syslog$(EXEEXT) \
-       tee$(EXEEXT) time$(EXEEXT) timer_create$(EXEEXT) \
-       timer_xettime$(EXEEXT) timerfd_xettime$(EXEEXT) times$(EXEEXT) \
-       times-fail$(EXEEXT) truncate$(EXEEXT) truncate64$(EXEEXT) \
+       tee$(EXEEXT) tgkill$(EXEEXT) time$(EXEEXT) \
+       timer_create$(EXEEXT) timer_xettime$(EXEEXT) \
+       timerfd_xettime$(EXEEXT) times$(EXEEXT) times-fail$(EXEEXT) \
+       tkill$(EXEEXT) truncate$(EXEEXT) truncate64$(EXEEXT) \
        ugetrlimit$(EXEEXT) uio$(EXEEXT) umask$(EXEEXT) \
        umount$(EXEEXT) umount2$(EXEEXT) umoven-illptr$(EXEEXT) \
        umovestr$(EXEEXT) umovestr-illptr$(EXEEXT) umovestr2$(EXEEXT) \
-       umovestr3$(EXEEXT) uname$(EXEEXT) unlink$(EXEEXT) \
-       unlinkat$(EXEEXT) unshare$(EXEEXT) userfaultfd$(EXEEXT) \
-       ustat$(EXEEXT) utime$(EXEEXT) utimensat$(EXEEXT) \
-       utimensat-Xabbrev$(EXEEXT) utimensat-Xraw$(EXEEXT) \
-       utimensat-Xverbose$(EXEEXT) utimes$(EXEEXT) vhangup$(EXEEXT) \
-       vmsplice$(EXEEXT) wait4$(EXEEXT) waitid$(EXEEXT) \
-       waitpid$(EXEEXT) xattr$(EXEEXT) xattr-strings$(EXEEXT) \
-       xet_robust_list$(EXEEXT) xet_thread_area_x86$(EXEEXT) \
-       xetitimer$(EXEEXT) xetpgid$(EXEEXT) xetpriority$(EXEEXT) \
-       xettimeofday$(EXEEXT)
-AR = ar
+       umovestr3$(EXEEXT) umovestr_cached$(EXEEXT) \
+       umovestr_cached_adjacent$(EXEEXT) uname$(EXEEXT) \
+       unlink$(EXEEXT) unlinkat$(EXEEXT) unshare$(EXEEXT) \
+       userfaultfd$(EXEEXT) ustat$(EXEEXT) utime$(EXEEXT) \
+       utimensat$(EXEEXT) utimensat-Xabbrev$(EXEEXT) \
+       utimensat-Xraw$(EXEEXT) utimensat-Xverbose$(EXEEXT) \
+       utimes$(EXEEXT) vhangup$(EXEEXT) vmsplice$(EXEEXT) \
+       wait4$(EXEEXT) waitid$(EXEEXT) waitpid$(EXEEXT) xattr$(EXEEXT) \
+       xattr-strings$(EXEEXT) xet_robust_list$(EXEEXT) \
+       xet_thread_area_x86$(EXEEXT) xetitimer$(EXEEXT) \
+       xetpgid$(EXEEXT) xetpriority$(EXEEXT) xettimeofday$(EXEEXT)
 ARFLAGS = cru
 AM_V_AR = $(am__v_AR_@AM_V@)
 am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
@@ -393,6 +561,7 @@ am__v_AR_1 =
 libtests_a_AR = $(AR) $(ARFLAGS)
 libtests_a_LIBADD =
 am_libtests_a_OBJECTS = libtests_a-create_nl_socket.$(OBJEXT) \
+       libtests_a-create_tmpfile.$(OBJEXT) \
        libtests_a-errno2name.$(OBJEXT) libtests_a-error_msg.$(OBJEXT) \
        libtests_a-fill_memory.$(OBJEXT) \
        libtests_a-get_page_size.$(OBJEXT) \
@@ -403,17 +572,23 @@ am_libtests_a_OBJECTS = libtests_a-create_nl_socket.$(OBJEXT) \
        libtests_a-inode_of_sockfd.$(OBJEXT) \
        libtests_a-libmmsg.$(OBJEXT) \
        libtests_a-libsocketcall.$(OBJEXT) \
-       libtests_a-overflowuid.$(OBJEXT) \
+       libtests_a-lock_file.$(OBJEXT) \
+       libtests_a-overflowuid.$(OBJEXT) libtests_a-pidns.$(OBJEXT) \
        libtests_a-pipe_maxfd.$(OBJEXT) \
        libtests_a-print_quoted_string.$(OBJEXT) \
        libtests_a-print_time.$(OBJEXT) \
-       libtests_a-printflags.$(OBJEXT) libtests_a-printxval.$(OBJEXT) \
+       libtests_a-printflags.$(OBJEXT) \
+       libtests_a-printxval-Xabbrev.$(OBJEXT) \
+       libtests_a-printxval-Xraw.$(OBJEXT) \
+       libtests_a-printxval-Xverbose.$(OBJEXT) \
        libtests_a-signal2name.$(OBJEXT) \
        libtests_a-skip_unavailable.$(OBJEXT) \
-       libtests_a-sprintrc.$(OBJEXT) libtests_a-tail_alloc.$(OBJEXT) \
+       libtests_a-sprintrc.$(OBJEXT) libtests_a-status.$(OBJEXT) \
+       libtests_a-tail_alloc.$(OBJEXT) \
        libtests_a-test_printpath.$(OBJEXT) \
        libtests_a-test_printstrn.$(OBJEXT) \
-       libtests_a-test_ucopy.$(OBJEXT) libtests_a-tprintf.$(OBJEXT)
+       libtests_a-test_ucopy.$(OBJEXT) libtests_a-tprintf.$(OBJEXT) \
+       libtests_a-xmalloc_for_tests.$(OBJEXT)
 libtests_a_OBJECTS = $(am_libtests_a_OBJECTS)
 _newselect_SOURCES = _newselect.c
 _newselect_OBJECTS = _newselect.$(OBJEXT)
@@ -482,6 +657,10 @@ block_reset_raise_run_SOURCES = block_reset_raise_run.c
 block_reset_raise_run_OBJECTS = block_reset_raise_run.$(OBJEXT)
 block_reset_raise_run_LDADD = $(LDADD)
 block_reset_raise_run_DEPENDENCIES = libtests.a
+block_reset_run_SOURCES = block_reset_run.c
+block_reset_run_OBJECTS = block_reset_run.$(OBJEXT)
+block_reset_run_LDADD = $(LDADD)
+block_reset_run_DEPENDENCIES = libtests.a
 bpf_SOURCES = bpf.c
 bpf_OBJECTS = bpf.$(OBJEXT)
 bpf_LDADD = $(LDADD)
@@ -509,6 +688,10 @@ bpf_success_SOURCES = bpf-success.c
 bpf_success_OBJECTS = bpf-success.$(OBJEXT)
 bpf_success_LDADD = $(LDADD)
 bpf_success_DEPENDENCIES = libtests.a
+bpf_success_long_y_SOURCES = bpf-success-long-y.c
+bpf_success_long_y_OBJECTS = bpf-success-long-y.$(OBJEXT)
+bpf_success_long_y_LDADD = $(LDADD)
+bpf_success_long_y_DEPENDENCIES = libtests.a
 bpf_success_v_SOURCES = bpf-success-v.c
 bpf_success_v_OBJECTS = bpf-success-v.$(OBJEXT)
 bpf_success_v_LDADD = $(LDADD)
@@ -569,14 +752,95 @@ clock_xettime_SOURCES = clock_xettime.c
 clock_xettime_OBJECTS = clock_xettime.$(OBJEXT)
 clock_xettime_LDADD = $(LDADD)
 clock_xettime_DEPENDENCIES = libtests.a
+clone_flags_SOURCES = clone-flags.c
+clone_flags_OBJECTS = clone-flags.$(OBJEXT)
+clone_flags_LDADD = $(LDADD)
+clone_flags_DEPENDENCIES = libtests.a
+clone3_SOURCES = clone3.c
+clone3_OBJECTS = clone3.$(OBJEXT)
+clone3_LDADD = $(LDADD)
+clone3_DEPENDENCIES = libtests.a
+clone3_Xabbrev_SOURCES = clone3-Xabbrev.c
+clone3_Xabbrev_OBJECTS = clone3-Xabbrev.$(OBJEXT)
+clone3_Xabbrev_LDADD = $(LDADD)
+clone3_Xabbrev_DEPENDENCIES = libtests.a
+clone3_Xraw_SOURCES = clone3-Xraw.c
+clone3_Xraw_OBJECTS = clone3-Xraw.$(OBJEXT)
+clone3_Xraw_LDADD = $(LDADD)
+clone3_Xraw_DEPENDENCIES = libtests.a
+clone3_Xverbose_SOURCES = clone3-Xverbose.c
+clone3_Xverbose_OBJECTS = clone3-Xverbose.$(OBJEXT)
+clone3_Xverbose_LDADD = $(LDADD)
+clone3_Xverbose_DEPENDENCIES = libtests.a
+clone3_success_SOURCES = clone3-success.c
+clone3_success_OBJECTS = clone3-success.$(OBJEXT)
+clone3_success_LDADD = $(LDADD)
+clone3_success_DEPENDENCIES = libtests.a
+clone3_success_Xabbrev_SOURCES = clone3-success-Xabbrev.c
+clone3_success_Xabbrev_OBJECTS = clone3-success-Xabbrev.$(OBJEXT)
+clone3_success_Xabbrev_LDADD = $(LDADD)
+clone3_success_Xabbrev_DEPENDENCIES = libtests.a
+clone3_success_Xraw_SOURCES = clone3-success-Xraw.c
+clone3_success_Xraw_OBJECTS = clone3-success-Xraw.$(OBJEXT)
+clone3_success_Xraw_LDADD = $(LDADD)
+clone3_success_Xraw_DEPENDENCIES = libtests.a
+clone3_success_Xverbose_SOURCES = clone3-success-Xverbose.c
+clone3_success_Xverbose_OBJECTS = clone3-success-Xverbose.$(OBJEXT)
+clone3_success_Xverbose_LDADD = $(LDADD)
+clone3_success_Xverbose_DEPENDENCIES = libtests.a
 clone_parent_SOURCES = clone_parent.c
 clone_parent_OBJECTS = clone_parent.$(OBJEXT)
 clone_parent_LDADD = $(LDADD)
 clone_parent_DEPENDENCIES = libtests.a
+clone_parent__quiet_exit_SOURCES = clone_parent--quiet-exit.c
+clone_parent__quiet_exit_OBJECTS = clone_parent--quiet-exit.$(OBJEXT)
+clone_parent__quiet_exit_LDADD = $(LDADD)
+clone_parent__quiet_exit_DEPENDENCIES = libtests.a
+clone_parent_q_SOURCES = clone_parent-q.c
+clone_parent_q_OBJECTS = clone_parent-q.$(OBJEXT)
+clone_parent_q_LDADD = $(LDADD)
+clone_parent_q_DEPENDENCIES = libtests.a
+clone_parent_qq_SOURCES = clone_parent-qq.c
+clone_parent_qq_OBJECTS = clone_parent-qq.$(OBJEXT)
+clone_parent_qq_LDADD = $(LDADD)
+clone_parent_qq_DEPENDENCIES = libtests.a
 clone_ptrace_SOURCES = clone_ptrace.c
 clone_ptrace_OBJECTS = clone_ptrace.$(OBJEXT)
 clone_ptrace_LDADD = $(LDADD)
 clone_ptrace_DEPENDENCIES = libtests.a
+clone_ptrace__quiet_attach_SOURCES = clone_ptrace--quiet-attach.c
+clone_ptrace__quiet_attach_OBJECTS =  \
+       clone_ptrace--quiet-attach.$(OBJEXT)
+clone_ptrace__quiet_attach_LDADD = $(LDADD)
+clone_ptrace__quiet_attach_DEPENDENCIES = libtests.a
+clone_ptrace__quiet_exit_SOURCES = clone_ptrace--quiet-exit.c
+clone_ptrace__quiet_exit_OBJECTS = clone_ptrace--quiet-exit.$(OBJEXT)
+clone_ptrace__quiet_exit_LDADD = $(LDADD)
+clone_ptrace__quiet_exit_DEPENDENCIES = libtests.a
+clone_ptrace_q_SOURCES = clone_ptrace-q.c
+clone_ptrace_q_OBJECTS = clone_ptrace-q.$(OBJEXT)
+clone_ptrace_q_LDADD = $(LDADD)
+clone_ptrace_q_DEPENDENCIES = libtests.a
+clone_ptrace_qq_SOURCES = clone_ptrace-qq.c
+clone_ptrace_qq_OBJECTS = clone_ptrace-qq.$(OBJEXT)
+clone_ptrace_qq_LDADD = $(LDADD)
+clone_ptrace_qq_DEPENDENCIES = libtests.a
+close_range_SOURCES = close_range.c
+close_range_OBJECTS = close_range.$(OBJEXT)
+close_range_LDADD = $(LDADD)
+close_range_DEPENDENCIES = libtests.a
+close_range_P_SOURCES = close_range-P.c
+close_range_P_OBJECTS = close_range-P.$(OBJEXT)
+close_range_P_LDADD = $(LDADD)
+close_range_P_DEPENDENCIES = libtests.a
+close_range_y_SOURCES = close_range-y.c
+close_range_y_OBJECTS = close_range-y.$(OBJEXT)
+close_range_y_LDADD = $(LDADD)
+close_range_y_DEPENDENCIES = libtests.a
+close_range_yy_SOURCES = close_range-yy.c
+close_range_yy_OBJECTS = close_range-yy.$(OBJEXT)
+close_range_yy_LDADD = $(LDADD)
+close_range_yy_DEPENDENCIES = libtests.a
 copy_file_range_SOURCES = copy_file_range.c
 copy_file_range_OBJECTS = copy_file_range.$(OBJEXT)
 copy_file_range_LDADD = $(LDADD)
@@ -596,6 +860,18 @@ delete_module_SOURCES = delete_module.c
 delete_module_OBJECTS = delete_module.$(OBJEXT)
 delete_module_LDADD = $(LDADD)
 delete_module_DEPENDENCIES = libtests.a
+dev__decode_fds_dev_SOURCES = dev--decode-fds-dev.c
+dev__decode_fds_dev_OBJECTS = dev--decode-fds-dev.$(OBJEXT)
+dev__decode_fds_dev_LDADD = $(LDADD)
+dev__decode_fds_dev_DEPENDENCIES = libtests.a
+dev__decode_fds_path_SOURCES = dev--decode-fds-path.c
+dev__decode_fds_path_OBJECTS = dev--decode-fds-path.$(OBJEXT)
+dev__decode_fds_path_LDADD = $(LDADD)
+dev__decode_fds_path_DEPENDENCIES = libtests.a
+dev__decode_fds_socket_SOURCES = dev--decode-fds-socket.c
+dev__decode_fds_socket_OBJECTS = dev--decode-fds-socket.$(OBJEXT)
+dev__decode_fds_socket_LDADD = $(LDADD)
+dev__decode_fds_socket_DEPENDENCIES = libtests.a
 dev_yy_SOURCES = dev-yy.c
 dev_yy_OBJECTS = dev-yy.$(OBJEXT)
 dev_yy_LDADD = $(LDADD)
@@ -604,14 +880,50 @@ dup_SOURCES = dup.c
 dup_OBJECTS = dup.$(OBJEXT)
 dup_LDADD = $(LDADD)
 dup_DEPENDENCIES = libtests.a
+dup_P_SOURCES = dup-P.c
+dup_P_OBJECTS = dup-P.$(OBJEXT)
+dup_P_LDADD = $(LDADD)
+dup_P_DEPENDENCIES = libtests.a
+dup_y_SOURCES = dup-y.c
+dup_y_OBJECTS = dup-y.$(OBJEXT)
+dup_y_LDADD = $(LDADD)
+dup_y_DEPENDENCIES = libtests.a
+dup_yy_SOURCES = dup-yy.c
+dup_yy_OBJECTS = dup-yy.$(OBJEXT)
+dup_yy_LDADD = $(LDADD)
+dup_yy_DEPENDENCIES = libtests.a
 dup2_SOURCES = dup2.c
 dup2_OBJECTS = dup2.$(OBJEXT)
 dup2_LDADD = $(LDADD)
 dup2_DEPENDENCIES = libtests.a
+dup2_P_SOURCES = dup2-P.c
+dup2_P_OBJECTS = dup2-P.$(OBJEXT)
+dup2_P_LDADD = $(LDADD)
+dup2_P_DEPENDENCIES = libtests.a
+dup2_y_SOURCES = dup2-y.c
+dup2_y_OBJECTS = dup2-y.$(OBJEXT)
+dup2_y_LDADD = $(LDADD)
+dup2_y_DEPENDENCIES = libtests.a
+dup2_yy_SOURCES = dup2-yy.c
+dup2_yy_OBJECTS = dup2-yy.$(OBJEXT)
+dup2_yy_LDADD = $(LDADD)
+dup2_yy_DEPENDENCIES = libtests.a
 dup3_SOURCES = dup3.c
 dup3_OBJECTS = dup3.$(OBJEXT)
 dup3_LDADD = $(LDADD)
 dup3_DEPENDENCIES = libtests.a
+dup3_P_SOURCES = dup3-P.c
+dup3_P_OBJECTS = dup3-P.$(OBJEXT)
+dup3_P_LDADD = $(LDADD)
+dup3_P_DEPENDENCIES = libtests.a
+dup3_y_SOURCES = dup3-y.c
+dup3_y_OBJECTS = dup3-y.$(OBJEXT)
+dup3_y_LDADD = $(LDADD)
+dup3_y_DEPENDENCIES = libtests.a
+dup3_yy_SOURCES = dup3-yy.c
+dup3_yy_OBJECTS = dup3-yy.$(OBJEXT)
+dup3_yy_LDADD = $(LDADD)
+dup3_yy_DEPENDENCIES = libtests.a
 epoll_create_SOURCES = epoll_create.c
 epoll_create_OBJECTS = epoll_create.$(OBJEXT)
 epoll_create_LDADD = $(LDADD)
@@ -660,6 +972,34 @@ faccessat_SOURCES = faccessat.c
 faccessat_OBJECTS = faccessat.$(OBJEXT)
 faccessat_LDADD = $(LDADD)
 faccessat_DEPENDENCIES = libtests.a
+faccessat_P_SOURCES = faccessat-P.c
+faccessat_P_OBJECTS = faccessat-P.$(OBJEXT)
+faccessat_P_LDADD = $(LDADD)
+faccessat_P_DEPENDENCIES = libtests.a
+faccessat_y_SOURCES = faccessat-y.c
+faccessat_y_OBJECTS = faccessat-y.$(OBJEXT)
+faccessat_y_LDADD = $(LDADD)
+faccessat_y_DEPENDENCIES = libtests.a
+faccessat_yy_SOURCES = faccessat-yy.c
+faccessat_yy_OBJECTS = faccessat-yy.$(OBJEXT)
+faccessat_yy_LDADD = $(LDADD)
+faccessat_yy_DEPENDENCIES = libtests.a
+faccessat2_SOURCES = faccessat2.c
+faccessat2_OBJECTS = faccessat2.$(OBJEXT)
+faccessat2_LDADD = $(LDADD)
+faccessat2_DEPENDENCIES = libtests.a
+faccessat2_P_SOURCES = faccessat2-P.c
+faccessat2_P_OBJECTS = faccessat2-P.$(OBJEXT)
+faccessat2_P_LDADD = $(LDADD)
+faccessat2_P_DEPENDENCIES = libtests.a
+faccessat2_y_SOURCES = faccessat2-y.c
+faccessat2_y_OBJECTS = faccessat2-y.$(OBJEXT)
+faccessat2_y_LDADD = $(LDADD)
+faccessat2_y_DEPENDENCIES = libtests.a
+faccessat2_yy_SOURCES = faccessat2-yy.c
+faccessat2_yy_OBJECTS = faccessat2-yy.$(OBJEXT)
+faccessat2_yy_LDADD = $(LDADD)
+faccessat2_yy_DEPENDENCIES = libtests.a
 fadvise64_SOURCES = fadvise64.c
 fadvise64_OBJECTS = fadvise64.$(OBJEXT)
 fadvise64_LDADD = $(LDADD)
@@ -720,10 +1060,19 @@ fcntl_SOURCES = fcntl.c
 fcntl_OBJECTS = fcntl.$(OBJEXT)
 fcntl_LDADD = $(LDADD)
 fcntl_DEPENDENCIES = libtests.a
+fcntl__pidns_translation_SOURCES = fcntl--pidns-translation.c
+fcntl__pidns_translation_OBJECTS = fcntl--pidns-translation.$(OBJEXT)
+fcntl__pidns_translation_LDADD = $(LDADD)
+fcntl__pidns_translation_DEPENDENCIES = libtests.a
 fcntl64_SOURCES = fcntl64.c
 fcntl64_OBJECTS = fcntl64.$(OBJEXT)
 fcntl64_LDADD = $(LDADD)
 fcntl64_DEPENDENCIES = libtests.a
+fcntl64__pidns_translation_SOURCES = fcntl64--pidns-translation.c
+fcntl64__pidns_translation_OBJECTS =  \
+       fcntl64--pidns-translation.$(OBJEXT)
+fcntl64__pidns_translation_LDADD = $(LDADD)
+fcntl64__pidns_translation_DEPENDENCIES = libtests.a
 fdatasync_SOURCES = fdatasync.c
 fdatasync_OBJECTS = fdatasync.$(OBJEXT)
 fdatasync_LDADD = $(LDADD)
@@ -743,6 +1092,14 @@ file_ioctl_DEPENDENCIES = libtests.a
 filter_unavailable_SOURCES = filter-unavailable.c
 filter_unavailable_OBJECTS = filter-unavailable.$(OBJEXT)
 filter_unavailable_DEPENDENCIES = $(LDADD)
+filter_seccomp_flag_SOURCES = filter_seccomp-flag.c
+filter_seccomp_flag_OBJECTS = filter_seccomp-flag.$(OBJEXT)
+filter_seccomp_flag_LDADD = $(LDADD)
+filter_seccomp_flag_DEPENDENCIES = libtests.a
+filter_seccomp_perf_SOURCES = filter_seccomp-perf.c
+filter_seccomp_perf_OBJECTS = filter_seccomp-perf.$(OBJEXT)
+filter_seccomp_perf_LDADD = $(LDADD)
+filter_seccomp_perf_DEPENDENCIES = libtests.a
 finit_module_SOURCES = finit_module.c
 finit_module_OBJECTS = finit_module.$(OBJEXT)
 finit_module_LDADD = $(LDADD)
@@ -751,10 +1108,38 @@ flock_SOURCES = flock.c
 flock_OBJECTS = flock.$(OBJEXT)
 flock_LDADD = $(LDADD)
 flock_DEPENDENCIES = libtests.a
+fork__pidns_translation_SOURCES = fork--pidns-translation.c
+fork__pidns_translation_OBJECTS = fork--pidns-translation.$(OBJEXT)
+fork__pidns_translation_LDADD = $(LDADD)
+fork__pidns_translation_DEPENDENCIES = libtests.a
 fork_f_SOURCES = fork-f.c
 fork_f_OBJECTS = fork-f.$(OBJEXT)
 fork_f_LDADD = $(LDADD)
 fork_f_DEPENDENCIES = libtests.a
+fsconfig_SOURCES = fsconfig.c
+fsconfig_OBJECTS = fsconfig.$(OBJEXT)
+fsconfig_LDADD = $(LDADD)
+fsconfig_DEPENDENCIES = libtests.a
+fsconfig_P_SOURCES = fsconfig-P.c
+fsconfig_P_OBJECTS = fsconfig-P.$(OBJEXT)
+fsconfig_P_LDADD = $(LDADD)
+fsconfig_P_DEPENDENCIES = libtests.a
+fsmount_SOURCES = fsmount.c
+fsmount_OBJECTS = fsmount.$(OBJEXT)
+fsmount_LDADD = $(LDADD)
+fsmount_DEPENDENCIES = libtests.a
+fsopen_SOURCES = fsopen.c
+fsopen_OBJECTS = fsopen.$(OBJEXT)
+fsopen_LDADD = $(LDADD)
+fsopen_DEPENDENCIES = libtests.a
+fspick_SOURCES = fspick.c
+fspick_OBJECTS = fspick.$(OBJEXT)
+fspick_LDADD = $(LDADD)
+fspick_DEPENDENCIES = libtests.a
+fspick_P_SOURCES = fspick-P.c
+fspick_P_OBJECTS = fspick-P.$(OBJEXT)
+fspick_P_LDADD = $(LDADD)
+fspick_P_DEPENDENCIES = libtests.a
 fstat_SOURCES = fstat.c
 fstat_OBJECTS = fstat.$(OBJEXT)
 fstat_LDADD = $(LDADD)
@@ -827,6 +1212,10 @@ get_mempolicy_SOURCES = get_mempolicy.c
 get_mempolicy_OBJECTS = get_mempolicy.$(OBJEXT)
 get_mempolicy_LDADD = $(LDADD)
 get_mempolicy_DEPENDENCIES = libtests.a
+get_process_reaper_SOURCES = get_process_reaper.c
+get_process_reaper_OBJECTS = get_process_reaper.$(OBJEXT)
+get_process_reaper_LDADD = $(LDADD)
+get_process_reaper_DEPENDENCIES = libtests.a
 getcpu_SOURCES = getcpu.c
 getcpu_OBJECTS = getcpu.$(OBJEXT)
 getcpu_LDADD = $(LDADD)
@@ -839,10 +1228,18 @@ getdents_SOURCES = getdents.c
 getdents_OBJECTS = getdents.$(OBJEXT)
 getdents_LDADD = $(LDADD)
 getdents_DEPENDENCIES = libtests.a
+getdents_v_SOURCES = getdents-v.c
+getdents_v_OBJECTS = getdents-v.$(OBJEXT)
+getdents_v_LDADD = $(LDADD)
+getdents_v_DEPENDENCIES = libtests.a
 getdents64_SOURCES = getdents64.c
 getdents64_OBJECTS = getdents64.$(OBJEXT)
 getdents64_LDADD = $(LDADD)
 getdents64_DEPENDENCIES = libtests.a
+getdents64_v_SOURCES = getdents64-v.c
+getdents64_v_OBJECTS = getdents64-v.$(OBJEXT)
+getdents64_v_LDADD = $(LDADD)
+getdents64_v_DEPENDENCIES = libtests.a
 getegid_SOURCES = getegid.c
 getegid_OBJECTS = getegid.$(OBJEXT)
 getegid_LDADD = $(LDADD)
@@ -883,10 +1280,20 @@ getpgrp_SOURCES = getpgrp.c
 getpgrp_OBJECTS = getpgrp.$(OBJEXT)
 getpgrp_LDADD = $(LDADD)
 getpgrp_DEPENDENCIES = libtests.a
+getpgrp__pidns_translation_SOURCES = getpgrp--pidns-translation.c
+getpgrp__pidns_translation_OBJECTS =  \
+       getpgrp--pidns-translation.$(OBJEXT)
+getpgrp__pidns_translation_LDADD = $(LDADD)
+getpgrp__pidns_translation_DEPENDENCIES = libtests.a
 getpid_SOURCES = getpid.c
 getpid_OBJECTS = getpid.$(OBJEXT)
 getpid_LDADD = $(LDADD)
 getpid_DEPENDENCIES = libtests.a
+getpid__pidns_translation_SOURCES = getpid--pidns-translation.c
+getpid__pidns_translation_OBJECTS =  \
+       getpid--pidns-translation.$(OBJEXT)
+getpid__pidns_translation_LDADD = $(LDADD)
+getpid__pidns_translation_DEPENDENCIES = libtests.a
 getppid_SOURCES = getppid.c
 getppid_OBJECTS = getppid.$(OBJEXT)
 getppid_LDADD = $(LDADD)
@@ -923,6 +1330,11 @@ getsid_SOURCES = getsid.c
 getsid_OBJECTS = getsid.$(OBJEXT)
 getsid_LDADD = $(LDADD)
 getsid_DEPENDENCIES = libtests.a
+getsid__pidns_translation_SOURCES = getsid--pidns-translation.c
+getsid__pidns_translation_OBJECTS =  \
+       getsid--pidns-translation.$(OBJEXT)
+getsid__pidns_translation_LDADD = $(LDADD)
+getsid__pidns_translation_DEPENDENCIES = libtests.a
 getsockname_SOURCES = getsockname.c
 getsockname_OBJECTS = getsockname.$(OBJEXT)
 getsockname_LDADD = $(LDADD)
@@ -931,6 +1343,11 @@ gettid_SOURCES = gettid.c
 gettid_OBJECTS = gettid.$(OBJEXT)
 gettid_LDADD = $(LDADD)
 gettid_DEPENDENCIES = libtests.a
+gettid__pidns_translation_SOURCES = gettid--pidns-translation.c
+gettid__pidns_translation_OBJECTS =  \
+       gettid--pidns-translation.$(OBJEXT)
+gettid__pidns_translation_LDADD = $(LDADD)
+gettid__pidns_translation_DEPENDENCIES = libtests.a
 getuid_SOURCES = getuid.c
 getuid_OBJECTS = getuid.$(OBJEXT)
 getuid_LDADD = $(LDADD)
@@ -939,10 +1356,18 @@ getuid32_SOURCES = getuid32.c
 getuid32_OBJECTS = getuid32.$(OBJEXT)
 getuid32_LDADD = $(LDADD)
 getuid32_DEPENDENCIES = libtests.a
-getxxid_SOURCES = getxxid.c
-getxxid_OBJECTS = getxxid.$(OBJEXT)
-getxxid_LDADD = $(LDADD)
-getxxid_DEPENDENCIES = libtests.a
+getxgid_SOURCES = getxgid.c
+getxgid_OBJECTS = getxgid.$(OBJEXT)
+getxgid_LDADD = $(LDADD)
+getxgid_DEPENDENCIES = libtests.a
+getxpid_SOURCES = getxpid.c
+getxpid_OBJECTS = getxpid.$(OBJEXT)
+getxpid_LDADD = $(LDADD)
+getxpid_DEPENDENCIES = libtests.a
+getxuid_SOURCES = getxuid.c
+getxuid_OBJECTS = getxuid.$(OBJEXT)
+getxuid_LDADD = $(LDADD)
+getxuid_DEPENDENCIES = libtests.a
 group_req_SOURCES = group_req.c
 group_req_OBJECTS = group_req.$(OBJEXT)
 group_req_LDADD = $(LDADD)
@@ -963,10 +1388,22 @@ inotify_SOURCES = inotify.c
 inotify_OBJECTS = inotify.$(OBJEXT)
 inotify_LDADD = $(LDADD)
 inotify_DEPENDENCIES = libtests.a
+inotify_init_SOURCES = inotify_init.c
+inotify_init_OBJECTS = inotify_init.$(OBJEXT)
+inotify_init_LDADD = $(LDADD)
+inotify_init_DEPENDENCIES = libtests.a
+inotify_init_y_SOURCES = inotify_init-y.c
+inotify_init_y_OBJECTS = inotify_init-y.$(OBJEXT)
+inotify_init_y_LDADD = $(LDADD)
+inotify_init_y_DEPENDENCIES = libtests.a
 inotify_init1_SOURCES = inotify_init1.c
 inotify_init1_OBJECTS = inotify_init1.$(OBJEXT)
 inotify_init1_LDADD = $(LDADD)
 inotify_init1_DEPENDENCIES = libtests.a
+inotify_init1_y_SOURCES = inotify_init1-y.c
+inotify_init1_y_OBJECTS = inotify_init1-y.$(OBJEXT)
+inotify_init1_y_LDADD = $(LDADD)
+inotify_init1_y_DEPENDENCIES = libtests.a
 int_0x80_SOURCES = int_0x80.c
 int_0x80_OBJECTS = int_0x80.$(OBJEXT)
 int_0x80_LDADD = $(LDADD)
@@ -991,6 +1428,12 @@ ioctl_block_SOURCES = ioctl_block.c
 ioctl_block_OBJECTS = ioctl_block.$(OBJEXT)
 ioctl_block_LDADD = $(LDADD)
 ioctl_block_DEPENDENCIES = libtests.a
+ioctl_block__pidns_translation_SOURCES =  \
+       ioctl_block--pidns-translation.c
+ioctl_block__pidns_translation_OBJECTS =  \
+       ioctl_block--pidns-translation.$(OBJEXT)
+ioctl_block__pidns_translation_LDADD = $(LDADD)
+ioctl_block__pidns_translation_DEPENDENCIES = libtests.a
 ioctl_dm_SOURCES = ioctl_dm.c
 ioctl_dm_OBJECTS = ioctl_dm.$(OBJEXT)
 ioctl_dm_LDADD = $(LDADD)
@@ -1003,18 +1446,143 @@ ioctl_evdev_SOURCES = ioctl_evdev.c
 ioctl_evdev_OBJECTS = ioctl_evdev.$(OBJEXT)
 ioctl_evdev_LDADD = $(LDADD)
 ioctl_evdev_DEPENDENCIES = libtests.a
+ioctl_evdev_Xabbrev_SOURCES = ioctl_evdev-Xabbrev.c
+ioctl_evdev_Xabbrev_OBJECTS = ioctl_evdev-Xabbrev.$(OBJEXT)
+ioctl_evdev_Xabbrev_LDADD = $(LDADD)
+ioctl_evdev_Xabbrev_DEPENDENCIES = libtests.a
+ioctl_evdev_Xraw_SOURCES = ioctl_evdev-Xraw.c
+ioctl_evdev_Xraw_OBJECTS = ioctl_evdev-Xraw.$(OBJEXT)
+ioctl_evdev_Xraw_LDADD = $(LDADD)
+ioctl_evdev_Xraw_DEPENDENCIES = libtests.a
+ioctl_evdev_Xverbose_SOURCES = ioctl_evdev-Xverbose.c
+ioctl_evdev_Xverbose_OBJECTS = ioctl_evdev-Xverbose.$(OBJEXT)
+ioctl_evdev_Xverbose_LDADD = $(LDADD)
+ioctl_evdev_Xverbose_DEPENDENCIES = libtests.a
 ioctl_evdev_success_SOURCES = ioctl_evdev-success.c
 ioctl_evdev_success_OBJECTS = ioctl_evdev-success.$(OBJEXT)
 ioctl_evdev_success_LDADD = $(LDADD)
 ioctl_evdev_success_DEPENDENCIES = libtests.a
+ioctl_evdev_success_Xabbrev_SOURCES = ioctl_evdev-success-Xabbrev.c
+ioctl_evdev_success_Xabbrev_OBJECTS =  \
+       ioctl_evdev-success-Xabbrev.$(OBJEXT)
+ioctl_evdev_success_Xabbrev_LDADD = $(LDADD)
+ioctl_evdev_success_Xabbrev_DEPENDENCIES = libtests.a
+ioctl_evdev_success_Xraw_SOURCES = ioctl_evdev-success-Xraw.c
+ioctl_evdev_success_Xraw_OBJECTS = ioctl_evdev-success-Xraw.$(OBJEXT)
+ioctl_evdev_success_Xraw_LDADD = $(LDADD)
+ioctl_evdev_success_Xraw_DEPENDENCIES = libtests.a
+ioctl_evdev_success_Xverbose_SOURCES = ioctl_evdev-success-Xverbose.c
+ioctl_evdev_success_Xverbose_OBJECTS =  \
+       ioctl_evdev-success-Xverbose.$(OBJEXT)
+ioctl_evdev_success_Xverbose_LDADD = $(LDADD)
+ioctl_evdev_success_Xverbose_DEPENDENCIES = libtests.a
 ioctl_evdev_success_v_SOURCES = ioctl_evdev-success-v.c
 ioctl_evdev_success_v_OBJECTS = ioctl_evdev-success-v.$(OBJEXT)
 ioctl_evdev_success_v_LDADD = $(LDADD)
 ioctl_evdev_success_v_DEPENDENCIES = libtests.a
+ioctl_evdev_success_v_Xabbrev_SOURCES =  \
+       ioctl_evdev-success-v-Xabbrev.c
+ioctl_evdev_success_v_Xabbrev_OBJECTS =  \
+       ioctl_evdev-success-v-Xabbrev.$(OBJEXT)
+ioctl_evdev_success_v_Xabbrev_LDADD = $(LDADD)
+ioctl_evdev_success_v_Xabbrev_DEPENDENCIES = libtests.a
+ioctl_evdev_success_v_Xraw_SOURCES = ioctl_evdev-success-v-Xraw.c
+ioctl_evdev_success_v_Xraw_OBJECTS =  \
+       ioctl_evdev-success-v-Xraw.$(OBJEXT)
+ioctl_evdev_success_v_Xraw_LDADD = $(LDADD)
+ioctl_evdev_success_v_Xraw_DEPENDENCIES = libtests.a
+ioctl_evdev_success_v_Xverbose_SOURCES =  \
+       ioctl_evdev-success-v-Xverbose.c
+ioctl_evdev_success_v_Xverbose_OBJECTS =  \
+       ioctl_evdev-success-v-Xverbose.$(OBJEXT)
+ioctl_evdev_success_v_Xverbose_LDADD = $(LDADD)
+ioctl_evdev_success_v_Xverbose_DEPENDENCIES = libtests.a
 ioctl_evdev_v_SOURCES = ioctl_evdev-v.c
 ioctl_evdev_v_OBJECTS = ioctl_evdev-v.$(OBJEXT)
 ioctl_evdev_v_LDADD = $(LDADD)
 ioctl_evdev_v_DEPENDENCIES = libtests.a
+ioctl_evdev_v_Xabbrev_SOURCES = ioctl_evdev-v-Xabbrev.c
+ioctl_evdev_v_Xabbrev_OBJECTS = ioctl_evdev-v-Xabbrev.$(OBJEXT)
+ioctl_evdev_v_Xabbrev_LDADD = $(LDADD)
+ioctl_evdev_v_Xabbrev_DEPENDENCIES = libtests.a
+ioctl_evdev_v_Xraw_SOURCES = ioctl_evdev-v-Xraw.c
+ioctl_evdev_v_Xraw_OBJECTS = ioctl_evdev-v-Xraw.$(OBJEXT)
+ioctl_evdev_v_Xraw_LDADD = $(LDADD)
+ioctl_evdev_v_Xraw_DEPENDENCIES = libtests.a
+ioctl_evdev_v_Xverbose_SOURCES = ioctl_evdev-v-Xverbose.c
+ioctl_evdev_v_Xverbose_OBJECTS = ioctl_evdev-v-Xverbose.$(OBJEXT)
+ioctl_evdev_v_Xverbose_LDADD = $(LDADD)
+ioctl_evdev_v_Xverbose_DEPENDENCIES = libtests.a
+ioctl_hdio_SOURCES = ioctl_hdio.c
+ioctl_hdio_OBJECTS = ioctl_hdio.$(OBJEXT)
+ioctl_hdio_LDADD = $(LDADD)
+ioctl_hdio_DEPENDENCIES = libtests.a
+ioctl_hdio_Xabbrev_SOURCES = ioctl_hdio-Xabbrev.c
+ioctl_hdio_Xabbrev_OBJECTS = ioctl_hdio-Xabbrev.$(OBJEXT)
+ioctl_hdio_Xabbrev_LDADD = $(LDADD)
+ioctl_hdio_Xabbrev_DEPENDENCIES = libtests.a
+ioctl_hdio_Xraw_SOURCES = ioctl_hdio-Xraw.c
+ioctl_hdio_Xraw_OBJECTS = ioctl_hdio-Xraw.$(OBJEXT)
+ioctl_hdio_Xraw_LDADD = $(LDADD)
+ioctl_hdio_Xraw_DEPENDENCIES = libtests.a
+ioctl_hdio_Xverbose_SOURCES = ioctl_hdio-Xverbose.c
+ioctl_hdio_Xverbose_OBJECTS = ioctl_hdio-Xverbose.$(OBJEXT)
+ioctl_hdio_Xverbose_LDADD = $(LDADD)
+ioctl_hdio_Xverbose_DEPENDENCIES = libtests.a
+ioctl_hdio_success_SOURCES = ioctl_hdio-success.c
+ioctl_hdio_success_OBJECTS = ioctl_hdio-success.$(OBJEXT)
+ioctl_hdio_success_LDADD = $(LDADD)
+ioctl_hdio_success_DEPENDENCIES = libtests.a
+ioctl_hdio_success_Xabbrev_SOURCES = ioctl_hdio-success-Xabbrev.c
+ioctl_hdio_success_Xabbrev_OBJECTS =  \
+       ioctl_hdio-success-Xabbrev.$(OBJEXT)
+ioctl_hdio_success_Xabbrev_LDADD = $(LDADD)
+ioctl_hdio_success_Xabbrev_DEPENDENCIES = libtests.a
+ioctl_hdio_success_Xraw_SOURCES = ioctl_hdio-success-Xraw.c
+ioctl_hdio_success_Xraw_OBJECTS = ioctl_hdio-success-Xraw.$(OBJEXT)
+ioctl_hdio_success_Xraw_LDADD = $(LDADD)
+ioctl_hdio_success_Xraw_DEPENDENCIES = libtests.a
+ioctl_hdio_success_Xverbose_SOURCES = ioctl_hdio-success-Xverbose.c
+ioctl_hdio_success_Xverbose_OBJECTS =  \
+       ioctl_hdio-success-Xverbose.$(OBJEXT)
+ioctl_hdio_success_Xverbose_LDADD = $(LDADD)
+ioctl_hdio_success_Xverbose_DEPENDENCIES = libtests.a
+ioctl_hdio_success_v_SOURCES = ioctl_hdio-success-v.c
+ioctl_hdio_success_v_OBJECTS = ioctl_hdio-success-v.$(OBJEXT)
+ioctl_hdio_success_v_LDADD = $(LDADD)
+ioctl_hdio_success_v_DEPENDENCIES = libtests.a
+ioctl_hdio_success_v_Xabbrev_SOURCES = ioctl_hdio-success-v-Xabbrev.c
+ioctl_hdio_success_v_Xabbrev_OBJECTS =  \
+       ioctl_hdio-success-v-Xabbrev.$(OBJEXT)
+ioctl_hdio_success_v_Xabbrev_LDADD = $(LDADD)
+ioctl_hdio_success_v_Xabbrev_DEPENDENCIES = libtests.a
+ioctl_hdio_success_v_Xraw_SOURCES = ioctl_hdio-success-v-Xraw.c
+ioctl_hdio_success_v_Xraw_OBJECTS =  \
+       ioctl_hdio-success-v-Xraw.$(OBJEXT)
+ioctl_hdio_success_v_Xraw_LDADD = $(LDADD)
+ioctl_hdio_success_v_Xraw_DEPENDENCIES = libtests.a
+ioctl_hdio_success_v_Xverbose_SOURCES =  \
+       ioctl_hdio-success-v-Xverbose.c
+ioctl_hdio_success_v_Xverbose_OBJECTS =  \
+       ioctl_hdio-success-v-Xverbose.$(OBJEXT)
+ioctl_hdio_success_v_Xverbose_LDADD = $(LDADD)
+ioctl_hdio_success_v_Xverbose_DEPENDENCIES = libtests.a
+ioctl_hdio_v_SOURCES = ioctl_hdio-v.c
+ioctl_hdio_v_OBJECTS = ioctl_hdio-v.$(OBJEXT)
+ioctl_hdio_v_LDADD = $(LDADD)
+ioctl_hdio_v_DEPENDENCIES = libtests.a
+ioctl_hdio_v_Xabbrev_SOURCES = ioctl_hdio-v-Xabbrev.c
+ioctl_hdio_v_Xabbrev_OBJECTS = ioctl_hdio-v-Xabbrev.$(OBJEXT)
+ioctl_hdio_v_Xabbrev_LDADD = $(LDADD)
+ioctl_hdio_v_Xabbrev_DEPENDENCIES = libtests.a
+ioctl_hdio_v_Xraw_SOURCES = ioctl_hdio-v-Xraw.c
+ioctl_hdio_v_Xraw_OBJECTS = ioctl_hdio-v-Xraw.$(OBJEXT)
+ioctl_hdio_v_Xraw_LDADD = $(LDADD)
+ioctl_hdio_v_Xraw_DEPENDENCIES = libtests.a
+ioctl_hdio_v_Xverbose_SOURCES = ioctl_hdio-v-Xverbose.c
+ioctl_hdio_v_Xverbose_OBJECTS = ioctl_hdio-v-Xverbose.$(OBJEXT)
+ioctl_hdio_v_Xverbose_LDADD = $(LDADD)
+ioctl_hdio_v_Xverbose_DEPENDENCIES = libtests.a
 ioctl_inotify_SOURCES = ioctl_inotify.c
 ioctl_inotify_OBJECTS = ioctl_inotify.$(OBJEXT)
 ioctl_inotify_LDADD = $(LDADD)
@@ -1096,6 +1664,10 @@ ioctl_sock_gifconf_SOURCES = ioctl_sock_gifconf.c
 ioctl_sock_gifconf_OBJECTS = ioctl_sock_gifconf.$(OBJEXT)
 ioctl_sock_gifconf_LDADD = $(LDADD)
 ioctl_sock_gifconf_DEPENDENCIES = libtests.a
+ioctl_tee_SOURCES = ioctl_tee.c
+ioctl_tee_OBJECTS = ioctl_tee.$(OBJEXT)
+ioctl_tee_LDADD = $(LDADD)
+ioctl_tee_DEPENDENCIES = libtests.a
 ioctl_uffdio_SOURCES = ioctl_uffdio.c
 ioctl_uffdio_OBJECTS = ioctl_uffdio.$(OBJEXT)
 ioctl_uffdio_LDADD = $(LDADD)
@@ -1104,6 +1676,76 @@ ioctl_v4l2_SOURCES = ioctl_v4l2.c
 ioctl_v4l2_OBJECTS = ioctl_v4l2.$(OBJEXT)
 ioctl_v4l2_LDADD = $(LDADD)
 ioctl_v4l2_DEPENDENCIES = libtests.a
+ioctl_v4l2_Xabbrev_SOURCES = ioctl_v4l2-Xabbrev.c
+ioctl_v4l2_Xabbrev_OBJECTS = ioctl_v4l2-Xabbrev.$(OBJEXT)
+ioctl_v4l2_Xabbrev_LDADD = $(LDADD)
+ioctl_v4l2_Xabbrev_DEPENDENCIES = libtests.a
+ioctl_v4l2_Xraw_SOURCES = ioctl_v4l2-Xraw.c
+ioctl_v4l2_Xraw_OBJECTS = ioctl_v4l2-Xraw.$(OBJEXT)
+ioctl_v4l2_Xraw_LDADD = $(LDADD)
+ioctl_v4l2_Xraw_DEPENDENCIES = libtests.a
+ioctl_v4l2_Xverbose_SOURCES = ioctl_v4l2-Xverbose.c
+ioctl_v4l2_Xverbose_OBJECTS = ioctl_v4l2-Xverbose.$(OBJEXT)
+ioctl_v4l2_Xverbose_LDADD = $(LDADD)
+ioctl_v4l2_Xverbose_DEPENDENCIES = libtests.a
+ioctl_v4l2_success_SOURCES = ioctl_v4l2-success.c
+ioctl_v4l2_success_OBJECTS = ioctl_v4l2-success.$(OBJEXT)
+ioctl_v4l2_success_LDADD = $(LDADD)
+ioctl_v4l2_success_DEPENDENCIES = libtests.a
+ioctl_v4l2_success_Xabbrev_SOURCES = ioctl_v4l2-success-Xabbrev.c
+ioctl_v4l2_success_Xabbrev_OBJECTS =  \
+       ioctl_v4l2-success-Xabbrev.$(OBJEXT)
+ioctl_v4l2_success_Xabbrev_LDADD = $(LDADD)
+ioctl_v4l2_success_Xabbrev_DEPENDENCIES = libtests.a
+ioctl_v4l2_success_Xraw_SOURCES = ioctl_v4l2-success-Xraw.c
+ioctl_v4l2_success_Xraw_OBJECTS = ioctl_v4l2-success-Xraw.$(OBJEXT)
+ioctl_v4l2_success_Xraw_LDADD = $(LDADD)
+ioctl_v4l2_success_Xraw_DEPENDENCIES = libtests.a
+ioctl_v4l2_success_Xverbose_SOURCES = ioctl_v4l2-success-Xverbose.c
+ioctl_v4l2_success_Xverbose_OBJECTS =  \
+       ioctl_v4l2-success-Xverbose.$(OBJEXT)
+ioctl_v4l2_success_Xverbose_LDADD = $(LDADD)
+ioctl_v4l2_success_Xverbose_DEPENDENCIES = libtests.a
+ioctl_v4l2_success_v_SOURCES = ioctl_v4l2-success-v.c
+ioctl_v4l2_success_v_OBJECTS = ioctl_v4l2-success-v.$(OBJEXT)
+ioctl_v4l2_success_v_LDADD = $(LDADD)
+ioctl_v4l2_success_v_DEPENDENCIES = libtests.a
+ioctl_v4l2_success_v_Xabbrev_SOURCES = ioctl_v4l2-success-v-Xabbrev.c
+ioctl_v4l2_success_v_Xabbrev_OBJECTS =  \
+       ioctl_v4l2-success-v-Xabbrev.$(OBJEXT)
+ioctl_v4l2_success_v_Xabbrev_LDADD = $(LDADD)
+ioctl_v4l2_success_v_Xabbrev_DEPENDENCIES = libtests.a
+ioctl_v4l2_success_v_Xraw_SOURCES = ioctl_v4l2-success-v-Xraw.c
+ioctl_v4l2_success_v_Xraw_OBJECTS =  \
+       ioctl_v4l2-success-v-Xraw.$(OBJEXT)
+ioctl_v4l2_success_v_Xraw_LDADD = $(LDADD)
+ioctl_v4l2_success_v_Xraw_DEPENDENCIES = libtests.a
+ioctl_v4l2_success_v_Xverbose_SOURCES =  \
+       ioctl_v4l2-success-v-Xverbose.c
+ioctl_v4l2_success_v_Xverbose_OBJECTS =  \
+       ioctl_v4l2-success-v-Xverbose.$(OBJEXT)
+ioctl_v4l2_success_v_Xverbose_LDADD = $(LDADD)
+ioctl_v4l2_success_v_Xverbose_DEPENDENCIES = libtests.a
+ioctl_v4l2_v_SOURCES = ioctl_v4l2-v.c
+ioctl_v4l2_v_OBJECTS = ioctl_v4l2-v.$(OBJEXT)
+ioctl_v4l2_v_LDADD = $(LDADD)
+ioctl_v4l2_v_DEPENDENCIES = libtests.a
+ioctl_v4l2_v_Xabbrev_SOURCES = ioctl_v4l2-v-Xabbrev.c
+ioctl_v4l2_v_Xabbrev_OBJECTS = ioctl_v4l2-v-Xabbrev.$(OBJEXT)
+ioctl_v4l2_v_Xabbrev_LDADD = $(LDADD)
+ioctl_v4l2_v_Xabbrev_DEPENDENCIES = libtests.a
+ioctl_v4l2_v_Xraw_SOURCES = ioctl_v4l2-v-Xraw.c
+ioctl_v4l2_v_Xraw_OBJECTS = ioctl_v4l2-v-Xraw.$(OBJEXT)
+ioctl_v4l2_v_Xraw_LDADD = $(LDADD)
+ioctl_v4l2_v_Xraw_DEPENDENCIES = libtests.a
+ioctl_v4l2_v_Xverbose_SOURCES = ioctl_v4l2-v-Xverbose.c
+ioctl_v4l2_v_Xverbose_OBJECTS = ioctl_v4l2-v-Xverbose.$(OBJEXT)
+ioctl_v4l2_v_Xverbose_LDADD = $(LDADD)
+ioctl_v4l2_v_Xverbose_DEPENDENCIES = libtests.a
+ioctl_watchdog_SOURCES = ioctl_watchdog.c
+ioctl_watchdog_OBJECTS = ioctl_watchdog.$(OBJEXT)
+ioctl_watchdog_LDADD = $(LDADD)
+ioctl_watchdog_DEPENDENCIES = libtests.a
 ioperm_SOURCES = ioperm.c
 ioperm_OBJECTS = ioperm.$(OBJEXT)
 ioperm_LDADD = $(LDADD)
@@ -1116,6 +1758,11 @@ ioprio_SOURCES = ioprio.c
 ioprio_OBJECTS = ioprio.$(OBJEXT)
 ioprio_LDADD = $(LDADD)
 ioprio_DEPENDENCIES = libtests.a
+ioprio__pidns_translation_SOURCES = ioprio--pidns-translation.c
+ioprio__pidns_translation_OBJECTS =  \
+       ioprio--pidns-translation.$(OBJEXT)
+ioprio__pidns_translation_LDADD = $(LDADD)
+ioprio__pidns_translation_DEPENDENCIES = libtests.a
 ioprio_Xabbrev_SOURCES = ioprio-Xabbrev.c
 ioprio_Xabbrev_OBJECTS = ioprio-Xabbrev.$(OBJEXT)
 ioprio_Xabbrev_LDADD = $(LDADD)
@@ -1212,6 +1859,11 @@ kcmp_y_SOURCES = kcmp-y.c
 kcmp_y_OBJECTS = kcmp-y.$(OBJEXT)
 kcmp_y_LDADD = $(LDADD)
 kcmp_y_DEPENDENCIES = libtests.a
+kcmp_y__pidns_translation_SOURCES = kcmp-y--pidns-translation.c
+kcmp_y__pidns_translation_OBJECTS =  \
+       kcmp-y--pidns-translation.$(OBJEXT)
+kcmp_y__pidns_translation_LDADD = $(LDADD)
+kcmp_y__pidns_translation_DEPENDENCIES = libtests.a
 kern_features_SOURCES = kern_features.c
 kern_features_OBJECTS = kern_features.$(OBJEXT)
 kern_features_LDADD = $(LDADD)
@@ -1260,6 +1912,10 @@ kill_SOURCES = kill.c
 kill_OBJECTS = kill.$(OBJEXT)
 kill_LDADD = $(LDADD)
 kill_DEPENDENCIES = libtests.a
+kill__pidns_translation_SOURCES = kill--pidns-translation.c
+kill__pidns_translation_OBJECTS = kill--pidns-translation.$(OBJEXT)
+kill__pidns_translation_LDADD = $(LDADD)
+kill__pidns_translation_DEPENDENCIES = libtests.a
 kill_child_SOURCES = kill_child.c
 kill_child_OBJECTS = kill_child.$(OBJEXT)
 kill_child_LDADD = $(LDADD)
@@ -1318,10 +1974,30 @@ madvise_SOURCES = madvise.c
 madvise_OBJECTS = madvise.$(OBJEXT)
 madvise_LDADD = $(LDADD)
 madvise_DEPENDENCIES = libtests.a
+maybe_switch_current_tcp_SOURCES = maybe_switch_current_tcp.c
+maybe_switch_current_tcp_OBJECTS = maybe_switch_current_tcp.$(OBJEXT)
+maybe_switch_current_tcp_DEPENDENCIES = $(LDADD)
+maybe_switch_current_tcp__quiet_thread_execve_SOURCES =  \
+       maybe_switch_current_tcp--quiet-thread-execve.c
+maybe_switch_current_tcp__quiet_thread_execve_OBJECTS =  \
+       maybe_switch_current_tcp--quiet-thread-execve.$(OBJEXT)
+maybe_switch_current_tcp__quiet_thread_execve_DEPENDENCIES = $(LDADD)
 mbind_SOURCES = mbind.c
 mbind_OBJECTS = mbind.$(OBJEXT)
 mbind_LDADD = $(LDADD)
 mbind_DEPENDENCIES = libtests.a
+mbind_Xabbrev_SOURCES = mbind-Xabbrev.c
+mbind_Xabbrev_OBJECTS = mbind-Xabbrev.$(OBJEXT)
+mbind_Xabbrev_LDADD = $(LDADD)
+mbind_Xabbrev_DEPENDENCIES = libtests.a
+mbind_Xraw_SOURCES = mbind-Xraw.c
+mbind_Xraw_OBJECTS = mbind-Xraw.$(OBJEXT)
+mbind_Xraw_LDADD = $(LDADD)
+mbind_Xraw_DEPENDENCIES = libtests.a
+mbind_Xverbose_SOURCES = mbind-Xverbose.c
+mbind_Xverbose_OBJECTS = mbind-Xverbose.$(OBJEXT)
+mbind_Xverbose_LDADD = $(LDADD)
+mbind_Xverbose_DEPENDENCIES = libtests.a
 membarrier_SOURCES = membarrier.c
 membarrier_OBJECTS = membarrier.$(OBJEXT)
 membarrier_LDADD = $(LDADD)
@@ -1346,6 +2022,12 @@ migrate_pages_SOURCES = migrate_pages.c
 migrate_pages_OBJECTS = migrate_pages.$(OBJEXT)
 migrate_pages_LDADD = $(LDADD)
 migrate_pages_DEPENDENCIES = libtests.a
+migrate_pages__pidns_translation_SOURCES =  \
+       migrate_pages--pidns-translation.c
+migrate_pages__pidns_translation_OBJECTS =  \
+       migrate_pages--pidns-translation.$(OBJEXT)
+migrate_pages__pidns_translation_LDADD = $(LDADD)
+migrate_pages__pidns_translation_DEPENDENCIES = libtests.a
 mincore_SOURCES = mincore.c
 mincore_OBJECTS = mincore.$(OBJEXT)
 mincore_LDADD = $(LDADD)
@@ -1446,10 +2128,24 @@ mount_Xverbose_SOURCES = mount-Xverbose.c
 mount_Xverbose_OBJECTS = mount-Xverbose.$(OBJEXT)
 mount_Xverbose_LDADD = $(LDADD)
 mount_Xverbose_DEPENDENCIES = libtests.a
+move_mount_SOURCES = move_mount.c
+move_mount_OBJECTS = move_mount.$(OBJEXT)
+move_mount_LDADD = $(LDADD)
+move_mount_DEPENDENCIES = libtests.a
+move_mount_P_SOURCES = move_mount-P.c
+move_mount_P_OBJECTS = move_mount-P.$(OBJEXT)
+move_mount_P_LDADD = $(LDADD)
+move_mount_P_DEPENDENCIES = libtests.a
 move_pages_SOURCES = move_pages.c
 move_pages_OBJECTS = move_pages.$(OBJEXT)
 move_pages_LDADD = $(LDADD)
 move_pages_DEPENDENCIES = libtests.a
+move_pages__pidns_translation_SOURCES =  \
+       move_pages--pidns-translation.c
+move_pages__pidns_translation_OBJECTS =  \
+       move_pages--pidns-translation.$(OBJEXT)
+move_pages__pidns_translation_LDADD = $(LDADD)
+move_pages__pidns_translation_DEPENDENCIES = libtests.a
 move_pages_Xabbrev_SOURCES = move_pages-Xabbrev.c
 move_pages_Xabbrev_OBJECTS = move_pages-Xabbrev.$(OBJEXT)
 move_pages_Xabbrev_LDADD = $(LDADD)
@@ -1497,6 +2193,27 @@ nanosleep_SOURCES = nanosleep.c
 nanosleep_OBJECTS = nanosleep.$(OBJEXT)
 nanosleep_LDADD = $(LDADD)
 nanosleep_DEPENDENCIES = libtests.a
+net__decode_fds_dev_netlink_SOURCES = net--decode-fds-dev-netlink.c
+net__decode_fds_dev_netlink_OBJECTS =  \
+       net--decode-fds-dev-netlink.$(OBJEXT)
+net__decode_fds_dev_netlink_LDADD = $(LDADD)
+net__decode_fds_dev_netlink_DEPENDENCIES = libtests.a
+net__decode_fds_none_netlink_SOURCES = net--decode-fds-none-netlink.c
+net__decode_fds_none_netlink_OBJECTS =  \
+       net--decode-fds-none-netlink.$(OBJEXT)
+net__decode_fds_none_netlink_LDADD = $(LDADD)
+net__decode_fds_none_netlink_DEPENDENCIES = libtests.a
+net__decode_fds_path_netlink_SOURCES = net--decode-fds-path-netlink.c
+net__decode_fds_path_netlink_OBJECTS =  \
+       net--decode-fds-path-netlink.$(OBJEXT)
+net__decode_fds_path_netlink_LDADD = $(LDADD)
+net__decode_fds_path_netlink_DEPENDENCIES = libtests.a
+net__decode_fds_socket_netlink_SOURCES =  \
+       net--decode-fds-socket-netlink.c
+net__decode_fds_socket_netlink_OBJECTS =  \
+       net--decode-fds-socket-netlink.$(OBJEXT)
+net__decode_fds_socket_netlink_LDADD = $(LDADD)
+net__decode_fds_socket_netlink_DEPENDENCIES = libtests.a
 net_accept_connect_SOURCES = net-accept-connect.c
 net_accept_connect_OBJECTS = net-accept-connect.$(OBJEXT)
 net_accept_connect_LDADD = $(LDADD)
@@ -1525,6 +2242,12 @@ net_sockaddr_SOURCES = net-sockaddr.c
 net_sockaddr_OBJECTS = net-sockaddr.$(OBJEXT)
 net_sockaddr_LDADD = $(LDADD)
 net_sockaddr_DEPENDENCIES = libtests.a
+net_sockaddr__pidns_translation_SOURCES =  \
+       net-sockaddr--pidns-translation.c
+net_sockaddr__pidns_translation_OBJECTS =  \
+       net-sockaddr--pidns-translation.$(OBJEXT)
+net_sockaddr__pidns_translation_LDADD = $(LDADD)
+net_sockaddr__pidns_translation_DEPENDENCIES = libtests.a
 net_tpacket_req_SOURCES = net-tpacket_req.c
 net_tpacket_req_OBJECTS = net-tpacket_req.$(OBJEXT)
 net_tpacket_req_LDADD = $(LDADD)
@@ -1562,6 +2285,12 @@ netlink_audit_SOURCES = netlink_audit.c
 netlink_audit_OBJECTS = netlink_audit.$(OBJEXT)
 netlink_audit_LDADD = $(LDADD)
 netlink_audit_DEPENDENCIES = libtests.a
+netlink_audit__pidns_translation_SOURCES =  \
+       netlink_audit--pidns-translation.c
+netlink_audit__pidns_translation_OBJECTS =  \
+       netlink_audit--pidns-translation.$(OBJEXT)
+netlink_audit__pidns_translation_LDADD = $(LDADD)
+netlink_audit__pidns_translation_DEPENDENCIES = libtests.a
 netlink_crypto_SOURCES = netlink_crypto.c
 netlink_crypto_OBJECTS = netlink_crypto.$(OBJEXT)
 netlink_crypto_LDADD = $(LDADD)
@@ -1710,6 +2439,10 @@ nlattr_ifla_xdp_SOURCES = nlattr_ifla_xdp.c
 nlattr_ifla_xdp_OBJECTS = nlattr_ifla_xdp.$(OBJEXT)
 nlattr_ifla_xdp_LDADD = $(LDADD)
 nlattr_ifla_xdp_DEPENDENCIES = libtests.a
+nlattr_ifla_xdp_y_SOURCES = nlattr_ifla_xdp-y.c
+nlattr_ifla_xdp_y_OBJECTS = nlattr_ifla_xdp-y.$(OBJEXT)
+nlattr_ifla_xdp_y_LDADD = $(LDADD)
+nlattr_ifla_xdp_y_DEPENDENCIES = libtests.a
 nlattr_inet_diag_msg_SOURCES = nlattr_inet_diag_msg.c
 nlattr_inet_diag_msg_OBJECTS = nlattr_inet_diag_msg.$(OBJEXT)
 nlattr_inet_diag_msg_LDADD = $(LDADD)
@@ -1851,10 +2584,58 @@ open_SOURCES = open.c
 open_OBJECTS = open.$(OBJEXT)
 open_LDADD = $(LDADD)
 open_DEPENDENCIES = libtests.a
+open_tree_SOURCES = open_tree.c
+open_tree_OBJECTS = open_tree.$(OBJEXT)
+open_tree_LDADD = $(LDADD)
+open_tree_DEPENDENCIES = libtests.a
+open_tree_P_SOURCES = open_tree-P.c
+open_tree_P_OBJECTS = open_tree-P.$(OBJEXT)
+open_tree_P_LDADD = $(LDADD)
+open_tree_P_DEPENDENCIES = libtests.a
 openat_SOURCES = openat.c
 openat_OBJECTS = openat.$(OBJEXT)
 openat_LDADD = $(LDADD)
 openat_DEPENDENCIES = libtests.a
+openat2_SOURCES = openat2.c
+openat2_OBJECTS = openat2.$(OBJEXT)
+openat2_LDADD = $(LDADD)
+openat2_DEPENDENCIES = libtests.a
+openat2_Xabbrev_SOURCES = openat2-Xabbrev.c
+openat2_Xabbrev_OBJECTS = openat2-Xabbrev.$(OBJEXT)
+openat2_Xabbrev_LDADD = $(LDADD)
+openat2_Xabbrev_DEPENDENCIES = libtests.a
+openat2_Xraw_SOURCES = openat2-Xraw.c
+openat2_Xraw_OBJECTS = openat2-Xraw.$(OBJEXT)
+openat2_Xraw_LDADD = $(LDADD)
+openat2_Xraw_DEPENDENCIES = libtests.a
+openat2_Xverbose_SOURCES = openat2-Xverbose.c
+openat2_Xverbose_OBJECTS = openat2-Xverbose.$(OBJEXT)
+openat2_Xverbose_LDADD = $(LDADD)
+openat2_Xverbose_DEPENDENCIES = libtests.a
+openat2_v_SOURCES = openat2-v.c
+openat2_v_OBJECTS = openat2-v.$(OBJEXT)
+openat2_v_LDADD = $(LDADD)
+openat2_v_DEPENDENCIES = libtests.a
+openat2_v_y_SOURCES = openat2-v-y.c
+openat2_v_y_OBJECTS = openat2-v-y.$(OBJEXT)
+openat2_v_y_LDADD = $(LDADD)
+openat2_v_y_DEPENDENCIES = libtests.a
+openat2_v_y_Xabbrev_SOURCES = openat2-v-y-Xabbrev.c
+openat2_v_y_Xabbrev_OBJECTS = openat2-v-y-Xabbrev.$(OBJEXT)
+openat2_v_y_Xabbrev_LDADD = $(LDADD)
+openat2_v_y_Xabbrev_DEPENDENCIES = libtests.a
+openat2_v_y_Xraw_SOURCES = openat2-v-y-Xraw.c
+openat2_v_y_Xraw_OBJECTS = openat2-v-y-Xraw.$(OBJEXT)
+openat2_v_y_Xraw_LDADD = $(LDADD)
+openat2_v_y_Xraw_DEPENDENCIES = libtests.a
+openat2_v_y_Xverbose_SOURCES = openat2-v-y-Xverbose.c
+openat2_v_y_Xverbose_OBJECTS = openat2-v-y-Xverbose.$(OBJEXT)
+openat2_v_y_Xverbose_LDADD = $(LDADD)
+openat2_v_y_Xverbose_DEPENDENCIES = libtests.a
+openat2_y_SOURCES = openat2-y.c
+openat2_y_OBJECTS = openat2-y.$(OBJEXT)
+openat2_y_LDADD = $(LDADD)
+openat2_y_DEPENDENCIES = libtests.a
 orphaned_process_group_SOURCES = orphaned_process_group.c
 orphaned_process_group_OBJECTS = orphaned_process_group.$(OBJEXT)
 orphaned_process_group_LDADD = $(LDADD)
@@ -1899,10 +2680,69 @@ personality_Xverbose_SOURCES = personality-Xverbose.c
 personality_Xverbose_OBJECTS = personality-Xverbose.$(OBJEXT)
 personality_Xverbose_LDADD = $(LDADD)
 personality_Xverbose_DEPENDENCIES = libtests.a
+pidfd_getfd_SOURCES = pidfd_getfd.c
+pidfd_getfd_OBJECTS = pidfd_getfd.$(OBJEXT)
+pidfd_getfd_LDADD = $(LDADD)
+pidfd_getfd_DEPENDENCIES = libtests.a
+pidfd_getfd_y_SOURCES = pidfd_getfd-y.c
+pidfd_getfd_y_OBJECTS = pidfd_getfd-y.$(OBJEXT)
+pidfd_getfd_y_LDADD = $(LDADD)
+pidfd_getfd_y_DEPENDENCIES = libtests.a
+pidfd_getfd_yy_SOURCES = pidfd_getfd-yy.c
+pidfd_getfd_yy_OBJECTS = pidfd_getfd-yy.$(OBJEXT)
+pidfd_getfd_yy_LDADD = $(LDADD)
+pidfd_getfd_yy_DEPENDENCIES = libtests.a
+pidfd_open_SOURCES = pidfd_open.c
+pidfd_open_OBJECTS = pidfd_open.$(OBJEXT)
+pidfd_open_LDADD = $(LDADD)
+pidfd_open_DEPENDENCIES = libtests.a
+pidfd_open__decode_fd_path_SOURCES = pidfd_open--decode-fd-path.c
+pidfd_open__decode_fd_path_OBJECTS =  \
+       pidfd_open--decode-fd-path.$(OBJEXT)
+pidfd_open__decode_fd_path_LDADD = $(LDADD)
+pidfd_open__decode_fd_path_DEPENDENCIES = libtests.a
+pidfd_open__decode_fd_pidfd_SOURCES = pidfd_open--decode-fd-pidfd.c
+pidfd_open__decode_fd_pidfd_OBJECTS =  \
+       pidfd_open--decode-fd-pidfd.$(OBJEXT)
+pidfd_open__decode_fd_pidfd_LDADD = $(LDADD)
+pidfd_open__decode_fd_pidfd_DEPENDENCIES = libtests.a
+pidfd_open__decode_fd_socket_SOURCES = pidfd_open--decode-fd-socket.c
+pidfd_open__decode_fd_socket_OBJECTS =  \
+       pidfd_open--decode-fd-socket.$(OBJEXT)
+pidfd_open__decode_fd_socket_LDADD = $(LDADD)
+pidfd_open__decode_fd_socket_DEPENDENCIES = libtests.a
+pidfd_open__pidns_translation_SOURCES =  \
+       pidfd_open--pidns-translation.c
+pidfd_open__pidns_translation_OBJECTS =  \
+       pidfd_open--pidns-translation.$(OBJEXT)
+pidfd_open__pidns_translation_LDADD = $(LDADD)
+pidfd_open__pidns_translation_DEPENDENCIES = libtests.a
+pidfd_open_P_SOURCES = pidfd_open-P.c
+pidfd_open_P_OBJECTS = pidfd_open-P.$(OBJEXT)
+pidfd_open_P_LDADD = $(LDADD)
+pidfd_open_P_DEPENDENCIES = libtests.a
+pidfd_open_y_SOURCES = pidfd_open-y.c
+pidfd_open_y_OBJECTS = pidfd_open-y.$(OBJEXT)
+pidfd_open_y_LDADD = $(LDADD)
+pidfd_open_y_DEPENDENCIES = libtests.a
+pidfd_open_yy_SOURCES = pidfd_open-yy.c
+pidfd_open_yy_OBJECTS = pidfd_open-yy.$(OBJEXT)
+pidfd_open_yy_LDADD = $(LDADD)
+pidfd_open_yy_DEPENDENCIES = libtests.a
 pidfd_send_signal_SOURCES = pidfd_send_signal.c
 pidfd_send_signal_OBJECTS = pidfd_send_signal.$(OBJEXT)
 pidfd_send_signal_LDADD = $(LDADD)
 pidfd_send_signal_DEPENDENCIES = libtests.a
+pidfd_send_signal__pidns_translation_SOURCES =  \
+       pidfd_send_signal--pidns-translation.c
+pidfd_send_signal__pidns_translation_OBJECTS =  \
+       pidfd_send_signal--pidns-translation.$(OBJEXT)
+pidfd_send_signal__pidns_translation_LDADD = $(LDADD)
+pidfd_send_signal__pidns_translation_DEPENDENCIES = libtests.a
+pidns_cache_SOURCES = pidns-cache.c
+pidns_cache_OBJECTS = pidns-cache.$(OBJEXT)
+pidns_cache_LDADD = $(LDADD)
+pidns_cache_DEPENDENCIES = libtests.a
 pipe_SOURCES = pipe.c
 pipe_OBJECTS = pipe.$(OBJEXT)
 pipe_LDADD = $(LDADD)
@@ -2008,6 +2848,10 @@ print_maxfd_SOURCES = print_maxfd.c
 print_maxfd_OBJECTS = print_maxfd.$(OBJEXT)
 print_maxfd_LDADD = $(LDADD)
 print_maxfd_DEPENDENCIES = libtests.a
+print_ppid_tracerpid_SOURCES = print_ppid_tracerpid.c
+print_ppid_tracerpid_OBJECTS = print_ppid_tracerpid.$(OBJEXT)
+print_ppid_tracerpid_LDADD = $(LDADD)
+print_ppid_tracerpid_DEPENDENCIES = libtests.a
 printpath_umovestr_SOURCES = printpath-umovestr.c
 printpath_umovestr_OBJECTS = printpath-umovestr.$(OBJEXT)
 printpath_umovestr_LDADD = $(LDADD)
@@ -2057,14 +2901,31 @@ prlimit64_SOURCES = prlimit64.c
 prlimit64_OBJECTS = prlimit64.$(OBJEXT)
 prlimit64_LDADD = $(LDADD)
 prlimit64_DEPENDENCIES = libtests.a
+prlimit64__pidns_translation_SOURCES = prlimit64--pidns-translation.c
+prlimit64__pidns_translation_OBJECTS =  \
+       prlimit64--pidns-translation.$(OBJEXT)
+prlimit64__pidns_translation_LDADD = $(LDADD)
+prlimit64__pidns_translation_DEPENDENCIES = libtests.a
 process_vm_readv_SOURCES = process_vm_readv.c
 process_vm_readv_OBJECTS = process_vm_readv.$(OBJEXT)
 process_vm_readv_LDADD = $(LDADD)
 process_vm_readv_DEPENDENCIES = libtests.a
+process_vm_readv__pidns_translation_SOURCES =  \
+       process_vm_readv--pidns-translation.c
+process_vm_readv__pidns_translation_OBJECTS =  \
+       process_vm_readv--pidns-translation.$(OBJEXT)
+process_vm_readv__pidns_translation_LDADD = $(LDADD)
+process_vm_readv__pidns_translation_DEPENDENCIES = libtests.a
 process_vm_writev_SOURCES = process_vm_writev.c
 process_vm_writev_OBJECTS = process_vm_writev.$(OBJEXT)
 process_vm_writev_LDADD = $(LDADD)
 process_vm_writev_DEPENDENCIES = libtests.a
+process_vm_writev__pidns_translation_SOURCES =  \
+       process_vm_writev--pidns-translation.c
+process_vm_writev__pidns_translation_OBJECTS =  \
+       process_vm_writev--pidns-translation.$(OBJEXT)
+process_vm_writev__pidns_translation_LDADD = $(LDADD)
+process_vm_writev__pidns_translation_DEPENDENCIES = libtests.a
 pselect6_SOURCES = pselect6.c
 pselect6_OBJECTS = pselect6.$(OBJEXT)
 pselect6_LDADD = $(LDADD)
@@ -2173,10 +3034,18 @@ reboot_SOURCES = reboot.c
 reboot_OBJECTS = reboot.$(OBJEXT)
 reboot_LDADD = $(LDADD)
 reboot_DEPENDENCIES = libtests.a
+recv_MSG_TRUNC_SOURCES = recv-MSG_TRUNC.c
+recv_MSG_TRUNC_OBJECTS = recv-MSG_TRUNC.$(OBJEXT)
+recv_MSG_TRUNC_LDADD = $(LDADD)
+recv_MSG_TRUNC_DEPENDENCIES = libtests.a
 recvfrom_SOURCES = recvfrom.c
 recvfrom_OBJECTS = recvfrom.$(OBJEXT)
 recvfrom_LDADD = $(LDADD)
 recvfrom_DEPENDENCIES = libtests.a
+recvfrom_MSG_TRUNC_SOURCES = recvfrom-MSG_TRUNC.c
+recvfrom_MSG_TRUNC_OBJECTS = recvfrom-MSG_TRUNC.$(OBJEXT)
+recvfrom_MSG_TRUNC_LDADD = $(LDADD)
+recvfrom_MSG_TRUNC_DEPENDENCIES = libtests.a
 recvmmsg_timeout_SOURCES = recvmmsg-timeout.c
 recvmmsg_timeout_OBJECTS = recvmmsg-timeout.$(OBJEXT)
 recvmmsg_timeout_LDADD = $(LDADD)
@@ -2250,6 +3119,12 @@ rt_sigqueueinfo_SOURCES = rt_sigqueueinfo.c
 rt_sigqueueinfo_OBJECTS = rt_sigqueueinfo.$(OBJEXT)
 rt_sigqueueinfo_LDADD = $(LDADD)
 rt_sigqueueinfo_DEPENDENCIES = libtests.a
+rt_sigqueueinfo__pidns_translation_SOURCES =  \
+       rt_sigqueueinfo--pidns-translation.c
+rt_sigqueueinfo__pidns_translation_OBJECTS =  \
+       rt_sigqueueinfo--pidns-translation.$(OBJEXT)
+rt_sigqueueinfo__pidns_translation_LDADD = $(LDADD)
+rt_sigqueueinfo__pidns_translation_DEPENDENCIES = libtests.a
 rt_sigreturn_SOURCES = rt_sigreturn.c
 rt_sigreturn_OBJECTS = rt_sigreturn.$(OBJEXT)
 rt_sigreturn_LDADD = $(LDADD)
@@ -2266,6 +3141,12 @@ rt_tgsigqueueinfo_SOURCES = rt_tgsigqueueinfo.c
 rt_tgsigqueueinfo_OBJECTS = rt_tgsigqueueinfo.$(OBJEXT)
 rt_tgsigqueueinfo_LDADD = $(LDADD)
 rt_tgsigqueueinfo_DEPENDENCIES = libtests.a
+rt_tgsigqueueinfo__pidns_translation_SOURCES =  \
+       rt_tgsigqueueinfo--pidns-translation.c
+rt_tgsigqueueinfo__pidns_translation_OBJECTS =  \
+       rt_tgsigqueueinfo--pidns-translation.$(OBJEXT)
+rt_tgsigqueueinfo__pidns_translation_LDADD = $(LDADD)
+rt_tgsigqueueinfo__pidns_translation_DEPENDENCIES = libtests.a
 run_expect_termsig_SOURCES = run_expect_termsig.c
 run_expect_termsig_OBJECTS = run_expect_termsig.$(OBJEXT)
 run_expect_termsig_LDADD = $(LDADD)
@@ -2306,18 +3187,42 @@ sched_xetaffinity_SOURCES = sched_xetaffinity.c
 sched_xetaffinity_OBJECTS = sched_xetaffinity.$(OBJEXT)
 sched_xetaffinity_LDADD = $(LDADD)
 sched_xetaffinity_DEPENDENCIES = libtests.a
+sched_xetaffinity__pidns_translation_SOURCES =  \
+       sched_xetaffinity--pidns-translation.c
+sched_xetaffinity__pidns_translation_OBJECTS =  \
+       sched_xetaffinity--pidns-translation.$(OBJEXT)
+sched_xetaffinity__pidns_translation_LDADD = $(LDADD)
+sched_xetaffinity__pidns_translation_DEPENDENCIES = libtests.a
 sched_xetattr_SOURCES = sched_xetattr.c
 sched_xetattr_OBJECTS = sched_xetattr.$(OBJEXT)
 sched_xetattr_LDADD = $(LDADD)
 sched_xetattr_DEPENDENCIES = libtests.a
+sched_xetattr__pidns_translation_SOURCES =  \
+       sched_xetattr--pidns-translation.c
+sched_xetattr__pidns_translation_OBJECTS =  \
+       sched_xetattr--pidns-translation.$(OBJEXT)
+sched_xetattr__pidns_translation_LDADD = $(LDADD)
+sched_xetattr__pidns_translation_DEPENDENCIES = libtests.a
 sched_xetparam_SOURCES = sched_xetparam.c
 sched_xetparam_OBJECTS = sched_xetparam.$(OBJEXT)
 sched_xetparam_LDADD = $(LDADD)
 sched_xetparam_DEPENDENCIES = libtests.a
+sched_xetparam__pidns_translation_SOURCES =  \
+       sched_xetparam--pidns-translation.c
+sched_xetparam__pidns_translation_OBJECTS =  \
+       sched_xetparam--pidns-translation.$(OBJEXT)
+sched_xetparam__pidns_translation_LDADD = $(LDADD)
+sched_xetparam__pidns_translation_DEPENDENCIES = libtests.a
 sched_xetscheduler_SOURCES = sched_xetscheduler.c
 sched_xetscheduler_OBJECTS = sched_xetscheduler.$(OBJEXT)
 sched_xetscheduler_LDADD = $(LDADD)
 sched_xetscheduler_DEPENDENCIES = libtests.a
+sched_xetscheduler__pidns_translation_SOURCES =  \
+       sched_xetscheduler--pidns-translation.c
+sched_xetscheduler__pidns_translation_OBJECTS =  \
+       sched_xetscheduler--pidns-translation.$(OBJEXT)
+sched_xetscheduler__pidns_translation_LDADD = $(LDADD)
+sched_xetscheduler__pidns_translation_DEPENDENCIES = libtests.a
 sched_yield_SOURCES = sched_yield.c
 sched_yield_OBJECTS = sched_yield.$(OBJEXT)
 sched_yield_LDADD = $(LDADD)
@@ -2354,6 +3259,14 @@ semop_SOURCES = semop.c
 semop_OBJECTS = semop.$(OBJEXT)
 semop_LDADD = $(LDADD)
 semop_DEPENDENCIES = libtests.a
+semop_indirect_SOURCES = semop-indirect.c
+semop_indirect_OBJECTS = semop-indirect.$(OBJEXT)
+semop_indirect_LDADD = $(LDADD)
+semop_indirect_DEPENDENCIES = libtests.a
+semtimedop_SOURCES = semtimedop.c
+semtimedop_OBJECTS = semtimedop.$(OBJEXT)
+semtimedop_LDADD = $(LDADD)
+semtimedop_DEPENDENCIES = libtests.a
 sendfile_SOURCES = sendfile.c
 sendfile_OBJECTS = sendfile.$(OBJEXT)
 sendfile_LDADD = $(LDADD)
@@ -2366,6 +3279,18 @@ set_mempolicy_SOURCES = set_mempolicy.c
 set_mempolicy_OBJECTS = set_mempolicy.$(OBJEXT)
 set_mempolicy_LDADD = $(LDADD)
 set_mempolicy_DEPENDENCIES = libtests.a
+set_mempolicy_Xabbrev_SOURCES = set_mempolicy-Xabbrev.c
+set_mempolicy_Xabbrev_OBJECTS = set_mempolicy-Xabbrev.$(OBJEXT)
+set_mempolicy_Xabbrev_LDADD = $(LDADD)
+set_mempolicy_Xabbrev_DEPENDENCIES = libtests.a
+set_mempolicy_Xraw_SOURCES = set_mempolicy-Xraw.c
+set_mempolicy_Xraw_OBJECTS = set_mempolicy-Xraw.$(OBJEXT)
+set_mempolicy_Xraw_LDADD = $(LDADD)
+set_mempolicy_Xraw_DEPENDENCIES = libtests.a
+set_mempolicy_Xverbose_SOURCES = set_mempolicy-Xverbose.c
+set_mempolicy_Xverbose_OBJECTS = set_mempolicy-Xverbose.$(OBJEXT)
+set_mempolicy_Xverbose_LDADD = $(LDADD)
+set_mempolicy_Xverbose_DEPENDENCIES = libtests.a
 set_ptracer_any_SOURCES = set_ptracer_any.c
 set_ptracer_any_OBJECTS = set_ptracer_any.$(OBJEXT)
 set_ptracer_any_LDADD = $(LDADD)
@@ -2422,6 +3347,10 @@ setns_SOURCES = setns.c
 setns_OBJECTS = setns.$(OBJEXT)
 setns_LDADD = $(LDADD)
 setns_DEPENDENCIES = libtests.a
+setpgrp_exec_SOURCES = setpgrp-exec.c
+setpgrp_exec_OBJECTS = setpgrp-exec.$(OBJEXT)
+setpgrp_exec_LDADD = $(LDADD)
+setpgrp_exec_DEPENDENCIES = libtests.a
 setregid_SOURCES = setregid.c
 setregid_OBJECTS = setregid.$(OBJEXT)
 setregid_LDADD = $(LDADD)
@@ -2506,6 +3435,12 @@ signal_receive_SOURCES = signal_receive.c
 signal_receive_OBJECTS = signal_receive.$(OBJEXT)
 signal_receive_LDADD = $(LDADD)
 signal_receive_DEPENDENCIES = libtests.a
+signal_receive__pidns_translation_SOURCES =  \
+       signal_receive--pidns-translation.c
+signal_receive__pidns_translation_OBJECTS =  \
+       signal_receive--pidns-translation.$(OBJEXT)
+signal_receive__pidns_translation_LDADD = $(LDADD)
+signal_receive__pidns_translation_DEPENDENCIES = libtests.a
 signalfd4_SOURCES = signalfd4.c
 signalfd4_OBJECTS = signalfd4.$(OBJEXT)
 signalfd4_LDADD = $(LDADD)
@@ -2542,6 +3477,12 @@ so_peercred_SOURCES = so_peercred.c
 so_peercred_OBJECTS = so_peercred.$(OBJEXT)
 so_peercred_LDADD = $(LDADD)
 so_peercred_DEPENDENCIES = libtests.a
+so_peercred__pidns_translation_SOURCES =  \
+       so_peercred--pidns-translation.c
+so_peercred__pidns_translation_OBJECTS =  \
+       so_peercred--pidns-translation.$(OBJEXT)
+so_peercred__pidns_translation_LDADD = $(LDADD)
+so_peercred__pidns_translation_DEPENDENCIES = libtests.a
 so_peercred_Xabbrev_SOURCES = so_peercred-Xabbrev.c
 so_peercred_Xabbrev_OBJECTS = so_peercred-Xabbrev.$(OBJEXT)
 so_peercred_Xabbrev_LDADD = $(LDADD)
@@ -2604,6 +3545,12 @@ am_stack_fcall_OBJECTS = stack-fcall.$(OBJEXT) stack-fcall-0.$(OBJEXT) \
 stack_fcall_OBJECTS = $(am_stack_fcall_OBJECTS)
 stack_fcall_LDADD = $(LDADD)
 stack_fcall_DEPENDENCIES = libtests.a
+am_stack_fcall_attach_OBJECTS = stack-fcall-attach.$(OBJEXT) \
+       stack-fcall-0.$(OBJEXT) stack-fcall-1.$(OBJEXT) \
+       stack-fcall-2.$(OBJEXT) stack-fcall-3.$(OBJEXT)
+stack_fcall_attach_OBJECTS = $(am_stack_fcall_attach_OBJECTS)
+stack_fcall_attach_LDADD = $(LDADD)
+stack_fcall_attach_DEPENDENCIES = libtests.a
 am_stack_fcall_mangled_OBJECTS = stack-fcall-mangled.$(OBJEXT) \
        stack-fcall-mangled-0.$(OBJEXT) \
        stack-fcall-mangled-1.$(OBJEXT) \
@@ -2628,10 +3575,84 @@ statfs64_SOURCES = statfs64.c
 statfs64_OBJECTS = statfs64.$(OBJEXT)
 statfs64_LDADD = $(LDADD)
 statfs64_DEPENDENCIES = libtests.a
+status_all_SOURCES = status-all.c
+status_all_OBJECTS = status-all.$(OBJEXT)
+status_all_LDADD = $(LDADD)
+status_all_DEPENDENCIES = libtests.a
+status_failed_SOURCES = status-failed.c
+status_failed_OBJECTS = status-failed.$(OBJEXT)
+status_failed_LDADD = $(LDADD)
+status_failed_DEPENDENCIES = libtests.a
+status_failed_long_SOURCES = status-failed-long.c
+status_failed_long_OBJECTS = status-failed-long.$(OBJEXT)
+status_failed_long_LDADD = $(LDADD)
+status_failed_long_DEPENDENCIES = libtests.a
+status_failed_status_SOURCES = status-failed-status.c
+status_failed_status_OBJECTS = status-failed-status.$(OBJEXT)
+status_failed_status_LDADD = $(LDADD)
+status_failed_status_DEPENDENCIES = libtests.a
+status_none_SOURCES = status-none.c
+status_none_OBJECTS = status-none.$(OBJEXT)
+status_none_LDADD = $(LDADD)
+status_none_DEPENDENCIES = libtests.a
+status_none_f_SOURCES = status-none-f.c
+status_none_f_OBJECTS = status-none-f.$(OBJEXT)
+status_none_f_LDADD = $(LDADD)
+status_none_f_DEPENDENCIES = libtests.a
+status_none_threads_SOURCES = status-none-threads.c
+status_none_threads_OBJECTS = status-none-threads.$(OBJEXT)
+status_none_threads_DEPENDENCIES = $(LDADD)
+status_successful_SOURCES = status-successful.c
+status_successful_OBJECTS = status-successful.$(OBJEXT)
+status_successful_LDADD = $(LDADD)
+status_successful_DEPENDENCIES = libtests.a
+status_successful_long_SOURCES = status-successful-long.c
+status_successful_long_OBJECTS = status-successful-long.$(OBJEXT)
+status_successful_long_LDADD = $(LDADD)
+status_successful_long_DEPENDENCIES = libtests.a
+status_successful_status_SOURCES = status-successful-status.c
+status_successful_status_OBJECTS = status-successful-status.$(OBJEXT)
+status_successful_status_LDADD = $(LDADD)
+status_successful_status_DEPENDENCIES = libtests.a
+status_unfinished_SOURCES = status-unfinished.c
+status_unfinished_OBJECTS = status-unfinished.$(OBJEXT)
+status_unfinished_LDADD = $(LDADD)
+status_unfinished_DEPENDENCIES = libtests.a
+status_unfinished_threads_SOURCES = status-unfinished-threads.c
+status_unfinished_threads_OBJECTS =  \
+       status-unfinished-threads.$(OBJEXT)
+status_unfinished_threads_DEPENDENCIES = $(LDADD)
 statx_SOURCES = statx.c
 statx_OBJECTS = statx.$(OBJEXT)
 statx_LDADD = $(LDADD)
 statx_DEPENDENCIES = libtests.a
+strace__strings_in_hex_SOURCES = strace--strings-in-hex.c
+strace__strings_in_hex_OBJECTS = strace--strings-in-hex.$(OBJEXT)
+strace__strings_in_hex_LDADD = $(LDADD)
+strace__strings_in_hex_DEPENDENCIES = libtests.a
+strace__strings_in_hex_all_SOURCES = strace--strings-in-hex-all.c
+strace__strings_in_hex_all_OBJECTS =  \
+       strace--strings-in-hex-all.$(OBJEXT)
+strace__strings_in_hex_all_LDADD = $(LDADD)
+strace__strings_in_hex_all_DEPENDENCIES = libtests.a
+strace__strings_in_hex_non_ascii_SOURCES =  \
+       strace--strings-in-hex-non-ascii.c
+strace__strings_in_hex_non_ascii_OBJECTS =  \
+       strace--strings-in-hex-non-ascii.$(OBJEXT)
+strace__strings_in_hex_non_ascii_LDADD = $(LDADD)
+strace__strings_in_hex_non_ascii_DEPENDENCIES = libtests.a
+strace_n_SOURCES = strace-n.c
+strace_n_OBJECTS = strace-n.$(OBJEXT)
+strace_n_LDADD = $(LDADD)
+strace_n_DEPENDENCIES = libtests.a
+strace_x_SOURCES = strace-x.c
+strace_x_OBJECTS = strace-x.$(OBJEXT)
+strace_x_LDADD = $(LDADD)
+strace_x_DEPENDENCIES = libtests.a
+strace_xx_SOURCES = strace-xx.c
+strace_xx_OBJECTS = strace-xx.$(OBJEXT)
+strace_xx_LDADD = $(LDADD)
+strace_xx_DEPENDENCIES = libtests.a
 swap_SOURCES = swap.c
 swap_OBJECTS = swap.$(OBJEXT)
 swap_LDADD = $(LDADD)
@@ -2668,13 +3689,41 @@ syslog_SOURCES = syslog.c
 syslog_OBJECTS = syslog.$(OBJEXT)
 syslog_LDADD = $(LDADD)
 syslog_DEPENDENCIES = libtests.a
+syslog_success_SOURCES = syslog-success.c
+syslog_success_OBJECTS = syslog-success.$(OBJEXT)
+syslog_success_LDADD = $(LDADD)
+syslog_success_DEPENDENCIES = libtests.a
 tee_SOURCES = tee.c
 tee_OBJECTS = tee.$(OBJEXT)
 tee_LDADD = $(LDADD)
 tee_DEPENDENCIES = libtests.a
+tgkill_SOURCES = tgkill.c
+tgkill_OBJECTS = tgkill.$(OBJEXT)
+tgkill_LDADD = $(LDADD)
+tgkill_DEPENDENCIES = libtests.a
+tgkill__pidns_translation_SOURCES = tgkill--pidns-translation.c
+tgkill__pidns_translation_OBJECTS =  \
+       tgkill--pidns-translation.$(OBJEXT)
+tgkill__pidns_translation_LDADD = $(LDADD)
+tgkill__pidns_translation_DEPENDENCIES = libtests.a
 threads_execve_SOURCES = threads-execve.c
 threads_execve_OBJECTS = threads-execve.$(OBJEXT)
 threads_execve_DEPENDENCIES = $(am__DEPENDENCIES_1) $(LDADD)
+threads_execve__quiet_thread_execve_SOURCES =  \
+       threads-execve--quiet-thread-execve.c
+threads_execve__quiet_thread_execve_OBJECTS =  \
+       threads-execve--quiet-thread-execve.$(OBJEXT)
+threads_execve__quiet_thread_execve_DEPENDENCIES =  \
+       $(am__DEPENDENCIES_1) $(LDADD)
+threads_execve_q_SOURCES = threads-execve-q.c
+threads_execve_q_OBJECTS = threads-execve-q.$(OBJEXT)
+threads_execve_q_DEPENDENCIES = $(am__DEPENDENCIES_1) $(LDADD)
+threads_execve_qq_SOURCES = threads-execve-qq.c
+threads_execve_qq_OBJECTS = threads-execve-qq.$(OBJEXT)
+threads_execve_qq_DEPENDENCIES = $(am__DEPENDENCIES_1) $(LDADD)
+threads_execve_qqq_SOURCES = threads-execve-qqq.c
+threads_execve_qqq_OBJECTS = threads-execve-qqq.$(OBJEXT)
+threads_execve_qqq_DEPENDENCIES = $(am__DEPENDENCIES_1) $(LDADD)
 time_SOURCES = time.c
 time_OBJECTS = time.$(OBJEXT)
 time_LDADD = $(LDADD)
@@ -2698,6 +3747,24 @@ times_fail_SOURCES = times-fail.c
 times_fail_OBJECTS = times-fail.$(OBJEXT)
 times_fail_LDADD = $(LDADD)
 times_fail_DEPENDENCIES = libtests.a
+tkill_SOURCES = tkill.c
+tkill_OBJECTS = tkill.$(OBJEXT)
+tkill_LDADD = $(LDADD)
+tkill_DEPENDENCIES = libtests.a
+tkill__pidns_translation_SOURCES = tkill--pidns-translation.c
+tkill__pidns_translation_OBJECTS = tkill--pidns-translation.$(OBJEXT)
+tkill__pidns_translation_LDADD = $(LDADD)
+tkill__pidns_translation_DEPENDENCIES = libtests.a
+tracer_ppid_pgid_sid_SOURCES = tracer_ppid_pgid_sid.c
+tracer_ppid_pgid_sid_OBJECTS = tracer_ppid_pgid_sid.$(OBJEXT)
+tracer_ppid_pgid_sid_LDADD = $(LDADD)
+tracer_ppid_pgid_sid_DEPENDENCIES = libtests.a
+am_trie_test_OBJECTS = trie_test-trie_test.$(OBJEXT) \
+       trie_test-trie_for_tests.$(OBJEXT)
+trie_test_OBJECTS = $(am_trie_test_OBJECTS)
+trie_test_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_1)
+trie_test_LINK = $(CCLD) $(trie_test_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+       $(LDFLAGS) -o $@
 truncate_SOURCES = truncate.c
 truncate_OBJECTS = truncate.$(OBJEXT)
 truncate_LDADD = $(LDADD)
@@ -2746,6 +3813,14 @@ umovestr3_SOURCES = umovestr3.c
 umovestr3_OBJECTS = umovestr3.$(OBJEXT)
 umovestr3_LDADD = $(LDADD)
 umovestr3_DEPENDENCIES = libtests.a
+umovestr_cached_SOURCES = umovestr_cached.c
+umovestr_cached_OBJECTS = umovestr_cached.$(OBJEXT)
+umovestr_cached_LDADD = $(LDADD)
+umovestr_cached_DEPENDENCIES = libtests.a
+umovestr_cached_adjacent_SOURCES = umovestr_cached_adjacent.c
+umovestr_cached_adjacent_OBJECTS = umovestr_cached_adjacent.$(OBJEXT)
+umovestr_cached_adjacent_LDADD = $(LDADD)
+umovestr_cached_adjacent_DEPENDENCIES = libtests.a
 uname_SOURCES = uname.c
 uname_OBJECTS = uname.$(OBJEXT)
 uname_LDADD = $(LDADD)
@@ -2851,6 +3926,12 @@ xet_robust_list_SOURCES = xet_robust_list.c
 xet_robust_list_OBJECTS = xet_robust_list.$(OBJEXT)
 xet_robust_list_LDADD = $(LDADD)
 xet_robust_list_DEPENDENCIES = libtests.a
+xet_robust_list__pidns_translation_SOURCES =  \
+       xet_robust_list--pidns-translation.c
+xet_robust_list__pidns_translation_OBJECTS =  \
+       xet_robust_list--pidns-translation.$(OBJEXT)
+xet_robust_list__pidns_translation_LDADD = $(LDADD)
+xet_robust_list__pidns_translation_DEPENDENCIES = libtests.a
 xet_thread_area_x86_SOURCES = xet_thread_area_x86.c
 xet_thread_area_x86_OBJECTS = xet_thread_area_x86.$(OBJEXT)
 xet_thread_area_x86_LDADD = $(LDADD)
@@ -2863,10 +3944,21 @@ xetpgid_SOURCES = xetpgid.c
 xetpgid_OBJECTS = xetpgid.$(OBJEXT)
 xetpgid_LDADD = $(LDADD)
 xetpgid_DEPENDENCIES = libtests.a
+xetpgid__pidns_translation_SOURCES = xetpgid--pidns-translation.c
+xetpgid__pidns_translation_OBJECTS =  \
+       xetpgid--pidns-translation.$(OBJEXT)
+xetpgid__pidns_translation_LDADD = $(LDADD)
+xetpgid__pidns_translation_DEPENDENCIES = libtests.a
 xetpriority_SOURCES = xetpriority.c
 xetpriority_OBJECTS = xetpriority.$(OBJEXT)
 xetpriority_LDADD = $(LDADD)
 xetpriority_DEPENDENCIES = libtests.a
+xetpriority__pidns_translation_SOURCES =  \
+       xetpriority--pidns-translation.c
+xetpriority__pidns_translation_OBJECTS =  \
+       xetpriority--pidns-translation.$(OBJEXT)
+xetpriority__pidns_translation_LDADD = $(LDADD)
+xetpriority__pidns_translation_DEPENDENCIES = libtests.a
 xettimeofday_SOURCES = xettimeofday.c
 xettimeofday_OBJECTS = xettimeofday.$(OBJEXT)
 xettimeofday_LDADD = $(LDADD)
@@ -2900,29 +3992,55 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/attach-f-p.Po ./$(DEPDIR)/attach-p-cmd-cmd.Po \
        ./$(DEPDIR)/attach-p-cmd-p.Po \
        ./$(DEPDIR)/block_reset_raise_run.Po \
+       ./$(DEPDIR)/block_reset_run.Po \
        ./$(DEPDIR)/bpf-obj_get_info_by_fd-prog-v.Po \
        ./$(DEPDIR)/bpf-obj_get_info_by_fd-prog.Po \
        ./$(DEPDIR)/bpf-obj_get_info_by_fd-v.Po \
        ./$(DEPDIR)/bpf-obj_get_info_by_fd.Po \
-       ./$(DEPDIR)/bpf-success-v.Po ./$(DEPDIR)/bpf-success.Po \
-       ./$(DEPDIR)/bpf-v.Po ./$(DEPDIR)/bpf.Po ./$(DEPDIR)/brk.Po \
-       ./$(DEPDIR)/btrfs.Po ./$(DEPDIR)/caps-abbrev.Po \
-       ./$(DEPDIR)/caps.Po ./$(DEPDIR)/check_sigblock.Po \
-       ./$(DEPDIR)/check_sigign.Po ./$(DEPDIR)/chmod.Po \
-       ./$(DEPDIR)/chown.Po ./$(DEPDIR)/chown32.Po \
-       ./$(DEPDIR)/chroot.Po ./$(DEPDIR)/clock_adjtime.Po \
-       ./$(DEPDIR)/clock_nanosleep.Po ./$(DEPDIR)/clock_xettime.Po \
-       ./$(DEPDIR)/clone_parent.Po ./$(DEPDIR)/clone_ptrace.Po \
-       ./$(DEPDIR)/copy_file_range.Po ./$(DEPDIR)/count-f.Po \
-       ./$(DEPDIR)/creat.Po ./$(DEPDIR)/delay.Po \
-       ./$(DEPDIR)/delete_module.Po ./$(DEPDIR)/dev-yy.Po \
-       ./$(DEPDIR)/dup.Po ./$(DEPDIR)/dup2.Po ./$(DEPDIR)/dup3.Po \
-       ./$(DEPDIR)/epoll_create.Po ./$(DEPDIR)/epoll_create1.Po \
-       ./$(DEPDIR)/epoll_ctl.Po ./$(DEPDIR)/epoll_pwait.Po \
-       ./$(DEPDIR)/epoll_wait.Po ./$(DEPDIR)/erestartsys.Po \
-       ./$(DEPDIR)/eventfd.Po ./$(DEPDIR)/execve-v.Po \
-       ./$(DEPDIR)/execve.Po ./$(DEPDIR)/execveat-v.Po \
-       ./$(DEPDIR)/execveat.Po ./$(DEPDIR)/faccessat.Po \
+       ./$(DEPDIR)/bpf-success-long-y.Po ./$(DEPDIR)/bpf-success-v.Po \
+       ./$(DEPDIR)/bpf-success.Po ./$(DEPDIR)/bpf-v.Po \
+       ./$(DEPDIR)/bpf.Po ./$(DEPDIR)/brk.Po ./$(DEPDIR)/btrfs.Po \
+       ./$(DEPDIR)/caps-abbrev.Po ./$(DEPDIR)/caps.Po \
+       ./$(DEPDIR)/check_sigblock.Po ./$(DEPDIR)/check_sigign.Po \
+       ./$(DEPDIR)/chmod.Po ./$(DEPDIR)/chown.Po \
+       ./$(DEPDIR)/chown32.Po ./$(DEPDIR)/chroot.Po \
+       ./$(DEPDIR)/clock_adjtime.Po ./$(DEPDIR)/clock_nanosleep.Po \
+       ./$(DEPDIR)/clock_xettime.Po ./$(DEPDIR)/clone-flags.Po \
+       ./$(DEPDIR)/clone3-Xabbrev.Po ./$(DEPDIR)/clone3-Xraw.Po \
+       ./$(DEPDIR)/clone3-Xverbose.Po \
+       ./$(DEPDIR)/clone3-success-Xabbrev.Po \
+       ./$(DEPDIR)/clone3-success-Xraw.Po \
+       ./$(DEPDIR)/clone3-success-Xverbose.Po \
+       ./$(DEPDIR)/clone3-success.Po ./$(DEPDIR)/clone3.Po \
+       ./$(DEPDIR)/clone_parent--quiet-exit.Po \
+       ./$(DEPDIR)/clone_parent-q.Po ./$(DEPDIR)/clone_parent-qq.Po \
+       ./$(DEPDIR)/clone_parent.Po \
+       ./$(DEPDIR)/clone_ptrace--quiet-attach.Po \
+       ./$(DEPDIR)/clone_ptrace--quiet-exit.Po \
+       ./$(DEPDIR)/clone_ptrace-q.Po ./$(DEPDIR)/clone_ptrace-qq.Po \
+       ./$(DEPDIR)/clone_ptrace.Po ./$(DEPDIR)/close_range-P.Po \
+       ./$(DEPDIR)/close_range-y.Po ./$(DEPDIR)/close_range-yy.Po \
+       ./$(DEPDIR)/close_range.Po ./$(DEPDIR)/copy_file_range.Po \
+       ./$(DEPDIR)/count-f.Po ./$(DEPDIR)/creat.Po \
+       ./$(DEPDIR)/delay.Po ./$(DEPDIR)/delete_module.Po \
+       ./$(DEPDIR)/dev--decode-fds-dev.Po \
+       ./$(DEPDIR)/dev--decode-fds-path.Po \
+       ./$(DEPDIR)/dev--decode-fds-socket.Po ./$(DEPDIR)/dev-yy.Po \
+       ./$(DEPDIR)/dup-P.Po ./$(DEPDIR)/dup-y.Po \
+       ./$(DEPDIR)/dup-yy.Po ./$(DEPDIR)/dup.Po ./$(DEPDIR)/dup2-P.Po \
+       ./$(DEPDIR)/dup2-y.Po ./$(DEPDIR)/dup2-yy.Po \
+       ./$(DEPDIR)/dup2.Po ./$(DEPDIR)/dup3-P.Po \
+       ./$(DEPDIR)/dup3-y.Po ./$(DEPDIR)/dup3-yy.Po \
+       ./$(DEPDIR)/dup3.Po ./$(DEPDIR)/epoll_create.Po \
+       ./$(DEPDIR)/epoll_create1.Po ./$(DEPDIR)/epoll_ctl.Po \
+       ./$(DEPDIR)/epoll_pwait.Po ./$(DEPDIR)/epoll_wait.Po \
+       ./$(DEPDIR)/erestartsys.Po ./$(DEPDIR)/eventfd.Po \
+       ./$(DEPDIR)/execve-v.Po ./$(DEPDIR)/execve.Po \
+       ./$(DEPDIR)/execveat-v.Po ./$(DEPDIR)/execveat.Po \
+       ./$(DEPDIR)/faccessat-P.Po ./$(DEPDIR)/faccessat-y.Po \
+       ./$(DEPDIR)/faccessat-yy.Po ./$(DEPDIR)/faccessat.Po \
+       ./$(DEPDIR)/faccessat2-P.Po ./$(DEPDIR)/faccessat2-y.Po \
+       ./$(DEPDIR)/faccessat2-yy.Po ./$(DEPDIR)/faccessat2.Po \
        ./$(DEPDIR)/fadvise64.Po ./$(DEPDIR)/fadvise64_64.Po \
        ./$(DEPDIR)/fallocate.Po ./$(DEPDIR)/fanotify_init.Po \
        ./$(DEPDIR)/fanotify_mark-Xabbrev.Po \
@@ -2931,12 +4049,19 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/fanotify_mark.Po ./$(DEPDIR)/fchdir.Po \
        ./$(DEPDIR)/fchmod.Po ./$(DEPDIR)/fchmodat.Po \
        ./$(DEPDIR)/fchown.Po ./$(DEPDIR)/fchown32.Po \
-       ./$(DEPDIR)/fchownat.Po ./$(DEPDIR)/fcntl.Po \
+       ./$(DEPDIR)/fchownat.Po \
+       ./$(DEPDIR)/fcntl--pidns-translation.Po ./$(DEPDIR)/fcntl.Po \
+       ./$(DEPDIR)/fcntl64--pidns-translation.Po \
        ./$(DEPDIR)/fcntl64.Po ./$(DEPDIR)/fdatasync.Po \
        ./$(DEPDIR)/fflush.Po ./$(DEPDIR)/file_handle.Po \
        ./$(DEPDIR)/file_ioctl.Po ./$(DEPDIR)/filter-unavailable.Po \
-       ./$(DEPDIR)/finit_module.Po ./$(DEPDIR)/flock.Po \
-       ./$(DEPDIR)/fork-f.Po ./$(DEPDIR)/fstat-Xabbrev.Po \
+       ./$(DEPDIR)/filter_seccomp-flag.Po \
+       ./$(DEPDIR)/filter_seccomp-perf.Po ./$(DEPDIR)/finit_module.Po \
+       ./$(DEPDIR)/flock.Po ./$(DEPDIR)/fork--pidns-translation.Po \
+       ./$(DEPDIR)/fork-f.Po ./$(DEPDIR)/fsconfig-P.Po \
+       ./$(DEPDIR)/fsconfig.Po ./$(DEPDIR)/fsmount.Po \
+       ./$(DEPDIR)/fsopen.Po ./$(DEPDIR)/fspick-P.Po \
+       ./$(DEPDIR)/fspick.Po ./$(DEPDIR)/fstat-Xabbrev.Po \
        ./$(DEPDIR)/fstat-Xraw.Po ./$(DEPDIR)/fstat-Xverbose.Po \
        ./$(DEPDIR)/fstat.Po ./$(DEPDIR)/fstat64-Xabbrev.Po \
        ./$(DEPDIR)/fstat64-Xraw.Po ./$(DEPDIR)/fstat64-Xverbose.Po \
@@ -2946,30 +4071,66 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/fsync.Po ./$(DEPDIR)/ftruncate.Po \
        ./$(DEPDIR)/ftruncate64-ftruncate64.Po ./$(DEPDIR)/futex.Po \
        ./$(DEPDIR)/futimesat.Po ./$(DEPDIR)/get_mempolicy.Po \
-       ./$(DEPDIR)/getcpu.Po ./$(DEPDIR)/getcwd.Po \
-       ./$(DEPDIR)/getdents.Po ./$(DEPDIR)/getdents64.Po \
-       ./$(DEPDIR)/getegid.Po ./$(DEPDIR)/getegid32.Po \
-       ./$(DEPDIR)/geteuid.Po ./$(DEPDIR)/geteuid32.Po \
-       ./$(DEPDIR)/getgid.Po ./$(DEPDIR)/getgid32.Po \
-       ./$(DEPDIR)/getgroups.Po ./$(DEPDIR)/getgroups32.Po \
-       ./$(DEPDIR)/getpeername.Po ./$(DEPDIR)/getpgrp.Po \
-       ./$(DEPDIR)/getpid.Po ./$(DEPDIR)/getppid.Po \
-       ./$(DEPDIR)/getrandom.Po ./$(DEPDIR)/getresgid.Po \
-       ./$(DEPDIR)/getresgid32.Po ./$(DEPDIR)/getresuid.Po \
-       ./$(DEPDIR)/getresuid32.Po ./$(DEPDIR)/getrlimit.Po \
-       ./$(DEPDIR)/getrusage.Po ./$(DEPDIR)/getsid.Po \
-       ./$(DEPDIR)/getsockname.Po ./$(DEPDIR)/gettid.Po \
+       ./$(DEPDIR)/get_process_reaper.Po ./$(DEPDIR)/getcpu.Po \
+       ./$(DEPDIR)/getcwd.Po ./$(DEPDIR)/getdents-v.Po \
+       ./$(DEPDIR)/getdents.Po ./$(DEPDIR)/getdents64-v.Po \
+       ./$(DEPDIR)/getdents64.Po ./$(DEPDIR)/getegid.Po \
+       ./$(DEPDIR)/getegid32.Po ./$(DEPDIR)/geteuid.Po \
+       ./$(DEPDIR)/geteuid32.Po ./$(DEPDIR)/getgid.Po \
+       ./$(DEPDIR)/getgid32.Po ./$(DEPDIR)/getgroups.Po \
+       ./$(DEPDIR)/getgroups32.Po ./$(DEPDIR)/getpeername.Po \
+       ./$(DEPDIR)/getpgrp--pidns-translation.Po \
+       ./$(DEPDIR)/getpgrp.Po \
+       ./$(DEPDIR)/getpid--pidns-translation.Po ./$(DEPDIR)/getpid.Po \
+       ./$(DEPDIR)/getppid.Po ./$(DEPDIR)/getrandom.Po \
+       ./$(DEPDIR)/getresgid.Po ./$(DEPDIR)/getresgid32.Po \
+       ./$(DEPDIR)/getresuid.Po ./$(DEPDIR)/getresuid32.Po \
+       ./$(DEPDIR)/getrlimit.Po ./$(DEPDIR)/getrusage.Po \
+       ./$(DEPDIR)/getsid--pidns-translation.Po ./$(DEPDIR)/getsid.Po \
+       ./$(DEPDIR)/getsockname.Po \
+       ./$(DEPDIR)/gettid--pidns-translation.Po ./$(DEPDIR)/gettid.Po \
        ./$(DEPDIR)/getuid.Po ./$(DEPDIR)/getuid32.Po \
-       ./$(DEPDIR)/getxxid.Po ./$(DEPDIR)/group_req.Po \
+       ./$(DEPDIR)/getxgid.Po ./$(DEPDIR)/getxpid.Po \
+       ./$(DEPDIR)/getxuid.Po ./$(DEPDIR)/group_req.Po \
        ./$(DEPDIR)/inet-cmsg.Po ./$(DEPDIR)/init_module.Po \
        ./$(DEPDIR)/inject-nf.Po ./$(DEPDIR)/inotify.Po \
-       ./$(DEPDIR)/inotify_init1.Po ./$(DEPDIR)/int_0x80.Po \
-       ./$(DEPDIR)/io_uring_enter.Po ./$(DEPDIR)/io_uring_register.Po \
-       ./$(DEPDIR)/io_uring_setup.Po ./$(DEPDIR)/ioctl.Po \
+       ./$(DEPDIR)/inotify_init-y.Po ./$(DEPDIR)/inotify_init.Po \
+       ./$(DEPDIR)/inotify_init1-y.Po ./$(DEPDIR)/inotify_init1.Po \
+       ./$(DEPDIR)/int_0x80.Po ./$(DEPDIR)/io_uring_enter.Po \
+       ./$(DEPDIR)/io_uring_register.Po ./$(DEPDIR)/io_uring_setup.Po \
+       ./$(DEPDIR)/ioctl.Po \
+       ./$(DEPDIR)/ioctl_block--pidns-translation.Po \
        ./$(DEPDIR)/ioctl_block.Po ./$(DEPDIR)/ioctl_dm-v.Po \
-       ./$(DEPDIR)/ioctl_dm.Po ./$(DEPDIR)/ioctl_evdev-success-v.Po \
+       ./$(DEPDIR)/ioctl_dm.Po ./$(DEPDIR)/ioctl_evdev-Xabbrev.Po \
+       ./$(DEPDIR)/ioctl_evdev-Xraw.Po \
+       ./$(DEPDIR)/ioctl_evdev-Xverbose.Po \
+       ./$(DEPDIR)/ioctl_evdev-success-Xabbrev.Po \
+       ./$(DEPDIR)/ioctl_evdev-success-Xraw.Po \
+       ./$(DEPDIR)/ioctl_evdev-success-Xverbose.Po \
+       ./$(DEPDIR)/ioctl_evdev-success-v-Xabbrev.Po \
+       ./$(DEPDIR)/ioctl_evdev-success-v-Xraw.Po \
+       ./$(DEPDIR)/ioctl_evdev-success-v-Xverbose.Po \
+       ./$(DEPDIR)/ioctl_evdev-success-v.Po \
        ./$(DEPDIR)/ioctl_evdev-success.Po \
+       ./$(DEPDIR)/ioctl_evdev-v-Xabbrev.Po \
+       ./$(DEPDIR)/ioctl_evdev-v-Xraw.Po \
+       ./$(DEPDIR)/ioctl_evdev-v-Xverbose.Po \
        ./$(DEPDIR)/ioctl_evdev-v.Po ./$(DEPDIR)/ioctl_evdev.Po \
+       ./$(DEPDIR)/ioctl_hdio-Xabbrev.Po \
+       ./$(DEPDIR)/ioctl_hdio-Xraw.Po \
+       ./$(DEPDIR)/ioctl_hdio-Xverbose.Po \
+       ./$(DEPDIR)/ioctl_hdio-success-Xabbrev.Po \
+       ./$(DEPDIR)/ioctl_hdio-success-Xraw.Po \
+       ./$(DEPDIR)/ioctl_hdio-success-Xverbose.Po \
+       ./$(DEPDIR)/ioctl_hdio-success-v-Xabbrev.Po \
+       ./$(DEPDIR)/ioctl_hdio-success-v-Xraw.Po \
+       ./$(DEPDIR)/ioctl_hdio-success-v-Xverbose.Po \
+       ./$(DEPDIR)/ioctl_hdio-success-v.Po \
+       ./$(DEPDIR)/ioctl_hdio-success.Po \
+       ./$(DEPDIR)/ioctl_hdio-v-Xabbrev.Po \
+       ./$(DEPDIR)/ioctl_hdio-v-Xraw.Po \
+       ./$(DEPDIR)/ioctl_hdio-v-Xverbose.Po \
+       ./$(DEPDIR)/ioctl_hdio-v.Po ./$(DEPDIR)/ioctl_hdio.Po \
        ./$(DEPDIR)/ioctl_inotify.Po ./$(DEPDIR)/ioctl_kvm_run-v.Po \
        ./$(DEPDIR)/ioctl_kvm_run.Po \
        ./$(DEPDIR)/ioctl_kvm_run_auxstr_vcpu.Po \
@@ -2981,21 +4142,38 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/ioctl_rtc-v.Po ./$(DEPDIR)/ioctl_rtc.Po \
        ./$(DEPDIR)/ioctl_scsi.Po ./$(DEPDIR)/ioctl_sg_io_v3.Po \
        ./$(DEPDIR)/ioctl_sg_io_v4.Po \
-       ./$(DEPDIR)/ioctl_sock_gifconf.Po ./$(DEPDIR)/ioctl_uffdio.Po \
-       ./$(DEPDIR)/ioctl_v4l2.Po ./$(DEPDIR)/ioperm.Po \
-       ./$(DEPDIR)/iopl.Po ./$(DEPDIR)/ioprio-Xabbrev.Po \
-       ./$(DEPDIR)/ioprio-Xraw.Po ./$(DEPDIR)/ioprio-Xverbose.Po \
-       ./$(DEPDIR)/ioprio.Po ./$(DEPDIR)/ip_mreq.Po \
-       ./$(DEPDIR)/ipc.Po ./$(DEPDIR)/ipc_msg-Xabbrev.Po \
-       ./$(DEPDIR)/ipc_msg-Xraw.Po ./$(DEPDIR)/ipc_msg-Xverbose.Po \
-       ./$(DEPDIR)/ipc_msg.Po ./$(DEPDIR)/ipc_msgbuf-Xabbrev.Po \
+       ./$(DEPDIR)/ioctl_sock_gifconf.Po ./$(DEPDIR)/ioctl_tee.Po \
+       ./$(DEPDIR)/ioctl_uffdio.Po ./$(DEPDIR)/ioctl_v4l2-Xabbrev.Po \
+       ./$(DEPDIR)/ioctl_v4l2-Xraw.Po \
+       ./$(DEPDIR)/ioctl_v4l2-Xverbose.Po \
+       ./$(DEPDIR)/ioctl_v4l2-success-Xabbrev.Po \
+       ./$(DEPDIR)/ioctl_v4l2-success-Xraw.Po \
+       ./$(DEPDIR)/ioctl_v4l2-success-Xverbose.Po \
+       ./$(DEPDIR)/ioctl_v4l2-success-v-Xabbrev.Po \
+       ./$(DEPDIR)/ioctl_v4l2-success-v-Xraw.Po \
+       ./$(DEPDIR)/ioctl_v4l2-success-v-Xverbose.Po \
+       ./$(DEPDIR)/ioctl_v4l2-success-v.Po \
+       ./$(DEPDIR)/ioctl_v4l2-success.Po \
+       ./$(DEPDIR)/ioctl_v4l2-v-Xabbrev.Po \
+       ./$(DEPDIR)/ioctl_v4l2-v-Xraw.Po \
+       ./$(DEPDIR)/ioctl_v4l2-v-Xverbose.Po \
+       ./$(DEPDIR)/ioctl_v4l2-v.Po ./$(DEPDIR)/ioctl_v4l2.Po \
+       ./$(DEPDIR)/ioctl_watchdog.Po ./$(DEPDIR)/ioperm.Po \
+       ./$(DEPDIR)/iopl.Po ./$(DEPDIR)/ioprio--pidns-translation.Po \
+       ./$(DEPDIR)/ioprio-Xabbrev.Po ./$(DEPDIR)/ioprio-Xraw.Po \
+       ./$(DEPDIR)/ioprio-Xverbose.Po ./$(DEPDIR)/ioprio.Po \
+       ./$(DEPDIR)/ip_mreq.Po ./$(DEPDIR)/ipc.Po \
+       ./$(DEPDIR)/ipc_msg-Xabbrev.Po ./$(DEPDIR)/ipc_msg-Xraw.Po \
+       ./$(DEPDIR)/ipc_msg-Xverbose.Po ./$(DEPDIR)/ipc_msg.Po \
+       ./$(DEPDIR)/ipc_msgbuf-Xabbrev.Po \
        ./$(DEPDIR)/ipc_msgbuf-Xraw.Po \
        ./$(DEPDIR)/ipc_msgbuf-Xverbose.Po ./$(DEPDIR)/ipc_msgbuf.Po \
        ./$(DEPDIR)/ipc_sem-Xabbrev.Po ./$(DEPDIR)/ipc_sem-Xraw.Po \
        ./$(DEPDIR)/ipc_sem-Xverbose.Po ./$(DEPDIR)/ipc_sem.Po \
        ./$(DEPDIR)/ipc_shm-Xabbrev.Po ./$(DEPDIR)/ipc_shm-Xraw.Po \
        ./$(DEPDIR)/ipc_shm-Xverbose.Po ./$(DEPDIR)/ipc_shm.Po \
-       ./$(DEPDIR)/is_linux_mips_n64.Po ./$(DEPDIR)/kcmp-y.Po \
+       ./$(DEPDIR)/is_linux_mips_n64.Po \
+       ./$(DEPDIR)/kcmp-y--pidns-translation.Po ./$(DEPDIR)/kcmp-y.Po \
        ./$(DEPDIR)/kcmp.Po ./$(DEPDIR)/kern_features.Po \
        ./$(DEPDIR)/kernel_version-Xabbrev.Po \
        ./$(DEPDIR)/kernel_version-Xraw.Po \
@@ -3003,10 +4181,12 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/kernel_version.Po ./$(DEPDIR)/kexec_file_load.Po \
        ./$(DEPDIR)/kexec_load.Po ./$(DEPDIR)/keyctl-Xabbrev.Po \
        ./$(DEPDIR)/keyctl-Xraw.Po ./$(DEPDIR)/keyctl-Xverbose.Po \
-       ./$(DEPDIR)/keyctl.Po ./$(DEPDIR)/kill.Po \
-       ./$(DEPDIR)/kill_child.Po ./$(DEPDIR)/ksysent.Po \
-       ./$(DEPDIR)/lchown.Po ./$(DEPDIR)/lchown32.Po \
+       ./$(DEPDIR)/keyctl.Po ./$(DEPDIR)/kill--pidns-translation.Po \
+       ./$(DEPDIR)/kill.Po ./$(DEPDIR)/kill_child.Po \
+       ./$(DEPDIR)/ksysent.Po ./$(DEPDIR)/lchown.Po \
+       ./$(DEPDIR)/lchown32.Po \
        ./$(DEPDIR)/libtests_a-create_nl_socket.Po \
+       ./$(DEPDIR)/libtests_a-create_tmpfile.Po \
        ./$(DEPDIR)/libtests_a-errno2name.Po \
        ./$(DEPDIR)/libtests_a-error_msg.Po \
        ./$(DEPDIR)/libtests_a-fill_memory.Po \
@@ -3018,37 +4198,48 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/libtests_a-inode_of_sockfd.Po \
        ./$(DEPDIR)/libtests_a-libmmsg.Po \
        ./$(DEPDIR)/libtests_a-libsocketcall.Po \
+       ./$(DEPDIR)/libtests_a-lock_file.Po \
        ./$(DEPDIR)/libtests_a-overflowuid.Po \
+       ./$(DEPDIR)/libtests_a-pidns.Po \
        ./$(DEPDIR)/libtests_a-pipe_maxfd.Po \
        ./$(DEPDIR)/libtests_a-print_quoted_string.Po \
        ./$(DEPDIR)/libtests_a-print_time.Po \
        ./$(DEPDIR)/libtests_a-printflags.Po \
-       ./$(DEPDIR)/libtests_a-printxval.Po \
+       ./$(DEPDIR)/libtests_a-printxval-Xabbrev.Po \
+       ./$(DEPDIR)/libtests_a-printxval-Xraw.Po \
+       ./$(DEPDIR)/libtests_a-printxval-Xverbose.Po \
        ./$(DEPDIR)/libtests_a-signal2name.Po \
        ./$(DEPDIR)/libtests_a-skip_unavailable.Po \
        ./$(DEPDIR)/libtests_a-sprintrc.Po \
+       ./$(DEPDIR)/libtests_a-status.Po \
        ./$(DEPDIR)/libtests_a-tail_alloc.Po \
        ./$(DEPDIR)/libtests_a-test_printpath.Po \
        ./$(DEPDIR)/libtests_a-test_printstrn.Po \
        ./$(DEPDIR)/libtests_a-test_ucopy.Po \
-       ./$(DEPDIR)/libtests_a-tprintf.Po ./$(DEPDIR)/link.Po \
-       ./$(DEPDIR)/linkat.Po ./$(DEPDIR)/list_sigaction_signum.Po \
-       ./$(DEPDIR)/llseek.Po ./$(DEPDIR)/localtime.Po \
-       ./$(DEPDIR)/lookup_dcookie.Po ./$(DEPDIR)/looping_threads.Po \
-       ./$(DEPDIR)/lseek.Po ./$(DEPDIR)/lstat.Po \
-       ./$(DEPDIR)/lstat64-lstat64.Po ./$(DEPDIR)/madvise.Po \
-       ./$(DEPDIR)/mbind.Po ./$(DEPDIR)/membarrier.Po \
-       ./$(DEPDIR)/memfd_create-Xabbrev.Po \
+       ./$(DEPDIR)/libtests_a-tprintf.Po \
+       ./$(DEPDIR)/libtests_a-xmalloc_for_tests.Po \
+       ./$(DEPDIR)/link.Po ./$(DEPDIR)/linkat.Po \
+       ./$(DEPDIR)/list_sigaction_signum.Po ./$(DEPDIR)/llseek.Po \
+       ./$(DEPDIR)/localtime.Po ./$(DEPDIR)/lookup_dcookie.Po \
+       ./$(DEPDIR)/looping_threads.Po ./$(DEPDIR)/lseek.Po \
+       ./$(DEPDIR)/lstat.Po ./$(DEPDIR)/lstat64-lstat64.Po \
+       ./$(DEPDIR)/madvise.Po \
+       ./$(DEPDIR)/maybe_switch_current_tcp--quiet-thread-execve.Po \
+       ./$(DEPDIR)/maybe_switch_current_tcp.Po \
+       ./$(DEPDIR)/mbind-Xabbrev.Po ./$(DEPDIR)/mbind-Xraw.Po \
+       ./$(DEPDIR)/mbind-Xverbose.Po ./$(DEPDIR)/mbind.Po \
+       ./$(DEPDIR)/membarrier.Po ./$(DEPDIR)/memfd_create-Xabbrev.Po \
        ./$(DEPDIR)/memfd_create-Xraw.Po \
        ./$(DEPDIR)/memfd_create-Xverbose.Po \
-       ./$(DEPDIR)/memfd_create.Po ./$(DEPDIR)/migrate_pages.Po \
-       ./$(DEPDIR)/mincore.Po ./$(DEPDIR)/mkdir.Po \
-       ./$(DEPDIR)/mkdirat.Po ./$(DEPDIR)/mknod.Po \
-       ./$(DEPDIR)/mknodat.Po ./$(DEPDIR)/mlock.Po \
-       ./$(DEPDIR)/mlock2.Po ./$(DEPDIR)/mlockall.Po \
-       ./$(DEPDIR)/mmap-Xabbrev.Po ./$(DEPDIR)/mmap-Xraw.Po \
-       ./$(DEPDIR)/mmap-Xverbose.Po ./$(DEPDIR)/mmap.Po \
-       ./$(DEPDIR)/mmap64-mmap64.Po \
+       ./$(DEPDIR)/memfd_create.Po \
+       ./$(DEPDIR)/migrate_pages--pidns-translation.Po \
+       ./$(DEPDIR)/migrate_pages.Po ./$(DEPDIR)/mincore.Po \
+       ./$(DEPDIR)/mkdir.Po ./$(DEPDIR)/mkdirat.Po \
+       ./$(DEPDIR)/mknod.Po ./$(DEPDIR)/mknodat.Po \
+       ./$(DEPDIR)/mlock.Po ./$(DEPDIR)/mlock2.Po \
+       ./$(DEPDIR)/mlockall.Po ./$(DEPDIR)/mmap-Xabbrev.Po \
+       ./$(DEPDIR)/mmap-Xraw.Po ./$(DEPDIR)/mmap-Xverbose.Po \
+       ./$(DEPDIR)/mmap.Po ./$(DEPDIR)/mmap64-mmap64.Po \
        ./$(DEPDIR)/mmap64_Xabbrev-mmap64-Xabbrev.Po \
        ./$(DEPDIR)/mmap64_Xraw-mmap64-Xraw.Po \
        ./$(DEPDIR)/mmap64_Xverbose-mmap64-Xverbose.Po \
@@ -3056,24 +4247,34 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/mmsg_name-v.Po ./$(DEPDIR)/mmsg_name.Po \
        ./$(DEPDIR)/modify_ldt.Po ./$(DEPDIR)/mount-Xabbrev.Po \
        ./$(DEPDIR)/mount-Xraw.Po ./$(DEPDIR)/mount-Xverbose.Po \
-       ./$(DEPDIR)/mount.Po ./$(DEPDIR)/move_pages-Xabbrev.Po \
+       ./$(DEPDIR)/mount.Po ./$(DEPDIR)/move_mount-P.Po \
+       ./$(DEPDIR)/move_mount.Po \
+       ./$(DEPDIR)/move_pages--pidns-translation.Po \
+       ./$(DEPDIR)/move_pages-Xabbrev.Po \
        ./$(DEPDIR)/move_pages-Xraw.Po \
        ./$(DEPDIR)/move_pages-Xverbose.Po ./$(DEPDIR)/move_pages.Po \
        ./$(DEPDIR)/mq.Po ./$(DEPDIR)/mq_sendrecv-read.Po \
        ./$(DEPDIR)/mq_sendrecv-write.Po ./$(DEPDIR)/mq_sendrecv.Po \
        ./$(DEPDIR)/msg_control-v.Po ./$(DEPDIR)/msg_control.Po \
        ./$(DEPDIR)/msg_name.Po ./$(DEPDIR)/munlockall.Po \
-       ./$(DEPDIR)/nanosleep.Po ./$(DEPDIR)/net-accept-connect.Po \
+       ./$(DEPDIR)/nanosleep.Po \
+       ./$(DEPDIR)/net--decode-fds-dev-netlink.Po \
+       ./$(DEPDIR)/net--decode-fds-none-netlink.Po \
+       ./$(DEPDIR)/net--decode-fds-path-netlink.Po \
+       ./$(DEPDIR)/net--decode-fds-socket-netlink.Po \
+       ./$(DEPDIR)/net-accept-connect.Po \
        ./$(DEPDIR)/net-icmp_filter.Po \
        ./$(DEPDIR)/net-packet_mreq-Xabbrev.Po \
        ./$(DEPDIR)/net-packet_mreq-Xraw.Po \
        ./$(DEPDIR)/net-packet_mreq-Xverbose.Po \
-       ./$(DEPDIR)/net-packet_mreq.Po ./$(DEPDIR)/net-sockaddr.Po \
-       ./$(DEPDIR)/net-tpacket_req.Po \
+       ./$(DEPDIR)/net-packet_mreq.Po \
+       ./$(DEPDIR)/net-sockaddr--pidns-translation.Po \
+       ./$(DEPDIR)/net-sockaddr.Po ./$(DEPDIR)/net-tpacket_req.Po \
        ./$(DEPDIR)/net-tpacket_stats-success.Po \
        ./$(DEPDIR)/net-tpacket_stats.Po ./$(DEPDIR)/net-y-unix.Po \
        ./$(DEPDIR)/net-yy-inet.Po ./$(DEPDIR)/net-yy-inet6.Po \
        ./$(DEPDIR)/net-yy-netlink.Po ./$(DEPDIR)/net-yy-unix.Po \
+       ./$(DEPDIR)/netlink_audit--pidns-translation.Po \
        ./$(DEPDIR)/netlink_audit.Po ./$(DEPDIR)/netlink_crypto.Po \
        ./$(DEPDIR)/netlink_generic.Po \
        ./$(DEPDIR)/netlink_inet_diag.Po \
@@ -3104,7 +4305,9 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/nlattr_ifla_af_spec.Po \
        ./$(DEPDIR)/nlattr_ifla_brport.Po \
        ./$(DEPDIR)/nlattr_ifla_linkinfo.Po \
-       ./$(DEPDIR)/nlattr_ifla_port.Po ./$(DEPDIR)/nlattr_ifla_xdp.Po \
+       ./$(DEPDIR)/nlattr_ifla_port.Po \
+       ./$(DEPDIR)/nlattr_ifla_xdp-y.Po \
+       ./$(DEPDIR)/nlattr_ifla_xdp.Po \
        ./$(DEPDIR)/nlattr_inet_diag_msg.Po \
        ./$(DEPDIR)/nlattr_inet_diag_req_compat.Po \
        ./$(DEPDIR)/nlattr_inet_diag_req_v2.Po \
@@ -3128,7 +4331,14 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/oldselect-P.Po ./$(DEPDIR)/oldselect-efault-P.Po \
        ./$(DEPDIR)/oldselect-efault.Po ./$(DEPDIR)/oldselect.Po \
        ./$(DEPDIR)/oldstat.Po ./$(DEPDIR)/open.Po \
-       ./$(DEPDIR)/openat.Po ./$(DEPDIR)/orphaned_process_group.Po \
+       ./$(DEPDIR)/open_tree-P.Po ./$(DEPDIR)/open_tree.Po \
+       ./$(DEPDIR)/openat.Po ./$(DEPDIR)/openat2-Xabbrev.Po \
+       ./$(DEPDIR)/openat2-Xraw.Po ./$(DEPDIR)/openat2-Xverbose.Po \
+       ./$(DEPDIR)/openat2-v-y-Xabbrev.Po \
+       ./$(DEPDIR)/openat2-v-y-Xraw.Po \
+       ./$(DEPDIR)/openat2-v-y-Xverbose.Po ./$(DEPDIR)/openat2-v-y.Po \
+       ./$(DEPDIR)/openat2-v.Po ./$(DEPDIR)/openat2-y.Po \
+       ./$(DEPDIR)/openat2.Po ./$(DEPDIR)/orphaned_process_group.Po \
        ./$(DEPDIR)/osf_utimes.Po ./$(DEPDIR)/pause.Po \
        ./$(DEPDIR)/pc.Po ./$(DEPDIR)/perf_event_open.Po \
        ./$(DEPDIR)/perf_event_open_nonverbose.Po \
@@ -3136,14 +4346,24 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/personality-Xabbrev.Po \
        ./$(DEPDIR)/personality-Xraw.Po \
        ./$(DEPDIR)/personality-Xverbose.Po ./$(DEPDIR)/personality.Po \
-       ./$(DEPDIR)/pidfd_send_signal.Po ./$(DEPDIR)/pipe.Po \
-       ./$(DEPDIR)/pipe2.Po ./$(DEPDIR)/pkey_alloc.Po \
-       ./$(DEPDIR)/pkey_free.Po ./$(DEPDIR)/pkey_mprotect.Po \
-       ./$(DEPDIR)/poll-P.Po ./$(DEPDIR)/poll.Po \
-       ./$(DEPDIR)/ppoll-P.Po ./$(DEPDIR)/ppoll-v.Po \
-       ./$(DEPDIR)/ppoll.Po ./$(DEPDIR)/prctl-arg2-intptr.Po \
-       ./$(DEPDIR)/prctl-dumpable.Po ./$(DEPDIR)/prctl-name.Po \
-       ./$(DEPDIR)/prctl-no-args.Po ./$(DEPDIR)/prctl-pdeathsig.Po \
+       ./$(DEPDIR)/pidfd_getfd-y.Po ./$(DEPDIR)/pidfd_getfd-yy.Po \
+       ./$(DEPDIR)/pidfd_getfd.Po \
+       ./$(DEPDIR)/pidfd_open--decode-fd-path.Po \
+       ./$(DEPDIR)/pidfd_open--decode-fd-pidfd.Po \
+       ./$(DEPDIR)/pidfd_open--decode-fd-socket.Po \
+       ./$(DEPDIR)/pidfd_open--pidns-translation.Po \
+       ./$(DEPDIR)/pidfd_open-P.Po ./$(DEPDIR)/pidfd_open-y.Po \
+       ./$(DEPDIR)/pidfd_open-yy.Po ./$(DEPDIR)/pidfd_open.Po \
+       ./$(DEPDIR)/pidfd_send_signal--pidns-translation.Po \
+       ./$(DEPDIR)/pidfd_send_signal.Po ./$(DEPDIR)/pidns-cache.Po \
+       ./$(DEPDIR)/pipe.Po ./$(DEPDIR)/pipe2.Po \
+       ./$(DEPDIR)/pkey_alloc.Po ./$(DEPDIR)/pkey_free.Po \
+       ./$(DEPDIR)/pkey_mprotect.Po ./$(DEPDIR)/poll-P.Po \
+       ./$(DEPDIR)/poll.Po ./$(DEPDIR)/ppoll-P.Po \
+       ./$(DEPDIR)/ppoll-v.Po ./$(DEPDIR)/ppoll.Po \
+       ./$(DEPDIR)/prctl-arg2-intptr.Po ./$(DEPDIR)/prctl-dumpable.Po \
+       ./$(DEPDIR)/prctl-name.Po ./$(DEPDIR)/prctl-no-args.Po \
+       ./$(DEPDIR)/prctl-pdeathsig.Po \
        ./$(DEPDIR)/prctl-seccomp-filter-v.Po \
        ./$(DEPDIR)/prctl-seccomp-strict.Po \
        ./$(DEPDIR)/prctl-securebits.Po \
@@ -3152,7 +4372,7 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/pread64_pwrite64-pread64-pwrite64.Po \
        ./$(DEPDIR)/preadv-preadv.Po ./$(DEPDIR)/preadv2-pwritev2.Po \
        ./$(DEPDIR)/preadv_pwritev-preadv-pwritev.Po \
-       ./$(DEPDIR)/print_maxfd.Po \
+       ./$(DEPDIR)/print_maxfd.Po ./$(DEPDIR)/print_ppid_tracerpid.Po \
        ./$(DEPDIR)/printpath-umovestr-peekdata.Po \
        ./$(DEPDIR)/printpath-umovestr-undumpable.Po \
        ./$(DEPDIR)/printpath-umovestr.Po \
@@ -3161,8 +4381,12 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/printsignal-Xverbose.Po ./$(DEPDIR)/printstr.Po \
        ./$(DEPDIR)/printstrn-umoven-peekdata.Po \
        ./$(DEPDIR)/printstrn-umoven-undumpable.Po \
-       ./$(DEPDIR)/printstrn-umoven.Po ./$(DEPDIR)/prlimit64.Po \
+       ./$(DEPDIR)/printstrn-umoven.Po \
+       ./$(DEPDIR)/prlimit64--pidns-translation.Po \
+       ./$(DEPDIR)/prlimit64.Po \
+       ./$(DEPDIR)/process_vm_readv--pidns-translation.Po \
        ./$(DEPDIR)/process_vm_readv.Po \
+       ./$(DEPDIR)/process_vm_writev--pidns-translation.Po \
        ./$(DEPDIR)/process_vm_writev.Po ./$(DEPDIR)/pselect6.Po \
        ./$(DEPDIR)/ptrace.Po ./$(DEPDIR)/ptrace_syscall_info.Po \
        ./$(DEPDIR)/pwritev-pwritev.Po ./$(DEPDIR)/qual_fault.Po \
@@ -3180,8 +4404,10 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/readahead.Po ./$(DEPDIR)/readdir.Po \
        ./$(DEPDIR)/readlink.Po ./$(DEPDIR)/readlinkat.Po \
        ./$(DEPDIR)/readv.Po ./$(DEPDIR)/reboot.Po \
-       ./$(DEPDIR)/recvfrom.Po ./$(DEPDIR)/recvmmsg-timeout.Po \
-       ./$(DEPDIR)/recvmsg.Po ./$(DEPDIR)/redirect-fds.Po \
+       ./$(DEPDIR)/recv-MSG_TRUNC.Po \
+       ./$(DEPDIR)/recvfrom-MSG_TRUNC.Po ./$(DEPDIR)/recvfrom.Po \
+       ./$(DEPDIR)/recvmmsg-timeout.Po ./$(DEPDIR)/recvmsg.Po \
+       ./$(DEPDIR)/redirect-fds.Po \
        ./$(DEPDIR)/remap_file_pages-Xabbrev.Po \
        ./$(DEPDIR)/remap_file_pages-Xraw.Po \
        ./$(DEPDIR)/remap_file_pages-Xverbose.Po \
@@ -3190,9 +4416,11 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/request_key.Po ./$(DEPDIR)/restart_syscall.Po \
        ./$(DEPDIR)/riscv_flush_icache.Po ./$(DEPDIR)/rmdir.Po \
        ./$(DEPDIR)/rt_sigaction.Po ./$(DEPDIR)/rt_sigpending.Po \
-       ./$(DEPDIR)/rt_sigprocmask.Po ./$(DEPDIR)/rt_sigqueueinfo.Po \
-       ./$(DEPDIR)/rt_sigreturn.Po ./$(DEPDIR)/rt_sigsuspend.Po \
-       ./$(DEPDIR)/rt_sigtimedwait.Po \
+       ./$(DEPDIR)/rt_sigprocmask.Po \
+       ./$(DEPDIR)/rt_sigqueueinfo--pidns-translation.Po \
+       ./$(DEPDIR)/rt_sigqueueinfo.Po ./$(DEPDIR)/rt_sigreturn.Po \
+       ./$(DEPDIR)/rt_sigsuspend.Po ./$(DEPDIR)/rt_sigtimedwait.Po \
+       ./$(DEPDIR)/rt_tgsigqueueinfo--pidns-translation.Po \
        ./$(DEPDIR)/rt_tgsigqueueinfo.Po \
        ./$(DEPDIR)/run_expect_termsig.Po \
        ./$(DEPDIR)/s390_guarded_storage-v.Po \
@@ -3202,22 +4430,31 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/s390_sthyi.Po \
        ./$(DEPDIR)/sched_get_priority_mxx.Po \
        ./$(DEPDIR)/sched_rr_get_interval.Po \
-       ./$(DEPDIR)/sched_xetaffinity.Po ./$(DEPDIR)/sched_xetattr.Po \
+       ./$(DEPDIR)/sched_xetaffinity--pidns-translation.Po \
+       ./$(DEPDIR)/sched_xetaffinity.Po \
+       ./$(DEPDIR)/sched_xetattr--pidns-translation.Po \
+       ./$(DEPDIR)/sched_xetattr.Po \
+       ./$(DEPDIR)/sched_xetparam--pidns-translation.Po \
        ./$(DEPDIR)/sched_xetparam.Po \
+       ./$(DEPDIR)/sched_xetscheduler--pidns-translation.Po \
        ./$(DEPDIR)/sched_xetscheduler.Po ./$(DEPDIR)/sched_yield.Po \
        ./$(DEPDIR)/scm_rights.Po ./$(DEPDIR)/seccomp-filter-v.Po \
        ./$(DEPDIR)/seccomp-filter.Po ./$(DEPDIR)/seccomp-strict.Po \
        ./$(DEPDIR)/seccomp_get_action_avail.Po \
        ./$(DEPDIR)/select-P.Po ./$(DEPDIR)/select.Po \
-       ./$(DEPDIR)/semop.Po ./$(DEPDIR)/sendfile.Po \
-       ./$(DEPDIR)/sendfile64.Po ./$(DEPDIR)/set_mempolicy.Po \
-       ./$(DEPDIR)/set_ptracer_any.Po ./$(DEPDIR)/set_sigblock.Po \
-       ./$(DEPDIR)/set_sigign.Po ./$(DEPDIR)/setdomainname.Po \
-       ./$(DEPDIR)/setfsgid.Po ./$(DEPDIR)/setfsgid32.Po \
-       ./$(DEPDIR)/setfsuid.Po ./$(DEPDIR)/setfsuid32.Po \
-       ./$(DEPDIR)/setgid.Po ./$(DEPDIR)/setgid32.Po \
-       ./$(DEPDIR)/setgroups.Po ./$(DEPDIR)/setgroups32.Po \
-       ./$(DEPDIR)/sethostname.Po ./$(DEPDIR)/setns.Po \
+       ./$(DEPDIR)/semop-indirect.Po ./$(DEPDIR)/semop.Po \
+       ./$(DEPDIR)/semtimedop.Po ./$(DEPDIR)/sendfile.Po \
+       ./$(DEPDIR)/sendfile64.Po ./$(DEPDIR)/set_mempolicy-Xabbrev.Po \
+       ./$(DEPDIR)/set_mempolicy-Xraw.Po \
+       ./$(DEPDIR)/set_mempolicy-Xverbose.Po \
+       ./$(DEPDIR)/set_mempolicy.Po ./$(DEPDIR)/set_ptracer_any.Po \
+       ./$(DEPDIR)/set_sigblock.Po ./$(DEPDIR)/set_sigign.Po \
+       ./$(DEPDIR)/setdomainname.Po ./$(DEPDIR)/setfsgid.Po \
+       ./$(DEPDIR)/setfsgid32.Po ./$(DEPDIR)/setfsuid.Po \
+       ./$(DEPDIR)/setfsuid32.Po ./$(DEPDIR)/setgid.Po \
+       ./$(DEPDIR)/setgid32.Po ./$(DEPDIR)/setgroups.Po \
+       ./$(DEPDIR)/setgroups32.Po ./$(DEPDIR)/sethostname.Po \
+       ./$(DEPDIR)/setns.Po ./$(DEPDIR)/setpgrp-exec.Po \
        ./$(DEPDIR)/setregid.Po ./$(DEPDIR)/setregid32.Po \
        ./$(DEPDIR)/setresgid.Po ./$(DEPDIR)/setresgid32.Po \
        ./$(DEPDIR)/setresuid.Po ./$(DEPDIR)/setresuid32.Po \
@@ -3228,11 +4465,14 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/shmxt.Po ./$(DEPDIR)/shutdown.Po \
        ./$(DEPDIR)/sigaction.Po ./$(DEPDIR)/sigaltstack.Po \
        ./$(DEPDIR)/siginfo.Po ./$(DEPDIR)/signal.Po \
+       ./$(DEPDIR)/signal_receive--pidns-translation.Po \
        ./$(DEPDIR)/signal_receive.Po ./$(DEPDIR)/signalfd4.Po \
        ./$(DEPDIR)/sigpending.Po ./$(DEPDIR)/sigprocmask.Po \
        ./$(DEPDIR)/sigreturn.Po ./$(DEPDIR)/sigsuspend.Po \
        ./$(DEPDIR)/sleep.Po ./$(DEPDIR)/so_error.Po \
-       ./$(DEPDIR)/so_linger.Po ./$(DEPDIR)/so_peercred-Xabbrev.Po \
+       ./$(DEPDIR)/so_linger.Po \
+       ./$(DEPDIR)/so_peercred--pidns-translation.Po \
+       ./$(DEPDIR)/so_peercred-Xabbrev.Po \
        ./$(DEPDIR)/so_peercred-Xraw.Po \
        ./$(DEPDIR)/so_peercred-Xverbose.Po ./$(DEPDIR)/so_peercred.Po \
        ./$(DEPDIR)/sock_filter-v-Xabbrev.Po \
@@ -3246,6 +4486,7 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/sockopt-timestamp.Po ./$(DEPDIR)/splice.Po \
        ./$(DEPDIR)/stack-fcall-0.Po ./$(DEPDIR)/stack-fcall-1.Po \
        ./$(DEPDIR)/stack-fcall-2.Po ./$(DEPDIR)/stack-fcall-3.Po \
+       ./$(DEPDIR)/stack-fcall-attach.Po \
        ./$(DEPDIR)/stack-fcall-mangled-0.Po \
        ./$(DEPDIR)/stack-fcall-mangled-1.Po \
        ./$(DEPDIR)/stack-fcall-mangled-2.Po \
@@ -3253,22 +4494,45 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/stack-fcall-mangled.Po ./$(DEPDIR)/stack-fcall.Po \
        ./$(DEPDIR)/stat.Po ./$(DEPDIR)/stat64-stat64.Po \
        ./$(DEPDIR)/statfs-statfs.Po ./$(DEPDIR)/statfs64.Po \
-       ./$(DEPDIR)/statx.Po ./$(DEPDIR)/swap.Po \
-       ./$(DEPDIR)/sxetmask.Po ./$(DEPDIR)/symlink.Po \
-       ./$(DEPDIR)/symlinkat.Po ./$(DEPDIR)/sync.Po \
-       ./$(DEPDIR)/sync_file_range.Po ./$(DEPDIR)/sync_file_range2.Po \
-       ./$(DEPDIR)/sysinfo.Po ./$(DEPDIR)/syslog.Po \
-       ./$(DEPDIR)/tee.Po ./$(DEPDIR)/threads-execve.Po \
-       ./$(DEPDIR)/time.Po ./$(DEPDIR)/timer_create.Po \
-       ./$(DEPDIR)/timer_xettime.Po ./$(DEPDIR)/timerfd_xettime.Po \
-       ./$(DEPDIR)/times-fail.Po ./$(DEPDIR)/times.Po \
-       ./$(DEPDIR)/truncate.Po ./$(DEPDIR)/truncate64-truncate64.Po \
-       ./$(DEPDIR)/ugetrlimit.Po ./$(DEPDIR)/uio-uio.Po \
-       ./$(DEPDIR)/umask.Po ./$(DEPDIR)/umount.Po \
-       ./$(DEPDIR)/umount2.Po ./$(DEPDIR)/umoven-illptr.Po \
-       ./$(DEPDIR)/umovestr-illptr.Po ./$(DEPDIR)/umovestr.Po \
-       ./$(DEPDIR)/umovestr2.Po ./$(DEPDIR)/umovestr3.Po \
-       ./$(DEPDIR)/uname.Po ./$(DEPDIR)/unblock_reset_raise.Po \
+       ./$(DEPDIR)/status-all.Po ./$(DEPDIR)/status-failed-long.Po \
+       ./$(DEPDIR)/status-failed-status.Po \
+       ./$(DEPDIR)/status-failed.Po ./$(DEPDIR)/status-none-f.Po \
+       ./$(DEPDIR)/status-none-threads.Po ./$(DEPDIR)/status-none.Po \
+       ./$(DEPDIR)/status-successful-long.Po \
+       ./$(DEPDIR)/status-successful-status.Po \
+       ./$(DEPDIR)/status-successful.Po \
+       ./$(DEPDIR)/status-unfinished-threads.Po \
+       ./$(DEPDIR)/status-unfinished.Po ./$(DEPDIR)/statx.Po \
+       ./$(DEPDIR)/strace--strings-in-hex-all.Po \
+       ./$(DEPDIR)/strace--strings-in-hex-non-ascii.Po \
+       ./$(DEPDIR)/strace--strings-in-hex.Po ./$(DEPDIR)/strace-n.Po \
+       ./$(DEPDIR)/strace-x.Po ./$(DEPDIR)/strace-xx.Po \
+       ./$(DEPDIR)/swap.Po ./$(DEPDIR)/sxetmask.Po \
+       ./$(DEPDIR)/symlink.Po ./$(DEPDIR)/symlinkat.Po \
+       ./$(DEPDIR)/sync.Po ./$(DEPDIR)/sync_file_range.Po \
+       ./$(DEPDIR)/sync_file_range2.Po ./$(DEPDIR)/sysinfo.Po \
+       ./$(DEPDIR)/syslog-success.Po ./$(DEPDIR)/syslog.Po \
+       ./$(DEPDIR)/tee.Po ./$(DEPDIR)/tgkill--pidns-translation.Po \
+       ./$(DEPDIR)/tgkill.Po \
+       ./$(DEPDIR)/threads-execve--quiet-thread-execve.Po \
+       ./$(DEPDIR)/threads-execve-q.Po \
+       ./$(DEPDIR)/threads-execve-qq.Po \
+       ./$(DEPDIR)/threads-execve-qqq.Po \
+       ./$(DEPDIR)/threads-execve.Po ./$(DEPDIR)/time.Po \
+       ./$(DEPDIR)/timer_create.Po ./$(DEPDIR)/timer_xettime.Po \
+       ./$(DEPDIR)/timerfd_xettime.Po ./$(DEPDIR)/times-fail.Po \
+       ./$(DEPDIR)/times.Po ./$(DEPDIR)/tkill--pidns-translation.Po \
+       ./$(DEPDIR)/tkill.Po ./$(DEPDIR)/tracer_ppid_pgid_sid.Po \
+       ./$(DEPDIR)/trie_test-trie_for_tests.Po \
+       ./$(DEPDIR)/trie_test-trie_test.Po ./$(DEPDIR)/truncate.Po \
+       ./$(DEPDIR)/truncate64-truncate64.Po ./$(DEPDIR)/ugetrlimit.Po \
+       ./$(DEPDIR)/uio-uio.Po ./$(DEPDIR)/umask.Po \
+       ./$(DEPDIR)/umount.Po ./$(DEPDIR)/umount2.Po \
+       ./$(DEPDIR)/umoven-illptr.Po ./$(DEPDIR)/umovestr-illptr.Po \
+       ./$(DEPDIR)/umovestr.Po ./$(DEPDIR)/umovestr2.Po \
+       ./$(DEPDIR)/umovestr3.Po ./$(DEPDIR)/umovestr_cached.Po \
+       ./$(DEPDIR)/umovestr_cached_adjacent.Po ./$(DEPDIR)/uname.Po \
+       ./$(DEPDIR)/unblock_reset_raise.Po \
        ./$(DEPDIR)/unix-pair-send-recv.Po \
        ./$(DEPDIR)/unix-pair-sendto-recvfrom.Po ./$(DEPDIR)/unlink.Po \
        ./$(DEPDIR)/unlinkat.Po ./$(DEPDIR)/unshare.Po \
@@ -3281,10 +4545,15 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/wait4-v.Po ./$(DEPDIR)/wait4.Po \
        ./$(DEPDIR)/waitid-v.Po ./$(DEPDIR)/waitid.Po \
        ./$(DEPDIR)/waitpid.Po ./$(DEPDIR)/xattr-strings.Po \
-       ./$(DEPDIR)/xattr.Po ./$(DEPDIR)/xet_robust_list.Po \
+       ./$(DEPDIR)/xattr.Po \
+       ./$(DEPDIR)/xet_robust_list--pidns-translation.Po \
+       ./$(DEPDIR)/xet_robust_list.Po \
        ./$(DEPDIR)/xet_thread_area_x86.Po ./$(DEPDIR)/xetitimer.Po \
-       ./$(DEPDIR)/xetpgid.Po ./$(DEPDIR)/xetpriority.Po \
-       ./$(DEPDIR)/xettimeofday.Po ./$(DEPDIR)/zeroargc.Po
+       ./$(DEPDIR)/xetpgid--pidns-translation.Po \
+       ./$(DEPDIR)/xetpgid.Po \
+       ./$(DEPDIR)/xetpriority--pidns-translation.Po \
+       ./$(DEPDIR)/xetpriority.Po ./$(DEPDIR)/xettimeofday.Po \
+       ./$(DEPDIR)/zeroargc.Po
 am__mv = mv -f
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
@@ -3306,79 +4575,128 @@ SOURCES = $(libtests_a_SOURCES) _newselect.c _newselect-P.c accept.c \
        accept4.c access.c acct.c add_key.c adjtimex.c aio.c \
        aio_pgetevents.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-obj_get_info_by_fd.c \
-       bpf-obj_get_info_by_fd-prog.c bpf-obj_get_info_by_fd-prog-v.c \
-       bpf-obj_get_info_by_fd-v.c bpf-success.c bpf-success-v.c \
-       bpf-v.c brk.c btrfs.c caps.c caps-abbrev.c check_sigblock.c \
+       block_reset_raise_run.c block_reset_run.c bpf.c \
+       bpf-obj_get_info_by_fd.c bpf-obj_get_info_by_fd-prog.c \
+       bpf-obj_get_info_by_fd-prog-v.c bpf-obj_get_info_by_fd-v.c \
+       bpf-success.c bpf-success-long-y.c bpf-success-v.c bpf-v.c \
+       brk.c btrfs.c caps.c caps-abbrev.c check_sigblock.c \
        check_sigign.c chmod.c chown.c chown32.c chroot.c \
        clock_adjtime.c clock_nanosleep.c clock_xettime.c \
-       clone_parent.c clone_ptrace.c copy_file_range.c count-f.c \
-       creat.c delay.c delete_module.c dev-yy.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 \
+       clone-flags.c clone3.c clone3-Xabbrev.c clone3-Xraw.c \
+       clone3-Xverbose.c clone3-success.c clone3-success-Xabbrev.c \
+       clone3-success-Xraw.c clone3-success-Xverbose.c clone_parent.c \
+       clone_parent--quiet-exit.c clone_parent-q.c clone_parent-qq.c \
+       clone_ptrace.c clone_ptrace--quiet-attach.c \
+       clone_ptrace--quiet-exit.c clone_ptrace-q.c clone_ptrace-qq.c \
+       close_range.c close_range-P.c close_range-y.c close_range-yy.c \
+       copy_file_range.c count-f.c creat.c delay.c delete_module.c \
+       dev--decode-fds-dev.c dev--decode-fds-path.c \
+       dev--decode-fds-socket.c dev-yy.c dup.c dup-P.c dup-y.c \
+       dup-yy.c dup2.c dup2-P.c dup2-y.c dup2-yy.c dup3.c dup3-P.c \
+       dup3-y.c dup3-yy.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 faccessat-P.c \
+       faccessat-y.c faccessat-yy.c faccessat2.c faccessat2-P.c \
+       faccessat2-y.c faccessat2-yy.c fadvise64.c fadvise64_64.c \
        fallocate.c fanotify_init.c fanotify_mark.c \
        fanotify_mark-Xabbrev.c fanotify_mark-Xraw.c \
        fanotify_mark-Xverbose.c fchdir.c fchmod.c fchmodat.c fchown.c \
-       fchown32.c fchownat.c fcntl.c fcntl64.c fdatasync.c fflush.c \
-       file_handle.c file_ioctl.c filter-unavailable.c finit_module.c \
-       flock.c fork-f.c fstat.c fstat-Xabbrev.c fstat-Xraw.c \
-       fstat-Xverbose.c fstat64.c fstat64-Xabbrev.c fstat64-Xraw.c \
-       fstat64-Xverbose.c fstatat64.c fstatfs.c fstatfs64.c fsync.c \
-       fsync-y.c ftruncate.c ftruncate64.c futex.c futimesat.c \
-       get_mempolicy.c getcpu.c getcwd.c getdents.c getdents64.c \
-       getegid.c getegid32.c geteuid.c geteuid32.c getgid.c \
-       getgid32.c getgroups.c getgroups32.c getpeername.c getpgrp.c \
-       getpid.c getppid.c getrandom.c getresgid.c getresgid32.c \
-       getresuid.c getresuid32.c getrlimit.c getrusage.c getsid.c \
-       getsockname.c gettid.c getuid.c getuid32.c getxxid.c \
-       group_req.c inet-cmsg.c init_module.c inject-nf.c inotify.c \
-       inotify_init1.c int_0x80.c io_uring_enter.c \
-       io_uring_register.c io_uring_setup.c ioctl.c ioctl_block.c \
-       ioctl_dm.c ioctl_dm-v.c ioctl_evdev.c ioctl_evdev-success.c \
-       ioctl_evdev-success-v.c ioctl_evdev-v.c ioctl_inotify.c \
-       ioctl_kvm_run.c ioctl_kvm_run-v.c ioctl_kvm_run_auxstr_vcpu.c \
-       ioctl_loop.c ioctl_loop-nv.c ioctl_loop-v.c ioctl_mtd.c \
-       ioctl_nbd.c ioctl_nsfs.c ioctl_perf.c ioctl_perf-success.c \
-       ioctl_ptp.c ioctl_random.c ioctl_rtc.c ioctl_rtc-v.c \
-       ioctl_scsi.c ioctl_sg_io_v3.c ioctl_sg_io_v4.c \
-       ioctl_sock_gifconf.c ioctl_uffdio.c ioctl_v4l2.c ioperm.c \
-       iopl.c ioprio.c ioprio-Xabbrev.c ioprio-Xraw.c \
-       ioprio-Xverbose.c ip_mreq.c ipc.c ipc_msg.c ipc_msg-Xabbrev.c \
-       ipc_msg-Xraw.c ipc_msg-Xverbose.c ipc_msgbuf.c \
-       ipc_msgbuf-Xabbrev.c ipc_msgbuf-Xraw.c ipc_msgbuf-Xverbose.c \
-       ipc_sem.c ipc_sem-Xabbrev.c ipc_sem-Xraw.c ipc_sem-Xverbose.c \
-       ipc_shm.c ipc_shm-Xabbrev.c ipc_shm-Xraw.c ipc_shm-Xverbose.c \
-       is_linux_mips_n64.c kcmp.c kcmp-y.c kern_features.c \
+       fchown32.c fchownat.c fcntl.c fcntl--pidns-translation.c \
+       fcntl64.c fcntl64--pidns-translation.c fdatasync.c fflush.c \
+       file_handle.c file_ioctl.c filter-unavailable.c \
+       filter_seccomp-flag.c filter_seccomp-perf.c finit_module.c \
+       flock.c fork--pidns-translation.c fork-f.c fsconfig.c \
+       fsconfig-P.c fsmount.c fsopen.c fspick.c fspick-P.c fstat.c \
+       fstat-Xabbrev.c fstat-Xraw.c fstat-Xverbose.c fstat64.c \
+       fstat64-Xabbrev.c fstat64-Xraw.c fstat64-Xverbose.c \
+       fstatat64.c fstatfs.c fstatfs64.c fsync.c fsync-y.c \
+       ftruncate.c ftruncate64.c futex.c futimesat.c get_mempolicy.c \
+       get_process_reaper.c getcpu.c getcwd.c getdents.c getdents-v.c \
+       getdents64.c getdents64-v.c getegid.c getegid32.c geteuid.c \
+       geteuid32.c getgid.c getgid32.c getgroups.c getgroups32.c \
+       getpeername.c getpgrp.c getpgrp--pidns-translation.c getpid.c \
+       getpid--pidns-translation.c getppid.c getrandom.c getresgid.c \
+       getresgid32.c getresuid.c getresuid32.c getrlimit.c \
+       getrusage.c getsid.c getsid--pidns-translation.c getsockname.c \
+       gettid.c gettid--pidns-translation.c getuid.c getuid32.c \
+       getxgid.c getxpid.c getxuid.c group_req.c inet-cmsg.c \
+       init_module.c inject-nf.c inotify.c inotify_init.c \
+       inotify_init-y.c inotify_init1.c inotify_init1-y.c int_0x80.c \
+       io_uring_enter.c io_uring_register.c io_uring_setup.c ioctl.c \
+       ioctl_block.c ioctl_block--pidns-translation.c ioctl_dm.c \
+       ioctl_dm-v.c ioctl_evdev.c ioctl_evdev-Xabbrev.c \
+       ioctl_evdev-Xraw.c ioctl_evdev-Xverbose.c \
+       ioctl_evdev-success.c ioctl_evdev-success-Xabbrev.c \
+       ioctl_evdev-success-Xraw.c ioctl_evdev-success-Xverbose.c \
+       ioctl_evdev-success-v.c ioctl_evdev-success-v-Xabbrev.c \
+       ioctl_evdev-success-v-Xraw.c ioctl_evdev-success-v-Xverbose.c \
+       ioctl_evdev-v.c ioctl_evdev-v-Xabbrev.c ioctl_evdev-v-Xraw.c \
+       ioctl_evdev-v-Xverbose.c ioctl_hdio.c ioctl_hdio-Xabbrev.c \
+       ioctl_hdio-Xraw.c ioctl_hdio-Xverbose.c ioctl_hdio-success.c \
+       ioctl_hdio-success-Xabbrev.c ioctl_hdio-success-Xraw.c \
+       ioctl_hdio-success-Xverbose.c ioctl_hdio-success-v.c \
+       ioctl_hdio-success-v-Xabbrev.c ioctl_hdio-success-v-Xraw.c \
+       ioctl_hdio-success-v-Xverbose.c ioctl_hdio-v.c \
+       ioctl_hdio-v-Xabbrev.c ioctl_hdio-v-Xraw.c \
+       ioctl_hdio-v-Xverbose.c ioctl_inotify.c ioctl_kvm_run.c \
+       ioctl_kvm_run-v.c ioctl_kvm_run_auxstr_vcpu.c ioctl_loop.c \
+       ioctl_loop-nv.c ioctl_loop-v.c ioctl_mtd.c ioctl_nbd.c \
+       ioctl_nsfs.c ioctl_perf.c ioctl_perf-success.c ioctl_ptp.c \
+       ioctl_random.c ioctl_rtc.c ioctl_rtc-v.c ioctl_scsi.c \
+       ioctl_sg_io_v3.c ioctl_sg_io_v4.c ioctl_sock_gifconf.c \
+       ioctl_tee.c ioctl_uffdio.c ioctl_v4l2.c ioctl_v4l2-Xabbrev.c \
+       ioctl_v4l2-Xraw.c ioctl_v4l2-Xverbose.c ioctl_v4l2-success.c \
+       ioctl_v4l2-success-Xabbrev.c ioctl_v4l2-success-Xraw.c \
+       ioctl_v4l2-success-Xverbose.c ioctl_v4l2-success-v.c \
+       ioctl_v4l2-success-v-Xabbrev.c ioctl_v4l2-success-v-Xraw.c \
+       ioctl_v4l2-success-v-Xverbose.c ioctl_v4l2-v.c \
+       ioctl_v4l2-v-Xabbrev.c ioctl_v4l2-v-Xraw.c \
+       ioctl_v4l2-v-Xverbose.c ioctl_watchdog.c ioperm.c iopl.c \
+       ioprio.c ioprio--pidns-translation.c ioprio-Xabbrev.c \
+       ioprio-Xraw.c ioprio-Xverbose.c ip_mreq.c ipc.c ipc_msg.c \
+       ipc_msg-Xabbrev.c ipc_msg-Xraw.c ipc_msg-Xverbose.c \
+       ipc_msgbuf.c ipc_msgbuf-Xabbrev.c ipc_msgbuf-Xraw.c \
+       ipc_msgbuf-Xverbose.c ipc_sem.c ipc_sem-Xabbrev.c \
+       ipc_sem-Xraw.c ipc_sem-Xverbose.c ipc_shm.c ipc_shm-Xabbrev.c \
+       ipc_shm-Xraw.c ipc_shm-Xverbose.c is_linux_mips_n64.c kcmp.c \
+       kcmp-y.c kcmp-y--pidns-translation.c kern_features.c \
        kernel_version.c kernel_version-Xabbrev.c \
        kernel_version-Xraw.c kernel_version-Xverbose.c \
        kexec_file_load.c kexec_load.c keyctl.c keyctl-Xabbrev.c \
-       keyctl-Xraw.c keyctl-Xverbose.c kill.c kill_child.c ksysent.c \
-       lchown.c lchown32.c link.c linkat.c list_sigaction_signum.c \
-       llseek.c localtime.c lookup_dcookie.c looping_threads.c \
-       lseek.c lstat.c lstat64.c madvise.c mbind.c membarrier.c \
+       keyctl-Xraw.c keyctl-Xverbose.c kill.c \
+       kill--pidns-translation.c kill_child.c ksysent.c lchown.c \
+       lchown32.c link.c linkat.c list_sigaction_signum.c llseek.c \
+       localtime.c lookup_dcookie.c looping_threads.c lseek.c lstat.c \
+       lstat64.c madvise.c maybe_switch_current_tcp.c \
+       maybe_switch_current_tcp--quiet-thread-execve.c mbind.c \
+       mbind-Xabbrev.c mbind-Xraw.c mbind-Xverbose.c membarrier.c \
        memfd_create.c memfd_create-Xabbrev.c memfd_create-Xraw.c \
-       memfd_create-Xverbose.c migrate_pages.c mincore.c mkdir.c \
-       mkdirat.c mknod.c mknodat.c mlock.c mlock2.c mlockall.c mmap.c \
+       memfd_create-Xverbose.c migrate_pages.c \
+       migrate_pages--pidns-translation.c mincore.c mkdir.c mkdirat.c \
+       mknod.c mknodat.c mlock.c mlock2.c mlockall.c mmap.c \
        mmap-Xabbrev.c mmap-Xraw.c mmap-Xverbose.c mmap64.c \
        mmap64-Xabbrev.c mmap64-Xraw.c mmap64-Xverbose.c mmsg.c \
        mmsg-silent.c mmsg_name.c mmsg_name-v.c modify_ldt.c mount.c \
-       mount-Xabbrev.c mount-Xraw.c mount-Xverbose.c move_pages.c \
+       mount-Xabbrev.c mount-Xraw.c mount-Xverbose.c move_mount.c \
+       move_mount-P.c move_pages.c move_pages--pidns-translation.c \
        move_pages-Xabbrev.c move_pages-Xraw.c move_pages-Xverbose.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-packet_mreq.c net-packet_mreq-Xabbrev.c \
+       nanosleep.c net--decode-fds-dev-netlink.c \
+       net--decode-fds-none-netlink.c net--decode-fds-path-netlink.c \
+       net--decode-fds-socket-netlink.c net-accept-connect.c \
+       net-icmp_filter.c net-packet_mreq.c net-packet_mreq-Xabbrev.c \
        net-packet_mreq-Xraw.c net-packet_mreq-Xverbose.c \
-       net-sockaddr.c net-tpacket_req.c net-tpacket_stats.c \
+       net-sockaddr.c net-sockaddr--pidns-translation.c \
+       net-tpacket_req.c net-tpacket_stats.c \
        net-tpacket_stats-success.c net-y-unix.c net-yy-inet.c \
        net-yy-inet6.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 \
+       netlink_audit--pidns-translation.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 \
@@ -3386,166 +4704,249 @@ SOURCES = $(libtests_a_SOURCES) _newselect.c _newselect-P.c accept.c \
        nlattr_fib_rule_hdr.c nlattr_ifaddrlblmsg.c nlattr_ifaddrmsg.c \
        nlattr_ifinfomsg.c nlattr_ifla_af_spec.c nlattr_ifla_brport.c \
        nlattr_ifla_linkinfo.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 nsyscalls-d.c old_mmap.c \
-       old_mmap-P.c old_mmap-Xabbrev.c old_mmap-Xraw.c \
-       old_mmap-Xverbose.c old_mmap-v-none.c oldfstat.c oldlstat.c \
-       oldselect.c oldselect-P.c oldselect-efault.c \
-       oldselect-efault-P.c oldstat.c open.c openat.c \
+       nlattr_ifla_xdp-y.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 nsyscalls-d.c old_mmap.c old_mmap-P.c \
+       old_mmap-Xabbrev.c old_mmap-Xraw.c old_mmap-Xverbose.c \
+       old_mmap-v-none.c oldfstat.c oldlstat.c oldselect.c \
+       oldselect-P.c oldselect-efault.c oldselect-efault-P.c \
+       oldstat.c open.c open_tree.c open_tree-P.c openat.c openat2.c \
+       openat2-Xabbrev.c openat2-Xraw.c openat2-Xverbose.c \
+       openat2-v.c openat2-v-y.c openat2-v-y-Xabbrev.c \
+       openat2-v-y-Xraw.c openat2-v-y-Xverbose.c openat2-y.c \
        orphaned_process_group.c osf_utimes.c pause.c pc.c \
        perf_event_open.c perf_event_open_nonverbose.c \
        perf_event_open_unabbrev.c personality.c personality-Xabbrev.c \
-       personality-Xraw.c personality-Xverbose.c pidfd_send_signal.c \
-       pipe.c pipe2.c pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c \
-       poll-P.c ppoll.c ppoll-P.c ppoll-v.c prctl-arg2-intptr.c \
-       prctl-dumpable.c prctl-name.c prctl-no-args.c \
-       prctl-pdeathsig.c prctl-seccomp-filter-v.c \
+       personality-Xraw.c personality-Xverbose.c pidfd_getfd.c \
+       pidfd_getfd-y.c pidfd_getfd-yy.c pidfd_open.c \
+       pidfd_open--decode-fd-path.c pidfd_open--decode-fd-pidfd.c \
+       pidfd_open--decode-fd-socket.c pidfd_open--pidns-translation.c \
+       pidfd_open-P.c pidfd_open-y.c pidfd_open-yy.c \
+       pidfd_send_signal.c pidfd_send_signal--pidns-translation.c \
+       pidns-cache.c pipe.c pipe2.c pkey_alloc.c pkey_free.c \
+       pkey_mprotect.c poll.c poll-P.c ppoll.c ppoll-P.c ppoll-v.c \
+       prctl-arg2-intptr.c prctl-dumpable.c prctl-name.c \
+       prctl-no-args.c prctl-pdeathsig.c prctl-seccomp-filter-v.c \
        prctl-seccomp-strict.c prctl-securebits.c prctl-spec-inject.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 printpath-umovestr-peekdata.c \
-       printpath-umovestr-undumpable.c printsignal-Xabbrev.c \
-       printsignal-Xraw.c printsignal-Xverbose.c printstr.c \
-       printstrn-umoven.c printstrn-umoven-peekdata.c \
-       printstrn-umoven-undumpable.c prlimit64.c process_vm_readv.c \
-       process_vm_writev.c pselect6.c ptrace.c ptrace_syscall_info.c \
-       pwritev.c qual_fault.c qual_inject-error-signal.c \
-       qual_inject-retval.c qual_inject-signal.c qual_signal.c \
-       quotactl.c quotactl-Xabbrev.c quotactl-Xraw.c \
-       quotactl-Xverbose.c quotactl-success.c quotactl-success-v.c \
-       quotactl-v.c quotactl-xfs.c quotactl-xfs-success.c \
-       quotactl-xfs-success-v.c quotactl-xfs-v.c read-write.c \
-       readahead.c readdir.c readlink.c readlinkat.c readv.c reboot.c \
-       recvfrom.c recvmmsg-timeout.c recvmsg.c redirect-fds.c \
-       remap_file_pages.c remap_file_pages-Xabbrev.c \
+       print_ppid_tracerpid.c printpath-umovestr.c \
+       printpath-umovestr-peekdata.c printpath-umovestr-undumpable.c \
+       printsignal-Xabbrev.c printsignal-Xraw.c \
+       printsignal-Xverbose.c printstr.c printstrn-umoven.c \
+       printstrn-umoven-peekdata.c printstrn-umoven-undumpable.c \
+       prlimit64.c prlimit64--pidns-translation.c process_vm_readv.c \
+       process_vm_readv--pidns-translation.c process_vm_writev.c \
+       process_vm_writev--pidns-translation.c pselect6.c ptrace.c \
+       ptrace_syscall_info.c pwritev.c qual_fault.c \
+       qual_inject-error-signal.c qual_inject-retval.c \
+       qual_inject-signal.c qual_signal.c quotactl.c \
+       quotactl-Xabbrev.c quotactl-Xraw.c quotactl-Xverbose.c \
+       quotactl-success.c quotactl-success-v.c quotactl-v.c \
+       quotactl-xfs.c quotactl-xfs-success.c quotactl-xfs-success-v.c \
+       quotactl-xfs-v.c read-write.c readahead.c readdir.c readlink.c \
+       readlinkat.c readv.c reboot.c recv-MSG_TRUNC.c recvfrom.c \
+       recvfrom-MSG_TRUNC.c recvmmsg-timeout.c recvmsg.c \
+       redirect-fds.c remap_file_pages.c remap_file_pages-Xabbrev.c \
        remap_file_pages-Xraw.c remap_file_pages-Xverbose.c rename.c \
        renameat.c renameat2.c request_key.c restart_syscall.c \
        riscv_flush_icache.c rmdir.c rt_sigaction.c rt_sigpending.c \
-       rt_sigprocmask.c rt_sigqueueinfo.c rt_sigreturn.c \
+       rt_sigprocmask.c rt_sigqueueinfo.c \
+       rt_sigqueueinfo--pidns-translation.c rt_sigreturn.c \
        rt_sigsuspend.c rt_sigtimedwait.c rt_tgsigqueueinfo.c \
-       run_expect_termsig.c s390_guarded_storage.c \
-       s390_guarded_storage-v.c s390_pci_mmio_read_write.c \
-       s390_runtime_instr.c s390_sthyi.c s390_sthyi-v.c \
-       sched_get_priority_mxx.c sched_rr_get_interval.c \
-       sched_xetaffinity.c sched_xetattr.c sched_xetparam.c \
-       sched_xetscheduler.c sched_yield.c scm_rights.c \
-       seccomp-filter.c seccomp-filter-v.c seccomp-strict.c \
-       seccomp_get_action_avail.c select.c select-P.c semop.c \
-       sendfile.c sendfile64.c set_mempolicy.c set_ptracer_any.c \
-       set_sigblock.c set_sigign.c setdomainname.c setfsgid.c \
-       setfsgid32.c setfsuid.c setfsuid32.c setgid.c setgid32.c \
-       setgroups.c setgroups32.c sethostname.c setns.c setregid.c \
-       setregid32.c setresgid.c setresgid32.c setresuid.c \
-       setresuid32.c setreuid.c setreuid32.c setrlimit.c \
-       setrlimit-Xabbrev.c setrlimit-Xraw.c setrlimit-Xverbose.c \
-       setuid.c setuid32.c shmxt.c shutdown.c sigaction.c \
-       sigaltstack.c siginfo.c signal.c signal_receive.c signalfd4.c \
-       sigpending.c sigprocmask.c sigreturn.c sigsuspend.c sleep.c \
-       so_error.c so_linger.c so_peercred.c so_peercred-Xabbrev.c \
-       so_peercred-Xraw.c so_peercred-Xverbose.c sock_filter-v.c \
-       sock_filter-v-Xabbrev.c sock_filter-v-Xraw.c \
-       sock_filter-v-Xverbose.c sockaddr_xlat-Xabbrev.c \
-       sockaddr_xlat-Xraw.c sockaddr_xlat-Xverbose.c socketcall.c \
-       sockopt-sol_netlink.c sockopt-timestamp.c splice.c \
-       $(stack_fcall_SOURCES) $(stack_fcall_mangled_SOURCES) stat.c \
-       stat64.c statfs.c statfs64.c statx.c swap.c sxetmask.c \
-       symlink.c symlinkat.c sync.c sync_file_range.c \
-       sync_file_range2.c sysinfo.c syslog.c tee.c threads-execve.c \
+       rt_tgsigqueueinfo--pidns-translation.c run_expect_termsig.c \
+       s390_guarded_storage.c s390_guarded_storage-v.c \
+       s390_pci_mmio_read_write.c s390_runtime_instr.c s390_sthyi.c \
+       s390_sthyi-v.c sched_get_priority_mxx.c \
+       sched_rr_get_interval.c sched_xetaffinity.c \
+       sched_xetaffinity--pidns-translation.c sched_xetattr.c \
+       sched_xetattr--pidns-translation.c sched_xetparam.c \
+       sched_xetparam--pidns-translation.c sched_xetscheduler.c \
+       sched_xetscheduler--pidns-translation.c sched_yield.c \
+       scm_rights.c seccomp-filter.c seccomp-filter-v.c \
+       seccomp-strict.c seccomp_get_action_avail.c select.c \
+       select-P.c semop.c semop-indirect.c semtimedop.c sendfile.c \
+       sendfile64.c set_mempolicy.c set_mempolicy-Xabbrev.c \
+       set_mempolicy-Xraw.c set_mempolicy-Xverbose.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 \
+       setpgrp-exec.c setregid.c setregid32.c setresgid.c \
+       setresgid32.c setresuid.c setresuid32.c setreuid.c \
+       setreuid32.c setrlimit.c setrlimit-Xabbrev.c setrlimit-Xraw.c \
+       setrlimit-Xverbose.c setuid.c setuid32.c shmxt.c shutdown.c \
+       sigaction.c sigaltstack.c siginfo.c signal.c signal_receive.c \
+       signal_receive--pidns-translation.c signalfd4.c sigpending.c \
+       sigprocmask.c sigreturn.c sigsuspend.c sleep.c so_error.c \
+       so_linger.c so_peercred.c so_peercred--pidns-translation.c \
+       so_peercred-Xabbrev.c so_peercred-Xraw.c \
+       so_peercred-Xverbose.c sock_filter-v.c sock_filter-v-Xabbrev.c \
+       sock_filter-v-Xraw.c sock_filter-v-Xverbose.c \
+       sockaddr_xlat-Xabbrev.c sockaddr_xlat-Xraw.c \
+       sockaddr_xlat-Xverbose.c socketcall.c sockopt-sol_netlink.c \
+       sockopt-timestamp.c splice.c $(stack_fcall_SOURCES) \
+       $(stack_fcall_attach_SOURCES) $(stack_fcall_mangled_SOURCES) \
+       stat.c stat64.c statfs.c statfs64.c status-all.c \
+       status-failed.c status-failed-long.c status-failed-status.c \
+       status-none.c status-none-f.c status-none-threads.c \
+       status-successful.c status-successful-long.c \
+       status-successful-status.c status-unfinished.c \
+       status-unfinished-threads.c statx.c strace--strings-in-hex.c \
+       strace--strings-in-hex-all.c \
+       strace--strings-in-hex-non-ascii.c strace-n.c strace-x.c \
+       strace-xx.c swap.c sxetmask.c symlink.c symlinkat.c sync.c \
+       sync_file_range.c sync_file_range2.c sysinfo.c syslog.c \
+       syslog-success.c tee.c tgkill.c tgkill--pidns-translation.c \
+       threads-execve.c threads-execve--quiet-thread-execve.c \
+       threads-execve-q.c threads-execve-qq.c threads-execve-qqq.c \
        time.c timer_create.c timer_xettime.c timerfd_xettime.c \
-       times.c times-fail.c truncate.c truncate64.c ugetrlimit.c \
-       uio.c umask.c umount.c umount2.c umoven-illptr.c umovestr.c \
-       umovestr-illptr.c umovestr2.c umovestr3.c uname.c \
-       unblock_reset_raise.c unix-pair-send-recv.c \
+       times.c times-fail.c tkill.c tkill--pidns-translation.c \
+       tracer_ppid_pgid_sid.c $(trie_test_SOURCES) truncate.c \
+       truncate64.c ugetrlimit.c uio.c umask.c umount.c umount2.c \
+       umoven-illptr.c umovestr.c umovestr-illptr.c umovestr2.c \
+       umovestr3.c umovestr_cached.c umovestr_cached_adjacent.c \
+       uname.c unblock_reset_raise.c unix-pair-send-recv.c \
        unix-pair-sendto-recvfrom.c unlink.c unlinkat.c unshare.c \
        userfaultfd.c ustat.c utime.c utimensat.c utimensat-Xabbrev.c \
        utimensat-Xraw.c utimensat-Xverbose.c utimes.c vfork-f.c \
        vhangup.c vmsplice.c wait4.c wait4-v.c waitid.c waitid-v.c \
        waitpid.c xattr.c xattr-strings.c xet_robust_list.c \
-       xet_thread_area_x86.c xetitimer.c xetpgid.c xetpriority.c \
-       xettimeofday.c zeroargc.c
+       xet_robust_list--pidns-translation.c xet_thread_area_x86.c \
+       xetitimer.c xetpgid.c xetpgid--pidns-translation.c \
+       xetpriority.c xetpriority--pidns-translation.c xettimeofday.c \
+       zeroargc.c
 DIST_SOURCES = $(libtests_a_SOURCES) _newselect.c _newselect-P.c \
        accept.c accept4.c access.c acct.c add_key.c adjtimex.c aio.c \
        aio_pgetevents.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-obj_get_info_by_fd.c \
-       bpf-obj_get_info_by_fd-prog.c bpf-obj_get_info_by_fd-prog-v.c \
-       bpf-obj_get_info_by_fd-v.c bpf-success.c bpf-success-v.c \
-       bpf-v.c brk.c btrfs.c caps.c caps-abbrev.c check_sigblock.c \
+       block_reset_raise_run.c block_reset_run.c bpf.c \
+       bpf-obj_get_info_by_fd.c bpf-obj_get_info_by_fd-prog.c \
+       bpf-obj_get_info_by_fd-prog-v.c bpf-obj_get_info_by_fd-v.c \
+       bpf-success.c bpf-success-long-y.c bpf-success-v.c bpf-v.c \
+       brk.c btrfs.c caps.c caps-abbrev.c check_sigblock.c \
        check_sigign.c chmod.c chown.c chown32.c chroot.c \
        clock_adjtime.c clock_nanosleep.c clock_xettime.c \
-       clone_parent.c clone_ptrace.c copy_file_range.c count-f.c \
-       creat.c delay.c delete_module.c dev-yy.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 \
+       clone-flags.c clone3.c clone3-Xabbrev.c clone3-Xraw.c \
+       clone3-Xverbose.c clone3-success.c clone3-success-Xabbrev.c \
+       clone3-success-Xraw.c clone3-success-Xverbose.c clone_parent.c \
+       clone_parent--quiet-exit.c clone_parent-q.c clone_parent-qq.c \
+       clone_ptrace.c clone_ptrace--quiet-attach.c \
+       clone_ptrace--quiet-exit.c clone_ptrace-q.c clone_ptrace-qq.c \
+       close_range.c close_range-P.c close_range-y.c close_range-yy.c \
+       copy_file_range.c count-f.c creat.c delay.c delete_module.c \
+       dev--decode-fds-dev.c dev--decode-fds-path.c \
+       dev--decode-fds-socket.c dev-yy.c dup.c dup-P.c dup-y.c \
+       dup-yy.c dup2.c dup2-P.c dup2-y.c dup2-yy.c dup3.c dup3-P.c \
+       dup3-y.c dup3-yy.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 faccessat-P.c \
+       faccessat-y.c faccessat-yy.c faccessat2.c faccessat2-P.c \
+       faccessat2-y.c faccessat2-yy.c fadvise64.c fadvise64_64.c \
        fallocate.c fanotify_init.c fanotify_mark.c \
        fanotify_mark-Xabbrev.c fanotify_mark-Xraw.c \
        fanotify_mark-Xverbose.c fchdir.c fchmod.c fchmodat.c fchown.c \
-       fchown32.c fchownat.c fcntl.c fcntl64.c fdatasync.c fflush.c \
-       file_handle.c file_ioctl.c filter-unavailable.c finit_module.c \
-       flock.c fork-f.c fstat.c fstat-Xabbrev.c fstat-Xraw.c \
-       fstat-Xverbose.c fstat64.c fstat64-Xabbrev.c fstat64-Xraw.c \
-       fstat64-Xverbose.c fstatat64.c fstatfs.c fstatfs64.c fsync.c \
-       fsync-y.c ftruncate.c ftruncate64.c futex.c futimesat.c \
-       get_mempolicy.c getcpu.c getcwd.c getdents.c getdents64.c \
-       getegid.c getegid32.c geteuid.c geteuid32.c getgid.c \
-       getgid32.c getgroups.c getgroups32.c getpeername.c getpgrp.c \
-       getpid.c getppid.c getrandom.c getresgid.c getresgid32.c \
-       getresuid.c getresuid32.c getrlimit.c getrusage.c getsid.c \
-       getsockname.c gettid.c getuid.c getuid32.c getxxid.c \
-       group_req.c inet-cmsg.c init_module.c inject-nf.c inotify.c \
-       inotify_init1.c int_0x80.c io_uring_enter.c \
-       io_uring_register.c io_uring_setup.c ioctl.c ioctl_block.c \
-       ioctl_dm.c ioctl_dm-v.c ioctl_evdev.c ioctl_evdev-success.c \
-       ioctl_evdev-success-v.c ioctl_evdev-v.c ioctl_inotify.c \
-       ioctl_kvm_run.c ioctl_kvm_run-v.c ioctl_kvm_run_auxstr_vcpu.c \
-       ioctl_loop.c ioctl_loop-nv.c ioctl_loop-v.c ioctl_mtd.c \
-       ioctl_nbd.c ioctl_nsfs.c ioctl_perf.c ioctl_perf-success.c \
-       ioctl_ptp.c ioctl_random.c ioctl_rtc.c ioctl_rtc-v.c \
-       ioctl_scsi.c ioctl_sg_io_v3.c ioctl_sg_io_v4.c \
-       ioctl_sock_gifconf.c ioctl_uffdio.c ioctl_v4l2.c ioperm.c \
-       iopl.c ioprio.c ioprio-Xabbrev.c ioprio-Xraw.c \
-       ioprio-Xverbose.c ip_mreq.c ipc.c ipc_msg.c ipc_msg-Xabbrev.c \
-       ipc_msg-Xraw.c ipc_msg-Xverbose.c ipc_msgbuf.c \
-       ipc_msgbuf-Xabbrev.c ipc_msgbuf-Xraw.c ipc_msgbuf-Xverbose.c \
-       ipc_sem.c ipc_sem-Xabbrev.c ipc_sem-Xraw.c ipc_sem-Xverbose.c \
-       ipc_shm.c ipc_shm-Xabbrev.c ipc_shm-Xraw.c ipc_shm-Xverbose.c \
-       is_linux_mips_n64.c kcmp.c kcmp-y.c kern_features.c \
+       fchown32.c fchownat.c fcntl.c fcntl--pidns-translation.c \
+       fcntl64.c fcntl64--pidns-translation.c fdatasync.c fflush.c \
+       file_handle.c file_ioctl.c filter-unavailable.c \
+       filter_seccomp-flag.c filter_seccomp-perf.c finit_module.c \
+       flock.c fork--pidns-translation.c fork-f.c fsconfig.c \
+       fsconfig-P.c fsmount.c fsopen.c fspick.c fspick-P.c fstat.c \
+       fstat-Xabbrev.c fstat-Xraw.c fstat-Xverbose.c fstat64.c \
+       fstat64-Xabbrev.c fstat64-Xraw.c fstat64-Xverbose.c \
+       fstatat64.c fstatfs.c fstatfs64.c fsync.c fsync-y.c \
+       ftruncate.c ftruncate64.c futex.c futimesat.c get_mempolicy.c \
+       get_process_reaper.c getcpu.c getcwd.c getdents.c getdents-v.c \
+       getdents64.c getdents64-v.c getegid.c getegid32.c geteuid.c \
+       geteuid32.c getgid.c getgid32.c getgroups.c getgroups32.c \
+       getpeername.c getpgrp.c getpgrp--pidns-translation.c getpid.c \
+       getpid--pidns-translation.c getppid.c getrandom.c getresgid.c \
+       getresgid32.c getresuid.c getresuid32.c getrlimit.c \
+       getrusage.c getsid.c getsid--pidns-translation.c getsockname.c \
+       gettid.c gettid--pidns-translation.c getuid.c getuid32.c \
+       getxgid.c getxpid.c getxuid.c group_req.c inet-cmsg.c \
+       init_module.c inject-nf.c inotify.c inotify_init.c \
+       inotify_init-y.c inotify_init1.c inotify_init1-y.c int_0x80.c \
+       io_uring_enter.c io_uring_register.c io_uring_setup.c ioctl.c \
+       ioctl_block.c ioctl_block--pidns-translation.c ioctl_dm.c \
+       ioctl_dm-v.c ioctl_evdev.c ioctl_evdev-Xabbrev.c \
+       ioctl_evdev-Xraw.c ioctl_evdev-Xverbose.c \
+       ioctl_evdev-success.c ioctl_evdev-success-Xabbrev.c \
+       ioctl_evdev-success-Xraw.c ioctl_evdev-success-Xverbose.c \
+       ioctl_evdev-success-v.c ioctl_evdev-success-v-Xabbrev.c \
+       ioctl_evdev-success-v-Xraw.c ioctl_evdev-success-v-Xverbose.c \
+       ioctl_evdev-v.c ioctl_evdev-v-Xabbrev.c ioctl_evdev-v-Xraw.c \
+       ioctl_evdev-v-Xverbose.c ioctl_hdio.c ioctl_hdio-Xabbrev.c \
+       ioctl_hdio-Xraw.c ioctl_hdio-Xverbose.c ioctl_hdio-success.c \
+       ioctl_hdio-success-Xabbrev.c ioctl_hdio-success-Xraw.c \
+       ioctl_hdio-success-Xverbose.c ioctl_hdio-success-v.c \
+       ioctl_hdio-success-v-Xabbrev.c ioctl_hdio-success-v-Xraw.c \
+       ioctl_hdio-success-v-Xverbose.c ioctl_hdio-v.c \
+       ioctl_hdio-v-Xabbrev.c ioctl_hdio-v-Xraw.c \
+       ioctl_hdio-v-Xverbose.c ioctl_inotify.c ioctl_kvm_run.c \
+       ioctl_kvm_run-v.c ioctl_kvm_run_auxstr_vcpu.c ioctl_loop.c \
+       ioctl_loop-nv.c ioctl_loop-v.c ioctl_mtd.c ioctl_nbd.c \
+       ioctl_nsfs.c ioctl_perf.c ioctl_perf-success.c ioctl_ptp.c \
+       ioctl_random.c ioctl_rtc.c ioctl_rtc-v.c ioctl_scsi.c \
+       ioctl_sg_io_v3.c ioctl_sg_io_v4.c ioctl_sock_gifconf.c \
+       ioctl_tee.c ioctl_uffdio.c ioctl_v4l2.c ioctl_v4l2-Xabbrev.c \
+       ioctl_v4l2-Xraw.c ioctl_v4l2-Xverbose.c ioctl_v4l2-success.c \
+       ioctl_v4l2-success-Xabbrev.c ioctl_v4l2-success-Xraw.c \
+       ioctl_v4l2-success-Xverbose.c ioctl_v4l2-success-v.c \
+       ioctl_v4l2-success-v-Xabbrev.c ioctl_v4l2-success-v-Xraw.c \
+       ioctl_v4l2-success-v-Xverbose.c ioctl_v4l2-v.c \
+       ioctl_v4l2-v-Xabbrev.c ioctl_v4l2-v-Xraw.c \
+       ioctl_v4l2-v-Xverbose.c ioctl_watchdog.c ioperm.c iopl.c \
+       ioprio.c ioprio--pidns-translation.c ioprio-Xabbrev.c \
+       ioprio-Xraw.c ioprio-Xverbose.c ip_mreq.c ipc.c ipc_msg.c \
+       ipc_msg-Xabbrev.c ipc_msg-Xraw.c ipc_msg-Xverbose.c \
+       ipc_msgbuf.c ipc_msgbuf-Xabbrev.c ipc_msgbuf-Xraw.c \
+       ipc_msgbuf-Xverbose.c ipc_sem.c ipc_sem-Xabbrev.c \
+       ipc_sem-Xraw.c ipc_sem-Xverbose.c ipc_shm.c ipc_shm-Xabbrev.c \
+       ipc_shm-Xraw.c ipc_shm-Xverbose.c is_linux_mips_n64.c kcmp.c \
+       kcmp-y.c kcmp-y--pidns-translation.c kern_features.c \
        kernel_version.c kernel_version-Xabbrev.c \
        kernel_version-Xraw.c kernel_version-Xverbose.c \
        kexec_file_load.c kexec_load.c keyctl.c keyctl-Xabbrev.c \
-       keyctl-Xraw.c keyctl-Xverbose.c kill.c kill_child.c ksysent.c \
-       lchown.c lchown32.c link.c linkat.c list_sigaction_signum.c \
-       llseek.c localtime.c lookup_dcookie.c looping_threads.c \
-       lseek.c lstat.c lstat64.c madvise.c mbind.c membarrier.c \
+       keyctl-Xraw.c keyctl-Xverbose.c kill.c \
+       kill--pidns-translation.c kill_child.c ksysent.c lchown.c \
+       lchown32.c link.c linkat.c list_sigaction_signum.c llseek.c \
+       localtime.c lookup_dcookie.c looping_threads.c lseek.c lstat.c \
+       lstat64.c madvise.c maybe_switch_current_tcp.c \
+       maybe_switch_current_tcp--quiet-thread-execve.c mbind.c \
+       mbind-Xabbrev.c mbind-Xraw.c mbind-Xverbose.c membarrier.c \
        memfd_create.c memfd_create-Xabbrev.c memfd_create-Xraw.c \
-       memfd_create-Xverbose.c migrate_pages.c mincore.c mkdir.c \
-       mkdirat.c mknod.c mknodat.c mlock.c mlock2.c mlockall.c mmap.c \
+       memfd_create-Xverbose.c migrate_pages.c \
+       migrate_pages--pidns-translation.c mincore.c mkdir.c mkdirat.c \
+       mknod.c mknodat.c mlock.c mlock2.c mlockall.c mmap.c \
        mmap-Xabbrev.c mmap-Xraw.c mmap-Xverbose.c mmap64.c \
        mmap64-Xabbrev.c mmap64-Xraw.c mmap64-Xverbose.c mmsg.c \
        mmsg-silent.c mmsg_name.c mmsg_name-v.c modify_ldt.c mount.c \
-       mount-Xabbrev.c mount-Xraw.c mount-Xverbose.c move_pages.c \
+       mount-Xabbrev.c mount-Xraw.c mount-Xverbose.c move_mount.c \
+       move_mount-P.c move_pages.c move_pages--pidns-translation.c \
        move_pages-Xabbrev.c move_pages-Xraw.c move_pages-Xverbose.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-packet_mreq.c net-packet_mreq-Xabbrev.c \
+       nanosleep.c net--decode-fds-dev-netlink.c \
+       net--decode-fds-none-netlink.c net--decode-fds-path-netlink.c \
+       net--decode-fds-socket-netlink.c net-accept-connect.c \
+       net-icmp_filter.c net-packet_mreq.c net-packet_mreq-Xabbrev.c \
        net-packet_mreq-Xraw.c net-packet_mreq-Xverbose.c \
-       net-sockaddr.c net-tpacket_req.c net-tpacket_stats.c \
+       net-sockaddr.c net-sockaddr--pidns-translation.c \
+       net-tpacket_req.c net-tpacket_stats.c \
        net-tpacket_stats-success.c net-y-unix.c net-yy-inet.c \
        net-yy-inet6.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 \
+       netlink_audit--pidns-translation.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 \
@@ -3553,89 +4954,123 @@ DIST_SOURCES = $(libtests_a_SOURCES) _newselect.c _newselect-P.c \
        nlattr_fib_rule_hdr.c nlattr_ifaddrlblmsg.c nlattr_ifaddrmsg.c \
        nlattr_ifinfomsg.c nlattr_ifla_af_spec.c nlattr_ifla_brport.c \
        nlattr_ifla_linkinfo.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 nsyscalls-d.c old_mmap.c \
-       old_mmap-P.c old_mmap-Xabbrev.c old_mmap-Xraw.c \
-       old_mmap-Xverbose.c old_mmap-v-none.c oldfstat.c oldlstat.c \
-       oldselect.c oldselect-P.c oldselect-efault.c \
-       oldselect-efault-P.c oldstat.c open.c openat.c \
+       nlattr_ifla_xdp-y.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 nsyscalls-d.c old_mmap.c old_mmap-P.c \
+       old_mmap-Xabbrev.c old_mmap-Xraw.c old_mmap-Xverbose.c \
+       old_mmap-v-none.c oldfstat.c oldlstat.c oldselect.c \
+       oldselect-P.c oldselect-efault.c oldselect-efault-P.c \
+       oldstat.c open.c open_tree.c open_tree-P.c openat.c openat2.c \
+       openat2-Xabbrev.c openat2-Xraw.c openat2-Xverbose.c \
+       openat2-v.c openat2-v-y.c openat2-v-y-Xabbrev.c \
+       openat2-v-y-Xraw.c openat2-v-y-Xverbose.c openat2-y.c \
        orphaned_process_group.c osf_utimes.c pause.c pc.c \
        perf_event_open.c perf_event_open_nonverbose.c \
        perf_event_open_unabbrev.c personality.c personality-Xabbrev.c \
-       personality-Xraw.c personality-Xverbose.c pidfd_send_signal.c \
-       pipe.c pipe2.c pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c \
-       poll-P.c ppoll.c ppoll-P.c ppoll-v.c prctl-arg2-intptr.c \
-       prctl-dumpable.c prctl-name.c prctl-no-args.c \
-       prctl-pdeathsig.c prctl-seccomp-filter-v.c \
+       personality-Xraw.c personality-Xverbose.c pidfd_getfd.c \
+       pidfd_getfd-y.c pidfd_getfd-yy.c pidfd_open.c \
+       pidfd_open--decode-fd-path.c pidfd_open--decode-fd-pidfd.c \
+       pidfd_open--decode-fd-socket.c pidfd_open--pidns-translation.c \
+       pidfd_open-P.c pidfd_open-y.c pidfd_open-yy.c \
+       pidfd_send_signal.c pidfd_send_signal--pidns-translation.c \
+       pidns-cache.c pipe.c pipe2.c pkey_alloc.c pkey_free.c \
+       pkey_mprotect.c poll.c poll-P.c ppoll.c ppoll-P.c ppoll-v.c \
+       prctl-arg2-intptr.c prctl-dumpable.c prctl-name.c \
+       prctl-no-args.c prctl-pdeathsig.c prctl-seccomp-filter-v.c \
        prctl-seccomp-strict.c prctl-securebits.c prctl-spec-inject.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 printpath-umovestr-peekdata.c \
-       printpath-umovestr-undumpable.c printsignal-Xabbrev.c \
-       printsignal-Xraw.c printsignal-Xverbose.c printstr.c \
-       printstrn-umoven.c printstrn-umoven-peekdata.c \
-       printstrn-umoven-undumpable.c prlimit64.c process_vm_readv.c \
-       process_vm_writev.c pselect6.c ptrace.c ptrace_syscall_info.c \
-       pwritev.c qual_fault.c qual_inject-error-signal.c \
-       qual_inject-retval.c qual_inject-signal.c qual_signal.c \
-       quotactl.c quotactl-Xabbrev.c quotactl-Xraw.c \
-       quotactl-Xverbose.c quotactl-success.c quotactl-success-v.c \
-       quotactl-v.c quotactl-xfs.c quotactl-xfs-success.c \
-       quotactl-xfs-success-v.c quotactl-xfs-v.c read-write.c \
-       readahead.c readdir.c readlink.c readlinkat.c readv.c reboot.c \
-       recvfrom.c recvmmsg-timeout.c recvmsg.c redirect-fds.c \
-       remap_file_pages.c remap_file_pages-Xabbrev.c \
+       print_ppid_tracerpid.c printpath-umovestr.c \
+       printpath-umovestr-peekdata.c printpath-umovestr-undumpable.c \
+       printsignal-Xabbrev.c printsignal-Xraw.c \
+       printsignal-Xverbose.c printstr.c printstrn-umoven.c \
+       printstrn-umoven-peekdata.c printstrn-umoven-undumpable.c \
+       prlimit64.c prlimit64--pidns-translation.c process_vm_readv.c \
+       process_vm_readv--pidns-translation.c process_vm_writev.c \
+       process_vm_writev--pidns-translation.c pselect6.c ptrace.c \
+       ptrace_syscall_info.c pwritev.c qual_fault.c \
+       qual_inject-error-signal.c qual_inject-retval.c \
+       qual_inject-signal.c qual_signal.c quotactl.c \
+       quotactl-Xabbrev.c quotactl-Xraw.c quotactl-Xverbose.c \
+       quotactl-success.c quotactl-success-v.c quotactl-v.c \
+       quotactl-xfs.c quotactl-xfs-success.c quotactl-xfs-success-v.c \
+       quotactl-xfs-v.c read-write.c readahead.c readdir.c readlink.c \
+       readlinkat.c readv.c reboot.c recv-MSG_TRUNC.c recvfrom.c \
+       recvfrom-MSG_TRUNC.c recvmmsg-timeout.c recvmsg.c \
+       redirect-fds.c remap_file_pages.c remap_file_pages-Xabbrev.c \
        remap_file_pages-Xraw.c remap_file_pages-Xverbose.c rename.c \
        renameat.c renameat2.c request_key.c restart_syscall.c \
        riscv_flush_icache.c rmdir.c rt_sigaction.c rt_sigpending.c \
-       rt_sigprocmask.c rt_sigqueueinfo.c rt_sigreturn.c \
+       rt_sigprocmask.c rt_sigqueueinfo.c \
+       rt_sigqueueinfo--pidns-translation.c rt_sigreturn.c \
        rt_sigsuspend.c rt_sigtimedwait.c rt_tgsigqueueinfo.c \
-       run_expect_termsig.c s390_guarded_storage.c \
-       s390_guarded_storage-v.c s390_pci_mmio_read_write.c \
-       s390_runtime_instr.c s390_sthyi.c s390_sthyi-v.c \
-       sched_get_priority_mxx.c sched_rr_get_interval.c \
-       sched_xetaffinity.c sched_xetattr.c sched_xetparam.c \
-       sched_xetscheduler.c sched_yield.c scm_rights.c \
-       seccomp-filter.c seccomp-filter-v.c seccomp-strict.c \
-       seccomp_get_action_avail.c select.c select-P.c semop.c \
-       sendfile.c sendfile64.c set_mempolicy.c set_ptracer_any.c \
-       set_sigblock.c set_sigign.c setdomainname.c setfsgid.c \
-       setfsgid32.c setfsuid.c setfsuid32.c setgid.c setgid32.c \
-       setgroups.c setgroups32.c sethostname.c setns.c setregid.c \
-       setregid32.c setresgid.c setresgid32.c setresuid.c \
-       setresuid32.c setreuid.c setreuid32.c setrlimit.c \
-       setrlimit-Xabbrev.c setrlimit-Xraw.c setrlimit-Xverbose.c \
-       setuid.c setuid32.c shmxt.c shutdown.c sigaction.c \
-       sigaltstack.c siginfo.c signal.c signal_receive.c signalfd4.c \
-       sigpending.c sigprocmask.c sigreturn.c sigsuspend.c sleep.c \
-       so_error.c so_linger.c so_peercred.c so_peercred-Xabbrev.c \
-       so_peercred-Xraw.c so_peercred-Xverbose.c sock_filter-v.c \
-       sock_filter-v-Xabbrev.c sock_filter-v-Xraw.c \
-       sock_filter-v-Xverbose.c sockaddr_xlat-Xabbrev.c \
-       sockaddr_xlat-Xraw.c sockaddr_xlat-Xverbose.c socketcall.c \
-       sockopt-sol_netlink.c sockopt-timestamp.c splice.c \
-       $(stack_fcall_SOURCES) $(stack_fcall_mangled_SOURCES) stat.c \
-       stat64.c statfs.c statfs64.c statx.c swap.c sxetmask.c \
-       symlink.c symlinkat.c sync.c sync_file_range.c \
-       sync_file_range2.c sysinfo.c syslog.c tee.c threads-execve.c \
+       rt_tgsigqueueinfo--pidns-translation.c run_expect_termsig.c \
+       s390_guarded_storage.c s390_guarded_storage-v.c \
+       s390_pci_mmio_read_write.c s390_runtime_instr.c s390_sthyi.c \
+       s390_sthyi-v.c sched_get_priority_mxx.c \
+       sched_rr_get_interval.c sched_xetaffinity.c \
+       sched_xetaffinity--pidns-translation.c sched_xetattr.c \
+       sched_xetattr--pidns-translation.c sched_xetparam.c \
+       sched_xetparam--pidns-translation.c sched_xetscheduler.c \
+       sched_xetscheduler--pidns-translation.c sched_yield.c \
+       scm_rights.c seccomp-filter.c seccomp-filter-v.c \
+       seccomp-strict.c seccomp_get_action_avail.c select.c \
+       select-P.c semop.c semop-indirect.c semtimedop.c sendfile.c \
+       sendfile64.c set_mempolicy.c set_mempolicy-Xabbrev.c \
+       set_mempolicy-Xraw.c set_mempolicy-Xverbose.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 \
+       setpgrp-exec.c setregid.c setregid32.c setresgid.c \
+       setresgid32.c setresuid.c setresuid32.c setreuid.c \
+       setreuid32.c setrlimit.c setrlimit-Xabbrev.c setrlimit-Xraw.c \
+       setrlimit-Xverbose.c setuid.c setuid32.c shmxt.c shutdown.c \
+       sigaction.c sigaltstack.c siginfo.c signal.c signal_receive.c \
+       signal_receive--pidns-translation.c signalfd4.c sigpending.c \
+       sigprocmask.c sigreturn.c sigsuspend.c sleep.c so_error.c \
+       so_linger.c so_peercred.c so_peercred--pidns-translation.c \
+       so_peercred-Xabbrev.c so_peercred-Xraw.c \
+       so_peercred-Xverbose.c sock_filter-v.c sock_filter-v-Xabbrev.c \
+       sock_filter-v-Xraw.c sock_filter-v-Xverbose.c \
+       sockaddr_xlat-Xabbrev.c sockaddr_xlat-Xraw.c \
+       sockaddr_xlat-Xverbose.c socketcall.c sockopt-sol_netlink.c \
+       sockopt-timestamp.c splice.c $(stack_fcall_SOURCES) \
+       $(stack_fcall_attach_SOURCES) $(stack_fcall_mangled_SOURCES) \
+       stat.c stat64.c statfs.c statfs64.c status-all.c \
+       status-failed.c status-failed-long.c status-failed-status.c \
+       status-none.c status-none-f.c status-none-threads.c \
+       status-successful.c status-successful-long.c \
+       status-successful-status.c status-unfinished.c \
+       status-unfinished-threads.c statx.c strace--strings-in-hex.c \
+       strace--strings-in-hex-all.c \
+       strace--strings-in-hex-non-ascii.c strace-n.c strace-x.c \
+       strace-xx.c swap.c sxetmask.c symlink.c symlinkat.c sync.c \
+       sync_file_range.c sync_file_range2.c sysinfo.c syslog.c \
+       syslog-success.c tee.c tgkill.c tgkill--pidns-translation.c \
+       threads-execve.c threads-execve--quiet-thread-execve.c \
+       threads-execve-q.c threads-execve-qq.c threads-execve-qqq.c \
        time.c timer_create.c timer_xettime.c timerfd_xettime.c \
-       times.c times-fail.c truncate.c truncate64.c ugetrlimit.c \
-       uio.c umask.c umount.c umount2.c umoven-illptr.c umovestr.c \
-       umovestr-illptr.c umovestr2.c umovestr3.c uname.c \
-       unblock_reset_raise.c unix-pair-send-recv.c \
+       times.c times-fail.c tkill.c tkill--pidns-translation.c \
+       tracer_ppid_pgid_sid.c $(trie_test_SOURCES) truncate.c \
+       truncate64.c ugetrlimit.c uio.c umask.c umount.c umount2.c \
+       umoven-illptr.c umovestr.c umovestr-illptr.c umovestr2.c \
+       umovestr3.c umovestr_cached.c umovestr_cached_adjacent.c \
+       uname.c unblock_reset_raise.c unix-pair-send-recv.c \
        unix-pair-sendto-recvfrom.c unlink.c unlinkat.c unshare.c \
        userfaultfd.c ustat.c utime.c utimensat.c utimensat-Xabbrev.c \
        utimensat-Xraw.c utimensat-Xverbose.c utimes.c vfork-f.c \
        vhangup.c vmsplice.c wait4.c wait4-v.c waitid.c waitid-v.c \
        waitpid.c xattr.c xattr-strings.c xet_robust_list.c \
-       xet_thread_area_x86.c xetitimer.c xetpgid.c xetpriority.c \
-       xettimeofday.c zeroargc.c
+       xet_robust_list--pidns-translation.c xet_thread_area_x86.c \
+       xetitimer.c xetpgid.c xetpgid--pidns-translation.c \
+       xetpriority.c xetpriority--pidns-translation.c xettimeofday.c \
+       zeroargc.c
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -3846,9 +5281,11 @@ am__set_TESTS_bases = \
   bases='$(TEST_LOGS)'; \
   bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
   bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
 RECHECK_LOGS = $(TEST_LOGS)
 AM_RECURSIVE_TARGETS = check recheck
-@ENABLE_STACKTRACE_TRUE@am__EXEEXT_2 = strace-k.test $(am__append_1)
+@ENABLE_STACKTRACE_TRUE@am__EXEEXT_2 = strace-k.test strace-k-p.test \
+@ENABLE_STACKTRACE_TRUE@       $(am__append_1)
 TEST_SUITE_LOG = test-suite.log
 TEST_EXTENSIONS = @EXEEXT@ .test
 am__test_logs1 = $(TESTS:=.log)
@@ -3874,17 +5311,22 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
 AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BUILD_EXEEXT = @BUILD_EXEEXT@
 BUILD_OBJEXT = @BUILD_OBJEXT@
-CC = @CC@
+CC = @CC_FOR_M32@
 CCDEPMODE = @CCDEPMODE@
 CC_FOR_BUILD = @CC_FOR_BUILD@
+CC_FOR_M32 = @CC_FOR_M32@
+CC_FOR_MX32 = @CC_FOR_MX32@
 CFLAGS = @CFLAGS@
 CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
+CFLAGS_FOR_M32 = @CFLAGS_FOR_M32@
+CFLAGS_FOR_MX32 = @CFLAGS_FOR_MX32@
 CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@
 CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@
 CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@
@@ -3895,7 +5337,11 @@ COPYRIGHT_YEAR = @COPYRIGHT_YEAR@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@
+CPPFLAGS_FOR_M32 = @CPPFLAGS_FOR_M32@
+CPPFLAGS_FOR_MX32 = @CPPFLAGS_FOR_MX32@
 CPP_FOR_BUILD = @CPP_FOR_BUILD@
+CPP_FOR_M32 = @CPP_FOR_M32@
+CPP_FOR_MX32 = @CPP_FOR_MX32@
 CYGPATH_W = @CYGPATH_W@
 DEB_CHANGELOGTIME = @DEB_CHANGELOGTIME@
 DEFS = @DEFS@
@@ -3937,7 +5383,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
 PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
-PERL = @PERL@
 RANLIB = @RANLIB@
 READELF = @READELF@
 RPM_CHANGELOGTIME = @RPM_CHANGELOGTIME@
@@ -3956,6 +5401,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CC_FOR_BUILD = @ac_ct_CC_FOR_BUILD@
 am__include = @am__include@
@@ -4029,7 +5475,7 @@ OS = linux
 ARCH = @arch_m32@
 NATIVE_ARCH = @arch_native@
 MPERS_NAME = m32
-MPERS_CC_FLAGS = @cc_flags_m32@
+MPERS_CC_FLAGS = @CFLAGS_FOR_M32@ @cc_flags_m32@
 ARCH_MFLAGS = -DMPERS_IS_$(MPERS_NAME) $(MPERS_CC_FLAGS)
 AM_CFLAGS = $(WARN_CFLAGS)
 AM_CPPFLAGS = $(ARCH_MFLAGS) \
@@ -4046,6 +5492,7 @@ AM_CPPFLAGS = $(ARCH_MFLAGS) \
 AM_LDFLAGS = $(ARCH_MFLAGS)
 libtests_a_SOURCES = \
        create_nl_socket.c \
+       create_tmpfile.c \
        errno2name.c \
        error_msg.c \
        fill_memory.c \
@@ -4057,15 +5504,21 @@ libtests_a_SOURCES = \
        inode_of_sockfd.c \
        libmmsg.c \
        libsocketcall.c \
+       lock_file.c \
        overflowuid.c \
+       pidns.c \
+       pidns.h \
        pipe_maxfd.c \
        print_quoted_string.c \
        print_time.c \
        printflags.c \
-       printxval.c \
+       printxval-Xabbrev.c \
+       printxval-Xraw.c \
+       printxval-Xverbose.c \
        signal2name.c \
        skip_unavailable.c \
        sprintrc.c \
+       status.c \
        tail_alloc.c \
        test_netlink.h \
        test_nlattr.h \
@@ -4075,6 +5528,7 @@ libtests_a_SOURCES = \
        test_ucopy.h \
        tests.h \
        tprintf.c \
+       xmalloc_for_tests.c \
        # end of libtests_a_SOURCES
 
 libtests_a_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
@@ -4094,10 +5548,6 @@ PURE_EXECUTABLES = \
   aio_pgetevents \
   alarm \
   bpf \
-  bpf-obj_get_info_by_fd \
-  bpf-obj_get_info_by_fd-prog \
-  bpf-obj_get_info_by_fd-prog-v \
-  bpf-obj_get_info_by_fd-v \
   bpf-v \
   brk \
   btrfs \
@@ -4109,13 +5559,34 @@ PURE_EXECUTABLES = \
   clock_adjtime \
   clock_nanosleep \
   clock_xettime \
+  clone-flags \
+  clone3 \
+  clone3-Xabbrev \
+  clone3-Xraw \
+  clone3-Xverbose \
+  close_range \
+  close_range-P \
+  close_range-y \
+  close_range-yy \
   copy_file_range \
   creat \
   delete_module \
+  dev--decode-fds-dev \
+  dev--decode-fds-path \
+  dev--decode-fds-socket \
   dev-yy \
   dup \
+  dup-P \
+  dup-y \
+  dup-yy \
   dup2 \
+  dup2-P \
+  dup2-y \
+  dup2-yy \
   dup3 \
+  dup3-P \
+  dup3-y \
+  dup3-yy \
   epoll_create \
   epoll_create1 \
   epoll_ctl \
@@ -4126,6 +5597,13 @@ PURE_EXECUTABLES = \
   execve \
   execveat \
   faccessat \
+  faccessat-P \
+  faccessat-y \
+  faccessat-yy \
+  faccessat2 \
+  faccessat2-P \
+  faccessat2-y \
+  faccessat2-yy \
   fadvise64 \
   fadvise64_64 \
   fallocate \
@@ -4148,6 +5626,12 @@ PURE_EXECUTABLES = \
   file_ioctl \
   finit_module \
   flock \
+  fsconfig \
+  fsconfig-P \
+  fsmount \
+  fsopen \
+  fspick \
+  fspick-P \
   fstat \
   fstat-Xabbrev \
   fstat-Xraw \
@@ -4168,7 +5652,9 @@ PURE_EXECUTABLES = \
   getcpu \
   getcwd \
   getdents \
+  getdents-v \
   getdents64 \
+  getdents64-v \
   getegid \
   getegid32 \
   geteuid \
@@ -4192,12 +5678,17 @@ PURE_EXECUTABLES = \
   getsockname \
   getuid \
   getuid32 \
-  getxxid \
+  getxgid \
+  getxpid \
+  getxuid \
   group_req \
   inet-cmsg \
   init_module \
   inotify \
+  inotify_init \
+  inotify_init-y \
   inotify_init1 \
+  inotify_init1-y \
   io_uring_enter \
   io_uring_register \
   io_uring_setup \
@@ -4205,6 +5696,21 @@ PURE_EXECUTABLES = \
   ioctl_block \
   ioctl_dm \
   ioctl_evdev \
+  ioctl_evdev-Xabbrev \
+  ioctl_evdev-Xraw \
+  ioctl_evdev-Xverbose \
+  ioctl_evdev-v \
+  ioctl_evdev-v-Xabbrev \
+  ioctl_evdev-v-Xraw \
+  ioctl_evdev-v-Xverbose \
+  ioctl_hdio \
+  ioctl_hdio-Xabbrev \
+  ioctl_hdio-Xraw \
+  ioctl_hdio-Xverbose \
+  ioctl_hdio-v \
+  ioctl_hdio-v-Xabbrev \
+  ioctl_hdio-v-Xraw \
+  ioctl_hdio-v-Xverbose \
   ioctl_inotify \
   ioctl_kvm_run \
   ioctl_kvm_run-v \
@@ -4220,8 +5726,17 @@ PURE_EXECUTABLES = \
   ioctl_sg_io_v3 \
   ioctl_sg_io_v4 \
   ioctl_sock_gifconf \
+  ioctl_tee \
   ioctl_uffdio \
   ioctl_v4l2 \
+  ioctl_v4l2-Xabbrev \
+  ioctl_v4l2-Xraw \
+  ioctl_v4l2-Xverbose \
+  ioctl_v4l2-v \
+  ioctl_v4l2-v-Xabbrev \
+  ioctl_v4l2-v-Xraw \
+  ioctl_v4l2-v-Xverbose \
+  ioctl_watchdog \
   ioperm \
   iopl \
   ioprio \
@@ -4270,7 +5785,12 @@ PURE_EXECUTABLES = \
   lstat \
   lstat64 \
   madvise \
+  maybe_switch_current_tcp \
+  maybe_switch_current_tcp--quiet-thread-execve \
   mbind \
+  mbind-Xabbrev \
+  mbind-Xraw \
+  mbind-Xverbose \
   membarrier \
   memfd_create \
   memfd_create-Xabbrev \
@@ -4300,6 +5820,8 @@ PURE_EXECUTABLES = \
   mount-Xabbrev \
   mount-Xraw \
   mount-Xverbose \
+  move_mount \
+  move_mount-P \
   move_pages \
   move_pages-Xabbrev \
   move_pages-Xraw \
@@ -4312,6 +5834,10 @@ PURE_EXECUTABLES = \
   msg_name \
   munlockall \
   nanosleep \
+  net--decode-fds-dev-netlink \
+  net--decode-fds-none-netlink \
+  net--decode-fds-path-netlink \
+  net--decode-fds-socket-netlink \
   net-icmp_filter \
   net-packet_mreq \
   net-packet_mreq-Xabbrev \
@@ -4391,7 +5917,19 @@ PURE_EXECUTABLES = \
   oldselect-efault \
   oldstat \
   open \
+  open_tree \
+  open_tree-P \
   openat \
+  openat2 \
+  openat2-Xabbrev \
+  openat2-Xraw \
+  openat2-Xverbose \
+  openat2-v \
+  openat2-v-y \
+  openat2-v-y-Xabbrev \
+  openat2-v-y-Xraw \
+  openat2-v-y-Xverbose \
+  openat2-y \
   osf_utimes \
   pause \
   perf_event_open \
@@ -4399,6 +5937,16 @@ PURE_EXECUTABLES = \
   personality-Xabbrev \
   personality-Xraw \
   personality-Xverbose \
+  pidfd_getfd \
+  pidfd_getfd-y \
+  pidfd_getfd-yy \
+  pidfd_open \
+  pidfd_open--decode-fd-path \
+  pidfd_open--decode-fd-pidfd \
+  pidfd_open--decode-fd-socket \
+  pidfd_open-P \
+  pidfd_open-y \
+  pidfd_open-yy \
   pidfd_send_signal \
   pipe \
   pipe2 \
@@ -4406,9 +5954,7 @@ PURE_EXECUTABLES = \
   pkey_free \
   pkey_mprotect \
   poll \
-  poll-P \
   ppoll \
-  ppoll-P \
   prctl-arg2-intptr \
   prctl-dumpable \
   prctl-name \
@@ -4450,7 +5996,9 @@ PURE_EXECUTABLES = \
   readlinkat \
   readv \
   reboot \
+  recv-MSG_TRUNC \
   recvfrom \
+  recvfrom-MSG_TRUNC \
   recvmmsg-timeout \
   recvmsg \
   remap_file_pages \
@@ -4488,9 +6036,14 @@ PURE_EXECUTABLES = \
   seccomp_get_action_avail \
   select \
   semop \
+  semop-indirect \
+  semtimedop \
   sendfile \
   sendfile64 \
   set_mempolicy \
+  set_mempolicy-Xabbrev \
+  set_mempolicy-Xraw \
+  set_mempolicy-Xverbose \
   setdomainname \
   setfsgid \
   setfsgid32 \
@@ -4548,7 +6101,23 @@ PURE_EXECUTABLES = \
   stat64 \
   statfs \
   statfs64 \
+  status-all \
+  status-failed \
+  status-failed-long \
+  status-failed-status \
+  status-none \
+  status-none-f \
+  status-successful \
+  status-successful-long \
+  status-successful-status \
+  status-unfinished \
   statx \
+  strace--strings-in-hex \
+  strace--strings-in-hex-all \
+  strace--strings-in-hex-non-ascii \
+  strace-n \
+  strace-x \
+  strace-xx \
   swap \
   sxetmask \
   symlink \
@@ -4559,12 +6128,14 @@ PURE_EXECUTABLES = \
   sysinfo \
   syslog \
   tee \
+  tgkill \
   time \
   timer_create \
   timer_xettime \
   timerfd_xettime \
   times \
   times-fail \
+  tkill \
   truncate \
   truncate64 \
   ugetrlimit \
@@ -4577,6 +6148,8 @@ PURE_EXECUTABLES = \
   umovestr-illptr \
   umovestr2 \
   umovestr3 \
+  umovestr_cached \
+  umovestr_cached_adjacent \
   uname \
   unlink \
   unlinkat \
@@ -4614,6 +6187,8 @@ ftruncate64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 localtime_LDADD = $(clock_LIBS) $(LDADD)
 looping_threads_LDADD = -lpthread $(LDADD)
 lstat64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
+maybe_switch_current_tcp_LDADD = -lpthread $(LDADD)
+maybe_switch_current_tcp__quiet_thread_execve_LDADD = -lpthread $(LDADD)
 mmap64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 mmap64_Xabbrev_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 mmap64_Xraw_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
@@ -4627,17 +6202,30 @@ preadv_pwritev_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 pwritev_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 stat64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 statfs_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
+status_none_threads_LDADD = -lpthread $(LDADD)
+status_unfinished_threads_LDADD = -lpthread $(LDADD)
 threads_execve_LDADD = -lpthread $(clock_LIBS) $(LDADD)
+threads_execve__quiet_thread_execve_LDADD = -lpthread $(clock_LIBS) $(LDADD)
+threads_execve_q_LDADD = -lpthread $(clock_LIBS) $(LDADD)
+threads_execve_qq_LDADD = -lpthread $(clock_LIBS) $(LDADD)
+threads_execve_qqq_LDADD = -lpthread $(clock_LIBS) $(LDADD)
 times_LDADD = $(clock_LIBS) $(LDADD)
 truncate64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 uio_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 stack_fcall_SOURCES = stack-fcall.c \
        stack-fcall-0.c stack-fcall-1.c stack-fcall-2.c stack-fcall-3.c
 
+stack_fcall_attach_SOURCES = stack-fcall-attach.c \
+       stack-fcall-0.c stack-fcall-1.c stack-fcall-2.c stack-fcall-3.c
+
 stack_fcall_mangled_SOURCES = stack-fcall-mangled.c \
        stack-fcall-mangled-0.c stack-fcall-mangled-1.c \
        stack-fcall-mangled-2.c stack-fcall-mangled-3.c
 
+trie_test_SOURCES = trie_test.c trie_for_tests.c
+trie_test_CPPFLAGS = $(AM_CPPFLAGS) $(CODE_COVERAGE_CPPFLAGS)
+trie_test_CFLAGS = $(AM_CFLAGS) $(CODE_COVERAGE_CFLAGS)
+trie_test_LDADD = $(LDADD) $(CODE_COVERAGE_LIBS)
 
 # Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in; do not edit.
 GEN_TESTS = _newselect.gen.test _newselect-P.gen.test accept.gen.test \
@@ -4651,50 +6239,114 @@ GEN_TESTS = _newselect.gen.test _newselect-P.gen.test accept.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 \
-       dev-yy.gen.test dup.gen.test dup2.gen.test dup3.gen.test \
+       clone3.gen.test clone3-Xabbrev.gen.test clone3-Xraw.gen.test \
+       clone3-Xverbose.gen.test clone3-success-Xabbrev.gen.test \
+       clone3-success-Xraw.gen.test clone3-success-Xverbose.gen.test \
+       clone_parent.gen.test clone_parent--quiet-exit.gen.test \
+       clone_parent-q.gen.test clone_parent-qq.gen.test \
+       clone_ptrace--quiet-attach.gen.test \
+       clone_ptrace--quiet-exit.gen.test clone_ptrace-q.gen.test \
+       clone_ptrace-qq.gen.test close_range.gen.test \
+       close_range-P.gen.test close_range-y.gen.test \
+       close_range-yy.gen.test copy_file_range.gen.test \
+       creat.gen.test delete_module.gen.test \
+       dev--decode-fds-dev.gen.test dev--decode-fds-path.gen.test \
+       dev--decode-fds-socket.gen.test dev-yy.gen.test dup.gen.test \
+       dup-P.gen.test dup-y.gen.test dup-yy.gen.test dup2.gen.test \
+       dup2-P.gen.test dup2-y.gen.test dup2-yy.gen.test dup3.gen.test \
+       dup3-P.gen.test dup3-y.gen.test dup3-yy.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 \
+       faccessat-P.gen.test faccessat-y.gen.test \
+       faccessat-yy.gen.test faccessat2-P.gen.test \
+       faccessat2-y.gen.test faccessat2-yy.gen.test \
+       fadvise64_64.gen.test fallocate.gen.test \
        fanotify_init.gen.test fanotify_mark.gen.test \
        fanotify_mark-Xabbrev.gen.test fanotify_mark-Xraw.gen.test \
        fanotify_mark-Xverbose.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 fstat-Xabbrev.gen.test \
-       fstat-Xraw.gen.test fstat-Xverbose.gen.test fstat64.gen.test \
+       fcntl--pidns-translation.gen.test fcntl64.gen.test \
+       fcntl64--pidns-translation.gen.test fdatasync.gen.test \
+       file_handle.gen.test file_ioctl.gen.test \
+       filter_seccomp.gen.test filter_seccomp-flag.gen.test \
+       finit_module.gen.test flock.gen.test fork-f.gen.test \
+       fsconfig.gen.test fsconfig-P.gen.test fsmount.gen.test \
+       fsopen.gen.test fspick.gen.test fspick-P.gen.test \
+       fstat.gen.test fstat-Xabbrev.gen.test fstat-Xraw.gen.test \
+       fstat-Xverbose.gen.test fstat64.gen.test \
        fstat64-Xabbrev.gen.test fstat64-Xraw.gen.test \
        fstat64-Xverbose.gen.test fstatat64.gen.test fstatfs.gen.test \
        fstatfs64.gen.test fsync.gen.test fsync-y.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 \
+       getdents.gen.test getdents-v.gen.test getdents64.gen.test \
+       getdents64-v.gen.test getegid.gen.test getegid-creds.gen.test \
+       getegid32.gen.test getegid32-creds.gen.test geteuid.gen.test \
+       geteuid-creds.gen.test geteuid32.gen.test \
+       geteuid32-creds.gen.test getgid.gen.test getgid-creds.gen.test \
+       getgid32.gen.test getgid32-creds.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 io_uring_enter.gen.test \
-       io_uring_register.gen.test io_uring_setup.gen.test \
-       ioctl_block.gen.test ioctl_dm.gen.test ioctl_dm-v.gen.test \
-       ioctl_evdev.gen.test ioctl_evdev-v.gen.test \
-       ioctl_inotify.gen.test ioctl_kvm_run.gen.test \
-       ioctl_kvm_run-v.gen.test ioctl_kvm_run_auxstr_vcpu.gen.test \
-       ioctl_loop.gen.test ioctl_loop-nv.gen.test \
-       ioctl_loop-v.gen.test ioctl_mtd.gen.test ioctl_nbd.gen.test \
-       ioctl_nsfs.gen.test ioctl_perf.gen.test ioctl_ptp.gen.test \
-       ioctl_random.gen.test ioctl_rtc.gen.test ioctl_rtc-v.gen.test \
-       ioctl_scsi.gen.test ioctl_sg_io_v3.gen.test \
-       ioctl_sg_io_v4.gen.test ioctl_sock_gifconf.gen.test \
-       ioctl_uffdio.gen.test ioctl_v4l2.gen.test ioperm.gen.test \
-       iopl.gen.test ioprio.gen.test ioprio-Xabbrev.gen.test \
+       getpgrp--pidns-translation.gen.test getpid.gen.test \
+       getpid--pidns-translation.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 \
+       getsid--pidns-translation.gen.test getsockname.gen.test \
+       gettid.gen.test getuid-creds.gen.test getuid32.gen.test \
+       getuid32-creds.gen.test getxgid.gen.test getxpid.gen.test \
+       getxuid.gen.test group_req.gen.test inet-cmsg.gen.test \
+       init_module.gen.test inotify.gen.test inotify_init.gen.test \
+       inotify_init1.gen.test inotify_init1-y.gen.test \
+       io_uring_enter.gen.test io_uring_register.gen.test \
+       io_uring_setup.gen.test ioctl_block.gen.test ioctl_dm.gen.test \
+       ioctl_dm-v.gen.test ioctl_evdev.gen.test \
+       ioctl_evdev-Xabbrev.gen.test ioctl_evdev-Xraw.gen.test \
+       ioctl_evdev-Xverbose.gen.test ioctl_evdev-v.gen.test \
+       ioctl_evdev-v-Xabbrev.gen.test ioctl_evdev-v-Xraw.gen.test \
+       ioctl_evdev-v-Xverbose.gen.test \
+       ioctl_evdev-success-Xabbrev.gen.test \
+       ioctl_evdev-success-Xraw.gen.test \
+       ioctl_evdev-success-Xverbose.gen.test \
+       ioctl_evdev-success-v.gen.test \
+       ioctl_evdev-success-v-Xabbrev.gen.test \
+       ioctl_evdev-success-v-Xraw.gen.test \
+       ioctl_evdev-success-v-Xverbose.gen.test ioctl_hdio.gen.test \
+       ioctl_hdio-Xabbrev.gen.test ioctl_hdio-Xraw.gen.test \
+       ioctl_hdio-Xverbose.gen.test ioctl_hdio-v.gen.test \
+       ioctl_hdio-v-Xabbrev.gen.test ioctl_hdio-v-Xraw.gen.test \
+       ioctl_hdio-v-Xverbose.gen.test ioctl_hdio-success.gen.test \
+       ioctl_hdio-success-Xabbrev.gen.test \
+       ioctl_hdio-success-Xraw.gen.test \
+       ioctl_hdio-success-Xverbose.gen.test \
+       ioctl_hdio-success-v.gen.test \
+       ioctl_hdio-success-v-Xabbrev.gen.test \
+       ioctl_hdio-success-v-Xraw.gen.test \
+       ioctl_hdio-success-v-Xverbose.gen.test ioctl_inotify.gen.test \
+       ioctl_kvm_run.gen.test ioctl_kvm_run-v.gen.test \
+       ioctl_kvm_run_auxstr_vcpu.gen.test ioctl_loop.gen.test \
+       ioctl_loop-nv.gen.test ioctl_loop-v.gen.test \
+       ioctl_mtd.gen.test ioctl_nbd.gen.test ioctl_nsfs.gen.test \
+       ioctl_perf.gen.test ioctl_perf-success.gen.test \
+       ioctl_ptp.gen.test ioctl_random.gen.test ioctl_rtc.gen.test \
+       ioctl_rtc-v.gen.test ioctl_scsi.gen.test \
+       ioctl_sg_io_v3.gen.test ioctl_sg_io_v4.gen.test \
+       ioctl_sock_gifconf.gen.test ioctl_tee.gen.test \
+       ioctl_uffdio.gen.test ioctl_v4l2.gen.test \
+       ioctl_v4l2-Xabbrev.gen.test ioctl_v4l2-Xraw.gen.test \
+       ioctl_v4l2-Xverbose.gen.test ioctl_v4l2-v.gen.test \
+       ioctl_v4l2-v-Xabbrev.gen.test ioctl_v4l2-v-Xraw.gen.test \
+       ioctl_v4l2-v-Xverbose.gen.test ioctl_v4l2-success.gen.test \
+       ioctl_v4l2-success-Xabbrev.gen.test \
+       ioctl_v4l2-success-Xraw.gen.test \
+       ioctl_v4l2-success-Xverbose.gen.test \
+       ioctl_v4l2-success-v.gen.test \
+       ioctl_v4l2-success-v-Xabbrev.gen.test \
+       ioctl_v4l2-success-v-Xraw.gen.test \
+       ioctl_v4l2-success-v-Xverbose.gen.test ioctl_watchdog.gen.test \
+       ioperm.gen.test iopl.gen.test ioprio.gen.test \
+       ioprio--pidns-translation.gen.test ioprio-Xabbrev.gen.test \
        ioprio-Xraw.gen.test ioprio-Xverbose.gen.test ip_mreq.gen.test \
        ipc.gen.test ipc_msg.gen.test ipc_msg-Xabbrev.gen.test \
        ipc_msg-Xraw.gen.test ipc_msg-Xverbose.gen.test \
@@ -4704,34 +6356,47 @@ GEN_TESTS = _newselect.gen.test _newselect-P.gen.test accept.gen.test \
        ipc_sem-Xverbose.gen.test ipc_shm.gen.test \
        ipc_shm-Xabbrev.gen.test ipc_shm-Xraw.gen.test \
        ipc_shm-Xverbose.gen.test kcmp.gen.test kcmp-y.gen.test \
-       kern_features.gen.test kernel_version.gen.test \
-       kernel_version-Xabbrev.gen.test kernel_version-Xraw.gen.test \
-       kernel_version-Xverbose.gen.test kexec_file_load.gen.test \
-       kexec_load.gen.test keyctl.gen.test keyctl-Xabbrev.gen.test \
-       keyctl-Xraw.gen.test keyctl-Xverbose.gen.test kill.gen.test \
+       kcmp-y--pidns-translation.gen.test kern_features.gen.test \
+       kernel_version.gen.test kernel_version-Xabbrev.gen.test \
+       kernel_version-Xraw.gen.test kernel_version-Xverbose.gen.test \
+       kexec_file_load.gen.test kexec_load.gen.test keyctl.gen.test \
+       keyctl-Xabbrev.gen.test keyctl-Xraw.gen.test \
+       keyctl-Xverbose.gen.test kill.gen.test \
+       kill--pidns-translation.gen.test ksysent.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 \
-       memfd_create-Xabbrev.gen.test memfd_create-Xraw.gen.test \
-       memfd_create-Xverbose.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 \
+       lstat64.gen.test madvise.gen.test \
+       maybe_switch_current_tcp.gen.test \
+       maybe_switch_current_tcp--quiet-thread-execve.gen.test \
+       mbind.gen.test mbind-Xabbrev.gen.test mbind-Xraw.gen.test \
+       mbind-Xverbose.gen.test membarrier.gen.test \
+       memfd_create.gen.test memfd_create-Xabbrev.gen.test \
+       memfd_create-Xraw.gen.test memfd_create-Xverbose.gen.test \
+       migrate_pages.gen.test \
+       migrate_pages--pidns-translation.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 mmap-Xabbrev.gen.test mmap-Xraw.gen.test \
        mmap-Xverbose.gen.test mmap64.gen.test mmap64-Xabbrev.gen.test \
        mmap64-Xraw.gen.test mmap64-Xverbose.gen.test mmsg.gen.test \
        mmsg-silent.gen.test mmsg_name.gen.test mmsg_name-v.gen.test \
        modify_ldt.gen.test mount.gen.test mount-Xabbrev.gen.test \
        mount-Xraw.gen.test mount-Xverbose.gen.test \
-       move_pages.gen.test move_pages-Xabbrev.gen.test \
-       move_pages-Xraw.gen.test move_pages-Xverbose.gen.test \
-       mq.gen.test mq_sendrecv.gen.test mq_sendrecv-read.gen.test \
+       move_mount.gen.test move_mount-P.gen.test move_pages.gen.test \
+       move_pages-Xabbrev.gen.test move_pages-Xraw.gen.test \
+       move_pages-Xverbose.gen.test \
+       move_pages--pidns-translation.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-packet_mreq.gen.test net-packet_mreq-Xabbrev.gen.test \
-       net-packet_mreq-Xraw.gen.test \
+       nanosleep.gen.test net--decode-fds-dev-netlink.gen.test \
+       net--decode-fds-none-netlink.gen.test \
+       net--decode-fds-path-netlink.gen.test \
+       net--decode-fds-socket-netlink.gen.test \
+       net-icmp_filter.gen.test net-packet_mreq.gen.test \
+       net-packet_mreq-Xabbrev.gen.test net-packet_mreq-Xraw.gen.test \
        net-packet_mreq-Xverbose.gen.test net-sockaddr.gen.test \
+       net-sockaddr--pidns-translation.gen.test \
        net-tpacket_req.gen.test net-tpacket_stats.gen.test \
        net-yy-inet6.gen.test netlink_audit.gen.test \
        netlink_crypto.gen.test netlink_generic.gen.test \
@@ -4750,7 +6415,8 @@ GEN_TESTS = _newselect.gen.test _newselect-P.gen.test accept.gen.test \
        nlattr_ifaddrmsg.gen.test nlattr_ifinfomsg.gen.test \
        nlattr_ifla_af_spec.gen.test nlattr_ifla_brport.gen.test \
        nlattr_ifla_linkinfo.gen.test nlattr_ifla_port.gen.test \
-       nlattr_ifla_xdp.gen.test nlattr_inet_diag_msg.gen.test \
+       nlattr_ifla_xdp.gen.test nlattr_ifla_xdp-y.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 \
@@ -4767,31 +6433,50 @@ GEN_TESTS = _newselect.gen.test _newselect-P.gen.test accept.gen.test \
        old_mmap-v-none.gen.test oldfstat.gen.test oldlstat.gen.test \
        oldselect.gen.test oldselect-P.gen.test \
        oldselect-efault.gen.test oldselect-efault-P.gen.test \
-       oldstat.gen.test open.gen.test openat.gen.test \
-       orphaned_process_group.gen.test osf_utimes.gen.test \
-       pause.gen.test perf_event_open.gen.test \
+       oldstat.gen.test open.gen.test open_tree.gen.test \
+       open_tree-P.gen.test openat.gen.test openat2.gen.test \
+       openat2-Xabbrev.gen.test openat2-Xraw.gen.test \
+       openat2-Xverbose.gen.test openat2-v.gen.test \
+       openat2-v-y.gen.test openat2-v-y-Xabbrev.gen.test \
+       openat2-v-y-Xraw.gen.test openat2-v-y-Xverbose.gen.test \
+       openat2-y.gen.test orphaned_process_group.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 personality-Xabbrev.gen.test \
        personality-Xraw.gen.test personality-Xverbose.gen.test \
-       pidfd_send_signal.gen.test pipe2.gen.test pkey_alloc.gen.test \
-       pkey_free.gen.test pkey_mprotect.gen.test ppoll.gen.test \
-       ppoll-P.gen.test ppoll-v.gen.test pread64-pwrite64.gen.test \
-       preadv.gen.test preadv-pwritev.gen.test \
-       preadv2-pwritev2.gen.test printpath-umovestr.gen.test \
+       pidfd_getfd.gen.test pidfd_getfd-y.gen.test \
+       pidfd_getfd-yy.gen.test pidfd_open.gen.test \
+       pidfd_open--decode-fd-path.gen.test \
+       pidfd_open--decode-fd-pidfd.gen.test \
+       pidfd_open--decode-fd-socket.gen.test pidfd_open-P.gen.test \
+       pidfd_open-y.gen.test pidfd_open-yy.gen.test \
+       pidfd_open--pidns-translation.gen.test \
+       pidfd_send_signal.gen.test \
+       pidfd_send_signal--pidns-translation.gen.test pipe2.gen.test \
+       pkey_alloc.gen.test pkey_free.gen.test pkey_mprotect.gen.test \
+       ppoll.gen.test ppoll-P.gen.test ppoll-v.gen.test \
+       pread64-pwrite64.gen.test preadv.gen.test \
+       preadv-pwritev.gen.test preadv2-pwritev2.gen.test \
+       printpath-umovestr.gen.test \
        printpath-umovestr-peekdata.gen.test \
        printpath-umovestr-undumpable.gen.test \
        printsignal-Xabbrev.gen.test printsignal-Xraw.gen.test \
        printsignal-Xverbose.gen.test printstr.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 \
+       prlimit64--pidns-translation.gen.test \
+       process_vm_readv.gen.test \
+       process_vm_readv--pidns-translation.gen.test \
+       process_vm_writev.gen.test \
+       process_vm_writev--pidns-translation.gen.test \
        pselect6.gen.test ptrace.gen.test ptrace_syscall_info.gen.test \
        pwritev.gen.test quotactl.gen.test quotactl-Xabbrev.gen.test \
        quotactl-Xraw.gen.test quotactl-Xverbose.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 \
+       reboot.gen.test recv-MSG_TRUNC.gen.test recvfrom.gen.test \
+       recvfrom-MSG_TRUNC.gen.test recvmmsg-timeout.gen.test \
        recvmsg.gen.test regex.gen.test remap_file_pages.gen.test \
        remap_file_pages-Xabbrev.gen.test \
        remap_file_pages-Xraw.gen.test \
@@ -4799,72 +6484,133 @@ GEN_TESTS = _newselect.gen.test _newselect-P.gen.test accept.gen.test \
        renameat.gen.test renameat2.gen.test request_key.gen.test \
        riscv_flush_icache.gen.test rmdir.gen.test \
        rt_sigpending.gen.test rt_sigprocmask.gen.test \
-       rt_sigqueueinfo.gen.test rt_sigreturn.gen.test \
-       rt_sigsuspend.gen.test rt_sigtimedwait.gen.test \
-       rt_tgsigqueueinfo.gen.test s390_guarded_storage.gen.test \
-       s390_guarded_storage-v.gen.test \
+       rt_sigqueueinfo.gen.test \
+       rt_sigqueueinfo--pidns-translation.gen.test \
+       rt_sigreturn.gen.test rt_sigsuspend.gen.test \
+       rt_sigtimedwait.gen.test rt_tgsigqueueinfo.gen.test \
+       rt_tgsigqueueinfo--pidns-translation.gen.test \
+       s390_guarded_storage.gen.test s390_guarded_storage-v.gen.test \
        s390_pci_mmio_read_write.gen.test s390_runtime_instr.gen.test \
        s390_sthyi.gen.test s390_sthyi-v.gen.test sched.gen.test \
        sched_get_priority_mxx.gen.test sched_rr_get_interval.gen.test \
-       sched_xetaffinity.gen.test sched_xetattr.gen.test \
-       sched_xetparam.gen.test sched_xetscheduler.gen.test \
+       sched_xetaffinity.gen.test \
+       sched_xetaffinity--pidns-translation.gen.test \
+       sched_xetattr.gen.test \
+       sched_xetattr--pidns-translation.gen.test \
+       sched_xetparam.gen.test \
+       sched_xetparam--pidns-translation.gen.test \
+       sched_xetscheduler.gen.test \
+       sched_xetscheduler--pidns-translation.gen.test \
        sched_yield.gen.test seccomp-filter.gen.test \
        seccomp-filter-v.gen.test seccomp_get_action_avail.gen.test \
        select.gen.test select-P.gen.test semop.gen.test \
-       sendfile.gen.test sendfile64.gen.test set_mempolicy.gen.test \
-       setdomainname.gen.test setfsgid.gen.test setfsgid32.gen.test \
-       setfsuid.gen.test setfsuid32.gen.test setgid.gen.test \
-       setgid32.gen.test setgroups.gen.test setgroups32.gen.test \
-       sethostname.gen.test setns.gen.test setregid.gen.test \
-       setregid32.gen.test setresgid.gen.test setresgid32.gen.test \
-       setresuid.gen.test setresuid32.gen.test setreuid.gen.test \
-       setreuid32.gen.test setrlimit.gen.test \
-       setrlimit-Xabbrev.gen.test setrlimit-Xraw.gen.test \
-       setrlimit-Xverbose.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_error.gen.test \
-       so_linger.gen.test so_peercred.gen.test \
-       so_peercred-Xabbrev.gen.test so_peercred-Xraw.gen.test \
-       so_peercred-Xverbose.gen.test sock_filter-v.gen.test \
+       semop-indirect.gen.test semtimedop.gen.test sendfile.gen.test \
+       sendfile64.gen.test set_mempolicy.gen.test \
+       set_mempolicy-Xabbrev.gen.test set_mempolicy-Xraw.gen.test \
+       set_mempolicy-Xverbose.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 setrlimit-Xabbrev.gen.test \
+       setrlimit-Xraw.gen.test setrlimit-Xverbose.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 \
+       signal_receive--pidns-translation.gen.test signalfd4.gen.test \
+       sigpending.gen.test sigprocmask.gen.test sigreturn.gen.test \
+       sigsuspend.gen.test so_error.gen.test so_linger.gen.test \
+       so_peercred.gen.test so_peercred-Xabbrev.gen.test \
+       so_peercred-Xraw.gen.test so_peercred-Xverbose.gen.test \
+       so_peercred--pidns-translation.gen.test sock_filter-v.gen.test \
        sock_filter-v-Xabbrev.gen.test sock_filter-v-Xraw.gen.test \
        sock_filter-v-Xverbose.gen.test sockaddr_xlat-Xabbrev.gen.test \
        sockaddr_xlat-Xraw.gen.test sockaddr_xlat-Xverbose.gen.test \
        socketcall.gen.test sockopt-sol_netlink.gen.test \
        sockopt-timestamp.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 \
+       status-all.gen.test status-failed.gen.test \
+       status-failed-long.gen.test status-failed-status.gen.test \
+       status-none.gen.test status-successful.gen.test \
+       status-successful-long.gen.test \
+       status-successful-status.gen.test status-unfinished.gen.test \
+       statx.gen.test strace--absolute-timestamps.gen.test \
+       strace--absolute-timestamps-format-time.gen.test \
+       strace--absolute-timestamps-format-time-precision-s.gen.test \
+       strace--absolute-timestamps-format-time-precision-ms.gen.test \
+       strace--absolute-timestamps-format-time-precision-us.gen.test \
+       strace--absolute-timestamps-format-time-precision-ns.gen.test \
+       strace--absolute-timestamps-format-unix-precision-s.gen.test \
+       strace--absolute-timestamps-format-unix-precision-ms.gen.test \
+       strace--absolute-timestamps-format-unix-precision-us.gen.test \
+       strace--absolute-timestamps-format-unix-precision-ns.gen.test \
+       strace--follow-forks-output-separately.gen.test \
+       strace--relative-timestamps.gen.test \
+       strace--relative-timestamps-s.gen.test \
+       strace--relative-timestamps-ms.gen.test \
+       strace--relative-timestamps-us.gen.test \
+       strace--relative-timestamps-ns.gen.test \
+       strace--syscall-times.gen.test \
+       strace--syscall-times-s.gen.test \
+       strace--syscall-times-ms.gen.test \
+       strace--syscall-times-us.gen.test \
+       strace--syscall-times-ns.gen.test \
+       strace--strings-in-hex.gen.test \
+       strace--strings-in-hex-all.gen.test \
+       strace--strings-in-hex-non-ascii.gen.test \
+       strace--timestamps.gen.test strace--timestamps-time.gen.test \
+       strace--timestamps-time-s.gen.test \
+       strace--timestamps-time-ms.gen.test \
+       strace--timestamps-time-us.gen.test \
+       strace--timestamps-time-ns.gen.test \
+       strace--timestamps-unix-s.gen.test \
+       strace--timestamps-unix-ms.gen.test \
+       strace--timestamps-unix-us.gen.test \
+       strace--timestamps-unix-ns.gen.test strace-n.gen.test \
+       strace-x.gen.test strace-xx.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 tgkill.gen.test \
+       tgkill--pidns-translation.gen.test \
+       threads-execve--quiet-thread-execve.gen.test \
+       threads-execve-q.gen.test threads-execve-qq.gen.test \
+       threads-execve-qqq.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_personality_32.gen.test \
-       trace_personality_64.gen.test \
+       tkill.gen.test tkill--pidns-translation.gen.test \
+       trace_clock.gen.test trace_creds.gen.test trace_fstat.gen.test \
+       trace_fstatfs.gen.test trace_lstat.gen.test \
+       trace_personality_32.gen.test trace_personality_64.gen.test \
        trace_personality_regex_32.gen.test \
        trace_personality_regex_64.gen.test \
        trace_personality_regex_x32.gen.test \
        trace_personality_x32.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 utimensat-Xabbrev.gen.test \
-       utimensat-Xraw.gen.test utimensat-Xverbose.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 \
+       trie_test.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 \
+       umovestr_cached_adjacent.gen.test unlink.gen.test \
+       unlinkat.gen.test unshare.gen.test userfaultfd.gen.test \
+       ustat.gen.test utime.gen.test utimensat.gen.test \
+       utimensat-Xabbrev.gen.test utimensat-Xraw.gen.test \
+       utimensat-Xverbose.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 \
+       xet_robust_list--pidns-translation.gen.test xetitimer.gen.test \
+       xetpgid.gen.test xetpgid--pidns-translation.gen.test \
+       xetpriority.gen.test xetpriority--pidns-translation.gen.test \
        xettimeofday.gen.test
 @ENABLE_STACKTRACE_FALSE@STACKTRACE_TESTS = 
 @ENABLE_STACKTRACE_TRUE@STACKTRACE_TESTS = strace-k.test \
-@ENABLE_STACKTRACE_TRUE@       $(am__append_1)
+@ENABLE_STACKTRACE_TRUE@       strace-k-p.test $(am__append_1)
 DECODER_TESTS = \
+       bpf-success-long-y.test \
        bpf-success-v.test \
        bpf-success.test \
        brk.test \
@@ -4877,17 +6623,21 @@ DECODER_TESTS = \
        btrfs-wX.test \
        caps-abbrev.test \
        caps.test \
+       clone-flags.test \
+       clone3-success.test \
        eventfd.test \
        execve-v.test \
        execve.test \
        fadvise64.test \
+       faccessat.test \
+       faccessat2.test \
        futex.test \
        getuid.test \
        int_0x80.test \
+       inotify_init-y.test \
        ioctl.test \
-       ioctl_evdev-success-v.test \
+       ioctl_block--pidns-translation.test \
        ioctl_evdev-success.test \
-       ioctl_perf-success.test \
        ipc_msgbuf.test \
        kern_features-fault.test \
        llseek.test \
@@ -4929,6 +6679,7 @@ DECODER_TESTS = \
        seccomp-strict.test \
        sigaltstack.test \
        sun_path.test \
+       syslog-success.test \
        uio.test \
        umount.test \
        umount2.test \
@@ -4944,7 +6695,6 @@ MISC_TESTS = \
        attach-f-p.test \
        attach-p-cmd.test \
        bexecve.test \
-       clone_parent.test \
        clone_ptrace.test \
        count-f.test \
        count.test \
@@ -4953,20 +6703,24 @@ MISC_TESTS = \
        detach-sleeping.test \
        detach-stopped.test \
        fflush.test \
+       filter_seccomp-perf.test \
        filter-unavailable.test \
        filtering_fd-syntax.test \
        filtering_syscall-syntax.test \
        first_exec_failure.test \
+       fork--pidns-translation.test \
        get_regs.test \
+       gettid--pidns-translation.test \
        inject-nf.test \
        interactive_block.test \
        kill_child.test \
-       ksysent.test \
        localtime.test \
        looping_threads.test \
+       netlink_audit--pidns-translation.test \
        opipe.test \
        options-syntax.test \
        pc.test \
+       pidns-cache.test \
        printpath-umovestr-legacy.test \
        printstrn-umoven-legacy.test \
        qual_fault-syntax.test \
@@ -4986,8 +6740,16 @@ MISC_TESTS = \
        restart_syscall.test \
        sigblock.test \
        sigign.test \
+       status-detached.test \
+       status-none-threads.test \
+       status-unfinished-threads.test \
        strace-C.test \
+       strace-D.test \
+       strace-DD.test \
+       strace-DDD.test \
        strace-E.test \
+       strace-E-override.test \
+       strace-E-unset.test \
        strace-S.test \
        strace-T.test \
        strace-V.test \
@@ -5000,6 +6762,7 @@ MISC_TESTS = \
        strace-ttt.test \
        termsig.test \
        threads-execve.test \
+       umovestr_cached.test \
        # end of MISC_TESTS
 
 XFAIL_TESTS_ = 
@@ -5027,7 +6790,10 @@ EXTRA_DIST = \
        eventfd.expected \
        fadvise.h \
        fcntl-common.c \
+       filter_seccomp.in \
+       filter_seccomp.sh \
        filter-unavailable.expected \
+       fork--pidns-translation.awk \
        fstatat.c \
        fstatx.c \
        gen_pure_executables.sh \
@@ -5036,17 +6802,20 @@ EXTRA_DIST = \
        getresugid.c \
        init.sh \
        init_delete_module.h \
+       ioctl-success.sh \
        ioctl_kvm_run_common.c \
        ipc.sh \
+       kernel_old_timespec.h \
+       kernel_old_timex.h \
        ksysent.sed \
        lstatx.c \
        match.awk \
        net.expected \
-       netlink_sock_diag-v.sh \
        nlattr_ifla.h \
        pipe.expected \
        print_user_desc.c \
        printsignal.c \
+       printxval.c \
        process_vm_readv_writev.c \
        pure_executables.list \
        qual_fault-exit_group.expected \
@@ -5060,6 +6829,7 @@ EXTRA_DIST = \
        run.sh \
        sched.in \
        scno_tampering.sh \
+       semop-common.c \
        setfsugid.c \
        setresugid.c \
        setreugid.c \
@@ -5068,18 +6838,37 @@ EXTRA_DIST = \
        sockaddr_xlat.c \
        sockname.c \
        stack-fcall.h \
+       status-detached.expected \
+       strace--follow-forks-output-separately.expected \
+       strace--relative-timestamps.expected \
+       strace--relative-timestamps-s.expected \
+       strace--relative-timestamps-ms.expected \
+       strace--relative-timestamps-us.expected \
+       strace--relative-timestamps-ns.expected \
+       strace--syscall-times.expected \
+       strace--syscall-times-s.expected \
+       strace--syscall-times-ms.expected \
+       strace--syscall-times-us.expected \
+       strace--syscall-times-ns.expected \
        strace-C.expected \
+       strace-D.expected \
+       strace-DDD.expected \
        strace-E.expected \
+       strace-E-unset.expected \
        strace-T.expected \
        strace-ff.expected \
        strace-k-demangle.expected \
        strace-k-demangle.test \
+       strace-k-p.expected \
+       strace-k-p.test \
        strace-k.expected \
        strace-k.test \
        strace-r.expected \
        strace.supp \
        sun_path.expected \
        syntax.sh \
+       trace_clock.in \
+       trace_creds.in \
        trace_fstat.in \
        trace_fstatfs.in \
        trace_lstat.in \
@@ -5100,6 +6889,7 @@ EXTRA_DIST = \
        unix-pair-send-recv.expected \
        unix-pair-sendto-recvfrom.expected \
        xchownx.c \
+       xgetdents.c \
        xgetrlimit.c \
        xselect.c \
        xstatfs.c \
@@ -5233,6 +7023,10 @@ block_reset_raise_run$(EXEEXT): $(block_reset_raise_run_OBJECTS) $(block_reset_r
        @rm -f block_reset_raise_run$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(block_reset_raise_run_OBJECTS) $(block_reset_raise_run_LDADD) $(LIBS)
 
+block_reset_run$(EXEEXT): $(block_reset_run_OBJECTS) $(block_reset_run_DEPENDENCIES) $(EXTRA_block_reset_run_DEPENDENCIES) 
+       @rm -f block_reset_run$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(block_reset_run_OBJECTS) $(block_reset_run_LDADD) $(LIBS)
+
 bpf$(EXEEXT): $(bpf_OBJECTS) $(bpf_DEPENDENCIES) $(EXTRA_bpf_DEPENDENCIES) 
        @rm -f bpf$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(bpf_OBJECTS) $(bpf_LDADD) $(LIBS)
@@ -5257,6 +7051,10 @@ bpf-success$(EXEEXT): $(bpf_success_OBJECTS) $(bpf_success_DEPENDENCIES) $(EXTRA
        @rm -f bpf-success$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(bpf_success_OBJECTS) $(bpf_success_LDADD) $(LIBS)
 
+bpf-success-long-y$(EXEEXT): $(bpf_success_long_y_OBJECTS) $(bpf_success_long_y_DEPENDENCIES) $(EXTRA_bpf_success_long_y_DEPENDENCIES) 
+       @rm -f bpf-success-long-y$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(bpf_success_long_y_OBJECTS) $(bpf_success_long_y_LDADD) $(LIBS)
+
 bpf-success-v$(EXEEXT): $(bpf_success_v_OBJECTS) $(bpf_success_v_DEPENDENCIES) $(EXTRA_bpf_success_v_DEPENDENCIES) 
        @rm -f bpf-success-v$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(bpf_success_v_OBJECTS) $(bpf_success_v_LDADD) $(LIBS)
@@ -5317,14 +7115,94 @@ clock_xettime$(EXEEXT): $(clock_xettime_OBJECTS) $(clock_xettime_DEPENDENCIES) $
        @rm -f clock_xettime$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(clock_xettime_OBJECTS) $(clock_xettime_LDADD) $(LIBS)
 
+clone-flags$(EXEEXT): $(clone_flags_OBJECTS) $(clone_flags_DEPENDENCIES) $(EXTRA_clone_flags_DEPENDENCIES) 
+       @rm -f clone-flags$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(clone_flags_OBJECTS) $(clone_flags_LDADD) $(LIBS)
+
+clone3$(EXEEXT): $(clone3_OBJECTS) $(clone3_DEPENDENCIES) $(EXTRA_clone3_DEPENDENCIES) 
+       @rm -f clone3$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(clone3_OBJECTS) $(clone3_LDADD) $(LIBS)
+
+clone3-Xabbrev$(EXEEXT): $(clone3_Xabbrev_OBJECTS) $(clone3_Xabbrev_DEPENDENCIES) $(EXTRA_clone3_Xabbrev_DEPENDENCIES) 
+       @rm -f clone3-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(clone3_Xabbrev_OBJECTS) $(clone3_Xabbrev_LDADD) $(LIBS)
+
+clone3-Xraw$(EXEEXT): $(clone3_Xraw_OBJECTS) $(clone3_Xraw_DEPENDENCIES) $(EXTRA_clone3_Xraw_DEPENDENCIES) 
+       @rm -f clone3-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(clone3_Xraw_OBJECTS) $(clone3_Xraw_LDADD) $(LIBS)
+
+clone3-Xverbose$(EXEEXT): $(clone3_Xverbose_OBJECTS) $(clone3_Xverbose_DEPENDENCIES) $(EXTRA_clone3_Xverbose_DEPENDENCIES) 
+       @rm -f clone3-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(clone3_Xverbose_OBJECTS) $(clone3_Xverbose_LDADD) $(LIBS)
+
+clone3-success$(EXEEXT): $(clone3_success_OBJECTS) $(clone3_success_DEPENDENCIES) $(EXTRA_clone3_success_DEPENDENCIES) 
+       @rm -f clone3-success$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(clone3_success_OBJECTS) $(clone3_success_LDADD) $(LIBS)
+
+clone3-success-Xabbrev$(EXEEXT): $(clone3_success_Xabbrev_OBJECTS) $(clone3_success_Xabbrev_DEPENDENCIES) $(EXTRA_clone3_success_Xabbrev_DEPENDENCIES) 
+       @rm -f clone3-success-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(clone3_success_Xabbrev_OBJECTS) $(clone3_success_Xabbrev_LDADD) $(LIBS)
+
+clone3-success-Xraw$(EXEEXT): $(clone3_success_Xraw_OBJECTS) $(clone3_success_Xraw_DEPENDENCIES) $(EXTRA_clone3_success_Xraw_DEPENDENCIES) 
+       @rm -f clone3-success-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(clone3_success_Xraw_OBJECTS) $(clone3_success_Xraw_LDADD) $(LIBS)
+
+clone3-success-Xverbose$(EXEEXT): $(clone3_success_Xverbose_OBJECTS) $(clone3_success_Xverbose_DEPENDENCIES) $(EXTRA_clone3_success_Xverbose_DEPENDENCIES) 
+       @rm -f clone3-success-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(clone3_success_Xverbose_OBJECTS) $(clone3_success_Xverbose_LDADD) $(LIBS)
+
 clone_parent$(EXEEXT): $(clone_parent_OBJECTS) $(clone_parent_DEPENDENCIES) $(EXTRA_clone_parent_DEPENDENCIES) 
        @rm -f clone_parent$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(clone_parent_OBJECTS) $(clone_parent_LDADD) $(LIBS)
 
+clone_parent--quiet-exit$(EXEEXT): $(clone_parent__quiet_exit_OBJECTS) $(clone_parent__quiet_exit_DEPENDENCIES) $(EXTRA_clone_parent__quiet_exit_DEPENDENCIES) 
+       @rm -f clone_parent--quiet-exit$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(clone_parent__quiet_exit_OBJECTS) $(clone_parent__quiet_exit_LDADD) $(LIBS)
+
+clone_parent-q$(EXEEXT): $(clone_parent_q_OBJECTS) $(clone_parent_q_DEPENDENCIES) $(EXTRA_clone_parent_q_DEPENDENCIES) 
+       @rm -f clone_parent-q$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(clone_parent_q_OBJECTS) $(clone_parent_q_LDADD) $(LIBS)
+
+clone_parent-qq$(EXEEXT): $(clone_parent_qq_OBJECTS) $(clone_parent_qq_DEPENDENCIES) $(EXTRA_clone_parent_qq_DEPENDENCIES) 
+       @rm -f clone_parent-qq$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(clone_parent_qq_OBJECTS) $(clone_parent_qq_LDADD) $(LIBS)
+
 clone_ptrace$(EXEEXT): $(clone_ptrace_OBJECTS) $(clone_ptrace_DEPENDENCIES) $(EXTRA_clone_ptrace_DEPENDENCIES) 
        @rm -f clone_ptrace$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(clone_ptrace_OBJECTS) $(clone_ptrace_LDADD) $(LIBS)
 
+clone_ptrace--quiet-attach$(EXEEXT): $(clone_ptrace__quiet_attach_OBJECTS) $(clone_ptrace__quiet_attach_DEPENDENCIES) $(EXTRA_clone_ptrace__quiet_attach_DEPENDENCIES) 
+       @rm -f clone_ptrace--quiet-attach$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(clone_ptrace__quiet_attach_OBJECTS) $(clone_ptrace__quiet_attach_LDADD) $(LIBS)
+
+clone_ptrace--quiet-exit$(EXEEXT): $(clone_ptrace__quiet_exit_OBJECTS) $(clone_ptrace__quiet_exit_DEPENDENCIES) $(EXTRA_clone_ptrace__quiet_exit_DEPENDENCIES) 
+       @rm -f clone_ptrace--quiet-exit$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(clone_ptrace__quiet_exit_OBJECTS) $(clone_ptrace__quiet_exit_LDADD) $(LIBS)
+
+clone_ptrace-q$(EXEEXT): $(clone_ptrace_q_OBJECTS) $(clone_ptrace_q_DEPENDENCIES) $(EXTRA_clone_ptrace_q_DEPENDENCIES) 
+       @rm -f clone_ptrace-q$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(clone_ptrace_q_OBJECTS) $(clone_ptrace_q_LDADD) $(LIBS)
+
+clone_ptrace-qq$(EXEEXT): $(clone_ptrace_qq_OBJECTS) $(clone_ptrace_qq_DEPENDENCIES) $(EXTRA_clone_ptrace_qq_DEPENDENCIES) 
+       @rm -f clone_ptrace-qq$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(clone_ptrace_qq_OBJECTS) $(clone_ptrace_qq_LDADD) $(LIBS)
+
+close_range$(EXEEXT): $(close_range_OBJECTS) $(close_range_DEPENDENCIES) $(EXTRA_close_range_DEPENDENCIES) 
+       @rm -f close_range$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(close_range_OBJECTS) $(close_range_LDADD) $(LIBS)
+
+close_range-P$(EXEEXT): $(close_range_P_OBJECTS) $(close_range_P_DEPENDENCIES) $(EXTRA_close_range_P_DEPENDENCIES) 
+       @rm -f close_range-P$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(close_range_P_OBJECTS) $(close_range_P_LDADD) $(LIBS)
+
+close_range-y$(EXEEXT): $(close_range_y_OBJECTS) $(close_range_y_DEPENDENCIES) $(EXTRA_close_range_y_DEPENDENCIES) 
+       @rm -f close_range-y$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(close_range_y_OBJECTS) $(close_range_y_LDADD) $(LIBS)
+
+close_range-yy$(EXEEXT): $(close_range_yy_OBJECTS) $(close_range_yy_DEPENDENCIES) $(EXTRA_close_range_yy_DEPENDENCIES) 
+       @rm -f close_range-yy$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(close_range_yy_OBJECTS) $(close_range_yy_LDADD) $(LIBS)
+
 copy_file_range$(EXEEXT): $(copy_file_range_OBJECTS) $(copy_file_range_DEPENDENCIES) $(EXTRA_copy_file_range_DEPENDENCIES) 
        @rm -f copy_file_range$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(copy_file_range_OBJECTS) $(copy_file_range_LDADD) $(LIBS)
@@ -5345,6 +7223,18 @@ delete_module$(EXEEXT): $(delete_module_OBJECTS) $(delete_module_DEPENDENCIES) $
        @rm -f delete_module$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(delete_module_OBJECTS) $(delete_module_LDADD) $(LIBS)
 
+dev--decode-fds-dev$(EXEEXT): $(dev__decode_fds_dev_OBJECTS) $(dev__decode_fds_dev_DEPENDENCIES) $(EXTRA_dev__decode_fds_dev_DEPENDENCIES) 
+       @rm -f dev--decode-fds-dev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(dev__decode_fds_dev_OBJECTS) $(dev__decode_fds_dev_LDADD) $(LIBS)
+
+dev--decode-fds-path$(EXEEXT): $(dev__decode_fds_path_OBJECTS) $(dev__decode_fds_path_DEPENDENCIES) $(EXTRA_dev__decode_fds_path_DEPENDENCIES) 
+       @rm -f dev--decode-fds-path$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(dev__decode_fds_path_OBJECTS) $(dev__decode_fds_path_LDADD) $(LIBS)
+
+dev--decode-fds-socket$(EXEEXT): $(dev__decode_fds_socket_OBJECTS) $(dev__decode_fds_socket_DEPENDENCIES) $(EXTRA_dev__decode_fds_socket_DEPENDENCIES) 
+       @rm -f dev--decode-fds-socket$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(dev__decode_fds_socket_OBJECTS) $(dev__decode_fds_socket_LDADD) $(LIBS)
+
 dev-yy$(EXEEXT): $(dev_yy_OBJECTS) $(dev_yy_DEPENDENCIES) $(EXTRA_dev_yy_DEPENDENCIES) 
        @rm -f dev-yy$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(dev_yy_OBJECTS) $(dev_yy_LDADD) $(LIBS)
@@ -5353,14 +7243,50 @@ dup$(EXEEXT): $(dup_OBJECTS) $(dup_DEPENDENCIES) $(EXTRA_dup_DEPENDENCIES)
        @rm -f dup$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(dup_OBJECTS) $(dup_LDADD) $(LIBS)
 
+dup-P$(EXEEXT): $(dup_P_OBJECTS) $(dup_P_DEPENDENCIES) $(EXTRA_dup_P_DEPENDENCIES) 
+       @rm -f dup-P$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(dup_P_OBJECTS) $(dup_P_LDADD) $(LIBS)
+
+dup-y$(EXEEXT): $(dup_y_OBJECTS) $(dup_y_DEPENDENCIES) $(EXTRA_dup_y_DEPENDENCIES) 
+       @rm -f dup-y$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(dup_y_OBJECTS) $(dup_y_LDADD) $(LIBS)
+
+dup-yy$(EXEEXT): $(dup_yy_OBJECTS) $(dup_yy_DEPENDENCIES) $(EXTRA_dup_yy_DEPENDENCIES) 
+       @rm -f dup-yy$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(dup_yy_OBJECTS) $(dup_yy_LDADD) $(LIBS)
+
 dup2$(EXEEXT): $(dup2_OBJECTS) $(dup2_DEPENDENCIES) $(EXTRA_dup2_DEPENDENCIES) 
        @rm -f dup2$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(dup2_OBJECTS) $(dup2_LDADD) $(LIBS)
 
+dup2-P$(EXEEXT): $(dup2_P_OBJECTS) $(dup2_P_DEPENDENCIES) $(EXTRA_dup2_P_DEPENDENCIES) 
+       @rm -f dup2-P$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(dup2_P_OBJECTS) $(dup2_P_LDADD) $(LIBS)
+
+dup2-y$(EXEEXT): $(dup2_y_OBJECTS) $(dup2_y_DEPENDENCIES) $(EXTRA_dup2_y_DEPENDENCIES) 
+       @rm -f dup2-y$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(dup2_y_OBJECTS) $(dup2_y_LDADD) $(LIBS)
+
+dup2-yy$(EXEEXT): $(dup2_yy_OBJECTS) $(dup2_yy_DEPENDENCIES) $(EXTRA_dup2_yy_DEPENDENCIES) 
+       @rm -f dup2-yy$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(dup2_yy_OBJECTS) $(dup2_yy_LDADD) $(LIBS)
+
 dup3$(EXEEXT): $(dup3_OBJECTS) $(dup3_DEPENDENCIES) $(EXTRA_dup3_DEPENDENCIES) 
        @rm -f dup3$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(dup3_OBJECTS) $(dup3_LDADD) $(LIBS)
 
+dup3-P$(EXEEXT): $(dup3_P_OBJECTS) $(dup3_P_DEPENDENCIES) $(EXTRA_dup3_P_DEPENDENCIES) 
+       @rm -f dup3-P$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(dup3_P_OBJECTS) $(dup3_P_LDADD) $(LIBS)
+
+dup3-y$(EXEEXT): $(dup3_y_OBJECTS) $(dup3_y_DEPENDENCIES) $(EXTRA_dup3_y_DEPENDENCIES) 
+       @rm -f dup3-y$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(dup3_y_OBJECTS) $(dup3_y_LDADD) $(LIBS)
+
+dup3-yy$(EXEEXT): $(dup3_yy_OBJECTS) $(dup3_yy_DEPENDENCIES) $(EXTRA_dup3_yy_DEPENDENCIES) 
+       @rm -f dup3-yy$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(dup3_yy_OBJECTS) $(dup3_yy_LDADD) $(LIBS)
+
 epoll_create$(EXEEXT): $(epoll_create_OBJECTS) $(epoll_create_DEPENDENCIES) $(EXTRA_epoll_create_DEPENDENCIES) 
        @rm -f epoll_create$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(epoll_create_OBJECTS) $(epoll_create_LDADD) $(LIBS)
@@ -5409,6 +7335,34 @@ faccessat$(EXEEXT): $(faccessat_OBJECTS) $(faccessat_DEPENDENCIES) $(EXTRA_facce
        @rm -f faccessat$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(faccessat_OBJECTS) $(faccessat_LDADD) $(LIBS)
 
+faccessat-P$(EXEEXT): $(faccessat_P_OBJECTS) $(faccessat_P_DEPENDENCIES) $(EXTRA_faccessat_P_DEPENDENCIES) 
+       @rm -f faccessat-P$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(faccessat_P_OBJECTS) $(faccessat_P_LDADD) $(LIBS)
+
+faccessat-y$(EXEEXT): $(faccessat_y_OBJECTS) $(faccessat_y_DEPENDENCIES) $(EXTRA_faccessat_y_DEPENDENCIES) 
+       @rm -f faccessat-y$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(faccessat_y_OBJECTS) $(faccessat_y_LDADD) $(LIBS)
+
+faccessat-yy$(EXEEXT): $(faccessat_yy_OBJECTS) $(faccessat_yy_DEPENDENCIES) $(EXTRA_faccessat_yy_DEPENDENCIES) 
+       @rm -f faccessat-yy$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(faccessat_yy_OBJECTS) $(faccessat_yy_LDADD) $(LIBS)
+
+faccessat2$(EXEEXT): $(faccessat2_OBJECTS) $(faccessat2_DEPENDENCIES) $(EXTRA_faccessat2_DEPENDENCIES) 
+       @rm -f faccessat2$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(faccessat2_OBJECTS) $(faccessat2_LDADD) $(LIBS)
+
+faccessat2-P$(EXEEXT): $(faccessat2_P_OBJECTS) $(faccessat2_P_DEPENDENCIES) $(EXTRA_faccessat2_P_DEPENDENCIES) 
+       @rm -f faccessat2-P$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(faccessat2_P_OBJECTS) $(faccessat2_P_LDADD) $(LIBS)
+
+faccessat2-y$(EXEEXT): $(faccessat2_y_OBJECTS) $(faccessat2_y_DEPENDENCIES) $(EXTRA_faccessat2_y_DEPENDENCIES) 
+       @rm -f faccessat2-y$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(faccessat2_y_OBJECTS) $(faccessat2_y_LDADD) $(LIBS)
+
+faccessat2-yy$(EXEEXT): $(faccessat2_yy_OBJECTS) $(faccessat2_yy_DEPENDENCIES) $(EXTRA_faccessat2_yy_DEPENDENCIES) 
+       @rm -f faccessat2-yy$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(faccessat2_yy_OBJECTS) $(faccessat2_yy_LDADD) $(LIBS)
+
 fadvise64$(EXEEXT): $(fadvise64_OBJECTS) $(fadvise64_DEPENDENCIES) $(EXTRA_fadvise64_DEPENDENCIES) 
        @rm -f fadvise64$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(fadvise64_OBJECTS) $(fadvise64_LDADD) $(LIBS)
@@ -5469,10 +7423,18 @@ fcntl$(EXEEXT): $(fcntl_OBJECTS) $(fcntl_DEPENDENCIES) $(EXTRA_fcntl_DEPENDENCIE
        @rm -f fcntl$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(fcntl_OBJECTS) $(fcntl_LDADD) $(LIBS)
 
+fcntl--pidns-translation$(EXEEXT): $(fcntl__pidns_translation_OBJECTS) $(fcntl__pidns_translation_DEPENDENCIES) $(EXTRA_fcntl__pidns_translation_DEPENDENCIES) 
+       @rm -f fcntl--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(fcntl__pidns_translation_OBJECTS) $(fcntl__pidns_translation_LDADD) $(LIBS)
+
 fcntl64$(EXEEXT): $(fcntl64_OBJECTS) $(fcntl64_DEPENDENCIES) $(EXTRA_fcntl64_DEPENDENCIES) 
        @rm -f fcntl64$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(fcntl64_OBJECTS) $(fcntl64_LDADD) $(LIBS)
 
+fcntl64--pidns-translation$(EXEEXT): $(fcntl64__pidns_translation_OBJECTS) $(fcntl64__pidns_translation_DEPENDENCIES) $(EXTRA_fcntl64__pidns_translation_DEPENDENCIES) 
+       @rm -f fcntl64--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(fcntl64__pidns_translation_OBJECTS) $(fcntl64__pidns_translation_LDADD) $(LIBS)
+
 fdatasync$(EXEEXT): $(fdatasync_OBJECTS) $(fdatasync_DEPENDENCIES) $(EXTRA_fdatasync_DEPENDENCIES) 
        @rm -f fdatasync$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(fdatasync_OBJECTS) $(fdatasync_LDADD) $(LIBS)
@@ -5493,6 +7455,14 @@ filter-unavailable$(EXEEXT): $(filter_unavailable_OBJECTS) $(filter_unavailable_
        @rm -f filter-unavailable$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(filter_unavailable_OBJECTS) $(filter_unavailable_LDADD) $(LIBS)
 
+filter_seccomp-flag$(EXEEXT): $(filter_seccomp_flag_OBJECTS) $(filter_seccomp_flag_DEPENDENCIES) $(EXTRA_filter_seccomp_flag_DEPENDENCIES) 
+       @rm -f filter_seccomp-flag$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(filter_seccomp_flag_OBJECTS) $(filter_seccomp_flag_LDADD) $(LIBS)
+
+filter_seccomp-perf$(EXEEXT): $(filter_seccomp_perf_OBJECTS) $(filter_seccomp_perf_DEPENDENCIES) $(EXTRA_filter_seccomp_perf_DEPENDENCIES) 
+       @rm -f filter_seccomp-perf$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(filter_seccomp_perf_OBJECTS) $(filter_seccomp_perf_LDADD) $(LIBS)
+
 finit_module$(EXEEXT): $(finit_module_OBJECTS) $(finit_module_DEPENDENCIES) $(EXTRA_finit_module_DEPENDENCIES) 
        @rm -f finit_module$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(finit_module_OBJECTS) $(finit_module_LDADD) $(LIBS)
@@ -5501,10 +7471,38 @@ flock$(EXEEXT): $(flock_OBJECTS) $(flock_DEPENDENCIES) $(EXTRA_flock_DEPENDENCIE
        @rm -f flock$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(flock_OBJECTS) $(flock_LDADD) $(LIBS)
 
+fork--pidns-translation$(EXEEXT): $(fork__pidns_translation_OBJECTS) $(fork__pidns_translation_DEPENDENCIES) $(EXTRA_fork__pidns_translation_DEPENDENCIES) 
+       @rm -f fork--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(fork__pidns_translation_OBJECTS) $(fork__pidns_translation_LDADD) $(LIBS)
+
 fork-f$(EXEEXT): $(fork_f_OBJECTS) $(fork_f_DEPENDENCIES) $(EXTRA_fork_f_DEPENDENCIES) 
        @rm -f fork-f$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(fork_f_OBJECTS) $(fork_f_LDADD) $(LIBS)
 
+fsconfig$(EXEEXT): $(fsconfig_OBJECTS) $(fsconfig_DEPENDENCIES) $(EXTRA_fsconfig_DEPENDENCIES) 
+       @rm -f fsconfig$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(fsconfig_OBJECTS) $(fsconfig_LDADD) $(LIBS)
+
+fsconfig-P$(EXEEXT): $(fsconfig_P_OBJECTS) $(fsconfig_P_DEPENDENCIES) $(EXTRA_fsconfig_P_DEPENDENCIES) 
+       @rm -f fsconfig-P$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(fsconfig_P_OBJECTS) $(fsconfig_P_LDADD) $(LIBS)
+
+fsmount$(EXEEXT): $(fsmount_OBJECTS) $(fsmount_DEPENDENCIES) $(EXTRA_fsmount_DEPENDENCIES) 
+       @rm -f fsmount$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(fsmount_OBJECTS) $(fsmount_LDADD) $(LIBS)
+
+fsopen$(EXEEXT): $(fsopen_OBJECTS) $(fsopen_DEPENDENCIES) $(EXTRA_fsopen_DEPENDENCIES) 
+       @rm -f fsopen$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(fsopen_OBJECTS) $(fsopen_LDADD) $(LIBS)
+
+fspick$(EXEEXT): $(fspick_OBJECTS) $(fspick_DEPENDENCIES) $(EXTRA_fspick_DEPENDENCIES) 
+       @rm -f fspick$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(fspick_OBJECTS) $(fspick_LDADD) $(LIBS)
+
+fspick-P$(EXEEXT): $(fspick_P_OBJECTS) $(fspick_P_DEPENDENCIES) $(EXTRA_fspick_P_DEPENDENCIES) 
+       @rm -f fspick-P$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(fspick_P_OBJECTS) $(fspick_P_LDADD) $(LIBS)
+
 fstat$(EXEEXT): $(fstat_OBJECTS) $(fstat_DEPENDENCIES) $(EXTRA_fstat_DEPENDENCIES) 
        @rm -f fstat$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(fstat_OBJECTS) $(fstat_LDADD) $(LIBS)
@@ -5577,6 +7575,10 @@ get_mempolicy$(EXEEXT): $(get_mempolicy_OBJECTS) $(get_mempolicy_DEPENDENCIES) $
        @rm -f get_mempolicy$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(get_mempolicy_OBJECTS) $(get_mempolicy_LDADD) $(LIBS)
 
+get_process_reaper$(EXEEXT): $(get_process_reaper_OBJECTS) $(get_process_reaper_DEPENDENCIES) $(EXTRA_get_process_reaper_DEPENDENCIES) 
+       @rm -f get_process_reaper$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(get_process_reaper_OBJECTS) $(get_process_reaper_LDADD) $(LIBS)
+
 getcpu$(EXEEXT): $(getcpu_OBJECTS) $(getcpu_DEPENDENCIES) $(EXTRA_getcpu_DEPENDENCIES) 
        @rm -f getcpu$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(getcpu_OBJECTS) $(getcpu_LDADD) $(LIBS)
@@ -5589,10 +7591,18 @@ getdents$(EXEEXT): $(getdents_OBJECTS) $(getdents_DEPENDENCIES) $(EXTRA_getdents
        @rm -f getdents$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(getdents_OBJECTS) $(getdents_LDADD) $(LIBS)
 
+getdents-v$(EXEEXT): $(getdents_v_OBJECTS) $(getdents_v_DEPENDENCIES) $(EXTRA_getdents_v_DEPENDENCIES) 
+       @rm -f getdents-v$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(getdents_v_OBJECTS) $(getdents_v_LDADD) $(LIBS)
+
 getdents64$(EXEEXT): $(getdents64_OBJECTS) $(getdents64_DEPENDENCIES) $(EXTRA_getdents64_DEPENDENCIES) 
        @rm -f getdents64$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(getdents64_OBJECTS) $(getdents64_LDADD) $(LIBS)
 
+getdents64-v$(EXEEXT): $(getdents64_v_OBJECTS) $(getdents64_v_DEPENDENCIES) $(EXTRA_getdents64_v_DEPENDENCIES) 
+       @rm -f getdents64-v$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(getdents64_v_OBJECTS) $(getdents64_v_LDADD) $(LIBS)
+
 getegid$(EXEEXT): $(getegid_OBJECTS) $(getegid_DEPENDENCIES) $(EXTRA_getegid_DEPENDENCIES) 
        @rm -f getegid$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(getegid_OBJECTS) $(getegid_LDADD) $(LIBS)
@@ -5633,10 +7643,18 @@ getpgrp$(EXEEXT): $(getpgrp_OBJECTS) $(getpgrp_DEPENDENCIES) $(EXTRA_getpgrp_DEP
        @rm -f getpgrp$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(getpgrp_OBJECTS) $(getpgrp_LDADD) $(LIBS)
 
+getpgrp--pidns-translation$(EXEEXT): $(getpgrp__pidns_translation_OBJECTS) $(getpgrp__pidns_translation_DEPENDENCIES) $(EXTRA_getpgrp__pidns_translation_DEPENDENCIES) 
+       @rm -f getpgrp--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(getpgrp__pidns_translation_OBJECTS) $(getpgrp__pidns_translation_LDADD) $(LIBS)
+
 getpid$(EXEEXT): $(getpid_OBJECTS) $(getpid_DEPENDENCIES) $(EXTRA_getpid_DEPENDENCIES) 
        @rm -f getpid$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(getpid_OBJECTS) $(getpid_LDADD) $(LIBS)
 
+getpid--pidns-translation$(EXEEXT): $(getpid__pidns_translation_OBJECTS) $(getpid__pidns_translation_DEPENDENCIES) $(EXTRA_getpid__pidns_translation_DEPENDENCIES) 
+       @rm -f getpid--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(getpid__pidns_translation_OBJECTS) $(getpid__pidns_translation_LDADD) $(LIBS)
+
 getppid$(EXEEXT): $(getppid_OBJECTS) $(getppid_DEPENDENCIES) $(EXTRA_getppid_DEPENDENCIES) 
        @rm -f getppid$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(getppid_OBJECTS) $(getppid_LDADD) $(LIBS)
@@ -5673,6 +7691,10 @@ getsid$(EXEEXT): $(getsid_OBJECTS) $(getsid_DEPENDENCIES) $(EXTRA_getsid_DEPENDE
        @rm -f getsid$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(getsid_OBJECTS) $(getsid_LDADD) $(LIBS)
 
+getsid--pidns-translation$(EXEEXT): $(getsid__pidns_translation_OBJECTS) $(getsid__pidns_translation_DEPENDENCIES) $(EXTRA_getsid__pidns_translation_DEPENDENCIES) 
+       @rm -f getsid--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(getsid__pidns_translation_OBJECTS) $(getsid__pidns_translation_LDADD) $(LIBS)
+
 getsockname$(EXEEXT): $(getsockname_OBJECTS) $(getsockname_DEPENDENCIES) $(EXTRA_getsockname_DEPENDENCIES) 
        @rm -f getsockname$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(getsockname_OBJECTS) $(getsockname_LDADD) $(LIBS)
@@ -5681,6 +7703,10 @@ gettid$(EXEEXT): $(gettid_OBJECTS) $(gettid_DEPENDENCIES) $(EXTRA_gettid_DEPENDE
        @rm -f gettid$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(gettid_OBJECTS) $(gettid_LDADD) $(LIBS)
 
+gettid--pidns-translation$(EXEEXT): $(gettid__pidns_translation_OBJECTS) $(gettid__pidns_translation_DEPENDENCIES) $(EXTRA_gettid__pidns_translation_DEPENDENCIES) 
+       @rm -f gettid--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(gettid__pidns_translation_OBJECTS) $(gettid__pidns_translation_LDADD) $(LIBS)
+
 getuid$(EXEEXT): $(getuid_OBJECTS) $(getuid_DEPENDENCIES) $(EXTRA_getuid_DEPENDENCIES) 
        @rm -f getuid$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(getuid_OBJECTS) $(getuid_LDADD) $(LIBS)
@@ -5689,9 +7715,17 @@ getuid32$(EXEEXT): $(getuid32_OBJECTS) $(getuid32_DEPENDENCIES) $(EXTRA_getuid32
        @rm -f getuid32$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(getuid32_OBJECTS) $(getuid32_LDADD) $(LIBS)
 
-getxxid$(EXEEXT): $(getxxid_OBJECTS) $(getxxid_DEPENDENCIES) $(EXTRA_getxxid_DEPENDENCIES) 
-       @rm -f getxxid$(EXEEXT)
-       $(AM_V_CCLD)$(LINK) $(getxxid_OBJECTS) $(getxxid_LDADD) $(LIBS)
+getxgid$(EXEEXT): $(getxgid_OBJECTS) $(getxgid_DEPENDENCIES) $(EXTRA_getxgid_DEPENDENCIES) 
+       @rm -f getxgid$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(getxgid_OBJECTS) $(getxgid_LDADD) $(LIBS)
+
+getxpid$(EXEEXT): $(getxpid_OBJECTS) $(getxpid_DEPENDENCIES) $(EXTRA_getxpid_DEPENDENCIES) 
+       @rm -f getxpid$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(getxpid_OBJECTS) $(getxpid_LDADD) $(LIBS)
+
+getxuid$(EXEEXT): $(getxuid_OBJECTS) $(getxuid_DEPENDENCIES) $(EXTRA_getxuid_DEPENDENCIES) 
+       @rm -f getxuid$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(getxuid_OBJECTS) $(getxuid_LDADD) $(LIBS)
 
 group_req$(EXEEXT): $(group_req_OBJECTS) $(group_req_DEPENDENCIES) $(EXTRA_group_req_DEPENDENCIES) 
        @rm -f group_req$(EXEEXT)
@@ -5713,10 +7747,22 @@ inotify$(EXEEXT): $(inotify_OBJECTS) $(inotify_DEPENDENCIES) $(EXTRA_inotify_DEP
        @rm -f inotify$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(inotify_OBJECTS) $(inotify_LDADD) $(LIBS)
 
+inotify_init$(EXEEXT): $(inotify_init_OBJECTS) $(inotify_init_DEPENDENCIES) $(EXTRA_inotify_init_DEPENDENCIES) 
+       @rm -f inotify_init$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(inotify_init_OBJECTS) $(inotify_init_LDADD) $(LIBS)
+
+inotify_init-y$(EXEEXT): $(inotify_init_y_OBJECTS) $(inotify_init_y_DEPENDENCIES) $(EXTRA_inotify_init_y_DEPENDENCIES) 
+       @rm -f inotify_init-y$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(inotify_init_y_OBJECTS) $(inotify_init_y_LDADD) $(LIBS)
+
 inotify_init1$(EXEEXT): $(inotify_init1_OBJECTS) $(inotify_init1_DEPENDENCIES) $(EXTRA_inotify_init1_DEPENDENCIES) 
        @rm -f inotify_init1$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(inotify_init1_OBJECTS) $(inotify_init1_LDADD) $(LIBS)
 
+inotify_init1-y$(EXEEXT): $(inotify_init1_y_OBJECTS) $(inotify_init1_y_DEPENDENCIES) $(EXTRA_inotify_init1_y_DEPENDENCIES) 
+       @rm -f inotify_init1-y$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(inotify_init1_y_OBJECTS) $(inotify_init1_y_LDADD) $(LIBS)
+
 int_0x80$(EXEEXT): $(int_0x80_OBJECTS) $(int_0x80_DEPENDENCIES) $(EXTRA_int_0x80_DEPENDENCIES) 
        @rm -f int_0x80$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(int_0x80_OBJECTS) $(int_0x80_LDADD) $(LIBS)
@@ -5741,6 +7787,10 @@ ioctl_block$(EXEEXT): $(ioctl_block_OBJECTS) $(ioctl_block_DEPENDENCIES) $(EXTRA
        @rm -f ioctl_block$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(ioctl_block_OBJECTS) $(ioctl_block_LDADD) $(LIBS)
 
+ioctl_block--pidns-translation$(EXEEXT): $(ioctl_block__pidns_translation_OBJECTS) $(ioctl_block__pidns_translation_DEPENDENCIES) $(EXTRA_ioctl_block__pidns_translation_DEPENDENCIES) 
+       @rm -f ioctl_block--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_block__pidns_translation_OBJECTS) $(ioctl_block__pidns_translation_LDADD) $(LIBS)
+
 ioctl_dm$(EXEEXT): $(ioctl_dm_OBJECTS) $(ioctl_dm_DEPENDENCIES) $(EXTRA_ioctl_dm_DEPENDENCIES) 
        @rm -f ioctl_dm$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(ioctl_dm_OBJECTS) $(ioctl_dm_LDADD) $(LIBS)
@@ -5753,18 +7803,130 @@ ioctl_evdev$(EXEEXT): $(ioctl_evdev_OBJECTS) $(ioctl_evdev_DEPENDENCIES) $(EXTRA
        @rm -f ioctl_evdev$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(ioctl_evdev_OBJECTS) $(ioctl_evdev_LDADD) $(LIBS)
 
+ioctl_evdev-Xabbrev$(EXEEXT): $(ioctl_evdev_Xabbrev_OBJECTS) $(ioctl_evdev_Xabbrev_DEPENDENCIES) $(EXTRA_ioctl_evdev_Xabbrev_DEPENDENCIES) 
+       @rm -f ioctl_evdev-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_evdev_Xabbrev_OBJECTS) $(ioctl_evdev_Xabbrev_LDADD) $(LIBS)
+
+ioctl_evdev-Xraw$(EXEEXT): $(ioctl_evdev_Xraw_OBJECTS) $(ioctl_evdev_Xraw_DEPENDENCIES) $(EXTRA_ioctl_evdev_Xraw_DEPENDENCIES) 
+       @rm -f ioctl_evdev-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_evdev_Xraw_OBJECTS) $(ioctl_evdev_Xraw_LDADD) $(LIBS)
+
+ioctl_evdev-Xverbose$(EXEEXT): $(ioctl_evdev_Xverbose_OBJECTS) $(ioctl_evdev_Xverbose_DEPENDENCIES) $(EXTRA_ioctl_evdev_Xverbose_DEPENDENCIES) 
+       @rm -f ioctl_evdev-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_evdev_Xverbose_OBJECTS) $(ioctl_evdev_Xverbose_LDADD) $(LIBS)
+
 ioctl_evdev-success$(EXEEXT): $(ioctl_evdev_success_OBJECTS) $(ioctl_evdev_success_DEPENDENCIES) $(EXTRA_ioctl_evdev_success_DEPENDENCIES) 
        @rm -f ioctl_evdev-success$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(ioctl_evdev_success_OBJECTS) $(ioctl_evdev_success_LDADD) $(LIBS)
 
+ioctl_evdev-success-Xabbrev$(EXEEXT): $(ioctl_evdev_success_Xabbrev_OBJECTS) $(ioctl_evdev_success_Xabbrev_DEPENDENCIES) $(EXTRA_ioctl_evdev_success_Xabbrev_DEPENDENCIES) 
+       @rm -f ioctl_evdev-success-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_evdev_success_Xabbrev_OBJECTS) $(ioctl_evdev_success_Xabbrev_LDADD) $(LIBS)
+
+ioctl_evdev-success-Xraw$(EXEEXT): $(ioctl_evdev_success_Xraw_OBJECTS) $(ioctl_evdev_success_Xraw_DEPENDENCIES) $(EXTRA_ioctl_evdev_success_Xraw_DEPENDENCIES) 
+       @rm -f ioctl_evdev-success-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_evdev_success_Xraw_OBJECTS) $(ioctl_evdev_success_Xraw_LDADD) $(LIBS)
+
+ioctl_evdev-success-Xverbose$(EXEEXT): $(ioctl_evdev_success_Xverbose_OBJECTS) $(ioctl_evdev_success_Xverbose_DEPENDENCIES) $(EXTRA_ioctl_evdev_success_Xverbose_DEPENDENCIES) 
+       @rm -f ioctl_evdev-success-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_evdev_success_Xverbose_OBJECTS) $(ioctl_evdev_success_Xverbose_LDADD) $(LIBS)
+
 ioctl_evdev-success-v$(EXEEXT): $(ioctl_evdev_success_v_OBJECTS) $(ioctl_evdev_success_v_DEPENDENCIES) $(EXTRA_ioctl_evdev_success_v_DEPENDENCIES) 
        @rm -f ioctl_evdev-success-v$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(ioctl_evdev_success_v_OBJECTS) $(ioctl_evdev_success_v_LDADD) $(LIBS)
 
+ioctl_evdev-success-v-Xabbrev$(EXEEXT): $(ioctl_evdev_success_v_Xabbrev_OBJECTS) $(ioctl_evdev_success_v_Xabbrev_DEPENDENCIES) $(EXTRA_ioctl_evdev_success_v_Xabbrev_DEPENDENCIES) 
+       @rm -f ioctl_evdev-success-v-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_evdev_success_v_Xabbrev_OBJECTS) $(ioctl_evdev_success_v_Xabbrev_LDADD) $(LIBS)
+
+ioctl_evdev-success-v-Xraw$(EXEEXT): $(ioctl_evdev_success_v_Xraw_OBJECTS) $(ioctl_evdev_success_v_Xraw_DEPENDENCIES) $(EXTRA_ioctl_evdev_success_v_Xraw_DEPENDENCIES) 
+       @rm -f ioctl_evdev-success-v-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_evdev_success_v_Xraw_OBJECTS) $(ioctl_evdev_success_v_Xraw_LDADD) $(LIBS)
+
+ioctl_evdev-success-v-Xverbose$(EXEEXT): $(ioctl_evdev_success_v_Xverbose_OBJECTS) $(ioctl_evdev_success_v_Xverbose_DEPENDENCIES) $(EXTRA_ioctl_evdev_success_v_Xverbose_DEPENDENCIES) 
+       @rm -f ioctl_evdev-success-v-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_evdev_success_v_Xverbose_OBJECTS) $(ioctl_evdev_success_v_Xverbose_LDADD) $(LIBS)
+
 ioctl_evdev-v$(EXEEXT): $(ioctl_evdev_v_OBJECTS) $(ioctl_evdev_v_DEPENDENCIES) $(EXTRA_ioctl_evdev_v_DEPENDENCIES) 
        @rm -f ioctl_evdev-v$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(ioctl_evdev_v_OBJECTS) $(ioctl_evdev_v_LDADD) $(LIBS)
 
+ioctl_evdev-v-Xabbrev$(EXEEXT): $(ioctl_evdev_v_Xabbrev_OBJECTS) $(ioctl_evdev_v_Xabbrev_DEPENDENCIES) $(EXTRA_ioctl_evdev_v_Xabbrev_DEPENDENCIES) 
+       @rm -f ioctl_evdev-v-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_evdev_v_Xabbrev_OBJECTS) $(ioctl_evdev_v_Xabbrev_LDADD) $(LIBS)
+
+ioctl_evdev-v-Xraw$(EXEEXT): $(ioctl_evdev_v_Xraw_OBJECTS) $(ioctl_evdev_v_Xraw_DEPENDENCIES) $(EXTRA_ioctl_evdev_v_Xraw_DEPENDENCIES) 
+       @rm -f ioctl_evdev-v-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_evdev_v_Xraw_OBJECTS) $(ioctl_evdev_v_Xraw_LDADD) $(LIBS)
+
+ioctl_evdev-v-Xverbose$(EXEEXT): $(ioctl_evdev_v_Xverbose_OBJECTS) $(ioctl_evdev_v_Xverbose_DEPENDENCIES) $(EXTRA_ioctl_evdev_v_Xverbose_DEPENDENCIES) 
+       @rm -f ioctl_evdev-v-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_evdev_v_Xverbose_OBJECTS) $(ioctl_evdev_v_Xverbose_LDADD) $(LIBS)
+
+ioctl_hdio$(EXEEXT): $(ioctl_hdio_OBJECTS) $(ioctl_hdio_DEPENDENCIES) $(EXTRA_ioctl_hdio_DEPENDENCIES) 
+       @rm -f ioctl_hdio$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_hdio_OBJECTS) $(ioctl_hdio_LDADD) $(LIBS)
+
+ioctl_hdio-Xabbrev$(EXEEXT): $(ioctl_hdio_Xabbrev_OBJECTS) $(ioctl_hdio_Xabbrev_DEPENDENCIES) $(EXTRA_ioctl_hdio_Xabbrev_DEPENDENCIES) 
+       @rm -f ioctl_hdio-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_hdio_Xabbrev_OBJECTS) $(ioctl_hdio_Xabbrev_LDADD) $(LIBS)
+
+ioctl_hdio-Xraw$(EXEEXT): $(ioctl_hdio_Xraw_OBJECTS) $(ioctl_hdio_Xraw_DEPENDENCIES) $(EXTRA_ioctl_hdio_Xraw_DEPENDENCIES) 
+       @rm -f ioctl_hdio-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_hdio_Xraw_OBJECTS) $(ioctl_hdio_Xraw_LDADD) $(LIBS)
+
+ioctl_hdio-Xverbose$(EXEEXT): $(ioctl_hdio_Xverbose_OBJECTS) $(ioctl_hdio_Xverbose_DEPENDENCIES) $(EXTRA_ioctl_hdio_Xverbose_DEPENDENCIES) 
+       @rm -f ioctl_hdio-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_hdio_Xverbose_OBJECTS) $(ioctl_hdio_Xverbose_LDADD) $(LIBS)
+
+ioctl_hdio-success$(EXEEXT): $(ioctl_hdio_success_OBJECTS) $(ioctl_hdio_success_DEPENDENCIES) $(EXTRA_ioctl_hdio_success_DEPENDENCIES) 
+       @rm -f ioctl_hdio-success$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_hdio_success_OBJECTS) $(ioctl_hdio_success_LDADD) $(LIBS)
+
+ioctl_hdio-success-Xabbrev$(EXEEXT): $(ioctl_hdio_success_Xabbrev_OBJECTS) $(ioctl_hdio_success_Xabbrev_DEPENDENCIES) $(EXTRA_ioctl_hdio_success_Xabbrev_DEPENDENCIES) 
+       @rm -f ioctl_hdio-success-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_hdio_success_Xabbrev_OBJECTS) $(ioctl_hdio_success_Xabbrev_LDADD) $(LIBS)
+
+ioctl_hdio-success-Xraw$(EXEEXT): $(ioctl_hdio_success_Xraw_OBJECTS) $(ioctl_hdio_success_Xraw_DEPENDENCIES) $(EXTRA_ioctl_hdio_success_Xraw_DEPENDENCIES) 
+       @rm -f ioctl_hdio-success-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_hdio_success_Xraw_OBJECTS) $(ioctl_hdio_success_Xraw_LDADD) $(LIBS)
+
+ioctl_hdio-success-Xverbose$(EXEEXT): $(ioctl_hdio_success_Xverbose_OBJECTS) $(ioctl_hdio_success_Xverbose_DEPENDENCIES) $(EXTRA_ioctl_hdio_success_Xverbose_DEPENDENCIES) 
+       @rm -f ioctl_hdio-success-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_hdio_success_Xverbose_OBJECTS) $(ioctl_hdio_success_Xverbose_LDADD) $(LIBS)
+
+ioctl_hdio-success-v$(EXEEXT): $(ioctl_hdio_success_v_OBJECTS) $(ioctl_hdio_success_v_DEPENDENCIES) $(EXTRA_ioctl_hdio_success_v_DEPENDENCIES) 
+       @rm -f ioctl_hdio-success-v$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_hdio_success_v_OBJECTS) $(ioctl_hdio_success_v_LDADD) $(LIBS)
+
+ioctl_hdio-success-v-Xabbrev$(EXEEXT): $(ioctl_hdio_success_v_Xabbrev_OBJECTS) $(ioctl_hdio_success_v_Xabbrev_DEPENDENCIES) $(EXTRA_ioctl_hdio_success_v_Xabbrev_DEPENDENCIES) 
+       @rm -f ioctl_hdio-success-v-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_hdio_success_v_Xabbrev_OBJECTS) $(ioctl_hdio_success_v_Xabbrev_LDADD) $(LIBS)
+
+ioctl_hdio-success-v-Xraw$(EXEEXT): $(ioctl_hdio_success_v_Xraw_OBJECTS) $(ioctl_hdio_success_v_Xraw_DEPENDENCIES) $(EXTRA_ioctl_hdio_success_v_Xraw_DEPENDENCIES) 
+       @rm -f ioctl_hdio-success-v-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_hdio_success_v_Xraw_OBJECTS) $(ioctl_hdio_success_v_Xraw_LDADD) $(LIBS)
+
+ioctl_hdio-success-v-Xverbose$(EXEEXT): $(ioctl_hdio_success_v_Xverbose_OBJECTS) $(ioctl_hdio_success_v_Xverbose_DEPENDENCIES) $(EXTRA_ioctl_hdio_success_v_Xverbose_DEPENDENCIES) 
+       @rm -f ioctl_hdio-success-v-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_hdio_success_v_Xverbose_OBJECTS) $(ioctl_hdio_success_v_Xverbose_LDADD) $(LIBS)
+
+ioctl_hdio-v$(EXEEXT): $(ioctl_hdio_v_OBJECTS) $(ioctl_hdio_v_DEPENDENCIES) $(EXTRA_ioctl_hdio_v_DEPENDENCIES) 
+       @rm -f ioctl_hdio-v$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_hdio_v_OBJECTS) $(ioctl_hdio_v_LDADD) $(LIBS)
+
+ioctl_hdio-v-Xabbrev$(EXEEXT): $(ioctl_hdio_v_Xabbrev_OBJECTS) $(ioctl_hdio_v_Xabbrev_DEPENDENCIES) $(EXTRA_ioctl_hdio_v_Xabbrev_DEPENDENCIES) 
+       @rm -f ioctl_hdio-v-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_hdio_v_Xabbrev_OBJECTS) $(ioctl_hdio_v_Xabbrev_LDADD) $(LIBS)
+
+ioctl_hdio-v-Xraw$(EXEEXT): $(ioctl_hdio_v_Xraw_OBJECTS) $(ioctl_hdio_v_Xraw_DEPENDENCIES) $(EXTRA_ioctl_hdio_v_Xraw_DEPENDENCIES) 
+       @rm -f ioctl_hdio-v-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_hdio_v_Xraw_OBJECTS) $(ioctl_hdio_v_Xraw_LDADD) $(LIBS)
+
+ioctl_hdio-v-Xverbose$(EXEEXT): $(ioctl_hdio_v_Xverbose_OBJECTS) $(ioctl_hdio_v_Xverbose_DEPENDENCIES) $(EXTRA_ioctl_hdio_v_Xverbose_DEPENDENCIES) 
+       @rm -f ioctl_hdio-v-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_hdio_v_Xverbose_OBJECTS) $(ioctl_hdio_v_Xverbose_LDADD) $(LIBS)
+
 ioctl_inotify$(EXEEXT): $(ioctl_inotify_OBJECTS) $(ioctl_inotify_DEPENDENCIES) $(EXTRA_ioctl_inotify_DEPENDENCIES) 
        @rm -f ioctl_inotify$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(ioctl_inotify_OBJECTS) $(ioctl_inotify_LDADD) $(LIBS)
@@ -5845,6 +8007,10 @@ ioctl_sock_gifconf$(EXEEXT): $(ioctl_sock_gifconf_OBJECTS) $(ioctl_sock_gifconf_
        @rm -f ioctl_sock_gifconf$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(ioctl_sock_gifconf_OBJECTS) $(ioctl_sock_gifconf_LDADD) $(LIBS)
 
+ioctl_tee$(EXEEXT): $(ioctl_tee_OBJECTS) $(ioctl_tee_DEPENDENCIES) $(EXTRA_ioctl_tee_DEPENDENCIES) 
+       @rm -f ioctl_tee$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_tee_OBJECTS) $(ioctl_tee_LDADD) $(LIBS)
+
 ioctl_uffdio$(EXEEXT): $(ioctl_uffdio_OBJECTS) $(ioctl_uffdio_DEPENDENCIES) $(EXTRA_ioctl_uffdio_DEPENDENCIES) 
        @rm -f ioctl_uffdio$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(ioctl_uffdio_OBJECTS) $(ioctl_uffdio_LDADD) $(LIBS)
@@ -5853,6 +8019,70 @@ ioctl_v4l2$(EXEEXT): $(ioctl_v4l2_OBJECTS) $(ioctl_v4l2_DEPENDENCIES) $(EXTRA_io
        @rm -f ioctl_v4l2$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_OBJECTS) $(ioctl_v4l2_LDADD) $(LIBS)
 
+ioctl_v4l2-Xabbrev$(EXEEXT): $(ioctl_v4l2_Xabbrev_OBJECTS) $(ioctl_v4l2_Xabbrev_DEPENDENCIES) $(EXTRA_ioctl_v4l2_Xabbrev_DEPENDENCIES) 
+       @rm -f ioctl_v4l2-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_Xabbrev_OBJECTS) $(ioctl_v4l2_Xabbrev_LDADD) $(LIBS)
+
+ioctl_v4l2-Xraw$(EXEEXT): $(ioctl_v4l2_Xraw_OBJECTS) $(ioctl_v4l2_Xraw_DEPENDENCIES) $(EXTRA_ioctl_v4l2_Xraw_DEPENDENCIES) 
+       @rm -f ioctl_v4l2-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_Xraw_OBJECTS) $(ioctl_v4l2_Xraw_LDADD) $(LIBS)
+
+ioctl_v4l2-Xverbose$(EXEEXT): $(ioctl_v4l2_Xverbose_OBJECTS) $(ioctl_v4l2_Xverbose_DEPENDENCIES) $(EXTRA_ioctl_v4l2_Xverbose_DEPENDENCIES) 
+       @rm -f ioctl_v4l2-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_Xverbose_OBJECTS) $(ioctl_v4l2_Xverbose_LDADD) $(LIBS)
+
+ioctl_v4l2-success$(EXEEXT): $(ioctl_v4l2_success_OBJECTS) $(ioctl_v4l2_success_DEPENDENCIES) $(EXTRA_ioctl_v4l2_success_DEPENDENCIES) 
+       @rm -f ioctl_v4l2-success$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_success_OBJECTS) $(ioctl_v4l2_success_LDADD) $(LIBS)
+
+ioctl_v4l2-success-Xabbrev$(EXEEXT): $(ioctl_v4l2_success_Xabbrev_OBJECTS) $(ioctl_v4l2_success_Xabbrev_DEPENDENCIES) $(EXTRA_ioctl_v4l2_success_Xabbrev_DEPENDENCIES) 
+       @rm -f ioctl_v4l2-success-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_success_Xabbrev_OBJECTS) $(ioctl_v4l2_success_Xabbrev_LDADD) $(LIBS)
+
+ioctl_v4l2-success-Xraw$(EXEEXT): $(ioctl_v4l2_success_Xraw_OBJECTS) $(ioctl_v4l2_success_Xraw_DEPENDENCIES) $(EXTRA_ioctl_v4l2_success_Xraw_DEPENDENCIES) 
+       @rm -f ioctl_v4l2-success-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_success_Xraw_OBJECTS) $(ioctl_v4l2_success_Xraw_LDADD) $(LIBS)
+
+ioctl_v4l2-success-Xverbose$(EXEEXT): $(ioctl_v4l2_success_Xverbose_OBJECTS) $(ioctl_v4l2_success_Xverbose_DEPENDENCIES) $(EXTRA_ioctl_v4l2_success_Xverbose_DEPENDENCIES) 
+       @rm -f ioctl_v4l2-success-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_success_Xverbose_OBJECTS) $(ioctl_v4l2_success_Xverbose_LDADD) $(LIBS)
+
+ioctl_v4l2-success-v$(EXEEXT): $(ioctl_v4l2_success_v_OBJECTS) $(ioctl_v4l2_success_v_DEPENDENCIES) $(EXTRA_ioctl_v4l2_success_v_DEPENDENCIES) 
+       @rm -f ioctl_v4l2-success-v$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_success_v_OBJECTS) $(ioctl_v4l2_success_v_LDADD) $(LIBS)
+
+ioctl_v4l2-success-v-Xabbrev$(EXEEXT): $(ioctl_v4l2_success_v_Xabbrev_OBJECTS) $(ioctl_v4l2_success_v_Xabbrev_DEPENDENCIES) $(EXTRA_ioctl_v4l2_success_v_Xabbrev_DEPENDENCIES) 
+       @rm -f ioctl_v4l2-success-v-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_success_v_Xabbrev_OBJECTS) $(ioctl_v4l2_success_v_Xabbrev_LDADD) $(LIBS)
+
+ioctl_v4l2-success-v-Xraw$(EXEEXT): $(ioctl_v4l2_success_v_Xraw_OBJECTS) $(ioctl_v4l2_success_v_Xraw_DEPENDENCIES) $(EXTRA_ioctl_v4l2_success_v_Xraw_DEPENDENCIES) 
+       @rm -f ioctl_v4l2-success-v-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_success_v_Xraw_OBJECTS) $(ioctl_v4l2_success_v_Xraw_LDADD) $(LIBS)
+
+ioctl_v4l2-success-v-Xverbose$(EXEEXT): $(ioctl_v4l2_success_v_Xverbose_OBJECTS) $(ioctl_v4l2_success_v_Xverbose_DEPENDENCIES) $(EXTRA_ioctl_v4l2_success_v_Xverbose_DEPENDENCIES) 
+       @rm -f ioctl_v4l2-success-v-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_success_v_Xverbose_OBJECTS) $(ioctl_v4l2_success_v_Xverbose_LDADD) $(LIBS)
+
+ioctl_v4l2-v$(EXEEXT): $(ioctl_v4l2_v_OBJECTS) $(ioctl_v4l2_v_DEPENDENCIES) $(EXTRA_ioctl_v4l2_v_DEPENDENCIES) 
+       @rm -f ioctl_v4l2-v$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_v_OBJECTS) $(ioctl_v4l2_v_LDADD) $(LIBS)
+
+ioctl_v4l2-v-Xabbrev$(EXEEXT): $(ioctl_v4l2_v_Xabbrev_OBJECTS) $(ioctl_v4l2_v_Xabbrev_DEPENDENCIES) $(EXTRA_ioctl_v4l2_v_Xabbrev_DEPENDENCIES) 
+       @rm -f ioctl_v4l2-v-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_v_Xabbrev_OBJECTS) $(ioctl_v4l2_v_Xabbrev_LDADD) $(LIBS)
+
+ioctl_v4l2-v-Xraw$(EXEEXT): $(ioctl_v4l2_v_Xraw_OBJECTS) $(ioctl_v4l2_v_Xraw_DEPENDENCIES) $(EXTRA_ioctl_v4l2_v_Xraw_DEPENDENCIES) 
+       @rm -f ioctl_v4l2-v-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_v_Xraw_OBJECTS) $(ioctl_v4l2_v_Xraw_LDADD) $(LIBS)
+
+ioctl_v4l2-v-Xverbose$(EXEEXT): $(ioctl_v4l2_v_Xverbose_OBJECTS) $(ioctl_v4l2_v_Xverbose_DEPENDENCIES) $(EXTRA_ioctl_v4l2_v_Xverbose_DEPENDENCIES) 
+       @rm -f ioctl_v4l2-v-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_v_Xverbose_OBJECTS) $(ioctl_v4l2_v_Xverbose_LDADD) $(LIBS)
+
+ioctl_watchdog$(EXEEXT): $(ioctl_watchdog_OBJECTS) $(ioctl_watchdog_DEPENDENCIES) $(EXTRA_ioctl_watchdog_DEPENDENCIES) 
+       @rm -f ioctl_watchdog$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_watchdog_OBJECTS) $(ioctl_watchdog_LDADD) $(LIBS)
+
 ioperm$(EXEEXT): $(ioperm_OBJECTS) $(ioperm_DEPENDENCIES) $(EXTRA_ioperm_DEPENDENCIES) 
        @rm -f ioperm$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(ioperm_OBJECTS) $(ioperm_LDADD) $(LIBS)
@@ -5865,6 +8095,10 @@ ioprio$(EXEEXT): $(ioprio_OBJECTS) $(ioprio_DEPENDENCIES) $(EXTRA_ioprio_DEPENDE
        @rm -f ioprio$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(ioprio_OBJECTS) $(ioprio_LDADD) $(LIBS)
 
+ioprio--pidns-translation$(EXEEXT): $(ioprio__pidns_translation_OBJECTS) $(ioprio__pidns_translation_DEPENDENCIES) $(EXTRA_ioprio__pidns_translation_DEPENDENCIES) 
+       @rm -f ioprio--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioprio__pidns_translation_OBJECTS) $(ioprio__pidns_translation_LDADD) $(LIBS)
+
 ioprio-Xabbrev$(EXEEXT): $(ioprio_Xabbrev_OBJECTS) $(ioprio_Xabbrev_DEPENDENCIES) $(EXTRA_ioprio_Xabbrev_DEPENDENCIES) 
        @rm -f ioprio-Xabbrev$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(ioprio_Xabbrev_OBJECTS) $(ioprio_Xabbrev_LDADD) $(LIBS)
@@ -5961,6 +8195,10 @@ kcmp-y$(EXEEXT): $(kcmp_y_OBJECTS) $(kcmp_y_DEPENDENCIES) $(EXTRA_kcmp_y_DEPENDE
        @rm -f kcmp-y$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(kcmp_y_OBJECTS) $(kcmp_y_LDADD) $(LIBS)
 
+kcmp-y--pidns-translation$(EXEEXT): $(kcmp_y__pidns_translation_OBJECTS) $(kcmp_y__pidns_translation_DEPENDENCIES) $(EXTRA_kcmp_y__pidns_translation_DEPENDENCIES) 
+       @rm -f kcmp-y--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(kcmp_y__pidns_translation_OBJECTS) $(kcmp_y__pidns_translation_LDADD) $(LIBS)
+
 kern_features$(EXEEXT): $(kern_features_OBJECTS) $(kern_features_DEPENDENCIES) $(EXTRA_kern_features_DEPENDENCIES) 
        @rm -f kern_features$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(kern_features_OBJECTS) $(kern_features_LDADD) $(LIBS)
@@ -6009,6 +8247,10 @@ kill$(EXEEXT): $(kill_OBJECTS) $(kill_DEPENDENCIES) $(EXTRA_kill_DEPENDENCIES)
        @rm -f kill$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(kill_OBJECTS) $(kill_LDADD) $(LIBS)
 
+kill--pidns-translation$(EXEEXT): $(kill__pidns_translation_OBJECTS) $(kill__pidns_translation_DEPENDENCIES) $(EXTRA_kill__pidns_translation_DEPENDENCIES) 
+       @rm -f kill--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(kill__pidns_translation_OBJECTS) $(kill__pidns_translation_LDADD) $(LIBS)
+
 kill_child$(EXEEXT): $(kill_child_OBJECTS) $(kill_child_DEPENDENCIES) $(EXTRA_kill_child_DEPENDENCIES) 
        @rm -f kill_child$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(kill_child_OBJECTS) $(kill_child_LDADD) $(LIBS)
@@ -6069,10 +8311,30 @@ madvise$(EXEEXT): $(madvise_OBJECTS) $(madvise_DEPENDENCIES) $(EXTRA_madvise_DEP
        @rm -f madvise$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(madvise_OBJECTS) $(madvise_LDADD) $(LIBS)
 
+maybe_switch_current_tcp$(EXEEXT): $(maybe_switch_current_tcp_OBJECTS) $(maybe_switch_current_tcp_DEPENDENCIES) $(EXTRA_maybe_switch_current_tcp_DEPENDENCIES) 
+       @rm -f maybe_switch_current_tcp$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(maybe_switch_current_tcp_OBJECTS) $(maybe_switch_current_tcp_LDADD) $(LIBS)
+
+maybe_switch_current_tcp--quiet-thread-execve$(EXEEXT): $(maybe_switch_current_tcp__quiet_thread_execve_OBJECTS) $(maybe_switch_current_tcp__quiet_thread_execve_DEPENDENCIES) $(EXTRA_maybe_switch_current_tcp__quiet_thread_execve_DEPENDENCIES) 
+       @rm -f maybe_switch_current_tcp--quiet-thread-execve$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(maybe_switch_current_tcp__quiet_thread_execve_OBJECTS) $(maybe_switch_current_tcp__quiet_thread_execve_LDADD) $(LIBS)
+
 mbind$(EXEEXT): $(mbind_OBJECTS) $(mbind_DEPENDENCIES) $(EXTRA_mbind_DEPENDENCIES) 
        @rm -f mbind$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(mbind_OBJECTS) $(mbind_LDADD) $(LIBS)
 
+mbind-Xabbrev$(EXEEXT): $(mbind_Xabbrev_OBJECTS) $(mbind_Xabbrev_DEPENDENCIES) $(EXTRA_mbind_Xabbrev_DEPENDENCIES) 
+       @rm -f mbind-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(mbind_Xabbrev_OBJECTS) $(mbind_Xabbrev_LDADD) $(LIBS)
+
+mbind-Xraw$(EXEEXT): $(mbind_Xraw_OBJECTS) $(mbind_Xraw_DEPENDENCIES) $(EXTRA_mbind_Xraw_DEPENDENCIES) 
+       @rm -f mbind-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(mbind_Xraw_OBJECTS) $(mbind_Xraw_LDADD) $(LIBS)
+
+mbind-Xverbose$(EXEEXT): $(mbind_Xverbose_OBJECTS) $(mbind_Xverbose_DEPENDENCIES) $(EXTRA_mbind_Xverbose_DEPENDENCIES) 
+       @rm -f mbind-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(mbind_Xverbose_OBJECTS) $(mbind_Xverbose_LDADD) $(LIBS)
+
 membarrier$(EXEEXT): $(membarrier_OBJECTS) $(membarrier_DEPENDENCIES) $(EXTRA_membarrier_DEPENDENCIES) 
        @rm -f membarrier$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(membarrier_OBJECTS) $(membarrier_LDADD) $(LIBS)
@@ -6097,6 +8359,10 @@ migrate_pages$(EXEEXT): $(migrate_pages_OBJECTS) $(migrate_pages_DEPENDENCIES) $
        @rm -f migrate_pages$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(migrate_pages_OBJECTS) $(migrate_pages_LDADD) $(LIBS)
 
+migrate_pages--pidns-translation$(EXEEXT): $(migrate_pages__pidns_translation_OBJECTS) $(migrate_pages__pidns_translation_DEPENDENCIES) $(EXTRA_migrate_pages__pidns_translation_DEPENDENCIES) 
+       @rm -f migrate_pages--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(migrate_pages__pidns_translation_OBJECTS) $(migrate_pages__pidns_translation_LDADD) $(LIBS)
+
 mincore$(EXEEXT): $(mincore_OBJECTS) $(mincore_DEPENDENCIES) $(EXTRA_mincore_DEPENDENCIES) 
        @rm -f mincore$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(mincore_OBJECTS) $(mincore_LDADD) $(LIBS)
@@ -6197,10 +8463,22 @@ mount-Xverbose$(EXEEXT): $(mount_Xverbose_OBJECTS) $(mount_Xverbose_DEPENDENCIES
        @rm -f mount-Xverbose$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(mount_Xverbose_OBJECTS) $(mount_Xverbose_LDADD) $(LIBS)
 
+move_mount$(EXEEXT): $(move_mount_OBJECTS) $(move_mount_DEPENDENCIES) $(EXTRA_move_mount_DEPENDENCIES) 
+       @rm -f move_mount$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(move_mount_OBJECTS) $(move_mount_LDADD) $(LIBS)
+
+move_mount-P$(EXEEXT): $(move_mount_P_OBJECTS) $(move_mount_P_DEPENDENCIES) $(EXTRA_move_mount_P_DEPENDENCIES) 
+       @rm -f move_mount-P$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(move_mount_P_OBJECTS) $(move_mount_P_LDADD) $(LIBS)
+
 move_pages$(EXEEXT): $(move_pages_OBJECTS) $(move_pages_DEPENDENCIES) $(EXTRA_move_pages_DEPENDENCIES) 
        @rm -f move_pages$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(move_pages_OBJECTS) $(move_pages_LDADD) $(LIBS)
 
+move_pages--pidns-translation$(EXEEXT): $(move_pages__pidns_translation_OBJECTS) $(move_pages__pidns_translation_DEPENDENCIES) $(EXTRA_move_pages__pidns_translation_DEPENDENCIES) 
+       @rm -f move_pages--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(move_pages__pidns_translation_OBJECTS) $(move_pages__pidns_translation_LDADD) $(LIBS)
+
 move_pages-Xabbrev$(EXEEXT): $(move_pages_Xabbrev_OBJECTS) $(move_pages_Xabbrev_DEPENDENCIES) $(EXTRA_move_pages_Xabbrev_DEPENDENCIES) 
        @rm -f move_pages-Xabbrev$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(move_pages_Xabbrev_OBJECTS) $(move_pages_Xabbrev_LDADD) $(LIBS)
@@ -6249,6 +8527,22 @@ nanosleep$(EXEEXT): $(nanosleep_OBJECTS) $(nanosleep_DEPENDENCIES) $(EXTRA_nanos
        @rm -f nanosleep$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(nanosleep_OBJECTS) $(nanosleep_LDADD) $(LIBS)
 
+net--decode-fds-dev-netlink$(EXEEXT): $(net__decode_fds_dev_netlink_OBJECTS) $(net__decode_fds_dev_netlink_DEPENDENCIES) $(EXTRA_net__decode_fds_dev_netlink_DEPENDENCIES) 
+       @rm -f net--decode-fds-dev-netlink$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(net__decode_fds_dev_netlink_OBJECTS) $(net__decode_fds_dev_netlink_LDADD) $(LIBS)
+
+net--decode-fds-none-netlink$(EXEEXT): $(net__decode_fds_none_netlink_OBJECTS) $(net__decode_fds_none_netlink_DEPENDENCIES) $(EXTRA_net__decode_fds_none_netlink_DEPENDENCIES) 
+       @rm -f net--decode-fds-none-netlink$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(net__decode_fds_none_netlink_OBJECTS) $(net__decode_fds_none_netlink_LDADD) $(LIBS)
+
+net--decode-fds-path-netlink$(EXEEXT): $(net__decode_fds_path_netlink_OBJECTS) $(net__decode_fds_path_netlink_DEPENDENCIES) $(EXTRA_net__decode_fds_path_netlink_DEPENDENCIES) 
+       @rm -f net--decode-fds-path-netlink$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(net__decode_fds_path_netlink_OBJECTS) $(net__decode_fds_path_netlink_LDADD) $(LIBS)
+
+net--decode-fds-socket-netlink$(EXEEXT): $(net__decode_fds_socket_netlink_OBJECTS) $(net__decode_fds_socket_netlink_DEPENDENCIES) $(EXTRA_net__decode_fds_socket_netlink_DEPENDENCIES) 
+       @rm -f net--decode-fds-socket-netlink$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(net__decode_fds_socket_netlink_OBJECTS) $(net__decode_fds_socket_netlink_LDADD) $(LIBS)
+
 net-accept-connect$(EXEEXT): $(net_accept_connect_OBJECTS) $(net_accept_connect_DEPENDENCIES) $(EXTRA_net_accept_connect_DEPENDENCIES) 
        @rm -f net-accept-connect$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(net_accept_connect_OBJECTS) $(net_accept_connect_LDADD) $(LIBS)
@@ -6277,6 +8571,10 @@ net-sockaddr$(EXEEXT): $(net_sockaddr_OBJECTS) $(net_sockaddr_DEPENDENCIES) $(EX
        @rm -f net-sockaddr$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(net_sockaddr_OBJECTS) $(net_sockaddr_LDADD) $(LIBS)
 
+net-sockaddr--pidns-translation$(EXEEXT): $(net_sockaddr__pidns_translation_OBJECTS) $(net_sockaddr__pidns_translation_DEPENDENCIES) $(EXTRA_net_sockaddr__pidns_translation_DEPENDENCIES) 
+       @rm -f net-sockaddr--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(net_sockaddr__pidns_translation_OBJECTS) $(net_sockaddr__pidns_translation_LDADD) $(LIBS)
+
 net-tpacket_req$(EXEEXT): $(net_tpacket_req_OBJECTS) $(net_tpacket_req_DEPENDENCIES) $(EXTRA_net_tpacket_req_DEPENDENCIES) 
        @rm -f net-tpacket_req$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(net_tpacket_req_OBJECTS) $(net_tpacket_req_LDADD) $(LIBS)
@@ -6313,6 +8611,10 @@ netlink_audit$(EXEEXT): $(netlink_audit_OBJECTS) $(netlink_audit_DEPENDENCIES) $
        @rm -f netlink_audit$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(netlink_audit_OBJECTS) $(netlink_audit_LDADD) $(LIBS)
 
+netlink_audit--pidns-translation$(EXEEXT): $(netlink_audit__pidns_translation_OBJECTS) $(netlink_audit__pidns_translation_DEPENDENCIES) $(EXTRA_netlink_audit__pidns_translation_DEPENDENCIES) 
+       @rm -f netlink_audit--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(netlink_audit__pidns_translation_OBJECTS) $(netlink_audit__pidns_translation_LDADD) $(LIBS)
+
 netlink_crypto$(EXEEXT): $(netlink_crypto_OBJECTS) $(netlink_crypto_DEPENDENCIES) $(EXTRA_netlink_crypto_DEPENDENCIES) 
        @rm -f netlink_crypto$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(netlink_crypto_OBJECTS) $(netlink_crypto_LDADD) $(LIBS)
@@ -6461,6 +8763,10 @@ nlattr_ifla_xdp$(EXEEXT): $(nlattr_ifla_xdp_OBJECTS) $(nlattr_ifla_xdp_DEPENDENC
        @rm -f nlattr_ifla_xdp$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(nlattr_ifla_xdp_OBJECTS) $(nlattr_ifla_xdp_LDADD) $(LIBS)
 
+nlattr_ifla_xdp-y$(EXEEXT): $(nlattr_ifla_xdp_y_OBJECTS) $(nlattr_ifla_xdp_y_DEPENDENCIES) $(EXTRA_nlattr_ifla_xdp_y_DEPENDENCIES) 
+       @rm -f nlattr_ifla_xdp-y$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(nlattr_ifla_xdp_y_OBJECTS) $(nlattr_ifla_xdp_y_LDADD) $(LIBS)
+
 nlattr_inet_diag_msg$(EXEEXT): $(nlattr_inet_diag_msg_OBJECTS) $(nlattr_inet_diag_msg_DEPENDENCIES) $(EXTRA_nlattr_inet_diag_msg_DEPENDENCIES) 
        @rm -f nlattr_inet_diag_msg$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(nlattr_inet_diag_msg_OBJECTS) $(nlattr_inet_diag_msg_LDADD) $(LIBS)
@@ -6601,10 +8907,58 @@ open$(EXEEXT): $(open_OBJECTS) $(open_DEPENDENCIES) $(EXTRA_open_DEPENDENCIES)
        @rm -f open$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(open_OBJECTS) $(open_LDADD) $(LIBS)
 
+open_tree$(EXEEXT): $(open_tree_OBJECTS) $(open_tree_DEPENDENCIES) $(EXTRA_open_tree_DEPENDENCIES) 
+       @rm -f open_tree$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(open_tree_OBJECTS) $(open_tree_LDADD) $(LIBS)
+
+open_tree-P$(EXEEXT): $(open_tree_P_OBJECTS) $(open_tree_P_DEPENDENCIES) $(EXTRA_open_tree_P_DEPENDENCIES) 
+       @rm -f open_tree-P$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(open_tree_P_OBJECTS) $(open_tree_P_LDADD) $(LIBS)
+
 openat$(EXEEXT): $(openat_OBJECTS) $(openat_DEPENDENCIES) $(EXTRA_openat_DEPENDENCIES) 
        @rm -f openat$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(openat_OBJECTS) $(openat_LDADD) $(LIBS)
 
+openat2$(EXEEXT): $(openat2_OBJECTS) $(openat2_DEPENDENCIES) $(EXTRA_openat2_DEPENDENCIES) 
+       @rm -f openat2$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(openat2_OBJECTS) $(openat2_LDADD) $(LIBS)
+
+openat2-Xabbrev$(EXEEXT): $(openat2_Xabbrev_OBJECTS) $(openat2_Xabbrev_DEPENDENCIES) $(EXTRA_openat2_Xabbrev_DEPENDENCIES) 
+       @rm -f openat2-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(openat2_Xabbrev_OBJECTS) $(openat2_Xabbrev_LDADD) $(LIBS)
+
+openat2-Xraw$(EXEEXT): $(openat2_Xraw_OBJECTS) $(openat2_Xraw_DEPENDENCIES) $(EXTRA_openat2_Xraw_DEPENDENCIES) 
+       @rm -f openat2-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(openat2_Xraw_OBJECTS) $(openat2_Xraw_LDADD) $(LIBS)
+
+openat2-Xverbose$(EXEEXT): $(openat2_Xverbose_OBJECTS) $(openat2_Xverbose_DEPENDENCIES) $(EXTRA_openat2_Xverbose_DEPENDENCIES) 
+       @rm -f openat2-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(openat2_Xverbose_OBJECTS) $(openat2_Xverbose_LDADD) $(LIBS)
+
+openat2-v$(EXEEXT): $(openat2_v_OBJECTS) $(openat2_v_DEPENDENCIES) $(EXTRA_openat2_v_DEPENDENCIES) 
+       @rm -f openat2-v$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(openat2_v_OBJECTS) $(openat2_v_LDADD) $(LIBS)
+
+openat2-v-y$(EXEEXT): $(openat2_v_y_OBJECTS) $(openat2_v_y_DEPENDENCIES) $(EXTRA_openat2_v_y_DEPENDENCIES) 
+       @rm -f openat2-v-y$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(openat2_v_y_OBJECTS) $(openat2_v_y_LDADD) $(LIBS)
+
+openat2-v-y-Xabbrev$(EXEEXT): $(openat2_v_y_Xabbrev_OBJECTS) $(openat2_v_y_Xabbrev_DEPENDENCIES) $(EXTRA_openat2_v_y_Xabbrev_DEPENDENCIES) 
+       @rm -f openat2-v-y-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(openat2_v_y_Xabbrev_OBJECTS) $(openat2_v_y_Xabbrev_LDADD) $(LIBS)
+
+openat2-v-y-Xraw$(EXEEXT): $(openat2_v_y_Xraw_OBJECTS) $(openat2_v_y_Xraw_DEPENDENCIES) $(EXTRA_openat2_v_y_Xraw_DEPENDENCIES) 
+       @rm -f openat2-v-y-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(openat2_v_y_Xraw_OBJECTS) $(openat2_v_y_Xraw_LDADD) $(LIBS)
+
+openat2-v-y-Xverbose$(EXEEXT): $(openat2_v_y_Xverbose_OBJECTS) $(openat2_v_y_Xverbose_DEPENDENCIES) $(EXTRA_openat2_v_y_Xverbose_DEPENDENCIES) 
+       @rm -f openat2-v-y-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(openat2_v_y_Xverbose_OBJECTS) $(openat2_v_y_Xverbose_LDADD) $(LIBS)
+
+openat2-y$(EXEEXT): $(openat2_y_OBJECTS) $(openat2_y_DEPENDENCIES) $(EXTRA_openat2_y_DEPENDENCIES) 
+       @rm -f openat2-y$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(openat2_y_OBJECTS) $(openat2_y_LDADD) $(LIBS)
+
 orphaned_process_group$(EXEEXT): $(orphaned_process_group_OBJECTS) $(orphaned_process_group_DEPENDENCIES) $(EXTRA_orphaned_process_group_DEPENDENCIES) 
        @rm -f orphaned_process_group$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(orphaned_process_group_OBJECTS) $(orphaned_process_group_LDADD) $(LIBS)
@@ -6649,10 +9003,62 @@ personality-Xverbose$(EXEEXT): $(personality_Xverbose_OBJECTS) $(personality_Xve
        @rm -f personality-Xverbose$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(personality_Xverbose_OBJECTS) $(personality_Xverbose_LDADD) $(LIBS)
 
+pidfd_getfd$(EXEEXT): $(pidfd_getfd_OBJECTS) $(pidfd_getfd_DEPENDENCIES) $(EXTRA_pidfd_getfd_DEPENDENCIES) 
+       @rm -f pidfd_getfd$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pidfd_getfd_OBJECTS) $(pidfd_getfd_LDADD) $(LIBS)
+
+pidfd_getfd-y$(EXEEXT): $(pidfd_getfd_y_OBJECTS) $(pidfd_getfd_y_DEPENDENCIES) $(EXTRA_pidfd_getfd_y_DEPENDENCIES) 
+       @rm -f pidfd_getfd-y$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pidfd_getfd_y_OBJECTS) $(pidfd_getfd_y_LDADD) $(LIBS)
+
+pidfd_getfd-yy$(EXEEXT): $(pidfd_getfd_yy_OBJECTS) $(pidfd_getfd_yy_DEPENDENCIES) $(EXTRA_pidfd_getfd_yy_DEPENDENCIES) 
+       @rm -f pidfd_getfd-yy$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pidfd_getfd_yy_OBJECTS) $(pidfd_getfd_yy_LDADD) $(LIBS)
+
+pidfd_open$(EXEEXT): $(pidfd_open_OBJECTS) $(pidfd_open_DEPENDENCIES) $(EXTRA_pidfd_open_DEPENDENCIES) 
+       @rm -f pidfd_open$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pidfd_open_OBJECTS) $(pidfd_open_LDADD) $(LIBS)
+
+pidfd_open--decode-fd-path$(EXEEXT): $(pidfd_open__decode_fd_path_OBJECTS) $(pidfd_open__decode_fd_path_DEPENDENCIES) $(EXTRA_pidfd_open__decode_fd_path_DEPENDENCIES) 
+       @rm -f pidfd_open--decode-fd-path$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pidfd_open__decode_fd_path_OBJECTS) $(pidfd_open__decode_fd_path_LDADD) $(LIBS)
+
+pidfd_open--decode-fd-pidfd$(EXEEXT): $(pidfd_open__decode_fd_pidfd_OBJECTS) $(pidfd_open__decode_fd_pidfd_DEPENDENCIES) $(EXTRA_pidfd_open__decode_fd_pidfd_DEPENDENCIES) 
+       @rm -f pidfd_open--decode-fd-pidfd$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pidfd_open__decode_fd_pidfd_OBJECTS) $(pidfd_open__decode_fd_pidfd_LDADD) $(LIBS)
+
+pidfd_open--decode-fd-socket$(EXEEXT): $(pidfd_open__decode_fd_socket_OBJECTS) $(pidfd_open__decode_fd_socket_DEPENDENCIES) $(EXTRA_pidfd_open__decode_fd_socket_DEPENDENCIES) 
+       @rm -f pidfd_open--decode-fd-socket$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pidfd_open__decode_fd_socket_OBJECTS) $(pidfd_open__decode_fd_socket_LDADD) $(LIBS)
+
+pidfd_open--pidns-translation$(EXEEXT): $(pidfd_open__pidns_translation_OBJECTS) $(pidfd_open__pidns_translation_DEPENDENCIES) $(EXTRA_pidfd_open__pidns_translation_DEPENDENCIES) 
+       @rm -f pidfd_open--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pidfd_open__pidns_translation_OBJECTS) $(pidfd_open__pidns_translation_LDADD) $(LIBS)
+
+pidfd_open-P$(EXEEXT): $(pidfd_open_P_OBJECTS) $(pidfd_open_P_DEPENDENCIES) $(EXTRA_pidfd_open_P_DEPENDENCIES) 
+       @rm -f pidfd_open-P$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pidfd_open_P_OBJECTS) $(pidfd_open_P_LDADD) $(LIBS)
+
+pidfd_open-y$(EXEEXT): $(pidfd_open_y_OBJECTS) $(pidfd_open_y_DEPENDENCIES) $(EXTRA_pidfd_open_y_DEPENDENCIES) 
+       @rm -f pidfd_open-y$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pidfd_open_y_OBJECTS) $(pidfd_open_y_LDADD) $(LIBS)
+
+pidfd_open-yy$(EXEEXT): $(pidfd_open_yy_OBJECTS) $(pidfd_open_yy_DEPENDENCIES) $(EXTRA_pidfd_open_yy_DEPENDENCIES) 
+       @rm -f pidfd_open-yy$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pidfd_open_yy_OBJECTS) $(pidfd_open_yy_LDADD) $(LIBS)
+
 pidfd_send_signal$(EXEEXT): $(pidfd_send_signal_OBJECTS) $(pidfd_send_signal_DEPENDENCIES) $(EXTRA_pidfd_send_signal_DEPENDENCIES) 
        @rm -f pidfd_send_signal$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(pidfd_send_signal_OBJECTS) $(pidfd_send_signal_LDADD) $(LIBS)
 
+pidfd_send_signal--pidns-translation$(EXEEXT): $(pidfd_send_signal__pidns_translation_OBJECTS) $(pidfd_send_signal__pidns_translation_DEPENDENCIES) $(EXTRA_pidfd_send_signal__pidns_translation_DEPENDENCIES) 
+       @rm -f pidfd_send_signal--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pidfd_send_signal__pidns_translation_OBJECTS) $(pidfd_send_signal__pidns_translation_LDADD) $(LIBS)
+
+pidns-cache$(EXEEXT): $(pidns_cache_OBJECTS) $(pidns_cache_DEPENDENCIES) $(EXTRA_pidns_cache_DEPENDENCIES) 
+       @rm -f pidns-cache$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pidns_cache_OBJECTS) $(pidns_cache_LDADD) $(LIBS)
+
 pipe$(EXEEXT): $(pipe_OBJECTS) $(pipe_DEPENDENCIES) $(EXTRA_pipe_DEPENDENCIES) 
        @rm -f pipe$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(pipe_OBJECTS) $(pipe_LDADD) $(LIBS)
@@ -6757,6 +9163,10 @@ print_maxfd$(EXEEXT): $(print_maxfd_OBJECTS) $(print_maxfd_DEPENDENCIES) $(EXTRA
        @rm -f print_maxfd$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(print_maxfd_OBJECTS) $(print_maxfd_LDADD) $(LIBS)
 
+print_ppid_tracerpid$(EXEEXT): $(print_ppid_tracerpid_OBJECTS) $(print_ppid_tracerpid_DEPENDENCIES) $(EXTRA_print_ppid_tracerpid_DEPENDENCIES) 
+       @rm -f print_ppid_tracerpid$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(print_ppid_tracerpid_OBJECTS) $(print_ppid_tracerpid_LDADD) $(LIBS)
+
 printpath-umovestr$(EXEEXT): $(printpath_umovestr_OBJECTS) $(printpath_umovestr_DEPENDENCIES) $(EXTRA_printpath_umovestr_DEPENDENCIES) 
        @rm -f printpath-umovestr$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(printpath_umovestr_OBJECTS) $(printpath_umovestr_LDADD) $(LIBS)
@@ -6801,14 +9211,26 @@ prlimit64$(EXEEXT): $(prlimit64_OBJECTS) $(prlimit64_DEPENDENCIES) $(EXTRA_prlim
        @rm -f prlimit64$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(prlimit64_OBJECTS) $(prlimit64_LDADD) $(LIBS)
 
+prlimit64--pidns-translation$(EXEEXT): $(prlimit64__pidns_translation_OBJECTS) $(prlimit64__pidns_translation_DEPENDENCIES) $(EXTRA_prlimit64__pidns_translation_DEPENDENCIES) 
+       @rm -f prlimit64--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(prlimit64__pidns_translation_OBJECTS) $(prlimit64__pidns_translation_LDADD) $(LIBS)
+
 process_vm_readv$(EXEEXT): $(process_vm_readv_OBJECTS) $(process_vm_readv_DEPENDENCIES) $(EXTRA_process_vm_readv_DEPENDENCIES) 
        @rm -f process_vm_readv$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(process_vm_readv_OBJECTS) $(process_vm_readv_LDADD) $(LIBS)
 
+process_vm_readv--pidns-translation$(EXEEXT): $(process_vm_readv__pidns_translation_OBJECTS) $(process_vm_readv__pidns_translation_DEPENDENCIES) $(EXTRA_process_vm_readv__pidns_translation_DEPENDENCIES) 
+       @rm -f process_vm_readv--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(process_vm_readv__pidns_translation_OBJECTS) $(process_vm_readv__pidns_translation_LDADD) $(LIBS)
+
 process_vm_writev$(EXEEXT): $(process_vm_writev_OBJECTS) $(process_vm_writev_DEPENDENCIES) $(EXTRA_process_vm_writev_DEPENDENCIES) 
        @rm -f process_vm_writev$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(process_vm_writev_OBJECTS) $(process_vm_writev_LDADD) $(LIBS)
 
+process_vm_writev--pidns-translation$(EXEEXT): $(process_vm_writev__pidns_translation_OBJECTS) $(process_vm_writev__pidns_translation_DEPENDENCIES) $(EXTRA_process_vm_writev__pidns_translation_DEPENDENCIES) 
+       @rm -f process_vm_writev--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(process_vm_writev__pidns_translation_OBJECTS) $(process_vm_writev__pidns_translation_LDADD) $(LIBS)
+
 pselect6$(EXEEXT): $(pselect6_OBJECTS) $(pselect6_DEPENDENCIES) $(EXTRA_pselect6_DEPENDENCIES) 
        @rm -f pselect6$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(pselect6_OBJECTS) $(pselect6_LDADD) $(LIBS)
@@ -6917,10 +9339,18 @@ reboot$(EXEEXT): $(reboot_OBJECTS) $(reboot_DEPENDENCIES) $(EXTRA_reboot_DEPENDE
        @rm -f reboot$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(reboot_OBJECTS) $(reboot_LDADD) $(LIBS)
 
+recv-MSG_TRUNC$(EXEEXT): $(recv_MSG_TRUNC_OBJECTS) $(recv_MSG_TRUNC_DEPENDENCIES) $(EXTRA_recv_MSG_TRUNC_DEPENDENCIES) 
+       @rm -f recv-MSG_TRUNC$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(recv_MSG_TRUNC_OBJECTS) $(recv_MSG_TRUNC_LDADD) $(LIBS)
+
 recvfrom$(EXEEXT): $(recvfrom_OBJECTS) $(recvfrom_DEPENDENCIES) $(EXTRA_recvfrom_DEPENDENCIES) 
        @rm -f recvfrom$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(recvfrom_OBJECTS) $(recvfrom_LDADD) $(LIBS)
 
+recvfrom-MSG_TRUNC$(EXEEXT): $(recvfrom_MSG_TRUNC_OBJECTS) $(recvfrom_MSG_TRUNC_DEPENDENCIES) $(EXTRA_recvfrom_MSG_TRUNC_DEPENDENCIES) 
+       @rm -f recvfrom-MSG_TRUNC$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(recvfrom_MSG_TRUNC_OBJECTS) $(recvfrom_MSG_TRUNC_LDADD) $(LIBS)
+
 recvmmsg-timeout$(EXEEXT): $(recvmmsg_timeout_OBJECTS) $(recvmmsg_timeout_DEPENDENCIES) $(EXTRA_recvmmsg_timeout_DEPENDENCIES) 
        @rm -f recvmmsg-timeout$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(recvmmsg_timeout_OBJECTS) $(recvmmsg_timeout_LDADD) $(LIBS)
@@ -6993,6 +9423,10 @@ rt_sigqueueinfo$(EXEEXT): $(rt_sigqueueinfo_OBJECTS) $(rt_sigqueueinfo_DEPENDENC
        @rm -f rt_sigqueueinfo$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(rt_sigqueueinfo_OBJECTS) $(rt_sigqueueinfo_LDADD) $(LIBS)
 
+rt_sigqueueinfo--pidns-translation$(EXEEXT): $(rt_sigqueueinfo__pidns_translation_OBJECTS) $(rt_sigqueueinfo__pidns_translation_DEPENDENCIES) $(EXTRA_rt_sigqueueinfo__pidns_translation_DEPENDENCIES) 
+       @rm -f rt_sigqueueinfo--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(rt_sigqueueinfo__pidns_translation_OBJECTS) $(rt_sigqueueinfo__pidns_translation_LDADD) $(LIBS)
+
 rt_sigreturn$(EXEEXT): $(rt_sigreturn_OBJECTS) $(rt_sigreturn_DEPENDENCIES) $(EXTRA_rt_sigreturn_DEPENDENCIES) 
        @rm -f rt_sigreturn$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(rt_sigreturn_OBJECTS) $(rt_sigreturn_LDADD) $(LIBS)
@@ -7009,6 +9443,10 @@ rt_tgsigqueueinfo$(EXEEXT): $(rt_tgsigqueueinfo_OBJECTS) $(rt_tgsigqueueinfo_DEP
        @rm -f rt_tgsigqueueinfo$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(rt_tgsigqueueinfo_OBJECTS) $(rt_tgsigqueueinfo_LDADD) $(LIBS)
 
+rt_tgsigqueueinfo--pidns-translation$(EXEEXT): $(rt_tgsigqueueinfo__pidns_translation_OBJECTS) $(rt_tgsigqueueinfo__pidns_translation_DEPENDENCIES) $(EXTRA_rt_tgsigqueueinfo__pidns_translation_DEPENDENCIES) 
+       @rm -f rt_tgsigqueueinfo--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(rt_tgsigqueueinfo__pidns_translation_OBJECTS) $(rt_tgsigqueueinfo__pidns_translation_LDADD) $(LIBS)
+
 run_expect_termsig$(EXEEXT): $(run_expect_termsig_OBJECTS) $(run_expect_termsig_DEPENDENCIES) $(EXTRA_run_expect_termsig_DEPENDENCIES) 
        @rm -f run_expect_termsig$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(run_expect_termsig_OBJECTS) $(run_expect_termsig_LDADD) $(LIBS)
@@ -7049,18 +9487,34 @@ sched_xetaffinity$(EXEEXT): $(sched_xetaffinity_OBJECTS) $(sched_xetaffinity_DEP
        @rm -f sched_xetaffinity$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(sched_xetaffinity_OBJECTS) $(sched_xetaffinity_LDADD) $(LIBS)
 
+sched_xetaffinity--pidns-translation$(EXEEXT): $(sched_xetaffinity__pidns_translation_OBJECTS) $(sched_xetaffinity__pidns_translation_DEPENDENCIES) $(EXTRA_sched_xetaffinity__pidns_translation_DEPENDENCIES) 
+       @rm -f sched_xetaffinity--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(sched_xetaffinity__pidns_translation_OBJECTS) $(sched_xetaffinity__pidns_translation_LDADD) $(LIBS)
+
 sched_xetattr$(EXEEXT): $(sched_xetattr_OBJECTS) $(sched_xetattr_DEPENDENCIES) $(EXTRA_sched_xetattr_DEPENDENCIES) 
        @rm -f sched_xetattr$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(sched_xetattr_OBJECTS) $(sched_xetattr_LDADD) $(LIBS)
 
+sched_xetattr--pidns-translation$(EXEEXT): $(sched_xetattr__pidns_translation_OBJECTS) $(sched_xetattr__pidns_translation_DEPENDENCIES) $(EXTRA_sched_xetattr__pidns_translation_DEPENDENCIES) 
+       @rm -f sched_xetattr--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(sched_xetattr__pidns_translation_OBJECTS) $(sched_xetattr__pidns_translation_LDADD) $(LIBS)
+
 sched_xetparam$(EXEEXT): $(sched_xetparam_OBJECTS) $(sched_xetparam_DEPENDENCIES) $(EXTRA_sched_xetparam_DEPENDENCIES) 
        @rm -f sched_xetparam$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(sched_xetparam_OBJECTS) $(sched_xetparam_LDADD) $(LIBS)
 
+sched_xetparam--pidns-translation$(EXEEXT): $(sched_xetparam__pidns_translation_OBJECTS) $(sched_xetparam__pidns_translation_DEPENDENCIES) $(EXTRA_sched_xetparam__pidns_translation_DEPENDENCIES) 
+       @rm -f sched_xetparam--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(sched_xetparam__pidns_translation_OBJECTS) $(sched_xetparam__pidns_translation_LDADD) $(LIBS)
+
 sched_xetscheduler$(EXEEXT): $(sched_xetscheduler_OBJECTS) $(sched_xetscheduler_DEPENDENCIES) $(EXTRA_sched_xetscheduler_DEPENDENCIES) 
        @rm -f sched_xetscheduler$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(sched_xetscheduler_OBJECTS) $(sched_xetscheduler_LDADD) $(LIBS)
 
+sched_xetscheduler--pidns-translation$(EXEEXT): $(sched_xetscheduler__pidns_translation_OBJECTS) $(sched_xetscheduler__pidns_translation_DEPENDENCIES) $(EXTRA_sched_xetscheduler__pidns_translation_DEPENDENCIES) 
+       @rm -f sched_xetscheduler--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(sched_xetscheduler__pidns_translation_OBJECTS) $(sched_xetscheduler__pidns_translation_LDADD) $(LIBS)
+
 sched_yield$(EXEEXT): $(sched_yield_OBJECTS) $(sched_yield_DEPENDENCIES) $(EXTRA_sched_yield_DEPENDENCIES) 
        @rm -f sched_yield$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(sched_yield_OBJECTS) $(sched_yield_LDADD) $(LIBS)
@@ -7097,6 +9551,14 @@ semop$(EXEEXT): $(semop_OBJECTS) $(semop_DEPENDENCIES) $(EXTRA_semop_DEPENDENCIE
        @rm -f semop$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(semop_OBJECTS) $(semop_LDADD) $(LIBS)
 
+semop-indirect$(EXEEXT): $(semop_indirect_OBJECTS) $(semop_indirect_DEPENDENCIES) $(EXTRA_semop_indirect_DEPENDENCIES) 
+       @rm -f semop-indirect$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(semop_indirect_OBJECTS) $(semop_indirect_LDADD) $(LIBS)
+
+semtimedop$(EXEEXT): $(semtimedop_OBJECTS) $(semtimedop_DEPENDENCIES) $(EXTRA_semtimedop_DEPENDENCIES) 
+       @rm -f semtimedop$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(semtimedop_OBJECTS) $(semtimedop_LDADD) $(LIBS)
+
 sendfile$(EXEEXT): $(sendfile_OBJECTS) $(sendfile_DEPENDENCIES) $(EXTRA_sendfile_DEPENDENCIES) 
        @rm -f sendfile$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(sendfile_OBJECTS) $(sendfile_LDADD) $(LIBS)
@@ -7109,6 +9571,18 @@ set_mempolicy$(EXEEXT): $(set_mempolicy_OBJECTS) $(set_mempolicy_DEPENDENCIES) $
        @rm -f set_mempolicy$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(set_mempolicy_OBJECTS) $(set_mempolicy_LDADD) $(LIBS)
 
+set_mempolicy-Xabbrev$(EXEEXT): $(set_mempolicy_Xabbrev_OBJECTS) $(set_mempolicy_Xabbrev_DEPENDENCIES) $(EXTRA_set_mempolicy_Xabbrev_DEPENDENCIES) 
+       @rm -f set_mempolicy-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(set_mempolicy_Xabbrev_OBJECTS) $(set_mempolicy_Xabbrev_LDADD) $(LIBS)
+
+set_mempolicy-Xraw$(EXEEXT): $(set_mempolicy_Xraw_OBJECTS) $(set_mempolicy_Xraw_DEPENDENCIES) $(EXTRA_set_mempolicy_Xraw_DEPENDENCIES) 
+       @rm -f set_mempolicy-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(set_mempolicy_Xraw_OBJECTS) $(set_mempolicy_Xraw_LDADD) $(LIBS)
+
+set_mempolicy-Xverbose$(EXEEXT): $(set_mempolicy_Xverbose_OBJECTS) $(set_mempolicy_Xverbose_DEPENDENCIES) $(EXTRA_set_mempolicy_Xverbose_DEPENDENCIES) 
+       @rm -f set_mempolicy-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(set_mempolicy_Xverbose_OBJECTS) $(set_mempolicy_Xverbose_LDADD) $(LIBS)
+
 set_ptracer_any$(EXEEXT): $(set_ptracer_any_OBJECTS) $(set_ptracer_any_DEPENDENCIES) $(EXTRA_set_ptracer_any_DEPENDENCIES) 
        @rm -f set_ptracer_any$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(set_ptracer_any_OBJECTS) $(set_ptracer_any_LDADD) $(LIBS)
@@ -7165,6 +9639,10 @@ setns$(EXEEXT): $(setns_OBJECTS) $(setns_DEPENDENCIES) $(EXTRA_setns_DEPENDENCIE
        @rm -f setns$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(setns_OBJECTS) $(setns_LDADD) $(LIBS)
 
+setpgrp-exec$(EXEEXT): $(setpgrp_exec_OBJECTS) $(setpgrp_exec_DEPENDENCIES) $(EXTRA_setpgrp_exec_DEPENDENCIES) 
+       @rm -f setpgrp-exec$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(setpgrp_exec_OBJECTS) $(setpgrp_exec_LDADD) $(LIBS)
+
 setregid$(EXEEXT): $(setregid_OBJECTS) $(setregid_DEPENDENCIES) $(EXTRA_setregid_DEPENDENCIES) 
        @rm -f setregid$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(setregid_OBJECTS) $(setregid_LDADD) $(LIBS)
@@ -7249,6 +9727,10 @@ signal_receive$(EXEEXT): $(signal_receive_OBJECTS) $(signal_receive_DEPENDENCIES
        @rm -f signal_receive$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(signal_receive_OBJECTS) $(signal_receive_LDADD) $(LIBS)
 
+signal_receive--pidns-translation$(EXEEXT): $(signal_receive__pidns_translation_OBJECTS) $(signal_receive__pidns_translation_DEPENDENCIES) $(EXTRA_signal_receive__pidns_translation_DEPENDENCIES) 
+       @rm -f signal_receive--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(signal_receive__pidns_translation_OBJECTS) $(signal_receive__pidns_translation_LDADD) $(LIBS)
+
 signalfd4$(EXEEXT): $(signalfd4_OBJECTS) $(signalfd4_DEPENDENCIES) $(EXTRA_signalfd4_DEPENDENCIES) 
        @rm -f signalfd4$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(signalfd4_OBJECTS) $(signalfd4_LDADD) $(LIBS)
@@ -7285,6 +9767,10 @@ so_peercred$(EXEEXT): $(so_peercred_OBJECTS) $(so_peercred_DEPENDENCIES) $(EXTRA
        @rm -f so_peercred$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(so_peercred_OBJECTS) $(so_peercred_LDADD) $(LIBS)
 
+so_peercred--pidns-translation$(EXEEXT): $(so_peercred__pidns_translation_OBJECTS) $(so_peercred__pidns_translation_DEPENDENCIES) $(EXTRA_so_peercred__pidns_translation_DEPENDENCIES) 
+       @rm -f so_peercred--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(so_peercred__pidns_translation_OBJECTS) $(so_peercred__pidns_translation_LDADD) $(LIBS)
+
 so_peercred-Xabbrev$(EXEEXT): $(so_peercred_Xabbrev_OBJECTS) $(so_peercred_Xabbrev_DEPENDENCIES) $(EXTRA_so_peercred_Xabbrev_DEPENDENCIES) 
        @rm -f so_peercred-Xabbrev$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(so_peercred_Xabbrev_OBJECTS) $(so_peercred_Xabbrev_LDADD) $(LIBS)
@@ -7345,6 +9831,10 @@ stack-fcall$(EXEEXT): $(stack_fcall_OBJECTS) $(stack_fcall_DEPENDENCIES) $(EXTRA
        @rm -f stack-fcall$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(stack_fcall_OBJECTS) $(stack_fcall_LDADD) $(LIBS)
 
+stack-fcall-attach$(EXEEXT): $(stack_fcall_attach_OBJECTS) $(stack_fcall_attach_DEPENDENCIES) $(EXTRA_stack_fcall_attach_DEPENDENCIES) 
+       @rm -f stack-fcall-attach$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(stack_fcall_attach_OBJECTS) $(stack_fcall_attach_LDADD) $(LIBS)
+
 stack-fcall-mangled$(EXEEXT): $(stack_fcall_mangled_OBJECTS) $(stack_fcall_mangled_DEPENDENCIES) $(EXTRA_stack_fcall_mangled_DEPENDENCIES) 
        @rm -f stack-fcall-mangled$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(stack_fcall_mangled_OBJECTS) $(stack_fcall_mangled_LDADD) $(LIBS)
@@ -7365,10 +9855,82 @@ statfs64$(EXEEXT): $(statfs64_OBJECTS) $(statfs64_DEPENDENCIES) $(EXTRA_statfs64
        @rm -f statfs64$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(statfs64_OBJECTS) $(statfs64_LDADD) $(LIBS)
 
+status-all$(EXEEXT): $(status_all_OBJECTS) $(status_all_DEPENDENCIES) $(EXTRA_status_all_DEPENDENCIES) 
+       @rm -f status-all$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(status_all_OBJECTS) $(status_all_LDADD) $(LIBS)
+
+status-failed$(EXEEXT): $(status_failed_OBJECTS) $(status_failed_DEPENDENCIES) $(EXTRA_status_failed_DEPENDENCIES) 
+       @rm -f status-failed$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(status_failed_OBJECTS) $(status_failed_LDADD) $(LIBS)
+
+status-failed-long$(EXEEXT): $(status_failed_long_OBJECTS) $(status_failed_long_DEPENDENCIES) $(EXTRA_status_failed_long_DEPENDENCIES) 
+       @rm -f status-failed-long$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(status_failed_long_OBJECTS) $(status_failed_long_LDADD) $(LIBS)
+
+status-failed-status$(EXEEXT): $(status_failed_status_OBJECTS) $(status_failed_status_DEPENDENCIES) $(EXTRA_status_failed_status_DEPENDENCIES) 
+       @rm -f status-failed-status$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(status_failed_status_OBJECTS) $(status_failed_status_LDADD) $(LIBS)
+
+status-none$(EXEEXT): $(status_none_OBJECTS) $(status_none_DEPENDENCIES) $(EXTRA_status_none_DEPENDENCIES) 
+       @rm -f status-none$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(status_none_OBJECTS) $(status_none_LDADD) $(LIBS)
+
+status-none-f$(EXEEXT): $(status_none_f_OBJECTS) $(status_none_f_DEPENDENCIES) $(EXTRA_status_none_f_DEPENDENCIES) 
+       @rm -f status-none-f$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(status_none_f_OBJECTS) $(status_none_f_LDADD) $(LIBS)
+
+status-none-threads$(EXEEXT): $(status_none_threads_OBJECTS) $(status_none_threads_DEPENDENCIES) $(EXTRA_status_none_threads_DEPENDENCIES) 
+       @rm -f status-none-threads$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(status_none_threads_OBJECTS) $(status_none_threads_LDADD) $(LIBS)
+
+status-successful$(EXEEXT): $(status_successful_OBJECTS) $(status_successful_DEPENDENCIES) $(EXTRA_status_successful_DEPENDENCIES) 
+       @rm -f status-successful$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(status_successful_OBJECTS) $(status_successful_LDADD) $(LIBS)
+
+status-successful-long$(EXEEXT): $(status_successful_long_OBJECTS) $(status_successful_long_DEPENDENCIES) $(EXTRA_status_successful_long_DEPENDENCIES) 
+       @rm -f status-successful-long$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(status_successful_long_OBJECTS) $(status_successful_long_LDADD) $(LIBS)
+
+status-successful-status$(EXEEXT): $(status_successful_status_OBJECTS) $(status_successful_status_DEPENDENCIES) $(EXTRA_status_successful_status_DEPENDENCIES) 
+       @rm -f status-successful-status$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(status_successful_status_OBJECTS) $(status_successful_status_LDADD) $(LIBS)
+
+status-unfinished$(EXEEXT): $(status_unfinished_OBJECTS) $(status_unfinished_DEPENDENCIES) $(EXTRA_status_unfinished_DEPENDENCIES) 
+       @rm -f status-unfinished$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(status_unfinished_OBJECTS) $(status_unfinished_LDADD) $(LIBS)
+
+status-unfinished-threads$(EXEEXT): $(status_unfinished_threads_OBJECTS) $(status_unfinished_threads_DEPENDENCIES) $(EXTRA_status_unfinished_threads_DEPENDENCIES) 
+       @rm -f status-unfinished-threads$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(status_unfinished_threads_OBJECTS) $(status_unfinished_threads_LDADD) $(LIBS)
+
 statx$(EXEEXT): $(statx_OBJECTS) $(statx_DEPENDENCIES) $(EXTRA_statx_DEPENDENCIES) 
        @rm -f statx$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(statx_OBJECTS) $(statx_LDADD) $(LIBS)
 
+strace--strings-in-hex$(EXEEXT): $(strace__strings_in_hex_OBJECTS) $(strace__strings_in_hex_DEPENDENCIES) $(EXTRA_strace__strings_in_hex_DEPENDENCIES) 
+       @rm -f strace--strings-in-hex$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(strace__strings_in_hex_OBJECTS) $(strace__strings_in_hex_LDADD) $(LIBS)
+
+strace--strings-in-hex-all$(EXEEXT): $(strace__strings_in_hex_all_OBJECTS) $(strace__strings_in_hex_all_DEPENDENCIES) $(EXTRA_strace__strings_in_hex_all_DEPENDENCIES) 
+       @rm -f strace--strings-in-hex-all$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(strace__strings_in_hex_all_OBJECTS) $(strace__strings_in_hex_all_LDADD) $(LIBS)
+
+strace--strings-in-hex-non-ascii$(EXEEXT): $(strace__strings_in_hex_non_ascii_OBJECTS) $(strace__strings_in_hex_non_ascii_DEPENDENCIES) $(EXTRA_strace__strings_in_hex_non_ascii_DEPENDENCIES) 
+       @rm -f strace--strings-in-hex-non-ascii$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(strace__strings_in_hex_non_ascii_OBJECTS) $(strace__strings_in_hex_non_ascii_LDADD) $(LIBS)
+
+strace-n$(EXEEXT): $(strace_n_OBJECTS) $(strace_n_DEPENDENCIES) $(EXTRA_strace_n_DEPENDENCIES) 
+       @rm -f strace-n$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(strace_n_OBJECTS) $(strace_n_LDADD) $(LIBS)
+
+strace-x$(EXEEXT): $(strace_x_OBJECTS) $(strace_x_DEPENDENCIES) $(EXTRA_strace_x_DEPENDENCIES) 
+       @rm -f strace-x$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(strace_x_OBJECTS) $(strace_x_LDADD) $(LIBS)
+
+strace-xx$(EXEEXT): $(strace_xx_OBJECTS) $(strace_xx_DEPENDENCIES) $(EXTRA_strace_xx_DEPENDENCIES) 
+       @rm -f strace-xx$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(strace_xx_OBJECTS) $(strace_xx_LDADD) $(LIBS)
+
 swap$(EXEEXT): $(swap_OBJECTS) $(swap_DEPENDENCIES) $(EXTRA_swap_DEPENDENCIES) 
        @rm -f swap$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(swap_OBJECTS) $(swap_LDADD) $(LIBS)
@@ -7405,14 +9967,42 @@ syslog$(EXEEXT): $(syslog_OBJECTS) $(syslog_DEPENDENCIES) $(EXTRA_syslog_DEPENDE
        @rm -f syslog$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(syslog_OBJECTS) $(syslog_LDADD) $(LIBS)
 
+syslog-success$(EXEEXT): $(syslog_success_OBJECTS) $(syslog_success_DEPENDENCIES) $(EXTRA_syslog_success_DEPENDENCIES) 
+       @rm -f syslog-success$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(syslog_success_OBJECTS) $(syslog_success_LDADD) $(LIBS)
+
 tee$(EXEEXT): $(tee_OBJECTS) $(tee_DEPENDENCIES) $(EXTRA_tee_DEPENDENCIES) 
        @rm -f tee$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(tee_OBJECTS) $(tee_LDADD) $(LIBS)
 
+tgkill$(EXEEXT): $(tgkill_OBJECTS) $(tgkill_DEPENDENCIES) $(EXTRA_tgkill_DEPENDENCIES) 
+       @rm -f tgkill$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(tgkill_OBJECTS) $(tgkill_LDADD) $(LIBS)
+
+tgkill--pidns-translation$(EXEEXT): $(tgkill__pidns_translation_OBJECTS) $(tgkill__pidns_translation_DEPENDENCIES) $(EXTRA_tgkill__pidns_translation_DEPENDENCIES) 
+       @rm -f tgkill--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(tgkill__pidns_translation_OBJECTS) $(tgkill__pidns_translation_LDADD) $(LIBS)
+
 threads-execve$(EXEEXT): $(threads_execve_OBJECTS) $(threads_execve_DEPENDENCIES) $(EXTRA_threads_execve_DEPENDENCIES) 
        @rm -f threads-execve$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(threads_execve_OBJECTS) $(threads_execve_LDADD) $(LIBS)
 
+threads-execve--quiet-thread-execve$(EXEEXT): $(threads_execve__quiet_thread_execve_OBJECTS) $(threads_execve__quiet_thread_execve_DEPENDENCIES) $(EXTRA_threads_execve__quiet_thread_execve_DEPENDENCIES) 
+       @rm -f threads-execve--quiet-thread-execve$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(threads_execve__quiet_thread_execve_OBJECTS) $(threads_execve__quiet_thread_execve_LDADD) $(LIBS)
+
+threads-execve-q$(EXEEXT): $(threads_execve_q_OBJECTS) $(threads_execve_q_DEPENDENCIES) $(EXTRA_threads_execve_q_DEPENDENCIES) 
+       @rm -f threads-execve-q$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(threads_execve_q_OBJECTS) $(threads_execve_q_LDADD) $(LIBS)
+
+threads-execve-qq$(EXEEXT): $(threads_execve_qq_OBJECTS) $(threads_execve_qq_DEPENDENCIES) $(EXTRA_threads_execve_qq_DEPENDENCIES) 
+       @rm -f threads-execve-qq$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(threads_execve_qq_OBJECTS) $(threads_execve_qq_LDADD) $(LIBS)
+
+threads-execve-qqq$(EXEEXT): $(threads_execve_qqq_OBJECTS) $(threads_execve_qqq_DEPENDENCIES) $(EXTRA_threads_execve_qqq_DEPENDENCIES) 
+       @rm -f threads-execve-qqq$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(threads_execve_qqq_OBJECTS) $(threads_execve_qqq_LDADD) $(LIBS)
+
 time$(EXEEXT): $(time_OBJECTS) $(time_DEPENDENCIES) $(EXTRA_time_DEPENDENCIES) 
        @rm -f time$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(time_OBJECTS) $(time_LDADD) $(LIBS)
@@ -7437,6 +10027,22 @@ times-fail$(EXEEXT): $(times_fail_OBJECTS) $(times_fail_DEPENDENCIES) $(EXTRA_ti
        @rm -f times-fail$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(times_fail_OBJECTS) $(times_fail_LDADD) $(LIBS)
 
+tkill$(EXEEXT): $(tkill_OBJECTS) $(tkill_DEPENDENCIES) $(EXTRA_tkill_DEPENDENCIES) 
+       @rm -f tkill$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(tkill_OBJECTS) $(tkill_LDADD) $(LIBS)
+
+tkill--pidns-translation$(EXEEXT): $(tkill__pidns_translation_OBJECTS) $(tkill__pidns_translation_DEPENDENCIES) $(EXTRA_tkill__pidns_translation_DEPENDENCIES) 
+       @rm -f tkill--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(tkill__pidns_translation_OBJECTS) $(tkill__pidns_translation_LDADD) $(LIBS)
+
+tracer_ppid_pgid_sid$(EXEEXT): $(tracer_ppid_pgid_sid_OBJECTS) $(tracer_ppid_pgid_sid_DEPENDENCIES) $(EXTRA_tracer_ppid_pgid_sid_DEPENDENCIES) 
+       @rm -f tracer_ppid_pgid_sid$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(tracer_ppid_pgid_sid_OBJECTS) $(tracer_ppid_pgid_sid_LDADD) $(LIBS)
+
+trie_test$(EXEEXT): $(trie_test_OBJECTS) $(trie_test_DEPENDENCIES) $(EXTRA_trie_test_DEPENDENCIES) 
+       @rm -f trie_test$(EXEEXT)
+       $(AM_V_CCLD)$(trie_test_LINK) $(trie_test_OBJECTS) $(trie_test_LDADD) $(LIBS)
+
 truncate$(EXEEXT): $(truncate_OBJECTS) $(truncate_DEPENDENCIES) $(EXTRA_truncate_DEPENDENCIES) 
        @rm -f truncate$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(truncate_OBJECTS) $(truncate_LDADD) $(LIBS)
@@ -7485,6 +10091,14 @@ umovestr3$(EXEEXT): $(umovestr3_OBJECTS) $(umovestr3_DEPENDENCIES) $(EXTRA_umove
        @rm -f umovestr3$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(umovestr3_OBJECTS) $(umovestr3_LDADD) $(LIBS)
 
+umovestr_cached$(EXEEXT): $(umovestr_cached_OBJECTS) $(umovestr_cached_DEPENDENCIES) $(EXTRA_umovestr_cached_DEPENDENCIES) 
+       @rm -f umovestr_cached$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(umovestr_cached_OBJECTS) $(umovestr_cached_LDADD) $(LIBS)
+
+umovestr_cached_adjacent$(EXEEXT): $(umovestr_cached_adjacent_OBJECTS) $(umovestr_cached_adjacent_DEPENDENCIES) $(EXTRA_umovestr_cached_adjacent_DEPENDENCIES) 
+       @rm -f umovestr_cached_adjacent$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(umovestr_cached_adjacent_OBJECTS) $(umovestr_cached_adjacent_LDADD) $(LIBS)
+
 uname$(EXEEXT): $(uname_OBJECTS) $(uname_DEPENDENCIES) $(EXTRA_uname_DEPENDENCIES) 
        @rm -f uname$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(uname_OBJECTS) $(uname_LDADD) $(LIBS)
@@ -7589,6 +10203,10 @@ xet_robust_list$(EXEEXT): $(xet_robust_list_OBJECTS) $(xet_robust_list_DEPENDENC
        @rm -f xet_robust_list$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(xet_robust_list_OBJECTS) $(xet_robust_list_LDADD) $(LIBS)
 
+xet_robust_list--pidns-translation$(EXEEXT): $(xet_robust_list__pidns_translation_OBJECTS) $(xet_robust_list__pidns_translation_DEPENDENCIES) $(EXTRA_xet_robust_list__pidns_translation_DEPENDENCIES) 
+       @rm -f xet_robust_list--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(xet_robust_list__pidns_translation_OBJECTS) $(xet_robust_list__pidns_translation_LDADD) $(LIBS)
+
 xet_thread_area_x86$(EXEEXT): $(xet_thread_area_x86_OBJECTS) $(xet_thread_area_x86_DEPENDENCIES) $(EXTRA_xet_thread_area_x86_DEPENDENCIES) 
        @rm -f xet_thread_area_x86$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(xet_thread_area_x86_OBJECTS) $(xet_thread_area_x86_LDADD) $(LIBS)
@@ -7601,10 +10219,18 @@ xetpgid$(EXEEXT): $(xetpgid_OBJECTS) $(xetpgid_DEPENDENCIES) $(EXTRA_xetpgid_DEP
        @rm -f xetpgid$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(xetpgid_OBJECTS) $(xetpgid_LDADD) $(LIBS)
 
+xetpgid--pidns-translation$(EXEEXT): $(xetpgid__pidns_translation_OBJECTS) $(xetpgid__pidns_translation_DEPENDENCIES) $(EXTRA_xetpgid__pidns_translation_DEPENDENCIES) 
+       @rm -f xetpgid--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(xetpgid__pidns_translation_OBJECTS) $(xetpgid__pidns_translation_LDADD) $(LIBS)
+
 xetpriority$(EXEEXT): $(xetpriority_OBJECTS) $(xetpriority_DEPENDENCIES) $(EXTRA_xetpriority_DEPENDENCIES) 
        @rm -f xetpriority$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(xetpriority_OBJECTS) $(xetpriority_LDADD) $(LIBS)
 
+xetpriority--pidns-translation$(EXEEXT): $(xetpriority__pidns_translation_OBJECTS) $(xetpriority__pidns_translation_DEPENDENCIES) $(EXTRA_xetpriority__pidns_translation_DEPENDENCIES) 
+       @rm -f xetpriority--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(xetpriority__pidns_translation_OBJECTS) $(xetpriority__pidns_translation_LDADD) $(LIBS)
+
 xettimeofday$(EXEEXT): $(xettimeofday_OBJECTS) $(xettimeofday_DEPENDENCIES) $(EXTRA_xettimeofday_DEPENDENCIES) 
        @rm -f xettimeofday$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(xettimeofday_OBJECTS) $(xettimeofday_LDADD) $(LIBS)
@@ -7636,10 +10262,12 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/attach-p-cmd-cmd.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/attach-p-cmd-p.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/block_reset_raise_run.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/block_reset_run.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bpf-obj_get_info_by_fd-prog-v.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bpf-obj_get_info_by_fd-prog.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bpf-obj_get_info_by_fd-v.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bpf-obj_get_info_by_fd.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bpf-success-long-y.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bpf-success-v.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bpf-success.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bpf-v.Po@am__quote@ # am--include-marker
@@ -7657,16 +10285,48 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clock_adjtime.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clock_nanosleep.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clock_xettime.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone-flags.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone3-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone3-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone3-Xverbose.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone3-success-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone3-success-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone3-success-Xverbose.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone3-success.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone3.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone_parent--quiet-exit.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone_parent-q.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone_parent-qq.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone_parent.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone_ptrace--quiet-attach.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone_ptrace--quiet-exit.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone_ptrace-q.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone_ptrace-qq.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone_ptrace.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/close_range-P.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/close_range-y.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/close_range-yy.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/close_range.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/copy_file_range.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/count-f.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/creat.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/delay.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/delete_module.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dev--decode-fds-dev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dev--decode-fds-path.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dev--decode-fds-socket.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dev-yy.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup-P.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup-y.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup-yy.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup2-P.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup2-y.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup2-yy.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup2.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup3-P.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup3-y.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup3-yy.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup3.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/epoll_create.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/epoll_create1.Po@am__quote@ # am--include-marker
@@ -7679,7 +10339,14 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat-v.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-P.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-y.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-yy.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat2-P.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat2-y.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat2-yy.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat2.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fadvise64.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fadvise64_64.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fallocate.Po@am__quote@ # am--include-marker
@@ -7694,16 +10361,27 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchown.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchown32.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchownat.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl64--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl64.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fdatasync.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fflush.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_handle.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_ioctl.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filter-unavailable.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filter_seccomp-flag.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filter_seccomp-perf.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/finit_module.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/flock.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fork--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fork-f.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fsconfig-P.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fsconfig.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fsmount.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fsopen.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fspick-P.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fspick.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstat-Xabbrev.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstat-Xraw.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstat-Xverbose.Po@am__quote@ # am--include-marker
@@ -7722,9 +10400,12 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/futex.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/futimesat.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/get_mempolicy.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/get_process_reaper.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getcpu.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getcwd.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getdents-v.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getdents.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getdents64-v.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getdents64.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getegid.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getegid32.Po@am__quote@ # am--include-marker
@@ -7735,7 +10416,9 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getgroups.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getgroups32.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpeername.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpgrp--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpgrp.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpid--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpid.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getppid.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getrandom.Po@am__quote@ # am--include-marker
@@ -7745,30 +10428,66 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getresuid32.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getrlimit.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getrusage.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getsid--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getsid.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getsockname.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gettid--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gettid.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getuid.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getuid32.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getxxid.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getxgid.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getxpid.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getxuid.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/group_req.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inet-cmsg.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/init_module.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inject-nf.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inotify.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inotify_init-y.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inotify_init.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inotify_init1-y.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inotify_init1.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/int_0x80.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/io_uring_enter.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/io_uring_register.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/io_uring_setup.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_block--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_block.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_dm-v.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_dm.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev-Xverbose.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev-success-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev-success-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev-success-Xverbose.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev-success-v-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev-success-v-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev-success-v-Xverbose.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev-success-v.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev-success.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev-v-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev-v-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev-v-Xverbose.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev-v.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_hdio-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_hdio-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_hdio-Xverbose.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_hdio-success-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_hdio-success-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_hdio-success-Xverbose.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_hdio-success-v-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_hdio-success-v-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_hdio-success-v-Xverbose.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_hdio-success-v.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_hdio-success.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_hdio-v-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_hdio-v-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_hdio-v-Xverbose.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_hdio-v.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_hdio.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_inotify.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_kvm_run-v.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_kvm_run.Po@am__quote@ # am--include-marker
@@ -7789,10 +10508,28 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_sg_io_v3.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_sg_io_v4.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_sock_gifconf.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_tee.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_uffdio.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_v4l2-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_v4l2-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_v4l2-Xverbose.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_v4l2-success-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_v4l2-success-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_v4l2-success-Xverbose.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_v4l2-success-v-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_v4l2-success-v-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_v4l2-success-v-Xverbose.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_v4l2-success-v.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_v4l2-success.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_v4l2-v-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_v4l2-v-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_v4l2-v-Xverbose.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_v4l2-v.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_v4l2.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_watchdog.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioperm.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iopl.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioprio--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioprio-Xabbrev.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioprio-Xraw.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioprio-Xverbose.Po@am__quote@ # am--include-marker
@@ -7816,6 +10553,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ipc_shm-Xverbose.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ipc_shm.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/is_linux_mips_n64.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kcmp-y--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kcmp-y.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kcmp.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kern_features.Po@am__quote@ # am--include-marker
@@ -7829,12 +10567,14 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keyctl-Xraw.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keyctl-Xverbose.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keyctl.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kill--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kill.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kill_child.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ksysent.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lchown.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lchown32.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-create_nl_socket.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-create_tmpfile.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-errno2name.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-error_msg.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-fill_memory.Po@am__quote@ # am--include-marker
@@ -7846,20 +10586,26 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-inode_of_sockfd.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-libmmsg.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-libsocketcall.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-lock_file.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-overflowuid.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-pidns.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-pipe_maxfd.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-print_quoted_string.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-print_time.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-printflags.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-printxval.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-printxval-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-printxval-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-printxval-Xverbose.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-signal2name.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-skip_unavailable.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-sprintrc.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-status.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-tail_alloc.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-test_printpath.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-test_printstrn.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-test_ucopy.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-tprintf.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-xmalloc_for_tests.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/link.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linkat.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/list_sigaction_signum.Po@am__quote@ # am--include-marker
@@ -7871,12 +10617,18 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lstat.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lstat64-lstat64.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/madvise.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/maybe_switch_current_tcp--quiet-thread-execve.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/maybe_switch_current_tcp.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mbind-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mbind-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mbind-Xverbose.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mbind.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/membarrier.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memfd_create-Xabbrev.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memfd_create-Xraw.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memfd_create-Xverbose.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memfd_create.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/migrate_pages--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/migrate_pages.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mincore.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mkdir.Po@am__quote@ # am--include-marker
@@ -7903,6 +10655,9 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mount-Xraw.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mount-Xverbose.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mount.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/move_mount-P.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/move_mount.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/move_pages--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/move_pages-Xabbrev.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/move_pages-Xraw.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/move_pages-Xverbose.Po@am__quote@ # am--include-marker
@@ -7916,12 +10671,17 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/msg_name.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/munlockall.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nanosleep.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net--decode-fds-dev-netlink.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net--decode-fds-none-netlink.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net--decode-fds-path-netlink.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net--decode-fds-socket-netlink.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-accept-connect.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-icmp_filter.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-packet_mreq-Xabbrev.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-packet_mreq-Xraw.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-packet_mreq-Xverbose.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-packet_mreq.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-sockaddr--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-sockaddr.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-tpacket_req.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-tpacket_stats-success.Po@am__quote@ # am--include-marker
@@ -7931,6 +10691,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-yy-inet6.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-yy-netlink.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-yy-unix.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netlink_audit--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netlink_audit.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netlink_crypto.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netlink_generic.Po@am__quote@ # am--include-marker
@@ -7968,6 +10729,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_ifla_brport.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_ifla_linkinfo.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_ifla_port.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_ifla_xdp-y.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_ifla_xdp.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_inet_diag_msg.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_inet_diag_req_compat.Po@am__quote@ # am--include-marker
@@ -8004,7 +10766,19 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldselect.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldstat.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open_tree-P.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open_tree.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat2-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat2-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat2-Xverbose.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat2-v-y-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat2-v-y-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat2-v-y-Xverbose.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat2-v-y.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat2-v.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat2-y.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat2.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orphaned_process_group.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/osf_utimes.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pause.Po@am__quote@ # am--include-marker
@@ -8016,7 +10790,20 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/personality-Xraw.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/personality-Xverbose.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/personality.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_getfd-y.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_getfd-yy.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_getfd.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_open--decode-fd-path.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_open--decode-fd-pidfd.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_open--decode-fd-socket.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_open--pidns-translation.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_open-P.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_open-y.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_open-yy.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_open.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_send_signal--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_send_signal.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidns-cache.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pipe.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pipe2.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pkey_alloc.Po@am__quote@ # am--include-marker
@@ -8043,6 +10830,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/preadv2-pwritev2.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/preadv_pwritev-preadv-pwritev.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print_maxfd.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print_ppid_tracerpid.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printpath-umovestr-peekdata.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printpath-umovestr-undumpable.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printpath-umovestr.Po@am__quote@ # am--include-marker
@@ -8053,8 +10841,11 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printstrn-umoven-peekdata.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printstrn-umoven-undumpable.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printstrn-umoven.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prlimit64--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prlimit64.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/process_vm_readv--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/process_vm_readv.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/process_vm_writev--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/process_vm_writev.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pselect6.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ptrace.Po@am__quote@ # am--include-marker
@@ -8083,6 +10874,8 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readlinkat.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readv.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reboot.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/recv-MSG_TRUNC.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/recvfrom-MSG_TRUNC.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/recvfrom.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/recvmmsg-timeout.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/recvmsg.Po@am__quote@ # am--include-marker
@@ -8101,10 +10894,12 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigaction.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigpending.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigprocmask.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigqueueinfo--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigqueueinfo.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigreturn.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigsuspend.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigtimedwait.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_tgsigqueueinfo--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_tgsigqueueinfo.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/run_expect_termsig.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390_guarded_storage-v.Po@am__quote@ # am--include-marker
@@ -8115,9 +10910,13 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390_sthyi.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_get_priority_mxx.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_rr_get_interval.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetaffinity--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetaffinity.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetattr--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetattr.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetparam--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetparam.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetscheduler--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetscheduler.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_yield.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scm_rights.Po@am__quote@ # am--include-marker
@@ -8127,9 +10926,14 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seccomp_get_action_avail.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/select-P.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/select.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/semop-indirect.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/semop.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/semtimedop.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendfile.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendfile64.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_mempolicy-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_mempolicy-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_mempolicy-Xverbose.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_mempolicy.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_ptracer_any.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_sigblock.Po@am__quote@ # am--include-marker
@@ -8145,6 +10949,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setgroups32.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sethostname.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setns.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setpgrp-exec.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setregid.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setregid32.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setresgid.Po@am__quote@ # am--include-marker
@@ -8165,6 +10970,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sigaltstack.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/siginfo.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signal.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signal_receive--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signal_receive.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signalfd4.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sigpending.Po@am__quote@ # am--include-marker
@@ -8174,6 +10980,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sleep.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/so_error.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/so_linger.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/so_peercred--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/so_peercred-Xabbrev.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/so_peercred-Xraw.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/so_peercred-Xverbose.Po@am__quote@ # am--include-marker
@@ -8193,6 +11000,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-1.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-2.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-3.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-attach.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-mangled-0.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-mangled-1.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-mangled-2.Po@am__quote@ # am--include-marker
@@ -8203,7 +11011,25 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stat64-stat64.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/statfs-statfs.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/statfs64.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/status-all.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/status-failed-long.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/status-failed-status.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/status-failed.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/status-none-f.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/status-none-threads.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/status-none.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/status-successful-long.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/status-successful-status.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/status-successful.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/status-unfinished-threads.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/status-unfinished.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/statx.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace--strings-in-hex-all.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace--strings-in-hex-non-ascii.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace--strings-in-hex.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-n.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-x.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-xx.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/swap.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sxetmask.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/symlink.Po@am__quote@ # am--include-marker
@@ -8212,8 +11038,15 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sync_file_range.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sync_file_range2.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sysinfo.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/syslog-success.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/syslog.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tee.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tgkill--pidns-translation.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tgkill.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threads-execve--quiet-thread-execve.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threads-execve-q.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threads-execve-qq.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threads-execve-qqq.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threads-execve.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/time.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timer_create.Po@am__quote@ # am--include-marker
@@ -8221,6 +11054,11 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timerfd_xettime.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/times-fail.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/times.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tkill--pidns-translation.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tkill.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tracer_ppid_pgid_sid.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/trie_test-trie_for_tests.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/trie_test-trie_test.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/truncate.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/truncate64-truncate64.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ugetrlimit.Po@am__quote@ # am--include-marker
@@ -8233,6 +11071,8 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/umovestr.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/umovestr2.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/umovestr3.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/umovestr_cached.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/umovestr_cached_adjacent.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uname.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unblock_reset_raise.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unix-pair-send-recv.Po@am__quote@ # am--include-marker
@@ -8258,10 +11098,13 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/waitpid.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xattr-strings.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xattr.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xet_robust_list--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xet_robust_list.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xet_thread_area_x86.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xetitimer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xetpgid--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xetpgid.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xetpriority--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xetpriority.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xettimeofday.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zeroargc.Po@am__quote@ # am--include-marker
@@ -8273,15 +11116,17 @@ $(am__depfiles_remade):
 am--depfiles: $(am__depfiles_remade)
 
 .c.o:
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_TRUE@   $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_TRUE@   $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCC_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
@@ -8300,6 +11145,20 @@ libtests_a-create_nl_socket.obj: create_nl_socket.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-create_nl_socket.obj `if test -f 'create_nl_socket.c'; then $(CYGPATH_W) 'create_nl_socket.c'; else $(CYGPATH_W) '$(srcdir)/create_nl_socket.c'; fi`
 
+libtests_a-create_tmpfile.o: create_tmpfile.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-create_tmpfile.o -MD -MP -MF $(DEPDIR)/libtests_a-create_tmpfile.Tpo -c -o libtests_a-create_tmpfile.o `test -f 'create_tmpfile.c' || echo '$(srcdir)/'`create_tmpfile.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-create_tmpfile.Tpo $(DEPDIR)/libtests_a-create_tmpfile.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='create_tmpfile.c' object='libtests_a-create_tmpfile.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-create_tmpfile.o `test -f 'create_tmpfile.c' || echo '$(srcdir)/'`create_tmpfile.c
+
+libtests_a-create_tmpfile.obj: create_tmpfile.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-create_tmpfile.obj -MD -MP -MF $(DEPDIR)/libtests_a-create_tmpfile.Tpo -c -o libtests_a-create_tmpfile.obj `if test -f 'create_tmpfile.c'; then $(CYGPATH_W) 'create_tmpfile.c'; else $(CYGPATH_W) '$(srcdir)/create_tmpfile.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-create_tmpfile.Tpo $(DEPDIR)/libtests_a-create_tmpfile.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='create_tmpfile.c' object='libtests_a-create_tmpfile.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-create_tmpfile.obj `if test -f 'create_tmpfile.c'; then $(CYGPATH_W) 'create_tmpfile.c'; else $(CYGPATH_W) '$(srcdir)/create_tmpfile.c'; fi`
+
 libtests_a-errno2name.o: errno2name.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-errno2name.o -MD -MP -MF $(DEPDIR)/libtests_a-errno2name.Tpo -c -o libtests_a-errno2name.o `test -f 'errno2name.c' || echo '$(srcdir)/'`errno2name.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-errno2name.Tpo $(DEPDIR)/libtests_a-errno2name.Po
@@ -8454,6 +11313,20 @@ libtests_a-libsocketcall.obj: libsocketcall.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-libsocketcall.obj `if test -f 'libsocketcall.c'; then $(CYGPATH_W) 'libsocketcall.c'; else $(CYGPATH_W) '$(srcdir)/libsocketcall.c'; fi`
 
+libtests_a-lock_file.o: lock_file.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-lock_file.o -MD -MP -MF $(DEPDIR)/libtests_a-lock_file.Tpo -c -o libtests_a-lock_file.o `test -f 'lock_file.c' || echo '$(srcdir)/'`lock_file.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-lock_file.Tpo $(DEPDIR)/libtests_a-lock_file.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lock_file.c' object='libtests_a-lock_file.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-lock_file.o `test -f 'lock_file.c' || echo '$(srcdir)/'`lock_file.c
+
+libtests_a-lock_file.obj: lock_file.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-lock_file.obj -MD -MP -MF $(DEPDIR)/libtests_a-lock_file.Tpo -c -o libtests_a-lock_file.obj `if test -f 'lock_file.c'; then $(CYGPATH_W) 'lock_file.c'; else $(CYGPATH_W) '$(srcdir)/lock_file.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-lock_file.Tpo $(DEPDIR)/libtests_a-lock_file.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lock_file.c' object='libtests_a-lock_file.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-lock_file.obj `if test -f 'lock_file.c'; then $(CYGPATH_W) 'lock_file.c'; else $(CYGPATH_W) '$(srcdir)/lock_file.c'; fi`
+
 libtests_a-overflowuid.o: overflowuid.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-overflowuid.o -MD -MP -MF $(DEPDIR)/libtests_a-overflowuid.Tpo -c -o libtests_a-overflowuid.o `test -f 'overflowuid.c' || echo '$(srcdir)/'`overflowuid.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-overflowuid.Tpo $(DEPDIR)/libtests_a-overflowuid.Po
@@ -8468,6 +11341,20 @@ libtests_a-overflowuid.obj: overflowuid.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-overflowuid.obj `if test -f 'overflowuid.c'; then $(CYGPATH_W) 'overflowuid.c'; else $(CYGPATH_W) '$(srcdir)/overflowuid.c'; fi`
 
+libtests_a-pidns.o: pidns.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-pidns.o -MD -MP -MF $(DEPDIR)/libtests_a-pidns.Tpo -c -o libtests_a-pidns.o `test -f 'pidns.c' || echo '$(srcdir)/'`pidns.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-pidns.Tpo $(DEPDIR)/libtests_a-pidns.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pidns.c' object='libtests_a-pidns.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-pidns.o `test -f 'pidns.c' || echo '$(srcdir)/'`pidns.c
+
+libtests_a-pidns.obj: pidns.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-pidns.obj -MD -MP -MF $(DEPDIR)/libtests_a-pidns.Tpo -c -o libtests_a-pidns.obj `if test -f 'pidns.c'; then $(CYGPATH_W) 'pidns.c'; else $(CYGPATH_W) '$(srcdir)/pidns.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-pidns.Tpo $(DEPDIR)/libtests_a-pidns.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pidns.c' object='libtests_a-pidns.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-pidns.obj `if test -f 'pidns.c'; then $(CYGPATH_W) 'pidns.c'; else $(CYGPATH_W) '$(srcdir)/pidns.c'; fi`
+
 libtests_a-pipe_maxfd.o: pipe_maxfd.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-pipe_maxfd.o -MD -MP -MF $(DEPDIR)/libtests_a-pipe_maxfd.Tpo -c -o libtests_a-pipe_maxfd.o `test -f 'pipe_maxfd.c' || echo '$(srcdir)/'`pipe_maxfd.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-pipe_maxfd.Tpo $(DEPDIR)/libtests_a-pipe_maxfd.Po
@@ -8524,19 +11411,47 @@ libtests_a-printflags.obj: printflags.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-printflags.obj `if test -f 'printflags.c'; then $(CYGPATH_W) 'printflags.c'; else $(CYGPATH_W) '$(srcdir)/printflags.c'; fi`
 
-libtests_a-printxval.o: printxval.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-printxval.o -MD -MP -MF $(DEPDIR)/libtests_a-printxval.Tpo -c -o libtests_a-printxval.o `test -f 'printxval.c' || echo '$(srcdir)/'`printxval.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-printxval.Tpo $(DEPDIR)/libtests_a-printxval.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='printxval.c' object='libtests_a-printxval.o' libtool=no @AMDEPBACKSLASH@
+libtests_a-printxval-Xabbrev.o: printxval-Xabbrev.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-printxval-Xabbrev.o -MD -MP -MF $(DEPDIR)/libtests_a-printxval-Xabbrev.Tpo -c -o libtests_a-printxval-Xabbrev.o `test -f 'printxval-Xabbrev.c' || echo '$(srcdir)/'`printxval-Xabbrev.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-printxval-Xabbrev.Tpo $(DEPDIR)/libtests_a-printxval-Xabbrev.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='printxval-Xabbrev.c' object='libtests_a-printxval-Xabbrev.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-printxval-Xabbrev.o `test -f 'printxval-Xabbrev.c' || echo '$(srcdir)/'`printxval-Xabbrev.c
+
+libtests_a-printxval-Xabbrev.obj: printxval-Xabbrev.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-printxval-Xabbrev.obj -MD -MP -MF $(DEPDIR)/libtests_a-printxval-Xabbrev.Tpo -c -o libtests_a-printxval-Xabbrev.obj `if test -f 'printxval-Xabbrev.c'; then $(CYGPATH_W) 'printxval-Xabbrev.c'; else $(CYGPATH_W) '$(srcdir)/printxval-Xabbrev.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-printxval-Xabbrev.Tpo $(DEPDIR)/libtests_a-printxval-Xabbrev.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='printxval-Xabbrev.c' object='libtests_a-printxval-Xabbrev.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-printxval-Xabbrev.obj `if test -f 'printxval-Xabbrev.c'; then $(CYGPATH_W) 'printxval-Xabbrev.c'; else $(CYGPATH_W) '$(srcdir)/printxval-Xabbrev.c'; fi`
+
+libtests_a-printxval-Xraw.o: printxval-Xraw.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-printxval-Xraw.o -MD -MP -MF $(DEPDIR)/libtests_a-printxval-Xraw.Tpo -c -o libtests_a-printxval-Xraw.o `test -f 'printxval-Xraw.c' || echo '$(srcdir)/'`printxval-Xraw.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-printxval-Xraw.Tpo $(DEPDIR)/libtests_a-printxval-Xraw.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='printxval-Xraw.c' object='libtests_a-printxval-Xraw.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-printxval-Xraw.o `test -f 'printxval-Xraw.c' || echo '$(srcdir)/'`printxval-Xraw.c
+
+libtests_a-printxval-Xraw.obj: printxval-Xraw.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-printxval-Xraw.obj -MD -MP -MF $(DEPDIR)/libtests_a-printxval-Xraw.Tpo -c -o libtests_a-printxval-Xraw.obj `if test -f 'printxval-Xraw.c'; then $(CYGPATH_W) 'printxval-Xraw.c'; else $(CYGPATH_W) '$(srcdir)/printxval-Xraw.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-printxval-Xraw.Tpo $(DEPDIR)/libtests_a-printxval-Xraw.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='printxval-Xraw.c' object='libtests_a-printxval-Xraw.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-printxval-Xraw.obj `if test -f 'printxval-Xraw.c'; then $(CYGPATH_W) 'printxval-Xraw.c'; else $(CYGPATH_W) '$(srcdir)/printxval-Xraw.c'; fi`
+
+libtests_a-printxval-Xverbose.o: printxval-Xverbose.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-printxval-Xverbose.o -MD -MP -MF $(DEPDIR)/libtests_a-printxval-Xverbose.Tpo -c -o libtests_a-printxval-Xverbose.o `test -f 'printxval-Xverbose.c' || echo '$(srcdir)/'`printxval-Xverbose.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-printxval-Xverbose.Tpo $(DEPDIR)/libtests_a-printxval-Xverbose.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='printxval-Xverbose.c' object='libtests_a-printxval-Xverbose.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-printxval.o `test -f 'printxval.c' || echo '$(srcdir)/'`printxval.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-printxval-Xverbose.o `test -f 'printxval-Xverbose.c' || echo '$(srcdir)/'`printxval-Xverbose.c
 
-libtests_a-printxval.obj: printxval.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-printxval.obj -MD -MP -MF $(DEPDIR)/libtests_a-printxval.Tpo -c -o libtests_a-printxval.obj `if test -f 'printxval.c'; then $(CYGPATH_W) 'printxval.c'; else $(CYGPATH_W) '$(srcdir)/printxval.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-printxval.Tpo $(DEPDIR)/libtests_a-printxval.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='printxval.c' object='libtests_a-printxval.obj' libtool=no @AMDEPBACKSLASH@
+libtests_a-printxval-Xverbose.obj: printxval-Xverbose.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-printxval-Xverbose.obj -MD -MP -MF $(DEPDIR)/libtests_a-printxval-Xverbose.Tpo -c -o libtests_a-printxval-Xverbose.obj `if test -f 'printxval-Xverbose.c'; then $(CYGPATH_W) 'printxval-Xverbose.c'; else $(CYGPATH_W) '$(srcdir)/printxval-Xverbose.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-printxval-Xverbose.Tpo $(DEPDIR)/libtests_a-printxval-Xverbose.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='printxval-Xverbose.c' object='libtests_a-printxval-Xverbose.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-printxval.obj `if test -f 'printxval.c'; then $(CYGPATH_W) 'printxval.c'; else $(CYGPATH_W) '$(srcdir)/printxval.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-printxval-Xverbose.obj `if test -f 'printxval-Xverbose.c'; then $(CYGPATH_W) 'printxval-Xverbose.c'; else $(CYGPATH_W) '$(srcdir)/printxval-Xverbose.c'; fi`
 
 libtests_a-signal2name.o: signal2name.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-signal2name.o -MD -MP -MF $(DEPDIR)/libtests_a-signal2name.Tpo -c -o libtests_a-signal2name.o `test -f 'signal2name.c' || echo '$(srcdir)/'`signal2name.c
@@ -8580,6 +11495,20 @@ libtests_a-sprintrc.obj: sprintrc.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-sprintrc.obj `if test -f 'sprintrc.c'; then $(CYGPATH_W) 'sprintrc.c'; else $(CYGPATH_W) '$(srcdir)/sprintrc.c'; fi`
 
+libtests_a-status.o: status.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-status.o -MD -MP -MF $(DEPDIR)/libtests_a-status.Tpo -c -o libtests_a-status.o `test -f 'status.c' || echo '$(srcdir)/'`status.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-status.Tpo $(DEPDIR)/libtests_a-status.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='status.c' object='libtests_a-status.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-status.o `test -f 'status.c' || echo '$(srcdir)/'`status.c
+
+libtests_a-status.obj: status.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-status.obj -MD -MP -MF $(DEPDIR)/libtests_a-status.Tpo -c -o libtests_a-status.obj `if test -f 'status.c'; then $(CYGPATH_W) 'status.c'; else $(CYGPATH_W) '$(srcdir)/status.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-status.Tpo $(DEPDIR)/libtests_a-status.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='status.c' object='libtests_a-status.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-status.obj `if test -f 'status.c'; then $(CYGPATH_W) 'status.c'; else $(CYGPATH_W) '$(srcdir)/status.c'; fi`
+
 libtests_a-tail_alloc.o: tail_alloc.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-tail_alloc.o -MD -MP -MF $(DEPDIR)/libtests_a-tail_alloc.Tpo -c -o libtests_a-tail_alloc.o `test -f 'tail_alloc.c' || echo '$(srcdir)/'`tail_alloc.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-tail_alloc.Tpo $(DEPDIR)/libtests_a-tail_alloc.Po
@@ -8650,6 +11579,20 @@ libtests_a-tprintf.obj: tprintf.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-tprintf.obj `if test -f 'tprintf.c'; then $(CYGPATH_W) 'tprintf.c'; else $(CYGPATH_W) '$(srcdir)/tprintf.c'; fi`
 
+libtests_a-xmalloc_for_tests.o: xmalloc_for_tests.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-xmalloc_for_tests.o -MD -MP -MF $(DEPDIR)/libtests_a-xmalloc_for_tests.Tpo -c -o libtests_a-xmalloc_for_tests.o `test -f 'xmalloc_for_tests.c' || echo '$(srcdir)/'`xmalloc_for_tests.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-xmalloc_for_tests.Tpo $(DEPDIR)/libtests_a-xmalloc_for_tests.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='xmalloc_for_tests.c' object='libtests_a-xmalloc_for_tests.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-xmalloc_for_tests.o `test -f 'xmalloc_for_tests.c' || echo '$(srcdir)/'`xmalloc_for_tests.c
+
+libtests_a-xmalloc_for_tests.obj: xmalloc_for_tests.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-xmalloc_for_tests.obj -MD -MP -MF $(DEPDIR)/libtests_a-xmalloc_for_tests.Tpo -c -o libtests_a-xmalloc_for_tests.obj `if test -f 'xmalloc_for_tests.c'; then $(CYGPATH_W) 'xmalloc_for_tests.c'; else $(CYGPATH_W) '$(srcdir)/xmalloc_for_tests.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-xmalloc_for_tests.Tpo $(DEPDIR)/libtests_a-xmalloc_for_tests.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='xmalloc_for_tests.c' object='libtests_a-xmalloc_for_tests.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-xmalloc_for_tests.obj `if test -f 'xmalloc_for_tests.c'; then $(CYGPATH_W) 'xmalloc_for_tests.c'; else $(CYGPATH_W) '$(srcdir)/xmalloc_for_tests.c'; fi`
+
 fstat64-fstat64.o: fstat64.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fstat64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fstat64-fstat64.o -MD -MP -MF $(DEPDIR)/fstat64-fstat64.Tpo -c -o fstat64-fstat64.o `test -f 'fstat64.c' || echo '$(srcdir)/'`fstat64.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/fstat64-fstat64.Tpo $(DEPDIR)/fstat64-fstat64.Po
@@ -8860,6 +11803,34 @@ statfs-statfs.obj: statfs.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(statfs_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o statfs-statfs.obj `if test -f 'statfs.c'; then $(CYGPATH_W) 'statfs.c'; else $(CYGPATH_W) '$(srcdir)/statfs.c'; fi`
 
+trie_test-trie_test.o: trie_test.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_test_CPPFLAGS) $(CPPFLAGS) $(trie_test_CFLAGS) $(CFLAGS) -MT trie_test-trie_test.o -MD -MP -MF $(DEPDIR)/trie_test-trie_test.Tpo -c -o trie_test-trie_test.o `test -f 'trie_test.c' || echo '$(srcdir)/'`trie_test.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/trie_test-trie_test.Tpo $(DEPDIR)/trie_test-trie_test.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='trie_test.c' object='trie_test-trie_test.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_test_CPPFLAGS) $(CPPFLAGS) $(trie_test_CFLAGS) $(CFLAGS) -c -o trie_test-trie_test.o `test -f 'trie_test.c' || echo '$(srcdir)/'`trie_test.c
+
+trie_test-trie_test.obj: trie_test.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_test_CPPFLAGS) $(CPPFLAGS) $(trie_test_CFLAGS) $(CFLAGS) -MT trie_test-trie_test.obj -MD -MP -MF $(DEPDIR)/trie_test-trie_test.Tpo -c -o trie_test-trie_test.obj `if test -f 'trie_test.c'; then $(CYGPATH_W) 'trie_test.c'; else $(CYGPATH_W) '$(srcdir)/trie_test.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/trie_test-trie_test.Tpo $(DEPDIR)/trie_test-trie_test.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='trie_test.c' object='trie_test-trie_test.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_test_CPPFLAGS) $(CPPFLAGS) $(trie_test_CFLAGS) $(CFLAGS) -c -o trie_test-trie_test.obj `if test -f 'trie_test.c'; then $(CYGPATH_W) 'trie_test.c'; else $(CYGPATH_W) '$(srcdir)/trie_test.c'; fi`
+
+trie_test-trie_for_tests.o: trie_for_tests.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_test_CPPFLAGS) $(CPPFLAGS) $(trie_test_CFLAGS) $(CFLAGS) -MT trie_test-trie_for_tests.o -MD -MP -MF $(DEPDIR)/trie_test-trie_for_tests.Tpo -c -o trie_test-trie_for_tests.o `test -f 'trie_for_tests.c' || echo '$(srcdir)/'`trie_for_tests.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/trie_test-trie_for_tests.Tpo $(DEPDIR)/trie_test-trie_for_tests.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='trie_for_tests.c' object='trie_test-trie_for_tests.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_test_CPPFLAGS) $(CPPFLAGS) $(trie_test_CFLAGS) $(CFLAGS) -c -o trie_test-trie_for_tests.o `test -f 'trie_for_tests.c' || echo '$(srcdir)/'`trie_for_tests.c
+
+trie_test-trie_for_tests.obj: trie_for_tests.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_test_CPPFLAGS) $(CPPFLAGS) $(trie_test_CFLAGS) $(CFLAGS) -MT trie_test-trie_for_tests.obj -MD -MP -MF $(DEPDIR)/trie_test-trie_for_tests.Tpo -c -o trie_test-trie_for_tests.obj `if test -f 'trie_for_tests.c'; then $(CYGPATH_W) 'trie_for_tests.c'; else $(CYGPATH_W) '$(srcdir)/trie_for_tests.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/trie_test-trie_for_tests.Tpo $(DEPDIR)/trie_test-trie_for_tests.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='trie_for_tests.c' object='trie_test-trie_for_tests.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_test_CPPFLAGS) $(CPPFLAGS) $(trie_test_CFLAGS) $(CFLAGS) -c -o trie_test-trie_for_tests.obj `if test -f 'trie_for_tests.c'; then $(CYGPATH_W) 'trie_for_tests.c'; else $(CYGPATH_W) '$(srcdir)/trie_for_tests.c'; fi`
+
 truncate64-truncate64.o: truncate64.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(truncate64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT truncate64-truncate64.o -MD -MP -MF $(DEPDIR)/truncate64-truncate64.Tpo -c -o truncate64-truncate64.o `test -f 'truncate64.c' || echo '$(srcdir)/'`truncate64.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/truncate64-truncate64.Tpo $(DEPDIR)/truncate64-truncate64.Po
@@ -9052,7 +12023,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
          test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);               \
        fi;                                                             \
        echo "$${col}$$br$${std}";                                      \
-       echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";   \
+       echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
        echo "$${col}$$br$${std}";                                      \
        create_testsuite_report --maybe-color;                          \
        echo "$$col$$br$$std";                                          \
@@ -9220,10 +12191,12 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/attach-p-cmd-cmd.Po
        -rm -f ./$(DEPDIR)/attach-p-cmd-p.Po
        -rm -f ./$(DEPDIR)/block_reset_raise_run.Po
+       -rm -f ./$(DEPDIR)/block_reset_run.Po
        -rm -f ./$(DEPDIR)/bpf-obj_get_info_by_fd-prog-v.Po
        -rm -f ./$(DEPDIR)/bpf-obj_get_info_by_fd-prog.Po
        -rm -f ./$(DEPDIR)/bpf-obj_get_info_by_fd-v.Po
        -rm -f ./$(DEPDIR)/bpf-obj_get_info_by_fd.Po
+       -rm -f ./$(DEPDIR)/bpf-success-long-y.Po
        -rm -f ./$(DEPDIR)/bpf-success-v.Po
        -rm -f ./$(DEPDIR)/bpf-success.Po
        -rm -f ./$(DEPDIR)/bpf-v.Po
@@ -9241,16 +12214,48 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/clock_adjtime.Po
        -rm -f ./$(DEPDIR)/clock_nanosleep.Po
        -rm -f ./$(DEPDIR)/clock_xettime.Po
+       -rm -f ./$(DEPDIR)/clone-flags.Po
+       -rm -f ./$(DEPDIR)/clone3-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/clone3-Xraw.Po
+       -rm -f ./$(DEPDIR)/clone3-Xverbose.Po
+       -rm -f ./$(DEPDIR)/clone3-success-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/clone3-success-Xraw.Po
+       -rm -f ./$(DEPDIR)/clone3-success-Xverbose.Po
+       -rm -f ./$(DEPDIR)/clone3-success.Po
+       -rm -f ./$(DEPDIR)/clone3.Po
+       -rm -f ./$(DEPDIR)/clone_parent--quiet-exit.Po
+       -rm -f ./$(DEPDIR)/clone_parent-q.Po
+       -rm -f ./$(DEPDIR)/clone_parent-qq.Po
        -rm -f ./$(DEPDIR)/clone_parent.Po
+       -rm -f ./$(DEPDIR)/clone_ptrace--quiet-attach.Po
+       -rm -f ./$(DEPDIR)/clone_ptrace--quiet-exit.Po
+       -rm -f ./$(DEPDIR)/clone_ptrace-q.Po
+       -rm -f ./$(DEPDIR)/clone_ptrace-qq.Po
        -rm -f ./$(DEPDIR)/clone_ptrace.Po
+       -rm -f ./$(DEPDIR)/close_range-P.Po
+       -rm -f ./$(DEPDIR)/close_range-y.Po
+       -rm -f ./$(DEPDIR)/close_range-yy.Po
+       -rm -f ./$(DEPDIR)/close_range.Po
        -rm -f ./$(DEPDIR)/copy_file_range.Po
        -rm -f ./$(DEPDIR)/count-f.Po
        -rm -f ./$(DEPDIR)/creat.Po
        -rm -f ./$(DEPDIR)/delay.Po
        -rm -f ./$(DEPDIR)/delete_module.Po
+       -rm -f ./$(DEPDIR)/dev--decode-fds-dev.Po
+       -rm -f ./$(DEPDIR)/dev--decode-fds-path.Po
+       -rm -f ./$(DEPDIR)/dev--decode-fds-socket.Po
        -rm -f ./$(DEPDIR)/dev-yy.Po
+       -rm -f ./$(DEPDIR)/dup-P.Po
+       -rm -f ./$(DEPDIR)/dup-y.Po
+       -rm -f ./$(DEPDIR)/dup-yy.Po
        -rm -f ./$(DEPDIR)/dup.Po
+       -rm -f ./$(DEPDIR)/dup2-P.Po
+       -rm -f ./$(DEPDIR)/dup2-y.Po
+       -rm -f ./$(DEPDIR)/dup2-yy.Po
        -rm -f ./$(DEPDIR)/dup2.Po
+       -rm -f ./$(DEPDIR)/dup3-P.Po
+       -rm -f ./$(DEPDIR)/dup3-y.Po
+       -rm -f ./$(DEPDIR)/dup3-yy.Po
        -rm -f ./$(DEPDIR)/dup3.Po
        -rm -f ./$(DEPDIR)/epoll_create.Po
        -rm -f ./$(DEPDIR)/epoll_create1.Po
@@ -9263,7 +12268,14 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/execve.Po
        -rm -f ./$(DEPDIR)/execveat-v.Po
        -rm -f ./$(DEPDIR)/execveat.Po
+       -rm -f ./$(DEPDIR)/faccessat-P.Po
+       -rm -f ./$(DEPDIR)/faccessat-y.Po
+       -rm -f ./$(DEPDIR)/faccessat-yy.Po
        -rm -f ./$(DEPDIR)/faccessat.Po
+       -rm -f ./$(DEPDIR)/faccessat2-P.Po
+       -rm -f ./$(DEPDIR)/faccessat2-y.Po
+       -rm -f ./$(DEPDIR)/faccessat2-yy.Po
+       -rm -f ./$(DEPDIR)/faccessat2.Po
        -rm -f ./$(DEPDIR)/fadvise64.Po
        -rm -f ./$(DEPDIR)/fadvise64_64.Po
        -rm -f ./$(DEPDIR)/fallocate.Po
@@ -9278,16 +12290,27 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/fchown.Po
        -rm -f ./$(DEPDIR)/fchown32.Po
        -rm -f ./$(DEPDIR)/fchownat.Po
+       -rm -f ./$(DEPDIR)/fcntl--pidns-translation.Po
        -rm -f ./$(DEPDIR)/fcntl.Po
+       -rm -f ./$(DEPDIR)/fcntl64--pidns-translation.Po
        -rm -f ./$(DEPDIR)/fcntl64.Po
        -rm -f ./$(DEPDIR)/fdatasync.Po
        -rm -f ./$(DEPDIR)/fflush.Po
        -rm -f ./$(DEPDIR)/file_handle.Po
        -rm -f ./$(DEPDIR)/file_ioctl.Po
        -rm -f ./$(DEPDIR)/filter-unavailable.Po
+       -rm -f ./$(DEPDIR)/filter_seccomp-flag.Po
+       -rm -f ./$(DEPDIR)/filter_seccomp-perf.Po
        -rm -f ./$(DEPDIR)/finit_module.Po
        -rm -f ./$(DEPDIR)/flock.Po
+       -rm -f ./$(DEPDIR)/fork--pidns-translation.Po
        -rm -f ./$(DEPDIR)/fork-f.Po
+       -rm -f ./$(DEPDIR)/fsconfig-P.Po
+       -rm -f ./$(DEPDIR)/fsconfig.Po
+       -rm -f ./$(DEPDIR)/fsmount.Po
+       -rm -f ./$(DEPDIR)/fsopen.Po
+       -rm -f ./$(DEPDIR)/fspick-P.Po
+       -rm -f ./$(DEPDIR)/fspick.Po
        -rm -f ./$(DEPDIR)/fstat-Xabbrev.Po
        -rm -f ./$(DEPDIR)/fstat-Xraw.Po
        -rm -f ./$(DEPDIR)/fstat-Xverbose.Po
@@ -9306,9 +12329,12 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/futex.Po
        -rm -f ./$(DEPDIR)/futimesat.Po
        -rm -f ./$(DEPDIR)/get_mempolicy.Po
+       -rm -f ./$(DEPDIR)/get_process_reaper.Po
        -rm -f ./$(DEPDIR)/getcpu.Po
        -rm -f ./$(DEPDIR)/getcwd.Po
+       -rm -f ./$(DEPDIR)/getdents-v.Po
        -rm -f ./$(DEPDIR)/getdents.Po
+       -rm -f ./$(DEPDIR)/getdents64-v.Po
        -rm -f ./$(DEPDIR)/getdents64.Po
        -rm -f ./$(DEPDIR)/getegid.Po
        -rm -f ./$(DEPDIR)/getegid32.Po
@@ -9319,7 +12345,9 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/getgroups.Po
        -rm -f ./$(DEPDIR)/getgroups32.Po
        -rm -f ./$(DEPDIR)/getpeername.Po
+       -rm -f ./$(DEPDIR)/getpgrp--pidns-translation.Po
        -rm -f ./$(DEPDIR)/getpgrp.Po
+       -rm -f ./$(DEPDIR)/getpid--pidns-translation.Po
        -rm -f ./$(DEPDIR)/getpid.Po
        -rm -f ./$(DEPDIR)/getppid.Po
        -rm -f ./$(DEPDIR)/getrandom.Po
@@ -9329,30 +12357,66 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/getresuid32.Po
        -rm -f ./$(DEPDIR)/getrlimit.Po
        -rm -f ./$(DEPDIR)/getrusage.Po
+       -rm -f ./$(DEPDIR)/getsid--pidns-translation.Po
        -rm -f ./$(DEPDIR)/getsid.Po
        -rm -f ./$(DEPDIR)/getsockname.Po
+       -rm -f ./$(DEPDIR)/gettid--pidns-translation.Po
        -rm -f ./$(DEPDIR)/gettid.Po
        -rm -f ./$(DEPDIR)/getuid.Po
        -rm -f ./$(DEPDIR)/getuid32.Po
-       -rm -f ./$(DEPDIR)/getxxid.Po
+       -rm -f ./$(DEPDIR)/getxgid.Po
+       -rm -f ./$(DEPDIR)/getxpid.Po
+       -rm -f ./$(DEPDIR)/getxuid.Po
        -rm -f ./$(DEPDIR)/group_req.Po
        -rm -f ./$(DEPDIR)/inet-cmsg.Po
        -rm -f ./$(DEPDIR)/init_module.Po
        -rm -f ./$(DEPDIR)/inject-nf.Po
        -rm -f ./$(DEPDIR)/inotify.Po
+       -rm -f ./$(DEPDIR)/inotify_init-y.Po
+       -rm -f ./$(DEPDIR)/inotify_init.Po
+       -rm -f ./$(DEPDIR)/inotify_init1-y.Po
        -rm -f ./$(DEPDIR)/inotify_init1.Po
        -rm -f ./$(DEPDIR)/int_0x80.Po
        -rm -f ./$(DEPDIR)/io_uring_enter.Po
        -rm -f ./$(DEPDIR)/io_uring_register.Po
        -rm -f ./$(DEPDIR)/io_uring_setup.Po
        -rm -f ./$(DEPDIR)/ioctl.Po
+       -rm -f ./$(DEPDIR)/ioctl_block--pidns-translation.Po
        -rm -f ./$(DEPDIR)/ioctl_block.Po
        -rm -f ./$(DEPDIR)/ioctl_dm-v.Po
        -rm -f ./$(DEPDIR)/ioctl_dm.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-success-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-success-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-success-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-success-v-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-success-v-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-success-v-Xverbose.Po
        -rm -f ./$(DEPDIR)/ioctl_evdev-success-v.Po
        -rm -f ./$(DEPDIR)/ioctl_evdev-success.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-v-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-v-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-v-Xverbose.Po
        -rm -f ./$(DEPDIR)/ioctl_evdev-v.Po
        -rm -f ./$(DEPDIR)/ioctl_evdev.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-success-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-success-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-success-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-success-v-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-success-v-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-success-v-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-success-v.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-success.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-v-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-v-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-v-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-v.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio.Po
        -rm -f ./$(DEPDIR)/ioctl_inotify.Po
        -rm -f ./$(DEPDIR)/ioctl_kvm_run-v.Po
        -rm -f ./$(DEPDIR)/ioctl_kvm_run.Po
@@ -9373,10 +12437,28 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/ioctl_sg_io_v3.Po
        -rm -f ./$(DEPDIR)/ioctl_sg_io_v4.Po
        -rm -f ./$(DEPDIR)/ioctl_sock_gifconf.Po
+       -rm -f ./$(DEPDIR)/ioctl_tee.Po
        -rm -f ./$(DEPDIR)/ioctl_uffdio.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-success-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-success-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-success-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-success-v-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-success-v-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-success-v-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-success-v.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-success.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-v-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-v-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-v-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-v.Po
        -rm -f ./$(DEPDIR)/ioctl_v4l2.Po
+       -rm -f ./$(DEPDIR)/ioctl_watchdog.Po
        -rm -f ./$(DEPDIR)/ioperm.Po
        -rm -f ./$(DEPDIR)/iopl.Po
+       -rm -f ./$(DEPDIR)/ioprio--pidns-translation.Po
        -rm -f ./$(DEPDIR)/ioprio-Xabbrev.Po
        -rm -f ./$(DEPDIR)/ioprio-Xraw.Po
        -rm -f ./$(DEPDIR)/ioprio-Xverbose.Po
@@ -9400,6 +12482,7 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/ipc_shm-Xverbose.Po
        -rm -f ./$(DEPDIR)/ipc_shm.Po
        -rm -f ./$(DEPDIR)/is_linux_mips_n64.Po
+       -rm -f ./$(DEPDIR)/kcmp-y--pidns-translation.Po
        -rm -f ./$(DEPDIR)/kcmp-y.Po
        -rm -f ./$(DEPDIR)/kcmp.Po
        -rm -f ./$(DEPDIR)/kern_features.Po
@@ -9413,12 +12496,14 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/keyctl-Xraw.Po
        -rm -f ./$(DEPDIR)/keyctl-Xverbose.Po
        -rm -f ./$(DEPDIR)/keyctl.Po
+       -rm -f ./$(DEPDIR)/kill--pidns-translation.Po
        -rm -f ./$(DEPDIR)/kill.Po
        -rm -f ./$(DEPDIR)/kill_child.Po
        -rm -f ./$(DEPDIR)/ksysent.Po
        -rm -f ./$(DEPDIR)/lchown.Po
        -rm -f ./$(DEPDIR)/lchown32.Po
        -rm -f ./$(DEPDIR)/libtests_a-create_nl_socket.Po
+       -rm -f ./$(DEPDIR)/libtests_a-create_tmpfile.Po
        -rm -f ./$(DEPDIR)/libtests_a-errno2name.Po
        -rm -f ./$(DEPDIR)/libtests_a-error_msg.Po
        -rm -f ./$(DEPDIR)/libtests_a-fill_memory.Po
@@ -9430,20 +12515,26 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/libtests_a-inode_of_sockfd.Po
        -rm -f ./$(DEPDIR)/libtests_a-libmmsg.Po
        -rm -f ./$(DEPDIR)/libtests_a-libsocketcall.Po
+       -rm -f ./$(DEPDIR)/libtests_a-lock_file.Po
        -rm -f ./$(DEPDIR)/libtests_a-overflowuid.Po
+       -rm -f ./$(DEPDIR)/libtests_a-pidns.Po
        -rm -f ./$(DEPDIR)/libtests_a-pipe_maxfd.Po
        -rm -f ./$(DEPDIR)/libtests_a-print_quoted_string.Po
        -rm -f ./$(DEPDIR)/libtests_a-print_time.Po
        -rm -f ./$(DEPDIR)/libtests_a-printflags.Po
-       -rm -f ./$(DEPDIR)/libtests_a-printxval.Po
+       -rm -f ./$(DEPDIR)/libtests_a-printxval-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/libtests_a-printxval-Xraw.Po
+       -rm -f ./$(DEPDIR)/libtests_a-printxval-Xverbose.Po
        -rm -f ./$(DEPDIR)/libtests_a-signal2name.Po
        -rm -f ./$(DEPDIR)/libtests_a-skip_unavailable.Po
        -rm -f ./$(DEPDIR)/libtests_a-sprintrc.Po
+       -rm -f ./$(DEPDIR)/libtests_a-status.Po
        -rm -f ./$(DEPDIR)/libtests_a-tail_alloc.Po
        -rm -f ./$(DEPDIR)/libtests_a-test_printpath.Po
        -rm -f ./$(DEPDIR)/libtests_a-test_printstrn.Po
        -rm -f ./$(DEPDIR)/libtests_a-test_ucopy.Po
        -rm -f ./$(DEPDIR)/libtests_a-tprintf.Po
+       -rm -f ./$(DEPDIR)/libtests_a-xmalloc_for_tests.Po
        -rm -f ./$(DEPDIR)/link.Po
        -rm -f ./$(DEPDIR)/linkat.Po
        -rm -f ./$(DEPDIR)/list_sigaction_signum.Po
@@ -9455,12 +12546,18 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/lstat.Po
        -rm -f ./$(DEPDIR)/lstat64-lstat64.Po
        -rm -f ./$(DEPDIR)/madvise.Po
+       -rm -f ./$(DEPDIR)/maybe_switch_current_tcp--quiet-thread-execve.Po
+       -rm -f ./$(DEPDIR)/maybe_switch_current_tcp.Po
+       -rm -f ./$(DEPDIR)/mbind-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/mbind-Xraw.Po
+       -rm -f ./$(DEPDIR)/mbind-Xverbose.Po
        -rm -f ./$(DEPDIR)/mbind.Po
        -rm -f ./$(DEPDIR)/membarrier.Po
        -rm -f ./$(DEPDIR)/memfd_create-Xabbrev.Po
        -rm -f ./$(DEPDIR)/memfd_create-Xraw.Po
        -rm -f ./$(DEPDIR)/memfd_create-Xverbose.Po
        -rm -f ./$(DEPDIR)/memfd_create.Po
+       -rm -f ./$(DEPDIR)/migrate_pages--pidns-translation.Po
        -rm -f ./$(DEPDIR)/migrate_pages.Po
        -rm -f ./$(DEPDIR)/mincore.Po
        -rm -f ./$(DEPDIR)/mkdir.Po
@@ -9487,6 +12584,9 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/mount-Xraw.Po
        -rm -f ./$(DEPDIR)/mount-Xverbose.Po
        -rm -f ./$(DEPDIR)/mount.Po
+       -rm -f ./$(DEPDIR)/move_mount-P.Po
+       -rm -f ./$(DEPDIR)/move_mount.Po
+       -rm -f ./$(DEPDIR)/move_pages--pidns-translation.Po
        -rm -f ./$(DEPDIR)/move_pages-Xabbrev.Po
        -rm -f ./$(DEPDIR)/move_pages-Xraw.Po
        -rm -f ./$(DEPDIR)/move_pages-Xverbose.Po
@@ -9500,12 +12600,17 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/msg_name.Po
        -rm -f ./$(DEPDIR)/munlockall.Po
        -rm -f ./$(DEPDIR)/nanosleep.Po
+       -rm -f ./$(DEPDIR)/net--decode-fds-dev-netlink.Po
+       -rm -f ./$(DEPDIR)/net--decode-fds-none-netlink.Po
+       -rm -f ./$(DEPDIR)/net--decode-fds-path-netlink.Po
+       -rm -f ./$(DEPDIR)/net--decode-fds-socket-netlink.Po
        -rm -f ./$(DEPDIR)/net-accept-connect.Po
        -rm -f ./$(DEPDIR)/net-icmp_filter.Po
        -rm -f ./$(DEPDIR)/net-packet_mreq-Xabbrev.Po
        -rm -f ./$(DEPDIR)/net-packet_mreq-Xraw.Po
        -rm -f ./$(DEPDIR)/net-packet_mreq-Xverbose.Po
        -rm -f ./$(DEPDIR)/net-packet_mreq.Po
+       -rm -f ./$(DEPDIR)/net-sockaddr--pidns-translation.Po
        -rm -f ./$(DEPDIR)/net-sockaddr.Po
        -rm -f ./$(DEPDIR)/net-tpacket_req.Po
        -rm -f ./$(DEPDIR)/net-tpacket_stats-success.Po
@@ -9515,6 +12620,7 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/net-yy-inet6.Po
        -rm -f ./$(DEPDIR)/net-yy-netlink.Po
        -rm -f ./$(DEPDIR)/net-yy-unix.Po
+       -rm -f ./$(DEPDIR)/netlink_audit--pidns-translation.Po
        -rm -f ./$(DEPDIR)/netlink_audit.Po
        -rm -f ./$(DEPDIR)/netlink_crypto.Po
        -rm -f ./$(DEPDIR)/netlink_generic.Po
@@ -9552,6 +12658,7 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/nlattr_ifla_brport.Po
        -rm -f ./$(DEPDIR)/nlattr_ifla_linkinfo.Po
        -rm -f ./$(DEPDIR)/nlattr_ifla_port.Po
+       -rm -f ./$(DEPDIR)/nlattr_ifla_xdp-y.Po
        -rm -f ./$(DEPDIR)/nlattr_ifla_xdp.Po
        -rm -f ./$(DEPDIR)/nlattr_inet_diag_msg.Po
        -rm -f ./$(DEPDIR)/nlattr_inet_diag_req_compat.Po
@@ -9588,7 +12695,19 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/oldselect.Po
        -rm -f ./$(DEPDIR)/oldstat.Po
        -rm -f ./$(DEPDIR)/open.Po
+       -rm -f ./$(DEPDIR)/open_tree-P.Po
+       -rm -f ./$(DEPDIR)/open_tree.Po
        -rm -f ./$(DEPDIR)/openat.Po
+       -rm -f ./$(DEPDIR)/openat2-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/openat2-Xraw.Po
+       -rm -f ./$(DEPDIR)/openat2-Xverbose.Po
+       -rm -f ./$(DEPDIR)/openat2-v-y-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/openat2-v-y-Xraw.Po
+       -rm -f ./$(DEPDIR)/openat2-v-y-Xverbose.Po
+       -rm -f ./$(DEPDIR)/openat2-v-y.Po
+       -rm -f ./$(DEPDIR)/openat2-v.Po
+       -rm -f ./$(DEPDIR)/openat2-y.Po
+       -rm -f ./$(DEPDIR)/openat2.Po
        -rm -f ./$(DEPDIR)/orphaned_process_group.Po
        -rm -f ./$(DEPDIR)/osf_utimes.Po
        -rm -f ./$(DEPDIR)/pause.Po
@@ -9600,7 +12719,20 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/personality-Xraw.Po
        -rm -f ./$(DEPDIR)/personality-Xverbose.Po
        -rm -f ./$(DEPDIR)/personality.Po
+       -rm -f ./$(DEPDIR)/pidfd_getfd-y.Po
+       -rm -f ./$(DEPDIR)/pidfd_getfd-yy.Po
+       -rm -f ./$(DEPDIR)/pidfd_getfd.Po
+       -rm -f ./$(DEPDIR)/pidfd_open--decode-fd-path.Po
+       -rm -f ./$(DEPDIR)/pidfd_open--decode-fd-pidfd.Po
+       -rm -f ./$(DEPDIR)/pidfd_open--decode-fd-socket.Po
+       -rm -f ./$(DEPDIR)/pidfd_open--pidns-translation.Po
+       -rm -f ./$(DEPDIR)/pidfd_open-P.Po
+       -rm -f ./$(DEPDIR)/pidfd_open-y.Po
+       -rm -f ./$(DEPDIR)/pidfd_open-yy.Po
+       -rm -f ./$(DEPDIR)/pidfd_open.Po
+       -rm -f ./$(DEPDIR)/pidfd_send_signal--pidns-translation.Po
        -rm -f ./$(DEPDIR)/pidfd_send_signal.Po
+       -rm -f ./$(DEPDIR)/pidns-cache.Po
        -rm -f ./$(DEPDIR)/pipe.Po
        -rm -f ./$(DEPDIR)/pipe2.Po
        -rm -f ./$(DEPDIR)/pkey_alloc.Po
@@ -9627,6 +12759,7 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/preadv2-pwritev2.Po
        -rm -f ./$(DEPDIR)/preadv_pwritev-preadv-pwritev.Po
        -rm -f ./$(DEPDIR)/print_maxfd.Po
+       -rm -f ./$(DEPDIR)/print_ppid_tracerpid.Po
        -rm -f ./$(DEPDIR)/printpath-umovestr-peekdata.Po
        -rm -f ./$(DEPDIR)/printpath-umovestr-undumpable.Po
        -rm -f ./$(DEPDIR)/printpath-umovestr.Po
@@ -9637,8 +12770,11 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/printstrn-umoven-peekdata.Po
        -rm -f ./$(DEPDIR)/printstrn-umoven-undumpable.Po
        -rm -f ./$(DEPDIR)/printstrn-umoven.Po
+       -rm -f ./$(DEPDIR)/prlimit64--pidns-translation.Po
        -rm -f ./$(DEPDIR)/prlimit64.Po
+       -rm -f ./$(DEPDIR)/process_vm_readv--pidns-translation.Po
        -rm -f ./$(DEPDIR)/process_vm_readv.Po
+       -rm -f ./$(DEPDIR)/process_vm_writev--pidns-translation.Po
        -rm -f ./$(DEPDIR)/process_vm_writev.Po
        -rm -f ./$(DEPDIR)/pselect6.Po
        -rm -f ./$(DEPDIR)/ptrace.Po
@@ -9667,6 +12803,8 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/readlinkat.Po
        -rm -f ./$(DEPDIR)/readv.Po
        -rm -f ./$(DEPDIR)/reboot.Po
+       -rm -f ./$(DEPDIR)/recv-MSG_TRUNC.Po
+       -rm -f ./$(DEPDIR)/recvfrom-MSG_TRUNC.Po
        -rm -f ./$(DEPDIR)/recvfrom.Po
        -rm -f ./$(DEPDIR)/recvmmsg-timeout.Po
        -rm -f ./$(DEPDIR)/recvmsg.Po
@@ -9685,10 +12823,12 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/rt_sigaction.Po
        -rm -f ./$(DEPDIR)/rt_sigpending.Po
        -rm -f ./$(DEPDIR)/rt_sigprocmask.Po
+       -rm -f ./$(DEPDIR)/rt_sigqueueinfo--pidns-translation.Po
        -rm -f ./$(DEPDIR)/rt_sigqueueinfo.Po
        -rm -f ./$(DEPDIR)/rt_sigreturn.Po
        -rm -f ./$(DEPDIR)/rt_sigsuspend.Po
        -rm -f ./$(DEPDIR)/rt_sigtimedwait.Po
+       -rm -f ./$(DEPDIR)/rt_tgsigqueueinfo--pidns-translation.Po
        -rm -f ./$(DEPDIR)/rt_tgsigqueueinfo.Po
        -rm -f ./$(DEPDIR)/run_expect_termsig.Po
        -rm -f ./$(DEPDIR)/s390_guarded_storage-v.Po
@@ -9699,9 +12839,13 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/s390_sthyi.Po
        -rm -f ./$(DEPDIR)/sched_get_priority_mxx.Po
        -rm -f ./$(DEPDIR)/sched_rr_get_interval.Po
+       -rm -f ./$(DEPDIR)/sched_xetaffinity--pidns-translation.Po
        -rm -f ./$(DEPDIR)/sched_xetaffinity.Po
+       -rm -f ./$(DEPDIR)/sched_xetattr--pidns-translation.Po
        -rm -f ./$(DEPDIR)/sched_xetattr.Po
+       -rm -f ./$(DEPDIR)/sched_xetparam--pidns-translation.Po
        -rm -f ./$(DEPDIR)/sched_xetparam.Po
+       -rm -f ./$(DEPDIR)/sched_xetscheduler--pidns-translation.Po
        -rm -f ./$(DEPDIR)/sched_xetscheduler.Po
        -rm -f ./$(DEPDIR)/sched_yield.Po
        -rm -f ./$(DEPDIR)/scm_rights.Po
@@ -9711,9 +12855,14 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/seccomp_get_action_avail.Po
        -rm -f ./$(DEPDIR)/select-P.Po
        -rm -f ./$(DEPDIR)/select.Po
+       -rm -f ./$(DEPDIR)/semop-indirect.Po
        -rm -f ./$(DEPDIR)/semop.Po
+       -rm -f ./$(DEPDIR)/semtimedop.Po
        -rm -f ./$(DEPDIR)/sendfile.Po
        -rm -f ./$(DEPDIR)/sendfile64.Po
+       -rm -f ./$(DEPDIR)/set_mempolicy-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/set_mempolicy-Xraw.Po
+       -rm -f ./$(DEPDIR)/set_mempolicy-Xverbose.Po
        -rm -f ./$(DEPDIR)/set_mempolicy.Po
        -rm -f ./$(DEPDIR)/set_ptracer_any.Po
        -rm -f ./$(DEPDIR)/set_sigblock.Po
@@ -9729,6 +12878,7 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/setgroups32.Po
        -rm -f ./$(DEPDIR)/sethostname.Po
        -rm -f ./$(DEPDIR)/setns.Po
+       -rm -f ./$(DEPDIR)/setpgrp-exec.Po
        -rm -f ./$(DEPDIR)/setregid.Po
        -rm -f ./$(DEPDIR)/setregid32.Po
        -rm -f ./$(DEPDIR)/setresgid.Po
@@ -9749,6 +12899,7 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/sigaltstack.Po
        -rm -f ./$(DEPDIR)/siginfo.Po
        -rm -f ./$(DEPDIR)/signal.Po
+       -rm -f ./$(DEPDIR)/signal_receive--pidns-translation.Po
        -rm -f ./$(DEPDIR)/signal_receive.Po
        -rm -f ./$(DEPDIR)/signalfd4.Po
        -rm -f ./$(DEPDIR)/sigpending.Po
@@ -9758,6 +12909,7 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/sleep.Po
        -rm -f ./$(DEPDIR)/so_error.Po
        -rm -f ./$(DEPDIR)/so_linger.Po
+       -rm -f ./$(DEPDIR)/so_peercred--pidns-translation.Po
        -rm -f ./$(DEPDIR)/so_peercred-Xabbrev.Po
        -rm -f ./$(DEPDIR)/so_peercred-Xraw.Po
        -rm -f ./$(DEPDIR)/so_peercred-Xverbose.Po
@@ -9777,6 +12929,7 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/stack-fcall-1.Po
        -rm -f ./$(DEPDIR)/stack-fcall-2.Po
        -rm -f ./$(DEPDIR)/stack-fcall-3.Po
+       -rm -f ./$(DEPDIR)/stack-fcall-attach.Po
        -rm -f ./$(DEPDIR)/stack-fcall-mangled-0.Po
        -rm -f ./$(DEPDIR)/stack-fcall-mangled-1.Po
        -rm -f ./$(DEPDIR)/stack-fcall-mangled-2.Po
@@ -9787,7 +12940,25 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/stat64-stat64.Po
        -rm -f ./$(DEPDIR)/statfs-statfs.Po
        -rm -f ./$(DEPDIR)/statfs64.Po
+       -rm -f ./$(DEPDIR)/status-all.Po
+       -rm -f ./$(DEPDIR)/status-failed-long.Po
+       -rm -f ./$(DEPDIR)/status-failed-status.Po
+       -rm -f ./$(DEPDIR)/status-failed.Po
+       -rm -f ./$(DEPDIR)/status-none-f.Po
+       -rm -f ./$(DEPDIR)/status-none-threads.Po
+       -rm -f ./$(DEPDIR)/status-none.Po
+       -rm -f ./$(DEPDIR)/status-successful-long.Po
+       -rm -f ./$(DEPDIR)/status-successful-status.Po
+       -rm -f ./$(DEPDIR)/status-successful.Po
+       -rm -f ./$(DEPDIR)/status-unfinished-threads.Po
+       -rm -f ./$(DEPDIR)/status-unfinished.Po
        -rm -f ./$(DEPDIR)/statx.Po
+       -rm -f ./$(DEPDIR)/strace--strings-in-hex-all.Po
+       -rm -f ./$(DEPDIR)/strace--strings-in-hex-non-ascii.Po
+       -rm -f ./$(DEPDIR)/strace--strings-in-hex.Po
+       -rm -f ./$(DEPDIR)/strace-n.Po
+       -rm -f ./$(DEPDIR)/strace-x.Po
+       -rm -f ./$(DEPDIR)/strace-xx.Po
        -rm -f ./$(DEPDIR)/swap.Po
        -rm -f ./$(DEPDIR)/sxetmask.Po
        -rm -f ./$(DEPDIR)/symlink.Po
@@ -9796,8 +12967,15 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/sync_file_range.Po
        -rm -f ./$(DEPDIR)/sync_file_range2.Po
        -rm -f ./$(DEPDIR)/sysinfo.Po
+       -rm -f ./$(DEPDIR)/syslog-success.Po
        -rm -f ./$(DEPDIR)/syslog.Po
        -rm -f ./$(DEPDIR)/tee.Po
+       -rm -f ./$(DEPDIR)/tgkill--pidns-translation.Po
+       -rm -f ./$(DEPDIR)/tgkill.Po
+       -rm -f ./$(DEPDIR)/threads-execve--quiet-thread-execve.Po
+       -rm -f ./$(DEPDIR)/threads-execve-q.Po
+       -rm -f ./$(DEPDIR)/threads-execve-qq.Po
+       -rm -f ./$(DEPDIR)/threads-execve-qqq.Po
        -rm -f ./$(DEPDIR)/threads-execve.Po
        -rm -f ./$(DEPDIR)/time.Po
        -rm -f ./$(DEPDIR)/timer_create.Po
@@ -9805,6 +12983,11 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/timerfd_xettime.Po
        -rm -f ./$(DEPDIR)/times-fail.Po
        -rm -f ./$(DEPDIR)/times.Po
+       -rm -f ./$(DEPDIR)/tkill--pidns-translation.Po
+       -rm -f ./$(DEPDIR)/tkill.Po
+       -rm -f ./$(DEPDIR)/tracer_ppid_pgid_sid.Po
+       -rm -f ./$(DEPDIR)/trie_test-trie_for_tests.Po
+       -rm -f ./$(DEPDIR)/trie_test-trie_test.Po
        -rm -f ./$(DEPDIR)/truncate.Po
        -rm -f ./$(DEPDIR)/truncate64-truncate64.Po
        -rm -f ./$(DEPDIR)/ugetrlimit.Po
@@ -9817,6 +13000,8 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/umovestr.Po
        -rm -f ./$(DEPDIR)/umovestr2.Po
        -rm -f ./$(DEPDIR)/umovestr3.Po
+       -rm -f ./$(DEPDIR)/umovestr_cached.Po
+       -rm -f ./$(DEPDIR)/umovestr_cached_adjacent.Po
        -rm -f ./$(DEPDIR)/uname.Po
        -rm -f ./$(DEPDIR)/unblock_reset_raise.Po
        -rm -f ./$(DEPDIR)/unix-pair-send-recv.Po
@@ -9842,10 +13027,13 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/waitpid.Po
        -rm -f ./$(DEPDIR)/xattr-strings.Po
        -rm -f ./$(DEPDIR)/xattr.Po
+       -rm -f ./$(DEPDIR)/xet_robust_list--pidns-translation.Po
        -rm -f ./$(DEPDIR)/xet_robust_list.Po
        -rm -f ./$(DEPDIR)/xet_thread_area_x86.Po
        -rm -f ./$(DEPDIR)/xetitimer.Po
+       -rm -f ./$(DEPDIR)/xetpgid--pidns-translation.Po
        -rm -f ./$(DEPDIR)/xetpgid.Po
+       -rm -f ./$(DEPDIR)/xetpriority--pidns-translation.Po
        -rm -f ./$(DEPDIR)/xetpriority.Po
        -rm -f ./$(DEPDIR)/xettimeofday.Po
        -rm -f ./$(DEPDIR)/zeroargc.Po
@@ -9911,10 +13099,12 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/attach-p-cmd-cmd.Po
        -rm -f ./$(DEPDIR)/attach-p-cmd-p.Po
        -rm -f ./$(DEPDIR)/block_reset_raise_run.Po
+       -rm -f ./$(DEPDIR)/block_reset_run.Po
        -rm -f ./$(DEPDIR)/bpf-obj_get_info_by_fd-prog-v.Po
        -rm -f ./$(DEPDIR)/bpf-obj_get_info_by_fd-prog.Po
        -rm -f ./$(DEPDIR)/bpf-obj_get_info_by_fd-v.Po
        -rm -f ./$(DEPDIR)/bpf-obj_get_info_by_fd.Po
+       -rm -f ./$(DEPDIR)/bpf-success-long-y.Po
        -rm -f ./$(DEPDIR)/bpf-success-v.Po
        -rm -f ./$(DEPDIR)/bpf-success.Po
        -rm -f ./$(DEPDIR)/bpf-v.Po
@@ -9932,16 +13122,48 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/clock_adjtime.Po
        -rm -f ./$(DEPDIR)/clock_nanosleep.Po
        -rm -f ./$(DEPDIR)/clock_xettime.Po
+       -rm -f ./$(DEPDIR)/clone-flags.Po
+       -rm -f ./$(DEPDIR)/clone3-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/clone3-Xraw.Po
+       -rm -f ./$(DEPDIR)/clone3-Xverbose.Po
+       -rm -f ./$(DEPDIR)/clone3-success-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/clone3-success-Xraw.Po
+       -rm -f ./$(DEPDIR)/clone3-success-Xverbose.Po
+       -rm -f ./$(DEPDIR)/clone3-success.Po
+       -rm -f ./$(DEPDIR)/clone3.Po
+       -rm -f ./$(DEPDIR)/clone_parent--quiet-exit.Po
+       -rm -f ./$(DEPDIR)/clone_parent-q.Po
+       -rm -f ./$(DEPDIR)/clone_parent-qq.Po
        -rm -f ./$(DEPDIR)/clone_parent.Po
+       -rm -f ./$(DEPDIR)/clone_ptrace--quiet-attach.Po
+       -rm -f ./$(DEPDIR)/clone_ptrace--quiet-exit.Po
+       -rm -f ./$(DEPDIR)/clone_ptrace-q.Po
+       -rm -f ./$(DEPDIR)/clone_ptrace-qq.Po
        -rm -f ./$(DEPDIR)/clone_ptrace.Po
+       -rm -f ./$(DEPDIR)/close_range-P.Po
+       -rm -f ./$(DEPDIR)/close_range-y.Po
+       -rm -f ./$(DEPDIR)/close_range-yy.Po
+       -rm -f ./$(DEPDIR)/close_range.Po
        -rm -f ./$(DEPDIR)/copy_file_range.Po
        -rm -f ./$(DEPDIR)/count-f.Po
        -rm -f ./$(DEPDIR)/creat.Po
        -rm -f ./$(DEPDIR)/delay.Po
        -rm -f ./$(DEPDIR)/delete_module.Po
+       -rm -f ./$(DEPDIR)/dev--decode-fds-dev.Po
+       -rm -f ./$(DEPDIR)/dev--decode-fds-path.Po
+       -rm -f ./$(DEPDIR)/dev--decode-fds-socket.Po
        -rm -f ./$(DEPDIR)/dev-yy.Po
+       -rm -f ./$(DEPDIR)/dup-P.Po
+       -rm -f ./$(DEPDIR)/dup-y.Po
+       -rm -f ./$(DEPDIR)/dup-yy.Po
        -rm -f ./$(DEPDIR)/dup.Po
+       -rm -f ./$(DEPDIR)/dup2-P.Po
+       -rm -f ./$(DEPDIR)/dup2-y.Po
+       -rm -f ./$(DEPDIR)/dup2-yy.Po
        -rm -f ./$(DEPDIR)/dup2.Po
+       -rm -f ./$(DEPDIR)/dup3-P.Po
+       -rm -f ./$(DEPDIR)/dup3-y.Po
+       -rm -f ./$(DEPDIR)/dup3-yy.Po
        -rm -f ./$(DEPDIR)/dup3.Po
        -rm -f ./$(DEPDIR)/epoll_create.Po
        -rm -f ./$(DEPDIR)/epoll_create1.Po
@@ -9954,7 +13176,14 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/execve.Po
        -rm -f ./$(DEPDIR)/execveat-v.Po
        -rm -f ./$(DEPDIR)/execveat.Po
+       -rm -f ./$(DEPDIR)/faccessat-P.Po
+       -rm -f ./$(DEPDIR)/faccessat-y.Po
+       -rm -f ./$(DEPDIR)/faccessat-yy.Po
        -rm -f ./$(DEPDIR)/faccessat.Po
+       -rm -f ./$(DEPDIR)/faccessat2-P.Po
+       -rm -f ./$(DEPDIR)/faccessat2-y.Po
+       -rm -f ./$(DEPDIR)/faccessat2-yy.Po
+       -rm -f ./$(DEPDIR)/faccessat2.Po
        -rm -f ./$(DEPDIR)/fadvise64.Po
        -rm -f ./$(DEPDIR)/fadvise64_64.Po
        -rm -f ./$(DEPDIR)/fallocate.Po
@@ -9969,16 +13198,27 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/fchown.Po
        -rm -f ./$(DEPDIR)/fchown32.Po
        -rm -f ./$(DEPDIR)/fchownat.Po
+       -rm -f ./$(DEPDIR)/fcntl--pidns-translation.Po
        -rm -f ./$(DEPDIR)/fcntl.Po
+       -rm -f ./$(DEPDIR)/fcntl64--pidns-translation.Po
        -rm -f ./$(DEPDIR)/fcntl64.Po
        -rm -f ./$(DEPDIR)/fdatasync.Po
        -rm -f ./$(DEPDIR)/fflush.Po
        -rm -f ./$(DEPDIR)/file_handle.Po
        -rm -f ./$(DEPDIR)/file_ioctl.Po
        -rm -f ./$(DEPDIR)/filter-unavailable.Po
+       -rm -f ./$(DEPDIR)/filter_seccomp-flag.Po
+       -rm -f ./$(DEPDIR)/filter_seccomp-perf.Po
        -rm -f ./$(DEPDIR)/finit_module.Po
        -rm -f ./$(DEPDIR)/flock.Po
+       -rm -f ./$(DEPDIR)/fork--pidns-translation.Po
        -rm -f ./$(DEPDIR)/fork-f.Po
+       -rm -f ./$(DEPDIR)/fsconfig-P.Po
+       -rm -f ./$(DEPDIR)/fsconfig.Po
+       -rm -f ./$(DEPDIR)/fsmount.Po
+       -rm -f ./$(DEPDIR)/fsopen.Po
+       -rm -f ./$(DEPDIR)/fspick-P.Po
+       -rm -f ./$(DEPDIR)/fspick.Po
        -rm -f ./$(DEPDIR)/fstat-Xabbrev.Po
        -rm -f ./$(DEPDIR)/fstat-Xraw.Po
        -rm -f ./$(DEPDIR)/fstat-Xverbose.Po
@@ -9997,9 +13237,12 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/futex.Po
        -rm -f ./$(DEPDIR)/futimesat.Po
        -rm -f ./$(DEPDIR)/get_mempolicy.Po
+       -rm -f ./$(DEPDIR)/get_process_reaper.Po
        -rm -f ./$(DEPDIR)/getcpu.Po
        -rm -f ./$(DEPDIR)/getcwd.Po
+       -rm -f ./$(DEPDIR)/getdents-v.Po
        -rm -f ./$(DEPDIR)/getdents.Po
+       -rm -f ./$(DEPDIR)/getdents64-v.Po
        -rm -f ./$(DEPDIR)/getdents64.Po
        -rm -f ./$(DEPDIR)/getegid.Po
        -rm -f ./$(DEPDIR)/getegid32.Po
@@ -10010,7 +13253,9 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/getgroups.Po
        -rm -f ./$(DEPDIR)/getgroups32.Po
        -rm -f ./$(DEPDIR)/getpeername.Po
+       -rm -f ./$(DEPDIR)/getpgrp--pidns-translation.Po
        -rm -f ./$(DEPDIR)/getpgrp.Po
+       -rm -f ./$(DEPDIR)/getpid--pidns-translation.Po
        -rm -f ./$(DEPDIR)/getpid.Po
        -rm -f ./$(DEPDIR)/getppid.Po
        -rm -f ./$(DEPDIR)/getrandom.Po
@@ -10020,30 +13265,66 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/getresuid32.Po
        -rm -f ./$(DEPDIR)/getrlimit.Po
        -rm -f ./$(DEPDIR)/getrusage.Po
+       -rm -f ./$(DEPDIR)/getsid--pidns-translation.Po
        -rm -f ./$(DEPDIR)/getsid.Po
        -rm -f ./$(DEPDIR)/getsockname.Po
+       -rm -f ./$(DEPDIR)/gettid--pidns-translation.Po
        -rm -f ./$(DEPDIR)/gettid.Po
        -rm -f ./$(DEPDIR)/getuid.Po
        -rm -f ./$(DEPDIR)/getuid32.Po
-       -rm -f ./$(DEPDIR)/getxxid.Po
+       -rm -f ./$(DEPDIR)/getxgid.Po
+       -rm -f ./$(DEPDIR)/getxpid.Po
+       -rm -f ./$(DEPDIR)/getxuid.Po
        -rm -f ./$(DEPDIR)/group_req.Po
        -rm -f ./$(DEPDIR)/inet-cmsg.Po
        -rm -f ./$(DEPDIR)/init_module.Po
        -rm -f ./$(DEPDIR)/inject-nf.Po
        -rm -f ./$(DEPDIR)/inotify.Po
+       -rm -f ./$(DEPDIR)/inotify_init-y.Po
+       -rm -f ./$(DEPDIR)/inotify_init.Po
+       -rm -f ./$(DEPDIR)/inotify_init1-y.Po
        -rm -f ./$(DEPDIR)/inotify_init1.Po
        -rm -f ./$(DEPDIR)/int_0x80.Po
        -rm -f ./$(DEPDIR)/io_uring_enter.Po
        -rm -f ./$(DEPDIR)/io_uring_register.Po
        -rm -f ./$(DEPDIR)/io_uring_setup.Po
        -rm -f ./$(DEPDIR)/ioctl.Po
+       -rm -f ./$(DEPDIR)/ioctl_block--pidns-translation.Po
        -rm -f ./$(DEPDIR)/ioctl_block.Po
        -rm -f ./$(DEPDIR)/ioctl_dm-v.Po
        -rm -f ./$(DEPDIR)/ioctl_dm.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-success-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-success-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-success-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-success-v-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-success-v-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-success-v-Xverbose.Po
        -rm -f ./$(DEPDIR)/ioctl_evdev-success-v.Po
        -rm -f ./$(DEPDIR)/ioctl_evdev-success.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-v-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-v-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-v-Xverbose.Po
        -rm -f ./$(DEPDIR)/ioctl_evdev-v.Po
        -rm -f ./$(DEPDIR)/ioctl_evdev.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-success-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-success-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-success-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-success-v-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-success-v-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-success-v-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-success-v.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-success.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-v-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-v-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-v-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-v.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio.Po
        -rm -f ./$(DEPDIR)/ioctl_inotify.Po
        -rm -f ./$(DEPDIR)/ioctl_kvm_run-v.Po
        -rm -f ./$(DEPDIR)/ioctl_kvm_run.Po
@@ -10064,10 +13345,28 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/ioctl_sg_io_v3.Po
        -rm -f ./$(DEPDIR)/ioctl_sg_io_v4.Po
        -rm -f ./$(DEPDIR)/ioctl_sock_gifconf.Po
+       -rm -f ./$(DEPDIR)/ioctl_tee.Po
        -rm -f ./$(DEPDIR)/ioctl_uffdio.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-success-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-success-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-success-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-success-v-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-success-v-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-success-v-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-success-v.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-success.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-v-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-v-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-v-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-v.Po
        -rm -f ./$(DEPDIR)/ioctl_v4l2.Po
+       -rm -f ./$(DEPDIR)/ioctl_watchdog.Po
        -rm -f ./$(DEPDIR)/ioperm.Po
        -rm -f ./$(DEPDIR)/iopl.Po
+       -rm -f ./$(DEPDIR)/ioprio--pidns-translation.Po
        -rm -f ./$(DEPDIR)/ioprio-Xabbrev.Po
        -rm -f ./$(DEPDIR)/ioprio-Xraw.Po
        -rm -f ./$(DEPDIR)/ioprio-Xverbose.Po
@@ -10091,6 +13390,7 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/ipc_shm-Xverbose.Po
        -rm -f ./$(DEPDIR)/ipc_shm.Po
        -rm -f ./$(DEPDIR)/is_linux_mips_n64.Po
+       -rm -f ./$(DEPDIR)/kcmp-y--pidns-translation.Po
        -rm -f ./$(DEPDIR)/kcmp-y.Po
        -rm -f ./$(DEPDIR)/kcmp.Po
        -rm -f ./$(DEPDIR)/kern_features.Po
@@ -10104,12 +13404,14 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/keyctl-Xraw.Po
        -rm -f ./$(DEPDIR)/keyctl-Xverbose.Po
        -rm -f ./$(DEPDIR)/keyctl.Po
+       -rm -f ./$(DEPDIR)/kill--pidns-translation.Po
        -rm -f ./$(DEPDIR)/kill.Po
        -rm -f ./$(DEPDIR)/kill_child.Po
        -rm -f ./$(DEPDIR)/ksysent.Po
        -rm -f ./$(DEPDIR)/lchown.Po
        -rm -f ./$(DEPDIR)/lchown32.Po
        -rm -f ./$(DEPDIR)/libtests_a-create_nl_socket.Po
+       -rm -f ./$(DEPDIR)/libtests_a-create_tmpfile.Po
        -rm -f ./$(DEPDIR)/libtests_a-errno2name.Po
        -rm -f ./$(DEPDIR)/libtests_a-error_msg.Po
        -rm -f ./$(DEPDIR)/libtests_a-fill_memory.Po
@@ -10121,20 +13423,26 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/libtests_a-inode_of_sockfd.Po
        -rm -f ./$(DEPDIR)/libtests_a-libmmsg.Po
        -rm -f ./$(DEPDIR)/libtests_a-libsocketcall.Po
+       -rm -f ./$(DEPDIR)/libtests_a-lock_file.Po
        -rm -f ./$(DEPDIR)/libtests_a-overflowuid.Po
+       -rm -f ./$(DEPDIR)/libtests_a-pidns.Po
        -rm -f ./$(DEPDIR)/libtests_a-pipe_maxfd.Po
        -rm -f ./$(DEPDIR)/libtests_a-print_quoted_string.Po
        -rm -f ./$(DEPDIR)/libtests_a-print_time.Po
        -rm -f ./$(DEPDIR)/libtests_a-printflags.Po
-       -rm -f ./$(DEPDIR)/libtests_a-printxval.Po
+       -rm -f ./$(DEPDIR)/libtests_a-printxval-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/libtests_a-printxval-Xraw.Po
+       -rm -f ./$(DEPDIR)/libtests_a-printxval-Xverbose.Po
        -rm -f ./$(DEPDIR)/libtests_a-signal2name.Po
        -rm -f ./$(DEPDIR)/libtests_a-skip_unavailable.Po
        -rm -f ./$(DEPDIR)/libtests_a-sprintrc.Po
+       -rm -f ./$(DEPDIR)/libtests_a-status.Po
        -rm -f ./$(DEPDIR)/libtests_a-tail_alloc.Po
        -rm -f ./$(DEPDIR)/libtests_a-test_printpath.Po
        -rm -f ./$(DEPDIR)/libtests_a-test_printstrn.Po
        -rm -f ./$(DEPDIR)/libtests_a-test_ucopy.Po
        -rm -f ./$(DEPDIR)/libtests_a-tprintf.Po
+       -rm -f ./$(DEPDIR)/libtests_a-xmalloc_for_tests.Po
        -rm -f ./$(DEPDIR)/link.Po
        -rm -f ./$(DEPDIR)/linkat.Po
        -rm -f ./$(DEPDIR)/list_sigaction_signum.Po
@@ -10146,12 +13454,18 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/lstat.Po
        -rm -f ./$(DEPDIR)/lstat64-lstat64.Po
        -rm -f ./$(DEPDIR)/madvise.Po
+       -rm -f ./$(DEPDIR)/maybe_switch_current_tcp--quiet-thread-execve.Po
+       -rm -f ./$(DEPDIR)/maybe_switch_current_tcp.Po
+       -rm -f ./$(DEPDIR)/mbind-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/mbind-Xraw.Po
+       -rm -f ./$(DEPDIR)/mbind-Xverbose.Po
        -rm -f ./$(DEPDIR)/mbind.Po
        -rm -f ./$(DEPDIR)/membarrier.Po
        -rm -f ./$(DEPDIR)/memfd_create-Xabbrev.Po
        -rm -f ./$(DEPDIR)/memfd_create-Xraw.Po
        -rm -f ./$(DEPDIR)/memfd_create-Xverbose.Po
        -rm -f ./$(DEPDIR)/memfd_create.Po
+       -rm -f ./$(DEPDIR)/migrate_pages--pidns-translation.Po
        -rm -f ./$(DEPDIR)/migrate_pages.Po
        -rm -f ./$(DEPDIR)/mincore.Po
        -rm -f ./$(DEPDIR)/mkdir.Po
@@ -10178,6 +13492,9 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/mount-Xraw.Po
        -rm -f ./$(DEPDIR)/mount-Xverbose.Po
        -rm -f ./$(DEPDIR)/mount.Po
+       -rm -f ./$(DEPDIR)/move_mount-P.Po
+       -rm -f ./$(DEPDIR)/move_mount.Po
+       -rm -f ./$(DEPDIR)/move_pages--pidns-translation.Po
        -rm -f ./$(DEPDIR)/move_pages-Xabbrev.Po
        -rm -f ./$(DEPDIR)/move_pages-Xraw.Po
        -rm -f ./$(DEPDIR)/move_pages-Xverbose.Po
@@ -10191,12 +13508,17 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/msg_name.Po
        -rm -f ./$(DEPDIR)/munlockall.Po
        -rm -f ./$(DEPDIR)/nanosleep.Po
+       -rm -f ./$(DEPDIR)/net--decode-fds-dev-netlink.Po
+       -rm -f ./$(DEPDIR)/net--decode-fds-none-netlink.Po
+       -rm -f ./$(DEPDIR)/net--decode-fds-path-netlink.Po
+       -rm -f ./$(DEPDIR)/net--decode-fds-socket-netlink.Po
        -rm -f ./$(DEPDIR)/net-accept-connect.Po
        -rm -f ./$(DEPDIR)/net-icmp_filter.Po
        -rm -f ./$(DEPDIR)/net-packet_mreq-Xabbrev.Po
        -rm -f ./$(DEPDIR)/net-packet_mreq-Xraw.Po
        -rm -f ./$(DEPDIR)/net-packet_mreq-Xverbose.Po
        -rm -f ./$(DEPDIR)/net-packet_mreq.Po
+       -rm -f ./$(DEPDIR)/net-sockaddr--pidns-translation.Po
        -rm -f ./$(DEPDIR)/net-sockaddr.Po
        -rm -f ./$(DEPDIR)/net-tpacket_req.Po
        -rm -f ./$(DEPDIR)/net-tpacket_stats-success.Po
@@ -10206,6 +13528,7 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/net-yy-inet6.Po
        -rm -f ./$(DEPDIR)/net-yy-netlink.Po
        -rm -f ./$(DEPDIR)/net-yy-unix.Po
+       -rm -f ./$(DEPDIR)/netlink_audit--pidns-translation.Po
        -rm -f ./$(DEPDIR)/netlink_audit.Po
        -rm -f ./$(DEPDIR)/netlink_crypto.Po
        -rm -f ./$(DEPDIR)/netlink_generic.Po
@@ -10243,6 +13566,7 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/nlattr_ifla_brport.Po
        -rm -f ./$(DEPDIR)/nlattr_ifla_linkinfo.Po
        -rm -f ./$(DEPDIR)/nlattr_ifla_port.Po
+       -rm -f ./$(DEPDIR)/nlattr_ifla_xdp-y.Po
        -rm -f ./$(DEPDIR)/nlattr_ifla_xdp.Po
        -rm -f ./$(DEPDIR)/nlattr_inet_diag_msg.Po
        -rm -f ./$(DEPDIR)/nlattr_inet_diag_req_compat.Po
@@ -10279,7 +13603,19 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/oldselect.Po
        -rm -f ./$(DEPDIR)/oldstat.Po
        -rm -f ./$(DEPDIR)/open.Po
+       -rm -f ./$(DEPDIR)/open_tree-P.Po
+       -rm -f ./$(DEPDIR)/open_tree.Po
        -rm -f ./$(DEPDIR)/openat.Po
+       -rm -f ./$(DEPDIR)/openat2-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/openat2-Xraw.Po
+       -rm -f ./$(DEPDIR)/openat2-Xverbose.Po
+       -rm -f ./$(DEPDIR)/openat2-v-y-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/openat2-v-y-Xraw.Po
+       -rm -f ./$(DEPDIR)/openat2-v-y-Xverbose.Po
+       -rm -f ./$(DEPDIR)/openat2-v-y.Po
+       -rm -f ./$(DEPDIR)/openat2-v.Po
+       -rm -f ./$(DEPDIR)/openat2-y.Po
+       -rm -f ./$(DEPDIR)/openat2.Po
        -rm -f ./$(DEPDIR)/orphaned_process_group.Po
        -rm -f ./$(DEPDIR)/osf_utimes.Po
        -rm -f ./$(DEPDIR)/pause.Po
@@ -10291,7 +13627,20 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/personality-Xraw.Po
        -rm -f ./$(DEPDIR)/personality-Xverbose.Po
        -rm -f ./$(DEPDIR)/personality.Po
+       -rm -f ./$(DEPDIR)/pidfd_getfd-y.Po
+       -rm -f ./$(DEPDIR)/pidfd_getfd-yy.Po
+       -rm -f ./$(DEPDIR)/pidfd_getfd.Po
+       -rm -f ./$(DEPDIR)/pidfd_open--decode-fd-path.Po
+       -rm -f ./$(DEPDIR)/pidfd_open--decode-fd-pidfd.Po
+       -rm -f ./$(DEPDIR)/pidfd_open--decode-fd-socket.Po
+       -rm -f ./$(DEPDIR)/pidfd_open--pidns-translation.Po
+       -rm -f ./$(DEPDIR)/pidfd_open-P.Po
+       -rm -f ./$(DEPDIR)/pidfd_open-y.Po
+       -rm -f ./$(DEPDIR)/pidfd_open-yy.Po
+       -rm -f ./$(DEPDIR)/pidfd_open.Po
+       -rm -f ./$(DEPDIR)/pidfd_send_signal--pidns-translation.Po
        -rm -f ./$(DEPDIR)/pidfd_send_signal.Po
+       -rm -f ./$(DEPDIR)/pidns-cache.Po
        -rm -f ./$(DEPDIR)/pipe.Po
        -rm -f ./$(DEPDIR)/pipe2.Po
        -rm -f ./$(DEPDIR)/pkey_alloc.Po
@@ -10318,6 +13667,7 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/preadv2-pwritev2.Po
        -rm -f ./$(DEPDIR)/preadv_pwritev-preadv-pwritev.Po
        -rm -f ./$(DEPDIR)/print_maxfd.Po
+       -rm -f ./$(DEPDIR)/print_ppid_tracerpid.Po
        -rm -f ./$(DEPDIR)/printpath-umovestr-peekdata.Po
        -rm -f ./$(DEPDIR)/printpath-umovestr-undumpable.Po
        -rm -f ./$(DEPDIR)/printpath-umovestr.Po
@@ -10328,8 +13678,11 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/printstrn-umoven-peekdata.Po
        -rm -f ./$(DEPDIR)/printstrn-umoven-undumpable.Po
        -rm -f ./$(DEPDIR)/printstrn-umoven.Po
+       -rm -f ./$(DEPDIR)/prlimit64--pidns-translation.Po
        -rm -f ./$(DEPDIR)/prlimit64.Po
+       -rm -f ./$(DEPDIR)/process_vm_readv--pidns-translation.Po
        -rm -f ./$(DEPDIR)/process_vm_readv.Po
+       -rm -f ./$(DEPDIR)/process_vm_writev--pidns-translation.Po
        -rm -f ./$(DEPDIR)/process_vm_writev.Po
        -rm -f ./$(DEPDIR)/pselect6.Po
        -rm -f ./$(DEPDIR)/ptrace.Po
@@ -10358,6 +13711,8 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/readlinkat.Po
        -rm -f ./$(DEPDIR)/readv.Po
        -rm -f ./$(DEPDIR)/reboot.Po
+       -rm -f ./$(DEPDIR)/recv-MSG_TRUNC.Po
+       -rm -f ./$(DEPDIR)/recvfrom-MSG_TRUNC.Po
        -rm -f ./$(DEPDIR)/recvfrom.Po
        -rm -f ./$(DEPDIR)/recvmmsg-timeout.Po
        -rm -f ./$(DEPDIR)/recvmsg.Po
@@ -10376,10 +13731,12 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/rt_sigaction.Po
        -rm -f ./$(DEPDIR)/rt_sigpending.Po
        -rm -f ./$(DEPDIR)/rt_sigprocmask.Po
+       -rm -f ./$(DEPDIR)/rt_sigqueueinfo--pidns-translation.Po
        -rm -f ./$(DEPDIR)/rt_sigqueueinfo.Po
        -rm -f ./$(DEPDIR)/rt_sigreturn.Po
        -rm -f ./$(DEPDIR)/rt_sigsuspend.Po
        -rm -f ./$(DEPDIR)/rt_sigtimedwait.Po
+       -rm -f ./$(DEPDIR)/rt_tgsigqueueinfo--pidns-translation.Po
        -rm -f ./$(DEPDIR)/rt_tgsigqueueinfo.Po
        -rm -f ./$(DEPDIR)/run_expect_termsig.Po
        -rm -f ./$(DEPDIR)/s390_guarded_storage-v.Po
@@ -10390,9 +13747,13 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/s390_sthyi.Po
        -rm -f ./$(DEPDIR)/sched_get_priority_mxx.Po
        -rm -f ./$(DEPDIR)/sched_rr_get_interval.Po
+       -rm -f ./$(DEPDIR)/sched_xetaffinity--pidns-translation.Po
        -rm -f ./$(DEPDIR)/sched_xetaffinity.Po
+       -rm -f ./$(DEPDIR)/sched_xetattr--pidns-translation.Po
        -rm -f ./$(DEPDIR)/sched_xetattr.Po
+       -rm -f ./$(DEPDIR)/sched_xetparam--pidns-translation.Po
        -rm -f ./$(DEPDIR)/sched_xetparam.Po
+       -rm -f ./$(DEPDIR)/sched_xetscheduler--pidns-translation.Po
        -rm -f ./$(DEPDIR)/sched_xetscheduler.Po
        -rm -f ./$(DEPDIR)/sched_yield.Po
        -rm -f ./$(DEPDIR)/scm_rights.Po
@@ -10402,9 +13763,14 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/seccomp_get_action_avail.Po
        -rm -f ./$(DEPDIR)/select-P.Po
        -rm -f ./$(DEPDIR)/select.Po
+       -rm -f ./$(DEPDIR)/semop-indirect.Po
        -rm -f ./$(DEPDIR)/semop.Po
+       -rm -f ./$(DEPDIR)/semtimedop.Po
        -rm -f ./$(DEPDIR)/sendfile.Po
        -rm -f ./$(DEPDIR)/sendfile64.Po
+       -rm -f ./$(DEPDIR)/set_mempolicy-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/set_mempolicy-Xraw.Po
+       -rm -f ./$(DEPDIR)/set_mempolicy-Xverbose.Po
        -rm -f ./$(DEPDIR)/set_mempolicy.Po
        -rm -f ./$(DEPDIR)/set_ptracer_any.Po
        -rm -f ./$(DEPDIR)/set_sigblock.Po
@@ -10420,6 +13786,7 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/setgroups32.Po
        -rm -f ./$(DEPDIR)/sethostname.Po
        -rm -f ./$(DEPDIR)/setns.Po
+       -rm -f ./$(DEPDIR)/setpgrp-exec.Po
        -rm -f ./$(DEPDIR)/setregid.Po
        -rm -f ./$(DEPDIR)/setregid32.Po
        -rm -f ./$(DEPDIR)/setresgid.Po
@@ -10440,6 +13807,7 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/sigaltstack.Po
        -rm -f ./$(DEPDIR)/siginfo.Po
        -rm -f ./$(DEPDIR)/signal.Po
+       -rm -f ./$(DEPDIR)/signal_receive--pidns-translation.Po
        -rm -f ./$(DEPDIR)/signal_receive.Po
        -rm -f ./$(DEPDIR)/signalfd4.Po
        -rm -f ./$(DEPDIR)/sigpending.Po
@@ -10449,6 +13817,7 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/sleep.Po
        -rm -f ./$(DEPDIR)/so_error.Po
        -rm -f ./$(DEPDIR)/so_linger.Po
+       -rm -f ./$(DEPDIR)/so_peercred--pidns-translation.Po
        -rm -f ./$(DEPDIR)/so_peercred-Xabbrev.Po
        -rm -f ./$(DEPDIR)/so_peercred-Xraw.Po
        -rm -f ./$(DEPDIR)/so_peercred-Xverbose.Po
@@ -10468,6 +13837,7 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/stack-fcall-1.Po
        -rm -f ./$(DEPDIR)/stack-fcall-2.Po
        -rm -f ./$(DEPDIR)/stack-fcall-3.Po
+       -rm -f ./$(DEPDIR)/stack-fcall-attach.Po
        -rm -f ./$(DEPDIR)/stack-fcall-mangled-0.Po
        -rm -f ./$(DEPDIR)/stack-fcall-mangled-1.Po
        -rm -f ./$(DEPDIR)/stack-fcall-mangled-2.Po
@@ -10478,7 +13848,25 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/stat64-stat64.Po
        -rm -f ./$(DEPDIR)/statfs-statfs.Po
        -rm -f ./$(DEPDIR)/statfs64.Po
+       -rm -f ./$(DEPDIR)/status-all.Po
+       -rm -f ./$(DEPDIR)/status-failed-long.Po
+       -rm -f ./$(DEPDIR)/status-failed-status.Po
+       -rm -f ./$(DEPDIR)/status-failed.Po
+       -rm -f ./$(DEPDIR)/status-none-f.Po
+       -rm -f ./$(DEPDIR)/status-none-threads.Po
+       -rm -f ./$(DEPDIR)/status-none.Po
+       -rm -f ./$(DEPDIR)/status-successful-long.Po
+       -rm -f ./$(DEPDIR)/status-successful-status.Po
+       -rm -f ./$(DEPDIR)/status-successful.Po
+       -rm -f ./$(DEPDIR)/status-unfinished-threads.Po
+       -rm -f ./$(DEPDIR)/status-unfinished.Po
        -rm -f ./$(DEPDIR)/statx.Po
+       -rm -f ./$(DEPDIR)/strace--strings-in-hex-all.Po
+       -rm -f ./$(DEPDIR)/strace--strings-in-hex-non-ascii.Po
+       -rm -f ./$(DEPDIR)/strace--strings-in-hex.Po
+       -rm -f ./$(DEPDIR)/strace-n.Po
+       -rm -f ./$(DEPDIR)/strace-x.Po
+       -rm -f ./$(DEPDIR)/strace-xx.Po
        -rm -f ./$(DEPDIR)/swap.Po
        -rm -f ./$(DEPDIR)/sxetmask.Po
        -rm -f ./$(DEPDIR)/symlink.Po
@@ -10487,8 +13875,15 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/sync_file_range.Po
        -rm -f ./$(DEPDIR)/sync_file_range2.Po
        -rm -f ./$(DEPDIR)/sysinfo.Po
+       -rm -f ./$(DEPDIR)/syslog-success.Po
        -rm -f ./$(DEPDIR)/syslog.Po
        -rm -f ./$(DEPDIR)/tee.Po
+       -rm -f ./$(DEPDIR)/tgkill--pidns-translation.Po
+       -rm -f ./$(DEPDIR)/tgkill.Po
+       -rm -f ./$(DEPDIR)/threads-execve--quiet-thread-execve.Po
+       -rm -f ./$(DEPDIR)/threads-execve-q.Po
+       -rm -f ./$(DEPDIR)/threads-execve-qq.Po
+       -rm -f ./$(DEPDIR)/threads-execve-qqq.Po
        -rm -f ./$(DEPDIR)/threads-execve.Po
        -rm -f ./$(DEPDIR)/time.Po
        -rm -f ./$(DEPDIR)/timer_create.Po
@@ -10496,6 +13891,11 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/timerfd_xettime.Po
        -rm -f ./$(DEPDIR)/times-fail.Po
        -rm -f ./$(DEPDIR)/times.Po
+       -rm -f ./$(DEPDIR)/tkill--pidns-translation.Po
+       -rm -f ./$(DEPDIR)/tkill.Po
+       -rm -f ./$(DEPDIR)/tracer_ppid_pgid_sid.Po
+       -rm -f ./$(DEPDIR)/trie_test-trie_for_tests.Po
+       -rm -f ./$(DEPDIR)/trie_test-trie_test.Po
        -rm -f ./$(DEPDIR)/truncate.Po
        -rm -f ./$(DEPDIR)/truncate64-truncate64.Po
        -rm -f ./$(DEPDIR)/ugetrlimit.Po
@@ -10508,6 +13908,8 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/umovestr.Po
        -rm -f ./$(DEPDIR)/umovestr2.Po
        -rm -f ./$(DEPDIR)/umovestr3.Po
+       -rm -f ./$(DEPDIR)/umovestr_cached.Po
+       -rm -f ./$(DEPDIR)/umovestr_cached_adjacent.Po
        -rm -f ./$(DEPDIR)/uname.Po
        -rm -f ./$(DEPDIR)/unblock_reset_raise.Po
        -rm -f ./$(DEPDIR)/unix-pair-send-recv.Po
@@ -10533,10 +13935,13 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/waitpid.Po
        -rm -f ./$(DEPDIR)/xattr-strings.Po
        -rm -f ./$(DEPDIR)/xattr.Po
+       -rm -f ./$(DEPDIR)/xet_robust_list--pidns-translation.Po
        -rm -f ./$(DEPDIR)/xet_robust_list.Po
        -rm -f ./$(DEPDIR)/xet_thread_area_x86.Po
        -rm -f ./$(DEPDIR)/xetitimer.Po
+       -rm -f ./$(DEPDIR)/xetpgid--pidns-translation.Po
        -rm -f ./$(DEPDIR)/xetpgid.Po
+       -rm -f ./$(DEPDIR)/xetpriority--pidns-translation.Po
        -rm -f ./$(DEPDIR)/xetpriority.Po
        -rm -f ./$(DEPDIR)/xettimeofday.Po
        -rm -f ./$(DEPDIR)/zeroargc.Po
@@ -10659,13 +14064,79 @@ $(srcdir)/clock_nanosleep.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tes
 $(srcdir)/clock_xettime.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
-$(srcdir)/copy_file_range.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+$(srcdir)/clone3.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
-$(srcdir)/creat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+$(srcdir)/clone3-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
-$(srcdir)/delete_module.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+$(srcdir)/clone3-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone3-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone3-success-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone3-success-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone3-success-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone_parent.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone_parent--quiet-exit.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone_parent-q.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone_parent-qq.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone_ptrace--quiet-attach.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone_ptrace--quiet-exit.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone_ptrace-q.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone_ptrace-qq.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/close_range.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/close_range-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/close_range-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/close_range-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/copy_file_range.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/creat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/delete_module.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dev--decode-fds-dev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dev--decode-fds-path.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dev--decode-fds-socket.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
 $(srcdir)/dev-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
@@ -10674,12 +14145,39 @@ $(srcdir)/dev-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/dup.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/dup-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dup-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dup-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/dup2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/dup2-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dup2-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dup2-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/dup3.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/dup3-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dup3-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dup3-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/epoll_create.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -10704,7 +14202,22 @@ $(srcdir)/execveat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/execveat-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
-$(srcdir)/faccessat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+$(srcdir)/faccessat-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat2-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat2-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat2-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
 $(srcdir)/fadvise64_64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
@@ -10749,9 +14262,15 @@ $(srcdir)/fchownat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/fcntl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/fcntl--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/fcntl64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/fcntl64--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/fdatasync.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -10761,6 +14280,12 @@ $(srcdir)/file_handle.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.i
 $(srcdir)/file_ioctl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/filter_seccomp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/filter_seccomp-flag.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/finit_module.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -10770,6 +14295,24 @@ $(srcdir)/flock.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/fork-f.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/fsconfig.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/fsconfig-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/fsmount.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/fsopen.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/fspick.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/fspick-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/fstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -10830,27 +14373,51 @@ $(srcdir)/getcwd.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/getdents.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getdents-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getdents64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getdents64-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getegid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getegid-creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getegid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getegid32-creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/geteuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/geteuid-creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/geteuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/geteuid32-creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getgid-creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getgid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getgid32-creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getgroups.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -10863,9 +14430,15 @@ $(srcdir)/getpeername.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.i
 $(srcdir)/getpgrp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getpgrp--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getpid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getpid--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getppid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -10893,16 +14466,31 @@ $(srcdir)/getrusage.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/getsid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getsid--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getsockname.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
 $(srcdir)/gettid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getuid-creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
-$(srcdir)/getxxid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+$(srcdir)/getuid32-creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/getxgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/getxpid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/getxuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
 $(srcdir)/group_req.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
@@ -10917,9 +14505,15 @@ $(srcdir)/init_module.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.i
 $(srcdir)/inotify.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/inotify_init.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/inotify_init1.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/inotify_init1-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/io_uring_enter.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -10941,9 +14535,96 @@ $(srcdir)/ioctl_dm-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/ioctl_evdev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_evdev-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_evdev-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_evdev-v-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-v-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-v-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-success-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-success-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-success-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-success-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-success-v-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-success-v-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-success-v-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-v-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-v-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-v-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-success.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-success-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-success-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-success-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-success-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-success-v-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-success-v-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-success-v-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_inotify.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -10977,6 +14658,9 @@ $(srcdir)/ioctl_nsfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/ioctl_perf.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_perf-success.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_ptp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11001,12 +14685,63 @@ $(srcdir)/ioctl_sg_io_v4.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_test
 $(srcdir)/ioctl_sock_gifconf.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_tee.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_uffdio.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
 $(srcdir)/ioctl_v4l2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_v4l2-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-v-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-v-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-v-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-success.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-success-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-success-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-success-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-success-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-success-v-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-success-v-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-success-v-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_watchdog.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/ioperm.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11016,6 +14751,9 @@ $(srcdir)/iopl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/ioprio.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/ioprio--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/ioprio-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11082,6 +14820,9 @@ $(srcdir)/kcmp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/kcmp-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/kcmp-y--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/kern_features.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11118,6 +14859,12 @@ $(srcdir)/keyctl-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tes
 $(srcdir)/kill.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/kill--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ksysent.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/lchown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11142,9 +14889,24 @@ $(srcdir)/lstat64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/madvise.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/maybe_switch_current_tcp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/maybe_switch_current_tcp--quiet-thread-execve.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/mbind.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/mbind-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/mbind-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/mbind-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/membarrier.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11163,6 +14925,9 @@ $(srcdir)/memfd_create-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/g
 $(srcdir)/migrate_pages.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/migrate_pages--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/mincore.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11235,6 +15000,12 @@ $(srcdir)/mount-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/mount-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/move_mount.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/move_mount-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/move_pages.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11247,6 +15018,9 @@ $(srcdir)/move_pages-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tes
 $(srcdir)/move_pages-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/move_pages--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/mq.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11274,6 +15048,18 @@ $(srcdir)/munlockall.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/nanosleep.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/net--decode-fds-dev-netlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/net--decode-fds-none-netlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/net--decode-fds-path-netlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/net--decode-fds-socket-netlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/net-icmp_filter.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11292,6 +15078,9 @@ $(srcdir)/net-packet_mreq-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir
 $(srcdir)/net-sockaddr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/net-sockaddr--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/net-tpacket_req.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11403,6 +15192,9 @@ $(srcdir)/nlattr_ifla_port.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_te
 $(srcdir)/nlattr_ifla_xdp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/nlattr_ifla_xdp-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/nlattr_inet_diag_msg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11502,9 +15294,45 @@ $(srcdir)/oldstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/open.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/open_tree.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/open_tree-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/openat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/openat2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-v-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-v-y-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-v-y-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-v-y-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/orphaned_process_group.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11532,9 +15360,45 @@ $(srcdir)/personality-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_te
 $(srcdir)/personality-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/pidfd_getfd.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_getfd-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_getfd-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_open.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_open--decode-fd-path.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_open--decode-fd-pidfd.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_open--decode-fd-socket.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_open-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_open-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_open-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_open--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/pidfd_send_signal.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/pidfd_send_signal--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/pipe2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11601,12 +15465,21 @@ $(srcdir)/printstrn-umoven-undumpable.gen.test: $(abs_srcdir)/gen_tests.sh $(src
 $(srcdir)/prlimit64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/prlimit64--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/process_vm_readv.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/process_vm_readv--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/process_vm_writev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/process_vm_writev--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/pselect6.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11658,9 +15531,15 @@ $(srcdir)/readlinkat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/reboot.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/recv-MSG_TRUNC.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/recvfrom.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/recvfrom-MSG_TRUNC.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/recvmmsg-timeout.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11709,6 +15588,9 @@ $(srcdir)/rt_sigprocmask.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_test
 $(srcdir)/rt_sigqueueinfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/rt_sigqueueinfo--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/rt_sigreturn.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11721,6 +15603,9 @@ $(srcdir)/rt_sigtimedwait.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tes
 $(srcdir)/rt_tgsigqueueinfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/rt_tgsigqueueinfo--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/s390_guarded_storage.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11751,15 +15636,27 @@ $(srcdir)/sched_rr_get_interval.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/g
 $(srcdir)/sched_xetaffinity.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/sched_xetaffinity--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/sched_xetattr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/sched_xetattr--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/sched_xetparam.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/sched_xetparam--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/sched_xetscheduler.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/sched_xetscheduler--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/sched_yield.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11781,6 +15678,12 @@ $(srcdir)/select-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/semop.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/semop-indirect.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/semtimedop.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/sendfile.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11790,6 +15693,15 @@ $(srcdir)/sendfile64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/set_mempolicy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/set_mempolicy-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/set_mempolicy-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/set_mempolicy-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/setdomainname.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11883,6 +15795,9 @@ $(srcdir)/signal.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/signal_receive.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/signal_receive--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/signalfd4.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11916,6 +15831,9 @@ $(srcdir)/so_peercred-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_te
 $(srcdir)/so_peercred-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/so_peercred--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/sock_filter-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11961,9 +15879,147 @@ $(srcdir)/statfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/statfs64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/status-all.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/status-failed.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/status-failed-long.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/status-failed-status.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/status-none.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/status-successful.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/status-successful-long.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/status-successful-status.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/status-unfinished.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/statx.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/strace--absolute-timestamps.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-time.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-time-precision-s.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-time-precision-ms.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-time-precision-us.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-time-precision-ns.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-unix-precision-s.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-unix-precision-ms.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-unix-precision-us.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-unix-precision-ns.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--follow-forks-output-separately.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--relative-timestamps.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--relative-timestamps-s.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--relative-timestamps-ms.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--relative-timestamps-us.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--relative-timestamps-ns.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--syscall-times.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--syscall-times-s.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--syscall-times-ms.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--syscall-times-us.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--syscall-times-ns.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--strings-in-hex.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--strings-in-hex-all.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--strings-in-hex-non-ascii.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-time.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-time-s.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-time-ms.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-time-us.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-time-ns.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-unix-s.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-unix-ms.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-unix-us.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-unix-ns.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace-n.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace-x.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace-xx.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/swap.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11994,6 +16050,24 @@ $(srcdir)/syslog.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/tee.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/tgkill.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/tgkill--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/threads-execve--quiet-thread-execve.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/threads-execve-q.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/threads-execve-qq.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/threads-execve-qqq.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/time.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -12012,6 +16086,18 @@ $(srcdir)/times.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/times-fail.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/tkill.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/tkill--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_clock.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/trace_fstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -12054,6 +16140,9 @@ $(srcdir)/trace_statfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.
 $(srcdir)/trace_statfs_like.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/trie_test.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/truncate.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -12075,6 +16164,9 @@ $(srcdir)/umovestr-illptr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tes
 $(srcdir)/umovestr3.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/umovestr_cached_adjacent.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/unlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -12141,15 +16233,24 @@ $(srcdir)/xattr-strings.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests
 $(srcdir)/xet_robust_list.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/xet_robust_list--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/xetitimer.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
 $(srcdir)/xetpgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/xetpgid--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/xetpriority.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/xetpriority--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/xettimeofday.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
index bfba2edb06d5d6ef1eb6b497eb2f0bd3c9421876..d4553341097f4bcac3b9c9ed70c1e348ba1f741f 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR__newselect
 
index df5dee8093ffffb55c02663f62287c9ebad68fbb..6ba19a45828eacf1a537d407fa6fb3dc99a453e6 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of accept syscall.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -12,7 +12,7 @@
 
 #include <unistd.h>
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_accept
 
index 0fbdc690ef6a0b8cbd2c236f6e6febab11b2a567..fb010a1916ef3939c734b8f926d8ca62f51ef2bc 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 
 # include <unistd.h>
 # include <sys/socket.h>
-# include <asm/unistd.h>
+# include "scno.h"
 
 # if defined __NR_socketcall && defined __sparc__
 /*
index cbdde6a274f58245ea1ef1207aca9f8ac5099fdf..8bdbb62657ec6cc67e636048065881317ffd95b0 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_access
 
index 7d80e6f8050922eb7e3a726c4e88201d45db9bb1..adcf5ca50cb9b5ad089016cfd1f5915cd5c2a14b 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (access -a30 -access_sample); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (access -a30 --trace-path=access_sample); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a30 -access_sample
+run_strace_match_diff -a30 --trace-path=access_sample
index 2127df604ed4c9e9afa372eceeea91011086e40f..16b67cbc0b88ec966279ecb56229ceaf9d4ff492 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_acct
 
index c1014927de2f20b22fb746bb949d18bca09ea6cd..20163274444e698eec200688ba7face3285d1b52 100644 (file)
@@ -2,14 +2,13 @@
  * Check decoding of add_key syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
 #include "scno.h"
 
 #ifdef __NR_add_key
index 87d3acdc7c6dfd812506f4084e52b33bf61d34ad..3b88d04e586742eb29b8613736b843eef85616af 100644 (file)
@@ -8,26 +8,45 @@
  */
 
 #include "tests.h"
-#include <stddef.h>
-#include <stdio.h>
-#include <stdint.h>
-#include <string.h>
-#include <sys/timex.h>
+#include "scno.h"
 
-#include "xlat.h"
-#include "xlat/adjtimex_state.h"
-#include "xlat/adjtimex_status.h"
+#ifdef __NR_adjtimex
+
+# include <stddef.h>
+# include <stdio.h>
+# include <stdint.h>
+# include <string.h>
+# include <sys/timex.h>
+# include <unistd.h>
+
+# include "kernel_old_timex.h"
+
+# include "xlat.h"
+# include "xlat/adjtimex_state.h"
+# include "xlat/adjtimex_status.h"
+
+static const char *errstr;
+
+static long
+k_adjtimex(void *const buf)
+{
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = (uintptr_t) buf;
+       const long rc = syscall(__NR_adjtimex, arg1, bad, bad, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
 
 int
 main(void)
 {
-       int state = adjtimex(NULL);
-       printf("adjtimex(NULL) = %s\n", sprintrc(state));
+       int state = k_adjtimex(NULL);
+       printf("adjtimex(NULL) = %s\n", errstr);
 
-       TAIL_ALLOC_OBJECT_CONST_PTR(struct timex, tx);
+       TAIL_ALLOC_OBJECT_CONST_PTR(kernel_old_timex_t, tx);
        memset(tx, 0, sizeof(*tx));
 
-       state = adjtimex(tx);
+       state = k_adjtimex(tx);
        if (state < 0)
                perror_msg_and_skip("adjtimex");
 
@@ -60,11 +79,7 @@ main(void)
               (intmax_t) tx->calcnt,
               (intmax_t) tx->errcnt,
               (intmax_t) tx->stbcnt,
-#ifdef HAVE_STRUCT_TIMEX_TAI
               tx->tai,
-#else
-              *(const int *)((const void *) tx + offsetofend(struct timex, stbcnt)),
-#endif
               state);
        printxval(adjtimex_state, (unsigned int) state, NULL);
        puts(")");
@@ -72,3 +87,9 @@ main(void)
        puts("+++ exited with 0 +++");
        return 0;
 }
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_adjtimex")
+
+#endif
index 1382199881941365e86068b0d8b18a99d1e38f2a..f8c2f8616667c44c95ea683dce52d4e0ae898af8 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -12,7 +12,7 @@
 #include <stdio.h>
 #include <time.h>
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_io_setup \
  && defined __NR_io_submit \
@@ -117,7 +117,7 @@ main(void)
                        /* In order to make record valid */
                        .aio_nbytes = (size_t) 0x1020304050607080ULL,
                        .aio_offset = 0xdeadda7abadc0dedULL,
-# ifdef IOCB_FLAG_RESFD
+# ifdef HAVE_STRUCT_IOCB_AIO_FLAGS
                        .aio_flags = 0xfacef157,
                        .aio_resfd = 0xded1ca7e,
 # endif
@@ -298,30 +298,31 @@ main(void)
        printf("io_submit(%#lx, %ld, ["
               "{aio_data=%#" PRI__x64 ", aio_key=%u"
                ", aio_lio_opcode=%hu /* IOCB_CMD_??? */, aio_fildes=%d}"
-               ", {aio_key=%u, aio_lio_opcode=IOCB_CMD_PWRITE, aio_reqprio=%hd"
-               ", aio_fildes=%d, aio_buf=NULL"
+               ", {aio_data=0, aio_key=%u, aio_lio_opcode=IOCB_CMD_PWRITE"
+               ", aio_reqprio=IOPRIO_PRIO_VALUE(0x5 /* IOPRIO_CLASS_??? */"
+               ", 7919), aio_fildes=%d, aio_buf=NULL"
                ", aio_nbytes=%" PRI__u64 ", aio_offset=%" PRI__d64
-# ifdef IOCB_FLAG_RESFD
-               ", aio_resfd=%d, aio_flags=%#x"
+# ifdef HAVE_STRUCT_IOCB_AIO_FLAGS
+               ", aio_flags=IOCB_FLAG_RESFD|IOCB_FLAG_IOPRIO|%#x, aio_resfd=%d"
 # endif
-              "}, {aio_key=%u, aio_lio_opcode=IOCB_CMD_PWRITE"
+              "}, {aio_data=0, aio_key=%u, aio_lio_opcode=IOCB_CMD_PWRITE"
                ", aio_reqprio=%hd, aio_fildes=%d, aio_buf=%#" PRI__x64
                ", aio_nbytes=%" PRI__u64 ", aio_offset=%" PRI__d64
-              "}, {aio_key=%u, aio_lio_opcode=IOCB_CMD_PWRITE"
+              "}, {aio_data=0, aio_key=%u, aio_lio_opcode=IOCB_CMD_PWRITE"
                ", aio_reqprio=%hd, aio_fildes=%d"
                ", aio_buf=\"\\0\\1\\2\\3%.28s\"..."
                ", aio_nbytes=%" PRI__u64 ", aio_offset=%" PRI__d64
-              "}, {aio_key=%u, aio_lio_opcode=IOCB_CMD_PWRITEV"
+              "}, {aio_data=0, aio_key=%u, aio_lio_opcode=IOCB_CMD_PWRITEV"
                ", aio_reqprio=%hd, aio_fildes=%d, aio_buf=%#" PRI__x64
                ", aio_nbytes=%" PRI__u64 ", aio_offset=%" PRI__d64
               "}, NULL, %#lx, ... /* %p */]) = ",
               *ctx, 1057L,
               cbv2[0].aio_data, cbv2[0].aio_key,
               cbv2[0].aio_lio_opcode, cbv2[0].aio_fildes,
-              cbv2[1].aio_key, cbv2[1].aio_reqprio, cbv2[1].aio_fildes,
+              cbv2[1].aio_key, cbv2[1].aio_fildes,
               cbv2[1].aio_nbytes, cbv2[1].aio_offset,
-# ifdef IOCB_FLAG_RESFD
-              cbv2[1].aio_resfd, cbv2[1].aio_flags,
+# ifdef HAVE_STRUCT_IOCB_AIO_FLAGS
+              cbv2[1].aio_flags & ~3, cbv2[1].aio_resfd,
 # endif
               cbv2[2].aio_key, cbv2[2].aio_reqprio, cbv2[2].aio_fildes,
               cbv2[2].aio_buf, cbv2[2].aio_nbytes, cbv2[2].aio_offset,
index 8bea0b7b9b07b5cea144439098e4f35e7905e27e..f82f690a98cc82d4d9780d4f1e78af049d01ed0b 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of io_pgetevents syscall.
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,6 @@
 
 #include "tests.h"
 #include <unistd.h>
-#include <asm/unistd.h>
 #include "scno.h"
 
 #if defined __NR_io_setup && defined __NR_io_pgetevents
index 35404535b814fa2463d432562a1bf460bee6816d..4411e114918585cc44ec97950e5258708abb6e75 100644 (file)
@@ -2,13 +2,14 @@
  * This file is part of alarm strace test.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_alarm
 
@@ -18,8 +19,8 @@
 int
 main(void)
 {
-       int rc = syscall(__NR_alarm, (unsigned long) 0xffffffff0000002aULL);
-       printf("alarm(%u) = %d\n", 42, rc);
+       const unsigned long arg = (unsigned long) 0xffffffff0000002aULL;
+       printf("alarm(%u) = %s\n", 42, sprintrc(syscall(__NR_alarm, arg)));
 
        puts("+++ exited with 0 +++");
        return 0;
index a69adc39aae5c8f3286452eb38d038836f5e40da..dcea6f1dbd126873672f5342cbb570754fe0d830 100644 (file)
@@ -2,6 +2,7 @@
  * Check decoding of fault injected exit_group syscall.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -9,7 +10,7 @@
 
 #include "tests.h"
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 int
 main(void)
index 3b7aed8587326aa1595e9cd3d4b6e181c695b025..4ee6714e1eb42c8580fbee6941e365afce50e9e5 100644 (file)
@@ -2,6 +2,7 @@
  * This file is part of attach-f-p strace test.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -14,7 +15,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <sys/stat.h>
-#include <asm/unistd.h>
+#include "scno.h"
 #include <unistd.h>
 
 #define N 3
index 7a135871c374ea70b6714ae563555d57b919ecde..c25235cd395204d57a8ea9d9d1a7fb11c90470cc 100755 (executable)
@@ -3,7 +3,7 @@
 # Check -bexecve behavior.
 #
 # Copyright (c) 2015 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2015-2018 The strace developers.
+# Copyright (c) 2015-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -16,23 +16,36 @@ run_strace_redir()
        $STRACE "$@" 2> "$LOG"
 }
 
-run_strace_redir -enone ../set_ptracer_any true ||
+run_strace_redir --quiet=personality -enone ../set_ptracer_any true ||
        dump_log_and_fail_with "$STRACE $args: unexpected exit status"
 
-run_strace_redir -enone ../set_ptracer_any false
+run_strace_redir --quiet=personality -enone ../set_ptracer_any false
 [ $? -eq 1 ] ||
        dump_log_and_fail_with "$STRACE $args: unexpected exit status"
 
-run_strace_redir -bexecve -enone ../set_ptracer_any false ||
+run_strace_redir --quiet=personality -bexecve -enone ../set_ptracer_any false ||
        dump_log_and_fail_with "$STRACE $args: unexpected exit status"
 
 pattern_detached='[^:]*strace: Process [1-9][0-9]* detached'
-pattern_personality='[^:]*strace: \[ Process PID=[1-9][0-9]* runs in .* mode. \]'
 
 LC_ALL=C grep -x "$pattern_detached" "$LOG" > /dev/null ||
        dump_log_and_fail_with "$STRACE $args: output mismatch"
 
-if LC_ALL=C grep -E -v -x "($pattern_detached|$pattern_personality)" "$LOG" > /dev/null; then
+if LC_ALL=C grep -E -v -x "$pattern_detached" "$LOG" > /dev/null; then
+       dump_log_and_fail_with "$STRACE $args: unexpected output"
+fi
+
+run_strace_redir --quiet=personality --seccomp-bpf -bexecve -enone ../set_ptracer_any false ||
+       dump_log_and_fail_with "$STRACE $args: unexpected exit status"
+
+pattern_seccomp='[^:]*strace: --seccomp-bpf is not enabled because it is not compatible with -b'
+
+LC_ALL=C grep -x "$pattern_detached" "$LOG" > /dev/null &&
+LC_ALL=C grep -x "$pattern_seccomp" "$LOG" > /dev/null ||
+       dump_log_and_fail_with "$STRACE $args: output mismatch"
+
+pattern_all="$pattern_detached|$pattern_seccomp"
+if LC_ALL=C grep -E -v -x "$pattern_all" "$LOG" > /dev/null; then
        dump_log_and_fail_with "$STRACE $args: unexpected output"
 fi
 
diff --git a/tests-m32/block_reset_run.c b/tests-m32/block_reset_run.c
new file mode 100644 (file)
index 0000000..cba77bf
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ * Execute the specified command with a blocked default signal handler.
+ *
+ * Copyright (c) 2017-2019 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <signal.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+int
+main(int ac, char **av)
+{
+       if (ac < 3)
+               error_msg_and_fail("usage: block_reset_run signo path...");
+
+       sigset_t mask;
+       sigemptyset(&mask);
+       const int signo = atoi(av[1]);
+       if (sigaddset(&mask, signo))
+               perror_msg_and_fail("sigaddset: %s", av[1]);
+       if (sigprocmask(SIG_BLOCK, &mask, NULL))
+               perror_msg_and_fail("sigprocmask");
+       if (signal(signo, SIG_DFL) == SIG_ERR)
+               perror_msg_and_fail("signal: %s", av[1]);
+
+       execvp(av[2], av + 2);
+       perror_msg_and_fail("execvp: %s", av[2]);
+}
index 3e18591d3c300ab995c704ae63520a950e1abe2e..9428692ea6d38c3e17d0ca8dd07e37bd5fe73c13 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Check bpf(BPF_OBJ_GET_INFO_BY_FD) decoding.
  *
- * Copyright (c) 2018-2019 The strace developers.
+ * Copyright (c) 2018-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -21,7 +21,6 @@
 #include <string.h>
 #include <unistd.h>
 #include <sys/sysmacros.h>
-#include <asm/unistd.h>
 
 #include "print_fields.h"
 #include "scno.h"
@@ -88,6 +87,10 @@ print_map_create(void *attr_void, size_t size, long rc)
                printf(", btf_fd=0</dev/null>"
                       ", btf_key_type_id=0, btf_value_type_id=0");
        }
+       if (size > offsetof(struct BPF_MAP_CREATE_struct,
+                           btf_vmlinux_value_type_id)) {
+               printf(", btf_vmlinux_value_type_id=0");
+       }
        printf("}, %zu) = ", size);
        if (rc >= 0)
                printf("%ld<anon_inode:bpf-map>\n", rc);
@@ -206,6 +209,10 @@ print_prog_load(void *attr_void, size_t size, long rc)
                printf(", line_info=NULL");
        if (size > offsetof(struct BPF_PROG_LOAD_struct, line_info_cnt))
                printf(", line_info_cnt=0");
+       if (size > offsetof(struct BPF_PROG_LOAD_struct, attach_btf_id))
+               printf(", attach_btf_id=0");
+       if (size > offsetof(struct BPF_PROG_LOAD_struct, attach_prog_fd))
+               printf(", attach_prog_fd=0</dev/null>");
        printf("}, %zu) = ", size);
        if (rc >= 0)
                printf("%ld<anon_inode:bpf-prog>\n", rc);
@@ -232,8 +239,26 @@ try_bpf(kernel_ulong_t cmd, void (*printer)(void *attr, size_t size, long rc),
 }
 
 int
-main(void)
+main(int ac, char **av)
 {
+       /*
+        * There is a delay when the locked memory is being reclaimed
+        * after a BPF program or map is removed.
+        *
+        * Privileged tools like iproute2 and bpftool workaround this
+        * by raising RLIMIT_MEMLOCK to infinity prior to creating
+        * BPF objects.
+        *
+        * This test is expected to be invoked without extra privileges
+        * and therefore does not have this option.
+        *
+        * The approach taken by this test is serialize all invocations
+        * and insert a delay long enough to let the locked memory be
+        * reclaimed.
+        */
+       lock_file_by_dirname(av[0], "bpf-obj_get_info_by_fd");
+       sleep(1);
+
        struct BPF_MAP_CREATE_struct bpf_map_create_attr = {
                .map_type    = BPF_MAP_TYPE_ARRAY,
                .key_size    = 4,
@@ -260,7 +285,7 @@ main(void)
                .prog_name    = "test_prog",
        };
        size_t bpf_prog_load_attr_sizes[] = {
-               sizeof(bpf_prog_load_attr),
+               BPF_PROG_LOAD_struct_size,
                offsetofend(struct BPF_PROG_LOAD_struct, prog_name),
                offsetofend(struct BPF_PROG_LOAD_struct, prog_flags),
                offsetofend(struct BPF_PROG_LOAD_struct, kern_version),
@@ -331,6 +356,10 @@ main(void)
        if (bpf_map_get_info_attr.info_len >
            offsetof(struct bpf_map_info_struct, ifindex))
                printf(", ifindex=%u", map_info->ifindex);
+       if (bpf_map_get_info_attr.info_len >
+           offsetof(struct bpf_map_info_struct, btf_vmlinux_value_type_id))
+               printf(", btf_vmlinux_value_type_id=%u",
+                      map_info->btf_vmlinux_value_type_id);
        if (bpf_map_get_info_attr.info_len >
            offsetof(struct bpf_map_info_struct, netns_dev))
                printf(", netns_dev=makedev(%#x, %#x)",
diff --git a/tests-m32/bpf-success-long-y.c b/tests-m32/bpf-success-long-y.c
new file mode 100644 (file)
index 0000000..d0e9b2a
--- /dev/null
@@ -0,0 +1,3 @@
+#define INJECT_RETVAL ((long) 0xbadc0de1e55beefULL)
+#define FD0_PATH "</dev/full>"
+#include "bpf.c"
diff --git a/tests-m32/bpf-success-long-y.test b/tests-m32/bpf-success-long-y.test
new file mode 100755 (executable)
index 0000000..5ed7e85
--- /dev/null
@@ -0,0 +1,16 @@
+:#!/bin/sh -efu
+#
+# Copyright (c) 2018-2020 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/scno_tampering.sh"
+
+case "$SIZEOF_LONG" in
+       4) rval=508935919;;
+       8) rval=841540765612359407;;
+esac
+
+run_strace -a20 -y -e trace=bpf -e inject=bpf:retval="${rval}" ../bpf-success-long-y < /dev/full > "$EXP"
+match_diff "$LOG" "$EXP"
index fd29ab442276d4ccbb4530965a7b5454d3e069e9..4f58ca294df30b4db692f9eed9ef3045fece3c9f 100644 (file)
@@ -2,7 +2,7 @@
  * Check bpf syscall decoding.
  *
  * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2019 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -16,7 +16,6 @@
 #include <string.h>
 #include <unistd.h>
 
-#include <asm/unistd.h>
 #include "scno.h"
 
 #ifdef HAVE_LINUX_BPF_H
@@ -28,6 +27,8 @@
 
 #include "xlat.h"
 #include "xlat/bpf_commands.h"
+#include "xlat/bpf_map_types.h"
+#include "xlat/bpf_prog_types.h"
 
 #if defined MPERS_IS_m32 || SIZEOF_KERNEL_LONG_T > 4
 # define BIG_ADDR(addr64_, addr32_) addr64_
 # define BIG_ADDR_MAYBE(addr_)
 #endif
 
+#ifndef FD0_PATH
+# define FD0_PATH ""
+#endif
+
 #ifndef HAVE_STRUCT_BPF_INSN
 struct bpf_insn {
        uint8_t code;
@@ -74,6 +79,12 @@ union bpf_attr_data {
        BPF_ATTR_DATA_FIELD(BPF_BTF_LOAD);
        BPF_ATTR_DATA_FIELD(BPF_BTF_GET_FD_BY_ID);
        BPF_ATTR_DATA_FIELD(BPF_TASK_FD_QUERY);
+       BPF_ATTR_DATA_FIELD(BPF_MAP_FREEZE);
+       BPF_ATTR_DATA_FIELD(BPF_MAP_LOOKUP_BATCH);
+       BPF_ATTR_DATA_FIELD(BPF_MAP_UPDATE_BATCH);
+       BPF_ATTR_DATA_FIELD(BPF_MAP_DELETE_BATCH);
+       BPF_ATTR_DATA_FIELD(BPF_LINK_CREATE);
+       BPF_ATTR_DATA_FIELD(BPF_LINK_UPDATE);
        char char_data[256];
 };
 
@@ -108,8 +119,8 @@ sys_bpf(kernel_ulong_t cmd, kernel_ulong_t attr, kernel_ulong_t size)
 
 #ifdef INJECT_RETVAL
        if (rc != INJECT_RETVAL)
-               error_msg_and_fail("Got a return value of %ld != %d",
-                                  rc, INJECT_RETVAL);
+               error_msg_and_fail("Got a return value of %ld != %ld",
+                                  rc, (long) INJECT_RETVAL);
 
        static char inj_errstr[4096];
 
@@ -250,6 +261,8 @@ init_BPF_MAP_CREATE_attr7(struct bpf_attr_check *check)
        attr->map_ifindex = ifindex_lo();
 }
 
+static_assert(ARRAY_SIZE(bpf_map_types_xdata) == 28,
+             "The map_type for tests 1 and 2 below needs to be updated");
 static struct bpf_attr_check BPF_MAP_CREATE_checks[] = {
        {
                .data = { .BPF_MAP_CREATE_data = { .map_type = 2 } },
@@ -259,7 +272,7 @@ static struct bpf_attr_check BPF_MAP_CREATE_checks[] = {
        },
        { /* 1 */
                .data = { .BPF_MAP_CREATE_data = {
-                       .map_type = 20,
+                       .map_type = 27,
                        .key_size = 4,
                        .value_size = 8,
                        .max_entries = 256,
@@ -269,7 +282,7 @@ static struct bpf_attr_check BPF_MAP_CREATE_checks[] = {
                        .map_name = "0123456789abcde",
                } },
                .size = offsetof(struct BPF_MAP_CREATE_struct, map_name) + 8,
-               .str = "map_type=BPF_MAP_TYPE_REUSEPORT_SOCKARRAY, key_size=4"
+               .str = "map_type=BPF_MAP_TYPE_RINGBUF, key_size=4"
                       ", value_size=8, max_entries=256"
                       ", map_flags=BPF_F_NO_PREALLOC|BPF_F_NO_COMMON_LRU"
                                   "|BPF_F_NUMA_NODE|BPF_F_RDONLY|BPF_F_WRONLY"
@@ -281,21 +294,21 @@ static struct bpf_attr_check BPF_MAP_CREATE_checks[] = {
        },
        { /* 2 */
                .data = { .BPF_MAP_CREATE_data = {
-                       .map_type = 24,
+                       .map_type = 28,
                        .key_size = 0xface1e55,
                        .value_size = 0xbadc0ded,
                        .max_entries = 0xbeefcafe,
-                       .map_flags = 0xffffff80,
+                       .map_flags = 0xfffff800,
                        .inner_map_fd = 2718281828,
                        .numa_node = -1,
                        .map_name = "",
                        .map_ifindex = 3141592653,
                } },
                .size = offsetofend(struct BPF_MAP_CREATE_struct, map_ifindex),
-               .str = "map_type=0x18 /* BPF_MAP_TYPE_??? */"
+               .str = "map_type=0x1c /* BPF_MAP_TYPE_??? */"
                       ", key_size=4207812181, value_size=3134983661"
                       ", max_entries=3203386110"
-                      ", map_flags=0xffffff80 /* BPF_F_??? */"
+                      ", map_flags=0xfffff800 /* BPF_F_??? */"
                       ", inner_map_fd=-1576685468"
                       ", map_name=\"\", map_ifindex=3141592653",
 
@@ -316,7 +329,8 @@ static struct bpf_attr_check BPF_MAP_CREATE_checks[] = {
                       ", max_entries=3203386110"
                       ", map_flags=BPF_F_NO_PREALLOC|BPF_F_NUMA_NODE"
                                   "|BPF_F_RDONLY|BPF_F_STACK_BUILD_ID"
-                                  "|0xc0dede80",
+                                  "|BPF_F_RDONLY_PROG|BPF_F_CLONE"
+                                  "|BPF_F_MMAPABLE|0xc0ded800",
        },
        { /* 4 */
                .data = { .BPF_MAP_CREATE_data = {
@@ -334,7 +348,8 @@ static struct bpf_attr_check BPF_MAP_CREATE_checks[] = {
                       ", max_entries=3203386110"
                       ", map_flags=BPF_F_NO_PREALLOC|BPF_F_NUMA_NODE"
                                   "|BPF_F_RDONLY|BPF_F_STACK_BUILD_ID"
-                                  "|0xc0dede80"
+                                  "|BPF_F_RDONLY_PROG|BPF_F_CLONE"
+                                  "|BPF_F_MMAPABLE|0xc0ded800"
                       ", inner_map_fd=-1576685468",
        },
        { /* 5 */
@@ -353,7 +368,8 @@ static struct bpf_attr_check BPF_MAP_CREATE_checks[] = {
                       ", max_entries=3203386110"
                       ", map_flags=BPF_F_NO_PREALLOC|BPF_F_NUMA_NODE"
                                   "|BPF_F_RDONLY|BPF_F_STACK_BUILD_ID"
-                                  "|0xc0dede80"
+                                  "|BPF_F_RDONLY_PROG|BPF_F_CLONE"
+                                  "|BPF_F_MMAPABLE|0xc0ded800"
                       ", inner_map_fd=-1576685468"
                       ", numa_node=4294967295 /* NUMA_NO_NODE */",
        },
@@ -374,7 +390,8 @@ static struct bpf_attr_check BPF_MAP_CREATE_checks[] = {
                       ", max_entries=3203386110"
                       ", map_flags=BPF_F_NO_PREALLOC|BPF_F_NUMA_NODE"
                                   "|BPF_F_RDONLY|BPF_F_STACK_BUILD_ID"
-                                  "|0xc0dede80"
+                                  "|BPF_F_RDONLY_PROG|BPF_F_CLONE"
+                                  "|BPF_F_MMAPABLE|0xc0ded800"
                       ", inner_map_fd=-1576685468"
                       ", numa_node=4294967295 /* NUMA_NO_NODE */"
                       ", map_name=\"fedcba987654321\"...",
@@ -396,7 +413,8 @@ static struct bpf_attr_check BPF_MAP_CREATE_checks[] = {
                       ", max_entries=3203386110"
                       ", map_flags=BPF_F_NO_PREALLOC|BPF_F_NUMA_NODE"
                                   "|BPF_F_RDONLY|BPF_F_STACK_BUILD_ID"
-                                  "|0xc0dede80"
+                                  "|BPF_F_RDONLY_PROG|BPF_F_CLONE"
+                                  "|BPF_F_MMAPABLE|0xc0ded800"
                       ", inner_map_fd=-1576685468"
                       ", numa_node=4294967295 /* NUMA_NO_NODE */"
                       ", map_name=\"0123456789abcde\""
@@ -416,12 +434,34 @@ static struct bpf_attr_check BPF_MAP_CREATE_checks[] = {
                       ", value_size=0"
                       ", max_entries=0"
                       ", map_flags=0"
-                      ", inner_map_fd=0"
+                      ", inner_map_fd=0" FD0_PATH
+                      ", map_name=\"\""
+                      ", map_ifindex=0"
+                      ", btf_fd=-1159983635"
+                      ", btf_key_type_id=4207869677"
+                      ", btf_value_type_id=3405705229"
+       },
+       { /* 9 */
+               .data = { .BPF_MAP_CREATE_data = {
+                       .btf_fd = 0xbadc0ded,
+                       .btf_key_type_id = 0xfacefeed,
+                       .btf_value_type_id = 0xcafef00d,
+                       .btf_vmlinux_value_type_id = 0xdeadc0de,
+               } },
+               .size = offsetofend(struct BPF_MAP_CREATE_struct,
+                                   btf_vmlinux_value_type_id),
+               .str = "map_type=BPF_MAP_TYPE_UNSPEC"
+                      ", key_size=0"
+                      ", value_size=0"
+                      ", max_entries=0"
+                      ", map_flags=0"
+                      ", inner_map_fd=0" FD0_PATH
                       ", map_name=\"\""
                       ", map_ifindex=0"
                       ", btf_fd=-1159983635"
                       ", btf_key_type_id=4207869677"
                       ", btf_value_type_id=3405705229"
+                      ", btf_vmlinux_value_type_id=3735929054"
        },
 };
 
@@ -435,10 +475,12 @@ static const struct bpf_attr_check BPF_MAP_LOOKUP_ELEM_checks[] = {
                .data = { .BPF_MAP_LOOKUP_ELEM_data = {
                        .map_fd = -1,
                        .key = 0xdeadbeef,
-                       .value = 0xbadc0ded
+                       .value = 0xbadc0ded,
+                       .flags = 4
                } },
-               .size = offsetofend(struct BPF_MAP_LOOKUP_ELEM_struct, value),
+               .size = offsetofend(struct BPF_MAP_LOOKUP_ELEM_struct, flags),
                .str = "map_fd=-1, key=0xdeadbeef, value=0xbadc0ded"
+                      ", flags=BPF_F_LOCK"
        }
 };
 
@@ -496,6 +538,14 @@ static const struct bpf_attr_check BPF_MAP_GET_NEXT_KEY_checks[] = {
        }
 };
 
+static const struct bpf_attr_check BPF_MAP_FREEZE_checks[] = {
+       {
+               .data = { .BPF_MAP_FREEZE_data = { .map_fd = -1 } },
+               .size = offsetofend(struct BPF_MAP_FREEZE_struct, map_fd),
+               .str = "map_fd=-1"
+       }
+};
+
 static const struct bpf_insn insns[] = {
        {
                .code = 0x95,
@@ -556,7 +606,7 @@ print_BPF_PROG_LOAD_attr3(const struct bpf_attr_check *check, unsigned long addr
               ", insns=" INSNS_FMT ", license=\"%s\", log_level=2718281828"
               ", log_size=%u, log_buf=%p"
               ", kern_version=KERNEL_VERSION(51966, 240, 13)"
-              ", prog_flags=0x4 /* BPF_F_??? */"
+              ", prog_flags=0x10 /* BPF_F_??? */"
               ", prog_name=\"0123456789abcde\"..., prog_ifindex=3203399405",
               (unsigned int) ARRAY_SIZE(insns), INSNS_ARG, license,
               log_buf_size, get_log_buf_tail());
@@ -582,13 +632,16 @@ print_BPF_PROG_LOAD_attr4(const struct bpf_attr_check *check, unsigned long addr
               ", license=\"%s\", log_level=2718281828, log_size=4"
               ", log_buf=\"log \"..."
               ", kern_version=KERNEL_VERSION(51966, 240, 13)"
-              ", prog_flags=BPF_F_STRICT_ALIGNMENT|BPF_F_ANY_ALIGNMENT|0x4"
+              ", prog_flags=BPF_F_STRICT_ALIGNMENT|BPF_F_ANY_ALIGNMENT"
+              "|BPF_F_TEST_RND_HI32|BPF_F_TEST_STATE_FREQ|0x10"
               ", prog_name=\"0123456789abcde\"..., prog_ifindex=%s"
               ", expected_attach_type=BPF_CGROUP_INET6_BIND",
               (unsigned int) ARRAY_SIZE(insns), INSNS_ARG,
               license, IFINDEX_LO_STR);
 }
 
+static_assert(ARRAY_SIZE(bpf_prog_types_xdata) == 31,
+             "The prog_type for test 5 below needs to be updated");
 static struct bpf_attr_check BPF_PROG_LOAD_checks[] = {
        {
                .data = { .BPF_PROG_LOAD_data = { .prog_type = 1 } },
@@ -598,7 +651,7 @@ static struct bpf_attr_check BPF_PROG_LOAD_checks[] = {
        },
        { /* 1 */
                .data = { .BPF_PROG_LOAD_data = {
-                       .prog_type = 22,
+                       .prog_type = 31,
                        .insn_cnt = 0xbadc0ded,
                        .insns = 0,
                        .license = 0,
@@ -609,7 +662,7 @@ static struct bpf_attr_check BPF_PROG_LOAD_checks[] = {
                        .prog_flags = 0,
                } },
                .size = offsetofend(struct BPF_PROG_LOAD_struct, prog_flags),
-               .str = "prog_type=0x16 /* BPF_PROG_TYPE_??? */"
+               .str = "prog_type=0x1f /* BPF_PROG_TYPE_??? */"
                       ", insn_cnt=3134983661, insns=NULL, license=NULL"
                       ", log_level=42, log_size=3141592653, log_buf=NULL"
                       ", kern_version=KERNEL_VERSION(51966, 240, 13)"
@@ -629,7 +682,7 @@ static struct bpf_attr_check BPF_PROG_LOAD_checks[] = {
                        .prog_name = "fedcba987654321",
                } },
                .size = offsetofend(struct BPF_PROG_LOAD_struct, prog_name),
-               .str = "prog_type=BPF_PROG_TYPE_SK_REUSEPORT"
+               .str = "prog_type=BPF_PROG_TYPE_LIRC_MODE2"
                       ", insn_cnt=3134983661"
                       ", insns=" BIG_ADDR("0xffffffff00000000", "NULL")
                       ", license=" BIG_ADDR("0xffffffff00000000", "NULL")
@@ -646,7 +699,7 @@ static struct bpf_attr_check BPF_PROG_LOAD_checks[] = {
                        .log_level = 2718281828U,
                        .log_size = log_buf_size,
                        .kern_version = 0xcafef00d,
-                       .prog_flags = 4,
+                       .prog_flags = 16,
                        .prog_name = "0123456789abcdef",
                        .prog_ifindex = 0xbeeffeed,
                } },
@@ -661,7 +714,7 @@ static struct bpf_attr_check BPF_PROG_LOAD_checks[] = {
                        .log_level = 2718281828U,
                        .log_size = 4,
                        .kern_version = 0xcafef00d,
-                       .prog_flags = 7,
+                       .prog_flags = 0x1f,
                        .prog_name = "0123456789abcdef",
                        .expected_attach_type = 9,
                } },
@@ -671,6 +724,30 @@ static struct bpf_attr_check BPF_PROG_LOAD_checks[] = {
                .print_fn = print_BPF_PROG_LOAD_attr4
        },
        { /* 5 */
+               .data = { .BPF_PROG_LOAD_data = {
+                       .prog_type = 30,
+                       .insn_cnt = 0xbadc0ded,
+                       .insns = 0xffffffff00000000,
+                       .license = 0xffffffff00000000,
+                       .log_level = 2718281828U,
+                       .log_size = log_buf_size,
+                       .log_buf = 0xffffffff00000000,
+                       .kern_version = 0xcafef00d,
+                       .prog_flags = 1,
+                       .prog_name = "fedcba987654321",
+               } },
+               .size = offsetofend(struct BPF_PROG_LOAD_struct, prog_name),
+               .str = "prog_type=BPF_PROG_TYPE_SK_LOOKUP"
+                      ", insn_cnt=3134983661"
+                      ", insns=" BIG_ADDR("0xffffffff00000000", "NULL")
+                      ", license=" BIG_ADDR("0xffffffff00000000", "NULL")
+                      ", log_level=2718281828, log_size=4096"
+                      ", log_buf=" BIG_ADDR("0xffffffff00000000", "NULL")
+                      ", kern_version=KERNEL_VERSION(51966, 240, 13)"
+                      ", prog_flags=BPF_F_STRICT_ALIGNMENT"
+                      ", prog_name=\"fedcba987654321\"",
+       },
+       { /* 6 */
                .data = { .BPF_PROG_LOAD_data = {
                        .prog_flags = 2,
                        .expected_attach_type = 17,
@@ -680,10 +757,12 @@ static struct bpf_attr_check BPF_PROG_LOAD_checks[] = {
                        .func_info_cnt = 0xdad3bef4,
                        .line_info_rec_size = 0xdad5bef6,
                        .line_info = 0xfac5fed5fac7fed8,
-                       .line_info_cnt = 0xdad7bef8
+                       .line_info_cnt = 0xdad7bef8,
+                       .attach_btf_id = 0xdad7befa,
+                       .attach_prog_fd = 0xbadc0def,
                } },
                .size = offsetofend(struct BPF_PROG_LOAD_struct,
-                                   line_info_cnt),
+                                   attach_prog_fd),
                .str = "prog_type=BPF_PROG_TYPE_UNSPEC"
                       ", insn_cnt=0"
                       ", insns=NULL"
@@ -703,6 +782,8 @@ static struct bpf_attr_check BPF_PROG_LOAD_checks[] = {
                       ", line_info_rec_size=3671441142"
                       ", line_info=0xfac5fed5fac7fed8"
                       ", line_info_cnt=3671572216"
+                      ", attach_btf_id=3671572218"
+                      ", attach_prog_fd=-1159983633"
        },
 };
 
@@ -717,7 +798,7 @@ static struct bpf_attr_check BPF_OBJ_PIN_checks[] = {
        {
                .data = { .BPF_OBJ_PIN_data = { .pathname = 0 } },
                .size = offsetofend(struct BPF_OBJ_PIN_struct, pathname),
-               .str = "pathname=NULL, bpf_fd=0"
+               .str = "pathname=NULL, bpf_fd=0" FD0_PATH
        },
        {
                .data = { .BPF_OBJ_PIN_data = {
@@ -725,7 +806,7 @@ static struct bpf_attr_check BPF_OBJ_PIN_checks[] = {
                } },
                .size = offsetofend(struct BPF_OBJ_PIN_struct, pathname),
                .str = "pathname=" BIG_ADDR("0xffffffffffffffff", "0xffffffff")
-                      ", bpf_fd=0",
+                      ", bpf_fd=0" FD0_PATH,
        },
        {
                .data = { .BPF_OBJ_PIN_data = { .bpf_fd = -1 } },
@@ -751,7 +832,7 @@ static const struct bpf_attr_check BPF_PROG_ATTACH_checks[] = {
        {
                .data = { .BPF_PROG_ATTACH_data = { .target_fd = -1 } },
                .size = offsetofend(struct BPF_PROG_ATTACH_struct, target_fd),
-               .str = "target_fd=-1, attach_bpf_fd=0"
+               .str = "target_fd=-1, attach_bpf_fd=0" FD0_PATH
                       ", attach_type=BPF_CGROUP_INET_INGRESS, attach_flags=0"
        },
        {
@@ -759,13 +840,28 @@ static const struct bpf_attr_check BPF_PROG_ATTACH_checks[] = {
                        .target_fd = -1,
                        .attach_bpf_fd = -2,
                        .attach_type = 2,
-                       .attach_flags = 1
+                       .attach_flags = 7
                } },
                .size = offsetofend(struct BPF_PROG_ATTACH_struct, attach_flags),
                .str = "target_fd=-1, attach_bpf_fd=-2"
                       ", attach_type=BPF_CGROUP_INET_SOCK_CREATE"
-                      ", attach_flags=BPF_F_ALLOW_OVERRIDE"
-       }
+                      ", attach_flags=BPF_F_ALLOW_OVERRIDE|BPF_F_ALLOW_MULTI"
+                                      "|BPF_F_REPLACE"
+       },
+       {
+               .data = { .BPF_PROG_ATTACH_data = {
+                       .target_fd = -1,
+                       .attach_bpf_fd = -2,
+                       .attach_type = 2,
+                       .attach_flags = 0xf8,
+                       .replace_bpf_fd = -3,
+               } },
+               .size = offsetofend(struct BPF_PROG_ATTACH_struct, replace_bpf_fd),
+               .str = "target_fd=-1, attach_bpf_fd=-2"
+                      ", attach_type=BPF_CGROUP_INET_SOCK_CREATE"
+                      ", attach_flags=0xf8 /* BPF_F_??? */"
+                      ", replace_bpf_fd=-3"
+       },
 };
 
 
@@ -810,6 +906,33 @@ static const struct bpf_attr_check BPF_PROG_TEST_RUN_checks[] = {
                       ", data_in=0xfacef11dbadc2ded"
                       ", data_out=0xfacef33dbadc4ded"
                       ", repeat=4207410904, duration=4207541978}"
+       },
+       {
+               .data = { .BPF_PROG_TEST_RUN_data = {
+                       .prog_fd = -1,
+                       .retval = 0xfac1fed2,
+                       .data_size_in = 0xfac3fed4,
+                       .data_size_out = 0xfac5fed6,
+                       .data_in = (uint64_t) 0xfacef11dbadc2dedULL,
+                       .data_out = (uint64_t) 0xfacef33dbadc4dedULL,
+                       .repeat = 0xfac7fed8,
+                       .duration = 0xfac9feda,
+                       .ctx_size_in = 0xfacbfedc,
+                       .ctx_size_out = 0xfacdfede,
+                       .ctx_in = (uint64_t) 0xfacef55dbadc6dedULL,
+                       .ctx_out = (uint64_t) 0xfacef77dbadc8dedULL
+               } },
+               .size = offsetofend(struct BPF_PROG_TEST_RUN_struct, ctx_out),
+               .str = "test={prog_fd=-1, retval=4207017682"
+                      ", data_size_in=4207148756, data_size_out=4207279830"
+                      ", data_in=0xfacef11dbadc2ded"
+                      ", data_out=0xfacef33dbadc4ded"
+                      ", repeat=4207410904"
+                      ", duration=4207541978"
+                      ", ctx_size_in=4207673052"
+                      ", ctx_size_out=4207804126"
+                      ", ctx_in=0xfacef55dbadc6ded"
+                      ", ctx_out=0xfacef77dbadc8ded}"
        }
 };
 
@@ -855,6 +978,7 @@ static const struct bpf_attr_check BPF_PROG_GET_NEXT_ID_checks[] = {
 };
 
 #define BPF_MAP_GET_NEXT_ID_checks BPF_PROG_GET_NEXT_ID_checks
+#define BPF_BTF_GET_NEXT_ID_checks BPF_PROG_GET_NEXT_ID_checks
 
 static const struct bpf_attr_check BPF_PROG_GET_FD_BY_ID_checks[] = {
        {
@@ -953,8 +1077,8 @@ print_BPF_PROG_QUERY_attr4(const struct bpf_attr_check *check, unsigned long add
        printf("query={target_fd=-1153374643"
               ", attach_type=0xfeedface /* BPF_??? */"
               ", query_flags=BPF_F_QUERY_EFFECTIVE|0xdeadf00c"
-              ", attach_flags=BPF_F_ALLOW_MULTI|0xbeefcafc"
-#if defined(INJECT_RETVAL) && INJECT_RETVAL > 0
+              ", attach_flags=BPF_F_ALLOW_MULTI|BPF_F_REPLACE|0xbeefcaf8"
+#if defined(INJECT_RETVAL)
               ", prog_ids=[0, 1, 4294967295, 2718281828], prog_cnt=4}"
 #else
               ", prog_ids=%p, prog_cnt=4}", prog_load_ids_ptr
@@ -981,8 +1105,8 @@ print_BPF_PROG_QUERY_attr5(const struct bpf_attr_check *check, unsigned long add
        printf("query={target_fd=-1153374643"
               ", attach_type=0xfeedface /* BPF_??? */"
               ", query_flags=BPF_F_QUERY_EFFECTIVE|0xdeadf00c"
-              ", attach_flags=BPF_F_ALLOW_MULTI|0xbeefcafc"
-#if defined(INJECT_RETVAL) && INJECT_RETVAL > 0
+              ", attach_flags=BPF_F_ALLOW_MULTI|BPF_F_REPLACE|0xbeefcaf8"
+#if defined(INJECT_RETVAL)
               ", prog_ids=[0, 1, 4294967295, 2718281828, ... /* %p */]"
               ", prog_cnt=5}",
               prog_load_ids_ptr + ARRAY_SIZE(prog_load_ids)
@@ -1003,13 +1127,13 @@ static struct bpf_attr_check BPF_PROG_QUERY_checks[] = {
        { /* 1 */
                .data = { .BPF_PROG_QUERY_data = {
                        .target_fd = 3141592653U,
-                       .attach_type = 16,
+                       .attach_type = 37,
                        .query_flags = 1,
                        .attach_flags = 3,
                } },
                .size = offsetofend(struct BPF_PROG_QUERY_struct, attach_flags),
                .str = "query={target_fd=-1153374643"
-                      ", attach_type=BPF_LIRC_MODE2"
+                      ", attach_type=BPF_XDP"
                       ", query_flags=BPF_F_QUERY_EFFECTIVE"
                       ", attach_flags=BPF_F_ALLOW_OVERRIDE|BPF_F_ALLOW_MULTI"
                       ", prog_ids=NULL, prog_cnt=0}",
@@ -1017,17 +1141,17 @@ static struct bpf_attr_check BPF_PROG_QUERY_checks[] = {
        { /* 2 */
                .data = { .BPF_PROG_QUERY_data = {
                        .target_fd = 3141592653U,
-                       .attach_type = 18,
+                       .attach_type = 38,
                        .query_flags = 0xfffffffe,
-                       .attach_flags = 0xfffffffc,
+                       .attach_flags = 0xfffffff8,
                        .prog_ids = 0xffffffffffffffffULL,
                        .prog_cnt = 2718281828,
                } },
                .size = offsetofend(struct BPF_PROG_QUERY_struct, prog_cnt),
                .str = "query={target_fd=-1153374643"
-                      ", attach_type=0x12 /* BPF_??? */"
+                      ", attach_type=0x26 /* BPF_??? */"
                       ", query_flags=0xfffffffe /* BPF_F_QUERY_??? */"
-                      ", attach_flags=0xfffffffc /* BPF_F_??? */"
+                      ", attach_flags=0xfffffff8 /* BPF_F_??? */"
                       ", prog_ids="
                       BIG_ADDR("0xffffffffffffffff", "0xffffffff")
                       ", prog_cnt=2718281828}",
@@ -1045,7 +1169,7 @@ static struct bpf_attr_check BPF_PROG_QUERY_checks[] = {
                .str = "query={target_fd=-1153374643"
                       ", attach_type=0xfeedface /* BPF_??? */"
                       ", query_flags=BPF_F_QUERY_EFFECTIVE|0xdeadf00c"
-                      ", attach_flags=BPF_F_ALLOW_MULTI|0xbeefcafc"
+                      ", attach_flags=BPF_F_ALLOW_MULTI|BPF_F_REPLACE|0xbeefcaf8"
                       ", prog_ids=" BIG_ADDR_MAYBE("0xffffffffffffffff") "[]"
                       ", prog_cnt=0}",
        },
@@ -1091,7 +1215,7 @@ static struct bpf_attr_check BPF_RAW_TRACEPOINT_OPEN_checks[] = {
                .data = { .BPF_RAW_TRACEPOINT_OPEN_data = { .name = 0 } },
                .size = offsetofend(struct BPF_RAW_TRACEPOINT_OPEN_struct,
                                    name),
-               .str = "raw_tracepoint={name=NULL, prog_fd=0}",
+               .str = "raw_tracepoint={name=NULL, prog_fd=0" FD0_PATH "}",
        },
        { /* 1 */
                .data = { .BPF_RAW_TRACEPOINT_OPEN_data = {
@@ -1165,16 +1289,16 @@ static const struct bpf_attr_check BPF_BTF_GET_FD_BY_ID_checks[] = {
 
 static const struct bpf_attr_check BPF_TASK_FD_QUERY_checks[] = {
        {
-               .data = { .BPF_TASK_FD_QUERY_data = { .pid = 0xdeadbeef } },
+               .data = { .BPF_TASK_FD_QUERY_data = { .pid = 1735928559 } },
                .size = offsetofend(struct BPF_TASK_FD_QUERY_struct, pid),
-               .str = "task_fd_query={pid=3735928559, fd=0, flags=0"
-                      ", buf_len=0, buf=NULL, prog_id=0"
+               .str = "task_fd_query={pid=1735928559, fd=0" FD0_PATH
+                      ", flags=0, buf_len=0, buf=NULL, prog_id=0"
                       ", fd_type=BPF_FD_TYPE_RAW_TRACEPOINT"
                       ", probe_offset=0, probe_addr=0}"
        },
        { /* 1 */
                .data = { .BPF_TASK_FD_QUERY_data = {
-                       .pid = 0xcafef00d,
+                       .pid = 1405705229,
                        .fd = 0xdeadbeef,
                        .flags = 0xfacefeed,
                        .buf_len = 0xdefaced,
@@ -1185,7 +1309,7 @@ static const struct bpf_attr_check BPF_TASK_FD_QUERY_checks[] = {
                        .probe_addr = 0xfac5fed5fac7fed8
                } },
                .size = offsetofend(struct BPF_TASK_FD_QUERY_struct, probe_addr),
-               .str = "task_fd_query={pid=3405705229"
+               .str = "task_fd_query={pid=1405705229"
                       ", fd=-559038737"
                       ", flags=4207869677"
                       ", buf_len=233811181"
@@ -1197,6 +1321,117 @@ static const struct bpf_attr_check BPF_TASK_FD_QUERY_checks[] = {
        }
 };
 
+static const struct bpf_attr_check BPF_MAP_LOOKUP_BATCH_checks[] = {
+       {
+               .data = { .BPF_MAP_LOOKUP_BATCH_data = { .map_fd = -1 } },
+               .size = offsetofend(struct BPF_MAP_LOOKUP_BATCH_struct, map_fd ),
+               .str = "batch={in_batch=NULL, out_batch=NULL, keys=NULL"
+                      ", values=NULL, count=0, map_fd=-1, elem_flags=BPF_ANY"
+                      ", flags=0}"
+       },
+       {
+               .data = { .BPF_MAP_LOOKUP_BATCH_data = {
+                       .in_batch = 0xfacefeed,
+                       .out_batch = 0xbadc0ded,
+                       .keys = 0xdeadf00d,
+                       .values = 0xfffffffe,
+                       .count = 3,
+                       .map_fd = -1,
+                       .elem_flags = 4,
+                       .flags = 4
+               } },
+               .size = offsetofend(struct BPF_MAP_LOOKUP_BATCH_struct, flags),
+               .str = "batch={in_batch=0xfacefeed, out_batch=0xbadc0ded"
+                      ", keys=0xdeadf00d, values=0xfffffffe, count=3"
+                      ", map_fd=-1, elem_flags=BPF_F_LOCK, flags=0x4}"
+       }
+};
+
+static const struct bpf_attr_check BPF_MAP_UPDATE_BATCH_checks[] = {
+       {
+               .data = { .BPF_MAP_UPDATE_BATCH_data = { .map_fd = -1 } },
+               .size = offsetofend(struct BPF_MAP_UPDATE_BATCH_struct, map_fd ),
+               .str = "batch={keys=NULL, values=NULL, count=0, map_fd=-1"
+                      ", elem_flags=BPF_ANY, flags=0}"
+       },
+       {
+               .data = { .BPF_MAP_UPDATE_BATCH_data = {
+                       .keys = 0xdeadf00d,
+                       .values = 0xfffffffe,
+                       .count = 3,
+                       .map_fd = -1,
+                       .elem_flags = 4,
+                       .flags = 4
+               } },
+               .size = offsetofend(struct BPF_MAP_UPDATE_BATCH_struct, flags),
+               .str = "batch={keys=0xdeadf00d, values=0xfffffffe, count=3"
+                      ", map_fd=-1, elem_flags=BPF_F_LOCK, flags=0x4}"
+       }
+};
+
+static const struct bpf_attr_check BPF_MAP_DELETE_BATCH_checks[] = {
+       {
+               .data = { .BPF_MAP_DELETE_BATCH_data = { .map_fd = -1 } },
+               .size = offsetofend(struct BPF_MAP_DELETE_BATCH_struct, map_fd ),
+               .str = "batch={keys=NULL, count=0, map_fd=-1"
+                      ", elem_flags=BPF_ANY, flags=0}"
+       },
+       {
+               .data = { .BPF_MAP_DELETE_BATCH_data = {
+                       .keys = 0xdeadf00d,
+                       .count = 3,
+                       .map_fd = -1,
+                       .elem_flags = 4,
+                       .flags = 4
+               } },
+               .size = offsetofend(struct BPF_MAP_DELETE_BATCH_struct, flags),
+               .str = "batch={keys=0xdeadf00d, count=3, map_fd=-1"
+                      ", elem_flags=BPF_F_LOCK, flags=0x4}"
+       }
+};
+
+static const struct bpf_attr_check BPF_LINK_CREATE_checks[] = {
+       {
+               .data = { .BPF_LINK_CREATE_data = { .prog_fd = -1, .target_fd = -2 } },
+               .size = offsetofend(struct BPF_LINK_CREATE_struct, flags),
+               .str = "link_create={prog_fd=-1, target_fd=-2"
+                      ", attach_type=BPF_CGROUP_INET_INGRESS, flags=0}"
+       },
+       {
+               .data = { .BPF_LINK_CREATE_data = {
+                       .prog_fd = -1,
+                       .target_fd = 0xdeadbeef,
+                       .attach_type = 5,
+                       .flags = 4
+               } },
+               .size = offsetofend(struct BPF_LINK_CREATE_struct, flags),
+               .str = "link_create={prog_fd=-1, target_fd=-559038737"
+                      ", attach_type=BPF_SK_SKB_STREAM_VERDICT, flags=0x4}"
+       }
+};
+
+static const struct bpf_attr_check BPF_LINK_UPDATE_checks[] = {
+       {
+               .data = { .BPF_LINK_UPDATE_data = {
+                       .link_fd = -1,
+                       .new_prog_fd = -2
+               } },
+               .size = offsetofend(struct BPF_LINK_UPDATE_struct, old_prog_fd),
+               .str = "link_update={link_fd=-1, new_prog_fd=-2, flags=0}"
+       },
+       {
+               .data = { .BPF_LINK_UPDATE_data = {
+                       .link_fd = -1,
+                       .new_prog_fd = 0xdeadbeef,
+                       .flags = 4,
+                       .old_prog_fd = 0xdeadf00d
+               } },
+               .size = offsetofend(struct BPF_LINK_UPDATE_struct, old_prog_fd),
+               .str = "link_update={link_fd=-1, new_prog_fd=-559038737"
+                      ", flags=BPF_F_REPLACE, old_prog_fd=-559026163}"
+       }
+};
+
 
 #define CHK(cmd_) \
        { \
@@ -1231,6 +1466,13 @@ main(void)
                CHK(BPF_BTF_GET_FD_BY_ID),
                CHK(BPF_TASK_FD_QUERY),
                CHK(BPF_MAP_LOOKUP_AND_DELETE_ELEM),
+               CHK(BPF_MAP_FREEZE),
+               CHK(BPF_BTF_GET_NEXT_ID),
+               CHK(BPF_MAP_LOOKUP_BATCH),
+               CHK(BPF_MAP_UPDATE_BATCH),
+               CHK(BPF_MAP_DELETE_BATCH),
+               CHK(BPF_LINK_CREATE),
+               CHK(BPF_LINK_UPDATE),
        };
 
        page_size = get_page_size();
index caf40e130f8e5e7418816f6f8b18b91e824cc115..90f990e12e96165e82305b9d7cf912b86e883059 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_brk
 
index f1a26bf32643e6042ec151d4f841053363bbea62..2a474dc4bf5f8051002af544b6e65289a3fd0d1d 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2019 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -815,7 +815,7 @@ btrfs_test_clone_ioctls(void)
                args.dest_offset);
 }
 
-# define BTRFS_COMPRESS_TYPES 2
+# define BTRFS_COMPRESS_TYPES 3
 # define BTRFS_INVALID_COMPRESS (BTRFS_COMPRESS_TYPES + 1)
 
 static void
@@ -886,9 +886,9 @@ btrfs_test_defrag_ioctls(void)
 static const char *
 xlookup(const struct xlat *xlat, const uint64_t val)
 {
-       for (; xlat->str != NULL; xlat++)
-               if (xlat->val == val)
-                       return xlat->str;
+       for (size_t i = 0; i < xlat->size; i++)
+               if (xlat->data[i].val == val)
+                       return xlat->data[i].str;
        return NULL;
 }
 
@@ -2068,7 +2068,7 @@ btrfs_test_features_ioctls(void)
 static void
 btrfs_test_read_ioctls(void)
 {
-       static const struct xlat btrfs_read_cmd[] = {
+       static const struct xlat_data btrfs_read_cmd[] = {
                XLAT(BTRFS_IOC_BALANCE_PROGRESS),
                XLAT(BTRFS_IOC_FS_INFO),
                XLAT(BTRFS_IOC_GET_FEATURES),
index c00023b4fc7b477eb406ee487620c4af51386226..1ec02e34ea04cd7c09657283b6089b31b0a618bb 100644 (file)
@@ -3,12 +3,13 @@
 # This file is part of caps strace test.
 #
 # Copyright (c) 2014-2018 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 BEGIN {
-       cap = "(0|1<<CAP_[A-Z_]+(\\|1<<CAP_[A-Z_]+)*|1<<CAP_[A-Z_]+(\\|1<<CAP_[A-Z_]+){37}\\|0xffffffc0)"
+       cap = "(0|1<<CAP_[A-Z_]+(\\|1<<CAP_[A-Z_]+)*|1<<CAP_[A-Z_]+(\\|1<<CAP_[A-Z_]+){40}\\|0xfffffe00)"
        s_efault = "-1 EFAULT (Bad address)"
        r_efault = "-1 EFAULT \\(Bad address\\)"
        r_einval = "-1 EINVAL \\(Invalid argument\\)"
index 941564aa20df2cc847474c0b579725548f6023c5..9c0030b02abd7d77e2398ea54a3e610e694a151d 100644 (file)
@@ -2,13 +2,13 @@
 #
 # This file is part of caps strace test.
 #
-# Copyright (c) 2014-2018 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2014-2020 Dmitry V. Levin <ldv@altlinux.org>
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 BEGIN {
-       cap = "(0|1<<CAP_[A-Z_]+(\\|1<<CAP_[A-Z_]+)*|1<<CAP_[A-Z_]+(\\|1<<CAP_[A-Z_]+){37}\\|0xffffffc0)"
+       cap = "(0|1<<CAP_[A-Z_]+(\\|1<<CAP_[A-Z_]+)*|1<<CAP_[A-Z_]+(\\|1<<CAP_[A-Z_]+){40}\\|0xfffffe00)"
        s_efault = "-1 EFAULT (Bad address)"
        r_efault = "-1 EFAULT \\(Bad address\\)"
        r_einval = "-1 EINVAL \\(Invalid argument\\)"
index d7c9fbabacaf0e3b8c7c2ae19bb656937fa46af6..f5acd53eab2d5cb30b12cb03c8454af05cec953d 100644 (file)
@@ -1,13 +1,14 @@
 /*
  * Copyright (c) 2016 Anchit Jain <anchitjain1234@gmail.com>
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_chmod
 
index 05fe9af15ec311b361eadfac3a2d594b511d43ec..4b6daea0ed83763b7ba413e292bb3d3cfff0e8cb 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_chown
 
index f272620311a687e11605296f9fe9dfcced3682db..5a0601cb595825e9aaaab91e03278481e4e263b8 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_chown32
 
index 3fc441e3b8d53144ea7823f3125d30df1a20eebf..1cef5f9b7369e36a3edc053e9ee6c8f2e5b617fd 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_chroot
 
index 8e5a12fb2823ee32df5b6a95b5435514ce029ef4..610c75e31b24f8857c354840d90631ee12f2b512 100644 (file)
@@ -2,13 +2,14 @@
  * This file is part of clock_adjtime strace test.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_clock_adjtime
 
index 258c3ac107c3f551ee3d36c2c183b2daf871496a..854fdb3f2d2fef8a832910de3bf8c2a1a9f4cc85 100644 (file)
@@ -2,21 +2,24 @@
  * Check decoding of clock_nanosleep and clock_gettime syscalls.
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <assert.h>
-#include <stdio.h>
-#include <stdint.h>
-#include <signal.h>
-#include <time.h>
-#include <unistd.h>
-#include <sys/time.h>
-#include <asm/unistd.h>
+#include "scno.h"
+
+#ifdef __NR_clock_nanosleep
+
+# include <assert.h>
+# include <stdio.h>
+# include <stdint.h>
+# include <signal.h>
+# include <time.h>
+# include <unistd.h>
+# include <sys/time.h>
 
 static void
 handler(int signo)
@@ -127,3 +130,9 @@ main(void)
        puts("+++ exited with 0 +++");
        return 0;
 }
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_clock_nanosleep")
+
+#endif
index c25240da44bb8a52fc248727e70a676ae380df76..345c3a42e73aa842e3ffd2f341916426a4ed568a 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -11,7 +11,7 @@
 #include <stdint.h>
 #include <time.h>
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_clock_getres \
  && defined __NR_clock_gettime \
diff --git a/tests-m32/clone-flags.c b/tests-m32/clone-flags.c
new file mode 100644 (file)
index 0000000..04bb2c7
--- /dev/null
@@ -0,0 +1,151 @@
+/*
+ * Check decoding of clone flags.
+ *
+ * Copyright (c) 2017-2019 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#include <errno.h>
+#include <limits.h>
+#include <sched.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/wait.h>
+#include <unistd.h>
+
+#define XLAT_MACROS_ONLY
+#include "xlat/clone_flags.h"
+#undef XLAT_MACROS_ONLY
+
+static const int child_exit_status = 42;
+static pid_t pid;
+
+static pid_t
+wait_cloned(pid_t pid, int sig, const char *text)
+{
+       if (pid < 0)
+               perror_msg_and_fail("clone %s", text);
+       int status;
+       pid_t rc = wait(&status);
+       if (sig) {
+               if (rc != pid)
+                       perror_msg_and_fail("unexpected wait rc %d from %s",
+                                           rc, text);
+               if (!WIFEXITED(status) ||
+                   WEXITSTATUS(status) != child_exit_status)
+                       error_msg_and_fail("unexpected wait status %#x from %s",
+                                          status, text);
+       } else {
+               if (rc >= 0)
+                       error_msg_and_fail("unexpected wait rc %d from %s",
+                                          rc, text);
+       }
+       return pid;
+}
+
+#ifdef IA64
+extern int __clone2(int (*)(void *), void *, size_t, int, void *, ...);
+# define do_clone(fn_, stack_, size_, flags_, arg_, ...) \
+       wait_cloned(__clone2((fn_), (stack_), (size_), (flags_), (arg_), \
+                            ## __VA_ARGS__), (flags_) & 0xff, #flags_)
+# define SYSCALL_NAME "clone2"
+# define STACK_SIZE_FMT ", stack_size=%#lx"
+# define STACK_SIZE_ARG child_stack_size,
+#else
+# define do_clone(fn_, stack_, size_, flags_, arg_, ...) \
+       wait_cloned(clone((fn_), (stack_), (flags_), (arg_),    \
+                         ## __VA_ARGS__), (flags_) & 0xff, #flags_)
+# define SYSCALL_NAME "clone"
+# define STACK_SIZE_FMT ""
+# define STACK_SIZE_ARG
+#endif
+
+static int
+child(void *const arg)
+{
+       return child_exit_status;
+}
+
+int
+main(void)
+{
+       const unsigned long child_stack_size = get_page_size();
+       void *const child_stack =
+               tail_alloc(child_stack_size * 2) + child_stack_size;
+
+       const char *child_stack_expected_str = getenv("CHILD_STACK_EXPECTED");
+       const char *child_stack_reported_str = getenv("CHILD_STACK_REPORTED");
+
+       if (!child_stack_expected_str || !child_stack_reported_str) {
+               const unsigned long child_stack_base =
+                       (unsigned long) child_stack / 0x1000;
+               pid = do_clone(child, child_stack, child_stack_size,
+                              SIGCHLD, 0);
+               printf("%s\\(child_stack=(%#lx|%#lx)[[:xdigit:]]{3}"
+                      STACK_SIZE_FMT ", flags=%s\\) = %d\n",
+                      SYSCALL_NAME, child_stack_base, child_stack_base - 1,
+                      STACK_SIZE_ARG "SIGCHLD", pid);
+               return 0;
+       }
+       const unsigned long child_stack_expected =
+               strtoul(child_stack_expected_str, 0, 16);
+       const unsigned long child_stack_reported =
+               strtoul(child_stack_reported_str, 0, 16);
+       const unsigned long child_stack_printed =
+               (unsigned long) child_stack +
+               (child_stack_reported - child_stack_expected);
+
+       pid = do_clone(child, child_stack, child_stack_size, 0, 0);
+       printf("%s(child_stack=%#lx" STACK_SIZE_FMT ", flags=%s) = %d\n",
+              SYSCALL_NAME, child_stack_printed, STACK_SIZE_ARG
+              "0", pid);
+
+       pid = do_clone(child, child_stack, child_stack_size, CLONE_FS, 0);
+       printf("%s(child_stack=%#lx" STACK_SIZE_FMT ", flags=%s) = %d\n",
+              SYSCALL_NAME, child_stack_printed, STACK_SIZE_ARG
+              "CLONE_FS", pid);
+
+       pid = do_clone(child, child_stack, child_stack_size, SIGCHLD, 0);
+       printf("%s(child_stack=%#lx" STACK_SIZE_FMT ", flags=%s) = %d\n",
+              SYSCALL_NAME, child_stack_printed, STACK_SIZE_ARG
+              "SIGCHLD", pid);
+
+       pid = do_clone(child, child_stack, child_stack_size,
+                      CLONE_FS|SIGCHLD, 0);
+       printf("%s(child_stack=%#lx" STACK_SIZE_FMT ", flags=%s) = %d\n",
+              SYSCALL_NAME, child_stack_printed, STACK_SIZE_ARG
+              "CLONE_FS|SIGCHLD", pid);
+
+       TAIL_ALLOC_OBJECT_CONST_PTR(pid_t, ptid);
+       pid = do_clone(child, child_stack, child_stack_size,
+                      CLONE_PARENT_SETTID|SIGCHLD, 0, ptid);
+       printf("%s(child_stack=%#lx" STACK_SIZE_FMT ", flags=%s"
+              ", parent_tid=[%u]) = %d\n",
+              SYSCALL_NAME, child_stack_printed, STACK_SIZE_ARG
+              "CLONE_PARENT_SETTID|SIGCHLD", *ptid, pid);
+
+       char buf[PATH_MAX];
+       if (readlink("/proc/self/fd/0", buf, sizeof(buf) - 1) > 0) {
+               *ptid = 0;
+               pid = do_clone(child, child_stack, child_stack_size,
+                              CLONE_PIDFD|SIGCHLD, 0, ptid);
+               char *fname = 0;
+               if (asprintf(&fname, "/proc/self/fd/%d", *ptid) < 0)
+                       perror_msg_and_fail("asprintf");
+               int rc = readlink(fname, buf, sizeof(buf) - 1);
+               if ((unsigned int) rc >= sizeof(buf))
+                       perror_msg_and_fail("readlink");
+               buf[rc] = '\0';
+               printf("%s(child_stack=%#lx" STACK_SIZE_FMT ", flags=%s"
+                      ", parent_tid=[%u<%s>]) = %d\n",
+                      SYSCALL_NAME, child_stack_printed, STACK_SIZE_ARG
+                      "CLONE_PIDFD|SIGCHLD", *ptid, buf, pid);
+       }
+
+       return 0;
+}
diff --git a/tests-m32/clone-flags.test b/tests-m32/clone-flags.test
new file mode 100755 (executable)
index 0000000..9485afa
--- /dev/null
@@ -0,0 +1,24 @@
+#!/bin/sh -efu
+#
+# Check decoding of clone flags.
+#
+# Copyright (c) 2019-2020 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/init.sh"
+
+case "$STRACE_ARCH" in
+       ia64) syscall=clone2 ;;
+       *) syscall=clone ;;
+esac
+
+# Find out the expected and reported child stack addresses.
+run_strace_match_grep --silence=exits -e signal=none -e trace=$syscall
+CHILD_STACK_EXPECTED="$(sed -n 's/^clone[^(]*(child_stack=(\(0x[[:xdigit:]]\+\)|.*/\1/p' "$EXP")000"
+CHILD_STACK_REPORTED="$(sed -n 's/^clone[^(]*(child_stack=\(0x[[:xdigit:]]\+\),.*/\1/p' "$LOG")"
+export CHILD_STACK_EXPECTED CHILD_STACK_REPORTED
+
+# Use child stack addresses to check decoding.
+run_strace_match_diff -a35 --silence=exits,personality -y -e signal=none -e trace=$syscall
diff --git a/tests-m32/clone3-Xabbrev.c b/tests-m32/clone3-Xabbrev.c
new file mode 100644 (file)
index 0000000..2b7e417
--- /dev/null
@@ -0,0 +1 @@
+#include "clone3.c"
diff --git a/tests-m32/clone3-Xabbrev.gen.test b/tests-m32/clone3-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..39eea6b
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clone3-Xabbrev -a16 -Xabbrev  -e trace=clone3); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a16 -Xabbrev  -e trace=clone3
diff --git a/tests-m32/clone3-Xraw.c b/tests-m32/clone3-Xraw.c
new file mode 100644 (file)
index 0000000..1e1facb
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "clone3.c"
diff --git a/tests-m32/clone3-Xraw.gen.test b/tests-m32/clone3-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..727ea5a
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clone3-Xraw -a16 -Xraw     -e trace=clone3); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a16 -Xraw     -e trace=clone3
diff --git a/tests-m32/clone3-Xverbose.c b/tests-m32/clone3-Xverbose.c
new file mode 100644 (file)
index 0000000..23c45a0
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "clone3.c"
diff --git a/tests-m32/clone3-Xverbose.gen.test b/tests-m32/clone3-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..9955d02
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clone3-Xverbose -a16 -Xverbose -e trace=clone3); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a16 -Xverbose -e trace=clone3
diff --git a/tests-m32/clone3-success-Xabbrev.c b/tests-m32/clone3-success-Xabbrev.c
new file mode 100644 (file)
index 0000000..8df14f9
--- /dev/null
@@ -0,0 +1,2 @@
+#define RETVAL_INJECTED 1
+#include "clone3.c"
diff --git a/tests-m32/clone3-success-Xabbrev.gen.test b/tests-m32/clone3-success-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..a9c16f4
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clone3-success-Xabbrev +clone3-success.test -a16 -Xabbrev); do not edit.
+set -- -a16 -Xabbrev
+. "${srcdir=.}/clone3-success.test"
diff --git a/tests-m32/clone3-success-Xraw.c b/tests-m32/clone3-success-Xraw.c
new file mode 100644 (file)
index 0000000..9a81c75
--- /dev/null
@@ -0,0 +1,3 @@
+#define RETVAL_INJECTED 1
+#define XLAT_RAW 1
+#include "clone3.c"
diff --git a/tests-m32/clone3-success-Xraw.gen.test b/tests-m32/clone3-success-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..d1ed0b0
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clone3-success-Xraw +clone3-success.test -a16 -Xraw); do not edit.
+set -- -a16 -Xraw
+. "${srcdir=.}/clone3-success.test"
diff --git a/tests-m32/clone3-success-Xverbose.c b/tests-m32/clone3-success-Xverbose.c
new file mode 100644 (file)
index 0000000..2b2a3bd
--- /dev/null
@@ -0,0 +1,3 @@
+#define RETVAL_INJECTED 1
+#define XLAT_VERBOSE 1
+#include "clone3.c"
diff --git a/tests-m32/clone3-success-Xverbose.gen.test b/tests-m32/clone3-success-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..3b7a3f8
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clone3-success-Xverbose +clone3-success.test -a16 -Xverbose); do not edit.
+set -- -a16 -Xverbose
+. "${srcdir=.}/clone3-success.test"
diff --git a/tests-m32/clone3-success.c b/tests-m32/clone3-success.c
new file mode 100644 (file)
index 0000000..8df14f9
--- /dev/null
@@ -0,0 +1,2 @@
+#define RETVAL_INJECTED 1
+#include "clone3.c"
diff --git a/tests-m32/clone3-success.test b/tests-m32/clone3-success.test
new file mode 100755 (executable)
index 0000000..4db29f4
--- /dev/null
@@ -0,0 +1,12 @@
+#!/bin/sh -efu
+#
+# Copyright (c) 2019 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/scno_tampering.sh"
+
+run_strace -a10 "$@" -e trace=clone3 -e inject=clone3:retval=42 \
+       "../$NAME" > "$EXP"
+match_diff "$LOG" "$EXP"
diff --git a/tests-m32/clone3.c b/tests-m32/clone3.c
new file mode 100644 (file)
index 0000000..c15cb1d
--- /dev/null
@@ -0,0 +1,629 @@
+/*
+ * Check decoding of clone3 syscall.
+ *
+ * Copyright (c) 2019-2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#include <errno.h>
+#include <stdint.h>
+#include <inttypes.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/wait.h>
+
+#ifdef HAVE_LINUX_SCHED_H
+# include <linux/sched.h>
+#endif
+
+#ifdef HAVE_STRUCT_USER_DESC
+# include <asm/ldt.h>
+#endif
+
+#define XLAT_MACROS_ONLY
+# include "xlat/clone_flags.h"
+# include "xlat/clone3_flags.h"
+#undef XLAT_MACROS_ONLY
+
+#include "scno.h"
+
+#ifndef VERBOSE
+# define VERBOSE 0
+#endif
+#ifndef RETVAL_INJECTED
+# define RETVAL_INJECTED 0
+#endif
+
+struct test_clone_args {
+       uint64_t flags;
+       uint64_t pidfd;
+       uint64_t child_tid;
+       uint64_t parent_tid;
+       uint64_t exit_signal;
+       uint64_t stack;
+       uint64_t stack_size;
+       uint64_t tls;
+       uint64_t set_tid;
+       uint64_t set_tid_size;
+       uint64_t cgroup;
+};
+
+#ifdef HAVE_STRUCT_CLONE_ARGS_CGROUP
+typedef struct clone_args struct_clone_args;
+#else
+typedef struct test_clone_args struct_clone_args;
+#endif
+
+enum validity_flag_bits {
+       STRUCT_VALID_BIT,
+       PIDFD_VALID_BIT,
+       CHILD_TID_VALID_BIT,
+       PARENT_TID_VALID_BIT,
+       TLS_VALID_BIT,
+};
+
+enum validity_flags {
+       FLAG(STRUCT_VALID),
+       FLAG(PIDFD_VALID),
+       FLAG(CHILD_TID_VALID),
+       FLAG(PARENT_TID_VALID),
+       FLAG(TLS_VALID),
+};
+
+#define MAX_SET_TID_SIZE 32
+
+static const int child_exit_status = 42;
+
+#if RETVAL_INJECTED
+static const long injected_retval = 42;
+
+# define INJ_STR " (INJECTED)\n"
+#else /* !RETVAL_INJECTED */
+# define INJ_STR "\n"
+#endif /* RETVAL_INJECTED */
+
+#define ERR(b_) ((1ULL << (b_)) + FAIL_BUILD_ON_ZERO((b_) < 64))
+
+
+#if !RETVAL_INJECTED
+static void
+wait_cloned(int pid)
+{
+       int status;
+
+       errno = 0;
+       while (waitpid(pid, &status, WEXITED | __WCLONE) != pid) {
+               if (errno != EINTR)
+                       perror_msg_and_fail("waitpid(%d)", pid);
+       }
+}
+#endif
+
+static long
+do_clone3_(void *args, kernel_ulong_t size, uint64_t possible_errors, int line)
+{
+       long rc = syscall(__NR_clone3, args, size);
+
+#if RETVAL_INJECTED
+       if (rc != injected_retval)
+               perror_msg_and_fail("%d: Unexpected injected return value "
+                                   "of a clone3() call (%ld instead of %ld)",
+                                   line, rc, injected_retval);
+#else
+
+       static int unimplemented_error = -1;
+
+       if (!(possible_errors & ERR(0))) {
+               if (rc >= 0)
+                       error_msg_and_fail("%d: Unexpected success"
+                                          " of a clone3() call", line);
+               if (unimplemented_error < 0)
+                       unimplemented_error =
+                               (errno == EINVAL) ? ENOSYS : errno;
+       }
+
+       /*
+        * This code works as long as all the errors we care about (EFAULT
+        * and EINVAL so far) fit inside 64 bits, otherwise it should
+        * be rewritten.
+        */
+       if (rc < 0 && errno != unimplemented_error
+           && (errno >= 64 || errno < 0 || !(ERR(errno) & possible_errors))) {
+               perror_msg_and_fail("%d: Unexpected failure of a clone3() call"
+                                   " (got errno %d, expected errno bitmask"
+                                   " %#" PRIx64 ")",
+                                   line, errno, possible_errors);
+       }
+
+       if (!rc)
+               _exit(child_exit_status);
+
+       if (rc > 0 && ((struct_clone_args *) args)->exit_signal)
+               wait_cloned(rc);
+#endif
+
+       return rc;
+}
+
+#define do_clone3(args_, size_, errors_) \
+       do_clone3_((args_), (size_), (errors_), __LINE__)
+
+static inline void
+print_addr64(const char *pfx, uint64_t addr)
+{
+       if (addr)
+               printf("%s%#" PRIx64, pfx, addr);
+       else
+               printf("%sNULL", pfx);
+}
+
+static void
+print_tls(const char *pfx, uint64_t arg_ptr, enum validity_flags vf)
+{
+#if defined HAVE_STRUCT_USER_DESC && defined __i386__
+       if (!(vf & TLS_VALID)) {
+               print_addr64(pfx, arg_ptr);
+               return;
+       }
+
+       struct user_desc *arg = (struct user_desc *) (uintptr_t) arg_ptr;
+
+       printf("%s{entry_number=%d"
+              ", base_addr=%#08x"
+              ", limit=%#08x"
+              ", seg_32bit=%u"
+              ", contents=%u"
+              ", read_exec_only=%u"
+              ", limit_in_pages=%u"
+              ", seg_not_present=%u"
+              ", useable=%u}",
+              pfx,
+              arg->entry_number,
+              arg->base_addr,
+              arg->limit,
+              arg->seg_32bit,
+              arg->contents,
+              arg->read_exec_only,
+              arg->limit_in_pages,
+              arg->seg_not_present,
+              arg->useable);
+#else
+       print_addr64(pfx, arg_ptr);
+#endif
+}
+
+static void
+print_set_tid(uint64_t set_tid, uint64_t set_tid_size)
+{
+       if (!set_tid || set_tid != (uintptr_t) set_tid ||
+           !set_tid_size || set_tid_size > MAX_SET_TID_SIZE) {
+               print_addr64(", set_tid=", set_tid);
+       } else {
+               printf(", set_tid=");
+               int *tids = (int *) (uintptr_t) set_tid;
+               for (unsigned int i = 0; i < set_tid_size; ++i)
+                       printf("%s%d", i ? ", " : "[", tids[i]);
+               printf("]");
+       }
+
+       printf(", set_tid_size=%" PRIu64, set_tid_size);
+}
+
+static inline void
+print_clone3(struct_clone_args *const arg, long rc, kernel_ulong_t sz,
+            enum validity_flags valid,
+            const char *flags_str, const char *es_str)
+{
+       int saved_errno = errno;
+
+       printf("clone3(");
+       if (!(valid & STRUCT_VALID)) {
+               printf("%p", arg);
+               goto out;
+       }
+
+#if XLAT_RAW
+       printf("{flags=%#" PRIx64, (uint64_t) arg->flags);
+#elif XLAT_VERBOSE
+       if (flags_str[0] == '0')
+               printf("{flags=%#" PRIx64, (uint64_t) arg->flags);
+       else
+               printf("{flags=%#" PRIx64 " /* %s */",
+                      (uint64_t) arg->flags, flags_str);
+#else
+       printf("{flags=%s", flags_str);
+#endif
+
+       if (arg->flags & CLONE_PIDFD)
+               print_addr64(", pidfd=", arg->pidfd);
+
+       if (arg->flags & (CLONE_CHILD_SETTID | CLONE_CHILD_CLEARTID)) {
+               if (valid & CHILD_TID_VALID)
+                       printf(", child_tid=[%d]",
+                              *(int *) (uintptr_t) arg->child_tid);
+               else
+                       print_addr64(", child_tid=", arg->child_tid);
+       }
+
+       if (arg->flags & CLONE_PARENT_SETTID)
+               print_addr64(", parent_tid=", arg->parent_tid);
+
+       printf(", exit_signal=%s", es_str);
+       print_addr64(", stack=", arg->stack);
+       printf(", stack_size=%" PRIx64, (uint64_t) arg->stack_size);
+
+       if (arg->flags & CLONE_SETTLS)
+               print_tls("tls=", arg->tls, valid);
+
+       if (sz >= offsetofend(struct_clone_args, set_tid_size) &&
+           (arg->set_tid || arg->set_tid_size))
+               print_set_tid(arg->set_tid, arg->set_tid_size);
+
+       if (sz > offsetof(struct_clone_args, cgroup) &&
+           (arg->cgroup || arg->flags & CLONE_INTO_CGROUP))
+               printf(", cgroup=%" PRIu64, (uint64_t) arg->cgroup);
+
+       printf("}");
+
+       if (rc < 0)
+               goto out;
+
+       bool comma = false;
+
+       if (arg->flags & CLONE_PIDFD) {
+               if (valid & PIDFD_VALID)
+                       printf(" => {pidfd=[%d]",
+                              *(int *) (uintptr_t) arg->pidfd);
+               else
+                       print_addr64(" => {pidfd=", arg->pidfd);
+
+               comma = true;
+       }
+
+       if (arg->flags & CLONE_PARENT_SETTID) {
+               printf(comma ? ", " : " => {");
+
+               if (valid & PARENT_TID_VALID)
+                       printf("parent_tid=[%d]",
+                              *(int *) (uintptr_t) arg->parent_tid);
+               else
+                       print_addr64("parent_tid=", arg->parent_tid);
+
+               comma = true;
+       }
+
+       if (comma)
+               printf("}");
+
+out:
+       errno = saved_errno;
+}
+
+int
+main(int argc, char *argv[])
+{
+       static const struct {
+               struct_clone_args args;
+               uint64_t possible_errors;
+               enum validity_flags vf;
+               const char *flags_str;
+               const char *es_str;
+       } arg_vals[] = {
+               { { .flags = 0 },
+                       ERR(0), 0, "0", "0" },
+               { { .flags = CLONE_PARENT_SETTID },
+                       ERR(0), 0, "CLONE_PARENT_SETTID", "0" },
+
+               /* check clone3_flags/clone_flags interoperation */
+               { { .flags = CLONE_CLEAR_SIGHAND },
+                       ERR(EINVAL) | ERR(0), 0, "CLONE_CLEAR_SIGHAND", "0" },
+               { { .flags = CLONE_PARENT_SETTID | CLONE_CLEAR_SIGHAND },
+                       ERR(EINVAL) | ERR(0), 0,
+                       "CLONE_PARENT_SETTID|CLONE_CLEAR_SIGHAND", "0" },
+
+               { { .set_tid = 0xfacefeedcafebabe },
+                       ERR(E2BIG) | ERR(EINVAL), 0, "0", "0" },
+               { { .set_tid_size = 0xfacecafefeedbabe },
+                       ERR(E2BIG) | ERR(EINVAL), 0, "0", "0" },
+               { { .set_tid = 0xfacefeedcafebabe,
+                   .set_tid_size = MAX_SET_TID_SIZE + 1 },
+                       ERR(E2BIG) | ERR(EINVAL), 0, "0", "0" },
+       };
+       TAIL_ALLOC_OBJECT_CONST_PTR(struct_clone_args, arg);
+       const size_t arg1_size = offsetofend(struct_clone_args, tls);
+       struct_clone_args *const arg1 = tail_alloc(arg1_size);
+       const size_t arg2_size = sizeof(*arg) + 8;
+       struct_clone_args *const arg2 = tail_alloc(arg2_size);
+       TAIL_ALLOC_OBJECT_CONST_PTR(int, pidfd);
+       TAIL_ALLOC_OBJECT_CONST_PTR(int, child_tid);
+       TAIL_ALLOC_OBJECT_CONST_PTR(int, parent_tid);
+       int *const tids = tail_alloc(sizeof(*tids) * MAX_SET_TID_SIZE);
+       long rc;
+
+#if defined HAVE_STRUCT_USER_DESC
+       TAIL_ALLOC_OBJECT_CONST_PTR(struct user_desc, tls);
+
+       fill_memory(tls, sizeof(*tls));
+#else
+       TAIL_ALLOC_OBJECT_CONST_PTR(int, tls);
+#endif
+
+       *pidfd = 0xbadc0ded;
+       *child_tid = 0xdeadface;
+       *parent_tid = 0xfeedbeef;
+       fill_memory(tids, sizeof(*tids) * MAX_SET_TID_SIZE);
+
+       rc = do_clone3(NULL, 0, ERR(EINVAL));
+       printf("clone3(NULL, 0) = %s" INJ_STR, sprintrc(rc));
+
+       rc = do_clone3(arg + 1, sizeof(*arg), ERR(EFAULT));
+       printf("clone3(%p, %zu) = %s" INJ_STR,
+              arg + 1, sizeof(*arg), sprintrc(rc));
+
+       size_t short_size = arg1_size - sizeof(uint64_t);
+       char *short_start = (char *) arg1 + sizeof(uint64_t);
+       rc = do_clone3(short_start, short_size, ERR(EINVAL));
+       printf("clone3(%p, %zu) = %s" INJ_STR,
+              short_start, short_size, sprintrc(rc));
+
+
+       memset(arg, 0, sizeof(*arg));
+       memset(arg1, 0, arg1_size);
+       memset(arg2, 0, arg2_size);
+
+       rc = do_clone3(arg, 64, ERR(0));
+       printf("clone3({flags=0, exit_signal=0, stack=NULL, stack_size=0}, 64)"
+              " = %s" INJ_STR,
+              sprintrc(rc));
+
+       rc = do_clone3(arg, sizeof(*arg) + 8, ERR(EFAULT));
+       printf("clone3({flags=0, exit_signal=0, stack=NULL, stack_size=0, ???}"
+#if RETVAL_INJECTED
+              " => {???}"
+#endif
+              ", %zu) = %s" INJ_STR,
+              sizeof(*arg) + 8, sprintrc(rc));
+
+       rc = do_clone3(arg1, arg1_size, ERR(0));
+       printf("clone3({flags=0, exit_signal=0, stack=NULL, stack_size=0}"
+              ", %zu) = %s" INJ_STR,
+              arg1_size, sprintrc(rc));
+
+       rc = do_clone3(arg2, arg2_size, ERR(0));
+       printf("clone3({flags=0, exit_signal=0, stack=NULL, stack_size=0}"
+              ", %zu) = %s" INJ_STR,
+              arg2_size, sprintrc(rc));
+
+       arg->set_tid = (uintptr_t) tids;
+       arg->set_tid_size = MAX_SET_TID_SIZE;
+       rc = do_clone3(arg, sizeof(*arg), ERR(E2BIG) | ERR(EINVAL));
+       print_clone3(arg, rc, sizeof(*arg), STRUCT_VALID, "0", "0");
+       printf(", %zu) = %s" INJ_STR, sizeof(*arg), sprintrc(rc));
+       memset(arg, 0, sizeof(*arg));
+
+       arg->cgroup = 0xfacefeedbadc0ded;
+       rc = do_clone3(arg, sizeof(*arg), ERR(0) | ERR(E2BIG));
+       print_clone3(arg, rc, sizeof(*arg), STRUCT_VALID, "0", "0");
+       printf(", %zu) = %s" INJ_STR, sizeof(*arg), sprintrc(rc));
+       memset(arg, 0, sizeof(*arg));
+
+       arg->flags = CLONE_INTO_CGROUP;
+       rc = do_clone3(arg, sizeof(*arg), ERR(0) | ERR(EINVAL) | ERR(EBADF));
+       print_clone3(arg, rc, sizeof(*arg), STRUCT_VALID,
+                    "CLONE_INTO_CGROUP", "0");
+       printf(", %zu) = %s" INJ_STR, sizeof(*arg), sprintrc(rc));
+       memset(arg, 0, sizeof(*arg));
+
+       /*
+        * NB: the following check is purposefully fragile (it will break
+        *     when system's struct clone_args has additional fields,
+        *     so it signalises that the decoder needs to be updated.
+        */
+       arg2[1].flags = 0xfacefeeddeadc0de;
+       arg2->exit_signal = 0xdeadface00000000ULL | SIGCHLD;
+       rc = do_clone3(arg2, sizeof(*arg2) + 8, ERR(E2BIG));
+       printf("clone3({flags=0, exit_signal=%llu, stack=NULL, stack_size=0"
+              ", /* bytes %zu..%zu */ "
+#if WORDS_BIGENDIAN
+              "\"\\xfa\\xce\\xfe\\xed\\xde\\xad\\xc0\\xde\""
+#else
+              "\"\\xde\\xc0\\xad\\xde\\xed\\xfe\\xce\\xfa\""
+#endif
+#if RETVAL_INJECTED
+              "} => {/* bytes %zu..%zu */ "
+# if WORDS_BIGENDIAN
+              "\"\\xfa\\xce\\xfe\\xed\\xde\\xad\\xc0\\xde\""
+# else
+              "\"\\xde\\xc0\\xad\\xde\\xed\\xfe\\xce\\xfa\""
+# endif
+#endif /* RETVAL_INJECTED */
+              "}, %zu) = %s" INJ_STR,
+              0xdeadface00000000ULL | SIGCHLD,
+              sizeof(*arg2), sizeof(*arg2) + 7,
+#if RETVAL_INJECTED
+              sizeof(*arg2), sizeof(*arg2) + 7,
+#endif
+              sizeof(*arg2) + 8, sprintrc(rc));
+
+       arg2->exit_signal = 0xdeadc0de;
+       rc = do_clone3(arg2, sizeof(*arg) + 16, ERR(E2BIG));
+       printf("clone3({flags=0, exit_signal=3735929054, stack=NULL"
+              ", stack_size=0, ???}"
+#if RETVAL_INJECTED
+              " => {???}"
+#endif
+              ", %zu) = %s" INJ_STR,
+              sizeof(*arg) + 16, sprintrc(rc));
+
+       arg->flags = 0xface3eefbeefc0de;
+       arg->exit_signal = 0x1e55c0de;
+       rc = do_clone3(arg, 64, ERR(EINVAL));
+       printf("clone3({flags=%s, child_tid=NULL, exit_signal=508936414"
+              ", stack=NULL, stack_size=0, tls=NULL}, 64) = %s" INJ_STR,
+              XLAT_KNOWN(0xface3eefbeefc0de, "CLONE_VFORK|CLONE_PARENT"
+              "|CLONE_THREAD|CLONE_NEWNS|CLONE_SYSVSEM|CLONE_SETTLS"
+              "|CLONE_CHILD_CLEARTID|CLONE_UNTRACED|CLONE_NEWCGROUP"
+              "|CLONE_NEWUTS|CLONE_NEWIPC|CLONE_NEWUSER|CLONE_NEWPID|CLONE_IO"
+              "|CLONE_NEWTIME|CLONE_CLEAR_SIGHAND|CLONE_INTO_CGROUP"
+              "|0xface3eec0040005e"),
+              sprintrc(rc));
+
+       arg->flags = 0xdec0deac0040007fULL;
+       arg->exit_signal = 250;
+       arg->stack = 0xface1e55beeff00dULL;
+       arg->stack_size = 0xcaffeedefacedca7ULL;
+       rc = do_clone3(arg, 64, ERR(EINVAL));
+       printf("clone3({flags=%s, exit_signal=250"
+              ", stack=0xface1e55beeff00d, stack_size=0xcaffeedefacedca7}, 64)"
+              " = %s" INJ_STR,
+              XLAT_UNKNOWN(0xdec0deac0040007f, "CLONE_???"),
+              sprintrc(rc));
+
+       arg->exit_signal = SIGCHLD;
+
+       struct {
+               uint64_t flag;
+               const char *flag_str;
+               uint64_t *field;
+               const char *field_name;
+               int *ptr;
+               bool deref_exiting;
+       } pid_fields[] = {
+               { ARG_STR(CLONE_PIDFD),
+                       (uint64_t *) &arg->pidfd,
+                       "pidfd", pidfd, true },
+               { ARG_STR(CLONE_CHILD_SETTID),
+                       (uint64_t *) &arg->child_tid,
+                       "child_tid", child_tid },
+               { ARG_STR(CLONE_CHILD_CLEARTID),
+                       (uint64_t *) &arg->child_tid,
+                       "child_tid", child_tid },
+               { ARG_STR(CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID),
+                       (uint64_t *) &arg->child_tid,
+                       "child_tid", child_tid },
+               { ARG_STR(CLONE_PARENT_SETTID),
+                       (uint64_t *) &arg->parent_tid,
+                       "parent_tid", parent_tid, true },
+       };
+
+       for (size_t i = 0; i < ARRAY_SIZE(pid_fields); i++) {
+               char flag_str[128];
+               const char *rc_str;
+
+               arg->flags = 0xbad0000000000001ULL | pid_fields[i].flag;
+
+#if XLAT_RAW
+               snprintf(flag_str, sizeof(flag_str), "%#" PRIx64,
+                        (uint64_t) arg->flags);
+#elif XLAT_VERBOSE
+               snprintf(flag_str, sizeof(flag_str),
+                        "%#" PRIx64 " /* %s|0xbad0000000000001 */",
+                        (uint64_t) arg->flags, pid_fields[i].flag_str);
+#else
+               snprintf(flag_str, sizeof(flag_str), "%s|0xbad0000000000001",
+                        pid_fields[i].flag_str);
+#endif
+
+               pid_fields[i].field[0] = 0;
+               rc = do_clone3(arg, 64, ERR(EINVAL));
+               rc_str = sprintrc(rc);
+               printf("clone3({flags=%s, %s=NULL"
+                      ", exit_signal=" XLAT_KNOWN(SIGCHLD, "SIGCHLD")
+                      ", stack=0xface1e55beeff00d"
+                      ", stack_size=0xcaffeedefacedca7}",
+                      flag_str, pid_fields[i].field_name);
+#if RETVAL_INJECTED
+               if (pid_fields[i].deref_exiting)
+                       printf(" => {%s=NULL}", pid_fields[i].field_name);
+#endif /* RETVAL_INJECTED */
+               printf(", 64) = %s" INJ_STR, rc_str);
+
+               pid_fields[i].field[0] = (uintptr_t) (pid_fields[i].ptr + 1);
+               rc = do_clone3(arg, 64, ERR(EINVAL));
+               rc_str = sprintrc(rc);
+               printf("clone3({flags=%s, %s=%p"
+                      ", exit_signal=" XLAT_KNOWN(SIGCHLD, "SIGCHLD")
+                      ", stack=0xface1e55beeff00d"
+                      ", stack_size=0xcaffeedefacedca7}",
+                      flag_str, pid_fields[i].field_name,
+                      pid_fields[i].ptr + 1);
+#if RETVAL_INJECTED
+               if (pid_fields[i].deref_exiting)
+                       printf(" => {%s=%p}",
+                              pid_fields[i].field_name, pid_fields[i].ptr + 1);
+#endif /* RETVAL_INJECTED */
+               printf(", 64) = %s" INJ_STR, rc_str);
+
+               pid_fields[i].field[0] = (uintptr_t) pid_fields[i].ptr;
+               rc = do_clone3(arg, 64, ERR(EINVAL));
+               rc_str = sprintrc(rc);
+               printf("clone3({flags=%s, %s=%p"
+                      ", exit_signal=" XLAT_KNOWN(SIGCHLD, "SIGCHLD")
+                      ", stack=0xface1e55beeff00d"
+                      ", stack_size=0xcaffeedefacedca7}",
+                      flag_str, pid_fields[i].field_name,
+                      pid_fields[i].ptr);
+#if RETVAL_INJECTED
+               if (pid_fields[i].deref_exiting)
+                       printf(" => {%s=[%d]}",
+                              pid_fields[i].field_name, *pid_fields[i].ptr);
+#endif /* RETVAL_INJECTED */
+               printf(", 64) = %s" INJ_STR, rc_str);
+       }
+
+       arg->flags = 0xbad0000000000001ULL | CLONE_SETTLS;
+       rc = do_clone3(arg, 64, ERR(EINVAL));
+       printf("clone3({flags="
+              XLAT_KNOWN(0xbad0000000080001, "CLONE_SETTLS|0xbad0000000000001")
+              ", exit_signal=" XLAT_KNOWN(SIGCHLD, "SIGCHLD")
+              ", stack=0xface1e55beeff00d"
+              ", stack_size=0xcaffeedefacedca7, tls=NULL}, 64) = %s" INJ_STR,
+              sprintrc(rc));
+
+       arg->tls = (uintptr_t) (tls + 1);
+       rc = do_clone3(arg, 64, ERR(EINVAL));
+       printf("clone3({flags="
+              XLAT_KNOWN(0xbad0000000080001, "CLONE_SETTLS|0xbad0000000000001")
+              ", exit_signal=" XLAT_KNOWN(SIGCHLD, "SIGCHLD")
+              ", stack=0xface1e55beeff00d"
+              ", stack_size=0xcaffeedefacedca7, tls=%p}, 64) = %s" INJ_STR,
+              tls + 1, sprintrc(rc));
+
+       arg->tls = (uintptr_t) tls;
+       rc = do_clone3(arg, 64, ERR(EINVAL));
+       printf("clone3({flags="
+              XLAT_KNOWN(0xbad0000000080001, "CLONE_SETTLS|0xbad0000000000001")
+              ", exit_signal=" XLAT_KNOWN(SIGCHLD, "SIGCHLD")
+              ", stack=0xface1e55beeff00d, stack_size=0xcaffeedefacedca7, tls="
+#if defined HAVE_STRUCT_USER_DESC && defined __i386__
+              "{entry_number=2206368128, base_addr=0x87868584"
+              ", limit=0x8b8a8988, seg_32bit=0, contents=2, read_exec_only=1"
+              ", limit_in_pages=0, seg_not_present=0, useable=0}"
+#else
+              "%p"
+#endif
+              "}, 64) = %s" INJ_STR,
+#if !defined HAVE_STRUCT_USER_DESC || !defined __i386__
+              tls,
+#endif
+              sprintrc(rc));
+
+       for (size_t i = 0; i < ARRAY_SIZE(arg_vals); i++) {
+               memcpy(arg, &arg_vals[i].args, sizeof(*arg));
+
+               rc = do_clone3(arg, sizeof(*arg), arg_vals[i].possible_errors);
+               print_clone3(arg, rc, sizeof(*arg),
+                            arg_vals[i].vf | STRUCT_VALID,
+                            arg_vals[i].flags_str, arg_vals[i].es_str);
+               printf(", %zu) = %s" INJ_STR, sizeof(*arg), sprintrc(rc));
+       }
+
+       puts("+++ exited with 0 +++");
+
+       return 0;
+}
diff --git a/tests-m32/clone3.gen.test b/tests-m32/clone3.gen.test
new file mode 100755 (executable)
index 0000000..e5d5ca4
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clone3 -a16 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a16 
diff --git a/tests-m32/clone_parent--quiet-exit.c b/tests-m32/clone_parent--quiet-exit.c
new file mode 100644 (file)
index 0000000..fc80d80
--- /dev/null
@@ -0,0 +1,2 @@
+#define QUIET_MSG 1
+#include "clone_parent.c"
diff --git a/tests-m32/clone_parent--quiet-exit.gen.test b/tests-m32/clone_parent--quiet-exit.gen.test
new file mode 100755 (executable)
index 0000000..298abc0
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clone_parent--quiet-exit +clone_ptrace.test --quiet=exit,personality); do not edit.
+set -- --quiet=exit,personality
+. "${srcdir=.}/clone_ptrace.test"
diff --git a/tests-m32/clone_parent-q.c b/tests-m32/clone_parent-q.c
new file mode 100644 (file)
index 0000000..503b8e8
--- /dev/null
@@ -0,0 +1,2 @@
+#define QUIET_MSG 0
+#include "clone_parent.c"
diff --git a/tests-m32/clone_parent-q.gen.test b/tests-m32/clone_parent-q.gen.test
new file mode 100755 (executable)
index 0000000..0d0ecb6
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clone_parent-q +clone_ptrace.test -q); do not edit.
+set -- -q
+. "${srcdir=.}/clone_ptrace.test"
diff --git a/tests-m32/clone_parent-qq.c b/tests-m32/clone_parent-qq.c
new file mode 100644 (file)
index 0000000..fc80d80
--- /dev/null
@@ -0,0 +1,2 @@
+#define QUIET_MSG 1
+#include "clone_parent.c"
diff --git a/tests-m32/clone_parent-qq.gen.test b/tests-m32/clone_parent-qq.gen.test
new file mode 100755 (executable)
index 0000000..e472bd4
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clone_parent-qq +clone_ptrace.test -qq); do not edit.
+set -- -qq
+. "${srcdir=.}/clone_ptrace.test"
index 111f98d10182a365f981196f9f0105f8319843aa..d0e9cdacf23eebca6909af68a5f329353493bfd9 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Check handling of CLONE_PARENT'ed processes.
  *
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 #include <sys/wait.h>
 #include <unistd.h>
 
+#ifndef QUIET_MSG
+# define QUIET_MSG 0
+#endif
+
 static int
 child(void *const arg)
 {
        return 42;
 }
 
-#define child_stack_size       (get_page_size() / 2)
-
 #ifdef IA64
 extern int __clone2(int (*)(void *), void *, size_t, int, void *, ...);
-# define clone(fn, child_stack, flags, arg)    \
-               __clone2(fn, child_stack, child_stack_size, flags, arg)
+# define do_clone(fn_, stack_, size_, flags_, arg_, ...)       \
+       __clone2((fn_), (stack_), (size_), (flags_), (arg_), ## __VA_ARGS__)
+#else
+# define do_clone(fn_, stack_, size_, flags_, arg_, ...)       \
+       clone((fn_), (stack_), (flags_), (arg_), ## __VA_ARGS__)
 #endif
 
 int
 main(void)
 {
-       const pid_t pid = clone(child, tail_alloc(child_stack_size),
-                               CLONE_PARENT | SIGCHLD, 0);
+       const unsigned long child_stack_size = get_page_size();
+       void *const child_stack =
+               tail_alloc(child_stack_size * 2) + child_stack_size;
+
+       const pid_t pid = do_clone(child, child_stack, child_stack_size,
+                                  CLONE_PARENT | SIGCHLD, 0);
        if (pid < 0)
                perror_msg_and_fail("clone");
 
@@ -51,10 +60,14 @@ main(void)
        FILE *const fp = fdopen(3, "a");
        if (!fp)
                perror_msg_and_fail("fdopen");
+#if !QUIET_MSG
        if (fprintf(fp, "%s: Exit of unknown pid %d ignored\n",
                    getenv("STRACE_EXE") ?: "strace", pid) < 0)
                perror_msg_and_fail("fprintf");
+#endif
 
+#if !QUIET_MSG
        puts("+++ exited with 0 +++");
+#endif
        return 0;
 }
diff --git a/tests-m32/clone_parent.gen.test b/tests-m32/clone_parent.gen.test
new file mode 100755 (executable)
index 0000000..4303eb0
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clone_parent +clone_ptrace.test ); do not edit.
+set -- 
+. "${srcdir=.}/clone_ptrace.test"
diff --git a/tests-m32/clone_parent.test b/tests-m32/clone_parent.test
deleted file mode 100755 (executable)
index a5b077f..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/sh -efu
-#
-# Check handling of CLONE_PARENT'ed processes.
-#
-# Copyright (c) 2017-2018 The strace developers.
-# All rights reserved.
-#
-# SPDX-License-Identifier: GPL-2.0-or-later
-
-. "${srcdir=.}/clone_ptrace.test"
diff --git a/tests-m32/clone_ptrace--quiet-attach.c b/tests-m32/clone_ptrace--quiet-attach.c
new file mode 100644 (file)
index 0000000..2fb8d85
--- /dev/null
@@ -0,0 +1,2 @@
+#define QUIET_ATTACH 1
+#include "clone_ptrace.c"
diff --git a/tests-m32/clone_ptrace--quiet-attach.gen.test b/tests-m32/clone_ptrace--quiet-attach.gen.test
new file mode 100755 (executable)
index 0000000..d5c3e73
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clone_ptrace--quiet-attach +clone_ptrace.test --quiet=attach,personality); do not edit.
+set -- --quiet=attach,personality
+. "${srcdir=.}/clone_ptrace.test"
diff --git a/tests-m32/clone_ptrace--quiet-exit.c b/tests-m32/clone_ptrace--quiet-exit.c
new file mode 100644 (file)
index 0000000..3503cfb
--- /dev/null
@@ -0,0 +1,2 @@
+#define QUIET_EXIT 1
+#include "clone_ptrace.c"
diff --git a/tests-m32/clone_ptrace--quiet-exit.gen.test b/tests-m32/clone_ptrace--quiet-exit.gen.test
new file mode 100755 (executable)
index 0000000..6342598
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clone_ptrace--quiet-exit +clone_ptrace.test --quiet=exit,personality); do not edit.
+set -- --quiet=exit,personality
+. "${srcdir=.}/clone_ptrace.test"
diff --git a/tests-m32/clone_ptrace-q.c b/tests-m32/clone_ptrace-q.c
new file mode 100644 (file)
index 0000000..2fb8d85
--- /dev/null
@@ -0,0 +1,2 @@
+#define QUIET_ATTACH 1
+#include "clone_ptrace.c"
diff --git a/tests-m32/clone_ptrace-q.gen.test b/tests-m32/clone_ptrace-q.gen.test
new file mode 100755 (executable)
index 0000000..155e3a5
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clone_ptrace-q +clone_ptrace.test -q); do not edit.
+set -- -q
+. "${srcdir=.}/clone_ptrace.test"
diff --git a/tests-m32/clone_ptrace-qq.c b/tests-m32/clone_ptrace-qq.c
new file mode 100644 (file)
index 0000000..037fbca
--- /dev/null
@@ -0,0 +1,3 @@
+#define QUIET_ATTACH 1
+#define QUIET_EXIT 1
+#include "clone_ptrace.c"
diff --git a/tests-m32/clone_ptrace-qq.gen.test b/tests-m32/clone_ptrace-qq.gen.test
new file mode 100755 (executable)
index 0000000..caa8ab4
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clone_ptrace-qq +clone_ptrace.test -qq); do not edit.
+set -- -qq
+. "${srcdir=.}/clone_ptrace.test"
index ee366ab936f84cd1ce5ac27cd7fcb22bc7b72374..4598400da48b7c699837faae5c837bb6957dbd9d 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Check handling of CLONE_PTRACE'ed processes.
  *
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 
 static siginfo_t sinfo;
 
+#ifndef QUIET_ATTACH
+# define QUIET_ATTACH 0
+#endif
+#ifndef QUIET_EXIT
+# define QUIET_EXIT 0
+#endif
+
 static void
 handler(const int no, siginfo_t *const si, void *const uc)
 {
@@ -34,12 +41,13 @@ child(void *const arg)
        return 0;
 }
 
-#define child_stack_size       (get_page_size() / 2)
-
 #ifdef IA64
 extern int __clone2(int (*)(void *), void *, size_t, int, void *, ...);
-# define clone(fn, child_stack, flags, arg)    \
-               __clone2(fn, child_stack, child_stack_size, flags, arg)
+# define do_clone(fn_, stack_, size_, flags_, arg_, ...)       \
+       __clone2((fn_), (stack_), (size_), (flags_), (arg_), ## __VA_ARGS__)
+#else
+# define do_clone(fn_, stack_, size_, flags_, arg_, ...)       \
+       clone((fn_), (stack_), (flags_), (arg_), ## __VA_ARGS__)
 #endif
 
 int
@@ -52,8 +60,12 @@ main(void)
        if (sigprocmask(SIG_UNBLOCK, &mask, NULL))
                perror_msg_and_fail("sigprocmask");
 
-       const pid_t pid = clone(child, tail_alloc(child_stack_size),
-                               CLONE_PTRACE | SIGCHLD, 0);
+       const unsigned long child_stack_size = get_page_size();
+       void *const child_stack =
+               tail_alloc(child_stack_size * 2) + child_stack_size;
+
+       const pid_t pid = do_clone(child, child_stack, child_stack_size,
+                                  CLONE_PTRACE | SIGCHLD, 0);
        if (pid < 0)
                perror_msg_and_fail("clone");
 
@@ -69,9 +81,11 @@ main(void)
        FILE *const fp = fdopen(3, "a");
        if (!fp)
                perror_msg_and_fail("fdopen");
+#if !QUIET_ATTACH
        if (fprintf(fp, "%s: Detached unknown pid %d\n",
                    getenv("STRACE_EXE") ?: "strace", pid) < 0)
                perror_msg_and_fail("fprintf");
+#endif
 
        int status;
        while (wait(&status) != pid) {
@@ -82,8 +96,11 @@ main(void)
                error_msg_and_fail("unexpected child exit status %d", status);
 
        printf("--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_KILLED, si_pid=%d"
-              ", si_uid=%u, si_status=%s, si_utime=%u, si_stime=%u} ---\n"
-              "+++ exited with 0 +++\n", pid, geteuid(), "SIGUSR1",
+              ", si_uid=%d, si_status=%s, si_utime=%u, si_stime=%u} ---\n"
+#if !QUIET_EXIT
+              "+++ exited with 0 +++\n"
+#endif
+              , pid, geteuid(), "SIGUSR1",
               (unsigned int) sinfo.si_utime, (unsigned int) sinfo.si_stime);
 
        return 0;
index 24c4298ad1cc55c6b76314be069af73916f8f3a3..6f77ed8b0c34b9bd56c7e3ca72788688908780e4 100755 (executable)
@@ -2,7 +2,7 @@
 #
 # Check handling of CLONE_PTRACE'ed processes.
 #
-# Copyright (c) 2017-2018 The strace developers.
+# Copyright (c) 2017-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 . "${srcdir=.}/init.sh"
 
 run_prog > /dev/null 3>&1
-args="-e trace=none $args"
+args="-e trace=none ${1:---quiet=personality} $args"
 > "$LOG" || fail_ "failed to write $LOG"
 
 $STRACE -o "$LOG" $args > "$EXP" 2> "$OUT"-err 3> "$EXP"-err || {
diff --git a/tests-m32/close_range-P.c b/tests-m32/close_range-P.c
new file mode 100644 (file)
index 0000000..2c757b0
--- /dev/null
@@ -0,0 +1,4 @@
+#define PATH_TRACING
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "close_range.c"
diff --git a/tests-m32/close_range-P.gen.test b/tests-m32/close_range-P.gen.test
new file mode 100755 (executable)
index 0000000..85fb6a8
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (close_range-P -a21 --trace=close_range -P /dev/full 7>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a21 --trace=close_range -P /dev/full 7>>/dev/full
diff --git a/tests-m32/close_range-y.c b/tests-m32/close_range-y.c
new file mode 100644 (file)
index 0000000..61b481b
--- /dev/null
@@ -0,0 +1,5 @@
+#define FD0_PATH "</dev/null>"
+#define FD7_PATH "</dev/full>"
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "close_range.c"
diff --git a/tests-m32/close_range-y.gen.test b/tests-m32/close_range-y.gen.test
new file mode 100755 (executable)
index 0000000..da08dc0
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (close_range-y -a33 --trace=close_range -y 7>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a33 --trace=close_range -y 7>>/dev/full
diff --git a/tests-m32/close_range-yy.c b/tests-m32/close_range-yy.c
new file mode 100644 (file)
index 0000000..64997fc
--- /dev/null
@@ -0,0 +1,5 @@
+#define FD0_PATH "</dev/null<char 1:3>>"
+#define FD7_PATH "</dev/full<char 1:7>>"
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "close_range.c"
diff --git a/tests-m32/close_range-yy.gen.test b/tests-m32/close_range-yy.gen.test
new file mode 100755 (executable)
index 0000000..3f3b9cb
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (close_range-yy -a33 --trace=close_range -yy 7>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a33 --trace=close_range -yy 7>>/dev/full
diff --git a/tests-m32/close_range.c b/tests-m32/close_range.c
new file mode 100644 (file)
index 0000000..b3a3ab7
--- /dev/null
@@ -0,0 +1,147 @@
+/*
+ * Check decoding of close_range syscall.
+ *
+ * Copyright (c) 2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_close_range
+
+# include <fcntl.h>
+# include <stdio.h>
+# include <unistd.h>
+
+# ifdef HAVE_LINUX_CLOSE_RANGE_H
+#  include <linux/close_range.h>
+# else
+#  define CLOSE_RANGE_UNSHARE  (1U << 1)
+# endif
+
+# ifndef FD0_PATH
+#  define FD0_PATH ""
+# endif
+# ifndef FD7_PATH
+#  define FD7_PATH ""
+# endif
+# ifndef SKIP_IF_PROC_IS_UNAVAILABLE
+#  define SKIP_IF_PROC_IS_UNAVAILABLE
+# endif
+
+static const char *errstr;
+
+static long
+k_close_range(const unsigned int fd1, const unsigned int fd2, const unsigned int flags)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = fill | fd1;
+       const kernel_ulong_t arg2 = fill | fd2;
+       const kernel_ulong_t arg3 = fill | flags;
+       const long rc = syscall(__NR_close_range, arg1, arg2, arg3, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
+static void
+xdup2(int fd1, int fd2)
+{
+       if (dup2(fd1, fd2) != fd2)
+               perror_msg_and_fail("dup2(%d, %d)", fd1, fd2);
+}
+
+int
+main(void)
+{
+       SKIP_IF_PROC_IS_UNAVAILABLE;
+
+       const int fd0 = dup(0);
+       const int fd7 = dup(7);
+       const int fd7_min = MIN(7, fd7);
+       const int fd7_max = MAX(7, fd7);
+
+       k_close_range(-2, -1, 1);
+# ifndef PATH_TRACING
+       printf("close_range(-2, -1, 0x1 /* CLOSE_RANGE_??? */) = %s\n", errstr);
+# endif
+
+       k_close_range(-1, -2, 2);
+# ifndef PATH_TRACING
+       printf("close_range(-1, -2, CLOSE_RANGE_UNSHARE) = %s\n", errstr);
+# endif
+
+       k_close_range(-3, 0, 4);
+# ifndef PATH_TRACING
+       printf("close_range(-3, 0" FD0_PATH ", 0x4 /* CLOSE_RANGE_??? */)"
+              " = %s\n", errstr);
+# endif
+
+       k_close_range(0, -4, -1);
+# ifndef PATH_TRACING
+       printf("close_range(0" FD0_PATH ", -4, CLOSE_RANGE_UNSHARE|%#x) = %s\n",
+              (-1U & ~CLOSE_RANGE_UNSHARE), errstr);
+# endif
+
+       k_close_range(-5, 7, 0);
+       printf("close_range(-5, 7" FD7_PATH ", 0) = %s\n", errstr);
+
+       k_close_range(7, -6, 1);
+       printf("close_range(7" FD7_PATH ", -6, 0x1 /* CLOSE_RANGE_??? */)"
+              " = %s\n", errstr);
+
+       k_close_range(7, 7, 4);
+       printf("close_range(7" FD7_PATH ", 7" FD7_PATH
+              ", 0x4 /* CLOSE_RANGE_??? */) = %s\n", errstr);
+
+       k_close_range(-7, -7, 7);
+# ifndef PATH_TRACING
+       printf("close_range(-7, -7, CLOSE_RANGE_UNSHARE|0x5) = %s\n", errstr);
+# endif
+
+       k_close_range(7, 0, 0);
+       printf("close_range(7" FD7_PATH ", 0" FD0_PATH ", 0) = %s\n", errstr);
+
+       k_close_range(fd7, fd0, 0);
+       printf("close_range(%d" FD7_PATH ", %d" FD0_PATH ", 0) = %s\n",
+              fd7, fd0, errstr);
+
+       if (k_close_range(0, 0, 0) == 0)
+               xdup2(fd0, 0);
+# ifndef PATH_TRACING
+       printf("close_range(0" FD0_PATH ", 0" FD0_PATH ", 0) = %s\n", errstr);
+# endif
+
+       if (k_close_range(fd0, fd0, 0) == 0)
+               xdup2(0, fd0);
+# ifndef PATH_TRACING
+       printf("close_range(%d" FD0_PATH ", %d" FD0_PATH ", 0) = %s\n",
+              fd0, fd0, errstr);
+# endif
+
+       if (k_close_range(7, 7, 0) == 0)
+               xdup2(fd7, 7);
+       printf("close_range(7" FD7_PATH ", 7" FD7_PATH ", 0) = %s\n", errstr);
+
+       if (k_close_range(fd7, fd7, 0) == 0)
+               xdup2(7, fd7);
+       printf("close_range(%d" FD7_PATH ", %d" FD7_PATH ", 0) = %s\n",
+              fd7, fd7, errstr);
+
+       if (k_close_range(fd7_max, -1, 0) == 0)
+               xdup2(fd7_min, fd7_max);
+       printf("close_range(%d" FD7_PATH ", -1, 0) = %s\n",
+              fd7_max, errstr);
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_close_range")
+
+#endif
diff --git a/tests-m32/close_range.gen.test b/tests-m32/close_range.gen.test
new file mode 100755 (executable)
index 0000000..19e6f4b
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (close_range -a21 7>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a21 7>>/dev/full
index c1f142c65b755f086dcb59ded7158f35ca3711e6..f39f8afc772dd5d5b942388faf9872ac6abf30b2 100644 (file)
@@ -2,14 +2,13 @@
  * This file is part of copy_file_range strace test.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
 #include "scno.h"
 
 #if defined __NR_copy_file_range
index 4f3d45f8889f2451a2bdc05e70a3d8d7cf7862dd..001008a36b4cb050361a68ef162b3315d23d3d0b 100755 (executable)
@@ -2,7 +2,7 @@
 #
 # Check whether -c counts through forks and clones properly.
 #
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 . "${srcdir=.}/init.sh"
 
 run_prog
-run_strace -q -f -c $args
+run_strace -e silent=attach -f -c $args
 match_grep
 
 exit 0
index 6abb177260db7bdb7b73d0074edfdd770133148e..c1ba37206a658dba7d6b81dc327192a10ef82a77 100755 (executable)
@@ -3,7 +3,7 @@
 # Check whether -c and -w options work.
 #
 # Copyright (c) 2014-2016 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2014-2018 The strace developers.
+# Copyright (c) 2014-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -29,13 +29,25 @@ grep_log()
        }
 }
 
-grep_log ' *[^ ]+ +0\.0[^n]*nanosleep'         -c
-grep_log ' *[^ ]+ +0\.0[^n]*nanosleep'         -c -O1
-grep_log ' *[^ ]+ +0\.0[^n]*nanosleep'         -c -enanosleep
-grep_log ' *[^ ]+ +0\.0[^n]*nanosleep'         -c -O1 -enanosleep
-grep_log ' *[^ ]+ +(1\.[01]|0\.99)[^n]*nanosleep'      -cw
-grep_log ' *[^ ]+ +(1\.[01]|0\.99)[^n]*nanosleep'      -cw -O1
-grep_log '100\.00 +(1\.[01]|0\.99)[^n]*nanosleep'      -cw -enanosleep
-grep_log '100\.00 +(1\.[01]|0\.99)[^n]*nanosleep'      -cw -O1 -enanosleep
+GENERIC=' *[^ ]+ +0\.0[^n]*nanosleep *'
+WALLCLOCK=' *[^ ]+ +(1\.[01]|0\.99)[^n]*nanosleep *'
+WALLCLOCK1='100\.00 +(1\.[01]|0\.99)[^n]*nanosleep'
+HALFCLOCK=' *[^ ]+ +0\.[567][^n]*nanosleep *'
+
+grep_log "$GENERIC"    -c
+grep_log "$GENERIC"    -c -O1
+grep_log "$GENERIC"    -c --summary-syscall-overhead=1
+grep_log "$GENERIC"    -c -enanosleep
+grep_log "$GENERIC"    -c -O1 -enanosleep
+grep_log "$WALLCLOCK"  -cw
+grep_log "$WALLCLOCK"  -cw -O1
+grep_log "$WALLCLOCK1" -cw -enanosleep
+grep_log "$WALLCLOCK1" -cw -O1 -enanosleep
+grep_log "$HALFCLOCK"  -cw -O4.5e2ms -enanosleep
+grep_log "$HALFCLOCK"  -cw --summary-syscall-overhead=4.5e2ms -enanosleep
+grep_log "$HALFCLOCK"  -cw -O4.5e-1s -enanosleep
+grep_log "$HALFCLOCK"  -cw --summary-syscall-overhead=4.5e-1s -enanosleep
+grep_log "$HALFCLOCK"  -cw -O456789012ns -enanosleep
+grep_log "$HALFCLOCK"  -cw --summary-syscall-overhead=456789012ns -enanosleep
 
 exit 0
index 71819d5b8aed2e2e5f72cf08530c8d9db7bf2f33..6a5c08e519b4ae099ed90998e226c74145b46bc2 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_creat
 
diff --git a/tests-m32/create_tmpfile.c b/tests-m32/create_tmpfile.c
new file mode 100644 (file)
index 0000000..56f4e60
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Create a temporary file in the current directory.
+ *
+ * Copyright (c) 2020 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <fcntl.h>
+#include <unistd.h>
+
+#ifndef O_TMPFILE
+# if defined __hppa__
+#  define O_TMPFILE    040000000
+# elif defined __alpha__
+#  define O_TMPFILE    0100000000
+# elif defined __sparc__
+#  define O_TMPFILE    0200000000
+# else
+#  define O_TMPFILE    020000000
+# endif
+#endif
+
+int
+create_tmpfile(unsigned int flags)
+{
+       int fd = open(".", O_TMPFILE | O_DIRECTORY | O_EXCL | flags, 0600);
+
+       if (fd < 0) {
+               /*
+                * Since every test is executed in a separate directory,
+                * there is no need to protect from race conditions.
+                */
+               static const char fname[] = "create_tmpfile";
+
+               fd = open(fname, O_CREAT | O_EXCL | flags, 0600);
+               if (fd < 0)
+                       perror_msg_and_fail("open: %s", fname);
+               if (unlink(fname))
+                       perror_msg_and_fail("unlink: %s", fname);
+       }
+
+       return fd;
+}
index fb19b15778115680e046b6158effbc75436c10a9..1b54c443fbd2f8704dda7a528e97a0c42e5997a2 100644 (file)
@@ -1,13 +1,14 @@
 /*
  * Check delay injection.
  *
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
+#include <inttypes.h>
 #include <limits.h>
 #include <stdio.h>
 #include <stdint.h>
@@ -16,7 +17,7 @@
 #include <time.h>
 #include <sys/time.h>
 #include <sys/wait.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 static int64_t
 usecs_from_tv(const struct timeval *const tv)
@@ -30,6 +31,22 @@ usecs_from_ts(const struct timespec *const ts)
     return (int64_t) ts->tv_sec * 1000000 + ts->tv_nsec / 1000;
 }
 
+static void
+check_(const int64_t got, const bool ge, const int64_t orig, const int nproc,
+       const int exitcode)
+{
+       const int64_t thresh = (orig * (ge ? nproc - 1 : nproc + 1)) / nproc;
+
+       if (ge ? got >= thresh : got <= thresh)
+               return;
+
+       fprintf(stderr, "Got delay of %" PRId64 ", %s than threshold value of "
+                       "%" PRId64 " (expected nominal delay value is %" PRId64
+                       ")\n", got, ge ? "less" : "more", thresh, orig);
+
+       _exit(exitcode);
+}
+
 static void
 check_delay(const struct timeval *const tv0,
            const struct timespec *const ts,
@@ -42,17 +59,10 @@ check_delay(const struct timeval *const tv0,
        const int64_t us  = usecs_from_ts(ts);
        const int64_t us1 = usecs_from_tv(tv1);
 
-       if (us - us0 < delay_exit * (nproc - 1) / nproc)
-               _exit(1);
-
-       if (us - us0 > delay_exit * (nproc + 1) / nproc)
-               _exit(2);
-
-       if (us1 - us < delay_enter * (nproc - 1) / nproc)
-               _exit(3);
-
-       if (us1 - us > delay_enter * (nproc + 1) / nproc)
-               _exit(4);
+       check_(us - us0, true,  delay_exit,  nproc, 1);
+       check_(us - us0, false, delay_exit,  nproc, 2);
+       check_(us1 - us, true,  delay_enter, nproc, 3);
+       check_(us1 - us, false, delay_enter, nproc, 4);
 }
 
 static void
index df8552c7b12fbb362589613415f42b3ba4b768df..f74e27f1ee5b02d04e68caf59d007f924a4f60df 100755 (executable)
@@ -2,15 +2,22 @@
 #
 # Check delay injection.
 #
-# Copyright (c) 2018 The strace developers.
+# Copyright (c) 2018-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 . "${srcdir=.}/init.sh"
 
-delay_enter=800000
-delay_exit=1600000
-run_strace -f -r -egettimeofday \
-       -einject=gettimeofday:delay_enter=$delay_enter:delay_exit=$delay_exit \
-       ../delay 4 $delay_enter $delay_exit
+while read -r denter dexit denter_us dexit_us; do
+       [ -n "$denter" ] || continue
+
+       run_strace --follow-forks -r -egettimeofday \
+               -einject=gettimeofday:delay_enter=$denter:delay_exit=$dexit \
+               ../delay 4 $denter_us $dexit_us
+done <<-EOF
+       800000 1600000  800000 1600000
+       8e5    1.6s     800000 1600000
+       800ms  1.6e+6us 800000 1600000
+       +8e8ns .16E7    800000 1600000
+EOF
index 3b2614c1dbec524d27f24df819713490cc8ade11..ad2bca67d8922f0af7e383cbe1e8e467ad4f2f95 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of delete_module syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined(__NR_delete_module)
 
diff --git a/tests-m32/dev--decode-fds-dev.c b/tests-m32/dev--decode-fds-dev.c
new file mode 100644 (file)
index 0000000..eb8eb5e
--- /dev/null
@@ -0,0 +1,2 @@
+#define PRINT_DEVNUM 1
+#include "dev-yy.c"
diff --git a/tests-m32/dev--decode-fds-dev.gen.test b/tests-m32/dev--decode-fds-dev.gen.test
new file mode 100755 (executable)
index 0000000..92983d0
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dev--decode-fds-dev -a30 -e trace=openat,fsync -P "/dev/full" -P "/dev/zero" -P "/dev/sda" -e decode-fds=dev); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a30 -e trace=openat,fsync -P "/dev/full" -P "/dev/zero" -P "/dev/sda" -e decode-fds=dev
diff --git a/tests-m32/dev--decode-fds-path.c b/tests-m32/dev--decode-fds-path.c
new file mode 100644 (file)
index 0000000..2a5fa12
--- /dev/null
@@ -0,0 +1,2 @@
+#define PRINT_DEVNUM 0
+#include "dev-yy.c"
diff --git a/tests-m32/dev--decode-fds-path.gen.test b/tests-m32/dev--decode-fds-path.gen.test
new file mode 100755 (executable)
index 0000000..0be131e
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dev--decode-fds-path -a19 -e trace=openat,fsync -P "/dev/full" -P "/dev/zero" -P "/dev/sda" -e decode-fds=path); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a19 -e trace=openat,fsync -P "/dev/full" -P "/dev/zero" -P "/dev/sda" -e decode-fds=path
diff --git a/tests-m32/dev--decode-fds-socket.c b/tests-m32/dev--decode-fds-socket.c
new file mode 100644 (file)
index 0000000..2a5fa12
--- /dev/null
@@ -0,0 +1,2 @@
+#define PRINT_DEVNUM 0
+#include "dev-yy.c"
diff --git a/tests-m32/dev--decode-fds-socket.gen.test b/tests-m32/dev--decode-fds-socket.gen.test
new file mode 100755 (executable)
index 0000000..5608564
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dev--decode-fds-socket -a19 -e trace=openat,fsync -P "/dev/full" -P "/dev/zero" -P "/dev/sda" --decode-fds=socket); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a19 -e trace=openat,fsync -P "/dev/full" -P "/dev/zero" -P "/dev/sda" --decode-fds=socket
index b9f55fa4fd9f19017a24cbbac30d085312dde58f..0ffb0c4c214226049bf4c235854c14dbca9c9e21 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Check printing of character/block device numbers in -yy mode.
  *
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 #include <stdio.h>
 #include <unistd.h>
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #include <linux/fcntl.h>
 
 #include <sys/sysmacros.h>
 
+#ifndef PRINT_DEVNUM
+# define PRINT_DEVNUM 1
+#endif
+
+#if PRINT_DEVNUM
+# define DEV_FMT "<%s<%s %u:%u>>"
+#else
+# define DEV_FMT "<%s>"
+#endif
+
 #if defined __NR_openat && defined O_PATH
 
 int
@@ -47,10 +57,13 @@ main(void)
                printf("openat(AT_FDCWD, \"%s\", O_RDONLY|O_PATH) = %s",
                       checks[i].path, sprintrc(fd));
                if (fd >= 0)
-                       printf("<%s<%s %u:%u>>",
-                              checks[i].path,
-                              checks[i].blk ? "block" : "char",
-                              checks[i].major, checks[i].minor);
+                       printf(DEV_FMT,
+                              checks[i].path
+# if PRINT_DEVNUM
+                              , checks[i].blk ? "block" : "char",
+                              checks[i].major, checks[i].minor
+# endif
+                              );
                puts("");
 
                if (fd < 0) {
@@ -63,9 +76,13 @@ main(void)
 
                int rc = fsync(fd);
 
-               printf("fsync(%ld<%s<%s %u:%u>>) = %s\n",
-                      fd, checks[i].path, checks[i].blk ? "block" : "char",
-                      checks[i].major, checks[i].minor, sprintrc(rc));
+               printf("fsync(%ld" DEV_FMT ") = %s\n",
+                      fd, checks[i].path,
+# if PRINT_DEVNUM
+                      checks[i].blk ? "block" : "char",
+                      checks[i].major, checks[i].minor,
+# endif
+                      sprintrc(rc));
 
                close(fd);
        }
diff --git a/tests-m32/dup-P.c b/tests-m32/dup-P.c
new file mode 100644 (file)
index 0000000..c65def8
--- /dev/null
@@ -0,0 +1,4 @@
+#define PATH_TRACING
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "dup.c"
diff --git a/tests-m32/dup-P.gen.test b/tests-m32/dup-P.gen.test
new file mode 100755 (executable)
index 0000000..5d170a3
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup-P -a7 --trace=dup -P /dev/full 9>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a7 --trace=dup -P /dev/full 9>>/dev/full
diff --git a/tests-m32/dup-y.c b/tests-m32/dup-y.c
new file mode 100644 (file)
index 0000000..285f20a
--- /dev/null
@@ -0,0 +1,5 @@
+#define FD0_PATH "</dev/null>"
+#define FD9_PATH "</dev/full>"
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "dup.c"
diff --git a/tests-m32/dup-y.gen.test b/tests-m32/dup-y.gen.test
new file mode 100755 (executable)
index 0000000..b29c05f
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup-y -a8 --trace=dup -y 9>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a8 --trace=dup -y 9>>/dev/full
diff --git a/tests-m32/dup-yy.c b/tests-m32/dup-yy.c
new file mode 100644 (file)
index 0000000..2e8175d
--- /dev/null
@@ -0,0 +1,5 @@
+#define FD0_PATH "</dev/null<char 1:3>>"
+#define FD9_PATH "</dev/full<char 1:7>>"
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "dup.c"
diff --git a/tests-m32/dup-yy.gen.test b/tests-m32/dup-yy.gen.test
new file mode 100755 (executable)
index 0000000..6f73d83
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup-yy -a8 --trace=dup -yy 9>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a8 --trace=dup -yy 9>>/dev/full
index 5cf5df7c50f7ffdcb602378a5735ff993b965805..d668e95e5790a280b78dfde8b1db6a722172dd7e 100644 (file)
@@ -1,20 +1,72 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Check decoding of dup syscall.
+ *
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <stdio.h>
-#include <unistd.h>
+#include "scno.h"
+
+#ifdef __NR_dup
+
+# include <stdio.h>
+# include <unistd.h>
+
+# ifndef FD0_PATH
+#  define FD0_PATH ""
+# endif
+# ifndef FD9_PATH
+#  define FD9_PATH ""
+# endif
+# ifndef SKIP_IF_PROC_IS_UNAVAILABLE
+#  define SKIP_IF_PROC_IS_UNAVAILABLE
+# endif
+
+static const char *errstr;
+
+static long
+k_dup(const unsigned int fd)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = fill | fd;
+       const long rc = syscall(__NR_dup, arg1, bad, bad, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
 
 int
 main(void)
 {
-       int rc = dup(-1);
-       printf("dup(-1) = %d %s (%m)\n", rc, errno2name());
+       SKIP_IF_PROC_IS_UNAVAILABLE;
+
+       k_dup(-1);
+# ifndef PATH_TRACING
+       printf("dup(-1) = %s\n", errstr);
+# endif
+
+       int d1 = k_dup(0);
+# ifndef PATH_TRACING
+       printf("dup(0" FD0_PATH ") = %d" FD0_PATH "\n", d1);
+# endif
+
+       int d2 = k_dup(d1);
+# ifndef PATH_TRACING
+       printf("dup(%d" FD0_PATH ") = %d" FD0_PATH "\n", d1, d2);
+# endif
+
+       d2 = k_dup(9);
+       printf("dup(9" FD9_PATH ") = %d" FD9_PATH "\n", d2);
 
        puts("+++ exited with 0 +++");
        return 0;
 }
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_dup")
+
+#endif
index e559cdbce518c63f5c424ce46e8060e9b0189865..6e9a4f795261ad9db43a60a632a4b5116dc21b9c 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup -a); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup -a7 9>>/dev/full); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a
+run_strace_match_diff -a7 9>>/dev/full
diff --git a/tests-m32/dup2-P.c b/tests-m32/dup2-P.c
new file mode 100644 (file)
index 0000000..f9603ea
--- /dev/null
@@ -0,0 +1,4 @@
+#define PATH_TRACING
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "dup2.c"
diff --git a/tests-m32/dup2-P.gen.test b/tests-m32/dup2-P.gen.test
new file mode 100755 (executable)
index 0000000..98df93e
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup2-P -a11 --trace=dup2 -P /dev/full 9>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a11 --trace=dup2 -P /dev/full 9>>/dev/full
diff --git a/tests-m32/dup2-y.c b/tests-m32/dup2-y.c
new file mode 100644 (file)
index 0000000..6b64663
--- /dev/null
@@ -0,0 +1,5 @@
+#define FD0_PATH "</dev/null>"
+#define FD9_PATH "</dev/full>"
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "dup2.c"
diff --git a/tests-m32/dup2-y.gen.test b/tests-m32/dup2-y.gen.test
new file mode 100755 (executable)
index 0000000..79d89c5
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup2-y -a13 --trace=dup2 -y 9>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a13 --trace=dup2 -y 9>>/dev/full
diff --git a/tests-m32/dup2-yy.c b/tests-m32/dup2-yy.c
new file mode 100644 (file)
index 0000000..6040579
--- /dev/null
@@ -0,0 +1,5 @@
+#define FD0_PATH "</dev/null<char 1:3>>"
+#define FD9_PATH "</dev/full<char 1:7>>"
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "dup2.c"
diff --git a/tests-m32/dup2-yy.gen.test b/tests-m32/dup2-yy.gen.test
new file mode 100755 (executable)
index 0000000..1c7ff8e
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup2-yy -a13 --trace=dup2 -yy 9>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a13 --trace=dup2 -yy 9>>/dev/full
index fba8fca5605e808ed8d11e8c51a6ebb53df706f7..ec735e9287167499234de7fefe34573013070d8a 100644 (file)
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Check decoding of dup2 syscall.
+ *
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_dup2
 
 # include <stdio.h>
 # include <unistd.h>
 
+# ifndef FD0_PATH
+#  define FD0_PATH ""
+# endif
+# ifndef FD9_PATH
+#  define FD9_PATH ""
+# endif
+# ifndef SKIP_IF_PROC_IS_UNAVAILABLE
+#  define SKIP_IF_PROC_IS_UNAVAILABLE
+# endif
+
+static const char *errstr;
+
+static long
+k_dup2(const unsigned int fd1, const unsigned int fd2)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = fill | fd1;
+       const kernel_ulong_t arg2 = fill | fd2;
+       const long rc = syscall(__NR_dup2, arg1, arg2, bad, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
 int
 main(void)
 {
-       const long int fd_old = (long int) 0xdeadbeefffffffffULL;
-       const long int fd_new = (long int) 0xdeadbeeffffffffeULL;
+       SKIP_IF_PROC_IS_UNAVAILABLE;
+
+       int fd0 = dup(0);
+       int fd9 = dup(9);
+
+       if (k_dup2(0, 0))
+               perror_msg_and_skip("dup2");
+# ifndef PATH_TRACING
+       printf("dup2(0" FD0_PATH ", 0" FD0_PATH ") = 0" FD0_PATH "\n");
+# endif
+
+       k_dup2(-1, -2);
+# ifndef PATH_TRACING
+       printf("dup2(-1, -2) = %s\n", errstr);
+# endif
+
+       k_dup2(-2, -1);
+# ifndef PATH_TRACING
+       printf("dup2(-2, -1) = %s\n", errstr);
+# endif
+
+       k_dup2(-3, 0);
+# ifndef PATH_TRACING
+       printf("dup2(-3, 0" FD0_PATH ") = %s\n", errstr);
+# endif
+
+       k_dup2(0, -4);
+# ifndef PATH_TRACING
+       printf("dup2(0" FD0_PATH ", -4) = %s\n", errstr);
+# endif
+
+       k_dup2(-5, 9);
+       printf("dup2(-5, 9" FD9_PATH ") = %s\n", errstr);
+
+       k_dup2(9, -6);
+       printf("dup2(9" FD9_PATH ", -6) = %s\n", errstr);
+
+       k_dup2(9, 9);
+       printf("dup2(9" FD9_PATH ", 9" FD9_PATH ") = 9" FD9_PATH "\n");
+
+       k_dup2(0, fd0);
+# ifndef PATH_TRACING
+       printf("dup2(0" FD0_PATH ", %d" FD0_PATH ") = %d" FD0_PATH "\n",
+              fd0, fd0);
+# endif
+
+       k_dup2(9, fd9);
+       printf("dup2(9" FD9_PATH ", %d" FD9_PATH ") = %d" FD9_PATH "\n",
+              fd9, fd9);
+
+       k_dup2(0, fd9);
+       printf("dup2(0" FD0_PATH ", %d" FD9_PATH ") = %d" FD0_PATH "\n",
+              fd9, fd9);
+
+       k_dup2(9, fd0);
+       printf("dup2(9" FD9_PATH ", %d" FD0_PATH ") = %d" FD9_PATH "\n",
+              fd0, fd0);
+
+       close(fd0);
+       close(fd9);
+
+       k_dup2(0, fd0);
+# ifndef PATH_TRACING
+       printf("dup2(0" FD0_PATH ", %d) = %d" FD0_PATH "\n",
+              fd0, fd0);
+# endif
 
-       long rc = syscall(__NR_dup2, fd_old, fd_new);
-       printf("dup2(%d, %d) = %ld %s (%m)\n",
-              (int) fd_old, (int) fd_new, rc, errno2name());
+       k_dup2(9, fd9);
+       printf("dup2(9" FD9_PATH ", %d) = %d" FD9_PATH "\n",
+              fd9, fd9);
 
        puts("+++ exited with 0 +++");
        return 0;
index 6a6d2f5898bb631d39f186e6a19b4262f4dc23a6..6d2c0688081a0ec9cfa45e36d4f5c85260c88501 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup2 -a1); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup2 -a11 9>>/dev/full); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a1
+run_strace_match_diff -a11 9>>/dev/full
diff --git a/tests-m32/dup3-P.c b/tests-m32/dup3-P.c
new file mode 100644 (file)
index 0000000..09ddb93
--- /dev/null
@@ -0,0 +1,4 @@
+#define PATH_TRACING
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "dup3.c"
diff --git a/tests-m32/dup3-P.gen.test b/tests-m32/dup3-P.gen.test
new file mode 100755 (executable)
index 0000000..ad77199
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup3-P -a13 --trace=dup3 -P /dev/full 7>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a13 --trace=dup3 -P /dev/full 7>>/dev/full
diff --git a/tests-m32/dup3-y.c b/tests-m32/dup3-y.c
new file mode 100644 (file)
index 0000000..730a920
--- /dev/null
@@ -0,0 +1,5 @@
+#define FD0_PATH "</dev/null>"
+#define FD7_PATH "</dev/full>"
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "dup3.c"
diff --git a/tests-m32/dup3-y.gen.test b/tests-m32/dup3-y.gen.test
new file mode 100755 (executable)
index 0000000..0c74ee0
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup3-y -a15 --trace=dup3 -y 7>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a15 --trace=dup3 -y 7>>/dev/full
diff --git a/tests-m32/dup3-yy.c b/tests-m32/dup3-yy.c
new file mode 100644 (file)
index 0000000..24d7988
--- /dev/null
@@ -0,0 +1,5 @@
+#define FD0_PATH "</dev/null<char 1:3>>"
+#define FD7_PATH "</dev/full<char 1:7>>"
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "dup3.c"
diff --git a/tests-m32/dup3-yy.gen.test b/tests-m32/dup3-yy.gen.test
new file mode 100755 (executable)
index 0000000..6581ef5
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup3-yy -a15 --trace=dup3 -yy 7>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a15 --trace=dup3 -yy 7>>/dev/full
index 741e06f880e53f3d97d541ed90e6bd41e6a65505..930257246eea387d4308a255d818c770ae44db3f 100644 (file)
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Check decoding of dup3 syscall.
+ *
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <fcntl.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
-#if defined __NR_dup3 && defined O_CLOEXEC
+#ifdef __NR_dup3
 
+# include <fcntl.h>
 # include <stdio.h>
 # include <unistd.h>
 
+# ifndef O_CLOEXEC
+#  if defined __alpha__ || defined __hppa__
+#   define O_CLOEXEC   010000000
+#  elif defined __sparc__
+#   define O_CLOEXEC   020000000
+#  else
+#   define O_CLOEXEC   02000000
+#  endif
+# endif /* !O_CLOEXEC */
+
+# ifndef FD0_PATH
+#  define FD0_PATH ""
+# endif
+# ifndef FD7_PATH
+#  define FD7_PATH ""
+# endif
+# ifndef SKIP_IF_PROC_IS_UNAVAILABLE
+#  define SKIP_IF_PROC_IS_UNAVAILABLE
+# endif
+
+static const char *errstr;
+
+static long
+k_dup3(const unsigned int fd1, const unsigned int fd2, const unsigned int flags)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = fill | fd1;
+       const kernel_ulong_t arg2 = fill | fd2;
+       const kernel_ulong_t arg3 = fill | flags;
+       const long rc = syscall(__NR_dup3, arg1, arg2, arg3, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
 int
 main(void)
 {
-       const long int fd_old = (long int) 0xdeadbeefffffffffULL;
-       const long int fd_new = (long int) 0xdeadbeeffffffffeULL;
+       SKIP_IF_PROC_IS_UNAVAILABLE;
+
+       int fd0 = dup(0);
+       int fd7 = dup(7);
+
+       k_dup3(0, 0, 0);
+# ifndef PATH_TRACING
+       printf("dup3(0" FD0_PATH ", 0" FD0_PATH ", 0) = %s\n", errstr);
+# endif
+
+       k_dup3(-1, -2, O_CLOEXEC);
+# ifndef PATH_TRACING
+       printf("dup3(-1, -2, O_CLOEXEC) = %s\n", errstr);
+# endif
+
+       k_dup3(-2, -1, O_TRUNC);
+# ifndef PATH_TRACING
+       printf("dup3(-2, -1, O_TRUNC) = %s\n", errstr);
+# endif
+
+       k_dup3(-3, 0, O_TRUNC | O_CLOEXEC);
+# ifndef PATH_TRACING
+       printf("dup3(-3, 0" FD0_PATH ", O_TRUNC|O_CLOEXEC) = %s\n", errstr);
+# endif
+
+       k_dup3(0, -4, O_RDONLY);
+# ifndef PATH_TRACING
+       printf("dup3(0" FD0_PATH ", -4, 0) = %s\n", errstr);
+# endif
+
+       k_dup3(-5, 7, O_WRONLY);
+       printf("dup3(-5, 7" FD7_PATH ", 0x1 /* O_??? */) = %s\n", errstr);
+
+       k_dup3(7, -6, O_RDWR);
+       printf("dup3(7" FD7_PATH ", -6, 0x2 /* O_??? */) = %s\n", errstr);
+
+       k_dup3(7, 7, O_CLOEXEC);
+       printf("dup3(7" FD7_PATH ", 7" FD7_PATH ", O_CLOEXEC) = %s\n", errstr);
+
+       k_dup3(-7, -7, 7);
+# ifndef PATH_TRACING
+       printf("dup3(-7, -7, %s) = %s\n",
+#  ifdef __sparc__
+              "O_NDELAY|0x3"
+#  else
+              "0x7 /* O_??? */"
+#  endif
+              , errstr);
+# endif
+
+       if (k_dup3(0, fd0, O_CLOEXEC) != fd0)
+               perror_msg_and_skip("dup3");
+# ifndef PATH_TRACING
+       printf("dup3(0" FD0_PATH ", %d" FD0_PATH ", O_CLOEXEC) = %d" FD0_PATH
+              "\n", fd0, fd0);
+# endif
+
+       k_dup3(7, fd7, 0);
+       printf("dup3(7" FD7_PATH ", %d" FD7_PATH ", 0) = %d" FD7_PATH
+              "\n", fd7, fd7);
+
+       k_dup3(0, fd7, O_CLOEXEC);
+       printf("dup3(0" FD0_PATH ", %d" FD7_PATH ", O_CLOEXEC) = %d" FD0_PATH
+              "\n", fd7, fd7);
+
+       k_dup3(7, fd0, 0);
+       printf("dup3(7" FD7_PATH ", %d" FD0_PATH ", 0) = %d" FD7_PATH
+              "\n", fd0, fd0);
+
+       close(fd0);
+       close(fd7);
+
+       k_dup3(0, fd0, O_CLOEXEC);
+# ifndef PATH_TRACING
+       printf("dup3(0" FD0_PATH ", %d, O_CLOEXEC) = %d" FD0_PATH "\n",
+              fd0, fd0);
+# endif
 
-       long rc = syscall(__NR_dup3, fd_old, fd_new, O_CLOEXEC);
-       printf("dup3(%d, %d, O_CLOEXEC) = %ld %s (%m)\n",
-              (int) fd_old, (int) fd_new, rc, errno2name());
+       k_dup3(7, fd7, 0);
+       printf("dup3(7" FD7_PATH ", %d, 0) = %d" FD7_PATH "\n",
+              fd7, fd7);
 
        puts("+++ exited with 0 +++");
        return 0;
@@ -30,6 +142,6 @@ main(void)
 
 #else
 
-SKIP_MAIN_UNDEFINED("__NR_dup3 && O_CLOEXEC")
+SKIP_MAIN_UNDEFINED("__NR_dup3")
 
 #endif
index 776b9a7999bc693cef6ef6b1184a50cd195fc457..f5aeb03677585a83633b51230f150f49a3d4eb3a 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup3 -a24 ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup3 -a13 7>>/dev/full); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a24 
+run_strace_match_diff -a13 7>>/dev/full
index 42cc8d0458c575d6c098bf5f5cfeee0aa8628931..9b808ccecfa70513b336291830ef2a8a02c77627 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_epoll_create
 
index 81b338259d8d45133c18ab5c4f5744347f8c7869..f01867ccb94985c648ed3f4610dd02f7241e7ac6 100644 (file)
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -7,7 +8,7 @@
 
 #include "tests.h"
 #include <fcntl.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_epoll_create1 && defined O_CLOEXEC
 
index 85a288cde0165dc576ba753675f5edd087429eef..b1e7a0631ba94dff0f152b3164f35943938b95cf 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_epoll_ctl
 
index ce95e6dc5aa999566e74cafe0150b7b987c8383b..1e2834631b41677b3f5f46a4a170c69c4e33a40b 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_epoll_pwait
 
index 3981905d30f6b56e9d2651a4f2833f7c6d5d4051..21c48511e7e07a6ddfe98936f3cbf2268fec1151 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_epoll_wait
 
index 75d33dd7bd28f171fece607a0b503410ab921508..4c78dced01e11677e54da0ffdb13ddf44678a8eb 100644 (file)
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -8,7 +9,7 @@
 #include "tests.h"
 #include <fcntl.h>
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_eventfd2 && defined O_CLOEXEC
 
index 629a69ab23caa97a0a5db2e967429adc3a57e556..c8b1f4cd96c332d8dc3d84085faefaee186962b3 100644 (file)
@@ -2,14 +2,13 @@
  * This file is part of execveat strace test.
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
 #include "scno.h"
 
 #ifdef __NR_execveat
diff --git a/tests-m32/faccessat-P.c b/tests-m32/faccessat-P.c
new file mode 100644 (file)
index 0000000..0024d55
--- /dev/null
@@ -0,0 +1,4 @@
+#define PATH_TRACING
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "faccessat.c"
diff --git a/tests-m32/faccessat-P.gen.test b/tests-m32/faccessat-P.gen.test
new file mode 100755 (executable)
index 0000000..9210a5f
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (faccessat-P -a23 --trace=faccessat -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a23 --trace=faccessat -P /dev/full
diff --git a/tests-m32/faccessat-y.c b/tests-m32/faccessat-y.c
new file mode 100644 (file)
index 0000000..61f67d7
--- /dev/null
@@ -0,0 +1,4 @@
+#define FD_PATH "</dev/full>"
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "faccessat.c"
diff --git a/tests-m32/faccessat-y.gen.test b/tests-m32/faccessat-y.gen.test
new file mode 100755 (executable)
index 0000000..bc0db7f
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (faccessat-y +faccessat.test -a24 -y); do not edit.
+set -- -a24 -y
+. "${srcdir=.}/faccessat.test"
diff --git a/tests-m32/faccessat-yy.c b/tests-m32/faccessat-yy.c
new file mode 100644 (file)
index 0000000..b516240
--- /dev/null
@@ -0,0 +1,4 @@
+#define FD_PATH "</dev/full<char 1:7>>"
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "faccessat.c"
diff --git a/tests-m32/faccessat-yy.gen.test b/tests-m32/faccessat-yy.gen.test
new file mode 100755 (executable)
index 0000000..e4a8224
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (faccessat-yy +faccessat.test -a24 -yy); do not edit.
+set -- -a24 -yy
+. "${srcdir=.}/faccessat.test"
index 6d95555aa051f89cdce9357564fd6dc666cc182e..b5498bc72e5a0639625284326088b336a78d40bd 100644 (file)
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Check decoding of faccessat syscall.
+ *
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_faccessat
 
+# include <fcntl.h>
 # include <stdio.h>
 # include <unistd.h>
 
+# ifndef FD_PATH
+#  define FD_PATH ""
+# endif
+# ifndef SKIP_IF_PROC_IS_UNAVAILABLE
+#  define SKIP_IF_PROC_IS_UNAVAILABLE
+# endif
+
+static const char *errstr;
+
+static long
+k_faccessat(const unsigned int dirfd,
+           const void *const pathname,
+           const unsigned int mode)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+
+       const kernel_ulong_t arg1 = fill | dirfd;
+       const kernel_ulong_t arg2 = (uintptr_t) pathname;
+       const kernel_ulong_t arg3 = fill | mode;
+       const long rc = syscall(__NR_faccessat,
+                               arg1, arg2, arg3, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
 int
 main(void)
 {
-       static const char sample[] = "faccessat.sample";
-       const long int fd = (long int) 0xdeadbeefffffffffULL;
+       SKIP_IF_PROC_IS_UNAVAILABLE;
+
+       TAIL_ALLOC_OBJECT_CONST_PTR(const char, unterminated);
+       char *unterminated_str;
+       if (asprintf(&unterminated_str, "%p", unterminated) < 0)
+                perror_msg_and_fail("asprintf");
+       const void *const efault = unterminated + 1;
+       char *efault_str;
+       if (asprintf(&efault_str, "%p", efault) < 0)
+                perror_msg_and_fail("asprintf");
+
+       typedef struct {
+               char sym;
+               char null;
+       } sym_null;
+
+       TAIL_ALLOC_OBJECT_CONST_PTR(sym_null, dot);
+       dot->sym = '.';
+       dot->null = '\0';
+       const char *const null = &dot->null;
+
+       TAIL_ALLOC_OBJECT_CONST_PTR(sym_null, slash);
+       slash->sym = '/';
+       slash->null = '\0';
+
+       static const char path[] = "/dev/full";
+       const char *const fd_path = tail_memdup(path, sizeof(path));
+        int fd = open(path, O_WRONLY);
+        if (fd < 0)
+                perror_msg_and_fail("open: %s", path);
+       char *fd_str;
+       if (asprintf(&fd_str, "%d%s", fd, FD_PATH) < 0)
+                perror_msg_and_fail("asprintf");
+       char *path_quoted;
+       if (asprintf(&path_quoted, "\"%s\"", path) < 0)
+                perror_msg_and_fail("asprintf");
+
+       struct {
+               int val;
+               const char *str;
+       } dirfds[] = {
+               { ARG_STR(-1) },
+               { -100, "AT_FDCWD" },
+               { fd, fd_str },
+       }, modes[] = {
+               { ARG_STR(F_OK) },
+               { ARG_STR(R_OK) },
+               { ARG_STR(W_OK) },
+               { ARG_STR(X_OK) },
+               { ARG_STR(R_OK|W_OK) },
+               { ARG_STR(R_OK|X_OK) },
+               { ARG_STR(W_OK|X_OK) },
+               { ARG_STR(R_OK|W_OK|X_OK) },
+               { 8, "0x8 /* ?_OK */" },
+               { -1, "R_OK|W_OK|X_OK|0xfffffff8" },
+       };
+
+       struct {
+               const void *val;
+               const char *str;
+       } paths[] = {
+               { 0, "NULL" },
+               { efault, efault_str },
+               { unterminated, unterminated_str },
+               { null, "\"\"" },
+               { &dot->sym, "\".\"" },
+               { &slash->sym, "\"/\"" },
+               { fd_path, path_quoted },
+       };
 
-       long rc = syscall(__NR_faccessat, fd, sample, F_OK);
-       printf("faccessat(%d, \"%s\", F_OK) = %ld %s (%m)\n",
-              (int) fd, sample, rc, errno2name());
+       for (unsigned int dirfd_i = 0;
+            dirfd_i < ARRAY_SIZE(dirfds);
+            ++dirfd_i) {
+               for (unsigned int path_i = 0;
+                    path_i < ARRAY_SIZE(paths);
+                    ++path_i) {
+                       for (unsigned int mode_i = 0;
+                            mode_i < ARRAY_SIZE(modes);
+                            ++mode_i) {
+                               k_faccessat(dirfds[dirfd_i].val,
+                                           paths[path_i].val,
+                                           modes[mode_i].val);
+# ifdef PATH_TRACING
+                               if (dirfds[dirfd_i].val == fd ||
+                                   paths[path_i].val == fd_path)
+# endif
+                               printf("faccessat(%s, %s, %s) = %s\n",
+                                      dirfds[dirfd_i].str,
+                                      paths[path_i].str,
+                                      modes[mode_i].str,
+                                      errstr);
+                       }
+               }
+       }
 
        puts("+++ exited with 0 +++");
        return 0;
diff --git a/tests-m32/faccessat.gen.test b/tests-m32/faccessat.gen.test
deleted file mode 100755 (executable)
index 4ccec2a..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (faccessat -P $NAME.sample); do not edit.
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -P $NAME.sample
diff --git a/tests-m32/faccessat.test b/tests-m32/faccessat.test
new file mode 100755 (executable)
index 0000000..7b36849
--- /dev/null
@@ -0,0 +1,19 @@
+#!/bin/sh
+#
+# Check decoding of faccessat syscall.
+#
+# Copyright (c) 2020 Dmitry V. Levin <ldv@altlinux.org>
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/init.sh"
+
+check_prog sed
+
+run_prog > /dev/null
+run_strace -a23 --trace=faccessat "$@" $args > "$EXP"
+
+# Filter out faccessat() calls made by ld.so and libc.
+sed -n '/^faccessat(-1, NULL,/,$p' < "$LOG" > "$OUT"
+match_diff "$OUT" "$EXP"
diff --git a/tests-m32/faccessat2-P.c b/tests-m32/faccessat2-P.c
new file mode 100644 (file)
index 0000000..0e6af94
--- /dev/null
@@ -0,0 +1,4 @@
+#define PATH_TRACING
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "faccessat2.c"
diff --git a/tests-m32/faccessat2-P.gen.test b/tests-m32/faccessat2-P.gen.test
new file mode 100755 (executable)
index 0000000..341f4a5
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (faccessat2-P -a27 --trace=faccessat2 -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27 --trace=faccessat2 -P /dev/full
diff --git a/tests-m32/faccessat2-y.c b/tests-m32/faccessat2-y.c
new file mode 100644 (file)
index 0000000..9337cb5
--- /dev/null
@@ -0,0 +1,4 @@
+#define FD_PATH "</dev/full>"
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "faccessat2.c"
diff --git a/tests-m32/faccessat2-y.gen.test b/tests-m32/faccessat2-y.gen.test
new file mode 100755 (executable)
index 0000000..caeeb72
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (faccessat2-y +faccessat2.test -a28 -y); do not edit.
+set -- -a28 -y
+. "${srcdir=.}/faccessat2.test"
diff --git a/tests-m32/faccessat2-yy.c b/tests-m32/faccessat2-yy.c
new file mode 100644 (file)
index 0000000..a23f3d4
--- /dev/null
@@ -0,0 +1,4 @@
+#define FD_PATH "</dev/full<char 1:7>>"
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "faccessat2.c"
diff --git a/tests-m32/faccessat2-yy.gen.test b/tests-m32/faccessat2-yy.gen.test
new file mode 100755 (executable)
index 0000000..ecaeef2
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (faccessat2-yy +faccessat2.test -a28 -yy); do not edit.
+set -- -a28 -yy
+. "${srcdir=.}/faccessat2.test"
diff --git a/tests-m32/faccessat2.c b/tests-m32/faccessat2.c
new file mode 100644 (file)
index 0000000..74d17cd
--- /dev/null
@@ -0,0 +1,174 @@
+/*
+ * Check decoding of faccessat2 syscall.
+ *
+ * Copyright (c) 2016-2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_faccessat2
+
+# include <fcntl.h>
+# include <stdio.h>
+# include <unistd.h>
+
+# define XLAT_MACROS_ONLY
+#  include "xlat/faccessat_flags.h"
+# undef XLAT_MACROS_ONLY
+
+# ifndef FD_PATH
+#  define FD_PATH ""
+# endif
+# ifndef SKIP_IF_PROC_IS_UNAVAILABLE
+#  define SKIP_IF_PROC_IS_UNAVAILABLE
+# endif
+
+static const char *errstr;
+
+static long
+k_faccessat2(const unsigned int dirfd,
+            const void *const pathname,
+            const unsigned int mode,
+            const unsigned int flags)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+
+       const kernel_ulong_t arg1 = fill | dirfd;
+       const kernel_ulong_t arg2 = (uintptr_t) pathname;
+       const kernel_ulong_t arg3 = fill | mode;
+       const kernel_ulong_t arg4 = fill | flags;
+       const long rc = syscall(__NR_faccessat2,
+                               arg1, arg2, arg3, arg4, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
+int
+main(void)
+{
+       SKIP_IF_PROC_IS_UNAVAILABLE;
+
+       TAIL_ALLOC_OBJECT_CONST_PTR(const char, unterminated);
+       char *unterminated_str;
+       if (asprintf(&unterminated_str, "%p", unterminated) < 0)
+                perror_msg_and_fail("asprintf");
+       const void *const efault = unterminated + 1;
+       char *efault_str;
+       if (asprintf(&efault_str, "%p", efault) < 0)
+                perror_msg_and_fail("asprintf");
+
+       typedef struct {
+               char sym;
+               char null;
+       } sym_null;
+
+       TAIL_ALLOC_OBJECT_CONST_PTR(sym_null, dot);
+       dot->sym = '.';
+       dot->null = '\0';
+       const char *const null = &dot->null;
+
+       TAIL_ALLOC_OBJECT_CONST_PTR(sym_null, slash);
+       slash->sym = '/';
+       slash->null = '\0';
+
+       static const char path[] = "/dev/full";
+       const char *const fd_path = tail_memdup(path, sizeof(path));
+        int fd = open(path, O_WRONLY);
+        if (fd < 0)
+                perror_msg_and_fail("open: %s", path);
+       char *fd_str;
+       if (asprintf(&fd_str, "%d%s", fd, FD_PATH) < 0)
+                perror_msg_and_fail("asprintf");
+       char *path_quoted;
+       if (asprintf(&path_quoted, "\"%s\"", path) < 0)
+                perror_msg_and_fail("asprintf");
+
+       struct {
+               int val;
+               const char *str;
+       } dirfds[] = {
+               { ARG_STR(-1) },
+               { -100, "AT_FDCWD" },
+               { fd, fd_str },
+       }, modes[] = {
+               { ARG_STR(F_OK) },
+               { ARG_STR(R_OK) },
+               { ARG_STR(W_OK) },
+               { ARG_STR(X_OK) },
+               { ARG_STR(R_OK|W_OK) },
+               { ARG_STR(R_OK|X_OK) },
+               { ARG_STR(W_OK|X_OK) },
+               { ARG_STR(R_OK|W_OK|X_OK) },
+               { 8, "0x8 /* ?_OK */" },
+               { -1, "R_OK|W_OK|X_OK|0xfffffff8" },
+       }, flags[] = {
+               { ARG_STR(0) },
+               { ARG_STR(AT_SYMLINK_NOFOLLOW) },
+               { ARG_STR(AT_EACCESS) },
+               { ARG_STR(AT_EMPTY_PATH) },
+               { ARG_STR(AT_SYMLINK_NOFOLLOW|AT_EACCESS) },
+               { ARG_STR(AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) },
+               { ARG_STR(AT_EACCESS|AT_EMPTY_PATH) },
+               { ARG_STR(AT_SYMLINK_NOFOLLOW|AT_EACCESS|AT_EMPTY_PATH) },
+               { 1, "0x1 /* AT_??? */" },
+               { -1, "AT_SYMLINK_NOFOLLOW|AT_EACCESS|AT_EMPTY_PATH|0xffffecff" },
+       };
+
+       struct {
+               const void *val;
+               const char *str;
+       } paths[] = {
+               { 0, "NULL" },
+               { efault, efault_str },
+               { unterminated, unterminated_str },
+               { null, "\"\"" },
+               { &dot->sym, "\".\"" },
+               { &slash->sym, "\"/\"" },
+               { fd_path, path_quoted },
+       };
+
+       for (unsigned int dirfd_i = 0;
+            dirfd_i < ARRAY_SIZE(dirfds);
+            ++dirfd_i) {
+               for (unsigned int path_i = 0;
+                    path_i < ARRAY_SIZE(paths);
+                    ++path_i) {
+                       for (unsigned int mode_i = 0;
+                            mode_i < ARRAY_SIZE(modes);
+                            ++mode_i) {
+                               for (unsigned int flag_i = 0;
+                                    flag_i < ARRAY_SIZE(flags);
+                                    ++flag_i) {
+                                       k_faccessat2(dirfds[dirfd_i].val,
+                                                   paths[path_i].val,
+                                                   modes[mode_i].val,
+                                                   flags[flag_i].val);
+# ifdef PATH_TRACING
+                                       if (dirfds[dirfd_i].val == fd ||
+                                           paths[path_i].val == fd_path)
+# endif
+                                       printf("faccessat2(%s, %s, %s, %s) = %s\n",
+                                              dirfds[dirfd_i].str,
+                                              paths[path_i].str,
+                                              modes[mode_i].str,
+                                              flags[flag_i].str,
+                                              errstr);
+                               }
+                       }
+               }
+       }
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_faccessat2")
+
+#endif
diff --git a/tests-m32/faccessat2.test b/tests-m32/faccessat2.test
new file mode 100755 (executable)
index 0000000..eea9ea9
--- /dev/null
@@ -0,0 +1,19 @@
+#!/bin/sh
+#
+# Check decoding of faccessat2 syscall.
+#
+# Copyright (c) 2020 Dmitry V. Levin <ldv@altlinux.org>
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/init.sh"
+
+check_prog sed
+
+run_prog > /dev/null
+run_strace -a27 --trace=faccessat2 "$@" $args > "$EXP"
+
+# Filter out faccessat2() calls made by ld.so and libc.
+sed -n '/^faccessat2(-1, NULL,/,$p' < "$LOG" > "$OUT"
+match_diff "$OUT" "$EXP"
index 1d7b6681b66dc98cb1bfffa9caac4ec7a2f2735e..7cbd3ad4721afbf85aee0cd18c65fc13db1691db 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -11,7 +11,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_fadvise64
 
index 1520b7e484227c968c6214a5836c830330433286..292b833843b2cfdbfc59fc6b36b1368215345d2c 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -11,7 +11,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __arm__
 # ifdef __NR_arm_fadvise64_64
index 0e2284de254735ed1947cfbddcdb0f0a383145ac..b48cd15700bf8e4c30d9be8d3aed460c5167d201 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of fallocate syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined(__NR_fallocate) && defined(HAVE_FALLOCATE) && HAVE_FALLOCATE
 
index a3eeff53715c341d88a791a8b7187dabd2147fe5..f9fc91615ab5f8e91e314966c0fe28476296b619 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of fanotify_init syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2019 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_fanotify_init
 
@@ -44,13 +44,14 @@ main(void)
                { F8ILL_KULONG_MASK, "FAN_CLASS_NOTIF" },
                { (kernel_ulong_t) 0xffffffff0000000cULL,
                        "0xc /* FAN_CLASS_??? */" },
-               { (kernel_ulong_t) 0xdec0deddefacec04ULL,
-                       "FAN_CLASS_CONTENT|0xefacec00 /* FAN_??? */" },
+               { (kernel_ulong_t) 0xdec0deddeface004ULL,
+                       "FAN_CLASS_CONTENT|0xeface000 /* FAN_??? */" },
                { (kernel_ulong_t) 0xffffffffffffffffULL,
                        "0xc /* FAN_CLASS_??? */|FAN_CLOEXEC|FAN_NONBLOCK|"
                        "FAN_UNLIMITED_QUEUE|FAN_UNLIMITED_MARKS|"
                        "FAN_ENABLE_AUDIT|FAN_REPORT_TID|FAN_REPORT_FID|"
-                       "0xfffffc80" },
+                       "FAN_REPORT_DIR_FID|FAN_REPORT_NAME|"
+                       "0xfffff080" },
        };
        static const struct strval event_f_flags[] = {
                { F8ILL_KULONG_MASK, "O_RDONLY" },
index 33d1825358d925841aa9ee1b52ce223245604eb6..f4bda84a9451c74682e87621022ca515cc90a58a 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2015-2019 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -11,7 +11,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined HAVE_SYS_FANOTIFY_H && defined HAVE_FANOTIFY_MARK && \
        defined __NR_fanotify_mark
@@ -68,11 +68,6 @@ struct strval {
        const char *str;
 };
 
-struct strval64 {
-       uint64_t val;
-       const char *str;
-};
-
 # define STR16 "0123456789abcdef"
 # define STR64 STR16 STR16 STR16 STR16
 
@@ -150,15 +145,16 @@ main(void)
                        "FAN_OPEN_PERM|"
                        "FAN_ACCESS_PERM|"
                        "FAN_OPEN_EXEC_PERM|"
+                       "FAN_DIR_MODIFY|"
                        "FAN_ONDIR|"
                        "FAN_EVENT_ON_CHILD|"
-                       "0xdeadfeedb7f8a000"
+                       "0xdeadfeedb7f0a000"
 # endif
 # if XLAT_VERBOSE
                        " */"
 # endif
                        },
-               { ARG_ULL_STR(0xffffffffb7f8a000)
+               { ARG_ULL_STR(0xffffffffb7f0a000)
 # if !XLAT_RAW
                        " /* FAN_??? */"
 # endif
index 118e5fea0db4ad90612d7db642ccc45030ceaaa7..ff0c64b5606d3b908786f9b96e1d299c2068791c 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_fchdir
 
index 4fa06727be63f3dfb49846cbd1bfda543de2ac1e..3bf2da6036b23c5eff4f35bf89337dfbd70a225a 100644 (file)
@@ -3,14 +3,14 @@
  *
  * Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_fchmod
 
 int
 main(void)
 {
-       static const char fname[] = "fchmod_test_file";
-
-       int fd = open(fname, O_CREAT|O_RDONLY, 0400);
-       if (fd < 0)
-               perror_msg_and_fail("open");
-
-       if (unlink(fname))
-               perror_msg_and_fail("unlink");
+       int fd = create_tmpfile(O_RDWR);
 
        long rc = syscall(__NR_fchmod, fd, 0600);
        printf("fchmod(%d, 0600) = %s\n", fd, sprintrc(rc));
index f2fa5dd0a1e62b15cb37074846a3c809bd2d2a98..3fdb5ef4c3027a3135ecf9b19b4d3693b3e010b2 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of fchmodat syscall.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_fchmodat
 
index 98bfd9deb9d16d38fcea99f13e78bc7e97273e19..bc5ca24c024618eff5f9b82fe39f1e3428ed0d0f 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_fchown
 
index 9d52f9a8c180fa8570e24c9305282d154dfa4c3e..9604aa0aac2e1d7b856802a7b77218594086ec32 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_fchown32
 
index 32167bc7a7ef41d130f4279f3bc0a54f4418128b..d790bd98ecabdf53cbac08705bd6fd3144e8103e 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of fchownat syscall.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 #include <fcntl.h>
 
 #if defined __NR_fchownat && defined AT_FDCWD && defined AT_SYMLINK_NOFOLLOW
diff --git a/tests-m32/fcntl--pidns-translation.c b/tests-m32/fcntl--pidns-translation.c
new file mode 100644 (file)
index 0000000..e249424
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "fcntl.c"
diff --git a/tests-m32/fcntl--pidns-translation.gen.test b/tests-m32/fcntl--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..7a93d8a
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fcntl--pidns-translation test_pidns -a8 -e trace=fcntl); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a8 -e trace=fcntl
index b21251711f87887b140c4c5feb16ea341ed41b06..ec18aa798c11481ee2440ec5bb964a32ff4ef7f9 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -13,6 +13,8 @@
 #include <unistd.h>
 #include <assert.h>
 #include "flock.h"
+#include "pidns.h"
+#include "scno.h"
 
 #define FILE_LEN 4096
 
@@ -48,12 +50,14 @@ test_flock_einval(const int cmd, const char *name)
        fl->l_len = (TYPEOF_FLOCK_OFF_T) 0xdefaced2cafef00dULL;
 
        invoke_test_syscall(0, cmd, fl);
+       pidns_print_leader();
        printf("%s(0, %s, {l_type=F_RDLCK, l_whence=SEEK_SET"
               ", l_start=%jd, l_len=%jd}) = %s\n", TEST_SYSCALL_STR, name,
               (intmax_t) fl->l_start, (intmax_t) fl->l_len, errstr);
 
        void *const bad_addr = (void *) fl + 1;
        invoke_test_syscall(0, cmd, bad_addr);
+       pidns_print_leader();
        printf("%s(0, %s, %p) = %s\n",
               TEST_SYSCALL_STR, name, bad_addr, errstr);
 }
@@ -72,12 +76,14 @@ test_flock64_einval(const int cmd, const char *name)
        fl->l_len = (TYPEOF_FLOCK_OFF_T) 0xdefaced2cafef00dULL;
 
        invoke_test_syscall(0, cmd, fl);
+       pidns_print_leader();
        printf("%s(0, %s, {l_type=F_RDLCK, l_whence=SEEK_SET"
               ", l_start=%jd, l_len=%jd}) = %s\n", TEST_SYSCALL_STR, name,
               (intmax_t) fl->l_start, (intmax_t) fl->l_len, errstr);
 
        void *const bad_addr = (void *) fl + 1;
        invoke_test_syscall(0, cmd, bad_addr);
+       pidns_print_leader();
        printf("%s(0, %s, %p) = %s\n",
               TEST_SYSCALL_STR, name, bad_addr, errstr);
 }
@@ -94,6 +100,7 @@ test_flock(void)
        fl->l_len = FILE_LEN;
 
        long rc = invoke_test_syscall(0, F_SETLK, fl);
+       pidns_print_leader();
        printf("%s(0, F_SETLK, {l_type=F_RDLCK, l_whence=SEEK_SET"
               ", l_start=0, l_len=%d}) = %s\n",
               TEST_SYSCALL_STR, FILE_LEN, errstr);
@@ -101,11 +108,13 @@ test_flock(void)
                return;
 
        invoke_test_syscall(0, F_GETLK, fl);
+       pidns_print_leader();
        printf("%s(0, F_GETLK, {l_type=F_UNLCK, l_whence=SEEK_SET"
               ", l_start=0, l_len=%d, l_pid=0}) = 0\n",
               TEST_SYSCALL_STR, FILE_LEN);
 
        invoke_test_syscall(0, F_SETLKW, fl);
+       pidns_print_leader();
        printf("%s(0, F_SETLKW, {l_type=F_UNLCK, l_whence=SEEK_SET"
               ", l_start=0, l_len=%d}) = 0\n",
               TEST_SYSCALL_STR, FILE_LEN);
@@ -124,6 +133,7 @@ test_flock64_ofd(void)
        fl->l_len = FILE_LEN;
 
        long rc = invoke_test_syscall(0, F_OFD_SETLK, fl);
+       pidns_print_leader();
        printf("%s(0, F_OFD_SETLK, {l_type=F_RDLCK, l_whence=SEEK_SET"
               ", l_start=0, l_len=%d}) = %s\n",
               TEST_SYSCALL_STR, FILE_LEN, errstr);
@@ -131,11 +141,13 @@ test_flock64_ofd(void)
                return;
 
        invoke_test_syscall(0, F_OFD_GETLK, fl);
+       pidns_print_leader();
        printf("%s(0, F_OFD_GETLK, {l_type=F_UNLCK, l_whence=SEEK_SET"
               ", l_start=0, l_len=%d, l_pid=0}) = 0\n",
               TEST_SYSCALL_STR, FILE_LEN);
 
        invoke_test_syscall(0, F_OFD_SETLKW, fl);
+       pidns_print_leader();
        printf("%s(0, F_OFD_SETLKW, {l_type=F_UNLCK, l_whence=SEEK_SET"
               ", l_start=0, l_len=%d}) = 0\n",
               TEST_SYSCALL_STR, FILE_LEN);
@@ -167,18 +179,21 @@ test_flock64(void)
 static long
 test_f_owner_ex_type_pid(const int cmd, const char *const cmd_name,
                         const int type, const char *const type_name,
-                        pid_t pid)
+                        enum pid_type pid_type, pid_t pid)
 {
        TAIL_ALLOC_OBJECT_CONST_PTR(struct_kernel_f_owner_ex, fo);
 
        fo->type = type;
        fo->pid = pid;
        long rc = invoke_test_syscall(0, cmd, fo);
-       printf("%s(0, %s, {type=%s, pid=%d}) = %s\n",
-              TEST_SYSCALL_STR, cmd_name, type_name, fo->pid, errstr);
+       pidns_print_leader();
+       printf("%s(0, %s, {type=%s, pid=%d%s}) = %s\n",
+              TEST_SYSCALL_STR, cmd_name, type_name,
+              fo->pid, pidns_pid2str(pid_type), errstr);
 
        void *bad_addr = (void *) fo + 1;
        invoke_test_syscall(0, cmd, bad_addr);
+       pidns_print_leader();
        printf("%s(0, %s, %p) = %s\n",
               TEST_SYSCALL_STR, cmd_name, bad_addr, errstr);
 
@@ -187,35 +202,35 @@ test_f_owner_ex_type_pid(const int cmd, const char *const cmd_name,
 
 static void
 test_f_owner_ex_umove_or_printaddr(const int type, const char *const type_name,
-                                  pid_t pid)
+                                  enum pid_type pid_type, pid_t pid)
 {
        long rc = test_f_owner_ex_type_pid(ARG_STR(F_SETOWN_EX),
-                                          type, type_name, pid);
+                                          type, type_name, pid_type, pid);
        if (!rc)
                test_f_owner_ex_type_pid(ARG_STR(F_GETOWN_EX),
-                                        type, type_name, pid);
+                                        type, type_name, pid_type, pid);
 }
 
 static void
 test_f_owner_ex(void)
 {
-       static const struct {
+       struct {
                int type;
                const char *type_name;
-               pid_t pid[2];
+               enum pid_type pid_type;
+               pid_t pid;
        } a[] = {
-               { ARG_STR(F_OWNER_TID), { 1234567890, 20 } },
-               { ARG_STR(F_OWNER_PID), { 1298126790, 30 } },
-               { ARG_STR(F_OWNER_PGRP), { 1294567890, 40 } }
+               { ARG_STR(F_OWNER_TID), PT_NONE, 1234567890 },
+               { ARG_STR(F_OWNER_PID), PT_NONE, 1234567890 },
+               { ARG_STR(F_OWNER_PGRP), PT_NONE, 1234567890 },
+               { ARG_STR(F_OWNER_TID), PT_TID, syscall(__NR_gettid) },
+               { ARG_STR(F_OWNER_PID), PT_TGID, getpid() },
+               { ARG_STR(F_OWNER_PGRP), PT_PGID, getpgid(0) },
        };
 
-       for (unsigned int i = 0; i < ARRAY_SIZE(a); i++) {
-               for (unsigned int j = 0; j < ARRAY_SIZE(a[0].pid); j++) {
-                       test_f_owner_ex_umove_or_printaddr(a[i].type,
-                                                          a[i].type_name,
-                                                          a[i].pid[j]);
-               }
-       }
+       for (unsigned int i = 0; i < ARRAY_SIZE(a); i++)
+               test_f_owner_ex_umove_or_printaddr(a[i].type, a[i].type_name,
+                       a[i].pid_type, a[i].pid);
 }
 #endif /* TEST_F_OWNER_EX */
 
@@ -228,6 +243,23 @@ struct fcntl_cmd_check {
        void (*print_flags)(long rc);
 };
 
+static void
+test_xetown(void)
+{
+       const int pid = getpid();
+       const char *pid_str = pidns_pid2str(PT_TGID);
+
+       invoke_test_syscall(0, F_SETOWN, (void *) (intptr_t) pid);
+       pidns_print_leader();
+       printf("%s(0, F_SETOWN, %d%s) = %s\n",
+               TEST_SYSCALL_STR, pid, pid_str, errstr);
+
+       invoke_test_syscall(0, F_GETOWN, NULL);
+       pidns_print_leader();
+       printf("%s(0, F_GETOWN) = %d%s\n",
+               TEST_SYSCALL_STR, pid, pid_str);
+}
+
 static void
 print_retval_flags(const struct fcntl_cmd_check *check, long rc)
 {
@@ -243,12 +275,14 @@ static void
 test_other_set_cmd(const struct fcntl_cmd_check *check)
 {
        invoke_test_syscall(check->fd, check->cmd, (void *) check->arg);
+       pidns_print_leader();
        printf("%s(%d, %s, %s) = %s\n",
               TEST_SYSCALL_STR, check->fd,
               check->cmd_str, check->arg_str, errstr);
 
        /* bad file fd */
        invoke_test_syscall(-1, check->cmd, (void *) check->arg);
+       pidns_print_leader();
        printf("%s(-1, %s, %s) = %s\n",
               TEST_SYSCALL_STR, check->cmd_str,
               check->arg_str, errstr);
@@ -258,12 +292,14 @@ static void
 test_other_get_cmd(const struct fcntl_cmd_check *check)
 {
        long rc = invoke_test_syscall(check->fd, check->cmd, NULL);
+       pidns_print_leader();
        printf("%s(%d, %s) = ",
               TEST_SYSCALL_STR, check->fd, check->cmd_str);
        print_retval_flags(check, rc);
 
        /* bad file fd */
        invoke_test_syscall(-1, check->cmd, NULL);
+       pidns_print_leader();
        printf("%s(-1, %s) = %s\n",
               TEST_SYSCALL_STR, check->cmd_str, errstr);
 }
@@ -315,7 +351,6 @@ test_fcntl_others(void)
 {
        static const struct fcntl_cmd_check set_checks[] = {
                { 0, ARG_STR(F_SETFD), ARG_STR(FD_CLOEXEC) },
-               { 0, ARG_STR(F_SETOWN), ARG_STR(20) },
 #ifdef F_SETPIPE_SZ
                { 0, ARG_STR(F_SETPIPE_SZ), ARG_STR(4097) },
 #endif
@@ -336,7 +371,6 @@ test_fcntl_others(void)
        static const struct fcntl_cmd_check get_checks[] = {
                { 0, ARG_STR(F_GETFD), .print_flags = print_flags_getfd },
                { 1, ARG_STR(F_GETFD), .print_flags = print_flags_getfd },
-               { 0, ARG_STR(F_GETOWN) },
 #ifdef F_GETPIPE_SZ
                { 0, ARG_STR(F_GETPIPE_SZ) },
 #endif
@@ -352,20 +386,16 @@ test_fcntl_others(void)
 static void
 create_sample(void)
 {
-       char fname[] = TEST_SYSCALL_STR "_XXXXXX";
-
        (void) close(0);
-       if (mkstemp(fname))
-               perror_msg_and_fail("mkstemp: %s", fname);
-       if (unlink(fname))
-               perror_msg_and_fail("unlink: %s", fname);
-       if (ftruncate(0, FILE_LEN))
+       if (ftruncate(create_tmpfile(O_RDWR), FILE_LEN))
                perror_msg_and_fail("ftruncate");
 }
 
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        create_sample();
        test_flock();
        test_flock64();
@@ -373,7 +403,9 @@ main(void)
        test_f_owner_ex();
 #endif
        test_fcntl_others();
+       test_xetown();
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
index bd9ffbdd5b14f2ff7f890bcbc5e688837c7f283e..ca9c737ba42a1daea4a89effb261b9e7547e24f4 100644 (file)
@@ -1,13 +1,13 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_fcntl
 
@@ -24,6 +24,7 @@ test_flock64_undecoded(const int cmd, const char *name)
                .l_len = 0xdefaced2cafef00dULL
        };
        invoke_test_syscall(0, cmd, &fl);
+       pidns_print_leader();
        printf("%s(0, %s, %p) = %s\n",
               TEST_SYSCALL_STR, name, &fl, errstr);
 }
diff --git a/tests-m32/fcntl64--pidns-translation.c b/tests-m32/fcntl64--pidns-translation.c
new file mode 100644 (file)
index 0000000..c6fdadd
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "fcntl64.c"
diff --git a/tests-m32/fcntl64--pidns-translation.gen.test b/tests-m32/fcntl64--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..3c46451
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fcntl64--pidns-translation test_pidns -a8 -e trace=fcntl64); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a8 -e trace=fcntl64
index 97277b2f808b55953813f1ad7099c5f3ace512b9..07df7224baedf3bd123fe13f5c15cb556e8cdd58 100644 (file)
@@ -1,13 +1,13 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_fcntl64
 
@@ -27,6 +27,7 @@ test_flock64_lk64(void)
        fl->l_len = FILE_LEN;
 
        long rc = invoke_test_syscall(0, F_SETLK64, fl);
+       pidns_print_leader();
        printf("%s(0, F_SETLK64, {l_type=F_RDLCK, l_whence=SEEK_SET"
               ", l_start=0, l_len=%d}) = %s\n",
               TEST_SYSCALL_STR, FILE_LEN, errstr);
@@ -35,11 +36,13 @@ test_flock64_lk64(void)
                return;
 
        invoke_test_syscall(0, F_GETLK64, fl);
+       pidns_print_leader();
        printf("%s(0, F_GETLK64, {l_type=F_UNLCK, l_whence=SEEK_SET"
               ", l_start=0, l_len=%d, l_pid=0}) = 0\n",
               TEST_SYSCALL_STR, FILE_LEN);
 
        invoke_test_syscall(0, F_SETLKW64, fl);
+       pidns_print_leader();
        printf("%s(0, F_SETLKW64, {l_type=F_UNLCK, l_whence=SEEK_SET"
               ", l_start=0, l_len=%d}) = 0\n",
               TEST_SYSCALL_STR, FILE_LEN);
index f4c8d55f03aa72a0baad01e690feef70d62fbf22..a1f2ba291730dabb9ffd931d9bad6bf98196f3af 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_fdatasync
 
index 38cd5af81428d11bc882b0c6527a248d2edbe684..edabde6175020b043189ed844a2dc2792ce680df 100644 (file)
@@ -3,14 +3,14 @@
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_name_to_handle_at && defined __NR_open_by_handle_at
 
index 7a2a905c0ea5a5a2556c13d94262b6105b0e636a..d0efb2106e807c4b6d3c9f36916b01049e59f357 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -11,6 +11,7 @@
 
 # include <stdio.h>
 # include <sys/ioctl.h>
+# include <linux/types.h>
 # include <linux/fiemap.h>
 # include <linux/fs.h>
 # include "xlat.h"
index 3e09d597e373d8050919280df4f1a6619df66fc5..f82314c20a98f32f8d8a8d0b3dc23bd60a212da5 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2019 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -24,3 +24,39 @@ fill_memory(void *ptr, size_t size)
 {
        fill_memory_ex(ptr, size, 0x80, 0x80);
 }
+
+void
+fill_memory16_ex(void *ptr, size_t size, uint16_t start,
+                unsigned int period)
+{
+       uint16_t *p = ptr;
+       size_t i;
+
+       for (i = 0; i < size / sizeof(uint16_t); i++) {
+               p[i] = start + i % period;
+       }
+}
+
+void
+fill_memory16(void *ptr, size_t size)
+{
+       fill_memory16_ex(ptr, size, 0x80c0, 0x8000);
+}
+
+void
+fill_memory32_ex(void *ptr, size_t size, uint32_t start,
+                unsigned int period)
+{
+       uint32_t *p = ptr;
+       size_t i;
+
+       for (i = 0; i < size / sizeof(uint32_t); i++) {
+               p[i] = start + i % period;
+       }
+}
+
+void
+fill_memory32(void *ptr, size_t size)
+{
+       fill_memory32_ex(ptr, size, 0x80a0c0e0, 0x80000000);
+}
diff --git a/tests-m32/filter_seccomp-flag.c b/tests-m32/filter_seccomp-flag.c
new file mode 100644 (file)
index 0000000..480db89
--- /dev/null
@@ -0,0 +1,85 @@
+/*
+ * Check that syscall numbers do not conflict with seccomp filter flags.
+ *
+ * Copyright (c) 2019 Paul Chaignon <paul.chaignon@gmail.com>
+ * Copyright (c) 2018-2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "arch_defs.h"
+#include "sysent.h"
+#include "scno.h"
+
+/* PERSONALITY*_AUDIT_ARCH definitions depend on AUDIT_ARCH_* constants.  */
+#ifdef PERSONALITY0_AUDIT_ARCH
+# include <linux/audit.h>
+# define XLAT_MACROS_ONLY
+#  include "xlat/elf_em.h"
+#  include "xlat/audit_arch.h"
+# undef XLAT_MACROS_ONLY
+#endif
+
+/* Define these shorthand notations to simplify the syscallent files. */
+#include "sysent_shorthand_defs.h"
+
+const struct_sysent sysent0[] = {
+#include "syscallent.h"
+};
+
+#if SUPPORTED_PERSONALITIES > 1
+const struct_sysent sysent1[] = {
+# include "syscallent1.h"
+};
+#endif
+
+#if SUPPORTED_PERSONALITIES > 2
+const struct_sysent sysent2[] = {
+# include "syscallent2.h"
+};
+#endif
+
+const unsigned int nsyscall_vec[SUPPORTED_PERSONALITIES] = {
+       ARRAY_SIZE(sysent0),
+#if SUPPORTED_PERSONALITIES > 1
+       ARRAY_SIZE(sysent1),
+#endif
+#if SUPPORTED_PERSONALITIES > 2
+       ARRAY_SIZE(sysent2),
+#endif
+};
+
+struct audit_arch_t {
+       unsigned int arch;
+       unsigned int flag;
+};
+
+static const struct audit_arch_t audit_arch_vec[SUPPORTED_PERSONALITIES] = {
+#if SUPPORTED_PERSONALITIES > 1
+       PERSONALITY0_AUDIT_ARCH,
+       PERSONALITY1_AUDIT_ARCH,
+# if SUPPORTED_PERSONALITIES > 2
+       PERSONALITY2_AUDIT_ARCH,
+# endif
+#endif
+};
+
+int
+main(void)
+{
+       for (unsigned int p = 0; p < SUPPORTED_PERSONALITIES; ++p) {
+               if (!audit_arch_vec[p].flag)
+                       continue;
+               for (unsigned int nr = 1; nr < nsyscall_vec[p]; ++nr) {
+                       if (!(audit_arch_vec[p].flag & nr))
+                               continue;
+                       error_msg_and_fail("system call number %u of"
+                                          " personality %u conflicts with"
+                                          " seccomp filter flag %#x",
+                                          nr, p, audit_arch_vec[p].flag);
+               }
+       }
+       return 0;
+}
diff --git a/tests-m32/filter_seccomp-flag.gen.test b/tests-m32/filter_seccomp-flag.gen.test
new file mode 100755 (executable)
index 0000000..b1185be
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (filter_seccomp-flag ../$NAME ); do not edit.
+. "${srcdir=.}/init.sh"
+../$NAME 
diff --git a/tests-m32/filter_seccomp-perf.c b/tests-m32/filter_seccomp-perf.c
new file mode 100644 (file)
index 0000000..742e1eb
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * Check seccomp filter performance.
+ *
+ * Copyright (c) 2019 Paul Chaignon <paul.chaignon@gmail.com>
+ * Copyright (c) 2018-2019 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <signal.h>
+#include <stdbool.h>
+#include <stdio.h>
+#include <unistd.h>
+
+static volatile bool stop = false;
+
+static void
+handler(int signo)
+{
+       stop = true;
+}
+
+int
+main(void)
+{
+       unsigned int i;
+       int rc = 0;
+
+       signal(SIGALRM, handler);
+       alarm(1);
+
+       for (i = 0; !stop; i++) {
+               rc |= chdir(".");
+       }
+       printf("%d\n", i);
+       return rc;
+}
diff --git a/tests-m32/filter_seccomp-perf.test b/tests-m32/filter_seccomp-perf.test
new file mode 100755 (executable)
index 0000000..149d704
--- /dev/null
@@ -0,0 +1,27 @@
+#!/bin/sh
+#
+# Check seccomp filter performance.
+#
+# Copyright (c) 2019 Paul Chaignon <paul.chaignon@gmail.com>
+# Copyright (c) 2018-2019 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/init.sh"
+. "${srcdir=.}/filter_seccomp.sh"
+
+args="-f -qq -e signal=none -e trace=fchdir ../$NAME"
+num_regular="$(run_strace               $args)"
+mv "$LOG" "$LOG.regular"
+num_seccomp="$(run_strace --seccomp-bpf $args)"
+mv "$LOG" "$LOG.seccomp"
+match_diff "$LOG.regular" "$LOG.seccomp"
+
+min_ratio=6
+# With seccomp filter enabled, we should be able to complete
+# at least $min_ratio times more chdir system calls.
+ratio="$((num_seccomp / num_regular))"
+if [ "$ratio" -lt "$min_ratio" ]; then
+       fail_ "Only $ratio times more syscalls performed with seccomp filter enabled, expected at least $min_ratio times speedup"
+fi
diff --git a/tests-m32/filter_seccomp.gen.test b/tests-m32/filter_seccomp.gen.test
new file mode 100755 (executable)
index 0000000..d41da05
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (filter_seccomp . "${srcdir=.}/filter_seccomp.sh"; test_prog_set --seccomp-bpf -f); do not edit.
+. "${srcdir=.}/init.sh"
+. "${srcdir=.}/filter_seccomp.sh"; test_prog_set --seccomp-bpf -f
diff --git a/tests-m32/filter_seccomp.in b/tests-m32/filter_seccomp.in
new file mode 100644 (file)
index 0000000..76e4d7e
--- /dev/null
@@ -0,0 +1,4 @@
+fork-f -a26 -qq -e signal=none -e trace=chdir
+vfork-f        -a26 -qq -e signal=none -e trace=chdir
+fork-f -a26 -qq -e signal=none -e trace=chdir,%memory,%ipc,%pure,%signal,%network -e status=failed
+status-none-f  -e trace=!ptrace -e status=none
diff --git a/tests-m32/filter_seccomp.sh b/tests-m32/filter_seccomp.sh
new file mode 100755 (executable)
index 0000000..cf5dee5
--- /dev/null
@@ -0,0 +1,14 @@
+#!/bin/sh
+#
+# Skip the test if seccomp filter is not available.
+#
+# Copyright (c) 2018-2019 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+$STRACE --seccomp-bpf -f -e trace=fchdir / > /dev/null 2> "$LOG" ||:
+if grep -x "[^:]*strace: seccomp filter is requested but unavailable" \
+   "$LOG" > /dev/null; then
+       skip_ 'seccomp filter is unavailable'
+fi
index 53bf1b1cfbc3a8f9e3b48ab6a6445196e266e03b..00d9f47a16da71865169aaeb9a1b13f6f7c081f3 100755 (executable)
@@ -3,7 +3,7 @@
 # Check descriptor set parsing syntax.
 #
 # Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -14,8 +14,10 @@ check_fd_qualify()
 {
        check_e "invalid descriptor '$1'" -e"read=$2"
        check_e "invalid descriptor '$1'" -e "read=$2"
+       check_e "invalid descriptor '$1'" "--read=$2"
        check_e "invalid descriptor '$1'" -e"write=$2"
        check_e "invalid descriptor '$1'" -e "write=$2"
+       check_e "invalid descriptor '$1'" "--write=$2"
 }
 
 for arg in '' , ,, ,,, ; do
index fe42edbed7ad69c86c64548fd2e802cff34d5d78..8dd83cdeecaa65819cfdd594b799df48680a52a4 100755 (executable)
@@ -4,6 +4,7 @@
 #
 # Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
 # Copyright (c) 2017 Nikolay Marchuk <marchuk.nikolay.a@gmail.com>
+# Copyright (c) 2018-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -16,37 +17,51 @@ check_syscall()
 
        check_e "invalid system call '$1'" -e "$2"
        check_e "invalid system call '$1'" -etrace="$2"
+       check_e "invalid system call '$1'" --trace="$2"
        check_e "invalid system call '$1'" -e trace="$2"
 
        check_e "invalid system call '$1'" -eabbrev="$2"
+       check_e "invalid system call '$1'" --abbrev="$2"
        check_e "invalid system call '$1'" -e abbrev="$2"
 
        check_e "invalid system call '$1'" -everbose="$2"
+       check_e "invalid system call '$1'" --verbose="$2"
        check_e "invalid system call '$1'" -e verbose="$2"
 
        check_e "invalid system call '$1'" -eraw="$2"
+       check_e "invalid system call '$1'" --raw="$2"
        check_e "invalid system call '$1'" -e raw="$2"
 
        check_e "invalid system call '$1'" -einject="$2"
+       check_e "invalid system call '$1'" --inject="$2"
        check_e "invalid system call '$1'" -e inject="$2"
        check_e "invalid system call '$1'" -einject="$2:"
        check_e "invalid system call '$1'" -einject="$2::"
        check_e "invalid system call '$1'" -einject="$2:::"
+       check_e "invalid system call '$1'" --inject="$2:"
+       check_e "invalid system call '$1'" --inject="$2::"
+       check_e "invalid system call '$1'" --inject="$2:::"
        check_e "invalid system call '$1'" -e inject="$2:"
        check_e "invalid system call '$1'" -e inject="$2::"
        check_e "invalid system call '$1'" -e inject="$2:::"
        check_e "invalid system call '$1'" -einject="$2:when=3"
+       check_e "invalid system call '$1'" --inject="$2:when=3"
        check_e "invalid system call '$1'" -e inject="$2:when=3"
 
        check_e "invalid system call '$1'" -efault="$2"
+       check_e "invalid system call '$1'" --fault="$2"
        check_e "invalid system call '$1'" -e fault="$2"
        check_e "invalid system call '$1'" -efault="$2:"
        check_e "invalid system call '$1'" -efault="$2::"
        check_e "invalid system call '$1'" -efault="$2:::"
+       check_e "invalid system call '$1'" --fault="$2:"
+       check_e "invalid system call '$1'" --fault="$2::"
+       check_e "invalid system call '$1'" --fault="$2:::"
        check_e "invalid system call '$1'" -e fault="$2:"
        check_e "invalid system call '$1'" -e fault="$2::"
        check_e "invalid system call '$1'" -e fault="$2:::"
        check_e "invalid system call '$1'" -efault="$2:when=4"
+       check_e "invalid system call '$1'" --fault="$2:when=4"
        check_e "invalid system call '$1'" -e fault="$2:when=4"
 }
 
index 64e6df02172cb0d44fbb027ccdcbdbc6dc36e23b..7c775658a89da3a5bfc3d9d7a296815b29e39b69 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of finit_module syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,6 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
 #include "scno.h"
 
 #if defined(__NR_finit_module)
index 4f0444097b0bd4d16964d4c4bd2fbfa2ebe8e583..1253616f4cf14394a3fa703240adb432e0eb591d 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_flock
 
diff --git a/tests-m32/fork--pidns-translation.awk b/tests-m32/fork--pidns-translation.awk
new file mode 100644 (file)
index 0000000..ef6858f
--- /dev/null
@@ -0,0 +1,15 @@
+/fork/ {
+        match($0, "([0-9]+) in strace\x27s PID NS", a);
+        if (a[1])
+                fork_pid = a[1]
+}
+
+/exited with 0/ {
+        if (!exit_pid)
+                exit_pid = $1
+}
+
+END {
+        if (!fork_pid || !exit_pid || fork_pid != exit_pid)
+                exit 1
+}
diff --git a/tests-m32/fork--pidns-translation.c b/tests-m32/fork--pidns-translation.c
new file mode 100644 (file)
index 0000000..1d490ce
--- /dev/null
@@ -0,0 +1,78 @@
+/*
+ * Test PID namespace translation
+ *
+ * Copyright (c) 2020 Ákos Uzonyi <uzonyi.akos@gmail.com>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+#include "pidns.h"
+
+#ifdef __NR_fork
+
+# include <errno.h>
+# include <limits.h>
+# include <sched.h>
+# include <signal.h>
+# include <stdio.h>
+# include <stdlib.h>
+# include <sys/wait.h>
+# include <unistd.h>
+# include <linux/sched.h>
+# include "nsfs.h"
+
+# ifndef CLONE_NEWUSER
+#  define CLONE_NEWUSER 0x10000000
+# endif
+
+# ifndef CLONE_NEWPID
+#  define CLONE_NEWPID 0x20000000
+# endif
+
+static int
+fork_chain(int depth)
+{
+       if (!depth)
+               return 0;
+
+       int pid = syscall(__NR_fork);
+       if (pid < 0)
+               return errno;
+
+       if (!pid)
+               _exit(fork_chain(depth - 1));
+
+       int status;
+       if (wait(&status) < 0)
+               return errno;
+
+       if (!WIFEXITED(status))
+               return -1;
+
+       return WEXITSTATUS(status);
+}
+
+int main(void)
+{
+       check_ns_ioctl();
+
+       if (unshare(CLONE_NEWPID | CLONE_NEWUSER) < 0) {
+               if (errno == EPERM)
+                       perror_msg_and_skip("unshare");
+
+               perror_msg_and_fail("unshare");
+       }
+
+       errno = fork_chain(2);
+       if (errno)
+               perror("fork_chain");
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_fork")
+
+#endif
diff --git a/tests-m32/fork--pidns-translation.test b/tests-m32/fork--pidns-translation.test
new file mode 100755 (executable)
index 0000000..24cc593
--- /dev/null
@@ -0,0 +1,14 @@
+#!/bin/sh
+#
+# Check pidns translation of fork's return value.
+#
+# Copyright (c) 2020 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+. "${srcdir=.}/init.sh"
+
+run_prog
+run_strace -a6 --pidns-translation -f -e trace=fork $args
+match_awk
diff --git a/tests-m32/fsconfig-P.c b/tests-m32/fsconfig-P.c
new file mode 100644 (file)
index 0000000..b763332
--- /dev/null
@@ -0,0 +1,2 @@
+#define PATH_TRACING
+#include "fsconfig.c"
diff --git a/tests-m32/fsconfig-P.gen.test b/tests-m32/fsconfig-P.gen.test
new file mode 100755 (executable)
index 0000000..36001fa
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fsconfig-P -s300 -y -P /dev/full -e trace=fsconfig); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -s300 -y -P /dev/full -e trace=fsconfig
diff --git a/tests-m32/fsconfig.c b/tests-m32/fsconfig.c
new file mode 100644 (file)
index 0000000..2399a6a
--- /dev/null
@@ -0,0 +1,298 @@
+/*
+ * Check decoding of fsconfig syscall.
+ *
+ * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_fsconfig
+
+# include <fcntl.h>
+# include <limits.h>
+# include <stdio.h>
+# include <stdint.h>
+# include <unistd.h>
+
+# define XLAT_MACROS_ONLY
+# include "xlat/fsconfig_cmds.h"
+# undef XLAT_MACROS_ONLY
+
+static const char *errstr;
+
+static long
+k_fsconfig(const unsigned int fs_fd,
+          const unsigned int cmd,
+          const void *key,
+          const void *value,
+          const unsigned int aux)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = fill | fs_fd;
+       const kernel_ulong_t arg2 = fill | cmd;
+       const kernel_ulong_t arg3 = (uintptr_t) key;
+       const kernel_ulong_t arg4 = (uintptr_t) value;
+       const kernel_ulong_t arg5 = fill | aux;
+       const long rc = syscall(__NR_fsconfig,
+                               arg1, arg2, arg3, arg4, arg5, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
+static const char path_full[] = "/dev/full";
+static const int max_string_size = 256;
+static const int max_blob_size = 300;
+static const int huge_blob_size = 1024 * 1024 + 1;
+static const char *fd_path;
+static const void *efault;
+static const char *empty;
+static char *fname;
+static char *key1;
+static char *key;
+static char *val1;
+static char *val;
+static char *blob1;
+static char *blob;
+static int fd;
+
+static void
+test_fsconfig_unknown(void)
+{
+       k_fsconfig(fd, 8, empty, val, -100);
+# ifndef PATH_TRACING
+       printf("fsconfig(%d<%s>, 0x8 /* FSCONFIG_??? */, %p, %p, -100) = %s\n",
+              fd, fd_path, empty, val, errstr);
+# endif
+
+       k_fsconfig(-100, -1, empty, fd_path, fd);
+# ifndef PATH_TRACING
+       printf("fsconfig(-100, 0xffffffff /* FSCONFIG_??? */, %p, %p, %d)"
+              " = %s\n",
+              empty, fd_path, fd, errstr);
+# endif
+}
+
+static void
+test_fsconfig_cmd(const unsigned int cmd, const char *cmd_str)
+{
+       k_fsconfig(fd, cmd, empty, val, -100);
+# ifndef PATH_TRACING
+       printf("fsconfig(%d<%s>, %s, %p, %p, -100) = %s\n",
+              fd, fd_path, cmd_str, empty, val, errstr);
+# endif
+
+       k_fsconfig(-100, cmd, empty, fd_path, fd);
+# ifndef PATH_TRACING
+       printf("fsconfig(-100, %s, %p, %p, %d) = %s\n",
+              cmd_str, empty, fd_path, fd, errstr);
+# endif
+}
+
+static void
+test_fsconfig_set_flag(const unsigned int cmd, const char *cmd_str)
+{
+       k_fsconfig(fd, cmd, key, val, -100);
+# ifndef PATH_TRACING
+       printf("fsconfig(%d<%s>, %s, \"%s\", %p, -100) = %s\n",
+              fd, fd_path, cmd_str, key, val, errstr);
+# endif
+
+       k_fsconfig(fd, cmd, key1, val, -100);
+# ifndef PATH_TRACING
+       printf("fsconfig(%d<%s>, %s, \"%.*s\"..., %p, -100) = %s\n",
+              fd, fd_path, cmd_str, max_string_size, key1, val, errstr);
+# endif
+
+       k_fsconfig(-100, cmd, key, fd_path, fd);
+# ifndef PATH_TRACING
+       printf("fsconfig(-100, %s, \"%s\", %p, %d) = %s\n",
+              cmd_str, key, fd_path, fd, errstr);
+# endif
+}
+
+static void
+test_fsconfig_set_string(const unsigned int cmd, const char *cmd_str)
+{
+       k_fsconfig(fd, cmd, key, val, -100);
+# ifndef PATH_TRACING
+       printf("fsconfig(%d<%s>, %s, \"%s\", \"%s\", -100) = %s\n",
+              fd, fd_path, cmd_str, key, val, errstr);
+# endif
+
+       k_fsconfig(fd, cmd, key1, val1, -100);
+# ifndef PATH_TRACING
+       printf("fsconfig(%d<%s>, %s, \"%.*s\"..., \"%.*s\"..., -100) = %s\n",
+              fd, fd_path, cmd_str, max_string_size, key1, max_string_size, val1,
+              errstr);
+# endif
+
+       k_fsconfig(-100, cmd, key, fd_path, fd);
+# ifndef PATH_TRACING
+       printf("fsconfig(-100, %s, \"%s\", \"%s\", %d) = %s\n",
+              cmd_str, key, fd_path, fd, errstr);
+# endif
+}
+
+static void
+test_fsconfig_set_binary(const unsigned int cmd, const char *cmd_str)
+{
+       k_fsconfig(fd, cmd, key, blob, max_blob_size);
+# ifndef PATH_TRACING
+       printf("fsconfig(%d<%s>, %s, \"%s\", ", fd, fd_path, cmd_str, key);
+       print_quoted_hex(blob, max_blob_size);
+       printf(", %d) = %s\n", max_blob_size, errstr);
+# endif
+
+       k_fsconfig(fd, cmd, key1, blob1, max_blob_size + 1);
+# ifndef PATH_TRACING
+       printf("fsconfig(%d<%s>, %s, \"%.*s\"..., ",
+              fd, fd_path, cmd_str, max_string_size, key1);
+       print_quoted_hex(blob1, max_blob_size);
+       printf("..., %d) = %s\n", max_blob_size + 1, errstr);
+# endif
+
+       k_fsconfig(fd, cmd, key, empty, 0);
+# ifndef PATH_TRACING
+       printf("fsconfig(%d<%s>, %s, \"%s\", \"\", 0) = %s\n",
+              fd, fd_path, cmd_str, key, errstr);
+# endif
+
+       k_fsconfig(fd, cmd, key, fname, -100);
+# ifndef PATH_TRACING
+       printf("fsconfig(%d<%s>, %s, \"%s\", %p, -100) = %s\n",
+              fd, fd_path, cmd_str, key, fname, errstr);
+# endif
+
+       k_fsconfig(fd, cmd, key, fname, huge_blob_size);
+# ifndef PATH_TRACING
+       printf("fsconfig(%d<%s>, %s, \"%s\", %p, %d) = %s\n",
+              fd, fd_path, cmd_str, key, fname, huge_blob_size, errstr);
+# endif
+
+       k_fsconfig(-100, cmd, key, fd_path, sizeof(path_full));
+# ifndef PATH_TRACING
+       printf("fsconfig(-100, %s, \"%s\", ", cmd_str, key);
+       print_quoted_hex(fd_path, sizeof(path_full));
+       printf(", %d) = %s\n", (int) sizeof(path_full), errstr);
+# endif
+
+       k_fsconfig(-100, cmd, key, fname, fd);
+# ifndef PATH_TRACING
+       printf("fsconfig(-100, %s, \"%s\", ", cmd_str, key);
+       print_quoted_hex(fname, fd);
+       printf(", %d) = %s\n", fd, errstr);
+# endif
+}
+
+static void
+test_fsconfig_set_path(const unsigned int cmd, const char *cmd_str)
+{
+       fill_memory_ex(fname, PATH_MAX, '0', 10);
+       k_fsconfig(fd, cmd, key, fname, -100);
+# ifndef PATH_TRACING
+       printf("fsconfig(%d<%s>, %s, \"%s\", \"%.*s\"..., AT_FDCWD) = %s\n",
+              fd, fd_path, cmd_str, key, (int) PATH_MAX - 1, fname, errstr);
+# endif
+
+       fname[PATH_MAX - 1] = '\0';
+       k_fsconfig(fd, cmd, key, fname, -1);
+# ifndef PATH_TRACING
+       printf("fsconfig(%d<%s>, %s, \"%s\", \"%s\", -1) = %s\n",
+              fd, fd_path, cmd_str, key, fname, errstr);
+# endif
+
+       k_fsconfig(-100, cmd, key, empty, fd);
+       printf("fsconfig(-100, %s, \"%s\", \"\", %d<%s>) = %s\n",
+              cmd_str, key, fd, fd_path, errstr);
+
+       k_fsconfig(-1, cmd, 0, fd_path, -100);
+       printf("fsconfig(-1, %s, NULL, \"%s\", AT_FDCWD) = %s\n",
+              cmd_str, fd_path, errstr);
+
+       k_fsconfig(-1, cmd, efault, efault + 1, fd);
+       printf("fsconfig(-1, %s, %p, %p, %d<%s>) = %s\n",
+              cmd_str, efault, efault + 1, fd, fd_path, errstr);
+
+       k_fsconfig(-100, cmd, key, fname, -1);
+# ifndef PATH_TRACING
+       printf("fsconfig(-100, %s, \"%s\", \"%s\", -1) = %s\n",
+              cmd_str, key, fname, errstr);
+# endif
+}
+
+static void
+test_fsconfig_set_fd(const unsigned int cmd, const char *cmd_str)
+{
+       k_fsconfig(fd, cmd, key, val, -100);
+# ifndef PATH_TRACING
+       printf("fsconfig(%d<%s>, %s, \"%s\", %p, -100) = %s\n",
+              fd, fd_path, cmd_str, key, val, errstr);
+# endif
+
+       k_fsconfig(-100, cmd, key1, 0, fd);
+       printf("fsconfig(-100, %s, \"%.*s\"..., NULL, %d<%s>) = %s\n",
+              cmd_str, max_string_size, key1, fd, fd_path, errstr);
+
+       k_fsconfig(-1, cmd, efault, efault + 1, fd);
+       printf("fsconfig(-1, %s, %p, %p, %d<%s>) = %s\n",
+              cmd_str, efault, efault + 1, fd, fd_path, errstr);
+
+       k_fsconfig(-100, cmd, key, fd_path, -1);
+# ifndef PATH_TRACING
+       printf("fsconfig(-100, %s, \"%s\", %p, -1) = %s\n",
+              cmd_str, key, fd_path, errstr);
+# endif
+}
+
+int
+main(void)
+{
+       skip_if_unavailable("/proc/self/fd/");
+
+       fd_path = tail_memdup(path_full, sizeof(path_full));
+       efault = fd_path + sizeof(path_full);
+       empty = efault - 1;
+       fname = tail_alloc(PATH_MAX);
+       key1 = tail_alloc(max_string_size + 1);
+       key = key1 + 1;
+       val1 = tail_alloc(max_string_size + 1);
+       val = val1 + 1;
+       blob1 = tail_alloc(max_blob_size + 1);
+       blob = blob1 + 1;
+
+       fill_memory_ex(fname, PATH_MAX, '0', 10);
+       fill_memory_ex(key1, max_string_size, 'a', 'z' - 'a' + 1);
+       key1[max_string_size] = '\0';
+       fill_memory_ex(val1, max_string_size, 'A', 'Z' - 'A' + 1);
+       val1[max_string_size] = '\0';
+       fill_memory_ex(blob, max_blob_size, '0', 10);
+       blob[0] = 0;
+       blob1[0] = 0;
+        fd = open(fd_path, O_WRONLY);
+        if (fd < 0)
+                perror_msg_and_fail("open: %s", fd_path);
+
+       test_fsconfig_unknown();
+       test_fsconfig_set_flag(ARG_STR(FSCONFIG_SET_FLAG));
+       test_fsconfig_set_string(ARG_STR(FSCONFIG_SET_STRING));
+       test_fsconfig_set_binary(ARG_STR(FSCONFIG_SET_BINARY));
+       test_fsconfig_set_path(ARG_STR(FSCONFIG_SET_PATH));
+       test_fsconfig_set_path(ARG_STR(FSCONFIG_SET_PATH_EMPTY));
+       test_fsconfig_set_fd(ARG_STR(FSCONFIG_SET_FD));
+       test_fsconfig_cmd(ARG_STR(FSCONFIG_CMD_CREATE));
+       test_fsconfig_cmd(ARG_STR(FSCONFIG_CMD_RECONFIGURE));
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_fsconfig")
+
+#endif
diff --git a/tests-m32/fsconfig.gen.test b/tests-m32/fsconfig.gen.test
new file mode 100755 (executable)
index 0000000..f482be1
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fsconfig -s300 -y); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -s300 -y
diff --git a/tests-m32/fsmount.c b/tests-m32/fsmount.c
new file mode 100644 (file)
index 0000000..28b14a4
--- /dev/null
@@ -0,0 +1,97 @@
+/*
+ * Check decoding of fsmount syscall.
+ *
+ * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_fsmount
+
+# include <fcntl.h>
+# include <stdio.h>
+# include <stdint.h>
+# include <unistd.h>
+
+static const char *errstr;
+
+static long
+k_fsmount(const unsigned int fs_fd,
+         const unsigned int flags,
+         const unsigned int attr_flags)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = fill | fs_fd;
+       const kernel_ulong_t arg2 = fill | flags;
+       const kernel_ulong_t arg3 = fill | attr_flags;
+       const long rc = syscall(__NR_fsmount,
+                               arg1, arg2, arg3, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
+int
+main(void)
+{
+       skip_if_unavailable("/proc/self/fd/");
+
+       static const char path[] = "/dev/full";
+        int fd = open(path, O_WRONLY);
+        if (fd < 0)
+                perror_msg_and_fail("open: %s", path);
+
+       struct {
+               unsigned int val;
+               const char *str;
+       } flags[] = {
+               { ARG_STR(0) },
+               { 1, "FSMOUNT_CLOEXEC" },
+               { 2, "0x2 /* FSMOUNT_??? */" },
+               { 0xfffffffe, "0xfffffffe /* FSMOUNT_??? */" },
+               { -1, "FSMOUNT_CLOEXEC|0xfffffffe" }
+       },
+       attrs[] = {
+               { ARG_STR(0) },
+               { 1, "MOUNT_ATTR_RDONLY" },
+               { 0x10, "MOUNT_ATTR_NOATIME" },
+               { 0xbf, "MOUNT_ATTR_RDONLY|MOUNT_ATTR_NOSUID|MOUNT_ATTR_NODEV"
+                       "|MOUNT_ATTR_NOEXEC|MOUNT_ATTR_NOATIME"
+                       "|MOUNT_ATTR_STRICTATIME|MOUNT_ATTR_NODIRATIME" },
+               { 0x40, "0x40 /* MOUNT_ATTR_??? */" },
+               { 0xffffff40, "0xffffff40 /* MOUNT_ATTR_??? */" },
+               { -1, "MOUNT_ATTR_RDONLY|MOUNT_ATTR_NOSUID|MOUNT_ATTR_NODEV"
+                       "|MOUNT_ATTR_NOEXEC|MOUNT_ATTR_NOATIME"
+                       "|MOUNT_ATTR_STRICTATIME|MOUNT_ATTR_NODIRATIME"
+                       "|0xffffff40" }
+       };
+
+       for (unsigned int i = 0; i < ARRAY_SIZE(flags); ++i) {
+               for (unsigned int j = 0; j < ARRAY_SIZE(attrs); ++j) {
+                       k_fsmount(-1, flags[i].val, attrs[j].val);
+                       printf("fsmount(-1, %s, %s) = %s\n",
+                              flags[i].str, attrs[j].str, errstr);
+
+                       k_fsmount(-100, flags[i].val, attrs[j].val);
+                       printf("fsmount(-100, %s, %s) = %s\n",
+                              flags[i].str, attrs[j].str, errstr);
+
+                       k_fsmount(fd, flags[i].val, attrs[j].val);
+                       printf("fsmount(%d<%s>, %s, %s) = %s\n",
+                              fd, path, flags[i].str, attrs[j].str, errstr);
+               }
+       }
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_fsmount")
+
+#endif
diff --git a/tests-m32/fsmount.gen.test b/tests-m32/fsmount.gen.test
new file mode 100755 (executable)
index 0000000..aff762b
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fsmount -a18 -y); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a18 -y
diff --git a/tests-m32/fsopen.c b/tests-m32/fsopen.c
new file mode 100644 (file)
index 0000000..1d8af8b
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * Check decoding of fsopen syscall.
+ *
+ * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_fsopen
+
+# include <stdio.h>
+# include <stdint.h>
+# include <unistd.h>
+
+static const char *errstr;
+
+static long
+k_fsopen(const void *name, const unsigned int flags)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = (uintptr_t) name;
+       const kernel_ulong_t arg2 = fill | flags;
+       const long rc = syscall(__NR_fsopen, arg1, arg2, bad, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
+int
+main(void)
+{
+       char *const name1 = tail_alloc(DEFAULT_STRLEN + 2);
+       char *const name = name1 + 1;
+       const void *const efault = name + DEFAULT_STRLEN + 1;
+       const char *const empty = efault - 1;
+       fill_memory_ex(name1, DEFAULT_STRLEN + 1, '0', 10);
+       name1[DEFAULT_STRLEN + 1] = '\0';
+
+       k_fsopen(name, 0);
+       printf("fsopen(\"%s\", 0) = %s\n", name, errstr);
+
+       k_fsopen(name1, 1);
+       printf("fsopen(\"%.*s\"..., FSOPEN_CLOEXEC) = %s\n",
+              DEFAULT_STRLEN, name1, errstr);
+
+       k_fsopen(0, 2);
+       printf("fsopen(NULL, 0x2 /* FSOPEN_??? */) = %s\n", errstr);
+
+       k_fsopen(efault, 0xfffffffe);
+       printf("fsopen(%p, 0xfffffffe /* FSOPEN_??? */) = %s\n", efault, errstr);
+
+       k_fsopen(empty, -1);
+       printf("fsopen(\"\", FSOPEN_CLOEXEC|0xfffffffe) = %s\n", errstr);
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_fsopen")
+
+#endif
diff --git a/tests-m32/fsopen.gen.test b/tests-m32/fsopen.gen.test
new file mode 100755 (executable)
index 0000000..b4130f0
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fsopen -a35 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a35 
diff --git a/tests-m32/fspick-P.c b/tests-m32/fspick-P.c
new file mode 100644 (file)
index 0000000..f3d41eb
--- /dev/null
@@ -0,0 +1,2 @@
+#define PATH_TRACING
+#include "fspick.c"
diff --git a/tests-m32/fspick-P.gen.test b/tests-m32/fspick-P.gen.test
new file mode 100755 (executable)
index 0000000..98c0021
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fspick-P -a27 -y -P /dev/full -e trace=fspick); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27 -y -P /dev/full -e trace=fspick
diff --git a/tests-m32/fspick.c b/tests-m32/fspick.c
new file mode 100644 (file)
index 0000000..3f7f9d7
--- /dev/null
@@ -0,0 +1,109 @@
+/*
+ * Check decoding of fspick syscall.
+ *
+ * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_fspick
+
+# include <fcntl.h>
+# include <limits.h>
+# include <stdio.h>
+# include <stdint.h>
+# include <unistd.h>
+
+static const char *errstr;
+
+static long
+k_fspick(const unsigned int dfd,
+           const void *fname,
+           const unsigned int flags)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = fill | dfd;
+       const kernel_ulong_t arg2 = (uintptr_t) fname;
+       const kernel_ulong_t arg3 = fill | flags;
+       const long rc = syscall(__NR_fspick, arg1, arg2, arg3, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
+int
+main(void)
+{
+       skip_if_unavailable("/proc/self/fd/");
+
+       static const char path_full[] = "/dev/full";
+       const char *const path = tail_memdup(path_full, sizeof(path_full));
+       char *const fname = tail_alloc(PATH_MAX);
+       const void *const efault = fname + PATH_MAX;
+       const char *const empty = efault - 1;
+       fill_memory_ex(fname, PATH_MAX, '0', 10);
+
+        int dfd = open(path, O_WRONLY);
+        if (dfd < 0)
+                perror_msg_and_fail("open: %s", path);
+
+       k_fspick(-1, 0, 1);
+# ifndef PATH_TRACING
+       printf("fspick(-1, NULL, %s) = %s\n", "FSPICK_CLOEXEC", errstr);
+# endif
+
+       k_fspick(-100, fname, 0);
+# ifndef PATH_TRACING
+       printf("fspick(%s, \"%.*s\"..., 0) = %s\n",
+              "AT_FDCWD", (int) PATH_MAX - 1, fname, errstr);
+# endif
+
+       fname[PATH_MAX - 1] = '\0';
+       k_fspick(dfd, fname, 0xfffffff0);
+       printf("fspick(%d<%s>, \"%s\", %s) = %s\n",
+              dfd, path, fname, "0xfffffff0 /* FSPICK_??? */", errstr);
+
+       k_fspick(-1, efault, 0xf);
+# ifndef PATH_TRACING
+       printf("fspick(-1, %p, %s) = %s\n",
+              efault,
+              "FSPICK_CLOEXEC|FSPICK_SYMLINK_NOFOLLOW"
+              "|FSPICK_NO_AUTOMOUNT|FSPICK_EMPTY_PATH",
+              errstr);
+# endif
+
+       k_fspick(-1, empty, -1);
+# ifndef PATH_TRACING
+       printf("fspick(-1, \"\", %s|0xfffffff0) = %s\n",
+              "FSPICK_CLOEXEC|FSPICK_SYMLINK_NOFOLLOW"
+              "|FSPICK_NO_AUTOMOUNT|FSPICK_EMPTY_PATH",
+              errstr);
+# endif
+
+       if (k_fspick(-1, path, 0) < 0)
+               printf("fspick(-1, \"%s\", 0) = %s\n",
+                      path, errstr);
+       else
+               printf("fspick(-1, \"%s\", 0) = %s<%s>\n",
+                      path, errstr, path);
+
+       if (k_fspick(dfd, empty, 8) < 0)
+               printf("fspick(%d<%s>, \"\", %s) = %s\n",
+                      dfd, path, "FSPICK_EMPTY_PATH", errstr);
+       else
+               printf("fspick(%d<%s>, \"\", %s) = %s<%s>\n",
+                      dfd, path, "FSPICK_EMPTY_PATH", errstr, path);
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_fspick")
+
+#endif
diff --git a/tests-m32/fspick.gen.test b/tests-m32/fspick.gen.test
new file mode 100755 (executable)
index 0000000..a126198
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fspick -a27 -y); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27 -y
index 7a52e0cc79bd9f8b9c2eac6b0e453ab165c8534b..d0b5454dd6f2bcb572be0b5be1319772b4ce7f2b 100644 (file)
@@ -1,13 +1,13 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_fstat
 
index 5d30ca410faf3208b4fe388b716f5d19fa8f9a8a..2ce73a98d7c8131e68f202b1581a38ffd64615fe 100644 (file)
@@ -1,13 +1,13 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_fstat64
 
index 949463c9bb2c094a2f91b1760b6a29c1f2b431fa..965958ef1c1b8bf7b380c39d810e442f36a86cb5 100644 (file)
@@ -1,13 +1,13 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_fstatat64
 
index 8da5c7f2a7c6138e9318147a66861804428da5a0..a453ff222673cfd4e1d69c11aa92e302d7572e63 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fstatat64 -a32 -v -P stat.sample -P /dev/full); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fstatat64 -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
+run_strace_match_diff -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full
index f16094057ecb35f2cdf6e2ecfd0f088b1873c501..e3a38aa7960d04bd7859dd3166ce72d42d8dec1a 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_fstatfs
 
index 14da042a5b56386305863c642257d0b061c65418..95171ca297078e83ade30a63fede4a4db01dc7c4 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_fstatfs64
 
index 5624096b40a7b403ef278c0b7f226e531d702c59..2efc3395baf822ab1315103953becbec96b1e90f 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_fsync
 
index 6c77d4b1c405afff9d402cfdf9739dcdf3afd302..70f813f8cacdbe5a32ae8dc7636bdb73f86975f0 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_ftruncate
 
index b7e350b4166be2e4dd9a3550f167d1a143b7067f..ad7fc4716967bc57306be7550414095ca4474220 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_ftruncate64
 
index 47191f278e752f68627a0636fa20125a03fb9d9d..f246e22ad2ee08666ed6e5cc5858c2a1c9d274b8 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -8,7 +8,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_futex
 
@@ -495,7 +495,7 @@ main(int argc, char *argv[])
         *                 wake val2 processes waiting for uaddr2 in case
         *                 operation encoded in val3 (change of value at uaddr2
         *                 and comparison of previous value against provided
-        *                 constant) succeedes with value at uaddr2. Operation
+        *                 constant) succeeds with value at uaddr2. Operation
         *                 result is written to value of uaddr2 (in any case).
         * 1. uaddr   - futex address
         * 2. op      - FUTEX_WAKE_OP
index 8024f87b1a059436aaf42f6e0f4162df4457d235..5782f1f6317ce4de851e01338c78c9b060ec553b 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of futimesat syscall.
  *
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_futimesat
 
index e6d1fc7bac7fbb3c05cb103dc699ee187e6fd29d..e0a2952df7c2883ccc5967810429bdd18c1ad011 100644 (file)
@@ -1,5 +1,5 @@
 # Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in; do not edit.
-GEN_TESTS = _newselect.gen.test _newselect-P.gen.test accept.gen.test accept4.gen.test access.gen.test acct.gen.test add_key.gen.test adjtimex.gen.test aio.gen.test aio_pgetevents.gen.test alarm.gen.test bpf.gen.test bpf-obj_get_info_by_fd.gen.test bpf-obj_get_info_by_fd-prog.gen.test bpf-obj_get_info_by_fd-prog-v.gen.test bpf-obj_get_info_by_fd-v.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 dev-yy.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 fanotify_mark-Xabbrev.gen.test fanotify_mark-Xraw.gen.test fanotify_mark-Xverbose.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 fstat-Xabbrev.gen.test fstat-Xraw.gen.test fstat-Xverbose.gen.test fstat64.gen.test fstat64-Xabbrev.gen.test fstat64-Xraw.gen.test fstat64-Xverbose.gen.test fstatat64.gen.test fstatfs.gen.test fstatfs64.gen.test fsync.gen.test fsync-y.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 io_uring_enter.gen.test io_uring_register.gen.test io_uring_setup.gen.test ioctl_block.gen.test ioctl_dm.gen.test ioctl_dm-v.gen.test ioctl_evdev.gen.test ioctl_evdev-v.gen.test ioctl_inotify.gen.test ioctl_kvm_run.gen.test ioctl_kvm_run-v.gen.test ioctl_kvm_run_auxstr_vcpu.gen.test ioctl_loop.gen.test ioctl_loop-nv.gen.test ioctl_loop-v.gen.test ioctl_mtd.gen.test ioctl_nbd.gen.test ioctl_nsfs.gen.test ioctl_perf.gen.test ioctl_ptp.gen.test ioctl_random.gen.test ioctl_rtc.gen.test ioctl_rtc-v.gen.test ioctl_scsi.gen.test ioctl_sg_io_v3.gen.test ioctl_sg_io_v4.gen.test ioctl_sock_gifconf.gen.test ioctl_uffdio.gen.test ioctl_v4l2.gen.test ioperm.gen.test iopl.gen.test ioprio.gen.test ioprio-Xabbrev.gen.test ioprio-Xraw.gen.test ioprio-Xverbose.gen.test ip_mreq.gen.test ipc.gen.test ipc_msg.gen.test ipc_msg-Xabbrev.gen.test ipc_msg-Xraw.gen.test ipc_msg-Xverbose.gen.test ipc_msgbuf-Xabbrev.gen.test ipc_msgbuf-Xraw.gen.test ipc_msgbuf-Xverbose.gen.test ipc_sem.gen.test ipc_sem-Xabbrev.gen.test ipc_sem-Xraw.gen.test ipc_sem-Xverbose.gen.test ipc_shm.gen.test ipc_shm-Xabbrev.gen.test ipc_shm-Xraw.gen.test ipc_shm-Xverbose.gen.test kcmp.gen.test kcmp-y.gen.test kern_features.gen.test kernel_version.gen.test kernel_version-Xabbrev.gen.test kernel_version-Xraw.gen.test kernel_version-Xverbose.gen.test kexec_file_load.gen.test kexec_load.gen.test keyctl.gen.test keyctl-Xabbrev.gen.test keyctl-Xraw.gen.test keyctl-Xverbose.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 memfd_create-Xabbrev.gen.test memfd_create-Xraw.gen.test memfd_create-Xverbose.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 mmap-Xabbrev.gen.test mmap-Xraw.gen.test mmap-Xverbose.gen.test mmap64.gen.test mmap64-Xabbrev.gen.test mmap64-Xraw.gen.test mmap64-Xverbose.gen.test mmsg.gen.test mmsg-silent.gen.test mmsg_name.gen.test mmsg_name-v.gen.test modify_ldt.gen.test mount.gen.test mount-Xabbrev.gen.test mount-Xraw.gen.test mount-Xverbose.gen.test move_pages.gen.test move_pages-Xabbrev.gen.test move_pages-Xraw.gen.test move_pages-Xverbose.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-packet_mreq.gen.test net-packet_mreq-Xabbrev.gen.test net-packet_mreq-Xraw.gen.test net-packet_mreq-Xverbose.gen.test net-sockaddr.gen.test net-tpacket_req.gen.test net-tpacket_stats.gen.test net-yy-inet6.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 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.gen.test nlattr_br_port_msg.gen.test nlattr_crypto_user_alg.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_af_spec.gen.test nlattr_ifla_brport.gen.test nlattr_ifla_linkinfo.gen.test nlattr_ifla_port.gen.test nlattr_ifla_xdp.gen.test nlattr_inet_diag_msg.gen.test nlattr_inet_diag_req_compat.gen.test nlattr_inet_diag_req_v2.gen.test nlattr_mdba_mdb_entry.gen.test nlattr_mdba_router_port.gen.test nlattr_ndmsg.gen.test nlattr_ndtmsg.gen.test nlattr_netconfmsg.gen.test nlattr_netlink_diag_msg.gen.test nlattr_nlmsgerr.gen.test nlattr_packet_diag_msg.gen.test nlattr_rtgenmsg.gen.test nlattr_rtmsg.gen.test nlattr_smc_diag_msg.gen.test nlattr_tc_stats.gen.test nlattr_tca_stab.gen.test nlattr_tcamsg.gen.test nlattr_tcmsg.gen.test nlattr_unix_diag_msg.gen.test old_mmap.gen.test old_mmap-P.gen.test old_mmap-Xabbrev.gen.test old_mmap-Xraw.gen.test old_mmap-Xverbose.gen.test old_mmap-v-none.gen.test oldfstat.gen.test oldlstat.gen.test oldselect.gen.test oldselect-P.gen.test oldselect-efault.gen.test oldselect-efault-P.gen.test oldstat.gen.test open.gen.test openat.gen.test orphaned_process_group.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 personality-Xabbrev.gen.test personality-Xraw.gen.test personality-Xverbose.gen.test pidfd_send_signal.gen.test pipe2.gen.test pkey_alloc.gen.test pkey_free.gen.test pkey_mprotect.gen.test ppoll.gen.test ppoll-P.gen.test ppoll-v.gen.test pread64-pwrite64.gen.test preadv.gen.test preadv-pwritev.gen.test preadv2-pwritev2.gen.test printpath-umovestr.gen.test printpath-umovestr-peekdata.gen.test printpath-umovestr-undumpable.gen.test printsignal-Xabbrev.gen.test printsignal-Xraw.gen.test printsignal-Xverbose.gen.test printstr.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 ptrace_syscall_info.gen.test pwritev.gen.test quotactl.gen.test quotactl-Xabbrev.gen.test quotactl-Xraw.gen.test quotactl-Xverbose.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 remap_file_pages-Xabbrev.gen.test remap_file_pages-Xraw.gen.test remap_file_pages-Xverbose.gen.test rename.gen.test renameat.gen.test renameat2.gen.test request_key.gen.test riscv_flush_icache.gen.test rmdir.gen.test rt_sigpending.gen.test rt_sigprocmask.gen.test rt_sigqueueinfo.gen.test rt_sigreturn.gen.test rt_sigsuspend.gen.test rt_sigtimedwait.gen.test rt_tgsigqueueinfo.gen.test s390_guarded_storage.gen.test s390_guarded_storage-v.gen.test s390_pci_mmio_read_write.gen.test s390_runtime_instr.gen.test s390_sthyi.gen.test s390_sthyi-v.gen.test sched.gen.test sched_get_priority_mxx.gen.test sched_rr_get_interval.gen.test sched_xetaffinity.gen.test sched_xetattr.gen.test sched_xetparam.gen.test sched_xetscheduler.gen.test sched_yield.gen.test seccomp-filter.gen.test seccomp-filter-v.gen.test seccomp_get_action_avail.gen.test select.gen.test select-P.gen.test semop.gen.test sendfile.gen.test sendfile64.gen.test set_mempolicy.gen.test setdomainname.gen.test setfsgid.gen.test setfsgid32.gen.test setfsuid.gen.test setfsuid32.gen.test setgid.gen.test setgid32.gen.test setgroups.gen.test setgroups32.gen.test sethostname.gen.test setns.gen.test setregid.gen.test setregid32.gen.test setresgid.gen.test setresgid32.gen.test setresuid.gen.test setresuid32.gen.test setreuid.gen.test setreuid32.gen.test setrlimit.gen.test setrlimit-Xabbrev.gen.test setrlimit-Xraw.gen.test setrlimit-Xverbose.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_error.gen.test so_linger.gen.test so_peercred.gen.test so_peercred-Xabbrev.gen.test so_peercred-Xraw.gen.test so_peercred-Xverbose.gen.test sock_filter-v.gen.test sock_filter-v-Xabbrev.gen.test sock_filter-v-Xraw.gen.test sock_filter-v-Xverbose.gen.test sockaddr_xlat-Xabbrev.gen.test sockaddr_xlat-Xraw.gen.test sockaddr_xlat-Xverbose.gen.test socketcall.gen.test sockopt-sol_netlink.gen.test sockopt-timestamp.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_personality_32.gen.test trace_personality_64.gen.test trace_personality_regex_32.gen.test trace_personality_regex_64.gen.test trace_personality_regex_x32.gen.test trace_personality_x32.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 utimensat-Xabbrev.gen.test utimensat-Xraw.gen.test utimensat-Xverbose.gen.test utimes.gen.test vfork-f.gen.test vhangup.gen.test vmsplice.gen.test wait4.gen.test wait4-v.gen.test waitid.gen.test waitid-v.gen.test waitpid.gen.test xattr.gen.test xattr-strings.gen.test xet_robust_list.gen.test xetitimer.gen.test xetpgid.gen.test xetpriority.gen.test xettimeofday.gen.test
+GEN_TESTS = _newselect.gen.test _newselect-P.gen.test accept.gen.test accept4.gen.test access.gen.test acct.gen.test add_key.gen.test adjtimex.gen.test aio.gen.test aio_pgetevents.gen.test alarm.gen.test bpf.gen.test bpf-obj_get_info_by_fd.gen.test bpf-obj_get_info_by_fd-prog.gen.test bpf-obj_get_info_by_fd-prog-v.gen.test bpf-obj_get_info_by_fd-v.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 clone3.gen.test clone3-Xabbrev.gen.test clone3-Xraw.gen.test clone3-Xverbose.gen.test clone3-success-Xabbrev.gen.test clone3-success-Xraw.gen.test clone3-success-Xverbose.gen.test clone_parent.gen.test clone_parent--quiet-exit.gen.test clone_parent-q.gen.test clone_parent-qq.gen.test clone_ptrace--quiet-attach.gen.test clone_ptrace--quiet-exit.gen.test clone_ptrace-q.gen.test clone_ptrace-qq.gen.test close_range.gen.test close_range-P.gen.test close_range-y.gen.test close_range-yy.gen.test copy_file_range.gen.test creat.gen.test delete_module.gen.test dev--decode-fds-dev.gen.test dev--decode-fds-path.gen.test dev--decode-fds-socket.gen.test dev-yy.gen.test dup.gen.test dup-P.gen.test dup-y.gen.test dup-yy.gen.test dup2.gen.test dup2-P.gen.test dup2-y.gen.test dup2-yy.gen.test dup3.gen.test dup3-P.gen.test dup3-y.gen.test dup3-yy.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-P.gen.test faccessat-y.gen.test faccessat-yy.gen.test faccessat2-P.gen.test faccessat2-y.gen.test faccessat2-yy.gen.test fadvise64_64.gen.test fallocate.gen.test fanotify_init.gen.test fanotify_mark.gen.test fanotify_mark-Xabbrev.gen.test fanotify_mark-Xraw.gen.test fanotify_mark-Xverbose.gen.test fchdir.gen.test fchmod.gen.test fchmodat.gen.test fchown.gen.test fchown32.gen.test fchownat.gen.test fcntl.gen.test fcntl--pidns-translation.gen.test fcntl64.gen.test fcntl64--pidns-translation.gen.test fdatasync.gen.test file_handle.gen.test file_ioctl.gen.test filter_seccomp.gen.test filter_seccomp-flag.gen.test finit_module.gen.test flock.gen.test fork-f.gen.test fsconfig.gen.test fsconfig-P.gen.test fsmount.gen.test fsopen.gen.test fspick.gen.test fspick-P.gen.test fstat.gen.test fstat-Xabbrev.gen.test fstat-Xraw.gen.test fstat-Xverbose.gen.test fstat64.gen.test fstat64-Xabbrev.gen.test fstat64-Xraw.gen.test fstat64-Xverbose.gen.test fstatat64.gen.test fstatfs.gen.test fstatfs64.gen.test fsync.gen.test fsync-y.gen.test ftruncate.gen.test ftruncate64.gen.test futimesat.gen.test get_mempolicy.gen.test getcpu.gen.test getcwd.gen.test getdents.gen.test getdents-v.gen.test getdents64.gen.test getdents64-v.gen.test getegid.gen.test getegid-creds.gen.test getegid32.gen.test getegid32-creds.gen.test geteuid.gen.test geteuid-creds.gen.test geteuid32.gen.test geteuid32-creds.gen.test getgid.gen.test getgid-creds.gen.test getgid32.gen.test getgid32-creds.gen.test getgroups.gen.test getgroups32.gen.test getpeername.gen.test getpgrp.gen.test getpgrp--pidns-translation.gen.test getpid.gen.test getpid--pidns-translation.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 getsid--pidns-translation.gen.test getsockname.gen.test gettid.gen.test getuid-creds.gen.test getuid32.gen.test getuid32-creds.gen.test getxgid.gen.test getxpid.gen.test getxuid.gen.test group_req.gen.test inet-cmsg.gen.test init_module.gen.test inotify.gen.test inotify_init.gen.test inotify_init1.gen.test inotify_init1-y.gen.test io_uring_enter.gen.test io_uring_register.gen.test io_uring_setup.gen.test ioctl_block.gen.test ioctl_dm.gen.test ioctl_dm-v.gen.test ioctl_evdev.gen.test ioctl_evdev-Xabbrev.gen.test ioctl_evdev-Xraw.gen.test ioctl_evdev-Xverbose.gen.test ioctl_evdev-v.gen.test ioctl_evdev-v-Xabbrev.gen.test ioctl_evdev-v-Xraw.gen.test ioctl_evdev-v-Xverbose.gen.test ioctl_evdev-success-Xabbrev.gen.test ioctl_evdev-success-Xraw.gen.test ioctl_evdev-success-Xverbose.gen.test ioctl_evdev-success-v.gen.test ioctl_evdev-success-v-Xabbrev.gen.test ioctl_evdev-success-v-Xraw.gen.test ioctl_evdev-success-v-Xverbose.gen.test ioctl_hdio.gen.test ioctl_hdio-Xabbrev.gen.test ioctl_hdio-Xraw.gen.test ioctl_hdio-Xverbose.gen.test ioctl_hdio-v.gen.test ioctl_hdio-v-Xabbrev.gen.test ioctl_hdio-v-Xraw.gen.test ioctl_hdio-v-Xverbose.gen.test ioctl_hdio-success.gen.test ioctl_hdio-success-Xabbrev.gen.test ioctl_hdio-success-Xraw.gen.test ioctl_hdio-success-Xverbose.gen.test ioctl_hdio-success-v.gen.test ioctl_hdio-success-v-Xabbrev.gen.test ioctl_hdio-success-v-Xraw.gen.test ioctl_hdio-success-v-Xverbose.gen.test ioctl_inotify.gen.test ioctl_kvm_run.gen.test ioctl_kvm_run-v.gen.test ioctl_kvm_run_auxstr_vcpu.gen.test ioctl_loop.gen.test ioctl_loop-nv.gen.test ioctl_loop-v.gen.test ioctl_mtd.gen.test ioctl_nbd.gen.test ioctl_nsfs.gen.test ioctl_perf.gen.test ioctl_perf-success.gen.test ioctl_ptp.gen.test ioctl_random.gen.test ioctl_rtc.gen.test ioctl_rtc-v.gen.test ioctl_scsi.gen.test ioctl_sg_io_v3.gen.test ioctl_sg_io_v4.gen.test ioctl_sock_gifconf.gen.test ioctl_tee.gen.test ioctl_uffdio.gen.test ioctl_v4l2.gen.test ioctl_v4l2-Xabbrev.gen.test ioctl_v4l2-Xraw.gen.test ioctl_v4l2-Xverbose.gen.test ioctl_v4l2-v.gen.test ioctl_v4l2-v-Xabbrev.gen.test ioctl_v4l2-v-Xraw.gen.test ioctl_v4l2-v-Xverbose.gen.test ioctl_v4l2-success.gen.test ioctl_v4l2-success-Xabbrev.gen.test ioctl_v4l2-success-Xraw.gen.test ioctl_v4l2-success-Xverbose.gen.test ioctl_v4l2-success-v.gen.test ioctl_v4l2-success-v-Xabbrev.gen.test ioctl_v4l2-success-v-Xraw.gen.test ioctl_v4l2-success-v-Xverbose.gen.test ioctl_watchdog.gen.test ioperm.gen.test iopl.gen.test ioprio.gen.test ioprio--pidns-translation.gen.test ioprio-Xabbrev.gen.test ioprio-Xraw.gen.test ioprio-Xverbose.gen.test ip_mreq.gen.test ipc.gen.test ipc_msg.gen.test ipc_msg-Xabbrev.gen.test ipc_msg-Xraw.gen.test ipc_msg-Xverbose.gen.test ipc_msgbuf-Xabbrev.gen.test ipc_msgbuf-Xraw.gen.test ipc_msgbuf-Xverbose.gen.test ipc_sem.gen.test ipc_sem-Xabbrev.gen.test ipc_sem-Xraw.gen.test ipc_sem-Xverbose.gen.test ipc_shm.gen.test ipc_shm-Xabbrev.gen.test ipc_shm-Xraw.gen.test ipc_shm-Xverbose.gen.test kcmp.gen.test kcmp-y.gen.test kcmp-y--pidns-translation.gen.test kern_features.gen.test kernel_version.gen.test kernel_version-Xabbrev.gen.test kernel_version-Xraw.gen.test kernel_version-Xverbose.gen.test kexec_file_load.gen.test kexec_load.gen.test keyctl.gen.test keyctl-Xabbrev.gen.test keyctl-Xraw.gen.test keyctl-Xverbose.gen.test kill.gen.test kill--pidns-translation.gen.test ksysent.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 maybe_switch_current_tcp.gen.test maybe_switch_current_tcp--quiet-thread-execve.gen.test mbind.gen.test mbind-Xabbrev.gen.test mbind-Xraw.gen.test mbind-Xverbose.gen.test membarrier.gen.test memfd_create.gen.test memfd_create-Xabbrev.gen.test memfd_create-Xraw.gen.test memfd_create-Xverbose.gen.test migrate_pages.gen.test migrate_pages--pidns-translation.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 mmap-Xabbrev.gen.test mmap-Xraw.gen.test mmap-Xverbose.gen.test mmap64.gen.test mmap64-Xabbrev.gen.test mmap64-Xraw.gen.test mmap64-Xverbose.gen.test mmsg.gen.test mmsg-silent.gen.test mmsg_name.gen.test mmsg_name-v.gen.test modify_ldt.gen.test mount.gen.test mount-Xabbrev.gen.test mount-Xraw.gen.test mount-Xverbose.gen.test move_mount.gen.test move_mount-P.gen.test move_pages.gen.test move_pages-Xabbrev.gen.test move_pages-Xraw.gen.test move_pages-Xverbose.gen.test move_pages--pidns-translation.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--decode-fds-dev-netlink.gen.test net--decode-fds-none-netlink.gen.test net--decode-fds-path-netlink.gen.test net--decode-fds-socket-netlink.gen.test net-icmp_filter.gen.test net-packet_mreq.gen.test net-packet_mreq-Xabbrev.gen.test net-packet_mreq-Xraw.gen.test net-packet_mreq-Xverbose.gen.test net-sockaddr.gen.test net-sockaddr--pidns-translation.gen.test net-tpacket_req.gen.test net-tpacket_stats.gen.test net-yy-inet6.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 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.gen.test nlattr_br_port_msg.gen.test nlattr_crypto_user_alg.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_af_spec.gen.test nlattr_ifla_brport.gen.test nlattr_ifla_linkinfo.gen.test nlattr_ifla_port.gen.test nlattr_ifla_xdp.gen.test nlattr_ifla_xdp-y.gen.test nlattr_inet_diag_msg.gen.test nlattr_inet_diag_req_compat.gen.test nlattr_inet_diag_req_v2.gen.test nlattr_mdba_mdb_entry.gen.test nlattr_mdba_router_port.gen.test nlattr_ndmsg.gen.test nlattr_ndtmsg.gen.test nlattr_netconfmsg.gen.test nlattr_netlink_diag_msg.gen.test nlattr_nlmsgerr.gen.test nlattr_packet_diag_msg.gen.test nlattr_rtgenmsg.gen.test nlattr_rtmsg.gen.test nlattr_smc_diag_msg.gen.test nlattr_tc_stats.gen.test nlattr_tca_stab.gen.test nlattr_tcamsg.gen.test nlattr_tcmsg.gen.test nlattr_unix_diag_msg.gen.test old_mmap.gen.test old_mmap-P.gen.test old_mmap-Xabbrev.gen.test old_mmap-Xraw.gen.test old_mmap-Xverbose.gen.test old_mmap-v-none.gen.test oldfstat.gen.test oldlstat.gen.test oldselect.gen.test oldselect-P.gen.test oldselect-efault.gen.test oldselect-efault-P.gen.test oldstat.gen.test open.gen.test open_tree.gen.test open_tree-P.gen.test openat.gen.test openat2.gen.test openat2-Xabbrev.gen.test openat2-Xraw.gen.test openat2-Xverbose.gen.test openat2-v.gen.test openat2-v-y.gen.test openat2-v-y-Xabbrev.gen.test openat2-v-y-Xraw.gen.test openat2-v-y-Xverbose.gen.test openat2-y.gen.test orphaned_process_group.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 personality-Xabbrev.gen.test personality-Xraw.gen.test personality-Xverbose.gen.test pidfd_getfd.gen.test pidfd_getfd-y.gen.test pidfd_getfd-yy.gen.test pidfd_open.gen.test pidfd_open--decode-fd-path.gen.test pidfd_open--decode-fd-pidfd.gen.test pidfd_open--decode-fd-socket.gen.test pidfd_open-P.gen.test pidfd_open-y.gen.test pidfd_open-yy.gen.test pidfd_open--pidns-translation.gen.test pidfd_send_signal.gen.test pidfd_send_signal--pidns-translation.gen.test pipe2.gen.test pkey_alloc.gen.test pkey_free.gen.test pkey_mprotect.gen.test ppoll.gen.test ppoll-P.gen.test ppoll-v.gen.test pread64-pwrite64.gen.test preadv.gen.test preadv-pwritev.gen.test preadv2-pwritev2.gen.test printpath-umovestr.gen.test printpath-umovestr-peekdata.gen.test printpath-umovestr-undumpable.gen.test printsignal-Xabbrev.gen.test printsignal-Xraw.gen.test printsignal-Xverbose.gen.test printstr.gen.test printstrn-umoven.gen.test printstrn-umoven-peekdata.gen.test printstrn-umoven-undumpable.gen.test prlimit64.gen.test prlimit64--pidns-translation.gen.test process_vm_readv.gen.test process_vm_readv--pidns-translation.gen.test process_vm_writev.gen.test process_vm_writev--pidns-translation.gen.test pselect6.gen.test ptrace.gen.test ptrace_syscall_info.gen.test pwritev.gen.test quotactl.gen.test quotactl-Xabbrev.gen.test quotactl-Xraw.gen.test quotactl-Xverbose.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 recv-MSG_TRUNC.gen.test recvfrom.gen.test recvfrom-MSG_TRUNC.gen.test recvmmsg-timeout.gen.test recvmsg.gen.test regex.gen.test remap_file_pages.gen.test remap_file_pages-Xabbrev.gen.test remap_file_pages-Xraw.gen.test remap_file_pages-Xverbose.gen.test rename.gen.test renameat.gen.test renameat2.gen.test request_key.gen.test riscv_flush_icache.gen.test rmdir.gen.test rt_sigpending.gen.test rt_sigprocmask.gen.test rt_sigqueueinfo.gen.test rt_sigqueueinfo--pidns-translation.gen.test rt_sigreturn.gen.test rt_sigsuspend.gen.test rt_sigtimedwait.gen.test rt_tgsigqueueinfo.gen.test rt_tgsigqueueinfo--pidns-translation.gen.test s390_guarded_storage.gen.test s390_guarded_storage-v.gen.test s390_pci_mmio_read_write.gen.test s390_runtime_instr.gen.test s390_sthyi.gen.test s390_sthyi-v.gen.test sched.gen.test sched_get_priority_mxx.gen.test sched_rr_get_interval.gen.test sched_xetaffinity.gen.test sched_xetaffinity--pidns-translation.gen.test sched_xetattr.gen.test sched_xetattr--pidns-translation.gen.test sched_xetparam.gen.test sched_xetparam--pidns-translation.gen.test sched_xetscheduler.gen.test sched_xetscheduler--pidns-translation.gen.test sched_yield.gen.test seccomp-filter.gen.test seccomp-filter-v.gen.test seccomp_get_action_avail.gen.test select.gen.test select-P.gen.test semop.gen.test semop-indirect.gen.test semtimedop.gen.test sendfile.gen.test sendfile64.gen.test set_mempolicy.gen.test set_mempolicy-Xabbrev.gen.test set_mempolicy-Xraw.gen.test set_mempolicy-Xverbose.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 setrlimit-Xabbrev.gen.test setrlimit-Xraw.gen.test setrlimit-Xverbose.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 signal_receive--pidns-translation.gen.test signalfd4.gen.test sigpending.gen.test sigprocmask.gen.test sigreturn.gen.test sigsuspend.gen.test so_error.gen.test so_linger.gen.test so_peercred.gen.test so_peercred-Xabbrev.gen.test so_peercred-Xraw.gen.test so_peercred-Xverbose.gen.test so_peercred--pidns-translation.gen.test sock_filter-v.gen.test sock_filter-v-Xabbrev.gen.test sock_filter-v-Xraw.gen.test sock_filter-v-Xverbose.gen.test sockaddr_xlat-Xabbrev.gen.test sockaddr_xlat-Xraw.gen.test sockaddr_xlat-Xverbose.gen.test socketcall.gen.test sockopt-sol_netlink.gen.test sockopt-timestamp.gen.test splice.gen.test stat.gen.test stat64.gen.test statfs.gen.test statfs64.gen.test status-all.gen.test status-failed.gen.test status-failed-long.gen.test status-failed-status.gen.test status-none.gen.test status-successful.gen.test status-successful-long.gen.test status-successful-status.gen.test status-unfinished.gen.test statx.gen.test strace--absolute-timestamps.gen.test strace--absolute-timestamps-format-time.gen.test strace--absolute-timestamps-format-time-precision-s.gen.test strace--absolute-timestamps-format-time-precision-ms.gen.test strace--absolute-timestamps-format-time-precision-us.gen.test strace--absolute-timestamps-format-time-precision-ns.gen.test strace--absolute-timestamps-format-unix-precision-s.gen.test strace--absolute-timestamps-format-unix-precision-ms.gen.test strace--absolute-timestamps-format-unix-precision-us.gen.test strace--absolute-timestamps-format-unix-precision-ns.gen.test strace--follow-forks-output-separately.gen.test strace--relative-timestamps.gen.test strace--relative-timestamps-s.gen.test strace--relative-timestamps-ms.gen.test strace--relative-timestamps-us.gen.test strace--relative-timestamps-ns.gen.test strace--syscall-times.gen.test strace--syscall-times-s.gen.test strace--syscall-times-ms.gen.test strace--syscall-times-us.gen.test strace--syscall-times-ns.gen.test strace--strings-in-hex.gen.test strace--strings-in-hex-all.gen.test strace--strings-in-hex-non-ascii.gen.test strace--timestamps.gen.test strace--timestamps-time.gen.test strace--timestamps-time-s.gen.test strace--timestamps-time-ms.gen.test strace--timestamps-time-us.gen.test strace--timestamps-time-ns.gen.test strace--timestamps-unix-s.gen.test strace--timestamps-unix-ms.gen.test strace--timestamps-unix-us.gen.test strace--timestamps-unix-ns.gen.test strace-n.gen.test strace-x.gen.test strace-xx.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 tgkill.gen.test tgkill--pidns-translation.gen.test threads-execve--quiet-thread-execve.gen.test threads-execve-q.gen.test threads-execve-qq.gen.test threads-execve-qqq.gen.test time.gen.test timer_create.gen.test timer_xettime.gen.test timerfd_xettime.gen.test times.gen.test times-fail.gen.test tkill.gen.test tkill--pidns-translation.gen.test trace_clock.gen.test trace_creds.gen.test trace_fstat.gen.test trace_fstatfs.gen.test trace_lstat.gen.test trace_personality_32.gen.test trace_personality_64.gen.test trace_personality_regex_32.gen.test trace_personality_regex_64.gen.test trace_personality_regex_x32.gen.test trace_personality_x32.gen.test trace_question.gen.test trace_stat.gen.test trace_stat_like.gen.test trace_statfs.gen.test trace_statfs_like.gen.test trie_test.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 umovestr_cached_adjacent.gen.test unlink.gen.test unlinkat.gen.test unshare.gen.test userfaultfd.gen.test ustat.gen.test utime.gen.test utimensat.gen.test utimensat-Xabbrev.gen.test utimensat-Xraw.gen.test utimensat-Xverbose.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 xet_robust_list--pidns-translation.gen.test xetitimer.gen.test xetpgid.gen.test xetpgid--pidns-translation.gen.test xetpriority.gen.test xetpriority--pidns-translation.gen.test xettimeofday.gen.test
 
 $(srcdir)/_newselect.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
@@ -79,6 +79,63 @@ $(srcdir)/clock_nanosleep.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tes
 $(srcdir)/clock_xettime.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/clone3.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone3-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone3-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone3-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone3-success-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone3-success-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone3-success-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone_parent.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone_parent--quiet-exit.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone_parent-q.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone_parent-qq.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone_ptrace--quiet-attach.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone_ptrace--quiet-exit.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone_ptrace-q.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone_ptrace-qq.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/close_range.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/close_range-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/close_range-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/close_range-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/copy_file_range.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -88,18 +145,54 @@ $(srcdir)/creat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/delete_module.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/dev--decode-fds-dev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dev--decode-fds-path.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dev--decode-fds-socket.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/dev-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
 $(srcdir)/dup.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/dup-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dup-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dup-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/dup2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/dup2-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dup2-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dup2-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/dup3.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/dup3-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dup3-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dup3-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/epoll_create.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -124,7 +217,22 @@ $(srcdir)/execveat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/execveat-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
-$(srcdir)/faccessat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+$(srcdir)/faccessat-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat2-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat2-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat2-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
 $(srcdir)/fadvise64_64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
@@ -169,9 +277,15 @@ $(srcdir)/fchownat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/fcntl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/fcntl--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/fcntl64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/fcntl64--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/fdatasync.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -181,6 +295,12 @@ $(srcdir)/file_handle.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.i
 $(srcdir)/file_ioctl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/filter_seccomp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/filter_seccomp-flag.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/finit_module.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -190,6 +310,24 @@ $(srcdir)/flock.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/fork-f.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/fsconfig.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/fsconfig-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/fsmount.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/fsopen.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/fspick.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/fspick-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/fstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -250,27 +388,51 @@ $(srcdir)/getcwd.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/getdents.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getdents-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getdents64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getdents64-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getegid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getegid-creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getegid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getegid32-creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/geteuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/geteuid-creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/geteuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/geteuid32-creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getgid-creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getgid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getgid32-creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getgroups.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -283,9 +445,15 @@ $(srcdir)/getpeername.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.i
 $(srcdir)/getpgrp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getpgrp--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getpid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getpid--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getppid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -313,16 +481,31 @@ $(srcdir)/getrusage.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/getsid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getsid--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getsockname.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
 $(srcdir)/gettid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getuid-creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
-$(srcdir)/getxxid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+$(srcdir)/getuid32-creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/getxgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/getxpid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/getxuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
 $(srcdir)/group_req.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
@@ -337,9 +520,15 @@ $(srcdir)/init_module.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.i
 $(srcdir)/inotify.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/inotify_init.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/inotify_init1.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/inotify_init1-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/io_uring_enter.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -361,9 +550,96 @@ $(srcdir)/ioctl_dm-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/ioctl_evdev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_evdev-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_evdev-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_evdev-v-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-v-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-v-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-success-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-success-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-success-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-success-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-success-v-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-success-v-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-success-v-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-v-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-v-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-v-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-success.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-success-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-success-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-success-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-success-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-success-v-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-success-v-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-success-v-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_inotify.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -397,6 +673,9 @@ $(srcdir)/ioctl_nsfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/ioctl_perf.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_perf-success.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_ptp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -421,12 +700,63 @@ $(srcdir)/ioctl_sg_io_v4.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_test
 $(srcdir)/ioctl_sock_gifconf.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_tee.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_uffdio.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
 $(srcdir)/ioctl_v4l2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_v4l2-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-v-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-v-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-v-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-success.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-success-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-success-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-success-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-success-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-success-v-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-success-v-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-success-v-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_watchdog.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/ioperm.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -436,6 +766,9 @@ $(srcdir)/iopl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/ioprio.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/ioprio--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/ioprio-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -502,6 +835,9 @@ $(srcdir)/kcmp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/kcmp-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/kcmp-y--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/kern_features.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -538,6 +874,12 @@ $(srcdir)/keyctl-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tes
 $(srcdir)/kill.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/kill--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ksysent.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/lchown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -562,9 +904,24 @@ $(srcdir)/lstat64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/madvise.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/maybe_switch_current_tcp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/maybe_switch_current_tcp--quiet-thread-execve.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/mbind.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/mbind-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/mbind-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/mbind-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/membarrier.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -583,6 +940,9 @@ $(srcdir)/memfd_create-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/g
 $(srcdir)/migrate_pages.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/migrate_pages--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/mincore.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -655,6 +1015,12 @@ $(srcdir)/mount-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/mount-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/move_mount.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/move_mount-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/move_pages.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -667,6 +1033,9 @@ $(srcdir)/move_pages-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tes
 $(srcdir)/move_pages-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/move_pages--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/mq.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -694,6 +1063,18 @@ $(srcdir)/munlockall.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/nanosleep.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/net--decode-fds-dev-netlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/net--decode-fds-none-netlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/net--decode-fds-path-netlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/net--decode-fds-socket-netlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/net-icmp_filter.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -712,6 +1093,9 @@ $(srcdir)/net-packet_mreq-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir
 $(srcdir)/net-sockaddr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/net-sockaddr--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/net-tpacket_req.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -823,6 +1207,9 @@ $(srcdir)/nlattr_ifla_port.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_te
 $(srcdir)/nlattr_ifla_xdp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/nlattr_ifla_xdp-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/nlattr_inet_diag_msg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -922,9 +1309,45 @@ $(srcdir)/oldstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/open.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/open_tree.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/open_tree-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/openat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/openat2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-v-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-v-y-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-v-y-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-v-y-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/orphaned_process_group.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -952,9 +1375,45 @@ $(srcdir)/personality-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_te
 $(srcdir)/personality-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/pidfd_getfd.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_getfd-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_getfd-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_open.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_open--decode-fd-path.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_open--decode-fd-pidfd.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_open--decode-fd-socket.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_open-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_open-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_open-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_open--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/pidfd_send_signal.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/pidfd_send_signal--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/pipe2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -1021,12 +1480,21 @@ $(srcdir)/printstrn-umoven-undumpable.gen.test: $(abs_srcdir)/gen_tests.sh $(src
 $(srcdir)/prlimit64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/prlimit64--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/process_vm_readv.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/process_vm_readv--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/process_vm_writev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/process_vm_writev--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/pselect6.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -1078,9 +1546,15 @@ $(srcdir)/readlinkat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/reboot.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/recv-MSG_TRUNC.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/recvfrom.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/recvfrom-MSG_TRUNC.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/recvmmsg-timeout.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -1129,6 +1603,9 @@ $(srcdir)/rt_sigprocmask.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_test
 $(srcdir)/rt_sigqueueinfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/rt_sigqueueinfo--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/rt_sigreturn.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -1141,6 +1618,9 @@ $(srcdir)/rt_sigtimedwait.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tes
 $(srcdir)/rt_tgsigqueueinfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/rt_tgsigqueueinfo--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/s390_guarded_storage.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -1171,15 +1651,27 @@ $(srcdir)/sched_rr_get_interval.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/g
 $(srcdir)/sched_xetaffinity.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/sched_xetaffinity--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/sched_xetattr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/sched_xetattr--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/sched_xetparam.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/sched_xetparam--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/sched_xetscheduler.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/sched_xetscheduler--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/sched_yield.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -1201,6 +1693,12 @@ $(srcdir)/select-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/semop.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/semop-indirect.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/semtimedop.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/sendfile.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -1210,6 +1708,15 @@ $(srcdir)/sendfile64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/set_mempolicy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/set_mempolicy-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/set_mempolicy-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/set_mempolicy-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/setdomainname.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -1303,6 +1810,9 @@ $(srcdir)/signal.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/signal_receive.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/signal_receive--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/signalfd4.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -1336,6 +1846,9 @@ $(srcdir)/so_peercred-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_te
 $(srcdir)/so_peercred-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/so_peercred--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/sock_filter-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -1381,9 +1894,147 @@ $(srcdir)/statfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/statfs64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/status-all.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/status-failed.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/status-failed-long.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/status-failed-status.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/status-none.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/status-successful.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/status-successful-long.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/status-successful-status.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/status-unfinished.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/statx.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/strace--absolute-timestamps.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-time.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-time-precision-s.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-time-precision-ms.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-time-precision-us.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-time-precision-ns.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-unix-precision-s.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-unix-precision-ms.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-unix-precision-us.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-unix-precision-ns.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--follow-forks-output-separately.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--relative-timestamps.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--relative-timestamps-s.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--relative-timestamps-ms.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--relative-timestamps-us.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--relative-timestamps-ns.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--syscall-times.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--syscall-times-s.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--syscall-times-ms.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--syscall-times-us.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--syscall-times-ns.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--strings-in-hex.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--strings-in-hex-all.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--strings-in-hex-non-ascii.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-time.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-time-s.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-time-ms.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-time-us.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-time-ns.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-unix-s.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-unix-ms.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-unix-us.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-unix-ns.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace-n.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace-x.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace-xx.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/swap.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -1414,6 +2065,24 @@ $(srcdir)/syslog.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/tee.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/tgkill.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/tgkill--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/threads-execve--quiet-thread-execve.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/threads-execve-q.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/threads-execve-qq.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/threads-execve-qqq.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/time.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -1432,6 +2101,18 @@ $(srcdir)/times.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/times-fail.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/tkill.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/tkill--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_clock.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/trace_fstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -1474,6 +2155,9 @@ $(srcdir)/trace_statfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.
 $(srcdir)/trace_statfs_like.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/trie_test.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/truncate.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -1495,6 +2179,9 @@ $(srcdir)/umovestr-illptr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tes
 $(srcdir)/umovestr3.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/umovestr_cached_adjacent.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/unlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -1561,14 +2248,23 @@ $(srcdir)/xattr-strings.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests
 $(srcdir)/xet_robust_list.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/xet_robust_list--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/xetitimer.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
 $(srcdir)/xetpgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/xetpgid--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/xetpriority.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/xetpriority--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/xettimeofday.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
index 487b9608a20f13c0758c4f99bf8d974b54c42990..359462a1d01d6a125e3e95512daae279101a7482 100644 (file)
@@ -1,6 +1,6 @@
 # Input for gen_tests.sh
 #
-# Copyright (c) 2017-2019 The strace developers.
+# Copyright (c) 2017-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -9,7 +9,7 @@ _newselect
 _newselect-P    -e trace=_newselect -P /dev/full 9>>/dev/full
 accept -a22
 accept4        -a37
-access -a30 -access_sample
+access -a30 --trace-path=access_sample
 acct   -a20
 add_key        -a30 -s12
 adjtimex       -a15
@@ -31,13 +31,44 @@ clock       test_trace_expr 'times|fcntl.*' -e/clock
 clock_adjtime  -a37
 clock_nanosleep        -e trace=clock_nanosleep,clock_gettime
 clock_xettime  -a36 -e trace=clock_getres,clock_gettime,clock_settime
+clone3 -a16
+clone3-Xabbrev -a16 -Xabbrev  -e trace=clone3
+clone3-Xraw    -a16 -Xraw     -e trace=clone3
+clone3-Xverbose        -a16 -Xverbose -e trace=clone3
+clone3-success-Xabbrev +clone3-success.test -a16 -Xabbrev
+clone3-success-Xraw    +clone3-success.test -a16 -Xraw
+clone3-success-Xverbose        +clone3-success.test -a16 -Xverbose
+clone_parent +clone_ptrace.test
+clone_parent--quiet-exit +clone_ptrace.test --quiet=exit,personality
+clone_parent-q +clone_ptrace.test -q
+clone_parent-qq +clone_ptrace.test -qq
+clone_ptrace--quiet-attach +clone_ptrace.test --quiet=attach,personality
+clone_ptrace--quiet-exit +clone_ptrace.test --quiet=exit,personality
+clone_ptrace-q +clone_ptrace.test -q
+clone_ptrace-qq +clone_ptrace.test -qq
+close_range    -a21 7>>/dev/full
+close_range-P  -a21 --trace=close_range -P /dev/full 7>>/dev/full
+close_range-y  -a33 --trace=close_range -y 7>>/dev/full
+close_range-yy -a33 --trace=close_range -yy 7>>/dev/full
 copy_file_range
 creat  -a20
 delete_module  -a23
+dev--decode-fds-dev    -a30 -e trace=openat,fsync -P "/dev/full" -P "/dev/zero" -P "/dev/sda" -e decode-fds=dev
+dev--decode-fds-path   -a19 -e trace=openat,fsync -P "/dev/full" -P "/dev/zero" -P "/dev/sda" -e decode-fds=path
+dev--decode-fds-socket -a19 -e trace=openat,fsync -P "/dev/full" -P "/dev/zero" -P "/dev/sda" --decode-fds=socket
 dev-yy -a30 -e trace=openat,fsync -P "/dev/full" -P "/dev/zero" -P "/dev/sda" -yy
-dup    -a8
-dup2   -a13
-dup3   -a24
+dup    -a7 9>>/dev/full
+dup-P  -a7 --trace=dup -P /dev/full 9>>/dev/full
+dup-y  -a8 --trace=dup -y 9>>/dev/full
+dup-yy -a8 --trace=dup -yy 9>>/dev/full
+dup2   -a11 9>>/dev/full
+dup2-P -a11 --trace=dup2 -P /dev/full 9>>/dev/full
+dup2-y -a13 --trace=dup2 -y 9>>/dev/full
+dup2-yy        -a13 --trace=dup2 -yy 9>>/dev/full
+dup3   -a13 7>>/dev/full
+dup3-P -a13 --trace=dup3 -P /dev/full 7>>/dev/full
+dup3-y -a15 --trace=dup3 -y 7>>/dev/full
+dup3-yy        -a15 --trace=dup3 -yy 7>>/dev/full
 epoll_create   -a17
 epoll_create1  -a28
 epoll_ctl
@@ -46,7 +77,12 @@ epoll_wait   -a26
 erestartsys    -a34 -e signal=none -e trace=recvfrom
 execveat
 execveat-v     -v -e trace=execveat
-faccessat      -P $NAME.sample
+faccessat-P    -a23 --trace=faccessat -P /dev/full
+faccessat-y    +faccessat.test -a24 -y
+faccessat-yy   +faccessat.test -a24 -yy
+faccessat2-P   -a27 --trace=faccessat2 -P /dev/full
+faccessat2-y   +faccessat2.test -a28 -y
+faccessat2-yy  +faccessat2.test -a28 -yy
 fadvise64_64   +fadvise64.test
 fallocate      -a18
 fanotify_init
@@ -61,13 +97,23 @@ fchown      -a16
 fchown32       -a18
 fchownat
 fcntl  -a8
+fcntl--pidns-translation       test_pidns -a8 -e trace=fcntl
 fcntl64        -a8
+fcntl64--pidns-translation     test_pidns -a8 -e trace=fcntl64
 fdatasync      -a14
 file_handle    -e trace=name_to_handle_at,open_by_handle_at
 file_ioctl     +ioctl.test
+filter_seccomp . "${srcdir=.}/filter_seccomp.sh"; test_prog_set --seccomp-bpf -f
+filter_seccomp-flag    ../$NAME
 finit_module   -a25
 flock  -a19
 fork-f -a26 -qq -f -e signal=none -e trace=chdir
+fsconfig       -s300 -y
+fsconfig-P     -s300 -y -P /dev/full -e trace=fsconfig
+fsmount        -a18 -y
+fsopen -a35
+fspick -a27 -y
+fspick-P       -a27 -y -P /dev/full -e trace=fspick
 fstat  -a15 -v -P stat.sample
 fstat-Xabbrev -a15 -v -Xabbrev -P stat.sample -e trace=fstat
 fstat-Xraw -a15 -v -Xraw -P stat.sample -e trace=fstat
@@ -76,7 +122,7 @@ fstat64      -a17 -v -P stat.sample
 fstat64-Xabbrev -a17 -Xabbrev -v -P stat.sample -e trace=fstat64
 fstat64-Xraw -a17 -Xraw -v -P stat.sample -e trace=fstat64
 fstat64-Xverbose -a17 -Xverbose -v -P stat.sample -e trace=fstat64
-fstatat64      -a32 -v -P stat.sample -P /dev/full
+fstatat64      -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full
 fstatfs        -a18
 fstatfs64      -a24
 fsync  -a10
@@ -87,19 +133,29 @@ futimesat  -a28
 get_mempolicy  -s3 -a38
 getcpu -a25
 getcwd -a18
-getdents       -a22 -v
-getdents64     -a24 -v
+getdents       -a31
+getdents-v     -a22 -v --trace=getdents
+getdents64     -a33
+getdents64-v   -a24 -v --trace=getdents64
 getegid        +getuid.test
+getegid-creds  +getuid.test
 getegid32      +getuid.test
+getegid32-creds        +getuid.test
 geteuid        +getuid.test
+geteuid-creds  +getuid.test
 geteuid32      +getuid.test
+geteuid32-creds        +getuid.test
 getgid +getuid.test
+getgid-creds   +getuid.test
 getgid32       +getuid.test
+getgid32-creds +getuid.test
 getgroups      -a17
 getgroups32    -a19
 getpeername    -a27
 getpgrp        -a10
+getpgrp--pidns-translation     test_pidns -e trace=getpgrp -a10
 getpid -a9
+getpid--pidns-translation      test_pidns -e trace=getpid -a9
 getppid        -a10
 getrandom      -a32 -s3
 getresgid      -a25
@@ -109,23 +165,59 @@ getresuid32       -a27
 getrlimit      -a27
 getrusage      -v
 getsid -a10
+getsid--pidns-translation      test_pidns -e trace=getsid -a10
 getsockname    -a27
 gettid -a9
+getuid-creds   +getuid.test
 getuid32       +getuid.test
-getxxid        -a10 -e trace=getxpid,getxuid,getxgid
+getuid32-creds +getuid.test
+getxgid        -a10
+getxpid        -a10
+getxuid        -a10
 group_req      -e trace=setsockopt
 inet-cmsg      -e trace=recvmsg
 init_module    -a27
 inotify        -a23 -e trace=inotify_add_watch,inotify_rm_watch
+inotify_init   -a15
 inotify_init1  -a27
+inotify_init1-y        -a27 -y -e trace=inotify_init1
 io_uring_enter -y
 io_uring_register      -y
 io_uring_setup -a26 -y
 ioctl_block    +ioctl.test
 ioctl_dm       +ioctl.test -s9
 ioctl_dm-v     +ioctl.test -v -s9
-ioctl_evdev    +ioctl.test
-ioctl_evdev-v  +ioctl.test -v
+ioctl_evdev    +ioctl.test -a26
+ioctl_evdev-Xabbrev    +ioctl.test -a26 -Xabbrev
+ioctl_evdev-Xraw       +ioctl.test -a28 -Xraw
+ioctl_evdev-Xverbose   +ioctl.test -a41 -Xverbose
+ioctl_evdev-v  +ioctl.test -a26 -v
+ioctl_evdev-v-Xabbrev  +ioctl.test -a26 -v -Xabbrev
+ioctl_evdev-v-Xraw     +ioctl.test -a28 -v -Xraw
+ioctl_evdev-v-Xverbose +ioctl.test -a41 -v -Xverbose
+ioctl_evdev-success-Xabbrev    +ioctl_evdev-success.test -Xabbrev
+ioctl_evdev-success-Xraw       +ioctl_evdev-success.test -a27 -Xraw
+ioctl_evdev-success-Xverbose   +ioctl_evdev-success.test -a43 -Xverbose
+ioctl_evdev-success-v  +ioctl_evdev-success.test -a26 -v
+ioctl_evdev-success-v-Xabbrev  +ioctl_evdev-success.test -v -Xabbrev
+ioctl_evdev-success-v-Xraw     +ioctl_evdev-success.test -a27 -v -Xraw
+ioctl_evdev-success-v-Xverbose +ioctl_evdev-success.test -a43 -v -Xverbose
+ioctl_hdio     +ioctl.test -a27
+ioctl_hdio-Xabbrev     +ioctl.test -a27 -Xabbrev
+ioctl_hdio-Xraw        +ioctl.test -a20 -Xraw
+ioctl_hdio-Xverbose    +ioctl.test -a39 -Xverbose
+ioctl_hdio-v   +ioctl.test -a27 -v
+ioctl_hdio-v-Xabbrev   +ioctl.test -a27 -v -Xabbrev
+ioctl_hdio-v-Xraw      +ioctl.test -a20 -v -Xraw
+ioctl_hdio-v-Xverbose  +ioctl.test -a39 -v -Xverbose
+ioctl_hdio-success     +ioctl-success.sh -a27
+ioctl_hdio-success-Xabbrev     +ioctl-success.sh -a27 -Xabbrev
+ioctl_hdio-success-Xraw        +ioctl-success.sh -a20 -Xraw
+ioctl_hdio-success-Xverbose    +ioctl-success.sh -a39 -Xverbose
+ioctl_hdio-success-v   +ioctl-success.sh -a27 -v
+ioctl_hdio-success-v-Xabbrev   +ioctl-success.sh -a27 -v -Xabbrev
+ioctl_hdio-success-v-Xraw      +ioctl-success.sh -a20 -v -Xraw
+ioctl_hdio-success-v-Xverbose  +ioctl-success.sh -a39 -v -Xverbose
 ioctl_inotify  +ioctl.test
 ioctl_kvm_run  +ioctl.test -a36 -y
 ioctl_kvm_run-v        +ioctl.test -v -a36 -y
@@ -137,6 +229,7 @@ ioctl_mtd   +ioctl.test
 ioctl_nbd      +ioctl.test -y
 ioctl_nsfs     +ioctl.test -esignal=none
 ioctl_perf     +ioctl.test
+ioctl_perf-success +ioctl-success.sh -a35
 ioctl_ptp      +ioctl.test
 ioctl_random   +ioctl.test
 ioctl_rtc      +ioctl.test
@@ -145,11 +238,29 @@ ioctl_scsi        +ioctl.test
 ioctl_sg_io_v3 +ioctl.test
 ioctl_sg_io_v4 +ioctl.test
 ioctl_sock_gifconf     +ioctl.test -a28 -s1
+ioctl_tee      +ioctl.test
 ioctl_uffdio   +ioctl.test
 ioctl_v4l2     +ioctl.test
+ioctl_v4l2-Xabbrev     +ioctl.test -Xabbrev
+ioctl_v4l2-Xraw        +ioctl.test -Xraw
+ioctl_v4l2-Xverbose    +ioctl.test -Xverbose
+ioctl_v4l2-v   +ioctl.test -v
+ioctl_v4l2-v-Xabbrev   +ioctl.test -v -Xabbrev
+ioctl_v4l2-v-Xraw      +ioctl.test -v -Xraw
+ioctl_v4l2-v-Xverbose  +ioctl.test -v -Xverbose
+ioctl_v4l2-success     +ioctl-success.sh -a29
+ioctl_v4l2-success-Xabbrev     +ioctl-success.sh -a29 -Xabbrev
+ioctl_v4l2-success-Xraw        +ioctl-success.sh -a27 -Xraw
+ioctl_v4l2-success-Xverbose    +ioctl-success.sh -a30 -Xverbose
+ioctl_v4l2-success-v   +ioctl-success.sh -a29 -v
+ioctl_v4l2-success-v-Xabbrev   +ioctl-success.sh -a29 -v -Xabbrev
+ioctl_v4l2-success-v-Xraw      +ioctl-success.sh -a27 -v -Xraw
+ioctl_v4l2-success-v-Xverbose  +ioctl-success.sh -a29 -v -Xverbose
+ioctl_watchdog +ioctl.test
 ioperm -a27
 iopl   -a8
 ioprio -a18 -e trace=ioprio_get,ioprio_set
+ioprio--pidns-translation      test_pidns -a18 -e trace=ioprio_get,ioprio_set
 ioprio-Xabbrev -a18 -e trace=ioprio_get,ioprio_set -Xabbrev
 ioprio-Xraw    -a18 -e trace=ioprio_get,ioprio_set -Xraw
 ioprio-Xverbose        -a18 -e trace=ioprio_get,ioprio_set -Xverbose
@@ -160,18 +271,19 @@ ipc_msg-Xabbrev   +ipc.sh -Xabbrev -a26
 ipc_msg-Xraw   +ipc.sh -Xraw -a16
 ipc_msg-Xverbose       +ipc.sh -Xverbose -a34
 ipc_msgbuf-Xabbrev     +ipc_msgbuf.test -Xabbrev
-ipc_msgbuf-Xraw        +ipc_msgbuf.test -Xraw -a22
+ipc_msgbuf-Xraw        +ipc_msgbuf.test -Xraw -a19
 ipc_msgbuf-Xverbose    +ipc_msgbuf.test -Xverbose
 ipc_sem        +ipc.sh -a29
 ipc_sem-Xabbrev        +ipc.sh -Xabbrev -a29
 ipc_sem-Xraw   +ipc.sh -Xraw -a19
 ipc_sem-Xverbose       +ipc.sh -Xverbose -a36
-ipc_shm        +ipc.sh -a29
-ipc_shm-Xabbrev        +ipc.sh -Xabbrev -a29
+ipc_shm        +ipc.sh -a26
+ipc_shm-Xabbrev        +ipc.sh -Xabbrev -a26
 ipc_shm-Xraw   +ipc.sh -Xraw -a19
-ipc_shm-Xverbose       +ipc.sh -Xverbose -a36
+ipc_shm-Xverbose       +ipc.sh -Xverbose -a34
 kcmp   -a22
 kcmp-y -a22 -y -e trace=kcmp
+kcmp-y--pidns-translation      test_pidns -a22 -y -e trace=kcmp
 kern_features -a16
 kernel_version -a16 -v -e trace=bpf
 kernel_version-Xabbrev -a16 -Xabbrev -v -e trace=bpf
@@ -184,21 +296,29 @@ keyctl-Xabbrev    -a31 -s10 -e trace=keyctl -Xabbrev
 keyctl-Xraw    -a13 -s10 -e trace=keyctl -Xraw
 keyctl-Xverbose        -a41 -s10 -e trace=keyctl -Xverbose
 kill   -a12 -esignal=none
+kill--pidns-translation        test_pidns -a12 -e trace=kill -esignal=none
+ksysent        ../$NAME
 lchown -a30
 lchown32       -a32
 link
 linkat
 lookup_dcookie -a27
-lstat  -a32 -v -P stat.sample -P /dev/full
-lstat64        -a32 -v -P stat.sample -P /dev/full
+lstat  -a31 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full
+lstat64        -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full
 madvise        -a33
+maybe_switch_current_tcp       -a30 -f -e trace=execveat
+maybe_switch_current_tcp--quiet-thread-execve  -a30 -s48 -f -e trace=execveat --quiet=personality,thread-execve
 mbind
+mbind-Xabbrev  -Xabbrev -e trace=mbind
+mbind-Xraw     -a33 -Xraw -e trace=mbind
+mbind-Xverbose -Xverbose -e trace=mbind
 membarrier     -a36
 memfd_create
 memfd_create-Xabbrev   -Xabbrev -e trace=memfd_create
 memfd_create-Xraw      -a30 -Xraw -e trace=memfd_create
 memfd_create-Xverbose  -Xverbose -e trace=memfd_create
 migrate_pages  -a33
+migrate_pages--pidns-translation       test_pidns -a33 -e trace=migrate_pages
 mincore        -a22
 mkdir  -a20
 mkdirat        -a28
@@ -223,10 +343,13 @@ mount             -a33
 mount-Xabbrev  -a33 -e trace=mount -Xabbrev
 mount-Xraw     -a33 -e trace=mount -Xraw
 mount-Xverbose -a33 -e trace=mount -Xverbose
+move_mount     -y
+move_mount-P   -y -P /dev/full -e trace=move_mount
 move_pages     -s3
 move_pages-Xabbrev     -s3 -e trace=move_pages -Xabbrev
 move_pages-Xraw        -s3 -a36 -e trace=move_pages -Xraw
 move_pages-Xverbose    -s3 -e trace=move_pages -Xverbose
+move_pages--pidns-translation  test_pidns -s3 -e trace=move_pages
 mq     -a32 -e trace=mq_getsetattr,mq_open,mq_unlink
 mq_sendrecv    -a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink
 mq_sendrecv-read       -eread=0 -a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink
@@ -236,12 +359,17 @@ msg_control-v     -v -a21 -e trace=sendmsg
 msg_name       -a20 -e trace=recvmsg
 munlockall     -a13
 nanosleep      -a20
+net--decode-fds-dev-netlink    +net-yy-netlink.test --decode-fds=dev
+net--decode-fds-none-netlink   +net-yy-netlink.test --decode-fds=none -a9
+net--decode-fds-path-netlink   +net-yy-netlink.test --decode-fds=path
+net--decode-fds-socket-netlink +net-yy-netlink.test --decode-fds=socket
 net-icmp_filter        -e trace=getsockopt,setsockopt
 net-packet_mreq -e trace=setsockopt
 net-packet_mreq-Xabbrev        -e trace=setsockopt -Xabbrev
 net-packet_mreq-Xraw   -e trace=setsockopt -Xraw
 net-packet_mreq-Xverbose       -e trace=setsockopt -Xverbose
 net-sockaddr   -a24 -e trace=connect
+net-sockaddr--pidns-translation        test_pidns -a24 -e trace=connect
 net-tpacket_req -e trace=setsockopt
 net-tpacket_stats -e trace=getsockopt
 net-yy-inet6   +net-yy-inet.test
@@ -254,7 +382,7 @@ netlink_protocol    -e trace=sendto
 netlink_route  +netlink_sock_diag.test
 netlink_selinux        +netlink_sock_diag.test
 netlink_xfrm   +netlink_sock_diag.test
-newfstatat     -a32 -v -P stat.sample -P /dev/full
+newfstatat     -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full
 nfnetlink_acct                 +netlink_sock_diag.test
 nfnetlink_cthelper             +netlink_sock_diag.test
 nfnetlink_ctnetlink            +netlink_sock_diag.test
@@ -279,6 +407,7 @@ nlattr_ifla_brport          +netlink_sock_diag.test
 nlattr_ifla_linkinfo           +netlink_sock_diag.test
 nlattr_ifla_port               +netlink_sock_diag.test
 nlattr_ifla_xdp                        +netlink_sock_diag.test
+nlattr_ifla_xdp-y              +netlink_sock_diag.test -y; exec 9</dev/full
 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
@@ -289,7 +418,7 @@ nlattr_ndtmsg                       +netlink_sock_diag.test
 nlattr_netconfmsg              +netlink_sock_diag.test
 nlattr_netlink_diag_msg                +netlink_sock_diag.test
 nlattr_nlmsgerr                        +netlink_sock_diag.test
-nlattr_packet_diag_msg         +netlink_sock_diag-v.sh
+nlattr_packet_diag_msg         +netlink_sock_diag.test -v
 nlattr_rtgenmsg                        +netlink_sock_diag.test
 nlattr_rtmsg                   +netlink_sock_diag.test
 nlattr_smc_diag_msg            +netlink_sock_diag.test
@@ -312,7 +441,19 @@ oldselect-efault   -a13 -e trace=select
 oldselect-efault-P     -a13 -e trace=select -P /dev/full 9>>/dev/full
 oldstat        -a32 -v -P stat.sample -P /dev/full
 open   -a30 -P $NAME.sample
+open_tree -a30 -y
+open_tree-P -a30 --decode-fds -P /dev/full -e trace=open_tree
 openat -a36 -P $NAME.sample
+openat2        -a35
+openat2-Xabbrev        --trace=openat2 -a35 -Xabbrev
+openat2-Xraw   --trace=openat2 -a32 -Xraw
+openat2-Xverbose       --trace=openat2 -a35 -Xverbose
+openat2-v      --trace=openat2 -a35 -v
+openat2-v-y    --trace=openat2 -a36 -v -y </dev/full
+openat2-v-y-Xabbrev    --trace=openat2 -a35 -v -y -Xabbrev </dev/full
+openat2-v-y-Xraw       --trace=openat2 -a32 -v -y -Xraw </dev/full
+openat2-v-y-Xverbose   --trace=openat2 -a44 -v -y -Xverbose </dev/full
+openat2-y      --trace=openat2 -a36 -y </dev/full
 orphaned_process_group . "${srcdir=.}/PTRACE_SEIZE.sh"; run_strace_match_diff -f -e trace=none -e signal='!chld'
 osf_utimes     -a21
 pause  -a8 -esignal=none
@@ -322,7 +463,19 @@ perf_event_open_unabbrev   -a1 -v -e trace=perf_event_open
 personality-Xabbrev    +personality.test -Xabbrev
 personality-Xraw       +personality.test -a15 -Xraw
 personality-Xverbose   +personality.test -Xverbose
+pidfd_getfd    -a18 -Xverbose -e signal=none </dev/full
+pidfd_getfd-y  --trace=pidfd_getfd -a18 -e signal=none -y </dev/full
+pidfd_getfd-yy --trace=pidfd_getfd -a18 -e signal=none -yy </dev/full
+pidfd_open     -a17
+pidfd_open--decode-fd-path     -a17 -e decode-fd=path -e trace=pidfd_open
+pidfd_open--decode-fd-pidfd    -a17 -e decode-fd=pidfd -e trace=pidfd_open
+pidfd_open--decode-fd-socket   -a17 -e decode-fd=socket -e trace=pidfd_open
+pidfd_open-P   -a17 -P /dev/full -e trace=pidfd_open
+pidfd_open-y   -a17 -y -e trace=pidfd_open
+pidfd_open-yy  -a17 -yy -e trace=pidfd_open
+pidfd_open--pidns-translation  test_pidns -a17 -e trace=pidfd_open
 pidfd_send_signal
+pidfd_send_signal--pidns-translation test_pidns -e trace=pidfd_send_signal
 pipe2  -a15
 pkey_alloc     -a17
 pkey_free      -a13
@@ -345,8 +498,11 @@ printstrn-umoven   -s4096 -e signal=none -e trace=add_key
 printstrn-umoven-peekdata      -e signal=none -e trace=add_key
 printstrn-umoven-undumpable    -e signal=none -e trace=add_key
 prlimit64
+prlimit64--pidns-translation     test_pidns -e trace=prlimit64
 process_vm_readv       -s5 -a37
+process_vm_readv--pidns-translation    test_pidns -s5 -a37 -e trace=process_vm_readv
 process_vm_writev      -s5 -a38
+process_vm_writev--pidns-translation   test_pidns -s5 -a38 -e trace=process_vm_writev
 pselect6
 ptrace -a23 -e signal=none
 ptrace_syscall_info    -a35 -e signal=none -e trace=ptrace
@@ -364,7 +520,9 @@ readdir     -a16
 readlink       -xx
 readlinkat     -xx
 reboot         -s 256
+recv-MSG_TRUNC -a26 -e trace=recv
 recvfrom       -a35
+recvfrom-MSG_TRUNC     -e trace=recvfrom
 recvmmsg-timeout       -a25 -e trace=recvmmsg
 recvmsg        -eread=0 -ewrite=1 -e trace=recvmsg,sendmsg
 regex  test_trace_expr '' -etrace='/^(.*_)?statv?fs'
@@ -381,10 +539,12 @@ rmdir     -a22
 rt_sigpending  -a20
 rt_sigprocmask
 rt_sigqueueinfo        -esignal=none
+rt_sigqueueinfo--pidns-translation     test_pidns -esignal=none -e trace=rt_sigqueueinfo
 rt_sigreturn   -esignal='!USR1'
 rt_sigsuspend  -a20 -esignal=none
 rt_sigtimedwait        -a38
 rt_tgsigqueueinfo      -esignal=none
+rt_tgsigqueueinfo--pidns-translation   test_pidns -esignal=none -e trace=rt_tgsigqueueinfo
 s390_guarded_storage   -a32
 s390_guarded_storage-v -e trace=s390_guarded_storage -a32 -v
 s390_pci_mmio_read_write       -e trace=s390_pci_mmio_read,s390_pci_mmio_write -a30
@@ -395,19 +555,28 @@ sched     test_trace_expr times -e/sched
 sched_get_priority_mxx -a33 -e trace=sched_get_priority_min,sched_get_priority_max
 sched_rr_get_interval  -a31
 sched_xetaffinity      -a28 -e trace=sched_getaffinity,sched_setaffinity
+sched_xetaffinity--pidns-translation   test_pidns -a28 -e trace=sched_getaffinity,sched_setaffinity
 sched_xetattr  -a29 -e trace=sched_getattr,sched_setattr
+sched_xetattr--pidns-translation       test_pidns -a29 -e trace=sched_getattr,sched_setattr
 sched_xetparam -a23 -e trace=sched_getparam,sched_setparam
+sched_xetparam--pidns-translation      test_pidns -a23 -e trace=sched_getparam,sched_setparam
 sched_xetscheduler     -a22 -e trace=sched_getscheduler,sched_setscheduler
+sched_xetscheduler--pidns-translation  test_pidns -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
 select-P       -a36 -e trace=select -P /dev/full 9>>/dev/full
-semop  -a32 -e trace=semop,semtimedop
+semop  -a32
+semop-indirect -a32 -e trace=semop
+semtimedop
 sendfile       -a27
 sendfile64     -a29
-set_mempolicy  -s3 -a35
+set_mempolicy  -a34 -s3
+set_mempolicy-Xabbrev  -a34 -s3 -Xabbrev -e trace=set_mempolicy
+set_mempolicy-Xraw     -a24 -s3 -Xraw -e trace=set_mempolicy
+set_mempolicy-Xverbose -s3 -Xverbose -e trace=set_mempolicy
 setdomainname  -a24
 setfsgid       -a12
 setfsgid32     -a14
@@ -439,6 +608,7 @@ sigaction   -a31
 siginfo        -e trace=none
 signal -a25 -e signal=none -e trace='/^signal$'
 signal_receive -a16 -e trace=kill
+signal_receive--pidns-translation      test_pidns -a16 -e trace=kill
 signalfd4
 sigpending     -a15
 sigprocmask    -a34
@@ -450,6 +620,7 @@ so_peercred -e trace=getsockopt
 so_peercred-Xabbrev    -e trace=getsockopt -Xabbrev
 so_peercred-Xraw       -e trace=getsockopt -Xraw -a39
 so_peercred-Xverbose   -e trace=getsockopt -Xverbose
+so_peercred--pidns-translation test_pidns -e trace=getsockopt
 sock_filter-v  -v -e trace=getsockopt,setsockopt
 sock_filter-v-Xabbrev  -v -e trace=getsockopt,setsockopt -X abbrev
 sock_filter-v-Xraw     -a 37 -v -e trace=getsockopt,setsockopt -X raw
@@ -461,11 +632,57 @@ socketcall        -a20
 sockopt-sol_netlink    -e trace=getsockopt,setsockopt
 sockopt-timestamp      -e trace=recvmsg
 splice
-stat   -a32 -v -P stat.sample -P /dev/full
-stat64 -a32 -v -P stat.sample -P /dev/full
+stat   -a30 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full
+stat64 -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full
 statfs -a17
 statfs64       -a23
-statx  -a32 -v -P stat.sample -P /dev/full
+status-all     -a10 -e trace=chdir --status=detached,failed,successful,unavailable,unfinished
+status-failed  -a10 -e trace=chdir -Z
+status-failed-long     -a10 -e trace=chdir --failed-only
+status-failed-status   -a10 -e trace=chdir -e status=failed
+status-none    -e trace=all --status=none
+status-successful      -a10 -e trace=chdir -z
+status-successful-long -a10 -e trace=chdir --successful-only
+status-successful-status       -a10 -e trace=chdir --status=successful
+status-unfinished      -a10 -e trace=all --status=unfinished
+statx  -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full
+strace--absolute-timestamps +strace-t.test --absolute-timestamps
+strace--absolute-timestamps-format-time +strace-t.test --absolute-timestamps=format:time
+strace--absolute-timestamps-format-time-precision-s +strace-t.test --absolute-timestamps=format:time --absolute-timestamps=precision:s
+strace--absolute-timestamps-format-time-precision-ms +strace-tt.test 3 --absolute-timestamps=format:time --absolute-timestamps=precision:ms
+strace--absolute-timestamps-format-time-precision-us +strace-tt.test 6 --absolute-timestamps=format:time --absolute-timestamps=precision:us
+strace--absolute-timestamps-format-time-precision-ns +strace-tt.test 9 --absolute-timestamps=format:time --absolute-timestamps=precision:ns
+strace--absolute-timestamps-format-unix-precision-s +strace-ttt.test 0 --absolute-timestamps=format:unix --absolute-timestamps=precision:s
+strace--absolute-timestamps-format-unix-precision-ms +strace-ttt.test 3 --absolute-timestamps=precision:ms --absolute-timestamps=format:unix
+strace--absolute-timestamps-format-unix-precision-us +strace-ttt.test 6 --absolute-timestamps=precision:us --absolute-timestamps=format:unix
+strace--absolute-timestamps-format-unix-precision-ns +strace-ttt.test 9 --absolute-timestamps=format:unix --absolute-timestamps=precision:ns
+strace--follow-forks-output-separately +strace-ff.test --follow-forks --output-separately
+strace--relative-timestamps +strace-r.test --relative-timestamps
+strace--relative-timestamps-s +strace-r.test --relative-timestamps=s
+strace--relative-timestamps-ms +strace-r.test --relative-timestamps=ms
+strace--relative-timestamps-us +strace-r.test --relative-timestamps=us
+strace--relative-timestamps-ns +strace-r.test --relative-timestamps=ns
+strace--syscall-times +strace-T.test --syscall-times
+strace--syscall-times-s +strace-T.test --syscall-times=s
+strace--syscall-times-ms +strace-T.test --syscall-times=ms
+strace--syscall-times-us +strace-T.test --syscall-times=us
+strace--syscall-times-ns +strace-T.test --syscall-times=ns
+strace--strings-in-hex --trace=chdir --strings-in-hex --columns=18
+strace--strings-in-hex-all     --trace=chdir --strings-in-hex=all --columns=18
+strace--strings-in-hex-non-ascii       --trace=chdir --strings-in-hex=non-ascii --columns=12
+strace--timestamps +strace-t.test --timestamps
+strace--timestamps-time +strace-t.test --timestamps=time
+strace--timestamps-time-s +strace-t.test --timestamps=time,s
+strace--timestamps-time-ms +strace-tt.test 3 --timestamps=time,ms
+strace--timestamps-time-us +strace-tt.test 6 --timestamps=time,us
+strace--timestamps-time-ns +strace-tt.test 9 --timestamps=time,ns
+strace--timestamps-unix-s +strace-ttt.test 0 --timestamps=unix,s
+strace--timestamps-unix-ms +strace-ttt.test 3 --timestamps=unix,ms
+strace--timestamps-unix-us +strace-ttt.test 6 --timestamps=unix,us
+strace--timestamps-unix-ns +strace-ttt.test 9 --timestamps=unix,ns
+strace-n       -e trace=listen -n -qq -a 12
+strace-x       -e trace=chdir -x -a 12
+strace-xx      -e trace=chdir -xx -a 18
 swap   -a23 -e trace=swapon,swapoff
 sxetmask       -a11 -e trace=sgetmask,ssetmask
 symlink        -a34
@@ -474,14 +691,24 @@ sync      -a7
 sync_file_range
 sync_file_range2
 sysinfo        -a14
-syslog -a36
+syslog -a35
 tee
+tgkill -a15 --signal='!cont'
+tgkill--pidns-translation       test_pidns -a15 --signal='!cont' -e trace=tgkill
+threads-execve--quiet-thread-execve +threads-execve.test -s40 --quiet=personality,thread-execve
+threads-execve-q +threads-execve.test -q
+threads-execve-qq +threads-execve.test -qq
+threads-execve-qqq +threads-execve.test -qqq
 time   -a10
 timer_create
 timer_xettime  -e trace=timer_create,timer_settime,timer_gettime
 timerfd_xettime        -e trace=timerfd_create,timerfd_settime,timerfd_gettime
 times  -esignal=none
 times-fail     -a12 -e trace=times
+tkill  -a12 --signal='!cont'
+tkill--pidns-translation       test_pidns --signal='!cont' -a12 -e trace=tkill
+trace_clock    test_trace_expr 'clock_nanosleep|times' -e%clock
+trace_creds    test_trace_expr '([gs]et[^p]*([gu]id|groups)|caps|prctl|[fl]?chown|print(path-umovestr|strn-umoven)-undumpable|ptrace|quotactl|rt_sigtimedwait|rt_(tg)?sigqueueinfo).*' -e%creds
 trace_fstat    test_trace_expr '' -e%fstat -v -P stat.sample -P /dev/full
 trace_fstatfs  test_trace_expr '' -e%fstatfs
 trace_lstat    test_trace_expr '' -e%lstat -v -P stat.sample -P /dev/full
@@ -496,6 +723,7 @@ trace_stat  test_trace_expr '' -e%stat -v -P stat.sample -P /dev/full
 trace_stat_like        test_trace_expr '' -e%%stat -v -P stat.sample -P /dev/full
 trace_statfs   test_trace_expr '' -e%statfs
 trace_statfs_like      test_trace_expr '' -e%%statfs
+trie_test    run_prog
 truncate
 truncate64
 ugetrlimit     -a28
@@ -503,6 +731,7 @@ umask       -a11
 umoven-illptr  -a36 -e trace=nanosleep
 umovestr-illptr        -a11 -e trace=chdir
 umovestr3      -a14 -e trace=chdir
+umovestr_cached_adjacent       +umovestr_cached.test 3
 unlink -a24
 unlinkat       -a35
 unshare        -a11
@@ -525,7 +754,10 @@ waitpid    -a28
 xattr  -a22 -e trace=getxattr,fgetxattr,lgetxattr,setxattr,fsetxattr,lsetxattr,listxattr,flistxattr,llistxattr,removexattr,fremovexattr,lremovexattr
 xattr-strings  -a22 -s 4 -e trace=fsetxattr
 xet_robust_list        -a24 -e trace=get_robust_list,set_robust_list
+xet_robust_list--pidns-translation     test_pidns -a24 -e trace=get_robust_list,set_robust_list
 xetitimer      -a29 -e trace=setitimer,getitimer
 xetpgid        -a11 -e trace=getpgid,setpgid
-xetpriority    -a29 -e trace=getpriority,setpriority
+xetpgid--pidns-translation     test_pidns -a11 -e trace=getpgid,setpgid
+xetpriority    -a27 -e trace=getpriority,setpriority
+xetpriority--pidns-translation test_pidns -a27 -e trace=getpriority,setpriority
 xettimeofday   -a20 -e trace=gettimeofday,settimeofday
index 7667bdb028e6bc1c2eca75ee8597c0d1fbe10e9c..c2e9fa694a44b8cc9b07f0f096d82fb80dc52058 100644 (file)
@@ -1,14 +1,14 @@
 /*
  * Check decoding of get_mempolicy syscall.
  *
- * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_get_mempolicy
 
@@ -16,7 +16,7 @@
 # include <unistd.h>
 
 # include "xlat.h"
-# include "xlat/policies.h"
+# include "xlat/mpol_modes.h"
 
 # define MAX_STRLEN 3
 # define NLONGS(n) ((n + 8 * sizeof(long) - 2) \
@@ -68,20 +68,20 @@ main(void)
        rc = syscall(__NR_get_mempolicy, mode, nodemask, maxnode, addr, flags);
        printf("get_mempolicy(%p, %p, %lu, %#lx, %s|%#lx) = %ld %s (%m)\n",
               mode, nodemask, maxnode, addr,
-              "MPOL_F_NODE|MPOL_F_ADDR",
-              flags & ~3, rc, errno2name());
+              "MPOL_F_NODE|MPOL_F_ADDR|MPOL_F_MEMS_ALLOWED",
+              flags & ~7, rc, errno2name());
 
        mode = tail_alloc(sizeof(*mode));
 
        rc = syscall(__NR_get_mempolicy, mode, 0, 0, 0, 0);
        printf("get_mempolicy([");
-       printxval(policies, (unsigned) *mode, "MPOL_???");
+       printxval(mpol_modes, (unsigned) *mode, "MPOL_???");
        printf("], NULL, 0, NULL, 0) = %ld\n", rc);
 
        *mode = -1;
        rc = syscall(__NR_get_mempolicy, mode, 0, 0, mode - 1, 2);
        printf("get_mempolicy([");
-       printxval(policies, (unsigned) *mode, "MPOL_???");
+       printxval(mpol_modes, (unsigned) *mode, "MPOL_???");
        printf("], NULL, 0, %p, MPOL_F_ADDR) = %ld\n", mode - 1, rc);
 
        maxnode = get_page_size() * 8;
diff --git a/tests-m32/get_process_reaper.c b/tests-m32/get_process_reaper.c
new file mode 100644 (file)
index 0000000..2cc6906
--- /dev/null
@@ -0,0 +1,108 @@
+/*
+ * Print the process reaper id.
+ *
+ * Copyright (c) 2020 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <stdio.h>
+#include <unistd.h>
+#include <sys/wait.h>
+
+/* PARENT - CHILD - GRANDCHILD */
+
+static int
+grandchild(int read_fd, int write_fd)
+{
+       /* wait for notification from PARENT about CHILD completion */
+       pid_t pid;
+       if (read(read_fd, &pid, sizeof(pid)) != 0)
+               perror_msg_and_fail("read");
+
+       /* write ppid to PARENT */
+       pid = getppid();
+       if (write(write_fd, &pid, sizeof(pid)) != sizeof(pid))
+               perror_msg_and_fail("write");
+
+       _exit(0);
+}
+
+static int
+child(int read_fd, int write_fd)
+{
+       pid_t pid = fork();
+       if (pid < 0)
+               perror_msg_and_fail("fork");
+
+       if (!pid)
+               return grandchild(read_fd, write_fd);
+       else
+               _exit(0);
+}
+
+static int
+parent(pid_t pid, int read_fd, int write_fd)
+{
+       /* wait for CHILD completion */
+       int status;
+       if (waitpid(pid, &status, 0) != pid)
+               perror_msg_and_fail("waitpid");
+       if (status != 0)
+               error_msg_and_fail("status %x", status);
+
+       /* notify GRANDCHILD about CHILD completion */
+       close(write_fd),
+             write_fd = -1;
+
+       /* read ppid of GRANDCHILD */
+       if (read(read_fd, &pid, sizeof(pid)) != sizeof(pid))
+               perror_msg_and_fail("read");
+
+       printf("%d\n", pid);
+       return 0;
+}
+
+int
+main(void)
+{
+       int parent_grandchild_fds[2];
+#define parent_read_fd         parent_grandchild_fds[0]
+#define grandchild_write_fd    parent_grandchild_fds[1]
+
+       int grandchild_parent_fds[2];
+#define grandchild_read_fd     grandchild_parent_fds[0]
+#define parent_write_fd                grandchild_parent_fds[1]
+
+       if (pipe(parent_grandchild_fds) ||
+           pipe(grandchild_parent_fds))
+               perror_msg_and_fail("pipe");
+
+       pid_t pid = fork();
+       if (pid < 0)
+               perror_msg_and_fail("fork");
+
+       if (!pid) {
+               /* CHILD */
+               close(parent_read_fd),
+                     parent_read_fd = -1;
+
+               close(parent_write_fd),
+                     parent_write_fd = -1;
+
+               return child(grandchild_read_fd,
+                            grandchild_write_fd);
+       } else {
+               /* PARENT */
+               close(grandchild_read_fd),
+                     grandchild_read_fd = -1;
+
+               close(grandchild_write_fd),
+                     grandchild_write_fd = -1;
+
+               return parent(pid, parent_read_fd,
+                                  parent_write_fd);
+       }
+}
index f58d1f510f82c0fc0f6744a98b9bf543adedf2bb..7921bb1e22cb22bef176c88983a5103c3cc1f054 100644 (file)
@@ -2,6 +2,7 @@
  * Find out the size of kernel's sigset_t.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +11,7 @@
 #include "tests.h"
 #include <signal.h>
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 /*
  * If the sigset size specified to rt_sigprocmask is not equal to the size
index ecbaf0dc246330da3e1f417f4be574b43fb5f74f..85edf40751c82dbc7398c23e2ae83c69ab052ea0 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of getcpu syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getcpu
 
index 5f9a7293b50da9e0a1bc6fda8f02a6319c2af312..ff563ff44bd5da4f9baf9fbabfa0d66675b96b20 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -7,7 +7,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getcwd
 
diff --git a/tests-m32/getdents-v.c b/tests-m32/getdents-v.c
new file mode 100644 (file)
index 0000000..c9bd7ae
--- /dev/null
@@ -0,0 +1,3 @@
+/* Check --no-abbrev decoding of getdents syscall.  */
+#define VERBOSE 1
+#include "getdents.c"
diff --git a/tests-m32/getdents-v.gen.test b/tests-m32/getdents-v.gen.test
new file mode 100755 (executable)
index 0000000..fc1466a
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getdents-v -a22 -v --trace=getdents); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a22 -v --trace=getdents
index 998e667f0a357c14cd05572a1eb328814ec29fb0..2eb012a46707bf5943b38bb6bf4c19cc570e9649 100644 (file)
 /*
+ * Check decoding of getdents syscall.
+ *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getdents
 
-# include <assert.h>
-# include <dirent.h>
-# include <fcntl.h>
-# include <stddef.h>
-# include <stdio.h>
-# include <sys/stat.h>
-# include <unistd.h>
-
-static const char fname[] =
-       "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
-       "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
-       "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
-       "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
-       "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
-       "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
-       "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
-       "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nZ";
-static const char qname[] =
-       "A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\n"
-       "A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\n"
-       "A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\n"
-       "A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\n"
-       "A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\n"
-       "A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\n"
-       "A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\n"
-       "A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nZ";
+# define kernel_dirent_type kernel_dirent_t
+# define NR_getdents   __NR_getdents
+# define STR_getdents  "getdents"
 
-static char buf[8192];
+# include "xgetdents.c"
 
-static const char *
-str_d_type(const unsigned char d_type)
-{
-       switch (d_type) {
-               case DT_DIR:
-                       return "DT_DIR";
-               case DT_REG:
-                       return "DT_REG";
-               default:
-                       return "DT_UNKNOWN";
-       }
-}
+# if VERBOSE
 static void
-print_dirent(const kernel_dirent *d)
+print_dirent(const kernel_dirent_type *d)
 {
-       const unsigned int d_name_offset = offsetof(kernel_dirent, d_name);
-       int d_name_len = d->d_reclen - d_name_offset - 1;
-       assert(d_name_len > 0);
-
-       printf("{d_ino=%llu, d_off=%llu, d_reclen=%u, d_name=",
-              (unsigned long long) d->d_ino,
-              (unsigned long long) d->d_off, d->d_reclen);
-
-       if (d->d_name[0] == '.')
-               printf("\"%.*s\"", d_name_len, d->d_name);
-       else
-               printf("\"%s\"", qname);
-
+       const unsigned int d_name_offset = offsetof(kernel_dirent_type, d_name);
+       int d_name_len = (int) d->d_reclen - d_name_offset - 1;
+       if (d_name_len <= 0)
+               error_msg_and_fail("d_name_len = %d", d_name_len);
+
+       PRINT_FIELD_U("{", *d, d_ino);
+       PRINT_FIELD_U(", ", *d, d_off);
+       PRINT_FIELD_U(", ", *d, d_reclen);
+       printf(", d_name=");
+       print_quoted_cstring(d->d_name, d_name_len);
        printf(", d_type=%s}",
               str_d_type(*((const char *) d + d->d_reclen - 1)));
 }
-
-int
-main(void)
-{
-       static const char dname[] = "getdents.test.tmp.dir";
-
-       assert(!mkdir(dname, 0700));
-       assert(!chdir(dname));
-       (void) close(0);
-       assert(!creat(fname, 0600));
-       assert(!close(0));
-       assert(!open(".", O_RDONLY | O_DIRECTORY));
-
-       unsigned long count = (unsigned long) 0xfacefeeddeadbeefULL;
-       long rc = syscall(__NR_getdents, (long) 0xdefacedffffffffULL, NULL,
-                         count);
-       printf("getdents(-1, NULL, %u) = %ld %s (%m)\n",
-              (unsigned) count, rc, errno2name());
-
-       count = (unsigned long) 0xfacefeed00000000ULL | sizeof(buf);
-       while ((rc = syscall(__NR_getdents, 0, buf, count))) {
-               kernel_dirent *d;
-               long i;
-
-               if (rc < 0)
-                       perror_msg_and_skip("getdents");
-               printf("getdents(0, [");
-               for (i = 0; i < rc; i += d->d_reclen) {
-                       d = (kernel_dirent *) &buf[i];
-                       if (i)
-                               printf(", ");
-                       print_dirent(d);
-               }
-               printf("], %u) = %ld\n", (unsigned) count, rc);
-       }
-       printf("getdents(0, [], %u) = 0\n", (unsigned) count);
-       puts("+++ exited with 0 +++");
-       assert(!unlink(fname));
-       assert(!chdir(".."));
-       assert(!rmdir(dname));
-
-       return 0;
-}
+# endif
 
 #else
 
index 0db5f20aeda9a10e46cdb9495c9b337398332d39..adcbb9c35ca2754b1e5d2ab185c6705c34c78fe8 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getdents -a22 -v); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getdents -a31 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a22 -v
+run_strace_match_diff -a31 
diff --git a/tests-m32/getdents64-v.c b/tests-m32/getdents64-v.c
new file mode 100644 (file)
index 0000000..cf78248
--- /dev/null
@@ -0,0 +1,3 @@
+/* Check --no-abbrev decoding of getdents64 syscall.  */
+#define VERBOSE 1
+#include "getdents64.c"
diff --git a/tests-m32/getdents64-v.gen.test b/tests-m32/getdents64-v.gen.test
new file mode 100755 (executable)
index 0000000..9b49ce9
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getdents64-v -a24 -v --trace=getdents64); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a24 -v --trace=getdents64
index e0575cf4edc696dea8eb1f2172d2bcbeff895ff2..0e46a2212d276cfdc78a7bc7472d7081a96b3c39 100644 (file)
 /*
+ * Check decoding of getdents64 syscall.
+ *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getdents64
 
-# include <assert.h>
-# include <dirent.h>
-# include <fcntl.h>
-# include <inttypes.h>
-# include <stddef.h>
-# include <stdio.h>
-# include <sys/stat.h>
-# include <unistd.h>
-
-static const char fname[] =
-       "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
-       "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
-       "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
-       "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
-       "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
-       "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
-       "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
-       "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nZ";
-static const char qname[] =
-       "A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\n"
-       "A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\n"
-       "A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\n"
-       "A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\n"
-       "A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\n"
-       "A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\n"
-       "A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\n"
-       "A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nZ";
+# define kernel_dirent_type kernel_dirent64_t
+# define NR_getdents   __NR_getdents64
+# define STR_getdents  "getdents64"
 
-typedef struct {
-               uint64_t d_ino;
-               uint64_t d_off;
-               unsigned short d_reclen;
-               unsigned char d_type;
-               char d_name[256];
-} kernel_dirent64;
+# include "xgetdents.c"
 
-static char buf[8192];
-
-static const char *
-str_d_type(const unsigned char d_type)
-{
-       switch (d_type) {
-               case DT_DIR:
-                       return "DT_DIR";
-               case DT_REG:
-                       return "DT_REG";
-               default:
-                       return "DT_UNKNOWN";
-       }
-}
+# if VERBOSE
 static void
-print_dirent(const kernel_dirent64 *d)
+print_dirent(const kernel_dirent_type *d)
 {
-       const unsigned int d_name_offset = offsetof(kernel_dirent64, d_name);
-       int d_name_len = d->d_reclen - d_name_offset;
-       assert(d_name_len > 0);
-
-       printf("{d_ino=%" PRIu64 ", d_off=%" PRId64
-              ", d_reclen=%u, d_type=%s, d_name=",
-              d->d_ino, d->d_off, d->d_reclen, str_d_type(d->d_type));
-
-       if (d->d_name[0] == '.')
-               printf("\"%.*s\"}", d_name_len, d->d_name);
-       else
-               printf("\"%s\"}", qname);
-}
-
-int
-main(void)
-{
-       static const char dname[] = "getdents64.test.tmp.dir";
-
-       assert(!mkdir(dname, 0700));
-       assert(!chdir(dname));
-       (void) close(0);
-       assert(!creat(fname, 0600));
-       assert(!close(0));
-       assert(!open(".", O_RDONLY | O_DIRECTORY));
-
-       unsigned long count = (unsigned long) 0xfacefeeddeadbeefULL;
-       long rc = syscall(__NR_getdents64, (long) 0xdefacedffffffffULL, NULL,
-                         count);
-       printf("getdents64(-1, NULL, %u) = %ld %s (%m)\n",
-              (unsigned) count, rc, errno2name());
-
-       count = (unsigned long) 0xfacefeed00000000ULL | sizeof(buf);
-       while ((rc = syscall(__NR_getdents64, 0, buf, count))) {
-               kernel_dirent64 *d;
-               long i;
-
-               if (rc < 0)
-                       perror_msg_and_skip("getdents64");
-               printf("getdents64(0, [");
-               for (i = 0; i < rc; i += d->d_reclen) {
-                       d = (kernel_dirent64 *) &buf[i];
-                       if (i)
-                               printf(", ");
-                       print_dirent(d);
-               }
-               printf("], %u) = %ld\n", (unsigned) count, rc);
-       }
-       printf("getdents64(0, [], %u) = 0\n", (unsigned) count);
-       puts("+++ exited with 0 +++");
-       assert(!unlink(fname));
-       assert(!chdir(".."));
-       assert(!rmdir(dname));
-
-       return 0;
+       const unsigned int d_name_offset = offsetof(kernel_dirent_type, d_name);
+       int d_name_len = (int) d->d_reclen - d_name_offset;
+       if (d_name_len <= 0)
+               error_msg_and_fail("d_name_len = %d", d_name_len);
+
+       PRINT_FIELD_U("{", *d, d_ino);
+       PRINT_FIELD_U(", ", *d, d_off);
+       PRINT_FIELD_U(", ", *d, d_reclen);
+       printf(", d_type=%s, d_name=", str_d_type(d->d_type));
+       print_quoted_cstring(d->d_name, d_name_len);
+       printf("}");
 }
+# endif
 
 #else
 
index 6e24d400df46ff49103d06a0a9b9693e1d2adfcd..de87954ba2e1c80c3cb38028438525993f6f1f36 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getdents64 -a24 -v); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getdents64 -a33 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a24 -v
+run_strace_match_diff -a33 
diff --git a/tests-m32/getegid-creds.gen.test b/tests-m32/getegid-creds.gen.test
new file mode 100755 (executable)
index 0000000..7ac87f1
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getegid-creds +getuid.test ); do not edit.
+set -- 
+. "${srcdir=.}/getuid.test"
index 2e0754b77580512ace941dc625f69aa4879d5523..d5927fea2c61a30abd9c8ddcde8698e7745fcb61 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getegid
 
@@ -16,7 +16,7 @@
 int
 main(void)
 {
-       printf("getegid() = %ld\n", syscall(__NR_getegid));
+       printf("getegid() = %s\n", sprintrc(syscall(__NR_getegid)));
        return 0;
 }
 
diff --git a/tests-m32/getegid32-creds.gen.test b/tests-m32/getegid32-creds.gen.test
new file mode 100755 (executable)
index 0000000..c080ac0
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getegid32-creds +getuid.test ); do not edit.
+set -- 
+. "${srcdir=.}/getuid.test"
index b7f5cb0827bcf71f4688739eef721ca9e4fa818d..bbfcf94e01cecf90b9b5859fd848330a7291b3b4 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getegid32
 
diff --git a/tests-m32/geteuid-creds.gen.test b/tests-m32/geteuid-creds.gen.test
new file mode 100755 (executable)
index 0000000..8210f67
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (geteuid-creds +getuid.test ); do not edit.
+set -- 
+. "${srcdir=.}/getuid.test"
index 430df1c6526bfaf88644140def29d116002fd7a8..a1defc8c2913da663a41ef763b7fd5be86ef83b8 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_geteuid
 
@@ -16,7 +16,7 @@
 int
 main(void)
 {
-       printf("geteuid() = %ld\n", syscall(__NR_geteuid));
+       printf("geteuid() = %s\n", sprintrc(syscall(__NR_geteuid)));
        return 0;
 }
 
diff --git a/tests-m32/geteuid32-creds.gen.test b/tests-m32/geteuid32-creds.gen.test
new file mode 100755 (executable)
index 0000000..e0ced55
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (geteuid32-creds +getuid.test ); do not edit.
+set -- 
+. "${srcdir=.}/getuid.test"
index 94174f3238872b83b5d048270db996c78f146491..e6bd57d1ec449ae89caa0eb284d9a44af728a353 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_geteuid32
 
diff --git a/tests-m32/getgid-creds.gen.test b/tests-m32/getgid-creds.gen.test
new file mode 100755 (executable)
index 0000000..e82e11d
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getgid-creds +getuid.test ); do not edit.
+set -- 
+. "${srcdir=.}/getuid.test"
index 1bd705023f616cd58b59cc95619f18315d42db8e..c9c9f7227632b4b7e827c93d93e8967539c79371 100644 (file)
@@ -1,14 +1,14 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
-#ifdef __NR_getgid
+#if defined __NR_getgid && (!defined __NR_getxgid || __NR_getxgid != __NR_getgid)
 
 # include <stdio.h>
 # include <unistd.h>
diff --git a/tests-m32/getgid32-creds.gen.test b/tests-m32/getgid32-creds.gen.test
new file mode 100755 (executable)
index 0000000..7d37993
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getgid32-creds +getuid.test ); do not edit.
+set -- 
+. "${srcdir=.}/getuid.test"
index c6859cf4d288dda33d853cfada41e6826365b230..922c6f5f9e26506080f991e3e3849056e08f1ff5 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getgid32
 
index 36c095df0c7580f0e81dfada12495c47f6e475cc..c87d987492644dbf050ee12b587f5c6b75190436 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of getgroups/getgroups32 syscalls.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -17,7 +17,7 @@
 #else
 
 # include "tests.h"
-# include <asm/unistd.h>
+# include "scno.h"
 
 # ifdef __NR_getgroups
 
index d005792d31dd75d38706857b1ba1824fb3186ebb..a626d35f3dd70ff911940abbd67bdf7e00308119 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getgroups32
 
diff --git a/tests-m32/getpgrp--pidns-translation.c b/tests-m32/getpgrp--pidns-translation.c
new file mode 100644 (file)
index 0000000..de8ceb3
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "getpgrp.c"
diff --git a/tests-m32/getpgrp--pidns-translation.gen.test b/tests-m32/getpgrp--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..9363611
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getpgrp--pidns-translation test_pidns -e trace=getpgrp -a10); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -e trace=getpgrp -a10
index 3d45f718fb13f3fae6ee0d275dbd5c38574cc47e..c981d79b1b82aa0bc54f4a8b85e65509177332f9 100644 (file)
@@ -1,12 +1,13 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
+#include "pidns.h"
 
 #ifdef __NR_getpgrp
 
 int
 main(void)
 {
-       printf("getpgrp() = %ld\n", syscall(__NR_getpgrp));
+       PIDNS_TEST_INIT;
 
+       pidns_print_leader();
+       printf("getpgrp() = %d%s\n", (int) syscall(__NR_getpgrp),
+               pidns_pid2str(PT_PGID));
+
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
diff --git a/tests-m32/getpid--pidns-translation.c b/tests-m32/getpid--pidns-translation.c
new file mode 100644 (file)
index 0000000..94b12a1
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "getpid.c"
diff --git a/tests-m32/getpid--pidns-translation.gen.test b/tests-m32/getpid--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..abe2cf4
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getpid--pidns-translation test_pidns -e trace=getpid -a9); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -e trace=getpid -a9
index 5e88e052a343390ed4789c6e9a158d565eb2d4b8..4291400d09a03e7d29512d4182a25ef85b16d846 100644 (file)
@@ -1,14 +1,15 @@
 /*
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
+#include "pidns.h"
 
-#ifdef __NR_getpid
+#if defined __NR_getpid && (!defined __NR_getxpid || __NR_getxpid != __NR_getpid)
 
 # include <stdio.h>
 # include <unistd.h>
 int
 main(void)
 {
-       printf("getpid() = %ld\n", syscall(__NR_getpid));
+       PIDNS_TEST_INIT;
+
+       pidns_print_leader();
+       printf("getpid() = %d%s\n", (int) syscall(__NR_getpid),
+               pidns_pid2str(PT_TGID));
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
index 718d0691d9f8acfabc42ec029df955d75c32b169..fd279763879a00130fffe13d3b7aeaa9dfe201c2 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getppid
 
@@ -16,7 +16,7 @@
 int
 main(void)
 {
-       printf("getppid() = %ld\n", syscall(__NR_getppid));
+       printf("getppid() = %s\n", sprintrc(syscall(__NR_getppid)));
        puts("+++ exited with 0 +++");
        return 0;
 }
index eb6cdb1bcb3d147b1e524d6ac8770689fe0cf882..ebb8c839ac426925c8ff33635a3773f03a77ae23 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getrandom
 
index 3ad2c190419fd678e0dcbf9bac9288d9815edb9a..ebf352129ee132e8a6ad182741117bd9c94268b5 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getresgid
 
index b78afaed912626e570f8f2984fc54ee6d251066f..bd8ce2124ce77e300b18fe3454ccb2931f9396bc 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getresgid32
 
index 5bb2e30114787a5020d4a7e59f5fe519a02aeaef..8a29c17275ca0b25791e15031ceeb154e47916df 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getresuid
 
index 13acc695af8202388300e1c4120c89e577f77a2a..306b9d596281800820cd34ff37fba52a3ac8cdb0 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getresuid32
 
index 6d3b4cd5d24edab202f3e1db393cad0c282083b8..8a3230910874199c3ca3879cf20a04408b60803b 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getrlimit
 
index 412d8a004c811eadd60a767558bb2af176ee8e0b..13defc9fe466514fed61b2103e4438f33d534e8f 100644 (file)
@@ -1,14 +1,14 @@
 /*
  * Copyright (c) 2016 Fei Jie <feij.fnst@cn.fujitsu.com>
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getrusage
 
 # include <unistd.h>
 # include <errno.h>
 
+# include "kernel_rusage.h"
 # include "xlat.h"
 # include "xlat/usagewho.h"
 
 int
-invoke_print(int who, const char *who_str, struct rusage *usage)
+invoke_print(int who, const char *who_str, kernel_rusage_t *usage)
 {
        int rc = syscall(__NR_getrusage, who, usage);
        int saved_errno = errno;
        printf("getrusage(%s, {ru_utime={tv_sec=%lld, tv_usec=%llu}"
-              ", ru_stime={tv_sec=%lld, tv_usec=%llu}, ru_maxrss=%lu"
-              ", ru_ixrss=%lu, ru_idrss=%lu, ru_isrss=%lu, ru_minflt=%lu"
-              ", ru_majflt=%lu, ru_nswap=%lu, ru_inblock=%lu"
-              ", ru_oublock=%lu, ru_msgsnd=%lu, ru_msgrcv=%lu"
-              ", ru_nsignals=%lu, ru_nvcsw=%lu, ru_nivcsw=%lu}) = %s\n",
+              ", ru_stime={tv_sec=%lld, tv_usec=%llu}, ru_maxrss=%llu"
+              ", ru_ixrss=%llu, ru_idrss=%llu, ru_isrss=%llu, ru_minflt=%llu"
+              ", ru_majflt=%llu, ru_nswap=%llu, ru_inblock=%llu"
+              ", ru_oublock=%llu, ru_msgsnd=%llu, ru_msgrcv=%llu"
+              ", ru_nsignals=%llu, ru_nvcsw=%llu, ru_nivcsw=%llu}) = %s\n",
               who_str,
               (long long) usage->ru_utime.tv_sec,
               zero_extend_signed_to_ull(usage->ru_utime.tv_usec),
               (long long) usage->ru_stime.tv_sec,
               zero_extend_signed_to_ull(usage->ru_stime.tv_usec),
-              usage->ru_maxrss, usage->ru_ixrss, usage->ru_idrss,
-              usage->ru_isrss, usage->ru_minflt, usage->ru_majflt,
-              usage->ru_nswap, usage->ru_inblock, usage->ru_oublock,
-              usage->ru_msgsnd, usage->ru_msgrcv, usage->ru_nsignals,
-              usage->ru_nvcsw, usage->ru_nivcsw, sprintrc(rc));
+              zero_extend_signed_to_ull(usage->ru_maxrss),
+              zero_extend_signed_to_ull(usage->ru_ixrss),
+              zero_extend_signed_to_ull(usage->ru_idrss),
+              zero_extend_signed_to_ull(usage->ru_isrss),
+              zero_extend_signed_to_ull(usage->ru_minflt),
+              zero_extend_signed_to_ull(usage->ru_majflt),
+              zero_extend_signed_to_ull(usage->ru_nswap),
+              zero_extend_signed_to_ull(usage->ru_inblock),
+              zero_extend_signed_to_ull(usage->ru_oublock),
+              zero_extend_signed_to_ull(usage->ru_msgsnd),
+              zero_extend_signed_to_ull(usage->ru_msgrcv),
+              zero_extend_signed_to_ull(usage->ru_nsignals),
+              zero_extend_signed_to_ull(usage->ru_nvcsw),
+              zero_extend_signed_to_ull(usage->ru_nivcsw),
+              sprintrc(rc));
        errno = saved_errno;
        return rc;
 }
@@ -49,7 +60,7 @@ invoke_print(int who, const char *who_str, struct rusage *usage)
 int
 main(void)
 {
-       TAIL_ALLOC_OBJECT_CONST_PTR(struct rusage, usage);
+       TAIL_ALLOC_OBJECT_CONST_PTR(kernel_rusage_t, usage);
        if (invoke_print(ARG_STR(RUSAGE_SELF), usage)) {
                perror_msg_and_fail("RUSAGE_SELF");
        }
diff --git a/tests-m32/getsid--pidns-translation.c b/tests-m32/getsid--pidns-translation.c
new file mode 100644 (file)
index 0000000..7f983e8
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "getsid.c"
diff --git a/tests-m32/getsid--pidns-translation.gen.test b/tests-m32/getsid--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..c07ae33
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getsid--pidns-translation test_pidns -e trace=getsid -a10); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -e trace=getsid -a10
index 588ea4ab0779cec82363e7639231ec24f140cfdb..71355bb63c73a9a7061f6615d66a847200599bb2 100644 (file)
@@ -1,20 +1,27 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
+#include "pidns.h"
+
 #include <stdio.h>
 #include <unistd.h>
 
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        pid_t pid = getpid();
-       printf("getsid(%d) = %d\n", pid, getsid(pid));
+       pidns_print_leader();
+       printf("getsid(%d%s) = %d%s\n", pid, pidns_pid2str(PT_TGID),
+               getsid(pid), pidns_pid2str(PT_SID));
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
diff --git a/tests-m32/gettid--pidns-translation.c b/tests-m32/gettid--pidns-translation.c
new file mode 100644 (file)
index 0000000..500c321
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "gettid.c"
diff --git a/tests-m32/gettid--pidns-translation.test b/tests-m32/gettid--pidns-translation.test
new file mode 100755 (executable)
index 0000000..9624129
--- /dev/null
@@ -0,0 +1,18 @@
+#!/bin/sh
+#
+# Check pidns translation of gettid's return value.
+#
+# Copyright (c) 2020 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+. "${srcdir=.}/init.sh"
+
+run_prog > /dev/null
+run_strace -a9 --pidns-translation -f -e trace=gettid $args > "$EXP"
+parent_pid="$(tail -n 2 $LOG | head -n 1 | cut -d' ' -f1)"
+init_pid="$(tail -n 1 $LOG | cut -d' ' -f1)"
+# uniq: filter out extra gettid calls made by musl libc
+grep -E -v "^($parent_pid|$init_pid) |unfinished|resumed" "$LOG" | uniq > "$OUT"
+match_diff "$OUT" "$EXP"
index 24947e89ce9a2ee00923989641db1cf49f574cf4..8df4f8d5ab5811fa71f43c1a025bb904606eca73 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -8,12 +8,18 @@
 #include "tests.h"
 #include <stdio.h>
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
+#include "pidns.h"
 
 int
 main(void)
 {
-       printf("gettid() = %ld\n", syscall(__NR_gettid));
+       PIDNS_TEST_INIT;
+
+       pidns_print_leader();
+       printf("gettid() = %d%s\n", (int) syscall(__NR_gettid),
+               pidns_pid2str(PT_TID));
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
diff --git a/tests-m32/getuid-creds.gen.test b/tests-m32/getuid-creds.gen.test
new file mode 100755 (executable)
index 0000000..5cd14c5
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getuid-creds +getuid.test ); do not edit.
+set -- 
+. "${srcdir=.}/getuid.test"
index 56f6c9021e69b53bbd38e45ca4b245fb280cab14..f3ff9af13bc03f3d2ac79eb58b4b1740b9975624 100644 (file)
@@ -1,14 +1,14 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
-#ifdef __NR_getuid
+#if defined __NR_getuid && (!defined __NR_getxuid || __NR_getxuid != __NR_getuid)
 
 # include <stdio.h>
 # include <unistd.h>
index a0bbb3ed106864fe2f8cb7a6a530a87ef6389a0d..e8351a221a24d0f37d975fb35fec491715bcedd8 100755 (executable)
@@ -1,16 +1,33 @@
 #!/bin/sh
 #
-# Check getuid syscall decoding.
+# Check get(e)?[gu]id(32)? syscalls decoding.
 #
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 . "${srcdir=.}/init.sh"
 
+check_prog grep
 check_prog uniq
+
+if [ "${NAME%-creds}" = "$NAME" ]; then
+       syscall="$NAME"
+else
+       NAME="${NAME%-creds}"
+       syscall='%creds'
+fi
+
 run_prog > /dev/null
-run_strace -qq -a9 -e$NAME $args > "$EXP"
-uniq < "$LOG" > "$OUT"
+run_strace -qq -a9 -e"$syscall" $args > "$EXP"
+
+case "$STRACE_ARCH:$syscall" in
+       mips:%creds)
+               grep -Fxv 'prctl(PR_GET_FP_MODE) = 0' < "$LOG" | uniq > "$OUT"
+               ;;
+       *)      uniq < "$LOG" > "$OUT"
+               ;;
+esac
+
 match_diff "$OUT" "$EXP"
diff --git a/tests-m32/getuid32-creds.gen.test b/tests-m32/getuid32-creds.gen.test
new file mode 100755 (executable)
index 0000000..d6311ca
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getuid32-creds +getuid.test ); do not edit.
+set -- 
+. "${srcdir=.}/getuid.test"
index 1222dbcb3a594bae71734441b4d3c82b24275e03..0c0441f7381fd6f9f2d183cc7820f8a9f3e2f25d 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getuid32
 
diff --git a/tests-m32/getxgid.c b/tests-m32/getxgid.c
new file mode 100644 (file)
index 0000000..2fa6edd
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_getxgid
+
+# include <stdio.h>
+# include <unistd.h>
+
+int
+main(void)
+{
+       long id = syscall(__NR_getxgid);
+       printf("getxgid() = %ld (egid %ld)\n", id, id);
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_getxgid")
+
+#endif
diff --git a/tests-m32/getxgid.gen.test b/tests-m32/getxgid.gen.test
new file mode 100755 (executable)
index 0000000..e9068a3
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getxgid -a10 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10 
diff --git a/tests-m32/getxpid.c b/tests-m32/getxpid.c
new file mode 100644 (file)
index 0000000..f8218db
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_getxpid
+
+# include <stdio.h>
+# include <unistd.h>
+
+int
+main(void)
+{
+       long id = syscall(__NR_getxpid);
+       pid_t ppid = getppid();
+
+       printf("getxpid() = %ld (ppid %ld)\n", id, (long) ppid);
+       printf("getxpid() = %ld (ppid %ld)\n", id, (long) ppid);
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_getxpid")
+
+#endif
diff --git a/tests-m32/getxpid.gen.test b/tests-m32/getxpid.gen.test
new file mode 100755 (executable)
index 0000000..0473cce
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getxpid -a10 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10 
diff --git a/tests-m32/getxuid.c b/tests-m32/getxuid.c
new file mode 100644 (file)
index 0000000..6263550
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_getxuid
+
+# include <stdio.h>
+# include <unistd.h>
+
+int
+main(void)
+{
+       long id = syscall(__NR_getxuid);
+       printf("getxuid() = %ld (euid %ld)\n", id, id);
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_getxuid")
+
+#endif
diff --git a/tests-m32/getxuid.gen.test b/tests-m32/getxuid.gen.test
new file mode 100755 (executable)
index 0000000..37db2dd
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getxuid -a10 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10 
diff --git a/tests-m32/getxxid.c b/tests-m32/getxxid.c
deleted file mode 100644 (file)
index 864cea5..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
- * All rights reserved.
- *
- * SPDX-License-Identifier: GPL-2.0-or-later
- */
-
-#include "tests.h"
-#include <asm/unistd.h>
-
-#if defined __NR_getxpid && defined __NR_getxuid && defined __NR_getxgid
-
-# include <stdio.h>
-# include <unistd.h>
-
-int
-main(void)
-{
-       long id;
-       pid_t ppid;
-
-       id = syscall(__NR_getxpid);
-       ppid = getppid();
-       printf("getxpid() = %ld (ppid %ld)\n", id, (long) ppid);
-       printf("getxpid() = %ld (ppid %ld)\n", id, (long) ppid);
-
-       id = syscall(__NR_getxuid);
-       printf("getxuid() = %ld (euid %ld)\n", id, id);
-
-       id = syscall(__NR_getxgid);
-       printf("getxgid() = %ld (egid %ld)\n", id, id);
-
-       puts("+++ exited with 0 +++");
-       return 0;
-}
-
-#else
-
-SKIP_MAIN_UNDEFINED("__NR_getxpid && __NR_getxuid && __NR_getxgid")
-
-#endif
diff --git a/tests-m32/getxxid.gen.test b/tests-m32/getxxid.gen.test
deleted file mode 100755 (executable)
index 5aa89f6..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getxxid -a10 -e trace=getxpid,getxuid,getxgid); do not edit.
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a10 -e trace=getxpid,getxuid,getxgid
index 40e621889ab8b27a2bb640c424492e75131e95e2..524170514211c603fefd3b03ae1d7013cd95c55b 100644 (file)
@@ -1,7 +1,7 @@
 #!/bin/sh
 #
 # Copyright (c) 2011-2016 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2011-2018 The strace developers.
+# Copyright (c) 2011-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -11,6 +11,7 @@ ME_="${0##*/}"
 LOG="log"
 OUT="out"
 EXP="exp"
+CONFIG_H="../../config.h"
 
 warn_() { printf >&2 '%s\n' "$*"; }
 fail_() { warn_ "$ME_: failed test: $*"; exit 1; }
@@ -18,6 +19,33 @@ skip_() { warn_ "$ME_: skipped test: $*"; exit 77; }
 framework_failure_() { warn_ "$ME_: framework failure: $*"; exit 99; }
 framework_skip_() { warn_ "$ME_: framework skip: $*"; exit 77; }
 
+# get_config_str OPTION
+#
+# Returns the value of OPTION from config.h (path to which set
+# in the CONFIG_H variable).
+get_config_str()
+{
+       sed -r -n 's/#define[[:space:]]*'"$1"'[[:space:]]*"([^"]*)".*/\1/p' \
+               "$CONFIG_H"
+}
+
+# get_config_option OPTION YES_STRING [NO_STRING]
+#
+# Returns YES_STRING in case OPTION is enabled (present in config.h and has
+# a non-zero numeric value). Otherwise, NO_STRING (or empty string, if not
+# specified) is returned.
+get_config_option()
+{
+       local opt
+       opt=$(sed -r -n 's/#define[[:space:]]*'"$1"'[[:space:]]*([0-9]+)$/\1/p' \
+               "$CONFIG_H")
+       if [ -n "$opt" -a "$opt" -ne 0 ]; then
+               printf "%s" "$2"
+       else
+               printf "%s" "${3-}"
+       fi
+}
+
 check_prog()
 {
        type "$@" > /dev/null 2>&1 ||
@@ -161,7 +189,7 @@ match_diff()
 # dump both files and fail with ERROR_MESSAGE.
 match_grep()
 {
-       local output patterns error pattern cnt failed=
+       local output patterns error pattern cnt failed= rc negated
        if [ $# -eq 0 ]; then
                output="$LOG"
        else
@@ -183,7 +211,15 @@ match_grep()
 
        cnt=1
        while read -r pattern; do
-               LC_ALL=C grep -E -x -e "$pattern" < "$output" > /dev/null || {
+               negated=0
+               [ "x${pattern#!}" = "x${pattern}" ] ||
+                       negated=1
+
+               rc="$negated"
+               LC_ALL=C grep -E -x -e "${pattern#!}" < "$output" > /dev/null ||
+                       rc="$((!negated))"
+
+               [ 0 = "$rc" ] || {
                        test -n "$failed" || {
                                echo 'Failed patterns of expected output:'
                                failed=1
@@ -191,7 +227,8 @@ match_grep()
                        printf '#%d: %s\n' "$cnt" "$pattern"
                }
                cnt=$(($cnt + 1))
-       done < "$patterns"
+       done < "$patterns" ||
+               fail_ "Error reading patterns from \"$patterns\""
        test -z "$failed" || {
                echo 'Actual output:'
                cat < "$output"
@@ -203,7 +240,7 @@ match_grep()
 run_strace_match_diff()
 {
        args="$*"
-       [ -n "$args" -a -z "${args##*-e trace=*}" ] ||
+       [ -n "$args" -a \( -z "${args##*-e trace=*}" -o -z "${args##*--trace=*}" \) ] ||
                set -- -e trace="$NAME" "$@"
        run_prog > /dev/null
        run_strace "$@" $args > "$EXP"
@@ -214,7 +251,7 @@ run_strace_match_diff()
 run_strace_match_grep()
 {
        args="$*"
-       [ -n "$args" -a -z "${args##*-e trace=*}" ] ||
+       [ -n "$args" -a \( -z "${args##*-e trace=*}" -o -z "${args##*--trace=*}" \) ] ||
                set -- -e trace="$NAME" "$@"
        run_prog > /dev/null
        run_strace "$@" $args > "$EXP"
@@ -247,6 +284,20 @@ require_min_kernel_version_or_skip()
                skip_ "the kernel release $uname_r is not $1 or newer"
 }
 
+# Usage: require_min_nproc 2
+require_min_nproc()
+{
+       local min_nproc
+       min_nproc="$1"; shift
+
+       check_prog nproc
+       local nproc
+       nproc="$(nproc)"
+
+       [ "$nproc" -ge "$min_nproc" ] ||
+               framework_skip_ "nproc = $nproc is less than $min_nproc"
+}
+
 # Usage: grep_pid_status $pid GREP-OPTIONS...
 grep_pid_status()
 {
@@ -297,6 +348,13 @@ test_pure_prog_set()
 
                try_run_prog "../$t" || continue
                run_strace $prog_args "$@" "../$t" > "$expfile"
+
+               case "$STRACE_ARCH:$MIPS_ABI:$NAME" in
+                       mips:o32:*creds)
+                               sed -i '/^prctl(PR_GET_FP_MODE)  *= 0$/d' "$LOG"
+                               ;;
+               esac
+
                match_diff "$LOG" "$expfile"
        } < /dev/null; done
 }
@@ -324,6 +382,41 @@ test_trace_expr()
                < negative.list
 }
 
+test_prog_set()
+{
+       test_pure_prog_set "$@" < "$srcdir/$NAME.in"
+}
+
+test_pidns_run_strace()
+{
+       local parent_pid init_pid
+
+       check_prog tail
+       check_prog cut
+       check_prog grep
+
+       run_prog > /dev/null
+       run_strace --pidns-translation -f $@ $args > "$EXP"
+
+       # filter out logs made by the parent or init process of the pidns test
+       parent_pid="$(tail -n 2 $LOG | head -n 1 | cut -d' ' -f1)"
+       init_pid="$(tail -n 1 $LOG | cut -d' ' -f1)"
+       grep -E -v "^($parent_pid|$init_pid) " "$LOG" > "$OUT"
+       match_diff "$OUT" "$EXP"
+}
+
+test_pidns()
+{
+       check_prog unshare
+       unshare -Urpf true || framework_skip_ "unshare -Urpf true failed"
+
+       test_pidns_run_strace "$@"
+
+       # test PID translation when /proc is mounted from an other namespace
+       STRACE="unshare -Urpf $STRACE"
+       test_pidns_run_strace "$@"
+}
+
 check_prog cat
 check_prog rm
 
@@ -365,7 +458,7 @@ fi
 : "${STRACE_EXE:=$STRACE}"
 export STRACE_EXE
 
-: "${TIMEOUT_DURATION:=600}"
+: "${TIMEOUT_DURATION:=1500}"
 : "${SLEEP_A_BIT:=sleep 1}"
 
 [ -z "${VERBOSE-}" ] ||
index 601f7f921323cb5a3d90618ee53e4f6165f133a7..a8884720fe74b71e9dd75826ec4cbc0e7982959b 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of init_module syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined(__NR_init_module)
 
index b419984f1f55d3657170347f1557cd9c228cf428..22f3457109c3fbd6d1afe9dc89938ab64746ffbc 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Check decoding of return values injected into a syscall that "never fails".
  *
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 #include <assert.h>
 #include <stdio.h>
 #include <stdlib.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 #include "raw_syscall.h"
 
-#ifdef __alpha__
-/* alpha has no getpid */
-# define SC_NR __NR_getpgrp
-# define SC_NAME "getpgrp"
-# define getpid getpgrp
+#ifdef __NR_geteuid32
+# define SC_NR __NR_geteuid32
+# define SC_NAME "geteuid32"
 #else
-# define SC_NR __NR_getpid
-# define SC_NAME "getpid"
+# define SC_NR __NR_geteuid
+# define SC_NAME "geteuid"
 #endif
 
 #ifdef raw_syscall_0
 # define INVOKE_SC(err) raw_syscall_0(SC_NR, &err)
 #else
-/* No raw_syscall_0, let's use getpid() and hope for the best.  */
-# define INVOKE_SC(err) getpid()
+/* No raw_syscall_0, let's use geteuid() and hope for the best. */
+# define INVOKE_SC(err) geteuid()
 #endif
 
 /*
  * This prototype is intentionally different
  * from the prototype provided by <unistd.h>.
  */
-extern kernel_ulong_t getpid(void);
+extern kernel_ulong_t geteuid(void);
 
 int
 main(int ac, char **av)
@@ -45,7 +43,7 @@ main(int ac, char **av)
        assert(ac == 1 || ac == 2);
 
        kernel_ulong_t expected =
-               (ac == 1) ? getpid() : strtoull(av[1], NULL, 0);
+               (ac == 1) ? geteuid() : strtoull(av[1], NULL, 0);
        kernel_ulong_t err = 0;
        kernel_ulong_t rc = INVOKE_SC(err);
 
index cadb5adb0535b9a6efd9c177d19aa81c903b8c5c..7b0c3fda2c86f06031c5b6ac3cc6d4ff29a08fb8 100755 (executable)
@@ -2,21 +2,14 @@
 #
 # Check decoding of return values injected into a syscall that "never fails".
 #
-# Copyright (c) 2018 The strace developers.
+# Copyright (c) 2018-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 . "${srcdir=.}/scno_tampering.sh"
 
-case "$STRACE_ARCH" in
-alpha)
-       SYSCALL=getpgrp
-       ;;
-*)
-       SYSCALL=getpid
-       ;;
-esac
+SYSCALL='/^geteuid(32)?$'
 
 run_prog
 prog="$args"
index db751d4ebf6f9b54d395860aae4b96d43beb017f..f5167509e4c7c2dd19ccc1150b8ccd100964b39c 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of inotify_add_watch and inotify_rm_watch syscalls.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined(__NR_inotify_add_watch) && defined(__NR_inotify_rm_watch)
 
diff --git a/tests-m32/inotify_init-y.c b/tests-m32/inotify_init-y.c
new file mode 100644 (file)
index 0000000..cbe094b
--- /dev/null
@@ -0,0 +1,2 @@
+#define PRINT_PATHS
+#include "inotify_init.c"
diff --git a/tests-m32/inotify_init-y.test b/tests-m32/inotify_init-y.test
new file mode 100755 (executable)
index 0000000..36f2477
--- /dev/null
@@ -0,0 +1,17 @@
+#!/bin/sh
+#
+# Check decoding of inotify_init with path decoding enabled.
+#
+# Copyright (c) 2018-2019 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/init.sh"
+
+# Test expects "anon_inode:inotify" link path format for a inotify fd, which
+# is in place since v2.6.33-rc1~34^2~7. Check for older link path formats
+# is implemented in inotify_init1 test.
+require_min_kernel_version_or_skip 2.6.33
+
+run_strace_match_diff -a15 -y -e trace=inotify_init
diff --git a/tests-m32/inotify_init.c b/tests-m32/inotify_init.c
new file mode 100644 (file)
index 0000000..9537a7d
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * Check decoding of inotify_init syscall.
+ *
+ * Copyright (c) 2018-2019 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_inotify_init
+
+# include <stdio.h>
+# include <unistd.h>
+
+int
+main(void)
+{
+# ifdef PRINT_PATHS
+       skip_if_unavailable("/proc/self/fd/");
+# endif
+
+       long rc = syscall(__NR_inotify_init, 42);
+
+# ifdef PRINT_PATHS
+       if (rc < 0)
+               perror_msg_and_skip("inotify_init");
+# endif
+
+       printf("inotify_init() = "
+# ifdef PRINT_PATHS
+              "%ld<anon_inode:inotify>\n", rc
+# else
+              "%s\n", sprintrc(rc)
+# endif
+              );
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_inotify_init");
+
+#endif
diff --git a/tests-m32/inotify_init.gen.test b/tests-m32/inotify_init.gen.test
new file mode 100755 (executable)
index 0000000..47e6f60
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (inotify_init -a15 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a15 
diff --git a/tests-m32/inotify_init1-y.c b/tests-m32/inotify_init1-y.c
new file mode 100644 (file)
index 0000000..53c65e6
--- /dev/null
@@ -0,0 +1,2 @@
+#define PRINT_PATHS
+#include "inotify_init1.c"
diff --git a/tests-m32/inotify_init1-y.gen.test b/tests-m32/inotify_init1-y.gen.test
new file mode 100755 (executable)
index 0000000..160d4d3
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (inotify_init1-y -a27 -y -e trace=inotify_init1); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27 -y -e trace=inotify_init1
index 4f352b70d46f3796ba0636333e5fcc853c889baf..efff52ec205d0aa8cf75652c2e15cc69b738d4c0 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of inotify_init1 syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined(__NR_inotify_init1)
 
 # endif
 # define all_flags (O_NONBLOCK | cloexec_flag)
 
+# ifdef PRINT_PATHS
+#  define RC_FMT "%ld<%s>"
+# else
+#  define RC_FMT "%s"
+# endif
+
 int
 main(void)
 {
+# ifdef PRINT_PATHS
+       skip_if_unavailable("/proc/self/fd/");
+# endif
+
        static const kernel_ulong_t bogus_flags1 =
                (kernel_ulong_t) 0xfacefeeddeadbeefULL | O_NONBLOCK;
        static const kernel_ulong_t bogus_flags2 =
@@ -46,8 +56,51 @@ main(void)
               (unsigned int) bogus_flags2, sprintrc(rc));
 
        rc = syscall(__NR_inotify_init1, all_flags);
-       printf("inotify_init1(IN_NONBLOCK%s) = %s\n",
-              all_flags & cloexec_flag ? "|IN_CLOEXEC" : "", sprintrc(rc));
+
+# ifdef PRINT_PATHS
+       if (rc < 0)
+               perror_msg_and_skip("inotify_init(%#x)", all_flags);
+
+       /*
+        * Kernels that do not have v2.6.33-rc1~34^2~7 do not have
+        * "anon_inode:" prefix.  Let's assume that it can be either "inotify"
+        * or "anon_inode:inotify" for now, as any change there may be
+        * of interest.
+        */
+       char path[sizeof("/proc/self/fd/") + sizeof(rc) * 3];
+       char buf[2] = "";
+       const char *inotify_path;
+       ssize_t ret;
+
+       ret = snprintf(path, sizeof(path), "/proc/self/fd/%ld", rc);
+       if ((ret < 0) || ((size_t) ret >= sizeof(path)))
+               perror_msg_and_fail("snprintf(path)");
+
+       ret = readlink(path, buf, sizeof(buf));
+       if (ret < 0)
+               perror_msg_and_fail("readlink");
+
+       switch (buf[0]) {
+       case 'a':
+               inotify_path = "anon_inode:inotify";
+               break;
+       case 'i':
+               inotify_path = "inotify";
+               break;
+       default:
+               error_msg_and_fail("Unexpected first char '%c' of inotify fd "
+                                  "link path", buf[0]);
+       }
+# endif
+
+       printf("inotify_init1(IN_NONBLOCK%s) = " RC_FMT "\n",
+              all_flags & cloexec_flag ? "|IN_CLOEXEC" : "",
+# ifdef PRINT_PATHS
+              rc, inotify_path
+# else
+              sprintrc(rc)
+# endif
+              );
 
        puts("+++ exited with 0 +++");
 
index 3284ebac3ed3c373f3fe96819213e8e492bb4d05..bc741cd4cb72028561a68f46d18c4b9afd171210 100644 (file)
@@ -9,7 +9,6 @@
 
 #include "tests.h"
 #include <unistd.h>
-#include <asm/unistd.h>
 #include "scno.h"
 
 #ifdef __NR_io_uring_enter
index a0327ed85088eca18418cee921652edd98e85271..b0c5b9ee4f81c2a0bc9a2dbc311040b65ac22dd6 100644 (file)
@@ -2,6 +2,7 @@
  * Check decoding of io_uring_register syscall.
  *
  * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2019-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 
 #include "tests.h"
 #include <unistd.h>
-#include <asm/unistd.h>
 #include "scno.h"
 
 #ifdef __NR_io_uring_register
 
 # include <fcntl.h>
+# include <inttypes.h>
 # include <stdio.h>
 # include <string.h>
 # include <sys/uio.h>
 
+# ifdef HAVE_LINUX_IO_URING_H
+#  include <linux/io_uring.h>
+# endif
+
+/* From tests/bpf.c */
+# if defined MPERS_IS_m32 || SIZEOF_KERNEL_LONG_T > 4
+#  define BIG_ADDR_MAYBE(addr_)
+# elif defined __arm__ || defined __i386__ || defined __mips__ \
+   || defined __powerpc__ || defined __riscv__ || defined __s390__ \
+   || defined __sparc__ || defined __tile__
+#  define BIG_ADDR_MAYBE(addr_) addr_ " or "
+# else
+#  define BIG_ADDR_MAYBE(addr_)
+# endif
+
+# if WORDS_BIGENDIAN
+#  define BE_LE(be_, le_) be_
+# else
+#  define BE_LE(be_, le_) le_
+# endif
+
 static const char *errstr;
 
 static long
@@ -64,15 +86,40 @@ main(void)
 
        int fd_full = open(path_full, O_RDONLY);
        if (fd_full < 0)
-               perror_msg_and_fail("open: %s", path_null);
+               perror_msg_and_fail("open: %s", path_full);
 
        int fds[] = { fd_full, fd_null };
        const int *arg_fds = tail_memdup(fds, sizeof(fds));
 
-       sys_io_uring_register(fd_null, 0xbadc0ded, path_null, 0xdeadbeef);
-       printf("io_uring_register(%u<%s>, %#x /* IORING_REGISTER_??? */"
-              ", %p, %u) = %s\n",
-              fd_null, path_null, 0xbadc0ded, path_null, 0xdeadbeef, errstr);
+       static const unsigned int invalid_ops[] = { 0xbadc0dedU, 11 };
+
+       for (size_t i = 0; i < ARRAY_SIZE(invalid_ops); i++) {
+               sys_io_uring_register(fd_null, invalid_ops[i], path_null,
+                                     0xdeadbeef);
+               printf("io_uring_register(%u<%s>, %#x /* IORING_REGISTER_??? */"
+                      ", %p, %u) = %s\n",
+                      fd_null, path_null, invalid_ops[i], path_null,
+                      0xdeadbeef, errstr);
+       }
+
+       static const struct {
+               unsigned int op;
+               const char *str;
+       } no_arg_ops[] = {
+               { 1, "IORING_UNREGISTER_BUFFERS" },
+               { 3, "IORING_UNREGISTER_FILES" },
+               { 5, "IORING_UNREGISTER_EVENTFD" },
+               { 9, "IORING_REGISTER_PERSONALITY" },
+               { 10, "IORING_UNREGISTER_PERSONALITY" },
+       };
+
+       for (size_t i = 0; i < ARRAY_SIZE(no_arg_ops); i++) {
+               sys_io_uring_register(fd_null, no_arg_ops[i].op, path_null,
+                                     0xdeadbeef);
+               printf("io_uring_register(%u<%s>, %s, %p, %u) = %s\n",
+                      fd_null, path_null, no_arg_ops[i].str, path_null,
+                      0xdeadbeef, errstr);
+       }
 
        sys_io_uring_register(fd_null, 0, arg_iov, ARRAY_SIZE(iov));
        printf("io_uring_register(%u<%s>, IORING_REGISTER_BUFFERS"
@@ -83,11 +130,157 @@ main(void)
               iov[1].iov_base, (unsigned long) iov[1].iov_len,
               (unsigned int) ARRAY_SIZE(iov), errstr);
 
-       sys_io_uring_register(fd_null, 2, arg_fds, ARRAY_SIZE(fds));
-       printf("io_uring_register(%u<%s>, IORING_REGISTER_FILES"
-              ", [%u<%s>, %u<%s>], %u) = %s\n",
+       static const struct {
+               unsigned int op;
+               const char *str;
+       } fd_arr_ops[] = {
+               { 2, "IORING_REGISTER_FILES" },
+               { 4, "IORING_REGISTER_EVENTFD" },
+               { 7, "IORING_REGISTER_EVENTFD_ASYNC" },
+       };
+
+       for (size_t i = 0; i < ARRAY_SIZE(fd_arr_ops); i++) {
+               sys_io_uring_register(fd_null, fd_arr_ops[i].op, arg_fds,
+                                     ARRAY_SIZE(fds));
+               printf("io_uring_register(%u<%s>, %s, [%u<%s>, %u<%s>], %u)"
+                      " = %s\n",
+                      fd_null, path_null, fd_arr_ops[i].str,
+                      fd_full, path_full, fd_null, path_null,
+                      (unsigned int) ARRAY_SIZE(fds), errstr);
+       }
+
+# ifdef HAVE_STRUCT_IO_URING_FILES_UPDATE
+       struct io_uring_files_update bogus_iufu;
+       struct io_uring_files_update iufu;
+
+       sys_io_uring_register(fd_null, 6, NULL, 0xfacefeed);
+       printf("io_uring_register(%u<%s>, IORING_REGISTER_FILES_UPDATE"
+              ", NULL, 4207869677) = %s\n",
+              fd_null, path_null, errstr);
+
+       fill_memory(&bogus_iufu, sizeof(bogus_iufu));
+       sys_io_uring_register(fd_null, 6, &bogus_iufu, 0);
+       printf("io_uring_register(%u<%s>, IORING_REGISTER_FILES_UPDATE"
+              ", {offset=%" PRIu32 ", resv=%#" PRIx32 ", fds="
+              BIG_ADDR_MAYBE(BE_LE("0x88898a8b8c8d8e8f", "0x8f8e8d8c8b8a8988"))
+              "[]}, 0) = %s\n",
+              fd_null, path_null,
+              ((uint32_t *) &bogus_iufu)[0], ((uint32_t *) &bogus_iufu)[1],
+              errstr);
+
+       memset(&iufu, 0, sizeof(iufu));
+       iufu.offset = 0xdeadc0deU;
+       iufu.fds = (uintptr_t) fds;
+       sys_io_uring_register(fd_null, 6, &iufu, ARRAY_SIZE(fds));
+       printf("io_uring_register(%u<%s>, IORING_REGISTER_FILES_UPDATE"
+              ", {offset=3735929054, fds=[%u<%s>, %u<%s>]}, %u) = %s\n",
               fd_null, path_null, fd_full, path_full, fd_null, path_null,
               (unsigned int) ARRAY_SIZE(fds), errstr);
+# endif
+
+# ifdef HAVE_STRUCT_IO_URING_PROBE
+       struct io_uring_probe *probe = tail_alloc(sizeof(*probe) +
+                      (DEFAULT_STRLEN + 1) * sizeof(struct io_uring_probe_op));
+
+       sys_io_uring_register(fd_null, IORING_REGISTER_PROBE, NULL, 0xfacefeed);
+       printf("io_uring_register(%u<%s>, IORING_REGISTER_PROBE"
+              ", NULL, 4207869677) = %s\n",
+              fd_null, path_null, errstr);
+
+       sys_io_uring_register(fd_null, IORING_REGISTER_PROBE, probe,
+                             0xfacefeed);
+       printf("io_uring_register(%u<%s>, IORING_REGISTER_PROBE"
+              ", %p, 4207869677) = %s\n",
+              fd_null, path_null, probe, errstr);
+
+       sys_io_uring_register(fd_null, IORING_REGISTER_PROBE,
+                             (char *) probe + 1, DEFAULT_STRLEN + 1);
+       printf("io_uring_register(%u<%s>, IORING_REGISTER_PROBE"
+              ", %p, %d) = %s\n",
+              fd_null, path_null, (char *) probe + 1, DEFAULT_STRLEN + 1,
+              errstr);
+
+       sys_io_uring_register(fd_null, IORING_REGISTER_PROBE, probe, 0);
+       printf("io_uring_register(%u<%s>, IORING_REGISTER_PROBE"
+              ", {last_op=%u /* IORING_OP_??? */, ops_len=%hhu, resv=%#hx"
+              ", resv2=[%#x, %#x, %#x], ops=[]}, 0) = %s\n",
+              fd_null, path_null, probe->last_op, probe->ops_len, probe->resv,
+              probe->resv2[0], probe->resv2[1], probe->resv2[2], errstr);
+
+       probe->last_op = IORING_OP_READV;
+       probe->resv = 0;
+       sys_io_uring_register(fd_null, IORING_REGISTER_PROBE, probe, 0);
+       printf("io_uring_register(%u<%s>, IORING_REGISTER_PROBE"
+              ", {last_op=IORING_OP_READV, ops_len=%hhu"
+              ", resv2=[%#x, %#x, %#x], ops=[]}, 0) = %s\n",
+              fd_null, path_null, probe->ops_len,
+              probe->resv2[0], probe->resv2[1], probe->resv2[2], errstr);
+
+       probe->last_op = IORING_OP_EPOLL_CTL;
+       probe->resv2[0] = 0;
+       probe->resv2[2] = 0;
+
+       probe->ops[0].op = IORING_OP_NOP;
+       probe->ops[0].resv = 0xde;
+       probe->ops[0].flags = 0;
+       probe->ops[0].resv2 = 0xbeefface;
+
+       probe->ops[1].op = 33;
+       probe->ops[1].resv = 0;
+       probe->ops[1].flags = IO_URING_OP_SUPPORTED;
+       probe->ops[1].resv2 = 0xdeadc0de;
+
+       probe->ops[2].op = 34;
+       probe->ops[2].resv = 0xaf;
+       probe->ops[2].flags = 0xbeef;
+       probe->ops[2].resv2 = 0;
+
+       probe->ops[3].op = 0xfe;
+       probe->ops[3].resv = 0;
+       probe->ops[3].flags = 0xc0de;
+       probe->ops[3].resv2 = 0;
+
+       sys_io_uring_register(fd_null, IORING_REGISTER_PROBE, probe, 4);
+       printf("io_uring_register(%u<%s>, IORING_REGISTER_PROBE"
+              ", {last_op=IORING_OP_EPOLL_CTL, ops_len=%hhu"
+              ", resv2=[0, %#x, 0], ops=["
+              "{op=IORING_OP_NOP, resv=0xde, flags=0, resv2=0xbeefface}, "
+              "{op=IORING_OP_TEE, flags=IO_URING_OP_SUPPORTED"
+              ", resv2=0xdeadc0de}, "
+              "{op=34 /* IORING_OP_??? */, resv=0xaf"
+              ", flags=IO_URING_OP_SUPPORTED|0xbeee}, "
+              "{op=254 /* IORING_OP_??? */"
+              ", flags=0xc0de /* IO_URING_OP_??? */}]}, 4) = %s\n",
+              fd_null, path_null, probe->ops_len, probe->resv2[1], errstr);
+
+       probe->last_op = 34;
+       probe->resv2[1] = 0;
+       fill_memory_ex(probe->ops, sizeof(probe->ops[0]) * (DEFAULT_STRLEN + 1),
+                   0x40, 0x80);
+       sys_io_uring_register(fd_null, IORING_REGISTER_PROBE, probe,
+                             DEFAULT_STRLEN + 1);
+       printf("io_uring_register(%u<%s>, IORING_REGISTER_PROBE"
+              ", {last_op=34 /* IORING_OP_??? */, ops_len=%hhu, ops=[",
+              fd_null, path_null, probe->ops_len);
+       for (size_t i = 0; i < DEFAULT_STRLEN; i++) {
+               printf("%s{op=%u /* IORING_OP_??? */, resv=%#hhx"
+                      ", flags=%s%#hx%s, resv2=%#x}",
+                      i ? ", " : "",
+                      probe->ops[i].op, probe->ops[i].resv,
+                      probe->ops[i].flags & 1 ? "IO_URING_OP_SUPPORTED|" : "",
+                      (typeof(probe->ops[i].flags)) (probe->ops[i].flags & ~1),
+                      probe->ops[i].flags & 1 ? "" : " /* IO_URING_OP_??? */",
+                      probe->ops[i].resv2);
+       }
+       printf(", ...]}, %d) = %s\n", DEFAULT_STRLEN + 1, errstr);
+
+       probe->last_op = 0;
+       probe->ops_len = 0;
+       memset(probe->ops, 0, sizeof(probe->ops[0]) * (DEFAULT_STRLEN + 1));
+       sys_io_uring_register(fd_null, IORING_REGISTER_PROBE, probe, 8);
+       printf("io_uring_register(%u<%s>, IORING_REGISTER_PROBE, %p, 8) = %s\n",
+              fd_null, path_null, probe, errstr);
+# endif
 
        puts("+++ exited with 0 +++");
        return 0;
index f48095bb344cb634b791cffb1442ff28e78e76e1..d54f8c9bc020093a156dbfbceecb41b4a67a8727 100644 (file)
@@ -2,6 +2,7 @@
  * Check decoding of io_uring_setup syscall.
  *
  * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2019-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 
 #include "tests.h"
 #include <unistd.h>
-#include <asm/unistd.h>
 #include "scno.h"
 
 #if defined HAVE_LINUX_IO_URING_H && defined __NR_io_uring_setup
 
+# include <fcntl.h>
 # include <stdio.h>
 # include <stdint.h>
 # include <string.h>
 # include <linux/io_uring.h>
 
+# include <sys/stat.h>
+# include <sys/types.h>
+
 # include "print_fields.h"
+# include "xlat.h"
+
+# include "xlat/uring_setup_features.h"
+# include "xlat/uring_cqring_flags.h"
+
+# ifdef HAVE_STRUCT_IO_URING_PARAMS_FEATURES
+#  ifdef HAVE_STRUCT_IO_URING_PARAMS_WQ_FD
+#   define RESV_START 0
+#  else
+#   define RESV_START 1
+#  endif
+# else /* !HAVE_STRUCT_IO_URING_PARAMS_FEATURES */
+#  define RESV_START 2
+# endif /* HAVE_STRUCT_IO_URING_PARAMS_FEATURES */
 
 static const char *errstr;
 
@@ -39,12 +57,18 @@ sys_io_uring_setup(uint32_t nentries, const void *params)
 int
 main(void)
 {
+       static const char path_full[] = "/dev/full";
+
        long rc;
        TAIL_ALLOC_OBJECT_CONST_PTR(struct io_uring_params, params);
        const void *efault = (const void *) params + 1;
 
        skip_if_unavailable("/proc/self/fd/");
 
+       int fd_full = open(path_full, O_RDONLY);
+       if (fd_full < 0)
+               perror_msg_and_fail("open: %s", path_full);
+
        sys_io_uring_setup(-1U, NULL);
        printf("io_uring_setup(%u, NULL) = %s\n", -1U, errstr);
 
@@ -55,42 +79,110 @@ main(void)
        params->flags = -1;
        sys_io_uring_setup(1, params);
        printf("io_uring_setup(%u, {flags=IORING_SETUP_IOPOLL"
-              "|IORING_SETUP_SQPOLL|IORING_SETUP_SQ_AFF|%#x"
-              ", sq_thread_cpu=%#x, sq_thread_idle=%u, resv={",
-              1, -1U - 7, params->sq_thread_cpu, params->sq_thread_idle);
-       for (unsigned int i = 0; i < ARRAY_SIZE(params->resv); ++i)
-               printf("%s%#x", i ? ", " : "", params->resv[i]);
-       printf("}}) = %s\n", errstr);
-
-       memset(params, 0, sizeof(*params));
-       rc = sys_io_uring_setup(2, params);
-       printf("io_uring_setup(%u, {flags=0, sq_thread_cpu=0"
-              ", sq_thread_idle=0", 2);
-       if (rc < 0)
-               printf("}) = %s\n", errstr);
-       else
-               printf(", sq_entries=%u, cq_entries=%u"
-                      ", sq_off={head=%u, tail=%u, ring_mask=%u"
-                      ", ring_entries=%u, flags=%u, dropped=%u, array=%u}"
-                      ", cq_off={head=%u, tail=%u, ring_mask=%u"
-                      ", ring_entries=%u, overflow=%u, cqes=%u}"
-                      "}) = %ld<anon_inode:[io_uring]>\n",
-                      params->sq_entries,
-                      params->cq_entries,
-                      params->sq_off.head,
-                      params->sq_off.tail,
-                      params->sq_off.ring_mask,
-                      params->sq_off.ring_entries,
-                      params->sq_off.flags,
-                      params->sq_off.dropped,
-                      params->sq_off.array,
-                      params->cq_off.head,
-                      params->cq_off.tail,
-                      params->cq_off.ring_mask,
-                      params->cq_off.ring_entries,
-                      params->cq_off.overflow,
-                      params->cq_off.cqes,
-                      rc);
+              "|IORING_SETUP_SQPOLL|IORING_SETUP_SQ_AFF|IORING_SETUP_CQSIZE"
+              "|IORING_SETUP_CLAMP|IORING_SETUP_ATTACH_WQ|%#x"
+              ", sq_thread_cpu=%#x, sq_thread_idle=%u, wq_fd=%d, resv=[",
+              1, -1U - 63, params->sq_thread_cpu, params->sq_thread_idle,
+# if defined HAVE_STRUCT_IO_URING_PARAMS_WQ_FD
+              params->wq_fd
+# elif defined HAVE_STRUCT_IO_URING_PARAMS_FEATURES
+              params->resv[0]
+# else
+              params->resv[1]
+# endif
+              );
+       for (unsigned int i = RESV_START; i < ARRAY_SIZE(params->resv); ++i)
+               printf("%s%#x", i != RESV_START ? ", " : "", params->resv[i]);
+       printf("]}) = %s\n", errstr);
+
+       for (size_t i = 0; i < 2; i++) {
+               memset(params, 0, sizeof(*params));
+
+# if defined HAVE_STRUCT_IO_URING_PARAMS_WQ_FD
+               params->wq_fd
+# elif defined HAVE_STRUCT_IO_URING_PARAMS_FEATURES
+               params->resv[0]
+# else
+               params->resv[1]
+# endif
+                       = i == 1 ? fd_full : -1;
+               params->flags = i == 1 ? 32 : 0;
+
+               rc = sys_io_uring_setup(2, params);
+               printf("io_uring_setup(%u, {flags=%s, sq_thread_cpu=0"
+                      ", sq_thread_idle=0",
+                      2, i == 1 ? "IORING_SETUP_ATTACH_WQ" : "0");
+               if (i == 1)
+                       printf(", wq_fd=%d<%s>", fd_full, path_full);
+               if (rc < 0) {
+                       printf("}) = %s\n", errstr);
+               } else {
+                       printf(", sq_entries=%u, cq_entries=%u, features=",
+                              params->sq_entries,
+                              params->cq_entries);
+                       printflags(uring_setup_features,
+# ifdef HAVE_STRUCT_IO_URING_PARAMS_FEATURES
+                                  params->features,
+# else
+                                  params->resv[0],
+# endif
+                                  "IORING_FEAT_???");
+                       printf(", sq_off={head=%u, tail=%u, ring_mask=%u"
+                              ", ring_entries=%u, flags=%u, dropped=%u"
+                              ", array=%u",
+                              params->sq_off.head,
+                              params->sq_off.tail,
+                              params->sq_off.ring_mask,
+                              params->sq_off.ring_entries,
+                              params->sq_off.flags,
+                              params->sq_off.dropped,
+                              params->sq_off.array);
+                       if (params->sq_off.resv1)
+                               printf(", resv1=%#x", params->sq_off.resv1);
+                       if (params->sq_off.resv2)
+                               printf(", resv1=%#llx",
+                                      (unsigned long long)
+                                               params->sq_off.resv2);
+
+                       printf("}, cq_off={head=%u, tail=%u, ring_mask=%u"
+                              ", ring_entries=%u, overflow=%u, cqes=%u, flags=",
+                              params->cq_off.head,
+                              params->cq_off.tail,
+                              params->cq_off.ring_mask,
+                              params->cq_off.ring_entries,
+                              params->cq_off.overflow,
+                              params->cq_off.cqes);
+# ifdef HAVE_STRUCT_IO_CQRING_OFFSETS_FLAGS
+                       printflags(uring_cqring_flags,
+                              params->cq_off.flags,
+                              "IORING_CQ_???");
+                       if (params->cq_off.resv1)
+                               printf(", resv1=%#x", params->cq_off.resv1);
+                       if (params->cq_off.resv2)
+                               printf(", resv2=%#llx",
+                                      (unsigned long long)
+                                               params->cq_off.resv2);
+# else
+                       union {
+                               struct {
+                                       uint32_t flags;
+                                       uint32_t resv1;
+                               } s;
+                               uint64_t v;
+                       } u = { .v = params->cq_off.resv[0] };
+                       printflags(uring_cqring_flags, u.s.flags,
+                                  "IORING_CQ_???");
+                       if (u.s.resv1)
+                               printf(", resv1=%#x", u.s.resv1);
+                       if (params->cq_off.resv[1])
+                               printf(", resv2=%#llx",
+                                      (unsigned long long)
+                                               params->cq_off.resv[1]);
+# endif
+
+                       printf("}}) = %ld<anon_inode:[io_uring]>\n", rc);
+               }
+       }
 
        puts("+++ exited with 0 +++");
        return 0;
diff --git a/tests-m32/ioctl-success.sh b/tests-m32/ioctl-success.sh
new file mode 100755 (executable)
index 0000000..9dd8aee
--- /dev/null
@@ -0,0 +1,21 @@
+#!/bin/sh -efu
+#
+# Check decoding of ioctls using syscall injection.
+#
+# Expects a binary that accepts IOCTL_INJECT_START as the first argument.
+#
+# Copyright (c) 2018-2020 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/scno_tampering.sh"
+
+: ${IOCTL_INJECT_START=256}
+: ${IOCTL_INJECT_RETVAL=42}
+
+run_strace -a50 "$@" -e trace=ioctl \
+       -e inject=ioctl:retval="${IOCTL_INJECT_RETVAL}":when="${IOCTL_INJECT_START}+" \
+       "../$NAME" "${IOCTL_INJECT_START}" "${IOCTL_INJECT_RETVAL}" > "$EXP"
+grep -v '^ioctl([012][,<]' < "$LOG" > "$OUT"
+match_diff "$OUT" "$EXP"
index ec4e367029ef5b4f93271aac59527f870989bc65..4f8e2e9f40dd95d4c5911eba59c817f4201be34f 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -14,6 +14,8 @@
 #include <termios.h>
 #include <sys/ioctl.h>
 
+#include <linux/types.h>
+
 #ifdef HAVE_LINUX_MMTIMER_H
 # include <linux/mmtimer.h>
 #endif
diff --git a/tests-m32/ioctl_block--pidns-translation.c b/tests-m32/ioctl_block--pidns-translation.c
new file mode 100644 (file)
index 0000000..5eed607
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "ioctl_block.c"
diff --git a/tests-m32/ioctl_block--pidns-translation.test b/tests-m32/ioctl_block--pidns-translation.test
new file mode 100755 (executable)
index 0000000..d06855f
--- /dev/null
@@ -0,0 +1,22 @@
+#!/bin/sh
+#
+# Check pidns translation of ioctl(BLK*) syscall decoding.
+#
+# Copyright (c) 2020 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+. "${srcdir=.}/init.sh"
+
+check_prog head
+check_prog tail
+check_prog cut
+check_prog grep
+
+run_prog > /dev/null
+run_strace --pidns-translation -f -a16 -e trace=ioctl $@ $args > "$EXP"
+parent_pid="$(tail -n 2 $LOG | head -n 1 | cut -d' ' -f1)"
+init_pid="$(tail -n 1 $LOG | cut -d' ' -f1)"
+grep -E -v "^($parent_pid|$init_pid) |ioctl\([0123][,<]" "$LOG" > "$OUT"
+match_diff "$OUT" "$EXP"
index 65f434c8f344bdb8b15826c9391d0cf52fd7ba6b..8a345f4e1aa74aa7d7b819626ef789b16467983f 100644 (file)
@@ -2,14 +2,16 @@
  * This file is part of ioctl_block strace test.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
+#include "pidns.h"
 #include <errno.h>
+#include <unistd.h>
 #include <inttypes.h>
 #include <stdio.h>
 #include <string.h>
@@ -24,7 +26,7 @@
 static const unsigned int magic = 0xdeadbeef;
 static const unsigned long lmagic = (unsigned long) 0xdeadbeefbadc0dedULL;
 
-static struct xlat block_argless[] = {
+static struct xlat_data block_argless[] = {
        XLAT(BLKRRPART),
        XLAT(BLKFLSBUF),
 #ifdef BLKTRACESTART
@@ -41,12 +43,15 @@ static struct xlat block_argless[] = {
 #define TEST_NULL_ARG(cmd)                                             \
        do {                                                            \
                ioctl(-1, cmd, 0);                                      \
+               pidns_print_leader();                                   \
                printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n", #cmd);  \
        } while (0)
 
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        TEST_NULL_ARG(BLKBSZGET);
        TEST_NULL_ARG(BLKBSZSET);
        TEST_NULL_ARG(BLKFRAGET);
@@ -91,18 +96,22 @@ main(void)
 #endif
 
        ioctl(-1, BLKRASET, lmagic);
+       pidns_print_leader();
        printf("ioctl(-1, BLKRASET, %lu) = -1 EBADF (%m)\n", lmagic);
 
        ioctl(-1, BLKFRASET, lmagic);
+       pidns_print_leader();
        printf("ioctl(-1, BLKFRASET, %lu) = -1 EBADF (%m)\n", lmagic);
 
        TAIL_ALLOC_OBJECT_CONST_PTR(int, val_int);
        *val_int = magic;
 
        ioctl(-1, BLKROSET, val_int);
+       pidns_print_leader();
        printf("ioctl(-1, BLKROSET, [%d]) = -1 EBADF (%m)\n", *val_int);
 
        ioctl(-1, BLKBSZSET, val_int);
+       pidns_print_leader();
        printf("ioctl(-1, BLKBSZSET, [%d]) = -1 EBADF (%m)\n", *val_int);
 
        uint64_t *pair_int64 = tail_alloc(sizeof(*pair_int64) * 2);
@@ -111,18 +120,21 @@ main(void)
 
 #ifdef BLKDISCARD
        ioctl(-1, BLKDISCARD, pair_int64);
+       pidns_print_leader();
        printf("ioctl(-1, BLKDISCARD, [%" PRIu64 ", %" PRIu64 "])"
               " = -1 EBADF (%m)\n", pair_int64[0], pair_int64[1]);
 #endif
 
 #ifdef BLKSECDISCARD
        ioctl(-1, BLKSECDISCARD, pair_int64);
+       pidns_print_leader();
        printf("ioctl(-1, BLKSECDISCARD, [%" PRIu64 ", %" PRIu64 "])"
               " = -1 EBADF (%m)\n", pair_int64[0], pair_int64[1]);
 #endif
 
 #ifdef BLKZEROOUT
        ioctl(-1, BLKZEROOUT, pair_int64);
+       pidns_print_leader();
        printf("ioctl(-1, BLKZEROOUT, [%" PRIu64 ", %" PRIu64 "])"
               " = -1 EBADF (%m)\n", pair_int64[0], pair_int64[1]);
 #endif
@@ -134,6 +146,7 @@ main(void)
        blkpg->data = (void *) (unsigned long) 0xcafef00dfffffeedULL;
 
        ioctl(-1, BLKPG, blkpg);
+       pidns_print_leader();
        printf("ioctl(-1, BLKPG, {op=%s, flags=%d, datalen=%d"
               ", data=%#lx}) = -1 EBADF (%m)\n",
               "BLKPG_RESIZE_PARTITION", blkpg->flags, blkpg->datalen,
@@ -149,6 +162,7 @@ main(void)
        blkpg->data = bp;
 
        ioctl(-1, BLKPG, blkpg);
+       pidns_print_leader();
        printf("ioctl(-1, BLKPG, {op=%s, flags=%d, datalen=%d"
               ", data={start=%lld, length=%lld, pno=%d"
               ", devname=\"%.*s\"..., volname=\"%.*s\"...}})"
@@ -162,25 +176,31 @@ main(void)
 #if defined BLKTRACESETUP && defined HAVE_STRUCT_BLK_USER_TRACE_SETUP
        TAIL_ALLOC_OBJECT_CONST_PTR(struct blk_user_trace_setup, buts);
        fill_memory(buts, sizeof(*buts));
+       buts->pid = getpid();
 
        ioctl(-1, BLKTRACESETUP, buts);
+       pidns_print_leader();
        printf("ioctl(-1, BLKTRACESETUP, {act_mask=%hu, buf_size=%u, buf_nr=%u"
-              ", start_lba=%" PRI__u64 ", end_lba=%" PRI__u64 ", pid=%u})"
+              ", start_lba=%" PRI__u64 ", end_lba=%" PRI__u64 ", pid=%d%s})"
               " = -1 EBADF (%m)\n",
               buts->act_mask, buts->buf_size, buts->buf_nr,
-              buts->start_lba, buts->end_lba, buts->pid);
+              buts->start_lba, buts->end_lba, buts->pid,
+              pidns_pid2str(PT_TGID));
 #endif
 
        unsigned int i;
        for (i = 0; i < ARRAY_SIZE(block_argless); ++i) {
                ioctl(-1, (unsigned long) block_argless[i].val, lmagic);
+               pidns_print_leader();
                printf("ioctl(-1, %s) = -1 EBADF (%m)\n", block_argless[i].str);
        }
 
        ioctl(-1, _IOC(_IOC_READ, 0x12, 0xfe, 0xff), lmagic);
+       pidns_print_leader();
        printf("ioctl(-1, %s, %#lx) = -1 EBADF (%m)\n",
               "_IOC(_IOC_READ, 0x12, 0xfe, 0xff)", lmagic);
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
diff --git a/tests-m32/ioctl_evdev-Xabbrev.c b/tests-m32/ioctl_evdev-Xabbrev.c
new file mode 100644 (file)
index 0000000..ac474bf
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_ABBREV 1
+#include "ioctl_evdev.c"
diff --git a/tests-m32/ioctl_evdev-Xabbrev.gen.test b/tests-m32/ioctl_evdev-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..5f72444
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-Xabbrev +ioctl.test -a26 -Xabbrev); do not edit.
+set -- -a26 -Xabbrev
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_evdev-Xraw.c b/tests-m32/ioctl_evdev-Xraw.c
new file mode 100644 (file)
index 0000000..15f586f
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "ioctl_evdev.c"
diff --git a/tests-m32/ioctl_evdev-Xraw.gen.test b/tests-m32/ioctl_evdev-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..f292f4c
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-Xraw +ioctl.test -a28 -Xraw); do not edit.
+set -- -a28 -Xraw
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_evdev-Xverbose.c b/tests-m32/ioctl_evdev-Xverbose.c
new file mode 100644 (file)
index 0000000..603c2f0
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "ioctl_evdev.c"
diff --git a/tests-m32/ioctl_evdev-Xverbose.gen.test b/tests-m32/ioctl_evdev-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..0b1b4fc
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-Xverbose +ioctl.test -a41 -Xverbose); do not edit.
+set -- -a41 -Xverbose
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_evdev-success-Xabbrev.c b/tests-m32/ioctl_evdev-success-Xabbrev.c
new file mode 100644 (file)
index 0000000..9f2416b
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_ABBREV 1
+#include "ioctl_evdev-success.c"
diff --git a/tests-m32/ioctl_evdev-success-Xabbrev.gen.test b/tests-m32/ioctl_evdev-success-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..6432322
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-success-Xabbrev +ioctl_evdev-success.test -Xabbrev); do not edit.
+set -- -Xabbrev
+. "${srcdir=.}/ioctl_evdev-success.test"
diff --git a/tests-m32/ioctl_evdev-success-Xraw.c b/tests-m32/ioctl_evdev-success-Xraw.c
new file mode 100644 (file)
index 0000000..097672a
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "ioctl_evdev-success.c"
diff --git a/tests-m32/ioctl_evdev-success-Xraw.gen.test b/tests-m32/ioctl_evdev-success-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..c4f8c43
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-success-Xraw +ioctl_evdev-success.test -a27 -Xraw); do not edit.
+set -- -a27 -Xraw
+. "${srcdir=.}/ioctl_evdev-success.test"
diff --git a/tests-m32/ioctl_evdev-success-Xverbose.c b/tests-m32/ioctl_evdev-success-Xverbose.c
new file mode 100644 (file)
index 0000000..9ee67a0
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "ioctl_evdev-success.c"
diff --git a/tests-m32/ioctl_evdev-success-Xverbose.gen.test b/tests-m32/ioctl_evdev-success-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..a1781fc
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-success-Xverbose +ioctl_evdev-success.test -a43 -Xverbose); do not edit.
+set -- -a43 -Xverbose
+. "${srcdir=.}/ioctl_evdev-success.test"
diff --git a/tests-m32/ioctl_evdev-success-v-Xabbrev.c b/tests-m32/ioctl_evdev-success-v-Xabbrev.c
new file mode 100644 (file)
index 0000000..566ad3e
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_ABBREV 1
+#include "ioctl_evdev-success-v.c"
diff --git a/tests-m32/ioctl_evdev-success-v-Xabbrev.gen.test b/tests-m32/ioctl_evdev-success-v-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..cdb9e79
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-success-v-Xabbrev +ioctl_evdev-success.test -v -Xabbrev); do not edit.
+set -- -v -Xabbrev
+. "${srcdir=.}/ioctl_evdev-success.test"
diff --git a/tests-m32/ioctl_evdev-success-v-Xraw.c b/tests-m32/ioctl_evdev-success-v-Xraw.c
new file mode 100644 (file)
index 0000000..461bcd7
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "ioctl_evdev-success-v.c"
diff --git a/tests-m32/ioctl_evdev-success-v-Xraw.gen.test b/tests-m32/ioctl_evdev-success-v-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..4c29234
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-success-v-Xraw +ioctl_evdev-success.test -a27 -v -Xraw); do not edit.
+set -- -a27 -v -Xraw
+. "${srcdir=.}/ioctl_evdev-success.test"
diff --git a/tests-m32/ioctl_evdev-success-v-Xverbose.c b/tests-m32/ioctl_evdev-success-v-Xverbose.c
new file mode 100644 (file)
index 0000000..1754320
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "ioctl_evdev-success-v.c"
diff --git a/tests-m32/ioctl_evdev-success-v-Xverbose.gen.test b/tests-m32/ioctl_evdev-success-v-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..d1d1cde
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-success-v-Xverbose +ioctl_evdev-success.test -a43 -v -Xverbose); do not edit.
+set -- -a43 -v -Xverbose
+. "${srcdir=.}/ioctl_evdev-success.test"
diff --git a/tests-m32/ioctl_evdev-success-v.gen.test b/tests-m32/ioctl_evdev-success-v.gen.test
new file mode 100755 (executable)
index 0000000..aa72de1
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-success-v +ioctl_evdev-success.test -a26 -v); do not edit.
+set -- -a26 -v
+. "${srcdir=.}/ioctl_evdev-success.test"
diff --git a/tests-m32/ioctl_evdev-success-v.test b/tests-m32/ioctl_evdev-success-v.test
deleted file mode 100755 (executable)
index faedee3..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/sh -efu
-#
-# Copyright (c) 2018 The strace developers.
-# All rights reserved.
-#
-# SPDX-License-Identifier: GPL-2.0-or-later
-
-. "${srcdir=.}/scno_tampering.sh"
-
-: ${IOCTL_INJECT_START=256}
-: ${IOCTL_INJECT_RETVAL=8}
-
-run_prog
-run_strace -a16 -v -e trace=ioctl \
-       -e inject=ioctl:retval="${IOCTL_INJECT_RETVAL}":when="${IOCTL_INJECT_START}+" \
-       ../ioctl_evdev-success-v "${IOCTL_INJECT_START}" "${IOCTL_INJECT_RETVAL}"> "$EXP"
-grep -v '^ioctl([012][,<]' < "$LOG" > "$OUT"
-match_diff "$OUT" "$EXP"
index 7887d417b59fdb7e01b5c3d2b33922c0c9d87bf9..d6809be5df6e1d0e6d09cb9bff5d10f5a162ddb5 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -9,6 +9,7 @@
 
 #ifdef HAVE_LINUX_INPUT_H
 
+# include <assert.h>
 # include <inttypes.h>
 # include <stdio.h>
 # include <stdlib.h>
 # include <linux/input.h>
 # include "print_fields.h"
 
+# define NUM_WORDS 4
+
 static const char *errstr;
 
 struct evdev_check {
        unsigned long cmd;
        const char *cmd_str;
-       void *arg_ptr;
-       void (*print_arg)(long rc, void *ptr, void *arg);
+       const void *arg_ptr;
+       void (*print_arg)(long rc, const void *ptr, const void *arg);
 };
 
 static long
-invoke_test_syscall(unsigned long cmd, void *p)
+invoke_test_syscall(unsigned long cmd, const void *p)
 {
        long rc = ioctl(-1, cmd, p);
        errstr = sprintrc(rc);
@@ -38,10 +41,10 @@ invoke_test_syscall(unsigned long cmd, void *p)
 }
 
 static void
-test_evdev(struct evdev_check *check, void *arg)
+test_evdev(struct evdev_check *check, const void *arg)
 {
        long rc = invoke_test_syscall(check->cmd, check->arg_ptr);
-       printf("ioctl(-1, %s, ", check->cmd_str);
+       printf("ioctl(-1, %s, ", sprintxlat(check->cmd_str, check->cmd, NULL));
        if (check->print_arg)
                check->print_arg(rc, check->arg_ptr, arg);
        else
@@ -50,9 +53,12 @@ test_evdev(struct evdev_check *check, void *arg)
 }
 
 static void
-print_input_absinfo(long rc, void *ptr, void *arg)
+print_input_absinfo(long rc, const void *ptr, const void *arg)
 {
-       struct input_absinfo *absinfo = ptr;
+       const struct input_absinfo *absinfo = ptr;
+# if VERBOSE
+       const uintptr_t sz = (uintptr_t) arg;
+# endif
 
        if (rc < 0) {
                printf("%p", absinfo);
@@ -64,9 +70,20 @@ print_input_absinfo(long rc, void *ptr, void *arg)
        PRINT_FIELD_U(", ", *absinfo, maximum);
        PRINT_FIELD_U(", ", *absinfo, fuzz);
        PRINT_FIELD_U(", ", *absinfo, flat);
+       if (sz > offsetofend(struct input_absinfo, flat)) {
+               if (sz >= 24) {
 #  ifdef HAVE_STRUCT_INPUT_ABSINFO_RESOLUTION
-       PRINT_FIELD_U(", ", *absinfo, resolution);
+                       PRINT_FIELD_U(", ", *absinfo, resolution);
+#  else
+                       printf(", resolution=%u", *((int *) ptr + 5));
 #  endif
+
+                       if (sz > 24)
+                               printf(", ...");
+               } else {
+                       printf(", ...");
+               }
+       }
 # else
        printf(", ...");
 # endif
@@ -74,66 +91,90 @@ print_input_absinfo(long rc, void *ptr, void *arg)
 }
 
 static void
-print_input_id(long rc, void *ptr, void *arg)
+print_input_id(long rc, const void *ptr, const void *arg)
 {
-       struct input_id *id = ptr;
+       const struct input_id *id = ptr;
 
        if (rc < 0) {
                printf("%p", id);
                return;
        }
-       printf("{ID_BUS=%" PRIu16
-              ", ID_VENDOR=%" PRIu16
-              ", ID_PRODUCT=%" PRIu16
-              ", ID_VERSION=%" PRIu16 "}",
+       printf("{bustype=%" PRIu16
+              ", vendor=%" PRIu16
+              ", product=%" PRIu16
+              ", version=%" PRIu16 "}",
               id->bustype, id->vendor, id->product, id->version);
 }
 
 # ifdef EVIOCGMTSLOTS
 static void
-print_mtslots(long rc, void *ptr, void *arg)
+print_mtslots(long rc, const void *ptr, const void *arg)
 {
-       int *buffer = ptr;
-       const char **str = arg;
-       int num = atoi(*(str + 1));
+       const unsigned int *buffer = ptr;
+       const char * const * str = arg;
 
        if (rc < 0) {
                printf("%p", buffer);
                return;
        }
 
-       printf("{code=%s", *str);
+       printf("{code=%s", sprintxlat(*str, *buffer, NULL));
        printf(", values=[");
-       for (unsigned int i = 1; i <= (unsigned) num; i++)
-               printf("%s%s", i > 1 ? ", " : "", *(str + i + 1));
+       for (unsigned int i = 1; str[i]; i++)
+               printf("%s%s", i > 1 ? ", " : "", str[i]);
        printf("]}");
 }
 # endif
 
 static void
-print_getbit(long rc, void *ptr, void *arg)
+print_getbit(long rc, const void *ptr, const void *arg)
 {
-       const char **str = arg;
-       int num = atoi(*str);
+       const char * const *str = arg + sizeof(char *);
+# if XLAT_RAW || XLAT_VERBOSE
+       const unsigned long *buf = ptr;
+       const unsigned long buf_size = (uintptr_t) (str[-1]);
+# endif
 
-       if (rc < 0) {
+
+
+       if (rc <= 0) {
                printf("%p", ptr);
                return;
        }
 
+# if !XLAT_RAW
        printf("[");
-       printf("%s", *(str + 1));
-       for (unsigned int i = 2; i <= (unsigned) num; i++) {
-# if ! VERBOSE
-               if (i > 4) {
+       for (unsigned long i = 0; str[i]; i++) {
+#  if ! VERBOSE
+               if (i >= 4) {
                        printf(", ...");
                        break;
                }
-# endif
-               printf(", ");
-               printf("%s", *(str + i));
+#  endif
+               if (i)
+                       printf(", ");
+               printf("%s", str[i]);
        }
        printf("]");
+# endif /* !XLAT_RAW */
+
+# if XLAT_VERBOSE
+       printf(" /* ");
+# endif
+
+# if XLAT_RAW || XLAT_VERBOSE
+       printf("[");
+       const unsigned long cnt =
+               (MIN((unsigned long) rc, buf_size) + sizeof(long) - 1)
+               / sizeof(long);
+       for (unsigned long i = 0; i < cnt; i++)
+               printf("%s%#lx", i ? ", " : "", buf[i]);
+       printf("]");
+# endif
+
+# if XLAT_VERBOSE
+       printf(" */");
+# endif
 }
 
 int
@@ -158,8 +199,8 @@ main(int argc, char **argv)
 
        for (unsigned int i = 0; i < num_skip; i++) {
                long rc = ioctl(-1, EVIOCGID, NULL);
-               printf("ioctl(-1, EVIOCGID, NULL) = %s%s\n",
-                      sprintrc(rc),
+               printf("ioctl(-1, %s, NULL) = %s%s\n",
+                      XLAT_STR(EVIOCGID), sprintrc(rc),
                       rc == inject_retval ? " (INJECTED)" : "");
 
                if (rc != inject_retval)
@@ -174,52 +215,132 @@ main(int argc, char **argv)
                                   ", EVIOCGID, NULL) returning %lu",
                                   inject_retval);
 
+       static const void *absinfo_sz =
+               (const void *) (uintptr_t) sizeof(struct input_absinfo);
+
        TAIL_ALLOC_OBJECT_CONST_PTR(struct input_id, id);
        TAIL_ALLOC_OBJECT_CONST_PTR(struct input_absinfo, absinfo);
        TAIL_ALLOC_OBJECT_CONST_PTR(int, bad_addr_slot);
+
+       struct input_absinfo *absinfo_24 = tail_alloc(MAX(sizeof(*absinfo_24),
+                                                         24));
+       struct input_absinfo *absinfo_32 = tail_alloc(MAX(sizeof(*absinfo_32),
+                                                         32));
+
+       fill_memory(absinfo, sizeof(struct input_absinfo));
+       fill_memory(absinfo_24, 24);
+       fill_memory(absinfo_32, 32);
+
 # ifdef EVIOCGMTSLOTS
-       int mtslots[] = { ABS_MT_SLOT, 1, 3 };
-       /* we use the second element to indicate the number of values */
-       /* mtslots_str[1] is "2" so the number of values is 2 */
-       const char *mtslots_str[] = { "ABS_MT_SLOT", "2", "1", "3" };
+       static const unsigned int mtslots[] = { ABS_MT_SLOT, 1, 3 };
+       static const char * const mtslots_str[] = {
+               "ABS_MT_SLOT", "1", "3", NULL };
 
        /* invalid flag */
-       int invalid_mtslot[] = { -1, 1 };
-       char invalid_str[4096];
-       snprintf(invalid_str, sizeof(invalid_str), "%#x /* ABS_MT_??? */", invalid_mtslot[0]);
-       const char *invalid_mtslot_str[] = { invalid_str, "1", "1" };
+       static const unsigned int invalid_mtslot[] = { -1, 1 };
+       static const char * const invalid_mtslot_str[] = {
+               ""
+#  if !XLAT_RAW && !XLAT_VERBOSE
+               "0xffffffff"
+#  endif
+#  if !XLAT_VERBOSE
+               " /* "
+#  endif
+               "ABS_MT_???"
+#  if !XLAT_VERBOSE
+               " */"
+#  endif
+               , "1", NULL };
 # endif
 
+       enum { ULONG_BIT = sizeof(unsigned long) * 8 };
+
        /* set more than 4 bits */
-       unsigned long ev_more[] = { 1 << EV_ABS | 1 << EV_MSC | 1 << EV_LED | 1 << EV_SND | 1 << EV_PWR };
-       /* we use the first element to indicate the number of set bits */
-       /* ev_more_str[0] is "5" so the number of set bits is 5 */
-       const char *ev_more_str[] = { "5", "EV_ABS", "EV_MSC", "EV_LED", "EV_SND", "EV_PWR" };
+       static const unsigned long ev_more[NUM_WORDS] = {
+               1 << EV_ABS | 1 << EV_MSC | 1 << EV_LED | 1 << EV_SND
+               | 1 << EV_PWR };
+       static const char * const ev_more_str_2[] = {
+               (char *) (uintptr_t) 4,
+               XLAT_KNOWN(0x3, "EV_ABS"), XLAT_KNOWN(0x4, "EV_MSC"), NULL };
+       static const char * const ev_more_str_3[] = {
+               (char *) (uintptr_t) 4,
+               XLAT_KNOWN(0x3, "EV_ABS"), XLAT_KNOWN(0x4, "EV_MSC"),
+               XLAT_KNOWN(0x11, "EV_LED"), XLAT_KNOWN(0x12, "EV_SND"),
+               XLAT_KNOWN(0x16, "EV_PWR"), NULL };
 
        /* set less than 4 bits */
-       unsigned long ev_less[] = { 1 << EV_ABS | 1 << EV_MSC | 1 << EV_LED };
-       const char *ev_less_str[] = { "3", "EV_ABS", "EV_MSC", "EV_LED" };
+       static const unsigned long ev_less[NUM_WORDS] = {
+               1 << EV_ABS | 1 << EV_MSC | 1 << EV_LED };
+       static const char * const ev_less_str_2[] = {
+               (char *) (uintptr_t) 4,
+               XLAT_KNOWN(0x3, "EV_ABS"), XLAT_KNOWN(0x4, "EV_MSC"), NULL };
+       static const char * const ev_less_str_3[] = {
+               (char *) (uintptr_t) 4,
+               XLAT_KNOWN(0x3, "EV_ABS"), XLAT_KNOWN(0x4, "EV_MSC"),
+               XLAT_KNOWN(0x11, "EV_LED"), NULL };
 
        /* set zero bit */
-       unsigned long ev_zero[] = { 0x0 };
-       const char *ev_zero_str[] = { "0", " 0 " };
+       static const unsigned long ev_zero[NUM_WORDS] = { 0x0 };
+       static const char * const ev_zero_str[] = {
+               (char *) (uintptr_t) 1,
+               " 0 ", NULL };
 
        /* KEY_MAX is 0x2ff which is greater than retval * 8 */
-       unsigned long key[] = { 1 << KEY_1 | 1 << KEY_2, 0 };
-       const char *key_str[] = { "2", "KEY_1", "KEY_2" };
+       static const unsigned long key[NUM_WORDS] = {
+               1 << KEY_1 | 1 << KEY_2,
+               [ KEY_F12 / ULONG_BIT ] = 1 << (KEY_F12 % ULONG_BIT) };
+
+       static const char * const key_str_8[] = {
+               (char *) (uintptr_t) (NUM_WORDS * sizeof(long)),
+               XLAT_KNOWN(0x2, "KEY_1"), XLAT_KNOWN(0x3, "KEY_2"), NULL };
+       static const char * const key_str_16[] = {
+               (char *) (uintptr_t) (NUM_WORDS * sizeof(long)),
+               XLAT_KNOWN(0x2, "KEY_1"), XLAT_KNOWN(0x3, "KEY_2"),
+               XLAT_KNOWN(0x58, "KEY_F12"), NULL };
+
+       assert(sizeof(ev_more) >= (unsigned long) inject_retval);
+       assert(sizeof(ev_less) >= (unsigned long) inject_retval);
+       assert(sizeof(ev_zero) >= (unsigned long) inject_retval);
+       assert(sizeof(key) >= (unsigned long) inject_retval);
 
        struct {
                struct evdev_check check;
-               void *ptr;
+               const void *ptr;
        } a[] = {
                { { ARG_STR(EVIOCGID), id, print_input_id }, NULL },
-               { { ARG_STR(EVIOCGABS(ABS_X)), absinfo, print_input_absinfo }, NULL },
-               { { ARG_STR(EVIOCGABS(ABS_Y)), absinfo, print_input_absinfo }, NULL },
-               { { ARG_STR(EVIOCGABS(ABS_Y)), absinfo, print_input_absinfo }, NULL },
-               { { ARG_STR(EVIOCGBIT(0, 0)), ev_more, print_getbit }, &ev_more_str },
-               { { ARG_STR(EVIOCGBIT(0, 0)), ev_less, print_getbit }, &ev_less_str },
+               { { _IOC(_IOC_READ, 'E', 0x40 + ABS_Y, 19), "EVIOCGABS(ABS_Y)",
+                   absinfo, NULL }, NULL },
+               { { _IOC(_IOC_READ, 'E', 0x40 + ABS_Y, 20),
+                   "EVIOCGABS(ABS_Y)", absinfo, print_input_absinfo },
+                 (const void *) (uintptr_t) 20 },
+               { { _IOC(_IOC_READ, 'E', 0x40 + ABS_Y, 21),
+                   "EVIOCGABS(ABS_Y)", absinfo_24, print_input_absinfo },
+                 (const void *) (uintptr_t) 21 },
+               { { _IOC(_IOC_READ, 'E', 0x40 + ABS_Y, 24),
+                   "EVIOCGABS(ABS_Y)", absinfo_24, print_input_absinfo },
+                 (const void *) (uintptr_t) 24 },
+               { { _IOC(_IOC_READ, 'E', 0x40 + ABS_Y, 32),
+                   "EVIOCGABS(ABS_Y)", absinfo_32, print_input_absinfo },
+                 (const void *) (uintptr_t) 32 },
+               { { ARG_STR(EVIOCGABS(ABS_X)), absinfo, print_input_absinfo },
+                 absinfo_sz},
+               { { ARG_STR(EVIOCGABS(ABS_Y)), absinfo, print_input_absinfo },
+                 absinfo_sz },
+               { { ARG_STR(EVIOCGABS(ABS_Y)), absinfo, print_input_absinfo },
+                 absinfo_sz },
+               { { ARG_STR(EVIOCGBIT(0, 0)), ev_more, print_getbit },
+                       inject_retval * 8 <= EV_LED
+                               ? (const void *) &ev_more_str_2
+                               : (const void *) &ev_more_str_3 },
+               { { ARG_STR(EVIOCGBIT(0, 0)), ev_less, print_getbit },
+                       inject_retval * 8 <= EV_LED
+                               ? (const void *) &ev_less_str_2
+                               : (const void *) &ev_less_str_3 },
                { { ARG_STR(EVIOCGBIT(0, 0)), ev_zero, print_getbit }, &ev_zero_str },
-               { { ARG_STR(EVIOCGBIT(EV_KEY, 0)), key, print_getbit }, &key_str},
+               { { ARG_STR(EVIOCGBIT(EV_KEY, 0)), key, print_getbit },
+                       inject_retval * 8 <= KEY_F12
+                               ? (const void *) &key_str_8
+                               : (const void *) &key_str_16 },
 # ifdef EVIOCGMTSLOTS
                { { ARG_STR(EVIOCGMTSLOTS(12)), mtslots, print_mtslots }, &mtslots_str },
                { { ARG_STR(EVIOCGMTSLOTS(8)), invalid_mtslot, print_mtslots }, &invalid_mtslot_str }
index 54b0a20a9803ee2100b239551cbad526868a9c16..0a7489d3f122c5515c8057c79da6523914b7ec13 100755 (executable)
@@ -1,6 +1,6 @@
 #!/bin/sh -efu
 #
-# Copyright (c) 2018 The strace developers.
+# Copyright (c) 2018-2019 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -8,11 +8,15 @@
 . "${srcdir=.}/scno_tampering.sh"
 
 : ${IOCTL_INJECT_START=256}
-: ${IOCTL_INJECT_RETVAL=8}
 
 run_prog
-run_strace -a16 -e trace=ioctl \
-       -e inject=ioctl:retval="${IOCTL_INJECT_RETVAL}":when="${IOCTL_INJECT_START}+" \
-       ../ioctl_evdev-success "${IOCTL_INJECT_START}" "${IOCTL_INJECT_RETVAL}"> "$EXP"
-grep -v '^ioctl([012][,<]' < "$LOG" > "$OUT"
-match_diff "$OUT" "$EXP"
+prog="$args"
+
+for ret in 0 2 8 15 16; do
+       run_strace -a26 "$@" -e trace=ioctl \
+               -e inject=ioctl:retval="${ret}":when="${IOCTL_INJECT_START}+" \
+               "$prog" \
+               "${IOCTL_INJECT_START}" "${ret}"> "$EXP.${ret}"
+       grep -v '^ioctl([012][,<]' < "$LOG" > "$OUT.$ret"
+       match_diff "$OUT.$ret" "$EXP.$ret"
+done
diff --git a/tests-m32/ioctl_evdev-v-Xabbrev.c b/tests-m32/ioctl_evdev-v-Xabbrev.c
new file mode 100644 (file)
index 0000000..b2ed15c
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_ABBREV 1
+#include "ioctl_evdev-v.c"
diff --git a/tests-m32/ioctl_evdev-v-Xabbrev.gen.test b/tests-m32/ioctl_evdev-v-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..f6efb73
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-v-Xabbrev +ioctl.test -a26 -v -Xabbrev); do not edit.
+set -- -a26 -v -Xabbrev
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_evdev-v-Xraw.c b/tests-m32/ioctl_evdev-v-Xraw.c
new file mode 100644 (file)
index 0000000..c6f4e53
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "ioctl_evdev-v.c"
diff --git a/tests-m32/ioctl_evdev-v-Xraw.gen.test b/tests-m32/ioctl_evdev-v-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..d446068
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-v-Xraw +ioctl.test -a28 -v -Xraw); do not edit.
+set -- -a28 -v -Xraw
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_evdev-v-Xverbose.c b/tests-m32/ioctl_evdev-v-Xverbose.c
new file mode 100644 (file)
index 0000000..f911277
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "ioctl_evdev-v.c"
diff --git a/tests-m32/ioctl_evdev-v-Xverbose.gen.test b/tests-m32/ioctl_evdev-v-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..7f9c298
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-v-Xverbose +ioctl.test -a41 -v -Xverbose); do not edit.
+set -- -a41 -v -Xverbose
+. "${srcdir=.}/ioctl.test"
index bf74ef4cb4cdfcaa0a53adf720b5ca34daf0de2b..3b012fb98d0d05fda70a46e8b3265b18a43c42dc 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-v +ioctl.test -v); do not edit.
-set -- -v
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-v +ioctl.test -a26 -v); do not edit.
+set -- -a26 -v
 . "${srcdir=.}/ioctl.test"
index 02be472c7c05dbbc1e71828d576aef1548543de0..e97b54985f305d8317fe6d1181cd505afaf5ffef 100644 (file)
@@ -2,7 +2,7 @@
  * This file is part of ioctl_evdev strace test.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 #  define ABS_MT_TOOL_Y 0x3d
 # endif
 
+# if XLAT_VERBOSE
+#  define UNK_CMD(val_, str_) val_
+# else
+#  define UNK_CMD(val_, str_) val_ " /* " str_ " */"
+# endif
+
 static const unsigned int magic = 0xdeadbeef;
 static const unsigned long lmagic = (unsigned long) 0xdeadbeefbadc0dedULL;
 
@@ -43,9 +49,11 @@ print_envelope(const struct ff_envelope *const e)
 static void
 print_ffe_common(const struct ff_effect *const ffe, const char *const type_str)
 {
-       printf("ioctl(-1, EVIOCSFF, {type=%s, id=%" PRIu16
+       printf("ioctl(-1, %s", XLAT_STR(EVIOCSFF));
+       printf(", {type=%s, id=%" PRId16
               ", direction=%" PRIu16 ", ",
-              type_str, ffe->id, ffe->direction);
+              sprintxlat(type_str, ffe->type, NULL),
+              ffe->id, ffe->direction);
 # if VERBOSE
        printf("trigger={button=%hu, interval=%hu}"
               ", replay={length=%hu, delay=%hu}",
@@ -54,10 +62,11 @@ print_ffe_common(const struct ff_effect *const ffe, const char *const type_str)
 # endif /* VERBOSE */
 }
 
-# define TEST_NULL_ARG_EX(cmd, str)                                            \
+# define TEST_NULL_ARG_EX(cmd, str)                                    \
        do {                                                            \
                ioctl(-1, cmd, 0);                                      \
-               printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n", str);   \
+               printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",         \
+                      sprintxlat(str, cmd, NULL));                     \
        } while (0)
 
 # define TEST_NULL_ARG(cmd) TEST_NULL_ARG_EX(cmd, #cmd)
@@ -107,17 +116,23 @@ main(void)
        TEST_NULL_ARG(EVIOCGABS(ABS_X));
        TEST_NULL_ARG(EVIOCSABS(ABS_X));
 
-       TEST_NULL_ARG_EX(EVIOCGABS(0xe), "EVIOCGABS(0xe /* ABS_??? */)");
-       TEST_NULL_ARG_EX(EVIOCSABS(0xe), "EVIOCSABS(0xe /* ABS_??? */)");
+       TEST_NULL_ARG_EX(EVIOCGABS(0xe),
+                        "EVIOCGABS(" UNK_CMD("0xe", "ABS_???") ")");
+       TEST_NULL_ARG_EX(EVIOCSABS(0xe),
+                        "EVIOCSABS(" UNK_CMD("0xe", "ABS_???") ")");
 
        TEST_NULL_ARG(EVIOCGABS(ABS_MT_TOOL_Y));
        TEST_NULL_ARG(EVIOCSABS(ABS_MT_TOOL_Y));
 
-       TEST_NULL_ARG_EX(EVIOCGABS(0x3e), "EVIOCGABS(0x3e /* ABS_??? */)");
-       TEST_NULL_ARG_EX(EVIOCSABS(0x3e), "EVIOCSABS(0x3e /* ABS_??? */)");
+       TEST_NULL_ARG_EX(EVIOCGABS(0x3e),
+                        "EVIOCGABS(" UNK_CMD("0x3e", "ABS_???") ")");
+       TEST_NULL_ARG_EX(EVIOCSABS(0x3e),
+                        "EVIOCSABS(" UNK_CMD("0x3e", "ABS_???") ")");
 
-       TEST_NULL_ARG_EX(EVIOCGABS(0x3f), "EVIOCGABS(0x3f /* ABS_??? */)");
-       TEST_NULL_ARG_EX(EVIOCSABS(0x3f), "EVIOCSABS(0x3f /* ABS_??? */)");
+       TEST_NULL_ARG_EX(EVIOCGABS(0x3f),
+                        "EVIOCGABS(" UNK_CMD("0x3f", "ABS_???") ")");
+       TEST_NULL_ARG_EX(EVIOCSABS(0x3f),
+                        "EVIOCSABS(" UNK_CMD("0x3f", "ABS_???") ")");
 
        TEST_NULL_ARG(EVIOCGBIT(0, 0));
        TEST_NULL_ARG(EVIOCGBIT(EV_KEY, 1));
@@ -132,25 +147,36 @@ main(void)
        TEST_NULL_ARG(EVIOCGBIT(EV_PWR, 10));
        TEST_NULL_ARG(EVIOCGBIT(EV_FF_STATUS, 11));
 
-       TEST_NULL_ARG_EX(EVIOCGBIT(0x6, 12), "EVIOCGBIT(0x6 /* EV_??? */, 12)");
+       TEST_NULL_ARG_EX(EVIOCGBIT(0x6, 12),
+                        "EVIOCGBIT(" UNK_CMD("0x6", "EV_???") ", 12)");
        TEST_NULL_ARG_EX(EVIOCGBIT(0x18, 13),
-                        "EVIOCGBIT(0x18 /* EV_??? */, 13)");
+                        "EVIOCGBIT(" UNK_CMD("0x18", "EV_???") ", 13)");
        TEST_NULL_ARG_EX(EVIOCGBIT(0x1f, 14),
-                        "EVIOCGBIT(0x1f /* EV_??? */, 14)");
+                        "EVIOCGBIT(" UNK_CMD("0x1f", "EV_???") ", 14)");
 
        ioctl(-1, EVIOCGBIT(EV_MAX, 42), 0);
-       printf("ioctl(-1, EVIOCGBIT(%#x /* EV_??? */, 42), NULL)"
-              " = -1 EBADF (%m)\n", EV_MAX);
+       printf("ioctl(-1, ");
+# if XLAT_RAW
+       printf("%#x", EVIOCGBIT(EV_MAX, 42));
+# elif XLAT_VERBOSE
+       printf("%#x /* EVIOCGBIT(%#x, 42) */", EVIOCGBIT(EV_MAX, 42), EV_MAX);
+# else
+       printf("EVIOCGBIT(%#x /* EV_??? */, 42)", EV_MAX);
+# endif
+       printf(", NULL) = -1 EBADF (%m)\n");
 
        ioctl(-1, EVIOCRMFF, lmagic);
-       printf("ioctl(-1, EVIOCRMFF, %d) = -1 EBADF (%m)\n", (int) lmagic);
+       printf("ioctl(-1, %s, %d) = -1 EBADF (%m)\n",
+              XLAT_STR(EVIOCRMFF), (int) lmagic);
 
        ioctl(-1, EVIOCGRAB, lmagic);
-       printf("ioctl(-1, EVIOCGRAB, %lu) = -1 EBADF (%m)\n", lmagic);
+       printf("ioctl(-1, %s, %lu) = -1 EBADF (%m)\n",
+              XLAT_STR(EVIOCGRAB), lmagic);
 
 # ifdef EVIOCREVOKE
        ioctl(-1, EVIOCREVOKE, lmagic);
-       printf("ioctl(-1, EVIOCREVOKE, %lu) = -1 EBADF (%m)\n", lmagic);
+       printf("ioctl(-1, %s, %lu) = -1 EBADF (%m)\n",
+              XLAT_STR(EVIOCREVOKE), lmagic);
 # endif
 
        const unsigned int size = get_page_size();
@@ -162,7 +188,8 @@ main(void)
 
 # ifdef EVIOCSCLOCKID
        ioctl(-1, EVIOCSCLOCKID, val_int);
-       printf("ioctl(-1, EVIOCSCLOCKID, [%u]) = -1 EBADF (%m)\n", *val_int);
+       printf("ioctl(-1, %s, [%u]) = -1 EBADF (%m)\n",
+              XLAT_STR(EVIOCSCLOCKID), *val_int);
 # endif
 
        int *pair_int = tail_alloc(sizeof(*pair_int) * 2);
@@ -171,14 +198,15 @@ main(void)
 
 # ifdef EVIOSGREP
        ioctl(-1, EVIOCSREP, pair_int);
-       printf("ioctl(-1, EVIOCSREP, [%u, %u]) = -1 EBADF (%m)\n",
-              pair_int[0], pair_int[1]);
+       printf("ioctl(-1, %s, [%u, %u]) = -1 EBADF (%m)\n",
+              XLAT_STR(EVIOCSREP), pair_int[0], pair_int[1]);
 # endif
 
        pair_int[1] = 1;
        ioctl(-1, EVIOCSKEYCODE, pair_int);
-       printf("ioctl(-1, EVIOCSKEYCODE, [%u, %s]) = -1 EBADF (%m)\n",
-              pair_int[0], "KEY_ESC");
+       printf("ioctl(-1, %s, [%u, %s]) = -1 EBADF (%m)\n",
+              XLAT_STR(EVIOCSKEYCODE), pair_int[0],
+              XLAT_KNOWN(0x1, "KEY_ESC"));
 
 # ifdef EVIOCSKEYCODE_V2
        TAIL_ALLOC_OBJECT_CONST_PTR(struct input_keymap_entry, ike);
@@ -186,16 +214,16 @@ main(void)
        ike->keycode = 2;
 
        ioctl(-1, EVIOCSKEYCODE_V2, ike);
-       printf("ioctl(-1, EVIOCSKEYCODE_V2, {flags=%" PRIu8
-              ", len=%" PRIu8 ", ", ike->flags, ike->len);
+       printf("ioctl(-1, %s, {flags=%" PRIu8 ", len=%" PRIu8 ", ",
+              XLAT_STR(EVIOCSKEYCODE_V2), ike->flags, ike->len);
 #  if VERBOSE
        printf("index=%" PRIu16 ", keycode=%s, scancode=[",
-              ike->index, "KEY_1");
+              ike->index, XLAT_STR(KEY_1));
        unsigned int i;
        for (i = 0; i < ARRAY_SIZE(ike->scancode); ++i) {
                if (i > 0)
                        printf(", ");
-               printf("%" PRIx8, ike->scancode[i]);
+               printf("%#" PRIx8, ike->scancode[i]);
        }
        printf("]");
 #  else
@@ -256,26 +284,37 @@ main(void)
 
        ffe->type = 0xff;
        ioctl(-1, EVIOCSFF, ffe);
-       print_ffe_common(ffe, "0xff /* FF_??? */");
+       print_ffe_common(ffe,
+#  if !XLAT_RAW && !XLAT_VERBOSE
+               "0xff"
+#  endif
+#  if !XLAT_VERBOSE
+               " /* "
+#  endif
+               "FF_???"
+#  if !XLAT_VERBOSE
+               " */"
+#  endif
+               );
        errno = EBADF;
        printf("}) = -1 EBADF (%m)\n");
 # endif
 
        ioctl(-1, _IOC(_IOC_READ, 0x45, 0x1, 0xff), lmagic);
        printf("ioctl(-1, %s, %#lx) = -1 EBADF (%m)\n",
-              "_IOC(_IOC_READ, 0x45, 0x1, 0xff)", lmagic);
+              XLAT_STR(_IOC(_IOC_READ, 0x45, 0x1, 0xff)), lmagic);
 
        ioctl(-1, _IOC(_IOC_WRITE, 0x45, 0x1, 0xff), lmagic);
        printf("ioctl(-1, %s, %#lx) = -1 EBADF (%m)\n",
-              "_IOC(_IOC_WRITE, 0x45, 0x1, 0xff)", lmagic);
+              XLAT_STR(_IOC(_IOC_WRITE, 0x45, 0x1, 0xff)), lmagic);
 
        ioctl(-1, _IOC(_IOC_READ|_IOC_WRITE, 0x45, 0xfe, 0xff), lmagic);
        printf("ioctl(-1, %s, %#lx) = -1 EBADF (%m)\n",
-              "_IOC(_IOC_READ|_IOC_WRITE, 0x45, 0xfe, 0xff)", lmagic);
+              XLAT_STR(_IOC(_IOC_READ|_IOC_WRITE, 0x45, 0xfe, 0xff)), lmagic);
 
        ioctl(-1, _IOC(_IOC_READ|_IOC_WRITE, 0x45, 0, 0), lmagic);
        printf("ioctl(-1, %s, %#lx) = -1 EBADF (%m)\n",
-              "_IOC(_IOC_READ|_IOC_WRITE, 0x45, 0, 0)", lmagic);
+              XLAT_STR(_IOC(_IOC_READ|_IOC_WRITE, 0x45, 0, 0)), lmagic);
 
        puts("+++ exited with 0 +++");
        return 0;
index 68a43f7c476be333b2d8be74037dca4195fc3abf..4b9ba41345a8734ad74294a9338ae75c7bdeca5b 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev +ioctl.test ); do not edit.
-set -- 
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev +ioctl.test -a26); do not edit.
+set -- -a26
 . "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_hdio-Xabbrev.c b/tests-m32/ioctl_hdio-Xabbrev.c
new file mode 100644 (file)
index 0000000..aa0af2a
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_ABBREV 1
+#include "ioctl_hdio.c"
diff --git a/tests-m32/ioctl_hdio-Xabbrev.gen.test b/tests-m32/ioctl_hdio-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..1ab876b
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_hdio-Xabbrev +ioctl.test -a27 -Xabbrev); do not edit.
+set -- -a27 -Xabbrev
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_hdio-Xraw.c b/tests-m32/ioctl_hdio-Xraw.c
new file mode 100644 (file)
index 0000000..9e169a8
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "ioctl_hdio.c"
diff --git a/tests-m32/ioctl_hdio-Xraw.gen.test b/tests-m32/ioctl_hdio-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..fa03656
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_hdio-Xraw +ioctl.test -a20 -Xraw); do not edit.
+set -- -a20 -Xraw
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_hdio-Xverbose.c b/tests-m32/ioctl_hdio-Xverbose.c
new file mode 100644 (file)
index 0000000..29e45e8
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "ioctl_hdio.c"
diff --git a/tests-m32/ioctl_hdio-Xverbose.gen.test b/tests-m32/ioctl_hdio-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..1dde165
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_hdio-Xverbose +ioctl.test -a39 -Xverbose); do not edit.
+set -- -a39 -Xverbose
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_hdio-success-Xabbrev.c b/tests-m32/ioctl_hdio-success-Xabbrev.c
new file mode 100644 (file)
index 0000000..410f196
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_ABBREV 1
+#include "ioctl_hdio-success.c"
diff --git a/tests-m32/ioctl_hdio-success-Xabbrev.gen.test b/tests-m32/ioctl_hdio-success-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..fa74b9e
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_hdio-success-Xabbrev +ioctl-success.sh -a27 -Xabbrev); do not edit.
+set -- -a27 -Xabbrev
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests-m32/ioctl_hdio-success-Xraw.c b/tests-m32/ioctl_hdio-success-Xraw.c
new file mode 100644 (file)
index 0000000..ee63bb8
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "ioctl_hdio-success.c"
diff --git a/tests-m32/ioctl_hdio-success-Xraw.gen.test b/tests-m32/ioctl_hdio-success-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..2ac7c9c
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_hdio-success-Xraw +ioctl-success.sh -a20 -Xraw); do not edit.
+set -- -a20 -Xraw
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests-m32/ioctl_hdio-success-Xverbose.c b/tests-m32/ioctl_hdio-success-Xverbose.c
new file mode 100644 (file)
index 0000000..bef62b0
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "ioctl_hdio-success.c"
diff --git a/tests-m32/ioctl_hdio-success-Xverbose.gen.test b/tests-m32/ioctl_hdio-success-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..acbded5
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_hdio-success-Xverbose +ioctl-success.sh -a39 -Xverbose); do not edit.
+set -- -a39 -Xverbose
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests-m32/ioctl_hdio-success-v-Xabbrev.c b/tests-m32/ioctl_hdio-success-v-Xabbrev.c
new file mode 100644 (file)
index 0000000..1374537
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_ABBREV 1
+#include "ioctl_hdio-success-v.c"
diff --git a/tests-m32/ioctl_hdio-success-v-Xabbrev.gen.test b/tests-m32/ioctl_hdio-success-v-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..d6a3ab2
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_hdio-success-v-Xabbrev +ioctl-success.sh -a27 -v -Xabbrev); do not edit.
+set -- -a27 -v -Xabbrev
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests-m32/ioctl_hdio-success-v-Xraw.c b/tests-m32/ioctl_hdio-success-v-Xraw.c
new file mode 100644 (file)
index 0000000..c34ad58
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "ioctl_hdio-success-v.c"
diff --git a/tests-m32/ioctl_hdio-success-v-Xraw.gen.test b/tests-m32/ioctl_hdio-success-v-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..b0d664b
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_hdio-success-v-Xraw +ioctl-success.sh -a20 -v -Xraw); do not edit.
+set -- -a20 -v -Xraw
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests-m32/ioctl_hdio-success-v-Xverbose.c b/tests-m32/ioctl_hdio-success-v-Xverbose.c
new file mode 100644 (file)
index 0000000..4f44b49
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "ioctl_hdio-success-v.c"
diff --git a/tests-m32/ioctl_hdio-success-v-Xverbose.gen.test b/tests-m32/ioctl_hdio-success-v-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..72e9f62
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_hdio-success-v-Xverbose +ioctl-success.sh -a39 -v -Xverbose); do not edit.
+set -- -a39 -v -Xverbose
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests-m32/ioctl_hdio-success-v.c b/tests-m32/ioctl_hdio-success-v.c
new file mode 100644 (file)
index 0000000..f48ca93
--- /dev/null
@@ -0,0 +1,2 @@
+#define VERBOSE 1
+#include "ioctl_hdio-success.c"
diff --git a/tests-m32/ioctl_hdio-success-v.gen.test b/tests-m32/ioctl_hdio-success-v.gen.test
new file mode 100755 (executable)
index 0000000..a4b6c0f
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_hdio-success-v +ioctl-success.sh -a27 -v); do not edit.
+set -- -a27 -v
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests-m32/ioctl_hdio-success.c b/tests-m32/ioctl_hdio-success.c
new file mode 100644 (file)
index 0000000..680d703
--- /dev/null
@@ -0,0 +1,2 @@
+#define INJECT_RETVAL 42
+#include "ioctl_hdio.c"
diff --git a/tests-m32/ioctl_hdio-success.gen.test b/tests-m32/ioctl_hdio-success.gen.test
new file mode 100755 (executable)
index 0000000..ec9318a
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_hdio-success +ioctl-success.sh -a27); do not edit.
+set -- -a27
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests-m32/ioctl_hdio-v-Xabbrev.c b/tests-m32/ioctl_hdio-v-Xabbrev.c
new file mode 100644 (file)
index 0000000..86aca7d
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_ABBREV 1
+#include "ioctl_hdio-v.c"
diff --git a/tests-m32/ioctl_hdio-v-Xabbrev.gen.test b/tests-m32/ioctl_hdio-v-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..92df94d
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_hdio-v-Xabbrev +ioctl.test -a27 -v -Xabbrev); do not edit.
+set -- -a27 -v -Xabbrev
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_hdio-v-Xraw.c b/tests-m32/ioctl_hdio-v-Xraw.c
new file mode 100644 (file)
index 0000000..e55841a
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "ioctl_hdio-v.c"
diff --git a/tests-m32/ioctl_hdio-v-Xraw.gen.test b/tests-m32/ioctl_hdio-v-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..a7e81ca
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_hdio-v-Xraw +ioctl.test -a20 -v -Xraw); do not edit.
+set -- -a20 -v -Xraw
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_hdio-v-Xverbose.c b/tests-m32/ioctl_hdio-v-Xverbose.c
new file mode 100644 (file)
index 0000000..00b524e
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "ioctl_hdio-v.c"
diff --git a/tests-m32/ioctl_hdio-v-Xverbose.gen.test b/tests-m32/ioctl_hdio-v-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..eba5488
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_hdio-v-Xverbose +ioctl.test -a39 -v -Xverbose); do not edit.
+set -- -a39 -v -Xverbose
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_hdio-v.c b/tests-m32/ioctl_hdio-v.c
new file mode 100644 (file)
index 0000000..fcff670
--- /dev/null
@@ -0,0 +1,2 @@
+#define VERBOSE 1
+#include "ioctl_hdio.c"
diff --git a/tests-m32/ioctl_hdio-v.gen.test b/tests-m32/ioctl_hdio-v.gen.test
new file mode 100755 (executable)
index 0000000..7d1adc3
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_hdio-v +ioctl.test -a27 -v); do not edit.
+set -- -a27 -v
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_hdio.c b/tests-m32/ioctl_hdio.c
new file mode 100644 (file)
index 0000000..d340782
--- /dev/null
@@ -0,0 +1,227 @@
+/*
+ * Check HDIO_* ioctl decoding.
+ *
+ * Copyright (c) 2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <linux/hdreg.h>
+#include <sys/ioctl.h>
+
+static const char *errstr;
+
+static long
+do_ioctl(kernel_ulong_t cmd, kernel_ulong_t arg)
+{
+       long rc = ioctl(-1, cmd, arg);
+
+       errstr = sprintrc(rc);
+
+#ifdef INJECT_RETVAL
+       if (rc != INJECT_RETVAL)
+               error_msg_and_fail("Got a return value of %ld != %ld",
+                                  rc, (long) INJECT_RETVAL);
+
+       static char inj_errstr[4096];
+
+       snprintf(inj_errstr, sizeof(inj_errstr), "%s (INJECTED)", errstr);
+       errstr = inj_errstr;
+#endif
+
+       return rc;
+}
+
+static inline long
+do_ioctl_ptr(kernel_ulong_t cmd, const void *arg)
+{
+       return do_ioctl(cmd, (uintptr_t) arg);
+}
+
+int
+main(int argc, char *argv[])
+{
+#ifdef INJECT_RETVAL
+       unsigned long num_skip;
+       bool locked = false;
+
+       if (argc < 2)
+               error_msg_and_fail("Usage: %s NUM_SKIP", argv[0]);
+
+       num_skip = strtoul(argv[1], NULL, 0);
+
+       for (size_t i = 0; i < num_skip; i++) {
+               long ret = ioctl(-1, HDIO_GET_UNMASKINTR, 0);
+
+               printf("ioctl(-1, %s, 0) = %s%s\n",
+                      XLAT_STR(HDIO_GET_UNMASKINTR), sprintrc(ret),
+                      ret == INJECT_RETVAL ? " (INJECTED)" : "");
+
+               if (ret != INJECT_RETVAL)
+                       continue;
+
+               locked = true;
+               break;
+       }
+
+       if (!locked)
+               error_msg_and_fail("Hasn't locked on ioctl(-1"
+                                  ", HDIO_GET_UNMASKINTR, 0) returning %d",
+                                  INJECT_RETVAL);
+#endif
+
+       long rc;
+
+       /* Decoding is not supported */
+       static const struct {
+               uint32_t cmd;
+               const char *str;
+       } unsupp_cmds[] = {
+               { ARG_STR(HDIO_GET_UNMASKINTR) },
+               { ARG_STR(HDIO_GET_MULTCOUNT) },
+               { ARG_STR(HDIO_GET_QDMA) },
+               { ARG_STR(HDIO_SET_XFER) },
+               { ARG_STR(HDIO_OBSOLETE_IDENTITY) },
+               { ARG_STR(HDIO_GET_KEEPSETTINGS) },
+               { ARG_STR(HDIO_GET_32BIT) },
+               { ARG_STR(HDIO_GET_NOWERR) },
+               { ARG_STR(HDIO_GET_DMA) },
+               { ARG_STR(HDIO_GET_NICE) },
+               { ARG_STR(HDIO_GET_IDENTITY) },
+               { ARG_STR(HDIO_GET_WCACHE) },
+               { ARG_STR(HDIO_GET_ACOUSTIC) },
+               { ARG_STR(HDIO_GET_ADDRESS) },
+               { ARG_STR(HDIO_GET_BUSSTATE) },
+               { ARG_STR(HDIO_TRISTATE_HWIF) },
+               { ARG_STR(HDIO_DRIVE_RESET) },
+               { ARG_STR(HDIO_DRIVE_TASKFILE) },
+               { ARG_STR(HDIO_DRIVE_TASK) },
+               { ARG_STR(HDIO_SET_MULTCOUNT) },
+               { ARG_STR(HDIO_SET_UNMASKINTR) },
+               { ARG_STR(HDIO_SET_KEEPSETTINGS) },
+               { ARG_STR(HDIO_SET_32BIT) },
+               { ARG_STR(HDIO_SET_NOWERR) },
+               { ARG_STR(HDIO_SET_DMA) },
+               { ARG_STR(HDIO_SET_PIO_MODE) },
+               { ARG_STR(HDIO_SCAN_HWIF) },
+               { ARG_STR(HDIO_UNREGISTER_HWIF) },
+               { ARG_STR(HDIO_SET_NICE) },
+               { ARG_STR(HDIO_SET_WCACHE) },
+               { ARG_STR(HDIO_SET_ACOUSTIC) },
+               { ARG_STR(HDIO_SET_BUSSTATE) },
+               { ARG_STR(HDIO_SET_QDMA) },
+               { ARG_STR(HDIO_SET_ADDRESS) },
+       };
+
+       for (size_t i = 0; i < ARRAY_SIZE(unsupp_cmds); i++) {
+               do_ioctl(unsupp_cmds[i].cmd, 0);
+               printf("ioctl(-1, " XLAT_FMT ", 0) = %s\n",
+                      XLAT_SEL(unsupp_cmds[i].cmd, unsupp_cmds[i].str),
+                      errstr);
+
+               do_ioctl(unsupp_cmds[i].cmd,
+                        (unsigned long) 0xbadc0deddeadc0deULL);
+               printf("ioctl(-1, " XLAT_FMT ", %#lx) = %s\n",
+                      XLAT_SEL(unsupp_cmds[i].cmd, unsupp_cmds[i].str),
+                      (unsigned long) 0xbadc0deddeadc0deULL, errstr);
+       }
+
+
+       /* HDIO_GETGEO */
+       do_ioctl(HDIO_GETGEO, 0);
+       printf("ioctl(-1, %s, NULL) = %s\n",
+              XLAT_STR(HDIO_GETGEO), errstr);
+
+       TAIL_ALLOC_OBJECT_CONST_PTR(struct hd_geometry, p_hd_geom);
+
+       p_hd_geom->heads = 0xca;
+       p_hd_geom->sectors = 0xfe;
+       p_hd_geom->cylinders = 0xbabe;
+       p_hd_geom->start = (unsigned long) 0xbadc0deddeadfaceULL;
+
+       do_ioctl_ptr(HDIO_GETGEO, (char *) p_hd_geom + 1);
+       printf("ioctl(-1, %s, %p) = %s\n",
+              XLAT_STR(HDIO_GETGEO), (char *) p_hd_geom + 1, errstr);
+
+       rc = do_ioctl_ptr(HDIO_GETGEO, p_hd_geom);
+       printf("ioctl(-1, %s, ", XLAT_STR(HDIO_GETGEO));
+       if (rc >= 0) {
+               printf("{heads=202, sectors=254, cylinders=47806, start=%lu}",
+                      (unsigned long) 0xbadc0deddeadfaceULL);
+       } else {
+               printf("%p", p_hd_geom);
+       }
+       printf(") = %s\n", errstr);
+
+       /* HDIO_DRIVE_CMD */
+       do_ioctl(HDIO_DRIVE_CMD, 0);
+       printf("ioctl(-1, %s, NULL) = %s\n",
+              XLAT_STR(HDIO_DRIVE_CMD), errstr);
+
+       TAIL_ALLOC_OBJECT_CONST_PTR(struct hd_drive_cmd_hdr, p_hd_drive_cmd);
+       struct hd_drive_cmd_hdr *p_hd_drive_cmd2 =
+               tail_alloc(sizeof(*p_hd_drive_cmd2) + 16);
+       struct hd_drive_cmd_hdr *p_hd_drive_cmd3 =
+               tail_alloc(sizeof(*p_hd_drive_cmd3) + DEFAULT_STRLEN + 1);
+
+       fill_memory(p_hd_drive_cmd2, sizeof(*p_hd_drive_cmd2) + 16);
+       fill_memory(p_hd_drive_cmd3,
+                   sizeof(*p_hd_drive_cmd3) + DEFAULT_STRLEN + 1);
+
+       p_hd_drive_cmd->command = 0xca;
+       p_hd_drive_cmd->sector_number = 0xff;
+       p_hd_drive_cmd->feature = 0xee;
+       p_hd_drive_cmd->sector_count = 0;
+
+       do_ioctl_ptr(HDIO_DRIVE_CMD, (char *) p_hd_drive_cmd + 1);
+       printf("ioctl(-1, %s, %p) = %s\n",
+              XLAT_STR(HDIO_DRIVE_CMD), (char *) p_hd_drive_cmd + 1, errstr);
+
+       for (size_t i = 0; i < 2; i++) {
+               p_hd_drive_cmd->sector_count = i;
+
+               rc = do_ioctl_ptr(HDIO_DRIVE_CMD, p_hd_drive_cmd);
+               printf("ioctl(-1, %s, {command=" XLAT_FMT ", sector_number=255"
+                      ", feature=238, sector_count=%zu",
+                      XLAT_STR(HDIO_DRIVE_CMD),
+                      XLAT_SEL(0xca, "ATA_CMD_WRITE"), i);
+               if (rc >= 0) {
+                       printf("} => {/* status */ 0xca, /* error */ 255"
+                              ", /* nsector */ 238");
+                       if (i)
+                               printf(", %p", p_hd_drive_cmd + 1);
+               }
+               printf("}) = %s\n", errstr);
+       }
+
+       rc = do_ioctl_ptr(HDIO_DRIVE_CMD, p_hd_drive_cmd2);
+       printf("ioctl(-1, %s, {command=0x80" NRAW(" /* ATA_CMD_??? */")
+              ", sector_number=129, feature=130, sector_count=131",
+              XLAT_STR(HDIO_DRIVE_CMD));
+       if (rc >= 0) {
+               printf("} => {/* status */ 0x80, /* error */ 129"
+                      ", /* nsector */ 130, %p", p_hd_drive_cmd2 + 1);
+       }
+       printf("}) = %s\n", errstr);
+
+       rc = do_ioctl_ptr(HDIO_DRIVE_CMD, p_hd_drive_cmd3);
+       printf("ioctl(-1, %s, {command=0x80" NRAW(" /* ATA_CMD_??? */")
+              ", sector_number=129, feature=130, sector_count=131",
+              XLAT_STR(HDIO_DRIVE_CMD));
+       if (rc >= 0) {
+               printf("} => {/* status */ 0x80, /* error */ 129"
+                      ", /* nsector */ 130, ");
+               print_quoted_hex(p_hd_drive_cmd3 + 1, DEFAULT_STRLEN);
+               printf("...");
+       }
+       printf("}) = %s\n", errstr);
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
diff --git a/tests-m32/ioctl_hdio.gen.test b/tests-m32/ioctl_hdio.gen.test
new file mode 100755 (executable)
index 0000000..478c717
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_hdio +ioctl.test -a27); do not edit.
+set -- -a27
+. "${srcdir=.}/ioctl.test"
index 6be0c0eec8429a1568b3dd99fb749df48041e3ae..6ca006ae8579f5f3443cb8bdfadb557563737873 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of ioctl_inotify strace test.
  *
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -13,7 +13,7 @@
 #include <stdio.h>
 #include <string.h>
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
 #include <linux/ioctl.h>
 
 #ifndef INOTIFY_IOC_SETNEXTWD
index 26e72cec69dea004ec86f6829689c917a4bf07e7..9107c30c0b1b86d4dfd42a8ea2f6a2293b2d3a63 100644 (file)
@@ -4,7 +4,7 @@
  *
  * kvmtest.c author: Josh Triplett <josh@joshtriplett.org>
  * Copyright (c) 2015 Intel Corporation
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2019 The strace developers.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  * of this software and associated documentation files (the "Software"), to
@@ -238,6 +238,10 @@ run_kvm(const int vcpu_fd, struct kvm_run *const run, const size_t mmap_size,
                                           run->mmio.data[4], run->mmio.data[5],
                                           run->mmio.data[6], run->mmio.data[7],
                                           run->mmio.len, run->mmio.is_write);
+               case KVM_EXIT_FAIL_ENTRY:
+                       error_msg_and_fail("Got an unexpected FAIL_ENTRY exit:"
+                                          " hardware_entry_failure_reason %" PRI__x64,
+                                          run->fail_entry.hardware_entry_failure_reason);
 
                default:
                        error_msg_and_fail("exit_reason = %#x",
index 5366560305abd48e595947e29c61a4597c343e98..69c2f191370cf3c6cdc436ad035850e42a8e5b76 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2016 JingPiao Chen <chenjingpiao@gmail.com>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 #include <unistd.h>
 #include <sys/ioctl.h>
 #include <sys/sysmacros.h>
-#include <asm/unistd.h>
+#include "scno.h"
 #include <linux/ioctl.h>
 #include <linux/loop.h>
 #include "print_fields.h"
 
+#ifdef HAVE_STRUCT_LOOP_CONFIG
+typedef struct loop_config struct_loop_config;
+#else
+# include "types/loop.h"
+#endif
+
 #define XLAT_MACROS_ONLY
 #include "xlat/loop_cmds.h"
 #undef XLAT_MACROS_ONLY
@@ -155,6 +161,27 @@ print_loop_info64(struct loop_info64 * const info64, bool print_encrypt,
 #endif /* !ABBREV */
 }
 
+static void
+print_loop_config(struct_loop_config *config, bool print_reserved)
+{
+#if ABBREV
+       printf("%p", config);
+#else
+       printf("{fd=%d, block_size=%u, info=",
+              (int) config->fd, config->block_size);
+       print_loop_info64(&config->info, false, "LO_CRYPT_NONE", NULL,
+                         "LO_FLAGS_READ_ONLY");
+       if (print_reserved) {
+               printf(", __reserved=");
+               for (size_t i = 0; i < ARRAY_SIZE(config->__reserved); ++i)
+                       printf("%s%#llx", (i ? ", " : "["),
+                              (unsigned long long) config->__reserved[i]);
+               printf("]");
+       }
+       printf("}");
+#endif /* !ABBREV */
+}
+
 int
 main(void)
 {
@@ -167,6 +194,7 @@ main(void)
 
        TAIL_ALLOC_OBJECT_CONST_PTR(struct loop_info, info);
        TAIL_ALLOC_OBJECT_CONST_PTR(struct loop_info64, info64);
+       TAIL_ALLOC_OBJECT_CONST_PTR(struct_loop_config, config);
 
        /* Unknown loop commands */
        sys_ioctl(-1, unknown_loop_cmd, magic);
@@ -178,12 +206,12 @@ main(void)
               _IOC_SIZE((unsigned int) unknown_loop_cmd),
               (unsigned long) magic);
 
-       sys_ioctl(-1, LOOP_SET_BLOCK_SIZE + 1, magic);
+       sys_ioctl(-1, LOOP_CONFIGURE + 1, magic);
        printf("ioctl(-1, _IOC(%s, 0x4c, %#x, %#x), %#lx) = "
               "-1 EBADF (%m)\n",
               _IOC_NONE ? "0" : "_IOC_NONE",
-              _IOC_NR(LOOP_SET_BLOCK_SIZE + 1),
-              _IOC_SIZE(LOOP_SET_BLOCK_SIZE + 1),
+              _IOC_NR(LOOP_CONFIGURE + 1),
+              _IOC_SIZE(LOOP_CONFIGURE + 1),
               (unsigned long) magic);
 
        sys_ioctl(-1, LOOP_CTL_GET_FREE + 1, magic);
@@ -281,6 +309,32 @@ main(void)
        ioctl(-1, LOOP_GET_STATUS64, (unsigned long) info64 | kernel_mask);
        printf("ioctl(-1, LOOP_GET_STATUS64, %p) = -1 EBADF (%m)\n", info64);
 
+       /* LOOP_CONFIGURE */
+       ioctl(-1, LOOP_CONFIGURE, NULL);
+       printf("ioctl(-1, LOOP_CONFIGURE, NULL) = -1 EBADF (%m)\n");
+
+       fill_memory(config, sizeof(*config));
+       config->info.lo_flags = LO_FLAGS_READ_ONLY;
+       config->info.lo_encrypt_type = LO_CRYPT_NONE;
+       memset(config->info.lo_file_name, 'C', sizeof(config->info.lo_file_name));
+       memset(config->info.lo_crypt_name, 'D', sizeof(config->info.lo_crypt_name));
+       memset(config->info.lo_encrypt_key, 'E', sizeof(config->info.lo_encrypt_key));
+
+       ioctl(-1, LOOP_CONFIGURE, (void *) config + ALIGNOF(config));
+       printf("ioctl(-1, LOOP_CONFIGURE, %p) = -1 EBADF (%m)\n",
+              (void *) config + ALIGNOF(config));
+
+       printf("ioctl(-1, LOOP_CONFIGURE, ");
+       print_loop_config(config, true);
+       ioctl(-1, LOOP_CONFIGURE, config);
+       printf(") = -1 EBADF (%m)\n");
+
+       memset(config->__reserved, 0, sizeof(config->__reserved));
+       printf("ioctl(-1, LOOP_CONFIGURE, ");
+       print_loop_config(config, false);
+       ioctl(-1, LOOP_CONFIGURE, config);
+       printf(") = -1 EBADF (%m)\n");
+
        /* LOOP_CHANGE_FD */
        sys_ioctl(-1, LOOP_CHANGE_FD, magic);
        printf("ioctl(-1, LOOP_CHANGE_FD, %d) = -1 EBADF (%m)\n",
index 74dbe6e9486903cb8c440da1fc71e6a9d11ba69c..0af05aaf60747129636423c8852e23258cef70de 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of NS_* commands of ioctl syscall.
  *
  * Copyright (c) 2017 Nikolay Marchuk <marchuk.nikolay.a@gmail.com>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -86,22 +86,27 @@ child(void *arg)
 
 #ifdef IA64
 extern int __clone2(int (*)(void *), void *, size_t, int, void *, ...);
-# define clone(fn, child_stack, flags, arg)    \
-               __clone2(fn, child_stack, get_page_size() / 2, flags, arg)
+# define do_clone(fn_, stack_, size_, flags_, arg_, ...)       \
+       __clone2((fn_), (stack_), (size_), (flags_), (arg_), ## __VA_ARGS__)
+#else
+# define do_clone(fn_, stack_, size_, flags_, arg_, ...)       \
+       clone((fn_), (stack_), (flags_), (arg_), ## __VA_ARGS__)
 #endif
 
 static void
 test_user_namespace(void)
 {
-       pid_t pid;
        int pipefd[2];
-       int status;
-
        if (pipe(pipefd))
                perror_msg_and_fail("pipe");
 
-       pid = clone(child, tail_alloc(get_page_size() / 2),
-                   CLONE_NEWUSER | CLONE_UNTRACED | SIGCHLD, pipefd);
+       const unsigned long child_stack_size = get_page_size();
+       void *const child_stack =
+               tail_alloc(child_stack_size * 2) + child_stack_size;
+
+       const pid_t pid = do_clone(child, child_stack, child_stack_size,
+                                  CLONE_NEWUSER | CLONE_UNTRACED | SIGCHLD,
+                                  pipefd);
        if (pid == -1) {
                perror("clone");
                return;
@@ -109,6 +114,8 @@ test_user_namespace(void)
        close(pipefd[0]);
        test_clone(pid);
        close(pipefd[1]);
+
+       int status;
        if (wait(&status) != pid) {
                perror_msg_and_fail("wait");
        } else if (status != 0) {
index eaf572ac4302793e8c7b4c0a85151d7a1538e223..51419b10712cb47c38c13d67a5853326eda7e663 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Check decoding of successful PERF_EVENT_IOC_{ID,QUERY_BPF} ioctls.
  *
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -9,29 +9,31 @@
 
 #include "tests.h"
 
-#ifdef HAVE_LINUX_PERF_EVENT_H
 
-# include <assert.h>
-# include <inttypes.h>
-# include <stdio.h>
-# include <stdlib.h>
-# include <string.h>
-# include <sys/ioctl.h>
+#include <assert.h>
+#include <inttypes.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/ioctl.h>
+
+#ifdef HAVE_LINUX_PERF_EVENT_H
 # include <linux/perf_event.h>
+#endif
 
-# ifndef PERF_EVENT_IOC_ID
-#  define PERF_EVENT_IOC_ID                    _IOR('$', 7, void *)
-# endif
+#ifndef PERF_EVENT_IOC_ID
+# define PERF_EVENT_IOC_ID                     _IOR('$', 7, void *)
+#endif
 
-# ifndef PERF_EVENT_IOC_QUERY_BPF
-#  define PERF_EVENT_IOC_QUERY_BPF             _IOWR('$', 10, void *)
+#ifndef PERF_EVENT_IOC_QUERY_BPF
+# define PERF_EVENT_IOC_QUERY_BPF              _IOWR('$', 10, void *)
 
 struct perf_event_query_bpf {
         uint32_t ids_len;
         uint32_t prog_cnt;
         uint32_t ids[0];
 };
-# endif
+#endif
 
 int
 main(int argc, char **argv)
@@ -137,9 +139,3 @@ main(int argc, char **argv)
        puts("+++ exited with 0 +++");
        return 0;
 }
-
-#else
-
-SKIP_MAIN_UNDEFINED("HAVE_LINUX_PERF_EVENT_H");
-
-#endif
diff --git a/tests-m32/ioctl_perf-success.gen.test b/tests-m32/ioctl_perf-success.gen.test
new file mode 100755 (executable)
index 0000000..3ff7205
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_perf-success +ioctl-success.sh -a35); do not edit.
+set -- -a35
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests-m32/ioctl_perf-success.test b/tests-m32/ioctl_perf-success.test
deleted file mode 100755 (executable)
index 2edd1d3..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/sh -efu
-#
-# Check decoding of successful PERF_EVENT_IOC_{ID,QUERY_BPF} ioctls.
-#
-# Copyright (c) 2018 The strace developers.
-# All rights reserved.
-#
-# SPDX-License-Identifier: GPL-2.0-or-later
-
-. "${srcdir=.}/scno_tampering.sh"
-
-: ${IOCTL_INJECT_START=256}
-: ${IOCTL_INJECT_RETVAL=42}
-
-run_prog
-run_strace -a35 -e trace=ioctl \
-       -e inject=ioctl:retval="${IOCTL_INJECT_RETVAL}":when="${IOCTL_INJECT_START}+" \
-       ../ioctl_perf-success "${IOCTL_INJECT_START}" "${IOCTL_INJECT_RETVAL}" > "$EXP"
-grep -v '^ioctl([012][,<]' < "$LOG" > "$OUT"
-match_diff "$OUT" "$EXP"
index 30cb35f6cd2689ebfc7f549b037d4a619814e944..af4f443eb4e9d74cbe3ce1184521dc2f9e8bd2f9 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Check decoding of PERF_EVENT_IOC_* commands of ioctl syscall.
  *
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -16,7 +16,7 @@
 # include <string.h>
 # include <unistd.h>
 # include <sys/ioctl.h>
-# include <asm/unistd.h>
+# include "scno.h"
 # include <linux/perf_event.h>
 
 /*
index 52d9698afc3832732ce1f82f9c311d58bfc855dc..ef2bca7736d8a75b6c10e156767c34bef8c32629 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of PTP_* commands of ioctl syscall.
  *
  * Copyright (c) 2018 Harsha Sharma <harshasharmaiitr@gmail.com>
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -12,7 +12,6 @@
 
 #ifdef HAVE_STRUCT_PTP_SYS_OFFSET
 
-# include <errno.h>
 # include <fcntl.h>
 # include <inttypes.h>
 # include <stdio.h>
 # include <sys/ioctl.h>
 # include <linux/ptp_clock.h>
 
+# ifndef PTP_CLOCK_GETCAPS2
+#  define PTP_CLOCK_GETCAPS2 _IOR(PTP_CLK_MAGIC, 10, struct ptp_clock_caps)
+# endif
+# ifndef PTP_EXTTS_REQUEST2
+#  define PTP_EXTTS_REQUEST2 _IOW(PTP_CLK_MAGIC, 11, struct ptp_extts_request)
+# endif
+# ifndef PTP_PEROUT_REQUEST2
+#  define PTP_PEROUT_REQUEST2 _IOW(PTP_CLK_MAGIC, 12, struct ptp_perout_request)
+# endif
+# ifndef PTP_ENABLE_PPS2
+#  define PTP_ENABLE_PPS2 _IOW(PTP_CLK_MAGIC, 13, int)
+# endif
+# ifndef PTP_SYS_OFFSET2
+#  define PTP_SYS_OFFSET2 _IOW(PTP_CLK_MAGIC, 14, struct ptp_sys_offset)
+# endif
+
 # include "xlat.h"
-# include "xlat/ptp_flags_options.h"
+# include "xlat/ptp_extts_flags.h"
+# include "xlat/ptp_perout_flags.h"
 
 static void
 test_no_device(void)
 {
+       const char *errstr;
+
        TAIL_ALLOC_OBJECT_CONST_PTR(struct ptp_clock_caps, caps);
        fill_memory(caps, sizeof(*caps));
 
@@ -39,60 +57,93 @@ test_no_device(void)
        TAIL_ALLOC_OBJECT_CONST_PTR(struct ptp_perout_request, perout);
        fill_memory(perout, sizeof(*perout));
 
-       int saved_errno;
-
        /* PTP_CLOCK_GETCAPS */
-       ioctl(-1, PTP_CLOCK_GETCAPS, NULL);
-       printf("ioctl(-1, PTP_CLOCK_GETCAPS, NULL) = -1 EBADF (%m)\n");
-       ioctl(-1, PTP_CLOCK_GETCAPS, caps);
-       printf("ioctl(-1, PTP_CLOCK_GETCAPS, %p) = -1 EBADF (%m)\n", caps);
+       errstr = sprintrc(ioctl(-1, PTP_CLOCK_GETCAPS, NULL));
+       printf("ioctl(-1, PTP_CLOCK_GETCAPS, NULL) = %s\n", errstr);
+       errstr = sprintrc(ioctl(-1, PTP_CLOCK_GETCAPS, caps));
+       printf("ioctl(-1, PTP_CLOCK_GETCAPS, %p) = %s\n", caps, errstr);
 
        /* PTP_SYS_OFFSET */
-       ioctl(-1, PTP_SYS_OFFSET, NULL);
-       printf("ioctl(-1, PTP_SYS_OFFSET, NULL) = -1 EBADF (%m)\n");
-       ioctl(-1, PTP_SYS_OFFSET, sysoff);
-       printf("ioctl(-1, PTP_SYS_OFFSET, {n_samples=%u}) = -1 EBADF (%m)\n",
-              sysoff->n_samples);
+       errstr = sprintrc(ioctl(-1, PTP_SYS_OFFSET, NULL));
+       printf("ioctl(-1, PTP_SYS_OFFSET, NULL) = %s\n", errstr);
+       errstr = sprintrc(ioctl(-1, PTP_SYS_OFFSET, sysoff));
+       printf("ioctl(-1, PTP_SYS_OFFSET, {n_samples=%u}) = %s\n",
+              sysoff->n_samples, errstr);
 
        /* PTP_ENABLE_PPS */
-       ioctl(-1, PTP_ENABLE_PPS, 0);
-       printf("ioctl(-1, PTP_ENABLE_PPS, 0) = -1 EBADF (%m)\n");
-       ioctl(-1, PTP_ENABLE_PPS, 1);
-       printf("ioctl(-1, PTP_ENABLE_PPS, 1) = -1 EBADF (%m)\n");
+       errstr = sprintrc(ioctl(-1, PTP_ENABLE_PPS, 0));
+       printf("ioctl(-1, PTP_ENABLE_PPS, 0) = %s\n", errstr);
+       errstr = sprintrc(ioctl(-1, PTP_ENABLE_PPS, 1));
+       printf("ioctl(-1, PTP_ENABLE_PPS, 1) = %s\n", errstr);
 
        /* PTP_EXTTS_REQUEST */
-       ioctl(-1, PTP_EXTTS_REQUEST, NULL);
-       printf("ioctl(-1, PTP_EXTTS_REQUEST, NULL) = -1 EBADF (%m)\n");
-       ioctl(-1, PTP_EXTTS_REQUEST, extts);
-       saved_errno = errno;
+       errstr = sprintrc(ioctl(-1, PTP_EXTTS_REQUEST, NULL));
+       printf("ioctl(-1, PTP_EXTTS_REQUEST, NULL) = %s\n", errstr);
+       errstr = sprintrc(ioctl(-1, PTP_EXTTS_REQUEST, extts));
        printf("ioctl(-1, PTP_EXTTS_REQUEST, {index=%d, flags=", extts->index);
-       printflags(ptp_flags_options, extts->flags, "PTP_???");
-       errno = saved_errno;
-       printf("}) = -1 EBADF (%m)\n");
+       printflags(ptp_extts_flags, extts->flags, "PTP_???");
+       printf("}) = %s\n", errstr);
 
        /* PTP_PEROUT_REQUEST */
-       ioctl(-1, PTP_PEROUT_REQUEST, NULL);
-       printf("ioctl(-1, PTP_PEROUT_REQUEST, NULL) = -1 EBADF (%m)\n");
-       ioctl(-1, PTP_PEROUT_REQUEST, perout);
-       saved_errno = errno;
+       errstr = sprintrc(ioctl(-1, PTP_PEROUT_REQUEST, NULL));
+       printf("ioctl(-1, PTP_PEROUT_REQUEST, NULL) = %s\n", errstr);
+       errstr = sprintrc(ioctl(-1, PTP_PEROUT_REQUEST, perout));
        printf("ioctl(-1, PTP_PEROUT_REQUEST, {start={sec=%" PRId64
               ", nsec=%" PRIu32 "}, period={sec=%" PRId64 ", nsec=%" PRIu32 "}"
               ", index=%d, flags=",
               (int64_t) perout->start.sec, perout->start.nsec,
               (int64_t)perout->period.sec, perout->period.nsec, perout->index);
-       printflags(ptp_flags_options, perout->flags, "PTP_???");
-       errno = saved_errno;
-       printf("}) = -1 EBADF (%m)\n");
+       printflags(ptp_perout_flags, perout->flags, "PTP_???");
+       printf("}) = %s\n", errstr);
+
+       /* PTP_CLOCK_GETCAPS2 */
+       errstr = sprintrc(ioctl(-1, PTP_CLOCK_GETCAPS2, NULL));
+       printf("ioctl(-1, PTP_CLOCK_GETCAPS2, NULL) = %s\n", errstr);
+       errstr = sprintrc(ioctl(-1, PTP_CLOCK_GETCAPS2, caps));
+       printf("ioctl(-1, PTP_CLOCK_GETCAPS2, %p) = %s\n", caps, errstr);
+
+       /* PTP_SYS_OFFSET2 */
+       errstr = sprintrc(ioctl(-1, PTP_SYS_OFFSET2, NULL));
+       printf("ioctl(-1, PTP_SYS_OFFSET2, NULL) = %s\n", errstr);
+       errstr = sprintrc(ioctl(-1, PTP_SYS_OFFSET2, sysoff));
+       printf("ioctl(-1, PTP_SYS_OFFSET2, {n_samples=%u}) = %s\n",
+              sysoff->n_samples, errstr);
+
+       /* PTP_ENABLE_PPS2 */
+       errstr = sprintrc(ioctl(-1, PTP_ENABLE_PPS2, 0));
+       printf("ioctl(-1, PTP_ENABLE_PPS2, 0) = %s\n", errstr);
+       errstr = sprintrc(ioctl(-1, PTP_ENABLE_PPS2, 1));
+       printf("ioctl(-1, PTP_ENABLE_PPS2, 1) = %s\n", errstr);
+
+       /* PTP_EXTTS_REQUEST2 */
+       errstr = sprintrc(ioctl(-1, PTP_EXTTS_REQUEST2, NULL));
+       printf("ioctl(-1, PTP_EXTTS_REQUEST2, NULL) = %s\n", errstr);
+       errstr = sprintrc(ioctl(-1, PTP_EXTTS_REQUEST2, extts));
+       printf("ioctl(-1, PTP_EXTTS_REQUEST2, {index=%d, flags=", extts->index);
+       printflags(ptp_extts_flags, extts->flags, "PTP_???");
+       printf("}) = %s\n", errstr);
+
+       /* PTP_PEROUT_REQUEST2 */
+       errstr = sprintrc(ioctl(-1, PTP_PEROUT_REQUEST2, NULL));
+       printf("ioctl(-1, PTP_PEROUT_REQUEST2, NULL) = %s\n", errstr);
+       errstr = sprintrc(ioctl(-1, PTP_PEROUT_REQUEST2, perout));
+       printf("ioctl(-1, PTP_PEROUT_REQUEST2, {start={sec=%" PRId64
+              ", nsec=%" PRIu32 "}, period={sec=%" PRId64 ", nsec=%" PRIu32 "}"
+              ", index=%d, flags=",
+              (int64_t) perout->start.sec, perout->start.nsec,
+              (int64_t)perout->period.sec, perout->period.nsec, perout->index);
+       printflags(ptp_perout_flags, perout->flags, "PTP_???");
+       printf("}) = %s\n", errstr);
 
        /* unrecognized */
        ioctl(-1, _IOC(_IOC_READ, PTP_CLK_MAGIC, 0xff, 0xfe), 0);
-       printf("ioctl(-1, _IOC(_IOC_READ, %#x, 0xff, 0xfe), 0)"
-              " = -1 EBADF (%m)\n", PTP_CLK_MAGIC);
+       printf("ioctl(-1, _IOC(_IOC_READ, %#x, 0xff, 0xfe), 0) = %s\n",
+              PTP_CLK_MAGIC, errstr);
 
        const unsigned long arg = (unsigned long) 0xfacefeeddeadbeefULL;
        ioctl(-1, _IOC(_IOC_WRITE, PTP_CLK_MAGIC, 0xfd, 0xfc), arg);
        printf("ioctl(-1, _IOC(_IOC_WRITE, %#x, 0xfd, 0xfc), %#lx)"
-              " = -1 EBADF (%m)\n", PTP_CLK_MAGIC, arg);
+              " = %s\n", PTP_CLK_MAGIC, arg, errstr);
 }
 
 int
index d192e37827c5f5729599960e54107eddd64de8f2..19d54f6b8155204d063c5d7f30776ea33b00fde2 100644 (file)
@@ -34,7 +34,7 @@ print_rtc_time(const struct rtc_time *rt)
 #endif
 }
 
-static struct xlat rtc_argless[] = {
+static struct xlat_data rtc_argless[] = {
        XLAT(RTC_AIE_OFF),
        XLAT(RTC_PIE_ON),
        XLAT(RTC_PIE_OFF),
index b6347b62806860c77c9b180a555dee63a0ddedca..15eb56a9f29ec67b7bcd9deb89b36afed9c03fb9 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of SCSI ioctl commands.
  *
  * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -15,7 +15,9 @@
 # include <stdio.h>
 # include <sys/ioctl.h>
 # include <scsi/sg.h>
-# include "xlat/scsi_sg_commands.h"
+# define XLAT_MACROS_ONLY
+#  include "xlat/scsi_sg_commands.h"
+# undef XLAT_MACROS_ONLY
 
 # define TEST_NO_ARG(cmd)                                                      \
        do {                                                                    \
index 59438285a2720c6aba0b105fcc9e98cbf2f2e941..087ae7885c5c9953fc5c66dc72d5da39aa338c0c 100644 (file)
@@ -2,6 +2,7 @@
  * Check decoding of ioctl SG_IO v4 commands.
  *
  * Copyright (c) 2017-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -16,8 +17,9 @@
 # include <sys/ioctl.h>
 # include <sys/uio.h>
 # include <linux/bsg.h>
-
-# include "xlat/scsi_sg_commands.h"
+# define XLAT_MACROS_ONLY
+#  include "xlat/scsi_sg_commands.h"
+# undef XLAT_MACROS_ONLY
 
 int
 main(void)
diff --git a/tests-m32/ioctl_tee.c b/tests-m32/ioctl_tee.c
new file mode 100644 (file)
index 0000000..f6c2b3a
--- /dev/null
@@ -0,0 +1,437 @@
+/*
+ * Copyright (c) 2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_LINUX_TEE_H
+
+# include <fcntl.h>
+# include <stdio.h>
+# include <string.h>
+
+# include <linux/tee.h>
+
+# include <sys/ioctl.h>
+# include <sys/stat.h>
+# include <sys/types.h>
+
+# include "xlat.h"
+
+# define NUM_PARAMS 8
+# define RVAL_EBADF " = -1 EBADF (%m)\n"
+
+# define UUID_SIZE 16
+
+# ifndef TEE_IOCTL_PARAM_ATTR_META
+#  define TEE_IOCTL_PARAM_ATTR_META 0x100
+# endif
+
+# ifndef HAVE_STRUCT_TEE_IOCTL_SHM_REGISTER_FD_DATA
+struct tee_ioctl_shm_register_fd_data {
+       __s64 fd;
+       __u64 size;
+       __u32 flags;
+       __u8  _pad1[4];
+       __u32 id;
+       __u8  _pad2[4];
+} ATTRIBUTE_ALIGNED(8);
+# endif
+
+# ifndef HAVE_STRUCT_TEE_IOCTL_SHM_REGISTER_DATA
+struct tee_ioctl_shm_register_data {
+       __u64 addr;
+       __u64 length;
+       __u32 flags;
+       __s32 id;
+};
+# endif
+
+# ifndef TEE_IOC_SHM_REGISTER_FD
+#  define TEE_IOC_SHM_REGISTER_FD _IOWR(TEE_IOC_MAGIC, TEE_IOC_BASE + 8, \
+                                       struct tee_ioctl_shm_register_fd_data)
+# endif
+
+# ifndef TEE_IOC_SHM_REGISTER
+#  define TEE_IOC_SHM_REGISTER    _IOWR(TEE_IOC_MAGIC, TEE_IOC_BASE + 9, \
+                                       struct tee_ioctl_shm_register_data)
+# endif
+
+
+typedef struct {
+       uint8_t b[UUID_SIZE];
+} uuid_t;
+
+# define UUID_INIT(a_, b_, c_, d0, d1, d2, d3, d4, d5, d6, d7)         \
+{ .b = {((a_) >> 24) & 0xff, ((a_) >> 16) & 0xff,                      \
+        ((a_) >> 8) & 0xff, (a_) & 0xff,                               \
+        ((b_) >> 8) & 0xff, (b_) & 0xff,                               \
+        ((c_) >> 8) & 0xff, (c_) & 0xff,                               \
+        (d0), (d1), (d2), (d3), (d4), (d5), (d6), (d7)} }
+
+# define CHK_NULL(ioctl_)                                              \
+       do {                                                            \
+               ioctl(-1, ioctl_, NULL);                                \
+               printf("ioctl(-1, " #ioctl_ ", NULL)" RVAL_EBADF);      \
+       } while (0)
+
+# define CHK_BUF(ioctl_)                                               \
+       do {                                                            \
+               ioctl(-1, ioctl_, &buf_data);                           \
+               printf("ioctl(-1, " #ioctl_                             \
+                      ", {buf_len=%llu, buf_ptr=%#llx})" RVAL_EBADF,   \
+                      (unsigned long long) buf_data.buf_len,           \
+                      (unsigned long long) buf_data.buf_ptr);          \
+       } while (0)
+
+# define DEFINE_BUF_W_PARAMS(type_, shorthand_)                                \
+       const size_t shorthand_ ## _size = sizeof(type_) +              \
+               NUM_PARAMS * sizeof(struct tee_ioctl_param);            \
+       union {                                                         \
+               type_ shorthand_;                                       \
+               uint8_t data[shorthand_ ## _size];                      \
+       } shorthand_ ## _buf
+
+static const unsigned long one_beef = (unsigned long) 0xcafef00ddeadbeefULL;
+static const unsigned long two_beef = (unsigned long) 0xbadc0dedbadc0dedULL;
+static const unsigned long red_beef = (unsigned long) 0xdefacedbeef0beefULL;
+static const unsigned long blu_beef = (unsigned long) 0xfacefeedcafef00dULL;
+
+static const uuid_t uuid_beef = UUID_INIT(0xdeadbeef, 0xcafe, 0xc0de,
+                                         0xba, 0xdc, 0x0d, 0xed,
+                                         0xfa, 0xce, 0xfe, 0xed);
+
+static void
+fill_params(struct tee_ioctl_param *params)
+{
+       for (unsigned i = 0; i < NUM_PARAMS; i++) {
+               params[i].a = two_beef;
+               params[i].b = red_beef;
+               params[i].c = blu_beef;
+       }
+       params[0].attr = TEE_IOCTL_PARAM_ATTR_TYPE_NONE;
+       params[1].attr = TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INPUT;
+       params[2].attr = TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_OUTPUT;
+       params[3].attr = TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INOUT;
+       params[4].attr = TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INPUT;
+       params[5].attr = TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_OUTPUT;
+       params[6].attr = TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INOUT;
+       params[7].attr = TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INPUT |
+                        TEE_IOCTL_PARAM_ATTR_META;
+}
+
+static void
+print_params(struct tee_ioctl_param *params)
+{
+       printf("{attr=TEE_IOCTL_PARAM_ATTR_TYPE_NONE}, "
+              "{attr=TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INPUT, a=%#llx, b=%#llx, c=%#llx}, "
+              "{attr=TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_OUTPUT, a=%#llx, b=%#llx, c=%#llx}, "
+              "{attr=TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INOUT, a=%#llx, b=%#llx, c=%#llx}, "
+              "{attr=TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INPUT, shm_offs=%#llx, size=%#llx, shm_id=%llu}, "
+              "{attr=TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_OUTPUT, shm_offs=%#llx, size=%#llx, shm_id=%llu}, "
+              "{attr=TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INOUT, shm_offs=%#llx, size=%#llx, shm_id=%llu}, "
+              "{attr=TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INPUT|TEE_IOCTL_PARAM_ATTR_META, a=%#llx, b=%#llx, c=%#llx}",
+              (unsigned long long) two_beef, (unsigned long long) red_beef,
+              (unsigned long long) blu_beef, (unsigned long long) two_beef,
+              (unsigned long long) red_beef, (unsigned long long) blu_beef,
+              (unsigned long long) two_beef, (unsigned long long) red_beef,
+              (unsigned long long) blu_beef, (unsigned long long) two_beef,
+              (unsigned long long) red_beef, (unsigned long long) blu_beef,
+              (unsigned long long) two_beef, (unsigned long long) red_beef,
+              (unsigned long long) blu_beef, (unsigned long long) two_beef,
+              (unsigned long long) red_beef, (unsigned long long) blu_beef,
+              (unsigned long long) two_beef, (unsigned long long) red_beef,
+              (unsigned long long) blu_beef
+              );
+}
+
+int
+main(void)
+{
+       gid_t gid;
+
+       struct tee_ioctl_cancel_arg cancel;
+       struct tee_ioctl_shm_alloc_data shm_alloc;
+       struct tee_ioctl_shm_register_data shm_register;
+       struct tee_ioctl_close_session_arg close_session;
+       struct tee_ioctl_shm_register_fd_data shm_register_fd;
+
+       struct tee_ioctl_buf_data buf_data;
+       struct tee_ioctl_param *params = NULL;
+
+       DEFINE_BUF_W_PARAMS(struct tee_ioctl_invoke_arg, invoke);
+       DEFINE_BUF_W_PARAMS(struct tee_iocl_supp_recv_arg, supp_recv);
+       DEFINE_BUF_W_PARAMS(struct tee_iocl_supp_send_arg, supp_send);
+       DEFINE_BUF_W_PARAMS(struct tee_ioctl_open_session_arg, open_session);
+
+       static const char null_path[] = "/dev/null";
+       int fd = open(null_path, O_RDONLY);
+
+       /* NULL as arg */
+       CHK_NULL(TEE_IOC_CANCEL);
+       CHK_NULL(TEE_IOC_INVOKE);
+       CHK_NULL(TEE_IOC_VERSION);
+       CHK_NULL(TEE_IOC_SHM_ALLOC);
+       CHK_NULL(TEE_IOC_SUPPL_RECV);
+       CHK_NULL(TEE_IOC_SUPPL_SEND);
+       CHK_NULL(TEE_IOC_OPEN_SESSION);
+       CHK_NULL(TEE_IOC_SHM_REGISTER);
+       CHK_NULL(TEE_IOC_CLOSE_SESSION);
+
+       /* Valid parameterless calls */
+       ioctl(-1, TEE_IOC_SHM_REGISTER_FD, NULL);
+       printf("ioctl(-1, _IOC(_IOC_READ|_IOC_WRITE, 0xa4, 0x8, 0x20), NULL)"
+              RVAL_EBADF);
+       ioctl(-1, _IOC(_IOC_NONE, 0xa4, 0xa, 0), NULL);
+       printf("ioctl(-1, _IOC(_IOC_NONE, 0xa4, 0xa, 0), 0)" RVAL_EBADF);
+
+       cancel.cancel_id = (uint32_t) one_beef;
+       cancel.session = (uint32_t) two_beef;
+       ioctl(-1, TEE_IOC_CANCEL, &cancel);
+       printf("ioctl(-1, TEE_IOC_CANCEL, {cancel_id=%u, session=%#x})" RVAL_EBADF,
+              (uint32_t) one_beef, (uint32_t) two_beef);
+
+       close_session.session = (uint32_t) red_beef;
+       ioctl(-1, TEE_IOC_CLOSE_SESSION, &close_session);
+       printf("ioctl(-1, TEE_IOC_CLOSE_SESSION, {session=%#x})" RVAL_EBADF,
+              (uint32_t) red_beef);
+
+       shm_alloc.size = one_beef;
+       shm_alloc.flags = TEE_IOCTL_SHM_MAPPED | TEE_IOCTL_SHM_DMA_BUF | 0x80;
+       ioctl(-1, TEE_IOC_SHM_ALLOC, &shm_alloc);
+       printf("ioctl(-1, TEE_IOC_SHM_ALLOC, {size=%#llx, "
+              "flags=TEE_IOCTL_SHM_MAPPED|TEE_IOCTL_SHM_DMA_BUF|0x80})" RVAL_EBADF,
+              (unsigned long long) one_beef);
+
+       shm_register.addr = red_beef;
+       shm_register.length = blu_beef;
+       shm_register.flags = TEE_IOCTL_SHM_MAPPED | 0x80;
+       ioctl(-1, TEE_IOC_SHM_REGISTER, &shm_register);
+       printf("ioctl(-1, TEE_IOC_SHM_REGISTER, {addr=%#llx, length=%#llx, "
+              "flags=TEE_IOCTL_SHM_MAPPED|0x80})" RVAL_EBADF,
+              (unsigned long long) red_beef,
+              (unsigned long long) blu_beef);
+
+       if (fd >= 0) {
+               shm_register_fd.fd = fd;
+               shm_register_fd.flags = TEE_IOCTL_SHM_DMA_BUF;
+               ioctl(-1, TEE_IOC_SHM_REGISTER_FD, &shm_register_fd);
+               printf("ioctl(-1, _IOC(_IOC_READ|_IOC_WRITE, 0xa4, 0x8, 0x20), "
+                      "{fd=%d, flags=TEE_IOCTL_SHM_DMA_BUF})" RVAL_EBADF, fd);
+       }
+
+       /* Beef in buf_data */
+       buf_data.buf_ptr = one_beef;
+       buf_data.buf_len = two_beef;
+       CHK_BUF(TEE_IOC_INVOKE);
+       CHK_BUF(TEE_IOC_OPEN_SESSION);
+       CHK_BUF(TEE_IOC_SUPPL_RECV);
+       CHK_BUF(TEE_IOC_SUPPL_SEND);
+
+       /* Valid calls with parameters */
+       invoke_buf.invoke.func = (uint32_t) one_beef;
+       invoke_buf.invoke.session = (uint32_t) two_beef;
+       invoke_buf.invoke.cancel_id = (uint32_t) red_beef;
+       invoke_buf.invoke.num_params = NUM_PARAMS;
+       params = (struct tee_ioctl_param *)(&invoke_buf.invoke + 1);
+       fill_params(params);
+       buf_data.buf_ptr = (uintptr_t) &invoke_buf;
+       buf_data.buf_len = invoke_size;
+       ioctl(-1, TEE_IOC_INVOKE, &buf_data);
+       printf("ioctl(-1, TEE_IOC_INVOKE, {buf_len=%llu, "
+              "buf_ptr={func=%u, session=%#x, cancel_id=%u, "
+              "num_params=%u, params=[",
+              (unsigned long long) buf_data.buf_len,
+              (uint32_t) one_beef, (uint32_t) two_beef,
+              (uint32_t) red_beef, NUM_PARAMS);
+       print_params(params);
+       printf("]}})" RVAL_EBADF);
+
+       open_session_buf.open_session.clnt_login = TEE_IOCTL_LOGIN_PUBLIC;
+       gid = (gid_t) blu_beef;
+       memcpy(&open_session_buf.open_session.clnt_uuid, &gid, sizeof(gid_t));
+       memcpy(&open_session_buf.open_session.uuid, &uuid_beef, UUID_SIZE);
+       open_session_buf.open_session.cancel_id = (uint32_t) red_beef;
+       open_session_buf.open_session.num_params = NUM_PARAMS;
+       params = (struct tee_ioctl_param *)(&open_session_buf.open_session + 1);
+       fill_params(params);
+       buf_data.buf_ptr = (uintptr_t) &open_session_buf;
+       buf_data.buf_len = open_session_size;
+       ioctl(-1, TEE_IOC_OPEN_SESSION, &buf_data);
+       printf("ioctl(-1, TEE_IOC_OPEN_SESSION, {buf_len=%llu, "
+              "buf_ptr={uuid=deadbeef-cafe-c0de-badc-0dedfacefeed, "
+              "clnt_login=TEE_IOCTL_LOGIN_PUBLIC, "
+              "cancel_id=%u, "
+              "num_params=%u, params=[",
+              (unsigned long long) buf_data.buf_len,
+              (uint32_t) red_beef, NUM_PARAMS);
+       print_params(params);
+       printf("]}})" RVAL_EBADF);
+
+       /* All the login types */
+       open_session_buf.open_session.clnt_login = TEE_IOCTL_LOGIN_USER;
+       ioctl(-1, TEE_IOC_OPEN_SESSION, &buf_data);
+       printf("ioctl(-1, TEE_IOC_OPEN_SESSION, {buf_len=%llu, "
+              "buf_ptr={uuid=deadbeef-cafe-c0de-badc-0dedfacefeed, "
+              "clnt_login=TEE_IOCTL_LOGIN_USER, "
+              "cancel_id=%u, "
+              "num_params=%u, params=[",
+              (unsigned long long) buf_data.buf_len,
+              (uint32_t) red_beef, NUM_PARAMS);
+       print_params(params);
+       printf("]}})" RVAL_EBADF);
+
+       open_session_buf.open_session.clnt_login = TEE_IOCTL_LOGIN_GROUP;
+       ioctl(-1, TEE_IOC_OPEN_SESSION, &buf_data);
+       printf("ioctl(-1, TEE_IOC_OPEN_SESSION, {buf_len=%llu, "
+              "buf_ptr={uuid=deadbeef-cafe-c0de-badc-0dedfacefeed, "
+              "clnt_login=TEE_IOCTL_LOGIN_GROUP, "
+              "clnt_uuid=%u, cancel_id=%u, "
+              "num_params=%u, params=[",
+              (unsigned long long) buf_data.buf_len,
+              gid, (uint32_t) red_beef, NUM_PARAMS);
+       print_params(params);
+       printf("]}})" RVAL_EBADF);
+
+       open_session_buf.open_session.clnt_login = TEE_IOCTL_LOGIN_APPLICATION;
+       ioctl(-1, TEE_IOC_OPEN_SESSION, &buf_data);
+       printf("ioctl(-1, TEE_IOC_OPEN_SESSION, {buf_len=%llu, "
+              "buf_ptr={uuid=deadbeef-cafe-c0de-badc-0dedfacefeed, "
+              "clnt_login=TEE_IOCTL_LOGIN_APPLICATION, "
+              "cancel_id=%u, "
+              "num_params=%u, params=[",
+              (unsigned long long) buf_data.buf_len,
+              (uint32_t) red_beef, NUM_PARAMS);
+       print_params(params);
+       printf("]}})" RVAL_EBADF);
+
+       open_session_buf.open_session.clnt_login = TEE_IOCTL_LOGIN_USER_APPLICATION;
+       ioctl(-1, TEE_IOC_OPEN_SESSION, &buf_data);
+       printf("ioctl(-1, TEE_IOC_OPEN_SESSION, {buf_len=%llu, "
+              "buf_ptr={uuid=deadbeef-cafe-c0de-badc-0dedfacefeed, "
+              "clnt_login=TEE_IOCTL_LOGIN_USER_APPLICATION, "
+              "cancel_id=%u, "
+              "num_params=%u, params=[",
+              (unsigned long long) buf_data.buf_len,
+              (uint32_t) red_beef, NUM_PARAMS);
+       print_params(params);
+       printf("]}})" RVAL_EBADF);
+
+       open_session_buf.open_session.clnt_login = TEE_IOCTL_LOGIN_GROUP_APPLICATION;
+       ioctl(-1, TEE_IOC_OPEN_SESSION, &buf_data);
+       printf("ioctl(-1, TEE_IOC_OPEN_SESSION, {buf_len=%llu, "
+              "buf_ptr={uuid=deadbeef-cafe-c0de-badc-0dedfacefeed, "
+              "clnt_login=TEE_IOCTL_LOGIN_GROUP_APPLICATION, "
+              "clnt_uuid=%u, cancel_id=%u, "
+              "num_params=%u, params=[",
+              (unsigned long long) buf_data.buf_len,
+              gid, (uint32_t) red_beef, NUM_PARAMS);
+       print_params(params);
+       printf("]}})" RVAL_EBADF);
+
+       open_session_buf.open_session.clnt_login = 0xff;
+       ioctl(-1, TEE_IOC_OPEN_SESSION, &buf_data);
+       printf("ioctl(-1, TEE_IOC_OPEN_SESSION, {buf_len=%llu, "
+              "buf_ptr={uuid=deadbeef-cafe-c0de-badc-0dedfacefeed, "
+              "clnt_login=%#x /* TEE_IOCTL_LOGIN_??? */, "
+              "clnt_uuid=[", (unsigned long long) buf_data.buf_len,
+              open_session_buf.open_session.clnt_login);
+       for (unsigned i = 0; i < UUID_SIZE; i++) {
+               if (i > 0)
+                       printf(", ");
+               printf("%#x", open_session_buf.open_session.clnt_uuid[i]);
+       }
+       printf("], cancel_id=%u, "
+              "num_params=%u, params=[",
+              (uint32_t) red_beef, NUM_PARAMS);
+       print_params(params);
+       printf("]}})" RVAL_EBADF);
+
+       supp_recv_buf.supp_recv.func = (uint32_t) blu_beef;
+       supp_recv_buf.supp_recv.num_params = NUM_PARAMS;
+       params = (struct tee_ioctl_param *)(&supp_recv_buf.supp_recv + 1);
+       fill_params(params);
+       buf_data.buf_ptr = (uintptr_t) &supp_recv_buf;
+       buf_data.buf_len = supp_recv_size;
+       ioctl(-1, TEE_IOC_SUPPL_RECV, &buf_data);
+       printf("ioctl(-1, TEE_IOC_SUPPL_RECV, {buf_len=%llu, "
+              "buf_ptr={func=%u, "
+              "num_params=%u, params=[",
+              (unsigned long long) buf_data.buf_len,
+              (uint32_t) blu_beef, NUM_PARAMS);
+       print_params(params);
+       printf("]}})" RVAL_EBADF);
+
+       supp_send_buf.supp_send.num_params = NUM_PARAMS;
+       params = (struct tee_ioctl_param *)(&supp_send_buf.supp_send + 1);
+       fill_params(params);
+       buf_data.buf_ptr = (uintptr_t) &supp_send_buf;
+       buf_data.buf_len = supp_send_size;
+       ioctl(-1, TEE_IOC_SUPPL_SEND, &buf_data);
+       printf("ioctl(-1, TEE_IOC_SUPPL_SEND, {buf_len=%llu, "
+              "buf_ptr={num_params=%u, params=[",
+              (unsigned long long) buf_data.buf_len,
+              NUM_PARAMS);
+       print_params(params);
+       printf("]}})" RVAL_EBADF);
+
+       /* Valid buf, but unmatching num_params */
+       invoke_buf.invoke.num_params = 0;
+       supp_recv_buf.supp_recv.num_params = 0;
+       supp_send_buf.supp_send.num_params = 0;
+       open_session_buf.open_session.num_params = 0;
+
+       buf_data.buf_ptr = (uintptr_t) &invoke_buf;
+       buf_data.buf_len = invoke_size;
+       CHK_BUF(TEE_IOC_INVOKE);
+       buf_data.buf_ptr = (uintptr_t) &open_session_buf;
+       buf_data.buf_len = open_session_size;
+       CHK_BUF(TEE_IOC_OPEN_SESSION);
+       buf_data.buf_ptr = (uintptr_t) &supp_recv_buf;
+       buf_data.buf_len = supp_recv_size;
+       CHK_BUF(TEE_IOC_SUPPL_RECV);
+       buf_data.buf_ptr = (uintptr_t) &supp_send_buf;
+       buf_data.buf_len = supp_send_size;
+       CHK_BUF(TEE_IOC_SUPPL_SEND);
+
+       invoke_buf.invoke.num_params = NUM_PARAMS;
+       supp_recv_buf.supp_recv.num_params = NUM_PARAMS;
+       supp_send_buf.supp_send.num_params = NUM_PARAMS;
+       open_session_buf.open_session.num_params = NUM_PARAMS;
+
+       /* Invalid buf_len */
+       buf_data.buf_len = 0;
+       CHK_BUF(TEE_IOC_INVOKE);
+       CHK_BUF(TEE_IOC_OPEN_SESSION);
+       CHK_BUF(TEE_IOC_SUPPL_RECV);
+       CHK_BUF(TEE_IOC_SUPPL_SEND);
+
+       buf_data.buf_len = (unsigned long long) -1;
+       CHK_BUF(TEE_IOC_INVOKE);
+       CHK_BUF(TEE_IOC_OPEN_SESSION);
+       CHK_BUF(TEE_IOC_SUPPL_RECV);
+       CHK_BUF(TEE_IOC_SUPPL_SEND);
+
+       /* Valid buf_len, invalid buf_ptr */
+       buf_data.buf_ptr = one_beef;
+       buf_data.buf_len = invoke_size;
+       CHK_BUF(TEE_IOC_INVOKE);
+       buf_data.buf_len = open_session_size;
+       CHK_BUF(TEE_IOC_OPEN_SESSION);
+       buf_data.buf_len = supp_recv_size;
+       CHK_BUF(TEE_IOC_SUPPL_RECV);
+       buf_data.buf_len = supp_send_size;
+       CHK_BUF(TEE_IOC_SUPPL_SEND);
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else /* !HAVE_LINUX_TEE_H */
+
+SKIP_MAIN_UNDEFINED("HAVE_LINUX_TEE_H")
+
+#endif /* HAVE_LINUX_TEE_H */
diff --git a/tests-m32/ioctl_tee.gen.test b/tests-m32/ioctl_tee.gen.test
new file mode 100755 (executable)
index 0000000..f220bca
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_tee +ioctl.test ); do not edit.
+set -- 
+. "${srcdir=.}/ioctl.test"
index 19104442f675dbeb682c7f92bdb01d2b44dc7b57..971440d0395b85417478eb2f7af29cff521ee5bf 100644 (file)
@@ -1,14 +1,14 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c)      2016 Red Hat, Inc.
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_userfaultfd && defined HAVE_LINUX_USERFAULTFD_H
 
@@ -135,6 +135,13 @@ main(void)
               " mode=UFFDIO_COPY_MODE_DONTWAKE, copy=%#zx}) = %d\n",
               fd, area2, area1, pagesize, pagesize, rc);
 
+       copy_struct->mode = 0xdeadbeef;;
+       rc = ioctl(fd, UFFDIO_COPY, copy_struct);
+       printf("ioctl(%d, UFFDIO_COPY, {dst=%p, src=%p, len=%#zx,"
+              " mode=UFFDIO_COPY_MODE_DONTWAKE|UFFDIO_COPY_MODE_WP|0xdeadbeec"
+              "}) = %s\n",
+              fd, area2, area1, pagesize, sprintrc(rc));
+
        /* ---- ZEROPAGE ---- */
        TAIL_ALLOC_OBJECT_CONST_PTR(struct uffdio_zeropage, zero_struct);
        madvise(area2, pagesize, MADV_DONTNEED);
diff --git a/tests-m32/ioctl_v4l2-Xabbrev.c b/tests-m32/ioctl_v4l2-Xabbrev.c
new file mode 100644 (file)
index 0000000..54046bf
--- /dev/null
@@ -0,0 +1 @@
+#include "ioctl_v4l2.c"
diff --git a/tests-m32/ioctl_v4l2-Xabbrev.gen.test b/tests-m32/ioctl_v4l2-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..f90c41d
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2-Xabbrev +ioctl.test -Xabbrev); do not edit.
+set -- -Xabbrev
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_v4l2-Xraw.c b/tests-m32/ioctl_v4l2-Xraw.c
new file mode 100644 (file)
index 0000000..da45f6d
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "ioctl_v4l2.c"
diff --git a/tests-m32/ioctl_v4l2-Xraw.gen.test b/tests-m32/ioctl_v4l2-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..9ebd283
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2-Xraw +ioctl.test -Xraw); do not edit.
+set -- -Xraw
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_v4l2-Xverbose.c b/tests-m32/ioctl_v4l2-Xverbose.c
new file mode 100644 (file)
index 0000000..52173f7
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "ioctl_v4l2.c"
diff --git a/tests-m32/ioctl_v4l2-Xverbose.gen.test b/tests-m32/ioctl_v4l2-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..0d0ccd0
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2-Xverbose +ioctl.test -Xverbose); do not edit.
+set -- -Xverbose
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_v4l2-success-Xabbrev.c b/tests-m32/ioctl_v4l2-success-Xabbrev.c
new file mode 100644 (file)
index 0000000..c328ee1
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_ABBREV 1
+#include "ioctl_v4l2-success.c"
diff --git a/tests-m32/ioctl_v4l2-success-Xabbrev.gen.test b/tests-m32/ioctl_v4l2-success-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..60e33ad
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2-success-Xabbrev +ioctl-success.sh -a29 -Xabbrev); do not edit.
+set -- -a29 -Xabbrev
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests-m32/ioctl_v4l2-success-Xraw.c b/tests-m32/ioctl_v4l2-success-Xraw.c
new file mode 100644 (file)
index 0000000..2ceb2d3
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "ioctl_v4l2-success.c"
diff --git a/tests-m32/ioctl_v4l2-success-Xraw.gen.test b/tests-m32/ioctl_v4l2-success-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..f1ee3f2
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2-success-Xraw +ioctl-success.sh -a27 -Xraw); do not edit.
+set -- -a27 -Xraw
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests-m32/ioctl_v4l2-success-Xverbose.c b/tests-m32/ioctl_v4l2-success-Xverbose.c
new file mode 100644 (file)
index 0000000..c09ee34
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "ioctl_v4l2-success.c"
diff --git a/tests-m32/ioctl_v4l2-success-Xverbose.gen.test b/tests-m32/ioctl_v4l2-success-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..a1b69a4
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2-success-Xverbose +ioctl-success.sh -a30 -Xverbose); do not edit.
+set -- -a30 -Xverbose
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests-m32/ioctl_v4l2-success-v-Xabbrev.c b/tests-m32/ioctl_v4l2-success-v-Xabbrev.c
new file mode 100644 (file)
index 0000000..f06ca45
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_ABBREV 1
+#include "ioctl_v4l2-success-v.c"
diff --git a/tests-m32/ioctl_v4l2-success-v-Xabbrev.gen.test b/tests-m32/ioctl_v4l2-success-v-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..49dfc26
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2-success-v-Xabbrev +ioctl-success.sh -a29 -v -Xabbrev); do not edit.
+set -- -a29 -v -Xabbrev
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests-m32/ioctl_v4l2-success-v-Xraw.c b/tests-m32/ioctl_v4l2-success-v-Xraw.c
new file mode 100644 (file)
index 0000000..a95c12f
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "ioctl_v4l2-success-v.c"
diff --git a/tests-m32/ioctl_v4l2-success-v-Xraw.gen.test b/tests-m32/ioctl_v4l2-success-v-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..55e9799
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2-success-v-Xraw +ioctl-success.sh -a27 -v -Xraw); do not edit.
+set -- -a27 -v -Xraw
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests-m32/ioctl_v4l2-success-v-Xverbose.c b/tests-m32/ioctl_v4l2-success-v-Xverbose.c
new file mode 100644 (file)
index 0000000..ac659b3
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "ioctl_v4l2-success-v.c"
diff --git a/tests-m32/ioctl_v4l2-success-v-Xverbose.gen.test b/tests-m32/ioctl_v4l2-success-v-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..ed9278f
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2-success-v-Xverbose +ioctl-success.sh -a29 -v -Xverbose); do not edit.
+set -- -a29 -v -Xverbose
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests-m32/ioctl_v4l2-success-v.c b/tests-m32/ioctl_v4l2-success-v.c
new file mode 100644 (file)
index 0000000..fadad4e
--- /dev/null
@@ -0,0 +1,2 @@
+#define VERBOSE 1
+#include "ioctl_v4l2-success.c"
diff --git a/tests-m32/ioctl_v4l2-success-v.gen.test b/tests-m32/ioctl_v4l2-success-v.gen.test
new file mode 100755 (executable)
index 0000000..6eca4cd
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2-success-v +ioctl-success.sh -a29 -v); do not edit.
+set -- -a29 -v
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests-m32/ioctl_v4l2-success.c b/tests-m32/ioctl_v4l2-success.c
new file mode 100644 (file)
index 0000000..f1b834e
--- /dev/null
@@ -0,0 +1,1473 @@
+/*
+ * Copyright (c) 2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/ioctl.h>
+#include "kernel_v4l2_types.h"
+
+#define XLAT_MACROS_ONLY
+# include "xlat/v4l2_ioctl_cmds.h"
+#undef XLAT_MACROS_ONLY
+
+static bool
+fill_fmt(struct v4l2_format *f)
+{
+       static struct v4l2_clip *clips;
+
+       switch (f->type) {
+       case V4L2_BUF_TYPE_VIDEO_CAPTURE:
+       case V4L2_BUF_TYPE_VIDEO_OUTPUT:
+               f->fmt.pix.width        = 0xdeadc0de;
+               f->fmt.pix.height       = 0xfeedbeef;
+               f->fmt.pix.pixelformat  = 0xb5315258; /* forurcc_be("XR15") */
+               f->fmt.pix.field = f->type == V4L2_BUF_TYPE_VIDEO_CAPTURE
+                       ? V4L2_FIELD_ALTERNATE : 0xdec0ded1;
+               f->fmt.pix.bytesperline = 0xbadc0ded;
+               f->fmt.pix.sizeimage    = 0xface1e55;
+               f->fmt.pix.colorspace   = V4L2_COLORSPACE_REC709;
+               break;
+
+       case V4L2_BUF_TYPE_VIDEO_OVERLAY:
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY
+       case V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY:
+#endif
+               f->fmt.win.w.left    = 0xa0a1a2a3;
+               f->fmt.win.w.top     = 0xb0b1b2b3;
+               f->fmt.win.w.width   = 0xc0c1c2c3;
+               f->fmt.win.w.height  = 0xd0d1d2d3;
+               f->fmt.win.field     = f->type == V4L2_BUF_TYPE_VIDEO_OVERLAY
+                       ? V4L2_FIELD_ANY : 10;
+               f->fmt.win.chromakey = 0xbeefface;
+
+               if (!clips)
+                       clips = tail_alloc(sizeof(*clips) * 3);
+               f->fmt.win.clips = clips;
+
+               f->fmt.win.clips[0].c.left   = 0xa4a5a6a7;
+               f->fmt.win.clips[0].c.top    = 0xb4b5b6b7;
+               f->fmt.win.clips[0].c.width  = 0xc4c5c6c7;
+               f->fmt.win.clips[0].c.height = 0xd4d5d6d7;
+               f->fmt.win.clips[0].next     = clips;
+
+               f->fmt.win.clips[1].c.left   = 0xa8a9aaab;
+               f->fmt.win.clips[1].c.top    = 0xb8b9babb;
+               f->fmt.win.clips[1].c.width  = 0xc8c9cacb;
+               f->fmt.win.clips[1].c.height = 0xd8d9dadb;
+
+               f->fmt.win.clips[2].c.left   = 0xacadaeaf;
+               f->fmt.win.clips[2].c.top    = 0xbcbdbebf;
+               f->fmt.win.clips[2].c.width  = 0xcccdcecf;
+               f->fmt.win.clips[2].c.height = 0xdcdddedf;
+               f->fmt.win.clips[2].next     = clips + 1;
+
+               f->fmt.win.clipcount = f->type == V4L2_BUF_TYPE_VIDEO_OVERLAY
+                       ? 4 : 0;
+               f->fmt.win.bitmap    = f->type == V4L2_BUF_TYPE_VIDEO_OVERLAY
+                       ? NULL : clips;
+               break;
+
+       case V4L2_BUF_TYPE_VBI_CAPTURE:
+       case V4L2_BUF_TYPE_VBI_OUTPUT:
+               f->fmt.vbi.sampling_rate    = 0xdecaffed;
+               f->fmt.vbi.offset           = 0xcafefeed;
+               f->fmt.vbi.samples_per_line = 0xbeefaced;
+               f->fmt.vbi.sample_format    = V4L2_PIX_FMT_RGB555X;
+
+               f->fmt.vbi.start[0] = 0xdec0ded0;
+               f->fmt.vbi.start[1] = 0xdec0ded1;
+               f->fmt.vbi.count[0] = 0xacceded2;
+               f->fmt.vbi.count[1] = 0xacceded3;
+
+               f->fmt.vbi.flags = f->type == V4L2_BUF_TYPE_VBI_CAPTURE
+                       ? 0x3 : 0x1ce50d1c;
+               break;
+
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
+       case V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE:
+       case V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE:
+               f->fmt.pix_mp.width        = 0xdeaffade;
+               f->fmt.pix_mp.height       = 0xfadeb1a5;
+               f->fmt.pix_mp.pixelformat  = 0x36314454;
+               f->fmt.pix_mp.field        = V4L2_FIELD_NONE;
+               f->fmt.pix_mp.colorspace   = 13;
+
+               for (size_t i = 0; i < VIDEO_MAX_PLANES; i++) {
+                       f->fmt.pix_mp.plane_fmt[i].sizeimage = 0xd0decad0 ^ i;
+                       if (sizeof(f->fmt.pix_mp.plane_fmt[i].bytesperline) ==
+                           sizeof(uint32_t)) {
+                               f->fmt.pix_mp.plane_fmt[i].bytesperline
+                                       = 0xd0decad1 ^ i;
+                       } else {
+# if WORDS_BIGENDIAN
+                               f->fmt.pix_mp.plane_fmt[i].bytesperline
+                                       = 0xd0de;
+                               f->fmt.pix_mp.plane_fmt[i].reserved[0]
+                                       = 0xcad1 ^ i;
+# else
+                               f->fmt.pix_mp.plane_fmt[i].bytesperline
+                                       = 0xcad1 ^ i;
+                               f->fmt.pix_mp.plane_fmt[i].reserved[0]
+                                       = 0xd0de;
+# endif
+                       }
+               }
+
+               f->fmt.pix_mp.num_planes   = f->type ==
+                       V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE ? 0xd5 : 0;
+               break;
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE
+       case V4L2_BUF_TYPE_SLICED_VBI_CAPTURE:
+       case V4L2_BUF_TYPE_SLICED_VBI_OUTPUT:
+               f->fmt.sliced.service_set = 0xfeed;
+               for (size_t i = 0; i < 2; i++) {
+                       for (size_t j = 0; j < 24; j++) {
+                               f->fmt.sliced.service_lines[i][j] =
+                                       0xdead ^ (i << 8) ^ j;
+                       }
+               }
+               f->fmt.sliced.io_size = 0xdefaceed;
+               break;
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE
+       case V4L2_BUF_TYPE_SDR_CAPTURE:
+# if HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT
+       case V4L2_BUF_TYPE_SDR_OUTPUT:
+# endif
+               f->fmt.sdr.pixelformat = V4L2_SDR_FMT_CU8;
+# ifdef HAVE_STRUCT_V4L2_SDR_FORMAT_BUFFERSIZE
+               if (sizeof(f->fmt.sdr.buffersize == sizeof(uint32_t)))
+                       f->fmt.sdr.buffersize = 0xbadc0ded;
+               else
+                       ((uint32_t *) &f->fmt.sdr)[1] = 0xbadc0ded;
+# else
+               ((uint32_t *) &f->fmt.sdr)[1] = 0xbadc0ded;
+# endif
+               break;
+#endif
+       default:
+               return false;
+       }
+
+       return true;
+}
+
+static void
+print_fmt(const char *pfx, struct v4l2_format *f)
+{
+       switch (f->type) {
+       case V4L2_BUF_TYPE_VIDEO_CAPTURE:
+       case V4L2_BUF_TYPE_VIDEO_OUTPUT:
+               printf("%sfmt.pix={width=3735929054, height=4276993775"
+                      ", pixelformat=" RAW("0xb5315258")
+                      NRAW("v4l2_fourcc('X', 'R', '1', '\\xb5')"
+                           " /* V4L2_PIX_FMT_XRGB555X */")
+                      ", field=%s, bytesperline=3134983661"
+                      ", sizeimage=4207812181, colorspace="
+                      XLAT_KNOWN(0x3, "V4L2_COLORSPACE_REC709") "}",
+                      pfx, f->type == V4L2_BUF_TYPE_VIDEO_CAPTURE
+                       ? XLAT_STR(V4L2_FIELD_ALTERNATE)
+                       : XLAT_UNKNOWN(0xdec0ded1, "V4L2_FIELD_???"));
+               break;
+
+       case V4L2_BUF_TYPE_VIDEO_OVERLAY:
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY
+       case V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY:
+#endif
+               printf("%sfmt.win={left=-1600019805, top=-1330531661"
+                      ", width=3233923779, height=3503411923, field=%s"
+                      ", chromakey=0xbeefface, clips=[",
+                      pfx, f->type == V4L2_BUF_TYPE_VIDEO_OVERLAY
+                       ? XLAT_STR(V4L2_FIELD_ANY)
+                       : XLAT_UNKNOWN(0xa, "V4L2_FIELD_???"));
+               if (f->type == V4L2_BUF_TYPE_VIDEO_OVERLAY) {
+                       printf("{left=-1532647769, top=-1263159625"
+                              ", width=3301295815, height=3570783959}, "
+                              "{left=-1465275733, top=-1195787589"
+                              ", width=3368667851, height=3638155995}, "
+                              "{left=-1397903697, top=-1128415553"
+                              ", width=3436039887, height=3705528031}, "
+                              "... /* %p */", f->fmt.win.clips + 3);
+               }
+               printf("], clipcount=%d, bitmap=",
+                      f->type == V4L2_BUF_TYPE_VIDEO_OVERLAY ? 4 : 0);
+
+               if (f->type == V4L2_BUF_TYPE_VIDEO_OVERLAY)
+                       printf("NULL");
+               else
+                       printf("%p", f->fmt.win.bitmap);
+
+#ifdef HAVE_STRUCT_V4L2_WINDOW_GLOBAL_ALPHA
+               printf(", global_alpha=%#hhx}", f->fmt.win.global_alpha);
+#else
+               struct win_ga {
+                       struct v4l2_rect w;
+                       uint32_t field;
+                       uint32_t chromakey;
+                       struct v4l2_clip *clips;
+                       uint32_t clipcount;
+                       void *bitmap;
+                       uint8_t global_alpha;
+               };
+               printf(", global_alpha=%#hhx}",
+                      ((struct win_ga *) &f->fmt.win)->global_alpha);
+#endif
+               break;
+
+       case V4L2_BUF_TYPE_VBI_CAPTURE:
+       case V4L2_BUF_TYPE_VBI_OUTPUT:
+               printf("%sfmt.vbi={sampling_rate=3737845741, offset=3405709037"
+                      ", samples_per_line=3203378413, sample_format="
+                      RAW("0x51424752") NRAW("v4l2_fourcc('R', 'G', 'B', 'Q')"
+                      " /* V4L2_PIX_FMT_RGB555X */")
+                      ", start=[-557785392, -557785391]"
+                      ", count=[2899238610, 2899238611], flags=%s}",
+                      pfx, f->type == V4L2_BUF_TYPE_VBI_CAPTURE
+                       ? XLAT_KNOWN(0x3, "V4L2_VBI_UNSYNC|V4L2_VBI_INTERLACED")
+                       : XLAT_UNKNOWN(0x1ce50d1c, "V4L2_VBI_???"));
+               break;
+
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
+       case V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE:
+       case V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE:
+               printf("%sfmt.pix_mp={width=3736074974, height=4208898469"
+                      ", pixelformat=" RAW("0x36314454")
+                      NRAW("v4l2_fourcc('T', 'D', '1', '6')")
+                      ", field=%s, colorspace=0xd"
+                      NRAW(" /* V4L2_COLORSPACE_??? */") ", plane_fmt=[",
+                      pfx, XLAT_STR(V4L2_FIELD_NONE));
+               if (f->type == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE) {
+                       printf("{sizeimage=3504261840, bytesperline=3504261841}"
+                       ", "
+                              "{sizeimage=3504261841, bytesperline=3504261840}"
+                              ", "
+                              "{sizeimage=3504261842, bytesperline=3504261843}"
+                              ", "
+                              "{sizeimage=3504261843, bytesperline=3504261842}"
+                              ", "
+                              "{sizeimage=3504261844, bytesperline=3504261845}"
+                              ", "
+                              "{sizeimage=3504261845, bytesperline=3504261844}"
+                              ", "
+                              "{sizeimage=3504261846, bytesperline=3504261847}"
+                              ", "
+                              "{sizeimage=3504261847, bytesperline=3504261846}"
+                              "], num_planes=213}");
+               } else {
+                       printf("], num_planes=0}");
+               }
+               break;
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE
+       case V4L2_BUF_TYPE_SLICED_VBI_CAPTURE:
+       case V4L2_BUF_TYPE_SLICED_VBI_OUTPUT:
+               printf("%sfmt.sliced={service_set="
+                      XLAT_UNKNOWN(0xfeed, "V4L2_SLICED_???")
+                      ", io_size=3740978925, service_lines=[[0xdead, 0xdeac"
+                      ", 0xdeaf, 0xdeae, 0xdea9, 0xdea8, 0xdeab, 0xdeaa"
+                      ", 0xdea5, 0xdea4, 0xdea7, 0xdea6, 0xdea1, 0xdea0"
+                      ", 0xdea3, 0xdea2, 0xdebd, 0xdebc, 0xdebf, 0xdebe"
+                      ", 0xdeb9, 0xdeb8, 0xdebb, 0xdeba], [0xdfad, 0xdfac"
+                      ", 0xdfaf, 0xdfae, 0xdfa9, 0xdfa8, 0xdfab, 0xdfaa"
+                      ", 0xdfa5, 0xdfa4, 0xdfa7, 0xdfa6, 0xdfa1, 0xdfa0"
+                      ", 0xdfa3, 0xdfa2, 0xdfbd, 0xdfbc, 0xdfbf, 0xdfbe"
+                      ", 0xdfb9, 0xdfb8, 0xdfbb, 0xdfba]]}",
+                      pfx);
+               break;
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE
+       case V4L2_BUF_TYPE_SDR_CAPTURE:
+# if HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT
+       case V4L2_BUF_TYPE_SDR_OUTPUT:
+# endif
+               printf("%sfmt.sdr={pixelformat=" RAW("0x38305543")
+                      NRAW("v4l2_fourcc('C', 'U', '0', '8')"
+                           " /* V4L2_SDR_FMT_CU8 */")
+                      ", buffersize=3134983661}",
+                      pfx);
+               break;
+#endif
+       }
+}
+
+int
+main(int argc, char **argv)
+{
+       unsigned long num_skip;
+       long inject_retval;
+       bool locked = false;
+
+       if (argc == 1)
+               return 0;
+
+       if (argc < 3)
+               error_msg_and_fail("Usage: %s NUM_SKIP INJECT_RETVAL", argv[0]);
+
+       num_skip = strtoul(argv[1], NULL, 0);
+       inject_retval = strtol(argv[2], NULL, 0);
+
+       if (inject_retval < 0)
+               error_msg_and_fail("Expected non-negative INJECT_RETVAL, "
+                                  "but got %ld", inject_retval);
+
+       for (unsigned int i = 0; i < num_skip; i++) {
+               long rc = ioctl(-1, VIDIOC_QUERYCAP, NULL);
+               printf("ioctl(-1, %s, NULL) = %s%s\n",
+                      XLAT_STR(VIDIOC_QUERYCAP), sprintrc(rc),
+                      rc == inject_retval ? " (INJECTED)" : "");
+
+               if (rc != inject_retval)
+                       continue;
+
+               locked = true;
+               break;
+       }
+
+       if (!locked)
+               error_msg_and_fail("Hasn't locked on ioctl(-1"
+                                  ", VIDIOC_QUERYCAP, NULL) returning %lu",
+                                  inject_retval);
+
+
+       /* VIDIOC_QUERYCAP */
+       struct v4l2_capability *caps = tail_alloc(sizeof(*caps));
+
+       fill_memory(caps, sizeof(*caps));
+       caps->capabilities = 0xdeadbeef;
+#ifdef HAVE_STRUCT_V4L2_CAPABILITY_DEVICE_CAPS
+       caps->device_caps = 0xfacefeed;
+#else
+       caps->reserved[0] = 0xfacefeed;
+#endif
+
+       ioctl(-1, VIDIOC_QUERYCAP, 0);
+       printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_QUERYCAP), inject_retval);
+
+       ioctl(-1, VIDIOC_QUERYCAP, (char *) caps + 1);
+       printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_QUERYCAP), (char *) caps + 1, inject_retval);
+
+       ioctl(-1, VIDIOC_QUERYCAP, caps);
+       printf("ioctl(-1, %s, {driver=", XLAT_STR(VIDIOC_QUERYCAP));
+       print_quoted_cstring((char *) caps->driver, sizeof(caps->driver));
+       printf(", card=");
+       print_quoted_cstring((char *) caps->card, sizeof(caps->card));
+       printf(", bus_info=");
+       print_quoted_cstring((char *) caps->bus_info, sizeof(caps->bus_info));
+       printf(", version="
+#ifdef WORDS_BIGENDIAN
+              XLAT_KNOWN(0xd0d1d2d3, "KERNEL_VERSION(53457, 210, 211)")
+#else
+              XLAT_KNOWN(0xd3d2d1d0, "KERNEL_VERSION(54226, 209, 208)")
+#endif
+              ", capabilities=" XLAT_KNOWN(0xdeadbeef,
+              "V4L2_CAP_VIDEO_CAPTURE|V4L2_CAP_VIDEO_OUTPUT"
+              "|V4L2_CAP_VIDEO_OVERLAY|V4L2_CAP_VBI_OUTPUT"
+              "|V4L2_CAP_SLICED_VBI_CAPTURE|V4L2_CAP_SLICED_VBI_OUTPUT"
+              "|V4L2_CAP_VIDEO_OUTPUT_OVERLAY|V4L2_CAP_HW_FREQ_SEEK"
+              "|V4L2_CAP_RDS_OUTPUT|V4L2_CAP_VIDEO_CAPTURE_MPLANE"
+              "|V4L2_CAP_VIDEO_OUTPUT_MPLANE|V4L2_CAP_VIDEO_M2M"
+              "|V4L2_CAP_TUNER|V4L2_CAP_RADIO|V4L2_CAP_MODULATOR"
+              "|V4L2_CAP_EXT_PIX_FORMAT|V4L2_CAP_META_CAPTURE|V4L2_CAP_ASYNCIO"
+              "|V4L2_CAP_STREAMING|V4L2_CAP_META_OUTPUT|V4L2_CAP_TOUCH"
+              "|V4L2_CAP_DEVICE_CAPS|0x40000008"));
+       printf(", device_caps=" XLAT_KNOWN(0xfacefeed,
+              "V4L2_CAP_VIDEO_CAPTURE|V4L2_CAP_VIDEO_OVERLAY"
+              "|V4L2_CAP_VBI_OUTPUT|V4L2_CAP_SLICED_VBI_CAPTURE"
+              "|V4L2_CAP_SLICED_VBI_OUTPUT|V4L2_CAP_VIDEO_OUTPUT_OVERLAY"
+              "|V4L2_CAP_HW_FREQ_SEEK|V4L2_CAP_RDS_OUTPUT"
+              "|V4L2_CAP_VIDEO_CAPTURE_MPLANE|V4L2_CAP_VIDEO_OUTPUT_MPLANE"
+              "|V4L2_CAP_VIDEO_M2M_MPLANE|V4L2_CAP_VIDEO_M2M|V4L2_CAP_AUDIO"
+              "|V4L2_CAP_RADIO|V4L2_CAP_MODULATOR|V4L2_CAP_SDR_OUTPUT"
+              "|V4L2_CAP_META_CAPTURE|V4L2_CAP_ASYNCIO|V4L2_CAP_META_OUTPUT"
+              "|V4L2_CAP_TOUCH|V4L2_CAP_DEVICE_CAPS|0x60000008"));
+       printf("}) = %ld (INJECTED)\n", inject_retval);
+
+
+       /* VIDIOC_ENUM_FMT */
+       static const struct strval32 buf_types[] = {
+               { ARG_XLAT_UNKNOWN(0, "V4L2_BUF_TYPE_???") },
+               { ARG_XLAT_KNOWN(0x1, "V4L2_BUF_TYPE_VIDEO_CAPTURE") },
+               { ARG_XLAT_KNOWN(0x2, "V4L2_BUF_TYPE_VIDEO_OUTPUT") },
+               { ARG_XLAT_KNOWN(0x3, "V4L2_BUF_TYPE_VIDEO_OVERLAY") },
+               { ARG_XLAT_KNOWN(0x4, "V4L2_BUF_TYPE_VBI_CAPTURE") },
+               { ARG_XLAT_KNOWN(0x5, "V4L2_BUF_TYPE_VBI_OUTPUT") },
+               { ARG_XLAT_KNOWN(0x6, "V4L2_BUF_TYPE_SLICED_VBI_CAPTURE") },
+               { ARG_XLAT_KNOWN(0x7, "V4L2_BUF_TYPE_SLICED_VBI_OUTPUT") },
+               { ARG_XLAT_KNOWN(0x8, "V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY") },
+               { ARG_XLAT_KNOWN(0x9, "V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE") },
+               { ARG_XLAT_KNOWN(0xa, "V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE") },
+               { ARG_XLAT_KNOWN(0xb, "V4L2_BUF_TYPE_SDR_CAPTURE") },
+               { ARG_XLAT_KNOWN(0xc, "V4L2_BUF_TYPE_SDR_OUTPUT") },
+               { ARG_XLAT_KNOWN(0xd, "V4L2_BUF_TYPE_META_CAPTURE") },
+               { ARG_XLAT_KNOWN(0xe, "V4L2_BUF_TYPE_META_OUTPUT") },
+               { ARG_XLAT_UNKNOWN(0xf, "V4L2_BUF_TYPE_???") },
+               { ARG_XLAT_UNKNOWN(0x80, "V4L2_BUF_TYPE_???") },
+               { ARG_XLAT_UNKNOWN(0xbadc0ded, "V4L2_BUF_TYPE_???") },
+       };
+       static const struct strval32 fmtdesc_flags[] = {
+               { ARG_STR(0) },
+               { ARG_XLAT_KNOWN(0x1, "V4L2_FMT_FLAG_COMPRESSED") },
+               { ARG_XLAT_KNOWN(0x3e, "V4L2_FMT_FLAG_EMULATED"
+                                      "|V4L2_FMT_FLAG_CONTINUOUS_BYTESTREAM"
+                                      "|V4L2_FMT_FLAG_DYN_RESOLUTION"
+                                      "|V4L2_FMT_FLAG_ENC_CAP_FRAME_INTERVAL"
+                                      "|0x20") },
+               { ARG_XLAT_UNKNOWN(0xdead0000, "V4L2_FMT_FLAG_???") },
+       };
+       static const struct strval32 fmtdesc_fmts[] = {
+               { 0x4c47504a, RAW("0x4c47504a")
+                             NRAW("v4l2_fourcc('J', 'P', 'G', 'L')"
+                                  " /* V4L2_PIX_FMT_JPGL */") },
+               { 0xbadc0ded, RAW("0xbadc0ded")
+                             NRAW("v4l2_fourcc('\\xed', '\\x0d', '\\xdc',"
+                                  " '\\xba')") },
+       };
+       struct v4l2_fmtdesc *fmtdesc = tail_alloc(sizeof(*fmtdesc));
+
+       fill_memory(fmtdesc, sizeof(*fmtdesc));
+       fmtdesc->index = 0xdeac0de;
+
+       ioctl(-1, VIDIOC_ENUM_FMT, 0);
+       printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_ENUM_FMT), inject_retval);
+
+       ioctl(-1, VIDIOC_ENUM_FMT, (char *) fmtdesc + 1);
+       printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_ENUM_FMT), (char *) fmtdesc + 1, inject_retval);
+
+       for (size_t i = 0; i < ARRAY_SIZE(buf_types); i++) {
+               for (size_t j = 0; j < ARRAY_SIZE(fmtdesc_flags); j++) {
+                       for (size_t k = 0; k < ARRAY_SIZE(fmtdesc_fmts); k++) {
+                               fmtdesc->type = buf_types[i].val;
+                               fmtdesc->flags = fmtdesc_flags[j].val;
+                               fmtdesc->pixelformat = fmtdesc_fmts[k].val;
+
+                               ioctl(-1, VIDIOC_ENUM_FMT, fmtdesc);
+                               printf("ioctl(-1, %s, {index=233488606, type=%s"
+                                      ", flags=%s, description=",
+                                      XLAT_STR(VIDIOC_ENUM_FMT),
+                                      buf_types[i].str,
+                                      fmtdesc_flags[j].str);
+                               print_quoted_cstring((char *) fmtdesc->description,
+                                       sizeof(fmtdesc->description));
+                               printf(", pixelformat=%s}) = %ld (INJECTED)\n",
+                                      fmtdesc_fmts[k].str, inject_retval);
+
+                               fill_memory_ex(fmtdesc->description,
+                                              sizeof(fmtdesc->description),
+                                              (i * 9 + j) * 7 + k,
+                                              (k * 3 + j) * 11 + i + 5);
+                       }
+               }
+       }
+
+
+       /* VIDIOC_REQBUFS */
+       static const struct strval32 reqb_mems[] = {
+               { ARG_XLAT_UNKNOWN(0, "V4L2_MEMORY_???") },
+               { ARG_XLAT_KNOWN(0x1, "V4L2_MEMORY_MMAP") },
+               { ARG_XLAT_KNOWN(0x4, "V4L2_MEMORY_DMABUF") },
+               { ARG_XLAT_UNKNOWN(0x5, "V4L2_MEMORY_???") },
+               { ARG_XLAT_UNKNOWN(0xbadc0ded, "V4L2_MEMORY_???") },
+       };
+       struct v4l2_requestbuffers *reqb = tail_alloc(sizeof(*reqb));
+
+       fill_memory(reqb, sizeof(*reqb));
+       reqb->count = 0xfeedface;
+
+       ioctl(-1, VIDIOC_REQBUFS, 0);
+       printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_REQBUFS), inject_retval);
+
+       ioctl(-1, VIDIOC_REQBUFS, (char *) reqb + 1);
+       printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_REQBUFS), (char *) reqb + 1, inject_retval);
+
+       for (size_t i = 0; i < MAX(ARRAY_SIZE(buf_types),
+                                  ARRAY_SIZE(reqb_mems)); i++) {
+               reqb->type = buf_types[i % ARRAY_SIZE(buf_types)].val;
+               reqb->memory = reqb_mems[i % ARRAY_SIZE(reqb_mems)].val;
+
+               ioctl(-1, VIDIOC_REQBUFS, reqb);
+               printf("ioctl(-1, %s, {type=%s, memory=%s"
+                      ", count=4277009102 => 4277009102}) = %ld (INJECTED)\n",
+                      XLAT_STR(VIDIOC_REQBUFS),
+                      buf_types[i % ARRAY_SIZE(buf_types)].str,
+                      reqb_mems[i % ARRAY_SIZE(reqb_mems)].str,
+                      inject_retval);
+       }
+
+
+       /* VIDIOC_G_FMT, VIDIOC_S_FMT, VIDIOC_TRY_FMT */
+       static const struct strval32 fmt_cmds[] = {
+               { ARG_STR(VIDIOC_G_FMT) },
+               { ARG_STR(VIDIOC_S_FMT) },
+               { ARG_STR(VIDIOC_TRY_FMT) },
+       };
+
+       struct v4l2_format *fmt = tail_alloc(sizeof(*fmt));
+
+       for (size_t i = 0; i < ARRAY_SIZE(fmt_cmds); i++) {
+               ioctl(-1, fmt_cmds[i].val, 0);
+               printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+                      sprintxlat(fmt_cmds[i].str, fmt_cmds[i].val, NULL),
+                      inject_retval);
+
+               ioctl(-1, fmt_cmds[i].val, (char *) fmt + 1);
+               printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+                      sprintxlat(fmt_cmds[i].str, fmt_cmds[i].val, NULL),
+                      (char *) fmt + 1, inject_retval);
+
+               for (size_t j = 0; j < ARRAY_SIZE(buf_types); j++) {
+                       fill_memory(fmt, sizeof(*fmt));
+
+                       fmt->type = buf_types[j].val;
+                       if (!fill_fmt(fmt))
+                               continue;
+
+                       ioctl(-1, fmt_cmds[i].val, fmt);
+                       printf("ioctl(-1, %s, {type=%s",
+                              sprintxlat(fmt_cmds[i].str, fmt_cmds[i].val,
+                                         NULL),
+                              buf_types[j].str);
+                       print_fmt(", ", fmt);
+                       if (fmt_cmds[i].val != VIDIOC_G_FMT &&
+                           buf_types[j].val != V4L2_BUF_TYPE_VIDEO_OVERLAY &&
+                           buf_types[j].val != 8)
+                               print_fmt("} => {", fmt);
+                       printf("}) = %ld (INJECTED)\n", inject_retval);
+               }
+       }
+
+
+       /* VIDIOC_QUERYBUF, VIDIOC_QBUF, VIDIOC_DQBUF */
+       static const struct strval32 buf_cmds[] = {
+               { ARG_STR(VIDIOC_QUERYBUF) },
+               { ARG_STR(VIDIOC_QBUF) },
+               { ARG_STR(VIDIOC_DQBUF) },
+       };
+
+       kernel_v4l2_buffer_t *buf = tail_alloc(sizeof(*buf));
+
+       for (size_t i = 0; i < ARRAY_SIZE(buf_cmds); i++) {
+               ioctl(-1, buf_cmds[i].val, 0);
+               printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+                      sprintxlat(buf_cmds[i].str, buf_cmds[i].val, NULL),
+                      inject_retval);
+
+               ioctl(-1, buf_cmds[i].val, (char *) buf + 1);
+               printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+                      sprintxlat(buf_cmds[i].str, buf_cmds[i].val, NULL),
+                      (char *) buf + 1, inject_retval);
+
+               fill_memory(buf, sizeof(*buf));
+               buf->index     = 0xdeadc0de;
+               buf->type      = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+               buf->bytesused = 0xdecaffee;
+               buf->flags     = 0x1ff; /* TODO: update */
+               buf->field     = V4L2_FIELD_TOP;
+
+               buf->timestamp.tv_sec  = 0x1e55c0de;
+               buf->timestamp.tv_usec = 999999;
+
+               buf->timecode.type = V4L2_TC_TYPE_24FPS;
+               buf->timecode.flags = 0xbeefdeaf;
+
+               buf->memory    = V4L2_MEMORY_MMAP;
+               buf->m.offset  = 0xfacefeed;
+               buf->length    = 0xcafebed5;
+               buf->reserved  = 0xdeefaced;
+
+               ioctl(-1, buf_cmds[i].val, buf);
+               printf("ioctl(-1, %s, {type="
+                      XLAT_KNOWN(0x1, "V4L2_BUF_TYPE_VIDEO_CAPTURE")
+                      ", index=3735929054, memory="
+                      XLAT_KNOWN(0x1, "V4L2_MEMORY_MMAP")
+                      ", m.offset=0xfacefeed, length=3405692629"
+                      ", bytesused=3737845742, flags=" RAW("0x1ff")
+#if !XLAT_RAW
+                      XLAT_KNOWN(0x1ff, "V4L2_BUF_FLAG_MAPPED"
+                      "|V4L2_BUF_FLAG_QUEUED|V4L2_BUF_FLAG_DONE"
+                      "|V4L2_BUF_FLAG_KEYFRAME|V4L2_BUF_FLAG_PFRAME"
+                      "|V4L2_BUF_FLAG_BFRAME|V4L2_BUF_FLAG_ERROR"
+                      "|V4L2_BUF_FLAG_IN_REQUEST|V4L2_BUF_FLAG_TIMECODE") "|"
+                      XLAT_KNOWN(0, "V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN") "|"
+                      XLAT_KNOWN(0, "V4L2_BUF_FLAG_TSTAMP_SRC_EOF")
+#endif
+                      "%s, ...}) = %ld (INJECTED)\n",
+                      sprintxlat(buf_cmds[i].str, buf_cmds[i].val, NULL),
+                      buf_cmds[i].val == VIDIOC_DQBUF
+                       ? ", timestamp={tv_sec=508936414, tv_usec=999999}" : "",
+                      inject_retval);
+
+               buf->type      = V4L2_BUF_TYPE_VBI_CAPTURE;
+               buf->flags     = 0x268040;
+               buf->field     = 0xb;
+               buf->memory    = V4L2_MEMORY_USERPTR;
+               buf->m.userptr = (long) 0xdefaced0dec0ded1LL;
+
+               ioctl(-1, buf_cmds[i].val, buf);
+               printf("ioctl(-1, %s, {type="
+                      XLAT_KNOWN(0x4, "V4L2_BUF_TYPE_VBI_CAPTURE")
+                      ", index=3735929054, memory="
+                      XLAT_KNOWN(0x2, "V4L2_MEMORY_USERPTR")
+                      ", m.userptr=%p, length=3405692629"
+                      ", bytesused=3737845742, flags=" RAW("0x268040")
+#if !XLAT_RAW
+                      XLAT_KNOWN(0x200040, "V4L2_BUF_FLAG_ERROR|0x200000") "|"
+                      XLAT_UNKNOWN(0x8000, "V4L2_BUF_FLAG_TIMESTAMP_???") "|"
+                      XLAT_UNKNOWN(0x60000, "V4L2_BUF_FLAG_TSTAMP_SRC_???")
+#endif
+                      "%s, ...}) = %ld (INJECTED)\n",
+                      sprintxlat(buf_cmds[i].str, buf_cmds[i].val, NULL),
+                      (void *) (intptr_t) 0xdefaced0dec0ded1LL,
+                      buf_cmds[i].val == VIDIOC_DQBUF
+                       ? ", timestamp={tv_sec=508936414, tv_usec=999999}" : "",
+                      inject_retval);
+
+               buf->type      = 0x9;
+               buf->flags     = 0;
+
+               ioctl(-1, buf_cmds[i].val, buf);
+               printf("ioctl(-1, %s, {type="
+                      XLAT_KNOWN(0x9, "V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE")
+                      ", index=3735929054, memory="
+                      XLAT_KNOWN(0x2, "V4L2_MEMORY_USERPTR")
+                      ", m.userptr=%p, length=3405692629"
+                      ", bytesused=3737845742, flags=" RAW("0")
+#if !XLAT_RAW
+                      XLAT_KNOWN(0, "V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN") "|"
+                      XLAT_KNOWN(0, "V4L2_BUF_FLAG_TSTAMP_SRC_EOF")
+#endif
+                      "%s, ...}) = %ld (INJECTED)\n",
+                      sprintxlat(buf_cmds[i].str, buf_cmds[i].val, NULL),
+                      (void *) (intptr_t) 0xdefaced0dec0ded1LL,
+                      buf_cmds[i].val == VIDIOC_DQBUF
+                       ? ", timestamp={tv_sec=508936414, tv_usec=999999}" : "",
+                      inject_retval);
+
+               buf->type      = 0xa;
+               buf->memory    = V4L2_MEMORY_OVERLAY;
+               buf->flags     = 0x2000;
+
+               ioctl(-1, buf_cmds[i].val, buf);
+               printf("ioctl(-1, %s, {type="
+                      XLAT_KNOWN(0xa, "V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE")
+                      ", index=3735929054, memory="
+                      XLAT_KNOWN(0x3, "V4L2_MEMORY_OVERLAY")
+                      ", length=3405692629, bytesused=3737845742"
+                      ", flags=" RAW("0x2000")
+#if !XLAT_RAW
+                      XLAT_KNOWN(0x2000, "V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC")
+                      "|" XLAT_KNOWN(0, "V4L2_BUF_FLAG_TSTAMP_SRC_EOF")
+#endif
+                      "%s, ...}) = %ld (INJECTED)\n",
+                      sprintxlat(buf_cmds[i].str, buf_cmds[i].val, NULL),
+                      buf_cmds[i].val == VIDIOC_DQBUF
+                       ? ", timestamp={tv_sec=508936414, tv_usec=999999}" : "",
+                      inject_retval);
+       }
+
+
+       /* VIDIOC_G_FBUF, VIDIOC_S_FBUF */
+       static const struct strval32 fbuf_cmds[] = {
+               { ARG_STR(VIDIOC_G_FBUF) },
+               { ARG_STR(VIDIOC_S_FBUF) },
+       };
+
+       struct v4l2_framebuffer *fbuf = tail_alloc(sizeof(*fbuf));
+
+       for (size_t i = 0; i < ARRAY_SIZE(fbuf_cmds); i++) {
+               ioctl(-1, fbuf_cmds[i].val, 0);
+               printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+                      sprintxlat(fbuf_cmds[i].str, fbuf_cmds[i].val, NULL),
+                      inject_retval);
+
+               ioctl(-1, fbuf_cmds[i].val, (char *) fbuf + 1);
+               printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+                      sprintxlat(fbuf_cmds[i].str, fbuf_cmds[i].val, NULL),
+                      (char *) fbuf + 1, inject_retval);
+
+               fill_memory32(fbuf, sizeof(*fbuf));
+               fbuf->base = NULL;
+
+               ioctl(-1, fbuf_cmds[i].val, fbuf);
+               printf("ioctl(-1, %s, {capability=0x80a0c0e0, flags=0x80a0c0e1"
+                      ", base=NULL}) = %ld (INJECTED)\n",
+                      sprintxlat(fbuf_cmds[i].str, fbuf_cmds[i].val, NULL),
+                      inject_retval);
+       }
+
+
+       /* VIDIOC_G_PARM, VIDIOC_S_PARM */
+       static const struct strval32 sparm_cmds[] = {
+               { ARG_STR(VIDIOC_G_PARM) },
+               { ARG_STR(VIDIOC_S_PARM) },
+       };
+
+       struct v4l2_streamparm *sparm = tail_alloc(sizeof(*sparm));
+
+       for (size_t i = 0; i < ARRAY_SIZE(sparm_cmds); i++) {
+               ioctl(-1, sparm_cmds[i].val, 0);
+               printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+                      sprintxlat(sparm_cmds[i].str, sparm_cmds[i].val, NULL),
+                      inject_retval);
+
+               ioctl(-1, sparm_cmds[i].val, (char *) sparm + 1);
+               printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+                      sprintxlat(sparm_cmds[i].str, sparm_cmds[i].val, NULL),
+                      (char *) sparm + 1, inject_retval);
+
+               fill_memory32(sparm, sizeof(*sparm));
+
+               ioctl(-1, sparm_cmds[i].val, sparm);
+               printf("ioctl(-1, %s, {type="
+                      XLAT_UNKNOWN(0x80a0c0e0, "V4L2_BUF_TYPE_???")
+                      "}) = %ld (INJECTED)\n",
+                      sprintxlat(sparm_cmds[i].str, sparm_cmds[i].val, NULL),
+                      inject_retval);
+
+               sparm->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+
+               static const char *parm_str1 = "parm.capture={capability="
+                       XLAT_UNKNOWN(0x80a0c0e1, "V4L2_CAP_???")
+                       ", capturemode="
+                       XLAT_UNKNOWN(0x80a0c0e2, "V4L2_MODE_???")
+                       ", timeperframe=2158018787/2158018788"
+                       ", extendedmode=0x80a0c0e5, readbuffers=2158018790}";
+
+               ioctl(-1, sparm_cmds[i].val, sparm);
+               printf("ioctl(-1, %s, {type="
+                      XLAT_KNOWN(0x1, "V4L2_BUF_TYPE_VIDEO_CAPTURE")
+                      ", %s}%s%s%s) = %ld (INJECTED)\n",
+                      sprintxlat(sparm_cmds[i].str, sparm_cmds[i].val, NULL),
+                      parm_str1,
+                      sparm_cmds[i].val == VIDIOC_S_PARM ? " => {" : "",
+                      sparm_cmds[i].val == VIDIOC_S_PARM ? parm_str1 : "",
+                      sparm_cmds[i].val == VIDIOC_S_PARM ? "}" : "",
+                      inject_retval);
+
+               sparm->parm.capture.capability = 0x1000;
+               sparm->parm.capture.capturemode = 0x1;
+
+               static const char *parm_str2 = "parm.capture={capability="
+                       XLAT_KNOWN(0x1000, "V4L2_CAP_TIMEPERFRAME")
+                       ", capturemode="
+                       XLAT_KNOWN(0x1, "V4L2_MODE_HIGHQUALITY")
+                       ", timeperframe=2158018787/2158018788"
+                       ", extendedmode=0x80a0c0e5, readbuffers=2158018790}";
+
+               ioctl(-1, sparm_cmds[i].val, sparm);
+               printf("ioctl(-1, %s, {type="
+                      XLAT_KNOWN(0x1, "V4L2_BUF_TYPE_VIDEO_CAPTURE")
+                      ", %s}%s%s%s) = %ld (INJECTED)\n",
+                      sprintxlat(sparm_cmds[i].str, sparm_cmds[i].val, NULL),
+                      parm_str2,
+                      sparm_cmds[i].val == VIDIOC_S_PARM ? " => {" : "",
+                      sparm_cmds[i].val == VIDIOC_S_PARM ? parm_str2 : "",
+                      sparm_cmds[i].val == VIDIOC_S_PARM ? "}" : "",
+                      inject_retval);
+
+               sparm->type = 0x9;
+               sparm->parm.capture.capability = 0xdeadbeef;
+               sparm->parm.capture.capturemode = 0xadec0ded;
+
+               ioctl(-1, sparm_cmds[i].val, sparm);
+               printf("ioctl(-1, %s, {type="
+                      XLAT_KNOWN(0x9, "V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE")
+                      "}) = %ld (INJECTED)\n",
+                      sprintxlat(sparm_cmds[i].str, sparm_cmds[i].val, NULL),
+                      inject_retval);
+
+               fill_memory32(sparm, sizeof(*sparm));
+               sparm->type = V4L2_BUF_TYPE_VIDEO_OUTPUT;
+
+               static const char *parm_str3 = "parm.output={capability="
+                       XLAT_UNKNOWN(0x80a0c0e1, "V4L2_CAP_???")
+                       ", outputmode="
+                       XLAT_UNKNOWN(0x80a0c0e2, "V4L2_MODE_???")
+                       ", timeperframe=2158018787/2158018788"
+                       ", extendedmode=0x80a0c0e5, writebuffers=2158018790}";
+
+               ioctl(-1, sparm_cmds[i].val, sparm);
+               printf("ioctl(-1, %s, {type="
+                      XLAT_KNOWN(0x2, "V4L2_BUF_TYPE_VIDEO_OUTPUT")
+                      ", %s}%s%s%s) = %ld (INJECTED)\n",
+                      sprintxlat(sparm_cmds[i].str, sparm_cmds[i].val, NULL),
+                      parm_str3,
+                      sparm_cmds[i].val == VIDIOC_S_PARM ? " => {" : "",
+                      sparm_cmds[i].val == VIDIOC_S_PARM ? parm_str3 : "",
+                      sparm_cmds[i].val == VIDIOC_S_PARM ? "}" : "",
+                      inject_retval);
+
+       }
+
+
+       /* VIDIOC_G_STD, VIDIOC_S_STD */
+       static const struct strval32 stdid_cmds[] = {
+               { ARG_STR(VIDIOC_G_STD) },
+               { ARG_STR(VIDIOC_S_STD) },
+       };
+       static const struct strval64 stdids[] = {
+               { ARG_STR(0) },
+               { ARG_STR(0x1) },
+               { ARG_STR(0xb000) },
+               { ARG_STR(0x3ffffff) },
+               { ARG_STR(0xffffffff) },
+               { ARG_ULL_STR(0xbadc0deddeadface) },
+       };
+
+       v4l2_std_id *stdid = tail_alloc(sizeof(*stdid));
+
+       for (size_t i = 0; i < ARRAY_SIZE(stdid_cmds); i++) {
+               ioctl(-1, stdid_cmds[i].val, 0);
+               printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+                      sprintxlat(stdid_cmds[i].str, stdid_cmds[i].val, NULL),
+                      inject_retval);
+
+               ioctl(-1, stdid_cmds[i].val, (char *) stdid + 1);
+               printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+                      sprintxlat(stdid_cmds[i].str, stdid_cmds[i].val, NULL),
+                      (char *) stdid + 1, inject_retval);
+
+               for (size_t j = 0; j < ARRAY_SIZE(stdids); j++) {
+                       *stdid = stdids[j].val;
+
+                       ioctl(-1, stdid_cmds[i].val, stdid);
+                       printf("ioctl(-1, %s, [%s]) = %ld (INJECTED)\n",
+                              sprintxlat(stdid_cmds[i].str, stdid_cmds[i].val, NULL),
+                              stdids[j].str, inject_retval);
+
+               }
+       }
+
+
+       /* VIDIOC_ENUMSTD */
+       struct v4l2_standard *std = tail_alloc(sizeof(*std));
+
+       ioctl(-1, VIDIOC_ENUMSTD, 0);
+       printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_ENUMSTD), inject_retval);
+
+       ioctl(-1, VIDIOC_ENUMSTD, (char *) std + 1);
+       printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_ENUMSTD), (char *) std + 1, inject_retval);
+
+       for (size_t i = 0; i < ARRAY_SIZE(stdids); i++) {
+               fill_memory32(&std->frameperiod, sizeof(*std) -
+                             offsetof(struct v4l2_standard, frameperiod));
+               fill_memory_ex(std->name, sizeof(std->name), i * 47 + 1, 255);
+               std->index = 0xdeadface;
+               std->id = stdids[i].val;
+
+               ioctl(-1, VIDIOC_ENUMSTD, std);
+               printf("ioctl(-1, %s, {index=3735943886, name=",
+                      XLAT_STR(VIDIOC_ENUMSTD));
+               print_quoted_cstring((char *) std->name, sizeof(std->name));
+               printf(", frameperiod=2158018784/2158018785"
+                      ", framelines=2158018786}) = %ld (INJECTED)\n",
+                      inject_retval);
+       }
+
+
+       /* VIDIOC_ENUMINPUT */
+       static const struct strval32 input_types[] = {
+               { ARG_XLAT_UNKNOWN(0, "V4L2_INPUT_TYPE_???") },
+               { V4L2_INPUT_TYPE_TUNER,
+                 XLAT_KNOWN(0x1, "V4L2_INPUT_TYPE_TUNER") },
+               { V4L2_INPUT_TYPE_CAMERA,
+                 XLAT_KNOWN(0x2, "V4L2_INPUT_TYPE_CAMERA") },
+               { ARG_XLAT_UNKNOWN(0x4, "V4L2_INPUT_TYPE_???") },
+               { ARG_XLAT_UNKNOWN(0xdeadc0de, "V4L2_INPUT_TYPE_???") },
+       };
+
+       struct v4l2_input *input = tail_alloc(sizeof(*input));
+
+       ioctl(-1, VIDIOC_ENUMINPUT, 0);
+       printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_ENUMINPUT), inject_retval);
+
+       ioctl(-1, VIDIOC_ENUMINPUT, (char *) input + 1);
+       printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_ENUMINPUT), (char *) input + 1, inject_retval);
+
+       for (size_t i = 0; i < ARRAY_SIZE(stdids); i++) {
+               for (size_t j = 0; j < ARRAY_SIZE(input_types); j++) {
+                       fill_memory32(input, sizeof(*input));
+                       fill_memory_ex(input->name, sizeof(input->name),
+                                      i * 47 + 13, 255);
+                       input->type = input_types[j].val;
+                       input->std = stdids[i].val;
+
+                       ioctl(-1, VIDIOC_ENUMINPUT, input);
+                       printf("ioctl(-1, %s, {index=2158018784, name=",
+                              XLAT_STR(VIDIOC_ENUMINPUT));
+                       print_quoted_cstring((char *) input->name,
+                                            sizeof(input->name));
+                       printf(", type=%s}) = %ld (INJECTED)\n",
+                              input_types[j].str, inject_retval);
+               }
+       }
+
+
+       /* VIDIOC_G_CTRL, VIDIOC_S_CTRL */
+       static const struct strval32 ctrl_cmds[] = {
+               { ARG_STR(VIDIOC_G_CTRL) },
+               { ARG_STR(VIDIOC_S_CTRL) },
+       };
+
+       struct v4l2_control *ctrl = tail_alloc(sizeof(*ctrl));
+
+       for (size_t i = 0; i < ARRAY_SIZE(ctrl_cmds); i++) {
+               ioctl(-1, ctrl_cmds[i].val, 0);
+               printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+                      sprintxlat(ctrl_cmds[i].str, ctrl_cmds[i].val, NULL),
+                      inject_retval);
+
+               ioctl(-1, ctrl_cmds[i].val, (char *) ctrl + 1);
+               printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+                      sprintxlat(ctrl_cmds[i].str, ctrl_cmds[i].val, NULL),
+                      (char *) ctrl + 1, inject_retval);
+
+               /* NB: cid printing is mostly tested in ioctl_v4l2.c */
+               fill_memory32(ctrl, sizeof(*ctrl));
+               ioctl(-1, ctrl_cmds[i].val, ctrl);
+               printf("ioctl(-1, %s, {id=0x80a0c0e0"
+                      NRAW(" /* V4L2_CID_??? */")
+                      ", value=-2136948511%s}) = %ld (INJECTED)\n",
+                      sprintxlat(ctrl_cmds[i].str, ctrl_cmds[i].val, NULL),
+                      ctrl_cmds[i].val == VIDIOC_S_CTRL
+                       ? " => -2136948511" : "",
+                      inject_retval);
+       }
+
+
+       /* VIDIOC_G_TUNER, VIDIOC_S_TUNER */
+       static const struct strval32 tuner_cmds[] = {
+               { ARG_STR(VIDIOC_G_TUNER) },
+               { ARG_STR(VIDIOC_S_TUNER) },
+       };
+       static const struct strval32 tuner_types[] = {
+               { ARG_XLAT_UNKNOWN(0, "V4L2_TUNER_???") },
+               { ARG_XLAT_KNOWN(0x1, "V4L2_TUNER_RADIO") },
+               { ARG_XLAT_KNOWN(0x5, "V4L2_TUNER_RF") },
+               { ARG_XLAT_UNKNOWN(0x6, "V4L2_TUNER_???") },
+               { ARG_XLAT_UNKNOWN(0xdeadc0de, "V4L2_TUNER_???") },
+       };
+       static const struct strval32 tuner_caps[] = {
+               { ARG_STR(0) },
+               { ARG_XLAT_KNOWN(0x1fff, "V4L2_TUNER_CAP_LOW"
+                                "|V4L2_TUNER_CAP_NORM"
+                                "|V4L2_TUNER_CAP_HWSEEK_BOUNDED"
+                                "|V4L2_TUNER_CAP_HWSEEK_WRAP"
+                                "|V4L2_TUNER_CAP_STEREO|V4L2_TUNER_CAP_LANG2"
+                                "|V4L2_TUNER_CAP_LANG1|V4L2_TUNER_CAP_RDS"
+                                "|V4L2_TUNER_CAP_RDS_BLOCK_IO"
+                                "|V4L2_TUNER_CAP_RDS_CONTROLS"
+                                "|V4L2_TUNER_CAP_FREQ_BANDS"
+                                "|V4L2_TUNER_CAP_HWSEEK_PROG_LIM"
+                                "|V4L2_TUNER_CAP_1HZ") },
+               { ARG_XLAT_KNOWN(0xdeadc0de, "V4L2_TUNER_CAP_NORM"
+                                "|V4L2_TUNER_CAP_HWSEEK_BOUNDED"
+                                "|V4L2_TUNER_CAP_HWSEEK_WRAP"
+                                "|V4L2_TUNER_CAP_STEREO|V4L2_TUNER_CAP_LANG1"
+                                "|V4L2_TUNER_CAP_RDS|0xdeadc000") },
+               { ARG_XLAT_UNKNOWN(0xffffe000, "V4L2_TUNER_CAP_???") },
+       };
+       static const struct strval32 tuner_rxsc[] = {
+               { ARG_STR(0) },
+               { ARG_XLAT_KNOWN(0x1f, "V4L2_TUNER_SUB_MONO"
+                                "|V4L2_TUNER_SUB_STEREO|V4L2_TUNER_SUB_LANG2"
+                                "|V4L2_TUNER_SUB_LANG1|V4L2_TUNER_SUB_RDS") },
+               { ARG_XLAT_KNOWN(0xbeefface, "V4L2_TUNER_SUB_STEREO"
+                                "|V4L2_TUNER_SUB_LANG2|V4L2_TUNER_SUB_LANG1"
+                                "|0xbeeffac0") },
+               { ARG_XLAT_UNKNOWN(0xffffffe0, "V4L2_TUNER_SUB_???") },
+
+       };
+       static const struct strval32 tuner_amodes[] = {
+               { ARG_XLAT_KNOWN(0, "V4L2_TUNER_MODE_MONO") },
+               { ARG_XLAT_KNOWN(0x2, "V4L2_TUNER_MODE_LANG2") },
+               { ARG_XLAT_KNOWN(0x4, "V4L2_TUNER_MODE_LANG1_LANG2") },
+               { ARG_XLAT_UNKNOWN(0x5, "V4L2_TUNER_MODE_???") },
+               { ARG_XLAT_UNKNOWN(0xcaffeeed, "V4L2_TUNER_MODE_???") },
+       };
+       static const size_t tuner_iters = MAX(MAX(MAX(ARRAY_SIZE(tuner_types),
+                                                     ARRAY_SIZE(tuner_caps)),
+                                                 ARRAY_SIZE(tuner_rxsc)),
+                                             ARRAY_SIZE(tuner_amodes));
+
+       struct v4l2_tuner *tuner = tail_alloc(sizeof(*tuner));
+
+       for (size_t i = 0; i < ARRAY_SIZE(tuner_cmds); i++) {
+               ioctl(-1, tuner_cmds[i].val, 0);
+               printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+                      sprintxlat(tuner_cmds[i].str, tuner_cmds[i].val, NULL),
+                      inject_retval);
+
+               ioctl(-1, tuner_cmds[i].val, (char *) tuner + 1);
+               printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+                      sprintxlat(tuner_cmds[i].str, tuner_cmds[i].val, NULL),
+                      (char *) tuner + 1, inject_retval);
+
+               for (size_t j = 0; j < tuner_iters; j++) {
+                       fill_memory32(tuner, sizeof(*tuner));
+                       fill_memory_ex(tuner->name, sizeof(tuner->name),
+                                      j * 47 + 7, 255);
+                       tuner->type =
+                               tuner_types[j % ARRAY_SIZE(tuner_types)].val;
+                       tuner->capability =
+                               tuner_caps[j % ARRAY_SIZE(tuner_caps)].val;
+                       tuner->rxsubchans =
+                               tuner_rxsc[j % ARRAY_SIZE(tuner_rxsc)].val;
+                       tuner->audmode =
+                               tuner_amodes[j % ARRAY_SIZE(tuner_amodes)].val;
+
+                       ioctl(-1, tuner_cmds[i].val, tuner);
+                       printf("ioctl(-1, %s, {index=2158018784",
+                              sprintxlat(tuner_cmds[i].str,
+                                         tuner_cmds[i].val, NULL));
+                       for (size_t k = 0;
+                            k < (tuner_cmds[i].val == VIDIOC_S_TUNER ? 2 : 1);
+                            k++) {
+                               printf("%sname=", k ? "} => {" : ", ");
+                               print_quoted_cstring((char *) tuner->name,
+                                                    sizeof(tuner->name));
+                               printf(", type=%s, capability=%s"
+                                      ", rangelow=2158018795"
+                                      ", rangehigh=2158018796, rxsubchans=%s"
+                                      ", audmode=%s, signal=-2136948497"
+                                      ", afc=-2136948496",
+                                      tuner_types[j %
+                                                  ARRAY_SIZE(tuner_types)].str,
+                                      tuner_caps[j %
+                                                 ARRAY_SIZE(tuner_caps)].str,
+                                      tuner_rxsc[j %
+                                                 ARRAY_SIZE(tuner_rxsc)].str,
+                                      tuner_amodes[j %
+                                                ARRAY_SIZE(tuner_amodes)].str);
+                       }
+                       printf("}) = %ld (INJECTED)\n", inject_retval);
+               }
+       }
+
+
+       /* VIDIOC_QUERYCTRL */
+       static const struct strval32 cids[] = {
+               { ARG_XLAT_UNKNOWN(0, "V4L2_CID_???") },
+               { ARG_XLAT_UNKNOWN(0x97abcd, "V4L2_CID_???") },
+               { ARG_XLAT_KNOWN(0x980000, "V4L2_CTRL_CLASS_USER+0") },
+               { ARG_XLAT_KNOWN(0x990a64,
+                                "V4L2_CID_MPEG_VIDEO_H264_CPB_SIZE") },
+               { ARG_XLAT_KNOWN(0xa31234, "V4L2_CTRL_CLASS_DETECT+0x1234") },
+               { ARG_XLAT_UNKNOWN(0xa40000, "V4L2_CID_???") },
+               { 0xdeadc0de,
+#if XLAT_RAW
+                 "0xdeadc0de"
+#else
+                 XLAT_KNOWN(0xc0000000, "V4L2_CTRL_FLAG_NEXT_CTRL"
+                                        "|V4L2_CTRL_FLAG_NEXT_COMPOUND")
+                 "|0x1eadc0de /* V4L2_CID_??? */"
+#endif
+                             },
+       };
+       static const struct strval32 ctrl_types[] = {
+               { ARG_XLAT_UNKNOWN(0, "V4L2_CTRL_TYPE_???") },
+               { ARG_XLAT_KNOWN(0x1, "V4L2_CTRL_TYPE_INTEGER") },
+               { ARG_XLAT_KNOWN(0x2, "V4L2_CTRL_TYPE_BOOLEAN") },
+               { ARG_XLAT_KNOWN(0x3, "V4L2_CTRL_TYPE_MENU") },
+               { ARG_XLAT_KNOWN(0x4, "V4L2_CTRL_TYPE_BUTTON") },
+               { ARG_XLAT_KNOWN(0x5, "V4L2_CTRL_TYPE_INTEGER64") },
+               { ARG_XLAT_KNOWN(0x6, "V4L2_CTRL_TYPE_CTRL_CLASS") },
+               { ARG_XLAT_KNOWN(0x7, "V4L2_CTRL_TYPE_STRING") },
+               { ARG_XLAT_KNOWN(0x8, "V4L2_CTRL_TYPE_BITMASK") },
+               { ARG_XLAT_KNOWN(0x9, "V4L2_CTRL_TYPE_INTEGER_MENU") },
+               { ARG_XLAT_UNKNOWN(0xa, "V4L2_CTRL_TYPE_???") },
+               { ARG_XLAT_UNKNOWN(0xff, "V4L2_CTRL_TYPE_???") },
+               { ARG_XLAT_KNOWN(0x100, "V4L2_CTRL_TYPE_U8") },
+               { ARG_XLAT_KNOWN(0x101, "V4L2_CTRL_TYPE_U16") },
+               { ARG_XLAT_KNOWN(0x102, "V4L2_CTRL_TYPE_U32") },
+               { ARG_XLAT_UNKNOWN(0x103, "V4L2_CTRL_TYPE_???") },
+               { ARG_XLAT_UNKNOWN(0x104, "V4L2_CTRL_TYPE_???") },
+               { ARG_XLAT_UNKNOWN(0x105, "V4L2_CTRL_TYPE_???") },
+               { ARG_XLAT_KNOWN(0x106, "V4L2_CTRL_TYPE_AREA") },
+               { ARG_XLAT_UNKNOWN(0x107, "V4L2_CTRL_TYPE_???") },
+               { ARG_XLAT_UNKNOWN(0xdeadc0de, "V4L2_CTRL_TYPE_???") },
+       };
+       static const struct strval32 ctrl_flags[] = {
+               { ARG_STR(0) },
+               { ARG_XLAT_KNOWN(0x7ff, "V4L2_CTRL_FLAG_DISABLED"
+                                       "|V4L2_CTRL_FLAG_GRABBED"
+                                       "|V4L2_CTRL_FLAG_READ_ONLY"
+                                       "|V4L2_CTRL_FLAG_UPDATE"
+                                       "|V4L2_CTRL_FLAG_INACTIVE"
+                                       "|V4L2_CTRL_FLAG_SLIDER"
+                                       "|V4L2_CTRL_FLAG_WRITE_ONLY"
+                                       "|V4L2_CTRL_FLAG_VOLATILE"
+                                       "|V4L2_CTRL_FLAG_HAS_PAYLOAD"
+                                       "|V4L2_CTRL_FLAG_EXECUTE_ON_WRITE"
+                                       "|V4L2_CTRL_FLAG_MODIFY_LAYOUT") },
+               { ARG_XLAT_KNOWN(0xbeefface, "V4L2_CTRL_FLAG_GRABBED"
+                                            "|V4L2_CTRL_FLAG_READ_ONLY"
+                                            "|V4L2_CTRL_FLAG_UPDATE"
+                                            "|V4L2_CTRL_FLAG_WRITE_ONLY"
+                                            "|V4L2_CTRL_FLAG_VOLATILE"
+                                            "|V4L2_CTRL_FLAG_EXECUTE_ON_WRITE"
+                                            "|0xbeeff800") },
+               { ARG_XLAT_UNKNOWN(0xfffff800, "V4L2_CTRL_FLAG_???") },
+       };
+       static const size_t qctrl_iters = MAX(MAX(ARRAY_SIZE(cids),
+                                                 ARRAY_SIZE(ctrl_types)),
+                                              ARRAY_SIZE(ctrl_flags));
+
+       struct v4l2_queryctrl *qctrl = tail_alloc(sizeof(*qctrl));
+
+       ioctl(-1, VIDIOC_QUERYCTRL, 0);
+       printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_QUERYCTRL), inject_retval);
+
+       ioctl(-1, VIDIOC_QUERYCTRL, (char *) qctrl + 1);
+       printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_QUERYCTRL), (char *) qctrl + 1, inject_retval);
+
+       for (size_t i = 0; i < qctrl_iters; i++) {
+               fill_memory32(qctrl, sizeof(*qctrl));
+               fill_memory_ex(qctrl->name, sizeof(qctrl->name),
+                              i * 47 + 5, 255);
+               qctrl->id    = cids[i % ARRAY_SIZE(cids)].val;
+               qctrl->type  = ctrl_types[i % ARRAY_SIZE(ctrl_types)].val;
+               qctrl->flags = ctrl_flags[i % ARRAY_SIZE(ctrl_flags)].val;
+
+               if (i % 2)
+                       memset(qctrl->reserved, 0, sizeof(qctrl->reserved));
+
+               ioctl(-1, VIDIOC_QUERYCTRL, qctrl);
+               printf("ioctl(-1, %s, {id=%s, type=%s, name=",
+                      XLAT_STR(VIDIOC_QUERYCTRL),
+                      cids[i % ARRAY_SIZE(cids)].str,
+                      ctrl_types[i % ARRAY_SIZE(ctrl_types)].str);
+               print_quoted_cstring((char *) qctrl->name, sizeof(qctrl->name));
+#if VERBOSE
+               printf(", minimum=-2136948502, maximum=-2136948501"
+                      ", step=-2136948500, default_value=-2136948499"
+                      ", flags=%s%s",
+                      ctrl_flags[i % ARRAY_SIZE(ctrl_flags)].str,
+                      i % 2 ? "" : ", reserved=[0x80a0c0ef, 0x80a0c0f0]");
+#else
+               printf(", ...");
+#endif
+               printf("}) = %ld (INJECTED)\n", inject_retval);
+       }
+
+
+       /* VIDIOC_G_INPUT, VIDIOC_S_INPUT */
+       static const struct strval32 input_cmds[] = {
+               { ARG_STR(VIDIOC_G_INPUT) },
+               { ARG_STR(VIDIOC_S_INPUT) },
+       };
+       static const struct strval32 inputids[] = {
+               { ARG_STR(0) },
+               { ARG_STR(1) },
+               { ARG_STR(1578221295) },
+               { ARG_STR(31415926) },
+               { ARG_STR(4294967295) },
+       };
+
+       int *inputid = tail_alloc(sizeof(*inputid));
+
+       for (size_t i = 0; i < ARRAY_SIZE(input_cmds); i++) {
+               ioctl(-1, input_cmds[i].val, 0);
+               printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+                      sprintxlat(input_cmds[i].str, input_cmds[i].val, NULL),
+                      inject_retval);
+
+               ioctl(-1, input_cmds[i].val, (char *) inputid + 1);
+               printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+                      sprintxlat(input_cmds[i].str, input_cmds[i].val, NULL),
+                      (char *) inputid + 1, inject_retval);
+
+               for (size_t j = 0; j < ARRAY_SIZE(inputids); j++) {
+                       *inputid = inputids[j].val;
+
+                       ioctl(-1, input_cmds[i].val, inputid);
+                       printf("ioctl(-1, %s, [%s]) = %ld (INJECTED)\n",
+                              sprintxlat(input_cmds[i].str, input_cmds[i].val,
+                                         NULL),
+                              inputids[j].str, inject_retval);
+
+               }
+       }
+
+
+       /* VIDIOC_CROPCAP */
+       struct v4l2_cropcap *ccap = tail_alloc(sizeof(*ccap));
+
+       fill_memory32(ccap, sizeof(*ccap));
+
+       ioctl(-1, VIDIOC_CROPCAP, 0);
+       printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_CROPCAP), inject_retval);
+
+       ioctl(-1, VIDIOC_CROPCAP, (char *) ccap + 1);
+       printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_CROPCAP), (char *) ccap + 1, inject_retval);
+
+       for (size_t i = 0; i < ARRAY_SIZE(buf_types); i++) {
+               ccap->type = buf_types[i].val;
+
+               ioctl(-1, VIDIOC_CROPCAP, ccap);
+               printf("ioctl(-1, %s, {type=%s"
+                      ", bounds={left=-2136948511, top=-2136948510"
+                      ", width=2158018787, height=2158018788}"
+                      ", defrect={left=-2136948507, top=-2136948506"
+                      ", width=2158018791, height=2158018792}"
+                      ", pixelaspect=2158018793/2158018794})"
+                      " = %ld (INJECTED)\n",
+                      XLAT_STR(VIDIOC_CROPCAP),
+                      buf_types[i].str, inject_retval);
+       }
+
+
+       /* VIDIOC_G_CROP, VIDIOC_S_CROP */
+       static const struct strval32 crop_cmds[] = {
+               { ARG_STR(VIDIOC_G_CROP) },
+               { ARG_STR(VIDIOC_S_CROP) },
+       };
+       struct v4l2_crop *crop = tail_alloc(sizeof(*crop));
+
+       for (size_t i = 0; i < ARRAY_SIZE(crop_cmds); i++) {
+               fill_memory32(crop, sizeof(*crop));
+
+               ioctl(-1, crop_cmds[i].val, 0);
+               printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+                      sprintxlat(crop_cmds[i].str, crop_cmds[i].val, NULL),
+                      inject_retval);
+
+               ioctl(-1, crop_cmds[i].val, (char *) crop + 1);
+               printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+                      sprintxlat(crop_cmds[i].str, crop_cmds[i].val, NULL),
+                      (char *) crop + 1, inject_retval);
+
+               for (size_t j = 0; j < ARRAY_SIZE(buf_types); j++) {
+                       crop->type = buf_types[j].val;
+
+                       ioctl(-1, crop_cmds[i].val, crop);
+                       printf("ioctl(-1, %s, {type=%s, c={left=-2136948511"
+                              ", top=-2136948510, width=2158018787"
+                              ", height=2158018788}}) = %ld (INJECTED)\n",
+                              sprintxlat(crop_cmds[i].str, crop_cmds[i].val,
+                                         NULL),
+                              buf_types[j].str, inject_retval);
+               }
+       }
+
+
+#ifdef VIDIOC_S_EXT_CTRLS
+       /* VIDIOC_S_EXT_CTRLS, VIDIOC_TRY_EXT_CTRLS, VIDIOC_G_EXT_CTRLS */
+       static const struct strval32 ectrl_cmds[] = {
+               { ARG_STR(VIDIOC_S_EXT_CTRLS) },
+               { ARG_STR(VIDIOC_TRY_EXT_CTRLS) },
+               { ARG_STR(VIDIOC_G_EXT_CTRLS) },
+       };
+       /* static const struct strval32 ectrl_which = {
+       }; */
+
+       struct v4l2_ext_controls *ectrls = tail_alloc(sizeof(*ectrls));
+       /* struct v4l2_ext_control *ectrl = tail_alloc(sizeof(*ectrl) * 2); */
+
+       for (size_t i = 0; i < ARRAY_SIZE(ectrl_cmds); i++) {
+               fill_memory32(ectrls, sizeof(*ectrls));
+
+               ioctl(-1, ectrl_cmds[i].val, 0);
+               printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+                      sprintxlat(ectrl_cmds[i].str, ectrl_cmds[i].val, NULL),
+                      inject_retval);
+
+               ioctl(-1, ectrl_cmds[i].val, (char *) ectrls + 1);
+               printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+                      sprintxlat(ectrl_cmds[i].str, ectrl_cmds[i].val, NULL),
+                      (char *) ectrls + 1, inject_retval);
+       }
+
+#endif /* VIDIOC_S_EXT_CTRLS */
+
+
+#ifdef HAVE_STRUCT_V4L2_FRMSIZEENUM
+       /* VIDIOC_ENUM_FRAMESIZES */
+       static const struct strval32 frmsz_simple_types[] = {
+               { ARG_XLAT_UNKNOWN(0, "V4L2_FRMSIZE_TYPE_???") },
+               { ARG_XLAT_KNOWN(0x2, "V4L2_FRMSIZE_TYPE_CONTINUOUS") },
+               { ARG_XLAT_UNKNOWN(0x4, "V4L2_FRMSIZE_TYPE_???") },
+               { ARG_XLAT_UNKNOWN(0xdeadf157, "V4L2_FRMSIZE_TYPE_???") },
+       };
+
+       struct v4l2_frmsizeenum *fse = tail_alloc(sizeof(*fse));
+
+       ioctl(-1, VIDIOC_ENUM_FRAMESIZES, 0);
+       printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_ENUM_FRAMESIZES), inject_retval);
+
+       ioctl(-1, VIDIOC_ENUM_FRAMESIZES, (char *) fse + 1);
+       printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_ENUM_FRAMESIZES), (char *) fse + 1,
+              inject_retval);
+
+       fill_memory32(fse, sizeof(*fse));
+       fse->type = V4L2_FRMSIZE_TYPE_DISCRETE;
+
+       ioctl(-1, VIDIOC_ENUM_FRAMESIZES, fse);
+       printf("ioctl(-1, %s, {index=2158018784, pixel_format="
+              RAW("0x80a0c0e1")
+              NRAW("v4l2_fourcc('\\xe1', '\\xc0', '\\xa0', '\\x80')")
+              ", type=" XLAT_KNOWN(0x1, "V4L2_FRMSIZE_TYPE_DISCRETE")
+              ", discrete={width=2158018787, height=2158018788}"
+              "}) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_ENUM_FRAMESIZES), inject_retval);
+
+       fse->pixel_format = 0x5c22270d;
+       fse->type = V4L2_FRMSIZE_TYPE_STEPWISE;
+
+       ioctl(-1, VIDIOC_ENUM_FRAMESIZES, fse);
+       printf("ioctl(-1, %s, {index=2158018784, pixel_format="
+              RAW("0x5c22270d")
+              NRAW("v4l2_fourcc('\\x0d', '\\\'', '\"', '\\\\')")
+              ", type=" XLAT_KNOWN(0x3, "V4L2_FRMSIZE_TYPE_STEPWISE")
+              ", stepwise={min_width=2158018787, max_width=2158018788"
+              ", step_width=2158018789, min_height=2158018790"
+              ", max_height=2158018791, step_height=2158018792}"
+              "}) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_ENUM_FRAMESIZES), inject_retval);
+
+       for (size_t i = 0; i < ARRAY_SIZE(frmsz_simple_types); i++) {
+               fill_memory32(fse, sizeof(*fse));
+               fse->type = frmsz_simple_types[i].val;
+
+               ioctl(-1, VIDIOC_ENUM_FRAMESIZES, fse);
+               printf("ioctl(-1, %s, {index=2158018784, pixel_format="
+                      RAW("0x80a0c0e1")
+                      NRAW("v4l2_fourcc('\\xe1', '\\xc0', '\\xa0', '\\x80')")
+                      ", type=%s}) = %ld (INJECTED)\n",
+                      XLAT_STR(VIDIOC_ENUM_FRAMESIZES),
+                      frmsz_simple_types[i].str, inject_retval);
+
+       }
+#endif /* HAVE_STRUCT_V4L2_FRMSIZEENUM */
+
+
+#ifdef HAVE_STRUCT_V4L2_FRMIVALENUM
+       /* VIDIOC_ENUM_FRAMEINTERVALS */
+       static const struct strval32 frmival_simple_types[] = {
+               { ARG_XLAT_UNKNOWN(0, "V4L2_FRMIVAL_TYPE_???") },
+               { ARG_XLAT_UNKNOWN(0x4, "V4L2_FRMIVAL_TYPE_???") },
+               { ARG_XLAT_UNKNOWN(0xdeadf157, "V4L2_FRMIVAL_TYPE_???") },
+       };
+       static const struct strval32 frmival_step_types[] = {
+               { ARG_XLAT_KNOWN(0x2, "V4L2_FRMIVAL_TYPE_CONTINUOUS") },
+               { ARG_XLAT_KNOWN(0x3, "V4L2_FRMIVAL_TYPE_STEPWISE") },
+       };
+
+       struct v4l2_frmivalenum *fie = tail_alloc(sizeof(*fie));
+
+       ioctl(-1, VIDIOC_ENUM_FRAMEINTERVALS, 0);
+       printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_ENUM_FRAMEINTERVALS), inject_retval);
+
+       ioctl(-1, VIDIOC_ENUM_FRAMEINTERVALS, (char *) fie + 1);
+       printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_ENUM_FRAMEINTERVALS), (char *) fie + 1,
+              inject_retval);
+
+       fill_memory32(fie, sizeof(*fie));
+       fie->type = V4L2_FRMIVAL_TYPE_DISCRETE;
+
+       ioctl(-1, VIDIOC_ENUM_FRAMEINTERVALS, fie);
+       printf("ioctl(-1, %s, {index=2158018784, pixel_format="
+              RAW("0x80a0c0e1")
+              NRAW("v4l2_fourcc('\\xe1', '\\xc0', '\\xa0', '\\x80')")
+              ", width=2158018786, height=2158018787"
+              ", type=" XLAT_KNOWN(0x1, "V4L2_FRMIVAL_TYPE_DISCRETE")
+              ", discrete=2158018789/2158018790}) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_ENUM_FRAMEINTERVALS), inject_retval);
+
+       fie->pixel_format = 0x5c22270d;
+
+       for (size_t i = 0; i < ARRAY_SIZE(frmival_step_types); i++) {
+               fie->type = frmival_step_types[i].val;
+
+               ioctl(-1, VIDIOC_ENUM_FRAMEINTERVALS, fie);
+               printf("ioctl(-1, %s, {index=2158018784, pixel_format="
+                      RAW("0x5c22270d")
+                      NRAW("v4l2_fourcc('\\x0d', '\\\'', '\"', '\\\\')")
+                      ", width=2158018786, height=2158018787, type=%s"
+                      ", stepwise={min=2158018789/2158018790"
+                      ", max=2158018791/2158018792"
+                      ", step=2158018793/2158018794}}) = %ld (INJECTED)\n",
+                      XLAT_STR(VIDIOC_ENUM_FRAMEINTERVALS),
+                      frmival_step_types[i].str, inject_retval);
+       }
+
+       for (size_t i = 0; i < ARRAY_SIZE(frmival_simple_types); i++) {
+               fill_memory32(fie, sizeof(*fie));
+               fie->type = frmival_simple_types[i].val;
+
+               ioctl(-1, VIDIOC_ENUM_FRAMEINTERVALS, fie);
+               printf("ioctl(-1, %s, {index=2158018784, pixel_format="
+                      RAW("0x80a0c0e1")
+                      NRAW("v4l2_fourcc('\\xe1', '\\xc0', '\\xa0', '\\x80')")
+                      ", width=2158018786, height=2158018787, type=%s})"
+                      " = %ld (INJECTED)\n",
+                      XLAT_STR(VIDIOC_ENUM_FRAMEINTERVALS),
+                      frmival_simple_types[i].str, inject_retval);
+
+       }
+#endif /* HAVE_STRUCT_V4L2_FRMIVALENUM */
+
+
+#ifdef HAVE_STRUCT_V4L2_CREATE_BUFFERS
+       /* VIDIOC_CREATE_BUFS */
+       struct v4l2_create_buffers *cbuf = tail_alloc(sizeof(*cbuf));
+
+       fill_memory32(cbuf, sizeof(*cbuf));
+
+       ioctl(-1, VIDIOC_CREATE_BUFS, 0);
+       printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_CREATE_BUFS), inject_retval);
+
+       ioctl(-1, VIDIOC_CREATE_BUFS, (char *) cbuf + 1);
+       printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_CREATE_BUFS), (char *) cbuf + 1, inject_retval);
+
+       for (size_t i = 0; i < MAX(ARRAY_SIZE(buf_types),
+                                  ARRAY_SIZE(reqb_mems)); i++) {
+               cbuf->memory = reqb_mems[i % ARRAY_SIZE(reqb_mems)].val;
+               cbuf->format.type = buf_types[i % ARRAY_SIZE(buf_types)].val;
+               if (!fill_fmt(&cbuf->format))
+                       continue;
+
+               ioctl(-1, VIDIOC_CREATE_BUFS, cbuf);
+               printf("ioctl(-1, %s, {count=2158018785, memory=%s"
+                      ", format={type=%s",
+                      XLAT_STR(VIDIOC_CREATE_BUFS),
+                      reqb_mems[i % ARRAY_SIZE(reqb_mems)].str,
+                      buf_types[i % ARRAY_SIZE(buf_types)].str);
+               print_fmt(", ", &cbuf->format);
+               printf("}}) = %ld ({index=2158018784, count=2158018785})"
+                      " (INJECTED)\n", inject_retval);
+       }
+#endif /* HAVE_STRUCT_V4L2_CREATE_BUFFERS */
+
+       puts("+++ exited with 0 +++");
+
+       return 0;
+}
diff --git a/tests-m32/ioctl_v4l2-success.gen.test b/tests-m32/ioctl_v4l2-success.gen.test
new file mode 100755 (executable)
index 0000000..9037649
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2-success +ioctl-success.sh -a29); do not edit.
+set -- -a29
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests-m32/ioctl_v4l2-v-Xabbrev.c b/tests-m32/ioctl_v4l2-v-Xabbrev.c
new file mode 100644 (file)
index 0000000..3e40ce3
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_ABBREV 1
+#include "ioctl_v4l2-v.c"
diff --git a/tests-m32/ioctl_v4l2-v-Xabbrev.gen.test b/tests-m32/ioctl_v4l2-v-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..64f2eac
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2-v-Xabbrev +ioctl.test -v -Xabbrev); do not edit.
+set -- -v -Xabbrev
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_v4l2-v-Xraw.c b/tests-m32/ioctl_v4l2-v-Xraw.c
new file mode 100644 (file)
index 0000000..42d6610
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "ioctl_v4l2-v.c"
diff --git a/tests-m32/ioctl_v4l2-v-Xraw.gen.test b/tests-m32/ioctl_v4l2-v-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..8fb5883
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2-v-Xraw +ioctl.test -v -Xraw); do not edit.
+set -- -v -Xraw
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_v4l2-v-Xverbose.c b/tests-m32/ioctl_v4l2-v-Xverbose.c
new file mode 100644 (file)
index 0000000..6230f9a
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "ioctl_v4l2-v.c"
diff --git a/tests-m32/ioctl_v4l2-v-Xverbose.gen.test b/tests-m32/ioctl_v4l2-v-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..72dcde6
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2-v-Xverbose +ioctl.test -v -Xverbose); do not edit.
+set -- -v -Xverbose
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_v4l2-v.c b/tests-m32/ioctl_v4l2-v.c
new file mode 100644 (file)
index 0000000..dcb6c24
--- /dev/null
@@ -0,0 +1,3 @@
+/* This file is part of ioctl_v4l2-v strace test. */
+#define VERBOSE 1
+#include "ioctl_v4l2.c"
diff --git a/tests-m32/ioctl_v4l2-v.gen.test b/tests-m32/ioctl_v4l2-v.gen.test
new file mode 100755 (executable)
index 0000000..c5fe341
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2-v +ioctl.test -v); do not edit.
+set -- -v
+. "${srcdir=.}/ioctl.test"
index 54e9ee7c6bd933dc52873e6c111426211d104de3..c52798a4cbad0bdc2d9bd1396af9b815ddb07200 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -8,11 +8,23 @@
 
 #include "tests.h"
 #include <errno.h>
+#include <stdint.h>
 #include <stdio.h>
 #include <string.h>
 #include <sys/ioctl.h>
-#include <linux/types.h>
-#include <linux/videodev2.h>
+#include "kernel_v4l2_types.h"
+
+#define XLAT_MACROS_ONLY
+# include "xlat/v4l2_ioctl_cmds.h"
+#undef XLAT_MACROS_ONLY
+
+#ifndef V4L2_CTRL_FLAG_NEXT_CTRL
+# define V4L2_CTRL_FLAG_NEXT_CTRL 0x80000000
+#endif
+
+#ifndef V4L2_CTRL_CLASS_DETECT
+# define V4L2_CTRL_CLASS_DETECT 0x00a30000
+#endif
 
 #define cc0(arg) ((unsigned int) (unsigned char) (arg))
 #define cc1(arg) ((unsigned int) (unsigned char) ((unsigned int) (arg) >> 8))
@@ -70,8 +82,21 @@ init_v4l2_format(struct v4l2_format *const f,
                     i < ARRAY_SIZE(f->fmt.pix_mp.plane_fmt);
                     i++) {
                        cur_pix[i].sizeimage = 0x1e3c531c | i;
-                       cur_pix[i].bytesperline = 0xa983d721 | i;
+                       if (sizeof(cur_pix[i].bytesperline) ==
+                           sizeof(uint32_t)) {
+                               cur_pix[i].bytesperline = 0xa983d721 | i;
+                       } else {
+# if WORDS_BIGENDIAN
+                               cur_pix[i].bytesperline = 0xa983;
+                               cur_pix[i].reserved[0] = 0xd721 | i;
+# else
+                               cur_pix[i].bytesperline = 0xd721 | i;
+                               cur_pix[i].reserved[0] = 0xa983;
+# endif
+                       }
                }
+               if (buf_type == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE)
+                       f->fmt.pix_mp.num_planes = 1;
                break;
        }
 #endif
@@ -85,10 +110,10 @@ init_v4l2_format(struct v4l2_format *const f,
                f->fmt.win.w.height = 0xbbd886c8;
                f->fmt.win.field = V4L2_FIELD_ANY;
                f->fmt.win.chromakey = 0xdb1f991f;
-               f->fmt.win.clipcount = 2;
+               f->fmt.win.clipcount =
+                       buf_type == V4L2_BUF_TYPE_VIDEO_OVERLAY ? 3 : 2;
                f->fmt.win.clips =
-                       tail_alloc(sizeof(*f->fmt.win.clips) *
-                       f->fmt.win.clipcount);
+                       tail_alloc(sizeof(*f->fmt.win.clips) * 2);
                f->fmt.win.clips[0].c.left = 0x3313d36e;
                f->fmt.win.clips[0].c.top = 0xcdffe510;
                f->fmt.win.clips[0].c.width = 0x2064f3a8;
@@ -101,6 +126,9 @@ init_v4l2_format(struct v4l2_format *const f,
                f->fmt.win.bitmap = (void *) -2UL;
 #ifdef HAVE_STRUCT_V4L2_WINDOW_GLOBAL_ALPHA
                f->fmt.win.global_alpha = 0xce;
+#else
+               ((uint8_t *) &f->fmt.win)[offsetofend(struct v4l2_window,
+                                                     bitmap)] = 0xce;
 #endif
                break;
        case V4L2_BUF_TYPE_VBI_CAPTURE:
@@ -138,7 +166,12 @@ init_v4l2_format(struct v4l2_format *const f,
        case V4L2_BUF_TYPE_SDR_OUTPUT:
                f->fmt.sdr.pixelformat = sf_magic;
 # ifdef HAVE_STRUCT_V4L2_SDR_FORMAT_BUFFERSIZE
-               f->fmt.sdr.buffersize = 0x25afabfb;
+               if (sizeof(f->fmt.sdr.buffersize == sizeof(uint32_t)))
+                       f->fmt.sdr.buffersize = 0x25afabfb;
+               else
+                       ((uint32_t *) &f->fmt.sdr)[1] = 0x25afabfb;
+# else
+               ((uint32_t *) &f->fmt.sdr)[1] = 0x25afabfb;
 # endif
                break;
 #endif
@@ -155,8 +188,8 @@ init_v4l2_format(struct v4l2_format *const f,
 
 static void
 dprint_ioctl_v4l2(struct v4l2_format *const f,
-                 const char *request, const unsigned int buf_type,
-                 const char *buf_type_string)
+                 XLAT_SEL(unsigned reqval, const char *reqstr),
+                 const unsigned int buf_type, const char *buf_type_string)
 {
        int saved_errno;
 
@@ -164,12 +197,16 @@ dprint_ioctl_v4l2(struct v4l2_format *const f,
        case V4L2_BUF_TYPE_VIDEO_CAPTURE:
        case V4L2_BUF_TYPE_VIDEO_OUTPUT:
                saved_errno = errno;
-               printf("ioctl(-1, %s, {type=%s"
+               printf("ioctl(-1, " XLAT_FMT ", {type=" XLAT_FMT
                       ", fmt.pix={width=%u, height=%u, pixelformat=",
-                      request,
-                      buf_type_string,
+                      XLAT_SEL(reqval, reqstr),
+                      XLAT_SEL(buf_type, buf_type_string),
                       f->fmt.pix.width, f->fmt.pix.height);
 
+#if XLAT_RAW
+               printf("%#x", buf_type == V4L2_BUF_TYPE_VIDEO_CAPTURE
+                             ? magic : pf_magic);
+#else /* !XLAT_RAW */
                if (buf_type == V4L2_BUF_TYPE_VIDEO_CAPTURE)
                        printf("v4l2_fourcc('\\x%x', '\\x%x', '\\x%x', '\\x%x')",
                               cc0(magic), cc1(magic), cc2(magic), cc3(magic));
@@ -178,12 +215,15 @@ dprint_ioctl_v4l2(struct v4l2_format *const f,
                               "/* V4L2_PIX_FMT_SPCA508 */",
                               cc0(pf_magic), cc1(pf_magic), cc2(pf_magic),
                               cc3(pf_magic));
+#endif /* XLAT_RAW */
 
                errno = saved_errno;
-               printf(", field=V4L2_FIELD_NONE, bytesperline=%u, sizeimage=%u"
-                      ", colorspace=V4L2_COLORSPACE_JPEG}}) = -1 EBADF (%m)\n",
+               printf(", field=" XLAT_FMT ", bytesperline=%u, sizeimage=%u"
+                      ", colorspace=" XLAT_FMT "}}) = -1 EBADF (%m)\n",
+                      XLAT_ARGS(V4L2_FIELD_NONE),
                       f->fmt.pix.bytesperline,
-                      f->fmt.pix.sizeimage);
+                      f->fmt.pix.sizeimage,
+                      XLAT_ARGS(V4L2_COLORSPACE_JPEG));
                break;
 #if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
        case V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE:
@@ -191,13 +231,17 @@ dprint_ioctl_v4l2(struct v4l2_format *const f,
                unsigned int i;
 
                saved_errno = errno;
-               printf("ioctl(-1, %s"
-                      ", {type=%s"
+               printf("ioctl(-1, " XLAT_FMT
+                      ", {type=" XLAT_FMT
                       ", fmt.pix_mp={width=%u, height=%u, pixelformat=",
-                      request,
-                      buf_type_string,
+                      XLAT_SEL(reqval, reqstr),
+                      XLAT_SEL(buf_type, buf_type_string),
                       f->fmt.pix_mp.width, f->fmt.pix_mp.height);
 
+# if XLAT_RAW
+               printf("%#x", buf_type == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
+                             ? magic : pf_magic);
+# else /* !XLAT_RAW */
                if (buf_type == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE)
                        printf("v4l2_fourcc('\\x%x', '\\x%x', '\\x%x', '\\x%x')",
                               cc0(magic), cc1(magic), cc2(magic), cc3(magic));
@@ -206,21 +250,35 @@ dprint_ioctl_v4l2(struct v4l2_format *const f,
                               "/* V4L2_PIX_FMT_SPCA508 */",
                               cc0(pf_magic), cc1(pf_magic), cc2(pf_magic),
                               cc3(pf_magic));
+# endif /* XLAT_RAW */
 
-               printf(", field=V4L2_FIELD_NONE, colorspace="
-                      "V4L2_COLORSPACE_JPEG, plane_fmt=[");
+               printf(", field=" XLAT_FMT ", colorspace=" XLAT_FMT
+                      ", plane_fmt=[",
+                      XLAT_ARGS(V4L2_FIELD_NONE),
+                      XLAT_ARGS(V4L2_COLORSPACE_JPEG));
                for (i = 0;
-                    i < ARRAY_SIZE(f->fmt.pix_mp.plane_fmt);
+                    i < (buf_type == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
+                         ? 1 : ARRAY_SIZE(f->fmt.pix_mp.plane_fmt));
                     ++i) {
                        if (i)
                                printf(", ");
                        printf("{sizeimage=%u, bytesperline=%u}",
                        f->fmt.pix_mp.plane_fmt[i].sizeimage,
-                       f->fmt.pix_mp.plane_fmt[i].bytesperline);
+                       sizeof(f->fmt.pix_mp.plane_fmt[i].bytesperline) ==
+                       sizeof(uint32_t)
+                       ? f->fmt.pix_mp.plane_fmt[i].bytesperline :
+# if WORDS_BIGENDIAN
+                       (f->fmt.pix_mp.plane_fmt[i].bytesperline << 16) |
+                       f->fmt.pix_mp.plane_fmt[i].reserved[0]
+# else
+                       f->fmt.pix_mp.plane_fmt[i].bytesperline |
+                       (f->fmt.pix_mp.plane_fmt[i].reserved[0] << 16)
+# endif
+                       );
                }
                errno = saved_errno;
                printf("], num_planes=%u}}) = -1 EBADF (%m)\n",
-               f->fmt.pix_mp.num_planes);
+                      f->fmt.pix_mp.num_planes);
                break;
        }
 #endif
@@ -228,20 +286,17 @@ dprint_ioctl_v4l2(struct v4l2_format *const f,
        case V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY:
 #endif
        case V4L2_BUF_TYPE_VIDEO_OVERLAY:
-               printf("ioctl(-1, %s, {type=%s"
+               saved_errno = errno;
+               printf("ioctl(-1, " XLAT_FMT ", {type=" XLAT_FMT
                       ", fmt.win={left=%d, top=%d, width=%u, height=%u"
-                      ", field=V4L2_FIELD_ANY, chromakey=%#x, clips="
+                      ", field=" XLAT_FMT ", chromakey=%#x, clips="
                       "[{left=%d, top=%d, width=%u, height=%u}, "
-                      "{left=%d, top=%d, width=%u, height=%u}]"
-                      ", clipcount=%u, bitmap=%p"
-#ifdef HAVE_STRUCT_V4L2_WINDOW_GLOBAL_ALPHA
-                      ", global_alpha=%#x"
-#endif
-                      "}}) = -1 EBADF (%m)\n",
-                      request,
-                      buf_type_string,
+                      "{left=%d, top=%d, width=%u, height=%u}",
+                      XLAT_SEL(reqval, reqstr),
+                      XLAT_SEL(buf_type, buf_type_string),
                       f->fmt.win.w.left, f->fmt.win.w.top,
                       f->fmt.win.w.width, f->fmt.win.w.height,
+                      XLAT_ARGS(V4L2_FIELD_ANY),
                       f->fmt.win.chromakey,
                       f->fmt.win.clips[0].c.left,
                       f->fmt.win.clips[0].c.top,
@@ -250,24 +305,37 @@ dprint_ioctl_v4l2(struct v4l2_format *const f,
                       f->fmt.win.clips[1].c.left,
                       f->fmt.win.clips[1].c.top,
                       f->fmt.win.clips[1].c.width,
-                      f->fmt.win.clips[1].c.height,
-                      f->fmt.win.clipcount, f->fmt.win.bitmap
+                      f->fmt.win.clips[1].c.height);
+               if (f->fmt.win.clipcount > 2)
+                       printf(", ... /* %p */", f->fmt.win.clips + 2);
+               errno = saved_errno;
+               printf("], clipcount=%u, bitmap=%p"
+                      ", global_alpha=%#x"
+                      "}}) = -1 EBADF (%m)\n",
+                      f->fmt.win.clipcount, f->fmt.win.bitmap,
 #ifdef HAVE_STRUCT_V4L2_WINDOW_GLOBAL_ALPHA
-                      , f->fmt.win.global_alpha
+                      f->fmt.win.global_alpha
+#else
+                      ((uint8_t *) &f->fmt.win)[offsetofend(struct v4l2_window,
+                                                            bitmap)]
 #endif
                       );
                break;
        case V4L2_BUF_TYPE_VBI_CAPTURE:
        case V4L2_BUF_TYPE_VBI_OUTPUT:
                saved_errno = errno;
-               printf("ioctl(-1, %s, {type=%s"
+               printf("ioctl(-1, " XLAT_FMT ", {type=" XLAT_FMT
                       ", fmt.vbi={sampling_rate=%u, offset=%u"
                       ", samples_per_line=%u, sample_format=",
-                      request,
-                      buf_type_string,
+                      XLAT_SEL(reqval, reqstr),
+                      XLAT_SEL(buf_type, buf_type_string),
                       f->fmt.vbi.sampling_rate, f->fmt.vbi.offset,
                       f->fmt.vbi.samples_per_line);
 
+#if XLAT_RAW
+               printf("%#x", buf_type == V4L2_BUF_TYPE_VBI_CAPTURE
+                             ? magic : pf_magic);
+#else /* !XLAT_RAW */
                if (buf_type == V4L2_BUF_TYPE_VBI_CAPTURE)
                        printf("v4l2_fourcc('\\x%x', '\\x%x', '\\x%x', '\\x%x')",
                               cc0(magic), cc1(magic), cc2(magic), cc3(magic));
@@ -276,24 +344,27 @@ dprint_ioctl_v4l2(struct v4l2_format *const f,
                               "/* V4L2_PIX_FMT_SPCA508 */",
                               cc0(pf_magic), cc1(pf_magic), cc2(pf_magic),
                               cc3(pf_magic));
+#endif /* XLAT_RAW */
 
                errno = saved_errno;
-               printf(", start=[%u, %u], count=[%u, %u]"
-                      ", flags=V4L2_VBI_INTERLACED}})"
+               printf(", start=[%d, %d], count=[%u, %u]"
+                      ", flags=" XLAT_FMT "}})"
                       " = -1 EBADF (%m)\n",
                       f->fmt.vbi.start[0], f->fmt.vbi.start[1],
-                      f->fmt.vbi.count[0], f->fmt.vbi.count[1]);
+                      f->fmt.vbi.count[0], f->fmt.vbi.count[1],
+                      XLAT_ARGS(V4L2_VBI_INTERLACED));
                break;
 #if HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE
        case V4L2_BUF_TYPE_SLICED_VBI_CAPTURE:
        case V4L2_BUF_TYPE_SLICED_VBI_OUTPUT: {
                unsigned int i, j;
 
-               printf("ioctl(-1, %s, {type=%s"
-                      ", fmt.sliced={service_set=V4L2_SLICED_VPS"
+               printf("ioctl(-1, " XLAT_FMT ", {type=" XLAT_FMT
+                      ", fmt.sliced={service_set=" XLAT_FMT
                       ", io_size=%u, service_lines=[",
-                      request,
-                      buf_type_string,
+                      XLAT_SEL(reqval, reqstr),
+                      XLAT_SEL(buf_type, buf_type_string),
+                      XLAT_ARGS(V4L2_SLICED_VPS),
                       f->fmt.sliced.io_size);
                for (i = 0;
                     i < ARRAY_SIZE(f->fmt.sliced.service_lines);
@@ -321,30 +392,38 @@ dprint_ioctl_v4l2(struct v4l2_format *const f,
 #if HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE
        case V4L2_BUF_TYPE_SDR_CAPTURE:
                saved_errno = errno;
-               printf("ioctl(-1, %s, {type=%s"
+               printf("ioctl(-1, " XLAT_FMT ", {type=" XLAT_FMT
                       ", fmt.sdr={pixelformat=",
-                      request,
-                      buf_type_string);
+                      XLAT_SEL(reqval, reqstr),
+                      XLAT_SEL(buf_type, buf_type_string));
 
+# if XLAT_RAW
+               if (buf_type == V4L2_BUF_TYPE_SDR_CAPTURE)
+                       printf("%#x", magic);
+#  if HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT
+               else
+                       printf("%#x", sf_magic);
+#  endif
+# else /* !XLAT_RAW */
                if (buf_type == V4L2_BUF_TYPE_SDR_CAPTURE)
                        printf("v4l2_fourcc('\\x%x', '\\x%x', '\\x%x', '\\x%x')",
                               cc0(magic), cc1(magic), cc2(magic), cc3(magic));
-# if HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT
+#  if HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT
                else
                        printf("v4l2_fourcc('%c', '%c', '%c', '%c') "
                               "/* V4L2_SDR_FMT_RU12LE */",
                               cc0(sf_magic), cc1(sf_magic), cc2(sf_magic),
                               cc3(sf_magic));
-# endif
+#  endif
+# endif /* XLAT_RAW */
 
                errno = saved_errno;
-               printf(
-# ifdef HAVE_STRUCT_V4L2_SDR_FORMAT_BUFFERSIZE
-                      ", buffersize=%u"
-# endif
-                      "}}) = -1 EBADF (%m)\n"
+               printf(", buffersize=%u}}) = -1 EBADF (%m)\n"
 # ifdef HAVE_STRUCT_V4L2_SDR_FORMAT_BUFFERSIZE
-                      , f->fmt.sdr.buffersize
+                      , sizeof(f->fmt.sdr.buffersize == sizeof(uint32_t))
+                       ? f->fmt.sdr.buffersize : ((uint32_t *) &f->fmt.sdr)[1]
+# else
+                      , ((uint32_t *) &f->fmt.sdr)[1]
 # endif
                       );
                break;
@@ -352,7 +431,8 @@ dprint_ioctl_v4l2(struct v4l2_format *const f,
        }
 }
 #define print_ioctl_v4l2(v4l2_format, request, buf_type)       \
-       dprint_ioctl_v4l2((v4l2_format), (request), (buf_type), #buf_type)
+       dprint_ioctl_v4l2((v4l2_format), XLAT_SEL(request, #request), \
+                         (buf_type), #buf_type)
 
 int
 main(void)
@@ -364,267 +444,559 @@ main(void)
 
        unsigned char cc[sizeof(int)] = { 'A', '\'', '\\', '\xfa' };
 
+       /* Unknown */
+       static const struct {
+               uint32_t flags;
+               const char *str;
+       } cmd_flags[] = {
+               { ARG_STR(_IOC_NONE) },
+               { ARG_STR(_IOC_READ) },
+               { ARG_STR(_IOC_WRITE) },
+               { ARG_STR(_IOC_READ|_IOC_WRITE) },
+       };
+       static const uint8_t unknown_cmds[] = {
+               1, 3, 6 /* VIDIOC_G_MPEGCOMP */, 7 /* VIDIOC_S_MPEGCOMP */,
+               12, 13, 20, 31, 32, 35, 42, 43, 44, 45, 51, 52, 53,
+               81 /* VIDIOC_G_CHIP_IDENT_OLD */,
+               83 /* VIDIOC_ENUM_DV_PRESETS */, 84 /* VIDIOC_S_DV_PRESET */,
+               85 /* VIDIOC_G_DV_PRESET */, 86 /* VIDIOC_QUERY_DV_PRESET */,
+               104 /* 103 is the last existing */, 255
+       };
+
+       for (size_t i = 0; i < ARRAY_SIZE(unknown_cmds); i++) {
+               /* Trying to hit common argument sizes */
+               for (size_t j = 0; j < 256; j += 4) {
+                       for (size_t k = 0; k < ARRAY_SIZE(cmd_flags); k++) {
+                               uint32_t ioc = _IOC(cmd_flags[k].flags, 'V',
+                                                   unknown_cmds[i], j);
+                               /*
+                                * Conflicts with VT* and VBG* ioctls
+                                * that happen to also use 'V' command type.
+                                */
+                               switch (ioc) {
+                               /* VT_GETMODE */
+                               case _IOC(_IOC_NONE, 'V', 1, 0):
+                               /* VT_GETSTATE */
+                               case _IOC(_IOC_NONE, 'V', 3, 0):
+                               /* VBG_IOCTL_VMMDEV_REQUEST_BIG */
+                               case _IOC(_IOC_READ|_IOC_WRITE, 'V', 3, 0):
+                               /* VT_ACTIVATE */
+                               case _IOC(_IOC_NONE, 'V', 6, 0):
+                               /* VT_WAITACTIVE */
+                               case _IOC(_IOC_NONE, 'V', 7, 0):
+                               /* VT_UNLOCKSWITCH */
+                               case _IOC(_IOC_NONE, 'V', 12, 0):
+                               /* VBG_IOCTL_CHANGE_FILTER_MASK */
+                               case _IOC(_IOC_READ|_IOC_WRITE, 'V', 12, 32):
+                               /* VT_GETHIFONTMASK */
+                               case _IOC(_IOC_NONE, 'V', 13, 0):
+                                       continue;
+                               /* VBG_IOCTL_ACQUIRE_GUEST_CAPABILITIES */
+                               case _IOC(_IOC_READ|_IOC_WRITE, 'V', 13, 36):
+                                       continue;
+                               }
+
+                               ioctl(-1, ioc, 0);
+                               printf("ioctl(-1, " NABBR("%#x") VERB(" /* ")
+                                      NRAW("_IOC(%s, 0x56, %#x, %#zx)")
+                                      VERB(" */") ", 0) = -1 EBADF (%m)\n"
+#if XLAT_RAW || XLAT_VERBOSE
+                                      , ioc
+#endif
+#if !XLAT_RAW
+                                      , cmd_flags[k].str, unknown_cmds[i], j
+#endif
+                                      );
+
+                               ioctl(-1, ioc,
+                                     (unsigned long) 0xbadc0deddeadc0deULL);
+                               printf("ioctl(-1, " NABBR("%#x") VERB(" /* ")
+                                      NRAW("_IOC(%s, 0x56, %#x, %#zx)")
+                                      VERB(" */") ", %#lx) = -1 EBADF (%m)\n",
+#if XLAT_RAW || XLAT_VERBOSE
+                                      ioc,
+#endif
+#if !XLAT_RAW
+                                      cmd_flags[k].str, unknown_cmds[i], j,
+#endif
+                                      (unsigned long) 0xbadc0deddeadc0deULL);
+                       }
+               }
+       }
+
+       /* Decoding is not supported */
+       static const struct {
+               uint32_t cmd;
+               const char *str;
+       } unsupp_cmds[] = {
+               { ARG_STR(VIDIOC_OVERLAY) },
+#ifdef VIDIOC_EXPBUF
+               { ARG_STR(VIDIOC_EXPBUF) },
+#endif
+               { ARG_STR(VIDIOC_G_AUDIO) },
+               { ARG_STR(VIDIOC_S_AUDIO) },
+               { ARG_STR(VIDIOC_QUERYMENU) },
+#ifdef VIDIOC_G_EDID
+               { ARG_STR(VIDIOC_G_EDID) },
+#endif
+#ifdef VIDIOC_S_EDID
+               { ARG_STR(VIDIOC_S_EDID) },
+#endif
+               { ARG_STR(VIDIOC_G_OUTPUT) },
+               { ARG_STR(VIDIOC_S_OUTPUT) },
+               { ARG_STR(VIDIOC_ENUMOUTPUT) },
+               { ARG_STR(VIDIOC_G_AUDOUT) },
+               { ARG_STR(VIDIOC_S_AUDOUT) },
+               { ARG_STR(VIDIOC_G_MODULATOR) },
+               { ARG_STR(VIDIOC_S_MODULATOR) },
+               { ARG_STR(VIDIOC_G_FREQUENCY) },
+               { ARG_STR(VIDIOC_S_FREQUENCY) },
+               { ARG_STR(VIDIOC_G_JPEGCOMP) },
+               { ARG_STR(VIDIOC_S_JPEGCOMP) },
+               { ARG_STR(VIDIOC_QUERYSTD) },
+               { ARG_STR(VIDIOC_ENUMAUDIO) },
+               { ARG_STR(VIDIOC_ENUMAUDOUT) },
+               { ARG_STR(VIDIOC_G_PRIORITY) },
+               { ARG_STR(VIDIOC_S_PRIORITY) },
+               { ARG_STR(VIDIOC_G_SLICED_VBI_CAP) },
+               { ARG_STR(VIDIOC_LOG_STATUS) },
+#ifdef VIDIOC_G_ENC_INDEX
+               { ARG_STR(VIDIOC_G_ENC_INDEX) },
+#endif
+#ifdef VIDIOC_ENCODER_CMD
+               { ARG_STR(VIDIOC_ENCODER_CMD) },
+#endif
+#ifdef VIDIOC_TRY_ENCODER_CMD
+               { ARG_STR(VIDIOC_TRY_ENCODER_CMD) },
+#endif
+#ifdef VIDIOC_DBG_S_REGISTER
+               { ARG_STR(VIDIOC_DBG_S_REGISTER) },
+#endif
+#ifdef VIDIOC_DBG_G_REGISTER
+               { ARG_STR(VIDIOC_DBG_G_REGISTER) },
+#endif
+#ifdef VIDIOC_G_CHIP_IDENT_OLD
+               { ARG_STR(VIDIOC_G_CHIP_IDENT_OLD) },
+#endif
+#ifdef VIDIOC_DBG_G_CHIP_IDENT
+               /* Broken on RHEL 6/7 */
+               /* { ARG_STR(VIDIOC_DBG_G_CHIP_IDENT) }, */
+#endif
+#ifdef VIDIOC_S_HW_FREQ_SEEK
+               { ARG_STR(VIDIOC_S_HW_FREQ_SEEK) },
+#endif
+#ifdef VIDIOC_ENUM_DV_PRESETS
+               /* Next 4 are broken on RHEL 6 */
+               /* { ARG_STR(VIDIOC_ENUM_DV_PRESETS) }, */
+#endif
+#ifdef VIDIOC_S_DV_PRESET
+               /* { ARG_STR(VIDIOC_S_DV_PRESET) }, */
+#endif
+#ifdef VIDIOC_G_DV_PRESET
+               /* { ARG_STR(VIDIOC_G_DV_PRESET) }, */
+#endif
+#ifdef VIDIOC_QUERY_DV_PRESET
+               /* { ARG_STR(VIDIOC_QUERY_DV_PRESET) }, */
+#endif
+#ifdef VIDIOC_S_DV_TIMINGS
+               { ARG_STR(VIDIOC_S_DV_TIMINGS) },
+#endif
+#ifdef VIDIOC_G_DV_TIMINGS
+               { ARG_STR(VIDIOC_G_DV_TIMINGS) },
+#endif
+#ifdef VIDIOC_DQEVENT
+               { ARG_STR(VIDIOC_DQEVENT) },
+#endif
+#ifdef VIDIOC_SUBSCRIBE_EVENT
+               { ARG_STR(VIDIOC_SUBSCRIBE_EVENT) },
+#endif
+#ifdef VIDIOC_UNSUBSCRIBE_EVENT
+               { ARG_STR(VIDIOC_UNSUBSCRIBE_EVENT) },
+#endif
+#ifdef VIDIOC_PREPARE_BUF
+               { ARG_STR(VIDIOC_PREPARE_BUF) },
+#endif
+#ifdef VIDIOC_G_SELECTION
+               { ARG_STR(VIDIOC_G_SELECTION) },
+#endif
+#ifdef VIDIOC_S_SELECTION
+               { ARG_STR(VIDIOC_S_SELECTION) },
+#endif
+#ifdef VIDIOC_DECODER_CMD
+               { ARG_STR(VIDIOC_DECODER_CMD) },
+#endif
+#ifdef VIDIOC_TRY_DECODER_CMD
+               { ARG_STR(VIDIOC_TRY_DECODER_CMD) },
+#endif
+#ifdef VIDIOC_ENUM_DV_TIMINGS
+               { ARG_STR(VIDIOC_ENUM_DV_TIMINGS) },
+#endif
+#ifdef VIDIOC_QUERY_DV_TIMINGS
+               { ARG_STR(VIDIOC_QUERY_DV_TIMINGS) },
+#endif
+#ifdef VIDIOC_DV_TIMINGS_CAP
+               { ARG_STR(VIDIOC_DV_TIMINGS_CAP) },
+#endif
+#ifdef VIDIOC_ENUM_FREQ_BANDS
+               { ARG_STR(VIDIOC_ENUM_FREQ_BANDS) },
+#endif
+#ifdef VIDIOC_DBG_G_CHIP_INFO
+               { ARG_STR(VIDIOC_DBG_G_CHIP_INFO) },
+#endif
+#ifdef VIDIOC_QUERY_EXT_CTRL
+               { ARG_STR(VIDIOC_QUERY_EXT_CTRL) },
+#endif
+#ifdef VIDIOC_SUBDEV_ENUM_MBUS_CODE
+               { ARG_STR(VIDIOC_SUBDEV_ENUM_MBUS_CODE) },
+#endif
+#ifdef VIDIOC_SUBDEV_G_FMT
+               { ARG_STR(VIDIOC_SUBDEV_G_FMT) },
+#endif
+#ifdef VIDIOC_SUBDEV_S_FMT
+               { ARG_STR(VIDIOC_SUBDEV_S_FMT) },
+#endif
+#ifdef VIDIOC_SUBDEV_G_FRAME_INTERVAL
+               { ARG_STR(VIDIOC_SUBDEV_G_FRAME_INTERVAL) },
+#endif
+#ifdef VIDIOC_SUBDEV_S_FRAME_INTERVAL
+               { ARG_STR(VIDIOC_SUBDEV_S_FRAME_INTERVAL) },
+#endif
+#ifdef VIDIOC_SUBDEV_G_CROP
+               { ARG_STR(VIDIOC_SUBDEV_G_CROP) },
+#endif
+#ifdef VIDIOC_SUBDEV_S_CROP
+               { ARG_STR(VIDIOC_SUBDEV_S_CROP) },
+#endif
+#ifdef VIDIOC_SUBDEV_G_SELECTION
+               { ARG_STR(VIDIOC_SUBDEV_G_SELECTION) },
+#endif
+#ifdef VIDIOC_SUBDEV_S_SELECTION
+               { ARG_STR(VIDIOC_SUBDEV_S_SELECTION) },
+#endif
+#ifdef VIDIOC_SUBDEV_ENUM_FRAME_SIZE
+               { ARG_STR(VIDIOC_SUBDEV_ENUM_FRAME_SIZE) },
+#endif
+#ifdef VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL
+               { ARG_STR(VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL) },
+#endif
+       };
+
+       for (size_t i = 0; i < ARRAY_SIZE(unsupp_cmds); i++) {
+               switch (unsupp_cmds[i].cmd) {
+               /*
+                * VIDIOC_G_SLICED_VBI_CAP macro has been changed from
+                * IOR to IOWR in Linux v2.6.19-rc1~643^2~37, skip it.
+                */
+               case _IOR('V', 69, struct v4l2_sliced_vbi_cap):
+                       continue;
+               }
+
+               ioctl(-1, unsupp_cmds[i].cmd, 0);
+               printf("ioctl(-1, " XLAT_FMT ", 0) = -1 EBADF (%m)\n",
+                      XLAT_SEL(unsupp_cmds[i].cmd, unsupp_cmds[i].str));
+
+               ioctl(-1, unsupp_cmds[i].cmd,
+                     (unsigned long) 0xbadc0deddeadc0deULL);
+               printf("ioctl(-1, " XLAT_FMT ", %#lx) = -1 EBADF (%m)\n",
+                      XLAT_SEL(unsupp_cmds[i].cmd, unsupp_cmds[i].str),
+                      (unsigned long) 0xbadc0deddeadc0deULL);
+       }
+
        /* VIDIOC_QUERYCAP */
        ioctl(-1, VIDIOC_QUERYCAP, 0);
-       printf("ioctl(-1, VIDIOC_QUERYCAP, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_QUERYCAP));
 
        ioctl(-1, VIDIOC_QUERYCAP, page);
-       printf("ioctl(-1, VIDIOC_QUERYCAP, %p) = -1 EBADF (%m)\n", page);
+       printf("ioctl(-1, %s, %p) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_QUERYCAP), page);
 
        /* VIDIOC_ENUM_FMT */
        ioctl(-1, VIDIOC_ENUM_FMT, 0);
-       printf("ioctl(-1, VIDIOC_ENUM_FMT, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_ENUM_FMT));
 
        TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_fmtdesc, p_fmtdesc);
        p_fmtdesc->index = magic;
        p_fmtdesc->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
        ioctl(-1, VIDIOC_ENUM_FMT, p_fmtdesc);
-       printf("ioctl(-1, VIDIOC_ENUM_FMT, {index=%u"
-              ", type=V4L2_BUF_TYPE_VIDEO_CAPTURE}) = -1 EBADF (%m)\n",
-              p_fmtdesc->index);
+       printf("ioctl(-1, %s, {index=%u, type=" XLAT_FMT
+              "}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_ENUM_FMT), p_fmtdesc->index,
+              XLAT_ARGS(V4L2_BUF_TYPE_VIDEO_CAPTURE));
 
        /* VIDIOC_G_FMT */
        ioctl(-1, VIDIOC_G_FMT, 0);
-       printf("ioctl(-1, VIDIOC_G_FMT, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_FMT));
 
        TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_format, p_format);
 
        p_format->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
        ioctl(-1, VIDIOC_G_FMT, p_format);
-       printf("ioctl(-1, VIDIOC_G_FMT"
-              ", {type=V4L2_BUF_TYPE_VIDEO_CAPTURE}) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, {type=" XLAT_FMT "}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_FMT),
+              XLAT_ARGS(V4L2_BUF_TYPE_VIDEO_CAPTURE));
 #if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
        p_format->type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
        ioctl(-1, VIDIOC_G_FMT, p_format);
-       printf("ioctl(-1, VIDIOC_G_FMT"
-              ", {type=V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE}) ="
-              " -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, {type=" XLAT_FMT "}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_FMT),
+              XLAT_ARGS(V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE));
 #endif
 #if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY
        p_format->type = V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY;
        ioctl(-1, VIDIOC_G_FMT, p_format);
-       printf("ioctl(-1, VIDIOC_G_FMT"
-              ", {type=V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY}) ="
-              " -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, {type=" XLAT_FMT "}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_FMT),
+              XLAT_ARGS(V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY));
 #endif
        p_format->type = V4L2_BUF_TYPE_VIDEO_OVERLAY;
        ioctl(-1, VIDIOC_G_FMT, p_format);
-       printf("ioctl(-1, VIDIOC_G_FMT"
-              ", {type=V4L2_BUF_TYPE_VIDEO_OVERLAY}) ="
-              " -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, {type=" XLAT_FMT "}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_FMT),
+              XLAT_ARGS(V4L2_BUF_TYPE_VIDEO_OVERLAY));
 
        p_format->type = V4L2_BUF_TYPE_VBI_CAPTURE;
        ioctl(-1, VIDIOC_G_FMT, p_format);
-       printf("ioctl(-1, VIDIOC_G_FMT"
-              ", {type=V4L2_BUF_TYPE_VBI_CAPTURE}) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, {type=" XLAT_FMT "}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_FMT),
+              XLAT_ARGS(V4L2_BUF_TYPE_VBI_CAPTURE));
 #if HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE
        p_format->type = V4L2_BUF_TYPE_SLICED_VBI_CAPTURE;
        ioctl(-1, VIDIOC_G_FMT, p_format);
-       printf("ioctl(-1, VIDIOC_G_FMT"
-              ", {type=V4L2_BUF_TYPE_SLICED_VBI_CAPTURE}) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, {type=" XLAT_FMT "}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_FMT),
+              XLAT_ARGS(V4L2_BUF_TYPE_SLICED_VBI_CAPTURE));
 #endif
 #if HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE
        p_format->type = V4L2_BUF_TYPE_SDR_CAPTURE;
        ioctl(-1, VIDIOC_G_FMT, p_format);
-       printf("ioctl(-1, VIDIOC_G_FMT"
-              ", {type=V4L2_BUF_TYPE_SDR_CAPTURE}) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, {type=" XLAT_FMT "}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_FMT),
+              XLAT_ARGS(V4L2_BUF_TYPE_SDR_CAPTURE));
 #endif
 #if HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT
        p_format->type = V4L2_BUF_TYPE_SDR_OUTPUT;
        ioctl(-1, VIDIOC_G_FMT, p_format);
-       printf("ioctl(-1, VIDIOC_G_FMT"
-              ", {type=V4L2_BUF_TYPE_SDR_OUTPUT}) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, {type=" XLAT_FMT "}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_FMT),
+              XLAT_ARGS(V4L2_BUF_TYPE_SDR_OUTPUT));
 #endif
        /* VIDIOC_S_FMT */
        ioctl(-1, VIDIOC_S_FMT, 0);
-       printf("ioctl(-1, VIDIOC_S_FMT, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_FMT));
 
        init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_OUTPUT);
        ioctl(-1, VIDIOC_S_FMT, p_format);
-       print_ioctl_v4l2(p_format, "VIDIOC_S_FMT", V4L2_BUF_TYPE_VIDEO_OUTPUT);
+       print_ioctl_v4l2(p_format, VIDIOC_S_FMT,
+                        V4L2_BUF_TYPE_VIDEO_OUTPUT);
 #if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
        init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE);
        ioctl(-1, VIDIOC_S_FMT, p_format);
-       print_ioctl_v4l2(p_format, "VIDIOC_S_FMT",
+       print_ioctl_v4l2(p_format, VIDIOC_S_FMT,
                         V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE);
 #endif
 #if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY
        init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY);
        ioctl(-1, VIDIOC_S_FMT, p_format);
-       print_ioctl_v4l2(p_format, "VIDIOC_S_FMT",
+       print_ioctl_v4l2(p_format, VIDIOC_S_FMT,
                         V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY);
 #endif
        init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_OVERLAY);
        ioctl(-1, VIDIOC_S_FMT, p_format);
-       print_ioctl_v4l2(p_format, "VIDIOC_S_FMT",
+       print_ioctl_v4l2(p_format, VIDIOC_S_FMT,
                         V4L2_BUF_TYPE_VIDEO_OVERLAY);
 
        init_v4l2_format(p_format, V4L2_BUF_TYPE_VBI_CAPTURE);
        ioctl(-1, VIDIOC_S_FMT, p_format);
-       print_ioctl_v4l2(p_format, "VIDIOC_S_FMT", V4L2_BUF_TYPE_VBI_CAPTURE);
+       print_ioctl_v4l2(p_format, VIDIOC_S_FMT, V4L2_BUF_TYPE_VBI_CAPTURE);
 #if HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE
        init_v4l2_format(p_format, V4L2_BUF_TYPE_SLICED_VBI_CAPTURE);
        ioctl(-1, VIDIOC_S_FMT, p_format);
-       print_ioctl_v4l2(p_format, "VIDIOC_S_FMT",
+       print_ioctl_v4l2(p_format, VIDIOC_S_FMT,
                         V4L2_BUF_TYPE_SLICED_VBI_CAPTURE);
 #endif
 #if HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE
        init_v4l2_format(p_format, V4L2_BUF_TYPE_SDR_CAPTURE);
        ioctl(-1, VIDIOC_S_FMT, p_format);
-       print_ioctl_v4l2(p_format, "VIDIOC_S_FMT", V4L2_BUF_TYPE_SDR_CAPTURE);
+       print_ioctl_v4l2(p_format, VIDIOC_S_FMT, V4L2_BUF_TYPE_SDR_CAPTURE);
 #endif
 #if HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT
        init_v4l2_format(p_format, V4L2_BUF_TYPE_SDR_OUTPUT);
        ioctl(-1, VIDIOC_S_FMT, p_format);
-       print_ioctl_v4l2(p_format, "VIDIOC_S_FMT", V4L2_BUF_TYPE_SDR_OUTPUT);
+       print_ioctl_v4l2(p_format, VIDIOC_S_FMT, V4L2_BUF_TYPE_SDR_OUTPUT);
 #endif
        /* VIDIOC_TRY_FMT */
        ioctl(-1, VIDIOC_TRY_FMT, 0);
-       printf("ioctl(-1, VIDIOC_TRY_FMT, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_TRY_FMT));
 
        init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_OUTPUT);
        ioctl(-1, VIDIOC_TRY_FMT, p_format);
-       print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT",
+       print_ioctl_v4l2(p_format, VIDIOC_TRY_FMT,
                         V4L2_BUF_TYPE_VIDEO_OUTPUT);
 #if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
        init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE);
        ioctl(-1, VIDIOC_TRY_FMT, p_format);
-       print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT",
+       print_ioctl_v4l2(p_format, VIDIOC_TRY_FMT,
                         V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE);
 #endif
 #if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY
        init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY);
        ioctl(-1, VIDIOC_TRY_FMT, p_format);
-       print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT",
+       print_ioctl_v4l2(p_format, VIDIOC_TRY_FMT,
                         V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY);
 #endif
        init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_OVERLAY);
        ioctl(-1, VIDIOC_TRY_FMT, p_format);
-       print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT",
+       print_ioctl_v4l2(p_format, VIDIOC_TRY_FMT,
                         V4L2_BUF_TYPE_VIDEO_OVERLAY);
 
        init_v4l2_format(p_format, V4L2_BUF_TYPE_VBI_CAPTURE);
        ioctl(-1, VIDIOC_TRY_FMT, p_format);
-       print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT", V4L2_BUF_TYPE_VBI_CAPTURE);
+       print_ioctl_v4l2(p_format, VIDIOC_TRY_FMT, V4L2_BUF_TYPE_VBI_CAPTURE);
 #if HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE
        init_v4l2_format(p_format, V4L2_BUF_TYPE_SLICED_VBI_CAPTURE);
        ioctl(-1, VIDIOC_TRY_FMT, p_format);
-       print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT",
+       print_ioctl_v4l2(p_format, VIDIOC_TRY_FMT,
                         V4L2_BUF_TYPE_SLICED_VBI_CAPTURE);
 #endif
 #if HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE
        init_v4l2_format(p_format, V4L2_BUF_TYPE_SDR_CAPTURE);
        ioctl(-1, VIDIOC_TRY_FMT, p_format);
-       print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT", V4L2_BUF_TYPE_SDR_CAPTURE);
+       print_ioctl_v4l2(p_format, VIDIOC_TRY_FMT, V4L2_BUF_TYPE_SDR_CAPTURE);
 #endif
 #if HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT
        init_v4l2_format(p_format, V4L2_BUF_TYPE_SDR_OUTPUT);
        ioctl(-1, VIDIOC_TRY_FMT, p_format);
-       print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT", V4L2_BUF_TYPE_SDR_OUTPUT);
+       print_ioctl_v4l2(p_format, VIDIOC_TRY_FMT, V4L2_BUF_TYPE_SDR_OUTPUT);
 #endif
        struct v4l2_format *const p_v4l2_format =
                page_end - sizeof(*p_v4l2_format);
        ioctl(-1, VIDIOC_TRY_FMT, p_v4l2_format);
-       printf("ioctl(-1, VIDIOC_TRY_FMT, {type=%#x /* V4L2_BUF_TYPE_??? */})"
-              " = -1 EBADF (%m)\n", p_v4l2_format->type);
+       printf("ioctl(-1, %s, {type=%#x" NRAW(" /* V4L2_BUF_TYPE_??? */") "})"
+              " = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_TRY_FMT), p_v4l2_format->type);
 
        /* VIDIOC_REQBUFS */
        ioctl(-1, VIDIOC_REQBUFS, 0);
-       printf("ioctl(-1, VIDIOC_REQBUFS, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_REQBUFS));
 
        struct v4l2_requestbuffers *const p_v4l2_requestbuffers =
                page_end - sizeof(*p_v4l2_requestbuffers);
        ioctl(-1, VIDIOC_REQBUFS, p_v4l2_requestbuffers);
-       printf("ioctl(-1, VIDIOC_REQBUFS, {type=%#x /* V4L2_BUF_TYPE_??? */, "
-              "memory=%#x /* V4L2_MEMORY_??? */, count=%u})"
+       printf("ioctl(-1, %s, {type=%#x"
+              NRAW(" /* V4L2_BUF_TYPE_??? */")
+              ", memory=%#x" NRAW(" /* V4L2_MEMORY_??? */") ", count=%u})"
               " = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_REQBUFS),
               p_v4l2_requestbuffers->type,
               p_v4l2_requestbuffers->memory,
               p_v4l2_requestbuffers->count);
 
        /* VIDIOC_QUERYBUF */
        ioctl(-1, VIDIOC_QUERYBUF, 0);
-       printf("ioctl(-1, VIDIOC_QUERYBUF, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_QUERYBUF));
 
-       struct v4l2_buffer *const p_v4l2_buffer =
+       kernel_v4l2_buffer_t *const p_v4l2_buffer =
                page_end - sizeof(*p_v4l2_buffer);
        ioctl(-1, VIDIOC_QUERYBUF, p_v4l2_buffer);
-       printf("ioctl(-1, VIDIOC_QUERYBUF, {type=%#x /* V4L2_BUF_TYPE_??? */"
+       printf("ioctl(-1, %s, {type=%#x" NRAW(" /* V4L2_BUF_TYPE_??? */")
               ", index=%u}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_QUERYBUF),
               p_v4l2_buffer->type, p_v4l2_buffer->index);
 
        /* VIDIOC_QBUF */
        ioctl(-1, VIDIOC_QBUF, 0);
-       printf("ioctl(-1, VIDIOC_QBUF, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_QBUF));
 
        ioctl(-1, VIDIOC_QBUF, p_v4l2_buffer);
-       printf("ioctl(-1, VIDIOC_QBUF, {type=%#x /* V4L2_BUF_TYPE_??? */"
+       printf("ioctl(-1, %s, {type=%#x" NRAW(" /* V4L2_BUF_TYPE_??? */")
               ", index=%u}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_QBUF),
               p_v4l2_buffer->type, p_v4l2_buffer->index);
 
        /* VIDIOC_DQBUF */
        ioctl(-1, VIDIOC_DQBUF, 0);
-       printf("ioctl(-1, VIDIOC_DQBUF, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_DQBUF));
 
        ioctl(-1, VIDIOC_DQBUF, p_v4l2_buffer);
-       printf("ioctl(-1, VIDIOC_DQBUF, {type=%#x"
-              " /* V4L2_BUF_TYPE_??? */}) = -1 EBADF (%m)\n",
-              p_v4l2_buffer->type);
+       printf("ioctl(-1, %s, {type=%#x" NRAW(" /* V4L2_BUF_TYPE_??? */")
+              "}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_DQBUF), p_v4l2_buffer->type);
 
        /* VIDIOC_G_FBUF */
        ioctl(-1, VIDIOC_G_FBUF, 0);
-       printf("ioctl(-1, VIDIOC_G_FBUF, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_FBUF));
 
        ioctl(-1, VIDIOC_G_FBUF, page);
-       printf("ioctl(-1, VIDIOC_G_FBUF, %p) = -1 EBADF (%m)\n", page);
+       printf("ioctl(-1, %s, %p) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_FBUF), page);
 
        /* VIDIOC_S_FBUF */
        ioctl(-1, VIDIOC_S_FBUF, 0);
-       printf("ioctl(-1, VIDIOC_S_FBUF, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_FBUF));
 
        struct v4l2_framebuffer *const p_v4l2_framebuffer =
                page_end - sizeof(*p_v4l2_framebuffer);
        ioctl(-1, VIDIOC_S_FBUF, p_v4l2_framebuffer);
-       printf("ioctl(-1, VIDIOC_S_FBUF, {capability=%#x"
+       printf("ioctl(-1, %s, {capability=%#x"
               ", flags=%#x, base=%p}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_FBUF),
               p_v4l2_framebuffer->capability,
               p_v4l2_framebuffer->flags,
               p_v4l2_framebuffer->base);
 
        /* VIDIOC_STREAMON */
        ioctl(-1, VIDIOC_STREAMON, 0);
-       printf("ioctl(-1, VIDIOC_STREAMON, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_STREAMON));
 
        int *const p_int = page_end - sizeof(int);
        ioctl(-1, VIDIOC_STREAMON, p_int);
-       printf("ioctl(-1, VIDIOC_STREAMON, [%#x /* V4L2_BUF_TYPE_??? */])"
-              " = -1 EBADF (%m)\n", *p_int);
+       printf("ioctl(-1, %s, [%#x" NRAW(" /* V4L2_BUF_TYPE_??? */") "])"
+              " = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_STREAMON), *p_int);
 
        /* VIDIOC_STREAMOFF */
        ioctl(-1, VIDIOC_STREAMOFF, 0);
-       printf("ioctl(-1, VIDIOC_STREAMOFF, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_STREAMOFF));
 
        ioctl(-1, VIDIOC_STREAMOFF, p_int);
-       printf("ioctl(-1, VIDIOC_STREAMOFF, [%#x /* V4L2_BUF_TYPE_??? */])"
-              " = -1 EBADF (%m)\n", *p_int);
+       printf("ioctl(-1, %s, [%#x" NRAW(" /* V4L2_BUF_TYPE_??? */") "])"
+              " = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_STREAMOFF), *p_int);
 
        /* VIDIOC_G_PARM */
        ioctl(-1, VIDIOC_G_PARM, 0);
-       printf("ioctl(-1, VIDIOC_G_PARM, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_PARM));
 
        struct v4l2_streamparm *const p_v4l2_streamparm =
                page_end - sizeof(*p_v4l2_streamparm);
        ioctl(-1, VIDIOC_G_PARM, p_v4l2_streamparm);
-       printf("ioctl(-1, VIDIOC_G_PARM, {type=%#x /* V4L2_BUF_TYPE_??? */})"
-              " = -1 EBADF (%m)\n", p_v4l2_streamparm->type);
+       printf("ioctl(-1, %s, {type=%#x" NRAW(" /* V4L2_BUF_TYPE_??? */") "})"
+              " = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_PARM), p_v4l2_streamparm->type);
 
        /* VIDIOC_S_PARM */
        ioctl(-1, VIDIOC_S_PARM, 0);
-       printf("ioctl(-1, VIDIOC_S_PARM, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_PARM));
 
        ioctl(-1, VIDIOC_S_PARM, p_v4l2_streamparm);
-       printf("ioctl(-1, VIDIOC_S_PARM, {type=%#x /* V4L2_BUF_TYPE_??? */})"
-              " = -1 EBADF (%m)\n", p_v4l2_streamparm->type);
+       printf("ioctl(-1, %s, {type=%#x" NRAW(" /* V4L2_BUF_TYPE_??? */") "})"
+              " = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_PARM), p_v4l2_streamparm->type);
 
        TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_streamparm, p_streamparm);
        p_streamparm->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
@@ -633,91 +1005,135 @@ main(void)
        p_streamparm->parm.capture.timeperframe.numerator = 0xdeadbeef;
        p_streamparm->parm.capture.timeperframe.denominator = 0xbadc0ded;
        ioctl(-1, VIDIOC_S_PARM, p_streamparm);
-       printf("ioctl(-1, VIDIOC_S_PARM, {type=V4L2_BUF_TYPE_VIDEO_CAPTURE"
-              ", parm.capture={capability=V4L2_CAP_TIMEPERFRAME"
-              ", capturemode=V4L2_MODE_HIGHQUALITY, timeperframe=%u/%u"
-              ", extendedmode=%u, readbuffers=%u}}) = -1 EBADF (%m)\n",
+       printf("ioctl(-1, %s, {type=" XLAT_FMT
+              ", parm.capture={capability=" XLAT_FMT
+              ", capturemode=" XLAT_FMT ", timeperframe=%u/%u"
+              ", extendedmode=%#x, readbuffers=%u}}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_PARM), XLAT_ARGS(V4L2_BUF_TYPE_VIDEO_CAPTURE),
+              XLAT_ARGS(V4L2_CAP_TIMEPERFRAME), XLAT_ARGS(V4L2_MODE_HIGHQUALITY),
               p_streamparm->parm.capture.timeperframe.numerator,
               p_streamparm->parm.capture.timeperframe.denominator, -1U, -1U);
 
        p_streamparm->type = V4L2_BUF_TYPE_VIDEO_OUTPUT;
        p_streamparm->parm.output.outputmode = 0;
        ioctl(-1, VIDIOC_S_PARM, p_streamparm);
-       printf("ioctl(-1, VIDIOC_S_PARM, {type=V4L2_BUF_TYPE_VIDEO_OUTPUT"
-              ", parm.output={capability=V4L2_CAP_TIMEPERFRAME"
+       printf("ioctl(-1, %s, {type=" XLAT_FMT
+              ", parm.output={capability=" XLAT_FMT
               ", outputmode=0, timeperframe=%u/%u"
-              ", extendedmode=%u, writebuffers=%u}}) = -1 EBADF (%m)\n",
+              ", extendedmode=%#x, writebuffers=%u}}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_PARM), XLAT_ARGS(V4L2_BUF_TYPE_VIDEO_OUTPUT),
+              XLAT_ARGS(V4L2_CAP_TIMEPERFRAME),
               p_streamparm->parm.output.timeperframe.numerator,
               p_streamparm->parm.output.timeperframe.denominator, -1U, -1U);
 
        /* VIDIOC_G_STD */
        ioctl(-1, VIDIOC_G_STD, 0);
-       printf("ioctl(-1, VIDIOC_G_STD, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_STD));
 
        ioctl(-1, VIDIOC_G_STD, page);
-       printf("ioctl(-1, VIDIOC_G_STD, %p) = -1 EBADF (%m)\n", page);
+       printf("ioctl(-1, %s, %p) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_STD), page);
 
        /* VIDIOC_S_STD */
        ioctl(-1, VIDIOC_S_STD, 0);
-       printf("ioctl(-1, VIDIOC_S_STD, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_STD));
 
        long long *const p_longlong = page_end - sizeof(*p_longlong);
        ioctl(-1, VIDIOC_S_STD, p_longlong);
-       printf("ioctl(-1, VIDIOC_S_STD, [%#llx]) = -1 EBADF (%m)\n",
-              *p_longlong);
+       printf("ioctl(-1, %s, [%#llx]) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_STD), *p_longlong);
 
        /* VIDIOC_ENUMSTD */
        ioctl(-1, VIDIOC_ENUMSTD, 0);
-       printf("ioctl(-1, VIDIOC_ENUMSTD, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_ENUMSTD));
 
        struct v4l2_standard *const p_v4l2_standard =
                page_end - sizeof(*p_v4l2_standard);
        ioctl(-1, VIDIOC_ENUMSTD, p_v4l2_standard);
-       printf("ioctl(-1, VIDIOC_ENUMSTD, {index=%u}) = -1 EBADF (%m)\n",
-              p_v4l2_standard->index);
+       printf("ioctl(-1, %s, {index=%u}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_ENUMSTD), p_v4l2_standard->index);
 
        /* VIDIOC_ENUMINPUT */
        ioctl(-1, VIDIOC_ENUMINPUT, 0);
-       printf("ioctl(-1, VIDIOC_ENUMINPUT, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_ENUMINPUT));
 
        struct v4l2_input *const p_v4l2_input =
                page_end - sizeof(*p_v4l2_input);
        ioctl(-1, VIDIOC_ENUMINPUT, p_v4l2_input);
-       printf("ioctl(-1, VIDIOC_ENUMINPUT, {index=%u}) = -1 EBADF (%m)\n",
-              p_v4l2_input->index);
+       printf("ioctl(-1, %s, {index=%u}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_ENUMINPUT), p_v4l2_input->index);
 
        /* VIDIOC_G_CTRL */
        ioctl(-1, VIDIOC_G_CTRL, 0);
-       printf("ioctl(-1, VIDIOC_G_CTRL, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_CTRL));
+
+       static const struct v4l2_control v4l2_control_vals[] = {
+               { .id = 0,                    .value = 3141592653U },
+               { .id = 0x97abcd,             .value = 1234567890U },
+               { .id = V4L2_CTRL_CLASS_USER, .value = 0 },
+               { .id = 0x990a64,             .value = 42 },
+               { .id = 0xa31234,             .value = 1 },
+               { .id = 0xa40000,             .value = -1 },
+       };
+       static const char *id_strs[] = {
+               "0" NRAW(" /* V4L2_CID_??? */"),
+               "0x97abcd" NRAW(" /* V4L2_CID_??? */"),
+               XLAT_KNOWN(0x980000, "V4L2_CTRL_CLASS_USER+0"),
+               XLAT_KNOWN(0x990a64, "V4L2_CID_MPEG_VIDEO_H264_CPB_SIZE"),
+               XLAT_KNOWN(0xa31234, "V4L2_CTRL_CLASS_DETECT+0x1234"),
+               "0xa40000" NRAW(" /* V4L2_CID_??? */"),
+       };
 
        struct v4l2_control *const p_v4l2_control =
                page_end - sizeof(*p_v4l2_control);
        ioctl(-1, VIDIOC_G_CTRL, p_v4l2_control);
-       printf("ioctl(-1, VIDIOC_G_CTRL, {id=%#x /* V4L2_CID_??? */})"
-              " = -1 EBADF (%m)\n", p_v4l2_control->id);
+       printf("ioctl(-1, %s, {id=%#x" NRAW(" /* V4L2_CID_??? */")
+              "}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_CTRL), p_v4l2_control->id);
 
        /* VIDIOC_S_CTRL */
        ioctl(-1, VIDIOC_S_CTRL, 0);
-       printf("ioctl(-1, VIDIOC_S_CTRL, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_CTRL));
 
        ioctl(-1, VIDIOC_S_CTRL, p_v4l2_control);
-       printf("ioctl(-1, VIDIOC_S_CTRL, {id=%#x /* V4L2_CID_??? */"
+       printf("ioctl(-1, %s, {id=%#x" NRAW(" /* V4L2_CID_??? */")
               ", value=%d}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_CTRL),
               p_v4l2_control->id, p_v4l2_control->value);
 
+       for (size_t i = 0; i < ARRAY_SIZE(id_strs); i++) {
+               struct v4l2_control v4l2_c = v4l2_control_vals[i];
+
+               ioctl(-1, VIDIOC_G_CTRL, &v4l2_c);
+               printf("ioctl(-1, %s, {id=%s}) = -1 EBADF (%m)\n",
+                      XLAT_STR(VIDIOC_G_CTRL), id_strs[i]);
+
+               ioctl(-1, VIDIOC_S_CTRL, &v4l2_c);
+               printf("ioctl(-1, %s, {id=%s, value=%d}) = -1 EBADF (%m)\n",
+                      XLAT_STR(VIDIOC_S_CTRL), id_strs[i], v4l2_c.value);
+       }
+
        /* VIDIOC_G_TUNER */
        ioctl(-1, VIDIOC_G_TUNER, 0);
-       printf("ioctl(-1, VIDIOC_G_TUNER, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_TUNER));
 
        struct v4l2_tuner *const p_v4l2_tuner =
                page_end - sizeof(*p_v4l2_tuner);
        ioctl(-1, VIDIOC_G_TUNER, p_v4l2_tuner);
-       printf("ioctl(-1, VIDIOC_G_TUNER, {index=%u})"
-              " = -1 EBADF (%m)\n", p_v4l2_tuner->index);
+       printf("ioctl(-1, %s, {index=%u}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_TUNER), p_v4l2_tuner->index);
 
        /* VIDIOC_S_TUNER */
        ioctl(-1, VIDIOC_S_TUNER, 0);
-       printf("ioctl(-1, VIDIOC_S_TUNER, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_TUNER));
 
        TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_tuner, p_tuner);
        p_tuner->index = 0x4fb6df39;
@@ -731,79 +1147,98 @@ main(void)
        p_tuner->signal = 0x10bf92c8;
        p_tuner->afc = 0x3bf7e18b;
        ioctl(-1, VIDIOC_S_TUNER, p_tuner);
-       printf("ioctl(-1, VIDIOC_S_TUNER, {index=%u"
-              ", name=\"cum tacent clamant\""
-              ", type=V4L2_TUNER_RADIO, capability=V4L2_TUNER_CAP_LOW"
+       printf("ioctl(-1, %s, {index=%u, name=\"cum tacent clamant\""
+              ", type=" XLAT_FMT ", capability=" XLAT_FMT
               ", rangelow=%u, rangehigh=%u"
-              ", rxsubchans=V4L2_TUNER_SUB_MONO"
-              ", audmode=V4L2_TUNER_MODE_MONO, signal=%d, afc=%d"
-              "}) = -1 EBADF (%m)\n",
-              p_tuner->index, p_tuner->rangelow,
-              p_tuner->rangehigh, p_tuner->signal, p_tuner->afc);
+              ", rxsubchans=" XLAT_FMT ", audmode=" XLAT_FMT
+              ", signal=%d, afc=%d}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_TUNER), p_tuner->index,
+              XLAT_ARGS(V4L2_TUNER_RADIO), XLAT_ARGS(V4L2_TUNER_CAP_LOW),
+              p_tuner->rangelow, p_tuner->rangehigh,
+              XLAT_ARGS(V4L2_TUNER_SUB_MONO), XLAT_ARGS(V4L2_TUNER_MODE_MONO),
+              p_tuner->signal, p_tuner->afc);
 
        /* VIDIOC_QUERYCTRL */
        ioctl(-1, VIDIOC_QUERYCTRL, 0);
-       printf("ioctl(-1, VIDIOC_QUERYCTRL, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_QUERYCTRL));
 
        struct v4l2_queryctrl *const p_v4l2_queryctrl =
                page_end - sizeof(*p_v4l2_queryctrl);
        ioctl(-1, VIDIOC_QUERYCTRL, p_v4l2_queryctrl);
-#ifdef V4L2_CTRL_FLAG_NEXT_CTRL
-       printf("ioctl(-1, VIDIOC_QUERYCTRL, {id=V4L2_CTRL_FLAG_NEXT_CTRL"
-              "|%#x /* V4L2_CID_??? */}) = -1 EBADF (%m)\n",
-              p_v4l2_queryctrl->id & ~V4L2_CTRL_FLAG_NEXT_CTRL);
+       printf("ioctl(-1, %s, {id="
+#if XLAT_RAW
+             "%#x"
+#else
+              XLAT_FMT "|%#x /* V4L2_CID_??? */"
+#endif
+              "}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_QUERYCTRL),
+#if XLAT_RAW
+              p_v4l2_queryctrl->id
 #else
-       printf("ioctl(-1, VIDIOC_QUERYCTRL, {id=%#x /* V4L2_CID_??? */})"
-              " = -1 EBADF (%m)\n", p_v4l2_queryctrl->id);
+              XLAT_ARGS(V4L2_CTRL_FLAG_NEXT_CTRL),
+              p_v4l2_queryctrl->id & ~V4L2_CTRL_FLAG_NEXT_CTRL
 #endif
+              );
 
        TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_queryctrl, p_queryctrl);
        p_queryctrl->id = V4L2_CID_SATURATION;
        ioctl(-1, VIDIOC_QUERYCTRL, p_queryctrl);
-       printf("ioctl(-1, VIDIOC_QUERYCTRL, {id=V4L2_CID_SATURATION})"
-              " = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, {id=" XLAT_FMT "}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_QUERYCTRL), XLAT_ARGS(V4L2_CID_SATURATION));
 
        /* VIDIOC_G_INPUT */
        ioctl(-1, VIDIOC_G_INPUT, 0);
-       printf("ioctl(-1, VIDIOC_G_INPUT, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_INPUT));
 
        ioctl(-1, VIDIOC_G_INPUT, page);
-       printf("ioctl(-1, VIDIOC_G_INPUT, %p) = -1 EBADF (%m)\n", page);
+       printf("ioctl(-1, %s, %p) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_INPUT), page);
 
        /* VIDIOC_S_INPUT */
        ioctl(-1, VIDIOC_S_INPUT, 0);
-       printf("ioctl(-1, VIDIOC_S_INPUT, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_INPUT));
 
        ioctl(-1, VIDIOC_S_INPUT, p_int);
-       printf("ioctl(-1, VIDIOC_S_INPUT, [%u]) = -1 EBADF (%m)\n", *p_int);
+       printf("ioctl(-1, %s, [%u]) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_INPUT), *p_int);
 
        /* VIDIOC_CROPCAP */
        ioctl(-1, VIDIOC_CROPCAP, 0);
-       printf("ioctl(-1, VIDIOC_CROPCAP, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_CROPCAP));
 
        struct v4l2_cropcap *const p_v4l2_cropcap =
                page_end - sizeof(*p_v4l2_cropcap);
        ioctl(-1, VIDIOC_CROPCAP, p_v4l2_cropcap);
-       printf("ioctl(-1, VIDIOC_CROPCAP, {type=%#x /* V4L2_BUF_TYPE_??? */})"
-              " = -1 EBADF (%m)\n", p_v4l2_cropcap->type);
+       printf("ioctl(-1, %s, {type=%#x" NRAW(" /* V4L2_BUF_TYPE_??? */") "})"
+              " = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_CROPCAP), p_v4l2_cropcap->type);
 
        /* VIDIOC_G_CROP */
        ioctl(-1, VIDIOC_G_CROP, 0);
-       printf("ioctl(-1, VIDIOC_G_CROP, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_CROP));
 
        struct v4l2_crop *const p_v4l2_crop =
                page_end - sizeof(*p_v4l2_crop);
        ioctl(-1, VIDIOC_G_CROP, p_v4l2_crop);
-       printf("ioctl(-1, VIDIOC_G_CROP, {type=%#x /* V4L2_BUF_TYPE_??? */})"
-              " = -1 EBADF (%m)\n", p_v4l2_crop->type);
+       printf("ioctl(-1, %s, {type=%#x" NRAW(" /* V4L2_BUF_TYPE_??? */") "})"
+              " = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_CROP), p_v4l2_crop->type);
 
        /* VIDIOC_S_CROP */
        ioctl(-1, VIDIOC_S_CROP, 0);
-       printf("ioctl(-1, VIDIOC_S_CROP, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_CROP));
 
        ioctl(-1, VIDIOC_S_CROP, p_v4l2_crop);
-       printf("ioctl(-1, VIDIOC_S_CROP, {type=%#x /* V4L2_BUF_TYPE_??? */"
+       printf("ioctl(-1, %s, {type=%#x" NRAW(" /* V4L2_BUF_TYPE_??? */")
               ", c={left=%d, top=%d, width=%u, height=%u}}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_CROP),
               p_v4l2_crop->type,
               p_v4l2_crop->c.left,
               p_v4l2_crop->c.top,
@@ -813,36 +1248,42 @@ main(void)
 #ifdef VIDIOC_S_EXT_CTRLS
        /* VIDIOC_S_EXT_CTRLS */
        ioctl(-1, VIDIOC_S_EXT_CTRLS, 0);
-       printf("ioctl(-1, VIDIOC_S_EXT_CTRLS, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_EXT_CTRLS));
 
        TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_ext_controls, p_ext_controls);
        p_ext_controls->ctrl_class = V4L2_CTRL_CLASS_USER;
        p_ext_controls->count = 0;
        p_ext_controls->controls = (void *) -2UL;
        ioctl(-1, VIDIOC_S_EXT_CTRLS, p_ext_controls);
-       printf("ioctl(-1, VIDIOC_S_EXT_CTRLS, {ctrl_class=V4L2_CTRL_CLASS_USER"
-              ", count=%u}) = -1 EBADF (%m)\n", p_ext_controls->count);
+       printf("ioctl(-1, %s, {ctrl_class=" XLAT_FMT ", count=%u})"
+              " = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_EXT_CTRLS), XLAT_ARGS(V4L2_CTRL_CLASS_USER),
+              p_ext_controls->count);
 
        p_ext_controls->ctrl_class = 0x00a30000;
        p_ext_controls->count = magic;
        ioctl(-1, VIDIOC_S_EXT_CTRLS, p_ext_controls);
-       printf("ioctl(-1, VIDIOC_S_EXT_CTRLS, {ctrl_class=V4L2_CTRL_CLASS_DETECT"
+       printf("ioctl(-1, %s, {ctrl_class=" XLAT_FMT
               ", count=%u, controls=%p}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_EXT_CTRLS), XLAT_ARGS(V4L2_CTRL_CLASS_DETECT),
               p_ext_controls->count, p_ext_controls->controls);
 
        p_ext_controls->ctrl_class = 0x00a40000;
        p_ext_controls->count = magic;
        ioctl(-1, VIDIOC_S_EXT_CTRLS, p_ext_controls);
-       printf("ioctl(-1, VIDIOC_S_EXT_CTRLS"
-              ", {ctrl_class=0xa40000 /* V4L2_CTRL_CLASS_??? */"
+       printf("ioctl(-1, %s"
+              ", {ctrl_class=0xa40000" NRAW(" /* V4L2_CTRL_CLASS_??? */")
               ", count=%u, controls=%p}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_EXT_CTRLS),
               p_ext_controls->count, p_ext_controls->controls);
 
        p_ext_controls->ctrl_class = V4L2_CTRL_CLASS_MPEG;
        p_ext_controls->count = magic;
        ioctl(-1, VIDIOC_S_EXT_CTRLS, p_ext_controls);
-       printf("ioctl(-1, VIDIOC_S_EXT_CTRLS, {ctrl_class=V4L2_CTRL_CLASS_MPEG"
+       printf("ioctl(-1, %s, {ctrl_class=" XLAT_FMT
               ", count=%u, controls=%p}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_EXT_CTRLS), XLAT_ARGS(V4L2_CTRL_CLASS_MPEG),
               p_ext_controls->count, p_ext_controls->controls);
 
 # if HAVE_DECL_V4L2_CTRL_TYPE_STRING
@@ -858,107 +1299,132 @@ main(void)
                tail_alloc(p_ext_controls->controls[1].size);
 
        ioctl(-1, VIDIOC_S_EXT_CTRLS, p_ext_controls);
-       printf("ioctl(-1, VIDIOC_S_EXT_CTRLS"
-              ", {ctrl_class=V4L2_CTRL_CLASS_MPEG, count=%u, controls="
-              "[{id=V4L2_CID_BRIGHTNESS, size=0, value=%d, value64=%lld}"
-              ", {id=V4L2_CID_CONTRAST, size=2, string=\"\\377\\377\"}"
-              "] => controls="
-              "[{id=V4L2_CID_BRIGHTNESS, size=0, value=%d, value64=%lld}"
-              ", {id=V4L2_CID_CONTRAST, size=2, string=\"\\377\\377\"}"
+       printf("ioctl(-1, %s, {ctrl_class=" XLAT_FMT ", count=%u, controls="
+              "[{id=" XLAT_FMT ", size=0, value=%d, value64=%lld}"
+              ", {id=" XLAT_FMT ", size=2, string=\"\\377\\377\"}"
+              "]} => {controls="
+              "[{id=" XLAT_FMT ", size=0, value=%d, value64=%lld}"
+              ", {id=" XLAT_FMT ", size=2, string=\"\\377\\377\"}"
               "], error_idx=%u}) = -1 EBADF (%m)\n",
-              p_ext_controls->count,
+              XLAT_STR(VIDIOC_S_EXT_CTRLS), XLAT_ARGS(V4L2_CTRL_CLASS_MPEG),
+              p_ext_controls->count, XLAT_ARGS(V4L2_CID_BRIGHTNESS),
               p_ext_controls->controls[0].value,
               (long long) p_ext_controls->controls[0].value64,
+              XLAT_ARGS(V4L2_CID_CONTRAST), XLAT_ARGS(V4L2_CID_BRIGHTNESS),
               p_ext_controls->controls[0].value,
               (long long) p_ext_controls->controls[0].value64,
-              p_ext_controls->error_idx);
+              XLAT_ARGS(V4L2_CID_CONTRAST), p_ext_controls->error_idx);
 
        ++p_ext_controls->count;
        ioctl(-1, VIDIOC_S_EXT_CTRLS, p_ext_controls);
-       printf("ioctl(-1, VIDIOC_S_EXT_CTRLS"
-              ", {ctrl_class=V4L2_CTRL_CLASS_MPEG, count=%u, controls="
-              "[{id=V4L2_CID_BRIGHTNESS, size=0, value=%d, value64=%lld}"
-              ", {id=V4L2_CID_CONTRAST, size=2, string=\"\\377\\377\"}"
+       printf("ioctl(-1, %s, {ctrl_class=" XLAT_FMT ", count=%u, controls="
+              "[{id=" XLAT_FMT ", size=0, value=%d, value64=%lld}"
+              ", {id=" XLAT_FMT ", size=2, string=\"\\377\\377\"}"
               ", ... /* %p */]}) = -1 EBADF (%m)\n",
-              p_ext_controls->count,
+              XLAT_STR(VIDIOC_S_EXT_CTRLS), XLAT_ARGS(V4L2_CTRL_CLASS_MPEG),
+              p_ext_controls->count, XLAT_ARGS(V4L2_CID_BRIGHTNESS),
               p_ext_controls->controls[0].value,
               (long long) p_ext_controls->controls[0].value64,
-              p_ext_controls->controls + 2);
+              XLAT_ARGS(V4L2_CID_CONTRAST), p_ext_controls->controls + 2);
 # endif /* HAVE_DECL_V4L2_CTRL_TYPE_STRING */
 
        /* VIDIOC_TRY_EXT_CTRLS */
        ioctl(-1, VIDIOC_TRY_EXT_CTRLS, 0);
-       printf("ioctl(-1, VIDIOC_TRY_EXT_CTRLS, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_TRY_EXT_CTRLS));
 
        p_ext_controls->ctrl_class = V4L2_CTRL_CLASS_USER;
        p_ext_controls->count = magic;
        p_ext_controls->controls = (void *) -2UL;
        ioctl(-1, VIDIOC_TRY_EXT_CTRLS, p_ext_controls);
-       printf("ioctl(-1, VIDIOC_TRY_EXT_CTRLS"
-              ", {ctrl_class=V4L2_CTRL_CLASS_USER, count=%u, controls=%p})"
+       printf("ioctl(-1, %s, {ctrl_class=" XLAT_FMT ", count=%u, controls=%p})"
               " = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_TRY_EXT_CTRLS), XLAT_ARGS(V4L2_CTRL_CLASS_USER),
               p_ext_controls->count, p_ext_controls->controls);
 
        /* VIDIOC_G_EXT_CTRLS */
        ioctl(-1, VIDIOC_G_EXT_CTRLS, 0);
-       printf("ioctl(-1, VIDIOC_G_EXT_CTRLS, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_EXT_CTRLS));
 
        ioctl(-1, VIDIOC_G_EXT_CTRLS, p_ext_controls);
-       printf("ioctl(-1, VIDIOC_G_EXT_CTRLS"
-              ", {ctrl_class=V4L2_CTRL_CLASS_USER, count=%u, controls=%p"
+       printf("ioctl(-1, %s, {ctrl_class=" XLAT_FMT ", count=%u, controls=%p"
               ", error_idx=%u}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_EXT_CTRLS), XLAT_ARGS(V4L2_CTRL_CLASS_USER),
               p_ext_controls->count, p_ext_controls->controls,
               p_ext_controls->error_idx);
 #endif /* VIDIOC_S_EXT_CTRLS */
 
-#ifdef VIDIOC_ENUM_FRAMESIZES
+#ifdef HAVE_STRUCT_V4L2_FRMSIZEENUM
        ioctl(-1, VIDIOC_ENUM_FRAMESIZES, 0);
-       printf("ioctl(-1, VIDIOC_ENUM_FRAMESIZES, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_ENUM_FRAMESIZES));
 
        TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_frmsizeenum, p_frmsizeenum);
        p_frmsizeenum->index = magic;
        p_frmsizeenum->pixel_format = fourcc(cc[0], cc[1], cc[2], cc[3]);
 
        ioctl(-1, VIDIOC_ENUM_FRAMESIZES, p_frmsizeenum);
-       printf("ioctl(-1, VIDIOC_ENUM_FRAMESIZES, {index=%u"
-              ", pixel_format=v4l2_fourcc('%c', '\\%c', '\\%c', '\\x%x')})"
-              " = -1 EBADF (%m)\n", p_frmsizeenum->index,
-              cc[0], cc[1], cc[2], cc[3]);
-#endif /* VIDIOC_ENUM_FRAMESIZES */
-
-#ifdef VIDIOC_ENUM_FRAMEINTERVALS
+       printf("ioctl(-1, %s, {index=%u, pixel_format="
+# if XLAT_RAW
+              "0x%hhx%hhx%hhx%hhx"
+# else /* !XLAT_RAW */
+              "v4l2_fourcc('%c', '\\%c', '\\%c', '\\x%x')"
+# endif /* XLAT_RAW */
+              "}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_ENUM_FRAMESIZES), p_frmsizeenum->index,
+# if XLAT_RAW
+              cc[3], cc[2], cc[1], cc[0]
+# else /* !XLAT_RAW */
+              cc[0], cc[1], cc[2], cc[3]
+# endif /* XLAT_RAW */
+              );
+#endif /* HAVE_STRUCT_V4L2_FRMSIZEENUM */
+
+#ifdef HAVE_STRUCT_V4L2_FRMIVALENUM
        ioctl(-1, VIDIOC_ENUM_FRAMEINTERVALS, 0);
-       printf("ioctl(-1, VIDIOC_ENUM_FRAMEINTERVALS, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_ENUM_FRAMEINTERVALS));
 
        struct v4l2_frmivalenum *const p_v4l2_frmivalenum =
                page_end - sizeof(*p_v4l2_frmivalenum);
        ioctl(-1, VIDIOC_ENUM_FRAMEINTERVALS, p_v4l2_frmivalenum);
-       printf("ioctl(-1, VIDIOC_ENUM_FRAMEINTERVALS, {index=%u"
-              ", pixel_format=v4l2_fourcc('\\x%x', '\\x%x', '\\x%x', '\\x%x')"
+       printf("ioctl(-1, %s, {index=%u, pixel_format="
+# if XLAT_RAW
+              "%#x"
+# else /* !XLAT_RAW */
+              "v4l2_fourcc('\\x%x', '\\x%x', '\\x%x', '\\x%x')"
+# endif /* XLAT_RAW */
               ", width=%u, height=%u}) = -1 EBADF (%m)\n",
-              p_v4l2_frmivalenum->index,
+              XLAT_STR(VIDIOC_ENUM_FRAMEINTERVALS), p_v4l2_frmivalenum->index,
+# if XLAT_RAW
+              p_v4l2_frmivalenum->pixel_format,
+# else /* !XLAT_RAW */
               cc0(p_v4l2_frmivalenum->pixel_format),
               cc1(p_v4l2_frmivalenum->pixel_format),
               cc2(p_v4l2_frmivalenum->pixel_format),
               cc3(p_v4l2_frmivalenum->pixel_format),
+# endif /* XLAT_RAW */
               p_v4l2_frmivalenum->width,
               p_v4l2_frmivalenum->height);
-#endif /* VIDIOC_ENUM_FRAMEINTERVALS */
+#endif /* HAVE_STRUCT_V4L2_FRMIVALENUM */
 
-#ifdef VIDIOC_CREATE_BUFS
+#ifdef HAVE_STRUCT_V4L2_CREATE_BUFFERS
        ioctl(-1, VIDIOC_CREATE_BUFS, 0);
-       printf("ioctl(-1, VIDIOC_CREATE_BUFS, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_CREATE_BUFS));
 
        struct v4l2_create_buffers *const p_v4l2_create_buffers =
                page_end - sizeof(*p_v4l2_create_buffers);
        ioctl(-1, VIDIOC_CREATE_BUFS, p_v4l2_create_buffers);
-       printf("ioctl(-1, VIDIOC_CREATE_BUFS, {count=%u, memory=%#x"
-              " /* V4L2_MEMORY_??? */, format={type=%#x"
-              " /* V4L2_BUF_TYPE_??? */}}) = -1 EBADF (%m)\n",
+       printf("ioctl(-1, %s, {count=%u, memory=%#x"
+              NRAW(" /* V4L2_MEMORY_??? */") ", format={type=%#x"
+              NRAW(" /* V4L2_BUF_TYPE_??? */") "}}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_CREATE_BUFS),
               p_v4l2_create_buffers->count,
               p_v4l2_create_buffers->memory,
               p_v4l2_create_buffers->format.type);
-#endif /* VIDIOC_CREATE_BUFS */
+#endif /* HAVE_STRUCT_V4L2_CREATE_BUFFERS */
 
        puts("+++ exited with 0 +++");
        return 0;
diff --git a/tests-m32/ioctl_watchdog.c b/tests-m32/ioctl_watchdog.c
new file mode 100644 (file)
index 0000000..d1af836
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * Check decoding of WDIOC* commands of ioctl syscall.
+ *
+ * Copyright (c) 2019 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#include <stdio.h>
+#include <string.h>
+#include <sys/ioctl.h>
+#include <linux/watchdog.h>
+
+#define XLAT_MACROS_ONLY
+#include "xlat/watchdog_ioctl_cmds.h"
+#undef XLAT_MACROS_ONLY
+
+#define RVAL_EBADF " = -1 EBADF (%m)\n"
+
+int
+main(void)
+{
+       int val = 123;
+
+       ioctl(-1, WDIOC_GETSTATUS, &val);
+       printf("ioctl(-1, WDIOC_GETSTATUS, %p)" RVAL_EBADF, &val);
+
+       ioctl(-1, WDIOC_GETBOOTSTATUS, &val);
+       printf("ioctl(-1, WDIOC_GETBOOTSTATUS, %p)" RVAL_EBADF, &val);
+
+       ioctl(-1, WDIOC_GETTEMP, &val);
+       printf("ioctl(-1, WDIOC_GETTEMP, %p)" RVAL_EBADF, &val);
+
+       ioctl(-1, WDIOC_GETTIMEOUT, &val);
+       printf("ioctl(-1, WDIOC_GETTIMEOUT, %p)" RVAL_EBADF, &val);
+
+       ioctl(-1, WDIOC_GETPRETIMEOUT, &val);
+       printf("ioctl(-1, WDIOC_GETPRETIMEOUT, %p)" RVAL_EBADF, &val);
+
+       ioctl(-1, WDIOC_GETTIMELEFT, &val);
+       printf("ioctl(-1, WDIOC_GETTIMELEFT, %p)" RVAL_EBADF, &val);
+
+       ioctl(-1, WDIOC_SETTIMEOUT, &val);
+       printf("ioctl(-1, WDIOC_SETTIMEOUT, [123])" RVAL_EBADF);
+
+       ioctl(-1, WDIOC_SETPRETIMEOUT, &val);
+       printf("ioctl(-1, WDIOC_SETPRETIMEOUT, [123])" RVAL_EBADF);
+
+       ioctl(-1, WDIOC_KEEPALIVE);
+       printf("ioctl(-1, WDIOC_KEEPALIVE)" RVAL_EBADF);
+
+       ioctl(-1, _IOC(_IOC_NONE, 'W', 0xff, 0), &val);
+       printf("ioctl(-1, _IOC(_IOC_NONE, %#x, 0xff, 0), %p)" RVAL_EBADF,
+              'W', &val);
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
diff --git a/tests-m32/ioctl_watchdog.gen.test b/tests-m32/ioctl_watchdog.gen.test
new file mode 100755 (executable)
index 0000000..ed1c71f
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_watchdog +ioctl.test ); do not edit.
+set -- 
+. "${srcdir=.}/ioctl.test"
index 3f99b2db5a08c1034f4068245a5e9d5b50770fba..cba8e7be70fdf5f23214f3ab0c38e45821ced38f 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_ioperm
 
index f8904030af5658f0d63f44094e7f51a4db8c6e69..f8c772b6c5706717b4bfd435e7f12106089dbc41 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_iopl
 
diff --git a/tests-m32/ioprio--pidns-translation.c b/tests-m32/ioprio--pidns-translation.c
new file mode 100644 (file)
index 0000000..bcb49a8
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "ioprio.c"
diff --git a/tests-m32/ioprio--pidns-translation.gen.test b/tests-m32/ioprio--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..f6a9c72
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioprio--pidns-translation test_pidns -a18 -e trace=ioprio_get,ioprio_set); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a18 -e trace=ioprio_get,ioprio_set
index 6577596352ce43a42199ba6caf2d154b71a121a5..5d998a225db0b3d10e49fd6f75832613c9985771 100644 (file)
@@ -2,15 +2,15 @@
  * Check decoding of ioprio_get and ioprio_set syscalls.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2019 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-
-#include <asm/unistd.h>
+#include "scno.h"
+#include "pidns.h"
 
 #if defined(__NR_ioprio_get) && defined(__NR_ioprio_set)
 
@@ -30,12 +30,18 @@ enum {
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        static const kernel_ulong_t bogus_which =
                (kernel_ulong_t) 0xdeadfacefa57beefULL;
        static const kernel_ulong_t bogus_who =
                (kernel_ulong_t) 0xbadc0dedda7a1057ULL;
        static const kernel_ulong_t bogus_ioprio =
                (kernel_ulong_t) 0xdec0ded1facefeedULL;
+
+       const int pid = getpid();
+       const int pgid = getpgid(0);
+
 # if !XLAT_RAW
        static const char * const bogus_ioprio_str =
                "IOPRIO_PRIO_VALUE(0x7d677 /* IOPRIO_CLASS_??? */, 7917)";
@@ -46,6 +52,7 @@ main(void)
 
        rc = syscall(__NR_ioprio_get, bogus_which, bogus_who);
        errstr = sprintrc(rc);
+       pidns_print_leader();
 # if XLAT_RAW
        printf("ioprio_get(%#x, %d) = %s\n",
               (int) bogus_which, (int) bogus_who, errstr);
@@ -54,47 +61,52 @@ main(void)
               (int) bogus_which, (int) bogus_who, errstr);
 # endif
 
-       rc = syscall(__NR_ioprio_get, 1, 0);
+       rc = syscall(__NR_ioprio_get, 1, pid);
        errstr = sprintrc(rc);
+       pidns_print_leader();
+       printf("ioprio_get(");
 # if XLAT_RAW
-       printf("ioprio_get(0x1, 0) = %s\n", errstr);
+       printf("0x1, ");
 # elif XLAT_VERBOSE
-       printf("ioprio_get(0x1 /* IOPRIO_WHO_PROCESS */, 0) = %s", errstr);
-       if (rc >= 0) {
-               printf(" (IOPRIO_PRIO_VALUE(%u /* ", (unsigned int) rc >> 13);
-               printxval(ioprio_class, (unsigned int) rc >> 13,
-                         "IOPRIO_CLASS_???");
-               printf(" */, %u))", (unsigned int) rc & 0x1fff);
-       }
-       puts("");
+       printf("0x1 /* IOPRIO_WHO_PROCESS */, ");
 # else /* XLAT_ABBREV */
-       printf("ioprio_get(IOPRIO_WHO_PROCESS, 0) = %s", errstr);
+       printf("IOPRIO_WHO_PROCESS, ");
+# endif
+       printf("%d%s) = %s", pid, pidns_pid2str(PT_TGID), errstr);
+# if !XLAT_RAW
        if (rc >= 0) {
                printf(" (IOPRIO_PRIO_VALUE(");
                printxval(ioprio_class, (unsigned int) rc >> 13,
                          "IOPRIO_CLASS_???");
                printf(", %u))", (unsigned int) rc & 0x1fff);
        }
-       puts("");
 # endif
+       puts("");
 
-       rc = syscall(__NR_ioprio_set, 2, 0, 8191);
+       rc = syscall(__NR_ioprio_set, 2, pgid, 8191);
        errstr = sprintrc(rc);
+       pidns_print_leader();
+       printf("ioprio_set(");
 # if XLAT_RAW
-       printf("ioprio_set(%#x, 0, 8191) = %s\n", 2, errstr);
+       printf("%#x", 2);
 # elif XLAT_VERBOSE
-       printf("ioprio_set(%#x /* IOPRIO_WHO_PGRP */, 0, 8191"
-              " /* IOPRIO_PRIO_VALUE(0 /* IOPRIO_CLASS_NONE */, 8191) */)"
-              " = %s\n",
-              2, errstr);
+       printf("%#x /* IOPRIO_WHO_PGRP */", 2);
 # else /* XLAT_ABBREV */
-       printf("ioprio_set(IOPRIO_WHO_PGRP, 0"
-              ", IOPRIO_PRIO_VALUE(IOPRIO_CLASS_NONE, 8191)) = %s\n",
-              errstr);
+       printf("IOPRIO_WHO_PGRP");
+# endif
+       printf(", %d%s", pgid, pidns_pid2str(PT_PGID));
+# if XLAT_RAW
+       printf(", 8191)");
+# elif XLAT_VERBOSE
+       printf(", 8191 /* IOPRIO_PRIO_VALUE(0 /* IOPRIO_CLASS_NONE */, 8191) */)");
+# else /* XLAT_ABBREV */
+       printf(", IOPRIO_PRIO_VALUE(IOPRIO_CLASS_NONE, 8191))");
 # endif
+       printf(" = %s\n", errstr);
 
        rc = syscall(__NR_ioprio_set, bogus_which, bogus_who, bogus_ioprio);
        errstr = sprintrc(rc);
+       pidns_print_leader();
 # if XLAT_RAW
        printf("ioprio_set(%#x, %d, %d) = %s\n",
               (int) bogus_which, (int) bogus_who, (int) bogus_ioprio,
@@ -109,6 +121,7 @@ main(void)
               errstr);
 # endif
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
 
        return 0;
index 5c86f2079bc58c30210681bb27da528fa356a1b5..5cd0b603d0367bcd2e6ad26d32b58ac2e1bf4a0b 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of ipc syscall.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_ipc && defined HAVE_LINUX_IPC_H
 
index b12f4af3315f9aaa734ba787cf18c9796cf43eb8..55dc287f1a182a8664dbe24b8395d805bdd273ef 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 # define MSG_STAT_ANY 13
 #endif
 
+#undef TEST_MSGCTL_BOGUS_ADDR
+
+/*
+ * Starting with commit glibc-2.32~83, on every 32-bit architecture
+ * where 32-bit time_t support is enabled, glibc tries to retrieve
+ * the data provided in the third argument of msgctl call.
+ */
+#if GLIBC_PREREQ_GE(2, 32) && defined __TIMESIZE && __TIMESIZE != 64
+# define TEST_MSGCTL_BOGUS_ADDR 0
+#endif
 /*
  * Before glibc-2.22-122-gbe48165, ppc64 code tried to retrieve data
  * provided in third argument of msgctl call (in case of IPC_SET cmd)
  * which led to segmentation fault.
  */
-#undef TEST_MSGCTL_BOGUS_ADDR
-#if defined __GLIBC__ && defined POWERPC64
-# if !(defined __GLIBC_MINOR__) \
-   || ((__GLIBC__ << 16) + __GLIBC_MINOR__ < (2 << 16) + 23)
-#  define TEST_MSGCTL_BOGUS_ADDR 0
-# endif
-#endif /* __GLIBC__ && POWERPC64 */
+#if GLIBC_PREREQ_LT(2, 23) && (defined POWERPC64 || defined POWERPC64LE)
+# define TEST_MSGCTL_BOGUS_ADDR 0
+#endif
 
 #ifndef TEST_MSGCTL_BOGUS_ADDR
 # define TEST_MSGCTL_BOGUS_ADDR 1
@@ -43,6 +49,7 @@
 # define str_ipc_rmid "0"
 # define str_ipc_set "0x1"
 # define str_ipc_stat "0x2"
+# define str_ipc_info "0x3"
 # define str_msg_stat "0xb"
 # define str_msg_info "0xc"
 # define str_msg_stat_any "0xd"
@@ -55,6 +62,7 @@
 # define str_ipc_rmid "0 /\\* IPC_RMID \\*/"
 # define str_ipc_set "0x1 /\\* IPC_SET \\*/"
 # define str_ipc_stat "0x2 /\\* IPC_STAT \\*/"
+# define str_ipc_info "0x3 /\\* IPC_INFO \\*/"
 # define str_msg_stat "0xb /\\* MSG_STAT \\*/"
 # define str_msg_info "0xc /\\* MSG_INFO \\*/"
 # define str_msg_stat_any "0xd /\\* MSG_STAT_ANY \\*/"
@@ -66,6 +74,7 @@
 # define str_ipc_rmid "IPC_RMID"
 # define str_ipc_set "IPC_SET"
 # define str_ipc_stat "IPC_STAT"
+# define str_ipc_info "IPC_INFO"
 # define str_msg_stat "MSG_STAT"
 # define str_msg_info "MSG_INFO"
 # define str_msg_stat_any "MSG_STAT_ANY"
@@ -84,6 +93,68 @@ cleanup(void)
        id = -1;
 }
 
+static void
+print_msginfo(const char *const str_ipc_cmd,
+             const struct msginfo *const info,
+             const int rc)
+{
+       if (rc < 0) {
+               printf("msgctl\\(%d, (%s\\|)?%s, %p\\) = %s\n",
+                      id, str_ipc_64, str_ipc_cmd, info, sprintrc_grep(rc));
+               return;
+       }
+
+       printf("msgctl\\(%d, (%s\\|)?%s, \\{msgpool=%d, msgmap=%d, msgmax=%d"
+              ", msgmnb=%d, msgmni=%d, msgssz=%d, msgtql=%d, msgseg=%u\\}\\)"
+              " = %d\n",
+              id,
+              str_ipc_64,
+              str_ipc_cmd,
+              info->msgpool,
+              info->msgmap,
+              info->msgmax,
+              info->msgmnb,
+              info->msgmni,
+              info->msgssz,
+              info->msgtql,
+              (unsigned) info->msgseg,
+              rc);
+}
+
+static void
+print_msqid_ds(const char *const str_ipc_cmd,
+              const struct msqid_ds *const ds,
+              const int rc)
+{
+       if (rc < 0) {
+               printf("msgctl\\(%d, (%s\\|)?%s, %p\\) = %s\n",
+                      id, str_ipc_64, str_ipc_cmd, ds, sprintrc_grep(rc));
+               return;
+       }
+
+       printf("msgctl\\(%d, (%s\\|)?%s, \\{msg_perm=\\{uid=%u"
+              ", gid=%u, mode=%#o, key=%u, cuid=%u, cgid=%u\\}"
+              ", msg_stime=%u, msg_rtime=%u, msg_ctime=%u, msg_qnum=%u"
+              ", msg_qbytes=%u, msg_lspid=%d, msg_lrpid=%d\\}\\) = %d\n",
+              id,
+              str_ipc_64,
+              str_ipc_cmd,
+              (unsigned) ds->msg_perm.uid,
+              (unsigned) ds->msg_perm.gid,
+              (unsigned) ds->msg_perm.mode,
+              (unsigned) ds->msg_perm.__key,
+              (unsigned) ds->msg_perm.cuid,
+              (unsigned) ds->msg_perm.cgid,
+              (unsigned) ds->msg_stime,
+              (unsigned) ds->msg_rtime,
+              (unsigned) ds->msg_ctime,
+              (unsigned) ds->msg_qnum,
+              (unsigned) ds->msg_qbytes,
+              (int) ds->msg_lspid,
+              (int) ds->msg_lrpid,
+              rc);
+}
+
 int
 main(void)
 {
@@ -98,7 +169,10 @@ main(void)
        static const int bogus_flags = 0xface1e55 & ~IPC_CREAT;
 
        int rc;
-       struct msqid_ds ds;
+       union {
+               struct msqid_ds ds;
+               struct msginfo info;
+       } buf;
 
        rc = msgget(bogus_key, bogus_flags);
        printf("msgget\\(%#llx, %s\\|%#04o\\) = %s\n",
@@ -123,39 +197,32 @@ main(void)
               sprintrc_grep(rc));
 #endif
 
-       if (msgctl(id, IPC_STAT, &ds))
+       rc = msgctl(id, IPC_STAT, &buf.ds);
+       if (rc < 0)
                perror_msg_and_skip("msgctl IPC_STAT");
-       printf("msgctl\\(%d, (%s\\|)?%s, \\{msg_perm=\\{uid=%u"
-              ", gid=%u, mode=%#o, key=%u, cuid=%u, cgid=%u\\}, msg_stime=%u"
-              ", msg_rtime=%u, msg_ctime=%u, msg_qnum=%u, msg_qbytes=%u"
-              ", msg_lspid=%u, msg_lrpid=%u\\}\\) = 0\n",
-              id, str_ipc_64, str_ipc_stat,
-              (unsigned) ds.msg_perm.uid, (unsigned) ds.msg_perm.gid,
-              (unsigned) ds.msg_perm.mode, (unsigned) ds.msg_perm.__key,
-              (unsigned) ds.msg_perm.cuid, (unsigned) ds.msg_perm.cgid,
-              (unsigned) ds.msg_stime, (unsigned) ds.msg_rtime,
-              (unsigned) ds.msg_ctime, (unsigned) ds.msg_qnum,
-              (unsigned) ds.msg_qbytes, (unsigned) ds.msg_lspid,
-              (unsigned) ds.msg_lrpid);
-
-       if (msgctl(id, IPC_SET, &ds))
+       print_msqid_ds(str_ipc_stat, &buf.ds, rc);
+
+       if (msgctl(id, IPC_SET, &buf.ds))
                perror_msg_and_skip("msgctl IPC_SET");
        printf("msgctl\\(%d, (%s\\|)?%s, \\{msg_perm=\\{uid=%u"
-              ", gid=%u, mode=%#o\\}, ...\\}\\) = 0\n",
-              id, str_ipc_64, str_ipc_set, (unsigned) ds.msg_perm.uid,
-              (unsigned) ds.msg_perm.gid, (unsigned) ds.msg_perm.mode);
+              ", gid=%u, mode=%#o\\}, msg_qbytes=%u\\}\\) = 0\n",
+              id, str_ipc_64, str_ipc_set,
+              (unsigned) buf.ds.msg_perm.uid,
+              (unsigned) buf.ds.msg_perm.gid,
+              (unsigned) buf.ds.msg_perm.mode,
+              (unsigned) buf.ds.msg_qbytes);
 
-       rc = msgctl(0, MSG_INFO, &ds);
-       printf("msgctl\\(0, (%s\\|)?%s, %p\\) = %s\n",
-              str_ipc_64, str_msg_info, &ds, sprintrc_grep(rc));
+       rc = msgctl(id, IPC_INFO, &buf.ds);
+       print_msginfo(str_ipc_info, &buf.info, rc);
 
-       rc = msgctl(id, MSG_STAT, &ds);
-       printf("msgctl\\(%d, (%s\\|)?%s, %p\\) = %s\n",
-              id, str_ipc_64, str_msg_stat, &ds, sprintrc_grep(rc));
+       rc = msgctl(id, MSG_INFO, &buf.ds);
+       print_msginfo(str_msg_info, &buf.info, rc);
 
-       rc = msgctl(id, MSG_STAT_ANY, &ds);
-       printf("msgctl\\(%d, (%s\\|)?%s, %p\\) = %s\n",
-              id, str_ipc_64, str_msg_stat_any, &ds, sprintrc_grep(rc));
+       rc = msgctl(id, MSG_STAT, &buf.ds);
+       print_msqid_ds(str_msg_stat, &buf.ds, rc);
+
+       rc = msgctl(id, MSG_STAT_ANY, &buf.ds);
+       print_msqid_ds(str_msg_stat_any, &buf.ds, rc);
 
        return 0;
 }
index c1112cb64a10856094c262b09f31fc64dd6ccf39..be35075554ad58796a8a8fe10972cb7871ba2ea4 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_msgbuf-Xraw +ipc_msgbuf.test -Xraw -a22); do not edit.
-set -- -Xraw -a22
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_msgbuf-Xraw +ipc_msgbuf.test -Xraw -a19); do not edit.
+set -- -Xraw -a19
 . "${srcdir=.}/ipc_msgbuf.test"
index 92525f94034a2cdf000da0e42a62fb238a9cb4c8..ffad6913652efb24342e4de6ff2f1c16ff72b30a 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -11,7 +11,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
 #include <sys/ipc.h>
 #include <sys/msg.h>
 #include <sys/stat.h>
index 7341f7284a92e9bdb181644144a052fcdd836229..365ed1779919bf8fdf9780cc8f1a3b88cfc25167 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2015 Andreas Schwab <schwab@suse.de>
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -11,6 +11,7 @@
 #include <errno.h>
 #include <stdio.h>
 #include <stdlib.h>
+#include <string.h>
 #include <sys/sem.h>
 
 #include "xlat.h"
@@ -24,7 +25,9 @@
 # define str_ipc_flags "0xface1e00"
 # define str_ipc_private "0"
 # define str_ipc_rmid "0"
+# define str_ipc_set "0x1"
 # define str_ipc_stat "0x2"
+# define str_ipc_info "0x3"
 # define str_sem_stat "0x12"
 # define str_sem_info "0x13"
 # define str_sem_stat_any "0x14"
@@ -35,7 +38,9 @@
        "0xface1e00 /\\* IPC_CREAT\\|IPC_EXCL\\|IPC_NOWAIT\\|0xface1000 \\*/"
 # define str_ipc_private "0 /\\* IPC_PRIVATE \\*/"
 # define str_ipc_rmid "0 /\\* IPC_RMID \\*/"
+# define str_ipc_set "0x1 /\\* IPC_SET \\*/"
 # define str_ipc_stat "0x2 /\\* IPC_STAT \\*/"
+# define str_ipc_info "0x3 /\\* IPC_INFO \\*/"
 # define str_sem_stat "0x12 /\\* SEM_STAT \\*/"
 # define str_sem_info "0x13 /\\* SEM_INFO \\*/"
 # define str_sem_stat_any "0x14 /\\* SEM_STAT_ANY \\*/"
@@ -45,7 +50,9 @@
 # define str_ipc_flags "IPC_CREAT\\|IPC_EXCL\\|IPC_NOWAIT\\|0xface1000"
 # define str_ipc_private "IPC_PRIVATE"
 # define str_ipc_rmid "IPC_RMID"
+# define str_ipc_set "IPC_SET"
 # define str_ipc_stat "IPC_STAT"
+# define str_ipc_info "IPC_INFO"
 # define str_sem_stat "SEM_STAT"
 # define str_sem_info "SEM_INFO"
 # define str_sem_stat_any "SEM_STAT_ANY"
@@ -72,6 +79,66 @@ cleanup(void)
        id = -1;
 }
 
+static void
+print_semid_ds(const char *const str_ipc_cmd,
+              const struct semid_ds *const ds,
+              const int rc)
+{
+       if (rc < 0) {
+               printf("semctl\\(%d, 0, (%s\\|)?%s, (%p|\\[%p\\])\\) = %s\n",
+                      id, str_ipc_64, str_ipc_cmd, &ds, &ds,
+                      sprintrc_grep(rc));
+               return;
+       }
+       printf("semctl\\(%d, 0, (%s\\|)?%s, \\{sem_perm=\\{uid=%u, gid=%u"
+               ", mode=%#o, key=%u, cuid=%u, cgid=%u\\}, sem_otime=%llu"
+               ", sem_ctime=%llu, sem_nsems=%llu\\}\\) = %d\n",
+               id,
+               str_ipc_64,
+               str_ipc_cmd,
+               (unsigned) ds->sem_perm.uid,
+               (unsigned) ds->sem_perm.gid,
+               (unsigned) ds->sem_perm.mode,
+               (unsigned) ds->sem_perm.__key,
+               (unsigned) ds->sem_perm.cuid,
+               (unsigned) ds->sem_perm.cgid,
+               (unsigned long long) ds->sem_otime,
+               (unsigned long long) ds->sem_ctime,
+               (unsigned long long) ds->sem_nsems,
+               rc);
+}
+
+static void
+print_sem_info(const char *const str_ipc_cmd,
+               const struct seminfo *const info,
+               const int rc)
+{
+       if (rc < 0) {
+               printf("semctl\\(%d, 0, (%s\\|)?%s, (%p|\\[%p\\])\\) = %s\n",
+                      id, str_ipc_64, str_ipc_cmd, &info, &info,
+                      sprintrc_grep(rc));
+               return;
+       }
+
+       printf("semctl\\(%d, 0, (%s\\|)?%s, \\{semmap=%d, semmni=%d"
+              ", semmns=%d, semmnu=%d, semmsl=%d, semopm=%d, semume=%d"
+              ", semusz=%d, semvmx=%d, semaem=%d\\}\\) = %d\n",
+              id,
+              str_ipc_64,
+              str_ipc_cmd,
+              info->semmap,
+              info->semmni,
+              info->semmns,
+              info->semmnu,
+              info->semmsl,
+              info->semopm,
+              info->semume,
+              info->semusz,
+              info->semvmx,
+              info->semaem,
+              rc);
+}
+
 int
 main(void)
 {
@@ -91,6 +158,8 @@ main(void)
        struct semid_ds ds;
        struct seminfo info;
 
+       memset(&ds, 0, sizeof(ds));
+
        rc = semget(bogus_key, bogus_size, bogus_flags);
        printf("semget\\(%#llx, %d, %s\\|%#04o\\) = %s\n",
               zero_extend_signed_to_ull(bogus_key), bogus_size,
@@ -108,25 +177,41 @@ main(void)
               bogus_semid, bogus_semnum, str_ipc_64, str_bogus_cmd,
               bogus_arg, bogus_arg, sprintrc_grep(rc));
 
+       un.__buf = &info;
+       rc = semctl(id, 0, IPC_INFO, un);
+        print_sem_info(str_ipc_info, &info, rc);
+
+       rc = semctl(id, 0, SEM_INFO, un);
+        print_sem_info(str_sem_info, &info, rc);
+
        un.buf = &ds;
-       if (semctl(id, 0, IPC_STAT, un))
+       rc = semctl(id, 0, IPC_STAT, un);
+       if (rc < 0)
                perror_msg_and_skip("semctl IPC_STAT");
-       printf("semctl\\(%d, 0, (%s\\|)?%s, \\[?%p\\]?\\) = 0\n",
-              id, str_ipc_64, str_ipc_stat, &ds);
+       print_semid_ds(str_ipc_stat, &ds, rc);
 
-       un.__buf = &info;
-       rc = semctl(0, 0, SEM_INFO, un);
-       printf("semctl\\(0, 0, (%s\\|)?%s, \\[?%p\\]?\\) = %s\n",
-              str_ipc_64, str_sem_info, &info, sprintrc_grep(rc));
+       if (semctl(id, 0, IPC_SET, un))
+               perror_msg_and_skip("semctl IPC_SET");
+       printf("semctl\\(%d, 0, (%s\\|)?%s, \\{sem_perm=\\{uid=%u, gid=%u"
+              ", mode=%#o\\}\\}\\) = 0\n",
+              id, str_ipc_64, str_ipc_set,
+              (unsigned) ds.sem_perm.uid,
+              (unsigned) ds.sem_perm.gid,
+              (unsigned) ds.sem_perm.mode);
 
-       un.buf = &ds;
        rc = semctl(id, 0, SEM_STAT, un);
-       printf("semctl\\(%d, 0, (%s\\|)?%s, \\[?%p\\]?\\) = %s\n",
-              id, str_ipc_64, str_sem_stat, &ds, sprintrc_grep(rc));
+       print_semid_ds(str_sem_stat, &ds, rc);
 
+/*
+ * glibc fails to pass the buffer for SEM_STAT_ANY command,
+ * so the kernel receives garbage instead of un.buf address:
+ * https://sourceware.org/bugzilla/show_bug.cgi?id=26637
+ * musl doesn't pass the buffer either.
+ */
+#if 0
        rc = semctl(id, 0, SEM_STAT_ANY, un);
-       printf("semctl\\(%d, 0, (%s\\|)?%s, (%p|\\[(%p|NULL)\\]|NULL)\\) = %s\n",
-              id, str_ipc_64, str_sem_stat_any, &ds, &ds, sprintrc_grep(rc));
+       print_semid_ds(str_sem_stat_any, &ds, rc);
+#endif
 
        return 0;
 }
index d68c24620f6b3e8edc68a893104f16e59070edd6..1982162038d0b45fb4eeb8ec01acf06311d4487e 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_shm-Xabbrev +ipc.sh -Xabbrev -a29); do not edit.
-set -- -Xabbrev -a29
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_shm-Xabbrev +ipc.sh -Xabbrev -a26); do not edit.
+set -- -Xabbrev -a26
 . "${srcdir=.}/ipc.sh"
index 170adeee7bf03cee35c3acd5db06c9855244f19b..457ad6662bd318589da4cd83c5836882fb3f7e64 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_shm-Xverbose +ipc.sh -Xverbose -a36); do not edit.
-set -- -Xverbose -a36
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_shm-Xverbose +ipc.sh -Xverbose -a34); do not edit.
+set -- -Xverbose -a34
 . "${srcdir=.}/ipc.sh"
index 76c19d8d4b0ea6a989801d24b03521f25a1524e3..18de6bf1937efdfaf42fdf373f5754d825d2d123 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 # define SHM_STAT_ANY 15
 #endif
 
+#ifndef SHM_NORESERVE
+# define SHM_NORESERVE 010000
+#endif
+
 #include "xlat.h"
 #include "xlat/shm_resource_flags.h"
 
@@ -35,6 +39,7 @@
 # define str_ipc_rmid "0"
 # define str_ipc_set "0x1"
 # define str_ipc_stat "0x2"
+# define str_ipc_info "0x3"
 # define str_shm_stat "0xd"
 # define str_shm_info "0xe"
 # define str_shm_stat_any "0xf"
@@ -49,6 +54,7 @@
 # define str_ipc_rmid "0 /\\* IPC_RMID \\*/"
 # define str_ipc_set "0x1 /\\* IPC_SET \\*/"
 # define str_ipc_stat "0x2 /\\* IPC_STAT \\*/"
+# define str_ipc_info "0x3 /\\* IPC_INFO \\*/"
 # define str_shm_stat "0xd /\\* SHM_STAT \\*/"
 # define str_shm_info "0xe /\\* SHM_INFO \\*/"
 # define str_shm_stat_any "0xf /\\* SHM_STAT_ANY \\*/"
@@ -62,6 +68,7 @@
 # define str_ipc_rmid "IPC_RMID"
 # define str_ipc_set "IPC_SET"
 # define str_ipc_stat "IPC_STAT"
+# define str_ipc_info "IPC_INFO"
 # define str_shm_stat "SHM_STAT"
 # define str_shm_info "SHM_INFO"
 # define str_shm_stat_any "SHM_STAT_ANY"
 # define str_bogus_cmd "0xdefaced2 /\\* SHM_\\?\\?\\? \\*/"
 #endif
 
+#undef TEST_SHMCTL_BOGUS_ADDR
+
+/*
+ * Starting with commit glibc-2.32~80, on every 32-bit architecture
+ * where 32-bit time_t support is enabled, glibc tries to retrieve
+ * the data provided in the third argument of shmctl call.
+ */
+#if GLIBC_PREREQ_GE(2, 32) && defined __TIMESIZE && __TIMESIZE != 64
+# define TEST_SHMCTL_BOGUS_ADDR 0
+#endif
+
+#ifndef TEST_SHMCTL_BOGUS_ADDR
+# define TEST_SHMCTL_BOGUS_ADDR 1
+#endif
+
 static int id = -1;
 
 static void
@@ -80,6 +102,89 @@ cleanup(void)
        id = -1;
 }
 
+static void
+print_shmid_ds(const char *const str_ipc_cmd,
+              const struct shmid_ds *const ds,
+              const int rc)
+{
+       if (rc < 0) {
+               printf("shmctl\\(%d, (%s\\|)?%s, %p\\) = %s\n",
+                      id, str_ipc_64, str_ipc_cmd, ds, sprintrc_grep(rc));
+               return;
+       }
+       printf("shmctl\\(%d, (%s\\|)?%s, \\{shm_perm=\\{uid=%u, gid=%u"
+               ", mode=%#o, key=%u, cuid=%u, cgid=%u\\}, shm_segsz=%u"
+               ", shm_cpid=%d, shm_lpid=%d, shm_nattch=%u, shm_atime=%u"
+               ", shm_dtime=%u, shm_ctime=%u\\}\\) = %d\n",
+               id,
+               str_ipc_64,
+               str_ipc_cmd,
+               (unsigned) ds->shm_perm.uid,
+               (unsigned) ds->shm_perm.gid,
+               (unsigned) ds->shm_perm.mode,
+               (unsigned) ds->shm_perm.__key,
+               (unsigned) ds->shm_perm.cuid,
+               (unsigned) ds->shm_perm.cgid,
+               (unsigned) ds->shm_segsz,
+               (int) ds->shm_cpid,
+               (int) ds->shm_lpid,
+               (unsigned) ds->shm_nattch,
+               (unsigned) ds->shm_atime,
+               (unsigned) ds->shm_dtime,
+               (unsigned) ds->shm_ctime,
+               rc);
+}
+
+static void
+print_ipc_info(const char *const str_ipc_cmd,
+               const struct shminfo *const info,
+               const int rc)
+{
+       if (rc < 0) {
+               printf("shmctl\\(%d, (%s\\|)?%s, %p\\) = %s\n",
+                      id, str_ipc_64, str_ipc_cmd, info, sprintrc_grep(rc));
+               return;
+       }
+
+       printf("shmctl\\(%d, (%s\\|)?%s, \\{shmmax=%llu, shmmin=%llu"
+              ", shmmni=%llu, shmseg=%llu, shmall=%llu\\}\\) = %d\n",
+              id,
+              str_ipc_64,
+              str_ipc_cmd,
+              (unsigned long long) info->shmmax,
+              (unsigned long long) info->shmmin,
+              (unsigned long long) info->shmmni,
+              (unsigned long long) info->shmseg,
+              (unsigned long long) info->shmall,
+              rc);
+}
+
+static void
+print_shm_info(const char *const str_ipc_cmd,
+              const struct shm_info *const info,
+              const int rc)
+{
+       if (rc < 0) {
+               printf("shmctl\\(%d, (%s\\|)?%s, %p\\) = %s\n",
+                      id, str_ipc_64, str_ipc_cmd, info, sprintrc_grep(rc));
+               return;
+       }
+
+       printf("shmctl\\(%d, (%s\\|)?%s, \\{used_ids=%d, shm_tot=%llu"
+              ", shm_rss=%llu, shm_swp=%llu, swap_attempts=%llu"
+              ", swap_successes=%llu\\}\\) = %d\n",
+              id,
+              str_ipc_64,
+              str_ipc_cmd,
+              info->used_ids,
+              (unsigned long long) info->shm_tot,
+              (unsigned long long) info->shm_rss,
+              (unsigned long long) info->shm_swp,
+              (unsigned long long) info->swap_attempts,
+              (unsigned long long) info->swap_successes,
+              rc);
+}
+
 int
 main(void)
 {
@@ -88,7 +193,9 @@ main(void)
        static const key_t bogus_key = (key_t) 0xeca86420fdb97531ULL;
        static const int bogus_id = 0xdefaced1;
        static const int bogus_cmd = 0xdefaced2;
+#if TEST_SHMCTL_BOGUS_ADDR
        static void * const bogus_addr = (void *) -1L;
+#endif
        static const size_t bogus_size =
        /*
         * musl sets size to SIZE_MAX if size argument is greater than
@@ -105,7 +212,11 @@ main(void)
        static const unsigned int huge_flags = 21 << SHM_HUGE_SHIFT;
        int bogus_flags;
        int rc;
-       struct shmid_ds ds;
+       union {
+               struct shmid_ds ds;
+               struct shminfo ipc_info;
+               struct shm_info shm_info;
+       } buf;
 
        rc = shmget(bogus_key, bogus_size, 0);
        printf("shmget\\(%#llx, %zu, 000\\) = %s\n",
@@ -156,45 +267,38 @@ main(void)
        printf("shmctl\\(%d, (%s\\|)?%s, NULL\\) = %s\n",
               bogus_id, str_ipc_64, str_bogus_cmd, sprintrc_grep(rc));
 
+#if TEST_SHMCTL_BOGUS_ADDR
        rc = shmctl(bogus_id, IPC_STAT, bogus_addr);
        printf("shmctl\\(%d, (%s\\|)?%s, %p\\) = %s\n",
               bogus_id, str_ipc_64, str_ipc_stat, bogus_addr,
               sprintrc_grep(rc));
+#endif
 
-       if (shmctl(id, IPC_STAT, &ds))
+       rc = shmctl(id, IPC_STAT, &buf.ds);
+       if (rc < 0)
                perror_msg_and_skip("shmctl IPC_STAT");
-       printf("shmctl\\(%d, (%s\\|)?%s, \\{shm_perm=\\{uid=%u, gid=%u, "
-               "mode=%#o, key=%u, cuid=%u, cgid=%u\\}, shm_segsz=%u, shm_cpid=%u, "
-               "shm_lpid=%u, shm_nattch=%u, shm_atime=%u, shm_dtime=%u, "
-               "shm_ctime=%u\\}\\) = 0\n",
-               id, str_ipc_64, str_ipc_stat,
-               (unsigned) ds.shm_perm.uid, (unsigned) ds.shm_perm.gid,
-               (unsigned) ds.shm_perm.mode, (unsigned) ds.shm_perm.__key,
-               (unsigned) ds.shm_perm.cuid, (unsigned) ds.shm_perm.cgid,
-               (unsigned) ds.shm_segsz, (unsigned) ds.shm_cpid,
-               (unsigned) ds.shm_lpid, (unsigned) ds.shm_nattch,
-               (unsigned) ds.shm_atime, (unsigned) ds.shm_dtime,
-               (unsigned) ds. shm_ctime);
-
-       if (shmctl(id, IPC_SET, &ds))
+       print_shmid_ds(str_ipc_stat, &buf.ds, rc);
+
+       if (shmctl(id, IPC_SET, &buf.ds))
                perror_msg_and_skip("shmctl IPC_SET");
        printf("shmctl\\(%d, (%s\\|)?%s, \\{shm_perm=\\{uid=%u, gid=%u"
-              ", mode=%#o\\}, ...\\}\\) = 0\n",
+              ", mode=%#o\\}\\}\\) = 0\n",
               id, str_ipc_64, str_ipc_set,
-              (unsigned) ds.shm_perm.uid, (unsigned) ds.shm_perm.gid,
-              (unsigned) ds.shm_perm.mode);
+              (unsigned) buf.ds.shm_perm.uid,
+              (unsigned) buf.ds.shm_perm.gid,
+              (unsigned) buf.ds.shm_perm.mode);
 
-       rc = shmctl(0, SHM_INFO, &ds);
-       printf("shmctl\\(0, (%s\\|)?%s, %p\\) = %s\n",
-              str_ipc_64, str_shm_info, &ds, sprintrc_grep(rc));
+       rc = shmctl(id, IPC_INFO, &buf.ds);
+       print_ipc_info(str_ipc_info, &buf.ipc_info, rc);
 
-       rc = shmctl(id, SHM_STAT, &ds);
-       printf("shmctl\\(%d, (%s\\|)?%s, %p\\) = %s\n",
-              id, str_ipc_64, str_shm_stat, &ds, sprintrc_grep(rc));
+       rc = shmctl(id, SHM_INFO, &buf.ds);
+       print_shm_info(str_shm_info, &buf.shm_info, rc);
 
-       rc = shmctl(id, SHM_STAT_ANY, &ds);
-       printf("shmctl\\(%d, (%s\\|)?%s, %p\\) = %s\n",
-              id, str_ipc_64, str_shm_stat_any, &ds, sprintrc_grep(rc));
+       rc = shmctl(id, SHM_STAT, &buf.ds);
+       print_shmid_ds(str_shm_stat, &buf.ds, rc);
+
+       rc = shmctl(id, SHM_STAT_ANY, &buf.ds);
+       print_shmid_ds(str_shm_stat_any, &buf.ds, rc);
 
        return 0;
 }
index 2e697d3f4e5aeb973f95ad65538821d401d9b14a..72f1571ff160527dcd7f0ee1285fc607f8c807b6 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_shm +ipc.sh -a29); do not edit.
-set -- -a29
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_shm +ipc.sh -a26); do not edit.
+set -- -a26
 . "${srcdir=.}/ipc.sh"
diff --git a/tests-m32/kcmp-y--pidns-translation.c b/tests-m32/kcmp-y--pidns-translation.c
new file mode 100644 (file)
index 0000000..f54d94c
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "kcmp-y.c"
diff --git a/tests-m32/kcmp-y--pidns-translation.gen.test b/tests-m32/kcmp-y--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..61c3ac9
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kcmp-y--pidns-translation test_pidns -a22 -y -e trace=kcmp); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a22 -y -e trace=kcmp
index 4e3433ee00fb9053937facdd68fdfdde7a5ec2d5..07a446ee0b2b6d27e2adf2320624cbcfcd153e19 100644 (file)
@@ -2,16 +2,15 @@
  * Check decoding of kcmp syscall.
  *
  * Copyright (c) 2016-2017 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-
-#include <asm/unistd.h>
 #include "scno.h"
+#include "pidns.h"
 
 #ifdef __NR_kcmp
 
@@ -65,7 +64,26 @@ static const char zero_path[] = "/dev/zero";
 static void
 printpidfd(const char *prefix, pid_t pid, unsigned fd)
 {
-       printf("%s%d", prefix, fd);
+       const char *path = NULL;
+
+# if VERBOSE_FD
+       if (pid == getpid()) {
+               switch (fd)
+               {
+               case NULL_FD:
+                       path = null_path;
+                       break;
+               case ZERO_FD:
+                       path = zero_path;
+                       break;
+               }
+       }
+# endif
+
+       if (path)
+               printf("%s%d<%s>", prefix, fd, path);
+       else
+               printf("%s%d", prefix, fd);
 }
 
 /*
@@ -83,7 +101,11 @@ do_kcmp(kernel_ulong_t pid1, kernel_ulong_t pid2, kernel_ulong_t type,
        rc = syscall(__NR_kcmp, pid1, pid2, type, idx1, idx2);
        errstr = sprintrc(rc);
 
-       printf("kcmp(%d, %d, ", (int) pid1, (int) pid2);
+       const char *pid_str = pidns_pid2str(PT_TGID);
+       pidns_print_leader();
+       printf("kcmp(%d%s, %d%s, ",
+               (int) pid1, (int) pid1 == getpid() ? pid_str : "",
+               (int) pid2, (int) pid2 == getpid() ? pid_str : "");
 
        if (type_str)
                printf("%s", type_str);
@@ -128,6 +150,8 @@ do_kcmp(kernel_ulong_t pid1, kernel_ulong_t pid2, kernel_ulong_t type,
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        static const kernel_ulong_t bogus_pid1 =
                (kernel_ulong_t) 0xdeadca75face1057ULL;
        static const kernel_ulong_t bogus_pid2 =
@@ -180,7 +204,7 @@ main(void)
        /* KCMP_FILE is the only type which has additional args */
        do_kcmp(3141592653U, 2718281828U, ARG_STR(KCMP_FILE), bogus_idx1,
                bogus_idx2);
-       do_kcmp(-1, -1, ARG_STR(KCMP_FILE), NULL_FD, ZERO_FD);
+       do_kcmp(getpid(), getpid(), ARG_STR(KCMP_FILE), NULL_FD, ZERO_FD);
 
        /* Types without additional args */
        do_kcmp(-1, -1, ARG_STR(KCMP_VM), bogus_idx1, bogus_idx2);
@@ -199,10 +223,11 @@ main(void)
        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,
+               do_kcmp(getpid(), -1, ARG_STR(KCMP_EPOLL_TFD), NULL_FD,
                        (uintptr_t) slot, 1);
        }
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
 
        return 0;
index 4814414de22b4733b087f6541acfb86141f32dd2..d4b79a6d97ab885268e10ff548437655a9143baf 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Check decoding of SPARC-specific kern_features syscall.
  *
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -9,7 +9,6 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
 
 #include "raw_syscall.h"
 #include "scno.h"
diff --git a/tests-m32/kernel_old_timespec.h b/tests-m32/kernel_old_timespec.h
new file mode 100644 (file)
index 0000000..fac6d7e
--- /dev/null
@@ -0,0 +1,20 @@
+/*
+ * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#ifndef STRACE_KERNEL_OLD_TIMESPEC_H
+# define STRACE_KERNEL_OLD_TIMESPEC_H
+
+typedef struct {
+# if SIZEOF_KERNEL_LONG_T == 4 || defined LINUX_MIPSN32
+       int
+# else
+       long long
+# endif
+       tv_sec, tv_nsec;
+} kernel_old_timespec_t;
+
+#endif /* !STRACE_KERNEL_OLD_TIMESPEC_H */
diff --git a/tests-m32/kernel_old_timex.h b/tests-m32/kernel_old_timex.h
new file mode 100644 (file)
index 0000000..2591a1a
--- /dev/null
@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#ifndef STRACE_KERNEL_OLD_TIMEX_H
+# define STRACE_KERNEL_OLD_TIMEX_H
+
+# define HAVE_ARCH_TIME32_SYSCALLS 1
+# include "kernel_timex.h"
+# undef HAVE_ARCH_TIME32_SYSCALLS
+
+typedef
+# if SIZEOF_KERNEL_LONG_T == 4 || defined LINUX_MIPSN32
+kernel_timex32_t
+# elif defined __sparc__
+kernel_sparc64_timex_t
+# else
+kernel_timex64_t
+# endif
+kernel_old_timex_t;
+
+#endif /* !STRACE_KERNEL_OLD_TIMEX_H */
index 6e1c0eacba85eccea6e1b34dbc2f2b608c0bd54d..692f94a1e2a08155eedfa1baf5a5aac8ad698ecb 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Check kernel version decoding.
  *
- * Copyright (c) 2015-2019 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -15,7 +15,6 @@
 #include <string.h>
 #include <unistd.h>
 
-#include <asm/unistd.h>
 #include "scno.h"
 
 #ifdef HAVE_LINUX_BPF_H
@@ -35,9 +34,9 @@ static void
 print_bpf_attr(void)
 {
 #if XLAT_RAW
-       printf("{prog_type=0x16"
+       printf("{prog_type=0x1f"
 #else
-       printf("{prog_type=0x16 /* BPF_PROG_TYPE_??? */"
+       printf("{prog_type=0x1f /* BPF_PROG_TYPE_??? */"
 #endif
                ", insn_cnt=3134983661"
                ", insns=NULL"
@@ -70,7 +69,9 @@ print_bpf_attr(void)
                ", func_info_cnt=0"
                ", line_info_rec_size=0"
                ", line_info=NULL"
-               ", line_info_cnt=0}");
+               ", line_info_cnt=0"
+               ", attach_btf_id=0"
+               ", attach_prog_fd=0}");
 }
 
 int
@@ -78,7 +79,7 @@ main(void)
 {
        long ret;
        struct BPF_PROG_LOAD_struct prog = {
-               .prog_type = 22,
+               .prog_type = 31,
                .insn_cnt = 0xbadc0ded,
                .insns = 0,
                .license = 0,
index 5e5d91eddb65c6e5f01253311f09d839ca0919e4..3ab525877cb13dd1fe929335dbfc8fbee8bd5b10 100644 (file)
@@ -2,14 +2,13 @@
  * Check decoding of kexec_file_load syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
 #include "scno.h"
 
 #ifdef __NR_kexec_file_load
index ae7a72c0512351d7753ab57798349e2fc42ef08f..db515143553a4933b0948e676f15baa1ea1383df 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of kexec_load syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_kexec_load
 
index ccfd3b44c3c263caa9e09bfd4f22207d8f6efac7..6dc30fb90b8240cc9c939ba11c7b406911faf08f 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of keyctl syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_keyctl
 
@@ -45,7 +45,33 @@ struct keyctl_kdf_params {
 };
 # endif
 
+# ifndef HAVE_STRUCT_KEYCTL_PKEY_QUERY
+struct keyctl_pkey_query {
+       uint32_t supported_ops;
+       uint32_t key_size;
+       uint16_t max_data_size;
+       uint16_t max_sig_size;
+       uint16_t max_enc_size;
+       uint16_t max_dec_size;
+       uint32_t __spare[10];
+};
+# endif
+
+# ifndef HAVE_STRUCT_KEYCTL_PKEY_PARAMS
+struct keyctl_pkey_params {
+       int32_t  key_id;
+       uint32_t in_len;
+       union {
+               uint32_t out_len;
+               uint32_t in2_len;
+       };
+       uint32_t __spare[7];
+};
+# endif
+
 # include "xlat.h"
+# include "xlat/keyctl_caps0.h"
+# include "xlat/keyctl_caps1.h"
 # include "xlat/keyctl_commands.h"
 
 # ifndef KEY_SPEC_REQKEY_AUTH_KEY
@@ -71,10 +97,13 @@ bool buf_in_arg;
 
 # if XLAT_RAW
 #  define XARG_STR(v_) (v_), STRINGIFY(v_)
+#  define XSTR(v_, s_) STRINGIFY(v_)
 # elif XLAT_VERBOSE
 #  define XARG_STR(v_) (v_), STRINGIFY(v_) " /* " #v_ " */"
+#  define XSTR(v_, s_) STRINGIFY(v_) " /* " s_ " */"
 # else
 #  define XARG_STR ARG_STR
+#  define XSTR(v_, s_) s_
 # endif
 
 /*
@@ -125,6 +154,21 @@ print_arg(kernel_ulong_t arg, const char *str, const char *fmt, size_t size,
        }
 }
 
+void
+print_flags(const struct xlat *xlat, unsigned long long flags,
+           const char *const dflt)
+{
+# if XLAT_RAW
+       printf("%#llx", flags);
+# elif XLAT_VERBOSE
+       printf("%#llx /* ", flags);
+       printflags(xlat, flags, dflt);
+       printf(" */");
+# else
+       printflags(xlat, flags, dflt);
+# endif
+}
+
 /*
  * Arguments are passed as sz, val, str, fmt. Arguments are read until 4
  * arguments are retrieved or size of 0 is occurred.
@@ -268,6 +312,51 @@ kckdfp_to_str(struct keyctl_kdf_params *kdf, bool deref_hash, bool deref_oi,
        return buf;
 }
 
+const char *
+kcpp_to_str(struct keyctl_pkey_params *params, bool out, const char *key_str,
+           bool print_spare)
+{
+       static char buf[4096];
+
+       size_t left = sizeof(buf);
+       char *pos = buf;
+
+       append_str(&pos, &left, "{key_id=");
+
+# if XLAT_RAW
+       append_str(&pos, &left, "%d", params->key_id);
+# elif XLAT_VERBOSE
+       if (key_str)
+               append_str(&pos, &left, "%d /* %s */", params->key_id, key_str);
+       else
+               append_str(&pos, &left, "%d", params->key_id);
+# else
+       if (key_str)
+               append_str(&pos, &left, "%s", key_str);
+       else
+               append_str(&pos, &left, "%d", params->key_id);
+# endif
+
+       append_str(&pos, &left, ", in_len=%u, %s=%u",
+                  params->in_len,
+                  out ? "out_len" : "in2_len", params->out_len);
+
+       if (print_spare) {
+               append_str(&pos, &left, ", __spare=[");
+
+               for (size_t i = 0; i < ARRAY_SIZE(params->__spare); i++) {
+                       append_str(&pos, &left, "%s%#x",
+                                  i ? ", " : "", params->__spare[i]);
+               }
+
+               append_str(&pos, &left, "]");
+       }
+
+       append_str(&pos, &left, "}");
+
+       return buf;
+}
+
 int
 main(void)
 {
@@ -358,8 +447,10 @@ main(void)
        char *bogus_buf2 = tail_alloc(256);
        char *key_iov_str1;
        char *key_iov_str2 = tail_alloc(4096);
+       const char *errstr;
        ssize_t ret;
        ssize_t kis_size = 0;
+       long rc;
        size_t i;
 
        key_iov[0].iov_base = short_type;
@@ -1092,6 +1183,222 @@ main(void)
 
        nul_terminated_buf = true;
 
+       /* KEYCTL_PKEY_QUERY */
+       do_keyctl(ARG_STR(KEYCTL_PKEY_QUERY),
+                 sizeof(int32_t), bogus_key2, NULL, "%d",
+                 sizeof(kernel_ulong_t),
+                       (kernel_ulong_t) 0xfeedf157badc0dedLLU, NULL,
+                       kulong_fmt,
+                 sizeof(char *), bogus_str, NULL, ptr_fmt,
+                 sizeof(char *), ARG_STR(NULL), ptr_fmt);
+
+       struct keyctl_pkey_query query;
+       do_keyctl(ARG_STR(KEYCTL_PKEY_QUERY),
+                 sizeof(int32_t), XARG_STR(KEY_SPEC_THREAD_KEYRING), "%d",
+                 sizeof(kernel_ulong_t), (kernel_ulong_t) 0, NULL, kulong_fmt,
+                 sizeof(char *), "x\377\0\1", "\"x\\377\"", NULL,
+                 sizeof(&query), &query, NULL, ptr_fmt);
+
+       /*
+        * KEYCTL_PKEY_ENCRYPT, KEYCTL_PKEY_DECRYPT, KEYCTL_PKEY_SIGN,
+        * KEYCTL_PKEY_VERIFY
+        */
+       static const struct {
+               int op;
+               const char *str;
+               bool out;
+       } pkey_ops[] = {
+               { ARG_STR(KEYCTL_PKEY_ENCRYPT), true },
+               { ARG_STR(KEYCTL_PKEY_DECRYPT), true },
+               { ARG_STR(KEYCTL_PKEY_SIGN),    true },
+               { ARG_STR(KEYCTL_PKEY_VERIFY),  false },
+       };
+       static const char pkey_str1[] = STR32 "xxx";
+       static const char pkey_str2[] = "\1\2HAI\255\0\1";
+       static struct {
+               struct keyctl_pkey_params params;
+               const char * key_str;
+               bool print_spare;
+               const char *str1;
+               const char *str2;
+       } pkey_vecs[] = {
+               { { KEY_SPEC_PROCESS_KEYRING, 0, { .out_len = 0 } },
+                 "KEY_SPEC_PROCESS_KEYRING", false, "\"\"", "\"\"" },
+               { { 0, 0, { .out_len = 0 }, .__spare = { 1 } },
+                 NULL, true, "\"\"", "\"\"" },
+               { { 0xdeadc0deU, 10, { .out_len = 10 },
+                   .__spare = { 0, 0xfacefeed } },
+                 NULL, true, "\"AbCdEfGhIj\"", NULL },
+               { { 0xdeadc0deU, sizeof(pkey_str1),
+                   { .out_len = sizeof(pkey_str2) - 1 },
+                   .__spare = { [6] = 0xdec0ded } },
+                 NULL, true,
+                 "\"AbCdEfGhIj\"...", "\"\\1\\2HAI\\255\\0\\1\"" },
+       };
+
+       char *pkey1 = tail_memdup(pkey_str1, sizeof(pkey_str1) - 1);
+       char *pkey2 = tail_memdup(pkey_str2, sizeof(pkey_str2) - 1);
+       struct keyctl_pkey_params *pkey_params =
+               tail_alloc(sizeof(*pkey_params));
+
+       for (i = 0; i < ARRAY_SIZE(pkey_ops); i++) {
+               do_keyctl(pkey_ops[i].op, pkey_ops[i].str,
+                         sizeof(char *), ARG_STR(NULL), ptr_fmt,
+                         sizeof(char *), ARG_STR(NULL), ptr_fmt,
+                         sizeof(char *), ARG_STR(NULL), ptr_fmt,
+                         sizeof(char *), ARG_STR(NULL), ptr_fmt);
+
+               do_keyctl(pkey_ops[i].op, pkey_ops[i].str,
+                         sizeof(char *), (uint32_t *) pkey_params + 1, NULL,
+                               ptr_fmt,
+                         sizeof(char *), "x\377\0\1", "\"x\\377\"", ptr_fmt,
+                         sizeof(char *), pkey1, NULL, ptr_fmt,
+                         sizeof(char *), pkey2, NULL, ptr_fmt);
+
+               for (size_t j = 0; j < ARRAY_SIZE(pkey_vecs); j++) {
+                       memcpy(pkey_params, &pkey_vecs[j].params,
+                              sizeof(*pkey_params));
+                       do_keyctl(pkey_ops[i].op, pkey_ops[i].str,
+                                 sizeof(char *), pkey_params,
+                                       kcpp_to_str(pkey_params,
+                                                   pkey_ops[i].out,
+                                                   pkey_vecs[j].key_str,
+                                                   pkey_vecs[j].print_spare),
+                                       ptr_fmt,
+                                 sizeof(char *), "", "\"\"", ptr_fmt,
+                                 sizeof(char *), pkey1, pkey_vecs[j].str1,
+                                       ptr_fmt,
+                                 sizeof(char *), pkey2,
+                                       pkey_ops[i].out ? NULL
+                                                       : pkey_vecs[j].str2,
+                                       ptr_fmt);
+               }
+       }
+
+       /* KEYCTL_MOVE */
+       static const struct {
+               kernel_ulong_t key;
+               const char *str;
+       } move_keys[] = {
+                 { 0xbadc0ded, "-1159983635" },
+                 { XARG_STR(KEY_SPEC_THREAD_KEYRING) },
+       };
+       static const struct {
+               kernel_ulong_t val;
+               const char *str;
+       } move_flags[] = {
+               { (kernel_ulong_t) 0xbadc0ded00000000ULL, "0" },
+               { 1, XSTR(0x1, "KEYCTL_MOVE_EXCL") },
+               { (kernel_ulong_t) 0xbadc0ded00000001ULL,
+                 XSTR(0x1, "KEYCTL_MOVE_EXCL") },
+               { (kernel_ulong_t) 0xfffffffffffffffeULL,
+# if !XLAT_RAW
+                 "0xfffffffe /* KEYCTL_MOVE_??? */"
+# else
+                 "0xfffffffe"
+# endif
+                },
+               { (kernel_ulong_t) 0xffffffffffffffffULL,
+                 XSTR(0xffffffff, "KEYCTL_MOVE_EXCL|0xfffffffe") },
+       };
+
+       for (i = 0; i < ARRAY_SIZE(move_keys) * ARRAY_SIZE(move_flags); i++) {
+               do_keyctl(ARG_STR(KEYCTL_MOVE),
+                         sizeof(kernel_ulong_t),
+                               move_keys[i % ARRAY_SIZE(move_keys)].key,
+                               move_keys[i % ARRAY_SIZE(move_keys)].str,
+                               kulong_fmt,
+                         sizeof(kernel_ulong_t),
+                               move_keys[(i + 1) % ARRAY_SIZE(move_keys)].key,
+                               move_keys[(i + 1) % ARRAY_SIZE(move_keys)].str,
+                               kulong_fmt,
+                         sizeof(kernel_ulong_t),
+                               move_keys[(i + 2) % ARRAY_SIZE(move_keys)].key,
+                               move_keys[(i + 2) % ARRAY_SIZE(move_keys)].str,
+                               kulong_fmt,
+                         sizeof(kernel_ulong_t),
+                               move_flags[i % ARRAY_SIZE(move_flags)].val,
+                               move_flags[i % ARRAY_SIZE(move_flags)].str,
+                               kulong_fmt);
+       }
+
+       /* KEYCTL_CAPABILITIES */
+       unsigned char *caps1 = tail_alloc(1);
+       unsigned char *caps2 = tail_alloc(2);
+       unsigned char *caps4 = tail_alloc(4);
+
+       do_keyctl(ARG_STR(KEYCTL_CAPABILITIES),
+                 sizeof(unsigned char *), ARG_STR(NULL), ptr_fmt,
+                 sizeof(kernel_ulong_t),
+                       (kernel_ulong_t) 0xfeedf157badc0dedLLU, NULL,
+                       ksize_fmt,
+                 0);
+
+       const kernel_ulong_t bad_len = (kernel_ulong_t) 0xbadc0ded00000001LLU;
+       rc = syscall(__NR_keyctl, KEYCTL_CAPABILITIES, caps1, bad_len);
+       errstr = sprintrc(rc);
+       printf("keyctl(" XSTR(0x1f, "KEYCTL_CAPABILITIES") ", ");
+       if (rc >= 0) {
+               printf("[");
+               if (rc >= 1)
+                       print_flags(keyctl_caps0, caps1[0], "KEYCTL_CAPS0_???");
+               printf("]");
+       } else {
+               printf("%p", caps1);
+       }
+       printf(", %llu) = %s\n", (unsigned long long) bad_len, errstr);
+
+       rc = syscall(__NR_keyctl, KEYCTL_CAPABILITIES, caps1, 2);
+       errstr = sprintrc(rc);
+       printf("keyctl(" XSTR(0x1f, "KEYCTL_CAPABILITIES") ", ");
+       if (rc >= 0) {
+               printf("[");
+               if (rc == 1)
+                       print_flags(keyctl_caps0, caps1[0], "KEYCTL_CAPS0_???");
+               printf("]");
+       } else {
+               printf("%p", caps1);
+       }
+       printf(", 2) = %s\n", errstr);
+
+       rc = syscall(__NR_keyctl, KEYCTL_CAPABILITIES, caps2, 2);
+       errstr = sprintrc(rc);
+       printf("keyctl(" XSTR(0x1f, "KEYCTL_CAPABILITIES") ", ");
+       if (rc >= 0) {
+               printf("[");
+               if (rc >= 1)
+                       print_flags(keyctl_caps0, caps2[0], "KEYCTL_CAPS0_???");
+               if (rc >= 2) {
+                       printf(", ");
+                       print_flags(keyctl_caps1, caps2[1], "KEYCTL_CAPS1_???");
+               }
+               printf("]");
+       } else {
+               printf("%p", caps2);
+       }
+       printf(", 2) = %s\n", errstr);
+
+       rc = syscall(__NR_keyctl, KEYCTL_CAPABILITIES, caps4, 4);
+       errstr = sprintrc(rc);
+       printf("keyctl(" XSTR(0x1f, "KEYCTL_CAPABILITIES") ", ");
+       if (rc >= 0) {
+               printf("[");
+               if (rc >= 1)
+                       print_flags(keyctl_caps0, caps4[0], "KEYCTL_CAPS0_???");
+               if (rc >= 2) {
+                       printf(", ");
+                       print_flags(keyctl_caps1, caps4[1], "KEYCTL_CAPS1_???");
+               }
+               if (rc >= 3)
+                       printf(", %hhx", caps4[2]);
+               if (rc >= 4)
+                       printf(", %hhx", caps4[3]);
+               printf("]");
+       } else {
+               printf("%p", caps4);
+       }
+       printf(", 4) = %s\n", errstr);
+
        puts("+++ exited with 0 +++");
 
        return 0;
diff --git a/tests-m32/kill--pidns-translation.c b/tests-m32/kill--pidns-translation.c
new file mode 100644 (file)
index 0000000..4736ca1
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "kill.c"
diff --git a/tests-m32/kill--pidns-translation.gen.test b/tests-m32/kill--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..4e909e9
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kill--pidns-translation test_pidns -a12 -e trace=kill -esignal=none); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a12 -e trace=kill -esignal=none
index 4ef9b62833b3f23d735eb67f2630d2a45e9d9bff..653e945c26b0de80c1ba588c597fcaa68a881e42 100644 (file)
@@ -3,14 +3,15 @@
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Fei Jie <feij.fnst@cn.fujitsu.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
+#include "pidns.h"
 
 #ifdef __NR_kill
 
@@ -26,6 +27,8 @@ handler(int sig)
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        const struct sigaction act = { .sa_handler = handler };
        if (sigaction(SIGALRM, &act, NULL))
                perror_msg_and_fail("sigaction");
@@ -37,18 +40,23 @@ main(void)
                perror_msg_and_fail("sigprocmask");
 
        const int pid = getpid();
+       const char *pid_str = pidns_pid2str(PT_TGID);
        long rc = syscall(__NR_kill, pid, (long) 0xdefaced00000000ULL | SIGALRM);
-       printf("kill(%d, SIGALRM) = %ld\n", pid, rc);
+       pidns_print_leader();
+       printf("kill(%d%s, SIGALRM) = %ld\n", pid, pid_str, rc);
 
        const long big_pid = (long) 0xfacefeedbadc0dedULL;
        const long big_sig = (long) 0xdeadbeefcafef00dULL;
        rc = syscall(__NR_kill, big_pid, big_sig);
+       pidns_print_leader();
        printf("kill(%d, %d) = %ld %s (%m)\n",
               (int) big_pid, (int) big_sig, rc, errno2name());
 
        rc = syscall(__NR_kill, (long) 0xdefaced00000000ULL | pid, 0);
-       printf("kill(%d, 0) = %ld\n", pid, rc);
+       pidns_print_leader();
+       printf("kill(%d%s, 0) = %ld\n", pid, pid_str, rc);
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
index 4319bdb2a3b003f517a05549ffbc689360a33aba..0716db70002f215517cc893a0e1ee11ab062f3eb 100644 (file)
@@ -2,7 +2,7 @@
  * Validate syscallent.h file.
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -12,7 +12,7 @@
 #include "sysent.h"
 #include <stdio.h>
 #include <string.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 #include "sysent_shorthand_defs.h"
 
diff --git a/tests-m32/ksysent.gen.test b/tests-m32/ksysent.gen.test
new file mode 100755 (executable)
index 0000000..c63ea44
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ksysent ../$NAME ); do not edit.
+. "${srcdir=.}/init.sh"
+../$NAME 
index c35ba22fe93ee22767a78f221a4e0c43d4ff41dc..92069e7560aff2a59619e7e347c5d157efcf2f0b 100644 (file)
@@ -1,6 +1,6 @@
 #!/bin/sed -rnf
 #
-# Copyright (c) 2015-2018 The strace developers.
+# Copyright (c) 2015-2019 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -8,6 +8,9 @@
 # should not have been exported at all
 /#define[[:space:]]+__NR_(sys_epoll_|arch_specific_syscall|arm_sync_file_range|syscalls|syscall_count|syscall_max|available|reserved|unused)/d
 
+# remove new aliases to traditional names on alpha
+/#define[[:space:]]+__NR_get[gup]id[[:space:]]+__NR_getx[gup]id$/d
+
 # should not have been named this way
 s/__NR_(arm|xtensa)_fadvise64_64/__NR_fadvise64_64/
 
@@ -17,4 +20,12 @@ s/__NR_madvise1/__NR_madvise/
 s/__NR_paccept/__NR_accept4/
 
 # generate
+
+# prioritize __NR_umount over __NR_umount2
+s/#define[[:space:]]+__NR_(umount)2([[:space:]].*)?$/#if defined __NR_\12 \&\& (!defined __NR_\1 || __NR_\1 != __NR_\12)\n[__NR_\12 \& 0xffff] = "\12",\n#endif/p
+
+# prioritize __NR_osf_shmat over __NR_shmat
+s/#define[[:space:]]+__NR_(shmat)([[:space:]].*)?$/#if defined __NR_\1 \&\& (!defined __NR_osf_\1 || __NR_osf_\1 != __NR_\1)\n[__NR_\1 \& 0xffff] = "\1",\n#endif/p
+
+# generic
 s/#define[[:space:]]+__NR_([a-z_][^[:space:]]+)([[:space:]].*)?$/#ifdef __NR_\1\n[__NR_\1 \& 0xffff] = "\1",\n#endif/p
diff --git a/tests-m32/ksysent.test b/tests-m32/ksysent.test
deleted file mode 100755 (executable)
index 347ed67..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/sh
-#
-# Copyright (c) 2015-2018 The strace developers.
-# All rights reserved.
-#
-# SPDX-License-Identifier: GPL-2.0-or-later
-
-# Validate syscallent.h
-
-./ksysent
index c9008219b6d5a2606552eefd90890359f885ddb2..b8d40945672faa3a5c287602108581631e8c9d82 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_lchown
 
index 1a505e1f9151cf75e8604946d08ca6fe67529b94..c2542a82278b131af5f54d24d154472feeaa70cf 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_lchown32
 
index 0f23597dcf07b9b1fa20abefac91fc3d85101957..4dbe4edf89e7ed1b999435d9609b0dac9db3ef9c 100644 (file)
@@ -2,6 +2,7 @@
  * Wrappers for recvmmsg and sendmmsg syscalls.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -9,7 +10,7 @@
 
 #include "tests.h"
 #include <errno.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifndef __NR_recvmmsg
 # define __NR_recvmmsg -1
index 34f65478731cdaf2ce01c4a3df665ccb4066fe13..6692d4b0e302e1527200c6ada23f1e1edb0c4a0b 100644 (file)
@@ -2,6 +2,7 @@
  * Invoke a socket syscall, either directly or via __NR_socketcall.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +11,7 @@
 #include "tests.h"
 #include <errno.h>
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 /*
  * Invoke a socket syscall, either directly or via __NR_socketcall.
index 357eb0becb86fe1ac1726e4247ef6e67b5fccec5..468086fe51c008bcd7561cd0a4c6b150a1842e8b 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_link
 
index 748ddf18181abea76bf7324f4697dedeedc125cf..7e348f120e21b55bc504047ffd3ea1a5922f5503 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_linkat
 
@@ -30,7 +30,7 @@ main(void)
        printf("linkat(%s, \"%s\", %s, \"%s\", %s) = %ld %s (%m)\n",
               "AT_FDCWD", sample_1, "AT_FDCWD", sample_2,
               "AT_SYMLINK_NOFOLLOW|AT_REMOVEDIR|AT_SYMLINK_FOLLOW"
-              "|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|0xffffe0ff",
+              "|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|AT_RECURSIVE|0xffff60ff",
               rc, errno2name());
 
        puts("+++ exited with 0 +++");
index 169fa913f94b41efad62b530fc5b796c256c1b3d..55e6336381aec1b963df57fc18fb5803b0845fd7 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR__llseek
 
index 652d3e6a414a0fdee7e4c3990a66b1cac1557c96..42e39c55d7dd0918cf42ebf7db0cba6d46d8f8b7 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Check handling of localtime() returning NULL in printleader().
  *
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -14,7 +14,7 @@
 #include <time.h>
 #include <unistd.h>
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 int
 main(void)
diff --git a/tests-m32/lock_file.c b/tests-m32/lock_file.c
new file mode 100644 (file)
index 0000000..56cf112
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/file.h>
+
+/* Obtain an exclusive lock on dirname(path_name)/lock_name file.  */
+int
+lock_file_by_dirname(const char *path_name, const char *lock_name)
+{
+       const char *slash = path_name ? strrchr(path_name, '/') : NULL;
+       const int plen = slash ? (int) (slash - path_name) + 1 : 0;
+
+       char *lock_file = NULL;
+       if (asprintf(&lock_file, "%.*s%s", plen, path_name, lock_name) < 0)
+               perror_msg_and_fail("asprintf");
+
+       int lock_fd = open(lock_file, O_RDONLY);
+       if (lock_fd < 0)
+               perror_msg_and_fail("open: %s", lock_file);
+
+       if (flock(lock_fd, LOCK_EX))
+               perror_msg_and_fail("flock: %s", lock_file);
+
+       free(lock_file);
+
+       return lock_fd;
+}
index 430ae135b21113fe1bd5d853cc54b26a4da26c58..9617a4caa9896918325ca67e5192f7c073e783a4 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of lookup_dcookie syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_lookup_dcookie
 
index e8b0bbb515dcc5f49a07235650ca546024b44b65..3e5d3ba9ca7ac7a31d6147339192593344cf2858 100755 (executable)
@@ -2,7 +2,7 @@
 #
 # Check tracing of looping threads.
 #
-# Copyright (c) 2009-2019 The strace developers.
+# Copyright (c) 2009-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -20,16 +20,16 @@ inc="$(nproc)"
 [ "$inc" -ge 1 ] || inc=1
 
 timeout_2="$(($TIMEOUT_DURATION/2))"
-timeout_8="$(($TIMEOUT_DURATION/8))"
+timeout_16="$(($TIMEOUT_DURATION/16))"
 nproc=1
 
-run_prog "../$NAME" "$timeout_8" "$nproc"
+run_prog "../$NAME" "$timeout_16" "$nproc"
 
 while :; do
-       run_strace -f -qq -enone -esignal=none "../$NAME" "$timeout_2" "$nproc"
+       run_strace --follow-forks -qq -enone -esignal=none "../$NAME" "$timeout_2" "$nproc"
 
        s1="$(date +%s)"
-       [ "$(($s1-$s0))" -lt "$timeout_8" ] ||
+       [ "$(($s1-$s0))" -lt "$timeout_16" ] ||
                break
 
        nproc="$(($nproc+$inc))"
index 0e12bf9ca4b9cfbbe777fbce164ee2f0f0720e21..f0d842d1f582ce45cf1b3760fa3e97bbc69f69a8 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_lseek
 
index 1a200fe7eb9011b261315fe03840c7593032b1f4..61c5cb538d4712787fefc9d630b16e7d8bf2a7d0 100644 (file)
@@ -1,13 +1,13 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_lstat
 
index 7231c491139852702048115d86f9b040b118e1ea..71155b6926ec0745d62cdbe000d50d374cd78f38 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (lstat -a32 -v -P stat.sample -P /dev/full); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (lstat -a31 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
+run_strace_match_diff -a31 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full
index 0c0cf8792e18729263d2a428fbf1ae988a62ec79..de5a265174ab9c99f816bc6e3652fb6a38153a74 100644 (file)
@@ -1,13 +1,13 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_lstat64
 
index 124cce4bbaec2ca81c622535acbf6e41fe368449..4584f9d8aa29cf573fda5aeea4a2d06f9eeac9ea 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (lstat64 -a32 -v -P stat.sample -P /dev/full); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (lstat64 -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
+run_strace_match_diff -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full
index 33a7abbedc7f14206eb053cf038c58b15b6bb39a..51118c6a0f8fd18be4276e286df32515d947f552 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 #include <stdio.h>
 #include <sys/mman.h>
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 static const char *errstr;
 
diff --git a/tests-m32/maybe_switch_current_tcp--quiet-thread-execve.c b/tests-m32/maybe_switch_current_tcp--quiet-thread-execve.c
new file mode 100644 (file)
index 0000000..b5c0a50
--- /dev/null
@@ -0,0 +1,2 @@
+#define QUIET_MSG 1
+#include "maybe_switch_current_tcp.c"
diff --git a/tests-m32/maybe_switch_current_tcp--quiet-thread-execve.gen.test b/tests-m32/maybe_switch_current_tcp--quiet-thread-execve.gen.test
new file mode 100755 (executable)
index 0000000..43327db
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (maybe_switch_current_tcp--quiet-thread-execve -a30 -s48 -f -e trace=execveat --quiet=personality,thread-execve); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a30 -s48 -f -e trace=execveat --quiet=personality,thread-execve
diff --git a/tests-m32/maybe_switch_current_tcp.c b/tests-m32/maybe_switch_current_tcp.c
new file mode 100644 (file)
index 0000000..7ba1b9b
--- /dev/null
@@ -0,0 +1,83 @@
+/*
+ * Check for PTRACE_EVENT_EXEC diagnostics.
+ *
+ * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2019-2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <errno.h>
+#include <pthread.h>
+#include <stdio.h>
+#include <unistd.h>
+#include "scno.h"
+
+#ifndef QUIET_MSG
+# define QUIET_MSG 0
+#endif
+
+static pid_t leader;
+static volatile unsigned int trigger;
+
+static void *
+thread(void *arg)
+{
+       const char *argv[] = {((char **) arg)[0], "1", "2", NULL};
+       int tid = syscall(__NR_gettid);
+
+       printf("%-5d execveat(AT_FDCWD, \"%s\", [\"%s\", \"%s\", \"%s\"]"
+              ", NULL, 0 <pid changed to %d ...>\n"
+#if !QUIET_MSG
+              "%-5d +++ superseded by execve in pid %d +++\n"
+#endif
+              , tid, argv[0], argv[0], argv[1], argv[2], leader
+#if !QUIET_MSG
+              , leader, tid
+#endif
+              );
+
+       while (!trigger) {
+               /* Wait for the parent to enter the busy loop.  */
+       }
+
+       syscall(__NR_execveat, -100, argv[0], argv, NULL, 0);
+       perror_msg_and_fail("execveat");
+}
+
+int
+main(int ac, char **av)
+{
+       setvbuf(stdout, NULL, _IONBF, 0);
+       leader = getpid();
+
+       if (ac <= 1) {
+               char *argv[] = {av[0], (char *) "1", NULL};
+               printf("%-5d execveat(AT_FDCWD, \"%s\""
+                      ", [\"%s\", \"%s\"], NULL, 0) = 0\n",
+                      leader, argv[0], argv[0], argv[1]);
+               syscall(__NR_execveat, -100, argv[0], argv, NULL, 0);
+               perror_msg_and_skip("execveat");
+       }
+
+       /*
+        * Since execveat is supported by the kernel,
+        * PTRACE_EVENT_EXEC support in the kernel is good enough.
+        */
+       if (ac <= 2) {
+               pthread_t t;
+               errno = pthread_create(&t, NULL, thread, av);
+               if (errno)
+                       perror_msg_and_fail("pthread_create");
+
+               for (;;)
+                       ++trigger;
+       }
+
+       printf("%-5d <... execveat resumed>) = 0\n"
+              "%-5d +++ exited with 0 +++\n",
+              leader, leader);
+       return 0;
+}
diff --git a/tests-m32/maybe_switch_current_tcp.gen.test b/tests-m32/maybe_switch_current_tcp.gen.test
new file mode 100755 (executable)
index 0000000..ebd50ec
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (maybe_switch_current_tcp -a30 -f -e trace=execveat); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a30 -f -e trace=execveat
diff --git a/tests-m32/mbind-Xabbrev.c b/tests-m32/mbind-Xabbrev.c
new file mode 100644 (file)
index 0000000..a318b5d
--- /dev/null
@@ -0,0 +1 @@
+#include "mbind.c"
diff --git a/tests-m32/mbind-Xabbrev.gen.test b/tests-m32/mbind-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..3ecf183
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mbind-Xabbrev -Xabbrev -e trace=mbind); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -Xabbrev -e trace=mbind
diff --git a/tests-m32/mbind-Xraw.c b/tests-m32/mbind-Xraw.c
new file mode 100644 (file)
index 0000000..86f9608
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "mbind.c"
diff --git a/tests-m32/mbind-Xraw.gen.test b/tests-m32/mbind-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..b66b481
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mbind-Xraw -a33 -Xraw -e trace=mbind); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a33 -Xraw -e trace=mbind
diff --git a/tests-m32/mbind-Xverbose.c b/tests-m32/mbind-Xverbose.c
new file mode 100644 (file)
index 0000000..29285cc
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "mbind.c"
diff --git a/tests-m32/mbind-Xverbose.gen.test b/tests-m32/mbind-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..20ebed6
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mbind-Xverbose -Xverbose -e trace=mbind); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -Xverbose -e trace=mbind
index 8e478a6f4f512c74cb78a0b57746fb50f4174496..321defb9339e4032bdb1f479d45f7fe06efe3ead 100644 (file)
 /*
  * Check decoding of mbind syscall.
  *
- * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_mbind
 
 # include <stdio.h>
 # include <unistd.h>
 
+static const char *errstr;
+
+static long
+k_mbind(const unsigned long start,
+       const unsigned long len,
+       const unsigned long mode,
+       const unsigned long nmask,
+       const unsigned long maxnode,
+       const unsigned int flags)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t arg1 = start;
+       const kernel_ulong_t arg2 = len;
+       const kernel_ulong_t arg3 = mode;
+       const kernel_ulong_t arg4 = nmask;
+       const kernel_ulong_t arg5 = maxnode;
+       const kernel_ulong_t arg6 = fill | flags;
+       const long rc = syscall(__NR_mbind, arg1, arg2, arg3, arg4, arg5, arg6);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
+# if XLAT_RAW
+#  define out_str      raw
+#  define flags_str    "0xffffffff"
+# elif XLAT_VERBOSE
+#  define out_str      verbose
+#  define flags_str    "0xffffffff /* MPOL_MF_STRICT|MPOL_MF_MOVE" \
+                       "|MPOL_MF_MOVE_ALL|0xfffffff8 */"
+# else
+#  define out_str      abbrev
+#  define flags_str    "MPOL_MF_STRICT|MPOL_MF_MOVE|MPOL_MF_MOVE_ALL|0xfffffff8"
+# endif
+
+static struct {
+       unsigned long val;
+       const char *raw;
+       const char *verbose;
+       const char *abbrev;
+} mpol_modes[] = {
+       { ARG_STR(0),
+         "0 /* MPOL_DEFAULT */",
+         "MPOL_DEFAULT" },
+       { ARG_STR(0x1),
+         "0x1 /* MPOL_PREFERRED */",
+         "MPOL_PREFERRED" },
+       { ARG_STR(0x2),
+         "0x2 /* MPOL_BIND */",
+         "MPOL_BIND" },
+       { ARG_STR(0x3),
+         "0x3 /* MPOL_INTERLEAVE */",
+         "MPOL_INTERLEAVE" },
+       { ARG_STR(0x4),
+         "0x4 /* MPOL_LOCAL */",
+         "MPOL_LOCAL" },
+       { ARG_STR(0x8000),
+         "0x8000 /* MPOL_DEFAULT|MPOL_F_STATIC_NODES */",
+         "MPOL_DEFAULT|MPOL_F_STATIC_NODES" },
+       { ARG_STR(0x4001),
+         "0x4001 /* MPOL_PREFERRED|MPOL_F_RELATIVE_NODES */",
+         "MPOL_PREFERRED|MPOL_F_RELATIVE_NODES" },
+       { ARG_STR(0xc002),
+         "0xc002 /* MPOL_BIND|MPOL_F_STATIC_NODES|MPOL_F_RELATIVE_NODES */",
+         "MPOL_BIND|MPOL_F_STATIC_NODES|MPOL_F_RELATIVE_NODES" },
+       { ARG_STR(0x5),
+         "0x5 /* MPOL_??? */",
+         "0x5 /* MPOL_??? */" },
+       { ARG_STR(0xffff3fff),
+         "0xffff3fff /* MPOL_??? */",
+         "0xffff3fff /* MPOL_??? */" },
+       { ARG_STR(0xffffffff),
+         "0xffffffff /* MPOL_F_STATIC_NODES|MPOL_F_RELATIVE_NODES|0xffff3fff */",
+         "MPOL_F_STATIC_NODES|MPOL_F_RELATIVE_NODES|0xffff3fff" },
+# if SIZEOF_LONG > 4
+       { 0xffffffff00000000UL,
+         "0xffffffff00000000",
+         "0xffffffff00000000 /* MPOL_??? */",
+         "0xffffffff00000000 /* MPOL_??? */" },
+       { 0xffffffffffff3fffUL,
+         "0xffffffffffff3fff",
+         "0xffffffffffff3fff /* MPOL_??? */",
+         "0xffffffffffff3fff /* MPOL_??? */" },
+       { -1UL,
+         "0xffffffffffffffff",
+         "0xffffffffffffffff /* MPOL_F_STATIC_NODES|MPOL_F_RELATIVE_NODES"
+         "|0xffffffffffff3fff */",
+         "MPOL_F_STATIC_NODES|MPOL_F_RELATIVE_NODES|0xffffffffffff3fff" },
+# endif
+};
+
 int
 main(void)
 {
-       const unsigned long len = (unsigned long) 0xcafef00dbadc0dedULL;
-       const unsigned long mode = 3;
-       const unsigned long nodemask = (unsigned long) 0xfacefeedfffffff1ULL;
-       const unsigned long maxnode = (unsigned long) 0xdeadbeeffffffff2ULL;
-       const unsigned long flags = -1UL;
-
-       long rc = syscall(__NR_mbind, 0, len, mode, nodemask, maxnode, flags);
-       printf("mbind(NULL, %lu, %s, %#lx, %lu, %s|%#x) = %ld %s (%m)\n",
-              len, "MPOL_INTERLEAVE", nodemask, maxnode,
-              "MPOL_MF_STRICT|MPOL_MF_MOVE|MPOL_MF_MOVE_ALL",
-              (unsigned) flags & ~7, rc, errno2name());
+       const unsigned long size = get_page_size();
+       unsigned long *const addr = tail_alloc(size);
+       const unsigned long start = (unsigned long) 0xfffffff1fffffff2ULL;
+       const unsigned long len = (unsigned long) 0xfffffff4fffffff4ULL;
+       const unsigned long nodemask = (unsigned long) 0xfffffff5fffffff6ULL;
+       const unsigned long maxnode = (unsigned long) 0xfffffff7fffffff8ULL;
+
+       if (k_mbind((unsigned long) addr, size, mpol_modes[0].val, 0, 0, 0))
+               perror_msg_and_skip("mbind");
+       printf("mbind(%p, %lu, %s, NULL, 0, 0) = 0\n",
+              addr, size, mpol_modes[0].out_str);
+
+       for (unsigned int i = 0; i < ARRAY_SIZE(mpol_modes); ++i) {
+               if (i) {
+                       k_mbind((unsigned long) addr, size, mpol_modes[i].val,
+                               0, 0, 0);
+                       printf("mbind(%p, %lu, %s, NULL, 0, 0) = %s\n",
+                              addr, size, mpol_modes[i].out_str, errstr);
+               }
+
+               k_mbind(start, len, mpol_modes[i].val,
+                       nodemask, maxnode, -1U);
+               printf("mbind(%#lx, %lu, %s, %#lx, %lu, %s) = %s\n",
+                      start, len, mpol_modes[i].out_str,
+                      nodemask, maxnode, flags_str, errstr);
+       }
 
        puts("+++ exited with 0 +++");
        return 0;
index 0e55497b10879f4a31d6e6315bab6201b6da941e..bdacf7f37ea7ac5d27d8d67748ef7cac14354c64 100644 (file)
@@ -1,13 +1,12 @@
 /*
  * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
 #include "scno.h"
 
 #ifdef __NR_membarrier
index 2658a1ba21449b7ef3eaacc69d500bb2d1a27eb2..06e017ef4c6cfd4b4cdb79c274c26d76d8f69a81 100644 (file)
@@ -2,13 +2,13 @@
  * Check decoding of memfd_create syscall.
  *
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
 #include "scno.h"
 
 #ifdef __NR_memfd_create
diff --git a/tests-m32/migrate_pages--pidns-translation.c b/tests-m32/migrate_pages--pidns-translation.c
new file mode 100644 (file)
index 0000000..ec34938
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "migrate_pages.c"
diff --git a/tests-m32/migrate_pages--pidns-translation.gen.test b/tests-m32/migrate_pages--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..c6b5b3a
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (migrate_pages--pidns-translation test_pidns -a33 -e trace=migrate_pages); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a33 -e trace=migrate_pages
index e8e66eceb5008bbecb1b7bfb220decd813d75f1c..34da2808ce4d0b944bbd552d282b5f03592010ab 100644 (file)
@@ -2,13 +2,15 @@
  * Check decoding of migrate_pages syscall.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
+#include "pidns.h"
 
 #ifdef __NR_migrate_pages
 
 int
 main(void)
 {
-       const long pid = (long) 0xfacefeedffffffffULL;
+       PIDNS_TEST_INIT;
+
+       const long pid = (long) 0xfacefeed00000000ULL | getpid();
        long rc = syscall(__NR_migrate_pages, pid, 0, 0, 0);
-       printf("migrate_pages(%d, 0, NULL, NULL) = %ld %s (%m)\n",
-              (int) pid, rc, errno2name());
 
+       pidns_print_leader();
+       printf("migrate_pages(%d%s, 0, NULL, NULL) = %ld",
+               (int) pid, pidns_pid2str(PT_TGID), rc);
+
+       if (rc < 0)
+               printf(" %s (%m)\n", errno2name());
+       else
+               printf("\n");
+
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
index e6e62ef65671965482b0b9604538b88e80140486..9faee7eb3f1193a938d0f45ea3540f28c54b8620 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_mkdir
 
index 91bf06be3c39077e39827ce53b96b688f83b0ef2..1b5a68f777693fd9f038a6bc99d4a143325d8343 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_mkdirat
 
index 94d80284a610a802f90e5d5d7416b9ec0293519e..e4d0e5fcfc924b379b83ac87bf5d856a3c9bda8b 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_mknod
 
@@ -31,44 +31,44 @@ main(int ac, char **av)
        sample = av[0];
 
        long rc = call_mknod(0, dev);
-       printf("mknod(\"%s\", 000) = %ld %s (%m)\n",
-              sample, rc, errno2name());
+       printf("mknod(\"%s\", 000) = %s\n",
+              sample, sprintrc(rc));
 
        rc = call_mknod(0xffff, dev);
-       printf("mknod(\"%s\", %#03ho) = %ld %s (%m)\n",
-              sample, (unsigned short) -1, rc, errno2name());
+       printf("mknod(\"%s\", %#03ho) = %s\n",
+              sample, (unsigned short) -1, sprintrc(rc));
 
        rc = call_mknod(S_IFREG, 0);
-       printf("mknod(\"%s\", S_IFREG|000) = %ld %s (%m)\n",
-              sample, rc, errno2name());
+       printf("mknod(\"%s\", S_IFREG|000) = %s\n",
+              sample, sprintrc(rc));
 
        rc = call_mknod(S_IFDIR | 06, 0);
-       printf("mknod(\"%s\", S_IFDIR|006) = %ld %s (%m)\n",
-              sample, rc, errno2name());
+       printf("mknod(\"%s\", S_IFDIR|006) = %s\n",
+              sample, sprintrc(rc));
 
        rc = call_mknod(S_IFLNK | 060, 0);
-       printf("mknod(\"%s\", S_IFLNK|060) = %ld %s (%m)\n",
-              sample, rc, errno2name());
+       printf("mknod(\"%s\", S_IFLNK|060) = %s\n",
+              sample, sprintrc(rc));
 
        rc = call_mknod(S_IFIFO | 0600, 0);
-       printf("mknod(\"%s\", S_IFIFO|0600) = %ld %s (%m)\n",
-              sample, rc, errno2name());
+       printf("mknod(\"%s\", S_IFIFO|0600) = %s\n",
+              sample, sprintrc(rc));
 
        dev = (unsigned long) 0xdeadbeef00000000ULL | makedev(1, 7);
 
        rc = call_mknod(S_IFCHR | 024, dev);
-       printf("mknod(\"%s\", S_IFCHR|024, makedev(0x1, 0x7)) = %ld %s (%m)\n",
-              sample, rc, errno2name());
+       printf("mknod(\"%s\", S_IFCHR|024, makedev(0x1, 0x7)) = %s\n",
+              sample, sprintrc(rc));
 
        const unsigned short mode = (0xffff & ~S_IFMT) | S_IFBLK;
        dev = (unsigned long) 0xdeadbeefbadc0dedULL;
 
        rc = call_mknod(mode, dev);
        printf("mknod(\"%s\", S_IFBLK|S_ISUID|S_ISGID|S_ISVTX|%#03ho"
-              ", makedev(%#x, %#x)) = %ld %s (%m)\n",
+              ", makedev(%#x, %#x)) = %s\n",
               sample, (short) (mode & ~(S_IFMT|S_ISUID|S_ISGID|S_ISVTX)),
               major((unsigned) dev), minor((unsigned) dev),
-              rc, errno2name());
+              sprintrc(rc));
 
        puts("+++ exited with 0 +++");
        return 0;
index 34b34d8073bcbcd8c1ff3802cbeb1d2fa7bba6ab..ffc56210df23a524835ba88d3ea0d3c3249c2b96 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_mknodat
 
index 0f31d20c812c33d09f85317604ae846289485810..c2550ba93f651e5039c8bd15ca9dd5dc0b83cf5e 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_mlock && defined __NR_munlock
 
index 23f1cd9aa8f94c3789174a85e04f8894956b7bab..0489afe3917ef50d11e3bc483216674d0adac6dc 100644 (file)
@@ -1,12 +1,12 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
 #include "scno.h"
 
 #ifdef __NR_mlock2
index 78e370e462d6b896f1a61f8edda968d2b0a13ecb..b642bbe23ca19a6b06d7b1020137a07888e68455 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Check decoding of modify_ldt syscall.
  *
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -9,7 +9,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_modify_ldt && defined HAVE_STRUCT_USER_DESC
 
@@ -23,18 +23,26 @@ void
 printrc(long rc)
 {
 # ifdef __x86_64__
-       int err = -rc;
+       /*
+        * Hopefully, we don't expect EPERM to be returned,
+        * otherwise we can't distinguish it on x32.
+        */
+       if (rc != -1) {
+               int err = -rc;
 
-       /* Thanks, long return type of syscall(2) */
-       printf("%lld", zero_extend_signed_to_ull(rc));
+               /* Thanks, long return type of syscall(2) */
+               printf("%lld", zero_extend_signed_to_ull(rc));
 
-       if (err > 0 && err < 0x1000) {
-               errno = err;
-               printf(" %s (%m)", errno2name());
+               if (err > 0 && err < 0x1000) {
+                       errno = err;
+                       printf(" %s (%m)", errno2name());
+               }
        }
-# else
-       printf("%s", sprintrc(rc));
+       else
 # endif
+       {
+               printf("%s", sprintrc(rc));
+       }
 
        puts("");
 }
diff --git a/tests-m32/move_mount-P.c b/tests-m32/move_mount-P.c
new file mode 100644 (file)
index 0000000..1e1cd5c
--- /dev/null
@@ -0,0 +1,2 @@
+#define PATH_TRACING
+#include "move_mount.c"
diff --git a/tests-m32/move_mount-P.gen.test b/tests-m32/move_mount-P.gen.test
new file mode 100755 (executable)
index 0000000..780d8c9
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (move_mount-P -y -P /dev/full -e trace=move_mount); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -y -P /dev/full -e trace=move_mount
diff --git a/tests-m32/move_mount.c b/tests-m32/move_mount.c
new file mode 100644 (file)
index 0000000..b6ebfda
--- /dev/null
@@ -0,0 +1,102 @@
+/*
+ * Check decoding of move_mount syscall.
+ *
+ * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_move_mount
+
+# include <fcntl.h>
+# include <limits.h>
+# include <stdio.h>
+# include <stdint.h>
+# include <unistd.h>
+
+static const char *errstr;
+
+static long
+k_move_mount(const unsigned int from_dfd, const void *from_fname,
+            const unsigned int to_dfd, const void *to_fname,
+            const unsigned int flags)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = fill | from_dfd;
+       const kernel_ulong_t arg2 = (uintptr_t) from_fname;
+       const kernel_ulong_t arg3 = fill | to_dfd;
+       const kernel_ulong_t arg4 = (uintptr_t) to_fname;
+       const kernel_ulong_t arg5 = fill | flags;
+       const long rc = syscall(__NR_move_mount,
+                               arg1, arg2, arg3, arg4, arg5, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
+int
+main(void)
+{
+       skip_if_unavailable("/proc/self/fd/");
+
+       static const char path_full[] = "/dev/full";
+       const char *const path = tail_memdup(path_full, sizeof(path_full));
+       const void *const efault = path + sizeof(path_full);
+       const char *const empty = efault - 1;
+       char *const fname = tail_alloc(PATH_MAX);
+       fill_memory_ex(fname, PATH_MAX, '0', 10);
+
+        int dfd = open(path, O_WRONLY);
+        if (dfd < 0)
+                perror_msg_and_fail("open: %s", path);
+
+       k_move_mount(-1, 0, -100, efault, 0);
+# ifndef PATH_TRACING
+       printf("move_mount(-1, NULL, AT_FDCWD, %p, 0) = %s\n", efault, errstr);
+# endif
+
+       k_move_mount(-100, efault, -1, 0, 0);
+# ifndef PATH_TRACING
+       printf("move_mount(AT_FDCWD, %p, -1, NULL, 0) = %s\n", efault, errstr);
+# endif
+
+       k_move_mount(dfd, fname, -100, empty, 1);
+       printf("move_mount(%d<%s>, \"%.*s\"..., AT_FDCWD, \"\", %s) = %s\n",
+              dfd, path, (int) PATH_MAX - 1, fname, "MOVE_MOUNT_F_SYMLINKS", errstr);
+
+       k_move_mount(-100, empty, dfd, fname, 0x10);
+       printf("move_mount(AT_FDCWD, \"\", %d<%s>, \"%.*s\"..., %s) = %s\n",
+              dfd, path, (int) PATH_MAX - 1, fname, "MOVE_MOUNT_T_SYMLINKS", errstr);
+
+# define f_flags_str "MOVE_MOUNT_F_SYMLINKS|MOVE_MOUNT_F_AUTOMOUNTS|MOVE_MOUNT_F_EMPTY_PATH"
+       fname[PATH_MAX - 1] = '\0';
+       k_move_mount(dfd, fname, -100, empty, 7);
+       printf("move_mount(%d<%s>, \"%s\", AT_FDCWD, \"\", %s) = %s\n",
+              dfd, path, fname, f_flags_str, errstr);
+
+# define t_flags_str "MOVE_MOUNT_T_SYMLINKS|MOVE_MOUNT_T_AUTOMOUNTS|MOVE_MOUNT_T_EMPTY_PATH"
+       k_move_mount(-100, empty, dfd, fname, 0x70);
+       printf("move_mount(AT_FDCWD, \"\", %d<%s>, \"%s\", %s) = %s\n",
+              dfd, path, fname, t_flags_str, errstr);
+
+       k_move_mount(-1, path, -100, empty, 0x77);
+       printf("move_mount(-1, \"%s\", AT_FDCWD, \"\", %s) = %s\n",
+              path, f_flags_str "|" t_flags_str, errstr);
+
+       k_move_mount(-100, empty, -1, path, -1);
+       printf("move_mount(AT_FDCWD, \"\", -1, \"%s\", %s) = %s\n",
+              path, f_flags_str "|" t_flags_str "|0xffffff88", errstr);
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_move_mount")
+
+#endif
diff --git a/tests-m32/move_mount.gen.test b/tests-m32/move_mount.gen.test
new file mode 100755 (executable)
index 0000000..465810f
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (move_mount -y ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -y 
diff --git a/tests-m32/move_pages--pidns-translation.c b/tests-m32/move_pages--pidns-translation.c
new file mode 100644 (file)
index 0000000..8498e39
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "move_pages.c"
diff --git a/tests-m32/move_pages--pidns-translation.gen.test b/tests-m32/move_pages--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..acd97c6
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (move_pages--pidns-translation test_pidns -s3 -e trace=move_pages); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -s3 -e trace=move_pages
index 895c7c6f00f9b56e0e1c7d47d20c0ca7875289ec..e648f00acc64bd68e32818721e896e4554b87b8a 100644 (file)
@@ -2,14 +2,15 @@
  * Check decoding of move_pages syscall.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2019 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
+#include "pidns.h"
 
 #ifdef __NR_move_pages
 
@@ -122,15 +123,20 @@ print_status_array(const int *const status, const unsigned long count)
 }
 
 static void
-print_stat_pages(const unsigned long pid, const unsigned long count,
-                const void **const pages, int *const status)
+print_stat_pages(const unsigned long pid,
+                const char *pid_str,
+                const unsigned long count,
+                const void **const pages,
+                int *const status)
 {
        const unsigned long flags = (unsigned long) 0xfacefeed00000002ULL;
 
        long rc = syscall(__NR_move_pages,
                          pid, count, pages, NULL, status, flags);
        const char *errstr = sprintrc(rc);
-       printf("move_pages(%d, %lu, ", (int) pid, count);
+       pidns_print_leader();
+       printf("move_pages(%d%s, %lu, ", (int) pid, pid_str,
+               count);
        print_page_array(pages, count, 0);
        printf(", NULL, ");
        if (rc) {
@@ -152,6 +158,7 @@ print_stat_pages(const unsigned long pid, const unsigned long count,
 
 static void
 print_move_pages(const unsigned long pid,
+                const char *pid_str,
                 unsigned long count,
                 const unsigned int offset,
                 const void **const pages,
@@ -164,7 +171,9 @@ print_move_pages(const unsigned long pid,
        long rc = syscall(__NR_move_pages,
                          pid, count, pages, nodes, status, flags);
        const char *errstr = sprintrc(rc);
-       printf("move_pages(%d, %lu, ", (int) pid, count);
+       pidns_print_leader();
+       printf("move_pages(%d%s, %lu, ", (int) pid, pid_str,
+               count);
        print_page_array(pages, count, offset);
        printf(", ");
        print_node_array(nodes, count, offset);
@@ -185,8 +194,11 @@ print_move_pages(const unsigned long pid,
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        const unsigned long pid =
                (unsigned long) 0xfacefeed00000000ULL | getpid();
+       const char *pid_str = pidns_pid2str(PT_TGID);
        unsigned long count = 1;
        const unsigned page_size = get_page_size();
        const void *const page = tail_alloc(page_size);
@@ -195,40 +207,41 @@ main(void)
        TAIL_ALLOC_OBJECT_VAR_PTR(int, nodes);
        TAIL_ALLOC_OBJECT_VAR_PTR(int, status);
 
-       print_stat_pages(pid, 0, pages, status);
-       print_move_pages(pid, 0, 0, pages, nodes, status);
-       print_move_pages(pid, 0, 1, pages + 1, nodes + 1, status + 1);
+       print_stat_pages(pid, pid_str, 0, pages, status);
+       print_move_pages(pid, pid_str, 0, 0, pages, nodes, status);
+       print_move_pages(pid, pid_str, 0, 1, pages + 1, nodes + 1, status + 1);
 
        *pages = page;
-       print_stat_pages(pid, count, pages, status);
+       print_stat_pages(pid, pid_str, count, pages, status);
        *nodes = 0xdeadbee1;
-       print_move_pages(pid, count, 0, pages, nodes, status);
-       print_move_pages(pid, count, 1, pages, nodes, status);
+       print_move_pages(pid, pid_str, count, 0, pages, nodes, status);
+       print_move_pages(pid, pid_str, count, 1, pages, nodes, status);
 
        ++count;
        --status;
        *(--pages) = efault;
-       print_stat_pages(pid, count, pages, status);
+       print_stat_pages(pid, pid_str, count, pages, status);
        *(--nodes) = 0xdeadbee2;
-       print_move_pages(pid, count, 0, pages, nodes, status);
-       print_move_pages(pid, count, 1, pages, nodes, status);
+       print_move_pages(pid, pid_str, count, 0, pages, nodes, status);
+       print_move_pages(pid, pid_str, count, 1, pages, nodes, status);
 
        ++count;
        --status;
        *(--pages) = nodes;
-       print_stat_pages(pid, count, pages, status);
+       print_stat_pages(pid, pid_str, count, pages, status);
        *(--nodes) = 0xdeadbee3;
-       print_move_pages(pid, count, 0, pages, nodes, status);
-       print_move_pages(pid, count, 1, pages, nodes, status);
+       print_move_pages(pid, pid_str, count, 0, pages, nodes, status);
+       print_move_pages(pid, pid_str, count, 1, pages, nodes, status);
 
        ++count;
        --status;
        *(--pages) = status;
-       print_stat_pages(pid, count, pages, status);
+       print_stat_pages(pid, pid_str, count, pages, status);
        *(--nodes) = 0xdeadbee4;
-       print_move_pages(pid, count, 0, pages, nodes, status);
-       print_move_pages(pid, count, 1, pages, nodes, status);
+       print_move_pages(pid, pid_str, count, 0, pages, nodes, status);
+       print_move_pages(pid, pid_str, count, 1, pages, nodes, status);
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
index 7af0f36e017005ebe6abd063a53a08d1ebf38d36..45ddf5ee9a2d62c55a4088a1b123379db8c52678 100644 (file)
@@ -3,7 +3,7 @@
  * mq_unlink syscalls.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -11,7 +11,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_mq_open && __NR_mq_timedsend && __NR_mq_timedreceive && \
        __NR_mq_notify && __NR_mq_unlink
index a4a32a88915e151247bcb9fd08520a3122c15a8b..2fd6c95d54a7ed3c568095756a5f981cf4996ead 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of struct msghdr ancillary data.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2019 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -25,6 +25,9 @@
 # include <linux/time_types.h>
 #endif
 
+#include "kernel_timeval.h"
+#include "kernel_old_timespec.h"
+
 #include "xlat.h"
 #define XLAT_MACROS_ONLY
 #include "xlat/sock_options.h"
@@ -38,9 +41,6 @@
 # define SOL_TCP 6
 #endif
 
-#define MIN_SIZE_OF(type, member) \
-       (offsetof(type, member) + sizeof(((type *) 0)->member))
-
 static struct cmsghdr *
 get_cmsghdr(void *const page, const size_t len)
 {
@@ -87,11 +87,11 @@ test_scm_rights1(struct msghdr *const mh,
 
        struct cmsghdr *cmsg = get_cmsghdr(page, msg_controllen);
 
-       if (msg_controllen >= MIN_SIZE_OF(struct cmsghdr, cmsg_len))
+       if (msg_controllen >= offsetofend(struct cmsghdr, cmsg_len))
                cmsg->cmsg_len = cmsg_len;
-       if (msg_controllen >= MIN_SIZE_OF(struct cmsghdr, cmsg_level))
+       if (msg_controllen >= offsetofend(struct cmsghdr, cmsg_level))
                cmsg->cmsg_level = SOL_SOCKET;
-       if (msg_controllen >= MIN_SIZE_OF(struct cmsghdr, cmsg_type))
+       if (msg_controllen >= offsetofend(struct cmsghdr, cmsg_type))
                cmsg->cmsg_type = SCM_RIGHTS;
 
        size_t src_len =
@@ -152,11 +152,11 @@ test_scm_rights2(struct msghdr *const mh,
                memcpy(CMSG_DATA(cmsg[0]), src[0], cmsg_len[0] - CMSG_LEN(0));
 
        const size_t msg_controllen1 = msg_controllen - aligned_cms_len[0];
-       if (msg_controllen1 >= MIN_SIZE_OF(struct cmsghdr, cmsg_len))
+       if (msg_controllen1 >= offsetofend(struct cmsghdr, cmsg_len))
                cmsg[1]->cmsg_len = cmsg_len[1];
-       if (msg_controllen >= MIN_SIZE_OF(struct cmsghdr, cmsg_level))
+       if (msg_controllen >= offsetofend(struct cmsghdr, cmsg_level))
                cmsg[1]->cmsg_level = SOL_SOCKET;
-       if (msg_controllen >= MIN_SIZE_OF(struct cmsghdr, cmsg_type))
+       if (msg_controllen >= offsetofend(struct cmsghdr, cmsg_type))
                cmsg[1]->cmsg_type = SCM_RIGHTS;
        size_t src1_len =
                cmsg_len[1] < msg_controllen1 ? cmsg_len[1] : msg_controllen1;
@@ -217,15 +217,17 @@ test_scm_rights3(struct msghdr *const mh, void *const page, const size_t nfds)
 static void
 test_scm_timestamp_old(struct msghdr *const mh, void *const page)
 {
-       size_t len = CMSG_SPACE(sizeof(struct timeval));
+       static const kernel_old_timeval_t tv = {
+               .tv_sec = 123456789,
+               .tv_usec = 987654
+       };
+       size_t len = CMSG_SPACE(sizeof(tv));
        struct cmsghdr *cmsg = get_cmsghdr(page, len);
 
-       cmsg->cmsg_len = CMSG_LEN(sizeof(struct timeval));
+       cmsg->cmsg_len = CMSG_LEN(sizeof(tv));
        cmsg->cmsg_level = SOL_SOCKET;
        cmsg->cmsg_type = SO_TIMESTAMP_OLD;
-       struct timeval *tv = (struct timeval *) CMSG_DATA(cmsg);
-       tv->tv_sec = 123456789;
-       tv->tv_usec = 987654;
+       memcpy(CMSG_DATA(cmsg), &tv, sizeof(tv));
 
        mh->msg_control = cmsg;
        mh->msg_controllen = len;
@@ -237,13 +239,13 @@ test_scm_timestamp_old(struct msghdr *const mh, void *const page)
               ", cmsg_data={tv_sec=%lld, tv_usec=%llu}}]"
               ", msg_controllen=%lu, msg_flags=0}, 0) = %d %s (%m)\n",
               (unsigned) cmsg->cmsg_len,
-              (long long) tv->tv_sec, zero_extend_signed_to_ull(tv->tv_usec),
+              (long long) tv.tv_sec, zero_extend_signed_to_ull(tv.tv_usec),
               (unsigned long) len, rc, errno2name());
 
-       len = CMSG_SPACE(sizeof(struct timeval) - sizeof(long));
+       len = CMSG_SPACE(sizeof(tv) - sizeof(long));
        cmsg = get_cmsghdr(page, len);
 
-       cmsg->cmsg_len = CMSG_LEN(sizeof(struct timeval) - sizeof(long));
+       cmsg->cmsg_len = CMSG_LEN(sizeof(tv) - sizeof(long));
        cmsg->cmsg_level = SOL_SOCKET;
        cmsg->cmsg_type = SO_TIMESTAMP_OLD;
 
@@ -262,15 +264,17 @@ test_scm_timestamp_old(struct msghdr *const mh, void *const page)
 static void
 test_scm_timestampns_old(struct msghdr *const mh, void *const page)
 {
-       size_t len = CMSG_SPACE(sizeof(struct timespec));
+       static const kernel_old_timespec_t ts = {
+               .tv_sec = 123456789,
+               .tv_nsec = 987654321
+       };
+       size_t len = CMSG_SPACE(sizeof(ts));
        struct cmsghdr *cmsg = get_cmsghdr(page, len);
 
-       cmsg->cmsg_len = CMSG_LEN(sizeof(struct timespec));
+       cmsg->cmsg_len = CMSG_LEN(sizeof(ts));
        cmsg->cmsg_level = SOL_SOCKET;
        cmsg->cmsg_type = SO_TIMESTAMPNS_OLD;
-       struct timespec *ts = (struct timespec *) CMSG_DATA(cmsg);
-       ts->tv_sec = 123456789;
-       ts->tv_nsec = 987654321;
+       memcpy(CMSG_DATA(cmsg), &ts, sizeof(ts));
 
        mh->msg_control = cmsg;
        mh->msg_controllen = len;
@@ -282,13 +286,13 @@ test_scm_timestampns_old(struct msghdr *const mh, void *const page)
               ", cmsg_data={tv_sec=%lld, tv_nsec=%llu}}]"
               ", msg_controllen=%lu, msg_flags=0}, 0) = %d %s (%m)\n",
               (unsigned) cmsg->cmsg_len,
-              (long long) ts->tv_sec, zero_extend_signed_to_ull(ts->tv_nsec),
+              (long long) ts.tv_sec, zero_extend_signed_to_ull(ts.tv_nsec),
               (unsigned long) len, rc, errno2name());
 
-       len = CMSG_SPACE(sizeof(struct timespec) - sizeof(long));
+       len = CMSG_SPACE(sizeof(ts) - sizeof(long));
        cmsg = get_cmsghdr(page, len);
 
-       cmsg->cmsg_len = CMSG_LEN(sizeof(struct timespec) - sizeof(long));
+       cmsg->cmsg_len = CMSG_LEN(sizeof(ts) - sizeof(long));
        cmsg->cmsg_level = SOL_SOCKET;
        cmsg->cmsg_type = SO_TIMESTAMPNS_OLD;
 
@@ -308,19 +312,18 @@ test_scm_timestampns_old(struct msghdr *const mh, void *const page)
 static void
 test_scm_timestamping_old(struct msghdr *const mh, void *const page)
 {
-       size_t len = CMSG_SPACE(3 * sizeof(struct timespec));
+       static const kernel_old_timespec_t ts[] = {
+               { .tv_sec = 123456789, .tv_nsec = 987654321 },
+               { .tv_sec = 123456790, .tv_nsec = 987654320 },
+               { .tv_sec = 123456791, .tv_nsec = 987654319 }
+       };
+       size_t len = CMSG_SPACE(sizeof(ts));
        struct cmsghdr *cmsg = get_cmsghdr(page, len);
 
-       cmsg->cmsg_len = CMSG_LEN(3 * sizeof(struct timespec));
+       cmsg->cmsg_len = CMSG_LEN(sizeof(ts));
        cmsg->cmsg_level = SOL_SOCKET;
        cmsg->cmsg_type = SO_TIMESTAMPING_OLD;
-       struct timespec *ts = (struct timespec *) CMSG_DATA(cmsg);
-       ts[0].tv_sec = 123456789;
-       ts[0].tv_nsec = 987654321;
-       ts[1].tv_sec = 123456790;
-       ts[1].tv_nsec = 987654320;
-       ts[2].tv_sec = 123456791;
-       ts[2].tv_nsec = 987654319;
+       memcpy(CMSG_DATA(cmsg), ts, sizeof(ts));
 
        mh->msg_control = cmsg;
        mh->msg_controllen = len;
@@ -340,10 +343,10 @@ test_scm_timestamping_old(struct msghdr *const mh, void *const page)
               zero_extend_signed_to_ull(ts[2].tv_nsec),
               (unsigned long) len, rc, errno2name());
 
-       len = CMSG_SPACE(3 * sizeof(struct timespec) - sizeof(long));
+       len = CMSG_SPACE(sizeof(ts) - sizeof(long));
        cmsg = get_cmsghdr(page, len);
 
-       cmsg->cmsg_len = CMSG_LEN(3 * sizeof(struct timespec) - sizeof(long));
+       cmsg->cmsg_len = CMSG_LEN(sizeof(ts) - sizeof(long));
        cmsg->cmsg_level = SOL_SOCKET;
        cmsg->cmsg_type = SO_TIMESTAMPING_OLD;
 
@@ -364,16 +367,17 @@ test_scm_timestamping_old(struct msghdr *const mh, void *const page)
 static void
 test_scm_timestamp_new(struct msghdr *const mh, void *const page)
 {
-       size_t len = CMSG_SPACE(sizeof(struct __kernel_sock_timeval));
+       static const struct __kernel_sock_timeval tv = {
+               .tv_sec = 0xdefaceddeadbeef,
+               .tv_usec = 0xdec0dedcafef00d
+       };
+       size_t len = CMSG_SPACE(sizeof(tv));
        struct cmsghdr *cmsg = get_cmsghdr(page, len);
 
-       cmsg->cmsg_len = CMSG_LEN(sizeof(struct __kernel_sock_timeval));
+       cmsg->cmsg_len = CMSG_LEN(sizeof(tv));
        cmsg->cmsg_level = SOL_SOCKET;
        cmsg->cmsg_type = SO_TIMESTAMP_NEW;
-       struct __kernel_sock_timeval *tv =
-               (struct __kernel_sock_timeval *) CMSG_DATA(cmsg);
-       tv->tv_sec = 0xdefaceddeadbeef;
-       tv->tv_usec = 0xdec0dedcafef00d;
+       memcpy(CMSG_DATA(cmsg), &tv, sizeof(tv));
 
        mh->msg_control = cmsg;
        mh->msg_controllen = len;
@@ -385,14 +389,13 @@ test_scm_timestamp_new(struct msghdr *const mh, void *const page)
               ", cmsg_data={tv_sec=%lld, tv_usec=%llu}}]"
               ", msg_controllen=%lu, msg_flags=0}, 0) = %s\n",
               (unsigned) cmsg->cmsg_len,
-              (long long) tv->tv_sec, zero_extend_signed_to_ull(tv->tv_usec),
+              (long long) tv.tv_sec, zero_extend_signed_to_ull(tv.tv_usec),
               (unsigned long) len, sprintrc(rc));
 
-       len = CMSG_SPACE(sizeof(struct __kernel_sock_timeval) - sizeof(long));
+       len = CMSG_SPACE(sizeof(tv) - sizeof(long));
        cmsg = get_cmsghdr(page, len);
 
-       cmsg->cmsg_len =
-               CMSG_LEN(sizeof(struct __kernel_sock_timeval) - sizeof(long));
+       cmsg->cmsg_len = CMSG_LEN(sizeof(tv) - sizeof(long));
        cmsg->cmsg_level = SOL_SOCKET;
        cmsg->cmsg_type = SO_TIMESTAMP_NEW;
 
@@ -413,16 +416,17 @@ test_scm_timestamp_new(struct msghdr *const mh, void *const page)
 static void
 test_scm_timestampns_new(struct msghdr *const mh, void *const page)
 {
-       size_t len = CMSG_SPACE(sizeof(struct __kernel_timespec));
+       static const struct __kernel_timespec ts = {
+               .tv_sec = 0xdefaceddeadbeef,
+               .tv_nsec = 0xdec0dedcafef00d
+       };
+       size_t len = CMSG_SPACE(sizeof(ts));
        struct cmsghdr *cmsg = get_cmsghdr(page, len);
 
-       cmsg->cmsg_len = CMSG_LEN(sizeof(struct __kernel_timespec));
+       cmsg->cmsg_len = CMSG_LEN(sizeof(ts));
        cmsg->cmsg_level = SOL_SOCKET;
        cmsg->cmsg_type = SO_TIMESTAMPNS_NEW;
-       struct __kernel_timespec *ts =
-               (struct __kernel_timespec *) CMSG_DATA(cmsg);
-       ts->tv_sec = 0xdefaceddeadbeef;
-       ts->tv_nsec = 0xdec0dedcafef00d;
+       memcpy(CMSG_DATA(cmsg), &ts, sizeof(ts));
 
        mh->msg_control = cmsg;
        mh->msg_controllen = len;
@@ -434,14 +438,13 @@ test_scm_timestampns_new(struct msghdr *const mh, void *const page)
               ", cmsg_data={tv_sec=%lld, tv_nsec=%llu}}]"
               ", msg_controllen=%lu, msg_flags=0}, 0) = %s\n",
               (unsigned) cmsg->cmsg_len,
-              (long long) ts->tv_sec, zero_extend_signed_to_ull(ts->tv_nsec),
+              (long long) ts.tv_sec, zero_extend_signed_to_ull(ts.tv_nsec),
               (unsigned long) len, sprintrc(rc));
 
-       len = CMSG_SPACE(sizeof(struct __kernel_timespec) - sizeof(long));
+       len = CMSG_SPACE(sizeof(ts) - sizeof(long));
        cmsg = get_cmsghdr(page, len);
 
-       cmsg->cmsg_len =
-               CMSG_LEN(sizeof(struct __kernel_timespec) - sizeof(long));
+       cmsg->cmsg_len = CMSG_LEN(sizeof(ts) - sizeof(long));
        cmsg->cmsg_level = SOL_SOCKET;
        cmsg->cmsg_type = SO_TIMESTAMPNS_NEW;
 
@@ -461,20 +464,18 @@ test_scm_timestampns_new(struct msghdr *const mh, void *const page)
 static void
 test_scm_timestamping_new(struct msghdr *const mh, void *const page)
 {
-       size_t len = CMSG_SPACE(3 * sizeof(struct __kernel_timespec));
+       static const struct __kernel_timespec ts[] = {
+               { .tv_sec = 0xdeface0deadbef1, .tv_nsec = 0xdec0de2cafef0d3 },
+               { .tv_sec = 0xdeface4deadbef5, .tv_nsec = 0xdec0de6cafef0d7 },
+               { .tv_sec = 0xdeface8deadbef9, .tv_nsec = 0xdec0dedcafef00d }
+       };
+       size_t len = CMSG_SPACE(sizeof(ts));
        struct cmsghdr *cmsg = get_cmsghdr(page, len);
 
-       cmsg->cmsg_len = CMSG_LEN(3 * sizeof(struct __kernel_timespec));
+       cmsg->cmsg_len = CMSG_LEN(sizeof(ts));
        cmsg->cmsg_level = SOL_SOCKET;
        cmsg->cmsg_type = SO_TIMESTAMPING_NEW;
-       struct __kernel_timespec *ts =
-               (struct __kernel_timespec *) CMSG_DATA(cmsg);
-       ts[0].tv_sec = 0xdeface0deadbef1;
-       ts[0].tv_nsec = 0xdec0de2cafef0d3;
-       ts[1].tv_sec = 0xdeface4deadbef5;
-       ts[1].tv_nsec = 0xdec0de6cafef0d7;
-       ts[2].tv_sec = 0xdeface8deadbef9;
-       ts[2].tv_nsec = 0xdec0dedcafef00d;
+       memcpy(CMSG_DATA(cmsg), ts, sizeof(ts));
 
        mh->msg_control = cmsg;
        mh->msg_controllen = len;
@@ -494,11 +495,10 @@ test_scm_timestamping_new(struct msghdr *const mh, void *const page)
               zero_extend_signed_to_ull(ts[2].tv_nsec),
               (unsigned long) len, sprintrc(rc));
 
-       len = CMSG_SPACE(3 * sizeof(struct __kernel_timespec) - sizeof(long));
+       len = CMSG_SPACE(sizeof(ts) - sizeof(long));
        cmsg = get_cmsghdr(page, len);
 
-       cmsg->cmsg_len =
-               CMSG_LEN(3 * sizeof(struct __kernel_timespec) - sizeof(long));
+       cmsg->cmsg_len = CMSG_LEN(sizeof(ts) - sizeof(long));
        cmsg->cmsg_level = SOL_SOCKET;
        cmsg->cmsg_type = SO_TIMESTAMPING_NEW;
 
@@ -987,7 +987,7 @@ int main(int ac, const char **av)
        printf("sendmsg(-1, %p, 0) = %d %s (%m)\n",
               mh + 1, rc, errno2name());
 
-       void *page = tail_alloc(1) + 1;
+       void *page = tail_alloc(1024) + 1024;
        mh->msg_control = page;
        mh->msg_controllen = CMSG_LEN(0);
        rc = sendmsg(-1, mh, 0);
index c7ebf496e0ac2592e5a4896e0852e2da9dbcb407..d55b395c40ac489a1f9b84b892b83d1f62207a64 100644 (file)
@@ -2,19 +2,38 @@
  * Check decoding of nanosleep syscall.
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <assert.h>
-#include <stdio.h>
-#include <stdint.h>
-#include <signal.h>
-#include <time.h>
-#include <sys/time.h>
+#include "scno.h"
+
+#ifdef __NR_nanosleep
+
+# include <assert.h>
+# include <stdio.h>
+# include <stdint.h>
+# include <signal.h>
+# include <sys/time.h>
+# include <unistd.h>
+
+# include "kernel_old_timespec.h"
+
+static const char *errstr;
+
+static long
+k_nanosleep(const void *const req, void *const rem)
+{
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = (uintptr_t) req;
+       const kernel_ulong_t arg2 = (uintptr_t) rem;
+       const long rc = syscall(__NR_nanosleep, arg1, arg2, bad, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
 
 static void
 handler(int signo)
@@ -25,7 +44,7 @@ int
 main(void)
 {
        struct {
-               struct timespec ts;
+               kernel_old_timespec_t ts;
                uint32_t pad[2];
        } req = {
                .ts.tv_nsec = 0xc0de1,
@@ -38,47 +57,51 @@ main(void)
        const struct sigaction act = { .sa_handler = handler };
        const struct itimerval itv = { .it_value.tv_usec = 111111 };
 
-       if (nanosleep(&req.ts, NULL))
+       if (k_nanosleep(&req.ts, NULL))
                perror_msg_and_fail("nanosleep");
        printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, NULL) = 0\n",
               (long long) req.ts.tv_sec,
               zero_extend_signed_to_ull(req.ts.tv_nsec));
 
-       assert(nanosleep(NULL, &rem.ts) == -1);
-       printf("nanosleep(NULL, %p) = -1 EFAULT (%m)\n", &rem.ts);
+       assert(k_nanosleep(NULL, &rem.ts) == -1);
+       printf("nanosleep(NULL, %p) = %s\n", &rem.ts, errstr);
 
-       if (nanosleep(&req.ts, &rem.ts))
+       if (k_nanosleep(&req.ts, &rem.ts))
                perror_msg_and_fail("nanosleep");
        printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, %p) = 0\n",
               (long long) req.ts.tv_sec,
               zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
 
        req.ts.tv_nsec = 1000000000;
-       assert(nanosleep(&req.ts, &rem.ts) == -1);
-       printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, %p) = -1 EINVAL (%m)\n",
+       assert(k_nanosleep(&req.ts, &rem.ts) == -1);
+       printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, %p) = %s\n",
               (long long) req.ts.tv_sec,
-              zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
+              zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts,
+              errstr);
 
        req.ts.tv_sec = 0xdeadbeefU;
        req.ts.tv_nsec = 0xfacefeedU;
-       assert(nanosleep(&req.ts, &rem.ts) == -1);
-       printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, %p) = -1 EINVAL (%m)\n",
+       assert(k_nanosleep(&req.ts, &rem.ts) == -1);
+       printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, %p) = %s\n",
               (long long) req.ts.tv_sec,
-              zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
+              zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts,
+              errstr);
 
        req.ts.tv_sec = (time_t) 0xcafef00ddeadbeefLL;
        req.ts.tv_nsec = (long) 0xbadc0dedfacefeedLL;
-       assert(nanosleep(&req.ts, &rem.ts) == -1);
-       printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, %p) = -1 EINVAL (%m)\n",
+       assert(k_nanosleep(&req.ts, &rem.ts) == -1);
+       printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, %p) = %s\n",
               (long long) req.ts.tv_sec,
-              zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
+              zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts,
+              errstr);
 
        req.ts.tv_sec = -1;
        req.ts.tv_nsec = -1;
-       assert(nanosleep(&req.ts, &rem.ts) == -1);
-       printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, %p) = -1 EINVAL (%m)\n",
+       assert(k_nanosleep(&req.ts, &rem.ts) == -1);
+       printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, %p) = %s\n",
               (long long) req.ts.tv_sec,
-              zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
+              zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts,
+              errstr);
 
        assert(sigaction(SIGALRM, &act, NULL) == 0);
        assert(sigprocmask(SIG_SETMASK, &set, NULL) == 0);
@@ -88,7 +111,7 @@ main(void)
 
        req.ts.tv_sec = 0;
        req.ts.tv_nsec = 999999999;
-       assert(nanosleep(&req.ts, &rem.ts) == -1);
+       assert(k_nanosleep(&req.ts, &rem.ts) == -1);
        printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}"
               ", {tv_sec=%lld, tv_nsec=%llu})"
               " = ? ERESTART_RESTARTBLOCK (Interrupted by signal)\n",
@@ -101,3 +124,9 @@ main(void)
        puts("+++ exited with 0 +++");
        return 0;
 }
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_nanosleep")
+
+#endif
diff --git a/tests-m32/net--decode-fds-dev-netlink.c b/tests-m32/net--decode-fds-dev-netlink.c
new file mode 100644 (file)
index 0000000..a84f91b
--- /dev/null
@@ -0,0 +1,2 @@
+#define PRINT_SOCK 1
+#include "net-yy-netlink.c"
diff --git a/tests-m32/net--decode-fds-dev-netlink.gen.test b/tests-m32/net--decode-fds-dev-netlink.gen.test
new file mode 100755 (executable)
index 0000000..92663b8
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (net--decode-fds-dev-netlink +net-yy-netlink.test --decode-fds=dev); do not edit.
+set -- --decode-fds=dev
+. "${srcdir=.}/net-yy-netlink.test"
diff --git a/tests-m32/net--decode-fds-none-netlink.c b/tests-m32/net--decode-fds-none-netlink.c
new file mode 100644 (file)
index 0000000..2c8daac
--- /dev/null
@@ -0,0 +1,2 @@
+#define PRINT_SOCK 0
+#include "net-yy-netlink.c"
diff --git a/tests-m32/net--decode-fds-none-netlink.gen.test b/tests-m32/net--decode-fds-none-netlink.gen.test
new file mode 100755 (executable)
index 0000000..ea3f225
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (net--decode-fds-none-netlink +net-yy-netlink.test --decode-fds=none -a9); do not edit.
+set -- --decode-fds=none -a9
+. "${srcdir=.}/net-yy-netlink.test"
diff --git a/tests-m32/net--decode-fds-path-netlink.c b/tests-m32/net--decode-fds-path-netlink.c
new file mode 100644 (file)
index 0000000..a84f91b
--- /dev/null
@@ -0,0 +1,2 @@
+#define PRINT_SOCK 1
+#include "net-yy-netlink.c"
diff --git a/tests-m32/net--decode-fds-path-netlink.gen.test b/tests-m32/net--decode-fds-path-netlink.gen.test
new file mode 100755 (executable)
index 0000000..6943b68
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (net--decode-fds-path-netlink +net-yy-netlink.test --decode-fds=path); do not edit.
+set -- --decode-fds=path
+. "${srcdir=.}/net-yy-netlink.test"
diff --git a/tests-m32/net--decode-fds-socket-netlink.c b/tests-m32/net--decode-fds-socket-netlink.c
new file mode 100644 (file)
index 0000000..7416ccd
--- /dev/null
@@ -0,0 +1,2 @@
+#define PRINT_SOCK 2
+#include "net-yy-netlink.c"
diff --git a/tests-m32/net--decode-fds-socket-netlink.gen.test b/tests-m32/net--decode-fds-socket-netlink.gen.test
new file mode 100755 (executable)
index 0000000..012d876
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (net--decode-fds-socket-netlink +net-yy-netlink.test --decode-fds=socket); do not edit.
+set -- --decode-fds=socket
+. "${srcdir=.}/net-yy-netlink.test"
diff --git a/tests-m32/net-sockaddr--pidns-translation.c b/tests-m32/net-sockaddr--pidns-translation.c
new file mode 100644 (file)
index 0000000..ff432bf
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "net-sockaddr.c"
diff --git a/tests-m32/net-sockaddr--pidns-translation.gen.test b/tests-m32/net-sockaddr--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..ce8db05
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (net-sockaddr--pidns-translation test_pidns -a24 -e trace=connect); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a24 -e trace=connect
index cd9739226314fd9ef6f405fe94a1a86b5465c421..c7e9bde7de75c342e7f8d66491509ea652281cf5 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of sockaddr structures
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2019 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
+#include "pidns.h"
 #include <stddef.h>
 #include <stdio.h>
 #include <string.h>
@@ -40,18 +41,21 @@ check_un(void)
        memset(un->sun_path, '0', sizeof(un->sun_path));
        unsigned int len = sizeof(*un);
        int ret = connect(-1, (void *) un, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_UNIX, sun_path=\"%.*u\"}"
               ", %u) = %d EBADF (%m)\n",
               (int) sizeof(un->sun_path), 0, len, ret);
 
        un->sun_path[1] = 0;
        ret = connect(-1, (void *) un, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_UNIX, sun_path=\"%u\"}, %u)"
               " = %d EBADF (%m)\n", 0, len, ret);
 
        un->sun_path[0] = 0;
        un->sun_path[2] = 1;
        ret = connect(-1, (void *) un, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_UNIX, sun_path=@\"\\0\\001%.*u\"}"
               ", %u) = %d EBADF (%m)\n",
               (int) sizeof(un->sun_path) - 3, 0, len, ret);
@@ -61,12 +65,14 @@ check_un(void)
        memset(un->sun_path, '0', sizeof(un->sun_path));
        len = sizeof(*un) + 2;
        ret = connect(-1, (void *) un, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_UNIX, sun_path=\"%.*u\"}"
               ", %u) = %d EBADF (%m)\n",
               (int) sizeof(un->sun_path), 0, len, ret);
 
        un->sun_path[0] = 0;
        ret = connect(-1, (void *) un, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_UNIX, sun_path=@\"%.*u\"}"
               ", %u) = %d EBADF (%m)\n",
               (int) sizeof(un->sun_path) - 1, 0, len, ret);
@@ -75,18 +81,21 @@ check_un(void)
        un->sun_family = AF_UNIX;
        len = sizeof(*un) - 2;
        ret = connect(-1, (void *) un, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_UNIX, sun_path=\"%.*u\"}"
               ", %u) = %d EBADF (%m)\n",
               (int) sizeof(un->sun_path) - 2, 0, len, ret);
 
        un->sun_path[0] = 0;
        ret = connect(-1, (void *) un, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_UNIX, sun_path=@\"%.*u\"}"
               ", %u) = %d EBADF (%m)\n",
               (int) sizeof(un->sun_path) - 3, 0, len, ret);
 
        len = sizeof(*un);
        ret = connect(-1, (void *) un, len);
+       pidns_print_leader();
        printf("connect(-1, %p, %u) = %d EBADF (%m)\n", un, len, ret);
 
        un = tail_alloc(sizeof(struct sockaddr_storage));
@@ -94,12 +103,14 @@ check_un(void)
        memset(un->sun_path, '0', sizeof(un->sun_path));
        len = sizeof(struct sockaddr_storage) + 1;
        ret = connect(-1, (void *) un, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_UNIX, sun_path=\"%.*u\"}"
               ", %u) = %d EBADF (%m)\n",
               (int) sizeof(un->sun_path), 0, len, ret);
 
        un->sun_path[0] = 0;
        ret = connect(-1, (void *) un, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_UNIX, sun_path=@\"%.*u\"}"
               ", %u) = %d EBADF (%m)\n",
               (int) sizeof(un->sun_path) - 1, 0, len, ret);
@@ -117,6 +128,7 @@ check_in(void)
        in->sin_addr.s_addr = inet_addr(h_addr);
        unsigned int len = sizeof(*in);
        int ret = connect(-1, (void *) in, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_INET, sin_port=htons(%hu)"
               ", sin_addr=inet_addr(\"%s\")}, %u) = %d EBADF (%m)\n",
               h_port, h_addr, len, ret);
@@ -127,6 +139,7 @@ check_in(void)
        in->sin_addr.s_addr = inet_addr(h_addr);
        len = sizeof(*in) + 4;
        ret = connect(-1, (void *) in, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_INET, sin_port=htons(%hu)"
               ", sin_addr=inet_addr(\"%s\")}, %u) = %d EBADF (%m)\n",
               h_port, h_addr, len, ret);
@@ -137,6 +150,7 @@ check_in(void)
        in->sin_addr.s_addr = 0;
        len = sizeof(*in) - 4;
        ret = connect(-1, (void *) in, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_INET, sa_data=\"%s\"}, %u)"
               " = %d EBADF (%m)\n",
               "\\0\\0\\0\\0\\0\\0\\377\\377\\377\\377",
@@ -144,6 +158,7 @@ check_in(void)
 
        len = sizeof(*in);
        ret = connect(-1, (void *) in, len);
+       pidns_print_leader();
        printf("connect(-1, %p, %u) = %d EBADF (%m)\n", in, len, ret);
 }
 
@@ -155,6 +170,7 @@ check_in6_linklocal(struct sockaddr_in6 *const in6, const char *const h_addr)
        in6->sin6_scope_id = 0xfacefeed;
        unsigned int len = sizeof(*in6);
        int ret = connect(-1, (void *) in6, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_INET6, sin6_port=htons(%hu)"
               ", sin6_flowinfo=htonl(%u)"
               ", inet_pton(AF_INET6, \"%s\", &sin6_addr)"
@@ -166,7 +182,8 @@ check_in6_linklocal(struct sockaddr_in6 *const in6, const char *const h_addr)
        in6->sin6_scope_id = ifindex_lo();
        if (in6->sin6_scope_id) {
                ret = connect(-1, (void *) in6, len);
-               printf("connect(-1, {sa_family=AF_INET6, sin6_port=htons(%hu)"
+               pidns_print_leader();
+       printf("connect(-1, {sa_family=AF_INET6, sin6_port=htons(%hu)"
                       ", sin6_flowinfo=htonl(%u)"
                       ", inet_pton(AF_INET6, \"%s\", &sin6_addr)"
                       ", sin6_scope_id=%s}, %u)"
@@ -191,6 +208,7 @@ check_in6(void)
        in6->sin6_scope_id = 0xfacefeed;
        unsigned int len = sizeof(*in6);
        int ret = connect(-1, (void *) in6, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_INET6, sin6_port=htons(%hu)"
               ", sin6_flowinfo=htonl(%u)"
               ", inet_pton(AF_INET6, \"%s\", &sin6_addr)"
@@ -209,6 +227,7 @@ check_in6(void)
        in6->sin6_scope_id = 0xfacefeed;
        len = sizeof(*in6) + 4;
        ret = connect(-1, (void *) in6, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_INET6, sin6_port=htons(%hu)"
               ", sin6_flowinfo=htonl(%u)"
               ", inet_pton(AF_INET6, \"%s\", &sin6_addr)"
@@ -223,6 +242,7 @@ check_in6(void)
        inet_pton(AF_INET6, h_addr, &in6->sin6_addr);
        len = sizeof(*in6) - sizeof(in6->sin6_scope_id);
        ret = connect(-1, (void *) in6, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_INET6, sin6_port=htons(%hu)"
               ", sin6_flowinfo=htonl(%u)"
               ", inet_pton(AF_INET6, \"%s\", &sin6_addr)}, %u)"
@@ -236,6 +256,7 @@ check_in6(void)
        memset(&in6->sin6_addr, '0', sizeof(in6->sin6_addr) - 4);
        len = sizeof(*in6) - sizeof(in6->sin6_scope_id) - 4;
        ret = connect(-1, (void *) in6, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_INET6"
               ", sa_data=\"\\0\\0\\0\\0\\0\\000%.*u\"}, %u)"
               " = %d EBADF (%m)\n",
@@ -244,6 +265,7 @@ check_in6(void)
 
        len = sizeof(*in6) - sizeof(in6->sin6_scope_id);
        ret = connect(-1, (void *) in6, len);
+       pidns_print_leader();
        printf("connect(-1, %p, %u) = %d EBADF (%m)\n", in6, len, ret);
 }
 
@@ -262,6 +284,7 @@ check_ipx(void)
        void *ipx = tail_memdup(&c_ipx, sizeof(c_ipx));
        unsigned int len = sizeof(c_ipx);
        int ret = connect(-1, ipx, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_IPX, sipx_port=htons(%u)"
               ", sipx_network=htonl(%#x)"
               ", sipx_node=[%#02x, %#02x, %#02x, %#02x, %#02x, %#02x]"
@@ -316,18 +339,21 @@ check_ax25(void)
        fill_memory(sax, size);
        sax->fsa_ax25.sax25_family = AF_AX25;
        rc = connect(-1, sax_void, sizeof(struct sockaddr_ax25) - 1);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_AX25, sa_data=\"\\202\\203\\204\\205"
               "\\206\\207\\210\\211\\212\\213\\214\\215\\216\"}, %zu) = %s\n",
               sizeof(struct sockaddr_ax25) - 1, sprintrc(rc));
 
        memcpy(sax, &ax25, sizeof(ax25));
        rc = connect(-1, sax_void, sizeof(struct sockaddr_ax25));
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_AX25, fsa_ax25={sax25_call=VALID-13"
               ", sax25_ndigis=8}, fsa_digipeater=[/* ??? */]}, %zu) = %s\n",
               sizeof(struct sockaddr_ax25), sprintrc(rc));
 
        sax->fsa_ax25.sax25_ndigis = 0;
        rc = connect(-1, sax_void, sizeof(struct sockaddr_ax25));
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_AX25, sax25_call=VALID-13"
               ", sax25_ndigis=0}, %zu) = %s\n",
               sizeof(struct sockaddr_ax25), sprintrc(rc));
@@ -335,6 +361,7 @@ check_ax25(void)
        sax->fsa_ax25.sax25_ndigis = 8;
        size = sizeof(struct sockaddr_ax25) + sizeof(ax25_address) * 3 + 1;
        rc = connect(-1, sax_void, size);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_AX25, fsa_ax25={sax25_call=VALID-13"
               ", sax25_ndigis=8}, fsa_digipeater"
               "=[{ax25_call=\"\\xa6\\xa0\\x82\\x40\\x86\\x8a\\x00\""
@@ -348,6 +375,7 @@ check_ax25(void)
        sax->fsa_digipeater[2].ax25_call[6] = 0x4;
        size = sizeof(struct sockaddr_ax25) + sizeof(ax25_address) * 4;
        rc = connect(-1, sax_void, size);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_AX25, fsa_ax25={sax25_call=VALID-13"
               ", sax25_ndigis=8}, fsa_digipeater"
               "=[{ax25_call=\"\\xa6\\xa0\\x82\\x40\\x86\\x8a\\x00\""
@@ -365,6 +393,7 @@ check_ax25(void)
        for (size_t i = 0; i < 3; i++) {
                size = sizeof(ax25) + sizeof(ax25_address) * (i / 2);
                rc = connect(-1, sax_void, size);
+               pidns_print_leader();
                printf("connect(-1, {sa_family=AF_AX25"
                       ", fsa_ax25={sax25_call=VALID-13, sax25_ndigis=%d}"
                       ", fsa_digipeater=[VALID2-7, OK-15, %s /* FINE-2 */"
@@ -423,25 +452,28 @@ check_x25(void)
                .sx25_family = AF_X25,
                .sx25_addr = { "0123456789abcdef" },
        };
-       void *x25_void = tail_memdup(&c_x25, sizeof(c_x25) + 1);
-       struct sockaddr_x25 *x25 = x25_void;
+       void *const x25_void = tail_memdup(&c_x25, sizeof(c_x25) + 1);
        long rc;
 
-       rc = connect(-1, x25, sizeof(c_x25) - 1);
+       rc = connect(-1, x25_void, sizeof(c_x25) - 1);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_X25"
               ", sa_data=\"0123456789abcde\"}, %zu) = %s\n",
               sizeof(c_x25) - 1, sprintrc(rc));
 
        for (size_t i = 0; i < 2; i++) {
-               rc = connect(-1, x25, sizeof(c_x25) + i);
+               rc = connect(-1, x25_void, sizeof(c_x25) + i);
+               pidns_print_leader();
                printf("connect(-1, {sa_family=AF_X25"
                       ", sx25_addr={x25_addr=\"0123456789abcde\"...}"
                       "}, %zu) = %s\n",
                       sizeof(c_x25) + i, sprintrc(rc));
        }
 
+       struct sockaddr_x25 *const x25 = x25_void;
        x25->sx25_addr.x25_addr[10] = '\0';
-       rc = connect(-1, x25, sizeof(c_x25));
+       rc = connect(-1, x25_void, sizeof(c_x25));
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_X25"
               ", sx25_addr={x25_addr=\"0123456789\"}"
               "}, %zu) = %s\n",
@@ -457,19 +489,21 @@ check_nl(void)
        nl->nl_groups = 0xfacefeed;
        unsigned int len = sizeof(*nl);
        int ret = connect(-1, (void *) nl, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_NETLINK, nl_pid=%d"
               ", nl_groups=%#08x}, %u) = %d EBADF (%m)\n",
               nl->nl_pid, nl->nl_groups, len, ret);
 
        nl = ((void *) nl) - 4;
        nl->nl_family = AF_NETLINK;
-       nl->nl_pid = 1234567890;
+       nl->nl_pid = getpid();
        nl->nl_groups = 0xfacefeed;
        len = sizeof(*nl) + 4;
        ret = connect(-1, (void *) nl, len);
-       printf("connect(-1, {sa_family=AF_NETLINK, nl_pid=%d"
+       pidns_print_leader();
+       printf("connect(-1, {sa_family=AF_NETLINK, nl_pid=%d%s"
               ", nl_groups=%#08x}, %u) = %d EBADF (%m)\n",
-              nl->nl_pid, nl->nl_groups, len, ret);
+              nl->nl_pid, pidns_pid2str(PT_TGID), nl->nl_groups, len, ret);
 }
 
 static void
@@ -487,6 +521,7 @@ check_ll(void)
        void *ll = tail_memdup(&c_ll, sizeof(c_ll));
        unsigned int len = sizeof(c_ll);
        int ret = connect(-1, ll, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_PACKET"
               ", sll_protocol=htons(ETH_P_ALL)"
               ", sll_ifindex=%u, sll_hatype=ARPHRD_ETHER"
@@ -502,6 +537,7 @@ check_ll(void)
 
        ((struct sockaddr_ll *) ll)->sll_halen++;
        ret = connect(-1, ll, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_PACKET"
               ", sll_protocol=htons(ETH_P_ALL)"
               ", sll_ifindex=%u, sll_hatype=ARPHRD_ETHER"
@@ -517,6 +553,7 @@ check_ll(void)
 
        ((struct sockaddr_ll *) ll)->sll_halen = 0;
        ret = connect(-1, ll, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_PACKET"
               ", sll_protocol=htons(ETH_P_ALL)"
               ", sll_ifindex=%u, sll_hatype=ARPHRD_ETHER"
@@ -526,6 +563,7 @@ check_ll(void)
        ((struct sockaddr_ll *) ll)->sll_ifindex = ifindex_lo();
        if (((struct sockaddr_ll *) ll)->sll_ifindex) {
                ret = connect(-1, ll, len);
+       pidns_print_leader();
                printf("connect(-1, {sa_family=AF_PACKET"
                       ", sll_protocol=htons(ETH_P_ALL)"
                       ", sll_ifindex=%s"
@@ -543,11 +581,24 @@ check_hci(void)
        TAIL_ALLOC_OBJECT_VAR_PTR(struct sockaddr_hci, hci);
        hci->hci_family = AF_BLUETOOTH;
        hci->hci_dev = htobs(h_port);
+# ifdef HAVE_STRUCT_SOCKADDR_HCI_HCI_CHANNEL
        hci->hci_channel = HCI_CHANNEL_RAW;
+# endif
        unsigned int len = sizeof(*hci);
-       int ret = connect(-1, (void *) hci, len);
+
+       int ret = connect(-1, (void *) hci, 4);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_BLUETOOTH, hci_dev=htobs(%hu)"
-              ", hci_channel=HCI_CHANNEL_RAW}, %u) = %d EBADF (%m)\n",
+              "}, 4) = %d EBADF (%m)\n",
+              h_port, ret);
+
+       ret = connect(-1, (void *) hci, len);
+       pidns_print_leader();
+       printf("connect(-1, {sa_family=AF_BLUETOOTH, hci_dev=htobs(%hu)"
+# ifdef HAVE_STRUCT_SOCKADDR_HCI_HCI_CHANNEL
+              ", hci_channel=HCI_CHANNEL_RAW"
+# endif
+              "}, %u) = %d EBADF (%m)\n",
               h_port, len, ret);
 }
 
@@ -561,6 +612,7 @@ check_sco(void)
        void *sco = tail_memdup(&c_sco, sizeof(c_sco));
        unsigned int len = sizeof(c_sco);
        int ret = connect(-1, sco, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_BLUETOOTH"
               ", sco_bdaddr=%02x:%02x:%02x:%02x:%02x:%02x"
               "}, %u) = %d EBADF (%m)\n",
@@ -581,6 +633,7 @@ check_rc(void)
        void *rc = tail_memdup(&c_rc, sizeof(c_rc));
        unsigned int len = sizeof(c_rc);
        int ret = connect(-1, rc, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_BLUETOOTH"
               ", rc_bdaddr=%02x:%02x:%02x:%02x:%02x:%02x"
               ", rc_channel=%u}, %u) = %d EBADF (%m)\n",
@@ -608,6 +661,7 @@ check_l2(void)
        unsigned int len = sizeof(c_l2);
 
        int ret = connect(-1, l2, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_BLUETOOTH"
               ", l2_psm=htobs(L2CAP_PSM_DYN_START + %hu)"
               ", l2_bdaddr=%02x:%02x:%02x:%02x:%02x:%02x"
@@ -629,6 +683,7 @@ check_l2(void)
 # endif
        memcpy(l2, &c_l2, sizeof(c_l2));
        ret = connect(-1, l2, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_BLUETOOTH"
               ", l2_psm=htobs(L2CAP_PSM_SDP)"
               ", l2_bdaddr=%02x:%02x:%02x:%02x:%02x:%02x"
@@ -649,6 +704,7 @@ check_l2(void)
 # endif
        memcpy(l2, &c_l2, sizeof(c_l2));
        ret = connect(-1, l2, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_BLUETOOTH"
               ", l2_psm=htobs(0xbad /* L2CAP_PSM_??? */)"
               ", l2_bdaddr=%02x:%02x:%02x:%02x:%02x:%02x"
@@ -666,6 +722,7 @@ check_l2(void)
        c_l2.l2_cid = htobs(0xffff);
        memcpy(l2, &c_l2, 12);
        ret = connect(-1, l2, 12);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_BLUETOOTH"
               ", l2_psm=htobs(L2CAP_PSM_AUTO_END)"
               ", l2_bdaddr=%02x:%02x:%02x:%02x:%02x:%02x"
@@ -689,6 +746,7 @@ check_raw(void)
        u.sa->sa_family = 0xff;
        unsigned int len = sizeof(*u.st) + 8;
        int ret = connect(-1, (void *) u.st, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=%#x /* AF_??? */, sa_data=\"%.*u\"}"
               ", %u) = %d EBADF (%m)\n", u.sa->sa_family,
               (int) (sizeof(*u.st) - sizeof(u.sa->sa_family)), 0, len, ret);
@@ -696,19 +754,22 @@ check_raw(void)
        u.sa->sa_family = 0;
        len = sizeof(u.sa->sa_family) + 1;
        ret = connect(-1, (void *) u.st, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_UNSPEC, sa_data=\"0\"}, %u)"
               " = %d EBADF (%m)\n", len, ret);
 
        u.sa->sa_family = AF_BLUETOOTH;
-       ++len;
        ret = connect(-1, (void *) u.st, len);
-       printf("connect(-1, {sa_family=AF_BLUETOOTH, sa_data=\"00\"}, %u)"
+       pidns_print_leader();
+       printf("connect(-1, {sa_family=AF_BLUETOOTH, sa_data=\"0\"}, %u)"
               " = %d EBADF (%m)\n", len, ret);
 }
 
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        check_un();
        check_in();
        check_in6();
@@ -725,6 +786,7 @@ main(void)
 #endif
        check_raw();
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
index 38b1a0d4c5a060b824f902c1068a2773a309d469..e2c9558644dc60c35471a09cfab49df609a1dc4a 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2013-2017 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 #include <linux/sock_diag.h>
 #include <linux/netlink_diag.h>
 
+#ifndef PRINT_SOCK
+# define PRINT_SOCK 2
+#endif
+
+#if PRINT_SOCK == 2
+# define FMT_UNBOUND "<NETLINK:[%lu]>"
+# define FMT_BOUND   "<NETLINK:[SOCK_DIAG:%u]>"
+# define ARG_UNBOUND inode
+# define ARG_BOUND   addr.nl_pid
+#elif PRINT_SOCK == 1
+# define FMT_UNBOUND "<socket:[%lu]>"
+# define FMT_BOUND   "<socket:[%lu]>"
+# define ARG_UNBOUND inode
+# define ARG_BOUND   inode
+#else
+# define FMT_UNBOUND "%s"
+# define FMT_BOUND   "%s"
+# define ARG_UNBOUND ""
+# define ARG_BOUND   ""
+#endif
+
 int
 main(void)
 {
@@ -37,25 +58,27 @@ main(void)
        const int fd = socket(AF_NETLINK, SOCK_RAW, NETLINK_SOCK_DIAG);
        if (fd < 0)
                perror_msg_and_skip("socket");
+#if PRINT_SOCK
        const unsigned long inode = inode_of_sockfd(fd);
+#endif
        printf("socket(AF_NETLINK, SOCK_RAW, NETLINK_SOCK_DIAG) = "
-              "%d<NETLINK:[%lu]>\n", fd, inode);
+              "%d" FMT_UNBOUND "\n", fd, ARG_UNBOUND);
 
        if (bind(fd, sa, *len))
                perror_msg_and_skip("bind");
-       printf("bind(%d<NETLINK:[%lu]>, {sa_family=AF_NETLINK"
-              ", nl_pid=%u, nl_groups=00000000}, %u) = 0\n",
-              fd, inode, addr.nl_pid, (unsigned) *len);
+       printf("bind(%d" FMT_UNBOUND ", {sa_family=AF_NETLINK"
+              ", nl_pid=%d, nl_groups=00000000}, %u) = 0\n",
+              fd, ARG_UNBOUND, addr.nl_pid, (unsigned) *len);
 
        if (getsockname(fd, sa, len))
                perror_msg_and_fail("getsockname");
-       printf("getsockname(%d<NETLINK:[SOCK_DIAG:%u]>, {sa_family=AF_NETLINK"
-              ", nl_pid=%u, nl_groups=00000000}, [%u]) = 0\n",
-              fd, addr.nl_pid, addr.nl_pid, (unsigned) *len);
+       printf("getsockname(%d" FMT_BOUND ", {sa_family=AF_NETLINK"
+              ", nl_pid=%d, nl_groups=00000000}, [%u]) = 0\n",
+              fd, ARG_BOUND, addr.nl_pid, (unsigned) *len);
 
        if (close(fd))
                perror_msg_and_fail("close");
-       printf("close(%d<NETLINK:[SOCK_DIAG:%u]>) = 0\n", fd, addr.nl_pid);
+       printf("close(%d" FMT_BOUND ") = 0\n", fd, ARG_BOUND);
 
        puts("+++ exited with 0 +++");
        return 0;
index 892c9799bc40b992f8590b6d70f3483a21438bbf..729c59a70391ed1a4b2d9f334bc75027781bea26 100755 (executable)
@@ -6,7 +6,7 @@
 # Copyright (c) 2014 Masatake YAMATO <yamato@redhat.com>
 # Copyright (c) 2014-2016 Dmitry V. Levin <ldv@altlinux.org>
 # Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 check_prog sed
 
+opts="${*:--yy}"
+
 run_prog ../netlink_netlink_diag
 run_prog > /dev/null
-run_strace -a22 -yy -eclose,network $args > "$EXP"
+run_strace -a22 ${opts} -eclose,network $args > "$EXP"
 
 # Filter out close() calls made by ld.so and libc.
 sed -n '/socket/,$p' < "$LOG" > "$OUT"
diff --git a/tests-m32/netlink_audit--pidns-translation.c b/tests-m32/netlink_audit--pidns-translation.c
new file mode 100644 (file)
index 0000000..e08f916
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "netlink_audit.c"
diff --git a/tests-m32/netlink_audit--pidns-translation.test b/tests-m32/netlink_audit--pidns-translation.test
new file mode 100755 (executable)
index 0000000..1a39ead
--- /dev/null
@@ -0,0 +1,13 @@
+#!/bin/sh
+#
+# Check pidns translation of NETLINK_SOCK_DIAG protocol decoding
+#
+# Copyright (c) 2020 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+. "${srcdir=.}/init.sh"
+
+run_prog ../netlink_netlink_diag
+test_pidns -e trace=sendto "$@"
index eba609a149c5a866c7384ab7143ebc67de6f9865..559c2f711721ec41acb6a19ef4630b751d2993c8 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
+#include "pidns.h"
 #include <stdio.h>
 #include <string.h>
 #include <unistd.h>
 static void
 test_nlmsg_type(const int fd)
 {
+       PIDNS_TEST_INIT;
+
        long rc;
        struct nlmsghdr nlh = {
                .nlmsg_len = sizeof(nlh),
                .nlmsg_type = AUDIT_GET,
                .nlmsg_flags = NLM_F_REQUEST,
+               .nlmsg_pid = getpid(),
        };
 
        rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0);
+       pidns_print_leader();
        printf("sendto(%d, {len=%u, type=AUDIT_GET"
-              ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+              ", flags=NLM_F_REQUEST, seq=0, pid=%d%s}"
               ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
-              fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc));
+              fd, nlh.nlmsg_len, nlh.nlmsg_pid, pidns_pid2str(PT_TGID),
+              (unsigned) sizeof(nlh), sprintrc(rc));
 }
 
 int main(void)
@@ -39,6 +45,7 @@ int main(void)
 
        test_nlmsg_type(fd);
 
+       pidns_print_leader();
        printf("+++ exited with 0 +++\n");
 
        return 0;
index fd901d8845fa5bffc3e6e89267464898c44e24ec..99d9eb5d9343dd5c3c72163683b6fc5a2237216e 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2014-2017 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -264,7 +264,7 @@ test_nlmsgerr(const int fd)
        printf("sendto(%d, {{len=%u, type=NLMSG_ERROR, flags=NLM_F_REQUEST"
               ", seq=0, pid=0}, {error=-EACCES"
               ", msg={len=%u, type=NLMSG_NOOP, flags=NLM_F_REQUEST|0x%x"
-              ", seq=%u, pid=%u}}}, %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+              ", seq=%u, pid=%d}}}, %u, MSG_DONTWAIT, NULL, 0) = %s\n",
               fd, nlh->nlmsg_len, err->msg.nlmsg_len, NLM_F_DUMP,
               err->msg.nlmsg_seq, err->msg.nlmsg_pid,
               nlh->nlmsg_len, sprintrc(rc));
@@ -289,7 +289,7 @@ test_nlmsgerr(const int fd)
        printf("sendto(%d, {{len=%u, type=NLMSG_ERROR, flags=NLM_F_REQUEST"
               ", seq=0, pid=0}, {error=-EACCES"
               ", msg={{len=%u, type=NLMSG_NOOP, flags=NLM_F_REQUEST|0x%x"
-              ", seq=%u, pid=%u}, \"\\x61\\x62\\x63\\x64\"}}}"
+              ", seq=%u, pid=%d}, \"\\x61\\x62\\x63\\x64\"}}}"
               ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
               fd, nlh->nlmsg_len, err->msg.nlmsg_len, NLM_F_DUMP,
               err->msg.nlmsg_seq, err->msg.nlmsg_pid,
diff --git a/tests-m32/netlink_sock_diag-v.sh b/tests-m32/netlink_sock_diag-v.sh
deleted file mode 100755 (executable)
index 0fb467d..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/sh
-#
-# Check verbose decoding of NETLINK_SOCK_DIAG protocol
-#
-# Copyright (c) 2017-2018 The strace developers.
-# All rights reserved.
-#
-# SPDX-License-Identifier: GPL-2.0-or-later
-
-. "${srcdir=.}/init.sh"
-
-run_prog ../netlink_netlink_diag
-run_strace_match_diff -v -e trace=sendto
index d5fb977b5c5a47e73c288f49e11d5f421546fc48..f3f17ec0b44431b62b23915fb993344e85507a21 100755 (executable)
@@ -2,7 +2,7 @@
 #
 # Check decoding of NETLINK_SOCK_DIAG protocol
 #
-# Copyright (c) 2017-2018 The strace developers.
+# Copyright (c) 2017-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,4 +10,4 @@
 . "${srcdir=.}/init.sh"
 
 run_prog ../netlink_netlink_diag
-run_strace_match_diff -e trace=sendto
+run_strace_match_diff -e trace=sendto "$@"
index 955dce6d3c0d2660512874120fce2a2ddaa2544c..805248afc15344311e50878a219e2bb0a1d58101 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_newfstatat
 
index 40ec797cb24eaf9759a4066537ff472c51400608..9bea27f2925503b9c1024a9031e4517e740aadbb 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (newfstatat -a32 -v -P stat.sample -P /dev/full); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (newfstatat -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
+run_strace_match_diff -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full
index 2c5927b23055a197d3f0ad8163fc1c5187094e4f..1331386f80342f7d27812b3c53ebd65a08f18fbf 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of netlink attribute.
  *
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -105,7 +105,7 @@ test_nlattr(const int fd)
        nla = NLMSG_ATTR(msg, sizeof(msg->udm));
        *nla = (struct nlattr) {
                .nla_len = NLA_HDRLEN + 4,
-               .nla_type = UNIX_DIAG_SHUTDOWN + 1
+               .nla_type = UNIX_DIAG_FIRST_UNUSED
        };
        memcpy(RTA_DATA(nla), "1234", 4);
        rc = sendto(fd, msg, msg_len, MSG_DONTWAIT, NULL, 0);
@@ -116,7 +116,7 @@ test_nlattr(const int fd)
               ", nla_type=%#x /* UNIX_DIAG_??? */}"
               ", \"\\x31\\x32\\x33\\x34\"}}"
               ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
-              fd, msg_len, nla->nla_len, UNIX_DIAG_SHUTDOWN + 1,
+              fd, msg_len, nla->nla_len, UNIX_DIAG_FIRST_UNUSED,
               msg_len, sprintrc(rc));
 
        /* print one struct nlattr and fetch fail second struct nlattr */
@@ -201,7 +201,7 @@ test_nlattr(const int fd)
        for (i = 0; i < ABBREV_LEN; ++i) {
                nla[i * 2] = (struct nlattr) {
                        .nla_len = NLA_HDRLEN * 2 - 1,
-                       .nla_type = UNIX_DIAG_SHUTDOWN + 1 + i
+                       .nla_type = UNIX_DIAG_FIRST_UNUSED + i
                };
                fill_memory_ex(&nla[i * 2 + 1], NLA_HDRLEN,
                               '0' + i, '~' - '0' - i);
@@ -218,7 +218,7 @@ test_nlattr(const int fd)
                if (i)
                        printf(", ");
                printf("{{nla_len=%u, nla_type=%#x /* UNIX_DIAG_??? */}, ",
-                      nla->nla_len, UNIX_DIAG_SHUTDOWN + 1 + i);
+                      nla->nla_len, UNIX_DIAG_FIRST_UNUSED + i);
                print_quoted_hex(&nla[i * 2 + 1], NLA_HDRLEN - 1);
                printf("}");
        }
@@ -286,7 +286,7 @@ test_nla_type(const int fd)
               ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
               fd, msg_len, nla->nla_len, msg_len, sprintrc(rc));
 
-       nla->nla_type = NLA_F_NESTED | (UNIX_DIAG_SHUTDOWN + 1);
+       nla->nla_type = NLA_F_NESTED | (UNIX_DIAG_FIRST_UNUSED);
        rc = sendto(fd, msg, msg->nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
        printf("sendto(%d, {{len=%u, type=SOCK_DIAG_BY_FAMILY"
               ", flags=NLM_F_DUMP, seq=0, pid=0}, {udiag_family=AF_UNIX"
@@ -294,7 +294,7 @@ test_nla_type(const int fd)
               ", udiag_ino=0, udiag_cookie=[0, 0]}, {nla_len=%u"
               ", nla_type=NLA_F_NESTED|%#x /* UNIX_DIAG_??? */}}"
               ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
-              fd, msg->nlh.nlmsg_len, nla->nla_len, UNIX_DIAG_SHUTDOWN + 1,
+              fd, msg->nlh.nlmsg_len, nla->nla_len, UNIX_DIAG_FIRST_UNUSED,
               msg->nlh.nlmsg_len, sprintrc(rc));
 }
 
index f90c620826621e97830dc043df591709b8039130..2cb2b54938659cd6a14fc0c8184876b893e1944e 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -85,7 +85,8 @@ main(void)
        TEST_NLATTR_OBJECT_EX(fd, nlh0, hdrlen,
                              init_crypto_user_alg, print_crypto_user_alg,
                              CRYPTOCFGA_REPORT_HASH,
-                             pattern, rhash, print_quoted_memory,
+                             pattern, rhash, sizeof(rhash),
+                             print_quoted_memory,
                              printf("{type=\"efgh\"");
                              PRINT_FIELD_U(", ", rhash, blocksize);
                              PRINT_FIELD_U(", ", rhash, digestsize);
@@ -104,7 +105,8 @@ main(void)
        TEST_NLATTR_OBJECT_EX(fd, nlh0, hdrlen,
                              init_crypto_user_alg, print_crypto_user_alg,
                              CRYPTOCFGA_REPORT_BLKCIPHER,
-                             pattern, rblkcipher, print_quoted_memory,
+                             pattern, rblkcipher, sizeof(rblkcipher),
+                             print_quoted_memory,
                              printf("{type=\"abcd\", geniv=\"efgh\"");
                              PRINT_FIELD_U(", ", rblkcipher, blocksize);
                              PRINT_FIELD_U(", ", rblkcipher, min_keysize);
@@ -124,7 +126,8 @@ main(void)
        TEST_NLATTR_OBJECT_EX(fd, nlh0, hdrlen,
                              init_crypto_user_alg, print_crypto_user_alg,
                              CRYPTOCFGA_REPORT_AEAD,
-                             pattern, raead, print_quoted_memory,
+                             pattern, raead, sizeof(raead),
+                             print_quoted_memory,
                              printf("{type=\"abcd\", geniv=\"efgh\"");
                              PRINT_FIELD_U(", ", raead, blocksize);
                              PRINT_FIELD_U(", ", raead, maxauthsize);
@@ -140,7 +143,7 @@ main(void)
        TEST_NLATTR_OBJECT_EX(fd, nlh0, hdrlen,
                              init_crypto_user_alg, print_crypto_user_alg,
                              CRYPTOCFGA_REPORT_RNG,
-                             pattern, rrng, print_quoted_memory,
+                             pattern, rrng, sizeof(rrng), print_quoted_memory,
                              printf("{type=\"abcd\"");
                              PRINT_FIELD_U(", ", rrng, seedsize);
                              printf("}"));
@@ -156,7 +159,8 @@ main(void)
        TEST_NLATTR_OBJECT_EX(fd, nlh0, hdrlen,
                              init_crypto_user_alg, print_crypto_user_alg,
                              CRYPTOCFGA_REPORT_CIPHER,
-                             pattern, rcipher, print_quoted_memory,
+                             pattern, rcipher, sizeof(rcipher),
+                             print_quoted_memory,
                              printf("{type=\"abcd\"");
                              PRINT_FIELD_U(", ", rcipher, blocksize);
                              PRINT_FIELD_U(", ", rcipher, min_keysize);
index a8660196909833925fc4c8b02135e62e2e6f0a1d..4e6df29dd29994a00fd5c044c625b8e33e17a60c 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -27,6 +27,8 @@
 #endif
 #define IFLA_LINK_NETNSID 37
 #define IFLA_EVENT 44
+#define IFLA_PROP_LIST 52
+#define IFLA_ALT_IFNAME 53
 
 #ifndef IFLA_INFO_KIND
 # define IFLA_INFO_KIND 1
@@ -36,6 +38,8 @@
 # define IFLA_VF_PORT 1
 #endif
 
+static const unsigned int hdrlen = sizeof(struct ifinfomsg);
+
 static void
 init_ifinfomsg(struct nlmsghdr *const nlh, const unsigned int msg_len)
 {
@@ -65,6 +69,27 @@ print_ifinfomsg(const unsigned int msg_len)
               msg_len);
 }
 
+static void
+init_prop_list_msg(struct nlmsghdr *const nlh,
+                    const unsigned int msg_len)
+{
+       init_ifinfomsg(nlh, msg_len);
+
+       struct nlattr *nla = NLMSG_ATTR(nlh, hdrlen);
+       SET_STRUCT(struct nlattr, nla,
+               .nla_len = msg_len - NLMSG_SPACE(hdrlen),
+               .nla_type = IFLA_PROP_LIST,
+       );
+}
+
+static void
+print_prop_list_msg(const unsigned int msg_len)
+{
+       print_ifinfomsg(msg_len);
+       printf(", {{nla_len=%u, nla_type=IFLA_PROP_LIST}",
+              msg_len - NLMSG_SPACE(hdrlen));
+}
+
 int
 main(void)
 {
@@ -96,9 +121,8 @@ main(void)
                .tx_compressed = 0xefdadfab
        };
        const int fd = create_nl_socket(NETLINK_ROUTE);
-       const unsigned int hdrlen = sizeof(struct ifinfomsg);
        void *nlh0 = midtail_alloc(NLMSG_SPACE(hdrlen),
-                                  NLA_HDRLEN + sizeof(st));
+                                  2 * NLA_HDRLEN + MAX(sizeof(st), 20));
 
        static char pattern[4096];
        fill_memory_ex(pattern, sizeof(pattern), 'a', 'z' - 'a' + 1);
@@ -118,40 +142,39 @@ main(void)
                           IFLA_LINK_NETNSID, pattern, netnsid,
                           printf("%d", netnsid));
 
-       TEST_NLATTR_OBJECT(fd, nlh0, hdrlen,
-                          init_ifinfomsg, print_ifinfomsg,
-                          IFLA_STATS, pattern, st,
-                          PRINT_FIELD_U("{", st, rx_packets);
-                          PRINT_FIELD_U(", ", st, tx_packets);
-                          PRINT_FIELD_U(", ", st, rx_bytes);
-                          PRINT_FIELD_U(", ", st, tx_bytes);
-                          PRINT_FIELD_U(", ", st, rx_errors);
-                          PRINT_FIELD_U(", ", st, tx_errors);
-                          PRINT_FIELD_U(", ", st, rx_dropped);
-                          PRINT_FIELD_U(", ", st, tx_dropped);
-                          PRINT_FIELD_U(", ", st, multicast);
-                          PRINT_FIELD_U(", ", st, collisions);
-                          PRINT_FIELD_U(", ", st, rx_length_errors);
-                          PRINT_FIELD_U(", ", st, rx_over_errors);
-                          PRINT_FIELD_U(", ", st, rx_crc_errors);
-                          PRINT_FIELD_U(", ", st, rx_frame_errors);
-                          PRINT_FIELD_U(", ", st, rx_fifo_errors);
-                          PRINT_FIELD_U(", ", st, rx_missed_errors);
-                          PRINT_FIELD_U(", ", st, tx_aborted_errors);
-                          PRINT_FIELD_U(", ", st, tx_carrier_errors);
-                          PRINT_FIELD_U(", ", st, tx_fifo_errors);
-                          PRINT_FIELD_U(", ", st, tx_heartbeat_errors);
-                          PRINT_FIELD_U(", ", st, tx_window_errors);
-                          PRINT_FIELD_U(", ", st, rx_compressed);
-                          PRINT_FIELD_U(", ", st, tx_compressed);
+       const unsigned int sizeof_stats =
+               offsetofend(struct rtnl_link_stats, tx_compressed);
+       TEST_NLATTR_OBJECT_MINSZ(fd, nlh0, hdrlen,
+                                init_ifinfomsg, print_ifinfomsg,
+                                IFLA_STATS, pattern, st, sizeof_stats,
+                                PRINT_FIELD_U("{", st, rx_packets);
+                                PRINT_FIELD_U(", ", st, tx_packets);
+                                PRINT_FIELD_U(", ", st, rx_bytes);
+                                PRINT_FIELD_U(", ", st, tx_bytes);
+                                PRINT_FIELD_U(", ", st, rx_errors);
+                                PRINT_FIELD_U(", ", st, tx_errors);
+                                PRINT_FIELD_U(", ", st, rx_dropped);
+                                PRINT_FIELD_U(", ", st, tx_dropped);
+                                PRINT_FIELD_U(", ", st, multicast);
+                                PRINT_FIELD_U(", ", st, collisions);
+                                PRINT_FIELD_U(", ", st, rx_length_errors);
+                                PRINT_FIELD_U(", ", st, rx_over_errors);
+                                PRINT_FIELD_U(", ", st, rx_crc_errors);
+                                PRINT_FIELD_U(", ", st, rx_frame_errors);
+                                PRINT_FIELD_U(", ", st, rx_fifo_errors);
+                                PRINT_FIELD_U(", ", st, rx_missed_errors);
+                                PRINT_FIELD_U(", ", st, tx_aborted_errors);
+                                PRINT_FIELD_U(", ", st, tx_carrier_errors);
+                                PRINT_FIELD_U(", ", st, tx_fifo_errors);
+                                PRINT_FIELD_U(", ", st, tx_heartbeat_errors);
+                                PRINT_FIELD_U(", ", st, tx_window_errors);
+                                PRINT_FIELD_U(", ", st, rx_compressed);
+                                PRINT_FIELD_U(", ", st, tx_compressed);
 #ifdef HAVE_STRUCT_RTNL_LINK_STATS_RX_NOHANDLER
-                          PRINT_FIELD_U(", ", st, rx_nohandler);
+                                PRINT_FIELD_U(", ", st, rx_nohandler);
 #endif
                           printf("}"));
 
-#ifdef HAVE_STRUCT_RTNL_LINK_STATS_RX_NOHANDLER
-       const unsigned int sizeof_stats =
-               offsetofend(struct rtnl_link_stats, tx_compressed);
        TEST_NLATTR(fd, nlh0, hdrlen,
                    init_ifinfomsg, print_ifinfomsg,
                    IFLA_STATS, sizeof_stats, &st, sizeof_stats,
@@ -179,7 +202,6 @@ main(void)
                    PRINT_FIELD_U(", ", st, rx_compressed);
                    PRINT_FIELD_U(", ", st, tx_compressed);
                    printf("}"));
-#endif /* HAVE_STRUCT_RTNL_LINK_STATS_RX_NOHANDLER */
 
        static const struct rtnl_link_ifmap map = {
                .mem_start = 0xadcbefedefbcdedb,
@@ -341,6 +363,33 @@ main(void)
                                   printf("%s", ifla_events[i].str));
        }
 
+       /* IFLA_PROP_LIST */
+       struct {
+               char p1[20];
+       } buf;
+       fill_memory(&buf, sizeof(buf));
+       TEST_NESTED_NLATTR_OBJECT_EX_(fd, nlh0, hdrlen,
+                                     init_prop_list_msg, print_prop_list_msg,
+                                     IFLA_ALT_IFNAME, "IFLA_ALT_IFNAME",
+                                     pattern, buf, print_quoted_stringn, 1,
+                                     print_quoted_memory(&buf, sizeof(buf));
+                                     printf("..."));
+
+       /* IFLA_ALT_IFNAME */
+       static const char alt_ifname[] = "OH HAI THAR\r\n\t\377\0\v\x7e";
+       TEST_NLATTR(fd, nlh0, hdrlen,
+                   init_ifinfomsg, print_ifinfomsg,
+                   IFLA_ALT_IFNAME,
+                   sizeof(alt_ifname), alt_ifname, sizeof(alt_ifname),
+                   print_quoted_memory(alt_ifname, sizeof(alt_ifname) - 1));
+
+       TEST_NLATTR(fd, nlh0, hdrlen,
+                   init_ifinfomsg, print_ifinfomsg,
+                   IFLA_ALT_IFNAME,
+                   sizeof(alt_ifname) - 1, alt_ifname, sizeof(alt_ifname) - 1,
+                   print_quoted_memory(alt_ifname, sizeof(alt_ifname) - 1);
+                   printf("..."));
+
        puts("+++ exited with 0 +++");
        return 0;
 }
index 080e73718e7e8d95ca62ac0d83c61de285938a2b..9c648d0529a9c81d2d68bcdeba5dd43251c353ff 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * IFLA_LINKINFO netlink attribute decoding check.
  *
- * Copyright (c) 2018-2019 The strace developers.
+ * Copyright (c) 2018-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -347,7 +347,6 @@ main(void)
        /* bridge attrs */
        static const struct val_name und_br_attrs[] = {
                { 0, "IFLA_BR_UNSPEC" },
-               { 20, "IFLA_BR_GROUP_ADDR" },
                { 21, "IFLA_BR_FDB_FLUSH" },
                { 40, "IFLA_BR_PAD" },
                { 47, "0x2f /* IFLA_BR_??? */" },
@@ -367,6 +366,21 @@ main(void)
                                        "\\x63\\x64\\x65\\x66\"" });
        }
 
+       static const struct val_name hwa_br_attrs[] = {
+               { 20, "IFLA_BR_GROUP_ADDR" },
+       };
+
+       for (size_t k = 0; k < ARRAY_SIZE(hwa_br_attrs); k++) {
+               TEST_NESTED_LINKINFO(fd, nlh0, 2, "IFLA_INFO_DATA", "bridge",
+                                    hwa_br_attrs[k].val, hwa_br_attrs[k].name,
+                                    unknown_msg, pattern,
+                                    { 2, "ab:ac" },
+                                    { 4, "ab:ac:db:cd" },
+                                    { 6, "ab:ac:db:cd:61:62" },
+                                    { 8, "ab:ac:db:cd:61:62:63:64" },
+                                    { 10, "ab:ac:db:cd:61:62:63:64:65:66" });
+       }
+
        static const struct val_name u64_br_attrs[] = {
                { 16, "IFLA_BR_HELLO_TIMER" },
                { 17, "IFLA_BR_TCN_TIMER" },
index df2a2ef6e67c5d4818297a815edef1f0c629526d..49003614fbed40c0630a5093aac417452191cfd7 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -57,6 +57,21 @@ main(void)
                                  printf(", vsi_type_id=\"\\x61\\x62\\x63\"");
                                  PRINT_FIELD_U(", ", vsi, vsi_type_version);
                                  printf("}"));
+
+       static const struct ifla_port_vsi vsi2 = {
+               .vsi_mgr_id = 0xab,
+               .vsi_type_id = { 10, 0, 255 },
+               .vsi_type_version = 0xef,
+               .pad = { 0, 1, 2 },
+       };
+       TEST_NESTED_NLATTR_OBJECT(fd, nlh0, hdrlen,
+                                 init_ifinfomsg, print_ifinfomsg,
+                                 IFLA_PORT_VSI_TYPE, pattern, vsi2,
+                                 PRINT_FIELD_U("{", vsi2, vsi_mgr_id);
+                                 printf(", vsi_type_id=\"\\x0a\\x00\\xff\"");
+                                 PRINT_FIELD_U(", ", vsi2, vsi_type_version);
+                                 printf(", pad=\"\\x00\\x01\\x02\"");
+                                 printf("}"));
 #endif
 
        puts("+++ exited with 0 +++");
diff --git a/tests-m32/nlattr_ifla_xdp-y.c b/tests-m32/nlattr_ifla_xdp-y.c
new file mode 100644 (file)
index 0000000..791c2be
--- /dev/null
@@ -0,0 +1,3 @@
+#define PRINT_SOCK 1
+#define FD9_PATH "</dev/full>"
+#include "nlattr_ifla_xdp.c"
diff --git a/tests-m32/nlattr_ifla_xdp-y.gen.test b/tests-m32/nlattr_ifla_xdp-y.gen.test
new file mode 100755 (executable)
index 0000000..5826766
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ifla_xdp-y +netlink_sock_diag.test -y; exec 9</dev/full); do not edit.
+set -- -y; exec 9</dev/full
+. "${srcdir=.}/netlink_sock_diag.test"
index 232f21452a2d7eb2d8c1f82d5c2e2a8afbebc45f..3796e5ea15acbbc91501b5fbc85c7cbedc28d5f7 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 #endif
 #include <linux/rtnetlink.h>
 
+#define XLAT_MACROS_ONLY
+# include "xlat/rtnl_ifla_xdp_attrs.h"
+#undef XLAT_MACROS_ONLY
+
 #if !HAVE_DECL_IFLA_XDP
 enum { IFLA_XDP = 43 };
 #endif
-#ifndef IFLA_XDP_FD
-# define IFLA_XDP_FD 1
-#endif
-
-#ifndef IFLA_XDP_ATTACHED
-# define IFLA_XDP_ATTACHED 2
-#endif
-
-#ifndef IFLA_XDP_PROG_ID
-# define IFLA_XDP_PROG_ID 4
-#endif
-
-#ifndef IFLA_XDP_DRV_PROG_ID
-# define IFLA_XDP_DRV_PROG_ID 5
-#endif
 
-#ifndef IFLA_XDP_SKB_PROG_ID
-# define IFLA_XDP_SKB_PROG_ID 6
+#if !HAVE_DECL_XDP_ATTACHED_NONE
+enum { XDP_ATTACHED_NONE = 0 };
 #endif
-
-#ifndef IFLA_XDP_HW_PROG_ID
-# define IFLA_XDP_HW_PROG_ID 7
-#endif
-
-#ifndef XDP_ATTACHED_NONE
-# define XDP_ATTACHED_NONE 0
-#endif
-
-#ifndef XDP_ATTACHED_MULTI
-# define XDP_ATTACHED_MULTI 4
+#if !HAVE_DECL_XDP_ATTACHED_MULTI
+enum { XDP_ATTACHED_MULTI = 4 };
 #endif
 
 #define IFLA_ATTR IFLA_XDP
 #include "nlattr_ifla.h"
 
+#ifndef FD9_PATH
+# define FD9_PATH ""
+#endif
+
 int
 main(void)
 {
@@ -118,6 +102,18 @@ main(void)
                                              printf("%u", num));
        }
 
+       /* IFLA_XDP_EXPECTED_FD */
+       TEST_NESTED_NLATTR_OBJECT_EX(fd, nlh0, hdrlen,
+                                    init_ifinfomsg, print_ifinfomsg,
+                                    IFLA_XDP_EXPECTED_FD, pattern, num, 1,
+                                    printf("%d", num));
+
+       int exp_fd = 9;
+       TEST_NESTED_NLATTR_OBJECT_EX(fd, nlh0, hdrlen,
+                                    init_ifinfomsg, print_ifinfomsg,
+                                    IFLA_XDP_EXPECTED_FD, pattern, exp_fd, 1,
+                                    printf("9" FD9_PATH));
+
        puts("+++ exited with 0 +++");
        return 0;
 }
index 8cce46cd709c8d5f74caf7f83beaeacc0536af9b..9956b9610a05d27ba8991d1883be99a1c2263491 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -73,10 +73,10 @@ main(void)
 
        char nla_type_str[256];
        sprintf(nla_type_str, "%#x /* INET_DIAG_REQ_??? */",
-               INET_DIAG_REQ_BYTECODE + 1);
+               INET_DIAG_REQ_PROTOCOL + 1);
        TEST_NLATTR_(fd, nlh0, hdrlen,
                     init_inet_diag_req, print_inet_diag_req,
-                    INET_DIAG_REQ_BYTECODE + 1, nla_type_str,
+                    INET_DIAG_REQ_PROTOCOL + 1, nla_type_str,
                     4, pattern, 4,
                     print_quoted_hex(pattern, 4));
 
index 7ac89ff0d1669d2812ed5045696dfcbf317438ac..e7b0c498c1d46b295900e402c7e0877f0c0157b3 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -122,9 +122,13 @@ main(void)
                                     printf(", state=MDB_TEMPORARY");
 #  ifdef HAVE_STRUCT_BR_MDB_ENTRY_FLAGS
                                     printf(", flags=MDB_FLAGS_OFFLOAD");
+#  else
+                                    printf(", flags=0");
 #  endif
 #  ifdef HAVE_STRUCT_BR_MDB_ENTRY_VID
                                     PRINT_FIELD_U(", ", entry, vid);
+#  else
+                                    printf(", vid=0");
 #  endif
                                     printf(", addr={u=");
                                     print_quoted_hex(&entry.addr.u,
@@ -145,9 +149,13 @@ main(void)
                    printf(", state=MDB_TEMPORARY");
 #  ifdef HAVE_STRUCT_BR_MDB_ENTRY_FLAGS
                    printf(", flags=MDB_FLAGS_OFFLOAD");
+#  else
+                   printf(", flags=0");
 #  endif
 #  ifdef HAVE_STRUCT_BR_MDB_ENTRY_VID
                    PRINT_FIELD_U(", ", entry, vid);
+#  else
+                   printf(", vid=0");
 #  endif
                    printf(", addr={u=");
                    print_quoted_hex(&entry.addr.u, sizeof(entry.addr.u));
index 7ec9992a8f76a1b940309fc8dcddb908b523fd5e..f954ce41aff1bba7f91c7a9ac478133840633e24 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -12,6 +12,8 @@
 
 # include <stdio.h>
 # include "test_nlattr.h"
+/* struct br_mdb_entry needs a definition of struct in6_addr.  */
+# include <netinet/in.h>
 # include <linux/if_bridge.h>
 # include <linux/rtnetlink.h>
 
index 2dd82ce48e592bafa3e2be9675057d4a4c6591ef..8404c7a0d643b5a19cdc69ff0c65398f828b2e91 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -99,6 +99,17 @@ main(void)
                           NDA_PORT, pattern, port,
                           printf("htons(%u)", ntohs(port)));
 
+       static const uint8_t mac[6] = "\xf8\xc2\x49\x13\x57\xbd";
+       TEST_NLATTR(fd, nlh0, hdrlen, init_ndmsg, print_ndmsg,
+                   NDA_LLADDR, sizeof(mac) - 1, mac, sizeof(mac) - 1,
+                   for (unsigned int i = 0; i < sizeof(mac) - 1; ++i)
+                       printf("%s%02x", i ? ":" : "", mac[i]));
+
+       TEST_NLATTR(fd, nlh0, hdrlen, init_ndmsg, print_ndmsg,
+                   NDA_LLADDR, sizeof(mac), mac, sizeof(mac),
+                   for (unsigned int i = 0; i < sizeof(mac); ++i)
+                       printf("%s%02x", i ? ":" : "", mac[i]));
+
        puts("+++ exited with 0 +++");
        return 0;
 }
index 7177ea2a3ee13514357df108601c7cf1dfcac860..f069775fb6085bb048d1cba0acc85968b5b6fd7d 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_packet_diag_msg +netlink_sock_diag-v.sh ); do not edit.
-set -- 
-. "${srcdir=.}/netlink_sock_diag-v.sh"
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_packet_diag_msg +netlink_sock_diag.test -v); do not edit.
+set -- -v
+. "${srcdir=.}/netlink_sock_diag.test"
index c0ebaf89ed009abbe2fadd6cdd4a3f0a2e11b6a8..3fb4b743a33dc8c13d0af9374d688c38c1da0560 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 # include <linux/gen_stats.h>
 # include <linux/rtnetlink.h>
 
+# if !HAVE_DECL_TCA_STATS_PKT64
+enum { TCA_STATS_PKT64 = 8 };
+# endif
+
 const unsigned int hdrlen = sizeof(struct tcmsg);
 
 static void
@@ -120,6 +124,12 @@ main(void)
                                  printf("}"));
 # endif
 
+       static const uint64_t pkt64 = 0xdeadc0defacefeedULL;
+       TEST_NESTED_NLATTR_OBJECT(fd, nlh0, hdrlen,
+                                 init_tcmsg, print_tcmsg,
+                                 TCA_STATS_PKT64, pattern, pkt64,
+                                 printf("16045693111314087661"));
+
        puts("+++ exited with 0 +++");
        return 0;
 }
index b8bd7e35733ab28af40a4b209ce3d094c83a4c96..e25e32a60c93b3647e047f1970e081c7d2263bc4 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 
 #include <stdio.h>
 #include "test_nlattr.h"
+#include <linux/pkt_cls.h>
 #include <linux/rtnetlink.h>
 
+#if !HAVE_DECL_TCA_ACT_PAD
+enum { TCA_ACT_PAD = 5 };
+#endif
+#if !HAVE_DECL_TCA_ACT_COOKIE
+enum { TCA_ACT_COOKIE = 6 };
+#endif
+#if !HAVE_DECL_TCA_ACT_FLAGS
+enum { TCA_ACT_FLAGS = 7 };
+#endif
+#if !HAVE_DECL_TCA_ACT_HW_STATS
+enum { TCA_ACT_HW_STATS = 8 };
+#endif
+#if !HAVE_DECL_TCA_ACT_USED_HW_STATS
+enum { TCA_ACT_USED_HW_STATS = 9 };
+#endif
+
+
 static void
 init_tcamsg(struct nlmsghdr *const nlh, const unsigned int msg_len)
 {
@@ -47,14 +65,72 @@ main(void)
        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 /* TCA_ACT_??? */", nla_type);
-       TEST_NLATTR_(fd, nlh0, hdrlen,
-                    init_tcamsg, print_tcamsg,
-                    nla_type, nla_type_str,
-                    4, pattern, 4,
-                    print_quoted_hex(pattern, 4));
+       /* Invalid */
+       static const unsigned int nla_invalid[] = { 10, 0xffff & NLA_TYPE_MASK };
+       for (size_t i = 0; i < ARRAY_SIZE(nla_invalid); i++) {
+               char nla_type_str[256];
+               sprintf(nla_type_str, "%#x /* TCA_ACT_??? */", nla_invalid[i]);
+               TEST_NLATTR_(fd, nlh0, hdrlen,
+                            init_tcamsg, print_tcamsg,
+                            nla_invalid[i], nla_type_str,
+                            21, pattern, 21,
+                            print_quoted_hex(pattern, 21));
+       }
+
+       /* Default decoder */
+       static const struct {
+               unsigned int val;
+               const char *str;
+       } nla_default[] = {
+               { ARG_STR(TCA_ACT_UNSPEC) },
+               { ARG_STR(TCA_ACT_OPTIONS) },
+               { ARG_STR(TCA_ACT_PAD) },
+               { ARG_STR(TCA_ACT_COOKIE) },
+       };
+       for (size_t i = 0; i < ARRAY_SIZE(nla_default); i++) {
+               TEST_NLATTR_(fd, nlh0, hdrlen,
+                            init_tcamsg, print_tcamsg,
+                            nla_default[i].val, nla_default[i].str,
+                            17, pattern, 17,
+                            print_quoted_hex(pattern, 17));
+       }
+
+       /* TCA_ACT_KIND */
+       TEST_NLATTR(fd, nlh0, hdrlen, init_tcamsg, print_tcamsg,
+                   TCA_ACT_KIND, 21, pattern, 21,
+                   print_quoted_cstring(pattern, 22));
+
+       static const char kind[] = "Hello\tthere";
+       TEST_NLATTR(fd, nlh0, hdrlen, init_tcamsg, print_tcamsg,
+                   TCA_ACT_KIND, sizeof(kind), kind, sizeof(kind),
+                   print_quoted_string(kind));
+
+       /* TCA_ACT_INDEX */
+       static uint32_t idx = 0xdeadc0de;
+       TEST_NLATTR(fd, nlh0, hdrlen, init_tcamsg, print_tcamsg,
+                   TCA_ACT_INDEX, sizeof(idx), &idx, sizeof(idx),
+                   printf("%u", idx));
+
+       /* TCA_ACT_FLAGS */
+       static uint32_t flags = 0xfacebeef;
+       TEST_NLATTR(fd, nlh0, hdrlen, init_tcamsg, print_tcamsg,
+                   TCA_ACT_FLAGS, sizeof(flags), &flags, sizeof(flags),
+                   printf("TCA_ACT_FLAGS_NO_PERCPU_STATS|0xfacebeee"));
+
+       /* TCA_ACT_HW_STATS, TCA_ACT_USED_HW_STATS */
+       static const struct strval32 nla_hw_st[] = {
+               { ARG_STR(TCA_ACT_HW_STATS) },
+               { ARG_STR(TCA_ACT_USED_HW_STATS) },
+       };
+
+       static uint32_t hw_st = 0xfacebeef;
+       for (size_t i = 0; i < ARRAY_SIZE(nla_hw_st); i++) {
+               TEST_NLATTR_(fd, nlh0, hdrlen, init_tcamsg, print_tcamsg,
+                            nla_hw_st[i].val, nla_hw_st[i].str,
+                            sizeof(hw_st), &hw_st, sizeof(hw_st),
+                            printf("TCA_ACT_HW_STATS_IMMEDIATE|"
+                                   "TCA_ACT_HW_STATS_DELAYED|0xfacebeec"));
+       }
 
        puts("+++ exited with 0 +++");
        return 0;
index a6495b6b6ddf2c7052e3a7ad7a9638e367ac720c..8892de87557a3ab882ff0d199c2dfa45a34e6a0b 100755 (executable)
@@ -1,8 +1,8 @@
 #!/bin/sh
 #
-# Check decoding of out-of-range syscalls along with debug ouput
+# Check decoding of out-of-range syscalls along with debug output
 #
-# Copyright (c) 2017-2018 The strace developers.
+# Copyright (c) 2017-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
index 529f50ee0e6753dc70cf6935ef0aa035336dd751..1eb900711e7112addb2f5422866f8c386a62c01f 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of out-of-range syscalls.
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -14,7 +14,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 #include "sysent_shorthand_defs.h"
 
@@ -28,13 +28,6 @@ static const struct_sysent syscallent[] = {
 # define DEBUG_PRINT 0
 #endif
 
-#if defined __X32_SYSCALL_BIT && defined __NR_read \
- && (__X32_SYSCALL_BIT & __NR_read) != 0
-# define SYSCALL_BIT __X32_SYSCALL_BIT
-#else
-# define SYSCALL_BIT 0
-#endif
-
 #if DEBUG_PRINT
 static const char *strace_name;
 static FILE *debug_out;
index 92ab3efb998438e9a6c88de2c5bc96b0b84d86f0..f095bc4366a5c296e20efb45ed167d176bdc1daf 100644 (file)
@@ -2,14 +2,14 @@
  * Check decoding of "old mmap" edition of mmap syscall.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 /*
  * On s390x and m68k, this is the mmap syscall used by glibc, so,
@@ -22,6 +22,7 @@
                || defined __s390__ || defined __s390x__) \
        && (defined PATH_TRACING || !(defined __s390x__ || defined __m68k__))
 
+# include <errno.h>
 # include <stdio.h>
 # include <string.h>
 # include <sys/mman.h>
@@ -35,8 +36,9 @@ int
 main(void)
 {
        long rc = syscall(__NR_mmap, 0);
+       const bool implemented = rc != -1 || errno != ENOSYS;
 # ifndef PATH_TRACING
-       printf("mmap(NULL) = %ld %s (%m)\n", rc, errno2name());
+       printf("mmap(NULL) = %s\n", sprintrc(rc));
 # endif
 
        const unsigned long args1_c[6] = {
@@ -60,42 +62,51 @@ main(void)
 
        rc = syscall(__NR_mmap, args);
 # if XLAT_RAW
-       printf("mmap(%#lx, %lu, %#x, %#x, %d, %#lx) = %ld %s (%m)\n",
+       printf("mmap(%#lx, %lu, %#x, %#x, %d, %#lx) = %s\n",
               args1_c[0], args1_c[1], PROT_READ|PROT_EXEC, MAP_FILE | MAP_FIXED,
-              (int) args1_c[4], args1_c[5], rc, errno2name());
+              (int) args1_c[4], args1_c[5], sprintrc(rc));
 # elif XLAT_VERBOSE
        printf("mmap(%#lx, %lu, %#x /* PROT_READ|PROT_EXEC */"
-              ", %#x /* MAP_FILE|MAP_FIXED */, %d, %#lx) = %ld %s (%m)\n",
+              ", %#x /* MAP_FILE|MAP_FIXED */, %d, %#lx) = %s\n",
               args1_c[0], args1_c[1], PROT_READ|PROT_EXEC, MAP_FILE | MAP_FIXED,
-              (int) args1_c[4], args1_c[5], rc, errno2name());
+              (int) args1_c[4], args1_c[5], sprintrc(rc));
 # else
        printf("mmap(%#lx, %lu, PROT_READ|PROT_EXEC, MAP_FILE|MAP_FIXED"
-              ", %d, %#lx) = %ld %s (%m)\n",
+              ", %d, %#lx) = %s\n",
               args1_c[0], args1_c[1], (int) args1_c[4], args1_c[5],
-              rc, errno2name());
+              sprintrc(rc));
 # endif
 
        memcpy(args, args2_c, sizeof(args2_c));
        rc = syscall(__NR_mmap, args);
 # ifndef PATH_TRACING
+       const char *errstr;
+       if (implemented) {
+               char *str;
+               if (asprintf(&str, "%#lx", rc) < 0)
+                       perror_msg_and_fail("asprintf");
+               errstr = str;
+       } else {
+               errstr = sprintrc(rc);
+       }
 #  if XLAT_RAW
-       printf("mmap(NULL, %lu, %#x, %#x, %d, %#lx) = %#lx\n",
+       printf("mmap(NULL, %lu, %#x, %#x, %d, %#lx) = %s\n",
               args2_c[1], PROT_READ|PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS,
-              (int) args2_c[4], args2_c[5], rc);
+              (int) args2_c[4], args2_c[5], errstr);
 #  elif XLAT_VERBOSE
        printf("mmap(NULL, %lu, %#x /* PROT_READ|PROT_WRITE */"
-              ", %#x /* MAP_PRIVATE|MAP_ANONYMOUS */, %d, %#lx) = %#lx\n",
+              ", %#x /* MAP_PRIVATE|MAP_ANONYMOUS */, %d, %#lx) = %s\n",
               args2_c[1], PROT_READ|PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS,
-              (int) args2_c[4], args2_c[5], rc);
+              (int) args2_c[4], args2_c[5], errstr);
 #  else
        printf("mmap(NULL, %lu, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS"
-              ", %d, %#lx) = %#lx\n",
-              args2_c[1], (int) args2_c[4], args2_c[5], rc);
+              ", %d, %#lx) = %s\n",
+              args2_c[1], (int) args2_c[4], args2_c[5], errstr);
 #  endif
 # endif
 
        void *addr = (void *) rc;
-       if (mprotect(addr, page_size, PROT_NONE))
+       if (implemented && mprotect(addr, page_size, PROT_NONE))
                perror_msg_and_fail("mprotect(%p, %lu, PROT_NONE)",
                                    addr, page_size);
 
index c2624777ef3aceff2ca75330e10ebed0576ad7f3..12f0645b715e36608ff1c8561e644fe5659a2947 100644 (file)
@@ -3,14 +3,14 @@
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_oldfstat && HAVE_STRUCT___OLD_KERNEL_STAT
 
index 0444b17f0d64cc08a57cbeabbde9a6a4da654b07..d6e8f4e3708b66e8bb517f816efdbe1e3c6f67f2 100644 (file)
@@ -3,14 +3,14 @@
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_oldlstat && HAVE_STRUCT___OLD_KERNEL_STAT
 
index 4e927521226ac8ed796c2a4aadd5892ab93c06d7..5c55538202d145727f2417a773b57aaedf525b1d 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2018-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_select && defined __NR__newselect \
  && __NR_select != __NR__newselect \
index 0af3554130bd31ae6ccd32d50125ff08b04adfd7..b6f83081845d29e8ebbf67788d9c5f4a85979629 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_select && defined __NR__newselect \
  && __NR_select != __NR__newselect \
index 03b40335a5ab787dec4234353703ed32d04f6a53..022dd33cf9e2f597b5a09b34e9ef45e96f5c44a4 100644 (file)
@@ -3,14 +3,14 @@
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_oldstat && HAVE_STRUCT___OLD_KERNEL_STAT
 
index 43a3ae6815e3357288e6c73c5ec6ef08ed9ae618..05e1fb0f0826f5e77bd26fc9687974167af4334b 100644 (file)
@@ -1,13 +1,13 @@
 /*
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_open
 
diff --git a/tests-m32/open_tree-P.c b/tests-m32/open_tree-P.c
new file mode 100644 (file)
index 0000000..0097d76
--- /dev/null
@@ -0,0 +1,2 @@
+#define PATH_TRACING
+#include "open_tree.c"
diff --git a/tests-m32/open_tree-P.gen.test b/tests-m32/open_tree-P.gen.test
new file mode 100755 (executable)
index 0000000..73d5cdb
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (open_tree-P -a30 --decode-fds -P /dev/full -e trace=open_tree); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a30 --decode-fds -P /dev/full -e trace=open_tree
diff --git a/tests-m32/open_tree.c b/tests-m32/open_tree.c
new file mode 100644 (file)
index 0000000..bdce09e
--- /dev/null
@@ -0,0 +1,110 @@
+/*
+ * Check decoding of open_tree syscall.
+ *
+ * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_open_tree
+
+# include <fcntl.h>
+# include <limits.h>
+# include <stdio.h>
+# include <stdint.h>
+# include <unistd.h>
+
+static const char *errstr;
+
+static long
+k_open_tree(const unsigned int dfd,
+           const void *fname,
+           const unsigned int flags)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = fill | dfd;
+       const kernel_ulong_t arg2 = (uintptr_t) fname;
+       const kernel_ulong_t arg3 = fill | flags;
+       const long rc = syscall(__NR_open_tree, arg1, arg2, arg3, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
+int
+main(void)
+{
+       skip_if_unavailable("/proc/self/fd/");
+
+       static const char path_full[] = "/dev/full";
+       const char *const path = tail_memdup(path_full, sizeof(path_full));
+       char *const fname = tail_alloc(PATH_MAX);
+       const void *const efault = fname + PATH_MAX;
+       const char *const empty = efault - 1;
+       fill_memory_ex(fname, PATH_MAX, '0', 10);
+
+        int dfd = open(path, O_WRONLY);
+        if (dfd < 0)
+                perror_msg_and_fail("open: %s", path);
+
+       k_open_tree(-1, 0, 1);
+# ifndef PATH_TRACING
+       printf("open_tree(-1, NULL, %s) = %s\n", "OPEN_TREE_CLONE", errstr);
+# endif
+
+       k_open_tree(-100, fname, 0);
+# ifndef PATH_TRACING
+       printf("open_tree(%s, \"%.*s\"..., 0) = %s\n",
+              "AT_FDCWD", (int) PATH_MAX - 1, fname, errstr);
+# endif
+
+       fname[PATH_MAX - 1] = '\0';
+       k_open_tree(dfd, fname, 0x8000);
+       printf("open_tree(%d<%s>, \"%s\", %s) = %s\n",
+              dfd, path, fname, "AT_RECURSIVE", errstr);
+
+# ifdef O_CLOEXEC
+       k_open_tree(-1, efault, O_CLOEXEC | 1);
+#  ifndef PATH_TRACING
+       printf("open_tree(-1, %p, %s) = %s\n",
+              efault, "OPEN_TREE_CLONE|OPEN_TREE_CLOEXEC", errstr);
+#  endif
+
+       k_open_tree(-1, empty, -1);
+#  ifndef PATH_TRACING
+       printf("open_tree(-1, \"\", %s|%#x) = %s\n",
+              "OPEN_TREE_CLONE|OPEN_TREE_CLOEXEC"
+              "|AT_SYMLINK_NOFOLLOW|AT_REMOVEDIR|AT_SYMLINK_FOLLOW"
+              "|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|AT_RECURSIVE",
+              -1U & ~0x9f01 & ~O_CLOEXEC,
+              errstr);
+#  endif
+# endif /* O_CLOEXEC */
+
+       if (k_open_tree(-1, path, 0) < 0)
+               printf("open_tree(-1, \"%s\", 0) = %s\n",
+                      path, errstr);
+       else
+               printf("open_tree(-1, \"%s\", 0) = %s<%s>\n",
+                      path, errstr, path);
+
+       if (k_open_tree(dfd, empty, 0x1000) < 0)
+               printf("open_tree(%d<%s>, \"\", %s) = %s\n",
+                      dfd, path, "AT_EMPTY_PATH", errstr);
+       else
+               printf("open_tree(%d<%s>, \"\", %s) = %s<%s>\n",
+                      dfd, path, "AT_EMPTY_PATH", errstr, path);
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_open_tree")
+
+#endif
diff --git a/tests-m32/open_tree.gen.test b/tests-m32/open_tree.gen.test
new file mode 100755 (executable)
index 0000000..535010b
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (open_tree -a30 -y); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a30 -y
index d4a741787515b9534a1a347a40a2a5e508dafcdf..8d1bca0bb21de8cbc54bc506959c38b796150c37 100644 (file)
@@ -1,13 +1,13 @@
 /*
  * Copyright (c) 2016 Katerina Koukiou <k.koukiou@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_openat
 
diff --git a/tests-m32/openat2-Xabbrev.c b/tests-m32/openat2-Xabbrev.c
new file mode 100644 (file)
index 0000000..ba18bde
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_ABBREV 1
+#include "openat2.c"
diff --git a/tests-m32/openat2-Xabbrev.gen.test b/tests-m32/openat2-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..371daa3
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (openat2-Xabbrev --trace=openat2 -a35 -Xabbrev); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff --trace=openat2 -a35 -Xabbrev
diff --git a/tests-m32/openat2-Xraw.c b/tests-m32/openat2-Xraw.c
new file mode 100644 (file)
index 0000000..7a50005
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "openat2.c"
diff --git a/tests-m32/openat2-Xraw.gen.test b/tests-m32/openat2-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..bf5084e
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (openat2-Xraw --trace=openat2 -a32 -Xraw); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff --trace=openat2 -a32 -Xraw
diff --git a/tests-m32/openat2-Xverbose.c b/tests-m32/openat2-Xverbose.c
new file mode 100644 (file)
index 0000000..a69ad16
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "openat2.c"
diff --git a/tests-m32/openat2-Xverbose.gen.test b/tests-m32/openat2-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..946996b
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (openat2-Xverbose --trace=openat2 -a35 -Xverbose); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff --trace=openat2 -a35 -Xverbose
diff --git a/tests-m32/openat2-v-y-Xabbrev.c b/tests-m32/openat2-v-y-Xabbrev.c
new file mode 100644 (file)
index 0000000..daceedd
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_ABBREV 1
+#include "openat2-v-y.c"
diff --git a/tests-m32/openat2-v-y-Xabbrev.gen.test b/tests-m32/openat2-v-y-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..665be81
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (openat2-v-y-Xabbrev --trace=openat2 -a35 -v -y -Xabbrev </dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff --trace=openat2 -a35 -v -y -Xabbrev </dev/full
diff --git a/tests-m32/openat2-v-y-Xraw.c b/tests-m32/openat2-v-y-Xraw.c
new file mode 100644 (file)
index 0000000..ce958c7
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "openat2-v-y.c"
diff --git a/tests-m32/openat2-v-y-Xraw.gen.test b/tests-m32/openat2-v-y-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..c4f7141
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (openat2-v-y-Xraw --trace=openat2 -a32 -v -y -Xraw </dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff --trace=openat2 -a32 -v -y -Xraw </dev/full
diff --git a/tests-m32/openat2-v-y-Xverbose.c b/tests-m32/openat2-v-y-Xverbose.c
new file mode 100644 (file)
index 0000000..1dc4715
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "openat2-v-y.c"
diff --git a/tests-m32/openat2-v-y-Xverbose.gen.test b/tests-m32/openat2-v-y-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..37b1744
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (openat2-v-y-Xverbose --trace=openat2 -a44 -v -y -Xverbose </dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff --trace=openat2 -a44 -v -y -Xverbose </dev/full
diff --git a/tests-m32/openat2-v-y.c b/tests-m32/openat2-v-y.c
new file mode 100644 (file)
index 0000000..dcbca1a
--- /dev/null
@@ -0,0 +1,2 @@
+#define FD0_PATH "</dev/full>"
+#include "openat2-v.c"
diff --git a/tests-m32/openat2-v-y.gen.test b/tests-m32/openat2-v-y.gen.test
new file mode 100755 (executable)
index 0000000..9e4a394
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (openat2-v-y --trace=openat2 -a36 -v -y </dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff --trace=openat2 -a36 -v -y </dev/full
diff --git a/tests-m32/openat2-v.c b/tests-m32/openat2-v.c
new file mode 100644 (file)
index 0000000..fafe533
--- /dev/null
@@ -0,0 +1,2 @@
+#define VERBOSE 1
+#include "openat2.c"
diff --git a/tests-m32/openat2-v.gen.test b/tests-m32/openat2-v.gen.test
new file mode 100755 (executable)
index 0000000..1b24cbc
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (openat2-v --trace=openat2 -a35 -v); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff --trace=openat2 -a35 -v
diff --git a/tests-m32/openat2-y.c b/tests-m32/openat2-y.c
new file mode 100644 (file)
index 0000000..50b1863
--- /dev/null
@@ -0,0 +1,2 @@
+#define FD0_PATH "</dev/full>"
+#include "openat2.c"
diff --git a/tests-m32/openat2-y.gen.test b/tests-m32/openat2-y.gen.test
new file mode 100755 (executable)
index 0000000..5dad223
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (openat2-y --trace=openat2 -a36 -y </dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff --trace=openat2 -a36 -y </dev/full
diff --git a/tests-m32/openat2.c b/tests-m32/openat2.c
new file mode 100644 (file)
index 0000000..864dc15
--- /dev/null
@@ -0,0 +1,172 @@
+/*
+ * Check decoding of openat2 syscall.
+ *
+ * Copyright (c) 2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_openat2
+
+# include <errno.h>
+# include <stdint.h>
+# include <inttypes.h>
+# include <stdio.h>
+# include <string.h>
+# include <unistd.h>
+# include <asm/fcntl.h>
+
+# ifdef HAVE_LINUX_OPENAT2
+#  include <linux/openat2.h>
+# endif
+
+# ifndef HAVE_LINUX_OPENAT2
+struct open_how {
+       uint64_t flags;
+       uint64_t mode;
+       uint64_t resolve;
+};
+# endif
+
+# ifndef AT_FDCWD
+#  define AT_FDCWD -100
+# endif
+# ifndef RESOLVE_NO_XDEV
+#  define RESOLVE_NO_XDEV 0x01
+# endif
+# ifndef RESOLVE_IN_ROOT
+#  define RESOLVE_IN_ROOT 0x10
+# endif
+
+# ifndef O_TMPFILE
+#  if defined __hppa__
+#   define __O_TMPFILE     040000000
+#  elif defined __alpha__
+#   define __O_TMPFILE     0100000000
+#  elif defined __sparc__
+#   define __O_TMPFILE     0200000000
+#  else
+#   define __O_TMPFILE     020000000
+#  endif
+# endif
+
+# ifndef VERBOSE
+#  define VERBOSE 0
+# endif
+# ifndef FD0_PATH
+#  define FD0_PATH ""
+# endif
+
+static const char sample[] = "openat2.sample";
+
+int
+main(void)
+{
+       long rc;
+       const char *rcstr;
+       struct open_how *how = tail_alloc(sizeof(*how));
+       struct open_how *how_big = tail_alloc(sizeof(*how_big) + 8);
+
+       rc = syscall(__NR_openat2, 0, NULL, NULL,
+                    (kernel_ulong_t) 0xdeadc0debadc0dedULL);
+       printf("openat2(0" FD0_PATH ", NULL, NULL, %llu) = %s\n",
+              (unsigned long long) (kernel_ulong_t) 0xdeadc0debadc0dedULL,
+              sprintrc(rc));
+
+       rc = syscall(__NR_openat2, -100, "", how + 1, sizeof(*how));
+       printf("openat2(%s, \"\", %p, %zu) = %s\n",
+              XLAT_KNOWN(-100, "AT_FDCWD"), how + 1, sizeof(*how),
+              sprintrc(rc));
+
+       rc = syscall(__NR_openat2, -1, sample, how, 11);
+       printf("openat2(-1, \"%s\", %p, 11) = %s\n", sample, how, sprintrc(rc));
+
+       static struct strval64 flags[] = {
+               { ARG_STR(O_RDONLY|O_EXCL) },
+               { ARG_STR(O_WRONLY|O_CREAT) },
+               { ARG_STR(O_RDWR|O_LARGEFILE) },
+# ifdef O_TMPFILE
+               { ARG_STR(O_ACCMODE|O_TMPFILE) },
+# else
+               { ARG_STR(O_ACCMODE|__O_TMPFILE) },
+# endif
+               { ARG_ULL_STR(O_RDONLY|0xdeadface80000000) },
+       };
+       static uint64_t modes[] = { 0, 0777, 0xbadc0dedfacebeefULL };
+       static struct strval64 resolve[] = {
+               { 0, NULL },
+               { ARG_STR(RESOLVE_NO_XDEV) },
+               { ARG_ULL_STR(RESOLVE_NO_XDEV|RESOLVE_IN_ROOT|0xfeedfacedcaffee0) },
+               { 0xdec0dedbeefface0, NULL },
+       };
+       const size_t iters = MAX(MAX(ARRAY_SIZE(flags), ARRAY_SIZE(modes)),
+                                ARRAY_SIZE(resolve));
+
+
+       for (size_t i = 0; i < iters * 4; i++) {
+               how->flags = flags[i % ARRAY_SIZE(flags)].val;
+               how->mode = modes[i % ARRAY_SIZE(modes)];
+               how->resolve = resolve[i % ARRAY_SIZE(resolve)].val;
+
+               fill_memory(how_big + 1, 8);
+               memcpy(how_big, how, sizeof(*how));
+
+               for (size_t j = 0; j < 4; j++) {
+                       rc = syscall(__NR_openat2, -1, sample,
+                                    j > 1 ? how_big : how,
+                                    j ? sizeof(*how) + 8 : sizeof(*how));
+                       rcstr = sprintrc(rc);
+                       printf("openat2(-1, \"%s\", {flags=%s",
+                              sample,
+                              sprintxlat(flags[i % ARRAY_SIZE(flags)].str,
+                                         flags[i % ARRAY_SIZE(flags)].val,
+                                         NULL));
+
+                       if (how->mode || (i % ARRAY_SIZE(flags) == 1)
+                                     || (i % ARRAY_SIZE(flags) == 3)) {
+                               printf(", mode=%#03" PRIo64,
+                                      modes[i % ARRAY_SIZE(modes)]);
+                       }
+
+                       printf(", resolve=%s",
+                              sprintxlat(resolve[i % ARRAY_SIZE(resolve)].str,
+                                         resolve[i % ARRAY_SIZE(resolve)].val,
+                                         resolve[i % ARRAY_SIZE(resolve)].val
+                                               ? "RESOLVE_???" : NULL));
+                       if (j == 1)
+                               printf(", ???");
+                       if (j == 2) {
+                               printf(", /* bytes %zu..%zu */ \"\\x80\\x81"
+                                      "\\x82\\x83\\x84\\x85\\x86\\x87\"",
+                                      sizeof(*how), sizeof(*how) + 7);
+                       }
+                       printf("}, %zu) = %s\n",
+                              j ? sizeof(*how) + 8 : sizeof(*how), rcstr);
+
+                       if (j == 2)
+                               memset(how_big + 1, 0, 8);
+               }
+       }
+
+       how->flags = O_RDONLY | O_NOCTTY;
+       how->mode = 0;
+       how->resolve = 0;
+       rc = syscall(__NR_openat2, -100, "/dev/full", how, sizeof(*how));
+       printf("openat2(%s, \"/dev/full\", {flags=%s, resolve=0}, %zu)"
+              " = %s%s\n",
+              XLAT_KNOWN(-100, "AT_FDCWD"), XLAT_STR(O_RDONLY|O_NOCTTY),
+              sizeof(*how), sprintrc(rc), rc >= 0 ? FD0_PATH : "");
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_openat2");
+
+#endif
diff --git a/tests-m32/openat2.gen.test b/tests-m32/openat2.gen.test
new file mode 100755 (executable)
index 0000000..5add9e5
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (openat2 -a35 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a35 
index 5e43b3ab8a9abcf26378bdd1307189b537039dd6..e9aaf30ec9370fa59a62dcb2cc97359dc5ab2b76 100755 (executable)
@@ -3,7 +3,7 @@
 # Check strace options syntax.
 #
 # Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 . "${srcdir=.}/syntax.sh"
 
 check_e "Invalid process id: '0'" -p 0
+check_e "Invalid process id: '0'" --attach=0
 check_e "Invalid process id: '-42'" -p -42
+check_e "Invalid process id: '-42'" --attach=-42
 check_e "Invalid process id: '$$.'" -p $$.
+check_e "Invalid process id: '$$.'" --attach=$$.
 check_e "Invalid process id: 'a'" -p 1,a
+check_e "Invalid process id: 'a'" --attach=1,a
 check_e "Syscall 'chdir' for -b isn't supported" -b chdir
+check_e "Syscall 'chdir' for -b isn't supported" --detach-on=chdir
 check_e "Syscall 'chdir' for -b isn't supported" -b execve -b chdir
+check_e "Syscall 'chdir' for -b isn't supported" --detach-on=execve --detach-on=chdir
 
 check_e_using_grep 'exec: File *name too long' "$(printf '%4096s' ' ')"
 
 ff_name="$(printf '%4084s' ' ')"
 check_e_using_grep "$ff_name: File *name too long" -ff -o "$ff_name" true
+check_e_using_grep "$ff_name: File *name too long" -ff --output="$ff_name" true
 
 check_h 'must have PROG [ARGS] or -p PID'
-check_h 'PROG [ARGS] must be specified with -D' -D -p $$
-check_h '-c and -C are mutually exclusive' -c -C true
-check_h '-c and -C are mutually exclusive' -C -c true
-check_h '(-c or -C) and -ff are mutually exclusive' -c -ff true
-check_h '(-c or -C) and -ff are mutually exclusive' -C -ff true
-check_h '-w must be given with (-c or -C)' -w true
-check_h 'piping the output and -ff are mutually exclusive' -o '|' -ff true
-check_h 'piping the output and -ff are mutually exclusive' -o '!' -ff true
+check_h "must have PROG [ARGS] or -p PID" --absolute-timestamps
+check_h "must have PROG [ARGS] or -p PID" --absolute-timestamps=
+check_h "must have PROG [ARGS] or -p PID" --absolute-timestamps=,
+check_h "must have PROG [ARGS] or -p PID" --absolute-timestamps=,s
+check_h "must have PROG [ARGS] or -p PID" --absolute-timestamps=s,
+check_h "must have PROG [ARGS] or -p PID" --absolute-timestamps=,,
+check_h "must have PROG [ARGS] or -p PID" --absolute-timestamps=s,,none
+check_h "must have PROG [ARGS] or -p PID" --timestamps --absolute-timestamps=ns --timestamps=none --absolute-timestamps=format:time,precision:s --timestamps=ns,format:unix --absolute-timestamps=us,precision:ms,unix,precision:ns --timestamps=format:none,time,precision:us
+check_h "invalid --absolute-timestamps argument: 'ss'" --absolute-timestamps=ss
+check_h "invalid --timestamps argument: 'format:s'" --timestamps=format:s
+check_h "invalid --timestamps argument: 's,non'" --timestamps=s,non
+check_h "invalid --timestamps argument: 'precision:none'" --timestamps=precision:none
+check_e '-t and --absolute-timestamps cannot be provided simultaneously' -t --timestamps -p $$
+check_e '-t and --absolute-timestamps cannot be provided simultaneously' --absolute-timestamps -ttt -p $$
+check_e '-t and --absolute-timestamps cannot be provided simultaneously' -t --timestamps=ns -t -p $$
+check_e '-t and --absolute-timestamps cannot be provided simultaneously' --timestamps=ns -t --absolute-timestamps=unix -p $$
+check_h 'PROG [ARGS] must be specified with -D/--daemonize' -D -p $$
+check_h 'PROG [ARGS] must be specified with -D/--daemonize' -DD -p $$
+check_h 'PROG [ARGS] must be specified with -D/--daemonize' -DDD -p $$
+check_h 'PROG [ARGS] must be specified with -D/--daemonize' -DDDD -p $$
+check_h 'PROG [ARGS] must be specified with -D/--daemonize' --daemonize -p $$
+check_h 'PROG [ARGS] must be specified with -D/--daemonize' --daemonize=grandchild -p $$
+check_h 'PROG [ARGS] must be specified with -D/--daemonize' --daemonize=pgroup -p $$
+check_h 'PROG [ARGS] must be specified with -D/--daemonize' --daemonize=Pgrp -p $$
+check_h 'PROG [ARGS] must be specified with -D/--daemonize' --daemonize=SESSION -p $$
+check_h 'Too many -D'\''s (4), maximum supported -D count is 3' -DDDD /bin/true
+check_e '-D and --daemonize cannot be provided simultaneously' -D --daemonize -p $$
+check_e '-D and --daemonize cannot be provided simultaneously' --daemonize -D -p $$
+check_e '-D and --daemonize cannot be provided simultaneously' --daemonize -v -D /bit/true
+check_h "invalid --daemonize argument: 'pgr'" --daemonize=pgr
+check_h '-c/--summary-only and -C/--summary are mutually exclusive' -c -C true
+check_h '-c/--summary-only and -C/--summary are mutually exclusive' --summary-only --summary true
+check_h '-c/--summary-only and -C/--summary are mutually exclusive' -C -c true
+check_h '-c/--summary-only and -C/--summary are mutually exclusive' --summary --summary-only true
+check_h '(-c/--summary-only or -C/--summary) and -ff/--output-separately are mutually exclusive' -c -ff true
+check_h '(-c/--summary-only or -C/--summary) and -ff/--output-separately are mutually exclusive' --summary-only -ff true
+check_h '(-c/--summary-only or -C/--summary) and -ff/--output-separately are mutually exclusive' -C -ff true
+check_h '(-c/--summary-only or -C/--summary) and -ff/--output-separately are mutually exclusive' --summary -ff true
+check_h '-w/--summary-wall-clock must be given with (-c/--summary-only or -C/--summary)' -w true
+check_h '-w/--summary-wall-clock must be given with (-c/--summary-only or -C/--summary)' --summary-wall-clock true
+check_h '-U/--summary-columns must be given with (-c/--summary-only or -C/--summary)' -U name,time,count,errors true
+check_h '-U/--summary-columns must be given with (-c/--summary-only or -C/--summary)' --summary-columns=name,time,count,errors true
+check_h 'piping the output and -ff/--output-separately are mutually exclusive' -o '|' -ff true
+check_h 'piping the output and -ff/--output-separately are mutually exclusive' --output='|' -ff true
+check_h 'piping the output and -ff/--output-separately are mutually exclusive' -o '!' -ff true
+check_h 'piping the output and -ff/--output-separately are mutually exclusive' --output='!' -ff true
 check_h "invalid -a argument: '-42'" -a -42
 check_h "invalid -O argument: '-42'" -O -42
 check_h "invalid -s argument: '-42'" -s -42
+check_h "invalid --string-limit argument: '-42'" --string-limit=-42
 check_h "invalid -s argument: '1073741824'" -s 1073741824
+check_h "invalid --string-limit argument: '1073741824'" --string-limit=1073741824
+check_h "must have PROG [ARGS] or -p PID" --follow-forks
+check_h "must have PROG [ARGS] or -p PID" --follow-forks --output-separately
+check_h "must have PROG [ARGS] or -p PID" -f --output-separately
+check_h "must have PROG [ARGS] or -p PID" --output-separately
+check_e '-f and --follow-forks cannot be provided simultaneously' -f --follow-forks -p $$
+check_e '-ff and --output-separately cannot be provided simultaneously' --output-separately -ff -p $$
+check_h "invalid -I argument: '0x1'" -I 0x1
+check_h "invalid -I argument: '0'" -I 0
+check_h "must have PROG [ARGS] or -p PID" -I1
+check_h "must have PROG [ARGS] or -p PID" -I 2
+check_h "must have PROG [ARGS] or -p PID" -I3
+check_h "must have PROG [ARGS] or -p PID" -I 4
 check_h "invalid -I argument: '5'" -I 5
+check_h "must have PROG [ARGS] or -p PID" -I always
+check_h "must have PROG [ARGS] or -p PID" -I anywhere
+check_h "must have PROG [ARGS] or -p PID" -Iwaiting
+check_h "must have PROG [ARGS] or -p PID" -I never
+check_h "must have PROG [ARGS] or -p PID" -Inever_tstp
+check_h "invalid -I argument: '=never'" -I=never
+check_h "invalid -I argument: 'nevertheless'" -Inevertheless
+check_h "invalid -I argument: 'nev'" -Inev
+check_h "invalid --interruptible argument: '0x1'" --interruptible=0x1
+check_h "invalid --interruptible argument: '0'" --interruptible=0
+check_h "must have PROG [ARGS] or -p PID" --interruptible 1
+check_h "must have PROG [ARGS] or -p PID" --interruptible=2
+check_h "invalid --interruptible argument: '5'" --interruptible=5
+check_h "must have PROG [ARGS] or -p PID" --interruptible=anywhere
+check_h "must have PROG [ARGS] or -p PID" --interruptible=waiting
+check_h "must have PROG [ARGS] or -p PID" --interruptible=never
+check_h "must have PROG [ARGS] or -p PID" --interruptible=never_tstp
+check_h "invalid --interruptible argument: 'nevertheless'" --interruptible=nevertheless
+check_h "invalid --interruptible argument: 'nev'" --interruptible=nev
+check_h "must have PROG [ARGS] or -p PID" --relative-timestamps
+check_h "must have PROG [ARGS] or -p PID" --relative-timestamps=s
+check_h "must have PROG [ARGS] or -p PID" --relative-timestamps=ms
+check_h "must have PROG [ARGS] or -p PID" --relative-timestamps=us
+check_h "must have PROG [ARGS] or -p PID" --relative-timestamps=ns
+check_h "invalid --relative-timestamps argument: 'n'" --relative-timestamps=n
+check_h "invalid --relative-timestamps argument: 'ss'" --relative-timestamps=ss
+check_h "must have PROG [ARGS] or -p PID" --syscall-times
+check_h "must have PROG [ARGS] or -p PID" --syscall-times=s
+check_h "must have PROG [ARGS] or -p PID" --syscall-times=ms
+check_h "must have PROG [ARGS] or -p PID" --syscall-times=us
+check_h "must have PROG [ARGS] or -p PID" --syscall-times=ns
+check_h "invalid --syscall-times argument: 'n'" --syscall-times=n
+check_h "invalid --syscall-times argument: 'ss'" --syscall-times=ss
+check_h "must have PROG [ARGS] or -p PID" --strings-in-hex
+check_h "must have PROG [ARGS] or -p PID" --strings-in-hex=all
+check_h "must have PROG [ARGS] or -p PID" --strings-in-hex=non-ascii
+check_h "invalid --strings-in-hex argument: 'al'" --strings-in-hex=al
+check_h "invalid --strings-in-hex argument: 'alll'" --strings-in-hex=alll
+check_h "invalid --strings-in-hex argument: 'ascii'" --strings-in-hex=ascii
+check_h "must have PROG [ARGS] or -p PID" --quiet=all
+check_h "must have PROG [ARGS] or -p PID" --quiet=none
+check_h "must have PROG [ARGS] or -p PID" --quiet=\!attach
+check_h "must have PROG [ARGS] or -p PID" --quiet=exit,exits,personality
+check_e "invalid quiet 'detach'" --quiet=detach -p $$
+check_e "invalid quiet 'fds'" -q --quiet=fds -p $$
+check_e "invalid quiet 'detach'" --quiet=detach -p $$
+check_e '-q and -e quiet/--quiet cannot be provided simultaneously' -q --quiet -p $$
+check_e '-q and -e quiet/--quiet cannot be provided simultaneously' -q -e q=none -p $$
+check_e '-q and -e quiet/--quiet cannot be provided simultaneously' -q -e silent=attach,personality -p $$
+
+check_h 'must have PROG [ARGS] or -p PID' -P .
+check_h 'must have PROG [ARGS] or -p PID' -P . -P..
+check_h 'must have PROG [ARGS] or -p PID' --trace-path=.
+check_h 'must have PROG [ARGS] or -p PID' --trace-path=. --trace-path ..
+check_e "Requested path \"///\" resolved into \"/\"
+$STRACE_EXE: Requested path \"/.\" resolved into \"/\"
+$STRACE_EXE: -q and -e quiet/--quiet cannot be provided simultaneously" -q --quiet -P /// -P/. .
+
+for i in time time_percent time-percent time_total time-total total_time total-time min_time min-time time_min time-min shortest max_time max-time time_max time-max longest avg_time avg-time time_avg time-avg calls count error errors name syscall syscall_name syscall-name none nothing; do
+       check_h "must have PROG [ARGS] or -p PID" -S "$i"
+       check_h "must have PROG [ARGS] or -p PID" --summary-sort-by="$i"
+       if [ "x$i" != xnone -a "x$i" != xnothing ]; then
+               check_h "must have PROG [ARGS] or -p PID" -c -U "$i"
+               check_h "must have PROG [ARGS] or -p PID" --summary-only --summary-columns="$i"
+       fi
+done
+for i in time,time_total,avg_time,calls,errors,name time_percent,total_time,time_avg,count,error,syscall_name; do
+       check_h "must have PROG [ARGS] or -p PID" -c -U "$i"
+       check_h "must have PROG [ARGS] or -p PID" --summary-only --summary-columns="$i"
+done
+for i in non syscall_names; do
+       check_h "invalid sortby: '$i'" -S "$i"
+       check_h "invalid sortby: '$i'" --summary-sort-by="$i"
+       check_h "unknown column name: '$i'" -U "$i"
+       check_h "unknown column name: '$i'" --summary-columns="$i"
+done
+check_h "unknown column name: ''" -U time,,name
+check_h "call summary column has been provided more than once: 'time_percent' (-U option residual: 'time_percent,time_total')" -U time,time_percent,time_total
+
+check_e '-x and --strings-in-hex cannot be provided simultaneously' -x --strings-in-hex -p $$
+check_e '-x and --strings-in-hex cannot be provided simultaneously' --strings-in-hex -p $$ -xx
 check_h "invalid -X argument: 'test'" -Xtest
+check_h "invalid --const-print-style argument: 'test'" --const-print-style=test
 check_h "invalid -X argument: 'a'" -Xa
+check_h "invalid --const-print-style argument: 'a'" --const-print-style=a
 check_h "invalid -X argument: 'abbreviated'" -X abbreviated
+check_h "invalid --const-print-style argument: 'abbreviated'" --const-print-style=abbreviated
+check_h "must have PROG [ARGS] or -p PID" --decode-fds
+check_h "must have PROG [ARGS] or -p PID" --decode-fds=all
+check_h "must have PROG [ARGS] or -p PID" --decode-fds=none
+check_h "must have PROG [ARGS] or -p PID" --decode-fds=path
+check_h "must have PROG [ARGS] or -p PID" --decode-fds=socket,dev
+check_h "must have PROG [ARGS] or -p PID" --decode-fds=\!path
+check_h "must have PROG [ARGS] or -p PID" --decode-fds=socket,path,dev
+check_e "invalid decode-fds 'p'" --decode-fds=p -p $$
+check_e "invalid decode-fds 'device'" -y --decode-fds=device -p $$
+check_e "invalid decode-fds 'name'" --decode-fds=path,name -p $$
+check_e "invalid decode-fds 'sock'" -e decode-fd=sock -y -p $$
+check_e '-y and --decode-fds cannot be provided simultaneously' -y --decode-fds -p $$
+check_e '-y and --decode-fds cannot be provided simultaneously' -e decode-fd=all -yy -p $$
+check_e '-y and --decode-fds cannot be provided simultaneously' --decode-fds=none -y -p $$
 
 check_h "incorrect personality designator '' in qualification 'getcwd@'" -e trace=getcwd@
 check_h "incorrect personality designator '42' in qualification 'getcwd@42'" -e trace=getcwd@42
 check_h "incorrect personality designator '42' in qualification 'getcwd@42'" -e trace=gettid,getcwd@42
 check_h "incorrect personality designator '42' in qualification '23@42'" -e trace=23@42,123
 
+check_h '--seccomp-bpf cannot be used without -f/--follow-forks, disabling
+-w/--summary-wall-clock must be given with (-c/--summary-only or -C/--summary)' --seccomp-bpf -w /
+check_h '--seccomp-bpf is not enabled for processes attached with -p
+-w/--summary-wall-clock must be given with (-c/--summary-only or -C/--summary)' --seccomp-bpf -f -p 1 -w
+
+check_h 'option -F is deprecated, please use -f/--follow-forks instead
+-w/--summary-wall-clock must be given with (-c/--summary-only or -C/--summary)' -F -w /
+check_h 'option -F is deprecated, please use -f/--follow-forks instead
+-w/--summary-wall-clock must be given with (-c/--summary-only or -C/--summary)' -FF -w /
+check_h 'deprecated option -F ignored
+-w/--summary-wall-clock must be given with (-c/--summary-only or -C/--summary)' -fF -w /
+
 check_e "invalid system call '/getcwd@ohmy'" -e trace=/getcwd@ohmy
 check_e "invalid -e kvm= argument: 'chdir'" -e kvm=chdir
+check_e "invalid -e kvm= argument: 'chdir'" --kvm=chdir
 
 case "$STRACE_NATIVE_ARCH" in
 x86_64)
@@ -59,7 +229,7 @@ x32)
        check_h "must have PROG [ARGS] or -p PID" -e trace=getcwd@32
        check_h "must have PROG [ARGS] or -p PID" -e trace=getcwd@x32
        ;;
-aarch64|powerpc64|riscv|s390x|sparc64|tile)
+aarch64|powerpc64|s390x|sparc64|tile)
        check_h "must have PROG [ARGS] or -p PID" -e trace=getcwd@64
        check_h "must have PROG [ARGS] or -p PID" -e trace=getcwd@32
        check_h "incorrect personality designator 'x32' in qualification 'getcwd@x32'" -e trace=getcwd@x32
@@ -93,21 +263,60 @@ if [ "$uid" -ge 0 ]; then
        if [ "$uid" -eq 0 ]; then
                umsg="Cannot find user ':nosuchuser:'"
        else
-               umsg='You must be root to use the -u option'
+               umsg='You must be root to use the -u/--username option'
        fi
 
        check_e "$umsg" -u :nosuchuser: true
 
-       for c in i r t T y; do
-               check_e "-$c has no effect with -c
-$STRACE_EXE: $umsg" -u :nosuchuser: -c -$c true
+       for c in i/--instruction-pointer n/--syscall-number r/--relative-timestamps t/--absolute-timestamps T/--syscall-times y/--decode-fds; do
+               check_e "-$c has no effect with -c/--summary-only
+$STRACE_EXE: $umsg" -u :nosuchuser: -c -${c%%/*} true
        done
-               check_e "-i has no effect with -c
-$STRACE_EXE: -r has no effect with -c
-$STRACE_EXE: -t has no effect with -c
-$STRACE_EXE: -T has no effect with -c
-$STRACE_EXE: -y has no effect with -c
-$STRACE_EXE: $umsg" -u :nosuchuser: -cirtTy true
+
+       check_e "-i/--instruction-pointer has no effect with -c/--summary-only
+$STRACE_EXE: -n/--syscall-number has no effect with -c/--summary-only
+$STRACE_EXE: -r/--relative-timestamps has no effect with -c/--summary-only
+$STRACE_EXE: -t/--absolute-timestamps has no effect with -c/--summary-only
+$STRACE_EXE: -T/--syscall-times has no effect with -c/--summary-only
+$STRACE_EXE: -y/--decode-fds has no effect with -c/--summary-only
+$STRACE_EXE: Only the last of -z/--successful-only/-Z/--failed-only options will take effect. See status qualifier for more complex filters.
+$STRACE_EXE: $umsg" -u :nosuchuser: -cinrtTyzZ true
+
+       for c in --output-separately -A/--output-append-mode; do
+               check_e "$c has no effect without -o/--output
+$STRACE_EXE: $umsg" -u :nosuchuser: ${c%%/*} true
+       done
+
+       check_e "-S/--summary-sort-by has no effect without (-c/--summary-only or -C/--summary)
+$STRACE_EXE: $umsg" -u :nosuchuser: --summary-sort-by errors true
+
+       check_e "--output-separately has no effect without -o/--output
+$STRACE_EXE: -A/--output-append-mode has no effect without -o/--output
+$STRACE_EXE: $umsg" -u :nosuchuser: --output-separately --output-append-mode true
+
+       check_e "$umsg" -u :nosuchuser: -ff true
+       check_e "$umsg" -u :nosuchuser: --output-separately --follow-forks true
+
+       check_e "Only the last of -z/--successful-only/-Z/--failed-only options will take effect. See status qualifier for more complex filters.
+$STRACE_EXE: $umsg" -u :nosuchuser: -z --successful-only true
+       check_e "Only the last of -z/--successful-only/-Z/--failed-only options will take effect. See status qualifier for more complex filters.
+$STRACE_EXE: $umsg" -u :nosuchuser: --successful-only -Z true
+       check_e "Only the last of -z/--successful-only/-Z/--failed-only options will take effect. See status qualifier for more complex filters.
+$STRACE_EXE: $umsg" -u :nosuchuser: --successful-only --failed-only true
+
+       check_e "-n/--syscall-number has no effect with -c/--summary-only
+$STRACE_EXE: $umsg" --user=:nosuchuser: --syscall-number --summary-only true
+
+       check_e "-i/--instruction-pointer has no effect with -c/--summary-only
+$STRACE_EXE: $umsg" --user=:nosuchuser: --instruction-pointer --summary-only true
+fi
+
+check_e_using_grep 'ptrace_setoptions = 0x[[:xdigit:]]+' -d /
+check_e_using_grep 'ptrace_setoptions = 0x[[:xdigit:]]+' --debug /
+
+if [ -z "$(get_config_option ENABLE_STACKTRACE 1)" ]; then
+       check_e "Stack traces (-k/--stack-traces option) are not supported by this build of strace" -k
+       check_e "Stack traces (-k/--stack-traces option) are not supported by this build of strace" --stack-traces
 fi
 
 args='-p 2147483647'
index 83ab6e391c51fece67f9abb8682633d2d1c9f82c..13aacf36c1d44d4ef4ce64a43b285ecee0d57126 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Check tracing of orphaned process group.
  *
- * Copyright (c) 2019 The strace developers.
+ * Copyright (c) 2019-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -139,7 +139,7 @@ main(void)
         */
        leader = getpid();
        printf("%-5d --- %s {si_signo=%s, si_code=SI_TKILL"
-              ", si_pid=%d, si_uid=%u} ---\n",
+              ", si_pid=%d, si_uid=%d} ---\n",
               stopped, "SIGSTOP", "SIGSTOP", stopped, geteuid());
        printf("%-5d --- stopped by SIGSTOP ---\n", stopped);
        printf("%-5d +++ exited with 0 +++\n", leader);
index d721e394fe4652b78d0d2fd49e276ac0ff99fe2b..3d8647400c5f7ca1ba8d6384bcf98156ab723598 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of osf_utimes syscall.
  *
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_osf_utimes
 
index 0260a6bc034789124c8cdbc620b10f19f9168bb2..c03123b1994bb43e030f584d474611c85010dbc5 100644 (file)
@@ -3,14 +3,14 @@
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Fei Jie <feij.fnst@cn.fujitsu.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_pause
 
index 0bc28d1858bba33bac5d9cbc99972e6561e1fac5..2ee0543a80dd5ea315e83311a037987786c01754 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2020 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -27,7 +27,7 @@ int main(void)
 #endif
 
        /* write instruction pointer length to the log */
-       assert(write(-1, NULL, 2 * sizeof(void *)) < 0);
+       assert(write(-1, (void *) 8UL, 2 * sizeof(void *)) < 0);
 
        /* just a noticeable line in the log */
        assert(munmap(&main, 0) < 0);
index 40221e578b3f261c6943a3c43bbb5da0d8f97d0d..c039d5d3734def98691ce30757ab44e122ed8a94 100755 (executable)
@@ -3,7 +3,7 @@
 # Check -i option.
 #
 # Copyright (c) 2015 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2015-2018 The strace developers.
+# Copyright (c) 2015-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -14,11 +14,11 @@ check_prog sed
 
 run_prog > /dev/null
 
-args="-if $args"
+args="--quiet=attach,personality -if $args"
 $STRACE $args 2> "$LOG" ||
        dump_log_and_fail_with "$STRACE $args failed"
 
-len="$(sed -r -n 's/^\[[[:xdigit:]]+\] write\(-1, NULL, ([[:digit:]]{1,2})\)[[:space:]]+= -1 .*/\1/p' "$LOG")" &&
+len="$(sed -r -n 's/^\[[[:xdigit:]]+\] write\(-1, 0x8, ([[:digit:]]{1,2})\)[[:space:]]+= -1 .*/\1/p' "$LOG")" &&
 [ -n "$len" ] &&
 pid="$(sed -r -n 's/^\[[[:xdigit:]]{'"$len"'}\] --- SIGCHLD \{si_signo=SIGCHLD, si_code=CLD_(KILLED|DUMPED), si_pid=([[:digit:]]+), .*/\2/p' "$LOG")" &&
 [ -n "$pid" ] &&
index ae38b6de14a907db89739b5934a1bfd677191128..d2f5b869b12e67af1acec2073bce0281f7dfd06c 100644 (file)
@@ -2,14 +2,14 @@
  * Check verbose decoding of perf_event_open syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined(__NR_perf_event_open) && defined(HAVE_LINUX_PERF_EVENT_H)
 
@@ -137,7 +137,7 @@ print_event_attr(struct perf_event_attr *attr_ptr, size_t size,
                STRACE_PEA_ABBREV_SIZE =
                        offsetof(struct perf_event_attr, config) +
                        sizeof(attr_ptr->config),
-               STRACE_PEA_SIZE = 112,
+               STRACE_PEA_SIZE = 120,
        };
 
        uint32_t read_size;
@@ -476,6 +476,28 @@ print_event_attr(struct perf_event_attr *attr_ptr, size_t size,
                goto end;
        }
 
+       val = ((uint16_t *) attr)[110 / sizeof(uint16_t)];
+       if (val)
+               printf(" /* bytes 110..111: %#" PRIx16 " */", (uint16_t) val);
+
+       if (size <= 112) {
+               cutoff = 112;
+               goto end;
+       }
+
+       val =
+#  ifdef HAVE_STRUCT_PERF_EVENT_ATTR_AUX_SAMPLE_SIZE
+               attr->aux_sample_size;
+#  else
+               ((uint32_t *) attr)[112 / sizeof(uint32_t)];
+#  endif
+       printf(", aux_sample_size=%" PRIu32, (uint32_t) val);
+
+       if (size <= 116) {
+               cutoff = 116;
+               goto end;
+       }
+
        cutoff = STRACE_PEA_SIZE;
 
 end:
@@ -489,7 +511,7 @@ end:
 }
 
 /* These require aligned access, so no byte-grain checks possible */
-# if defined SPARC || defined SPARC64 || defined POWERPC || defined POWERPC64
+# if defined SPARC || defined SPARC64 || defined POWERPC || defined POWERPC64 || defined ARM
 #  define ATTR_REC(sz) { tail_alloc((sz + 7) & ~7), sz }
 # else
 #  define ATTR_REC(sz) { tail_alloc(sz), sz }
@@ -512,7 +534,8 @@ end:
        "PERF_SAMPLE_BRANCH_CALL|" \
        "PERF_SAMPLE_BRANCH_NO_FLAGS|" \
        "PERF_SAMPLE_BRANCH_NO_CYCLES|" \
-       "PERF_SAMPLE_BRANCH_TYPE_SAVE"
+       "PERF_SAMPLE_BRANCH_TYPE_SAVE|" \
+       "PERF_SAMPLE_BRANCH_HW_INDEX"
 
 int
 main(void)
@@ -529,7 +552,11 @@ main(void)
        static const size_t attr_v4_625_size = PERF_ATTR_SIZE_VER4 + 5;
        static const size_t attr_v4_875_size = PERF_ATTR_SIZE_VER4 + 7;
        static const size_t attr_v5_size = PERF_ATTR_SIZE_VER5;
-       static const size_t attr_big_size = PERF_ATTR_SIZE_VER5 + 32;
+       static const size_t attr_v5_25_size = PERF_ATTR_SIZE_VER5 + 2;
+       static const size_t attr_v5_5_size = PERF_ATTR_SIZE_VER5 + 4;
+       static const size_t attr_v5_75_size = PERF_ATTR_SIZE_VER5 + 6;
+       static const size_t attr_v6_size = PERF_ATTR_SIZE_VER6;
+       static const size_t attr_big_size = PERF_ATTR_SIZE_VER6 + 32;
 
        static const struct u64_val_str attr_types[] = {
                { ARG_STR(PERF_TYPE_HARDWARE) },
@@ -597,7 +624,7 @@ main(void)
        static const struct u64_val_str sample_types[] = {
                { ARG_STR(0) },
                { 0x800, "PERF_SAMPLE_BRANCH_STACK" },
-               { ARG_ULL_STR(0xdeadc0deda700000) " /* PERF_SAMPLE_??? */" },
+               { ARG_ULL_STR(0xdeadc0deda600000) " /* PERF_SAMPLE_??? */" },
                { 0xffffffffffffffffULL,
                        "PERF_SAMPLE_IP|PERF_SAMPLE_TID|PERF_SAMPLE_TIME|"
                        "PERF_SAMPLE_ADDR|PERF_SAMPLE_READ|"
@@ -608,7 +635,8 @@ main(void)
                        "PERF_SAMPLE_WEIGHT|PERF_SAMPLE_DATA_SRC|"
                        "PERF_SAMPLE_IDENTIFIER|PERF_SAMPLE_TRANSACTION|"
                        "PERF_SAMPLE_REGS_INTR|PERF_SAMPLE_PHYS_ADDR|"
-                       "0xfffffffffff00000" },
+                       "PERF_SAMPLE_AUX|"
+                       "0xffffffffffe00000" },
        };
        static const struct u64_val_str read_formats[] = {
                { ARG_STR(0) },
@@ -640,11 +668,11 @@ main(void)
        static const struct u64_val_str branch_sample_types[] = {
                { ARG_STR(0) },
                { 0x80, "PERF_SAMPLE_BRANCH_ABORT_TX" },
-               { 0x1ffff, BRANCH_TYPE_ALL },
+               { 0x3ffff, BRANCH_TYPE_ALL },
                { ARG_ULL_STR(0xdeadcaffeeec0000)
                        " /* PERF_SAMPLE_BRANCH_??? */" },
                { 0xffffffffffffffffULL,
-                       BRANCH_TYPE_ALL "|0xfffffffffffe0000" }
+                       BRANCH_TYPE_ALL "|0xfffffffffffc0000" }
        };
        static const struct s32_val_str clockids[] = {
                { 11, "CLOCK_TAI" },
@@ -669,6 +697,10 @@ main(void)
                ATTR_REC(attr_v4_625_size),
                ATTR_REC(attr_v4_875_size),
                ATTR_REC(attr_v5_size),
+               ATTR_REC(attr_v5_25_size),
+               ATTR_REC(attr_v5_5_size),
+               ATTR_REC(attr_v5_75_size),
+               ATTR_REC(attr_v6_size),
                ATTR_REC(attr_big_size),
        };
 
@@ -776,6 +808,10 @@ main(void)
                ip_desc_str = precise_ip_descs[flags_data.flags.precise_ip];
 # endif
 
+               if (((i % 17) == 3) && (size >= 112))
+                       ((uint16_t *) attr)[110 / sizeof(uint16_t)] = 0;
+
+
                if (i == 0)
                        attr->size = size + 8;
 
index b87cb2c6e892760c110f9aea21580741b71145a8..d5a21a065602639a67e947160c9833d12ff48e9e 100644 (file)
@@ -2,14 +2,14 @@
  * Check decoding of perf_event_open syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined(__NR_perf_event_open) && defined(HAVE_LINUX_PERF_EVENT_H)
 
diff --git a/tests-m32/pidfd_getfd-y.c b/tests-m32/pidfd_getfd-y.c
new file mode 100644 (file)
index 0000000..7e78655
--- /dev/null
@@ -0,0 +1,3 @@
+#define PIDFD_PATH "<anon_inode:[pidfd]>"
+#define FD0_PATH "</dev/full>"
+#include "pidfd_getfd.c"
diff --git a/tests-m32/pidfd_getfd-y.gen.test b/tests-m32/pidfd_getfd-y.gen.test
new file mode 100755 (executable)
index 0000000..9aa306e
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pidfd_getfd-y --trace=pidfd_getfd -a18 -e signal=none -y </dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff --trace=pidfd_getfd -a18 -e signal=none -y </dev/full
diff --git a/tests-m32/pidfd_getfd-yy.c b/tests-m32/pidfd_getfd-yy.c
new file mode 100644 (file)
index 0000000..9a5a185
--- /dev/null
@@ -0,0 +1,3 @@
+#define PRINT_PIDFD 1
+#define FD0_PATH "</dev/full<char 1:7>>"
+#include "pidfd_getfd.c"
diff --git a/tests-m32/pidfd_getfd-yy.gen.test b/tests-m32/pidfd_getfd-yy.gen.test
new file mode 100755 (executable)
index 0000000..7c1ca01
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pidfd_getfd-yy --trace=pidfd_getfd -a18 -e signal=none -yy </dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff --trace=pidfd_getfd -a18 -e signal=none -yy </dev/full
diff --git a/tests-m32/pidfd_getfd.c b/tests-m32/pidfd_getfd.c
new file mode 100644 (file)
index 0000000..fef7709
--- /dev/null
@@ -0,0 +1,103 @@
+/*
+ * Check decoding of pidfd_getfd syscall.
+ *
+ * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_pidfd_getfd
+
+# include <assert.h>
+# include <signal.h>
+# include <stdio.h>
+# include <stdlib.h>
+# include <unistd.h>
+# include <sys/wait.h>
+
+# ifndef PIDFD_PATH
+#  define PIDFD_PATH ""
+# endif
+# ifndef FD0_PATH
+#  define FD0_PATH ""
+# endif
+# ifndef PRINT_PIDFD
+#  define PRINT_PIDFD 0
+# endif
+
+static const char *errstr;
+
+static long
+k_pidfd_getfd(const unsigned int pidfd, const unsigned int fd,
+             const unsigned int flags)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = fill | pidfd;
+       const kernel_ulong_t arg2 = fill | fd;
+       const kernel_ulong_t arg3 = fill | flags;
+       const long rc = syscall(__NR_pidfd_getfd,
+                               arg1, arg2, arg3, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
+int
+main(void)
+{
+       long rc;
+
+       rc = k_pidfd_getfd(-1U, -1U, 0);
+       printf("pidfd_getfd(-1, -1, 0) = %s\n", errstr);
+
+       rc = k_pidfd_getfd(0, 0, 0xbadc0ded);
+       printf("pidfd_getfd(0" FD0_PATH ", 0, 0xbadc0ded) = %s\n", errstr);
+
+       int child_wait_fds[2];
+       if (pipe(child_wait_fds))
+               perror_msg_and_fail("pipe");
+
+       int dupfd = dup(0);
+       int pid = fork();
+       if (pid == 0) {
+               close(0);
+               close(child_wait_fds[1]);
+               if (read(child_wait_fds[0], &child_wait_fds[1], sizeof(int)))
+                       _exit(2);
+               _exit(0);
+       }
+       close(dupfd);
+
+       int pidfd = syscall(__NR_pidfd_open, pid, 0);
+# if PRINT_PIDFD
+       char pidfd_str[sizeof("<pid:>") + 3 * sizeof(int)];
+       snprintf(pidfd_str, sizeof(pidfd_str), "<pid:%d>", pid);
+# else
+       const char *pidfd_str = PIDFD_PATH;
+# endif
+       rc = k_pidfd_getfd(pidfd, dupfd, 0);
+       printf("pidfd_getfd(%d%s, %d%s, 0) = %s%s\n",
+              pidfd, pidfd >= 0 ? pidfd_str : "",
+              dupfd, pidfd >= 0 ? FD0_PATH : "",
+              errstr, rc >= 0 ? FD0_PATH : "");
+
+       puts("+++ exited with 0 +++");
+
+       close(child_wait_fds[1]);
+       int status;
+       assert(wait(&status) == pid);
+       assert(status == 0);
+
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_pidfd_getfd");
+
+#endif
diff --git a/tests-m32/pidfd_getfd.gen.test b/tests-m32/pidfd_getfd.gen.test
new file mode 100755 (executable)
index 0000000..13a08d6
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pidfd_getfd -a18 -Xverbose -e signal=none </dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a18 -Xverbose -e signal=none </dev/full
diff --git a/tests-m32/pidfd_open--decode-fd-path.c b/tests-m32/pidfd_open--decode-fd-path.c
new file mode 100644 (file)
index 0000000..a358834
--- /dev/null
@@ -0,0 +1 @@
+#include "pidfd_open-y.c"
diff --git a/tests-m32/pidfd_open--decode-fd-path.gen.test b/tests-m32/pidfd_open--decode-fd-path.gen.test
new file mode 100755 (executable)
index 0000000..e80e2ef
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pidfd_open--decode-fd-path -a17 -e decode-fd=path -e trace=pidfd_open); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a17 -e decode-fd=path -e trace=pidfd_open
diff --git a/tests-m32/pidfd_open--decode-fd-pidfd.c b/tests-m32/pidfd_open--decode-fd-pidfd.c
new file mode 100644 (file)
index 0000000..3f4abfe
--- /dev/null
@@ -0,0 +1,2 @@
+#define PRINT_PIDFD 1
+#include "pidfd_open-y.c"
diff --git a/tests-m32/pidfd_open--decode-fd-pidfd.gen.test b/tests-m32/pidfd_open--decode-fd-pidfd.gen.test
new file mode 100755 (executable)
index 0000000..7a035db
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pidfd_open--decode-fd-pidfd -a17 -e decode-fd=pidfd -e trace=pidfd_open); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a17 -e decode-fd=pidfd -e trace=pidfd_open
diff --git a/tests-m32/pidfd_open--decode-fd-socket.c b/tests-m32/pidfd_open--decode-fd-socket.c
new file mode 100644 (file)
index 0000000..a358834
--- /dev/null
@@ -0,0 +1 @@
+#include "pidfd_open-y.c"
diff --git a/tests-m32/pidfd_open--decode-fd-socket.gen.test b/tests-m32/pidfd_open--decode-fd-socket.gen.test
new file mode 100755 (executable)
index 0000000..30b8f96
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pidfd_open--decode-fd-socket -a17 -e decode-fd=socket -e trace=pidfd_open); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a17 -e decode-fd=socket -e trace=pidfd_open
diff --git a/tests-m32/pidfd_open--pidns-translation.c b/tests-m32/pidfd_open--pidns-translation.c
new file mode 100644 (file)
index 0000000..c38e37a
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "pidfd_open.c"
diff --git a/tests-m32/pidfd_open--pidns-translation.gen.test b/tests-m32/pidfd_open--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..c87aa6b
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pidfd_open--pidns-translation test_pidns -a17 -e trace=pidfd_open); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a17 -e trace=pidfd_open
diff --git a/tests-m32/pidfd_open-P.c b/tests-m32/pidfd_open-P.c
new file mode 100644 (file)
index 0000000..a80db64
--- /dev/null
@@ -0,0 +1,2 @@
+#define PATH_TRACING
+#include "pidfd_open.c"
diff --git a/tests-m32/pidfd_open-P.gen.test b/tests-m32/pidfd_open-P.gen.test
new file mode 100755 (executable)
index 0000000..7f2221d
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pidfd_open-P -a17 -P /dev/full -e trace=pidfd_open); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a17 -P /dev/full -e trace=pidfd_open
diff --git a/tests-m32/pidfd_open-y.c b/tests-m32/pidfd_open-y.c
new file mode 100644 (file)
index 0000000..18bf947
--- /dev/null
@@ -0,0 +1,2 @@
+#define PRINT_PATHS
+#include "pidfd_open.c"
diff --git a/tests-m32/pidfd_open-y.gen.test b/tests-m32/pidfd_open-y.gen.test
new file mode 100755 (executable)
index 0000000..83d64a6
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pidfd_open-y -a17 -y -e trace=pidfd_open); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a17 -y -e trace=pidfd_open
diff --git a/tests-m32/pidfd_open-yy.c b/tests-m32/pidfd_open-yy.c
new file mode 100644 (file)
index 0000000..3f4abfe
--- /dev/null
@@ -0,0 +1,2 @@
+#define PRINT_PIDFD 1
+#include "pidfd_open-y.c"
diff --git a/tests-m32/pidfd_open-yy.gen.test b/tests-m32/pidfd_open-yy.gen.test
new file mode 100755 (executable)
index 0000000..0a81cfa
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pidfd_open-yy -a17 -yy -e trace=pidfd_open); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a17 -yy -e trace=pidfd_open
diff --git a/tests-m32/pidfd_open.c b/tests-m32/pidfd_open.c
new file mode 100644 (file)
index 0000000..e5d74a9
--- /dev/null
@@ -0,0 +1,113 @@
+/*
+ * Check decoding of pidfd_open syscall.
+ *
+ * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2019-2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+#include "pidns.h"
+
+#ifdef __NR_pidfd_open
+
+# include <stdio.h>
+# include <unistd.h>
+# ifdef PATH_TRACING
+#  include <fcntl.h>
+# endif
+
+static const char *errstr;
+
+static long
+k_pidfd_open(const unsigned int pid, const unsigned int flags)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = fill | pid;
+       const kernel_ulong_t arg2 = fill | flags;
+       const long rc = syscall(__NR_pidfd_open,
+                               arg1, arg2, bad, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
+int
+main(void)
+{
+       PIDNS_TEST_INIT;
+
+# if defined PATH_TRACING || defined PRINT_PATHS
+       skip_if_unavailable("/proc/self/fd/");
+# endif
+
+# ifdef PATH_TRACING
+       static const char path_full[] = "/dev/full";
+       (void) close(0);
+       if (open(path_full, O_WRONLY))
+               perror_msg_and_skip(path_full);
+# endif
+
+       k_pidfd_open(0, 0);
+# ifndef PATH_TRACING
+       pidns_print_leader();
+       printf("pidfd_open(0, 0) = %s\n", errstr);
+# endif
+
+       k_pidfd_open(-1U, 0);
+# ifndef PATH_TRACING
+       pidns_print_leader();
+       printf("pidfd_open(-1, 0) = %s\n", errstr);
+# endif
+
+       k_pidfd_open(0, -1U);
+# ifndef PATH_TRACING
+       pidns_print_leader();
+       printf("pidfd_open(0, %#x) = %s\n", -1U, errstr);
+# endif
+
+       const unsigned int flags = 0xfacefeed;
+       const int pid = getpid();
+
+       k_pidfd_open(pid, flags);
+# ifndef PATH_TRACING
+       const char *pid_str = pidns_pid2str(PT_TGID);
+       pidns_print_leader();
+       printf("pidfd_open(%d%s, %#x) = %s\n",
+               pid, pid_str, flags, errstr);
+# endif
+
+# ifdef PRINT_PATHS
+       long rc = k_pidfd_open(pid, 0);
+       if (rc < 0)
+               perror_msg_and_skip("pidfd_open");
+# else
+       k_pidfd_open(pid, 0);
+# endif
+
+# ifndef PATH_TRACING
+       pidns_print_leader();
+       printf("pidfd_open(%d%s, 0) = "
+#  if defined PRINT_PIDFD
+              "%ld<pid:%d>\n", pid, pid_str, rc, pid
+#  elif defined PRINT_PATHS
+              "%ld<anon_inode:[pidfd]>\n", pid, pid_str, rc
+#  else
+              "%s\n", pid, pid_str, errstr
+#  endif
+              );
+# endif
+
+       pidns_print_leader();
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_pidfd_open");
+
+#endif
diff --git a/tests-m32/pidfd_open.gen.test b/tests-m32/pidfd_open.gen.test
new file mode 100755 (executable)
index 0000000..4c240f3
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pidfd_open -a17 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a17 
diff --git a/tests-m32/pidfd_send_signal--pidns-translation.c b/tests-m32/pidfd_send_signal--pidns-translation.c
new file mode 100644 (file)
index 0000000..b04f10f
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "pidfd_send_signal.c"
diff --git a/tests-m32/pidfd_send_signal--pidns-translation.gen.test b/tests-m32/pidfd_send_signal--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..21191b0
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pidfd_send_signal--pidns-translation test_pidns -e trace=pidfd_send_signal); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -e trace=pidfd_send_signal
index 014e43de0d1f9e2bac81942819b307d59c08a1bc..a6b2d28ccac18238e28e8409cfb127c50c48b16c 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Check decoding of pidfd_send_signal syscall.
  *
- * Copyright (c) 2015-2019 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -9,8 +9,8 @@
 
 #include "tests.h"
 #include <unistd.h>
-#include <asm/unistd.h>
 #include "scno.h"
+#include "pidns.h"
 
 #ifdef __NR_pidfd_send_signal
 
@@ -37,6 +37,8 @@ sys_pidfd_send_signal(int pidfd, int sig, const void *info, int flags)
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        static const char null_path[] = "/dev/null";
 
        int fd = open(null_path, O_RDONLY);
@@ -47,19 +49,23 @@ main(void)
        const void *esi = (const void *) si + 1;
 
        sys_pidfd_send_signal(fd, SIGUSR1, esi, 0);
+       pidns_print_leader();
        printf("pidfd_send_signal(%d, SIGUSR1, %p, 0) = %s\n",
               fd, esi, errstr);
 
        si->si_signo = SIGUSR1;
        si->si_code = SI_QUEUE;
+       si->si_pid = getpid();
 
        sys_pidfd_send_signal(fd, SIGUSR2, si, -1);
+       pidns_print_leader();
        printf("pidfd_send_signal(%d, SIGUSR2, {si_signo=SIGUSR1"
-              ", si_code=SI_QUEUE, si_errno=%d, si_pid=%u, si_uid=%u"
+              ", si_code=SI_QUEUE, si_errno=%u, si_pid=%d%s, si_uid=%d"
               ", si_value={int=%d, ptr=%p}}, %#x) = %s\n",
-              fd, si->si_errno, si->si_pid, si->si_uid, si->si_int, si->si_ptr,
-              -1U, errstr);
+              fd, si->si_errno, si->si_pid, pidns_pid2str(PT_TGID), si->si_uid,
+              si->si_int, si->si_ptr, -1U, errstr);
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
diff --git a/tests-m32/pidns-cache.c b/tests-m32/pidns-cache.c
new file mode 100644 (file)
index 0000000..6319a7f
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+#include "pidns.h"
+
+#if defined __NR_getpid && (!defined __NR_getxpid || __NR_getxpid != __NR_getpid)
+
+# include <stdio.h>
+# include <unistd.h>
+# include <sys/time.h>
+
+# define SYSCALL_COUNT 1000
+
+/**
+ * Max ratio of the execution time with and without pidns translation.
+ */
+# define MAX_TIME_RATIO 20
+
+static long
+execute_syscalls(void)
+{
+       /* Load our PID in the cache */
+       syscall(__NR_getpid);
+
+       struct timeval stop, start;
+       gettimeofday(&start, NULL);
+
+       for (int i = 0; i < SYSCALL_COUNT; i++)
+              syscall(__NR_getpid);
+
+       gettimeofday(&stop, NULL);
+
+       return (stop.tv_usec - start.tv_usec) +
+               (stop.tv_sec - start.tv_sec) * 1000000;
+}
+
+int
+main(void)
+{
+       long max_us = execute_syscalls() * MAX_TIME_RATIO;
+
+       pidns_test_init();
+
+       long us = execute_syscalls();
+       if (us > max_us)
+               error_msg_and_fail("pidns translation took too long: %ld us "
+                                  "(max: %ld us)", us, max_us);
+
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_getpid")
+
+#endif
diff --git a/tests-m32/pidns-cache.test b/tests-m32/pidns-cache.test
new file mode 100755 (executable)
index 0000000..e4df082
--- /dev/null
@@ -0,0 +1,15 @@
+#!/bin/sh
+#
+# Test pidns translation cache.
+#
+# Copyright (c) 2020 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/init.sh"
+
+check_prog timeout
+
+run_prog > /dev/null
+run_strace --pidns-translation -f -e trace=getpid $args
diff --git a/tests-m32/pidns.c b/tests-m32/pidns.c
new file mode 100644 (file)
index 0000000..4fe5b22
--- /dev/null
@@ -0,0 +1,237 @@
+/*
+ * Testing framework for PID namespace translation
+ *
+ * Copyright (c) 2020 Ákos Uzonyi <uzonyi.akos@gmail.com>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+#include "tests.h"
+#include "pidns.h"
+#include "nsfs.h"
+
+#include <errno.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/types.h>
+#include <signal.h>
+#include <stdlib.h>
+#include <sched.h>
+#include <unistd.h>
+#include <sys/wait.h>
+#include <linux/sched.h>
+#include <fcntl.h>
+#include <sys/ioctl.h>
+
+#ifndef CLONE_NEWUSER
+# define CLONE_NEWUSER 0x10000000
+#endif
+
+#ifndef CLONE_NEWPID
+# define CLONE_NEWPID 0x20000000
+#endif
+
+static bool pidns_translation = false;
+static bool pidns_unshared = false;
+
+/* Our PIDs in strace's namespace */
+static pid_t pidns_strace_ids[PT_COUNT];
+
+void
+pidns_print_leader(void)
+{
+       if (pidns_translation)
+               printf("%-5d ", pidns_strace_ids[PT_TID]);
+}
+
+const char *
+pidns_pid2str(enum pid_type type)
+{
+       static const char format[] = " /* %d in strace's PID NS */";
+       static char buf[PT_COUNT][sizeof(format) + sizeof(int) * 3];
+
+       if (type < 0 || type >= PT_COUNT)
+               return "";
+
+       if (!pidns_unshared || !pidns_strace_ids[type])
+               return "";
+
+       snprintf(buf[type], sizeof(buf[type]), format, pidns_strace_ids[type]);
+       return buf[type];
+}
+
+/**
+ * This function is like fork, but does a few more things. It sets up the
+ * child's PGID and SID according to the parameters. Also it fills the
+ * pidns_strace_ids array in the child's memory with the PIDs of the child in
+ * parent's PID namespace. In the parent it waits for the child to terminate
+ * (but leaves the zombie to use it later as a process group). If the child
+ * terminates with nonzero exit status, the test is failed.
+ *
+ * @param pgid     The process group the child should be moved to. It's expected
+ *                 to be a PID of a zombie process (will be reaped). If
+ *                 negative, leave the child in the process group of the parent.
+ *                 If 0, move the process to its own process group.
+ * @param new_sid  Wheather child should be moved to a new session.
+ */
+static pid_t
+pidns_fork(pid_t pgid, bool new_sid)
+{
+       int strace_ids_pipe[2];
+       if (pipe(strace_ids_pipe) < 0)
+               perror_msg_and_fail("pipe");
+
+       fflush(stdout);
+       pid_t pid = fork();
+       if (pid < 0)
+               perror_msg_and_fail("fork");
+
+       if (!pid) {
+               close(strace_ids_pipe[1]);
+
+               ssize_t len = read(strace_ids_pipe[0], pidns_strace_ids,
+                               sizeof(pidns_strace_ids));
+               if (len < 0)
+                       perror_msg_and_fail("read");
+               if (len != sizeof(pidns_strace_ids))
+                       error_msg_and_fail("read returned < sizeof(pidns_strace_ids)");
+
+               close(strace_ids_pipe[0]);
+
+               if (pidns_strace_ids[PT_SID])
+                       setsid();
+
+               return 0;
+       }
+
+       pidns_strace_ids[PT_TID] = pid;
+       pidns_strace_ids[PT_TGID] = pid;
+       pidns_strace_ids[PT_PGID] = 0;
+       pidns_strace_ids[PT_SID] = 0;
+
+       if (!pgid)
+               pgid = pid;
+
+       if (pgid > 0) {
+               if (setpgid(pid, pgid) < 0)
+                       perror_msg_and_fail("setpgid");
+
+               pidns_strace_ids[PT_PGID] = pgid;
+       }
+
+       /* Reap group leader to test PGID decoding */
+       if (pgid > 0 && pgid != pid) {
+               int ret = waitpid(pgid, NULL, WNOHANG);
+               if (ret < 0)
+                       perror_msg_and_fail("wait");
+               if (!ret)
+                       error_msg_and_fail("could not reap group leader");
+       }
+
+       if (new_sid) {
+               pidns_strace_ids[PT_SID] = pid;
+               pidns_strace_ids[PT_PGID] = pid;
+       }
+
+       ssize_t len = write(strace_ids_pipe[1], pidns_strace_ids,
+                            sizeof(pidns_strace_ids));
+       if (len < 0)
+               perror_msg_and_fail("write");
+       if (len != sizeof(pidns_strace_ids))
+               error_msg_and_fail("write returned < sizeof(pidns_strace_ids)");
+
+       close(strace_ids_pipe[0]);
+       close(strace_ids_pipe[1]);
+
+       /* WNOWAIT: leave the zombie, to be able to use it as a process group */
+       siginfo_t siginfo;
+       if (waitid(P_PID, pid, &siginfo, WEXITED | WNOWAIT) < 0)
+               perror_msg_and_fail("wait");
+       if (siginfo.si_code != CLD_EXITED || siginfo.si_status)
+               error_msg_and_fail("child terminated with nonzero exit status");
+
+       return pid;
+}
+
+static void
+create_init_process(void)
+{
+       int child_pipe[2];
+       if (pipe(child_pipe) < 0)
+               perror_msg_and_fail("pipe");
+
+       pid_t pid = fork();
+       if (pid < 0)
+               perror_msg_and_fail("fork");
+
+       if (!pid) {
+               close(child_pipe[1]);
+               if (read(child_pipe[0], &child_pipe[1], sizeof(int)) != 0)
+                       _exit(1);
+               _exit(0);
+       }
+
+       close(child_pipe[0]);
+}
+
+void
+check_ns_ioctl(void)
+{
+       int fd = open("/proc/self/ns/pid", O_RDONLY);
+       if (fd < 0) {
+               if (errno == ENOENT)
+                       perror_msg_and_skip("opening /proc/self/ns/pid");
+               else
+                       perror_msg_and_fail("opening /proc/self/ns/pid");
+       }
+
+       int userns_fd = ioctl(fd, NS_GET_USERNS);
+       if (userns_fd < 0) {
+               if (errno == ENOTTY)
+                       error_msg_and_skip("NS_* ioctl commands are not "
+                                          "supported by the kernel");
+               else
+                       perror_msg_and_fail("ioctl(NS_GET_USERNS)");
+       }
+
+       close(userns_fd);
+       close(fd);
+}
+
+void
+pidns_test_init(void)
+{
+       pidns_translation = true;
+
+       check_ns_ioctl();
+
+       if (!pidns_fork(-1, false))
+               return;
+
+       /* Unshare user namespace too, so we do not need to be root */
+       if (unshare(CLONE_NEWUSER | CLONE_NEWPID) < 0) {
+               if (errno == EPERM)
+                       perror_msg_and_skip("unshare");
+
+               perror_msg_and_fail("unshare");
+       }
+
+       pidns_unshared = true;
+
+       create_init_process();
+
+       if (!pidns_fork(-1, false))
+               return;
+
+       if (!pidns_fork(-1, true))
+               return;
+
+       pid_t pgid;
+       if (!(pgid = pidns_fork(0, false)))
+               return;
+
+       if (!pidns_fork(pgid, false))
+               return;
+
+       exit(0);
+}
diff --git a/tests-m32/pidns.h b/tests-m32/pidns.h
new file mode 100644 (file)
index 0000000..bafc0d7
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ * Test PID namespace translation
+ *
+ * Copyright (c) 2020 Ákos Uzonyi <uzonyi.akos@gmail.com>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+#ifndef STRACE_PIDNS_H
+# define STRACE_PIDNS_H
+
+# ifdef PIDNS_TRANSLATION
+#  define PIDNS_TEST_INIT pidns_test_init()
+# else
+#  define PIDNS_TEST_INIT
+# endif
+
+# include <sys/types.h>
+
+enum pid_type {
+       PT_TID,
+       PT_TGID,
+       PT_PGID,
+       PT_SID,
+
+       PT_COUNT,
+       PT_NONE = -1
+};
+
+/* Prints leader (process tid) if pidns_test_init was called */
+void pidns_print_leader(void);
+
+/*
+ * Returns a static buffer containing the translation string of our PID.
+ */
+const char *pidns_pid2str(enum pid_type type);
+
+/**
+ * Skips the test if NS_* ioctl commands are not supported by the kernel.
+ */
+void check_ns_ioctl(void);
+
+/**
+ * Init pidns testing.
+ *
+ * Should be called at the beginning of the test's main function
+ *
+ * This function calls fork a couple of times, and returns in the child
+ * processes. These child processes are in a new PID namespace with different
+ * PID configurations (group leader, session leader, ...). If any child
+ * terminates with nonzero exit status the test is failed. Otherwise the test is
+ * succesful, and the parent process exits with 0.
+ */
+void pidns_test_init(void);
+
+#endif
\ No newline at end of file
index bdfc7565a5d1f0b97b570c84e563ec1cce368bf8..2f3571147bb53d093af7fc0080333f8cdbcf81c1 100644 (file)
@@ -2,14 +2,14 @@
  * Check decoding of pipe syscall.
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_pipe
 
index d948a1c693d19905fe574fc0abe609fe4f086a93..83a3d4c2f74c002c9c1f30fd8b16ebf5f8959473 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of pipe2 syscall.
  *
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_pipe2
 
index 6a92be40c02b03de591ae584c8e9fa5c6ac24b1a..a76266ca1db6712b5b597a056c26316b1258729c 100644 (file)
@@ -2,14 +2,13 @@
  * Check decoding of pkey_alloc syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
 #include "scno.h"
 
 #ifdef __NR_pkey_alloc
index 7bcb3f9a8937821f447e8af81b5cccdfd078f46d..b1759e2399db0e409bcdaa725cc49f75ca53a3b7 100644 (file)
@@ -2,14 +2,13 @@
  * Check decoding of pkey_free syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
 #include "scno.h"
 
 #ifdef __NR_pkey_free
index c9c96daa22dc3a5476d8146a8adbf3997f521a87..9a711a0fa396048ebcdc205c939ad763a5ce8186 100644 (file)
@@ -2,14 +2,13 @@
  * Check decoding of pkey_mprotect syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
 #include "scno.h"
 
 #ifdef __NR_pkey_mprotect
index 8ba2d303e23b1c5cd0614332c5b9c376125e386d..68121614860d7cee341c8bb585939607cca9563d 100755 (executable)
@@ -2,20 +2,20 @@
 #
 # Check path tracing of poll syscall.
 #
-# Copyright (c) 2018 The strace developers.
+# Copyright (c) 2018-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 . "${srcdir=.}/init.sh"
 
-run_prog > /dev/null
+run_prog > /dev/null 9>>/dev/full
 run_strace -a16 -vepoll -P /dev/full 9>>/dev/full \
        $args > "$EXP"
 match_diff "$LOG" "$EXP"
 
 for abbrev in 0 1 2 3 4 5; do
-       run_prog "../$NAME" $abbrev > /dev/null
+       run_prog "../$NAME" $abbrev > /dev/null 9>>/dev/full
        run_strace -a16 -epoll -s$abbrev -P /dev/full 9>>/dev/full \
                $args > "$EXP"
        match_diff "$LOG" "$EXP"
index c08bee8e1b0506e38fa48e3ecf1d50f5fa7399da..846af5a7529d32f64c8fb8d2df819e5afccbca49 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of poll syscall.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_poll
 
index e7a4474f05cb2a7ebc4ae7998153f5eb6115315b..9ada526d7ea69a2b7cb390a9f5a33042b7b83ae6 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of ppoll syscall.
  *
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_ppoll
 
index be8942708b017273aee19fd755eaa3cb4b2e2336..3a5d91136746d6782f80207ebbd94ea738350d15 100644 (file)
@@ -4,14 +4,14 @@
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_prctl
 
index 7740d52ab0ae17888e6bb9f5231c3618f37ec560..5c19602563b2421bff4066d2abf1e96d28550264 100644 (file)
@@ -3,14 +3,14 @@
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 #include <linux/prctl.h>
 
 #if defined __NR_prctl && defined PR_GET_DUMPABLE && defined PR_SET_DUMPABLE \
index 16d8591119787574d4c7da707d3ee3317e0552de..70cdc3e1bd1d0f07332aca18e419b1e1a1a696b8 100644 (file)
@@ -3,19 +3,16 @@
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
+#include <sys/prctl.h>
 
-#ifdef HAVE_PRCTL
-# include <sys/prctl.h>
-#endif
-
-#if defined HAVE_PRCTL && defined PR_GET_NAME && defined PR_SET_NAME
+#if defined PR_GET_NAME && defined PR_SET_NAME
 
 # include <stdio.h>
 # include <string.h>
@@ -79,6 +76,6 @@ main(void)
 
 #else
 
-SKIP_MAIN_UNDEFINED("HAVE_PRCTL && PR_GET_NAME && PR_SET_NAME")
+SKIP_MAIN_UNDEFINED("PR_GET_NAME && PR_SET_NAME")
 
 #endif
index 8ce13d804df815f3f988e0ebc171dbdb6807652e..8f50ca2f0559c946243d891c07ea8eecb50ea1c2 100644 (file)
@@ -1,17 +1,18 @@
 /*
  * Check decoding of prctl operations without arguments and return code parsing:
  * PR_GET_KEEPCAPS, PR_GET_SECCOMP, PR_GET_TIMERSLACK, PR_GET_TIMING,
- * PR_TASK_PERF_EVENTS_DISABLE, and PR_TASK_PERF_EVENTS_ENABLE.
+ * PR_TASK_PERF_EVENTS_DISABLE, PR_TASK_PERF_EVENTS_ENABLE, and
+ * PR_GET_TAGGED_ADDR_CTRL.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_prctl
 
@@ -36,6 +37,7 @@ main(void)
                { 30, "PR_GET_TIMERSLACK" },
                { 31, "PR_TASK_PERF_EVENTS_DISABLE" },
                { 32, "PR_TASK_PERF_EVENTS_ENABLE" },
+               { 56, "PR_GET_TAGGED_ADDR_CTRL" },
        };
 
        TAIL_ALLOC_OBJECT_CONST_PTR(unsigned int, ptr);
index 6ffbbad757f316775c1543750a37955674b8d12a..da79fdf059667a551b79e0372258c26d8c0310ec 100644 (file)
@@ -3,21 +3,21 @@
  *
  * Copyright (c) 2016 JingPiao Chen <chenjingpiao@foxmail.com>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 #include <linux/prctl.h>
 
 #if defined __NR_prctl && defined PR_GET_PDEATHSIG && defined PR_SET_PDEATHSIG
 
 # include <stdio.h>
 # include <unistd.h>
-# include <sys/signal.h>
+# include <signal.h>
 
 int
 main(void)
index f29cfad65ab2d163566f04061368c2d63090b3bc..56bee2fc12ccc493c9b8b86fa6cd5ee7ed8c0bd5 100644 (file)
@@ -2,7 +2,7 @@
  * Check verbose decoding of prctl PR_SET_SECCOMP SECCOMP_MODE_FILTER.
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 #include <unistd.h>
 #include <stdio.h>
 #include <errno.h>
-#include <asm/unistd.h>
-
-#ifdef HAVE_PRCTL
-# include <sys/prctl.h>
-#endif
+#include <sys/prctl.h>
 #ifdef HAVE_LINUX_SECCOMP_H
 # include <linux/seccomp.h>
 #endif
 #include <linux/filter.h>
+#include "scno.h"
 
-#if defined HAVE_PRCTL \
- && defined PR_SET_NO_NEW_PRIVS \
+#if defined PR_SET_NO_NEW_PRIVS \
  && defined PR_SET_SECCOMP \
  && defined SECCOMP_MODE_FILTER \
  && defined SECCOMP_RET_ERRNO \
                BPF_STMT(BPF_RET|BPF_K, SECCOMP_RET_KILL)
 
 # define PRINT_ALLOW_SYSCALL(nr) \
-       printf("BPF_JUMP(BPF_JMP|BPF_K|BPF_JEQ, %#x, 0, 0x1), " \
+       printf("BPF_JUMP(BPF_JMP|BPF_K|BPF_JEQ, %#lx, 0, 0x1), " \
               "BPF_STMT(BPF_RET|BPF_K, SECCOMP_RET_ALLOW), ", \
-              __NR_ ## nr)
+              (long) __NR_ ## nr)
 
 # define PRINT_DENY_SYSCALL(nr, err) \
-       printf("BPF_JUMP(BPF_JMP|BPF_K|BPF_JEQ, %#x, 0, 0x1), " \
+       printf("BPF_JUMP(BPF_JMP|BPF_K|BPF_JEQ, %#lx, 0, 0x1), " \
               "BPF_STMT(BPF_RET|BPF_K, SECCOMP_RET_ERRNO|%#x), ", \
-              __NR_ ## nr, err)
+              (long) __NR_ ## nr, err)
 
 static const struct sock_filter filter[] = {
        /* load syscall number */
@@ -117,7 +113,7 @@ main(void)
 
 #else
 
-SKIP_MAIN_UNDEFINED("HAVE_PRCTL && PR_SET_NO_NEW_PRIVS && PR_SET_SECCOMP"
+SKIP_MAIN_UNDEFINED("PR_SET_NO_NEW_PRIVS && PR_SET_SECCOMP"
                    " && SECCOMP_MODE_FILTER && SECCOMP_RET_ERRNO"
                    " && BPF_JUMP && BPF_STMT")
 
index 0573126e70d2cab98bffcfa28477dda423562b5f..353b07ee3781d3064f6cd2b7a98542059c828576 100644 (file)
@@ -1,17 +1,16 @@
 /*
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
-#ifdef HAVE_PRCTL
-# include <sys/prctl.h>
-#endif
+#include <sys/prctl.h>
+#include "scno.h"
 
-#if defined HAVE_PRCTL && defined PR_SET_SECCOMP && defined __NR_exit
+#if defined PR_SET_SECCOMP && defined __NR_exit
 
 # include <stdio.h>
 # include <unistd.h>
@@ -36,7 +35,7 @@ main(void)
                rc = 0;
        } else {
                /*
-                * If kernel implementaton of SECCOMP_MODE_STRICT is buggy,
+                * If kernel implementation of SECCOMP_MODE_STRICT is buggy,
                 * the following syscall will result to SIGKILL.
                 */
                rc = write(1, text1, LENGTH_OF(text1)) != LENGTH_OF(text1);
@@ -48,6 +47,6 @@ main(void)
 
 #else
 
-SKIP_MAIN_UNDEFINED("HAVE_PRCTL && PR_SET_SECCOMP && __NR_exit")
+SKIP_MAIN_UNDEFINED("PR_SET_SECCOMP && __NR_exit")
 
 #endif
index 5b32f5b5b2a0a8a61157c070ea042cef27bdcd73..8a9f1365219780b55a974f91e7d8995ed6e109c4 100644 (file)
@@ -3,14 +3,14 @@
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 #include <linux/prctl.h>
 
 #if defined __NR_prctl && defined PR_GET_SECUREBITS && defined PR_SET_SECUREBITS
index 3fa2df2d3051ba4cdb0fc8b19fe05cb152ef8d3b..c37c4e71bb57b4793a53b69479d049e6bce1b813 100644 (file)
@@ -9,7 +9,7 @@
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_prctl
 
index 9652f00dd4e1cea6e8ded8a47bb789077839a48e..14e5d395bf4aad59bc9bfede33548c84e9d2966a 100644 (file)
@@ -2,14 +2,14 @@
  * Check decoding of prctl PR_GET_TID_ADDRESS operation.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 #include <linux/prctl.h>
 
 #if defined __NR_prctl && defined __NR_set_tid_address && \
index 0ac27ecd7a7ea04b932dc2c91c96358033921646..20f9accda46825846a89a84d75a23f6be551f421 100644 (file)
@@ -3,14 +3,14 @@
  *
  * Copyright (c) 2016 JingPiao Chen <chenjingpiao@foxmail.com>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 #include <linux/prctl.h>
 
 #if defined __NR_prctl && defined PR_GET_TSC && defined PR_SET_TSC
index 3d1b504e4a161e9b365157dc0b0e8c33a644c9de..fcdac2e55b44121c89f5b04bdaaec22fa969fe1c 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2014-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -74,12 +74,7 @@ main(void)
                perror_msg_and_fail("preadv");
        printf("preadv(0, [], 0, -3) = -1 EINVAL (%m)\n");
 
-       static const char tmp[] = "preadv-tmpfile";
-       int fd = open(tmp, O_RDWR | O_CREAT | O_TRUNC, 0600);
-       if (fd < 0)
-               perror_msg_and_fail("open");
-       if (unlink(tmp))
-               perror_msg_and_fail("unlink");
+       int fd = create_tmpfile(O_RDWR);
 
        static const char w[] = "0123456789abcde";
        if (write(fd, w, LENGTH_OF(w)) != LENGTH_OF(w))
index 1266562eb3c91158f4d10c2007949561b4345fe0..d6be10a855473e3d078b473479355d6c1cf4fd4d 100644 (file)
@@ -9,7 +9,6 @@
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
 #include "scno.h"
 
 #if defined __NR_preadv2 && defined __NR_pwritev2
diff --git a/tests-m32/print_ppid_tracerpid.c b/tests-m32/print_ppid_tracerpid.c
new file mode 100644 (file)
index 0000000..ae55371
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Helper program for strace-D.test
+ *
+ * Copyright (c) 2019-2020 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+int
+main(void)
+{
+       static const char status[] = "/proc/self/status";
+       FILE *fp = fopen(status, "r");
+       if (!fp)
+               perror_msg_and_fail("fopen: %s", status);
+
+       static const char prefix1[] = "PPid:";
+       static const char prefix2[] = "TracerPid:";
+       char *line = NULL;
+       size_t n = 0;
+
+       while (getline(&line, &n, fp) > 0) {
+               if (strncmp(line, prefix1, sizeof(prefix1) - 1) == 0 ||
+                   strncmp(line, prefix2, sizeof(prefix2) - 1) == 0)
+                       fputs(line, stdout);
+       }
+
+       if (!line)
+               perror_msg_and_fail("getline");
+
+       free(line);
+       fclose(fp);
+
+       return 0;
+}
index e9d66471351ec10a72865ed3fcf4b8db828408f5..8793dfe0e635688afb5096a516c1c5a17a407cf3 100644 (file)
@@ -17,21 +17,26 @@ int
 printflags(const struct xlat *xlat, unsigned long long flags,
           const char *const dflt)
 {
-       if (flags == 0 && xlat->val == 0 && xlat->str) {
-               fputs(xlat->str, stdout);
+       if (flags == 0 && xlat->data->val == 0 && xlat->data->str) {
+               fputs(xlat->data->str, stdout);
                return 1;
        }
 
        int n;
+       size_t i = 0;
        char sep = 0;
-       for (n = 0; xlat->str; xlat++) {
-               if (xlat->val && (flags & xlat->val) == xlat->val) {
+       const struct xlat_data *xd = xlat->data;
+       for (n = 0; i < xlat->size; xd++, i++) {
+               if (!xd->str)
+                       continue;
+
+               if (xd->val && (flags & xd->val) == xd->val) {
                        if (sep)
                                putc(sep, stdout);
                        else
                                sep = '|';
-                       fputs(xlat->str, stdout);
-                       flags &= ~xlat->val;
+                       fputs(xd->str, stdout);
+                       flags &= ~xd->val;
                        n++;
                }
        }
index 216b6cace1b31b662a20f518924ed1d9a263dc4f..6dd36230a951ccf556d2ea57c51c44e9efba6812 100644 (file)
@@ -1,19 +1,16 @@
 /*
  * Force legacy printpath/umovestr using PR_SET_DUMPABLE.
  *
- * Copyright (c) 2017-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2020 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
+#include <sys/prctl.h>
 
-#ifdef HAVE_PRCTL
-# include <sys/prctl.h>
-#endif
-
-#if defined HAVE_PRCTL && defined PR_SET_DUMPABLE
+#ifdef PR_SET_DUMPABLE
 
 # include <stdio.h>
 # include <unistd.h>
@@ -46,6 +43,6 @@ main(void)
 
 #else
 
-SKIP_MAIN_UNDEFINED("HAVE_PRCTL && PR_SET_DUMPABLE")
+SKIP_MAIN_UNDEFINED("PR_SET_DUMPABLE")
 
 #endif
index be3f8d4bff69a7a0a38eafdf64aadc525c8d4c43..d0600a2e959b9c1185c3cb07fc2ce4b685ddef45 100644 (file)
@@ -1,19 +1,16 @@
 /*
  * Force legacy printpath/umovestr using PR_SET_DUMPABLE.
  *
- * Copyright (c) 2017-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2020 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
+#include <sys/prctl.h>
 
-#ifdef HAVE_PRCTL
-# include <sys/prctl.h>
-#endif
-
-#if defined HAVE_PRCTL && defined PR_SET_DUMPABLE
+#ifdef PR_SET_DUMPABLE
 
 # include <stdio.h>
 # include <unistd.h>
@@ -46,6 +43,6 @@ main(void)
 
 #else
 
-SKIP_MAIN_UNDEFINED("HAVE_PRCTL && PR_SET_DUMPABLE")
+SKIP_MAIN_UNDEFINED("PR_SET_DUMPABLE")
 
 #endif
diff --git a/tests-m32/printxval-Xabbrev.c b/tests-m32/printxval-Xabbrev.c
new file mode 100644 (file)
index 0000000..902a386
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_NAME(s_) s_##_abbrev
+#include "printxval.c"
diff --git a/tests-m32/printxval-Xraw.c b/tests-m32/printxval-Xraw.c
new file mode 100644 (file)
index 0000000..eb92a71
--- /dev/null
@@ -0,0 +1,3 @@
+#define XLAT_RAW 1
+#define XLAT_NAME(s_) s_##_raw
+#include "printxval.c"
diff --git a/tests-m32/printxval-Xverbose.c b/tests-m32/printxval-Xverbose.c
new file mode 100644 (file)
index 0000000..f97529e
--- /dev/null
@@ -0,0 +1,3 @@
+#define XLAT_VERBOSE 1
+#define XLAT_NAME(s_) s_##_verbose
+#include "printxval.c"
index 0cd629e4bdd76524b48df73ca5f1188a0413c0ec..19714570ca85352f6dd24c573e1d4b2c8f6df41a 100644 (file)
@@ -4,6 +4,7 @@
  * Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com>
  * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
  * Copyright (c) 2005-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 #include "xlat.h"
 #include <stdio.h>
 
-int
-printxval(const struct xlat *xlat, unsigned long long val,
-         const char *const dflt)
+#if !XLAT_RAW
+static const char *
+lookup_xlat(const struct xlat *xlat, unsigned long long val)
 {
-       for (; xlat->str; xlat++) {
-               if (xlat->val == val) {
-                       fputs(xlat->str, stdout);
-                       return 1;
+       const struct xlat_data *xd = xlat->data;
+
+       for (size_t i = 0; i < xlat->size; i++, xd++) {
+               if (!xd->str)
+                       continue;
+
+               if (xd->val == val) {
+                       return xd->str;
                }
        }
 
+       return NULL;
+}
+#endif
+
+int
+XLAT_NAME(printxval)(const struct xlat *xlat, unsigned long long val,
+                    const char *const dflt)
+{
+#if XLAT_RAW
        printf("%#llx", val);
+
+       return 1;
+#else
+       const char *str = lookup_xlat(xlat, val);
+
+# if XLAT_VERBOSE
+       printf("%#llx", val);
+       if (str || dflt)
+               printf(" /* %s */", str ?: dflt);
+# else
+       if (str) {
+               fputs(str, stdout);
+       } else {
+               printf("%#llx", val);
+               if (dflt)
+                       printf(" /* %s */", dflt);
+       }
+# endif /* XLAT_VERBOSE */
+
+       return !!str;
+#endif /* XLAT_RAW */
+}
+
+const char *
+XLAT_NAME(sprintxlat)(const char *str, unsigned long long val,
+                     const char *const dflt)
+{
+       static char buf[256];
+
+#if XLAT_RAW
+       snprintf(buf, sizeof(buf), "%#llx", val);
+#elif XLAT_VERBOSE
+       if (str || dflt)
+               snprintf(buf, sizeof(buf), "%#llx /* %s */", val, str ?: dflt);
+       else
+               snprintf(buf, sizeof(buf), "%#llx", val);
+#else
+       if (str)
+               return str;
+
        if (dflt)
-               printf(" /* %s */", dflt);
-       return 0;
+               snprintf(buf, sizeof(buf), "%#llx /* %s */", val, dflt);
+       else
+               snprintf(buf, sizeof(buf), "%#llx", val);
+#endif
+
+       return buf;
+}
+
+const char *
+XLAT_NAME(sprintxval)(const struct xlat *xlat, unsigned long long val,
+                     const char *const dflt)
+{
+#if XLAT_RAW
+       return sprintxlat(NULL, val, dflt);
+#else
+       return sprintxlat(lookup_xlat(xlat, val), val, dflt);
+#endif
 }
diff --git a/tests-m32/prlimit64--pidns-translation.c b/tests-m32/prlimit64--pidns-translation.c
new file mode 100644 (file)
index 0000000..3972de6
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "prlimit64.c"
diff --git a/tests-m32/prlimit64--pidns-translation.gen.test b/tests-m32/prlimit64--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..221f3c0
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (prlimit64--pidns-translation test_pidns -e trace=prlimit64); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -e trace=prlimit64
index 688ca75fb880bcebe2a7bf07c7bb0c08ea06200a..eb2e9631b0ee2605ac5cd0beac2685b638fcddf4 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of prlimit64 syscall.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_prlimit64
 
@@ -18,6 +19,7 @@
 # include <sys/resource.h>
 # include <unistd.h>
 
+# include "pidns.h"
 # include "xlat.h"
 # include "xlat/resources.h"
 
@@ -41,26 +43,38 @@ sprint_rlim(uint64_t lim)
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        unsigned long pid =
                (unsigned long) 0xdefaced00000000ULL | (unsigned) getpid();
+       const char *pid_str = pidns_pid2str(PT_TGID);
        uint64_t *const rlimit = tail_alloc(sizeof(*rlimit) * 2);
-       const struct xlat *xlat;
+       const struct xlat_data *xlat;
+       size_t i = 0;
+
+       for (xlat = resources->data; i < resources->size; ++xlat, ++i) {
+               if (!xlat->str)
+                       continue;
 
-       for (xlat = resources; xlat->str; ++xlat) {
                unsigned long res = 0xfacefeed00000000ULL | xlat->val;
                long rc = syscall(__NR_prlimit64, pid, res, 0, rlimit);
+               pidns_print_leader();
                if (rc)
-                       printf("prlimit64(%d, %s, NULL, %p) = %ld %s (%m)\n",
-                              (unsigned) pid, xlat->str, rlimit,
+                       printf("prlimit64(%d%s, %s, NULL, %p) ="
+                                    " %ld %s (%m)\n",
+                              (unsigned) pid, pid_str,
+                              xlat->str, rlimit,
                               rc, errno2name());
                else
-                       printf("prlimit64(%d, %s, NULL"
+                       printf("prlimit64(%d%s, %s, NULL"
                               ", {rlim_cur=%s, rlim_max=%s}) = 0\n",
-                              (unsigned) pid, xlat->str,
+                              (unsigned) pid, pid_str,
+                              xlat->str,
                               sprint_rlim(rlimit[0]),
                               sprint_rlim(rlimit[1]));
        }
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
diff --git a/tests-m32/process_vm_readv--pidns-translation.c b/tests-m32/process_vm_readv--pidns-translation.c
new file mode 100644 (file)
index 0000000..0db29ca
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "process_vm_readv.c"
diff --git a/tests-m32/process_vm_readv--pidns-translation.gen.test b/tests-m32/process_vm_readv--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..f8fc944
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (process_vm_readv--pidns-translation test_pidns -s5 -a37 -e trace=process_vm_readv); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -s5 -a37 -e trace=process_vm_readv
index 422000b8043b09d72fc9877f028f9bfb4d019911..b69551d009eb26a3375d5cb936d3d2822a001318 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -7,7 +7,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_process_vm_readv
 
index 9309135a6b50394cd8049c452a5d2925a4a355b4..343bd3620e867a8e2abdb002ee61bef17495f541 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of process_vm_readv/process_vm_writev syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -12,6 +12,7 @@
 #include <stdio.h>
 #include <unistd.h>
 #include <sys/uio.h>
+#include "pidns.h"
 
 #if OP_WR
 # define in_iovec  rmt_iovec
@@ -121,7 +122,7 @@ print_iov(const struct iovec *iov, const void *arg_ptr, long rc)
 }
 
 static void
-do_call(kernel_ulong_t pid,
+do_call(kernel_ulong_t pid, enum pid_type pid_type,
        kernel_ulong_t local_iov, const char *local_arg,
        kernel_ulong_t liovcnt,
        kernel_ulong_t remote_iov, const char *remote_arg,
@@ -135,7 +136,8 @@ do_call(kernel_ulong_t pid,
                flags);
        errstr = sprintrc(rc);
 
-       printf("%s(%d, ", OP_STR, (int) pid);
+       pidns_print_leader();
+       printf("%s(%d%s, ", OP_STR, (int) pid, pidns_pid2str(pid_type));
 
        if (pr_iov)
                pr_iov((const struct iovec *) (uintptr_t) local_iov, local_arg,
@@ -164,6 +166,8 @@ ptr_cast(void *ptr)
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        enum {
                SIZE_11 = 2,
                SIZE_12 = 3,
@@ -243,18 +247,18 @@ main(void)
        fill_memory_ex(data2_out, SIZE_2, SEGM2_BASE, SIZE_2);
 
 
-       do_call(bogus_pid, (kernel_ulong_t) (uintptr_t) ARG_STR(NULL),
+       do_call(bogus_pid, PT_NONE, (kernel_ulong_t) (uintptr_t) ARG_STR(NULL),
                bogus_iovcnt1, (kernel_ulong_t) (uintptr_t) ARG_STR(NULL),
                bogus_iovcnt2, bogus_flags, NULL);
 
-       do_call(my_pid, ptr_cast(bogus_iov + ARRAY_SIZE(bogus_iovec)),
+       do_call(my_pid, PT_TGID, ptr_cast(bogus_iov + ARRAY_SIZE(bogus_iovec)),
                "[]", 0, ptr_cast(in_iov + ARRAY_SIZE(in_iovec)), "[]",
                0, 0, NULL);
-       do_call(my_pid, ptr_cast(bogus_iov + ARRAY_SIZE(bogus_iovec)), NULL,
-               bogus_iovcnt1, ptr_cast(in_iov + ARRAY_SIZE(in_iovec)), NULL,
-               bogus_iovcnt2, 0, print_iov);
+       do_call(my_pid, PT_TGID, ptr_cast(bogus_iov + ARRAY_SIZE(bogus_iovec)),
+               NULL, bogus_iovcnt1, ptr_cast(in_iov + ARRAY_SIZE(in_iovec)),
+               NULL, bogus_iovcnt2, 0, print_iov);
 
-       do_call(my_pid, ptr_cast(bogus_iov), (char *) &bogus_arg,
+       do_call(my_pid, PT_TGID, ptr_cast(bogus_iov), (char *) &bogus_arg,
                ARRAY_SIZE(bogus_iovec), ptr_cast(rmt_iov + 2),
                (char *) &rmt_arg_cut, ARRAY_SIZE(rmt_iovec) - 2, 0, print_iov);
 
@@ -263,7 +267,7 @@ main(void)
        lcl_arg_cut.check_rc = 1;
 #endif
 
-       do_call(my_pid, ptr_cast(lcl_iov + 2), (char *) &lcl_arg_cut,
+       do_call(my_pid, PT_TGID, ptr_cast(lcl_iov + 2), (char *) &lcl_arg_cut,
                ARRAY_SIZE(lcl_iovec) - 1, ptr_cast(bogus_iov + 2),
                (char *) &bogus_arg_cut, ARRAY_SIZE(bogus_iovec) - 1, 0,
                print_iov);
@@ -273,15 +277,16 @@ main(void)
        rmt_arg_cut.addr_term = 1;
        rmt_arg_cut.count = 5;
 
-       do_call(my_pid, ptr_cast(lcl_iov + 2), (char *) &lcl_arg_cut,
+       do_call(my_pid, PT_TGID, ptr_cast(lcl_iov + 2), (char *) &lcl_arg_cut,
                ARRAY_SIZE(lcl_iovec) - 2, ptr_cast(rmt_iov + 1),
                (char *) &rmt_arg_cut, ARRAY_SIZE(rmt_iovec), 0, print_iov);
 
        /* Correct call */
-       do_call(my_pid, ptr_cast(lcl_iov), (char *) &lcl_arg,
+       do_call(my_pid, PT_TGID, ptr_cast(lcl_iov), (char *) &lcl_arg,
                ARRAY_SIZE(lcl_iovec), ptr_cast(rmt_iov), (char *) &rmt_arg,
                ARRAY_SIZE(rmt_iovec), 0, print_iov);
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
 
        return 0;
diff --git a/tests-m32/process_vm_writev--pidns-translation.c b/tests-m32/process_vm_writev--pidns-translation.c
new file mode 100644 (file)
index 0000000..9ba6a39
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "process_vm_writev.c"
diff --git a/tests-m32/process_vm_writev--pidns-translation.gen.test b/tests-m32/process_vm_writev--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..79d705c
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (process_vm_writev--pidns-translation test_pidns -s5 -a38 -e trace=process_vm_writev); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -s5 -a38 -e trace=process_vm_writev
index 848a9e91acc760ec719199cc8085bc4f7d218d9c..e7476b792f4792e090943765c7619ed1f5dccc4f 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -7,7 +7,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_process_vm_writev
 
index c8122e27ce70864afb60d5f905fbae083394d46f..5660df2be570135a6743cf7ad2714290c7b0b03a 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -16,7 +16,7 @@
 #include <stdio.h>
 #include <unistd.h>
 #include <sys/select.h>
-#include <asm/unistd.h>
+#include "scno.h"
 #include <sys/time.h>
 
 #ifdef __NR_pselect6
index 63435a76dcf8577595c74e5226574d0b850cfe60..38e7037ae08b335e9c3f5c740adfd50d1c14424a 100644 (file)
@@ -2,14 +2,14 @@
  * Check decoding of ptrace syscall.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #include <errno.h>
 #include "ptrace.h"
@@ -127,16 +127,16 @@ test_peeksiginfo(unsigned long pid, const unsigned long bad_request)
                        printf("ptrace(PTRACE_PEEKSIGINFO, %u"
                               ", {off=%llu, flags=0, nr=%u}"
                               ", [{si_signo=SIGUSR1, si_code=SI_TKILL"
-                              ", si_pid=%u, si_uid=%u}"
+                              ", si_pid=%d, si_uid=%d}"
                               ", {si_signo=SIGUSR2, si_code=SI_TKILL"
-                              ", si_pid=%u, si_uid=%u}"
+                              ", si_pid=%d, si_uid=%d}"
                               ", {si_signo=SIGALRM, si_code=SI_TKILL"
-                              ", si_pid=%u, si_uid=%u}"
+                              ", si_pid=%d, si_uid=%d}"
                               "]) = %s\n",
                               (unsigned) pid, psi->off, psi->nr,
-                              (unsigned) pid, (unsigned) uid,
-                              (unsigned) pid, (unsigned) uid,
-                              (unsigned) pid, (unsigned) uid,
+                              (int) pid, (int) uid,
+                              (int) pid, (int) uid,
+                              (int) pid, (int) uid,
                               errstr);
                }
 
@@ -307,7 +307,7 @@ main(void)
 
        do_ptrace(PTRACE_SETSIGINFO, pid, bad_request, (unsigned long) sip);
        printf("ptrace(PTRACE_SETSIGINFO, %u, %#lx, {si_signo=SIGBUS"
-              ", si_code=BUS_ADRALN, si_errno=%d, si_addr=%p}) = %s\n",
+              ", si_code=BUS_ADRALN, si_errno=%u, si_addr=%p}) = %s\n",
               (unsigned) pid, bad_request, sip->si_errno, sip->si_addr,
               errstr);
 
@@ -321,7 +321,7 @@ main(void)
 
        do_ptrace(PTRACE_SETSIGINFO, pid, bad_request, (unsigned long) sip);
        printf("ptrace(PTRACE_SETSIGINFO, %u, %#lx, {si_signo=SIGPROF"
-              ", si_code=%#x, si_errno=%d, si_pid=0, si_uid=3}) = %s\n",
+              ", si_code=%#x, si_errno=%u, si_pid=0, si_uid=3}) = %s\n",
               (unsigned) pid, bad_request, sip->si_code, sip->si_errno,
               errstr);
 
@@ -349,7 +349,7 @@ main(void)
 
        do_ptrace(PTRACE_SETSIGINFO, pid, bad_request, (unsigned long) sip);
        printf("ptrace(PTRACE_SETSIGINFO, %u, %#lx, {si_signo=SIGSYS"
-              ", si_code=SYS_SECCOMP, si_errno=%d, si_call_addr=NULL"
+              ", si_code=SYS_SECCOMP, si_errno=%u, si_call_addr=NULL"
               ", si_syscall=__NR_read, si_arch=%#x /* AUDIT_ARCH_??? */})"
               " = %s\n",
               (unsigned) pid, bad_request, sip->si_errno, sip->si_arch,
index ea29d22e815cfa05dc4fbab771837ee8fbcdae66..cb630adbc3b3135f42ed1de3f06218e94d93f583 100644 (file)
@@ -2,6 +2,7 @@
  * Check decoding of ptrace PTRACE_GET_SYSCALL_INFO request.
  *
  * Copyright (c) 2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2018-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +11,6 @@
 #include "tests.h"
 
 #include "ptrace.h"
-#include <asm/unistd.h>
 #include "scno.h"
 
 #include <errno.h>
 #include <linux/audit.h>
 
 #include "xlat.h"
+#define XLAT_MACROS_ONLY
+/* For xlat/audit_arch.h */
+# include "xlat/elf_em.h"
+#undef XLAT_MACROS_ONLY
 #include "xlat/audit_arch.h"
 
 static const char *errstr;
@@ -94,11 +98,11 @@ static const unsigned long args[][7] = {
 };
 
 static const unsigned int expected_none_size =
-       offsetof(struct ptrace_syscall_info, entry);
+       offsetof(struct_ptrace_syscall_info, entry);
 static const unsigned int expected_entry_size =
-       offsetofend(struct ptrace_syscall_info, entry.args);
+       offsetofend(struct_ptrace_syscall_info, entry.args);
 static const unsigned int expected_exit_size =
-       offsetofend(struct ptrace_syscall_info, exit.is_error);
+       offsetofend(struct_ptrace_syscall_info, exit.is_error);
 
 static unsigned long end_of_page;
 static unsigned int ptrace_stop;
@@ -115,7 +119,7 @@ test_none(void)
               pid, end_of_page, errstr);
 
        for (unsigned int size = 0;
-            size <= sizeof(struct ptrace_syscall_info); ++size) {
+            size <= sizeof(struct_ptrace_syscall_info); ++size) {
                unsigned long buf = end_of_page - size;
                memset((void *) buf, -1, size);
 
@@ -137,21 +141,21 @@ test_none(void)
                }
 
                /* copy to a local structure to avoid unaligned access */
-               struct ptrace_syscall_info info;
+               struct_ptrace_syscall_info info;
                memcpy(&info, (void *) buf,  MIN(size, expected_none_size));
 
                if (info.op != PTRACE_SYSCALL_INFO_NONE)
                        FAIL("signal stop mismatch");
                printf("{op=PTRACE_SYSCALL_INFO_NONE");
 
-               if (size < offsetofend(struct ptrace_syscall_info, arch))
+               if (size < offsetofend(struct_ptrace_syscall_info, arch))
                        goto printed_none;
                if (!info.arch)
                        FAIL("signal stop mismatch");
                printf(", arch=");
                printxval(audit_arch, info.arch, "AUDIT_ARCH_???");
 
-               if (size < offsetofend(struct ptrace_syscall_info,
+               if (size < offsetofend(struct_ptrace_syscall_info,
                                       instruction_pointer))
                        goto printed_none;
                if (!info.instruction_pointer)
@@ -159,7 +163,7 @@ test_none(void)
                printf(", instruction_pointer=%#llx",
                       (unsigned long long) info.instruction_pointer);
 
-               if (size < offsetofend(struct ptrace_syscall_info,
+               if (size < offsetofend(struct_ptrace_syscall_info,
                                       stack_pointer))
                        goto printed_none;
                if (!info.stack_pointer)
@@ -178,7 +182,7 @@ static void
 test_entry(void)
 {
        for (unsigned int size = 0;
-            size <= sizeof(struct ptrace_syscall_info); ++size) {
+            size <= sizeof(struct_ptrace_syscall_info); ++size) {
                unsigned long buf = end_of_page - size;
                memset((void *) buf, -1, size);
 
@@ -197,21 +201,21 @@ test_entry(void)
                }
 
                /* copy to a local structure to avoid unaligned access */
-               struct ptrace_syscall_info info;
+               struct_ptrace_syscall_info info;
                memcpy(&info, (void *) buf,  MIN(size, expected_entry_size));
 
                if (info.op != PTRACE_SYSCALL_INFO_ENTRY)
                        FAIL("#%d: entry stop mismatch", ptrace_stop);
                printf("{op=PTRACE_SYSCALL_INFO_ENTRY");
 
-               if (size < offsetofend(struct ptrace_syscall_info, arch))
+               if (size < offsetofend(struct_ptrace_syscall_info, arch))
                        goto printed_entry_common;
                if (!info.arch)
                        FAIL("#%d: entry stop mismatch", ptrace_stop);
                printf(", arch=");
                printxval(audit_arch, info.arch, "AUDIT_ARCH_???");
 
-               if (size < offsetofend(struct ptrace_syscall_info,
+               if (size < offsetofend(struct_ptrace_syscall_info,
                                       instruction_pointer))
                        goto printed_entry_common;
                if (!info.instruction_pointer)
@@ -219,7 +223,7 @@ test_entry(void)
                printf(", instruction_pointer=%#llx",
                       (unsigned long long) info.instruction_pointer);
 
-               if (size < offsetofend(struct ptrace_syscall_info,
+               if (size < offsetofend(struct_ptrace_syscall_info,
                                       stack_pointer))
                        goto printed_entry_common;
                if (!info.stack_pointer)
@@ -227,7 +231,7 @@ test_entry(void)
                printf(", stack_pointer=%#llx",
                       (unsigned long long) info.stack_pointer);
 
-               if (size < offsetofend(struct ptrace_syscall_info, entry.nr))
+               if (size < offsetofend(struct_ptrace_syscall_info, entry.nr))
                        goto printed_entry_common;
                const unsigned long *exp_args = args[ptrace_stop / 2];
                if (info.entry.nr != exp_args[0])
@@ -236,14 +240,19 @@ test_entry(void)
 
                for (unsigned int i = 0; i < ARRAY_SIZE(info.entry.args); ++i) {
                        const unsigned int i_size =
-                               offsetofend(struct ptrace_syscall_info,
+                               offsetofend(struct_ptrace_syscall_info,
                                            entry.args[i]);
                        if (size < i_size) {
                                if (i)
                                        break;
                                goto printed_entry_nr;
                        }
-                       if (info.entry.args[i] != exp_args[i + 1])
+#if SIZEOF_KERNEL_LONG_T > SIZEOF_LONG
+# define CAST (unsigned long)
+#else
+# define CAST
+#endif
+                       if (CAST info.entry.args[i] != exp_args[i + 1])
                                FAIL("#%d: entry stop mismatch", ptrace_stop);
                        printf("%s%#llx", (i ? ", " : ", arg=["),
                               (unsigned long long) info.entry.args[i]);
@@ -262,7 +271,7 @@ static void
 test_exit(void)
 {
        for (unsigned int size = 0;
-            size <= sizeof(struct ptrace_syscall_info); ++size) {
+            size <= sizeof(struct_ptrace_syscall_info); ++size) {
                unsigned long buf = end_of_page - size;
                memset((void *) buf, -1, size);
 
@@ -281,21 +290,21 @@ test_exit(void)
                }
 
                /* copy to a local structure to avoid unaligned access */
-               struct ptrace_syscall_info info;
+               struct_ptrace_syscall_info info;
                memcpy(&info, (void *) buf,  MIN(size, expected_exit_size));
 
                if (info.op != PTRACE_SYSCALL_INFO_EXIT)
                        FAIL("#%d: exit stop mismatch", ptrace_stop);
                printf("{op=PTRACE_SYSCALL_INFO_EXIT");
 
-               if (size < offsetofend(struct ptrace_syscall_info, arch))
+               if (size < offsetofend(struct_ptrace_syscall_info, arch))
                        goto printed_exit_common;
                if (!info.arch)
                        FAIL("#%d: exit stop mismatch", ptrace_stop);
                printf(", arch=");
                printxval(audit_arch, info.arch, "AUDIT_ARCH_???");
 
-               if (size < offsetofend(struct ptrace_syscall_info,
+               if (size < offsetofend(struct_ptrace_syscall_info,
                                       instruction_pointer))
                        goto printed_exit_common;
                if (!info.instruction_pointer)
@@ -303,7 +312,7 @@ test_exit(void)
                printf(", instruction_pointer=%#llx",
                       (unsigned long long) info.instruction_pointer);
 
-               if (size < offsetofend(struct ptrace_syscall_info,
+               if (size < offsetofend(struct_ptrace_syscall_info,
                                       stack_pointer))
                        goto printed_exit_common;
                if (!info.stack_pointer)
@@ -320,7 +329,7 @@ test_exit(void)
                        { 0, pid, NULL }                /* gettid */
                }, *exp_param = &exit_param[ptrace_stop / 2 - 1];
 
-               if (size < offsetofend(struct ptrace_syscall_info, exit.rval))
+               if (size < offsetofend(struct_ptrace_syscall_info, exit.rval))
                        goto printed_exit_common;
                if (info.exit.rval != exp_param->rval)
                        FAIL("#%d: exit stop mismatch", ptrace_stop);
index cc8445022663c55d4b3c266581158b1aca4c2b3e..e2773a5c53177444da32a1129adefeea315ae9d4 100644 (file)
@@ -11,10 +11,6 @@ PURE_EXECUTABLES = \
   aio_pgetevents \
   alarm \
   bpf \
-  bpf-obj_get_info_by_fd \
-  bpf-obj_get_info_by_fd-prog \
-  bpf-obj_get_info_by_fd-prog-v \
-  bpf-obj_get_info_by_fd-v \
   bpf-v \
   brk \
   btrfs \
@@ -26,13 +22,34 @@ PURE_EXECUTABLES = \
   clock_adjtime \
   clock_nanosleep \
   clock_xettime \
+  clone-flags \
+  clone3 \
+  clone3-Xabbrev \
+  clone3-Xraw \
+  clone3-Xverbose \
+  close_range \
+  close_range-P \
+  close_range-y \
+  close_range-yy \
   copy_file_range \
   creat \
   delete_module \
+  dev--decode-fds-dev \
+  dev--decode-fds-path \
+  dev--decode-fds-socket \
   dev-yy \
   dup \
+  dup-P \
+  dup-y \
+  dup-yy \
   dup2 \
+  dup2-P \
+  dup2-y \
+  dup2-yy \
   dup3 \
+  dup3-P \
+  dup3-y \
+  dup3-yy \
   epoll_create \
   epoll_create1 \
   epoll_ctl \
@@ -43,6 +60,13 @@ PURE_EXECUTABLES = \
   execve \
   execveat \
   faccessat \
+  faccessat-P \
+  faccessat-y \
+  faccessat-yy \
+  faccessat2 \
+  faccessat2-P \
+  faccessat2-y \
+  faccessat2-yy \
   fadvise64 \
   fadvise64_64 \
   fallocate \
@@ -65,6 +89,12 @@ PURE_EXECUTABLES = \
   file_ioctl \
   finit_module \
   flock \
+  fsconfig \
+  fsconfig-P \
+  fsmount \
+  fsopen \
+  fspick \
+  fspick-P \
   fstat \
   fstat-Xabbrev \
   fstat-Xraw \
@@ -85,7 +115,9 @@ PURE_EXECUTABLES = \
   getcpu \
   getcwd \
   getdents \
+  getdents-v \
   getdents64 \
+  getdents64-v \
   getegid \
   getegid32 \
   geteuid \
@@ -109,12 +141,17 @@ PURE_EXECUTABLES = \
   getsockname \
   getuid \
   getuid32 \
-  getxxid \
+  getxgid \
+  getxpid \
+  getxuid \
   group_req \
   inet-cmsg \
   init_module \
   inotify \
+  inotify_init \
+  inotify_init-y \
   inotify_init1 \
+  inotify_init1-y \
   io_uring_enter \
   io_uring_register \
   io_uring_setup \
@@ -122,6 +159,21 @@ PURE_EXECUTABLES = \
   ioctl_block \
   ioctl_dm \
   ioctl_evdev \
+  ioctl_evdev-Xabbrev \
+  ioctl_evdev-Xraw \
+  ioctl_evdev-Xverbose \
+  ioctl_evdev-v \
+  ioctl_evdev-v-Xabbrev \
+  ioctl_evdev-v-Xraw \
+  ioctl_evdev-v-Xverbose \
+  ioctl_hdio \
+  ioctl_hdio-Xabbrev \
+  ioctl_hdio-Xraw \
+  ioctl_hdio-Xverbose \
+  ioctl_hdio-v \
+  ioctl_hdio-v-Xabbrev \
+  ioctl_hdio-v-Xraw \
+  ioctl_hdio-v-Xverbose \
   ioctl_inotify \
   ioctl_kvm_run \
   ioctl_kvm_run-v \
@@ -137,8 +189,17 @@ PURE_EXECUTABLES = \
   ioctl_sg_io_v3 \
   ioctl_sg_io_v4 \
   ioctl_sock_gifconf \
+  ioctl_tee \
   ioctl_uffdio \
   ioctl_v4l2 \
+  ioctl_v4l2-Xabbrev \
+  ioctl_v4l2-Xraw \
+  ioctl_v4l2-Xverbose \
+  ioctl_v4l2-v \
+  ioctl_v4l2-v-Xabbrev \
+  ioctl_v4l2-v-Xraw \
+  ioctl_v4l2-v-Xverbose \
+  ioctl_watchdog \
   ioperm \
   iopl \
   ioprio \
@@ -187,7 +248,12 @@ PURE_EXECUTABLES = \
   lstat \
   lstat64 \
   madvise \
+  maybe_switch_current_tcp \
+  maybe_switch_current_tcp--quiet-thread-execve \
   mbind \
+  mbind-Xabbrev \
+  mbind-Xraw \
+  mbind-Xverbose \
   membarrier \
   memfd_create \
   memfd_create-Xabbrev \
@@ -217,6 +283,8 @@ PURE_EXECUTABLES = \
   mount-Xabbrev \
   mount-Xraw \
   mount-Xverbose \
+  move_mount \
+  move_mount-P \
   move_pages \
   move_pages-Xabbrev \
   move_pages-Xraw \
@@ -229,6 +297,10 @@ PURE_EXECUTABLES = \
   msg_name \
   munlockall \
   nanosleep \
+  net--decode-fds-dev-netlink \
+  net--decode-fds-none-netlink \
+  net--decode-fds-path-netlink \
+  net--decode-fds-socket-netlink \
   net-icmp_filter \
   net-packet_mreq \
   net-packet_mreq-Xabbrev \
@@ -308,7 +380,19 @@ PURE_EXECUTABLES = \
   oldselect-efault \
   oldstat \
   open \
+  open_tree \
+  open_tree-P \
   openat \
+  openat2 \
+  openat2-Xabbrev \
+  openat2-Xraw \
+  openat2-Xverbose \
+  openat2-v \
+  openat2-v-y \
+  openat2-v-y-Xabbrev \
+  openat2-v-y-Xraw \
+  openat2-v-y-Xverbose \
+  openat2-y \
   osf_utimes \
   pause \
   perf_event_open \
@@ -316,6 +400,16 @@ PURE_EXECUTABLES = \
   personality-Xabbrev \
   personality-Xraw \
   personality-Xverbose \
+  pidfd_getfd \
+  pidfd_getfd-y \
+  pidfd_getfd-yy \
+  pidfd_open \
+  pidfd_open--decode-fd-path \
+  pidfd_open--decode-fd-pidfd \
+  pidfd_open--decode-fd-socket \
+  pidfd_open-P \
+  pidfd_open-y \
+  pidfd_open-yy \
   pidfd_send_signal \
   pipe \
   pipe2 \
@@ -323,9 +417,7 @@ PURE_EXECUTABLES = \
   pkey_free \
   pkey_mprotect \
   poll \
-  poll-P \
   ppoll \
-  ppoll-P \
   prctl-arg2-intptr \
   prctl-dumpable \
   prctl-name \
@@ -367,7 +459,9 @@ PURE_EXECUTABLES = \
   readlinkat \
   readv \
   reboot \
+  recv-MSG_TRUNC \
   recvfrom \
+  recvfrom-MSG_TRUNC \
   recvmmsg-timeout \
   recvmsg \
   remap_file_pages \
@@ -405,9 +499,14 @@ PURE_EXECUTABLES = \
   seccomp_get_action_avail \
   select \
   semop \
+  semop-indirect \
+  semtimedop \
   sendfile \
   sendfile64 \
   set_mempolicy \
+  set_mempolicy-Xabbrev \
+  set_mempolicy-Xraw \
+  set_mempolicy-Xverbose \
   setdomainname \
   setfsgid \
   setfsgid32 \
@@ -465,7 +564,23 @@ PURE_EXECUTABLES = \
   stat64 \
   statfs \
   statfs64 \
+  status-all \
+  status-failed \
+  status-failed-long \
+  status-failed-status \
+  status-none \
+  status-none-f \
+  status-successful \
+  status-successful-long \
+  status-successful-status \
+  status-unfinished \
   statx \
+  strace--strings-in-hex \
+  strace--strings-in-hex-all \
+  strace--strings-in-hex-non-ascii \
+  strace-n \
+  strace-x \
+  strace-xx \
   swap \
   sxetmask \
   symlink \
@@ -476,12 +591,14 @@ PURE_EXECUTABLES = \
   sysinfo \
   syslog \
   tee \
+  tgkill \
   time \
   timer_create \
   timer_xettime \
   timerfd_xettime \
   times \
   times-fail \
+  tkill \
   truncate \
   truncate64 \
   ugetrlimit \
@@ -494,6 +611,8 @@ PURE_EXECUTABLES = \
   umovestr-illptr \
   umovestr2 \
   umovestr3 \
+  umovestr_cached \
+  umovestr_cached_adjacent \
   uname \
   unlink \
   unlinkat \
index 372252095ff63739c5d08f3a06a7dbc06c556c94..7d0f8495d370170964a3d053ad0083f3df643919 100755 (executable)
@@ -1,6 +1,6 @@
 # Executables without side effects.
 #
-# Copyright (c) 2017-2019 The strace developers.
+# Copyright (c) 2017-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -16,10 +16,6 @@ aio
 aio_pgetevents
 alarm
 bpf
-bpf-obj_get_info_by_fd
-bpf-obj_get_info_by_fd-prog
-bpf-obj_get_info_by_fd-prog-v
-bpf-obj_get_info_by_fd-v
 bpf-v
 brk
 btrfs
@@ -31,13 +27,34 @@ chroot
 clock_adjtime
 clock_nanosleep
 clock_xettime
+clone-flags
+clone3
+clone3-Xabbrev
+clone3-Xraw
+clone3-Xverbose
+close_range
+close_range-P
+close_range-y
+close_range-yy
 copy_file_range
 creat
 delete_module
+dev--decode-fds-dev
+dev--decode-fds-path
+dev--decode-fds-socket
 dev-yy
 dup
+dup-P
+dup-y
+dup-yy
 dup2
+dup2-P
+dup2-y
+dup2-yy
 dup3
+dup3-P
+dup3-y
+dup3-yy
 epoll_create
 epoll_create1
 epoll_ctl
@@ -48,6 +65,13 @@ eventfd
 execve
 execveat
 faccessat
+faccessat-P
+faccessat-y
+faccessat-yy
+faccessat2
+faccessat2-P
+faccessat2-y
+faccessat2-yy
 fadvise64
 fadvise64_64
 fallocate
@@ -70,6 +94,12 @@ file_handle
 file_ioctl
 finit_module
 flock
+fsconfig
+fsconfig-P
+fsmount
+fsopen
+fspick
+fspick-P
 fstat
 fstat-Xabbrev
 fstat-Xraw
@@ -90,7 +120,9 @@ get_mempolicy
 getcpu
 getcwd
 getdents
+getdents-v
 getdents64
+getdents64-v
 getegid
 getegid32
 geteuid
@@ -114,12 +146,17 @@ getsid
 getsockname
 getuid
 getuid32
-getxxid
+getxgid
+getxpid
+getxuid
 group_req
 inet-cmsg
 init_module
 inotify
+inotify_init
+inotify_init-y
 inotify_init1
+inotify_init1-y
 io_uring_enter
 io_uring_register
 io_uring_setup
@@ -127,6 +164,21 @@ ioctl
 ioctl_block
 ioctl_dm
 ioctl_evdev
+ioctl_evdev-Xabbrev
+ioctl_evdev-Xraw
+ioctl_evdev-Xverbose
+ioctl_evdev-v
+ioctl_evdev-v-Xabbrev
+ioctl_evdev-v-Xraw
+ioctl_evdev-v-Xverbose
+ioctl_hdio
+ioctl_hdio-Xabbrev
+ioctl_hdio-Xraw
+ioctl_hdio-Xverbose
+ioctl_hdio-v
+ioctl_hdio-v-Xabbrev
+ioctl_hdio-v-Xraw
+ioctl_hdio-v-Xverbose
 ioctl_inotify
 ioctl_kvm_run
 ioctl_kvm_run-v
@@ -142,8 +194,17 @@ ioctl_scsi
 ioctl_sg_io_v3
 ioctl_sg_io_v4
 ioctl_sock_gifconf
+ioctl_tee
 ioctl_uffdio
 ioctl_v4l2
+ioctl_v4l2-Xabbrev
+ioctl_v4l2-Xraw
+ioctl_v4l2-Xverbose
+ioctl_v4l2-v
+ioctl_v4l2-v-Xabbrev
+ioctl_v4l2-v-Xraw
+ioctl_v4l2-v-Xverbose
+ioctl_watchdog
 ioperm
 iopl
 ioprio
@@ -192,7 +253,12 @@ lseek
 lstat
 lstat64
 madvise
+maybe_switch_current_tcp
+maybe_switch_current_tcp--quiet-thread-execve
 mbind
+mbind-Xabbrev
+mbind-Xraw
+mbind-Xverbose
 membarrier
 memfd_create
 memfd_create-Xabbrev
@@ -222,6 +288,8 @@ mount
 mount-Xabbrev
 mount-Xraw
 mount-Xverbose
+move_mount
+move_mount-P
 move_pages
 move_pages-Xabbrev
 move_pages-Xraw
@@ -234,6 +302,10 @@ msg_control
 msg_name
 munlockall
 nanosleep
+net--decode-fds-dev-netlink
+net--decode-fds-none-netlink
+net--decode-fds-path-netlink
+net--decode-fds-socket-netlink
 net-icmp_filter
 net-packet_mreq
 net-packet_mreq-Xabbrev
@@ -313,7 +385,19 @@ oldselect
 oldselect-efault
 oldstat
 open
+open_tree
+open_tree-P
 openat
+openat2
+openat2-Xabbrev
+openat2-Xraw
+openat2-Xverbose
+openat2-v
+openat2-v-y
+openat2-v-y-Xabbrev
+openat2-v-y-Xraw
+openat2-v-y-Xverbose
+openat2-y
 osf_utimes
 pause
 perf_event_open
@@ -321,6 +405,16 @@ personality
 personality-Xabbrev
 personality-Xraw
 personality-Xverbose
+pidfd_getfd
+pidfd_getfd-y
+pidfd_getfd-yy
+pidfd_open
+pidfd_open--decode-fd-path
+pidfd_open--decode-fd-pidfd
+pidfd_open--decode-fd-socket
+pidfd_open-P
+pidfd_open-y
+pidfd_open-yy
 pidfd_send_signal
 pipe
 pipe2
@@ -328,9 +422,7 @@ pkey_alloc
 pkey_free
 pkey_mprotect
 poll
-poll-P
 ppoll
-ppoll-P
 prctl-arg2-intptr
 prctl-dumpable
 prctl-name
@@ -372,7 +464,9 @@ readlink
 readlinkat
 readv
 reboot
+recv-MSG_TRUNC
 recvfrom
+recvfrom-MSG_TRUNC
 recvmmsg-timeout
 recvmsg
 remap_file_pages
@@ -410,9 +504,14 @@ seccomp-filter
 seccomp_get_action_avail
 select
 semop
+semop-indirect
+semtimedop
 sendfile
 sendfile64
 set_mempolicy
+set_mempolicy-Xabbrev
+set_mempolicy-Xraw
+set_mempolicy-Xverbose
 setdomainname
 setfsgid
 setfsgid32
@@ -470,7 +569,23 @@ stat
 stat64
 statfs
 statfs64
+status-all
+status-failed
+status-failed-long
+status-failed-status
+status-none
+status-none-f
+status-successful
+status-successful-long
+status-successful-status
+status-unfinished
 statx
+strace--strings-in-hex
+strace--strings-in-hex-all
+strace--strings-in-hex-non-ascii
+strace-n
+strace-x
+strace-xx
 swap
 sxetmask
 symlink
@@ -481,12 +596,14 @@ sync_file_range2
 sysinfo
 syslog
 tee
+tgkill
 time
 timer_create
 timer_xettime
 timerfd_xettime
 times
 times-fail
+tkill
 truncate
 truncate64
 ugetrlimit
@@ -499,6 +616,8 @@ umovestr
 umovestr-illptr
 umovestr2
 umovestr3
+umovestr_cached
+umovestr_cached_adjacent
 uname
 unlink
 unlinkat
index c4fd27bf13bd0474b071bea8cb7a8793f27dd5ee..fe5eca5b9dc29b3c4d6de3a819c63ae2205466da 100755 (executable)
@@ -3,6 +3,7 @@
 # Check -e fault= syntax.
 #
 # Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2017-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -72,6 +73,27 @@ for arg in chdir:42 \!chdir:42 \
           chdir:syscall=-42 \
           chdir:syscall=42 \
           chdir:syscall=gettid:syscall=gettid \
+          chdir:when=. \
+          chdir:when=.+ \
+          chdir:when=..+ \
+          chdir:when=+ \
+          chdir:when=++ \
+          chdir:when=10. \
+          chdir:when=11.12 \
+          chdir:when=13.14+ \
+          chdir:when=15.. \
+          chdir:when=16... \
+          chdir:when=17...18 \
+          chdir:when=.19 \
+          chdir:when=..20 \
+          chdir:when=..21+ \
+          chdir:when=..22+3 \
+          chdir:when=24..23 \
+          chdir:when=25..26+0 \
+          chdir:when=27..65535 \
+          chdir:when=28..65535+ \
+          chdir:when=65535..65535 \
+          chdir:when=65535..65535+ \
           ; do
        $STRACE -e fault="$arg" true 2> "$LOG" &&
                fail_with "$arg"
index 63bbade0b9097e762c9ae2801add7f5be7ecfc07..580d29135c1ae516c9ce011762227f3d46ebafb5 100644 (file)
@@ -2,7 +2,7 @@
  * Check that fault injection works properly.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -29,7 +29,7 @@ static int out_fd;
 #define DEFAULT_ERRNO ENOSYS
 
 static const char *errstr;
-static int is_raw, err, first, step, iter, try;
+static int is_raw, err, first, last, step, iter, try;
 
 static void
 invoke(int fail)
@@ -99,7 +99,7 @@ open_file(const char *prefix, int proc)
 int
 main(int argc, char *argv[])
 {
-       assert(argc == 11);
+       assert(argc == 12);
 
        is_raw = !strcmp("raw", argv[1]);
 
@@ -120,13 +120,14 @@ main(int argc, char *argv[])
        errstr = errno2name();
 
        first = atoi(argv[3]);
-       step = atoi(argv[4]);
-       iter = atoi(argv[5]);
-       int num_procs = atoi(argv[6]);
-       char *exp_prefix = argv[7];
-       char *got_prefix = argv[8];
-       char *out_prefix = argv[9];
-       char *pid_prefix = argv[10];
+       last = atoi(argv[4]);
+       step = atoi(argv[5]);
+       iter = atoi(argv[6]);
+       int num_procs = atoi(argv[7]);
+       char *exp_prefix = argv[8];
+       char *got_prefix = argv[9];
+       char *out_prefix = argv[10];
+       char *pid_prefix = argv[11];
 
        assert(first > 0);
        assert(step >= 0);
@@ -164,8 +165,10 @@ main(int argc, char *argv[])
                int i;
                for (i = 1; i <= iter; ++i) {
                        int fail = 0;
-                       if (first > 0) {
+                       if (last != 0) {
                                --first;
+                               if (last != -1)
+                                       --last;
                                if (first == 0) {
                                        fail = 1;
                                        first = step;
index 497e35ea1533eca04c10ab1bbf54ce82e6d4d0f4..f054ed4920ce1b6b59267df4a60ea2c46df9cf23 100755 (executable)
@@ -3,7 +3,7 @@
 # Check that fault injection works properly.
 #
 # Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -22,24 +22,32 @@ N=100
 
 check_fault_injection()
 {
-       local trace fault err first step procs extra
+       local trace fault err first last step procs extra
        trace=$1; shift
        fault=$1; shift
        err=$1; shift
        first=$1; shift
+       last=$1; shift
        step=$1; shift
        procs=$1; shift
        extra="$*"
 
        local when=
-       if [ -z "$first$step" ]; then
+       if [ -z "$first$last$step" ]; then
                first=1
+               last=-1
                step=1
+       elif [ -z "$last" ]; then
+               case "$step" in
+                       '') when=":when=$first"; step=1; last=$first ;;
+                       +) when=":when=$first+"; step=1; last=-1 ;;
+                       *) when=":when=$first+$step"; last=-1; ;;
+               esac
        else
                case "$step" in
-                       '') when=":when=$first"; step=0 ;;
-                       +) when=":when=$first+"; step=1 ;;
-                       *) when=":when=$first+$step" ;;
+                       '') when=":when=${first}..${last}"; step=1 ;;
+                       +) when=":when=${first}..${last}+"; step=1 ;;
+                       *) when=":when=${first}..${last}+${step}" ;;
                esac
        fi
 
@@ -63,7 +71,7 @@ check_fault_injection()
 
        run_strace -a11 -ff -e trace=$trace \
                "$@" -e fault=$fault$when$error$suffix $extra \
-               ../$NAME $raw "$err" "$first" "$step" $N \
+               ../$NAME $raw "$err" "$first" "$last" "$step" $N \
                "$procs" "$outexp" "$outgot" "$outout" "$outpid"
 
        for i in $(seq 0 $((procs - 1)) )
@@ -78,19 +86,37 @@ check_fault_injection()
 for err in '' ENOSYS 22 einval; do
        for fault in writev desc,51; do
                check_fault_injection \
-                       writev $fault "$err" '' '' 1 -efault=chdir
+                       writev $fault "$err" '' '' '' 1 -efault=chdir
                check_fault_injection \
-                       writev $fault "$err" '' '' 1 -efault=chdir -efault=none
+                       writev $fault "$err" '' '' '' 1 -efault=chdir -efault=none
                for F in 1 2 3 5 7 11; do
                        check_fault_injection \
-                               writev $fault "$err" $F '' 1
+                               writev $fault "$err" $F '' '' 1
                        check_fault_injection \
-                               writev $fault "$err" $F + 1
+                               writev $fault "$err" $F '' + 1
+
+                       for L in 1 2 3 5 7 11; do
+                               [ "$L" -ge "$F" ] ||
+                                       continue
+                               check_fault_injection \
+                                       writev $fault "$err" $F $L '' 1
+                               check_fault_injection \
+                                       writev $fault "$err" $F $L + 1
+                       done
+
                        for S in 1 2 3 5 7 11; do
                                check_fault_injection \
-                                       writev $fault "$err" $F $S 1
+                                       writev $fault "$err" $F '' $S 1
                                check_fault_injection \
-                                       writev $fault "$err" $F $S 4
+                                       writev $fault "$err" $F '' $S 4
+                               for L in 1 2 3 5 7 11; do
+                                       [ "$L" -ge "$F" ] ||
+                                               continue
+                                       check_fault_injection \
+                                               writev $fault "$err" $F $L $S 1
+                                       check_fault_injection \
+                                               writev $fault "$err" $F $L $S 4
+                               done
                        done
                done
        done
index 4c89d78a3f920053c46eaaf99615118a1f312842..a9a8afc80764549e97d057f7aa8e75304b5994c2 100644 (file)
@@ -2,6 +2,7 @@
  * Check fault injection along with signal injection.
  *
  * Copyright (c) 2017-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -11,7 +12,7 @@
 #include <signal.h>
 #include <unistd.h>
 #include <sys/stat.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 static struct stat before, after;
 
index 16419a4939c88c3569c2a069feca187292b7c56e..1e657a734dd8d6e196ddb6d0ec079f08771963d6 100644 (file)
@@ -2,14 +2,14 @@
  * Check success injection.
  *
  * Copyright (c) 2017 Elvira Khabirova <lineprinter0@gmail.com>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_chdir
 
index c09b8322f8d9b1d73104f62ceae26a4d7c870486..03bc0331e8e91b2bae4f45747307298e2c0b6d5c 100644 (file)
@@ -2,6 +2,7 @@
  * Check that signal injection works properly.
  *
  * Copyright (c) 2017-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +11,7 @@
 #include "tests.h"
 #include <signal.h>
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 static void
 handler(int sig)
index 53245345e0e753e33234ca812eccd1b3eef329e3..c513fe12ec736ed612d1330a03b7451e240aa879 100755 (executable)
@@ -3,6 +3,7 @@
 # Check -e inject= syntax.
 #
 # Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2017-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -88,6 +89,27 @@ for arg in 42 chdir \
           chdir:syscall=-42 \
           chdir:syscall=42 \
           chdir:syscall=gettid:syscall=gettid \
+          chdir:when=. \
+          chdir:when=.+ \
+          chdir:when=..+ \
+          chdir:when=+ \
+          chdir:when=++ \
+          chdir:when=10. \
+          chdir:when=11.12 \
+          chdir:when=13.14+ \
+          chdir:when=15.. \
+          chdir:when=16... \
+          chdir:when=17...18 \
+          chdir:when=.19 \
+          chdir:when=..20 \
+          chdir:when=..21+ \
+          chdir:when=..22+3 \
+          chdir:when=24..23 \
+          chdir:when=25..26+0 \
+          chdir:when=27..65535 \
+          chdir:when=28..65535+ \
+          chdir:when=65535..65535 \
+          chdir:when=65535..65535+ \
           ; do
        $STRACE -e inject="$arg" true 2> "$LOG" &&
                fail_with "$arg"
index 8fd2b69d6b7adf6d49cb50b6925f4659b4f0cbd7..aab6a9065f4ce876e42d18bab04486c912fae41e 100755 (executable)
@@ -3,7 +3,7 @@
 # Check how strace -e signal=set works.
 #
 # Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -16,8 +16,12 @@ test_one_sig()
        sigs="$1"; shift
 
        run_prog "../$NAME" "$@" > /dev/null
+
        run_strace -e trace=none -e signal="$sigs" "../$NAME" "$@" > "$EXP"
        match_diff "$LOG" "$EXP"
+
+       run_strace --trace=none --signal="$sigs" "../$NAME" "$@" > "$EXP"
+       match_diff "$LOG" "$EXP"
 }
 
 test_sigs()
@@ -86,6 +90,11 @@ for arg in ' ' invalid_signal_name SIG -1 256 1-1 \
                fail_with "$arg"
        LC_ALL=C grep -F 'invalid signal' < "$LOG" > /dev/null ||
                fail_with "$arg"
+
+       $STRACE --signal="$arg" true 2> "$LOG" &&
+               fail_with "$arg"
+       LC_ALL=C grep -F 'invalid signal' < "$LOG" > /dev/null ||
+               fail_with "$arg"
 done
 
 exit 0
index 945fc8c72997e530513701b725e7c98347872e5f..a2882ba4dc3d218902a5cb7989c9206ac1de9276 100755 (executable)
@@ -3,7 +3,7 @@
 # Check how strace -e abbrev=set, -e raw=set, -e trace=set,
 # and -e verbose=set work.
 #
-# Copyright (c) 2014-2018 The strace developers.
+# Copyright (c) 2014-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -28,6 +28,16 @@ check_output_mismatch()
        }
 }
 
+check_execve_output_mismatch()
+{
+       local what how
+       what="$1"; shift
+       how="$1"; shift
+
+       check_output_mismatch "$@" -e "$what=$how" -e execve
+       check_output_mismatch "$@" "--$what=$how" --trace=execve
+}
+
 check_output_mismatch "$pattern_abbrev_verbose" -e execve
 LC_ALL=C grep -v -x "$pattern_abbrev_verbose" "$LOG" |
 LC_ALL=C grep '^[[:alnum:]_]*(' > /dev/null &&
@@ -47,22 +57,16 @@ LC_ALL=C grep '^[[:alnum:]_]*(' "$LOG" > /dev/null &&
 
 for a in execve \!chdir /. all \!none \
         file process \!desc \!ipc \!memory \!network \!signal; do
-       check_output_mismatch \
-               "$pattern_abbrev_verbose" -e abbrev="$a" -e execve
-       check_output_mismatch \
-               "$pattern_raw" -a22 -e raw="$a" -e execve
-       check_output_mismatch \
-               "$pattern_abbrev_verbose" -e verbose="$a" -e execve
+       check_execve_output_mismatch abbrev "$a" "$pattern_abbrev_verbose"
+       check_execve_output_mismatch raw "$a" "$pattern_raw"
+       check_execve_output_mismatch verbose "$a" "$pattern_abbrev_verbose"
 done
 
 for a in \!execve chdir 42 \!all none \
         \!file \!process desc ipc memory network signal; do
-       check_output_mismatch \
-               "$pattern_nonabbrev_verbose" -e abbrev="$a" -e execve
-       check_output_mismatch \
-               "$pattern_abbrev_verbose" -e raw="$a" -e execve
-       check_output_mismatch \
-               "$pattern_nonverbose" -a31 -e verbose="$a" -e execve
+       check_execve_output_mismatch abbrev "$a" "$pattern_nonabbrev_verbose"
+       check_execve_output_mismatch raw "$a" "$pattern_abbrev_verbose"
+       check_execve_output_mismatch verbose "$a" "$pattern_nonverbose" --columns=31
 done
 
 exit 0
index d57314fc7672877a8b15a5b75566f781bcd374bf..e2677f58d8f514f72375beeed816ae2cc91b20f5 100644 (file)
@@ -2,7 +2,7 @@
 #
 # Common code for per-personality qualification tests
 #
-# Copyright (c) 2018 The strace developers.
+# Copyright (c) 2018-2019 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -25,7 +25,7 @@ x86_64)
 x32)
        supported_pers='x32 32'
        ;;
-aarch64|powerpc64|riscv|s390x|sparc64|tile)
+aarch64|powerpc64|s390x|sparc64|tile)
        supported_pers='64 32'
        ;;
 *)
index 1fae566de07f4b929167ed5d2ca27869ef4777ea..0708e2a301bc0c73a34374b77b349a3c07c077e3 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -11,7 +11,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined(__NR_quotactl) && \
        (defined(HAVE_LINUX_QUOTA_H) || defined(HAVE_SYS_QUOTA_H)) && \
index 3a9952766ef6e45d3b4f784e3653dcc5d4ad9e20..fd45557997af3254588e9618b0031f3dacb511a0 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -11,7 +11,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined(__NR_quotactl) && \
        (defined(HAVE_LINUX_QUOTA_H) || defined(HAVE_SYS_QUOTA_H))
index 0217670b96a7510a0e693cbc79fb32c97556a1da..27df009d14aaa547b3b9d16e14f18a212d655af1 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding and dumping of read and write syscalls.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2019 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -14,7 +14,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 static void
 dump_str_ex(const char *str, const unsigned int len, const int idx_w)
@@ -153,9 +153,17 @@ main(void)
        skip_if_unavailable("/proc/self/fd/");
 
        static const char tmp[] = "read-write-tmpfile";
-       if (open(tmp, O_CREAT|O_RDONLY|O_TRUNC, 0600) != 0)
+       bool need_cleanup = true;
+       long rc;
+
+       rc = open(tmp, O_RDONLY, 0600);
+       if (rc < 0) {
+               rc = open(tmp, O_CREAT|O_EXCL|O_RDONLY, 0600);
+               need_cleanup = false;
+       }
+       if (rc != 0)
                perror_msg_and_fail("creat: %s", tmp);
-       if (open(tmp, O_WRONLY) != 1)
+       if (open(tmp, O_TRUNC|O_WRONLY) != 1)
                perror_msg_and_fail("open: %s", tmp);
 
        static const char w_c[] = "0123456789abcde";
@@ -175,8 +183,6 @@ main(void)
 
        void *efault = r1 - get_page_size();
 
-       long rc;
-
        rc = k_write(1, w, 0);
        if (rc)
                perror_msg_and_fail("write: expected 0, returned %ld", rc);
@@ -270,9 +276,11 @@ main(void)
        if (open("/dev/null", O_WRONLY) != 1)
                perror_msg_and_fail("open");
 
+       (void) close(4);
        if (open("/dev/zero", O_RDONLY) != 4)
                perror_msg_and_fail("open");
 
+       (void) close(5);
        if (open("/dev/null", O_WRONLY) != 5)
                perror_msg_and_fail("open");
 
@@ -282,6 +290,9 @@ main(void)
 
        test_dump(256, true);
 
+       if (need_cleanup && unlink(tmp))
+               perror_msg_and_fail("unlink: %s", tmp);
+
        tprintf("+++ exited with 0 +++\n");
        return 0;
 }
index 1b21fe5960492febc3921b31196c6a9cdae27c88..bcd33e0c42a07e2c17bd93b138232806c4417292 100644 (file)
@@ -1,34 +1,30 @@
 /*
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef HAVE_READAHEAD
 /* Check for glibc readahead argument passing bugs. */
-# ifdef __GLIBC__
 /*
  * glibc < 2.8 had an incorrect order of higher and lower parts of offset,
  * see https://sourceware.org/bugzilla/show_bug.cgi?id=5208
  */
-#  if !(defined __GLIBC_MINOR__ && \
-       (__GLIBC__ << 16) + __GLIBC_MINOR__ >= (2 << 16) + 8)
-#   undef HAVE_READAHEAD
-#  endif /* glibc < 2.8 */
+# if GLIBC_PREREQ_LT(2, 8)
+#  undef HAVE_READAHEAD
+# endif /* glibc < 2.8 */
 /*
  * glibc < 2.25 had an incorrect implementation on mips n64,
  * see https://sourceware.org/bugzilla/show_bug.cgi?id=21026
  */
-#  if defined LINUX_MIPSN64 && !(defined __GLIBC_MINOR__ && \
-       (__GLIBC__ << 16) + __GLIBC_MINOR__ >= (2 << 16) + 25)
-#   undef HAVE_READAHEAD
-#  endif /* LINUX_MIPSN64 && glibc < 2.25 */
-# endif /* __GLIBC__ */
+# if GLIBC_PREREQ_LT(2, 25) && defined LINUX_MIPSN64
+#  undef HAVE_READAHEAD
+# endif /* LINUX_MIPSN64 && glibc < 2.25 */
 #endif /* HAVE_READAHEAD */
 
 #ifdef HAVE_READAHEAD
index 284c221ec303a5c074ae763c9e956d6e40bc3d71..709b4f31a0362b53582698957656ac9beed09bba 100644 (file)
@@ -1,13 +1,13 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_readdir
 
index c2a9b22c6dc706f521a48f6e6685f0056347554d..a140794acc9cc2bb9eb9079862d2397524858fdf 100644 (file)
@@ -1,13 +1,14 @@
 /*
  * Copyright (c) 2015 Gleb Fotengauer-Malinovskiy <glebfm@altlinux.org>
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_readlink
 
index 6909ac0b88c4d837b6637a224841921fe9728143..50534570ca278a4b60d480c288324397ace1a5d9 100644 (file)
@@ -1,13 +1,14 @@
 /*
  * Copyright (c) 2015 Gleb Fotengauer-Malinovskiy <glebfm@altlinux.org>
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_readlinkat
 
index 8bc9c6b0957a91965aebba14b514f7f3ab461d94..0b22ee9f8b9ffe57f3ff43a32858aec45165cfa8 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_reboot
 
diff --git a/tests-m32/recv-MSG_TRUNC.c b/tests-m32/recv-MSG_TRUNC.c
new file mode 100644 (file)
index 0000000..ee9ea63
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+ * Check decoding of recv MSG_TRUNC.
+ *
+ * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <errno.h>
+#include <stdio.h>
+#include <sys/socket.h>
+#include "scno.h"
+
+#ifndef __NR_recv
+# define __NR_recv -1
+#endif
+#define SC_recv 10
+
+static int
+sys_recv(int sockfd, const void *buf, unsigned int len, int flags)
+{
+       int rc = socketcall(__NR_recv, SC_recv,
+                           sockfd, (long) buf, len, flags, 0);
+       if (rc < 0 && ENOSYS == errno)
+               perror_msg_and_skip("recv");
+       return rc;
+}
+
+int
+main(void)
+{
+       static const char sbuf[2] = "AB";
+       int sv[2];
+       TAIL_ALLOC_OBJECT_CONST_PTR(char, rbuf);
+
+       if (socketpair(AF_UNIX, SOCK_DGRAM, 0, sv))
+               perror_msg_and_skip("socketpair");
+
+       if (send(sv[1], sbuf + 1, 1, 0) != 1)
+                perror_msg_and_skip("send");
+       if (sys_recv(sv[0], rbuf - 1, 2, MSG_PEEK) != 1)
+               perror_msg_and_fail("recv");
+       printf("recv(%d, \"B\", 2, MSG_PEEK) = 1\n", sv[0]);
+
+       if (sys_recv(sv[0], rbuf, 1, MSG_TRUNC) != 1)
+               perror_msg_and_skip("recv");
+       printf("recv(%d, \"B\", 1, MSG_TRUNC) = 1\n", sv[0]);
+
+       if (send(sv[1], sbuf, 2, 0) != 2)
+                perror_msg_and_skip("send");
+       if (sys_recv(sv[0], rbuf, 1, MSG_TRUNC) != 2)
+               perror_msg_and_skip("recv");
+       printf("recv(%d, \"A\", 1, MSG_TRUNC) = 2\n", sv[0]);
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
diff --git a/tests-m32/recv-MSG_TRUNC.gen.test b/tests-m32/recv-MSG_TRUNC.gen.test
new file mode 100755 (executable)
index 0000000..07f112b
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (recv-MSG_TRUNC -a26 -e trace=recv); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a26 -e trace=recv
diff --git a/tests-m32/recvfrom-MSG_TRUNC.c b/tests-m32/recvfrom-MSG_TRUNC.c
new file mode 100644 (file)
index 0000000..b8ef378
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Check decoding of recvfrom MSG_TRUNC.
+ *
+ * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <stdio.h>
+#include <sys/socket.h>
+
+int
+main(void)
+{
+       static const char sbuf[2] = "AB";
+       int sv[2];
+       TAIL_ALLOC_OBJECT_CONST_PTR(char, rbuf);
+
+       if (socketpair(AF_UNIX, SOCK_DGRAM, 0, sv))
+               perror_msg_and_skip("socketpair");
+
+       if (send(sv[1], sbuf + 1, 1, 0) != 1)
+                perror_msg_and_skip("send");
+       if (recvfrom(sv[0], rbuf - 1, 2, MSG_PEEK, NULL, NULL) != 1)
+               perror_msg_and_fail("recvfrom");
+       printf("recvfrom(%d, \"B\", 2, MSG_PEEK, NULL, NULL) = 1\n", sv[0]);
+
+       if (recvfrom(sv[0], rbuf, 1, MSG_TRUNC, NULL, NULL) != 1)
+               perror_msg_and_skip("recvfrom");
+       printf("recvfrom(%d, \"B\", 1, MSG_TRUNC, NULL, NULL) = 1\n", sv[0]);
+
+       if (send(sv[1], sbuf, 2, 0) != 2)
+                perror_msg_and_skip("send");
+       if (recvfrom(sv[0], rbuf, 1, MSG_TRUNC, NULL, NULL) != 2)
+               perror_msg_and_skip("recvfrom");
+       printf("recvfrom(%d, \"A\", 1, MSG_TRUNC, NULL, NULL) = 2\n", sv[0]);
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
diff --git a/tests-m32/recvfrom-MSG_TRUNC.gen.test b/tests-m32/recvfrom-MSG_TRUNC.gen.test
new file mode 100755 (executable)
index 0000000..e27f52d
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (recvfrom-MSG_TRUNC -e trace=recvfrom); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=recvfrom
index ebf91bec23cbf4f5324cf80acd4d8cf7508bd655..c98052c8f7a3f466653184c1eec4d943a66fc6f8 100755 (executable)
@@ -3,7 +3,7 @@
 # Ensure that strace does not retain stdin and stdout descriptors.
 #
 # Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -16,42 +16,34 @@ run_prog_skip_if_failed \
 check_prog sleep
 check_prog yes
 
+SLEEP_3_BITS="$SLEEP_A_BIT; $SLEEP_A_BIT; $SLEEP_A_BIT"
 > "$OUT"
-> "$LOG"
+
+> lock1
+> lock2
 (
-       while [ -f "$LOG" ]; do
-               :
+       while [ -f lock1 ]; do
+               $SLEEP_A_BIT
        done
-       $SLEEP_A_BIT &
        yes
-       if kill -0 $! 2> /dev/null; then
-               wait
-       else
-               echo TIMEOUT >> "$OUT"
-       fi
+       [ -f lock2 ] ||
+               printf ' input' >> "$OUT"
 ) | $STRACE -qq -enone -esignal=none \
-       sh -c "exec <&- >&-; rm -f -- $LOG; $SLEEP_A_BIT; $SLEEP_A_BIT"
-
-if [ -s "$OUT" ]; then
-       fail_ "$STRACE failed to redirect standard input"
-fi
+       sh -c "exec <&- >&-; rm -f lock1; $SLEEP_3_BITS; rm -f lock2"
 
-> "$LOG"
+> lock1
+> lock2
 $STRACE -qq -enone -esignal=none \
-       sh -c "exec <&- >&-; rm -f -- $LOG; $SLEEP_A_BIT; $SLEEP_A_BIT" |
+       sh -c "exec <&- >&-; rm -f lock1; $SLEEP_3_BITS; rm -f lock2" |
 (
-       while [ -f "$LOG" ]; do
-               :
+       while [ -f lock1 ]; do
+               $SLEEP_A_BIT
        done
-       $SLEEP_A_BIT &
        cat > /dev/null
-       if kill -0 $! 2> /dev/null; then
-               wait
-       else
-               echo TIMEOUT >> "$OUT"
-       fi
+       [ -f lock2 ] ||
+               printf ' output' >> "$OUT"
 )
 
 if [ -s "$OUT" ]; then
-       fail_ "$STRACE failed to redirect standard output"
+       fail_ "$STRACE failed to redirect standard descriptors:$(cat "$OUT")"
 fi
index 2a2bfc6e9b57f72dfaca33973f9d111fa8aad057..7e43926e4e8297c895c322e4a50bacf7dbbbb6a4 100644 (file)
@@ -2,14 +2,13 @@
  * Check decoding of remap_file_pages syscall.
  *
  * Copyright (c) 2016-2017 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
 #include "scno.h"
 
 #ifdef __NR_remap_file_pages
@@ -77,11 +76,17 @@ main(void)
        k_remap_file_pages(addr, size, prot, pgoff, flags);
 
 /*
- * HP PA-RISC is the only architecture that has MAP_TYPE defined to 0x3, which
- * is also used for MAP_SHARED_VALIDATE since Linux commit v4.15-rc1~71^2^2~23.
+ * HP PA-RISC is the only architecture that has MAP_TYPE defined to something
+ * different.  For example, before commit v4.17-rc1~146^2~9 it was defined to
+ * 0x3 which is also used for MAP_SHARED_VALIDATE since Linux commit
+ * v4.15-rc1~71^2^2~23.
  */
 #  ifdef __hppa__
-#   define MAP_TYPE_str "MAP_SHARED_VALIDATE"
+#   if MAP_TYPE == 0x03
+#    define MAP_TYPE_str "MAP_SHARED_VALIDATE"
+#   else
+#    define MAP_TYPE_str "0x2b /* MAP_??? */"
+#   endif
 #  else
 #   define MAP_TYPE_str "0xf /* MAP_??? */"
 #  endif
index 3d77573ce7a1b36ceaf3667e09752ed1e9a69338..ccd65b410405ee79746cf76551f77ebd96f91a49 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_rename
 
index 7f11893f116e30c67cee1977a886dceed62386bc..8c648cd396a3865bc4660c5684379dc195d38663 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_renameat
 
index 663c0638fd6b52a8f7facc4f551172bfc5529b8d..548490cdef6d5d76343c7a974ebef87bf4213203 100644 (file)
@@ -2,13 +2,13 @@
  * Check decoding of renameat2 syscall.
  *
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
 #include "scno.h"
 
 #ifdef __NR_renameat2
index 20ae12f6bd98772ea3b6e2bb973c853a925302d8..2ea9a7bd461339b49713ce68e225363f867fb68a 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of request_key syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_request_key
 
index 9a8f7e3a9c166449a3181808270749bb0f7fe8f3..a42d3b9b732dc93e79da9cb4857b4c405d62a3e6 100644 (file)
@@ -1,19 +1,21 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <assert.h>
 #include <stdio.h>
 #include <stdint.h>
 #include <signal.h>
 #include <time.h>
 #include <sys/time.h>
 
+#define NANOSLEEP_NAME_RE "(nanosleep|clock_nanosleep(_time64)?)"
+#define NANOSLEEP_CALL_RE "(nanosleep\\(|clock_nanosleep(_time64)?\\(CLOCK_REALTIME, 0, )"
+
 int
 main(void)
 {
@@ -27,20 +29,22 @@ main(void)
        const sigset_t set = {};
        const struct sigaction act = { .sa_handler = SIG_IGN };
        const struct itimerval itv = { .it_value.tv_usec = 111111 };
-       struct timespec req = { .tv_nsec = 222222222 }, rem;
+       const struct timespec req = { .tv_nsec = 222222222 };
+       struct timespec rem = { 0xdefaced, 0xdefaced };
 
-       assert(sigaction(SIGALRM, &act, NULL) == 0);
-       assert(sigprocmask(SIG_SETMASK, &set, NULL) == 0);
+       if (sigaction(SIGALRM, &act, NULL))
+               perror_msg_and_fail("sigaction");
+       if (sigprocmask(SIG_SETMASK, &set, NULL))
+               perror_msg_and_fail("sigprocmask");
        if (setitimer(ITIMER_REAL, &itv, NULL))
                perror_msg_and_skip("setitimer");
        if (nanosleep(&req, &rem))
                perror_msg_and_fail("nanosleep");
 
-       printf("nanosleep\\(\\{tv_sec=%lld, tv_nsec=%llu\\}"
-              ", \\{tv_sec=%lld, tv_nsec=%llu\\}\\)"
+       printf("%s\\{tv_sec=0, tv_nsec=[0-9]+\\}"
+              ", \\{tv_sec=[0-9]+, tv_nsec=[0-9]+\\}\\)"
               " = \\? ERESTART_RESTARTBLOCK \\(Interrupted by signal\\)\n",
-              (long long) req.tv_sec, zero_extend_signed_to_ull(req.tv_nsec),
-              (long long) rem.tv_sec, zero_extend_signed_to_ull(rem.tv_nsec));
+              NANOSLEEP_CALL_RE);
        puts("--- SIGALRM \\{si_signo=SIGALRM, si_code=SI_KERNEL\\} ---");
 # ifdef __arm__
 /* old kernels used to overwrite ARM_r0 with -EINTR */
@@ -48,12 +52,12 @@ main(void)
 # else
 #  define ALTERNATIVE_NANOSLEEP_REQ ""
 # endif
-       printf("(nanosleep\\((%s\\{tv_sec=%lld, tv_nsec=%llu\\})"
-              ", %p|restart_syscall\\(<\\.\\.\\."
-              " resuming interrupted nanosleep \\.\\.\\.>)\\) = 0\n",
+       printf("(%s(%s\\{tv_sec=0, tv_nsec=[0-9]+\\})"
+              ", 0x[[:xdigit:]]+|restart_syscall\\(<\\.\\.\\."
+              " resuming interrupted %s \\.\\.\\.>)\\) = 0\n",
+              NANOSLEEP_CALL_RE,
               ALTERNATIVE_NANOSLEEP_REQ,
-              (long long) req.tv_sec, zero_extend_signed_to_ull(req.tv_nsec),
-              &rem);
+              NANOSLEEP_NAME_RE);
 
        puts("\\+\\+\\+ exited with 0 \\+\\+\\+");
        return 0;
index 8dde6684f0d69c954511af7269fb18ad6c953f3c..5c433fda04a9e0d54525d71a9bc7c977283537bc 100755 (executable)
@@ -2,7 +2,7 @@
 #
 # Check how "resuming interrupted nanosleep" works.
 #
-# Copyright (c) 2015-2018 The strace developers.
+# Copyright (c) 2015-2019 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,6 +10,6 @@
 . "${srcdir=.}/init.sh"
 
 run_prog > /dev/null
-syscalls=nanosleep,restart_syscall
+syscalls=restart_syscall,/nanosleep
 run_strace -a20 -e trace=$syscalls $args > "$EXP"
 match_grep "$LOG" "$EXP"
index 27abf75b4f91b9c3af34dda8af0892e1b8b111b6..645644c8c6434dec9e539c78cad4c3e4c1dd1730 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Check decoding of riscv_flush_icache syscall.
  *
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -9,7 +9,6 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
 
 #include "scno.h"
 
index 505303ad2db017ab2b82ae572deba313fc69d4e2..670f741d0881a179000866d3b38dcb4ea8d0b7a9 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_rmdir
 
index 06b15db207df851b0887a2d9a7273278d707e8b8..29954bad70bf6f637bac3614b5e1f0339b7ef779 100644 (file)
@@ -2,14 +2,14 @@
  * This file is part of rt_sigpending strace test.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_rt_sigpending
 
index e6f513da6959d90f53e04c2ebecea8d94b69fe70..599f28311320d562d8f7139e5b32c046c467a927 100644 (file)
@@ -2,14 +2,14 @@
  * This file is part of rt_sigprocmask strace test.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_rt_sigprocmask
 
diff --git a/tests-m32/rt_sigqueueinfo--pidns-translation.c b/tests-m32/rt_sigqueueinfo--pidns-translation.c
new file mode 100644 (file)
index 0000000..74bfb46
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "rt_sigqueueinfo.c"
diff --git a/tests-m32/rt_sigqueueinfo--pidns-translation.gen.test b/tests-m32/rt_sigqueueinfo--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..ef490b5
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_sigqueueinfo--pidns-translation test_pidns -esignal=none -e trace=rt_sigqueueinfo); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -esignal=none -e trace=rt_sigqueueinfo
index 0455dd408682ed224c140865190dd4d60e88a1d9..e22e4640350a5164731e2cd3a152590e13391a93 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
+#include "pidns.h"
 #include <assert.h>
 #include <stdio.h>
 #include <signal.h>
@@ -15,6 +16,8 @@
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        struct sigaction sa = {
                .sa_handler = SIG_IGN
        };
@@ -22,15 +25,19 @@ main(void)
                .sival_ptr = (void *) (unsigned long) 0xdeadbeefbadc0dedULL
        };
        pid_t pid = getpid();
+       const char *pid_str = pidns_pid2str(PT_TGID);
 
        assert(sigaction(SIGUSR1, &sa, NULL) == 0);
        if (sigqueue(pid, SIGUSR1, value))
                perror_msg_and_skip("sigqueue");
-       printf("rt_sigqueueinfo(%u, SIGUSR1, {si_signo=SIGUSR1, "
-               "si_code=SI_QUEUE, si_pid=%u, si_uid=%u, "
+       pidns_print_leader();
+       printf("rt_sigqueueinfo(%d%s, SIGUSR1, {si_signo=SIGUSR1, "
+               "si_code=SI_QUEUE, si_pid=%d%s, si_uid=%u, "
                "si_value={int=%d, ptr=%p}}) = 0\n",
-               pid, pid, getuid(), value.sival_int, value.sival_ptr);
-       printf("+++ exited with 0 +++\n");
+               pid, pid_str, pid, pid_str,
+               getuid(), value.sival_int, value.sival_ptr);
+       pidns_print_leader();
+       puts("+++ exited with 0 +++");
 
        return 0;
 }
index 55ae6239d31788c477f9922d071079dba7c55edb..720e178242761c6a99d51bad33955317b603a0f5 100644 (file)
@@ -2,14 +2,14 @@
  * This file is part of rt_sigsuspend strace test.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_rt_sigsuspend
 
index 56144f527005c41ddaaa53a75d89af4f41ce600b..5ecd9b13e1842a2a5584eede42781cfbd764f167 100644 (file)
@@ -2,14 +2,14 @@
  * This file is part of rt_sigtimedwait strace test.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_rt_sigtimedwait
 
diff --git a/tests-m32/rt_tgsigqueueinfo--pidns-translation.c b/tests-m32/rt_tgsigqueueinfo--pidns-translation.c
new file mode 100644 (file)
index 0000000..94396f0
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "rt_tgsigqueueinfo.c"
diff --git a/tests-m32/rt_tgsigqueueinfo--pidns-translation.gen.test b/tests-m32/rt_tgsigqueueinfo--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..399b247
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_tgsigqueueinfo--pidns-translation test_pidns -esignal=none -e trace=rt_tgsigqueueinfo); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -esignal=none -e trace=rt_tgsigqueueinfo
index e3ad0e22c1db6035092cd7f311e13befe84dc4b5..21d01cbb99a980c3a0cb7cb27df125457869f904 100644 (file)
@@ -2,16 +2,17 @@
  * This file is part of rt_tgsigqueueinfo strace test.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
+#include "pidns.h"
 
-#ifdef __NR_rt_tgsigqueueinfo
+#if defined __NR_rt_tgsigqueueinfo && defined __NR_gettid
 
 # include <errno.h>
 # include <signal.h>
 # include <unistd.h>
 
 static long
-k_tgsigqueueinfo(const pid_t pid, const int sig, const void *const info)
+k_tgsigqueueinfo(const pid_t tgid, const int tid, const int sig, const void *const info)
 {
        return syscall(__NR_rt_tgsigqueueinfo,
-                      F8ILL_KULONG_MASK | pid,
-                      F8ILL_KULONG_MASK | pid,
+                      F8ILL_KULONG_MASK | tgid,
+                      F8ILL_KULONG_MASK | tid,
                       F8ILL_KULONG_MASK | sig,
                       info);
 }
@@ -32,6 +33,8 @@ k_tgsigqueueinfo(const pid_t pid, const int sig, const void *const info)
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        const struct sigaction sa = {
                .sa_handler = SIG_IGN
        };
@@ -48,17 +51,22 @@ main(void)
        info->si_value.sival_ptr =
                (void *) (unsigned long) 0xdeadbeeffacefeedULL;
 
-       if (k_tgsigqueueinfo(info->si_pid, SIGUSR1, info))
+       if (k_tgsigqueueinfo(getpid(), syscall(__NR_gettid), SIGUSR1, info))
                (errno == ENOSYS ? perror_msg_and_skip : perror_msg_and_fail)(
                        "rt_tgsigqueueinfo");
 
-       printf("rt_tgsigqueueinfo(%u, %u, %s, {si_signo=%s"
-               ", si_code=SI_QUEUE, si_errno=ENOENT, si_pid=%u"
-               ", si_uid=%u, si_value={int=%d, ptr=%p}}) = 0\n",
-               info->si_pid, info->si_pid, "SIGUSR1", "SIGUSR1",
-               info->si_pid, info->si_uid, info->si_value.sival_int,
+       pidns_print_leader();
+       printf("rt_tgsigqueueinfo(%d%s, %d%s, %s, {si_signo=%s"
+               ", si_code=SI_QUEUE, si_errno=ENOENT, si_pid=%d%s"
+               ", si_uid=%d, si_value={int=%d, ptr=%p}}) = 0\n",
+               info->si_pid, pidns_pid2str(PT_TGID),
+               info->si_pid, pidns_pid2str(PT_TID),
+               "SIGUSR1", "SIGUSR1",
+               info->si_pid, pidns_pid2str(PT_TGID),
+               info->si_uid, info->si_value.sival_int,
                info->si_value.sival_ptr);
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
index a84c14136223230bb0aa042ca40ff5b45ac494d8..2a17b02afbd8892f7220fac06a1f00435ed0bbfb 100644 (file)
@@ -1,14 +1,14 @@
 /*
  * Check decoding of s390_guarded_storage syscall.
  *
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_s390_guarded_storage && defined HAVE_ASM_GUARDED_STORAGE_H
 
index 0cd160c6edeff901ae0f8a3442c9674c0405b87e..1286b134766114076dda396b7244adf678ac66fe 100644 (file)
@@ -1,14 +1,14 @@
 /*
  * Check decoding of s390_pci_mmio_read and s390_pci_mmio_write syscalls.
  *
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_s390_pci_mmio_read && defined __NR_s390_pci_mmio_write
 
index db31719b667d6a353c34c73d5803f1fcd30e12e1..a336f94b960ecbd2755e0adf6a9ddea71f1cfa88 100644 (file)
@@ -1,14 +1,14 @@
 /*
  * Check decoding of s390_runtime_instr syscall.
  *
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_s390_runtime_instr
 
index 5186fdc9d812fb9a21f8352b3b1426ba5390d8ea..48c3dda7961e5d3a30450ef5d8e0bd5d899eb3d0 100644 (file)
@@ -1,14 +1,14 @@
 /*
  * Check decoding of s390_sthyi syscall.
  *
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined HAVE_ICONV_H && defined HAVE_ICONV_OPEN && defined __NR_s390_sthyi
 
@@ -113,7 +113,7 @@ ebcdic2ascii(unsigned char *ebcdic, size_t size)
                                   size, sizeof(ascii_buf));
        if (cd == (iconv_t) -1)
                perror_msg_and_fail("ebcdic2ascii: unable to allocate a "
-                                   "conversion descriptior for converting "
+                                   "conversion descriptor for converting "
                                    "EBCDIC to ASCII");
 
        while ((ret = iconv(cd, &ebcdic_pos, &ebcdic_left,
@@ -185,6 +185,44 @@ print_ebcdic(const char *prefix, unsigned char *addr, unsigned int offs,
        return true;
 }
 
+static inline void
+print_funcs(unsigned char *addr, unsigned int offs)
+{
+       bool cont;
+       const uint8_t *funcs = addr + offs;
+
+       if (!funcs[0])
+               return;
+
+       printf(" /* ");
+
+       if (funcs[0] & 0x80) {
+               printf("0: Obtain CPU Capacity Info");
+               cont = true;
+       }
+
+       if (funcs[0] & 0x40)
+               printf("%s1: Hypervisor Environment Info",
+                      cont ? ", " : (cont = true, ""));
+       if (funcs[0] & 0x20)
+               printf("%s2: Guest List",
+                      cont ? ", " : (cont = true, ""));
+       if (funcs[0] & 0x10)
+               printf("%s3: Designated Guest Info",
+                      cont ? ", " : (cont = true, ""));
+       if (funcs[0] & 0x08)
+               printf("%s4: Resource Pool List",
+                      cont ? ", " : (cont = true, ""));
+       if (funcs[0] & 0x04)
+               printf("%s5: Designated Resource Pool Information",
+                      cont ? ", " : (cont = true, ""));
+       if (funcs[0] & 0x02)
+               printf("%s6: Resource Pool Member List",
+                      cont ? ", " : (cont = true, ""));
+
+       printf(" */");
+}
+
 static void
 print_hypervisor_header(unsigned char *buf, int level, unsigned int offs_pos,
                        unsigned int len_pos, bool mt)
@@ -220,10 +258,16 @@ print_hypervisor_header(unsigned char *buf, int level, unsigned int offs_pos,
                               "for capping");
                        printed = true;
                }
-               if (cur[0] & 0x3F) {
+               if (cur[0] & 0x20) {
                        if (printed)
                                printf(", ");
-                       printf("%#hhx - ???", cur[0] & 0x3F);
+                       printf("0x20 - hypervisor is MT-enabled");
+                       printed = true;
+               }
+               if (cur[0] & 0x1F) {
+                       if (printed)
+                               printf(", ");
+                       printf("%#hhx - ???", cur[0] & 0x1F);
                }
                printf(" */");
        }
@@ -254,7 +298,20 @@ print_hypervisor_header(unsigned char *buf, int level, unsigned int offs_pos,
        print_u16(", infydifl", cur, 30, VERBOSE);
 
 # if VERBOSE
-       if (hdr_size > 32 && !is_empty(cur + 32, hdr_size - 32)) {
+       if (hdr_size >= 48) {
+               printf(", infyinsf=");
+               print_quoted_hex((char *) (cur + 32), 8);
+               print_funcs(cur, 32);
+
+               printf(", infyautf=");
+               print_quoted_hex((char *) (cur + 40), 8);
+               print_funcs(cur, 40);
+
+               if (hdr_size > 48 && !is_empty(cur + 48, hdr_size - 48)) {
+                       printf(", ");
+                       print_quoted_hex((char *) (cur + 48), hdr_size - 48);
+               }
+       } else if (hdr_size > 32 && !is_empty(cur + 32, hdr_size - 32)) {
                printf(", ");
                print_quoted_hex((char *) (cur + 32), hdr_size - 32);
        }
@@ -452,7 +509,7 @@ print_sthyi(unsigned char *buf)
        hdr_size = *(uint16_t *) (buf + 10);
        if (hdr_size < 44)
                error_msg_and_fail("sthyi: header section is too small "
-                                  "(got %hu, 44 expected)", hdr_size);
+                                  "(got %hu, >=44 expected)", hdr_size);
 
        /* INFHFLG1 */
        print_0x8("{/* header */ {infhflg1", buf, 0, true);
@@ -541,7 +598,7 @@ print_sthyi(unsigned char *buf)
        hdr_size = *(uint16_t *) (buf + 14);
        if (hdr_size < 60)
                error_msg_and_fail("sthyi: machine section is too small "
-                                  "(got %hu, 60 expected)", hdr_size);
+                                  "(got %hu, >=60 expected)", hdr_size);
 
        cur = buf + offs;
 
@@ -584,7 +641,19 @@ print_sthyi(unsigned char *buf)
        print_ebcdic(", infmseq",  cur, 40, 16, id_valid, false);
        print_ebcdic(", infmpman", cur, 56, 4,  id_valid, false);
 
-       if (hdr_size > 60 && !is_empty(cur + 60, hdr_size - 60)) {
+       if (hdr_size >= 72) {
+               if (cur[60] || cur[61] || cur[62] || cur[63])
+                       printf(", reserved_1__="
+                              "\"\\x%#02hhx\\x%#02hhx\\x%#02hhx\\x%#02hhx\"",
+                              cur[60], cur[61], cur[62], cur[63]);
+
+               print_ebcdic(", infmplnm", cur, 64, 8, false, false);
+
+               if (hdr_size > 72 && !is_empty(cur + 72, hdr_size - 72)) {
+                       printf(", ");
+                       print_quoted_hex((char *) (cur + 72), hdr_size - 72);
+               }
+       } else if (hdr_size > 60 && !is_empty(cur + 60, hdr_size - 60)) {
                printf(", ");
                print_quoted_hex((char *) (cur + 60), hdr_size - 60);
        }
@@ -601,9 +670,9 @@ partition_hdr:
                goto hv_hdr;
 
        hdr_size = *(uint16_t *) (buf + 18);
-       if (hdr_size < 56)
+       if (hdr_size < 40)
                error_msg_and_fail("sthyi: partition section is too small "
-                                  "(got %hu, 56 expected)", hdr_size);
+                                  "(got %hu, >=40 expected)", hdr_size);
 
        cur = buf + offs;
 
@@ -672,21 +741,28 @@ partition_hdr:
        print_weight(", infpwbif", cur, 32, pwcap_valid);
        print_weight(", infpabif", cur, 36, pacap_valid);
 
-       if (print_ebcdic(", infplgnm", cur, 40, 8, false, false)) {
-
-               print_weight(", infplgcp", cur, 48, false);
-               print_weight(", infplgif", cur, 52, false);
-       } else {
-               if (lpar_valid) {
-                       printf(", infplgnm=");
-                       print_quoted_hex((char *) (cur + 40), 8);
+       if (hdr_size >= 56) {
+               if (print_ebcdic(", infplgnm", cur, 40, 8, false, false)) {
+                       print_weight(", infplgcp", cur, 48, false);
+                       print_weight(", infplgif", cur, 52, false);
+               } else {
+                       if (lpar_valid) {
+                               printf(", infplgnm=");
+                               print_quoted_hex((char *) (cur + 40), 8);
+                       }
+                       print_x32(", infplgcp", cur, 48, false);
+                       print_x32(", infplgif", cur, 52, false);
                }
-
-               print_x32(", infplgcp", cur, 48, false);
-               print_x32(", infplgif", cur, 52, false);
        }
 
-       if (hdr_size > 56 && !is_empty(cur + 56, hdr_size - 56)) {
+       if (hdr_size >= 64) {
+               print_ebcdic(", infpplnm", cur, 56, 8, false, false);
+
+               if (hdr_size > 64 && !is_empty(cur + 64, hdr_size - 64)) {
+                       printf(", ");
+                       print_quoted_hex((char *) (cur + 64), hdr_size - 64);
+               }
+       } else if (hdr_size > 56 && !is_empty(cur + 56, hdr_size - 56)) {
                printf(", ");
                print_quoted_hex((char *) (cur + 56), hdr_size - 56);
        }
index 7715d2867364fb9d7324b4cfdb6b37a634270455..56bbef579a86acb2473c37aebf4e7eadf37c5643 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined(__NR_sched_get_priority_min) \
  && defined(__NR_sched_get_priority_max)
index b1117f3b4a3f908f39464148ca148542e9450f83..3af6f8518f5ac0b46cdd853b05608a913fe4ad0a 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_sched_rr_get_interval
 
diff --git a/tests-m32/sched_xetaffinity--pidns-translation.c b/tests-m32/sched_xetaffinity--pidns-translation.c
new file mode 100644 (file)
index 0000000..814e398
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "sched_xetaffinity.c"
diff --git a/tests-m32/sched_xetaffinity--pidns-translation.gen.test b/tests-m32/sched_xetaffinity--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..767fa1a
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched_xetaffinity--pidns-translation test_pidns -a28 -e trace=sched_getaffinity,sched_setaffinity); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a28 -e trace=sched_getaffinity,sched_setaffinity
index 4e6fbe206b94cbce1a41177a1c912da4ae1360e4..105b3354520f17875ba98b1e9fa6c4ac919aa6e1 100644 (file)
@@ -2,13 +2,15 @@
  * This file is part of sched_xetaffinity strace test.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
+#include "pidns.h"
 #include <sched.h>
 
 #if defined __NR_sched_getaffinity && defined __NR_sched_setaffinity \
@@ -40,8 +42,11 @@ setaffinity(unsigned long pid, unsigned long size, void *set)
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        unsigned int cpuset_size = 1;
        const pid_t pid = getpid();
+       const char *pid_str = pidns_pid2str(PT_TGID);
 
        while (cpuset_size) {
                assert(getaffinity(pid, cpuset_size, NULL) == -1);
@@ -49,18 +54,21 @@ main(void)
                        break;
                if (EINVAL != errno)
                        perror_msg_and_skip("sched_getaffinity");
-               printf("sched_getaffinity(%d, %u, NULL) = %s\n",
-                      pid, cpuset_size, errstr);
+               pidns_print_leader();
+               printf("sched_getaffinity(%d%s, %u, NULL) = %s\n",
+                      pid, pid_str, cpuset_size, errstr);
                cpuset_size <<= 1;
        }
        assert(cpuset_size);
-       printf("sched_getaffinity(%d, %u, NULL) = %s\n",
-              pid, cpuset_size, errstr);
+       pidns_print_leader();
+       printf("sched_getaffinity(%d%s, %u, NULL) = %s\n",
+              pid, pid_str, cpuset_size, errstr);
 
        cpu_set_t *cpuset = tail_alloc(cpuset_size);
        getaffinity(pid, cpuset_size, cpuset + 1);
-       printf("sched_getaffinity(%d, %u, %p) = %s\n",
-              pid, cpuset_size, cpuset + 1, errstr);
+       pidns_print_leader();
+       printf("sched_getaffinity(%d%s, %u, %p) = %s\n",
+              pid, pid_str, cpuset_size, cpuset + 1, errstr);
 
        int ret_size = getaffinity(pid, cpuset_size, cpuset);
        if (ret_size < 0)
@@ -68,7 +76,8 @@ main(void)
                                    pid, (unsigned) cpuset_size, cpuset, errstr);
        assert(ret_size <= (int) cpuset_size);
 
-       printf("sched_getaffinity(%d, %u, [", pid, cpuset_size);
+       pidns_print_leader();
+       printf("sched_getaffinity(%d%s, %u, [", pid, pid_str, cpuset_size);
        const char *sep;
        unsigned int i, cpu;
        for (i = 0, cpu = 0, sep = ""; i < (unsigned) ret_size * 8; ++i) {
@@ -84,8 +93,9 @@ main(void)
        CPU_SET_S(cpu, cpuset_size, cpuset);
        if (setaffinity(pid, cpuset_size, cpuset))
                perror_msg_and_skip("sched_setaffinity");
-       printf("sched_setaffinity(%d, %u, [%u]) = 0\n",
-              pid, cpuset_size, cpu);
+       pidns_print_leader();
+       printf("sched_setaffinity(%d%s, %u, [%u]) = 0\n",
+              pid, pid_str, cpuset_size, cpu);
 
        const unsigned int big_size = cpuset_size < 128 ? 128 : cpuset_size * 2;
        cpuset = tail_alloc(big_size);
@@ -94,7 +104,8 @@ main(void)
                perror_msg_and_fail("sched_getaffinity(%d, %u, %p) = %s\n",
                                    pid, big_size, cpuset, errstr);
        assert(ret_size <= (int) big_size);
-       printf("sched_getaffinity(%d, %u, [", pid, big_size);
+       pidns_print_leader();
+       printf("sched_getaffinity(%d%s, %u, [", pid, pid_str, big_size);
        for (i = 0, sep = ""; i < (unsigned) ret_size * 8; ++i) {
                if (CPU_ISSET_S(i, (unsigned) ret_size, cpuset)) {
                        printf("%s%u", sep, i);
@@ -103,6 +114,7 @@ main(void)
        }
        printf("]) = %s\n", errstr);
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
diff --git a/tests-m32/sched_xetattr--pidns-translation.c b/tests-m32/sched_xetattr--pidns-translation.c
new file mode 100644 (file)
index 0000000..c152023
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "sched_xetattr.c"
diff --git a/tests-m32/sched_xetattr--pidns-translation.gen.test b/tests-m32/sched_xetattr--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..52692a8
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched_xetattr--pidns-translation test_pidns -a29 -e trace=sched_getattr,sched_setattr); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a29 -e trace=sched_getattr,sched_setattr
index 3440876b29db574dfe619d4829bf174201cbbce2..4a76b2d65a2d7d9e5e418bc70b076a9d3dd0d012 100644 (file)
@@ -1,13 +1,13 @@
 /*
  * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_sched_getattr && defined __NR_sched_setattr
 
@@ -15,6 +15,7 @@
 # include <stdio.h>
 # include <sched.h>
 # include <unistd.h>
+# include "pidns.h"
 # include "sched_attr.h"
 # include "xlat.h"
 # include "xlat/schedulers.h"
@@ -41,6 +42,8 @@ sys_sched_setattr(kernel_ulong_t pid, kernel_ulong_t attr, kernel_ulong_t flags)
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        static const kernel_ulong_t bogus_pid =
                (kernel_ulong_t) 0xdefacedfacefeedULL;
        static const kernel_ulong_t bogus_size =
@@ -48,20 +51,28 @@ main(void)
        static const kernel_ulong_t bogus_flags =
                (kernel_ulong_t) 0xdefaceddeadc0deULL;
 
+       const int pid = getpid();
+       const char *pid_str = pidns_pid2str(PT_TGID);
+
        TAIL_ALLOC_OBJECT_CONST_PTR(struct sched_attr, attr);
        TAIL_ALLOC_OBJECT_CONST_PTR(unsigned int, psize);
        void *const efault = attr + 1;
 
-       sys_sched_getattr(0, 0, 0, 0);
-       printf("sched_getattr(0, NULL, 0, 0) = %s\n", errstr);
+       sys_sched_getattr(pid, 0, 0, 0);
+       pidns_print_leader();
+       printf("sched_getattr(%d%s, NULL, 0, 0) = %s\n",
+               pid, pid_str, errstr);
 
        sys_sched_getattr(0, (unsigned long) attr, 0, 0);
+       pidns_print_leader();
        printf("sched_getattr(0, %p, 0, 0) = %s\n", attr, errstr);
 
        sys_sched_getattr(bogus_pid, 0, 0, 0);
+       pidns_print_leader();
        printf("sched_getattr(%d, NULL, 0, 0) = %s\n", (int) bogus_pid, errstr);
 
        sys_sched_getattr(-1U, (unsigned long) attr, bogus_size, bogus_flags);
+       pidns_print_leader();
        printf("sched_getattr(-1, %p, %s%u, %u) = %s\n",
               attr,
 # if defined __arm64__ || defined __aarch64__
@@ -71,24 +82,52 @@ main(void)
 # endif
               (unsigned) bogus_size, (unsigned) bogus_flags, errstr);
 
+       sys_sched_getattr(0, (unsigned long) efault, SCHED_ATTR_MIN_SIZE, 0);
+       pidns_print_leader();
+       printf("sched_getattr(0, %p, %u, 0) = %s\n",
+              efault, (unsigned) SCHED_ATTR_MIN_SIZE, errstr);
+
+       if (sys_sched_getattr(0, (unsigned long) attr, SCHED_ATTR_MIN_SIZE, 0))
+               perror_msg_and_skip("sched_getattr");
+       pidns_print_leader();
+       printf("sched_getattr(0, {size=%u, sched_policy=", attr->size);
+       printxval(schedulers, attr->sched_policy, NULL);
+       printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u"
+              ", sched_runtime=%" PRIu64 ", sched_deadline=%" PRIu64
+              ", sched_period=%" PRIu64 "}, %u, 0) = 0\n",
+              attr->sched_flags ? "SCHED_FLAG_RESET_ON_FORK" : "0",
+              attr->sched_nice,
+              attr->sched_priority,
+              attr->sched_runtime,
+              attr->sched_deadline,
+              attr->sched_period,
+              (unsigned) SCHED_ATTR_MIN_SIZE);
+
        sys_sched_getattr(0, (unsigned long) efault, sizeof(*attr), 0);
+       pidns_print_leader();
        printf("sched_getattr(0, %p, %u, 0) = %s\n",
               efault, (unsigned) sizeof(*attr), errstr);
 
        if (sys_sched_getattr(0, (unsigned long) attr, sizeof(*attr), 0))
                perror_msg_and_skip("sched_getattr");
+       pidns_print_leader();
        printf("sched_getattr(0, {size=%u, sched_policy=", attr->size);
        printxval(schedulers, attr->sched_policy, NULL);
        printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u"
               ", sched_runtime=%" PRIu64 ", sched_deadline=%" PRIu64
-              ", sched_period=%" PRIu64 "}, %u, 0) = 0\n",
+              ", sched_period=%" PRIu64,
               attr->sched_flags ? "SCHED_FLAG_RESET_ON_FORK" : "0",
               attr->sched_nice,
               attr->sched_priority,
               attr->sched_runtime,
               attr->sched_deadline,
-              attr->sched_period,
-              (unsigned) sizeof(*attr));
+              attr->sched_period);
+       if (attr->size >= SCHED_ATTR_SIZE_VER1) {
+               printf(", sched_util_min=%u, sched_util_max=%u",
+                      attr->sched_util_min,
+                      attr->sched_util_max);
+       }
+       printf("}, %u, 0) = 0\n", (unsigned) sizeof(*attr));
 
 # if defined __arm64__ || defined __aarch64__
        long rc =
@@ -97,66 +136,91 @@ main(void)
                          F8ILL_KULONG_MASK | sizeof(*attr), F8ILL_KULONG_MASK);
 # if defined __arm64__ || defined __aarch64__
        if (rc) {
+               pidns_print_leader();
                printf("sched_getattr(0, %p, 0xffffffff<<32|%u, 0) = %s\n",
                       attr, (unsigned) sizeof(*attr), errstr);
        } else
 # endif
        {
+               pidns_print_leader();
                printf("sched_getattr(0, {size=%u, sched_policy=", attr->size);
                printxval(schedulers, attr->sched_policy, NULL);
                printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u"
                       ", sched_runtime=%" PRIu64 ", sched_deadline=%" PRIu64
-                      ", sched_period=%" PRIu64 "}, %u, 0) = 0\n",
+                      ", sched_period=%" PRIu64,
                       attr->sched_flags ? "SCHED_FLAG_RESET_ON_FORK" : "0",
                       attr->sched_nice,
                       attr->sched_priority,
                       attr->sched_runtime,
                       attr->sched_deadline,
-                      attr->sched_period,
-                      (unsigned) sizeof(*attr));
+                      attr->sched_period);
+               if (attr->size >= SCHED_ATTR_SIZE_VER1) {
+                       printf(", sched_util_min=%u, sched_util_max=%u",
+                              attr->sched_util_min,
+                              attr->sched_util_max);
+               }
+               printf("}, %u, 0) = 0\n", (unsigned) sizeof(*attr));
        }
 
        sys_sched_setattr(bogus_pid, 0, 0);
+       pidns_print_leader();
        printf("sched_setattr(%d, NULL, 0) = %s\n", (int) bogus_pid, errstr);
 
        attr->sched_flags |= 1;
 
-       if (sys_sched_setattr(0, (unsigned long) attr, 0))
+       if (sys_sched_setattr(pid, (unsigned long) attr, 0))
                perror_msg_and_skip("sched_setattr");
-       printf("sched_setattr(0, {size=%u, sched_policy=", attr->size);
+       pidns_print_leader();
+       printf("sched_setattr(%d%s, {size=%u, sched_policy=",
+               pid, pid_str, attr->size);
        printxval(schedulers, attr->sched_policy, NULL);
        printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u"
               ", sched_runtime=%" PRIu64 ", sched_deadline=%" PRIu64
-              ", sched_period=%" PRIu64 "}, 0) = 0\n",
+              ", sched_period=%" PRIu64,
               "SCHED_FLAG_RESET_ON_FORK",
               attr->sched_nice,
               attr->sched_priority,
               attr->sched_runtime,
               attr->sched_deadline,
               attr->sched_period);
+       if (attr->size >= SCHED_ATTR_SIZE_VER1) {
+               printf(", sched_util_min=%u, sched_util_max=%u",
+                      attr->sched_util_min,
+                      attr->sched_util_max);
+       }
+       printf("}, 0) = 0\n");
 
        sys_sched_setattr(F8ILL_KULONG_MASK, (unsigned long) attr,
                          F8ILL_KULONG_MASK);
+       pidns_print_leader();
        printf("sched_setattr(0, {size=%u, sched_policy=", attr->size);
        printxval(schedulers, attr->sched_policy, NULL);
        printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u"
               ", sched_runtime=%" PRIu64 ", sched_deadline=%" PRIu64
-              ", sched_period=%" PRIu64 "}, 0) = 0\n",
+              ", sched_period=%" PRIu64,
               "SCHED_FLAG_RESET_ON_FORK",
               attr->sched_nice,
               attr->sched_priority,
               attr->sched_runtime,
               attr->sched_deadline,
               attr->sched_period);
+       if (attr->size >= SCHED_ATTR_SIZE_VER1) {
+               printf(", sched_util_min=%u, sched_util_max=%u",
+                      attr->sched_util_min,
+                      attr->sched_util_max);
+       }
+       printf("}, 0) = 0\n");
 
        *psize = attr->size;
 
        sys_sched_setattr(0, (unsigned long) psize, 0);
+       pidns_print_leader();
        printf("sched_setattr(0, %p, 0) = %s\n", psize, errstr);
 
        attr->size = 0;
 
        sys_sched_setattr(0, (unsigned long) attr, 0);
+       pidns_print_leader();
        printf("sched_setattr(0, {size=%u, sched_policy=", attr->size);
        printxval(schedulers, attr->sched_policy, NULL);
        printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u"
@@ -172,18 +236,20 @@ main(void)
        attr->size = 1;
 
        sys_sched_setattr(0, (unsigned long) attr, 0);
+       pidns_print_leader();
        printf("sched_setattr(0, {size=%u} => {size=%u}, 0) = %s\n",
               1, attr->size, errstr);
 
        attr->size = SCHED_ATTR_MIN_SIZE - 1;
 
        sys_sched_setattr(0, (unsigned long) attr, 0);
+       pidns_print_leader();
        printf("sched_setattr(0, {size=%u} => {size=%u}, 0) = %s\n",
               SCHED_ATTR_MIN_SIZE - 1, attr->size, errstr);
 
        attr->size = 0x90807060;
        attr->sched_policy = 0xca7faced;
-       attr->sched_flags = 0xbadc0ded1057da78ULL;
+       attr->sched_flags = 0xbadc0ded1057da80ULL;
        attr->sched_nice = 0xafbfcfdf;
        attr->sched_priority = 0xb8c8d8e8;
        attr->sched_runtime = 0xbadcaffedeadf157ULL;
@@ -191,11 +257,12 @@ main(void)
        attr->sched_period = 0xded1ca7edda7aca7ULL;
 
        sys_sched_setattr(bogus_pid, (unsigned long) attr, bogus_flags);
+       pidns_print_leader();
        printf("sched_setattr(%d, {size=%u, sched_policy=%#x /* SCHED_??? */, "
               "sched_flags=%#" PRIx64 " /* SCHED_FLAG_??? */, "
               "sched_nice=%d, sched_priority=%u, sched_runtime=%" PRIu64 ", "
-              "sched_deadline=%" PRIu64 ", sched_period=%" PRIu64 ", ...}, %u)"
-              " = %s\n",
+              "sched_deadline=%" PRIu64 ", sched_period=%" PRIu64 ", "
+              "sched_util_min=%u, sched_util_max=%u, ...}, %u) = %s\n",
               (int) bogus_pid,
               attr->size,
               attr->sched_policy,
@@ -205,6 +272,8 @@ main(void)
               attr->sched_runtime,
               attr->sched_deadline,
               attr->sched_period,
+              attr->sched_util_min,
+              attr->sched_util_max,
               (unsigned) bogus_flags, errstr);
 
        if (F8ILL_KULONG_SUPPORTED) {
@@ -223,7 +292,7 @@ main(void)
 
        attr->size = 0x90807060;
        attr->sched_policy = 0xca7faced;
-       attr->sched_flags = 0xfULL;
+       attr->sched_flags = 0x87ULL;
        attr->sched_nice = 0xafbfcfdf;
        attr->sched_priority = 0xb8c8d8e8;
        attr->sched_runtime = 0xbadcaffedeadf157ULL;
@@ -231,35 +300,143 @@ main(void)
        attr->sched_period = 0xded1ca7edda7aca7ULL;
 
        sys_sched_setattr(bogus_pid, (unsigned long) attr, bogus_flags);
+       pidns_print_leader();
        printf("sched_setattr(%d, {size=%u, sched_policy=%#x /* SCHED_??? */, "
               "sched_flags=SCHED_FLAG_RESET_ON_FORK|SCHED_FLAG_RECLAIM|"
-              "SCHED_FLAG_DL_OVERRUN|0x8, "
+              "SCHED_FLAG_DL_OVERRUN|0x80, "
+              "sched_nice=%d, sched_priority=%u, sched_runtime=%" PRIu64 ", "
+              "sched_deadline=%" PRIu64 ", sched_period=%" PRIu64 ", "
+              "sched_util_min=%u, sched_util_max=%u, ...}, %u) = %s\n",
+              (int) bogus_pid,
+              attr->size,
+              attr->sched_policy,
+              attr->sched_nice,
+              attr->sched_priority,
+              attr->sched_runtime,
+              attr->sched_deadline,
+              attr->sched_period,
+              attr->sched_util_min,
+              attr->sched_util_max,
+              (unsigned) bogus_flags, errstr);
+
+       if (F8ILL_KULONG_SUPPORTED) {
+               const kernel_ulong_t ill = f8ill_ptr_to_kulong(attr);
+
+               sys_sched_getattr(0, ill, sizeof(*attr), 0);
+               pidns_print_leader();
+               printf("sched_getattr(0, %#llx, %u, 0) = %s\n",
+                      (unsigned long long) ill, (unsigned) sizeof(*attr),
+                      errstr);
+
+               sys_sched_setattr(0, ill, 0);
+               pidns_print_leader();
+               printf("sched_setattr(0, %#llx, 0) = %s\n",
+                      (unsigned long long) ill, errstr);
+       }
+
+       attr->size = SCHED_ATTR_MIN_SIZE;
+       attr->sched_policy = 0xdefaced;
+       attr->sched_flags = 0x8fULL;
+
+       sys_sched_setattr(bogus_pid, (unsigned long) attr, bogus_flags);
+       pidns_print_leader();
+       printf("sched_setattr(%d, {size=%u, "
+              "sched_flags=SCHED_FLAG_RESET_ON_FORK|SCHED_FLAG_RECLAIM|"
+              "SCHED_FLAG_DL_OVERRUN|SCHED_FLAG_KEEP_POLICY|0x80, "
               "sched_nice=%d, sched_priority=%u, sched_runtime=%" PRIu64 ", "
-              "sched_deadline=%" PRIu64 ", sched_period=%" PRIu64 ", ...}, %u)"
+              "sched_deadline=%" PRIu64 ", sched_period=%" PRIu64 "}, %u)"
               " = %s\n",
               (int) bogus_pid,
               attr->size,
+              attr->sched_nice,
+              attr->sched_priority,
+              attr->sched_runtime,
+              attr->sched_deadline,
+              attr->sched_period,
+              (unsigned) bogus_flags, errstr);
+
+       if (F8ILL_KULONG_SUPPORTED) {
+               const kernel_ulong_t ill = f8ill_ptr_to_kulong(attr);
+
+               sys_sched_getattr(0, ill, sizeof(*attr), 0);
+               pidns_print_leader();
+               printf("sched_getattr(0, %#llx, %u, 0) = %s\n",
+                      (unsigned long long) ill, (unsigned) sizeof(*attr),
+                      errstr);
+
+               sys_sched_setattr(0, ill, 0);
+               pidns_print_leader();
+               printf("sched_setattr(0, %#llx, 0) = %s\n",
+                      (unsigned long long) ill, errstr);
+       }
+
+       attr->size = SCHED_ATTR_SIZE_VER1;
+       attr->sched_flags = 0xe7ULL;
+
+       sys_sched_setattr(bogus_pid, (unsigned long) attr, bogus_flags);
+       pidns_print_leader();
+       printf("sched_setattr(%d, {size=%u, sched_policy=%#x /* SCHED_??? */, "
+              "sched_flags=SCHED_FLAG_RESET_ON_FORK|SCHED_FLAG_RECLAIM|"
+              "SCHED_FLAG_DL_OVERRUN|SCHED_FLAG_UTIL_CLAMP_MIN"
+              "|SCHED_FLAG_UTIL_CLAMP_MAX|0x80, "
+              "sched_nice=%d, sched_priority=%u, sched_runtime=%" PRIu64 ", "
+              "sched_deadline=%" PRIu64 ", sched_period=%" PRIu64 ", "
+              "sched_util_min=%u, sched_util_max=%u}, %u) = %s\n",
+              (int) bogus_pid,
+              attr->size,
               attr->sched_policy,
               attr->sched_nice,
               attr->sched_priority,
               attr->sched_runtime,
               attr->sched_deadline,
               attr->sched_period,
+              attr->sched_util_min,
+              attr->sched_util_max,
+              (unsigned) bogus_flags, errstr);
+
+       if (F8ILL_KULONG_SUPPORTED) {
+               const kernel_ulong_t ill = f8ill_ptr_to_kulong(attr);
+
+               sys_sched_getattr(0, ill, sizeof(*attr), 0);
+               pidns_print_leader();
+               printf("sched_getattr(0, %#llx, %u, 0) = %s\n",
+                      (unsigned long long) ill, (unsigned) sizeof(*attr),
+                      errstr);
+
+               sys_sched_setattr(0, ill, 0);
+               pidns_print_leader();
+               printf("sched_setattr(0, %#llx, 0) = %s\n",
+                      (unsigned long long) ill, errstr);
+       }
+
+       attr->sched_flags = 0xcaffee90LL;
+
+       sys_sched_setattr(bogus_pid, (unsigned long) attr, bogus_flags);
+       pidns_print_leader();
+       printf("sched_setattr(%d, {size=%u, sched_flags=SCHED_FLAG_KEEP_PARAMS"
+              "|0xcaffee80, sched_util_min=%u, sched_util_max=%u}, %u) = %s\n",
+              (int) bogus_pid,
+              attr->size,
+              attr->sched_util_min,
+              attr->sched_util_max,
               (unsigned) bogus_flags, errstr);
 
        if (F8ILL_KULONG_SUPPORTED) {
                const kernel_ulong_t ill = f8ill_ptr_to_kulong(attr);
 
                sys_sched_getattr(0, ill, sizeof(*attr), 0);
+               pidns_print_leader();
                printf("sched_getattr(0, %#llx, %u, 0) = %s\n",
                       (unsigned long long) ill, (unsigned) sizeof(*attr),
                       errstr);
 
                sys_sched_setattr(0, ill, 0);
+               pidns_print_leader();
                printf("sched_setattr(0, %#llx, 0) = %s\n",
                       (unsigned long long) ill, errstr);
        }
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
diff --git a/tests-m32/sched_xetparam--pidns-translation.c b/tests-m32/sched_xetparam--pidns-translation.c
new file mode 100644 (file)
index 0000000..9fb3e57
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "sched_xetparam.c"
diff --git a/tests-m32/sched_xetparam--pidns-translation.gen.test b/tests-m32/sched_xetparam--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..309cabb
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched_xetparam--pidns-translation test_pidns -a23 -e trace=sched_getparam,sched_setparam); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a23 -e trace=sched_getparam,sched_setparam
index e1325a6f714a2791a02ced15d787780176c3e8b5..f48ba6d75753b686b86db91dd1b696fdc5f0fe39 100644 (file)
@@ -1,12 +1,13 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
+#include "pidns.h"
 
 #if defined __NR_sched_getparam && defined __NR_sched_setparam
 
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        struct sched_param *const param =
                tail_alloc(sizeof(struct sched_param));
 
-       long rc = syscall(__NR_sched_getparam, 0, param);
-       printf("sched_getparam(0, [%d]) = %ld\n",
-              param->sched_priority, rc);
+       const int pid = getpid();
+       const char *pid_str = pidns_pid2str(PT_TGID);
+
+       long rc = syscall(__NR_sched_getparam, pid, param);
+       pidns_print_leader();
+       printf("sched_getparam(%d%s, [%d]) = %ld\n",
+              pid, pid_str, param->sched_priority, rc);
 
        param->sched_priority = -1;
-       rc = syscall(__NR_sched_setparam, 0, param);
-       printf("sched_setparam(0, [%d]) = %ld %s (%m)\n",
+       rc = syscall(__NR_sched_setparam, pid, param);
+       pidns_print_leader();
+       printf("sched_setparam(%d%s, [%d]) = %ld %s (%m)\n",
+              pid, pid_str,
               param->sched_priority, rc, errno2name());
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
diff --git a/tests-m32/sched_xetscheduler--pidns-translation.c b/tests-m32/sched_xetscheduler--pidns-translation.c
new file mode 100644 (file)
index 0000000..78b794b
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "sched_xetscheduler.c"
diff --git a/tests-m32/sched_xetscheduler--pidns-translation.gen.test b/tests-m32/sched_xetscheduler--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..12581e4
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched_xetscheduler--pidns-translation test_pidns -a22 -e trace=sched_getscheduler,sched_setscheduler); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a22 -e trace=sched_getscheduler,sched_setscheduler
index bc48085a4ee034bf82f53c571bb36c2d4660cb52..d93db3858890b3a7def3963bda63bd8f4149c236 100644 (file)
@@ -1,12 +1,13 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
+#include "pidns.h"
 
 #if defined __NR_sched_getscheduler && defined __NR_sched_setscheduler
 
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        TAIL_ALLOC_OBJECT_CONST_PTR(struct sched_param, param);
-       long rc = syscall(__NR_sched_getscheduler, 0);
+       const int pid = getpid();
+       const char *pid_str = pidns_pid2str(PT_TGID);
+
+       long rc = syscall(__NR_sched_getscheduler, pid);
        const char *scheduler;
        switch (rc) {
                case SCHED_FIFO:
@@ -50,33 +56,43 @@ main(void)
                default:
                        scheduler = "SCHED_OTHER";
        }
-       printf("sched_getscheduler(0) = %ld (%s)\n",
-              rc, scheduler);
+       pidns_print_leader();
+       printf("sched_getscheduler(%d%s) = %ld (%s)\n",
+              pid, pid_str, rc, scheduler);
 
        rc = syscall(__NR_sched_getscheduler, -1);
+       pidns_print_leader();
        printf("sched_getscheduler(-1) = %s\n", sprintrc(rc));
 
        param->sched_priority = -1;
 
-       rc = syscall(__NR_sched_setscheduler, 0, SCHED_FIFO, NULL);
-       printf("sched_setscheduler(0, SCHED_FIFO, NULL) = %s\n", sprintrc(rc));
+       rc = syscall(__NR_sched_setscheduler, pid, SCHED_FIFO, NULL);
+       pidns_print_leader();
+       printf("sched_setscheduler(%d%s, SCHED_FIFO, NULL) = %s\n",
+              pid, pid_str, sprintrc(rc));
 
-       rc = syscall(__NR_sched_setscheduler, 0, SCHED_FIFO, param + 1);
-       printf("sched_setscheduler(0, SCHED_FIFO, %p) = %s\n", param + 1,
-              sprintrc(rc));
+       rc = syscall(__NR_sched_setscheduler, pid, SCHED_FIFO, param + 1);
+       pidns_print_leader();
+       printf("sched_setscheduler(%d%s, SCHED_FIFO, %p) = %s\n",
+              pid, pid_str, param + 1, sprintrc(rc));
 
-       rc = syscall(__NR_sched_setscheduler, 0, 0xfaceda7a, param);
-       printf("sched_setscheduler(0, %#x /* SCHED_??? */, [%d]) = %s\n",
-              0xfaceda7a, param->sched_priority, sprintrc(rc));
+       rc = syscall(__NR_sched_setscheduler, pid, 0xfaceda7a, param);
+       pidns_print_leader();
+       printf("sched_setscheduler(%d%s, %#x /* SCHED_??? */, [%d]) = %s\n",
+              pid, pid_str, 0xfaceda7a,
+              param->sched_priority, sprintrc(rc));
 
        rc = syscall(__NR_sched_setscheduler, -1, SCHED_FIFO, param);
+       pidns_print_leader();
        printf("sched_setscheduler(-1, SCHED_FIFO, [%d]) = %s\n",
               param->sched_priority, sprintrc(rc));
 
-       rc = syscall(__NR_sched_setscheduler, 0, SCHED_FIFO, param);
-       printf("sched_setscheduler(0, SCHED_FIFO, [%d]) = %s\n",
-              param->sched_priority, sprintrc(rc));
+       rc = syscall(__NR_sched_setscheduler, pid, SCHED_FIFO, param);
+       pidns_print_leader();
+       printf("sched_setscheduler(%d%s, SCHED_FIFO, [%d]) = %s\n",
+              pid, pid_str, param->sched_priority, sprintrc(rc));
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
index 40b556171fe780eeb081ef056692509dc635172a..8a3d689f8197ee2506c5ec1107efabf5c038935d 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_sched_yield
 
index 98eaeee57bafea33fbcbaa3d57bf77d3e5220d80..b5f38ca566ad3bb8b9b91ed4a309e98a9cd92a52 100644 (file)
@@ -2,7 +2,7 @@
  * Check verbose decoding of seccomp SECCOMP_SET_MODE_FILTER.
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2019 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 #include <errno.h>
 #include <stddef.h>
 #include <stdio.h>
-#include <asm/unistd.h>
 #include <unistd.h>
-
-#ifdef HAVE_PRCTL
-# include <sys/prctl.h>
-#endif
+#include <sys/prctl.h>
 #ifdef HAVE_LINUX_SECCOMP_H
 # include <linux/seccomp.h>
 #endif
 #include <linux/filter.h>
+#include "scno.h"
 
 #if defined __NR_seccomp \
  && defined PR_SET_NO_NEW_PRIVS \
                BPF_STMT(BPF_RET|BPF_K, SECCOMP_RET_KILL)
 
 # define PRINT_ALLOW_SYSCALL(nr) \
-       tprintf("BPF_JUMP(BPF_JMP|BPF_K|BPF_JEQ, %#x, 0, 0x1), " \
-              "BPF_STMT(BPF_RET|BPF_K, SECCOMP_RET_ALLOW), ", \
-              __NR_ ## nr)
+       tprintf("BPF_JUMP(BPF_JMP|BPF_K|BPF_JEQ, %#lx, 0, 0x1), " \
+               "BPF_STMT(BPF_RET|BPF_K, SECCOMP_RET_ALLOW), ", \
+               (long) __NR_ ## nr)
 
 # define PRINT_DENY_SYSCALL(nr, err) \
-       tprintf("BPF_JUMP(BPF_JMP|BPF_K|BPF_JEQ, %#x, 0, 0x1), " \
-              "BPF_STMT(BPF_RET|BPF_K, SECCOMP_RET_ERRNO|%#x), ", \
-              __NR_ ## nr, err)
+       tprintf("BPF_JUMP(BPF_JMP|BPF_K|BPF_JEQ, %#lx, 0, 0x1), " \
+               "BPF_STMT(BPF_RET|BPF_K, SECCOMP_RET_ERRNO|%#x), ", \
+               (long) __NR_ ## nr, err)
 
 static const struct sock_filter filter_c[] = {
        /* load syscall number */
@@ -118,7 +115,8 @@ main(void)
        tprintf("seccomp(SECCOMP_SET_MODE_FILTER, %s, {len=%u, filter=[",
                "SECCOMP_FILTER_FLAG_TSYNC|SECCOMP_FILTER_FLAG_LOG|"
                "SECCOMP_FILTER_FLAG_SPEC_ALLOW|"
-               "SECCOMP_FILTER_FLAG_NEW_LISTENER|0xfffffff0",
+               "SECCOMP_FILTER_FLAG_NEW_LISTENER|"
+               "SECCOMP_FILTER_FLAG_TSYNC_ESRCH|0xffffffe0",
                prog->len);
        for (i = 0; i < BPF_MAXINSNS; ++i) {
                if (i)
index 5e28ffcae78bf3925e5d4720831288e4f80d1fdc..ef485dd82e98d0a4150b4cce4ec010bc943d9d96 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of seccomp SECCOMP_SET_MODE_FILTER.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2019 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -11,7 +11,7 @@
 #include "tests.h"
 
 #include <stdio.h>
-#include <asm/unistd.h>
+#include "scno.h"
 #include <unistd.h>
 
 #ifdef HAVE_LINUX_SECCOMP_H
@@ -38,12 +38,13 @@ main(void)
               " = %ld %s (%m)\n",
               "SECCOMP_FILTER_FLAG_TSYNC|SECCOMP_FILTER_FLAG_LOG|"
               "SECCOMP_FILTER_FLAG_SPEC_ALLOW|"
-              "SECCOMP_FILTER_FLAG_NEW_LISTENER|0xfffffff0",
+              "SECCOMP_FILTER_FLAG_NEW_LISTENER|"
+              "SECCOMP_FILTER_FLAG_TSYNC_ESRCH|0xffffffe0",
               prog->len, prog->filter, rc, errno2name());
 
-       rc = syscall(__NR_seccomp, SECCOMP_SET_MODE_FILTER, -16L, efault);
+       rc = syscall(__NR_seccomp, SECCOMP_SET_MODE_FILTER, -32L, efault);
        printf("seccomp(SECCOMP_SET_MODE_FILTER, %s, %p) = %ld %s (%m)\n",
-              "0xfffffff0 /* SECCOMP_FILTER_FLAG_??? */",
+              "0xffffffe0 /* SECCOMP_FILTER_FLAG_??? */",
               efault, rc, errno2name());
 
        puts("+++ exited with 0 +++");
index 1d088109c98dff7b968c151cf30829ded1efa5c4..fcf30e540b412d31c076c774a109a6c5bc910a7f 100644 (file)
@@ -2,13 +2,14 @@
  * Check how seccomp SECCOMP_SET_MODE_STRICT is decoded.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_seccomp && defined __NR_exit
 
@@ -37,7 +38,7 @@ main(void)
                rc = 0;
        } else {
                /*
-                * If kernel implementaton of SECCOMP_MODE_STRICT is buggy,
+                * If kernel implementation of SECCOMP_MODE_STRICT is buggy,
                 * the following syscall will result to SIGKILL.
                 */
                rc = write(1, text1, LENGTH_OF(text1)) != LENGTH_OF(text1);
index e61678f4cfb58ac844d1508cf395bfde206b7a16..6ae23b9600d9b818e200f6f5bfd7007538272879 100644 (file)
@@ -8,7 +8,7 @@
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_seccomp
 
index 7935032b2e576737c3b47339b16ae23bf271e920..d65d1364c2e97c48ac50faf079a64195e89e0e49 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_select && !defined __NR__newselect
 
diff --git a/tests-m32/semop-common.c b/tests-m32/semop-common.c
new file mode 100644 (file)
index 0000000..646a116
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+ * Copyright (c) 2016-2019 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include <sys/ipc.h>
+#include <sys/sem.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#define XLAT_MACROS_ONLY
+#include "xlat/semop_flags.h"
+#undef XLAT_MACROS_ONLY
+
+static const char *errstr;
+
+static long
+k_semop(const unsigned int semid,
+       const kernel_ulong_t sops,
+       const unsigned int nsops);
+
+union semun {
+       int val;
+       struct semid_ds *buf;
+       unsigned short *array;
+       struct seminfo *__buf;
+};
+
+static int id = -1;
+
+static void
+cleanup(void)
+{
+       semctl(id, 0, IPC_RMID, 0);
+       id = -1;
+}
+
+int
+main(void)
+{
+       static const int bogus_semid = 0xfdb97531;
+       static kernel_ulong_t bogus_sops = (kernel_ulong_t) -1ULL;
+       static const unsigned int bogus_nsops = 0xdeadbeefU;
+
+       id = semget(IPC_PRIVATE, 1, 0600);
+       if (id < 0)
+               perror_msg_and_skip("semget");
+       atexit(cleanup);
+
+       union semun sem_union = { .val = 0 };
+       if (semctl(id, 0, SETVAL, sem_union) == -1)
+               perror_msg_and_skip("semctl");
+
+       k_semop(bogus_semid, 0, bogus_nsops);
+       printf("semop(%d, NULL, %u) = %s\n",
+               bogus_semid, bogus_nsops, errstr);
+
+       k_semop(bogus_semid, bogus_sops, 1);
+       printf("semop(%d, %#llx, %u) = %s\n",
+               bogus_semid, (unsigned long long) bogus_sops, 1, errstr);
+
+       TAIL_ALLOC_OBJECT_CONST_PTR(struct sembuf, sem_b2);
+       sem_b2->sem_num = 0xface;
+       sem_b2->sem_op = 0xf00d;
+       sem_b2->sem_flg = 0xbeef;
+
+       k_semop(bogus_semid, (uintptr_t) sem_b2, 2);
+       printf("semop(%d, [{%hu, %hd, %s%s%#hx}, ... /* %p */], %u) = %s\n",
+               bogus_semid, sem_b2->sem_num, sem_b2->sem_op,
+               sem_b2->sem_flg & SEM_UNDO ? "SEM_UNDO|" : "",
+               sem_b2->sem_flg & IPC_NOWAIT ? "IPC_NOWAIT|" : "",
+               (short) (sem_b2->sem_flg & ~(SEM_UNDO | IPC_NOWAIT)),
+               sem_b2 + 1, 2, errstr);
+
+       TAIL_ALLOC_OBJECT_CONST_PTR(struct sembuf, sem_b);
+       sem_b->sem_num = 0;
+       sem_b->sem_op = 1;
+       sem_b->sem_flg = SEM_UNDO;
+
+       k_semop(id, (uintptr_t) sem_b, 1);
+       printf("semop(%d, [{0, 1, SEM_UNDO}], 1) = %s\n", id, errstr);
+
+       sem_b->sem_op = -1;
+       k_semop(id, (uintptr_t) sem_b, 1);
+       printf("semop(%d, [{0, -1, SEM_UNDO}], 1) = %s\n", id, errstr);
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
diff --git a/tests-m32/semop-indirect.c b/tests-m32/semop-indirect.c
new file mode 100644 (file)
index 0000000..452f7ba
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2016-2019 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#if defined __NR_ipc && !defined __ARM_EABI__
+
+# include "semop-common.c"
+
+# define XLAT_MACROS_ONLY
+# include "xlat/ipccalls.h"
+# undef XLAT_MACROS_ONLY
+
+static long
+k_semop(const unsigned int semid,
+       const kernel_ulong_t sops,
+       const unsigned int nsops)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = fill | SEMOP;
+       const kernel_ulong_t arg2 = fill | semid;
+       const kernel_ulong_t arg3 = fill | nsops;
+       const kernel_ulong_t arg5 = sops;
+       const long rc = syscall(__NR_ipc, arg1, arg2, arg3, bad, arg5, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_ipc && !__ARM_EABI__")
+
+#endif
diff --git a/tests-m32/semop-indirect.gen.test b/tests-m32/semop-indirect.gen.test
new file mode 100755 (executable)
index 0000000..b70a697
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (semop-indirect -a32 -e trace=semop); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -e trace=semop
index f7f047019028287a138efa6a8e64937e9e2a5a12..7725cd46342cc67beb1843041ffd52cde293394f 100644 (file)
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <sys/ipc.h>
-#include <sys/sem.h>
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
+#include "scno.h"
 
-#include "xlat.h"
-#include "xlat/semop_flags.h"
+#ifdef __NR_semop
 
-union semun {
-       int val;
-       struct semid_ds *buf;
-       unsigned short *array;
-       struct seminfo *__buf;
-};
+# include "semop-common.c"
 
-static int id = -1;
-
-static void
-cleanup(void)
+static long
+k_semop(const unsigned int semid,
+       const kernel_ulong_t sops,
+       const unsigned int nsops)
 {
-       semctl(id, 0, IPC_RMID, 0);
-       id = -1;
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = fill | semid;
+       const kernel_ulong_t arg2 = sops;
+       const kernel_ulong_t arg3 = fill | nsops;
+       const long rc = syscall(__NR_semop, arg1, arg2, arg3, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
 }
 
-int
-main(void)
-{
-       static const int bogus_semid = 0xfdb97531;
-       static void * const bogus_sops = (void *) -1L;
-       static const size_t bogus_nsops = (size_t) 0xdefaceddeadbeefULL;
-
-       TAIL_ALLOC_OBJECT_CONST_PTR(struct timespec, ts);
-       int rc;
-
-       id = semget(IPC_PRIVATE, 1, 0600);
-       if (id < 0)
-               perror_msg_and_skip("semget");
-       atexit(cleanup);
-
-       union semun sem_union = { .val = 0 };
-       if (semctl(id, 0, SETVAL, sem_union) == -1)
-               perror_msg_and_skip("semctl");
-
-       TAIL_ALLOC_OBJECT_CONST_PTR(struct sembuf, sem_b);
-       TAIL_ALLOC_OBJECT_CONST_PTR(struct sembuf, sem_b2);
-
-       rc = semop(bogus_semid, NULL, bogus_nsops);
-       printf("semop(%d, NULL, %u) = %s\n",
-               bogus_semid, (unsigned) bogus_nsops, sprintrc(rc));
-
-       rc = semop(bogus_semid, bogus_sops, 1);
-       printf("semop(%d, %p, %u) = %s\n",
-               bogus_semid, bogus_sops, 1, sprintrc(rc));
-
-       sem_b->sem_num = 0;
-       sem_b->sem_op = 1;
-       sem_b->sem_flg = SEM_UNDO;
-
-       sem_b2->sem_num = 0xface;
-       sem_b2->sem_op = 0xf00d;
-       sem_b2->sem_flg = 0xbeef;
+#else
 
-       rc = semop(bogus_semid, sem_b2, 2);
-       printf("semop(%d, [{%hu, %hd, %s%s%#hx}, ... /* %p */], %u) = %s\n",
-               bogus_semid, sem_b2->sem_num, sem_b2->sem_op,
-               sem_b2->sem_flg & SEM_UNDO ? "SEM_UNDO|" : "",
-               sem_b2->sem_flg & IPC_NOWAIT ? "IPC_NOWAIT|" : "",
-               (short) (sem_b2->sem_flg & ~(SEM_UNDO | IPC_NOWAIT)),
-               sem_b2 + 1, 2, sprintrc(rc));
+SKIP_MAIN_UNDEFINED("__NR_semop")
 
-       if (semop(id, sem_b, 1))
-               perror_msg_and_skip("semop, 1");
-       printf("semop(%d, [{0, 1, SEM_UNDO}], 1) = 0\n", id);
-
-       sem_b->sem_op = -1;
-       if (semop(id, sem_b, 1))
-               perror_msg_and_skip("semop, -1");
-       printf("semop(%d, [{0, -1, SEM_UNDO}], 1) = 0\n", id);
-
-       rc = semtimedop(bogus_semid, NULL, bogus_nsops, NULL);
-       printf("semtimedop(%d, NULL, %u, NULL) = %s\n",
-               bogus_semid, (unsigned) bogus_nsops, sprintrc(rc));
-
-       rc = semtimedop(id, sem_b + 1, 1, ts + 1);
-       printf("semtimedop(%d, %p, 1, %p) = %s\n",
-               id, sem_b + 1, ts + 1, sprintrc(rc));
-
-       ts->tv_sec = 1;
-       ts->tv_nsec = 123456789;
-       rc = semtimedop(bogus_semid, sem_b2, 2, ts);
-       printf("semtimedop(%d, [{%hu, %hd, %s%s%#hx}, ... /* %p */], %u"
-               ", {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
-               bogus_semid, sem_b2->sem_num, sem_b2->sem_op,
-               sem_b2->sem_flg & SEM_UNDO ? "SEM_UNDO|" : "",
-               sem_b2->sem_flg & IPC_NOWAIT ? "IPC_NOWAIT|" : "",
-               (short) (sem_b2->sem_flg & ~(SEM_UNDO | IPC_NOWAIT)),
-               sem_b2 + 1, 2,
-               (long long) ts->tv_sec, zero_extend_signed_to_ull(ts->tv_nsec),
-               sprintrc(rc));
-
-       sem_b->sem_op = 1;
-       if (semtimedop(id, sem_b, 1, NULL))
-               perror_msg_and_skip("semtimedop, 1");
-       printf("semtimedop(%d, [{0, 1, SEM_UNDO}], 1, NULL) = 0\n", id);
-
-       sem_b->sem_op = -1;
-       if (semtimedop(id, sem_b, 1, ts))
-               perror_msg_and_skip("semtimedop, -1");
-       printf("semtimedop(%d, [{0, -1, SEM_UNDO}], 1"
-              ", {tv_sec=%lld, tv_nsec=%llu}) = 0\n", id,
-              (long long) ts->tv_sec, zero_extend_signed_to_ull(ts->tv_nsec));
-
-       sem_b->sem_op = 1;
-       ts->tv_sec = 0xdeadbeefU;
-       ts->tv_nsec = 0xfacefeedU;
-       rc = semtimedop(id, sem_b, 1, ts);
-       printf("semtimedop(%d, [{0, 1, SEM_UNDO}], 1"
-              ", {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
-              id, (long long) ts->tv_sec,
-              zero_extend_signed_to_ull(ts->tv_nsec), sprintrc(rc));
-
-       sem_b->sem_op = -1;
-       ts->tv_sec = (time_t) 0xcafef00ddeadbeefLL;
-       ts->tv_nsec = (long) 0xbadc0dedfacefeedLL;
-       rc = semtimedop(id, sem_b, 1, ts);
-       printf("semtimedop(%d, [{0, -1, SEM_UNDO}], 1"
-              ", {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
-              id, (long long) ts->tv_sec,
-              zero_extend_signed_to_ull(ts->tv_nsec), sprintrc(rc));
-
-       puts("+++ exited with 0 +++");
-       return 0;
-}
+#endif
index 21b67eadaba389b7bee08154e2c09330adfb5dcc..4199975aa3a2533dd6c190a1ac5c0c3f935d9c9e 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (semop -a32 -e trace=semop,semtimedop); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (semop -a32 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a32 -e trace=semop,semtimedop
+run_strace_match_diff -a32 
diff --git a/tests-m32/semtimedop.c b/tests-m32/semtimedop.c
new file mode 100644 (file)
index 0000000..e3cea32
--- /dev/null
@@ -0,0 +1,155 @@
+/*
+ * Copyright (c) 2016-2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#if defined __NR_semtimedop || defined __NR_socketcall
+
+# include <sys/ipc.h>
+# include <sys/sem.h>
+# include <stdint.h>
+# include <stdio.h>
+# include <stdlib.h>
+# include <unistd.h>
+
+# define XLAT_MACROS_ONLY
+#  include "xlat/semop_flags.h"
+# undef XLAT_MACROS_ONLY
+
+union semun {
+       int val;
+       struct semid_ds *buf;
+       unsigned short *array;
+       struct seminfo *__buf;
+};
+
+static int id = -1;
+
+static void
+cleanup(void)
+{
+       semctl(id, 0, IPC_RMID, 0);
+       id = -1;
+}
+
+int
+main(void)
+{
+       static const int bogus_semid = 0xfdb97531;
+       static void * const bogus_sops = (void *) -1L;
+       static const size_t bogus_nsops = (size_t) 0xdefaceddeadbeefULL;
+
+       TAIL_ALLOC_OBJECT_CONST_PTR(struct timespec, ts);
+       int rc;
+
+       id = semget(IPC_PRIVATE, 1, 0600);
+       if (id < 0)
+               perror_msg_and_skip("semget");
+       atexit(cleanup);
+
+       union semun sem_union = { .val = 0 };
+       if (semctl(id, 0, SETVAL, sem_union) == -1)
+               perror_msg_and_skip("semctl");
+
+       TAIL_ALLOC_OBJECT_CONST_PTR(struct sembuf, sem_b);
+       TAIL_ALLOC_OBJECT_CONST_PTR(struct sembuf, sem_b2);
+
+       rc = semtimedop(bogus_semid, NULL, bogus_nsops, NULL);
+       printf("semtimedop(%d, NULL, %u, NULL) = %s\n",
+              bogus_semid, (unsigned) bogus_nsops, sprintrc(rc));
+
+       rc = semtimedop(bogus_semid, bogus_sops, 1, NULL);
+       printf("semtimedop(%d, %p, %u, NULL) = %s\n",
+              bogus_semid, bogus_sops, 1, sprintrc(rc));
+
+       sem_b->sem_num = 0;
+       sem_b->sem_op = 1;
+       sem_b->sem_flg = SEM_UNDO;
+
+       sem_b2->sem_num = 0xface;
+       sem_b2->sem_op = 0xf00d;
+       sem_b2->sem_flg = 0xbeef;
+
+       rc = semtimedop(bogus_semid, sem_b2, 2, NULL);
+       printf("semtimedop(%d, [{%hu, %hd, %s%s%#hx}, ... /* %p */], %u"
+              ", NULL) = %s\n",
+              bogus_semid, sem_b2->sem_num, sem_b2->sem_op,
+              sem_b2->sem_flg & SEM_UNDO ? "SEM_UNDO|" : "",
+              sem_b2->sem_flg & IPC_NOWAIT ? "IPC_NOWAIT|" : "",
+              (short) (sem_b2->sem_flg & ~(SEM_UNDO | IPC_NOWAIT)),
+              sem_b2 + 1, 2, sprintrc(rc));
+
+       if (semtimedop(id, sem_b, 1, NULL))
+               perror_msg_and_skip("semtimedop, 1");
+       printf("semtimedop(%d, [{0, 1, SEM_UNDO}], 1, NULL) = 0\n", id);
+
+       sem_b->sem_op = -1;
+       if (semtimedop(id, sem_b, 1, NULL))
+               perror_msg_and_skip("semtimedop, -1");
+       printf("semtimedop(%d, [{0, -1, SEM_UNDO}], 1, NULL) = 0\n", id);
+
+       rc = semtimedop(bogus_semid, NULL, bogus_nsops, NULL);
+       printf("semtimedop(%d, NULL, %u, NULL) = %s\n",
+               bogus_semid, (unsigned) bogus_nsops, sprintrc(rc));
+
+       rc = semtimedop(id, sem_b + 1, 1, ts + 1);
+       printf("semtimedop(%d, %p, 1, %p) = %s\n",
+               id, sem_b + 1, ts + 1, sprintrc(rc));
+
+       ts->tv_sec = 1;
+       ts->tv_nsec = 123456789;
+       rc = semtimedop(bogus_semid, sem_b2, 2, ts);
+       printf("semtimedop(%d, [{%hu, %hd, %s%s%#hx}, ... /* %p */], %u"
+               ", {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+               bogus_semid, sem_b2->sem_num, sem_b2->sem_op,
+               sem_b2->sem_flg & SEM_UNDO ? "SEM_UNDO|" : "",
+               sem_b2->sem_flg & IPC_NOWAIT ? "IPC_NOWAIT|" : "",
+               (short) (sem_b2->sem_flg & ~(SEM_UNDO | IPC_NOWAIT)),
+               sem_b2 + 1, 2,
+               (long long) ts->tv_sec, zero_extend_signed_to_ull(ts->tv_nsec),
+               sprintrc(rc));
+
+       sem_b->sem_op = 1;
+       if (semtimedop(id, sem_b, 1, NULL))
+               perror_msg_and_skip("semtimedop, 1");
+       printf("semtimedop(%d, [{0, 1, SEM_UNDO}], 1, NULL) = 0\n", id);
+
+       sem_b->sem_op = -1;
+       if (semtimedop(id, sem_b, 1, ts))
+               perror_msg_and_skip("semtimedop, -1");
+       printf("semtimedop(%d, [{0, -1, SEM_UNDO}], 1"
+              ", {tv_sec=%lld, tv_nsec=%llu}) = 0\n", id,
+              (long long) ts->tv_sec, zero_extend_signed_to_ull(ts->tv_nsec));
+
+       sem_b->sem_op = 1;
+       ts->tv_sec = 0xdeadbeefU;
+       ts->tv_nsec = 0xfacefeedU;
+       rc = semtimedop(id, sem_b, 1, ts);
+       printf("semtimedop(%d, [{0, 1, SEM_UNDO}], 1"
+              ", {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+              id, (long long) ts->tv_sec,
+              zero_extend_signed_to_ull(ts->tv_nsec), sprintrc(rc));
+
+       sem_b->sem_op = -1;
+       ts->tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+       ts->tv_nsec = (long) 0xbadc0dedfacefeedLL;
+       rc = semtimedop(id, sem_b, 1, ts);
+       printf("semtimedop(%d, [{0, -1, SEM_UNDO}], 1"
+              ", {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+              id, (long long) ts->tv_sec,
+              zero_extend_signed_to_ull(ts->tv_nsec), sprintrc(rc));
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_semtimedop || __NR_socketcall")
+
+#endif
diff --git a/tests-m32/semtimedop.gen.test b/tests-m32/semtimedop.gen.test
new file mode 100755 (executable)
index 0000000..1c767ff
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (semtimedop  ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff  
index 6ef3232ef73ac1594e37eb6bf83c66f87d986d33..cb6dd388709c87d06dedd087e98b5a1c1bffd16f 100644 (file)
@@ -1,13 +1,13 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_sendfile
 
@@ -50,14 +50,9 @@ main(void)
        const unsigned int blen = file_size / 3;
        const unsigned int alen = file_size - blen;
 
-       static const char fname[] = "sendfile-tmpfile";
-       int reg_in = open(fname, O_RDWR | O_CREAT | O_TRUNC, 0600);
-       if (reg_in < 0)
-               perror_msg_and_fail("open: %s", fname);
-       if (unlink(fname))
-               perror_msg_and_fail("unlink: %s", fname);
+       int reg_in = create_tmpfile(O_RDWR);
        if (ftruncate(reg_in, file_size))
-               perror_msg_and_fail("ftruncate: %s", fname);
+               perror_msg_and_fail("ftruncate(%d, %u)", reg_in, file_size);
 
        TAIL_ALLOC_OBJECT_VAR_PTR(uint32_t, p_off);
        void *p = p_off + 1;
index c318ace8da9f4558e2fbcdf9ecc1a41b87dcfcf7..9bcf1fc7b920ebf09a75ff053647e25bbb4ce646 100644 (file)
@@ -1,13 +1,13 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_sendfile64
 
@@ -50,14 +50,9 @@ main(void)
        const unsigned int blen = file_size / 3;
        const unsigned int alen = file_size - blen;
 
-       static const char fname[] = "sendfile64-tmpfile";
-       int reg_in = open(fname, O_RDWR | O_CREAT | O_TRUNC, 0600);
-       if (reg_in < 0)
-               perror_msg_and_fail("open: %s", fname);
-       if (unlink(fname))
-               perror_msg_and_fail("unlink: %s", fname);
+       int reg_in = create_tmpfile(O_RDWR);
        if (ftruncate(reg_in, file_size))
-               perror_msg_and_fail("ftruncate: %s", fname);
+               perror_msg_and_fail("ftruncate(%d, %u)", reg_in, file_size);
 
        TAIL_ALLOC_OBJECT_CONST_PTR(uint64_t, p_off);
        void *p = p_off + 1;
diff --git a/tests-m32/set_mempolicy-Xabbrev.c b/tests-m32/set_mempolicy-Xabbrev.c
new file mode 100644 (file)
index 0000000..2dbc487
--- /dev/null
@@ -0,0 +1 @@
+#include "set_mempolicy.c"
diff --git a/tests-m32/set_mempolicy-Xabbrev.gen.test b/tests-m32/set_mempolicy-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..f27e985
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (set_mempolicy-Xabbrev -a34 -s3 -Xabbrev -e trace=set_mempolicy); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a34 -s3 -Xabbrev -e trace=set_mempolicy
diff --git a/tests-m32/set_mempolicy-Xraw.c b/tests-m32/set_mempolicy-Xraw.c
new file mode 100644 (file)
index 0000000..47436b5
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "set_mempolicy.c"
diff --git a/tests-m32/set_mempolicy-Xraw.gen.test b/tests-m32/set_mempolicy-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..3b5a6a4
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (set_mempolicy-Xraw -a24 -s3 -Xraw -e trace=set_mempolicy); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a24 -s3 -Xraw -e trace=set_mempolicy
diff --git a/tests-m32/set_mempolicy-Xverbose.c b/tests-m32/set_mempolicy-Xverbose.c
new file mode 100644 (file)
index 0000000..0396cb4
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "set_mempolicy.c"
diff --git a/tests-m32/set_mempolicy-Xverbose.gen.test b/tests-m32/set_mempolicy-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..741229e
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (set_mempolicy-Xverbose -s3 -Xverbose -e trace=set_mempolicy); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -s3 -Xverbose -e trace=set_mempolicy
index 46703713f2dca92c3cc4f09abfe5f9c738303466..ee65c4c97c10adc6c566ec515658a9a3f09a8b46 100644 (file)
@@ -2,29 +2,92 @@
  * Check decoding of set_mempolicy syscall.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_set_mempolicy
 
-# include <errno.h>
 # include <stdio.h>
 # include <string.h>
 # include <unistd.h>
 
-# include "xlat.h"
-# include "xlat/policies.h"
-
 # define MAX_STRLEN 3
 # define NLONGS(n) ((n + 8 * sizeof(long) - 2) \
                      / (8 * sizeof(long)))
 
+static const char *errstr;
+
+static long
+k_set_mempolicy(const unsigned int mode,
+               const void *const nmask,
+               const unsigned long maxnode)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = fill | mode;
+       const kernel_ulong_t arg2 = (unsigned long) nmask;
+       const kernel_ulong_t arg3 = maxnode;
+       const long rc = syscall(__NR_set_mempolicy,
+                               arg1, arg2, arg3, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
+# if XLAT_RAW
+#  define out_str      raw
+# elif XLAT_VERBOSE
+#  define out_str      verbose
+# else
+#  define out_str      abbrev
+# endif
+
+static struct {
+       unsigned int val;
+       const char *raw;
+       const char *verbose;
+       const char *abbrev;
+} mpol_modes[] = {
+       { ARG_STR(0),
+         "0 /* MPOL_DEFAULT */",
+         "MPOL_DEFAULT" },
+       { ARG_STR(0x1),
+         "0x1 /* MPOL_PREFERRED */",
+         "MPOL_PREFERRED" },
+       { ARG_STR(0x2),
+         "0x2 /* MPOL_BIND */",
+         "MPOL_BIND" },
+       { ARG_STR(0x3),
+         "0x3 /* MPOL_INTERLEAVE */",
+         "MPOL_INTERLEAVE" },
+       { ARG_STR(0x4),
+         "0x4 /* MPOL_LOCAL */",
+         "MPOL_LOCAL" },
+       { ARG_STR(0x8000),
+         "0x8000 /* MPOL_DEFAULT|MPOL_F_STATIC_NODES */",
+         "MPOL_DEFAULT|MPOL_F_STATIC_NODES" },
+       { ARG_STR(0x4001),
+         "0x4001 /* MPOL_PREFERRED|MPOL_F_RELATIVE_NODES */",
+         "MPOL_PREFERRED|MPOL_F_RELATIVE_NODES" },
+       { ARG_STR(0xc002),
+         "0xc002 /* MPOL_BIND|MPOL_F_STATIC_NODES|MPOL_F_RELATIVE_NODES */",
+         "MPOL_BIND|MPOL_F_STATIC_NODES|MPOL_F_RELATIVE_NODES" },
+       { ARG_STR(0x5),
+         "0x5 /* MPOL_??? */",
+         "0x5 /* MPOL_??? */" },
+       { ARG_STR(0xffff3fff),
+         "0xffff3fff /* MPOL_??? */",
+         "0xffff3fff /* MPOL_??? */" },
+       { ARG_STR(0xffffffff),
+         "0xffffffff /* MPOL_F_STATIC_NODES|MPOL_F_RELATIVE_NODES|0xffff3fff */",
+         "MPOL_F_STATIC_NODES|MPOL_F_RELATIVE_NODES|0xffff3fff" }
+};
+
 static void
 print_nodes(const unsigned long maxnode, unsigned int offset)
 {
@@ -38,10 +101,9 @@ print_nodes(const unsigned long maxnode, unsigned int offset)
                tail_alloc(size ? size : (offset ? 1 : 0));
        memset(nodemask, 0, size);
 
-       long rc = syscall(__NR_set_mempolicy, 0, nodemask, maxnode);
-       const char *errstr = sprintrc(rc);
+       k_set_mempolicy(mpol_modes[0].val, nodemask, maxnode);
 
-       fputs("set_mempolicy(MPOL_DEFAULT, ", stdout);
+       printf("set_mempolicy(%s, ", mpol_modes[0].out_str);
 
        if (nlongs) {
                putc('[', stdout);
@@ -103,15 +165,24 @@ test_offset(const unsigned int offset)
 int
 main(void)
 {
-       if (syscall(__NR_set_mempolicy, 0, 0, 0))
+       if (k_set_mempolicy(mpol_modes[0].val, 0, 0))
                perror_msg_and_skip("set_mempolicy");
-       puts("set_mempolicy(MPOL_DEFAULT, NULL, 0) = 0");
+       printf("set_mempolicy(%s, NULL, 0) = 0\n", mpol_modes[0].out_str);
 
        const unsigned long *nodemask = (void *) 0xfacefeedfffffffeULL;
-       const unsigned long maxnode = (unsigned long) 0xcafef00dbadc0dedULL;
-       long rc = syscall(__NR_set_mempolicy, 1, nodemask, maxnode);
-       printf("set_mempolicy(MPOL_PREFERRED, %p, %lu) = %s\n",
-              nodemask, maxnode, sprintrc(rc));
+       const unsigned long maxnode = (unsigned long) 0xcafef00ddeadbeefULL;
+
+       for (unsigned int i = 0; i < ARRAY_SIZE(mpol_modes); ++i) {
+               if (i) {
+                       k_set_mempolicy(mpol_modes[i].val, 0, 0);
+                       printf("set_mempolicy(%s, NULL, 0) = %s\n",
+                              mpol_modes[i].out_str, errstr);
+               }
+
+               k_set_mempolicy(mpol_modes[i].val, nodemask, maxnode);
+               printf("set_mempolicy(%s, %p, %lu) = %s\n",
+                      mpol_modes[i].out_str, nodemask, maxnode, errstr);
+       }
 
        test_offset(0);
        test_offset(1);
index f8c81c759ba0486eecb4b92b4ee0e60c0c010374..a527e6af766a8d2c15fcd3d374b497313dac64b2 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (set_mempolicy -s3 -a35); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (set_mempolicy -a34 -s3); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -s3 -a35
+run_strace_match_diff -a34 -s3
index 747359c24af384baae1be50dcf31422c3e002794..9fa56c1482adcbf31b87c5648a2ccdadfee758a8 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2013-2015 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2013-2018 The strace developers.
+ * Copyright (c) 2013-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -9,25 +9,21 @@
 #include "tests.h"
 #include <stdio.h>
 #include <unistd.h>
-#ifdef HAVE_PRCTL
-# include <sys/prctl.h>
-#endif
+#include <sys/prctl.h>
 
 int main(int argc, char **argv)
 {
        if (argc < 2)
                return 99;
-#ifdef HAVE_PRCTL
        /* Turn off restrictions on tracing if applicable.  If the command
         * aren't available on this system, that's OK too.  */
-# ifndef PR_SET_PTRACER
-#  define PR_SET_PTRACER 0x59616d61
-# endif
-# ifndef PR_SET_PTRACER_ANY
-#  define PR_SET_PTRACER_ANY -1UL
-# endif
-       (void) prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY, 0, 0, 0);
+#ifndef PR_SET_PTRACER
+# define PR_SET_PTRACER 0x59616d61
 #endif
+#ifndef PR_SET_PTRACER_ANY
+# define PR_SET_PTRACER_ANY -1UL
+#endif
+       (void) prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY, 0, 0, 0);
        if (write(1, "\n", 1) != 1) {
                perror("write");
                return 99;
index 177c0fd7a989a8063b9dde521fe8b65ca71fc845..c2ff8eaafc9e020c0aea1beee78f2ced3adab481 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setdomainname
 
index 496b267988a2e9e6964f45dd204ca6f499dfed18..74d642c4dc383d66d61ab686408aa086d74835ff 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setfsgid
 
index a931602c06517fc9762d97d291137d2c2129dd6c..29b41a9b178ff94c4ba4d1972da90e0e5fb8338a 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setfsgid32
 
index 269d38f2ead57c800a088cbfa1bfd543ce8ea119..78d4eb529c4f0f2089455d90a4aac5b802b2d7df 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setfsuid
 
index cfcc0f83b977b269ab403aa4d1b3a1e896d3aa20..2d4fa83594ce97746355eaeb3e13fd822a2734e9 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setfsuid32
 
index 3374924ae1ff14c8d32321cf0635a483e9e9e4e7..aba372b89a28a4e5f734be888037e1d3bc2c0f3a 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setgid
 
index 427c77b04e9633e4da1252730c06262979d8cfc2..ac695e18c29f1ee2bd895878002eac1cebae541f 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setgid32
 
index a47f10242a92d5728c932142a4afd176c0cca341..a18fdc17dfd4911ac0f3425b736302653f691bea 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of setgroups/setgroups32 syscalls.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -17,7 +17,7 @@
 #else
 
 # include "tests.h"
-# include <asm/unistd.h>
+# include "scno.h"
 
 # ifdef __NR_setgroups
 
index 935b73a99f89fdcc8b78c973c028dcba105e0516..eb111f04aa7a46d3fa55a5145a18bb412065eacd 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setgroups32
 
index c9b89c12054b4dc540dc29d3bee85383f3124704..844fb6b8bd6c9e251bba04814d5396b02e4d1634 100644 (file)
@@ -3,14 +3,14 @@
  *
  * Copyright (c) 2016 Fei Jie <feij.fnst@cn.fujitsu.com>
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_sethostname
 
index 8ef7a19b1a562fa087e9c71f89f60f41bea9aa5f..21a8dc6a5487efa37cd3d1722c916b7bc1051d6a 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of setns syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setns
 
diff --git a/tests-m32/setpgrp-exec.c b/tests-m32/setpgrp-exec.c
new file mode 100644 (file)
index 0000000..8a84d43
--- /dev/null
@@ -0,0 +1,22 @@
+/*
+ * Copyright (c) 2020 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <unistd.h>
+
+int main(int argc, char **argv)
+{
+       if (argc < 2)
+               error_msg_and_fail("argc < 2");
+
+       if (setpgid(0, 0))
+               perror_msg_and_fail("setpgid");
+
+       (void) execvp(argv[1], argv + 1);
+
+       perror_msg_and_fail("execvp: %s", argv[1]);
+}
index 68639e6ad50d5037435358fed3349309842393c3..232a140ab49aaf2a71ddfb1b4004dc439f15b33e 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setregid
 
index 6291bc58a4e83d859317ab30e3cb7cb97db0eeb9..fca985ed8eb5fcf5cff22274a9686e4ab3ca6d69 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setregid32
 
index f3a160e37de76e27f10896b53924b11fb8223c80..6f64d0b06d96d8c641b0746eedbe6a7fe7ee5641 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setresgid
 
index e05ae8f8dd966c391eec2826af11e2f35456a1b3..45d252e69d3b36c500f36b2b4603eddffe3ced84 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setresgid32
 
index 855a9bf70290784043353ba174f851bf5dfeda72..d0821c39b0b5e7f302b57c90744624b629d34fac 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setresuid
 
index ccfc2a51c83240368a26014165ea312a1398105d..a8201810634242e62ecd5325540e647d4cf7b95e 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setresuid32
 
index 1e34dd181011740140b9385e88930a2e889d2fff..c1279c9c39486be9d0251f1492f19e5aaa1112b7 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setreuid
 
index c0345db793a92a9d883206ca82b75d0e2226e301..903a2203b98d13ba0ae191e4a46cefc87022cd00 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setreuid32
 
index 099e24020d2d1b5d36ee707ef6bfb4e7a7d0c2ea..886cf65acdbdee9b43dce944e9e14a54374aec0c 100644 (file)
@@ -9,7 +9,7 @@
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setrlimit
 
@@ -19,9 +19,13 @@ int
 main(void)
 {
        kernel_ulong_t *const rlimit = tail_alloc(sizeof(*rlimit) * 2);
-       const struct xlat *xlat;
+       const struct xlat_data *xlat;
+       size_t i = 0;
+
+       for (xlat = resources->data, i = 0; i < resources->size; ++xlat, ++i) {
+               if (!xlat->str)
+                       continue;
 
-       for (xlat = resources; xlat->str; ++xlat) {
                unsigned long res = 0xfacefeed00000000ULL | xlat->val;
                long rc = syscall(__NR_setrlimit, res, 0);
 # if XLAT_RAW
index 4a8243e8919856b377a4faa0b27aa4ecdae7c51a..dcbe8ae0811b590069ac3366164d19b05dd2110b 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setuid
 
index ba1b2e2da1ea90fcdd0cfe0b0d952cec21d81ddf..8de08a725e222f63874504268a6babff8d1ea47b 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setuid32
 
index fe6280ce84d33196606267b6808c5d8c8be0e225..182fdae825f61b827e4cabec5bbf198394107653 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of sigaction syscall.
  *
  * Copyright (c) 2014-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2014-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_sigaction
 
@@ -156,7 +157,7 @@ main(void)
        sigdelset(mask.libc, SIGHUP);
 
        memcpy(new_act->mask, mask.old, sizeof(mask.old));
-# ifdef SA_RESTORER
+# if defined SA_RESTORER && !(defined ALPHA || defined MIPS)
        new_act->flags = SA_RESTORER;
        new_act->restorer = (unsigned long) 0xdeadfacecafef00dULL;
 #  define SA_RESTORER_FMT ", sa_flags=SA_RESTORER, sa_restorer=%#lx"
index ab1eaeb7cacb088cd53c47e2986089bbf8add685..cfcc75cbd9b525b335bcd28d540a278e60117ebf 100755 (executable)
@@ -4,7 +4,7 @@
 # Starting with commit v4.17-5-gf83b49b strace is expected
 # to forward the signal mask to tracees unchanged.
 #
-# Copyright (c) 2017-2018 The strace developers.
+# Copyright (c) 2017-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -20,7 +20,7 @@ for sig in $(../list_sigaction_signum); do
                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
+               for i in '' -I1 -Iwaiting --interruptible=3 --interruptible=never_tstp; do
                        run_strace $i -enone $check_cmd
                done
        done
index 07a8180c65edcf22809a431131adfe7f3b96d286..e5555d61dcd55466acbe50447d553a9ecfb8d91b 100755 (executable)
@@ -4,7 +4,7 @@
 # Starting with commit v4.17-8-ge97a66f strace is expected
 # to forward the signal disposition to tracees unchanged.
 #
-# Copyright (c) 2017-2018 The strace developers.
+# Copyright (c) 2017-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -20,7 +20,7 @@ for sig in $(../list_sigaction_signum); do
                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
+               for i in '' --interruptible=always --interruptible=2 -Inever -I4; do
                        run_strace $i -enone $check_cmd
                done
        done
index 7789ff279535c33c890dff8dc6e377cea14a405e..c7e57ec6e1c9a0b33d0c30406b7fe22ccbc05ee4 100644 (file)
@@ -2,6 +2,7 @@
  * Check SIGCHLD siginfo_t decoding.
  *
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -63,7 +64,7 @@ main(void)
 
        sigsuspend(&unblock_mask);
        tprintf("--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED"
-               ", si_pid=%d, si_uid=%u, si_status=%d"
+               ", si_pid=%d, si_uid=%d, si_status=%d"
                ", si_utime=%llu, si_stime=%llu} ---\n",
                sinfo.si_pid, sinfo.si_uid, sinfo.si_status,
                zero_extend_signed_to_ull(sinfo.si_utime),
@@ -94,7 +95,7 @@ main(void)
 
        sigsuspend(&unblock_mask);
        tprintf("--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_KILLED"
-               ", si_pid=%d, si_uid=%u, si_status=SIGUSR1"
+               ", si_pid=%d, si_uid=%d, si_status=SIGUSR1"
                ", si_utime=%llu, si_stime=%llu} ---\n",
                sinfo.si_pid, sinfo.si_uid,
                zero_extend_signed_to_ull(sinfo.si_utime),
@@ -121,7 +122,7 @@ main(void)
 
        sigsuspend(&unblock_mask);
        tprintf("--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_STOPPED"
-               ", si_pid=%d, si_uid=%u, si_status=SIGSTOP"
+               ", si_pid=%d, si_uid=%d, si_status=SIGSTOP"
                ", si_utime=%llu, si_stime=%llu} ---\n",
                sinfo.si_pid, sinfo.si_uid,
                zero_extend_signed_to_ull(sinfo.si_utime),
@@ -131,7 +132,7 @@ main(void)
 
        sigsuspend(&unblock_mask);
        tprintf("--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_CONTINUED"
-               ", si_pid=%d, si_uid=%u, si_status=SIGCONT"
+               ", si_pid=%d, si_uid=%d, si_status=SIGCONT"
                ", si_utime=%llu, si_stime=%llu} ---\n",
                sinfo.si_pid, sinfo.si_uid,
                zero_extend_signed_to_ull(sinfo.si_utime),
@@ -142,7 +143,7 @@ main(void)
 
        sigsuspend(&unblock_mask);
        tprintf("--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED"
-               ", si_pid=%d, si_uid=%u, si_status=0"
+               ", si_pid=%d, si_uid=%d, si_status=0"
                ", si_utime=%llu, si_stime=%llu} ---\n",
                sinfo.si_pid, sinfo.si_uid,
                zero_extend_signed_to_ull(sinfo.si_utime),
index 40cd77f5c053687050d9e55c45525286d53e7bc3..db5a19a9f48ee15908ef851aa5069f1280f7a0c1 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of signal syscall.
  *
  * Copyright (c) 2017-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_signal
 
diff --git a/tests-m32/signal_receive--pidns-translation.c b/tests-m32/signal_receive--pidns-translation.c
new file mode 100644 (file)
index 0000000..b4e3b2f
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "signal_receive.c"
diff --git a/tests-m32/signal_receive--pidns-translation.gen.test b/tests-m32/signal_receive--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..6306900
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (signal_receive--pidns-translation test_pidns -a16 -e trace=kill); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a16 -e trace=kill
index ad3b4ebd57643cc6d491b584738486067c9d5d01..46cac57121e70a62215c848473f161b810109422 100644 (file)
@@ -1,13 +1,14 @@
 /*
  * Check decoding of signal delivery.
  *
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
+#include "pidns.h"
 #include <signal.h>
 #include <stdio.h>
 #include <unistd.h>
@@ -26,10 +27,13 @@ handler(int sig, siginfo_t *info, void *ucontext)
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        static const char prefix[] = "KERNEL BUG";
        int printed = 0;
 
        const int pid = getpid();
+       const char *pid_str = pidns_pid2str(PT_TGID);
        const int uid = geteuid();
 
        for (int sig = 1; sig <= 31; ++sig) {
@@ -73,10 +77,13 @@ main(void)
                const int e_pid = s_pid;
                const int e_uid = s_uid;
 #endif
-               printf("kill(%d, %s) = 0\n", pid, signal2name(sig));
-               printf("--- %s {si_signo=%s, si_code=SI_USER, si_pid=%d"
+               pidns_print_leader();
+               printf("kill(%d%s, %s) = 0\n", pid, pid_str, signal2name(sig));
+               pidns_print_leader();
+               printf("--- %s {si_signo=%s, si_code=SI_USER, si_pid=%d%s"
                       ", si_uid=%d} ---\n",
-                      signal2name(sig), signal2name(e_sig), e_pid, e_uid);
+                      signal2name(sig), signal2name(e_sig),
+                      e_pid, pid_str, e_uid);
 
                if (s_code || sig != s_sig || pid != s_pid || uid != s_uid) {
                        /*
@@ -91,11 +98,11 @@ main(void)
                        }
                        fprintf(stderr,
                                "%s: expected: si_signo=%d, si_code=%d"
-                               ", si_pid=%d, si_uid=%d\n"
+                               ", si_pid=%d%s, si_uid=%d\n"
                                "%s: received: si_signo=%d, si_code=%d"
-                               ", si_pid=%d, si_uid=%d\n",
-                               prefix, sig, SI_USER, pid, uid,
-                               prefix, sig, s_code, s_pid, s_uid);
+                               ", si_pid=%d%s, si_uid=%d\n",
+                               prefix, sig, SI_USER, pid, pid_str, uid,
+                               prefix, sig, s_code, s_pid, pid_str, s_uid);
                }
        }
 
@@ -104,6 +111,7 @@ main(void)
                        "*** PLEASE FIX THE KERNEL ***\n", prefix);
        }
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
index 71df2dccef0622e57f604dbfced641bc364882d6..0ab6d21dd8b6b39292b0a87eafc966725d2a3b14 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of signalfd4 syscall.
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 
 #include "tests.h"
 #include <fcntl.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined HAVE_SYS_SIGNALFD_H \
  && defined HAVE_SIGNALFD \
index f065c8738662807f695ff18bf2b6539d8f5e0eb3..f39b3a483e3f630460e7d99d699a94894ad5c449 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of sigpending syscall.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_sigpending
 
index 566b8346e6f63e99191941c2dad933c712b7fcf8..4ab36d0002011d8c34b89ba4eb46285b8b655228 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of sigprocmask syscall.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_sigprocmask
 
index 5dece0a415510215004cb47ef0cf0ac32441a62d..4b7516a632099334471ca1f8e4a7d898c0712fde 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __powerpc64__ \
  || (defined __sparc__ && defined __arch64__)
index 11ffae83cdec3f5855ab8769111aa00e49b55158..165c68fa301344e155f31b05520e6a8d9443b729 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of sigsuspend syscall.
  *
  * Copyright (c) 2017-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_sigsuspend
 
index 0cdfcebc94e20efa26125139fea50c8a41cd81e1..f8fca44648a6017eebb1782e5ca109a59b144d8a 100644 (file)
@@ -2,14 +2,21 @@
  * A simple nanosleep based sleep(1) replacement.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <stdlib.h>
-#include <time.h>
+#include "scno.h"
+
+#ifdef __NR_nanosleep
+
+# include <stdlib.h>
+# include <unistd.h>
+
+# include "kernel_old_timespec.h"
 
 int
 main(int ac, char **av)
@@ -20,10 +27,16 @@ main(int ac, char **av)
        if (ac > 2)
                error_msg_and_fail("extra operand");
 
-       struct timespec ts = { atoi(av[1]), 0 };
+       kernel_old_timespec_t ts = { atoi(av[1]), 0 };
 
-       if (nanosleep(&ts, NULL))
+       if (syscall(__NR_nanosleep, (unsigned long) &ts, 0))
                perror_msg_and_fail("nanosleep");
 
        return 0;
 }
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_nanosleep")
+
+#endif
index 2592a3c178d37031a42d953848395c0b58be7ae6..03211ab91334f061fa04ba80ad23fb9b77ebad78 100644 (file)
@@ -2,6 +2,7 @@
  * Check decoding of SO_ERROR socket option.
  *
  * Copyright (c) 2018 Masatake YAMATO <yamato@redhat.com>
+ * Copyright (c) 2018-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -37,7 +38,7 @@ reserve_ephemeral_port(void)
        for (in_port_t port = 49152; port < 61000; port++) {
                /* Just bind here. No listen. */
                addr.sin_port = htons(port);
-               if (bind(sd, &addr, sizeof(addr)) == 0)
+               if (bind(sd, (void *) &addr, sizeof(addr)) == 0)
                        return port;
        }
        error_msg_and_skip("no ephemeral port available for test purposes");
@@ -69,7 +70,7 @@ main(void)
                .sin_addr.s_addr = htonl(INADDR_LOOPBACK),
                .sin_port = htons(port),
        };
-       if (connect(fd, &addr, sizeof(addr)) == 0)
+       if (connect(fd, (void *) &addr, sizeof(addr)) == 0)
                error_msg_and_skip("connect unexpectedly succeeded");
        if (errno != EINPROGRESS)
                perror_msg_and_skip("connect failed for unexpected reason");
diff --git a/tests-m32/so_peercred--pidns-translation.c b/tests-m32/so_peercred--pidns-translation.c
new file mode 100644 (file)
index 0000000..402bbcf
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "so_peercred.c"
diff --git a/tests-m32/so_peercred--pidns-translation.gen.test b/tests-m32/so_peercred--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..956f8f3
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (so_peercred--pidns-translation test_pidns -e trace=getsockopt); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -e trace=getsockopt
index 151bb1755ef878a71c7e97a8fec5554e4c6f482c..e34d6ee1a10f48846ac413ae4dc392403533678e 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of SO_PEERCRED socket option.
  *
  * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
+#include "pidns.h"
 
 #include <stddef.h>
 #include <stdio.h>
@@ -53,6 +54,8 @@ so_str(void)
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        TAIL_ALLOC_OBJECT_CONST_PTR(struct ucred, peercred);
        TAIL_ALLOC_OBJECT_CONST_PTR(socklen_t, len);
 
@@ -75,6 +78,8 @@ main(void)
        struct ucred *const gid_truncated =
                tail_alloc(sizeof_gid_truncated);
 
+       const char *pid_str = pidns_pid2str(PT_TGID);
+
        int sv[2];
        if (socketpair(AF_UNIX, SOCK_STREAM, 0, sv))
                 perror_msg_and_skip("socketpair AF_UNIX SOCK_STREAM");
@@ -82,8 +87,10 @@ main(void)
        /* classic getsockopt */
        *len = sizeof(*peercred);
        get_peercred(sv[0], peercred, len);
+       pidns_print_leader();
        printf("getsockopt(%d, %s", sv[0], so_str());
        PRINT_FIELD_D(", {", *peercred, pid);
+       printf("%s", pid_str);
        PRINT_FIELD_UID(", ", *peercred, uid);
        PRINT_FIELD_UID(", ", *peercred, gid);
        printf("}, [%d]) = %s\n", *len, errstr);
@@ -91,14 +98,17 @@ main(void)
        /* getsockopt with zero optlen */
        *len = 0;
        get_peercred(sv[0], peercred, len);
+       pidns_print_leader();
        printf("getsockopt(%d, %s, %p, [0]) = %s\n",
               sv[0], so_str(), peercred, errstr);
 
        /* getsockopt with optlen larger than necessary - shortened */
        *len = sizeof(*peercred) + 1;
        get_peercred(sv[0], peercred, len);
+       pidns_print_leader();
        printf("getsockopt(%d, %s", sv[0], so_str());
        PRINT_FIELD_D(", {", *peercred, pid);
+       printf("%s", pid_str);
        PRINT_FIELD_UID(", ", *peercred, uid);
        PRINT_FIELD_UID(", ", *peercred, gid);
        printf("}, [%u->%d]) = %s\n",
@@ -110,6 +120,7 @@ main(void)
         */
        *len = sizeof_pid_truncated;
        get_peercred(sv[0], pid_truncated, len);
+       pidns_print_leader();
        printf("getsockopt(%d, %s, {pid=", sv[0], so_str());
        print_quoted_hex(pid_truncated, *len);
        printf("}, [%d]) = %s\n", *len, errstr);
@@ -120,8 +131,10 @@ main(void)
         */
        *len = sizeof_pid;
        get_peercred(sv[0], pid, len);
+       pidns_print_leader();
        printf("getsockopt(%d, %s", sv[0], so_str());
        PRINT_FIELD_D(", {", *pid, pid);
+       printf("%s", pid_str);
        printf("}, [%d]) = %s\n", *len, errstr);
 
        /*
@@ -136,8 +149,10 @@ main(void)
         * to struct ucred.pid field.
         */
        memcpy(uid, uid_truncated, sizeof_uid_truncated);
+       pidns_print_leader();
        printf("getsockopt(%d, %s", sv[0], so_str());
        PRINT_FIELD_D(", {", *uid, pid);
+       printf("%s", pid_str);
        printf(", uid=");
        print_quoted_hex(&uid->uid, sizeof_uid_truncated -
                                    offsetof(struct ucred, uid));
@@ -149,8 +164,10 @@ main(void)
         */
        *len = sizeof_uid;
        get_peercred(sv[0], uid, len);
+       pidns_print_leader();
        printf("getsockopt(%d, %s", sv[0], so_str());
        PRINT_FIELD_D(", {", *uid, pid);
+       printf("%s", pid_str);
        PRINT_FIELD_UID(", ", *uid, uid);
        printf("}, [%d]) = %s\n", *len, errstr);
 
@@ -166,8 +183,10 @@ main(void)
         * to struct ucred.pid and struct ucred.uid fields.
         */
        memcpy(peercred, gid_truncated, sizeof_gid_truncated);
+       pidns_print_leader();
        printf("getsockopt(%d, %s", sv[0], so_str());
        PRINT_FIELD_D(", {", *peercred, pid);
+       printf("%s", pid_str);
        PRINT_FIELD_UID(", ", *peercred, uid);
        printf(", gid=");
        print_quoted_hex(&peercred->gid, sizeof_gid_truncated -
@@ -177,14 +196,17 @@ main(void)
        /* getsockopt optval EFAULT */
        *len = sizeof(*peercred);
        get_peercred(sv[0], &peercred->uid, len);
+       pidns_print_leader();
        printf("getsockopt(%d, %s, %p, [%d]) = %s\n",
               sv[0], so_str(), &peercred->uid, *len, errstr);
 
        /* getsockopt optlen EFAULT */
        get_peercred(sv[0], peercred, len + 1);
+       pidns_print_leader();
        printf("getsockopt(%d, %s, %p, %p) = %s\n",
               sv[0], so_str(), peercred, len + 1, errstr);
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
index ac483646cbc5abc107cf97f1548f22140cbe205e..5b6c5d846802e3eee60c4f19c286b1444c9b6e44 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of socket filters.
  *
  * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 
 #define HEX_FMT "%#x"
 
-#if XLAT_RAW
-# define XLAT_FMT HEX_FMT
-# define XLAT_ARGS(a_) (a_)
-#elif XLAT_VERBOSE
-# define XLAT_FMT HEX_FMT " /* %s */"
-# define XLAT_ARGS(a_) (a_), #a_
-#else
-# define XLAT_FMT "%s"
-# define XLAT_ARGS(a_) #a_
-#endif
-
 #define PRINT_STMT(pfx, code_fmt, k_fmt, ...)  \
        printf("%sBPF_STMT(" code_fmt ", " k_fmt ")", pfx, __VA_ARGS__)
 
index aa68a7eb5d55ef78d27250f565cee1dea41ac225..664a769312441c002c7f6e7dc9d423880fdb8983 100644 (file)
@@ -2,15 +2,16 @@
  * Check decoding of socketcall syscall.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
-#ifdef __NR_socketcall
+#if defined __NR_socketcall && !defined __ARM_EABI__
 
 # include <assert.h>
 # include <stdio.h>
@@ -22,9 +23,9 @@
 static const char *
 xlookup_uint(const struct xlat *xlat, const unsigned int val)
 {
-       for (; xlat->str != NULL; xlat++)
-               if (xlat->val == val)
-                       return xlat->str;
+       for (size_t i = 0; i < xlat->size; i++)
+               if (xlat->data[i].val == val)
+                       return xlat->data[i].str;
        return NULL;
 }
 
@@ -52,8 +53,8 @@ test_socketcall(const int i, const void *const addr)
 int
 main(void)
 {
-       assert((unsigned) sc_min == socketcalls[0].val);
-       assert((unsigned) sc_max == socketcalls[ARRAY_SIZE(socketcalls) - 2].val);
+       assert(0 == socketcalls->data[0].val);
+       assert((unsigned) sc_max == socketcalls->data[socketcalls->size - 1].val);
 
        const unsigned long *const args = tail_alloc(sizeof(*args) * 6);
        efault = tail_alloc(1) + 1;
@@ -70,6 +71,6 @@ main(void)
 
 #else
 
-SKIP_MAIN_UNDEFINED("__NR_socketcall")
+SKIP_MAIN_UNDEFINED("__NR_socketcall && !__ARM_EABI__")
 
 #endif
index c265992583b60dbfade3758183cb8769f8e33eee..9dd1f961092540604f794eab2ab5f829cc7f9930 100644 (file)
@@ -2,6 +2,7 @@
  * Check decoding of timestamp control messages.
  *
  * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2019-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -9,6 +10,7 @@
 
 #include "tests.h"
 #include <stdio.h>
+#include <string.h>
 #include <unistd.h>
 #include <sys/socket.h>
 
@@ -17,6 +19,9 @@
 # include <linux/time_types.h>
 #endif
 
+#include "kernel_timeval.h"
+#include "kernel_old_timespec.h"
+
 #define XLAT_MACROS_ONLY
 #include "xlat/sock_options.h"
 #undef XLAT_MACROS_ONLY
@@ -26,16 +31,18 @@ print_timestamp_old(const struct cmsghdr *c)
 {
        const void *cmsg_header = c;
        const void *cmsg_data = CMSG_DATA(c);
-       const struct timeval *tv = cmsg_data;
-       const unsigned int expected_len = sizeof(*tv);
+       kernel_old_timeval_t tv;
+       const unsigned int expected_len = sizeof(tv);
        const unsigned int data_len = c->cmsg_len - (cmsg_data - cmsg_header);
 
        if (expected_len != data_len)
                perror_msg_and_fail("sizeof(struct timeval) = %u"
                                    ", data_len = %u\n",
                                    expected_len, data_len);
+
+       memcpy(&tv, cmsg_data, sizeof(tv));
        printf("{tv_sec=%lld, tv_usec=%lld}",
-              (long long) tv->tv_sec, (long long) tv->tv_usec);
+              (long long) tv.tv_sec, (long long) tv.tv_usec);
 }
 
 static void
@@ -43,16 +50,18 @@ print_timestampns_old(const struct cmsghdr *c)
 {
        const void *cmsg_header = c;
        const void *cmsg_data = CMSG_DATA(c);
-       const struct timespec *ts = cmsg_data;
-       const unsigned int expected_len = sizeof(*ts);
+       kernel_old_timespec_t ts;
+       const unsigned int expected_len = sizeof(ts);
        const unsigned int data_len = c->cmsg_len - (cmsg_data - cmsg_header);
 
        if (expected_len != data_len)
                perror_msg_and_fail("sizeof(struct timespec) = %u"
                                    ", data_len = %u\n",
                                    expected_len, data_len);
+
+       memcpy(&ts, cmsg_data, sizeof(ts));
        printf("{tv_sec=%lld, tv_nsec=%lld}",
-              (long long) ts->tv_sec, (long long) ts->tv_nsec);
+              (long long) ts.tv_sec, (long long) ts.tv_nsec);
 }
 
 #ifdef HAVE_STRUCT___KERNEL_SOCK_TIMEVAL
@@ -61,16 +70,18 @@ print_timestamp_new(const struct cmsghdr *c)
 {
        const void *cmsg_header = c;
        const void *cmsg_data = CMSG_DATA(c);
-       const struct __kernel_sock_timeval *tv = cmsg_data;
-       const unsigned int expected_len = sizeof(*tv);
+       struct __kernel_sock_timeval tv;
+       const unsigned int expected_len = sizeof(tv);
        const unsigned int data_len = c->cmsg_len - (cmsg_data - cmsg_header);
 
        if (expected_len != data_len)
                perror_msg_and_fail("sizeof(struct __kernel_sock_timeval) = %u"
                                    ", data_len = %u\n",
                                    expected_len, data_len);
+
+       memcpy(&tv, cmsg_data, sizeof(tv));
        printf("{tv_sec=%lld, tv_usec=%lld}",
-              (long long) tv->tv_sec, (long long) tv->tv_usec);
+              (long long) tv.tv_sec, (long long) tv.tv_usec);
 }
 #endif /* HAVE_STRUCT___KERNEL_SOCK_TIMEVAL */
 
@@ -80,16 +91,18 @@ print_timestampns_new(const struct cmsghdr *c)
 {
        const void *cmsg_header = c;
        const void *cmsg_data = CMSG_DATA(c);
-       const struct __kernel_timespec *ts = cmsg_data;
-       const unsigned int expected_len = sizeof(*ts);
+       struct __kernel_timespec ts;
+       const unsigned int expected_len = sizeof(ts);
        const unsigned int data_len = c->cmsg_len - (cmsg_data - cmsg_header);
 
        if (expected_len != data_len)
                perror_msg_and_fail("sizeof(struct __kernel_timespec) = %u"
                                    ", data_len = %u\n",
                                    expected_len, data_len);
+
+       memcpy(&ts, cmsg_data, sizeof(ts));
        printf("{tv_sec=%lld, tv_nsec=%lld}",
-              (long long) ts->tv_sec, (long long) ts->tv_nsec);
+              (long long) ts.tv_sec, (long long) ts.tv_nsec);
 }
 #endif /* HAVE_STRUCT___KERNEL_TIMESPEC */
 
index 2acdde7f2b3be3c6e09d9e180ebca9cb4ab4510c..f62d5ba280ca923fa78ccab9b41bbd6a056b4ee5 100644 (file)
@@ -2,14 +2,14 @@
  * This file is part of splice strace test.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_splice
 
index 8a26a79cb36c161e27813527618763180ffbdad7..be987a9458054e1d0c06a3ed30f613706b477b70 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014-2018 The strace developers.
+ * Copyright (c) 2014-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -7,7 +7,10 @@
 
 #include "stack-fcall.h"
 
-int f0(int i)
+int
+f0(int i, unsigned long f)
 {
-       return f1(i) - i;
+       f ^= (unsigned long) (void *) f0;
+       COMPLEX_BODY(i, f);
+       return f1(i, f) - i;
 }
index b5cd89b38ac1b62de7dc17aefa2c1460c2f1928b..88f33b9b22b5cbefc7f5663ff9febe28d2ce5725 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014-2018 The strace developers.
+ * Copyright (c) 2014-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -7,7 +7,10 @@
 
 #include "stack-fcall.h"
 
-int f1(int i)
+int
+f1(int i, unsigned long f)
 {
-       return f2(i) + i;
+       f ^= (unsigned long) (void *) f1;
+       COMPLEX_BODY(i, f);
+       return f2(i, f) + i;
 }
index 16beee5888f7301a6f74c49267b12725db1260a4..00235903c591bcf0cc803846252ea6f04442f8d1 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014-2018 The strace developers.
+ * Copyright (c) 2014-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -7,7 +7,10 @@
 
 #include "stack-fcall.h"
 
-int f2(int i)
+int
+f2(int i, unsigned long f)
 {
-       return f3(i) - i;
+       f ^= (unsigned long) (void *) f2;
+       COMPLEX_BODY(i, f);
+       return f3(i, f) - i;
 }
index 538b6565ae5aa623adf4f802b2b23d2cfd560c11..ea7d5feda606a11b1b522100e49948c61e1e3747 100644 (file)
@@ -1,23 +1,28 @@
 /*
- * Copyright (c) 2014-2019 The strace developers.
+ * Copyright (c) 2014-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include <signal.h>
-#include <unistd.h>
-
 #include "stack-fcall.h"
 
-int f3(int i)
+int
+f3(int i, unsigned long f)
 {
+       f ^= (unsigned long) (void *) f3;
+       COMPLEX_BODY(i, f);
        switch (i) {
        case 1:
-               return kill(getpid(), SIGURG);
-
+               i -= chdir("");
+               break;
+       case 2:
+               i -= kill(getpid(), SIGURG) - 1;
+               break;
        default:
-               return chdir("") + i;
+               i -= syscall(__NR_exit, i - 3);
+               break;
        }
-
+       return i;
 }
diff --git a/tests-m32/stack-fcall-attach.c b/tests-m32/stack-fcall-attach.c
new file mode 100644 (file)
index 0000000..f2db2b7
--- /dev/null
@@ -0,0 +1,2 @@
+#define ATTACH_MODE 1
+#include "stack-fcall.c"
index cf4000e56f5aa6bb77f3d4f0fe72779aed01e73e..d0c62143e62067baf5f488e1b5ee4e4ef9f8ab01 100644 (file)
@@ -1,15 +1,26 @@
 /*
- * Copyright (c) 2014-2018 The strace developers.
+ * Copyright (c) 2014-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
+#include "tests.h"
+#include <unistd.h>
 #include "stack-fcall.h"
 
-int main(void)
+#ifndef ATTACH_MODE
+# define ATTACH_MODE 0
+#endif
+
+int
+main(int ac, char **av)
 {
-       f0(0);
-       f0(1);
-       return 0;
+#if ATTACH_MODE
+       /* sleep a bit to let the tracer time to catch up */
+       sleep(1);
+#endif
+
+       for (;;)
+               ac += f0(ac, (unsigned long) (void *) main);
 }
index cca0f94f255d0c6f96be54a46c77a94683d6f40a..3afa8a265bd90c361b40712b9ccc2472b185ed8a 100644 (file)
@@ -1,10 +1,13 @@
 /*
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
+#include <unistd.h>
+#include "scno.h"
+
 #ifdef MANGLE
 
 # define f0 _ZN2ns2f0Ei
 
 #endif
 
-int f0(int i);
-int f1(int i);
-int f2(int i);
-int f3(int i);
+int f0(int i, unsigned long);
+int f1(int i, unsigned long);
+int f2(int i, unsigned long);
+int f3(int i, unsigned long);
+
+#define COMPLEX_BODY(i, f)                             \
+       do {                                            \
+               int tid = syscall(__NR_gettid, f);      \
+               if (i == tid)                           \
+                       return 0;                       \
+               switch ((unsigned int) tid & 3) {       \
+                       case 0:                         \
+                               i += f0(tid, f);        \
+                               break;                  \
+                       case 1:                         \
+                               i += f1(tid, f);        \
+                               break;                  \
+                       case 2:                         \
+                               i += f2(tid, f);        \
+                               break;                  \
+                       case 3:                         \
+                               i += f3(tid, f);        \
+                               break;                  \
+               }                                       \
+       } while (0)
index 8c8daad1bbb255a5dcf011ded22bccbaeac0abc8..f161b4f1638a18b3bede9a752222dd8e17868fda 100644 (file)
@@ -1,13 +1,13 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_stat
 
index 13ccd0b866d5e23261abc8122f107487a1fe32ec..83037995e6b405dd11b30a0c22abd1a0d5f8937d 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (stat -a32 -v -P stat.sample -P /dev/full); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (stat -a30 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
+run_strace_match_diff -a30 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full
index 12ded4321aea8dca6fd13188628b318b71df893f..5c6b56b89a81d339f0f59fc0e8cef842e60b9a34 100644 (file)
@@ -1,13 +1,13 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_stat64
 
index f49df37a0f699a3c56526f417882587fe1159335..fe86da1db73b24ee8e45dfe7277817e37ddbc261 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (stat64 -a32 -v -P stat.sample -P /dev/full); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (stat64 -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
+run_strace_match_diff -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full
index 5672a7fc98a5f305f31c989961a07a7d2ebc77bd..13b98fa50cdd2184a953d361090ba60b17800834 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2014-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2014-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_statfs
 
index 1e0a4b243fb46e9bfde18075b1d95adc8325db11..5cd92529f87664e281dc698bbe36a794446dbd5f 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_statfs64
 
diff --git a/tests-m32/status-all.c b/tests-m32/status-all.c
new file mode 100644 (file)
index 0000000..db9510a
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+ * Check status=all filtering for failed and successful syscalls.
+ *
+ * Copyright (c) 2019 Intel Corporation
+ * Copyright (c) 2019 Paul Chaignon <paul.chaignon@gmail.com>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <stdio.h>
+
+int
+main(void)
+{
+       static const char sample_valid[] = ".";
+       static const char sample_invalid[] = "";
+
+       test_status_chdir(sample_valid, 1, 1);
+       test_status_chdir(sample_invalid, 1, 1);
+       puts("+++ exited with 0 +++");
+       return 0;
+}
diff --git a/tests-m32/status-all.gen.test b/tests-m32/status-all.gen.test
new file mode 100755 (executable)
index 0000000..0a10ba4
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (status-all -a10 -e trace=chdir --status=detached,failed,successful,unavailable,unfinished); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10 -e trace=chdir --status=detached,failed,successful,unavailable,unfinished
diff --git a/tests-m32/status-detached.expected b/tests-m32/status-detached.expected
new file mode 100644 (file)
index 0000000..0a6325f
--- /dev/null
@@ -0,0 +1 @@
+nanosleep\({tv_sec=2, tv_nsec=0},  <detached \.\.\.>
diff --git a/tests-m32/status-detached.test b/tests-m32/status-detached.test
new file mode 100755 (executable)
index 0000000..3569272
--- /dev/null
@@ -0,0 +1,20 @@
+#!/bin/sh
+#
+# Check -e status=detached option.
+#
+# Copyright (c) 2019 Paul Chaignon <paul.chaignon@gmail.com>
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/init.sh"
+
+run_prog ../sleep 0
+
+# -I2 avoids blocking all fatal signals, the default when using -o.
+$STRACE -o "$LOG" -I2 -e status=detached ../sleep 2 &
+pid=$!
+../sleep 1
+kill $pid
+wait
+match_grep
diff --git a/tests-m32/status-failed-long.c b/tests-m32/status-failed-long.c
new file mode 100644 (file)
index 0000000..ac61c51
--- /dev/null
@@ -0,0 +1 @@
+#include "status-failed.c"
diff --git a/tests-m32/status-failed-long.gen.test b/tests-m32/status-failed-long.gen.test
new file mode 100755 (executable)
index 0000000..db2abc8
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (status-failed-long -a10 -e trace=chdir --failed-only); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10 -e trace=chdir --failed-only
diff --git a/tests-m32/status-failed-status.c b/tests-m32/status-failed-status.c
new file mode 100644 (file)
index 0000000..ac61c51
--- /dev/null
@@ -0,0 +1 @@
+#include "status-failed.c"
diff --git a/tests-m32/status-failed-status.gen.test b/tests-m32/status-failed-status.gen.test
new file mode 100755 (executable)
index 0000000..f51b19f
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (status-failed-status -a10 -e trace=chdir -e status=failed); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10 -e trace=chdir -e status=failed
diff --git a/tests-m32/status-failed.c b/tests-m32/status-failed.c
new file mode 100644 (file)
index 0000000..81d2885
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+ * Check status=failed filtering for failed and successful syscalls.
+ *
+ * Copyright (c) 2019 Intel Corporation
+ * Copyright (c) 2019 Paul Chaignon <paul.chaignon@gmail.com>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <stdio.h>
+
+int
+main(void)
+{
+       static const char sample_valid[] = ".";
+       static const char sample_invalid[] = "";
+
+       test_status_chdir(sample_valid, 0, 1);
+       test_status_chdir(sample_invalid, 0, 1);
+       puts("+++ exited with 0 +++");
+       return 0;
+}
diff --git a/tests-m32/status-failed.gen.test b/tests-m32/status-failed.gen.test
new file mode 100755 (executable)
index 0000000..fcc7790
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (status-failed -a10 -e trace=chdir -Z); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10 -e trace=chdir -Z
diff --git a/tests-m32/status-none-f.c b/tests-m32/status-none-f.c
new file mode 100644 (file)
index 0000000..b41a566
--- /dev/null
@@ -0,0 +1,19 @@
+/*
+ * Check basic seccomp filtering with large number of traced syscalls.
+ *
+ * Copyright (c) 2018-2019 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <stdio.h>
+#include <unistd.h>
+
+int
+main(void)
+{
+       printf("%-5d +++ exited with 0 +++\n", getpid());
+       return 0;
+}
diff --git a/tests-m32/status-none-threads.c b/tests-m32/status-none-threads.c
new file mode 100644 (file)
index 0000000..ae93960
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Check status=none filtering when a non-leader thread invokes execve.
+ *
+ * Copyright (c) 2019 Paul Chaignon <paul.chaignon@gmail.com>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <errno.h>
+#include <pthread.h>
+#include <stdio.h>
+#include <unistd.h>
+#include "scno.h"
+
+static pid_t leader;
+
+static void *
+thread(void *arg)
+{
+       struct timespec ts = { .tv_nsec = 100000000 };
+       (void) nanosleep(&ts, NULL);
+
+       printf("%-5d +++ superseded by execve in pid %u +++\n",
+              leader, (int) syscall(__NR_gettid));
+
+       char *argv[] = {((char **) arg)[0], (char *) "0", NULL};
+       execve(argv[0], argv, NULL);
+       perror_msg_and_fail("execve");
+}
+
+int
+main(int ac, char **av)
+{
+       setvbuf(stdout, NULL, _IONBF, 0);
+       leader = getpid();
+
+       if (ac > 1) {
+               printf("%-5d +++ exited with 0 +++\n", leader);
+               return 0;
+       }
+
+       pthread_t t;
+       errno = pthread_create(&t, NULL, thread, av);
+       if (errno)
+               perror_msg_and_fail("pthread_create");
+
+       struct timespec ts = { .tv_sec = 123 };
+       (void) nanosleep(&ts, 0);
+
+       return 1;
+}
diff --git a/tests-m32/status-none-threads.test b/tests-m32/status-none-threads.test
new file mode 100755 (executable)
index 0000000..630424e
--- /dev/null
@@ -0,0 +1,47 @@
+#!/bin/sh
+#
+# Check status=none filtering when a non-leader thread invokes execve.
+#
+# Copyright (c) 2019 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/init.sh"
+
+# Check that PTRACE_EVENT_EXEC support in kernel is good enough.
+# The kernel before commit v3.1-rc1~308^2~7 reported 0 instead of old pid.
+require_min_kernel_version_or_skip 3.1
+
+# This test requires some concurrency between threads.
+require_min_nproc 2
+
+check_prog diff
+run_prog_skip_if_failed date +%s > /dev/null
+s0="$(date +%s)"
+
+run_prog > /dev/null
+
+set -- -a14 -f -e status=${status_filter:-none} $args
+
+# Due to probabilistic nature of the test, try it several times.
+while :; do
+       > "$LOG" || fail_ "failed to write $LOG"
+       rc=0
+       $STRACE -o "$LOG" "$@" > "$EXP" || {
+               rc=$?
+               cat < "$LOG" >&2
+       }
+
+       if [ "$rc" = 0 ] && diff -u -- "$EXP" "$LOG"; then
+               exit 0
+       fi
+
+       s1="$(date +%s)"
+       [ "$(($s1-$s0))" -gt "$(($TIMEOUT_DURATION/2))" ] ||
+               continue
+
+       [ "$rc" = 0 ] &&
+               fail_ "$STRACE $* output mismatch" ||
+               fail_ "$STRACE $* failed with code $rc"
+done
diff --git a/tests-m32/status-none.c b/tests-m32/status-none.c
new file mode 100644 (file)
index 0000000..0144a60
--- /dev/null
@@ -0,0 +1,18 @@
+/*
+ * Check basic -e status=none syscall filtering.
+ *
+ * Copyright (c) 2019 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <stdio.h>
+
+int
+main(void)
+{
+       puts("+++ exited with 0 +++");
+       return 0;
+}
diff --git a/tests-m32/status-none.gen.test b/tests-m32/status-none.gen.test
new file mode 100755 (executable)
index 0000000..2b141f2
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (status-none -e trace=all --status=none); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=all --status=none
diff --git a/tests-m32/status-successful-long.c b/tests-m32/status-successful-long.c
new file mode 100644 (file)
index 0000000..45be5b1
--- /dev/null
@@ -0,0 +1 @@
+#include "status-successful.c"
diff --git a/tests-m32/status-successful-long.gen.test b/tests-m32/status-successful-long.gen.test
new file mode 100755 (executable)
index 0000000..1618f32
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (status-successful-long -a10 -e trace=chdir --successful-only); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10 -e trace=chdir --successful-only
diff --git a/tests-m32/status-successful-status.c b/tests-m32/status-successful-status.c
new file mode 100644 (file)
index 0000000..45be5b1
--- /dev/null
@@ -0,0 +1 @@
+#include "status-successful.c"
diff --git a/tests-m32/status-successful-status.gen.test b/tests-m32/status-successful-status.gen.test
new file mode 100755 (executable)
index 0000000..34ce3db
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (status-successful-status -a10 -e trace=chdir --status=successful); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10 -e trace=chdir --status=successful
diff --git a/tests-m32/status-successful.c b/tests-m32/status-successful.c
new file mode 100644 (file)
index 0000000..b37854a
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+ * Check status=successful filtering for failed and successful syscalls.
+ *
+ * Copyright (c) 2019 Intel Corporation
+ * Copyright (c) 2019 Paul Chaignon <paul.chaignon@gmail.com>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <stdio.h>
+
+int
+main(void)
+{
+       static const char sample_valid[] = ".";
+       static const char sample_invalid[] = "";
+
+       test_status_chdir(sample_valid, 1, 0);
+       test_status_chdir(sample_invalid, 1, 0);
+       puts("+++ exited with 0 +++");
+       return 0;
+}
diff --git a/tests-m32/status-successful.gen.test b/tests-m32/status-successful.gen.test
new file mode 100755 (executable)
index 0000000..395b85e
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (status-successful -a10 -e trace=chdir -z); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10 -e trace=chdir -z
diff --git a/tests-m32/status-unfinished-threads.c b/tests-m32/status-unfinished-threads.c
new file mode 100644 (file)
index 0000000..77c8817
--- /dev/null
@@ -0,0 +1,66 @@
+/*
+ * Check status=unfinished filtering when a non-leader thread invokes execve.
+ *
+ * Copyright (c) 2019 Paul Chaignon <paul.chaignon@gmail.com>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_nanosleep
+
+# include <errno.h>
+# include <pthread.h>
+# include <stdio.h>
+# include <unistd.h>
+
+# include "kernel_old_timespec.h"
+
+static pid_t leader;
+
+static void *
+thread(void *arg)
+{
+       kernel_old_timespec_t ts = { .tv_nsec = 100000000 };
+       (void) syscall(__NR_nanosleep, (unsigned long) &ts, 0UL);
+
+       printf("%-5d nanosleep({tv_sec=123, tv_nsec=0},  <unfinished ...>) = ?\n"
+              "%-5d +++ superseded by execve in pid %u +++\n",
+              leader, leader, (int) syscall(__NR_gettid));
+
+       char *argv[] = {((char **) arg)[0], (char *) "0", NULL};
+       execve(argv[0], argv, NULL);
+       perror_msg_and_fail("execve");
+}
+
+int
+main(int ac, char **av)
+{
+       setvbuf(stdout, NULL, _IONBF, 0);
+       leader = getpid();
+
+       if (ac > 1) {
+               printf("%-5d exit_group(0) = ?\n"
+                      "%-5d +++ exited with 0 +++\n", leader, leader);
+               return 0;
+       }
+
+       pthread_t t;
+       errno = pthread_create(&t, NULL, thread, av);
+       if (errno)
+               perror_msg_and_fail("pthread_create");
+
+       kernel_old_timespec_t ts = { .tv_sec = 123 };
+       (void) syscall(__NR_nanosleep, (unsigned long) &ts, 0UL);
+
+       return 1;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_nanosleep")
+
+#endif
diff --git a/tests-m32/status-unfinished-threads.test b/tests-m32/status-unfinished-threads.test
new file mode 100755 (executable)
index 0000000..f54a323
--- /dev/null
@@ -0,0 +1,12 @@
+#!/bin/sh
+#
+# Check status=unfinished filtering when a non-leader thread invokes execve.
+#
+# Copyright (c) 2019 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+status_filter=unfinished
+
+. "${srcdir=.}"/status-none-threads.test
diff --git a/tests-m32/status-unfinished.c b/tests-m32/status-unfinished.c
new file mode 100644 (file)
index 0000000..de78eee
--- /dev/null
@@ -0,0 +1,19 @@
+/*
+ * Check basic -e status=unfinished syscall filtering.
+ *
+ * Copyright (c) 2019 Paul Chaignon <paul.chaignon@gmail.com>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <stdio.h>
+
+int
+main(void)
+{
+       puts("exit_group(0) = ?\n"
+            "+++ exited with 0 +++");
+       return 0;
+}
diff --git a/tests-m32/status-unfinished.gen.test b/tests-m32/status-unfinished.gen.test
new file mode 100755 (executable)
index 0000000..c02817b
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (status-unfinished -a10 -e trace=all --status=unfinished); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10 -e trace=all --status=unfinished
diff --git a/tests-m32/status.c b/tests-m32/status.c
new file mode 100644 (file)
index 0000000..82fd8b1
--- /dev/null
@@ -0,0 +1,21 @@
+/*
+ * Helper function to check -e status option.
+ *
+ * Copyright (c) 2019 Intel Corporation
+ * Copyright (c) 2019 Paul Chaignon <paul.chaignon@gmail.com>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <stdio.h>
+#include <unistd.h>
+
+void
+test_status_chdir(const char *dir, bool print_success, bool print_fail)
+{
+       long rc = chdir(dir);
+       if ((rc == -1 && print_fail) || (rc != -1 && print_success))
+               printf("chdir(\"%s\") = %s\n", dir, sprintrc(rc));
+}
index c5e86ad2e8344bbe89b61534988be0e0eeb209ac..c5537204341df265626d3128be677696161fd0e5 100644 (file)
@@ -1,14 +1,14 @@
 /*
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
-#ifdef __NR_statx
+#if defined __NR_statx && defined HAVE_STRUCT_STATX
 
 # include <linux/stat.h>
 # include "xlat.h"
@@ -45,6 +45,6 @@ static const char *TEST_SYSCALL_STATX_MASK_STR  = "STATX_ALL";
 
 #else
 
-SKIP_MAIN_UNDEFINED("__NR_statx")
+SKIP_MAIN_UNDEFINED("__NR_statx && HAVE_STRUCT_STATX")
 
 #endif
index bff3e3f29a6864a16d99c3187979207cedd1a5ed..564a5918377041c2e88ede132f1bddb5caebd566 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (statx -a32 -v -P stat.sample -P /dev/full); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (statx -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
+run_strace_match_diff -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full
diff --git a/tests-m32/strace--absolute-timestamps-format-time-precision-ms.gen.test b/tests-m32/strace--absolute-timestamps-format-time-precision-ms.gen.test
new file mode 100755 (executable)
index 0000000..061321c
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--absolute-timestamps-format-time-precision-ms +strace-tt.test 3 --absolute-timestamps=format:time --absolute-timestamps=precision:ms); do not edit.
+set -- 3 --absolute-timestamps=format:time --absolute-timestamps=precision:ms
+. "${srcdir=.}/strace-tt.test"
diff --git a/tests-m32/strace--absolute-timestamps-format-time-precision-ns.gen.test b/tests-m32/strace--absolute-timestamps-format-time-precision-ns.gen.test
new file mode 100755 (executable)
index 0000000..c1c94db
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--absolute-timestamps-format-time-precision-ns +strace-tt.test 9 --absolute-timestamps=format:time --absolute-timestamps=precision:ns); do not edit.
+set -- 9 --absolute-timestamps=format:time --absolute-timestamps=precision:ns
+. "${srcdir=.}/strace-tt.test"
diff --git a/tests-m32/strace--absolute-timestamps-format-time-precision-s.gen.test b/tests-m32/strace--absolute-timestamps-format-time-precision-s.gen.test
new file mode 100755 (executable)
index 0000000..52bfe1c
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--absolute-timestamps-format-time-precision-s +strace-t.test --absolute-timestamps=format:time --absolute-timestamps=precision:s); do not edit.
+set -- --absolute-timestamps=format:time --absolute-timestamps=precision:s
+. "${srcdir=.}/strace-t.test"
diff --git a/tests-m32/strace--absolute-timestamps-format-time-precision-us.gen.test b/tests-m32/strace--absolute-timestamps-format-time-precision-us.gen.test
new file mode 100755 (executable)
index 0000000..6c55961
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--absolute-timestamps-format-time-precision-us +strace-tt.test 6 --absolute-timestamps=format:time --absolute-timestamps=precision:us); do not edit.
+set -- 6 --absolute-timestamps=format:time --absolute-timestamps=precision:us
+. "${srcdir=.}/strace-tt.test"
diff --git a/tests-m32/strace--absolute-timestamps-format-time.gen.test b/tests-m32/strace--absolute-timestamps-format-time.gen.test
new file mode 100755 (executable)
index 0000000..1c55649
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--absolute-timestamps-format-time +strace-t.test --absolute-timestamps=format:time); do not edit.
+set -- --absolute-timestamps=format:time
+. "${srcdir=.}/strace-t.test"
diff --git a/tests-m32/strace--absolute-timestamps-format-unix-precision-ms.gen.test b/tests-m32/strace--absolute-timestamps-format-unix-precision-ms.gen.test
new file mode 100755 (executable)
index 0000000..fe4d221
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--absolute-timestamps-format-unix-precision-ms +strace-ttt.test 3 --absolute-timestamps=precision:ms --absolute-timestamps=format:unix); do not edit.
+set -- 3 --absolute-timestamps=precision:ms --absolute-timestamps=format:unix
+. "${srcdir=.}/strace-ttt.test"
diff --git a/tests-m32/strace--absolute-timestamps-format-unix-precision-ns.gen.test b/tests-m32/strace--absolute-timestamps-format-unix-precision-ns.gen.test
new file mode 100755 (executable)
index 0000000..9ea30ba
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--absolute-timestamps-format-unix-precision-ns +strace-ttt.test 9 --absolute-timestamps=format:unix --absolute-timestamps=precision:ns); do not edit.
+set -- 9 --absolute-timestamps=format:unix --absolute-timestamps=precision:ns
+. "${srcdir=.}/strace-ttt.test"
diff --git a/tests-m32/strace--absolute-timestamps-format-unix-precision-s.gen.test b/tests-m32/strace--absolute-timestamps-format-unix-precision-s.gen.test
new file mode 100755 (executable)
index 0000000..93b7221
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--absolute-timestamps-format-unix-precision-s +strace-ttt.test 0 --absolute-timestamps=format:unix --absolute-timestamps=precision:s); do not edit.
+set -- 0 --absolute-timestamps=format:unix --absolute-timestamps=precision:s
+. "${srcdir=.}/strace-ttt.test"
diff --git a/tests-m32/strace--absolute-timestamps-format-unix-precision-us.gen.test b/tests-m32/strace--absolute-timestamps-format-unix-precision-us.gen.test
new file mode 100755 (executable)
index 0000000..f513658
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--absolute-timestamps-format-unix-precision-us +strace-ttt.test 6 --absolute-timestamps=precision:us --absolute-timestamps=format:unix); do not edit.
+set -- 6 --absolute-timestamps=precision:us --absolute-timestamps=format:unix
+. "${srcdir=.}/strace-ttt.test"
diff --git a/tests-m32/strace--absolute-timestamps.gen.test b/tests-m32/strace--absolute-timestamps.gen.test
new file mode 100755 (executable)
index 0000000..f5c7995
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--absolute-timestamps +strace-t.test --absolute-timestamps); do not edit.
+set -- --absolute-timestamps
+. "${srcdir=.}/strace-t.test"
diff --git a/tests-m32/strace--follow-forks-output-separately.expected b/tests-m32/strace--follow-forks-output-separately.expected
new file mode 100644 (file)
index 0000000..627a1b4
--- /dev/null
@@ -0,0 +1,2 @@
+exit_group(0) = ?
++++ exited with 0 +++
diff --git a/tests-m32/strace--follow-forks-output-separately.gen.test b/tests-m32/strace--follow-forks-output-separately.gen.test
new file mode 100755 (executable)
index 0000000..96c225e
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--follow-forks-output-separately +strace-ff.test --follow-forks --output-separately); do not edit.
+set -- --follow-forks --output-separately
+. "${srcdir=.}/strace-ff.test"
diff --git a/tests-m32/strace--relative-timestamps-ms.expected b/tests-m32/strace--relative-timestamps-ms.expected
new file mode 100644 (file)
index 0000000..9fff296
--- /dev/null
@@ -0,0 +1,2 @@
+[ ]{5}0\.0{3} execve\("\.\./sleep", \["\.\./sleep", "1"\], 0x[[:xdigit:]]* /\* [[:digit:]]* vars \*/\) = 0
+[ ]{5}(1\.[01]|0\.9)[[:digit:]]{2} \+\+\+ exited with 0 \+\+\+
diff --git a/tests-m32/strace--relative-timestamps-ms.gen.test b/tests-m32/strace--relative-timestamps-ms.gen.test
new file mode 100755 (executable)
index 0000000..60a5865
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--relative-timestamps-ms +strace-r.test --relative-timestamps=ms); do not edit.
+set -- --relative-timestamps=ms
+. "${srcdir=.}/strace-r.test"
diff --git a/tests-m32/strace--relative-timestamps-ns.expected b/tests-m32/strace--relative-timestamps-ns.expected
new file mode 100644 (file)
index 0000000..d72c477
--- /dev/null
@@ -0,0 +1,2 @@
+[ ]{5}0\.0{9} execve\("\.\./sleep", \["\.\./sleep", "1"\], 0x[[:xdigit:]]* /\* [[:digit:]]* vars \*/\) = 0
+[ ]{5}(1\.[01]|0\.9)[[:digit:]]{8} \+\+\+ exited with 0 \+\+\+
diff --git a/tests-m32/strace--relative-timestamps-ns.gen.test b/tests-m32/strace--relative-timestamps-ns.gen.test
new file mode 100755 (executable)
index 0000000..3aec808
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--relative-timestamps-ns +strace-r.test --relative-timestamps=ns); do not edit.
+set -- --relative-timestamps=ns
+. "${srcdir=.}/strace-r.test"
diff --git a/tests-m32/strace--relative-timestamps-s.expected b/tests-m32/strace--relative-timestamps-s.expected
new file mode 100644 (file)
index 0000000..b3c5ff0
--- /dev/null
@@ -0,0 +1,2 @@
+[ ]{5}0 execve\("\.\./sleep", \["\.\./sleep", "1"\], 0x[[:xdigit:]]* /\* [[:digit:]]* vars \*/\) = 0
+[ ]{5}[01] \+\+\+ exited with 0 \+\+\+
diff --git a/tests-m32/strace--relative-timestamps-s.gen.test b/tests-m32/strace--relative-timestamps-s.gen.test
new file mode 100755 (executable)
index 0000000..2d2ba8d
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--relative-timestamps-s +strace-r.test --relative-timestamps=s); do not edit.
+set -- --relative-timestamps=s
+. "${srcdir=.}/strace-r.test"
diff --git a/tests-m32/strace--relative-timestamps-us.expected b/tests-m32/strace--relative-timestamps-us.expected
new file mode 100644 (file)
index 0000000..2a5b977
--- /dev/null
@@ -0,0 +1,2 @@
+[ ]{5}0\.0{6} execve\("\.\./sleep", \["\.\./sleep", "1"\], 0x[[:xdigit:]]* /\* [[:digit:]]* vars \*/\) = 0
+[ ]{5}(1\.[01]|0\.9)[[:digit:]]{5} \+\+\+ exited with 0 \+\+\+
diff --git a/tests-m32/strace--relative-timestamps-us.gen.test b/tests-m32/strace--relative-timestamps-us.gen.test
new file mode 100755 (executable)
index 0000000..660c0f2
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--relative-timestamps-us +strace-r.test --relative-timestamps=us); do not edit.
+set -- --relative-timestamps=us
+. "${srcdir=.}/strace-r.test"
diff --git a/tests-m32/strace--relative-timestamps.expected b/tests-m32/strace--relative-timestamps.expected
new file mode 100644 (file)
index 0000000..2a5b977
--- /dev/null
@@ -0,0 +1,2 @@
+[ ]{5}0\.0{6} execve\("\.\./sleep", \["\.\./sleep", "1"\], 0x[[:xdigit:]]* /\* [[:digit:]]* vars \*/\) = 0
+[ ]{5}(1\.[01]|0\.9)[[:digit:]]{5} \+\+\+ exited with 0 \+\+\+
diff --git a/tests-m32/strace--relative-timestamps.gen.test b/tests-m32/strace--relative-timestamps.gen.test
new file mode 100755 (executable)
index 0000000..c0e8abe
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--relative-timestamps +strace-r.test --relative-timestamps); do not edit.
+set -- --relative-timestamps
+. "${srcdir=.}/strace-r.test"
diff --git a/tests-m32/strace--strings-in-hex-all.c b/tests-m32/strace--strings-in-hex-all.c
new file mode 100644 (file)
index 0000000..af37c30
--- /dev/null
@@ -0,0 +1,2 @@
+#define STRACE_XX 1
+#include "strace-x.c"
diff --git a/tests-m32/strace--strings-in-hex-all.gen.test b/tests-m32/strace--strings-in-hex-all.gen.test
new file mode 100755 (executable)
index 0000000..78d61ed
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--strings-in-hex-all --trace=chdir --strings-in-hex=all --columns=18); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff --trace=chdir --strings-in-hex=all --columns=18
diff --git a/tests-m32/strace--strings-in-hex-non-ascii.c b/tests-m32/strace--strings-in-hex-non-ascii.c
new file mode 100644 (file)
index 0000000..e07ded2
--- /dev/null
@@ -0,0 +1,2 @@
+#define STRACE_XX 0
+#include "strace-x.c"
diff --git a/tests-m32/strace--strings-in-hex-non-ascii.gen.test b/tests-m32/strace--strings-in-hex-non-ascii.gen.test
new file mode 100755 (executable)
index 0000000..037af67
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--strings-in-hex-non-ascii --trace=chdir --strings-in-hex=non-ascii --columns=12); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff --trace=chdir --strings-in-hex=non-ascii --columns=12
diff --git a/tests-m32/strace--strings-in-hex.c b/tests-m32/strace--strings-in-hex.c
new file mode 100644 (file)
index 0000000..af37c30
--- /dev/null
@@ -0,0 +1,2 @@
+#define STRACE_XX 1
+#include "strace-x.c"
diff --git a/tests-m32/strace--strings-in-hex.gen.test b/tests-m32/strace--strings-in-hex.gen.test
new file mode 100755 (executable)
index 0000000..c16db4b
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--strings-in-hex --trace=chdir --strings-in-hex --columns=18); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff --trace=chdir --strings-in-hex --columns=18
diff --git a/tests-m32/strace--syscall-times-ms.expected b/tests-m32/strace--syscall-times-ms.expected
new file mode 100644 (file)
index 0000000..62c652a
--- /dev/null
@@ -0,0 +1 @@
+nanosleep\(\{tv_sec=1, tv_nsec=0\}, NULL\) = 0 <(1\.[01]|0\.9)[[:digit:]]{2}>
diff --git a/tests-m32/strace--syscall-times-ms.gen.test b/tests-m32/strace--syscall-times-ms.gen.test
new file mode 100755 (executable)
index 0000000..d6b43d4
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--syscall-times-ms +strace-T.test --syscall-times=ms); do not edit.
+set -- --syscall-times=ms
+. "${srcdir=.}/strace-T.test"
diff --git a/tests-m32/strace--syscall-times-ns.expected b/tests-m32/strace--syscall-times-ns.expected
new file mode 100644 (file)
index 0000000..0110af4
--- /dev/null
@@ -0,0 +1 @@
+nanosleep\(\{tv_sec=1, tv_nsec=0\}, NULL\) = 0 <(1\.[01]|0\.9)[[:digit:]]{8}>
diff --git a/tests-m32/strace--syscall-times-ns.gen.test b/tests-m32/strace--syscall-times-ns.gen.test
new file mode 100755 (executable)
index 0000000..1b719f0
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--syscall-times-ns +strace-T.test --syscall-times=ns); do not edit.
+set -- --syscall-times=ns
+. "${srcdir=.}/strace-T.test"
diff --git a/tests-m32/strace--syscall-times-s.expected b/tests-m32/strace--syscall-times-s.expected
new file mode 100644 (file)
index 0000000..fd4d340
--- /dev/null
@@ -0,0 +1 @@
+nanosleep\(\{tv_sec=1, tv_nsec=0\}, NULL\) = 0 <[01]>
diff --git a/tests-m32/strace--syscall-times-s.gen.test b/tests-m32/strace--syscall-times-s.gen.test
new file mode 100755 (executable)
index 0000000..095e49b
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--syscall-times-s +strace-T.test --syscall-times=s); do not edit.
+set -- --syscall-times=s
+. "${srcdir=.}/strace-T.test"
diff --git a/tests-m32/strace--syscall-times-us.expected b/tests-m32/strace--syscall-times-us.expected
new file mode 100644 (file)
index 0000000..1ea0204
--- /dev/null
@@ -0,0 +1 @@
+nanosleep\(\{tv_sec=1, tv_nsec=0\}, NULL\) = 0 <(1\.[01]|0\.9)[[:digit:]]{5}>
diff --git a/tests-m32/strace--syscall-times-us.gen.test b/tests-m32/strace--syscall-times-us.gen.test
new file mode 100755 (executable)
index 0000000..65ac920
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--syscall-times-us +strace-T.test --syscall-times=us); do not edit.
+set -- --syscall-times=us
+. "${srcdir=.}/strace-T.test"
diff --git a/tests-m32/strace--syscall-times.expected b/tests-m32/strace--syscall-times.expected
new file mode 100644 (file)
index 0000000..1ea0204
--- /dev/null
@@ -0,0 +1 @@
+nanosleep\(\{tv_sec=1, tv_nsec=0\}, NULL\) = 0 <(1\.[01]|0\.9)[[:digit:]]{5}>
diff --git a/tests-m32/strace--syscall-times.gen.test b/tests-m32/strace--syscall-times.gen.test
new file mode 100755 (executable)
index 0000000..a86a8f1
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--syscall-times +strace-T.test --syscall-times); do not edit.
+set -- --syscall-times
+. "${srcdir=.}/strace-T.test"
diff --git a/tests-m32/strace--timestamps-time-ms.gen.test b/tests-m32/strace--timestamps-time-ms.gen.test
new file mode 100755 (executable)
index 0000000..bc468d2
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--timestamps-time-ms +strace-tt.test 3 --timestamps=time,ms); do not edit.
+set -- 3 --timestamps=time,ms
+. "${srcdir=.}/strace-tt.test"
diff --git a/tests-m32/strace--timestamps-time-ns.gen.test b/tests-m32/strace--timestamps-time-ns.gen.test
new file mode 100755 (executable)
index 0000000..69a2a01
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--timestamps-time-ns +strace-tt.test 9 --timestamps=time,ns); do not edit.
+set -- 9 --timestamps=time,ns
+. "${srcdir=.}/strace-tt.test"
diff --git a/tests-m32/strace--timestamps-time-s.gen.test b/tests-m32/strace--timestamps-time-s.gen.test
new file mode 100755 (executable)
index 0000000..30a40df
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--timestamps-time-s +strace-t.test --timestamps=time,s); do not edit.
+set -- --timestamps=time,s
+. "${srcdir=.}/strace-t.test"
diff --git a/tests-m32/strace--timestamps-time-us.gen.test b/tests-m32/strace--timestamps-time-us.gen.test
new file mode 100755 (executable)
index 0000000..e4c7a78
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--timestamps-time-us +strace-tt.test 6 --timestamps=time,us); do not edit.
+set -- 6 --timestamps=time,us
+. "${srcdir=.}/strace-tt.test"
diff --git a/tests-m32/strace--timestamps-time.gen.test b/tests-m32/strace--timestamps-time.gen.test
new file mode 100755 (executable)
index 0000000..94ad345
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--timestamps-time +strace-t.test --timestamps=time); do not edit.
+set -- --timestamps=time
+. "${srcdir=.}/strace-t.test"
diff --git a/tests-m32/strace--timestamps-unix-ms.gen.test b/tests-m32/strace--timestamps-unix-ms.gen.test
new file mode 100755 (executable)
index 0000000..51db21a
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--timestamps-unix-ms +strace-ttt.test 3 --timestamps=unix,ms); do not edit.
+set -- 3 --timestamps=unix,ms
+. "${srcdir=.}/strace-ttt.test"
diff --git a/tests-m32/strace--timestamps-unix-ns.gen.test b/tests-m32/strace--timestamps-unix-ns.gen.test
new file mode 100755 (executable)
index 0000000..adfbdfc
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--timestamps-unix-ns +strace-ttt.test 9 --timestamps=unix,ns); do not edit.
+set -- 9 --timestamps=unix,ns
+. "${srcdir=.}/strace-ttt.test"
diff --git a/tests-m32/strace--timestamps-unix-s.gen.test b/tests-m32/strace--timestamps-unix-s.gen.test
new file mode 100755 (executable)
index 0000000..0177f07
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--timestamps-unix-s +strace-ttt.test 0 --timestamps=unix,s); do not edit.
+set -- 0 --timestamps=unix,s
+. "${srcdir=.}/strace-ttt.test"
diff --git a/tests-m32/strace--timestamps-unix-us.gen.test b/tests-m32/strace--timestamps-unix-us.gen.test
new file mode 100755 (executable)
index 0000000..42fdf06
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--timestamps-unix-us +strace-ttt.test 6 --timestamps=unix,us); do not edit.
+set -- 6 --timestamps=unix,us
+. "${srcdir=.}/strace-ttt.test"
diff --git a/tests-m32/strace--timestamps.gen.test b/tests-m32/strace--timestamps.gen.test
new file mode 100755 (executable)
index 0000000..c08f0e5
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--timestamps +strace-t.test --timestamps); do not edit.
+set -- --timestamps
+. "${srcdir=.}/strace-t.test"
diff --git a/tests-m32/strace-D.expected b/tests-m32/strace-D.expected
new file mode 100644 (file)
index 0000000..78c9d2d
--- /dev/null
@@ -0,0 +1 @@
++++ exited with 0 +++
diff --git a/tests-m32/strace-D.test b/tests-m32/strace-D.test
new file mode 100755 (executable)
index 0000000..6c6ff2c
--- /dev/null
@@ -0,0 +1,72 @@
+#!/bin/sh -efu
+#
+# Check -D option.
+#
+# Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2019-2020 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/init.sh"
+
+check_prog sed
+run_prog_skip_if_failed \
+       kill -0 $$
+
+get_parent_pid()
+{
+       sed '/^PPid:[[:space:]]*/!d;s///'
+}
+
+get_tracer_pid()
+{
+       sed '/^TracerPid:[[:space:]]*/!d;s///'
+}
+
+set -- ../print_ppid_tracerpid
+"$@" > "$LOG" ||
+       framework_skip_ "$* does not work"
+
+# not traced: PPid > 0, TracerPid == 0
+[ "$(get_parent_pid < "$LOG")" -gt 0 ] &&
+[ "$(get_tracer_pid < "$LOG")" -eq 0 ] ||
+       dump_log_and_fail_with "$*: unexpected output"
+
+# !-D: PPid > 0, TracerPid > 0, PPid == TracerPid
+run_strace -e q=attach,personality -enone "$@" > "$OUT"
+[ "$(get_parent_pid < "$OUT")" -gt 0 ] &&
+[ "$(get_tracer_pid < "$OUT")" -gt 0 ] &&
+[ "$(get_parent_pid < "$OUT")" = "$(get_tracer_pid < "$OUT")" ] || {
+       cat < "$OUT" > "$LOG"
+       dump_log_and_fail_with "$STRACE $args: unexpected output"
+}
+match_diff
+
+test_parent_tracer_pid()
+{
+       local d parent_pid tracer_pid
+       d="$1"; shift
+
+       # -D/-DD/-DDD: PPid > 0, TracerPid > 0, PPid != TracerPid
+       run_strace $d -q -enone "$@" > "$OUT"
+
+       parent_pid="$(get_parent_pid < "$OUT")" &&
+       [ "$parent_pid" -gt 0 ] &&
+       tracer_pid="$(get_tracer_pid < "$OUT")" &&
+       [ "$tracer_pid" -gt 0 ] &&
+       [ "$parent_pid" != "$tracer_pid" ] || {
+               cat < "$OUT" > "$LOG"
+               dump_log_and_fail_with "$STRACE $args: unexpected output"
+       }
+
+       while kill -0 "$tracer_pid" 2> /dev/null; do
+               $SLEEP_A_BIT
+       done
+
+       match_diff
+}
+
+test_parent_tracer_pid -D "$@"
+test_parent_tracer_pid -DD "$@"
+test_parent_tracer_pid -DDD "$@"
diff --git a/tests-m32/strace-DD.test b/tests-m32/strace-DD.test
new file mode 100755 (executable)
index 0000000..95164bb
--- /dev/null
@@ -0,0 +1,73 @@
+#!/bin/sh -efu
+#
+# Check -DD option.
+#
+# Copyright (c) 2019-2020 Dmitry V. Levin <ldv@altlinux.org>
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/init.sh"
+
+[ "$STRACE" = "$STRACE_EXE" ] ||
+       skip_ 'Not applicable: $STRACE != $STRACE_EXE'
+
+run_prog_skip_if_failed \
+        kill -0 $$
+
+status_file=/proc/self/status
+get_tracer_pid()
+{
+       sed '/^TracerPid:[[:space:]]*/!d;s///' "$@"
+}
+[ "$(get_tracer_pid "$status_file")" -ge 0 ] ||
+        framework_skip_ "$status_file is not available"
+
+run_prog ../sleep 0
+
+sleep_duration="$(($TIMEOUT_DURATION/2))"
+
+test_D()
+{
+       local tracee_pid tracer_pid rc sig=15
+
+       set -- $STRACE --output="$LOG" --columns=39 \
+               --interruptible=anywhere --trace=nanosleep "$@" -- \
+               ../sleep "$sleep_duration"
+       > "$LOG"
+
+       ../setpgrp-exec "$@" &
+       tracee_pid=$!
+
+       while tracer_pid="$(get_tracer_pid "/proc/$tracee_pid/status")"; do
+               [ "$tracer_pid" = 0 ] ||
+                       break
+               $SLEEP_A_BIT
+       done
+
+       $SLEEP_A_BIT
+       kill -$sig -$tracee_pid
+
+       wait $tracee_pid && rc=0 || rc=$?
+       [ "$rc" -eq $((128 + $sig)) ] ||
+               dump_log_and_fail_with \
+                       "$* failed with unexpected exit status $rc"
+
+       while kill -0 "$tracer_pid" 2> /dev/null; do
+               $SLEEP_A_BIT
+       done
+       match_diff "$LOG" "$EXP"
+}
+
+printf 'nanosleep({tv_sec=%s, tv_nsec=0}, ' "$sleep_duration" > "$EXP"
+test_D -D
+
+uid="${UID:-`id -u`}"
+cat > "$EXP" <<__EOF__
+nanosleep({tv_sec=$sleep_duration, tv_nsec=0}, NULL) = ? ERESTART_RESTARTBLOCK (Interrupted by signal)
+--- SIGTERM {si_signo=SIGTERM, si_code=SI_USER, si_pid=$$, si_uid=$uid} ---
++++ killed by SIGTERM +++
+__EOF__
+
+test_D -DD
+test_D -DDD
diff --git a/tests-m32/strace-DDD.expected b/tests-m32/strace-DDD.expected
new file mode 100644 (file)
index 0000000..78c9d2d
--- /dev/null
@@ -0,0 +1 @@
++++ exited with 0 +++
diff --git a/tests-m32/strace-DDD.test b/tests-m32/strace-DDD.test
new file mode 100755 (executable)
index 0000000..aad4000
--- /dev/null
@@ -0,0 +1,93 @@
+#!/bin/sh -efu
+#
+# Check -DDD option.
+#
+# Copyright (c) 2019-2020 Dmitry V. Levin <ldv@altlinux.org>
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/init.sh"
+
+check_prog sed
+run_prog_skip_if_failed \
+       kill -0 $$
+
+status_file=/proc/self/status
+[ -f "$status_file" ] ||
+       framework_skip_ "$status_file is not available"
+
+stat_file=/proc/self/stat
+[ -f "$stat_file" ] ||
+       framework_skip_ "$stat_file is not available"
+
+reapid="$(../get_process_reaper)" && [ "$reapid" -ge 1 ] ||
+       fail_ 'get_process_reaper failed'
+
+set -- -enone -esignal=none ../tracer_ppid_pgid_sid
+run_strace "$@" > "$OUT"
+read -r tracer_pid ppid pgid sid < "$OUT" &&
+[ "$tracer_pid" -gt 1 ] &&
+[ "$tracer_pid" -ne "$reapid" ] &&
+[ "$ppid" -gt 1 ] &&
+[ "$ppid" -ne "$reapid" ] &&
+[ "$pgid" -ge 0 ] &&
+[ "$sid" -ge 0 ] || {
+       cat < "$OUT" > "$LOG"
+       dump_log_and_fail_with "$STRACE $args: unexpected output"
+}
+match_diff
+
+pgid0="$pgid"
+sid0="$sid"
+
+run_strace -D "$@" > "$OUT"
+read -r tracer_pid ppid pgid sid < "$OUT" &&
+[ "$tracer_pid" -gt 1 ] &&
+[ "$tracer_pid" -ne "$reapid" ] &&
+[ "$ppid" -eq "$reapid" ] &&
+[ "$pgid" = "$pgid0" ] &&
+[ "$sid" = "$sid0" ] || {
+       cat < "$OUT" > "$LOG"
+       dump_log_and_fail_with "$STRACE $args: unexpected output"
+}
+while kill -0 "$tracer_pid" 2> /dev/null; do
+       $SLEEP_A_BIT
+done
+match_diff
+
+run_strace -DD "$@" > "$OUT"
+read -r tracer_pid ppid pgid sid < "$OUT" &&
+[ "$tracer_pid" -gt 1 ] &&
+[ "$tracer_pid" -ne "$reapid" ] &&
+[ "$ppid" -eq "$reapid" ] &&
+[ "$pgid" -gt 1 ] &&
+[ "$pgid" -ne "$reapid" ] &&
+[ "$pgid" != "$pgid0" ] &&
+[ "$pgid" != "$sid" ] &&
+[ "$sid" = "$sid0" ] || {
+       cat < "$OUT" > "$LOG"
+       dump_log_and_fail_with "$STRACE $args: unexpected output"
+}
+while kill -0 "$tracer_pid" 2> /dev/null; do
+       $SLEEP_A_BIT
+done
+match_diff
+
+run_strace -DDD "$@" > "$OUT"
+read -r tracer_pid ppid pgid sid < "$OUT" &&
+[ "$tracer_pid" -gt 1 ] &&
+[ "$tracer_pid" -ne "$reapid" ] &&
+[ "$ppid" -eq "$reapid" ] &&
+[ "$pgid" -gt 1 ] &&
+[ "$pgid" -ne "$reapid" ] &&
+[ "$pgid" != "$pgid0" ] &&
+[ "$sid" = "$pgid" ] &&
+[ "$sid" != "$sid0" ] || {
+       cat < "$OUT" > "$LOG"
+       dump_log_and_fail_with "$STRACE $args: unexpected output"
+}
+while kill -0 "$tracer_pid" 2> /dev/null; do
+       $SLEEP_A_BIT
+done
+match_diff
diff --git a/tests-m32/strace-E-override.test b/tests-m32/strace-E-override.test
new file mode 100755 (executable)
index 0000000..1559617
--- /dev/null
@@ -0,0 +1,14 @@
+#!/bin/sh
+#
+# Check that --env option does not affect strace's own environment.
+#
+# Copyright (c) 2019-2020 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/init.sh"
+
+check_prog true
+run_prog true
+run_strace --quiet=all --trace=none --signal=none --env=PATH=/ $args
diff --git a/tests-m32/strace-E-unset.expected b/tests-m32/strace-E-unset.expected
new file mode 100644 (file)
index 0000000..6ce3620
--- /dev/null
@@ -0,0 +1,5 @@
+execve\("\.\./sleep", \["\.\./sleep", "0"\], \[.*"option_E_var=OPTION_E_VAL".*\]\) = 0
+execve\("\.\./sleep", \["\.\./sleep", "0"\], \[.*"option_E_unsets=OPTION_E_UNSETS".*\]\) = 0
+execve\("\.\./sleep", \["\.\./sleep", "0"\], \[.*"option_E_mod=OPTION_E_NEW".*\]\) = 0
+execve\("\.\./sleep", \["\.\./sleep", "0"\], \[.*"option_E_mods=OPTION_E_MODS".*\]\) = 0
+!execve\("\.\./sleep", \["\.\./sleep", "0"\], \[.*"option_E_unset=.*\]\) = 0
diff --git a/tests-m32/strace-E-unset.test b/tests-m32/strace-E-unset.test
new file mode 100755 (executable)
index 0000000..c7583c1
--- /dev/null
@@ -0,0 +1,32 @@
+#!/bin/sh
+#
+# Check modify/unset behaviour of -E/--env option.
+#
+# Copyright (c) 2016-2020 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/init.sh"
+
+export option_E_var=OPTION_E_VAL
+export option_E_mod=OPTION_E_MOD
+export option_E_mods=OPTION_E_MODS
+export option_E_unset=OPTION_E_UNSET
+export option_E_unsets=OPTION_E_UNSETS
+
+run_prog ../sleep 0
+run_strace -qqq -e signal=none -e trace=execve -v \
+       -E option_E_mod=OPTION_E_NEW \
+       -E option_E_unset \
+       -E option_E_missing \
+       $args
+match_grep
+
+run_prog ../sleep 0
+run_strace --quiet=all --signal=none --trace=execve --no-abbrev \
+       --env=option_E_mod=OPTION_E_NEW \
+       --env=option_E_unset \
+       --env=option_E_missing \
+       $args
+match_grep
index 82b95df533dbb8139a9056418d0a4194881e7870..b0bebe1e667b7182162b9fd73907c7307a75cd8f 100755 (executable)
@@ -2,7 +2,7 @@
 #
 # Check -E option.
 #
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -12,3 +12,7 @@
 run_prog ../sleep 0 > /dev/null
 run_strace -E option_E_var=OPTION_E_VAL -v $args
 match_grep
+
+run_prog ../sleep 0 > /dev/null
+run_strace --env=option_E_var=OPTION_E_VAL --no-abbrev $args
+match_grep
index 4b5be6d904c2c67a5649536ae58932f17311237b..fcea4185e86d67802bf7af147af5edc970950858 100755 (executable)
@@ -2,7 +2,7 @@
 #
 # Check -S option.
 #
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -18,7 +18,7 @@ test_c()
        sortopts="$1"; shift
        sedexpr="$1"; shift
 
-       run_strace -c -w -S "$sortby" ../readv > /dev/null
+       run_strace -c -w $sortby ../readv > /dev/null
        sed -r -n -e "$sedexpr" < "$LOG" > "$OUT"
 
        [ -s "$OUT" ] ||
@@ -31,5 +31,31 @@ test_c()
 }
 
 c='[[:space:]]+([^[:space:]]+)'
-test_c calls '-n -r' '/^[[:space:]]+[0-9]/ s/^'"$c$c$c$c"'[[:space:]].*/\4/p'
-test_c name '' '/^[[:space:]]+[0-9]/ s/^'"$c$c$c$c"'([[:space:]]+[0-9]+)?'"$c"'$/\6/p'
+for s in '' '-S time' --summary-sort-by=time_total '-S total_time'; do
+       test_c "$s" '-n -r' \
+               's/^[[:space:]]+([0-9]+)[.,]([0-9]+)[[:space:]].*/\1\t\2/p'
+done
+for s in '-S avg_time' --summary-sort-by=time_avg; do
+       test_c "$s" '-n -r' \
+               '/^[[:space:]]+[0-9]/ s/^'"$c$c$c$c"'[[:space:]].*/\3/p'
+done
+for s in '-S calls' --summary-sort-by=count; do
+       test_c "$s" '-n -r' \
+               '/^[[:space:]]+[0-9]/ s/^'"$c$c$c$c"'[[:space:]].*/\4/p'
+done
+for s in '-S name' --summary-sort-by=syscall '-S syscall_name'; do
+       test_c "$s" '' \
+               '/^[[:space:]]+[0-9]/ s/^'"$c$c$c$c"'([[:space:]]+[0-9]+)?'"$c"'$/\6/p'
+done
+for s in '-S error' --summary-sort-by=errors; do
+       test_c "$s" '-n -r' \
+               '/^[[:space:]]+[0-9]/ s/^'"$c$c$c$c"'([[:space:]]+([0-9]+))?'"$c"'$/\6/p'
+done
+for s in '--summary-columns=time,time-max,name -S max_time' '-U time-percent,max_time,syscall_name --summary-sort-by=longest'; do
+       test_c "$s" '-n -r' \
+               '/^[[:space:]]+[0-9]/ s/^'"$c$c"'[[:space:]].*/\2/p'
+done
+for s in '--summary-columns=time,time_min,name -S min-time' '-U time_percent,min_time,syscall-name --summary-sort-by=shortest'; do
+       test_c "$s" '-n -r' \
+               '/^[[:space:]]+[0-9]/ s/^'"$c$c"'[[:space:]].*/\2/p'
+done
index 7c3136b78b02a0c1a8d566700919870ff7418104..adca3e87244677c852053e0ae523dd895c923b05 100755 (executable)
@@ -2,13 +2,15 @@
 #
 # Check -T option.
 #
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 . "${srcdir=.}/init.sh"
 
+T_opt="${1:--T}"
+
 run_prog ../sleep 0
-run_strace -a24 -T -enanosleep ../sleep 1
+run_strace -a24 "${T_opt}" -enanosleep ../sleep 1
 match_grep
index a0274c282f938d906ea571b8b5b61b73cba84fe8..30f10808c21a3f97df36da0ea4ce14a82afa1c2b 100755 (executable)
@@ -6,51 +6,30 @@
 run_prog_skip_if_failed date +%Y > /dev/null
 year="$(date +%Y)"
 
-run_strace -V > "$LOG"
+run_strace -V > "$OUT"
+run_strace --version > "$LOG"
+match_diff "$LOG" "$OUT" '-V and --version output mismatch'
 
-getstr()
-{
-       sed -r -n 's/#define[[:space:]]*'"$1"'[[:space:]]*"([^"]*)".*/\1/p' \
-               ../../config.h
-}
-
-# getoption OPTION YES_STRING [NO_STRING]
-#
-# Returns YES_STRING in case OPTION is enabled (present in config.h and has
-# a non-zero numeric value). Otherwise, NO_STRING (or empty string, if not
-# specified) is returned.
-getoption()
-{
-       local opt
-       opt=$(sed -r -n 's/#define[[:space:]]*'"$1"'[[:space:]]*([0-9]+)$/\1/p' \
-               ../../config.h)
-       if [ -n "$opt" -a "$opt" -ne 0 ]; then
-               printf "%s" "$2"
-       else
-               printf "%s" "${3-}"
-       fi
-}
-
-config_year=$(getstr COPYRIGHT_YEAR)
+config_year=$(get_config_str COPYRIGHT_YEAR)
 
 [ "$year" -ge "$config_year" ] && [ "$config_year" -ge 2017 ] || {
        echo >&2 "The year derived from config.h (${config_year}) does not pass sanity checks."
        exit 1
 }
 
-option_unwind=$(getoption ENABLE_STACKTRACE \
-               " stack-trace=$(getstr USE_UNWINDER)")
-option_demangle=$(getoption USE_DEMANGLE " stack-demangle")
+option_unwind=$(get_config_option ENABLE_STACKTRACE \
+               " stack-trace=$(get_config_str USE_UNWINDER)")
+option_demangle=$(get_config_option USE_DEMANGLE " stack-demangle")
 
 option_m32=
 option_mx32=
 case "$STRACE_NATIVE_ARCH" in
 x86_64)
-       option_m32=$(getoption HAVE_M32_MPERS ' m32-mpers' ' no-m32-mpers')
-       option_mx32=$(getoption HAVE_MX32_MPERS ' mx32-mpers' ' no-mx32-mpers')
+       option_m32=$(get_config_option HAVE_M32_MPERS ' m32-mpers' ' no-m32-mpers')
+       option_mx32=$(get_config_option HAVE_MX32_MPERS ' mx32-mpers' ' no-mx32-mpers')
        ;;
-aarch64|powerpc64|riscv|s390x|sparc64|tile|x32)
-       option_m32=$(getoption HAVE_M32_MPERS ' m32-mpers' ' no-m32-mpers')
+aarch64|powerpc64|s390x|sparc64|tile|x32)
+       option_m32=$(get_config_option HAVE_M32_MPERS ' m32-mpers' ' no-m32-mpers')
        ;;
 esac
 
@@ -58,12 +37,12 @@ features="${option_unwind}${option_demangle}${option_m32}${option_mx32}"
 [ -n "$features" ] || features=" (none)"
 
 cat > "$EXP" << __EOF__
-$(getstr PACKAGE_NAME) -- version $(getstr PACKAGE_VERSION)
-Copyright (c) 1991-${config_year} The strace developers <$(getstr PACKAGE_URL)>.
+$(get_config_str PACKAGE_NAME) -- version $(get_config_str PACKAGE_VERSION)
+Copyright (c) 1991-${config_year} The strace developers <$(get_config_str PACKAGE_URL)>.
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
 Optional features enabled:${features}
 __EOF__
 
-match_diff "$LOG" "$EXP"
+match_diff "$OUT" "$EXP"
index 429549f2a63d6c788ebfd3abc5902d49c29e0ced..9011bdd8dcf081aeb8ad9c7c22be048e788d718e 100755 (executable)
@@ -1,17 +1,21 @@
-#!/bin/sh
+#!/bin/sh -efu
 #
 # Check -ff option.
 #
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 . "${srcdir=.}/init.sh"
 
+ff_opt="${*:--ff}"
+
 run_prog_skip_if_failed \
        kill -0 $$
 
+run_prog ../sleep 0
+
 ../set_ptracer_any ../sleep 3 > "$OUT" &
 tracee_pid=$!
 
@@ -20,12 +24,13 @@ while ! [ -s "$OUT" ]; do
                fail_ 'set_ptracer_any sleep failed'
 done
 
-run_strace -a14 -eexit_group -ff -p $tracee_pid
+run_strace --quiet=personality -a14 -eexit_group ${ff_opt} -p $tracee_pid
 
 # check that output matches
 match_diff "$LOG.$tracee_pid"
 
 # check that no other output files have been created
+set +f
 set -- "$LOG".*
 [ "$LOG.$tracee_pid" = "$*" ] ||
        fail_ "too many output files: $*"
diff --git a/tests-m32/strace-k-p.expected b/tests-m32/strace-k-p.expected
new file mode 100644 (file)
index 0000000..e40c339
--- /dev/null
@@ -0,0 +1,2 @@
+^chdir .*(__kernel_vsyscaln )?(__)?chdir f3 f2 f1 f0 main
+^SIGURG .*(__kernel_vsyscaln )?(__)?kill f3 f2 f1 f0 main
diff --git a/tests-m32/strace-k-p.test b/tests-m32/strace-k-p.test
new file mode 100755 (executable)
index 0000000..fac484f
--- /dev/null
@@ -0,0 +1,13 @@
+#!/bin/sh
+#
+# Check strace -k for attached tracees.
+#
+# Copyright (c) 2020 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+ATTACH_MODE=1
+test_prog=../stack-fcall-attach
+
+. "${srcdir=.}"/strace-k.test
index 7a323431807aeef2b705942c7e7fe040f9600b6c..51e8cb2a1f0f163e1f8fa6a9a099ceb9c4f9ec58 100755 (executable)
@@ -4,23 +4,49 @@
 #
 # Copyright (c) 2014 Masatake YAMATO <yamato@redhat.com>
 # Copyright (c) 2014-2016 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2014-2019 The strace developers.
+# Copyright (c) 2014-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 . "${srcdir=.}/init.sh"
 
+: "${ATTACH_MODE=0}"
+
 # strace -k is implemented using /proc/$pid/maps
 [ -f /proc/self/maps ] ||
        framework_skip_ '/proc/self/maps is not available'
 
 check_prog grep
+check_prog readlink
 check_prog sed
 check_prog tr
 
+path_to_sed="$(command -v sed)"
+if [ -x "$path_to_sed" ] &&
+   path_to_sed="$(readlink -ev -- "$path_to_sed")"; then
+       "$path_to_sed" -n 's/^[^/]\+[[:space:]]\(\/.*\)$/\1/p' /proc/self/maps |
+       grep -F -x -e "$path_to_sed" > /dev/null || {
+               cat >&2 /proc/self/maps
+               framework_skip_ '/proc/self/maps is invalid'
+       }
+fi
+
 run_prog "${test_prog=../stack-fcall}"
-run_strace -e chdir -k $args
+
+if [ "x${ATTACH_MODE}" = "x1" ]; then
+       ../set_ptracer_any "${test_prog}" >> "$EXP" &
+       tracee_pid=$!
+
+       while ! [ -s "$EXP" ]; do
+               kill -0 "$tracee_pid" 2> /dev/null ||
+                       fail_ 'set_ptracer_any failed'
+       done
+
+       run_strace --trace=chdir --stack-trace --attach="$tracee_pid"
+else
+       run_strace -e chdir -k $args
+fi
 
 expected="$srcdir/$NAME.expected"
 awk '
diff --git a/tests-m32/strace-n.c b/tests-m32/strace-n.c
new file mode 100644 (file)
index 0000000..452bd4c
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+ * Test strace's -n option.
+ *
+ * Copyright (c) 2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#include <stdio.h>
+#include <unistd.h>
+#include <errno.h>
+
+#define SC_listen 4
+
+int
+main(void)
+{
+       int rc;
+
+#if defined __NR_socketcall
+       if (syscall(__NR_socketcall, 0L, 0L, 0L, 0L, 0L) < 0
+               && EINVAL == errno)
+       {
+               const long args[] = { 0, 0 };
+               rc = syscall(__NR_socketcall, SC_listen, args);
+               printf("[%4u] listen(0, 0) = %s\n", __NR_socketcall, sprintrc(rc));
+       }
+#endif
+
+#if defined __NR_listen
+       rc = syscall(__NR_listen, 0, 0);
+       printf("[%4u] listen(0, 0) = %s\n", __NR_listen, sprintrc(rc));
+#endif
+
+       return 0;
+}
diff --git a/tests-m32/strace-n.gen.test b/tests-m32/strace-n.gen.test
new file mode 100755 (executable)
index 0000000..023380f
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace-n -e trace=listen -n -qq -a 12); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=listen -n -qq -a 12
index 936f4a15c998048be78d85af7aa59aa41e22bf85..829973753c1345e1085143f12222e9be59ebabae 100755 (executable)
@@ -2,13 +2,15 @@
 #
 # Check -r option.
 #
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 . "${srcdir=.}/init.sh"
 
+r_opt="${1:--r}"
+
 run_prog ../sleep 0
-run_strace -r -eexecve ../sleep 1
+run_strace "${r_opt}" -eexecve ../sleep 1
 match_grep
index a06408dbb34f5b5069a3fa0f721e20c8d546f202..4d79a2d9a3f6dc8c62ea79c72798342a6331c588 100755 (executable)
@@ -2,19 +2,21 @@
 #
 # Check -t option.
 #
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 . "${srcdir=.}/init.sh"
 
+opts="${*:--t}"
+
 run_prog_skip_if_failed date +%s > "$LOG"
 run_prog_skip_if_failed date +%T --date "@$(cat "$LOG")" > /dev/null
 run_prog ../sleep 0
 
 s0="$(date +%s)"
-run_strace -t -eexecve $args
+run_strace $opts -eexecve $args
 s1="$(date +%s)"
 
 s="$s0"
index 4d1331b15f9fd6e1210ca954c78662fa0c0fcbdb..17d87d6737ed7a29af972ea7dc07d5c63c2b79db 100755 (executable)
@@ -2,19 +2,23 @@
 #
 # Check -tt option.
 #
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 . "${srcdir=.}/init.sh"
 
+precision="${1:-6}"
+[ x0 = "x$#" ] || shift
+opts="${*:--tt}"
+
 run_prog_skip_if_failed date +%s > "$LOG"
 run_prog_skip_if_failed date +%T --date "@$(cat "$LOG")" > /dev/null
 run_prog ../sleep 0
 
 s0="$(date +%s)"
-run_strace -tt -eexecve $args
+run_strace $opts -eexecve $args
 s1="$(date +%s)"
 
 s="$s0"
@@ -26,7 +30,7 @@ while [ "$s" -le "$s1" ]; do
 done
 
 cat > "$EXP" << __EOF__
-($t_reg)\\.[[:digit:]]{6} execve\\("\\.\\./sleep", \\["\\.\\./sleep", "0"\\], 0x[[:xdigit:]]* /\\* [[:digit:]]* vars \\*/\\) = 0
+($t_reg)\\.[[:digit:]]{${precision}} execve\\("\\.\\./sleep", \\["\\.\\./sleep", "0"\\], 0x[[:xdigit:]]* /\\* [[:digit:]]* vars \\*/\\) = 0
 __EOF__
 
 match_grep "$LOG" "$EXP"
index 089ff0647e9359f86f6a27cae5841a5931319ffd..2578d874ac601e5e4a6d6db283e749645b4d1e80 100755 (executable)
@@ -2,18 +2,22 @@
 #
 # Check -ttt option.
 #
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 . "${srcdir=.}/init.sh"
 
+precision="${1:-6}"
+[ x0 = "x$#" ] || shift
+opts="${*:--ttt}"
+
 run_prog_skip_if_failed date +%s > /dev/null
 run_prog ../sleep 0
 
 s0="$(date +%s)"
-run_strace -ttt -eexecve $args
+run_strace $opts -eexecve $args
 s1="$(date +%s)"
 
 s="$s0"
@@ -23,8 +27,14 @@ while [ "$s" -le "$s1" ]; do
        s=$(($s + 1))
 done
 
+if [ x0 = "x${precision}" ]; then
+       subsec_re=""
+else
+       subsec_re="\\.[[:digit:]]{${precision}}"
+fi
+
 cat > "$EXP" << __EOF__
-($t_reg)\\.[[:digit:]]{6} execve\\("\\.\\./sleep", \\["\\.\\./sleep", "0"\\], 0x[[:xdigit:]]* /\\* [[:digit:]]+ vars \\*/\\) = 0
+($t_reg)${subsec_re} execve\\("\\.\\./sleep", \\["\\.\\./sleep", "0"\\], 0x[[:xdigit:]]* /\\* [[:digit:]]+ vars \\*/\\) = 0
 __EOF__
 
 match_grep "$LOG" "$EXP"
diff --git a/tests-m32/strace-x.c b/tests-m32/strace-x.c
new file mode 100644 (file)
index 0000000..5d537e9
--- /dev/null
@@ -0,0 +1,82 @@
+/*
+ * Test strace's -x option.
+ *
+ * Copyright (c) 2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#include <stdio.h>
+#include <unistd.h>
+
+#ifndef STRACE_XX
+# define STRACE_XX 0
+#endif
+
+#if STRACE_XX
+# define XOUT(x_, xx_) xx_
+#else
+# define XOUT(x_, xx_) x_
+#endif
+
+int
+main(void)
+{
+       static const struct {
+               const char *path;
+               const char *out;
+       } test_vecs[] = {
+               { "test", XOUT("test", "\\x74\\x65\\x73\\x74") },
+               { "\t\n\v\f\r hi~", XOUT("\\t\\n\\v\\f\\r hi~",
+                 "\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\x68\\x69\\x7e") },
+               { "\t\n\v\f\r\16 hi~", XOUT(
+                 "\\x09\\x0a\\x0b\\x0c\\x0d\\x0e\\x20\\x68\\x69\\x7e",
+                 "\\x09\\x0a\\x0b\\x0c\\x0d\\x0e\\x20\\x68\\x69\\x7e") },
+               { "\10\t\n\v\f\r hi~", XOUT(
+                 "\\x08\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\x68\\x69\\x7e",
+                 "\\x08\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\x68\\x69\\x7e") },
+               { "\t\n\v\f\r\37 hi~", XOUT(
+                 "\\x09\\x0a\\x0b\\x0c\\x0d\\x1f\\x20\\x68\\x69\\x7e",
+                 "\\x09\\x0a\\x0b\\x0c\\x0d\\x1f\\x20\\x68\\x69\\x7e") },
+               { "\t\n\v\f\r hi~\177", XOUT(
+                 "\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\x68\\x69\\x7e\\x7f",
+                 "\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\x68\\x69\\x7e\\x7f") },
+               { "\t\n\v\f\r hi~\222", XOUT(
+                 "\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\x68\\x69\\x7e\\x92",
+                 "\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\x68\\x69\\x7e\\x92") },
+               { "\t\n\v\f\r hi~\377", XOUT(
+                 "\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\x68\\x69\\x7e\\xff",
+                 "\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\x68\\x69\\x7e\\xff") },
+       };
+       static char path[] = "  ";
+
+       const char *rc_str;
+
+       for (size_t i = 0; i < ARRAY_SIZE(test_vecs); i++) {
+               rc_str = sprintrc(chdir(test_vecs[i].path));
+               printf("chdir(\"%s\") = %s\n", test_vecs[i].out, rc_str);
+       }
+
+       for (unsigned char c = 1; c < 255; c++) {
+               path[1] = c;
+               rc_str = sprintrc(chdir(path));
+
+               printf("chdir(");
+#if STRACE_XX
+               print_quoted_hex(path, sizeof(path) - 1);
+#else
+               if (((c < ' ') || (c >= 0x7f)) && (c != '\t') && (c != '\n') &&
+                   (c != '\v') && (c != '\f') && (c != '\r'))
+                       print_quoted_hex(path, sizeof(path) - 1);
+               else
+                       print_quoted_string(path);
+#endif
+               printf(") = %s\n", rc_str);
+       }
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
diff --git a/tests-m32/strace-x.gen.test b/tests-m32/strace-x.gen.test
new file mode 100755 (executable)
index 0000000..231f34c
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace-x -e trace=chdir -x -a 12); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=chdir -x -a 12
diff --git a/tests-m32/strace-xx.c b/tests-m32/strace-xx.c
new file mode 100644 (file)
index 0000000..af37c30
--- /dev/null
@@ -0,0 +1,2 @@
+#define STRACE_XX 1
+#include "strace-x.c"
diff --git a/tests-m32/strace-xx.gen.test b/tests-m32/strace-xx.gen.test
new file mode 100755 (executable)
index 0000000..3deb88c
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace-xx -e trace=chdir -xx -a 18); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=chdir -xx -a 18
index a854182e2e90b2db92a76fdc1484a3bedf710e60..4b032207b4f3ffebc8f54f59142a79d7b97284cc 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_swapon && defined __NR_swapoff
 
index 3ad2368e22a0a08b44a34c397f0c85e6973a7c55..3b66f5a68b8e8f509430a5b98701db443e593235 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of sgetmask and ssetmask syscalls.
  *
  * Copyright (c) 2017-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_sgetmask && defined __NR_ssetmask
 
index 8283a8e243a240f57e704ef935c2fd1d4a4616cf..c47ad842d160c76ce952fb11176166abacdb70c0 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_symlink
 
index be36b941962c5ffaa42e40f0a0a236390c5c7e64..d2d1729bbc962c617253a27b013369747a69e52f 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_symlinkat
 
index e0b654d0b5be962a5e3ffae1daa35d7aee6661d0..db7924beaeee96fce051d43b2f09ef1ef7584d0f 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_sync
 
index 9eba7815259ae0da0c233e1387098853e6192249..0f6d1e3f398afc24bd4df7032c5297ce9ad3dd4d 100644 (file)
@@ -2,6 +2,7 @@
  * Check decoding of sync_file_range syscall.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -9,7 +10,7 @@
 
 #include "tests.h"
 #include <fcntl.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined HAVE_SYNC_FILE_RANGE && defined __NR_sync_file_range
 
index 03af1005646a4a52acabd54a9b8c4394938c856f..d914b28934360eebe91a260ed1444948af488e86 100644 (file)
@@ -2,6 +2,7 @@
  * Check decoding of sync_file_range2 syscall.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -9,7 +10,7 @@
 
 #include "tests.h"
 #include <fcntl.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined HAVE_SYNC_FILE_RANGE && defined  __NR_sync_file_range2
 
index 2e30e6a14d2e4155ff23973e16ec50fb85923408..da43d656e95fa0456c2a9a9ca4985a307559134f 100644 (file)
@@ -3,57 +3,76 @@
 # Define syntax testing primitives.
 #
 # Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 . "${srcdir=.}/init.sh"
 
+log_sfx()
+{
+       printf "%.128s" "$*" | tr -c '0-9A-Za-z-=,' '_'
+}
+
 check_exit_status_and_stderr()
 {
-       $STRACE "$@" 2> "$LOG" &&
-               dump_log_and_fail_with \
-                       "strace $* failed to handle the error properly"
-       match_diff "$LOG" "$EXP" ||
-               dump_log_and_fail_with \
-                       "strace $* failed to print expected diagnostics"
+       local sfx
+       sfx="$1"; shift
+       $STRACE "$@" 2> "$LOG.$sfx" && {
+               cat "$LOG.$sfx" >&2
+               fail_ "strace $* failed to handle the error properly"
+       }
+       match_diff "$LOG.$sfx" "$EXP.$sfx" \
+               "strace $* failed to print expected diagnostics"
 }
 
 check_exit_status_and_stderr_using_grep()
 {
-       $STRACE "$@" 2> "$LOG" &&
-               dump_log_and_fail_with \
-                       "strace $* failed to handle the error properly"
-       match_grep "$LOG" "$EXP" ||
-               dump_log_and_fail_with \
-                       "strace $* failed to print expected diagnostics"
+       local sfx
+       sfx="$1"; shift
+       $STRACE "$@" 2> "$LOG.$sfx" && {
+               cat "$LOG.$sfx" >&2
+               fail_ "strace $* failed to handle the error properly"
+       }
+       match_grep "$LOG.$sfx" "$EXP.$sfx" \
+               "strace $* failed to print expected diagnostics"
 }
 
 check_e()
 {
-       local pattern="$1"; shift
-       cat > "$EXP" << __EOF__
+       local pattern sfx
+       pattern="$1"; shift
+       sfx="$(log_sfx "$*")"
+       cat > "$EXP.$sfx" << __EOF__
 $STRACE_EXE: $pattern
 __EOF__
-       check_exit_status_and_stderr "$@"
+       check_exit_status_and_stderr "$sfx" "$@"
 }
 
 check_e_using_grep()
 {
-       local pattern="$1"; shift
-       cat > "$EXP" << __EOF__
+       local pattern sfx
+       pattern="$1"; shift
+       sfx="$(log_sfx "$*")"
+       cat > "$EXP.$sfx" << __EOF__
 $STRACE_EXE: $pattern
 __EOF__
-       check_exit_status_and_stderr_using_grep "$@"
+       check_exit_status_and_stderr_using_grep "$sfx" "$@"
 }
 
 check_h()
 {
-       local pattern="$1"; shift
-       cat > "$EXP" << __EOF__
-$STRACE_EXE: $pattern
-Try '$STRACE_EXE -h' for more information.
-__EOF__
-       check_exit_status_and_stderr "$@"
+       local patterns sfx
+       patterns="$1"; shift
+       sfx="$(log_sfx "$*")"
+       {
+               local pattern
+               printf '%s\n' "$patterns" |
+                       while read -r pattern; do
+                               printf '%s: %s\n' "$STRACE_EXE" "$pattern"
+                       done
+               printf "Try '%s -h' for more information.\\n" "$STRACE_EXE"
+       } > "$EXP.$sfx"
+       check_exit_status_and_stderr "$sfx" "$@"
 }
diff --git a/tests-m32/syslog-success.c b/tests-m32/syslog-success.c
new file mode 100644 (file)
index 0000000..4374de6
--- /dev/null
@@ -0,0 +1,2 @@
+#define RETVAL_INJECTED 1
+#include "syslog.c"
diff --git a/tests-m32/syslog-success.test b/tests-m32/syslog-success.test
new file mode 100755 (executable)
index 0000000..adc916e
--- /dev/null
@@ -0,0 +1,11 @@
+#!/bin/sh -efu
+
+. "${srcdir=.}/scno_tampering.sh"
+
+run_prog ../syslog-success 0
+for i in 0 23 42; do
+       run_strace -a35 -e trace=syslog -e inject=syslog:retval="${i}" \
+               ../syslog-success "${i}" > "$EXP.$i"
+       mv "$LOG" "$LOG.$i"
+       match_diff "$LOG.$i" "$EXP.$i"
+done
index 363fdf967b7c3f396306f4a995e798d46b35fb5e..a9c3c813ac411f50ebeaf02391cf1d30b9883618 100644 (file)
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_syslog
 
 # include <stdio.h>
 # include <unistd.h>
 
-# define SYSLOG_ACTION_READ 2
+# ifdef RETVAL_INJECTED
+#  define RET_SFX " (INJECTED)"
+# else
+#  define RET_SFX ""
+# endif
+
+bool
+valid_cmd(int cmd)
+{
+       return cmd >= 0 && cmd <= 10;
+}
+
+void
+printstr(const char *s, int cmd, long size)
+{
+       if (size < 0 || !valid_cmd(cmd))
+               printf("%p", s);
+       else if (size == 0)
+               printf("\"\"");
+       else if (size <= DEFAULT_STRLEN)
+               print_quoted_memory(s, size);
+       else {
+               print_quoted_memory(s, DEFAULT_STRLEN);
+               printf("...");
+       }
+}
 
 int
 main(void)
 {
-       const long addr = (long) 0xfacefeeddeadbeefULL;
-       int rc = syscall(__NR_syslog, SYSLOG_ACTION_READ, addr, -1);
-       printf("syslog(SYSLOG_ACTION_READ, %#lx, -1) = %d %s (%m)\n",
-              addr, rc, errno2name());
+       static const struct cmd_str {
+               unsigned int cmd;
+               const char *str;
+       } no_args[] = {
+               { 0,  "0 /* SYSLOG_ACTION_CLOSE */" },
+               { 1,  "1 /* SYSLOG_ACTION_OPEN */" },
+               { 5,  "5 /* SYSLOG_ACTION_CLEAR */" },
+               { 6,  "6 /* SYSLOG_ACTION_CONSOLE_OFF */" },
+               { 7,  "7 /* SYSLOG_ACTION_CONSOLE_ON */" },
+               { 9,  "9 /* SYSLOG_ACTION_SIZE_UNREAD */" },
+               { 10, "10 /* SYSLOG_ACTION_SIZE_BUFFER */" },
+       };
+       static const struct cmd_str two_args[] = {
+               { 0xfeedbeef, "-17973521 /* SYSLOG_ACTION_??? */" },
+               { -1U, "-1 /* SYSLOG_ACTION_??? */" },
+               { 2,  "2 /* SYSLOG_ACTION_READ */" },
+               { 3,  "3 /* SYSLOG_ACTION_READ_ALL */" },
+               { 4,  "4 /* SYSLOG_ACTION_READ_CLEAR */" },
+               { 11, "11 /* SYSLOG_ACTION_??? */" },
+               { (1U << 31) - 1, "2147483647 /* SYSLOG_ACTION_??? */" },
+       };
+       static const struct cmd_str levels[] = {
+               { 0xfeedbeef, "-17973521 /* LOGLEVEL_??? */" },
+               { -1U, "-1 /* LOGLEVEL_??? */" },
+               { 0, "0 /* LOGLEVEL_EMERG */" },
+               { 7, "7 /* LOGLEVEL_DEBUG */" },
+               { 8, "8 /* LOGLEVEL_DEBUG+1 */" },
+               { 9, "9 /* LOGLEVEL_??? */" },
+               { (1U << 31) - 1, "2147483647 /* LOGLEVEL_??? */" },
+       };
+       static const kernel_ulong_t high =
+               (kernel_ulong_t) 0xbadc0ded00000000ULL;
+       static const size_t buf_size = 64;
+
+       const kernel_ulong_t addr = (kernel_ulong_t) 0xfacefeeddeadbeefULL;
+       int rc;
+       char *buf = tail_alloc(buf_size);
+
+       fill_memory(buf, buf_size);
+
+       for (size_t i = 0; i < ARRAY_SIZE(no_args); i++) {
+               rc = syscall(__NR_syslog, high | no_args[i].cmd, addr, -1);
+               printf("syslog(%s) = %s" RET_SFX "\n",
+               no_args[i].str, sprintrc(rc));
+       }
+
+       for (size_t i = 0; i < ARRAY_SIZE(two_args); i++) {
+               rc = syscall(__NR_syslog, high | two_args[i].cmd, NULL, -1);
+               printf("syslog(%s, NULL, -1) = %s" RET_SFX "\n",
+                      two_args[i].str, sprintrc(rc));
+
+# ifdef RETVAL_INJECTED
+               /* Avoid valid commands with a bogus address */
+               if (!valid_cmd(two_args[i].cmd))
+# endif
+               {
+                       rc = syscall(__NR_syslog, high | two_args[i].cmd, addr,
+                                    -1);
+                       printf("syslog(%s, %#llx, -1) = %s" RET_SFX "\n",
+                              two_args[i].str, (unsigned long long) addr,
+                              sprintrc(rc));
+
+                       rc = syscall(__NR_syslog, two_args[i].cmd, addr, 0);
+
+                       printf("syslog(%s, %s, 0) = %s" RET_SFX "\n",
+                              two_args[i].str,
+                              !rc && valid_cmd(two_args[i].cmd)
+                                  && (sizeof(kernel_ulong_t) == sizeof(void *))
+                                     ? "\"\""
+                                     : (sizeof(addr) == 8)
+                                       ? "0xfacefeeddeadbeef" : "0xdeadbeef",
+                              sprintrc(rc));
+               }
+
+               rc = syscall(__NR_syslog, two_args[i].cmd, buf, buf_size);
+               const char *errstr = sprintrc(rc);
+
+               printf("syslog(%s, ", two_args[i].str);
+               if (rc >= 0 && valid_cmd(two_args[i].cmd))
+                       printstr(buf, two_args[i].cmd, rc);
+               else
+                       printf("%p", buf);
+               printf(", %zu) = %s" RET_SFX "\n", buf_size, errstr);
+       }
+
+       for (size_t i = 0; i < ARRAY_SIZE(levels); i++) {
+               rc = syscall(__NR_syslog, high | 8, addr, levels[i].cmd);
+               printf("syslog(8 /* SYSLOG_ACTION_CONSOLE_LEVEL */, %#llx, %s)"
+                      " = %s" RET_SFX "\n",
+                      (unsigned long long) addr, levels[i].str, sprintrc(rc));
+       }
 
        puts("+++ exited with 0 +++");
        return 0;
index 5707a3e2a4570fa132317ed1757c5118f40dbff7..673b0180f04fa76e167b4096c661cac62b253800 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (syslog -a36 ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (syslog -a35 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a36 
+run_strace_match_diff -a35 
index 2137c3514fe1f8490421e816e7e0e7f5d1d29049..d620bb8fed4ffe74948d3946404096ca83b5f85e 100644 (file)
@@ -2,13 +2,14 @@
  * This file is part of tee strace test.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_tee
 
index d41ddf0a0a0e0d9c63c79c37d13c0c1162d2f093..2bda35fc9bfb771e37a859d66e5f80b75afa7640 100755 (executable)
@@ -2,7 +2,7 @@
 #
 # Check termination signal forwarding.
 #
-# Copyright (c) 2017-2018 The strace developers.
+# Copyright (c) 2017-2019 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 run_expect_termsig="../run_expect_termsig 15"
 unblock_reset_raise="../unblock_reset_raise 15"
+block_reset_run="../block_reset_run 15"
+orig_STRACE="$STRACE"
 
+run_prog $run_expect_termsig $block_reset_run $unblock_reset_raise
 run_prog $run_expect_termsig $unblock_reset_raise
-STRACE="$run_expect_termsig $STRACE"
 
+STRACE="$run_expect_termsig $orig_STRACE"
+for i in 1 2 3 4; do
+       run_strace -I$i -enone -esignal=none $unblock_reset_raise
+done
+
+STRACE="$run_expect_termsig $block_reset_run $orig_STRACE"
 for i in 1 2 3 4; do
        run_strace -I$i -enone -esignal=none $unblock_reset_raise
 done
index 8b8c66b8d645abfb406bb1f05482c2c4e3b7d168..5a97382f59c8ad947e94d6de8e40c61e283dcb5e 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 #include "netlink.h"
 #include <linux/rtnetlink.h>
 
+#ifndef PRINT_SOCK
+# define PRINT_SOCK 0
+#endif
+
 static void
 init_nlattr(struct nlattr *const nla,
            const uint16_t nla_len,
@@ -37,6 +41,29 @@ print_nlattr(const unsigned int nla_len, const char *const nla_type, bool add_da
               add_data ? "[" : "", nla_len, nla_type);
 }
 
+static void
+print_sockfd(int sockfd, const char *pfx, const char *sfx)
+{
+#if PRINT_SOCK
+       static int fd = -1;
+       static unsigned long inode;
+
+       if (sockfd < 0) {
+               printf("%s%d%s", pfx, sockfd, sfx);
+               return;
+       }
+
+       if (sockfd != fd) {
+               fd = sockfd;
+               inode = inode_of_sockfd(fd);
+       }
+
+       printf("%s%d<socket:[%lu]>%s", pfx, sockfd, inode, sfx);
+#else
+       printf("%s%d%s", pfx, sockfd, sfx);
+#endif
+}
+
 #define TEST_NLATTR_EX_(fd_, nlh0_, hdrlen_,                           \
                     init_msg_, print_msg_,                             \
                     nla_type_, nla_type_str_,                          \
@@ -60,7 +87,7 @@ print_nlattr(const unsigned int nla_len, const char *const nla_type, bool add_da
                        sprintrc(sendto((fd_), nlh, msg_len,            \
                                        MSG_DONTWAIT, NULL, 0));        \
                                                                        \
-               printf("sendto(%d, {", (fd_));                          \
+               print_sockfd((fd_), "sendto(", ", {");                  \
                (print_msg_)(msg_len);                                  \
                print_nlattr(nla_len, (nla_type_str_),                  \
                             (nla_total_len_) > (nla_data_len_));       \
@@ -96,11 +123,9 @@ print_nlattr(const unsigned int nla_len, const char *const nla_type, bool add_da
 #define TEST_NLATTR_OBJECT_EX_(fd_, nlh0_, hdrlen_,                    \
                               init_msg_, print_msg_,                   \
                               nla_type_, nla_type_str_,                \
-                              pattern_, obj_, fallback_func, ...)      \
+                              pattern_, obj_, minsz_, fallback_func, ...) \
        do {                                                            \
-               const unsigned int plen =                               \
-                       sizeof(obj_) - 1 > DEFAULT_STRLEN               \
-                       ? DEFAULT_STRLEN : (int) sizeof(obj_) - 1;      \
+               const unsigned int plen = MIN((minsz_) - 1, DEFAULT_STRLEN); \
                /* len < sizeof(obj_) */                                \
                if (plen > 0)                                           \
                        TEST_NLATTR_((fd_), (nlh0_), (hdrlen_),         \
@@ -113,7 +138,7 @@ print_nlattr(const unsigned int nla_len, const char *const nla_type, bool add_da
                        (init_msg_), (print_msg_),                      \
                        (nla_type_), (nla_type_str_),                   \
                        sizeof(obj_),                                   \
-                       (pattern_), sizeof(obj_) - 1,                   \
+                       (pattern_), (minsz_) - 1,                       \
                        printf("%p",                                    \
                               RTA_DATA(NLMSG_ATTR(nlh, (hdrlen_)))));  \
                /* sizeof(obj_) */                                      \
@@ -128,12 +153,12 @@ print_nlattr(const unsigned int nla_len, const char *const nla_type, bool add_da
 #define TEST_NLATTR_OBJECT_EX(fd_, nlh0_, hdrlen_,                     \
                              init_msg_, print_msg_,                    \
                              nla_type_,                                \
-                             pattern_, obj_, fallback_func, ...)       \
+                             pattern_, obj_, minsz_, fallback_func, ...) \
        TEST_NLATTR_OBJECT_EX_((fd_), (nlh0_), (hdrlen_),               \
                               (init_msg_), (print_msg_),               \
                               (nla_type_), #nla_type_,                 \
-                              (pattern_), (obj_), (fallback_func),     \
-                              __VA_ARGS__)
+                              (pattern_), (obj_), (minsz_),            \
+                              (fallback_func), __VA_ARGS__)
 
 #define TEST_NLATTR_OBJECT(fd_, nlh0_, hdrlen_,                                \
                           init_msg_, print_msg_,                       \
@@ -141,8 +166,17 @@ print_nlattr(const unsigned int nla_len, const char *const nla_type, bool add_da
        TEST_NLATTR_OBJECT_EX_((fd_), (nlh0_), (hdrlen_),               \
                               (init_msg_), (print_msg_),               \
                               (nla_type_), #nla_type_,                 \
-                              (pattern_), (obj_), print_quoted_hex,    \
-                              __VA_ARGS__)
+                              (pattern_), (obj_), sizeof(obj_),        \
+                              print_quoted_hex, __VA_ARGS__)
+
+#define TEST_NLATTR_OBJECT_MINSZ(fd_, nlh0_, hdrlen_,                  \
+                          init_msg_, print_msg_,                       \
+                          nla_type_, pattern_, obj_, minsz_, ...)      \
+       TEST_NLATTR_OBJECT_EX_((fd_), (nlh0_), (hdrlen_),               \
+                              (init_msg_), (print_msg_),               \
+                              (nla_type_), #nla_type_,                 \
+                              (pattern_), (obj_), (minsz_),            \
+                              print_quoted_hex, __VA_ARGS__)
 
 #define TEST_NLATTR_ARRAY(fd_, nlh0_, hdrlen_,                         \
                          init_msg_, print_msg_,                        \
index 09c438d1d64c548d7af031fb5b7044a25b63e058..9e9a543c1d5ee4a6bebf6e15111554d1fda2e956 100644 (file)
@@ -2,7 +2,7 @@
  * Test printstrn/umoven.
  *
  * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -13,7 +13,6 @@
 #include <stdio.h>
 #include <string.h>
 #include <unistd.h>
-#include <asm/unistd.h>
 
 #include "scno.h"
 #include "test_ucopy.h"
index 78d393b200fd4e74e720689501d9d0216053e052..0574c73cb7263d5bbd94d9e71e2041f02990203c 100644 (file)
@@ -2,7 +2,7 @@
  * Test whether process_vm_readv and PTRACE_PEEKDATA work.
  *
  * Copyright (c) 2016-2017 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -22,7 +22,6 @@
 
 #ifndef HAVE_PROCESS_VM_READV
 
-# include <asm/unistd.h>
 # include "scno.h"
 static ssize_t
 strace_process_vm_readv(pid_t pid,
index 1a1b02c3a71f27c3fe69ed48c4256811ed330824..66c7f0e65fc63ac83496e29cea238317ef559b8d 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2019 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -24,6 +24,7 @@
 # endif
 
 # include <stdbool.h>
+# include <stdint.h>
 # include <sys/types.h>
 # include "kernel_types.h"
 # include "gcc_compat.h"
 #  define XLAT_VERBOSE 0
 # endif
 
+
+
+# if XLAT_RAW
+#  define XLAT_KNOWN(val_, str_) STRINGIFY_VAL(val_)
+#  define XLAT_UNKNOWN(val_, dflt_) STRINGIFY_VAL(val_)
+
+#  define XLAT_FMT "%#x"
+#  define XLAT_ARGS(a_) (a_)
+#  define XLAT_SEL(v_, s_) v_
+
+#  define ABBR(s_) ""
+#  define RAW(s_) s_
+#  define VERB(s_) ""
+#  define NABBR(s_) s_
+#  define NRAW(s_) ""
+#  define NVERB(s_) s_
+# elif XLAT_VERBOSE
+#  define XLAT_KNOWN(val_, str_) STRINGIFY_VAL(val_) " /* " str_ " */"
+#  define XLAT_UNKNOWN(val_, dflt_) STRINGIFY_VAL(val_) " /* " dflt_ " */"
+
+#  define XLAT_FMT "%#x /* %s */"
+#  define XLAT_ARGS(a_) a_, #a_
+#  define XLAT_SEL(v_, s_) v_, s_
+
+#  define ABBR(s_) ""
+#  define RAW(s_) ""
+#  define VERB(s_) s_
+#  define NABBR(s_) s_
+#  define NRAW(s_) s_
+#  define NVERB(s_) ""
+# else /* !XLAT_RAW && !XLAT_VERBOSE */
+#  define XLAT_KNOWN(val_, str_) str_
+#  define XLAT_UNKNOWN(val_, dflt_) STRINGIFY_VAL(val_) " /* " dflt_ " */"
+
+#  define XLAT_FMT "%s"
+#  define XLAT_ARGS(a_) #a_
+#  define XLAT_SEL(v_, s_) s_
+
+#  define ABBR(s_) s_
+#  define RAW(s_) ""
+#  define VERB(s_) ""
+#  define NABBR(s_) ""
+#  define NRAW(s_) s_
+#  define NVERB(s_) s_
+# endif /* XLAT_RAW, XLAT_VERBOSE */
+
+# define XLAT_STR(v_) sprintxlat(#v_, v_, NULL)
+
+# define ARG_XLAT_KNOWN(val_, str_) val_, XLAT_KNOWN(val_, str_)
+# define ARG_XLAT_UNKNOWN(val_, str_) val_, XLAT_UNKNOWN(val_, str_)
+
 # ifndef DEFAULT_STRLEN
 /* Default maximum # of bytes printed in printstr et al. */
 #  define DEFAULT_STRLEN 32
 # endif
 
+struct strval32 {
+       uint32_t val;
+       const char *str;
+};
+
+struct strval64 {
+       uint64_t val;
+       const char *str;
+};
+
 /* Cached sysconf(_SC_PAGESIZE). */
 size_t get_page_size(void);
 
@@ -86,6 +148,12 @@ void perror_msg_and_skip(const char *, ...)
 /* Stat the specified file and skip the test if the stat call failed. */
 void skip_if_unavailable(const char *);
 
+/*
+ * Obtain an exclusive lock on dirname(path_name)/lock_name file
+ * using open and flock.
+ */
+int lock_file_by_dirname(const char *path_name, const char *lock_name);
+
 /*
  * Allocate memory that ends on the page boundary.
  * Pages allocated by this call are preceded by an unmapped page
@@ -116,15 +184,26 @@ void *tail_memdup(const void *, const size_t)
 # define TAIL_ALLOC_OBJECT_VAR_PTR(type_name, type_ptr)                \
        type_name *type_ptr = tail_alloc(sizeof(*type_ptr))
 
-/*
+/**
  * Fill memory (pointed by ptr, having size bytes) with different bytes (with
  * values starting with start and resetting every period) in order to catch
  * sign, byte order and/or alignment errors.
  */
 void fill_memory_ex(void *ptr, size_t size, unsigned char start,
                    unsigned int period);
-/* Shortcut for fill_memory_ex(ptr, size, 0x80, 0x80) */
+/** Shortcut for fill_memory_ex(ptr, size, 0x80, 0x80) */
 void fill_memory(void *ptr, size_t size);
+/** Variant of fill_memory_ex for arrays of 16-bit (2-byte) values. */
+void fill_memory16_ex(void *ptr, size_t size, uint16_t start,
+                     unsigned int period);
+/** Shortcut for fill_memory16_ex(ptr, size, 0x80c0, 0x8000) */
+void fill_memory16(void *ptr, size_t size);
+/** Variant of fill_memory_ex for arrays of 32-bit (4-byte) values. */
+void fill_memory32_ex(void *ptr, size_t size, uint32_t start,
+                     unsigned int period);
+/** Shortcut for fill_memory32_ex(ptr, size, 0x80a0c0e0, 0x80000000) */
+void fill_memory32(void *ptr, size_t size);
+
 
 /* Close stdin, move stdout to a non-standard descriptor, and print. */
 void tprintf(const char *, ...)
@@ -202,12 +281,49 @@ struct xlat;
 int printflags(const struct xlat *, const unsigned long long, const char *);
 
 /* Print constant in symbolic form according to xlat table. */
-int printxval(const struct xlat *, const unsigned long long, const char *);
+int printxval_abbrev(const struct xlat *, const unsigned long long,
+                    const char *);
+int printxval_raw(const struct xlat *, const unsigned long long, const char *);
+int printxval_verbose(const struct xlat *, const unsigned long long,
+                     const char *);
+
+/* Print constant in symbolic form according to xlat table. */
+const char *sprintxlat_abbrev(const char *, const unsigned long long,
+                          const char *);
+const char *sprintxlat_raw(const char *, const unsigned long long,
+                          const char *);
+const char *sprintxlat_verbose(const char *, const unsigned long long,
+                              const char *);
+
+/* Print constant in symbolic form according to xlat table. */
+const char *sprintxval_abbrev(const struct xlat *, const unsigned long long,
+                             const char *);
+const char *sprintxval_raw(const struct xlat *, const unsigned long long,
+                          const char *);
+const char *sprintxval_verbose(const struct xlat *, const unsigned long long,
+                              const char *);
+
+# if XLAT_RAW
+#  define printxval  printxval_raw
+#  define sprintxlat sprintxlat_raw
+#  define sprintxval sprintxval_raw
+# elif XLAT_VERBOSE
+#  define printxval  printxval_verbose
+#  define sprintxlat sprintxlat_verbose
+#  define sprintxval sprintxval_verbose
+# else
+#  define printxval  printxval_abbrev
+#  define sprintxlat sprintxlat_abbrev
+#  define sprintxval sprintxval_abbrev
+# endif
 
 /* Invoke a socket syscall, either directly or via __NR_socketcall. */
 int socketcall(const int nr, const int call,
               long a1, long a2, long a3, long a4, long a5);
 
+/* Call chdir and print strace output depending on flags. */
+void test_status_chdir(const char *dir, bool print_success, bool print_fail);
+
 /* Wrappers for recvmmsg and sendmmsg syscalls. */
 struct mmsghdr;
 struct timespec;
@@ -218,6 +334,9 @@ int send_mmsg(int, struct mmsghdr *, unsigned int, unsigned int);
 int create_nl_socket_ext(int proto, const char *name);
 # define create_nl_socket(proto)       create_nl_socket_ext((proto), #proto)
 
+/* Create a temporary file in the current directory. */
+int create_tmpfile(unsigned int flags);
+
 /* Create a pipe with maximized descriptor numbers. */
 void pipe_maxfd(int pipefd[2]);
 
@@ -236,7 +355,7 @@ unsigned int ifindex_lo(void);
 /*
  * For 64-bit kernel_ulong_t and 32-bit pointer,
  * return a kernel_ulong_t value by filling higher bits.
- * For other architertures, return the original pointer.
+ * For other architectures, return the original pointer.
  */
 static inline kernel_ulong_t
 f8ill_ptr_to_kulong(const void *const ptr)
diff --git a/tests-m32/tgkill--pidns-translation.c b/tests-m32/tgkill--pidns-translation.c
new file mode 100644 (file)
index 0000000..c3ac2d0
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "tgkill.c"
diff --git a/tests-m32/tgkill--pidns-translation.gen.test b/tests-m32/tgkill--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..8f72925
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (tgkill--pidns-translation test_pidns -a15 --signal='!cont' -e trace=tgkill); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a15 --signal='!cont' -e trace=tgkill
diff --git a/tests-m32/tgkill.c b/tests-m32/tgkill.c
new file mode 100644 (file)
index 0000000..10816a6
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * Check decoding of tgkill syscall.
+ *
+ * Copyright (c) 2020 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+#include "pidns.h"
+
+#ifdef __NR_tgkill
+
+# include <signal.h>
+# include <stdio.h>
+# include <unistd.h>
+
+static const char *errstr;
+
+static long
+k_tgkill(const unsigned int tgid,
+        const unsigned int tid,
+        const unsigned int sig)
+{
+        const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+        const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+        const kernel_ulong_t arg1 = fill | tgid;
+        const kernel_ulong_t arg2 = fill | tid;
+        const kernel_ulong_t arg3 = fill | sig;
+        const long rc = syscall(__NR_tgkill, arg1, arg2, arg3, bad, bad, bad);
+        errstr = sprintrc(rc);
+        return rc;
+}
+
+int
+main(void)
+{
+       PIDNS_TEST_INIT;
+
+       const int pid = getpid();
+       const char *pid_str = pidns_pid2str(PT_TGID);
+       const int tid = syscall(__NR_gettid);
+       const char *tid_str = pidns_pid2str(PT_TID);
+       const int bad_pid = -1;
+       const int bad_sig = 0xface;
+
+       k_tgkill(pid, tid, 0);
+       pidns_print_leader();
+       printf("tgkill(%d%s, %d%s, 0) = %s\n",
+               pid, pid_str, tid, tid_str, errstr);
+
+       k_tgkill(pid, bad_pid, 0);
+       pidns_print_leader();
+       printf("tgkill(%d%s, %d, 0) = %s\n",
+               pid, pid_str, bad_pid, errstr);
+
+       k_tgkill(bad_pid, tid, 0);
+       pidns_print_leader();
+       printf("tgkill(%d, %d%s, 0) = %s\n",
+               bad_pid, tid, tid_str, errstr);
+
+       k_tgkill(pid, tid, SIGCONT);
+       pidns_print_leader();
+       printf("tgkill(%d%s, %d%s, SIGCONT) = %s\n",
+               pid, pid_str, tid, tid_str, errstr);
+
+       k_tgkill(pid, tid, bad_sig);
+       pidns_print_leader();
+       printf("tgkill(%d%s, %d%s, %d) = %s\n",
+               pid, pid_str, tid, tid_str, bad_sig, errstr);
+
+       k_tgkill(pid, tid, -bad_sig);
+       pidns_print_leader();
+       printf("tgkill(%d%s, %d%s, %d) = %s\n",
+               pid, pid_str, tid, tid_str, -bad_sig, errstr);
+
+       pidns_print_leader();
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_tgkill")
+
+#endif
diff --git a/tests-m32/tgkill.gen.test b/tests-m32/tgkill.gen.test
new file mode 100755 (executable)
index 0000000..6ad0e48
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (tgkill -a15 --signal='!cont'); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a15 --signal='!cont'
diff --git a/tests-m32/threads-execve--quiet-thread-execve.c b/tests-m32/threads-execve--quiet-thread-execve.c
new file mode 100644 (file)
index 0000000..9811b7b
--- /dev/null
@@ -0,0 +1,2 @@
+#define PRINT_SUPERSEDED 0
+#include "threads-execve.c"
diff --git a/tests-m32/threads-execve--quiet-thread-execve.gen.test b/tests-m32/threads-execve--quiet-thread-execve.gen.test
new file mode 100755 (executable)
index 0000000..24ed8ae
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (threads-execve--quiet-thread-execve +threads-execve.test -s40 --quiet=personality,thread-execve); do not edit.
+set -- -s40 --quiet=personality,thread-execve
+. "${srcdir=.}/threads-execve.test"
diff --git a/tests-m32/threads-execve-q.c b/tests-m32/threads-execve-q.c
new file mode 100644 (file)
index 0000000..a6627b7
--- /dev/null
@@ -0,0 +1 @@
+#include "threads-execve.c"
diff --git a/tests-m32/threads-execve-q.gen.test b/tests-m32/threads-execve-q.gen.test
new file mode 100755 (executable)
index 0000000..9865efe
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (threads-execve-q +threads-execve.test -q); do not edit.
+set -- -q
+. "${srcdir=.}/threads-execve.test"
diff --git a/tests-m32/threads-execve-qq.c b/tests-m32/threads-execve-qq.c
new file mode 100644 (file)
index 0000000..2dc806d
--- /dev/null
@@ -0,0 +1,2 @@
+#define PRINT_EXITED 0
+#include "threads-execve.c"
diff --git a/tests-m32/threads-execve-qq.gen.test b/tests-m32/threads-execve-qq.gen.test
new file mode 100755 (executable)
index 0000000..515ac44
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (threads-execve-qq +threads-execve.test -qq); do not edit.
+set -- -qq
+. "${srcdir=.}/threads-execve.test"
diff --git a/tests-m32/threads-execve-qqq.c b/tests-m32/threads-execve-qqq.c
new file mode 100644 (file)
index 0000000..c8e3291
--- /dev/null
@@ -0,0 +1,3 @@
+#define PRINT_SUPERSEDED 0
+#define PRINT_EXITED 0
+#include "threads-execve.c"
diff --git a/tests-m32/threads-execve-qqq.gen.test b/tests-m32/threads-execve-qqq.gen.test
new file mode 100755 (executable)
index 0000000..4a6641f
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (threads-execve-qqq +threads-execve.test -qqq); do not edit.
+set -- -qqq
+. "${srcdir=.}/threads-execve.test"
index 56fab5290dafe54dfdd50eab6f2e8f1ee9b7447a..3c13e29ac143ef81bd777ad0d552ccc47827239b 100644 (file)
@@ -2,21 +2,33 @@
  * Check decoding of threads when a non-leader thread invokes execve.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2019 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
-#include <errno.h>
-#include <pthread.h>
-#include <signal.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-#include <unistd.h>
+#include "scno.h"
+
+#ifdef __NR_nanosleep
+
+# include <errno.h>
+# include <pthread.h>
+# include <signal.h>
+# include <stdio.h>
+# include <stdlib.h>
+# include <time.h>
+# include <unistd.h>
+
+# include "kernel_old_timespec.h"
+
+# ifndef PRINT_EXITED
+#  define PRINT_EXITED 1
+# endif
+# ifndef PRINT_SUPERSEDED
+#  define PRINT_SUPERSEDED 1
+# endif
 
 static pid_t leader;
 static pid_t tid;
@@ -110,9 +122,9 @@ thread(void *arg)
        struct timespec ts = { .tv_nsec = 100000000 };
        (void) clock_nanosleep(CLOCK_REALTIME, 0, &ts, NULL);
 
-       ts.tv_nsec = 12345;
+       kernel_old_timespec_t ots = { .tv_nsec = 12345 };
        printf("%-5d nanosleep({tv_sec=0, tv_nsec=%u}, NULL) = 0\n",
-              tid, (unsigned int) ts.tv_nsec);
+              tid, (unsigned int) ots.tv_nsec);
 
        switch (action % NUMBER_OF_ACTIONS) {
                case ACTION_exit:
@@ -140,12 +152,12 @@ thread(void *arg)
                        break;
        }
 
-       printf("%-5d +++ superseded by execve in pid %u +++\n"
-              "%-5d <... execve resumed>) = 0\n",
-              leader, tid,
-              leader);
+# if PRINT_SUPERSEDED
+       printf("%-5d +++ superseded by execve in pid %u +++\n", leader, tid);
+# endif
+       printf("%-5d <... execve resumed>) = 0\n", leader);
 
-       (void) nanosleep(&ts, NULL);
+       (void) syscall(__NR_nanosleep, (unsigned long) &ots, 0UL);
        execve(argv[0], argv, environ);
        perror_msg_and_fail("execve");
 }
@@ -178,7 +190,9 @@ main(int ac, char **av)
        action = atoi(av[2]);
 
        if (action >= NUMBER_OF_ACTIONS * NUMBER_OF_ITERATIONS) {
+# if PRINT_EXITED
                printf("%-5d +++ exited with 0 +++\n", leader);
+# endif
                return 0;
        }
 
@@ -190,7 +204,7 @@ main(int ac, char **av)
        if (errno)
                perror_msg_and_fail("pthread_create");
 
-       struct timespec ts = { .tv_sec = 123 };
+       kernel_old_timespec_t ots = { .tv_sec = 123 };
        sigset_t mask;
        sigemptyset(&mask);
 
@@ -214,11 +228,18 @@ main(int ac, char **av)
                case ACTION_nanosleep:
                        printf("%s nanosleep({tv_sec=%u, tv_nsec=0}"
                               ",  <unfinished ...>\n",
-                              leader_str, (unsigned int) ts.tv_sec);
+                              leader_str, (unsigned int) ots.tv_sec);
                        close(fds[1]);
-                       (void) nanosleep(&ts, 0);
+                       (void) syscall(__NR_nanosleep,
+                                      (unsigned long) &ots, 0UL);
                        break;
        }
 
        return 1;
 }
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_nanosleep")
+
+#endif
index 04ce15df19a648ca7ac4f4c48a47ead0f52092d8..de6591038a477ad2903a4a3b37b2d3a9f5ca5560 100755 (executable)
@@ -3,7 +3,7 @@
 # Check decoding of threads when a non-leader thread invokes execve.
 #
 # Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2016-2019 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 # The kernel before commit v3.1-rc1~308^2~7 reported 0 instead of old pid.
 require_min_kernel_version_or_skip 3.1
 
+# This test requires some concurrency between threads.
+require_min_nproc 2
+
+opts="${*:-}"
+
 check_prog diff
 run_prog_skip_if_failed date +%s > /dev/null
 s0="$(date +%s)"
 
 run_prog > /dev/null
 
-set -- -a21 -f -esignal=none -e trace=execve,exit,nanosleep,rt_sigsuspend $args
+set -- -a21 -f -esignal=none -e trace=execve,exit,nanosleep,rt_sigsuspend $opts $args
 
 # Due to probabilistic nature of the test, try it several times.
 while :; do
index 330c884610351161f960c817026838b3ff6d0904..f41d7fdbb7411217ad30f22fd4c360658cba287f 100644 (file)
@@ -2,14 +2,14 @@
  * This file is part of time strace test.
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_time
 
index c9c64813a066197563ac92ebe179e041b5eb159b..2c4dae19bd25d72eadeb934ef4869e222c0e61a9 100644 (file)
@@ -2,13 +2,14 @@
  * This file is part of timer_create strace test.
  *
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_timer_create
 
index 17390c2d302a2e706a930dccf8d2a269bb9b9995..04d037b2fe242e9bbbe1ca9429c990d632e47bfb 100644 (file)
@@ -2,14 +2,14 @@
  * This file is part of timer_xettime strace test.
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_timer_create \
  && defined __NR_timer_gettime \
index 7361667747e28be21732b6a0c1d888bd4e069018..96d4c68248dfc7c2780e9b5630b4bff50da8a55a 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -8,7 +8,7 @@
 
 #include "tests.h"
 #include <fcntl.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_timerfd_create \
  && defined __NR_timerfd_gettime \
index 551803df7b95602ddf884e2f47fcacd66cb71891..940966d5fc01531444a6abf60aa8e4edc8106a43 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -9,7 +9,7 @@
 #include <assert.h>
 #include <stdio.h>
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 int
 main(void)
index a390dde47ce5dfb61d992f10a44e8b3d864b6b3c..06a0f25789f4364c389540d242d8dcf3ccba8823 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2015 Eugene Syromyatnikov <evgsyr@gmail.com>
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 #include <time.h>
 #include <unistd.h>
 
-#include <asm/unistd.h>
+#include "scno.h"
 #include <sys/times.h>
 #include <sys/wait.h>
 
 enum {
-       NUM_USER_ITERS = 1000000,
+       NUM_USER_ITERS_SQRT = 1000,
+       NUM_USER_ITERS = NUM_USER_ITERS_SQRT * NUM_USER_ITERS_SQRT,
        PARENT_CPUTIME_LIMIT_NSEC = 200000000,
        CHILD_CPUTIME_LIMIT_NSEC = 300000000
 };
@@ -48,7 +49,7 @@ main(void)
                if (ts.tv_sec || ts.tv_nsec >= cputime_limit)
                        break;
 
-               if (i && !(ts.tv_sec || ts.tv_nsec))
+               if ((i > NUM_USER_ITERS_SQRT) && !(ts.tv_sec || ts.tv_nsec))
                        error_msg_and_skip("clock_gettime(CLOCK_PROCESS_CPUTIME_ID, {0, 0})");
 
                for (i = 0; i < NUM_USER_ITERS; ++i)
diff --git a/tests-m32/tkill--pidns-translation.c b/tests-m32/tkill--pidns-translation.c
new file mode 100644 (file)
index 0000000..70a64f5
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "tkill.c"
diff --git a/tests-m32/tkill--pidns-translation.gen.test b/tests-m32/tkill--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..14c2fb3
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (tkill--pidns-translation test_pidns --signal='!cont' -a12 -e trace=tkill); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns --signal='!cont' -a12 -e trace=tkill
diff --git a/tests-m32/tkill.c b/tests-m32/tkill.c
new file mode 100644 (file)
index 0000000..89466e1
--- /dev/null
@@ -0,0 +1,69 @@
+/*
+ * Check decoding of tkill syscall.
+ *
+ * Copyright (c) 2020 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+#include "pidns.h"
+
+#ifdef __NR_tkill
+
+# include <signal.h>
+# include <stdio.h>
+# include <unistd.h>
+
+static const char *errstr;
+
+static long
+k_tkill(const unsigned int tid, const unsigned int sig)
+{
+        const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+        const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+        const kernel_ulong_t arg1 = fill | tid;
+        const kernel_ulong_t arg2 = fill | sig;
+        const long rc = syscall(__NR_tkill, arg1, arg2, bad, bad, bad, bad);
+        errstr = sprintrc(rc);
+        return rc;
+}
+
+int
+main(void)
+{
+       PIDNS_TEST_INIT;
+
+       const int tid = syscall(__NR_gettid);
+       const char *tid_str = pidns_pid2str(PT_TID);
+       const int bad_pid = -1;
+       const int bad_sig = 0xface;
+
+       k_tkill(tid, 0);
+       pidns_print_leader();
+       printf("tkill(%d%s, 0) = %s\n", tid, tid_str, errstr);
+
+       k_tkill(tid, SIGCONT);
+       pidns_print_leader();
+       printf("tkill(%d%s, SIGCONT) = %s\n", tid, tid_str, errstr);
+
+       k_tkill(bad_pid, bad_sig);
+       pidns_print_leader();
+       printf("tkill(%d, %d) = %s\n", bad_pid, bad_sig, errstr);
+
+       k_tkill(bad_pid, -bad_sig);
+       pidns_print_leader();
+       printf("tkill(%d, %d) = %s\n", bad_pid, -bad_sig, errstr);
+
+       pidns_print_leader();
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_tkill")
+
+#endif
diff --git a/tests-m32/tkill.gen.test b/tests-m32/tkill.gen.test
new file mode 100755 (executable)
index 0000000..65e9d96
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (tkill -a12 --signal='!cont'); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a12 --signal='!cont'
diff --git a/tests-m32/trace_clock.gen.test b/tests-m32/trace_clock.gen.test
new file mode 100755 (executable)
index 0000000..e9eea78
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (trace_clock test_trace_expr 'clock_nanosleep|times' -e%clock); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr 'clock_nanosleep|times' -e%clock
diff --git a/tests-m32/trace_clock.in b/tests-m32/trace_clock.in
new file mode 100644 (file)
index 0000000..511ec8e
--- /dev/null
@@ -0,0 +1,5 @@
+adjtimex -a13
+clock_adjtime -a21
+clock_xettime -a21
+xettimeofday -a20
+time -a9
diff --git a/tests-m32/trace_creds.gen.test b/tests-m32/trace_creds.gen.test
new file mode 100755 (executable)
index 0000000..d8cd589
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (trace_creds test_trace_expr '([gs]et[^p]*([gu]id|groups)|caps|prctl|[fl]?chown|print(path-umovestr|strn-umoven)-undumpable|ptrace|quotactl|rt_sigtimedwait|rt_(tg)?sigqueueinfo).*' -e%creds); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr '([gs]et[^p]*([gu]id|groups)|caps|prctl|[fl]?chown|print(path-umovestr|strn-umoven)-undumpable|ptrace|quotactl|rt_sigtimedwait|rt_(tg)?sigqueueinfo).*' -e%creds
diff --git a/tests-m32/trace_creds.in b/tests-m32/trace_creds.in
new file mode 100644 (file)
index 0000000..ce78253
--- /dev/null
@@ -0,0 +1,8 @@
+getgroups      -a17
+getgroups32    -a19
+getresgid      -a25
+getresgid32    -a27
+getresuid      -a25
+getresuid32    -a27
+setgroups      -s2 -a17
+setgroups32    -s2 -a19
index 3fde131dd17d6c39495d7bf09a1c6b13373fecca..9d7b51bbd66f0f08506228c6a76f0ae2824aca55 100644 (file)
@@ -9,3 +9,4 @@ fstat64-Xverbose        -a17 -Xverbose
 fstatat64      -a32
 newfstatat     -a32
 oldfstat       -a21
+statx  -a32
index abbabc49c30a314130c86734a985ad613b217f8f..ca9f131891178a9ad2ba7c0253be8e4b3d6e5939 100644 (file)
@@ -1,3 +1,3 @@
-lstat  -a32
+lstat  -a31
 lstat64        -a32
 oldlstat       -a32
index f105d78485cd01393f4422846cbea91785c23a85..75633050698804516d9be7a63de96fa1d2cdb4e5 100644 (file)
@@ -1,3 +1,3 @@
 oldstat        -a32
-stat   -a32
+stat   -a30
 stat64 -a32
diff --git a/tests-m32/tracer_ppid_pgid_sid.c b/tests-m32/tracer_ppid_pgid_sid.c
new file mode 100644 (file)
index 0000000..69687fa
--- /dev/null
@@ -0,0 +1,92 @@
+/*
+ * Helper program for strace-DDD.test
+ *
+ * Copyright (c) 2019-2020 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <ctype.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+static int
+fetch_tracer_pid(const char *str)
+{
+       for (; isspace(*str); ++str)
+               ;
+       return atoi(str);
+}
+
+static int
+get_tracer_pid(void)
+{
+       static const char status[] = "/proc/self/status";
+       FILE *fp = fopen(status, "r");
+       if (!fp)
+               perror_msg_and_fail("fopen: %s", status);
+
+       static const char prefix[] = "TracerPid:";
+       const size_t prefix_len = sizeof(prefix) - 1;
+       const char *str = NULL;
+       char *line = NULL;
+       size_t n = 0;
+
+       while (getline(&line, &n, fp) > 0) {
+               if (strncmp(line, prefix, prefix_len) == 0) {
+                       str = line + prefix_len;
+                       break;
+               }
+       }
+       if (!str && !line)
+               perror_msg_and_fail("getline");
+
+       int pid = str ? fetch_tracer_pid(str) : 0;
+       free(line);
+       fclose(fp);
+
+       return pid;
+}
+
+static void
+get_ppid_pgid_sid(int pid, int *ppid, int *pgid, int *sid)
+{
+       char *stat;
+       if (asprintf(&stat, "/proc/%d/stat", pid) < 0)
+               perror_msg_and_fail("asprintf");
+
+       FILE *fp = fopen(stat, "r");
+       if (!fp)
+               perror_msg_and_fail("fopen: %s", stat);
+       char buf[4096];
+       if (!fgets(buf, sizeof(buf), fp))
+               perror_msg_and_fail("fgets: %s", stat);
+
+       fclose(fp);
+
+       const char *p = strrchr(buf, ')');
+       if (!p)
+               error_msg_and_fail("%s: parenthesis not found", stat);
+       ++p;
+
+       if (sscanf(p, " %*c %d %d %d", ppid, pgid, sid) != 3)
+               error_msg_and_fail("%s: sscanf failed", stat);
+}
+
+int
+main(void)
+{
+       int tracer_pid = get_tracer_pid();
+       if (tracer_pid < 0)
+               error_msg_and_fail("tracer_pid = %d", tracer_pid);
+
+       int ppid = 0, pgid = 0, sid = 0;
+       get_ppid_pgid_sid(tracer_pid, &ppid, &pgid, &sid);
+       printf("%d %d %d %d\n", tracer_pid, ppid, pgid, sid);
+
+       return 0;
+}
diff --git a/tests-m32/trie_for_tests.c b/tests-m32/trie_for_tests.c
new file mode 100644 (file)
index 0000000..13e564c
--- /dev/null
@@ -0,0 +1 @@
+#include "trie.c"
diff --git a/tests-m32/trie_test.c b/tests-m32/trie_test.c
new file mode 100644 (file)
index 0000000..44a35ce
--- /dev/null
@@ -0,0 +1,121 @@
+/*
+ * Copyright (c) 2017-2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "trie.h"
+
+#include <stdio.h>
+#include <inttypes.h>
+
+static void
+assert_equals(const char *msg, uint64_t expected, uint64_t actual) {
+       if (actual != expected)
+               error_msg_and_fail("%s: expected: %" PRIu64
+                                  ", actual: %" PRIu64, msg, expected, actual);
+}
+
+static void
+iterate_fn(void *data, uint64_t key, uint64_t value)
+{
+       uint64_t expected = key < 256 && key % 10 == 0 ? key + 42 : -1ULL;
+       assert_equals("iterate_fn", expected, value);
+
+       int *count = (int *) data;
+       if (value != -1ULL)
+               (*count)++;
+}
+
+static void
+test_trie_iterate_fn(void)
+{
+       struct trie *t = trie_create(8, 6, 3, 3, -1);
+       for (int i = 0; i < 26; i++)
+               trie_set(t, i * 10, i * 10 + 42);
+
+       static const struct {
+               uint64_t start;
+               uint64_t end;
+               int expected_count;
+       } iterate_params[] = {
+               {0, 256, 26},
+               {0, UINT64_MAX, 26},
+               {20, 90, 8},
+               {99, 999, 16},
+               {10000, 100000, 0},
+               {200, 100, 0},
+       };
+
+       for (size_t i = 0; i < ARRAY_SIZE(iterate_params); i++) {
+               int count = 0;
+               trie_iterate_keys(t, iterate_params[i].start, iterate_params[i].end, iterate_fn, &count);
+               assert_equals("iteration count", iterate_params[i].expected_count, count);
+       }
+}
+
+struct key_value_pair {
+       uint64_t key, value;
+};
+
+static void
+test_trie_get(void)
+{
+       static const struct {
+               uint8_t key_size;
+               uint8_t item_size_lg;
+               uint8_t node_key_bits;
+               uint8_t data_block_key_bits;
+               uint64_t empty_value;
+
+               struct key_value_pair set_values[3], get_values[3];
+       } params[] = {
+               {64, 6, 10, 10, 0,
+                       {{300, 1}, {0xfacefeed, 0xabcdef123456}, {-1ULL, -1ULL}},
+                       {{301, 0}, {0xfacefeed, 0xabcdef123456}, {-1ULL, -1ULL}}},
+               {8, 2, 4, 4, 10,
+                       {{0xab, 0xcd}, {0xface, 2}, {0, 3}},
+                       {{0xab, 0xd}, {0xface, 10}, {0, 3}}},
+               {30, 0, 6, 3, -1,
+                       {{0xaaaa, 127}, {0xface, 0}, {0, 0}},
+                       {{0xaaaa, 1}, {0xface, 0}, {1, 1}}},
+               {16, 4, 5, 11, 0xffffff,
+                       {{0xabcdef, 42}, {0xabcd, 42}, {0xffff, 0}},
+                       {{0xabcdef, 0xffff}, {0xabcd, 42}, {0xffff, 0}}},
+               {41, 5, 1, 1, -1,
+                       {{0xabcdef01, 0x22222222}, {-1, 0x33333333}, {10, 10}},
+                       {{0xabcdef01, 0x22222222}, {-1, 0xffffffff}, {10, 10}}},
+       };
+
+       for (size_t i = 0; i < ARRAY_SIZE(params); i++) {
+               struct trie *t = trie_create(params[i].key_size,
+                                            params[i].item_size_lg,
+                                            params[i].node_key_bits,
+                                            params[i].data_block_key_bits,
+                                            params[i].empty_value);
+
+               if (!t)
+                       error_msg_and_fail("trie creation failed");
+
+               for (size_t j = 0; j < ARRAY_SIZE(params[i].set_values); j++) {
+                       struct key_value_pair kv = params[i].set_values[j];
+                       trie_set(t, kv.key, kv.value);
+               }
+               for (size_t j = 0; j < ARRAY_SIZE(params[i].get_values); j++) {
+                       struct key_value_pair kv = params[i].get_values[j];
+                       assert_equals("trie_get", kv.value, trie_get(t, kv.key));
+               }
+
+               trie_free(t);
+       }
+}
+
+int
+main(void)
+{
+       test_trie_get();
+       test_trie_iterate_fn();
+       return 0;
+}
diff --git a/tests-m32/trie_test.gen.test b/tests-m32/trie_test.gen.test
new file mode 100755 (executable)
index 0000000..c097ae5
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (trie_test run_prog ); do not edit.
+. "${srcdir=.}/init.sh"
+run_prog 
index bfb6299b61a739d56405cf339e4cd14bd81eecc6..5204ec040f2d4d86d730a95d712b62dcaf2645c4 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_truncate
 
index 1dceb41445c6cc74a702c273692c8caca2ee10a8..6b071715b9c66245193db00e0c5f86799a06ec2b 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_truncate64
 
index 49627c1f92120f074407976f140015f6dd5dc535..951ab9749ec3b1ae428eb0f3b21e3c87522bb8fc 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_ugetrlimit
 
index cd89aa0bfc3c6ae4762057f72d8940a38b656ad7..74450bc13bbc80df7d99e2bf92322d6331df86c4 100644 (file)
@@ -9,7 +9,7 @@
 #include <stdio.h>
 #include <sys/stat.h>
 #include <sys/mount.h>
-#include <asm/unistd.h>
+#include "scno.h"
 #include <unistd.h>
 
 #ifdef __NR_oldumount
index d313d5978a9b6b4d09658ce7a532765a2bc1585f..cf1fc129fbbfb21bff026ab7aac20dcad8ece6ef 100644 (file)
 #include <unistd.h>
 #include <sys/stat.h>
 #include <sys/mount.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_umount2 && (!defined __NR_umount || __NR_umount2 != __NR_umount)
+# define TEST_SYSCALL_NR __NR_umount2
 # define TEST_SYSCALL_STR "umount2"
 #else
-# define __NR_umount2 __NR_umount
+# define TEST_SYSCALL_NR __NR_umount
 # define TEST_SYSCALL_STR "umount"
 #endif
 
@@ -25,9 +26,9 @@ main(void)
        static const char sample[] = "umount2.sample";
        if (mkdir(sample, 0700))
                perror_msg_and_fail("mkdir: %s", sample);
-       (void) syscall(__NR_umount2, sample, 31);
+       long ret = syscall(TEST_SYSCALL_NR, sample, 31);
        printf("%s(\"%s\", MNT_FORCE|MNT_DETACH|MNT_EXPIRE|UMOUNT_NOFOLLOW|0x10)"
-              " = -1 EINVAL (%m)\n", TEST_SYSCALL_STR, sample);
+              " = %s\n", TEST_SYSCALL_STR, sample, sprintrc(ret));
        if (rmdir(sample))
                perror_msg_and_fail("rmdir: %s", sample);
        puts("+++ exited with 0 +++");
index 25839f77a39e39a32661e86bbf557122bf28d8cf..6a86fdcf3f4713b0a25fc3650323de3394442650 100644 (file)
@@ -2,36 +2,56 @@
  * Check decoding of invalid pointer by umoven.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <stdio.h>
-#include <time.h>
-#include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
+
+#ifdef __NR_nanosleep
+
+# include <stdio.h>
+# include <unistd.h>
+
+# include "kernel_old_timespec.h"
+
+static const char *errstr;
+
+static long
+k_nanosleep(const kernel_ulong_t arg1, const kernel_ulong_t arg2)
+{
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const long rc = syscall(__NR_nanosleep, arg1, arg2, bad, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
 
 int
 main(void)
 {
-       if (F8ILL_KULONG_SUPPORTED) {
-               struct timespec ts = { 0, 0 };
-               const void *const p = tail_memdup(&ts, sizeof(ts));
-
-               long rc = syscall(__NR_nanosleep, p, NULL);
-               printf("nanosleep({tv_sec=0, tv_nsec=0}, NULL) = %s\n",
-                      sprintrc(rc));
-
-               const kernel_ulong_t ill = f8ill_ptr_to_kulong(p);
-               rc = syscall(__NR_nanosleep, ill, NULL);
-               printf("nanosleep(%#llx, NULL) = %s\n",
-                      (unsigned long long) ill, sprintrc(rc));
-
-               puts("+++ exited with 0 +++");
-               return 0;
-       } else {
+       if (!F8ILL_KULONG_SUPPORTED)
                return 77;
-       }
+
+       kernel_old_timespec_t ts = { 0, 0 };
+       const void *const p = tail_memdup(&ts, sizeof(ts));
+
+       k_nanosleep((unsigned long) p, 0);
+       printf("nanosleep({tv_sec=0, tv_nsec=0}, NULL) = %s\n", errstr);
+
+       const kernel_ulong_t ill = f8ill_ptr_to_kulong(p);
+       k_nanosleep(ill, 0);
+       printf("nanosleep(%#llx, NULL) = %s\n",
+              (unsigned long long) ill, errstr);
+
+       puts("+++ exited with 0 +++");
+       return 0;
 }
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_nanosleep")
+
+#endif
index 5a24357ac551c8717974bc8716bb5151a917cd99..6cfcfb865e96f5cdf583e5beabf613a9db781f04 100644 (file)
@@ -2,6 +2,7 @@
  * Check decoding of invalid pointer by umovestr.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +11,7 @@
 #include "tests.h"
 #include <stdio.h>
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 int
 main(void)
diff --git a/tests-m32/umovestr_cached.c b/tests-m32/umovestr_cached.c
new file mode 100644 (file)
index 0000000..3d7bed3
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * Check effectiveness of umovestr memory caching.
+ *
+ * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/uio.h>
+
+int
+main(void)
+{
+       char *const buf = tail_alloc(DEFAULT_STRLEN);
+       fill_memory_ex(buf, DEFAULT_STRLEN, 'a', 'z' - 'a' + 1);
+
+       struct iovec *const io = tail_alloc(sizeof(*io) * DEFAULT_STRLEN);
+       for (unsigned int i = 0; i < DEFAULT_STRLEN; ++i) {
+               io[i].iov_base = buf + DEFAULT_STRLEN - i;
+               io[i].iov_len = i;
+       }
+
+       tprintf("%s", "");
+
+       int rc = writev(-1, io, DEFAULT_STRLEN);
+       const char *errstr = sprintrc(rc);
+
+       tprintf("writev(-1, [");
+       for (unsigned int i = 0; i < DEFAULT_STRLEN; ++i) {
+               if (i)
+                       tprintf(", ");
+               tprintf("{iov_base=\"%.*s\", iov_len=%u}",
+                       (int) io[i].iov_len,
+                       (char *) io[i].iov_base,
+                       (unsigned int) io[i].iov_len);
+       }
+       tprintf("], %u) = %s\n", DEFAULT_STRLEN, errstr);
+
+       tprintf("+++ exited with 0 +++\n");
+       return 0;
+}
diff --git a/tests-m32/umovestr_cached.test b/tests-m32/umovestr_cached.test
new file mode 100755 (executable)
index 0000000..4b9c832
--- /dev/null
@@ -0,0 +1,41 @@
+#!/bin/sh
+#
+# Check effectiveness of umovestr memory caching.
+#
+# Copyright (c) 2017-2020 Dmitry V. Levin <ldv@altlinux.org>
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/init.sh"
+
+expected_count="${1:-2}"
+
+check_prog grep
+$STRACE -d -enone / > /dev/null 2> "$LOG" ||:
+grep -x "[^:]*strace: PTRACE_GET_SYSCALL_INFO works" "$LOG" > /dev/null || {
+       # PTRACE_GET_SYSCALL_INFO does not work
+       case "$STRACE_ARCH:$MIPS_ABI" in
+               ia64:|mips:o32)
+               # ia64 invokes extra process_vm_readv syscalls to obtain syscall
+               # arguments, see linux/ia64/get_syscall_args.c for details.
+               # mips o32 obtains the first four syscalls arguments from registers
+               # and invokes extra process_vm_readv syscalls to obtain remaining
+               # syscall arguments, see linux/mips/get_syscall_args.c for details.
+               skip_ "the test is not supported on $STRACE_ARCH yet"
+               ;;
+       esac
+}
+
+run_strace_match_diff -e trace=writev
+
+run_strace -qq -esignal=none -eprocess_vm_readv -z \
+       -o '|grep -c ^process_vm_readv > count' \
+       -- "$STRACE_EXE" -o "$LOG" $args > /dev/null
+
+count="$(cat count)"
+case "$count" in
+       0) skip_ "$STRACE $args made no process_vm_readv syscall invocations" ;;
+       $expected_count) ;;
+       *) fail_ "$STRACE $args made $count != $expected_count process_vm_readv syscall invocations" ;;
+esac
diff --git a/tests-m32/umovestr_cached_adjacent.c b/tests-m32/umovestr_cached_adjacent.c
new file mode 100644 (file)
index 0000000..53a573b
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * Check effectiveness of umovestr memory caching.
+ *
+ * Copyright (c) 2019-2020 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/uio.h>
+
+int
+main(void)
+{
+       const size_t size = get_page_size() + (DEFAULT_STRLEN - 1);
+       char *const buf = tail_alloc(size);
+       fill_memory_ex(buf, DEFAULT_STRLEN * 2, 'a', 'z' - 'a' + 1);
+
+       struct iovec *const io = tail_alloc(sizeof(*io) * DEFAULT_STRLEN);
+       for (unsigned int i = 0; i < DEFAULT_STRLEN; ++i) {
+               io[i].iov_base = buf + i;
+               io[i].iov_len = DEFAULT_STRLEN;
+       }
+
+       tprintf("%s", "");
+
+       int rc = writev(-1, io, DEFAULT_STRLEN);
+       const char *errstr = sprintrc(rc);
+
+       tprintf("writev(-1, [");
+       for (unsigned int i = 0; i < DEFAULT_STRLEN; ++i) {
+               if (i)
+                       tprintf(", ");
+               tprintf("{iov_base=\"%.*s\", iov_len=%u}",
+                       (int) io[i].iov_len,
+                       (char *) io[i].iov_base,
+                       (unsigned int) io[i].iov_len);
+       }
+       tprintf("], %u) = %s\n", DEFAULT_STRLEN, errstr);
+
+       tprintf("+++ exited with 0 +++\n");
+       return 0;
+}
diff --git a/tests-m32/umovestr_cached_adjacent.gen.test b/tests-m32/umovestr_cached_adjacent.gen.test
new file mode 100755 (executable)
index 0000000..24b3fd7
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (umovestr_cached_adjacent +umovestr_cached.test 3); do not edit.
+set -- 3
+. "${srcdir=.}/umovestr_cached.test"
index 386fd99bdfa9dd9eebea84eecdf1f5bee07c337f..3180cffd2d0cfcb964b1195a6588945aa89ec038 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_uname
 
index 73ddd1e0f298f15514891ed47125d6beb6b73dbd..1439e1ff8438baf82c3ce191bea4e63ace9c67a8 100644 (file)
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -12,7 +13,7 @@
 #include <string.h>
 #include <unistd.h>
 #include <sys/socket.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifndef __NR_send
 # define __NR_send -1
index 9c33b624e6c831949610c9d92adffe1ee63ebc1c..af9b3a062bd62e32ff1f5b43d553ef75f731f364 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_unlink
 
index 0ae6796461c08570a8ba1c1a5386217ec1ee2103..6fcf133260b0f1f558e0adc5a5dc6d5bd23a9bb8 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_unlinkat
 
@@ -27,7 +27,7 @@ main(void)
        printf("unlinkat(%s, \"%s\", %s) = %ld %s (%m)\n",
               "AT_FDCWD", sample,
               "AT_SYMLINK_NOFOLLOW|AT_REMOVEDIR|AT_SYMLINK_FOLLOW"
-              "|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|0xffffe0ff",
+              "|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|AT_RECURSIVE|0xffff60ff",
               rc, errno2name());
 
        puts("+++ exited with 0 +++");
index a49f9ef9ccc453464d1299fa520836e3741d2efc..45e914e05bb4229ea5f5c7917b413da34603f54a 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of unshare syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_unshare
 
@@ -28,12 +28,12 @@ main(void)
                const char *str;
        } unshare_flags[] = {
                { ARG_STR(0) },
-               { 0xdeadca75,
-                       "CLONE_THREAD|CLONE_FS|CLONE_SIGHAND|CLONE_SYSVSEM|"
-                       "CLONE_NEWUTS|CLONE_NEWIPC|CLONE_NEWNET|CLONE_NEWUSER|"
-                       "CLONE_NEWCGROUP|0x80a8c075" },
+               { 0xdeadcaf5,
+                       "CLONE_NEWTIME|CLONE_FS|CLONE_SIGHAND|CLONE_THREAD"
+                       "|CLONE_SYSVSEM|CLONE_NEWCGROUP|CLONE_NEWUTS"
+                       "|CLONE_NEWIPC|CLONE_NEWUSER|CLONE_NEWNET|0x80a8c075" },
                { 0x2000000, "CLONE_NEWCGROUP" },
-               { ARG_STR(0x81f8f0ff) " /* CLONE_??? */" },
+               { ARG_STR(0x81f8f07f) " /* CLONE_??? */" },
        };
 
        long rc;
index 9e59c0fe0787a9a60b553181f28658f925eba435..fa722577a2d1fd939f994b67bf2e22ab3aaf9627 100644 (file)
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -7,7 +8,6 @@
 
 #include "tests.h"
 #include <fcntl.h>
-#include <asm/unistd.h>
 #include "scno.h"
 
 #if defined __NR_userfaultfd && defined O_CLOEXEC
index 0945a70d0f7dc2cfa6ba6ff55764e5f369af7e5c..7464b98a89d172dd738042c172c14b87ee8126b3 100644 (file)
@@ -1,13 +1,13 @@
 /*
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_ustat
 
index 151b31a99303d9037f058c4fc95592e594f27140..b548c8f815612abb47ad3a52d237fc0b8cad98e2 100644 (file)
@@ -2,14 +2,14 @@
  * Check decoding of utime syscall.
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_utime
 
index 170b2c89388ee79ce9b99beb16294a48b10bf205..4aa83c81cc05d446aa2b11667df1cbac74b1924b 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of utimensat syscall.
  *
  * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -15,7 +15,7 @@
 #include <sys/stat.h>
 #include <sys/time.h>
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_utimensat && defined UTIME_NOW && defined UTIME_OMIT
 
@@ -44,7 +44,7 @@
        "0x600 /* AT_REMOVEDIR|AT_SYMLINK_FOLLOW */"
 #  define str_flags2 \
        "0xffffffff /* AT_SYMLINK_NOFOLLOW|AT_REMOVEDIR|AT_SYMLINK_FOLLOW" \
-       "|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|0xffffe0ff */"
+       "|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|AT_RECURSIVE|0xffff60ff */"
 #  define str_utime_now_omit \
        "[{tv_sec=" big_tv_sec ", tv_nsec=1073741823} /* UTIME_NOW */, " \
        "{tv_sec=" huge_tv_sec ", tv_nsec=1073741822} /* UTIME_OMIT */]"
@@ -55,7 +55,7 @@
 #  define str_flags1                   "AT_REMOVEDIR|AT_SYMLINK_FOLLOW"
 #  define str_flags2 \
        "AT_SYMLINK_NOFOLLOW|AT_REMOVEDIR|AT_SYMLINK_FOLLOW" \
-       "|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|0xffffe0ff"
+       "|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|AT_RECURSIVE|0xffff60ff"
 #  define str_utime_now_omit           "[UTIME_NOW, UTIME_OMIT]"
 # endif
 
index 1aee6db39317b7be3edb5b9ba07b86e7ec51dd52..d78969fe451f80660655cdced5eb31973404db56 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of utimes syscall.
  *
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_utimes
 
index 1a786cc3076426c44a271e739c18ca241eb34640..46359016fc3273380e9212b5f229bca6b70da524 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_vhangup
 
index b986dafa9e85979832740a7ad3da151ef310e140..ac949ae8e3b2b6e5d671f9e8515b09a569ef5bac 100644 (file)
@@ -2,14 +2,14 @@
  * This file is part of vmsplice strace test.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_vmsplice
 
index 29b0caddd40ff6a3acfad2073d1e3fd5caf25816..048e6225e6516862b8a7a616491438a60a4b7311 100644 (file)
@@ -2,77 +2,98 @@
  * Check decoding of wait4 syscall.
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <assert.h>
-#include <signal.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <sys/wait.h>
-#include <sys/resource.h>
+#include "scno.h"
+
+#ifdef __NR_wait4
+
+# include <assert.h>
+# include <signal.h>
+# include <stdio.h>
+# include <unistd.h>
+# include <sys/wait.h>
+# include "kernel_rusage.h"
 
 static const char *
-sprint_rusage(const struct rusage *const ru)
+sprint_rusage(const kernel_rusage_t *const ru)
 {
        static char buf[1024];
        snprintf(buf, sizeof(buf),
-                "{ru_utime={tv_sec=%lld, tv_usec=%llu}"
-                ", ru_stime={tv_sec=%lld, tv_usec=%llu}"
-#if VERBOSE
-                ", ru_maxrss=%lu"
-                ", ru_ixrss=%lu"
-                ", ru_idrss=%lu"
-                ", ru_isrss=%lu"
-                ", ru_minflt=%lu"
-                ", ru_majflt=%lu"
-                ", ru_nswap=%lu"
-                ", ru_inblock=%lu"
-                ", ru_oublock=%lu"
-                ", ru_msgsnd=%lu"
-                ", ru_msgrcv=%lu"
-                ", ru_nsignals=%lu"
-                ", ru_nvcsw=%lu"
-                ", ru_nivcsw=%lu}"
-#else
+                "{ru_utime={tv_sec=%llu, tv_usec=%llu}"
+                ", ru_stime={tv_sec=%llu, tv_usec=%llu}"
+# if VERBOSE
+                ", ru_maxrss=%llu"
+                ", ru_ixrss=%llu"
+                ", ru_idrss=%llu"
+                ", ru_isrss=%llu"
+                ", ru_minflt=%llu"
+                ", ru_majflt=%llu"
+                ", ru_nswap=%llu"
+                ", ru_inblock=%llu"
+                ", ru_oublock=%llu"
+                ", ru_msgsnd=%llu"
+                ", ru_msgrcv=%llu"
+                ", ru_nsignals=%llu"
+                ", ru_nvcsw=%llu"
+                ", ru_nivcsw=%llu}"
+# else
                 ", ...}"
-#endif
-                , (long long) ru->ru_utime.tv_sec
+# endif
+                , zero_extend_signed_to_ull(ru->ru_utime.tv_sec)
                 , zero_extend_signed_to_ull(ru->ru_utime.tv_usec)
-                , (long long) ru->ru_stime.tv_sec
+                , zero_extend_signed_to_ull(ru->ru_stime.tv_sec)
                 , zero_extend_signed_to_ull(ru->ru_stime.tv_usec)
-#if VERBOSE
-                , (long) ru->ru_maxrss
-                , (long) ru->ru_ixrss
-                , (long) ru->ru_idrss
-                , (long) ru->ru_isrss
-                , (long) ru->ru_minflt
-                , (long) ru->ru_majflt
-                , (long) ru->ru_nswap
-                , (long) ru->ru_inblock
-                , (long) ru->ru_oublock
-                , (long) ru->ru_msgsnd
-                , (long) ru->ru_msgrcv
-                , (long) ru->ru_nsignals
-                , (long) ru->ru_nvcsw
-                , (long) ru->ru_nivcsw
-#endif
+# if VERBOSE
+                , zero_extend_signed_to_ull(ru->ru_maxrss)
+                , zero_extend_signed_to_ull(ru->ru_ixrss)
+                , zero_extend_signed_to_ull(ru->ru_idrss)
+                , zero_extend_signed_to_ull(ru->ru_isrss)
+                , zero_extend_signed_to_ull(ru->ru_minflt)
+                , zero_extend_signed_to_ull(ru->ru_majflt)
+                , zero_extend_signed_to_ull(ru->ru_nswap)
+                , zero_extend_signed_to_ull(ru->ru_inblock)
+                , zero_extend_signed_to_ull(ru->ru_oublock)
+                , zero_extend_signed_to_ull(ru->ru_msgsnd)
+                , zero_extend_signed_to_ull(ru->ru_msgrcv)
+                , zero_extend_signed_to_ull(ru->ru_nsignals)
+                , zero_extend_signed_to_ull(ru->ru_nvcsw)
+                , zero_extend_signed_to_ull(ru->ru_nivcsw)
+# endif
                 );
        return buf;
 }
 
+static const char *errstr;
+
+static long
+k_wait4(const unsigned int pid, void const *wstatus,
+       const unsigned int options, void const *ru)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = fill | pid;
+       const kernel_ulong_t arg2 = (uintptr_t) wstatus;
+       const kernel_ulong_t arg3 = fill | options;
+       const kernel_ulong_t arg4 = (uintptr_t) ru;
+       const long rc = syscall(__NR_wait4, arg1, arg2, arg3, arg4, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
 static pid_t
-do_wait4(pid_t pid, int *wstatus, int options, struct rusage *ru)
+do_wait4(pid_t pid, int *wstatus, int options, kernel_rusage_t *ru)
 {
        sigset_t mask = {};
        sigaddset(&mask, SIGCHLD);
 
        assert(sigprocmask(SIG_BLOCK, &mask, NULL) == 0);
-       pid_t rc = wait4(pid, wstatus, options, ru);
+       pid_t rc = k_wait4(pid, wstatus, options, ru);
        assert(sigprocmask(SIG_UNBLOCK, &mask, NULL) == 0);
        return rc;
 }
@@ -101,12 +122,12 @@ main(void)
        (void) close(0);
 
        TAIL_ALLOC_OBJECT_CONST_PTR(int, s);
-       if (wait4(pid, s, WNOHANG|__WALL, NULL))
+       if (k_wait4(pid, s, WNOHANG|__WALL, NULL))
                perror_msg_and_fail("wait4 #1");
        tprintf("wait4(%d, %p, WNOHANG|__WALL, NULL) = 0\n", pid, s);
 
-       TAIL_ALLOC_OBJECT_CONST_PTR(struct rusage, rusage);
-       if (wait4(pid, s, WNOHANG|__WALL, rusage))
+       TAIL_ALLOC_OBJECT_CONST_PTR(kernel_rusage_t, rusage);
+       if (k_wait4(pid, s, WNOHANG|__WALL, rusage))
                perror_msg_and_fail("wait4 #2");
        tprintf("wait4(%d, %p, WNOHANG|__WALL, %p) = 0\n", pid, s, rusage);
 
@@ -156,12 +177,12 @@ main(void)
        if (kill(pid, SIGCONT))
                perror_msg_and_fail("kill(SIGCONT)");
 
-#if defined WCONTINUED && defined WIFCONTINUED
+# if defined WCONTINUED && defined WIFCONTINUED
        assert(do_wait4(pid, s, WCONTINUED, rusage) == pid);
        assert(WIFCONTINUED(*s));
        tprintf("wait4(%d, [{WIFCONTINUED(s)}], WCONTINUED"
                ", %s) = %d\n", pid, sprint_rusage(rusage), pid);
-#endif /* WCONTINUED && WIFCONTINUED */
+# endif /* WCONTINUED && WIFCONTINUED */
 
        assert(write(1, "", 1) == 1);
        (void) close(1);
@@ -171,10 +192,16 @@ main(void)
        tprintf("wait4(%d, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0"
                ", %s) = %d\n", pid, sprint_rusage(rusage), pid);
 
-       assert(wait4(-1, s, WNOHANG|WSTOPPED|__WALL, rusage) == -1);
-       tprintf("wait4(-1, %p, WNOHANG|WSTOPPED|__WALL, %p) = -1 %s (%m)\n",
-               s, rusage, errno2name());
+       assert(k_wait4(-1, s, WNOHANG|WSTOPPED|__WALL, rusage) == -1);
+       tprintf("wait4(-1, %p, WNOHANG|WSTOPPED|__WALL, %p) = %s\n",
+               s, rusage, errstr);
 
        tprintf("%s\n", "+++ exited with 0 +++");
        return 0;
 }
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_wait4")
+
+#endif /* __NR_wait4 */
index f4e4a0a8f08e6b6569729149bb5b86880be5282e..8716fa088a0b5e31de5966a5852555a0116dadef 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of waitid syscall.
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 #include <string.h>
 #include <unistd.h>
 #include <sys/wait.h>
-#include <sys/resource.h>
-#include <asm/unistd.h>
+#include "kernel_rusage.h"
+#include "scno.h"
 
 static const char *
-sprint_rusage(const struct rusage *const ru)
+sprint_rusage(const kernel_rusage_t *const ru)
 {
        static char buf[1024];
        snprintf(buf, sizeof(buf),
@@ -103,8 +103,8 @@ sprint_siginfo(const siginfo_t *const si, const char *const status_text)
        snprintf(buf, sizeof(buf),
                 "{si_signo=SIGCHLD"
                 ", si_code=%s"
-                ", si_pid=%u"
-                ", si_uid=%u"
+                ", si_pid=%d"
+                ", si_uid=%d"
                 ", si_status=%s"
                 ", si_utime=%llu"
                 ", si_stime=%llu}",
@@ -128,7 +128,7 @@ do_waitid(const unsigned int idtype,
          const unsigned int id,
          const siginfo_t *const infop,
          const unsigned int options,
-         const struct rusage *const rusage)
+         const kernel_rusage_t *const rusage)
 {
        sigset_t mask = {};
        sigaddset(&mask, SIGCHLD);
@@ -169,7 +169,7 @@ main(void)
 
        TAIL_ALLOC_OBJECT_CONST_PTR(siginfo_t, sinfo);
        memset(sinfo, 0, sizeof(*sinfo));
-       TAIL_ALLOC_OBJECT_CONST_PTR(struct rusage, rusage);
+       TAIL_ALLOC_OBJECT_CONST_PTR(kernel_rusage_t, rusage);
        if (do_waitid(P_PID, pid, sinfo, WNOHANG|WEXITED|WSTOPPED, rusage))
                perror_msg_and_fail("waitid #2");
        tprintf("waitid(P_PID, %d, {}, WNOHANG|WEXITED|WSTOPPED, %s) = 0\n",
index 7069bec89676b882e3ffa6b71b2748d4c01bbe3f..14f794024e2f3de5375b37162310fc70afc9b0da 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of waitpid syscall.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_waitpid
 
diff --git a/tests-m32/xet_robust_list--pidns-translation.c b/tests-m32/xet_robust_list--pidns-translation.c
new file mode 100644 (file)
index 0000000..e047726
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "xet_robust_list.c"
diff --git a/tests-m32/xet_robust_list--pidns-translation.gen.test b/tests-m32/xet_robust_list--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..e660e10
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (xet_robust_list--pidns-translation test_pidns -a24 -e trace=get_robust_list,set_robust_list); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a24 -e trace=get_robust_list,set_robust_list
index cf4f22347ab8c009bd8ac8879ee6354b19f64100..04376bfb8d10fa2653a349d80f1548f8efbe7b3d 100644 (file)
@@ -1,13 +1,14 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
+#include "pidns.h"
 
 #if defined __NR_get_robust_list && defined __NR_set_robust_list
 
@@ -30,27 +31,36 @@ sprintaddr(void *addr)
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        const pid_t pid = getpid();
+       const char *pid_str = pidns_pid2str(PT_TGID);
        const long long_pid = (unsigned long) (0xdeadbeef00000000LL | pid);
        TAIL_ALLOC_OBJECT_CONST_PTR(void *, p_head);
        TAIL_ALLOC_OBJECT_CONST_PTR(size_t, p_len);
 
        if (syscall(__NR_get_robust_list, long_pid, p_head, p_len))
                perror_msg_and_skip("get_robust_list");
-       printf("get_robust_list(%d, [%s], [%lu]) = 0\n",
-              (int) pid, sprintaddr(*p_head), (unsigned long) *p_len);
+       pidns_print_leader();
+       printf("get_robust_list(%d%s, [%s], [%lu]) = 0\n",
+              pid, pid_str, sprintaddr(*p_head),
+              (unsigned long) *p_len);
 
        void *head = tail_alloc(*p_len);
        if (syscall(__NR_set_robust_list, head, *p_len))
                perror_msg_and_skip("set_robust_list");
+       pidns_print_leader();
        printf("set_robust_list(%p, %lu) = 0\n",
               head, (unsigned long) *p_len);
 
        if (syscall(__NR_get_robust_list, long_pid, p_head, p_len))
                perror_msg_and_skip("get_robust_list");
-       printf("get_robust_list(%d, [%s], [%lu]) = 0\n",
-              (int) pid, sprintaddr(*p_head), (unsigned long) *p_len);
+       pidns_print_leader();
+       printf("get_robust_list(%d%s, [%s], [%lu]) = 0\n",
+              pid, pid_str, sprintaddr(*p_head),
+              (unsigned long) *p_len);
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
index a1efd3192fa6be1c05a7eb0ce8d0fd0e5048e724..bdc07883d71612c079814c86333901ee8d9ddc05 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of set_thread_area and get_thread_area syscalls on x86
  * architecture.
  *
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_get_thread_area && defined __NR_set_thread_area \
  && defined HAVE_STRUCT_USER_DESC
index 8d758974effbbff978055e4001026cd0ee408989..f3455e88697f2fb4b4f810eac88a7d4398b51f77 100644 (file)
@@ -2,6 +2,7 @@
  * Check decoding of setitimer and getitimer syscalls.
  *
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 #include <stdint.h>
 #include <sys/time.h>
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
+#include "kernel_timeval.h"
+
+typedef struct {
+       kernel_old_timeval_t it_interval;
+       kernel_old_timeval_t it_value;
+} kernel_old_itimerval_t;
 
 int
 main(void)
 {
-       static const struct itimerval new = {
+       static const kernel_old_itimerval_t new = {
                .it_interval = { 0xc0de1, 0xc0de2 },
                .it_value = { 0xc0de3, 0xc0de4 }
        };
@@ -26,12 +33,12 @@ main(void)
        static const kernel_ulong_t bogus_timer =
                (kernel_ulong_t) 0xfacefeeddeadbeefULL;
 
-       TAIL_ALLOC_OBJECT_CONST_PTR(struct itimerval, p_old);
-       struct itimerval *const p_new = tail_memdup(&new, sizeof(new));
+       TAIL_ALLOC_OBJECT_CONST_PTR(kernel_old_itimerval_t, p_old);
+       kernel_old_itimerval_t *const p_new = tail_memdup(&new, sizeof(new));
        void *const efault = tail_alloc(sizeof(new) - 8);
        long rc;
 
-       if (setitimer(ITIMER_REAL, p_new, NULL))
+       if (syscall(__NR_setitimer, ITIMER_REAL, p_new, NULL))
                perror_msg_and_skip("setitimer");
        printf("setitimer(ITIMER_REAL"
               ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
@@ -43,7 +50,7 @@ main(void)
               zero_extend_signed_to_ull(new.it_value.tv_usec));
 
        fill_memory(p_old, sizeof(*p_old));
-       if (getitimer(ITIMER_REAL, p_old))
+       if (syscall(__NR_getitimer, ITIMER_REAL, p_old))
                perror_msg_and_skip("getitimer");
        printf("getitimer(ITIMER_REAL"
               ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
@@ -54,7 +61,7 @@ main(void)
               zero_extend_signed_to_ull(p_old->it_value.tv_usec));
 
        fill_memory(p_old, sizeof(*p_old));
-       setitimer(ITIMER_REAL, p_new, p_old);
+       syscall(__NR_setitimer, ITIMER_REAL, p_new, p_old);
        printf("setitimer(ITIMER_REAL"
               ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
               ", it_value={tv_sec=%lld, tv_usec=%llu}}"
@@ -69,10 +76,10 @@ main(void)
               (long long) p_old->it_value.tv_sec,
               zero_extend_signed_to_ull(p_old->it_value.tv_usec));
 
-       rc = getitimer(ITIMER_REAL, efault);
+       rc = syscall(__NR_getitimer, ITIMER_REAL, efault);
        printf("getitimer(ITIMER_REAL, %p) = %s\n", efault, sprintrc(rc));
 
-       rc = setitimer(ITIMER_REAL, p_new, efault);
+       rc = syscall(__NR_setitimer, ITIMER_REAL, p_new, efault);
        printf("setitimer(ITIMER_REAL"
               ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
               ", it_value={tv_sec=%lld, tv_usec=%llu}}, %p) = %s\n",
@@ -82,7 +89,7 @@ main(void)
               zero_extend_signed_to_ull(new.it_value.tv_usec),
               efault, sprintrc(rc));
 
-       rc = setitimer(ITIMER_REAL, efault, p_old);
+       rc = syscall(__NR_setitimer, ITIMER_REAL, efault, p_old);
        printf("setitimer(ITIMER_REAL, %p, %p) = %s\n",
               efault, p_old, sprintrc(rc));
 
@@ -146,10 +153,12 @@ main(void)
 
        p_new->it_interval.tv_sec = 0xdeadbeefU;
        p_new->it_interval.tv_usec = 0xfacefeedU;
-       p_new->it_value.tv_sec = (time_t) 0xcafef00ddeadbeefLL;
-       p_new->it_value.tv_usec = (suseconds_t) 0xbadc0dedfacefeedLL;
+       p_new->it_value.tv_sec =
+               (typeof(p_new->it_value.tv_sec)) 0xcafef00ddeadbeefLL;
+       p_new->it_value.tv_usec =
+               (typeof(p_new->it_value.tv_usec)) 0xbadc0dedfacefeedLL;
 
-       rc = setitimer(ITIMER_REAL, p_new, p_old);
+       rc = syscall(__NR_setitimer, ITIMER_REAL, p_new, p_old);
        printf("setitimer(ITIMER_REAL"
               ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
               ", it_value={tv_sec=%lld, tv_usec=%llu}}, %p) = %s\n",
diff --git a/tests-m32/xetpgid--pidns-translation.c b/tests-m32/xetpgid--pidns-translation.c
new file mode 100644 (file)
index 0000000..b646962
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "xetpgid.c"
diff --git a/tests-m32/xetpgid--pidns-translation.gen.test b/tests-m32/xetpgid--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..93c1ec3
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (xetpgid--pidns-translation test_pidns -a11 -e trace=getpgid,setpgid); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a11 -e trace=getpgid,setpgid
index 46dd332d1ae1aa190da0054a1c9ec71808cdd46f..94f9bc5e4276d1ef1db355036bbf1093b8d202ee 100644 (file)
@@ -2,14 +2,15 @@
  * This file is part of xetpgid strace test.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
+#include "pidns.h"
 
 #if defined __NR_getpgid && defined __NR_setpgid
 
 int
 main(void)
 {
-       const int pid = getpid();
-       long rc = syscall(__NR_getpgid, F8ILL_KULONG_MASK | pid);
-       printf("getpgid(%d) = %ld\n", pid, rc);
-
-       rc = syscall(__NR_setpgid, F8ILL_KULONG_MASK, F8ILL_KULONG_MASK | pid);
-       printf("setpgid(0, %d) = %ld\n", pid, rc);
+       PIDNS_TEST_INIT;
 
+       const int pid = getpid();
+       long pgid = syscall(__NR_getpgid, F8ILL_KULONG_MASK | pid);
+       pidns_print_leader();
+       printf("getpgid(%d%s) = %ld%s\n", pid, pidns_pid2str(PT_TGID),
+               pgid, pidns_pid2str(PT_PGID));
+
+       long rc = syscall(__NR_setpgid, F8ILL_KULONG_MASK,
+               F8ILL_KULONG_MASK | pgid);
+       pidns_print_leader();
+       printf("setpgid(0, %ld%s) = %s\n", pgid, pidns_pid2str(PT_PGID),
+               sprintrc(rc));
+
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
diff --git a/tests-m32/xetpriority--pidns-translation.c b/tests-m32/xetpriority--pidns-translation.c
new file mode 100644 (file)
index 0000000..c93669c
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "xetpriority.c"
diff --git a/tests-m32/xetpriority--pidns-translation.gen.test b/tests-m32/xetpriority--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..d221c7c
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (xetpriority--pidns-translation test_pidns -a27 -e trace=getpriority,setpriority); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a27 -e trace=getpriority,setpriority
index 5cd97ea947d60eac91e9af400ccfbee98696bb8b..0832ea94de1ec2fb9aa7ccf23d4e6eb37c211c81 100644 (file)
@@ -1,12 +1,13 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
+#include "pidns.h"
 
 #if defined __NR_getpriority && defined __NR_setpriority
 
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        const int pid = getpid();
+       const int pgid = getpgid(0);
+
        long rc = syscall(__NR_getpriority, PRIO_PROCESS,
                          F8ILL_KULONG_MASK | pid);
-       printf("getpriority(PRIO_PROCESS, %d) = %ld\n", pid, rc);
+       pidns_print_leader();
+       printf("getpriority(PRIO_PROCESS, %d%s) = %ld\n",
+               pid, pidns_pid2str(PT_TGID), rc);
 
        rc = syscall(__NR_setpriority, PRIO_PROCESS,
                     F8ILL_KULONG_MASK | pid, F8ILL_KULONG_MASK);
-       printf("setpriority(PRIO_PROCESS, %d, 0) = %s\n", pid, sprintrc(rc));
+       pidns_print_leader();
+       printf("setpriority(PRIO_PROCESS, %d%s, 0) = %s\n",
+               pid, pidns_pid2str(PT_TGID), sprintrc(rc));
+
+       rc = syscall(__NR_getpriority, PRIO_PGRP,
+                         F8ILL_KULONG_MASK | pgid);
+       pidns_print_leader();
+       printf("getpriority(PRIO_PGRP, %d%s) = %ld\n",
+               pgid, pidns_pid2str(PT_PGID), rc);
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
index 4b9552471bd810ffd8cadace87ededc8a6d8ac62..485c10718c6d258df74b34e25e2ba5246199f94a 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (xetpriority -a29 -e trace=getpriority,setpriority); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (xetpriority -a27 -e trace=getpriority,setpriority); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a29 -e trace=getpriority,setpriority
+run_strace_match_diff -a27 -e trace=getpriority,setpriority
index 9c8112624c4d1ca2c4e2c49faeacfc6bf0336614..eca3959b0563673748a15c1be7d35c4f7c00ba54 100644 (file)
@@ -1,18 +1,22 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <assert.h>
-#include <stdio.h>
-#include <stdint.h>
-#include <unistd.h>
-#include <sys/time.h>
-#include <asm/unistd.h>
+#include "scno.h"
+
+#ifdef __NR_gettimeofday
+
+# include <assert.h>
+# include <stdio.h>
+# include <stdint.h>
+# include <unistd.h>
+# include <sys/time.h>
+# include "scno.h"
 
 int
 main(void)
@@ -64,3 +68,9 @@ main(void)
        puts("+++ exited with 0 +++");
        return 0;
 }
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_gettimeofday")
+
+#endif /* __NR_gettimeofday */
diff --git a/tests-m32/xgetdents.c b/tests-m32/xgetdents.c
new file mode 100644 (file)
index 0000000..c550625
--- /dev/null
@@ -0,0 +1,141 @@
+/*
+ * Check decoding of getdents and getdents64 syscalls.
+ *
+ * Copyright (c) 2015-2020 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include <dirent.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <sys/stat.h>
+#include "kernel_dirent.h"
+#include "print_fields.h"
+
+#if VERBOSE
+static const char *
+str_d_type(const unsigned char d_type)
+{
+       switch (d_type) {
+               case DT_DIR:
+                       return "DT_DIR";
+               case DT_REG:
+                       return "DT_REG";
+               default:
+                       return "DT_UNKNOWN";
+       }
+}
+
+static void
+print_dirent(const kernel_dirent_type *d);
+#endif
+
+static const char *errstr;
+
+static long
+k_getdents(const unsigned int fd,
+          const void *dirp,
+          const unsigned int count)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = fill | fd;
+       const kernel_ulong_t arg2 = (uintptr_t) dirp;
+       const kernel_ulong_t arg3 = fill | count;
+       const long rc = syscall(NR_getdents, arg1, arg2, arg3, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
+static void
+ls(int fd, char *buf, unsigned int size)
+{
+       long rc;
+       while ((rc = k_getdents(fd, buf, size))) {
+               if (rc < 0)
+                       perror_msg_and_skip(STR_getdents);
+               printf("%s(%d, ", STR_getdents, fd);
+#if VERBOSE
+               printf("[");
+#else
+               unsigned long entries = 0;
+#endif
+               kernel_dirent_type *d;
+               for (long i = 0; i < rc; i += d->d_reclen) {
+                       d = (kernel_dirent_type *) &buf[i];
+#if VERBOSE
+                       if (i)
+                               printf(", ");
+                       print_dirent(d);
+#else
+                       ++entries;
+#endif
+               }
+#if VERBOSE
+               printf("]");
+#else
+               printf("%p /* %lu entries */", buf, entries);
+#endif
+               printf(", %u) = %ld\n", size, rc);
+       }
+#if VERBOSE
+       printf("%s(%d, [], %u) = 0\n", STR_getdents, fd, size);
+#else
+       printf("%s(%d, %p /* 0 entries */, %u) = 0\n",
+              STR_getdents, fd, buf, size);
+#endif
+}
+
+int
+main(void)
+{
+       static const char dot[] = ".";
+       static const char dot_dot[] = "..";
+       static const char dname[] = STR_getdents
+#if VERBOSE
+               "-v"
+#endif
+               ".test.tmp.dir";
+       static const char fname[] =
+               "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
+               "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
+               "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
+               "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
+               "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
+               "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
+               "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
+               "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nZ";
+
+       if (mkdir(dname, 0700))
+               perror_msg_and_fail("mkdir: %s", dname);
+       if (chdir(dname))
+               perror_msg_and_fail("chdir: %s", dname);
+       int fd = creat(fname, 0600);
+       if (fd < 0)
+               perror_msg_and_fail("creat: %s", fname);
+       if (close(fd))
+               perror_msg_and_fail("close: %s", fname);
+       fd = open(dot, O_RDONLY | O_DIRECTORY);
+       if (fd < 0)
+               perror_msg_and_fail("open: %s", dot);
+
+       unsigned int count = 0xdeadbeefU;
+       k_getdents(-1U, NULL, count);
+       printf("%s(-1, NULL, %u) = %s\n", STR_getdents, count, errstr);
+
+       static char buf[8192];
+       ls(fd, buf, sizeof(buf));
+
+       if (unlink(fname))
+               perror_msg_and_fail("unlink: %s", fname);
+       if (chdir(dot_dot))
+               perror_msg_and_fail("chdir: %s", dot_dot);
+       if (rmdir(dname))
+               perror_msg_and_fail("rmdir: %s", dname);
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
index a1c89e9b7eb691208478cbf94eb9618bf71ee19d..6a9c053817c9e1fb66f212f8201bf524d77591db 100644 (file)
@@ -77,9 +77,13 @@ int
 main(void)
 {
        kernel_ulong_t *const rlimit = tail_alloc(sizeof(*rlimit) * 2);
-       const struct xlat *xlat;
+       const struct xlat_data *xlat;
+       size_t i;
+
+       for (xlat = resources->data, i = 0; i < resources->size; ++xlat, ++i) {
+               if (!xlat->str)
+                       continue;
 
-       for (xlat = resources; xlat->str; ++xlat) {
                unsigned long res = 0xfacefeed00000000ULL | xlat->val;
                long rc = syscall(NR_GETRLIMIT, res, 0);
                if (rc && ENOSYS == errno)
diff --git a/tests-m32/xmalloc_for_tests.c b/tests-m32/xmalloc_for_tests.c
new file mode 100644 (file)
index 0000000..5c496ad
--- /dev/null
@@ -0,0 +1,2 @@
+#define error_msg_and_die error_msg_and_fail
+#include "xmalloc.c"
index 1b91e84467e300d4d520f7491dc890e8ed77c93b..8a86fdc39ad326686abf743534b5c8bae9effbaf 100644 (file)
@@ -34,10 +34,9 @@ static void
 print_statfs_type(const char *const prefix, const unsigned int magic)
 {
        fputs(prefix, stdout);
-       unsigned int i;
-       for (i = 0; i < ARRAY_SIZE(fsmagic); ++i)
-               if (magic == fsmagic[i].val) {
-                       fputs(fsmagic[i].str, stdout);
+       for (unsigned int i = 0; i < fsmagic->size; ++i)
+               if (magic == fsmagic->data[i].val) {
+                       fputs(fsmagic->data[i].str, stdout);
                        return;
                }
        printf("%#x", magic);
index 0d223bdc05462f2b2a440b26140fed6bea1e4233..aa9a0ae005f87ecbd5dfc9f92fac7341c10ba33c 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -46,6 +46,7 @@ typedef off_t libc_off_t;
 # define stat64 libc_stat64
 # define statx libc_statx
 # define statx_timestamp libc_statx_timestamp
+struct statx;
 # include <fcntl.h>
 # include <sys/stat.h>
 # undef statx_timestamp
@@ -460,19 +461,19 @@ main(void)
        SET_FLAGS_INVOKE(0xffffff,
                "AT_STATX_FORCE_SYNC|AT_STATX_DONT_SYNC|AT_SYMLINK_NOFOLLOW|"
                "AT_REMOVEDIR|AT_SYMLINK_FOLLOW|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|"
-               "0xff80ff");
+               "AT_RECURSIVE|0xff00ff");
 
        /* We're done playing with flags. */
        TEST_SYSCALL_STATX_FLAGS = old_flags;
        TEST_SYSCALL_STATX_FLAGS_STR = old_flags_str;
 
        SET_MASK_INVOKE(0, "0");
-       SET_MASK_INVOKE(0xfffff000U, "0xfffff000 /* STATX_??? */");
+       SET_MASK_INVOKE(0xffffe000U, "0xffffe000 /* STATX_??? */");
 
        SET_MASK_INVOKE(0xfffffffbU,
                "STATX_TYPE|STATX_MODE|STATX_UID|STATX_GID|STATX_ATIME|"
                "STATX_MTIME|STATX_CTIME|STATX_INO|STATX_SIZE|STATX_BLOCKS|"
-               "STATX_BTIME|0xfffff000");
+               "STATX_BTIME|STATX_MNT_ID|0xffffe000");
 
        SET_MASK_INVOKE(STATX_UID, "STATX_UID");
 
index 672959c424117aa5518da5b19402702626275e4b..3034e52770c35cc48d3f71a9cda26c5fbfbf335e 100644 (file)
@@ -1,7 +1,8 @@
 /*
- * Execute an executable with zero argc and specified anvironment.
+ * Execute an executable with zero argc and specified environment.
  *
  * Copyright (c) 2017-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
index 6aba591913ba118f7ce53f9a644afb53aa21030c..059b0321d58218ff49bd8f9139403436144cf012 100644 (file)
@@ -1,4 +1,4 @@
-Copyright (c) 2011-2019 The strace developers.
+Copyright (c) 2011-2020 The strace developers.
 All rights reserved.
 
 strace test suite is free software; you can redistribute it and/or modify
index 6ea036b517c5ed5912bbf0146b9049fb7b49d3ed..ec6fd737e39f9d67426c095905d2c6fbe37bd5bf 100644 (file)
@@ -1,18 +1,19 @@
 # Automake input for strace tests.
 #
 # Copyright (c) 2011-2016 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2011-2019 The strace developers.
+# Copyright (c) 2011-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 OS = linux
+CC = @CC_FOR_MX32@
 ARCH = @arch_mx32@
 NATIVE_ARCH = @arch_native@
 SIZEOF_KERNEL_LONG_T = @SIZEOF_KERNEL_LONG_T@
 SIZEOF_LONG = 4
 MPERS_NAME = mx32
-MPERS_CC_FLAGS = @cc_flags_mx32@
+MPERS_CC_FLAGS = @CFLAGS_FOR_MX32@ @cc_flags_mx32@
 ARCH_MFLAGS = -DMPERS_IS_$(MPERS_NAME) $(MPERS_CC_FLAGS)
 AM_CFLAGS = $(WARN_CFLAGS)
 AM_CPPFLAGS = $(ARCH_MFLAGS) \
@@ -29,6 +30,7 @@ AM_LDFLAGS = $(ARCH_MFLAGS)
 
 libtests_a_SOURCES = \
        create_nl_socket.c \
+       create_tmpfile.c \
        errno2name.c \
        error_msg.c \
        fill_memory.c \
@@ -40,15 +42,21 @@ libtests_a_SOURCES = \
        inode_of_sockfd.c \
        libmmsg.c \
        libsocketcall.c \
+       lock_file.c \
        overflowuid.c \
+       pidns.c \
+       pidns.h \
        pipe_maxfd.c \
        print_quoted_string.c \
        print_time.c \
        printflags.c \
-       printxval.c \
+       printxval-Xabbrev.c \
+       printxval-Xraw.c \
+       printxval-Xverbose.c \
        signal2name.c \
        skip_unavailable.c \
        sprintrc.c \
+       status.c \
        tail_alloc.c \
        test_netlink.h \
        test_nlattr.h \
@@ -58,6 +66,7 @@ libtests_a_SOURCES = \
        test_ucopy.h \
        tests.h \
        tprintf.c \
+       xmalloc_for_tests.c \
        # end of libtests_a_SOURCES
 libtests_a_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 check_LIBRARIES = libtests.a
@@ -73,49 +82,102 @@ check_PROGRAMS = $(PURE_EXECUTABLES) \
        attach-p-cmd-cmd \
        attach-p-cmd-p \
        block_reset_raise_run \
+       block_reset_run \
        bpf-obj_get_info_by_fd \
        bpf-obj_get_info_by_fd-prog \
        bpf-obj_get_info_by_fd-prog-v \
        bpf-obj_get_info_by_fd-v \
        bpf-success \
+       bpf-success-long-y \
        bpf-success-v \
        caps-abbrev \
        check_sigblock \
        check_sigign \
        clone_parent \
+       clone_parent--quiet-exit \
+       clone_parent-q \
+       clone_parent-qq \
        clone_ptrace \
+       clone_ptrace--quiet-attach \
+       clone_ptrace--quiet-exit \
+       clone_ptrace-q \
+       clone_ptrace-qq \
+       clone3-success \
+       clone3-success-Xabbrev \
+       clone3-success-Xraw \
+       clone3-success-Xverbose \
        count-f \
        delay \
        execve-v \
        execveat-v \
+       fcntl--pidns-translation \
+       fcntl64--pidns-translation \
+       filter_seccomp-flag \
+       filter_seccomp-perf \
        filter-unavailable \
        fork-f \
+       fork--pidns-translation \
        fsync-y \
+       get_process_reaper \
+       getpgrp--pidns-translation      \
        getpid  \
+       getpid--pidns-translation       \
        getppid \
+       getsid--pidns-translation \
        gettid \
+       gettid--pidns-translation \
        inject-nf \
        int_0x80 \
+       ioctl_block--pidns-translation \
        ioctl_dm-v \
        ioctl_evdev-success \
+       ioctl_evdev-success-Xabbrev \
+       ioctl_evdev-success-Xraw \
+       ioctl_evdev-success-Xverbose \
        ioctl_evdev-success-v \
-       ioctl_evdev-v \
+       ioctl_evdev-success-v-Xabbrev \
+       ioctl_evdev-success-v-Xraw \
+       ioctl_evdev-success-v-Xverbose \
+       ioctl_hdio-success \
+       ioctl_hdio-success-Xabbrev \
+       ioctl_hdio-success-Xraw \
+       ioctl_hdio-success-Xverbose \
+       ioctl_hdio-success-v \
+       ioctl_hdio-success-v-Xabbrev \
+       ioctl_hdio-success-v-Xraw \
+       ioctl_hdio-success-v-Xverbose \
        ioctl_loop-nv \
        ioctl_loop-v \
        ioctl_nsfs \
        ioctl_perf-success \
        ioctl_rtc-v \
+       ioctl_v4l2-success \
+       ioctl_v4l2-success-Xabbrev \
+       ioctl_v4l2-success-Xraw \
+       ioctl_v4l2-success-Xverbose \
+       ioctl_v4l2-success-v \
+       ioctl_v4l2-success-v-Xabbrev \
+       ioctl_v4l2-success-v-Xraw \
+       ioctl_v4l2-success-v-Xverbose \
+       ioprio--pidns-translation \
        is_linux_mips_n64 \
+       kcmp-y--pidns-translation \
        kill_child \
+       kill--pidns-translation \
        ksysent \
        list_sigaction_signum \
        localtime \
        looping_threads \
+       migrate_pages--pidns-translation \
        mmsg-silent \
        mmsg_name-v \
+       move_pages--pidns-translation \
        msg_control-v \
        net-accept-connect \
+       net-sockaddr--pidns-translation \
        net-tpacket_stats-success \
+       nlattr_ifla_xdp-y \
+       netlink_audit--pidns-translation \
        netlink_inet_diag \
        netlink_netlink_diag \
        netlink_unix_diag \
@@ -127,11 +189,20 @@ check_PROGRAMS = $(PURE_EXECUTABLES) \
        pc \
        perf_event_open_nonverbose \
        perf_event_open_unabbrev \
+       pidfd_open--pidns-translation \
+       pidfd_send_signal--pidns-translation \
+       pidns-cache \
+       poll-P \
+       ppoll-P \
        ppoll-v \
+       prlimit64--pidns-translation \
        prctl-seccomp-filter-v \
        prctl-seccomp-strict \
        prctl-spec-inject \
        print_maxfd \
+       print_ppid_tracerpid \
+       process_vm_readv--pidns-translation \
+       process_vm_writev--pidns-translation \
        qual_fault \
        qual_inject-error-signal \
        qual_inject-retval \
@@ -145,7 +216,13 @@ check_PROGRAMS = $(PURE_EXECUTABLES) \
        quotactl-xfs-v \
        redirect-fds \
        restart_syscall \
+       rt_sigqueueinfo--pidns-translation \
+       rt_tgsigqueueinfo--pidns-translation \
        run_expect_termsig \
+       sched_xetaffinity--pidns-translation \
+       sched_xetattr--pidns-translation \
+       sched_xetparam--pidns-translation \
+       sched_xetscheduler--pidns-translation \
        scm_rights \
        seccomp-filter-v \
        seccomp-strict \
@@ -153,17 +230,35 @@ check_PROGRAMS = $(PURE_EXECUTABLES) \
        set_ptracer_any \
        set_sigblock \
        set_sigign \
+       setpgrp-exec \
        signal_receive \
+       signal_receive--pidns-translation \
        sleep \
        stack-fcall \
+       stack-fcall-attach \
        stack-fcall-mangled \
+       status-none-threads \
+       status-unfinished-threads \
+       so_peercred--pidns-translation \
+       syslog-success \
+       tgkill--pidns-translation \
        threads-execve \
+       threads-execve--quiet-thread-execve \
+       threads-execve-q \
+       threads-execve-qq \
+       threads-execve-qqq \
+       tkill--pidns-translation \
+       tracer_ppid_pgid_sid \
+       trie_test \
        unblock_reset_raise \
        unix-pair-send-recv \
        unix-pair-sendto-recvfrom \
        vfork-f \
        wait4-v \
        waitid-v \
+       xetpgid--pidns-translation \
+       xetpriority--pidns-translation \
+       xet_robust_list--pidns-translation \
        zeroargc \
        # end of check_PROGRAMS
 
@@ -177,6 +272,8 @@ ftruncate64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 localtime_LDADD = $(clock_LIBS) $(LDADD)
 looping_threads_LDADD = -lpthread $(LDADD)
 lstat64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
+maybe_switch_current_tcp_LDADD = -lpthread $(LDADD)
+maybe_switch_current_tcp__quiet_thread_execve_LDADD = -lpthread $(LDADD)
 mmap64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 mmap64_Xabbrev_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 mmap64_Xraw_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
@@ -190,7 +287,13 @@ preadv_pwritev_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 pwritev_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 stat64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 statfs_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
+status_none_threads_LDADD = -lpthread $(LDADD)
+status_unfinished_threads_LDADD = -lpthread $(LDADD)
 threads_execve_LDADD = -lpthread $(clock_LIBS) $(LDADD)
+threads_execve__quiet_thread_execve_LDADD = -lpthread $(clock_LIBS) $(LDADD)
+threads_execve_q_LDADD = -lpthread $(clock_LIBS) $(LDADD)
+threads_execve_qq_LDADD = -lpthread $(clock_LIBS) $(LDADD)
+threads_execve_qqq_LDADD = -lpthread $(clock_LIBS) $(LDADD)
 times_LDADD = $(clock_LIBS) $(LDADD)
 truncate64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 uio_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
@@ -198,14 +301,22 @@ uio_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 stack_fcall_SOURCES = stack-fcall.c \
        stack-fcall-0.c stack-fcall-1.c stack-fcall-2.c stack-fcall-3.c
 
+stack_fcall_attach_SOURCES = stack-fcall-attach.c \
+       stack-fcall-0.c stack-fcall-1.c stack-fcall-2.c stack-fcall-3.c
+
 stack_fcall_mangled_SOURCES = stack-fcall-mangled.c \
        stack-fcall-mangled-0.c stack-fcall-mangled-1.c \
        stack-fcall-mangled-2.c stack-fcall-mangled-3.c
 
+trie_test_SOURCES = trie_test.c trie_for_tests.c
+trie_test_CPPFLAGS = $(AM_CPPFLAGS) $(CODE_COVERAGE_CPPFLAGS)
+trie_test_CFLAGS = $(AM_CFLAGS) $(CODE_COVERAGE_CFLAGS)
+trie_test_LDADD = $(LDADD) $(CODE_COVERAGE_LIBS)
+
 include gen_tests.am
 
 if ENABLE_STACKTRACE
-STACKTRACE_TESTS = strace-k.test
+STACKTRACE_TESTS = strace-k.test strace-k-p.test
 if USE_DEMANGLE
 STACKTRACE_TESTS += strace-k-demangle.test
 endif
@@ -214,6 +325,7 @@ STACKTRACE_TESTS =
 endif
 
 DECODER_TESTS = \
+       bpf-success-long-y.test \
        bpf-success-v.test \
        bpf-success.test \
        brk.test \
@@ -226,17 +338,21 @@ DECODER_TESTS = \
        btrfs-wX.test \
        caps-abbrev.test \
        caps.test \
+       clone-flags.test \
+       clone3-success.test \
        eventfd.test \
        execve-v.test \
        execve.test \
        fadvise64.test \
+       faccessat.test \
+       faccessat2.test \
        futex.test \
        getuid.test \
        int_0x80.test \
+       inotify_init-y.test \
        ioctl.test \
-       ioctl_evdev-success-v.test \
+       ioctl_block--pidns-translation.test \
        ioctl_evdev-success.test \
-       ioctl_perf-success.test \
        ipc_msgbuf.test \
        kern_features-fault.test \
        llseek.test \
@@ -278,6 +394,7 @@ DECODER_TESTS = \
        seccomp-strict.test \
        sigaltstack.test \
        sun_path.test \
+       syslog-success.test \
        uio.test \
        umount.test \
        umount2.test \
@@ -293,7 +410,6 @@ MISC_TESTS = \
        attach-f-p.test \
        attach-p-cmd.test \
        bexecve.test \
-       clone_parent.test \
        clone_ptrace.test \
        count-f.test \
        count.test \
@@ -302,20 +418,24 @@ MISC_TESTS = \
        detach-sleeping.test \
        detach-stopped.test \
        fflush.test \
+       filter_seccomp-perf.test \
        filter-unavailable.test \
        filtering_fd-syntax.test \
        filtering_syscall-syntax.test \
        first_exec_failure.test \
+       fork--pidns-translation.test \
        get_regs.test \
+       gettid--pidns-translation.test \
        inject-nf.test \
        interactive_block.test \
        kill_child.test \
-       ksysent.test \
        localtime.test \
        looping_threads.test \
+       netlink_audit--pidns-translation.test \
        opipe.test \
        options-syntax.test \
        pc.test \
+       pidns-cache.test \
        printpath-umovestr-legacy.test \
        printstrn-umoven-legacy.test \
        qual_fault-syntax.test \
@@ -335,8 +455,16 @@ MISC_TESTS = \
        restart_syscall.test \
        sigblock.test \
        sigign.test \
+       status-detached.test \
+       status-none-threads.test \
+       status-unfinished-threads.test \
        strace-C.test \
+       strace-D.test \
+       strace-DD.test \
+       strace-DDD.test \
        strace-E.test \
+       strace-E-override.test \
+       strace-E-unset.test \
        strace-S.test \
        strace-T.test \
        strace-V.test \
@@ -349,6 +477,7 @@ MISC_TESTS = \
        strace-ttt.test \
        termsig.test \
        threads-execve.test \
+       umovestr_cached.test \
        # end of MISC_TESTS
 
 TESTS = $(GEN_TESTS) $(DECODER_TESTS) $(MISC_TESTS) $(STACKTRACE_TESTS)
@@ -381,7 +510,10 @@ EXTRA_DIST = \
        eventfd.expected \
        fadvise.h \
        fcntl-common.c \
+       filter_seccomp.in \
+       filter_seccomp.sh \
        filter-unavailable.expected \
+       fork--pidns-translation.awk \
        fstatat.c \
        fstatx.c \
        gen_pure_executables.sh \
@@ -390,17 +522,20 @@ EXTRA_DIST = \
        getresugid.c \
        init.sh \
        init_delete_module.h \
+       ioctl-success.sh \
        ioctl_kvm_run_common.c \
        ipc.sh \
+       kernel_old_timespec.h \
+       kernel_old_timex.h \
        ksysent.sed \
        lstatx.c \
        match.awk \
        net.expected \
-       netlink_sock_diag-v.sh \
        nlattr_ifla.h \
        pipe.expected \
        print_user_desc.c \
        printsignal.c \
+       printxval.c \
        process_vm_readv_writev.c \
        pure_executables.list \
        qual_fault-exit_group.expected \
@@ -414,6 +549,7 @@ EXTRA_DIST = \
        run.sh \
        sched.in \
        scno_tampering.sh \
+       semop-common.c \
        setfsugid.c \
        setresugid.c \
        setreugid.c \
@@ -422,18 +558,37 @@ EXTRA_DIST = \
        sockaddr_xlat.c \
        sockname.c \
        stack-fcall.h \
+       status-detached.expected \
+       strace--follow-forks-output-separately.expected \
+       strace--relative-timestamps.expected \
+       strace--relative-timestamps-s.expected \
+       strace--relative-timestamps-ms.expected \
+       strace--relative-timestamps-us.expected \
+       strace--relative-timestamps-ns.expected \
+       strace--syscall-times.expected \
+       strace--syscall-times-s.expected \
+       strace--syscall-times-ms.expected \
+       strace--syscall-times-us.expected \
+       strace--syscall-times-ns.expected \
        strace-C.expected \
+       strace-D.expected \
+       strace-DDD.expected \
        strace-E.expected \
+       strace-E-unset.expected \
        strace-T.expected \
        strace-ff.expected \
        strace-k-demangle.expected \
        strace-k-demangle.test \
+       strace-k-p.expected \
+       strace-k-p.test \
        strace-k.expected \
        strace-k.test \
        strace-r.expected \
        strace.supp \
        sun_path.expected \
        syntax.sh \
+       trace_clock.in \
+       trace_creds.in \
        trace_fstat.in \
        trace_fstatfs.in \
        trace_lstat.in \
@@ -454,6 +609,7 @@ EXTRA_DIST = \
        unix-pair-send-recv.expected \
        unix-pair-sendto-recvfrom.expected \
        xchownx.c \
+       xgetdents.c \
        xgetrlimit.c \
        xselect.c \
        xstatfs.c \
index c2557caabad392c3f8b9e0accc110e27d3969035..db08967529079734cb08a6836a401fb4c460829d 100644 (file)
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.2 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -17,7 +17,7 @@
 # Automake input for strace tests.
 #
 # Copyright (c) 2011-2016 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2011-2019 The strace developers.
+# Copyright (c) 2011-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -105,59 +105,173 @@ host_triplet = @host@
 check_PROGRAMS = $(am__EXEEXT_1) _newselect-P$(EXEEXT) answer$(EXEEXT) \
        attach-f-p$(EXEEXT) attach-f-p-cmd$(EXEEXT) \
        attach-p-cmd-cmd$(EXEEXT) attach-p-cmd-p$(EXEEXT) \
-       block_reset_raise_run$(EXEEXT) bpf-obj_get_info_by_fd$(EXEEXT) \
+       block_reset_raise_run$(EXEEXT) block_reset_run$(EXEEXT) \
+       bpf-obj_get_info_by_fd$(EXEEXT) \
        bpf-obj_get_info_by_fd-prog$(EXEEXT) \
        bpf-obj_get_info_by_fd-prog-v$(EXEEXT) \
        bpf-obj_get_info_by_fd-v$(EXEEXT) bpf-success$(EXEEXT) \
-       bpf-success-v$(EXEEXT) caps-abbrev$(EXEEXT) \
-       check_sigblock$(EXEEXT) check_sigign$(EXEEXT) \
-       clone_parent$(EXEEXT) clone_ptrace$(EXEEXT) count-f$(EXEEXT) \
+       bpf-success-long-y$(EXEEXT) bpf-success-v$(EXEEXT) \
+       caps-abbrev$(EXEEXT) check_sigblock$(EXEEXT) \
+       check_sigign$(EXEEXT) clone_parent$(EXEEXT) \
+       clone_parent--quiet-exit$(EXEEXT) clone_parent-q$(EXEEXT) \
+       clone_parent-qq$(EXEEXT) clone_ptrace$(EXEEXT) \
+       clone_ptrace--quiet-attach$(EXEEXT) \
+       clone_ptrace--quiet-exit$(EXEEXT) clone_ptrace-q$(EXEEXT) \
+       clone_ptrace-qq$(EXEEXT) clone3-success$(EXEEXT) \
+       clone3-success-Xabbrev$(EXEEXT) clone3-success-Xraw$(EXEEXT) \
+       clone3-success-Xverbose$(EXEEXT) count-f$(EXEEXT) \
        delay$(EXEEXT) execve-v$(EXEEXT) execveat-v$(EXEEXT) \
-       filter-unavailable$(EXEEXT) fork-f$(EXEEXT) fsync-y$(EXEEXT) \
-       getpid$(EXEEXT) getppid$(EXEEXT) gettid$(EXEEXT) \
-       inject-nf$(EXEEXT) int_0x80$(EXEEXT) ioctl_dm-v$(EXEEXT) \
-       ioctl_evdev-success$(EXEEXT) ioctl_evdev-success-v$(EXEEXT) \
-       ioctl_evdev-v$(EXEEXT) ioctl_loop-nv$(EXEEXT) \
+       fcntl--pidns-translation$(EXEEXT) \
+       fcntl64--pidns-translation$(EXEEXT) \
+       filter_seccomp-flag$(EXEEXT) filter_seccomp-perf$(EXEEXT) \
+       filter-unavailable$(EXEEXT) fork-f$(EXEEXT) \
+       fork--pidns-translation$(EXEEXT) fsync-y$(EXEEXT) \
+       get_process_reaper$(EXEEXT) \
+       getpgrp--pidns-translation$(EXEEXT) getpid$(EXEEXT) \
+       getpid--pidns-translation$(EXEEXT) getppid$(EXEEXT) \
+       getsid--pidns-translation$(EXEEXT) gettid$(EXEEXT) \
+       gettid--pidns-translation$(EXEEXT) inject-nf$(EXEEXT) \
+       int_0x80$(EXEEXT) ioctl_block--pidns-translation$(EXEEXT) \
+       ioctl_dm-v$(EXEEXT) ioctl_evdev-success$(EXEEXT) \
+       ioctl_evdev-success-Xabbrev$(EXEEXT) \
+       ioctl_evdev-success-Xraw$(EXEEXT) \
+       ioctl_evdev-success-Xverbose$(EXEEXT) \
+       ioctl_evdev-success-v$(EXEEXT) \
+       ioctl_evdev-success-v-Xabbrev$(EXEEXT) \
+       ioctl_evdev-success-v-Xraw$(EXEEXT) \
+       ioctl_evdev-success-v-Xverbose$(EXEEXT) \
+       ioctl_hdio-success$(EXEEXT) \
+       ioctl_hdio-success-Xabbrev$(EXEEXT) \
+       ioctl_hdio-success-Xraw$(EXEEXT) \
+       ioctl_hdio-success-Xverbose$(EXEEXT) \
+       ioctl_hdio-success-v$(EXEEXT) \
+       ioctl_hdio-success-v-Xabbrev$(EXEEXT) \
+       ioctl_hdio-success-v-Xraw$(EXEEXT) \
+       ioctl_hdio-success-v-Xverbose$(EXEEXT) ioctl_loop-nv$(EXEEXT) \
        ioctl_loop-v$(EXEEXT) ioctl_nsfs$(EXEEXT) \
        ioctl_perf-success$(EXEEXT) ioctl_rtc-v$(EXEEXT) \
-       is_linux_mips_n64$(EXEEXT) kill_child$(EXEEXT) \
-       ksysent$(EXEEXT) list_sigaction_signum$(EXEEXT) \
-       localtime$(EXEEXT) looping_threads$(EXEEXT) \
-       mmsg-silent$(EXEEXT) mmsg_name-v$(EXEEXT) \
+       ioctl_v4l2-success$(EXEEXT) \
+       ioctl_v4l2-success-Xabbrev$(EXEEXT) \
+       ioctl_v4l2-success-Xraw$(EXEEXT) \
+       ioctl_v4l2-success-Xverbose$(EXEEXT) \
+       ioctl_v4l2-success-v$(EXEEXT) \
+       ioctl_v4l2-success-v-Xabbrev$(EXEEXT) \
+       ioctl_v4l2-success-v-Xraw$(EXEEXT) \
+       ioctl_v4l2-success-v-Xverbose$(EXEEXT) \
+       ioprio--pidns-translation$(EXEEXT) is_linux_mips_n64$(EXEEXT) \
+       kcmp-y--pidns-translation$(EXEEXT) kill_child$(EXEEXT) \
+       kill--pidns-translation$(EXEEXT) ksysent$(EXEEXT) \
+       list_sigaction_signum$(EXEEXT) localtime$(EXEEXT) \
+       looping_threads$(EXEEXT) \
+       migrate_pages--pidns-translation$(EXEEXT) mmsg-silent$(EXEEXT) \
+       mmsg_name-v$(EXEEXT) move_pages--pidns-translation$(EXEEXT) \
        msg_control-v$(EXEEXT) net-accept-connect$(EXEEXT) \
-       net-tpacket_stats-success$(EXEEXT) netlink_inet_diag$(EXEEXT) \
-       netlink_netlink_diag$(EXEEXT) netlink_unix_diag$(EXEEXT) \
-       nsyscalls$(EXEEXT) nsyscalls-d$(EXEEXT) oldselect-P$(EXEEXT) \
+       net-sockaddr--pidns-translation$(EXEEXT) \
+       net-tpacket_stats-success$(EXEEXT) nlattr_ifla_xdp-y$(EXEEXT) \
+       netlink_audit--pidns-translation$(EXEEXT) \
+       netlink_inet_diag$(EXEEXT) netlink_netlink_diag$(EXEEXT) \
+       netlink_unix_diag$(EXEEXT) nsyscalls$(EXEEXT) \
+       nsyscalls-d$(EXEEXT) oldselect-P$(EXEEXT) \
        oldselect-efault-P$(EXEEXT) orphaned_process_group$(EXEEXT) \
        pc$(EXEEXT) perf_event_open_nonverbose$(EXEEXT) \
-       perf_event_open_unabbrev$(EXEEXT) ppoll-v$(EXEEXT) \
+       perf_event_open_unabbrev$(EXEEXT) \
+       pidfd_open--pidns-translation$(EXEEXT) \
+       pidfd_send_signal--pidns-translation$(EXEEXT) \
+       pidns-cache$(EXEEXT) poll-P$(EXEEXT) ppoll-P$(EXEEXT) \
+       ppoll-v$(EXEEXT) prlimit64--pidns-translation$(EXEEXT) \
        prctl-seccomp-filter-v$(EXEEXT) prctl-seccomp-strict$(EXEEXT) \
        prctl-spec-inject$(EXEEXT) print_maxfd$(EXEEXT) \
+       print_ppid_tracerpid$(EXEEXT) \
+       process_vm_readv--pidns-translation$(EXEEXT) \
+       process_vm_writev--pidns-translation$(EXEEXT) \
        qual_fault$(EXEEXT) qual_inject-error-signal$(EXEEXT) \
        qual_inject-retval$(EXEEXT) qual_inject-signal$(EXEEXT) \
        qual_signal$(EXEEXT) quotactl-success$(EXEEXT) \
        quotactl-success-v$(EXEEXT) quotactl-v$(EXEEXT) \
        quotactl-xfs-success$(EXEEXT) quotactl-xfs-success-v$(EXEEXT) \
        quotactl-xfs-v$(EXEEXT) redirect-fds$(EXEEXT) \
-       restart_syscall$(EXEEXT) run_expect_termsig$(EXEEXT) \
+       restart_syscall$(EXEEXT) \
+       rt_sigqueueinfo--pidns-translation$(EXEEXT) \
+       rt_tgsigqueueinfo--pidns-translation$(EXEEXT) \
+       run_expect_termsig$(EXEEXT) \
+       sched_xetaffinity--pidns-translation$(EXEEXT) \
+       sched_xetattr--pidns-translation$(EXEEXT) \
+       sched_xetparam--pidns-translation$(EXEEXT) \
+       sched_xetscheduler--pidns-translation$(EXEEXT) \
        scm_rights$(EXEEXT) seccomp-filter-v$(EXEEXT) \
        seccomp-strict$(EXEEXT) select-P$(EXEEXT) \
        set_ptracer_any$(EXEEXT) set_sigblock$(EXEEXT) \
-       set_sigign$(EXEEXT) signal_receive$(EXEEXT) sleep$(EXEEXT) \
-       stack-fcall$(EXEEXT) stack-fcall-mangled$(EXEEXT) \
-       threads-execve$(EXEEXT) unblock_reset_raise$(EXEEXT) \
-       unix-pair-send-recv$(EXEEXT) \
+       set_sigign$(EXEEXT) setpgrp-exec$(EXEEXT) \
+       signal_receive$(EXEEXT) \
+       signal_receive--pidns-translation$(EXEEXT) sleep$(EXEEXT) \
+       stack-fcall$(EXEEXT) stack-fcall-attach$(EXEEXT) \
+       stack-fcall-mangled$(EXEEXT) status-none-threads$(EXEEXT) \
+       status-unfinished-threads$(EXEEXT) \
+       so_peercred--pidns-translation$(EXEEXT) \
+       syslog-success$(EXEEXT) tgkill--pidns-translation$(EXEEXT) \
+       threads-execve$(EXEEXT) \
+       threads-execve--quiet-thread-execve$(EXEEXT) \
+       threads-execve-q$(EXEEXT) threads-execve-qq$(EXEEXT) \
+       threads-execve-qqq$(EXEEXT) tkill--pidns-translation$(EXEEXT) \
+       tracer_ppid_pgid_sid$(EXEEXT) trie_test$(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)
+       wait4-v$(EXEEXT) waitid-v$(EXEEXT) \
+       xetpgid--pidns-translation$(EXEEXT) \
+       xetpriority--pidns-translation$(EXEEXT) \
+       xet_robust_list--pidns-translation$(EXEEXT) zeroargc$(EXEEXT)
 @ENABLE_STACKTRACE_TRUE@@USE_DEMANGLE_TRUE@am__append_1 = strace-k-demangle.test
 TESTS = $(GEN_TESTS) $(DECODER_TESTS) $(MISC_TESTS) $(am__EXEEXT_2)
 subdir = tests-mx32
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_code_coverage.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/xlat/btrfs_compress_types.m4 \
+       $(top_srcdir)/xlat/close_range_flags.m4 \
+       $(top_srcdir)/xlat/loop_flags_options.m4 \
+       $(top_srcdir)/xlat/rtnl_ifla_xdp_attached_mode.m4 \
+       $(top_srcdir)/xlat/rtnl_ifla_xdp_attrs.m4 \
+       $(top_srcdir)/xlat/rtnl_link_attrs.m4 \
+       $(top_srcdir)/xlat/rtnl_tc_action_attrs.m4 \
+       $(top_srcdir)/xlat/rtnl_tca_stab_attrs.m4 \
+       $(top_srcdir)/xlat/rtnl_tca_stats_attrs.m4 \
+       $(top_srcdir)/xlat/st_check_enums.m4 \
+       $(top_srcdir)/xlat/sysctl_kern.m4 \
+       $(top_srcdir)/xlat/sysctl_net.m4 \
+       $(top_srcdir)/xlat/sysctl_net_core.m4 \
+       $(top_srcdir)/xlat/sysctl_net_ipv4.m4 \
+       $(top_srcdir)/xlat/sysctl_net_ipv4_conf.m4 \
+       $(top_srcdir)/xlat/sysctl_net_ipv4_route.m4 \
+       $(top_srcdir)/xlat/sysctl_net_ipv6.m4 \
+       $(top_srcdir)/xlat/sysctl_net_ipv6_route.m4 \
+       $(top_srcdir)/xlat/sysctl_net_unix.m4 \
+       $(top_srcdir)/xlat/sysctl_root.m4 \
+       $(top_srcdir)/xlat/sysctl_vm.m4 \
+       $(top_srcdir)/xlat/v4l2_buf_types.m4 \
+       $(top_srcdir)/xlat/v4l2_colorspaces.m4 \
+       $(top_srcdir)/xlat/v4l2_control_types.m4 \
+       $(top_srcdir)/xlat/v4l2_fields.m4 \
+       $(top_srcdir)/xlat/v4l2_framesize_types.m4 \
+       $(top_srcdir)/xlat/v4l2_memories.m4 \
+       $(top_srcdir)/xlat/v4l2_tuner_types.m4 \
+       $(top_srcdir)/xlat/waitid_types.m4 \
+       $(top_srcdir)/types/check-btrfs.m4 \
+       $(top_srcdir)/types/check-cryptouser.m4 \
+       $(top_srcdir)/types/check-evdev.m4 \
+       $(top_srcdir)/types/check-io_uring.m4 \
+       $(top_srcdir)/types/check-loop.m4 \
+       $(top_srcdir)/types/check-openat2.m4 \
+       $(top_srcdir)/types/check-rtnl_link.m4 \
+       $(top_srcdir)/types/check-rtnl_mdb.m4 \
+       $(top_srcdir)/types/check-rtnl_neightbl.m4 \
+       $(top_srcdir)/types/check-rtnl_route.m4 \
+       $(top_srcdir)/types/check-tee.m4 \
+       $(top_srcdir)/types/check-v4l2.m4 \
+       $(top_srcdir)/types/st_check_types.m4 \
+       $(top_srcdir)/m4/ax_code_coverage.m4 \
        $(top_srcdir)/m4/ax_prog_cc_for_build.m4 \
        $(top_srcdir)/m4/ax_valgrind_check.m4 \
        $(top_srcdir)/m4/bpf_attr.m4 $(top_srcdir)/m4/mpers.m4 \
-       $(top_srcdir)/m4/st_demangle.m4 $(top_srcdir)/m4/st_libdw.m4 \
+       $(top_srcdir)/m4/st_demangle.m4 \
+       $(top_srcdir)/m4/st_esyscmd_s.m4 $(top_srcdir)/m4/st_libdw.m4 \
        $(top_srcdir)/m4/st_libunwind.m4 \
        $(top_srcdir)/m4/st_save_restore_var.m4 \
        $(top_srcdir)/m4/st_stacktrace.m4 \
@@ -173,19 +287,27 @@ CONFIG_CLEAN_VPATH_FILES =
 am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \
        access$(EXEEXT) acct$(EXEEXT) add_key$(EXEEXT) \
        adjtimex$(EXEEXT) aio$(EXEEXT) aio_pgetevents$(EXEEXT) \
-       alarm$(EXEEXT) bpf$(EXEEXT) bpf-obj_get_info_by_fd$(EXEEXT) \
-       bpf-obj_get_info_by_fd-prog$(EXEEXT) \
-       bpf-obj_get_info_by_fd-prog-v$(EXEEXT) \
-       bpf-obj_get_info_by_fd-v$(EXEEXT) bpf-v$(EXEEXT) brk$(EXEEXT) \
+       alarm$(EXEEXT) bpf$(EXEEXT) bpf-v$(EXEEXT) brk$(EXEEXT) \
        btrfs$(EXEEXT) caps$(EXEEXT) chmod$(EXEEXT) chown$(EXEEXT) \
        chown32$(EXEEXT) chroot$(EXEEXT) clock_adjtime$(EXEEXT) \
        clock_nanosleep$(EXEEXT) clock_xettime$(EXEEXT) \
+       clone-flags$(EXEEXT) clone3$(EXEEXT) clone3-Xabbrev$(EXEEXT) \
+       clone3-Xraw$(EXEEXT) clone3-Xverbose$(EXEEXT) \
+       close_range$(EXEEXT) close_range-P$(EXEEXT) \
+       close_range-y$(EXEEXT) close_range-yy$(EXEEXT) \
        copy_file_range$(EXEEXT) creat$(EXEEXT) delete_module$(EXEEXT) \
-       dev-yy$(EXEEXT) dup$(EXEEXT) dup2$(EXEEXT) dup3$(EXEEXT) \
+       dev--decode-fds-dev$(EXEEXT) dev--decode-fds-path$(EXEEXT) \
+       dev--decode-fds-socket$(EXEEXT) dev-yy$(EXEEXT) dup$(EXEEXT) \
+       dup-P$(EXEEXT) dup-y$(EXEEXT) dup-yy$(EXEEXT) dup2$(EXEEXT) \
+       dup2-P$(EXEEXT) dup2-y$(EXEEXT) dup2-yy$(EXEEXT) dup3$(EXEEXT) \
+       dup3-P$(EXEEXT) dup3-y$(EXEEXT) dup3-yy$(EXEEXT) \
        epoll_create$(EXEEXT) epoll_create1$(EXEEXT) \
        epoll_ctl$(EXEEXT) epoll_pwait$(EXEEXT) epoll_wait$(EXEEXT) \
        erestartsys$(EXEEXT) eventfd$(EXEEXT) execve$(EXEEXT) \
-       execveat$(EXEEXT) faccessat$(EXEEXT) fadvise64$(EXEEXT) \
+       execveat$(EXEEXT) faccessat$(EXEEXT) faccessat-P$(EXEEXT) \
+       faccessat-y$(EXEEXT) faccessat-yy$(EXEEXT) faccessat2$(EXEEXT) \
+       faccessat2-P$(EXEEXT) faccessat2-y$(EXEEXT) \
+       faccessat2-yy$(EXEEXT) fadvise64$(EXEEXT) \
        fadvise64_64$(EXEEXT) fallocate$(EXEEXT) \
        fanotify_init$(EXEEXT) fanotify_mark$(EXEEXT) \
        fanotify_mark-Xabbrev$(EXEEXT) fanotify_mark-Xraw$(EXEEXT) \
@@ -194,37 +316,54 @@ am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \
        fchown32$(EXEEXT) fchownat$(EXEEXT) fcntl$(EXEEXT) \
        fcntl64$(EXEEXT) fdatasync$(EXEEXT) fflush$(EXEEXT) \
        file_handle$(EXEEXT) file_ioctl$(EXEEXT) finit_module$(EXEEXT) \
-       flock$(EXEEXT) fstat$(EXEEXT) fstat-Xabbrev$(EXEEXT) \
+       flock$(EXEEXT) fsconfig$(EXEEXT) fsconfig-P$(EXEEXT) \
+       fsmount$(EXEEXT) fsopen$(EXEEXT) fspick$(EXEEXT) \
+       fspick-P$(EXEEXT) fstat$(EXEEXT) fstat-Xabbrev$(EXEEXT) \
        fstat-Xraw$(EXEEXT) fstat-Xverbose$(EXEEXT) fstat64$(EXEEXT) \
        fstat64-Xabbrev$(EXEEXT) fstat64-Xraw$(EXEEXT) \
        fstat64-Xverbose$(EXEEXT) fstatat64$(EXEEXT) fstatfs$(EXEEXT) \
        fstatfs64$(EXEEXT) fsync$(EXEEXT) ftruncate$(EXEEXT) \
        ftruncate64$(EXEEXT) futex$(EXEEXT) futimesat$(EXEEXT) \
        get_mempolicy$(EXEEXT) getcpu$(EXEEXT) getcwd$(EXEEXT) \
-       getdents$(EXEEXT) getdents64$(EXEEXT) getegid$(EXEEXT) \
-       getegid32$(EXEEXT) geteuid$(EXEEXT) geteuid32$(EXEEXT) \
-       getgid$(EXEEXT) getgid32$(EXEEXT) getgroups$(EXEEXT) \
-       getgroups32$(EXEEXT) getpeername$(EXEEXT) getpgrp$(EXEEXT) \
-       getpid$(EXEEXT) getppid$(EXEEXT) getrandom$(EXEEXT) \
-       getresgid$(EXEEXT) getresgid32$(EXEEXT) getresuid$(EXEEXT) \
-       getresuid32$(EXEEXT) getrlimit$(EXEEXT) getrusage$(EXEEXT) \
-       getsid$(EXEEXT) getsockname$(EXEEXT) getuid$(EXEEXT) \
-       getuid32$(EXEEXT) getxxid$(EXEEXT) group_req$(EXEEXT) \
-       inet-cmsg$(EXEEXT) init_module$(EXEEXT) inotify$(EXEEXT) \
-       inotify_init1$(EXEEXT) io_uring_enter$(EXEEXT) \
-       io_uring_register$(EXEEXT) io_uring_setup$(EXEEXT) \
-       ioctl$(EXEEXT) ioctl_block$(EXEEXT) ioctl_dm$(EXEEXT) \
-       ioctl_evdev$(EXEEXT) ioctl_inotify$(EXEEXT) \
+       getdents$(EXEEXT) getdents-v$(EXEEXT) getdents64$(EXEEXT) \
+       getdents64-v$(EXEEXT) getegid$(EXEEXT) getegid32$(EXEEXT) \
+       geteuid$(EXEEXT) geteuid32$(EXEEXT) getgid$(EXEEXT) \
+       getgid32$(EXEEXT) getgroups$(EXEEXT) getgroups32$(EXEEXT) \
+       getpeername$(EXEEXT) getpgrp$(EXEEXT) getpid$(EXEEXT) \
+       getppid$(EXEEXT) getrandom$(EXEEXT) getresgid$(EXEEXT) \
+       getresgid32$(EXEEXT) getresuid$(EXEEXT) getresuid32$(EXEEXT) \
+       getrlimit$(EXEEXT) getrusage$(EXEEXT) getsid$(EXEEXT) \
+       getsockname$(EXEEXT) getuid$(EXEEXT) getuid32$(EXEEXT) \
+       getxgid$(EXEEXT) getxpid$(EXEEXT) getxuid$(EXEEXT) \
+       group_req$(EXEEXT) inet-cmsg$(EXEEXT) init_module$(EXEEXT) \
+       inotify$(EXEEXT) inotify_init$(EXEEXT) inotify_init-y$(EXEEXT) \
+       inotify_init1$(EXEEXT) inotify_init1-y$(EXEEXT) \
+       io_uring_enter$(EXEEXT) io_uring_register$(EXEEXT) \
+       io_uring_setup$(EXEEXT) ioctl$(EXEEXT) ioctl_block$(EXEEXT) \
+       ioctl_dm$(EXEEXT) ioctl_evdev$(EXEEXT) \
+       ioctl_evdev-Xabbrev$(EXEEXT) ioctl_evdev-Xraw$(EXEEXT) \
+       ioctl_evdev-Xverbose$(EXEEXT) ioctl_evdev-v$(EXEEXT) \
+       ioctl_evdev-v-Xabbrev$(EXEEXT) ioctl_evdev-v-Xraw$(EXEEXT) \
+       ioctl_evdev-v-Xverbose$(EXEEXT) ioctl_hdio$(EXEEXT) \
+       ioctl_hdio-Xabbrev$(EXEEXT) ioctl_hdio-Xraw$(EXEEXT) \
+       ioctl_hdio-Xverbose$(EXEEXT) ioctl_hdio-v$(EXEEXT) \
+       ioctl_hdio-v-Xabbrev$(EXEEXT) ioctl_hdio-v-Xraw$(EXEEXT) \
+       ioctl_hdio-v-Xverbose$(EXEEXT) ioctl_inotify$(EXEEXT) \
        ioctl_kvm_run$(EXEEXT) ioctl_kvm_run-v$(EXEEXT) \
        ioctl_kvm_run_auxstr_vcpu$(EXEEXT) ioctl_loop$(EXEEXT) \
        ioctl_mtd$(EXEEXT) ioctl_nbd$(EXEEXT) ioctl_perf$(EXEEXT) \
        ioctl_ptp$(EXEEXT) ioctl_random$(EXEEXT) ioctl_rtc$(EXEEXT) \
        ioctl_scsi$(EXEEXT) ioctl_sg_io_v3$(EXEEXT) \
        ioctl_sg_io_v4$(EXEEXT) ioctl_sock_gifconf$(EXEEXT) \
-       ioctl_uffdio$(EXEEXT) ioctl_v4l2$(EXEEXT) ioperm$(EXEEXT) \
-       iopl$(EXEEXT) ioprio$(EXEEXT) ioprio-Xabbrev$(EXEEXT) \
-       ioprio-Xraw$(EXEEXT) ioprio-Xverbose$(EXEEXT) ip_mreq$(EXEEXT) \
-       ipc$(EXEEXT) ipc_msg$(EXEEXT) ipc_msg-Xabbrev$(EXEEXT) \
+       ioctl_tee$(EXEEXT) ioctl_uffdio$(EXEEXT) ioctl_v4l2$(EXEEXT) \
+       ioctl_v4l2-Xabbrev$(EXEEXT) ioctl_v4l2-Xraw$(EXEEXT) \
+       ioctl_v4l2-Xverbose$(EXEEXT) ioctl_v4l2-v$(EXEEXT) \
+       ioctl_v4l2-v-Xabbrev$(EXEEXT) ioctl_v4l2-v-Xraw$(EXEEXT) \
+       ioctl_v4l2-v-Xverbose$(EXEEXT) ioctl_watchdog$(EXEEXT) \
+       ioperm$(EXEEXT) iopl$(EXEEXT) ioprio$(EXEEXT) \
+       ioprio-Xabbrev$(EXEEXT) ioprio-Xraw$(EXEEXT) \
+       ioprio-Xverbose$(EXEEXT) ip_mreq$(EXEEXT) ipc$(EXEEXT) \
+       ipc_msg$(EXEEXT) ipc_msg-Xabbrev$(EXEEXT) \
        ipc_msg-Xraw$(EXEEXT) ipc_msg-Xverbose$(EXEEXT) \
        ipc_msgbuf$(EXEEXT) ipc_msgbuf-Xabbrev$(EXEEXT) \
        ipc_msgbuf-Xraw$(EXEEXT) ipc_msgbuf-Xverbose$(EXEEXT) \
@@ -240,7 +379,10 @@ am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(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) \
+       madvise$(EXEEXT) maybe_switch_current_tcp$(EXEEXT) \
+       maybe_switch_current_tcp--quiet-thread-execve$(EXEEXT) \
+       mbind$(EXEEXT) mbind-Xabbrev$(EXEEXT) mbind-Xraw$(EXEEXT) \
+       mbind-Xverbose$(EXEEXT) membarrier$(EXEEXT) \
        memfd_create$(EXEEXT) memfd_create-Xabbrev$(EXEEXT) \
        memfd_create-Xraw$(EXEEXT) memfd_create-Xverbose$(EXEEXT) \
        migrate_pages$(EXEEXT) mincore$(EXEEXT) mkdir$(EXEEXT) \
@@ -251,14 +393,18 @@ am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \
        mmap64-Xraw$(EXEEXT) mmap64-Xverbose$(EXEEXT) mmsg$(EXEEXT) \
        mmsg_name$(EXEEXT) modify_ldt$(EXEEXT) mount$(EXEEXT) \
        mount-Xabbrev$(EXEEXT) mount-Xraw$(EXEEXT) \
-       mount-Xverbose$(EXEEXT) move_pages$(EXEEXT) \
+       mount-Xverbose$(EXEEXT) move_mount$(EXEEXT) \
+       move_mount-P$(EXEEXT) move_pages$(EXEEXT) \
        move_pages-Xabbrev$(EXEEXT) move_pages-Xraw$(EXEEXT) \
        move_pages-Xverbose$(EXEEXT) mq$(EXEEXT) mq_sendrecv$(EXEEXT) \
        mq_sendrecv-read$(EXEEXT) mq_sendrecv-write$(EXEEXT) \
        msg_control$(EXEEXT) msg_name$(EXEEXT) munlockall$(EXEEXT) \
-       nanosleep$(EXEEXT) net-icmp_filter$(EXEEXT) \
-       net-packet_mreq$(EXEEXT) net-packet_mreq-Xabbrev$(EXEEXT) \
-       net-packet_mreq-Xraw$(EXEEXT) \
+       nanosleep$(EXEEXT) net--decode-fds-dev-netlink$(EXEEXT) \
+       net--decode-fds-none-netlink$(EXEEXT) \
+       net--decode-fds-path-netlink$(EXEEXT) \
+       net--decode-fds-socket-netlink$(EXEEXT) \
+       net-icmp_filter$(EXEEXT) net-packet_mreq$(EXEEXT) \
+       net-packet_mreq-Xabbrev$(EXEEXT) net-packet_mreq-Xraw$(EXEEXT) \
        net-packet_mreq-Xverbose$(EXEEXT) net-sockaddr$(EXEEXT) \
        net-tpacket_req$(EXEEXT) net-tpacket_stats$(EXEEXT) \
        net-y-unix$(EXEEXT) net-yy-inet$(EXEEXT) net-yy-inet6$(EXEEXT) \
@@ -296,18 +442,28 @@ am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \
        old_mmap-Xraw$(EXEEXT) old_mmap-Xverbose$(EXEEXT) \
        old_mmap-v-none$(EXEEXT) oldfstat$(EXEEXT) oldlstat$(EXEEXT) \
        oldselect$(EXEEXT) oldselect-efault$(EXEEXT) oldstat$(EXEEXT) \
-       open$(EXEEXT) openat$(EXEEXT) osf_utimes$(EXEEXT) \
-       pause$(EXEEXT) perf_event_open$(EXEEXT) personality$(EXEEXT) \
-       personality-Xabbrev$(EXEEXT) personality-Xraw$(EXEEXT) \
-       personality-Xverbose$(EXEEXT) pidfd_send_signal$(EXEEXT) \
-       pipe$(EXEEXT) pipe2$(EXEEXT) pkey_alloc$(EXEEXT) \
-       pkey_free$(EXEEXT) pkey_mprotect$(EXEEXT) poll$(EXEEXT) \
-       poll-P$(EXEEXT) ppoll$(EXEEXT) ppoll-P$(EXEEXT) \
-       prctl-arg2-intptr$(EXEEXT) prctl-dumpable$(EXEEXT) \
-       prctl-name$(EXEEXT) prctl-no-args$(EXEEXT) \
-       prctl-pdeathsig$(EXEEXT) prctl-securebits$(EXEEXT) \
-       prctl-tid_address$(EXEEXT) prctl-tsc$(EXEEXT) \
-       pread64-pwrite64$(EXEEXT) preadv$(EXEEXT) \
+       open$(EXEEXT) open_tree$(EXEEXT) open_tree-P$(EXEEXT) \
+       openat$(EXEEXT) openat2$(EXEEXT) openat2-Xabbrev$(EXEEXT) \
+       openat2-Xraw$(EXEEXT) openat2-Xverbose$(EXEEXT) \
+       openat2-v$(EXEEXT) openat2-v-y$(EXEEXT) \
+       openat2-v-y-Xabbrev$(EXEEXT) openat2-v-y-Xraw$(EXEEXT) \
+       openat2-v-y-Xverbose$(EXEEXT) openat2-y$(EXEEXT) \
+       osf_utimes$(EXEEXT) pause$(EXEEXT) perf_event_open$(EXEEXT) \
+       personality$(EXEEXT) personality-Xabbrev$(EXEEXT) \
+       personality-Xraw$(EXEEXT) personality-Xverbose$(EXEEXT) \
+       pidfd_getfd$(EXEEXT) pidfd_getfd-y$(EXEEXT) \
+       pidfd_getfd-yy$(EXEEXT) pidfd_open$(EXEEXT) \
+       pidfd_open--decode-fd-path$(EXEEXT) \
+       pidfd_open--decode-fd-pidfd$(EXEEXT) \
+       pidfd_open--decode-fd-socket$(EXEEXT) pidfd_open-P$(EXEEXT) \
+       pidfd_open-y$(EXEEXT) pidfd_open-yy$(EXEEXT) \
+       pidfd_send_signal$(EXEEXT) pipe$(EXEEXT) pipe2$(EXEEXT) \
+       pkey_alloc$(EXEEXT) pkey_free$(EXEEXT) pkey_mprotect$(EXEEXT) \
+       poll$(EXEEXT) ppoll$(EXEEXT) prctl-arg2-intptr$(EXEEXT) \
+       prctl-dumpable$(EXEEXT) prctl-name$(EXEEXT) \
+       prctl-no-args$(EXEEXT) prctl-pdeathsig$(EXEEXT) \
+       prctl-securebits$(EXEEXT) prctl-tid_address$(EXEEXT) \
+       prctl-tsc$(EXEEXT) pread64-pwrite64$(EXEEXT) preadv$(EXEEXT) \
        preadv-pwritev$(EXEEXT) preadv2-pwritev2$(EXEEXT) \
        printpath-umovestr$(EXEEXT) \
        printpath-umovestr-peekdata$(EXEEXT) \
@@ -322,7 +478,8 @@ am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \
        quotactl-Xraw$(EXEEXT) quotactl-Xverbose$(EXEEXT) \
        quotactl-xfs$(EXEEXT) read-write$(EXEEXT) readahead$(EXEEXT) \
        readdir$(EXEEXT) readlink$(EXEEXT) readlinkat$(EXEEXT) \
-       readv$(EXEEXT) reboot$(EXEEXT) recvfrom$(EXEEXT) \
+       readv$(EXEEXT) reboot$(EXEEXT) recv-MSG_TRUNC$(EXEEXT) \
+       recvfrom$(EXEEXT) recvfrom-MSG_TRUNC$(EXEEXT) \
        recvmmsg-timeout$(EXEEXT) recvmsg$(EXEEXT) \
        remap_file_pages$(EXEEXT) remap_file_pages-Xabbrev$(EXEEXT) \
        remap_file_pages-Xraw$(EXEEXT) \
@@ -341,8 +498,10 @@ am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \
        sched_xetparam$(EXEEXT) sched_xetscheduler$(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) \
+       semop$(EXEEXT) semop-indirect$(EXEEXT) semtimedop$(EXEEXT) \
+       sendfile$(EXEEXT) sendfile64$(EXEEXT) set_mempolicy$(EXEEXT) \
+       set_mempolicy-Xabbrev$(EXEEXT) set_mempolicy-Xraw$(EXEEXT) \
+       set_mempolicy-Xverbose$(EXEEXT) setdomainname$(EXEEXT) \
        setfsgid$(EXEEXT) setfsgid32$(EXEEXT) setfsuid$(EXEEXT) \
        setfsuid32$(EXEEXT) setgid$(EXEEXT) setgid32$(EXEEXT) \
        setgroups$(EXEEXT) setgroups32$(EXEEXT) sethostname$(EXEEXT) \
@@ -364,27 +523,36 @@ am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \
        sockaddr_xlat-Xverbose$(EXEEXT) socketcall$(EXEEXT) \
        sockopt-sol_netlink$(EXEEXT) sockopt-timestamp$(EXEEXT) \
        splice$(EXEEXT) stat$(EXEEXT) stat64$(EXEEXT) statfs$(EXEEXT) \
-       statfs64$(EXEEXT) statx$(EXEEXT) swap$(EXEEXT) \
+       statfs64$(EXEEXT) status-all$(EXEEXT) status-failed$(EXEEXT) \
+       status-failed-long$(EXEEXT) status-failed-status$(EXEEXT) \
+       status-none$(EXEEXT) status-none-f$(EXEEXT) \
+       status-successful$(EXEEXT) status-successful-long$(EXEEXT) \
+       status-successful-status$(EXEEXT) status-unfinished$(EXEEXT) \
+       statx$(EXEEXT) strace--strings-in-hex$(EXEEXT) \
+       strace--strings-in-hex-all$(EXEEXT) \
+       strace--strings-in-hex-non-ascii$(EXEEXT) strace-n$(EXEEXT) \
+       strace-x$(EXEEXT) strace-xx$(EXEEXT) swap$(EXEEXT) \
        sxetmask$(EXEEXT) symlink$(EXEEXT) symlinkat$(EXEEXT) \
        sync$(EXEEXT) sync_file_range$(EXEEXT) \
        sync_file_range2$(EXEEXT) sysinfo$(EXEEXT) syslog$(EXEEXT) \
-       tee$(EXEEXT) time$(EXEEXT) timer_create$(EXEEXT) \
-       timer_xettime$(EXEEXT) timerfd_xettime$(EXEEXT) times$(EXEEXT) \
-       times-fail$(EXEEXT) truncate$(EXEEXT) truncate64$(EXEEXT) \
+       tee$(EXEEXT) tgkill$(EXEEXT) time$(EXEEXT) \
+       timer_create$(EXEEXT) timer_xettime$(EXEEXT) \
+       timerfd_xettime$(EXEEXT) times$(EXEEXT) times-fail$(EXEEXT) \
+       tkill$(EXEEXT) truncate$(EXEEXT) truncate64$(EXEEXT) \
        ugetrlimit$(EXEEXT) uio$(EXEEXT) umask$(EXEEXT) \
        umount$(EXEEXT) umount2$(EXEEXT) umoven-illptr$(EXEEXT) \
        umovestr$(EXEEXT) umovestr-illptr$(EXEEXT) umovestr2$(EXEEXT) \
-       umovestr3$(EXEEXT) uname$(EXEEXT) unlink$(EXEEXT) \
-       unlinkat$(EXEEXT) unshare$(EXEEXT) userfaultfd$(EXEEXT) \
-       ustat$(EXEEXT) utime$(EXEEXT) utimensat$(EXEEXT) \
-       utimensat-Xabbrev$(EXEEXT) utimensat-Xraw$(EXEEXT) \
-       utimensat-Xverbose$(EXEEXT) utimes$(EXEEXT) vhangup$(EXEEXT) \
-       vmsplice$(EXEEXT) wait4$(EXEEXT) waitid$(EXEEXT) \
-       waitpid$(EXEEXT) xattr$(EXEEXT) xattr-strings$(EXEEXT) \
-       xet_robust_list$(EXEEXT) xet_thread_area_x86$(EXEEXT) \
-       xetitimer$(EXEEXT) xetpgid$(EXEEXT) xetpriority$(EXEEXT) \
-       xettimeofday$(EXEEXT)
-AR = ar
+       umovestr3$(EXEEXT) umovestr_cached$(EXEEXT) \
+       umovestr_cached_adjacent$(EXEEXT) uname$(EXEEXT) \
+       unlink$(EXEEXT) unlinkat$(EXEEXT) unshare$(EXEEXT) \
+       userfaultfd$(EXEEXT) ustat$(EXEEXT) utime$(EXEEXT) \
+       utimensat$(EXEEXT) utimensat-Xabbrev$(EXEEXT) \
+       utimensat-Xraw$(EXEEXT) utimensat-Xverbose$(EXEEXT) \
+       utimes$(EXEEXT) vhangup$(EXEEXT) vmsplice$(EXEEXT) \
+       wait4$(EXEEXT) waitid$(EXEEXT) waitpid$(EXEEXT) xattr$(EXEEXT) \
+       xattr-strings$(EXEEXT) xet_robust_list$(EXEEXT) \
+       xet_thread_area_x86$(EXEEXT) xetitimer$(EXEEXT) \
+       xetpgid$(EXEEXT) xetpriority$(EXEEXT) xettimeofday$(EXEEXT)
 ARFLAGS = cru
 AM_V_AR = $(am__v_AR_@AM_V@)
 am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
@@ -393,6 +561,7 @@ am__v_AR_1 =
 libtests_a_AR = $(AR) $(ARFLAGS)
 libtests_a_LIBADD =
 am_libtests_a_OBJECTS = libtests_a-create_nl_socket.$(OBJEXT) \
+       libtests_a-create_tmpfile.$(OBJEXT) \
        libtests_a-errno2name.$(OBJEXT) libtests_a-error_msg.$(OBJEXT) \
        libtests_a-fill_memory.$(OBJEXT) \
        libtests_a-get_page_size.$(OBJEXT) \
@@ -403,17 +572,23 @@ am_libtests_a_OBJECTS = libtests_a-create_nl_socket.$(OBJEXT) \
        libtests_a-inode_of_sockfd.$(OBJEXT) \
        libtests_a-libmmsg.$(OBJEXT) \
        libtests_a-libsocketcall.$(OBJEXT) \
-       libtests_a-overflowuid.$(OBJEXT) \
+       libtests_a-lock_file.$(OBJEXT) \
+       libtests_a-overflowuid.$(OBJEXT) libtests_a-pidns.$(OBJEXT) \
        libtests_a-pipe_maxfd.$(OBJEXT) \
        libtests_a-print_quoted_string.$(OBJEXT) \
        libtests_a-print_time.$(OBJEXT) \
-       libtests_a-printflags.$(OBJEXT) libtests_a-printxval.$(OBJEXT) \
+       libtests_a-printflags.$(OBJEXT) \
+       libtests_a-printxval-Xabbrev.$(OBJEXT) \
+       libtests_a-printxval-Xraw.$(OBJEXT) \
+       libtests_a-printxval-Xverbose.$(OBJEXT) \
        libtests_a-signal2name.$(OBJEXT) \
        libtests_a-skip_unavailable.$(OBJEXT) \
-       libtests_a-sprintrc.$(OBJEXT) libtests_a-tail_alloc.$(OBJEXT) \
+       libtests_a-sprintrc.$(OBJEXT) libtests_a-status.$(OBJEXT) \
+       libtests_a-tail_alloc.$(OBJEXT) \
        libtests_a-test_printpath.$(OBJEXT) \
        libtests_a-test_printstrn.$(OBJEXT) \
-       libtests_a-test_ucopy.$(OBJEXT) libtests_a-tprintf.$(OBJEXT)
+       libtests_a-test_ucopy.$(OBJEXT) libtests_a-tprintf.$(OBJEXT) \
+       libtests_a-xmalloc_for_tests.$(OBJEXT)
 libtests_a_OBJECTS = $(am_libtests_a_OBJECTS)
 _newselect_SOURCES = _newselect.c
 _newselect_OBJECTS = _newselect.$(OBJEXT)
@@ -482,6 +657,10 @@ block_reset_raise_run_SOURCES = block_reset_raise_run.c
 block_reset_raise_run_OBJECTS = block_reset_raise_run.$(OBJEXT)
 block_reset_raise_run_LDADD = $(LDADD)
 block_reset_raise_run_DEPENDENCIES = libtests.a
+block_reset_run_SOURCES = block_reset_run.c
+block_reset_run_OBJECTS = block_reset_run.$(OBJEXT)
+block_reset_run_LDADD = $(LDADD)
+block_reset_run_DEPENDENCIES = libtests.a
 bpf_SOURCES = bpf.c
 bpf_OBJECTS = bpf.$(OBJEXT)
 bpf_LDADD = $(LDADD)
@@ -509,6 +688,10 @@ bpf_success_SOURCES = bpf-success.c
 bpf_success_OBJECTS = bpf-success.$(OBJEXT)
 bpf_success_LDADD = $(LDADD)
 bpf_success_DEPENDENCIES = libtests.a
+bpf_success_long_y_SOURCES = bpf-success-long-y.c
+bpf_success_long_y_OBJECTS = bpf-success-long-y.$(OBJEXT)
+bpf_success_long_y_LDADD = $(LDADD)
+bpf_success_long_y_DEPENDENCIES = libtests.a
 bpf_success_v_SOURCES = bpf-success-v.c
 bpf_success_v_OBJECTS = bpf-success-v.$(OBJEXT)
 bpf_success_v_LDADD = $(LDADD)
@@ -569,14 +752,95 @@ clock_xettime_SOURCES = clock_xettime.c
 clock_xettime_OBJECTS = clock_xettime.$(OBJEXT)
 clock_xettime_LDADD = $(LDADD)
 clock_xettime_DEPENDENCIES = libtests.a
+clone_flags_SOURCES = clone-flags.c
+clone_flags_OBJECTS = clone-flags.$(OBJEXT)
+clone_flags_LDADD = $(LDADD)
+clone_flags_DEPENDENCIES = libtests.a
+clone3_SOURCES = clone3.c
+clone3_OBJECTS = clone3.$(OBJEXT)
+clone3_LDADD = $(LDADD)
+clone3_DEPENDENCIES = libtests.a
+clone3_Xabbrev_SOURCES = clone3-Xabbrev.c
+clone3_Xabbrev_OBJECTS = clone3-Xabbrev.$(OBJEXT)
+clone3_Xabbrev_LDADD = $(LDADD)
+clone3_Xabbrev_DEPENDENCIES = libtests.a
+clone3_Xraw_SOURCES = clone3-Xraw.c
+clone3_Xraw_OBJECTS = clone3-Xraw.$(OBJEXT)
+clone3_Xraw_LDADD = $(LDADD)
+clone3_Xraw_DEPENDENCIES = libtests.a
+clone3_Xverbose_SOURCES = clone3-Xverbose.c
+clone3_Xverbose_OBJECTS = clone3-Xverbose.$(OBJEXT)
+clone3_Xverbose_LDADD = $(LDADD)
+clone3_Xverbose_DEPENDENCIES = libtests.a
+clone3_success_SOURCES = clone3-success.c
+clone3_success_OBJECTS = clone3-success.$(OBJEXT)
+clone3_success_LDADD = $(LDADD)
+clone3_success_DEPENDENCIES = libtests.a
+clone3_success_Xabbrev_SOURCES = clone3-success-Xabbrev.c
+clone3_success_Xabbrev_OBJECTS = clone3-success-Xabbrev.$(OBJEXT)
+clone3_success_Xabbrev_LDADD = $(LDADD)
+clone3_success_Xabbrev_DEPENDENCIES = libtests.a
+clone3_success_Xraw_SOURCES = clone3-success-Xraw.c
+clone3_success_Xraw_OBJECTS = clone3-success-Xraw.$(OBJEXT)
+clone3_success_Xraw_LDADD = $(LDADD)
+clone3_success_Xraw_DEPENDENCIES = libtests.a
+clone3_success_Xverbose_SOURCES = clone3-success-Xverbose.c
+clone3_success_Xverbose_OBJECTS = clone3-success-Xverbose.$(OBJEXT)
+clone3_success_Xverbose_LDADD = $(LDADD)
+clone3_success_Xverbose_DEPENDENCIES = libtests.a
 clone_parent_SOURCES = clone_parent.c
 clone_parent_OBJECTS = clone_parent.$(OBJEXT)
 clone_parent_LDADD = $(LDADD)
 clone_parent_DEPENDENCIES = libtests.a
+clone_parent__quiet_exit_SOURCES = clone_parent--quiet-exit.c
+clone_parent__quiet_exit_OBJECTS = clone_parent--quiet-exit.$(OBJEXT)
+clone_parent__quiet_exit_LDADD = $(LDADD)
+clone_parent__quiet_exit_DEPENDENCIES = libtests.a
+clone_parent_q_SOURCES = clone_parent-q.c
+clone_parent_q_OBJECTS = clone_parent-q.$(OBJEXT)
+clone_parent_q_LDADD = $(LDADD)
+clone_parent_q_DEPENDENCIES = libtests.a
+clone_parent_qq_SOURCES = clone_parent-qq.c
+clone_parent_qq_OBJECTS = clone_parent-qq.$(OBJEXT)
+clone_parent_qq_LDADD = $(LDADD)
+clone_parent_qq_DEPENDENCIES = libtests.a
 clone_ptrace_SOURCES = clone_ptrace.c
 clone_ptrace_OBJECTS = clone_ptrace.$(OBJEXT)
 clone_ptrace_LDADD = $(LDADD)
 clone_ptrace_DEPENDENCIES = libtests.a
+clone_ptrace__quiet_attach_SOURCES = clone_ptrace--quiet-attach.c
+clone_ptrace__quiet_attach_OBJECTS =  \
+       clone_ptrace--quiet-attach.$(OBJEXT)
+clone_ptrace__quiet_attach_LDADD = $(LDADD)
+clone_ptrace__quiet_attach_DEPENDENCIES = libtests.a
+clone_ptrace__quiet_exit_SOURCES = clone_ptrace--quiet-exit.c
+clone_ptrace__quiet_exit_OBJECTS = clone_ptrace--quiet-exit.$(OBJEXT)
+clone_ptrace__quiet_exit_LDADD = $(LDADD)
+clone_ptrace__quiet_exit_DEPENDENCIES = libtests.a
+clone_ptrace_q_SOURCES = clone_ptrace-q.c
+clone_ptrace_q_OBJECTS = clone_ptrace-q.$(OBJEXT)
+clone_ptrace_q_LDADD = $(LDADD)
+clone_ptrace_q_DEPENDENCIES = libtests.a
+clone_ptrace_qq_SOURCES = clone_ptrace-qq.c
+clone_ptrace_qq_OBJECTS = clone_ptrace-qq.$(OBJEXT)
+clone_ptrace_qq_LDADD = $(LDADD)
+clone_ptrace_qq_DEPENDENCIES = libtests.a
+close_range_SOURCES = close_range.c
+close_range_OBJECTS = close_range.$(OBJEXT)
+close_range_LDADD = $(LDADD)
+close_range_DEPENDENCIES = libtests.a
+close_range_P_SOURCES = close_range-P.c
+close_range_P_OBJECTS = close_range-P.$(OBJEXT)
+close_range_P_LDADD = $(LDADD)
+close_range_P_DEPENDENCIES = libtests.a
+close_range_y_SOURCES = close_range-y.c
+close_range_y_OBJECTS = close_range-y.$(OBJEXT)
+close_range_y_LDADD = $(LDADD)
+close_range_y_DEPENDENCIES = libtests.a
+close_range_yy_SOURCES = close_range-yy.c
+close_range_yy_OBJECTS = close_range-yy.$(OBJEXT)
+close_range_yy_LDADD = $(LDADD)
+close_range_yy_DEPENDENCIES = libtests.a
 copy_file_range_SOURCES = copy_file_range.c
 copy_file_range_OBJECTS = copy_file_range.$(OBJEXT)
 copy_file_range_LDADD = $(LDADD)
@@ -596,6 +860,18 @@ delete_module_SOURCES = delete_module.c
 delete_module_OBJECTS = delete_module.$(OBJEXT)
 delete_module_LDADD = $(LDADD)
 delete_module_DEPENDENCIES = libtests.a
+dev__decode_fds_dev_SOURCES = dev--decode-fds-dev.c
+dev__decode_fds_dev_OBJECTS = dev--decode-fds-dev.$(OBJEXT)
+dev__decode_fds_dev_LDADD = $(LDADD)
+dev__decode_fds_dev_DEPENDENCIES = libtests.a
+dev__decode_fds_path_SOURCES = dev--decode-fds-path.c
+dev__decode_fds_path_OBJECTS = dev--decode-fds-path.$(OBJEXT)
+dev__decode_fds_path_LDADD = $(LDADD)
+dev__decode_fds_path_DEPENDENCIES = libtests.a
+dev__decode_fds_socket_SOURCES = dev--decode-fds-socket.c
+dev__decode_fds_socket_OBJECTS = dev--decode-fds-socket.$(OBJEXT)
+dev__decode_fds_socket_LDADD = $(LDADD)
+dev__decode_fds_socket_DEPENDENCIES = libtests.a
 dev_yy_SOURCES = dev-yy.c
 dev_yy_OBJECTS = dev-yy.$(OBJEXT)
 dev_yy_LDADD = $(LDADD)
@@ -604,14 +880,50 @@ dup_SOURCES = dup.c
 dup_OBJECTS = dup.$(OBJEXT)
 dup_LDADD = $(LDADD)
 dup_DEPENDENCIES = libtests.a
+dup_P_SOURCES = dup-P.c
+dup_P_OBJECTS = dup-P.$(OBJEXT)
+dup_P_LDADD = $(LDADD)
+dup_P_DEPENDENCIES = libtests.a
+dup_y_SOURCES = dup-y.c
+dup_y_OBJECTS = dup-y.$(OBJEXT)
+dup_y_LDADD = $(LDADD)
+dup_y_DEPENDENCIES = libtests.a
+dup_yy_SOURCES = dup-yy.c
+dup_yy_OBJECTS = dup-yy.$(OBJEXT)
+dup_yy_LDADD = $(LDADD)
+dup_yy_DEPENDENCIES = libtests.a
 dup2_SOURCES = dup2.c
 dup2_OBJECTS = dup2.$(OBJEXT)
 dup2_LDADD = $(LDADD)
 dup2_DEPENDENCIES = libtests.a
+dup2_P_SOURCES = dup2-P.c
+dup2_P_OBJECTS = dup2-P.$(OBJEXT)
+dup2_P_LDADD = $(LDADD)
+dup2_P_DEPENDENCIES = libtests.a
+dup2_y_SOURCES = dup2-y.c
+dup2_y_OBJECTS = dup2-y.$(OBJEXT)
+dup2_y_LDADD = $(LDADD)
+dup2_y_DEPENDENCIES = libtests.a
+dup2_yy_SOURCES = dup2-yy.c
+dup2_yy_OBJECTS = dup2-yy.$(OBJEXT)
+dup2_yy_LDADD = $(LDADD)
+dup2_yy_DEPENDENCIES = libtests.a
 dup3_SOURCES = dup3.c
 dup3_OBJECTS = dup3.$(OBJEXT)
 dup3_LDADD = $(LDADD)
 dup3_DEPENDENCIES = libtests.a
+dup3_P_SOURCES = dup3-P.c
+dup3_P_OBJECTS = dup3-P.$(OBJEXT)
+dup3_P_LDADD = $(LDADD)
+dup3_P_DEPENDENCIES = libtests.a
+dup3_y_SOURCES = dup3-y.c
+dup3_y_OBJECTS = dup3-y.$(OBJEXT)
+dup3_y_LDADD = $(LDADD)
+dup3_y_DEPENDENCIES = libtests.a
+dup3_yy_SOURCES = dup3-yy.c
+dup3_yy_OBJECTS = dup3-yy.$(OBJEXT)
+dup3_yy_LDADD = $(LDADD)
+dup3_yy_DEPENDENCIES = libtests.a
 epoll_create_SOURCES = epoll_create.c
 epoll_create_OBJECTS = epoll_create.$(OBJEXT)
 epoll_create_LDADD = $(LDADD)
@@ -660,6 +972,34 @@ faccessat_SOURCES = faccessat.c
 faccessat_OBJECTS = faccessat.$(OBJEXT)
 faccessat_LDADD = $(LDADD)
 faccessat_DEPENDENCIES = libtests.a
+faccessat_P_SOURCES = faccessat-P.c
+faccessat_P_OBJECTS = faccessat-P.$(OBJEXT)
+faccessat_P_LDADD = $(LDADD)
+faccessat_P_DEPENDENCIES = libtests.a
+faccessat_y_SOURCES = faccessat-y.c
+faccessat_y_OBJECTS = faccessat-y.$(OBJEXT)
+faccessat_y_LDADD = $(LDADD)
+faccessat_y_DEPENDENCIES = libtests.a
+faccessat_yy_SOURCES = faccessat-yy.c
+faccessat_yy_OBJECTS = faccessat-yy.$(OBJEXT)
+faccessat_yy_LDADD = $(LDADD)
+faccessat_yy_DEPENDENCIES = libtests.a
+faccessat2_SOURCES = faccessat2.c
+faccessat2_OBJECTS = faccessat2.$(OBJEXT)
+faccessat2_LDADD = $(LDADD)
+faccessat2_DEPENDENCIES = libtests.a
+faccessat2_P_SOURCES = faccessat2-P.c
+faccessat2_P_OBJECTS = faccessat2-P.$(OBJEXT)
+faccessat2_P_LDADD = $(LDADD)
+faccessat2_P_DEPENDENCIES = libtests.a
+faccessat2_y_SOURCES = faccessat2-y.c
+faccessat2_y_OBJECTS = faccessat2-y.$(OBJEXT)
+faccessat2_y_LDADD = $(LDADD)
+faccessat2_y_DEPENDENCIES = libtests.a
+faccessat2_yy_SOURCES = faccessat2-yy.c
+faccessat2_yy_OBJECTS = faccessat2-yy.$(OBJEXT)
+faccessat2_yy_LDADD = $(LDADD)
+faccessat2_yy_DEPENDENCIES = libtests.a
 fadvise64_SOURCES = fadvise64.c
 fadvise64_OBJECTS = fadvise64.$(OBJEXT)
 fadvise64_LDADD = $(LDADD)
@@ -720,10 +1060,19 @@ fcntl_SOURCES = fcntl.c
 fcntl_OBJECTS = fcntl.$(OBJEXT)
 fcntl_LDADD = $(LDADD)
 fcntl_DEPENDENCIES = libtests.a
+fcntl__pidns_translation_SOURCES = fcntl--pidns-translation.c
+fcntl__pidns_translation_OBJECTS = fcntl--pidns-translation.$(OBJEXT)
+fcntl__pidns_translation_LDADD = $(LDADD)
+fcntl__pidns_translation_DEPENDENCIES = libtests.a
 fcntl64_SOURCES = fcntl64.c
 fcntl64_OBJECTS = fcntl64.$(OBJEXT)
 fcntl64_LDADD = $(LDADD)
 fcntl64_DEPENDENCIES = libtests.a
+fcntl64__pidns_translation_SOURCES = fcntl64--pidns-translation.c
+fcntl64__pidns_translation_OBJECTS =  \
+       fcntl64--pidns-translation.$(OBJEXT)
+fcntl64__pidns_translation_LDADD = $(LDADD)
+fcntl64__pidns_translation_DEPENDENCIES = libtests.a
 fdatasync_SOURCES = fdatasync.c
 fdatasync_OBJECTS = fdatasync.$(OBJEXT)
 fdatasync_LDADD = $(LDADD)
@@ -743,6 +1092,14 @@ file_ioctl_DEPENDENCIES = libtests.a
 filter_unavailable_SOURCES = filter-unavailable.c
 filter_unavailable_OBJECTS = filter-unavailable.$(OBJEXT)
 filter_unavailable_DEPENDENCIES = $(LDADD)
+filter_seccomp_flag_SOURCES = filter_seccomp-flag.c
+filter_seccomp_flag_OBJECTS = filter_seccomp-flag.$(OBJEXT)
+filter_seccomp_flag_LDADD = $(LDADD)
+filter_seccomp_flag_DEPENDENCIES = libtests.a
+filter_seccomp_perf_SOURCES = filter_seccomp-perf.c
+filter_seccomp_perf_OBJECTS = filter_seccomp-perf.$(OBJEXT)
+filter_seccomp_perf_LDADD = $(LDADD)
+filter_seccomp_perf_DEPENDENCIES = libtests.a
 finit_module_SOURCES = finit_module.c
 finit_module_OBJECTS = finit_module.$(OBJEXT)
 finit_module_LDADD = $(LDADD)
@@ -751,10 +1108,38 @@ flock_SOURCES = flock.c
 flock_OBJECTS = flock.$(OBJEXT)
 flock_LDADD = $(LDADD)
 flock_DEPENDENCIES = libtests.a
+fork__pidns_translation_SOURCES = fork--pidns-translation.c
+fork__pidns_translation_OBJECTS = fork--pidns-translation.$(OBJEXT)
+fork__pidns_translation_LDADD = $(LDADD)
+fork__pidns_translation_DEPENDENCIES = libtests.a
 fork_f_SOURCES = fork-f.c
 fork_f_OBJECTS = fork-f.$(OBJEXT)
 fork_f_LDADD = $(LDADD)
 fork_f_DEPENDENCIES = libtests.a
+fsconfig_SOURCES = fsconfig.c
+fsconfig_OBJECTS = fsconfig.$(OBJEXT)
+fsconfig_LDADD = $(LDADD)
+fsconfig_DEPENDENCIES = libtests.a
+fsconfig_P_SOURCES = fsconfig-P.c
+fsconfig_P_OBJECTS = fsconfig-P.$(OBJEXT)
+fsconfig_P_LDADD = $(LDADD)
+fsconfig_P_DEPENDENCIES = libtests.a
+fsmount_SOURCES = fsmount.c
+fsmount_OBJECTS = fsmount.$(OBJEXT)
+fsmount_LDADD = $(LDADD)
+fsmount_DEPENDENCIES = libtests.a
+fsopen_SOURCES = fsopen.c
+fsopen_OBJECTS = fsopen.$(OBJEXT)
+fsopen_LDADD = $(LDADD)
+fsopen_DEPENDENCIES = libtests.a
+fspick_SOURCES = fspick.c
+fspick_OBJECTS = fspick.$(OBJEXT)
+fspick_LDADD = $(LDADD)
+fspick_DEPENDENCIES = libtests.a
+fspick_P_SOURCES = fspick-P.c
+fspick_P_OBJECTS = fspick-P.$(OBJEXT)
+fspick_P_LDADD = $(LDADD)
+fspick_P_DEPENDENCIES = libtests.a
 fstat_SOURCES = fstat.c
 fstat_OBJECTS = fstat.$(OBJEXT)
 fstat_LDADD = $(LDADD)
@@ -827,6 +1212,10 @@ get_mempolicy_SOURCES = get_mempolicy.c
 get_mempolicy_OBJECTS = get_mempolicy.$(OBJEXT)
 get_mempolicy_LDADD = $(LDADD)
 get_mempolicy_DEPENDENCIES = libtests.a
+get_process_reaper_SOURCES = get_process_reaper.c
+get_process_reaper_OBJECTS = get_process_reaper.$(OBJEXT)
+get_process_reaper_LDADD = $(LDADD)
+get_process_reaper_DEPENDENCIES = libtests.a
 getcpu_SOURCES = getcpu.c
 getcpu_OBJECTS = getcpu.$(OBJEXT)
 getcpu_LDADD = $(LDADD)
@@ -839,10 +1228,18 @@ getdents_SOURCES = getdents.c
 getdents_OBJECTS = getdents.$(OBJEXT)
 getdents_LDADD = $(LDADD)
 getdents_DEPENDENCIES = libtests.a
+getdents_v_SOURCES = getdents-v.c
+getdents_v_OBJECTS = getdents-v.$(OBJEXT)
+getdents_v_LDADD = $(LDADD)
+getdents_v_DEPENDENCIES = libtests.a
 getdents64_SOURCES = getdents64.c
 getdents64_OBJECTS = getdents64.$(OBJEXT)
 getdents64_LDADD = $(LDADD)
 getdents64_DEPENDENCIES = libtests.a
+getdents64_v_SOURCES = getdents64-v.c
+getdents64_v_OBJECTS = getdents64-v.$(OBJEXT)
+getdents64_v_LDADD = $(LDADD)
+getdents64_v_DEPENDENCIES = libtests.a
 getegid_SOURCES = getegid.c
 getegid_OBJECTS = getegid.$(OBJEXT)
 getegid_LDADD = $(LDADD)
@@ -883,10 +1280,20 @@ getpgrp_SOURCES = getpgrp.c
 getpgrp_OBJECTS = getpgrp.$(OBJEXT)
 getpgrp_LDADD = $(LDADD)
 getpgrp_DEPENDENCIES = libtests.a
+getpgrp__pidns_translation_SOURCES = getpgrp--pidns-translation.c
+getpgrp__pidns_translation_OBJECTS =  \
+       getpgrp--pidns-translation.$(OBJEXT)
+getpgrp__pidns_translation_LDADD = $(LDADD)
+getpgrp__pidns_translation_DEPENDENCIES = libtests.a
 getpid_SOURCES = getpid.c
 getpid_OBJECTS = getpid.$(OBJEXT)
 getpid_LDADD = $(LDADD)
 getpid_DEPENDENCIES = libtests.a
+getpid__pidns_translation_SOURCES = getpid--pidns-translation.c
+getpid__pidns_translation_OBJECTS =  \
+       getpid--pidns-translation.$(OBJEXT)
+getpid__pidns_translation_LDADD = $(LDADD)
+getpid__pidns_translation_DEPENDENCIES = libtests.a
 getppid_SOURCES = getppid.c
 getppid_OBJECTS = getppid.$(OBJEXT)
 getppid_LDADD = $(LDADD)
@@ -923,6 +1330,11 @@ getsid_SOURCES = getsid.c
 getsid_OBJECTS = getsid.$(OBJEXT)
 getsid_LDADD = $(LDADD)
 getsid_DEPENDENCIES = libtests.a
+getsid__pidns_translation_SOURCES = getsid--pidns-translation.c
+getsid__pidns_translation_OBJECTS =  \
+       getsid--pidns-translation.$(OBJEXT)
+getsid__pidns_translation_LDADD = $(LDADD)
+getsid__pidns_translation_DEPENDENCIES = libtests.a
 getsockname_SOURCES = getsockname.c
 getsockname_OBJECTS = getsockname.$(OBJEXT)
 getsockname_LDADD = $(LDADD)
@@ -931,6 +1343,11 @@ gettid_SOURCES = gettid.c
 gettid_OBJECTS = gettid.$(OBJEXT)
 gettid_LDADD = $(LDADD)
 gettid_DEPENDENCIES = libtests.a
+gettid__pidns_translation_SOURCES = gettid--pidns-translation.c
+gettid__pidns_translation_OBJECTS =  \
+       gettid--pidns-translation.$(OBJEXT)
+gettid__pidns_translation_LDADD = $(LDADD)
+gettid__pidns_translation_DEPENDENCIES = libtests.a
 getuid_SOURCES = getuid.c
 getuid_OBJECTS = getuid.$(OBJEXT)
 getuid_LDADD = $(LDADD)
@@ -939,10 +1356,18 @@ getuid32_SOURCES = getuid32.c
 getuid32_OBJECTS = getuid32.$(OBJEXT)
 getuid32_LDADD = $(LDADD)
 getuid32_DEPENDENCIES = libtests.a
-getxxid_SOURCES = getxxid.c
-getxxid_OBJECTS = getxxid.$(OBJEXT)
-getxxid_LDADD = $(LDADD)
-getxxid_DEPENDENCIES = libtests.a
+getxgid_SOURCES = getxgid.c
+getxgid_OBJECTS = getxgid.$(OBJEXT)
+getxgid_LDADD = $(LDADD)
+getxgid_DEPENDENCIES = libtests.a
+getxpid_SOURCES = getxpid.c
+getxpid_OBJECTS = getxpid.$(OBJEXT)
+getxpid_LDADD = $(LDADD)
+getxpid_DEPENDENCIES = libtests.a
+getxuid_SOURCES = getxuid.c
+getxuid_OBJECTS = getxuid.$(OBJEXT)
+getxuid_LDADD = $(LDADD)
+getxuid_DEPENDENCIES = libtests.a
 group_req_SOURCES = group_req.c
 group_req_OBJECTS = group_req.$(OBJEXT)
 group_req_LDADD = $(LDADD)
@@ -963,10 +1388,22 @@ inotify_SOURCES = inotify.c
 inotify_OBJECTS = inotify.$(OBJEXT)
 inotify_LDADD = $(LDADD)
 inotify_DEPENDENCIES = libtests.a
+inotify_init_SOURCES = inotify_init.c
+inotify_init_OBJECTS = inotify_init.$(OBJEXT)
+inotify_init_LDADD = $(LDADD)
+inotify_init_DEPENDENCIES = libtests.a
+inotify_init_y_SOURCES = inotify_init-y.c
+inotify_init_y_OBJECTS = inotify_init-y.$(OBJEXT)
+inotify_init_y_LDADD = $(LDADD)
+inotify_init_y_DEPENDENCIES = libtests.a
 inotify_init1_SOURCES = inotify_init1.c
 inotify_init1_OBJECTS = inotify_init1.$(OBJEXT)
 inotify_init1_LDADD = $(LDADD)
 inotify_init1_DEPENDENCIES = libtests.a
+inotify_init1_y_SOURCES = inotify_init1-y.c
+inotify_init1_y_OBJECTS = inotify_init1-y.$(OBJEXT)
+inotify_init1_y_LDADD = $(LDADD)
+inotify_init1_y_DEPENDENCIES = libtests.a
 int_0x80_SOURCES = int_0x80.c
 int_0x80_OBJECTS = int_0x80.$(OBJEXT)
 int_0x80_LDADD = $(LDADD)
@@ -991,6 +1428,12 @@ ioctl_block_SOURCES = ioctl_block.c
 ioctl_block_OBJECTS = ioctl_block.$(OBJEXT)
 ioctl_block_LDADD = $(LDADD)
 ioctl_block_DEPENDENCIES = libtests.a
+ioctl_block__pidns_translation_SOURCES =  \
+       ioctl_block--pidns-translation.c
+ioctl_block__pidns_translation_OBJECTS =  \
+       ioctl_block--pidns-translation.$(OBJEXT)
+ioctl_block__pidns_translation_LDADD = $(LDADD)
+ioctl_block__pidns_translation_DEPENDENCIES = libtests.a
 ioctl_dm_SOURCES = ioctl_dm.c
 ioctl_dm_OBJECTS = ioctl_dm.$(OBJEXT)
 ioctl_dm_LDADD = $(LDADD)
@@ -1003,18 +1446,143 @@ ioctl_evdev_SOURCES = ioctl_evdev.c
 ioctl_evdev_OBJECTS = ioctl_evdev.$(OBJEXT)
 ioctl_evdev_LDADD = $(LDADD)
 ioctl_evdev_DEPENDENCIES = libtests.a
+ioctl_evdev_Xabbrev_SOURCES = ioctl_evdev-Xabbrev.c
+ioctl_evdev_Xabbrev_OBJECTS = ioctl_evdev-Xabbrev.$(OBJEXT)
+ioctl_evdev_Xabbrev_LDADD = $(LDADD)
+ioctl_evdev_Xabbrev_DEPENDENCIES = libtests.a
+ioctl_evdev_Xraw_SOURCES = ioctl_evdev-Xraw.c
+ioctl_evdev_Xraw_OBJECTS = ioctl_evdev-Xraw.$(OBJEXT)
+ioctl_evdev_Xraw_LDADD = $(LDADD)
+ioctl_evdev_Xraw_DEPENDENCIES = libtests.a
+ioctl_evdev_Xverbose_SOURCES = ioctl_evdev-Xverbose.c
+ioctl_evdev_Xverbose_OBJECTS = ioctl_evdev-Xverbose.$(OBJEXT)
+ioctl_evdev_Xverbose_LDADD = $(LDADD)
+ioctl_evdev_Xverbose_DEPENDENCIES = libtests.a
 ioctl_evdev_success_SOURCES = ioctl_evdev-success.c
 ioctl_evdev_success_OBJECTS = ioctl_evdev-success.$(OBJEXT)
 ioctl_evdev_success_LDADD = $(LDADD)
 ioctl_evdev_success_DEPENDENCIES = libtests.a
+ioctl_evdev_success_Xabbrev_SOURCES = ioctl_evdev-success-Xabbrev.c
+ioctl_evdev_success_Xabbrev_OBJECTS =  \
+       ioctl_evdev-success-Xabbrev.$(OBJEXT)
+ioctl_evdev_success_Xabbrev_LDADD = $(LDADD)
+ioctl_evdev_success_Xabbrev_DEPENDENCIES = libtests.a
+ioctl_evdev_success_Xraw_SOURCES = ioctl_evdev-success-Xraw.c
+ioctl_evdev_success_Xraw_OBJECTS = ioctl_evdev-success-Xraw.$(OBJEXT)
+ioctl_evdev_success_Xraw_LDADD = $(LDADD)
+ioctl_evdev_success_Xraw_DEPENDENCIES = libtests.a
+ioctl_evdev_success_Xverbose_SOURCES = ioctl_evdev-success-Xverbose.c
+ioctl_evdev_success_Xverbose_OBJECTS =  \
+       ioctl_evdev-success-Xverbose.$(OBJEXT)
+ioctl_evdev_success_Xverbose_LDADD = $(LDADD)
+ioctl_evdev_success_Xverbose_DEPENDENCIES = libtests.a
 ioctl_evdev_success_v_SOURCES = ioctl_evdev-success-v.c
 ioctl_evdev_success_v_OBJECTS = ioctl_evdev-success-v.$(OBJEXT)
 ioctl_evdev_success_v_LDADD = $(LDADD)
 ioctl_evdev_success_v_DEPENDENCIES = libtests.a
+ioctl_evdev_success_v_Xabbrev_SOURCES =  \
+       ioctl_evdev-success-v-Xabbrev.c
+ioctl_evdev_success_v_Xabbrev_OBJECTS =  \
+       ioctl_evdev-success-v-Xabbrev.$(OBJEXT)
+ioctl_evdev_success_v_Xabbrev_LDADD = $(LDADD)
+ioctl_evdev_success_v_Xabbrev_DEPENDENCIES = libtests.a
+ioctl_evdev_success_v_Xraw_SOURCES = ioctl_evdev-success-v-Xraw.c
+ioctl_evdev_success_v_Xraw_OBJECTS =  \
+       ioctl_evdev-success-v-Xraw.$(OBJEXT)
+ioctl_evdev_success_v_Xraw_LDADD = $(LDADD)
+ioctl_evdev_success_v_Xraw_DEPENDENCIES = libtests.a
+ioctl_evdev_success_v_Xverbose_SOURCES =  \
+       ioctl_evdev-success-v-Xverbose.c
+ioctl_evdev_success_v_Xverbose_OBJECTS =  \
+       ioctl_evdev-success-v-Xverbose.$(OBJEXT)
+ioctl_evdev_success_v_Xverbose_LDADD = $(LDADD)
+ioctl_evdev_success_v_Xverbose_DEPENDENCIES = libtests.a
 ioctl_evdev_v_SOURCES = ioctl_evdev-v.c
 ioctl_evdev_v_OBJECTS = ioctl_evdev-v.$(OBJEXT)
 ioctl_evdev_v_LDADD = $(LDADD)
 ioctl_evdev_v_DEPENDENCIES = libtests.a
+ioctl_evdev_v_Xabbrev_SOURCES = ioctl_evdev-v-Xabbrev.c
+ioctl_evdev_v_Xabbrev_OBJECTS = ioctl_evdev-v-Xabbrev.$(OBJEXT)
+ioctl_evdev_v_Xabbrev_LDADD = $(LDADD)
+ioctl_evdev_v_Xabbrev_DEPENDENCIES = libtests.a
+ioctl_evdev_v_Xraw_SOURCES = ioctl_evdev-v-Xraw.c
+ioctl_evdev_v_Xraw_OBJECTS = ioctl_evdev-v-Xraw.$(OBJEXT)
+ioctl_evdev_v_Xraw_LDADD = $(LDADD)
+ioctl_evdev_v_Xraw_DEPENDENCIES = libtests.a
+ioctl_evdev_v_Xverbose_SOURCES = ioctl_evdev-v-Xverbose.c
+ioctl_evdev_v_Xverbose_OBJECTS = ioctl_evdev-v-Xverbose.$(OBJEXT)
+ioctl_evdev_v_Xverbose_LDADD = $(LDADD)
+ioctl_evdev_v_Xverbose_DEPENDENCIES = libtests.a
+ioctl_hdio_SOURCES = ioctl_hdio.c
+ioctl_hdio_OBJECTS = ioctl_hdio.$(OBJEXT)
+ioctl_hdio_LDADD = $(LDADD)
+ioctl_hdio_DEPENDENCIES = libtests.a
+ioctl_hdio_Xabbrev_SOURCES = ioctl_hdio-Xabbrev.c
+ioctl_hdio_Xabbrev_OBJECTS = ioctl_hdio-Xabbrev.$(OBJEXT)
+ioctl_hdio_Xabbrev_LDADD = $(LDADD)
+ioctl_hdio_Xabbrev_DEPENDENCIES = libtests.a
+ioctl_hdio_Xraw_SOURCES = ioctl_hdio-Xraw.c
+ioctl_hdio_Xraw_OBJECTS = ioctl_hdio-Xraw.$(OBJEXT)
+ioctl_hdio_Xraw_LDADD = $(LDADD)
+ioctl_hdio_Xraw_DEPENDENCIES = libtests.a
+ioctl_hdio_Xverbose_SOURCES = ioctl_hdio-Xverbose.c
+ioctl_hdio_Xverbose_OBJECTS = ioctl_hdio-Xverbose.$(OBJEXT)
+ioctl_hdio_Xverbose_LDADD = $(LDADD)
+ioctl_hdio_Xverbose_DEPENDENCIES = libtests.a
+ioctl_hdio_success_SOURCES = ioctl_hdio-success.c
+ioctl_hdio_success_OBJECTS = ioctl_hdio-success.$(OBJEXT)
+ioctl_hdio_success_LDADD = $(LDADD)
+ioctl_hdio_success_DEPENDENCIES = libtests.a
+ioctl_hdio_success_Xabbrev_SOURCES = ioctl_hdio-success-Xabbrev.c
+ioctl_hdio_success_Xabbrev_OBJECTS =  \
+       ioctl_hdio-success-Xabbrev.$(OBJEXT)
+ioctl_hdio_success_Xabbrev_LDADD = $(LDADD)
+ioctl_hdio_success_Xabbrev_DEPENDENCIES = libtests.a
+ioctl_hdio_success_Xraw_SOURCES = ioctl_hdio-success-Xraw.c
+ioctl_hdio_success_Xraw_OBJECTS = ioctl_hdio-success-Xraw.$(OBJEXT)
+ioctl_hdio_success_Xraw_LDADD = $(LDADD)
+ioctl_hdio_success_Xraw_DEPENDENCIES = libtests.a
+ioctl_hdio_success_Xverbose_SOURCES = ioctl_hdio-success-Xverbose.c
+ioctl_hdio_success_Xverbose_OBJECTS =  \
+       ioctl_hdio-success-Xverbose.$(OBJEXT)
+ioctl_hdio_success_Xverbose_LDADD = $(LDADD)
+ioctl_hdio_success_Xverbose_DEPENDENCIES = libtests.a
+ioctl_hdio_success_v_SOURCES = ioctl_hdio-success-v.c
+ioctl_hdio_success_v_OBJECTS = ioctl_hdio-success-v.$(OBJEXT)
+ioctl_hdio_success_v_LDADD = $(LDADD)
+ioctl_hdio_success_v_DEPENDENCIES = libtests.a
+ioctl_hdio_success_v_Xabbrev_SOURCES = ioctl_hdio-success-v-Xabbrev.c
+ioctl_hdio_success_v_Xabbrev_OBJECTS =  \
+       ioctl_hdio-success-v-Xabbrev.$(OBJEXT)
+ioctl_hdio_success_v_Xabbrev_LDADD = $(LDADD)
+ioctl_hdio_success_v_Xabbrev_DEPENDENCIES = libtests.a
+ioctl_hdio_success_v_Xraw_SOURCES = ioctl_hdio-success-v-Xraw.c
+ioctl_hdio_success_v_Xraw_OBJECTS =  \
+       ioctl_hdio-success-v-Xraw.$(OBJEXT)
+ioctl_hdio_success_v_Xraw_LDADD = $(LDADD)
+ioctl_hdio_success_v_Xraw_DEPENDENCIES = libtests.a
+ioctl_hdio_success_v_Xverbose_SOURCES =  \
+       ioctl_hdio-success-v-Xverbose.c
+ioctl_hdio_success_v_Xverbose_OBJECTS =  \
+       ioctl_hdio-success-v-Xverbose.$(OBJEXT)
+ioctl_hdio_success_v_Xverbose_LDADD = $(LDADD)
+ioctl_hdio_success_v_Xverbose_DEPENDENCIES = libtests.a
+ioctl_hdio_v_SOURCES = ioctl_hdio-v.c
+ioctl_hdio_v_OBJECTS = ioctl_hdio-v.$(OBJEXT)
+ioctl_hdio_v_LDADD = $(LDADD)
+ioctl_hdio_v_DEPENDENCIES = libtests.a
+ioctl_hdio_v_Xabbrev_SOURCES = ioctl_hdio-v-Xabbrev.c
+ioctl_hdio_v_Xabbrev_OBJECTS = ioctl_hdio-v-Xabbrev.$(OBJEXT)
+ioctl_hdio_v_Xabbrev_LDADD = $(LDADD)
+ioctl_hdio_v_Xabbrev_DEPENDENCIES = libtests.a
+ioctl_hdio_v_Xraw_SOURCES = ioctl_hdio-v-Xraw.c
+ioctl_hdio_v_Xraw_OBJECTS = ioctl_hdio-v-Xraw.$(OBJEXT)
+ioctl_hdio_v_Xraw_LDADD = $(LDADD)
+ioctl_hdio_v_Xraw_DEPENDENCIES = libtests.a
+ioctl_hdio_v_Xverbose_SOURCES = ioctl_hdio-v-Xverbose.c
+ioctl_hdio_v_Xverbose_OBJECTS = ioctl_hdio-v-Xverbose.$(OBJEXT)
+ioctl_hdio_v_Xverbose_LDADD = $(LDADD)
+ioctl_hdio_v_Xverbose_DEPENDENCIES = libtests.a
 ioctl_inotify_SOURCES = ioctl_inotify.c
 ioctl_inotify_OBJECTS = ioctl_inotify.$(OBJEXT)
 ioctl_inotify_LDADD = $(LDADD)
@@ -1096,6 +1664,10 @@ ioctl_sock_gifconf_SOURCES = ioctl_sock_gifconf.c
 ioctl_sock_gifconf_OBJECTS = ioctl_sock_gifconf.$(OBJEXT)
 ioctl_sock_gifconf_LDADD = $(LDADD)
 ioctl_sock_gifconf_DEPENDENCIES = libtests.a
+ioctl_tee_SOURCES = ioctl_tee.c
+ioctl_tee_OBJECTS = ioctl_tee.$(OBJEXT)
+ioctl_tee_LDADD = $(LDADD)
+ioctl_tee_DEPENDENCIES = libtests.a
 ioctl_uffdio_SOURCES = ioctl_uffdio.c
 ioctl_uffdio_OBJECTS = ioctl_uffdio.$(OBJEXT)
 ioctl_uffdio_LDADD = $(LDADD)
@@ -1104,6 +1676,76 @@ ioctl_v4l2_SOURCES = ioctl_v4l2.c
 ioctl_v4l2_OBJECTS = ioctl_v4l2.$(OBJEXT)
 ioctl_v4l2_LDADD = $(LDADD)
 ioctl_v4l2_DEPENDENCIES = libtests.a
+ioctl_v4l2_Xabbrev_SOURCES = ioctl_v4l2-Xabbrev.c
+ioctl_v4l2_Xabbrev_OBJECTS = ioctl_v4l2-Xabbrev.$(OBJEXT)
+ioctl_v4l2_Xabbrev_LDADD = $(LDADD)
+ioctl_v4l2_Xabbrev_DEPENDENCIES = libtests.a
+ioctl_v4l2_Xraw_SOURCES = ioctl_v4l2-Xraw.c
+ioctl_v4l2_Xraw_OBJECTS = ioctl_v4l2-Xraw.$(OBJEXT)
+ioctl_v4l2_Xraw_LDADD = $(LDADD)
+ioctl_v4l2_Xraw_DEPENDENCIES = libtests.a
+ioctl_v4l2_Xverbose_SOURCES = ioctl_v4l2-Xverbose.c
+ioctl_v4l2_Xverbose_OBJECTS = ioctl_v4l2-Xverbose.$(OBJEXT)
+ioctl_v4l2_Xverbose_LDADD = $(LDADD)
+ioctl_v4l2_Xverbose_DEPENDENCIES = libtests.a
+ioctl_v4l2_success_SOURCES = ioctl_v4l2-success.c
+ioctl_v4l2_success_OBJECTS = ioctl_v4l2-success.$(OBJEXT)
+ioctl_v4l2_success_LDADD = $(LDADD)
+ioctl_v4l2_success_DEPENDENCIES = libtests.a
+ioctl_v4l2_success_Xabbrev_SOURCES = ioctl_v4l2-success-Xabbrev.c
+ioctl_v4l2_success_Xabbrev_OBJECTS =  \
+       ioctl_v4l2-success-Xabbrev.$(OBJEXT)
+ioctl_v4l2_success_Xabbrev_LDADD = $(LDADD)
+ioctl_v4l2_success_Xabbrev_DEPENDENCIES = libtests.a
+ioctl_v4l2_success_Xraw_SOURCES = ioctl_v4l2-success-Xraw.c
+ioctl_v4l2_success_Xraw_OBJECTS = ioctl_v4l2-success-Xraw.$(OBJEXT)
+ioctl_v4l2_success_Xraw_LDADD = $(LDADD)
+ioctl_v4l2_success_Xraw_DEPENDENCIES = libtests.a
+ioctl_v4l2_success_Xverbose_SOURCES = ioctl_v4l2-success-Xverbose.c
+ioctl_v4l2_success_Xverbose_OBJECTS =  \
+       ioctl_v4l2-success-Xverbose.$(OBJEXT)
+ioctl_v4l2_success_Xverbose_LDADD = $(LDADD)
+ioctl_v4l2_success_Xverbose_DEPENDENCIES = libtests.a
+ioctl_v4l2_success_v_SOURCES = ioctl_v4l2-success-v.c
+ioctl_v4l2_success_v_OBJECTS = ioctl_v4l2-success-v.$(OBJEXT)
+ioctl_v4l2_success_v_LDADD = $(LDADD)
+ioctl_v4l2_success_v_DEPENDENCIES = libtests.a
+ioctl_v4l2_success_v_Xabbrev_SOURCES = ioctl_v4l2-success-v-Xabbrev.c
+ioctl_v4l2_success_v_Xabbrev_OBJECTS =  \
+       ioctl_v4l2-success-v-Xabbrev.$(OBJEXT)
+ioctl_v4l2_success_v_Xabbrev_LDADD = $(LDADD)
+ioctl_v4l2_success_v_Xabbrev_DEPENDENCIES = libtests.a
+ioctl_v4l2_success_v_Xraw_SOURCES = ioctl_v4l2-success-v-Xraw.c
+ioctl_v4l2_success_v_Xraw_OBJECTS =  \
+       ioctl_v4l2-success-v-Xraw.$(OBJEXT)
+ioctl_v4l2_success_v_Xraw_LDADD = $(LDADD)
+ioctl_v4l2_success_v_Xraw_DEPENDENCIES = libtests.a
+ioctl_v4l2_success_v_Xverbose_SOURCES =  \
+       ioctl_v4l2-success-v-Xverbose.c
+ioctl_v4l2_success_v_Xverbose_OBJECTS =  \
+       ioctl_v4l2-success-v-Xverbose.$(OBJEXT)
+ioctl_v4l2_success_v_Xverbose_LDADD = $(LDADD)
+ioctl_v4l2_success_v_Xverbose_DEPENDENCIES = libtests.a
+ioctl_v4l2_v_SOURCES = ioctl_v4l2-v.c
+ioctl_v4l2_v_OBJECTS = ioctl_v4l2-v.$(OBJEXT)
+ioctl_v4l2_v_LDADD = $(LDADD)
+ioctl_v4l2_v_DEPENDENCIES = libtests.a
+ioctl_v4l2_v_Xabbrev_SOURCES = ioctl_v4l2-v-Xabbrev.c
+ioctl_v4l2_v_Xabbrev_OBJECTS = ioctl_v4l2-v-Xabbrev.$(OBJEXT)
+ioctl_v4l2_v_Xabbrev_LDADD = $(LDADD)
+ioctl_v4l2_v_Xabbrev_DEPENDENCIES = libtests.a
+ioctl_v4l2_v_Xraw_SOURCES = ioctl_v4l2-v-Xraw.c
+ioctl_v4l2_v_Xraw_OBJECTS = ioctl_v4l2-v-Xraw.$(OBJEXT)
+ioctl_v4l2_v_Xraw_LDADD = $(LDADD)
+ioctl_v4l2_v_Xraw_DEPENDENCIES = libtests.a
+ioctl_v4l2_v_Xverbose_SOURCES = ioctl_v4l2-v-Xverbose.c
+ioctl_v4l2_v_Xverbose_OBJECTS = ioctl_v4l2-v-Xverbose.$(OBJEXT)
+ioctl_v4l2_v_Xverbose_LDADD = $(LDADD)
+ioctl_v4l2_v_Xverbose_DEPENDENCIES = libtests.a
+ioctl_watchdog_SOURCES = ioctl_watchdog.c
+ioctl_watchdog_OBJECTS = ioctl_watchdog.$(OBJEXT)
+ioctl_watchdog_LDADD = $(LDADD)
+ioctl_watchdog_DEPENDENCIES = libtests.a
 ioperm_SOURCES = ioperm.c
 ioperm_OBJECTS = ioperm.$(OBJEXT)
 ioperm_LDADD = $(LDADD)
@@ -1116,6 +1758,11 @@ ioprio_SOURCES = ioprio.c
 ioprio_OBJECTS = ioprio.$(OBJEXT)
 ioprio_LDADD = $(LDADD)
 ioprio_DEPENDENCIES = libtests.a
+ioprio__pidns_translation_SOURCES = ioprio--pidns-translation.c
+ioprio__pidns_translation_OBJECTS =  \
+       ioprio--pidns-translation.$(OBJEXT)
+ioprio__pidns_translation_LDADD = $(LDADD)
+ioprio__pidns_translation_DEPENDENCIES = libtests.a
 ioprio_Xabbrev_SOURCES = ioprio-Xabbrev.c
 ioprio_Xabbrev_OBJECTS = ioprio-Xabbrev.$(OBJEXT)
 ioprio_Xabbrev_LDADD = $(LDADD)
@@ -1212,6 +1859,11 @@ kcmp_y_SOURCES = kcmp-y.c
 kcmp_y_OBJECTS = kcmp-y.$(OBJEXT)
 kcmp_y_LDADD = $(LDADD)
 kcmp_y_DEPENDENCIES = libtests.a
+kcmp_y__pidns_translation_SOURCES = kcmp-y--pidns-translation.c
+kcmp_y__pidns_translation_OBJECTS =  \
+       kcmp-y--pidns-translation.$(OBJEXT)
+kcmp_y__pidns_translation_LDADD = $(LDADD)
+kcmp_y__pidns_translation_DEPENDENCIES = libtests.a
 kern_features_SOURCES = kern_features.c
 kern_features_OBJECTS = kern_features.$(OBJEXT)
 kern_features_LDADD = $(LDADD)
@@ -1260,6 +1912,10 @@ kill_SOURCES = kill.c
 kill_OBJECTS = kill.$(OBJEXT)
 kill_LDADD = $(LDADD)
 kill_DEPENDENCIES = libtests.a
+kill__pidns_translation_SOURCES = kill--pidns-translation.c
+kill__pidns_translation_OBJECTS = kill--pidns-translation.$(OBJEXT)
+kill__pidns_translation_LDADD = $(LDADD)
+kill__pidns_translation_DEPENDENCIES = libtests.a
 kill_child_SOURCES = kill_child.c
 kill_child_OBJECTS = kill_child.$(OBJEXT)
 kill_child_LDADD = $(LDADD)
@@ -1318,10 +1974,30 @@ madvise_SOURCES = madvise.c
 madvise_OBJECTS = madvise.$(OBJEXT)
 madvise_LDADD = $(LDADD)
 madvise_DEPENDENCIES = libtests.a
+maybe_switch_current_tcp_SOURCES = maybe_switch_current_tcp.c
+maybe_switch_current_tcp_OBJECTS = maybe_switch_current_tcp.$(OBJEXT)
+maybe_switch_current_tcp_DEPENDENCIES = $(LDADD)
+maybe_switch_current_tcp__quiet_thread_execve_SOURCES =  \
+       maybe_switch_current_tcp--quiet-thread-execve.c
+maybe_switch_current_tcp__quiet_thread_execve_OBJECTS =  \
+       maybe_switch_current_tcp--quiet-thread-execve.$(OBJEXT)
+maybe_switch_current_tcp__quiet_thread_execve_DEPENDENCIES = $(LDADD)
 mbind_SOURCES = mbind.c
 mbind_OBJECTS = mbind.$(OBJEXT)
 mbind_LDADD = $(LDADD)
 mbind_DEPENDENCIES = libtests.a
+mbind_Xabbrev_SOURCES = mbind-Xabbrev.c
+mbind_Xabbrev_OBJECTS = mbind-Xabbrev.$(OBJEXT)
+mbind_Xabbrev_LDADD = $(LDADD)
+mbind_Xabbrev_DEPENDENCIES = libtests.a
+mbind_Xraw_SOURCES = mbind-Xraw.c
+mbind_Xraw_OBJECTS = mbind-Xraw.$(OBJEXT)
+mbind_Xraw_LDADD = $(LDADD)
+mbind_Xraw_DEPENDENCIES = libtests.a
+mbind_Xverbose_SOURCES = mbind-Xverbose.c
+mbind_Xverbose_OBJECTS = mbind-Xverbose.$(OBJEXT)
+mbind_Xverbose_LDADD = $(LDADD)
+mbind_Xverbose_DEPENDENCIES = libtests.a
 membarrier_SOURCES = membarrier.c
 membarrier_OBJECTS = membarrier.$(OBJEXT)
 membarrier_LDADD = $(LDADD)
@@ -1346,6 +2022,12 @@ migrate_pages_SOURCES = migrate_pages.c
 migrate_pages_OBJECTS = migrate_pages.$(OBJEXT)
 migrate_pages_LDADD = $(LDADD)
 migrate_pages_DEPENDENCIES = libtests.a
+migrate_pages__pidns_translation_SOURCES =  \
+       migrate_pages--pidns-translation.c
+migrate_pages__pidns_translation_OBJECTS =  \
+       migrate_pages--pidns-translation.$(OBJEXT)
+migrate_pages__pidns_translation_LDADD = $(LDADD)
+migrate_pages__pidns_translation_DEPENDENCIES = libtests.a
 mincore_SOURCES = mincore.c
 mincore_OBJECTS = mincore.$(OBJEXT)
 mincore_LDADD = $(LDADD)
@@ -1446,10 +2128,24 @@ mount_Xverbose_SOURCES = mount-Xverbose.c
 mount_Xverbose_OBJECTS = mount-Xverbose.$(OBJEXT)
 mount_Xverbose_LDADD = $(LDADD)
 mount_Xverbose_DEPENDENCIES = libtests.a
+move_mount_SOURCES = move_mount.c
+move_mount_OBJECTS = move_mount.$(OBJEXT)
+move_mount_LDADD = $(LDADD)
+move_mount_DEPENDENCIES = libtests.a
+move_mount_P_SOURCES = move_mount-P.c
+move_mount_P_OBJECTS = move_mount-P.$(OBJEXT)
+move_mount_P_LDADD = $(LDADD)
+move_mount_P_DEPENDENCIES = libtests.a
 move_pages_SOURCES = move_pages.c
 move_pages_OBJECTS = move_pages.$(OBJEXT)
 move_pages_LDADD = $(LDADD)
 move_pages_DEPENDENCIES = libtests.a
+move_pages__pidns_translation_SOURCES =  \
+       move_pages--pidns-translation.c
+move_pages__pidns_translation_OBJECTS =  \
+       move_pages--pidns-translation.$(OBJEXT)
+move_pages__pidns_translation_LDADD = $(LDADD)
+move_pages__pidns_translation_DEPENDENCIES = libtests.a
 move_pages_Xabbrev_SOURCES = move_pages-Xabbrev.c
 move_pages_Xabbrev_OBJECTS = move_pages-Xabbrev.$(OBJEXT)
 move_pages_Xabbrev_LDADD = $(LDADD)
@@ -1497,6 +2193,27 @@ nanosleep_SOURCES = nanosleep.c
 nanosleep_OBJECTS = nanosleep.$(OBJEXT)
 nanosleep_LDADD = $(LDADD)
 nanosleep_DEPENDENCIES = libtests.a
+net__decode_fds_dev_netlink_SOURCES = net--decode-fds-dev-netlink.c
+net__decode_fds_dev_netlink_OBJECTS =  \
+       net--decode-fds-dev-netlink.$(OBJEXT)
+net__decode_fds_dev_netlink_LDADD = $(LDADD)
+net__decode_fds_dev_netlink_DEPENDENCIES = libtests.a
+net__decode_fds_none_netlink_SOURCES = net--decode-fds-none-netlink.c
+net__decode_fds_none_netlink_OBJECTS =  \
+       net--decode-fds-none-netlink.$(OBJEXT)
+net__decode_fds_none_netlink_LDADD = $(LDADD)
+net__decode_fds_none_netlink_DEPENDENCIES = libtests.a
+net__decode_fds_path_netlink_SOURCES = net--decode-fds-path-netlink.c
+net__decode_fds_path_netlink_OBJECTS =  \
+       net--decode-fds-path-netlink.$(OBJEXT)
+net__decode_fds_path_netlink_LDADD = $(LDADD)
+net__decode_fds_path_netlink_DEPENDENCIES = libtests.a
+net__decode_fds_socket_netlink_SOURCES =  \
+       net--decode-fds-socket-netlink.c
+net__decode_fds_socket_netlink_OBJECTS =  \
+       net--decode-fds-socket-netlink.$(OBJEXT)
+net__decode_fds_socket_netlink_LDADD = $(LDADD)
+net__decode_fds_socket_netlink_DEPENDENCIES = libtests.a
 net_accept_connect_SOURCES = net-accept-connect.c
 net_accept_connect_OBJECTS = net-accept-connect.$(OBJEXT)
 net_accept_connect_LDADD = $(LDADD)
@@ -1525,6 +2242,12 @@ net_sockaddr_SOURCES = net-sockaddr.c
 net_sockaddr_OBJECTS = net-sockaddr.$(OBJEXT)
 net_sockaddr_LDADD = $(LDADD)
 net_sockaddr_DEPENDENCIES = libtests.a
+net_sockaddr__pidns_translation_SOURCES =  \
+       net-sockaddr--pidns-translation.c
+net_sockaddr__pidns_translation_OBJECTS =  \
+       net-sockaddr--pidns-translation.$(OBJEXT)
+net_sockaddr__pidns_translation_LDADD = $(LDADD)
+net_sockaddr__pidns_translation_DEPENDENCIES = libtests.a
 net_tpacket_req_SOURCES = net-tpacket_req.c
 net_tpacket_req_OBJECTS = net-tpacket_req.$(OBJEXT)
 net_tpacket_req_LDADD = $(LDADD)
@@ -1562,6 +2285,12 @@ netlink_audit_SOURCES = netlink_audit.c
 netlink_audit_OBJECTS = netlink_audit.$(OBJEXT)
 netlink_audit_LDADD = $(LDADD)
 netlink_audit_DEPENDENCIES = libtests.a
+netlink_audit__pidns_translation_SOURCES =  \
+       netlink_audit--pidns-translation.c
+netlink_audit__pidns_translation_OBJECTS =  \
+       netlink_audit--pidns-translation.$(OBJEXT)
+netlink_audit__pidns_translation_LDADD = $(LDADD)
+netlink_audit__pidns_translation_DEPENDENCIES = libtests.a
 netlink_crypto_SOURCES = netlink_crypto.c
 netlink_crypto_OBJECTS = netlink_crypto.$(OBJEXT)
 netlink_crypto_LDADD = $(LDADD)
@@ -1710,6 +2439,10 @@ nlattr_ifla_xdp_SOURCES = nlattr_ifla_xdp.c
 nlattr_ifla_xdp_OBJECTS = nlattr_ifla_xdp.$(OBJEXT)
 nlattr_ifla_xdp_LDADD = $(LDADD)
 nlattr_ifla_xdp_DEPENDENCIES = libtests.a
+nlattr_ifla_xdp_y_SOURCES = nlattr_ifla_xdp-y.c
+nlattr_ifla_xdp_y_OBJECTS = nlattr_ifla_xdp-y.$(OBJEXT)
+nlattr_ifla_xdp_y_LDADD = $(LDADD)
+nlattr_ifla_xdp_y_DEPENDENCIES = libtests.a
 nlattr_inet_diag_msg_SOURCES = nlattr_inet_diag_msg.c
 nlattr_inet_diag_msg_OBJECTS = nlattr_inet_diag_msg.$(OBJEXT)
 nlattr_inet_diag_msg_LDADD = $(LDADD)
@@ -1851,10 +2584,58 @@ open_SOURCES = open.c
 open_OBJECTS = open.$(OBJEXT)
 open_LDADD = $(LDADD)
 open_DEPENDENCIES = libtests.a
+open_tree_SOURCES = open_tree.c
+open_tree_OBJECTS = open_tree.$(OBJEXT)
+open_tree_LDADD = $(LDADD)
+open_tree_DEPENDENCIES = libtests.a
+open_tree_P_SOURCES = open_tree-P.c
+open_tree_P_OBJECTS = open_tree-P.$(OBJEXT)
+open_tree_P_LDADD = $(LDADD)
+open_tree_P_DEPENDENCIES = libtests.a
 openat_SOURCES = openat.c
 openat_OBJECTS = openat.$(OBJEXT)
 openat_LDADD = $(LDADD)
 openat_DEPENDENCIES = libtests.a
+openat2_SOURCES = openat2.c
+openat2_OBJECTS = openat2.$(OBJEXT)
+openat2_LDADD = $(LDADD)
+openat2_DEPENDENCIES = libtests.a
+openat2_Xabbrev_SOURCES = openat2-Xabbrev.c
+openat2_Xabbrev_OBJECTS = openat2-Xabbrev.$(OBJEXT)
+openat2_Xabbrev_LDADD = $(LDADD)
+openat2_Xabbrev_DEPENDENCIES = libtests.a
+openat2_Xraw_SOURCES = openat2-Xraw.c
+openat2_Xraw_OBJECTS = openat2-Xraw.$(OBJEXT)
+openat2_Xraw_LDADD = $(LDADD)
+openat2_Xraw_DEPENDENCIES = libtests.a
+openat2_Xverbose_SOURCES = openat2-Xverbose.c
+openat2_Xverbose_OBJECTS = openat2-Xverbose.$(OBJEXT)
+openat2_Xverbose_LDADD = $(LDADD)
+openat2_Xverbose_DEPENDENCIES = libtests.a
+openat2_v_SOURCES = openat2-v.c
+openat2_v_OBJECTS = openat2-v.$(OBJEXT)
+openat2_v_LDADD = $(LDADD)
+openat2_v_DEPENDENCIES = libtests.a
+openat2_v_y_SOURCES = openat2-v-y.c
+openat2_v_y_OBJECTS = openat2-v-y.$(OBJEXT)
+openat2_v_y_LDADD = $(LDADD)
+openat2_v_y_DEPENDENCIES = libtests.a
+openat2_v_y_Xabbrev_SOURCES = openat2-v-y-Xabbrev.c
+openat2_v_y_Xabbrev_OBJECTS = openat2-v-y-Xabbrev.$(OBJEXT)
+openat2_v_y_Xabbrev_LDADD = $(LDADD)
+openat2_v_y_Xabbrev_DEPENDENCIES = libtests.a
+openat2_v_y_Xraw_SOURCES = openat2-v-y-Xraw.c
+openat2_v_y_Xraw_OBJECTS = openat2-v-y-Xraw.$(OBJEXT)
+openat2_v_y_Xraw_LDADD = $(LDADD)
+openat2_v_y_Xraw_DEPENDENCIES = libtests.a
+openat2_v_y_Xverbose_SOURCES = openat2-v-y-Xverbose.c
+openat2_v_y_Xverbose_OBJECTS = openat2-v-y-Xverbose.$(OBJEXT)
+openat2_v_y_Xverbose_LDADD = $(LDADD)
+openat2_v_y_Xverbose_DEPENDENCIES = libtests.a
+openat2_y_SOURCES = openat2-y.c
+openat2_y_OBJECTS = openat2-y.$(OBJEXT)
+openat2_y_LDADD = $(LDADD)
+openat2_y_DEPENDENCIES = libtests.a
 orphaned_process_group_SOURCES = orphaned_process_group.c
 orphaned_process_group_OBJECTS = orphaned_process_group.$(OBJEXT)
 orphaned_process_group_LDADD = $(LDADD)
@@ -1899,10 +2680,69 @@ personality_Xverbose_SOURCES = personality-Xverbose.c
 personality_Xverbose_OBJECTS = personality-Xverbose.$(OBJEXT)
 personality_Xverbose_LDADD = $(LDADD)
 personality_Xverbose_DEPENDENCIES = libtests.a
+pidfd_getfd_SOURCES = pidfd_getfd.c
+pidfd_getfd_OBJECTS = pidfd_getfd.$(OBJEXT)
+pidfd_getfd_LDADD = $(LDADD)
+pidfd_getfd_DEPENDENCIES = libtests.a
+pidfd_getfd_y_SOURCES = pidfd_getfd-y.c
+pidfd_getfd_y_OBJECTS = pidfd_getfd-y.$(OBJEXT)
+pidfd_getfd_y_LDADD = $(LDADD)
+pidfd_getfd_y_DEPENDENCIES = libtests.a
+pidfd_getfd_yy_SOURCES = pidfd_getfd-yy.c
+pidfd_getfd_yy_OBJECTS = pidfd_getfd-yy.$(OBJEXT)
+pidfd_getfd_yy_LDADD = $(LDADD)
+pidfd_getfd_yy_DEPENDENCIES = libtests.a
+pidfd_open_SOURCES = pidfd_open.c
+pidfd_open_OBJECTS = pidfd_open.$(OBJEXT)
+pidfd_open_LDADD = $(LDADD)
+pidfd_open_DEPENDENCIES = libtests.a
+pidfd_open__decode_fd_path_SOURCES = pidfd_open--decode-fd-path.c
+pidfd_open__decode_fd_path_OBJECTS =  \
+       pidfd_open--decode-fd-path.$(OBJEXT)
+pidfd_open__decode_fd_path_LDADD = $(LDADD)
+pidfd_open__decode_fd_path_DEPENDENCIES = libtests.a
+pidfd_open__decode_fd_pidfd_SOURCES = pidfd_open--decode-fd-pidfd.c
+pidfd_open__decode_fd_pidfd_OBJECTS =  \
+       pidfd_open--decode-fd-pidfd.$(OBJEXT)
+pidfd_open__decode_fd_pidfd_LDADD = $(LDADD)
+pidfd_open__decode_fd_pidfd_DEPENDENCIES = libtests.a
+pidfd_open__decode_fd_socket_SOURCES = pidfd_open--decode-fd-socket.c
+pidfd_open__decode_fd_socket_OBJECTS =  \
+       pidfd_open--decode-fd-socket.$(OBJEXT)
+pidfd_open__decode_fd_socket_LDADD = $(LDADD)
+pidfd_open__decode_fd_socket_DEPENDENCIES = libtests.a
+pidfd_open__pidns_translation_SOURCES =  \
+       pidfd_open--pidns-translation.c
+pidfd_open__pidns_translation_OBJECTS =  \
+       pidfd_open--pidns-translation.$(OBJEXT)
+pidfd_open__pidns_translation_LDADD = $(LDADD)
+pidfd_open__pidns_translation_DEPENDENCIES = libtests.a
+pidfd_open_P_SOURCES = pidfd_open-P.c
+pidfd_open_P_OBJECTS = pidfd_open-P.$(OBJEXT)
+pidfd_open_P_LDADD = $(LDADD)
+pidfd_open_P_DEPENDENCIES = libtests.a
+pidfd_open_y_SOURCES = pidfd_open-y.c
+pidfd_open_y_OBJECTS = pidfd_open-y.$(OBJEXT)
+pidfd_open_y_LDADD = $(LDADD)
+pidfd_open_y_DEPENDENCIES = libtests.a
+pidfd_open_yy_SOURCES = pidfd_open-yy.c
+pidfd_open_yy_OBJECTS = pidfd_open-yy.$(OBJEXT)
+pidfd_open_yy_LDADD = $(LDADD)
+pidfd_open_yy_DEPENDENCIES = libtests.a
 pidfd_send_signal_SOURCES = pidfd_send_signal.c
 pidfd_send_signal_OBJECTS = pidfd_send_signal.$(OBJEXT)
 pidfd_send_signal_LDADD = $(LDADD)
 pidfd_send_signal_DEPENDENCIES = libtests.a
+pidfd_send_signal__pidns_translation_SOURCES =  \
+       pidfd_send_signal--pidns-translation.c
+pidfd_send_signal__pidns_translation_OBJECTS =  \
+       pidfd_send_signal--pidns-translation.$(OBJEXT)
+pidfd_send_signal__pidns_translation_LDADD = $(LDADD)
+pidfd_send_signal__pidns_translation_DEPENDENCIES = libtests.a
+pidns_cache_SOURCES = pidns-cache.c
+pidns_cache_OBJECTS = pidns-cache.$(OBJEXT)
+pidns_cache_LDADD = $(LDADD)
+pidns_cache_DEPENDENCIES = libtests.a
 pipe_SOURCES = pipe.c
 pipe_OBJECTS = pipe.$(OBJEXT)
 pipe_LDADD = $(LDADD)
@@ -2008,6 +2848,10 @@ print_maxfd_SOURCES = print_maxfd.c
 print_maxfd_OBJECTS = print_maxfd.$(OBJEXT)
 print_maxfd_LDADD = $(LDADD)
 print_maxfd_DEPENDENCIES = libtests.a
+print_ppid_tracerpid_SOURCES = print_ppid_tracerpid.c
+print_ppid_tracerpid_OBJECTS = print_ppid_tracerpid.$(OBJEXT)
+print_ppid_tracerpid_LDADD = $(LDADD)
+print_ppid_tracerpid_DEPENDENCIES = libtests.a
 printpath_umovestr_SOURCES = printpath-umovestr.c
 printpath_umovestr_OBJECTS = printpath-umovestr.$(OBJEXT)
 printpath_umovestr_LDADD = $(LDADD)
@@ -2057,14 +2901,31 @@ prlimit64_SOURCES = prlimit64.c
 prlimit64_OBJECTS = prlimit64.$(OBJEXT)
 prlimit64_LDADD = $(LDADD)
 prlimit64_DEPENDENCIES = libtests.a
+prlimit64__pidns_translation_SOURCES = prlimit64--pidns-translation.c
+prlimit64__pidns_translation_OBJECTS =  \
+       prlimit64--pidns-translation.$(OBJEXT)
+prlimit64__pidns_translation_LDADD = $(LDADD)
+prlimit64__pidns_translation_DEPENDENCIES = libtests.a
 process_vm_readv_SOURCES = process_vm_readv.c
 process_vm_readv_OBJECTS = process_vm_readv.$(OBJEXT)
 process_vm_readv_LDADD = $(LDADD)
 process_vm_readv_DEPENDENCIES = libtests.a
+process_vm_readv__pidns_translation_SOURCES =  \
+       process_vm_readv--pidns-translation.c
+process_vm_readv__pidns_translation_OBJECTS =  \
+       process_vm_readv--pidns-translation.$(OBJEXT)
+process_vm_readv__pidns_translation_LDADD = $(LDADD)
+process_vm_readv__pidns_translation_DEPENDENCIES = libtests.a
 process_vm_writev_SOURCES = process_vm_writev.c
 process_vm_writev_OBJECTS = process_vm_writev.$(OBJEXT)
 process_vm_writev_LDADD = $(LDADD)
 process_vm_writev_DEPENDENCIES = libtests.a
+process_vm_writev__pidns_translation_SOURCES =  \
+       process_vm_writev--pidns-translation.c
+process_vm_writev__pidns_translation_OBJECTS =  \
+       process_vm_writev--pidns-translation.$(OBJEXT)
+process_vm_writev__pidns_translation_LDADD = $(LDADD)
+process_vm_writev__pidns_translation_DEPENDENCIES = libtests.a
 pselect6_SOURCES = pselect6.c
 pselect6_OBJECTS = pselect6.$(OBJEXT)
 pselect6_LDADD = $(LDADD)
@@ -2173,10 +3034,18 @@ reboot_SOURCES = reboot.c
 reboot_OBJECTS = reboot.$(OBJEXT)
 reboot_LDADD = $(LDADD)
 reboot_DEPENDENCIES = libtests.a
+recv_MSG_TRUNC_SOURCES = recv-MSG_TRUNC.c
+recv_MSG_TRUNC_OBJECTS = recv-MSG_TRUNC.$(OBJEXT)
+recv_MSG_TRUNC_LDADD = $(LDADD)
+recv_MSG_TRUNC_DEPENDENCIES = libtests.a
 recvfrom_SOURCES = recvfrom.c
 recvfrom_OBJECTS = recvfrom.$(OBJEXT)
 recvfrom_LDADD = $(LDADD)
 recvfrom_DEPENDENCIES = libtests.a
+recvfrom_MSG_TRUNC_SOURCES = recvfrom-MSG_TRUNC.c
+recvfrom_MSG_TRUNC_OBJECTS = recvfrom-MSG_TRUNC.$(OBJEXT)
+recvfrom_MSG_TRUNC_LDADD = $(LDADD)
+recvfrom_MSG_TRUNC_DEPENDENCIES = libtests.a
 recvmmsg_timeout_SOURCES = recvmmsg-timeout.c
 recvmmsg_timeout_OBJECTS = recvmmsg-timeout.$(OBJEXT)
 recvmmsg_timeout_LDADD = $(LDADD)
@@ -2250,6 +3119,12 @@ rt_sigqueueinfo_SOURCES = rt_sigqueueinfo.c
 rt_sigqueueinfo_OBJECTS = rt_sigqueueinfo.$(OBJEXT)
 rt_sigqueueinfo_LDADD = $(LDADD)
 rt_sigqueueinfo_DEPENDENCIES = libtests.a
+rt_sigqueueinfo__pidns_translation_SOURCES =  \
+       rt_sigqueueinfo--pidns-translation.c
+rt_sigqueueinfo__pidns_translation_OBJECTS =  \
+       rt_sigqueueinfo--pidns-translation.$(OBJEXT)
+rt_sigqueueinfo__pidns_translation_LDADD = $(LDADD)
+rt_sigqueueinfo__pidns_translation_DEPENDENCIES = libtests.a
 rt_sigreturn_SOURCES = rt_sigreturn.c
 rt_sigreturn_OBJECTS = rt_sigreturn.$(OBJEXT)
 rt_sigreturn_LDADD = $(LDADD)
@@ -2266,6 +3141,12 @@ rt_tgsigqueueinfo_SOURCES = rt_tgsigqueueinfo.c
 rt_tgsigqueueinfo_OBJECTS = rt_tgsigqueueinfo.$(OBJEXT)
 rt_tgsigqueueinfo_LDADD = $(LDADD)
 rt_tgsigqueueinfo_DEPENDENCIES = libtests.a
+rt_tgsigqueueinfo__pidns_translation_SOURCES =  \
+       rt_tgsigqueueinfo--pidns-translation.c
+rt_tgsigqueueinfo__pidns_translation_OBJECTS =  \
+       rt_tgsigqueueinfo--pidns-translation.$(OBJEXT)
+rt_tgsigqueueinfo__pidns_translation_LDADD = $(LDADD)
+rt_tgsigqueueinfo__pidns_translation_DEPENDENCIES = libtests.a
 run_expect_termsig_SOURCES = run_expect_termsig.c
 run_expect_termsig_OBJECTS = run_expect_termsig.$(OBJEXT)
 run_expect_termsig_LDADD = $(LDADD)
@@ -2306,18 +3187,42 @@ sched_xetaffinity_SOURCES = sched_xetaffinity.c
 sched_xetaffinity_OBJECTS = sched_xetaffinity.$(OBJEXT)
 sched_xetaffinity_LDADD = $(LDADD)
 sched_xetaffinity_DEPENDENCIES = libtests.a
+sched_xetaffinity__pidns_translation_SOURCES =  \
+       sched_xetaffinity--pidns-translation.c
+sched_xetaffinity__pidns_translation_OBJECTS =  \
+       sched_xetaffinity--pidns-translation.$(OBJEXT)
+sched_xetaffinity__pidns_translation_LDADD = $(LDADD)
+sched_xetaffinity__pidns_translation_DEPENDENCIES = libtests.a
 sched_xetattr_SOURCES = sched_xetattr.c
 sched_xetattr_OBJECTS = sched_xetattr.$(OBJEXT)
 sched_xetattr_LDADD = $(LDADD)
 sched_xetattr_DEPENDENCIES = libtests.a
+sched_xetattr__pidns_translation_SOURCES =  \
+       sched_xetattr--pidns-translation.c
+sched_xetattr__pidns_translation_OBJECTS =  \
+       sched_xetattr--pidns-translation.$(OBJEXT)
+sched_xetattr__pidns_translation_LDADD = $(LDADD)
+sched_xetattr__pidns_translation_DEPENDENCIES = libtests.a
 sched_xetparam_SOURCES = sched_xetparam.c
 sched_xetparam_OBJECTS = sched_xetparam.$(OBJEXT)
 sched_xetparam_LDADD = $(LDADD)
 sched_xetparam_DEPENDENCIES = libtests.a
+sched_xetparam__pidns_translation_SOURCES =  \
+       sched_xetparam--pidns-translation.c
+sched_xetparam__pidns_translation_OBJECTS =  \
+       sched_xetparam--pidns-translation.$(OBJEXT)
+sched_xetparam__pidns_translation_LDADD = $(LDADD)
+sched_xetparam__pidns_translation_DEPENDENCIES = libtests.a
 sched_xetscheduler_SOURCES = sched_xetscheduler.c
 sched_xetscheduler_OBJECTS = sched_xetscheduler.$(OBJEXT)
 sched_xetscheduler_LDADD = $(LDADD)
 sched_xetscheduler_DEPENDENCIES = libtests.a
+sched_xetscheduler__pidns_translation_SOURCES =  \
+       sched_xetscheduler--pidns-translation.c
+sched_xetscheduler__pidns_translation_OBJECTS =  \
+       sched_xetscheduler--pidns-translation.$(OBJEXT)
+sched_xetscheduler__pidns_translation_LDADD = $(LDADD)
+sched_xetscheduler__pidns_translation_DEPENDENCIES = libtests.a
 sched_yield_SOURCES = sched_yield.c
 sched_yield_OBJECTS = sched_yield.$(OBJEXT)
 sched_yield_LDADD = $(LDADD)
@@ -2354,6 +3259,14 @@ semop_SOURCES = semop.c
 semop_OBJECTS = semop.$(OBJEXT)
 semop_LDADD = $(LDADD)
 semop_DEPENDENCIES = libtests.a
+semop_indirect_SOURCES = semop-indirect.c
+semop_indirect_OBJECTS = semop-indirect.$(OBJEXT)
+semop_indirect_LDADD = $(LDADD)
+semop_indirect_DEPENDENCIES = libtests.a
+semtimedop_SOURCES = semtimedop.c
+semtimedop_OBJECTS = semtimedop.$(OBJEXT)
+semtimedop_LDADD = $(LDADD)
+semtimedop_DEPENDENCIES = libtests.a
 sendfile_SOURCES = sendfile.c
 sendfile_OBJECTS = sendfile.$(OBJEXT)
 sendfile_LDADD = $(LDADD)
@@ -2366,6 +3279,18 @@ set_mempolicy_SOURCES = set_mempolicy.c
 set_mempolicy_OBJECTS = set_mempolicy.$(OBJEXT)
 set_mempolicy_LDADD = $(LDADD)
 set_mempolicy_DEPENDENCIES = libtests.a
+set_mempolicy_Xabbrev_SOURCES = set_mempolicy-Xabbrev.c
+set_mempolicy_Xabbrev_OBJECTS = set_mempolicy-Xabbrev.$(OBJEXT)
+set_mempolicy_Xabbrev_LDADD = $(LDADD)
+set_mempolicy_Xabbrev_DEPENDENCIES = libtests.a
+set_mempolicy_Xraw_SOURCES = set_mempolicy-Xraw.c
+set_mempolicy_Xraw_OBJECTS = set_mempolicy-Xraw.$(OBJEXT)
+set_mempolicy_Xraw_LDADD = $(LDADD)
+set_mempolicy_Xraw_DEPENDENCIES = libtests.a
+set_mempolicy_Xverbose_SOURCES = set_mempolicy-Xverbose.c
+set_mempolicy_Xverbose_OBJECTS = set_mempolicy-Xverbose.$(OBJEXT)
+set_mempolicy_Xverbose_LDADD = $(LDADD)
+set_mempolicy_Xverbose_DEPENDENCIES = libtests.a
 set_ptracer_any_SOURCES = set_ptracer_any.c
 set_ptracer_any_OBJECTS = set_ptracer_any.$(OBJEXT)
 set_ptracer_any_LDADD = $(LDADD)
@@ -2422,6 +3347,10 @@ setns_SOURCES = setns.c
 setns_OBJECTS = setns.$(OBJEXT)
 setns_LDADD = $(LDADD)
 setns_DEPENDENCIES = libtests.a
+setpgrp_exec_SOURCES = setpgrp-exec.c
+setpgrp_exec_OBJECTS = setpgrp-exec.$(OBJEXT)
+setpgrp_exec_LDADD = $(LDADD)
+setpgrp_exec_DEPENDENCIES = libtests.a
 setregid_SOURCES = setregid.c
 setregid_OBJECTS = setregid.$(OBJEXT)
 setregid_LDADD = $(LDADD)
@@ -2506,6 +3435,12 @@ signal_receive_SOURCES = signal_receive.c
 signal_receive_OBJECTS = signal_receive.$(OBJEXT)
 signal_receive_LDADD = $(LDADD)
 signal_receive_DEPENDENCIES = libtests.a
+signal_receive__pidns_translation_SOURCES =  \
+       signal_receive--pidns-translation.c
+signal_receive__pidns_translation_OBJECTS =  \
+       signal_receive--pidns-translation.$(OBJEXT)
+signal_receive__pidns_translation_LDADD = $(LDADD)
+signal_receive__pidns_translation_DEPENDENCIES = libtests.a
 signalfd4_SOURCES = signalfd4.c
 signalfd4_OBJECTS = signalfd4.$(OBJEXT)
 signalfd4_LDADD = $(LDADD)
@@ -2542,6 +3477,12 @@ so_peercred_SOURCES = so_peercred.c
 so_peercred_OBJECTS = so_peercred.$(OBJEXT)
 so_peercred_LDADD = $(LDADD)
 so_peercred_DEPENDENCIES = libtests.a
+so_peercred__pidns_translation_SOURCES =  \
+       so_peercred--pidns-translation.c
+so_peercred__pidns_translation_OBJECTS =  \
+       so_peercred--pidns-translation.$(OBJEXT)
+so_peercred__pidns_translation_LDADD = $(LDADD)
+so_peercred__pidns_translation_DEPENDENCIES = libtests.a
 so_peercred_Xabbrev_SOURCES = so_peercred-Xabbrev.c
 so_peercred_Xabbrev_OBJECTS = so_peercred-Xabbrev.$(OBJEXT)
 so_peercred_Xabbrev_LDADD = $(LDADD)
@@ -2604,6 +3545,12 @@ am_stack_fcall_OBJECTS = stack-fcall.$(OBJEXT) stack-fcall-0.$(OBJEXT) \
 stack_fcall_OBJECTS = $(am_stack_fcall_OBJECTS)
 stack_fcall_LDADD = $(LDADD)
 stack_fcall_DEPENDENCIES = libtests.a
+am_stack_fcall_attach_OBJECTS = stack-fcall-attach.$(OBJEXT) \
+       stack-fcall-0.$(OBJEXT) stack-fcall-1.$(OBJEXT) \
+       stack-fcall-2.$(OBJEXT) stack-fcall-3.$(OBJEXT)
+stack_fcall_attach_OBJECTS = $(am_stack_fcall_attach_OBJECTS)
+stack_fcall_attach_LDADD = $(LDADD)
+stack_fcall_attach_DEPENDENCIES = libtests.a
 am_stack_fcall_mangled_OBJECTS = stack-fcall-mangled.$(OBJEXT) \
        stack-fcall-mangled-0.$(OBJEXT) \
        stack-fcall-mangled-1.$(OBJEXT) \
@@ -2628,10 +3575,84 @@ statfs64_SOURCES = statfs64.c
 statfs64_OBJECTS = statfs64.$(OBJEXT)
 statfs64_LDADD = $(LDADD)
 statfs64_DEPENDENCIES = libtests.a
+status_all_SOURCES = status-all.c
+status_all_OBJECTS = status-all.$(OBJEXT)
+status_all_LDADD = $(LDADD)
+status_all_DEPENDENCIES = libtests.a
+status_failed_SOURCES = status-failed.c
+status_failed_OBJECTS = status-failed.$(OBJEXT)
+status_failed_LDADD = $(LDADD)
+status_failed_DEPENDENCIES = libtests.a
+status_failed_long_SOURCES = status-failed-long.c
+status_failed_long_OBJECTS = status-failed-long.$(OBJEXT)
+status_failed_long_LDADD = $(LDADD)
+status_failed_long_DEPENDENCIES = libtests.a
+status_failed_status_SOURCES = status-failed-status.c
+status_failed_status_OBJECTS = status-failed-status.$(OBJEXT)
+status_failed_status_LDADD = $(LDADD)
+status_failed_status_DEPENDENCIES = libtests.a
+status_none_SOURCES = status-none.c
+status_none_OBJECTS = status-none.$(OBJEXT)
+status_none_LDADD = $(LDADD)
+status_none_DEPENDENCIES = libtests.a
+status_none_f_SOURCES = status-none-f.c
+status_none_f_OBJECTS = status-none-f.$(OBJEXT)
+status_none_f_LDADD = $(LDADD)
+status_none_f_DEPENDENCIES = libtests.a
+status_none_threads_SOURCES = status-none-threads.c
+status_none_threads_OBJECTS = status-none-threads.$(OBJEXT)
+status_none_threads_DEPENDENCIES = $(LDADD)
+status_successful_SOURCES = status-successful.c
+status_successful_OBJECTS = status-successful.$(OBJEXT)
+status_successful_LDADD = $(LDADD)
+status_successful_DEPENDENCIES = libtests.a
+status_successful_long_SOURCES = status-successful-long.c
+status_successful_long_OBJECTS = status-successful-long.$(OBJEXT)
+status_successful_long_LDADD = $(LDADD)
+status_successful_long_DEPENDENCIES = libtests.a
+status_successful_status_SOURCES = status-successful-status.c
+status_successful_status_OBJECTS = status-successful-status.$(OBJEXT)
+status_successful_status_LDADD = $(LDADD)
+status_successful_status_DEPENDENCIES = libtests.a
+status_unfinished_SOURCES = status-unfinished.c
+status_unfinished_OBJECTS = status-unfinished.$(OBJEXT)
+status_unfinished_LDADD = $(LDADD)
+status_unfinished_DEPENDENCIES = libtests.a
+status_unfinished_threads_SOURCES = status-unfinished-threads.c
+status_unfinished_threads_OBJECTS =  \
+       status-unfinished-threads.$(OBJEXT)
+status_unfinished_threads_DEPENDENCIES = $(LDADD)
 statx_SOURCES = statx.c
 statx_OBJECTS = statx.$(OBJEXT)
 statx_LDADD = $(LDADD)
 statx_DEPENDENCIES = libtests.a
+strace__strings_in_hex_SOURCES = strace--strings-in-hex.c
+strace__strings_in_hex_OBJECTS = strace--strings-in-hex.$(OBJEXT)
+strace__strings_in_hex_LDADD = $(LDADD)
+strace__strings_in_hex_DEPENDENCIES = libtests.a
+strace__strings_in_hex_all_SOURCES = strace--strings-in-hex-all.c
+strace__strings_in_hex_all_OBJECTS =  \
+       strace--strings-in-hex-all.$(OBJEXT)
+strace__strings_in_hex_all_LDADD = $(LDADD)
+strace__strings_in_hex_all_DEPENDENCIES = libtests.a
+strace__strings_in_hex_non_ascii_SOURCES =  \
+       strace--strings-in-hex-non-ascii.c
+strace__strings_in_hex_non_ascii_OBJECTS =  \
+       strace--strings-in-hex-non-ascii.$(OBJEXT)
+strace__strings_in_hex_non_ascii_LDADD = $(LDADD)
+strace__strings_in_hex_non_ascii_DEPENDENCIES = libtests.a
+strace_n_SOURCES = strace-n.c
+strace_n_OBJECTS = strace-n.$(OBJEXT)
+strace_n_LDADD = $(LDADD)
+strace_n_DEPENDENCIES = libtests.a
+strace_x_SOURCES = strace-x.c
+strace_x_OBJECTS = strace-x.$(OBJEXT)
+strace_x_LDADD = $(LDADD)
+strace_x_DEPENDENCIES = libtests.a
+strace_xx_SOURCES = strace-xx.c
+strace_xx_OBJECTS = strace-xx.$(OBJEXT)
+strace_xx_LDADD = $(LDADD)
+strace_xx_DEPENDENCIES = libtests.a
 swap_SOURCES = swap.c
 swap_OBJECTS = swap.$(OBJEXT)
 swap_LDADD = $(LDADD)
@@ -2668,13 +3689,41 @@ syslog_SOURCES = syslog.c
 syslog_OBJECTS = syslog.$(OBJEXT)
 syslog_LDADD = $(LDADD)
 syslog_DEPENDENCIES = libtests.a
+syslog_success_SOURCES = syslog-success.c
+syslog_success_OBJECTS = syslog-success.$(OBJEXT)
+syslog_success_LDADD = $(LDADD)
+syslog_success_DEPENDENCIES = libtests.a
 tee_SOURCES = tee.c
 tee_OBJECTS = tee.$(OBJEXT)
 tee_LDADD = $(LDADD)
 tee_DEPENDENCIES = libtests.a
+tgkill_SOURCES = tgkill.c
+tgkill_OBJECTS = tgkill.$(OBJEXT)
+tgkill_LDADD = $(LDADD)
+tgkill_DEPENDENCIES = libtests.a
+tgkill__pidns_translation_SOURCES = tgkill--pidns-translation.c
+tgkill__pidns_translation_OBJECTS =  \
+       tgkill--pidns-translation.$(OBJEXT)
+tgkill__pidns_translation_LDADD = $(LDADD)
+tgkill__pidns_translation_DEPENDENCIES = libtests.a
 threads_execve_SOURCES = threads-execve.c
 threads_execve_OBJECTS = threads-execve.$(OBJEXT)
 threads_execve_DEPENDENCIES = $(am__DEPENDENCIES_1) $(LDADD)
+threads_execve__quiet_thread_execve_SOURCES =  \
+       threads-execve--quiet-thread-execve.c
+threads_execve__quiet_thread_execve_OBJECTS =  \
+       threads-execve--quiet-thread-execve.$(OBJEXT)
+threads_execve__quiet_thread_execve_DEPENDENCIES =  \
+       $(am__DEPENDENCIES_1) $(LDADD)
+threads_execve_q_SOURCES = threads-execve-q.c
+threads_execve_q_OBJECTS = threads-execve-q.$(OBJEXT)
+threads_execve_q_DEPENDENCIES = $(am__DEPENDENCIES_1) $(LDADD)
+threads_execve_qq_SOURCES = threads-execve-qq.c
+threads_execve_qq_OBJECTS = threads-execve-qq.$(OBJEXT)
+threads_execve_qq_DEPENDENCIES = $(am__DEPENDENCIES_1) $(LDADD)
+threads_execve_qqq_SOURCES = threads-execve-qqq.c
+threads_execve_qqq_OBJECTS = threads-execve-qqq.$(OBJEXT)
+threads_execve_qqq_DEPENDENCIES = $(am__DEPENDENCIES_1) $(LDADD)
 time_SOURCES = time.c
 time_OBJECTS = time.$(OBJEXT)
 time_LDADD = $(LDADD)
@@ -2698,6 +3747,24 @@ times_fail_SOURCES = times-fail.c
 times_fail_OBJECTS = times-fail.$(OBJEXT)
 times_fail_LDADD = $(LDADD)
 times_fail_DEPENDENCIES = libtests.a
+tkill_SOURCES = tkill.c
+tkill_OBJECTS = tkill.$(OBJEXT)
+tkill_LDADD = $(LDADD)
+tkill_DEPENDENCIES = libtests.a
+tkill__pidns_translation_SOURCES = tkill--pidns-translation.c
+tkill__pidns_translation_OBJECTS = tkill--pidns-translation.$(OBJEXT)
+tkill__pidns_translation_LDADD = $(LDADD)
+tkill__pidns_translation_DEPENDENCIES = libtests.a
+tracer_ppid_pgid_sid_SOURCES = tracer_ppid_pgid_sid.c
+tracer_ppid_pgid_sid_OBJECTS = tracer_ppid_pgid_sid.$(OBJEXT)
+tracer_ppid_pgid_sid_LDADD = $(LDADD)
+tracer_ppid_pgid_sid_DEPENDENCIES = libtests.a
+am_trie_test_OBJECTS = trie_test-trie_test.$(OBJEXT) \
+       trie_test-trie_for_tests.$(OBJEXT)
+trie_test_OBJECTS = $(am_trie_test_OBJECTS)
+trie_test_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_1)
+trie_test_LINK = $(CCLD) $(trie_test_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+       $(LDFLAGS) -o $@
 truncate_SOURCES = truncate.c
 truncate_OBJECTS = truncate.$(OBJEXT)
 truncate_LDADD = $(LDADD)
@@ -2746,6 +3813,14 @@ umovestr3_SOURCES = umovestr3.c
 umovestr3_OBJECTS = umovestr3.$(OBJEXT)
 umovestr3_LDADD = $(LDADD)
 umovestr3_DEPENDENCIES = libtests.a
+umovestr_cached_SOURCES = umovestr_cached.c
+umovestr_cached_OBJECTS = umovestr_cached.$(OBJEXT)
+umovestr_cached_LDADD = $(LDADD)
+umovestr_cached_DEPENDENCIES = libtests.a
+umovestr_cached_adjacent_SOURCES = umovestr_cached_adjacent.c
+umovestr_cached_adjacent_OBJECTS = umovestr_cached_adjacent.$(OBJEXT)
+umovestr_cached_adjacent_LDADD = $(LDADD)
+umovestr_cached_adjacent_DEPENDENCIES = libtests.a
 uname_SOURCES = uname.c
 uname_OBJECTS = uname.$(OBJEXT)
 uname_LDADD = $(LDADD)
@@ -2851,6 +3926,12 @@ xet_robust_list_SOURCES = xet_robust_list.c
 xet_robust_list_OBJECTS = xet_robust_list.$(OBJEXT)
 xet_robust_list_LDADD = $(LDADD)
 xet_robust_list_DEPENDENCIES = libtests.a
+xet_robust_list__pidns_translation_SOURCES =  \
+       xet_robust_list--pidns-translation.c
+xet_robust_list__pidns_translation_OBJECTS =  \
+       xet_robust_list--pidns-translation.$(OBJEXT)
+xet_robust_list__pidns_translation_LDADD = $(LDADD)
+xet_robust_list__pidns_translation_DEPENDENCIES = libtests.a
 xet_thread_area_x86_SOURCES = xet_thread_area_x86.c
 xet_thread_area_x86_OBJECTS = xet_thread_area_x86.$(OBJEXT)
 xet_thread_area_x86_LDADD = $(LDADD)
@@ -2863,10 +3944,21 @@ xetpgid_SOURCES = xetpgid.c
 xetpgid_OBJECTS = xetpgid.$(OBJEXT)
 xetpgid_LDADD = $(LDADD)
 xetpgid_DEPENDENCIES = libtests.a
+xetpgid__pidns_translation_SOURCES = xetpgid--pidns-translation.c
+xetpgid__pidns_translation_OBJECTS =  \
+       xetpgid--pidns-translation.$(OBJEXT)
+xetpgid__pidns_translation_LDADD = $(LDADD)
+xetpgid__pidns_translation_DEPENDENCIES = libtests.a
 xetpriority_SOURCES = xetpriority.c
 xetpriority_OBJECTS = xetpriority.$(OBJEXT)
 xetpriority_LDADD = $(LDADD)
 xetpriority_DEPENDENCIES = libtests.a
+xetpriority__pidns_translation_SOURCES =  \
+       xetpriority--pidns-translation.c
+xetpriority__pidns_translation_OBJECTS =  \
+       xetpriority--pidns-translation.$(OBJEXT)
+xetpriority__pidns_translation_LDADD = $(LDADD)
+xetpriority__pidns_translation_DEPENDENCIES = libtests.a
 xettimeofday_SOURCES = xettimeofday.c
 xettimeofday_OBJECTS = xettimeofday.$(OBJEXT)
 xettimeofday_LDADD = $(LDADD)
@@ -2900,29 +3992,55 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/attach-f-p.Po ./$(DEPDIR)/attach-p-cmd-cmd.Po \
        ./$(DEPDIR)/attach-p-cmd-p.Po \
        ./$(DEPDIR)/block_reset_raise_run.Po \
+       ./$(DEPDIR)/block_reset_run.Po \
        ./$(DEPDIR)/bpf-obj_get_info_by_fd-prog-v.Po \
        ./$(DEPDIR)/bpf-obj_get_info_by_fd-prog.Po \
        ./$(DEPDIR)/bpf-obj_get_info_by_fd-v.Po \
        ./$(DEPDIR)/bpf-obj_get_info_by_fd.Po \
-       ./$(DEPDIR)/bpf-success-v.Po ./$(DEPDIR)/bpf-success.Po \
-       ./$(DEPDIR)/bpf-v.Po ./$(DEPDIR)/bpf.Po ./$(DEPDIR)/brk.Po \
-       ./$(DEPDIR)/btrfs.Po ./$(DEPDIR)/caps-abbrev.Po \
-       ./$(DEPDIR)/caps.Po ./$(DEPDIR)/check_sigblock.Po \
-       ./$(DEPDIR)/check_sigign.Po ./$(DEPDIR)/chmod.Po \
-       ./$(DEPDIR)/chown.Po ./$(DEPDIR)/chown32.Po \
-       ./$(DEPDIR)/chroot.Po ./$(DEPDIR)/clock_adjtime.Po \
-       ./$(DEPDIR)/clock_nanosleep.Po ./$(DEPDIR)/clock_xettime.Po \
-       ./$(DEPDIR)/clone_parent.Po ./$(DEPDIR)/clone_ptrace.Po \
-       ./$(DEPDIR)/copy_file_range.Po ./$(DEPDIR)/count-f.Po \
-       ./$(DEPDIR)/creat.Po ./$(DEPDIR)/delay.Po \
-       ./$(DEPDIR)/delete_module.Po ./$(DEPDIR)/dev-yy.Po \
-       ./$(DEPDIR)/dup.Po ./$(DEPDIR)/dup2.Po ./$(DEPDIR)/dup3.Po \
-       ./$(DEPDIR)/epoll_create.Po ./$(DEPDIR)/epoll_create1.Po \
-       ./$(DEPDIR)/epoll_ctl.Po ./$(DEPDIR)/epoll_pwait.Po \
-       ./$(DEPDIR)/epoll_wait.Po ./$(DEPDIR)/erestartsys.Po \
-       ./$(DEPDIR)/eventfd.Po ./$(DEPDIR)/execve-v.Po \
-       ./$(DEPDIR)/execve.Po ./$(DEPDIR)/execveat-v.Po \
-       ./$(DEPDIR)/execveat.Po ./$(DEPDIR)/faccessat.Po \
+       ./$(DEPDIR)/bpf-success-long-y.Po ./$(DEPDIR)/bpf-success-v.Po \
+       ./$(DEPDIR)/bpf-success.Po ./$(DEPDIR)/bpf-v.Po \
+       ./$(DEPDIR)/bpf.Po ./$(DEPDIR)/brk.Po ./$(DEPDIR)/btrfs.Po \
+       ./$(DEPDIR)/caps-abbrev.Po ./$(DEPDIR)/caps.Po \
+       ./$(DEPDIR)/check_sigblock.Po ./$(DEPDIR)/check_sigign.Po \
+       ./$(DEPDIR)/chmod.Po ./$(DEPDIR)/chown.Po \
+       ./$(DEPDIR)/chown32.Po ./$(DEPDIR)/chroot.Po \
+       ./$(DEPDIR)/clock_adjtime.Po ./$(DEPDIR)/clock_nanosleep.Po \
+       ./$(DEPDIR)/clock_xettime.Po ./$(DEPDIR)/clone-flags.Po \
+       ./$(DEPDIR)/clone3-Xabbrev.Po ./$(DEPDIR)/clone3-Xraw.Po \
+       ./$(DEPDIR)/clone3-Xverbose.Po \
+       ./$(DEPDIR)/clone3-success-Xabbrev.Po \
+       ./$(DEPDIR)/clone3-success-Xraw.Po \
+       ./$(DEPDIR)/clone3-success-Xverbose.Po \
+       ./$(DEPDIR)/clone3-success.Po ./$(DEPDIR)/clone3.Po \
+       ./$(DEPDIR)/clone_parent--quiet-exit.Po \
+       ./$(DEPDIR)/clone_parent-q.Po ./$(DEPDIR)/clone_parent-qq.Po \
+       ./$(DEPDIR)/clone_parent.Po \
+       ./$(DEPDIR)/clone_ptrace--quiet-attach.Po \
+       ./$(DEPDIR)/clone_ptrace--quiet-exit.Po \
+       ./$(DEPDIR)/clone_ptrace-q.Po ./$(DEPDIR)/clone_ptrace-qq.Po \
+       ./$(DEPDIR)/clone_ptrace.Po ./$(DEPDIR)/close_range-P.Po \
+       ./$(DEPDIR)/close_range-y.Po ./$(DEPDIR)/close_range-yy.Po \
+       ./$(DEPDIR)/close_range.Po ./$(DEPDIR)/copy_file_range.Po \
+       ./$(DEPDIR)/count-f.Po ./$(DEPDIR)/creat.Po \
+       ./$(DEPDIR)/delay.Po ./$(DEPDIR)/delete_module.Po \
+       ./$(DEPDIR)/dev--decode-fds-dev.Po \
+       ./$(DEPDIR)/dev--decode-fds-path.Po \
+       ./$(DEPDIR)/dev--decode-fds-socket.Po ./$(DEPDIR)/dev-yy.Po \
+       ./$(DEPDIR)/dup-P.Po ./$(DEPDIR)/dup-y.Po \
+       ./$(DEPDIR)/dup-yy.Po ./$(DEPDIR)/dup.Po ./$(DEPDIR)/dup2-P.Po \
+       ./$(DEPDIR)/dup2-y.Po ./$(DEPDIR)/dup2-yy.Po \
+       ./$(DEPDIR)/dup2.Po ./$(DEPDIR)/dup3-P.Po \
+       ./$(DEPDIR)/dup3-y.Po ./$(DEPDIR)/dup3-yy.Po \
+       ./$(DEPDIR)/dup3.Po ./$(DEPDIR)/epoll_create.Po \
+       ./$(DEPDIR)/epoll_create1.Po ./$(DEPDIR)/epoll_ctl.Po \
+       ./$(DEPDIR)/epoll_pwait.Po ./$(DEPDIR)/epoll_wait.Po \
+       ./$(DEPDIR)/erestartsys.Po ./$(DEPDIR)/eventfd.Po \
+       ./$(DEPDIR)/execve-v.Po ./$(DEPDIR)/execve.Po \
+       ./$(DEPDIR)/execveat-v.Po ./$(DEPDIR)/execveat.Po \
+       ./$(DEPDIR)/faccessat-P.Po ./$(DEPDIR)/faccessat-y.Po \
+       ./$(DEPDIR)/faccessat-yy.Po ./$(DEPDIR)/faccessat.Po \
+       ./$(DEPDIR)/faccessat2-P.Po ./$(DEPDIR)/faccessat2-y.Po \
+       ./$(DEPDIR)/faccessat2-yy.Po ./$(DEPDIR)/faccessat2.Po \
        ./$(DEPDIR)/fadvise64.Po ./$(DEPDIR)/fadvise64_64.Po \
        ./$(DEPDIR)/fallocate.Po ./$(DEPDIR)/fanotify_init.Po \
        ./$(DEPDIR)/fanotify_mark-Xabbrev.Po \
@@ -2931,12 +4049,19 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/fanotify_mark.Po ./$(DEPDIR)/fchdir.Po \
        ./$(DEPDIR)/fchmod.Po ./$(DEPDIR)/fchmodat.Po \
        ./$(DEPDIR)/fchown.Po ./$(DEPDIR)/fchown32.Po \
-       ./$(DEPDIR)/fchownat.Po ./$(DEPDIR)/fcntl.Po \
+       ./$(DEPDIR)/fchownat.Po \
+       ./$(DEPDIR)/fcntl--pidns-translation.Po ./$(DEPDIR)/fcntl.Po \
+       ./$(DEPDIR)/fcntl64--pidns-translation.Po \
        ./$(DEPDIR)/fcntl64.Po ./$(DEPDIR)/fdatasync.Po \
        ./$(DEPDIR)/fflush.Po ./$(DEPDIR)/file_handle.Po \
        ./$(DEPDIR)/file_ioctl.Po ./$(DEPDIR)/filter-unavailable.Po \
-       ./$(DEPDIR)/finit_module.Po ./$(DEPDIR)/flock.Po \
-       ./$(DEPDIR)/fork-f.Po ./$(DEPDIR)/fstat-Xabbrev.Po \
+       ./$(DEPDIR)/filter_seccomp-flag.Po \
+       ./$(DEPDIR)/filter_seccomp-perf.Po ./$(DEPDIR)/finit_module.Po \
+       ./$(DEPDIR)/flock.Po ./$(DEPDIR)/fork--pidns-translation.Po \
+       ./$(DEPDIR)/fork-f.Po ./$(DEPDIR)/fsconfig-P.Po \
+       ./$(DEPDIR)/fsconfig.Po ./$(DEPDIR)/fsmount.Po \
+       ./$(DEPDIR)/fsopen.Po ./$(DEPDIR)/fspick-P.Po \
+       ./$(DEPDIR)/fspick.Po ./$(DEPDIR)/fstat-Xabbrev.Po \
        ./$(DEPDIR)/fstat-Xraw.Po ./$(DEPDIR)/fstat-Xverbose.Po \
        ./$(DEPDIR)/fstat.Po ./$(DEPDIR)/fstat64-Xabbrev.Po \
        ./$(DEPDIR)/fstat64-Xraw.Po ./$(DEPDIR)/fstat64-Xverbose.Po \
@@ -2946,30 +4071,66 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/fsync.Po ./$(DEPDIR)/ftruncate.Po \
        ./$(DEPDIR)/ftruncate64-ftruncate64.Po ./$(DEPDIR)/futex.Po \
        ./$(DEPDIR)/futimesat.Po ./$(DEPDIR)/get_mempolicy.Po \
-       ./$(DEPDIR)/getcpu.Po ./$(DEPDIR)/getcwd.Po \
-       ./$(DEPDIR)/getdents.Po ./$(DEPDIR)/getdents64.Po \
-       ./$(DEPDIR)/getegid.Po ./$(DEPDIR)/getegid32.Po \
-       ./$(DEPDIR)/geteuid.Po ./$(DEPDIR)/geteuid32.Po \
-       ./$(DEPDIR)/getgid.Po ./$(DEPDIR)/getgid32.Po \
-       ./$(DEPDIR)/getgroups.Po ./$(DEPDIR)/getgroups32.Po \
-       ./$(DEPDIR)/getpeername.Po ./$(DEPDIR)/getpgrp.Po \
-       ./$(DEPDIR)/getpid.Po ./$(DEPDIR)/getppid.Po \
-       ./$(DEPDIR)/getrandom.Po ./$(DEPDIR)/getresgid.Po \
-       ./$(DEPDIR)/getresgid32.Po ./$(DEPDIR)/getresuid.Po \
-       ./$(DEPDIR)/getresuid32.Po ./$(DEPDIR)/getrlimit.Po \
-       ./$(DEPDIR)/getrusage.Po ./$(DEPDIR)/getsid.Po \
-       ./$(DEPDIR)/getsockname.Po ./$(DEPDIR)/gettid.Po \
+       ./$(DEPDIR)/get_process_reaper.Po ./$(DEPDIR)/getcpu.Po \
+       ./$(DEPDIR)/getcwd.Po ./$(DEPDIR)/getdents-v.Po \
+       ./$(DEPDIR)/getdents.Po ./$(DEPDIR)/getdents64-v.Po \
+       ./$(DEPDIR)/getdents64.Po ./$(DEPDIR)/getegid.Po \
+       ./$(DEPDIR)/getegid32.Po ./$(DEPDIR)/geteuid.Po \
+       ./$(DEPDIR)/geteuid32.Po ./$(DEPDIR)/getgid.Po \
+       ./$(DEPDIR)/getgid32.Po ./$(DEPDIR)/getgroups.Po \
+       ./$(DEPDIR)/getgroups32.Po ./$(DEPDIR)/getpeername.Po \
+       ./$(DEPDIR)/getpgrp--pidns-translation.Po \
+       ./$(DEPDIR)/getpgrp.Po \
+       ./$(DEPDIR)/getpid--pidns-translation.Po ./$(DEPDIR)/getpid.Po \
+       ./$(DEPDIR)/getppid.Po ./$(DEPDIR)/getrandom.Po \
+       ./$(DEPDIR)/getresgid.Po ./$(DEPDIR)/getresgid32.Po \
+       ./$(DEPDIR)/getresuid.Po ./$(DEPDIR)/getresuid32.Po \
+       ./$(DEPDIR)/getrlimit.Po ./$(DEPDIR)/getrusage.Po \
+       ./$(DEPDIR)/getsid--pidns-translation.Po ./$(DEPDIR)/getsid.Po \
+       ./$(DEPDIR)/getsockname.Po \
+       ./$(DEPDIR)/gettid--pidns-translation.Po ./$(DEPDIR)/gettid.Po \
        ./$(DEPDIR)/getuid.Po ./$(DEPDIR)/getuid32.Po \
-       ./$(DEPDIR)/getxxid.Po ./$(DEPDIR)/group_req.Po \
+       ./$(DEPDIR)/getxgid.Po ./$(DEPDIR)/getxpid.Po \
+       ./$(DEPDIR)/getxuid.Po ./$(DEPDIR)/group_req.Po \
        ./$(DEPDIR)/inet-cmsg.Po ./$(DEPDIR)/init_module.Po \
        ./$(DEPDIR)/inject-nf.Po ./$(DEPDIR)/inotify.Po \
-       ./$(DEPDIR)/inotify_init1.Po ./$(DEPDIR)/int_0x80.Po \
-       ./$(DEPDIR)/io_uring_enter.Po ./$(DEPDIR)/io_uring_register.Po \
-       ./$(DEPDIR)/io_uring_setup.Po ./$(DEPDIR)/ioctl.Po \
+       ./$(DEPDIR)/inotify_init-y.Po ./$(DEPDIR)/inotify_init.Po \
+       ./$(DEPDIR)/inotify_init1-y.Po ./$(DEPDIR)/inotify_init1.Po \
+       ./$(DEPDIR)/int_0x80.Po ./$(DEPDIR)/io_uring_enter.Po \
+       ./$(DEPDIR)/io_uring_register.Po ./$(DEPDIR)/io_uring_setup.Po \
+       ./$(DEPDIR)/ioctl.Po \
+       ./$(DEPDIR)/ioctl_block--pidns-translation.Po \
        ./$(DEPDIR)/ioctl_block.Po ./$(DEPDIR)/ioctl_dm-v.Po \
-       ./$(DEPDIR)/ioctl_dm.Po ./$(DEPDIR)/ioctl_evdev-success-v.Po \
+       ./$(DEPDIR)/ioctl_dm.Po ./$(DEPDIR)/ioctl_evdev-Xabbrev.Po \
+       ./$(DEPDIR)/ioctl_evdev-Xraw.Po \
+       ./$(DEPDIR)/ioctl_evdev-Xverbose.Po \
+       ./$(DEPDIR)/ioctl_evdev-success-Xabbrev.Po \
+       ./$(DEPDIR)/ioctl_evdev-success-Xraw.Po \
+       ./$(DEPDIR)/ioctl_evdev-success-Xverbose.Po \
+       ./$(DEPDIR)/ioctl_evdev-success-v-Xabbrev.Po \
+       ./$(DEPDIR)/ioctl_evdev-success-v-Xraw.Po \
+       ./$(DEPDIR)/ioctl_evdev-success-v-Xverbose.Po \
+       ./$(DEPDIR)/ioctl_evdev-success-v.Po \
        ./$(DEPDIR)/ioctl_evdev-success.Po \
+       ./$(DEPDIR)/ioctl_evdev-v-Xabbrev.Po \
+       ./$(DEPDIR)/ioctl_evdev-v-Xraw.Po \
+       ./$(DEPDIR)/ioctl_evdev-v-Xverbose.Po \
        ./$(DEPDIR)/ioctl_evdev-v.Po ./$(DEPDIR)/ioctl_evdev.Po \
+       ./$(DEPDIR)/ioctl_hdio-Xabbrev.Po \
+       ./$(DEPDIR)/ioctl_hdio-Xraw.Po \
+       ./$(DEPDIR)/ioctl_hdio-Xverbose.Po \
+       ./$(DEPDIR)/ioctl_hdio-success-Xabbrev.Po \
+       ./$(DEPDIR)/ioctl_hdio-success-Xraw.Po \
+       ./$(DEPDIR)/ioctl_hdio-success-Xverbose.Po \
+       ./$(DEPDIR)/ioctl_hdio-success-v-Xabbrev.Po \
+       ./$(DEPDIR)/ioctl_hdio-success-v-Xraw.Po \
+       ./$(DEPDIR)/ioctl_hdio-success-v-Xverbose.Po \
+       ./$(DEPDIR)/ioctl_hdio-success-v.Po \
+       ./$(DEPDIR)/ioctl_hdio-success.Po \
+       ./$(DEPDIR)/ioctl_hdio-v-Xabbrev.Po \
+       ./$(DEPDIR)/ioctl_hdio-v-Xraw.Po \
+       ./$(DEPDIR)/ioctl_hdio-v-Xverbose.Po \
+       ./$(DEPDIR)/ioctl_hdio-v.Po ./$(DEPDIR)/ioctl_hdio.Po \
        ./$(DEPDIR)/ioctl_inotify.Po ./$(DEPDIR)/ioctl_kvm_run-v.Po \
        ./$(DEPDIR)/ioctl_kvm_run.Po \
        ./$(DEPDIR)/ioctl_kvm_run_auxstr_vcpu.Po \
@@ -2981,21 +4142,38 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/ioctl_rtc-v.Po ./$(DEPDIR)/ioctl_rtc.Po \
        ./$(DEPDIR)/ioctl_scsi.Po ./$(DEPDIR)/ioctl_sg_io_v3.Po \
        ./$(DEPDIR)/ioctl_sg_io_v4.Po \
-       ./$(DEPDIR)/ioctl_sock_gifconf.Po ./$(DEPDIR)/ioctl_uffdio.Po \
-       ./$(DEPDIR)/ioctl_v4l2.Po ./$(DEPDIR)/ioperm.Po \
-       ./$(DEPDIR)/iopl.Po ./$(DEPDIR)/ioprio-Xabbrev.Po \
-       ./$(DEPDIR)/ioprio-Xraw.Po ./$(DEPDIR)/ioprio-Xverbose.Po \
-       ./$(DEPDIR)/ioprio.Po ./$(DEPDIR)/ip_mreq.Po \
-       ./$(DEPDIR)/ipc.Po ./$(DEPDIR)/ipc_msg-Xabbrev.Po \
-       ./$(DEPDIR)/ipc_msg-Xraw.Po ./$(DEPDIR)/ipc_msg-Xverbose.Po \
-       ./$(DEPDIR)/ipc_msg.Po ./$(DEPDIR)/ipc_msgbuf-Xabbrev.Po \
+       ./$(DEPDIR)/ioctl_sock_gifconf.Po ./$(DEPDIR)/ioctl_tee.Po \
+       ./$(DEPDIR)/ioctl_uffdio.Po ./$(DEPDIR)/ioctl_v4l2-Xabbrev.Po \
+       ./$(DEPDIR)/ioctl_v4l2-Xraw.Po \
+       ./$(DEPDIR)/ioctl_v4l2-Xverbose.Po \
+       ./$(DEPDIR)/ioctl_v4l2-success-Xabbrev.Po \
+       ./$(DEPDIR)/ioctl_v4l2-success-Xraw.Po \
+       ./$(DEPDIR)/ioctl_v4l2-success-Xverbose.Po \
+       ./$(DEPDIR)/ioctl_v4l2-success-v-Xabbrev.Po \
+       ./$(DEPDIR)/ioctl_v4l2-success-v-Xraw.Po \
+       ./$(DEPDIR)/ioctl_v4l2-success-v-Xverbose.Po \
+       ./$(DEPDIR)/ioctl_v4l2-success-v.Po \
+       ./$(DEPDIR)/ioctl_v4l2-success.Po \
+       ./$(DEPDIR)/ioctl_v4l2-v-Xabbrev.Po \
+       ./$(DEPDIR)/ioctl_v4l2-v-Xraw.Po \
+       ./$(DEPDIR)/ioctl_v4l2-v-Xverbose.Po \
+       ./$(DEPDIR)/ioctl_v4l2-v.Po ./$(DEPDIR)/ioctl_v4l2.Po \
+       ./$(DEPDIR)/ioctl_watchdog.Po ./$(DEPDIR)/ioperm.Po \
+       ./$(DEPDIR)/iopl.Po ./$(DEPDIR)/ioprio--pidns-translation.Po \
+       ./$(DEPDIR)/ioprio-Xabbrev.Po ./$(DEPDIR)/ioprio-Xraw.Po \
+       ./$(DEPDIR)/ioprio-Xverbose.Po ./$(DEPDIR)/ioprio.Po \
+       ./$(DEPDIR)/ip_mreq.Po ./$(DEPDIR)/ipc.Po \
+       ./$(DEPDIR)/ipc_msg-Xabbrev.Po ./$(DEPDIR)/ipc_msg-Xraw.Po \
+       ./$(DEPDIR)/ipc_msg-Xverbose.Po ./$(DEPDIR)/ipc_msg.Po \
+       ./$(DEPDIR)/ipc_msgbuf-Xabbrev.Po \
        ./$(DEPDIR)/ipc_msgbuf-Xraw.Po \
        ./$(DEPDIR)/ipc_msgbuf-Xverbose.Po ./$(DEPDIR)/ipc_msgbuf.Po \
        ./$(DEPDIR)/ipc_sem-Xabbrev.Po ./$(DEPDIR)/ipc_sem-Xraw.Po \
        ./$(DEPDIR)/ipc_sem-Xverbose.Po ./$(DEPDIR)/ipc_sem.Po \
        ./$(DEPDIR)/ipc_shm-Xabbrev.Po ./$(DEPDIR)/ipc_shm-Xraw.Po \
        ./$(DEPDIR)/ipc_shm-Xverbose.Po ./$(DEPDIR)/ipc_shm.Po \
-       ./$(DEPDIR)/is_linux_mips_n64.Po ./$(DEPDIR)/kcmp-y.Po \
+       ./$(DEPDIR)/is_linux_mips_n64.Po \
+       ./$(DEPDIR)/kcmp-y--pidns-translation.Po ./$(DEPDIR)/kcmp-y.Po \
        ./$(DEPDIR)/kcmp.Po ./$(DEPDIR)/kern_features.Po \
        ./$(DEPDIR)/kernel_version-Xabbrev.Po \
        ./$(DEPDIR)/kernel_version-Xraw.Po \
@@ -3003,10 +4181,12 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/kernel_version.Po ./$(DEPDIR)/kexec_file_load.Po \
        ./$(DEPDIR)/kexec_load.Po ./$(DEPDIR)/keyctl-Xabbrev.Po \
        ./$(DEPDIR)/keyctl-Xraw.Po ./$(DEPDIR)/keyctl-Xverbose.Po \
-       ./$(DEPDIR)/keyctl.Po ./$(DEPDIR)/kill.Po \
-       ./$(DEPDIR)/kill_child.Po ./$(DEPDIR)/ksysent.Po \
-       ./$(DEPDIR)/lchown.Po ./$(DEPDIR)/lchown32.Po \
+       ./$(DEPDIR)/keyctl.Po ./$(DEPDIR)/kill--pidns-translation.Po \
+       ./$(DEPDIR)/kill.Po ./$(DEPDIR)/kill_child.Po \
+       ./$(DEPDIR)/ksysent.Po ./$(DEPDIR)/lchown.Po \
+       ./$(DEPDIR)/lchown32.Po \
        ./$(DEPDIR)/libtests_a-create_nl_socket.Po \
+       ./$(DEPDIR)/libtests_a-create_tmpfile.Po \
        ./$(DEPDIR)/libtests_a-errno2name.Po \
        ./$(DEPDIR)/libtests_a-error_msg.Po \
        ./$(DEPDIR)/libtests_a-fill_memory.Po \
@@ -3018,37 +4198,48 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/libtests_a-inode_of_sockfd.Po \
        ./$(DEPDIR)/libtests_a-libmmsg.Po \
        ./$(DEPDIR)/libtests_a-libsocketcall.Po \
+       ./$(DEPDIR)/libtests_a-lock_file.Po \
        ./$(DEPDIR)/libtests_a-overflowuid.Po \
+       ./$(DEPDIR)/libtests_a-pidns.Po \
        ./$(DEPDIR)/libtests_a-pipe_maxfd.Po \
        ./$(DEPDIR)/libtests_a-print_quoted_string.Po \
        ./$(DEPDIR)/libtests_a-print_time.Po \
        ./$(DEPDIR)/libtests_a-printflags.Po \
-       ./$(DEPDIR)/libtests_a-printxval.Po \
+       ./$(DEPDIR)/libtests_a-printxval-Xabbrev.Po \
+       ./$(DEPDIR)/libtests_a-printxval-Xraw.Po \
+       ./$(DEPDIR)/libtests_a-printxval-Xverbose.Po \
        ./$(DEPDIR)/libtests_a-signal2name.Po \
        ./$(DEPDIR)/libtests_a-skip_unavailable.Po \
        ./$(DEPDIR)/libtests_a-sprintrc.Po \
+       ./$(DEPDIR)/libtests_a-status.Po \
        ./$(DEPDIR)/libtests_a-tail_alloc.Po \
        ./$(DEPDIR)/libtests_a-test_printpath.Po \
        ./$(DEPDIR)/libtests_a-test_printstrn.Po \
        ./$(DEPDIR)/libtests_a-test_ucopy.Po \
-       ./$(DEPDIR)/libtests_a-tprintf.Po ./$(DEPDIR)/link.Po \
-       ./$(DEPDIR)/linkat.Po ./$(DEPDIR)/list_sigaction_signum.Po \
-       ./$(DEPDIR)/llseek.Po ./$(DEPDIR)/localtime.Po \
-       ./$(DEPDIR)/lookup_dcookie.Po ./$(DEPDIR)/looping_threads.Po \
-       ./$(DEPDIR)/lseek.Po ./$(DEPDIR)/lstat.Po \
-       ./$(DEPDIR)/lstat64-lstat64.Po ./$(DEPDIR)/madvise.Po \
-       ./$(DEPDIR)/mbind.Po ./$(DEPDIR)/membarrier.Po \
-       ./$(DEPDIR)/memfd_create-Xabbrev.Po \
+       ./$(DEPDIR)/libtests_a-tprintf.Po \
+       ./$(DEPDIR)/libtests_a-xmalloc_for_tests.Po \
+       ./$(DEPDIR)/link.Po ./$(DEPDIR)/linkat.Po \
+       ./$(DEPDIR)/list_sigaction_signum.Po ./$(DEPDIR)/llseek.Po \
+       ./$(DEPDIR)/localtime.Po ./$(DEPDIR)/lookup_dcookie.Po \
+       ./$(DEPDIR)/looping_threads.Po ./$(DEPDIR)/lseek.Po \
+       ./$(DEPDIR)/lstat.Po ./$(DEPDIR)/lstat64-lstat64.Po \
+       ./$(DEPDIR)/madvise.Po \
+       ./$(DEPDIR)/maybe_switch_current_tcp--quiet-thread-execve.Po \
+       ./$(DEPDIR)/maybe_switch_current_tcp.Po \
+       ./$(DEPDIR)/mbind-Xabbrev.Po ./$(DEPDIR)/mbind-Xraw.Po \
+       ./$(DEPDIR)/mbind-Xverbose.Po ./$(DEPDIR)/mbind.Po \
+       ./$(DEPDIR)/membarrier.Po ./$(DEPDIR)/memfd_create-Xabbrev.Po \
        ./$(DEPDIR)/memfd_create-Xraw.Po \
        ./$(DEPDIR)/memfd_create-Xverbose.Po \
-       ./$(DEPDIR)/memfd_create.Po ./$(DEPDIR)/migrate_pages.Po \
-       ./$(DEPDIR)/mincore.Po ./$(DEPDIR)/mkdir.Po \
-       ./$(DEPDIR)/mkdirat.Po ./$(DEPDIR)/mknod.Po \
-       ./$(DEPDIR)/mknodat.Po ./$(DEPDIR)/mlock.Po \
-       ./$(DEPDIR)/mlock2.Po ./$(DEPDIR)/mlockall.Po \
-       ./$(DEPDIR)/mmap-Xabbrev.Po ./$(DEPDIR)/mmap-Xraw.Po \
-       ./$(DEPDIR)/mmap-Xverbose.Po ./$(DEPDIR)/mmap.Po \
-       ./$(DEPDIR)/mmap64-mmap64.Po \
+       ./$(DEPDIR)/memfd_create.Po \
+       ./$(DEPDIR)/migrate_pages--pidns-translation.Po \
+       ./$(DEPDIR)/migrate_pages.Po ./$(DEPDIR)/mincore.Po \
+       ./$(DEPDIR)/mkdir.Po ./$(DEPDIR)/mkdirat.Po \
+       ./$(DEPDIR)/mknod.Po ./$(DEPDIR)/mknodat.Po \
+       ./$(DEPDIR)/mlock.Po ./$(DEPDIR)/mlock2.Po \
+       ./$(DEPDIR)/mlockall.Po ./$(DEPDIR)/mmap-Xabbrev.Po \
+       ./$(DEPDIR)/mmap-Xraw.Po ./$(DEPDIR)/mmap-Xverbose.Po \
+       ./$(DEPDIR)/mmap.Po ./$(DEPDIR)/mmap64-mmap64.Po \
        ./$(DEPDIR)/mmap64_Xabbrev-mmap64-Xabbrev.Po \
        ./$(DEPDIR)/mmap64_Xraw-mmap64-Xraw.Po \
        ./$(DEPDIR)/mmap64_Xverbose-mmap64-Xverbose.Po \
@@ -3056,24 +4247,34 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/mmsg_name-v.Po ./$(DEPDIR)/mmsg_name.Po \
        ./$(DEPDIR)/modify_ldt.Po ./$(DEPDIR)/mount-Xabbrev.Po \
        ./$(DEPDIR)/mount-Xraw.Po ./$(DEPDIR)/mount-Xverbose.Po \
-       ./$(DEPDIR)/mount.Po ./$(DEPDIR)/move_pages-Xabbrev.Po \
+       ./$(DEPDIR)/mount.Po ./$(DEPDIR)/move_mount-P.Po \
+       ./$(DEPDIR)/move_mount.Po \
+       ./$(DEPDIR)/move_pages--pidns-translation.Po \
+       ./$(DEPDIR)/move_pages-Xabbrev.Po \
        ./$(DEPDIR)/move_pages-Xraw.Po \
        ./$(DEPDIR)/move_pages-Xverbose.Po ./$(DEPDIR)/move_pages.Po \
        ./$(DEPDIR)/mq.Po ./$(DEPDIR)/mq_sendrecv-read.Po \
        ./$(DEPDIR)/mq_sendrecv-write.Po ./$(DEPDIR)/mq_sendrecv.Po \
        ./$(DEPDIR)/msg_control-v.Po ./$(DEPDIR)/msg_control.Po \
        ./$(DEPDIR)/msg_name.Po ./$(DEPDIR)/munlockall.Po \
-       ./$(DEPDIR)/nanosleep.Po ./$(DEPDIR)/net-accept-connect.Po \
+       ./$(DEPDIR)/nanosleep.Po \
+       ./$(DEPDIR)/net--decode-fds-dev-netlink.Po \
+       ./$(DEPDIR)/net--decode-fds-none-netlink.Po \
+       ./$(DEPDIR)/net--decode-fds-path-netlink.Po \
+       ./$(DEPDIR)/net--decode-fds-socket-netlink.Po \
+       ./$(DEPDIR)/net-accept-connect.Po \
        ./$(DEPDIR)/net-icmp_filter.Po \
        ./$(DEPDIR)/net-packet_mreq-Xabbrev.Po \
        ./$(DEPDIR)/net-packet_mreq-Xraw.Po \
        ./$(DEPDIR)/net-packet_mreq-Xverbose.Po \
-       ./$(DEPDIR)/net-packet_mreq.Po ./$(DEPDIR)/net-sockaddr.Po \
-       ./$(DEPDIR)/net-tpacket_req.Po \
+       ./$(DEPDIR)/net-packet_mreq.Po \
+       ./$(DEPDIR)/net-sockaddr--pidns-translation.Po \
+       ./$(DEPDIR)/net-sockaddr.Po ./$(DEPDIR)/net-tpacket_req.Po \
        ./$(DEPDIR)/net-tpacket_stats-success.Po \
        ./$(DEPDIR)/net-tpacket_stats.Po ./$(DEPDIR)/net-y-unix.Po \
        ./$(DEPDIR)/net-yy-inet.Po ./$(DEPDIR)/net-yy-inet6.Po \
        ./$(DEPDIR)/net-yy-netlink.Po ./$(DEPDIR)/net-yy-unix.Po \
+       ./$(DEPDIR)/netlink_audit--pidns-translation.Po \
        ./$(DEPDIR)/netlink_audit.Po ./$(DEPDIR)/netlink_crypto.Po \
        ./$(DEPDIR)/netlink_generic.Po \
        ./$(DEPDIR)/netlink_inet_diag.Po \
@@ -3104,7 +4305,9 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/nlattr_ifla_af_spec.Po \
        ./$(DEPDIR)/nlattr_ifla_brport.Po \
        ./$(DEPDIR)/nlattr_ifla_linkinfo.Po \
-       ./$(DEPDIR)/nlattr_ifla_port.Po ./$(DEPDIR)/nlattr_ifla_xdp.Po \
+       ./$(DEPDIR)/nlattr_ifla_port.Po \
+       ./$(DEPDIR)/nlattr_ifla_xdp-y.Po \
+       ./$(DEPDIR)/nlattr_ifla_xdp.Po \
        ./$(DEPDIR)/nlattr_inet_diag_msg.Po \
        ./$(DEPDIR)/nlattr_inet_diag_req_compat.Po \
        ./$(DEPDIR)/nlattr_inet_diag_req_v2.Po \
@@ -3128,7 +4331,14 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/oldselect-P.Po ./$(DEPDIR)/oldselect-efault-P.Po \
        ./$(DEPDIR)/oldselect-efault.Po ./$(DEPDIR)/oldselect.Po \
        ./$(DEPDIR)/oldstat.Po ./$(DEPDIR)/open.Po \
-       ./$(DEPDIR)/openat.Po ./$(DEPDIR)/orphaned_process_group.Po \
+       ./$(DEPDIR)/open_tree-P.Po ./$(DEPDIR)/open_tree.Po \
+       ./$(DEPDIR)/openat.Po ./$(DEPDIR)/openat2-Xabbrev.Po \
+       ./$(DEPDIR)/openat2-Xraw.Po ./$(DEPDIR)/openat2-Xverbose.Po \
+       ./$(DEPDIR)/openat2-v-y-Xabbrev.Po \
+       ./$(DEPDIR)/openat2-v-y-Xraw.Po \
+       ./$(DEPDIR)/openat2-v-y-Xverbose.Po ./$(DEPDIR)/openat2-v-y.Po \
+       ./$(DEPDIR)/openat2-v.Po ./$(DEPDIR)/openat2-y.Po \
+       ./$(DEPDIR)/openat2.Po ./$(DEPDIR)/orphaned_process_group.Po \
        ./$(DEPDIR)/osf_utimes.Po ./$(DEPDIR)/pause.Po \
        ./$(DEPDIR)/pc.Po ./$(DEPDIR)/perf_event_open.Po \
        ./$(DEPDIR)/perf_event_open_nonverbose.Po \
@@ -3136,14 +4346,24 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/personality-Xabbrev.Po \
        ./$(DEPDIR)/personality-Xraw.Po \
        ./$(DEPDIR)/personality-Xverbose.Po ./$(DEPDIR)/personality.Po \
-       ./$(DEPDIR)/pidfd_send_signal.Po ./$(DEPDIR)/pipe.Po \
-       ./$(DEPDIR)/pipe2.Po ./$(DEPDIR)/pkey_alloc.Po \
-       ./$(DEPDIR)/pkey_free.Po ./$(DEPDIR)/pkey_mprotect.Po \
-       ./$(DEPDIR)/poll-P.Po ./$(DEPDIR)/poll.Po \
-       ./$(DEPDIR)/ppoll-P.Po ./$(DEPDIR)/ppoll-v.Po \
-       ./$(DEPDIR)/ppoll.Po ./$(DEPDIR)/prctl-arg2-intptr.Po \
-       ./$(DEPDIR)/prctl-dumpable.Po ./$(DEPDIR)/prctl-name.Po \
-       ./$(DEPDIR)/prctl-no-args.Po ./$(DEPDIR)/prctl-pdeathsig.Po \
+       ./$(DEPDIR)/pidfd_getfd-y.Po ./$(DEPDIR)/pidfd_getfd-yy.Po \
+       ./$(DEPDIR)/pidfd_getfd.Po \
+       ./$(DEPDIR)/pidfd_open--decode-fd-path.Po \
+       ./$(DEPDIR)/pidfd_open--decode-fd-pidfd.Po \
+       ./$(DEPDIR)/pidfd_open--decode-fd-socket.Po \
+       ./$(DEPDIR)/pidfd_open--pidns-translation.Po \
+       ./$(DEPDIR)/pidfd_open-P.Po ./$(DEPDIR)/pidfd_open-y.Po \
+       ./$(DEPDIR)/pidfd_open-yy.Po ./$(DEPDIR)/pidfd_open.Po \
+       ./$(DEPDIR)/pidfd_send_signal--pidns-translation.Po \
+       ./$(DEPDIR)/pidfd_send_signal.Po ./$(DEPDIR)/pidns-cache.Po \
+       ./$(DEPDIR)/pipe.Po ./$(DEPDIR)/pipe2.Po \
+       ./$(DEPDIR)/pkey_alloc.Po ./$(DEPDIR)/pkey_free.Po \
+       ./$(DEPDIR)/pkey_mprotect.Po ./$(DEPDIR)/poll-P.Po \
+       ./$(DEPDIR)/poll.Po ./$(DEPDIR)/ppoll-P.Po \
+       ./$(DEPDIR)/ppoll-v.Po ./$(DEPDIR)/ppoll.Po \
+       ./$(DEPDIR)/prctl-arg2-intptr.Po ./$(DEPDIR)/prctl-dumpable.Po \
+       ./$(DEPDIR)/prctl-name.Po ./$(DEPDIR)/prctl-no-args.Po \
+       ./$(DEPDIR)/prctl-pdeathsig.Po \
        ./$(DEPDIR)/prctl-seccomp-filter-v.Po \
        ./$(DEPDIR)/prctl-seccomp-strict.Po \
        ./$(DEPDIR)/prctl-securebits.Po \
@@ -3152,7 +4372,7 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/pread64_pwrite64-pread64-pwrite64.Po \
        ./$(DEPDIR)/preadv-preadv.Po ./$(DEPDIR)/preadv2-pwritev2.Po \
        ./$(DEPDIR)/preadv_pwritev-preadv-pwritev.Po \
-       ./$(DEPDIR)/print_maxfd.Po \
+       ./$(DEPDIR)/print_maxfd.Po ./$(DEPDIR)/print_ppid_tracerpid.Po \
        ./$(DEPDIR)/printpath-umovestr-peekdata.Po \
        ./$(DEPDIR)/printpath-umovestr-undumpable.Po \
        ./$(DEPDIR)/printpath-umovestr.Po \
@@ -3161,8 +4381,12 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/printsignal-Xverbose.Po ./$(DEPDIR)/printstr.Po \
        ./$(DEPDIR)/printstrn-umoven-peekdata.Po \
        ./$(DEPDIR)/printstrn-umoven-undumpable.Po \
-       ./$(DEPDIR)/printstrn-umoven.Po ./$(DEPDIR)/prlimit64.Po \
+       ./$(DEPDIR)/printstrn-umoven.Po \
+       ./$(DEPDIR)/prlimit64--pidns-translation.Po \
+       ./$(DEPDIR)/prlimit64.Po \
+       ./$(DEPDIR)/process_vm_readv--pidns-translation.Po \
        ./$(DEPDIR)/process_vm_readv.Po \
+       ./$(DEPDIR)/process_vm_writev--pidns-translation.Po \
        ./$(DEPDIR)/process_vm_writev.Po ./$(DEPDIR)/pselect6.Po \
        ./$(DEPDIR)/ptrace.Po ./$(DEPDIR)/ptrace_syscall_info.Po \
        ./$(DEPDIR)/pwritev-pwritev.Po ./$(DEPDIR)/qual_fault.Po \
@@ -3180,8 +4404,10 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/readahead.Po ./$(DEPDIR)/readdir.Po \
        ./$(DEPDIR)/readlink.Po ./$(DEPDIR)/readlinkat.Po \
        ./$(DEPDIR)/readv.Po ./$(DEPDIR)/reboot.Po \
-       ./$(DEPDIR)/recvfrom.Po ./$(DEPDIR)/recvmmsg-timeout.Po \
-       ./$(DEPDIR)/recvmsg.Po ./$(DEPDIR)/redirect-fds.Po \
+       ./$(DEPDIR)/recv-MSG_TRUNC.Po \
+       ./$(DEPDIR)/recvfrom-MSG_TRUNC.Po ./$(DEPDIR)/recvfrom.Po \
+       ./$(DEPDIR)/recvmmsg-timeout.Po ./$(DEPDIR)/recvmsg.Po \
+       ./$(DEPDIR)/redirect-fds.Po \
        ./$(DEPDIR)/remap_file_pages-Xabbrev.Po \
        ./$(DEPDIR)/remap_file_pages-Xraw.Po \
        ./$(DEPDIR)/remap_file_pages-Xverbose.Po \
@@ -3190,9 +4416,11 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/request_key.Po ./$(DEPDIR)/restart_syscall.Po \
        ./$(DEPDIR)/riscv_flush_icache.Po ./$(DEPDIR)/rmdir.Po \
        ./$(DEPDIR)/rt_sigaction.Po ./$(DEPDIR)/rt_sigpending.Po \
-       ./$(DEPDIR)/rt_sigprocmask.Po ./$(DEPDIR)/rt_sigqueueinfo.Po \
-       ./$(DEPDIR)/rt_sigreturn.Po ./$(DEPDIR)/rt_sigsuspend.Po \
-       ./$(DEPDIR)/rt_sigtimedwait.Po \
+       ./$(DEPDIR)/rt_sigprocmask.Po \
+       ./$(DEPDIR)/rt_sigqueueinfo--pidns-translation.Po \
+       ./$(DEPDIR)/rt_sigqueueinfo.Po ./$(DEPDIR)/rt_sigreturn.Po \
+       ./$(DEPDIR)/rt_sigsuspend.Po ./$(DEPDIR)/rt_sigtimedwait.Po \
+       ./$(DEPDIR)/rt_tgsigqueueinfo--pidns-translation.Po \
        ./$(DEPDIR)/rt_tgsigqueueinfo.Po \
        ./$(DEPDIR)/run_expect_termsig.Po \
        ./$(DEPDIR)/s390_guarded_storage-v.Po \
@@ -3202,22 +4430,31 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/s390_sthyi.Po \
        ./$(DEPDIR)/sched_get_priority_mxx.Po \
        ./$(DEPDIR)/sched_rr_get_interval.Po \
-       ./$(DEPDIR)/sched_xetaffinity.Po ./$(DEPDIR)/sched_xetattr.Po \
+       ./$(DEPDIR)/sched_xetaffinity--pidns-translation.Po \
+       ./$(DEPDIR)/sched_xetaffinity.Po \
+       ./$(DEPDIR)/sched_xetattr--pidns-translation.Po \
+       ./$(DEPDIR)/sched_xetattr.Po \
+       ./$(DEPDIR)/sched_xetparam--pidns-translation.Po \
        ./$(DEPDIR)/sched_xetparam.Po \
+       ./$(DEPDIR)/sched_xetscheduler--pidns-translation.Po \
        ./$(DEPDIR)/sched_xetscheduler.Po ./$(DEPDIR)/sched_yield.Po \
        ./$(DEPDIR)/scm_rights.Po ./$(DEPDIR)/seccomp-filter-v.Po \
        ./$(DEPDIR)/seccomp-filter.Po ./$(DEPDIR)/seccomp-strict.Po \
        ./$(DEPDIR)/seccomp_get_action_avail.Po \
        ./$(DEPDIR)/select-P.Po ./$(DEPDIR)/select.Po \
-       ./$(DEPDIR)/semop.Po ./$(DEPDIR)/sendfile.Po \
-       ./$(DEPDIR)/sendfile64.Po ./$(DEPDIR)/set_mempolicy.Po \
-       ./$(DEPDIR)/set_ptracer_any.Po ./$(DEPDIR)/set_sigblock.Po \
-       ./$(DEPDIR)/set_sigign.Po ./$(DEPDIR)/setdomainname.Po \
-       ./$(DEPDIR)/setfsgid.Po ./$(DEPDIR)/setfsgid32.Po \
-       ./$(DEPDIR)/setfsuid.Po ./$(DEPDIR)/setfsuid32.Po \
-       ./$(DEPDIR)/setgid.Po ./$(DEPDIR)/setgid32.Po \
-       ./$(DEPDIR)/setgroups.Po ./$(DEPDIR)/setgroups32.Po \
-       ./$(DEPDIR)/sethostname.Po ./$(DEPDIR)/setns.Po \
+       ./$(DEPDIR)/semop-indirect.Po ./$(DEPDIR)/semop.Po \
+       ./$(DEPDIR)/semtimedop.Po ./$(DEPDIR)/sendfile.Po \
+       ./$(DEPDIR)/sendfile64.Po ./$(DEPDIR)/set_mempolicy-Xabbrev.Po \
+       ./$(DEPDIR)/set_mempolicy-Xraw.Po \
+       ./$(DEPDIR)/set_mempolicy-Xverbose.Po \
+       ./$(DEPDIR)/set_mempolicy.Po ./$(DEPDIR)/set_ptracer_any.Po \
+       ./$(DEPDIR)/set_sigblock.Po ./$(DEPDIR)/set_sigign.Po \
+       ./$(DEPDIR)/setdomainname.Po ./$(DEPDIR)/setfsgid.Po \
+       ./$(DEPDIR)/setfsgid32.Po ./$(DEPDIR)/setfsuid.Po \
+       ./$(DEPDIR)/setfsuid32.Po ./$(DEPDIR)/setgid.Po \
+       ./$(DEPDIR)/setgid32.Po ./$(DEPDIR)/setgroups.Po \
+       ./$(DEPDIR)/setgroups32.Po ./$(DEPDIR)/sethostname.Po \
+       ./$(DEPDIR)/setns.Po ./$(DEPDIR)/setpgrp-exec.Po \
        ./$(DEPDIR)/setregid.Po ./$(DEPDIR)/setregid32.Po \
        ./$(DEPDIR)/setresgid.Po ./$(DEPDIR)/setresgid32.Po \
        ./$(DEPDIR)/setresuid.Po ./$(DEPDIR)/setresuid32.Po \
@@ -3228,11 +4465,14 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/shmxt.Po ./$(DEPDIR)/shutdown.Po \
        ./$(DEPDIR)/sigaction.Po ./$(DEPDIR)/sigaltstack.Po \
        ./$(DEPDIR)/siginfo.Po ./$(DEPDIR)/signal.Po \
+       ./$(DEPDIR)/signal_receive--pidns-translation.Po \
        ./$(DEPDIR)/signal_receive.Po ./$(DEPDIR)/signalfd4.Po \
        ./$(DEPDIR)/sigpending.Po ./$(DEPDIR)/sigprocmask.Po \
        ./$(DEPDIR)/sigreturn.Po ./$(DEPDIR)/sigsuspend.Po \
        ./$(DEPDIR)/sleep.Po ./$(DEPDIR)/so_error.Po \
-       ./$(DEPDIR)/so_linger.Po ./$(DEPDIR)/so_peercred-Xabbrev.Po \
+       ./$(DEPDIR)/so_linger.Po \
+       ./$(DEPDIR)/so_peercred--pidns-translation.Po \
+       ./$(DEPDIR)/so_peercred-Xabbrev.Po \
        ./$(DEPDIR)/so_peercred-Xraw.Po \
        ./$(DEPDIR)/so_peercred-Xverbose.Po ./$(DEPDIR)/so_peercred.Po \
        ./$(DEPDIR)/sock_filter-v-Xabbrev.Po \
@@ -3246,6 +4486,7 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/sockopt-timestamp.Po ./$(DEPDIR)/splice.Po \
        ./$(DEPDIR)/stack-fcall-0.Po ./$(DEPDIR)/stack-fcall-1.Po \
        ./$(DEPDIR)/stack-fcall-2.Po ./$(DEPDIR)/stack-fcall-3.Po \
+       ./$(DEPDIR)/stack-fcall-attach.Po \
        ./$(DEPDIR)/stack-fcall-mangled-0.Po \
        ./$(DEPDIR)/stack-fcall-mangled-1.Po \
        ./$(DEPDIR)/stack-fcall-mangled-2.Po \
@@ -3253,22 +4494,45 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/stack-fcall-mangled.Po ./$(DEPDIR)/stack-fcall.Po \
        ./$(DEPDIR)/stat.Po ./$(DEPDIR)/stat64-stat64.Po \
        ./$(DEPDIR)/statfs-statfs.Po ./$(DEPDIR)/statfs64.Po \
-       ./$(DEPDIR)/statx.Po ./$(DEPDIR)/swap.Po \
-       ./$(DEPDIR)/sxetmask.Po ./$(DEPDIR)/symlink.Po \
-       ./$(DEPDIR)/symlinkat.Po ./$(DEPDIR)/sync.Po \
-       ./$(DEPDIR)/sync_file_range.Po ./$(DEPDIR)/sync_file_range2.Po \
-       ./$(DEPDIR)/sysinfo.Po ./$(DEPDIR)/syslog.Po \
-       ./$(DEPDIR)/tee.Po ./$(DEPDIR)/threads-execve.Po \
-       ./$(DEPDIR)/time.Po ./$(DEPDIR)/timer_create.Po \
-       ./$(DEPDIR)/timer_xettime.Po ./$(DEPDIR)/timerfd_xettime.Po \
-       ./$(DEPDIR)/times-fail.Po ./$(DEPDIR)/times.Po \
-       ./$(DEPDIR)/truncate.Po ./$(DEPDIR)/truncate64-truncate64.Po \
-       ./$(DEPDIR)/ugetrlimit.Po ./$(DEPDIR)/uio-uio.Po \
-       ./$(DEPDIR)/umask.Po ./$(DEPDIR)/umount.Po \
-       ./$(DEPDIR)/umount2.Po ./$(DEPDIR)/umoven-illptr.Po \
-       ./$(DEPDIR)/umovestr-illptr.Po ./$(DEPDIR)/umovestr.Po \
-       ./$(DEPDIR)/umovestr2.Po ./$(DEPDIR)/umovestr3.Po \
-       ./$(DEPDIR)/uname.Po ./$(DEPDIR)/unblock_reset_raise.Po \
+       ./$(DEPDIR)/status-all.Po ./$(DEPDIR)/status-failed-long.Po \
+       ./$(DEPDIR)/status-failed-status.Po \
+       ./$(DEPDIR)/status-failed.Po ./$(DEPDIR)/status-none-f.Po \
+       ./$(DEPDIR)/status-none-threads.Po ./$(DEPDIR)/status-none.Po \
+       ./$(DEPDIR)/status-successful-long.Po \
+       ./$(DEPDIR)/status-successful-status.Po \
+       ./$(DEPDIR)/status-successful.Po \
+       ./$(DEPDIR)/status-unfinished-threads.Po \
+       ./$(DEPDIR)/status-unfinished.Po ./$(DEPDIR)/statx.Po \
+       ./$(DEPDIR)/strace--strings-in-hex-all.Po \
+       ./$(DEPDIR)/strace--strings-in-hex-non-ascii.Po \
+       ./$(DEPDIR)/strace--strings-in-hex.Po ./$(DEPDIR)/strace-n.Po \
+       ./$(DEPDIR)/strace-x.Po ./$(DEPDIR)/strace-xx.Po \
+       ./$(DEPDIR)/swap.Po ./$(DEPDIR)/sxetmask.Po \
+       ./$(DEPDIR)/symlink.Po ./$(DEPDIR)/symlinkat.Po \
+       ./$(DEPDIR)/sync.Po ./$(DEPDIR)/sync_file_range.Po \
+       ./$(DEPDIR)/sync_file_range2.Po ./$(DEPDIR)/sysinfo.Po \
+       ./$(DEPDIR)/syslog-success.Po ./$(DEPDIR)/syslog.Po \
+       ./$(DEPDIR)/tee.Po ./$(DEPDIR)/tgkill--pidns-translation.Po \
+       ./$(DEPDIR)/tgkill.Po \
+       ./$(DEPDIR)/threads-execve--quiet-thread-execve.Po \
+       ./$(DEPDIR)/threads-execve-q.Po \
+       ./$(DEPDIR)/threads-execve-qq.Po \
+       ./$(DEPDIR)/threads-execve-qqq.Po \
+       ./$(DEPDIR)/threads-execve.Po ./$(DEPDIR)/time.Po \
+       ./$(DEPDIR)/timer_create.Po ./$(DEPDIR)/timer_xettime.Po \
+       ./$(DEPDIR)/timerfd_xettime.Po ./$(DEPDIR)/times-fail.Po \
+       ./$(DEPDIR)/times.Po ./$(DEPDIR)/tkill--pidns-translation.Po \
+       ./$(DEPDIR)/tkill.Po ./$(DEPDIR)/tracer_ppid_pgid_sid.Po \
+       ./$(DEPDIR)/trie_test-trie_for_tests.Po \
+       ./$(DEPDIR)/trie_test-trie_test.Po ./$(DEPDIR)/truncate.Po \
+       ./$(DEPDIR)/truncate64-truncate64.Po ./$(DEPDIR)/ugetrlimit.Po \
+       ./$(DEPDIR)/uio-uio.Po ./$(DEPDIR)/umask.Po \
+       ./$(DEPDIR)/umount.Po ./$(DEPDIR)/umount2.Po \
+       ./$(DEPDIR)/umoven-illptr.Po ./$(DEPDIR)/umovestr-illptr.Po \
+       ./$(DEPDIR)/umovestr.Po ./$(DEPDIR)/umovestr2.Po \
+       ./$(DEPDIR)/umovestr3.Po ./$(DEPDIR)/umovestr_cached.Po \
+       ./$(DEPDIR)/umovestr_cached_adjacent.Po ./$(DEPDIR)/uname.Po \
+       ./$(DEPDIR)/unblock_reset_raise.Po \
        ./$(DEPDIR)/unix-pair-send-recv.Po \
        ./$(DEPDIR)/unix-pair-sendto-recvfrom.Po ./$(DEPDIR)/unlink.Po \
        ./$(DEPDIR)/unlinkat.Po ./$(DEPDIR)/unshare.Po \
@@ -3281,10 +4545,15 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/wait4-v.Po ./$(DEPDIR)/wait4.Po \
        ./$(DEPDIR)/waitid-v.Po ./$(DEPDIR)/waitid.Po \
        ./$(DEPDIR)/waitpid.Po ./$(DEPDIR)/xattr-strings.Po \
-       ./$(DEPDIR)/xattr.Po ./$(DEPDIR)/xet_robust_list.Po \
+       ./$(DEPDIR)/xattr.Po \
+       ./$(DEPDIR)/xet_robust_list--pidns-translation.Po \
+       ./$(DEPDIR)/xet_robust_list.Po \
        ./$(DEPDIR)/xet_thread_area_x86.Po ./$(DEPDIR)/xetitimer.Po \
-       ./$(DEPDIR)/xetpgid.Po ./$(DEPDIR)/xetpriority.Po \
-       ./$(DEPDIR)/xettimeofday.Po ./$(DEPDIR)/zeroargc.Po
+       ./$(DEPDIR)/xetpgid--pidns-translation.Po \
+       ./$(DEPDIR)/xetpgid.Po \
+       ./$(DEPDIR)/xetpriority--pidns-translation.Po \
+       ./$(DEPDIR)/xetpriority.Po ./$(DEPDIR)/xettimeofday.Po \
+       ./$(DEPDIR)/zeroargc.Po
 am__mv = mv -f
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
@@ -3306,79 +4575,128 @@ SOURCES = $(libtests_a_SOURCES) _newselect.c _newselect-P.c accept.c \
        accept4.c access.c acct.c add_key.c adjtimex.c aio.c \
        aio_pgetevents.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-obj_get_info_by_fd.c \
-       bpf-obj_get_info_by_fd-prog.c bpf-obj_get_info_by_fd-prog-v.c \
-       bpf-obj_get_info_by_fd-v.c bpf-success.c bpf-success-v.c \
-       bpf-v.c brk.c btrfs.c caps.c caps-abbrev.c check_sigblock.c \
+       block_reset_raise_run.c block_reset_run.c bpf.c \
+       bpf-obj_get_info_by_fd.c bpf-obj_get_info_by_fd-prog.c \
+       bpf-obj_get_info_by_fd-prog-v.c bpf-obj_get_info_by_fd-v.c \
+       bpf-success.c bpf-success-long-y.c bpf-success-v.c bpf-v.c \
+       brk.c btrfs.c caps.c caps-abbrev.c check_sigblock.c \
        check_sigign.c chmod.c chown.c chown32.c chroot.c \
        clock_adjtime.c clock_nanosleep.c clock_xettime.c \
-       clone_parent.c clone_ptrace.c copy_file_range.c count-f.c \
-       creat.c delay.c delete_module.c dev-yy.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 \
+       clone-flags.c clone3.c clone3-Xabbrev.c clone3-Xraw.c \
+       clone3-Xverbose.c clone3-success.c clone3-success-Xabbrev.c \
+       clone3-success-Xraw.c clone3-success-Xverbose.c clone_parent.c \
+       clone_parent--quiet-exit.c clone_parent-q.c clone_parent-qq.c \
+       clone_ptrace.c clone_ptrace--quiet-attach.c \
+       clone_ptrace--quiet-exit.c clone_ptrace-q.c clone_ptrace-qq.c \
+       close_range.c close_range-P.c close_range-y.c close_range-yy.c \
+       copy_file_range.c count-f.c creat.c delay.c delete_module.c \
+       dev--decode-fds-dev.c dev--decode-fds-path.c \
+       dev--decode-fds-socket.c dev-yy.c dup.c dup-P.c dup-y.c \
+       dup-yy.c dup2.c dup2-P.c dup2-y.c dup2-yy.c dup3.c dup3-P.c \
+       dup3-y.c dup3-yy.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 faccessat-P.c \
+       faccessat-y.c faccessat-yy.c faccessat2.c faccessat2-P.c \
+       faccessat2-y.c faccessat2-yy.c fadvise64.c fadvise64_64.c \
        fallocate.c fanotify_init.c fanotify_mark.c \
        fanotify_mark-Xabbrev.c fanotify_mark-Xraw.c \
        fanotify_mark-Xverbose.c fchdir.c fchmod.c fchmodat.c fchown.c \
-       fchown32.c fchownat.c fcntl.c fcntl64.c fdatasync.c fflush.c \
-       file_handle.c file_ioctl.c filter-unavailable.c finit_module.c \
-       flock.c fork-f.c fstat.c fstat-Xabbrev.c fstat-Xraw.c \
-       fstat-Xverbose.c fstat64.c fstat64-Xabbrev.c fstat64-Xraw.c \
-       fstat64-Xverbose.c fstatat64.c fstatfs.c fstatfs64.c fsync.c \
-       fsync-y.c ftruncate.c ftruncate64.c futex.c futimesat.c \
-       get_mempolicy.c getcpu.c getcwd.c getdents.c getdents64.c \
-       getegid.c getegid32.c geteuid.c geteuid32.c getgid.c \
-       getgid32.c getgroups.c getgroups32.c getpeername.c getpgrp.c \
-       getpid.c getppid.c getrandom.c getresgid.c getresgid32.c \
-       getresuid.c getresuid32.c getrlimit.c getrusage.c getsid.c \
-       getsockname.c gettid.c getuid.c getuid32.c getxxid.c \
-       group_req.c inet-cmsg.c init_module.c inject-nf.c inotify.c \
-       inotify_init1.c int_0x80.c io_uring_enter.c \
-       io_uring_register.c io_uring_setup.c ioctl.c ioctl_block.c \
-       ioctl_dm.c ioctl_dm-v.c ioctl_evdev.c ioctl_evdev-success.c \
-       ioctl_evdev-success-v.c ioctl_evdev-v.c ioctl_inotify.c \
-       ioctl_kvm_run.c ioctl_kvm_run-v.c ioctl_kvm_run_auxstr_vcpu.c \
-       ioctl_loop.c ioctl_loop-nv.c ioctl_loop-v.c ioctl_mtd.c \
-       ioctl_nbd.c ioctl_nsfs.c ioctl_perf.c ioctl_perf-success.c \
-       ioctl_ptp.c ioctl_random.c ioctl_rtc.c ioctl_rtc-v.c \
-       ioctl_scsi.c ioctl_sg_io_v3.c ioctl_sg_io_v4.c \
-       ioctl_sock_gifconf.c ioctl_uffdio.c ioctl_v4l2.c ioperm.c \
-       iopl.c ioprio.c ioprio-Xabbrev.c ioprio-Xraw.c \
-       ioprio-Xverbose.c ip_mreq.c ipc.c ipc_msg.c ipc_msg-Xabbrev.c \
-       ipc_msg-Xraw.c ipc_msg-Xverbose.c ipc_msgbuf.c \
-       ipc_msgbuf-Xabbrev.c ipc_msgbuf-Xraw.c ipc_msgbuf-Xverbose.c \
-       ipc_sem.c ipc_sem-Xabbrev.c ipc_sem-Xraw.c ipc_sem-Xverbose.c \
-       ipc_shm.c ipc_shm-Xabbrev.c ipc_shm-Xraw.c ipc_shm-Xverbose.c \
-       is_linux_mips_n64.c kcmp.c kcmp-y.c kern_features.c \
+       fchown32.c fchownat.c fcntl.c fcntl--pidns-translation.c \
+       fcntl64.c fcntl64--pidns-translation.c fdatasync.c fflush.c \
+       file_handle.c file_ioctl.c filter-unavailable.c \
+       filter_seccomp-flag.c filter_seccomp-perf.c finit_module.c \
+       flock.c fork--pidns-translation.c fork-f.c fsconfig.c \
+       fsconfig-P.c fsmount.c fsopen.c fspick.c fspick-P.c fstat.c \
+       fstat-Xabbrev.c fstat-Xraw.c fstat-Xverbose.c fstat64.c \
+       fstat64-Xabbrev.c fstat64-Xraw.c fstat64-Xverbose.c \
+       fstatat64.c fstatfs.c fstatfs64.c fsync.c fsync-y.c \
+       ftruncate.c ftruncate64.c futex.c futimesat.c get_mempolicy.c \
+       get_process_reaper.c getcpu.c getcwd.c getdents.c getdents-v.c \
+       getdents64.c getdents64-v.c getegid.c getegid32.c geteuid.c \
+       geteuid32.c getgid.c getgid32.c getgroups.c getgroups32.c \
+       getpeername.c getpgrp.c getpgrp--pidns-translation.c getpid.c \
+       getpid--pidns-translation.c getppid.c getrandom.c getresgid.c \
+       getresgid32.c getresuid.c getresuid32.c getrlimit.c \
+       getrusage.c getsid.c getsid--pidns-translation.c getsockname.c \
+       gettid.c gettid--pidns-translation.c getuid.c getuid32.c \
+       getxgid.c getxpid.c getxuid.c group_req.c inet-cmsg.c \
+       init_module.c inject-nf.c inotify.c inotify_init.c \
+       inotify_init-y.c inotify_init1.c inotify_init1-y.c int_0x80.c \
+       io_uring_enter.c io_uring_register.c io_uring_setup.c ioctl.c \
+       ioctl_block.c ioctl_block--pidns-translation.c ioctl_dm.c \
+       ioctl_dm-v.c ioctl_evdev.c ioctl_evdev-Xabbrev.c \
+       ioctl_evdev-Xraw.c ioctl_evdev-Xverbose.c \
+       ioctl_evdev-success.c ioctl_evdev-success-Xabbrev.c \
+       ioctl_evdev-success-Xraw.c ioctl_evdev-success-Xverbose.c \
+       ioctl_evdev-success-v.c ioctl_evdev-success-v-Xabbrev.c \
+       ioctl_evdev-success-v-Xraw.c ioctl_evdev-success-v-Xverbose.c \
+       ioctl_evdev-v.c ioctl_evdev-v-Xabbrev.c ioctl_evdev-v-Xraw.c \
+       ioctl_evdev-v-Xverbose.c ioctl_hdio.c ioctl_hdio-Xabbrev.c \
+       ioctl_hdio-Xraw.c ioctl_hdio-Xverbose.c ioctl_hdio-success.c \
+       ioctl_hdio-success-Xabbrev.c ioctl_hdio-success-Xraw.c \
+       ioctl_hdio-success-Xverbose.c ioctl_hdio-success-v.c \
+       ioctl_hdio-success-v-Xabbrev.c ioctl_hdio-success-v-Xraw.c \
+       ioctl_hdio-success-v-Xverbose.c ioctl_hdio-v.c \
+       ioctl_hdio-v-Xabbrev.c ioctl_hdio-v-Xraw.c \
+       ioctl_hdio-v-Xverbose.c ioctl_inotify.c ioctl_kvm_run.c \
+       ioctl_kvm_run-v.c ioctl_kvm_run_auxstr_vcpu.c ioctl_loop.c \
+       ioctl_loop-nv.c ioctl_loop-v.c ioctl_mtd.c ioctl_nbd.c \
+       ioctl_nsfs.c ioctl_perf.c ioctl_perf-success.c ioctl_ptp.c \
+       ioctl_random.c ioctl_rtc.c ioctl_rtc-v.c ioctl_scsi.c \
+       ioctl_sg_io_v3.c ioctl_sg_io_v4.c ioctl_sock_gifconf.c \
+       ioctl_tee.c ioctl_uffdio.c ioctl_v4l2.c ioctl_v4l2-Xabbrev.c \
+       ioctl_v4l2-Xraw.c ioctl_v4l2-Xverbose.c ioctl_v4l2-success.c \
+       ioctl_v4l2-success-Xabbrev.c ioctl_v4l2-success-Xraw.c \
+       ioctl_v4l2-success-Xverbose.c ioctl_v4l2-success-v.c \
+       ioctl_v4l2-success-v-Xabbrev.c ioctl_v4l2-success-v-Xraw.c \
+       ioctl_v4l2-success-v-Xverbose.c ioctl_v4l2-v.c \
+       ioctl_v4l2-v-Xabbrev.c ioctl_v4l2-v-Xraw.c \
+       ioctl_v4l2-v-Xverbose.c ioctl_watchdog.c ioperm.c iopl.c \
+       ioprio.c ioprio--pidns-translation.c ioprio-Xabbrev.c \
+       ioprio-Xraw.c ioprio-Xverbose.c ip_mreq.c ipc.c ipc_msg.c \
+       ipc_msg-Xabbrev.c ipc_msg-Xraw.c ipc_msg-Xverbose.c \
+       ipc_msgbuf.c ipc_msgbuf-Xabbrev.c ipc_msgbuf-Xraw.c \
+       ipc_msgbuf-Xverbose.c ipc_sem.c ipc_sem-Xabbrev.c \
+       ipc_sem-Xraw.c ipc_sem-Xverbose.c ipc_shm.c ipc_shm-Xabbrev.c \
+       ipc_shm-Xraw.c ipc_shm-Xverbose.c is_linux_mips_n64.c kcmp.c \
+       kcmp-y.c kcmp-y--pidns-translation.c kern_features.c \
        kernel_version.c kernel_version-Xabbrev.c \
        kernel_version-Xraw.c kernel_version-Xverbose.c \
        kexec_file_load.c kexec_load.c keyctl.c keyctl-Xabbrev.c \
-       keyctl-Xraw.c keyctl-Xverbose.c kill.c kill_child.c ksysent.c \
-       lchown.c lchown32.c link.c linkat.c list_sigaction_signum.c \
-       llseek.c localtime.c lookup_dcookie.c looping_threads.c \
-       lseek.c lstat.c lstat64.c madvise.c mbind.c membarrier.c \
+       keyctl-Xraw.c keyctl-Xverbose.c kill.c \
+       kill--pidns-translation.c kill_child.c ksysent.c lchown.c \
+       lchown32.c link.c linkat.c list_sigaction_signum.c llseek.c \
+       localtime.c lookup_dcookie.c looping_threads.c lseek.c lstat.c \
+       lstat64.c madvise.c maybe_switch_current_tcp.c \
+       maybe_switch_current_tcp--quiet-thread-execve.c mbind.c \
+       mbind-Xabbrev.c mbind-Xraw.c mbind-Xverbose.c membarrier.c \
        memfd_create.c memfd_create-Xabbrev.c memfd_create-Xraw.c \
-       memfd_create-Xverbose.c migrate_pages.c mincore.c mkdir.c \
-       mkdirat.c mknod.c mknodat.c mlock.c mlock2.c mlockall.c mmap.c \
+       memfd_create-Xverbose.c migrate_pages.c \
+       migrate_pages--pidns-translation.c mincore.c mkdir.c mkdirat.c \
+       mknod.c mknodat.c mlock.c mlock2.c mlockall.c mmap.c \
        mmap-Xabbrev.c mmap-Xraw.c mmap-Xverbose.c mmap64.c \
        mmap64-Xabbrev.c mmap64-Xraw.c mmap64-Xverbose.c mmsg.c \
        mmsg-silent.c mmsg_name.c mmsg_name-v.c modify_ldt.c mount.c \
-       mount-Xabbrev.c mount-Xraw.c mount-Xverbose.c move_pages.c \
+       mount-Xabbrev.c mount-Xraw.c mount-Xverbose.c move_mount.c \
+       move_mount-P.c move_pages.c move_pages--pidns-translation.c \
        move_pages-Xabbrev.c move_pages-Xraw.c move_pages-Xverbose.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-packet_mreq.c net-packet_mreq-Xabbrev.c \
+       nanosleep.c net--decode-fds-dev-netlink.c \
+       net--decode-fds-none-netlink.c net--decode-fds-path-netlink.c \
+       net--decode-fds-socket-netlink.c net-accept-connect.c \
+       net-icmp_filter.c net-packet_mreq.c net-packet_mreq-Xabbrev.c \
        net-packet_mreq-Xraw.c net-packet_mreq-Xverbose.c \
-       net-sockaddr.c net-tpacket_req.c net-tpacket_stats.c \
+       net-sockaddr.c net-sockaddr--pidns-translation.c \
+       net-tpacket_req.c net-tpacket_stats.c \
        net-tpacket_stats-success.c net-y-unix.c net-yy-inet.c \
        net-yy-inet6.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 \
+       netlink_audit--pidns-translation.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 \
@@ -3386,166 +4704,249 @@ SOURCES = $(libtests_a_SOURCES) _newselect.c _newselect-P.c accept.c \
        nlattr_fib_rule_hdr.c nlattr_ifaddrlblmsg.c nlattr_ifaddrmsg.c \
        nlattr_ifinfomsg.c nlattr_ifla_af_spec.c nlattr_ifla_brport.c \
        nlattr_ifla_linkinfo.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 nsyscalls-d.c old_mmap.c \
-       old_mmap-P.c old_mmap-Xabbrev.c old_mmap-Xraw.c \
-       old_mmap-Xverbose.c old_mmap-v-none.c oldfstat.c oldlstat.c \
-       oldselect.c oldselect-P.c oldselect-efault.c \
-       oldselect-efault-P.c oldstat.c open.c openat.c \
+       nlattr_ifla_xdp-y.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 nsyscalls-d.c old_mmap.c old_mmap-P.c \
+       old_mmap-Xabbrev.c old_mmap-Xraw.c old_mmap-Xverbose.c \
+       old_mmap-v-none.c oldfstat.c oldlstat.c oldselect.c \
+       oldselect-P.c oldselect-efault.c oldselect-efault-P.c \
+       oldstat.c open.c open_tree.c open_tree-P.c openat.c openat2.c \
+       openat2-Xabbrev.c openat2-Xraw.c openat2-Xverbose.c \
+       openat2-v.c openat2-v-y.c openat2-v-y-Xabbrev.c \
+       openat2-v-y-Xraw.c openat2-v-y-Xverbose.c openat2-y.c \
        orphaned_process_group.c osf_utimes.c pause.c pc.c \
        perf_event_open.c perf_event_open_nonverbose.c \
        perf_event_open_unabbrev.c personality.c personality-Xabbrev.c \
-       personality-Xraw.c personality-Xverbose.c pidfd_send_signal.c \
-       pipe.c pipe2.c pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c \
-       poll-P.c ppoll.c ppoll-P.c ppoll-v.c prctl-arg2-intptr.c \
-       prctl-dumpable.c prctl-name.c prctl-no-args.c \
-       prctl-pdeathsig.c prctl-seccomp-filter-v.c \
+       personality-Xraw.c personality-Xverbose.c pidfd_getfd.c \
+       pidfd_getfd-y.c pidfd_getfd-yy.c pidfd_open.c \
+       pidfd_open--decode-fd-path.c pidfd_open--decode-fd-pidfd.c \
+       pidfd_open--decode-fd-socket.c pidfd_open--pidns-translation.c \
+       pidfd_open-P.c pidfd_open-y.c pidfd_open-yy.c \
+       pidfd_send_signal.c pidfd_send_signal--pidns-translation.c \
+       pidns-cache.c pipe.c pipe2.c pkey_alloc.c pkey_free.c \
+       pkey_mprotect.c poll.c poll-P.c ppoll.c ppoll-P.c ppoll-v.c \
+       prctl-arg2-intptr.c prctl-dumpable.c prctl-name.c \
+       prctl-no-args.c prctl-pdeathsig.c prctl-seccomp-filter-v.c \
        prctl-seccomp-strict.c prctl-securebits.c prctl-spec-inject.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 printpath-umovestr-peekdata.c \
-       printpath-umovestr-undumpable.c printsignal-Xabbrev.c \
-       printsignal-Xraw.c printsignal-Xverbose.c printstr.c \
-       printstrn-umoven.c printstrn-umoven-peekdata.c \
-       printstrn-umoven-undumpable.c prlimit64.c process_vm_readv.c \
-       process_vm_writev.c pselect6.c ptrace.c ptrace_syscall_info.c \
-       pwritev.c qual_fault.c qual_inject-error-signal.c \
-       qual_inject-retval.c qual_inject-signal.c qual_signal.c \
-       quotactl.c quotactl-Xabbrev.c quotactl-Xraw.c \
-       quotactl-Xverbose.c quotactl-success.c quotactl-success-v.c \
-       quotactl-v.c quotactl-xfs.c quotactl-xfs-success.c \
-       quotactl-xfs-success-v.c quotactl-xfs-v.c read-write.c \
-       readahead.c readdir.c readlink.c readlinkat.c readv.c reboot.c \
-       recvfrom.c recvmmsg-timeout.c recvmsg.c redirect-fds.c \
-       remap_file_pages.c remap_file_pages-Xabbrev.c \
+       print_ppid_tracerpid.c printpath-umovestr.c \
+       printpath-umovestr-peekdata.c printpath-umovestr-undumpable.c \
+       printsignal-Xabbrev.c printsignal-Xraw.c \
+       printsignal-Xverbose.c printstr.c printstrn-umoven.c \
+       printstrn-umoven-peekdata.c printstrn-umoven-undumpable.c \
+       prlimit64.c prlimit64--pidns-translation.c process_vm_readv.c \
+       process_vm_readv--pidns-translation.c process_vm_writev.c \
+       process_vm_writev--pidns-translation.c pselect6.c ptrace.c \
+       ptrace_syscall_info.c pwritev.c qual_fault.c \
+       qual_inject-error-signal.c qual_inject-retval.c \
+       qual_inject-signal.c qual_signal.c quotactl.c \
+       quotactl-Xabbrev.c quotactl-Xraw.c quotactl-Xverbose.c \
+       quotactl-success.c quotactl-success-v.c quotactl-v.c \
+       quotactl-xfs.c quotactl-xfs-success.c quotactl-xfs-success-v.c \
+       quotactl-xfs-v.c read-write.c readahead.c readdir.c readlink.c \
+       readlinkat.c readv.c reboot.c recv-MSG_TRUNC.c recvfrom.c \
+       recvfrom-MSG_TRUNC.c recvmmsg-timeout.c recvmsg.c \
+       redirect-fds.c remap_file_pages.c remap_file_pages-Xabbrev.c \
        remap_file_pages-Xraw.c remap_file_pages-Xverbose.c rename.c \
        renameat.c renameat2.c request_key.c restart_syscall.c \
        riscv_flush_icache.c rmdir.c rt_sigaction.c rt_sigpending.c \
-       rt_sigprocmask.c rt_sigqueueinfo.c rt_sigreturn.c \
+       rt_sigprocmask.c rt_sigqueueinfo.c \
+       rt_sigqueueinfo--pidns-translation.c rt_sigreturn.c \
        rt_sigsuspend.c rt_sigtimedwait.c rt_tgsigqueueinfo.c \
-       run_expect_termsig.c s390_guarded_storage.c \
-       s390_guarded_storage-v.c s390_pci_mmio_read_write.c \
-       s390_runtime_instr.c s390_sthyi.c s390_sthyi-v.c \
-       sched_get_priority_mxx.c sched_rr_get_interval.c \
-       sched_xetaffinity.c sched_xetattr.c sched_xetparam.c \
-       sched_xetscheduler.c sched_yield.c scm_rights.c \
-       seccomp-filter.c seccomp-filter-v.c seccomp-strict.c \
-       seccomp_get_action_avail.c select.c select-P.c semop.c \
-       sendfile.c sendfile64.c set_mempolicy.c set_ptracer_any.c \
-       set_sigblock.c set_sigign.c setdomainname.c setfsgid.c \
-       setfsgid32.c setfsuid.c setfsuid32.c setgid.c setgid32.c \
-       setgroups.c setgroups32.c sethostname.c setns.c setregid.c \
-       setregid32.c setresgid.c setresgid32.c setresuid.c \
-       setresuid32.c setreuid.c setreuid32.c setrlimit.c \
-       setrlimit-Xabbrev.c setrlimit-Xraw.c setrlimit-Xverbose.c \
-       setuid.c setuid32.c shmxt.c shutdown.c sigaction.c \
-       sigaltstack.c siginfo.c signal.c signal_receive.c signalfd4.c \
-       sigpending.c sigprocmask.c sigreturn.c sigsuspend.c sleep.c \
-       so_error.c so_linger.c so_peercred.c so_peercred-Xabbrev.c \
-       so_peercred-Xraw.c so_peercred-Xverbose.c sock_filter-v.c \
-       sock_filter-v-Xabbrev.c sock_filter-v-Xraw.c \
-       sock_filter-v-Xverbose.c sockaddr_xlat-Xabbrev.c \
-       sockaddr_xlat-Xraw.c sockaddr_xlat-Xverbose.c socketcall.c \
-       sockopt-sol_netlink.c sockopt-timestamp.c splice.c \
-       $(stack_fcall_SOURCES) $(stack_fcall_mangled_SOURCES) stat.c \
-       stat64.c statfs.c statfs64.c statx.c swap.c sxetmask.c \
-       symlink.c symlinkat.c sync.c sync_file_range.c \
-       sync_file_range2.c sysinfo.c syslog.c tee.c threads-execve.c \
+       rt_tgsigqueueinfo--pidns-translation.c run_expect_termsig.c \
+       s390_guarded_storage.c s390_guarded_storage-v.c \
+       s390_pci_mmio_read_write.c s390_runtime_instr.c s390_sthyi.c \
+       s390_sthyi-v.c sched_get_priority_mxx.c \
+       sched_rr_get_interval.c sched_xetaffinity.c \
+       sched_xetaffinity--pidns-translation.c sched_xetattr.c \
+       sched_xetattr--pidns-translation.c sched_xetparam.c \
+       sched_xetparam--pidns-translation.c sched_xetscheduler.c \
+       sched_xetscheduler--pidns-translation.c sched_yield.c \
+       scm_rights.c seccomp-filter.c seccomp-filter-v.c \
+       seccomp-strict.c seccomp_get_action_avail.c select.c \
+       select-P.c semop.c semop-indirect.c semtimedop.c sendfile.c \
+       sendfile64.c set_mempolicy.c set_mempolicy-Xabbrev.c \
+       set_mempolicy-Xraw.c set_mempolicy-Xverbose.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 \
+       setpgrp-exec.c setregid.c setregid32.c setresgid.c \
+       setresgid32.c setresuid.c setresuid32.c setreuid.c \
+       setreuid32.c setrlimit.c setrlimit-Xabbrev.c setrlimit-Xraw.c \
+       setrlimit-Xverbose.c setuid.c setuid32.c shmxt.c shutdown.c \
+       sigaction.c sigaltstack.c siginfo.c signal.c signal_receive.c \
+       signal_receive--pidns-translation.c signalfd4.c sigpending.c \
+       sigprocmask.c sigreturn.c sigsuspend.c sleep.c so_error.c \
+       so_linger.c so_peercred.c so_peercred--pidns-translation.c \
+       so_peercred-Xabbrev.c so_peercred-Xraw.c \
+       so_peercred-Xverbose.c sock_filter-v.c sock_filter-v-Xabbrev.c \
+       sock_filter-v-Xraw.c sock_filter-v-Xverbose.c \
+       sockaddr_xlat-Xabbrev.c sockaddr_xlat-Xraw.c \
+       sockaddr_xlat-Xverbose.c socketcall.c sockopt-sol_netlink.c \
+       sockopt-timestamp.c splice.c $(stack_fcall_SOURCES) \
+       $(stack_fcall_attach_SOURCES) $(stack_fcall_mangled_SOURCES) \
+       stat.c stat64.c statfs.c statfs64.c status-all.c \
+       status-failed.c status-failed-long.c status-failed-status.c \
+       status-none.c status-none-f.c status-none-threads.c \
+       status-successful.c status-successful-long.c \
+       status-successful-status.c status-unfinished.c \
+       status-unfinished-threads.c statx.c strace--strings-in-hex.c \
+       strace--strings-in-hex-all.c \
+       strace--strings-in-hex-non-ascii.c strace-n.c strace-x.c \
+       strace-xx.c swap.c sxetmask.c symlink.c symlinkat.c sync.c \
+       sync_file_range.c sync_file_range2.c sysinfo.c syslog.c \
+       syslog-success.c tee.c tgkill.c tgkill--pidns-translation.c \
+       threads-execve.c threads-execve--quiet-thread-execve.c \
+       threads-execve-q.c threads-execve-qq.c threads-execve-qqq.c \
        time.c timer_create.c timer_xettime.c timerfd_xettime.c \
-       times.c times-fail.c truncate.c truncate64.c ugetrlimit.c \
-       uio.c umask.c umount.c umount2.c umoven-illptr.c umovestr.c \
-       umovestr-illptr.c umovestr2.c umovestr3.c uname.c \
-       unblock_reset_raise.c unix-pair-send-recv.c \
+       times.c times-fail.c tkill.c tkill--pidns-translation.c \
+       tracer_ppid_pgid_sid.c $(trie_test_SOURCES) truncate.c \
+       truncate64.c ugetrlimit.c uio.c umask.c umount.c umount2.c \
+       umoven-illptr.c umovestr.c umovestr-illptr.c umovestr2.c \
+       umovestr3.c umovestr_cached.c umovestr_cached_adjacent.c \
+       uname.c unblock_reset_raise.c unix-pair-send-recv.c \
        unix-pair-sendto-recvfrom.c unlink.c unlinkat.c unshare.c \
        userfaultfd.c ustat.c utime.c utimensat.c utimensat-Xabbrev.c \
        utimensat-Xraw.c utimensat-Xverbose.c utimes.c vfork-f.c \
        vhangup.c vmsplice.c wait4.c wait4-v.c waitid.c waitid-v.c \
        waitpid.c xattr.c xattr-strings.c xet_robust_list.c \
-       xet_thread_area_x86.c xetitimer.c xetpgid.c xetpriority.c \
-       xettimeofday.c zeroargc.c
+       xet_robust_list--pidns-translation.c xet_thread_area_x86.c \
+       xetitimer.c xetpgid.c xetpgid--pidns-translation.c \
+       xetpriority.c xetpriority--pidns-translation.c xettimeofday.c \
+       zeroargc.c
 DIST_SOURCES = $(libtests_a_SOURCES) _newselect.c _newselect-P.c \
        accept.c accept4.c access.c acct.c add_key.c adjtimex.c aio.c \
        aio_pgetevents.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-obj_get_info_by_fd.c \
-       bpf-obj_get_info_by_fd-prog.c bpf-obj_get_info_by_fd-prog-v.c \
-       bpf-obj_get_info_by_fd-v.c bpf-success.c bpf-success-v.c \
-       bpf-v.c brk.c btrfs.c caps.c caps-abbrev.c check_sigblock.c \
+       block_reset_raise_run.c block_reset_run.c bpf.c \
+       bpf-obj_get_info_by_fd.c bpf-obj_get_info_by_fd-prog.c \
+       bpf-obj_get_info_by_fd-prog-v.c bpf-obj_get_info_by_fd-v.c \
+       bpf-success.c bpf-success-long-y.c bpf-success-v.c bpf-v.c \
+       brk.c btrfs.c caps.c caps-abbrev.c check_sigblock.c \
        check_sigign.c chmod.c chown.c chown32.c chroot.c \
        clock_adjtime.c clock_nanosleep.c clock_xettime.c \
-       clone_parent.c clone_ptrace.c copy_file_range.c count-f.c \
-       creat.c delay.c delete_module.c dev-yy.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 \
+       clone-flags.c clone3.c clone3-Xabbrev.c clone3-Xraw.c \
+       clone3-Xverbose.c clone3-success.c clone3-success-Xabbrev.c \
+       clone3-success-Xraw.c clone3-success-Xverbose.c clone_parent.c \
+       clone_parent--quiet-exit.c clone_parent-q.c clone_parent-qq.c \
+       clone_ptrace.c clone_ptrace--quiet-attach.c \
+       clone_ptrace--quiet-exit.c clone_ptrace-q.c clone_ptrace-qq.c \
+       close_range.c close_range-P.c close_range-y.c close_range-yy.c \
+       copy_file_range.c count-f.c creat.c delay.c delete_module.c \
+       dev--decode-fds-dev.c dev--decode-fds-path.c \
+       dev--decode-fds-socket.c dev-yy.c dup.c dup-P.c dup-y.c \
+       dup-yy.c dup2.c dup2-P.c dup2-y.c dup2-yy.c dup3.c dup3-P.c \
+       dup3-y.c dup3-yy.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 faccessat-P.c \
+       faccessat-y.c faccessat-yy.c faccessat2.c faccessat2-P.c \
+       faccessat2-y.c faccessat2-yy.c fadvise64.c fadvise64_64.c \
        fallocate.c fanotify_init.c fanotify_mark.c \
        fanotify_mark-Xabbrev.c fanotify_mark-Xraw.c \
        fanotify_mark-Xverbose.c fchdir.c fchmod.c fchmodat.c fchown.c \
-       fchown32.c fchownat.c fcntl.c fcntl64.c fdatasync.c fflush.c \
-       file_handle.c file_ioctl.c filter-unavailable.c finit_module.c \
-       flock.c fork-f.c fstat.c fstat-Xabbrev.c fstat-Xraw.c \
-       fstat-Xverbose.c fstat64.c fstat64-Xabbrev.c fstat64-Xraw.c \
-       fstat64-Xverbose.c fstatat64.c fstatfs.c fstatfs64.c fsync.c \
-       fsync-y.c ftruncate.c ftruncate64.c futex.c futimesat.c \
-       get_mempolicy.c getcpu.c getcwd.c getdents.c getdents64.c \
-       getegid.c getegid32.c geteuid.c geteuid32.c getgid.c \
-       getgid32.c getgroups.c getgroups32.c getpeername.c getpgrp.c \
-       getpid.c getppid.c getrandom.c getresgid.c getresgid32.c \
-       getresuid.c getresuid32.c getrlimit.c getrusage.c getsid.c \
-       getsockname.c gettid.c getuid.c getuid32.c getxxid.c \
-       group_req.c inet-cmsg.c init_module.c inject-nf.c inotify.c \
-       inotify_init1.c int_0x80.c io_uring_enter.c \
-       io_uring_register.c io_uring_setup.c ioctl.c ioctl_block.c \
-       ioctl_dm.c ioctl_dm-v.c ioctl_evdev.c ioctl_evdev-success.c \
-       ioctl_evdev-success-v.c ioctl_evdev-v.c ioctl_inotify.c \
-       ioctl_kvm_run.c ioctl_kvm_run-v.c ioctl_kvm_run_auxstr_vcpu.c \
-       ioctl_loop.c ioctl_loop-nv.c ioctl_loop-v.c ioctl_mtd.c \
-       ioctl_nbd.c ioctl_nsfs.c ioctl_perf.c ioctl_perf-success.c \
-       ioctl_ptp.c ioctl_random.c ioctl_rtc.c ioctl_rtc-v.c \
-       ioctl_scsi.c ioctl_sg_io_v3.c ioctl_sg_io_v4.c \
-       ioctl_sock_gifconf.c ioctl_uffdio.c ioctl_v4l2.c ioperm.c \
-       iopl.c ioprio.c ioprio-Xabbrev.c ioprio-Xraw.c \
-       ioprio-Xverbose.c ip_mreq.c ipc.c ipc_msg.c ipc_msg-Xabbrev.c \
-       ipc_msg-Xraw.c ipc_msg-Xverbose.c ipc_msgbuf.c \
-       ipc_msgbuf-Xabbrev.c ipc_msgbuf-Xraw.c ipc_msgbuf-Xverbose.c \
-       ipc_sem.c ipc_sem-Xabbrev.c ipc_sem-Xraw.c ipc_sem-Xverbose.c \
-       ipc_shm.c ipc_shm-Xabbrev.c ipc_shm-Xraw.c ipc_shm-Xverbose.c \
-       is_linux_mips_n64.c kcmp.c kcmp-y.c kern_features.c \
+       fchown32.c fchownat.c fcntl.c fcntl--pidns-translation.c \
+       fcntl64.c fcntl64--pidns-translation.c fdatasync.c fflush.c \
+       file_handle.c file_ioctl.c filter-unavailable.c \
+       filter_seccomp-flag.c filter_seccomp-perf.c finit_module.c \
+       flock.c fork--pidns-translation.c fork-f.c fsconfig.c \
+       fsconfig-P.c fsmount.c fsopen.c fspick.c fspick-P.c fstat.c \
+       fstat-Xabbrev.c fstat-Xraw.c fstat-Xverbose.c fstat64.c \
+       fstat64-Xabbrev.c fstat64-Xraw.c fstat64-Xverbose.c \
+       fstatat64.c fstatfs.c fstatfs64.c fsync.c fsync-y.c \
+       ftruncate.c ftruncate64.c futex.c futimesat.c get_mempolicy.c \
+       get_process_reaper.c getcpu.c getcwd.c getdents.c getdents-v.c \
+       getdents64.c getdents64-v.c getegid.c getegid32.c geteuid.c \
+       geteuid32.c getgid.c getgid32.c getgroups.c getgroups32.c \
+       getpeername.c getpgrp.c getpgrp--pidns-translation.c getpid.c \
+       getpid--pidns-translation.c getppid.c getrandom.c getresgid.c \
+       getresgid32.c getresuid.c getresuid32.c getrlimit.c \
+       getrusage.c getsid.c getsid--pidns-translation.c getsockname.c \
+       gettid.c gettid--pidns-translation.c getuid.c getuid32.c \
+       getxgid.c getxpid.c getxuid.c group_req.c inet-cmsg.c \
+       init_module.c inject-nf.c inotify.c inotify_init.c \
+       inotify_init-y.c inotify_init1.c inotify_init1-y.c int_0x80.c \
+       io_uring_enter.c io_uring_register.c io_uring_setup.c ioctl.c \
+       ioctl_block.c ioctl_block--pidns-translation.c ioctl_dm.c \
+       ioctl_dm-v.c ioctl_evdev.c ioctl_evdev-Xabbrev.c \
+       ioctl_evdev-Xraw.c ioctl_evdev-Xverbose.c \
+       ioctl_evdev-success.c ioctl_evdev-success-Xabbrev.c \
+       ioctl_evdev-success-Xraw.c ioctl_evdev-success-Xverbose.c \
+       ioctl_evdev-success-v.c ioctl_evdev-success-v-Xabbrev.c \
+       ioctl_evdev-success-v-Xraw.c ioctl_evdev-success-v-Xverbose.c \
+       ioctl_evdev-v.c ioctl_evdev-v-Xabbrev.c ioctl_evdev-v-Xraw.c \
+       ioctl_evdev-v-Xverbose.c ioctl_hdio.c ioctl_hdio-Xabbrev.c \
+       ioctl_hdio-Xraw.c ioctl_hdio-Xverbose.c ioctl_hdio-success.c \
+       ioctl_hdio-success-Xabbrev.c ioctl_hdio-success-Xraw.c \
+       ioctl_hdio-success-Xverbose.c ioctl_hdio-success-v.c \
+       ioctl_hdio-success-v-Xabbrev.c ioctl_hdio-success-v-Xraw.c \
+       ioctl_hdio-success-v-Xverbose.c ioctl_hdio-v.c \
+       ioctl_hdio-v-Xabbrev.c ioctl_hdio-v-Xraw.c \
+       ioctl_hdio-v-Xverbose.c ioctl_inotify.c ioctl_kvm_run.c \
+       ioctl_kvm_run-v.c ioctl_kvm_run_auxstr_vcpu.c ioctl_loop.c \
+       ioctl_loop-nv.c ioctl_loop-v.c ioctl_mtd.c ioctl_nbd.c \
+       ioctl_nsfs.c ioctl_perf.c ioctl_perf-success.c ioctl_ptp.c \
+       ioctl_random.c ioctl_rtc.c ioctl_rtc-v.c ioctl_scsi.c \
+       ioctl_sg_io_v3.c ioctl_sg_io_v4.c ioctl_sock_gifconf.c \
+       ioctl_tee.c ioctl_uffdio.c ioctl_v4l2.c ioctl_v4l2-Xabbrev.c \
+       ioctl_v4l2-Xraw.c ioctl_v4l2-Xverbose.c ioctl_v4l2-success.c \
+       ioctl_v4l2-success-Xabbrev.c ioctl_v4l2-success-Xraw.c \
+       ioctl_v4l2-success-Xverbose.c ioctl_v4l2-success-v.c \
+       ioctl_v4l2-success-v-Xabbrev.c ioctl_v4l2-success-v-Xraw.c \
+       ioctl_v4l2-success-v-Xverbose.c ioctl_v4l2-v.c \
+       ioctl_v4l2-v-Xabbrev.c ioctl_v4l2-v-Xraw.c \
+       ioctl_v4l2-v-Xverbose.c ioctl_watchdog.c ioperm.c iopl.c \
+       ioprio.c ioprio--pidns-translation.c ioprio-Xabbrev.c \
+       ioprio-Xraw.c ioprio-Xverbose.c ip_mreq.c ipc.c ipc_msg.c \
+       ipc_msg-Xabbrev.c ipc_msg-Xraw.c ipc_msg-Xverbose.c \
+       ipc_msgbuf.c ipc_msgbuf-Xabbrev.c ipc_msgbuf-Xraw.c \
+       ipc_msgbuf-Xverbose.c ipc_sem.c ipc_sem-Xabbrev.c \
+       ipc_sem-Xraw.c ipc_sem-Xverbose.c ipc_shm.c ipc_shm-Xabbrev.c \
+       ipc_shm-Xraw.c ipc_shm-Xverbose.c is_linux_mips_n64.c kcmp.c \
+       kcmp-y.c kcmp-y--pidns-translation.c kern_features.c \
        kernel_version.c kernel_version-Xabbrev.c \
        kernel_version-Xraw.c kernel_version-Xverbose.c \
        kexec_file_load.c kexec_load.c keyctl.c keyctl-Xabbrev.c \
-       keyctl-Xraw.c keyctl-Xverbose.c kill.c kill_child.c ksysent.c \
-       lchown.c lchown32.c link.c linkat.c list_sigaction_signum.c \
-       llseek.c localtime.c lookup_dcookie.c looping_threads.c \
-       lseek.c lstat.c lstat64.c madvise.c mbind.c membarrier.c \
+       keyctl-Xraw.c keyctl-Xverbose.c kill.c \
+       kill--pidns-translation.c kill_child.c ksysent.c lchown.c \
+       lchown32.c link.c linkat.c list_sigaction_signum.c llseek.c \
+       localtime.c lookup_dcookie.c looping_threads.c lseek.c lstat.c \
+       lstat64.c madvise.c maybe_switch_current_tcp.c \
+       maybe_switch_current_tcp--quiet-thread-execve.c mbind.c \
+       mbind-Xabbrev.c mbind-Xraw.c mbind-Xverbose.c membarrier.c \
        memfd_create.c memfd_create-Xabbrev.c memfd_create-Xraw.c \
-       memfd_create-Xverbose.c migrate_pages.c mincore.c mkdir.c \
-       mkdirat.c mknod.c mknodat.c mlock.c mlock2.c mlockall.c mmap.c \
+       memfd_create-Xverbose.c migrate_pages.c \
+       migrate_pages--pidns-translation.c mincore.c mkdir.c mkdirat.c \
+       mknod.c mknodat.c mlock.c mlock2.c mlockall.c mmap.c \
        mmap-Xabbrev.c mmap-Xraw.c mmap-Xverbose.c mmap64.c \
        mmap64-Xabbrev.c mmap64-Xraw.c mmap64-Xverbose.c mmsg.c \
        mmsg-silent.c mmsg_name.c mmsg_name-v.c modify_ldt.c mount.c \
-       mount-Xabbrev.c mount-Xraw.c mount-Xverbose.c move_pages.c \
+       mount-Xabbrev.c mount-Xraw.c mount-Xverbose.c move_mount.c \
+       move_mount-P.c move_pages.c move_pages--pidns-translation.c \
        move_pages-Xabbrev.c move_pages-Xraw.c move_pages-Xverbose.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-packet_mreq.c net-packet_mreq-Xabbrev.c \
+       nanosleep.c net--decode-fds-dev-netlink.c \
+       net--decode-fds-none-netlink.c net--decode-fds-path-netlink.c \
+       net--decode-fds-socket-netlink.c net-accept-connect.c \
+       net-icmp_filter.c net-packet_mreq.c net-packet_mreq-Xabbrev.c \
        net-packet_mreq-Xraw.c net-packet_mreq-Xverbose.c \
-       net-sockaddr.c net-tpacket_req.c net-tpacket_stats.c \
+       net-sockaddr.c net-sockaddr--pidns-translation.c \
+       net-tpacket_req.c net-tpacket_stats.c \
        net-tpacket_stats-success.c net-y-unix.c net-yy-inet.c \
        net-yy-inet6.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 \
+       netlink_audit--pidns-translation.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 \
@@ -3553,89 +4954,123 @@ DIST_SOURCES = $(libtests_a_SOURCES) _newselect.c _newselect-P.c \
        nlattr_fib_rule_hdr.c nlattr_ifaddrlblmsg.c nlattr_ifaddrmsg.c \
        nlattr_ifinfomsg.c nlattr_ifla_af_spec.c nlattr_ifla_brport.c \
        nlattr_ifla_linkinfo.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 nsyscalls-d.c old_mmap.c \
-       old_mmap-P.c old_mmap-Xabbrev.c old_mmap-Xraw.c \
-       old_mmap-Xverbose.c old_mmap-v-none.c oldfstat.c oldlstat.c \
-       oldselect.c oldselect-P.c oldselect-efault.c \
-       oldselect-efault-P.c oldstat.c open.c openat.c \
+       nlattr_ifla_xdp-y.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 nsyscalls-d.c old_mmap.c old_mmap-P.c \
+       old_mmap-Xabbrev.c old_mmap-Xraw.c old_mmap-Xverbose.c \
+       old_mmap-v-none.c oldfstat.c oldlstat.c oldselect.c \
+       oldselect-P.c oldselect-efault.c oldselect-efault-P.c \
+       oldstat.c open.c open_tree.c open_tree-P.c openat.c openat2.c \
+       openat2-Xabbrev.c openat2-Xraw.c openat2-Xverbose.c \
+       openat2-v.c openat2-v-y.c openat2-v-y-Xabbrev.c \
+       openat2-v-y-Xraw.c openat2-v-y-Xverbose.c openat2-y.c \
        orphaned_process_group.c osf_utimes.c pause.c pc.c \
        perf_event_open.c perf_event_open_nonverbose.c \
        perf_event_open_unabbrev.c personality.c personality-Xabbrev.c \
-       personality-Xraw.c personality-Xverbose.c pidfd_send_signal.c \
-       pipe.c pipe2.c pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c \
-       poll-P.c ppoll.c ppoll-P.c ppoll-v.c prctl-arg2-intptr.c \
-       prctl-dumpable.c prctl-name.c prctl-no-args.c \
-       prctl-pdeathsig.c prctl-seccomp-filter-v.c \
+       personality-Xraw.c personality-Xverbose.c pidfd_getfd.c \
+       pidfd_getfd-y.c pidfd_getfd-yy.c pidfd_open.c \
+       pidfd_open--decode-fd-path.c pidfd_open--decode-fd-pidfd.c \
+       pidfd_open--decode-fd-socket.c pidfd_open--pidns-translation.c \
+       pidfd_open-P.c pidfd_open-y.c pidfd_open-yy.c \
+       pidfd_send_signal.c pidfd_send_signal--pidns-translation.c \
+       pidns-cache.c pipe.c pipe2.c pkey_alloc.c pkey_free.c \
+       pkey_mprotect.c poll.c poll-P.c ppoll.c ppoll-P.c ppoll-v.c \
+       prctl-arg2-intptr.c prctl-dumpable.c prctl-name.c \
+       prctl-no-args.c prctl-pdeathsig.c prctl-seccomp-filter-v.c \
        prctl-seccomp-strict.c prctl-securebits.c prctl-spec-inject.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 printpath-umovestr-peekdata.c \
-       printpath-umovestr-undumpable.c printsignal-Xabbrev.c \
-       printsignal-Xraw.c printsignal-Xverbose.c printstr.c \
-       printstrn-umoven.c printstrn-umoven-peekdata.c \
-       printstrn-umoven-undumpable.c prlimit64.c process_vm_readv.c \
-       process_vm_writev.c pselect6.c ptrace.c ptrace_syscall_info.c \
-       pwritev.c qual_fault.c qual_inject-error-signal.c \
-       qual_inject-retval.c qual_inject-signal.c qual_signal.c \
-       quotactl.c quotactl-Xabbrev.c quotactl-Xraw.c \
-       quotactl-Xverbose.c quotactl-success.c quotactl-success-v.c \
-       quotactl-v.c quotactl-xfs.c quotactl-xfs-success.c \
-       quotactl-xfs-success-v.c quotactl-xfs-v.c read-write.c \
-       readahead.c readdir.c readlink.c readlinkat.c readv.c reboot.c \
-       recvfrom.c recvmmsg-timeout.c recvmsg.c redirect-fds.c \
-       remap_file_pages.c remap_file_pages-Xabbrev.c \
+       print_ppid_tracerpid.c printpath-umovestr.c \
+       printpath-umovestr-peekdata.c printpath-umovestr-undumpable.c \
+       printsignal-Xabbrev.c printsignal-Xraw.c \
+       printsignal-Xverbose.c printstr.c printstrn-umoven.c \
+       printstrn-umoven-peekdata.c printstrn-umoven-undumpable.c \
+       prlimit64.c prlimit64--pidns-translation.c process_vm_readv.c \
+       process_vm_readv--pidns-translation.c process_vm_writev.c \
+       process_vm_writev--pidns-translation.c pselect6.c ptrace.c \
+       ptrace_syscall_info.c pwritev.c qual_fault.c \
+       qual_inject-error-signal.c qual_inject-retval.c \
+       qual_inject-signal.c qual_signal.c quotactl.c \
+       quotactl-Xabbrev.c quotactl-Xraw.c quotactl-Xverbose.c \
+       quotactl-success.c quotactl-success-v.c quotactl-v.c \
+       quotactl-xfs.c quotactl-xfs-success.c quotactl-xfs-success-v.c \
+       quotactl-xfs-v.c read-write.c readahead.c readdir.c readlink.c \
+       readlinkat.c readv.c reboot.c recv-MSG_TRUNC.c recvfrom.c \
+       recvfrom-MSG_TRUNC.c recvmmsg-timeout.c recvmsg.c \
+       redirect-fds.c remap_file_pages.c remap_file_pages-Xabbrev.c \
        remap_file_pages-Xraw.c remap_file_pages-Xverbose.c rename.c \
        renameat.c renameat2.c request_key.c restart_syscall.c \
        riscv_flush_icache.c rmdir.c rt_sigaction.c rt_sigpending.c \
-       rt_sigprocmask.c rt_sigqueueinfo.c rt_sigreturn.c \
+       rt_sigprocmask.c rt_sigqueueinfo.c \
+       rt_sigqueueinfo--pidns-translation.c rt_sigreturn.c \
        rt_sigsuspend.c rt_sigtimedwait.c rt_tgsigqueueinfo.c \
-       run_expect_termsig.c s390_guarded_storage.c \
-       s390_guarded_storage-v.c s390_pci_mmio_read_write.c \
-       s390_runtime_instr.c s390_sthyi.c s390_sthyi-v.c \
-       sched_get_priority_mxx.c sched_rr_get_interval.c \
-       sched_xetaffinity.c sched_xetattr.c sched_xetparam.c \
-       sched_xetscheduler.c sched_yield.c scm_rights.c \
-       seccomp-filter.c seccomp-filter-v.c seccomp-strict.c \
-       seccomp_get_action_avail.c select.c select-P.c semop.c \
-       sendfile.c sendfile64.c set_mempolicy.c set_ptracer_any.c \
-       set_sigblock.c set_sigign.c setdomainname.c setfsgid.c \
-       setfsgid32.c setfsuid.c setfsuid32.c setgid.c setgid32.c \
-       setgroups.c setgroups32.c sethostname.c setns.c setregid.c \
-       setregid32.c setresgid.c setresgid32.c setresuid.c \
-       setresuid32.c setreuid.c setreuid32.c setrlimit.c \
-       setrlimit-Xabbrev.c setrlimit-Xraw.c setrlimit-Xverbose.c \
-       setuid.c setuid32.c shmxt.c shutdown.c sigaction.c \
-       sigaltstack.c siginfo.c signal.c signal_receive.c signalfd4.c \
-       sigpending.c sigprocmask.c sigreturn.c sigsuspend.c sleep.c \
-       so_error.c so_linger.c so_peercred.c so_peercred-Xabbrev.c \
-       so_peercred-Xraw.c so_peercred-Xverbose.c sock_filter-v.c \
-       sock_filter-v-Xabbrev.c sock_filter-v-Xraw.c \
-       sock_filter-v-Xverbose.c sockaddr_xlat-Xabbrev.c \
-       sockaddr_xlat-Xraw.c sockaddr_xlat-Xverbose.c socketcall.c \
-       sockopt-sol_netlink.c sockopt-timestamp.c splice.c \
-       $(stack_fcall_SOURCES) $(stack_fcall_mangled_SOURCES) stat.c \
-       stat64.c statfs.c statfs64.c statx.c swap.c sxetmask.c \
-       symlink.c symlinkat.c sync.c sync_file_range.c \
-       sync_file_range2.c sysinfo.c syslog.c tee.c threads-execve.c \
+       rt_tgsigqueueinfo--pidns-translation.c run_expect_termsig.c \
+       s390_guarded_storage.c s390_guarded_storage-v.c \
+       s390_pci_mmio_read_write.c s390_runtime_instr.c s390_sthyi.c \
+       s390_sthyi-v.c sched_get_priority_mxx.c \
+       sched_rr_get_interval.c sched_xetaffinity.c \
+       sched_xetaffinity--pidns-translation.c sched_xetattr.c \
+       sched_xetattr--pidns-translation.c sched_xetparam.c \
+       sched_xetparam--pidns-translation.c sched_xetscheduler.c \
+       sched_xetscheduler--pidns-translation.c sched_yield.c \
+       scm_rights.c seccomp-filter.c seccomp-filter-v.c \
+       seccomp-strict.c seccomp_get_action_avail.c select.c \
+       select-P.c semop.c semop-indirect.c semtimedop.c sendfile.c \
+       sendfile64.c set_mempolicy.c set_mempolicy-Xabbrev.c \
+       set_mempolicy-Xraw.c set_mempolicy-Xverbose.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 \
+       setpgrp-exec.c setregid.c setregid32.c setresgid.c \
+       setresgid32.c setresuid.c setresuid32.c setreuid.c \
+       setreuid32.c setrlimit.c setrlimit-Xabbrev.c setrlimit-Xraw.c \
+       setrlimit-Xverbose.c setuid.c setuid32.c shmxt.c shutdown.c \
+       sigaction.c sigaltstack.c siginfo.c signal.c signal_receive.c \
+       signal_receive--pidns-translation.c signalfd4.c sigpending.c \
+       sigprocmask.c sigreturn.c sigsuspend.c sleep.c so_error.c \
+       so_linger.c so_peercred.c so_peercred--pidns-translation.c \
+       so_peercred-Xabbrev.c so_peercred-Xraw.c \
+       so_peercred-Xverbose.c sock_filter-v.c sock_filter-v-Xabbrev.c \
+       sock_filter-v-Xraw.c sock_filter-v-Xverbose.c \
+       sockaddr_xlat-Xabbrev.c sockaddr_xlat-Xraw.c \
+       sockaddr_xlat-Xverbose.c socketcall.c sockopt-sol_netlink.c \
+       sockopt-timestamp.c splice.c $(stack_fcall_SOURCES) \
+       $(stack_fcall_attach_SOURCES) $(stack_fcall_mangled_SOURCES) \
+       stat.c stat64.c statfs.c statfs64.c status-all.c \
+       status-failed.c status-failed-long.c status-failed-status.c \
+       status-none.c status-none-f.c status-none-threads.c \
+       status-successful.c status-successful-long.c \
+       status-successful-status.c status-unfinished.c \
+       status-unfinished-threads.c statx.c strace--strings-in-hex.c \
+       strace--strings-in-hex-all.c \
+       strace--strings-in-hex-non-ascii.c strace-n.c strace-x.c \
+       strace-xx.c swap.c sxetmask.c symlink.c symlinkat.c sync.c \
+       sync_file_range.c sync_file_range2.c sysinfo.c syslog.c \
+       syslog-success.c tee.c tgkill.c tgkill--pidns-translation.c \
+       threads-execve.c threads-execve--quiet-thread-execve.c \
+       threads-execve-q.c threads-execve-qq.c threads-execve-qqq.c \
        time.c timer_create.c timer_xettime.c timerfd_xettime.c \
-       times.c times-fail.c truncate.c truncate64.c ugetrlimit.c \
-       uio.c umask.c umount.c umount2.c umoven-illptr.c umovestr.c \
-       umovestr-illptr.c umovestr2.c umovestr3.c uname.c \
-       unblock_reset_raise.c unix-pair-send-recv.c \
+       times.c times-fail.c tkill.c tkill--pidns-translation.c \
+       tracer_ppid_pgid_sid.c $(trie_test_SOURCES) truncate.c \
+       truncate64.c ugetrlimit.c uio.c umask.c umount.c umount2.c \
+       umoven-illptr.c umovestr.c umovestr-illptr.c umovestr2.c \
+       umovestr3.c umovestr_cached.c umovestr_cached_adjacent.c \
+       uname.c unblock_reset_raise.c unix-pair-send-recv.c \
        unix-pair-sendto-recvfrom.c unlink.c unlinkat.c unshare.c \
        userfaultfd.c ustat.c utime.c utimensat.c utimensat-Xabbrev.c \
        utimensat-Xraw.c utimensat-Xverbose.c utimes.c vfork-f.c \
        vhangup.c vmsplice.c wait4.c wait4-v.c waitid.c waitid-v.c \
        waitpid.c xattr.c xattr-strings.c xet_robust_list.c \
-       xet_thread_area_x86.c xetitimer.c xetpgid.c xetpriority.c \
-       xettimeofday.c zeroargc.c
+       xet_robust_list--pidns-translation.c xet_thread_area_x86.c \
+       xetitimer.c xetpgid.c xetpgid--pidns-translation.c \
+       xetpriority.c xetpriority--pidns-translation.c xettimeofday.c \
+       zeroargc.c
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -3846,9 +5281,11 @@ am__set_TESTS_bases = \
   bases='$(TEST_LOGS)'; \
   bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
   bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
 RECHECK_LOGS = $(TEST_LOGS)
 AM_RECURSIVE_TARGETS = check recheck
-@ENABLE_STACKTRACE_TRUE@am__EXEEXT_2 = strace-k.test $(am__append_1)
+@ENABLE_STACKTRACE_TRUE@am__EXEEXT_2 = strace-k.test strace-k-p.test \
+@ENABLE_STACKTRACE_TRUE@       $(am__append_1)
 TEST_SUITE_LOG = test-suite.log
 TEST_EXTENSIONS = @EXEEXT@ .test
 am__test_logs1 = $(TESTS:=.log)
@@ -3874,17 +5311,22 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
 AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BUILD_EXEEXT = @BUILD_EXEEXT@
 BUILD_OBJEXT = @BUILD_OBJEXT@
-CC = @CC@
+CC = @CC_FOR_MX32@
 CCDEPMODE = @CCDEPMODE@
 CC_FOR_BUILD = @CC_FOR_BUILD@
+CC_FOR_M32 = @CC_FOR_M32@
+CC_FOR_MX32 = @CC_FOR_MX32@
 CFLAGS = @CFLAGS@
 CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
+CFLAGS_FOR_M32 = @CFLAGS_FOR_M32@
+CFLAGS_FOR_MX32 = @CFLAGS_FOR_MX32@
 CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@
 CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@
 CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@
@@ -3895,7 +5337,11 @@ COPYRIGHT_YEAR = @COPYRIGHT_YEAR@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@
+CPPFLAGS_FOR_M32 = @CPPFLAGS_FOR_M32@
+CPPFLAGS_FOR_MX32 = @CPPFLAGS_FOR_MX32@
 CPP_FOR_BUILD = @CPP_FOR_BUILD@
+CPP_FOR_M32 = @CPP_FOR_M32@
+CPP_FOR_MX32 = @CPP_FOR_MX32@
 CYGPATH_W = @CYGPATH_W@
 DEB_CHANGELOGTIME = @DEB_CHANGELOGTIME@
 DEFS = @DEFS@
@@ -3937,7 +5383,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
 PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
-PERL = @PERL@
 RANLIB = @RANLIB@
 READELF = @READELF@
 RPM_CHANGELOGTIME = @RPM_CHANGELOGTIME@
@@ -3956,6 +5401,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CC_FOR_BUILD = @ac_ct_CC_FOR_BUILD@
 am__include = @am__include@
@@ -4029,7 +5475,7 @@ OS = linux
 ARCH = @arch_mx32@
 NATIVE_ARCH = @arch_native@
 MPERS_NAME = mx32
-MPERS_CC_FLAGS = @cc_flags_mx32@
+MPERS_CC_FLAGS = @CFLAGS_FOR_MX32@ @cc_flags_mx32@
 ARCH_MFLAGS = -DMPERS_IS_$(MPERS_NAME) $(MPERS_CC_FLAGS)
 AM_CFLAGS = $(WARN_CFLAGS)
 AM_CPPFLAGS = $(ARCH_MFLAGS) \
@@ -4046,6 +5492,7 @@ AM_CPPFLAGS = $(ARCH_MFLAGS) \
 AM_LDFLAGS = $(ARCH_MFLAGS)
 libtests_a_SOURCES = \
        create_nl_socket.c \
+       create_tmpfile.c \
        errno2name.c \
        error_msg.c \
        fill_memory.c \
@@ -4057,15 +5504,21 @@ libtests_a_SOURCES = \
        inode_of_sockfd.c \
        libmmsg.c \
        libsocketcall.c \
+       lock_file.c \
        overflowuid.c \
+       pidns.c \
+       pidns.h \
        pipe_maxfd.c \
        print_quoted_string.c \
        print_time.c \
        printflags.c \
-       printxval.c \
+       printxval-Xabbrev.c \
+       printxval-Xraw.c \
+       printxval-Xverbose.c \
        signal2name.c \
        skip_unavailable.c \
        sprintrc.c \
+       status.c \
        tail_alloc.c \
        test_netlink.h \
        test_nlattr.h \
@@ -4075,6 +5528,7 @@ libtests_a_SOURCES = \
        test_ucopy.h \
        tests.h \
        tprintf.c \
+       xmalloc_for_tests.c \
        # end of libtests_a_SOURCES
 
 libtests_a_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
@@ -4094,10 +5548,6 @@ PURE_EXECUTABLES = \
   aio_pgetevents \
   alarm \
   bpf \
-  bpf-obj_get_info_by_fd \
-  bpf-obj_get_info_by_fd-prog \
-  bpf-obj_get_info_by_fd-prog-v \
-  bpf-obj_get_info_by_fd-v \
   bpf-v \
   brk \
   btrfs \
@@ -4109,13 +5559,34 @@ PURE_EXECUTABLES = \
   clock_adjtime \
   clock_nanosleep \
   clock_xettime \
+  clone-flags \
+  clone3 \
+  clone3-Xabbrev \
+  clone3-Xraw \
+  clone3-Xverbose \
+  close_range \
+  close_range-P \
+  close_range-y \
+  close_range-yy \
   copy_file_range \
   creat \
   delete_module \
+  dev--decode-fds-dev \
+  dev--decode-fds-path \
+  dev--decode-fds-socket \
   dev-yy \
   dup \
+  dup-P \
+  dup-y \
+  dup-yy \
   dup2 \
+  dup2-P \
+  dup2-y \
+  dup2-yy \
   dup3 \
+  dup3-P \
+  dup3-y \
+  dup3-yy \
   epoll_create \
   epoll_create1 \
   epoll_ctl \
@@ -4126,6 +5597,13 @@ PURE_EXECUTABLES = \
   execve \
   execveat \
   faccessat \
+  faccessat-P \
+  faccessat-y \
+  faccessat-yy \
+  faccessat2 \
+  faccessat2-P \
+  faccessat2-y \
+  faccessat2-yy \
   fadvise64 \
   fadvise64_64 \
   fallocate \
@@ -4148,6 +5626,12 @@ PURE_EXECUTABLES = \
   file_ioctl \
   finit_module \
   flock \
+  fsconfig \
+  fsconfig-P \
+  fsmount \
+  fsopen \
+  fspick \
+  fspick-P \
   fstat \
   fstat-Xabbrev \
   fstat-Xraw \
@@ -4168,7 +5652,9 @@ PURE_EXECUTABLES = \
   getcpu \
   getcwd \
   getdents \
+  getdents-v \
   getdents64 \
+  getdents64-v \
   getegid \
   getegid32 \
   geteuid \
@@ -4192,12 +5678,17 @@ PURE_EXECUTABLES = \
   getsockname \
   getuid \
   getuid32 \
-  getxxid \
+  getxgid \
+  getxpid \
+  getxuid \
   group_req \
   inet-cmsg \
   init_module \
   inotify \
+  inotify_init \
+  inotify_init-y \
   inotify_init1 \
+  inotify_init1-y \
   io_uring_enter \
   io_uring_register \
   io_uring_setup \
@@ -4205,6 +5696,21 @@ PURE_EXECUTABLES = \
   ioctl_block \
   ioctl_dm \
   ioctl_evdev \
+  ioctl_evdev-Xabbrev \
+  ioctl_evdev-Xraw \
+  ioctl_evdev-Xverbose \
+  ioctl_evdev-v \
+  ioctl_evdev-v-Xabbrev \
+  ioctl_evdev-v-Xraw \
+  ioctl_evdev-v-Xverbose \
+  ioctl_hdio \
+  ioctl_hdio-Xabbrev \
+  ioctl_hdio-Xraw \
+  ioctl_hdio-Xverbose \
+  ioctl_hdio-v \
+  ioctl_hdio-v-Xabbrev \
+  ioctl_hdio-v-Xraw \
+  ioctl_hdio-v-Xverbose \
   ioctl_inotify \
   ioctl_kvm_run \
   ioctl_kvm_run-v \
@@ -4220,8 +5726,17 @@ PURE_EXECUTABLES = \
   ioctl_sg_io_v3 \
   ioctl_sg_io_v4 \
   ioctl_sock_gifconf \
+  ioctl_tee \
   ioctl_uffdio \
   ioctl_v4l2 \
+  ioctl_v4l2-Xabbrev \
+  ioctl_v4l2-Xraw \
+  ioctl_v4l2-Xverbose \
+  ioctl_v4l2-v \
+  ioctl_v4l2-v-Xabbrev \
+  ioctl_v4l2-v-Xraw \
+  ioctl_v4l2-v-Xverbose \
+  ioctl_watchdog \
   ioperm \
   iopl \
   ioprio \
@@ -4270,7 +5785,12 @@ PURE_EXECUTABLES = \
   lstat \
   lstat64 \
   madvise \
+  maybe_switch_current_tcp \
+  maybe_switch_current_tcp--quiet-thread-execve \
   mbind \
+  mbind-Xabbrev \
+  mbind-Xraw \
+  mbind-Xverbose \
   membarrier \
   memfd_create \
   memfd_create-Xabbrev \
@@ -4300,6 +5820,8 @@ PURE_EXECUTABLES = \
   mount-Xabbrev \
   mount-Xraw \
   mount-Xverbose \
+  move_mount \
+  move_mount-P \
   move_pages \
   move_pages-Xabbrev \
   move_pages-Xraw \
@@ -4312,6 +5834,10 @@ PURE_EXECUTABLES = \
   msg_name \
   munlockall \
   nanosleep \
+  net--decode-fds-dev-netlink \
+  net--decode-fds-none-netlink \
+  net--decode-fds-path-netlink \
+  net--decode-fds-socket-netlink \
   net-icmp_filter \
   net-packet_mreq \
   net-packet_mreq-Xabbrev \
@@ -4391,7 +5917,19 @@ PURE_EXECUTABLES = \
   oldselect-efault \
   oldstat \
   open \
+  open_tree \
+  open_tree-P \
   openat \
+  openat2 \
+  openat2-Xabbrev \
+  openat2-Xraw \
+  openat2-Xverbose \
+  openat2-v \
+  openat2-v-y \
+  openat2-v-y-Xabbrev \
+  openat2-v-y-Xraw \
+  openat2-v-y-Xverbose \
+  openat2-y \
   osf_utimes \
   pause \
   perf_event_open \
@@ -4399,6 +5937,16 @@ PURE_EXECUTABLES = \
   personality-Xabbrev \
   personality-Xraw \
   personality-Xverbose \
+  pidfd_getfd \
+  pidfd_getfd-y \
+  pidfd_getfd-yy \
+  pidfd_open \
+  pidfd_open--decode-fd-path \
+  pidfd_open--decode-fd-pidfd \
+  pidfd_open--decode-fd-socket \
+  pidfd_open-P \
+  pidfd_open-y \
+  pidfd_open-yy \
   pidfd_send_signal \
   pipe \
   pipe2 \
@@ -4406,9 +5954,7 @@ PURE_EXECUTABLES = \
   pkey_free \
   pkey_mprotect \
   poll \
-  poll-P \
   ppoll \
-  ppoll-P \
   prctl-arg2-intptr \
   prctl-dumpable \
   prctl-name \
@@ -4450,7 +5996,9 @@ PURE_EXECUTABLES = \
   readlinkat \
   readv \
   reboot \
+  recv-MSG_TRUNC \
   recvfrom \
+  recvfrom-MSG_TRUNC \
   recvmmsg-timeout \
   recvmsg \
   remap_file_pages \
@@ -4488,9 +6036,14 @@ PURE_EXECUTABLES = \
   seccomp_get_action_avail \
   select \
   semop \
+  semop-indirect \
+  semtimedop \
   sendfile \
   sendfile64 \
   set_mempolicy \
+  set_mempolicy-Xabbrev \
+  set_mempolicy-Xraw \
+  set_mempolicy-Xverbose \
   setdomainname \
   setfsgid \
   setfsgid32 \
@@ -4548,7 +6101,23 @@ PURE_EXECUTABLES = \
   stat64 \
   statfs \
   statfs64 \
+  status-all \
+  status-failed \
+  status-failed-long \
+  status-failed-status \
+  status-none \
+  status-none-f \
+  status-successful \
+  status-successful-long \
+  status-successful-status \
+  status-unfinished \
   statx \
+  strace--strings-in-hex \
+  strace--strings-in-hex-all \
+  strace--strings-in-hex-non-ascii \
+  strace-n \
+  strace-x \
+  strace-xx \
   swap \
   sxetmask \
   symlink \
@@ -4559,12 +6128,14 @@ PURE_EXECUTABLES = \
   sysinfo \
   syslog \
   tee \
+  tgkill \
   time \
   timer_create \
   timer_xettime \
   timerfd_xettime \
   times \
   times-fail \
+  tkill \
   truncate \
   truncate64 \
   ugetrlimit \
@@ -4577,6 +6148,8 @@ PURE_EXECUTABLES = \
   umovestr-illptr \
   umovestr2 \
   umovestr3 \
+  umovestr_cached \
+  umovestr_cached_adjacent \
   uname \
   unlink \
   unlinkat \
@@ -4614,6 +6187,8 @@ ftruncate64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 localtime_LDADD = $(clock_LIBS) $(LDADD)
 looping_threads_LDADD = -lpthread $(LDADD)
 lstat64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
+maybe_switch_current_tcp_LDADD = -lpthread $(LDADD)
+maybe_switch_current_tcp__quiet_thread_execve_LDADD = -lpthread $(LDADD)
 mmap64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 mmap64_Xabbrev_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 mmap64_Xraw_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
@@ -4627,17 +6202,30 @@ preadv_pwritev_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 pwritev_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 stat64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 statfs_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
+status_none_threads_LDADD = -lpthread $(LDADD)
+status_unfinished_threads_LDADD = -lpthread $(LDADD)
 threads_execve_LDADD = -lpthread $(clock_LIBS) $(LDADD)
+threads_execve__quiet_thread_execve_LDADD = -lpthread $(clock_LIBS) $(LDADD)
+threads_execve_q_LDADD = -lpthread $(clock_LIBS) $(LDADD)
+threads_execve_qq_LDADD = -lpthread $(clock_LIBS) $(LDADD)
+threads_execve_qqq_LDADD = -lpthread $(clock_LIBS) $(LDADD)
 times_LDADD = $(clock_LIBS) $(LDADD)
 truncate64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 uio_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 stack_fcall_SOURCES = stack-fcall.c \
        stack-fcall-0.c stack-fcall-1.c stack-fcall-2.c stack-fcall-3.c
 
+stack_fcall_attach_SOURCES = stack-fcall-attach.c \
+       stack-fcall-0.c stack-fcall-1.c stack-fcall-2.c stack-fcall-3.c
+
 stack_fcall_mangled_SOURCES = stack-fcall-mangled.c \
        stack-fcall-mangled-0.c stack-fcall-mangled-1.c \
        stack-fcall-mangled-2.c stack-fcall-mangled-3.c
 
+trie_test_SOURCES = trie_test.c trie_for_tests.c
+trie_test_CPPFLAGS = $(AM_CPPFLAGS) $(CODE_COVERAGE_CPPFLAGS)
+trie_test_CFLAGS = $(AM_CFLAGS) $(CODE_COVERAGE_CFLAGS)
+trie_test_LDADD = $(LDADD) $(CODE_COVERAGE_LIBS)
 
 # Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in; do not edit.
 GEN_TESTS = _newselect.gen.test _newselect-P.gen.test accept.gen.test \
@@ -4651,50 +6239,114 @@ GEN_TESTS = _newselect.gen.test _newselect-P.gen.test accept.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 \
-       dev-yy.gen.test dup.gen.test dup2.gen.test dup3.gen.test \
+       clone3.gen.test clone3-Xabbrev.gen.test clone3-Xraw.gen.test \
+       clone3-Xverbose.gen.test clone3-success-Xabbrev.gen.test \
+       clone3-success-Xraw.gen.test clone3-success-Xverbose.gen.test \
+       clone_parent.gen.test clone_parent--quiet-exit.gen.test \
+       clone_parent-q.gen.test clone_parent-qq.gen.test \
+       clone_ptrace--quiet-attach.gen.test \
+       clone_ptrace--quiet-exit.gen.test clone_ptrace-q.gen.test \
+       clone_ptrace-qq.gen.test close_range.gen.test \
+       close_range-P.gen.test close_range-y.gen.test \
+       close_range-yy.gen.test copy_file_range.gen.test \
+       creat.gen.test delete_module.gen.test \
+       dev--decode-fds-dev.gen.test dev--decode-fds-path.gen.test \
+       dev--decode-fds-socket.gen.test dev-yy.gen.test dup.gen.test \
+       dup-P.gen.test dup-y.gen.test dup-yy.gen.test dup2.gen.test \
+       dup2-P.gen.test dup2-y.gen.test dup2-yy.gen.test dup3.gen.test \
+       dup3-P.gen.test dup3-y.gen.test dup3-yy.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 \
+       faccessat-P.gen.test faccessat-y.gen.test \
+       faccessat-yy.gen.test faccessat2-P.gen.test \
+       faccessat2-y.gen.test faccessat2-yy.gen.test \
+       fadvise64_64.gen.test fallocate.gen.test \
        fanotify_init.gen.test fanotify_mark.gen.test \
        fanotify_mark-Xabbrev.gen.test fanotify_mark-Xraw.gen.test \
        fanotify_mark-Xverbose.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 fstat-Xabbrev.gen.test \
-       fstat-Xraw.gen.test fstat-Xverbose.gen.test fstat64.gen.test \
+       fcntl--pidns-translation.gen.test fcntl64.gen.test \
+       fcntl64--pidns-translation.gen.test fdatasync.gen.test \
+       file_handle.gen.test file_ioctl.gen.test \
+       filter_seccomp.gen.test filter_seccomp-flag.gen.test \
+       finit_module.gen.test flock.gen.test fork-f.gen.test \
+       fsconfig.gen.test fsconfig-P.gen.test fsmount.gen.test \
+       fsopen.gen.test fspick.gen.test fspick-P.gen.test \
+       fstat.gen.test fstat-Xabbrev.gen.test fstat-Xraw.gen.test \
+       fstat-Xverbose.gen.test fstat64.gen.test \
        fstat64-Xabbrev.gen.test fstat64-Xraw.gen.test \
        fstat64-Xverbose.gen.test fstatat64.gen.test fstatfs.gen.test \
        fstatfs64.gen.test fsync.gen.test fsync-y.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 \
+       getdents.gen.test getdents-v.gen.test getdents64.gen.test \
+       getdents64-v.gen.test getegid.gen.test getegid-creds.gen.test \
+       getegid32.gen.test getegid32-creds.gen.test geteuid.gen.test \
+       geteuid-creds.gen.test geteuid32.gen.test \
+       geteuid32-creds.gen.test getgid.gen.test getgid-creds.gen.test \
+       getgid32.gen.test getgid32-creds.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 io_uring_enter.gen.test \
-       io_uring_register.gen.test io_uring_setup.gen.test \
-       ioctl_block.gen.test ioctl_dm.gen.test ioctl_dm-v.gen.test \
-       ioctl_evdev.gen.test ioctl_evdev-v.gen.test \
-       ioctl_inotify.gen.test ioctl_kvm_run.gen.test \
-       ioctl_kvm_run-v.gen.test ioctl_kvm_run_auxstr_vcpu.gen.test \
-       ioctl_loop.gen.test ioctl_loop-nv.gen.test \
-       ioctl_loop-v.gen.test ioctl_mtd.gen.test ioctl_nbd.gen.test \
-       ioctl_nsfs.gen.test ioctl_perf.gen.test ioctl_ptp.gen.test \
-       ioctl_random.gen.test ioctl_rtc.gen.test ioctl_rtc-v.gen.test \
-       ioctl_scsi.gen.test ioctl_sg_io_v3.gen.test \
-       ioctl_sg_io_v4.gen.test ioctl_sock_gifconf.gen.test \
-       ioctl_uffdio.gen.test ioctl_v4l2.gen.test ioperm.gen.test \
-       iopl.gen.test ioprio.gen.test ioprio-Xabbrev.gen.test \
+       getpgrp--pidns-translation.gen.test getpid.gen.test \
+       getpid--pidns-translation.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 \
+       getsid--pidns-translation.gen.test getsockname.gen.test \
+       gettid.gen.test getuid-creds.gen.test getuid32.gen.test \
+       getuid32-creds.gen.test getxgid.gen.test getxpid.gen.test \
+       getxuid.gen.test group_req.gen.test inet-cmsg.gen.test \
+       init_module.gen.test inotify.gen.test inotify_init.gen.test \
+       inotify_init1.gen.test inotify_init1-y.gen.test \
+       io_uring_enter.gen.test io_uring_register.gen.test \
+       io_uring_setup.gen.test ioctl_block.gen.test ioctl_dm.gen.test \
+       ioctl_dm-v.gen.test ioctl_evdev.gen.test \
+       ioctl_evdev-Xabbrev.gen.test ioctl_evdev-Xraw.gen.test \
+       ioctl_evdev-Xverbose.gen.test ioctl_evdev-v.gen.test \
+       ioctl_evdev-v-Xabbrev.gen.test ioctl_evdev-v-Xraw.gen.test \
+       ioctl_evdev-v-Xverbose.gen.test \
+       ioctl_evdev-success-Xabbrev.gen.test \
+       ioctl_evdev-success-Xraw.gen.test \
+       ioctl_evdev-success-Xverbose.gen.test \
+       ioctl_evdev-success-v.gen.test \
+       ioctl_evdev-success-v-Xabbrev.gen.test \
+       ioctl_evdev-success-v-Xraw.gen.test \
+       ioctl_evdev-success-v-Xverbose.gen.test ioctl_hdio.gen.test \
+       ioctl_hdio-Xabbrev.gen.test ioctl_hdio-Xraw.gen.test \
+       ioctl_hdio-Xverbose.gen.test ioctl_hdio-v.gen.test \
+       ioctl_hdio-v-Xabbrev.gen.test ioctl_hdio-v-Xraw.gen.test \
+       ioctl_hdio-v-Xverbose.gen.test ioctl_hdio-success.gen.test \
+       ioctl_hdio-success-Xabbrev.gen.test \
+       ioctl_hdio-success-Xraw.gen.test \
+       ioctl_hdio-success-Xverbose.gen.test \
+       ioctl_hdio-success-v.gen.test \
+       ioctl_hdio-success-v-Xabbrev.gen.test \
+       ioctl_hdio-success-v-Xraw.gen.test \
+       ioctl_hdio-success-v-Xverbose.gen.test ioctl_inotify.gen.test \
+       ioctl_kvm_run.gen.test ioctl_kvm_run-v.gen.test \
+       ioctl_kvm_run_auxstr_vcpu.gen.test ioctl_loop.gen.test \
+       ioctl_loop-nv.gen.test ioctl_loop-v.gen.test \
+       ioctl_mtd.gen.test ioctl_nbd.gen.test ioctl_nsfs.gen.test \
+       ioctl_perf.gen.test ioctl_perf-success.gen.test \
+       ioctl_ptp.gen.test ioctl_random.gen.test ioctl_rtc.gen.test \
+       ioctl_rtc-v.gen.test ioctl_scsi.gen.test \
+       ioctl_sg_io_v3.gen.test ioctl_sg_io_v4.gen.test \
+       ioctl_sock_gifconf.gen.test ioctl_tee.gen.test \
+       ioctl_uffdio.gen.test ioctl_v4l2.gen.test \
+       ioctl_v4l2-Xabbrev.gen.test ioctl_v4l2-Xraw.gen.test \
+       ioctl_v4l2-Xverbose.gen.test ioctl_v4l2-v.gen.test \
+       ioctl_v4l2-v-Xabbrev.gen.test ioctl_v4l2-v-Xraw.gen.test \
+       ioctl_v4l2-v-Xverbose.gen.test ioctl_v4l2-success.gen.test \
+       ioctl_v4l2-success-Xabbrev.gen.test \
+       ioctl_v4l2-success-Xraw.gen.test \
+       ioctl_v4l2-success-Xverbose.gen.test \
+       ioctl_v4l2-success-v.gen.test \
+       ioctl_v4l2-success-v-Xabbrev.gen.test \
+       ioctl_v4l2-success-v-Xraw.gen.test \
+       ioctl_v4l2-success-v-Xverbose.gen.test ioctl_watchdog.gen.test \
+       ioperm.gen.test iopl.gen.test ioprio.gen.test \
+       ioprio--pidns-translation.gen.test ioprio-Xabbrev.gen.test \
        ioprio-Xraw.gen.test ioprio-Xverbose.gen.test ip_mreq.gen.test \
        ipc.gen.test ipc_msg.gen.test ipc_msg-Xabbrev.gen.test \
        ipc_msg-Xraw.gen.test ipc_msg-Xverbose.gen.test \
@@ -4704,34 +6356,47 @@ GEN_TESTS = _newselect.gen.test _newselect-P.gen.test accept.gen.test \
        ipc_sem-Xverbose.gen.test ipc_shm.gen.test \
        ipc_shm-Xabbrev.gen.test ipc_shm-Xraw.gen.test \
        ipc_shm-Xverbose.gen.test kcmp.gen.test kcmp-y.gen.test \
-       kern_features.gen.test kernel_version.gen.test \
-       kernel_version-Xabbrev.gen.test kernel_version-Xraw.gen.test \
-       kernel_version-Xverbose.gen.test kexec_file_load.gen.test \
-       kexec_load.gen.test keyctl.gen.test keyctl-Xabbrev.gen.test \
-       keyctl-Xraw.gen.test keyctl-Xverbose.gen.test kill.gen.test \
+       kcmp-y--pidns-translation.gen.test kern_features.gen.test \
+       kernel_version.gen.test kernel_version-Xabbrev.gen.test \
+       kernel_version-Xraw.gen.test kernel_version-Xverbose.gen.test \
+       kexec_file_load.gen.test kexec_load.gen.test keyctl.gen.test \
+       keyctl-Xabbrev.gen.test keyctl-Xraw.gen.test \
+       keyctl-Xverbose.gen.test kill.gen.test \
+       kill--pidns-translation.gen.test ksysent.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 \
-       memfd_create-Xabbrev.gen.test memfd_create-Xraw.gen.test \
-       memfd_create-Xverbose.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 \
+       lstat64.gen.test madvise.gen.test \
+       maybe_switch_current_tcp.gen.test \
+       maybe_switch_current_tcp--quiet-thread-execve.gen.test \
+       mbind.gen.test mbind-Xabbrev.gen.test mbind-Xraw.gen.test \
+       mbind-Xverbose.gen.test membarrier.gen.test \
+       memfd_create.gen.test memfd_create-Xabbrev.gen.test \
+       memfd_create-Xraw.gen.test memfd_create-Xverbose.gen.test \
+       migrate_pages.gen.test \
+       migrate_pages--pidns-translation.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 mmap-Xabbrev.gen.test mmap-Xraw.gen.test \
        mmap-Xverbose.gen.test mmap64.gen.test mmap64-Xabbrev.gen.test \
        mmap64-Xraw.gen.test mmap64-Xverbose.gen.test mmsg.gen.test \
        mmsg-silent.gen.test mmsg_name.gen.test mmsg_name-v.gen.test \
        modify_ldt.gen.test mount.gen.test mount-Xabbrev.gen.test \
        mount-Xraw.gen.test mount-Xverbose.gen.test \
-       move_pages.gen.test move_pages-Xabbrev.gen.test \
-       move_pages-Xraw.gen.test move_pages-Xverbose.gen.test \
-       mq.gen.test mq_sendrecv.gen.test mq_sendrecv-read.gen.test \
+       move_mount.gen.test move_mount-P.gen.test move_pages.gen.test \
+       move_pages-Xabbrev.gen.test move_pages-Xraw.gen.test \
+       move_pages-Xverbose.gen.test \
+       move_pages--pidns-translation.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-packet_mreq.gen.test net-packet_mreq-Xabbrev.gen.test \
-       net-packet_mreq-Xraw.gen.test \
+       nanosleep.gen.test net--decode-fds-dev-netlink.gen.test \
+       net--decode-fds-none-netlink.gen.test \
+       net--decode-fds-path-netlink.gen.test \
+       net--decode-fds-socket-netlink.gen.test \
+       net-icmp_filter.gen.test net-packet_mreq.gen.test \
+       net-packet_mreq-Xabbrev.gen.test net-packet_mreq-Xraw.gen.test \
        net-packet_mreq-Xverbose.gen.test net-sockaddr.gen.test \
+       net-sockaddr--pidns-translation.gen.test \
        net-tpacket_req.gen.test net-tpacket_stats.gen.test \
        net-yy-inet6.gen.test netlink_audit.gen.test \
        netlink_crypto.gen.test netlink_generic.gen.test \
@@ -4750,7 +6415,8 @@ GEN_TESTS = _newselect.gen.test _newselect-P.gen.test accept.gen.test \
        nlattr_ifaddrmsg.gen.test nlattr_ifinfomsg.gen.test \
        nlattr_ifla_af_spec.gen.test nlattr_ifla_brport.gen.test \
        nlattr_ifla_linkinfo.gen.test nlattr_ifla_port.gen.test \
-       nlattr_ifla_xdp.gen.test nlattr_inet_diag_msg.gen.test \
+       nlattr_ifla_xdp.gen.test nlattr_ifla_xdp-y.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 \
@@ -4767,31 +6433,50 @@ GEN_TESTS = _newselect.gen.test _newselect-P.gen.test accept.gen.test \
        old_mmap-v-none.gen.test oldfstat.gen.test oldlstat.gen.test \
        oldselect.gen.test oldselect-P.gen.test \
        oldselect-efault.gen.test oldselect-efault-P.gen.test \
-       oldstat.gen.test open.gen.test openat.gen.test \
-       orphaned_process_group.gen.test osf_utimes.gen.test \
-       pause.gen.test perf_event_open.gen.test \
+       oldstat.gen.test open.gen.test open_tree.gen.test \
+       open_tree-P.gen.test openat.gen.test openat2.gen.test \
+       openat2-Xabbrev.gen.test openat2-Xraw.gen.test \
+       openat2-Xverbose.gen.test openat2-v.gen.test \
+       openat2-v-y.gen.test openat2-v-y-Xabbrev.gen.test \
+       openat2-v-y-Xraw.gen.test openat2-v-y-Xverbose.gen.test \
+       openat2-y.gen.test orphaned_process_group.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 personality-Xabbrev.gen.test \
        personality-Xraw.gen.test personality-Xverbose.gen.test \
-       pidfd_send_signal.gen.test pipe2.gen.test pkey_alloc.gen.test \
-       pkey_free.gen.test pkey_mprotect.gen.test ppoll.gen.test \
-       ppoll-P.gen.test ppoll-v.gen.test pread64-pwrite64.gen.test \
-       preadv.gen.test preadv-pwritev.gen.test \
-       preadv2-pwritev2.gen.test printpath-umovestr.gen.test \
+       pidfd_getfd.gen.test pidfd_getfd-y.gen.test \
+       pidfd_getfd-yy.gen.test pidfd_open.gen.test \
+       pidfd_open--decode-fd-path.gen.test \
+       pidfd_open--decode-fd-pidfd.gen.test \
+       pidfd_open--decode-fd-socket.gen.test pidfd_open-P.gen.test \
+       pidfd_open-y.gen.test pidfd_open-yy.gen.test \
+       pidfd_open--pidns-translation.gen.test \
+       pidfd_send_signal.gen.test \
+       pidfd_send_signal--pidns-translation.gen.test pipe2.gen.test \
+       pkey_alloc.gen.test pkey_free.gen.test pkey_mprotect.gen.test \
+       ppoll.gen.test ppoll-P.gen.test ppoll-v.gen.test \
+       pread64-pwrite64.gen.test preadv.gen.test \
+       preadv-pwritev.gen.test preadv2-pwritev2.gen.test \
+       printpath-umovestr.gen.test \
        printpath-umovestr-peekdata.gen.test \
        printpath-umovestr-undumpable.gen.test \
        printsignal-Xabbrev.gen.test printsignal-Xraw.gen.test \
        printsignal-Xverbose.gen.test printstr.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 \
+       prlimit64--pidns-translation.gen.test \
+       process_vm_readv.gen.test \
+       process_vm_readv--pidns-translation.gen.test \
+       process_vm_writev.gen.test \
+       process_vm_writev--pidns-translation.gen.test \
        pselect6.gen.test ptrace.gen.test ptrace_syscall_info.gen.test \
        pwritev.gen.test quotactl.gen.test quotactl-Xabbrev.gen.test \
        quotactl-Xraw.gen.test quotactl-Xverbose.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 \
+       reboot.gen.test recv-MSG_TRUNC.gen.test recvfrom.gen.test \
+       recvfrom-MSG_TRUNC.gen.test recvmmsg-timeout.gen.test \
        recvmsg.gen.test regex.gen.test remap_file_pages.gen.test \
        remap_file_pages-Xabbrev.gen.test \
        remap_file_pages-Xraw.gen.test \
@@ -4799,72 +6484,133 @@ GEN_TESTS = _newselect.gen.test _newselect-P.gen.test accept.gen.test \
        renameat.gen.test renameat2.gen.test request_key.gen.test \
        riscv_flush_icache.gen.test rmdir.gen.test \
        rt_sigpending.gen.test rt_sigprocmask.gen.test \
-       rt_sigqueueinfo.gen.test rt_sigreturn.gen.test \
-       rt_sigsuspend.gen.test rt_sigtimedwait.gen.test \
-       rt_tgsigqueueinfo.gen.test s390_guarded_storage.gen.test \
-       s390_guarded_storage-v.gen.test \
+       rt_sigqueueinfo.gen.test \
+       rt_sigqueueinfo--pidns-translation.gen.test \
+       rt_sigreturn.gen.test rt_sigsuspend.gen.test \
+       rt_sigtimedwait.gen.test rt_tgsigqueueinfo.gen.test \
+       rt_tgsigqueueinfo--pidns-translation.gen.test \
+       s390_guarded_storage.gen.test s390_guarded_storage-v.gen.test \
        s390_pci_mmio_read_write.gen.test s390_runtime_instr.gen.test \
        s390_sthyi.gen.test s390_sthyi-v.gen.test sched.gen.test \
        sched_get_priority_mxx.gen.test sched_rr_get_interval.gen.test \
-       sched_xetaffinity.gen.test sched_xetattr.gen.test \
-       sched_xetparam.gen.test sched_xetscheduler.gen.test \
+       sched_xetaffinity.gen.test \
+       sched_xetaffinity--pidns-translation.gen.test \
+       sched_xetattr.gen.test \
+       sched_xetattr--pidns-translation.gen.test \
+       sched_xetparam.gen.test \
+       sched_xetparam--pidns-translation.gen.test \
+       sched_xetscheduler.gen.test \
+       sched_xetscheduler--pidns-translation.gen.test \
        sched_yield.gen.test seccomp-filter.gen.test \
        seccomp-filter-v.gen.test seccomp_get_action_avail.gen.test \
        select.gen.test select-P.gen.test semop.gen.test \
-       sendfile.gen.test sendfile64.gen.test set_mempolicy.gen.test \
-       setdomainname.gen.test setfsgid.gen.test setfsgid32.gen.test \
-       setfsuid.gen.test setfsuid32.gen.test setgid.gen.test \
-       setgid32.gen.test setgroups.gen.test setgroups32.gen.test \
-       sethostname.gen.test setns.gen.test setregid.gen.test \
-       setregid32.gen.test setresgid.gen.test setresgid32.gen.test \
-       setresuid.gen.test setresuid32.gen.test setreuid.gen.test \
-       setreuid32.gen.test setrlimit.gen.test \
-       setrlimit-Xabbrev.gen.test setrlimit-Xraw.gen.test \
-       setrlimit-Xverbose.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_error.gen.test \
-       so_linger.gen.test so_peercred.gen.test \
-       so_peercred-Xabbrev.gen.test so_peercred-Xraw.gen.test \
-       so_peercred-Xverbose.gen.test sock_filter-v.gen.test \
+       semop-indirect.gen.test semtimedop.gen.test sendfile.gen.test \
+       sendfile64.gen.test set_mempolicy.gen.test \
+       set_mempolicy-Xabbrev.gen.test set_mempolicy-Xraw.gen.test \
+       set_mempolicy-Xverbose.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 setrlimit-Xabbrev.gen.test \
+       setrlimit-Xraw.gen.test setrlimit-Xverbose.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 \
+       signal_receive--pidns-translation.gen.test signalfd4.gen.test \
+       sigpending.gen.test sigprocmask.gen.test sigreturn.gen.test \
+       sigsuspend.gen.test so_error.gen.test so_linger.gen.test \
+       so_peercred.gen.test so_peercred-Xabbrev.gen.test \
+       so_peercred-Xraw.gen.test so_peercred-Xverbose.gen.test \
+       so_peercred--pidns-translation.gen.test sock_filter-v.gen.test \
        sock_filter-v-Xabbrev.gen.test sock_filter-v-Xraw.gen.test \
        sock_filter-v-Xverbose.gen.test sockaddr_xlat-Xabbrev.gen.test \
        sockaddr_xlat-Xraw.gen.test sockaddr_xlat-Xverbose.gen.test \
        socketcall.gen.test sockopt-sol_netlink.gen.test \
        sockopt-timestamp.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 \
+       status-all.gen.test status-failed.gen.test \
+       status-failed-long.gen.test status-failed-status.gen.test \
+       status-none.gen.test status-successful.gen.test \
+       status-successful-long.gen.test \
+       status-successful-status.gen.test status-unfinished.gen.test \
+       statx.gen.test strace--absolute-timestamps.gen.test \
+       strace--absolute-timestamps-format-time.gen.test \
+       strace--absolute-timestamps-format-time-precision-s.gen.test \
+       strace--absolute-timestamps-format-time-precision-ms.gen.test \
+       strace--absolute-timestamps-format-time-precision-us.gen.test \
+       strace--absolute-timestamps-format-time-precision-ns.gen.test \
+       strace--absolute-timestamps-format-unix-precision-s.gen.test \
+       strace--absolute-timestamps-format-unix-precision-ms.gen.test \
+       strace--absolute-timestamps-format-unix-precision-us.gen.test \
+       strace--absolute-timestamps-format-unix-precision-ns.gen.test \
+       strace--follow-forks-output-separately.gen.test \
+       strace--relative-timestamps.gen.test \
+       strace--relative-timestamps-s.gen.test \
+       strace--relative-timestamps-ms.gen.test \
+       strace--relative-timestamps-us.gen.test \
+       strace--relative-timestamps-ns.gen.test \
+       strace--syscall-times.gen.test \
+       strace--syscall-times-s.gen.test \
+       strace--syscall-times-ms.gen.test \
+       strace--syscall-times-us.gen.test \
+       strace--syscall-times-ns.gen.test \
+       strace--strings-in-hex.gen.test \
+       strace--strings-in-hex-all.gen.test \
+       strace--strings-in-hex-non-ascii.gen.test \
+       strace--timestamps.gen.test strace--timestamps-time.gen.test \
+       strace--timestamps-time-s.gen.test \
+       strace--timestamps-time-ms.gen.test \
+       strace--timestamps-time-us.gen.test \
+       strace--timestamps-time-ns.gen.test \
+       strace--timestamps-unix-s.gen.test \
+       strace--timestamps-unix-ms.gen.test \
+       strace--timestamps-unix-us.gen.test \
+       strace--timestamps-unix-ns.gen.test strace-n.gen.test \
+       strace-x.gen.test strace-xx.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 tgkill.gen.test \
+       tgkill--pidns-translation.gen.test \
+       threads-execve--quiet-thread-execve.gen.test \
+       threads-execve-q.gen.test threads-execve-qq.gen.test \
+       threads-execve-qqq.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_personality_32.gen.test \
-       trace_personality_64.gen.test \
+       tkill.gen.test tkill--pidns-translation.gen.test \
+       trace_clock.gen.test trace_creds.gen.test trace_fstat.gen.test \
+       trace_fstatfs.gen.test trace_lstat.gen.test \
+       trace_personality_32.gen.test trace_personality_64.gen.test \
        trace_personality_regex_32.gen.test \
        trace_personality_regex_64.gen.test \
        trace_personality_regex_x32.gen.test \
        trace_personality_x32.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 utimensat-Xabbrev.gen.test \
-       utimensat-Xraw.gen.test utimensat-Xverbose.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 \
+       trie_test.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 \
+       umovestr_cached_adjacent.gen.test unlink.gen.test \
+       unlinkat.gen.test unshare.gen.test userfaultfd.gen.test \
+       ustat.gen.test utime.gen.test utimensat.gen.test \
+       utimensat-Xabbrev.gen.test utimensat-Xraw.gen.test \
+       utimensat-Xverbose.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 \
+       xet_robust_list--pidns-translation.gen.test xetitimer.gen.test \
+       xetpgid.gen.test xetpgid--pidns-translation.gen.test \
+       xetpriority.gen.test xetpriority--pidns-translation.gen.test \
        xettimeofday.gen.test
 @ENABLE_STACKTRACE_FALSE@STACKTRACE_TESTS = 
 @ENABLE_STACKTRACE_TRUE@STACKTRACE_TESTS = strace-k.test \
-@ENABLE_STACKTRACE_TRUE@       $(am__append_1)
+@ENABLE_STACKTRACE_TRUE@       strace-k-p.test $(am__append_1)
 DECODER_TESTS = \
+       bpf-success-long-y.test \
        bpf-success-v.test \
        bpf-success.test \
        brk.test \
@@ -4877,17 +6623,21 @@ DECODER_TESTS = \
        btrfs-wX.test \
        caps-abbrev.test \
        caps.test \
+       clone-flags.test \
+       clone3-success.test \
        eventfd.test \
        execve-v.test \
        execve.test \
        fadvise64.test \
+       faccessat.test \
+       faccessat2.test \
        futex.test \
        getuid.test \
        int_0x80.test \
+       inotify_init-y.test \
        ioctl.test \
-       ioctl_evdev-success-v.test \
+       ioctl_block--pidns-translation.test \
        ioctl_evdev-success.test \
-       ioctl_perf-success.test \
        ipc_msgbuf.test \
        kern_features-fault.test \
        llseek.test \
@@ -4929,6 +6679,7 @@ DECODER_TESTS = \
        seccomp-strict.test \
        sigaltstack.test \
        sun_path.test \
+       syslog-success.test \
        uio.test \
        umount.test \
        umount2.test \
@@ -4944,7 +6695,6 @@ MISC_TESTS = \
        attach-f-p.test \
        attach-p-cmd.test \
        bexecve.test \
-       clone_parent.test \
        clone_ptrace.test \
        count-f.test \
        count.test \
@@ -4953,20 +6703,24 @@ MISC_TESTS = \
        detach-sleeping.test \
        detach-stopped.test \
        fflush.test \
+       filter_seccomp-perf.test \
        filter-unavailable.test \
        filtering_fd-syntax.test \
        filtering_syscall-syntax.test \
        first_exec_failure.test \
+       fork--pidns-translation.test \
        get_regs.test \
+       gettid--pidns-translation.test \
        inject-nf.test \
        interactive_block.test \
        kill_child.test \
-       ksysent.test \
        localtime.test \
        looping_threads.test \
+       netlink_audit--pidns-translation.test \
        opipe.test \
        options-syntax.test \
        pc.test \
+       pidns-cache.test \
        printpath-umovestr-legacy.test \
        printstrn-umoven-legacy.test \
        qual_fault-syntax.test \
@@ -4986,8 +6740,16 @@ MISC_TESTS = \
        restart_syscall.test \
        sigblock.test \
        sigign.test \
+       status-detached.test \
+       status-none-threads.test \
+       status-unfinished-threads.test \
        strace-C.test \
+       strace-D.test \
+       strace-DD.test \
+       strace-DDD.test \
        strace-E.test \
+       strace-E-override.test \
+       strace-E-unset.test \
        strace-S.test \
        strace-T.test \
        strace-V.test \
@@ -5000,6 +6762,7 @@ MISC_TESTS = \
        strace-ttt.test \
        termsig.test \
        threads-execve.test \
+       umovestr_cached.test \
        # end of MISC_TESTS
 
 XFAIL_TESTS_ = 
@@ -5027,7 +6790,10 @@ EXTRA_DIST = \
        eventfd.expected \
        fadvise.h \
        fcntl-common.c \
+       filter_seccomp.in \
+       filter_seccomp.sh \
        filter-unavailable.expected \
+       fork--pidns-translation.awk \
        fstatat.c \
        fstatx.c \
        gen_pure_executables.sh \
@@ -5036,17 +6802,20 @@ EXTRA_DIST = \
        getresugid.c \
        init.sh \
        init_delete_module.h \
+       ioctl-success.sh \
        ioctl_kvm_run_common.c \
        ipc.sh \
+       kernel_old_timespec.h \
+       kernel_old_timex.h \
        ksysent.sed \
        lstatx.c \
        match.awk \
        net.expected \
-       netlink_sock_diag-v.sh \
        nlattr_ifla.h \
        pipe.expected \
        print_user_desc.c \
        printsignal.c \
+       printxval.c \
        process_vm_readv_writev.c \
        pure_executables.list \
        qual_fault-exit_group.expected \
@@ -5060,6 +6829,7 @@ EXTRA_DIST = \
        run.sh \
        sched.in \
        scno_tampering.sh \
+       semop-common.c \
        setfsugid.c \
        setresugid.c \
        setreugid.c \
@@ -5068,18 +6838,37 @@ EXTRA_DIST = \
        sockaddr_xlat.c \
        sockname.c \
        stack-fcall.h \
+       status-detached.expected \
+       strace--follow-forks-output-separately.expected \
+       strace--relative-timestamps.expected \
+       strace--relative-timestamps-s.expected \
+       strace--relative-timestamps-ms.expected \
+       strace--relative-timestamps-us.expected \
+       strace--relative-timestamps-ns.expected \
+       strace--syscall-times.expected \
+       strace--syscall-times-s.expected \
+       strace--syscall-times-ms.expected \
+       strace--syscall-times-us.expected \
+       strace--syscall-times-ns.expected \
        strace-C.expected \
+       strace-D.expected \
+       strace-DDD.expected \
        strace-E.expected \
+       strace-E-unset.expected \
        strace-T.expected \
        strace-ff.expected \
        strace-k-demangle.expected \
        strace-k-demangle.test \
+       strace-k-p.expected \
+       strace-k-p.test \
        strace-k.expected \
        strace-k.test \
        strace-r.expected \
        strace.supp \
        sun_path.expected \
        syntax.sh \
+       trace_clock.in \
+       trace_creds.in \
        trace_fstat.in \
        trace_fstatfs.in \
        trace_lstat.in \
@@ -5100,6 +6889,7 @@ EXTRA_DIST = \
        unix-pair-send-recv.expected \
        unix-pair-sendto-recvfrom.expected \
        xchownx.c \
+       xgetdents.c \
        xgetrlimit.c \
        xselect.c \
        xstatfs.c \
@@ -5233,6 +7023,10 @@ block_reset_raise_run$(EXEEXT): $(block_reset_raise_run_OBJECTS) $(block_reset_r
        @rm -f block_reset_raise_run$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(block_reset_raise_run_OBJECTS) $(block_reset_raise_run_LDADD) $(LIBS)
 
+block_reset_run$(EXEEXT): $(block_reset_run_OBJECTS) $(block_reset_run_DEPENDENCIES) $(EXTRA_block_reset_run_DEPENDENCIES) 
+       @rm -f block_reset_run$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(block_reset_run_OBJECTS) $(block_reset_run_LDADD) $(LIBS)
+
 bpf$(EXEEXT): $(bpf_OBJECTS) $(bpf_DEPENDENCIES) $(EXTRA_bpf_DEPENDENCIES) 
        @rm -f bpf$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(bpf_OBJECTS) $(bpf_LDADD) $(LIBS)
@@ -5257,6 +7051,10 @@ bpf-success$(EXEEXT): $(bpf_success_OBJECTS) $(bpf_success_DEPENDENCIES) $(EXTRA
        @rm -f bpf-success$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(bpf_success_OBJECTS) $(bpf_success_LDADD) $(LIBS)
 
+bpf-success-long-y$(EXEEXT): $(bpf_success_long_y_OBJECTS) $(bpf_success_long_y_DEPENDENCIES) $(EXTRA_bpf_success_long_y_DEPENDENCIES) 
+       @rm -f bpf-success-long-y$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(bpf_success_long_y_OBJECTS) $(bpf_success_long_y_LDADD) $(LIBS)
+
 bpf-success-v$(EXEEXT): $(bpf_success_v_OBJECTS) $(bpf_success_v_DEPENDENCIES) $(EXTRA_bpf_success_v_DEPENDENCIES) 
        @rm -f bpf-success-v$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(bpf_success_v_OBJECTS) $(bpf_success_v_LDADD) $(LIBS)
@@ -5317,14 +7115,94 @@ clock_xettime$(EXEEXT): $(clock_xettime_OBJECTS) $(clock_xettime_DEPENDENCIES) $
        @rm -f clock_xettime$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(clock_xettime_OBJECTS) $(clock_xettime_LDADD) $(LIBS)
 
+clone-flags$(EXEEXT): $(clone_flags_OBJECTS) $(clone_flags_DEPENDENCIES) $(EXTRA_clone_flags_DEPENDENCIES) 
+       @rm -f clone-flags$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(clone_flags_OBJECTS) $(clone_flags_LDADD) $(LIBS)
+
+clone3$(EXEEXT): $(clone3_OBJECTS) $(clone3_DEPENDENCIES) $(EXTRA_clone3_DEPENDENCIES) 
+       @rm -f clone3$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(clone3_OBJECTS) $(clone3_LDADD) $(LIBS)
+
+clone3-Xabbrev$(EXEEXT): $(clone3_Xabbrev_OBJECTS) $(clone3_Xabbrev_DEPENDENCIES) $(EXTRA_clone3_Xabbrev_DEPENDENCIES) 
+       @rm -f clone3-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(clone3_Xabbrev_OBJECTS) $(clone3_Xabbrev_LDADD) $(LIBS)
+
+clone3-Xraw$(EXEEXT): $(clone3_Xraw_OBJECTS) $(clone3_Xraw_DEPENDENCIES) $(EXTRA_clone3_Xraw_DEPENDENCIES) 
+       @rm -f clone3-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(clone3_Xraw_OBJECTS) $(clone3_Xraw_LDADD) $(LIBS)
+
+clone3-Xverbose$(EXEEXT): $(clone3_Xverbose_OBJECTS) $(clone3_Xverbose_DEPENDENCIES) $(EXTRA_clone3_Xverbose_DEPENDENCIES) 
+       @rm -f clone3-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(clone3_Xverbose_OBJECTS) $(clone3_Xverbose_LDADD) $(LIBS)
+
+clone3-success$(EXEEXT): $(clone3_success_OBJECTS) $(clone3_success_DEPENDENCIES) $(EXTRA_clone3_success_DEPENDENCIES) 
+       @rm -f clone3-success$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(clone3_success_OBJECTS) $(clone3_success_LDADD) $(LIBS)
+
+clone3-success-Xabbrev$(EXEEXT): $(clone3_success_Xabbrev_OBJECTS) $(clone3_success_Xabbrev_DEPENDENCIES) $(EXTRA_clone3_success_Xabbrev_DEPENDENCIES) 
+       @rm -f clone3-success-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(clone3_success_Xabbrev_OBJECTS) $(clone3_success_Xabbrev_LDADD) $(LIBS)
+
+clone3-success-Xraw$(EXEEXT): $(clone3_success_Xraw_OBJECTS) $(clone3_success_Xraw_DEPENDENCIES) $(EXTRA_clone3_success_Xraw_DEPENDENCIES) 
+       @rm -f clone3-success-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(clone3_success_Xraw_OBJECTS) $(clone3_success_Xraw_LDADD) $(LIBS)
+
+clone3-success-Xverbose$(EXEEXT): $(clone3_success_Xverbose_OBJECTS) $(clone3_success_Xverbose_DEPENDENCIES) $(EXTRA_clone3_success_Xverbose_DEPENDENCIES) 
+       @rm -f clone3-success-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(clone3_success_Xverbose_OBJECTS) $(clone3_success_Xverbose_LDADD) $(LIBS)
+
 clone_parent$(EXEEXT): $(clone_parent_OBJECTS) $(clone_parent_DEPENDENCIES) $(EXTRA_clone_parent_DEPENDENCIES) 
        @rm -f clone_parent$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(clone_parent_OBJECTS) $(clone_parent_LDADD) $(LIBS)
 
+clone_parent--quiet-exit$(EXEEXT): $(clone_parent__quiet_exit_OBJECTS) $(clone_parent__quiet_exit_DEPENDENCIES) $(EXTRA_clone_parent__quiet_exit_DEPENDENCIES) 
+       @rm -f clone_parent--quiet-exit$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(clone_parent__quiet_exit_OBJECTS) $(clone_parent__quiet_exit_LDADD) $(LIBS)
+
+clone_parent-q$(EXEEXT): $(clone_parent_q_OBJECTS) $(clone_parent_q_DEPENDENCIES) $(EXTRA_clone_parent_q_DEPENDENCIES) 
+       @rm -f clone_parent-q$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(clone_parent_q_OBJECTS) $(clone_parent_q_LDADD) $(LIBS)
+
+clone_parent-qq$(EXEEXT): $(clone_parent_qq_OBJECTS) $(clone_parent_qq_DEPENDENCIES) $(EXTRA_clone_parent_qq_DEPENDENCIES) 
+       @rm -f clone_parent-qq$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(clone_parent_qq_OBJECTS) $(clone_parent_qq_LDADD) $(LIBS)
+
 clone_ptrace$(EXEEXT): $(clone_ptrace_OBJECTS) $(clone_ptrace_DEPENDENCIES) $(EXTRA_clone_ptrace_DEPENDENCIES) 
        @rm -f clone_ptrace$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(clone_ptrace_OBJECTS) $(clone_ptrace_LDADD) $(LIBS)
 
+clone_ptrace--quiet-attach$(EXEEXT): $(clone_ptrace__quiet_attach_OBJECTS) $(clone_ptrace__quiet_attach_DEPENDENCIES) $(EXTRA_clone_ptrace__quiet_attach_DEPENDENCIES) 
+       @rm -f clone_ptrace--quiet-attach$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(clone_ptrace__quiet_attach_OBJECTS) $(clone_ptrace__quiet_attach_LDADD) $(LIBS)
+
+clone_ptrace--quiet-exit$(EXEEXT): $(clone_ptrace__quiet_exit_OBJECTS) $(clone_ptrace__quiet_exit_DEPENDENCIES) $(EXTRA_clone_ptrace__quiet_exit_DEPENDENCIES) 
+       @rm -f clone_ptrace--quiet-exit$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(clone_ptrace__quiet_exit_OBJECTS) $(clone_ptrace__quiet_exit_LDADD) $(LIBS)
+
+clone_ptrace-q$(EXEEXT): $(clone_ptrace_q_OBJECTS) $(clone_ptrace_q_DEPENDENCIES) $(EXTRA_clone_ptrace_q_DEPENDENCIES) 
+       @rm -f clone_ptrace-q$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(clone_ptrace_q_OBJECTS) $(clone_ptrace_q_LDADD) $(LIBS)
+
+clone_ptrace-qq$(EXEEXT): $(clone_ptrace_qq_OBJECTS) $(clone_ptrace_qq_DEPENDENCIES) $(EXTRA_clone_ptrace_qq_DEPENDENCIES) 
+       @rm -f clone_ptrace-qq$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(clone_ptrace_qq_OBJECTS) $(clone_ptrace_qq_LDADD) $(LIBS)
+
+close_range$(EXEEXT): $(close_range_OBJECTS) $(close_range_DEPENDENCIES) $(EXTRA_close_range_DEPENDENCIES) 
+       @rm -f close_range$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(close_range_OBJECTS) $(close_range_LDADD) $(LIBS)
+
+close_range-P$(EXEEXT): $(close_range_P_OBJECTS) $(close_range_P_DEPENDENCIES) $(EXTRA_close_range_P_DEPENDENCIES) 
+       @rm -f close_range-P$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(close_range_P_OBJECTS) $(close_range_P_LDADD) $(LIBS)
+
+close_range-y$(EXEEXT): $(close_range_y_OBJECTS) $(close_range_y_DEPENDENCIES) $(EXTRA_close_range_y_DEPENDENCIES) 
+       @rm -f close_range-y$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(close_range_y_OBJECTS) $(close_range_y_LDADD) $(LIBS)
+
+close_range-yy$(EXEEXT): $(close_range_yy_OBJECTS) $(close_range_yy_DEPENDENCIES) $(EXTRA_close_range_yy_DEPENDENCIES) 
+       @rm -f close_range-yy$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(close_range_yy_OBJECTS) $(close_range_yy_LDADD) $(LIBS)
+
 copy_file_range$(EXEEXT): $(copy_file_range_OBJECTS) $(copy_file_range_DEPENDENCIES) $(EXTRA_copy_file_range_DEPENDENCIES) 
        @rm -f copy_file_range$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(copy_file_range_OBJECTS) $(copy_file_range_LDADD) $(LIBS)
@@ -5345,6 +7223,18 @@ delete_module$(EXEEXT): $(delete_module_OBJECTS) $(delete_module_DEPENDENCIES) $
        @rm -f delete_module$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(delete_module_OBJECTS) $(delete_module_LDADD) $(LIBS)
 
+dev--decode-fds-dev$(EXEEXT): $(dev__decode_fds_dev_OBJECTS) $(dev__decode_fds_dev_DEPENDENCIES) $(EXTRA_dev__decode_fds_dev_DEPENDENCIES) 
+       @rm -f dev--decode-fds-dev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(dev__decode_fds_dev_OBJECTS) $(dev__decode_fds_dev_LDADD) $(LIBS)
+
+dev--decode-fds-path$(EXEEXT): $(dev__decode_fds_path_OBJECTS) $(dev__decode_fds_path_DEPENDENCIES) $(EXTRA_dev__decode_fds_path_DEPENDENCIES) 
+       @rm -f dev--decode-fds-path$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(dev__decode_fds_path_OBJECTS) $(dev__decode_fds_path_LDADD) $(LIBS)
+
+dev--decode-fds-socket$(EXEEXT): $(dev__decode_fds_socket_OBJECTS) $(dev__decode_fds_socket_DEPENDENCIES) $(EXTRA_dev__decode_fds_socket_DEPENDENCIES) 
+       @rm -f dev--decode-fds-socket$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(dev__decode_fds_socket_OBJECTS) $(dev__decode_fds_socket_LDADD) $(LIBS)
+
 dev-yy$(EXEEXT): $(dev_yy_OBJECTS) $(dev_yy_DEPENDENCIES) $(EXTRA_dev_yy_DEPENDENCIES) 
        @rm -f dev-yy$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(dev_yy_OBJECTS) $(dev_yy_LDADD) $(LIBS)
@@ -5353,14 +7243,50 @@ dup$(EXEEXT): $(dup_OBJECTS) $(dup_DEPENDENCIES) $(EXTRA_dup_DEPENDENCIES)
        @rm -f dup$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(dup_OBJECTS) $(dup_LDADD) $(LIBS)
 
+dup-P$(EXEEXT): $(dup_P_OBJECTS) $(dup_P_DEPENDENCIES) $(EXTRA_dup_P_DEPENDENCIES) 
+       @rm -f dup-P$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(dup_P_OBJECTS) $(dup_P_LDADD) $(LIBS)
+
+dup-y$(EXEEXT): $(dup_y_OBJECTS) $(dup_y_DEPENDENCIES) $(EXTRA_dup_y_DEPENDENCIES) 
+       @rm -f dup-y$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(dup_y_OBJECTS) $(dup_y_LDADD) $(LIBS)
+
+dup-yy$(EXEEXT): $(dup_yy_OBJECTS) $(dup_yy_DEPENDENCIES) $(EXTRA_dup_yy_DEPENDENCIES) 
+       @rm -f dup-yy$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(dup_yy_OBJECTS) $(dup_yy_LDADD) $(LIBS)
+
 dup2$(EXEEXT): $(dup2_OBJECTS) $(dup2_DEPENDENCIES) $(EXTRA_dup2_DEPENDENCIES) 
        @rm -f dup2$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(dup2_OBJECTS) $(dup2_LDADD) $(LIBS)
 
+dup2-P$(EXEEXT): $(dup2_P_OBJECTS) $(dup2_P_DEPENDENCIES) $(EXTRA_dup2_P_DEPENDENCIES) 
+       @rm -f dup2-P$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(dup2_P_OBJECTS) $(dup2_P_LDADD) $(LIBS)
+
+dup2-y$(EXEEXT): $(dup2_y_OBJECTS) $(dup2_y_DEPENDENCIES) $(EXTRA_dup2_y_DEPENDENCIES) 
+       @rm -f dup2-y$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(dup2_y_OBJECTS) $(dup2_y_LDADD) $(LIBS)
+
+dup2-yy$(EXEEXT): $(dup2_yy_OBJECTS) $(dup2_yy_DEPENDENCIES) $(EXTRA_dup2_yy_DEPENDENCIES) 
+       @rm -f dup2-yy$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(dup2_yy_OBJECTS) $(dup2_yy_LDADD) $(LIBS)
+
 dup3$(EXEEXT): $(dup3_OBJECTS) $(dup3_DEPENDENCIES) $(EXTRA_dup3_DEPENDENCIES) 
        @rm -f dup3$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(dup3_OBJECTS) $(dup3_LDADD) $(LIBS)
 
+dup3-P$(EXEEXT): $(dup3_P_OBJECTS) $(dup3_P_DEPENDENCIES) $(EXTRA_dup3_P_DEPENDENCIES) 
+       @rm -f dup3-P$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(dup3_P_OBJECTS) $(dup3_P_LDADD) $(LIBS)
+
+dup3-y$(EXEEXT): $(dup3_y_OBJECTS) $(dup3_y_DEPENDENCIES) $(EXTRA_dup3_y_DEPENDENCIES) 
+       @rm -f dup3-y$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(dup3_y_OBJECTS) $(dup3_y_LDADD) $(LIBS)
+
+dup3-yy$(EXEEXT): $(dup3_yy_OBJECTS) $(dup3_yy_DEPENDENCIES) $(EXTRA_dup3_yy_DEPENDENCIES) 
+       @rm -f dup3-yy$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(dup3_yy_OBJECTS) $(dup3_yy_LDADD) $(LIBS)
+
 epoll_create$(EXEEXT): $(epoll_create_OBJECTS) $(epoll_create_DEPENDENCIES) $(EXTRA_epoll_create_DEPENDENCIES) 
        @rm -f epoll_create$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(epoll_create_OBJECTS) $(epoll_create_LDADD) $(LIBS)
@@ -5409,6 +7335,34 @@ faccessat$(EXEEXT): $(faccessat_OBJECTS) $(faccessat_DEPENDENCIES) $(EXTRA_facce
        @rm -f faccessat$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(faccessat_OBJECTS) $(faccessat_LDADD) $(LIBS)
 
+faccessat-P$(EXEEXT): $(faccessat_P_OBJECTS) $(faccessat_P_DEPENDENCIES) $(EXTRA_faccessat_P_DEPENDENCIES) 
+       @rm -f faccessat-P$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(faccessat_P_OBJECTS) $(faccessat_P_LDADD) $(LIBS)
+
+faccessat-y$(EXEEXT): $(faccessat_y_OBJECTS) $(faccessat_y_DEPENDENCIES) $(EXTRA_faccessat_y_DEPENDENCIES) 
+       @rm -f faccessat-y$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(faccessat_y_OBJECTS) $(faccessat_y_LDADD) $(LIBS)
+
+faccessat-yy$(EXEEXT): $(faccessat_yy_OBJECTS) $(faccessat_yy_DEPENDENCIES) $(EXTRA_faccessat_yy_DEPENDENCIES) 
+       @rm -f faccessat-yy$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(faccessat_yy_OBJECTS) $(faccessat_yy_LDADD) $(LIBS)
+
+faccessat2$(EXEEXT): $(faccessat2_OBJECTS) $(faccessat2_DEPENDENCIES) $(EXTRA_faccessat2_DEPENDENCIES) 
+       @rm -f faccessat2$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(faccessat2_OBJECTS) $(faccessat2_LDADD) $(LIBS)
+
+faccessat2-P$(EXEEXT): $(faccessat2_P_OBJECTS) $(faccessat2_P_DEPENDENCIES) $(EXTRA_faccessat2_P_DEPENDENCIES) 
+       @rm -f faccessat2-P$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(faccessat2_P_OBJECTS) $(faccessat2_P_LDADD) $(LIBS)
+
+faccessat2-y$(EXEEXT): $(faccessat2_y_OBJECTS) $(faccessat2_y_DEPENDENCIES) $(EXTRA_faccessat2_y_DEPENDENCIES) 
+       @rm -f faccessat2-y$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(faccessat2_y_OBJECTS) $(faccessat2_y_LDADD) $(LIBS)
+
+faccessat2-yy$(EXEEXT): $(faccessat2_yy_OBJECTS) $(faccessat2_yy_DEPENDENCIES) $(EXTRA_faccessat2_yy_DEPENDENCIES) 
+       @rm -f faccessat2-yy$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(faccessat2_yy_OBJECTS) $(faccessat2_yy_LDADD) $(LIBS)
+
 fadvise64$(EXEEXT): $(fadvise64_OBJECTS) $(fadvise64_DEPENDENCIES) $(EXTRA_fadvise64_DEPENDENCIES) 
        @rm -f fadvise64$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(fadvise64_OBJECTS) $(fadvise64_LDADD) $(LIBS)
@@ -5469,10 +7423,18 @@ fcntl$(EXEEXT): $(fcntl_OBJECTS) $(fcntl_DEPENDENCIES) $(EXTRA_fcntl_DEPENDENCIE
        @rm -f fcntl$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(fcntl_OBJECTS) $(fcntl_LDADD) $(LIBS)
 
+fcntl--pidns-translation$(EXEEXT): $(fcntl__pidns_translation_OBJECTS) $(fcntl__pidns_translation_DEPENDENCIES) $(EXTRA_fcntl__pidns_translation_DEPENDENCIES) 
+       @rm -f fcntl--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(fcntl__pidns_translation_OBJECTS) $(fcntl__pidns_translation_LDADD) $(LIBS)
+
 fcntl64$(EXEEXT): $(fcntl64_OBJECTS) $(fcntl64_DEPENDENCIES) $(EXTRA_fcntl64_DEPENDENCIES) 
        @rm -f fcntl64$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(fcntl64_OBJECTS) $(fcntl64_LDADD) $(LIBS)
 
+fcntl64--pidns-translation$(EXEEXT): $(fcntl64__pidns_translation_OBJECTS) $(fcntl64__pidns_translation_DEPENDENCIES) $(EXTRA_fcntl64__pidns_translation_DEPENDENCIES) 
+       @rm -f fcntl64--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(fcntl64__pidns_translation_OBJECTS) $(fcntl64__pidns_translation_LDADD) $(LIBS)
+
 fdatasync$(EXEEXT): $(fdatasync_OBJECTS) $(fdatasync_DEPENDENCIES) $(EXTRA_fdatasync_DEPENDENCIES) 
        @rm -f fdatasync$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(fdatasync_OBJECTS) $(fdatasync_LDADD) $(LIBS)
@@ -5493,6 +7455,14 @@ filter-unavailable$(EXEEXT): $(filter_unavailable_OBJECTS) $(filter_unavailable_
        @rm -f filter-unavailable$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(filter_unavailable_OBJECTS) $(filter_unavailable_LDADD) $(LIBS)
 
+filter_seccomp-flag$(EXEEXT): $(filter_seccomp_flag_OBJECTS) $(filter_seccomp_flag_DEPENDENCIES) $(EXTRA_filter_seccomp_flag_DEPENDENCIES) 
+       @rm -f filter_seccomp-flag$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(filter_seccomp_flag_OBJECTS) $(filter_seccomp_flag_LDADD) $(LIBS)
+
+filter_seccomp-perf$(EXEEXT): $(filter_seccomp_perf_OBJECTS) $(filter_seccomp_perf_DEPENDENCIES) $(EXTRA_filter_seccomp_perf_DEPENDENCIES) 
+       @rm -f filter_seccomp-perf$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(filter_seccomp_perf_OBJECTS) $(filter_seccomp_perf_LDADD) $(LIBS)
+
 finit_module$(EXEEXT): $(finit_module_OBJECTS) $(finit_module_DEPENDENCIES) $(EXTRA_finit_module_DEPENDENCIES) 
        @rm -f finit_module$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(finit_module_OBJECTS) $(finit_module_LDADD) $(LIBS)
@@ -5501,10 +7471,38 @@ flock$(EXEEXT): $(flock_OBJECTS) $(flock_DEPENDENCIES) $(EXTRA_flock_DEPENDENCIE
        @rm -f flock$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(flock_OBJECTS) $(flock_LDADD) $(LIBS)
 
+fork--pidns-translation$(EXEEXT): $(fork__pidns_translation_OBJECTS) $(fork__pidns_translation_DEPENDENCIES) $(EXTRA_fork__pidns_translation_DEPENDENCIES) 
+       @rm -f fork--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(fork__pidns_translation_OBJECTS) $(fork__pidns_translation_LDADD) $(LIBS)
+
 fork-f$(EXEEXT): $(fork_f_OBJECTS) $(fork_f_DEPENDENCIES) $(EXTRA_fork_f_DEPENDENCIES) 
        @rm -f fork-f$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(fork_f_OBJECTS) $(fork_f_LDADD) $(LIBS)
 
+fsconfig$(EXEEXT): $(fsconfig_OBJECTS) $(fsconfig_DEPENDENCIES) $(EXTRA_fsconfig_DEPENDENCIES) 
+       @rm -f fsconfig$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(fsconfig_OBJECTS) $(fsconfig_LDADD) $(LIBS)
+
+fsconfig-P$(EXEEXT): $(fsconfig_P_OBJECTS) $(fsconfig_P_DEPENDENCIES) $(EXTRA_fsconfig_P_DEPENDENCIES) 
+       @rm -f fsconfig-P$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(fsconfig_P_OBJECTS) $(fsconfig_P_LDADD) $(LIBS)
+
+fsmount$(EXEEXT): $(fsmount_OBJECTS) $(fsmount_DEPENDENCIES) $(EXTRA_fsmount_DEPENDENCIES) 
+       @rm -f fsmount$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(fsmount_OBJECTS) $(fsmount_LDADD) $(LIBS)
+
+fsopen$(EXEEXT): $(fsopen_OBJECTS) $(fsopen_DEPENDENCIES) $(EXTRA_fsopen_DEPENDENCIES) 
+       @rm -f fsopen$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(fsopen_OBJECTS) $(fsopen_LDADD) $(LIBS)
+
+fspick$(EXEEXT): $(fspick_OBJECTS) $(fspick_DEPENDENCIES) $(EXTRA_fspick_DEPENDENCIES) 
+       @rm -f fspick$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(fspick_OBJECTS) $(fspick_LDADD) $(LIBS)
+
+fspick-P$(EXEEXT): $(fspick_P_OBJECTS) $(fspick_P_DEPENDENCIES) $(EXTRA_fspick_P_DEPENDENCIES) 
+       @rm -f fspick-P$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(fspick_P_OBJECTS) $(fspick_P_LDADD) $(LIBS)
+
 fstat$(EXEEXT): $(fstat_OBJECTS) $(fstat_DEPENDENCIES) $(EXTRA_fstat_DEPENDENCIES) 
        @rm -f fstat$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(fstat_OBJECTS) $(fstat_LDADD) $(LIBS)
@@ -5577,6 +7575,10 @@ get_mempolicy$(EXEEXT): $(get_mempolicy_OBJECTS) $(get_mempolicy_DEPENDENCIES) $
        @rm -f get_mempolicy$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(get_mempolicy_OBJECTS) $(get_mempolicy_LDADD) $(LIBS)
 
+get_process_reaper$(EXEEXT): $(get_process_reaper_OBJECTS) $(get_process_reaper_DEPENDENCIES) $(EXTRA_get_process_reaper_DEPENDENCIES) 
+       @rm -f get_process_reaper$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(get_process_reaper_OBJECTS) $(get_process_reaper_LDADD) $(LIBS)
+
 getcpu$(EXEEXT): $(getcpu_OBJECTS) $(getcpu_DEPENDENCIES) $(EXTRA_getcpu_DEPENDENCIES) 
        @rm -f getcpu$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(getcpu_OBJECTS) $(getcpu_LDADD) $(LIBS)
@@ -5589,10 +7591,18 @@ getdents$(EXEEXT): $(getdents_OBJECTS) $(getdents_DEPENDENCIES) $(EXTRA_getdents
        @rm -f getdents$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(getdents_OBJECTS) $(getdents_LDADD) $(LIBS)
 
+getdents-v$(EXEEXT): $(getdents_v_OBJECTS) $(getdents_v_DEPENDENCIES) $(EXTRA_getdents_v_DEPENDENCIES) 
+       @rm -f getdents-v$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(getdents_v_OBJECTS) $(getdents_v_LDADD) $(LIBS)
+
 getdents64$(EXEEXT): $(getdents64_OBJECTS) $(getdents64_DEPENDENCIES) $(EXTRA_getdents64_DEPENDENCIES) 
        @rm -f getdents64$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(getdents64_OBJECTS) $(getdents64_LDADD) $(LIBS)
 
+getdents64-v$(EXEEXT): $(getdents64_v_OBJECTS) $(getdents64_v_DEPENDENCIES) $(EXTRA_getdents64_v_DEPENDENCIES) 
+       @rm -f getdents64-v$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(getdents64_v_OBJECTS) $(getdents64_v_LDADD) $(LIBS)
+
 getegid$(EXEEXT): $(getegid_OBJECTS) $(getegid_DEPENDENCIES) $(EXTRA_getegid_DEPENDENCIES) 
        @rm -f getegid$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(getegid_OBJECTS) $(getegid_LDADD) $(LIBS)
@@ -5633,10 +7643,18 @@ getpgrp$(EXEEXT): $(getpgrp_OBJECTS) $(getpgrp_DEPENDENCIES) $(EXTRA_getpgrp_DEP
        @rm -f getpgrp$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(getpgrp_OBJECTS) $(getpgrp_LDADD) $(LIBS)
 
+getpgrp--pidns-translation$(EXEEXT): $(getpgrp__pidns_translation_OBJECTS) $(getpgrp__pidns_translation_DEPENDENCIES) $(EXTRA_getpgrp__pidns_translation_DEPENDENCIES) 
+       @rm -f getpgrp--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(getpgrp__pidns_translation_OBJECTS) $(getpgrp__pidns_translation_LDADD) $(LIBS)
+
 getpid$(EXEEXT): $(getpid_OBJECTS) $(getpid_DEPENDENCIES) $(EXTRA_getpid_DEPENDENCIES) 
        @rm -f getpid$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(getpid_OBJECTS) $(getpid_LDADD) $(LIBS)
 
+getpid--pidns-translation$(EXEEXT): $(getpid__pidns_translation_OBJECTS) $(getpid__pidns_translation_DEPENDENCIES) $(EXTRA_getpid__pidns_translation_DEPENDENCIES) 
+       @rm -f getpid--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(getpid__pidns_translation_OBJECTS) $(getpid__pidns_translation_LDADD) $(LIBS)
+
 getppid$(EXEEXT): $(getppid_OBJECTS) $(getppid_DEPENDENCIES) $(EXTRA_getppid_DEPENDENCIES) 
        @rm -f getppid$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(getppid_OBJECTS) $(getppid_LDADD) $(LIBS)
@@ -5673,6 +7691,10 @@ getsid$(EXEEXT): $(getsid_OBJECTS) $(getsid_DEPENDENCIES) $(EXTRA_getsid_DEPENDE
        @rm -f getsid$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(getsid_OBJECTS) $(getsid_LDADD) $(LIBS)
 
+getsid--pidns-translation$(EXEEXT): $(getsid__pidns_translation_OBJECTS) $(getsid__pidns_translation_DEPENDENCIES) $(EXTRA_getsid__pidns_translation_DEPENDENCIES) 
+       @rm -f getsid--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(getsid__pidns_translation_OBJECTS) $(getsid__pidns_translation_LDADD) $(LIBS)
+
 getsockname$(EXEEXT): $(getsockname_OBJECTS) $(getsockname_DEPENDENCIES) $(EXTRA_getsockname_DEPENDENCIES) 
        @rm -f getsockname$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(getsockname_OBJECTS) $(getsockname_LDADD) $(LIBS)
@@ -5681,6 +7703,10 @@ gettid$(EXEEXT): $(gettid_OBJECTS) $(gettid_DEPENDENCIES) $(EXTRA_gettid_DEPENDE
        @rm -f gettid$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(gettid_OBJECTS) $(gettid_LDADD) $(LIBS)
 
+gettid--pidns-translation$(EXEEXT): $(gettid__pidns_translation_OBJECTS) $(gettid__pidns_translation_DEPENDENCIES) $(EXTRA_gettid__pidns_translation_DEPENDENCIES) 
+       @rm -f gettid--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(gettid__pidns_translation_OBJECTS) $(gettid__pidns_translation_LDADD) $(LIBS)
+
 getuid$(EXEEXT): $(getuid_OBJECTS) $(getuid_DEPENDENCIES) $(EXTRA_getuid_DEPENDENCIES) 
        @rm -f getuid$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(getuid_OBJECTS) $(getuid_LDADD) $(LIBS)
@@ -5689,9 +7715,17 @@ getuid32$(EXEEXT): $(getuid32_OBJECTS) $(getuid32_DEPENDENCIES) $(EXTRA_getuid32
        @rm -f getuid32$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(getuid32_OBJECTS) $(getuid32_LDADD) $(LIBS)
 
-getxxid$(EXEEXT): $(getxxid_OBJECTS) $(getxxid_DEPENDENCIES) $(EXTRA_getxxid_DEPENDENCIES) 
-       @rm -f getxxid$(EXEEXT)
-       $(AM_V_CCLD)$(LINK) $(getxxid_OBJECTS) $(getxxid_LDADD) $(LIBS)
+getxgid$(EXEEXT): $(getxgid_OBJECTS) $(getxgid_DEPENDENCIES) $(EXTRA_getxgid_DEPENDENCIES) 
+       @rm -f getxgid$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(getxgid_OBJECTS) $(getxgid_LDADD) $(LIBS)
+
+getxpid$(EXEEXT): $(getxpid_OBJECTS) $(getxpid_DEPENDENCIES) $(EXTRA_getxpid_DEPENDENCIES) 
+       @rm -f getxpid$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(getxpid_OBJECTS) $(getxpid_LDADD) $(LIBS)
+
+getxuid$(EXEEXT): $(getxuid_OBJECTS) $(getxuid_DEPENDENCIES) $(EXTRA_getxuid_DEPENDENCIES) 
+       @rm -f getxuid$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(getxuid_OBJECTS) $(getxuid_LDADD) $(LIBS)
 
 group_req$(EXEEXT): $(group_req_OBJECTS) $(group_req_DEPENDENCIES) $(EXTRA_group_req_DEPENDENCIES) 
        @rm -f group_req$(EXEEXT)
@@ -5713,10 +7747,22 @@ inotify$(EXEEXT): $(inotify_OBJECTS) $(inotify_DEPENDENCIES) $(EXTRA_inotify_DEP
        @rm -f inotify$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(inotify_OBJECTS) $(inotify_LDADD) $(LIBS)
 
+inotify_init$(EXEEXT): $(inotify_init_OBJECTS) $(inotify_init_DEPENDENCIES) $(EXTRA_inotify_init_DEPENDENCIES) 
+       @rm -f inotify_init$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(inotify_init_OBJECTS) $(inotify_init_LDADD) $(LIBS)
+
+inotify_init-y$(EXEEXT): $(inotify_init_y_OBJECTS) $(inotify_init_y_DEPENDENCIES) $(EXTRA_inotify_init_y_DEPENDENCIES) 
+       @rm -f inotify_init-y$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(inotify_init_y_OBJECTS) $(inotify_init_y_LDADD) $(LIBS)
+
 inotify_init1$(EXEEXT): $(inotify_init1_OBJECTS) $(inotify_init1_DEPENDENCIES) $(EXTRA_inotify_init1_DEPENDENCIES) 
        @rm -f inotify_init1$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(inotify_init1_OBJECTS) $(inotify_init1_LDADD) $(LIBS)
 
+inotify_init1-y$(EXEEXT): $(inotify_init1_y_OBJECTS) $(inotify_init1_y_DEPENDENCIES) $(EXTRA_inotify_init1_y_DEPENDENCIES) 
+       @rm -f inotify_init1-y$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(inotify_init1_y_OBJECTS) $(inotify_init1_y_LDADD) $(LIBS)
+
 int_0x80$(EXEEXT): $(int_0x80_OBJECTS) $(int_0x80_DEPENDENCIES) $(EXTRA_int_0x80_DEPENDENCIES) 
        @rm -f int_0x80$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(int_0x80_OBJECTS) $(int_0x80_LDADD) $(LIBS)
@@ -5741,6 +7787,10 @@ ioctl_block$(EXEEXT): $(ioctl_block_OBJECTS) $(ioctl_block_DEPENDENCIES) $(EXTRA
        @rm -f ioctl_block$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(ioctl_block_OBJECTS) $(ioctl_block_LDADD) $(LIBS)
 
+ioctl_block--pidns-translation$(EXEEXT): $(ioctl_block__pidns_translation_OBJECTS) $(ioctl_block__pidns_translation_DEPENDENCIES) $(EXTRA_ioctl_block__pidns_translation_DEPENDENCIES) 
+       @rm -f ioctl_block--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_block__pidns_translation_OBJECTS) $(ioctl_block__pidns_translation_LDADD) $(LIBS)
+
 ioctl_dm$(EXEEXT): $(ioctl_dm_OBJECTS) $(ioctl_dm_DEPENDENCIES) $(EXTRA_ioctl_dm_DEPENDENCIES) 
        @rm -f ioctl_dm$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(ioctl_dm_OBJECTS) $(ioctl_dm_LDADD) $(LIBS)
@@ -5753,18 +7803,130 @@ ioctl_evdev$(EXEEXT): $(ioctl_evdev_OBJECTS) $(ioctl_evdev_DEPENDENCIES) $(EXTRA
        @rm -f ioctl_evdev$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(ioctl_evdev_OBJECTS) $(ioctl_evdev_LDADD) $(LIBS)
 
+ioctl_evdev-Xabbrev$(EXEEXT): $(ioctl_evdev_Xabbrev_OBJECTS) $(ioctl_evdev_Xabbrev_DEPENDENCIES) $(EXTRA_ioctl_evdev_Xabbrev_DEPENDENCIES) 
+       @rm -f ioctl_evdev-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_evdev_Xabbrev_OBJECTS) $(ioctl_evdev_Xabbrev_LDADD) $(LIBS)
+
+ioctl_evdev-Xraw$(EXEEXT): $(ioctl_evdev_Xraw_OBJECTS) $(ioctl_evdev_Xraw_DEPENDENCIES) $(EXTRA_ioctl_evdev_Xraw_DEPENDENCIES) 
+       @rm -f ioctl_evdev-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_evdev_Xraw_OBJECTS) $(ioctl_evdev_Xraw_LDADD) $(LIBS)
+
+ioctl_evdev-Xverbose$(EXEEXT): $(ioctl_evdev_Xverbose_OBJECTS) $(ioctl_evdev_Xverbose_DEPENDENCIES) $(EXTRA_ioctl_evdev_Xverbose_DEPENDENCIES) 
+       @rm -f ioctl_evdev-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_evdev_Xverbose_OBJECTS) $(ioctl_evdev_Xverbose_LDADD) $(LIBS)
+
 ioctl_evdev-success$(EXEEXT): $(ioctl_evdev_success_OBJECTS) $(ioctl_evdev_success_DEPENDENCIES) $(EXTRA_ioctl_evdev_success_DEPENDENCIES) 
        @rm -f ioctl_evdev-success$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(ioctl_evdev_success_OBJECTS) $(ioctl_evdev_success_LDADD) $(LIBS)
 
+ioctl_evdev-success-Xabbrev$(EXEEXT): $(ioctl_evdev_success_Xabbrev_OBJECTS) $(ioctl_evdev_success_Xabbrev_DEPENDENCIES) $(EXTRA_ioctl_evdev_success_Xabbrev_DEPENDENCIES) 
+       @rm -f ioctl_evdev-success-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_evdev_success_Xabbrev_OBJECTS) $(ioctl_evdev_success_Xabbrev_LDADD) $(LIBS)
+
+ioctl_evdev-success-Xraw$(EXEEXT): $(ioctl_evdev_success_Xraw_OBJECTS) $(ioctl_evdev_success_Xraw_DEPENDENCIES) $(EXTRA_ioctl_evdev_success_Xraw_DEPENDENCIES) 
+       @rm -f ioctl_evdev-success-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_evdev_success_Xraw_OBJECTS) $(ioctl_evdev_success_Xraw_LDADD) $(LIBS)
+
+ioctl_evdev-success-Xverbose$(EXEEXT): $(ioctl_evdev_success_Xverbose_OBJECTS) $(ioctl_evdev_success_Xverbose_DEPENDENCIES) $(EXTRA_ioctl_evdev_success_Xverbose_DEPENDENCIES) 
+       @rm -f ioctl_evdev-success-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_evdev_success_Xverbose_OBJECTS) $(ioctl_evdev_success_Xverbose_LDADD) $(LIBS)
+
 ioctl_evdev-success-v$(EXEEXT): $(ioctl_evdev_success_v_OBJECTS) $(ioctl_evdev_success_v_DEPENDENCIES) $(EXTRA_ioctl_evdev_success_v_DEPENDENCIES) 
        @rm -f ioctl_evdev-success-v$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(ioctl_evdev_success_v_OBJECTS) $(ioctl_evdev_success_v_LDADD) $(LIBS)
 
+ioctl_evdev-success-v-Xabbrev$(EXEEXT): $(ioctl_evdev_success_v_Xabbrev_OBJECTS) $(ioctl_evdev_success_v_Xabbrev_DEPENDENCIES) $(EXTRA_ioctl_evdev_success_v_Xabbrev_DEPENDENCIES) 
+       @rm -f ioctl_evdev-success-v-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_evdev_success_v_Xabbrev_OBJECTS) $(ioctl_evdev_success_v_Xabbrev_LDADD) $(LIBS)
+
+ioctl_evdev-success-v-Xraw$(EXEEXT): $(ioctl_evdev_success_v_Xraw_OBJECTS) $(ioctl_evdev_success_v_Xraw_DEPENDENCIES) $(EXTRA_ioctl_evdev_success_v_Xraw_DEPENDENCIES) 
+       @rm -f ioctl_evdev-success-v-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_evdev_success_v_Xraw_OBJECTS) $(ioctl_evdev_success_v_Xraw_LDADD) $(LIBS)
+
+ioctl_evdev-success-v-Xverbose$(EXEEXT): $(ioctl_evdev_success_v_Xverbose_OBJECTS) $(ioctl_evdev_success_v_Xverbose_DEPENDENCIES) $(EXTRA_ioctl_evdev_success_v_Xverbose_DEPENDENCIES) 
+       @rm -f ioctl_evdev-success-v-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_evdev_success_v_Xverbose_OBJECTS) $(ioctl_evdev_success_v_Xverbose_LDADD) $(LIBS)
+
 ioctl_evdev-v$(EXEEXT): $(ioctl_evdev_v_OBJECTS) $(ioctl_evdev_v_DEPENDENCIES) $(EXTRA_ioctl_evdev_v_DEPENDENCIES) 
        @rm -f ioctl_evdev-v$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(ioctl_evdev_v_OBJECTS) $(ioctl_evdev_v_LDADD) $(LIBS)
 
+ioctl_evdev-v-Xabbrev$(EXEEXT): $(ioctl_evdev_v_Xabbrev_OBJECTS) $(ioctl_evdev_v_Xabbrev_DEPENDENCIES) $(EXTRA_ioctl_evdev_v_Xabbrev_DEPENDENCIES) 
+       @rm -f ioctl_evdev-v-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_evdev_v_Xabbrev_OBJECTS) $(ioctl_evdev_v_Xabbrev_LDADD) $(LIBS)
+
+ioctl_evdev-v-Xraw$(EXEEXT): $(ioctl_evdev_v_Xraw_OBJECTS) $(ioctl_evdev_v_Xraw_DEPENDENCIES) $(EXTRA_ioctl_evdev_v_Xraw_DEPENDENCIES) 
+       @rm -f ioctl_evdev-v-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_evdev_v_Xraw_OBJECTS) $(ioctl_evdev_v_Xraw_LDADD) $(LIBS)
+
+ioctl_evdev-v-Xverbose$(EXEEXT): $(ioctl_evdev_v_Xverbose_OBJECTS) $(ioctl_evdev_v_Xverbose_DEPENDENCIES) $(EXTRA_ioctl_evdev_v_Xverbose_DEPENDENCIES) 
+       @rm -f ioctl_evdev-v-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_evdev_v_Xverbose_OBJECTS) $(ioctl_evdev_v_Xverbose_LDADD) $(LIBS)
+
+ioctl_hdio$(EXEEXT): $(ioctl_hdio_OBJECTS) $(ioctl_hdio_DEPENDENCIES) $(EXTRA_ioctl_hdio_DEPENDENCIES) 
+       @rm -f ioctl_hdio$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_hdio_OBJECTS) $(ioctl_hdio_LDADD) $(LIBS)
+
+ioctl_hdio-Xabbrev$(EXEEXT): $(ioctl_hdio_Xabbrev_OBJECTS) $(ioctl_hdio_Xabbrev_DEPENDENCIES) $(EXTRA_ioctl_hdio_Xabbrev_DEPENDENCIES) 
+       @rm -f ioctl_hdio-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_hdio_Xabbrev_OBJECTS) $(ioctl_hdio_Xabbrev_LDADD) $(LIBS)
+
+ioctl_hdio-Xraw$(EXEEXT): $(ioctl_hdio_Xraw_OBJECTS) $(ioctl_hdio_Xraw_DEPENDENCIES) $(EXTRA_ioctl_hdio_Xraw_DEPENDENCIES) 
+       @rm -f ioctl_hdio-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_hdio_Xraw_OBJECTS) $(ioctl_hdio_Xraw_LDADD) $(LIBS)
+
+ioctl_hdio-Xverbose$(EXEEXT): $(ioctl_hdio_Xverbose_OBJECTS) $(ioctl_hdio_Xverbose_DEPENDENCIES) $(EXTRA_ioctl_hdio_Xverbose_DEPENDENCIES) 
+       @rm -f ioctl_hdio-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_hdio_Xverbose_OBJECTS) $(ioctl_hdio_Xverbose_LDADD) $(LIBS)
+
+ioctl_hdio-success$(EXEEXT): $(ioctl_hdio_success_OBJECTS) $(ioctl_hdio_success_DEPENDENCIES) $(EXTRA_ioctl_hdio_success_DEPENDENCIES) 
+       @rm -f ioctl_hdio-success$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_hdio_success_OBJECTS) $(ioctl_hdio_success_LDADD) $(LIBS)
+
+ioctl_hdio-success-Xabbrev$(EXEEXT): $(ioctl_hdio_success_Xabbrev_OBJECTS) $(ioctl_hdio_success_Xabbrev_DEPENDENCIES) $(EXTRA_ioctl_hdio_success_Xabbrev_DEPENDENCIES) 
+       @rm -f ioctl_hdio-success-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_hdio_success_Xabbrev_OBJECTS) $(ioctl_hdio_success_Xabbrev_LDADD) $(LIBS)
+
+ioctl_hdio-success-Xraw$(EXEEXT): $(ioctl_hdio_success_Xraw_OBJECTS) $(ioctl_hdio_success_Xraw_DEPENDENCIES) $(EXTRA_ioctl_hdio_success_Xraw_DEPENDENCIES) 
+       @rm -f ioctl_hdio-success-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_hdio_success_Xraw_OBJECTS) $(ioctl_hdio_success_Xraw_LDADD) $(LIBS)
+
+ioctl_hdio-success-Xverbose$(EXEEXT): $(ioctl_hdio_success_Xverbose_OBJECTS) $(ioctl_hdio_success_Xverbose_DEPENDENCIES) $(EXTRA_ioctl_hdio_success_Xverbose_DEPENDENCIES) 
+       @rm -f ioctl_hdio-success-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_hdio_success_Xverbose_OBJECTS) $(ioctl_hdio_success_Xverbose_LDADD) $(LIBS)
+
+ioctl_hdio-success-v$(EXEEXT): $(ioctl_hdio_success_v_OBJECTS) $(ioctl_hdio_success_v_DEPENDENCIES) $(EXTRA_ioctl_hdio_success_v_DEPENDENCIES) 
+       @rm -f ioctl_hdio-success-v$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_hdio_success_v_OBJECTS) $(ioctl_hdio_success_v_LDADD) $(LIBS)
+
+ioctl_hdio-success-v-Xabbrev$(EXEEXT): $(ioctl_hdio_success_v_Xabbrev_OBJECTS) $(ioctl_hdio_success_v_Xabbrev_DEPENDENCIES) $(EXTRA_ioctl_hdio_success_v_Xabbrev_DEPENDENCIES) 
+       @rm -f ioctl_hdio-success-v-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_hdio_success_v_Xabbrev_OBJECTS) $(ioctl_hdio_success_v_Xabbrev_LDADD) $(LIBS)
+
+ioctl_hdio-success-v-Xraw$(EXEEXT): $(ioctl_hdio_success_v_Xraw_OBJECTS) $(ioctl_hdio_success_v_Xraw_DEPENDENCIES) $(EXTRA_ioctl_hdio_success_v_Xraw_DEPENDENCIES) 
+       @rm -f ioctl_hdio-success-v-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_hdio_success_v_Xraw_OBJECTS) $(ioctl_hdio_success_v_Xraw_LDADD) $(LIBS)
+
+ioctl_hdio-success-v-Xverbose$(EXEEXT): $(ioctl_hdio_success_v_Xverbose_OBJECTS) $(ioctl_hdio_success_v_Xverbose_DEPENDENCIES) $(EXTRA_ioctl_hdio_success_v_Xverbose_DEPENDENCIES) 
+       @rm -f ioctl_hdio-success-v-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_hdio_success_v_Xverbose_OBJECTS) $(ioctl_hdio_success_v_Xverbose_LDADD) $(LIBS)
+
+ioctl_hdio-v$(EXEEXT): $(ioctl_hdio_v_OBJECTS) $(ioctl_hdio_v_DEPENDENCIES) $(EXTRA_ioctl_hdio_v_DEPENDENCIES) 
+       @rm -f ioctl_hdio-v$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_hdio_v_OBJECTS) $(ioctl_hdio_v_LDADD) $(LIBS)
+
+ioctl_hdio-v-Xabbrev$(EXEEXT): $(ioctl_hdio_v_Xabbrev_OBJECTS) $(ioctl_hdio_v_Xabbrev_DEPENDENCIES) $(EXTRA_ioctl_hdio_v_Xabbrev_DEPENDENCIES) 
+       @rm -f ioctl_hdio-v-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_hdio_v_Xabbrev_OBJECTS) $(ioctl_hdio_v_Xabbrev_LDADD) $(LIBS)
+
+ioctl_hdio-v-Xraw$(EXEEXT): $(ioctl_hdio_v_Xraw_OBJECTS) $(ioctl_hdio_v_Xraw_DEPENDENCIES) $(EXTRA_ioctl_hdio_v_Xraw_DEPENDENCIES) 
+       @rm -f ioctl_hdio-v-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_hdio_v_Xraw_OBJECTS) $(ioctl_hdio_v_Xraw_LDADD) $(LIBS)
+
+ioctl_hdio-v-Xverbose$(EXEEXT): $(ioctl_hdio_v_Xverbose_OBJECTS) $(ioctl_hdio_v_Xverbose_DEPENDENCIES) $(EXTRA_ioctl_hdio_v_Xverbose_DEPENDENCIES) 
+       @rm -f ioctl_hdio-v-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_hdio_v_Xverbose_OBJECTS) $(ioctl_hdio_v_Xverbose_LDADD) $(LIBS)
+
 ioctl_inotify$(EXEEXT): $(ioctl_inotify_OBJECTS) $(ioctl_inotify_DEPENDENCIES) $(EXTRA_ioctl_inotify_DEPENDENCIES) 
        @rm -f ioctl_inotify$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(ioctl_inotify_OBJECTS) $(ioctl_inotify_LDADD) $(LIBS)
@@ -5845,6 +8007,10 @@ ioctl_sock_gifconf$(EXEEXT): $(ioctl_sock_gifconf_OBJECTS) $(ioctl_sock_gifconf_
        @rm -f ioctl_sock_gifconf$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(ioctl_sock_gifconf_OBJECTS) $(ioctl_sock_gifconf_LDADD) $(LIBS)
 
+ioctl_tee$(EXEEXT): $(ioctl_tee_OBJECTS) $(ioctl_tee_DEPENDENCIES) $(EXTRA_ioctl_tee_DEPENDENCIES) 
+       @rm -f ioctl_tee$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_tee_OBJECTS) $(ioctl_tee_LDADD) $(LIBS)
+
 ioctl_uffdio$(EXEEXT): $(ioctl_uffdio_OBJECTS) $(ioctl_uffdio_DEPENDENCIES) $(EXTRA_ioctl_uffdio_DEPENDENCIES) 
        @rm -f ioctl_uffdio$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(ioctl_uffdio_OBJECTS) $(ioctl_uffdio_LDADD) $(LIBS)
@@ -5853,6 +8019,70 @@ ioctl_v4l2$(EXEEXT): $(ioctl_v4l2_OBJECTS) $(ioctl_v4l2_DEPENDENCIES) $(EXTRA_io
        @rm -f ioctl_v4l2$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_OBJECTS) $(ioctl_v4l2_LDADD) $(LIBS)
 
+ioctl_v4l2-Xabbrev$(EXEEXT): $(ioctl_v4l2_Xabbrev_OBJECTS) $(ioctl_v4l2_Xabbrev_DEPENDENCIES) $(EXTRA_ioctl_v4l2_Xabbrev_DEPENDENCIES) 
+       @rm -f ioctl_v4l2-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_Xabbrev_OBJECTS) $(ioctl_v4l2_Xabbrev_LDADD) $(LIBS)
+
+ioctl_v4l2-Xraw$(EXEEXT): $(ioctl_v4l2_Xraw_OBJECTS) $(ioctl_v4l2_Xraw_DEPENDENCIES) $(EXTRA_ioctl_v4l2_Xraw_DEPENDENCIES) 
+       @rm -f ioctl_v4l2-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_Xraw_OBJECTS) $(ioctl_v4l2_Xraw_LDADD) $(LIBS)
+
+ioctl_v4l2-Xverbose$(EXEEXT): $(ioctl_v4l2_Xverbose_OBJECTS) $(ioctl_v4l2_Xverbose_DEPENDENCIES) $(EXTRA_ioctl_v4l2_Xverbose_DEPENDENCIES) 
+       @rm -f ioctl_v4l2-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_Xverbose_OBJECTS) $(ioctl_v4l2_Xverbose_LDADD) $(LIBS)
+
+ioctl_v4l2-success$(EXEEXT): $(ioctl_v4l2_success_OBJECTS) $(ioctl_v4l2_success_DEPENDENCIES) $(EXTRA_ioctl_v4l2_success_DEPENDENCIES) 
+       @rm -f ioctl_v4l2-success$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_success_OBJECTS) $(ioctl_v4l2_success_LDADD) $(LIBS)
+
+ioctl_v4l2-success-Xabbrev$(EXEEXT): $(ioctl_v4l2_success_Xabbrev_OBJECTS) $(ioctl_v4l2_success_Xabbrev_DEPENDENCIES) $(EXTRA_ioctl_v4l2_success_Xabbrev_DEPENDENCIES) 
+       @rm -f ioctl_v4l2-success-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_success_Xabbrev_OBJECTS) $(ioctl_v4l2_success_Xabbrev_LDADD) $(LIBS)
+
+ioctl_v4l2-success-Xraw$(EXEEXT): $(ioctl_v4l2_success_Xraw_OBJECTS) $(ioctl_v4l2_success_Xraw_DEPENDENCIES) $(EXTRA_ioctl_v4l2_success_Xraw_DEPENDENCIES) 
+       @rm -f ioctl_v4l2-success-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_success_Xraw_OBJECTS) $(ioctl_v4l2_success_Xraw_LDADD) $(LIBS)
+
+ioctl_v4l2-success-Xverbose$(EXEEXT): $(ioctl_v4l2_success_Xverbose_OBJECTS) $(ioctl_v4l2_success_Xverbose_DEPENDENCIES) $(EXTRA_ioctl_v4l2_success_Xverbose_DEPENDENCIES) 
+       @rm -f ioctl_v4l2-success-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_success_Xverbose_OBJECTS) $(ioctl_v4l2_success_Xverbose_LDADD) $(LIBS)
+
+ioctl_v4l2-success-v$(EXEEXT): $(ioctl_v4l2_success_v_OBJECTS) $(ioctl_v4l2_success_v_DEPENDENCIES) $(EXTRA_ioctl_v4l2_success_v_DEPENDENCIES) 
+       @rm -f ioctl_v4l2-success-v$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_success_v_OBJECTS) $(ioctl_v4l2_success_v_LDADD) $(LIBS)
+
+ioctl_v4l2-success-v-Xabbrev$(EXEEXT): $(ioctl_v4l2_success_v_Xabbrev_OBJECTS) $(ioctl_v4l2_success_v_Xabbrev_DEPENDENCIES) $(EXTRA_ioctl_v4l2_success_v_Xabbrev_DEPENDENCIES) 
+       @rm -f ioctl_v4l2-success-v-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_success_v_Xabbrev_OBJECTS) $(ioctl_v4l2_success_v_Xabbrev_LDADD) $(LIBS)
+
+ioctl_v4l2-success-v-Xraw$(EXEEXT): $(ioctl_v4l2_success_v_Xraw_OBJECTS) $(ioctl_v4l2_success_v_Xraw_DEPENDENCIES) $(EXTRA_ioctl_v4l2_success_v_Xraw_DEPENDENCIES) 
+       @rm -f ioctl_v4l2-success-v-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_success_v_Xraw_OBJECTS) $(ioctl_v4l2_success_v_Xraw_LDADD) $(LIBS)
+
+ioctl_v4l2-success-v-Xverbose$(EXEEXT): $(ioctl_v4l2_success_v_Xverbose_OBJECTS) $(ioctl_v4l2_success_v_Xverbose_DEPENDENCIES) $(EXTRA_ioctl_v4l2_success_v_Xverbose_DEPENDENCIES) 
+       @rm -f ioctl_v4l2-success-v-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_success_v_Xverbose_OBJECTS) $(ioctl_v4l2_success_v_Xverbose_LDADD) $(LIBS)
+
+ioctl_v4l2-v$(EXEEXT): $(ioctl_v4l2_v_OBJECTS) $(ioctl_v4l2_v_DEPENDENCIES) $(EXTRA_ioctl_v4l2_v_DEPENDENCIES) 
+       @rm -f ioctl_v4l2-v$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_v_OBJECTS) $(ioctl_v4l2_v_LDADD) $(LIBS)
+
+ioctl_v4l2-v-Xabbrev$(EXEEXT): $(ioctl_v4l2_v_Xabbrev_OBJECTS) $(ioctl_v4l2_v_Xabbrev_DEPENDENCIES) $(EXTRA_ioctl_v4l2_v_Xabbrev_DEPENDENCIES) 
+       @rm -f ioctl_v4l2-v-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_v_Xabbrev_OBJECTS) $(ioctl_v4l2_v_Xabbrev_LDADD) $(LIBS)
+
+ioctl_v4l2-v-Xraw$(EXEEXT): $(ioctl_v4l2_v_Xraw_OBJECTS) $(ioctl_v4l2_v_Xraw_DEPENDENCIES) $(EXTRA_ioctl_v4l2_v_Xraw_DEPENDENCIES) 
+       @rm -f ioctl_v4l2-v-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_v_Xraw_OBJECTS) $(ioctl_v4l2_v_Xraw_LDADD) $(LIBS)
+
+ioctl_v4l2-v-Xverbose$(EXEEXT): $(ioctl_v4l2_v_Xverbose_OBJECTS) $(ioctl_v4l2_v_Xverbose_DEPENDENCIES) $(EXTRA_ioctl_v4l2_v_Xverbose_DEPENDENCIES) 
+       @rm -f ioctl_v4l2-v-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_v_Xverbose_OBJECTS) $(ioctl_v4l2_v_Xverbose_LDADD) $(LIBS)
+
+ioctl_watchdog$(EXEEXT): $(ioctl_watchdog_OBJECTS) $(ioctl_watchdog_DEPENDENCIES) $(EXTRA_ioctl_watchdog_DEPENDENCIES) 
+       @rm -f ioctl_watchdog$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_watchdog_OBJECTS) $(ioctl_watchdog_LDADD) $(LIBS)
+
 ioperm$(EXEEXT): $(ioperm_OBJECTS) $(ioperm_DEPENDENCIES) $(EXTRA_ioperm_DEPENDENCIES) 
        @rm -f ioperm$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(ioperm_OBJECTS) $(ioperm_LDADD) $(LIBS)
@@ -5865,6 +8095,10 @@ ioprio$(EXEEXT): $(ioprio_OBJECTS) $(ioprio_DEPENDENCIES) $(EXTRA_ioprio_DEPENDE
        @rm -f ioprio$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(ioprio_OBJECTS) $(ioprio_LDADD) $(LIBS)
 
+ioprio--pidns-translation$(EXEEXT): $(ioprio__pidns_translation_OBJECTS) $(ioprio__pidns_translation_DEPENDENCIES) $(EXTRA_ioprio__pidns_translation_DEPENDENCIES) 
+       @rm -f ioprio--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioprio__pidns_translation_OBJECTS) $(ioprio__pidns_translation_LDADD) $(LIBS)
+
 ioprio-Xabbrev$(EXEEXT): $(ioprio_Xabbrev_OBJECTS) $(ioprio_Xabbrev_DEPENDENCIES) $(EXTRA_ioprio_Xabbrev_DEPENDENCIES) 
        @rm -f ioprio-Xabbrev$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(ioprio_Xabbrev_OBJECTS) $(ioprio_Xabbrev_LDADD) $(LIBS)
@@ -5961,6 +8195,10 @@ kcmp-y$(EXEEXT): $(kcmp_y_OBJECTS) $(kcmp_y_DEPENDENCIES) $(EXTRA_kcmp_y_DEPENDE
        @rm -f kcmp-y$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(kcmp_y_OBJECTS) $(kcmp_y_LDADD) $(LIBS)
 
+kcmp-y--pidns-translation$(EXEEXT): $(kcmp_y__pidns_translation_OBJECTS) $(kcmp_y__pidns_translation_DEPENDENCIES) $(EXTRA_kcmp_y__pidns_translation_DEPENDENCIES) 
+       @rm -f kcmp-y--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(kcmp_y__pidns_translation_OBJECTS) $(kcmp_y__pidns_translation_LDADD) $(LIBS)
+
 kern_features$(EXEEXT): $(kern_features_OBJECTS) $(kern_features_DEPENDENCIES) $(EXTRA_kern_features_DEPENDENCIES) 
        @rm -f kern_features$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(kern_features_OBJECTS) $(kern_features_LDADD) $(LIBS)
@@ -6009,6 +8247,10 @@ kill$(EXEEXT): $(kill_OBJECTS) $(kill_DEPENDENCIES) $(EXTRA_kill_DEPENDENCIES)
        @rm -f kill$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(kill_OBJECTS) $(kill_LDADD) $(LIBS)
 
+kill--pidns-translation$(EXEEXT): $(kill__pidns_translation_OBJECTS) $(kill__pidns_translation_DEPENDENCIES) $(EXTRA_kill__pidns_translation_DEPENDENCIES) 
+       @rm -f kill--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(kill__pidns_translation_OBJECTS) $(kill__pidns_translation_LDADD) $(LIBS)
+
 kill_child$(EXEEXT): $(kill_child_OBJECTS) $(kill_child_DEPENDENCIES) $(EXTRA_kill_child_DEPENDENCIES) 
        @rm -f kill_child$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(kill_child_OBJECTS) $(kill_child_LDADD) $(LIBS)
@@ -6069,10 +8311,30 @@ madvise$(EXEEXT): $(madvise_OBJECTS) $(madvise_DEPENDENCIES) $(EXTRA_madvise_DEP
        @rm -f madvise$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(madvise_OBJECTS) $(madvise_LDADD) $(LIBS)
 
+maybe_switch_current_tcp$(EXEEXT): $(maybe_switch_current_tcp_OBJECTS) $(maybe_switch_current_tcp_DEPENDENCIES) $(EXTRA_maybe_switch_current_tcp_DEPENDENCIES) 
+       @rm -f maybe_switch_current_tcp$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(maybe_switch_current_tcp_OBJECTS) $(maybe_switch_current_tcp_LDADD) $(LIBS)
+
+maybe_switch_current_tcp--quiet-thread-execve$(EXEEXT): $(maybe_switch_current_tcp__quiet_thread_execve_OBJECTS) $(maybe_switch_current_tcp__quiet_thread_execve_DEPENDENCIES) $(EXTRA_maybe_switch_current_tcp__quiet_thread_execve_DEPENDENCIES) 
+       @rm -f maybe_switch_current_tcp--quiet-thread-execve$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(maybe_switch_current_tcp__quiet_thread_execve_OBJECTS) $(maybe_switch_current_tcp__quiet_thread_execve_LDADD) $(LIBS)
+
 mbind$(EXEEXT): $(mbind_OBJECTS) $(mbind_DEPENDENCIES) $(EXTRA_mbind_DEPENDENCIES) 
        @rm -f mbind$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(mbind_OBJECTS) $(mbind_LDADD) $(LIBS)
 
+mbind-Xabbrev$(EXEEXT): $(mbind_Xabbrev_OBJECTS) $(mbind_Xabbrev_DEPENDENCIES) $(EXTRA_mbind_Xabbrev_DEPENDENCIES) 
+       @rm -f mbind-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(mbind_Xabbrev_OBJECTS) $(mbind_Xabbrev_LDADD) $(LIBS)
+
+mbind-Xraw$(EXEEXT): $(mbind_Xraw_OBJECTS) $(mbind_Xraw_DEPENDENCIES) $(EXTRA_mbind_Xraw_DEPENDENCIES) 
+       @rm -f mbind-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(mbind_Xraw_OBJECTS) $(mbind_Xraw_LDADD) $(LIBS)
+
+mbind-Xverbose$(EXEEXT): $(mbind_Xverbose_OBJECTS) $(mbind_Xverbose_DEPENDENCIES) $(EXTRA_mbind_Xverbose_DEPENDENCIES) 
+       @rm -f mbind-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(mbind_Xverbose_OBJECTS) $(mbind_Xverbose_LDADD) $(LIBS)
+
 membarrier$(EXEEXT): $(membarrier_OBJECTS) $(membarrier_DEPENDENCIES) $(EXTRA_membarrier_DEPENDENCIES) 
        @rm -f membarrier$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(membarrier_OBJECTS) $(membarrier_LDADD) $(LIBS)
@@ -6097,6 +8359,10 @@ migrate_pages$(EXEEXT): $(migrate_pages_OBJECTS) $(migrate_pages_DEPENDENCIES) $
        @rm -f migrate_pages$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(migrate_pages_OBJECTS) $(migrate_pages_LDADD) $(LIBS)
 
+migrate_pages--pidns-translation$(EXEEXT): $(migrate_pages__pidns_translation_OBJECTS) $(migrate_pages__pidns_translation_DEPENDENCIES) $(EXTRA_migrate_pages__pidns_translation_DEPENDENCIES) 
+       @rm -f migrate_pages--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(migrate_pages__pidns_translation_OBJECTS) $(migrate_pages__pidns_translation_LDADD) $(LIBS)
+
 mincore$(EXEEXT): $(mincore_OBJECTS) $(mincore_DEPENDENCIES) $(EXTRA_mincore_DEPENDENCIES) 
        @rm -f mincore$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(mincore_OBJECTS) $(mincore_LDADD) $(LIBS)
@@ -6197,10 +8463,22 @@ mount-Xverbose$(EXEEXT): $(mount_Xverbose_OBJECTS) $(mount_Xverbose_DEPENDENCIES
        @rm -f mount-Xverbose$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(mount_Xverbose_OBJECTS) $(mount_Xverbose_LDADD) $(LIBS)
 
+move_mount$(EXEEXT): $(move_mount_OBJECTS) $(move_mount_DEPENDENCIES) $(EXTRA_move_mount_DEPENDENCIES) 
+       @rm -f move_mount$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(move_mount_OBJECTS) $(move_mount_LDADD) $(LIBS)
+
+move_mount-P$(EXEEXT): $(move_mount_P_OBJECTS) $(move_mount_P_DEPENDENCIES) $(EXTRA_move_mount_P_DEPENDENCIES) 
+       @rm -f move_mount-P$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(move_mount_P_OBJECTS) $(move_mount_P_LDADD) $(LIBS)
+
 move_pages$(EXEEXT): $(move_pages_OBJECTS) $(move_pages_DEPENDENCIES) $(EXTRA_move_pages_DEPENDENCIES) 
        @rm -f move_pages$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(move_pages_OBJECTS) $(move_pages_LDADD) $(LIBS)
 
+move_pages--pidns-translation$(EXEEXT): $(move_pages__pidns_translation_OBJECTS) $(move_pages__pidns_translation_DEPENDENCIES) $(EXTRA_move_pages__pidns_translation_DEPENDENCIES) 
+       @rm -f move_pages--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(move_pages__pidns_translation_OBJECTS) $(move_pages__pidns_translation_LDADD) $(LIBS)
+
 move_pages-Xabbrev$(EXEEXT): $(move_pages_Xabbrev_OBJECTS) $(move_pages_Xabbrev_DEPENDENCIES) $(EXTRA_move_pages_Xabbrev_DEPENDENCIES) 
        @rm -f move_pages-Xabbrev$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(move_pages_Xabbrev_OBJECTS) $(move_pages_Xabbrev_LDADD) $(LIBS)
@@ -6249,6 +8527,22 @@ nanosleep$(EXEEXT): $(nanosleep_OBJECTS) $(nanosleep_DEPENDENCIES) $(EXTRA_nanos
        @rm -f nanosleep$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(nanosleep_OBJECTS) $(nanosleep_LDADD) $(LIBS)
 
+net--decode-fds-dev-netlink$(EXEEXT): $(net__decode_fds_dev_netlink_OBJECTS) $(net__decode_fds_dev_netlink_DEPENDENCIES) $(EXTRA_net__decode_fds_dev_netlink_DEPENDENCIES) 
+       @rm -f net--decode-fds-dev-netlink$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(net__decode_fds_dev_netlink_OBJECTS) $(net__decode_fds_dev_netlink_LDADD) $(LIBS)
+
+net--decode-fds-none-netlink$(EXEEXT): $(net__decode_fds_none_netlink_OBJECTS) $(net__decode_fds_none_netlink_DEPENDENCIES) $(EXTRA_net__decode_fds_none_netlink_DEPENDENCIES) 
+       @rm -f net--decode-fds-none-netlink$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(net__decode_fds_none_netlink_OBJECTS) $(net__decode_fds_none_netlink_LDADD) $(LIBS)
+
+net--decode-fds-path-netlink$(EXEEXT): $(net__decode_fds_path_netlink_OBJECTS) $(net__decode_fds_path_netlink_DEPENDENCIES) $(EXTRA_net__decode_fds_path_netlink_DEPENDENCIES) 
+       @rm -f net--decode-fds-path-netlink$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(net__decode_fds_path_netlink_OBJECTS) $(net__decode_fds_path_netlink_LDADD) $(LIBS)
+
+net--decode-fds-socket-netlink$(EXEEXT): $(net__decode_fds_socket_netlink_OBJECTS) $(net__decode_fds_socket_netlink_DEPENDENCIES) $(EXTRA_net__decode_fds_socket_netlink_DEPENDENCIES) 
+       @rm -f net--decode-fds-socket-netlink$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(net__decode_fds_socket_netlink_OBJECTS) $(net__decode_fds_socket_netlink_LDADD) $(LIBS)
+
 net-accept-connect$(EXEEXT): $(net_accept_connect_OBJECTS) $(net_accept_connect_DEPENDENCIES) $(EXTRA_net_accept_connect_DEPENDENCIES) 
        @rm -f net-accept-connect$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(net_accept_connect_OBJECTS) $(net_accept_connect_LDADD) $(LIBS)
@@ -6277,6 +8571,10 @@ net-sockaddr$(EXEEXT): $(net_sockaddr_OBJECTS) $(net_sockaddr_DEPENDENCIES) $(EX
        @rm -f net-sockaddr$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(net_sockaddr_OBJECTS) $(net_sockaddr_LDADD) $(LIBS)
 
+net-sockaddr--pidns-translation$(EXEEXT): $(net_sockaddr__pidns_translation_OBJECTS) $(net_sockaddr__pidns_translation_DEPENDENCIES) $(EXTRA_net_sockaddr__pidns_translation_DEPENDENCIES) 
+       @rm -f net-sockaddr--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(net_sockaddr__pidns_translation_OBJECTS) $(net_sockaddr__pidns_translation_LDADD) $(LIBS)
+
 net-tpacket_req$(EXEEXT): $(net_tpacket_req_OBJECTS) $(net_tpacket_req_DEPENDENCIES) $(EXTRA_net_tpacket_req_DEPENDENCIES) 
        @rm -f net-tpacket_req$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(net_tpacket_req_OBJECTS) $(net_tpacket_req_LDADD) $(LIBS)
@@ -6313,6 +8611,10 @@ netlink_audit$(EXEEXT): $(netlink_audit_OBJECTS) $(netlink_audit_DEPENDENCIES) $
        @rm -f netlink_audit$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(netlink_audit_OBJECTS) $(netlink_audit_LDADD) $(LIBS)
 
+netlink_audit--pidns-translation$(EXEEXT): $(netlink_audit__pidns_translation_OBJECTS) $(netlink_audit__pidns_translation_DEPENDENCIES) $(EXTRA_netlink_audit__pidns_translation_DEPENDENCIES) 
+       @rm -f netlink_audit--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(netlink_audit__pidns_translation_OBJECTS) $(netlink_audit__pidns_translation_LDADD) $(LIBS)
+
 netlink_crypto$(EXEEXT): $(netlink_crypto_OBJECTS) $(netlink_crypto_DEPENDENCIES) $(EXTRA_netlink_crypto_DEPENDENCIES) 
        @rm -f netlink_crypto$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(netlink_crypto_OBJECTS) $(netlink_crypto_LDADD) $(LIBS)
@@ -6461,6 +8763,10 @@ nlattr_ifla_xdp$(EXEEXT): $(nlattr_ifla_xdp_OBJECTS) $(nlattr_ifla_xdp_DEPENDENC
        @rm -f nlattr_ifla_xdp$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(nlattr_ifla_xdp_OBJECTS) $(nlattr_ifla_xdp_LDADD) $(LIBS)
 
+nlattr_ifla_xdp-y$(EXEEXT): $(nlattr_ifla_xdp_y_OBJECTS) $(nlattr_ifla_xdp_y_DEPENDENCIES) $(EXTRA_nlattr_ifla_xdp_y_DEPENDENCIES) 
+       @rm -f nlattr_ifla_xdp-y$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(nlattr_ifla_xdp_y_OBJECTS) $(nlattr_ifla_xdp_y_LDADD) $(LIBS)
+
 nlattr_inet_diag_msg$(EXEEXT): $(nlattr_inet_diag_msg_OBJECTS) $(nlattr_inet_diag_msg_DEPENDENCIES) $(EXTRA_nlattr_inet_diag_msg_DEPENDENCIES) 
        @rm -f nlattr_inet_diag_msg$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(nlattr_inet_diag_msg_OBJECTS) $(nlattr_inet_diag_msg_LDADD) $(LIBS)
@@ -6601,10 +8907,58 @@ open$(EXEEXT): $(open_OBJECTS) $(open_DEPENDENCIES) $(EXTRA_open_DEPENDENCIES)
        @rm -f open$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(open_OBJECTS) $(open_LDADD) $(LIBS)
 
+open_tree$(EXEEXT): $(open_tree_OBJECTS) $(open_tree_DEPENDENCIES) $(EXTRA_open_tree_DEPENDENCIES) 
+       @rm -f open_tree$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(open_tree_OBJECTS) $(open_tree_LDADD) $(LIBS)
+
+open_tree-P$(EXEEXT): $(open_tree_P_OBJECTS) $(open_tree_P_DEPENDENCIES) $(EXTRA_open_tree_P_DEPENDENCIES) 
+       @rm -f open_tree-P$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(open_tree_P_OBJECTS) $(open_tree_P_LDADD) $(LIBS)
+
 openat$(EXEEXT): $(openat_OBJECTS) $(openat_DEPENDENCIES) $(EXTRA_openat_DEPENDENCIES) 
        @rm -f openat$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(openat_OBJECTS) $(openat_LDADD) $(LIBS)
 
+openat2$(EXEEXT): $(openat2_OBJECTS) $(openat2_DEPENDENCIES) $(EXTRA_openat2_DEPENDENCIES) 
+       @rm -f openat2$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(openat2_OBJECTS) $(openat2_LDADD) $(LIBS)
+
+openat2-Xabbrev$(EXEEXT): $(openat2_Xabbrev_OBJECTS) $(openat2_Xabbrev_DEPENDENCIES) $(EXTRA_openat2_Xabbrev_DEPENDENCIES) 
+       @rm -f openat2-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(openat2_Xabbrev_OBJECTS) $(openat2_Xabbrev_LDADD) $(LIBS)
+
+openat2-Xraw$(EXEEXT): $(openat2_Xraw_OBJECTS) $(openat2_Xraw_DEPENDENCIES) $(EXTRA_openat2_Xraw_DEPENDENCIES) 
+       @rm -f openat2-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(openat2_Xraw_OBJECTS) $(openat2_Xraw_LDADD) $(LIBS)
+
+openat2-Xverbose$(EXEEXT): $(openat2_Xverbose_OBJECTS) $(openat2_Xverbose_DEPENDENCIES) $(EXTRA_openat2_Xverbose_DEPENDENCIES) 
+       @rm -f openat2-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(openat2_Xverbose_OBJECTS) $(openat2_Xverbose_LDADD) $(LIBS)
+
+openat2-v$(EXEEXT): $(openat2_v_OBJECTS) $(openat2_v_DEPENDENCIES) $(EXTRA_openat2_v_DEPENDENCIES) 
+       @rm -f openat2-v$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(openat2_v_OBJECTS) $(openat2_v_LDADD) $(LIBS)
+
+openat2-v-y$(EXEEXT): $(openat2_v_y_OBJECTS) $(openat2_v_y_DEPENDENCIES) $(EXTRA_openat2_v_y_DEPENDENCIES) 
+       @rm -f openat2-v-y$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(openat2_v_y_OBJECTS) $(openat2_v_y_LDADD) $(LIBS)
+
+openat2-v-y-Xabbrev$(EXEEXT): $(openat2_v_y_Xabbrev_OBJECTS) $(openat2_v_y_Xabbrev_DEPENDENCIES) $(EXTRA_openat2_v_y_Xabbrev_DEPENDENCIES) 
+       @rm -f openat2-v-y-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(openat2_v_y_Xabbrev_OBJECTS) $(openat2_v_y_Xabbrev_LDADD) $(LIBS)
+
+openat2-v-y-Xraw$(EXEEXT): $(openat2_v_y_Xraw_OBJECTS) $(openat2_v_y_Xraw_DEPENDENCIES) $(EXTRA_openat2_v_y_Xraw_DEPENDENCIES) 
+       @rm -f openat2-v-y-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(openat2_v_y_Xraw_OBJECTS) $(openat2_v_y_Xraw_LDADD) $(LIBS)
+
+openat2-v-y-Xverbose$(EXEEXT): $(openat2_v_y_Xverbose_OBJECTS) $(openat2_v_y_Xverbose_DEPENDENCIES) $(EXTRA_openat2_v_y_Xverbose_DEPENDENCIES) 
+       @rm -f openat2-v-y-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(openat2_v_y_Xverbose_OBJECTS) $(openat2_v_y_Xverbose_LDADD) $(LIBS)
+
+openat2-y$(EXEEXT): $(openat2_y_OBJECTS) $(openat2_y_DEPENDENCIES) $(EXTRA_openat2_y_DEPENDENCIES) 
+       @rm -f openat2-y$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(openat2_y_OBJECTS) $(openat2_y_LDADD) $(LIBS)
+
 orphaned_process_group$(EXEEXT): $(orphaned_process_group_OBJECTS) $(orphaned_process_group_DEPENDENCIES) $(EXTRA_orphaned_process_group_DEPENDENCIES) 
        @rm -f orphaned_process_group$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(orphaned_process_group_OBJECTS) $(orphaned_process_group_LDADD) $(LIBS)
@@ -6649,10 +9003,62 @@ personality-Xverbose$(EXEEXT): $(personality_Xverbose_OBJECTS) $(personality_Xve
        @rm -f personality-Xverbose$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(personality_Xverbose_OBJECTS) $(personality_Xverbose_LDADD) $(LIBS)
 
+pidfd_getfd$(EXEEXT): $(pidfd_getfd_OBJECTS) $(pidfd_getfd_DEPENDENCIES) $(EXTRA_pidfd_getfd_DEPENDENCIES) 
+       @rm -f pidfd_getfd$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pidfd_getfd_OBJECTS) $(pidfd_getfd_LDADD) $(LIBS)
+
+pidfd_getfd-y$(EXEEXT): $(pidfd_getfd_y_OBJECTS) $(pidfd_getfd_y_DEPENDENCIES) $(EXTRA_pidfd_getfd_y_DEPENDENCIES) 
+       @rm -f pidfd_getfd-y$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pidfd_getfd_y_OBJECTS) $(pidfd_getfd_y_LDADD) $(LIBS)
+
+pidfd_getfd-yy$(EXEEXT): $(pidfd_getfd_yy_OBJECTS) $(pidfd_getfd_yy_DEPENDENCIES) $(EXTRA_pidfd_getfd_yy_DEPENDENCIES) 
+       @rm -f pidfd_getfd-yy$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pidfd_getfd_yy_OBJECTS) $(pidfd_getfd_yy_LDADD) $(LIBS)
+
+pidfd_open$(EXEEXT): $(pidfd_open_OBJECTS) $(pidfd_open_DEPENDENCIES) $(EXTRA_pidfd_open_DEPENDENCIES) 
+       @rm -f pidfd_open$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pidfd_open_OBJECTS) $(pidfd_open_LDADD) $(LIBS)
+
+pidfd_open--decode-fd-path$(EXEEXT): $(pidfd_open__decode_fd_path_OBJECTS) $(pidfd_open__decode_fd_path_DEPENDENCIES) $(EXTRA_pidfd_open__decode_fd_path_DEPENDENCIES) 
+       @rm -f pidfd_open--decode-fd-path$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pidfd_open__decode_fd_path_OBJECTS) $(pidfd_open__decode_fd_path_LDADD) $(LIBS)
+
+pidfd_open--decode-fd-pidfd$(EXEEXT): $(pidfd_open__decode_fd_pidfd_OBJECTS) $(pidfd_open__decode_fd_pidfd_DEPENDENCIES) $(EXTRA_pidfd_open__decode_fd_pidfd_DEPENDENCIES) 
+       @rm -f pidfd_open--decode-fd-pidfd$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pidfd_open__decode_fd_pidfd_OBJECTS) $(pidfd_open__decode_fd_pidfd_LDADD) $(LIBS)
+
+pidfd_open--decode-fd-socket$(EXEEXT): $(pidfd_open__decode_fd_socket_OBJECTS) $(pidfd_open__decode_fd_socket_DEPENDENCIES) $(EXTRA_pidfd_open__decode_fd_socket_DEPENDENCIES) 
+       @rm -f pidfd_open--decode-fd-socket$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pidfd_open__decode_fd_socket_OBJECTS) $(pidfd_open__decode_fd_socket_LDADD) $(LIBS)
+
+pidfd_open--pidns-translation$(EXEEXT): $(pidfd_open__pidns_translation_OBJECTS) $(pidfd_open__pidns_translation_DEPENDENCIES) $(EXTRA_pidfd_open__pidns_translation_DEPENDENCIES) 
+       @rm -f pidfd_open--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pidfd_open__pidns_translation_OBJECTS) $(pidfd_open__pidns_translation_LDADD) $(LIBS)
+
+pidfd_open-P$(EXEEXT): $(pidfd_open_P_OBJECTS) $(pidfd_open_P_DEPENDENCIES) $(EXTRA_pidfd_open_P_DEPENDENCIES) 
+       @rm -f pidfd_open-P$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pidfd_open_P_OBJECTS) $(pidfd_open_P_LDADD) $(LIBS)
+
+pidfd_open-y$(EXEEXT): $(pidfd_open_y_OBJECTS) $(pidfd_open_y_DEPENDENCIES) $(EXTRA_pidfd_open_y_DEPENDENCIES) 
+       @rm -f pidfd_open-y$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pidfd_open_y_OBJECTS) $(pidfd_open_y_LDADD) $(LIBS)
+
+pidfd_open-yy$(EXEEXT): $(pidfd_open_yy_OBJECTS) $(pidfd_open_yy_DEPENDENCIES) $(EXTRA_pidfd_open_yy_DEPENDENCIES) 
+       @rm -f pidfd_open-yy$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pidfd_open_yy_OBJECTS) $(pidfd_open_yy_LDADD) $(LIBS)
+
 pidfd_send_signal$(EXEEXT): $(pidfd_send_signal_OBJECTS) $(pidfd_send_signal_DEPENDENCIES) $(EXTRA_pidfd_send_signal_DEPENDENCIES) 
        @rm -f pidfd_send_signal$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(pidfd_send_signal_OBJECTS) $(pidfd_send_signal_LDADD) $(LIBS)
 
+pidfd_send_signal--pidns-translation$(EXEEXT): $(pidfd_send_signal__pidns_translation_OBJECTS) $(pidfd_send_signal__pidns_translation_DEPENDENCIES) $(EXTRA_pidfd_send_signal__pidns_translation_DEPENDENCIES) 
+       @rm -f pidfd_send_signal--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pidfd_send_signal__pidns_translation_OBJECTS) $(pidfd_send_signal__pidns_translation_LDADD) $(LIBS)
+
+pidns-cache$(EXEEXT): $(pidns_cache_OBJECTS) $(pidns_cache_DEPENDENCIES) $(EXTRA_pidns_cache_DEPENDENCIES) 
+       @rm -f pidns-cache$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pidns_cache_OBJECTS) $(pidns_cache_LDADD) $(LIBS)
+
 pipe$(EXEEXT): $(pipe_OBJECTS) $(pipe_DEPENDENCIES) $(EXTRA_pipe_DEPENDENCIES) 
        @rm -f pipe$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(pipe_OBJECTS) $(pipe_LDADD) $(LIBS)
@@ -6757,6 +9163,10 @@ print_maxfd$(EXEEXT): $(print_maxfd_OBJECTS) $(print_maxfd_DEPENDENCIES) $(EXTRA
        @rm -f print_maxfd$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(print_maxfd_OBJECTS) $(print_maxfd_LDADD) $(LIBS)
 
+print_ppid_tracerpid$(EXEEXT): $(print_ppid_tracerpid_OBJECTS) $(print_ppid_tracerpid_DEPENDENCIES) $(EXTRA_print_ppid_tracerpid_DEPENDENCIES) 
+       @rm -f print_ppid_tracerpid$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(print_ppid_tracerpid_OBJECTS) $(print_ppid_tracerpid_LDADD) $(LIBS)
+
 printpath-umovestr$(EXEEXT): $(printpath_umovestr_OBJECTS) $(printpath_umovestr_DEPENDENCIES) $(EXTRA_printpath_umovestr_DEPENDENCIES) 
        @rm -f printpath-umovestr$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(printpath_umovestr_OBJECTS) $(printpath_umovestr_LDADD) $(LIBS)
@@ -6801,14 +9211,26 @@ prlimit64$(EXEEXT): $(prlimit64_OBJECTS) $(prlimit64_DEPENDENCIES) $(EXTRA_prlim
        @rm -f prlimit64$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(prlimit64_OBJECTS) $(prlimit64_LDADD) $(LIBS)
 
+prlimit64--pidns-translation$(EXEEXT): $(prlimit64__pidns_translation_OBJECTS) $(prlimit64__pidns_translation_DEPENDENCIES) $(EXTRA_prlimit64__pidns_translation_DEPENDENCIES) 
+       @rm -f prlimit64--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(prlimit64__pidns_translation_OBJECTS) $(prlimit64__pidns_translation_LDADD) $(LIBS)
+
 process_vm_readv$(EXEEXT): $(process_vm_readv_OBJECTS) $(process_vm_readv_DEPENDENCIES) $(EXTRA_process_vm_readv_DEPENDENCIES) 
        @rm -f process_vm_readv$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(process_vm_readv_OBJECTS) $(process_vm_readv_LDADD) $(LIBS)
 
+process_vm_readv--pidns-translation$(EXEEXT): $(process_vm_readv__pidns_translation_OBJECTS) $(process_vm_readv__pidns_translation_DEPENDENCIES) $(EXTRA_process_vm_readv__pidns_translation_DEPENDENCIES) 
+       @rm -f process_vm_readv--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(process_vm_readv__pidns_translation_OBJECTS) $(process_vm_readv__pidns_translation_LDADD) $(LIBS)
+
 process_vm_writev$(EXEEXT): $(process_vm_writev_OBJECTS) $(process_vm_writev_DEPENDENCIES) $(EXTRA_process_vm_writev_DEPENDENCIES) 
        @rm -f process_vm_writev$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(process_vm_writev_OBJECTS) $(process_vm_writev_LDADD) $(LIBS)
 
+process_vm_writev--pidns-translation$(EXEEXT): $(process_vm_writev__pidns_translation_OBJECTS) $(process_vm_writev__pidns_translation_DEPENDENCIES) $(EXTRA_process_vm_writev__pidns_translation_DEPENDENCIES) 
+       @rm -f process_vm_writev--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(process_vm_writev__pidns_translation_OBJECTS) $(process_vm_writev__pidns_translation_LDADD) $(LIBS)
+
 pselect6$(EXEEXT): $(pselect6_OBJECTS) $(pselect6_DEPENDENCIES) $(EXTRA_pselect6_DEPENDENCIES) 
        @rm -f pselect6$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(pselect6_OBJECTS) $(pselect6_LDADD) $(LIBS)
@@ -6917,10 +9339,18 @@ reboot$(EXEEXT): $(reboot_OBJECTS) $(reboot_DEPENDENCIES) $(EXTRA_reboot_DEPENDE
        @rm -f reboot$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(reboot_OBJECTS) $(reboot_LDADD) $(LIBS)
 
+recv-MSG_TRUNC$(EXEEXT): $(recv_MSG_TRUNC_OBJECTS) $(recv_MSG_TRUNC_DEPENDENCIES) $(EXTRA_recv_MSG_TRUNC_DEPENDENCIES) 
+       @rm -f recv-MSG_TRUNC$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(recv_MSG_TRUNC_OBJECTS) $(recv_MSG_TRUNC_LDADD) $(LIBS)
+
 recvfrom$(EXEEXT): $(recvfrom_OBJECTS) $(recvfrom_DEPENDENCIES) $(EXTRA_recvfrom_DEPENDENCIES) 
        @rm -f recvfrom$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(recvfrom_OBJECTS) $(recvfrom_LDADD) $(LIBS)
 
+recvfrom-MSG_TRUNC$(EXEEXT): $(recvfrom_MSG_TRUNC_OBJECTS) $(recvfrom_MSG_TRUNC_DEPENDENCIES) $(EXTRA_recvfrom_MSG_TRUNC_DEPENDENCIES) 
+       @rm -f recvfrom-MSG_TRUNC$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(recvfrom_MSG_TRUNC_OBJECTS) $(recvfrom_MSG_TRUNC_LDADD) $(LIBS)
+
 recvmmsg-timeout$(EXEEXT): $(recvmmsg_timeout_OBJECTS) $(recvmmsg_timeout_DEPENDENCIES) $(EXTRA_recvmmsg_timeout_DEPENDENCIES) 
        @rm -f recvmmsg-timeout$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(recvmmsg_timeout_OBJECTS) $(recvmmsg_timeout_LDADD) $(LIBS)
@@ -6993,6 +9423,10 @@ rt_sigqueueinfo$(EXEEXT): $(rt_sigqueueinfo_OBJECTS) $(rt_sigqueueinfo_DEPENDENC
        @rm -f rt_sigqueueinfo$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(rt_sigqueueinfo_OBJECTS) $(rt_sigqueueinfo_LDADD) $(LIBS)
 
+rt_sigqueueinfo--pidns-translation$(EXEEXT): $(rt_sigqueueinfo__pidns_translation_OBJECTS) $(rt_sigqueueinfo__pidns_translation_DEPENDENCIES) $(EXTRA_rt_sigqueueinfo__pidns_translation_DEPENDENCIES) 
+       @rm -f rt_sigqueueinfo--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(rt_sigqueueinfo__pidns_translation_OBJECTS) $(rt_sigqueueinfo__pidns_translation_LDADD) $(LIBS)
+
 rt_sigreturn$(EXEEXT): $(rt_sigreturn_OBJECTS) $(rt_sigreturn_DEPENDENCIES) $(EXTRA_rt_sigreturn_DEPENDENCIES) 
        @rm -f rt_sigreturn$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(rt_sigreturn_OBJECTS) $(rt_sigreturn_LDADD) $(LIBS)
@@ -7009,6 +9443,10 @@ rt_tgsigqueueinfo$(EXEEXT): $(rt_tgsigqueueinfo_OBJECTS) $(rt_tgsigqueueinfo_DEP
        @rm -f rt_tgsigqueueinfo$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(rt_tgsigqueueinfo_OBJECTS) $(rt_tgsigqueueinfo_LDADD) $(LIBS)
 
+rt_tgsigqueueinfo--pidns-translation$(EXEEXT): $(rt_tgsigqueueinfo__pidns_translation_OBJECTS) $(rt_tgsigqueueinfo__pidns_translation_DEPENDENCIES) $(EXTRA_rt_tgsigqueueinfo__pidns_translation_DEPENDENCIES) 
+       @rm -f rt_tgsigqueueinfo--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(rt_tgsigqueueinfo__pidns_translation_OBJECTS) $(rt_tgsigqueueinfo__pidns_translation_LDADD) $(LIBS)
+
 run_expect_termsig$(EXEEXT): $(run_expect_termsig_OBJECTS) $(run_expect_termsig_DEPENDENCIES) $(EXTRA_run_expect_termsig_DEPENDENCIES) 
        @rm -f run_expect_termsig$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(run_expect_termsig_OBJECTS) $(run_expect_termsig_LDADD) $(LIBS)
@@ -7049,18 +9487,34 @@ sched_xetaffinity$(EXEEXT): $(sched_xetaffinity_OBJECTS) $(sched_xetaffinity_DEP
        @rm -f sched_xetaffinity$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(sched_xetaffinity_OBJECTS) $(sched_xetaffinity_LDADD) $(LIBS)
 
+sched_xetaffinity--pidns-translation$(EXEEXT): $(sched_xetaffinity__pidns_translation_OBJECTS) $(sched_xetaffinity__pidns_translation_DEPENDENCIES) $(EXTRA_sched_xetaffinity__pidns_translation_DEPENDENCIES) 
+       @rm -f sched_xetaffinity--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(sched_xetaffinity__pidns_translation_OBJECTS) $(sched_xetaffinity__pidns_translation_LDADD) $(LIBS)
+
 sched_xetattr$(EXEEXT): $(sched_xetattr_OBJECTS) $(sched_xetattr_DEPENDENCIES) $(EXTRA_sched_xetattr_DEPENDENCIES) 
        @rm -f sched_xetattr$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(sched_xetattr_OBJECTS) $(sched_xetattr_LDADD) $(LIBS)
 
+sched_xetattr--pidns-translation$(EXEEXT): $(sched_xetattr__pidns_translation_OBJECTS) $(sched_xetattr__pidns_translation_DEPENDENCIES) $(EXTRA_sched_xetattr__pidns_translation_DEPENDENCIES) 
+       @rm -f sched_xetattr--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(sched_xetattr__pidns_translation_OBJECTS) $(sched_xetattr__pidns_translation_LDADD) $(LIBS)
+
 sched_xetparam$(EXEEXT): $(sched_xetparam_OBJECTS) $(sched_xetparam_DEPENDENCIES) $(EXTRA_sched_xetparam_DEPENDENCIES) 
        @rm -f sched_xetparam$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(sched_xetparam_OBJECTS) $(sched_xetparam_LDADD) $(LIBS)
 
+sched_xetparam--pidns-translation$(EXEEXT): $(sched_xetparam__pidns_translation_OBJECTS) $(sched_xetparam__pidns_translation_DEPENDENCIES) $(EXTRA_sched_xetparam__pidns_translation_DEPENDENCIES) 
+       @rm -f sched_xetparam--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(sched_xetparam__pidns_translation_OBJECTS) $(sched_xetparam__pidns_translation_LDADD) $(LIBS)
+
 sched_xetscheduler$(EXEEXT): $(sched_xetscheduler_OBJECTS) $(sched_xetscheduler_DEPENDENCIES) $(EXTRA_sched_xetscheduler_DEPENDENCIES) 
        @rm -f sched_xetscheduler$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(sched_xetscheduler_OBJECTS) $(sched_xetscheduler_LDADD) $(LIBS)
 
+sched_xetscheduler--pidns-translation$(EXEEXT): $(sched_xetscheduler__pidns_translation_OBJECTS) $(sched_xetscheduler__pidns_translation_DEPENDENCIES) $(EXTRA_sched_xetscheduler__pidns_translation_DEPENDENCIES) 
+       @rm -f sched_xetscheduler--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(sched_xetscheduler__pidns_translation_OBJECTS) $(sched_xetscheduler__pidns_translation_LDADD) $(LIBS)
+
 sched_yield$(EXEEXT): $(sched_yield_OBJECTS) $(sched_yield_DEPENDENCIES) $(EXTRA_sched_yield_DEPENDENCIES) 
        @rm -f sched_yield$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(sched_yield_OBJECTS) $(sched_yield_LDADD) $(LIBS)
@@ -7097,6 +9551,14 @@ semop$(EXEEXT): $(semop_OBJECTS) $(semop_DEPENDENCIES) $(EXTRA_semop_DEPENDENCIE
        @rm -f semop$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(semop_OBJECTS) $(semop_LDADD) $(LIBS)
 
+semop-indirect$(EXEEXT): $(semop_indirect_OBJECTS) $(semop_indirect_DEPENDENCIES) $(EXTRA_semop_indirect_DEPENDENCIES) 
+       @rm -f semop-indirect$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(semop_indirect_OBJECTS) $(semop_indirect_LDADD) $(LIBS)
+
+semtimedop$(EXEEXT): $(semtimedop_OBJECTS) $(semtimedop_DEPENDENCIES) $(EXTRA_semtimedop_DEPENDENCIES) 
+       @rm -f semtimedop$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(semtimedop_OBJECTS) $(semtimedop_LDADD) $(LIBS)
+
 sendfile$(EXEEXT): $(sendfile_OBJECTS) $(sendfile_DEPENDENCIES) $(EXTRA_sendfile_DEPENDENCIES) 
        @rm -f sendfile$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(sendfile_OBJECTS) $(sendfile_LDADD) $(LIBS)
@@ -7109,6 +9571,18 @@ set_mempolicy$(EXEEXT): $(set_mempolicy_OBJECTS) $(set_mempolicy_DEPENDENCIES) $
        @rm -f set_mempolicy$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(set_mempolicy_OBJECTS) $(set_mempolicy_LDADD) $(LIBS)
 
+set_mempolicy-Xabbrev$(EXEEXT): $(set_mempolicy_Xabbrev_OBJECTS) $(set_mempolicy_Xabbrev_DEPENDENCIES) $(EXTRA_set_mempolicy_Xabbrev_DEPENDENCIES) 
+       @rm -f set_mempolicy-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(set_mempolicy_Xabbrev_OBJECTS) $(set_mempolicy_Xabbrev_LDADD) $(LIBS)
+
+set_mempolicy-Xraw$(EXEEXT): $(set_mempolicy_Xraw_OBJECTS) $(set_mempolicy_Xraw_DEPENDENCIES) $(EXTRA_set_mempolicy_Xraw_DEPENDENCIES) 
+       @rm -f set_mempolicy-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(set_mempolicy_Xraw_OBJECTS) $(set_mempolicy_Xraw_LDADD) $(LIBS)
+
+set_mempolicy-Xverbose$(EXEEXT): $(set_mempolicy_Xverbose_OBJECTS) $(set_mempolicy_Xverbose_DEPENDENCIES) $(EXTRA_set_mempolicy_Xverbose_DEPENDENCIES) 
+       @rm -f set_mempolicy-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(set_mempolicy_Xverbose_OBJECTS) $(set_mempolicy_Xverbose_LDADD) $(LIBS)
+
 set_ptracer_any$(EXEEXT): $(set_ptracer_any_OBJECTS) $(set_ptracer_any_DEPENDENCIES) $(EXTRA_set_ptracer_any_DEPENDENCIES) 
        @rm -f set_ptracer_any$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(set_ptracer_any_OBJECTS) $(set_ptracer_any_LDADD) $(LIBS)
@@ -7165,6 +9639,10 @@ setns$(EXEEXT): $(setns_OBJECTS) $(setns_DEPENDENCIES) $(EXTRA_setns_DEPENDENCIE
        @rm -f setns$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(setns_OBJECTS) $(setns_LDADD) $(LIBS)
 
+setpgrp-exec$(EXEEXT): $(setpgrp_exec_OBJECTS) $(setpgrp_exec_DEPENDENCIES) $(EXTRA_setpgrp_exec_DEPENDENCIES) 
+       @rm -f setpgrp-exec$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(setpgrp_exec_OBJECTS) $(setpgrp_exec_LDADD) $(LIBS)
+
 setregid$(EXEEXT): $(setregid_OBJECTS) $(setregid_DEPENDENCIES) $(EXTRA_setregid_DEPENDENCIES) 
        @rm -f setregid$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(setregid_OBJECTS) $(setregid_LDADD) $(LIBS)
@@ -7249,6 +9727,10 @@ signal_receive$(EXEEXT): $(signal_receive_OBJECTS) $(signal_receive_DEPENDENCIES
        @rm -f signal_receive$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(signal_receive_OBJECTS) $(signal_receive_LDADD) $(LIBS)
 
+signal_receive--pidns-translation$(EXEEXT): $(signal_receive__pidns_translation_OBJECTS) $(signal_receive__pidns_translation_DEPENDENCIES) $(EXTRA_signal_receive__pidns_translation_DEPENDENCIES) 
+       @rm -f signal_receive--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(signal_receive__pidns_translation_OBJECTS) $(signal_receive__pidns_translation_LDADD) $(LIBS)
+
 signalfd4$(EXEEXT): $(signalfd4_OBJECTS) $(signalfd4_DEPENDENCIES) $(EXTRA_signalfd4_DEPENDENCIES) 
        @rm -f signalfd4$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(signalfd4_OBJECTS) $(signalfd4_LDADD) $(LIBS)
@@ -7285,6 +9767,10 @@ so_peercred$(EXEEXT): $(so_peercred_OBJECTS) $(so_peercred_DEPENDENCIES) $(EXTRA
        @rm -f so_peercred$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(so_peercred_OBJECTS) $(so_peercred_LDADD) $(LIBS)
 
+so_peercred--pidns-translation$(EXEEXT): $(so_peercred__pidns_translation_OBJECTS) $(so_peercred__pidns_translation_DEPENDENCIES) $(EXTRA_so_peercred__pidns_translation_DEPENDENCIES) 
+       @rm -f so_peercred--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(so_peercred__pidns_translation_OBJECTS) $(so_peercred__pidns_translation_LDADD) $(LIBS)
+
 so_peercred-Xabbrev$(EXEEXT): $(so_peercred_Xabbrev_OBJECTS) $(so_peercred_Xabbrev_DEPENDENCIES) $(EXTRA_so_peercred_Xabbrev_DEPENDENCIES) 
        @rm -f so_peercred-Xabbrev$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(so_peercred_Xabbrev_OBJECTS) $(so_peercred_Xabbrev_LDADD) $(LIBS)
@@ -7345,6 +9831,10 @@ stack-fcall$(EXEEXT): $(stack_fcall_OBJECTS) $(stack_fcall_DEPENDENCIES) $(EXTRA
        @rm -f stack-fcall$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(stack_fcall_OBJECTS) $(stack_fcall_LDADD) $(LIBS)
 
+stack-fcall-attach$(EXEEXT): $(stack_fcall_attach_OBJECTS) $(stack_fcall_attach_DEPENDENCIES) $(EXTRA_stack_fcall_attach_DEPENDENCIES) 
+       @rm -f stack-fcall-attach$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(stack_fcall_attach_OBJECTS) $(stack_fcall_attach_LDADD) $(LIBS)
+
 stack-fcall-mangled$(EXEEXT): $(stack_fcall_mangled_OBJECTS) $(stack_fcall_mangled_DEPENDENCIES) $(EXTRA_stack_fcall_mangled_DEPENDENCIES) 
        @rm -f stack-fcall-mangled$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(stack_fcall_mangled_OBJECTS) $(stack_fcall_mangled_LDADD) $(LIBS)
@@ -7365,10 +9855,82 @@ statfs64$(EXEEXT): $(statfs64_OBJECTS) $(statfs64_DEPENDENCIES) $(EXTRA_statfs64
        @rm -f statfs64$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(statfs64_OBJECTS) $(statfs64_LDADD) $(LIBS)
 
+status-all$(EXEEXT): $(status_all_OBJECTS) $(status_all_DEPENDENCIES) $(EXTRA_status_all_DEPENDENCIES) 
+       @rm -f status-all$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(status_all_OBJECTS) $(status_all_LDADD) $(LIBS)
+
+status-failed$(EXEEXT): $(status_failed_OBJECTS) $(status_failed_DEPENDENCIES) $(EXTRA_status_failed_DEPENDENCIES) 
+       @rm -f status-failed$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(status_failed_OBJECTS) $(status_failed_LDADD) $(LIBS)
+
+status-failed-long$(EXEEXT): $(status_failed_long_OBJECTS) $(status_failed_long_DEPENDENCIES) $(EXTRA_status_failed_long_DEPENDENCIES) 
+       @rm -f status-failed-long$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(status_failed_long_OBJECTS) $(status_failed_long_LDADD) $(LIBS)
+
+status-failed-status$(EXEEXT): $(status_failed_status_OBJECTS) $(status_failed_status_DEPENDENCIES) $(EXTRA_status_failed_status_DEPENDENCIES) 
+       @rm -f status-failed-status$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(status_failed_status_OBJECTS) $(status_failed_status_LDADD) $(LIBS)
+
+status-none$(EXEEXT): $(status_none_OBJECTS) $(status_none_DEPENDENCIES) $(EXTRA_status_none_DEPENDENCIES) 
+       @rm -f status-none$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(status_none_OBJECTS) $(status_none_LDADD) $(LIBS)
+
+status-none-f$(EXEEXT): $(status_none_f_OBJECTS) $(status_none_f_DEPENDENCIES) $(EXTRA_status_none_f_DEPENDENCIES) 
+       @rm -f status-none-f$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(status_none_f_OBJECTS) $(status_none_f_LDADD) $(LIBS)
+
+status-none-threads$(EXEEXT): $(status_none_threads_OBJECTS) $(status_none_threads_DEPENDENCIES) $(EXTRA_status_none_threads_DEPENDENCIES) 
+       @rm -f status-none-threads$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(status_none_threads_OBJECTS) $(status_none_threads_LDADD) $(LIBS)
+
+status-successful$(EXEEXT): $(status_successful_OBJECTS) $(status_successful_DEPENDENCIES) $(EXTRA_status_successful_DEPENDENCIES) 
+       @rm -f status-successful$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(status_successful_OBJECTS) $(status_successful_LDADD) $(LIBS)
+
+status-successful-long$(EXEEXT): $(status_successful_long_OBJECTS) $(status_successful_long_DEPENDENCIES) $(EXTRA_status_successful_long_DEPENDENCIES) 
+       @rm -f status-successful-long$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(status_successful_long_OBJECTS) $(status_successful_long_LDADD) $(LIBS)
+
+status-successful-status$(EXEEXT): $(status_successful_status_OBJECTS) $(status_successful_status_DEPENDENCIES) $(EXTRA_status_successful_status_DEPENDENCIES) 
+       @rm -f status-successful-status$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(status_successful_status_OBJECTS) $(status_successful_status_LDADD) $(LIBS)
+
+status-unfinished$(EXEEXT): $(status_unfinished_OBJECTS) $(status_unfinished_DEPENDENCIES) $(EXTRA_status_unfinished_DEPENDENCIES) 
+       @rm -f status-unfinished$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(status_unfinished_OBJECTS) $(status_unfinished_LDADD) $(LIBS)
+
+status-unfinished-threads$(EXEEXT): $(status_unfinished_threads_OBJECTS) $(status_unfinished_threads_DEPENDENCIES) $(EXTRA_status_unfinished_threads_DEPENDENCIES) 
+       @rm -f status-unfinished-threads$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(status_unfinished_threads_OBJECTS) $(status_unfinished_threads_LDADD) $(LIBS)
+
 statx$(EXEEXT): $(statx_OBJECTS) $(statx_DEPENDENCIES) $(EXTRA_statx_DEPENDENCIES) 
        @rm -f statx$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(statx_OBJECTS) $(statx_LDADD) $(LIBS)
 
+strace--strings-in-hex$(EXEEXT): $(strace__strings_in_hex_OBJECTS) $(strace__strings_in_hex_DEPENDENCIES) $(EXTRA_strace__strings_in_hex_DEPENDENCIES) 
+       @rm -f strace--strings-in-hex$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(strace__strings_in_hex_OBJECTS) $(strace__strings_in_hex_LDADD) $(LIBS)
+
+strace--strings-in-hex-all$(EXEEXT): $(strace__strings_in_hex_all_OBJECTS) $(strace__strings_in_hex_all_DEPENDENCIES) $(EXTRA_strace__strings_in_hex_all_DEPENDENCIES) 
+       @rm -f strace--strings-in-hex-all$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(strace__strings_in_hex_all_OBJECTS) $(strace__strings_in_hex_all_LDADD) $(LIBS)
+
+strace--strings-in-hex-non-ascii$(EXEEXT): $(strace__strings_in_hex_non_ascii_OBJECTS) $(strace__strings_in_hex_non_ascii_DEPENDENCIES) $(EXTRA_strace__strings_in_hex_non_ascii_DEPENDENCIES) 
+       @rm -f strace--strings-in-hex-non-ascii$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(strace__strings_in_hex_non_ascii_OBJECTS) $(strace__strings_in_hex_non_ascii_LDADD) $(LIBS)
+
+strace-n$(EXEEXT): $(strace_n_OBJECTS) $(strace_n_DEPENDENCIES) $(EXTRA_strace_n_DEPENDENCIES) 
+       @rm -f strace-n$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(strace_n_OBJECTS) $(strace_n_LDADD) $(LIBS)
+
+strace-x$(EXEEXT): $(strace_x_OBJECTS) $(strace_x_DEPENDENCIES) $(EXTRA_strace_x_DEPENDENCIES) 
+       @rm -f strace-x$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(strace_x_OBJECTS) $(strace_x_LDADD) $(LIBS)
+
+strace-xx$(EXEEXT): $(strace_xx_OBJECTS) $(strace_xx_DEPENDENCIES) $(EXTRA_strace_xx_DEPENDENCIES) 
+       @rm -f strace-xx$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(strace_xx_OBJECTS) $(strace_xx_LDADD) $(LIBS)
+
 swap$(EXEEXT): $(swap_OBJECTS) $(swap_DEPENDENCIES) $(EXTRA_swap_DEPENDENCIES) 
        @rm -f swap$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(swap_OBJECTS) $(swap_LDADD) $(LIBS)
@@ -7405,14 +9967,42 @@ syslog$(EXEEXT): $(syslog_OBJECTS) $(syslog_DEPENDENCIES) $(EXTRA_syslog_DEPENDE
        @rm -f syslog$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(syslog_OBJECTS) $(syslog_LDADD) $(LIBS)
 
+syslog-success$(EXEEXT): $(syslog_success_OBJECTS) $(syslog_success_DEPENDENCIES) $(EXTRA_syslog_success_DEPENDENCIES) 
+       @rm -f syslog-success$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(syslog_success_OBJECTS) $(syslog_success_LDADD) $(LIBS)
+
 tee$(EXEEXT): $(tee_OBJECTS) $(tee_DEPENDENCIES) $(EXTRA_tee_DEPENDENCIES) 
        @rm -f tee$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(tee_OBJECTS) $(tee_LDADD) $(LIBS)
 
+tgkill$(EXEEXT): $(tgkill_OBJECTS) $(tgkill_DEPENDENCIES) $(EXTRA_tgkill_DEPENDENCIES) 
+       @rm -f tgkill$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(tgkill_OBJECTS) $(tgkill_LDADD) $(LIBS)
+
+tgkill--pidns-translation$(EXEEXT): $(tgkill__pidns_translation_OBJECTS) $(tgkill__pidns_translation_DEPENDENCIES) $(EXTRA_tgkill__pidns_translation_DEPENDENCIES) 
+       @rm -f tgkill--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(tgkill__pidns_translation_OBJECTS) $(tgkill__pidns_translation_LDADD) $(LIBS)
+
 threads-execve$(EXEEXT): $(threads_execve_OBJECTS) $(threads_execve_DEPENDENCIES) $(EXTRA_threads_execve_DEPENDENCIES) 
        @rm -f threads-execve$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(threads_execve_OBJECTS) $(threads_execve_LDADD) $(LIBS)
 
+threads-execve--quiet-thread-execve$(EXEEXT): $(threads_execve__quiet_thread_execve_OBJECTS) $(threads_execve__quiet_thread_execve_DEPENDENCIES) $(EXTRA_threads_execve__quiet_thread_execve_DEPENDENCIES) 
+       @rm -f threads-execve--quiet-thread-execve$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(threads_execve__quiet_thread_execve_OBJECTS) $(threads_execve__quiet_thread_execve_LDADD) $(LIBS)
+
+threads-execve-q$(EXEEXT): $(threads_execve_q_OBJECTS) $(threads_execve_q_DEPENDENCIES) $(EXTRA_threads_execve_q_DEPENDENCIES) 
+       @rm -f threads-execve-q$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(threads_execve_q_OBJECTS) $(threads_execve_q_LDADD) $(LIBS)
+
+threads-execve-qq$(EXEEXT): $(threads_execve_qq_OBJECTS) $(threads_execve_qq_DEPENDENCIES) $(EXTRA_threads_execve_qq_DEPENDENCIES) 
+       @rm -f threads-execve-qq$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(threads_execve_qq_OBJECTS) $(threads_execve_qq_LDADD) $(LIBS)
+
+threads-execve-qqq$(EXEEXT): $(threads_execve_qqq_OBJECTS) $(threads_execve_qqq_DEPENDENCIES) $(EXTRA_threads_execve_qqq_DEPENDENCIES) 
+       @rm -f threads-execve-qqq$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(threads_execve_qqq_OBJECTS) $(threads_execve_qqq_LDADD) $(LIBS)
+
 time$(EXEEXT): $(time_OBJECTS) $(time_DEPENDENCIES) $(EXTRA_time_DEPENDENCIES) 
        @rm -f time$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(time_OBJECTS) $(time_LDADD) $(LIBS)
@@ -7437,6 +10027,22 @@ times-fail$(EXEEXT): $(times_fail_OBJECTS) $(times_fail_DEPENDENCIES) $(EXTRA_ti
        @rm -f times-fail$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(times_fail_OBJECTS) $(times_fail_LDADD) $(LIBS)
 
+tkill$(EXEEXT): $(tkill_OBJECTS) $(tkill_DEPENDENCIES) $(EXTRA_tkill_DEPENDENCIES) 
+       @rm -f tkill$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(tkill_OBJECTS) $(tkill_LDADD) $(LIBS)
+
+tkill--pidns-translation$(EXEEXT): $(tkill__pidns_translation_OBJECTS) $(tkill__pidns_translation_DEPENDENCIES) $(EXTRA_tkill__pidns_translation_DEPENDENCIES) 
+       @rm -f tkill--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(tkill__pidns_translation_OBJECTS) $(tkill__pidns_translation_LDADD) $(LIBS)
+
+tracer_ppid_pgid_sid$(EXEEXT): $(tracer_ppid_pgid_sid_OBJECTS) $(tracer_ppid_pgid_sid_DEPENDENCIES) $(EXTRA_tracer_ppid_pgid_sid_DEPENDENCIES) 
+       @rm -f tracer_ppid_pgid_sid$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(tracer_ppid_pgid_sid_OBJECTS) $(tracer_ppid_pgid_sid_LDADD) $(LIBS)
+
+trie_test$(EXEEXT): $(trie_test_OBJECTS) $(trie_test_DEPENDENCIES) $(EXTRA_trie_test_DEPENDENCIES) 
+       @rm -f trie_test$(EXEEXT)
+       $(AM_V_CCLD)$(trie_test_LINK) $(trie_test_OBJECTS) $(trie_test_LDADD) $(LIBS)
+
 truncate$(EXEEXT): $(truncate_OBJECTS) $(truncate_DEPENDENCIES) $(EXTRA_truncate_DEPENDENCIES) 
        @rm -f truncate$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(truncate_OBJECTS) $(truncate_LDADD) $(LIBS)
@@ -7485,6 +10091,14 @@ umovestr3$(EXEEXT): $(umovestr3_OBJECTS) $(umovestr3_DEPENDENCIES) $(EXTRA_umove
        @rm -f umovestr3$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(umovestr3_OBJECTS) $(umovestr3_LDADD) $(LIBS)
 
+umovestr_cached$(EXEEXT): $(umovestr_cached_OBJECTS) $(umovestr_cached_DEPENDENCIES) $(EXTRA_umovestr_cached_DEPENDENCIES) 
+       @rm -f umovestr_cached$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(umovestr_cached_OBJECTS) $(umovestr_cached_LDADD) $(LIBS)
+
+umovestr_cached_adjacent$(EXEEXT): $(umovestr_cached_adjacent_OBJECTS) $(umovestr_cached_adjacent_DEPENDENCIES) $(EXTRA_umovestr_cached_adjacent_DEPENDENCIES) 
+       @rm -f umovestr_cached_adjacent$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(umovestr_cached_adjacent_OBJECTS) $(umovestr_cached_adjacent_LDADD) $(LIBS)
+
 uname$(EXEEXT): $(uname_OBJECTS) $(uname_DEPENDENCIES) $(EXTRA_uname_DEPENDENCIES) 
        @rm -f uname$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(uname_OBJECTS) $(uname_LDADD) $(LIBS)
@@ -7589,6 +10203,10 @@ xet_robust_list$(EXEEXT): $(xet_robust_list_OBJECTS) $(xet_robust_list_DEPENDENC
        @rm -f xet_robust_list$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(xet_robust_list_OBJECTS) $(xet_robust_list_LDADD) $(LIBS)
 
+xet_robust_list--pidns-translation$(EXEEXT): $(xet_robust_list__pidns_translation_OBJECTS) $(xet_robust_list__pidns_translation_DEPENDENCIES) $(EXTRA_xet_robust_list__pidns_translation_DEPENDENCIES) 
+       @rm -f xet_robust_list--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(xet_robust_list__pidns_translation_OBJECTS) $(xet_robust_list__pidns_translation_LDADD) $(LIBS)
+
 xet_thread_area_x86$(EXEEXT): $(xet_thread_area_x86_OBJECTS) $(xet_thread_area_x86_DEPENDENCIES) $(EXTRA_xet_thread_area_x86_DEPENDENCIES) 
        @rm -f xet_thread_area_x86$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(xet_thread_area_x86_OBJECTS) $(xet_thread_area_x86_LDADD) $(LIBS)
@@ -7601,10 +10219,18 @@ xetpgid$(EXEEXT): $(xetpgid_OBJECTS) $(xetpgid_DEPENDENCIES) $(EXTRA_xetpgid_DEP
        @rm -f xetpgid$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(xetpgid_OBJECTS) $(xetpgid_LDADD) $(LIBS)
 
+xetpgid--pidns-translation$(EXEEXT): $(xetpgid__pidns_translation_OBJECTS) $(xetpgid__pidns_translation_DEPENDENCIES) $(EXTRA_xetpgid__pidns_translation_DEPENDENCIES) 
+       @rm -f xetpgid--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(xetpgid__pidns_translation_OBJECTS) $(xetpgid__pidns_translation_LDADD) $(LIBS)
+
 xetpriority$(EXEEXT): $(xetpriority_OBJECTS) $(xetpriority_DEPENDENCIES) $(EXTRA_xetpriority_DEPENDENCIES) 
        @rm -f xetpriority$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(xetpriority_OBJECTS) $(xetpriority_LDADD) $(LIBS)
 
+xetpriority--pidns-translation$(EXEEXT): $(xetpriority__pidns_translation_OBJECTS) $(xetpriority__pidns_translation_DEPENDENCIES) $(EXTRA_xetpriority__pidns_translation_DEPENDENCIES) 
+       @rm -f xetpriority--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(xetpriority__pidns_translation_OBJECTS) $(xetpriority__pidns_translation_LDADD) $(LIBS)
+
 xettimeofday$(EXEEXT): $(xettimeofday_OBJECTS) $(xettimeofday_DEPENDENCIES) $(EXTRA_xettimeofday_DEPENDENCIES) 
        @rm -f xettimeofday$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(xettimeofday_OBJECTS) $(xettimeofday_LDADD) $(LIBS)
@@ -7636,10 +10262,12 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/attach-p-cmd-cmd.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/attach-p-cmd-p.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/block_reset_raise_run.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/block_reset_run.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bpf-obj_get_info_by_fd-prog-v.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bpf-obj_get_info_by_fd-prog.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bpf-obj_get_info_by_fd-v.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bpf-obj_get_info_by_fd.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bpf-success-long-y.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bpf-success-v.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bpf-success.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bpf-v.Po@am__quote@ # am--include-marker
@@ -7657,16 +10285,48 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clock_adjtime.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clock_nanosleep.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clock_xettime.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone-flags.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone3-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone3-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone3-Xverbose.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone3-success-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone3-success-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone3-success-Xverbose.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone3-success.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone3.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone_parent--quiet-exit.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone_parent-q.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone_parent-qq.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone_parent.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone_ptrace--quiet-attach.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone_ptrace--quiet-exit.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone_ptrace-q.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone_ptrace-qq.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone_ptrace.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/close_range-P.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/close_range-y.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/close_range-yy.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/close_range.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/copy_file_range.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/count-f.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/creat.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/delay.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/delete_module.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dev--decode-fds-dev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dev--decode-fds-path.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dev--decode-fds-socket.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dev-yy.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup-P.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup-y.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup-yy.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup2-P.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup2-y.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup2-yy.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup2.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup3-P.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup3-y.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup3-yy.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup3.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/epoll_create.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/epoll_create1.Po@am__quote@ # am--include-marker
@@ -7679,7 +10339,14 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat-v.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-P.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-y.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-yy.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat2-P.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat2-y.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat2-yy.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat2.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fadvise64.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fadvise64_64.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fallocate.Po@am__quote@ # am--include-marker
@@ -7694,16 +10361,27 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchown.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchown32.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchownat.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl64--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl64.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fdatasync.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fflush.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_handle.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_ioctl.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filter-unavailable.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filter_seccomp-flag.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filter_seccomp-perf.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/finit_module.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/flock.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fork--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fork-f.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fsconfig-P.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fsconfig.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fsmount.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fsopen.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fspick-P.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fspick.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstat-Xabbrev.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstat-Xraw.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstat-Xverbose.Po@am__quote@ # am--include-marker
@@ -7722,9 +10400,12 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/futex.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/futimesat.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/get_mempolicy.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/get_process_reaper.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getcpu.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getcwd.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getdents-v.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getdents.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getdents64-v.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getdents64.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getegid.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getegid32.Po@am__quote@ # am--include-marker
@@ -7735,7 +10416,9 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getgroups.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getgroups32.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpeername.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpgrp--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpgrp.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpid--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpid.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getppid.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getrandom.Po@am__quote@ # am--include-marker
@@ -7745,30 +10428,66 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getresuid32.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getrlimit.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getrusage.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getsid--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getsid.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getsockname.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gettid--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gettid.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getuid.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getuid32.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getxxid.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getxgid.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getxpid.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getxuid.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/group_req.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inet-cmsg.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/init_module.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inject-nf.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inotify.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inotify_init-y.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inotify_init.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inotify_init1-y.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inotify_init1.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/int_0x80.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/io_uring_enter.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/io_uring_register.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/io_uring_setup.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_block--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_block.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_dm-v.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_dm.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev-Xverbose.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev-success-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev-success-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev-success-Xverbose.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev-success-v-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev-success-v-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev-success-v-Xverbose.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev-success-v.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev-success.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev-v-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev-v-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev-v-Xverbose.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev-v.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_hdio-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_hdio-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_hdio-Xverbose.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_hdio-success-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_hdio-success-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_hdio-success-Xverbose.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_hdio-success-v-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_hdio-success-v-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_hdio-success-v-Xverbose.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_hdio-success-v.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_hdio-success.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_hdio-v-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_hdio-v-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_hdio-v-Xverbose.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_hdio-v.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_hdio.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_inotify.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_kvm_run-v.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_kvm_run.Po@am__quote@ # am--include-marker
@@ -7789,10 +10508,28 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_sg_io_v3.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_sg_io_v4.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_sock_gifconf.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_tee.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_uffdio.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_v4l2-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_v4l2-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_v4l2-Xverbose.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_v4l2-success-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_v4l2-success-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_v4l2-success-Xverbose.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_v4l2-success-v-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_v4l2-success-v-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_v4l2-success-v-Xverbose.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_v4l2-success-v.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_v4l2-success.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_v4l2-v-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_v4l2-v-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_v4l2-v-Xverbose.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_v4l2-v.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_v4l2.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_watchdog.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioperm.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iopl.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioprio--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioprio-Xabbrev.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioprio-Xraw.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioprio-Xverbose.Po@am__quote@ # am--include-marker
@@ -7816,6 +10553,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ipc_shm-Xverbose.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ipc_shm.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/is_linux_mips_n64.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kcmp-y--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kcmp-y.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kcmp.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kern_features.Po@am__quote@ # am--include-marker
@@ -7829,12 +10567,14 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keyctl-Xraw.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keyctl-Xverbose.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keyctl.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kill--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kill.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kill_child.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ksysent.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lchown.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lchown32.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-create_nl_socket.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-create_tmpfile.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-errno2name.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-error_msg.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-fill_memory.Po@am__quote@ # am--include-marker
@@ -7846,20 +10586,26 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-inode_of_sockfd.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-libmmsg.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-libsocketcall.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-lock_file.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-overflowuid.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-pidns.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-pipe_maxfd.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-print_quoted_string.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-print_time.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-printflags.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-printxval.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-printxval-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-printxval-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-printxval-Xverbose.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-signal2name.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-skip_unavailable.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-sprintrc.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-status.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-tail_alloc.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-test_printpath.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-test_printstrn.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-test_ucopy.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-tprintf.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-xmalloc_for_tests.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/link.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linkat.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/list_sigaction_signum.Po@am__quote@ # am--include-marker
@@ -7871,12 +10617,18 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lstat.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lstat64-lstat64.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/madvise.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/maybe_switch_current_tcp--quiet-thread-execve.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/maybe_switch_current_tcp.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mbind-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mbind-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mbind-Xverbose.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mbind.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/membarrier.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memfd_create-Xabbrev.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memfd_create-Xraw.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memfd_create-Xverbose.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memfd_create.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/migrate_pages--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/migrate_pages.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mincore.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mkdir.Po@am__quote@ # am--include-marker
@@ -7903,6 +10655,9 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mount-Xraw.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mount-Xverbose.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mount.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/move_mount-P.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/move_mount.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/move_pages--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/move_pages-Xabbrev.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/move_pages-Xraw.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/move_pages-Xverbose.Po@am__quote@ # am--include-marker
@@ -7916,12 +10671,17 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/msg_name.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/munlockall.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nanosleep.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net--decode-fds-dev-netlink.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net--decode-fds-none-netlink.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net--decode-fds-path-netlink.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net--decode-fds-socket-netlink.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-accept-connect.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-icmp_filter.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-packet_mreq-Xabbrev.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-packet_mreq-Xraw.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-packet_mreq-Xverbose.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-packet_mreq.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-sockaddr--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-sockaddr.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-tpacket_req.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-tpacket_stats-success.Po@am__quote@ # am--include-marker
@@ -7931,6 +10691,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-yy-inet6.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-yy-netlink.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-yy-unix.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netlink_audit--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netlink_audit.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netlink_crypto.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netlink_generic.Po@am__quote@ # am--include-marker
@@ -7968,6 +10729,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_ifla_brport.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_ifla_linkinfo.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_ifla_port.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_ifla_xdp-y.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_ifla_xdp.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_inet_diag_msg.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_inet_diag_req_compat.Po@am__quote@ # am--include-marker
@@ -8004,7 +10766,19 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldselect.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldstat.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open_tree-P.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open_tree.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat2-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat2-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat2-Xverbose.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat2-v-y-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat2-v-y-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat2-v-y-Xverbose.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat2-v-y.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat2-v.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat2-y.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat2.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orphaned_process_group.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/osf_utimes.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pause.Po@am__quote@ # am--include-marker
@@ -8016,7 +10790,20 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/personality-Xraw.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/personality-Xverbose.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/personality.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_getfd-y.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_getfd-yy.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_getfd.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_open--decode-fd-path.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_open--decode-fd-pidfd.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_open--decode-fd-socket.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_open--pidns-translation.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_open-P.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_open-y.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_open-yy.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_open.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_send_signal--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_send_signal.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidns-cache.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pipe.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pipe2.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pkey_alloc.Po@am__quote@ # am--include-marker
@@ -8043,6 +10830,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/preadv2-pwritev2.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/preadv_pwritev-preadv-pwritev.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print_maxfd.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print_ppid_tracerpid.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printpath-umovestr-peekdata.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printpath-umovestr-undumpable.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printpath-umovestr.Po@am__quote@ # am--include-marker
@@ -8053,8 +10841,11 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printstrn-umoven-peekdata.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printstrn-umoven-undumpable.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printstrn-umoven.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prlimit64--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prlimit64.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/process_vm_readv--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/process_vm_readv.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/process_vm_writev--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/process_vm_writev.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pselect6.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ptrace.Po@am__quote@ # am--include-marker
@@ -8083,6 +10874,8 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readlinkat.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readv.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reboot.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/recv-MSG_TRUNC.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/recvfrom-MSG_TRUNC.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/recvfrom.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/recvmmsg-timeout.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/recvmsg.Po@am__quote@ # am--include-marker
@@ -8101,10 +10894,12 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigaction.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigpending.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigprocmask.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigqueueinfo--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigqueueinfo.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigreturn.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigsuspend.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigtimedwait.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_tgsigqueueinfo--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_tgsigqueueinfo.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/run_expect_termsig.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390_guarded_storage-v.Po@am__quote@ # am--include-marker
@@ -8115,9 +10910,13 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390_sthyi.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_get_priority_mxx.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_rr_get_interval.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetaffinity--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetaffinity.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetattr--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetattr.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetparam--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetparam.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetscheduler--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetscheduler.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_yield.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scm_rights.Po@am__quote@ # am--include-marker
@@ -8127,9 +10926,14 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seccomp_get_action_avail.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/select-P.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/select.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/semop-indirect.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/semop.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/semtimedop.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendfile.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendfile64.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_mempolicy-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_mempolicy-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_mempolicy-Xverbose.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_mempolicy.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_ptracer_any.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_sigblock.Po@am__quote@ # am--include-marker
@@ -8145,6 +10949,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setgroups32.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sethostname.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setns.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setpgrp-exec.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setregid.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setregid32.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setresgid.Po@am__quote@ # am--include-marker
@@ -8165,6 +10970,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sigaltstack.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/siginfo.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signal.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signal_receive--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signal_receive.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signalfd4.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sigpending.Po@am__quote@ # am--include-marker
@@ -8174,6 +10980,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sleep.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/so_error.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/so_linger.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/so_peercred--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/so_peercred-Xabbrev.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/so_peercred-Xraw.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/so_peercred-Xverbose.Po@am__quote@ # am--include-marker
@@ -8193,6 +11000,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-1.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-2.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-3.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-attach.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-mangled-0.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-mangled-1.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-mangled-2.Po@am__quote@ # am--include-marker
@@ -8203,7 +11011,25 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stat64-stat64.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/statfs-statfs.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/statfs64.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/status-all.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/status-failed-long.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/status-failed-status.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/status-failed.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/status-none-f.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/status-none-threads.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/status-none.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/status-successful-long.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/status-successful-status.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/status-successful.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/status-unfinished-threads.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/status-unfinished.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/statx.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace--strings-in-hex-all.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace--strings-in-hex-non-ascii.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace--strings-in-hex.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-n.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-x.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-xx.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/swap.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sxetmask.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/symlink.Po@am__quote@ # am--include-marker
@@ -8212,8 +11038,15 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sync_file_range.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sync_file_range2.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sysinfo.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/syslog-success.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/syslog.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tee.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tgkill--pidns-translation.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tgkill.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threads-execve--quiet-thread-execve.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threads-execve-q.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threads-execve-qq.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threads-execve-qqq.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threads-execve.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/time.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timer_create.Po@am__quote@ # am--include-marker
@@ -8221,6 +11054,11 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timerfd_xettime.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/times-fail.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/times.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tkill--pidns-translation.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tkill.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tracer_ppid_pgid_sid.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/trie_test-trie_for_tests.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/trie_test-trie_test.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/truncate.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/truncate64-truncate64.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ugetrlimit.Po@am__quote@ # am--include-marker
@@ -8233,6 +11071,8 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/umovestr.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/umovestr2.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/umovestr3.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/umovestr_cached.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/umovestr_cached_adjacent.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uname.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unblock_reset_raise.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unix-pair-send-recv.Po@am__quote@ # am--include-marker
@@ -8258,10 +11098,13 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/waitpid.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xattr-strings.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xattr.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xet_robust_list--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xet_robust_list.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xet_thread_area_x86.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xetitimer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xetpgid--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xetpgid.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xetpriority--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xetpriority.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xettimeofday.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zeroargc.Po@am__quote@ # am--include-marker
@@ -8273,15 +11116,17 @@ $(am__depfiles_remade):
 am--depfiles: $(am__depfiles_remade)
 
 .c.o:
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_TRUE@   $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_TRUE@   $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCC_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
@@ -8300,6 +11145,20 @@ libtests_a-create_nl_socket.obj: create_nl_socket.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-create_nl_socket.obj `if test -f 'create_nl_socket.c'; then $(CYGPATH_W) 'create_nl_socket.c'; else $(CYGPATH_W) '$(srcdir)/create_nl_socket.c'; fi`
 
+libtests_a-create_tmpfile.o: create_tmpfile.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-create_tmpfile.o -MD -MP -MF $(DEPDIR)/libtests_a-create_tmpfile.Tpo -c -o libtests_a-create_tmpfile.o `test -f 'create_tmpfile.c' || echo '$(srcdir)/'`create_tmpfile.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-create_tmpfile.Tpo $(DEPDIR)/libtests_a-create_tmpfile.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='create_tmpfile.c' object='libtests_a-create_tmpfile.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-create_tmpfile.o `test -f 'create_tmpfile.c' || echo '$(srcdir)/'`create_tmpfile.c
+
+libtests_a-create_tmpfile.obj: create_tmpfile.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-create_tmpfile.obj -MD -MP -MF $(DEPDIR)/libtests_a-create_tmpfile.Tpo -c -o libtests_a-create_tmpfile.obj `if test -f 'create_tmpfile.c'; then $(CYGPATH_W) 'create_tmpfile.c'; else $(CYGPATH_W) '$(srcdir)/create_tmpfile.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-create_tmpfile.Tpo $(DEPDIR)/libtests_a-create_tmpfile.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='create_tmpfile.c' object='libtests_a-create_tmpfile.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-create_tmpfile.obj `if test -f 'create_tmpfile.c'; then $(CYGPATH_W) 'create_tmpfile.c'; else $(CYGPATH_W) '$(srcdir)/create_tmpfile.c'; fi`
+
 libtests_a-errno2name.o: errno2name.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-errno2name.o -MD -MP -MF $(DEPDIR)/libtests_a-errno2name.Tpo -c -o libtests_a-errno2name.o `test -f 'errno2name.c' || echo '$(srcdir)/'`errno2name.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-errno2name.Tpo $(DEPDIR)/libtests_a-errno2name.Po
@@ -8454,6 +11313,20 @@ libtests_a-libsocketcall.obj: libsocketcall.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-libsocketcall.obj `if test -f 'libsocketcall.c'; then $(CYGPATH_W) 'libsocketcall.c'; else $(CYGPATH_W) '$(srcdir)/libsocketcall.c'; fi`
 
+libtests_a-lock_file.o: lock_file.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-lock_file.o -MD -MP -MF $(DEPDIR)/libtests_a-lock_file.Tpo -c -o libtests_a-lock_file.o `test -f 'lock_file.c' || echo '$(srcdir)/'`lock_file.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-lock_file.Tpo $(DEPDIR)/libtests_a-lock_file.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lock_file.c' object='libtests_a-lock_file.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-lock_file.o `test -f 'lock_file.c' || echo '$(srcdir)/'`lock_file.c
+
+libtests_a-lock_file.obj: lock_file.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-lock_file.obj -MD -MP -MF $(DEPDIR)/libtests_a-lock_file.Tpo -c -o libtests_a-lock_file.obj `if test -f 'lock_file.c'; then $(CYGPATH_W) 'lock_file.c'; else $(CYGPATH_W) '$(srcdir)/lock_file.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-lock_file.Tpo $(DEPDIR)/libtests_a-lock_file.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lock_file.c' object='libtests_a-lock_file.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-lock_file.obj `if test -f 'lock_file.c'; then $(CYGPATH_W) 'lock_file.c'; else $(CYGPATH_W) '$(srcdir)/lock_file.c'; fi`
+
 libtests_a-overflowuid.o: overflowuid.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-overflowuid.o -MD -MP -MF $(DEPDIR)/libtests_a-overflowuid.Tpo -c -o libtests_a-overflowuid.o `test -f 'overflowuid.c' || echo '$(srcdir)/'`overflowuid.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-overflowuid.Tpo $(DEPDIR)/libtests_a-overflowuid.Po
@@ -8468,6 +11341,20 @@ libtests_a-overflowuid.obj: overflowuid.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-overflowuid.obj `if test -f 'overflowuid.c'; then $(CYGPATH_W) 'overflowuid.c'; else $(CYGPATH_W) '$(srcdir)/overflowuid.c'; fi`
 
+libtests_a-pidns.o: pidns.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-pidns.o -MD -MP -MF $(DEPDIR)/libtests_a-pidns.Tpo -c -o libtests_a-pidns.o `test -f 'pidns.c' || echo '$(srcdir)/'`pidns.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-pidns.Tpo $(DEPDIR)/libtests_a-pidns.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pidns.c' object='libtests_a-pidns.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-pidns.o `test -f 'pidns.c' || echo '$(srcdir)/'`pidns.c
+
+libtests_a-pidns.obj: pidns.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-pidns.obj -MD -MP -MF $(DEPDIR)/libtests_a-pidns.Tpo -c -o libtests_a-pidns.obj `if test -f 'pidns.c'; then $(CYGPATH_W) 'pidns.c'; else $(CYGPATH_W) '$(srcdir)/pidns.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-pidns.Tpo $(DEPDIR)/libtests_a-pidns.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pidns.c' object='libtests_a-pidns.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-pidns.obj `if test -f 'pidns.c'; then $(CYGPATH_W) 'pidns.c'; else $(CYGPATH_W) '$(srcdir)/pidns.c'; fi`
+
 libtests_a-pipe_maxfd.o: pipe_maxfd.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-pipe_maxfd.o -MD -MP -MF $(DEPDIR)/libtests_a-pipe_maxfd.Tpo -c -o libtests_a-pipe_maxfd.o `test -f 'pipe_maxfd.c' || echo '$(srcdir)/'`pipe_maxfd.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-pipe_maxfd.Tpo $(DEPDIR)/libtests_a-pipe_maxfd.Po
@@ -8524,19 +11411,47 @@ libtests_a-printflags.obj: printflags.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-printflags.obj `if test -f 'printflags.c'; then $(CYGPATH_W) 'printflags.c'; else $(CYGPATH_W) '$(srcdir)/printflags.c'; fi`
 
-libtests_a-printxval.o: printxval.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-printxval.o -MD -MP -MF $(DEPDIR)/libtests_a-printxval.Tpo -c -o libtests_a-printxval.o `test -f 'printxval.c' || echo '$(srcdir)/'`printxval.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-printxval.Tpo $(DEPDIR)/libtests_a-printxval.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='printxval.c' object='libtests_a-printxval.o' libtool=no @AMDEPBACKSLASH@
+libtests_a-printxval-Xabbrev.o: printxval-Xabbrev.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-printxval-Xabbrev.o -MD -MP -MF $(DEPDIR)/libtests_a-printxval-Xabbrev.Tpo -c -o libtests_a-printxval-Xabbrev.o `test -f 'printxval-Xabbrev.c' || echo '$(srcdir)/'`printxval-Xabbrev.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-printxval-Xabbrev.Tpo $(DEPDIR)/libtests_a-printxval-Xabbrev.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='printxval-Xabbrev.c' object='libtests_a-printxval-Xabbrev.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-printxval-Xabbrev.o `test -f 'printxval-Xabbrev.c' || echo '$(srcdir)/'`printxval-Xabbrev.c
+
+libtests_a-printxval-Xabbrev.obj: printxval-Xabbrev.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-printxval-Xabbrev.obj -MD -MP -MF $(DEPDIR)/libtests_a-printxval-Xabbrev.Tpo -c -o libtests_a-printxval-Xabbrev.obj `if test -f 'printxval-Xabbrev.c'; then $(CYGPATH_W) 'printxval-Xabbrev.c'; else $(CYGPATH_W) '$(srcdir)/printxval-Xabbrev.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-printxval-Xabbrev.Tpo $(DEPDIR)/libtests_a-printxval-Xabbrev.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='printxval-Xabbrev.c' object='libtests_a-printxval-Xabbrev.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-printxval-Xabbrev.obj `if test -f 'printxval-Xabbrev.c'; then $(CYGPATH_W) 'printxval-Xabbrev.c'; else $(CYGPATH_W) '$(srcdir)/printxval-Xabbrev.c'; fi`
+
+libtests_a-printxval-Xraw.o: printxval-Xraw.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-printxval-Xraw.o -MD -MP -MF $(DEPDIR)/libtests_a-printxval-Xraw.Tpo -c -o libtests_a-printxval-Xraw.o `test -f 'printxval-Xraw.c' || echo '$(srcdir)/'`printxval-Xraw.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-printxval-Xraw.Tpo $(DEPDIR)/libtests_a-printxval-Xraw.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='printxval-Xraw.c' object='libtests_a-printxval-Xraw.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-printxval-Xraw.o `test -f 'printxval-Xraw.c' || echo '$(srcdir)/'`printxval-Xraw.c
+
+libtests_a-printxval-Xraw.obj: printxval-Xraw.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-printxval-Xraw.obj -MD -MP -MF $(DEPDIR)/libtests_a-printxval-Xraw.Tpo -c -o libtests_a-printxval-Xraw.obj `if test -f 'printxval-Xraw.c'; then $(CYGPATH_W) 'printxval-Xraw.c'; else $(CYGPATH_W) '$(srcdir)/printxval-Xraw.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-printxval-Xraw.Tpo $(DEPDIR)/libtests_a-printxval-Xraw.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='printxval-Xraw.c' object='libtests_a-printxval-Xraw.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-printxval-Xraw.obj `if test -f 'printxval-Xraw.c'; then $(CYGPATH_W) 'printxval-Xraw.c'; else $(CYGPATH_W) '$(srcdir)/printxval-Xraw.c'; fi`
+
+libtests_a-printxval-Xverbose.o: printxval-Xverbose.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-printxval-Xverbose.o -MD -MP -MF $(DEPDIR)/libtests_a-printxval-Xverbose.Tpo -c -o libtests_a-printxval-Xverbose.o `test -f 'printxval-Xverbose.c' || echo '$(srcdir)/'`printxval-Xverbose.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-printxval-Xverbose.Tpo $(DEPDIR)/libtests_a-printxval-Xverbose.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='printxval-Xverbose.c' object='libtests_a-printxval-Xverbose.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-printxval.o `test -f 'printxval.c' || echo '$(srcdir)/'`printxval.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-printxval-Xverbose.o `test -f 'printxval-Xverbose.c' || echo '$(srcdir)/'`printxval-Xverbose.c
 
-libtests_a-printxval.obj: printxval.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-printxval.obj -MD -MP -MF $(DEPDIR)/libtests_a-printxval.Tpo -c -o libtests_a-printxval.obj `if test -f 'printxval.c'; then $(CYGPATH_W) 'printxval.c'; else $(CYGPATH_W) '$(srcdir)/printxval.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-printxval.Tpo $(DEPDIR)/libtests_a-printxval.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='printxval.c' object='libtests_a-printxval.obj' libtool=no @AMDEPBACKSLASH@
+libtests_a-printxval-Xverbose.obj: printxval-Xverbose.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-printxval-Xverbose.obj -MD -MP -MF $(DEPDIR)/libtests_a-printxval-Xverbose.Tpo -c -o libtests_a-printxval-Xverbose.obj `if test -f 'printxval-Xverbose.c'; then $(CYGPATH_W) 'printxval-Xverbose.c'; else $(CYGPATH_W) '$(srcdir)/printxval-Xverbose.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-printxval-Xverbose.Tpo $(DEPDIR)/libtests_a-printxval-Xverbose.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='printxval-Xverbose.c' object='libtests_a-printxval-Xverbose.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-printxval.obj `if test -f 'printxval.c'; then $(CYGPATH_W) 'printxval.c'; else $(CYGPATH_W) '$(srcdir)/printxval.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-printxval-Xverbose.obj `if test -f 'printxval-Xverbose.c'; then $(CYGPATH_W) 'printxval-Xverbose.c'; else $(CYGPATH_W) '$(srcdir)/printxval-Xverbose.c'; fi`
 
 libtests_a-signal2name.o: signal2name.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-signal2name.o -MD -MP -MF $(DEPDIR)/libtests_a-signal2name.Tpo -c -o libtests_a-signal2name.o `test -f 'signal2name.c' || echo '$(srcdir)/'`signal2name.c
@@ -8580,6 +11495,20 @@ libtests_a-sprintrc.obj: sprintrc.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-sprintrc.obj `if test -f 'sprintrc.c'; then $(CYGPATH_W) 'sprintrc.c'; else $(CYGPATH_W) '$(srcdir)/sprintrc.c'; fi`
 
+libtests_a-status.o: status.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-status.o -MD -MP -MF $(DEPDIR)/libtests_a-status.Tpo -c -o libtests_a-status.o `test -f 'status.c' || echo '$(srcdir)/'`status.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-status.Tpo $(DEPDIR)/libtests_a-status.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='status.c' object='libtests_a-status.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-status.o `test -f 'status.c' || echo '$(srcdir)/'`status.c
+
+libtests_a-status.obj: status.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-status.obj -MD -MP -MF $(DEPDIR)/libtests_a-status.Tpo -c -o libtests_a-status.obj `if test -f 'status.c'; then $(CYGPATH_W) 'status.c'; else $(CYGPATH_W) '$(srcdir)/status.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-status.Tpo $(DEPDIR)/libtests_a-status.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='status.c' object='libtests_a-status.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-status.obj `if test -f 'status.c'; then $(CYGPATH_W) 'status.c'; else $(CYGPATH_W) '$(srcdir)/status.c'; fi`
+
 libtests_a-tail_alloc.o: tail_alloc.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-tail_alloc.o -MD -MP -MF $(DEPDIR)/libtests_a-tail_alloc.Tpo -c -o libtests_a-tail_alloc.o `test -f 'tail_alloc.c' || echo '$(srcdir)/'`tail_alloc.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-tail_alloc.Tpo $(DEPDIR)/libtests_a-tail_alloc.Po
@@ -8650,6 +11579,20 @@ libtests_a-tprintf.obj: tprintf.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-tprintf.obj `if test -f 'tprintf.c'; then $(CYGPATH_W) 'tprintf.c'; else $(CYGPATH_W) '$(srcdir)/tprintf.c'; fi`
 
+libtests_a-xmalloc_for_tests.o: xmalloc_for_tests.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-xmalloc_for_tests.o -MD -MP -MF $(DEPDIR)/libtests_a-xmalloc_for_tests.Tpo -c -o libtests_a-xmalloc_for_tests.o `test -f 'xmalloc_for_tests.c' || echo '$(srcdir)/'`xmalloc_for_tests.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-xmalloc_for_tests.Tpo $(DEPDIR)/libtests_a-xmalloc_for_tests.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='xmalloc_for_tests.c' object='libtests_a-xmalloc_for_tests.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-xmalloc_for_tests.o `test -f 'xmalloc_for_tests.c' || echo '$(srcdir)/'`xmalloc_for_tests.c
+
+libtests_a-xmalloc_for_tests.obj: xmalloc_for_tests.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-xmalloc_for_tests.obj -MD -MP -MF $(DEPDIR)/libtests_a-xmalloc_for_tests.Tpo -c -o libtests_a-xmalloc_for_tests.obj `if test -f 'xmalloc_for_tests.c'; then $(CYGPATH_W) 'xmalloc_for_tests.c'; else $(CYGPATH_W) '$(srcdir)/xmalloc_for_tests.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-xmalloc_for_tests.Tpo $(DEPDIR)/libtests_a-xmalloc_for_tests.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='xmalloc_for_tests.c' object='libtests_a-xmalloc_for_tests.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-xmalloc_for_tests.obj `if test -f 'xmalloc_for_tests.c'; then $(CYGPATH_W) 'xmalloc_for_tests.c'; else $(CYGPATH_W) '$(srcdir)/xmalloc_for_tests.c'; fi`
+
 fstat64-fstat64.o: fstat64.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fstat64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fstat64-fstat64.o -MD -MP -MF $(DEPDIR)/fstat64-fstat64.Tpo -c -o fstat64-fstat64.o `test -f 'fstat64.c' || echo '$(srcdir)/'`fstat64.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/fstat64-fstat64.Tpo $(DEPDIR)/fstat64-fstat64.Po
@@ -8860,6 +11803,34 @@ statfs-statfs.obj: statfs.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(statfs_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o statfs-statfs.obj `if test -f 'statfs.c'; then $(CYGPATH_W) 'statfs.c'; else $(CYGPATH_W) '$(srcdir)/statfs.c'; fi`
 
+trie_test-trie_test.o: trie_test.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_test_CPPFLAGS) $(CPPFLAGS) $(trie_test_CFLAGS) $(CFLAGS) -MT trie_test-trie_test.o -MD -MP -MF $(DEPDIR)/trie_test-trie_test.Tpo -c -o trie_test-trie_test.o `test -f 'trie_test.c' || echo '$(srcdir)/'`trie_test.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/trie_test-trie_test.Tpo $(DEPDIR)/trie_test-trie_test.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='trie_test.c' object='trie_test-trie_test.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_test_CPPFLAGS) $(CPPFLAGS) $(trie_test_CFLAGS) $(CFLAGS) -c -o trie_test-trie_test.o `test -f 'trie_test.c' || echo '$(srcdir)/'`trie_test.c
+
+trie_test-trie_test.obj: trie_test.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_test_CPPFLAGS) $(CPPFLAGS) $(trie_test_CFLAGS) $(CFLAGS) -MT trie_test-trie_test.obj -MD -MP -MF $(DEPDIR)/trie_test-trie_test.Tpo -c -o trie_test-trie_test.obj `if test -f 'trie_test.c'; then $(CYGPATH_W) 'trie_test.c'; else $(CYGPATH_W) '$(srcdir)/trie_test.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/trie_test-trie_test.Tpo $(DEPDIR)/trie_test-trie_test.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='trie_test.c' object='trie_test-trie_test.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_test_CPPFLAGS) $(CPPFLAGS) $(trie_test_CFLAGS) $(CFLAGS) -c -o trie_test-trie_test.obj `if test -f 'trie_test.c'; then $(CYGPATH_W) 'trie_test.c'; else $(CYGPATH_W) '$(srcdir)/trie_test.c'; fi`
+
+trie_test-trie_for_tests.o: trie_for_tests.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_test_CPPFLAGS) $(CPPFLAGS) $(trie_test_CFLAGS) $(CFLAGS) -MT trie_test-trie_for_tests.o -MD -MP -MF $(DEPDIR)/trie_test-trie_for_tests.Tpo -c -o trie_test-trie_for_tests.o `test -f 'trie_for_tests.c' || echo '$(srcdir)/'`trie_for_tests.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/trie_test-trie_for_tests.Tpo $(DEPDIR)/trie_test-trie_for_tests.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='trie_for_tests.c' object='trie_test-trie_for_tests.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_test_CPPFLAGS) $(CPPFLAGS) $(trie_test_CFLAGS) $(CFLAGS) -c -o trie_test-trie_for_tests.o `test -f 'trie_for_tests.c' || echo '$(srcdir)/'`trie_for_tests.c
+
+trie_test-trie_for_tests.obj: trie_for_tests.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_test_CPPFLAGS) $(CPPFLAGS) $(trie_test_CFLAGS) $(CFLAGS) -MT trie_test-trie_for_tests.obj -MD -MP -MF $(DEPDIR)/trie_test-trie_for_tests.Tpo -c -o trie_test-trie_for_tests.obj `if test -f 'trie_for_tests.c'; then $(CYGPATH_W) 'trie_for_tests.c'; else $(CYGPATH_W) '$(srcdir)/trie_for_tests.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/trie_test-trie_for_tests.Tpo $(DEPDIR)/trie_test-trie_for_tests.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='trie_for_tests.c' object='trie_test-trie_for_tests.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_test_CPPFLAGS) $(CPPFLAGS) $(trie_test_CFLAGS) $(CFLAGS) -c -o trie_test-trie_for_tests.obj `if test -f 'trie_for_tests.c'; then $(CYGPATH_W) 'trie_for_tests.c'; else $(CYGPATH_W) '$(srcdir)/trie_for_tests.c'; fi`
+
 truncate64-truncate64.o: truncate64.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(truncate64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT truncate64-truncate64.o -MD -MP -MF $(DEPDIR)/truncate64-truncate64.Tpo -c -o truncate64-truncate64.o `test -f 'truncate64.c' || echo '$(srcdir)/'`truncate64.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/truncate64-truncate64.Tpo $(DEPDIR)/truncate64-truncate64.Po
@@ -9052,7 +12023,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
          test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);               \
        fi;                                                             \
        echo "$${col}$$br$${std}";                                      \
-       echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";   \
+       echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
        echo "$${col}$$br$${std}";                                      \
        create_testsuite_report --maybe-color;                          \
        echo "$$col$$br$$std";                                          \
@@ -9220,10 +12191,12 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/attach-p-cmd-cmd.Po
        -rm -f ./$(DEPDIR)/attach-p-cmd-p.Po
        -rm -f ./$(DEPDIR)/block_reset_raise_run.Po
+       -rm -f ./$(DEPDIR)/block_reset_run.Po
        -rm -f ./$(DEPDIR)/bpf-obj_get_info_by_fd-prog-v.Po
        -rm -f ./$(DEPDIR)/bpf-obj_get_info_by_fd-prog.Po
        -rm -f ./$(DEPDIR)/bpf-obj_get_info_by_fd-v.Po
        -rm -f ./$(DEPDIR)/bpf-obj_get_info_by_fd.Po
+       -rm -f ./$(DEPDIR)/bpf-success-long-y.Po
        -rm -f ./$(DEPDIR)/bpf-success-v.Po
        -rm -f ./$(DEPDIR)/bpf-success.Po
        -rm -f ./$(DEPDIR)/bpf-v.Po
@@ -9241,16 +12214,48 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/clock_adjtime.Po
        -rm -f ./$(DEPDIR)/clock_nanosleep.Po
        -rm -f ./$(DEPDIR)/clock_xettime.Po
+       -rm -f ./$(DEPDIR)/clone-flags.Po
+       -rm -f ./$(DEPDIR)/clone3-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/clone3-Xraw.Po
+       -rm -f ./$(DEPDIR)/clone3-Xverbose.Po
+       -rm -f ./$(DEPDIR)/clone3-success-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/clone3-success-Xraw.Po
+       -rm -f ./$(DEPDIR)/clone3-success-Xverbose.Po
+       -rm -f ./$(DEPDIR)/clone3-success.Po
+       -rm -f ./$(DEPDIR)/clone3.Po
+       -rm -f ./$(DEPDIR)/clone_parent--quiet-exit.Po
+       -rm -f ./$(DEPDIR)/clone_parent-q.Po
+       -rm -f ./$(DEPDIR)/clone_parent-qq.Po
        -rm -f ./$(DEPDIR)/clone_parent.Po
+       -rm -f ./$(DEPDIR)/clone_ptrace--quiet-attach.Po
+       -rm -f ./$(DEPDIR)/clone_ptrace--quiet-exit.Po
+       -rm -f ./$(DEPDIR)/clone_ptrace-q.Po
+       -rm -f ./$(DEPDIR)/clone_ptrace-qq.Po
        -rm -f ./$(DEPDIR)/clone_ptrace.Po
+       -rm -f ./$(DEPDIR)/close_range-P.Po
+       -rm -f ./$(DEPDIR)/close_range-y.Po
+       -rm -f ./$(DEPDIR)/close_range-yy.Po
+       -rm -f ./$(DEPDIR)/close_range.Po
        -rm -f ./$(DEPDIR)/copy_file_range.Po
        -rm -f ./$(DEPDIR)/count-f.Po
        -rm -f ./$(DEPDIR)/creat.Po
        -rm -f ./$(DEPDIR)/delay.Po
        -rm -f ./$(DEPDIR)/delete_module.Po
+       -rm -f ./$(DEPDIR)/dev--decode-fds-dev.Po
+       -rm -f ./$(DEPDIR)/dev--decode-fds-path.Po
+       -rm -f ./$(DEPDIR)/dev--decode-fds-socket.Po
        -rm -f ./$(DEPDIR)/dev-yy.Po
+       -rm -f ./$(DEPDIR)/dup-P.Po
+       -rm -f ./$(DEPDIR)/dup-y.Po
+       -rm -f ./$(DEPDIR)/dup-yy.Po
        -rm -f ./$(DEPDIR)/dup.Po
+       -rm -f ./$(DEPDIR)/dup2-P.Po
+       -rm -f ./$(DEPDIR)/dup2-y.Po
+       -rm -f ./$(DEPDIR)/dup2-yy.Po
        -rm -f ./$(DEPDIR)/dup2.Po
+       -rm -f ./$(DEPDIR)/dup3-P.Po
+       -rm -f ./$(DEPDIR)/dup3-y.Po
+       -rm -f ./$(DEPDIR)/dup3-yy.Po
        -rm -f ./$(DEPDIR)/dup3.Po
        -rm -f ./$(DEPDIR)/epoll_create.Po
        -rm -f ./$(DEPDIR)/epoll_create1.Po
@@ -9263,7 +12268,14 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/execve.Po
        -rm -f ./$(DEPDIR)/execveat-v.Po
        -rm -f ./$(DEPDIR)/execveat.Po
+       -rm -f ./$(DEPDIR)/faccessat-P.Po
+       -rm -f ./$(DEPDIR)/faccessat-y.Po
+       -rm -f ./$(DEPDIR)/faccessat-yy.Po
        -rm -f ./$(DEPDIR)/faccessat.Po
+       -rm -f ./$(DEPDIR)/faccessat2-P.Po
+       -rm -f ./$(DEPDIR)/faccessat2-y.Po
+       -rm -f ./$(DEPDIR)/faccessat2-yy.Po
+       -rm -f ./$(DEPDIR)/faccessat2.Po
        -rm -f ./$(DEPDIR)/fadvise64.Po
        -rm -f ./$(DEPDIR)/fadvise64_64.Po
        -rm -f ./$(DEPDIR)/fallocate.Po
@@ -9278,16 +12290,27 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/fchown.Po
        -rm -f ./$(DEPDIR)/fchown32.Po
        -rm -f ./$(DEPDIR)/fchownat.Po
+       -rm -f ./$(DEPDIR)/fcntl--pidns-translation.Po
        -rm -f ./$(DEPDIR)/fcntl.Po
+       -rm -f ./$(DEPDIR)/fcntl64--pidns-translation.Po
        -rm -f ./$(DEPDIR)/fcntl64.Po
        -rm -f ./$(DEPDIR)/fdatasync.Po
        -rm -f ./$(DEPDIR)/fflush.Po
        -rm -f ./$(DEPDIR)/file_handle.Po
        -rm -f ./$(DEPDIR)/file_ioctl.Po
        -rm -f ./$(DEPDIR)/filter-unavailable.Po
+       -rm -f ./$(DEPDIR)/filter_seccomp-flag.Po
+       -rm -f ./$(DEPDIR)/filter_seccomp-perf.Po
        -rm -f ./$(DEPDIR)/finit_module.Po
        -rm -f ./$(DEPDIR)/flock.Po
+       -rm -f ./$(DEPDIR)/fork--pidns-translation.Po
        -rm -f ./$(DEPDIR)/fork-f.Po
+       -rm -f ./$(DEPDIR)/fsconfig-P.Po
+       -rm -f ./$(DEPDIR)/fsconfig.Po
+       -rm -f ./$(DEPDIR)/fsmount.Po
+       -rm -f ./$(DEPDIR)/fsopen.Po
+       -rm -f ./$(DEPDIR)/fspick-P.Po
+       -rm -f ./$(DEPDIR)/fspick.Po
        -rm -f ./$(DEPDIR)/fstat-Xabbrev.Po
        -rm -f ./$(DEPDIR)/fstat-Xraw.Po
        -rm -f ./$(DEPDIR)/fstat-Xverbose.Po
@@ -9306,9 +12329,12 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/futex.Po
        -rm -f ./$(DEPDIR)/futimesat.Po
        -rm -f ./$(DEPDIR)/get_mempolicy.Po
+       -rm -f ./$(DEPDIR)/get_process_reaper.Po
        -rm -f ./$(DEPDIR)/getcpu.Po
        -rm -f ./$(DEPDIR)/getcwd.Po
+       -rm -f ./$(DEPDIR)/getdents-v.Po
        -rm -f ./$(DEPDIR)/getdents.Po
+       -rm -f ./$(DEPDIR)/getdents64-v.Po
        -rm -f ./$(DEPDIR)/getdents64.Po
        -rm -f ./$(DEPDIR)/getegid.Po
        -rm -f ./$(DEPDIR)/getegid32.Po
@@ -9319,7 +12345,9 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/getgroups.Po
        -rm -f ./$(DEPDIR)/getgroups32.Po
        -rm -f ./$(DEPDIR)/getpeername.Po
+       -rm -f ./$(DEPDIR)/getpgrp--pidns-translation.Po
        -rm -f ./$(DEPDIR)/getpgrp.Po
+       -rm -f ./$(DEPDIR)/getpid--pidns-translation.Po
        -rm -f ./$(DEPDIR)/getpid.Po
        -rm -f ./$(DEPDIR)/getppid.Po
        -rm -f ./$(DEPDIR)/getrandom.Po
@@ -9329,30 +12357,66 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/getresuid32.Po
        -rm -f ./$(DEPDIR)/getrlimit.Po
        -rm -f ./$(DEPDIR)/getrusage.Po
+       -rm -f ./$(DEPDIR)/getsid--pidns-translation.Po
        -rm -f ./$(DEPDIR)/getsid.Po
        -rm -f ./$(DEPDIR)/getsockname.Po
+       -rm -f ./$(DEPDIR)/gettid--pidns-translation.Po
        -rm -f ./$(DEPDIR)/gettid.Po
        -rm -f ./$(DEPDIR)/getuid.Po
        -rm -f ./$(DEPDIR)/getuid32.Po
-       -rm -f ./$(DEPDIR)/getxxid.Po
+       -rm -f ./$(DEPDIR)/getxgid.Po
+       -rm -f ./$(DEPDIR)/getxpid.Po
+       -rm -f ./$(DEPDIR)/getxuid.Po
        -rm -f ./$(DEPDIR)/group_req.Po
        -rm -f ./$(DEPDIR)/inet-cmsg.Po
        -rm -f ./$(DEPDIR)/init_module.Po
        -rm -f ./$(DEPDIR)/inject-nf.Po
        -rm -f ./$(DEPDIR)/inotify.Po
+       -rm -f ./$(DEPDIR)/inotify_init-y.Po
+       -rm -f ./$(DEPDIR)/inotify_init.Po
+       -rm -f ./$(DEPDIR)/inotify_init1-y.Po
        -rm -f ./$(DEPDIR)/inotify_init1.Po
        -rm -f ./$(DEPDIR)/int_0x80.Po
        -rm -f ./$(DEPDIR)/io_uring_enter.Po
        -rm -f ./$(DEPDIR)/io_uring_register.Po
        -rm -f ./$(DEPDIR)/io_uring_setup.Po
        -rm -f ./$(DEPDIR)/ioctl.Po
+       -rm -f ./$(DEPDIR)/ioctl_block--pidns-translation.Po
        -rm -f ./$(DEPDIR)/ioctl_block.Po
        -rm -f ./$(DEPDIR)/ioctl_dm-v.Po
        -rm -f ./$(DEPDIR)/ioctl_dm.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-success-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-success-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-success-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-success-v-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-success-v-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-success-v-Xverbose.Po
        -rm -f ./$(DEPDIR)/ioctl_evdev-success-v.Po
        -rm -f ./$(DEPDIR)/ioctl_evdev-success.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-v-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-v-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-v-Xverbose.Po
        -rm -f ./$(DEPDIR)/ioctl_evdev-v.Po
        -rm -f ./$(DEPDIR)/ioctl_evdev.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-success-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-success-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-success-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-success-v-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-success-v-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-success-v-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-success-v.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-success.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-v-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-v-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-v-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-v.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio.Po
        -rm -f ./$(DEPDIR)/ioctl_inotify.Po
        -rm -f ./$(DEPDIR)/ioctl_kvm_run-v.Po
        -rm -f ./$(DEPDIR)/ioctl_kvm_run.Po
@@ -9373,10 +12437,28 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/ioctl_sg_io_v3.Po
        -rm -f ./$(DEPDIR)/ioctl_sg_io_v4.Po
        -rm -f ./$(DEPDIR)/ioctl_sock_gifconf.Po
+       -rm -f ./$(DEPDIR)/ioctl_tee.Po
        -rm -f ./$(DEPDIR)/ioctl_uffdio.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-success-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-success-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-success-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-success-v-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-success-v-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-success-v-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-success-v.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-success.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-v-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-v-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-v-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-v.Po
        -rm -f ./$(DEPDIR)/ioctl_v4l2.Po
+       -rm -f ./$(DEPDIR)/ioctl_watchdog.Po
        -rm -f ./$(DEPDIR)/ioperm.Po
        -rm -f ./$(DEPDIR)/iopl.Po
+       -rm -f ./$(DEPDIR)/ioprio--pidns-translation.Po
        -rm -f ./$(DEPDIR)/ioprio-Xabbrev.Po
        -rm -f ./$(DEPDIR)/ioprio-Xraw.Po
        -rm -f ./$(DEPDIR)/ioprio-Xverbose.Po
@@ -9400,6 +12482,7 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/ipc_shm-Xverbose.Po
        -rm -f ./$(DEPDIR)/ipc_shm.Po
        -rm -f ./$(DEPDIR)/is_linux_mips_n64.Po
+       -rm -f ./$(DEPDIR)/kcmp-y--pidns-translation.Po
        -rm -f ./$(DEPDIR)/kcmp-y.Po
        -rm -f ./$(DEPDIR)/kcmp.Po
        -rm -f ./$(DEPDIR)/kern_features.Po
@@ -9413,12 +12496,14 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/keyctl-Xraw.Po
        -rm -f ./$(DEPDIR)/keyctl-Xverbose.Po
        -rm -f ./$(DEPDIR)/keyctl.Po
+       -rm -f ./$(DEPDIR)/kill--pidns-translation.Po
        -rm -f ./$(DEPDIR)/kill.Po
        -rm -f ./$(DEPDIR)/kill_child.Po
        -rm -f ./$(DEPDIR)/ksysent.Po
        -rm -f ./$(DEPDIR)/lchown.Po
        -rm -f ./$(DEPDIR)/lchown32.Po
        -rm -f ./$(DEPDIR)/libtests_a-create_nl_socket.Po
+       -rm -f ./$(DEPDIR)/libtests_a-create_tmpfile.Po
        -rm -f ./$(DEPDIR)/libtests_a-errno2name.Po
        -rm -f ./$(DEPDIR)/libtests_a-error_msg.Po
        -rm -f ./$(DEPDIR)/libtests_a-fill_memory.Po
@@ -9430,20 +12515,26 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/libtests_a-inode_of_sockfd.Po
        -rm -f ./$(DEPDIR)/libtests_a-libmmsg.Po
        -rm -f ./$(DEPDIR)/libtests_a-libsocketcall.Po
+       -rm -f ./$(DEPDIR)/libtests_a-lock_file.Po
        -rm -f ./$(DEPDIR)/libtests_a-overflowuid.Po
+       -rm -f ./$(DEPDIR)/libtests_a-pidns.Po
        -rm -f ./$(DEPDIR)/libtests_a-pipe_maxfd.Po
        -rm -f ./$(DEPDIR)/libtests_a-print_quoted_string.Po
        -rm -f ./$(DEPDIR)/libtests_a-print_time.Po
        -rm -f ./$(DEPDIR)/libtests_a-printflags.Po
-       -rm -f ./$(DEPDIR)/libtests_a-printxval.Po
+       -rm -f ./$(DEPDIR)/libtests_a-printxval-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/libtests_a-printxval-Xraw.Po
+       -rm -f ./$(DEPDIR)/libtests_a-printxval-Xverbose.Po
        -rm -f ./$(DEPDIR)/libtests_a-signal2name.Po
        -rm -f ./$(DEPDIR)/libtests_a-skip_unavailable.Po
        -rm -f ./$(DEPDIR)/libtests_a-sprintrc.Po
+       -rm -f ./$(DEPDIR)/libtests_a-status.Po
        -rm -f ./$(DEPDIR)/libtests_a-tail_alloc.Po
        -rm -f ./$(DEPDIR)/libtests_a-test_printpath.Po
        -rm -f ./$(DEPDIR)/libtests_a-test_printstrn.Po
        -rm -f ./$(DEPDIR)/libtests_a-test_ucopy.Po
        -rm -f ./$(DEPDIR)/libtests_a-tprintf.Po
+       -rm -f ./$(DEPDIR)/libtests_a-xmalloc_for_tests.Po
        -rm -f ./$(DEPDIR)/link.Po
        -rm -f ./$(DEPDIR)/linkat.Po
        -rm -f ./$(DEPDIR)/list_sigaction_signum.Po
@@ -9455,12 +12546,18 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/lstat.Po
        -rm -f ./$(DEPDIR)/lstat64-lstat64.Po
        -rm -f ./$(DEPDIR)/madvise.Po
+       -rm -f ./$(DEPDIR)/maybe_switch_current_tcp--quiet-thread-execve.Po
+       -rm -f ./$(DEPDIR)/maybe_switch_current_tcp.Po
+       -rm -f ./$(DEPDIR)/mbind-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/mbind-Xraw.Po
+       -rm -f ./$(DEPDIR)/mbind-Xverbose.Po
        -rm -f ./$(DEPDIR)/mbind.Po
        -rm -f ./$(DEPDIR)/membarrier.Po
        -rm -f ./$(DEPDIR)/memfd_create-Xabbrev.Po
        -rm -f ./$(DEPDIR)/memfd_create-Xraw.Po
        -rm -f ./$(DEPDIR)/memfd_create-Xverbose.Po
        -rm -f ./$(DEPDIR)/memfd_create.Po
+       -rm -f ./$(DEPDIR)/migrate_pages--pidns-translation.Po
        -rm -f ./$(DEPDIR)/migrate_pages.Po
        -rm -f ./$(DEPDIR)/mincore.Po
        -rm -f ./$(DEPDIR)/mkdir.Po
@@ -9487,6 +12584,9 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/mount-Xraw.Po
        -rm -f ./$(DEPDIR)/mount-Xverbose.Po
        -rm -f ./$(DEPDIR)/mount.Po
+       -rm -f ./$(DEPDIR)/move_mount-P.Po
+       -rm -f ./$(DEPDIR)/move_mount.Po
+       -rm -f ./$(DEPDIR)/move_pages--pidns-translation.Po
        -rm -f ./$(DEPDIR)/move_pages-Xabbrev.Po
        -rm -f ./$(DEPDIR)/move_pages-Xraw.Po
        -rm -f ./$(DEPDIR)/move_pages-Xverbose.Po
@@ -9500,12 +12600,17 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/msg_name.Po
        -rm -f ./$(DEPDIR)/munlockall.Po
        -rm -f ./$(DEPDIR)/nanosleep.Po
+       -rm -f ./$(DEPDIR)/net--decode-fds-dev-netlink.Po
+       -rm -f ./$(DEPDIR)/net--decode-fds-none-netlink.Po
+       -rm -f ./$(DEPDIR)/net--decode-fds-path-netlink.Po
+       -rm -f ./$(DEPDIR)/net--decode-fds-socket-netlink.Po
        -rm -f ./$(DEPDIR)/net-accept-connect.Po
        -rm -f ./$(DEPDIR)/net-icmp_filter.Po
        -rm -f ./$(DEPDIR)/net-packet_mreq-Xabbrev.Po
        -rm -f ./$(DEPDIR)/net-packet_mreq-Xraw.Po
        -rm -f ./$(DEPDIR)/net-packet_mreq-Xverbose.Po
        -rm -f ./$(DEPDIR)/net-packet_mreq.Po
+       -rm -f ./$(DEPDIR)/net-sockaddr--pidns-translation.Po
        -rm -f ./$(DEPDIR)/net-sockaddr.Po
        -rm -f ./$(DEPDIR)/net-tpacket_req.Po
        -rm -f ./$(DEPDIR)/net-tpacket_stats-success.Po
@@ -9515,6 +12620,7 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/net-yy-inet6.Po
        -rm -f ./$(DEPDIR)/net-yy-netlink.Po
        -rm -f ./$(DEPDIR)/net-yy-unix.Po
+       -rm -f ./$(DEPDIR)/netlink_audit--pidns-translation.Po
        -rm -f ./$(DEPDIR)/netlink_audit.Po
        -rm -f ./$(DEPDIR)/netlink_crypto.Po
        -rm -f ./$(DEPDIR)/netlink_generic.Po
@@ -9552,6 +12658,7 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/nlattr_ifla_brport.Po
        -rm -f ./$(DEPDIR)/nlattr_ifla_linkinfo.Po
        -rm -f ./$(DEPDIR)/nlattr_ifla_port.Po
+       -rm -f ./$(DEPDIR)/nlattr_ifla_xdp-y.Po
        -rm -f ./$(DEPDIR)/nlattr_ifla_xdp.Po
        -rm -f ./$(DEPDIR)/nlattr_inet_diag_msg.Po
        -rm -f ./$(DEPDIR)/nlattr_inet_diag_req_compat.Po
@@ -9588,7 +12695,19 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/oldselect.Po
        -rm -f ./$(DEPDIR)/oldstat.Po
        -rm -f ./$(DEPDIR)/open.Po
+       -rm -f ./$(DEPDIR)/open_tree-P.Po
+       -rm -f ./$(DEPDIR)/open_tree.Po
        -rm -f ./$(DEPDIR)/openat.Po
+       -rm -f ./$(DEPDIR)/openat2-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/openat2-Xraw.Po
+       -rm -f ./$(DEPDIR)/openat2-Xverbose.Po
+       -rm -f ./$(DEPDIR)/openat2-v-y-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/openat2-v-y-Xraw.Po
+       -rm -f ./$(DEPDIR)/openat2-v-y-Xverbose.Po
+       -rm -f ./$(DEPDIR)/openat2-v-y.Po
+       -rm -f ./$(DEPDIR)/openat2-v.Po
+       -rm -f ./$(DEPDIR)/openat2-y.Po
+       -rm -f ./$(DEPDIR)/openat2.Po
        -rm -f ./$(DEPDIR)/orphaned_process_group.Po
        -rm -f ./$(DEPDIR)/osf_utimes.Po
        -rm -f ./$(DEPDIR)/pause.Po
@@ -9600,7 +12719,20 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/personality-Xraw.Po
        -rm -f ./$(DEPDIR)/personality-Xverbose.Po
        -rm -f ./$(DEPDIR)/personality.Po
+       -rm -f ./$(DEPDIR)/pidfd_getfd-y.Po
+       -rm -f ./$(DEPDIR)/pidfd_getfd-yy.Po
+       -rm -f ./$(DEPDIR)/pidfd_getfd.Po
+       -rm -f ./$(DEPDIR)/pidfd_open--decode-fd-path.Po
+       -rm -f ./$(DEPDIR)/pidfd_open--decode-fd-pidfd.Po
+       -rm -f ./$(DEPDIR)/pidfd_open--decode-fd-socket.Po
+       -rm -f ./$(DEPDIR)/pidfd_open--pidns-translation.Po
+       -rm -f ./$(DEPDIR)/pidfd_open-P.Po
+       -rm -f ./$(DEPDIR)/pidfd_open-y.Po
+       -rm -f ./$(DEPDIR)/pidfd_open-yy.Po
+       -rm -f ./$(DEPDIR)/pidfd_open.Po
+       -rm -f ./$(DEPDIR)/pidfd_send_signal--pidns-translation.Po
        -rm -f ./$(DEPDIR)/pidfd_send_signal.Po
+       -rm -f ./$(DEPDIR)/pidns-cache.Po
        -rm -f ./$(DEPDIR)/pipe.Po
        -rm -f ./$(DEPDIR)/pipe2.Po
        -rm -f ./$(DEPDIR)/pkey_alloc.Po
@@ -9627,6 +12759,7 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/preadv2-pwritev2.Po
        -rm -f ./$(DEPDIR)/preadv_pwritev-preadv-pwritev.Po
        -rm -f ./$(DEPDIR)/print_maxfd.Po
+       -rm -f ./$(DEPDIR)/print_ppid_tracerpid.Po
        -rm -f ./$(DEPDIR)/printpath-umovestr-peekdata.Po
        -rm -f ./$(DEPDIR)/printpath-umovestr-undumpable.Po
        -rm -f ./$(DEPDIR)/printpath-umovestr.Po
@@ -9637,8 +12770,11 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/printstrn-umoven-peekdata.Po
        -rm -f ./$(DEPDIR)/printstrn-umoven-undumpable.Po
        -rm -f ./$(DEPDIR)/printstrn-umoven.Po
+       -rm -f ./$(DEPDIR)/prlimit64--pidns-translation.Po
        -rm -f ./$(DEPDIR)/prlimit64.Po
+       -rm -f ./$(DEPDIR)/process_vm_readv--pidns-translation.Po
        -rm -f ./$(DEPDIR)/process_vm_readv.Po
+       -rm -f ./$(DEPDIR)/process_vm_writev--pidns-translation.Po
        -rm -f ./$(DEPDIR)/process_vm_writev.Po
        -rm -f ./$(DEPDIR)/pselect6.Po
        -rm -f ./$(DEPDIR)/ptrace.Po
@@ -9667,6 +12803,8 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/readlinkat.Po
        -rm -f ./$(DEPDIR)/readv.Po
        -rm -f ./$(DEPDIR)/reboot.Po
+       -rm -f ./$(DEPDIR)/recv-MSG_TRUNC.Po
+       -rm -f ./$(DEPDIR)/recvfrom-MSG_TRUNC.Po
        -rm -f ./$(DEPDIR)/recvfrom.Po
        -rm -f ./$(DEPDIR)/recvmmsg-timeout.Po
        -rm -f ./$(DEPDIR)/recvmsg.Po
@@ -9685,10 +12823,12 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/rt_sigaction.Po
        -rm -f ./$(DEPDIR)/rt_sigpending.Po
        -rm -f ./$(DEPDIR)/rt_sigprocmask.Po
+       -rm -f ./$(DEPDIR)/rt_sigqueueinfo--pidns-translation.Po
        -rm -f ./$(DEPDIR)/rt_sigqueueinfo.Po
        -rm -f ./$(DEPDIR)/rt_sigreturn.Po
        -rm -f ./$(DEPDIR)/rt_sigsuspend.Po
        -rm -f ./$(DEPDIR)/rt_sigtimedwait.Po
+       -rm -f ./$(DEPDIR)/rt_tgsigqueueinfo--pidns-translation.Po
        -rm -f ./$(DEPDIR)/rt_tgsigqueueinfo.Po
        -rm -f ./$(DEPDIR)/run_expect_termsig.Po
        -rm -f ./$(DEPDIR)/s390_guarded_storage-v.Po
@@ -9699,9 +12839,13 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/s390_sthyi.Po
        -rm -f ./$(DEPDIR)/sched_get_priority_mxx.Po
        -rm -f ./$(DEPDIR)/sched_rr_get_interval.Po
+       -rm -f ./$(DEPDIR)/sched_xetaffinity--pidns-translation.Po
        -rm -f ./$(DEPDIR)/sched_xetaffinity.Po
+       -rm -f ./$(DEPDIR)/sched_xetattr--pidns-translation.Po
        -rm -f ./$(DEPDIR)/sched_xetattr.Po
+       -rm -f ./$(DEPDIR)/sched_xetparam--pidns-translation.Po
        -rm -f ./$(DEPDIR)/sched_xetparam.Po
+       -rm -f ./$(DEPDIR)/sched_xetscheduler--pidns-translation.Po
        -rm -f ./$(DEPDIR)/sched_xetscheduler.Po
        -rm -f ./$(DEPDIR)/sched_yield.Po
        -rm -f ./$(DEPDIR)/scm_rights.Po
@@ -9711,9 +12855,14 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/seccomp_get_action_avail.Po
        -rm -f ./$(DEPDIR)/select-P.Po
        -rm -f ./$(DEPDIR)/select.Po
+       -rm -f ./$(DEPDIR)/semop-indirect.Po
        -rm -f ./$(DEPDIR)/semop.Po
+       -rm -f ./$(DEPDIR)/semtimedop.Po
        -rm -f ./$(DEPDIR)/sendfile.Po
        -rm -f ./$(DEPDIR)/sendfile64.Po
+       -rm -f ./$(DEPDIR)/set_mempolicy-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/set_mempolicy-Xraw.Po
+       -rm -f ./$(DEPDIR)/set_mempolicy-Xverbose.Po
        -rm -f ./$(DEPDIR)/set_mempolicy.Po
        -rm -f ./$(DEPDIR)/set_ptracer_any.Po
        -rm -f ./$(DEPDIR)/set_sigblock.Po
@@ -9729,6 +12878,7 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/setgroups32.Po
        -rm -f ./$(DEPDIR)/sethostname.Po
        -rm -f ./$(DEPDIR)/setns.Po
+       -rm -f ./$(DEPDIR)/setpgrp-exec.Po
        -rm -f ./$(DEPDIR)/setregid.Po
        -rm -f ./$(DEPDIR)/setregid32.Po
        -rm -f ./$(DEPDIR)/setresgid.Po
@@ -9749,6 +12899,7 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/sigaltstack.Po
        -rm -f ./$(DEPDIR)/siginfo.Po
        -rm -f ./$(DEPDIR)/signal.Po
+       -rm -f ./$(DEPDIR)/signal_receive--pidns-translation.Po
        -rm -f ./$(DEPDIR)/signal_receive.Po
        -rm -f ./$(DEPDIR)/signalfd4.Po
        -rm -f ./$(DEPDIR)/sigpending.Po
@@ -9758,6 +12909,7 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/sleep.Po
        -rm -f ./$(DEPDIR)/so_error.Po
        -rm -f ./$(DEPDIR)/so_linger.Po
+       -rm -f ./$(DEPDIR)/so_peercred--pidns-translation.Po
        -rm -f ./$(DEPDIR)/so_peercred-Xabbrev.Po
        -rm -f ./$(DEPDIR)/so_peercred-Xraw.Po
        -rm -f ./$(DEPDIR)/so_peercred-Xverbose.Po
@@ -9777,6 +12929,7 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/stack-fcall-1.Po
        -rm -f ./$(DEPDIR)/stack-fcall-2.Po
        -rm -f ./$(DEPDIR)/stack-fcall-3.Po
+       -rm -f ./$(DEPDIR)/stack-fcall-attach.Po
        -rm -f ./$(DEPDIR)/stack-fcall-mangled-0.Po
        -rm -f ./$(DEPDIR)/stack-fcall-mangled-1.Po
        -rm -f ./$(DEPDIR)/stack-fcall-mangled-2.Po
@@ -9787,7 +12940,25 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/stat64-stat64.Po
        -rm -f ./$(DEPDIR)/statfs-statfs.Po
        -rm -f ./$(DEPDIR)/statfs64.Po
+       -rm -f ./$(DEPDIR)/status-all.Po
+       -rm -f ./$(DEPDIR)/status-failed-long.Po
+       -rm -f ./$(DEPDIR)/status-failed-status.Po
+       -rm -f ./$(DEPDIR)/status-failed.Po
+       -rm -f ./$(DEPDIR)/status-none-f.Po
+       -rm -f ./$(DEPDIR)/status-none-threads.Po
+       -rm -f ./$(DEPDIR)/status-none.Po
+       -rm -f ./$(DEPDIR)/status-successful-long.Po
+       -rm -f ./$(DEPDIR)/status-successful-status.Po
+       -rm -f ./$(DEPDIR)/status-successful.Po
+       -rm -f ./$(DEPDIR)/status-unfinished-threads.Po
+       -rm -f ./$(DEPDIR)/status-unfinished.Po
        -rm -f ./$(DEPDIR)/statx.Po
+       -rm -f ./$(DEPDIR)/strace--strings-in-hex-all.Po
+       -rm -f ./$(DEPDIR)/strace--strings-in-hex-non-ascii.Po
+       -rm -f ./$(DEPDIR)/strace--strings-in-hex.Po
+       -rm -f ./$(DEPDIR)/strace-n.Po
+       -rm -f ./$(DEPDIR)/strace-x.Po
+       -rm -f ./$(DEPDIR)/strace-xx.Po
        -rm -f ./$(DEPDIR)/swap.Po
        -rm -f ./$(DEPDIR)/sxetmask.Po
        -rm -f ./$(DEPDIR)/symlink.Po
@@ -9796,8 +12967,15 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/sync_file_range.Po
        -rm -f ./$(DEPDIR)/sync_file_range2.Po
        -rm -f ./$(DEPDIR)/sysinfo.Po
+       -rm -f ./$(DEPDIR)/syslog-success.Po
        -rm -f ./$(DEPDIR)/syslog.Po
        -rm -f ./$(DEPDIR)/tee.Po
+       -rm -f ./$(DEPDIR)/tgkill--pidns-translation.Po
+       -rm -f ./$(DEPDIR)/tgkill.Po
+       -rm -f ./$(DEPDIR)/threads-execve--quiet-thread-execve.Po
+       -rm -f ./$(DEPDIR)/threads-execve-q.Po
+       -rm -f ./$(DEPDIR)/threads-execve-qq.Po
+       -rm -f ./$(DEPDIR)/threads-execve-qqq.Po
        -rm -f ./$(DEPDIR)/threads-execve.Po
        -rm -f ./$(DEPDIR)/time.Po
        -rm -f ./$(DEPDIR)/timer_create.Po
@@ -9805,6 +12983,11 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/timerfd_xettime.Po
        -rm -f ./$(DEPDIR)/times-fail.Po
        -rm -f ./$(DEPDIR)/times.Po
+       -rm -f ./$(DEPDIR)/tkill--pidns-translation.Po
+       -rm -f ./$(DEPDIR)/tkill.Po
+       -rm -f ./$(DEPDIR)/tracer_ppid_pgid_sid.Po
+       -rm -f ./$(DEPDIR)/trie_test-trie_for_tests.Po
+       -rm -f ./$(DEPDIR)/trie_test-trie_test.Po
        -rm -f ./$(DEPDIR)/truncate.Po
        -rm -f ./$(DEPDIR)/truncate64-truncate64.Po
        -rm -f ./$(DEPDIR)/ugetrlimit.Po
@@ -9817,6 +13000,8 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/umovestr.Po
        -rm -f ./$(DEPDIR)/umovestr2.Po
        -rm -f ./$(DEPDIR)/umovestr3.Po
+       -rm -f ./$(DEPDIR)/umovestr_cached.Po
+       -rm -f ./$(DEPDIR)/umovestr_cached_adjacent.Po
        -rm -f ./$(DEPDIR)/uname.Po
        -rm -f ./$(DEPDIR)/unblock_reset_raise.Po
        -rm -f ./$(DEPDIR)/unix-pair-send-recv.Po
@@ -9842,10 +13027,13 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/waitpid.Po
        -rm -f ./$(DEPDIR)/xattr-strings.Po
        -rm -f ./$(DEPDIR)/xattr.Po
+       -rm -f ./$(DEPDIR)/xet_robust_list--pidns-translation.Po
        -rm -f ./$(DEPDIR)/xet_robust_list.Po
        -rm -f ./$(DEPDIR)/xet_thread_area_x86.Po
        -rm -f ./$(DEPDIR)/xetitimer.Po
+       -rm -f ./$(DEPDIR)/xetpgid--pidns-translation.Po
        -rm -f ./$(DEPDIR)/xetpgid.Po
+       -rm -f ./$(DEPDIR)/xetpriority--pidns-translation.Po
        -rm -f ./$(DEPDIR)/xetpriority.Po
        -rm -f ./$(DEPDIR)/xettimeofday.Po
        -rm -f ./$(DEPDIR)/zeroargc.Po
@@ -9911,10 +13099,12 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/attach-p-cmd-cmd.Po
        -rm -f ./$(DEPDIR)/attach-p-cmd-p.Po
        -rm -f ./$(DEPDIR)/block_reset_raise_run.Po
+       -rm -f ./$(DEPDIR)/block_reset_run.Po
        -rm -f ./$(DEPDIR)/bpf-obj_get_info_by_fd-prog-v.Po
        -rm -f ./$(DEPDIR)/bpf-obj_get_info_by_fd-prog.Po
        -rm -f ./$(DEPDIR)/bpf-obj_get_info_by_fd-v.Po
        -rm -f ./$(DEPDIR)/bpf-obj_get_info_by_fd.Po
+       -rm -f ./$(DEPDIR)/bpf-success-long-y.Po
        -rm -f ./$(DEPDIR)/bpf-success-v.Po
        -rm -f ./$(DEPDIR)/bpf-success.Po
        -rm -f ./$(DEPDIR)/bpf-v.Po
@@ -9932,16 +13122,48 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/clock_adjtime.Po
        -rm -f ./$(DEPDIR)/clock_nanosleep.Po
        -rm -f ./$(DEPDIR)/clock_xettime.Po
+       -rm -f ./$(DEPDIR)/clone-flags.Po
+       -rm -f ./$(DEPDIR)/clone3-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/clone3-Xraw.Po
+       -rm -f ./$(DEPDIR)/clone3-Xverbose.Po
+       -rm -f ./$(DEPDIR)/clone3-success-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/clone3-success-Xraw.Po
+       -rm -f ./$(DEPDIR)/clone3-success-Xverbose.Po
+       -rm -f ./$(DEPDIR)/clone3-success.Po
+       -rm -f ./$(DEPDIR)/clone3.Po
+       -rm -f ./$(DEPDIR)/clone_parent--quiet-exit.Po
+       -rm -f ./$(DEPDIR)/clone_parent-q.Po
+       -rm -f ./$(DEPDIR)/clone_parent-qq.Po
        -rm -f ./$(DEPDIR)/clone_parent.Po
+       -rm -f ./$(DEPDIR)/clone_ptrace--quiet-attach.Po
+       -rm -f ./$(DEPDIR)/clone_ptrace--quiet-exit.Po
+       -rm -f ./$(DEPDIR)/clone_ptrace-q.Po
+       -rm -f ./$(DEPDIR)/clone_ptrace-qq.Po
        -rm -f ./$(DEPDIR)/clone_ptrace.Po
+       -rm -f ./$(DEPDIR)/close_range-P.Po
+       -rm -f ./$(DEPDIR)/close_range-y.Po
+       -rm -f ./$(DEPDIR)/close_range-yy.Po
+       -rm -f ./$(DEPDIR)/close_range.Po
        -rm -f ./$(DEPDIR)/copy_file_range.Po
        -rm -f ./$(DEPDIR)/count-f.Po
        -rm -f ./$(DEPDIR)/creat.Po
        -rm -f ./$(DEPDIR)/delay.Po
        -rm -f ./$(DEPDIR)/delete_module.Po
+       -rm -f ./$(DEPDIR)/dev--decode-fds-dev.Po
+       -rm -f ./$(DEPDIR)/dev--decode-fds-path.Po
+       -rm -f ./$(DEPDIR)/dev--decode-fds-socket.Po
        -rm -f ./$(DEPDIR)/dev-yy.Po
+       -rm -f ./$(DEPDIR)/dup-P.Po
+       -rm -f ./$(DEPDIR)/dup-y.Po
+       -rm -f ./$(DEPDIR)/dup-yy.Po
        -rm -f ./$(DEPDIR)/dup.Po
+       -rm -f ./$(DEPDIR)/dup2-P.Po
+       -rm -f ./$(DEPDIR)/dup2-y.Po
+       -rm -f ./$(DEPDIR)/dup2-yy.Po
        -rm -f ./$(DEPDIR)/dup2.Po
+       -rm -f ./$(DEPDIR)/dup3-P.Po
+       -rm -f ./$(DEPDIR)/dup3-y.Po
+       -rm -f ./$(DEPDIR)/dup3-yy.Po
        -rm -f ./$(DEPDIR)/dup3.Po
        -rm -f ./$(DEPDIR)/epoll_create.Po
        -rm -f ./$(DEPDIR)/epoll_create1.Po
@@ -9954,7 +13176,14 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/execve.Po
        -rm -f ./$(DEPDIR)/execveat-v.Po
        -rm -f ./$(DEPDIR)/execveat.Po
+       -rm -f ./$(DEPDIR)/faccessat-P.Po
+       -rm -f ./$(DEPDIR)/faccessat-y.Po
+       -rm -f ./$(DEPDIR)/faccessat-yy.Po
        -rm -f ./$(DEPDIR)/faccessat.Po
+       -rm -f ./$(DEPDIR)/faccessat2-P.Po
+       -rm -f ./$(DEPDIR)/faccessat2-y.Po
+       -rm -f ./$(DEPDIR)/faccessat2-yy.Po
+       -rm -f ./$(DEPDIR)/faccessat2.Po
        -rm -f ./$(DEPDIR)/fadvise64.Po
        -rm -f ./$(DEPDIR)/fadvise64_64.Po
        -rm -f ./$(DEPDIR)/fallocate.Po
@@ -9969,16 +13198,27 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/fchown.Po
        -rm -f ./$(DEPDIR)/fchown32.Po
        -rm -f ./$(DEPDIR)/fchownat.Po
+       -rm -f ./$(DEPDIR)/fcntl--pidns-translation.Po
        -rm -f ./$(DEPDIR)/fcntl.Po
+       -rm -f ./$(DEPDIR)/fcntl64--pidns-translation.Po
        -rm -f ./$(DEPDIR)/fcntl64.Po
        -rm -f ./$(DEPDIR)/fdatasync.Po
        -rm -f ./$(DEPDIR)/fflush.Po
        -rm -f ./$(DEPDIR)/file_handle.Po
        -rm -f ./$(DEPDIR)/file_ioctl.Po
        -rm -f ./$(DEPDIR)/filter-unavailable.Po
+       -rm -f ./$(DEPDIR)/filter_seccomp-flag.Po
+       -rm -f ./$(DEPDIR)/filter_seccomp-perf.Po
        -rm -f ./$(DEPDIR)/finit_module.Po
        -rm -f ./$(DEPDIR)/flock.Po
+       -rm -f ./$(DEPDIR)/fork--pidns-translation.Po
        -rm -f ./$(DEPDIR)/fork-f.Po
+       -rm -f ./$(DEPDIR)/fsconfig-P.Po
+       -rm -f ./$(DEPDIR)/fsconfig.Po
+       -rm -f ./$(DEPDIR)/fsmount.Po
+       -rm -f ./$(DEPDIR)/fsopen.Po
+       -rm -f ./$(DEPDIR)/fspick-P.Po
+       -rm -f ./$(DEPDIR)/fspick.Po
        -rm -f ./$(DEPDIR)/fstat-Xabbrev.Po
        -rm -f ./$(DEPDIR)/fstat-Xraw.Po
        -rm -f ./$(DEPDIR)/fstat-Xverbose.Po
@@ -9997,9 +13237,12 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/futex.Po
        -rm -f ./$(DEPDIR)/futimesat.Po
        -rm -f ./$(DEPDIR)/get_mempolicy.Po
+       -rm -f ./$(DEPDIR)/get_process_reaper.Po
        -rm -f ./$(DEPDIR)/getcpu.Po
        -rm -f ./$(DEPDIR)/getcwd.Po
+       -rm -f ./$(DEPDIR)/getdents-v.Po
        -rm -f ./$(DEPDIR)/getdents.Po
+       -rm -f ./$(DEPDIR)/getdents64-v.Po
        -rm -f ./$(DEPDIR)/getdents64.Po
        -rm -f ./$(DEPDIR)/getegid.Po
        -rm -f ./$(DEPDIR)/getegid32.Po
@@ -10010,7 +13253,9 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/getgroups.Po
        -rm -f ./$(DEPDIR)/getgroups32.Po
        -rm -f ./$(DEPDIR)/getpeername.Po
+       -rm -f ./$(DEPDIR)/getpgrp--pidns-translation.Po
        -rm -f ./$(DEPDIR)/getpgrp.Po
+       -rm -f ./$(DEPDIR)/getpid--pidns-translation.Po
        -rm -f ./$(DEPDIR)/getpid.Po
        -rm -f ./$(DEPDIR)/getppid.Po
        -rm -f ./$(DEPDIR)/getrandom.Po
@@ -10020,30 +13265,66 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/getresuid32.Po
        -rm -f ./$(DEPDIR)/getrlimit.Po
        -rm -f ./$(DEPDIR)/getrusage.Po
+       -rm -f ./$(DEPDIR)/getsid--pidns-translation.Po
        -rm -f ./$(DEPDIR)/getsid.Po
        -rm -f ./$(DEPDIR)/getsockname.Po
+       -rm -f ./$(DEPDIR)/gettid--pidns-translation.Po
        -rm -f ./$(DEPDIR)/gettid.Po
        -rm -f ./$(DEPDIR)/getuid.Po
        -rm -f ./$(DEPDIR)/getuid32.Po
-       -rm -f ./$(DEPDIR)/getxxid.Po
+       -rm -f ./$(DEPDIR)/getxgid.Po
+       -rm -f ./$(DEPDIR)/getxpid.Po
+       -rm -f ./$(DEPDIR)/getxuid.Po
        -rm -f ./$(DEPDIR)/group_req.Po
        -rm -f ./$(DEPDIR)/inet-cmsg.Po
        -rm -f ./$(DEPDIR)/init_module.Po
        -rm -f ./$(DEPDIR)/inject-nf.Po
        -rm -f ./$(DEPDIR)/inotify.Po
+       -rm -f ./$(DEPDIR)/inotify_init-y.Po
+       -rm -f ./$(DEPDIR)/inotify_init.Po
+       -rm -f ./$(DEPDIR)/inotify_init1-y.Po
        -rm -f ./$(DEPDIR)/inotify_init1.Po
        -rm -f ./$(DEPDIR)/int_0x80.Po
        -rm -f ./$(DEPDIR)/io_uring_enter.Po
        -rm -f ./$(DEPDIR)/io_uring_register.Po
        -rm -f ./$(DEPDIR)/io_uring_setup.Po
        -rm -f ./$(DEPDIR)/ioctl.Po
+       -rm -f ./$(DEPDIR)/ioctl_block--pidns-translation.Po
        -rm -f ./$(DEPDIR)/ioctl_block.Po
        -rm -f ./$(DEPDIR)/ioctl_dm-v.Po
        -rm -f ./$(DEPDIR)/ioctl_dm.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-success-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-success-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-success-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-success-v-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-success-v-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-success-v-Xverbose.Po
        -rm -f ./$(DEPDIR)/ioctl_evdev-success-v.Po
        -rm -f ./$(DEPDIR)/ioctl_evdev-success.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-v-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-v-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-v-Xverbose.Po
        -rm -f ./$(DEPDIR)/ioctl_evdev-v.Po
        -rm -f ./$(DEPDIR)/ioctl_evdev.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-success-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-success-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-success-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-success-v-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-success-v-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-success-v-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-success-v.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-success.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-v-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-v-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-v-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-v.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio.Po
        -rm -f ./$(DEPDIR)/ioctl_inotify.Po
        -rm -f ./$(DEPDIR)/ioctl_kvm_run-v.Po
        -rm -f ./$(DEPDIR)/ioctl_kvm_run.Po
@@ -10064,10 +13345,28 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/ioctl_sg_io_v3.Po
        -rm -f ./$(DEPDIR)/ioctl_sg_io_v4.Po
        -rm -f ./$(DEPDIR)/ioctl_sock_gifconf.Po
+       -rm -f ./$(DEPDIR)/ioctl_tee.Po
        -rm -f ./$(DEPDIR)/ioctl_uffdio.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-success-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-success-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-success-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-success-v-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-success-v-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-success-v-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-success-v.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-success.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-v-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-v-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-v-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-v.Po
        -rm -f ./$(DEPDIR)/ioctl_v4l2.Po
+       -rm -f ./$(DEPDIR)/ioctl_watchdog.Po
        -rm -f ./$(DEPDIR)/ioperm.Po
        -rm -f ./$(DEPDIR)/iopl.Po
+       -rm -f ./$(DEPDIR)/ioprio--pidns-translation.Po
        -rm -f ./$(DEPDIR)/ioprio-Xabbrev.Po
        -rm -f ./$(DEPDIR)/ioprio-Xraw.Po
        -rm -f ./$(DEPDIR)/ioprio-Xverbose.Po
@@ -10091,6 +13390,7 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/ipc_shm-Xverbose.Po
        -rm -f ./$(DEPDIR)/ipc_shm.Po
        -rm -f ./$(DEPDIR)/is_linux_mips_n64.Po
+       -rm -f ./$(DEPDIR)/kcmp-y--pidns-translation.Po
        -rm -f ./$(DEPDIR)/kcmp-y.Po
        -rm -f ./$(DEPDIR)/kcmp.Po
        -rm -f ./$(DEPDIR)/kern_features.Po
@@ -10104,12 +13404,14 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/keyctl-Xraw.Po
        -rm -f ./$(DEPDIR)/keyctl-Xverbose.Po
        -rm -f ./$(DEPDIR)/keyctl.Po
+       -rm -f ./$(DEPDIR)/kill--pidns-translation.Po
        -rm -f ./$(DEPDIR)/kill.Po
        -rm -f ./$(DEPDIR)/kill_child.Po
        -rm -f ./$(DEPDIR)/ksysent.Po
        -rm -f ./$(DEPDIR)/lchown.Po
        -rm -f ./$(DEPDIR)/lchown32.Po
        -rm -f ./$(DEPDIR)/libtests_a-create_nl_socket.Po
+       -rm -f ./$(DEPDIR)/libtests_a-create_tmpfile.Po
        -rm -f ./$(DEPDIR)/libtests_a-errno2name.Po
        -rm -f ./$(DEPDIR)/libtests_a-error_msg.Po
        -rm -f ./$(DEPDIR)/libtests_a-fill_memory.Po
@@ -10121,20 +13423,26 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/libtests_a-inode_of_sockfd.Po
        -rm -f ./$(DEPDIR)/libtests_a-libmmsg.Po
        -rm -f ./$(DEPDIR)/libtests_a-libsocketcall.Po
+       -rm -f ./$(DEPDIR)/libtests_a-lock_file.Po
        -rm -f ./$(DEPDIR)/libtests_a-overflowuid.Po
+       -rm -f ./$(DEPDIR)/libtests_a-pidns.Po
        -rm -f ./$(DEPDIR)/libtests_a-pipe_maxfd.Po
        -rm -f ./$(DEPDIR)/libtests_a-print_quoted_string.Po
        -rm -f ./$(DEPDIR)/libtests_a-print_time.Po
        -rm -f ./$(DEPDIR)/libtests_a-printflags.Po
-       -rm -f ./$(DEPDIR)/libtests_a-printxval.Po
+       -rm -f ./$(DEPDIR)/libtests_a-printxval-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/libtests_a-printxval-Xraw.Po
+       -rm -f ./$(DEPDIR)/libtests_a-printxval-Xverbose.Po
        -rm -f ./$(DEPDIR)/libtests_a-signal2name.Po
        -rm -f ./$(DEPDIR)/libtests_a-skip_unavailable.Po
        -rm -f ./$(DEPDIR)/libtests_a-sprintrc.Po
+       -rm -f ./$(DEPDIR)/libtests_a-status.Po
        -rm -f ./$(DEPDIR)/libtests_a-tail_alloc.Po
        -rm -f ./$(DEPDIR)/libtests_a-test_printpath.Po
        -rm -f ./$(DEPDIR)/libtests_a-test_printstrn.Po
        -rm -f ./$(DEPDIR)/libtests_a-test_ucopy.Po
        -rm -f ./$(DEPDIR)/libtests_a-tprintf.Po
+       -rm -f ./$(DEPDIR)/libtests_a-xmalloc_for_tests.Po
        -rm -f ./$(DEPDIR)/link.Po
        -rm -f ./$(DEPDIR)/linkat.Po
        -rm -f ./$(DEPDIR)/list_sigaction_signum.Po
@@ -10146,12 +13454,18 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/lstat.Po
        -rm -f ./$(DEPDIR)/lstat64-lstat64.Po
        -rm -f ./$(DEPDIR)/madvise.Po
+       -rm -f ./$(DEPDIR)/maybe_switch_current_tcp--quiet-thread-execve.Po
+       -rm -f ./$(DEPDIR)/maybe_switch_current_tcp.Po
+       -rm -f ./$(DEPDIR)/mbind-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/mbind-Xraw.Po
+       -rm -f ./$(DEPDIR)/mbind-Xverbose.Po
        -rm -f ./$(DEPDIR)/mbind.Po
        -rm -f ./$(DEPDIR)/membarrier.Po
        -rm -f ./$(DEPDIR)/memfd_create-Xabbrev.Po
        -rm -f ./$(DEPDIR)/memfd_create-Xraw.Po
        -rm -f ./$(DEPDIR)/memfd_create-Xverbose.Po
        -rm -f ./$(DEPDIR)/memfd_create.Po
+       -rm -f ./$(DEPDIR)/migrate_pages--pidns-translation.Po
        -rm -f ./$(DEPDIR)/migrate_pages.Po
        -rm -f ./$(DEPDIR)/mincore.Po
        -rm -f ./$(DEPDIR)/mkdir.Po
@@ -10178,6 +13492,9 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/mount-Xraw.Po
        -rm -f ./$(DEPDIR)/mount-Xverbose.Po
        -rm -f ./$(DEPDIR)/mount.Po
+       -rm -f ./$(DEPDIR)/move_mount-P.Po
+       -rm -f ./$(DEPDIR)/move_mount.Po
+       -rm -f ./$(DEPDIR)/move_pages--pidns-translation.Po
        -rm -f ./$(DEPDIR)/move_pages-Xabbrev.Po
        -rm -f ./$(DEPDIR)/move_pages-Xraw.Po
        -rm -f ./$(DEPDIR)/move_pages-Xverbose.Po
@@ -10191,12 +13508,17 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/msg_name.Po
        -rm -f ./$(DEPDIR)/munlockall.Po
        -rm -f ./$(DEPDIR)/nanosleep.Po
+       -rm -f ./$(DEPDIR)/net--decode-fds-dev-netlink.Po
+       -rm -f ./$(DEPDIR)/net--decode-fds-none-netlink.Po
+       -rm -f ./$(DEPDIR)/net--decode-fds-path-netlink.Po
+       -rm -f ./$(DEPDIR)/net--decode-fds-socket-netlink.Po
        -rm -f ./$(DEPDIR)/net-accept-connect.Po
        -rm -f ./$(DEPDIR)/net-icmp_filter.Po
        -rm -f ./$(DEPDIR)/net-packet_mreq-Xabbrev.Po
        -rm -f ./$(DEPDIR)/net-packet_mreq-Xraw.Po
        -rm -f ./$(DEPDIR)/net-packet_mreq-Xverbose.Po
        -rm -f ./$(DEPDIR)/net-packet_mreq.Po
+       -rm -f ./$(DEPDIR)/net-sockaddr--pidns-translation.Po
        -rm -f ./$(DEPDIR)/net-sockaddr.Po
        -rm -f ./$(DEPDIR)/net-tpacket_req.Po
        -rm -f ./$(DEPDIR)/net-tpacket_stats-success.Po
@@ -10206,6 +13528,7 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/net-yy-inet6.Po
        -rm -f ./$(DEPDIR)/net-yy-netlink.Po
        -rm -f ./$(DEPDIR)/net-yy-unix.Po
+       -rm -f ./$(DEPDIR)/netlink_audit--pidns-translation.Po
        -rm -f ./$(DEPDIR)/netlink_audit.Po
        -rm -f ./$(DEPDIR)/netlink_crypto.Po
        -rm -f ./$(DEPDIR)/netlink_generic.Po
@@ -10243,6 +13566,7 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/nlattr_ifla_brport.Po
        -rm -f ./$(DEPDIR)/nlattr_ifla_linkinfo.Po
        -rm -f ./$(DEPDIR)/nlattr_ifla_port.Po
+       -rm -f ./$(DEPDIR)/nlattr_ifla_xdp-y.Po
        -rm -f ./$(DEPDIR)/nlattr_ifla_xdp.Po
        -rm -f ./$(DEPDIR)/nlattr_inet_diag_msg.Po
        -rm -f ./$(DEPDIR)/nlattr_inet_diag_req_compat.Po
@@ -10279,7 +13603,19 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/oldselect.Po
        -rm -f ./$(DEPDIR)/oldstat.Po
        -rm -f ./$(DEPDIR)/open.Po
+       -rm -f ./$(DEPDIR)/open_tree-P.Po
+       -rm -f ./$(DEPDIR)/open_tree.Po
        -rm -f ./$(DEPDIR)/openat.Po
+       -rm -f ./$(DEPDIR)/openat2-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/openat2-Xraw.Po
+       -rm -f ./$(DEPDIR)/openat2-Xverbose.Po
+       -rm -f ./$(DEPDIR)/openat2-v-y-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/openat2-v-y-Xraw.Po
+       -rm -f ./$(DEPDIR)/openat2-v-y-Xverbose.Po
+       -rm -f ./$(DEPDIR)/openat2-v-y.Po
+       -rm -f ./$(DEPDIR)/openat2-v.Po
+       -rm -f ./$(DEPDIR)/openat2-y.Po
+       -rm -f ./$(DEPDIR)/openat2.Po
        -rm -f ./$(DEPDIR)/orphaned_process_group.Po
        -rm -f ./$(DEPDIR)/osf_utimes.Po
        -rm -f ./$(DEPDIR)/pause.Po
@@ -10291,7 +13627,20 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/personality-Xraw.Po
        -rm -f ./$(DEPDIR)/personality-Xverbose.Po
        -rm -f ./$(DEPDIR)/personality.Po
+       -rm -f ./$(DEPDIR)/pidfd_getfd-y.Po
+       -rm -f ./$(DEPDIR)/pidfd_getfd-yy.Po
+       -rm -f ./$(DEPDIR)/pidfd_getfd.Po
+       -rm -f ./$(DEPDIR)/pidfd_open--decode-fd-path.Po
+       -rm -f ./$(DEPDIR)/pidfd_open--decode-fd-pidfd.Po
+       -rm -f ./$(DEPDIR)/pidfd_open--decode-fd-socket.Po
+       -rm -f ./$(DEPDIR)/pidfd_open--pidns-translation.Po
+       -rm -f ./$(DEPDIR)/pidfd_open-P.Po
+       -rm -f ./$(DEPDIR)/pidfd_open-y.Po
+       -rm -f ./$(DEPDIR)/pidfd_open-yy.Po
+       -rm -f ./$(DEPDIR)/pidfd_open.Po
+       -rm -f ./$(DEPDIR)/pidfd_send_signal--pidns-translation.Po
        -rm -f ./$(DEPDIR)/pidfd_send_signal.Po
+       -rm -f ./$(DEPDIR)/pidns-cache.Po
        -rm -f ./$(DEPDIR)/pipe.Po
        -rm -f ./$(DEPDIR)/pipe2.Po
        -rm -f ./$(DEPDIR)/pkey_alloc.Po
@@ -10318,6 +13667,7 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/preadv2-pwritev2.Po
        -rm -f ./$(DEPDIR)/preadv_pwritev-preadv-pwritev.Po
        -rm -f ./$(DEPDIR)/print_maxfd.Po
+       -rm -f ./$(DEPDIR)/print_ppid_tracerpid.Po
        -rm -f ./$(DEPDIR)/printpath-umovestr-peekdata.Po
        -rm -f ./$(DEPDIR)/printpath-umovestr-undumpable.Po
        -rm -f ./$(DEPDIR)/printpath-umovestr.Po
@@ -10328,8 +13678,11 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/printstrn-umoven-peekdata.Po
        -rm -f ./$(DEPDIR)/printstrn-umoven-undumpable.Po
        -rm -f ./$(DEPDIR)/printstrn-umoven.Po
+       -rm -f ./$(DEPDIR)/prlimit64--pidns-translation.Po
        -rm -f ./$(DEPDIR)/prlimit64.Po
+       -rm -f ./$(DEPDIR)/process_vm_readv--pidns-translation.Po
        -rm -f ./$(DEPDIR)/process_vm_readv.Po
+       -rm -f ./$(DEPDIR)/process_vm_writev--pidns-translation.Po
        -rm -f ./$(DEPDIR)/process_vm_writev.Po
        -rm -f ./$(DEPDIR)/pselect6.Po
        -rm -f ./$(DEPDIR)/ptrace.Po
@@ -10358,6 +13711,8 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/readlinkat.Po
        -rm -f ./$(DEPDIR)/readv.Po
        -rm -f ./$(DEPDIR)/reboot.Po
+       -rm -f ./$(DEPDIR)/recv-MSG_TRUNC.Po
+       -rm -f ./$(DEPDIR)/recvfrom-MSG_TRUNC.Po
        -rm -f ./$(DEPDIR)/recvfrom.Po
        -rm -f ./$(DEPDIR)/recvmmsg-timeout.Po
        -rm -f ./$(DEPDIR)/recvmsg.Po
@@ -10376,10 +13731,12 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/rt_sigaction.Po
        -rm -f ./$(DEPDIR)/rt_sigpending.Po
        -rm -f ./$(DEPDIR)/rt_sigprocmask.Po
+       -rm -f ./$(DEPDIR)/rt_sigqueueinfo--pidns-translation.Po
        -rm -f ./$(DEPDIR)/rt_sigqueueinfo.Po
        -rm -f ./$(DEPDIR)/rt_sigreturn.Po
        -rm -f ./$(DEPDIR)/rt_sigsuspend.Po
        -rm -f ./$(DEPDIR)/rt_sigtimedwait.Po
+       -rm -f ./$(DEPDIR)/rt_tgsigqueueinfo--pidns-translation.Po
        -rm -f ./$(DEPDIR)/rt_tgsigqueueinfo.Po
        -rm -f ./$(DEPDIR)/run_expect_termsig.Po
        -rm -f ./$(DEPDIR)/s390_guarded_storage-v.Po
@@ -10390,9 +13747,13 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/s390_sthyi.Po
        -rm -f ./$(DEPDIR)/sched_get_priority_mxx.Po
        -rm -f ./$(DEPDIR)/sched_rr_get_interval.Po
+       -rm -f ./$(DEPDIR)/sched_xetaffinity--pidns-translation.Po
        -rm -f ./$(DEPDIR)/sched_xetaffinity.Po
+       -rm -f ./$(DEPDIR)/sched_xetattr--pidns-translation.Po
        -rm -f ./$(DEPDIR)/sched_xetattr.Po
+       -rm -f ./$(DEPDIR)/sched_xetparam--pidns-translation.Po
        -rm -f ./$(DEPDIR)/sched_xetparam.Po
+       -rm -f ./$(DEPDIR)/sched_xetscheduler--pidns-translation.Po
        -rm -f ./$(DEPDIR)/sched_xetscheduler.Po
        -rm -f ./$(DEPDIR)/sched_yield.Po
        -rm -f ./$(DEPDIR)/scm_rights.Po
@@ -10402,9 +13763,14 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/seccomp_get_action_avail.Po
        -rm -f ./$(DEPDIR)/select-P.Po
        -rm -f ./$(DEPDIR)/select.Po
+       -rm -f ./$(DEPDIR)/semop-indirect.Po
        -rm -f ./$(DEPDIR)/semop.Po
+       -rm -f ./$(DEPDIR)/semtimedop.Po
        -rm -f ./$(DEPDIR)/sendfile.Po
        -rm -f ./$(DEPDIR)/sendfile64.Po
+       -rm -f ./$(DEPDIR)/set_mempolicy-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/set_mempolicy-Xraw.Po
+       -rm -f ./$(DEPDIR)/set_mempolicy-Xverbose.Po
        -rm -f ./$(DEPDIR)/set_mempolicy.Po
        -rm -f ./$(DEPDIR)/set_ptracer_any.Po
        -rm -f ./$(DEPDIR)/set_sigblock.Po
@@ -10420,6 +13786,7 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/setgroups32.Po
        -rm -f ./$(DEPDIR)/sethostname.Po
        -rm -f ./$(DEPDIR)/setns.Po
+       -rm -f ./$(DEPDIR)/setpgrp-exec.Po
        -rm -f ./$(DEPDIR)/setregid.Po
        -rm -f ./$(DEPDIR)/setregid32.Po
        -rm -f ./$(DEPDIR)/setresgid.Po
@@ -10440,6 +13807,7 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/sigaltstack.Po
        -rm -f ./$(DEPDIR)/siginfo.Po
        -rm -f ./$(DEPDIR)/signal.Po
+       -rm -f ./$(DEPDIR)/signal_receive--pidns-translation.Po
        -rm -f ./$(DEPDIR)/signal_receive.Po
        -rm -f ./$(DEPDIR)/signalfd4.Po
        -rm -f ./$(DEPDIR)/sigpending.Po
@@ -10449,6 +13817,7 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/sleep.Po
        -rm -f ./$(DEPDIR)/so_error.Po
        -rm -f ./$(DEPDIR)/so_linger.Po
+       -rm -f ./$(DEPDIR)/so_peercred--pidns-translation.Po
        -rm -f ./$(DEPDIR)/so_peercred-Xabbrev.Po
        -rm -f ./$(DEPDIR)/so_peercred-Xraw.Po
        -rm -f ./$(DEPDIR)/so_peercred-Xverbose.Po
@@ -10468,6 +13837,7 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/stack-fcall-1.Po
        -rm -f ./$(DEPDIR)/stack-fcall-2.Po
        -rm -f ./$(DEPDIR)/stack-fcall-3.Po
+       -rm -f ./$(DEPDIR)/stack-fcall-attach.Po
        -rm -f ./$(DEPDIR)/stack-fcall-mangled-0.Po
        -rm -f ./$(DEPDIR)/stack-fcall-mangled-1.Po
        -rm -f ./$(DEPDIR)/stack-fcall-mangled-2.Po
@@ -10478,7 +13848,25 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/stat64-stat64.Po
        -rm -f ./$(DEPDIR)/statfs-statfs.Po
        -rm -f ./$(DEPDIR)/statfs64.Po
+       -rm -f ./$(DEPDIR)/status-all.Po
+       -rm -f ./$(DEPDIR)/status-failed-long.Po
+       -rm -f ./$(DEPDIR)/status-failed-status.Po
+       -rm -f ./$(DEPDIR)/status-failed.Po
+       -rm -f ./$(DEPDIR)/status-none-f.Po
+       -rm -f ./$(DEPDIR)/status-none-threads.Po
+       -rm -f ./$(DEPDIR)/status-none.Po
+       -rm -f ./$(DEPDIR)/status-successful-long.Po
+       -rm -f ./$(DEPDIR)/status-successful-status.Po
+       -rm -f ./$(DEPDIR)/status-successful.Po
+       -rm -f ./$(DEPDIR)/status-unfinished-threads.Po
+       -rm -f ./$(DEPDIR)/status-unfinished.Po
        -rm -f ./$(DEPDIR)/statx.Po
+       -rm -f ./$(DEPDIR)/strace--strings-in-hex-all.Po
+       -rm -f ./$(DEPDIR)/strace--strings-in-hex-non-ascii.Po
+       -rm -f ./$(DEPDIR)/strace--strings-in-hex.Po
+       -rm -f ./$(DEPDIR)/strace-n.Po
+       -rm -f ./$(DEPDIR)/strace-x.Po
+       -rm -f ./$(DEPDIR)/strace-xx.Po
        -rm -f ./$(DEPDIR)/swap.Po
        -rm -f ./$(DEPDIR)/sxetmask.Po
        -rm -f ./$(DEPDIR)/symlink.Po
@@ -10487,8 +13875,15 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/sync_file_range.Po
        -rm -f ./$(DEPDIR)/sync_file_range2.Po
        -rm -f ./$(DEPDIR)/sysinfo.Po
+       -rm -f ./$(DEPDIR)/syslog-success.Po
        -rm -f ./$(DEPDIR)/syslog.Po
        -rm -f ./$(DEPDIR)/tee.Po
+       -rm -f ./$(DEPDIR)/tgkill--pidns-translation.Po
+       -rm -f ./$(DEPDIR)/tgkill.Po
+       -rm -f ./$(DEPDIR)/threads-execve--quiet-thread-execve.Po
+       -rm -f ./$(DEPDIR)/threads-execve-q.Po
+       -rm -f ./$(DEPDIR)/threads-execve-qq.Po
+       -rm -f ./$(DEPDIR)/threads-execve-qqq.Po
        -rm -f ./$(DEPDIR)/threads-execve.Po
        -rm -f ./$(DEPDIR)/time.Po
        -rm -f ./$(DEPDIR)/timer_create.Po
@@ -10496,6 +13891,11 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/timerfd_xettime.Po
        -rm -f ./$(DEPDIR)/times-fail.Po
        -rm -f ./$(DEPDIR)/times.Po
+       -rm -f ./$(DEPDIR)/tkill--pidns-translation.Po
+       -rm -f ./$(DEPDIR)/tkill.Po
+       -rm -f ./$(DEPDIR)/tracer_ppid_pgid_sid.Po
+       -rm -f ./$(DEPDIR)/trie_test-trie_for_tests.Po
+       -rm -f ./$(DEPDIR)/trie_test-trie_test.Po
        -rm -f ./$(DEPDIR)/truncate.Po
        -rm -f ./$(DEPDIR)/truncate64-truncate64.Po
        -rm -f ./$(DEPDIR)/ugetrlimit.Po
@@ -10508,6 +13908,8 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/umovestr.Po
        -rm -f ./$(DEPDIR)/umovestr2.Po
        -rm -f ./$(DEPDIR)/umovestr3.Po
+       -rm -f ./$(DEPDIR)/umovestr_cached.Po
+       -rm -f ./$(DEPDIR)/umovestr_cached_adjacent.Po
        -rm -f ./$(DEPDIR)/uname.Po
        -rm -f ./$(DEPDIR)/unblock_reset_raise.Po
        -rm -f ./$(DEPDIR)/unix-pair-send-recv.Po
@@ -10533,10 +13935,13 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/waitpid.Po
        -rm -f ./$(DEPDIR)/xattr-strings.Po
        -rm -f ./$(DEPDIR)/xattr.Po
+       -rm -f ./$(DEPDIR)/xet_robust_list--pidns-translation.Po
        -rm -f ./$(DEPDIR)/xet_robust_list.Po
        -rm -f ./$(DEPDIR)/xet_thread_area_x86.Po
        -rm -f ./$(DEPDIR)/xetitimer.Po
+       -rm -f ./$(DEPDIR)/xetpgid--pidns-translation.Po
        -rm -f ./$(DEPDIR)/xetpgid.Po
+       -rm -f ./$(DEPDIR)/xetpriority--pidns-translation.Po
        -rm -f ./$(DEPDIR)/xetpriority.Po
        -rm -f ./$(DEPDIR)/xettimeofday.Po
        -rm -f ./$(DEPDIR)/zeroargc.Po
@@ -10659,13 +14064,79 @@ $(srcdir)/clock_nanosleep.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tes
 $(srcdir)/clock_xettime.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
-$(srcdir)/copy_file_range.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+$(srcdir)/clone3.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
-$(srcdir)/creat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+$(srcdir)/clone3-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
-$(srcdir)/delete_module.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+$(srcdir)/clone3-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone3-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone3-success-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone3-success-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone3-success-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone_parent.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone_parent--quiet-exit.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone_parent-q.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone_parent-qq.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone_ptrace--quiet-attach.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone_ptrace--quiet-exit.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone_ptrace-q.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone_ptrace-qq.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/close_range.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/close_range-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/close_range-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/close_range-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/copy_file_range.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/creat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/delete_module.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dev--decode-fds-dev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dev--decode-fds-path.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dev--decode-fds-socket.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
 $(srcdir)/dev-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
@@ -10674,12 +14145,39 @@ $(srcdir)/dev-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/dup.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/dup-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dup-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dup-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/dup2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/dup2-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dup2-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dup2-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/dup3.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/dup3-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dup3-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dup3-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/epoll_create.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -10704,7 +14202,22 @@ $(srcdir)/execveat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/execveat-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
-$(srcdir)/faccessat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+$(srcdir)/faccessat-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat2-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat2-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat2-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
 $(srcdir)/fadvise64_64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
@@ -10749,9 +14262,15 @@ $(srcdir)/fchownat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/fcntl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/fcntl--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/fcntl64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/fcntl64--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/fdatasync.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -10761,6 +14280,12 @@ $(srcdir)/file_handle.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.i
 $(srcdir)/file_ioctl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/filter_seccomp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/filter_seccomp-flag.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/finit_module.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -10770,6 +14295,24 @@ $(srcdir)/flock.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/fork-f.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/fsconfig.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/fsconfig-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/fsmount.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/fsopen.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/fspick.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/fspick-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/fstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -10830,27 +14373,51 @@ $(srcdir)/getcwd.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/getdents.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getdents-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getdents64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getdents64-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getegid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getegid-creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getegid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getegid32-creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/geteuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/geteuid-creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/geteuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/geteuid32-creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getgid-creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getgid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getgid32-creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getgroups.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -10863,9 +14430,15 @@ $(srcdir)/getpeername.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.i
 $(srcdir)/getpgrp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getpgrp--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getpid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getpid--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getppid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -10893,16 +14466,31 @@ $(srcdir)/getrusage.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/getsid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getsid--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getsockname.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
 $(srcdir)/gettid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getuid-creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
-$(srcdir)/getxxid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+$(srcdir)/getuid32-creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/getxgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/getxpid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/getxuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
 $(srcdir)/group_req.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
@@ -10917,9 +14505,15 @@ $(srcdir)/init_module.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.i
 $(srcdir)/inotify.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/inotify_init.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/inotify_init1.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/inotify_init1-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/io_uring_enter.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -10941,9 +14535,96 @@ $(srcdir)/ioctl_dm-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/ioctl_evdev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_evdev-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_evdev-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_evdev-v-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-v-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-v-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-success-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-success-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-success-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-success-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-success-v-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-success-v-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-success-v-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-v-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-v-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-v-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-success.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-success-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-success-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-success-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-success-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-success-v-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-success-v-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-success-v-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_inotify.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -10977,6 +14658,9 @@ $(srcdir)/ioctl_nsfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/ioctl_perf.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_perf-success.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_ptp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11001,12 +14685,63 @@ $(srcdir)/ioctl_sg_io_v4.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_test
 $(srcdir)/ioctl_sock_gifconf.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_tee.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_uffdio.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
 $(srcdir)/ioctl_v4l2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_v4l2-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-v-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-v-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-v-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-success.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-success-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-success-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-success-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-success-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-success-v-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-success-v-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-success-v-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_watchdog.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/ioperm.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11016,6 +14751,9 @@ $(srcdir)/iopl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/ioprio.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/ioprio--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/ioprio-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11082,6 +14820,9 @@ $(srcdir)/kcmp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/kcmp-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/kcmp-y--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/kern_features.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11118,6 +14859,12 @@ $(srcdir)/keyctl-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tes
 $(srcdir)/kill.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/kill--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ksysent.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/lchown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11142,9 +14889,24 @@ $(srcdir)/lstat64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/madvise.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/maybe_switch_current_tcp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/maybe_switch_current_tcp--quiet-thread-execve.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/mbind.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/mbind-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/mbind-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/mbind-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/membarrier.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11163,6 +14925,9 @@ $(srcdir)/memfd_create-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/g
 $(srcdir)/migrate_pages.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/migrate_pages--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/mincore.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11235,6 +15000,12 @@ $(srcdir)/mount-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/mount-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/move_mount.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/move_mount-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/move_pages.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11247,6 +15018,9 @@ $(srcdir)/move_pages-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tes
 $(srcdir)/move_pages-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/move_pages--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/mq.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11274,6 +15048,18 @@ $(srcdir)/munlockall.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/nanosleep.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/net--decode-fds-dev-netlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/net--decode-fds-none-netlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/net--decode-fds-path-netlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/net--decode-fds-socket-netlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/net-icmp_filter.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11292,6 +15078,9 @@ $(srcdir)/net-packet_mreq-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir
 $(srcdir)/net-sockaddr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/net-sockaddr--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/net-tpacket_req.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11403,6 +15192,9 @@ $(srcdir)/nlattr_ifla_port.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_te
 $(srcdir)/nlattr_ifla_xdp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/nlattr_ifla_xdp-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/nlattr_inet_diag_msg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11502,9 +15294,45 @@ $(srcdir)/oldstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/open.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/open_tree.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/open_tree-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/openat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/openat2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-v-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-v-y-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-v-y-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-v-y-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/orphaned_process_group.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11532,9 +15360,45 @@ $(srcdir)/personality-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_te
 $(srcdir)/personality-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/pidfd_getfd.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_getfd-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_getfd-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_open.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_open--decode-fd-path.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_open--decode-fd-pidfd.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_open--decode-fd-socket.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_open-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_open-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_open-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_open--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/pidfd_send_signal.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/pidfd_send_signal--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/pipe2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11601,12 +15465,21 @@ $(srcdir)/printstrn-umoven-undumpable.gen.test: $(abs_srcdir)/gen_tests.sh $(src
 $(srcdir)/prlimit64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/prlimit64--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/process_vm_readv.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/process_vm_readv--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/process_vm_writev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/process_vm_writev--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/pselect6.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11658,9 +15531,15 @@ $(srcdir)/readlinkat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/reboot.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/recv-MSG_TRUNC.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/recvfrom.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/recvfrom-MSG_TRUNC.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/recvmmsg-timeout.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11709,6 +15588,9 @@ $(srcdir)/rt_sigprocmask.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_test
 $(srcdir)/rt_sigqueueinfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/rt_sigqueueinfo--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/rt_sigreturn.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11721,6 +15603,9 @@ $(srcdir)/rt_sigtimedwait.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tes
 $(srcdir)/rt_tgsigqueueinfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/rt_tgsigqueueinfo--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/s390_guarded_storage.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11751,15 +15636,27 @@ $(srcdir)/sched_rr_get_interval.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/g
 $(srcdir)/sched_xetaffinity.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/sched_xetaffinity--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/sched_xetattr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/sched_xetattr--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/sched_xetparam.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/sched_xetparam--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/sched_xetscheduler.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/sched_xetscheduler--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/sched_yield.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11781,6 +15678,12 @@ $(srcdir)/select-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/semop.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/semop-indirect.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/semtimedop.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/sendfile.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11790,6 +15693,15 @@ $(srcdir)/sendfile64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/set_mempolicy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/set_mempolicy-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/set_mempolicy-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/set_mempolicy-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/setdomainname.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11883,6 +15795,9 @@ $(srcdir)/signal.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/signal_receive.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/signal_receive--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/signalfd4.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11916,6 +15831,9 @@ $(srcdir)/so_peercred-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_te
 $(srcdir)/so_peercred-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/so_peercred--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/sock_filter-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11961,9 +15879,147 @@ $(srcdir)/statfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/statfs64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/status-all.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/status-failed.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/status-failed-long.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/status-failed-status.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/status-none.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/status-successful.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/status-successful-long.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/status-successful-status.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/status-unfinished.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/statx.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/strace--absolute-timestamps.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-time.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-time-precision-s.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-time-precision-ms.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-time-precision-us.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-time-precision-ns.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-unix-precision-s.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-unix-precision-ms.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-unix-precision-us.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-unix-precision-ns.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--follow-forks-output-separately.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--relative-timestamps.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--relative-timestamps-s.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--relative-timestamps-ms.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--relative-timestamps-us.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--relative-timestamps-ns.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--syscall-times.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--syscall-times-s.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--syscall-times-ms.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--syscall-times-us.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--syscall-times-ns.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--strings-in-hex.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--strings-in-hex-all.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--strings-in-hex-non-ascii.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-time.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-time-s.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-time-ms.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-time-us.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-time-ns.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-unix-s.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-unix-ms.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-unix-us.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-unix-ns.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace-n.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace-x.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace-xx.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/swap.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11994,6 +16050,24 @@ $(srcdir)/syslog.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/tee.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/tgkill.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/tgkill--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/threads-execve--quiet-thread-execve.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/threads-execve-q.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/threads-execve-qq.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/threads-execve-qqq.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/time.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -12012,6 +16086,18 @@ $(srcdir)/times.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/times-fail.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/tkill.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/tkill--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_clock.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/trace_fstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -12054,6 +16140,9 @@ $(srcdir)/trace_statfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.
 $(srcdir)/trace_statfs_like.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/trie_test.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/truncate.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -12075,6 +16164,9 @@ $(srcdir)/umovestr-illptr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tes
 $(srcdir)/umovestr3.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/umovestr_cached_adjacent.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/unlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -12141,15 +16233,24 @@ $(srcdir)/xattr-strings.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests
 $(srcdir)/xet_robust_list.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/xet_robust_list--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/xetitimer.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
 $(srcdir)/xetpgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/xetpgid--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/xetpriority.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/xetpriority--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/xettimeofday.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
index bfba2edb06d5d6ef1eb6b497eb2f0bd3c9421876..d4553341097f4bcac3b9c9ed70c1e348ba1f741f 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR__newselect
 
index df5dee8093ffffb55c02663f62287c9ebad68fbb..6ba19a45828eacf1a537d407fa6fb3dc99a453e6 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of accept syscall.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -12,7 +12,7 @@
 
 #include <unistd.h>
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_accept
 
index 0fbdc690ef6a0b8cbd2c236f6e6febab11b2a567..fb010a1916ef3939c734b8f926d8ca62f51ef2bc 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 
 # include <unistd.h>
 # include <sys/socket.h>
-# include <asm/unistd.h>
+# include "scno.h"
 
 # if defined __NR_socketcall && defined __sparc__
 /*
index cbdde6a274f58245ea1ef1207aca9f8ac5099fdf..8bdbb62657ec6cc67e636048065881317ffd95b0 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_access
 
index 7d80e6f8050922eb7e3a726c4e88201d45db9bb1..adcf5ca50cb9b5ad089016cfd1f5915cd5c2a14b 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (access -a30 -access_sample); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (access -a30 --trace-path=access_sample); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a30 -access_sample
+run_strace_match_diff -a30 --trace-path=access_sample
index 2127df604ed4c9e9afa372eceeea91011086e40f..16b67cbc0b88ec966279ecb56229ceaf9d4ff492 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_acct
 
index c1014927de2f20b22fb746bb949d18bca09ea6cd..20163274444e698eec200688ba7face3285d1b52 100644 (file)
@@ -2,14 +2,13 @@
  * Check decoding of add_key syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
 #include "scno.h"
 
 #ifdef __NR_add_key
index 87d3acdc7c6dfd812506f4084e52b33bf61d34ad..3b88d04e586742eb29b8613736b843eef85616af 100644 (file)
@@ -8,26 +8,45 @@
  */
 
 #include "tests.h"
-#include <stddef.h>
-#include <stdio.h>
-#include <stdint.h>
-#include <string.h>
-#include <sys/timex.h>
+#include "scno.h"
 
-#include "xlat.h"
-#include "xlat/adjtimex_state.h"
-#include "xlat/adjtimex_status.h"
+#ifdef __NR_adjtimex
+
+# include <stddef.h>
+# include <stdio.h>
+# include <stdint.h>
+# include <string.h>
+# include <sys/timex.h>
+# include <unistd.h>
+
+# include "kernel_old_timex.h"
+
+# include "xlat.h"
+# include "xlat/adjtimex_state.h"
+# include "xlat/adjtimex_status.h"
+
+static const char *errstr;
+
+static long
+k_adjtimex(void *const buf)
+{
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = (uintptr_t) buf;
+       const long rc = syscall(__NR_adjtimex, arg1, bad, bad, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
 
 int
 main(void)
 {
-       int state = adjtimex(NULL);
-       printf("adjtimex(NULL) = %s\n", sprintrc(state));
+       int state = k_adjtimex(NULL);
+       printf("adjtimex(NULL) = %s\n", errstr);
 
-       TAIL_ALLOC_OBJECT_CONST_PTR(struct timex, tx);
+       TAIL_ALLOC_OBJECT_CONST_PTR(kernel_old_timex_t, tx);
        memset(tx, 0, sizeof(*tx));
 
-       state = adjtimex(tx);
+       state = k_adjtimex(tx);
        if (state < 0)
                perror_msg_and_skip("adjtimex");
 
@@ -60,11 +79,7 @@ main(void)
               (intmax_t) tx->calcnt,
               (intmax_t) tx->errcnt,
               (intmax_t) tx->stbcnt,
-#ifdef HAVE_STRUCT_TIMEX_TAI
               tx->tai,
-#else
-              *(const int *)((const void *) tx + offsetofend(struct timex, stbcnt)),
-#endif
               state);
        printxval(adjtimex_state, (unsigned int) state, NULL);
        puts(")");
@@ -72,3 +87,9 @@ main(void)
        puts("+++ exited with 0 +++");
        return 0;
 }
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_adjtimex")
+
+#endif
index 1382199881941365e86068b0d8b18a99d1e38f2a..f8c2f8616667c44c95ea683dce52d4e0ae898af8 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -12,7 +12,7 @@
 #include <stdio.h>
 #include <time.h>
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_io_setup \
  && defined __NR_io_submit \
@@ -117,7 +117,7 @@ main(void)
                        /* In order to make record valid */
                        .aio_nbytes = (size_t) 0x1020304050607080ULL,
                        .aio_offset = 0xdeadda7abadc0dedULL,
-# ifdef IOCB_FLAG_RESFD
+# ifdef HAVE_STRUCT_IOCB_AIO_FLAGS
                        .aio_flags = 0xfacef157,
                        .aio_resfd = 0xded1ca7e,
 # endif
@@ -298,30 +298,31 @@ main(void)
        printf("io_submit(%#lx, %ld, ["
               "{aio_data=%#" PRI__x64 ", aio_key=%u"
                ", aio_lio_opcode=%hu /* IOCB_CMD_??? */, aio_fildes=%d}"
-               ", {aio_key=%u, aio_lio_opcode=IOCB_CMD_PWRITE, aio_reqprio=%hd"
-               ", aio_fildes=%d, aio_buf=NULL"
+               ", {aio_data=0, aio_key=%u, aio_lio_opcode=IOCB_CMD_PWRITE"
+               ", aio_reqprio=IOPRIO_PRIO_VALUE(0x5 /* IOPRIO_CLASS_??? */"
+               ", 7919), aio_fildes=%d, aio_buf=NULL"
                ", aio_nbytes=%" PRI__u64 ", aio_offset=%" PRI__d64
-# ifdef IOCB_FLAG_RESFD
-               ", aio_resfd=%d, aio_flags=%#x"
+# ifdef HAVE_STRUCT_IOCB_AIO_FLAGS
+               ", aio_flags=IOCB_FLAG_RESFD|IOCB_FLAG_IOPRIO|%#x, aio_resfd=%d"
 # endif
-              "}, {aio_key=%u, aio_lio_opcode=IOCB_CMD_PWRITE"
+              "}, {aio_data=0, aio_key=%u, aio_lio_opcode=IOCB_CMD_PWRITE"
                ", aio_reqprio=%hd, aio_fildes=%d, aio_buf=%#" PRI__x64
                ", aio_nbytes=%" PRI__u64 ", aio_offset=%" PRI__d64
-              "}, {aio_key=%u, aio_lio_opcode=IOCB_CMD_PWRITE"
+              "}, {aio_data=0, aio_key=%u, aio_lio_opcode=IOCB_CMD_PWRITE"
                ", aio_reqprio=%hd, aio_fildes=%d"
                ", aio_buf=\"\\0\\1\\2\\3%.28s\"..."
                ", aio_nbytes=%" PRI__u64 ", aio_offset=%" PRI__d64
-              "}, {aio_key=%u, aio_lio_opcode=IOCB_CMD_PWRITEV"
+              "}, {aio_data=0, aio_key=%u, aio_lio_opcode=IOCB_CMD_PWRITEV"
                ", aio_reqprio=%hd, aio_fildes=%d, aio_buf=%#" PRI__x64
                ", aio_nbytes=%" PRI__u64 ", aio_offset=%" PRI__d64
               "}, NULL, %#lx, ... /* %p */]) = ",
               *ctx, 1057L,
               cbv2[0].aio_data, cbv2[0].aio_key,
               cbv2[0].aio_lio_opcode, cbv2[0].aio_fildes,
-              cbv2[1].aio_key, cbv2[1].aio_reqprio, cbv2[1].aio_fildes,
+              cbv2[1].aio_key, cbv2[1].aio_fildes,
               cbv2[1].aio_nbytes, cbv2[1].aio_offset,
-# ifdef IOCB_FLAG_RESFD
-              cbv2[1].aio_resfd, cbv2[1].aio_flags,
+# ifdef HAVE_STRUCT_IOCB_AIO_FLAGS
+              cbv2[1].aio_flags & ~3, cbv2[1].aio_resfd,
 # endif
               cbv2[2].aio_key, cbv2[2].aio_reqprio, cbv2[2].aio_fildes,
               cbv2[2].aio_buf, cbv2[2].aio_nbytes, cbv2[2].aio_offset,
index 8bea0b7b9b07b5cea144439098e4f35e7905e27e..f82f690a98cc82d4d9780d4f1e78af049d01ed0b 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of io_pgetevents syscall.
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,6 @@
 
 #include "tests.h"
 #include <unistd.h>
-#include <asm/unistd.h>
 #include "scno.h"
 
 #if defined __NR_io_setup && defined __NR_io_pgetevents
index 35404535b814fa2463d432562a1bf460bee6816d..4411e114918585cc44ec97950e5258708abb6e75 100644 (file)
@@ -2,13 +2,14 @@
  * This file is part of alarm strace test.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_alarm
 
@@ -18,8 +19,8 @@
 int
 main(void)
 {
-       int rc = syscall(__NR_alarm, (unsigned long) 0xffffffff0000002aULL);
-       printf("alarm(%u) = %d\n", 42, rc);
+       const unsigned long arg = (unsigned long) 0xffffffff0000002aULL;
+       printf("alarm(%u) = %s\n", 42, sprintrc(syscall(__NR_alarm, arg)));
 
        puts("+++ exited with 0 +++");
        return 0;
index a69adc39aae5c8f3286452eb38d038836f5e40da..dcea6f1dbd126873672f5342cbb570754fe0d830 100644 (file)
@@ -2,6 +2,7 @@
  * Check decoding of fault injected exit_group syscall.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -9,7 +10,7 @@
 
 #include "tests.h"
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 int
 main(void)
index 3b7aed8587326aa1595e9cd3d4b6e181c695b025..4ee6714e1eb42c8580fbee6941e365afce50e9e5 100644 (file)
@@ -2,6 +2,7 @@
  * This file is part of attach-f-p strace test.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -14,7 +15,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <sys/stat.h>
-#include <asm/unistd.h>
+#include "scno.h"
 #include <unistd.h>
 
 #define N 3
index 7a135871c374ea70b6714ae563555d57b919ecde..c25235cd395204d57a8ea9d9d1a7fb11c90470cc 100755 (executable)
@@ -3,7 +3,7 @@
 # Check -bexecve behavior.
 #
 # Copyright (c) 2015 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2015-2018 The strace developers.
+# Copyright (c) 2015-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -16,23 +16,36 @@ run_strace_redir()
        $STRACE "$@" 2> "$LOG"
 }
 
-run_strace_redir -enone ../set_ptracer_any true ||
+run_strace_redir --quiet=personality -enone ../set_ptracer_any true ||
        dump_log_and_fail_with "$STRACE $args: unexpected exit status"
 
-run_strace_redir -enone ../set_ptracer_any false
+run_strace_redir --quiet=personality -enone ../set_ptracer_any false
 [ $? -eq 1 ] ||
        dump_log_and_fail_with "$STRACE $args: unexpected exit status"
 
-run_strace_redir -bexecve -enone ../set_ptracer_any false ||
+run_strace_redir --quiet=personality -bexecve -enone ../set_ptracer_any false ||
        dump_log_and_fail_with "$STRACE $args: unexpected exit status"
 
 pattern_detached='[^:]*strace: Process [1-9][0-9]* detached'
-pattern_personality='[^:]*strace: \[ Process PID=[1-9][0-9]* runs in .* mode. \]'
 
 LC_ALL=C grep -x "$pattern_detached" "$LOG" > /dev/null ||
        dump_log_and_fail_with "$STRACE $args: output mismatch"
 
-if LC_ALL=C grep -E -v -x "($pattern_detached|$pattern_personality)" "$LOG" > /dev/null; then
+if LC_ALL=C grep -E -v -x "$pattern_detached" "$LOG" > /dev/null; then
+       dump_log_and_fail_with "$STRACE $args: unexpected output"
+fi
+
+run_strace_redir --quiet=personality --seccomp-bpf -bexecve -enone ../set_ptracer_any false ||
+       dump_log_and_fail_with "$STRACE $args: unexpected exit status"
+
+pattern_seccomp='[^:]*strace: --seccomp-bpf is not enabled because it is not compatible with -b'
+
+LC_ALL=C grep -x "$pattern_detached" "$LOG" > /dev/null &&
+LC_ALL=C grep -x "$pattern_seccomp" "$LOG" > /dev/null ||
+       dump_log_and_fail_with "$STRACE $args: output mismatch"
+
+pattern_all="$pattern_detached|$pattern_seccomp"
+if LC_ALL=C grep -E -v -x "$pattern_all" "$LOG" > /dev/null; then
        dump_log_and_fail_with "$STRACE $args: unexpected output"
 fi
 
diff --git a/tests-mx32/block_reset_run.c b/tests-mx32/block_reset_run.c
new file mode 100644 (file)
index 0000000..cba77bf
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ * Execute the specified command with a blocked default signal handler.
+ *
+ * Copyright (c) 2017-2019 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <signal.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+int
+main(int ac, char **av)
+{
+       if (ac < 3)
+               error_msg_and_fail("usage: block_reset_run signo path...");
+
+       sigset_t mask;
+       sigemptyset(&mask);
+       const int signo = atoi(av[1]);
+       if (sigaddset(&mask, signo))
+               perror_msg_and_fail("sigaddset: %s", av[1]);
+       if (sigprocmask(SIG_BLOCK, &mask, NULL))
+               perror_msg_and_fail("sigprocmask");
+       if (signal(signo, SIG_DFL) == SIG_ERR)
+               perror_msg_and_fail("signal: %s", av[1]);
+
+       execvp(av[2], av + 2);
+       perror_msg_and_fail("execvp: %s", av[2]);
+}
index 3e18591d3c300ab995c704ae63520a950e1abe2e..9428692ea6d38c3e17d0ca8dd07e37bd5fe73c13 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Check bpf(BPF_OBJ_GET_INFO_BY_FD) decoding.
  *
- * Copyright (c) 2018-2019 The strace developers.
+ * Copyright (c) 2018-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -21,7 +21,6 @@
 #include <string.h>
 #include <unistd.h>
 #include <sys/sysmacros.h>
-#include <asm/unistd.h>
 
 #include "print_fields.h"
 #include "scno.h"
@@ -88,6 +87,10 @@ print_map_create(void *attr_void, size_t size, long rc)
                printf(", btf_fd=0</dev/null>"
                       ", btf_key_type_id=0, btf_value_type_id=0");
        }
+       if (size > offsetof(struct BPF_MAP_CREATE_struct,
+                           btf_vmlinux_value_type_id)) {
+               printf(", btf_vmlinux_value_type_id=0");
+       }
        printf("}, %zu) = ", size);
        if (rc >= 0)
                printf("%ld<anon_inode:bpf-map>\n", rc);
@@ -206,6 +209,10 @@ print_prog_load(void *attr_void, size_t size, long rc)
                printf(", line_info=NULL");
        if (size > offsetof(struct BPF_PROG_LOAD_struct, line_info_cnt))
                printf(", line_info_cnt=0");
+       if (size > offsetof(struct BPF_PROG_LOAD_struct, attach_btf_id))
+               printf(", attach_btf_id=0");
+       if (size > offsetof(struct BPF_PROG_LOAD_struct, attach_prog_fd))
+               printf(", attach_prog_fd=0</dev/null>");
        printf("}, %zu) = ", size);
        if (rc >= 0)
                printf("%ld<anon_inode:bpf-prog>\n", rc);
@@ -232,8 +239,26 @@ try_bpf(kernel_ulong_t cmd, void (*printer)(void *attr, size_t size, long rc),
 }
 
 int
-main(void)
+main(int ac, char **av)
 {
+       /*
+        * There is a delay when the locked memory is being reclaimed
+        * after a BPF program or map is removed.
+        *
+        * Privileged tools like iproute2 and bpftool workaround this
+        * by raising RLIMIT_MEMLOCK to infinity prior to creating
+        * BPF objects.
+        *
+        * This test is expected to be invoked without extra privileges
+        * and therefore does not have this option.
+        *
+        * The approach taken by this test is serialize all invocations
+        * and insert a delay long enough to let the locked memory be
+        * reclaimed.
+        */
+       lock_file_by_dirname(av[0], "bpf-obj_get_info_by_fd");
+       sleep(1);
+
        struct BPF_MAP_CREATE_struct bpf_map_create_attr = {
                .map_type    = BPF_MAP_TYPE_ARRAY,
                .key_size    = 4,
@@ -260,7 +285,7 @@ main(void)
                .prog_name    = "test_prog",
        };
        size_t bpf_prog_load_attr_sizes[] = {
-               sizeof(bpf_prog_load_attr),
+               BPF_PROG_LOAD_struct_size,
                offsetofend(struct BPF_PROG_LOAD_struct, prog_name),
                offsetofend(struct BPF_PROG_LOAD_struct, prog_flags),
                offsetofend(struct BPF_PROG_LOAD_struct, kern_version),
@@ -331,6 +356,10 @@ main(void)
        if (bpf_map_get_info_attr.info_len >
            offsetof(struct bpf_map_info_struct, ifindex))
                printf(", ifindex=%u", map_info->ifindex);
+       if (bpf_map_get_info_attr.info_len >
+           offsetof(struct bpf_map_info_struct, btf_vmlinux_value_type_id))
+               printf(", btf_vmlinux_value_type_id=%u",
+                      map_info->btf_vmlinux_value_type_id);
        if (bpf_map_get_info_attr.info_len >
            offsetof(struct bpf_map_info_struct, netns_dev))
                printf(", netns_dev=makedev(%#x, %#x)",
diff --git a/tests-mx32/bpf-success-long-y.c b/tests-mx32/bpf-success-long-y.c
new file mode 100644 (file)
index 0000000..d0e9b2a
--- /dev/null
@@ -0,0 +1,3 @@
+#define INJECT_RETVAL ((long) 0xbadc0de1e55beefULL)
+#define FD0_PATH "</dev/full>"
+#include "bpf.c"
diff --git a/tests-mx32/bpf-success-long-y.test b/tests-mx32/bpf-success-long-y.test
new file mode 100755 (executable)
index 0000000..5ed7e85
--- /dev/null
@@ -0,0 +1,16 @@
+:#!/bin/sh -efu
+#
+# Copyright (c) 2018-2020 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/scno_tampering.sh"
+
+case "$SIZEOF_LONG" in
+       4) rval=508935919;;
+       8) rval=841540765612359407;;
+esac
+
+run_strace -a20 -y -e trace=bpf -e inject=bpf:retval="${rval}" ../bpf-success-long-y < /dev/full > "$EXP"
+match_diff "$LOG" "$EXP"
index fd29ab442276d4ccbb4530965a7b5454d3e069e9..4f58ca294df30b4db692f9eed9ef3045fece3c9f 100644 (file)
@@ -2,7 +2,7 @@
  * Check bpf syscall decoding.
  *
  * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2019 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -16,7 +16,6 @@
 #include <string.h>
 #include <unistd.h>
 
-#include <asm/unistd.h>
 #include "scno.h"
 
 #ifdef HAVE_LINUX_BPF_H
@@ -28,6 +27,8 @@
 
 #include "xlat.h"
 #include "xlat/bpf_commands.h"
+#include "xlat/bpf_map_types.h"
+#include "xlat/bpf_prog_types.h"
 
 #if defined MPERS_IS_m32 || SIZEOF_KERNEL_LONG_T > 4
 # define BIG_ADDR(addr64_, addr32_) addr64_
 # define BIG_ADDR_MAYBE(addr_)
 #endif
 
+#ifndef FD0_PATH
+# define FD0_PATH ""
+#endif
+
 #ifndef HAVE_STRUCT_BPF_INSN
 struct bpf_insn {
        uint8_t code;
@@ -74,6 +79,12 @@ union bpf_attr_data {
        BPF_ATTR_DATA_FIELD(BPF_BTF_LOAD);
        BPF_ATTR_DATA_FIELD(BPF_BTF_GET_FD_BY_ID);
        BPF_ATTR_DATA_FIELD(BPF_TASK_FD_QUERY);
+       BPF_ATTR_DATA_FIELD(BPF_MAP_FREEZE);
+       BPF_ATTR_DATA_FIELD(BPF_MAP_LOOKUP_BATCH);
+       BPF_ATTR_DATA_FIELD(BPF_MAP_UPDATE_BATCH);
+       BPF_ATTR_DATA_FIELD(BPF_MAP_DELETE_BATCH);
+       BPF_ATTR_DATA_FIELD(BPF_LINK_CREATE);
+       BPF_ATTR_DATA_FIELD(BPF_LINK_UPDATE);
        char char_data[256];
 };
 
@@ -108,8 +119,8 @@ sys_bpf(kernel_ulong_t cmd, kernel_ulong_t attr, kernel_ulong_t size)
 
 #ifdef INJECT_RETVAL
        if (rc != INJECT_RETVAL)
-               error_msg_and_fail("Got a return value of %ld != %d",
-                                  rc, INJECT_RETVAL);
+               error_msg_and_fail("Got a return value of %ld != %ld",
+                                  rc, (long) INJECT_RETVAL);
 
        static char inj_errstr[4096];
 
@@ -250,6 +261,8 @@ init_BPF_MAP_CREATE_attr7(struct bpf_attr_check *check)
        attr->map_ifindex = ifindex_lo();
 }
 
+static_assert(ARRAY_SIZE(bpf_map_types_xdata) == 28,
+             "The map_type for tests 1 and 2 below needs to be updated");
 static struct bpf_attr_check BPF_MAP_CREATE_checks[] = {
        {
                .data = { .BPF_MAP_CREATE_data = { .map_type = 2 } },
@@ -259,7 +272,7 @@ static struct bpf_attr_check BPF_MAP_CREATE_checks[] = {
        },
        { /* 1 */
                .data = { .BPF_MAP_CREATE_data = {
-                       .map_type = 20,
+                       .map_type = 27,
                        .key_size = 4,
                        .value_size = 8,
                        .max_entries = 256,
@@ -269,7 +282,7 @@ static struct bpf_attr_check BPF_MAP_CREATE_checks[] = {
                        .map_name = "0123456789abcde",
                } },
                .size = offsetof(struct BPF_MAP_CREATE_struct, map_name) + 8,
-               .str = "map_type=BPF_MAP_TYPE_REUSEPORT_SOCKARRAY, key_size=4"
+               .str = "map_type=BPF_MAP_TYPE_RINGBUF, key_size=4"
                       ", value_size=8, max_entries=256"
                       ", map_flags=BPF_F_NO_PREALLOC|BPF_F_NO_COMMON_LRU"
                                   "|BPF_F_NUMA_NODE|BPF_F_RDONLY|BPF_F_WRONLY"
@@ -281,21 +294,21 @@ static struct bpf_attr_check BPF_MAP_CREATE_checks[] = {
        },
        { /* 2 */
                .data = { .BPF_MAP_CREATE_data = {
-                       .map_type = 24,
+                       .map_type = 28,
                        .key_size = 0xface1e55,
                        .value_size = 0xbadc0ded,
                        .max_entries = 0xbeefcafe,
-                       .map_flags = 0xffffff80,
+                       .map_flags = 0xfffff800,
                        .inner_map_fd = 2718281828,
                        .numa_node = -1,
                        .map_name = "",
                        .map_ifindex = 3141592653,
                } },
                .size = offsetofend(struct BPF_MAP_CREATE_struct, map_ifindex),
-               .str = "map_type=0x18 /* BPF_MAP_TYPE_??? */"
+               .str = "map_type=0x1c /* BPF_MAP_TYPE_??? */"
                       ", key_size=4207812181, value_size=3134983661"
                       ", max_entries=3203386110"
-                      ", map_flags=0xffffff80 /* BPF_F_??? */"
+                      ", map_flags=0xfffff800 /* BPF_F_??? */"
                       ", inner_map_fd=-1576685468"
                       ", map_name=\"\", map_ifindex=3141592653",
 
@@ -316,7 +329,8 @@ static struct bpf_attr_check BPF_MAP_CREATE_checks[] = {
                       ", max_entries=3203386110"
                       ", map_flags=BPF_F_NO_PREALLOC|BPF_F_NUMA_NODE"
                                   "|BPF_F_RDONLY|BPF_F_STACK_BUILD_ID"
-                                  "|0xc0dede80",
+                                  "|BPF_F_RDONLY_PROG|BPF_F_CLONE"
+                                  "|BPF_F_MMAPABLE|0xc0ded800",
        },
        { /* 4 */
                .data = { .BPF_MAP_CREATE_data = {
@@ -334,7 +348,8 @@ static struct bpf_attr_check BPF_MAP_CREATE_checks[] = {
                       ", max_entries=3203386110"
                       ", map_flags=BPF_F_NO_PREALLOC|BPF_F_NUMA_NODE"
                                   "|BPF_F_RDONLY|BPF_F_STACK_BUILD_ID"
-                                  "|0xc0dede80"
+                                  "|BPF_F_RDONLY_PROG|BPF_F_CLONE"
+                                  "|BPF_F_MMAPABLE|0xc0ded800"
                       ", inner_map_fd=-1576685468",
        },
        { /* 5 */
@@ -353,7 +368,8 @@ static struct bpf_attr_check BPF_MAP_CREATE_checks[] = {
                       ", max_entries=3203386110"
                       ", map_flags=BPF_F_NO_PREALLOC|BPF_F_NUMA_NODE"
                                   "|BPF_F_RDONLY|BPF_F_STACK_BUILD_ID"
-                                  "|0xc0dede80"
+                                  "|BPF_F_RDONLY_PROG|BPF_F_CLONE"
+                                  "|BPF_F_MMAPABLE|0xc0ded800"
                       ", inner_map_fd=-1576685468"
                       ", numa_node=4294967295 /* NUMA_NO_NODE */",
        },
@@ -374,7 +390,8 @@ static struct bpf_attr_check BPF_MAP_CREATE_checks[] = {
                       ", max_entries=3203386110"
                       ", map_flags=BPF_F_NO_PREALLOC|BPF_F_NUMA_NODE"
                                   "|BPF_F_RDONLY|BPF_F_STACK_BUILD_ID"
-                                  "|0xc0dede80"
+                                  "|BPF_F_RDONLY_PROG|BPF_F_CLONE"
+                                  "|BPF_F_MMAPABLE|0xc0ded800"
                       ", inner_map_fd=-1576685468"
                       ", numa_node=4294967295 /* NUMA_NO_NODE */"
                       ", map_name=\"fedcba987654321\"...",
@@ -396,7 +413,8 @@ static struct bpf_attr_check BPF_MAP_CREATE_checks[] = {
                       ", max_entries=3203386110"
                       ", map_flags=BPF_F_NO_PREALLOC|BPF_F_NUMA_NODE"
                                   "|BPF_F_RDONLY|BPF_F_STACK_BUILD_ID"
-                                  "|0xc0dede80"
+                                  "|BPF_F_RDONLY_PROG|BPF_F_CLONE"
+                                  "|BPF_F_MMAPABLE|0xc0ded800"
                       ", inner_map_fd=-1576685468"
                       ", numa_node=4294967295 /* NUMA_NO_NODE */"
                       ", map_name=\"0123456789abcde\""
@@ -416,12 +434,34 @@ static struct bpf_attr_check BPF_MAP_CREATE_checks[] = {
                       ", value_size=0"
                       ", max_entries=0"
                       ", map_flags=0"
-                      ", inner_map_fd=0"
+                      ", inner_map_fd=0" FD0_PATH
+                      ", map_name=\"\""
+                      ", map_ifindex=0"
+                      ", btf_fd=-1159983635"
+                      ", btf_key_type_id=4207869677"
+                      ", btf_value_type_id=3405705229"
+       },
+       { /* 9 */
+               .data = { .BPF_MAP_CREATE_data = {
+                       .btf_fd = 0xbadc0ded,
+                       .btf_key_type_id = 0xfacefeed,
+                       .btf_value_type_id = 0xcafef00d,
+                       .btf_vmlinux_value_type_id = 0xdeadc0de,
+               } },
+               .size = offsetofend(struct BPF_MAP_CREATE_struct,
+                                   btf_vmlinux_value_type_id),
+               .str = "map_type=BPF_MAP_TYPE_UNSPEC"
+                      ", key_size=0"
+                      ", value_size=0"
+                      ", max_entries=0"
+                      ", map_flags=0"
+                      ", inner_map_fd=0" FD0_PATH
                       ", map_name=\"\""
                       ", map_ifindex=0"
                       ", btf_fd=-1159983635"
                       ", btf_key_type_id=4207869677"
                       ", btf_value_type_id=3405705229"
+                      ", btf_vmlinux_value_type_id=3735929054"
        },
 };
 
@@ -435,10 +475,12 @@ static const struct bpf_attr_check BPF_MAP_LOOKUP_ELEM_checks[] = {
                .data = { .BPF_MAP_LOOKUP_ELEM_data = {
                        .map_fd = -1,
                        .key = 0xdeadbeef,
-                       .value = 0xbadc0ded
+                       .value = 0xbadc0ded,
+                       .flags = 4
                } },
-               .size = offsetofend(struct BPF_MAP_LOOKUP_ELEM_struct, value),
+               .size = offsetofend(struct BPF_MAP_LOOKUP_ELEM_struct, flags),
                .str = "map_fd=-1, key=0xdeadbeef, value=0xbadc0ded"
+                      ", flags=BPF_F_LOCK"
        }
 };
 
@@ -496,6 +538,14 @@ static const struct bpf_attr_check BPF_MAP_GET_NEXT_KEY_checks[] = {
        }
 };
 
+static const struct bpf_attr_check BPF_MAP_FREEZE_checks[] = {
+       {
+               .data = { .BPF_MAP_FREEZE_data = { .map_fd = -1 } },
+               .size = offsetofend(struct BPF_MAP_FREEZE_struct, map_fd),
+               .str = "map_fd=-1"
+       }
+};
+
 static const struct bpf_insn insns[] = {
        {
                .code = 0x95,
@@ -556,7 +606,7 @@ print_BPF_PROG_LOAD_attr3(const struct bpf_attr_check *check, unsigned long addr
               ", insns=" INSNS_FMT ", license=\"%s\", log_level=2718281828"
               ", log_size=%u, log_buf=%p"
               ", kern_version=KERNEL_VERSION(51966, 240, 13)"
-              ", prog_flags=0x4 /* BPF_F_??? */"
+              ", prog_flags=0x10 /* BPF_F_??? */"
               ", prog_name=\"0123456789abcde\"..., prog_ifindex=3203399405",
               (unsigned int) ARRAY_SIZE(insns), INSNS_ARG, license,
               log_buf_size, get_log_buf_tail());
@@ -582,13 +632,16 @@ print_BPF_PROG_LOAD_attr4(const struct bpf_attr_check *check, unsigned long addr
               ", license=\"%s\", log_level=2718281828, log_size=4"
               ", log_buf=\"log \"..."
               ", kern_version=KERNEL_VERSION(51966, 240, 13)"
-              ", prog_flags=BPF_F_STRICT_ALIGNMENT|BPF_F_ANY_ALIGNMENT|0x4"
+              ", prog_flags=BPF_F_STRICT_ALIGNMENT|BPF_F_ANY_ALIGNMENT"
+              "|BPF_F_TEST_RND_HI32|BPF_F_TEST_STATE_FREQ|0x10"
               ", prog_name=\"0123456789abcde\"..., prog_ifindex=%s"
               ", expected_attach_type=BPF_CGROUP_INET6_BIND",
               (unsigned int) ARRAY_SIZE(insns), INSNS_ARG,
               license, IFINDEX_LO_STR);
 }
 
+static_assert(ARRAY_SIZE(bpf_prog_types_xdata) == 31,
+             "The prog_type for test 5 below needs to be updated");
 static struct bpf_attr_check BPF_PROG_LOAD_checks[] = {
        {
                .data = { .BPF_PROG_LOAD_data = { .prog_type = 1 } },
@@ -598,7 +651,7 @@ static struct bpf_attr_check BPF_PROG_LOAD_checks[] = {
        },
        { /* 1 */
                .data = { .BPF_PROG_LOAD_data = {
-                       .prog_type = 22,
+                       .prog_type = 31,
                        .insn_cnt = 0xbadc0ded,
                        .insns = 0,
                        .license = 0,
@@ -609,7 +662,7 @@ static struct bpf_attr_check BPF_PROG_LOAD_checks[] = {
                        .prog_flags = 0,
                } },
                .size = offsetofend(struct BPF_PROG_LOAD_struct, prog_flags),
-               .str = "prog_type=0x16 /* BPF_PROG_TYPE_??? */"
+               .str = "prog_type=0x1f /* BPF_PROG_TYPE_??? */"
                       ", insn_cnt=3134983661, insns=NULL, license=NULL"
                       ", log_level=42, log_size=3141592653, log_buf=NULL"
                       ", kern_version=KERNEL_VERSION(51966, 240, 13)"
@@ -629,7 +682,7 @@ static struct bpf_attr_check BPF_PROG_LOAD_checks[] = {
                        .prog_name = "fedcba987654321",
                } },
                .size = offsetofend(struct BPF_PROG_LOAD_struct, prog_name),
-               .str = "prog_type=BPF_PROG_TYPE_SK_REUSEPORT"
+               .str = "prog_type=BPF_PROG_TYPE_LIRC_MODE2"
                       ", insn_cnt=3134983661"
                       ", insns=" BIG_ADDR("0xffffffff00000000", "NULL")
                       ", license=" BIG_ADDR("0xffffffff00000000", "NULL")
@@ -646,7 +699,7 @@ static struct bpf_attr_check BPF_PROG_LOAD_checks[] = {
                        .log_level = 2718281828U,
                        .log_size = log_buf_size,
                        .kern_version = 0xcafef00d,
-                       .prog_flags = 4,
+                       .prog_flags = 16,
                        .prog_name = "0123456789abcdef",
                        .prog_ifindex = 0xbeeffeed,
                } },
@@ -661,7 +714,7 @@ static struct bpf_attr_check BPF_PROG_LOAD_checks[] = {
                        .log_level = 2718281828U,
                        .log_size = 4,
                        .kern_version = 0xcafef00d,
-                       .prog_flags = 7,
+                       .prog_flags = 0x1f,
                        .prog_name = "0123456789abcdef",
                        .expected_attach_type = 9,
                } },
@@ -671,6 +724,30 @@ static struct bpf_attr_check BPF_PROG_LOAD_checks[] = {
                .print_fn = print_BPF_PROG_LOAD_attr4
        },
        { /* 5 */
+               .data = { .BPF_PROG_LOAD_data = {
+                       .prog_type = 30,
+                       .insn_cnt = 0xbadc0ded,
+                       .insns = 0xffffffff00000000,
+                       .license = 0xffffffff00000000,
+                       .log_level = 2718281828U,
+                       .log_size = log_buf_size,
+                       .log_buf = 0xffffffff00000000,
+                       .kern_version = 0xcafef00d,
+                       .prog_flags = 1,
+                       .prog_name = "fedcba987654321",
+               } },
+               .size = offsetofend(struct BPF_PROG_LOAD_struct, prog_name),
+               .str = "prog_type=BPF_PROG_TYPE_SK_LOOKUP"
+                      ", insn_cnt=3134983661"
+                      ", insns=" BIG_ADDR("0xffffffff00000000", "NULL")
+                      ", license=" BIG_ADDR("0xffffffff00000000", "NULL")
+                      ", log_level=2718281828, log_size=4096"
+                      ", log_buf=" BIG_ADDR("0xffffffff00000000", "NULL")
+                      ", kern_version=KERNEL_VERSION(51966, 240, 13)"
+                      ", prog_flags=BPF_F_STRICT_ALIGNMENT"
+                      ", prog_name=\"fedcba987654321\"",
+       },
+       { /* 6 */
                .data = { .BPF_PROG_LOAD_data = {
                        .prog_flags = 2,
                        .expected_attach_type = 17,
@@ -680,10 +757,12 @@ static struct bpf_attr_check BPF_PROG_LOAD_checks[] = {
                        .func_info_cnt = 0xdad3bef4,
                        .line_info_rec_size = 0xdad5bef6,
                        .line_info = 0xfac5fed5fac7fed8,
-                       .line_info_cnt = 0xdad7bef8
+                       .line_info_cnt = 0xdad7bef8,
+                       .attach_btf_id = 0xdad7befa,
+                       .attach_prog_fd = 0xbadc0def,
                } },
                .size = offsetofend(struct BPF_PROG_LOAD_struct,
-                                   line_info_cnt),
+                                   attach_prog_fd),
                .str = "prog_type=BPF_PROG_TYPE_UNSPEC"
                       ", insn_cnt=0"
                       ", insns=NULL"
@@ -703,6 +782,8 @@ static struct bpf_attr_check BPF_PROG_LOAD_checks[] = {
                       ", line_info_rec_size=3671441142"
                       ", line_info=0xfac5fed5fac7fed8"
                       ", line_info_cnt=3671572216"
+                      ", attach_btf_id=3671572218"
+                      ", attach_prog_fd=-1159983633"
        },
 };
 
@@ -717,7 +798,7 @@ static struct bpf_attr_check BPF_OBJ_PIN_checks[] = {
        {
                .data = { .BPF_OBJ_PIN_data = { .pathname = 0 } },
                .size = offsetofend(struct BPF_OBJ_PIN_struct, pathname),
-               .str = "pathname=NULL, bpf_fd=0"
+               .str = "pathname=NULL, bpf_fd=0" FD0_PATH
        },
        {
                .data = { .BPF_OBJ_PIN_data = {
@@ -725,7 +806,7 @@ static struct bpf_attr_check BPF_OBJ_PIN_checks[] = {
                } },
                .size = offsetofend(struct BPF_OBJ_PIN_struct, pathname),
                .str = "pathname=" BIG_ADDR("0xffffffffffffffff", "0xffffffff")
-                      ", bpf_fd=0",
+                      ", bpf_fd=0" FD0_PATH,
        },
        {
                .data = { .BPF_OBJ_PIN_data = { .bpf_fd = -1 } },
@@ -751,7 +832,7 @@ static const struct bpf_attr_check BPF_PROG_ATTACH_checks[] = {
        {
                .data = { .BPF_PROG_ATTACH_data = { .target_fd = -1 } },
                .size = offsetofend(struct BPF_PROG_ATTACH_struct, target_fd),
-               .str = "target_fd=-1, attach_bpf_fd=0"
+               .str = "target_fd=-1, attach_bpf_fd=0" FD0_PATH
                       ", attach_type=BPF_CGROUP_INET_INGRESS, attach_flags=0"
        },
        {
@@ -759,13 +840,28 @@ static const struct bpf_attr_check BPF_PROG_ATTACH_checks[] = {
                        .target_fd = -1,
                        .attach_bpf_fd = -2,
                        .attach_type = 2,
-                       .attach_flags = 1
+                       .attach_flags = 7
                } },
                .size = offsetofend(struct BPF_PROG_ATTACH_struct, attach_flags),
                .str = "target_fd=-1, attach_bpf_fd=-2"
                       ", attach_type=BPF_CGROUP_INET_SOCK_CREATE"
-                      ", attach_flags=BPF_F_ALLOW_OVERRIDE"
-       }
+                      ", attach_flags=BPF_F_ALLOW_OVERRIDE|BPF_F_ALLOW_MULTI"
+                                      "|BPF_F_REPLACE"
+       },
+       {
+               .data = { .BPF_PROG_ATTACH_data = {
+                       .target_fd = -1,
+                       .attach_bpf_fd = -2,
+                       .attach_type = 2,
+                       .attach_flags = 0xf8,
+                       .replace_bpf_fd = -3,
+               } },
+               .size = offsetofend(struct BPF_PROG_ATTACH_struct, replace_bpf_fd),
+               .str = "target_fd=-1, attach_bpf_fd=-2"
+                      ", attach_type=BPF_CGROUP_INET_SOCK_CREATE"
+                      ", attach_flags=0xf8 /* BPF_F_??? */"
+                      ", replace_bpf_fd=-3"
+       },
 };
 
 
@@ -810,6 +906,33 @@ static const struct bpf_attr_check BPF_PROG_TEST_RUN_checks[] = {
                       ", data_in=0xfacef11dbadc2ded"
                       ", data_out=0xfacef33dbadc4ded"
                       ", repeat=4207410904, duration=4207541978}"
+       },
+       {
+               .data = { .BPF_PROG_TEST_RUN_data = {
+                       .prog_fd = -1,
+                       .retval = 0xfac1fed2,
+                       .data_size_in = 0xfac3fed4,
+                       .data_size_out = 0xfac5fed6,
+                       .data_in = (uint64_t) 0xfacef11dbadc2dedULL,
+                       .data_out = (uint64_t) 0xfacef33dbadc4dedULL,
+                       .repeat = 0xfac7fed8,
+                       .duration = 0xfac9feda,
+                       .ctx_size_in = 0xfacbfedc,
+                       .ctx_size_out = 0xfacdfede,
+                       .ctx_in = (uint64_t) 0xfacef55dbadc6dedULL,
+                       .ctx_out = (uint64_t) 0xfacef77dbadc8dedULL
+               } },
+               .size = offsetofend(struct BPF_PROG_TEST_RUN_struct, ctx_out),
+               .str = "test={prog_fd=-1, retval=4207017682"
+                      ", data_size_in=4207148756, data_size_out=4207279830"
+                      ", data_in=0xfacef11dbadc2ded"
+                      ", data_out=0xfacef33dbadc4ded"
+                      ", repeat=4207410904"
+                      ", duration=4207541978"
+                      ", ctx_size_in=4207673052"
+                      ", ctx_size_out=4207804126"
+                      ", ctx_in=0xfacef55dbadc6ded"
+                      ", ctx_out=0xfacef77dbadc8ded}"
        }
 };
 
@@ -855,6 +978,7 @@ static const struct bpf_attr_check BPF_PROG_GET_NEXT_ID_checks[] = {
 };
 
 #define BPF_MAP_GET_NEXT_ID_checks BPF_PROG_GET_NEXT_ID_checks
+#define BPF_BTF_GET_NEXT_ID_checks BPF_PROG_GET_NEXT_ID_checks
 
 static const struct bpf_attr_check BPF_PROG_GET_FD_BY_ID_checks[] = {
        {
@@ -953,8 +1077,8 @@ print_BPF_PROG_QUERY_attr4(const struct bpf_attr_check *check, unsigned long add
        printf("query={target_fd=-1153374643"
               ", attach_type=0xfeedface /* BPF_??? */"
               ", query_flags=BPF_F_QUERY_EFFECTIVE|0xdeadf00c"
-              ", attach_flags=BPF_F_ALLOW_MULTI|0xbeefcafc"
-#if defined(INJECT_RETVAL) && INJECT_RETVAL > 0
+              ", attach_flags=BPF_F_ALLOW_MULTI|BPF_F_REPLACE|0xbeefcaf8"
+#if defined(INJECT_RETVAL)
               ", prog_ids=[0, 1, 4294967295, 2718281828], prog_cnt=4}"
 #else
               ", prog_ids=%p, prog_cnt=4}", prog_load_ids_ptr
@@ -981,8 +1105,8 @@ print_BPF_PROG_QUERY_attr5(const struct bpf_attr_check *check, unsigned long add
        printf("query={target_fd=-1153374643"
               ", attach_type=0xfeedface /* BPF_??? */"
               ", query_flags=BPF_F_QUERY_EFFECTIVE|0xdeadf00c"
-              ", attach_flags=BPF_F_ALLOW_MULTI|0xbeefcafc"
-#if defined(INJECT_RETVAL) && INJECT_RETVAL > 0
+              ", attach_flags=BPF_F_ALLOW_MULTI|BPF_F_REPLACE|0xbeefcaf8"
+#if defined(INJECT_RETVAL)
               ", prog_ids=[0, 1, 4294967295, 2718281828, ... /* %p */]"
               ", prog_cnt=5}",
               prog_load_ids_ptr + ARRAY_SIZE(prog_load_ids)
@@ -1003,13 +1127,13 @@ static struct bpf_attr_check BPF_PROG_QUERY_checks[] = {
        { /* 1 */
                .data = { .BPF_PROG_QUERY_data = {
                        .target_fd = 3141592653U,
-                       .attach_type = 16,
+                       .attach_type = 37,
                        .query_flags = 1,
                        .attach_flags = 3,
                } },
                .size = offsetofend(struct BPF_PROG_QUERY_struct, attach_flags),
                .str = "query={target_fd=-1153374643"
-                      ", attach_type=BPF_LIRC_MODE2"
+                      ", attach_type=BPF_XDP"
                       ", query_flags=BPF_F_QUERY_EFFECTIVE"
                       ", attach_flags=BPF_F_ALLOW_OVERRIDE|BPF_F_ALLOW_MULTI"
                       ", prog_ids=NULL, prog_cnt=0}",
@@ -1017,17 +1141,17 @@ static struct bpf_attr_check BPF_PROG_QUERY_checks[] = {
        { /* 2 */
                .data = { .BPF_PROG_QUERY_data = {
                        .target_fd = 3141592653U,
-                       .attach_type = 18,
+                       .attach_type = 38,
                        .query_flags = 0xfffffffe,
-                       .attach_flags = 0xfffffffc,
+                       .attach_flags = 0xfffffff8,
                        .prog_ids = 0xffffffffffffffffULL,
                        .prog_cnt = 2718281828,
                } },
                .size = offsetofend(struct BPF_PROG_QUERY_struct, prog_cnt),
                .str = "query={target_fd=-1153374643"
-                      ", attach_type=0x12 /* BPF_??? */"
+                      ", attach_type=0x26 /* BPF_??? */"
                       ", query_flags=0xfffffffe /* BPF_F_QUERY_??? */"
-                      ", attach_flags=0xfffffffc /* BPF_F_??? */"
+                      ", attach_flags=0xfffffff8 /* BPF_F_??? */"
                       ", prog_ids="
                       BIG_ADDR("0xffffffffffffffff", "0xffffffff")
                       ", prog_cnt=2718281828}",
@@ -1045,7 +1169,7 @@ static struct bpf_attr_check BPF_PROG_QUERY_checks[] = {
                .str = "query={target_fd=-1153374643"
                       ", attach_type=0xfeedface /* BPF_??? */"
                       ", query_flags=BPF_F_QUERY_EFFECTIVE|0xdeadf00c"
-                      ", attach_flags=BPF_F_ALLOW_MULTI|0xbeefcafc"
+                      ", attach_flags=BPF_F_ALLOW_MULTI|BPF_F_REPLACE|0xbeefcaf8"
                       ", prog_ids=" BIG_ADDR_MAYBE("0xffffffffffffffff") "[]"
                       ", prog_cnt=0}",
        },
@@ -1091,7 +1215,7 @@ static struct bpf_attr_check BPF_RAW_TRACEPOINT_OPEN_checks[] = {
                .data = { .BPF_RAW_TRACEPOINT_OPEN_data = { .name = 0 } },
                .size = offsetofend(struct BPF_RAW_TRACEPOINT_OPEN_struct,
                                    name),
-               .str = "raw_tracepoint={name=NULL, prog_fd=0}",
+               .str = "raw_tracepoint={name=NULL, prog_fd=0" FD0_PATH "}",
        },
        { /* 1 */
                .data = { .BPF_RAW_TRACEPOINT_OPEN_data = {
@@ -1165,16 +1289,16 @@ static const struct bpf_attr_check BPF_BTF_GET_FD_BY_ID_checks[] = {
 
 static const struct bpf_attr_check BPF_TASK_FD_QUERY_checks[] = {
        {
-               .data = { .BPF_TASK_FD_QUERY_data = { .pid = 0xdeadbeef } },
+               .data = { .BPF_TASK_FD_QUERY_data = { .pid = 1735928559 } },
                .size = offsetofend(struct BPF_TASK_FD_QUERY_struct, pid),
-               .str = "task_fd_query={pid=3735928559, fd=0, flags=0"
-                      ", buf_len=0, buf=NULL, prog_id=0"
+               .str = "task_fd_query={pid=1735928559, fd=0" FD0_PATH
+                      ", flags=0, buf_len=0, buf=NULL, prog_id=0"
                       ", fd_type=BPF_FD_TYPE_RAW_TRACEPOINT"
                       ", probe_offset=0, probe_addr=0}"
        },
        { /* 1 */
                .data = { .BPF_TASK_FD_QUERY_data = {
-                       .pid = 0xcafef00d,
+                       .pid = 1405705229,
                        .fd = 0xdeadbeef,
                        .flags = 0xfacefeed,
                        .buf_len = 0xdefaced,
@@ -1185,7 +1309,7 @@ static const struct bpf_attr_check BPF_TASK_FD_QUERY_checks[] = {
                        .probe_addr = 0xfac5fed5fac7fed8
                } },
                .size = offsetofend(struct BPF_TASK_FD_QUERY_struct, probe_addr),
-               .str = "task_fd_query={pid=3405705229"
+               .str = "task_fd_query={pid=1405705229"
                       ", fd=-559038737"
                       ", flags=4207869677"
                       ", buf_len=233811181"
@@ -1197,6 +1321,117 @@ static const struct bpf_attr_check BPF_TASK_FD_QUERY_checks[] = {
        }
 };
 
+static const struct bpf_attr_check BPF_MAP_LOOKUP_BATCH_checks[] = {
+       {
+               .data = { .BPF_MAP_LOOKUP_BATCH_data = { .map_fd = -1 } },
+               .size = offsetofend(struct BPF_MAP_LOOKUP_BATCH_struct, map_fd ),
+               .str = "batch={in_batch=NULL, out_batch=NULL, keys=NULL"
+                      ", values=NULL, count=0, map_fd=-1, elem_flags=BPF_ANY"
+                      ", flags=0}"
+       },
+       {
+               .data = { .BPF_MAP_LOOKUP_BATCH_data = {
+                       .in_batch = 0xfacefeed,
+                       .out_batch = 0xbadc0ded,
+                       .keys = 0xdeadf00d,
+                       .values = 0xfffffffe,
+                       .count = 3,
+                       .map_fd = -1,
+                       .elem_flags = 4,
+                       .flags = 4
+               } },
+               .size = offsetofend(struct BPF_MAP_LOOKUP_BATCH_struct, flags),
+               .str = "batch={in_batch=0xfacefeed, out_batch=0xbadc0ded"
+                      ", keys=0xdeadf00d, values=0xfffffffe, count=3"
+                      ", map_fd=-1, elem_flags=BPF_F_LOCK, flags=0x4}"
+       }
+};
+
+static const struct bpf_attr_check BPF_MAP_UPDATE_BATCH_checks[] = {
+       {
+               .data = { .BPF_MAP_UPDATE_BATCH_data = { .map_fd = -1 } },
+               .size = offsetofend(struct BPF_MAP_UPDATE_BATCH_struct, map_fd ),
+               .str = "batch={keys=NULL, values=NULL, count=0, map_fd=-1"
+                      ", elem_flags=BPF_ANY, flags=0}"
+       },
+       {
+               .data = { .BPF_MAP_UPDATE_BATCH_data = {
+                       .keys = 0xdeadf00d,
+                       .values = 0xfffffffe,
+                       .count = 3,
+                       .map_fd = -1,
+                       .elem_flags = 4,
+                       .flags = 4
+               } },
+               .size = offsetofend(struct BPF_MAP_UPDATE_BATCH_struct, flags),
+               .str = "batch={keys=0xdeadf00d, values=0xfffffffe, count=3"
+                      ", map_fd=-1, elem_flags=BPF_F_LOCK, flags=0x4}"
+       }
+};
+
+static const struct bpf_attr_check BPF_MAP_DELETE_BATCH_checks[] = {
+       {
+               .data = { .BPF_MAP_DELETE_BATCH_data = { .map_fd = -1 } },
+               .size = offsetofend(struct BPF_MAP_DELETE_BATCH_struct, map_fd ),
+               .str = "batch={keys=NULL, count=0, map_fd=-1"
+                      ", elem_flags=BPF_ANY, flags=0}"
+       },
+       {
+               .data = { .BPF_MAP_DELETE_BATCH_data = {
+                       .keys = 0xdeadf00d,
+                       .count = 3,
+                       .map_fd = -1,
+                       .elem_flags = 4,
+                       .flags = 4
+               } },
+               .size = offsetofend(struct BPF_MAP_DELETE_BATCH_struct, flags),
+               .str = "batch={keys=0xdeadf00d, count=3, map_fd=-1"
+                      ", elem_flags=BPF_F_LOCK, flags=0x4}"
+       }
+};
+
+static const struct bpf_attr_check BPF_LINK_CREATE_checks[] = {
+       {
+               .data = { .BPF_LINK_CREATE_data = { .prog_fd = -1, .target_fd = -2 } },
+               .size = offsetofend(struct BPF_LINK_CREATE_struct, flags),
+               .str = "link_create={prog_fd=-1, target_fd=-2"
+                      ", attach_type=BPF_CGROUP_INET_INGRESS, flags=0}"
+       },
+       {
+               .data = { .BPF_LINK_CREATE_data = {
+                       .prog_fd = -1,
+                       .target_fd = 0xdeadbeef,
+                       .attach_type = 5,
+                       .flags = 4
+               } },
+               .size = offsetofend(struct BPF_LINK_CREATE_struct, flags),
+               .str = "link_create={prog_fd=-1, target_fd=-559038737"
+                      ", attach_type=BPF_SK_SKB_STREAM_VERDICT, flags=0x4}"
+       }
+};
+
+static const struct bpf_attr_check BPF_LINK_UPDATE_checks[] = {
+       {
+               .data = { .BPF_LINK_UPDATE_data = {
+                       .link_fd = -1,
+                       .new_prog_fd = -2
+               } },
+               .size = offsetofend(struct BPF_LINK_UPDATE_struct, old_prog_fd),
+               .str = "link_update={link_fd=-1, new_prog_fd=-2, flags=0}"
+       },
+       {
+               .data = { .BPF_LINK_UPDATE_data = {
+                       .link_fd = -1,
+                       .new_prog_fd = 0xdeadbeef,
+                       .flags = 4,
+                       .old_prog_fd = 0xdeadf00d
+               } },
+               .size = offsetofend(struct BPF_LINK_UPDATE_struct, old_prog_fd),
+               .str = "link_update={link_fd=-1, new_prog_fd=-559038737"
+                      ", flags=BPF_F_REPLACE, old_prog_fd=-559026163}"
+       }
+};
+
 
 #define CHK(cmd_) \
        { \
@@ -1231,6 +1466,13 @@ main(void)
                CHK(BPF_BTF_GET_FD_BY_ID),
                CHK(BPF_TASK_FD_QUERY),
                CHK(BPF_MAP_LOOKUP_AND_DELETE_ELEM),
+               CHK(BPF_MAP_FREEZE),
+               CHK(BPF_BTF_GET_NEXT_ID),
+               CHK(BPF_MAP_LOOKUP_BATCH),
+               CHK(BPF_MAP_UPDATE_BATCH),
+               CHK(BPF_MAP_DELETE_BATCH),
+               CHK(BPF_LINK_CREATE),
+               CHK(BPF_LINK_UPDATE),
        };
 
        page_size = get_page_size();
index caf40e130f8e5e7418816f6f8b18b91e824cc115..90f990e12e96165e82305b9d7cf912b86e883059 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_brk
 
index f1a26bf32643e6042ec151d4f841053363bbea62..2a474dc4bf5f8051002af544b6e65289a3fd0d1d 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2019 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -815,7 +815,7 @@ btrfs_test_clone_ioctls(void)
                args.dest_offset);
 }
 
-# define BTRFS_COMPRESS_TYPES 2
+# define BTRFS_COMPRESS_TYPES 3
 # define BTRFS_INVALID_COMPRESS (BTRFS_COMPRESS_TYPES + 1)
 
 static void
@@ -886,9 +886,9 @@ btrfs_test_defrag_ioctls(void)
 static const char *
 xlookup(const struct xlat *xlat, const uint64_t val)
 {
-       for (; xlat->str != NULL; xlat++)
-               if (xlat->val == val)
-                       return xlat->str;
+       for (size_t i = 0; i < xlat->size; i++)
+               if (xlat->data[i].val == val)
+                       return xlat->data[i].str;
        return NULL;
 }
 
@@ -2068,7 +2068,7 @@ btrfs_test_features_ioctls(void)
 static void
 btrfs_test_read_ioctls(void)
 {
-       static const struct xlat btrfs_read_cmd[] = {
+       static const struct xlat_data btrfs_read_cmd[] = {
                XLAT(BTRFS_IOC_BALANCE_PROGRESS),
                XLAT(BTRFS_IOC_FS_INFO),
                XLAT(BTRFS_IOC_GET_FEATURES),
index c00023b4fc7b477eb406ee487620c4af51386226..1ec02e34ea04cd7c09657283b6089b31b0a618bb 100644 (file)
@@ -3,12 +3,13 @@
 # This file is part of caps strace test.
 #
 # Copyright (c) 2014-2018 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 BEGIN {
-       cap = "(0|1<<CAP_[A-Z_]+(\\|1<<CAP_[A-Z_]+)*|1<<CAP_[A-Z_]+(\\|1<<CAP_[A-Z_]+){37}\\|0xffffffc0)"
+       cap = "(0|1<<CAP_[A-Z_]+(\\|1<<CAP_[A-Z_]+)*|1<<CAP_[A-Z_]+(\\|1<<CAP_[A-Z_]+){40}\\|0xfffffe00)"
        s_efault = "-1 EFAULT (Bad address)"
        r_efault = "-1 EFAULT \\(Bad address\\)"
        r_einval = "-1 EINVAL \\(Invalid argument\\)"
index 941564aa20df2cc847474c0b579725548f6023c5..9c0030b02abd7d77e2398ea54a3e610e694a151d 100644 (file)
@@ -2,13 +2,13 @@
 #
 # This file is part of caps strace test.
 #
-# Copyright (c) 2014-2018 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2014-2020 Dmitry V. Levin <ldv@altlinux.org>
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 BEGIN {
-       cap = "(0|1<<CAP_[A-Z_]+(\\|1<<CAP_[A-Z_]+)*|1<<CAP_[A-Z_]+(\\|1<<CAP_[A-Z_]+){37}\\|0xffffffc0)"
+       cap = "(0|1<<CAP_[A-Z_]+(\\|1<<CAP_[A-Z_]+)*|1<<CAP_[A-Z_]+(\\|1<<CAP_[A-Z_]+){40}\\|0xfffffe00)"
        s_efault = "-1 EFAULT (Bad address)"
        r_efault = "-1 EFAULT \\(Bad address\\)"
        r_einval = "-1 EINVAL \\(Invalid argument\\)"
index d7c9fbabacaf0e3b8c7c2ae19bb656937fa46af6..f5acd53eab2d5cb30b12cb03c8454af05cec953d 100644 (file)
@@ -1,13 +1,14 @@
 /*
  * Copyright (c) 2016 Anchit Jain <anchitjain1234@gmail.com>
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_chmod
 
index 05fe9af15ec311b361eadfac3a2d594b511d43ec..4b6daea0ed83763b7ba413e292bb3d3cfff0e8cb 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_chown
 
index f272620311a687e11605296f9fe9dfcced3682db..5a0601cb595825e9aaaab91e03278481e4e263b8 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_chown32
 
index 3fc441e3b8d53144ea7823f3125d30df1a20eebf..1cef5f9b7369e36a3edc053e9ee6c8f2e5b617fd 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_chroot
 
index 8e5a12fb2823ee32df5b6a95b5435514ce029ef4..610c75e31b24f8857c354840d90631ee12f2b512 100644 (file)
@@ -2,13 +2,14 @@
  * This file is part of clock_adjtime strace test.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_clock_adjtime
 
index 258c3ac107c3f551ee3d36c2c183b2daf871496a..854fdb3f2d2fef8a832910de3bf8c2a1a9f4cc85 100644 (file)
@@ -2,21 +2,24 @@
  * Check decoding of clock_nanosleep and clock_gettime syscalls.
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <assert.h>
-#include <stdio.h>
-#include <stdint.h>
-#include <signal.h>
-#include <time.h>
-#include <unistd.h>
-#include <sys/time.h>
-#include <asm/unistd.h>
+#include "scno.h"
+
+#ifdef __NR_clock_nanosleep
+
+# include <assert.h>
+# include <stdio.h>
+# include <stdint.h>
+# include <signal.h>
+# include <time.h>
+# include <unistd.h>
+# include <sys/time.h>
 
 static void
 handler(int signo)
@@ -127,3 +130,9 @@ main(void)
        puts("+++ exited with 0 +++");
        return 0;
 }
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_clock_nanosleep")
+
+#endif
index c25240da44bb8a52fc248727e70a676ae380df76..345c3a42e73aa842e3ffd2f341916426a4ed568a 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -11,7 +11,7 @@
 #include <stdint.h>
 #include <time.h>
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_clock_getres \
  && defined __NR_clock_gettime \
diff --git a/tests-mx32/clone-flags.c b/tests-mx32/clone-flags.c
new file mode 100644 (file)
index 0000000..04bb2c7
--- /dev/null
@@ -0,0 +1,151 @@
+/*
+ * Check decoding of clone flags.
+ *
+ * Copyright (c) 2017-2019 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#include <errno.h>
+#include <limits.h>
+#include <sched.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/wait.h>
+#include <unistd.h>
+
+#define XLAT_MACROS_ONLY
+#include "xlat/clone_flags.h"
+#undef XLAT_MACROS_ONLY
+
+static const int child_exit_status = 42;
+static pid_t pid;
+
+static pid_t
+wait_cloned(pid_t pid, int sig, const char *text)
+{
+       if (pid < 0)
+               perror_msg_and_fail("clone %s", text);
+       int status;
+       pid_t rc = wait(&status);
+       if (sig) {
+               if (rc != pid)
+                       perror_msg_and_fail("unexpected wait rc %d from %s",
+                                           rc, text);
+               if (!WIFEXITED(status) ||
+                   WEXITSTATUS(status) != child_exit_status)
+                       error_msg_and_fail("unexpected wait status %#x from %s",
+                                          status, text);
+       } else {
+               if (rc >= 0)
+                       error_msg_and_fail("unexpected wait rc %d from %s",
+                                          rc, text);
+       }
+       return pid;
+}
+
+#ifdef IA64
+extern int __clone2(int (*)(void *), void *, size_t, int, void *, ...);
+# define do_clone(fn_, stack_, size_, flags_, arg_, ...) \
+       wait_cloned(__clone2((fn_), (stack_), (size_), (flags_), (arg_), \
+                            ## __VA_ARGS__), (flags_) & 0xff, #flags_)
+# define SYSCALL_NAME "clone2"
+# define STACK_SIZE_FMT ", stack_size=%#lx"
+# define STACK_SIZE_ARG child_stack_size,
+#else
+# define do_clone(fn_, stack_, size_, flags_, arg_, ...) \
+       wait_cloned(clone((fn_), (stack_), (flags_), (arg_),    \
+                         ## __VA_ARGS__), (flags_) & 0xff, #flags_)
+# define SYSCALL_NAME "clone"
+# define STACK_SIZE_FMT ""
+# define STACK_SIZE_ARG
+#endif
+
+static int
+child(void *const arg)
+{
+       return child_exit_status;
+}
+
+int
+main(void)
+{
+       const unsigned long child_stack_size = get_page_size();
+       void *const child_stack =
+               tail_alloc(child_stack_size * 2) + child_stack_size;
+
+       const char *child_stack_expected_str = getenv("CHILD_STACK_EXPECTED");
+       const char *child_stack_reported_str = getenv("CHILD_STACK_REPORTED");
+
+       if (!child_stack_expected_str || !child_stack_reported_str) {
+               const unsigned long child_stack_base =
+                       (unsigned long) child_stack / 0x1000;
+               pid = do_clone(child, child_stack, child_stack_size,
+                              SIGCHLD, 0);
+               printf("%s\\(child_stack=(%#lx|%#lx)[[:xdigit:]]{3}"
+                      STACK_SIZE_FMT ", flags=%s\\) = %d\n",
+                      SYSCALL_NAME, child_stack_base, child_stack_base - 1,
+                      STACK_SIZE_ARG "SIGCHLD", pid);
+               return 0;
+       }
+       const unsigned long child_stack_expected =
+               strtoul(child_stack_expected_str, 0, 16);
+       const unsigned long child_stack_reported =
+               strtoul(child_stack_reported_str, 0, 16);
+       const unsigned long child_stack_printed =
+               (unsigned long) child_stack +
+               (child_stack_reported - child_stack_expected);
+
+       pid = do_clone(child, child_stack, child_stack_size, 0, 0);
+       printf("%s(child_stack=%#lx" STACK_SIZE_FMT ", flags=%s) = %d\n",
+              SYSCALL_NAME, child_stack_printed, STACK_SIZE_ARG
+              "0", pid);
+
+       pid = do_clone(child, child_stack, child_stack_size, CLONE_FS, 0);
+       printf("%s(child_stack=%#lx" STACK_SIZE_FMT ", flags=%s) = %d\n",
+              SYSCALL_NAME, child_stack_printed, STACK_SIZE_ARG
+              "CLONE_FS", pid);
+
+       pid = do_clone(child, child_stack, child_stack_size, SIGCHLD, 0);
+       printf("%s(child_stack=%#lx" STACK_SIZE_FMT ", flags=%s) = %d\n",
+              SYSCALL_NAME, child_stack_printed, STACK_SIZE_ARG
+              "SIGCHLD", pid);
+
+       pid = do_clone(child, child_stack, child_stack_size,
+                      CLONE_FS|SIGCHLD, 0);
+       printf("%s(child_stack=%#lx" STACK_SIZE_FMT ", flags=%s) = %d\n",
+              SYSCALL_NAME, child_stack_printed, STACK_SIZE_ARG
+              "CLONE_FS|SIGCHLD", pid);
+
+       TAIL_ALLOC_OBJECT_CONST_PTR(pid_t, ptid);
+       pid = do_clone(child, child_stack, child_stack_size,
+                      CLONE_PARENT_SETTID|SIGCHLD, 0, ptid);
+       printf("%s(child_stack=%#lx" STACK_SIZE_FMT ", flags=%s"
+              ", parent_tid=[%u]) = %d\n",
+              SYSCALL_NAME, child_stack_printed, STACK_SIZE_ARG
+              "CLONE_PARENT_SETTID|SIGCHLD", *ptid, pid);
+
+       char buf[PATH_MAX];
+       if (readlink("/proc/self/fd/0", buf, sizeof(buf) - 1) > 0) {
+               *ptid = 0;
+               pid = do_clone(child, child_stack, child_stack_size,
+                              CLONE_PIDFD|SIGCHLD, 0, ptid);
+               char *fname = 0;
+               if (asprintf(&fname, "/proc/self/fd/%d", *ptid) < 0)
+                       perror_msg_and_fail("asprintf");
+               int rc = readlink(fname, buf, sizeof(buf) - 1);
+               if ((unsigned int) rc >= sizeof(buf))
+                       perror_msg_and_fail("readlink");
+               buf[rc] = '\0';
+               printf("%s(child_stack=%#lx" STACK_SIZE_FMT ", flags=%s"
+                      ", parent_tid=[%u<%s>]) = %d\n",
+                      SYSCALL_NAME, child_stack_printed, STACK_SIZE_ARG
+                      "CLONE_PIDFD|SIGCHLD", *ptid, buf, pid);
+       }
+
+       return 0;
+}
diff --git a/tests-mx32/clone-flags.test b/tests-mx32/clone-flags.test
new file mode 100755 (executable)
index 0000000..9485afa
--- /dev/null
@@ -0,0 +1,24 @@
+#!/bin/sh -efu
+#
+# Check decoding of clone flags.
+#
+# Copyright (c) 2019-2020 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/init.sh"
+
+case "$STRACE_ARCH" in
+       ia64) syscall=clone2 ;;
+       *) syscall=clone ;;
+esac
+
+# Find out the expected and reported child stack addresses.
+run_strace_match_grep --silence=exits -e signal=none -e trace=$syscall
+CHILD_STACK_EXPECTED="$(sed -n 's/^clone[^(]*(child_stack=(\(0x[[:xdigit:]]\+\)|.*/\1/p' "$EXP")000"
+CHILD_STACK_REPORTED="$(sed -n 's/^clone[^(]*(child_stack=\(0x[[:xdigit:]]\+\),.*/\1/p' "$LOG")"
+export CHILD_STACK_EXPECTED CHILD_STACK_REPORTED
+
+# Use child stack addresses to check decoding.
+run_strace_match_diff -a35 --silence=exits,personality -y -e signal=none -e trace=$syscall
diff --git a/tests-mx32/clone3-Xabbrev.c b/tests-mx32/clone3-Xabbrev.c
new file mode 100644 (file)
index 0000000..2b7e417
--- /dev/null
@@ -0,0 +1 @@
+#include "clone3.c"
diff --git a/tests-mx32/clone3-Xabbrev.gen.test b/tests-mx32/clone3-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..39eea6b
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clone3-Xabbrev -a16 -Xabbrev  -e trace=clone3); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a16 -Xabbrev  -e trace=clone3
diff --git a/tests-mx32/clone3-Xraw.c b/tests-mx32/clone3-Xraw.c
new file mode 100644 (file)
index 0000000..1e1facb
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "clone3.c"
diff --git a/tests-mx32/clone3-Xraw.gen.test b/tests-mx32/clone3-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..727ea5a
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clone3-Xraw -a16 -Xraw     -e trace=clone3); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a16 -Xraw     -e trace=clone3
diff --git a/tests-mx32/clone3-Xverbose.c b/tests-mx32/clone3-Xverbose.c
new file mode 100644 (file)
index 0000000..23c45a0
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "clone3.c"
diff --git a/tests-mx32/clone3-Xverbose.gen.test b/tests-mx32/clone3-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..9955d02
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clone3-Xverbose -a16 -Xverbose -e trace=clone3); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a16 -Xverbose -e trace=clone3
diff --git a/tests-mx32/clone3-success-Xabbrev.c b/tests-mx32/clone3-success-Xabbrev.c
new file mode 100644 (file)
index 0000000..8df14f9
--- /dev/null
@@ -0,0 +1,2 @@
+#define RETVAL_INJECTED 1
+#include "clone3.c"
diff --git a/tests-mx32/clone3-success-Xabbrev.gen.test b/tests-mx32/clone3-success-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..a9c16f4
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clone3-success-Xabbrev +clone3-success.test -a16 -Xabbrev); do not edit.
+set -- -a16 -Xabbrev
+. "${srcdir=.}/clone3-success.test"
diff --git a/tests-mx32/clone3-success-Xraw.c b/tests-mx32/clone3-success-Xraw.c
new file mode 100644 (file)
index 0000000..9a81c75
--- /dev/null
@@ -0,0 +1,3 @@
+#define RETVAL_INJECTED 1
+#define XLAT_RAW 1
+#include "clone3.c"
diff --git a/tests-mx32/clone3-success-Xraw.gen.test b/tests-mx32/clone3-success-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..d1ed0b0
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clone3-success-Xraw +clone3-success.test -a16 -Xraw); do not edit.
+set -- -a16 -Xraw
+. "${srcdir=.}/clone3-success.test"
diff --git a/tests-mx32/clone3-success-Xverbose.c b/tests-mx32/clone3-success-Xverbose.c
new file mode 100644 (file)
index 0000000..2b2a3bd
--- /dev/null
@@ -0,0 +1,3 @@
+#define RETVAL_INJECTED 1
+#define XLAT_VERBOSE 1
+#include "clone3.c"
diff --git a/tests-mx32/clone3-success-Xverbose.gen.test b/tests-mx32/clone3-success-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..3b7a3f8
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clone3-success-Xverbose +clone3-success.test -a16 -Xverbose); do not edit.
+set -- -a16 -Xverbose
+. "${srcdir=.}/clone3-success.test"
diff --git a/tests-mx32/clone3-success.c b/tests-mx32/clone3-success.c
new file mode 100644 (file)
index 0000000..8df14f9
--- /dev/null
@@ -0,0 +1,2 @@
+#define RETVAL_INJECTED 1
+#include "clone3.c"
diff --git a/tests-mx32/clone3-success.test b/tests-mx32/clone3-success.test
new file mode 100755 (executable)
index 0000000..4db29f4
--- /dev/null
@@ -0,0 +1,12 @@
+#!/bin/sh -efu
+#
+# Copyright (c) 2019 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/scno_tampering.sh"
+
+run_strace -a10 "$@" -e trace=clone3 -e inject=clone3:retval=42 \
+       "../$NAME" > "$EXP"
+match_diff "$LOG" "$EXP"
diff --git a/tests-mx32/clone3.c b/tests-mx32/clone3.c
new file mode 100644 (file)
index 0000000..c15cb1d
--- /dev/null
@@ -0,0 +1,629 @@
+/*
+ * Check decoding of clone3 syscall.
+ *
+ * Copyright (c) 2019-2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#include <errno.h>
+#include <stdint.h>
+#include <inttypes.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/wait.h>
+
+#ifdef HAVE_LINUX_SCHED_H
+# include <linux/sched.h>
+#endif
+
+#ifdef HAVE_STRUCT_USER_DESC
+# include <asm/ldt.h>
+#endif
+
+#define XLAT_MACROS_ONLY
+# include "xlat/clone_flags.h"
+# include "xlat/clone3_flags.h"
+#undef XLAT_MACROS_ONLY
+
+#include "scno.h"
+
+#ifndef VERBOSE
+# define VERBOSE 0
+#endif
+#ifndef RETVAL_INJECTED
+# define RETVAL_INJECTED 0
+#endif
+
+struct test_clone_args {
+       uint64_t flags;
+       uint64_t pidfd;
+       uint64_t child_tid;
+       uint64_t parent_tid;
+       uint64_t exit_signal;
+       uint64_t stack;
+       uint64_t stack_size;
+       uint64_t tls;
+       uint64_t set_tid;
+       uint64_t set_tid_size;
+       uint64_t cgroup;
+};
+
+#ifdef HAVE_STRUCT_CLONE_ARGS_CGROUP
+typedef struct clone_args struct_clone_args;
+#else
+typedef struct test_clone_args struct_clone_args;
+#endif
+
+enum validity_flag_bits {
+       STRUCT_VALID_BIT,
+       PIDFD_VALID_BIT,
+       CHILD_TID_VALID_BIT,
+       PARENT_TID_VALID_BIT,
+       TLS_VALID_BIT,
+};
+
+enum validity_flags {
+       FLAG(STRUCT_VALID),
+       FLAG(PIDFD_VALID),
+       FLAG(CHILD_TID_VALID),
+       FLAG(PARENT_TID_VALID),
+       FLAG(TLS_VALID),
+};
+
+#define MAX_SET_TID_SIZE 32
+
+static const int child_exit_status = 42;
+
+#if RETVAL_INJECTED
+static const long injected_retval = 42;
+
+# define INJ_STR " (INJECTED)\n"
+#else /* !RETVAL_INJECTED */
+# define INJ_STR "\n"
+#endif /* RETVAL_INJECTED */
+
+#define ERR(b_) ((1ULL << (b_)) + FAIL_BUILD_ON_ZERO((b_) < 64))
+
+
+#if !RETVAL_INJECTED
+static void
+wait_cloned(int pid)
+{
+       int status;
+
+       errno = 0;
+       while (waitpid(pid, &status, WEXITED | __WCLONE) != pid) {
+               if (errno != EINTR)
+                       perror_msg_and_fail("waitpid(%d)", pid);
+       }
+}
+#endif
+
+static long
+do_clone3_(void *args, kernel_ulong_t size, uint64_t possible_errors, int line)
+{
+       long rc = syscall(__NR_clone3, args, size);
+
+#if RETVAL_INJECTED
+       if (rc != injected_retval)
+               perror_msg_and_fail("%d: Unexpected injected return value "
+                                   "of a clone3() call (%ld instead of %ld)",
+                                   line, rc, injected_retval);
+#else
+
+       static int unimplemented_error = -1;
+
+       if (!(possible_errors & ERR(0))) {
+               if (rc >= 0)
+                       error_msg_and_fail("%d: Unexpected success"
+                                          " of a clone3() call", line);
+               if (unimplemented_error < 0)
+                       unimplemented_error =
+                               (errno == EINVAL) ? ENOSYS : errno;
+       }
+
+       /*
+        * This code works as long as all the errors we care about (EFAULT
+        * and EINVAL so far) fit inside 64 bits, otherwise it should
+        * be rewritten.
+        */
+       if (rc < 0 && errno != unimplemented_error
+           && (errno >= 64 || errno < 0 || !(ERR(errno) & possible_errors))) {
+               perror_msg_and_fail("%d: Unexpected failure of a clone3() call"
+                                   " (got errno %d, expected errno bitmask"
+                                   " %#" PRIx64 ")",
+                                   line, errno, possible_errors);
+       }
+
+       if (!rc)
+               _exit(child_exit_status);
+
+       if (rc > 0 && ((struct_clone_args *) args)->exit_signal)
+               wait_cloned(rc);
+#endif
+
+       return rc;
+}
+
+#define do_clone3(args_, size_, errors_) \
+       do_clone3_((args_), (size_), (errors_), __LINE__)
+
+static inline void
+print_addr64(const char *pfx, uint64_t addr)
+{
+       if (addr)
+               printf("%s%#" PRIx64, pfx, addr);
+       else
+               printf("%sNULL", pfx);
+}
+
+static void
+print_tls(const char *pfx, uint64_t arg_ptr, enum validity_flags vf)
+{
+#if defined HAVE_STRUCT_USER_DESC && defined __i386__
+       if (!(vf & TLS_VALID)) {
+               print_addr64(pfx, arg_ptr);
+               return;
+       }
+
+       struct user_desc *arg = (struct user_desc *) (uintptr_t) arg_ptr;
+
+       printf("%s{entry_number=%d"
+              ", base_addr=%#08x"
+              ", limit=%#08x"
+              ", seg_32bit=%u"
+              ", contents=%u"
+              ", read_exec_only=%u"
+              ", limit_in_pages=%u"
+              ", seg_not_present=%u"
+              ", useable=%u}",
+              pfx,
+              arg->entry_number,
+              arg->base_addr,
+              arg->limit,
+              arg->seg_32bit,
+              arg->contents,
+              arg->read_exec_only,
+              arg->limit_in_pages,
+              arg->seg_not_present,
+              arg->useable);
+#else
+       print_addr64(pfx, arg_ptr);
+#endif
+}
+
+static void
+print_set_tid(uint64_t set_tid, uint64_t set_tid_size)
+{
+       if (!set_tid || set_tid != (uintptr_t) set_tid ||
+           !set_tid_size || set_tid_size > MAX_SET_TID_SIZE) {
+               print_addr64(", set_tid=", set_tid);
+       } else {
+               printf(", set_tid=");
+               int *tids = (int *) (uintptr_t) set_tid;
+               for (unsigned int i = 0; i < set_tid_size; ++i)
+                       printf("%s%d", i ? ", " : "[", tids[i]);
+               printf("]");
+       }
+
+       printf(", set_tid_size=%" PRIu64, set_tid_size);
+}
+
+static inline void
+print_clone3(struct_clone_args *const arg, long rc, kernel_ulong_t sz,
+            enum validity_flags valid,
+            const char *flags_str, const char *es_str)
+{
+       int saved_errno = errno;
+
+       printf("clone3(");
+       if (!(valid & STRUCT_VALID)) {
+               printf("%p", arg);
+               goto out;
+       }
+
+#if XLAT_RAW
+       printf("{flags=%#" PRIx64, (uint64_t) arg->flags);
+#elif XLAT_VERBOSE
+       if (flags_str[0] == '0')
+               printf("{flags=%#" PRIx64, (uint64_t) arg->flags);
+       else
+               printf("{flags=%#" PRIx64 " /* %s */",
+                      (uint64_t) arg->flags, flags_str);
+#else
+       printf("{flags=%s", flags_str);
+#endif
+
+       if (arg->flags & CLONE_PIDFD)
+               print_addr64(", pidfd=", arg->pidfd);
+
+       if (arg->flags & (CLONE_CHILD_SETTID | CLONE_CHILD_CLEARTID)) {
+               if (valid & CHILD_TID_VALID)
+                       printf(", child_tid=[%d]",
+                              *(int *) (uintptr_t) arg->child_tid);
+               else
+                       print_addr64(", child_tid=", arg->child_tid);
+       }
+
+       if (arg->flags & CLONE_PARENT_SETTID)
+               print_addr64(", parent_tid=", arg->parent_tid);
+
+       printf(", exit_signal=%s", es_str);
+       print_addr64(", stack=", arg->stack);
+       printf(", stack_size=%" PRIx64, (uint64_t) arg->stack_size);
+
+       if (arg->flags & CLONE_SETTLS)
+               print_tls("tls=", arg->tls, valid);
+
+       if (sz >= offsetofend(struct_clone_args, set_tid_size) &&
+           (arg->set_tid || arg->set_tid_size))
+               print_set_tid(arg->set_tid, arg->set_tid_size);
+
+       if (sz > offsetof(struct_clone_args, cgroup) &&
+           (arg->cgroup || arg->flags & CLONE_INTO_CGROUP))
+               printf(", cgroup=%" PRIu64, (uint64_t) arg->cgroup);
+
+       printf("}");
+
+       if (rc < 0)
+               goto out;
+
+       bool comma = false;
+
+       if (arg->flags & CLONE_PIDFD) {
+               if (valid & PIDFD_VALID)
+                       printf(" => {pidfd=[%d]",
+                              *(int *) (uintptr_t) arg->pidfd);
+               else
+                       print_addr64(" => {pidfd=", arg->pidfd);
+
+               comma = true;
+       }
+
+       if (arg->flags & CLONE_PARENT_SETTID) {
+               printf(comma ? ", " : " => {");
+
+               if (valid & PARENT_TID_VALID)
+                       printf("parent_tid=[%d]",
+                              *(int *) (uintptr_t) arg->parent_tid);
+               else
+                       print_addr64("parent_tid=", arg->parent_tid);
+
+               comma = true;
+       }
+
+       if (comma)
+               printf("}");
+
+out:
+       errno = saved_errno;
+}
+
+int
+main(int argc, char *argv[])
+{
+       static const struct {
+               struct_clone_args args;
+               uint64_t possible_errors;
+               enum validity_flags vf;
+               const char *flags_str;
+               const char *es_str;
+       } arg_vals[] = {
+               { { .flags = 0 },
+                       ERR(0), 0, "0", "0" },
+               { { .flags = CLONE_PARENT_SETTID },
+                       ERR(0), 0, "CLONE_PARENT_SETTID", "0" },
+
+               /* check clone3_flags/clone_flags interoperation */
+               { { .flags = CLONE_CLEAR_SIGHAND },
+                       ERR(EINVAL) | ERR(0), 0, "CLONE_CLEAR_SIGHAND", "0" },
+               { { .flags = CLONE_PARENT_SETTID | CLONE_CLEAR_SIGHAND },
+                       ERR(EINVAL) | ERR(0), 0,
+                       "CLONE_PARENT_SETTID|CLONE_CLEAR_SIGHAND", "0" },
+
+               { { .set_tid = 0xfacefeedcafebabe },
+                       ERR(E2BIG) | ERR(EINVAL), 0, "0", "0" },
+               { { .set_tid_size = 0xfacecafefeedbabe },
+                       ERR(E2BIG) | ERR(EINVAL), 0, "0", "0" },
+               { { .set_tid = 0xfacefeedcafebabe,
+                   .set_tid_size = MAX_SET_TID_SIZE + 1 },
+                       ERR(E2BIG) | ERR(EINVAL), 0, "0", "0" },
+       };
+       TAIL_ALLOC_OBJECT_CONST_PTR(struct_clone_args, arg);
+       const size_t arg1_size = offsetofend(struct_clone_args, tls);
+       struct_clone_args *const arg1 = tail_alloc(arg1_size);
+       const size_t arg2_size = sizeof(*arg) + 8;
+       struct_clone_args *const arg2 = tail_alloc(arg2_size);
+       TAIL_ALLOC_OBJECT_CONST_PTR(int, pidfd);
+       TAIL_ALLOC_OBJECT_CONST_PTR(int, child_tid);
+       TAIL_ALLOC_OBJECT_CONST_PTR(int, parent_tid);
+       int *const tids = tail_alloc(sizeof(*tids) * MAX_SET_TID_SIZE);
+       long rc;
+
+#if defined HAVE_STRUCT_USER_DESC
+       TAIL_ALLOC_OBJECT_CONST_PTR(struct user_desc, tls);
+
+       fill_memory(tls, sizeof(*tls));
+#else
+       TAIL_ALLOC_OBJECT_CONST_PTR(int, tls);
+#endif
+
+       *pidfd = 0xbadc0ded;
+       *child_tid = 0xdeadface;
+       *parent_tid = 0xfeedbeef;
+       fill_memory(tids, sizeof(*tids) * MAX_SET_TID_SIZE);
+
+       rc = do_clone3(NULL, 0, ERR(EINVAL));
+       printf("clone3(NULL, 0) = %s" INJ_STR, sprintrc(rc));
+
+       rc = do_clone3(arg + 1, sizeof(*arg), ERR(EFAULT));
+       printf("clone3(%p, %zu) = %s" INJ_STR,
+              arg + 1, sizeof(*arg), sprintrc(rc));
+
+       size_t short_size = arg1_size - sizeof(uint64_t);
+       char *short_start = (char *) arg1 + sizeof(uint64_t);
+       rc = do_clone3(short_start, short_size, ERR(EINVAL));
+       printf("clone3(%p, %zu) = %s" INJ_STR,
+              short_start, short_size, sprintrc(rc));
+
+
+       memset(arg, 0, sizeof(*arg));
+       memset(arg1, 0, arg1_size);
+       memset(arg2, 0, arg2_size);
+
+       rc = do_clone3(arg, 64, ERR(0));
+       printf("clone3({flags=0, exit_signal=0, stack=NULL, stack_size=0}, 64)"
+              " = %s" INJ_STR,
+              sprintrc(rc));
+
+       rc = do_clone3(arg, sizeof(*arg) + 8, ERR(EFAULT));
+       printf("clone3({flags=0, exit_signal=0, stack=NULL, stack_size=0, ???}"
+#if RETVAL_INJECTED
+              " => {???}"
+#endif
+              ", %zu) = %s" INJ_STR,
+              sizeof(*arg) + 8, sprintrc(rc));
+
+       rc = do_clone3(arg1, arg1_size, ERR(0));
+       printf("clone3({flags=0, exit_signal=0, stack=NULL, stack_size=0}"
+              ", %zu) = %s" INJ_STR,
+              arg1_size, sprintrc(rc));
+
+       rc = do_clone3(arg2, arg2_size, ERR(0));
+       printf("clone3({flags=0, exit_signal=0, stack=NULL, stack_size=0}"
+              ", %zu) = %s" INJ_STR,
+              arg2_size, sprintrc(rc));
+
+       arg->set_tid = (uintptr_t) tids;
+       arg->set_tid_size = MAX_SET_TID_SIZE;
+       rc = do_clone3(arg, sizeof(*arg), ERR(E2BIG) | ERR(EINVAL));
+       print_clone3(arg, rc, sizeof(*arg), STRUCT_VALID, "0", "0");
+       printf(", %zu) = %s" INJ_STR, sizeof(*arg), sprintrc(rc));
+       memset(arg, 0, sizeof(*arg));
+
+       arg->cgroup = 0xfacefeedbadc0ded;
+       rc = do_clone3(arg, sizeof(*arg), ERR(0) | ERR(E2BIG));
+       print_clone3(arg, rc, sizeof(*arg), STRUCT_VALID, "0", "0");
+       printf(", %zu) = %s" INJ_STR, sizeof(*arg), sprintrc(rc));
+       memset(arg, 0, sizeof(*arg));
+
+       arg->flags = CLONE_INTO_CGROUP;
+       rc = do_clone3(arg, sizeof(*arg), ERR(0) | ERR(EINVAL) | ERR(EBADF));
+       print_clone3(arg, rc, sizeof(*arg), STRUCT_VALID,
+                    "CLONE_INTO_CGROUP", "0");
+       printf(", %zu) = %s" INJ_STR, sizeof(*arg), sprintrc(rc));
+       memset(arg, 0, sizeof(*arg));
+
+       /*
+        * NB: the following check is purposefully fragile (it will break
+        *     when system's struct clone_args has additional fields,
+        *     so it signalises that the decoder needs to be updated.
+        */
+       arg2[1].flags = 0xfacefeeddeadc0de;
+       arg2->exit_signal = 0xdeadface00000000ULL | SIGCHLD;
+       rc = do_clone3(arg2, sizeof(*arg2) + 8, ERR(E2BIG));
+       printf("clone3({flags=0, exit_signal=%llu, stack=NULL, stack_size=0"
+              ", /* bytes %zu..%zu */ "
+#if WORDS_BIGENDIAN
+              "\"\\xfa\\xce\\xfe\\xed\\xde\\xad\\xc0\\xde\""
+#else
+              "\"\\xde\\xc0\\xad\\xde\\xed\\xfe\\xce\\xfa\""
+#endif
+#if RETVAL_INJECTED
+              "} => {/* bytes %zu..%zu */ "
+# if WORDS_BIGENDIAN
+              "\"\\xfa\\xce\\xfe\\xed\\xde\\xad\\xc0\\xde\""
+# else
+              "\"\\xde\\xc0\\xad\\xde\\xed\\xfe\\xce\\xfa\""
+# endif
+#endif /* RETVAL_INJECTED */
+              "}, %zu) = %s" INJ_STR,
+              0xdeadface00000000ULL | SIGCHLD,
+              sizeof(*arg2), sizeof(*arg2) + 7,
+#if RETVAL_INJECTED
+              sizeof(*arg2), sizeof(*arg2) + 7,
+#endif
+              sizeof(*arg2) + 8, sprintrc(rc));
+
+       arg2->exit_signal = 0xdeadc0de;
+       rc = do_clone3(arg2, sizeof(*arg) + 16, ERR(E2BIG));
+       printf("clone3({flags=0, exit_signal=3735929054, stack=NULL"
+              ", stack_size=0, ???}"
+#if RETVAL_INJECTED
+              " => {???}"
+#endif
+              ", %zu) = %s" INJ_STR,
+              sizeof(*arg) + 16, sprintrc(rc));
+
+       arg->flags = 0xface3eefbeefc0de;
+       arg->exit_signal = 0x1e55c0de;
+       rc = do_clone3(arg, 64, ERR(EINVAL));
+       printf("clone3({flags=%s, child_tid=NULL, exit_signal=508936414"
+              ", stack=NULL, stack_size=0, tls=NULL}, 64) = %s" INJ_STR,
+              XLAT_KNOWN(0xface3eefbeefc0de, "CLONE_VFORK|CLONE_PARENT"
+              "|CLONE_THREAD|CLONE_NEWNS|CLONE_SYSVSEM|CLONE_SETTLS"
+              "|CLONE_CHILD_CLEARTID|CLONE_UNTRACED|CLONE_NEWCGROUP"
+              "|CLONE_NEWUTS|CLONE_NEWIPC|CLONE_NEWUSER|CLONE_NEWPID|CLONE_IO"
+              "|CLONE_NEWTIME|CLONE_CLEAR_SIGHAND|CLONE_INTO_CGROUP"
+              "|0xface3eec0040005e"),
+              sprintrc(rc));
+
+       arg->flags = 0xdec0deac0040007fULL;
+       arg->exit_signal = 250;
+       arg->stack = 0xface1e55beeff00dULL;
+       arg->stack_size = 0xcaffeedefacedca7ULL;
+       rc = do_clone3(arg, 64, ERR(EINVAL));
+       printf("clone3({flags=%s, exit_signal=250"
+              ", stack=0xface1e55beeff00d, stack_size=0xcaffeedefacedca7}, 64)"
+              " = %s" INJ_STR,
+              XLAT_UNKNOWN(0xdec0deac0040007f, "CLONE_???"),
+              sprintrc(rc));
+
+       arg->exit_signal = SIGCHLD;
+
+       struct {
+               uint64_t flag;
+               const char *flag_str;
+               uint64_t *field;
+               const char *field_name;
+               int *ptr;
+               bool deref_exiting;
+       } pid_fields[] = {
+               { ARG_STR(CLONE_PIDFD),
+                       (uint64_t *) &arg->pidfd,
+                       "pidfd", pidfd, true },
+               { ARG_STR(CLONE_CHILD_SETTID),
+                       (uint64_t *) &arg->child_tid,
+                       "child_tid", child_tid },
+               { ARG_STR(CLONE_CHILD_CLEARTID),
+                       (uint64_t *) &arg->child_tid,
+                       "child_tid", child_tid },
+               { ARG_STR(CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID),
+                       (uint64_t *) &arg->child_tid,
+                       "child_tid", child_tid },
+               { ARG_STR(CLONE_PARENT_SETTID),
+                       (uint64_t *) &arg->parent_tid,
+                       "parent_tid", parent_tid, true },
+       };
+
+       for (size_t i = 0; i < ARRAY_SIZE(pid_fields); i++) {
+               char flag_str[128];
+               const char *rc_str;
+
+               arg->flags = 0xbad0000000000001ULL | pid_fields[i].flag;
+
+#if XLAT_RAW
+               snprintf(flag_str, sizeof(flag_str), "%#" PRIx64,
+                        (uint64_t) arg->flags);
+#elif XLAT_VERBOSE
+               snprintf(flag_str, sizeof(flag_str),
+                        "%#" PRIx64 " /* %s|0xbad0000000000001 */",
+                        (uint64_t) arg->flags, pid_fields[i].flag_str);
+#else
+               snprintf(flag_str, sizeof(flag_str), "%s|0xbad0000000000001",
+                        pid_fields[i].flag_str);
+#endif
+
+               pid_fields[i].field[0] = 0;
+               rc = do_clone3(arg, 64, ERR(EINVAL));
+               rc_str = sprintrc(rc);
+               printf("clone3({flags=%s, %s=NULL"
+                      ", exit_signal=" XLAT_KNOWN(SIGCHLD, "SIGCHLD")
+                      ", stack=0xface1e55beeff00d"
+                      ", stack_size=0xcaffeedefacedca7}",
+                      flag_str, pid_fields[i].field_name);
+#if RETVAL_INJECTED
+               if (pid_fields[i].deref_exiting)
+                       printf(" => {%s=NULL}", pid_fields[i].field_name);
+#endif /* RETVAL_INJECTED */
+               printf(", 64) = %s" INJ_STR, rc_str);
+
+               pid_fields[i].field[0] = (uintptr_t) (pid_fields[i].ptr + 1);
+               rc = do_clone3(arg, 64, ERR(EINVAL));
+               rc_str = sprintrc(rc);
+               printf("clone3({flags=%s, %s=%p"
+                      ", exit_signal=" XLAT_KNOWN(SIGCHLD, "SIGCHLD")
+                      ", stack=0xface1e55beeff00d"
+                      ", stack_size=0xcaffeedefacedca7}",
+                      flag_str, pid_fields[i].field_name,
+                      pid_fields[i].ptr + 1);
+#if RETVAL_INJECTED
+               if (pid_fields[i].deref_exiting)
+                       printf(" => {%s=%p}",
+                              pid_fields[i].field_name, pid_fields[i].ptr + 1);
+#endif /* RETVAL_INJECTED */
+               printf(", 64) = %s" INJ_STR, rc_str);
+
+               pid_fields[i].field[0] = (uintptr_t) pid_fields[i].ptr;
+               rc = do_clone3(arg, 64, ERR(EINVAL));
+               rc_str = sprintrc(rc);
+               printf("clone3({flags=%s, %s=%p"
+                      ", exit_signal=" XLAT_KNOWN(SIGCHLD, "SIGCHLD")
+                      ", stack=0xface1e55beeff00d"
+                      ", stack_size=0xcaffeedefacedca7}",
+                      flag_str, pid_fields[i].field_name,
+                      pid_fields[i].ptr);
+#if RETVAL_INJECTED
+               if (pid_fields[i].deref_exiting)
+                       printf(" => {%s=[%d]}",
+                              pid_fields[i].field_name, *pid_fields[i].ptr);
+#endif /* RETVAL_INJECTED */
+               printf(", 64) = %s" INJ_STR, rc_str);
+       }
+
+       arg->flags = 0xbad0000000000001ULL | CLONE_SETTLS;
+       rc = do_clone3(arg, 64, ERR(EINVAL));
+       printf("clone3({flags="
+              XLAT_KNOWN(0xbad0000000080001, "CLONE_SETTLS|0xbad0000000000001")
+              ", exit_signal=" XLAT_KNOWN(SIGCHLD, "SIGCHLD")
+              ", stack=0xface1e55beeff00d"
+              ", stack_size=0xcaffeedefacedca7, tls=NULL}, 64) = %s" INJ_STR,
+              sprintrc(rc));
+
+       arg->tls = (uintptr_t) (tls + 1);
+       rc = do_clone3(arg, 64, ERR(EINVAL));
+       printf("clone3({flags="
+              XLAT_KNOWN(0xbad0000000080001, "CLONE_SETTLS|0xbad0000000000001")
+              ", exit_signal=" XLAT_KNOWN(SIGCHLD, "SIGCHLD")
+              ", stack=0xface1e55beeff00d"
+              ", stack_size=0xcaffeedefacedca7, tls=%p}, 64) = %s" INJ_STR,
+              tls + 1, sprintrc(rc));
+
+       arg->tls = (uintptr_t) tls;
+       rc = do_clone3(arg, 64, ERR(EINVAL));
+       printf("clone3({flags="
+              XLAT_KNOWN(0xbad0000000080001, "CLONE_SETTLS|0xbad0000000000001")
+              ", exit_signal=" XLAT_KNOWN(SIGCHLD, "SIGCHLD")
+              ", stack=0xface1e55beeff00d, stack_size=0xcaffeedefacedca7, tls="
+#if defined HAVE_STRUCT_USER_DESC && defined __i386__
+              "{entry_number=2206368128, base_addr=0x87868584"
+              ", limit=0x8b8a8988, seg_32bit=0, contents=2, read_exec_only=1"
+              ", limit_in_pages=0, seg_not_present=0, useable=0}"
+#else
+              "%p"
+#endif
+              "}, 64) = %s" INJ_STR,
+#if !defined HAVE_STRUCT_USER_DESC || !defined __i386__
+              tls,
+#endif
+              sprintrc(rc));
+
+       for (size_t i = 0; i < ARRAY_SIZE(arg_vals); i++) {
+               memcpy(arg, &arg_vals[i].args, sizeof(*arg));
+
+               rc = do_clone3(arg, sizeof(*arg), arg_vals[i].possible_errors);
+               print_clone3(arg, rc, sizeof(*arg),
+                            arg_vals[i].vf | STRUCT_VALID,
+                            arg_vals[i].flags_str, arg_vals[i].es_str);
+               printf(", %zu) = %s" INJ_STR, sizeof(*arg), sprintrc(rc));
+       }
+
+       puts("+++ exited with 0 +++");
+
+       return 0;
+}
diff --git a/tests-mx32/clone3.gen.test b/tests-mx32/clone3.gen.test
new file mode 100755 (executable)
index 0000000..e5d5ca4
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clone3 -a16 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a16 
diff --git a/tests-mx32/clone_parent--quiet-exit.c b/tests-mx32/clone_parent--quiet-exit.c
new file mode 100644 (file)
index 0000000..fc80d80
--- /dev/null
@@ -0,0 +1,2 @@
+#define QUIET_MSG 1
+#include "clone_parent.c"
diff --git a/tests-mx32/clone_parent--quiet-exit.gen.test b/tests-mx32/clone_parent--quiet-exit.gen.test
new file mode 100755 (executable)
index 0000000..298abc0
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clone_parent--quiet-exit +clone_ptrace.test --quiet=exit,personality); do not edit.
+set -- --quiet=exit,personality
+. "${srcdir=.}/clone_ptrace.test"
diff --git a/tests-mx32/clone_parent-q.c b/tests-mx32/clone_parent-q.c
new file mode 100644 (file)
index 0000000..503b8e8
--- /dev/null
@@ -0,0 +1,2 @@
+#define QUIET_MSG 0
+#include "clone_parent.c"
diff --git a/tests-mx32/clone_parent-q.gen.test b/tests-mx32/clone_parent-q.gen.test
new file mode 100755 (executable)
index 0000000..0d0ecb6
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clone_parent-q +clone_ptrace.test -q); do not edit.
+set -- -q
+. "${srcdir=.}/clone_ptrace.test"
diff --git a/tests-mx32/clone_parent-qq.c b/tests-mx32/clone_parent-qq.c
new file mode 100644 (file)
index 0000000..fc80d80
--- /dev/null
@@ -0,0 +1,2 @@
+#define QUIET_MSG 1
+#include "clone_parent.c"
diff --git a/tests-mx32/clone_parent-qq.gen.test b/tests-mx32/clone_parent-qq.gen.test
new file mode 100755 (executable)
index 0000000..e472bd4
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clone_parent-qq +clone_ptrace.test -qq); do not edit.
+set -- -qq
+. "${srcdir=.}/clone_ptrace.test"
index 111f98d10182a365f981196f9f0105f8319843aa..d0e9cdacf23eebca6909af68a5f329353493bfd9 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Check handling of CLONE_PARENT'ed processes.
  *
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 #include <sys/wait.h>
 #include <unistd.h>
 
+#ifndef QUIET_MSG
+# define QUIET_MSG 0
+#endif
+
 static int
 child(void *const arg)
 {
        return 42;
 }
 
-#define child_stack_size       (get_page_size() / 2)
-
 #ifdef IA64
 extern int __clone2(int (*)(void *), void *, size_t, int, void *, ...);
-# define clone(fn, child_stack, flags, arg)    \
-               __clone2(fn, child_stack, child_stack_size, flags, arg)
+# define do_clone(fn_, stack_, size_, flags_, arg_, ...)       \
+       __clone2((fn_), (stack_), (size_), (flags_), (arg_), ## __VA_ARGS__)
+#else
+# define do_clone(fn_, stack_, size_, flags_, arg_, ...)       \
+       clone((fn_), (stack_), (flags_), (arg_), ## __VA_ARGS__)
 #endif
 
 int
 main(void)
 {
-       const pid_t pid = clone(child, tail_alloc(child_stack_size),
-                               CLONE_PARENT | SIGCHLD, 0);
+       const unsigned long child_stack_size = get_page_size();
+       void *const child_stack =
+               tail_alloc(child_stack_size * 2) + child_stack_size;
+
+       const pid_t pid = do_clone(child, child_stack, child_stack_size,
+                                  CLONE_PARENT | SIGCHLD, 0);
        if (pid < 0)
                perror_msg_and_fail("clone");
 
@@ -51,10 +60,14 @@ main(void)
        FILE *const fp = fdopen(3, "a");
        if (!fp)
                perror_msg_and_fail("fdopen");
+#if !QUIET_MSG
        if (fprintf(fp, "%s: Exit of unknown pid %d ignored\n",
                    getenv("STRACE_EXE") ?: "strace", pid) < 0)
                perror_msg_and_fail("fprintf");
+#endif
 
+#if !QUIET_MSG
        puts("+++ exited with 0 +++");
+#endif
        return 0;
 }
diff --git a/tests-mx32/clone_parent.gen.test b/tests-mx32/clone_parent.gen.test
new file mode 100755 (executable)
index 0000000..4303eb0
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clone_parent +clone_ptrace.test ); do not edit.
+set -- 
+. "${srcdir=.}/clone_ptrace.test"
diff --git a/tests-mx32/clone_parent.test b/tests-mx32/clone_parent.test
deleted file mode 100755 (executable)
index a5b077f..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/sh -efu
-#
-# Check handling of CLONE_PARENT'ed processes.
-#
-# Copyright (c) 2017-2018 The strace developers.
-# All rights reserved.
-#
-# SPDX-License-Identifier: GPL-2.0-or-later
-
-. "${srcdir=.}/clone_ptrace.test"
diff --git a/tests-mx32/clone_ptrace--quiet-attach.c b/tests-mx32/clone_ptrace--quiet-attach.c
new file mode 100644 (file)
index 0000000..2fb8d85
--- /dev/null
@@ -0,0 +1,2 @@
+#define QUIET_ATTACH 1
+#include "clone_ptrace.c"
diff --git a/tests-mx32/clone_ptrace--quiet-attach.gen.test b/tests-mx32/clone_ptrace--quiet-attach.gen.test
new file mode 100755 (executable)
index 0000000..d5c3e73
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clone_ptrace--quiet-attach +clone_ptrace.test --quiet=attach,personality); do not edit.
+set -- --quiet=attach,personality
+. "${srcdir=.}/clone_ptrace.test"
diff --git a/tests-mx32/clone_ptrace--quiet-exit.c b/tests-mx32/clone_ptrace--quiet-exit.c
new file mode 100644 (file)
index 0000000..3503cfb
--- /dev/null
@@ -0,0 +1,2 @@
+#define QUIET_EXIT 1
+#include "clone_ptrace.c"
diff --git a/tests-mx32/clone_ptrace--quiet-exit.gen.test b/tests-mx32/clone_ptrace--quiet-exit.gen.test
new file mode 100755 (executable)
index 0000000..6342598
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clone_ptrace--quiet-exit +clone_ptrace.test --quiet=exit,personality); do not edit.
+set -- --quiet=exit,personality
+. "${srcdir=.}/clone_ptrace.test"
diff --git a/tests-mx32/clone_ptrace-q.c b/tests-mx32/clone_ptrace-q.c
new file mode 100644 (file)
index 0000000..2fb8d85
--- /dev/null
@@ -0,0 +1,2 @@
+#define QUIET_ATTACH 1
+#include "clone_ptrace.c"
diff --git a/tests-mx32/clone_ptrace-q.gen.test b/tests-mx32/clone_ptrace-q.gen.test
new file mode 100755 (executable)
index 0000000..155e3a5
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clone_ptrace-q +clone_ptrace.test -q); do not edit.
+set -- -q
+. "${srcdir=.}/clone_ptrace.test"
diff --git a/tests-mx32/clone_ptrace-qq.c b/tests-mx32/clone_ptrace-qq.c
new file mode 100644 (file)
index 0000000..037fbca
--- /dev/null
@@ -0,0 +1,3 @@
+#define QUIET_ATTACH 1
+#define QUIET_EXIT 1
+#include "clone_ptrace.c"
diff --git a/tests-mx32/clone_ptrace-qq.gen.test b/tests-mx32/clone_ptrace-qq.gen.test
new file mode 100755 (executable)
index 0000000..caa8ab4
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clone_ptrace-qq +clone_ptrace.test -qq); do not edit.
+set -- -qq
+. "${srcdir=.}/clone_ptrace.test"
index ee366ab936f84cd1ce5ac27cd7fcb22bc7b72374..4598400da48b7c699837faae5c837bb6957dbd9d 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Check handling of CLONE_PTRACE'ed processes.
  *
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 
 static siginfo_t sinfo;
 
+#ifndef QUIET_ATTACH
+# define QUIET_ATTACH 0
+#endif
+#ifndef QUIET_EXIT
+# define QUIET_EXIT 0
+#endif
+
 static void
 handler(const int no, siginfo_t *const si, void *const uc)
 {
@@ -34,12 +41,13 @@ child(void *const arg)
        return 0;
 }
 
-#define child_stack_size       (get_page_size() / 2)
-
 #ifdef IA64
 extern int __clone2(int (*)(void *), void *, size_t, int, void *, ...);
-# define clone(fn, child_stack, flags, arg)    \
-               __clone2(fn, child_stack, child_stack_size, flags, arg)
+# define do_clone(fn_, stack_, size_, flags_, arg_, ...)       \
+       __clone2((fn_), (stack_), (size_), (flags_), (arg_), ## __VA_ARGS__)
+#else
+# define do_clone(fn_, stack_, size_, flags_, arg_, ...)       \
+       clone((fn_), (stack_), (flags_), (arg_), ## __VA_ARGS__)
 #endif
 
 int
@@ -52,8 +60,12 @@ main(void)
        if (sigprocmask(SIG_UNBLOCK, &mask, NULL))
                perror_msg_and_fail("sigprocmask");
 
-       const pid_t pid = clone(child, tail_alloc(child_stack_size),
-                               CLONE_PTRACE | SIGCHLD, 0);
+       const unsigned long child_stack_size = get_page_size();
+       void *const child_stack =
+               tail_alloc(child_stack_size * 2) + child_stack_size;
+
+       const pid_t pid = do_clone(child, child_stack, child_stack_size,
+                                  CLONE_PTRACE | SIGCHLD, 0);
        if (pid < 0)
                perror_msg_and_fail("clone");
 
@@ -69,9 +81,11 @@ main(void)
        FILE *const fp = fdopen(3, "a");
        if (!fp)
                perror_msg_and_fail("fdopen");
+#if !QUIET_ATTACH
        if (fprintf(fp, "%s: Detached unknown pid %d\n",
                    getenv("STRACE_EXE") ?: "strace", pid) < 0)
                perror_msg_and_fail("fprintf");
+#endif
 
        int status;
        while (wait(&status) != pid) {
@@ -82,8 +96,11 @@ main(void)
                error_msg_and_fail("unexpected child exit status %d", status);
 
        printf("--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_KILLED, si_pid=%d"
-              ", si_uid=%u, si_status=%s, si_utime=%u, si_stime=%u} ---\n"
-              "+++ exited with 0 +++\n", pid, geteuid(), "SIGUSR1",
+              ", si_uid=%d, si_status=%s, si_utime=%u, si_stime=%u} ---\n"
+#if !QUIET_EXIT
+              "+++ exited with 0 +++\n"
+#endif
+              , pid, geteuid(), "SIGUSR1",
               (unsigned int) sinfo.si_utime, (unsigned int) sinfo.si_stime);
 
        return 0;
index 24c4298ad1cc55c6b76314be069af73916f8f3a3..6f77ed8b0c34b9bd56c7e3ca72788688908780e4 100755 (executable)
@@ -2,7 +2,7 @@
 #
 # Check handling of CLONE_PTRACE'ed processes.
 #
-# Copyright (c) 2017-2018 The strace developers.
+# Copyright (c) 2017-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 . "${srcdir=.}/init.sh"
 
 run_prog > /dev/null 3>&1
-args="-e trace=none $args"
+args="-e trace=none ${1:---quiet=personality} $args"
 > "$LOG" || fail_ "failed to write $LOG"
 
 $STRACE -o "$LOG" $args > "$EXP" 2> "$OUT"-err 3> "$EXP"-err || {
diff --git a/tests-mx32/close_range-P.c b/tests-mx32/close_range-P.c
new file mode 100644 (file)
index 0000000..2c757b0
--- /dev/null
@@ -0,0 +1,4 @@
+#define PATH_TRACING
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "close_range.c"
diff --git a/tests-mx32/close_range-P.gen.test b/tests-mx32/close_range-P.gen.test
new file mode 100755 (executable)
index 0000000..85fb6a8
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (close_range-P -a21 --trace=close_range -P /dev/full 7>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a21 --trace=close_range -P /dev/full 7>>/dev/full
diff --git a/tests-mx32/close_range-y.c b/tests-mx32/close_range-y.c
new file mode 100644 (file)
index 0000000..61b481b
--- /dev/null
@@ -0,0 +1,5 @@
+#define FD0_PATH "</dev/null>"
+#define FD7_PATH "</dev/full>"
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "close_range.c"
diff --git a/tests-mx32/close_range-y.gen.test b/tests-mx32/close_range-y.gen.test
new file mode 100755 (executable)
index 0000000..da08dc0
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (close_range-y -a33 --trace=close_range -y 7>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a33 --trace=close_range -y 7>>/dev/full
diff --git a/tests-mx32/close_range-yy.c b/tests-mx32/close_range-yy.c
new file mode 100644 (file)
index 0000000..64997fc
--- /dev/null
@@ -0,0 +1,5 @@
+#define FD0_PATH "</dev/null<char 1:3>>"
+#define FD7_PATH "</dev/full<char 1:7>>"
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "close_range.c"
diff --git a/tests-mx32/close_range-yy.gen.test b/tests-mx32/close_range-yy.gen.test
new file mode 100755 (executable)
index 0000000..3f3b9cb
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (close_range-yy -a33 --trace=close_range -yy 7>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a33 --trace=close_range -yy 7>>/dev/full
diff --git a/tests-mx32/close_range.c b/tests-mx32/close_range.c
new file mode 100644 (file)
index 0000000..b3a3ab7
--- /dev/null
@@ -0,0 +1,147 @@
+/*
+ * Check decoding of close_range syscall.
+ *
+ * Copyright (c) 2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_close_range
+
+# include <fcntl.h>
+# include <stdio.h>
+# include <unistd.h>
+
+# ifdef HAVE_LINUX_CLOSE_RANGE_H
+#  include <linux/close_range.h>
+# else
+#  define CLOSE_RANGE_UNSHARE  (1U << 1)
+# endif
+
+# ifndef FD0_PATH
+#  define FD0_PATH ""
+# endif
+# ifndef FD7_PATH
+#  define FD7_PATH ""
+# endif
+# ifndef SKIP_IF_PROC_IS_UNAVAILABLE
+#  define SKIP_IF_PROC_IS_UNAVAILABLE
+# endif
+
+static const char *errstr;
+
+static long
+k_close_range(const unsigned int fd1, const unsigned int fd2, const unsigned int flags)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = fill | fd1;
+       const kernel_ulong_t arg2 = fill | fd2;
+       const kernel_ulong_t arg3 = fill | flags;
+       const long rc = syscall(__NR_close_range, arg1, arg2, arg3, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
+static void
+xdup2(int fd1, int fd2)
+{
+       if (dup2(fd1, fd2) != fd2)
+               perror_msg_and_fail("dup2(%d, %d)", fd1, fd2);
+}
+
+int
+main(void)
+{
+       SKIP_IF_PROC_IS_UNAVAILABLE;
+
+       const int fd0 = dup(0);
+       const int fd7 = dup(7);
+       const int fd7_min = MIN(7, fd7);
+       const int fd7_max = MAX(7, fd7);
+
+       k_close_range(-2, -1, 1);
+# ifndef PATH_TRACING
+       printf("close_range(-2, -1, 0x1 /* CLOSE_RANGE_??? */) = %s\n", errstr);
+# endif
+
+       k_close_range(-1, -2, 2);
+# ifndef PATH_TRACING
+       printf("close_range(-1, -2, CLOSE_RANGE_UNSHARE) = %s\n", errstr);
+# endif
+
+       k_close_range(-3, 0, 4);
+# ifndef PATH_TRACING
+       printf("close_range(-3, 0" FD0_PATH ", 0x4 /* CLOSE_RANGE_??? */)"
+              " = %s\n", errstr);
+# endif
+
+       k_close_range(0, -4, -1);
+# ifndef PATH_TRACING
+       printf("close_range(0" FD0_PATH ", -4, CLOSE_RANGE_UNSHARE|%#x) = %s\n",
+              (-1U & ~CLOSE_RANGE_UNSHARE), errstr);
+# endif
+
+       k_close_range(-5, 7, 0);
+       printf("close_range(-5, 7" FD7_PATH ", 0) = %s\n", errstr);
+
+       k_close_range(7, -6, 1);
+       printf("close_range(7" FD7_PATH ", -6, 0x1 /* CLOSE_RANGE_??? */)"
+              " = %s\n", errstr);
+
+       k_close_range(7, 7, 4);
+       printf("close_range(7" FD7_PATH ", 7" FD7_PATH
+              ", 0x4 /* CLOSE_RANGE_??? */) = %s\n", errstr);
+
+       k_close_range(-7, -7, 7);
+# ifndef PATH_TRACING
+       printf("close_range(-7, -7, CLOSE_RANGE_UNSHARE|0x5) = %s\n", errstr);
+# endif
+
+       k_close_range(7, 0, 0);
+       printf("close_range(7" FD7_PATH ", 0" FD0_PATH ", 0) = %s\n", errstr);
+
+       k_close_range(fd7, fd0, 0);
+       printf("close_range(%d" FD7_PATH ", %d" FD0_PATH ", 0) = %s\n",
+              fd7, fd0, errstr);
+
+       if (k_close_range(0, 0, 0) == 0)
+               xdup2(fd0, 0);
+# ifndef PATH_TRACING
+       printf("close_range(0" FD0_PATH ", 0" FD0_PATH ", 0) = %s\n", errstr);
+# endif
+
+       if (k_close_range(fd0, fd0, 0) == 0)
+               xdup2(0, fd0);
+# ifndef PATH_TRACING
+       printf("close_range(%d" FD0_PATH ", %d" FD0_PATH ", 0) = %s\n",
+              fd0, fd0, errstr);
+# endif
+
+       if (k_close_range(7, 7, 0) == 0)
+               xdup2(fd7, 7);
+       printf("close_range(7" FD7_PATH ", 7" FD7_PATH ", 0) = %s\n", errstr);
+
+       if (k_close_range(fd7, fd7, 0) == 0)
+               xdup2(7, fd7);
+       printf("close_range(%d" FD7_PATH ", %d" FD7_PATH ", 0) = %s\n",
+              fd7, fd7, errstr);
+
+       if (k_close_range(fd7_max, -1, 0) == 0)
+               xdup2(fd7_min, fd7_max);
+       printf("close_range(%d" FD7_PATH ", -1, 0) = %s\n",
+              fd7_max, errstr);
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_close_range")
+
+#endif
diff --git a/tests-mx32/close_range.gen.test b/tests-mx32/close_range.gen.test
new file mode 100755 (executable)
index 0000000..19e6f4b
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (close_range -a21 7>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a21 7>>/dev/full
index c1f142c65b755f086dcb59ded7158f35ca3711e6..f39f8afc772dd5d5b942388faf9872ac6abf30b2 100644 (file)
@@ -2,14 +2,13 @@
  * This file is part of copy_file_range strace test.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
 #include "scno.h"
 
 #if defined __NR_copy_file_range
index 4f3d45f8889f2451a2bdc05e70a3d8d7cf7862dd..001008a36b4cb050361a68ef162b3315d23d3d0b 100755 (executable)
@@ -2,7 +2,7 @@
 #
 # Check whether -c counts through forks and clones properly.
 #
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 . "${srcdir=.}/init.sh"
 
 run_prog
-run_strace -q -f -c $args
+run_strace -e silent=attach -f -c $args
 match_grep
 
 exit 0
index 6abb177260db7bdb7b73d0074edfdd770133148e..c1ba37206a658dba7d6b81dc327192a10ef82a77 100755 (executable)
@@ -3,7 +3,7 @@
 # Check whether -c and -w options work.
 #
 # Copyright (c) 2014-2016 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2014-2018 The strace developers.
+# Copyright (c) 2014-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -29,13 +29,25 @@ grep_log()
        }
 }
 
-grep_log ' *[^ ]+ +0\.0[^n]*nanosleep'         -c
-grep_log ' *[^ ]+ +0\.0[^n]*nanosleep'         -c -O1
-grep_log ' *[^ ]+ +0\.0[^n]*nanosleep'         -c -enanosleep
-grep_log ' *[^ ]+ +0\.0[^n]*nanosleep'         -c -O1 -enanosleep
-grep_log ' *[^ ]+ +(1\.[01]|0\.99)[^n]*nanosleep'      -cw
-grep_log ' *[^ ]+ +(1\.[01]|0\.99)[^n]*nanosleep'      -cw -O1
-grep_log '100\.00 +(1\.[01]|0\.99)[^n]*nanosleep'      -cw -enanosleep
-grep_log '100\.00 +(1\.[01]|0\.99)[^n]*nanosleep'      -cw -O1 -enanosleep
+GENERIC=' *[^ ]+ +0\.0[^n]*nanosleep *'
+WALLCLOCK=' *[^ ]+ +(1\.[01]|0\.99)[^n]*nanosleep *'
+WALLCLOCK1='100\.00 +(1\.[01]|0\.99)[^n]*nanosleep'
+HALFCLOCK=' *[^ ]+ +0\.[567][^n]*nanosleep *'
+
+grep_log "$GENERIC"    -c
+grep_log "$GENERIC"    -c -O1
+grep_log "$GENERIC"    -c --summary-syscall-overhead=1
+grep_log "$GENERIC"    -c -enanosleep
+grep_log "$GENERIC"    -c -O1 -enanosleep
+grep_log "$WALLCLOCK"  -cw
+grep_log "$WALLCLOCK"  -cw -O1
+grep_log "$WALLCLOCK1" -cw -enanosleep
+grep_log "$WALLCLOCK1" -cw -O1 -enanosleep
+grep_log "$HALFCLOCK"  -cw -O4.5e2ms -enanosleep
+grep_log "$HALFCLOCK"  -cw --summary-syscall-overhead=4.5e2ms -enanosleep
+grep_log "$HALFCLOCK"  -cw -O4.5e-1s -enanosleep
+grep_log "$HALFCLOCK"  -cw --summary-syscall-overhead=4.5e-1s -enanosleep
+grep_log "$HALFCLOCK"  -cw -O456789012ns -enanosleep
+grep_log "$HALFCLOCK"  -cw --summary-syscall-overhead=456789012ns -enanosleep
 
 exit 0
index 71819d5b8aed2e2e5f72cf08530c8d9db7bf2f33..6a5c08e519b4ae099ed90998e226c74145b46bc2 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_creat
 
diff --git a/tests-mx32/create_tmpfile.c b/tests-mx32/create_tmpfile.c
new file mode 100644 (file)
index 0000000..56f4e60
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Create a temporary file in the current directory.
+ *
+ * Copyright (c) 2020 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <fcntl.h>
+#include <unistd.h>
+
+#ifndef O_TMPFILE
+# if defined __hppa__
+#  define O_TMPFILE    040000000
+# elif defined __alpha__
+#  define O_TMPFILE    0100000000
+# elif defined __sparc__
+#  define O_TMPFILE    0200000000
+# else
+#  define O_TMPFILE    020000000
+# endif
+#endif
+
+int
+create_tmpfile(unsigned int flags)
+{
+       int fd = open(".", O_TMPFILE | O_DIRECTORY | O_EXCL | flags, 0600);
+
+       if (fd < 0) {
+               /*
+                * Since every test is executed in a separate directory,
+                * there is no need to protect from race conditions.
+                */
+               static const char fname[] = "create_tmpfile";
+
+               fd = open(fname, O_CREAT | O_EXCL | flags, 0600);
+               if (fd < 0)
+                       perror_msg_and_fail("open: %s", fname);
+               if (unlink(fname))
+                       perror_msg_and_fail("unlink: %s", fname);
+       }
+
+       return fd;
+}
index fb19b15778115680e046b6158effbc75436c10a9..1b54c443fbd2f8704dda7a528e97a0c42e5997a2 100644 (file)
@@ -1,13 +1,14 @@
 /*
  * Check delay injection.
  *
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
+#include <inttypes.h>
 #include <limits.h>
 #include <stdio.h>
 #include <stdint.h>
@@ -16,7 +17,7 @@
 #include <time.h>
 #include <sys/time.h>
 #include <sys/wait.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 static int64_t
 usecs_from_tv(const struct timeval *const tv)
@@ -30,6 +31,22 @@ usecs_from_ts(const struct timespec *const ts)
     return (int64_t) ts->tv_sec * 1000000 + ts->tv_nsec / 1000;
 }
 
+static void
+check_(const int64_t got, const bool ge, const int64_t orig, const int nproc,
+       const int exitcode)
+{
+       const int64_t thresh = (orig * (ge ? nproc - 1 : nproc + 1)) / nproc;
+
+       if (ge ? got >= thresh : got <= thresh)
+               return;
+
+       fprintf(stderr, "Got delay of %" PRId64 ", %s than threshold value of "
+                       "%" PRId64 " (expected nominal delay value is %" PRId64
+                       ")\n", got, ge ? "less" : "more", thresh, orig);
+
+       _exit(exitcode);
+}
+
 static void
 check_delay(const struct timeval *const tv0,
            const struct timespec *const ts,
@@ -42,17 +59,10 @@ check_delay(const struct timeval *const tv0,
        const int64_t us  = usecs_from_ts(ts);
        const int64_t us1 = usecs_from_tv(tv1);
 
-       if (us - us0 < delay_exit * (nproc - 1) / nproc)
-               _exit(1);
-
-       if (us - us0 > delay_exit * (nproc + 1) / nproc)
-               _exit(2);
-
-       if (us1 - us < delay_enter * (nproc - 1) / nproc)
-               _exit(3);
-
-       if (us1 - us > delay_enter * (nproc + 1) / nproc)
-               _exit(4);
+       check_(us - us0, true,  delay_exit,  nproc, 1);
+       check_(us - us0, false, delay_exit,  nproc, 2);
+       check_(us1 - us, true,  delay_enter, nproc, 3);
+       check_(us1 - us, false, delay_enter, nproc, 4);
 }
 
 static void
index df8552c7b12fbb362589613415f42b3ba4b768df..f74e27f1ee5b02d04e68caf59d007f924a4f60df 100755 (executable)
@@ -2,15 +2,22 @@
 #
 # Check delay injection.
 #
-# Copyright (c) 2018 The strace developers.
+# Copyright (c) 2018-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 . "${srcdir=.}/init.sh"
 
-delay_enter=800000
-delay_exit=1600000
-run_strace -f -r -egettimeofday \
-       -einject=gettimeofday:delay_enter=$delay_enter:delay_exit=$delay_exit \
-       ../delay 4 $delay_enter $delay_exit
+while read -r denter dexit denter_us dexit_us; do
+       [ -n "$denter" ] || continue
+
+       run_strace --follow-forks -r -egettimeofday \
+               -einject=gettimeofday:delay_enter=$denter:delay_exit=$dexit \
+               ../delay 4 $denter_us $dexit_us
+done <<-EOF
+       800000 1600000  800000 1600000
+       8e5    1.6s     800000 1600000
+       800ms  1.6e+6us 800000 1600000
+       +8e8ns .16E7    800000 1600000
+EOF
index 3b2614c1dbec524d27f24df819713490cc8ade11..ad2bca67d8922f0af7e383cbe1e8e467ad4f2f95 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of delete_module syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined(__NR_delete_module)
 
diff --git a/tests-mx32/dev--decode-fds-dev.c b/tests-mx32/dev--decode-fds-dev.c
new file mode 100644 (file)
index 0000000..eb8eb5e
--- /dev/null
@@ -0,0 +1,2 @@
+#define PRINT_DEVNUM 1
+#include "dev-yy.c"
diff --git a/tests-mx32/dev--decode-fds-dev.gen.test b/tests-mx32/dev--decode-fds-dev.gen.test
new file mode 100755 (executable)
index 0000000..92983d0
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dev--decode-fds-dev -a30 -e trace=openat,fsync -P "/dev/full" -P "/dev/zero" -P "/dev/sda" -e decode-fds=dev); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a30 -e trace=openat,fsync -P "/dev/full" -P "/dev/zero" -P "/dev/sda" -e decode-fds=dev
diff --git a/tests-mx32/dev--decode-fds-path.c b/tests-mx32/dev--decode-fds-path.c
new file mode 100644 (file)
index 0000000..2a5fa12
--- /dev/null
@@ -0,0 +1,2 @@
+#define PRINT_DEVNUM 0
+#include "dev-yy.c"
diff --git a/tests-mx32/dev--decode-fds-path.gen.test b/tests-mx32/dev--decode-fds-path.gen.test
new file mode 100755 (executable)
index 0000000..0be131e
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dev--decode-fds-path -a19 -e trace=openat,fsync -P "/dev/full" -P "/dev/zero" -P "/dev/sda" -e decode-fds=path); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a19 -e trace=openat,fsync -P "/dev/full" -P "/dev/zero" -P "/dev/sda" -e decode-fds=path
diff --git a/tests-mx32/dev--decode-fds-socket.c b/tests-mx32/dev--decode-fds-socket.c
new file mode 100644 (file)
index 0000000..2a5fa12
--- /dev/null
@@ -0,0 +1,2 @@
+#define PRINT_DEVNUM 0
+#include "dev-yy.c"
diff --git a/tests-mx32/dev--decode-fds-socket.gen.test b/tests-mx32/dev--decode-fds-socket.gen.test
new file mode 100755 (executable)
index 0000000..5608564
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dev--decode-fds-socket -a19 -e trace=openat,fsync -P "/dev/full" -P "/dev/zero" -P "/dev/sda" --decode-fds=socket); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a19 -e trace=openat,fsync -P "/dev/full" -P "/dev/zero" -P "/dev/sda" --decode-fds=socket
index b9f55fa4fd9f19017a24cbbac30d085312dde58f..0ffb0c4c214226049bf4c235854c14dbca9c9e21 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Check printing of character/block device numbers in -yy mode.
  *
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 #include <stdio.h>
 #include <unistd.h>
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #include <linux/fcntl.h>
 
 #include <sys/sysmacros.h>
 
+#ifndef PRINT_DEVNUM
+# define PRINT_DEVNUM 1
+#endif
+
+#if PRINT_DEVNUM
+# define DEV_FMT "<%s<%s %u:%u>>"
+#else
+# define DEV_FMT "<%s>"
+#endif
+
 #if defined __NR_openat && defined O_PATH
 
 int
@@ -47,10 +57,13 @@ main(void)
                printf("openat(AT_FDCWD, \"%s\", O_RDONLY|O_PATH) = %s",
                       checks[i].path, sprintrc(fd));
                if (fd >= 0)
-                       printf("<%s<%s %u:%u>>",
-                              checks[i].path,
-                              checks[i].blk ? "block" : "char",
-                              checks[i].major, checks[i].minor);
+                       printf(DEV_FMT,
+                              checks[i].path
+# if PRINT_DEVNUM
+                              , checks[i].blk ? "block" : "char",
+                              checks[i].major, checks[i].minor
+# endif
+                              );
                puts("");
 
                if (fd < 0) {
@@ -63,9 +76,13 @@ main(void)
 
                int rc = fsync(fd);
 
-               printf("fsync(%ld<%s<%s %u:%u>>) = %s\n",
-                      fd, checks[i].path, checks[i].blk ? "block" : "char",
-                      checks[i].major, checks[i].minor, sprintrc(rc));
+               printf("fsync(%ld" DEV_FMT ") = %s\n",
+                      fd, checks[i].path,
+# if PRINT_DEVNUM
+                      checks[i].blk ? "block" : "char",
+                      checks[i].major, checks[i].minor,
+# endif
+                      sprintrc(rc));
 
                close(fd);
        }
diff --git a/tests-mx32/dup-P.c b/tests-mx32/dup-P.c
new file mode 100644 (file)
index 0000000..c65def8
--- /dev/null
@@ -0,0 +1,4 @@
+#define PATH_TRACING
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "dup.c"
diff --git a/tests-mx32/dup-P.gen.test b/tests-mx32/dup-P.gen.test
new file mode 100755 (executable)
index 0000000..5d170a3
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup-P -a7 --trace=dup -P /dev/full 9>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a7 --trace=dup -P /dev/full 9>>/dev/full
diff --git a/tests-mx32/dup-y.c b/tests-mx32/dup-y.c
new file mode 100644 (file)
index 0000000..285f20a
--- /dev/null
@@ -0,0 +1,5 @@
+#define FD0_PATH "</dev/null>"
+#define FD9_PATH "</dev/full>"
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "dup.c"
diff --git a/tests-mx32/dup-y.gen.test b/tests-mx32/dup-y.gen.test
new file mode 100755 (executable)
index 0000000..b29c05f
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup-y -a8 --trace=dup -y 9>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a8 --trace=dup -y 9>>/dev/full
diff --git a/tests-mx32/dup-yy.c b/tests-mx32/dup-yy.c
new file mode 100644 (file)
index 0000000..2e8175d
--- /dev/null
@@ -0,0 +1,5 @@
+#define FD0_PATH "</dev/null<char 1:3>>"
+#define FD9_PATH "</dev/full<char 1:7>>"
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "dup.c"
diff --git a/tests-mx32/dup-yy.gen.test b/tests-mx32/dup-yy.gen.test
new file mode 100755 (executable)
index 0000000..6f73d83
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup-yy -a8 --trace=dup -yy 9>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a8 --trace=dup -yy 9>>/dev/full
index 5cf5df7c50f7ffdcb602378a5735ff993b965805..d668e95e5790a280b78dfde8b1db6a722172dd7e 100644 (file)
@@ -1,20 +1,72 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Check decoding of dup syscall.
+ *
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <stdio.h>
-#include <unistd.h>
+#include "scno.h"
+
+#ifdef __NR_dup
+
+# include <stdio.h>
+# include <unistd.h>
+
+# ifndef FD0_PATH
+#  define FD0_PATH ""
+# endif
+# ifndef FD9_PATH
+#  define FD9_PATH ""
+# endif
+# ifndef SKIP_IF_PROC_IS_UNAVAILABLE
+#  define SKIP_IF_PROC_IS_UNAVAILABLE
+# endif
+
+static const char *errstr;
+
+static long
+k_dup(const unsigned int fd)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = fill | fd;
+       const long rc = syscall(__NR_dup, arg1, bad, bad, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
 
 int
 main(void)
 {
-       int rc = dup(-1);
-       printf("dup(-1) = %d %s (%m)\n", rc, errno2name());
+       SKIP_IF_PROC_IS_UNAVAILABLE;
+
+       k_dup(-1);
+# ifndef PATH_TRACING
+       printf("dup(-1) = %s\n", errstr);
+# endif
+
+       int d1 = k_dup(0);
+# ifndef PATH_TRACING
+       printf("dup(0" FD0_PATH ") = %d" FD0_PATH "\n", d1);
+# endif
+
+       int d2 = k_dup(d1);
+# ifndef PATH_TRACING
+       printf("dup(%d" FD0_PATH ") = %d" FD0_PATH "\n", d1, d2);
+# endif
+
+       d2 = k_dup(9);
+       printf("dup(9" FD9_PATH ") = %d" FD9_PATH "\n", d2);
 
        puts("+++ exited with 0 +++");
        return 0;
 }
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_dup")
+
+#endif
index e559cdbce518c63f5c424ce46e8060e9b0189865..6e9a4f795261ad9db43a60a632a4b5116dc21b9c 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup -a); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup -a7 9>>/dev/full); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a
+run_strace_match_diff -a7 9>>/dev/full
diff --git a/tests-mx32/dup2-P.c b/tests-mx32/dup2-P.c
new file mode 100644 (file)
index 0000000..f9603ea
--- /dev/null
@@ -0,0 +1,4 @@
+#define PATH_TRACING
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "dup2.c"
diff --git a/tests-mx32/dup2-P.gen.test b/tests-mx32/dup2-P.gen.test
new file mode 100755 (executable)
index 0000000..98df93e
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup2-P -a11 --trace=dup2 -P /dev/full 9>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a11 --trace=dup2 -P /dev/full 9>>/dev/full
diff --git a/tests-mx32/dup2-y.c b/tests-mx32/dup2-y.c
new file mode 100644 (file)
index 0000000..6b64663
--- /dev/null
@@ -0,0 +1,5 @@
+#define FD0_PATH "</dev/null>"
+#define FD9_PATH "</dev/full>"
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "dup2.c"
diff --git a/tests-mx32/dup2-y.gen.test b/tests-mx32/dup2-y.gen.test
new file mode 100755 (executable)
index 0000000..79d89c5
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup2-y -a13 --trace=dup2 -y 9>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a13 --trace=dup2 -y 9>>/dev/full
diff --git a/tests-mx32/dup2-yy.c b/tests-mx32/dup2-yy.c
new file mode 100644 (file)
index 0000000..6040579
--- /dev/null
@@ -0,0 +1,5 @@
+#define FD0_PATH "</dev/null<char 1:3>>"
+#define FD9_PATH "</dev/full<char 1:7>>"
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "dup2.c"
diff --git a/tests-mx32/dup2-yy.gen.test b/tests-mx32/dup2-yy.gen.test
new file mode 100755 (executable)
index 0000000..1c7ff8e
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup2-yy -a13 --trace=dup2 -yy 9>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a13 --trace=dup2 -yy 9>>/dev/full
index fba8fca5605e808ed8d11e8c51a6ebb53df706f7..ec735e9287167499234de7fefe34573013070d8a 100644 (file)
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Check decoding of dup2 syscall.
+ *
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_dup2
 
 # include <stdio.h>
 # include <unistd.h>
 
+# ifndef FD0_PATH
+#  define FD0_PATH ""
+# endif
+# ifndef FD9_PATH
+#  define FD9_PATH ""
+# endif
+# ifndef SKIP_IF_PROC_IS_UNAVAILABLE
+#  define SKIP_IF_PROC_IS_UNAVAILABLE
+# endif
+
+static const char *errstr;
+
+static long
+k_dup2(const unsigned int fd1, const unsigned int fd2)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = fill | fd1;
+       const kernel_ulong_t arg2 = fill | fd2;
+       const long rc = syscall(__NR_dup2, arg1, arg2, bad, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
 int
 main(void)
 {
-       const long int fd_old = (long int) 0xdeadbeefffffffffULL;
-       const long int fd_new = (long int) 0xdeadbeeffffffffeULL;
+       SKIP_IF_PROC_IS_UNAVAILABLE;
+
+       int fd0 = dup(0);
+       int fd9 = dup(9);
+
+       if (k_dup2(0, 0))
+               perror_msg_and_skip("dup2");
+# ifndef PATH_TRACING
+       printf("dup2(0" FD0_PATH ", 0" FD0_PATH ") = 0" FD0_PATH "\n");
+# endif
+
+       k_dup2(-1, -2);
+# ifndef PATH_TRACING
+       printf("dup2(-1, -2) = %s\n", errstr);
+# endif
+
+       k_dup2(-2, -1);
+# ifndef PATH_TRACING
+       printf("dup2(-2, -1) = %s\n", errstr);
+# endif
+
+       k_dup2(-3, 0);
+# ifndef PATH_TRACING
+       printf("dup2(-3, 0" FD0_PATH ") = %s\n", errstr);
+# endif
+
+       k_dup2(0, -4);
+# ifndef PATH_TRACING
+       printf("dup2(0" FD0_PATH ", -4) = %s\n", errstr);
+# endif
+
+       k_dup2(-5, 9);
+       printf("dup2(-5, 9" FD9_PATH ") = %s\n", errstr);
+
+       k_dup2(9, -6);
+       printf("dup2(9" FD9_PATH ", -6) = %s\n", errstr);
+
+       k_dup2(9, 9);
+       printf("dup2(9" FD9_PATH ", 9" FD9_PATH ") = 9" FD9_PATH "\n");
+
+       k_dup2(0, fd0);
+# ifndef PATH_TRACING
+       printf("dup2(0" FD0_PATH ", %d" FD0_PATH ") = %d" FD0_PATH "\n",
+              fd0, fd0);
+# endif
+
+       k_dup2(9, fd9);
+       printf("dup2(9" FD9_PATH ", %d" FD9_PATH ") = %d" FD9_PATH "\n",
+              fd9, fd9);
+
+       k_dup2(0, fd9);
+       printf("dup2(0" FD0_PATH ", %d" FD9_PATH ") = %d" FD0_PATH "\n",
+              fd9, fd9);
+
+       k_dup2(9, fd0);
+       printf("dup2(9" FD9_PATH ", %d" FD0_PATH ") = %d" FD9_PATH "\n",
+              fd0, fd0);
+
+       close(fd0);
+       close(fd9);
+
+       k_dup2(0, fd0);
+# ifndef PATH_TRACING
+       printf("dup2(0" FD0_PATH ", %d) = %d" FD0_PATH "\n",
+              fd0, fd0);
+# endif
 
-       long rc = syscall(__NR_dup2, fd_old, fd_new);
-       printf("dup2(%d, %d) = %ld %s (%m)\n",
-              (int) fd_old, (int) fd_new, rc, errno2name());
+       k_dup2(9, fd9);
+       printf("dup2(9" FD9_PATH ", %d) = %d" FD9_PATH "\n",
+              fd9, fd9);
 
        puts("+++ exited with 0 +++");
        return 0;
index 6a6d2f5898bb631d39f186e6a19b4262f4dc23a6..6d2c0688081a0ec9cfa45e36d4f5c85260c88501 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup2 -a1); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup2 -a11 9>>/dev/full); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a1
+run_strace_match_diff -a11 9>>/dev/full
diff --git a/tests-mx32/dup3-P.c b/tests-mx32/dup3-P.c
new file mode 100644 (file)
index 0000000..09ddb93
--- /dev/null
@@ -0,0 +1,4 @@
+#define PATH_TRACING
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "dup3.c"
diff --git a/tests-mx32/dup3-P.gen.test b/tests-mx32/dup3-P.gen.test
new file mode 100755 (executable)
index 0000000..ad77199
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup3-P -a13 --trace=dup3 -P /dev/full 7>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a13 --trace=dup3 -P /dev/full 7>>/dev/full
diff --git a/tests-mx32/dup3-y.c b/tests-mx32/dup3-y.c
new file mode 100644 (file)
index 0000000..730a920
--- /dev/null
@@ -0,0 +1,5 @@
+#define FD0_PATH "</dev/null>"
+#define FD7_PATH "</dev/full>"
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "dup3.c"
diff --git a/tests-mx32/dup3-y.gen.test b/tests-mx32/dup3-y.gen.test
new file mode 100755 (executable)
index 0000000..0c74ee0
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup3-y -a15 --trace=dup3 -y 7>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a15 --trace=dup3 -y 7>>/dev/full
diff --git a/tests-mx32/dup3-yy.c b/tests-mx32/dup3-yy.c
new file mode 100644 (file)
index 0000000..24d7988
--- /dev/null
@@ -0,0 +1,5 @@
+#define FD0_PATH "</dev/null<char 1:3>>"
+#define FD7_PATH "</dev/full<char 1:7>>"
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "dup3.c"
diff --git a/tests-mx32/dup3-yy.gen.test b/tests-mx32/dup3-yy.gen.test
new file mode 100755 (executable)
index 0000000..6581ef5
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup3-yy -a15 --trace=dup3 -yy 7>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a15 --trace=dup3 -yy 7>>/dev/full
index 741e06f880e53f3d97d541ed90e6bd41e6a65505..930257246eea387d4308a255d818c770ae44db3f 100644 (file)
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Check decoding of dup3 syscall.
+ *
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <fcntl.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
-#if defined __NR_dup3 && defined O_CLOEXEC
+#ifdef __NR_dup3
 
+# include <fcntl.h>
 # include <stdio.h>
 # include <unistd.h>
 
+# ifndef O_CLOEXEC
+#  if defined __alpha__ || defined __hppa__
+#   define O_CLOEXEC   010000000
+#  elif defined __sparc__
+#   define O_CLOEXEC   020000000
+#  else
+#   define O_CLOEXEC   02000000
+#  endif
+# endif /* !O_CLOEXEC */
+
+# ifndef FD0_PATH
+#  define FD0_PATH ""
+# endif
+# ifndef FD7_PATH
+#  define FD7_PATH ""
+# endif
+# ifndef SKIP_IF_PROC_IS_UNAVAILABLE
+#  define SKIP_IF_PROC_IS_UNAVAILABLE
+# endif
+
+static const char *errstr;
+
+static long
+k_dup3(const unsigned int fd1, const unsigned int fd2, const unsigned int flags)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = fill | fd1;
+       const kernel_ulong_t arg2 = fill | fd2;
+       const kernel_ulong_t arg3 = fill | flags;
+       const long rc = syscall(__NR_dup3, arg1, arg2, arg3, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
 int
 main(void)
 {
-       const long int fd_old = (long int) 0xdeadbeefffffffffULL;
-       const long int fd_new = (long int) 0xdeadbeeffffffffeULL;
+       SKIP_IF_PROC_IS_UNAVAILABLE;
+
+       int fd0 = dup(0);
+       int fd7 = dup(7);
+
+       k_dup3(0, 0, 0);
+# ifndef PATH_TRACING
+       printf("dup3(0" FD0_PATH ", 0" FD0_PATH ", 0) = %s\n", errstr);
+# endif
+
+       k_dup3(-1, -2, O_CLOEXEC);
+# ifndef PATH_TRACING
+       printf("dup3(-1, -2, O_CLOEXEC) = %s\n", errstr);
+# endif
+
+       k_dup3(-2, -1, O_TRUNC);
+# ifndef PATH_TRACING
+       printf("dup3(-2, -1, O_TRUNC) = %s\n", errstr);
+# endif
+
+       k_dup3(-3, 0, O_TRUNC | O_CLOEXEC);
+# ifndef PATH_TRACING
+       printf("dup3(-3, 0" FD0_PATH ", O_TRUNC|O_CLOEXEC) = %s\n", errstr);
+# endif
+
+       k_dup3(0, -4, O_RDONLY);
+# ifndef PATH_TRACING
+       printf("dup3(0" FD0_PATH ", -4, 0) = %s\n", errstr);
+# endif
+
+       k_dup3(-5, 7, O_WRONLY);
+       printf("dup3(-5, 7" FD7_PATH ", 0x1 /* O_??? */) = %s\n", errstr);
+
+       k_dup3(7, -6, O_RDWR);
+       printf("dup3(7" FD7_PATH ", -6, 0x2 /* O_??? */) = %s\n", errstr);
+
+       k_dup3(7, 7, O_CLOEXEC);
+       printf("dup3(7" FD7_PATH ", 7" FD7_PATH ", O_CLOEXEC) = %s\n", errstr);
+
+       k_dup3(-7, -7, 7);
+# ifndef PATH_TRACING
+       printf("dup3(-7, -7, %s) = %s\n",
+#  ifdef __sparc__
+              "O_NDELAY|0x3"
+#  else
+              "0x7 /* O_??? */"
+#  endif
+              , errstr);
+# endif
+
+       if (k_dup3(0, fd0, O_CLOEXEC) != fd0)
+               perror_msg_and_skip("dup3");
+# ifndef PATH_TRACING
+       printf("dup3(0" FD0_PATH ", %d" FD0_PATH ", O_CLOEXEC) = %d" FD0_PATH
+              "\n", fd0, fd0);
+# endif
+
+       k_dup3(7, fd7, 0);
+       printf("dup3(7" FD7_PATH ", %d" FD7_PATH ", 0) = %d" FD7_PATH
+              "\n", fd7, fd7);
+
+       k_dup3(0, fd7, O_CLOEXEC);
+       printf("dup3(0" FD0_PATH ", %d" FD7_PATH ", O_CLOEXEC) = %d" FD0_PATH
+              "\n", fd7, fd7);
+
+       k_dup3(7, fd0, 0);
+       printf("dup3(7" FD7_PATH ", %d" FD0_PATH ", 0) = %d" FD7_PATH
+              "\n", fd0, fd0);
+
+       close(fd0);
+       close(fd7);
+
+       k_dup3(0, fd0, O_CLOEXEC);
+# ifndef PATH_TRACING
+       printf("dup3(0" FD0_PATH ", %d, O_CLOEXEC) = %d" FD0_PATH "\n",
+              fd0, fd0);
+# endif
 
-       long rc = syscall(__NR_dup3, fd_old, fd_new, O_CLOEXEC);
-       printf("dup3(%d, %d, O_CLOEXEC) = %ld %s (%m)\n",
-              (int) fd_old, (int) fd_new, rc, errno2name());
+       k_dup3(7, fd7, 0);
+       printf("dup3(7" FD7_PATH ", %d, 0) = %d" FD7_PATH "\n",
+              fd7, fd7);
 
        puts("+++ exited with 0 +++");
        return 0;
@@ -30,6 +142,6 @@ main(void)
 
 #else
 
-SKIP_MAIN_UNDEFINED("__NR_dup3 && O_CLOEXEC")
+SKIP_MAIN_UNDEFINED("__NR_dup3")
 
 #endif
index 776b9a7999bc693cef6ef6b1184a50cd195fc457..f5aeb03677585a83633b51230f150f49a3d4eb3a 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup3 -a24 ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup3 -a13 7>>/dev/full); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a24 
+run_strace_match_diff -a13 7>>/dev/full
index 42cc8d0458c575d6c098bf5f5cfeee0aa8628931..9b808ccecfa70513b336291830ef2a8a02c77627 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_epoll_create
 
index 81b338259d8d45133c18ab5c4f5744347f8c7869..f01867ccb94985c648ed3f4610dd02f7241e7ac6 100644 (file)
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -7,7 +8,7 @@
 
 #include "tests.h"
 #include <fcntl.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_epoll_create1 && defined O_CLOEXEC
 
index 85a288cde0165dc576ba753675f5edd087429eef..b1e7a0631ba94dff0f152b3164f35943938b95cf 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_epoll_ctl
 
index ce95e6dc5aa999566e74cafe0150b7b987c8383b..1e2834631b41677b3f5f46a4a170c69c4e33a40b 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_epoll_pwait
 
index 3981905d30f6b56e9d2651a4f2833f7c6d5d4051..21c48511e7e07a6ddfe98936f3cbf2268fec1151 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_epoll_wait
 
index 75d33dd7bd28f171fece607a0b503410ab921508..4c78dced01e11677e54da0ffdb13ddf44678a8eb 100644 (file)
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -8,7 +9,7 @@
 #include "tests.h"
 #include <fcntl.h>
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_eventfd2 && defined O_CLOEXEC
 
index 629a69ab23caa97a0a5db2e967429adc3a57e556..c8b1f4cd96c332d8dc3d84085faefaee186962b3 100644 (file)
@@ -2,14 +2,13 @@
  * This file is part of execveat strace test.
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
 #include "scno.h"
 
 #ifdef __NR_execveat
diff --git a/tests-mx32/faccessat-P.c b/tests-mx32/faccessat-P.c
new file mode 100644 (file)
index 0000000..0024d55
--- /dev/null
@@ -0,0 +1,4 @@
+#define PATH_TRACING
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "faccessat.c"
diff --git a/tests-mx32/faccessat-P.gen.test b/tests-mx32/faccessat-P.gen.test
new file mode 100755 (executable)
index 0000000..9210a5f
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (faccessat-P -a23 --trace=faccessat -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a23 --trace=faccessat -P /dev/full
diff --git a/tests-mx32/faccessat-y.c b/tests-mx32/faccessat-y.c
new file mode 100644 (file)
index 0000000..61f67d7
--- /dev/null
@@ -0,0 +1,4 @@
+#define FD_PATH "</dev/full>"
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "faccessat.c"
diff --git a/tests-mx32/faccessat-y.gen.test b/tests-mx32/faccessat-y.gen.test
new file mode 100755 (executable)
index 0000000..bc0db7f
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (faccessat-y +faccessat.test -a24 -y); do not edit.
+set -- -a24 -y
+. "${srcdir=.}/faccessat.test"
diff --git a/tests-mx32/faccessat-yy.c b/tests-mx32/faccessat-yy.c
new file mode 100644 (file)
index 0000000..b516240
--- /dev/null
@@ -0,0 +1,4 @@
+#define FD_PATH "</dev/full<char 1:7>>"
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "faccessat.c"
diff --git a/tests-mx32/faccessat-yy.gen.test b/tests-mx32/faccessat-yy.gen.test
new file mode 100755 (executable)
index 0000000..e4a8224
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (faccessat-yy +faccessat.test -a24 -yy); do not edit.
+set -- -a24 -yy
+. "${srcdir=.}/faccessat.test"
index 6d95555aa051f89cdce9357564fd6dc666cc182e..b5498bc72e5a0639625284326088b336a78d40bd 100644 (file)
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Check decoding of faccessat syscall.
+ *
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_faccessat
 
+# include <fcntl.h>
 # include <stdio.h>
 # include <unistd.h>
 
+# ifndef FD_PATH
+#  define FD_PATH ""
+# endif
+# ifndef SKIP_IF_PROC_IS_UNAVAILABLE
+#  define SKIP_IF_PROC_IS_UNAVAILABLE
+# endif
+
+static const char *errstr;
+
+static long
+k_faccessat(const unsigned int dirfd,
+           const void *const pathname,
+           const unsigned int mode)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+
+       const kernel_ulong_t arg1 = fill | dirfd;
+       const kernel_ulong_t arg2 = (uintptr_t) pathname;
+       const kernel_ulong_t arg3 = fill | mode;
+       const long rc = syscall(__NR_faccessat,
+                               arg1, arg2, arg3, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
 int
 main(void)
 {
-       static const char sample[] = "faccessat.sample";
-       const long int fd = (long int) 0xdeadbeefffffffffULL;
+       SKIP_IF_PROC_IS_UNAVAILABLE;
+
+       TAIL_ALLOC_OBJECT_CONST_PTR(const char, unterminated);
+       char *unterminated_str;
+       if (asprintf(&unterminated_str, "%p", unterminated) < 0)
+                perror_msg_and_fail("asprintf");
+       const void *const efault = unterminated + 1;
+       char *efault_str;
+       if (asprintf(&efault_str, "%p", efault) < 0)
+                perror_msg_and_fail("asprintf");
+
+       typedef struct {
+               char sym;
+               char null;
+       } sym_null;
+
+       TAIL_ALLOC_OBJECT_CONST_PTR(sym_null, dot);
+       dot->sym = '.';
+       dot->null = '\0';
+       const char *const null = &dot->null;
+
+       TAIL_ALLOC_OBJECT_CONST_PTR(sym_null, slash);
+       slash->sym = '/';
+       slash->null = '\0';
+
+       static const char path[] = "/dev/full";
+       const char *const fd_path = tail_memdup(path, sizeof(path));
+        int fd = open(path, O_WRONLY);
+        if (fd < 0)
+                perror_msg_and_fail("open: %s", path);
+       char *fd_str;
+       if (asprintf(&fd_str, "%d%s", fd, FD_PATH) < 0)
+                perror_msg_and_fail("asprintf");
+       char *path_quoted;
+       if (asprintf(&path_quoted, "\"%s\"", path) < 0)
+                perror_msg_and_fail("asprintf");
+
+       struct {
+               int val;
+               const char *str;
+       } dirfds[] = {
+               { ARG_STR(-1) },
+               { -100, "AT_FDCWD" },
+               { fd, fd_str },
+       }, modes[] = {
+               { ARG_STR(F_OK) },
+               { ARG_STR(R_OK) },
+               { ARG_STR(W_OK) },
+               { ARG_STR(X_OK) },
+               { ARG_STR(R_OK|W_OK) },
+               { ARG_STR(R_OK|X_OK) },
+               { ARG_STR(W_OK|X_OK) },
+               { ARG_STR(R_OK|W_OK|X_OK) },
+               { 8, "0x8 /* ?_OK */" },
+               { -1, "R_OK|W_OK|X_OK|0xfffffff8" },
+       };
+
+       struct {
+               const void *val;
+               const char *str;
+       } paths[] = {
+               { 0, "NULL" },
+               { efault, efault_str },
+               { unterminated, unterminated_str },
+               { null, "\"\"" },
+               { &dot->sym, "\".\"" },
+               { &slash->sym, "\"/\"" },
+               { fd_path, path_quoted },
+       };
 
-       long rc = syscall(__NR_faccessat, fd, sample, F_OK);
-       printf("faccessat(%d, \"%s\", F_OK) = %ld %s (%m)\n",
-              (int) fd, sample, rc, errno2name());
+       for (unsigned int dirfd_i = 0;
+            dirfd_i < ARRAY_SIZE(dirfds);
+            ++dirfd_i) {
+               for (unsigned int path_i = 0;
+                    path_i < ARRAY_SIZE(paths);
+                    ++path_i) {
+                       for (unsigned int mode_i = 0;
+                            mode_i < ARRAY_SIZE(modes);
+                            ++mode_i) {
+                               k_faccessat(dirfds[dirfd_i].val,
+                                           paths[path_i].val,
+                                           modes[mode_i].val);
+# ifdef PATH_TRACING
+                               if (dirfds[dirfd_i].val == fd ||
+                                   paths[path_i].val == fd_path)
+# endif
+                               printf("faccessat(%s, %s, %s) = %s\n",
+                                      dirfds[dirfd_i].str,
+                                      paths[path_i].str,
+                                      modes[mode_i].str,
+                                      errstr);
+                       }
+               }
+       }
 
        puts("+++ exited with 0 +++");
        return 0;
diff --git a/tests-mx32/faccessat.gen.test b/tests-mx32/faccessat.gen.test
deleted file mode 100755 (executable)
index 4ccec2a..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (faccessat -P $NAME.sample); do not edit.
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -P $NAME.sample
diff --git a/tests-mx32/faccessat.test b/tests-mx32/faccessat.test
new file mode 100755 (executable)
index 0000000..7b36849
--- /dev/null
@@ -0,0 +1,19 @@
+#!/bin/sh
+#
+# Check decoding of faccessat syscall.
+#
+# Copyright (c) 2020 Dmitry V. Levin <ldv@altlinux.org>
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/init.sh"
+
+check_prog sed
+
+run_prog > /dev/null
+run_strace -a23 --trace=faccessat "$@" $args > "$EXP"
+
+# Filter out faccessat() calls made by ld.so and libc.
+sed -n '/^faccessat(-1, NULL,/,$p' < "$LOG" > "$OUT"
+match_diff "$OUT" "$EXP"
diff --git a/tests-mx32/faccessat2-P.c b/tests-mx32/faccessat2-P.c
new file mode 100644 (file)
index 0000000..0e6af94
--- /dev/null
@@ -0,0 +1,4 @@
+#define PATH_TRACING
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "faccessat2.c"
diff --git a/tests-mx32/faccessat2-P.gen.test b/tests-mx32/faccessat2-P.gen.test
new file mode 100755 (executable)
index 0000000..341f4a5
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (faccessat2-P -a27 --trace=faccessat2 -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27 --trace=faccessat2 -P /dev/full
diff --git a/tests-mx32/faccessat2-y.c b/tests-mx32/faccessat2-y.c
new file mode 100644 (file)
index 0000000..9337cb5
--- /dev/null
@@ -0,0 +1,4 @@
+#define FD_PATH "</dev/full>"
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "faccessat2.c"
diff --git a/tests-mx32/faccessat2-y.gen.test b/tests-mx32/faccessat2-y.gen.test
new file mode 100755 (executable)
index 0000000..caeeb72
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (faccessat2-y +faccessat2.test -a28 -y); do not edit.
+set -- -a28 -y
+. "${srcdir=.}/faccessat2.test"
diff --git a/tests-mx32/faccessat2-yy.c b/tests-mx32/faccessat2-yy.c
new file mode 100644 (file)
index 0000000..a23f3d4
--- /dev/null
@@ -0,0 +1,4 @@
+#define FD_PATH "</dev/full<char 1:7>>"
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "faccessat2.c"
diff --git a/tests-mx32/faccessat2-yy.gen.test b/tests-mx32/faccessat2-yy.gen.test
new file mode 100755 (executable)
index 0000000..ecaeef2
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (faccessat2-yy +faccessat2.test -a28 -yy); do not edit.
+set -- -a28 -yy
+. "${srcdir=.}/faccessat2.test"
diff --git a/tests-mx32/faccessat2.c b/tests-mx32/faccessat2.c
new file mode 100644 (file)
index 0000000..74d17cd
--- /dev/null
@@ -0,0 +1,174 @@
+/*
+ * Check decoding of faccessat2 syscall.
+ *
+ * Copyright (c) 2016-2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_faccessat2
+
+# include <fcntl.h>
+# include <stdio.h>
+# include <unistd.h>
+
+# define XLAT_MACROS_ONLY
+#  include "xlat/faccessat_flags.h"
+# undef XLAT_MACROS_ONLY
+
+# ifndef FD_PATH
+#  define FD_PATH ""
+# endif
+# ifndef SKIP_IF_PROC_IS_UNAVAILABLE
+#  define SKIP_IF_PROC_IS_UNAVAILABLE
+# endif
+
+static const char *errstr;
+
+static long
+k_faccessat2(const unsigned int dirfd,
+            const void *const pathname,
+            const unsigned int mode,
+            const unsigned int flags)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+
+       const kernel_ulong_t arg1 = fill | dirfd;
+       const kernel_ulong_t arg2 = (uintptr_t) pathname;
+       const kernel_ulong_t arg3 = fill | mode;
+       const kernel_ulong_t arg4 = fill | flags;
+       const long rc = syscall(__NR_faccessat2,
+                               arg1, arg2, arg3, arg4, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
+int
+main(void)
+{
+       SKIP_IF_PROC_IS_UNAVAILABLE;
+
+       TAIL_ALLOC_OBJECT_CONST_PTR(const char, unterminated);
+       char *unterminated_str;
+       if (asprintf(&unterminated_str, "%p", unterminated) < 0)
+                perror_msg_and_fail("asprintf");
+       const void *const efault = unterminated + 1;
+       char *efault_str;
+       if (asprintf(&efault_str, "%p", efault) < 0)
+                perror_msg_and_fail("asprintf");
+
+       typedef struct {
+               char sym;
+               char null;
+       } sym_null;
+
+       TAIL_ALLOC_OBJECT_CONST_PTR(sym_null, dot);
+       dot->sym = '.';
+       dot->null = '\0';
+       const char *const null = &dot->null;
+
+       TAIL_ALLOC_OBJECT_CONST_PTR(sym_null, slash);
+       slash->sym = '/';
+       slash->null = '\0';
+
+       static const char path[] = "/dev/full";
+       const char *const fd_path = tail_memdup(path, sizeof(path));
+        int fd = open(path, O_WRONLY);
+        if (fd < 0)
+                perror_msg_and_fail("open: %s", path);
+       char *fd_str;
+       if (asprintf(&fd_str, "%d%s", fd, FD_PATH) < 0)
+                perror_msg_and_fail("asprintf");
+       char *path_quoted;
+       if (asprintf(&path_quoted, "\"%s\"", path) < 0)
+                perror_msg_and_fail("asprintf");
+
+       struct {
+               int val;
+               const char *str;
+       } dirfds[] = {
+               { ARG_STR(-1) },
+               { -100, "AT_FDCWD" },
+               { fd, fd_str },
+       }, modes[] = {
+               { ARG_STR(F_OK) },
+               { ARG_STR(R_OK) },
+               { ARG_STR(W_OK) },
+               { ARG_STR(X_OK) },
+               { ARG_STR(R_OK|W_OK) },
+               { ARG_STR(R_OK|X_OK) },
+               { ARG_STR(W_OK|X_OK) },
+               { ARG_STR(R_OK|W_OK|X_OK) },
+               { 8, "0x8 /* ?_OK */" },
+               { -1, "R_OK|W_OK|X_OK|0xfffffff8" },
+       }, flags[] = {
+               { ARG_STR(0) },
+               { ARG_STR(AT_SYMLINK_NOFOLLOW) },
+               { ARG_STR(AT_EACCESS) },
+               { ARG_STR(AT_EMPTY_PATH) },
+               { ARG_STR(AT_SYMLINK_NOFOLLOW|AT_EACCESS) },
+               { ARG_STR(AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) },
+               { ARG_STR(AT_EACCESS|AT_EMPTY_PATH) },
+               { ARG_STR(AT_SYMLINK_NOFOLLOW|AT_EACCESS|AT_EMPTY_PATH) },
+               { 1, "0x1 /* AT_??? */" },
+               { -1, "AT_SYMLINK_NOFOLLOW|AT_EACCESS|AT_EMPTY_PATH|0xffffecff" },
+       };
+
+       struct {
+               const void *val;
+               const char *str;
+       } paths[] = {
+               { 0, "NULL" },
+               { efault, efault_str },
+               { unterminated, unterminated_str },
+               { null, "\"\"" },
+               { &dot->sym, "\".\"" },
+               { &slash->sym, "\"/\"" },
+               { fd_path, path_quoted },
+       };
+
+       for (unsigned int dirfd_i = 0;
+            dirfd_i < ARRAY_SIZE(dirfds);
+            ++dirfd_i) {
+               for (unsigned int path_i = 0;
+                    path_i < ARRAY_SIZE(paths);
+                    ++path_i) {
+                       for (unsigned int mode_i = 0;
+                            mode_i < ARRAY_SIZE(modes);
+                            ++mode_i) {
+                               for (unsigned int flag_i = 0;
+                                    flag_i < ARRAY_SIZE(flags);
+                                    ++flag_i) {
+                                       k_faccessat2(dirfds[dirfd_i].val,
+                                                   paths[path_i].val,
+                                                   modes[mode_i].val,
+                                                   flags[flag_i].val);
+# ifdef PATH_TRACING
+                                       if (dirfds[dirfd_i].val == fd ||
+                                           paths[path_i].val == fd_path)
+# endif
+                                       printf("faccessat2(%s, %s, %s, %s) = %s\n",
+                                              dirfds[dirfd_i].str,
+                                              paths[path_i].str,
+                                              modes[mode_i].str,
+                                              flags[flag_i].str,
+                                              errstr);
+                               }
+                       }
+               }
+       }
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_faccessat2")
+
+#endif
diff --git a/tests-mx32/faccessat2.test b/tests-mx32/faccessat2.test
new file mode 100755 (executable)
index 0000000..eea9ea9
--- /dev/null
@@ -0,0 +1,19 @@
+#!/bin/sh
+#
+# Check decoding of faccessat2 syscall.
+#
+# Copyright (c) 2020 Dmitry V. Levin <ldv@altlinux.org>
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/init.sh"
+
+check_prog sed
+
+run_prog > /dev/null
+run_strace -a27 --trace=faccessat2 "$@" $args > "$EXP"
+
+# Filter out faccessat2() calls made by ld.so and libc.
+sed -n '/^faccessat2(-1, NULL,/,$p' < "$LOG" > "$OUT"
+match_diff "$OUT" "$EXP"
index 1d7b6681b66dc98cb1bfffa9caac4ec7a2f2735e..7cbd3ad4721afbf85aee0cd18c65fc13db1691db 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -11,7 +11,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_fadvise64
 
index 1520b7e484227c968c6214a5836c830330433286..292b833843b2cfdbfc59fc6b36b1368215345d2c 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -11,7 +11,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __arm__
 # ifdef __NR_arm_fadvise64_64
index 0e2284de254735ed1947cfbddcdb0f0a383145ac..b48cd15700bf8e4c30d9be8d3aed460c5167d201 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of fallocate syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined(__NR_fallocate) && defined(HAVE_FALLOCATE) && HAVE_FALLOCATE
 
index a3eeff53715c341d88a791a8b7187dabd2147fe5..f9fc91615ab5f8e91e314966c0fe28476296b619 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of fanotify_init syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2019 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_fanotify_init
 
@@ -44,13 +44,14 @@ main(void)
                { F8ILL_KULONG_MASK, "FAN_CLASS_NOTIF" },
                { (kernel_ulong_t) 0xffffffff0000000cULL,
                        "0xc /* FAN_CLASS_??? */" },
-               { (kernel_ulong_t) 0xdec0deddefacec04ULL,
-                       "FAN_CLASS_CONTENT|0xefacec00 /* FAN_??? */" },
+               { (kernel_ulong_t) 0xdec0deddeface004ULL,
+                       "FAN_CLASS_CONTENT|0xeface000 /* FAN_??? */" },
                { (kernel_ulong_t) 0xffffffffffffffffULL,
                        "0xc /* FAN_CLASS_??? */|FAN_CLOEXEC|FAN_NONBLOCK|"
                        "FAN_UNLIMITED_QUEUE|FAN_UNLIMITED_MARKS|"
                        "FAN_ENABLE_AUDIT|FAN_REPORT_TID|FAN_REPORT_FID|"
-                       "0xfffffc80" },
+                       "FAN_REPORT_DIR_FID|FAN_REPORT_NAME|"
+                       "0xfffff080" },
        };
        static const struct strval event_f_flags[] = {
                { F8ILL_KULONG_MASK, "O_RDONLY" },
index 33d1825358d925841aa9ee1b52ce223245604eb6..f4bda84a9451c74682e87621022ca515cc90a58a 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2015-2019 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -11,7 +11,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined HAVE_SYS_FANOTIFY_H && defined HAVE_FANOTIFY_MARK && \
        defined __NR_fanotify_mark
@@ -68,11 +68,6 @@ struct strval {
        const char *str;
 };
 
-struct strval64 {
-       uint64_t val;
-       const char *str;
-};
-
 # define STR16 "0123456789abcdef"
 # define STR64 STR16 STR16 STR16 STR16
 
@@ -150,15 +145,16 @@ main(void)
                        "FAN_OPEN_PERM|"
                        "FAN_ACCESS_PERM|"
                        "FAN_OPEN_EXEC_PERM|"
+                       "FAN_DIR_MODIFY|"
                        "FAN_ONDIR|"
                        "FAN_EVENT_ON_CHILD|"
-                       "0xdeadfeedb7f8a000"
+                       "0xdeadfeedb7f0a000"
 # endif
 # if XLAT_VERBOSE
                        " */"
 # endif
                        },
-               { ARG_ULL_STR(0xffffffffb7f8a000)
+               { ARG_ULL_STR(0xffffffffb7f0a000)
 # if !XLAT_RAW
                        " /* FAN_??? */"
 # endif
index 118e5fea0db4ad90612d7db642ccc45030ceaaa7..ff0c64b5606d3b908786f9b96e1d299c2068791c 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_fchdir
 
index 4fa06727be63f3dfb49846cbd1bfda543de2ac1e..3bf2da6036b23c5eff4f35bf89337dfbd70a225a 100644 (file)
@@ -3,14 +3,14 @@
  *
  * Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_fchmod
 
 int
 main(void)
 {
-       static const char fname[] = "fchmod_test_file";
-
-       int fd = open(fname, O_CREAT|O_RDONLY, 0400);
-       if (fd < 0)
-               perror_msg_and_fail("open");
-
-       if (unlink(fname))
-               perror_msg_and_fail("unlink");
+       int fd = create_tmpfile(O_RDWR);
 
        long rc = syscall(__NR_fchmod, fd, 0600);
        printf("fchmod(%d, 0600) = %s\n", fd, sprintrc(rc));
index f2fa5dd0a1e62b15cb37074846a3c809bd2d2a98..3fdb5ef4c3027a3135ecf9b19b4d3693b3e010b2 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of fchmodat syscall.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_fchmodat
 
index 98bfd9deb9d16d38fcea99f13e78bc7e97273e19..bc5ca24c024618eff5f9b82fe39f1e3428ed0d0f 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_fchown
 
index 9d52f9a8c180fa8570e24c9305282d154dfa4c3e..9604aa0aac2e1d7b856802a7b77218594086ec32 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_fchown32
 
index 32167bc7a7ef41d130f4279f3bc0a54f4418128b..d790bd98ecabdf53cbac08705bd6fd3144e8103e 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of fchownat syscall.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 #include <fcntl.h>
 
 #if defined __NR_fchownat && defined AT_FDCWD && defined AT_SYMLINK_NOFOLLOW
diff --git a/tests-mx32/fcntl--pidns-translation.c b/tests-mx32/fcntl--pidns-translation.c
new file mode 100644 (file)
index 0000000..e249424
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "fcntl.c"
diff --git a/tests-mx32/fcntl--pidns-translation.gen.test b/tests-mx32/fcntl--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..7a93d8a
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fcntl--pidns-translation test_pidns -a8 -e trace=fcntl); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a8 -e trace=fcntl
index b21251711f87887b140c4c5feb16ea341ed41b06..ec18aa798c11481ee2440ec5bb964a32ff4ef7f9 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -13,6 +13,8 @@
 #include <unistd.h>
 #include <assert.h>
 #include "flock.h"
+#include "pidns.h"
+#include "scno.h"
 
 #define FILE_LEN 4096
 
@@ -48,12 +50,14 @@ test_flock_einval(const int cmd, const char *name)
        fl->l_len = (TYPEOF_FLOCK_OFF_T) 0xdefaced2cafef00dULL;
 
        invoke_test_syscall(0, cmd, fl);
+       pidns_print_leader();
        printf("%s(0, %s, {l_type=F_RDLCK, l_whence=SEEK_SET"
               ", l_start=%jd, l_len=%jd}) = %s\n", TEST_SYSCALL_STR, name,
               (intmax_t) fl->l_start, (intmax_t) fl->l_len, errstr);
 
        void *const bad_addr = (void *) fl + 1;
        invoke_test_syscall(0, cmd, bad_addr);
+       pidns_print_leader();
        printf("%s(0, %s, %p) = %s\n",
               TEST_SYSCALL_STR, name, bad_addr, errstr);
 }
@@ -72,12 +76,14 @@ test_flock64_einval(const int cmd, const char *name)
        fl->l_len = (TYPEOF_FLOCK_OFF_T) 0xdefaced2cafef00dULL;
 
        invoke_test_syscall(0, cmd, fl);
+       pidns_print_leader();
        printf("%s(0, %s, {l_type=F_RDLCK, l_whence=SEEK_SET"
               ", l_start=%jd, l_len=%jd}) = %s\n", TEST_SYSCALL_STR, name,
               (intmax_t) fl->l_start, (intmax_t) fl->l_len, errstr);
 
        void *const bad_addr = (void *) fl + 1;
        invoke_test_syscall(0, cmd, bad_addr);
+       pidns_print_leader();
        printf("%s(0, %s, %p) = %s\n",
               TEST_SYSCALL_STR, name, bad_addr, errstr);
 }
@@ -94,6 +100,7 @@ test_flock(void)
        fl->l_len = FILE_LEN;
 
        long rc = invoke_test_syscall(0, F_SETLK, fl);
+       pidns_print_leader();
        printf("%s(0, F_SETLK, {l_type=F_RDLCK, l_whence=SEEK_SET"
               ", l_start=0, l_len=%d}) = %s\n",
               TEST_SYSCALL_STR, FILE_LEN, errstr);
@@ -101,11 +108,13 @@ test_flock(void)
                return;
 
        invoke_test_syscall(0, F_GETLK, fl);
+       pidns_print_leader();
        printf("%s(0, F_GETLK, {l_type=F_UNLCK, l_whence=SEEK_SET"
               ", l_start=0, l_len=%d, l_pid=0}) = 0\n",
               TEST_SYSCALL_STR, FILE_LEN);
 
        invoke_test_syscall(0, F_SETLKW, fl);
+       pidns_print_leader();
        printf("%s(0, F_SETLKW, {l_type=F_UNLCK, l_whence=SEEK_SET"
               ", l_start=0, l_len=%d}) = 0\n",
               TEST_SYSCALL_STR, FILE_LEN);
@@ -124,6 +133,7 @@ test_flock64_ofd(void)
        fl->l_len = FILE_LEN;
 
        long rc = invoke_test_syscall(0, F_OFD_SETLK, fl);
+       pidns_print_leader();
        printf("%s(0, F_OFD_SETLK, {l_type=F_RDLCK, l_whence=SEEK_SET"
               ", l_start=0, l_len=%d}) = %s\n",
               TEST_SYSCALL_STR, FILE_LEN, errstr);
@@ -131,11 +141,13 @@ test_flock64_ofd(void)
                return;
 
        invoke_test_syscall(0, F_OFD_GETLK, fl);
+       pidns_print_leader();
        printf("%s(0, F_OFD_GETLK, {l_type=F_UNLCK, l_whence=SEEK_SET"
               ", l_start=0, l_len=%d, l_pid=0}) = 0\n",
               TEST_SYSCALL_STR, FILE_LEN);
 
        invoke_test_syscall(0, F_OFD_SETLKW, fl);
+       pidns_print_leader();
        printf("%s(0, F_OFD_SETLKW, {l_type=F_UNLCK, l_whence=SEEK_SET"
               ", l_start=0, l_len=%d}) = 0\n",
               TEST_SYSCALL_STR, FILE_LEN);
@@ -167,18 +179,21 @@ test_flock64(void)
 static long
 test_f_owner_ex_type_pid(const int cmd, const char *const cmd_name,
                         const int type, const char *const type_name,
-                        pid_t pid)
+                        enum pid_type pid_type, pid_t pid)
 {
        TAIL_ALLOC_OBJECT_CONST_PTR(struct_kernel_f_owner_ex, fo);
 
        fo->type = type;
        fo->pid = pid;
        long rc = invoke_test_syscall(0, cmd, fo);
-       printf("%s(0, %s, {type=%s, pid=%d}) = %s\n",
-              TEST_SYSCALL_STR, cmd_name, type_name, fo->pid, errstr);
+       pidns_print_leader();
+       printf("%s(0, %s, {type=%s, pid=%d%s}) = %s\n",
+              TEST_SYSCALL_STR, cmd_name, type_name,
+              fo->pid, pidns_pid2str(pid_type), errstr);
 
        void *bad_addr = (void *) fo + 1;
        invoke_test_syscall(0, cmd, bad_addr);
+       pidns_print_leader();
        printf("%s(0, %s, %p) = %s\n",
               TEST_SYSCALL_STR, cmd_name, bad_addr, errstr);
 
@@ -187,35 +202,35 @@ test_f_owner_ex_type_pid(const int cmd, const char *const cmd_name,
 
 static void
 test_f_owner_ex_umove_or_printaddr(const int type, const char *const type_name,
-                                  pid_t pid)
+                                  enum pid_type pid_type, pid_t pid)
 {
        long rc = test_f_owner_ex_type_pid(ARG_STR(F_SETOWN_EX),
-                                          type, type_name, pid);
+                                          type, type_name, pid_type, pid);
        if (!rc)
                test_f_owner_ex_type_pid(ARG_STR(F_GETOWN_EX),
-                                        type, type_name, pid);
+                                        type, type_name, pid_type, pid);
 }
 
 static void
 test_f_owner_ex(void)
 {
-       static const struct {
+       struct {
                int type;
                const char *type_name;
-               pid_t pid[2];
+               enum pid_type pid_type;
+               pid_t pid;
        } a[] = {
-               { ARG_STR(F_OWNER_TID), { 1234567890, 20 } },
-               { ARG_STR(F_OWNER_PID), { 1298126790, 30 } },
-               { ARG_STR(F_OWNER_PGRP), { 1294567890, 40 } }
+               { ARG_STR(F_OWNER_TID), PT_NONE, 1234567890 },
+               { ARG_STR(F_OWNER_PID), PT_NONE, 1234567890 },
+               { ARG_STR(F_OWNER_PGRP), PT_NONE, 1234567890 },
+               { ARG_STR(F_OWNER_TID), PT_TID, syscall(__NR_gettid) },
+               { ARG_STR(F_OWNER_PID), PT_TGID, getpid() },
+               { ARG_STR(F_OWNER_PGRP), PT_PGID, getpgid(0) },
        };
 
-       for (unsigned int i = 0; i < ARRAY_SIZE(a); i++) {
-               for (unsigned int j = 0; j < ARRAY_SIZE(a[0].pid); j++) {
-                       test_f_owner_ex_umove_or_printaddr(a[i].type,
-                                                          a[i].type_name,
-                                                          a[i].pid[j]);
-               }
-       }
+       for (unsigned int i = 0; i < ARRAY_SIZE(a); i++)
+               test_f_owner_ex_umove_or_printaddr(a[i].type, a[i].type_name,
+                       a[i].pid_type, a[i].pid);
 }
 #endif /* TEST_F_OWNER_EX */
 
@@ -228,6 +243,23 @@ struct fcntl_cmd_check {
        void (*print_flags)(long rc);
 };
 
+static void
+test_xetown(void)
+{
+       const int pid = getpid();
+       const char *pid_str = pidns_pid2str(PT_TGID);
+
+       invoke_test_syscall(0, F_SETOWN, (void *) (intptr_t) pid);
+       pidns_print_leader();
+       printf("%s(0, F_SETOWN, %d%s) = %s\n",
+               TEST_SYSCALL_STR, pid, pid_str, errstr);
+
+       invoke_test_syscall(0, F_GETOWN, NULL);
+       pidns_print_leader();
+       printf("%s(0, F_GETOWN) = %d%s\n",
+               TEST_SYSCALL_STR, pid, pid_str);
+}
+
 static void
 print_retval_flags(const struct fcntl_cmd_check *check, long rc)
 {
@@ -243,12 +275,14 @@ static void
 test_other_set_cmd(const struct fcntl_cmd_check *check)
 {
        invoke_test_syscall(check->fd, check->cmd, (void *) check->arg);
+       pidns_print_leader();
        printf("%s(%d, %s, %s) = %s\n",
               TEST_SYSCALL_STR, check->fd,
               check->cmd_str, check->arg_str, errstr);
 
        /* bad file fd */
        invoke_test_syscall(-1, check->cmd, (void *) check->arg);
+       pidns_print_leader();
        printf("%s(-1, %s, %s) = %s\n",
               TEST_SYSCALL_STR, check->cmd_str,
               check->arg_str, errstr);
@@ -258,12 +292,14 @@ static void
 test_other_get_cmd(const struct fcntl_cmd_check *check)
 {
        long rc = invoke_test_syscall(check->fd, check->cmd, NULL);
+       pidns_print_leader();
        printf("%s(%d, %s) = ",
               TEST_SYSCALL_STR, check->fd, check->cmd_str);
        print_retval_flags(check, rc);
 
        /* bad file fd */
        invoke_test_syscall(-1, check->cmd, NULL);
+       pidns_print_leader();
        printf("%s(-1, %s) = %s\n",
               TEST_SYSCALL_STR, check->cmd_str, errstr);
 }
@@ -315,7 +351,6 @@ test_fcntl_others(void)
 {
        static const struct fcntl_cmd_check set_checks[] = {
                { 0, ARG_STR(F_SETFD), ARG_STR(FD_CLOEXEC) },
-               { 0, ARG_STR(F_SETOWN), ARG_STR(20) },
 #ifdef F_SETPIPE_SZ
                { 0, ARG_STR(F_SETPIPE_SZ), ARG_STR(4097) },
 #endif
@@ -336,7 +371,6 @@ test_fcntl_others(void)
        static const struct fcntl_cmd_check get_checks[] = {
                { 0, ARG_STR(F_GETFD), .print_flags = print_flags_getfd },
                { 1, ARG_STR(F_GETFD), .print_flags = print_flags_getfd },
-               { 0, ARG_STR(F_GETOWN) },
 #ifdef F_GETPIPE_SZ
                { 0, ARG_STR(F_GETPIPE_SZ) },
 #endif
@@ -352,20 +386,16 @@ test_fcntl_others(void)
 static void
 create_sample(void)
 {
-       char fname[] = TEST_SYSCALL_STR "_XXXXXX";
-
        (void) close(0);
-       if (mkstemp(fname))
-               perror_msg_and_fail("mkstemp: %s", fname);
-       if (unlink(fname))
-               perror_msg_and_fail("unlink: %s", fname);
-       if (ftruncate(0, FILE_LEN))
+       if (ftruncate(create_tmpfile(O_RDWR), FILE_LEN))
                perror_msg_and_fail("ftruncate");
 }
 
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        create_sample();
        test_flock();
        test_flock64();
@@ -373,7 +403,9 @@ main(void)
        test_f_owner_ex();
 #endif
        test_fcntl_others();
+       test_xetown();
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
index bd9ffbdd5b14f2ff7f890bcbc5e688837c7f283e..ca9c737ba42a1daea4a89effb261b9e7547e24f4 100644 (file)
@@ -1,13 +1,13 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_fcntl
 
@@ -24,6 +24,7 @@ test_flock64_undecoded(const int cmd, const char *name)
                .l_len = 0xdefaced2cafef00dULL
        };
        invoke_test_syscall(0, cmd, &fl);
+       pidns_print_leader();
        printf("%s(0, %s, %p) = %s\n",
               TEST_SYSCALL_STR, name, &fl, errstr);
 }
diff --git a/tests-mx32/fcntl64--pidns-translation.c b/tests-mx32/fcntl64--pidns-translation.c
new file mode 100644 (file)
index 0000000..c6fdadd
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "fcntl64.c"
diff --git a/tests-mx32/fcntl64--pidns-translation.gen.test b/tests-mx32/fcntl64--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..3c46451
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fcntl64--pidns-translation test_pidns -a8 -e trace=fcntl64); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a8 -e trace=fcntl64
index 97277b2f808b55953813f1ad7099c5f3ace512b9..07df7224baedf3bd123fe13f5c15cb556e8cdd58 100644 (file)
@@ -1,13 +1,13 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_fcntl64
 
@@ -27,6 +27,7 @@ test_flock64_lk64(void)
        fl->l_len = FILE_LEN;
 
        long rc = invoke_test_syscall(0, F_SETLK64, fl);
+       pidns_print_leader();
        printf("%s(0, F_SETLK64, {l_type=F_RDLCK, l_whence=SEEK_SET"
               ", l_start=0, l_len=%d}) = %s\n",
               TEST_SYSCALL_STR, FILE_LEN, errstr);
@@ -35,11 +36,13 @@ test_flock64_lk64(void)
                return;
 
        invoke_test_syscall(0, F_GETLK64, fl);
+       pidns_print_leader();
        printf("%s(0, F_GETLK64, {l_type=F_UNLCK, l_whence=SEEK_SET"
               ", l_start=0, l_len=%d, l_pid=0}) = 0\n",
               TEST_SYSCALL_STR, FILE_LEN);
 
        invoke_test_syscall(0, F_SETLKW64, fl);
+       pidns_print_leader();
        printf("%s(0, F_SETLKW64, {l_type=F_UNLCK, l_whence=SEEK_SET"
               ", l_start=0, l_len=%d}) = 0\n",
               TEST_SYSCALL_STR, FILE_LEN);
index f4c8d55f03aa72a0baad01e690feef70d62fbf22..a1f2ba291730dabb9ffd931d9bad6bf98196f3af 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_fdatasync
 
index 38cd5af81428d11bc882b0c6527a248d2edbe684..edabde6175020b043189ed844a2dc2792ce680df 100644 (file)
@@ -3,14 +3,14 @@
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_name_to_handle_at && defined __NR_open_by_handle_at
 
index 7a2a905c0ea5a5a2556c13d94262b6105b0e636a..d0efb2106e807c4b6d3c9f36916b01049e59f357 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -11,6 +11,7 @@
 
 # include <stdio.h>
 # include <sys/ioctl.h>
+# include <linux/types.h>
 # include <linux/fiemap.h>
 # include <linux/fs.h>
 # include "xlat.h"
index 3e09d597e373d8050919280df4f1a6619df66fc5..f82314c20a98f32f8d8a8d0b3dc23bd60a212da5 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2019 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -24,3 +24,39 @@ fill_memory(void *ptr, size_t size)
 {
        fill_memory_ex(ptr, size, 0x80, 0x80);
 }
+
+void
+fill_memory16_ex(void *ptr, size_t size, uint16_t start,
+                unsigned int period)
+{
+       uint16_t *p = ptr;
+       size_t i;
+
+       for (i = 0; i < size / sizeof(uint16_t); i++) {
+               p[i] = start + i % period;
+       }
+}
+
+void
+fill_memory16(void *ptr, size_t size)
+{
+       fill_memory16_ex(ptr, size, 0x80c0, 0x8000);
+}
+
+void
+fill_memory32_ex(void *ptr, size_t size, uint32_t start,
+                unsigned int period)
+{
+       uint32_t *p = ptr;
+       size_t i;
+
+       for (i = 0; i < size / sizeof(uint32_t); i++) {
+               p[i] = start + i % period;
+       }
+}
+
+void
+fill_memory32(void *ptr, size_t size)
+{
+       fill_memory32_ex(ptr, size, 0x80a0c0e0, 0x80000000);
+}
diff --git a/tests-mx32/filter_seccomp-flag.c b/tests-mx32/filter_seccomp-flag.c
new file mode 100644 (file)
index 0000000..480db89
--- /dev/null
@@ -0,0 +1,85 @@
+/*
+ * Check that syscall numbers do not conflict with seccomp filter flags.
+ *
+ * Copyright (c) 2019 Paul Chaignon <paul.chaignon@gmail.com>
+ * Copyright (c) 2018-2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "arch_defs.h"
+#include "sysent.h"
+#include "scno.h"
+
+/* PERSONALITY*_AUDIT_ARCH definitions depend on AUDIT_ARCH_* constants.  */
+#ifdef PERSONALITY0_AUDIT_ARCH
+# include <linux/audit.h>
+# define XLAT_MACROS_ONLY
+#  include "xlat/elf_em.h"
+#  include "xlat/audit_arch.h"
+# undef XLAT_MACROS_ONLY
+#endif
+
+/* Define these shorthand notations to simplify the syscallent files. */
+#include "sysent_shorthand_defs.h"
+
+const struct_sysent sysent0[] = {
+#include "syscallent.h"
+};
+
+#if SUPPORTED_PERSONALITIES > 1
+const struct_sysent sysent1[] = {
+# include "syscallent1.h"
+};
+#endif
+
+#if SUPPORTED_PERSONALITIES > 2
+const struct_sysent sysent2[] = {
+# include "syscallent2.h"
+};
+#endif
+
+const unsigned int nsyscall_vec[SUPPORTED_PERSONALITIES] = {
+       ARRAY_SIZE(sysent0),
+#if SUPPORTED_PERSONALITIES > 1
+       ARRAY_SIZE(sysent1),
+#endif
+#if SUPPORTED_PERSONALITIES > 2
+       ARRAY_SIZE(sysent2),
+#endif
+};
+
+struct audit_arch_t {
+       unsigned int arch;
+       unsigned int flag;
+};
+
+static const struct audit_arch_t audit_arch_vec[SUPPORTED_PERSONALITIES] = {
+#if SUPPORTED_PERSONALITIES > 1
+       PERSONALITY0_AUDIT_ARCH,
+       PERSONALITY1_AUDIT_ARCH,
+# if SUPPORTED_PERSONALITIES > 2
+       PERSONALITY2_AUDIT_ARCH,
+# endif
+#endif
+};
+
+int
+main(void)
+{
+       for (unsigned int p = 0; p < SUPPORTED_PERSONALITIES; ++p) {
+               if (!audit_arch_vec[p].flag)
+                       continue;
+               for (unsigned int nr = 1; nr < nsyscall_vec[p]; ++nr) {
+                       if (!(audit_arch_vec[p].flag & nr))
+                               continue;
+                       error_msg_and_fail("system call number %u of"
+                                          " personality %u conflicts with"
+                                          " seccomp filter flag %#x",
+                                          nr, p, audit_arch_vec[p].flag);
+               }
+       }
+       return 0;
+}
diff --git a/tests-mx32/filter_seccomp-flag.gen.test b/tests-mx32/filter_seccomp-flag.gen.test
new file mode 100755 (executable)
index 0000000..b1185be
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (filter_seccomp-flag ../$NAME ); do not edit.
+. "${srcdir=.}/init.sh"
+../$NAME 
diff --git a/tests-mx32/filter_seccomp-perf.c b/tests-mx32/filter_seccomp-perf.c
new file mode 100644 (file)
index 0000000..742e1eb
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * Check seccomp filter performance.
+ *
+ * Copyright (c) 2019 Paul Chaignon <paul.chaignon@gmail.com>
+ * Copyright (c) 2018-2019 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <signal.h>
+#include <stdbool.h>
+#include <stdio.h>
+#include <unistd.h>
+
+static volatile bool stop = false;
+
+static void
+handler(int signo)
+{
+       stop = true;
+}
+
+int
+main(void)
+{
+       unsigned int i;
+       int rc = 0;
+
+       signal(SIGALRM, handler);
+       alarm(1);
+
+       for (i = 0; !stop; i++) {
+               rc |= chdir(".");
+       }
+       printf("%d\n", i);
+       return rc;
+}
diff --git a/tests-mx32/filter_seccomp-perf.test b/tests-mx32/filter_seccomp-perf.test
new file mode 100755 (executable)
index 0000000..149d704
--- /dev/null
@@ -0,0 +1,27 @@
+#!/bin/sh
+#
+# Check seccomp filter performance.
+#
+# Copyright (c) 2019 Paul Chaignon <paul.chaignon@gmail.com>
+# Copyright (c) 2018-2019 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/init.sh"
+. "${srcdir=.}/filter_seccomp.sh"
+
+args="-f -qq -e signal=none -e trace=fchdir ../$NAME"
+num_regular="$(run_strace               $args)"
+mv "$LOG" "$LOG.regular"
+num_seccomp="$(run_strace --seccomp-bpf $args)"
+mv "$LOG" "$LOG.seccomp"
+match_diff "$LOG.regular" "$LOG.seccomp"
+
+min_ratio=6
+# With seccomp filter enabled, we should be able to complete
+# at least $min_ratio times more chdir system calls.
+ratio="$((num_seccomp / num_regular))"
+if [ "$ratio" -lt "$min_ratio" ]; then
+       fail_ "Only $ratio times more syscalls performed with seccomp filter enabled, expected at least $min_ratio times speedup"
+fi
diff --git a/tests-mx32/filter_seccomp.gen.test b/tests-mx32/filter_seccomp.gen.test
new file mode 100755 (executable)
index 0000000..d41da05
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (filter_seccomp . "${srcdir=.}/filter_seccomp.sh"; test_prog_set --seccomp-bpf -f); do not edit.
+. "${srcdir=.}/init.sh"
+. "${srcdir=.}/filter_seccomp.sh"; test_prog_set --seccomp-bpf -f
diff --git a/tests-mx32/filter_seccomp.in b/tests-mx32/filter_seccomp.in
new file mode 100644 (file)
index 0000000..76e4d7e
--- /dev/null
@@ -0,0 +1,4 @@
+fork-f -a26 -qq -e signal=none -e trace=chdir
+vfork-f        -a26 -qq -e signal=none -e trace=chdir
+fork-f -a26 -qq -e signal=none -e trace=chdir,%memory,%ipc,%pure,%signal,%network -e status=failed
+status-none-f  -e trace=!ptrace -e status=none
diff --git a/tests-mx32/filter_seccomp.sh b/tests-mx32/filter_seccomp.sh
new file mode 100755 (executable)
index 0000000..cf5dee5
--- /dev/null
@@ -0,0 +1,14 @@
+#!/bin/sh
+#
+# Skip the test if seccomp filter is not available.
+#
+# Copyright (c) 2018-2019 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+$STRACE --seccomp-bpf -f -e trace=fchdir / > /dev/null 2> "$LOG" ||:
+if grep -x "[^:]*strace: seccomp filter is requested but unavailable" \
+   "$LOG" > /dev/null; then
+       skip_ 'seccomp filter is unavailable'
+fi
index 53bf1b1cfbc3a8f9e3b48ab6a6445196e266e03b..00d9f47a16da71865169aaeb9a1b13f6f7c081f3 100755 (executable)
@@ -3,7 +3,7 @@
 # Check descriptor set parsing syntax.
 #
 # Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -14,8 +14,10 @@ check_fd_qualify()
 {
        check_e "invalid descriptor '$1'" -e"read=$2"
        check_e "invalid descriptor '$1'" -e "read=$2"
+       check_e "invalid descriptor '$1'" "--read=$2"
        check_e "invalid descriptor '$1'" -e"write=$2"
        check_e "invalid descriptor '$1'" -e "write=$2"
+       check_e "invalid descriptor '$1'" "--write=$2"
 }
 
 for arg in '' , ,, ,,, ; do
index fe42edbed7ad69c86c64548fd2e802cff34d5d78..8dd83cdeecaa65819cfdd594b799df48680a52a4 100755 (executable)
@@ -4,6 +4,7 @@
 #
 # Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
 # Copyright (c) 2017 Nikolay Marchuk <marchuk.nikolay.a@gmail.com>
+# Copyright (c) 2018-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -16,37 +17,51 @@ check_syscall()
 
        check_e "invalid system call '$1'" -e "$2"
        check_e "invalid system call '$1'" -etrace="$2"
+       check_e "invalid system call '$1'" --trace="$2"
        check_e "invalid system call '$1'" -e trace="$2"
 
        check_e "invalid system call '$1'" -eabbrev="$2"
+       check_e "invalid system call '$1'" --abbrev="$2"
        check_e "invalid system call '$1'" -e abbrev="$2"
 
        check_e "invalid system call '$1'" -everbose="$2"
+       check_e "invalid system call '$1'" --verbose="$2"
        check_e "invalid system call '$1'" -e verbose="$2"
 
        check_e "invalid system call '$1'" -eraw="$2"
+       check_e "invalid system call '$1'" --raw="$2"
        check_e "invalid system call '$1'" -e raw="$2"
 
        check_e "invalid system call '$1'" -einject="$2"
+       check_e "invalid system call '$1'" --inject="$2"
        check_e "invalid system call '$1'" -e inject="$2"
        check_e "invalid system call '$1'" -einject="$2:"
        check_e "invalid system call '$1'" -einject="$2::"
        check_e "invalid system call '$1'" -einject="$2:::"
+       check_e "invalid system call '$1'" --inject="$2:"
+       check_e "invalid system call '$1'" --inject="$2::"
+       check_e "invalid system call '$1'" --inject="$2:::"
        check_e "invalid system call '$1'" -e inject="$2:"
        check_e "invalid system call '$1'" -e inject="$2::"
        check_e "invalid system call '$1'" -e inject="$2:::"
        check_e "invalid system call '$1'" -einject="$2:when=3"
+       check_e "invalid system call '$1'" --inject="$2:when=3"
        check_e "invalid system call '$1'" -e inject="$2:when=3"
 
        check_e "invalid system call '$1'" -efault="$2"
+       check_e "invalid system call '$1'" --fault="$2"
        check_e "invalid system call '$1'" -e fault="$2"
        check_e "invalid system call '$1'" -efault="$2:"
        check_e "invalid system call '$1'" -efault="$2::"
        check_e "invalid system call '$1'" -efault="$2:::"
+       check_e "invalid system call '$1'" --fault="$2:"
+       check_e "invalid system call '$1'" --fault="$2::"
+       check_e "invalid system call '$1'" --fault="$2:::"
        check_e "invalid system call '$1'" -e fault="$2:"
        check_e "invalid system call '$1'" -e fault="$2::"
        check_e "invalid system call '$1'" -e fault="$2:::"
        check_e "invalid system call '$1'" -efault="$2:when=4"
+       check_e "invalid system call '$1'" --fault="$2:when=4"
        check_e "invalid system call '$1'" -e fault="$2:when=4"
 }
 
index 64e6df02172cb0d44fbb027ccdcbdbc6dc36e23b..7c775658a89da3a5bfc3d9d7a296815b29e39b69 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of finit_module syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,6 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
 #include "scno.h"
 
 #if defined(__NR_finit_module)
index 4f0444097b0bd4d16964d4c4bd2fbfa2ebe8e583..1253616f4cf14394a3fa703240adb432e0eb591d 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_flock
 
diff --git a/tests-mx32/fork--pidns-translation.awk b/tests-mx32/fork--pidns-translation.awk
new file mode 100644 (file)
index 0000000..ef6858f
--- /dev/null
@@ -0,0 +1,15 @@
+/fork/ {
+        match($0, "([0-9]+) in strace\x27s PID NS", a);
+        if (a[1])
+                fork_pid = a[1]
+}
+
+/exited with 0/ {
+        if (!exit_pid)
+                exit_pid = $1
+}
+
+END {
+        if (!fork_pid || !exit_pid || fork_pid != exit_pid)
+                exit 1
+}
diff --git a/tests-mx32/fork--pidns-translation.c b/tests-mx32/fork--pidns-translation.c
new file mode 100644 (file)
index 0000000..1d490ce
--- /dev/null
@@ -0,0 +1,78 @@
+/*
+ * Test PID namespace translation
+ *
+ * Copyright (c) 2020 Ákos Uzonyi <uzonyi.akos@gmail.com>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+#include "pidns.h"
+
+#ifdef __NR_fork
+
+# include <errno.h>
+# include <limits.h>
+# include <sched.h>
+# include <signal.h>
+# include <stdio.h>
+# include <stdlib.h>
+# include <sys/wait.h>
+# include <unistd.h>
+# include <linux/sched.h>
+# include "nsfs.h"
+
+# ifndef CLONE_NEWUSER
+#  define CLONE_NEWUSER 0x10000000
+# endif
+
+# ifndef CLONE_NEWPID
+#  define CLONE_NEWPID 0x20000000
+# endif
+
+static int
+fork_chain(int depth)
+{
+       if (!depth)
+               return 0;
+
+       int pid = syscall(__NR_fork);
+       if (pid < 0)
+               return errno;
+
+       if (!pid)
+               _exit(fork_chain(depth - 1));
+
+       int status;
+       if (wait(&status) < 0)
+               return errno;
+
+       if (!WIFEXITED(status))
+               return -1;
+
+       return WEXITSTATUS(status);
+}
+
+int main(void)
+{
+       check_ns_ioctl();
+
+       if (unshare(CLONE_NEWPID | CLONE_NEWUSER) < 0) {
+               if (errno == EPERM)
+                       perror_msg_and_skip("unshare");
+
+               perror_msg_and_fail("unshare");
+       }
+
+       errno = fork_chain(2);
+       if (errno)
+               perror("fork_chain");
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_fork")
+
+#endif
diff --git a/tests-mx32/fork--pidns-translation.test b/tests-mx32/fork--pidns-translation.test
new file mode 100755 (executable)
index 0000000..24cc593
--- /dev/null
@@ -0,0 +1,14 @@
+#!/bin/sh
+#
+# Check pidns translation of fork's return value.
+#
+# Copyright (c) 2020 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+. "${srcdir=.}/init.sh"
+
+run_prog
+run_strace -a6 --pidns-translation -f -e trace=fork $args
+match_awk
diff --git a/tests-mx32/fsconfig-P.c b/tests-mx32/fsconfig-P.c
new file mode 100644 (file)
index 0000000..b763332
--- /dev/null
@@ -0,0 +1,2 @@
+#define PATH_TRACING
+#include "fsconfig.c"
diff --git a/tests-mx32/fsconfig-P.gen.test b/tests-mx32/fsconfig-P.gen.test
new file mode 100755 (executable)
index 0000000..36001fa
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fsconfig-P -s300 -y -P /dev/full -e trace=fsconfig); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -s300 -y -P /dev/full -e trace=fsconfig
diff --git a/tests-mx32/fsconfig.c b/tests-mx32/fsconfig.c
new file mode 100644 (file)
index 0000000..2399a6a
--- /dev/null
@@ -0,0 +1,298 @@
+/*
+ * Check decoding of fsconfig syscall.
+ *
+ * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_fsconfig
+
+# include <fcntl.h>
+# include <limits.h>
+# include <stdio.h>
+# include <stdint.h>
+# include <unistd.h>
+
+# define XLAT_MACROS_ONLY
+# include "xlat/fsconfig_cmds.h"
+# undef XLAT_MACROS_ONLY
+
+static const char *errstr;
+
+static long
+k_fsconfig(const unsigned int fs_fd,
+          const unsigned int cmd,
+          const void *key,
+          const void *value,
+          const unsigned int aux)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = fill | fs_fd;
+       const kernel_ulong_t arg2 = fill | cmd;
+       const kernel_ulong_t arg3 = (uintptr_t) key;
+       const kernel_ulong_t arg4 = (uintptr_t) value;
+       const kernel_ulong_t arg5 = fill | aux;
+       const long rc = syscall(__NR_fsconfig,
+                               arg1, arg2, arg3, arg4, arg5, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
+static const char path_full[] = "/dev/full";
+static const int max_string_size = 256;
+static const int max_blob_size = 300;
+static const int huge_blob_size = 1024 * 1024 + 1;
+static const char *fd_path;
+static const void *efault;
+static const char *empty;
+static char *fname;
+static char *key1;
+static char *key;
+static char *val1;
+static char *val;
+static char *blob1;
+static char *blob;
+static int fd;
+
+static void
+test_fsconfig_unknown(void)
+{
+       k_fsconfig(fd, 8, empty, val, -100);
+# ifndef PATH_TRACING
+       printf("fsconfig(%d<%s>, 0x8 /* FSCONFIG_??? */, %p, %p, -100) = %s\n",
+              fd, fd_path, empty, val, errstr);
+# endif
+
+       k_fsconfig(-100, -1, empty, fd_path, fd);
+# ifndef PATH_TRACING
+       printf("fsconfig(-100, 0xffffffff /* FSCONFIG_??? */, %p, %p, %d)"
+              " = %s\n",
+              empty, fd_path, fd, errstr);
+# endif
+}
+
+static void
+test_fsconfig_cmd(const unsigned int cmd, const char *cmd_str)
+{
+       k_fsconfig(fd, cmd, empty, val, -100);
+# ifndef PATH_TRACING
+       printf("fsconfig(%d<%s>, %s, %p, %p, -100) = %s\n",
+              fd, fd_path, cmd_str, empty, val, errstr);
+# endif
+
+       k_fsconfig(-100, cmd, empty, fd_path, fd);
+# ifndef PATH_TRACING
+       printf("fsconfig(-100, %s, %p, %p, %d) = %s\n",
+              cmd_str, empty, fd_path, fd, errstr);
+# endif
+}
+
+static void
+test_fsconfig_set_flag(const unsigned int cmd, const char *cmd_str)
+{
+       k_fsconfig(fd, cmd, key, val, -100);
+# ifndef PATH_TRACING
+       printf("fsconfig(%d<%s>, %s, \"%s\", %p, -100) = %s\n",
+              fd, fd_path, cmd_str, key, val, errstr);
+# endif
+
+       k_fsconfig(fd, cmd, key1, val, -100);
+# ifndef PATH_TRACING
+       printf("fsconfig(%d<%s>, %s, \"%.*s\"..., %p, -100) = %s\n",
+              fd, fd_path, cmd_str, max_string_size, key1, val, errstr);
+# endif
+
+       k_fsconfig(-100, cmd, key, fd_path, fd);
+# ifndef PATH_TRACING
+       printf("fsconfig(-100, %s, \"%s\", %p, %d) = %s\n",
+              cmd_str, key, fd_path, fd, errstr);
+# endif
+}
+
+static void
+test_fsconfig_set_string(const unsigned int cmd, const char *cmd_str)
+{
+       k_fsconfig(fd, cmd, key, val, -100);
+# ifndef PATH_TRACING
+       printf("fsconfig(%d<%s>, %s, \"%s\", \"%s\", -100) = %s\n",
+              fd, fd_path, cmd_str, key, val, errstr);
+# endif
+
+       k_fsconfig(fd, cmd, key1, val1, -100);
+# ifndef PATH_TRACING
+       printf("fsconfig(%d<%s>, %s, \"%.*s\"..., \"%.*s\"..., -100) = %s\n",
+              fd, fd_path, cmd_str, max_string_size, key1, max_string_size, val1,
+              errstr);
+# endif
+
+       k_fsconfig(-100, cmd, key, fd_path, fd);
+# ifndef PATH_TRACING
+       printf("fsconfig(-100, %s, \"%s\", \"%s\", %d) = %s\n",
+              cmd_str, key, fd_path, fd, errstr);
+# endif
+}
+
+static void
+test_fsconfig_set_binary(const unsigned int cmd, const char *cmd_str)
+{
+       k_fsconfig(fd, cmd, key, blob, max_blob_size);
+# ifndef PATH_TRACING
+       printf("fsconfig(%d<%s>, %s, \"%s\", ", fd, fd_path, cmd_str, key);
+       print_quoted_hex(blob, max_blob_size);
+       printf(", %d) = %s\n", max_blob_size, errstr);
+# endif
+
+       k_fsconfig(fd, cmd, key1, blob1, max_blob_size + 1);
+# ifndef PATH_TRACING
+       printf("fsconfig(%d<%s>, %s, \"%.*s\"..., ",
+              fd, fd_path, cmd_str, max_string_size, key1);
+       print_quoted_hex(blob1, max_blob_size);
+       printf("..., %d) = %s\n", max_blob_size + 1, errstr);
+# endif
+
+       k_fsconfig(fd, cmd, key, empty, 0);
+# ifndef PATH_TRACING
+       printf("fsconfig(%d<%s>, %s, \"%s\", \"\", 0) = %s\n",
+              fd, fd_path, cmd_str, key, errstr);
+# endif
+
+       k_fsconfig(fd, cmd, key, fname, -100);
+# ifndef PATH_TRACING
+       printf("fsconfig(%d<%s>, %s, \"%s\", %p, -100) = %s\n",
+              fd, fd_path, cmd_str, key, fname, errstr);
+# endif
+
+       k_fsconfig(fd, cmd, key, fname, huge_blob_size);
+# ifndef PATH_TRACING
+       printf("fsconfig(%d<%s>, %s, \"%s\", %p, %d) = %s\n",
+              fd, fd_path, cmd_str, key, fname, huge_blob_size, errstr);
+# endif
+
+       k_fsconfig(-100, cmd, key, fd_path, sizeof(path_full));
+# ifndef PATH_TRACING
+       printf("fsconfig(-100, %s, \"%s\", ", cmd_str, key);
+       print_quoted_hex(fd_path, sizeof(path_full));
+       printf(", %d) = %s\n", (int) sizeof(path_full), errstr);
+# endif
+
+       k_fsconfig(-100, cmd, key, fname, fd);
+# ifndef PATH_TRACING
+       printf("fsconfig(-100, %s, \"%s\", ", cmd_str, key);
+       print_quoted_hex(fname, fd);
+       printf(", %d) = %s\n", fd, errstr);
+# endif
+}
+
+static void
+test_fsconfig_set_path(const unsigned int cmd, const char *cmd_str)
+{
+       fill_memory_ex(fname, PATH_MAX, '0', 10);
+       k_fsconfig(fd, cmd, key, fname, -100);
+# ifndef PATH_TRACING
+       printf("fsconfig(%d<%s>, %s, \"%s\", \"%.*s\"..., AT_FDCWD) = %s\n",
+              fd, fd_path, cmd_str, key, (int) PATH_MAX - 1, fname, errstr);
+# endif
+
+       fname[PATH_MAX - 1] = '\0';
+       k_fsconfig(fd, cmd, key, fname, -1);
+# ifndef PATH_TRACING
+       printf("fsconfig(%d<%s>, %s, \"%s\", \"%s\", -1) = %s\n",
+              fd, fd_path, cmd_str, key, fname, errstr);
+# endif
+
+       k_fsconfig(-100, cmd, key, empty, fd);
+       printf("fsconfig(-100, %s, \"%s\", \"\", %d<%s>) = %s\n",
+              cmd_str, key, fd, fd_path, errstr);
+
+       k_fsconfig(-1, cmd, 0, fd_path, -100);
+       printf("fsconfig(-1, %s, NULL, \"%s\", AT_FDCWD) = %s\n",
+              cmd_str, fd_path, errstr);
+
+       k_fsconfig(-1, cmd, efault, efault + 1, fd);
+       printf("fsconfig(-1, %s, %p, %p, %d<%s>) = %s\n",
+              cmd_str, efault, efault + 1, fd, fd_path, errstr);
+
+       k_fsconfig(-100, cmd, key, fname, -1);
+# ifndef PATH_TRACING
+       printf("fsconfig(-100, %s, \"%s\", \"%s\", -1) = %s\n",
+              cmd_str, key, fname, errstr);
+# endif
+}
+
+static void
+test_fsconfig_set_fd(const unsigned int cmd, const char *cmd_str)
+{
+       k_fsconfig(fd, cmd, key, val, -100);
+# ifndef PATH_TRACING
+       printf("fsconfig(%d<%s>, %s, \"%s\", %p, -100) = %s\n",
+              fd, fd_path, cmd_str, key, val, errstr);
+# endif
+
+       k_fsconfig(-100, cmd, key1, 0, fd);
+       printf("fsconfig(-100, %s, \"%.*s\"..., NULL, %d<%s>) = %s\n",
+              cmd_str, max_string_size, key1, fd, fd_path, errstr);
+
+       k_fsconfig(-1, cmd, efault, efault + 1, fd);
+       printf("fsconfig(-1, %s, %p, %p, %d<%s>) = %s\n",
+              cmd_str, efault, efault + 1, fd, fd_path, errstr);
+
+       k_fsconfig(-100, cmd, key, fd_path, -1);
+# ifndef PATH_TRACING
+       printf("fsconfig(-100, %s, \"%s\", %p, -1) = %s\n",
+              cmd_str, key, fd_path, errstr);
+# endif
+}
+
+int
+main(void)
+{
+       skip_if_unavailable("/proc/self/fd/");
+
+       fd_path = tail_memdup(path_full, sizeof(path_full));
+       efault = fd_path + sizeof(path_full);
+       empty = efault - 1;
+       fname = tail_alloc(PATH_MAX);
+       key1 = tail_alloc(max_string_size + 1);
+       key = key1 + 1;
+       val1 = tail_alloc(max_string_size + 1);
+       val = val1 + 1;
+       blob1 = tail_alloc(max_blob_size + 1);
+       blob = blob1 + 1;
+
+       fill_memory_ex(fname, PATH_MAX, '0', 10);
+       fill_memory_ex(key1, max_string_size, 'a', 'z' - 'a' + 1);
+       key1[max_string_size] = '\0';
+       fill_memory_ex(val1, max_string_size, 'A', 'Z' - 'A' + 1);
+       val1[max_string_size] = '\0';
+       fill_memory_ex(blob, max_blob_size, '0', 10);
+       blob[0] = 0;
+       blob1[0] = 0;
+        fd = open(fd_path, O_WRONLY);
+        if (fd < 0)
+                perror_msg_and_fail("open: %s", fd_path);
+
+       test_fsconfig_unknown();
+       test_fsconfig_set_flag(ARG_STR(FSCONFIG_SET_FLAG));
+       test_fsconfig_set_string(ARG_STR(FSCONFIG_SET_STRING));
+       test_fsconfig_set_binary(ARG_STR(FSCONFIG_SET_BINARY));
+       test_fsconfig_set_path(ARG_STR(FSCONFIG_SET_PATH));
+       test_fsconfig_set_path(ARG_STR(FSCONFIG_SET_PATH_EMPTY));
+       test_fsconfig_set_fd(ARG_STR(FSCONFIG_SET_FD));
+       test_fsconfig_cmd(ARG_STR(FSCONFIG_CMD_CREATE));
+       test_fsconfig_cmd(ARG_STR(FSCONFIG_CMD_RECONFIGURE));
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_fsconfig")
+
+#endif
diff --git a/tests-mx32/fsconfig.gen.test b/tests-mx32/fsconfig.gen.test
new file mode 100755 (executable)
index 0000000..f482be1
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fsconfig -s300 -y); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -s300 -y
diff --git a/tests-mx32/fsmount.c b/tests-mx32/fsmount.c
new file mode 100644 (file)
index 0000000..28b14a4
--- /dev/null
@@ -0,0 +1,97 @@
+/*
+ * Check decoding of fsmount syscall.
+ *
+ * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_fsmount
+
+# include <fcntl.h>
+# include <stdio.h>
+# include <stdint.h>
+# include <unistd.h>
+
+static const char *errstr;
+
+static long
+k_fsmount(const unsigned int fs_fd,
+         const unsigned int flags,
+         const unsigned int attr_flags)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = fill | fs_fd;
+       const kernel_ulong_t arg2 = fill | flags;
+       const kernel_ulong_t arg3 = fill | attr_flags;
+       const long rc = syscall(__NR_fsmount,
+                               arg1, arg2, arg3, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
+int
+main(void)
+{
+       skip_if_unavailable("/proc/self/fd/");
+
+       static const char path[] = "/dev/full";
+        int fd = open(path, O_WRONLY);
+        if (fd < 0)
+                perror_msg_and_fail("open: %s", path);
+
+       struct {
+               unsigned int val;
+               const char *str;
+       } flags[] = {
+               { ARG_STR(0) },
+               { 1, "FSMOUNT_CLOEXEC" },
+               { 2, "0x2 /* FSMOUNT_??? */" },
+               { 0xfffffffe, "0xfffffffe /* FSMOUNT_??? */" },
+               { -1, "FSMOUNT_CLOEXEC|0xfffffffe" }
+       },
+       attrs[] = {
+               { ARG_STR(0) },
+               { 1, "MOUNT_ATTR_RDONLY" },
+               { 0x10, "MOUNT_ATTR_NOATIME" },
+               { 0xbf, "MOUNT_ATTR_RDONLY|MOUNT_ATTR_NOSUID|MOUNT_ATTR_NODEV"
+                       "|MOUNT_ATTR_NOEXEC|MOUNT_ATTR_NOATIME"
+                       "|MOUNT_ATTR_STRICTATIME|MOUNT_ATTR_NODIRATIME" },
+               { 0x40, "0x40 /* MOUNT_ATTR_??? */" },
+               { 0xffffff40, "0xffffff40 /* MOUNT_ATTR_??? */" },
+               { -1, "MOUNT_ATTR_RDONLY|MOUNT_ATTR_NOSUID|MOUNT_ATTR_NODEV"
+                       "|MOUNT_ATTR_NOEXEC|MOUNT_ATTR_NOATIME"
+                       "|MOUNT_ATTR_STRICTATIME|MOUNT_ATTR_NODIRATIME"
+                       "|0xffffff40" }
+       };
+
+       for (unsigned int i = 0; i < ARRAY_SIZE(flags); ++i) {
+               for (unsigned int j = 0; j < ARRAY_SIZE(attrs); ++j) {
+                       k_fsmount(-1, flags[i].val, attrs[j].val);
+                       printf("fsmount(-1, %s, %s) = %s\n",
+                              flags[i].str, attrs[j].str, errstr);
+
+                       k_fsmount(-100, flags[i].val, attrs[j].val);
+                       printf("fsmount(-100, %s, %s) = %s\n",
+                              flags[i].str, attrs[j].str, errstr);
+
+                       k_fsmount(fd, flags[i].val, attrs[j].val);
+                       printf("fsmount(%d<%s>, %s, %s) = %s\n",
+                              fd, path, flags[i].str, attrs[j].str, errstr);
+               }
+       }
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_fsmount")
+
+#endif
diff --git a/tests-mx32/fsmount.gen.test b/tests-mx32/fsmount.gen.test
new file mode 100755 (executable)
index 0000000..aff762b
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fsmount -a18 -y); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a18 -y
diff --git a/tests-mx32/fsopen.c b/tests-mx32/fsopen.c
new file mode 100644 (file)
index 0000000..1d8af8b
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * Check decoding of fsopen syscall.
+ *
+ * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_fsopen
+
+# include <stdio.h>
+# include <stdint.h>
+# include <unistd.h>
+
+static const char *errstr;
+
+static long
+k_fsopen(const void *name, const unsigned int flags)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = (uintptr_t) name;
+       const kernel_ulong_t arg2 = fill | flags;
+       const long rc = syscall(__NR_fsopen, arg1, arg2, bad, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
+int
+main(void)
+{
+       char *const name1 = tail_alloc(DEFAULT_STRLEN + 2);
+       char *const name = name1 + 1;
+       const void *const efault = name + DEFAULT_STRLEN + 1;
+       const char *const empty = efault - 1;
+       fill_memory_ex(name1, DEFAULT_STRLEN + 1, '0', 10);
+       name1[DEFAULT_STRLEN + 1] = '\0';
+
+       k_fsopen(name, 0);
+       printf("fsopen(\"%s\", 0) = %s\n", name, errstr);
+
+       k_fsopen(name1, 1);
+       printf("fsopen(\"%.*s\"..., FSOPEN_CLOEXEC) = %s\n",
+              DEFAULT_STRLEN, name1, errstr);
+
+       k_fsopen(0, 2);
+       printf("fsopen(NULL, 0x2 /* FSOPEN_??? */) = %s\n", errstr);
+
+       k_fsopen(efault, 0xfffffffe);
+       printf("fsopen(%p, 0xfffffffe /* FSOPEN_??? */) = %s\n", efault, errstr);
+
+       k_fsopen(empty, -1);
+       printf("fsopen(\"\", FSOPEN_CLOEXEC|0xfffffffe) = %s\n", errstr);
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_fsopen")
+
+#endif
diff --git a/tests-mx32/fsopen.gen.test b/tests-mx32/fsopen.gen.test
new file mode 100755 (executable)
index 0000000..b4130f0
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fsopen -a35 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a35 
diff --git a/tests-mx32/fspick-P.c b/tests-mx32/fspick-P.c
new file mode 100644 (file)
index 0000000..f3d41eb
--- /dev/null
@@ -0,0 +1,2 @@
+#define PATH_TRACING
+#include "fspick.c"
diff --git a/tests-mx32/fspick-P.gen.test b/tests-mx32/fspick-P.gen.test
new file mode 100755 (executable)
index 0000000..98c0021
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fspick-P -a27 -y -P /dev/full -e trace=fspick); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27 -y -P /dev/full -e trace=fspick
diff --git a/tests-mx32/fspick.c b/tests-mx32/fspick.c
new file mode 100644 (file)
index 0000000..3f7f9d7
--- /dev/null
@@ -0,0 +1,109 @@
+/*
+ * Check decoding of fspick syscall.
+ *
+ * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_fspick
+
+# include <fcntl.h>
+# include <limits.h>
+# include <stdio.h>
+# include <stdint.h>
+# include <unistd.h>
+
+static const char *errstr;
+
+static long
+k_fspick(const unsigned int dfd,
+           const void *fname,
+           const unsigned int flags)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = fill | dfd;
+       const kernel_ulong_t arg2 = (uintptr_t) fname;
+       const kernel_ulong_t arg3 = fill | flags;
+       const long rc = syscall(__NR_fspick, arg1, arg2, arg3, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
+int
+main(void)
+{
+       skip_if_unavailable("/proc/self/fd/");
+
+       static const char path_full[] = "/dev/full";
+       const char *const path = tail_memdup(path_full, sizeof(path_full));
+       char *const fname = tail_alloc(PATH_MAX);
+       const void *const efault = fname + PATH_MAX;
+       const char *const empty = efault - 1;
+       fill_memory_ex(fname, PATH_MAX, '0', 10);
+
+        int dfd = open(path, O_WRONLY);
+        if (dfd < 0)
+                perror_msg_and_fail("open: %s", path);
+
+       k_fspick(-1, 0, 1);
+# ifndef PATH_TRACING
+       printf("fspick(-1, NULL, %s) = %s\n", "FSPICK_CLOEXEC", errstr);
+# endif
+
+       k_fspick(-100, fname, 0);
+# ifndef PATH_TRACING
+       printf("fspick(%s, \"%.*s\"..., 0) = %s\n",
+              "AT_FDCWD", (int) PATH_MAX - 1, fname, errstr);
+# endif
+
+       fname[PATH_MAX - 1] = '\0';
+       k_fspick(dfd, fname, 0xfffffff0);
+       printf("fspick(%d<%s>, \"%s\", %s) = %s\n",
+              dfd, path, fname, "0xfffffff0 /* FSPICK_??? */", errstr);
+
+       k_fspick(-1, efault, 0xf);
+# ifndef PATH_TRACING
+       printf("fspick(-1, %p, %s) = %s\n",
+              efault,
+              "FSPICK_CLOEXEC|FSPICK_SYMLINK_NOFOLLOW"
+              "|FSPICK_NO_AUTOMOUNT|FSPICK_EMPTY_PATH",
+              errstr);
+# endif
+
+       k_fspick(-1, empty, -1);
+# ifndef PATH_TRACING
+       printf("fspick(-1, \"\", %s|0xfffffff0) = %s\n",
+              "FSPICK_CLOEXEC|FSPICK_SYMLINK_NOFOLLOW"
+              "|FSPICK_NO_AUTOMOUNT|FSPICK_EMPTY_PATH",
+              errstr);
+# endif
+
+       if (k_fspick(-1, path, 0) < 0)
+               printf("fspick(-1, \"%s\", 0) = %s\n",
+                      path, errstr);
+       else
+               printf("fspick(-1, \"%s\", 0) = %s<%s>\n",
+                      path, errstr, path);
+
+       if (k_fspick(dfd, empty, 8) < 0)
+               printf("fspick(%d<%s>, \"\", %s) = %s\n",
+                      dfd, path, "FSPICK_EMPTY_PATH", errstr);
+       else
+               printf("fspick(%d<%s>, \"\", %s) = %s<%s>\n",
+                      dfd, path, "FSPICK_EMPTY_PATH", errstr, path);
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_fspick")
+
+#endif
diff --git a/tests-mx32/fspick.gen.test b/tests-mx32/fspick.gen.test
new file mode 100755 (executable)
index 0000000..a126198
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fspick -a27 -y); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27 -y
index 7a52e0cc79bd9f8b9c2eac6b0e453ab165c8534b..d0b5454dd6f2bcb572be0b5be1319772b4ce7f2b 100644 (file)
@@ -1,13 +1,13 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_fstat
 
index 5d30ca410faf3208b4fe388b716f5d19fa8f9a8a..2ce73a98d7c8131e68f202b1581a38ffd64615fe 100644 (file)
@@ -1,13 +1,13 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_fstat64
 
index 949463c9bb2c094a2f91b1760b6a29c1f2b431fa..965958ef1c1b8bf7b380c39d810e442f36a86cb5 100644 (file)
@@ -1,13 +1,13 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_fstatat64
 
index 8da5c7f2a7c6138e9318147a66861804428da5a0..a453ff222673cfd4e1d69c11aa92e302d7572e63 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fstatat64 -a32 -v -P stat.sample -P /dev/full); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fstatat64 -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
+run_strace_match_diff -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full
index f16094057ecb35f2cdf6e2ecfd0f088b1873c501..e3a38aa7960d04bd7859dd3166ce72d42d8dec1a 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_fstatfs
 
index 14da042a5b56386305863c642257d0b061c65418..95171ca297078e83ade30a63fede4a4db01dc7c4 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_fstatfs64
 
index 5624096b40a7b403ef278c0b7f226e531d702c59..2efc3395baf822ab1315103953becbec96b1e90f 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_fsync
 
index 6c77d4b1c405afff9d402cfdf9739dcdf3afd302..70f813f8cacdbe5a32ae8dc7636bdb73f86975f0 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_ftruncate
 
index b7e350b4166be2e4dd9a3550f167d1a143b7067f..ad7fc4716967bc57306be7550414095ca4474220 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_ftruncate64
 
index 47191f278e752f68627a0636fa20125a03fb9d9d..f246e22ad2ee08666ed6e5cc5858c2a1c9d274b8 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -8,7 +8,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_futex
 
@@ -495,7 +495,7 @@ main(int argc, char *argv[])
         *                 wake val2 processes waiting for uaddr2 in case
         *                 operation encoded in val3 (change of value at uaddr2
         *                 and comparison of previous value against provided
-        *                 constant) succeedes with value at uaddr2. Operation
+        *                 constant) succeeds with value at uaddr2. Operation
         *                 result is written to value of uaddr2 (in any case).
         * 1. uaddr   - futex address
         * 2. op      - FUTEX_WAKE_OP
index 8024f87b1a059436aaf42f6e0f4162df4457d235..5782f1f6317ce4de851e01338c78c9b060ec553b 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of futimesat syscall.
  *
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_futimesat
 
index e6d1fc7bac7fbb3c05cb103dc699ee187e6fd29d..e0a2952df7c2883ccc5967810429bdd18c1ad011 100644 (file)
@@ -1,5 +1,5 @@
 # Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in; do not edit.
-GEN_TESTS = _newselect.gen.test _newselect-P.gen.test accept.gen.test accept4.gen.test access.gen.test acct.gen.test add_key.gen.test adjtimex.gen.test aio.gen.test aio_pgetevents.gen.test alarm.gen.test bpf.gen.test bpf-obj_get_info_by_fd.gen.test bpf-obj_get_info_by_fd-prog.gen.test bpf-obj_get_info_by_fd-prog-v.gen.test bpf-obj_get_info_by_fd-v.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 dev-yy.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 fanotify_mark-Xabbrev.gen.test fanotify_mark-Xraw.gen.test fanotify_mark-Xverbose.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 fstat-Xabbrev.gen.test fstat-Xraw.gen.test fstat-Xverbose.gen.test fstat64.gen.test fstat64-Xabbrev.gen.test fstat64-Xraw.gen.test fstat64-Xverbose.gen.test fstatat64.gen.test fstatfs.gen.test fstatfs64.gen.test fsync.gen.test fsync-y.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 io_uring_enter.gen.test io_uring_register.gen.test io_uring_setup.gen.test ioctl_block.gen.test ioctl_dm.gen.test ioctl_dm-v.gen.test ioctl_evdev.gen.test ioctl_evdev-v.gen.test ioctl_inotify.gen.test ioctl_kvm_run.gen.test ioctl_kvm_run-v.gen.test ioctl_kvm_run_auxstr_vcpu.gen.test ioctl_loop.gen.test ioctl_loop-nv.gen.test ioctl_loop-v.gen.test ioctl_mtd.gen.test ioctl_nbd.gen.test ioctl_nsfs.gen.test ioctl_perf.gen.test ioctl_ptp.gen.test ioctl_random.gen.test ioctl_rtc.gen.test ioctl_rtc-v.gen.test ioctl_scsi.gen.test ioctl_sg_io_v3.gen.test ioctl_sg_io_v4.gen.test ioctl_sock_gifconf.gen.test ioctl_uffdio.gen.test ioctl_v4l2.gen.test ioperm.gen.test iopl.gen.test ioprio.gen.test ioprio-Xabbrev.gen.test ioprio-Xraw.gen.test ioprio-Xverbose.gen.test ip_mreq.gen.test ipc.gen.test ipc_msg.gen.test ipc_msg-Xabbrev.gen.test ipc_msg-Xraw.gen.test ipc_msg-Xverbose.gen.test ipc_msgbuf-Xabbrev.gen.test ipc_msgbuf-Xraw.gen.test ipc_msgbuf-Xverbose.gen.test ipc_sem.gen.test ipc_sem-Xabbrev.gen.test ipc_sem-Xraw.gen.test ipc_sem-Xverbose.gen.test ipc_shm.gen.test ipc_shm-Xabbrev.gen.test ipc_shm-Xraw.gen.test ipc_shm-Xverbose.gen.test kcmp.gen.test kcmp-y.gen.test kern_features.gen.test kernel_version.gen.test kernel_version-Xabbrev.gen.test kernel_version-Xraw.gen.test kernel_version-Xverbose.gen.test kexec_file_load.gen.test kexec_load.gen.test keyctl.gen.test keyctl-Xabbrev.gen.test keyctl-Xraw.gen.test keyctl-Xverbose.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 memfd_create-Xabbrev.gen.test memfd_create-Xraw.gen.test memfd_create-Xverbose.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 mmap-Xabbrev.gen.test mmap-Xraw.gen.test mmap-Xverbose.gen.test mmap64.gen.test mmap64-Xabbrev.gen.test mmap64-Xraw.gen.test mmap64-Xverbose.gen.test mmsg.gen.test mmsg-silent.gen.test mmsg_name.gen.test mmsg_name-v.gen.test modify_ldt.gen.test mount.gen.test mount-Xabbrev.gen.test mount-Xraw.gen.test mount-Xverbose.gen.test move_pages.gen.test move_pages-Xabbrev.gen.test move_pages-Xraw.gen.test move_pages-Xverbose.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-packet_mreq.gen.test net-packet_mreq-Xabbrev.gen.test net-packet_mreq-Xraw.gen.test net-packet_mreq-Xverbose.gen.test net-sockaddr.gen.test net-tpacket_req.gen.test net-tpacket_stats.gen.test net-yy-inet6.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 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.gen.test nlattr_br_port_msg.gen.test nlattr_crypto_user_alg.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_af_spec.gen.test nlattr_ifla_brport.gen.test nlattr_ifla_linkinfo.gen.test nlattr_ifla_port.gen.test nlattr_ifla_xdp.gen.test nlattr_inet_diag_msg.gen.test nlattr_inet_diag_req_compat.gen.test nlattr_inet_diag_req_v2.gen.test nlattr_mdba_mdb_entry.gen.test nlattr_mdba_router_port.gen.test nlattr_ndmsg.gen.test nlattr_ndtmsg.gen.test nlattr_netconfmsg.gen.test nlattr_netlink_diag_msg.gen.test nlattr_nlmsgerr.gen.test nlattr_packet_diag_msg.gen.test nlattr_rtgenmsg.gen.test nlattr_rtmsg.gen.test nlattr_smc_diag_msg.gen.test nlattr_tc_stats.gen.test nlattr_tca_stab.gen.test nlattr_tcamsg.gen.test nlattr_tcmsg.gen.test nlattr_unix_diag_msg.gen.test old_mmap.gen.test old_mmap-P.gen.test old_mmap-Xabbrev.gen.test old_mmap-Xraw.gen.test old_mmap-Xverbose.gen.test old_mmap-v-none.gen.test oldfstat.gen.test oldlstat.gen.test oldselect.gen.test oldselect-P.gen.test oldselect-efault.gen.test oldselect-efault-P.gen.test oldstat.gen.test open.gen.test openat.gen.test orphaned_process_group.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 personality-Xabbrev.gen.test personality-Xraw.gen.test personality-Xverbose.gen.test pidfd_send_signal.gen.test pipe2.gen.test pkey_alloc.gen.test pkey_free.gen.test pkey_mprotect.gen.test ppoll.gen.test ppoll-P.gen.test ppoll-v.gen.test pread64-pwrite64.gen.test preadv.gen.test preadv-pwritev.gen.test preadv2-pwritev2.gen.test printpath-umovestr.gen.test printpath-umovestr-peekdata.gen.test printpath-umovestr-undumpable.gen.test printsignal-Xabbrev.gen.test printsignal-Xraw.gen.test printsignal-Xverbose.gen.test printstr.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 ptrace_syscall_info.gen.test pwritev.gen.test quotactl.gen.test quotactl-Xabbrev.gen.test quotactl-Xraw.gen.test quotactl-Xverbose.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 remap_file_pages-Xabbrev.gen.test remap_file_pages-Xraw.gen.test remap_file_pages-Xverbose.gen.test rename.gen.test renameat.gen.test renameat2.gen.test request_key.gen.test riscv_flush_icache.gen.test rmdir.gen.test rt_sigpending.gen.test rt_sigprocmask.gen.test rt_sigqueueinfo.gen.test rt_sigreturn.gen.test rt_sigsuspend.gen.test rt_sigtimedwait.gen.test rt_tgsigqueueinfo.gen.test s390_guarded_storage.gen.test s390_guarded_storage-v.gen.test s390_pci_mmio_read_write.gen.test s390_runtime_instr.gen.test s390_sthyi.gen.test s390_sthyi-v.gen.test sched.gen.test sched_get_priority_mxx.gen.test sched_rr_get_interval.gen.test sched_xetaffinity.gen.test sched_xetattr.gen.test sched_xetparam.gen.test sched_xetscheduler.gen.test sched_yield.gen.test seccomp-filter.gen.test seccomp-filter-v.gen.test seccomp_get_action_avail.gen.test select.gen.test select-P.gen.test semop.gen.test sendfile.gen.test sendfile64.gen.test set_mempolicy.gen.test setdomainname.gen.test setfsgid.gen.test setfsgid32.gen.test setfsuid.gen.test setfsuid32.gen.test setgid.gen.test setgid32.gen.test setgroups.gen.test setgroups32.gen.test sethostname.gen.test setns.gen.test setregid.gen.test setregid32.gen.test setresgid.gen.test setresgid32.gen.test setresuid.gen.test setresuid32.gen.test setreuid.gen.test setreuid32.gen.test setrlimit.gen.test setrlimit-Xabbrev.gen.test setrlimit-Xraw.gen.test setrlimit-Xverbose.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_error.gen.test so_linger.gen.test so_peercred.gen.test so_peercred-Xabbrev.gen.test so_peercred-Xraw.gen.test so_peercred-Xverbose.gen.test sock_filter-v.gen.test sock_filter-v-Xabbrev.gen.test sock_filter-v-Xraw.gen.test sock_filter-v-Xverbose.gen.test sockaddr_xlat-Xabbrev.gen.test sockaddr_xlat-Xraw.gen.test sockaddr_xlat-Xverbose.gen.test socketcall.gen.test sockopt-sol_netlink.gen.test sockopt-timestamp.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_personality_32.gen.test trace_personality_64.gen.test trace_personality_regex_32.gen.test trace_personality_regex_64.gen.test trace_personality_regex_x32.gen.test trace_personality_x32.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 utimensat-Xabbrev.gen.test utimensat-Xraw.gen.test utimensat-Xverbose.gen.test utimes.gen.test vfork-f.gen.test vhangup.gen.test vmsplice.gen.test wait4.gen.test wait4-v.gen.test waitid.gen.test waitid-v.gen.test waitpid.gen.test xattr.gen.test xattr-strings.gen.test xet_robust_list.gen.test xetitimer.gen.test xetpgid.gen.test xetpriority.gen.test xettimeofday.gen.test
+GEN_TESTS = _newselect.gen.test _newselect-P.gen.test accept.gen.test accept4.gen.test access.gen.test acct.gen.test add_key.gen.test adjtimex.gen.test aio.gen.test aio_pgetevents.gen.test alarm.gen.test bpf.gen.test bpf-obj_get_info_by_fd.gen.test bpf-obj_get_info_by_fd-prog.gen.test bpf-obj_get_info_by_fd-prog-v.gen.test bpf-obj_get_info_by_fd-v.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 clone3.gen.test clone3-Xabbrev.gen.test clone3-Xraw.gen.test clone3-Xverbose.gen.test clone3-success-Xabbrev.gen.test clone3-success-Xraw.gen.test clone3-success-Xverbose.gen.test clone_parent.gen.test clone_parent--quiet-exit.gen.test clone_parent-q.gen.test clone_parent-qq.gen.test clone_ptrace--quiet-attach.gen.test clone_ptrace--quiet-exit.gen.test clone_ptrace-q.gen.test clone_ptrace-qq.gen.test close_range.gen.test close_range-P.gen.test close_range-y.gen.test close_range-yy.gen.test copy_file_range.gen.test creat.gen.test delete_module.gen.test dev--decode-fds-dev.gen.test dev--decode-fds-path.gen.test dev--decode-fds-socket.gen.test dev-yy.gen.test dup.gen.test dup-P.gen.test dup-y.gen.test dup-yy.gen.test dup2.gen.test dup2-P.gen.test dup2-y.gen.test dup2-yy.gen.test dup3.gen.test dup3-P.gen.test dup3-y.gen.test dup3-yy.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-P.gen.test faccessat-y.gen.test faccessat-yy.gen.test faccessat2-P.gen.test faccessat2-y.gen.test faccessat2-yy.gen.test fadvise64_64.gen.test fallocate.gen.test fanotify_init.gen.test fanotify_mark.gen.test fanotify_mark-Xabbrev.gen.test fanotify_mark-Xraw.gen.test fanotify_mark-Xverbose.gen.test fchdir.gen.test fchmod.gen.test fchmodat.gen.test fchown.gen.test fchown32.gen.test fchownat.gen.test fcntl.gen.test fcntl--pidns-translation.gen.test fcntl64.gen.test fcntl64--pidns-translation.gen.test fdatasync.gen.test file_handle.gen.test file_ioctl.gen.test filter_seccomp.gen.test filter_seccomp-flag.gen.test finit_module.gen.test flock.gen.test fork-f.gen.test fsconfig.gen.test fsconfig-P.gen.test fsmount.gen.test fsopen.gen.test fspick.gen.test fspick-P.gen.test fstat.gen.test fstat-Xabbrev.gen.test fstat-Xraw.gen.test fstat-Xverbose.gen.test fstat64.gen.test fstat64-Xabbrev.gen.test fstat64-Xraw.gen.test fstat64-Xverbose.gen.test fstatat64.gen.test fstatfs.gen.test fstatfs64.gen.test fsync.gen.test fsync-y.gen.test ftruncate.gen.test ftruncate64.gen.test futimesat.gen.test get_mempolicy.gen.test getcpu.gen.test getcwd.gen.test getdents.gen.test getdents-v.gen.test getdents64.gen.test getdents64-v.gen.test getegid.gen.test getegid-creds.gen.test getegid32.gen.test getegid32-creds.gen.test geteuid.gen.test geteuid-creds.gen.test geteuid32.gen.test geteuid32-creds.gen.test getgid.gen.test getgid-creds.gen.test getgid32.gen.test getgid32-creds.gen.test getgroups.gen.test getgroups32.gen.test getpeername.gen.test getpgrp.gen.test getpgrp--pidns-translation.gen.test getpid.gen.test getpid--pidns-translation.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 getsid--pidns-translation.gen.test getsockname.gen.test gettid.gen.test getuid-creds.gen.test getuid32.gen.test getuid32-creds.gen.test getxgid.gen.test getxpid.gen.test getxuid.gen.test group_req.gen.test inet-cmsg.gen.test init_module.gen.test inotify.gen.test inotify_init.gen.test inotify_init1.gen.test inotify_init1-y.gen.test io_uring_enter.gen.test io_uring_register.gen.test io_uring_setup.gen.test ioctl_block.gen.test ioctl_dm.gen.test ioctl_dm-v.gen.test ioctl_evdev.gen.test ioctl_evdev-Xabbrev.gen.test ioctl_evdev-Xraw.gen.test ioctl_evdev-Xverbose.gen.test ioctl_evdev-v.gen.test ioctl_evdev-v-Xabbrev.gen.test ioctl_evdev-v-Xraw.gen.test ioctl_evdev-v-Xverbose.gen.test ioctl_evdev-success-Xabbrev.gen.test ioctl_evdev-success-Xraw.gen.test ioctl_evdev-success-Xverbose.gen.test ioctl_evdev-success-v.gen.test ioctl_evdev-success-v-Xabbrev.gen.test ioctl_evdev-success-v-Xraw.gen.test ioctl_evdev-success-v-Xverbose.gen.test ioctl_hdio.gen.test ioctl_hdio-Xabbrev.gen.test ioctl_hdio-Xraw.gen.test ioctl_hdio-Xverbose.gen.test ioctl_hdio-v.gen.test ioctl_hdio-v-Xabbrev.gen.test ioctl_hdio-v-Xraw.gen.test ioctl_hdio-v-Xverbose.gen.test ioctl_hdio-success.gen.test ioctl_hdio-success-Xabbrev.gen.test ioctl_hdio-success-Xraw.gen.test ioctl_hdio-success-Xverbose.gen.test ioctl_hdio-success-v.gen.test ioctl_hdio-success-v-Xabbrev.gen.test ioctl_hdio-success-v-Xraw.gen.test ioctl_hdio-success-v-Xverbose.gen.test ioctl_inotify.gen.test ioctl_kvm_run.gen.test ioctl_kvm_run-v.gen.test ioctl_kvm_run_auxstr_vcpu.gen.test ioctl_loop.gen.test ioctl_loop-nv.gen.test ioctl_loop-v.gen.test ioctl_mtd.gen.test ioctl_nbd.gen.test ioctl_nsfs.gen.test ioctl_perf.gen.test ioctl_perf-success.gen.test ioctl_ptp.gen.test ioctl_random.gen.test ioctl_rtc.gen.test ioctl_rtc-v.gen.test ioctl_scsi.gen.test ioctl_sg_io_v3.gen.test ioctl_sg_io_v4.gen.test ioctl_sock_gifconf.gen.test ioctl_tee.gen.test ioctl_uffdio.gen.test ioctl_v4l2.gen.test ioctl_v4l2-Xabbrev.gen.test ioctl_v4l2-Xraw.gen.test ioctl_v4l2-Xverbose.gen.test ioctl_v4l2-v.gen.test ioctl_v4l2-v-Xabbrev.gen.test ioctl_v4l2-v-Xraw.gen.test ioctl_v4l2-v-Xverbose.gen.test ioctl_v4l2-success.gen.test ioctl_v4l2-success-Xabbrev.gen.test ioctl_v4l2-success-Xraw.gen.test ioctl_v4l2-success-Xverbose.gen.test ioctl_v4l2-success-v.gen.test ioctl_v4l2-success-v-Xabbrev.gen.test ioctl_v4l2-success-v-Xraw.gen.test ioctl_v4l2-success-v-Xverbose.gen.test ioctl_watchdog.gen.test ioperm.gen.test iopl.gen.test ioprio.gen.test ioprio--pidns-translation.gen.test ioprio-Xabbrev.gen.test ioprio-Xraw.gen.test ioprio-Xverbose.gen.test ip_mreq.gen.test ipc.gen.test ipc_msg.gen.test ipc_msg-Xabbrev.gen.test ipc_msg-Xraw.gen.test ipc_msg-Xverbose.gen.test ipc_msgbuf-Xabbrev.gen.test ipc_msgbuf-Xraw.gen.test ipc_msgbuf-Xverbose.gen.test ipc_sem.gen.test ipc_sem-Xabbrev.gen.test ipc_sem-Xraw.gen.test ipc_sem-Xverbose.gen.test ipc_shm.gen.test ipc_shm-Xabbrev.gen.test ipc_shm-Xraw.gen.test ipc_shm-Xverbose.gen.test kcmp.gen.test kcmp-y.gen.test kcmp-y--pidns-translation.gen.test kern_features.gen.test kernel_version.gen.test kernel_version-Xabbrev.gen.test kernel_version-Xraw.gen.test kernel_version-Xverbose.gen.test kexec_file_load.gen.test kexec_load.gen.test keyctl.gen.test keyctl-Xabbrev.gen.test keyctl-Xraw.gen.test keyctl-Xverbose.gen.test kill.gen.test kill--pidns-translation.gen.test ksysent.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 maybe_switch_current_tcp.gen.test maybe_switch_current_tcp--quiet-thread-execve.gen.test mbind.gen.test mbind-Xabbrev.gen.test mbind-Xraw.gen.test mbind-Xverbose.gen.test membarrier.gen.test memfd_create.gen.test memfd_create-Xabbrev.gen.test memfd_create-Xraw.gen.test memfd_create-Xverbose.gen.test migrate_pages.gen.test migrate_pages--pidns-translation.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 mmap-Xabbrev.gen.test mmap-Xraw.gen.test mmap-Xverbose.gen.test mmap64.gen.test mmap64-Xabbrev.gen.test mmap64-Xraw.gen.test mmap64-Xverbose.gen.test mmsg.gen.test mmsg-silent.gen.test mmsg_name.gen.test mmsg_name-v.gen.test modify_ldt.gen.test mount.gen.test mount-Xabbrev.gen.test mount-Xraw.gen.test mount-Xverbose.gen.test move_mount.gen.test move_mount-P.gen.test move_pages.gen.test move_pages-Xabbrev.gen.test move_pages-Xraw.gen.test move_pages-Xverbose.gen.test move_pages--pidns-translation.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--decode-fds-dev-netlink.gen.test net--decode-fds-none-netlink.gen.test net--decode-fds-path-netlink.gen.test net--decode-fds-socket-netlink.gen.test net-icmp_filter.gen.test net-packet_mreq.gen.test net-packet_mreq-Xabbrev.gen.test net-packet_mreq-Xraw.gen.test net-packet_mreq-Xverbose.gen.test net-sockaddr.gen.test net-sockaddr--pidns-translation.gen.test net-tpacket_req.gen.test net-tpacket_stats.gen.test net-yy-inet6.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 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.gen.test nlattr_br_port_msg.gen.test nlattr_crypto_user_alg.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_af_spec.gen.test nlattr_ifla_brport.gen.test nlattr_ifla_linkinfo.gen.test nlattr_ifla_port.gen.test nlattr_ifla_xdp.gen.test nlattr_ifla_xdp-y.gen.test nlattr_inet_diag_msg.gen.test nlattr_inet_diag_req_compat.gen.test nlattr_inet_diag_req_v2.gen.test nlattr_mdba_mdb_entry.gen.test nlattr_mdba_router_port.gen.test nlattr_ndmsg.gen.test nlattr_ndtmsg.gen.test nlattr_netconfmsg.gen.test nlattr_netlink_diag_msg.gen.test nlattr_nlmsgerr.gen.test nlattr_packet_diag_msg.gen.test nlattr_rtgenmsg.gen.test nlattr_rtmsg.gen.test nlattr_smc_diag_msg.gen.test nlattr_tc_stats.gen.test nlattr_tca_stab.gen.test nlattr_tcamsg.gen.test nlattr_tcmsg.gen.test nlattr_unix_diag_msg.gen.test old_mmap.gen.test old_mmap-P.gen.test old_mmap-Xabbrev.gen.test old_mmap-Xraw.gen.test old_mmap-Xverbose.gen.test old_mmap-v-none.gen.test oldfstat.gen.test oldlstat.gen.test oldselect.gen.test oldselect-P.gen.test oldselect-efault.gen.test oldselect-efault-P.gen.test oldstat.gen.test open.gen.test open_tree.gen.test open_tree-P.gen.test openat.gen.test openat2.gen.test openat2-Xabbrev.gen.test openat2-Xraw.gen.test openat2-Xverbose.gen.test openat2-v.gen.test openat2-v-y.gen.test openat2-v-y-Xabbrev.gen.test openat2-v-y-Xraw.gen.test openat2-v-y-Xverbose.gen.test openat2-y.gen.test orphaned_process_group.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 personality-Xabbrev.gen.test personality-Xraw.gen.test personality-Xverbose.gen.test pidfd_getfd.gen.test pidfd_getfd-y.gen.test pidfd_getfd-yy.gen.test pidfd_open.gen.test pidfd_open--decode-fd-path.gen.test pidfd_open--decode-fd-pidfd.gen.test pidfd_open--decode-fd-socket.gen.test pidfd_open-P.gen.test pidfd_open-y.gen.test pidfd_open-yy.gen.test pidfd_open--pidns-translation.gen.test pidfd_send_signal.gen.test pidfd_send_signal--pidns-translation.gen.test pipe2.gen.test pkey_alloc.gen.test pkey_free.gen.test pkey_mprotect.gen.test ppoll.gen.test ppoll-P.gen.test ppoll-v.gen.test pread64-pwrite64.gen.test preadv.gen.test preadv-pwritev.gen.test preadv2-pwritev2.gen.test printpath-umovestr.gen.test printpath-umovestr-peekdata.gen.test printpath-umovestr-undumpable.gen.test printsignal-Xabbrev.gen.test printsignal-Xraw.gen.test printsignal-Xverbose.gen.test printstr.gen.test printstrn-umoven.gen.test printstrn-umoven-peekdata.gen.test printstrn-umoven-undumpable.gen.test prlimit64.gen.test prlimit64--pidns-translation.gen.test process_vm_readv.gen.test process_vm_readv--pidns-translation.gen.test process_vm_writev.gen.test process_vm_writev--pidns-translation.gen.test pselect6.gen.test ptrace.gen.test ptrace_syscall_info.gen.test pwritev.gen.test quotactl.gen.test quotactl-Xabbrev.gen.test quotactl-Xraw.gen.test quotactl-Xverbose.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 recv-MSG_TRUNC.gen.test recvfrom.gen.test recvfrom-MSG_TRUNC.gen.test recvmmsg-timeout.gen.test recvmsg.gen.test regex.gen.test remap_file_pages.gen.test remap_file_pages-Xabbrev.gen.test remap_file_pages-Xraw.gen.test remap_file_pages-Xverbose.gen.test rename.gen.test renameat.gen.test renameat2.gen.test request_key.gen.test riscv_flush_icache.gen.test rmdir.gen.test rt_sigpending.gen.test rt_sigprocmask.gen.test rt_sigqueueinfo.gen.test rt_sigqueueinfo--pidns-translation.gen.test rt_sigreturn.gen.test rt_sigsuspend.gen.test rt_sigtimedwait.gen.test rt_tgsigqueueinfo.gen.test rt_tgsigqueueinfo--pidns-translation.gen.test s390_guarded_storage.gen.test s390_guarded_storage-v.gen.test s390_pci_mmio_read_write.gen.test s390_runtime_instr.gen.test s390_sthyi.gen.test s390_sthyi-v.gen.test sched.gen.test sched_get_priority_mxx.gen.test sched_rr_get_interval.gen.test sched_xetaffinity.gen.test sched_xetaffinity--pidns-translation.gen.test sched_xetattr.gen.test sched_xetattr--pidns-translation.gen.test sched_xetparam.gen.test sched_xetparam--pidns-translation.gen.test sched_xetscheduler.gen.test sched_xetscheduler--pidns-translation.gen.test sched_yield.gen.test seccomp-filter.gen.test seccomp-filter-v.gen.test seccomp_get_action_avail.gen.test select.gen.test select-P.gen.test semop.gen.test semop-indirect.gen.test semtimedop.gen.test sendfile.gen.test sendfile64.gen.test set_mempolicy.gen.test set_mempolicy-Xabbrev.gen.test set_mempolicy-Xraw.gen.test set_mempolicy-Xverbose.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 setrlimit-Xabbrev.gen.test setrlimit-Xraw.gen.test setrlimit-Xverbose.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 signal_receive--pidns-translation.gen.test signalfd4.gen.test sigpending.gen.test sigprocmask.gen.test sigreturn.gen.test sigsuspend.gen.test so_error.gen.test so_linger.gen.test so_peercred.gen.test so_peercred-Xabbrev.gen.test so_peercred-Xraw.gen.test so_peercred-Xverbose.gen.test so_peercred--pidns-translation.gen.test sock_filter-v.gen.test sock_filter-v-Xabbrev.gen.test sock_filter-v-Xraw.gen.test sock_filter-v-Xverbose.gen.test sockaddr_xlat-Xabbrev.gen.test sockaddr_xlat-Xraw.gen.test sockaddr_xlat-Xverbose.gen.test socketcall.gen.test sockopt-sol_netlink.gen.test sockopt-timestamp.gen.test splice.gen.test stat.gen.test stat64.gen.test statfs.gen.test statfs64.gen.test status-all.gen.test status-failed.gen.test status-failed-long.gen.test status-failed-status.gen.test status-none.gen.test status-successful.gen.test status-successful-long.gen.test status-successful-status.gen.test status-unfinished.gen.test statx.gen.test strace--absolute-timestamps.gen.test strace--absolute-timestamps-format-time.gen.test strace--absolute-timestamps-format-time-precision-s.gen.test strace--absolute-timestamps-format-time-precision-ms.gen.test strace--absolute-timestamps-format-time-precision-us.gen.test strace--absolute-timestamps-format-time-precision-ns.gen.test strace--absolute-timestamps-format-unix-precision-s.gen.test strace--absolute-timestamps-format-unix-precision-ms.gen.test strace--absolute-timestamps-format-unix-precision-us.gen.test strace--absolute-timestamps-format-unix-precision-ns.gen.test strace--follow-forks-output-separately.gen.test strace--relative-timestamps.gen.test strace--relative-timestamps-s.gen.test strace--relative-timestamps-ms.gen.test strace--relative-timestamps-us.gen.test strace--relative-timestamps-ns.gen.test strace--syscall-times.gen.test strace--syscall-times-s.gen.test strace--syscall-times-ms.gen.test strace--syscall-times-us.gen.test strace--syscall-times-ns.gen.test strace--strings-in-hex.gen.test strace--strings-in-hex-all.gen.test strace--strings-in-hex-non-ascii.gen.test strace--timestamps.gen.test strace--timestamps-time.gen.test strace--timestamps-time-s.gen.test strace--timestamps-time-ms.gen.test strace--timestamps-time-us.gen.test strace--timestamps-time-ns.gen.test strace--timestamps-unix-s.gen.test strace--timestamps-unix-ms.gen.test strace--timestamps-unix-us.gen.test strace--timestamps-unix-ns.gen.test strace-n.gen.test strace-x.gen.test strace-xx.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 tgkill.gen.test tgkill--pidns-translation.gen.test threads-execve--quiet-thread-execve.gen.test threads-execve-q.gen.test threads-execve-qq.gen.test threads-execve-qqq.gen.test time.gen.test timer_create.gen.test timer_xettime.gen.test timerfd_xettime.gen.test times.gen.test times-fail.gen.test tkill.gen.test tkill--pidns-translation.gen.test trace_clock.gen.test trace_creds.gen.test trace_fstat.gen.test trace_fstatfs.gen.test trace_lstat.gen.test trace_personality_32.gen.test trace_personality_64.gen.test trace_personality_regex_32.gen.test trace_personality_regex_64.gen.test trace_personality_regex_x32.gen.test trace_personality_x32.gen.test trace_question.gen.test trace_stat.gen.test trace_stat_like.gen.test trace_statfs.gen.test trace_statfs_like.gen.test trie_test.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 umovestr_cached_adjacent.gen.test unlink.gen.test unlinkat.gen.test unshare.gen.test userfaultfd.gen.test ustat.gen.test utime.gen.test utimensat.gen.test utimensat-Xabbrev.gen.test utimensat-Xraw.gen.test utimensat-Xverbose.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 xet_robust_list--pidns-translation.gen.test xetitimer.gen.test xetpgid.gen.test xetpgid--pidns-translation.gen.test xetpriority.gen.test xetpriority--pidns-translation.gen.test xettimeofday.gen.test
 
 $(srcdir)/_newselect.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
@@ -79,6 +79,63 @@ $(srcdir)/clock_nanosleep.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tes
 $(srcdir)/clock_xettime.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/clone3.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone3-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone3-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone3-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone3-success-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone3-success-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone3-success-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone_parent.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone_parent--quiet-exit.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone_parent-q.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone_parent-qq.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone_ptrace--quiet-attach.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone_ptrace--quiet-exit.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone_ptrace-q.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone_ptrace-qq.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/close_range.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/close_range-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/close_range-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/close_range-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/copy_file_range.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -88,18 +145,54 @@ $(srcdir)/creat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/delete_module.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/dev--decode-fds-dev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dev--decode-fds-path.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dev--decode-fds-socket.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/dev-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
 $(srcdir)/dup.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/dup-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dup-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dup-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/dup2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/dup2-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dup2-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dup2-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/dup3.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/dup3-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dup3-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dup3-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/epoll_create.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -124,7 +217,22 @@ $(srcdir)/execveat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/execveat-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
-$(srcdir)/faccessat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+$(srcdir)/faccessat-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat2-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat2-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat2-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
 $(srcdir)/fadvise64_64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
@@ -169,9 +277,15 @@ $(srcdir)/fchownat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/fcntl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/fcntl--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/fcntl64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/fcntl64--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/fdatasync.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -181,6 +295,12 @@ $(srcdir)/file_handle.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.i
 $(srcdir)/file_ioctl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/filter_seccomp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/filter_seccomp-flag.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/finit_module.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -190,6 +310,24 @@ $(srcdir)/flock.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/fork-f.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/fsconfig.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/fsconfig-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/fsmount.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/fsopen.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/fspick.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/fspick-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/fstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -250,27 +388,51 @@ $(srcdir)/getcwd.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/getdents.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getdents-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getdents64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getdents64-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getegid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getegid-creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getegid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getegid32-creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/geteuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/geteuid-creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/geteuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/geteuid32-creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getgid-creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getgid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getgid32-creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getgroups.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -283,9 +445,15 @@ $(srcdir)/getpeername.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.i
 $(srcdir)/getpgrp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getpgrp--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getpid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getpid--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getppid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -313,16 +481,31 @@ $(srcdir)/getrusage.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/getsid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getsid--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getsockname.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
 $(srcdir)/gettid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getuid-creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
-$(srcdir)/getxxid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+$(srcdir)/getuid32-creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/getxgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/getxpid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/getxuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
 $(srcdir)/group_req.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
@@ -337,9 +520,15 @@ $(srcdir)/init_module.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.i
 $(srcdir)/inotify.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/inotify_init.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/inotify_init1.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/inotify_init1-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/io_uring_enter.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -361,9 +550,96 @@ $(srcdir)/ioctl_dm-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/ioctl_evdev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_evdev-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_evdev-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_evdev-v-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-v-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-v-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-success-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-success-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-success-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-success-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-success-v-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-success-v-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-success-v-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-v-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-v-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-v-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-success.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-success-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-success-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-success-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-success-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-success-v-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-success-v-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-success-v-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_inotify.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -397,6 +673,9 @@ $(srcdir)/ioctl_nsfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/ioctl_perf.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_perf-success.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_ptp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -421,12 +700,63 @@ $(srcdir)/ioctl_sg_io_v4.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_test
 $(srcdir)/ioctl_sock_gifconf.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_tee.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_uffdio.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
 $(srcdir)/ioctl_v4l2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_v4l2-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-v-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-v-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-v-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-success.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-success-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-success-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-success-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-success-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-success-v-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-success-v-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-success-v-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_watchdog.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/ioperm.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -436,6 +766,9 @@ $(srcdir)/iopl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/ioprio.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/ioprio--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/ioprio-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -502,6 +835,9 @@ $(srcdir)/kcmp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/kcmp-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/kcmp-y--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/kern_features.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -538,6 +874,12 @@ $(srcdir)/keyctl-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tes
 $(srcdir)/kill.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/kill--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ksysent.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/lchown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -562,9 +904,24 @@ $(srcdir)/lstat64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/madvise.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/maybe_switch_current_tcp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/maybe_switch_current_tcp--quiet-thread-execve.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/mbind.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/mbind-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/mbind-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/mbind-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/membarrier.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -583,6 +940,9 @@ $(srcdir)/memfd_create-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/g
 $(srcdir)/migrate_pages.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/migrate_pages--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/mincore.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -655,6 +1015,12 @@ $(srcdir)/mount-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/mount-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/move_mount.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/move_mount-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/move_pages.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -667,6 +1033,9 @@ $(srcdir)/move_pages-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tes
 $(srcdir)/move_pages-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/move_pages--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/mq.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -694,6 +1063,18 @@ $(srcdir)/munlockall.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/nanosleep.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/net--decode-fds-dev-netlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/net--decode-fds-none-netlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/net--decode-fds-path-netlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/net--decode-fds-socket-netlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/net-icmp_filter.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -712,6 +1093,9 @@ $(srcdir)/net-packet_mreq-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir
 $(srcdir)/net-sockaddr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/net-sockaddr--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/net-tpacket_req.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -823,6 +1207,9 @@ $(srcdir)/nlattr_ifla_port.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_te
 $(srcdir)/nlattr_ifla_xdp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/nlattr_ifla_xdp-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/nlattr_inet_diag_msg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -922,9 +1309,45 @@ $(srcdir)/oldstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/open.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/open_tree.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/open_tree-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/openat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/openat2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-v-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-v-y-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-v-y-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-v-y-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/orphaned_process_group.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -952,9 +1375,45 @@ $(srcdir)/personality-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_te
 $(srcdir)/personality-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/pidfd_getfd.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_getfd-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_getfd-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_open.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_open--decode-fd-path.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_open--decode-fd-pidfd.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_open--decode-fd-socket.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_open-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_open-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_open-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_open--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/pidfd_send_signal.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/pidfd_send_signal--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/pipe2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -1021,12 +1480,21 @@ $(srcdir)/printstrn-umoven-undumpable.gen.test: $(abs_srcdir)/gen_tests.sh $(src
 $(srcdir)/prlimit64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/prlimit64--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/process_vm_readv.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/process_vm_readv--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/process_vm_writev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/process_vm_writev--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/pselect6.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -1078,9 +1546,15 @@ $(srcdir)/readlinkat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/reboot.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/recv-MSG_TRUNC.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/recvfrom.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/recvfrom-MSG_TRUNC.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/recvmmsg-timeout.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -1129,6 +1603,9 @@ $(srcdir)/rt_sigprocmask.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_test
 $(srcdir)/rt_sigqueueinfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/rt_sigqueueinfo--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/rt_sigreturn.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -1141,6 +1618,9 @@ $(srcdir)/rt_sigtimedwait.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tes
 $(srcdir)/rt_tgsigqueueinfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/rt_tgsigqueueinfo--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/s390_guarded_storage.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -1171,15 +1651,27 @@ $(srcdir)/sched_rr_get_interval.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/g
 $(srcdir)/sched_xetaffinity.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/sched_xetaffinity--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/sched_xetattr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/sched_xetattr--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/sched_xetparam.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/sched_xetparam--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/sched_xetscheduler.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/sched_xetscheduler--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/sched_yield.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -1201,6 +1693,12 @@ $(srcdir)/select-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/semop.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/semop-indirect.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/semtimedop.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/sendfile.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -1210,6 +1708,15 @@ $(srcdir)/sendfile64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/set_mempolicy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/set_mempolicy-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/set_mempolicy-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/set_mempolicy-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/setdomainname.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -1303,6 +1810,9 @@ $(srcdir)/signal.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/signal_receive.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/signal_receive--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/signalfd4.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -1336,6 +1846,9 @@ $(srcdir)/so_peercred-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_te
 $(srcdir)/so_peercred-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/so_peercred--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/sock_filter-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -1381,9 +1894,147 @@ $(srcdir)/statfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/statfs64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/status-all.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/status-failed.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/status-failed-long.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/status-failed-status.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/status-none.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/status-successful.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/status-successful-long.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/status-successful-status.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/status-unfinished.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/statx.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/strace--absolute-timestamps.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-time.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-time-precision-s.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-time-precision-ms.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-time-precision-us.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-time-precision-ns.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-unix-precision-s.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-unix-precision-ms.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-unix-precision-us.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-unix-precision-ns.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--follow-forks-output-separately.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--relative-timestamps.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--relative-timestamps-s.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--relative-timestamps-ms.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--relative-timestamps-us.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--relative-timestamps-ns.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--syscall-times.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--syscall-times-s.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--syscall-times-ms.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--syscall-times-us.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--syscall-times-ns.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--strings-in-hex.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--strings-in-hex-all.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--strings-in-hex-non-ascii.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-time.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-time-s.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-time-ms.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-time-us.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-time-ns.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-unix-s.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-unix-ms.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-unix-us.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-unix-ns.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace-n.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace-x.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace-xx.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/swap.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -1414,6 +2065,24 @@ $(srcdir)/syslog.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/tee.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/tgkill.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/tgkill--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/threads-execve--quiet-thread-execve.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/threads-execve-q.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/threads-execve-qq.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/threads-execve-qqq.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/time.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -1432,6 +2101,18 @@ $(srcdir)/times.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/times-fail.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/tkill.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/tkill--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_clock.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/trace_fstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -1474,6 +2155,9 @@ $(srcdir)/trace_statfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.
 $(srcdir)/trace_statfs_like.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/trie_test.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/truncate.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -1495,6 +2179,9 @@ $(srcdir)/umovestr-illptr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tes
 $(srcdir)/umovestr3.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/umovestr_cached_adjacent.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/unlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -1561,14 +2248,23 @@ $(srcdir)/xattr-strings.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests
 $(srcdir)/xet_robust_list.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/xet_robust_list--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/xetitimer.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
 $(srcdir)/xetpgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/xetpgid--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/xetpriority.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/xetpriority--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/xettimeofday.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
index 487b9608a20f13c0758c4f99bf8d974b54c42990..359462a1d01d6a125e3e95512daae279101a7482 100644 (file)
@@ -1,6 +1,6 @@
 # Input for gen_tests.sh
 #
-# Copyright (c) 2017-2019 The strace developers.
+# Copyright (c) 2017-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -9,7 +9,7 @@ _newselect
 _newselect-P    -e trace=_newselect -P /dev/full 9>>/dev/full
 accept -a22
 accept4        -a37
-access -a30 -access_sample
+access -a30 --trace-path=access_sample
 acct   -a20
 add_key        -a30 -s12
 adjtimex       -a15
@@ -31,13 +31,44 @@ clock       test_trace_expr 'times|fcntl.*' -e/clock
 clock_adjtime  -a37
 clock_nanosleep        -e trace=clock_nanosleep,clock_gettime
 clock_xettime  -a36 -e trace=clock_getres,clock_gettime,clock_settime
+clone3 -a16
+clone3-Xabbrev -a16 -Xabbrev  -e trace=clone3
+clone3-Xraw    -a16 -Xraw     -e trace=clone3
+clone3-Xverbose        -a16 -Xverbose -e trace=clone3
+clone3-success-Xabbrev +clone3-success.test -a16 -Xabbrev
+clone3-success-Xraw    +clone3-success.test -a16 -Xraw
+clone3-success-Xverbose        +clone3-success.test -a16 -Xverbose
+clone_parent +clone_ptrace.test
+clone_parent--quiet-exit +clone_ptrace.test --quiet=exit,personality
+clone_parent-q +clone_ptrace.test -q
+clone_parent-qq +clone_ptrace.test -qq
+clone_ptrace--quiet-attach +clone_ptrace.test --quiet=attach,personality
+clone_ptrace--quiet-exit +clone_ptrace.test --quiet=exit,personality
+clone_ptrace-q +clone_ptrace.test -q
+clone_ptrace-qq +clone_ptrace.test -qq
+close_range    -a21 7>>/dev/full
+close_range-P  -a21 --trace=close_range -P /dev/full 7>>/dev/full
+close_range-y  -a33 --trace=close_range -y 7>>/dev/full
+close_range-yy -a33 --trace=close_range -yy 7>>/dev/full
 copy_file_range
 creat  -a20
 delete_module  -a23
+dev--decode-fds-dev    -a30 -e trace=openat,fsync -P "/dev/full" -P "/dev/zero" -P "/dev/sda" -e decode-fds=dev
+dev--decode-fds-path   -a19 -e trace=openat,fsync -P "/dev/full" -P "/dev/zero" -P "/dev/sda" -e decode-fds=path
+dev--decode-fds-socket -a19 -e trace=openat,fsync -P "/dev/full" -P "/dev/zero" -P "/dev/sda" --decode-fds=socket
 dev-yy -a30 -e trace=openat,fsync -P "/dev/full" -P "/dev/zero" -P "/dev/sda" -yy
-dup    -a8
-dup2   -a13
-dup3   -a24
+dup    -a7 9>>/dev/full
+dup-P  -a7 --trace=dup -P /dev/full 9>>/dev/full
+dup-y  -a8 --trace=dup -y 9>>/dev/full
+dup-yy -a8 --trace=dup -yy 9>>/dev/full
+dup2   -a11 9>>/dev/full
+dup2-P -a11 --trace=dup2 -P /dev/full 9>>/dev/full
+dup2-y -a13 --trace=dup2 -y 9>>/dev/full
+dup2-yy        -a13 --trace=dup2 -yy 9>>/dev/full
+dup3   -a13 7>>/dev/full
+dup3-P -a13 --trace=dup3 -P /dev/full 7>>/dev/full
+dup3-y -a15 --trace=dup3 -y 7>>/dev/full
+dup3-yy        -a15 --trace=dup3 -yy 7>>/dev/full
 epoll_create   -a17
 epoll_create1  -a28
 epoll_ctl
@@ -46,7 +77,12 @@ epoll_wait   -a26
 erestartsys    -a34 -e signal=none -e trace=recvfrom
 execveat
 execveat-v     -v -e trace=execveat
-faccessat      -P $NAME.sample
+faccessat-P    -a23 --trace=faccessat -P /dev/full
+faccessat-y    +faccessat.test -a24 -y
+faccessat-yy   +faccessat.test -a24 -yy
+faccessat2-P   -a27 --trace=faccessat2 -P /dev/full
+faccessat2-y   +faccessat2.test -a28 -y
+faccessat2-yy  +faccessat2.test -a28 -yy
 fadvise64_64   +fadvise64.test
 fallocate      -a18
 fanotify_init
@@ -61,13 +97,23 @@ fchown      -a16
 fchown32       -a18
 fchownat
 fcntl  -a8
+fcntl--pidns-translation       test_pidns -a8 -e trace=fcntl
 fcntl64        -a8
+fcntl64--pidns-translation     test_pidns -a8 -e trace=fcntl64
 fdatasync      -a14
 file_handle    -e trace=name_to_handle_at,open_by_handle_at
 file_ioctl     +ioctl.test
+filter_seccomp . "${srcdir=.}/filter_seccomp.sh"; test_prog_set --seccomp-bpf -f
+filter_seccomp-flag    ../$NAME
 finit_module   -a25
 flock  -a19
 fork-f -a26 -qq -f -e signal=none -e trace=chdir
+fsconfig       -s300 -y
+fsconfig-P     -s300 -y -P /dev/full -e trace=fsconfig
+fsmount        -a18 -y
+fsopen -a35
+fspick -a27 -y
+fspick-P       -a27 -y -P /dev/full -e trace=fspick
 fstat  -a15 -v -P stat.sample
 fstat-Xabbrev -a15 -v -Xabbrev -P stat.sample -e trace=fstat
 fstat-Xraw -a15 -v -Xraw -P stat.sample -e trace=fstat
@@ -76,7 +122,7 @@ fstat64      -a17 -v -P stat.sample
 fstat64-Xabbrev -a17 -Xabbrev -v -P stat.sample -e trace=fstat64
 fstat64-Xraw -a17 -Xraw -v -P stat.sample -e trace=fstat64
 fstat64-Xverbose -a17 -Xverbose -v -P stat.sample -e trace=fstat64
-fstatat64      -a32 -v -P stat.sample -P /dev/full
+fstatat64      -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full
 fstatfs        -a18
 fstatfs64      -a24
 fsync  -a10
@@ -87,19 +133,29 @@ futimesat  -a28
 get_mempolicy  -s3 -a38
 getcpu -a25
 getcwd -a18
-getdents       -a22 -v
-getdents64     -a24 -v
+getdents       -a31
+getdents-v     -a22 -v --trace=getdents
+getdents64     -a33
+getdents64-v   -a24 -v --trace=getdents64
 getegid        +getuid.test
+getegid-creds  +getuid.test
 getegid32      +getuid.test
+getegid32-creds        +getuid.test
 geteuid        +getuid.test
+geteuid-creds  +getuid.test
 geteuid32      +getuid.test
+geteuid32-creds        +getuid.test
 getgid +getuid.test
+getgid-creds   +getuid.test
 getgid32       +getuid.test
+getgid32-creds +getuid.test
 getgroups      -a17
 getgroups32    -a19
 getpeername    -a27
 getpgrp        -a10
+getpgrp--pidns-translation     test_pidns -e trace=getpgrp -a10
 getpid -a9
+getpid--pidns-translation      test_pidns -e trace=getpid -a9
 getppid        -a10
 getrandom      -a32 -s3
 getresgid      -a25
@@ -109,23 +165,59 @@ getresuid32       -a27
 getrlimit      -a27
 getrusage      -v
 getsid -a10
+getsid--pidns-translation      test_pidns -e trace=getsid -a10
 getsockname    -a27
 gettid -a9
+getuid-creds   +getuid.test
 getuid32       +getuid.test
-getxxid        -a10 -e trace=getxpid,getxuid,getxgid
+getuid32-creds +getuid.test
+getxgid        -a10
+getxpid        -a10
+getxuid        -a10
 group_req      -e trace=setsockopt
 inet-cmsg      -e trace=recvmsg
 init_module    -a27
 inotify        -a23 -e trace=inotify_add_watch,inotify_rm_watch
+inotify_init   -a15
 inotify_init1  -a27
+inotify_init1-y        -a27 -y -e trace=inotify_init1
 io_uring_enter -y
 io_uring_register      -y
 io_uring_setup -a26 -y
 ioctl_block    +ioctl.test
 ioctl_dm       +ioctl.test -s9
 ioctl_dm-v     +ioctl.test -v -s9
-ioctl_evdev    +ioctl.test
-ioctl_evdev-v  +ioctl.test -v
+ioctl_evdev    +ioctl.test -a26
+ioctl_evdev-Xabbrev    +ioctl.test -a26 -Xabbrev
+ioctl_evdev-Xraw       +ioctl.test -a28 -Xraw
+ioctl_evdev-Xverbose   +ioctl.test -a41 -Xverbose
+ioctl_evdev-v  +ioctl.test -a26 -v
+ioctl_evdev-v-Xabbrev  +ioctl.test -a26 -v -Xabbrev
+ioctl_evdev-v-Xraw     +ioctl.test -a28 -v -Xraw
+ioctl_evdev-v-Xverbose +ioctl.test -a41 -v -Xverbose
+ioctl_evdev-success-Xabbrev    +ioctl_evdev-success.test -Xabbrev
+ioctl_evdev-success-Xraw       +ioctl_evdev-success.test -a27 -Xraw
+ioctl_evdev-success-Xverbose   +ioctl_evdev-success.test -a43 -Xverbose
+ioctl_evdev-success-v  +ioctl_evdev-success.test -a26 -v
+ioctl_evdev-success-v-Xabbrev  +ioctl_evdev-success.test -v -Xabbrev
+ioctl_evdev-success-v-Xraw     +ioctl_evdev-success.test -a27 -v -Xraw
+ioctl_evdev-success-v-Xverbose +ioctl_evdev-success.test -a43 -v -Xverbose
+ioctl_hdio     +ioctl.test -a27
+ioctl_hdio-Xabbrev     +ioctl.test -a27 -Xabbrev
+ioctl_hdio-Xraw        +ioctl.test -a20 -Xraw
+ioctl_hdio-Xverbose    +ioctl.test -a39 -Xverbose
+ioctl_hdio-v   +ioctl.test -a27 -v
+ioctl_hdio-v-Xabbrev   +ioctl.test -a27 -v -Xabbrev
+ioctl_hdio-v-Xraw      +ioctl.test -a20 -v -Xraw
+ioctl_hdio-v-Xverbose  +ioctl.test -a39 -v -Xverbose
+ioctl_hdio-success     +ioctl-success.sh -a27
+ioctl_hdio-success-Xabbrev     +ioctl-success.sh -a27 -Xabbrev
+ioctl_hdio-success-Xraw        +ioctl-success.sh -a20 -Xraw
+ioctl_hdio-success-Xverbose    +ioctl-success.sh -a39 -Xverbose
+ioctl_hdio-success-v   +ioctl-success.sh -a27 -v
+ioctl_hdio-success-v-Xabbrev   +ioctl-success.sh -a27 -v -Xabbrev
+ioctl_hdio-success-v-Xraw      +ioctl-success.sh -a20 -v -Xraw
+ioctl_hdio-success-v-Xverbose  +ioctl-success.sh -a39 -v -Xverbose
 ioctl_inotify  +ioctl.test
 ioctl_kvm_run  +ioctl.test -a36 -y
 ioctl_kvm_run-v        +ioctl.test -v -a36 -y
@@ -137,6 +229,7 @@ ioctl_mtd   +ioctl.test
 ioctl_nbd      +ioctl.test -y
 ioctl_nsfs     +ioctl.test -esignal=none
 ioctl_perf     +ioctl.test
+ioctl_perf-success +ioctl-success.sh -a35
 ioctl_ptp      +ioctl.test
 ioctl_random   +ioctl.test
 ioctl_rtc      +ioctl.test
@@ -145,11 +238,29 @@ ioctl_scsi        +ioctl.test
 ioctl_sg_io_v3 +ioctl.test
 ioctl_sg_io_v4 +ioctl.test
 ioctl_sock_gifconf     +ioctl.test -a28 -s1
+ioctl_tee      +ioctl.test
 ioctl_uffdio   +ioctl.test
 ioctl_v4l2     +ioctl.test
+ioctl_v4l2-Xabbrev     +ioctl.test -Xabbrev
+ioctl_v4l2-Xraw        +ioctl.test -Xraw
+ioctl_v4l2-Xverbose    +ioctl.test -Xverbose
+ioctl_v4l2-v   +ioctl.test -v
+ioctl_v4l2-v-Xabbrev   +ioctl.test -v -Xabbrev
+ioctl_v4l2-v-Xraw      +ioctl.test -v -Xraw
+ioctl_v4l2-v-Xverbose  +ioctl.test -v -Xverbose
+ioctl_v4l2-success     +ioctl-success.sh -a29
+ioctl_v4l2-success-Xabbrev     +ioctl-success.sh -a29 -Xabbrev
+ioctl_v4l2-success-Xraw        +ioctl-success.sh -a27 -Xraw
+ioctl_v4l2-success-Xverbose    +ioctl-success.sh -a30 -Xverbose
+ioctl_v4l2-success-v   +ioctl-success.sh -a29 -v
+ioctl_v4l2-success-v-Xabbrev   +ioctl-success.sh -a29 -v -Xabbrev
+ioctl_v4l2-success-v-Xraw      +ioctl-success.sh -a27 -v -Xraw
+ioctl_v4l2-success-v-Xverbose  +ioctl-success.sh -a29 -v -Xverbose
+ioctl_watchdog +ioctl.test
 ioperm -a27
 iopl   -a8
 ioprio -a18 -e trace=ioprio_get,ioprio_set
+ioprio--pidns-translation      test_pidns -a18 -e trace=ioprio_get,ioprio_set
 ioprio-Xabbrev -a18 -e trace=ioprio_get,ioprio_set -Xabbrev
 ioprio-Xraw    -a18 -e trace=ioprio_get,ioprio_set -Xraw
 ioprio-Xverbose        -a18 -e trace=ioprio_get,ioprio_set -Xverbose
@@ -160,18 +271,19 @@ ipc_msg-Xabbrev   +ipc.sh -Xabbrev -a26
 ipc_msg-Xraw   +ipc.sh -Xraw -a16
 ipc_msg-Xverbose       +ipc.sh -Xverbose -a34
 ipc_msgbuf-Xabbrev     +ipc_msgbuf.test -Xabbrev
-ipc_msgbuf-Xraw        +ipc_msgbuf.test -Xraw -a22
+ipc_msgbuf-Xraw        +ipc_msgbuf.test -Xraw -a19
 ipc_msgbuf-Xverbose    +ipc_msgbuf.test -Xverbose
 ipc_sem        +ipc.sh -a29
 ipc_sem-Xabbrev        +ipc.sh -Xabbrev -a29
 ipc_sem-Xraw   +ipc.sh -Xraw -a19
 ipc_sem-Xverbose       +ipc.sh -Xverbose -a36
-ipc_shm        +ipc.sh -a29
-ipc_shm-Xabbrev        +ipc.sh -Xabbrev -a29
+ipc_shm        +ipc.sh -a26
+ipc_shm-Xabbrev        +ipc.sh -Xabbrev -a26
 ipc_shm-Xraw   +ipc.sh -Xraw -a19
-ipc_shm-Xverbose       +ipc.sh -Xverbose -a36
+ipc_shm-Xverbose       +ipc.sh -Xverbose -a34
 kcmp   -a22
 kcmp-y -a22 -y -e trace=kcmp
+kcmp-y--pidns-translation      test_pidns -a22 -y -e trace=kcmp
 kern_features -a16
 kernel_version -a16 -v -e trace=bpf
 kernel_version-Xabbrev -a16 -Xabbrev -v -e trace=bpf
@@ -184,21 +296,29 @@ keyctl-Xabbrev    -a31 -s10 -e trace=keyctl -Xabbrev
 keyctl-Xraw    -a13 -s10 -e trace=keyctl -Xraw
 keyctl-Xverbose        -a41 -s10 -e trace=keyctl -Xverbose
 kill   -a12 -esignal=none
+kill--pidns-translation        test_pidns -a12 -e trace=kill -esignal=none
+ksysent        ../$NAME
 lchown -a30
 lchown32       -a32
 link
 linkat
 lookup_dcookie -a27
-lstat  -a32 -v -P stat.sample -P /dev/full
-lstat64        -a32 -v -P stat.sample -P /dev/full
+lstat  -a31 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full
+lstat64        -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full
 madvise        -a33
+maybe_switch_current_tcp       -a30 -f -e trace=execveat
+maybe_switch_current_tcp--quiet-thread-execve  -a30 -s48 -f -e trace=execveat --quiet=personality,thread-execve
 mbind
+mbind-Xabbrev  -Xabbrev -e trace=mbind
+mbind-Xraw     -a33 -Xraw -e trace=mbind
+mbind-Xverbose -Xverbose -e trace=mbind
 membarrier     -a36
 memfd_create
 memfd_create-Xabbrev   -Xabbrev -e trace=memfd_create
 memfd_create-Xraw      -a30 -Xraw -e trace=memfd_create
 memfd_create-Xverbose  -Xverbose -e trace=memfd_create
 migrate_pages  -a33
+migrate_pages--pidns-translation       test_pidns -a33 -e trace=migrate_pages
 mincore        -a22
 mkdir  -a20
 mkdirat        -a28
@@ -223,10 +343,13 @@ mount             -a33
 mount-Xabbrev  -a33 -e trace=mount -Xabbrev
 mount-Xraw     -a33 -e trace=mount -Xraw
 mount-Xverbose -a33 -e trace=mount -Xverbose
+move_mount     -y
+move_mount-P   -y -P /dev/full -e trace=move_mount
 move_pages     -s3
 move_pages-Xabbrev     -s3 -e trace=move_pages -Xabbrev
 move_pages-Xraw        -s3 -a36 -e trace=move_pages -Xraw
 move_pages-Xverbose    -s3 -e trace=move_pages -Xverbose
+move_pages--pidns-translation  test_pidns -s3 -e trace=move_pages
 mq     -a32 -e trace=mq_getsetattr,mq_open,mq_unlink
 mq_sendrecv    -a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink
 mq_sendrecv-read       -eread=0 -a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink
@@ -236,12 +359,17 @@ msg_control-v     -v -a21 -e trace=sendmsg
 msg_name       -a20 -e trace=recvmsg
 munlockall     -a13
 nanosleep      -a20
+net--decode-fds-dev-netlink    +net-yy-netlink.test --decode-fds=dev
+net--decode-fds-none-netlink   +net-yy-netlink.test --decode-fds=none -a9
+net--decode-fds-path-netlink   +net-yy-netlink.test --decode-fds=path
+net--decode-fds-socket-netlink +net-yy-netlink.test --decode-fds=socket
 net-icmp_filter        -e trace=getsockopt,setsockopt
 net-packet_mreq -e trace=setsockopt
 net-packet_mreq-Xabbrev        -e trace=setsockopt -Xabbrev
 net-packet_mreq-Xraw   -e trace=setsockopt -Xraw
 net-packet_mreq-Xverbose       -e trace=setsockopt -Xverbose
 net-sockaddr   -a24 -e trace=connect
+net-sockaddr--pidns-translation        test_pidns -a24 -e trace=connect
 net-tpacket_req -e trace=setsockopt
 net-tpacket_stats -e trace=getsockopt
 net-yy-inet6   +net-yy-inet.test
@@ -254,7 +382,7 @@ netlink_protocol    -e trace=sendto
 netlink_route  +netlink_sock_diag.test
 netlink_selinux        +netlink_sock_diag.test
 netlink_xfrm   +netlink_sock_diag.test
-newfstatat     -a32 -v -P stat.sample -P /dev/full
+newfstatat     -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full
 nfnetlink_acct                 +netlink_sock_diag.test
 nfnetlink_cthelper             +netlink_sock_diag.test
 nfnetlink_ctnetlink            +netlink_sock_diag.test
@@ -279,6 +407,7 @@ nlattr_ifla_brport          +netlink_sock_diag.test
 nlattr_ifla_linkinfo           +netlink_sock_diag.test
 nlattr_ifla_port               +netlink_sock_diag.test
 nlattr_ifla_xdp                        +netlink_sock_diag.test
+nlattr_ifla_xdp-y              +netlink_sock_diag.test -y; exec 9</dev/full
 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
@@ -289,7 +418,7 @@ nlattr_ndtmsg                       +netlink_sock_diag.test
 nlattr_netconfmsg              +netlink_sock_diag.test
 nlattr_netlink_diag_msg                +netlink_sock_diag.test
 nlattr_nlmsgerr                        +netlink_sock_diag.test
-nlattr_packet_diag_msg         +netlink_sock_diag-v.sh
+nlattr_packet_diag_msg         +netlink_sock_diag.test -v
 nlattr_rtgenmsg                        +netlink_sock_diag.test
 nlattr_rtmsg                   +netlink_sock_diag.test
 nlattr_smc_diag_msg            +netlink_sock_diag.test
@@ -312,7 +441,19 @@ oldselect-efault   -a13 -e trace=select
 oldselect-efault-P     -a13 -e trace=select -P /dev/full 9>>/dev/full
 oldstat        -a32 -v -P stat.sample -P /dev/full
 open   -a30 -P $NAME.sample
+open_tree -a30 -y
+open_tree-P -a30 --decode-fds -P /dev/full -e trace=open_tree
 openat -a36 -P $NAME.sample
+openat2        -a35
+openat2-Xabbrev        --trace=openat2 -a35 -Xabbrev
+openat2-Xraw   --trace=openat2 -a32 -Xraw
+openat2-Xverbose       --trace=openat2 -a35 -Xverbose
+openat2-v      --trace=openat2 -a35 -v
+openat2-v-y    --trace=openat2 -a36 -v -y </dev/full
+openat2-v-y-Xabbrev    --trace=openat2 -a35 -v -y -Xabbrev </dev/full
+openat2-v-y-Xraw       --trace=openat2 -a32 -v -y -Xraw </dev/full
+openat2-v-y-Xverbose   --trace=openat2 -a44 -v -y -Xverbose </dev/full
+openat2-y      --trace=openat2 -a36 -y </dev/full
 orphaned_process_group . "${srcdir=.}/PTRACE_SEIZE.sh"; run_strace_match_diff -f -e trace=none -e signal='!chld'
 osf_utimes     -a21
 pause  -a8 -esignal=none
@@ -322,7 +463,19 @@ perf_event_open_unabbrev   -a1 -v -e trace=perf_event_open
 personality-Xabbrev    +personality.test -Xabbrev
 personality-Xraw       +personality.test -a15 -Xraw
 personality-Xverbose   +personality.test -Xverbose
+pidfd_getfd    -a18 -Xverbose -e signal=none </dev/full
+pidfd_getfd-y  --trace=pidfd_getfd -a18 -e signal=none -y </dev/full
+pidfd_getfd-yy --trace=pidfd_getfd -a18 -e signal=none -yy </dev/full
+pidfd_open     -a17
+pidfd_open--decode-fd-path     -a17 -e decode-fd=path -e trace=pidfd_open
+pidfd_open--decode-fd-pidfd    -a17 -e decode-fd=pidfd -e trace=pidfd_open
+pidfd_open--decode-fd-socket   -a17 -e decode-fd=socket -e trace=pidfd_open
+pidfd_open-P   -a17 -P /dev/full -e trace=pidfd_open
+pidfd_open-y   -a17 -y -e trace=pidfd_open
+pidfd_open-yy  -a17 -yy -e trace=pidfd_open
+pidfd_open--pidns-translation  test_pidns -a17 -e trace=pidfd_open
 pidfd_send_signal
+pidfd_send_signal--pidns-translation test_pidns -e trace=pidfd_send_signal
 pipe2  -a15
 pkey_alloc     -a17
 pkey_free      -a13
@@ -345,8 +498,11 @@ printstrn-umoven   -s4096 -e signal=none -e trace=add_key
 printstrn-umoven-peekdata      -e signal=none -e trace=add_key
 printstrn-umoven-undumpable    -e signal=none -e trace=add_key
 prlimit64
+prlimit64--pidns-translation     test_pidns -e trace=prlimit64
 process_vm_readv       -s5 -a37
+process_vm_readv--pidns-translation    test_pidns -s5 -a37 -e trace=process_vm_readv
 process_vm_writev      -s5 -a38
+process_vm_writev--pidns-translation   test_pidns -s5 -a38 -e trace=process_vm_writev
 pselect6
 ptrace -a23 -e signal=none
 ptrace_syscall_info    -a35 -e signal=none -e trace=ptrace
@@ -364,7 +520,9 @@ readdir     -a16
 readlink       -xx
 readlinkat     -xx
 reboot         -s 256
+recv-MSG_TRUNC -a26 -e trace=recv
 recvfrom       -a35
+recvfrom-MSG_TRUNC     -e trace=recvfrom
 recvmmsg-timeout       -a25 -e trace=recvmmsg
 recvmsg        -eread=0 -ewrite=1 -e trace=recvmsg,sendmsg
 regex  test_trace_expr '' -etrace='/^(.*_)?statv?fs'
@@ -381,10 +539,12 @@ rmdir     -a22
 rt_sigpending  -a20
 rt_sigprocmask
 rt_sigqueueinfo        -esignal=none
+rt_sigqueueinfo--pidns-translation     test_pidns -esignal=none -e trace=rt_sigqueueinfo
 rt_sigreturn   -esignal='!USR1'
 rt_sigsuspend  -a20 -esignal=none
 rt_sigtimedwait        -a38
 rt_tgsigqueueinfo      -esignal=none
+rt_tgsigqueueinfo--pidns-translation   test_pidns -esignal=none -e trace=rt_tgsigqueueinfo
 s390_guarded_storage   -a32
 s390_guarded_storage-v -e trace=s390_guarded_storage -a32 -v
 s390_pci_mmio_read_write       -e trace=s390_pci_mmio_read,s390_pci_mmio_write -a30
@@ -395,19 +555,28 @@ sched     test_trace_expr times -e/sched
 sched_get_priority_mxx -a33 -e trace=sched_get_priority_min,sched_get_priority_max
 sched_rr_get_interval  -a31
 sched_xetaffinity      -a28 -e trace=sched_getaffinity,sched_setaffinity
+sched_xetaffinity--pidns-translation   test_pidns -a28 -e trace=sched_getaffinity,sched_setaffinity
 sched_xetattr  -a29 -e trace=sched_getattr,sched_setattr
+sched_xetattr--pidns-translation       test_pidns -a29 -e trace=sched_getattr,sched_setattr
 sched_xetparam -a23 -e trace=sched_getparam,sched_setparam
+sched_xetparam--pidns-translation      test_pidns -a23 -e trace=sched_getparam,sched_setparam
 sched_xetscheduler     -a22 -e trace=sched_getscheduler,sched_setscheduler
+sched_xetscheduler--pidns-translation  test_pidns -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
 select-P       -a36 -e trace=select -P /dev/full 9>>/dev/full
-semop  -a32 -e trace=semop,semtimedop
+semop  -a32
+semop-indirect -a32 -e trace=semop
+semtimedop
 sendfile       -a27
 sendfile64     -a29
-set_mempolicy  -s3 -a35
+set_mempolicy  -a34 -s3
+set_mempolicy-Xabbrev  -a34 -s3 -Xabbrev -e trace=set_mempolicy
+set_mempolicy-Xraw     -a24 -s3 -Xraw -e trace=set_mempolicy
+set_mempolicy-Xverbose -s3 -Xverbose -e trace=set_mempolicy
 setdomainname  -a24
 setfsgid       -a12
 setfsgid32     -a14
@@ -439,6 +608,7 @@ sigaction   -a31
 siginfo        -e trace=none
 signal -a25 -e signal=none -e trace='/^signal$'
 signal_receive -a16 -e trace=kill
+signal_receive--pidns-translation      test_pidns -a16 -e trace=kill
 signalfd4
 sigpending     -a15
 sigprocmask    -a34
@@ -450,6 +620,7 @@ so_peercred -e trace=getsockopt
 so_peercred-Xabbrev    -e trace=getsockopt -Xabbrev
 so_peercred-Xraw       -e trace=getsockopt -Xraw -a39
 so_peercred-Xverbose   -e trace=getsockopt -Xverbose
+so_peercred--pidns-translation test_pidns -e trace=getsockopt
 sock_filter-v  -v -e trace=getsockopt,setsockopt
 sock_filter-v-Xabbrev  -v -e trace=getsockopt,setsockopt -X abbrev
 sock_filter-v-Xraw     -a 37 -v -e trace=getsockopt,setsockopt -X raw
@@ -461,11 +632,57 @@ socketcall        -a20
 sockopt-sol_netlink    -e trace=getsockopt,setsockopt
 sockopt-timestamp      -e trace=recvmsg
 splice
-stat   -a32 -v -P stat.sample -P /dev/full
-stat64 -a32 -v -P stat.sample -P /dev/full
+stat   -a30 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full
+stat64 -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full
 statfs -a17
 statfs64       -a23
-statx  -a32 -v -P stat.sample -P /dev/full
+status-all     -a10 -e trace=chdir --status=detached,failed,successful,unavailable,unfinished
+status-failed  -a10 -e trace=chdir -Z
+status-failed-long     -a10 -e trace=chdir --failed-only
+status-failed-status   -a10 -e trace=chdir -e status=failed
+status-none    -e trace=all --status=none
+status-successful      -a10 -e trace=chdir -z
+status-successful-long -a10 -e trace=chdir --successful-only
+status-successful-status       -a10 -e trace=chdir --status=successful
+status-unfinished      -a10 -e trace=all --status=unfinished
+statx  -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full
+strace--absolute-timestamps +strace-t.test --absolute-timestamps
+strace--absolute-timestamps-format-time +strace-t.test --absolute-timestamps=format:time
+strace--absolute-timestamps-format-time-precision-s +strace-t.test --absolute-timestamps=format:time --absolute-timestamps=precision:s
+strace--absolute-timestamps-format-time-precision-ms +strace-tt.test 3 --absolute-timestamps=format:time --absolute-timestamps=precision:ms
+strace--absolute-timestamps-format-time-precision-us +strace-tt.test 6 --absolute-timestamps=format:time --absolute-timestamps=precision:us
+strace--absolute-timestamps-format-time-precision-ns +strace-tt.test 9 --absolute-timestamps=format:time --absolute-timestamps=precision:ns
+strace--absolute-timestamps-format-unix-precision-s +strace-ttt.test 0 --absolute-timestamps=format:unix --absolute-timestamps=precision:s
+strace--absolute-timestamps-format-unix-precision-ms +strace-ttt.test 3 --absolute-timestamps=precision:ms --absolute-timestamps=format:unix
+strace--absolute-timestamps-format-unix-precision-us +strace-ttt.test 6 --absolute-timestamps=precision:us --absolute-timestamps=format:unix
+strace--absolute-timestamps-format-unix-precision-ns +strace-ttt.test 9 --absolute-timestamps=format:unix --absolute-timestamps=precision:ns
+strace--follow-forks-output-separately +strace-ff.test --follow-forks --output-separately
+strace--relative-timestamps +strace-r.test --relative-timestamps
+strace--relative-timestamps-s +strace-r.test --relative-timestamps=s
+strace--relative-timestamps-ms +strace-r.test --relative-timestamps=ms
+strace--relative-timestamps-us +strace-r.test --relative-timestamps=us
+strace--relative-timestamps-ns +strace-r.test --relative-timestamps=ns
+strace--syscall-times +strace-T.test --syscall-times
+strace--syscall-times-s +strace-T.test --syscall-times=s
+strace--syscall-times-ms +strace-T.test --syscall-times=ms
+strace--syscall-times-us +strace-T.test --syscall-times=us
+strace--syscall-times-ns +strace-T.test --syscall-times=ns
+strace--strings-in-hex --trace=chdir --strings-in-hex --columns=18
+strace--strings-in-hex-all     --trace=chdir --strings-in-hex=all --columns=18
+strace--strings-in-hex-non-ascii       --trace=chdir --strings-in-hex=non-ascii --columns=12
+strace--timestamps +strace-t.test --timestamps
+strace--timestamps-time +strace-t.test --timestamps=time
+strace--timestamps-time-s +strace-t.test --timestamps=time,s
+strace--timestamps-time-ms +strace-tt.test 3 --timestamps=time,ms
+strace--timestamps-time-us +strace-tt.test 6 --timestamps=time,us
+strace--timestamps-time-ns +strace-tt.test 9 --timestamps=time,ns
+strace--timestamps-unix-s +strace-ttt.test 0 --timestamps=unix,s
+strace--timestamps-unix-ms +strace-ttt.test 3 --timestamps=unix,ms
+strace--timestamps-unix-us +strace-ttt.test 6 --timestamps=unix,us
+strace--timestamps-unix-ns +strace-ttt.test 9 --timestamps=unix,ns
+strace-n       -e trace=listen -n -qq -a 12
+strace-x       -e trace=chdir -x -a 12
+strace-xx      -e trace=chdir -xx -a 18
 swap   -a23 -e trace=swapon,swapoff
 sxetmask       -a11 -e trace=sgetmask,ssetmask
 symlink        -a34
@@ -474,14 +691,24 @@ sync      -a7
 sync_file_range
 sync_file_range2
 sysinfo        -a14
-syslog -a36
+syslog -a35
 tee
+tgkill -a15 --signal='!cont'
+tgkill--pidns-translation       test_pidns -a15 --signal='!cont' -e trace=tgkill
+threads-execve--quiet-thread-execve +threads-execve.test -s40 --quiet=personality,thread-execve
+threads-execve-q +threads-execve.test -q
+threads-execve-qq +threads-execve.test -qq
+threads-execve-qqq +threads-execve.test -qqq
 time   -a10
 timer_create
 timer_xettime  -e trace=timer_create,timer_settime,timer_gettime
 timerfd_xettime        -e trace=timerfd_create,timerfd_settime,timerfd_gettime
 times  -esignal=none
 times-fail     -a12 -e trace=times
+tkill  -a12 --signal='!cont'
+tkill--pidns-translation       test_pidns --signal='!cont' -a12 -e trace=tkill
+trace_clock    test_trace_expr 'clock_nanosleep|times' -e%clock
+trace_creds    test_trace_expr '([gs]et[^p]*([gu]id|groups)|caps|prctl|[fl]?chown|print(path-umovestr|strn-umoven)-undumpable|ptrace|quotactl|rt_sigtimedwait|rt_(tg)?sigqueueinfo).*' -e%creds
 trace_fstat    test_trace_expr '' -e%fstat -v -P stat.sample -P /dev/full
 trace_fstatfs  test_trace_expr '' -e%fstatfs
 trace_lstat    test_trace_expr '' -e%lstat -v -P stat.sample -P /dev/full
@@ -496,6 +723,7 @@ trace_stat  test_trace_expr '' -e%stat -v -P stat.sample -P /dev/full
 trace_stat_like        test_trace_expr '' -e%%stat -v -P stat.sample -P /dev/full
 trace_statfs   test_trace_expr '' -e%statfs
 trace_statfs_like      test_trace_expr '' -e%%statfs
+trie_test    run_prog
 truncate
 truncate64
 ugetrlimit     -a28
@@ -503,6 +731,7 @@ umask       -a11
 umoven-illptr  -a36 -e trace=nanosleep
 umovestr-illptr        -a11 -e trace=chdir
 umovestr3      -a14 -e trace=chdir
+umovestr_cached_adjacent       +umovestr_cached.test 3
 unlink -a24
 unlinkat       -a35
 unshare        -a11
@@ -525,7 +754,10 @@ waitpid    -a28
 xattr  -a22 -e trace=getxattr,fgetxattr,lgetxattr,setxattr,fsetxattr,lsetxattr,listxattr,flistxattr,llistxattr,removexattr,fremovexattr,lremovexattr
 xattr-strings  -a22 -s 4 -e trace=fsetxattr
 xet_robust_list        -a24 -e trace=get_robust_list,set_robust_list
+xet_robust_list--pidns-translation     test_pidns -a24 -e trace=get_robust_list,set_robust_list
 xetitimer      -a29 -e trace=setitimer,getitimer
 xetpgid        -a11 -e trace=getpgid,setpgid
-xetpriority    -a29 -e trace=getpriority,setpriority
+xetpgid--pidns-translation     test_pidns -a11 -e trace=getpgid,setpgid
+xetpriority    -a27 -e trace=getpriority,setpriority
+xetpriority--pidns-translation test_pidns -a27 -e trace=getpriority,setpriority
 xettimeofday   -a20 -e trace=gettimeofday,settimeofday
index 7667bdb028e6bc1c2eca75ee8597c0d1fbe10e9c..c2e9fa694a44b8cc9b07f0f096d82fb80dc52058 100644 (file)
@@ -1,14 +1,14 @@
 /*
  * Check decoding of get_mempolicy syscall.
  *
- * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_get_mempolicy
 
@@ -16,7 +16,7 @@
 # include <unistd.h>
 
 # include "xlat.h"
-# include "xlat/policies.h"
+# include "xlat/mpol_modes.h"
 
 # define MAX_STRLEN 3
 # define NLONGS(n) ((n + 8 * sizeof(long) - 2) \
@@ -68,20 +68,20 @@ main(void)
        rc = syscall(__NR_get_mempolicy, mode, nodemask, maxnode, addr, flags);
        printf("get_mempolicy(%p, %p, %lu, %#lx, %s|%#lx) = %ld %s (%m)\n",
               mode, nodemask, maxnode, addr,
-              "MPOL_F_NODE|MPOL_F_ADDR",
-              flags & ~3, rc, errno2name());
+              "MPOL_F_NODE|MPOL_F_ADDR|MPOL_F_MEMS_ALLOWED",
+              flags & ~7, rc, errno2name());
 
        mode = tail_alloc(sizeof(*mode));
 
        rc = syscall(__NR_get_mempolicy, mode, 0, 0, 0, 0);
        printf("get_mempolicy([");
-       printxval(policies, (unsigned) *mode, "MPOL_???");
+       printxval(mpol_modes, (unsigned) *mode, "MPOL_???");
        printf("], NULL, 0, NULL, 0) = %ld\n", rc);
 
        *mode = -1;
        rc = syscall(__NR_get_mempolicy, mode, 0, 0, mode - 1, 2);
        printf("get_mempolicy([");
-       printxval(policies, (unsigned) *mode, "MPOL_???");
+       printxval(mpol_modes, (unsigned) *mode, "MPOL_???");
        printf("], NULL, 0, %p, MPOL_F_ADDR) = %ld\n", mode - 1, rc);
 
        maxnode = get_page_size() * 8;
diff --git a/tests-mx32/get_process_reaper.c b/tests-mx32/get_process_reaper.c
new file mode 100644 (file)
index 0000000..2cc6906
--- /dev/null
@@ -0,0 +1,108 @@
+/*
+ * Print the process reaper id.
+ *
+ * Copyright (c) 2020 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <stdio.h>
+#include <unistd.h>
+#include <sys/wait.h>
+
+/* PARENT - CHILD - GRANDCHILD */
+
+static int
+grandchild(int read_fd, int write_fd)
+{
+       /* wait for notification from PARENT about CHILD completion */
+       pid_t pid;
+       if (read(read_fd, &pid, sizeof(pid)) != 0)
+               perror_msg_and_fail("read");
+
+       /* write ppid to PARENT */
+       pid = getppid();
+       if (write(write_fd, &pid, sizeof(pid)) != sizeof(pid))
+               perror_msg_and_fail("write");
+
+       _exit(0);
+}
+
+static int
+child(int read_fd, int write_fd)
+{
+       pid_t pid = fork();
+       if (pid < 0)
+               perror_msg_and_fail("fork");
+
+       if (!pid)
+               return grandchild(read_fd, write_fd);
+       else
+               _exit(0);
+}
+
+static int
+parent(pid_t pid, int read_fd, int write_fd)
+{
+       /* wait for CHILD completion */
+       int status;
+       if (waitpid(pid, &status, 0) != pid)
+               perror_msg_and_fail("waitpid");
+       if (status != 0)
+               error_msg_and_fail("status %x", status);
+
+       /* notify GRANDCHILD about CHILD completion */
+       close(write_fd),
+             write_fd = -1;
+
+       /* read ppid of GRANDCHILD */
+       if (read(read_fd, &pid, sizeof(pid)) != sizeof(pid))
+               perror_msg_and_fail("read");
+
+       printf("%d\n", pid);
+       return 0;
+}
+
+int
+main(void)
+{
+       int parent_grandchild_fds[2];
+#define parent_read_fd         parent_grandchild_fds[0]
+#define grandchild_write_fd    parent_grandchild_fds[1]
+
+       int grandchild_parent_fds[2];
+#define grandchild_read_fd     grandchild_parent_fds[0]
+#define parent_write_fd                grandchild_parent_fds[1]
+
+       if (pipe(parent_grandchild_fds) ||
+           pipe(grandchild_parent_fds))
+               perror_msg_and_fail("pipe");
+
+       pid_t pid = fork();
+       if (pid < 0)
+               perror_msg_and_fail("fork");
+
+       if (!pid) {
+               /* CHILD */
+               close(parent_read_fd),
+                     parent_read_fd = -1;
+
+               close(parent_write_fd),
+                     parent_write_fd = -1;
+
+               return child(grandchild_read_fd,
+                            grandchild_write_fd);
+       } else {
+               /* PARENT */
+               close(grandchild_read_fd),
+                     grandchild_read_fd = -1;
+
+               close(grandchild_write_fd),
+                     grandchild_write_fd = -1;
+
+               return parent(pid, parent_read_fd,
+                                  parent_write_fd);
+       }
+}
index f58d1f510f82c0fc0f6744a98b9bf543adedf2bb..7921bb1e22cb22bef176c88983a5103c3cc1f054 100644 (file)
@@ -2,6 +2,7 @@
  * Find out the size of kernel's sigset_t.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +11,7 @@
 #include "tests.h"
 #include <signal.h>
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 /*
  * If the sigset size specified to rt_sigprocmask is not equal to the size
index ecbaf0dc246330da3e1f417f4be574b43fb5f74f..85edf40751c82dbc7398c23e2ae83c69ab052ea0 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of getcpu syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getcpu
 
index 5f9a7293b50da9e0a1bc6fda8f02a6319c2af312..ff563ff44bd5da4f9baf9fbabfa0d66675b96b20 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -7,7 +7,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getcwd
 
diff --git a/tests-mx32/getdents-v.c b/tests-mx32/getdents-v.c
new file mode 100644 (file)
index 0000000..c9bd7ae
--- /dev/null
@@ -0,0 +1,3 @@
+/* Check --no-abbrev decoding of getdents syscall.  */
+#define VERBOSE 1
+#include "getdents.c"
diff --git a/tests-mx32/getdents-v.gen.test b/tests-mx32/getdents-v.gen.test
new file mode 100755 (executable)
index 0000000..fc1466a
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getdents-v -a22 -v --trace=getdents); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a22 -v --trace=getdents
index 998e667f0a357c14cd05572a1eb328814ec29fb0..2eb012a46707bf5943b38bb6bf4c19cc570e9649 100644 (file)
 /*
+ * Check decoding of getdents syscall.
+ *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getdents
 
-# include <assert.h>
-# include <dirent.h>
-# include <fcntl.h>
-# include <stddef.h>
-# include <stdio.h>
-# include <sys/stat.h>
-# include <unistd.h>
-
-static const char fname[] =
-       "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
-       "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
-       "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
-       "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
-       "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
-       "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
-       "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
-       "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nZ";
-static const char qname[] =
-       "A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\n"
-       "A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\n"
-       "A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\n"
-       "A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\n"
-       "A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\n"
-       "A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\n"
-       "A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\n"
-       "A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nZ";
+# define kernel_dirent_type kernel_dirent_t
+# define NR_getdents   __NR_getdents
+# define STR_getdents  "getdents"
 
-static char buf[8192];
+# include "xgetdents.c"
 
-static const char *
-str_d_type(const unsigned char d_type)
-{
-       switch (d_type) {
-               case DT_DIR:
-                       return "DT_DIR";
-               case DT_REG:
-                       return "DT_REG";
-               default:
-                       return "DT_UNKNOWN";
-       }
-}
+# if VERBOSE
 static void
-print_dirent(const kernel_dirent *d)
+print_dirent(const kernel_dirent_type *d)
 {
-       const unsigned int d_name_offset = offsetof(kernel_dirent, d_name);
-       int d_name_len = d->d_reclen - d_name_offset - 1;
-       assert(d_name_len > 0);
-
-       printf("{d_ino=%llu, d_off=%llu, d_reclen=%u, d_name=",
-              (unsigned long long) d->d_ino,
-              (unsigned long long) d->d_off, d->d_reclen);
-
-       if (d->d_name[0] == '.')
-               printf("\"%.*s\"", d_name_len, d->d_name);
-       else
-               printf("\"%s\"", qname);
-
+       const unsigned int d_name_offset = offsetof(kernel_dirent_type, d_name);
+       int d_name_len = (int) d->d_reclen - d_name_offset - 1;
+       if (d_name_len <= 0)
+               error_msg_and_fail("d_name_len = %d", d_name_len);
+
+       PRINT_FIELD_U("{", *d, d_ino);
+       PRINT_FIELD_U(", ", *d, d_off);
+       PRINT_FIELD_U(", ", *d, d_reclen);
+       printf(", d_name=");
+       print_quoted_cstring(d->d_name, d_name_len);
        printf(", d_type=%s}",
               str_d_type(*((const char *) d + d->d_reclen - 1)));
 }
-
-int
-main(void)
-{
-       static const char dname[] = "getdents.test.tmp.dir";
-
-       assert(!mkdir(dname, 0700));
-       assert(!chdir(dname));
-       (void) close(0);
-       assert(!creat(fname, 0600));
-       assert(!close(0));
-       assert(!open(".", O_RDONLY | O_DIRECTORY));
-
-       unsigned long count = (unsigned long) 0xfacefeeddeadbeefULL;
-       long rc = syscall(__NR_getdents, (long) 0xdefacedffffffffULL, NULL,
-                         count);
-       printf("getdents(-1, NULL, %u) = %ld %s (%m)\n",
-              (unsigned) count, rc, errno2name());
-
-       count = (unsigned long) 0xfacefeed00000000ULL | sizeof(buf);
-       while ((rc = syscall(__NR_getdents, 0, buf, count))) {
-               kernel_dirent *d;
-               long i;
-
-               if (rc < 0)
-                       perror_msg_and_skip("getdents");
-               printf("getdents(0, [");
-               for (i = 0; i < rc; i += d->d_reclen) {
-                       d = (kernel_dirent *) &buf[i];
-                       if (i)
-                               printf(", ");
-                       print_dirent(d);
-               }
-               printf("], %u) = %ld\n", (unsigned) count, rc);
-       }
-       printf("getdents(0, [], %u) = 0\n", (unsigned) count);
-       puts("+++ exited with 0 +++");
-       assert(!unlink(fname));
-       assert(!chdir(".."));
-       assert(!rmdir(dname));
-
-       return 0;
-}
+# endif
 
 #else
 
index 0db5f20aeda9a10e46cdb9495c9b337398332d39..adcbb9c35ca2754b1e5d2ab185c6705c34c78fe8 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getdents -a22 -v); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getdents -a31 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a22 -v
+run_strace_match_diff -a31 
diff --git a/tests-mx32/getdents64-v.c b/tests-mx32/getdents64-v.c
new file mode 100644 (file)
index 0000000..cf78248
--- /dev/null
@@ -0,0 +1,3 @@
+/* Check --no-abbrev decoding of getdents64 syscall.  */
+#define VERBOSE 1
+#include "getdents64.c"
diff --git a/tests-mx32/getdents64-v.gen.test b/tests-mx32/getdents64-v.gen.test
new file mode 100755 (executable)
index 0000000..9b49ce9
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getdents64-v -a24 -v --trace=getdents64); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a24 -v --trace=getdents64
index e0575cf4edc696dea8eb1f2172d2bcbeff895ff2..0e46a2212d276cfdc78a7bc7472d7081a96b3c39 100644 (file)
 /*
+ * Check decoding of getdents64 syscall.
+ *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getdents64
 
-# include <assert.h>
-# include <dirent.h>
-# include <fcntl.h>
-# include <inttypes.h>
-# include <stddef.h>
-# include <stdio.h>
-# include <sys/stat.h>
-# include <unistd.h>
-
-static const char fname[] =
-       "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
-       "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
-       "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
-       "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
-       "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
-       "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
-       "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
-       "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nZ";
-static const char qname[] =
-       "A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\n"
-       "A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\n"
-       "A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\n"
-       "A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\n"
-       "A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\n"
-       "A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\n"
-       "A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\n"
-       "A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nZ";
+# define kernel_dirent_type kernel_dirent64_t
+# define NR_getdents   __NR_getdents64
+# define STR_getdents  "getdents64"
 
-typedef struct {
-               uint64_t d_ino;
-               uint64_t d_off;
-               unsigned short d_reclen;
-               unsigned char d_type;
-               char d_name[256];
-} kernel_dirent64;
+# include "xgetdents.c"
 
-static char buf[8192];
-
-static const char *
-str_d_type(const unsigned char d_type)
-{
-       switch (d_type) {
-               case DT_DIR:
-                       return "DT_DIR";
-               case DT_REG:
-                       return "DT_REG";
-               default:
-                       return "DT_UNKNOWN";
-       }
-}
+# if VERBOSE
 static void
-print_dirent(const kernel_dirent64 *d)
+print_dirent(const kernel_dirent_type *d)
 {
-       const unsigned int d_name_offset = offsetof(kernel_dirent64, d_name);
-       int d_name_len = d->d_reclen - d_name_offset;
-       assert(d_name_len > 0);
-
-       printf("{d_ino=%" PRIu64 ", d_off=%" PRId64
-              ", d_reclen=%u, d_type=%s, d_name=",
-              d->d_ino, d->d_off, d->d_reclen, str_d_type(d->d_type));
-
-       if (d->d_name[0] == '.')
-               printf("\"%.*s\"}", d_name_len, d->d_name);
-       else
-               printf("\"%s\"}", qname);
-}
-
-int
-main(void)
-{
-       static const char dname[] = "getdents64.test.tmp.dir";
-
-       assert(!mkdir(dname, 0700));
-       assert(!chdir(dname));
-       (void) close(0);
-       assert(!creat(fname, 0600));
-       assert(!close(0));
-       assert(!open(".", O_RDONLY | O_DIRECTORY));
-
-       unsigned long count = (unsigned long) 0xfacefeeddeadbeefULL;
-       long rc = syscall(__NR_getdents64, (long) 0xdefacedffffffffULL, NULL,
-                         count);
-       printf("getdents64(-1, NULL, %u) = %ld %s (%m)\n",
-              (unsigned) count, rc, errno2name());
-
-       count = (unsigned long) 0xfacefeed00000000ULL | sizeof(buf);
-       while ((rc = syscall(__NR_getdents64, 0, buf, count))) {
-               kernel_dirent64 *d;
-               long i;
-
-               if (rc < 0)
-                       perror_msg_and_skip("getdents64");
-               printf("getdents64(0, [");
-               for (i = 0; i < rc; i += d->d_reclen) {
-                       d = (kernel_dirent64 *) &buf[i];
-                       if (i)
-                               printf(", ");
-                       print_dirent(d);
-               }
-               printf("], %u) = %ld\n", (unsigned) count, rc);
-       }
-       printf("getdents64(0, [], %u) = 0\n", (unsigned) count);
-       puts("+++ exited with 0 +++");
-       assert(!unlink(fname));
-       assert(!chdir(".."));
-       assert(!rmdir(dname));
-
-       return 0;
+       const unsigned int d_name_offset = offsetof(kernel_dirent_type, d_name);
+       int d_name_len = (int) d->d_reclen - d_name_offset;
+       if (d_name_len <= 0)
+               error_msg_and_fail("d_name_len = %d", d_name_len);
+
+       PRINT_FIELD_U("{", *d, d_ino);
+       PRINT_FIELD_U(", ", *d, d_off);
+       PRINT_FIELD_U(", ", *d, d_reclen);
+       printf(", d_type=%s, d_name=", str_d_type(d->d_type));
+       print_quoted_cstring(d->d_name, d_name_len);
+       printf("}");
 }
+# endif
 
 #else
 
index 6e24d400df46ff49103d06a0a9b9693e1d2adfcd..de87954ba2e1c80c3cb38028438525993f6f1f36 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getdents64 -a24 -v); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getdents64 -a33 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a24 -v
+run_strace_match_diff -a33 
diff --git a/tests-mx32/getegid-creds.gen.test b/tests-mx32/getegid-creds.gen.test
new file mode 100755 (executable)
index 0000000..7ac87f1
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getegid-creds +getuid.test ); do not edit.
+set -- 
+. "${srcdir=.}/getuid.test"
index 2e0754b77580512ace941dc625f69aa4879d5523..d5927fea2c61a30abd9c8ddcde8698e7745fcb61 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getegid
 
@@ -16,7 +16,7 @@
 int
 main(void)
 {
-       printf("getegid() = %ld\n", syscall(__NR_getegid));
+       printf("getegid() = %s\n", sprintrc(syscall(__NR_getegid)));
        return 0;
 }
 
diff --git a/tests-mx32/getegid32-creds.gen.test b/tests-mx32/getegid32-creds.gen.test
new file mode 100755 (executable)
index 0000000..c080ac0
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getegid32-creds +getuid.test ); do not edit.
+set -- 
+. "${srcdir=.}/getuid.test"
index b7f5cb0827bcf71f4688739eef721ca9e4fa818d..bbfcf94e01cecf90b9b5859fd848330a7291b3b4 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getegid32
 
diff --git a/tests-mx32/geteuid-creds.gen.test b/tests-mx32/geteuid-creds.gen.test
new file mode 100755 (executable)
index 0000000..8210f67
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (geteuid-creds +getuid.test ); do not edit.
+set -- 
+. "${srcdir=.}/getuid.test"
index 430df1c6526bfaf88644140def29d116002fd7a8..a1defc8c2913da663a41ef763b7fd5be86ef83b8 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_geteuid
 
@@ -16,7 +16,7 @@
 int
 main(void)
 {
-       printf("geteuid() = %ld\n", syscall(__NR_geteuid));
+       printf("geteuid() = %s\n", sprintrc(syscall(__NR_geteuid)));
        return 0;
 }
 
diff --git a/tests-mx32/geteuid32-creds.gen.test b/tests-mx32/geteuid32-creds.gen.test
new file mode 100755 (executable)
index 0000000..e0ced55
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (geteuid32-creds +getuid.test ); do not edit.
+set -- 
+. "${srcdir=.}/getuid.test"
index 94174f3238872b83b5d048270db996c78f146491..e6bd57d1ec449ae89caa0eb284d9a44af728a353 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_geteuid32
 
diff --git a/tests-mx32/getgid-creds.gen.test b/tests-mx32/getgid-creds.gen.test
new file mode 100755 (executable)
index 0000000..e82e11d
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getgid-creds +getuid.test ); do not edit.
+set -- 
+. "${srcdir=.}/getuid.test"
index 1bd705023f616cd58b59cc95619f18315d42db8e..c9c9f7227632b4b7e827c93d93e8967539c79371 100644 (file)
@@ -1,14 +1,14 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
-#ifdef __NR_getgid
+#if defined __NR_getgid && (!defined __NR_getxgid || __NR_getxgid != __NR_getgid)
 
 # include <stdio.h>
 # include <unistd.h>
diff --git a/tests-mx32/getgid32-creds.gen.test b/tests-mx32/getgid32-creds.gen.test
new file mode 100755 (executable)
index 0000000..7d37993
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getgid32-creds +getuid.test ); do not edit.
+set -- 
+. "${srcdir=.}/getuid.test"
index c6859cf4d288dda33d853cfada41e6826365b230..922c6f5f9e26506080f991e3e3849056e08f1ff5 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getgid32
 
index 36c095df0c7580f0e81dfada12495c47f6e475cc..c87d987492644dbf050ee12b587f5c6b75190436 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of getgroups/getgroups32 syscalls.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -17,7 +17,7 @@
 #else
 
 # include "tests.h"
-# include <asm/unistd.h>
+# include "scno.h"
 
 # ifdef __NR_getgroups
 
index d005792d31dd75d38706857b1ba1824fb3186ebb..a626d35f3dd70ff911940abbd67bdf7e00308119 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getgroups32
 
diff --git a/tests-mx32/getpgrp--pidns-translation.c b/tests-mx32/getpgrp--pidns-translation.c
new file mode 100644 (file)
index 0000000..de8ceb3
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "getpgrp.c"
diff --git a/tests-mx32/getpgrp--pidns-translation.gen.test b/tests-mx32/getpgrp--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..9363611
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getpgrp--pidns-translation test_pidns -e trace=getpgrp -a10); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -e trace=getpgrp -a10
index 3d45f718fb13f3fae6ee0d275dbd5c38574cc47e..c981d79b1b82aa0bc54f4a8b85e65509177332f9 100644 (file)
@@ -1,12 +1,13 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
+#include "pidns.h"
 
 #ifdef __NR_getpgrp
 
 int
 main(void)
 {
-       printf("getpgrp() = %ld\n", syscall(__NR_getpgrp));
+       PIDNS_TEST_INIT;
 
+       pidns_print_leader();
+       printf("getpgrp() = %d%s\n", (int) syscall(__NR_getpgrp),
+               pidns_pid2str(PT_PGID));
+
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
diff --git a/tests-mx32/getpid--pidns-translation.c b/tests-mx32/getpid--pidns-translation.c
new file mode 100644 (file)
index 0000000..94b12a1
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "getpid.c"
diff --git a/tests-mx32/getpid--pidns-translation.gen.test b/tests-mx32/getpid--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..abe2cf4
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getpid--pidns-translation test_pidns -e trace=getpid -a9); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -e trace=getpid -a9
index 5e88e052a343390ed4789c6e9a158d565eb2d4b8..4291400d09a03e7d29512d4182a25ef85b16d846 100644 (file)
@@ -1,14 +1,15 @@
 /*
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
+#include "pidns.h"
 
-#ifdef __NR_getpid
+#if defined __NR_getpid && (!defined __NR_getxpid || __NR_getxpid != __NR_getpid)
 
 # include <stdio.h>
 # include <unistd.h>
 int
 main(void)
 {
-       printf("getpid() = %ld\n", syscall(__NR_getpid));
+       PIDNS_TEST_INIT;
+
+       pidns_print_leader();
+       printf("getpid() = %d%s\n", (int) syscall(__NR_getpid),
+               pidns_pid2str(PT_TGID));
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
index 718d0691d9f8acfabc42ec029df955d75c32b169..fd279763879a00130fffe13d3b7aeaa9dfe201c2 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getppid
 
@@ -16,7 +16,7 @@
 int
 main(void)
 {
-       printf("getppid() = %ld\n", syscall(__NR_getppid));
+       printf("getppid() = %s\n", sprintrc(syscall(__NR_getppid)));
        puts("+++ exited with 0 +++");
        return 0;
 }
index eb6cdb1bcb3d147b1e524d6ac8770689fe0cf882..ebb8c839ac426925c8ff33635a3773f03a77ae23 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getrandom
 
index 3ad2c190419fd678e0dcbf9bac9288d9815edb9a..ebf352129ee132e8a6ad182741117bd9c94268b5 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getresgid
 
index b78afaed912626e570f8f2984fc54ee6d251066f..bd8ce2124ce77e300b18fe3454ccb2931f9396bc 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getresgid32
 
index 5bb2e30114787a5020d4a7e59f5fe519a02aeaef..8a29c17275ca0b25791e15031ceeb154e47916df 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getresuid
 
index 13acc695af8202388300e1c4120c89e577f77a2a..306b9d596281800820cd34ff37fba52a3ac8cdb0 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getresuid32
 
index 6d3b4cd5d24edab202f3e1db393cad0c282083b8..8a3230910874199c3ca3879cf20a04408b60803b 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getrlimit
 
index 412d8a004c811eadd60a767558bb2af176ee8e0b..13defc9fe466514fed61b2103e4438f33d534e8f 100644 (file)
@@ -1,14 +1,14 @@
 /*
  * Copyright (c) 2016 Fei Jie <feij.fnst@cn.fujitsu.com>
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getrusage
 
 # include <unistd.h>
 # include <errno.h>
 
+# include "kernel_rusage.h"
 # include "xlat.h"
 # include "xlat/usagewho.h"
 
 int
-invoke_print(int who, const char *who_str, struct rusage *usage)
+invoke_print(int who, const char *who_str, kernel_rusage_t *usage)
 {
        int rc = syscall(__NR_getrusage, who, usage);
        int saved_errno = errno;
        printf("getrusage(%s, {ru_utime={tv_sec=%lld, tv_usec=%llu}"
-              ", ru_stime={tv_sec=%lld, tv_usec=%llu}, ru_maxrss=%lu"
-              ", ru_ixrss=%lu, ru_idrss=%lu, ru_isrss=%lu, ru_minflt=%lu"
-              ", ru_majflt=%lu, ru_nswap=%lu, ru_inblock=%lu"
-              ", ru_oublock=%lu, ru_msgsnd=%lu, ru_msgrcv=%lu"
-              ", ru_nsignals=%lu, ru_nvcsw=%lu, ru_nivcsw=%lu}) = %s\n",
+              ", ru_stime={tv_sec=%lld, tv_usec=%llu}, ru_maxrss=%llu"
+              ", ru_ixrss=%llu, ru_idrss=%llu, ru_isrss=%llu, ru_minflt=%llu"
+              ", ru_majflt=%llu, ru_nswap=%llu, ru_inblock=%llu"
+              ", ru_oublock=%llu, ru_msgsnd=%llu, ru_msgrcv=%llu"
+              ", ru_nsignals=%llu, ru_nvcsw=%llu, ru_nivcsw=%llu}) = %s\n",
               who_str,
               (long long) usage->ru_utime.tv_sec,
               zero_extend_signed_to_ull(usage->ru_utime.tv_usec),
               (long long) usage->ru_stime.tv_sec,
               zero_extend_signed_to_ull(usage->ru_stime.tv_usec),
-              usage->ru_maxrss, usage->ru_ixrss, usage->ru_idrss,
-              usage->ru_isrss, usage->ru_minflt, usage->ru_majflt,
-              usage->ru_nswap, usage->ru_inblock, usage->ru_oublock,
-              usage->ru_msgsnd, usage->ru_msgrcv, usage->ru_nsignals,
-              usage->ru_nvcsw, usage->ru_nivcsw, sprintrc(rc));
+              zero_extend_signed_to_ull(usage->ru_maxrss),
+              zero_extend_signed_to_ull(usage->ru_ixrss),
+              zero_extend_signed_to_ull(usage->ru_idrss),
+              zero_extend_signed_to_ull(usage->ru_isrss),
+              zero_extend_signed_to_ull(usage->ru_minflt),
+              zero_extend_signed_to_ull(usage->ru_majflt),
+              zero_extend_signed_to_ull(usage->ru_nswap),
+              zero_extend_signed_to_ull(usage->ru_inblock),
+              zero_extend_signed_to_ull(usage->ru_oublock),
+              zero_extend_signed_to_ull(usage->ru_msgsnd),
+              zero_extend_signed_to_ull(usage->ru_msgrcv),
+              zero_extend_signed_to_ull(usage->ru_nsignals),
+              zero_extend_signed_to_ull(usage->ru_nvcsw),
+              zero_extend_signed_to_ull(usage->ru_nivcsw),
+              sprintrc(rc));
        errno = saved_errno;
        return rc;
 }
@@ -49,7 +60,7 @@ invoke_print(int who, const char *who_str, struct rusage *usage)
 int
 main(void)
 {
-       TAIL_ALLOC_OBJECT_CONST_PTR(struct rusage, usage);
+       TAIL_ALLOC_OBJECT_CONST_PTR(kernel_rusage_t, usage);
        if (invoke_print(ARG_STR(RUSAGE_SELF), usage)) {
                perror_msg_and_fail("RUSAGE_SELF");
        }
diff --git a/tests-mx32/getsid--pidns-translation.c b/tests-mx32/getsid--pidns-translation.c
new file mode 100644 (file)
index 0000000..7f983e8
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "getsid.c"
diff --git a/tests-mx32/getsid--pidns-translation.gen.test b/tests-mx32/getsid--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..c07ae33
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getsid--pidns-translation test_pidns -e trace=getsid -a10); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -e trace=getsid -a10
index 588ea4ab0779cec82363e7639231ec24f140cfdb..71355bb63c73a9a7061f6615d66a847200599bb2 100644 (file)
@@ -1,20 +1,27 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
+#include "pidns.h"
+
 #include <stdio.h>
 #include <unistd.h>
 
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        pid_t pid = getpid();
-       printf("getsid(%d) = %d\n", pid, getsid(pid));
+       pidns_print_leader();
+       printf("getsid(%d%s) = %d%s\n", pid, pidns_pid2str(PT_TGID),
+               getsid(pid), pidns_pid2str(PT_SID));
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
diff --git a/tests-mx32/gettid--pidns-translation.c b/tests-mx32/gettid--pidns-translation.c
new file mode 100644 (file)
index 0000000..500c321
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "gettid.c"
diff --git a/tests-mx32/gettid--pidns-translation.test b/tests-mx32/gettid--pidns-translation.test
new file mode 100755 (executable)
index 0000000..9624129
--- /dev/null
@@ -0,0 +1,18 @@
+#!/bin/sh
+#
+# Check pidns translation of gettid's return value.
+#
+# Copyright (c) 2020 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+. "${srcdir=.}/init.sh"
+
+run_prog > /dev/null
+run_strace -a9 --pidns-translation -f -e trace=gettid $args > "$EXP"
+parent_pid="$(tail -n 2 $LOG | head -n 1 | cut -d' ' -f1)"
+init_pid="$(tail -n 1 $LOG | cut -d' ' -f1)"
+# uniq: filter out extra gettid calls made by musl libc
+grep -E -v "^($parent_pid|$init_pid) |unfinished|resumed" "$LOG" | uniq > "$OUT"
+match_diff "$OUT" "$EXP"
index 24947e89ce9a2ee00923989641db1cf49f574cf4..8df4f8d5ab5811fa71f43c1a025bb904606eca73 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -8,12 +8,18 @@
 #include "tests.h"
 #include <stdio.h>
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
+#include "pidns.h"
 
 int
 main(void)
 {
-       printf("gettid() = %ld\n", syscall(__NR_gettid));
+       PIDNS_TEST_INIT;
+
+       pidns_print_leader();
+       printf("gettid() = %d%s\n", (int) syscall(__NR_gettid),
+               pidns_pid2str(PT_TID));
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
diff --git a/tests-mx32/getuid-creds.gen.test b/tests-mx32/getuid-creds.gen.test
new file mode 100755 (executable)
index 0000000..5cd14c5
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getuid-creds +getuid.test ); do not edit.
+set -- 
+. "${srcdir=.}/getuid.test"
index 56f6c9021e69b53bbd38e45ca4b245fb280cab14..f3ff9af13bc03f3d2ac79eb58b4b1740b9975624 100644 (file)
@@ -1,14 +1,14 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
-#ifdef __NR_getuid
+#if defined __NR_getuid && (!defined __NR_getxuid || __NR_getxuid != __NR_getuid)
 
 # include <stdio.h>
 # include <unistd.h>
index a0bbb3ed106864fe2f8cb7a6a530a87ef6389a0d..e8351a221a24d0f37d975fb35fec491715bcedd8 100755 (executable)
@@ -1,16 +1,33 @@
 #!/bin/sh
 #
-# Check getuid syscall decoding.
+# Check get(e)?[gu]id(32)? syscalls decoding.
 #
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 . "${srcdir=.}/init.sh"
 
+check_prog grep
 check_prog uniq
+
+if [ "${NAME%-creds}" = "$NAME" ]; then
+       syscall="$NAME"
+else
+       NAME="${NAME%-creds}"
+       syscall='%creds'
+fi
+
 run_prog > /dev/null
-run_strace -qq -a9 -e$NAME $args > "$EXP"
-uniq < "$LOG" > "$OUT"
+run_strace -qq -a9 -e"$syscall" $args > "$EXP"
+
+case "$STRACE_ARCH:$syscall" in
+       mips:%creds)
+               grep -Fxv 'prctl(PR_GET_FP_MODE) = 0' < "$LOG" | uniq > "$OUT"
+               ;;
+       *)      uniq < "$LOG" > "$OUT"
+               ;;
+esac
+
 match_diff "$OUT" "$EXP"
diff --git a/tests-mx32/getuid32-creds.gen.test b/tests-mx32/getuid32-creds.gen.test
new file mode 100755 (executable)
index 0000000..d6311ca
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getuid32-creds +getuid.test ); do not edit.
+set -- 
+. "${srcdir=.}/getuid.test"
index 1222dbcb3a594bae71734441b4d3c82b24275e03..0c0441f7381fd6f9f2d183cc7820f8a9f3e2f25d 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getuid32
 
diff --git a/tests-mx32/getxgid.c b/tests-mx32/getxgid.c
new file mode 100644 (file)
index 0000000..2fa6edd
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_getxgid
+
+# include <stdio.h>
+# include <unistd.h>
+
+int
+main(void)
+{
+       long id = syscall(__NR_getxgid);
+       printf("getxgid() = %ld (egid %ld)\n", id, id);
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_getxgid")
+
+#endif
diff --git a/tests-mx32/getxgid.gen.test b/tests-mx32/getxgid.gen.test
new file mode 100755 (executable)
index 0000000..e9068a3
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getxgid -a10 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10 
diff --git a/tests-mx32/getxpid.c b/tests-mx32/getxpid.c
new file mode 100644 (file)
index 0000000..f8218db
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_getxpid
+
+# include <stdio.h>
+# include <unistd.h>
+
+int
+main(void)
+{
+       long id = syscall(__NR_getxpid);
+       pid_t ppid = getppid();
+
+       printf("getxpid() = %ld (ppid %ld)\n", id, (long) ppid);
+       printf("getxpid() = %ld (ppid %ld)\n", id, (long) ppid);
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_getxpid")
+
+#endif
diff --git a/tests-mx32/getxpid.gen.test b/tests-mx32/getxpid.gen.test
new file mode 100755 (executable)
index 0000000..0473cce
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getxpid -a10 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10 
diff --git a/tests-mx32/getxuid.c b/tests-mx32/getxuid.c
new file mode 100644 (file)
index 0000000..6263550
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_getxuid
+
+# include <stdio.h>
+# include <unistd.h>
+
+int
+main(void)
+{
+       long id = syscall(__NR_getxuid);
+       printf("getxuid() = %ld (euid %ld)\n", id, id);
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_getxuid")
+
+#endif
diff --git a/tests-mx32/getxuid.gen.test b/tests-mx32/getxuid.gen.test
new file mode 100755 (executable)
index 0000000..37db2dd
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getxuid -a10 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10 
diff --git a/tests-mx32/getxxid.c b/tests-mx32/getxxid.c
deleted file mode 100644 (file)
index 864cea5..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
- * All rights reserved.
- *
- * SPDX-License-Identifier: GPL-2.0-or-later
- */
-
-#include "tests.h"
-#include <asm/unistd.h>
-
-#if defined __NR_getxpid && defined __NR_getxuid && defined __NR_getxgid
-
-# include <stdio.h>
-# include <unistd.h>
-
-int
-main(void)
-{
-       long id;
-       pid_t ppid;
-
-       id = syscall(__NR_getxpid);
-       ppid = getppid();
-       printf("getxpid() = %ld (ppid %ld)\n", id, (long) ppid);
-       printf("getxpid() = %ld (ppid %ld)\n", id, (long) ppid);
-
-       id = syscall(__NR_getxuid);
-       printf("getxuid() = %ld (euid %ld)\n", id, id);
-
-       id = syscall(__NR_getxgid);
-       printf("getxgid() = %ld (egid %ld)\n", id, id);
-
-       puts("+++ exited with 0 +++");
-       return 0;
-}
-
-#else
-
-SKIP_MAIN_UNDEFINED("__NR_getxpid && __NR_getxuid && __NR_getxgid")
-
-#endif
diff --git a/tests-mx32/getxxid.gen.test b/tests-mx32/getxxid.gen.test
deleted file mode 100755 (executable)
index 5aa89f6..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getxxid -a10 -e trace=getxpid,getxuid,getxgid); do not edit.
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a10 -e trace=getxpid,getxuid,getxgid
index 40e621889ab8b27a2bb640c424492e75131e95e2..524170514211c603fefd3b03ae1d7013cd95c55b 100644 (file)
@@ -1,7 +1,7 @@
 #!/bin/sh
 #
 # Copyright (c) 2011-2016 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2011-2018 The strace developers.
+# Copyright (c) 2011-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -11,6 +11,7 @@ ME_="${0##*/}"
 LOG="log"
 OUT="out"
 EXP="exp"
+CONFIG_H="../../config.h"
 
 warn_() { printf >&2 '%s\n' "$*"; }
 fail_() { warn_ "$ME_: failed test: $*"; exit 1; }
@@ -18,6 +19,33 @@ skip_() { warn_ "$ME_: skipped test: $*"; exit 77; }
 framework_failure_() { warn_ "$ME_: framework failure: $*"; exit 99; }
 framework_skip_() { warn_ "$ME_: framework skip: $*"; exit 77; }
 
+# get_config_str OPTION
+#
+# Returns the value of OPTION from config.h (path to which set
+# in the CONFIG_H variable).
+get_config_str()
+{
+       sed -r -n 's/#define[[:space:]]*'"$1"'[[:space:]]*"([^"]*)".*/\1/p' \
+               "$CONFIG_H"
+}
+
+# get_config_option OPTION YES_STRING [NO_STRING]
+#
+# Returns YES_STRING in case OPTION is enabled (present in config.h and has
+# a non-zero numeric value). Otherwise, NO_STRING (or empty string, if not
+# specified) is returned.
+get_config_option()
+{
+       local opt
+       opt=$(sed -r -n 's/#define[[:space:]]*'"$1"'[[:space:]]*([0-9]+)$/\1/p' \
+               "$CONFIG_H")
+       if [ -n "$opt" -a "$opt" -ne 0 ]; then
+               printf "%s" "$2"
+       else
+               printf "%s" "${3-}"
+       fi
+}
+
 check_prog()
 {
        type "$@" > /dev/null 2>&1 ||
@@ -161,7 +189,7 @@ match_diff()
 # dump both files and fail with ERROR_MESSAGE.
 match_grep()
 {
-       local output patterns error pattern cnt failed=
+       local output patterns error pattern cnt failed= rc negated
        if [ $# -eq 0 ]; then
                output="$LOG"
        else
@@ -183,7 +211,15 @@ match_grep()
 
        cnt=1
        while read -r pattern; do
-               LC_ALL=C grep -E -x -e "$pattern" < "$output" > /dev/null || {
+               negated=0
+               [ "x${pattern#!}" = "x${pattern}" ] ||
+                       negated=1
+
+               rc="$negated"
+               LC_ALL=C grep -E -x -e "${pattern#!}" < "$output" > /dev/null ||
+                       rc="$((!negated))"
+
+               [ 0 = "$rc" ] || {
                        test -n "$failed" || {
                                echo 'Failed patterns of expected output:'
                                failed=1
@@ -191,7 +227,8 @@ match_grep()
                        printf '#%d: %s\n' "$cnt" "$pattern"
                }
                cnt=$(($cnt + 1))
-       done < "$patterns"
+       done < "$patterns" ||
+               fail_ "Error reading patterns from \"$patterns\""
        test -z "$failed" || {
                echo 'Actual output:'
                cat < "$output"
@@ -203,7 +240,7 @@ match_grep()
 run_strace_match_diff()
 {
        args="$*"
-       [ -n "$args" -a -z "${args##*-e trace=*}" ] ||
+       [ -n "$args" -a \( -z "${args##*-e trace=*}" -o -z "${args##*--trace=*}" \) ] ||
                set -- -e trace="$NAME" "$@"
        run_prog > /dev/null
        run_strace "$@" $args > "$EXP"
@@ -214,7 +251,7 @@ run_strace_match_diff()
 run_strace_match_grep()
 {
        args="$*"
-       [ -n "$args" -a -z "${args##*-e trace=*}" ] ||
+       [ -n "$args" -a \( -z "${args##*-e trace=*}" -o -z "${args##*--trace=*}" \) ] ||
                set -- -e trace="$NAME" "$@"
        run_prog > /dev/null
        run_strace "$@" $args > "$EXP"
@@ -247,6 +284,20 @@ require_min_kernel_version_or_skip()
                skip_ "the kernel release $uname_r is not $1 or newer"
 }
 
+# Usage: require_min_nproc 2
+require_min_nproc()
+{
+       local min_nproc
+       min_nproc="$1"; shift
+
+       check_prog nproc
+       local nproc
+       nproc="$(nproc)"
+
+       [ "$nproc" -ge "$min_nproc" ] ||
+               framework_skip_ "nproc = $nproc is less than $min_nproc"
+}
+
 # Usage: grep_pid_status $pid GREP-OPTIONS...
 grep_pid_status()
 {
@@ -297,6 +348,13 @@ test_pure_prog_set()
 
                try_run_prog "../$t" || continue
                run_strace $prog_args "$@" "../$t" > "$expfile"
+
+               case "$STRACE_ARCH:$MIPS_ABI:$NAME" in
+                       mips:o32:*creds)
+                               sed -i '/^prctl(PR_GET_FP_MODE)  *= 0$/d' "$LOG"
+                               ;;
+               esac
+
                match_diff "$LOG" "$expfile"
        } < /dev/null; done
 }
@@ -324,6 +382,41 @@ test_trace_expr()
                < negative.list
 }
 
+test_prog_set()
+{
+       test_pure_prog_set "$@" < "$srcdir/$NAME.in"
+}
+
+test_pidns_run_strace()
+{
+       local parent_pid init_pid
+
+       check_prog tail
+       check_prog cut
+       check_prog grep
+
+       run_prog > /dev/null
+       run_strace --pidns-translation -f $@ $args > "$EXP"
+
+       # filter out logs made by the parent or init process of the pidns test
+       parent_pid="$(tail -n 2 $LOG | head -n 1 | cut -d' ' -f1)"
+       init_pid="$(tail -n 1 $LOG | cut -d' ' -f1)"
+       grep -E -v "^($parent_pid|$init_pid) " "$LOG" > "$OUT"
+       match_diff "$OUT" "$EXP"
+}
+
+test_pidns()
+{
+       check_prog unshare
+       unshare -Urpf true || framework_skip_ "unshare -Urpf true failed"
+
+       test_pidns_run_strace "$@"
+
+       # test PID translation when /proc is mounted from an other namespace
+       STRACE="unshare -Urpf $STRACE"
+       test_pidns_run_strace "$@"
+}
+
 check_prog cat
 check_prog rm
 
@@ -365,7 +458,7 @@ fi
 : "${STRACE_EXE:=$STRACE}"
 export STRACE_EXE
 
-: "${TIMEOUT_DURATION:=600}"
+: "${TIMEOUT_DURATION:=1500}"
 : "${SLEEP_A_BIT:=sleep 1}"
 
 [ -z "${VERBOSE-}" ] ||
index 601f7f921323cb5a3d90618ee53e4f6165f133a7..a8884720fe74b71e9dd75826ec4cbc0e7982959b 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of init_module syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined(__NR_init_module)
 
index b419984f1f55d3657170347f1557cd9c228cf428..22f3457109c3fbd6d1afe9dc89938ab64746ffbc 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Check decoding of return values injected into a syscall that "never fails".
  *
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 #include <assert.h>
 #include <stdio.h>
 #include <stdlib.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 #include "raw_syscall.h"
 
-#ifdef __alpha__
-/* alpha has no getpid */
-# define SC_NR __NR_getpgrp
-# define SC_NAME "getpgrp"
-# define getpid getpgrp
+#ifdef __NR_geteuid32
+# define SC_NR __NR_geteuid32
+# define SC_NAME "geteuid32"
 #else
-# define SC_NR __NR_getpid
-# define SC_NAME "getpid"
+# define SC_NR __NR_geteuid
+# define SC_NAME "geteuid"
 #endif
 
 #ifdef raw_syscall_0
 # define INVOKE_SC(err) raw_syscall_0(SC_NR, &err)
 #else
-/* No raw_syscall_0, let's use getpid() and hope for the best.  */
-# define INVOKE_SC(err) getpid()
+/* No raw_syscall_0, let's use geteuid() and hope for the best. */
+# define INVOKE_SC(err) geteuid()
 #endif
 
 /*
  * This prototype is intentionally different
  * from the prototype provided by <unistd.h>.
  */
-extern kernel_ulong_t getpid(void);
+extern kernel_ulong_t geteuid(void);
 
 int
 main(int ac, char **av)
@@ -45,7 +43,7 @@ main(int ac, char **av)
        assert(ac == 1 || ac == 2);
 
        kernel_ulong_t expected =
-               (ac == 1) ? getpid() : strtoull(av[1], NULL, 0);
+               (ac == 1) ? geteuid() : strtoull(av[1], NULL, 0);
        kernel_ulong_t err = 0;
        kernel_ulong_t rc = INVOKE_SC(err);
 
index cadb5adb0535b9a6efd9c177d19aa81c903b8c5c..7b0c3fda2c86f06031c5b6ac3cc6d4ff29a08fb8 100755 (executable)
@@ -2,21 +2,14 @@
 #
 # Check decoding of return values injected into a syscall that "never fails".
 #
-# Copyright (c) 2018 The strace developers.
+# Copyright (c) 2018-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 . "${srcdir=.}/scno_tampering.sh"
 
-case "$STRACE_ARCH" in
-alpha)
-       SYSCALL=getpgrp
-       ;;
-*)
-       SYSCALL=getpid
-       ;;
-esac
+SYSCALL='/^geteuid(32)?$'
 
 run_prog
 prog="$args"
index db751d4ebf6f9b54d395860aae4b96d43beb017f..f5167509e4c7c2dd19ccc1150b8ccd100964b39c 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of inotify_add_watch and inotify_rm_watch syscalls.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined(__NR_inotify_add_watch) && defined(__NR_inotify_rm_watch)
 
diff --git a/tests-mx32/inotify_init-y.c b/tests-mx32/inotify_init-y.c
new file mode 100644 (file)
index 0000000..cbe094b
--- /dev/null
@@ -0,0 +1,2 @@
+#define PRINT_PATHS
+#include "inotify_init.c"
diff --git a/tests-mx32/inotify_init-y.test b/tests-mx32/inotify_init-y.test
new file mode 100755 (executable)
index 0000000..36f2477
--- /dev/null
@@ -0,0 +1,17 @@
+#!/bin/sh
+#
+# Check decoding of inotify_init with path decoding enabled.
+#
+# Copyright (c) 2018-2019 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/init.sh"
+
+# Test expects "anon_inode:inotify" link path format for a inotify fd, which
+# is in place since v2.6.33-rc1~34^2~7. Check for older link path formats
+# is implemented in inotify_init1 test.
+require_min_kernel_version_or_skip 2.6.33
+
+run_strace_match_diff -a15 -y -e trace=inotify_init
diff --git a/tests-mx32/inotify_init.c b/tests-mx32/inotify_init.c
new file mode 100644 (file)
index 0000000..9537a7d
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * Check decoding of inotify_init syscall.
+ *
+ * Copyright (c) 2018-2019 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_inotify_init
+
+# include <stdio.h>
+# include <unistd.h>
+
+int
+main(void)
+{
+# ifdef PRINT_PATHS
+       skip_if_unavailable("/proc/self/fd/");
+# endif
+
+       long rc = syscall(__NR_inotify_init, 42);
+
+# ifdef PRINT_PATHS
+       if (rc < 0)
+               perror_msg_and_skip("inotify_init");
+# endif
+
+       printf("inotify_init() = "
+# ifdef PRINT_PATHS
+              "%ld<anon_inode:inotify>\n", rc
+# else
+              "%s\n", sprintrc(rc)
+# endif
+              );
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_inotify_init");
+
+#endif
diff --git a/tests-mx32/inotify_init.gen.test b/tests-mx32/inotify_init.gen.test
new file mode 100755 (executable)
index 0000000..47e6f60
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (inotify_init -a15 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a15 
diff --git a/tests-mx32/inotify_init1-y.c b/tests-mx32/inotify_init1-y.c
new file mode 100644 (file)
index 0000000..53c65e6
--- /dev/null
@@ -0,0 +1,2 @@
+#define PRINT_PATHS
+#include "inotify_init1.c"
diff --git a/tests-mx32/inotify_init1-y.gen.test b/tests-mx32/inotify_init1-y.gen.test
new file mode 100755 (executable)
index 0000000..160d4d3
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (inotify_init1-y -a27 -y -e trace=inotify_init1); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27 -y -e trace=inotify_init1
index 4f352b70d46f3796ba0636333e5fcc853c889baf..efff52ec205d0aa8cf75652c2e15cc69b738d4c0 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of inotify_init1 syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined(__NR_inotify_init1)
 
 # endif
 # define all_flags (O_NONBLOCK | cloexec_flag)
 
+# ifdef PRINT_PATHS
+#  define RC_FMT "%ld<%s>"
+# else
+#  define RC_FMT "%s"
+# endif
+
 int
 main(void)
 {
+# ifdef PRINT_PATHS
+       skip_if_unavailable("/proc/self/fd/");
+# endif
+
        static const kernel_ulong_t bogus_flags1 =
                (kernel_ulong_t) 0xfacefeeddeadbeefULL | O_NONBLOCK;
        static const kernel_ulong_t bogus_flags2 =
@@ -46,8 +56,51 @@ main(void)
               (unsigned int) bogus_flags2, sprintrc(rc));
 
        rc = syscall(__NR_inotify_init1, all_flags);
-       printf("inotify_init1(IN_NONBLOCK%s) = %s\n",
-              all_flags & cloexec_flag ? "|IN_CLOEXEC" : "", sprintrc(rc));
+
+# ifdef PRINT_PATHS
+       if (rc < 0)
+               perror_msg_and_skip("inotify_init(%#x)", all_flags);
+
+       /*
+        * Kernels that do not have v2.6.33-rc1~34^2~7 do not have
+        * "anon_inode:" prefix.  Let's assume that it can be either "inotify"
+        * or "anon_inode:inotify" for now, as any change there may be
+        * of interest.
+        */
+       char path[sizeof("/proc/self/fd/") + sizeof(rc) * 3];
+       char buf[2] = "";
+       const char *inotify_path;
+       ssize_t ret;
+
+       ret = snprintf(path, sizeof(path), "/proc/self/fd/%ld", rc);
+       if ((ret < 0) || ((size_t) ret >= sizeof(path)))
+               perror_msg_and_fail("snprintf(path)");
+
+       ret = readlink(path, buf, sizeof(buf));
+       if (ret < 0)
+               perror_msg_and_fail("readlink");
+
+       switch (buf[0]) {
+       case 'a':
+               inotify_path = "anon_inode:inotify";
+               break;
+       case 'i':
+               inotify_path = "inotify";
+               break;
+       default:
+               error_msg_and_fail("Unexpected first char '%c' of inotify fd "
+                                  "link path", buf[0]);
+       }
+# endif
+
+       printf("inotify_init1(IN_NONBLOCK%s) = " RC_FMT "\n",
+              all_flags & cloexec_flag ? "|IN_CLOEXEC" : "",
+# ifdef PRINT_PATHS
+              rc, inotify_path
+# else
+              sprintrc(rc)
+# endif
+              );
 
        puts("+++ exited with 0 +++");
 
index 3284ebac3ed3c373f3fe96819213e8e492bb4d05..bc741cd4cb72028561a68f46d18c4b9afd171210 100644 (file)
@@ -9,7 +9,6 @@
 
 #include "tests.h"
 #include <unistd.h>
-#include <asm/unistd.h>
 #include "scno.h"
 
 #ifdef __NR_io_uring_enter
index a0327ed85088eca18418cee921652edd98e85271..b0c5b9ee4f81c2a0bc9a2dbc311040b65ac22dd6 100644 (file)
@@ -2,6 +2,7 @@
  * Check decoding of io_uring_register syscall.
  *
  * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2019-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 
 #include "tests.h"
 #include <unistd.h>
-#include <asm/unistd.h>
 #include "scno.h"
 
 #ifdef __NR_io_uring_register
 
 # include <fcntl.h>
+# include <inttypes.h>
 # include <stdio.h>
 # include <string.h>
 # include <sys/uio.h>
 
+# ifdef HAVE_LINUX_IO_URING_H
+#  include <linux/io_uring.h>
+# endif
+
+/* From tests/bpf.c */
+# if defined MPERS_IS_m32 || SIZEOF_KERNEL_LONG_T > 4
+#  define BIG_ADDR_MAYBE(addr_)
+# elif defined __arm__ || defined __i386__ || defined __mips__ \
+   || defined __powerpc__ || defined __riscv__ || defined __s390__ \
+   || defined __sparc__ || defined __tile__
+#  define BIG_ADDR_MAYBE(addr_) addr_ " or "
+# else
+#  define BIG_ADDR_MAYBE(addr_)
+# endif
+
+# if WORDS_BIGENDIAN
+#  define BE_LE(be_, le_) be_
+# else
+#  define BE_LE(be_, le_) le_
+# endif
+
 static const char *errstr;
 
 static long
@@ -64,15 +86,40 @@ main(void)
 
        int fd_full = open(path_full, O_RDONLY);
        if (fd_full < 0)
-               perror_msg_and_fail("open: %s", path_null);
+               perror_msg_and_fail("open: %s", path_full);
 
        int fds[] = { fd_full, fd_null };
        const int *arg_fds = tail_memdup(fds, sizeof(fds));
 
-       sys_io_uring_register(fd_null, 0xbadc0ded, path_null, 0xdeadbeef);
-       printf("io_uring_register(%u<%s>, %#x /* IORING_REGISTER_??? */"
-              ", %p, %u) = %s\n",
-              fd_null, path_null, 0xbadc0ded, path_null, 0xdeadbeef, errstr);
+       static const unsigned int invalid_ops[] = { 0xbadc0dedU, 11 };
+
+       for (size_t i = 0; i < ARRAY_SIZE(invalid_ops); i++) {
+               sys_io_uring_register(fd_null, invalid_ops[i], path_null,
+                                     0xdeadbeef);
+               printf("io_uring_register(%u<%s>, %#x /* IORING_REGISTER_??? */"
+                      ", %p, %u) = %s\n",
+                      fd_null, path_null, invalid_ops[i], path_null,
+                      0xdeadbeef, errstr);
+       }
+
+       static const struct {
+               unsigned int op;
+               const char *str;
+       } no_arg_ops[] = {
+               { 1, "IORING_UNREGISTER_BUFFERS" },
+               { 3, "IORING_UNREGISTER_FILES" },
+               { 5, "IORING_UNREGISTER_EVENTFD" },
+               { 9, "IORING_REGISTER_PERSONALITY" },
+               { 10, "IORING_UNREGISTER_PERSONALITY" },
+       };
+
+       for (size_t i = 0; i < ARRAY_SIZE(no_arg_ops); i++) {
+               sys_io_uring_register(fd_null, no_arg_ops[i].op, path_null,
+                                     0xdeadbeef);
+               printf("io_uring_register(%u<%s>, %s, %p, %u) = %s\n",
+                      fd_null, path_null, no_arg_ops[i].str, path_null,
+                      0xdeadbeef, errstr);
+       }
 
        sys_io_uring_register(fd_null, 0, arg_iov, ARRAY_SIZE(iov));
        printf("io_uring_register(%u<%s>, IORING_REGISTER_BUFFERS"
@@ -83,11 +130,157 @@ main(void)
               iov[1].iov_base, (unsigned long) iov[1].iov_len,
               (unsigned int) ARRAY_SIZE(iov), errstr);
 
-       sys_io_uring_register(fd_null, 2, arg_fds, ARRAY_SIZE(fds));
-       printf("io_uring_register(%u<%s>, IORING_REGISTER_FILES"
-              ", [%u<%s>, %u<%s>], %u) = %s\n",
+       static const struct {
+               unsigned int op;
+               const char *str;
+       } fd_arr_ops[] = {
+               { 2, "IORING_REGISTER_FILES" },
+               { 4, "IORING_REGISTER_EVENTFD" },
+               { 7, "IORING_REGISTER_EVENTFD_ASYNC" },
+       };
+
+       for (size_t i = 0; i < ARRAY_SIZE(fd_arr_ops); i++) {
+               sys_io_uring_register(fd_null, fd_arr_ops[i].op, arg_fds,
+                                     ARRAY_SIZE(fds));
+               printf("io_uring_register(%u<%s>, %s, [%u<%s>, %u<%s>], %u)"
+                      " = %s\n",
+                      fd_null, path_null, fd_arr_ops[i].str,
+                      fd_full, path_full, fd_null, path_null,
+                      (unsigned int) ARRAY_SIZE(fds), errstr);
+       }
+
+# ifdef HAVE_STRUCT_IO_URING_FILES_UPDATE
+       struct io_uring_files_update bogus_iufu;
+       struct io_uring_files_update iufu;
+
+       sys_io_uring_register(fd_null, 6, NULL, 0xfacefeed);
+       printf("io_uring_register(%u<%s>, IORING_REGISTER_FILES_UPDATE"
+              ", NULL, 4207869677) = %s\n",
+              fd_null, path_null, errstr);
+
+       fill_memory(&bogus_iufu, sizeof(bogus_iufu));
+       sys_io_uring_register(fd_null, 6, &bogus_iufu, 0);
+       printf("io_uring_register(%u<%s>, IORING_REGISTER_FILES_UPDATE"
+              ", {offset=%" PRIu32 ", resv=%#" PRIx32 ", fds="
+              BIG_ADDR_MAYBE(BE_LE("0x88898a8b8c8d8e8f", "0x8f8e8d8c8b8a8988"))
+              "[]}, 0) = %s\n",
+              fd_null, path_null,
+              ((uint32_t *) &bogus_iufu)[0], ((uint32_t *) &bogus_iufu)[1],
+              errstr);
+
+       memset(&iufu, 0, sizeof(iufu));
+       iufu.offset = 0xdeadc0deU;
+       iufu.fds = (uintptr_t) fds;
+       sys_io_uring_register(fd_null, 6, &iufu, ARRAY_SIZE(fds));
+       printf("io_uring_register(%u<%s>, IORING_REGISTER_FILES_UPDATE"
+              ", {offset=3735929054, fds=[%u<%s>, %u<%s>]}, %u) = %s\n",
               fd_null, path_null, fd_full, path_full, fd_null, path_null,
               (unsigned int) ARRAY_SIZE(fds), errstr);
+# endif
+
+# ifdef HAVE_STRUCT_IO_URING_PROBE
+       struct io_uring_probe *probe = tail_alloc(sizeof(*probe) +
+                      (DEFAULT_STRLEN + 1) * sizeof(struct io_uring_probe_op));
+
+       sys_io_uring_register(fd_null, IORING_REGISTER_PROBE, NULL, 0xfacefeed);
+       printf("io_uring_register(%u<%s>, IORING_REGISTER_PROBE"
+              ", NULL, 4207869677) = %s\n",
+              fd_null, path_null, errstr);
+
+       sys_io_uring_register(fd_null, IORING_REGISTER_PROBE, probe,
+                             0xfacefeed);
+       printf("io_uring_register(%u<%s>, IORING_REGISTER_PROBE"
+              ", %p, 4207869677) = %s\n",
+              fd_null, path_null, probe, errstr);
+
+       sys_io_uring_register(fd_null, IORING_REGISTER_PROBE,
+                             (char *) probe + 1, DEFAULT_STRLEN + 1);
+       printf("io_uring_register(%u<%s>, IORING_REGISTER_PROBE"
+              ", %p, %d) = %s\n",
+              fd_null, path_null, (char *) probe + 1, DEFAULT_STRLEN + 1,
+              errstr);
+
+       sys_io_uring_register(fd_null, IORING_REGISTER_PROBE, probe, 0);
+       printf("io_uring_register(%u<%s>, IORING_REGISTER_PROBE"
+              ", {last_op=%u /* IORING_OP_??? */, ops_len=%hhu, resv=%#hx"
+              ", resv2=[%#x, %#x, %#x], ops=[]}, 0) = %s\n",
+              fd_null, path_null, probe->last_op, probe->ops_len, probe->resv,
+              probe->resv2[0], probe->resv2[1], probe->resv2[2], errstr);
+
+       probe->last_op = IORING_OP_READV;
+       probe->resv = 0;
+       sys_io_uring_register(fd_null, IORING_REGISTER_PROBE, probe, 0);
+       printf("io_uring_register(%u<%s>, IORING_REGISTER_PROBE"
+              ", {last_op=IORING_OP_READV, ops_len=%hhu"
+              ", resv2=[%#x, %#x, %#x], ops=[]}, 0) = %s\n",
+              fd_null, path_null, probe->ops_len,
+              probe->resv2[0], probe->resv2[1], probe->resv2[2], errstr);
+
+       probe->last_op = IORING_OP_EPOLL_CTL;
+       probe->resv2[0] = 0;
+       probe->resv2[2] = 0;
+
+       probe->ops[0].op = IORING_OP_NOP;
+       probe->ops[0].resv = 0xde;
+       probe->ops[0].flags = 0;
+       probe->ops[0].resv2 = 0xbeefface;
+
+       probe->ops[1].op = 33;
+       probe->ops[1].resv = 0;
+       probe->ops[1].flags = IO_URING_OP_SUPPORTED;
+       probe->ops[1].resv2 = 0xdeadc0de;
+
+       probe->ops[2].op = 34;
+       probe->ops[2].resv = 0xaf;
+       probe->ops[2].flags = 0xbeef;
+       probe->ops[2].resv2 = 0;
+
+       probe->ops[3].op = 0xfe;
+       probe->ops[3].resv = 0;
+       probe->ops[3].flags = 0xc0de;
+       probe->ops[3].resv2 = 0;
+
+       sys_io_uring_register(fd_null, IORING_REGISTER_PROBE, probe, 4);
+       printf("io_uring_register(%u<%s>, IORING_REGISTER_PROBE"
+              ", {last_op=IORING_OP_EPOLL_CTL, ops_len=%hhu"
+              ", resv2=[0, %#x, 0], ops=["
+              "{op=IORING_OP_NOP, resv=0xde, flags=0, resv2=0xbeefface}, "
+              "{op=IORING_OP_TEE, flags=IO_URING_OP_SUPPORTED"
+              ", resv2=0xdeadc0de}, "
+              "{op=34 /* IORING_OP_??? */, resv=0xaf"
+              ", flags=IO_URING_OP_SUPPORTED|0xbeee}, "
+              "{op=254 /* IORING_OP_??? */"
+              ", flags=0xc0de /* IO_URING_OP_??? */}]}, 4) = %s\n",
+              fd_null, path_null, probe->ops_len, probe->resv2[1], errstr);
+
+       probe->last_op = 34;
+       probe->resv2[1] = 0;
+       fill_memory_ex(probe->ops, sizeof(probe->ops[0]) * (DEFAULT_STRLEN + 1),
+                   0x40, 0x80);
+       sys_io_uring_register(fd_null, IORING_REGISTER_PROBE, probe,
+                             DEFAULT_STRLEN + 1);
+       printf("io_uring_register(%u<%s>, IORING_REGISTER_PROBE"
+              ", {last_op=34 /* IORING_OP_??? */, ops_len=%hhu, ops=[",
+              fd_null, path_null, probe->ops_len);
+       for (size_t i = 0; i < DEFAULT_STRLEN; i++) {
+               printf("%s{op=%u /* IORING_OP_??? */, resv=%#hhx"
+                      ", flags=%s%#hx%s, resv2=%#x}",
+                      i ? ", " : "",
+                      probe->ops[i].op, probe->ops[i].resv,
+                      probe->ops[i].flags & 1 ? "IO_URING_OP_SUPPORTED|" : "",
+                      (typeof(probe->ops[i].flags)) (probe->ops[i].flags & ~1),
+                      probe->ops[i].flags & 1 ? "" : " /* IO_URING_OP_??? */",
+                      probe->ops[i].resv2);
+       }
+       printf(", ...]}, %d) = %s\n", DEFAULT_STRLEN + 1, errstr);
+
+       probe->last_op = 0;
+       probe->ops_len = 0;
+       memset(probe->ops, 0, sizeof(probe->ops[0]) * (DEFAULT_STRLEN + 1));
+       sys_io_uring_register(fd_null, IORING_REGISTER_PROBE, probe, 8);
+       printf("io_uring_register(%u<%s>, IORING_REGISTER_PROBE, %p, 8) = %s\n",
+              fd_null, path_null, probe, errstr);
+# endif
 
        puts("+++ exited with 0 +++");
        return 0;
index f48095bb344cb634b791cffb1442ff28e78e76e1..d54f8c9bc020093a156dbfbceecb41b4a67a8727 100644 (file)
@@ -2,6 +2,7 @@
  * Check decoding of io_uring_setup syscall.
  *
  * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2019-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 
 #include "tests.h"
 #include <unistd.h>
-#include <asm/unistd.h>
 #include "scno.h"
 
 #if defined HAVE_LINUX_IO_URING_H && defined __NR_io_uring_setup
 
+# include <fcntl.h>
 # include <stdio.h>
 # include <stdint.h>
 # include <string.h>
 # include <linux/io_uring.h>
 
+# include <sys/stat.h>
+# include <sys/types.h>
+
 # include "print_fields.h"
+# include "xlat.h"
+
+# include "xlat/uring_setup_features.h"
+# include "xlat/uring_cqring_flags.h"
+
+# ifdef HAVE_STRUCT_IO_URING_PARAMS_FEATURES
+#  ifdef HAVE_STRUCT_IO_URING_PARAMS_WQ_FD
+#   define RESV_START 0
+#  else
+#   define RESV_START 1
+#  endif
+# else /* !HAVE_STRUCT_IO_URING_PARAMS_FEATURES */
+#  define RESV_START 2
+# endif /* HAVE_STRUCT_IO_URING_PARAMS_FEATURES */
 
 static const char *errstr;
 
@@ -39,12 +57,18 @@ sys_io_uring_setup(uint32_t nentries, const void *params)
 int
 main(void)
 {
+       static const char path_full[] = "/dev/full";
+
        long rc;
        TAIL_ALLOC_OBJECT_CONST_PTR(struct io_uring_params, params);
        const void *efault = (const void *) params + 1;
 
        skip_if_unavailable("/proc/self/fd/");
 
+       int fd_full = open(path_full, O_RDONLY);
+       if (fd_full < 0)
+               perror_msg_and_fail("open: %s", path_full);
+
        sys_io_uring_setup(-1U, NULL);
        printf("io_uring_setup(%u, NULL) = %s\n", -1U, errstr);
 
@@ -55,42 +79,110 @@ main(void)
        params->flags = -1;
        sys_io_uring_setup(1, params);
        printf("io_uring_setup(%u, {flags=IORING_SETUP_IOPOLL"
-              "|IORING_SETUP_SQPOLL|IORING_SETUP_SQ_AFF|%#x"
-              ", sq_thread_cpu=%#x, sq_thread_idle=%u, resv={",
-              1, -1U - 7, params->sq_thread_cpu, params->sq_thread_idle);
-       for (unsigned int i = 0; i < ARRAY_SIZE(params->resv); ++i)
-               printf("%s%#x", i ? ", " : "", params->resv[i]);
-       printf("}}) = %s\n", errstr);
-
-       memset(params, 0, sizeof(*params));
-       rc = sys_io_uring_setup(2, params);
-       printf("io_uring_setup(%u, {flags=0, sq_thread_cpu=0"
-              ", sq_thread_idle=0", 2);
-       if (rc < 0)
-               printf("}) = %s\n", errstr);
-       else
-               printf(", sq_entries=%u, cq_entries=%u"
-                      ", sq_off={head=%u, tail=%u, ring_mask=%u"
-                      ", ring_entries=%u, flags=%u, dropped=%u, array=%u}"
-                      ", cq_off={head=%u, tail=%u, ring_mask=%u"
-                      ", ring_entries=%u, overflow=%u, cqes=%u}"
-                      "}) = %ld<anon_inode:[io_uring]>\n",
-                      params->sq_entries,
-                      params->cq_entries,
-                      params->sq_off.head,
-                      params->sq_off.tail,
-                      params->sq_off.ring_mask,
-                      params->sq_off.ring_entries,
-                      params->sq_off.flags,
-                      params->sq_off.dropped,
-                      params->sq_off.array,
-                      params->cq_off.head,
-                      params->cq_off.tail,
-                      params->cq_off.ring_mask,
-                      params->cq_off.ring_entries,
-                      params->cq_off.overflow,
-                      params->cq_off.cqes,
-                      rc);
+              "|IORING_SETUP_SQPOLL|IORING_SETUP_SQ_AFF|IORING_SETUP_CQSIZE"
+              "|IORING_SETUP_CLAMP|IORING_SETUP_ATTACH_WQ|%#x"
+              ", sq_thread_cpu=%#x, sq_thread_idle=%u, wq_fd=%d, resv=[",
+              1, -1U - 63, params->sq_thread_cpu, params->sq_thread_idle,
+# if defined HAVE_STRUCT_IO_URING_PARAMS_WQ_FD
+              params->wq_fd
+# elif defined HAVE_STRUCT_IO_URING_PARAMS_FEATURES
+              params->resv[0]
+# else
+              params->resv[1]
+# endif
+              );
+       for (unsigned int i = RESV_START; i < ARRAY_SIZE(params->resv); ++i)
+               printf("%s%#x", i != RESV_START ? ", " : "", params->resv[i]);
+       printf("]}) = %s\n", errstr);
+
+       for (size_t i = 0; i < 2; i++) {
+               memset(params, 0, sizeof(*params));
+
+# if defined HAVE_STRUCT_IO_URING_PARAMS_WQ_FD
+               params->wq_fd
+# elif defined HAVE_STRUCT_IO_URING_PARAMS_FEATURES
+               params->resv[0]
+# else
+               params->resv[1]
+# endif
+                       = i == 1 ? fd_full : -1;
+               params->flags = i == 1 ? 32 : 0;
+
+               rc = sys_io_uring_setup(2, params);
+               printf("io_uring_setup(%u, {flags=%s, sq_thread_cpu=0"
+                      ", sq_thread_idle=0",
+                      2, i == 1 ? "IORING_SETUP_ATTACH_WQ" : "0");
+               if (i == 1)
+                       printf(", wq_fd=%d<%s>", fd_full, path_full);
+               if (rc < 0) {
+                       printf("}) = %s\n", errstr);
+               } else {
+                       printf(", sq_entries=%u, cq_entries=%u, features=",
+                              params->sq_entries,
+                              params->cq_entries);
+                       printflags(uring_setup_features,
+# ifdef HAVE_STRUCT_IO_URING_PARAMS_FEATURES
+                                  params->features,
+# else
+                                  params->resv[0],
+# endif
+                                  "IORING_FEAT_???");
+                       printf(", sq_off={head=%u, tail=%u, ring_mask=%u"
+                              ", ring_entries=%u, flags=%u, dropped=%u"
+                              ", array=%u",
+                              params->sq_off.head,
+                              params->sq_off.tail,
+                              params->sq_off.ring_mask,
+                              params->sq_off.ring_entries,
+                              params->sq_off.flags,
+                              params->sq_off.dropped,
+                              params->sq_off.array);
+                       if (params->sq_off.resv1)
+                               printf(", resv1=%#x", params->sq_off.resv1);
+                       if (params->sq_off.resv2)
+                               printf(", resv1=%#llx",
+                                      (unsigned long long)
+                                               params->sq_off.resv2);
+
+                       printf("}, cq_off={head=%u, tail=%u, ring_mask=%u"
+                              ", ring_entries=%u, overflow=%u, cqes=%u, flags=",
+                              params->cq_off.head,
+                              params->cq_off.tail,
+                              params->cq_off.ring_mask,
+                              params->cq_off.ring_entries,
+                              params->cq_off.overflow,
+                              params->cq_off.cqes);
+# ifdef HAVE_STRUCT_IO_CQRING_OFFSETS_FLAGS
+                       printflags(uring_cqring_flags,
+                              params->cq_off.flags,
+                              "IORING_CQ_???");
+                       if (params->cq_off.resv1)
+                               printf(", resv1=%#x", params->cq_off.resv1);
+                       if (params->cq_off.resv2)
+                               printf(", resv2=%#llx",
+                                      (unsigned long long)
+                                               params->cq_off.resv2);
+# else
+                       union {
+                               struct {
+                                       uint32_t flags;
+                                       uint32_t resv1;
+                               } s;
+                               uint64_t v;
+                       } u = { .v = params->cq_off.resv[0] };
+                       printflags(uring_cqring_flags, u.s.flags,
+                                  "IORING_CQ_???");
+                       if (u.s.resv1)
+                               printf(", resv1=%#x", u.s.resv1);
+                       if (params->cq_off.resv[1])
+                               printf(", resv2=%#llx",
+                                      (unsigned long long)
+                                               params->cq_off.resv[1]);
+# endif
+
+                       printf("}}) = %ld<anon_inode:[io_uring]>\n", rc);
+               }
+       }
 
        puts("+++ exited with 0 +++");
        return 0;
diff --git a/tests-mx32/ioctl-success.sh b/tests-mx32/ioctl-success.sh
new file mode 100755 (executable)
index 0000000..9dd8aee
--- /dev/null
@@ -0,0 +1,21 @@
+#!/bin/sh -efu
+#
+# Check decoding of ioctls using syscall injection.
+#
+# Expects a binary that accepts IOCTL_INJECT_START as the first argument.
+#
+# Copyright (c) 2018-2020 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/scno_tampering.sh"
+
+: ${IOCTL_INJECT_START=256}
+: ${IOCTL_INJECT_RETVAL=42}
+
+run_strace -a50 "$@" -e trace=ioctl \
+       -e inject=ioctl:retval="${IOCTL_INJECT_RETVAL}":when="${IOCTL_INJECT_START}+" \
+       "../$NAME" "${IOCTL_INJECT_START}" "${IOCTL_INJECT_RETVAL}" > "$EXP"
+grep -v '^ioctl([012][,<]' < "$LOG" > "$OUT"
+match_diff "$OUT" "$EXP"
index ec4e367029ef5b4f93271aac59527f870989bc65..4f8e2e9f40dd95d4c5911eba59c817f4201be34f 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -14,6 +14,8 @@
 #include <termios.h>
 #include <sys/ioctl.h>
 
+#include <linux/types.h>
+
 #ifdef HAVE_LINUX_MMTIMER_H
 # include <linux/mmtimer.h>
 #endif
diff --git a/tests-mx32/ioctl_block--pidns-translation.c b/tests-mx32/ioctl_block--pidns-translation.c
new file mode 100644 (file)
index 0000000..5eed607
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "ioctl_block.c"
diff --git a/tests-mx32/ioctl_block--pidns-translation.test b/tests-mx32/ioctl_block--pidns-translation.test
new file mode 100755 (executable)
index 0000000..d06855f
--- /dev/null
@@ -0,0 +1,22 @@
+#!/bin/sh
+#
+# Check pidns translation of ioctl(BLK*) syscall decoding.
+#
+# Copyright (c) 2020 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+. "${srcdir=.}/init.sh"
+
+check_prog head
+check_prog tail
+check_prog cut
+check_prog grep
+
+run_prog > /dev/null
+run_strace --pidns-translation -f -a16 -e trace=ioctl $@ $args > "$EXP"
+parent_pid="$(tail -n 2 $LOG | head -n 1 | cut -d' ' -f1)"
+init_pid="$(tail -n 1 $LOG | cut -d' ' -f1)"
+grep -E -v "^($parent_pid|$init_pid) |ioctl\([0123][,<]" "$LOG" > "$OUT"
+match_diff "$OUT" "$EXP"
index 65f434c8f344bdb8b15826c9391d0cf52fd7ba6b..8a345f4e1aa74aa7d7b819626ef789b16467983f 100644 (file)
@@ -2,14 +2,16 @@
  * This file is part of ioctl_block strace test.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
+#include "pidns.h"
 #include <errno.h>
+#include <unistd.h>
 #include <inttypes.h>
 #include <stdio.h>
 #include <string.h>
@@ -24,7 +26,7 @@
 static const unsigned int magic = 0xdeadbeef;
 static const unsigned long lmagic = (unsigned long) 0xdeadbeefbadc0dedULL;
 
-static struct xlat block_argless[] = {
+static struct xlat_data block_argless[] = {
        XLAT(BLKRRPART),
        XLAT(BLKFLSBUF),
 #ifdef BLKTRACESTART
@@ -41,12 +43,15 @@ static struct xlat block_argless[] = {
 #define TEST_NULL_ARG(cmd)                                             \
        do {                                                            \
                ioctl(-1, cmd, 0);                                      \
+               pidns_print_leader();                                   \
                printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n", #cmd);  \
        } while (0)
 
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        TEST_NULL_ARG(BLKBSZGET);
        TEST_NULL_ARG(BLKBSZSET);
        TEST_NULL_ARG(BLKFRAGET);
@@ -91,18 +96,22 @@ main(void)
 #endif
 
        ioctl(-1, BLKRASET, lmagic);
+       pidns_print_leader();
        printf("ioctl(-1, BLKRASET, %lu) = -1 EBADF (%m)\n", lmagic);
 
        ioctl(-1, BLKFRASET, lmagic);
+       pidns_print_leader();
        printf("ioctl(-1, BLKFRASET, %lu) = -1 EBADF (%m)\n", lmagic);
 
        TAIL_ALLOC_OBJECT_CONST_PTR(int, val_int);
        *val_int = magic;
 
        ioctl(-1, BLKROSET, val_int);
+       pidns_print_leader();
        printf("ioctl(-1, BLKROSET, [%d]) = -1 EBADF (%m)\n", *val_int);
 
        ioctl(-1, BLKBSZSET, val_int);
+       pidns_print_leader();
        printf("ioctl(-1, BLKBSZSET, [%d]) = -1 EBADF (%m)\n", *val_int);
 
        uint64_t *pair_int64 = tail_alloc(sizeof(*pair_int64) * 2);
@@ -111,18 +120,21 @@ main(void)
 
 #ifdef BLKDISCARD
        ioctl(-1, BLKDISCARD, pair_int64);
+       pidns_print_leader();
        printf("ioctl(-1, BLKDISCARD, [%" PRIu64 ", %" PRIu64 "])"
               " = -1 EBADF (%m)\n", pair_int64[0], pair_int64[1]);
 #endif
 
 #ifdef BLKSECDISCARD
        ioctl(-1, BLKSECDISCARD, pair_int64);
+       pidns_print_leader();
        printf("ioctl(-1, BLKSECDISCARD, [%" PRIu64 ", %" PRIu64 "])"
               " = -1 EBADF (%m)\n", pair_int64[0], pair_int64[1]);
 #endif
 
 #ifdef BLKZEROOUT
        ioctl(-1, BLKZEROOUT, pair_int64);
+       pidns_print_leader();
        printf("ioctl(-1, BLKZEROOUT, [%" PRIu64 ", %" PRIu64 "])"
               " = -1 EBADF (%m)\n", pair_int64[0], pair_int64[1]);
 #endif
@@ -134,6 +146,7 @@ main(void)
        blkpg->data = (void *) (unsigned long) 0xcafef00dfffffeedULL;
 
        ioctl(-1, BLKPG, blkpg);
+       pidns_print_leader();
        printf("ioctl(-1, BLKPG, {op=%s, flags=%d, datalen=%d"
               ", data=%#lx}) = -1 EBADF (%m)\n",
               "BLKPG_RESIZE_PARTITION", blkpg->flags, blkpg->datalen,
@@ -149,6 +162,7 @@ main(void)
        blkpg->data = bp;
 
        ioctl(-1, BLKPG, blkpg);
+       pidns_print_leader();
        printf("ioctl(-1, BLKPG, {op=%s, flags=%d, datalen=%d"
               ", data={start=%lld, length=%lld, pno=%d"
               ", devname=\"%.*s\"..., volname=\"%.*s\"...}})"
@@ -162,25 +176,31 @@ main(void)
 #if defined BLKTRACESETUP && defined HAVE_STRUCT_BLK_USER_TRACE_SETUP
        TAIL_ALLOC_OBJECT_CONST_PTR(struct blk_user_trace_setup, buts);
        fill_memory(buts, sizeof(*buts));
+       buts->pid = getpid();
 
        ioctl(-1, BLKTRACESETUP, buts);
+       pidns_print_leader();
        printf("ioctl(-1, BLKTRACESETUP, {act_mask=%hu, buf_size=%u, buf_nr=%u"
-              ", start_lba=%" PRI__u64 ", end_lba=%" PRI__u64 ", pid=%u})"
+              ", start_lba=%" PRI__u64 ", end_lba=%" PRI__u64 ", pid=%d%s})"
               " = -1 EBADF (%m)\n",
               buts->act_mask, buts->buf_size, buts->buf_nr,
-              buts->start_lba, buts->end_lba, buts->pid);
+              buts->start_lba, buts->end_lba, buts->pid,
+              pidns_pid2str(PT_TGID));
 #endif
 
        unsigned int i;
        for (i = 0; i < ARRAY_SIZE(block_argless); ++i) {
                ioctl(-1, (unsigned long) block_argless[i].val, lmagic);
+               pidns_print_leader();
                printf("ioctl(-1, %s) = -1 EBADF (%m)\n", block_argless[i].str);
        }
 
        ioctl(-1, _IOC(_IOC_READ, 0x12, 0xfe, 0xff), lmagic);
+       pidns_print_leader();
        printf("ioctl(-1, %s, %#lx) = -1 EBADF (%m)\n",
               "_IOC(_IOC_READ, 0x12, 0xfe, 0xff)", lmagic);
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
diff --git a/tests-mx32/ioctl_evdev-Xabbrev.c b/tests-mx32/ioctl_evdev-Xabbrev.c
new file mode 100644 (file)
index 0000000..ac474bf
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_ABBREV 1
+#include "ioctl_evdev.c"
diff --git a/tests-mx32/ioctl_evdev-Xabbrev.gen.test b/tests-mx32/ioctl_evdev-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..5f72444
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-Xabbrev +ioctl.test -a26 -Xabbrev); do not edit.
+set -- -a26 -Xabbrev
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_evdev-Xraw.c b/tests-mx32/ioctl_evdev-Xraw.c
new file mode 100644 (file)
index 0000000..15f586f
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "ioctl_evdev.c"
diff --git a/tests-mx32/ioctl_evdev-Xraw.gen.test b/tests-mx32/ioctl_evdev-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..f292f4c
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-Xraw +ioctl.test -a28 -Xraw); do not edit.
+set -- -a28 -Xraw
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_evdev-Xverbose.c b/tests-mx32/ioctl_evdev-Xverbose.c
new file mode 100644 (file)
index 0000000..603c2f0
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "ioctl_evdev.c"
diff --git a/tests-mx32/ioctl_evdev-Xverbose.gen.test b/tests-mx32/ioctl_evdev-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..0b1b4fc
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-Xverbose +ioctl.test -a41 -Xverbose); do not edit.
+set -- -a41 -Xverbose
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_evdev-success-Xabbrev.c b/tests-mx32/ioctl_evdev-success-Xabbrev.c
new file mode 100644 (file)
index 0000000..9f2416b
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_ABBREV 1
+#include "ioctl_evdev-success.c"
diff --git a/tests-mx32/ioctl_evdev-success-Xabbrev.gen.test b/tests-mx32/ioctl_evdev-success-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..6432322
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-success-Xabbrev +ioctl_evdev-success.test -Xabbrev); do not edit.
+set -- -Xabbrev
+. "${srcdir=.}/ioctl_evdev-success.test"
diff --git a/tests-mx32/ioctl_evdev-success-Xraw.c b/tests-mx32/ioctl_evdev-success-Xraw.c
new file mode 100644 (file)
index 0000000..097672a
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "ioctl_evdev-success.c"
diff --git a/tests-mx32/ioctl_evdev-success-Xraw.gen.test b/tests-mx32/ioctl_evdev-success-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..c4f8c43
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-success-Xraw +ioctl_evdev-success.test -a27 -Xraw); do not edit.
+set -- -a27 -Xraw
+. "${srcdir=.}/ioctl_evdev-success.test"
diff --git a/tests-mx32/ioctl_evdev-success-Xverbose.c b/tests-mx32/ioctl_evdev-success-Xverbose.c
new file mode 100644 (file)
index 0000000..9ee67a0
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "ioctl_evdev-success.c"
diff --git a/tests-mx32/ioctl_evdev-success-Xverbose.gen.test b/tests-mx32/ioctl_evdev-success-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..a1781fc
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-success-Xverbose +ioctl_evdev-success.test -a43 -Xverbose); do not edit.
+set -- -a43 -Xverbose
+. "${srcdir=.}/ioctl_evdev-success.test"
diff --git a/tests-mx32/ioctl_evdev-success-v-Xabbrev.c b/tests-mx32/ioctl_evdev-success-v-Xabbrev.c
new file mode 100644 (file)
index 0000000..566ad3e
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_ABBREV 1
+#include "ioctl_evdev-success-v.c"
diff --git a/tests-mx32/ioctl_evdev-success-v-Xabbrev.gen.test b/tests-mx32/ioctl_evdev-success-v-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..cdb9e79
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-success-v-Xabbrev +ioctl_evdev-success.test -v -Xabbrev); do not edit.
+set -- -v -Xabbrev
+. "${srcdir=.}/ioctl_evdev-success.test"
diff --git a/tests-mx32/ioctl_evdev-success-v-Xraw.c b/tests-mx32/ioctl_evdev-success-v-Xraw.c
new file mode 100644 (file)
index 0000000..461bcd7
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "ioctl_evdev-success-v.c"
diff --git a/tests-mx32/ioctl_evdev-success-v-Xraw.gen.test b/tests-mx32/ioctl_evdev-success-v-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..4c29234
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-success-v-Xraw +ioctl_evdev-success.test -a27 -v -Xraw); do not edit.
+set -- -a27 -v -Xraw
+. "${srcdir=.}/ioctl_evdev-success.test"
diff --git a/tests-mx32/ioctl_evdev-success-v-Xverbose.c b/tests-mx32/ioctl_evdev-success-v-Xverbose.c
new file mode 100644 (file)
index 0000000..1754320
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "ioctl_evdev-success-v.c"
diff --git a/tests-mx32/ioctl_evdev-success-v-Xverbose.gen.test b/tests-mx32/ioctl_evdev-success-v-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..d1d1cde
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-success-v-Xverbose +ioctl_evdev-success.test -a43 -v -Xverbose); do not edit.
+set -- -a43 -v -Xverbose
+. "${srcdir=.}/ioctl_evdev-success.test"
diff --git a/tests-mx32/ioctl_evdev-success-v.gen.test b/tests-mx32/ioctl_evdev-success-v.gen.test
new file mode 100755 (executable)
index 0000000..aa72de1
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-success-v +ioctl_evdev-success.test -a26 -v); do not edit.
+set -- -a26 -v
+. "${srcdir=.}/ioctl_evdev-success.test"
diff --git a/tests-mx32/ioctl_evdev-success-v.test b/tests-mx32/ioctl_evdev-success-v.test
deleted file mode 100755 (executable)
index faedee3..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/sh -efu
-#
-# Copyright (c) 2018 The strace developers.
-# All rights reserved.
-#
-# SPDX-License-Identifier: GPL-2.0-or-later
-
-. "${srcdir=.}/scno_tampering.sh"
-
-: ${IOCTL_INJECT_START=256}
-: ${IOCTL_INJECT_RETVAL=8}
-
-run_prog
-run_strace -a16 -v -e trace=ioctl \
-       -e inject=ioctl:retval="${IOCTL_INJECT_RETVAL}":when="${IOCTL_INJECT_START}+" \
-       ../ioctl_evdev-success-v "${IOCTL_INJECT_START}" "${IOCTL_INJECT_RETVAL}"> "$EXP"
-grep -v '^ioctl([012][,<]' < "$LOG" > "$OUT"
-match_diff "$OUT" "$EXP"
index 7887d417b59fdb7e01b5c3d2b33922c0c9d87bf9..d6809be5df6e1d0e6d09cb9bff5d10f5a162ddb5 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -9,6 +9,7 @@
 
 #ifdef HAVE_LINUX_INPUT_H
 
+# include <assert.h>
 # include <inttypes.h>
 # include <stdio.h>
 # include <stdlib.h>
 # include <linux/input.h>
 # include "print_fields.h"
 
+# define NUM_WORDS 4
+
 static const char *errstr;
 
 struct evdev_check {
        unsigned long cmd;
        const char *cmd_str;
-       void *arg_ptr;
-       void (*print_arg)(long rc, void *ptr, void *arg);
+       const void *arg_ptr;
+       void (*print_arg)(long rc, const void *ptr, const void *arg);
 };
 
 static long
-invoke_test_syscall(unsigned long cmd, void *p)
+invoke_test_syscall(unsigned long cmd, const void *p)
 {
        long rc = ioctl(-1, cmd, p);
        errstr = sprintrc(rc);
@@ -38,10 +41,10 @@ invoke_test_syscall(unsigned long cmd, void *p)
 }
 
 static void
-test_evdev(struct evdev_check *check, void *arg)
+test_evdev(struct evdev_check *check, const void *arg)
 {
        long rc = invoke_test_syscall(check->cmd, check->arg_ptr);
-       printf("ioctl(-1, %s, ", check->cmd_str);
+       printf("ioctl(-1, %s, ", sprintxlat(check->cmd_str, check->cmd, NULL));
        if (check->print_arg)
                check->print_arg(rc, check->arg_ptr, arg);
        else
@@ -50,9 +53,12 @@ test_evdev(struct evdev_check *check, void *arg)
 }
 
 static void
-print_input_absinfo(long rc, void *ptr, void *arg)
+print_input_absinfo(long rc, const void *ptr, const void *arg)
 {
-       struct input_absinfo *absinfo = ptr;
+       const struct input_absinfo *absinfo = ptr;
+# if VERBOSE
+       const uintptr_t sz = (uintptr_t) arg;
+# endif
 
        if (rc < 0) {
                printf("%p", absinfo);
@@ -64,9 +70,20 @@ print_input_absinfo(long rc, void *ptr, void *arg)
        PRINT_FIELD_U(", ", *absinfo, maximum);
        PRINT_FIELD_U(", ", *absinfo, fuzz);
        PRINT_FIELD_U(", ", *absinfo, flat);
+       if (sz > offsetofend(struct input_absinfo, flat)) {
+               if (sz >= 24) {
 #  ifdef HAVE_STRUCT_INPUT_ABSINFO_RESOLUTION
-       PRINT_FIELD_U(", ", *absinfo, resolution);
+                       PRINT_FIELD_U(", ", *absinfo, resolution);
+#  else
+                       printf(", resolution=%u", *((int *) ptr + 5));
 #  endif
+
+                       if (sz > 24)
+                               printf(", ...");
+               } else {
+                       printf(", ...");
+               }
+       }
 # else
        printf(", ...");
 # endif
@@ -74,66 +91,90 @@ print_input_absinfo(long rc, void *ptr, void *arg)
 }
 
 static void
-print_input_id(long rc, void *ptr, void *arg)
+print_input_id(long rc, const void *ptr, const void *arg)
 {
-       struct input_id *id = ptr;
+       const struct input_id *id = ptr;
 
        if (rc < 0) {
                printf("%p", id);
                return;
        }
-       printf("{ID_BUS=%" PRIu16
-              ", ID_VENDOR=%" PRIu16
-              ", ID_PRODUCT=%" PRIu16
-              ", ID_VERSION=%" PRIu16 "}",
+       printf("{bustype=%" PRIu16
+              ", vendor=%" PRIu16
+              ", product=%" PRIu16
+              ", version=%" PRIu16 "}",
               id->bustype, id->vendor, id->product, id->version);
 }
 
 # ifdef EVIOCGMTSLOTS
 static void
-print_mtslots(long rc, void *ptr, void *arg)
+print_mtslots(long rc, const void *ptr, const void *arg)
 {
-       int *buffer = ptr;
-       const char **str = arg;
-       int num = atoi(*(str + 1));
+       const unsigned int *buffer = ptr;
+       const char * const * str = arg;
 
        if (rc < 0) {
                printf("%p", buffer);
                return;
        }
 
-       printf("{code=%s", *str);
+       printf("{code=%s", sprintxlat(*str, *buffer, NULL));
        printf(", values=[");
-       for (unsigned int i = 1; i <= (unsigned) num; i++)
-               printf("%s%s", i > 1 ? ", " : "", *(str + i + 1));
+       for (unsigned int i = 1; str[i]; i++)
+               printf("%s%s", i > 1 ? ", " : "", str[i]);
        printf("]}");
 }
 # endif
 
 static void
-print_getbit(long rc, void *ptr, void *arg)
+print_getbit(long rc, const void *ptr, const void *arg)
 {
-       const char **str = arg;
-       int num = atoi(*str);
+       const char * const *str = arg + sizeof(char *);
+# if XLAT_RAW || XLAT_VERBOSE
+       const unsigned long *buf = ptr;
+       const unsigned long buf_size = (uintptr_t) (str[-1]);
+# endif
 
-       if (rc < 0) {
+
+
+       if (rc <= 0) {
                printf("%p", ptr);
                return;
        }
 
+# if !XLAT_RAW
        printf("[");
-       printf("%s", *(str + 1));
-       for (unsigned int i = 2; i <= (unsigned) num; i++) {
-# if ! VERBOSE
-               if (i > 4) {
+       for (unsigned long i = 0; str[i]; i++) {
+#  if ! VERBOSE
+               if (i >= 4) {
                        printf(", ...");
                        break;
                }
-# endif
-               printf(", ");
-               printf("%s", *(str + i));
+#  endif
+               if (i)
+                       printf(", ");
+               printf("%s", str[i]);
        }
        printf("]");
+# endif /* !XLAT_RAW */
+
+# if XLAT_VERBOSE
+       printf(" /* ");
+# endif
+
+# if XLAT_RAW || XLAT_VERBOSE
+       printf("[");
+       const unsigned long cnt =
+               (MIN((unsigned long) rc, buf_size) + sizeof(long) - 1)
+               / sizeof(long);
+       for (unsigned long i = 0; i < cnt; i++)
+               printf("%s%#lx", i ? ", " : "", buf[i]);
+       printf("]");
+# endif
+
+# if XLAT_VERBOSE
+       printf(" */");
+# endif
 }
 
 int
@@ -158,8 +199,8 @@ main(int argc, char **argv)
 
        for (unsigned int i = 0; i < num_skip; i++) {
                long rc = ioctl(-1, EVIOCGID, NULL);
-               printf("ioctl(-1, EVIOCGID, NULL) = %s%s\n",
-                      sprintrc(rc),
+               printf("ioctl(-1, %s, NULL) = %s%s\n",
+                      XLAT_STR(EVIOCGID), sprintrc(rc),
                       rc == inject_retval ? " (INJECTED)" : "");
 
                if (rc != inject_retval)
@@ -174,52 +215,132 @@ main(int argc, char **argv)
                                   ", EVIOCGID, NULL) returning %lu",
                                   inject_retval);
 
+       static const void *absinfo_sz =
+               (const void *) (uintptr_t) sizeof(struct input_absinfo);
+
        TAIL_ALLOC_OBJECT_CONST_PTR(struct input_id, id);
        TAIL_ALLOC_OBJECT_CONST_PTR(struct input_absinfo, absinfo);
        TAIL_ALLOC_OBJECT_CONST_PTR(int, bad_addr_slot);
+
+       struct input_absinfo *absinfo_24 = tail_alloc(MAX(sizeof(*absinfo_24),
+                                                         24));
+       struct input_absinfo *absinfo_32 = tail_alloc(MAX(sizeof(*absinfo_32),
+                                                         32));
+
+       fill_memory(absinfo, sizeof(struct input_absinfo));
+       fill_memory(absinfo_24, 24);
+       fill_memory(absinfo_32, 32);
+
 # ifdef EVIOCGMTSLOTS
-       int mtslots[] = { ABS_MT_SLOT, 1, 3 };
-       /* we use the second element to indicate the number of values */
-       /* mtslots_str[1] is "2" so the number of values is 2 */
-       const char *mtslots_str[] = { "ABS_MT_SLOT", "2", "1", "3" };
+       static const unsigned int mtslots[] = { ABS_MT_SLOT, 1, 3 };
+       static const char * const mtslots_str[] = {
+               "ABS_MT_SLOT", "1", "3", NULL };
 
        /* invalid flag */
-       int invalid_mtslot[] = { -1, 1 };
-       char invalid_str[4096];
-       snprintf(invalid_str, sizeof(invalid_str), "%#x /* ABS_MT_??? */", invalid_mtslot[0]);
-       const char *invalid_mtslot_str[] = { invalid_str, "1", "1" };
+       static const unsigned int invalid_mtslot[] = { -1, 1 };
+       static const char * const invalid_mtslot_str[] = {
+               ""
+#  if !XLAT_RAW && !XLAT_VERBOSE
+               "0xffffffff"
+#  endif
+#  if !XLAT_VERBOSE
+               " /* "
+#  endif
+               "ABS_MT_???"
+#  if !XLAT_VERBOSE
+               " */"
+#  endif
+               , "1", NULL };
 # endif
 
+       enum { ULONG_BIT = sizeof(unsigned long) * 8 };
+
        /* set more than 4 bits */
-       unsigned long ev_more[] = { 1 << EV_ABS | 1 << EV_MSC | 1 << EV_LED | 1 << EV_SND | 1 << EV_PWR };
-       /* we use the first element to indicate the number of set bits */
-       /* ev_more_str[0] is "5" so the number of set bits is 5 */
-       const char *ev_more_str[] = { "5", "EV_ABS", "EV_MSC", "EV_LED", "EV_SND", "EV_PWR" };
+       static const unsigned long ev_more[NUM_WORDS] = {
+               1 << EV_ABS | 1 << EV_MSC | 1 << EV_LED | 1 << EV_SND
+               | 1 << EV_PWR };
+       static const char * const ev_more_str_2[] = {
+               (char *) (uintptr_t) 4,
+               XLAT_KNOWN(0x3, "EV_ABS"), XLAT_KNOWN(0x4, "EV_MSC"), NULL };
+       static const char * const ev_more_str_3[] = {
+               (char *) (uintptr_t) 4,
+               XLAT_KNOWN(0x3, "EV_ABS"), XLAT_KNOWN(0x4, "EV_MSC"),
+               XLAT_KNOWN(0x11, "EV_LED"), XLAT_KNOWN(0x12, "EV_SND"),
+               XLAT_KNOWN(0x16, "EV_PWR"), NULL };
 
        /* set less than 4 bits */
-       unsigned long ev_less[] = { 1 << EV_ABS | 1 << EV_MSC | 1 << EV_LED };
-       const char *ev_less_str[] = { "3", "EV_ABS", "EV_MSC", "EV_LED" };
+       static const unsigned long ev_less[NUM_WORDS] = {
+               1 << EV_ABS | 1 << EV_MSC | 1 << EV_LED };
+       static const char * const ev_less_str_2[] = {
+               (char *) (uintptr_t) 4,
+               XLAT_KNOWN(0x3, "EV_ABS"), XLAT_KNOWN(0x4, "EV_MSC"), NULL };
+       static const char * const ev_less_str_3[] = {
+               (char *) (uintptr_t) 4,
+               XLAT_KNOWN(0x3, "EV_ABS"), XLAT_KNOWN(0x4, "EV_MSC"),
+               XLAT_KNOWN(0x11, "EV_LED"), NULL };
 
        /* set zero bit */
-       unsigned long ev_zero[] = { 0x0 };
-       const char *ev_zero_str[] = { "0", " 0 " };
+       static const unsigned long ev_zero[NUM_WORDS] = { 0x0 };
+       static const char * const ev_zero_str[] = {
+               (char *) (uintptr_t) 1,
+               " 0 ", NULL };
 
        /* KEY_MAX is 0x2ff which is greater than retval * 8 */
-       unsigned long key[] = { 1 << KEY_1 | 1 << KEY_2, 0 };
-       const char *key_str[] = { "2", "KEY_1", "KEY_2" };
+       static const unsigned long key[NUM_WORDS] = {
+               1 << KEY_1 | 1 << KEY_2,
+               [ KEY_F12 / ULONG_BIT ] = 1 << (KEY_F12 % ULONG_BIT) };
+
+       static const char * const key_str_8[] = {
+               (char *) (uintptr_t) (NUM_WORDS * sizeof(long)),
+               XLAT_KNOWN(0x2, "KEY_1"), XLAT_KNOWN(0x3, "KEY_2"), NULL };
+       static const char * const key_str_16[] = {
+               (char *) (uintptr_t) (NUM_WORDS * sizeof(long)),
+               XLAT_KNOWN(0x2, "KEY_1"), XLAT_KNOWN(0x3, "KEY_2"),
+               XLAT_KNOWN(0x58, "KEY_F12"), NULL };
+
+       assert(sizeof(ev_more) >= (unsigned long) inject_retval);
+       assert(sizeof(ev_less) >= (unsigned long) inject_retval);
+       assert(sizeof(ev_zero) >= (unsigned long) inject_retval);
+       assert(sizeof(key) >= (unsigned long) inject_retval);
 
        struct {
                struct evdev_check check;
-               void *ptr;
+               const void *ptr;
        } a[] = {
                { { ARG_STR(EVIOCGID), id, print_input_id }, NULL },
-               { { ARG_STR(EVIOCGABS(ABS_X)), absinfo, print_input_absinfo }, NULL },
-               { { ARG_STR(EVIOCGABS(ABS_Y)), absinfo, print_input_absinfo }, NULL },
-               { { ARG_STR(EVIOCGABS(ABS_Y)), absinfo, print_input_absinfo }, NULL },
-               { { ARG_STR(EVIOCGBIT(0, 0)), ev_more, print_getbit }, &ev_more_str },
-               { { ARG_STR(EVIOCGBIT(0, 0)), ev_less, print_getbit }, &ev_less_str },
+               { { _IOC(_IOC_READ, 'E', 0x40 + ABS_Y, 19), "EVIOCGABS(ABS_Y)",
+                   absinfo, NULL }, NULL },
+               { { _IOC(_IOC_READ, 'E', 0x40 + ABS_Y, 20),
+                   "EVIOCGABS(ABS_Y)", absinfo, print_input_absinfo },
+                 (const void *) (uintptr_t) 20 },
+               { { _IOC(_IOC_READ, 'E', 0x40 + ABS_Y, 21),
+                   "EVIOCGABS(ABS_Y)", absinfo_24, print_input_absinfo },
+                 (const void *) (uintptr_t) 21 },
+               { { _IOC(_IOC_READ, 'E', 0x40 + ABS_Y, 24),
+                   "EVIOCGABS(ABS_Y)", absinfo_24, print_input_absinfo },
+                 (const void *) (uintptr_t) 24 },
+               { { _IOC(_IOC_READ, 'E', 0x40 + ABS_Y, 32),
+                   "EVIOCGABS(ABS_Y)", absinfo_32, print_input_absinfo },
+                 (const void *) (uintptr_t) 32 },
+               { { ARG_STR(EVIOCGABS(ABS_X)), absinfo, print_input_absinfo },
+                 absinfo_sz},
+               { { ARG_STR(EVIOCGABS(ABS_Y)), absinfo, print_input_absinfo },
+                 absinfo_sz },
+               { { ARG_STR(EVIOCGABS(ABS_Y)), absinfo, print_input_absinfo },
+                 absinfo_sz },
+               { { ARG_STR(EVIOCGBIT(0, 0)), ev_more, print_getbit },
+                       inject_retval * 8 <= EV_LED
+                               ? (const void *) &ev_more_str_2
+                               : (const void *) &ev_more_str_3 },
+               { { ARG_STR(EVIOCGBIT(0, 0)), ev_less, print_getbit },
+                       inject_retval * 8 <= EV_LED
+                               ? (const void *) &ev_less_str_2
+                               : (const void *) &ev_less_str_3 },
                { { ARG_STR(EVIOCGBIT(0, 0)), ev_zero, print_getbit }, &ev_zero_str },
-               { { ARG_STR(EVIOCGBIT(EV_KEY, 0)), key, print_getbit }, &key_str},
+               { { ARG_STR(EVIOCGBIT(EV_KEY, 0)), key, print_getbit },
+                       inject_retval * 8 <= KEY_F12
+                               ? (const void *) &key_str_8
+                               : (const void *) &key_str_16 },
 # ifdef EVIOCGMTSLOTS
                { { ARG_STR(EVIOCGMTSLOTS(12)), mtslots, print_mtslots }, &mtslots_str },
                { { ARG_STR(EVIOCGMTSLOTS(8)), invalid_mtslot, print_mtslots }, &invalid_mtslot_str }
index 54b0a20a9803ee2100b239551cbad526868a9c16..0a7489d3f122c5515c8057c79da6523914b7ec13 100755 (executable)
@@ -1,6 +1,6 @@
 #!/bin/sh -efu
 #
-# Copyright (c) 2018 The strace developers.
+# Copyright (c) 2018-2019 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -8,11 +8,15 @@
 . "${srcdir=.}/scno_tampering.sh"
 
 : ${IOCTL_INJECT_START=256}
-: ${IOCTL_INJECT_RETVAL=8}
 
 run_prog
-run_strace -a16 -e trace=ioctl \
-       -e inject=ioctl:retval="${IOCTL_INJECT_RETVAL}":when="${IOCTL_INJECT_START}+" \
-       ../ioctl_evdev-success "${IOCTL_INJECT_START}" "${IOCTL_INJECT_RETVAL}"> "$EXP"
-grep -v '^ioctl([012][,<]' < "$LOG" > "$OUT"
-match_diff "$OUT" "$EXP"
+prog="$args"
+
+for ret in 0 2 8 15 16; do
+       run_strace -a26 "$@" -e trace=ioctl \
+               -e inject=ioctl:retval="${ret}":when="${IOCTL_INJECT_START}+" \
+               "$prog" \
+               "${IOCTL_INJECT_START}" "${ret}"> "$EXP.${ret}"
+       grep -v '^ioctl([012][,<]' < "$LOG" > "$OUT.$ret"
+       match_diff "$OUT.$ret" "$EXP.$ret"
+done
diff --git a/tests-mx32/ioctl_evdev-v-Xabbrev.c b/tests-mx32/ioctl_evdev-v-Xabbrev.c
new file mode 100644 (file)
index 0000000..b2ed15c
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_ABBREV 1
+#include "ioctl_evdev-v.c"
diff --git a/tests-mx32/ioctl_evdev-v-Xabbrev.gen.test b/tests-mx32/ioctl_evdev-v-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..f6efb73
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-v-Xabbrev +ioctl.test -a26 -v -Xabbrev); do not edit.
+set -- -a26 -v -Xabbrev
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_evdev-v-Xraw.c b/tests-mx32/ioctl_evdev-v-Xraw.c
new file mode 100644 (file)
index 0000000..c6f4e53
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "ioctl_evdev-v.c"
diff --git a/tests-mx32/ioctl_evdev-v-Xraw.gen.test b/tests-mx32/ioctl_evdev-v-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..d446068
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-v-Xraw +ioctl.test -a28 -v -Xraw); do not edit.
+set -- -a28 -v -Xraw
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_evdev-v-Xverbose.c b/tests-mx32/ioctl_evdev-v-Xverbose.c
new file mode 100644 (file)
index 0000000..f911277
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "ioctl_evdev-v.c"
diff --git a/tests-mx32/ioctl_evdev-v-Xverbose.gen.test b/tests-mx32/ioctl_evdev-v-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..7f9c298
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-v-Xverbose +ioctl.test -a41 -v -Xverbose); do not edit.
+set -- -a41 -v -Xverbose
+. "${srcdir=.}/ioctl.test"
index bf74ef4cb4cdfcaa0a53adf720b5ca34daf0de2b..3b012fb98d0d05fda70a46e8b3265b18a43c42dc 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-v +ioctl.test -v); do not edit.
-set -- -v
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-v +ioctl.test -a26 -v); do not edit.
+set -- -a26 -v
 . "${srcdir=.}/ioctl.test"
index 02be472c7c05dbbc1e71828d576aef1548543de0..e97b54985f305d8317fe6d1181cd505afaf5ffef 100644 (file)
@@ -2,7 +2,7 @@
  * This file is part of ioctl_evdev strace test.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 #  define ABS_MT_TOOL_Y 0x3d
 # endif
 
+# if XLAT_VERBOSE
+#  define UNK_CMD(val_, str_) val_
+# else
+#  define UNK_CMD(val_, str_) val_ " /* " str_ " */"
+# endif
+
 static const unsigned int magic = 0xdeadbeef;
 static const unsigned long lmagic = (unsigned long) 0xdeadbeefbadc0dedULL;
 
@@ -43,9 +49,11 @@ print_envelope(const struct ff_envelope *const e)
 static void
 print_ffe_common(const struct ff_effect *const ffe, const char *const type_str)
 {
-       printf("ioctl(-1, EVIOCSFF, {type=%s, id=%" PRIu16
+       printf("ioctl(-1, %s", XLAT_STR(EVIOCSFF));
+       printf(", {type=%s, id=%" PRId16
               ", direction=%" PRIu16 ", ",
-              type_str, ffe->id, ffe->direction);
+              sprintxlat(type_str, ffe->type, NULL),
+              ffe->id, ffe->direction);
 # if VERBOSE
        printf("trigger={button=%hu, interval=%hu}"
               ", replay={length=%hu, delay=%hu}",
@@ -54,10 +62,11 @@ print_ffe_common(const struct ff_effect *const ffe, const char *const type_str)
 # endif /* VERBOSE */
 }
 
-# define TEST_NULL_ARG_EX(cmd, str)                                            \
+# define TEST_NULL_ARG_EX(cmd, str)                                    \
        do {                                                            \
                ioctl(-1, cmd, 0);                                      \
-               printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n", str);   \
+               printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",         \
+                      sprintxlat(str, cmd, NULL));                     \
        } while (0)
 
 # define TEST_NULL_ARG(cmd) TEST_NULL_ARG_EX(cmd, #cmd)
@@ -107,17 +116,23 @@ main(void)
        TEST_NULL_ARG(EVIOCGABS(ABS_X));
        TEST_NULL_ARG(EVIOCSABS(ABS_X));
 
-       TEST_NULL_ARG_EX(EVIOCGABS(0xe), "EVIOCGABS(0xe /* ABS_??? */)");
-       TEST_NULL_ARG_EX(EVIOCSABS(0xe), "EVIOCSABS(0xe /* ABS_??? */)");
+       TEST_NULL_ARG_EX(EVIOCGABS(0xe),
+                        "EVIOCGABS(" UNK_CMD("0xe", "ABS_???") ")");
+       TEST_NULL_ARG_EX(EVIOCSABS(0xe),
+                        "EVIOCSABS(" UNK_CMD("0xe", "ABS_???") ")");
 
        TEST_NULL_ARG(EVIOCGABS(ABS_MT_TOOL_Y));
        TEST_NULL_ARG(EVIOCSABS(ABS_MT_TOOL_Y));
 
-       TEST_NULL_ARG_EX(EVIOCGABS(0x3e), "EVIOCGABS(0x3e /* ABS_??? */)");
-       TEST_NULL_ARG_EX(EVIOCSABS(0x3e), "EVIOCSABS(0x3e /* ABS_??? */)");
+       TEST_NULL_ARG_EX(EVIOCGABS(0x3e),
+                        "EVIOCGABS(" UNK_CMD("0x3e", "ABS_???") ")");
+       TEST_NULL_ARG_EX(EVIOCSABS(0x3e),
+                        "EVIOCSABS(" UNK_CMD("0x3e", "ABS_???") ")");
 
-       TEST_NULL_ARG_EX(EVIOCGABS(0x3f), "EVIOCGABS(0x3f /* ABS_??? */)");
-       TEST_NULL_ARG_EX(EVIOCSABS(0x3f), "EVIOCSABS(0x3f /* ABS_??? */)");
+       TEST_NULL_ARG_EX(EVIOCGABS(0x3f),
+                        "EVIOCGABS(" UNK_CMD("0x3f", "ABS_???") ")");
+       TEST_NULL_ARG_EX(EVIOCSABS(0x3f),
+                        "EVIOCSABS(" UNK_CMD("0x3f", "ABS_???") ")");
 
        TEST_NULL_ARG(EVIOCGBIT(0, 0));
        TEST_NULL_ARG(EVIOCGBIT(EV_KEY, 1));
@@ -132,25 +147,36 @@ main(void)
        TEST_NULL_ARG(EVIOCGBIT(EV_PWR, 10));
        TEST_NULL_ARG(EVIOCGBIT(EV_FF_STATUS, 11));
 
-       TEST_NULL_ARG_EX(EVIOCGBIT(0x6, 12), "EVIOCGBIT(0x6 /* EV_??? */, 12)");
+       TEST_NULL_ARG_EX(EVIOCGBIT(0x6, 12),
+                        "EVIOCGBIT(" UNK_CMD("0x6", "EV_???") ", 12)");
        TEST_NULL_ARG_EX(EVIOCGBIT(0x18, 13),
-                        "EVIOCGBIT(0x18 /* EV_??? */, 13)");
+                        "EVIOCGBIT(" UNK_CMD("0x18", "EV_???") ", 13)");
        TEST_NULL_ARG_EX(EVIOCGBIT(0x1f, 14),
-                        "EVIOCGBIT(0x1f /* EV_??? */, 14)");
+                        "EVIOCGBIT(" UNK_CMD("0x1f", "EV_???") ", 14)");
 
        ioctl(-1, EVIOCGBIT(EV_MAX, 42), 0);
-       printf("ioctl(-1, EVIOCGBIT(%#x /* EV_??? */, 42), NULL)"
-              " = -1 EBADF (%m)\n", EV_MAX);
+       printf("ioctl(-1, ");
+# if XLAT_RAW
+       printf("%#x", EVIOCGBIT(EV_MAX, 42));
+# elif XLAT_VERBOSE
+       printf("%#x /* EVIOCGBIT(%#x, 42) */", EVIOCGBIT(EV_MAX, 42), EV_MAX);
+# else
+       printf("EVIOCGBIT(%#x /* EV_??? */, 42)", EV_MAX);
+# endif
+       printf(", NULL) = -1 EBADF (%m)\n");
 
        ioctl(-1, EVIOCRMFF, lmagic);
-       printf("ioctl(-1, EVIOCRMFF, %d) = -1 EBADF (%m)\n", (int) lmagic);
+       printf("ioctl(-1, %s, %d) = -1 EBADF (%m)\n",
+              XLAT_STR(EVIOCRMFF), (int) lmagic);
 
        ioctl(-1, EVIOCGRAB, lmagic);
-       printf("ioctl(-1, EVIOCGRAB, %lu) = -1 EBADF (%m)\n", lmagic);
+       printf("ioctl(-1, %s, %lu) = -1 EBADF (%m)\n",
+              XLAT_STR(EVIOCGRAB), lmagic);
 
 # ifdef EVIOCREVOKE
        ioctl(-1, EVIOCREVOKE, lmagic);
-       printf("ioctl(-1, EVIOCREVOKE, %lu) = -1 EBADF (%m)\n", lmagic);
+       printf("ioctl(-1, %s, %lu) = -1 EBADF (%m)\n",
+              XLAT_STR(EVIOCREVOKE), lmagic);
 # endif
 
        const unsigned int size = get_page_size();
@@ -162,7 +188,8 @@ main(void)
 
 # ifdef EVIOCSCLOCKID
        ioctl(-1, EVIOCSCLOCKID, val_int);
-       printf("ioctl(-1, EVIOCSCLOCKID, [%u]) = -1 EBADF (%m)\n", *val_int);
+       printf("ioctl(-1, %s, [%u]) = -1 EBADF (%m)\n",
+              XLAT_STR(EVIOCSCLOCKID), *val_int);
 # endif
 
        int *pair_int = tail_alloc(sizeof(*pair_int) * 2);
@@ -171,14 +198,15 @@ main(void)
 
 # ifdef EVIOSGREP
        ioctl(-1, EVIOCSREP, pair_int);
-       printf("ioctl(-1, EVIOCSREP, [%u, %u]) = -1 EBADF (%m)\n",
-              pair_int[0], pair_int[1]);
+       printf("ioctl(-1, %s, [%u, %u]) = -1 EBADF (%m)\n",
+              XLAT_STR(EVIOCSREP), pair_int[0], pair_int[1]);
 # endif
 
        pair_int[1] = 1;
        ioctl(-1, EVIOCSKEYCODE, pair_int);
-       printf("ioctl(-1, EVIOCSKEYCODE, [%u, %s]) = -1 EBADF (%m)\n",
-              pair_int[0], "KEY_ESC");
+       printf("ioctl(-1, %s, [%u, %s]) = -1 EBADF (%m)\n",
+              XLAT_STR(EVIOCSKEYCODE), pair_int[0],
+              XLAT_KNOWN(0x1, "KEY_ESC"));
 
 # ifdef EVIOCSKEYCODE_V2
        TAIL_ALLOC_OBJECT_CONST_PTR(struct input_keymap_entry, ike);
@@ -186,16 +214,16 @@ main(void)
        ike->keycode = 2;
 
        ioctl(-1, EVIOCSKEYCODE_V2, ike);
-       printf("ioctl(-1, EVIOCSKEYCODE_V2, {flags=%" PRIu8
-              ", len=%" PRIu8 ", ", ike->flags, ike->len);
+       printf("ioctl(-1, %s, {flags=%" PRIu8 ", len=%" PRIu8 ", ",
+              XLAT_STR(EVIOCSKEYCODE_V2), ike->flags, ike->len);
 #  if VERBOSE
        printf("index=%" PRIu16 ", keycode=%s, scancode=[",
-              ike->index, "KEY_1");
+              ike->index, XLAT_STR(KEY_1));
        unsigned int i;
        for (i = 0; i < ARRAY_SIZE(ike->scancode); ++i) {
                if (i > 0)
                        printf(", ");
-               printf("%" PRIx8, ike->scancode[i]);
+               printf("%#" PRIx8, ike->scancode[i]);
        }
        printf("]");
 #  else
@@ -256,26 +284,37 @@ main(void)
 
        ffe->type = 0xff;
        ioctl(-1, EVIOCSFF, ffe);
-       print_ffe_common(ffe, "0xff /* FF_??? */");
+       print_ffe_common(ffe,
+#  if !XLAT_RAW && !XLAT_VERBOSE
+               "0xff"
+#  endif
+#  if !XLAT_VERBOSE
+               " /* "
+#  endif
+               "FF_???"
+#  if !XLAT_VERBOSE
+               " */"
+#  endif
+               );
        errno = EBADF;
        printf("}) = -1 EBADF (%m)\n");
 # endif
 
        ioctl(-1, _IOC(_IOC_READ, 0x45, 0x1, 0xff), lmagic);
        printf("ioctl(-1, %s, %#lx) = -1 EBADF (%m)\n",
-              "_IOC(_IOC_READ, 0x45, 0x1, 0xff)", lmagic);
+              XLAT_STR(_IOC(_IOC_READ, 0x45, 0x1, 0xff)), lmagic);
 
        ioctl(-1, _IOC(_IOC_WRITE, 0x45, 0x1, 0xff), lmagic);
        printf("ioctl(-1, %s, %#lx) = -1 EBADF (%m)\n",
-              "_IOC(_IOC_WRITE, 0x45, 0x1, 0xff)", lmagic);
+              XLAT_STR(_IOC(_IOC_WRITE, 0x45, 0x1, 0xff)), lmagic);
 
        ioctl(-1, _IOC(_IOC_READ|_IOC_WRITE, 0x45, 0xfe, 0xff), lmagic);
        printf("ioctl(-1, %s, %#lx) = -1 EBADF (%m)\n",
-              "_IOC(_IOC_READ|_IOC_WRITE, 0x45, 0xfe, 0xff)", lmagic);
+              XLAT_STR(_IOC(_IOC_READ|_IOC_WRITE, 0x45, 0xfe, 0xff)), lmagic);
 
        ioctl(-1, _IOC(_IOC_READ|_IOC_WRITE, 0x45, 0, 0), lmagic);
        printf("ioctl(-1, %s, %#lx) = -1 EBADF (%m)\n",
-              "_IOC(_IOC_READ|_IOC_WRITE, 0x45, 0, 0)", lmagic);
+              XLAT_STR(_IOC(_IOC_READ|_IOC_WRITE, 0x45, 0, 0)), lmagic);
 
        puts("+++ exited with 0 +++");
        return 0;
index 68a43f7c476be333b2d8be74037dca4195fc3abf..4b9ba41345a8734ad74294a9338ae75c7bdeca5b 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev +ioctl.test ); do not edit.
-set -- 
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev +ioctl.test -a26); do not edit.
+set -- -a26
 . "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_hdio-Xabbrev.c b/tests-mx32/ioctl_hdio-Xabbrev.c
new file mode 100644 (file)
index 0000000..aa0af2a
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_ABBREV 1
+#include "ioctl_hdio.c"
diff --git a/tests-mx32/ioctl_hdio-Xabbrev.gen.test b/tests-mx32/ioctl_hdio-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..1ab876b
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_hdio-Xabbrev +ioctl.test -a27 -Xabbrev); do not edit.
+set -- -a27 -Xabbrev
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_hdio-Xraw.c b/tests-mx32/ioctl_hdio-Xraw.c
new file mode 100644 (file)
index 0000000..9e169a8
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "ioctl_hdio.c"
diff --git a/tests-mx32/ioctl_hdio-Xraw.gen.test b/tests-mx32/ioctl_hdio-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..fa03656
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_hdio-Xraw +ioctl.test -a20 -Xraw); do not edit.
+set -- -a20 -Xraw
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_hdio-Xverbose.c b/tests-mx32/ioctl_hdio-Xverbose.c
new file mode 100644 (file)
index 0000000..29e45e8
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "ioctl_hdio.c"
diff --git a/tests-mx32/ioctl_hdio-Xverbose.gen.test b/tests-mx32/ioctl_hdio-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..1dde165
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_hdio-Xverbose +ioctl.test -a39 -Xverbose); do not edit.
+set -- -a39 -Xverbose
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_hdio-success-Xabbrev.c b/tests-mx32/ioctl_hdio-success-Xabbrev.c
new file mode 100644 (file)
index 0000000..410f196
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_ABBREV 1
+#include "ioctl_hdio-success.c"
diff --git a/tests-mx32/ioctl_hdio-success-Xabbrev.gen.test b/tests-mx32/ioctl_hdio-success-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..fa74b9e
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_hdio-success-Xabbrev +ioctl-success.sh -a27 -Xabbrev); do not edit.
+set -- -a27 -Xabbrev
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests-mx32/ioctl_hdio-success-Xraw.c b/tests-mx32/ioctl_hdio-success-Xraw.c
new file mode 100644 (file)
index 0000000..ee63bb8
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "ioctl_hdio-success.c"
diff --git a/tests-mx32/ioctl_hdio-success-Xraw.gen.test b/tests-mx32/ioctl_hdio-success-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..2ac7c9c
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_hdio-success-Xraw +ioctl-success.sh -a20 -Xraw); do not edit.
+set -- -a20 -Xraw
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests-mx32/ioctl_hdio-success-Xverbose.c b/tests-mx32/ioctl_hdio-success-Xverbose.c
new file mode 100644 (file)
index 0000000..bef62b0
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "ioctl_hdio-success.c"
diff --git a/tests-mx32/ioctl_hdio-success-Xverbose.gen.test b/tests-mx32/ioctl_hdio-success-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..acbded5
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_hdio-success-Xverbose +ioctl-success.sh -a39 -Xverbose); do not edit.
+set -- -a39 -Xverbose
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests-mx32/ioctl_hdio-success-v-Xabbrev.c b/tests-mx32/ioctl_hdio-success-v-Xabbrev.c
new file mode 100644 (file)
index 0000000..1374537
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_ABBREV 1
+#include "ioctl_hdio-success-v.c"
diff --git a/tests-mx32/ioctl_hdio-success-v-Xabbrev.gen.test b/tests-mx32/ioctl_hdio-success-v-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..d6a3ab2
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_hdio-success-v-Xabbrev +ioctl-success.sh -a27 -v -Xabbrev); do not edit.
+set -- -a27 -v -Xabbrev
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests-mx32/ioctl_hdio-success-v-Xraw.c b/tests-mx32/ioctl_hdio-success-v-Xraw.c
new file mode 100644 (file)
index 0000000..c34ad58
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "ioctl_hdio-success-v.c"
diff --git a/tests-mx32/ioctl_hdio-success-v-Xraw.gen.test b/tests-mx32/ioctl_hdio-success-v-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..b0d664b
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_hdio-success-v-Xraw +ioctl-success.sh -a20 -v -Xraw); do not edit.
+set -- -a20 -v -Xraw
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests-mx32/ioctl_hdio-success-v-Xverbose.c b/tests-mx32/ioctl_hdio-success-v-Xverbose.c
new file mode 100644 (file)
index 0000000..4f44b49
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "ioctl_hdio-success-v.c"
diff --git a/tests-mx32/ioctl_hdio-success-v-Xverbose.gen.test b/tests-mx32/ioctl_hdio-success-v-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..72e9f62
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_hdio-success-v-Xverbose +ioctl-success.sh -a39 -v -Xverbose); do not edit.
+set -- -a39 -v -Xverbose
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests-mx32/ioctl_hdio-success-v.c b/tests-mx32/ioctl_hdio-success-v.c
new file mode 100644 (file)
index 0000000..f48ca93
--- /dev/null
@@ -0,0 +1,2 @@
+#define VERBOSE 1
+#include "ioctl_hdio-success.c"
diff --git a/tests-mx32/ioctl_hdio-success-v.gen.test b/tests-mx32/ioctl_hdio-success-v.gen.test
new file mode 100755 (executable)
index 0000000..a4b6c0f
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_hdio-success-v +ioctl-success.sh -a27 -v); do not edit.
+set -- -a27 -v
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests-mx32/ioctl_hdio-success.c b/tests-mx32/ioctl_hdio-success.c
new file mode 100644 (file)
index 0000000..680d703
--- /dev/null
@@ -0,0 +1,2 @@
+#define INJECT_RETVAL 42
+#include "ioctl_hdio.c"
diff --git a/tests-mx32/ioctl_hdio-success.gen.test b/tests-mx32/ioctl_hdio-success.gen.test
new file mode 100755 (executable)
index 0000000..ec9318a
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_hdio-success +ioctl-success.sh -a27); do not edit.
+set -- -a27
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests-mx32/ioctl_hdio-v-Xabbrev.c b/tests-mx32/ioctl_hdio-v-Xabbrev.c
new file mode 100644 (file)
index 0000000..86aca7d
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_ABBREV 1
+#include "ioctl_hdio-v.c"
diff --git a/tests-mx32/ioctl_hdio-v-Xabbrev.gen.test b/tests-mx32/ioctl_hdio-v-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..92df94d
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_hdio-v-Xabbrev +ioctl.test -a27 -v -Xabbrev); do not edit.
+set -- -a27 -v -Xabbrev
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_hdio-v-Xraw.c b/tests-mx32/ioctl_hdio-v-Xraw.c
new file mode 100644 (file)
index 0000000..e55841a
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "ioctl_hdio-v.c"
diff --git a/tests-mx32/ioctl_hdio-v-Xraw.gen.test b/tests-mx32/ioctl_hdio-v-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..a7e81ca
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_hdio-v-Xraw +ioctl.test -a20 -v -Xraw); do not edit.
+set -- -a20 -v -Xraw
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_hdio-v-Xverbose.c b/tests-mx32/ioctl_hdio-v-Xverbose.c
new file mode 100644 (file)
index 0000000..00b524e
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "ioctl_hdio-v.c"
diff --git a/tests-mx32/ioctl_hdio-v-Xverbose.gen.test b/tests-mx32/ioctl_hdio-v-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..eba5488
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_hdio-v-Xverbose +ioctl.test -a39 -v -Xverbose); do not edit.
+set -- -a39 -v -Xverbose
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_hdio-v.c b/tests-mx32/ioctl_hdio-v.c
new file mode 100644 (file)
index 0000000..fcff670
--- /dev/null
@@ -0,0 +1,2 @@
+#define VERBOSE 1
+#include "ioctl_hdio.c"
diff --git a/tests-mx32/ioctl_hdio-v.gen.test b/tests-mx32/ioctl_hdio-v.gen.test
new file mode 100755 (executable)
index 0000000..7d1adc3
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_hdio-v +ioctl.test -a27 -v); do not edit.
+set -- -a27 -v
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_hdio.c b/tests-mx32/ioctl_hdio.c
new file mode 100644 (file)
index 0000000..d340782
--- /dev/null
@@ -0,0 +1,227 @@
+/*
+ * Check HDIO_* ioctl decoding.
+ *
+ * Copyright (c) 2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <linux/hdreg.h>
+#include <sys/ioctl.h>
+
+static const char *errstr;
+
+static long
+do_ioctl(kernel_ulong_t cmd, kernel_ulong_t arg)
+{
+       long rc = ioctl(-1, cmd, arg);
+
+       errstr = sprintrc(rc);
+
+#ifdef INJECT_RETVAL
+       if (rc != INJECT_RETVAL)
+               error_msg_and_fail("Got a return value of %ld != %ld",
+                                  rc, (long) INJECT_RETVAL);
+
+       static char inj_errstr[4096];
+
+       snprintf(inj_errstr, sizeof(inj_errstr), "%s (INJECTED)", errstr);
+       errstr = inj_errstr;
+#endif
+
+       return rc;
+}
+
+static inline long
+do_ioctl_ptr(kernel_ulong_t cmd, const void *arg)
+{
+       return do_ioctl(cmd, (uintptr_t) arg);
+}
+
+int
+main(int argc, char *argv[])
+{
+#ifdef INJECT_RETVAL
+       unsigned long num_skip;
+       bool locked = false;
+
+       if (argc < 2)
+               error_msg_and_fail("Usage: %s NUM_SKIP", argv[0]);
+
+       num_skip = strtoul(argv[1], NULL, 0);
+
+       for (size_t i = 0; i < num_skip; i++) {
+               long ret = ioctl(-1, HDIO_GET_UNMASKINTR, 0);
+
+               printf("ioctl(-1, %s, 0) = %s%s\n",
+                      XLAT_STR(HDIO_GET_UNMASKINTR), sprintrc(ret),
+                      ret == INJECT_RETVAL ? " (INJECTED)" : "");
+
+               if (ret != INJECT_RETVAL)
+                       continue;
+
+               locked = true;
+               break;
+       }
+
+       if (!locked)
+               error_msg_and_fail("Hasn't locked on ioctl(-1"
+                                  ", HDIO_GET_UNMASKINTR, 0) returning %d",
+                                  INJECT_RETVAL);
+#endif
+
+       long rc;
+
+       /* Decoding is not supported */
+       static const struct {
+               uint32_t cmd;
+               const char *str;
+       } unsupp_cmds[] = {
+               { ARG_STR(HDIO_GET_UNMASKINTR) },
+               { ARG_STR(HDIO_GET_MULTCOUNT) },
+               { ARG_STR(HDIO_GET_QDMA) },
+               { ARG_STR(HDIO_SET_XFER) },
+               { ARG_STR(HDIO_OBSOLETE_IDENTITY) },
+               { ARG_STR(HDIO_GET_KEEPSETTINGS) },
+               { ARG_STR(HDIO_GET_32BIT) },
+               { ARG_STR(HDIO_GET_NOWERR) },
+               { ARG_STR(HDIO_GET_DMA) },
+               { ARG_STR(HDIO_GET_NICE) },
+               { ARG_STR(HDIO_GET_IDENTITY) },
+               { ARG_STR(HDIO_GET_WCACHE) },
+               { ARG_STR(HDIO_GET_ACOUSTIC) },
+               { ARG_STR(HDIO_GET_ADDRESS) },
+               { ARG_STR(HDIO_GET_BUSSTATE) },
+               { ARG_STR(HDIO_TRISTATE_HWIF) },
+               { ARG_STR(HDIO_DRIVE_RESET) },
+               { ARG_STR(HDIO_DRIVE_TASKFILE) },
+               { ARG_STR(HDIO_DRIVE_TASK) },
+               { ARG_STR(HDIO_SET_MULTCOUNT) },
+               { ARG_STR(HDIO_SET_UNMASKINTR) },
+               { ARG_STR(HDIO_SET_KEEPSETTINGS) },
+               { ARG_STR(HDIO_SET_32BIT) },
+               { ARG_STR(HDIO_SET_NOWERR) },
+               { ARG_STR(HDIO_SET_DMA) },
+               { ARG_STR(HDIO_SET_PIO_MODE) },
+               { ARG_STR(HDIO_SCAN_HWIF) },
+               { ARG_STR(HDIO_UNREGISTER_HWIF) },
+               { ARG_STR(HDIO_SET_NICE) },
+               { ARG_STR(HDIO_SET_WCACHE) },
+               { ARG_STR(HDIO_SET_ACOUSTIC) },
+               { ARG_STR(HDIO_SET_BUSSTATE) },
+               { ARG_STR(HDIO_SET_QDMA) },
+               { ARG_STR(HDIO_SET_ADDRESS) },
+       };
+
+       for (size_t i = 0; i < ARRAY_SIZE(unsupp_cmds); i++) {
+               do_ioctl(unsupp_cmds[i].cmd, 0);
+               printf("ioctl(-1, " XLAT_FMT ", 0) = %s\n",
+                      XLAT_SEL(unsupp_cmds[i].cmd, unsupp_cmds[i].str),
+                      errstr);
+
+               do_ioctl(unsupp_cmds[i].cmd,
+                        (unsigned long) 0xbadc0deddeadc0deULL);
+               printf("ioctl(-1, " XLAT_FMT ", %#lx) = %s\n",
+                      XLAT_SEL(unsupp_cmds[i].cmd, unsupp_cmds[i].str),
+                      (unsigned long) 0xbadc0deddeadc0deULL, errstr);
+       }
+
+
+       /* HDIO_GETGEO */
+       do_ioctl(HDIO_GETGEO, 0);
+       printf("ioctl(-1, %s, NULL) = %s\n",
+              XLAT_STR(HDIO_GETGEO), errstr);
+
+       TAIL_ALLOC_OBJECT_CONST_PTR(struct hd_geometry, p_hd_geom);
+
+       p_hd_geom->heads = 0xca;
+       p_hd_geom->sectors = 0xfe;
+       p_hd_geom->cylinders = 0xbabe;
+       p_hd_geom->start = (unsigned long) 0xbadc0deddeadfaceULL;
+
+       do_ioctl_ptr(HDIO_GETGEO, (char *) p_hd_geom + 1);
+       printf("ioctl(-1, %s, %p) = %s\n",
+              XLAT_STR(HDIO_GETGEO), (char *) p_hd_geom + 1, errstr);
+
+       rc = do_ioctl_ptr(HDIO_GETGEO, p_hd_geom);
+       printf("ioctl(-1, %s, ", XLAT_STR(HDIO_GETGEO));
+       if (rc >= 0) {
+               printf("{heads=202, sectors=254, cylinders=47806, start=%lu}",
+                      (unsigned long) 0xbadc0deddeadfaceULL);
+       } else {
+               printf("%p", p_hd_geom);
+       }
+       printf(") = %s\n", errstr);
+
+       /* HDIO_DRIVE_CMD */
+       do_ioctl(HDIO_DRIVE_CMD, 0);
+       printf("ioctl(-1, %s, NULL) = %s\n",
+              XLAT_STR(HDIO_DRIVE_CMD), errstr);
+
+       TAIL_ALLOC_OBJECT_CONST_PTR(struct hd_drive_cmd_hdr, p_hd_drive_cmd);
+       struct hd_drive_cmd_hdr *p_hd_drive_cmd2 =
+               tail_alloc(sizeof(*p_hd_drive_cmd2) + 16);
+       struct hd_drive_cmd_hdr *p_hd_drive_cmd3 =
+               tail_alloc(sizeof(*p_hd_drive_cmd3) + DEFAULT_STRLEN + 1);
+
+       fill_memory(p_hd_drive_cmd2, sizeof(*p_hd_drive_cmd2) + 16);
+       fill_memory(p_hd_drive_cmd3,
+                   sizeof(*p_hd_drive_cmd3) + DEFAULT_STRLEN + 1);
+
+       p_hd_drive_cmd->command = 0xca;
+       p_hd_drive_cmd->sector_number = 0xff;
+       p_hd_drive_cmd->feature = 0xee;
+       p_hd_drive_cmd->sector_count = 0;
+
+       do_ioctl_ptr(HDIO_DRIVE_CMD, (char *) p_hd_drive_cmd + 1);
+       printf("ioctl(-1, %s, %p) = %s\n",
+              XLAT_STR(HDIO_DRIVE_CMD), (char *) p_hd_drive_cmd + 1, errstr);
+
+       for (size_t i = 0; i < 2; i++) {
+               p_hd_drive_cmd->sector_count = i;
+
+               rc = do_ioctl_ptr(HDIO_DRIVE_CMD, p_hd_drive_cmd);
+               printf("ioctl(-1, %s, {command=" XLAT_FMT ", sector_number=255"
+                      ", feature=238, sector_count=%zu",
+                      XLAT_STR(HDIO_DRIVE_CMD),
+                      XLAT_SEL(0xca, "ATA_CMD_WRITE"), i);
+               if (rc >= 0) {
+                       printf("} => {/* status */ 0xca, /* error */ 255"
+                              ", /* nsector */ 238");
+                       if (i)
+                               printf(", %p", p_hd_drive_cmd + 1);
+               }
+               printf("}) = %s\n", errstr);
+       }
+
+       rc = do_ioctl_ptr(HDIO_DRIVE_CMD, p_hd_drive_cmd2);
+       printf("ioctl(-1, %s, {command=0x80" NRAW(" /* ATA_CMD_??? */")
+              ", sector_number=129, feature=130, sector_count=131",
+              XLAT_STR(HDIO_DRIVE_CMD));
+       if (rc >= 0) {
+               printf("} => {/* status */ 0x80, /* error */ 129"
+                      ", /* nsector */ 130, %p", p_hd_drive_cmd2 + 1);
+       }
+       printf("}) = %s\n", errstr);
+
+       rc = do_ioctl_ptr(HDIO_DRIVE_CMD, p_hd_drive_cmd3);
+       printf("ioctl(-1, %s, {command=0x80" NRAW(" /* ATA_CMD_??? */")
+              ", sector_number=129, feature=130, sector_count=131",
+              XLAT_STR(HDIO_DRIVE_CMD));
+       if (rc >= 0) {
+               printf("} => {/* status */ 0x80, /* error */ 129"
+                      ", /* nsector */ 130, ");
+               print_quoted_hex(p_hd_drive_cmd3 + 1, DEFAULT_STRLEN);
+               printf("...");
+       }
+       printf("}) = %s\n", errstr);
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
diff --git a/tests-mx32/ioctl_hdio.gen.test b/tests-mx32/ioctl_hdio.gen.test
new file mode 100755 (executable)
index 0000000..478c717
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_hdio +ioctl.test -a27); do not edit.
+set -- -a27
+. "${srcdir=.}/ioctl.test"
index 6be0c0eec8429a1568b3dd99fb749df48041e3ae..6ca006ae8579f5f3443cb8bdfadb557563737873 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of ioctl_inotify strace test.
  *
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -13,7 +13,7 @@
 #include <stdio.h>
 #include <string.h>
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
 #include <linux/ioctl.h>
 
 #ifndef INOTIFY_IOC_SETNEXTWD
index 26e72cec69dea004ec86f6829689c917a4bf07e7..9107c30c0b1b86d4dfd42a8ea2f6a2293b2d3a63 100644 (file)
@@ -4,7 +4,7 @@
  *
  * kvmtest.c author: Josh Triplett <josh@joshtriplett.org>
  * Copyright (c) 2015 Intel Corporation
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2019 The strace developers.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  * of this software and associated documentation files (the "Software"), to
@@ -238,6 +238,10 @@ run_kvm(const int vcpu_fd, struct kvm_run *const run, const size_t mmap_size,
                                           run->mmio.data[4], run->mmio.data[5],
                                           run->mmio.data[6], run->mmio.data[7],
                                           run->mmio.len, run->mmio.is_write);
+               case KVM_EXIT_FAIL_ENTRY:
+                       error_msg_and_fail("Got an unexpected FAIL_ENTRY exit:"
+                                          " hardware_entry_failure_reason %" PRI__x64,
+                                          run->fail_entry.hardware_entry_failure_reason);
 
                default:
                        error_msg_and_fail("exit_reason = %#x",
index 5366560305abd48e595947e29c61a4597c343e98..69c2f191370cf3c6cdc436ad035850e42a8e5b76 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2016 JingPiao Chen <chenjingpiao@gmail.com>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 #include <unistd.h>
 #include <sys/ioctl.h>
 #include <sys/sysmacros.h>
-#include <asm/unistd.h>
+#include "scno.h"
 #include <linux/ioctl.h>
 #include <linux/loop.h>
 #include "print_fields.h"
 
+#ifdef HAVE_STRUCT_LOOP_CONFIG
+typedef struct loop_config struct_loop_config;
+#else
+# include "types/loop.h"
+#endif
+
 #define XLAT_MACROS_ONLY
 #include "xlat/loop_cmds.h"
 #undef XLAT_MACROS_ONLY
@@ -155,6 +161,27 @@ print_loop_info64(struct loop_info64 * const info64, bool print_encrypt,
 #endif /* !ABBREV */
 }
 
+static void
+print_loop_config(struct_loop_config *config, bool print_reserved)
+{
+#if ABBREV
+       printf("%p", config);
+#else
+       printf("{fd=%d, block_size=%u, info=",
+              (int) config->fd, config->block_size);
+       print_loop_info64(&config->info, false, "LO_CRYPT_NONE", NULL,
+                         "LO_FLAGS_READ_ONLY");
+       if (print_reserved) {
+               printf(", __reserved=");
+               for (size_t i = 0; i < ARRAY_SIZE(config->__reserved); ++i)
+                       printf("%s%#llx", (i ? ", " : "["),
+                              (unsigned long long) config->__reserved[i]);
+               printf("]");
+       }
+       printf("}");
+#endif /* !ABBREV */
+}
+
 int
 main(void)
 {
@@ -167,6 +194,7 @@ main(void)
 
        TAIL_ALLOC_OBJECT_CONST_PTR(struct loop_info, info);
        TAIL_ALLOC_OBJECT_CONST_PTR(struct loop_info64, info64);
+       TAIL_ALLOC_OBJECT_CONST_PTR(struct_loop_config, config);
 
        /* Unknown loop commands */
        sys_ioctl(-1, unknown_loop_cmd, magic);
@@ -178,12 +206,12 @@ main(void)
               _IOC_SIZE((unsigned int) unknown_loop_cmd),
               (unsigned long) magic);
 
-       sys_ioctl(-1, LOOP_SET_BLOCK_SIZE + 1, magic);
+       sys_ioctl(-1, LOOP_CONFIGURE + 1, magic);
        printf("ioctl(-1, _IOC(%s, 0x4c, %#x, %#x), %#lx) = "
               "-1 EBADF (%m)\n",
               _IOC_NONE ? "0" : "_IOC_NONE",
-              _IOC_NR(LOOP_SET_BLOCK_SIZE + 1),
-              _IOC_SIZE(LOOP_SET_BLOCK_SIZE + 1),
+              _IOC_NR(LOOP_CONFIGURE + 1),
+              _IOC_SIZE(LOOP_CONFIGURE + 1),
               (unsigned long) magic);
 
        sys_ioctl(-1, LOOP_CTL_GET_FREE + 1, magic);
@@ -281,6 +309,32 @@ main(void)
        ioctl(-1, LOOP_GET_STATUS64, (unsigned long) info64 | kernel_mask);
        printf("ioctl(-1, LOOP_GET_STATUS64, %p) = -1 EBADF (%m)\n", info64);
 
+       /* LOOP_CONFIGURE */
+       ioctl(-1, LOOP_CONFIGURE, NULL);
+       printf("ioctl(-1, LOOP_CONFIGURE, NULL) = -1 EBADF (%m)\n");
+
+       fill_memory(config, sizeof(*config));
+       config->info.lo_flags = LO_FLAGS_READ_ONLY;
+       config->info.lo_encrypt_type = LO_CRYPT_NONE;
+       memset(config->info.lo_file_name, 'C', sizeof(config->info.lo_file_name));
+       memset(config->info.lo_crypt_name, 'D', sizeof(config->info.lo_crypt_name));
+       memset(config->info.lo_encrypt_key, 'E', sizeof(config->info.lo_encrypt_key));
+
+       ioctl(-1, LOOP_CONFIGURE, (void *) config + ALIGNOF(config));
+       printf("ioctl(-1, LOOP_CONFIGURE, %p) = -1 EBADF (%m)\n",
+              (void *) config + ALIGNOF(config));
+
+       printf("ioctl(-1, LOOP_CONFIGURE, ");
+       print_loop_config(config, true);
+       ioctl(-1, LOOP_CONFIGURE, config);
+       printf(") = -1 EBADF (%m)\n");
+
+       memset(config->__reserved, 0, sizeof(config->__reserved));
+       printf("ioctl(-1, LOOP_CONFIGURE, ");
+       print_loop_config(config, false);
+       ioctl(-1, LOOP_CONFIGURE, config);
+       printf(") = -1 EBADF (%m)\n");
+
        /* LOOP_CHANGE_FD */
        sys_ioctl(-1, LOOP_CHANGE_FD, magic);
        printf("ioctl(-1, LOOP_CHANGE_FD, %d) = -1 EBADF (%m)\n",
index 74dbe6e9486903cb8c440da1fc71e6a9d11ba69c..0af05aaf60747129636423c8852e23258cef70de 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of NS_* commands of ioctl syscall.
  *
  * Copyright (c) 2017 Nikolay Marchuk <marchuk.nikolay.a@gmail.com>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -86,22 +86,27 @@ child(void *arg)
 
 #ifdef IA64
 extern int __clone2(int (*)(void *), void *, size_t, int, void *, ...);
-# define clone(fn, child_stack, flags, arg)    \
-               __clone2(fn, child_stack, get_page_size() / 2, flags, arg)
+# define do_clone(fn_, stack_, size_, flags_, arg_, ...)       \
+       __clone2((fn_), (stack_), (size_), (flags_), (arg_), ## __VA_ARGS__)
+#else
+# define do_clone(fn_, stack_, size_, flags_, arg_, ...)       \
+       clone((fn_), (stack_), (flags_), (arg_), ## __VA_ARGS__)
 #endif
 
 static void
 test_user_namespace(void)
 {
-       pid_t pid;
        int pipefd[2];
-       int status;
-
        if (pipe(pipefd))
                perror_msg_and_fail("pipe");
 
-       pid = clone(child, tail_alloc(get_page_size() / 2),
-                   CLONE_NEWUSER | CLONE_UNTRACED | SIGCHLD, pipefd);
+       const unsigned long child_stack_size = get_page_size();
+       void *const child_stack =
+               tail_alloc(child_stack_size * 2) + child_stack_size;
+
+       const pid_t pid = do_clone(child, child_stack, child_stack_size,
+                                  CLONE_NEWUSER | CLONE_UNTRACED | SIGCHLD,
+                                  pipefd);
        if (pid == -1) {
                perror("clone");
                return;
@@ -109,6 +114,8 @@ test_user_namespace(void)
        close(pipefd[0]);
        test_clone(pid);
        close(pipefd[1]);
+
+       int status;
        if (wait(&status) != pid) {
                perror_msg_and_fail("wait");
        } else if (status != 0) {
index eaf572ac4302793e8c7b4c0a85151d7a1538e223..51419b10712cb47c38c13d67a5853326eda7e663 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Check decoding of successful PERF_EVENT_IOC_{ID,QUERY_BPF} ioctls.
  *
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -9,29 +9,31 @@
 
 #include "tests.h"
 
-#ifdef HAVE_LINUX_PERF_EVENT_H
 
-# include <assert.h>
-# include <inttypes.h>
-# include <stdio.h>
-# include <stdlib.h>
-# include <string.h>
-# include <sys/ioctl.h>
+#include <assert.h>
+#include <inttypes.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/ioctl.h>
+
+#ifdef HAVE_LINUX_PERF_EVENT_H
 # include <linux/perf_event.h>
+#endif
 
-# ifndef PERF_EVENT_IOC_ID
-#  define PERF_EVENT_IOC_ID                    _IOR('$', 7, void *)
-# endif
+#ifndef PERF_EVENT_IOC_ID
+# define PERF_EVENT_IOC_ID                     _IOR('$', 7, void *)
+#endif
 
-# ifndef PERF_EVENT_IOC_QUERY_BPF
-#  define PERF_EVENT_IOC_QUERY_BPF             _IOWR('$', 10, void *)
+#ifndef PERF_EVENT_IOC_QUERY_BPF
+# define PERF_EVENT_IOC_QUERY_BPF              _IOWR('$', 10, void *)
 
 struct perf_event_query_bpf {
         uint32_t ids_len;
         uint32_t prog_cnt;
         uint32_t ids[0];
 };
-# endif
+#endif
 
 int
 main(int argc, char **argv)
@@ -137,9 +139,3 @@ main(int argc, char **argv)
        puts("+++ exited with 0 +++");
        return 0;
 }
-
-#else
-
-SKIP_MAIN_UNDEFINED("HAVE_LINUX_PERF_EVENT_H");
-
-#endif
diff --git a/tests-mx32/ioctl_perf-success.gen.test b/tests-mx32/ioctl_perf-success.gen.test
new file mode 100755 (executable)
index 0000000..3ff7205
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_perf-success +ioctl-success.sh -a35); do not edit.
+set -- -a35
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests-mx32/ioctl_perf-success.test b/tests-mx32/ioctl_perf-success.test
deleted file mode 100755 (executable)
index 2edd1d3..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/sh -efu
-#
-# Check decoding of successful PERF_EVENT_IOC_{ID,QUERY_BPF} ioctls.
-#
-# Copyright (c) 2018 The strace developers.
-# All rights reserved.
-#
-# SPDX-License-Identifier: GPL-2.0-or-later
-
-. "${srcdir=.}/scno_tampering.sh"
-
-: ${IOCTL_INJECT_START=256}
-: ${IOCTL_INJECT_RETVAL=42}
-
-run_prog
-run_strace -a35 -e trace=ioctl \
-       -e inject=ioctl:retval="${IOCTL_INJECT_RETVAL}":when="${IOCTL_INJECT_START}+" \
-       ../ioctl_perf-success "${IOCTL_INJECT_START}" "${IOCTL_INJECT_RETVAL}" > "$EXP"
-grep -v '^ioctl([012][,<]' < "$LOG" > "$OUT"
-match_diff "$OUT" "$EXP"
index 30cb35f6cd2689ebfc7f549b037d4a619814e944..af4f443eb4e9d74cbe3ce1184521dc2f9e8bd2f9 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Check decoding of PERF_EVENT_IOC_* commands of ioctl syscall.
  *
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -16,7 +16,7 @@
 # include <string.h>
 # include <unistd.h>
 # include <sys/ioctl.h>
-# include <asm/unistd.h>
+# include "scno.h"
 # include <linux/perf_event.h>
 
 /*
index 52d9698afc3832732ce1f82f9c311d58bfc855dc..ef2bca7736d8a75b6c10e156767c34bef8c32629 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of PTP_* commands of ioctl syscall.
  *
  * Copyright (c) 2018 Harsha Sharma <harshasharmaiitr@gmail.com>
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -12,7 +12,6 @@
 
 #ifdef HAVE_STRUCT_PTP_SYS_OFFSET
 
-# include <errno.h>
 # include <fcntl.h>
 # include <inttypes.h>
 # include <stdio.h>
 # include <sys/ioctl.h>
 # include <linux/ptp_clock.h>
 
+# ifndef PTP_CLOCK_GETCAPS2
+#  define PTP_CLOCK_GETCAPS2 _IOR(PTP_CLK_MAGIC, 10, struct ptp_clock_caps)
+# endif
+# ifndef PTP_EXTTS_REQUEST2
+#  define PTP_EXTTS_REQUEST2 _IOW(PTP_CLK_MAGIC, 11, struct ptp_extts_request)
+# endif
+# ifndef PTP_PEROUT_REQUEST2
+#  define PTP_PEROUT_REQUEST2 _IOW(PTP_CLK_MAGIC, 12, struct ptp_perout_request)
+# endif
+# ifndef PTP_ENABLE_PPS2
+#  define PTP_ENABLE_PPS2 _IOW(PTP_CLK_MAGIC, 13, int)
+# endif
+# ifndef PTP_SYS_OFFSET2
+#  define PTP_SYS_OFFSET2 _IOW(PTP_CLK_MAGIC, 14, struct ptp_sys_offset)
+# endif
+
 # include "xlat.h"
-# include "xlat/ptp_flags_options.h"
+# include "xlat/ptp_extts_flags.h"
+# include "xlat/ptp_perout_flags.h"
 
 static void
 test_no_device(void)
 {
+       const char *errstr;
+
        TAIL_ALLOC_OBJECT_CONST_PTR(struct ptp_clock_caps, caps);
        fill_memory(caps, sizeof(*caps));
 
@@ -39,60 +57,93 @@ test_no_device(void)
        TAIL_ALLOC_OBJECT_CONST_PTR(struct ptp_perout_request, perout);
        fill_memory(perout, sizeof(*perout));
 
-       int saved_errno;
-
        /* PTP_CLOCK_GETCAPS */
-       ioctl(-1, PTP_CLOCK_GETCAPS, NULL);
-       printf("ioctl(-1, PTP_CLOCK_GETCAPS, NULL) = -1 EBADF (%m)\n");
-       ioctl(-1, PTP_CLOCK_GETCAPS, caps);
-       printf("ioctl(-1, PTP_CLOCK_GETCAPS, %p) = -1 EBADF (%m)\n", caps);
+       errstr = sprintrc(ioctl(-1, PTP_CLOCK_GETCAPS, NULL));
+       printf("ioctl(-1, PTP_CLOCK_GETCAPS, NULL) = %s\n", errstr);
+       errstr = sprintrc(ioctl(-1, PTP_CLOCK_GETCAPS, caps));
+       printf("ioctl(-1, PTP_CLOCK_GETCAPS, %p) = %s\n", caps, errstr);
 
        /* PTP_SYS_OFFSET */
-       ioctl(-1, PTP_SYS_OFFSET, NULL);
-       printf("ioctl(-1, PTP_SYS_OFFSET, NULL) = -1 EBADF (%m)\n");
-       ioctl(-1, PTP_SYS_OFFSET, sysoff);
-       printf("ioctl(-1, PTP_SYS_OFFSET, {n_samples=%u}) = -1 EBADF (%m)\n",
-              sysoff->n_samples);
+       errstr = sprintrc(ioctl(-1, PTP_SYS_OFFSET, NULL));
+       printf("ioctl(-1, PTP_SYS_OFFSET, NULL) = %s\n", errstr);
+       errstr = sprintrc(ioctl(-1, PTP_SYS_OFFSET, sysoff));
+       printf("ioctl(-1, PTP_SYS_OFFSET, {n_samples=%u}) = %s\n",
+              sysoff->n_samples, errstr);
 
        /* PTP_ENABLE_PPS */
-       ioctl(-1, PTP_ENABLE_PPS, 0);
-       printf("ioctl(-1, PTP_ENABLE_PPS, 0) = -1 EBADF (%m)\n");
-       ioctl(-1, PTP_ENABLE_PPS, 1);
-       printf("ioctl(-1, PTP_ENABLE_PPS, 1) = -1 EBADF (%m)\n");
+       errstr = sprintrc(ioctl(-1, PTP_ENABLE_PPS, 0));
+       printf("ioctl(-1, PTP_ENABLE_PPS, 0) = %s\n", errstr);
+       errstr = sprintrc(ioctl(-1, PTP_ENABLE_PPS, 1));
+       printf("ioctl(-1, PTP_ENABLE_PPS, 1) = %s\n", errstr);
 
        /* PTP_EXTTS_REQUEST */
-       ioctl(-1, PTP_EXTTS_REQUEST, NULL);
-       printf("ioctl(-1, PTP_EXTTS_REQUEST, NULL) = -1 EBADF (%m)\n");
-       ioctl(-1, PTP_EXTTS_REQUEST, extts);
-       saved_errno = errno;
+       errstr = sprintrc(ioctl(-1, PTP_EXTTS_REQUEST, NULL));
+       printf("ioctl(-1, PTP_EXTTS_REQUEST, NULL) = %s\n", errstr);
+       errstr = sprintrc(ioctl(-1, PTP_EXTTS_REQUEST, extts));
        printf("ioctl(-1, PTP_EXTTS_REQUEST, {index=%d, flags=", extts->index);
-       printflags(ptp_flags_options, extts->flags, "PTP_???");
-       errno = saved_errno;
-       printf("}) = -1 EBADF (%m)\n");
+       printflags(ptp_extts_flags, extts->flags, "PTP_???");
+       printf("}) = %s\n", errstr);
 
        /* PTP_PEROUT_REQUEST */
-       ioctl(-1, PTP_PEROUT_REQUEST, NULL);
-       printf("ioctl(-1, PTP_PEROUT_REQUEST, NULL) = -1 EBADF (%m)\n");
-       ioctl(-1, PTP_PEROUT_REQUEST, perout);
-       saved_errno = errno;
+       errstr = sprintrc(ioctl(-1, PTP_PEROUT_REQUEST, NULL));
+       printf("ioctl(-1, PTP_PEROUT_REQUEST, NULL) = %s\n", errstr);
+       errstr = sprintrc(ioctl(-1, PTP_PEROUT_REQUEST, perout));
        printf("ioctl(-1, PTP_PEROUT_REQUEST, {start={sec=%" PRId64
               ", nsec=%" PRIu32 "}, period={sec=%" PRId64 ", nsec=%" PRIu32 "}"
               ", index=%d, flags=",
               (int64_t) perout->start.sec, perout->start.nsec,
               (int64_t)perout->period.sec, perout->period.nsec, perout->index);
-       printflags(ptp_flags_options, perout->flags, "PTP_???");
-       errno = saved_errno;
-       printf("}) = -1 EBADF (%m)\n");
+       printflags(ptp_perout_flags, perout->flags, "PTP_???");
+       printf("}) = %s\n", errstr);
+
+       /* PTP_CLOCK_GETCAPS2 */
+       errstr = sprintrc(ioctl(-1, PTP_CLOCK_GETCAPS2, NULL));
+       printf("ioctl(-1, PTP_CLOCK_GETCAPS2, NULL) = %s\n", errstr);
+       errstr = sprintrc(ioctl(-1, PTP_CLOCK_GETCAPS2, caps));
+       printf("ioctl(-1, PTP_CLOCK_GETCAPS2, %p) = %s\n", caps, errstr);
+
+       /* PTP_SYS_OFFSET2 */
+       errstr = sprintrc(ioctl(-1, PTP_SYS_OFFSET2, NULL));
+       printf("ioctl(-1, PTP_SYS_OFFSET2, NULL) = %s\n", errstr);
+       errstr = sprintrc(ioctl(-1, PTP_SYS_OFFSET2, sysoff));
+       printf("ioctl(-1, PTP_SYS_OFFSET2, {n_samples=%u}) = %s\n",
+              sysoff->n_samples, errstr);
+
+       /* PTP_ENABLE_PPS2 */
+       errstr = sprintrc(ioctl(-1, PTP_ENABLE_PPS2, 0));
+       printf("ioctl(-1, PTP_ENABLE_PPS2, 0) = %s\n", errstr);
+       errstr = sprintrc(ioctl(-1, PTP_ENABLE_PPS2, 1));
+       printf("ioctl(-1, PTP_ENABLE_PPS2, 1) = %s\n", errstr);
+
+       /* PTP_EXTTS_REQUEST2 */
+       errstr = sprintrc(ioctl(-1, PTP_EXTTS_REQUEST2, NULL));
+       printf("ioctl(-1, PTP_EXTTS_REQUEST2, NULL) = %s\n", errstr);
+       errstr = sprintrc(ioctl(-1, PTP_EXTTS_REQUEST2, extts));
+       printf("ioctl(-1, PTP_EXTTS_REQUEST2, {index=%d, flags=", extts->index);
+       printflags(ptp_extts_flags, extts->flags, "PTP_???");
+       printf("}) = %s\n", errstr);
+
+       /* PTP_PEROUT_REQUEST2 */
+       errstr = sprintrc(ioctl(-1, PTP_PEROUT_REQUEST2, NULL));
+       printf("ioctl(-1, PTP_PEROUT_REQUEST2, NULL) = %s\n", errstr);
+       errstr = sprintrc(ioctl(-1, PTP_PEROUT_REQUEST2, perout));
+       printf("ioctl(-1, PTP_PEROUT_REQUEST2, {start={sec=%" PRId64
+              ", nsec=%" PRIu32 "}, period={sec=%" PRId64 ", nsec=%" PRIu32 "}"
+              ", index=%d, flags=",
+              (int64_t) perout->start.sec, perout->start.nsec,
+              (int64_t)perout->period.sec, perout->period.nsec, perout->index);
+       printflags(ptp_perout_flags, perout->flags, "PTP_???");
+       printf("}) = %s\n", errstr);
 
        /* unrecognized */
        ioctl(-1, _IOC(_IOC_READ, PTP_CLK_MAGIC, 0xff, 0xfe), 0);
-       printf("ioctl(-1, _IOC(_IOC_READ, %#x, 0xff, 0xfe), 0)"
-              " = -1 EBADF (%m)\n", PTP_CLK_MAGIC);
+       printf("ioctl(-1, _IOC(_IOC_READ, %#x, 0xff, 0xfe), 0) = %s\n",
+              PTP_CLK_MAGIC, errstr);
 
        const unsigned long arg = (unsigned long) 0xfacefeeddeadbeefULL;
        ioctl(-1, _IOC(_IOC_WRITE, PTP_CLK_MAGIC, 0xfd, 0xfc), arg);
        printf("ioctl(-1, _IOC(_IOC_WRITE, %#x, 0xfd, 0xfc), %#lx)"
-              " = -1 EBADF (%m)\n", PTP_CLK_MAGIC, arg);
+              " = %s\n", PTP_CLK_MAGIC, arg, errstr);
 }
 
 int
index d192e37827c5f5729599960e54107eddd64de8f2..19d54f6b8155204d063c5d7f30776ea33b00fde2 100644 (file)
@@ -34,7 +34,7 @@ print_rtc_time(const struct rtc_time *rt)
 #endif
 }
 
-static struct xlat rtc_argless[] = {
+static struct xlat_data rtc_argless[] = {
        XLAT(RTC_AIE_OFF),
        XLAT(RTC_PIE_ON),
        XLAT(RTC_PIE_OFF),
index b6347b62806860c77c9b180a555dee63a0ddedca..15eb56a9f29ec67b7bcd9deb89b36afed9c03fb9 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of SCSI ioctl commands.
  *
  * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -15,7 +15,9 @@
 # include <stdio.h>
 # include <sys/ioctl.h>
 # include <scsi/sg.h>
-# include "xlat/scsi_sg_commands.h"
+# define XLAT_MACROS_ONLY
+#  include "xlat/scsi_sg_commands.h"
+# undef XLAT_MACROS_ONLY
 
 # define TEST_NO_ARG(cmd)                                                      \
        do {                                                                    \
index 59438285a2720c6aba0b105fcc9e98cbf2f2e941..087ae7885c5c9953fc5c66dc72d5da39aa338c0c 100644 (file)
@@ -2,6 +2,7 @@
  * Check decoding of ioctl SG_IO v4 commands.
  *
  * Copyright (c) 2017-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -16,8 +17,9 @@
 # include <sys/ioctl.h>
 # include <sys/uio.h>
 # include <linux/bsg.h>
-
-# include "xlat/scsi_sg_commands.h"
+# define XLAT_MACROS_ONLY
+#  include "xlat/scsi_sg_commands.h"
+# undef XLAT_MACROS_ONLY
 
 int
 main(void)
diff --git a/tests-mx32/ioctl_tee.c b/tests-mx32/ioctl_tee.c
new file mode 100644 (file)
index 0000000..f6c2b3a
--- /dev/null
@@ -0,0 +1,437 @@
+/*
+ * Copyright (c) 2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_LINUX_TEE_H
+
+# include <fcntl.h>
+# include <stdio.h>
+# include <string.h>
+
+# include <linux/tee.h>
+
+# include <sys/ioctl.h>
+# include <sys/stat.h>
+# include <sys/types.h>
+
+# include "xlat.h"
+
+# define NUM_PARAMS 8
+# define RVAL_EBADF " = -1 EBADF (%m)\n"
+
+# define UUID_SIZE 16
+
+# ifndef TEE_IOCTL_PARAM_ATTR_META
+#  define TEE_IOCTL_PARAM_ATTR_META 0x100
+# endif
+
+# ifndef HAVE_STRUCT_TEE_IOCTL_SHM_REGISTER_FD_DATA
+struct tee_ioctl_shm_register_fd_data {
+       __s64 fd;
+       __u64 size;
+       __u32 flags;
+       __u8  _pad1[4];
+       __u32 id;
+       __u8  _pad2[4];
+} ATTRIBUTE_ALIGNED(8);
+# endif
+
+# ifndef HAVE_STRUCT_TEE_IOCTL_SHM_REGISTER_DATA
+struct tee_ioctl_shm_register_data {
+       __u64 addr;
+       __u64 length;
+       __u32 flags;
+       __s32 id;
+};
+# endif
+
+# ifndef TEE_IOC_SHM_REGISTER_FD
+#  define TEE_IOC_SHM_REGISTER_FD _IOWR(TEE_IOC_MAGIC, TEE_IOC_BASE + 8, \
+                                       struct tee_ioctl_shm_register_fd_data)
+# endif
+
+# ifndef TEE_IOC_SHM_REGISTER
+#  define TEE_IOC_SHM_REGISTER    _IOWR(TEE_IOC_MAGIC, TEE_IOC_BASE + 9, \
+                                       struct tee_ioctl_shm_register_data)
+# endif
+
+
+typedef struct {
+       uint8_t b[UUID_SIZE];
+} uuid_t;
+
+# define UUID_INIT(a_, b_, c_, d0, d1, d2, d3, d4, d5, d6, d7)         \
+{ .b = {((a_) >> 24) & 0xff, ((a_) >> 16) & 0xff,                      \
+        ((a_) >> 8) & 0xff, (a_) & 0xff,                               \
+        ((b_) >> 8) & 0xff, (b_) & 0xff,                               \
+        ((c_) >> 8) & 0xff, (c_) & 0xff,                               \
+        (d0), (d1), (d2), (d3), (d4), (d5), (d6), (d7)} }
+
+# define CHK_NULL(ioctl_)                                              \
+       do {                                                            \
+               ioctl(-1, ioctl_, NULL);                                \
+               printf("ioctl(-1, " #ioctl_ ", NULL)" RVAL_EBADF);      \
+       } while (0)
+
+# define CHK_BUF(ioctl_)                                               \
+       do {                                                            \
+               ioctl(-1, ioctl_, &buf_data);                           \
+               printf("ioctl(-1, " #ioctl_                             \
+                      ", {buf_len=%llu, buf_ptr=%#llx})" RVAL_EBADF,   \
+                      (unsigned long long) buf_data.buf_len,           \
+                      (unsigned long long) buf_data.buf_ptr);          \
+       } while (0)
+
+# define DEFINE_BUF_W_PARAMS(type_, shorthand_)                                \
+       const size_t shorthand_ ## _size = sizeof(type_) +              \
+               NUM_PARAMS * sizeof(struct tee_ioctl_param);            \
+       union {                                                         \
+               type_ shorthand_;                                       \
+               uint8_t data[shorthand_ ## _size];                      \
+       } shorthand_ ## _buf
+
+static const unsigned long one_beef = (unsigned long) 0xcafef00ddeadbeefULL;
+static const unsigned long two_beef = (unsigned long) 0xbadc0dedbadc0dedULL;
+static const unsigned long red_beef = (unsigned long) 0xdefacedbeef0beefULL;
+static const unsigned long blu_beef = (unsigned long) 0xfacefeedcafef00dULL;
+
+static const uuid_t uuid_beef = UUID_INIT(0xdeadbeef, 0xcafe, 0xc0de,
+                                         0xba, 0xdc, 0x0d, 0xed,
+                                         0xfa, 0xce, 0xfe, 0xed);
+
+static void
+fill_params(struct tee_ioctl_param *params)
+{
+       for (unsigned i = 0; i < NUM_PARAMS; i++) {
+               params[i].a = two_beef;
+               params[i].b = red_beef;
+               params[i].c = blu_beef;
+       }
+       params[0].attr = TEE_IOCTL_PARAM_ATTR_TYPE_NONE;
+       params[1].attr = TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INPUT;
+       params[2].attr = TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_OUTPUT;
+       params[3].attr = TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INOUT;
+       params[4].attr = TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INPUT;
+       params[5].attr = TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_OUTPUT;
+       params[6].attr = TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INOUT;
+       params[7].attr = TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INPUT |
+                        TEE_IOCTL_PARAM_ATTR_META;
+}
+
+static void
+print_params(struct tee_ioctl_param *params)
+{
+       printf("{attr=TEE_IOCTL_PARAM_ATTR_TYPE_NONE}, "
+              "{attr=TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INPUT, a=%#llx, b=%#llx, c=%#llx}, "
+              "{attr=TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_OUTPUT, a=%#llx, b=%#llx, c=%#llx}, "
+              "{attr=TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INOUT, a=%#llx, b=%#llx, c=%#llx}, "
+              "{attr=TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INPUT, shm_offs=%#llx, size=%#llx, shm_id=%llu}, "
+              "{attr=TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_OUTPUT, shm_offs=%#llx, size=%#llx, shm_id=%llu}, "
+              "{attr=TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INOUT, shm_offs=%#llx, size=%#llx, shm_id=%llu}, "
+              "{attr=TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INPUT|TEE_IOCTL_PARAM_ATTR_META, a=%#llx, b=%#llx, c=%#llx}",
+              (unsigned long long) two_beef, (unsigned long long) red_beef,
+              (unsigned long long) blu_beef, (unsigned long long) two_beef,
+              (unsigned long long) red_beef, (unsigned long long) blu_beef,
+              (unsigned long long) two_beef, (unsigned long long) red_beef,
+              (unsigned long long) blu_beef, (unsigned long long) two_beef,
+              (unsigned long long) red_beef, (unsigned long long) blu_beef,
+              (unsigned long long) two_beef, (unsigned long long) red_beef,
+              (unsigned long long) blu_beef, (unsigned long long) two_beef,
+              (unsigned long long) red_beef, (unsigned long long) blu_beef,
+              (unsigned long long) two_beef, (unsigned long long) red_beef,
+              (unsigned long long) blu_beef
+              );
+}
+
+int
+main(void)
+{
+       gid_t gid;
+
+       struct tee_ioctl_cancel_arg cancel;
+       struct tee_ioctl_shm_alloc_data shm_alloc;
+       struct tee_ioctl_shm_register_data shm_register;
+       struct tee_ioctl_close_session_arg close_session;
+       struct tee_ioctl_shm_register_fd_data shm_register_fd;
+
+       struct tee_ioctl_buf_data buf_data;
+       struct tee_ioctl_param *params = NULL;
+
+       DEFINE_BUF_W_PARAMS(struct tee_ioctl_invoke_arg, invoke);
+       DEFINE_BUF_W_PARAMS(struct tee_iocl_supp_recv_arg, supp_recv);
+       DEFINE_BUF_W_PARAMS(struct tee_iocl_supp_send_arg, supp_send);
+       DEFINE_BUF_W_PARAMS(struct tee_ioctl_open_session_arg, open_session);
+
+       static const char null_path[] = "/dev/null";
+       int fd = open(null_path, O_RDONLY);
+
+       /* NULL as arg */
+       CHK_NULL(TEE_IOC_CANCEL);
+       CHK_NULL(TEE_IOC_INVOKE);
+       CHK_NULL(TEE_IOC_VERSION);
+       CHK_NULL(TEE_IOC_SHM_ALLOC);
+       CHK_NULL(TEE_IOC_SUPPL_RECV);
+       CHK_NULL(TEE_IOC_SUPPL_SEND);
+       CHK_NULL(TEE_IOC_OPEN_SESSION);
+       CHK_NULL(TEE_IOC_SHM_REGISTER);
+       CHK_NULL(TEE_IOC_CLOSE_SESSION);
+
+       /* Valid parameterless calls */
+       ioctl(-1, TEE_IOC_SHM_REGISTER_FD, NULL);
+       printf("ioctl(-1, _IOC(_IOC_READ|_IOC_WRITE, 0xa4, 0x8, 0x20), NULL)"
+              RVAL_EBADF);
+       ioctl(-1, _IOC(_IOC_NONE, 0xa4, 0xa, 0), NULL);
+       printf("ioctl(-1, _IOC(_IOC_NONE, 0xa4, 0xa, 0), 0)" RVAL_EBADF);
+
+       cancel.cancel_id = (uint32_t) one_beef;
+       cancel.session = (uint32_t) two_beef;
+       ioctl(-1, TEE_IOC_CANCEL, &cancel);
+       printf("ioctl(-1, TEE_IOC_CANCEL, {cancel_id=%u, session=%#x})" RVAL_EBADF,
+              (uint32_t) one_beef, (uint32_t) two_beef);
+
+       close_session.session = (uint32_t) red_beef;
+       ioctl(-1, TEE_IOC_CLOSE_SESSION, &close_session);
+       printf("ioctl(-1, TEE_IOC_CLOSE_SESSION, {session=%#x})" RVAL_EBADF,
+              (uint32_t) red_beef);
+
+       shm_alloc.size = one_beef;
+       shm_alloc.flags = TEE_IOCTL_SHM_MAPPED | TEE_IOCTL_SHM_DMA_BUF | 0x80;
+       ioctl(-1, TEE_IOC_SHM_ALLOC, &shm_alloc);
+       printf("ioctl(-1, TEE_IOC_SHM_ALLOC, {size=%#llx, "
+              "flags=TEE_IOCTL_SHM_MAPPED|TEE_IOCTL_SHM_DMA_BUF|0x80})" RVAL_EBADF,
+              (unsigned long long) one_beef);
+
+       shm_register.addr = red_beef;
+       shm_register.length = blu_beef;
+       shm_register.flags = TEE_IOCTL_SHM_MAPPED | 0x80;
+       ioctl(-1, TEE_IOC_SHM_REGISTER, &shm_register);
+       printf("ioctl(-1, TEE_IOC_SHM_REGISTER, {addr=%#llx, length=%#llx, "
+              "flags=TEE_IOCTL_SHM_MAPPED|0x80})" RVAL_EBADF,
+              (unsigned long long) red_beef,
+              (unsigned long long) blu_beef);
+
+       if (fd >= 0) {
+               shm_register_fd.fd = fd;
+               shm_register_fd.flags = TEE_IOCTL_SHM_DMA_BUF;
+               ioctl(-1, TEE_IOC_SHM_REGISTER_FD, &shm_register_fd);
+               printf("ioctl(-1, _IOC(_IOC_READ|_IOC_WRITE, 0xa4, 0x8, 0x20), "
+                      "{fd=%d, flags=TEE_IOCTL_SHM_DMA_BUF})" RVAL_EBADF, fd);
+       }
+
+       /* Beef in buf_data */
+       buf_data.buf_ptr = one_beef;
+       buf_data.buf_len = two_beef;
+       CHK_BUF(TEE_IOC_INVOKE);
+       CHK_BUF(TEE_IOC_OPEN_SESSION);
+       CHK_BUF(TEE_IOC_SUPPL_RECV);
+       CHK_BUF(TEE_IOC_SUPPL_SEND);
+
+       /* Valid calls with parameters */
+       invoke_buf.invoke.func = (uint32_t) one_beef;
+       invoke_buf.invoke.session = (uint32_t) two_beef;
+       invoke_buf.invoke.cancel_id = (uint32_t) red_beef;
+       invoke_buf.invoke.num_params = NUM_PARAMS;
+       params = (struct tee_ioctl_param *)(&invoke_buf.invoke + 1);
+       fill_params(params);
+       buf_data.buf_ptr = (uintptr_t) &invoke_buf;
+       buf_data.buf_len = invoke_size;
+       ioctl(-1, TEE_IOC_INVOKE, &buf_data);
+       printf("ioctl(-1, TEE_IOC_INVOKE, {buf_len=%llu, "
+              "buf_ptr={func=%u, session=%#x, cancel_id=%u, "
+              "num_params=%u, params=[",
+              (unsigned long long) buf_data.buf_len,
+              (uint32_t) one_beef, (uint32_t) two_beef,
+              (uint32_t) red_beef, NUM_PARAMS);
+       print_params(params);
+       printf("]}})" RVAL_EBADF);
+
+       open_session_buf.open_session.clnt_login = TEE_IOCTL_LOGIN_PUBLIC;
+       gid = (gid_t) blu_beef;
+       memcpy(&open_session_buf.open_session.clnt_uuid, &gid, sizeof(gid_t));
+       memcpy(&open_session_buf.open_session.uuid, &uuid_beef, UUID_SIZE);
+       open_session_buf.open_session.cancel_id = (uint32_t) red_beef;
+       open_session_buf.open_session.num_params = NUM_PARAMS;
+       params = (struct tee_ioctl_param *)(&open_session_buf.open_session + 1);
+       fill_params(params);
+       buf_data.buf_ptr = (uintptr_t) &open_session_buf;
+       buf_data.buf_len = open_session_size;
+       ioctl(-1, TEE_IOC_OPEN_SESSION, &buf_data);
+       printf("ioctl(-1, TEE_IOC_OPEN_SESSION, {buf_len=%llu, "
+              "buf_ptr={uuid=deadbeef-cafe-c0de-badc-0dedfacefeed, "
+              "clnt_login=TEE_IOCTL_LOGIN_PUBLIC, "
+              "cancel_id=%u, "
+              "num_params=%u, params=[",
+              (unsigned long long) buf_data.buf_len,
+              (uint32_t) red_beef, NUM_PARAMS);
+       print_params(params);
+       printf("]}})" RVAL_EBADF);
+
+       /* All the login types */
+       open_session_buf.open_session.clnt_login = TEE_IOCTL_LOGIN_USER;
+       ioctl(-1, TEE_IOC_OPEN_SESSION, &buf_data);
+       printf("ioctl(-1, TEE_IOC_OPEN_SESSION, {buf_len=%llu, "
+              "buf_ptr={uuid=deadbeef-cafe-c0de-badc-0dedfacefeed, "
+              "clnt_login=TEE_IOCTL_LOGIN_USER, "
+              "cancel_id=%u, "
+              "num_params=%u, params=[",
+              (unsigned long long) buf_data.buf_len,
+              (uint32_t) red_beef, NUM_PARAMS);
+       print_params(params);
+       printf("]}})" RVAL_EBADF);
+
+       open_session_buf.open_session.clnt_login = TEE_IOCTL_LOGIN_GROUP;
+       ioctl(-1, TEE_IOC_OPEN_SESSION, &buf_data);
+       printf("ioctl(-1, TEE_IOC_OPEN_SESSION, {buf_len=%llu, "
+              "buf_ptr={uuid=deadbeef-cafe-c0de-badc-0dedfacefeed, "
+              "clnt_login=TEE_IOCTL_LOGIN_GROUP, "
+              "clnt_uuid=%u, cancel_id=%u, "
+              "num_params=%u, params=[",
+              (unsigned long long) buf_data.buf_len,
+              gid, (uint32_t) red_beef, NUM_PARAMS);
+       print_params(params);
+       printf("]}})" RVAL_EBADF);
+
+       open_session_buf.open_session.clnt_login = TEE_IOCTL_LOGIN_APPLICATION;
+       ioctl(-1, TEE_IOC_OPEN_SESSION, &buf_data);
+       printf("ioctl(-1, TEE_IOC_OPEN_SESSION, {buf_len=%llu, "
+              "buf_ptr={uuid=deadbeef-cafe-c0de-badc-0dedfacefeed, "
+              "clnt_login=TEE_IOCTL_LOGIN_APPLICATION, "
+              "cancel_id=%u, "
+              "num_params=%u, params=[",
+              (unsigned long long) buf_data.buf_len,
+              (uint32_t) red_beef, NUM_PARAMS);
+       print_params(params);
+       printf("]}})" RVAL_EBADF);
+
+       open_session_buf.open_session.clnt_login = TEE_IOCTL_LOGIN_USER_APPLICATION;
+       ioctl(-1, TEE_IOC_OPEN_SESSION, &buf_data);
+       printf("ioctl(-1, TEE_IOC_OPEN_SESSION, {buf_len=%llu, "
+              "buf_ptr={uuid=deadbeef-cafe-c0de-badc-0dedfacefeed, "
+              "clnt_login=TEE_IOCTL_LOGIN_USER_APPLICATION, "
+              "cancel_id=%u, "
+              "num_params=%u, params=[",
+              (unsigned long long) buf_data.buf_len,
+              (uint32_t) red_beef, NUM_PARAMS);
+       print_params(params);
+       printf("]}})" RVAL_EBADF);
+
+       open_session_buf.open_session.clnt_login = TEE_IOCTL_LOGIN_GROUP_APPLICATION;
+       ioctl(-1, TEE_IOC_OPEN_SESSION, &buf_data);
+       printf("ioctl(-1, TEE_IOC_OPEN_SESSION, {buf_len=%llu, "
+              "buf_ptr={uuid=deadbeef-cafe-c0de-badc-0dedfacefeed, "
+              "clnt_login=TEE_IOCTL_LOGIN_GROUP_APPLICATION, "
+              "clnt_uuid=%u, cancel_id=%u, "
+              "num_params=%u, params=[",
+              (unsigned long long) buf_data.buf_len,
+              gid, (uint32_t) red_beef, NUM_PARAMS);
+       print_params(params);
+       printf("]}})" RVAL_EBADF);
+
+       open_session_buf.open_session.clnt_login = 0xff;
+       ioctl(-1, TEE_IOC_OPEN_SESSION, &buf_data);
+       printf("ioctl(-1, TEE_IOC_OPEN_SESSION, {buf_len=%llu, "
+              "buf_ptr={uuid=deadbeef-cafe-c0de-badc-0dedfacefeed, "
+              "clnt_login=%#x /* TEE_IOCTL_LOGIN_??? */, "
+              "clnt_uuid=[", (unsigned long long) buf_data.buf_len,
+              open_session_buf.open_session.clnt_login);
+       for (unsigned i = 0; i < UUID_SIZE; i++) {
+               if (i > 0)
+                       printf(", ");
+               printf("%#x", open_session_buf.open_session.clnt_uuid[i]);
+       }
+       printf("], cancel_id=%u, "
+              "num_params=%u, params=[",
+              (uint32_t) red_beef, NUM_PARAMS);
+       print_params(params);
+       printf("]}})" RVAL_EBADF);
+
+       supp_recv_buf.supp_recv.func = (uint32_t) blu_beef;
+       supp_recv_buf.supp_recv.num_params = NUM_PARAMS;
+       params = (struct tee_ioctl_param *)(&supp_recv_buf.supp_recv + 1);
+       fill_params(params);
+       buf_data.buf_ptr = (uintptr_t) &supp_recv_buf;
+       buf_data.buf_len = supp_recv_size;
+       ioctl(-1, TEE_IOC_SUPPL_RECV, &buf_data);
+       printf("ioctl(-1, TEE_IOC_SUPPL_RECV, {buf_len=%llu, "
+              "buf_ptr={func=%u, "
+              "num_params=%u, params=[",
+              (unsigned long long) buf_data.buf_len,
+              (uint32_t) blu_beef, NUM_PARAMS);
+       print_params(params);
+       printf("]}})" RVAL_EBADF);
+
+       supp_send_buf.supp_send.num_params = NUM_PARAMS;
+       params = (struct tee_ioctl_param *)(&supp_send_buf.supp_send + 1);
+       fill_params(params);
+       buf_data.buf_ptr = (uintptr_t) &supp_send_buf;
+       buf_data.buf_len = supp_send_size;
+       ioctl(-1, TEE_IOC_SUPPL_SEND, &buf_data);
+       printf("ioctl(-1, TEE_IOC_SUPPL_SEND, {buf_len=%llu, "
+              "buf_ptr={num_params=%u, params=[",
+              (unsigned long long) buf_data.buf_len,
+              NUM_PARAMS);
+       print_params(params);
+       printf("]}})" RVAL_EBADF);
+
+       /* Valid buf, but unmatching num_params */
+       invoke_buf.invoke.num_params = 0;
+       supp_recv_buf.supp_recv.num_params = 0;
+       supp_send_buf.supp_send.num_params = 0;
+       open_session_buf.open_session.num_params = 0;
+
+       buf_data.buf_ptr = (uintptr_t) &invoke_buf;
+       buf_data.buf_len = invoke_size;
+       CHK_BUF(TEE_IOC_INVOKE);
+       buf_data.buf_ptr = (uintptr_t) &open_session_buf;
+       buf_data.buf_len = open_session_size;
+       CHK_BUF(TEE_IOC_OPEN_SESSION);
+       buf_data.buf_ptr = (uintptr_t) &supp_recv_buf;
+       buf_data.buf_len = supp_recv_size;
+       CHK_BUF(TEE_IOC_SUPPL_RECV);
+       buf_data.buf_ptr = (uintptr_t) &supp_send_buf;
+       buf_data.buf_len = supp_send_size;
+       CHK_BUF(TEE_IOC_SUPPL_SEND);
+
+       invoke_buf.invoke.num_params = NUM_PARAMS;
+       supp_recv_buf.supp_recv.num_params = NUM_PARAMS;
+       supp_send_buf.supp_send.num_params = NUM_PARAMS;
+       open_session_buf.open_session.num_params = NUM_PARAMS;
+
+       /* Invalid buf_len */
+       buf_data.buf_len = 0;
+       CHK_BUF(TEE_IOC_INVOKE);
+       CHK_BUF(TEE_IOC_OPEN_SESSION);
+       CHK_BUF(TEE_IOC_SUPPL_RECV);
+       CHK_BUF(TEE_IOC_SUPPL_SEND);
+
+       buf_data.buf_len = (unsigned long long) -1;
+       CHK_BUF(TEE_IOC_INVOKE);
+       CHK_BUF(TEE_IOC_OPEN_SESSION);
+       CHK_BUF(TEE_IOC_SUPPL_RECV);
+       CHK_BUF(TEE_IOC_SUPPL_SEND);
+
+       /* Valid buf_len, invalid buf_ptr */
+       buf_data.buf_ptr = one_beef;
+       buf_data.buf_len = invoke_size;
+       CHK_BUF(TEE_IOC_INVOKE);
+       buf_data.buf_len = open_session_size;
+       CHK_BUF(TEE_IOC_OPEN_SESSION);
+       buf_data.buf_len = supp_recv_size;
+       CHK_BUF(TEE_IOC_SUPPL_RECV);
+       buf_data.buf_len = supp_send_size;
+       CHK_BUF(TEE_IOC_SUPPL_SEND);
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else /* !HAVE_LINUX_TEE_H */
+
+SKIP_MAIN_UNDEFINED("HAVE_LINUX_TEE_H")
+
+#endif /* HAVE_LINUX_TEE_H */
diff --git a/tests-mx32/ioctl_tee.gen.test b/tests-mx32/ioctl_tee.gen.test
new file mode 100755 (executable)
index 0000000..f220bca
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_tee +ioctl.test ); do not edit.
+set -- 
+. "${srcdir=.}/ioctl.test"
index 19104442f675dbeb682c7f92bdb01d2b44dc7b57..971440d0395b85417478eb2f7af29cff521ee5bf 100644 (file)
@@ -1,14 +1,14 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c)      2016 Red Hat, Inc.
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_userfaultfd && defined HAVE_LINUX_USERFAULTFD_H
 
@@ -135,6 +135,13 @@ main(void)
               " mode=UFFDIO_COPY_MODE_DONTWAKE, copy=%#zx}) = %d\n",
               fd, area2, area1, pagesize, pagesize, rc);
 
+       copy_struct->mode = 0xdeadbeef;;
+       rc = ioctl(fd, UFFDIO_COPY, copy_struct);
+       printf("ioctl(%d, UFFDIO_COPY, {dst=%p, src=%p, len=%#zx,"
+              " mode=UFFDIO_COPY_MODE_DONTWAKE|UFFDIO_COPY_MODE_WP|0xdeadbeec"
+              "}) = %s\n",
+              fd, area2, area1, pagesize, sprintrc(rc));
+
        /* ---- ZEROPAGE ---- */
        TAIL_ALLOC_OBJECT_CONST_PTR(struct uffdio_zeropage, zero_struct);
        madvise(area2, pagesize, MADV_DONTNEED);
diff --git a/tests-mx32/ioctl_v4l2-Xabbrev.c b/tests-mx32/ioctl_v4l2-Xabbrev.c
new file mode 100644 (file)
index 0000000..54046bf
--- /dev/null
@@ -0,0 +1 @@
+#include "ioctl_v4l2.c"
diff --git a/tests-mx32/ioctl_v4l2-Xabbrev.gen.test b/tests-mx32/ioctl_v4l2-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..f90c41d
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2-Xabbrev +ioctl.test -Xabbrev); do not edit.
+set -- -Xabbrev
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_v4l2-Xraw.c b/tests-mx32/ioctl_v4l2-Xraw.c
new file mode 100644 (file)
index 0000000..da45f6d
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "ioctl_v4l2.c"
diff --git a/tests-mx32/ioctl_v4l2-Xraw.gen.test b/tests-mx32/ioctl_v4l2-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..9ebd283
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2-Xraw +ioctl.test -Xraw); do not edit.
+set -- -Xraw
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_v4l2-Xverbose.c b/tests-mx32/ioctl_v4l2-Xverbose.c
new file mode 100644 (file)
index 0000000..52173f7
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "ioctl_v4l2.c"
diff --git a/tests-mx32/ioctl_v4l2-Xverbose.gen.test b/tests-mx32/ioctl_v4l2-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..0d0ccd0
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2-Xverbose +ioctl.test -Xverbose); do not edit.
+set -- -Xverbose
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_v4l2-success-Xabbrev.c b/tests-mx32/ioctl_v4l2-success-Xabbrev.c
new file mode 100644 (file)
index 0000000..c328ee1
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_ABBREV 1
+#include "ioctl_v4l2-success.c"
diff --git a/tests-mx32/ioctl_v4l2-success-Xabbrev.gen.test b/tests-mx32/ioctl_v4l2-success-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..60e33ad
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2-success-Xabbrev +ioctl-success.sh -a29 -Xabbrev); do not edit.
+set -- -a29 -Xabbrev
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests-mx32/ioctl_v4l2-success-Xraw.c b/tests-mx32/ioctl_v4l2-success-Xraw.c
new file mode 100644 (file)
index 0000000..2ceb2d3
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "ioctl_v4l2-success.c"
diff --git a/tests-mx32/ioctl_v4l2-success-Xraw.gen.test b/tests-mx32/ioctl_v4l2-success-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..f1ee3f2
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2-success-Xraw +ioctl-success.sh -a27 -Xraw); do not edit.
+set -- -a27 -Xraw
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests-mx32/ioctl_v4l2-success-Xverbose.c b/tests-mx32/ioctl_v4l2-success-Xverbose.c
new file mode 100644 (file)
index 0000000..c09ee34
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "ioctl_v4l2-success.c"
diff --git a/tests-mx32/ioctl_v4l2-success-Xverbose.gen.test b/tests-mx32/ioctl_v4l2-success-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..a1b69a4
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2-success-Xverbose +ioctl-success.sh -a30 -Xverbose); do not edit.
+set -- -a30 -Xverbose
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests-mx32/ioctl_v4l2-success-v-Xabbrev.c b/tests-mx32/ioctl_v4l2-success-v-Xabbrev.c
new file mode 100644 (file)
index 0000000..f06ca45
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_ABBREV 1
+#include "ioctl_v4l2-success-v.c"
diff --git a/tests-mx32/ioctl_v4l2-success-v-Xabbrev.gen.test b/tests-mx32/ioctl_v4l2-success-v-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..49dfc26
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2-success-v-Xabbrev +ioctl-success.sh -a29 -v -Xabbrev); do not edit.
+set -- -a29 -v -Xabbrev
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests-mx32/ioctl_v4l2-success-v-Xraw.c b/tests-mx32/ioctl_v4l2-success-v-Xraw.c
new file mode 100644 (file)
index 0000000..a95c12f
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "ioctl_v4l2-success-v.c"
diff --git a/tests-mx32/ioctl_v4l2-success-v-Xraw.gen.test b/tests-mx32/ioctl_v4l2-success-v-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..55e9799
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2-success-v-Xraw +ioctl-success.sh -a27 -v -Xraw); do not edit.
+set -- -a27 -v -Xraw
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests-mx32/ioctl_v4l2-success-v-Xverbose.c b/tests-mx32/ioctl_v4l2-success-v-Xverbose.c
new file mode 100644 (file)
index 0000000..ac659b3
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "ioctl_v4l2-success-v.c"
diff --git a/tests-mx32/ioctl_v4l2-success-v-Xverbose.gen.test b/tests-mx32/ioctl_v4l2-success-v-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..ed9278f
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2-success-v-Xverbose +ioctl-success.sh -a29 -v -Xverbose); do not edit.
+set -- -a29 -v -Xverbose
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests-mx32/ioctl_v4l2-success-v.c b/tests-mx32/ioctl_v4l2-success-v.c
new file mode 100644 (file)
index 0000000..fadad4e
--- /dev/null
@@ -0,0 +1,2 @@
+#define VERBOSE 1
+#include "ioctl_v4l2-success.c"
diff --git a/tests-mx32/ioctl_v4l2-success-v.gen.test b/tests-mx32/ioctl_v4l2-success-v.gen.test
new file mode 100755 (executable)
index 0000000..6eca4cd
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2-success-v +ioctl-success.sh -a29 -v); do not edit.
+set -- -a29 -v
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests-mx32/ioctl_v4l2-success.c b/tests-mx32/ioctl_v4l2-success.c
new file mode 100644 (file)
index 0000000..f1b834e
--- /dev/null
@@ -0,0 +1,1473 @@
+/*
+ * Copyright (c) 2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/ioctl.h>
+#include "kernel_v4l2_types.h"
+
+#define XLAT_MACROS_ONLY
+# include "xlat/v4l2_ioctl_cmds.h"
+#undef XLAT_MACROS_ONLY
+
+static bool
+fill_fmt(struct v4l2_format *f)
+{
+       static struct v4l2_clip *clips;
+
+       switch (f->type) {
+       case V4L2_BUF_TYPE_VIDEO_CAPTURE:
+       case V4L2_BUF_TYPE_VIDEO_OUTPUT:
+               f->fmt.pix.width        = 0xdeadc0de;
+               f->fmt.pix.height       = 0xfeedbeef;
+               f->fmt.pix.pixelformat  = 0xb5315258; /* forurcc_be("XR15") */
+               f->fmt.pix.field = f->type == V4L2_BUF_TYPE_VIDEO_CAPTURE
+                       ? V4L2_FIELD_ALTERNATE : 0xdec0ded1;
+               f->fmt.pix.bytesperline = 0xbadc0ded;
+               f->fmt.pix.sizeimage    = 0xface1e55;
+               f->fmt.pix.colorspace   = V4L2_COLORSPACE_REC709;
+               break;
+
+       case V4L2_BUF_TYPE_VIDEO_OVERLAY:
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY
+       case V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY:
+#endif
+               f->fmt.win.w.left    = 0xa0a1a2a3;
+               f->fmt.win.w.top     = 0xb0b1b2b3;
+               f->fmt.win.w.width   = 0xc0c1c2c3;
+               f->fmt.win.w.height  = 0xd0d1d2d3;
+               f->fmt.win.field     = f->type == V4L2_BUF_TYPE_VIDEO_OVERLAY
+                       ? V4L2_FIELD_ANY : 10;
+               f->fmt.win.chromakey = 0xbeefface;
+
+               if (!clips)
+                       clips = tail_alloc(sizeof(*clips) * 3);
+               f->fmt.win.clips = clips;
+
+               f->fmt.win.clips[0].c.left   = 0xa4a5a6a7;
+               f->fmt.win.clips[0].c.top    = 0xb4b5b6b7;
+               f->fmt.win.clips[0].c.width  = 0xc4c5c6c7;
+               f->fmt.win.clips[0].c.height = 0xd4d5d6d7;
+               f->fmt.win.clips[0].next     = clips;
+
+               f->fmt.win.clips[1].c.left   = 0xa8a9aaab;
+               f->fmt.win.clips[1].c.top    = 0xb8b9babb;
+               f->fmt.win.clips[1].c.width  = 0xc8c9cacb;
+               f->fmt.win.clips[1].c.height = 0xd8d9dadb;
+
+               f->fmt.win.clips[2].c.left   = 0xacadaeaf;
+               f->fmt.win.clips[2].c.top    = 0xbcbdbebf;
+               f->fmt.win.clips[2].c.width  = 0xcccdcecf;
+               f->fmt.win.clips[2].c.height = 0xdcdddedf;
+               f->fmt.win.clips[2].next     = clips + 1;
+
+               f->fmt.win.clipcount = f->type == V4L2_BUF_TYPE_VIDEO_OVERLAY
+                       ? 4 : 0;
+               f->fmt.win.bitmap    = f->type == V4L2_BUF_TYPE_VIDEO_OVERLAY
+                       ? NULL : clips;
+               break;
+
+       case V4L2_BUF_TYPE_VBI_CAPTURE:
+       case V4L2_BUF_TYPE_VBI_OUTPUT:
+               f->fmt.vbi.sampling_rate    = 0xdecaffed;
+               f->fmt.vbi.offset           = 0xcafefeed;
+               f->fmt.vbi.samples_per_line = 0xbeefaced;
+               f->fmt.vbi.sample_format    = V4L2_PIX_FMT_RGB555X;
+
+               f->fmt.vbi.start[0] = 0xdec0ded0;
+               f->fmt.vbi.start[1] = 0xdec0ded1;
+               f->fmt.vbi.count[0] = 0xacceded2;
+               f->fmt.vbi.count[1] = 0xacceded3;
+
+               f->fmt.vbi.flags = f->type == V4L2_BUF_TYPE_VBI_CAPTURE
+                       ? 0x3 : 0x1ce50d1c;
+               break;
+
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
+       case V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE:
+       case V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE:
+               f->fmt.pix_mp.width        = 0xdeaffade;
+               f->fmt.pix_mp.height       = 0xfadeb1a5;
+               f->fmt.pix_mp.pixelformat  = 0x36314454;
+               f->fmt.pix_mp.field        = V4L2_FIELD_NONE;
+               f->fmt.pix_mp.colorspace   = 13;
+
+               for (size_t i = 0; i < VIDEO_MAX_PLANES; i++) {
+                       f->fmt.pix_mp.plane_fmt[i].sizeimage = 0xd0decad0 ^ i;
+                       if (sizeof(f->fmt.pix_mp.plane_fmt[i].bytesperline) ==
+                           sizeof(uint32_t)) {
+                               f->fmt.pix_mp.plane_fmt[i].bytesperline
+                                       = 0xd0decad1 ^ i;
+                       } else {
+# if WORDS_BIGENDIAN
+                               f->fmt.pix_mp.plane_fmt[i].bytesperline
+                                       = 0xd0de;
+                               f->fmt.pix_mp.plane_fmt[i].reserved[0]
+                                       = 0xcad1 ^ i;
+# else
+                               f->fmt.pix_mp.plane_fmt[i].bytesperline
+                                       = 0xcad1 ^ i;
+                               f->fmt.pix_mp.plane_fmt[i].reserved[0]
+                                       = 0xd0de;
+# endif
+                       }
+               }
+
+               f->fmt.pix_mp.num_planes   = f->type ==
+                       V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE ? 0xd5 : 0;
+               break;
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE
+       case V4L2_BUF_TYPE_SLICED_VBI_CAPTURE:
+       case V4L2_BUF_TYPE_SLICED_VBI_OUTPUT:
+               f->fmt.sliced.service_set = 0xfeed;
+               for (size_t i = 0; i < 2; i++) {
+                       for (size_t j = 0; j < 24; j++) {
+                               f->fmt.sliced.service_lines[i][j] =
+                                       0xdead ^ (i << 8) ^ j;
+                       }
+               }
+               f->fmt.sliced.io_size = 0xdefaceed;
+               break;
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE
+       case V4L2_BUF_TYPE_SDR_CAPTURE:
+# if HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT
+       case V4L2_BUF_TYPE_SDR_OUTPUT:
+# endif
+               f->fmt.sdr.pixelformat = V4L2_SDR_FMT_CU8;
+# ifdef HAVE_STRUCT_V4L2_SDR_FORMAT_BUFFERSIZE
+               if (sizeof(f->fmt.sdr.buffersize == sizeof(uint32_t)))
+                       f->fmt.sdr.buffersize = 0xbadc0ded;
+               else
+                       ((uint32_t *) &f->fmt.sdr)[1] = 0xbadc0ded;
+# else
+               ((uint32_t *) &f->fmt.sdr)[1] = 0xbadc0ded;
+# endif
+               break;
+#endif
+       default:
+               return false;
+       }
+
+       return true;
+}
+
+static void
+print_fmt(const char *pfx, struct v4l2_format *f)
+{
+       switch (f->type) {
+       case V4L2_BUF_TYPE_VIDEO_CAPTURE:
+       case V4L2_BUF_TYPE_VIDEO_OUTPUT:
+               printf("%sfmt.pix={width=3735929054, height=4276993775"
+                      ", pixelformat=" RAW("0xb5315258")
+                      NRAW("v4l2_fourcc('X', 'R', '1', '\\xb5')"
+                           " /* V4L2_PIX_FMT_XRGB555X */")
+                      ", field=%s, bytesperline=3134983661"
+                      ", sizeimage=4207812181, colorspace="
+                      XLAT_KNOWN(0x3, "V4L2_COLORSPACE_REC709") "}",
+                      pfx, f->type == V4L2_BUF_TYPE_VIDEO_CAPTURE
+                       ? XLAT_STR(V4L2_FIELD_ALTERNATE)
+                       : XLAT_UNKNOWN(0xdec0ded1, "V4L2_FIELD_???"));
+               break;
+
+       case V4L2_BUF_TYPE_VIDEO_OVERLAY:
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY
+       case V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY:
+#endif
+               printf("%sfmt.win={left=-1600019805, top=-1330531661"
+                      ", width=3233923779, height=3503411923, field=%s"
+                      ", chromakey=0xbeefface, clips=[",
+                      pfx, f->type == V4L2_BUF_TYPE_VIDEO_OVERLAY
+                       ? XLAT_STR(V4L2_FIELD_ANY)
+                       : XLAT_UNKNOWN(0xa, "V4L2_FIELD_???"));
+               if (f->type == V4L2_BUF_TYPE_VIDEO_OVERLAY) {
+                       printf("{left=-1532647769, top=-1263159625"
+                              ", width=3301295815, height=3570783959}, "
+                              "{left=-1465275733, top=-1195787589"
+                              ", width=3368667851, height=3638155995}, "
+                              "{left=-1397903697, top=-1128415553"
+                              ", width=3436039887, height=3705528031}, "
+                              "... /* %p */", f->fmt.win.clips + 3);
+               }
+               printf("], clipcount=%d, bitmap=",
+                      f->type == V4L2_BUF_TYPE_VIDEO_OVERLAY ? 4 : 0);
+
+               if (f->type == V4L2_BUF_TYPE_VIDEO_OVERLAY)
+                       printf("NULL");
+               else
+                       printf("%p", f->fmt.win.bitmap);
+
+#ifdef HAVE_STRUCT_V4L2_WINDOW_GLOBAL_ALPHA
+               printf(", global_alpha=%#hhx}", f->fmt.win.global_alpha);
+#else
+               struct win_ga {
+                       struct v4l2_rect w;
+                       uint32_t field;
+                       uint32_t chromakey;
+                       struct v4l2_clip *clips;
+                       uint32_t clipcount;
+                       void *bitmap;
+                       uint8_t global_alpha;
+               };
+               printf(", global_alpha=%#hhx}",
+                      ((struct win_ga *) &f->fmt.win)->global_alpha);
+#endif
+               break;
+
+       case V4L2_BUF_TYPE_VBI_CAPTURE:
+       case V4L2_BUF_TYPE_VBI_OUTPUT:
+               printf("%sfmt.vbi={sampling_rate=3737845741, offset=3405709037"
+                      ", samples_per_line=3203378413, sample_format="
+                      RAW("0x51424752") NRAW("v4l2_fourcc('R', 'G', 'B', 'Q')"
+                      " /* V4L2_PIX_FMT_RGB555X */")
+                      ", start=[-557785392, -557785391]"
+                      ", count=[2899238610, 2899238611], flags=%s}",
+                      pfx, f->type == V4L2_BUF_TYPE_VBI_CAPTURE
+                       ? XLAT_KNOWN(0x3, "V4L2_VBI_UNSYNC|V4L2_VBI_INTERLACED")
+                       : XLAT_UNKNOWN(0x1ce50d1c, "V4L2_VBI_???"));
+               break;
+
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
+       case V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE:
+       case V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE:
+               printf("%sfmt.pix_mp={width=3736074974, height=4208898469"
+                      ", pixelformat=" RAW("0x36314454")
+                      NRAW("v4l2_fourcc('T', 'D', '1', '6')")
+                      ", field=%s, colorspace=0xd"
+                      NRAW(" /* V4L2_COLORSPACE_??? */") ", plane_fmt=[",
+                      pfx, XLAT_STR(V4L2_FIELD_NONE));
+               if (f->type == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE) {
+                       printf("{sizeimage=3504261840, bytesperline=3504261841}"
+                       ", "
+                              "{sizeimage=3504261841, bytesperline=3504261840}"
+                              ", "
+                              "{sizeimage=3504261842, bytesperline=3504261843}"
+                              ", "
+                              "{sizeimage=3504261843, bytesperline=3504261842}"
+                              ", "
+                              "{sizeimage=3504261844, bytesperline=3504261845}"
+                              ", "
+                              "{sizeimage=3504261845, bytesperline=3504261844}"
+                              ", "
+                              "{sizeimage=3504261846, bytesperline=3504261847}"
+                              ", "
+                              "{sizeimage=3504261847, bytesperline=3504261846}"
+                              "], num_planes=213}");
+               } else {
+                       printf("], num_planes=0}");
+               }
+               break;
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE
+       case V4L2_BUF_TYPE_SLICED_VBI_CAPTURE:
+       case V4L2_BUF_TYPE_SLICED_VBI_OUTPUT:
+               printf("%sfmt.sliced={service_set="
+                      XLAT_UNKNOWN(0xfeed, "V4L2_SLICED_???")
+                      ", io_size=3740978925, service_lines=[[0xdead, 0xdeac"
+                      ", 0xdeaf, 0xdeae, 0xdea9, 0xdea8, 0xdeab, 0xdeaa"
+                      ", 0xdea5, 0xdea4, 0xdea7, 0xdea6, 0xdea1, 0xdea0"
+                      ", 0xdea3, 0xdea2, 0xdebd, 0xdebc, 0xdebf, 0xdebe"
+                      ", 0xdeb9, 0xdeb8, 0xdebb, 0xdeba], [0xdfad, 0xdfac"
+                      ", 0xdfaf, 0xdfae, 0xdfa9, 0xdfa8, 0xdfab, 0xdfaa"
+                      ", 0xdfa5, 0xdfa4, 0xdfa7, 0xdfa6, 0xdfa1, 0xdfa0"
+                      ", 0xdfa3, 0xdfa2, 0xdfbd, 0xdfbc, 0xdfbf, 0xdfbe"
+                      ", 0xdfb9, 0xdfb8, 0xdfbb, 0xdfba]]}",
+                      pfx);
+               break;
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE
+       case V4L2_BUF_TYPE_SDR_CAPTURE:
+# if HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT
+       case V4L2_BUF_TYPE_SDR_OUTPUT:
+# endif
+               printf("%sfmt.sdr={pixelformat=" RAW("0x38305543")
+                      NRAW("v4l2_fourcc('C', 'U', '0', '8')"
+                           " /* V4L2_SDR_FMT_CU8 */")
+                      ", buffersize=3134983661}",
+                      pfx);
+               break;
+#endif
+       }
+}
+
+int
+main(int argc, char **argv)
+{
+       unsigned long num_skip;
+       long inject_retval;
+       bool locked = false;
+
+       if (argc == 1)
+               return 0;
+
+       if (argc < 3)
+               error_msg_and_fail("Usage: %s NUM_SKIP INJECT_RETVAL", argv[0]);
+
+       num_skip = strtoul(argv[1], NULL, 0);
+       inject_retval = strtol(argv[2], NULL, 0);
+
+       if (inject_retval < 0)
+               error_msg_and_fail("Expected non-negative INJECT_RETVAL, "
+                                  "but got %ld", inject_retval);
+
+       for (unsigned int i = 0; i < num_skip; i++) {
+               long rc = ioctl(-1, VIDIOC_QUERYCAP, NULL);
+               printf("ioctl(-1, %s, NULL) = %s%s\n",
+                      XLAT_STR(VIDIOC_QUERYCAP), sprintrc(rc),
+                      rc == inject_retval ? " (INJECTED)" : "");
+
+               if (rc != inject_retval)
+                       continue;
+
+               locked = true;
+               break;
+       }
+
+       if (!locked)
+               error_msg_and_fail("Hasn't locked on ioctl(-1"
+                                  ", VIDIOC_QUERYCAP, NULL) returning %lu",
+                                  inject_retval);
+
+
+       /* VIDIOC_QUERYCAP */
+       struct v4l2_capability *caps = tail_alloc(sizeof(*caps));
+
+       fill_memory(caps, sizeof(*caps));
+       caps->capabilities = 0xdeadbeef;
+#ifdef HAVE_STRUCT_V4L2_CAPABILITY_DEVICE_CAPS
+       caps->device_caps = 0xfacefeed;
+#else
+       caps->reserved[0] = 0xfacefeed;
+#endif
+
+       ioctl(-1, VIDIOC_QUERYCAP, 0);
+       printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_QUERYCAP), inject_retval);
+
+       ioctl(-1, VIDIOC_QUERYCAP, (char *) caps + 1);
+       printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_QUERYCAP), (char *) caps + 1, inject_retval);
+
+       ioctl(-1, VIDIOC_QUERYCAP, caps);
+       printf("ioctl(-1, %s, {driver=", XLAT_STR(VIDIOC_QUERYCAP));
+       print_quoted_cstring((char *) caps->driver, sizeof(caps->driver));
+       printf(", card=");
+       print_quoted_cstring((char *) caps->card, sizeof(caps->card));
+       printf(", bus_info=");
+       print_quoted_cstring((char *) caps->bus_info, sizeof(caps->bus_info));
+       printf(", version="
+#ifdef WORDS_BIGENDIAN
+              XLAT_KNOWN(0xd0d1d2d3, "KERNEL_VERSION(53457, 210, 211)")
+#else
+              XLAT_KNOWN(0xd3d2d1d0, "KERNEL_VERSION(54226, 209, 208)")
+#endif
+              ", capabilities=" XLAT_KNOWN(0xdeadbeef,
+              "V4L2_CAP_VIDEO_CAPTURE|V4L2_CAP_VIDEO_OUTPUT"
+              "|V4L2_CAP_VIDEO_OVERLAY|V4L2_CAP_VBI_OUTPUT"
+              "|V4L2_CAP_SLICED_VBI_CAPTURE|V4L2_CAP_SLICED_VBI_OUTPUT"
+              "|V4L2_CAP_VIDEO_OUTPUT_OVERLAY|V4L2_CAP_HW_FREQ_SEEK"
+              "|V4L2_CAP_RDS_OUTPUT|V4L2_CAP_VIDEO_CAPTURE_MPLANE"
+              "|V4L2_CAP_VIDEO_OUTPUT_MPLANE|V4L2_CAP_VIDEO_M2M"
+              "|V4L2_CAP_TUNER|V4L2_CAP_RADIO|V4L2_CAP_MODULATOR"
+              "|V4L2_CAP_EXT_PIX_FORMAT|V4L2_CAP_META_CAPTURE|V4L2_CAP_ASYNCIO"
+              "|V4L2_CAP_STREAMING|V4L2_CAP_META_OUTPUT|V4L2_CAP_TOUCH"
+              "|V4L2_CAP_DEVICE_CAPS|0x40000008"));
+       printf(", device_caps=" XLAT_KNOWN(0xfacefeed,
+              "V4L2_CAP_VIDEO_CAPTURE|V4L2_CAP_VIDEO_OVERLAY"
+              "|V4L2_CAP_VBI_OUTPUT|V4L2_CAP_SLICED_VBI_CAPTURE"
+              "|V4L2_CAP_SLICED_VBI_OUTPUT|V4L2_CAP_VIDEO_OUTPUT_OVERLAY"
+              "|V4L2_CAP_HW_FREQ_SEEK|V4L2_CAP_RDS_OUTPUT"
+              "|V4L2_CAP_VIDEO_CAPTURE_MPLANE|V4L2_CAP_VIDEO_OUTPUT_MPLANE"
+              "|V4L2_CAP_VIDEO_M2M_MPLANE|V4L2_CAP_VIDEO_M2M|V4L2_CAP_AUDIO"
+              "|V4L2_CAP_RADIO|V4L2_CAP_MODULATOR|V4L2_CAP_SDR_OUTPUT"
+              "|V4L2_CAP_META_CAPTURE|V4L2_CAP_ASYNCIO|V4L2_CAP_META_OUTPUT"
+              "|V4L2_CAP_TOUCH|V4L2_CAP_DEVICE_CAPS|0x60000008"));
+       printf("}) = %ld (INJECTED)\n", inject_retval);
+
+
+       /* VIDIOC_ENUM_FMT */
+       static const struct strval32 buf_types[] = {
+               { ARG_XLAT_UNKNOWN(0, "V4L2_BUF_TYPE_???") },
+               { ARG_XLAT_KNOWN(0x1, "V4L2_BUF_TYPE_VIDEO_CAPTURE") },
+               { ARG_XLAT_KNOWN(0x2, "V4L2_BUF_TYPE_VIDEO_OUTPUT") },
+               { ARG_XLAT_KNOWN(0x3, "V4L2_BUF_TYPE_VIDEO_OVERLAY") },
+               { ARG_XLAT_KNOWN(0x4, "V4L2_BUF_TYPE_VBI_CAPTURE") },
+               { ARG_XLAT_KNOWN(0x5, "V4L2_BUF_TYPE_VBI_OUTPUT") },
+               { ARG_XLAT_KNOWN(0x6, "V4L2_BUF_TYPE_SLICED_VBI_CAPTURE") },
+               { ARG_XLAT_KNOWN(0x7, "V4L2_BUF_TYPE_SLICED_VBI_OUTPUT") },
+               { ARG_XLAT_KNOWN(0x8, "V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY") },
+               { ARG_XLAT_KNOWN(0x9, "V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE") },
+               { ARG_XLAT_KNOWN(0xa, "V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE") },
+               { ARG_XLAT_KNOWN(0xb, "V4L2_BUF_TYPE_SDR_CAPTURE") },
+               { ARG_XLAT_KNOWN(0xc, "V4L2_BUF_TYPE_SDR_OUTPUT") },
+               { ARG_XLAT_KNOWN(0xd, "V4L2_BUF_TYPE_META_CAPTURE") },
+               { ARG_XLAT_KNOWN(0xe, "V4L2_BUF_TYPE_META_OUTPUT") },
+               { ARG_XLAT_UNKNOWN(0xf, "V4L2_BUF_TYPE_???") },
+               { ARG_XLAT_UNKNOWN(0x80, "V4L2_BUF_TYPE_???") },
+               { ARG_XLAT_UNKNOWN(0xbadc0ded, "V4L2_BUF_TYPE_???") },
+       };
+       static const struct strval32 fmtdesc_flags[] = {
+               { ARG_STR(0) },
+               { ARG_XLAT_KNOWN(0x1, "V4L2_FMT_FLAG_COMPRESSED") },
+               { ARG_XLAT_KNOWN(0x3e, "V4L2_FMT_FLAG_EMULATED"
+                                      "|V4L2_FMT_FLAG_CONTINUOUS_BYTESTREAM"
+                                      "|V4L2_FMT_FLAG_DYN_RESOLUTION"
+                                      "|V4L2_FMT_FLAG_ENC_CAP_FRAME_INTERVAL"
+                                      "|0x20") },
+               { ARG_XLAT_UNKNOWN(0xdead0000, "V4L2_FMT_FLAG_???") },
+       };
+       static const struct strval32 fmtdesc_fmts[] = {
+               { 0x4c47504a, RAW("0x4c47504a")
+                             NRAW("v4l2_fourcc('J', 'P', 'G', 'L')"
+                                  " /* V4L2_PIX_FMT_JPGL */") },
+               { 0xbadc0ded, RAW("0xbadc0ded")
+                             NRAW("v4l2_fourcc('\\xed', '\\x0d', '\\xdc',"
+                                  " '\\xba')") },
+       };
+       struct v4l2_fmtdesc *fmtdesc = tail_alloc(sizeof(*fmtdesc));
+
+       fill_memory(fmtdesc, sizeof(*fmtdesc));
+       fmtdesc->index = 0xdeac0de;
+
+       ioctl(-1, VIDIOC_ENUM_FMT, 0);
+       printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_ENUM_FMT), inject_retval);
+
+       ioctl(-1, VIDIOC_ENUM_FMT, (char *) fmtdesc + 1);
+       printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_ENUM_FMT), (char *) fmtdesc + 1, inject_retval);
+
+       for (size_t i = 0; i < ARRAY_SIZE(buf_types); i++) {
+               for (size_t j = 0; j < ARRAY_SIZE(fmtdesc_flags); j++) {
+                       for (size_t k = 0; k < ARRAY_SIZE(fmtdesc_fmts); k++) {
+                               fmtdesc->type = buf_types[i].val;
+                               fmtdesc->flags = fmtdesc_flags[j].val;
+                               fmtdesc->pixelformat = fmtdesc_fmts[k].val;
+
+                               ioctl(-1, VIDIOC_ENUM_FMT, fmtdesc);
+                               printf("ioctl(-1, %s, {index=233488606, type=%s"
+                                      ", flags=%s, description=",
+                                      XLAT_STR(VIDIOC_ENUM_FMT),
+                                      buf_types[i].str,
+                                      fmtdesc_flags[j].str);
+                               print_quoted_cstring((char *) fmtdesc->description,
+                                       sizeof(fmtdesc->description));
+                               printf(", pixelformat=%s}) = %ld (INJECTED)\n",
+                                      fmtdesc_fmts[k].str, inject_retval);
+
+                               fill_memory_ex(fmtdesc->description,
+                                              sizeof(fmtdesc->description),
+                                              (i * 9 + j) * 7 + k,
+                                              (k * 3 + j) * 11 + i + 5);
+                       }
+               }
+       }
+
+
+       /* VIDIOC_REQBUFS */
+       static const struct strval32 reqb_mems[] = {
+               { ARG_XLAT_UNKNOWN(0, "V4L2_MEMORY_???") },
+               { ARG_XLAT_KNOWN(0x1, "V4L2_MEMORY_MMAP") },
+               { ARG_XLAT_KNOWN(0x4, "V4L2_MEMORY_DMABUF") },
+               { ARG_XLAT_UNKNOWN(0x5, "V4L2_MEMORY_???") },
+               { ARG_XLAT_UNKNOWN(0xbadc0ded, "V4L2_MEMORY_???") },
+       };
+       struct v4l2_requestbuffers *reqb = tail_alloc(sizeof(*reqb));
+
+       fill_memory(reqb, sizeof(*reqb));
+       reqb->count = 0xfeedface;
+
+       ioctl(-1, VIDIOC_REQBUFS, 0);
+       printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_REQBUFS), inject_retval);
+
+       ioctl(-1, VIDIOC_REQBUFS, (char *) reqb + 1);
+       printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_REQBUFS), (char *) reqb + 1, inject_retval);
+
+       for (size_t i = 0; i < MAX(ARRAY_SIZE(buf_types),
+                                  ARRAY_SIZE(reqb_mems)); i++) {
+               reqb->type = buf_types[i % ARRAY_SIZE(buf_types)].val;
+               reqb->memory = reqb_mems[i % ARRAY_SIZE(reqb_mems)].val;
+
+               ioctl(-1, VIDIOC_REQBUFS, reqb);
+               printf("ioctl(-1, %s, {type=%s, memory=%s"
+                      ", count=4277009102 => 4277009102}) = %ld (INJECTED)\n",
+                      XLAT_STR(VIDIOC_REQBUFS),
+                      buf_types[i % ARRAY_SIZE(buf_types)].str,
+                      reqb_mems[i % ARRAY_SIZE(reqb_mems)].str,
+                      inject_retval);
+       }
+
+
+       /* VIDIOC_G_FMT, VIDIOC_S_FMT, VIDIOC_TRY_FMT */
+       static const struct strval32 fmt_cmds[] = {
+               { ARG_STR(VIDIOC_G_FMT) },
+               { ARG_STR(VIDIOC_S_FMT) },
+               { ARG_STR(VIDIOC_TRY_FMT) },
+       };
+
+       struct v4l2_format *fmt = tail_alloc(sizeof(*fmt));
+
+       for (size_t i = 0; i < ARRAY_SIZE(fmt_cmds); i++) {
+               ioctl(-1, fmt_cmds[i].val, 0);
+               printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+                      sprintxlat(fmt_cmds[i].str, fmt_cmds[i].val, NULL),
+                      inject_retval);
+
+               ioctl(-1, fmt_cmds[i].val, (char *) fmt + 1);
+               printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+                      sprintxlat(fmt_cmds[i].str, fmt_cmds[i].val, NULL),
+                      (char *) fmt + 1, inject_retval);
+
+               for (size_t j = 0; j < ARRAY_SIZE(buf_types); j++) {
+                       fill_memory(fmt, sizeof(*fmt));
+
+                       fmt->type = buf_types[j].val;
+                       if (!fill_fmt(fmt))
+                               continue;
+
+                       ioctl(-1, fmt_cmds[i].val, fmt);
+                       printf("ioctl(-1, %s, {type=%s",
+                              sprintxlat(fmt_cmds[i].str, fmt_cmds[i].val,
+                                         NULL),
+                              buf_types[j].str);
+                       print_fmt(", ", fmt);
+                       if (fmt_cmds[i].val != VIDIOC_G_FMT &&
+                           buf_types[j].val != V4L2_BUF_TYPE_VIDEO_OVERLAY &&
+                           buf_types[j].val != 8)
+                               print_fmt("} => {", fmt);
+                       printf("}) = %ld (INJECTED)\n", inject_retval);
+               }
+       }
+
+
+       /* VIDIOC_QUERYBUF, VIDIOC_QBUF, VIDIOC_DQBUF */
+       static const struct strval32 buf_cmds[] = {
+               { ARG_STR(VIDIOC_QUERYBUF) },
+               { ARG_STR(VIDIOC_QBUF) },
+               { ARG_STR(VIDIOC_DQBUF) },
+       };
+
+       kernel_v4l2_buffer_t *buf = tail_alloc(sizeof(*buf));
+
+       for (size_t i = 0; i < ARRAY_SIZE(buf_cmds); i++) {
+               ioctl(-1, buf_cmds[i].val, 0);
+               printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+                      sprintxlat(buf_cmds[i].str, buf_cmds[i].val, NULL),
+                      inject_retval);
+
+               ioctl(-1, buf_cmds[i].val, (char *) buf + 1);
+               printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+                      sprintxlat(buf_cmds[i].str, buf_cmds[i].val, NULL),
+                      (char *) buf + 1, inject_retval);
+
+               fill_memory(buf, sizeof(*buf));
+               buf->index     = 0xdeadc0de;
+               buf->type      = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+               buf->bytesused = 0xdecaffee;
+               buf->flags     = 0x1ff; /* TODO: update */
+               buf->field     = V4L2_FIELD_TOP;
+
+               buf->timestamp.tv_sec  = 0x1e55c0de;
+               buf->timestamp.tv_usec = 999999;
+
+               buf->timecode.type = V4L2_TC_TYPE_24FPS;
+               buf->timecode.flags = 0xbeefdeaf;
+
+               buf->memory    = V4L2_MEMORY_MMAP;
+               buf->m.offset  = 0xfacefeed;
+               buf->length    = 0xcafebed5;
+               buf->reserved  = 0xdeefaced;
+
+               ioctl(-1, buf_cmds[i].val, buf);
+               printf("ioctl(-1, %s, {type="
+                      XLAT_KNOWN(0x1, "V4L2_BUF_TYPE_VIDEO_CAPTURE")
+                      ", index=3735929054, memory="
+                      XLAT_KNOWN(0x1, "V4L2_MEMORY_MMAP")
+                      ", m.offset=0xfacefeed, length=3405692629"
+                      ", bytesused=3737845742, flags=" RAW("0x1ff")
+#if !XLAT_RAW
+                      XLAT_KNOWN(0x1ff, "V4L2_BUF_FLAG_MAPPED"
+                      "|V4L2_BUF_FLAG_QUEUED|V4L2_BUF_FLAG_DONE"
+                      "|V4L2_BUF_FLAG_KEYFRAME|V4L2_BUF_FLAG_PFRAME"
+                      "|V4L2_BUF_FLAG_BFRAME|V4L2_BUF_FLAG_ERROR"
+                      "|V4L2_BUF_FLAG_IN_REQUEST|V4L2_BUF_FLAG_TIMECODE") "|"
+                      XLAT_KNOWN(0, "V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN") "|"
+                      XLAT_KNOWN(0, "V4L2_BUF_FLAG_TSTAMP_SRC_EOF")
+#endif
+                      "%s, ...}) = %ld (INJECTED)\n",
+                      sprintxlat(buf_cmds[i].str, buf_cmds[i].val, NULL),
+                      buf_cmds[i].val == VIDIOC_DQBUF
+                       ? ", timestamp={tv_sec=508936414, tv_usec=999999}" : "",
+                      inject_retval);
+
+               buf->type      = V4L2_BUF_TYPE_VBI_CAPTURE;
+               buf->flags     = 0x268040;
+               buf->field     = 0xb;
+               buf->memory    = V4L2_MEMORY_USERPTR;
+               buf->m.userptr = (long) 0xdefaced0dec0ded1LL;
+
+               ioctl(-1, buf_cmds[i].val, buf);
+               printf("ioctl(-1, %s, {type="
+                      XLAT_KNOWN(0x4, "V4L2_BUF_TYPE_VBI_CAPTURE")
+                      ", index=3735929054, memory="
+                      XLAT_KNOWN(0x2, "V4L2_MEMORY_USERPTR")
+                      ", m.userptr=%p, length=3405692629"
+                      ", bytesused=3737845742, flags=" RAW("0x268040")
+#if !XLAT_RAW
+                      XLAT_KNOWN(0x200040, "V4L2_BUF_FLAG_ERROR|0x200000") "|"
+                      XLAT_UNKNOWN(0x8000, "V4L2_BUF_FLAG_TIMESTAMP_???") "|"
+                      XLAT_UNKNOWN(0x60000, "V4L2_BUF_FLAG_TSTAMP_SRC_???")
+#endif
+                      "%s, ...}) = %ld (INJECTED)\n",
+                      sprintxlat(buf_cmds[i].str, buf_cmds[i].val, NULL),
+                      (void *) (intptr_t) 0xdefaced0dec0ded1LL,
+                      buf_cmds[i].val == VIDIOC_DQBUF
+                       ? ", timestamp={tv_sec=508936414, tv_usec=999999}" : "",
+                      inject_retval);
+
+               buf->type      = 0x9;
+               buf->flags     = 0;
+
+               ioctl(-1, buf_cmds[i].val, buf);
+               printf("ioctl(-1, %s, {type="
+                      XLAT_KNOWN(0x9, "V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE")
+                      ", index=3735929054, memory="
+                      XLAT_KNOWN(0x2, "V4L2_MEMORY_USERPTR")
+                      ", m.userptr=%p, length=3405692629"
+                      ", bytesused=3737845742, flags=" RAW("0")
+#if !XLAT_RAW
+                      XLAT_KNOWN(0, "V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN") "|"
+                      XLAT_KNOWN(0, "V4L2_BUF_FLAG_TSTAMP_SRC_EOF")
+#endif
+                      "%s, ...}) = %ld (INJECTED)\n",
+                      sprintxlat(buf_cmds[i].str, buf_cmds[i].val, NULL),
+                      (void *) (intptr_t) 0xdefaced0dec0ded1LL,
+                      buf_cmds[i].val == VIDIOC_DQBUF
+                       ? ", timestamp={tv_sec=508936414, tv_usec=999999}" : "",
+                      inject_retval);
+
+               buf->type      = 0xa;
+               buf->memory    = V4L2_MEMORY_OVERLAY;
+               buf->flags     = 0x2000;
+
+               ioctl(-1, buf_cmds[i].val, buf);
+               printf("ioctl(-1, %s, {type="
+                      XLAT_KNOWN(0xa, "V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE")
+                      ", index=3735929054, memory="
+                      XLAT_KNOWN(0x3, "V4L2_MEMORY_OVERLAY")
+                      ", length=3405692629, bytesused=3737845742"
+                      ", flags=" RAW("0x2000")
+#if !XLAT_RAW
+                      XLAT_KNOWN(0x2000, "V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC")
+                      "|" XLAT_KNOWN(0, "V4L2_BUF_FLAG_TSTAMP_SRC_EOF")
+#endif
+                      "%s, ...}) = %ld (INJECTED)\n",
+                      sprintxlat(buf_cmds[i].str, buf_cmds[i].val, NULL),
+                      buf_cmds[i].val == VIDIOC_DQBUF
+                       ? ", timestamp={tv_sec=508936414, tv_usec=999999}" : "",
+                      inject_retval);
+       }
+
+
+       /* VIDIOC_G_FBUF, VIDIOC_S_FBUF */
+       static const struct strval32 fbuf_cmds[] = {
+               { ARG_STR(VIDIOC_G_FBUF) },
+               { ARG_STR(VIDIOC_S_FBUF) },
+       };
+
+       struct v4l2_framebuffer *fbuf = tail_alloc(sizeof(*fbuf));
+
+       for (size_t i = 0; i < ARRAY_SIZE(fbuf_cmds); i++) {
+               ioctl(-1, fbuf_cmds[i].val, 0);
+               printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+                      sprintxlat(fbuf_cmds[i].str, fbuf_cmds[i].val, NULL),
+                      inject_retval);
+
+               ioctl(-1, fbuf_cmds[i].val, (char *) fbuf + 1);
+               printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+                      sprintxlat(fbuf_cmds[i].str, fbuf_cmds[i].val, NULL),
+                      (char *) fbuf + 1, inject_retval);
+
+               fill_memory32(fbuf, sizeof(*fbuf));
+               fbuf->base = NULL;
+
+               ioctl(-1, fbuf_cmds[i].val, fbuf);
+               printf("ioctl(-1, %s, {capability=0x80a0c0e0, flags=0x80a0c0e1"
+                      ", base=NULL}) = %ld (INJECTED)\n",
+                      sprintxlat(fbuf_cmds[i].str, fbuf_cmds[i].val, NULL),
+                      inject_retval);
+       }
+
+
+       /* VIDIOC_G_PARM, VIDIOC_S_PARM */
+       static const struct strval32 sparm_cmds[] = {
+               { ARG_STR(VIDIOC_G_PARM) },
+               { ARG_STR(VIDIOC_S_PARM) },
+       };
+
+       struct v4l2_streamparm *sparm = tail_alloc(sizeof(*sparm));
+
+       for (size_t i = 0; i < ARRAY_SIZE(sparm_cmds); i++) {
+               ioctl(-1, sparm_cmds[i].val, 0);
+               printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+                      sprintxlat(sparm_cmds[i].str, sparm_cmds[i].val, NULL),
+                      inject_retval);
+
+               ioctl(-1, sparm_cmds[i].val, (char *) sparm + 1);
+               printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+                      sprintxlat(sparm_cmds[i].str, sparm_cmds[i].val, NULL),
+                      (char *) sparm + 1, inject_retval);
+
+               fill_memory32(sparm, sizeof(*sparm));
+
+               ioctl(-1, sparm_cmds[i].val, sparm);
+               printf("ioctl(-1, %s, {type="
+                      XLAT_UNKNOWN(0x80a0c0e0, "V4L2_BUF_TYPE_???")
+                      "}) = %ld (INJECTED)\n",
+                      sprintxlat(sparm_cmds[i].str, sparm_cmds[i].val, NULL),
+                      inject_retval);
+
+               sparm->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+
+               static const char *parm_str1 = "parm.capture={capability="
+                       XLAT_UNKNOWN(0x80a0c0e1, "V4L2_CAP_???")
+                       ", capturemode="
+                       XLAT_UNKNOWN(0x80a0c0e2, "V4L2_MODE_???")
+                       ", timeperframe=2158018787/2158018788"
+                       ", extendedmode=0x80a0c0e5, readbuffers=2158018790}";
+
+               ioctl(-1, sparm_cmds[i].val, sparm);
+               printf("ioctl(-1, %s, {type="
+                      XLAT_KNOWN(0x1, "V4L2_BUF_TYPE_VIDEO_CAPTURE")
+                      ", %s}%s%s%s) = %ld (INJECTED)\n",
+                      sprintxlat(sparm_cmds[i].str, sparm_cmds[i].val, NULL),
+                      parm_str1,
+                      sparm_cmds[i].val == VIDIOC_S_PARM ? " => {" : "",
+                      sparm_cmds[i].val == VIDIOC_S_PARM ? parm_str1 : "",
+                      sparm_cmds[i].val == VIDIOC_S_PARM ? "}" : "",
+                      inject_retval);
+
+               sparm->parm.capture.capability = 0x1000;
+               sparm->parm.capture.capturemode = 0x1;
+
+               static const char *parm_str2 = "parm.capture={capability="
+                       XLAT_KNOWN(0x1000, "V4L2_CAP_TIMEPERFRAME")
+                       ", capturemode="
+                       XLAT_KNOWN(0x1, "V4L2_MODE_HIGHQUALITY")
+                       ", timeperframe=2158018787/2158018788"
+                       ", extendedmode=0x80a0c0e5, readbuffers=2158018790}";
+
+               ioctl(-1, sparm_cmds[i].val, sparm);
+               printf("ioctl(-1, %s, {type="
+                      XLAT_KNOWN(0x1, "V4L2_BUF_TYPE_VIDEO_CAPTURE")
+                      ", %s}%s%s%s) = %ld (INJECTED)\n",
+                      sprintxlat(sparm_cmds[i].str, sparm_cmds[i].val, NULL),
+                      parm_str2,
+                      sparm_cmds[i].val == VIDIOC_S_PARM ? " => {" : "",
+                      sparm_cmds[i].val == VIDIOC_S_PARM ? parm_str2 : "",
+                      sparm_cmds[i].val == VIDIOC_S_PARM ? "}" : "",
+                      inject_retval);
+
+               sparm->type = 0x9;
+               sparm->parm.capture.capability = 0xdeadbeef;
+               sparm->parm.capture.capturemode = 0xadec0ded;
+
+               ioctl(-1, sparm_cmds[i].val, sparm);
+               printf("ioctl(-1, %s, {type="
+                      XLAT_KNOWN(0x9, "V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE")
+                      "}) = %ld (INJECTED)\n",
+                      sprintxlat(sparm_cmds[i].str, sparm_cmds[i].val, NULL),
+                      inject_retval);
+
+               fill_memory32(sparm, sizeof(*sparm));
+               sparm->type = V4L2_BUF_TYPE_VIDEO_OUTPUT;
+
+               static const char *parm_str3 = "parm.output={capability="
+                       XLAT_UNKNOWN(0x80a0c0e1, "V4L2_CAP_???")
+                       ", outputmode="
+                       XLAT_UNKNOWN(0x80a0c0e2, "V4L2_MODE_???")
+                       ", timeperframe=2158018787/2158018788"
+                       ", extendedmode=0x80a0c0e5, writebuffers=2158018790}";
+
+               ioctl(-1, sparm_cmds[i].val, sparm);
+               printf("ioctl(-1, %s, {type="
+                      XLAT_KNOWN(0x2, "V4L2_BUF_TYPE_VIDEO_OUTPUT")
+                      ", %s}%s%s%s) = %ld (INJECTED)\n",
+                      sprintxlat(sparm_cmds[i].str, sparm_cmds[i].val, NULL),
+                      parm_str3,
+                      sparm_cmds[i].val == VIDIOC_S_PARM ? " => {" : "",
+                      sparm_cmds[i].val == VIDIOC_S_PARM ? parm_str3 : "",
+                      sparm_cmds[i].val == VIDIOC_S_PARM ? "}" : "",
+                      inject_retval);
+
+       }
+
+
+       /* VIDIOC_G_STD, VIDIOC_S_STD */
+       static const struct strval32 stdid_cmds[] = {
+               { ARG_STR(VIDIOC_G_STD) },
+               { ARG_STR(VIDIOC_S_STD) },
+       };
+       static const struct strval64 stdids[] = {
+               { ARG_STR(0) },
+               { ARG_STR(0x1) },
+               { ARG_STR(0xb000) },
+               { ARG_STR(0x3ffffff) },
+               { ARG_STR(0xffffffff) },
+               { ARG_ULL_STR(0xbadc0deddeadface) },
+       };
+
+       v4l2_std_id *stdid = tail_alloc(sizeof(*stdid));
+
+       for (size_t i = 0; i < ARRAY_SIZE(stdid_cmds); i++) {
+               ioctl(-1, stdid_cmds[i].val, 0);
+               printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+                      sprintxlat(stdid_cmds[i].str, stdid_cmds[i].val, NULL),
+                      inject_retval);
+
+               ioctl(-1, stdid_cmds[i].val, (char *) stdid + 1);
+               printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+                      sprintxlat(stdid_cmds[i].str, stdid_cmds[i].val, NULL),
+                      (char *) stdid + 1, inject_retval);
+
+               for (size_t j = 0; j < ARRAY_SIZE(stdids); j++) {
+                       *stdid = stdids[j].val;
+
+                       ioctl(-1, stdid_cmds[i].val, stdid);
+                       printf("ioctl(-1, %s, [%s]) = %ld (INJECTED)\n",
+                              sprintxlat(stdid_cmds[i].str, stdid_cmds[i].val, NULL),
+                              stdids[j].str, inject_retval);
+
+               }
+       }
+
+
+       /* VIDIOC_ENUMSTD */
+       struct v4l2_standard *std = tail_alloc(sizeof(*std));
+
+       ioctl(-1, VIDIOC_ENUMSTD, 0);
+       printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_ENUMSTD), inject_retval);
+
+       ioctl(-1, VIDIOC_ENUMSTD, (char *) std + 1);
+       printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_ENUMSTD), (char *) std + 1, inject_retval);
+
+       for (size_t i = 0; i < ARRAY_SIZE(stdids); i++) {
+               fill_memory32(&std->frameperiod, sizeof(*std) -
+                             offsetof(struct v4l2_standard, frameperiod));
+               fill_memory_ex(std->name, sizeof(std->name), i * 47 + 1, 255);
+               std->index = 0xdeadface;
+               std->id = stdids[i].val;
+
+               ioctl(-1, VIDIOC_ENUMSTD, std);
+               printf("ioctl(-1, %s, {index=3735943886, name=",
+                      XLAT_STR(VIDIOC_ENUMSTD));
+               print_quoted_cstring((char *) std->name, sizeof(std->name));
+               printf(", frameperiod=2158018784/2158018785"
+                      ", framelines=2158018786}) = %ld (INJECTED)\n",
+                      inject_retval);
+       }
+
+
+       /* VIDIOC_ENUMINPUT */
+       static const struct strval32 input_types[] = {
+               { ARG_XLAT_UNKNOWN(0, "V4L2_INPUT_TYPE_???") },
+               { V4L2_INPUT_TYPE_TUNER,
+                 XLAT_KNOWN(0x1, "V4L2_INPUT_TYPE_TUNER") },
+               { V4L2_INPUT_TYPE_CAMERA,
+                 XLAT_KNOWN(0x2, "V4L2_INPUT_TYPE_CAMERA") },
+               { ARG_XLAT_UNKNOWN(0x4, "V4L2_INPUT_TYPE_???") },
+               { ARG_XLAT_UNKNOWN(0xdeadc0de, "V4L2_INPUT_TYPE_???") },
+       };
+
+       struct v4l2_input *input = tail_alloc(sizeof(*input));
+
+       ioctl(-1, VIDIOC_ENUMINPUT, 0);
+       printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_ENUMINPUT), inject_retval);
+
+       ioctl(-1, VIDIOC_ENUMINPUT, (char *) input + 1);
+       printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_ENUMINPUT), (char *) input + 1, inject_retval);
+
+       for (size_t i = 0; i < ARRAY_SIZE(stdids); i++) {
+               for (size_t j = 0; j < ARRAY_SIZE(input_types); j++) {
+                       fill_memory32(input, sizeof(*input));
+                       fill_memory_ex(input->name, sizeof(input->name),
+                                      i * 47 + 13, 255);
+                       input->type = input_types[j].val;
+                       input->std = stdids[i].val;
+
+                       ioctl(-1, VIDIOC_ENUMINPUT, input);
+                       printf("ioctl(-1, %s, {index=2158018784, name=",
+                              XLAT_STR(VIDIOC_ENUMINPUT));
+                       print_quoted_cstring((char *) input->name,
+                                            sizeof(input->name));
+                       printf(", type=%s}) = %ld (INJECTED)\n",
+                              input_types[j].str, inject_retval);
+               }
+       }
+
+
+       /* VIDIOC_G_CTRL, VIDIOC_S_CTRL */
+       static const struct strval32 ctrl_cmds[] = {
+               { ARG_STR(VIDIOC_G_CTRL) },
+               { ARG_STR(VIDIOC_S_CTRL) },
+       };
+
+       struct v4l2_control *ctrl = tail_alloc(sizeof(*ctrl));
+
+       for (size_t i = 0; i < ARRAY_SIZE(ctrl_cmds); i++) {
+               ioctl(-1, ctrl_cmds[i].val, 0);
+               printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+                      sprintxlat(ctrl_cmds[i].str, ctrl_cmds[i].val, NULL),
+                      inject_retval);
+
+               ioctl(-1, ctrl_cmds[i].val, (char *) ctrl + 1);
+               printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+                      sprintxlat(ctrl_cmds[i].str, ctrl_cmds[i].val, NULL),
+                      (char *) ctrl + 1, inject_retval);
+
+               /* NB: cid printing is mostly tested in ioctl_v4l2.c */
+               fill_memory32(ctrl, sizeof(*ctrl));
+               ioctl(-1, ctrl_cmds[i].val, ctrl);
+               printf("ioctl(-1, %s, {id=0x80a0c0e0"
+                      NRAW(" /* V4L2_CID_??? */")
+                      ", value=-2136948511%s}) = %ld (INJECTED)\n",
+                      sprintxlat(ctrl_cmds[i].str, ctrl_cmds[i].val, NULL),
+                      ctrl_cmds[i].val == VIDIOC_S_CTRL
+                       ? " => -2136948511" : "",
+                      inject_retval);
+       }
+
+
+       /* VIDIOC_G_TUNER, VIDIOC_S_TUNER */
+       static const struct strval32 tuner_cmds[] = {
+               { ARG_STR(VIDIOC_G_TUNER) },
+               { ARG_STR(VIDIOC_S_TUNER) },
+       };
+       static const struct strval32 tuner_types[] = {
+               { ARG_XLAT_UNKNOWN(0, "V4L2_TUNER_???") },
+               { ARG_XLAT_KNOWN(0x1, "V4L2_TUNER_RADIO") },
+               { ARG_XLAT_KNOWN(0x5, "V4L2_TUNER_RF") },
+               { ARG_XLAT_UNKNOWN(0x6, "V4L2_TUNER_???") },
+               { ARG_XLAT_UNKNOWN(0xdeadc0de, "V4L2_TUNER_???") },
+       };
+       static const struct strval32 tuner_caps[] = {
+               { ARG_STR(0) },
+               { ARG_XLAT_KNOWN(0x1fff, "V4L2_TUNER_CAP_LOW"
+                                "|V4L2_TUNER_CAP_NORM"
+                                "|V4L2_TUNER_CAP_HWSEEK_BOUNDED"
+                                "|V4L2_TUNER_CAP_HWSEEK_WRAP"
+                                "|V4L2_TUNER_CAP_STEREO|V4L2_TUNER_CAP_LANG2"
+                                "|V4L2_TUNER_CAP_LANG1|V4L2_TUNER_CAP_RDS"
+                                "|V4L2_TUNER_CAP_RDS_BLOCK_IO"
+                                "|V4L2_TUNER_CAP_RDS_CONTROLS"
+                                "|V4L2_TUNER_CAP_FREQ_BANDS"
+                                "|V4L2_TUNER_CAP_HWSEEK_PROG_LIM"
+                                "|V4L2_TUNER_CAP_1HZ") },
+               { ARG_XLAT_KNOWN(0xdeadc0de, "V4L2_TUNER_CAP_NORM"
+                                "|V4L2_TUNER_CAP_HWSEEK_BOUNDED"
+                                "|V4L2_TUNER_CAP_HWSEEK_WRAP"
+                                "|V4L2_TUNER_CAP_STEREO|V4L2_TUNER_CAP_LANG1"
+                                "|V4L2_TUNER_CAP_RDS|0xdeadc000") },
+               { ARG_XLAT_UNKNOWN(0xffffe000, "V4L2_TUNER_CAP_???") },
+       };
+       static const struct strval32 tuner_rxsc[] = {
+               { ARG_STR(0) },
+               { ARG_XLAT_KNOWN(0x1f, "V4L2_TUNER_SUB_MONO"
+                                "|V4L2_TUNER_SUB_STEREO|V4L2_TUNER_SUB_LANG2"
+                                "|V4L2_TUNER_SUB_LANG1|V4L2_TUNER_SUB_RDS") },
+               { ARG_XLAT_KNOWN(0xbeefface, "V4L2_TUNER_SUB_STEREO"
+                                "|V4L2_TUNER_SUB_LANG2|V4L2_TUNER_SUB_LANG1"
+                                "|0xbeeffac0") },
+               { ARG_XLAT_UNKNOWN(0xffffffe0, "V4L2_TUNER_SUB_???") },
+
+       };
+       static const struct strval32 tuner_amodes[] = {
+               { ARG_XLAT_KNOWN(0, "V4L2_TUNER_MODE_MONO") },
+               { ARG_XLAT_KNOWN(0x2, "V4L2_TUNER_MODE_LANG2") },
+               { ARG_XLAT_KNOWN(0x4, "V4L2_TUNER_MODE_LANG1_LANG2") },
+               { ARG_XLAT_UNKNOWN(0x5, "V4L2_TUNER_MODE_???") },
+               { ARG_XLAT_UNKNOWN(0xcaffeeed, "V4L2_TUNER_MODE_???") },
+       };
+       static const size_t tuner_iters = MAX(MAX(MAX(ARRAY_SIZE(tuner_types),
+                                                     ARRAY_SIZE(tuner_caps)),
+                                                 ARRAY_SIZE(tuner_rxsc)),
+                                             ARRAY_SIZE(tuner_amodes));
+
+       struct v4l2_tuner *tuner = tail_alloc(sizeof(*tuner));
+
+       for (size_t i = 0; i < ARRAY_SIZE(tuner_cmds); i++) {
+               ioctl(-1, tuner_cmds[i].val, 0);
+               printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+                      sprintxlat(tuner_cmds[i].str, tuner_cmds[i].val, NULL),
+                      inject_retval);
+
+               ioctl(-1, tuner_cmds[i].val, (char *) tuner + 1);
+               printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+                      sprintxlat(tuner_cmds[i].str, tuner_cmds[i].val, NULL),
+                      (char *) tuner + 1, inject_retval);
+
+               for (size_t j = 0; j < tuner_iters; j++) {
+                       fill_memory32(tuner, sizeof(*tuner));
+                       fill_memory_ex(tuner->name, sizeof(tuner->name),
+                                      j * 47 + 7, 255);
+                       tuner->type =
+                               tuner_types[j % ARRAY_SIZE(tuner_types)].val;
+                       tuner->capability =
+                               tuner_caps[j % ARRAY_SIZE(tuner_caps)].val;
+                       tuner->rxsubchans =
+                               tuner_rxsc[j % ARRAY_SIZE(tuner_rxsc)].val;
+                       tuner->audmode =
+                               tuner_amodes[j % ARRAY_SIZE(tuner_amodes)].val;
+
+                       ioctl(-1, tuner_cmds[i].val, tuner);
+                       printf("ioctl(-1, %s, {index=2158018784",
+                              sprintxlat(tuner_cmds[i].str,
+                                         tuner_cmds[i].val, NULL));
+                       for (size_t k = 0;
+                            k < (tuner_cmds[i].val == VIDIOC_S_TUNER ? 2 : 1);
+                            k++) {
+                               printf("%sname=", k ? "} => {" : ", ");
+                               print_quoted_cstring((char *) tuner->name,
+                                                    sizeof(tuner->name));
+                               printf(", type=%s, capability=%s"
+                                      ", rangelow=2158018795"
+                                      ", rangehigh=2158018796, rxsubchans=%s"
+                                      ", audmode=%s, signal=-2136948497"
+                                      ", afc=-2136948496",
+                                      tuner_types[j %
+                                                  ARRAY_SIZE(tuner_types)].str,
+                                      tuner_caps[j %
+                                                 ARRAY_SIZE(tuner_caps)].str,
+                                      tuner_rxsc[j %
+                                                 ARRAY_SIZE(tuner_rxsc)].str,
+                                      tuner_amodes[j %
+                                                ARRAY_SIZE(tuner_amodes)].str);
+                       }
+                       printf("}) = %ld (INJECTED)\n", inject_retval);
+               }
+       }
+
+
+       /* VIDIOC_QUERYCTRL */
+       static const struct strval32 cids[] = {
+               { ARG_XLAT_UNKNOWN(0, "V4L2_CID_???") },
+               { ARG_XLAT_UNKNOWN(0x97abcd, "V4L2_CID_???") },
+               { ARG_XLAT_KNOWN(0x980000, "V4L2_CTRL_CLASS_USER+0") },
+               { ARG_XLAT_KNOWN(0x990a64,
+                                "V4L2_CID_MPEG_VIDEO_H264_CPB_SIZE") },
+               { ARG_XLAT_KNOWN(0xa31234, "V4L2_CTRL_CLASS_DETECT+0x1234") },
+               { ARG_XLAT_UNKNOWN(0xa40000, "V4L2_CID_???") },
+               { 0xdeadc0de,
+#if XLAT_RAW
+                 "0xdeadc0de"
+#else
+                 XLAT_KNOWN(0xc0000000, "V4L2_CTRL_FLAG_NEXT_CTRL"
+                                        "|V4L2_CTRL_FLAG_NEXT_COMPOUND")
+                 "|0x1eadc0de /* V4L2_CID_??? */"
+#endif
+                             },
+       };
+       static const struct strval32 ctrl_types[] = {
+               { ARG_XLAT_UNKNOWN(0, "V4L2_CTRL_TYPE_???") },
+               { ARG_XLAT_KNOWN(0x1, "V4L2_CTRL_TYPE_INTEGER") },
+               { ARG_XLAT_KNOWN(0x2, "V4L2_CTRL_TYPE_BOOLEAN") },
+               { ARG_XLAT_KNOWN(0x3, "V4L2_CTRL_TYPE_MENU") },
+               { ARG_XLAT_KNOWN(0x4, "V4L2_CTRL_TYPE_BUTTON") },
+               { ARG_XLAT_KNOWN(0x5, "V4L2_CTRL_TYPE_INTEGER64") },
+               { ARG_XLAT_KNOWN(0x6, "V4L2_CTRL_TYPE_CTRL_CLASS") },
+               { ARG_XLAT_KNOWN(0x7, "V4L2_CTRL_TYPE_STRING") },
+               { ARG_XLAT_KNOWN(0x8, "V4L2_CTRL_TYPE_BITMASK") },
+               { ARG_XLAT_KNOWN(0x9, "V4L2_CTRL_TYPE_INTEGER_MENU") },
+               { ARG_XLAT_UNKNOWN(0xa, "V4L2_CTRL_TYPE_???") },
+               { ARG_XLAT_UNKNOWN(0xff, "V4L2_CTRL_TYPE_???") },
+               { ARG_XLAT_KNOWN(0x100, "V4L2_CTRL_TYPE_U8") },
+               { ARG_XLAT_KNOWN(0x101, "V4L2_CTRL_TYPE_U16") },
+               { ARG_XLAT_KNOWN(0x102, "V4L2_CTRL_TYPE_U32") },
+               { ARG_XLAT_UNKNOWN(0x103, "V4L2_CTRL_TYPE_???") },
+               { ARG_XLAT_UNKNOWN(0x104, "V4L2_CTRL_TYPE_???") },
+               { ARG_XLAT_UNKNOWN(0x105, "V4L2_CTRL_TYPE_???") },
+               { ARG_XLAT_KNOWN(0x106, "V4L2_CTRL_TYPE_AREA") },
+               { ARG_XLAT_UNKNOWN(0x107, "V4L2_CTRL_TYPE_???") },
+               { ARG_XLAT_UNKNOWN(0xdeadc0de, "V4L2_CTRL_TYPE_???") },
+       };
+       static const struct strval32 ctrl_flags[] = {
+               { ARG_STR(0) },
+               { ARG_XLAT_KNOWN(0x7ff, "V4L2_CTRL_FLAG_DISABLED"
+                                       "|V4L2_CTRL_FLAG_GRABBED"
+                                       "|V4L2_CTRL_FLAG_READ_ONLY"
+                                       "|V4L2_CTRL_FLAG_UPDATE"
+                                       "|V4L2_CTRL_FLAG_INACTIVE"
+                                       "|V4L2_CTRL_FLAG_SLIDER"
+                                       "|V4L2_CTRL_FLAG_WRITE_ONLY"
+                                       "|V4L2_CTRL_FLAG_VOLATILE"
+                                       "|V4L2_CTRL_FLAG_HAS_PAYLOAD"
+                                       "|V4L2_CTRL_FLAG_EXECUTE_ON_WRITE"
+                                       "|V4L2_CTRL_FLAG_MODIFY_LAYOUT") },
+               { ARG_XLAT_KNOWN(0xbeefface, "V4L2_CTRL_FLAG_GRABBED"
+                                            "|V4L2_CTRL_FLAG_READ_ONLY"
+                                            "|V4L2_CTRL_FLAG_UPDATE"
+                                            "|V4L2_CTRL_FLAG_WRITE_ONLY"
+                                            "|V4L2_CTRL_FLAG_VOLATILE"
+                                            "|V4L2_CTRL_FLAG_EXECUTE_ON_WRITE"
+                                            "|0xbeeff800") },
+               { ARG_XLAT_UNKNOWN(0xfffff800, "V4L2_CTRL_FLAG_???") },
+       };
+       static const size_t qctrl_iters = MAX(MAX(ARRAY_SIZE(cids),
+                                                 ARRAY_SIZE(ctrl_types)),
+                                              ARRAY_SIZE(ctrl_flags));
+
+       struct v4l2_queryctrl *qctrl = tail_alloc(sizeof(*qctrl));
+
+       ioctl(-1, VIDIOC_QUERYCTRL, 0);
+       printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_QUERYCTRL), inject_retval);
+
+       ioctl(-1, VIDIOC_QUERYCTRL, (char *) qctrl + 1);
+       printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_QUERYCTRL), (char *) qctrl + 1, inject_retval);
+
+       for (size_t i = 0; i < qctrl_iters; i++) {
+               fill_memory32(qctrl, sizeof(*qctrl));
+               fill_memory_ex(qctrl->name, sizeof(qctrl->name),
+                              i * 47 + 5, 255);
+               qctrl->id    = cids[i % ARRAY_SIZE(cids)].val;
+               qctrl->type  = ctrl_types[i % ARRAY_SIZE(ctrl_types)].val;
+               qctrl->flags = ctrl_flags[i % ARRAY_SIZE(ctrl_flags)].val;
+
+               if (i % 2)
+                       memset(qctrl->reserved, 0, sizeof(qctrl->reserved));
+
+               ioctl(-1, VIDIOC_QUERYCTRL, qctrl);
+               printf("ioctl(-1, %s, {id=%s, type=%s, name=",
+                      XLAT_STR(VIDIOC_QUERYCTRL),
+                      cids[i % ARRAY_SIZE(cids)].str,
+                      ctrl_types[i % ARRAY_SIZE(ctrl_types)].str);
+               print_quoted_cstring((char *) qctrl->name, sizeof(qctrl->name));
+#if VERBOSE
+               printf(", minimum=-2136948502, maximum=-2136948501"
+                      ", step=-2136948500, default_value=-2136948499"
+                      ", flags=%s%s",
+                      ctrl_flags[i % ARRAY_SIZE(ctrl_flags)].str,
+                      i % 2 ? "" : ", reserved=[0x80a0c0ef, 0x80a0c0f0]");
+#else
+               printf(", ...");
+#endif
+               printf("}) = %ld (INJECTED)\n", inject_retval);
+       }
+
+
+       /* VIDIOC_G_INPUT, VIDIOC_S_INPUT */
+       static const struct strval32 input_cmds[] = {
+               { ARG_STR(VIDIOC_G_INPUT) },
+               { ARG_STR(VIDIOC_S_INPUT) },
+       };
+       static const struct strval32 inputids[] = {
+               { ARG_STR(0) },
+               { ARG_STR(1) },
+               { ARG_STR(1578221295) },
+               { ARG_STR(31415926) },
+               { ARG_STR(4294967295) },
+       };
+
+       int *inputid = tail_alloc(sizeof(*inputid));
+
+       for (size_t i = 0; i < ARRAY_SIZE(input_cmds); i++) {
+               ioctl(-1, input_cmds[i].val, 0);
+               printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+                      sprintxlat(input_cmds[i].str, input_cmds[i].val, NULL),
+                      inject_retval);
+
+               ioctl(-1, input_cmds[i].val, (char *) inputid + 1);
+               printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+                      sprintxlat(input_cmds[i].str, input_cmds[i].val, NULL),
+                      (char *) inputid + 1, inject_retval);
+
+               for (size_t j = 0; j < ARRAY_SIZE(inputids); j++) {
+                       *inputid = inputids[j].val;
+
+                       ioctl(-1, input_cmds[i].val, inputid);
+                       printf("ioctl(-1, %s, [%s]) = %ld (INJECTED)\n",
+                              sprintxlat(input_cmds[i].str, input_cmds[i].val,
+                                         NULL),
+                              inputids[j].str, inject_retval);
+
+               }
+       }
+
+
+       /* VIDIOC_CROPCAP */
+       struct v4l2_cropcap *ccap = tail_alloc(sizeof(*ccap));
+
+       fill_memory32(ccap, sizeof(*ccap));
+
+       ioctl(-1, VIDIOC_CROPCAP, 0);
+       printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_CROPCAP), inject_retval);
+
+       ioctl(-1, VIDIOC_CROPCAP, (char *) ccap + 1);
+       printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_CROPCAP), (char *) ccap + 1, inject_retval);
+
+       for (size_t i = 0; i < ARRAY_SIZE(buf_types); i++) {
+               ccap->type = buf_types[i].val;
+
+               ioctl(-1, VIDIOC_CROPCAP, ccap);
+               printf("ioctl(-1, %s, {type=%s"
+                      ", bounds={left=-2136948511, top=-2136948510"
+                      ", width=2158018787, height=2158018788}"
+                      ", defrect={left=-2136948507, top=-2136948506"
+                      ", width=2158018791, height=2158018792}"
+                      ", pixelaspect=2158018793/2158018794})"
+                      " = %ld (INJECTED)\n",
+                      XLAT_STR(VIDIOC_CROPCAP),
+                      buf_types[i].str, inject_retval);
+       }
+
+
+       /* VIDIOC_G_CROP, VIDIOC_S_CROP */
+       static const struct strval32 crop_cmds[] = {
+               { ARG_STR(VIDIOC_G_CROP) },
+               { ARG_STR(VIDIOC_S_CROP) },
+       };
+       struct v4l2_crop *crop = tail_alloc(sizeof(*crop));
+
+       for (size_t i = 0; i < ARRAY_SIZE(crop_cmds); i++) {
+               fill_memory32(crop, sizeof(*crop));
+
+               ioctl(-1, crop_cmds[i].val, 0);
+               printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+                      sprintxlat(crop_cmds[i].str, crop_cmds[i].val, NULL),
+                      inject_retval);
+
+               ioctl(-1, crop_cmds[i].val, (char *) crop + 1);
+               printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+                      sprintxlat(crop_cmds[i].str, crop_cmds[i].val, NULL),
+                      (char *) crop + 1, inject_retval);
+
+               for (size_t j = 0; j < ARRAY_SIZE(buf_types); j++) {
+                       crop->type = buf_types[j].val;
+
+                       ioctl(-1, crop_cmds[i].val, crop);
+                       printf("ioctl(-1, %s, {type=%s, c={left=-2136948511"
+                              ", top=-2136948510, width=2158018787"
+                              ", height=2158018788}}) = %ld (INJECTED)\n",
+                              sprintxlat(crop_cmds[i].str, crop_cmds[i].val,
+                                         NULL),
+                              buf_types[j].str, inject_retval);
+               }
+       }
+
+
+#ifdef VIDIOC_S_EXT_CTRLS
+       /* VIDIOC_S_EXT_CTRLS, VIDIOC_TRY_EXT_CTRLS, VIDIOC_G_EXT_CTRLS */
+       static const struct strval32 ectrl_cmds[] = {
+               { ARG_STR(VIDIOC_S_EXT_CTRLS) },
+               { ARG_STR(VIDIOC_TRY_EXT_CTRLS) },
+               { ARG_STR(VIDIOC_G_EXT_CTRLS) },
+       };
+       /* static const struct strval32 ectrl_which = {
+       }; */
+
+       struct v4l2_ext_controls *ectrls = tail_alloc(sizeof(*ectrls));
+       /* struct v4l2_ext_control *ectrl = tail_alloc(sizeof(*ectrl) * 2); */
+
+       for (size_t i = 0; i < ARRAY_SIZE(ectrl_cmds); i++) {
+               fill_memory32(ectrls, sizeof(*ectrls));
+
+               ioctl(-1, ectrl_cmds[i].val, 0);
+               printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+                      sprintxlat(ectrl_cmds[i].str, ectrl_cmds[i].val, NULL),
+                      inject_retval);
+
+               ioctl(-1, ectrl_cmds[i].val, (char *) ectrls + 1);
+               printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+                      sprintxlat(ectrl_cmds[i].str, ectrl_cmds[i].val, NULL),
+                      (char *) ectrls + 1, inject_retval);
+       }
+
+#endif /* VIDIOC_S_EXT_CTRLS */
+
+
+#ifdef HAVE_STRUCT_V4L2_FRMSIZEENUM
+       /* VIDIOC_ENUM_FRAMESIZES */
+       static const struct strval32 frmsz_simple_types[] = {
+               { ARG_XLAT_UNKNOWN(0, "V4L2_FRMSIZE_TYPE_???") },
+               { ARG_XLAT_KNOWN(0x2, "V4L2_FRMSIZE_TYPE_CONTINUOUS") },
+               { ARG_XLAT_UNKNOWN(0x4, "V4L2_FRMSIZE_TYPE_???") },
+               { ARG_XLAT_UNKNOWN(0xdeadf157, "V4L2_FRMSIZE_TYPE_???") },
+       };
+
+       struct v4l2_frmsizeenum *fse = tail_alloc(sizeof(*fse));
+
+       ioctl(-1, VIDIOC_ENUM_FRAMESIZES, 0);
+       printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_ENUM_FRAMESIZES), inject_retval);
+
+       ioctl(-1, VIDIOC_ENUM_FRAMESIZES, (char *) fse + 1);
+       printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_ENUM_FRAMESIZES), (char *) fse + 1,
+              inject_retval);
+
+       fill_memory32(fse, sizeof(*fse));
+       fse->type = V4L2_FRMSIZE_TYPE_DISCRETE;
+
+       ioctl(-1, VIDIOC_ENUM_FRAMESIZES, fse);
+       printf("ioctl(-1, %s, {index=2158018784, pixel_format="
+              RAW("0x80a0c0e1")
+              NRAW("v4l2_fourcc('\\xe1', '\\xc0', '\\xa0', '\\x80')")
+              ", type=" XLAT_KNOWN(0x1, "V4L2_FRMSIZE_TYPE_DISCRETE")
+              ", discrete={width=2158018787, height=2158018788}"
+              "}) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_ENUM_FRAMESIZES), inject_retval);
+
+       fse->pixel_format = 0x5c22270d;
+       fse->type = V4L2_FRMSIZE_TYPE_STEPWISE;
+
+       ioctl(-1, VIDIOC_ENUM_FRAMESIZES, fse);
+       printf("ioctl(-1, %s, {index=2158018784, pixel_format="
+              RAW("0x5c22270d")
+              NRAW("v4l2_fourcc('\\x0d', '\\\'', '\"', '\\\\')")
+              ", type=" XLAT_KNOWN(0x3, "V4L2_FRMSIZE_TYPE_STEPWISE")
+              ", stepwise={min_width=2158018787, max_width=2158018788"
+              ", step_width=2158018789, min_height=2158018790"
+              ", max_height=2158018791, step_height=2158018792}"
+              "}) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_ENUM_FRAMESIZES), inject_retval);
+
+       for (size_t i = 0; i < ARRAY_SIZE(frmsz_simple_types); i++) {
+               fill_memory32(fse, sizeof(*fse));
+               fse->type = frmsz_simple_types[i].val;
+
+               ioctl(-1, VIDIOC_ENUM_FRAMESIZES, fse);
+               printf("ioctl(-1, %s, {index=2158018784, pixel_format="
+                      RAW("0x80a0c0e1")
+                      NRAW("v4l2_fourcc('\\xe1', '\\xc0', '\\xa0', '\\x80')")
+                      ", type=%s}) = %ld (INJECTED)\n",
+                      XLAT_STR(VIDIOC_ENUM_FRAMESIZES),
+                      frmsz_simple_types[i].str, inject_retval);
+
+       }
+#endif /* HAVE_STRUCT_V4L2_FRMSIZEENUM */
+
+
+#ifdef HAVE_STRUCT_V4L2_FRMIVALENUM
+       /* VIDIOC_ENUM_FRAMEINTERVALS */
+       static const struct strval32 frmival_simple_types[] = {
+               { ARG_XLAT_UNKNOWN(0, "V4L2_FRMIVAL_TYPE_???") },
+               { ARG_XLAT_UNKNOWN(0x4, "V4L2_FRMIVAL_TYPE_???") },
+               { ARG_XLAT_UNKNOWN(0xdeadf157, "V4L2_FRMIVAL_TYPE_???") },
+       };
+       static const struct strval32 frmival_step_types[] = {
+               { ARG_XLAT_KNOWN(0x2, "V4L2_FRMIVAL_TYPE_CONTINUOUS") },
+               { ARG_XLAT_KNOWN(0x3, "V4L2_FRMIVAL_TYPE_STEPWISE") },
+       };
+
+       struct v4l2_frmivalenum *fie = tail_alloc(sizeof(*fie));
+
+       ioctl(-1, VIDIOC_ENUM_FRAMEINTERVALS, 0);
+       printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_ENUM_FRAMEINTERVALS), inject_retval);
+
+       ioctl(-1, VIDIOC_ENUM_FRAMEINTERVALS, (char *) fie + 1);
+       printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_ENUM_FRAMEINTERVALS), (char *) fie + 1,
+              inject_retval);
+
+       fill_memory32(fie, sizeof(*fie));
+       fie->type = V4L2_FRMIVAL_TYPE_DISCRETE;
+
+       ioctl(-1, VIDIOC_ENUM_FRAMEINTERVALS, fie);
+       printf("ioctl(-1, %s, {index=2158018784, pixel_format="
+              RAW("0x80a0c0e1")
+              NRAW("v4l2_fourcc('\\xe1', '\\xc0', '\\xa0', '\\x80')")
+              ", width=2158018786, height=2158018787"
+              ", type=" XLAT_KNOWN(0x1, "V4L2_FRMIVAL_TYPE_DISCRETE")
+              ", discrete=2158018789/2158018790}) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_ENUM_FRAMEINTERVALS), inject_retval);
+
+       fie->pixel_format = 0x5c22270d;
+
+       for (size_t i = 0; i < ARRAY_SIZE(frmival_step_types); i++) {
+               fie->type = frmival_step_types[i].val;
+
+               ioctl(-1, VIDIOC_ENUM_FRAMEINTERVALS, fie);
+               printf("ioctl(-1, %s, {index=2158018784, pixel_format="
+                      RAW("0x5c22270d")
+                      NRAW("v4l2_fourcc('\\x0d', '\\\'', '\"', '\\\\')")
+                      ", width=2158018786, height=2158018787, type=%s"
+                      ", stepwise={min=2158018789/2158018790"
+                      ", max=2158018791/2158018792"
+                      ", step=2158018793/2158018794}}) = %ld (INJECTED)\n",
+                      XLAT_STR(VIDIOC_ENUM_FRAMEINTERVALS),
+                      frmival_step_types[i].str, inject_retval);
+       }
+
+       for (size_t i = 0; i < ARRAY_SIZE(frmival_simple_types); i++) {
+               fill_memory32(fie, sizeof(*fie));
+               fie->type = frmival_simple_types[i].val;
+
+               ioctl(-1, VIDIOC_ENUM_FRAMEINTERVALS, fie);
+               printf("ioctl(-1, %s, {index=2158018784, pixel_format="
+                      RAW("0x80a0c0e1")
+                      NRAW("v4l2_fourcc('\\xe1', '\\xc0', '\\xa0', '\\x80')")
+                      ", width=2158018786, height=2158018787, type=%s})"
+                      " = %ld (INJECTED)\n",
+                      XLAT_STR(VIDIOC_ENUM_FRAMEINTERVALS),
+                      frmival_simple_types[i].str, inject_retval);
+
+       }
+#endif /* HAVE_STRUCT_V4L2_FRMIVALENUM */
+
+
+#ifdef HAVE_STRUCT_V4L2_CREATE_BUFFERS
+       /* VIDIOC_CREATE_BUFS */
+       struct v4l2_create_buffers *cbuf = tail_alloc(sizeof(*cbuf));
+
+       fill_memory32(cbuf, sizeof(*cbuf));
+
+       ioctl(-1, VIDIOC_CREATE_BUFS, 0);
+       printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_CREATE_BUFS), inject_retval);
+
+       ioctl(-1, VIDIOC_CREATE_BUFS, (char *) cbuf + 1);
+       printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_CREATE_BUFS), (char *) cbuf + 1, inject_retval);
+
+       for (size_t i = 0; i < MAX(ARRAY_SIZE(buf_types),
+                                  ARRAY_SIZE(reqb_mems)); i++) {
+               cbuf->memory = reqb_mems[i % ARRAY_SIZE(reqb_mems)].val;
+               cbuf->format.type = buf_types[i % ARRAY_SIZE(buf_types)].val;
+               if (!fill_fmt(&cbuf->format))
+                       continue;
+
+               ioctl(-1, VIDIOC_CREATE_BUFS, cbuf);
+               printf("ioctl(-1, %s, {count=2158018785, memory=%s"
+                      ", format={type=%s",
+                      XLAT_STR(VIDIOC_CREATE_BUFS),
+                      reqb_mems[i % ARRAY_SIZE(reqb_mems)].str,
+                      buf_types[i % ARRAY_SIZE(buf_types)].str);
+               print_fmt(", ", &cbuf->format);
+               printf("}}) = %ld ({index=2158018784, count=2158018785})"
+                      " (INJECTED)\n", inject_retval);
+       }
+#endif /* HAVE_STRUCT_V4L2_CREATE_BUFFERS */
+
+       puts("+++ exited with 0 +++");
+
+       return 0;
+}
diff --git a/tests-mx32/ioctl_v4l2-success.gen.test b/tests-mx32/ioctl_v4l2-success.gen.test
new file mode 100755 (executable)
index 0000000..9037649
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2-success +ioctl-success.sh -a29); do not edit.
+set -- -a29
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests-mx32/ioctl_v4l2-v-Xabbrev.c b/tests-mx32/ioctl_v4l2-v-Xabbrev.c
new file mode 100644 (file)
index 0000000..3e40ce3
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_ABBREV 1
+#include "ioctl_v4l2-v.c"
diff --git a/tests-mx32/ioctl_v4l2-v-Xabbrev.gen.test b/tests-mx32/ioctl_v4l2-v-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..64f2eac
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2-v-Xabbrev +ioctl.test -v -Xabbrev); do not edit.
+set -- -v -Xabbrev
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_v4l2-v-Xraw.c b/tests-mx32/ioctl_v4l2-v-Xraw.c
new file mode 100644 (file)
index 0000000..42d6610
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "ioctl_v4l2-v.c"
diff --git a/tests-mx32/ioctl_v4l2-v-Xraw.gen.test b/tests-mx32/ioctl_v4l2-v-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..8fb5883
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2-v-Xraw +ioctl.test -v -Xraw); do not edit.
+set -- -v -Xraw
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_v4l2-v-Xverbose.c b/tests-mx32/ioctl_v4l2-v-Xverbose.c
new file mode 100644 (file)
index 0000000..6230f9a
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "ioctl_v4l2-v.c"
diff --git a/tests-mx32/ioctl_v4l2-v-Xverbose.gen.test b/tests-mx32/ioctl_v4l2-v-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..72dcde6
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2-v-Xverbose +ioctl.test -v -Xverbose); do not edit.
+set -- -v -Xverbose
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_v4l2-v.c b/tests-mx32/ioctl_v4l2-v.c
new file mode 100644 (file)
index 0000000..dcb6c24
--- /dev/null
@@ -0,0 +1,3 @@
+/* This file is part of ioctl_v4l2-v strace test. */
+#define VERBOSE 1
+#include "ioctl_v4l2.c"
diff --git a/tests-mx32/ioctl_v4l2-v.gen.test b/tests-mx32/ioctl_v4l2-v.gen.test
new file mode 100755 (executable)
index 0000000..c5fe341
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2-v +ioctl.test -v); do not edit.
+set -- -v
+. "${srcdir=.}/ioctl.test"
index 54e9ee7c6bd933dc52873e6c111426211d104de3..c52798a4cbad0bdc2d9bd1396af9b815ddb07200 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -8,11 +8,23 @@
 
 #include "tests.h"
 #include <errno.h>
+#include <stdint.h>
 #include <stdio.h>
 #include <string.h>
 #include <sys/ioctl.h>
-#include <linux/types.h>
-#include <linux/videodev2.h>
+#include "kernel_v4l2_types.h"
+
+#define XLAT_MACROS_ONLY
+# include "xlat/v4l2_ioctl_cmds.h"
+#undef XLAT_MACROS_ONLY
+
+#ifndef V4L2_CTRL_FLAG_NEXT_CTRL
+# define V4L2_CTRL_FLAG_NEXT_CTRL 0x80000000
+#endif
+
+#ifndef V4L2_CTRL_CLASS_DETECT
+# define V4L2_CTRL_CLASS_DETECT 0x00a30000
+#endif
 
 #define cc0(arg) ((unsigned int) (unsigned char) (arg))
 #define cc1(arg) ((unsigned int) (unsigned char) ((unsigned int) (arg) >> 8))
@@ -70,8 +82,21 @@ init_v4l2_format(struct v4l2_format *const f,
                     i < ARRAY_SIZE(f->fmt.pix_mp.plane_fmt);
                     i++) {
                        cur_pix[i].sizeimage = 0x1e3c531c | i;
-                       cur_pix[i].bytesperline = 0xa983d721 | i;
+                       if (sizeof(cur_pix[i].bytesperline) ==
+                           sizeof(uint32_t)) {
+                               cur_pix[i].bytesperline = 0xa983d721 | i;
+                       } else {
+# if WORDS_BIGENDIAN
+                               cur_pix[i].bytesperline = 0xa983;
+                               cur_pix[i].reserved[0] = 0xd721 | i;
+# else
+                               cur_pix[i].bytesperline = 0xd721 | i;
+                               cur_pix[i].reserved[0] = 0xa983;
+# endif
+                       }
                }
+               if (buf_type == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE)
+                       f->fmt.pix_mp.num_planes = 1;
                break;
        }
 #endif
@@ -85,10 +110,10 @@ init_v4l2_format(struct v4l2_format *const f,
                f->fmt.win.w.height = 0xbbd886c8;
                f->fmt.win.field = V4L2_FIELD_ANY;
                f->fmt.win.chromakey = 0xdb1f991f;
-               f->fmt.win.clipcount = 2;
+               f->fmt.win.clipcount =
+                       buf_type == V4L2_BUF_TYPE_VIDEO_OVERLAY ? 3 : 2;
                f->fmt.win.clips =
-                       tail_alloc(sizeof(*f->fmt.win.clips) *
-                       f->fmt.win.clipcount);
+                       tail_alloc(sizeof(*f->fmt.win.clips) * 2);
                f->fmt.win.clips[0].c.left = 0x3313d36e;
                f->fmt.win.clips[0].c.top = 0xcdffe510;
                f->fmt.win.clips[0].c.width = 0x2064f3a8;
@@ -101,6 +126,9 @@ init_v4l2_format(struct v4l2_format *const f,
                f->fmt.win.bitmap = (void *) -2UL;
 #ifdef HAVE_STRUCT_V4L2_WINDOW_GLOBAL_ALPHA
                f->fmt.win.global_alpha = 0xce;
+#else
+               ((uint8_t *) &f->fmt.win)[offsetofend(struct v4l2_window,
+                                                     bitmap)] = 0xce;
 #endif
                break;
        case V4L2_BUF_TYPE_VBI_CAPTURE:
@@ -138,7 +166,12 @@ init_v4l2_format(struct v4l2_format *const f,
        case V4L2_BUF_TYPE_SDR_OUTPUT:
                f->fmt.sdr.pixelformat = sf_magic;
 # ifdef HAVE_STRUCT_V4L2_SDR_FORMAT_BUFFERSIZE
-               f->fmt.sdr.buffersize = 0x25afabfb;
+               if (sizeof(f->fmt.sdr.buffersize == sizeof(uint32_t)))
+                       f->fmt.sdr.buffersize = 0x25afabfb;
+               else
+                       ((uint32_t *) &f->fmt.sdr)[1] = 0x25afabfb;
+# else
+               ((uint32_t *) &f->fmt.sdr)[1] = 0x25afabfb;
 # endif
                break;
 #endif
@@ -155,8 +188,8 @@ init_v4l2_format(struct v4l2_format *const f,
 
 static void
 dprint_ioctl_v4l2(struct v4l2_format *const f,
-                 const char *request, const unsigned int buf_type,
-                 const char *buf_type_string)
+                 XLAT_SEL(unsigned reqval, const char *reqstr),
+                 const unsigned int buf_type, const char *buf_type_string)
 {
        int saved_errno;
 
@@ -164,12 +197,16 @@ dprint_ioctl_v4l2(struct v4l2_format *const f,
        case V4L2_BUF_TYPE_VIDEO_CAPTURE:
        case V4L2_BUF_TYPE_VIDEO_OUTPUT:
                saved_errno = errno;
-               printf("ioctl(-1, %s, {type=%s"
+               printf("ioctl(-1, " XLAT_FMT ", {type=" XLAT_FMT
                       ", fmt.pix={width=%u, height=%u, pixelformat=",
-                      request,
-                      buf_type_string,
+                      XLAT_SEL(reqval, reqstr),
+                      XLAT_SEL(buf_type, buf_type_string),
                       f->fmt.pix.width, f->fmt.pix.height);
 
+#if XLAT_RAW
+               printf("%#x", buf_type == V4L2_BUF_TYPE_VIDEO_CAPTURE
+                             ? magic : pf_magic);
+#else /* !XLAT_RAW */
                if (buf_type == V4L2_BUF_TYPE_VIDEO_CAPTURE)
                        printf("v4l2_fourcc('\\x%x', '\\x%x', '\\x%x', '\\x%x')",
                               cc0(magic), cc1(magic), cc2(magic), cc3(magic));
@@ -178,12 +215,15 @@ dprint_ioctl_v4l2(struct v4l2_format *const f,
                               "/* V4L2_PIX_FMT_SPCA508 */",
                               cc0(pf_magic), cc1(pf_magic), cc2(pf_magic),
                               cc3(pf_magic));
+#endif /* XLAT_RAW */
 
                errno = saved_errno;
-               printf(", field=V4L2_FIELD_NONE, bytesperline=%u, sizeimage=%u"
-                      ", colorspace=V4L2_COLORSPACE_JPEG}}) = -1 EBADF (%m)\n",
+               printf(", field=" XLAT_FMT ", bytesperline=%u, sizeimage=%u"
+                      ", colorspace=" XLAT_FMT "}}) = -1 EBADF (%m)\n",
+                      XLAT_ARGS(V4L2_FIELD_NONE),
                       f->fmt.pix.bytesperline,
-                      f->fmt.pix.sizeimage);
+                      f->fmt.pix.sizeimage,
+                      XLAT_ARGS(V4L2_COLORSPACE_JPEG));
                break;
 #if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
        case V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE:
@@ -191,13 +231,17 @@ dprint_ioctl_v4l2(struct v4l2_format *const f,
                unsigned int i;
 
                saved_errno = errno;
-               printf("ioctl(-1, %s"
-                      ", {type=%s"
+               printf("ioctl(-1, " XLAT_FMT
+                      ", {type=" XLAT_FMT
                       ", fmt.pix_mp={width=%u, height=%u, pixelformat=",
-                      request,
-                      buf_type_string,
+                      XLAT_SEL(reqval, reqstr),
+                      XLAT_SEL(buf_type, buf_type_string),
                       f->fmt.pix_mp.width, f->fmt.pix_mp.height);
 
+# if XLAT_RAW
+               printf("%#x", buf_type == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
+                             ? magic : pf_magic);
+# else /* !XLAT_RAW */
                if (buf_type == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE)
                        printf("v4l2_fourcc('\\x%x', '\\x%x', '\\x%x', '\\x%x')",
                               cc0(magic), cc1(magic), cc2(magic), cc3(magic));
@@ -206,21 +250,35 @@ dprint_ioctl_v4l2(struct v4l2_format *const f,
                               "/* V4L2_PIX_FMT_SPCA508 */",
                               cc0(pf_magic), cc1(pf_magic), cc2(pf_magic),
                               cc3(pf_magic));
+# endif /* XLAT_RAW */
 
-               printf(", field=V4L2_FIELD_NONE, colorspace="
-                      "V4L2_COLORSPACE_JPEG, plane_fmt=[");
+               printf(", field=" XLAT_FMT ", colorspace=" XLAT_FMT
+                      ", plane_fmt=[",
+                      XLAT_ARGS(V4L2_FIELD_NONE),
+                      XLAT_ARGS(V4L2_COLORSPACE_JPEG));
                for (i = 0;
-                    i < ARRAY_SIZE(f->fmt.pix_mp.plane_fmt);
+                    i < (buf_type == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
+                         ? 1 : ARRAY_SIZE(f->fmt.pix_mp.plane_fmt));
                     ++i) {
                        if (i)
                                printf(", ");
                        printf("{sizeimage=%u, bytesperline=%u}",
                        f->fmt.pix_mp.plane_fmt[i].sizeimage,
-                       f->fmt.pix_mp.plane_fmt[i].bytesperline);
+                       sizeof(f->fmt.pix_mp.plane_fmt[i].bytesperline) ==
+                       sizeof(uint32_t)
+                       ? f->fmt.pix_mp.plane_fmt[i].bytesperline :
+# if WORDS_BIGENDIAN
+                       (f->fmt.pix_mp.plane_fmt[i].bytesperline << 16) |
+                       f->fmt.pix_mp.plane_fmt[i].reserved[0]
+# else
+                       f->fmt.pix_mp.plane_fmt[i].bytesperline |
+                       (f->fmt.pix_mp.plane_fmt[i].reserved[0] << 16)
+# endif
+                       );
                }
                errno = saved_errno;
                printf("], num_planes=%u}}) = -1 EBADF (%m)\n",
-               f->fmt.pix_mp.num_planes);
+                      f->fmt.pix_mp.num_planes);
                break;
        }
 #endif
@@ -228,20 +286,17 @@ dprint_ioctl_v4l2(struct v4l2_format *const f,
        case V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY:
 #endif
        case V4L2_BUF_TYPE_VIDEO_OVERLAY:
-               printf("ioctl(-1, %s, {type=%s"
+               saved_errno = errno;
+               printf("ioctl(-1, " XLAT_FMT ", {type=" XLAT_FMT
                       ", fmt.win={left=%d, top=%d, width=%u, height=%u"
-                      ", field=V4L2_FIELD_ANY, chromakey=%#x, clips="
+                      ", field=" XLAT_FMT ", chromakey=%#x, clips="
                       "[{left=%d, top=%d, width=%u, height=%u}, "
-                      "{left=%d, top=%d, width=%u, height=%u}]"
-                      ", clipcount=%u, bitmap=%p"
-#ifdef HAVE_STRUCT_V4L2_WINDOW_GLOBAL_ALPHA
-                      ", global_alpha=%#x"
-#endif
-                      "}}) = -1 EBADF (%m)\n",
-                      request,
-                      buf_type_string,
+                      "{left=%d, top=%d, width=%u, height=%u}",
+                      XLAT_SEL(reqval, reqstr),
+                      XLAT_SEL(buf_type, buf_type_string),
                       f->fmt.win.w.left, f->fmt.win.w.top,
                       f->fmt.win.w.width, f->fmt.win.w.height,
+                      XLAT_ARGS(V4L2_FIELD_ANY),
                       f->fmt.win.chromakey,
                       f->fmt.win.clips[0].c.left,
                       f->fmt.win.clips[0].c.top,
@@ -250,24 +305,37 @@ dprint_ioctl_v4l2(struct v4l2_format *const f,
                       f->fmt.win.clips[1].c.left,
                       f->fmt.win.clips[1].c.top,
                       f->fmt.win.clips[1].c.width,
-                      f->fmt.win.clips[1].c.height,
-                      f->fmt.win.clipcount, f->fmt.win.bitmap
+                      f->fmt.win.clips[1].c.height);
+               if (f->fmt.win.clipcount > 2)
+                       printf(", ... /* %p */", f->fmt.win.clips + 2);
+               errno = saved_errno;
+               printf("], clipcount=%u, bitmap=%p"
+                      ", global_alpha=%#x"
+                      "}}) = -1 EBADF (%m)\n",
+                      f->fmt.win.clipcount, f->fmt.win.bitmap,
 #ifdef HAVE_STRUCT_V4L2_WINDOW_GLOBAL_ALPHA
-                      , f->fmt.win.global_alpha
+                      f->fmt.win.global_alpha
+#else
+                      ((uint8_t *) &f->fmt.win)[offsetofend(struct v4l2_window,
+                                                            bitmap)]
 #endif
                       );
                break;
        case V4L2_BUF_TYPE_VBI_CAPTURE:
        case V4L2_BUF_TYPE_VBI_OUTPUT:
                saved_errno = errno;
-               printf("ioctl(-1, %s, {type=%s"
+               printf("ioctl(-1, " XLAT_FMT ", {type=" XLAT_FMT
                       ", fmt.vbi={sampling_rate=%u, offset=%u"
                       ", samples_per_line=%u, sample_format=",
-                      request,
-                      buf_type_string,
+                      XLAT_SEL(reqval, reqstr),
+                      XLAT_SEL(buf_type, buf_type_string),
                       f->fmt.vbi.sampling_rate, f->fmt.vbi.offset,
                       f->fmt.vbi.samples_per_line);
 
+#if XLAT_RAW
+               printf("%#x", buf_type == V4L2_BUF_TYPE_VBI_CAPTURE
+                             ? magic : pf_magic);
+#else /* !XLAT_RAW */
                if (buf_type == V4L2_BUF_TYPE_VBI_CAPTURE)
                        printf("v4l2_fourcc('\\x%x', '\\x%x', '\\x%x', '\\x%x')",
                               cc0(magic), cc1(magic), cc2(magic), cc3(magic));
@@ -276,24 +344,27 @@ dprint_ioctl_v4l2(struct v4l2_format *const f,
                               "/* V4L2_PIX_FMT_SPCA508 */",
                               cc0(pf_magic), cc1(pf_magic), cc2(pf_magic),
                               cc3(pf_magic));
+#endif /* XLAT_RAW */
 
                errno = saved_errno;
-               printf(", start=[%u, %u], count=[%u, %u]"
-                      ", flags=V4L2_VBI_INTERLACED}})"
+               printf(", start=[%d, %d], count=[%u, %u]"
+                      ", flags=" XLAT_FMT "}})"
                       " = -1 EBADF (%m)\n",
                       f->fmt.vbi.start[0], f->fmt.vbi.start[1],
-                      f->fmt.vbi.count[0], f->fmt.vbi.count[1]);
+                      f->fmt.vbi.count[0], f->fmt.vbi.count[1],
+                      XLAT_ARGS(V4L2_VBI_INTERLACED));
                break;
 #if HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE
        case V4L2_BUF_TYPE_SLICED_VBI_CAPTURE:
        case V4L2_BUF_TYPE_SLICED_VBI_OUTPUT: {
                unsigned int i, j;
 
-               printf("ioctl(-1, %s, {type=%s"
-                      ", fmt.sliced={service_set=V4L2_SLICED_VPS"
+               printf("ioctl(-1, " XLAT_FMT ", {type=" XLAT_FMT
+                      ", fmt.sliced={service_set=" XLAT_FMT
                       ", io_size=%u, service_lines=[",
-                      request,
-                      buf_type_string,
+                      XLAT_SEL(reqval, reqstr),
+                      XLAT_SEL(buf_type, buf_type_string),
+                      XLAT_ARGS(V4L2_SLICED_VPS),
                       f->fmt.sliced.io_size);
                for (i = 0;
                     i < ARRAY_SIZE(f->fmt.sliced.service_lines);
@@ -321,30 +392,38 @@ dprint_ioctl_v4l2(struct v4l2_format *const f,
 #if HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE
        case V4L2_BUF_TYPE_SDR_CAPTURE:
                saved_errno = errno;
-               printf("ioctl(-1, %s, {type=%s"
+               printf("ioctl(-1, " XLAT_FMT ", {type=" XLAT_FMT
                       ", fmt.sdr={pixelformat=",
-                      request,
-                      buf_type_string);
+                      XLAT_SEL(reqval, reqstr),
+                      XLAT_SEL(buf_type, buf_type_string));
 
+# if XLAT_RAW
+               if (buf_type == V4L2_BUF_TYPE_SDR_CAPTURE)
+                       printf("%#x", magic);
+#  if HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT
+               else
+                       printf("%#x", sf_magic);
+#  endif
+# else /* !XLAT_RAW */
                if (buf_type == V4L2_BUF_TYPE_SDR_CAPTURE)
                        printf("v4l2_fourcc('\\x%x', '\\x%x', '\\x%x', '\\x%x')",
                               cc0(magic), cc1(magic), cc2(magic), cc3(magic));
-# if HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT
+#  if HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT
                else
                        printf("v4l2_fourcc('%c', '%c', '%c', '%c') "
                               "/* V4L2_SDR_FMT_RU12LE */",
                               cc0(sf_magic), cc1(sf_magic), cc2(sf_magic),
                               cc3(sf_magic));
-# endif
+#  endif
+# endif /* XLAT_RAW */
 
                errno = saved_errno;
-               printf(
-# ifdef HAVE_STRUCT_V4L2_SDR_FORMAT_BUFFERSIZE
-                      ", buffersize=%u"
-# endif
-                      "}}) = -1 EBADF (%m)\n"
+               printf(", buffersize=%u}}) = -1 EBADF (%m)\n"
 # ifdef HAVE_STRUCT_V4L2_SDR_FORMAT_BUFFERSIZE
-                      , f->fmt.sdr.buffersize
+                      , sizeof(f->fmt.sdr.buffersize == sizeof(uint32_t))
+                       ? f->fmt.sdr.buffersize : ((uint32_t *) &f->fmt.sdr)[1]
+# else
+                      , ((uint32_t *) &f->fmt.sdr)[1]
 # endif
                       );
                break;
@@ -352,7 +431,8 @@ dprint_ioctl_v4l2(struct v4l2_format *const f,
        }
 }
 #define print_ioctl_v4l2(v4l2_format, request, buf_type)       \
-       dprint_ioctl_v4l2((v4l2_format), (request), (buf_type), #buf_type)
+       dprint_ioctl_v4l2((v4l2_format), XLAT_SEL(request, #request), \
+                         (buf_type), #buf_type)
 
 int
 main(void)
@@ -364,267 +444,559 @@ main(void)
 
        unsigned char cc[sizeof(int)] = { 'A', '\'', '\\', '\xfa' };
 
+       /* Unknown */
+       static const struct {
+               uint32_t flags;
+               const char *str;
+       } cmd_flags[] = {
+               { ARG_STR(_IOC_NONE) },
+               { ARG_STR(_IOC_READ) },
+               { ARG_STR(_IOC_WRITE) },
+               { ARG_STR(_IOC_READ|_IOC_WRITE) },
+       };
+       static const uint8_t unknown_cmds[] = {
+               1, 3, 6 /* VIDIOC_G_MPEGCOMP */, 7 /* VIDIOC_S_MPEGCOMP */,
+               12, 13, 20, 31, 32, 35, 42, 43, 44, 45, 51, 52, 53,
+               81 /* VIDIOC_G_CHIP_IDENT_OLD */,
+               83 /* VIDIOC_ENUM_DV_PRESETS */, 84 /* VIDIOC_S_DV_PRESET */,
+               85 /* VIDIOC_G_DV_PRESET */, 86 /* VIDIOC_QUERY_DV_PRESET */,
+               104 /* 103 is the last existing */, 255
+       };
+
+       for (size_t i = 0; i < ARRAY_SIZE(unknown_cmds); i++) {
+               /* Trying to hit common argument sizes */
+               for (size_t j = 0; j < 256; j += 4) {
+                       for (size_t k = 0; k < ARRAY_SIZE(cmd_flags); k++) {
+                               uint32_t ioc = _IOC(cmd_flags[k].flags, 'V',
+                                                   unknown_cmds[i], j);
+                               /*
+                                * Conflicts with VT* and VBG* ioctls
+                                * that happen to also use 'V' command type.
+                                */
+                               switch (ioc) {
+                               /* VT_GETMODE */
+                               case _IOC(_IOC_NONE, 'V', 1, 0):
+                               /* VT_GETSTATE */
+                               case _IOC(_IOC_NONE, 'V', 3, 0):
+                               /* VBG_IOCTL_VMMDEV_REQUEST_BIG */
+                               case _IOC(_IOC_READ|_IOC_WRITE, 'V', 3, 0):
+                               /* VT_ACTIVATE */
+                               case _IOC(_IOC_NONE, 'V', 6, 0):
+                               /* VT_WAITACTIVE */
+                               case _IOC(_IOC_NONE, 'V', 7, 0):
+                               /* VT_UNLOCKSWITCH */
+                               case _IOC(_IOC_NONE, 'V', 12, 0):
+                               /* VBG_IOCTL_CHANGE_FILTER_MASK */
+                               case _IOC(_IOC_READ|_IOC_WRITE, 'V', 12, 32):
+                               /* VT_GETHIFONTMASK */
+                               case _IOC(_IOC_NONE, 'V', 13, 0):
+                                       continue;
+                               /* VBG_IOCTL_ACQUIRE_GUEST_CAPABILITIES */
+                               case _IOC(_IOC_READ|_IOC_WRITE, 'V', 13, 36):
+                                       continue;
+                               }
+
+                               ioctl(-1, ioc, 0);
+                               printf("ioctl(-1, " NABBR("%#x") VERB(" /* ")
+                                      NRAW("_IOC(%s, 0x56, %#x, %#zx)")
+                                      VERB(" */") ", 0) = -1 EBADF (%m)\n"
+#if XLAT_RAW || XLAT_VERBOSE
+                                      , ioc
+#endif
+#if !XLAT_RAW
+                                      , cmd_flags[k].str, unknown_cmds[i], j
+#endif
+                                      );
+
+                               ioctl(-1, ioc,
+                                     (unsigned long) 0xbadc0deddeadc0deULL);
+                               printf("ioctl(-1, " NABBR("%#x") VERB(" /* ")
+                                      NRAW("_IOC(%s, 0x56, %#x, %#zx)")
+                                      VERB(" */") ", %#lx) = -1 EBADF (%m)\n",
+#if XLAT_RAW || XLAT_VERBOSE
+                                      ioc,
+#endif
+#if !XLAT_RAW
+                                      cmd_flags[k].str, unknown_cmds[i], j,
+#endif
+                                      (unsigned long) 0xbadc0deddeadc0deULL);
+                       }
+               }
+       }
+
+       /* Decoding is not supported */
+       static const struct {
+               uint32_t cmd;
+               const char *str;
+       } unsupp_cmds[] = {
+               { ARG_STR(VIDIOC_OVERLAY) },
+#ifdef VIDIOC_EXPBUF
+               { ARG_STR(VIDIOC_EXPBUF) },
+#endif
+               { ARG_STR(VIDIOC_G_AUDIO) },
+               { ARG_STR(VIDIOC_S_AUDIO) },
+               { ARG_STR(VIDIOC_QUERYMENU) },
+#ifdef VIDIOC_G_EDID
+               { ARG_STR(VIDIOC_G_EDID) },
+#endif
+#ifdef VIDIOC_S_EDID
+               { ARG_STR(VIDIOC_S_EDID) },
+#endif
+               { ARG_STR(VIDIOC_G_OUTPUT) },
+               { ARG_STR(VIDIOC_S_OUTPUT) },
+               { ARG_STR(VIDIOC_ENUMOUTPUT) },
+               { ARG_STR(VIDIOC_G_AUDOUT) },
+               { ARG_STR(VIDIOC_S_AUDOUT) },
+               { ARG_STR(VIDIOC_G_MODULATOR) },
+               { ARG_STR(VIDIOC_S_MODULATOR) },
+               { ARG_STR(VIDIOC_G_FREQUENCY) },
+               { ARG_STR(VIDIOC_S_FREQUENCY) },
+               { ARG_STR(VIDIOC_G_JPEGCOMP) },
+               { ARG_STR(VIDIOC_S_JPEGCOMP) },
+               { ARG_STR(VIDIOC_QUERYSTD) },
+               { ARG_STR(VIDIOC_ENUMAUDIO) },
+               { ARG_STR(VIDIOC_ENUMAUDOUT) },
+               { ARG_STR(VIDIOC_G_PRIORITY) },
+               { ARG_STR(VIDIOC_S_PRIORITY) },
+               { ARG_STR(VIDIOC_G_SLICED_VBI_CAP) },
+               { ARG_STR(VIDIOC_LOG_STATUS) },
+#ifdef VIDIOC_G_ENC_INDEX
+               { ARG_STR(VIDIOC_G_ENC_INDEX) },
+#endif
+#ifdef VIDIOC_ENCODER_CMD
+               { ARG_STR(VIDIOC_ENCODER_CMD) },
+#endif
+#ifdef VIDIOC_TRY_ENCODER_CMD
+               { ARG_STR(VIDIOC_TRY_ENCODER_CMD) },
+#endif
+#ifdef VIDIOC_DBG_S_REGISTER
+               { ARG_STR(VIDIOC_DBG_S_REGISTER) },
+#endif
+#ifdef VIDIOC_DBG_G_REGISTER
+               { ARG_STR(VIDIOC_DBG_G_REGISTER) },
+#endif
+#ifdef VIDIOC_G_CHIP_IDENT_OLD
+               { ARG_STR(VIDIOC_G_CHIP_IDENT_OLD) },
+#endif
+#ifdef VIDIOC_DBG_G_CHIP_IDENT
+               /* Broken on RHEL 6/7 */
+               /* { ARG_STR(VIDIOC_DBG_G_CHIP_IDENT) }, */
+#endif
+#ifdef VIDIOC_S_HW_FREQ_SEEK
+               { ARG_STR(VIDIOC_S_HW_FREQ_SEEK) },
+#endif
+#ifdef VIDIOC_ENUM_DV_PRESETS
+               /* Next 4 are broken on RHEL 6 */
+               /* { ARG_STR(VIDIOC_ENUM_DV_PRESETS) }, */
+#endif
+#ifdef VIDIOC_S_DV_PRESET
+               /* { ARG_STR(VIDIOC_S_DV_PRESET) }, */
+#endif
+#ifdef VIDIOC_G_DV_PRESET
+               /* { ARG_STR(VIDIOC_G_DV_PRESET) }, */
+#endif
+#ifdef VIDIOC_QUERY_DV_PRESET
+               /* { ARG_STR(VIDIOC_QUERY_DV_PRESET) }, */
+#endif
+#ifdef VIDIOC_S_DV_TIMINGS
+               { ARG_STR(VIDIOC_S_DV_TIMINGS) },
+#endif
+#ifdef VIDIOC_G_DV_TIMINGS
+               { ARG_STR(VIDIOC_G_DV_TIMINGS) },
+#endif
+#ifdef VIDIOC_DQEVENT
+               { ARG_STR(VIDIOC_DQEVENT) },
+#endif
+#ifdef VIDIOC_SUBSCRIBE_EVENT
+               { ARG_STR(VIDIOC_SUBSCRIBE_EVENT) },
+#endif
+#ifdef VIDIOC_UNSUBSCRIBE_EVENT
+               { ARG_STR(VIDIOC_UNSUBSCRIBE_EVENT) },
+#endif
+#ifdef VIDIOC_PREPARE_BUF
+               { ARG_STR(VIDIOC_PREPARE_BUF) },
+#endif
+#ifdef VIDIOC_G_SELECTION
+               { ARG_STR(VIDIOC_G_SELECTION) },
+#endif
+#ifdef VIDIOC_S_SELECTION
+               { ARG_STR(VIDIOC_S_SELECTION) },
+#endif
+#ifdef VIDIOC_DECODER_CMD
+               { ARG_STR(VIDIOC_DECODER_CMD) },
+#endif
+#ifdef VIDIOC_TRY_DECODER_CMD
+               { ARG_STR(VIDIOC_TRY_DECODER_CMD) },
+#endif
+#ifdef VIDIOC_ENUM_DV_TIMINGS
+               { ARG_STR(VIDIOC_ENUM_DV_TIMINGS) },
+#endif
+#ifdef VIDIOC_QUERY_DV_TIMINGS
+               { ARG_STR(VIDIOC_QUERY_DV_TIMINGS) },
+#endif
+#ifdef VIDIOC_DV_TIMINGS_CAP
+               { ARG_STR(VIDIOC_DV_TIMINGS_CAP) },
+#endif
+#ifdef VIDIOC_ENUM_FREQ_BANDS
+               { ARG_STR(VIDIOC_ENUM_FREQ_BANDS) },
+#endif
+#ifdef VIDIOC_DBG_G_CHIP_INFO
+               { ARG_STR(VIDIOC_DBG_G_CHIP_INFO) },
+#endif
+#ifdef VIDIOC_QUERY_EXT_CTRL
+               { ARG_STR(VIDIOC_QUERY_EXT_CTRL) },
+#endif
+#ifdef VIDIOC_SUBDEV_ENUM_MBUS_CODE
+               { ARG_STR(VIDIOC_SUBDEV_ENUM_MBUS_CODE) },
+#endif
+#ifdef VIDIOC_SUBDEV_G_FMT
+               { ARG_STR(VIDIOC_SUBDEV_G_FMT) },
+#endif
+#ifdef VIDIOC_SUBDEV_S_FMT
+               { ARG_STR(VIDIOC_SUBDEV_S_FMT) },
+#endif
+#ifdef VIDIOC_SUBDEV_G_FRAME_INTERVAL
+               { ARG_STR(VIDIOC_SUBDEV_G_FRAME_INTERVAL) },
+#endif
+#ifdef VIDIOC_SUBDEV_S_FRAME_INTERVAL
+               { ARG_STR(VIDIOC_SUBDEV_S_FRAME_INTERVAL) },
+#endif
+#ifdef VIDIOC_SUBDEV_G_CROP
+               { ARG_STR(VIDIOC_SUBDEV_G_CROP) },
+#endif
+#ifdef VIDIOC_SUBDEV_S_CROP
+               { ARG_STR(VIDIOC_SUBDEV_S_CROP) },
+#endif
+#ifdef VIDIOC_SUBDEV_G_SELECTION
+               { ARG_STR(VIDIOC_SUBDEV_G_SELECTION) },
+#endif
+#ifdef VIDIOC_SUBDEV_S_SELECTION
+               { ARG_STR(VIDIOC_SUBDEV_S_SELECTION) },
+#endif
+#ifdef VIDIOC_SUBDEV_ENUM_FRAME_SIZE
+               { ARG_STR(VIDIOC_SUBDEV_ENUM_FRAME_SIZE) },
+#endif
+#ifdef VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL
+               { ARG_STR(VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL) },
+#endif
+       };
+
+       for (size_t i = 0; i < ARRAY_SIZE(unsupp_cmds); i++) {
+               switch (unsupp_cmds[i].cmd) {
+               /*
+                * VIDIOC_G_SLICED_VBI_CAP macro has been changed from
+                * IOR to IOWR in Linux v2.6.19-rc1~643^2~37, skip it.
+                */
+               case _IOR('V', 69, struct v4l2_sliced_vbi_cap):
+                       continue;
+               }
+
+               ioctl(-1, unsupp_cmds[i].cmd, 0);
+               printf("ioctl(-1, " XLAT_FMT ", 0) = -1 EBADF (%m)\n",
+                      XLAT_SEL(unsupp_cmds[i].cmd, unsupp_cmds[i].str));
+
+               ioctl(-1, unsupp_cmds[i].cmd,
+                     (unsigned long) 0xbadc0deddeadc0deULL);
+               printf("ioctl(-1, " XLAT_FMT ", %#lx) = -1 EBADF (%m)\n",
+                      XLAT_SEL(unsupp_cmds[i].cmd, unsupp_cmds[i].str),
+                      (unsigned long) 0xbadc0deddeadc0deULL);
+       }
+
        /* VIDIOC_QUERYCAP */
        ioctl(-1, VIDIOC_QUERYCAP, 0);
-       printf("ioctl(-1, VIDIOC_QUERYCAP, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_QUERYCAP));
 
        ioctl(-1, VIDIOC_QUERYCAP, page);
-       printf("ioctl(-1, VIDIOC_QUERYCAP, %p) = -1 EBADF (%m)\n", page);
+       printf("ioctl(-1, %s, %p) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_QUERYCAP), page);
 
        /* VIDIOC_ENUM_FMT */
        ioctl(-1, VIDIOC_ENUM_FMT, 0);
-       printf("ioctl(-1, VIDIOC_ENUM_FMT, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_ENUM_FMT));
 
        TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_fmtdesc, p_fmtdesc);
        p_fmtdesc->index = magic;
        p_fmtdesc->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
        ioctl(-1, VIDIOC_ENUM_FMT, p_fmtdesc);
-       printf("ioctl(-1, VIDIOC_ENUM_FMT, {index=%u"
-              ", type=V4L2_BUF_TYPE_VIDEO_CAPTURE}) = -1 EBADF (%m)\n",
-              p_fmtdesc->index);
+       printf("ioctl(-1, %s, {index=%u, type=" XLAT_FMT
+              "}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_ENUM_FMT), p_fmtdesc->index,
+              XLAT_ARGS(V4L2_BUF_TYPE_VIDEO_CAPTURE));
 
        /* VIDIOC_G_FMT */
        ioctl(-1, VIDIOC_G_FMT, 0);
-       printf("ioctl(-1, VIDIOC_G_FMT, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_FMT));
 
        TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_format, p_format);
 
        p_format->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
        ioctl(-1, VIDIOC_G_FMT, p_format);
-       printf("ioctl(-1, VIDIOC_G_FMT"
-              ", {type=V4L2_BUF_TYPE_VIDEO_CAPTURE}) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, {type=" XLAT_FMT "}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_FMT),
+              XLAT_ARGS(V4L2_BUF_TYPE_VIDEO_CAPTURE));
 #if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
        p_format->type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
        ioctl(-1, VIDIOC_G_FMT, p_format);
-       printf("ioctl(-1, VIDIOC_G_FMT"
-              ", {type=V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE}) ="
-              " -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, {type=" XLAT_FMT "}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_FMT),
+              XLAT_ARGS(V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE));
 #endif
 #if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY
        p_format->type = V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY;
        ioctl(-1, VIDIOC_G_FMT, p_format);
-       printf("ioctl(-1, VIDIOC_G_FMT"
-              ", {type=V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY}) ="
-              " -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, {type=" XLAT_FMT "}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_FMT),
+              XLAT_ARGS(V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY));
 #endif
        p_format->type = V4L2_BUF_TYPE_VIDEO_OVERLAY;
        ioctl(-1, VIDIOC_G_FMT, p_format);
-       printf("ioctl(-1, VIDIOC_G_FMT"
-              ", {type=V4L2_BUF_TYPE_VIDEO_OVERLAY}) ="
-              " -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, {type=" XLAT_FMT "}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_FMT),
+              XLAT_ARGS(V4L2_BUF_TYPE_VIDEO_OVERLAY));
 
        p_format->type = V4L2_BUF_TYPE_VBI_CAPTURE;
        ioctl(-1, VIDIOC_G_FMT, p_format);
-       printf("ioctl(-1, VIDIOC_G_FMT"
-              ", {type=V4L2_BUF_TYPE_VBI_CAPTURE}) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, {type=" XLAT_FMT "}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_FMT),
+              XLAT_ARGS(V4L2_BUF_TYPE_VBI_CAPTURE));
 #if HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE
        p_format->type = V4L2_BUF_TYPE_SLICED_VBI_CAPTURE;
        ioctl(-1, VIDIOC_G_FMT, p_format);
-       printf("ioctl(-1, VIDIOC_G_FMT"
-              ", {type=V4L2_BUF_TYPE_SLICED_VBI_CAPTURE}) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, {type=" XLAT_FMT "}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_FMT),
+              XLAT_ARGS(V4L2_BUF_TYPE_SLICED_VBI_CAPTURE));
 #endif
 #if HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE
        p_format->type = V4L2_BUF_TYPE_SDR_CAPTURE;
        ioctl(-1, VIDIOC_G_FMT, p_format);
-       printf("ioctl(-1, VIDIOC_G_FMT"
-              ", {type=V4L2_BUF_TYPE_SDR_CAPTURE}) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, {type=" XLAT_FMT "}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_FMT),
+              XLAT_ARGS(V4L2_BUF_TYPE_SDR_CAPTURE));
 #endif
 #if HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT
        p_format->type = V4L2_BUF_TYPE_SDR_OUTPUT;
        ioctl(-1, VIDIOC_G_FMT, p_format);
-       printf("ioctl(-1, VIDIOC_G_FMT"
-              ", {type=V4L2_BUF_TYPE_SDR_OUTPUT}) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, {type=" XLAT_FMT "}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_FMT),
+              XLAT_ARGS(V4L2_BUF_TYPE_SDR_OUTPUT));
 #endif
        /* VIDIOC_S_FMT */
        ioctl(-1, VIDIOC_S_FMT, 0);
-       printf("ioctl(-1, VIDIOC_S_FMT, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_FMT));
 
        init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_OUTPUT);
        ioctl(-1, VIDIOC_S_FMT, p_format);
-       print_ioctl_v4l2(p_format, "VIDIOC_S_FMT", V4L2_BUF_TYPE_VIDEO_OUTPUT);
+       print_ioctl_v4l2(p_format, VIDIOC_S_FMT,
+                        V4L2_BUF_TYPE_VIDEO_OUTPUT);
 #if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
        init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE);
        ioctl(-1, VIDIOC_S_FMT, p_format);
-       print_ioctl_v4l2(p_format, "VIDIOC_S_FMT",
+       print_ioctl_v4l2(p_format, VIDIOC_S_FMT,
                         V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE);
 #endif
 #if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY
        init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY);
        ioctl(-1, VIDIOC_S_FMT, p_format);
-       print_ioctl_v4l2(p_format, "VIDIOC_S_FMT",
+       print_ioctl_v4l2(p_format, VIDIOC_S_FMT,
                         V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY);
 #endif
        init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_OVERLAY);
        ioctl(-1, VIDIOC_S_FMT, p_format);
-       print_ioctl_v4l2(p_format, "VIDIOC_S_FMT",
+       print_ioctl_v4l2(p_format, VIDIOC_S_FMT,
                         V4L2_BUF_TYPE_VIDEO_OVERLAY);
 
        init_v4l2_format(p_format, V4L2_BUF_TYPE_VBI_CAPTURE);
        ioctl(-1, VIDIOC_S_FMT, p_format);
-       print_ioctl_v4l2(p_format, "VIDIOC_S_FMT", V4L2_BUF_TYPE_VBI_CAPTURE);
+       print_ioctl_v4l2(p_format, VIDIOC_S_FMT, V4L2_BUF_TYPE_VBI_CAPTURE);
 #if HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE
        init_v4l2_format(p_format, V4L2_BUF_TYPE_SLICED_VBI_CAPTURE);
        ioctl(-1, VIDIOC_S_FMT, p_format);
-       print_ioctl_v4l2(p_format, "VIDIOC_S_FMT",
+       print_ioctl_v4l2(p_format, VIDIOC_S_FMT,
                         V4L2_BUF_TYPE_SLICED_VBI_CAPTURE);
 #endif
 #if HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE
        init_v4l2_format(p_format, V4L2_BUF_TYPE_SDR_CAPTURE);
        ioctl(-1, VIDIOC_S_FMT, p_format);
-       print_ioctl_v4l2(p_format, "VIDIOC_S_FMT", V4L2_BUF_TYPE_SDR_CAPTURE);
+       print_ioctl_v4l2(p_format, VIDIOC_S_FMT, V4L2_BUF_TYPE_SDR_CAPTURE);
 #endif
 #if HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT
        init_v4l2_format(p_format, V4L2_BUF_TYPE_SDR_OUTPUT);
        ioctl(-1, VIDIOC_S_FMT, p_format);
-       print_ioctl_v4l2(p_format, "VIDIOC_S_FMT", V4L2_BUF_TYPE_SDR_OUTPUT);
+       print_ioctl_v4l2(p_format, VIDIOC_S_FMT, V4L2_BUF_TYPE_SDR_OUTPUT);
 #endif
        /* VIDIOC_TRY_FMT */
        ioctl(-1, VIDIOC_TRY_FMT, 0);
-       printf("ioctl(-1, VIDIOC_TRY_FMT, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_TRY_FMT));
 
        init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_OUTPUT);
        ioctl(-1, VIDIOC_TRY_FMT, p_format);
-       print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT",
+       print_ioctl_v4l2(p_format, VIDIOC_TRY_FMT,
                         V4L2_BUF_TYPE_VIDEO_OUTPUT);
 #if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
        init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE);
        ioctl(-1, VIDIOC_TRY_FMT, p_format);
-       print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT",
+       print_ioctl_v4l2(p_format, VIDIOC_TRY_FMT,
                         V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE);
 #endif
 #if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY
        init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY);
        ioctl(-1, VIDIOC_TRY_FMT, p_format);
-       print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT",
+       print_ioctl_v4l2(p_format, VIDIOC_TRY_FMT,
                         V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY);
 #endif
        init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_OVERLAY);
        ioctl(-1, VIDIOC_TRY_FMT, p_format);
-       print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT",
+       print_ioctl_v4l2(p_format, VIDIOC_TRY_FMT,
                         V4L2_BUF_TYPE_VIDEO_OVERLAY);
 
        init_v4l2_format(p_format, V4L2_BUF_TYPE_VBI_CAPTURE);
        ioctl(-1, VIDIOC_TRY_FMT, p_format);
-       print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT", V4L2_BUF_TYPE_VBI_CAPTURE);
+       print_ioctl_v4l2(p_format, VIDIOC_TRY_FMT, V4L2_BUF_TYPE_VBI_CAPTURE);
 #if HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE
        init_v4l2_format(p_format, V4L2_BUF_TYPE_SLICED_VBI_CAPTURE);
        ioctl(-1, VIDIOC_TRY_FMT, p_format);
-       print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT",
+       print_ioctl_v4l2(p_format, VIDIOC_TRY_FMT,
                         V4L2_BUF_TYPE_SLICED_VBI_CAPTURE);
 #endif
 #if HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE
        init_v4l2_format(p_format, V4L2_BUF_TYPE_SDR_CAPTURE);
        ioctl(-1, VIDIOC_TRY_FMT, p_format);
-       print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT", V4L2_BUF_TYPE_SDR_CAPTURE);
+       print_ioctl_v4l2(p_format, VIDIOC_TRY_FMT, V4L2_BUF_TYPE_SDR_CAPTURE);
 #endif
 #if HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT
        init_v4l2_format(p_format, V4L2_BUF_TYPE_SDR_OUTPUT);
        ioctl(-1, VIDIOC_TRY_FMT, p_format);
-       print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT", V4L2_BUF_TYPE_SDR_OUTPUT);
+       print_ioctl_v4l2(p_format, VIDIOC_TRY_FMT, V4L2_BUF_TYPE_SDR_OUTPUT);
 #endif
        struct v4l2_format *const p_v4l2_format =
                page_end - sizeof(*p_v4l2_format);
        ioctl(-1, VIDIOC_TRY_FMT, p_v4l2_format);
-       printf("ioctl(-1, VIDIOC_TRY_FMT, {type=%#x /* V4L2_BUF_TYPE_??? */})"
-              " = -1 EBADF (%m)\n", p_v4l2_format->type);
+       printf("ioctl(-1, %s, {type=%#x" NRAW(" /* V4L2_BUF_TYPE_??? */") "})"
+              " = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_TRY_FMT), p_v4l2_format->type);
 
        /* VIDIOC_REQBUFS */
        ioctl(-1, VIDIOC_REQBUFS, 0);
-       printf("ioctl(-1, VIDIOC_REQBUFS, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_REQBUFS));
 
        struct v4l2_requestbuffers *const p_v4l2_requestbuffers =
                page_end - sizeof(*p_v4l2_requestbuffers);
        ioctl(-1, VIDIOC_REQBUFS, p_v4l2_requestbuffers);
-       printf("ioctl(-1, VIDIOC_REQBUFS, {type=%#x /* V4L2_BUF_TYPE_??? */, "
-              "memory=%#x /* V4L2_MEMORY_??? */, count=%u})"
+       printf("ioctl(-1, %s, {type=%#x"
+              NRAW(" /* V4L2_BUF_TYPE_??? */")
+              ", memory=%#x" NRAW(" /* V4L2_MEMORY_??? */") ", count=%u})"
               " = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_REQBUFS),
               p_v4l2_requestbuffers->type,
               p_v4l2_requestbuffers->memory,
               p_v4l2_requestbuffers->count);
 
        /* VIDIOC_QUERYBUF */
        ioctl(-1, VIDIOC_QUERYBUF, 0);
-       printf("ioctl(-1, VIDIOC_QUERYBUF, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_QUERYBUF));
 
-       struct v4l2_buffer *const p_v4l2_buffer =
+       kernel_v4l2_buffer_t *const p_v4l2_buffer =
                page_end - sizeof(*p_v4l2_buffer);
        ioctl(-1, VIDIOC_QUERYBUF, p_v4l2_buffer);
-       printf("ioctl(-1, VIDIOC_QUERYBUF, {type=%#x /* V4L2_BUF_TYPE_??? */"
+       printf("ioctl(-1, %s, {type=%#x" NRAW(" /* V4L2_BUF_TYPE_??? */")
               ", index=%u}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_QUERYBUF),
               p_v4l2_buffer->type, p_v4l2_buffer->index);
 
        /* VIDIOC_QBUF */
        ioctl(-1, VIDIOC_QBUF, 0);
-       printf("ioctl(-1, VIDIOC_QBUF, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_QBUF));
 
        ioctl(-1, VIDIOC_QBUF, p_v4l2_buffer);
-       printf("ioctl(-1, VIDIOC_QBUF, {type=%#x /* V4L2_BUF_TYPE_??? */"
+       printf("ioctl(-1, %s, {type=%#x" NRAW(" /* V4L2_BUF_TYPE_??? */")
               ", index=%u}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_QBUF),
               p_v4l2_buffer->type, p_v4l2_buffer->index);
 
        /* VIDIOC_DQBUF */
        ioctl(-1, VIDIOC_DQBUF, 0);
-       printf("ioctl(-1, VIDIOC_DQBUF, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_DQBUF));
 
        ioctl(-1, VIDIOC_DQBUF, p_v4l2_buffer);
-       printf("ioctl(-1, VIDIOC_DQBUF, {type=%#x"
-              " /* V4L2_BUF_TYPE_??? */}) = -1 EBADF (%m)\n",
-              p_v4l2_buffer->type);
+       printf("ioctl(-1, %s, {type=%#x" NRAW(" /* V4L2_BUF_TYPE_??? */")
+              "}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_DQBUF), p_v4l2_buffer->type);
 
        /* VIDIOC_G_FBUF */
        ioctl(-1, VIDIOC_G_FBUF, 0);
-       printf("ioctl(-1, VIDIOC_G_FBUF, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_FBUF));
 
        ioctl(-1, VIDIOC_G_FBUF, page);
-       printf("ioctl(-1, VIDIOC_G_FBUF, %p) = -1 EBADF (%m)\n", page);
+       printf("ioctl(-1, %s, %p) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_FBUF), page);
 
        /* VIDIOC_S_FBUF */
        ioctl(-1, VIDIOC_S_FBUF, 0);
-       printf("ioctl(-1, VIDIOC_S_FBUF, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_FBUF));
 
        struct v4l2_framebuffer *const p_v4l2_framebuffer =
                page_end - sizeof(*p_v4l2_framebuffer);
        ioctl(-1, VIDIOC_S_FBUF, p_v4l2_framebuffer);
-       printf("ioctl(-1, VIDIOC_S_FBUF, {capability=%#x"
+       printf("ioctl(-1, %s, {capability=%#x"
               ", flags=%#x, base=%p}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_FBUF),
               p_v4l2_framebuffer->capability,
               p_v4l2_framebuffer->flags,
               p_v4l2_framebuffer->base);
 
        /* VIDIOC_STREAMON */
        ioctl(-1, VIDIOC_STREAMON, 0);
-       printf("ioctl(-1, VIDIOC_STREAMON, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_STREAMON));
 
        int *const p_int = page_end - sizeof(int);
        ioctl(-1, VIDIOC_STREAMON, p_int);
-       printf("ioctl(-1, VIDIOC_STREAMON, [%#x /* V4L2_BUF_TYPE_??? */])"
-              " = -1 EBADF (%m)\n", *p_int);
+       printf("ioctl(-1, %s, [%#x" NRAW(" /* V4L2_BUF_TYPE_??? */") "])"
+              " = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_STREAMON), *p_int);
 
        /* VIDIOC_STREAMOFF */
        ioctl(-1, VIDIOC_STREAMOFF, 0);
-       printf("ioctl(-1, VIDIOC_STREAMOFF, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_STREAMOFF));
 
        ioctl(-1, VIDIOC_STREAMOFF, p_int);
-       printf("ioctl(-1, VIDIOC_STREAMOFF, [%#x /* V4L2_BUF_TYPE_??? */])"
-              " = -1 EBADF (%m)\n", *p_int);
+       printf("ioctl(-1, %s, [%#x" NRAW(" /* V4L2_BUF_TYPE_??? */") "])"
+              " = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_STREAMOFF), *p_int);
 
        /* VIDIOC_G_PARM */
        ioctl(-1, VIDIOC_G_PARM, 0);
-       printf("ioctl(-1, VIDIOC_G_PARM, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_PARM));
 
        struct v4l2_streamparm *const p_v4l2_streamparm =
                page_end - sizeof(*p_v4l2_streamparm);
        ioctl(-1, VIDIOC_G_PARM, p_v4l2_streamparm);
-       printf("ioctl(-1, VIDIOC_G_PARM, {type=%#x /* V4L2_BUF_TYPE_??? */})"
-              " = -1 EBADF (%m)\n", p_v4l2_streamparm->type);
+       printf("ioctl(-1, %s, {type=%#x" NRAW(" /* V4L2_BUF_TYPE_??? */") "})"
+              " = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_PARM), p_v4l2_streamparm->type);
 
        /* VIDIOC_S_PARM */
        ioctl(-1, VIDIOC_S_PARM, 0);
-       printf("ioctl(-1, VIDIOC_S_PARM, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_PARM));
 
        ioctl(-1, VIDIOC_S_PARM, p_v4l2_streamparm);
-       printf("ioctl(-1, VIDIOC_S_PARM, {type=%#x /* V4L2_BUF_TYPE_??? */})"
-              " = -1 EBADF (%m)\n", p_v4l2_streamparm->type);
+       printf("ioctl(-1, %s, {type=%#x" NRAW(" /* V4L2_BUF_TYPE_??? */") "})"
+              " = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_PARM), p_v4l2_streamparm->type);
 
        TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_streamparm, p_streamparm);
        p_streamparm->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
@@ -633,91 +1005,135 @@ main(void)
        p_streamparm->parm.capture.timeperframe.numerator = 0xdeadbeef;
        p_streamparm->parm.capture.timeperframe.denominator = 0xbadc0ded;
        ioctl(-1, VIDIOC_S_PARM, p_streamparm);
-       printf("ioctl(-1, VIDIOC_S_PARM, {type=V4L2_BUF_TYPE_VIDEO_CAPTURE"
-              ", parm.capture={capability=V4L2_CAP_TIMEPERFRAME"
-              ", capturemode=V4L2_MODE_HIGHQUALITY, timeperframe=%u/%u"
-              ", extendedmode=%u, readbuffers=%u}}) = -1 EBADF (%m)\n",
+       printf("ioctl(-1, %s, {type=" XLAT_FMT
+              ", parm.capture={capability=" XLAT_FMT
+              ", capturemode=" XLAT_FMT ", timeperframe=%u/%u"
+              ", extendedmode=%#x, readbuffers=%u}}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_PARM), XLAT_ARGS(V4L2_BUF_TYPE_VIDEO_CAPTURE),
+              XLAT_ARGS(V4L2_CAP_TIMEPERFRAME), XLAT_ARGS(V4L2_MODE_HIGHQUALITY),
               p_streamparm->parm.capture.timeperframe.numerator,
               p_streamparm->parm.capture.timeperframe.denominator, -1U, -1U);
 
        p_streamparm->type = V4L2_BUF_TYPE_VIDEO_OUTPUT;
        p_streamparm->parm.output.outputmode = 0;
        ioctl(-1, VIDIOC_S_PARM, p_streamparm);
-       printf("ioctl(-1, VIDIOC_S_PARM, {type=V4L2_BUF_TYPE_VIDEO_OUTPUT"
-              ", parm.output={capability=V4L2_CAP_TIMEPERFRAME"
+       printf("ioctl(-1, %s, {type=" XLAT_FMT
+              ", parm.output={capability=" XLAT_FMT
               ", outputmode=0, timeperframe=%u/%u"
-              ", extendedmode=%u, writebuffers=%u}}) = -1 EBADF (%m)\n",
+              ", extendedmode=%#x, writebuffers=%u}}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_PARM), XLAT_ARGS(V4L2_BUF_TYPE_VIDEO_OUTPUT),
+              XLAT_ARGS(V4L2_CAP_TIMEPERFRAME),
               p_streamparm->parm.output.timeperframe.numerator,
               p_streamparm->parm.output.timeperframe.denominator, -1U, -1U);
 
        /* VIDIOC_G_STD */
        ioctl(-1, VIDIOC_G_STD, 0);
-       printf("ioctl(-1, VIDIOC_G_STD, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_STD));
 
        ioctl(-1, VIDIOC_G_STD, page);
-       printf("ioctl(-1, VIDIOC_G_STD, %p) = -1 EBADF (%m)\n", page);
+       printf("ioctl(-1, %s, %p) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_STD), page);
 
        /* VIDIOC_S_STD */
        ioctl(-1, VIDIOC_S_STD, 0);
-       printf("ioctl(-1, VIDIOC_S_STD, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_STD));
 
        long long *const p_longlong = page_end - sizeof(*p_longlong);
        ioctl(-1, VIDIOC_S_STD, p_longlong);
-       printf("ioctl(-1, VIDIOC_S_STD, [%#llx]) = -1 EBADF (%m)\n",
-              *p_longlong);
+       printf("ioctl(-1, %s, [%#llx]) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_STD), *p_longlong);
 
        /* VIDIOC_ENUMSTD */
        ioctl(-1, VIDIOC_ENUMSTD, 0);
-       printf("ioctl(-1, VIDIOC_ENUMSTD, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_ENUMSTD));
 
        struct v4l2_standard *const p_v4l2_standard =
                page_end - sizeof(*p_v4l2_standard);
        ioctl(-1, VIDIOC_ENUMSTD, p_v4l2_standard);
-       printf("ioctl(-1, VIDIOC_ENUMSTD, {index=%u}) = -1 EBADF (%m)\n",
-              p_v4l2_standard->index);
+       printf("ioctl(-1, %s, {index=%u}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_ENUMSTD), p_v4l2_standard->index);
 
        /* VIDIOC_ENUMINPUT */
        ioctl(-1, VIDIOC_ENUMINPUT, 0);
-       printf("ioctl(-1, VIDIOC_ENUMINPUT, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_ENUMINPUT));
 
        struct v4l2_input *const p_v4l2_input =
                page_end - sizeof(*p_v4l2_input);
        ioctl(-1, VIDIOC_ENUMINPUT, p_v4l2_input);
-       printf("ioctl(-1, VIDIOC_ENUMINPUT, {index=%u}) = -1 EBADF (%m)\n",
-              p_v4l2_input->index);
+       printf("ioctl(-1, %s, {index=%u}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_ENUMINPUT), p_v4l2_input->index);
 
        /* VIDIOC_G_CTRL */
        ioctl(-1, VIDIOC_G_CTRL, 0);
-       printf("ioctl(-1, VIDIOC_G_CTRL, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_CTRL));
+
+       static const struct v4l2_control v4l2_control_vals[] = {
+               { .id = 0,                    .value = 3141592653U },
+               { .id = 0x97abcd,             .value = 1234567890U },
+               { .id = V4L2_CTRL_CLASS_USER, .value = 0 },
+               { .id = 0x990a64,             .value = 42 },
+               { .id = 0xa31234,             .value = 1 },
+               { .id = 0xa40000,             .value = -1 },
+       };
+       static const char *id_strs[] = {
+               "0" NRAW(" /* V4L2_CID_??? */"),
+               "0x97abcd" NRAW(" /* V4L2_CID_??? */"),
+               XLAT_KNOWN(0x980000, "V4L2_CTRL_CLASS_USER+0"),
+               XLAT_KNOWN(0x990a64, "V4L2_CID_MPEG_VIDEO_H264_CPB_SIZE"),
+               XLAT_KNOWN(0xa31234, "V4L2_CTRL_CLASS_DETECT+0x1234"),
+               "0xa40000" NRAW(" /* V4L2_CID_??? */"),
+       };
 
        struct v4l2_control *const p_v4l2_control =
                page_end - sizeof(*p_v4l2_control);
        ioctl(-1, VIDIOC_G_CTRL, p_v4l2_control);
-       printf("ioctl(-1, VIDIOC_G_CTRL, {id=%#x /* V4L2_CID_??? */})"
-              " = -1 EBADF (%m)\n", p_v4l2_control->id);
+       printf("ioctl(-1, %s, {id=%#x" NRAW(" /* V4L2_CID_??? */")
+              "}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_CTRL), p_v4l2_control->id);
 
        /* VIDIOC_S_CTRL */
        ioctl(-1, VIDIOC_S_CTRL, 0);
-       printf("ioctl(-1, VIDIOC_S_CTRL, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_CTRL));
 
        ioctl(-1, VIDIOC_S_CTRL, p_v4l2_control);
-       printf("ioctl(-1, VIDIOC_S_CTRL, {id=%#x /* V4L2_CID_??? */"
+       printf("ioctl(-1, %s, {id=%#x" NRAW(" /* V4L2_CID_??? */")
               ", value=%d}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_CTRL),
               p_v4l2_control->id, p_v4l2_control->value);
 
+       for (size_t i = 0; i < ARRAY_SIZE(id_strs); i++) {
+               struct v4l2_control v4l2_c = v4l2_control_vals[i];
+
+               ioctl(-1, VIDIOC_G_CTRL, &v4l2_c);
+               printf("ioctl(-1, %s, {id=%s}) = -1 EBADF (%m)\n",
+                      XLAT_STR(VIDIOC_G_CTRL), id_strs[i]);
+
+               ioctl(-1, VIDIOC_S_CTRL, &v4l2_c);
+               printf("ioctl(-1, %s, {id=%s, value=%d}) = -1 EBADF (%m)\n",
+                      XLAT_STR(VIDIOC_S_CTRL), id_strs[i], v4l2_c.value);
+       }
+
        /* VIDIOC_G_TUNER */
        ioctl(-1, VIDIOC_G_TUNER, 0);
-       printf("ioctl(-1, VIDIOC_G_TUNER, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_TUNER));
 
        struct v4l2_tuner *const p_v4l2_tuner =
                page_end - sizeof(*p_v4l2_tuner);
        ioctl(-1, VIDIOC_G_TUNER, p_v4l2_tuner);
-       printf("ioctl(-1, VIDIOC_G_TUNER, {index=%u})"
-              " = -1 EBADF (%m)\n", p_v4l2_tuner->index);
+       printf("ioctl(-1, %s, {index=%u}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_TUNER), p_v4l2_tuner->index);
 
        /* VIDIOC_S_TUNER */
        ioctl(-1, VIDIOC_S_TUNER, 0);
-       printf("ioctl(-1, VIDIOC_S_TUNER, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_TUNER));
 
        TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_tuner, p_tuner);
        p_tuner->index = 0x4fb6df39;
@@ -731,79 +1147,98 @@ main(void)
        p_tuner->signal = 0x10bf92c8;
        p_tuner->afc = 0x3bf7e18b;
        ioctl(-1, VIDIOC_S_TUNER, p_tuner);
-       printf("ioctl(-1, VIDIOC_S_TUNER, {index=%u"
-              ", name=\"cum tacent clamant\""
-              ", type=V4L2_TUNER_RADIO, capability=V4L2_TUNER_CAP_LOW"
+       printf("ioctl(-1, %s, {index=%u, name=\"cum tacent clamant\""
+              ", type=" XLAT_FMT ", capability=" XLAT_FMT
               ", rangelow=%u, rangehigh=%u"
-              ", rxsubchans=V4L2_TUNER_SUB_MONO"
-              ", audmode=V4L2_TUNER_MODE_MONO, signal=%d, afc=%d"
-              "}) = -1 EBADF (%m)\n",
-              p_tuner->index, p_tuner->rangelow,
-              p_tuner->rangehigh, p_tuner->signal, p_tuner->afc);
+              ", rxsubchans=" XLAT_FMT ", audmode=" XLAT_FMT
+              ", signal=%d, afc=%d}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_TUNER), p_tuner->index,
+              XLAT_ARGS(V4L2_TUNER_RADIO), XLAT_ARGS(V4L2_TUNER_CAP_LOW),
+              p_tuner->rangelow, p_tuner->rangehigh,
+              XLAT_ARGS(V4L2_TUNER_SUB_MONO), XLAT_ARGS(V4L2_TUNER_MODE_MONO),
+              p_tuner->signal, p_tuner->afc);
 
        /* VIDIOC_QUERYCTRL */
        ioctl(-1, VIDIOC_QUERYCTRL, 0);
-       printf("ioctl(-1, VIDIOC_QUERYCTRL, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_QUERYCTRL));
 
        struct v4l2_queryctrl *const p_v4l2_queryctrl =
                page_end - sizeof(*p_v4l2_queryctrl);
        ioctl(-1, VIDIOC_QUERYCTRL, p_v4l2_queryctrl);
-#ifdef V4L2_CTRL_FLAG_NEXT_CTRL
-       printf("ioctl(-1, VIDIOC_QUERYCTRL, {id=V4L2_CTRL_FLAG_NEXT_CTRL"
-              "|%#x /* V4L2_CID_??? */}) = -1 EBADF (%m)\n",
-              p_v4l2_queryctrl->id & ~V4L2_CTRL_FLAG_NEXT_CTRL);
+       printf("ioctl(-1, %s, {id="
+#if XLAT_RAW
+             "%#x"
+#else
+              XLAT_FMT "|%#x /* V4L2_CID_??? */"
+#endif
+              "}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_QUERYCTRL),
+#if XLAT_RAW
+              p_v4l2_queryctrl->id
 #else
-       printf("ioctl(-1, VIDIOC_QUERYCTRL, {id=%#x /* V4L2_CID_??? */})"
-              " = -1 EBADF (%m)\n", p_v4l2_queryctrl->id);
+              XLAT_ARGS(V4L2_CTRL_FLAG_NEXT_CTRL),
+              p_v4l2_queryctrl->id & ~V4L2_CTRL_FLAG_NEXT_CTRL
 #endif
+              );
 
        TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_queryctrl, p_queryctrl);
        p_queryctrl->id = V4L2_CID_SATURATION;
        ioctl(-1, VIDIOC_QUERYCTRL, p_queryctrl);
-       printf("ioctl(-1, VIDIOC_QUERYCTRL, {id=V4L2_CID_SATURATION})"
-              " = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, {id=" XLAT_FMT "}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_QUERYCTRL), XLAT_ARGS(V4L2_CID_SATURATION));
 
        /* VIDIOC_G_INPUT */
        ioctl(-1, VIDIOC_G_INPUT, 0);
-       printf("ioctl(-1, VIDIOC_G_INPUT, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_INPUT));
 
        ioctl(-1, VIDIOC_G_INPUT, page);
-       printf("ioctl(-1, VIDIOC_G_INPUT, %p) = -1 EBADF (%m)\n", page);
+       printf("ioctl(-1, %s, %p) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_INPUT), page);
 
        /* VIDIOC_S_INPUT */
        ioctl(-1, VIDIOC_S_INPUT, 0);
-       printf("ioctl(-1, VIDIOC_S_INPUT, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_INPUT));
 
        ioctl(-1, VIDIOC_S_INPUT, p_int);
-       printf("ioctl(-1, VIDIOC_S_INPUT, [%u]) = -1 EBADF (%m)\n", *p_int);
+       printf("ioctl(-1, %s, [%u]) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_INPUT), *p_int);
 
        /* VIDIOC_CROPCAP */
        ioctl(-1, VIDIOC_CROPCAP, 0);
-       printf("ioctl(-1, VIDIOC_CROPCAP, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_CROPCAP));
 
        struct v4l2_cropcap *const p_v4l2_cropcap =
                page_end - sizeof(*p_v4l2_cropcap);
        ioctl(-1, VIDIOC_CROPCAP, p_v4l2_cropcap);
-       printf("ioctl(-1, VIDIOC_CROPCAP, {type=%#x /* V4L2_BUF_TYPE_??? */})"
-              " = -1 EBADF (%m)\n", p_v4l2_cropcap->type);
+       printf("ioctl(-1, %s, {type=%#x" NRAW(" /* V4L2_BUF_TYPE_??? */") "})"
+              " = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_CROPCAP), p_v4l2_cropcap->type);
 
        /* VIDIOC_G_CROP */
        ioctl(-1, VIDIOC_G_CROP, 0);
-       printf("ioctl(-1, VIDIOC_G_CROP, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_CROP));
 
        struct v4l2_crop *const p_v4l2_crop =
                page_end - sizeof(*p_v4l2_crop);
        ioctl(-1, VIDIOC_G_CROP, p_v4l2_crop);
-       printf("ioctl(-1, VIDIOC_G_CROP, {type=%#x /* V4L2_BUF_TYPE_??? */})"
-              " = -1 EBADF (%m)\n", p_v4l2_crop->type);
+       printf("ioctl(-1, %s, {type=%#x" NRAW(" /* V4L2_BUF_TYPE_??? */") "})"
+              " = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_CROP), p_v4l2_crop->type);
 
        /* VIDIOC_S_CROP */
        ioctl(-1, VIDIOC_S_CROP, 0);
-       printf("ioctl(-1, VIDIOC_S_CROP, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_CROP));
 
        ioctl(-1, VIDIOC_S_CROP, p_v4l2_crop);
-       printf("ioctl(-1, VIDIOC_S_CROP, {type=%#x /* V4L2_BUF_TYPE_??? */"
+       printf("ioctl(-1, %s, {type=%#x" NRAW(" /* V4L2_BUF_TYPE_??? */")
               ", c={left=%d, top=%d, width=%u, height=%u}}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_CROP),
               p_v4l2_crop->type,
               p_v4l2_crop->c.left,
               p_v4l2_crop->c.top,
@@ -813,36 +1248,42 @@ main(void)
 #ifdef VIDIOC_S_EXT_CTRLS
        /* VIDIOC_S_EXT_CTRLS */
        ioctl(-1, VIDIOC_S_EXT_CTRLS, 0);
-       printf("ioctl(-1, VIDIOC_S_EXT_CTRLS, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_EXT_CTRLS));
 
        TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_ext_controls, p_ext_controls);
        p_ext_controls->ctrl_class = V4L2_CTRL_CLASS_USER;
        p_ext_controls->count = 0;
        p_ext_controls->controls = (void *) -2UL;
        ioctl(-1, VIDIOC_S_EXT_CTRLS, p_ext_controls);
-       printf("ioctl(-1, VIDIOC_S_EXT_CTRLS, {ctrl_class=V4L2_CTRL_CLASS_USER"
-              ", count=%u}) = -1 EBADF (%m)\n", p_ext_controls->count);
+       printf("ioctl(-1, %s, {ctrl_class=" XLAT_FMT ", count=%u})"
+              " = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_EXT_CTRLS), XLAT_ARGS(V4L2_CTRL_CLASS_USER),
+              p_ext_controls->count);
 
        p_ext_controls->ctrl_class = 0x00a30000;
        p_ext_controls->count = magic;
        ioctl(-1, VIDIOC_S_EXT_CTRLS, p_ext_controls);
-       printf("ioctl(-1, VIDIOC_S_EXT_CTRLS, {ctrl_class=V4L2_CTRL_CLASS_DETECT"
+       printf("ioctl(-1, %s, {ctrl_class=" XLAT_FMT
               ", count=%u, controls=%p}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_EXT_CTRLS), XLAT_ARGS(V4L2_CTRL_CLASS_DETECT),
               p_ext_controls->count, p_ext_controls->controls);
 
        p_ext_controls->ctrl_class = 0x00a40000;
        p_ext_controls->count = magic;
        ioctl(-1, VIDIOC_S_EXT_CTRLS, p_ext_controls);
-       printf("ioctl(-1, VIDIOC_S_EXT_CTRLS"
-              ", {ctrl_class=0xa40000 /* V4L2_CTRL_CLASS_??? */"
+       printf("ioctl(-1, %s"
+              ", {ctrl_class=0xa40000" NRAW(" /* V4L2_CTRL_CLASS_??? */")
               ", count=%u, controls=%p}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_EXT_CTRLS),
               p_ext_controls->count, p_ext_controls->controls);
 
        p_ext_controls->ctrl_class = V4L2_CTRL_CLASS_MPEG;
        p_ext_controls->count = magic;
        ioctl(-1, VIDIOC_S_EXT_CTRLS, p_ext_controls);
-       printf("ioctl(-1, VIDIOC_S_EXT_CTRLS, {ctrl_class=V4L2_CTRL_CLASS_MPEG"
+       printf("ioctl(-1, %s, {ctrl_class=" XLAT_FMT
               ", count=%u, controls=%p}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_EXT_CTRLS), XLAT_ARGS(V4L2_CTRL_CLASS_MPEG),
               p_ext_controls->count, p_ext_controls->controls);
 
 # if HAVE_DECL_V4L2_CTRL_TYPE_STRING
@@ -858,107 +1299,132 @@ main(void)
                tail_alloc(p_ext_controls->controls[1].size);
 
        ioctl(-1, VIDIOC_S_EXT_CTRLS, p_ext_controls);
-       printf("ioctl(-1, VIDIOC_S_EXT_CTRLS"
-              ", {ctrl_class=V4L2_CTRL_CLASS_MPEG, count=%u, controls="
-              "[{id=V4L2_CID_BRIGHTNESS, size=0, value=%d, value64=%lld}"
-              ", {id=V4L2_CID_CONTRAST, size=2, string=\"\\377\\377\"}"
-              "] => controls="
-              "[{id=V4L2_CID_BRIGHTNESS, size=0, value=%d, value64=%lld}"
-              ", {id=V4L2_CID_CONTRAST, size=2, string=\"\\377\\377\"}"
+       printf("ioctl(-1, %s, {ctrl_class=" XLAT_FMT ", count=%u, controls="
+              "[{id=" XLAT_FMT ", size=0, value=%d, value64=%lld}"
+              ", {id=" XLAT_FMT ", size=2, string=\"\\377\\377\"}"
+              "]} => {controls="
+              "[{id=" XLAT_FMT ", size=0, value=%d, value64=%lld}"
+              ", {id=" XLAT_FMT ", size=2, string=\"\\377\\377\"}"
               "], error_idx=%u}) = -1 EBADF (%m)\n",
-              p_ext_controls->count,
+              XLAT_STR(VIDIOC_S_EXT_CTRLS), XLAT_ARGS(V4L2_CTRL_CLASS_MPEG),
+              p_ext_controls->count, XLAT_ARGS(V4L2_CID_BRIGHTNESS),
               p_ext_controls->controls[0].value,
               (long long) p_ext_controls->controls[0].value64,
+              XLAT_ARGS(V4L2_CID_CONTRAST), XLAT_ARGS(V4L2_CID_BRIGHTNESS),
               p_ext_controls->controls[0].value,
               (long long) p_ext_controls->controls[0].value64,
-              p_ext_controls->error_idx);
+              XLAT_ARGS(V4L2_CID_CONTRAST), p_ext_controls->error_idx);
 
        ++p_ext_controls->count;
        ioctl(-1, VIDIOC_S_EXT_CTRLS, p_ext_controls);
-       printf("ioctl(-1, VIDIOC_S_EXT_CTRLS"
-              ", {ctrl_class=V4L2_CTRL_CLASS_MPEG, count=%u, controls="
-              "[{id=V4L2_CID_BRIGHTNESS, size=0, value=%d, value64=%lld}"
-              ", {id=V4L2_CID_CONTRAST, size=2, string=\"\\377\\377\"}"
+       printf("ioctl(-1, %s, {ctrl_class=" XLAT_FMT ", count=%u, controls="
+              "[{id=" XLAT_FMT ", size=0, value=%d, value64=%lld}"
+              ", {id=" XLAT_FMT ", size=2, string=\"\\377\\377\"}"
               ", ... /* %p */]}) = -1 EBADF (%m)\n",
-              p_ext_controls->count,
+              XLAT_STR(VIDIOC_S_EXT_CTRLS), XLAT_ARGS(V4L2_CTRL_CLASS_MPEG),
+              p_ext_controls->count, XLAT_ARGS(V4L2_CID_BRIGHTNESS),
               p_ext_controls->controls[0].value,
               (long long) p_ext_controls->controls[0].value64,
-              p_ext_controls->controls + 2);
+              XLAT_ARGS(V4L2_CID_CONTRAST), p_ext_controls->controls + 2);
 # endif /* HAVE_DECL_V4L2_CTRL_TYPE_STRING */
 
        /* VIDIOC_TRY_EXT_CTRLS */
        ioctl(-1, VIDIOC_TRY_EXT_CTRLS, 0);
-       printf("ioctl(-1, VIDIOC_TRY_EXT_CTRLS, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_TRY_EXT_CTRLS));
 
        p_ext_controls->ctrl_class = V4L2_CTRL_CLASS_USER;
        p_ext_controls->count = magic;
        p_ext_controls->controls = (void *) -2UL;
        ioctl(-1, VIDIOC_TRY_EXT_CTRLS, p_ext_controls);
-       printf("ioctl(-1, VIDIOC_TRY_EXT_CTRLS"
-              ", {ctrl_class=V4L2_CTRL_CLASS_USER, count=%u, controls=%p})"
+       printf("ioctl(-1, %s, {ctrl_class=" XLAT_FMT ", count=%u, controls=%p})"
               " = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_TRY_EXT_CTRLS), XLAT_ARGS(V4L2_CTRL_CLASS_USER),
               p_ext_controls->count, p_ext_controls->controls);
 
        /* VIDIOC_G_EXT_CTRLS */
        ioctl(-1, VIDIOC_G_EXT_CTRLS, 0);
-       printf("ioctl(-1, VIDIOC_G_EXT_CTRLS, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_EXT_CTRLS));
 
        ioctl(-1, VIDIOC_G_EXT_CTRLS, p_ext_controls);
-       printf("ioctl(-1, VIDIOC_G_EXT_CTRLS"
-              ", {ctrl_class=V4L2_CTRL_CLASS_USER, count=%u, controls=%p"
+       printf("ioctl(-1, %s, {ctrl_class=" XLAT_FMT ", count=%u, controls=%p"
               ", error_idx=%u}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_EXT_CTRLS), XLAT_ARGS(V4L2_CTRL_CLASS_USER),
               p_ext_controls->count, p_ext_controls->controls,
               p_ext_controls->error_idx);
 #endif /* VIDIOC_S_EXT_CTRLS */
 
-#ifdef VIDIOC_ENUM_FRAMESIZES
+#ifdef HAVE_STRUCT_V4L2_FRMSIZEENUM
        ioctl(-1, VIDIOC_ENUM_FRAMESIZES, 0);
-       printf("ioctl(-1, VIDIOC_ENUM_FRAMESIZES, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_ENUM_FRAMESIZES));
 
        TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_frmsizeenum, p_frmsizeenum);
        p_frmsizeenum->index = magic;
        p_frmsizeenum->pixel_format = fourcc(cc[0], cc[1], cc[2], cc[3]);
 
        ioctl(-1, VIDIOC_ENUM_FRAMESIZES, p_frmsizeenum);
-       printf("ioctl(-1, VIDIOC_ENUM_FRAMESIZES, {index=%u"
-              ", pixel_format=v4l2_fourcc('%c', '\\%c', '\\%c', '\\x%x')})"
-              " = -1 EBADF (%m)\n", p_frmsizeenum->index,
-              cc[0], cc[1], cc[2], cc[3]);
-#endif /* VIDIOC_ENUM_FRAMESIZES */
-
-#ifdef VIDIOC_ENUM_FRAMEINTERVALS
+       printf("ioctl(-1, %s, {index=%u, pixel_format="
+# if XLAT_RAW
+              "0x%hhx%hhx%hhx%hhx"
+# else /* !XLAT_RAW */
+              "v4l2_fourcc('%c', '\\%c', '\\%c', '\\x%x')"
+# endif /* XLAT_RAW */
+              "}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_ENUM_FRAMESIZES), p_frmsizeenum->index,
+# if XLAT_RAW
+              cc[3], cc[2], cc[1], cc[0]
+# else /* !XLAT_RAW */
+              cc[0], cc[1], cc[2], cc[3]
+# endif /* XLAT_RAW */
+              );
+#endif /* HAVE_STRUCT_V4L2_FRMSIZEENUM */
+
+#ifdef HAVE_STRUCT_V4L2_FRMIVALENUM
        ioctl(-1, VIDIOC_ENUM_FRAMEINTERVALS, 0);
-       printf("ioctl(-1, VIDIOC_ENUM_FRAMEINTERVALS, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_ENUM_FRAMEINTERVALS));
 
        struct v4l2_frmivalenum *const p_v4l2_frmivalenum =
                page_end - sizeof(*p_v4l2_frmivalenum);
        ioctl(-1, VIDIOC_ENUM_FRAMEINTERVALS, p_v4l2_frmivalenum);
-       printf("ioctl(-1, VIDIOC_ENUM_FRAMEINTERVALS, {index=%u"
-              ", pixel_format=v4l2_fourcc('\\x%x', '\\x%x', '\\x%x', '\\x%x')"
+       printf("ioctl(-1, %s, {index=%u, pixel_format="
+# if XLAT_RAW
+              "%#x"
+# else /* !XLAT_RAW */
+              "v4l2_fourcc('\\x%x', '\\x%x', '\\x%x', '\\x%x')"
+# endif /* XLAT_RAW */
               ", width=%u, height=%u}) = -1 EBADF (%m)\n",
-              p_v4l2_frmivalenum->index,
+              XLAT_STR(VIDIOC_ENUM_FRAMEINTERVALS), p_v4l2_frmivalenum->index,
+# if XLAT_RAW
+              p_v4l2_frmivalenum->pixel_format,
+# else /* !XLAT_RAW */
               cc0(p_v4l2_frmivalenum->pixel_format),
               cc1(p_v4l2_frmivalenum->pixel_format),
               cc2(p_v4l2_frmivalenum->pixel_format),
               cc3(p_v4l2_frmivalenum->pixel_format),
+# endif /* XLAT_RAW */
               p_v4l2_frmivalenum->width,
               p_v4l2_frmivalenum->height);
-#endif /* VIDIOC_ENUM_FRAMEINTERVALS */
+#endif /* HAVE_STRUCT_V4L2_FRMIVALENUM */
 
-#ifdef VIDIOC_CREATE_BUFS
+#ifdef HAVE_STRUCT_V4L2_CREATE_BUFFERS
        ioctl(-1, VIDIOC_CREATE_BUFS, 0);
-       printf("ioctl(-1, VIDIOC_CREATE_BUFS, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_CREATE_BUFS));
 
        struct v4l2_create_buffers *const p_v4l2_create_buffers =
                page_end - sizeof(*p_v4l2_create_buffers);
        ioctl(-1, VIDIOC_CREATE_BUFS, p_v4l2_create_buffers);
-       printf("ioctl(-1, VIDIOC_CREATE_BUFS, {count=%u, memory=%#x"
-              " /* V4L2_MEMORY_??? */, format={type=%#x"
-              " /* V4L2_BUF_TYPE_??? */}}) = -1 EBADF (%m)\n",
+       printf("ioctl(-1, %s, {count=%u, memory=%#x"
+              NRAW(" /* V4L2_MEMORY_??? */") ", format={type=%#x"
+              NRAW(" /* V4L2_BUF_TYPE_??? */") "}}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_CREATE_BUFS),
               p_v4l2_create_buffers->count,
               p_v4l2_create_buffers->memory,
               p_v4l2_create_buffers->format.type);
-#endif /* VIDIOC_CREATE_BUFS */
+#endif /* HAVE_STRUCT_V4L2_CREATE_BUFFERS */
 
        puts("+++ exited with 0 +++");
        return 0;
diff --git a/tests-mx32/ioctl_watchdog.c b/tests-mx32/ioctl_watchdog.c
new file mode 100644 (file)
index 0000000..d1af836
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * Check decoding of WDIOC* commands of ioctl syscall.
+ *
+ * Copyright (c) 2019 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#include <stdio.h>
+#include <string.h>
+#include <sys/ioctl.h>
+#include <linux/watchdog.h>
+
+#define XLAT_MACROS_ONLY
+#include "xlat/watchdog_ioctl_cmds.h"
+#undef XLAT_MACROS_ONLY
+
+#define RVAL_EBADF " = -1 EBADF (%m)\n"
+
+int
+main(void)
+{
+       int val = 123;
+
+       ioctl(-1, WDIOC_GETSTATUS, &val);
+       printf("ioctl(-1, WDIOC_GETSTATUS, %p)" RVAL_EBADF, &val);
+
+       ioctl(-1, WDIOC_GETBOOTSTATUS, &val);
+       printf("ioctl(-1, WDIOC_GETBOOTSTATUS, %p)" RVAL_EBADF, &val);
+
+       ioctl(-1, WDIOC_GETTEMP, &val);
+       printf("ioctl(-1, WDIOC_GETTEMP, %p)" RVAL_EBADF, &val);
+
+       ioctl(-1, WDIOC_GETTIMEOUT, &val);
+       printf("ioctl(-1, WDIOC_GETTIMEOUT, %p)" RVAL_EBADF, &val);
+
+       ioctl(-1, WDIOC_GETPRETIMEOUT, &val);
+       printf("ioctl(-1, WDIOC_GETPRETIMEOUT, %p)" RVAL_EBADF, &val);
+
+       ioctl(-1, WDIOC_GETTIMELEFT, &val);
+       printf("ioctl(-1, WDIOC_GETTIMELEFT, %p)" RVAL_EBADF, &val);
+
+       ioctl(-1, WDIOC_SETTIMEOUT, &val);
+       printf("ioctl(-1, WDIOC_SETTIMEOUT, [123])" RVAL_EBADF);
+
+       ioctl(-1, WDIOC_SETPRETIMEOUT, &val);
+       printf("ioctl(-1, WDIOC_SETPRETIMEOUT, [123])" RVAL_EBADF);
+
+       ioctl(-1, WDIOC_KEEPALIVE);
+       printf("ioctl(-1, WDIOC_KEEPALIVE)" RVAL_EBADF);
+
+       ioctl(-1, _IOC(_IOC_NONE, 'W', 0xff, 0), &val);
+       printf("ioctl(-1, _IOC(_IOC_NONE, %#x, 0xff, 0), %p)" RVAL_EBADF,
+              'W', &val);
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
diff --git a/tests-mx32/ioctl_watchdog.gen.test b/tests-mx32/ioctl_watchdog.gen.test
new file mode 100755 (executable)
index 0000000..ed1c71f
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_watchdog +ioctl.test ); do not edit.
+set -- 
+. "${srcdir=.}/ioctl.test"
index 3f99b2db5a08c1034f4068245a5e9d5b50770fba..cba8e7be70fdf5f23214f3ab0c38e45821ced38f 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_ioperm
 
index f8904030af5658f0d63f44094e7f51a4db8c6e69..f8c772b6c5706717b4bfd435e7f12106089dbc41 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_iopl
 
diff --git a/tests-mx32/ioprio--pidns-translation.c b/tests-mx32/ioprio--pidns-translation.c
new file mode 100644 (file)
index 0000000..bcb49a8
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "ioprio.c"
diff --git a/tests-mx32/ioprio--pidns-translation.gen.test b/tests-mx32/ioprio--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..f6a9c72
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioprio--pidns-translation test_pidns -a18 -e trace=ioprio_get,ioprio_set); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a18 -e trace=ioprio_get,ioprio_set
index 6577596352ce43a42199ba6caf2d154b71a121a5..5d998a225db0b3d10e49fd6f75832613c9985771 100644 (file)
@@ -2,15 +2,15 @@
  * Check decoding of ioprio_get and ioprio_set syscalls.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2019 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-
-#include <asm/unistd.h>
+#include "scno.h"
+#include "pidns.h"
 
 #if defined(__NR_ioprio_get) && defined(__NR_ioprio_set)
 
@@ -30,12 +30,18 @@ enum {
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        static const kernel_ulong_t bogus_which =
                (kernel_ulong_t) 0xdeadfacefa57beefULL;
        static const kernel_ulong_t bogus_who =
                (kernel_ulong_t) 0xbadc0dedda7a1057ULL;
        static const kernel_ulong_t bogus_ioprio =
                (kernel_ulong_t) 0xdec0ded1facefeedULL;
+
+       const int pid = getpid();
+       const int pgid = getpgid(0);
+
 # if !XLAT_RAW
        static const char * const bogus_ioprio_str =
                "IOPRIO_PRIO_VALUE(0x7d677 /* IOPRIO_CLASS_??? */, 7917)";
@@ -46,6 +52,7 @@ main(void)
 
        rc = syscall(__NR_ioprio_get, bogus_which, bogus_who);
        errstr = sprintrc(rc);
+       pidns_print_leader();
 # if XLAT_RAW
        printf("ioprio_get(%#x, %d) = %s\n",
               (int) bogus_which, (int) bogus_who, errstr);
@@ -54,47 +61,52 @@ main(void)
               (int) bogus_which, (int) bogus_who, errstr);
 # endif
 
-       rc = syscall(__NR_ioprio_get, 1, 0);
+       rc = syscall(__NR_ioprio_get, 1, pid);
        errstr = sprintrc(rc);
+       pidns_print_leader();
+       printf("ioprio_get(");
 # if XLAT_RAW
-       printf("ioprio_get(0x1, 0) = %s\n", errstr);
+       printf("0x1, ");
 # elif XLAT_VERBOSE
-       printf("ioprio_get(0x1 /* IOPRIO_WHO_PROCESS */, 0) = %s", errstr);
-       if (rc >= 0) {
-               printf(" (IOPRIO_PRIO_VALUE(%u /* ", (unsigned int) rc >> 13);
-               printxval(ioprio_class, (unsigned int) rc >> 13,
-                         "IOPRIO_CLASS_???");
-               printf(" */, %u))", (unsigned int) rc & 0x1fff);
-       }
-       puts("");
+       printf("0x1 /* IOPRIO_WHO_PROCESS */, ");
 # else /* XLAT_ABBREV */
-       printf("ioprio_get(IOPRIO_WHO_PROCESS, 0) = %s", errstr);
+       printf("IOPRIO_WHO_PROCESS, ");
+# endif
+       printf("%d%s) = %s", pid, pidns_pid2str(PT_TGID), errstr);
+# if !XLAT_RAW
        if (rc >= 0) {
                printf(" (IOPRIO_PRIO_VALUE(");
                printxval(ioprio_class, (unsigned int) rc >> 13,
                          "IOPRIO_CLASS_???");
                printf(", %u))", (unsigned int) rc & 0x1fff);
        }
-       puts("");
 # endif
+       puts("");
 
-       rc = syscall(__NR_ioprio_set, 2, 0, 8191);
+       rc = syscall(__NR_ioprio_set, 2, pgid, 8191);
        errstr = sprintrc(rc);
+       pidns_print_leader();
+       printf("ioprio_set(");
 # if XLAT_RAW
-       printf("ioprio_set(%#x, 0, 8191) = %s\n", 2, errstr);
+       printf("%#x", 2);
 # elif XLAT_VERBOSE
-       printf("ioprio_set(%#x /* IOPRIO_WHO_PGRP */, 0, 8191"
-              " /* IOPRIO_PRIO_VALUE(0 /* IOPRIO_CLASS_NONE */, 8191) */)"
-              " = %s\n",
-              2, errstr);
+       printf("%#x /* IOPRIO_WHO_PGRP */", 2);
 # else /* XLAT_ABBREV */
-       printf("ioprio_set(IOPRIO_WHO_PGRP, 0"
-              ", IOPRIO_PRIO_VALUE(IOPRIO_CLASS_NONE, 8191)) = %s\n",
-              errstr);
+       printf("IOPRIO_WHO_PGRP");
+# endif
+       printf(", %d%s", pgid, pidns_pid2str(PT_PGID));
+# if XLAT_RAW
+       printf(", 8191)");
+# elif XLAT_VERBOSE
+       printf(", 8191 /* IOPRIO_PRIO_VALUE(0 /* IOPRIO_CLASS_NONE */, 8191) */)");
+# else /* XLAT_ABBREV */
+       printf(", IOPRIO_PRIO_VALUE(IOPRIO_CLASS_NONE, 8191))");
 # endif
+       printf(" = %s\n", errstr);
 
        rc = syscall(__NR_ioprio_set, bogus_which, bogus_who, bogus_ioprio);
        errstr = sprintrc(rc);
+       pidns_print_leader();
 # if XLAT_RAW
        printf("ioprio_set(%#x, %d, %d) = %s\n",
               (int) bogus_which, (int) bogus_who, (int) bogus_ioprio,
@@ -109,6 +121,7 @@ main(void)
               errstr);
 # endif
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
 
        return 0;
index 5c86f2079bc58c30210681bb27da528fa356a1b5..5cd0b603d0367bcd2e6ad26d32b58ac2e1bf4a0b 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of ipc syscall.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_ipc && defined HAVE_LINUX_IPC_H
 
index b12f4af3315f9aaa734ba787cf18c9796cf43eb8..55dc287f1a182a8664dbe24b8395d805bdd273ef 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 # define MSG_STAT_ANY 13
 #endif
 
+#undef TEST_MSGCTL_BOGUS_ADDR
+
+/*
+ * Starting with commit glibc-2.32~83, on every 32-bit architecture
+ * where 32-bit time_t support is enabled, glibc tries to retrieve
+ * the data provided in the third argument of msgctl call.
+ */
+#if GLIBC_PREREQ_GE(2, 32) && defined __TIMESIZE && __TIMESIZE != 64
+# define TEST_MSGCTL_BOGUS_ADDR 0
+#endif
 /*
  * Before glibc-2.22-122-gbe48165, ppc64 code tried to retrieve data
  * provided in third argument of msgctl call (in case of IPC_SET cmd)
  * which led to segmentation fault.
  */
-#undef TEST_MSGCTL_BOGUS_ADDR
-#if defined __GLIBC__ && defined POWERPC64
-# if !(defined __GLIBC_MINOR__) \
-   || ((__GLIBC__ << 16) + __GLIBC_MINOR__ < (2 << 16) + 23)
-#  define TEST_MSGCTL_BOGUS_ADDR 0
-# endif
-#endif /* __GLIBC__ && POWERPC64 */
+#if GLIBC_PREREQ_LT(2, 23) && (defined POWERPC64 || defined POWERPC64LE)
+# define TEST_MSGCTL_BOGUS_ADDR 0
+#endif
 
 #ifndef TEST_MSGCTL_BOGUS_ADDR
 # define TEST_MSGCTL_BOGUS_ADDR 1
@@ -43,6 +49,7 @@
 # define str_ipc_rmid "0"
 # define str_ipc_set "0x1"
 # define str_ipc_stat "0x2"
+# define str_ipc_info "0x3"
 # define str_msg_stat "0xb"
 # define str_msg_info "0xc"
 # define str_msg_stat_any "0xd"
@@ -55,6 +62,7 @@
 # define str_ipc_rmid "0 /\\* IPC_RMID \\*/"
 # define str_ipc_set "0x1 /\\* IPC_SET \\*/"
 # define str_ipc_stat "0x2 /\\* IPC_STAT \\*/"
+# define str_ipc_info "0x3 /\\* IPC_INFO \\*/"
 # define str_msg_stat "0xb /\\* MSG_STAT \\*/"
 # define str_msg_info "0xc /\\* MSG_INFO \\*/"
 # define str_msg_stat_any "0xd /\\* MSG_STAT_ANY \\*/"
@@ -66,6 +74,7 @@
 # define str_ipc_rmid "IPC_RMID"
 # define str_ipc_set "IPC_SET"
 # define str_ipc_stat "IPC_STAT"
+# define str_ipc_info "IPC_INFO"
 # define str_msg_stat "MSG_STAT"
 # define str_msg_info "MSG_INFO"
 # define str_msg_stat_any "MSG_STAT_ANY"
@@ -84,6 +93,68 @@ cleanup(void)
        id = -1;
 }
 
+static void
+print_msginfo(const char *const str_ipc_cmd,
+             const struct msginfo *const info,
+             const int rc)
+{
+       if (rc < 0) {
+               printf("msgctl\\(%d, (%s\\|)?%s, %p\\) = %s\n",
+                      id, str_ipc_64, str_ipc_cmd, info, sprintrc_grep(rc));
+               return;
+       }
+
+       printf("msgctl\\(%d, (%s\\|)?%s, \\{msgpool=%d, msgmap=%d, msgmax=%d"
+              ", msgmnb=%d, msgmni=%d, msgssz=%d, msgtql=%d, msgseg=%u\\}\\)"
+              " = %d\n",
+              id,
+              str_ipc_64,
+              str_ipc_cmd,
+              info->msgpool,
+              info->msgmap,
+              info->msgmax,
+              info->msgmnb,
+              info->msgmni,
+              info->msgssz,
+              info->msgtql,
+              (unsigned) info->msgseg,
+              rc);
+}
+
+static void
+print_msqid_ds(const char *const str_ipc_cmd,
+              const struct msqid_ds *const ds,
+              const int rc)
+{
+       if (rc < 0) {
+               printf("msgctl\\(%d, (%s\\|)?%s, %p\\) = %s\n",
+                      id, str_ipc_64, str_ipc_cmd, ds, sprintrc_grep(rc));
+               return;
+       }
+
+       printf("msgctl\\(%d, (%s\\|)?%s, \\{msg_perm=\\{uid=%u"
+              ", gid=%u, mode=%#o, key=%u, cuid=%u, cgid=%u\\}"
+              ", msg_stime=%u, msg_rtime=%u, msg_ctime=%u, msg_qnum=%u"
+              ", msg_qbytes=%u, msg_lspid=%d, msg_lrpid=%d\\}\\) = %d\n",
+              id,
+              str_ipc_64,
+              str_ipc_cmd,
+              (unsigned) ds->msg_perm.uid,
+              (unsigned) ds->msg_perm.gid,
+              (unsigned) ds->msg_perm.mode,
+              (unsigned) ds->msg_perm.__key,
+              (unsigned) ds->msg_perm.cuid,
+              (unsigned) ds->msg_perm.cgid,
+              (unsigned) ds->msg_stime,
+              (unsigned) ds->msg_rtime,
+              (unsigned) ds->msg_ctime,
+              (unsigned) ds->msg_qnum,
+              (unsigned) ds->msg_qbytes,
+              (int) ds->msg_lspid,
+              (int) ds->msg_lrpid,
+              rc);
+}
+
 int
 main(void)
 {
@@ -98,7 +169,10 @@ main(void)
        static const int bogus_flags = 0xface1e55 & ~IPC_CREAT;
 
        int rc;
-       struct msqid_ds ds;
+       union {
+               struct msqid_ds ds;
+               struct msginfo info;
+       } buf;
 
        rc = msgget(bogus_key, bogus_flags);
        printf("msgget\\(%#llx, %s\\|%#04o\\) = %s\n",
@@ -123,39 +197,32 @@ main(void)
               sprintrc_grep(rc));
 #endif
 
-       if (msgctl(id, IPC_STAT, &ds))
+       rc = msgctl(id, IPC_STAT, &buf.ds);
+       if (rc < 0)
                perror_msg_and_skip("msgctl IPC_STAT");
-       printf("msgctl\\(%d, (%s\\|)?%s, \\{msg_perm=\\{uid=%u"
-              ", gid=%u, mode=%#o, key=%u, cuid=%u, cgid=%u\\}, msg_stime=%u"
-              ", msg_rtime=%u, msg_ctime=%u, msg_qnum=%u, msg_qbytes=%u"
-              ", msg_lspid=%u, msg_lrpid=%u\\}\\) = 0\n",
-              id, str_ipc_64, str_ipc_stat,
-              (unsigned) ds.msg_perm.uid, (unsigned) ds.msg_perm.gid,
-              (unsigned) ds.msg_perm.mode, (unsigned) ds.msg_perm.__key,
-              (unsigned) ds.msg_perm.cuid, (unsigned) ds.msg_perm.cgid,
-              (unsigned) ds.msg_stime, (unsigned) ds.msg_rtime,
-              (unsigned) ds.msg_ctime, (unsigned) ds.msg_qnum,
-              (unsigned) ds.msg_qbytes, (unsigned) ds.msg_lspid,
-              (unsigned) ds.msg_lrpid);
-
-       if (msgctl(id, IPC_SET, &ds))
+       print_msqid_ds(str_ipc_stat, &buf.ds, rc);
+
+       if (msgctl(id, IPC_SET, &buf.ds))
                perror_msg_and_skip("msgctl IPC_SET");
        printf("msgctl\\(%d, (%s\\|)?%s, \\{msg_perm=\\{uid=%u"
-              ", gid=%u, mode=%#o\\}, ...\\}\\) = 0\n",
-              id, str_ipc_64, str_ipc_set, (unsigned) ds.msg_perm.uid,
-              (unsigned) ds.msg_perm.gid, (unsigned) ds.msg_perm.mode);
+              ", gid=%u, mode=%#o\\}, msg_qbytes=%u\\}\\) = 0\n",
+              id, str_ipc_64, str_ipc_set,
+              (unsigned) buf.ds.msg_perm.uid,
+              (unsigned) buf.ds.msg_perm.gid,
+              (unsigned) buf.ds.msg_perm.mode,
+              (unsigned) buf.ds.msg_qbytes);
 
-       rc = msgctl(0, MSG_INFO, &ds);
-       printf("msgctl\\(0, (%s\\|)?%s, %p\\) = %s\n",
-              str_ipc_64, str_msg_info, &ds, sprintrc_grep(rc));
+       rc = msgctl(id, IPC_INFO, &buf.ds);
+       print_msginfo(str_ipc_info, &buf.info, rc);
 
-       rc = msgctl(id, MSG_STAT, &ds);
-       printf("msgctl\\(%d, (%s\\|)?%s, %p\\) = %s\n",
-              id, str_ipc_64, str_msg_stat, &ds, sprintrc_grep(rc));
+       rc = msgctl(id, MSG_INFO, &buf.ds);
+       print_msginfo(str_msg_info, &buf.info, rc);
 
-       rc = msgctl(id, MSG_STAT_ANY, &ds);
-       printf("msgctl\\(%d, (%s\\|)?%s, %p\\) = %s\n",
-              id, str_ipc_64, str_msg_stat_any, &ds, sprintrc_grep(rc));
+       rc = msgctl(id, MSG_STAT, &buf.ds);
+       print_msqid_ds(str_msg_stat, &buf.ds, rc);
+
+       rc = msgctl(id, MSG_STAT_ANY, &buf.ds);
+       print_msqid_ds(str_msg_stat_any, &buf.ds, rc);
 
        return 0;
 }
index c1112cb64a10856094c262b09f31fc64dd6ccf39..be35075554ad58796a8a8fe10972cb7871ba2ea4 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_msgbuf-Xraw +ipc_msgbuf.test -Xraw -a22); do not edit.
-set -- -Xraw -a22
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_msgbuf-Xraw +ipc_msgbuf.test -Xraw -a19); do not edit.
+set -- -Xraw -a19
 . "${srcdir=.}/ipc_msgbuf.test"
index 92525f94034a2cdf000da0e42a62fb238a9cb4c8..ffad6913652efb24342e4de6ff2f1c16ff72b30a 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -11,7 +11,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
 #include <sys/ipc.h>
 #include <sys/msg.h>
 #include <sys/stat.h>
index 7341f7284a92e9bdb181644144a052fcdd836229..365ed1779919bf8fdf9780cc8f1a3b88cfc25167 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2015 Andreas Schwab <schwab@suse.de>
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -11,6 +11,7 @@
 #include <errno.h>
 #include <stdio.h>
 #include <stdlib.h>
+#include <string.h>
 #include <sys/sem.h>
 
 #include "xlat.h"
@@ -24,7 +25,9 @@
 # define str_ipc_flags "0xface1e00"
 # define str_ipc_private "0"
 # define str_ipc_rmid "0"
+# define str_ipc_set "0x1"
 # define str_ipc_stat "0x2"
+# define str_ipc_info "0x3"
 # define str_sem_stat "0x12"
 # define str_sem_info "0x13"
 # define str_sem_stat_any "0x14"
@@ -35,7 +38,9 @@
        "0xface1e00 /\\* IPC_CREAT\\|IPC_EXCL\\|IPC_NOWAIT\\|0xface1000 \\*/"
 # define str_ipc_private "0 /\\* IPC_PRIVATE \\*/"
 # define str_ipc_rmid "0 /\\* IPC_RMID \\*/"
+# define str_ipc_set "0x1 /\\* IPC_SET \\*/"
 # define str_ipc_stat "0x2 /\\* IPC_STAT \\*/"
+# define str_ipc_info "0x3 /\\* IPC_INFO \\*/"
 # define str_sem_stat "0x12 /\\* SEM_STAT \\*/"
 # define str_sem_info "0x13 /\\* SEM_INFO \\*/"
 # define str_sem_stat_any "0x14 /\\* SEM_STAT_ANY \\*/"
@@ -45,7 +50,9 @@
 # define str_ipc_flags "IPC_CREAT\\|IPC_EXCL\\|IPC_NOWAIT\\|0xface1000"
 # define str_ipc_private "IPC_PRIVATE"
 # define str_ipc_rmid "IPC_RMID"
+# define str_ipc_set "IPC_SET"
 # define str_ipc_stat "IPC_STAT"
+# define str_ipc_info "IPC_INFO"
 # define str_sem_stat "SEM_STAT"
 # define str_sem_info "SEM_INFO"
 # define str_sem_stat_any "SEM_STAT_ANY"
@@ -72,6 +79,66 @@ cleanup(void)
        id = -1;
 }
 
+static void
+print_semid_ds(const char *const str_ipc_cmd,
+              const struct semid_ds *const ds,
+              const int rc)
+{
+       if (rc < 0) {
+               printf("semctl\\(%d, 0, (%s\\|)?%s, (%p|\\[%p\\])\\) = %s\n",
+                      id, str_ipc_64, str_ipc_cmd, &ds, &ds,
+                      sprintrc_grep(rc));
+               return;
+       }
+       printf("semctl\\(%d, 0, (%s\\|)?%s, \\{sem_perm=\\{uid=%u, gid=%u"
+               ", mode=%#o, key=%u, cuid=%u, cgid=%u\\}, sem_otime=%llu"
+               ", sem_ctime=%llu, sem_nsems=%llu\\}\\) = %d\n",
+               id,
+               str_ipc_64,
+               str_ipc_cmd,
+               (unsigned) ds->sem_perm.uid,
+               (unsigned) ds->sem_perm.gid,
+               (unsigned) ds->sem_perm.mode,
+               (unsigned) ds->sem_perm.__key,
+               (unsigned) ds->sem_perm.cuid,
+               (unsigned) ds->sem_perm.cgid,
+               (unsigned long long) ds->sem_otime,
+               (unsigned long long) ds->sem_ctime,
+               (unsigned long long) ds->sem_nsems,
+               rc);
+}
+
+static void
+print_sem_info(const char *const str_ipc_cmd,
+               const struct seminfo *const info,
+               const int rc)
+{
+       if (rc < 0) {
+               printf("semctl\\(%d, 0, (%s\\|)?%s, (%p|\\[%p\\])\\) = %s\n",
+                      id, str_ipc_64, str_ipc_cmd, &info, &info,
+                      sprintrc_grep(rc));
+               return;
+       }
+
+       printf("semctl\\(%d, 0, (%s\\|)?%s, \\{semmap=%d, semmni=%d"
+              ", semmns=%d, semmnu=%d, semmsl=%d, semopm=%d, semume=%d"
+              ", semusz=%d, semvmx=%d, semaem=%d\\}\\) = %d\n",
+              id,
+              str_ipc_64,
+              str_ipc_cmd,
+              info->semmap,
+              info->semmni,
+              info->semmns,
+              info->semmnu,
+              info->semmsl,
+              info->semopm,
+              info->semume,
+              info->semusz,
+              info->semvmx,
+              info->semaem,
+              rc);
+}
+
 int
 main(void)
 {
@@ -91,6 +158,8 @@ main(void)
        struct semid_ds ds;
        struct seminfo info;
 
+       memset(&ds, 0, sizeof(ds));
+
        rc = semget(bogus_key, bogus_size, bogus_flags);
        printf("semget\\(%#llx, %d, %s\\|%#04o\\) = %s\n",
               zero_extend_signed_to_ull(bogus_key), bogus_size,
@@ -108,25 +177,41 @@ main(void)
               bogus_semid, bogus_semnum, str_ipc_64, str_bogus_cmd,
               bogus_arg, bogus_arg, sprintrc_grep(rc));
 
+       un.__buf = &info;
+       rc = semctl(id, 0, IPC_INFO, un);
+        print_sem_info(str_ipc_info, &info, rc);
+
+       rc = semctl(id, 0, SEM_INFO, un);
+        print_sem_info(str_sem_info, &info, rc);
+
        un.buf = &ds;
-       if (semctl(id, 0, IPC_STAT, un))
+       rc = semctl(id, 0, IPC_STAT, un);
+       if (rc < 0)
                perror_msg_and_skip("semctl IPC_STAT");
-       printf("semctl\\(%d, 0, (%s\\|)?%s, \\[?%p\\]?\\) = 0\n",
-              id, str_ipc_64, str_ipc_stat, &ds);
+       print_semid_ds(str_ipc_stat, &ds, rc);
 
-       un.__buf = &info;
-       rc = semctl(0, 0, SEM_INFO, un);
-       printf("semctl\\(0, 0, (%s\\|)?%s, \\[?%p\\]?\\) = %s\n",
-              str_ipc_64, str_sem_info, &info, sprintrc_grep(rc));
+       if (semctl(id, 0, IPC_SET, un))
+               perror_msg_and_skip("semctl IPC_SET");
+       printf("semctl\\(%d, 0, (%s\\|)?%s, \\{sem_perm=\\{uid=%u, gid=%u"
+              ", mode=%#o\\}\\}\\) = 0\n",
+              id, str_ipc_64, str_ipc_set,
+              (unsigned) ds.sem_perm.uid,
+              (unsigned) ds.sem_perm.gid,
+              (unsigned) ds.sem_perm.mode);
 
-       un.buf = &ds;
        rc = semctl(id, 0, SEM_STAT, un);
-       printf("semctl\\(%d, 0, (%s\\|)?%s, \\[?%p\\]?\\) = %s\n",
-              id, str_ipc_64, str_sem_stat, &ds, sprintrc_grep(rc));
+       print_semid_ds(str_sem_stat, &ds, rc);
 
+/*
+ * glibc fails to pass the buffer for SEM_STAT_ANY command,
+ * so the kernel receives garbage instead of un.buf address:
+ * https://sourceware.org/bugzilla/show_bug.cgi?id=26637
+ * musl doesn't pass the buffer either.
+ */
+#if 0
        rc = semctl(id, 0, SEM_STAT_ANY, un);
-       printf("semctl\\(%d, 0, (%s\\|)?%s, (%p|\\[(%p|NULL)\\]|NULL)\\) = %s\n",
-              id, str_ipc_64, str_sem_stat_any, &ds, &ds, sprintrc_grep(rc));
+       print_semid_ds(str_sem_stat_any, &ds, rc);
+#endif
 
        return 0;
 }
index d68c24620f6b3e8edc68a893104f16e59070edd6..1982162038d0b45fb4eeb8ec01acf06311d4487e 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_shm-Xabbrev +ipc.sh -Xabbrev -a29); do not edit.
-set -- -Xabbrev -a29
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_shm-Xabbrev +ipc.sh -Xabbrev -a26); do not edit.
+set -- -Xabbrev -a26
 . "${srcdir=.}/ipc.sh"
index 170adeee7bf03cee35c3acd5db06c9855244f19b..457ad6662bd318589da4cd83c5836882fb3f7e64 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_shm-Xverbose +ipc.sh -Xverbose -a36); do not edit.
-set -- -Xverbose -a36
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_shm-Xverbose +ipc.sh -Xverbose -a34); do not edit.
+set -- -Xverbose -a34
 . "${srcdir=.}/ipc.sh"
index 76c19d8d4b0ea6a989801d24b03521f25a1524e3..18de6bf1937efdfaf42fdf373f5754d825d2d123 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 # define SHM_STAT_ANY 15
 #endif
 
+#ifndef SHM_NORESERVE
+# define SHM_NORESERVE 010000
+#endif
+
 #include "xlat.h"
 #include "xlat/shm_resource_flags.h"
 
@@ -35,6 +39,7 @@
 # define str_ipc_rmid "0"
 # define str_ipc_set "0x1"
 # define str_ipc_stat "0x2"
+# define str_ipc_info "0x3"
 # define str_shm_stat "0xd"
 # define str_shm_info "0xe"
 # define str_shm_stat_any "0xf"
@@ -49,6 +54,7 @@
 # define str_ipc_rmid "0 /\\* IPC_RMID \\*/"
 # define str_ipc_set "0x1 /\\* IPC_SET \\*/"
 # define str_ipc_stat "0x2 /\\* IPC_STAT \\*/"
+# define str_ipc_info "0x3 /\\* IPC_INFO \\*/"
 # define str_shm_stat "0xd /\\* SHM_STAT \\*/"
 # define str_shm_info "0xe /\\* SHM_INFO \\*/"
 # define str_shm_stat_any "0xf /\\* SHM_STAT_ANY \\*/"
@@ -62,6 +68,7 @@
 # define str_ipc_rmid "IPC_RMID"
 # define str_ipc_set "IPC_SET"
 # define str_ipc_stat "IPC_STAT"
+# define str_ipc_info "IPC_INFO"
 # define str_shm_stat "SHM_STAT"
 # define str_shm_info "SHM_INFO"
 # define str_shm_stat_any "SHM_STAT_ANY"
 # define str_bogus_cmd "0xdefaced2 /\\* SHM_\\?\\?\\? \\*/"
 #endif
 
+#undef TEST_SHMCTL_BOGUS_ADDR
+
+/*
+ * Starting with commit glibc-2.32~80, on every 32-bit architecture
+ * where 32-bit time_t support is enabled, glibc tries to retrieve
+ * the data provided in the third argument of shmctl call.
+ */
+#if GLIBC_PREREQ_GE(2, 32) && defined __TIMESIZE && __TIMESIZE != 64
+# define TEST_SHMCTL_BOGUS_ADDR 0
+#endif
+
+#ifndef TEST_SHMCTL_BOGUS_ADDR
+# define TEST_SHMCTL_BOGUS_ADDR 1
+#endif
+
 static int id = -1;
 
 static void
@@ -80,6 +102,89 @@ cleanup(void)
        id = -1;
 }
 
+static void
+print_shmid_ds(const char *const str_ipc_cmd,
+              const struct shmid_ds *const ds,
+              const int rc)
+{
+       if (rc < 0) {
+               printf("shmctl\\(%d, (%s\\|)?%s, %p\\) = %s\n",
+                      id, str_ipc_64, str_ipc_cmd, ds, sprintrc_grep(rc));
+               return;
+       }
+       printf("shmctl\\(%d, (%s\\|)?%s, \\{shm_perm=\\{uid=%u, gid=%u"
+               ", mode=%#o, key=%u, cuid=%u, cgid=%u\\}, shm_segsz=%u"
+               ", shm_cpid=%d, shm_lpid=%d, shm_nattch=%u, shm_atime=%u"
+               ", shm_dtime=%u, shm_ctime=%u\\}\\) = %d\n",
+               id,
+               str_ipc_64,
+               str_ipc_cmd,
+               (unsigned) ds->shm_perm.uid,
+               (unsigned) ds->shm_perm.gid,
+               (unsigned) ds->shm_perm.mode,
+               (unsigned) ds->shm_perm.__key,
+               (unsigned) ds->shm_perm.cuid,
+               (unsigned) ds->shm_perm.cgid,
+               (unsigned) ds->shm_segsz,
+               (int) ds->shm_cpid,
+               (int) ds->shm_lpid,
+               (unsigned) ds->shm_nattch,
+               (unsigned) ds->shm_atime,
+               (unsigned) ds->shm_dtime,
+               (unsigned) ds->shm_ctime,
+               rc);
+}
+
+static void
+print_ipc_info(const char *const str_ipc_cmd,
+               const struct shminfo *const info,
+               const int rc)
+{
+       if (rc < 0) {
+               printf("shmctl\\(%d, (%s\\|)?%s, %p\\) = %s\n",
+                      id, str_ipc_64, str_ipc_cmd, info, sprintrc_grep(rc));
+               return;
+       }
+
+       printf("shmctl\\(%d, (%s\\|)?%s, \\{shmmax=%llu, shmmin=%llu"
+              ", shmmni=%llu, shmseg=%llu, shmall=%llu\\}\\) = %d\n",
+              id,
+              str_ipc_64,
+              str_ipc_cmd,
+              (unsigned long long) info->shmmax,
+              (unsigned long long) info->shmmin,
+              (unsigned long long) info->shmmni,
+              (unsigned long long) info->shmseg,
+              (unsigned long long) info->shmall,
+              rc);
+}
+
+static void
+print_shm_info(const char *const str_ipc_cmd,
+              const struct shm_info *const info,
+              const int rc)
+{
+       if (rc < 0) {
+               printf("shmctl\\(%d, (%s\\|)?%s, %p\\) = %s\n",
+                      id, str_ipc_64, str_ipc_cmd, info, sprintrc_grep(rc));
+               return;
+       }
+
+       printf("shmctl\\(%d, (%s\\|)?%s, \\{used_ids=%d, shm_tot=%llu"
+              ", shm_rss=%llu, shm_swp=%llu, swap_attempts=%llu"
+              ", swap_successes=%llu\\}\\) = %d\n",
+              id,
+              str_ipc_64,
+              str_ipc_cmd,
+              info->used_ids,
+              (unsigned long long) info->shm_tot,
+              (unsigned long long) info->shm_rss,
+              (unsigned long long) info->shm_swp,
+              (unsigned long long) info->swap_attempts,
+              (unsigned long long) info->swap_successes,
+              rc);
+}
+
 int
 main(void)
 {
@@ -88,7 +193,9 @@ main(void)
        static const key_t bogus_key = (key_t) 0xeca86420fdb97531ULL;
        static const int bogus_id = 0xdefaced1;
        static const int bogus_cmd = 0xdefaced2;
+#if TEST_SHMCTL_BOGUS_ADDR
        static void * const bogus_addr = (void *) -1L;
+#endif
        static const size_t bogus_size =
        /*
         * musl sets size to SIZE_MAX if size argument is greater than
@@ -105,7 +212,11 @@ main(void)
        static const unsigned int huge_flags = 21 << SHM_HUGE_SHIFT;
        int bogus_flags;
        int rc;
-       struct shmid_ds ds;
+       union {
+               struct shmid_ds ds;
+               struct shminfo ipc_info;
+               struct shm_info shm_info;
+       } buf;
 
        rc = shmget(bogus_key, bogus_size, 0);
        printf("shmget\\(%#llx, %zu, 000\\) = %s\n",
@@ -156,45 +267,38 @@ main(void)
        printf("shmctl\\(%d, (%s\\|)?%s, NULL\\) = %s\n",
               bogus_id, str_ipc_64, str_bogus_cmd, sprintrc_grep(rc));
 
+#if TEST_SHMCTL_BOGUS_ADDR
        rc = shmctl(bogus_id, IPC_STAT, bogus_addr);
        printf("shmctl\\(%d, (%s\\|)?%s, %p\\) = %s\n",
               bogus_id, str_ipc_64, str_ipc_stat, bogus_addr,
               sprintrc_grep(rc));
+#endif
 
-       if (shmctl(id, IPC_STAT, &ds))
+       rc = shmctl(id, IPC_STAT, &buf.ds);
+       if (rc < 0)
                perror_msg_and_skip("shmctl IPC_STAT");
-       printf("shmctl\\(%d, (%s\\|)?%s, \\{shm_perm=\\{uid=%u, gid=%u, "
-               "mode=%#o, key=%u, cuid=%u, cgid=%u\\}, shm_segsz=%u, shm_cpid=%u, "
-               "shm_lpid=%u, shm_nattch=%u, shm_atime=%u, shm_dtime=%u, "
-               "shm_ctime=%u\\}\\) = 0\n",
-               id, str_ipc_64, str_ipc_stat,
-               (unsigned) ds.shm_perm.uid, (unsigned) ds.shm_perm.gid,
-               (unsigned) ds.shm_perm.mode, (unsigned) ds.shm_perm.__key,
-               (unsigned) ds.shm_perm.cuid, (unsigned) ds.shm_perm.cgid,
-               (unsigned) ds.shm_segsz, (unsigned) ds.shm_cpid,
-               (unsigned) ds.shm_lpid, (unsigned) ds.shm_nattch,
-               (unsigned) ds.shm_atime, (unsigned) ds.shm_dtime,
-               (unsigned) ds. shm_ctime);
-
-       if (shmctl(id, IPC_SET, &ds))
+       print_shmid_ds(str_ipc_stat, &buf.ds, rc);
+
+       if (shmctl(id, IPC_SET, &buf.ds))
                perror_msg_and_skip("shmctl IPC_SET");
        printf("shmctl\\(%d, (%s\\|)?%s, \\{shm_perm=\\{uid=%u, gid=%u"
-              ", mode=%#o\\}, ...\\}\\) = 0\n",
+              ", mode=%#o\\}\\}\\) = 0\n",
               id, str_ipc_64, str_ipc_set,
-              (unsigned) ds.shm_perm.uid, (unsigned) ds.shm_perm.gid,
-              (unsigned) ds.shm_perm.mode);
+              (unsigned) buf.ds.shm_perm.uid,
+              (unsigned) buf.ds.shm_perm.gid,
+              (unsigned) buf.ds.shm_perm.mode);
 
-       rc = shmctl(0, SHM_INFO, &ds);
-       printf("shmctl\\(0, (%s\\|)?%s, %p\\) = %s\n",
-              str_ipc_64, str_shm_info, &ds, sprintrc_grep(rc));
+       rc = shmctl(id, IPC_INFO, &buf.ds);
+       print_ipc_info(str_ipc_info, &buf.ipc_info, rc);
 
-       rc = shmctl(id, SHM_STAT, &ds);
-       printf("shmctl\\(%d, (%s\\|)?%s, %p\\) = %s\n",
-              id, str_ipc_64, str_shm_stat, &ds, sprintrc_grep(rc));
+       rc = shmctl(id, SHM_INFO, &buf.ds);
+       print_shm_info(str_shm_info, &buf.shm_info, rc);
 
-       rc = shmctl(id, SHM_STAT_ANY, &ds);
-       printf("shmctl\\(%d, (%s\\|)?%s, %p\\) = %s\n",
-              id, str_ipc_64, str_shm_stat_any, &ds, sprintrc_grep(rc));
+       rc = shmctl(id, SHM_STAT, &buf.ds);
+       print_shmid_ds(str_shm_stat, &buf.ds, rc);
+
+       rc = shmctl(id, SHM_STAT_ANY, &buf.ds);
+       print_shmid_ds(str_shm_stat_any, &buf.ds, rc);
 
        return 0;
 }
index 2e697d3f4e5aeb973f95ad65538821d401d9b14a..72f1571ff160527dcd7f0ee1285fc607f8c807b6 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_shm +ipc.sh -a29); do not edit.
-set -- -a29
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_shm +ipc.sh -a26); do not edit.
+set -- -a26
 . "${srcdir=.}/ipc.sh"
diff --git a/tests-mx32/kcmp-y--pidns-translation.c b/tests-mx32/kcmp-y--pidns-translation.c
new file mode 100644 (file)
index 0000000..f54d94c
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "kcmp-y.c"
diff --git a/tests-mx32/kcmp-y--pidns-translation.gen.test b/tests-mx32/kcmp-y--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..61c3ac9
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kcmp-y--pidns-translation test_pidns -a22 -y -e trace=kcmp); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a22 -y -e trace=kcmp
index 4e3433ee00fb9053937facdd68fdfdde7a5ec2d5..07a446ee0b2b6d27e2adf2320624cbcfcd153e19 100644 (file)
@@ -2,16 +2,15 @@
  * Check decoding of kcmp syscall.
  *
  * Copyright (c) 2016-2017 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-
-#include <asm/unistd.h>
 #include "scno.h"
+#include "pidns.h"
 
 #ifdef __NR_kcmp
 
@@ -65,7 +64,26 @@ static const char zero_path[] = "/dev/zero";
 static void
 printpidfd(const char *prefix, pid_t pid, unsigned fd)
 {
-       printf("%s%d", prefix, fd);
+       const char *path = NULL;
+
+# if VERBOSE_FD
+       if (pid == getpid()) {
+               switch (fd)
+               {
+               case NULL_FD:
+                       path = null_path;
+                       break;
+               case ZERO_FD:
+                       path = zero_path;
+                       break;
+               }
+       }
+# endif
+
+       if (path)
+               printf("%s%d<%s>", prefix, fd, path);
+       else
+               printf("%s%d", prefix, fd);
 }
 
 /*
@@ -83,7 +101,11 @@ do_kcmp(kernel_ulong_t pid1, kernel_ulong_t pid2, kernel_ulong_t type,
        rc = syscall(__NR_kcmp, pid1, pid2, type, idx1, idx2);
        errstr = sprintrc(rc);
 
-       printf("kcmp(%d, %d, ", (int) pid1, (int) pid2);
+       const char *pid_str = pidns_pid2str(PT_TGID);
+       pidns_print_leader();
+       printf("kcmp(%d%s, %d%s, ",
+               (int) pid1, (int) pid1 == getpid() ? pid_str : "",
+               (int) pid2, (int) pid2 == getpid() ? pid_str : "");
 
        if (type_str)
                printf("%s", type_str);
@@ -128,6 +150,8 @@ do_kcmp(kernel_ulong_t pid1, kernel_ulong_t pid2, kernel_ulong_t type,
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        static const kernel_ulong_t bogus_pid1 =
                (kernel_ulong_t) 0xdeadca75face1057ULL;
        static const kernel_ulong_t bogus_pid2 =
@@ -180,7 +204,7 @@ main(void)
        /* KCMP_FILE is the only type which has additional args */
        do_kcmp(3141592653U, 2718281828U, ARG_STR(KCMP_FILE), bogus_idx1,
                bogus_idx2);
-       do_kcmp(-1, -1, ARG_STR(KCMP_FILE), NULL_FD, ZERO_FD);
+       do_kcmp(getpid(), getpid(), ARG_STR(KCMP_FILE), NULL_FD, ZERO_FD);
 
        /* Types without additional args */
        do_kcmp(-1, -1, ARG_STR(KCMP_VM), bogus_idx1, bogus_idx2);
@@ -199,10 +223,11 @@ main(void)
        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,
+               do_kcmp(getpid(), -1, ARG_STR(KCMP_EPOLL_TFD), NULL_FD,
                        (uintptr_t) slot, 1);
        }
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
 
        return 0;
index 4814414de22b4733b087f6541acfb86141f32dd2..d4b79a6d97ab885268e10ff548437655a9143baf 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Check decoding of SPARC-specific kern_features syscall.
  *
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -9,7 +9,6 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
 
 #include "raw_syscall.h"
 #include "scno.h"
diff --git a/tests-mx32/kernel_old_timespec.h b/tests-mx32/kernel_old_timespec.h
new file mode 100644 (file)
index 0000000..fac6d7e
--- /dev/null
@@ -0,0 +1,20 @@
+/*
+ * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#ifndef STRACE_KERNEL_OLD_TIMESPEC_H
+# define STRACE_KERNEL_OLD_TIMESPEC_H
+
+typedef struct {
+# if SIZEOF_KERNEL_LONG_T == 4 || defined LINUX_MIPSN32
+       int
+# else
+       long long
+# endif
+       tv_sec, tv_nsec;
+} kernel_old_timespec_t;
+
+#endif /* !STRACE_KERNEL_OLD_TIMESPEC_H */
diff --git a/tests-mx32/kernel_old_timex.h b/tests-mx32/kernel_old_timex.h
new file mode 100644 (file)
index 0000000..2591a1a
--- /dev/null
@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#ifndef STRACE_KERNEL_OLD_TIMEX_H
+# define STRACE_KERNEL_OLD_TIMEX_H
+
+# define HAVE_ARCH_TIME32_SYSCALLS 1
+# include "kernel_timex.h"
+# undef HAVE_ARCH_TIME32_SYSCALLS
+
+typedef
+# if SIZEOF_KERNEL_LONG_T == 4 || defined LINUX_MIPSN32
+kernel_timex32_t
+# elif defined __sparc__
+kernel_sparc64_timex_t
+# else
+kernel_timex64_t
+# endif
+kernel_old_timex_t;
+
+#endif /* !STRACE_KERNEL_OLD_TIMEX_H */
index 6e1c0eacba85eccea6e1b34dbc2f2b608c0bd54d..692f94a1e2a08155eedfa1baf5a5aac8ad698ecb 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Check kernel version decoding.
  *
- * Copyright (c) 2015-2019 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -15,7 +15,6 @@
 #include <string.h>
 #include <unistd.h>
 
-#include <asm/unistd.h>
 #include "scno.h"
 
 #ifdef HAVE_LINUX_BPF_H
@@ -35,9 +34,9 @@ static void
 print_bpf_attr(void)
 {
 #if XLAT_RAW
-       printf("{prog_type=0x16"
+       printf("{prog_type=0x1f"
 #else
-       printf("{prog_type=0x16 /* BPF_PROG_TYPE_??? */"
+       printf("{prog_type=0x1f /* BPF_PROG_TYPE_??? */"
 #endif
                ", insn_cnt=3134983661"
                ", insns=NULL"
@@ -70,7 +69,9 @@ print_bpf_attr(void)
                ", func_info_cnt=0"
                ", line_info_rec_size=0"
                ", line_info=NULL"
-               ", line_info_cnt=0}");
+               ", line_info_cnt=0"
+               ", attach_btf_id=0"
+               ", attach_prog_fd=0}");
 }
 
 int
@@ -78,7 +79,7 @@ main(void)
 {
        long ret;
        struct BPF_PROG_LOAD_struct prog = {
-               .prog_type = 22,
+               .prog_type = 31,
                .insn_cnt = 0xbadc0ded,
                .insns = 0,
                .license = 0,
index 5e5d91eddb65c6e5f01253311f09d839ca0919e4..3ab525877cb13dd1fe929335dbfc8fbee8bd5b10 100644 (file)
@@ -2,14 +2,13 @@
  * Check decoding of kexec_file_load syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
 #include "scno.h"
 
 #ifdef __NR_kexec_file_load
index ae7a72c0512351d7753ab57798349e2fc42ef08f..db515143553a4933b0948e676f15baa1ea1383df 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of kexec_load syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_kexec_load
 
index ccfd3b44c3c263caa9e09bfd4f22207d8f6efac7..6dc30fb90b8240cc9c939ba11c7b406911faf08f 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of keyctl syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_keyctl
 
@@ -45,7 +45,33 @@ struct keyctl_kdf_params {
 };
 # endif
 
+# ifndef HAVE_STRUCT_KEYCTL_PKEY_QUERY
+struct keyctl_pkey_query {
+       uint32_t supported_ops;
+       uint32_t key_size;
+       uint16_t max_data_size;
+       uint16_t max_sig_size;
+       uint16_t max_enc_size;
+       uint16_t max_dec_size;
+       uint32_t __spare[10];
+};
+# endif
+
+# ifndef HAVE_STRUCT_KEYCTL_PKEY_PARAMS
+struct keyctl_pkey_params {
+       int32_t  key_id;
+       uint32_t in_len;
+       union {
+               uint32_t out_len;
+               uint32_t in2_len;
+       };
+       uint32_t __spare[7];
+};
+# endif
+
 # include "xlat.h"
+# include "xlat/keyctl_caps0.h"
+# include "xlat/keyctl_caps1.h"
 # include "xlat/keyctl_commands.h"
 
 # ifndef KEY_SPEC_REQKEY_AUTH_KEY
@@ -71,10 +97,13 @@ bool buf_in_arg;
 
 # if XLAT_RAW
 #  define XARG_STR(v_) (v_), STRINGIFY(v_)
+#  define XSTR(v_, s_) STRINGIFY(v_)
 # elif XLAT_VERBOSE
 #  define XARG_STR(v_) (v_), STRINGIFY(v_) " /* " #v_ " */"
+#  define XSTR(v_, s_) STRINGIFY(v_) " /* " s_ " */"
 # else
 #  define XARG_STR ARG_STR
+#  define XSTR(v_, s_) s_
 # endif
 
 /*
@@ -125,6 +154,21 @@ print_arg(kernel_ulong_t arg, const char *str, const char *fmt, size_t size,
        }
 }
 
+void
+print_flags(const struct xlat *xlat, unsigned long long flags,
+           const char *const dflt)
+{
+# if XLAT_RAW
+       printf("%#llx", flags);
+# elif XLAT_VERBOSE
+       printf("%#llx /* ", flags);
+       printflags(xlat, flags, dflt);
+       printf(" */");
+# else
+       printflags(xlat, flags, dflt);
+# endif
+}
+
 /*
  * Arguments are passed as sz, val, str, fmt. Arguments are read until 4
  * arguments are retrieved or size of 0 is occurred.
@@ -268,6 +312,51 @@ kckdfp_to_str(struct keyctl_kdf_params *kdf, bool deref_hash, bool deref_oi,
        return buf;
 }
 
+const char *
+kcpp_to_str(struct keyctl_pkey_params *params, bool out, const char *key_str,
+           bool print_spare)
+{
+       static char buf[4096];
+
+       size_t left = sizeof(buf);
+       char *pos = buf;
+
+       append_str(&pos, &left, "{key_id=");
+
+# if XLAT_RAW
+       append_str(&pos, &left, "%d", params->key_id);
+# elif XLAT_VERBOSE
+       if (key_str)
+               append_str(&pos, &left, "%d /* %s */", params->key_id, key_str);
+       else
+               append_str(&pos, &left, "%d", params->key_id);
+# else
+       if (key_str)
+               append_str(&pos, &left, "%s", key_str);
+       else
+               append_str(&pos, &left, "%d", params->key_id);
+# endif
+
+       append_str(&pos, &left, ", in_len=%u, %s=%u",
+                  params->in_len,
+                  out ? "out_len" : "in2_len", params->out_len);
+
+       if (print_spare) {
+               append_str(&pos, &left, ", __spare=[");
+
+               for (size_t i = 0; i < ARRAY_SIZE(params->__spare); i++) {
+                       append_str(&pos, &left, "%s%#x",
+                                  i ? ", " : "", params->__spare[i]);
+               }
+
+               append_str(&pos, &left, "]");
+       }
+
+       append_str(&pos, &left, "}");
+
+       return buf;
+}
+
 int
 main(void)
 {
@@ -358,8 +447,10 @@ main(void)
        char *bogus_buf2 = tail_alloc(256);
        char *key_iov_str1;
        char *key_iov_str2 = tail_alloc(4096);
+       const char *errstr;
        ssize_t ret;
        ssize_t kis_size = 0;
+       long rc;
        size_t i;
 
        key_iov[0].iov_base = short_type;
@@ -1092,6 +1183,222 @@ main(void)
 
        nul_terminated_buf = true;
 
+       /* KEYCTL_PKEY_QUERY */
+       do_keyctl(ARG_STR(KEYCTL_PKEY_QUERY),
+                 sizeof(int32_t), bogus_key2, NULL, "%d",
+                 sizeof(kernel_ulong_t),
+                       (kernel_ulong_t) 0xfeedf157badc0dedLLU, NULL,
+                       kulong_fmt,
+                 sizeof(char *), bogus_str, NULL, ptr_fmt,
+                 sizeof(char *), ARG_STR(NULL), ptr_fmt);
+
+       struct keyctl_pkey_query query;
+       do_keyctl(ARG_STR(KEYCTL_PKEY_QUERY),
+                 sizeof(int32_t), XARG_STR(KEY_SPEC_THREAD_KEYRING), "%d",
+                 sizeof(kernel_ulong_t), (kernel_ulong_t) 0, NULL, kulong_fmt,
+                 sizeof(char *), "x\377\0\1", "\"x\\377\"", NULL,
+                 sizeof(&query), &query, NULL, ptr_fmt);
+
+       /*
+        * KEYCTL_PKEY_ENCRYPT, KEYCTL_PKEY_DECRYPT, KEYCTL_PKEY_SIGN,
+        * KEYCTL_PKEY_VERIFY
+        */
+       static const struct {
+               int op;
+               const char *str;
+               bool out;
+       } pkey_ops[] = {
+               { ARG_STR(KEYCTL_PKEY_ENCRYPT), true },
+               { ARG_STR(KEYCTL_PKEY_DECRYPT), true },
+               { ARG_STR(KEYCTL_PKEY_SIGN),    true },
+               { ARG_STR(KEYCTL_PKEY_VERIFY),  false },
+       };
+       static const char pkey_str1[] = STR32 "xxx";
+       static const char pkey_str2[] = "\1\2HAI\255\0\1";
+       static struct {
+               struct keyctl_pkey_params params;
+               const char * key_str;
+               bool print_spare;
+               const char *str1;
+               const char *str2;
+       } pkey_vecs[] = {
+               { { KEY_SPEC_PROCESS_KEYRING, 0, { .out_len = 0 } },
+                 "KEY_SPEC_PROCESS_KEYRING", false, "\"\"", "\"\"" },
+               { { 0, 0, { .out_len = 0 }, .__spare = { 1 } },
+                 NULL, true, "\"\"", "\"\"" },
+               { { 0xdeadc0deU, 10, { .out_len = 10 },
+                   .__spare = { 0, 0xfacefeed } },
+                 NULL, true, "\"AbCdEfGhIj\"", NULL },
+               { { 0xdeadc0deU, sizeof(pkey_str1),
+                   { .out_len = sizeof(pkey_str2) - 1 },
+                   .__spare = { [6] = 0xdec0ded } },
+                 NULL, true,
+                 "\"AbCdEfGhIj\"...", "\"\\1\\2HAI\\255\\0\\1\"" },
+       };
+
+       char *pkey1 = tail_memdup(pkey_str1, sizeof(pkey_str1) - 1);
+       char *pkey2 = tail_memdup(pkey_str2, sizeof(pkey_str2) - 1);
+       struct keyctl_pkey_params *pkey_params =
+               tail_alloc(sizeof(*pkey_params));
+
+       for (i = 0; i < ARRAY_SIZE(pkey_ops); i++) {
+               do_keyctl(pkey_ops[i].op, pkey_ops[i].str,
+                         sizeof(char *), ARG_STR(NULL), ptr_fmt,
+                         sizeof(char *), ARG_STR(NULL), ptr_fmt,
+                         sizeof(char *), ARG_STR(NULL), ptr_fmt,
+                         sizeof(char *), ARG_STR(NULL), ptr_fmt);
+
+               do_keyctl(pkey_ops[i].op, pkey_ops[i].str,
+                         sizeof(char *), (uint32_t *) pkey_params + 1, NULL,
+                               ptr_fmt,
+                         sizeof(char *), "x\377\0\1", "\"x\\377\"", ptr_fmt,
+                         sizeof(char *), pkey1, NULL, ptr_fmt,
+                         sizeof(char *), pkey2, NULL, ptr_fmt);
+
+               for (size_t j = 0; j < ARRAY_SIZE(pkey_vecs); j++) {
+                       memcpy(pkey_params, &pkey_vecs[j].params,
+                              sizeof(*pkey_params));
+                       do_keyctl(pkey_ops[i].op, pkey_ops[i].str,
+                                 sizeof(char *), pkey_params,
+                                       kcpp_to_str(pkey_params,
+                                                   pkey_ops[i].out,
+                                                   pkey_vecs[j].key_str,
+                                                   pkey_vecs[j].print_spare),
+                                       ptr_fmt,
+                                 sizeof(char *), "", "\"\"", ptr_fmt,
+                                 sizeof(char *), pkey1, pkey_vecs[j].str1,
+                                       ptr_fmt,
+                                 sizeof(char *), pkey2,
+                                       pkey_ops[i].out ? NULL
+                                                       : pkey_vecs[j].str2,
+                                       ptr_fmt);
+               }
+       }
+
+       /* KEYCTL_MOVE */
+       static const struct {
+               kernel_ulong_t key;
+               const char *str;
+       } move_keys[] = {
+                 { 0xbadc0ded, "-1159983635" },
+                 { XARG_STR(KEY_SPEC_THREAD_KEYRING) },
+       };
+       static const struct {
+               kernel_ulong_t val;
+               const char *str;
+       } move_flags[] = {
+               { (kernel_ulong_t) 0xbadc0ded00000000ULL, "0" },
+               { 1, XSTR(0x1, "KEYCTL_MOVE_EXCL") },
+               { (kernel_ulong_t) 0xbadc0ded00000001ULL,
+                 XSTR(0x1, "KEYCTL_MOVE_EXCL") },
+               { (kernel_ulong_t) 0xfffffffffffffffeULL,
+# if !XLAT_RAW
+                 "0xfffffffe /* KEYCTL_MOVE_??? */"
+# else
+                 "0xfffffffe"
+# endif
+                },
+               { (kernel_ulong_t) 0xffffffffffffffffULL,
+                 XSTR(0xffffffff, "KEYCTL_MOVE_EXCL|0xfffffffe") },
+       };
+
+       for (i = 0; i < ARRAY_SIZE(move_keys) * ARRAY_SIZE(move_flags); i++) {
+               do_keyctl(ARG_STR(KEYCTL_MOVE),
+                         sizeof(kernel_ulong_t),
+                               move_keys[i % ARRAY_SIZE(move_keys)].key,
+                               move_keys[i % ARRAY_SIZE(move_keys)].str,
+                               kulong_fmt,
+                         sizeof(kernel_ulong_t),
+                               move_keys[(i + 1) % ARRAY_SIZE(move_keys)].key,
+                               move_keys[(i + 1) % ARRAY_SIZE(move_keys)].str,
+                               kulong_fmt,
+                         sizeof(kernel_ulong_t),
+                               move_keys[(i + 2) % ARRAY_SIZE(move_keys)].key,
+                               move_keys[(i + 2) % ARRAY_SIZE(move_keys)].str,
+                               kulong_fmt,
+                         sizeof(kernel_ulong_t),
+                               move_flags[i % ARRAY_SIZE(move_flags)].val,
+                               move_flags[i % ARRAY_SIZE(move_flags)].str,
+                               kulong_fmt);
+       }
+
+       /* KEYCTL_CAPABILITIES */
+       unsigned char *caps1 = tail_alloc(1);
+       unsigned char *caps2 = tail_alloc(2);
+       unsigned char *caps4 = tail_alloc(4);
+
+       do_keyctl(ARG_STR(KEYCTL_CAPABILITIES),
+                 sizeof(unsigned char *), ARG_STR(NULL), ptr_fmt,
+                 sizeof(kernel_ulong_t),
+                       (kernel_ulong_t) 0xfeedf157badc0dedLLU, NULL,
+                       ksize_fmt,
+                 0);
+
+       const kernel_ulong_t bad_len = (kernel_ulong_t) 0xbadc0ded00000001LLU;
+       rc = syscall(__NR_keyctl, KEYCTL_CAPABILITIES, caps1, bad_len);
+       errstr = sprintrc(rc);
+       printf("keyctl(" XSTR(0x1f, "KEYCTL_CAPABILITIES") ", ");
+       if (rc >= 0) {
+               printf("[");
+               if (rc >= 1)
+                       print_flags(keyctl_caps0, caps1[0], "KEYCTL_CAPS0_???");
+               printf("]");
+       } else {
+               printf("%p", caps1);
+       }
+       printf(", %llu) = %s\n", (unsigned long long) bad_len, errstr);
+
+       rc = syscall(__NR_keyctl, KEYCTL_CAPABILITIES, caps1, 2);
+       errstr = sprintrc(rc);
+       printf("keyctl(" XSTR(0x1f, "KEYCTL_CAPABILITIES") ", ");
+       if (rc >= 0) {
+               printf("[");
+               if (rc == 1)
+                       print_flags(keyctl_caps0, caps1[0], "KEYCTL_CAPS0_???");
+               printf("]");
+       } else {
+               printf("%p", caps1);
+       }
+       printf(", 2) = %s\n", errstr);
+
+       rc = syscall(__NR_keyctl, KEYCTL_CAPABILITIES, caps2, 2);
+       errstr = sprintrc(rc);
+       printf("keyctl(" XSTR(0x1f, "KEYCTL_CAPABILITIES") ", ");
+       if (rc >= 0) {
+               printf("[");
+               if (rc >= 1)
+                       print_flags(keyctl_caps0, caps2[0], "KEYCTL_CAPS0_???");
+               if (rc >= 2) {
+                       printf(", ");
+                       print_flags(keyctl_caps1, caps2[1], "KEYCTL_CAPS1_???");
+               }
+               printf("]");
+       } else {
+               printf("%p", caps2);
+       }
+       printf(", 2) = %s\n", errstr);
+
+       rc = syscall(__NR_keyctl, KEYCTL_CAPABILITIES, caps4, 4);
+       errstr = sprintrc(rc);
+       printf("keyctl(" XSTR(0x1f, "KEYCTL_CAPABILITIES") ", ");
+       if (rc >= 0) {
+               printf("[");
+               if (rc >= 1)
+                       print_flags(keyctl_caps0, caps4[0], "KEYCTL_CAPS0_???");
+               if (rc >= 2) {
+                       printf(", ");
+                       print_flags(keyctl_caps1, caps4[1], "KEYCTL_CAPS1_???");
+               }
+               if (rc >= 3)
+                       printf(", %hhx", caps4[2]);
+               if (rc >= 4)
+                       printf(", %hhx", caps4[3]);
+               printf("]");
+       } else {
+               printf("%p", caps4);
+       }
+       printf(", 4) = %s\n", errstr);
+
        puts("+++ exited with 0 +++");
 
        return 0;
diff --git a/tests-mx32/kill--pidns-translation.c b/tests-mx32/kill--pidns-translation.c
new file mode 100644 (file)
index 0000000..4736ca1
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "kill.c"
diff --git a/tests-mx32/kill--pidns-translation.gen.test b/tests-mx32/kill--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..4e909e9
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kill--pidns-translation test_pidns -a12 -e trace=kill -esignal=none); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a12 -e trace=kill -esignal=none
index 4ef9b62833b3f23d735eb67f2630d2a45e9d9bff..653e945c26b0de80c1ba588c597fcaa68a881e42 100644 (file)
@@ -3,14 +3,15 @@
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Fei Jie <feij.fnst@cn.fujitsu.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
+#include "pidns.h"
 
 #ifdef __NR_kill
 
@@ -26,6 +27,8 @@ handler(int sig)
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        const struct sigaction act = { .sa_handler = handler };
        if (sigaction(SIGALRM, &act, NULL))
                perror_msg_and_fail("sigaction");
@@ -37,18 +40,23 @@ main(void)
                perror_msg_and_fail("sigprocmask");
 
        const int pid = getpid();
+       const char *pid_str = pidns_pid2str(PT_TGID);
        long rc = syscall(__NR_kill, pid, (long) 0xdefaced00000000ULL | SIGALRM);
-       printf("kill(%d, SIGALRM) = %ld\n", pid, rc);
+       pidns_print_leader();
+       printf("kill(%d%s, SIGALRM) = %ld\n", pid, pid_str, rc);
 
        const long big_pid = (long) 0xfacefeedbadc0dedULL;
        const long big_sig = (long) 0xdeadbeefcafef00dULL;
        rc = syscall(__NR_kill, big_pid, big_sig);
+       pidns_print_leader();
        printf("kill(%d, %d) = %ld %s (%m)\n",
               (int) big_pid, (int) big_sig, rc, errno2name());
 
        rc = syscall(__NR_kill, (long) 0xdefaced00000000ULL | pid, 0);
-       printf("kill(%d, 0) = %ld\n", pid, rc);
+       pidns_print_leader();
+       printf("kill(%d%s, 0) = %ld\n", pid, pid_str, rc);
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
index 4319bdb2a3b003f517a05549ffbc689360a33aba..0716db70002f215517cc893a0e1ee11ab062f3eb 100644 (file)
@@ -2,7 +2,7 @@
  * Validate syscallent.h file.
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -12,7 +12,7 @@
 #include "sysent.h"
 #include <stdio.h>
 #include <string.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 #include "sysent_shorthand_defs.h"
 
diff --git a/tests-mx32/ksysent.gen.test b/tests-mx32/ksysent.gen.test
new file mode 100755 (executable)
index 0000000..c63ea44
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ksysent ../$NAME ); do not edit.
+. "${srcdir=.}/init.sh"
+../$NAME 
index c35ba22fe93ee22767a78f221a4e0c43d4ff41dc..92069e7560aff2a59619e7e347c5d157efcf2f0b 100644 (file)
@@ -1,6 +1,6 @@
 #!/bin/sed -rnf
 #
-# Copyright (c) 2015-2018 The strace developers.
+# Copyright (c) 2015-2019 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -8,6 +8,9 @@
 # should not have been exported at all
 /#define[[:space:]]+__NR_(sys_epoll_|arch_specific_syscall|arm_sync_file_range|syscalls|syscall_count|syscall_max|available|reserved|unused)/d
 
+# remove new aliases to traditional names on alpha
+/#define[[:space:]]+__NR_get[gup]id[[:space:]]+__NR_getx[gup]id$/d
+
 # should not have been named this way
 s/__NR_(arm|xtensa)_fadvise64_64/__NR_fadvise64_64/
 
@@ -17,4 +20,12 @@ s/__NR_madvise1/__NR_madvise/
 s/__NR_paccept/__NR_accept4/
 
 # generate
+
+# prioritize __NR_umount over __NR_umount2
+s/#define[[:space:]]+__NR_(umount)2([[:space:]].*)?$/#if defined __NR_\12 \&\& (!defined __NR_\1 || __NR_\1 != __NR_\12)\n[__NR_\12 \& 0xffff] = "\12",\n#endif/p
+
+# prioritize __NR_osf_shmat over __NR_shmat
+s/#define[[:space:]]+__NR_(shmat)([[:space:]].*)?$/#if defined __NR_\1 \&\& (!defined __NR_osf_\1 || __NR_osf_\1 != __NR_\1)\n[__NR_\1 \& 0xffff] = "\1",\n#endif/p
+
+# generic
 s/#define[[:space:]]+__NR_([a-z_][^[:space:]]+)([[:space:]].*)?$/#ifdef __NR_\1\n[__NR_\1 \& 0xffff] = "\1",\n#endif/p
diff --git a/tests-mx32/ksysent.test b/tests-mx32/ksysent.test
deleted file mode 100755 (executable)
index 347ed67..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/sh
-#
-# Copyright (c) 2015-2018 The strace developers.
-# All rights reserved.
-#
-# SPDX-License-Identifier: GPL-2.0-or-later
-
-# Validate syscallent.h
-
-./ksysent
index c9008219b6d5a2606552eefd90890359f885ddb2..b8d40945672faa3a5c287602108581631e8c9d82 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_lchown
 
index 1a505e1f9151cf75e8604946d08ca6fe67529b94..c2542a82278b131af5f54d24d154472feeaa70cf 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_lchown32
 
index 0f23597dcf07b9b1fa20abefac91fc3d85101957..4dbe4edf89e7ed1b999435d9609b0dac9db3ef9c 100644 (file)
@@ -2,6 +2,7 @@
  * Wrappers for recvmmsg and sendmmsg syscalls.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -9,7 +10,7 @@
 
 #include "tests.h"
 #include <errno.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifndef __NR_recvmmsg
 # define __NR_recvmmsg -1
index 34f65478731cdaf2ce01c4a3df665ccb4066fe13..6692d4b0e302e1527200c6ada23f1e1edb0c4a0b 100644 (file)
@@ -2,6 +2,7 @@
  * Invoke a socket syscall, either directly or via __NR_socketcall.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +11,7 @@
 #include "tests.h"
 #include <errno.h>
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 /*
  * Invoke a socket syscall, either directly or via __NR_socketcall.
index 357eb0becb86fe1ac1726e4247ef6e67b5fccec5..468086fe51c008bcd7561cd0a4c6b150a1842e8b 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_link
 
index 748ddf18181abea76bf7324f4697dedeedc125cf..7e348f120e21b55bc504047ffd3ea1a5922f5503 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_linkat
 
@@ -30,7 +30,7 @@ main(void)
        printf("linkat(%s, \"%s\", %s, \"%s\", %s) = %ld %s (%m)\n",
               "AT_FDCWD", sample_1, "AT_FDCWD", sample_2,
               "AT_SYMLINK_NOFOLLOW|AT_REMOVEDIR|AT_SYMLINK_FOLLOW"
-              "|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|0xffffe0ff",
+              "|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|AT_RECURSIVE|0xffff60ff",
               rc, errno2name());
 
        puts("+++ exited with 0 +++");
index 169fa913f94b41efad62b530fc5b796c256c1b3d..55e6336381aec1b963df57fc18fb5803b0845fd7 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR__llseek
 
index 652d3e6a414a0fdee7e4c3990a66b1cac1557c96..42e39c55d7dd0918cf42ebf7db0cba6d46d8f8b7 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Check handling of localtime() returning NULL in printleader().
  *
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -14,7 +14,7 @@
 #include <time.h>
 #include <unistd.h>
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 int
 main(void)
diff --git a/tests-mx32/lock_file.c b/tests-mx32/lock_file.c
new file mode 100644 (file)
index 0000000..56cf112
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/file.h>
+
+/* Obtain an exclusive lock on dirname(path_name)/lock_name file.  */
+int
+lock_file_by_dirname(const char *path_name, const char *lock_name)
+{
+       const char *slash = path_name ? strrchr(path_name, '/') : NULL;
+       const int plen = slash ? (int) (slash - path_name) + 1 : 0;
+
+       char *lock_file = NULL;
+       if (asprintf(&lock_file, "%.*s%s", plen, path_name, lock_name) < 0)
+               perror_msg_and_fail("asprintf");
+
+       int lock_fd = open(lock_file, O_RDONLY);
+       if (lock_fd < 0)
+               perror_msg_and_fail("open: %s", lock_file);
+
+       if (flock(lock_fd, LOCK_EX))
+               perror_msg_and_fail("flock: %s", lock_file);
+
+       free(lock_file);
+
+       return lock_fd;
+}
index 430ae135b21113fe1bd5d853cc54b26a4da26c58..9617a4caa9896918325ca67e5192f7c073e783a4 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of lookup_dcookie syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_lookup_dcookie
 
index e8b0bbb515dcc5f49a07235650ca546024b44b65..3e5d3ba9ca7ac7a31d6147339192593344cf2858 100755 (executable)
@@ -2,7 +2,7 @@
 #
 # Check tracing of looping threads.
 #
-# Copyright (c) 2009-2019 The strace developers.
+# Copyright (c) 2009-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -20,16 +20,16 @@ inc="$(nproc)"
 [ "$inc" -ge 1 ] || inc=1
 
 timeout_2="$(($TIMEOUT_DURATION/2))"
-timeout_8="$(($TIMEOUT_DURATION/8))"
+timeout_16="$(($TIMEOUT_DURATION/16))"
 nproc=1
 
-run_prog "../$NAME" "$timeout_8" "$nproc"
+run_prog "../$NAME" "$timeout_16" "$nproc"
 
 while :; do
-       run_strace -f -qq -enone -esignal=none "../$NAME" "$timeout_2" "$nproc"
+       run_strace --follow-forks -qq -enone -esignal=none "../$NAME" "$timeout_2" "$nproc"
 
        s1="$(date +%s)"
-       [ "$(($s1-$s0))" -lt "$timeout_8" ] ||
+       [ "$(($s1-$s0))" -lt "$timeout_16" ] ||
                break
 
        nproc="$(($nproc+$inc))"
index 0e12bf9ca4b9cfbbe777fbce164ee2f0f0720e21..f0d842d1f582ce45cf1b3760fa3e97bbc69f69a8 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_lseek
 
index 1a200fe7eb9011b261315fe03840c7593032b1f4..61c5cb538d4712787fefc9d630b16e7d8bf2a7d0 100644 (file)
@@ -1,13 +1,13 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_lstat
 
index 7231c491139852702048115d86f9b040b118e1ea..71155b6926ec0745d62cdbe000d50d374cd78f38 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (lstat -a32 -v -P stat.sample -P /dev/full); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (lstat -a31 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
+run_strace_match_diff -a31 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full
index 0c0cf8792e18729263d2a428fbf1ae988a62ec79..de5a265174ab9c99f816bc6e3652fb6a38153a74 100644 (file)
@@ -1,13 +1,13 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_lstat64
 
index 124cce4bbaec2ca81c622535acbf6e41fe368449..4584f9d8aa29cf573fda5aeea4a2d06f9eeac9ea 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (lstat64 -a32 -v -P stat.sample -P /dev/full); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (lstat64 -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
+run_strace_match_diff -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full
index 33a7abbedc7f14206eb053cf038c58b15b6bb39a..51118c6a0f8fd18be4276e286df32515d947f552 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 #include <stdio.h>
 #include <sys/mman.h>
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 static const char *errstr;
 
diff --git a/tests-mx32/maybe_switch_current_tcp--quiet-thread-execve.c b/tests-mx32/maybe_switch_current_tcp--quiet-thread-execve.c
new file mode 100644 (file)
index 0000000..b5c0a50
--- /dev/null
@@ -0,0 +1,2 @@
+#define QUIET_MSG 1
+#include "maybe_switch_current_tcp.c"
diff --git a/tests-mx32/maybe_switch_current_tcp--quiet-thread-execve.gen.test b/tests-mx32/maybe_switch_current_tcp--quiet-thread-execve.gen.test
new file mode 100755 (executable)
index 0000000..43327db
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (maybe_switch_current_tcp--quiet-thread-execve -a30 -s48 -f -e trace=execveat --quiet=personality,thread-execve); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a30 -s48 -f -e trace=execveat --quiet=personality,thread-execve
diff --git a/tests-mx32/maybe_switch_current_tcp.c b/tests-mx32/maybe_switch_current_tcp.c
new file mode 100644 (file)
index 0000000..7ba1b9b
--- /dev/null
@@ -0,0 +1,83 @@
+/*
+ * Check for PTRACE_EVENT_EXEC diagnostics.
+ *
+ * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2019-2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <errno.h>
+#include <pthread.h>
+#include <stdio.h>
+#include <unistd.h>
+#include "scno.h"
+
+#ifndef QUIET_MSG
+# define QUIET_MSG 0
+#endif
+
+static pid_t leader;
+static volatile unsigned int trigger;
+
+static void *
+thread(void *arg)
+{
+       const char *argv[] = {((char **) arg)[0], "1", "2", NULL};
+       int tid = syscall(__NR_gettid);
+
+       printf("%-5d execveat(AT_FDCWD, \"%s\", [\"%s\", \"%s\", \"%s\"]"
+              ", NULL, 0 <pid changed to %d ...>\n"
+#if !QUIET_MSG
+              "%-5d +++ superseded by execve in pid %d +++\n"
+#endif
+              , tid, argv[0], argv[0], argv[1], argv[2], leader
+#if !QUIET_MSG
+              , leader, tid
+#endif
+              );
+
+       while (!trigger) {
+               /* Wait for the parent to enter the busy loop.  */
+       }
+
+       syscall(__NR_execveat, -100, argv[0], argv, NULL, 0);
+       perror_msg_and_fail("execveat");
+}
+
+int
+main(int ac, char **av)
+{
+       setvbuf(stdout, NULL, _IONBF, 0);
+       leader = getpid();
+
+       if (ac <= 1) {
+               char *argv[] = {av[0], (char *) "1", NULL};
+               printf("%-5d execveat(AT_FDCWD, \"%s\""
+                      ", [\"%s\", \"%s\"], NULL, 0) = 0\n",
+                      leader, argv[0], argv[0], argv[1]);
+               syscall(__NR_execveat, -100, argv[0], argv, NULL, 0);
+               perror_msg_and_skip("execveat");
+       }
+
+       /*
+        * Since execveat is supported by the kernel,
+        * PTRACE_EVENT_EXEC support in the kernel is good enough.
+        */
+       if (ac <= 2) {
+               pthread_t t;
+               errno = pthread_create(&t, NULL, thread, av);
+               if (errno)
+                       perror_msg_and_fail("pthread_create");
+
+               for (;;)
+                       ++trigger;
+       }
+
+       printf("%-5d <... execveat resumed>) = 0\n"
+              "%-5d +++ exited with 0 +++\n",
+              leader, leader);
+       return 0;
+}
diff --git a/tests-mx32/maybe_switch_current_tcp.gen.test b/tests-mx32/maybe_switch_current_tcp.gen.test
new file mode 100755 (executable)
index 0000000..ebd50ec
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (maybe_switch_current_tcp -a30 -f -e trace=execveat); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a30 -f -e trace=execveat
diff --git a/tests-mx32/mbind-Xabbrev.c b/tests-mx32/mbind-Xabbrev.c
new file mode 100644 (file)
index 0000000..a318b5d
--- /dev/null
@@ -0,0 +1 @@
+#include "mbind.c"
diff --git a/tests-mx32/mbind-Xabbrev.gen.test b/tests-mx32/mbind-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..3ecf183
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mbind-Xabbrev -Xabbrev -e trace=mbind); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -Xabbrev -e trace=mbind
diff --git a/tests-mx32/mbind-Xraw.c b/tests-mx32/mbind-Xraw.c
new file mode 100644 (file)
index 0000000..86f9608
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "mbind.c"
diff --git a/tests-mx32/mbind-Xraw.gen.test b/tests-mx32/mbind-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..b66b481
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mbind-Xraw -a33 -Xraw -e trace=mbind); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a33 -Xraw -e trace=mbind
diff --git a/tests-mx32/mbind-Xverbose.c b/tests-mx32/mbind-Xverbose.c
new file mode 100644 (file)
index 0000000..29285cc
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "mbind.c"
diff --git a/tests-mx32/mbind-Xverbose.gen.test b/tests-mx32/mbind-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..20ebed6
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mbind-Xverbose -Xverbose -e trace=mbind); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -Xverbose -e trace=mbind
index 8e478a6f4f512c74cb78a0b57746fb50f4174496..321defb9339e4032bdb1f479d45f7fe06efe3ead 100644 (file)
 /*
  * Check decoding of mbind syscall.
  *
- * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_mbind
 
 # include <stdio.h>
 # include <unistd.h>
 
+static const char *errstr;
+
+static long
+k_mbind(const unsigned long start,
+       const unsigned long len,
+       const unsigned long mode,
+       const unsigned long nmask,
+       const unsigned long maxnode,
+       const unsigned int flags)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t arg1 = start;
+       const kernel_ulong_t arg2 = len;
+       const kernel_ulong_t arg3 = mode;
+       const kernel_ulong_t arg4 = nmask;
+       const kernel_ulong_t arg5 = maxnode;
+       const kernel_ulong_t arg6 = fill | flags;
+       const long rc = syscall(__NR_mbind, arg1, arg2, arg3, arg4, arg5, arg6);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
+# if XLAT_RAW
+#  define out_str      raw
+#  define flags_str    "0xffffffff"
+# elif XLAT_VERBOSE
+#  define out_str      verbose
+#  define flags_str    "0xffffffff /* MPOL_MF_STRICT|MPOL_MF_MOVE" \
+                       "|MPOL_MF_MOVE_ALL|0xfffffff8 */"
+# else
+#  define out_str      abbrev
+#  define flags_str    "MPOL_MF_STRICT|MPOL_MF_MOVE|MPOL_MF_MOVE_ALL|0xfffffff8"
+# endif
+
+static struct {
+       unsigned long val;
+       const char *raw;
+       const char *verbose;
+       const char *abbrev;
+} mpol_modes[] = {
+       { ARG_STR(0),
+         "0 /* MPOL_DEFAULT */",
+         "MPOL_DEFAULT" },
+       { ARG_STR(0x1),
+         "0x1 /* MPOL_PREFERRED */",
+         "MPOL_PREFERRED" },
+       { ARG_STR(0x2),
+         "0x2 /* MPOL_BIND */",
+         "MPOL_BIND" },
+       { ARG_STR(0x3),
+         "0x3 /* MPOL_INTERLEAVE */",
+         "MPOL_INTERLEAVE" },
+       { ARG_STR(0x4),
+         "0x4 /* MPOL_LOCAL */",
+         "MPOL_LOCAL" },
+       { ARG_STR(0x8000),
+         "0x8000 /* MPOL_DEFAULT|MPOL_F_STATIC_NODES */",
+         "MPOL_DEFAULT|MPOL_F_STATIC_NODES" },
+       { ARG_STR(0x4001),
+         "0x4001 /* MPOL_PREFERRED|MPOL_F_RELATIVE_NODES */",
+         "MPOL_PREFERRED|MPOL_F_RELATIVE_NODES" },
+       { ARG_STR(0xc002),
+         "0xc002 /* MPOL_BIND|MPOL_F_STATIC_NODES|MPOL_F_RELATIVE_NODES */",
+         "MPOL_BIND|MPOL_F_STATIC_NODES|MPOL_F_RELATIVE_NODES" },
+       { ARG_STR(0x5),
+         "0x5 /* MPOL_??? */",
+         "0x5 /* MPOL_??? */" },
+       { ARG_STR(0xffff3fff),
+         "0xffff3fff /* MPOL_??? */",
+         "0xffff3fff /* MPOL_??? */" },
+       { ARG_STR(0xffffffff),
+         "0xffffffff /* MPOL_F_STATIC_NODES|MPOL_F_RELATIVE_NODES|0xffff3fff */",
+         "MPOL_F_STATIC_NODES|MPOL_F_RELATIVE_NODES|0xffff3fff" },
+# if SIZEOF_LONG > 4
+       { 0xffffffff00000000UL,
+         "0xffffffff00000000",
+         "0xffffffff00000000 /* MPOL_??? */",
+         "0xffffffff00000000 /* MPOL_??? */" },
+       { 0xffffffffffff3fffUL,
+         "0xffffffffffff3fff",
+         "0xffffffffffff3fff /* MPOL_??? */",
+         "0xffffffffffff3fff /* MPOL_??? */" },
+       { -1UL,
+         "0xffffffffffffffff",
+         "0xffffffffffffffff /* MPOL_F_STATIC_NODES|MPOL_F_RELATIVE_NODES"
+         "|0xffffffffffff3fff */",
+         "MPOL_F_STATIC_NODES|MPOL_F_RELATIVE_NODES|0xffffffffffff3fff" },
+# endif
+};
+
 int
 main(void)
 {
-       const unsigned long len = (unsigned long) 0xcafef00dbadc0dedULL;
-       const unsigned long mode = 3;
-       const unsigned long nodemask = (unsigned long) 0xfacefeedfffffff1ULL;
-       const unsigned long maxnode = (unsigned long) 0xdeadbeeffffffff2ULL;
-       const unsigned long flags = -1UL;
-
-       long rc = syscall(__NR_mbind, 0, len, mode, nodemask, maxnode, flags);
-       printf("mbind(NULL, %lu, %s, %#lx, %lu, %s|%#x) = %ld %s (%m)\n",
-              len, "MPOL_INTERLEAVE", nodemask, maxnode,
-              "MPOL_MF_STRICT|MPOL_MF_MOVE|MPOL_MF_MOVE_ALL",
-              (unsigned) flags & ~7, rc, errno2name());
+       const unsigned long size = get_page_size();
+       unsigned long *const addr = tail_alloc(size);
+       const unsigned long start = (unsigned long) 0xfffffff1fffffff2ULL;
+       const unsigned long len = (unsigned long) 0xfffffff4fffffff4ULL;
+       const unsigned long nodemask = (unsigned long) 0xfffffff5fffffff6ULL;
+       const unsigned long maxnode = (unsigned long) 0xfffffff7fffffff8ULL;
+
+       if (k_mbind((unsigned long) addr, size, mpol_modes[0].val, 0, 0, 0))
+               perror_msg_and_skip("mbind");
+       printf("mbind(%p, %lu, %s, NULL, 0, 0) = 0\n",
+              addr, size, mpol_modes[0].out_str);
+
+       for (unsigned int i = 0; i < ARRAY_SIZE(mpol_modes); ++i) {
+               if (i) {
+                       k_mbind((unsigned long) addr, size, mpol_modes[i].val,
+                               0, 0, 0);
+                       printf("mbind(%p, %lu, %s, NULL, 0, 0) = %s\n",
+                              addr, size, mpol_modes[i].out_str, errstr);
+               }
+
+               k_mbind(start, len, mpol_modes[i].val,
+                       nodemask, maxnode, -1U);
+               printf("mbind(%#lx, %lu, %s, %#lx, %lu, %s) = %s\n",
+                      start, len, mpol_modes[i].out_str,
+                      nodemask, maxnode, flags_str, errstr);
+       }
 
        puts("+++ exited with 0 +++");
        return 0;
index 0e55497b10879f4a31d6e6315bab6201b6da941e..bdacf7f37ea7ac5d27d8d67748ef7cac14354c64 100644 (file)
@@ -1,13 +1,12 @@
 /*
  * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
 #include "scno.h"
 
 #ifdef __NR_membarrier
index 2658a1ba21449b7ef3eaacc69d500bb2d1a27eb2..06e017ef4c6cfd4b4cdb79c274c26d76d8f69a81 100644 (file)
@@ -2,13 +2,13 @@
  * Check decoding of memfd_create syscall.
  *
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
 #include "scno.h"
 
 #ifdef __NR_memfd_create
diff --git a/tests-mx32/migrate_pages--pidns-translation.c b/tests-mx32/migrate_pages--pidns-translation.c
new file mode 100644 (file)
index 0000000..ec34938
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "migrate_pages.c"
diff --git a/tests-mx32/migrate_pages--pidns-translation.gen.test b/tests-mx32/migrate_pages--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..c6b5b3a
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (migrate_pages--pidns-translation test_pidns -a33 -e trace=migrate_pages); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a33 -e trace=migrate_pages
index e8e66eceb5008bbecb1b7bfb220decd813d75f1c..34da2808ce4d0b944bbd552d282b5f03592010ab 100644 (file)
@@ -2,13 +2,15 @@
  * Check decoding of migrate_pages syscall.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
+#include "pidns.h"
 
 #ifdef __NR_migrate_pages
 
 int
 main(void)
 {
-       const long pid = (long) 0xfacefeedffffffffULL;
+       PIDNS_TEST_INIT;
+
+       const long pid = (long) 0xfacefeed00000000ULL | getpid();
        long rc = syscall(__NR_migrate_pages, pid, 0, 0, 0);
-       printf("migrate_pages(%d, 0, NULL, NULL) = %ld %s (%m)\n",
-              (int) pid, rc, errno2name());
 
+       pidns_print_leader();
+       printf("migrate_pages(%d%s, 0, NULL, NULL) = %ld",
+               (int) pid, pidns_pid2str(PT_TGID), rc);
+
+       if (rc < 0)
+               printf(" %s (%m)\n", errno2name());
+       else
+               printf("\n");
+
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
index e6e62ef65671965482b0b9604538b88e80140486..9faee7eb3f1193a938d0f45ea3540f28c54b8620 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_mkdir
 
index 91bf06be3c39077e39827ce53b96b688f83b0ef2..1b5a68f777693fd9f038a6bc99d4a143325d8343 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_mkdirat
 
index 94d80284a610a802f90e5d5d7416b9ec0293519e..e4d0e5fcfc924b379b83ac87bf5d856a3c9bda8b 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_mknod
 
@@ -31,44 +31,44 @@ main(int ac, char **av)
        sample = av[0];
 
        long rc = call_mknod(0, dev);
-       printf("mknod(\"%s\", 000) = %ld %s (%m)\n",
-              sample, rc, errno2name());
+       printf("mknod(\"%s\", 000) = %s\n",
+              sample, sprintrc(rc));
 
        rc = call_mknod(0xffff, dev);
-       printf("mknod(\"%s\", %#03ho) = %ld %s (%m)\n",
-              sample, (unsigned short) -1, rc, errno2name());
+       printf("mknod(\"%s\", %#03ho) = %s\n",
+              sample, (unsigned short) -1, sprintrc(rc));
 
        rc = call_mknod(S_IFREG, 0);
-       printf("mknod(\"%s\", S_IFREG|000) = %ld %s (%m)\n",
-              sample, rc, errno2name());
+       printf("mknod(\"%s\", S_IFREG|000) = %s\n",
+              sample, sprintrc(rc));
 
        rc = call_mknod(S_IFDIR | 06, 0);
-       printf("mknod(\"%s\", S_IFDIR|006) = %ld %s (%m)\n",
-              sample, rc, errno2name());
+       printf("mknod(\"%s\", S_IFDIR|006) = %s\n",
+              sample, sprintrc(rc));
 
        rc = call_mknod(S_IFLNK | 060, 0);
-       printf("mknod(\"%s\", S_IFLNK|060) = %ld %s (%m)\n",
-              sample, rc, errno2name());
+       printf("mknod(\"%s\", S_IFLNK|060) = %s\n",
+              sample, sprintrc(rc));
 
        rc = call_mknod(S_IFIFO | 0600, 0);
-       printf("mknod(\"%s\", S_IFIFO|0600) = %ld %s (%m)\n",
-              sample, rc, errno2name());
+       printf("mknod(\"%s\", S_IFIFO|0600) = %s\n",
+              sample, sprintrc(rc));
 
        dev = (unsigned long) 0xdeadbeef00000000ULL | makedev(1, 7);
 
        rc = call_mknod(S_IFCHR | 024, dev);
-       printf("mknod(\"%s\", S_IFCHR|024, makedev(0x1, 0x7)) = %ld %s (%m)\n",
-              sample, rc, errno2name());
+       printf("mknod(\"%s\", S_IFCHR|024, makedev(0x1, 0x7)) = %s\n",
+              sample, sprintrc(rc));
 
        const unsigned short mode = (0xffff & ~S_IFMT) | S_IFBLK;
        dev = (unsigned long) 0xdeadbeefbadc0dedULL;
 
        rc = call_mknod(mode, dev);
        printf("mknod(\"%s\", S_IFBLK|S_ISUID|S_ISGID|S_ISVTX|%#03ho"
-              ", makedev(%#x, %#x)) = %ld %s (%m)\n",
+              ", makedev(%#x, %#x)) = %s\n",
               sample, (short) (mode & ~(S_IFMT|S_ISUID|S_ISGID|S_ISVTX)),
               major((unsigned) dev), minor((unsigned) dev),
-              rc, errno2name());
+              sprintrc(rc));
 
        puts("+++ exited with 0 +++");
        return 0;
index 34b34d8073bcbcd8c1ff3802cbeb1d2fa7bba6ab..ffc56210df23a524835ba88d3ea0d3c3249c2b96 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_mknodat
 
index 0f31d20c812c33d09f85317604ae846289485810..c2550ba93f651e5039c8bd15ca9dd5dc0b83cf5e 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_mlock && defined __NR_munlock
 
index 23f1cd9aa8f94c3789174a85e04f8894956b7bab..0489afe3917ef50d11e3bc483216674d0adac6dc 100644 (file)
@@ -1,12 +1,12 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
 #include "scno.h"
 
 #ifdef __NR_mlock2
index 78e370e462d6b896f1a61f8edda968d2b0a13ecb..b642bbe23ca19a6b06d7b1020137a07888e68455 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Check decoding of modify_ldt syscall.
  *
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -9,7 +9,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_modify_ldt && defined HAVE_STRUCT_USER_DESC
 
@@ -23,18 +23,26 @@ void
 printrc(long rc)
 {
 # ifdef __x86_64__
-       int err = -rc;
+       /*
+        * Hopefully, we don't expect EPERM to be returned,
+        * otherwise we can't distinguish it on x32.
+        */
+       if (rc != -1) {
+               int err = -rc;
 
-       /* Thanks, long return type of syscall(2) */
-       printf("%lld", zero_extend_signed_to_ull(rc));
+               /* Thanks, long return type of syscall(2) */
+               printf("%lld", zero_extend_signed_to_ull(rc));
 
-       if (err > 0 && err < 0x1000) {
-               errno = err;
-               printf(" %s (%m)", errno2name());
+               if (err > 0 && err < 0x1000) {
+                       errno = err;
+                       printf(" %s (%m)", errno2name());
+               }
        }
-# else
-       printf("%s", sprintrc(rc));
+       else
 # endif
+       {
+               printf("%s", sprintrc(rc));
+       }
 
        puts("");
 }
diff --git a/tests-mx32/move_mount-P.c b/tests-mx32/move_mount-P.c
new file mode 100644 (file)
index 0000000..1e1cd5c
--- /dev/null
@@ -0,0 +1,2 @@
+#define PATH_TRACING
+#include "move_mount.c"
diff --git a/tests-mx32/move_mount-P.gen.test b/tests-mx32/move_mount-P.gen.test
new file mode 100755 (executable)
index 0000000..780d8c9
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (move_mount-P -y -P /dev/full -e trace=move_mount); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -y -P /dev/full -e trace=move_mount
diff --git a/tests-mx32/move_mount.c b/tests-mx32/move_mount.c
new file mode 100644 (file)
index 0000000..b6ebfda
--- /dev/null
@@ -0,0 +1,102 @@
+/*
+ * Check decoding of move_mount syscall.
+ *
+ * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_move_mount
+
+# include <fcntl.h>
+# include <limits.h>
+# include <stdio.h>
+# include <stdint.h>
+# include <unistd.h>
+
+static const char *errstr;
+
+static long
+k_move_mount(const unsigned int from_dfd, const void *from_fname,
+            const unsigned int to_dfd, const void *to_fname,
+            const unsigned int flags)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = fill | from_dfd;
+       const kernel_ulong_t arg2 = (uintptr_t) from_fname;
+       const kernel_ulong_t arg3 = fill | to_dfd;
+       const kernel_ulong_t arg4 = (uintptr_t) to_fname;
+       const kernel_ulong_t arg5 = fill | flags;
+       const long rc = syscall(__NR_move_mount,
+                               arg1, arg2, arg3, arg4, arg5, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
+int
+main(void)
+{
+       skip_if_unavailable("/proc/self/fd/");
+
+       static const char path_full[] = "/dev/full";
+       const char *const path = tail_memdup(path_full, sizeof(path_full));
+       const void *const efault = path + sizeof(path_full);
+       const char *const empty = efault - 1;
+       char *const fname = tail_alloc(PATH_MAX);
+       fill_memory_ex(fname, PATH_MAX, '0', 10);
+
+        int dfd = open(path, O_WRONLY);
+        if (dfd < 0)
+                perror_msg_and_fail("open: %s", path);
+
+       k_move_mount(-1, 0, -100, efault, 0);
+# ifndef PATH_TRACING
+       printf("move_mount(-1, NULL, AT_FDCWD, %p, 0) = %s\n", efault, errstr);
+# endif
+
+       k_move_mount(-100, efault, -1, 0, 0);
+# ifndef PATH_TRACING
+       printf("move_mount(AT_FDCWD, %p, -1, NULL, 0) = %s\n", efault, errstr);
+# endif
+
+       k_move_mount(dfd, fname, -100, empty, 1);
+       printf("move_mount(%d<%s>, \"%.*s\"..., AT_FDCWD, \"\", %s) = %s\n",
+              dfd, path, (int) PATH_MAX - 1, fname, "MOVE_MOUNT_F_SYMLINKS", errstr);
+
+       k_move_mount(-100, empty, dfd, fname, 0x10);
+       printf("move_mount(AT_FDCWD, \"\", %d<%s>, \"%.*s\"..., %s) = %s\n",
+              dfd, path, (int) PATH_MAX - 1, fname, "MOVE_MOUNT_T_SYMLINKS", errstr);
+
+# define f_flags_str "MOVE_MOUNT_F_SYMLINKS|MOVE_MOUNT_F_AUTOMOUNTS|MOVE_MOUNT_F_EMPTY_PATH"
+       fname[PATH_MAX - 1] = '\0';
+       k_move_mount(dfd, fname, -100, empty, 7);
+       printf("move_mount(%d<%s>, \"%s\", AT_FDCWD, \"\", %s) = %s\n",
+              dfd, path, fname, f_flags_str, errstr);
+
+# define t_flags_str "MOVE_MOUNT_T_SYMLINKS|MOVE_MOUNT_T_AUTOMOUNTS|MOVE_MOUNT_T_EMPTY_PATH"
+       k_move_mount(-100, empty, dfd, fname, 0x70);
+       printf("move_mount(AT_FDCWD, \"\", %d<%s>, \"%s\", %s) = %s\n",
+              dfd, path, fname, t_flags_str, errstr);
+
+       k_move_mount(-1, path, -100, empty, 0x77);
+       printf("move_mount(-1, \"%s\", AT_FDCWD, \"\", %s) = %s\n",
+              path, f_flags_str "|" t_flags_str, errstr);
+
+       k_move_mount(-100, empty, -1, path, -1);
+       printf("move_mount(AT_FDCWD, \"\", -1, \"%s\", %s) = %s\n",
+              path, f_flags_str "|" t_flags_str "|0xffffff88", errstr);
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_move_mount")
+
+#endif
diff --git a/tests-mx32/move_mount.gen.test b/tests-mx32/move_mount.gen.test
new file mode 100755 (executable)
index 0000000..465810f
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (move_mount -y ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -y 
diff --git a/tests-mx32/move_pages--pidns-translation.c b/tests-mx32/move_pages--pidns-translation.c
new file mode 100644 (file)
index 0000000..8498e39
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "move_pages.c"
diff --git a/tests-mx32/move_pages--pidns-translation.gen.test b/tests-mx32/move_pages--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..acd97c6
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (move_pages--pidns-translation test_pidns -s3 -e trace=move_pages); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -s3 -e trace=move_pages
index 895c7c6f00f9b56e0e1c7d47d20c0ca7875289ec..e648f00acc64bd68e32818721e896e4554b87b8a 100644 (file)
@@ -2,14 +2,15 @@
  * Check decoding of move_pages syscall.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2019 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
+#include "pidns.h"
 
 #ifdef __NR_move_pages
 
@@ -122,15 +123,20 @@ print_status_array(const int *const status, const unsigned long count)
 }
 
 static void
-print_stat_pages(const unsigned long pid, const unsigned long count,
-                const void **const pages, int *const status)
+print_stat_pages(const unsigned long pid,
+                const char *pid_str,
+                const unsigned long count,
+                const void **const pages,
+                int *const status)
 {
        const unsigned long flags = (unsigned long) 0xfacefeed00000002ULL;
 
        long rc = syscall(__NR_move_pages,
                          pid, count, pages, NULL, status, flags);
        const char *errstr = sprintrc(rc);
-       printf("move_pages(%d, %lu, ", (int) pid, count);
+       pidns_print_leader();
+       printf("move_pages(%d%s, %lu, ", (int) pid, pid_str,
+               count);
        print_page_array(pages, count, 0);
        printf(", NULL, ");
        if (rc) {
@@ -152,6 +158,7 @@ print_stat_pages(const unsigned long pid, const unsigned long count,
 
 static void
 print_move_pages(const unsigned long pid,
+                const char *pid_str,
                 unsigned long count,
                 const unsigned int offset,
                 const void **const pages,
@@ -164,7 +171,9 @@ print_move_pages(const unsigned long pid,
        long rc = syscall(__NR_move_pages,
                          pid, count, pages, nodes, status, flags);
        const char *errstr = sprintrc(rc);
-       printf("move_pages(%d, %lu, ", (int) pid, count);
+       pidns_print_leader();
+       printf("move_pages(%d%s, %lu, ", (int) pid, pid_str,
+               count);
        print_page_array(pages, count, offset);
        printf(", ");
        print_node_array(nodes, count, offset);
@@ -185,8 +194,11 @@ print_move_pages(const unsigned long pid,
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        const unsigned long pid =
                (unsigned long) 0xfacefeed00000000ULL | getpid();
+       const char *pid_str = pidns_pid2str(PT_TGID);
        unsigned long count = 1;
        const unsigned page_size = get_page_size();
        const void *const page = tail_alloc(page_size);
@@ -195,40 +207,41 @@ main(void)
        TAIL_ALLOC_OBJECT_VAR_PTR(int, nodes);
        TAIL_ALLOC_OBJECT_VAR_PTR(int, status);
 
-       print_stat_pages(pid, 0, pages, status);
-       print_move_pages(pid, 0, 0, pages, nodes, status);
-       print_move_pages(pid, 0, 1, pages + 1, nodes + 1, status + 1);
+       print_stat_pages(pid, pid_str, 0, pages, status);
+       print_move_pages(pid, pid_str, 0, 0, pages, nodes, status);
+       print_move_pages(pid, pid_str, 0, 1, pages + 1, nodes + 1, status + 1);
 
        *pages = page;
-       print_stat_pages(pid, count, pages, status);
+       print_stat_pages(pid, pid_str, count, pages, status);
        *nodes = 0xdeadbee1;
-       print_move_pages(pid, count, 0, pages, nodes, status);
-       print_move_pages(pid, count, 1, pages, nodes, status);
+       print_move_pages(pid, pid_str, count, 0, pages, nodes, status);
+       print_move_pages(pid, pid_str, count, 1, pages, nodes, status);
 
        ++count;
        --status;
        *(--pages) = efault;
-       print_stat_pages(pid, count, pages, status);
+       print_stat_pages(pid, pid_str, count, pages, status);
        *(--nodes) = 0xdeadbee2;
-       print_move_pages(pid, count, 0, pages, nodes, status);
-       print_move_pages(pid, count, 1, pages, nodes, status);
+       print_move_pages(pid, pid_str, count, 0, pages, nodes, status);
+       print_move_pages(pid, pid_str, count, 1, pages, nodes, status);
 
        ++count;
        --status;
        *(--pages) = nodes;
-       print_stat_pages(pid, count, pages, status);
+       print_stat_pages(pid, pid_str, count, pages, status);
        *(--nodes) = 0xdeadbee3;
-       print_move_pages(pid, count, 0, pages, nodes, status);
-       print_move_pages(pid, count, 1, pages, nodes, status);
+       print_move_pages(pid, pid_str, count, 0, pages, nodes, status);
+       print_move_pages(pid, pid_str, count, 1, pages, nodes, status);
 
        ++count;
        --status;
        *(--pages) = status;
-       print_stat_pages(pid, count, pages, status);
+       print_stat_pages(pid, pid_str, count, pages, status);
        *(--nodes) = 0xdeadbee4;
-       print_move_pages(pid, count, 0, pages, nodes, status);
-       print_move_pages(pid, count, 1, pages, nodes, status);
+       print_move_pages(pid, pid_str, count, 0, pages, nodes, status);
+       print_move_pages(pid, pid_str, count, 1, pages, nodes, status);
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
index 7af0f36e017005ebe6abd063a53a08d1ebf38d36..45ddf5ee9a2d62c55a4088a1b123379db8c52678 100644 (file)
@@ -3,7 +3,7 @@
  * mq_unlink syscalls.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -11,7 +11,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_mq_open && __NR_mq_timedsend && __NR_mq_timedreceive && \
        __NR_mq_notify && __NR_mq_unlink
index a4a32a88915e151247bcb9fd08520a3122c15a8b..2fd6c95d54a7ed3c568095756a5f981cf4996ead 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of struct msghdr ancillary data.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2019 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -25,6 +25,9 @@
 # include <linux/time_types.h>
 #endif
 
+#include "kernel_timeval.h"
+#include "kernel_old_timespec.h"
+
 #include "xlat.h"
 #define XLAT_MACROS_ONLY
 #include "xlat/sock_options.h"
@@ -38,9 +41,6 @@
 # define SOL_TCP 6
 #endif
 
-#define MIN_SIZE_OF(type, member) \
-       (offsetof(type, member) + sizeof(((type *) 0)->member))
-
 static struct cmsghdr *
 get_cmsghdr(void *const page, const size_t len)
 {
@@ -87,11 +87,11 @@ test_scm_rights1(struct msghdr *const mh,
 
        struct cmsghdr *cmsg = get_cmsghdr(page, msg_controllen);
 
-       if (msg_controllen >= MIN_SIZE_OF(struct cmsghdr, cmsg_len))
+       if (msg_controllen >= offsetofend(struct cmsghdr, cmsg_len))
                cmsg->cmsg_len = cmsg_len;
-       if (msg_controllen >= MIN_SIZE_OF(struct cmsghdr, cmsg_level))
+       if (msg_controllen >= offsetofend(struct cmsghdr, cmsg_level))
                cmsg->cmsg_level = SOL_SOCKET;
-       if (msg_controllen >= MIN_SIZE_OF(struct cmsghdr, cmsg_type))
+       if (msg_controllen >= offsetofend(struct cmsghdr, cmsg_type))
                cmsg->cmsg_type = SCM_RIGHTS;
 
        size_t src_len =
@@ -152,11 +152,11 @@ test_scm_rights2(struct msghdr *const mh,
                memcpy(CMSG_DATA(cmsg[0]), src[0], cmsg_len[0] - CMSG_LEN(0));
 
        const size_t msg_controllen1 = msg_controllen - aligned_cms_len[0];
-       if (msg_controllen1 >= MIN_SIZE_OF(struct cmsghdr, cmsg_len))
+       if (msg_controllen1 >= offsetofend(struct cmsghdr, cmsg_len))
                cmsg[1]->cmsg_len = cmsg_len[1];
-       if (msg_controllen >= MIN_SIZE_OF(struct cmsghdr, cmsg_level))
+       if (msg_controllen >= offsetofend(struct cmsghdr, cmsg_level))
                cmsg[1]->cmsg_level = SOL_SOCKET;
-       if (msg_controllen >= MIN_SIZE_OF(struct cmsghdr, cmsg_type))
+       if (msg_controllen >= offsetofend(struct cmsghdr, cmsg_type))
                cmsg[1]->cmsg_type = SCM_RIGHTS;
        size_t src1_len =
                cmsg_len[1] < msg_controllen1 ? cmsg_len[1] : msg_controllen1;
@@ -217,15 +217,17 @@ test_scm_rights3(struct msghdr *const mh, void *const page, const size_t nfds)
 static void
 test_scm_timestamp_old(struct msghdr *const mh, void *const page)
 {
-       size_t len = CMSG_SPACE(sizeof(struct timeval));
+       static const kernel_old_timeval_t tv = {
+               .tv_sec = 123456789,
+               .tv_usec = 987654
+       };
+       size_t len = CMSG_SPACE(sizeof(tv));
        struct cmsghdr *cmsg = get_cmsghdr(page, len);
 
-       cmsg->cmsg_len = CMSG_LEN(sizeof(struct timeval));
+       cmsg->cmsg_len = CMSG_LEN(sizeof(tv));
        cmsg->cmsg_level = SOL_SOCKET;
        cmsg->cmsg_type = SO_TIMESTAMP_OLD;
-       struct timeval *tv = (struct timeval *) CMSG_DATA(cmsg);
-       tv->tv_sec = 123456789;
-       tv->tv_usec = 987654;
+       memcpy(CMSG_DATA(cmsg), &tv, sizeof(tv));
 
        mh->msg_control = cmsg;
        mh->msg_controllen = len;
@@ -237,13 +239,13 @@ test_scm_timestamp_old(struct msghdr *const mh, void *const page)
               ", cmsg_data={tv_sec=%lld, tv_usec=%llu}}]"
               ", msg_controllen=%lu, msg_flags=0}, 0) = %d %s (%m)\n",
               (unsigned) cmsg->cmsg_len,
-              (long long) tv->tv_sec, zero_extend_signed_to_ull(tv->tv_usec),
+              (long long) tv.tv_sec, zero_extend_signed_to_ull(tv.tv_usec),
               (unsigned long) len, rc, errno2name());
 
-       len = CMSG_SPACE(sizeof(struct timeval) - sizeof(long));
+       len = CMSG_SPACE(sizeof(tv) - sizeof(long));
        cmsg = get_cmsghdr(page, len);
 
-       cmsg->cmsg_len = CMSG_LEN(sizeof(struct timeval) - sizeof(long));
+       cmsg->cmsg_len = CMSG_LEN(sizeof(tv) - sizeof(long));
        cmsg->cmsg_level = SOL_SOCKET;
        cmsg->cmsg_type = SO_TIMESTAMP_OLD;
 
@@ -262,15 +264,17 @@ test_scm_timestamp_old(struct msghdr *const mh, void *const page)
 static void
 test_scm_timestampns_old(struct msghdr *const mh, void *const page)
 {
-       size_t len = CMSG_SPACE(sizeof(struct timespec));
+       static const kernel_old_timespec_t ts = {
+               .tv_sec = 123456789,
+               .tv_nsec = 987654321
+       };
+       size_t len = CMSG_SPACE(sizeof(ts));
        struct cmsghdr *cmsg = get_cmsghdr(page, len);
 
-       cmsg->cmsg_len = CMSG_LEN(sizeof(struct timespec));
+       cmsg->cmsg_len = CMSG_LEN(sizeof(ts));
        cmsg->cmsg_level = SOL_SOCKET;
        cmsg->cmsg_type = SO_TIMESTAMPNS_OLD;
-       struct timespec *ts = (struct timespec *) CMSG_DATA(cmsg);
-       ts->tv_sec = 123456789;
-       ts->tv_nsec = 987654321;
+       memcpy(CMSG_DATA(cmsg), &ts, sizeof(ts));
 
        mh->msg_control = cmsg;
        mh->msg_controllen = len;
@@ -282,13 +286,13 @@ test_scm_timestampns_old(struct msghdr *const mh, void *const page)
               ", cmsg_data={tv_sec=%lld, tv_nsec=%llu}}]"
               ", msg_controllen=%lu, msg_flags=0}, 0) = %d %s (%m)\n",
               (unsigned) cmsg->cmsg_len,
-              (long long) ts->tv_sec, zero_extend_signed_to_ull(ts->tv_nsec),
+              (long long) ts.tv_sec, zero_extend_signed_to_ull(ts.tv_nsec),
               (unsigned long) len, rc, errno2name());
 
-       len = CMSG_SPACE(sizeof(struct timespec) - sizeof(long));
+       len = CMSG_SPACE(sizeof(ts) - sizeof(long));
        cmsg = get_cmsghdr(page, len);
 
-       cmsg->cmsg_len = CMSG_LEN(sizeof(struct timespec) - sizeof(long));
+       cmsg->cmsg_len = CMSG_LEN(sizeof(ts) - sizeof(long));
        cmsg->cmsg_level = SOL_SOCKET;
        cmsg->cmsg_type = SO_TIMESTAMPNS_OLD;
 
@@ -308,19 +312,18 @@ test_scm_timestampns_old(struct msghdr *const mh, void *const page)
 static void
 test_scm_timestamping_old(struct msghdr *const mh, void *const page)
 {
-       size_t len = CMSG_SPACE(3 * sizeof(struct timespec));
+       static const kernel_old_timespec_t ts[] = {
+               { .tv_sec = 123456789, .tv_nsec = 987654321 },
+               { .tv_sec = 123456790, .tv_nsec = 987654320 },
+               { .tv_sec = 123456791, .tv_nsec = 987654319 }
+       };
+       size_t len = CMSG_SPACE(sizeof(ts));
        struct cmsghdr *cmsg = get_cmsghdr(page, len);
 
-       cmsg->cmsg_len = CMSG_LEN(3 * sizeof(struct timespec));
+       cmsg->cmsg_len = CMSG_LEN(sizeof(ts));
        cmsg->cmsg_level = SOL_SOCKET;
        cmsg->cmsg_type = SO_TIMESTAMPING_OLD;
-       struct timespec *ts = (struct timespec *) CMSG_DATA(cmsg);
-       ts[0].tv_sec = 123456789;
-       ts[0].tv_nsec = 987654321;
-       ts[1].tv_sec = 123456790;
-       ts[1].tv_nsec = 987654320;
-       ts[2].tv_sec = 123456791;
-       ts[2].tv_nsec = 987654319;
+       memcpy(CMSG_DATA(cmsg), ts, sizeof(ts));
 
        mh->msg_control = cmsg;
        mh->msg_controllen = len;
@@ -340,10 +343,10 @@ test_scm_timestamping_old(struct msghdr *const mh, void *const page)
               zero_extend_signed_to_ull(ts[2].tv_nsec),
               (unsigned long) len, rc, errno2name());
 
-       len = CMSG_SPACE(3 * sizeof(struct timespec) - sizeof(long));
+       len = CMSG_SPACE(sizeof(ts) - sizeof(long));
        cmsg = get_cmsghdr(page, len);
 
-       cmsg->cmsg_len = CMSG_LEN(3 * sizeof(struct timespec) - sizeof(long));
+       cmsg->cmsg_len = CMSG_LEN(sizeof(ts) - sizeof(long));
        cmsg->cmsg_level = SOL_SOCKET;
        cmsg->cmsg_type = SO_TIMESTAMPING_OLD;
 
@@ -364,16 +367,17 @@ test_scm_timestamping_old(struct msghdr *const mh, void *const page)
 static void
 test_scm_timestamp_new(struct msghdr *const mh, void *const page)
 {
-       size_t len = CMSG_SPACE(sizeof(struct __kernel_sock_timeval));
+       static const struct __kernel_sock_timeval tv = {
+               .tv_sec = 0xdefaceddeadbeef,
+               .tv_usec = 0xdec0dedcafef00d
+       };
+       size_t len = CMSG_SPACE(sizeof(tv));
        struct cmsghdr *cmsg = get_cmsghdr(page, len);
 
-       cmsg->cmsg_len = CMSG_LEN(sizeof(struct __kernel_sock_timeval));
+       cmsg->cmsg_len = CMSG_LEN(sizeof(tv));
        cmsg->cmsg_level = SOL_SOCKET;
        cmsg->cmsg_type = SO_TIMESTAMP_NEW;
-       struct __kernel_sock_timeval *tv =
-               (struct __kernel_sock_timeval *) CMSG_DATA(cmsg);
-       tv->tv_sec = 0xdefaceddeadbeef;
-       tv->tv_usec = 0xdec0dedcafef00d;
+       memcpy(CMSG_DATA(cmsg), &tv, sizeof(tv));
 
        mh->msg_control = cmsg;
        mh->msg_controllen = len;
@@ -385,14 +389,13 @@ test_scm_timestamp_new(struct msghdr *const mh, void *const page)
               ", cmsg_data={tv_sec=%lld, tv_usec=%llu}}]"
               ", msg_controllen=%lu, msg_flags=0}, 0) = %s\n",
               (unsigned) cmsg->cmsg_len,
-              (long long) tv->tv_sec, zero_extend_signed_to_ull(tv->tv_usec),
+              (long long) tv.tv_sec, zero_extend_signed_to_ull(tv.tv_usec),
               (unsigned long) len, sprintrc(rc));
 
-       len = CMSG_SPACE(sizeof(struct __kernel_sock_timeval) - sizeof(long));
+       len = CMSG_SPACE(sizeof(tv) - sizeof(long));
        cmsg = get_cmsghdr(page, len);
 
-       cmsg->cmsg_len =
-               CMSG_LEN(sizeof(struct __kernel_sock_timeval) - sizeof(long));
+       cmsg->cmsg_len = CMSG_LEN(sizeof(tv) - sizeof(long));
        cmsg->cmsg_level = SOL_SOCKET;
        cmsg->cmsg_type = SO_TIMESTAMP_NEW;
 
@@ -413,16 +416,17 @@ test_scm_timestamp_new(struct msghdr *const mh, void *const page)
 static void
 test_scm_timestampns_new(struct msghdr *const mh, void *const page)
 {
-       size_t len = CMSG_SPACE(sizeof(struct __kernel_timespec));
+       static const struct __kernel_timespec ts = {
+               .tv_sec = 0xdefaceddeadbeef,
+               .tv_nsec = 0xdec0dedcafef00d
+       };
+       size_t len = CMSG_SPACE(sizeof(ts));
        struct cmsghdr *cmsg = get_cmsghdr(page, len);
 
-       cmsg->cmsg_len = CMSG_LEN(sizeof(struct __kernel_timespec));
+       cmsg->cmsg_len = CMSG_LEN(sizeof(ts));
        cmsg->cmsg_level = SOL_SOCKET;
        cmsg->cmsg_type = SO_TIMESTAMPNS_NEW;
-       struct __kernel_timespec *ts =
-               (struct __kernel_timespec *) CMSG_DATA(cmsg);
-       ts->tv_sec = 0xdefaceddeadbeef;
-       ts->tv_nsec = 0xdec0dedcafef00d;
+       memcpy(CMSG_DATA(cmsg), &ts, sizeof(ts));
 
        mh->msg_control = cmsg;
        mh->msg_controllen = len;
@@ -434,14 +438,13 @@ test_scm_timestampns_new(struct msghdr *const mh, void *const page)
               ", cmsg_data={tv_sec=%lld, tv_nsec=%llu}}]"
               ", msg_controllen=%lu, msg_flags=0}, 0) = %s\n",
               (unsigned) cmsg->cmsg_len,
-              (long long) ts->tv_sec, zero_extend_signed_to_ull(ts->tv_nsec),
+              (long long) ts.tv_sec, zero_extend_signed_to_ull(ts.tv_nsec),
               (unsigned long) len, sprintrc(rc));
 
-       len = CMSG_SPACE(sizeof(struct __kernel_timespec) - sizeof(long));
+       len = CMSG_SPACE(sizeof(ts) - sizeof(long));
        cmsg = get_cmsghdr(page, len);
 
-       cmsg->cmsg_len =
-               CMSG_LEN(sizeof(struct __kernel_timespec) - sizeof(long));
+       cmsg->cmsg_len = CMSG_LEN(sizeof(ts) - sizeof(long));
        cmsg->cmsg_level = SOL_SOCKET;
        cmsg->cmsg_type = SO_TIMESTAMPNS_NEW;
 
@@ -461,20 +464,18 @@ test_scm_timestampns_new(struct msghdr *const mh, void *const page)
 static void
 test_scm_timestamping_new(struct msghdr *const mh, void *const page)
 {
-       size_t len = CMSG_SPACE(3 * sizeof(struct __kernel_timespec));
+       static const struct __kernel_timespec ts[] = {
+               { .tv_sec = 0xdeface0deadbef1, .tv_nsec = 0xdec0de2cafef0d3 },
+               { .tv_sec = 0xdeface4deadbef5, .tv_nsec = 0xdec0de6cafef0d7 },
+               { .tv_sec = 0xdeface8deadbef9, .tv_nsec = 0xdec0dedcafef00d }
+       };
+       size_t len = CMSG_SPACE(sizeof(ts));
        struct cmsghdr *cmsg = get_cmsghdr(page, len);
 
-       cmsg->cmsg_len = CMSG_LEN(3 * sizeof(struct __kernel_timespec));
+       cmsg->cmsg_len = CMSG_LEN(sizeof(ts));
        cmsg->cmsg_level = SOL_SOCKET;
        cmsg->cmsg_type = SO_TIMESTAMPING_NEW;
-       struct __kernel_timespec *ts =
-               (struct __kernel_timespec *) CMSG_DATA(cmsg);
-       ts[0].tv_sec = 0xdeface0deadbef1;
-       ts[0].tv_nsec = 0xdec0de2cafef0d3;
-       ts[1].tv_sec = 0xdeface4deadbef5;
-       ts[1].tv_nsec = 0xdec0de6cafef0d7;
-       ts[2].tv_sec = 0xdeface8deadbef9;
-       ts[2].tv_nsec = 0xdec0dedcafef00d;
+       memcpy(CMSG_DATA(cmsg), ts, sizeof(ts));
 
        mh->msg_control = cmsg;
        mh->msg_controllen = len;
@@ -494,11 +495,10 @@ test_scm_timestamping_new(struct msghdr *const mh, void *const page)
               zero_extend_signed_to_ull(ts[2].tv_nsec),
               (unsigned long) len, sprintrc(rc));
 
-       len = CMSG_SPACE(3 * sizeof(struct __kernel_timespec) - sizeof(long));
+       len = CMSG_SPACE(sizeof(ts) - sizeof(long));
        cmsg = get_cmsghdr(page, len);
 
-       cmsg->cmsg_len =
-               CMSG_LEN(3 * sizeof(struct __kernel_timespec) - sizeof(long));
+       cmsg->cmsg_len = CMSG_LEN(sizeof(ts) - sizeof(long));
        cmsg->cmsg_level = SOL_SOCKET;
        cmsg->cmsg_type = SO_TIMESTAMPING_NEW;
 
@@ -987,7 +987,7 @@ int main(int ac, const char **av)
        printf("sendmsg(-1, %p, 0) = %d %s (%m)\n",
               mh + 1, rc, errno2name());
 
-       void *page = tail_alloc(1) + 1;
+       void *page = tail_alloc(1024) + 1024;
        mh->msg_control = page;
        mh->msg_controllen = CMSG_LEN(0);
        rc = sendmsg(-1, mh, 0);
index c7ebf496e0ac2592e5a4896e0852e2da9dbcb407..d55b395c40ac489a1f9b84b892b83d1f62207a64 100644 (file)
@@ -2,19 +2,38 @@
  * Check decoding of nanosleep syscall.
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <assert.h>
-#include <stdio.h>
-#include <stdint.h>
-#include <signal.h>
-#include <time.h>
-#include <sys/time.h>
+#include "scno.h"
+
+#ifdef __NR_nanosleep
+
+# include <assert.h>
+# include <stdio.h>
+# include <stdint.h>
+# include <signal.h>
+# include <sys/time.h>
+# include <unistd.h>
+
+# include "kernel_old_timespec.h"
+
+static const char *errstr;
+
+static long
+k_nanosleep(const void *const req, void *const rem)
+{
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = (uintptr_t) req;
+       const kernel_ulong_t arg2 = (uintptr_t) rem;
+       const long rc = syscall(__NR_nanosleep, arg1, arg2, bad, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
 
 static void
 handler(int signo)
@@ -25,7 +44,7 @@ int
 main(void)
 {
        struct {
-               struct timespec ts;
+               kernel_old_timespec_t ts;
                uint32_t pad[2];
        } req = {
                .ts.tv_nsec = 0xc0de1,
@@ -38,47 +57,51 @@ main(void)
        const struct sigaction act = { .sa_handler = handler };
        const struct itimerval itv = { .it_value.tv_usec = 111111 };
 
-       if (nanosleep(&req.ts, NULL))
+       if (k_nanosleep(&req.ts, NULL))
                perror_msg_and_fail("nanosleep");
        printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, NULL) = 0\n",
               (long long) req.ts.tv_sec,
               zero_extend_signed_to_ull(req.ts.tv_nsec));
 
-       assert(nanosleep(NULL, &rem.ts) == -1);
-       printf("nanosleep(NULL, %p) = -1 EFAULT (%m)\n", &rem.ts);
+       assert(k_nanosleep(NULL, &rem.ts) == -1);
+       printf("nanosleep(NULL, %p) = %s\n", &rem.ts, errstr);
 
-       if (nanosleep(&req.ts, &rem.ts))
+       if (k_nanosleep(&req.ts, &rem.ts))
                perror_msg_and_fail("nanosleep");
        printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, %p) = 0\n",
               (long long) req.ts.tv_sec,
               zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
 
        req.ts.tv_nsec = 1000000000;
-       assert(nanosleep(&req.ts, &rem.ts) == -1);
-       printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, %p) = -1 EINVAL (%m)\n",
+       assert(k_nanosleep(&req.ts, &rem.ts) == -1);
+       printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, %p) = %s\n",
               (long long) req.ts.tv_sec,
-              zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
+              zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts,
+              errstr);
 
        req.ts.tv_sec = 0xdeadbeefU;
        req.ts.tv_nsec = 0xfacefeedU;
-       assert(nanosleep(&req.ts, &rem.ts) == -1);
-       printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, %p) = -1 EINVAL (%m)\n",
+       assert(k_nanosleep(&req.ts, &rem.ts) == -1);
+       printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, %p) = %s\n",
               (long long) req.ts.tv_sec,
-              zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
+              zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts,
+              errstr);
 
        req.ts.tv_sec = (time_t) 0xcafef00ddeadbeefLL;
        req.ts.tv_nsec = (long) 0xbadc0dedfacefeedLL;
-       assert(nanosleep(&req.ts, &rem.ts) == -1);
-       printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, %p) = -1 EINVAL (%m)\n",
+       assert(k_nanosleep(&req.ts, &rem.ts) == -1);
+       printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, %p) = %s\n",
               (long long) req.ts.tv_sec,
-              zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
+              zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts,
+              errstr);
 
        req.ts.tv_sec = -1;
        req.ts.tv_nsec = -1;
-       assert(nanosleep(&req.ts, &rem.ts) == -1);
-       printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, %p) = -1 EINVAL (%m)\n",
+       assert(k_nanosleep(&req.ts, &rem.ts) == -1);
+       printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, %p) = %s\n",
               (long long) req.ts.tv_sec,
-              zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
+              zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts,
+              errstr);
 
        assert(sigaction(SIGALRM, &act, NULL) == 0);
        assert(sigprocmask(SIG_SETMASK, &set, NULL) == 0);
@@ -88,7 +111,7 @@ main(void)
 
        req.ts.tv_sec = 0;
        req.ts.tv_nsec = 999999999;
-       assert(nanosleep(&req.ts, &rem.ts) == -1);
+       assert(k_nanosleep(&req.ts, &rem.ts) == -1);
        printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}"
               ", {tv_sec=%lld, tv_nsec=%llu})"
               " = ? ERESTART_RESTARTBLOCK (Interrupted by signal)\n",
@@ -101,3 +124,9 @@ main(void)
        puts("+++ exited with 0 +++");
        return 0;
 }
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_nanosleep")
+
+#endif
diff --git a/tests-mx32/net--decode-fds-dev-netlink.c b/tests-mx32/net--decode-fds-dev-netlink.c
new file mode 100644 (file)
index 0000000..a84f91b
--- /dev/null
@@ -0,0 +1,2 @@
+#define PRINT_SOCK 1
+#include "net-yy-netlink.c"
diff --git a/tests-mx32/net--decode-fds-dev-netlink.gen.test b/tests-mx32/net--decode-fds-dev-netlink.gen.test
new file mode 100755 (executable)
index 0000000..92663b8
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (net--decode-fds-dev-netlink +net-yy-netlink.test --decode-fds=dev); do not edit.
+set -- --decode-fds=dev
+. "${srcdir=.}/net-yy-netlink.test"
diff --git a/tests-mx32/net--decode-fds-none-netlink.c b/tests-mx32/net--decode-fds-none-netlink.c
new file mode 100644 (file)
index 0000000..2c8daac
--- /dev/null
@@ -0,0 +1,2 @@
+#define PRINT_SOCK 0
+#include "net-yy-netlink.c"
diff --git a/tests-mx32/net--decode-fds-none-netlink.gen.test b/tests-mx32/net--decode-fds-none-netlink.gen.test
new file mode 100755 (executable)
index 0000000..ea3f225
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (net--decode-fds-none-netlink +net-yy-netlink.test --decode-fds=none -a9); do not edit.
+set -- --decode-fds=none -a9
+. "${srcdir=.}/net-yy-netlink.test"
diff --git a/tests-mx32/net--decode-fds-path-netlink.c b/tests-mx32/net--decode-fds-path-netlink.c
new file mode 100644 (file)
index 0000000..a84f91b
--- /dev/null
@@ -0,0 +1,2 @@
+#define PRINT_SOCK 1
+#include "net-yy-netlink.c"
diff --git a/tests-mx32/net--decode-fds-path-netlink.gen.test b/tests-mx32/net--decode-fds-path-netlink.gen.test
new file mode 100755 (executable)
index 0000000..6943b68
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (net--decode-fds-path-netlink +net-yy-netlink.test --decode-fds=path); do not edit.
+set -- --decode-fds=path
+. "${srcdir=.}/net-yy-netlink.test"
diff --git a/tests-mx32/net--decode-fds-socket-netlink.c b/tests-mx32/net--decode-fds-socket-netlink.c
new file mode 100644 (file)
index 0000000..7416ccd
--- /dev/null
@@ -0,0 +1,2 @@
+#define PRINT_SOCK 2
+#include "net-yy-netlink.c"
diff --git a/tests-mx32/net--decode-fds-socket-netlink.gen.test b/tests-mx32/net--decode-fds-socket-netlink.gen.test
new file mode 100755 (executable)
index 0000000..012d876
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (net--decode-fds-socket-netlink +net-yy-netlink.test --decode-fds=socket); do not edit.
+set -- --decode-fds=socket
+. "${srcdir=.}/net-yy-netlink.test"
diff --git a/tests-mx32/net-sockaddr--pidns-translation.c b/tests-mx32/net-sockaddr--pidns-translation.c
new file mode 100644 (file)
index 0000000..ff432bf
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "net-sockaddr.c"
diff --git a/tests-mx32/net-sockaddr--pidns-translation.gen.test b/tests-mx32/net-sockaddr--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..ce8db05
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (net-sockaddr--pidns-translation test_pidns -a24 -e trace=connect); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a24 -e trace=connect
index cd9739226314fd9ef6f405fe94a1a86b5465c421..c7e9bde7de75c342e7f8d66491509ea652281cf5 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of sockaddr structures
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2019 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
+#include "pidns.h"
 #include <stddef.h>
 #include <stdio.h>
 #include <string.h>
@@ -40,18 +41,21 @@ check_un(void)
        memset(un->sun_path, '0', sizeof(un->sun_path));
        unsigned int len = sizeof(*un);
        int ret = connect(-1, (void *) un, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_UNIX, sun_path=\"%.*u\"}"
               ", %u) = %d EBADF (%m)\n",
               (int) sizeof(un->sun_path), 0, len, ret);
 
        un->sun_path[1] = 0;
        ret = connect(-1, (void *) un, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_UNIX, sun_path=\"%u\"}, %u)"
               " = %d EBADF (%m)\n", 0, len, ret);
 
        un->sun_path[0] = 0;
        un->sun_path[2] = 1;
        ret = connect(-1, (void *) un, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_UNIX, sun_path=@\"\\0\\001%.*u\"}"
               ", %u) = %d EBADF (%m)\n",
               (int) sizeof(un->sun_path) - 3, 0, len, ret);
@@ -61,12 +65,14 @@ check_un(void)
        memset(un->sun_path, '0', sizeof(un->sun_path));
        len = sizeof(*un) + 2;
        ret = connect(-1, (void *) un, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_UNIX, sun_path=\"%.*u\"}"
               ", %u) = %d EBADF (%m)\n",
               (int) sizeof(un->sun_path), 0, len, ret);
 
        un->sun_path[0] = 0;
        ret = connect(-1, (void *) un, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_UNIX, sun_path=@\"%.*u\"}"
               ", %u) = %d EBADF (%m)\n",
               (int) sizeof(un->sun_path) - 1, 0, len, ret);
@@ -75,18 +81,21 @@ check_un(void)
        un->sun_family = AF_UNIX;
        len = sizeof(*un) - 2;
        ret = connect(-1, (void *) un, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_UNIX, sun_path=\"%.*u\"}"
               ", %u) = %d EBADF (%m)\n",
               (int) sizeof(un->sun_path) - 2, 0, len, ret);
 
        un->sun_path[0] = 0;
        ret = connect(-1, (void *) un, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_UNIX, sun_path=@\"%.*u\"}"
               ", %u) = %d EBADF (%m)\n",
               (int) sizeof(un->sun_path) - 3, 0, len, ret);
 
        len = sizeof(*un);
        ret = connect(-1, (void *) un, len);
+       pidns_print_leader();
        printf("connect(-1, %p, %u) = %d EBADF (%m)\n", un, len, ret);
 
        un = tail_alloc(sizeof(struct sockaddr_storage));
@@ -94,12 +103,14 @@ check_un(void)
        memset(un->sun_path, '0', sizeof(un->sun_path));
        len = sizeof(struct sockaddr_storage) + 1;
        ret = connect(-1, (void *) un, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_UNIX, sun_path=\"%.*u\"}"
               ", %u) = %d EBADF (%m)\n",
               (int) sizeof(un->sun_path), 0, len, ret);
 
        un->sun_path[0] = 0;
        ret = connect(-1, (void *) un, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_UNIX, sun_path=@\"%.*u\"}"
               ", %u) = %d EBADF (%m)\n",
               (int) sizeof(un->sun_path) - 1, 0, len, ret);
@@ -117,6 +128,7 @@ check_in(void)
        in->sin_addr.s_addr = inet_addr(h_addr);
        unsigned int len = sizeof(*in);
        int ret = connect(-1, (void *) in, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_INET, sin_port=htons(%hu)"
               ", sin_addr=inet_addr(\"%s\")}, %u) = %d EBADF (%m)\n",
               h_port, h_addr, len, ret);
@@ -127,6 +139,7 @@ check_in(void)
        in->sin_addr.s_addr = inet_addr(h_addr);
        len = sizeof(*in) + 4;
        ret = connect(-1, (void *) in, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_INET, sin_port=htons(%hu)"
               ", sin_addr=inet_addr(\"%s\")}, %u) = %d EBADF (%m)\n",
               h_port, h_addr, len, ret);
@@ -137,6 +150,7 @@ check_in(void)
        in->sin_addr.s_addr = 0;
        len = sizeof(*in) - 4;
        ret = connect(-1, (void *) in, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_INET, sa_data=\"%s\"}, %u)"
               " = %d EBADF (%m)\n",
               "\\0\\0\\0\\0\\0\\0\\377\\377\\377\\377",
@@ -144,6 +158,7 @@ check_in(void)
 
        len = sizeof(*in);
        ret = connect(-1, (void *) in, len);
+       pidns_print_leader();
        printf("connect(-1, %p, %u) = %d EBADF (%m)\n", in, len, ret);
 }
 
@@ -155,6 +170,7 @@ check_in6_linklocal(struct sockaddr_in6 *const in6, const char *const h_addr)
        in6->sin6_scope_id = 0xfacefeed;
        unsigned int len = sizeof(*in6);
        int ret = connect(-1, (void *) in6, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_INET6, sin6_port=htons(%hu)"
               ", sin6_flowinfo=htonl(%u)"
               ", inet_pton(AF_INET6, \"%s\", &sin6_addr)"
@@ -166,7 +182,8 @@ check_in6_linklocal(struct sockaddr_in6 *const in6, const char *const h_addr)
        in6->sin6_scope_id = ifindex_lo();
        if (in6->sin6_scope_id) {
                ret = connect(-1, (void *) in6, len);
-               printf("connect(-1, {sa_family=AF_INET6, sin6_port=htons(%hu)"
+               pidns_print_leader();
+       printf("connect(-1, {sa_family=AF_INET6, sin6_port=htons(%hu)"
                       ", sin6_flowinfo=htonl(%u)"
                       ", inet_pton(AF_INET6, \"%s\", &sin6_addr)"
                       ", sin6_scope_id=%s}, %u)"
@@ -191,6 +208,7 @@ check_in6(void)
        in6->sin6_scope_id = 0xfacefeed;
        unsigned int len = sizeof(*in6);
        int ret = connect(-1, (void *) in6, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_INET6, sin6_port=htons(%hu)"
               ", sin6_flowinfo=htonl(%u)"
               ", inet_pton(AF_INET6, \"%s\", &sin6_addr)"
@@ -209,6 +227,7 @@ check_in6(void)
        in6->sin6_scope_id = 0xfacefeed;
        len = sizeof(*in6) + 4;
        ret = connect(-1, (void *) in6, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_INET6, sin6_port=htons(%hu)"
               ", sin6_flowinfo=htonl(%u)"
               ", inet_pton(AF_INET6, \"%s\", &sin6_addr)"
@@ -223,6 +242,7 @@ check_in6(void)
        inet_pton(AF_INET6, h_addr, &in6->sin6_addr);
        len = sizeof(*in6) - sizeof(in6->sin6_scope_id);
        ret = connect(-1, (void *) in6, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_INET6, sin6_port=htons(%hu)"
               ", sin6_flowinfo=htonl(%u)"
               ", inet_pton(AF_INET6, \"%s\", &sin6_addr)}, %u)"
@@ -236,6 +256,7 @@ check_in6(void)
        memset(&in6->sin6_addr, '0', sizeof(in6->sin6_addr) - 4);
        len = sizeof(*in6) - sizeof(in6->sin6_scope_id) - 4;
        ret = connect(-1, (void *) in6, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_INET6"
               ", sa_data=\"\\0\\0\\0\\0\\0\\000%.*u\"}, %u)"
               " = %d EBADF (%m)\n",
@@ -244,6 +265,7 @@ check_in6(void)
 
        len = sizeof(*in6) - sizeof(in6->sin6_scope_id);
        ret = connect(-1, (void *) in6, len);
+       pidns_print_leader();
        printf("connect(-1, %p, %u) = %d EBADF (%m)\n", in6, len, ret);
 }
 
@@ -262,6 +284,7 @@ check_ipx(void)
        void *ipx = tail_memdup(&c_ipx, sizeof(c_ipx));
        unsigned int len = sizeof(c_ipx);
        int ret = connect(-1, ipx, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_IPX, sipx_port=htons(%u)"
               ", sipx_network=htonl(%#x)"
               ", sipx_node=[%#02x, %#02x, %#02x, %#02x, %#02x, %#02x]"
@@ -316,18 +339,21 @@ check_ax25(void)
        fill_memory(sax, size);
        sax->fsa_ax25.sax25_family = AF_AX25;
        rc = connect(-1, sax_void, sizeof(struct sockaddr_ax25) - 1);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_AX25, sa_data=\"\\202\\203\\204\\205"
               "\\206\\207\\210\\211\\212\\213\\214\\215\\216\"}, %zu) = %s\n",
               sizeof(struct sockaddr_ax25) - 1, sprintrc(rc));
 
        memcpy(sax, &ax25, sizeof(ax25));
        rc = connect(-1, sax_void, sizeof(struct sockaddr_ax25));
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_AX25, fsa_ax25={sax25_call=VALID-13"
               ", sax25_ndigis=8}, fsa_digipeater=[/* ??? */]}, %zu) = %s\n",
               sizeof(struct sockaddr_ax25), sprintrc(rc));
 
        sax->fsa_ax25.sax25_ndigis = 0;
        rc = connect(-1, sax_void, sizeof(struct sockaddr_ax25));
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_AX25, sax25_call=VALID-13"
               ", sax25_ndigis=0}, %zu) = %s\n",
               sizeof(struct sockaddr_ax25), sprintrc(rc));
@@ -335,6 +361,7 @@ check_ax25(void)
        sax->fsa_ax25.sax25_ndigis = 8;
        size = sizeof(struct sockaddr_ax25) + sizeof(ax25_address) * 3 + 1;
        rc = connect(-1, sax_void, size);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_AX25, fsa_ax25={sax25_call=VALID-13"
               ", sax25_ndigis=8}, fsa_digipeater"
               "=[{ax25_call=\"\\xa6\\xa0\\x82\\x40\\x86\\x8a\\x00\""
@@ -348,6 +375,7 @@ check_ax25(void)
        sax->fsa_digipeater[2].ax25_call[6] = 0x4;
        size = sizeof(struct sockaddr_ax25) + sizeof(ax25_address) * 4;
        rc = connect(-1, sax_void, size);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_AX25, fsa_ax25={sax25_call=VALID-13"
               ", sax25_ndigis=8}, fsa_digipeater"
               "=[{ax25_call=\"\\xa6\\xa0\\x82\\x40\\x86\\x8a\\x00\""
@@ -365,6 +393,7 @@ check_ax25(void)
        for (size_t i = 0; i < 3; i++) {
                size = sizeof(ax25) + sizeof(ax25_address) * (i / 2);
                rc = connect(-1, sax_void, size);
+               pidns_print_leader();
                printf("connect(-1, {sa_family=AF_AX25"
                       ", fsa_ax25={sax25_call=VALID-13, sax25_ndigis=%d}"
                       ", fsa_digipeater=[VALID2-7, OK-15, %s /* FINE-2 */"
@@ -423,25 +452,28 @@ check_x25(void)
                .sx25_family = AF_X25,
                .sx25_addr = { "0123456789abcdef" },
        };
-       void *x25_void = tail_memdup(&c_x25, sizeof(c_x25) + 1);
-       struct sockaddr_x25 *x25 = x25_void;
+       void *const x25_void = tail_memdup(&c_x25, sizeof(c_x25) + 1);
        long rc;
 
-       rc = connect(-1, x25, sizeof(c_x25) - 1);
+       rc = connect(-1, x25_void, sizeof(c_x25) - 1);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_X25"
               ", sa_data=\"0123456789abcde\"}, %zu) = %s\n",
               sizeof(c_x25) - 1, sprintrc(rc));
 
        for (size_t i = 0; i < 2; i++) {
-               rc = connect(-1, x25, sizeof(c_x25) + i);
+               rc = connect(-1, x25_void, sizeof(c_x25) + i);
+               pidns_print_leader();
                printf("connect(-1, {sa_family=AF_X25"
                       ", sx25_addr={x25_addr=\"0123456789abcde\"...}"
                       "}, %zu) = %s\n",
                       sizeof(c_x25) + i, sprintrc(rc));
        }
 
+       struct sockaddr_x25 *const x25 = x25_void;
        x25->sx25_addr.x25_addr[10] = '\0';
-       rc = connect(-1, x25, sizeof(c_x25));
+       rc = connect(-1, x25_void, sizeof(c_x25));
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_X25"
               ", sx25_addr={x25_addr=\"0123456789\"}"
               "}, %zu) = %s\n",
@@ -457,19 +489,21 @@ check_nl(void)
        nl->nl_groups = 0xfacefeed;
        unsigned int len = sizeof(*nl);
        int ret = connect(-1, (void *) nl, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_NETLINK, nl_pid=%d"
               ", nl_groups=%#08x}, %u) = %d EBADF (%m)\n",
               nl->nl_pid, nl->nl_groups, len, ret);
 
        nl = ((void *) nl) - 4;
        nl->nl_family = AF_NETLINK;
-       nl->nl_pid = 1234567890;
+       nl->nl_pid = getpid();
        nl->nl_groups = 0xfacefeed;
        len = sizeof(*nl) + 4;
        ret = connect(-1, (void *) nl, len);
-       printf("connect(-1, {sa_family=AF_NETLINK, nl_pid=%d"
+       pidns_print_leader();
+       printf("connect(-1, {sa_family=AF_NETLINK, nl_pid=%d%s"
               ", nl_groups=%#08x}, %u) = %d EBADF (%m)\n",
-              nl->nl_pid, nl->nl_groups, len, ret);
+              nl->nl_pid, pidns_pid2str(PT_TGID), nl->nl_groups, len, ret);
 }
 
 static void
@@ -487,6 +521,7 @@ check_ll(void)
        void *ll = tail_memdup(&c_ll, sizeof(c_ll));
        unsigned int len = sizeof(c_ll);
        int ret = connect(-1, ll, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_PACKET"
               ", sll_protocol=htons(ETH_P_ALL)"
               ", sll_ifindex=%u, sll_hatype=ARPHRD_ETHER"
@@ -502,6 +537,7 @@ check_ll(void)
 
        ((struct sockaddr_ll *) ll)->sll_halen++;
        ret = connect(-1, ll, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_PACKET"
               ", sll_protocol=htons(ETH_P_ALL)"
               ", sll_ifindex=%u, sll_hatype=ARPHRD_ETHER"
@@ -517,6 +553,7 @@ check_ll(void)
 
        ((struct sockaddr_ll *) ll)->sll_halen = 0;
        ret = connect(-1, ll, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_PACKET"
               ", sll_protocol=htons(ETH_P_ALL)"
               ", sll_ifindex=%u, sll_hatype=ARPHRD_ETHER"
@@ -526,6 +563,7 @@ check_ll(void)
        ((struct sockaddr_ll *) ll)->sll_ifindex = ifindex_lo();
        if (((struct sockaddr_ll *) ll)->sll_ifindex) {
                ret = connect(-1, ll, len);
+       pidns_print_leader();
                printf("connect(-1, {sa_family=AF_PACKET"
                       ", sll_protocol=htons(ETH_P_ALL)"
                       ", sll_ifindex=%s"
@@ -543,11 +581,24 @@ check_hci(void)
        TAIL_ALLOC_OBJECT_VAR_PTR(struct sockaddr_hci, hci);
        hci->hci_family = AF_BLUETOOTH;
        hci->hci_dev = htobs(h_port);
+# ifdef HAVE_STRUCT_SOCKADDR_HCI_HCI_CHANNEL
        hci->hci_channel = HCI_CHANNEL_RAW;
+# endif
        unsigned int len = sizeof(*hci);
-       int ret = connect(-1, (void *) hci, len);
+
+       int ret = connect(-1, (void *) hci, 4);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_BLUETOOTH, hci_dev=htobs(%hu)"
-              ", hci_channel=HCI_CHANNEL_RAW}, %u) = %d EBADF (%m)\n",
+              "}, 4) = %d EBADF (%m)\n",
+              h_port, ret);
+
+       ret = connect(-1, (void *) hci, len);
+       pidns_print_leader();
+       printf("connect(-1, {sa_family=AF_BLUETOOTH, hci_dev=htobs(%hu)"
+# ifdef HAVE_STRUCT_SOCKADDR_HCI_HCI_CHANNEL
+              ", hci_channel=HCI_CHANNEL_RAW"
+# endif
+              "}, %u) = %d EBADF (%m)\n",
               h_port, len, ret);
 }
 
@@ -561,6 +612,7 @@ check_sco(void)
        void *sco = tail_memdup(&c_sco, sizeof(c_sco));
        unsigned int len = sizeof(c_sco);
        int ret = connect(-1, sco, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_BLUETOOTH"
               ", sco_bdaddr=%02x:%02x:%02x:%02x:%02x:%02x"
               "}, %u) = %d EBADF (%m)\n",
@@ -581,6 +633,7 @@ check_rc(void)
        void *rc = tail_memdup(&c_rc, sizeof(c_rc));
        unsigned int len = sizeof(c_rc);
        int ret = connect(-1, rc, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_BLUETOOTH"
               ", rc_bdaddr=%02x:%02x:%02x:%02x:%02x:%02x"
               ", rc_channel=%u}, %u) = %d EBADF (%m)\n",
@@ -608,6 +661,7 @@ check_l2(void)
        unsigned int len = sizeof(c_l2);
 
        int ret = connect(-1, l2, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_BLUETOOTH"
               ", l2_psm=htobs(L2CAP_PSM_DYN_START + %hu)"
               ", l2_bdaddr=%02x:%02x:%02x:%02x:%02x:%02x"
@@ -629,6 +683,7 @@ check_l2(void)
 # endif
        memcpy(l2, &c_l2, sizeof(c_l2));
        ret = connect(-1, l2, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_BLUETOOTH"
               ", l2_psm=htobs(L2CAP_PSM_SDP)"
               ", l2_bdaddr=%02x:%02x:%02x:%02x:%02x:%02x"
@@ -649,6 +704,7 @@ check_l2(void)
 # endif
        memcpy(l2, &c_l2, sizeof(c_l2));
        ret = connect(-1, l2, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_BLUETOOTH"
               ", l2_psm=htobs(0xbad /* L2CAP_PSM_??? */)"
               ", l2_bdaddr=%02x:%02x:%02x:%02x:%02x:%02x"
@@ -666,6 +722,7 @@ check_l2(void)
        c_l2.l2_cid = htobs(0xffff);
        memcpy(l2, &c_l2, 12);
        ret = connect(-1, l2, 12);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_BLUETOOTH"
               ", l2_psm=htobs(L2CAP_PSM_AUTO_END)"
               ", l2_bdaddr=%02x:%02x:%02x:%02x:%02x:%02x"
@@ -689,6 +746,7 @@ check_raw(void)
        u.sa->sa_family = 0xff;
        unsigned int len = sizeof(*u.st) + 8;
        int ret = connect(-1, (void *) u.st, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=%#x /* AF_??? */, sa_data=\"%.*u\"}"
               ", %u) = %d EBADF (%m)\n", u.sa->sa_family,
               (int) (sizeof(*u.st) - sizeof(u.sa->sa_family)), 0, len, ret);
@@ -696,19 +754,22 @@ check_raw(void)
        u.sa->sa_family = 0;
        len = sizeof(u.sa->sa_family) + 1;
        ret = connect(-1, (void *) u.st, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_UNSPEC, sa_data=\"0\"}, %u)"
               " = %d EBADF (%m)\n", len, ret);
 
        u.sa->sa_family = AF_BLUETOOTH;
-       ++len;
        ret = connect(-1, (void *) u.st, len);
-       printf("connect(-1, {sa_family=AF_BLUETOOTH, sa_data=\"00\"}, %u)"
+       pidns_print_leader();
+       printf("connect(-1, {sa_family=AF_BLUETOOTH, sa_data=\"0\"}, %u)"
               " = %d EBADF (%m)\n", len, ret);
 }
 
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        check_un();
        check_in();
        check_in6();
@@ -725,6 +786,7 @@ main(void)
 #endif
        check_raw();
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
index 38b1a0d4c5a060b824f902c1068a2773a309d469..e2c9558644dc60c35471a09cfab49df609a1dc4a 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2013-2017 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 #include <linux/sock_diag.h>
 #include <linux/netlink_diag.h>
 
+#ifndef PRINT_SOCK
+# define PRINT_SOCK 2
+#endif
+
+#if PRINT_SOCK == 2
+# define FMT_UNBOUND "<NETLINK:[%lu]>"
+# define FMT_BOUND   "<NETLINK:[SOCK_DIAG:%u]>"
+# define ARG_UNBOUND inode
+# define ARG_BOUND   addr.nl_pid
+#elif PRINT_SOCK == 1
+# define FMT_UNBOUND "<socket:[%lu]>"
+# define FMT_BOUND   "<socket:[%lu]>"
+# define ARG_UNBOUND inode
+# define ARG_BOUND   inode
+#else
+# define FMT_UNBOUND "%s"
+# define FMT_BOUND   "%s"
+# define ARG_UNBOUND ""
+# define ARG_BOUND   ""
+#endif
+
 int
 main(void)
 {
@@ -37,25 +58,27 @@ main(void)
        const int fd = socket(AF_NETLINK, SOCK_RAW, NETLINK_SOCK_DIAG);
        if (fd < 0)
                perror_msg_and_skip("socket");
+#if PRINT_SOCK
        const unsigned long inode = inode_of_sockfd(fd);
+#endif
        printf("socket(AF_NETLINK, SOCK_RAW, NETLINK_SOCK_DIAG) = "
-              "%d<NETLINK:[%lu]>\n", fd, inode);
+              "%d" FMT_UNBOUND "\n", fd, ARG_UNBOUND);
 
        if (bind(fd, sa, *len))
                perror_msg_and_skip("bind");
-       printf("bind(%d<NETLINK:[%lu]>, {sa_family=AF_NETLINK"
-              ", nl_pid=%u, nl_groups=00000000}, %u) = 0\n",
-              fd, inode, addr.nl_pid, (unsigned) *len);
+       printf("bind(%d" FMT_UNBOUND ", {sa_family=AF_NETLINK"
+              ", nl_pid=%d, nl_groups=00000000}, %u) = 0\n",
+              fd, ARG_UNBOUND, addr.nl_pid, (unsigned) *len);
 
        if (getsockname(fd, sa, len))
                perror_msg_and_fail("getsockname");
-       printf("getsockname(%d<NETLINK:[SOCK_DIAG:%u]>, {sa_family=AF_NETLINK"
-              ", nl_pid=%u, nl_groups=00000000}, [%u]) = 0\n",
-              fd, addr.nl_pid, addr.nl_pid, (unsigned) *len);
+       printf("getsockname(%d" FMT_BOUND ", {sa_family=AF_NETLINK"
+              ", nl_pid=%d, nl_groups=00000000}, [%u]) = 0\n",
+              fd, ARG_BOUND, addr.nl_pid, (unsigned) *len);
 
        if (close(fd))
                perror_msg_and_fail("close");
-       printf("close(%d<NETLINK:[SOCK_DIAG:%u]>) = 0\n", fd, addr.nl_pid);
+       printf("close(%d" FMT_BOUND ") = 0\n", fd, ARG_BOUND);
 
        puts("+++ exited with 0 +++");
        return 0;
index 892c9799bc40b992f8590b6d70f3483a21438bbf..729c59a70391ed1a4b2d9f334bc75027781bea26 100755 (executable)
@@ -6,7 +6,7 @@
 # Copyright (c) 2014 Masatake YAMATO <yamato@redhat.com>
 # Copyright (c) 2014-2016 Dmitry V. Levin <ldv@altlinux.org>
 # Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 check_prog sed
 
+opts="${*:--yy}"
+
 run_prog ../netlink_netlink_diag
 run_prog > /dev/null
-run_strace -a22 -yy -eclose,network $args > "$EXP"
+run_strace -a22 ${opts} -eclose,network $args > "$EXP"
 
 # Filter out close() calls made by ld.so and libc.
 sed -n '/socket/,$p' < "$LOG" > "$OUT"
diff --git a/tests-mx32/netlink_audit--pidns-translation.c b/tests-mx32/netlink_audit--pidns-translation.c
new file mode 100644 (file)
index 0000000..e08f916
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "netlink_audit.c"
diff --git a/tests-mx32/netlink_audit--pidns-translation.test b/tests-mx32/netlink_audit--pidns-translation.test
new file mode 100755 (executable)
index 0000000..1a39ead
--- /dev/null
@@ -0,0 +1,13 @@
+#!/bin/sh
+#
+# Check pidns translation of NETLINK_SOCK_DIAG protocol decoding
+#
+# Copyright (c) 2020 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+. "${srcdir=.}/init.sh"
+
+run_prog ../netlink_netlink_diag
+test_pidns -e trace=sendto "$@"
index eba609a149c5a866c7384ab7143ebc67de6f9865..559c2f711721ec41acb6a19ef4630b751d2993c8 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
+#include "pidns.h"
 #include <stdio.h>
 #include <string.h>
 #include <unistd.h>
 static void
 test_nlmsg_type(const int fd)
 {
+       PIDNS_TEST_INIT;
+
        long rc;
        struct nlmsghdr nlh = {
                .nlmsg_len = sizeof(nlh),
                .nlmsg_type = AUDIT_GET,
                .nlmsg_flags = NLM_F_REQUEST,
+               .nlmsg_pid = getpid(),
        };
 
        rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0);
+       pidns_print_leader();
        printf("sendto(%d, {len=%u, type=AUDIT_GET"
-              ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+              ", flags=NLM_F_REQUEST, seq=0, pid=%d%s}"
               ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
-              fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc));
+              fd, nlh.nlmsg_len, nlh.nlmsg_pid, pidns_pid2str(PT_TGID),
+              (unsigned) sizeof(nlh), sprintrc(rc));
 }
 
 int main(void)
@@ -39,6 +45,7 @@ int main(void)
 
        test_nlmsg_type(fd);
 
+       pidns_print_leader();
        printf("+++ exited with 0 +++\n");
 
        return 0;
index fd901d8845fa5bffc3e6e89267464898c44e24ec..99d9eb5d9343dd5c3c72163683b6fc5a2237216e 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2014-2017 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -264,7 +264,7 @@ test_nlmsgerr(const int fd)
        printf("sendto(%d, {{len=%u, type=NLMSG_ERROR, flags=NLM_F_REQUEST"
               ", seq=0, pid=0}, {error=-EACCES"
               ", msg={len=%u, type=NLMSG_NOOP, flags=NLM_F_REQUEST|0x%x"
-              ", seq=%u, pid=%u}}}, %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+              ", seq=%u, pid=%d}}}, %u, MSG_DONTWAIT, NULL, 0) = %s\n",
               fd, nlh->nlmsg_len, err->msg.nlmsg_len, NLM_F_DUMP,
               err->msg.nlmsg_seq, err->msg.nlmsg_pid,
               nlh->nlmsg_len, sprintrc(rc));
@@ -289,7 +289,7 @@ test_nlmsgerr(const int fd)
        printf("sendto(%d, {{len=%u, type=NLMSG_ERROR, flags=NLM_F_REQUEST"
               ", seq=0, pid=0}, {error=-EACCES"
               ", msg={{len=%u, type=NLMSG_NOOP, flags=NLM_F_REQUEST|0x%x"
-              ", seq=%u, pid=%u}, \"\\x61\\x62\\x63\\x64\"}}}"
+              ", seq=%u, pid=%d}, \"\\x61\\x62\\x63\\x64\"}}}"
               ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
               fd, nlh->nlmsg_len, err->msg.nlmsg_len, NLM_F_DUMP,
               err->msg.nlmsg_seq, err->msg.nlmsg_pid,
diff --git a/tests-mx32/netlink_sock_diag-v.sh b/tests-mx32/netlink_sock_diag-v.sh
deleted file mode 100755 (executable)
index 0fb467d..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/sh
-#
-# Check verbose decoding of NETLINK_SOCK_DIAG protocol
-#
-# Copyright (c) 2017-2018 The strace developers.
-# All rights reserved.
-#
-# SPDX-License-Identifier: GPL-2.0-or-later
-
-. "${srcdir=.}/init.sh"
-
-run_prog ../netlink_netlink_diag
-run_strace_match_diff -v -e trace=sendto
index d5fb977b5c5a47e73c288f49e11d5f421546fc48..f3f17ec0b44431b62b23915fb993344e85507a21 100755 (executable)
@@ -2,7 +2,7 @@
 #
 # Check decoding of NETLINK_SOCK_DIAG protocol
 #
-# Copyright (c) 2017-2018 The strace developers.
+# Copyright (c) 2017-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,4 +10,4 @@
 . "${srcdir=.}/init.sh"
 
 run_prog ../netlink_netlink_diag
-run_strace_match_diff -e trace=sendto
+run_strace_match_diff -e trace=sendto "$@"
index 955dce6d3c0d2660512874120fce2a2ddaa2544c..805248afc15344311e50878a219e2bb0a1d58101 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_newfstatat
 
index 40ec797cb24eaf9759a4066537ff472c51400608..9bea27f2925503b9c1024a9031e4517e740aadbb 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (newfstatat -a32 -v -P stat.sample -P /dev/full); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (newfstatat -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
+run_strace_match_diff -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full
index 2c5927b23055a197d3f0ad8163fc1c5187094e4f..1331386f80342f7d27812b3c53ebd65a08f18fbf 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of netlink attribute.
  *
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -105,7 +105,7 @@ test_nlattr(const int fd)
        nla = NLMSG_ATTR(msg, sizeof(msg->udm));
        *nla = (struct nlattr) {
                .nla_len = NLA_HDRLEN + 4,
-               .nla_type = UNIX_DIAG_SHUTDOWN + 1
+               .nla_type = UNIX_DIAG_FIRST_UNUSED
        };
        memcpy(RTA_DATA(nla), "1234", 4);
        rc = sendto(fd, msg, msg_len, MSG_DONTWAIT, NULL, 0);
@@ -116,7 +116,7 @@ test_nlattr(const int fd)
               ", nla_type=%#x /* UNIX_DIAG_??? */}"
               ", \"\\x31\\x32\\x33\\x34\"}}"
               ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
-              fd, msg_len, nla->nla_len, UNIX_DIAG_SHUTDOWN + 1,
+              fd, msg_len, nla->nla_len, UNIX_DIAG_FIRST_UNUSED,
               msg_len, sprintrc(rc));
 
        /* print one struct nlattr and fetch fail second struct nlattr */
@@ -201,7 +201,7 @@ test_nlattr(const int fd)
        for (i = 0; i < ABBREV_LEN; ++i) {
                nla[i * 2] = (struct nlattr) {
                        .nla_len = NLA_HDRLEN * 2 - 1,
-                       .nla_type = UNIX_DIAG_SHUTDOWN + 1 + i
+                       .nla_type = UNIX_DIAG_FIRST_UNUSED + i
                };
                fill_memory_ex(&nla[i * 2 + 1], NLA_HDRLEN,
                               '0' + i, '~' - '0' - i);
@@ -218,7 +218,7 @@ test_nlattr(const int fd)
                if (i)
                        printf(", ");
                printf("{{nla_len=%u, nla_type=%#x /* UNIX_DIAG_??? */}, ",
-                      nla->nla_len, UNIX_DIAG_SHUTDOWN + 1 + i);
+                      nla->nla_len, UNIX_DIAG_FIRST_UNUSED + i);
                print_quoted_hex(&nla[i * 2 + 1], NLA_HDRLEN - 1);
                printf("}");
        }
@@ -286,7 +286,7 @@ test_nla_type(const int fd)
               ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
               fd, msg_len, nla->nla_len, msg_len, sprintrc(rc));
 
-       nla->nla_type = NLA_F_NESTED | (UNIX_DIAG_SHUTDOWN + 1);
+       nla->nla_type = NLA_F_NESTED | (UNIX_DIAG_FIRST_UNUSED);
        rc = sendto(fd, msg, msg->nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
        printf("sendto(%d, {{len=%u, type=SOCK_DIAG_BY_FAMILY"
               ", flags=NLM_F_DUMP, seq=0, pid=0}, {udiag_family=AF_UNIX"
@@ -294,7 +294,7 @@ test_nla_type(const int fd)
               ", udiag_ino=0, udiag_cookie=[0, 0]}, {nla_len=%u"
               ", nla_type=NLA_F_NESTED|%#x /* UNIX_DIAG_??? */}}"
               ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
-              fd, msg->nlh.nlmsg_len, nla->nla_len, UNIX_DIAG_SHUTDOWN + 1,
+              fd, msg->nlh.nlmsg_len, nla->nla_len, UNIX_DIAG_FIRST_UNUSED,
               msg->nlh.nlmsg_len, sprintrc(rc));
 }
 
index f90c620826621e97830dc043df591709b8039130..2cb2b54938659cd6a14fc0c8184876b893e1944e 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -85,7 +85,8 @@ main(void)
        TEST_NLATTR_OBJECT_EX(fd, nlh0, hdrlen,
                              init_crypto_user_alg, print_crypto_user_alg,
                              CRYPTOCFGA_REPORT_HASH,
-                             pattern, rhash, print_quoted_memory,
+                             pattern, rhash, sizeof(rhash),
+                             print_quoted_memory,
                              printf("{type=\"efgh\"");
                              PRINT_FIELD_U(", ", rhash, blocksize);
                              PRINT_FIELD_U(", ", rhash, digestsize);
@@ -104,7 +105,8 @@ main(void)
        TEST_NLATTR_OBJECT_EX(fd, nlh0, hdrlen,
                              init_crypto_user_alg, print_crypto_user_alg,
                              CRYPTOCFGA_REPORT_BLKCIPHER,
-                             pattern, rblkcipher, print_quoted_memory,
+                             pattern, rblkcipher, sizeof(rblkcipher),
+                             print_quoted_memory,
                              printf("{type=\"abcd\", geniv=\"efgh\"");
                              PRINT_FIELD_U(", ", rblkcipher, blocksize);
                              PRINT_FIELD_U(", ", rblkcipher, min_keysize);
@@ -124,7 +126,8 @@ main(void)
        TEST_NLATTR_OBJECT_EX(fd, nlh0, hdrlen,
                              init_crypto_user_alg, print_crypto_user_alg,
                              CRYPTOCFGA_REPORT_AEAD,
-                             pattern, raead, print_quoted_memory,
+                             pattern, raead, sizeof(raead),
+                             print_quoted_memory,
                              printf("{type=\"abcd\", geniv=\"efgh\"");
                              PRINT_FIELD_U(", ", raead, blocksize);
                              PRINT_FIELD_U(", ", raead, maxauthsize);
@@ -140,7 +143,7 @@ main(void)
        TEST_NLATTR_OBJECT_EX(fd, nlh0, hdrlen,
                              init_crypto_user_alg, print_crypto_user_alg,
                              CRYPTOCFGA_REPORT_RNG,
-                             pattern, rrng, print_quoted_memory,
+                             pattern, rrng, sizeof(rrng), print_quoted_memory,
                              printf("{type=\"abcd\"");
                              PRINT_FIELD_U(", ", rrng, seedsize);
                              printf("}"));
@@ -156,7 +159,8 @@ main(void)
        TEST_NLATTR_OBJECT_EX(fd, nlh0, hdrlen,
                              init_crypto_user_alg, print_crypto_user_alg,
                              CRYPTOCFGA_REPORT_CIPHER,
-                             pattern, rcipher, print_quoted_memory,
+                             pattern, rcipher, sizeof(rcipher),
+                             print_quoted_memory,
                              printf("{type=\"abcd\"");
                              PRINT_FIELD_U(", ", rcipher, blocksize);
                              PRINT_FIELD_U(", ", rcipher, min_keysize);
index a8660196909833925fc4c8b02135e62e2e6f0a1d..4e6df29dd29994a00fd5c044c625b8e33e17a60c 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -27,6 +27,8 @@
 #endif
 #define IFLA_LINK_NETNSID 37
 #define IFLA_EVENT 44
+#define IFLA_PROP_LIST 52
+#define IFLA_ALT_IFNAME 53
 
 #ifndef IFLA_INFO_KIND
 # define IFLA_INFO_KIND 1
@@ -36,6 +38,8 @@
 # define IFLA_VF_PORT 1
 #endif
 
+static const unsigned int hdrlen = sizeof(struct ifinfomsg);
+
 static void
 init_ifinfomsg(struct nlmsghdr *const nlh, const unsigned int msg_len)
 {
@@ -65,6 +69,27 @@ print_ifinfomsg(const unsigned int msg_len)
               msg_len);
 }
 
+static void
+init_prop_list_msg(struct nlmsghdr *const nlh,
+                    const unsigned int msg_len)
+{
+       init_ifinfomsg(nlh, msg_len);
+
+       struct nlattr *nla = NLMSG_ATTR(nlh, hdrlen);
+       SET_STRUCT(struct nlattr, nla,
+               .nla_len = msg_len - NLMSG_SPACE(hdrlen),
+               .nla_type = IFLA_PROP_LIST,
+       );
+}
+
+static void
+print_prop_list_msg(const unsigned int msg_len)
+{
+       print_ifinfomsg(msg_len);
+       printf(", {{nla_len=%u, nla_type=IFLA_PROP_LIST}",
+              msg_len - NLMSG_SPACE(hdrlen));
+}
+
 int
 main(void)
 {
@@ -96,9 +121,8 @@ main(void)
                .tx_compressed = 0xefdadfab
        };
        const int fd = create_nl_socket(NETLINK_ROUTE);
-       const unsigned int hdrlen = sizeof(struct ifinfomsg);
        void *nlh0 = midtail_alloc(NLMSG_SPACE(hdrlen),
-                                  NLA_HDRLEN + sizeof(st));
+                                  2 * NLA_HDRLEN + MAX(sizeof(st), 20));
 
        static char pattern[4096];
        fill_memory_ex(pattern, sizeof(pattern), 'a', 'z' - 'a' + 1);
@@ -118,40 +142,39 @@ main(void)
                           IFLA_LINK_NETNSID, pattern, netnsid,
                           printf("%d", netnsid));
 
-       TEST_NLATTR_OBJECT(fd, nlh0, hdrlen,
-                          init_ifinfomsg, print_ifinfomsg,
-                          IFLA_STATS, pattern, st,
-                          PRINT_FIELD_U("{", st, rx_packets);
-                          PRINT_FIELD_U(", ", st, tx_packets);
-                          PRINT_FIELD_U(", ", st, rx_bytes);
-                          PRINT_FIELD_U(", ", st, tx_bytes);
-                          PRINT_FIELD_U(", ", st, rx_errors);
-                          PRINT_FIELD_U(", ", st, tx_errors);
-                          PRINT_FIELD_U(", ", st, rx_dropped);
-                          PRINT_FIELD_U(", ", st, tx_dropped);
-                          PRINT_FIELD_U(", ", st, multicast);
-                          PRINT_FIELD_U(", ", st, collisions);
-                          PRINT_FIELD_U(", ", st, rx_length_errors);
-                          PRINT_FIELD_U(", ", st, rx_over_errors);
-                          PRINT_FIELD_U(", ", st, rx_crc_errors);
-                          PRINT_FIELD_U(", ", st, rx_frame_errors);
-                          PRINT_FIELD_U(", ", st, rx_fifo_errors);
-                          PRINT_FIELD_U(", ", st, rx_missed_errors);
-                          PRINT_FIELD_U(", ", st, tx_aborted_errors);
-                          PRINT_FIELD_U(", ", st, tx_carrier_errors);
-                          PRINT_FIELD_U(", ", st, tx_fifo_errors);
-                          PRINT_FIELD_U(", ", st, tx_heartbeat_errors);
-                          PRINT_FIELD_U(", ", st, tx_window_errors);
-                          PRINT_FIELD_U(", ", st, rx_compressed);
-                          PRINT_FIELD_U(", ", st, tx_compressed);
+       const unsigned int sizeof_stats =
+               offsetofend(struct rtnl_link_stats, tx_compressed);
+       TEST_NLATTR_OBJECT_MINSZ(fd, nlh0, hdrlen,
+                                init_ifinfomsg, print_ifinfomsg,
+                                IFLA_STATS, pattern, st, sizeof_stats,
+                                PRINT_FIELD_U("{", st, rx_packets);
+                                PRINT_FIELD_U(", ", st, tx_packets);
+                                PRINT_FIELD_U(", ", st, rx_bytes);
+                                PRINT_FIELD_U(", ", st, tx_bytes);
+                                PRINT_FIELD_U(", ", st, rx_errors);
+                                PRINT_FIELD_U(", ", st, tx_errors);
+                                PRINT_FIELD_U(", ", st, rx_dropped);
+                                PRINT_FIELD_U(", ", st, tx_dropped);
+                                PRINT_FIELD_U(", ", st, multicast);
+                                PRINT_FIELD_U(", ", st, collisions);
+                                PRINT_FIELD_U(", ", st, rx_length_errors);
+                                PRINT_FIELD_U(", ", st, rx_over_errors);
+                                PRINT_FIELD_U(", ", st, rx_crc_errors);
+                                PRINT_FIELD_U(", ", st, rx_frame_errors);
+                                PRINT_FIELD_U(", ", st, rx_fifo_errors);
+                                PRINT_FIELD_U(", ", st, rx_missed_errors);
+                                PRINT_FIELD_U(", ", st, tx_aborted_errors);
+                                PRINT_FIELD_U(", ", st, tx_carrier_errors);
+                                PRINT_FIELD_U(", ", st, tx_fifo_errors);
+                                PRINT_FIELD_U(", ", st, tx_heartbeat_errors);
+                                PRINT_FIELD_U(", ", st, tx_window_errors);
+                                PRINT_FIELD_U(", ", st, rx_compressed);
+                                PRINT_FIELD_U(", ", st, tx_compressed);
 #ifdef HAVE_STRUCT_RTNL_LINK_STATS_RX_NOHANDLER
-                          PRINT_FIELD_U(", ", st, rx_nohandler);
+                                PRINT_FIELD_U(", ", st, rx_nohandler);
 #endif
                           printf("}"));
 
-#ifdef HAVE_STRUCT_RTNL_LINK_STATS_RX_NOHANDLER
-       const unsigned int sizeof_stats =
-               offsetofend(struct rtnl_link_stats, tx_compressed);
        TEST_NLATTR(fd, nlh0, hdrlen,
                    init_ifinfomsg, print_ifinfomsg,
                    IFLA_STATS, sizeof_stats, &st, sizeof_stats,
@@ -179,7 +202,6 @@ main(void)
                    PRINT_FIELD_U(", ", st, rx_compressed);
                    PRINT_FIELD_U(", ", st, tx_compressed);
                    printf("}"));
-#endif /* HAVE_STRUCT_RTNL_LINK_STATS_RX_NOHANDLER */
 
        static const struct rtnl_link_ifmap map = {
                .mem_start = 0xadcbefedefbcdedb,
@@ -341,6 +363,33 @@ main(void)
                                   printf("%s", ifla_events[i].str));
        }
 
+       /* IFLA_PROP_LIST */
+       struct {
+               char p1[20];
+       } buf;
+       fill_memory(&buf, sizeof(buf));
+       TEST_NESTED_NLATTR_OBJECT_EX_(fd, nlh0, hdrlen,
+                                     init_prop_list_msg, print_prop_list_msg,
+                                     IFLA_ALT_IFNAME, "IFLA_ALT_IFNAME",
+                                     pattern, buf, print_quoted_stringn, 1,
+                                     print_quoted_memory(&buf, sizeof(buf));
+                                     printf("..."));
+
+       /* IFLA_ALT_IFNAME */
+       static const char alt_ifname[] = "OH HAI THAR\r\n\t\377\0\v\x7e";
+       TEST_NLATTR(fd, nlh0, hdrlen,
+                   init_ifinfomsg, print_ifinfomsg,
+                   IFLA_ALT_IFNAME,
+                   sizeof(alt_ifname), alt_ifname, sizeof(alt_ifname),
+                   print_quoted_memory(alt_ifname, sizeof(alt_ifname) - 1));
+
+       TEST_NLATTR(fd, nlh0, hdrlen,
+                   init_ifinfomsg, print_ifinfomsg,
+                   IFLA_ALT_IFNAME,
+                   sizeof(alt_ifname) - 1, alt_ifname, sizeof(alt_ifname) - 1,
+                   print_quoted_memory(alt_ifname, sizeof(alt_ifname) - 1);
+                   printf("..."));
+
        puts("+++ exited with 0 +++");
        return 0;
 }
index 080e73718e7e8d95ca62ac0d83c61de285938a2b..9c648d0529a9c81d2d68bcdeba5dd43251c353ff 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * IFLA_LINKINFO netlink attribute decoding check.
  *
- * Copyright (c) 2018-2019 The strace developers.
+ * Copyright (c) 2018-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -347,7 +347,6 @@ main(void)
        /* bridge attrs */
        static const struct val_name und_br_attrs[] = {
                { 0, "IFLA_BR_UNSPEC" },
-               { 20, "IFLA_BR_GROUP_ADDR" },
                { 21, "IFLA_BR_FDB_FLUSH" },
                { 40, "IFLA_BR_PAD" },
                { 47, "0x2f /* IFLA_BR_??? */" },
@@ -367,6 +366,21 @@ main(void)
                                        "\\x63\\x64\\x65\\x66\"" });
        }
 
+       static const struct val_name hwa_br_attrs[] = {
+               { 20, "IFLA_BR_GROUP_ADDR" },
+       };
+
+       for (size_t k = 0; k < ARRAY_SIZE(hwa_br_attrs); k++) {
+               TEST_NESTED_LINKINFO(fd, nlh0, 2, "IFLA_INFO_DATA", "bridge",
+                                    hwa_br_attrs[k].val, hwa_br_attrs[k].name,
+                                    unknown_msg, pattern,
+                                    { 2, "ab:ac" },
+                                    { 4, "ab:ac:db:cd" },
+                                    { 6, "ab:ac:db:cd:61:62" },
+                                    { 8, "ab:ac:db:cd:61:62:63:64" },
+                                    { 10, "ab:ac:db:cd:61:62:63:64:65:66" });
+       }
+
        static const struct val_name u64_br_attrs[] = {
                { 16, "IFLA_BR_HELLO_TIMER" },
                { 17, "IFLA_BR_TCN_TIMER" },
index df2a2ef6e67c5d4818297a815edef1f0c629526d..49003614fbed40c0630a5093aac417452191cfd7 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -57,6 +57,21 @@ main(void)
                                  printf(", vsi_type_id=\"\\x61\\x62\\x63\"");
                                  PRINT_FIELD_U(", ", vsi, vsi_type_version);
                                  printf("}"));
+
+       static const struct ifla_port_vsi vsi2 = {
+               .vsi_mgr_id = 0xab,
+               .vsi_type_id = { 10, 0, 255 },
+               .vsi_type_version = 0xef,
+               .pad = { 0, 1, 2 },
+       };
+       TEST_NESTED_NLATTR_OBJECT(fd, nlh0, hdrlen,
+                                 init_ifinfomsg, print_ifinfomsg,
+                                 IFLA_PORT_VSI_TYPE, pattern, vsi2,
+                                 PRINT_FIELD_U("{", vsi2, vsi_mgr_id);
+                                 printf(", vsi_type_id=\"\\x0a\\x00\\xff\"");
+                                 PRINT_FIELD_U(", ", vsi2, vsi_type_version);
+                                 printf(", pad=\"\\x00\\x01\\x02\"");
+                                 printf("}"));
 #endif
 
        puts("+++ exited with 0 +++");
diff --git a/tests-mx32/nlattr_ifla_xdp-y.c b/tests-mx32/nlattr_ifla_xdp-y.c
new file mode 100644 (file)
index 0000000..791c2be
--- /dev/null
@@ -0,0 +1,3 @@
+#define PRINT_SOCK 1
+#define FD9_PATH "</dev/full>"
+#include "nlattr_ifla_xdp.c"
diff --git a/tests-mx32/nlattr_ifla_xdp-y.gen.test b/tests-mx32/nlattr_ifla_xdp-y.gen.test
new file mode 100755 (executable)
index 0000000..5826766
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ifla_xdp-y +netlink_sock_diag.test -y; exec 9</dev/full); do not edit.
+set -- -y; exec 9</dev/full
+. "${srcdir=.}/netlink_sock_diag.test"
index 232f21452a2d7eb2d8c1f82d5c2e2a8afbebc45f..3796e5ea15acbbc91501b5fbc85c7cbedc28d5f7 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 #endif
 #include <linux/rtnetlink.h>
 
+#define XLAT_MACROS_ONLY
+# include "xlat/rtnl_ifla_xdp_attrs.h"
+#undef XLAT_MACROS_ONLY
+
 #if !HAVE_DECL_IFLA_XDP
 enum { IFLA_XDP = 43 };
 #endif
-#ifndef IFLA_XDP_FD
-# define IFLA_XDP_FD 1
-#endif
-
-#ifndef IFLA_XDP_ATTACHED
-# define IFLA_XDP_ATTACHED 2
-#endif
-
-#ifndef IFLA_XDP_PROG_ID
-# define IFLA_XDP_PROG_ID 4
-#endif
-
-#ifndef IFLA_XDP_DRV_PROG_ID
-# define IFLA_XDP_DRV_PROG_ID 5
-#endif
 
-#ifndef IFLA_XDP_SKB_PROG_ID
-# define IFLA_XDP_SKB_PROG_ID 6
+#if !HAVE_DECL_XDP_ATTACHED_NONE
+enum { XDP_ATTACHED_NONE = 0 };
 #endif
-
-#ifndef IFLA_XDP_HW_PROG_ID
-# define IFLA_XDP_HW_PROG_ID 7
-#endif
-
-#ifndef XDP_ATTACHED_NONE
-# define XDP_ATTACHED_NONE 0
-#endif
-
-#ifndef XDP_ATTACHED_MULTI
-# define XDP_ATTACHED_MULTI 4
+#if !HAVE_DECL_XDP_ATTACHED_MULTI
+enum { XDP_ATTACHED_MULTI = 4 };
 #endif
 
 #define IFLA_ATTR IFLA_XDP
 #include "nlattr_ifla.h"
 
+#ifndef FD9_PATH
+# define FD9_PATH ""
+#endif
+
 int
 main(void)
 {
@@ -118,6 +102,18 @@ main(void)
                                              printf("%u", num));
        }
 
+       /* IFLA_XDP_EXPECTED_FD */
+       TEST_NESTED_NLATTR_OBJECT_EX(fd, nlh0, hdrlen,
+                                    init_ifinfomsg, print_ifinfomsg,
+                                    IFLA_XDP_EXPECTED_FD, pattern, num, 1,
+                                    printf("%d", num));
+
+       int exp_fd = 9;
+       TEST_NESTED_NLATTR_OBJECT_EX(fd, nlh0, hdrlen,
+                                    init_ifinfomsg, print_ifinfomsg,
+                                    IFLA_XDP_EXPECTED_FD, pattern, exp_fd, 1,
+                                    printf("9" FD9_PATH));
+
        puts("+++ exited with 0 +++");
        return 0;
 }
index 8cce46cd709c8d5f74caf7f83beaeacc0536af9b..9956b9610a05d27ba8991d1883be99a1c2263491 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -73,10 +73,10 @@ main(void)
 
        char nla_type_str[256];
        sprintf(nla_type_str, "%#x /* INET_DIAG_REQ_??? */",
-               INET_DIAG_REQ_BYTECODE + 1);
+               INET_DIAG_REQ_PROTOCOL + 1);
        TEST_NLATTR_(fd, nlh0, hdrlen,
                     init_inet_diag_req, print_inet_diag_req,
-                    INET_DIAG_REQ_BYTECODE + 1, nla_type_str,
+                    INET_DIAG_REQ_PROTOCOL + 1, nla_type_str,
                     4, pattern, 4,
                     print_quoted_hex(pattern, 4));
 
index 7ac89ff0d1669d2812ed5045696dfcbf317438ac..e7b0c498c1d46b295900e402c7e0877f0c0157b3 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -122,9 +122,13 @@ main(void)
                                     printf(", state=MDB_TEMPORARY");
 #  ifdef HAVE_STRUCT_BR_MDB_ENTRY_FLAGS
                                     printf(", flags=MDB_FLAGS_OFFLOAD");
+#  else
+                                    printf(", flags=0");
 #  endif
 #  ifdef HAVE_STRUCT_BR_MDB_ENTRY_VID
                                     PRINT_FIELD_U(", ", entry, vid);
+#  else
+                                    printf(", vid=0");
 #  endif
                                     printf(", addr={u=");
                                     print_quoted_hex(&entry.addr.u,
@@ -145,9 +149,13 @@ main(void)
                    printf(", state=MDB_TEMPORARY");
 #  ifdef HAVE_STRUCT_BR_MDB_ENTRY_FLAGS
                    printf(", flags=MDB_FLAGS_OFFLOAD");
+#  else
+                   printf(", flags=0");
 #  endif
 #  ifdef HAVE_STRUCT_BR_MDB_ENTRY_VID
                    PRINT_FIELD_U(", ", entry, vid);
+#  else
+                   printf(", vid=0");
 #  endif
                    printf(", addr={u=");
                    print_quoted_hex(&entry.addr.u, sizeof(entry.addr.u));
index 7ec9992a8f76a1b940309fc8dcddb908b523fd5e..f954ce41aff1bba7f91c7a9ac478133840633e24 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -12,6 +12,8 @@
 
 # include <stdio.h>
 # include "test_nlattr.h"
+/* struct br_mdb_entry needs a definition of struct in6_addr.  */
+# include <netinet/in.h>
 # include <linux/if_bridge.h>
 # include <linux/rtnetlink.h>
 
index 2dd82ce48e592bafa3e2be9675057d4a4c6591ef..8404c7a0d643b5a19cdc69ff0c65398f828b2e91 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -99,6 +99,17 @@ main(void)
                           NDA_PORT, pattern, port,
                           printf("htons(%u)", ntohs(port)));
 
+       static const uint8_t mac[6] = "\xf8\xc2\x49\x13\x57\xbd";
+       TEST_NLATTR(fd, nlh0, hdrlen, init_ndmsg, print_ndmsg,
+                   NDA_LLADDR, sizeof(mac) - 1, mac, sizeof(mac) - 1,
+                   for (unsigned int i = 0; i < sizeof(mac) - 1; ++i)
+                       printf("%s%02x", i ? ":" : "", mac[i]));
+
+       TEST_NLATTR(fd, nlh0, hdrlen, init_ndmsg, print_ndmsg,
+                   NDA_LLADDR, sizeof(mac), mac, sizeof(mac),
+                   for (unsigned int i = 0; i < sizeof(mac); ++i)
+                       printf("%s%02x", i ? ":" : "", mac[i]));
+
        puts("+++ exited with 0 +++");
        return 0;
 }
index 7177ea2a3ee13514357df108601c7cf1dfcac860..f069775fb6085bb048d1cba0acc85968b5b6fd7d 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_packet_diag_msg +netlink_sock_diag-v.sh ); do not edit.
-set -- 
-. "${srcdir=.}/netlink_sock_diag-v.sh"
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_packet_diag_msg +netlink_sock_diag.test -v); do not edit.
+set -- -v
+. "${srcdir=.}/netlink_sock_diag.test"
index c0ebaf89ed009abbe2fadd6cdd4a3f0a2e11b6a8..3fb4b743a33dc8c13d0af9374d688c38c1da0560 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 # include <linux/gen_stats.h>
 # include <linux/rtnetlink.h>
 
+# if !HAVE_DECL_TCA_STATS_PKT64
+enum { TCA_STATS_PKT64 = 8 };
+# endif
+
 const unsigned int hdrlen = sizeof(struct tcmsg);
 
 static void
@@ -120,6 +124,12 @@ main(void)
                                  printf("}"));
 # endif
 
+       static const uint64_t pkt64 = 0xdeadc0defacefeedULL;
+       TEST_NESTED_NLATTR_OBJECT(fd, nlh0, hdrlen,
+                                 init_tcmsg, print_tcmsg,
+                                 TCA_STATS_PKT64, pattern, pkt64,
+                                 printf("16045693111314087661"));
+
        puts("+++ exited with 0 +++");
        return 0;
 }
index b8bd7e35733ab28af40a4b209ce3d094c83a4c96..e25e32a60c93b3647e047f1970e081c7d2263bc4 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 
 #include <stdio.h>
 #include "test_nlattr.h"
+#include <linux/pkt_cls.h>
 #include <linux/rtnetlink.h>
 
+#if !HAVE_DECL_TCA_ACT_PAD
+enum { TCA_ACT_PAD = 5 };
+#endif
+#if !HAVE_DECL_TCA_ACT_COOKIE
+enum { TCA_ACT_COOKIE = 6 };
+#endif
+#if !HAVE_DECL_TCA_ACT_FLAGS
+enum { TCA_ACT_FLAGS = 7 };
+#endif
+#if !HAVE_DECL_TCA_ACT_HW_STATS
+enum { TCA_ACT_HW_STATS = 8 };
+#endif
+#if !HAVE_DECL_TCA_ACT_USED_HW_STATS
+enum { TCA_ACT_USED_HW_STATS = 9 };
+#endif
+
+
 static void
 init_tcamsg(struct nlmsghdr *const nlh, const unsigned int msg_len)
 {
@@ -47,14 +65,72 @@ main(void)
        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 /* TCA_ACT_??? */", nla_type);
-       TEST_NLATTR_(fd, nlh0, hdrlen,
-                    init_tcamsg, print_tcamsg,
-                    nla_type, nla_type_str,
-                    4, pattern, 4,
-                    print_quoted_hex(pattern, 4));
+       /* Invalid */
+       static const unsigned int nla_invalid[] = { 10, 0xffff & NLA_TYPE_MASK };
+       for (size_t i = 0; i < ARRAY_SIZE(nla_invalid); i++) {
+               char nla_type_str[256];
+               sprintf(nla_type_str, "%#x /* TCA_ACT_??? */", nla_invalid[i]);
+               TEST_NLATTR_(fd, nlh0, hdrlen,
+                            init_tcamsg, print_tcamsg,
+                            nla_invalid[i], nla_type_str,
+                            21, pattern, 21,
+                            print_quoted_hex(pattern, 21));
+       }
+
+       /* Default decoder */
+       static const struct {
+               unsigned int val;
+               const char *str;
+       } nla_default[] = {
+               { ARG_STR(TCA_ACT_UNSPEC) },
+               { ARG_STR(TCA_ACT_OPTIONS) },
+               { ARG_STR(TCA_ACT_PAD) },
+               { ARG_STR(TCA_ACT_COOKIE) },
+       };
+       for (size_t i = 0; i < ARRAY_SIZE(nla_default); i++) {
+               TEST_NLATTR_(fd, nlh0, hdrlen,
+                            init_tcamsg, print_tcamsg,
+                            nla_default[i].val, nla_default[i].str,
+                            17, pattern, 17,
+                            print_quoted_hex(pattern, 17));
+       }
+
+       /* TCA_ACT_KIND */
+       TEST_NLATTR(fd, nlh0, hdrlen, init_tcamsg, print_tcamsg,
+                   TCA_ACT_KIND, 21, pattern, 21,
+                   print_quoted_cstring(pattern, 22));
+
+       static const char kind[] = "Hello\tthere";
+       TEST_NLATTR(fd, nlh0, hdrlen, init_tcamsg, print_tcamsg,
+                   TCA_ACT_KIND, sizeof(kind), kind, sizeof(kind),
+                   print_quoted_string(kind));
+
+       /* TCA_ACT_INDEX */
+       static uint32_t idx = 0xdeadc0de;
+       TEST_NLATTR(fd, nlh0, hdrlen, init_tcamsg, print_tcamsg,
+                   TCA_ACT_INDEX, sizeof(idx), &idx, sizeof(idx),
+                   printf("%u", idx));
+
+       /* TCA_ACT_FLAGS */
+       static uint32_t flags = 0xfacebeef;
+       TEST_NLATTR(fd, nlh0, hdrlen, init_tcamsg, print_tcamsg,
+                   TCA_ACT_FLAGS, sizeof(flags), &flags, sizeof(flags),
+                   printf("TCA_ACT_FLAGS_NO_PERCPU_STATS|0xfacebeee"));
+
+       /* TCA_ACT_HW_STATS, TCA_ACT_USED_HW_STATS */
+       static const struct strval32 nla_hw_st[] = {
+               { ARG_STR(TCA_ACT_HW_STATS) },
+               { ARG_STR(TCA_ACT_USED_HW_STATS) },
+       };
+
+       static uint32_t hw_st = 0xfacebeef;
+       for (size_t i = 0; i < ARRAY_SIZE(nla_hw_st); i++) {
+               TEST_NLATTR_(fd, nlh0, hdrlen, init_tcamsg, print_tcamsg,
+                            nla_hw_st[i].val, nla_hw_st[i].str,
+                            sizeof(hw_st), &hw_st, sizeof(hw_st),
+                            printf("TCA_ACT_HW_STATS_IMMEDIATE|"
+                                   "TCA_ACT_HW_STATS_DELAYED|0xfacebeec"));
+       }
 
        puts("+++ exited with 0 +++");
        return 0;
index a6495b6b6ddf2c7052e3a7ad7a9638e367ac720c..8892de87557a3ab882ff0d199c2dfa45a34e6a0b 100755 (executable)
@@ -1,8 +1,8 @@
 #!/bin/sh
 #
-# Check decoding of out-of-range syscalls along with debug ouput
+# Check decoding of out-of-range syscalls along with debug output
 #
-# Copyright (c) 2017-2018 The strace developers.
+# Copyright (c) 2017-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
index 529f50ee0e6753dc70cf6935ef0aa035336dd751..1eb900711e7112addb2f5422866f8c386a62c01f 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of out-of-range syscalls.
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -14,7 +14,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 #include "sysent_shorthand_defs.h"
 
@@ -28,13 +28,6 @@ static const struct_sysent syscallent[] = {
 # define DEBUG_PRINT 0
 #endif
 
-#if defined __X32_SYSCALL_BIT && defined __NR_read \
- && (__X32_SYSCALL_BIT & __NR_read) != 0
-# define SYSCALL_BIT __X32_SYSCALL_BIT
-#else
-# define SYSCALL_BIT 0
-#endif
-
 #if DEBUG_PRINT
 static const char *strace_name;
 static FILE *debug_out;
index 92ab3efb998438e9a6c88de2c5bc96b0b84d86f0..f095bc4366a5c296e20efb45ed167d176bdc1daf 100644 (file)
@@ -2,14 +2,14 @@
  * Check decoding of "old mmap" edition of mmap syscall.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 /*
  * On s390x and m68k, this is the mmap syscall used by glibc, so,
@@ -22,6 +22,7 @@
                || defined __s390__ || defined __s390x__) \
        && (defined PATH_TRACING || !(defined __s390x__ || defined __m68k__))
 
+# include <errno.h>
 # include <stdio.h>
 # include <string.h>
 # include <sys/mman.h>
@@ -35,8 +36,9 @@ int
 main(void)
 {
        long rc = syscall(__NR_mmap, 0);
+       const bool implemented = rc != -1 || errno != ENOSYS;
 # ifndef PATH_TRACING
-       printf("mmap(NULL) = %ld %s (%m)\n", rc, errno2name());
+       printf("mmap(NULL) = %s\n", sprintrc(rc));
 # endif
 
        const unsigned long args1_c[6] = {
@@ -60,42 +62,51 @@ main(void)
 
        rc = syscall(__NR_mmap, args);
 # if XLAT_RAW
-       printf("mmap(%#lx, %lu, %#x, %#x, %d, %#lx) = %ld %s (%m)\n",
+       printf("mmap(%#lx, %lu, %#x, %#x, %d, %#lx) = %s\n",
               args1_c[0], args1_c[1], PROT_READ|PROT_EXEC, MAP_FILE | MAP_FIXED,
-              (int) args1_c[4], args1_c[5], rc, errno2name());
+              (int) args1_c[4], args1_c[5], sprintrc(rc));
 # elif XLAT_VERBOSE
        printf("mmap(%#lx, %lu, %#x /* PROT_READ|PROT_EXEC */"
-              ", %#x /* MAP_FILE|MAP_FIXED */, %d, %#lx) = %ld %s (%m)\n",
+              ", %#x /* MAP_FILE|MAP_FIXED */, %d, %#lx) = %s\n",
               args1_c[0], args1_c[1], PROT_READ|PROT_EXEC, MAP_FILE | MAP_FIXED,
-              (int) args1_c[4], args1_c[5], rc, errno2name());
+              (int) args1_c[4], args1_c[5], sprintrc(rc));
 # else
        printf("mmap(%#lx, %lu, PROT_READ|PROT_EXEC, MAP_FILE|MAP_FIXED"
-              ", %d, %#lx) = %ld %s (%m)\n",
+              ", %d, %#lx) = %s\n",
               args1_c[0], args1_c[1], (int) args1_c[4], args1_c[5],
-              rc, errno2name());
+              sprintrc(rc));
 # endif
 
        memcpy(args, args2_c, sizeof(args2_c));
        rc = syscall(__NR_mmap, args);
 # ifndef PATH_TRACING
+       const char *errstr;
+       if (implemented) {
+               char *str;
+               if (asprintf(&str, "%#lx", rc) < 0)
+                       perror_msg_and_fail("asprintf");
+               errstr = str;
+       } else {
+               errstr = sprintrc(rc);
+       }
 #  if XLAT_RAW
-       printf("mmap(NULL, %lu, %#x, %#x, %d, %#lx) = %#lx\n",
+       printf("mmap(NULL, %lu, %#x, %#x, %d, %#lx) = %s\n",
               args2_c[1], PROT_READ|PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS,
-              (int) args2_c[4], args2_c[5], rc);
+              (int) args2_c[4], args2_c[5], errstr);
 #  elif XLAT_VERBOSE
        printf("mmap(NULL, %lu, %#x /* PROT_READ|PROT_WRITE */"
-              ", %#x /* MAP_PRIVATE|MAP_ANONYMOUS */, %d, %#lx) = %#lx\n",
+              ", %#x /* MAP_PRIVATE|MAP_ANONYMOUS */, %d, %#lx) = %s\n",
               args2_c[1], PROT_READ|PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS,
-              (int) args2_c[4], args2_c[5], rc);
+              (int) args2_c[4], args2_c[5], errstr);
 #  else
        printf("mmap(NULL, %lu, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS"
-              ", %d, %#lx) = %#lx\n",
-              args2_c[1], (int) args2_c[4], args2_c[5], rc);
+              ", %d, %#lx) = %s\n",
+              args2_c[1], (int) args2_c[4], args2_c[5], errstr);
 #  endif
 # endif
 
        void *addr = (void *) rc;
-       if (mprotect(addr, page_size, PROT_NONE))
+       if (implemented && mprotect(addr, page_size, PROT_NONE))
                perror_msg_and_fail("mprotect(%p, %lu, PROT_NONE)",
                                    addr, page_size);
 
index c2624777ef3aceff2ca75330e10ebed0576ad7f3..12f0645b715e36608ff1c8561e644fe5659a2947 100644 (file)
@@ -3,14 +3,14 @@
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_oldfstat && HAVE_STRUCT___OLD_KERNEL_STAT
 
index 0444b17f0d64cc08a57cbeabbde9a6a4da654b07..d6e8f4e3708b66e8bb517f816efdbe1e3c6f67f2 100644 (file)
@@ -3,14 +3,14 @@
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_oldlstat && HAVE_STRUCT___OLD_KERNEL_STAT
 
index 4e927521226ac8ed796c2a4aadd5892ab93c06d7..5c55538202d145727f2417a773b57aaedf525b1d 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2018-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_select && defined __NR__newselect \
  && __NR_select != __NR__newselect \
index 0af3554130bd31ae6ccd32d50125ff08b04adfd7..b6f83081845d29e8ebbf67788d9c5f4a85979629 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_select && defined __NR__newselect \
  && __NR_select != __NR__newselect \
index 03b40335a5ab787dec4234353703ed32d04f6a53..022dd33cf9e2f597b5a09b34e9ef45e96f5c44a4 100644 (file)
@@ -3,14 +3,14 @@
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_oldstat && HAVE_STRUCT___OLD_KERNEL_STAT
 
index 43a3ae6815e3357288e6c73c5ec6ef08ed9ae618..05e1fb0f0826f5e77bd26fc9687974167af4334b 100644 (file)
@@ -1,13 +1,13 @@
 /*
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_open
 
diff --git a/tests-mx32/open_tree-P.c b/tests-mx32/open_tree-P.c
new file mode 100644 (file)
index 0000000..0097d76
--- /dev/null
@@ -0,0 +1,2 @@
+#define PATH_TRACING
+#include "open_tree.c"
diff --git a/tests-mx32/open_tree-P.gen.test b/tests-mx32/open_tree-P.gen.test
new file mode 100755 (executable)
index 0000000..73d5cdb
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (open_tree-P -a30 --decode-fds -P /dev/full -e trace=open_tree); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a30 --decode-fds -P /dev/full -e trace=open_tree
diff --git a/tests-mx32/open_tree.c b/tests-mx32/open_tree.c
new file mode 100644 (file)
index 0000000..bdce09e
--- /dev/null
@@ -0,0 +1,110 @@
+/*
+ * Check decoding of open_tree syscall.
+ *
+ * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_open_tree
+
+# include <fcntl.h>
+# include <limits.h>
+# include <stdio.h>
+# include <stdint.h>
+# include <unistd.h>
+
+static const char *errstr;
+
+static long
+k_open_tree(const unsigned int dfd,
+           const void *fname,
+           const unsigned int flags)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = fill | dfd;
+       const kernel_ulong_t arg2 = (uintptr_t) fname;
+       const kernel_ulong_t arg3 = fill | flags;
+       const long rc = syscall(__NR_open_tree, arg1, arg2, arg3, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
+int
+main(void)
+{
+       skip_if_unavailable("/proc/self/fd/");
+
+       static const char path_full[] = "/dev/full";
+       const char *const path = tail_memdup(path_full, sizeof(path_full));
+       char *const fname = tail_alloc(PATH_MAX);
+       const void *const efault = fname + PATH_MAX;
+       const char *const empty = efault - 1;
+       fill_memory_ex(fname, PATH_MAX, '0', 10);
+
+        int dfd = open(path, O_WRONLY);
+        if (dfd < 0)
+                perror_msg_and_fail("open: %s", path);
+
+       k_open_tree(-1, 0, 1);
+# ifndef PATH_TRACING
+       printf("open_tree(-1, NULL, %s) = %s\n", "OPEN_TREE_CLONE", errstr);
+# endif
+
+       k_open_tree(-100, fname, 0);
+# ifndef PATH_TRACING
+       printf("open_tree(%s, \"%.*s\"..., 0) = %s\n",
+              "AT_FDCWD", (int) PATH_MAX - 1, fname, errstr);
+# endif
+
+       fname[PATH_MAX - 1] = '\0';
+       k_open_tree(dfd, fname, 0x8000);
+       printf("open_tree(%d<%s>, \"%s\", %s) = %s\n",
+              dfd, path, fname, "AT_RECURSIVE", errstr);
+
+# ifdef O_CLOEXEC
+       k_open_tree(-1, efault, O_CLOEXEC | 1);
+#  ifndef PATH_TRACING
+       printf("open_tree(-1, %p, %s) = %s\n",
+              efault, "OPEN_TREE_CLONE|OPEN_TREE_CLOEXEC", errstr);
+#  endif
+
+       k_open_tree(-1, empty, -1);
+#  ifndef PATH_TRACING
+       printf("open_tree(-1, \"\", %s|%#x) = %s\n",
+              "OPEN_TREE_CLONE|OPEN_TREE_CLOEXEC"
+              "|AT_SYMLINK_NOFOLLOW|AT_REMOVEDIR|AT_SYMLINK_FOLLOW"
+              "|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|AT_RECURSIVE",
+              -1U & ~0x9f01 & ~O_CLOEXEC,
+              errstr);
+#  endif
+# endif /* O_CLOEXEC */
+
+       if (k_open_tree(-1, path, 0) < 0)
+               printf("open_tree(-1, \"%s\", 0) = %s\n",
+                      path, errstr);
+       else
+               printf("open_tree(-1, \"%s\", 0) = %s<%s>\n",
+                      path, errstr, path);
+
+       if (k_open_tree(dfd, empty, 0x1000) < 0)
+               printf("open_tree(%d<%s>, \"\", %s) = %s\n",
+                      dfd, path, "AT_EMPTY_PATH", errstr);
+       else
+               printf("open_tree(%d<%s>, \"\", %s) = %s<%s>\n",
+                      dfd, path, "AT_EMPTY_PATH", errstr, path);
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_open_tree")
+
+#endif
diff --git a/tests-mx32/open_tree.gen.test b/tests-mx32/open_tree.gen.test
new file mode 100755 (executable)
index 0000000..535010b
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (open_tree -a30 -y); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a30 -y
index d4a741787515b9534a1a347a40a2a5e508dafcdf..8d1bca0bb21de8cbc54bc506959c38b796150c37 100644 (file)
@@ -1,13 +1,13 @@
 /*
  * Copyright (c) 2016 Katerina Koukiou <k.koukiou@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_openat
 
diff --git a/tests-mx32/openat2-Xabbrev.c b/tests-mx32/openat2-Xabbrev.c
new file mode 100644 (file)
index 0000000..ba18bde
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_ABBREV 1
+#include "openat2.c"
diff --git a/tests-mx32/openat2-Xabbrev.gen.test b/tests-mx32/openat2-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..371daa3
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (openat2-Xabbrev --trace=openat2 -a35 -Xabbrev); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff --trace=openat2 -a35 -Xabbrev
diff --git a/tests-mx32/openat2-Xraw.c b/tests-mx32/openat2-Xraw.c
new file mode 100644 (file)
index 0000000..7a50005
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "openat2.c"
diff --git a/tests-mx32/openat2-Xraw.gen.test b/tests-mx32/openat2-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..bf5084e
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (openat2-Xraw --trace=openat2 -a32 -Xraw); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff --trace=openat2 -a32 -Xraw
diff --git a/tests-mx32/openat2-Xverbose.c b/tests-mx32/openat2-Xverbose.c
new file mode 100644 (file)
index 0000000..a69ad16
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "openat2.c"
diff --git a/tests-mx32/openat2-Xverbose.gen.test b/tests-mx32/openat2-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..946996b
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (openat2-Xverbose --trace=openat2 -a35 -Xverbose); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff --trace=openat2 -a35 -Xverbose
diff --git a/tests-mx32/openat2-v-y-Xabbrev.c b/tests-mx32/openat2-v-y-Xabbrev.c
new file mode 100644 (file)
index 0000000..daceedd
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_ABBREV 1
+#include "openat2-v-y.c"
diff --git a/tests-mx32/openat2-v-y-Xabbrev.gen.test b/tests-mx32/openat2-v-y-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..665be81
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (openat2-v-y-Xabbrev --trace=openat2 -a35 -v -y -Xabbrev </dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff --trace=openat2 -a35 -v -y -Xabbrev </dev/full
diff --git a/tests-mx32/openat2-v-y-Xraw.c b/tests-mx32/openat2-v-y-Xraw.c
new file mode 100644 (file)
index 0000000..ce958c7
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "openat2-v-y.c"
diff --git a/tests-mx32/openat2-v-y-Xraw.gen.test b/tests-mx32/openat2-v-y-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..c4f7141
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (openat2-v-y-Xraw --trace=openat2 -a32 -v -y -Xraw </dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff --trace=openat2 -a32 -v -y -Xraw </dev/full
diff --git a/tests-mx32/openat2-v-y-Xverbose.c b/tests-mx32/openat2-v-y-Xverbose.c
new file mode 100644 (file)
index 0000000..1dc4715
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "openat2-v-y.c"
diff --git a/tests-mx32/openat2-v-y-Xverbose.gen.test b/tests-mx32/openat2-v-y-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..37b1744
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (openat2-v-y-Xverbose --trace=openat2 -a44 -v -y -Xverbose </dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff --trace=openat2 -a44 -v -y -Xverbose </dev/full
diff --git a/tests-mx32/openat2-v-y.c b/tests-mx32/openat2-v-y.c
new file mode 100644 (file)
index 0000000..dcbca1a
--- /dev/null
@@ -0,0 +1,2 @@
+#define FD0_PATH "</dev/full>"
+#include "openat2-v.c"
diff --git a/tests-mx32/openat2-v-y.gen.test b/tests-mx32/openat2-v-y.gen.test
new file mode 100755 (executable)
index 0000000..9e4a394
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (openat2-v-y --trace=openat2 -a36 -v -y </dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff --trace=openat2 -a36 -v -y </dev/full
diff --git a/tests-mx32/openat2-v.c b/tests-mx32/openat2-v.c
new file mode 100644 (file)
index 0000000..fafe533
--- /dev/null
@@ -0,0 +1,2 @@
+#define VERBOSE 1
+#include "openat2.c"
diff --git a/tests-mx32/openat2-v.gen.test b/tests-mx32/openat2-v.gen.test
new file mode 100755 (executable)
index 0000000..1b24cbc
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (openat2-v --trace=openat2 -a35 -v); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff --trace=openat2 -a35 -v
diff --git a/tests-mx32/openat2-y.c b/tests-mx32/openat2-y.c
new file mode 100644 (file)
index 0000000..50b1863
--- /dev/null
@@ -0,0 +1,2 @@
+#define FD0_PATH "</dev/full>"
+#include "openat2.c"
diff --git a/tests-mx32/openat2-y.gen.test b/tests-mx32/openat2-y.gen.test
new file mode 100755 (executable)
index 0000000..5dad223
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (openat2-y --trace=openat2 -a36 -y </dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff --trace=openat2 -a36 -y </dev/full
diff --git a/tests-mx32/openat2.c b/tests-mx32/openat2.c
new file mode 100644 (file)
index 0000000..864dc15
--- /dev/null
@@ -0,0 +1,172 @@
+/*
+ * Check decoding of openat2 syscall.
+ *
+ * Copyright (c) 2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_openat2
+
+# include <errno.h>
+# include <stdint.h>
+# include <inttypes.h>
+# include <stdio.h>
+# include <string.h>
+# include <unistd.h>
+# include <asm/fcntl.h>
+
+# ifdef HAVE_LINUX_OPENAT2
+#  include <linux/openat2.h>
+# endif
+
+# ifndef HAVE_LINUX_OPENAT2
+struct open_how {
+       uint64_t flags;
+       uint64_t mode;
+       uint64_t resolve;
+};
+# endif
+
+# ifndef AT_FDCWD
+#  define AT_FDCWD -100
+# endif
+# ifndef RESOLVE_NO_XDEV
+#  define RESOLVE_NO_XDEV 0x01
+# endif
+# ifndef RESOLVE_IN_ROOT
+#  define RESOLVE_IN_ROOT 0x10
+# endif
+
+# ifndef O_TMPFILE
+#  if defined __hppa__
+#   define __O_TMPFILE     040000000
+#  elif defined __alpha__
+#   define __O_TMPFILE     0100000000
+#  elif defined __sparc__
+#   define __O_TMPFILE     0200000000
+#  else
+#   define __O_TMPFILE     020000000
+#  endif
+# endif
+
+# ifndef VERBOSE
+#  define VERBOSE 0
+# endif
+# ifndef FD0_PATH
+#  define FD0_PATH ""
+# endif
+
+static const char sample[] = "openat2.sample";
+
+int
+main(void)
+{
+       long rc;
+       const char *rcstr;
+       struct open_how *how = tail_alloc(sizeof(*how));
+       struct open_how *how_big = tail_alloc(sizeof(*how_big) + 8);
+
+       rc = syscall(__NR_openat2, 0, NULL, NULL,
+                    (kernel_ulong_t) 0xdeadc0debadc0dedULL);
+       printf("openat2(0" FD0_PATH ", NULL, NULL, %llu) = %s\n",
+              (unsigned long long) (kernel_ulong_t) 0xdeadc0debadc0dedULL,
+              sprintrc(rc));
+
+       rc = syscall(__NR_openat2, -100, "", how + 1, sizeof(*how));
+       printf("openat2(%s, \"\", %p, %zu) = %s\n",
+              XLAT_KNOWN(-100, "AT_FDCWD"), how + 1, sizeof(*how),
+              sprintrc(rc));
+
+       rc = syscall(__NR_openat2, -1, sample, how, 11);
+       printf("openat2(-1, \"%s\", %p, 11) = %s\n", sample, how, sprintrc(rc));
+
+       static struct strval64 flags[] = {
+               { ARG_STR(O_RDONLY|O_EXCL) },
+               { ARG_STR(O_WRONLY|O_CREAT) },
+               { ARG_STR(O_RDWR|O_LARGEFILE) },
+# ifdef O_TMPFILE
+               { ARG_STR(O_ACCMODE|O_TMPFILE) },
+# else
+               { ARG_STR(O_ACCMODE|__O_TMPFILE) },
+# endif
+               { ARG_ULL_STR(O_RDONLY|0xdeadface80000000) },
+       };
+       static uint64_t modes[] = { 0, 0777, 0xbadc0dedfacebeefULL };
+       static struct strval64 resolve[] = {
+               { 0, NULL },
+               { ARG_STR(RESOLVE_NO_XDEV) },
+               { ARG_ULL_STR(RESOLVE_NO_XDEV|RESOLVE_IN_ROOT|0xfeedfacedcaffee0) },
+               { 0xdec0dedbeefface0, NULL },
+       };
+       const size_t iters = MAX(MAX(ARRAY_SIZE(flags), ARRAY_SIZE(modes)),
+                                ARRAY_SIZE(resolve));
+
+
+       for (size_t i = 0; i < iters * 4; i++) {
+               how->flags = flags[i % ARRAY_SIZE(flags)].val;
+               how->mode = modes[i % ARRAY_SIZE(modes)];
+               how->resolve = resolve[i % ARRAY_SIZE(resolve)].val;
+
+               fill_memory(how_big + 1, 8);
+               memcpy(how_big, how, sizeof(*how));
+
+               for (size_t j = 0; j < 4; j++) {
+                       rc = syscall(__NR_openat2, -1, sample,
+                                    j > 1 ? how_big : how,
+                                    j ? sizeof(*how) + 8 : sizeof(*how));
+                       rcstr = sprintrc(rc);
+                       printf("openat2(-1, \"%s\", {flags=%s",
+                              sample,
+                              sprintxlat(flags[i % ARRAY_SIZE(flags)].str,
+                                         flags[i % ARRAY_SIZE(flags)].val,
+                                         NULL));
+
+                       if (how->mode || (i % ARRAY_SIZE(flags) == 1)
+                                     || (i % ARRAY_SIZE(flags) == 3)) {
+                               printf(", mode=%#03" PRIo64,
+                                      modes[i % ARRAY_SIZE(modes)]);
+                       }
+
+                       printf(", resolve=%s",
+                              sprintxlat(resolve[i % ARRAY_SIZE(resolve)].str,
+                                         resolve[i % ARRAY_SIZE(resolve)].val,
+                                         resolve[i % ARRAY_SIZE(resolve)].val
+                                               ? "RESOLVE_???" : NULL));
+                       if (j == 1)
+                               printf(", ???");
+                       if (j == 2) {
+                               printf(", /* bytes %zu..%zu */ \"\\x80\\x81"
+                                      "\\x82\\x83\\x84\\x85\\x86\\x87\"",
+                                      sizeof(*how), sizeof(*how) + 7);
+                       }
+                       printf("}, %zu) = %s\n",
+                              j ? sizeof(*how) + 8 : sizeof(*how), rcstr);
+
+                       if (j == 2)
+                               memset(how_big + 1, 0, 8);
+               }
+       }
+
+       how->flags = O_RDONLY | O_NOCTTY;
+       how->mode = 0;
+       how->resolve = 0;
+       rc = syscall(__NR_openat2, -100, "/dev/full", how, sizeof(*how));
+       printf("openat2(%s, \"/dev/full\", {flags=%s, resolve=0}, %zu)"
+              " = %s%s\n",
+              XLAT_KNOWN(-100, "AT_FDCWD"), XLAT_STR(O_RDONLY|O_NOCTTY),
+              sizeof(*how), sprintrc(rc), rc >= 0 ? FD0_PATH : "");
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_openat2");
+
+#endif
diff --git a/tests-mx32/openat2.gen.test b/tests-mx32/openat2.gen.test
new file mode 100755 (executable)
index 0000000..5add9e5
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (openat2 -a35 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a35 
index 5e43b3ab8a9abcf26378bdd1307189b537039dd6..e9aaf30ec9370fa59a62dcb2cc97359dc5ab2b76 100755 (executable)
@@ -3,7 +3,7 @@
 # Check strace options syntax.
 #
 # Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 . "${srcdir=.}/syntax.sh"
 
 check_e "Invalid process id: '0'" -p 0
+check_e "Invalid process id: '0'" --attach=0
 check_e "Invalid process id: '-42'" -p -42
+check_e "Invalid process id: '-42'" --attach=-42
 check_e "Invalid process id: '$$.'" -p $$.
+check_e "Invalid process id: '$$.'" --attach=$$.
 check_e "Invalid process id: 'a'" -p 1,a
+check_e "Invalid process id: 'a'" --attach=1,a
 check_e "Syscall 'chdir' for -b isn't supported" -b chdir
+check_e "Syscall 'chdir' for -b isn't supported" --detach-on=chdir
 check_e "Syscall 'chdir' for -b isn't supported" -b execve -b chdir
+check_e "Syscall 'chdir' for -b isn't supported" --detach-on=execve --detach-on=chdir
 
 check_e_using_grep 'exec: File *name too long' "$(printf '%4096s' ' ')"
 
 ff_name="$(printf '%4084s' ' ')"
 check_e_using_grep "$ff_name: File *name too long" -ff -o "$ff_name" true
+check_e_using_grep "$ff_name: File *name too long" -ff --output="$ff_name" true
 
 check_h 'must have PROG [ARGS] or -p PID'
-check_h 'PROG [ARGS] must be specified with -D' -D -p $$
-check_h '-c and -C are mutually exclusive' -c -C true
-check_h '-c and -C are mutually exclusive' -C -c true
-check_h '(-c or -C) and -ff are mutually exclusive' -c -ff true
-check_h '(-c or -C) and -ff are mutually exclusive' -C -ff true
-check_h '-w must be given with (-c or -C)' -w true
-check_h 'piping the output and -ff are mutually exclusive' -o '|' -ff true
-check_h 'piping the output and -ff are mutually exclusive' -o '!' -ff true
+check_h "must have PROG [ARGS] or -p PID" --absolute-timestamps
+check_h "must have PROG [ARGS] or -p PID" --absolute-timestamps=
+check_h "must have PROG [ARGS] or -p PID" --absolute-timestamps=,
+check_h "must have PROG [ARGS] or -p PID" --absolute-timestamps=,s
+check_h "must have PROG [ARGS] or -p PID" --absolute-timestamps=s,
+check_h "must have PROG [ARGS] or -p PID" --absolute-timestamps=,,
+check_h "must have PROG [ARGS] or -p PID" --absolute-timestamps=s,,none
+check_h "must have PROG [ARGS] or -p PID" --timestamps --absolute-timestamps=ns --timestamps=none --absolute-timestamps=format:time,precision:s --timestamps=ns,format:unix --absolute-timestamps=us,precision:ms,unix,precision:ns --timestamps=format:none,time,precision:us
+check_h "invalid --absolute-timestamps argument: 'ss'" --absolute-timestamps=ss
+check_h "invalid --timestamps argument: 'format:s'" --timestamps=format:s
+check_h "invalid --timestamps argument: 's,non'" --timestamps=s,non
+check_h "invalid --timestamps argument: 'precision:none'" --timestamps=precision:none
+check_e '-t and --absolute-timestamps cannot be provided simultaneously' -t --timestamps -p $$
+check_e '-t and --absolute-timestamps cannot be provided simultaneously' --absolute-timestamps -ttt -p $$
+check_e '-t and --absolute-timestamps cannot be provided simultaneously' -t --timestamps=ns -t -p $$
+check_e '-t and --absolute-timestamps cannot be provided simultaneously' --timestamps=ns -t --absolute-timestamps=unix -p $$
+check_h 'PROG [ARGS] must be specified with -D/--daemonize' -D -p $$
+check_h 'PROG [ARGS] must be specified with -D/--daemonize' -DD -p $$
+check_h 'PROG [ARGS] must be specified with -D/--daemonize' -DDD -p $$
+check_h 'PROG [ARGS] must be specified with -D/--daemonize' -DDDD -p $$
+check_h 'PROG [ARGS] must be specified with -D/--daemonize' --daemonize -p $$
+check_h 'PROG [ARGS] must be specified with -D/--daemonize' --daemonize=grandchild -p $$
+check_h 'PROG [ARGS] must be specified with -D/--daemonize' --daemonize=pgroup -p $$
+check_h 'PROG [ARGS] must be specified with -D/--daemonize' --daemonize=Pgrp -p $$
+check_h 'PROG [ARGS] must be specified with -D/--daemonize' --daemonize=SESSION -p $$
+check_h 'Too many -D'\''s (4), maximum supported -D count is 3' -DDDD /bin/true
+check_e '-D and --daemonize cannot be provided simultaneously' -D --daemonize -p $$
+check_e '-D and --daemonize cannot be provided simultaneously' --daemonize -D -p $$
+check_e '-D and --daemonize cannot be provided simultaneously' --daemonize -v -D /bit/true
+check_h "invalid --daemonize argument: 'pgr'" --daemonize=pgr
+check_h '-c/--summary-only and -C/--summary are mutually exclusive' -c -C true
+check_h '-c/--summary-only and -C/--summary are mutually exclusive' --summary-only --summary true
+check_h '-c/--summary-only and -C/--summary are mutually exclusive' -C -c true
+check_h '-c/--summary-only and -C/--summary are mutually exclusive' --summary --summary-only true
+check_h '(-c/--summary-only or -C/--summary) and -ff/--output-separately are mutually exclusive' -c -ff true
+check_h '(-c/--summary-only or -C/--summary) and -ff/--output-separately are mutually exclusive' --summary-only -ff true
+check_h '(-c/--summary-only or -C/--summary) and -ff/--output-separately are mutually exclusive' -C -ff true
+check_h '(-c/--summary-only or -C/--summary) and -ff/--output-separately are mutually exclusive' --summary -ff true
+check_h '-w/--summary-wall-clock must be given with (-c/--summary-only or -C/--summary)' -w true
+check_h '-w/--summary-wall-clock must be given with (-c/--summary-only or -C/--summary)' --summary-wall-clock true
+check_h '-U/--summary-columns must be given with (-c/--summary-only or -C/--summary)' -U name,time,count,errors true
+check_h '-U/--summary-columns must be given with (-c/--summary-only or -C/--summary)' --summary-columns=name,time,count,errors true
+check_h 'piping the output and -ff/--output-separately are mutually exclusive' -o '|' -ff true
+check_h 'piping the output and -ff/--output-separately are mutually exclusive' --output='|' -ff true
+check_h 'piping the output and -ff/--output-separately are mutually exclusive' -o '!' -ff true
+check_h 'piping the output and -ff/--output-separately are mutually exclusive' --output='!' -ff true
 check_h "invalid -a argument: '-42'" -a -42
 check_h "invalid -O argument: '-42'" -O -42
 check_h "invalid -s argument: '-42'" -s -42
+check_h "invalid --string-limit argument: '-42'" --string-limit=-42
 check_h "invalid -s argument: '1073741824'" -s 1073741824
+check_h "invalid --string-limit argument: '1073741824'" --string-limit=1073741824
+check_h "must have PROG [ARGS] or -p PID" --follow-forks
+check_h "must have PROG [ARGS] or -p PID" --follow-forks --output-separately
+check_h "must have PROG [ARGS] or -p PID" -f --output-separately
+check_h "must have PROG [ARGS] or -p PID" --output-separately
+check_e '-f and --follow-forks cannot be provided simultaneously' -f --follow-forks -p $$
+check_e '-ff and --output-separately cannot be provided simultaneously' --output-separately -ff -p $$
+check_h "invalid -I argument: '0x1'" -I 0x1
+check_h "invalid -I argument: '0'" -I 0
+check_h "must have PROG [ARGS] or -p PID" -I1
+check_h "must have PROG [ARGS] or -p PID" -I 2
+check_h "must have PROG [ARGS] or -p PID" -I3
+check_h "must have PROG [ARGS] or -p PID" -I 4
 check_h "invalid -I argument: '5'" -I 5
+check_h "must have PROG [ARGS] or -p PID" -I always
+check_h "must have PROG [ARGS] or -p PID" -I anywhere
+check_h "must have PROG [ARGS] or -p PID" -Iwaiting
+check_h "must have PROG [ARGS] or -p PID" -I never
+check_h "must have PROG [ARGS] or -p PID" -Inever_tstp
+check_h "invalid -I argument: '=never'" -I=never
+check_h "invalid -I argument: 'nevertheless'" -Inevertheless
+check_h "invalid -I argument: 'nev'" -Inev
+check_h "invalid --interruptible argument: '0x1'" --interruptible=0x1
+check_h "invalid --interruptible argument: '0'" --interruptible=0
+check_h "must have PROG [ARGS] or -p PID" --interruptible 1
+check_h "must have PROG [ARGS] or -p PID" --interruptible=2
+check_h "invalid --interruptible argument: '5'" --interruptible=5
+check_h "must have PROG [ARGS] or -p PID" --interruptible=anywhere
+check_h "must have PROG [ARGS] or -p PID" --interruptible=waiting
+check_h "must have PROG [ARGS] or -p PID" --interruptible=never
+check_h "must have PROG [ARGS] or -p PID" --interruptible=never_tstp
+check_h "invalid --interruptible argument: 'nevertheless'" --interruptible=nevertheless
+check_h "invalid --interruptible argument: 'nev'" --interruptible=nev
+check_h "must have PROG [ARGS] or -p PID" --relative-timestamps
+check_h "must have PROG [ARGS] or -p PID" --relative-timestamps=s
+check_h "must have PROG [ARGS] or -p PID" --relative-timestamps=ms
+check_h "must have PROG [ARGS] or -p PID" --relative-timestamps=us
+check_h "must have PROG [ARGS] or -p PID" --relative-timestamps=ns
+check_h "invalid --relative-timestamps argument: 'n'" --relative-timestamps=n
+check_h "invalid --relative-timestamps argument: 'ss'" --relative-timestamps=ss
+check_h "must have PROG [ARGS] or -p PID" --syscall-times
+check_h "must have PROG [ARGS] or -p PID" --syscall-times=s
+check_h "must have PROG [ARGS] or -p PID" --syscall-times=ms
+check_h "must have PROG [ARGS] or -p PID" --syscall-times=us
+check_h "must have PROG [ARGS] or -p PID" --syscall-times=ns
+check_h "invalid --syscall-times argument: 'n'" --syscall-times=n
+check_h "invalid --syscall-times argument: 'ss'" --syscall-times=ss
+check_h "must have PROG [ARGS] or -p PID" --strings-in-hex
+check_h "must have PROG [ARGS] or -p PID" --strings-in-hex=all
+check_h "must have PROG [ARGS] or -p PID" --strings-in-hex=non-ascii
+check_h "invalid --strings-in-hex argument: 'al'" --strings-in-hex=al
+check_h "invalid --strings-in-hex argument: 'alll'" --strings-in-hex=alll
+check_h "invalid --strings-in-hex argument: 'ascii'" --strings-in-hex=ascii
+check_h "must have PROG [ARGS] or -p PID" --quiet=all
+check_h "must have PROG [ARGS] or -p PID" --quiet=none
+check_h "must have PROG [ARGS] or -p PID" --quiet=\!attach
+check_h "must have PROG [ARGS] or -p PID" --quiet=exit,exits,personality
+check_e "invalid quiet 'detach'" --quiet=detach -p $$
+check_e "invalid quiet 'fds'" -q --quiet=fds -p $$
+check_e "invalid quiet 'detach'" --quiet=detach -p $$
+check_e '-q and -e quiet/--quiet cannot be provided simultaneously' -q --quiet -p $$
+check_e '-q and -e quiet/--quiet cannot be provided simultaneously' -q -e q=none -p $$
+check_e '-q and -e quiet/--quiet cannot be provided simultaneously' -q -e silent=attach,personality -p $$
+
+check_h 'must have PROG [ARGS] or -p PID' -P .
+check_h 'must have PROG [ARGS] or -p PID' -P . -P..
+check_h 'must have PROG [ARGS] or -p PID' --trace-path=.
+check_h 'must have PROG [ARGS] or -p PID' --trace-path=. --trace-path ..
+check_e "Requested path \"///\" resolved into \"/\"
+$STRACE_EXE: Requested path \"/.\" resolved into \"/\"
+$STRACE_EXE: -q and -e quiet/--quiet cannot be provided simultaneously" -q --quiet -P /// -P/. .
+
+for i in time time_percent time-percent time_total time-total total_time total-time min_time min-time time_min time-min shortest max_time max-time time_max time-max longest avg_time avg-time time_avg time-avg calls count error errors name syscall syscall_name syscall-name none nothing; do
+       check_h "must have PROG [ARGS] or -p PID" -S "$i"
+       check_h "must have PROG [ARGS] or -p PID" --summary-sort-by="$i"
+       if [ "x$i" != xnone -a "x$i" != xnothing ]; then
+               check_h "must have PROG [ARGS] or -p PID" -c -U "$i"
+               check_h "must have PROG [ARGS] or -p PID" --summary-only --summary-columns="$i"
+       fi
+done
+for i in time,time_total,avg_time,calls,errors,name time_percent,total_time,time_avg,count,error,syscall_name; do
+       check_h "must have PROG [ARGS] or -p PID" -c -U "$i"
+       check_h "must have PROG [ARGS] or -p PID" --summary-only --summary-columns="$i"
+done
+for i in non syscall_names; do
+       check_h "invalid sortby: '$i'" -S "$i"
+       check_h "invalid sortby: '$i'" --summary-sort-by="$i"
+       check_h "unknown column name: '$i'" -U "$i"
+       check_h "unknown column name: '$i'" --summary-columns="$i"
+done
+check_h "unknown column name: ''" -U time,,name
+check_h "call summary column has been provided more than once: 'time_percent' (-U option residual: 'time_percent,time_total')" -U time,time_percent,time_total
+
+check_e '-x and --strings-in-hex cannot be provided simultaneously' -x --strings-in-hex -p $$
+check_e '-x and --strings-in-hex cannot be provided simultaneously' --strings-in-hex -p $$ -xx
 check_h "invalid -X argument: 'test'" -Xtest
+check_h "invalid --const-print-style argument: 'test'" --const-print-style=test
 check_h "invalid -X argument: 'a'" -Xa
+check_h "invalid --const-print-style argument: 'a'" --const-print-style=a
 check_h "invalid -X argument: 'abbreviated'" -X abbreviated
+check_h "invalid --const-print-style argument: 'abbreviated'" --const-print-style=abbreviated
+check_h "must have PROG [ARGS] or -p PID" --decode-fds
+check_h "must have PROG [ARGS] or -p PID" --decode-fds=all
+check_h "must have PROG [ARGS] or -p PID" --decode-fds=none
+check_h "must have PROG [ARGS] or -p PID" --decode-fds=path
+check_h "must have PROG [ARGS] or -p PID" --decode-fds=socket,dev
+check_h "must have PROG [ARGS] or -p PID" --decode-fds=\!path
+check_h "must have PROG [ARGS] or -p PID" --decode-fds=socket,path,dev
+check_e "invalid decode-fds 'p'" --decode-fds=p -p $$
+check_e "invalid decode-fds 'device'" -y --decode-fds=device -p $$
+check_e "invalid decode-fds 'name'" --decode-fds=path,name -p $$
+check_e "invalid decode-fds 'sock'" -e decode-fd=sock -y -p $$
+check_e '-y and --decode-fds cannot be provided simultaneously' -y --decode-fds -p $$
+check_e '-y and --decode-fds cannot be provided simultaneously' -e decode-fd=all -yy -p $$
+check_e '-y and --decode-fds cannot be provided simultaneously' --decode-fds=none -y -p $$
 
 check_h "incorrect personality designator '' in qualification 'getcwd@'" -e trace=getcwd@
 check_h "incorrect personality designator '42' in qualification 'getcwd@42'" -e trace=getcwd@42
 check_h "incorrect personality designator '42' in qualification 'getcwd@42'" -e trace=gettid,getcwd@42
 check_h "incorrect personality designator '42' in qualification '23@42'" -e trace=23@42,123
 
+check_h '--seccomp-bpf cannot be used without -f/--follow-forks, disabling
+-w/--summary-wall-clock must be given with (-c/--summary-only or -C/--summary)' --seccomp-bpf -w /
+check_h '--seccomp-bpf is not enabled for processes attached with -p
+-w/--summary-wall-clock must be given with (-c/--summary-only or -C/--summary)' --seccomp-bpf -f -p 1 -w
+
+check_h 'option -F is deprecated, please use -f/--follow-forks instead
+-w/--summary-wall-clock must be given with (-c/--summary-only or -C/--summary)' -F -w /
+check_h 'option -F is deprecated, please use -f/--follow-forks instead
+-w/--summary-wall-clock must be given with (-c/--summary-only or -C/--summary)' -FF -w /
+check_h 'deprecated option -F ignored
+-w/--summary-wall-clock must be given with (-c/--summary-only or -C/--summary)' -fF -w /
+
 check_e "invalid system call '/getcwd@ohmy'" -e trace=/getcwd@ohmy
 check_e "invalid -e kvm= argument: 'chdir'" -e kvm=chdir
+check_e "invalid -e kvm= argument: 'chdir'" --kvm=chdir
 
 case "$STRACE_NATIVE_ARCH" in
 x86_64)
@@ -59,7 +229,7 @@ x32)
        check_h "must have PROG [ARGS] or -p PID" -e trace=getcwd@32
        check_h "must have PROG [ARGS] or -p PID" -e trace=getcwd@x32
        ;;
-aarch64|powerpc64|riscv|s390x|sparc64|tile)
+aarch64|powerpc64|s390x|sparc64|tile)
        check_h "must have PROG [ARGS] or -p PID" -e trace=getcwd@64
        check_h "must have PROG [ARGS] or -p PID" -e trace=getcwd@32
        check_h "incorrect personality designator 'x32' in qualification 'getcwd@x32'" -e trace=getcwd@x32
@@ -93,21 +263,60 @@ if [ "$uid" -ge 0 ]; then
        if [ "$uid" -eq 0 ]; then
                umsg="Cannot find user ':nosuchuser:'"
        else
-               umsg='You must be root to use the -u option'
+               umsg='You must be root to use the -u/--username option'
        fi
 
        check_e "$umsg" -u :nosuchuser: true
 
-       for c in i r t T y; do
-               check_e "-$c has no effect with -c
-$STRACE_EXE: $umsg" -u :nosuchuser: -c -$c true
+       for c in i/--instruction-pointer n/--syscall-number r/--relative-timestamps t/--absolute-timestamps T/--syscall-times y/--decode-fds; do
+               check_e "-$c has no effect with -c/--summary-only
+$STRACE_EXE: $umsg" -u :nosuchuser: -c -${c%%/*} true
        done
-               check_e "-i has no effect with -c
-$STRACE_EXE: -r has no effect with -c
-$STRACE_EXE: -t has no effect with -c
-$STRACE_EXE: -T has no effect with -c
-$STRACE_EXE: -y has no effect with -c
-$STRACE_EXE: $umsg" -u :nosuchuser: -cirtTy true
+
+       check_e "-i/--instruction-pointer has no effect with -c/--summary-only
+$STRACE_EXE: -n/--syscall-number has no effect with -c/--summary-only
+$STRACE_EXE: -r/--relative-timestamps has no effect with -c/--summary-only
+$STRACE_EXE: -t/--absolute-timestamps has no effect with -c/--summary-only
+$STRACE_EXE: -T/--syscall-times has no effect with -c/--summary-only
+$STRACE_EXE: -y/--decode-fds has no effect with -c/--summary-only
+$STRACE_EXE: Only the last of -z/--successful-only/-Z/--failed-only options will take effect. See status qualifier for more complex filters.
+$STRACE_EXE: $umsg" -u :nosuchuser: -cinrtTyzZ true
+
+       for c in --output-separately -A/--output-append-mode; do
+               check_e "$c has no effect without -o/--output
+$STRACE_EXE: $umsg" -u :nosuchuser: ${c%%/*} true
+       done
+
+       check_e "-S/--summary-sort-by has no effect without (-c/--summary-only or -C/--summary)
+$STRACE_EXE: $umsg" -u :nosuchuser: --summary-sort-by errors true
+
+       check_e "--output-separately has no effect without -o/--output
+$STRACE_EXE: -A/--output-append-mode has no effect without -o/--output
+$STRACE_EXE: $umsg" -u :nosuchuser: --output-separately --output-append-mode true
+
+       check_e "$umsg" -u :nosuchuser: -ff true
+       check_e "$umsg" -u :nosuchuser: --output-separately --follow-forks true
+
+       check_e "Only the last of -z/--successful-only/-Z/--failed-only options will take effect. See status qualifier for more complex filters.
+$STRACE_EXE: $umsg" -u :nosuchuser: -z --successful-only true
+       check_e "Only the last of -z/--successful-only/-Z/--failed-only options will take effect. See status qualifier for more complex filters.
+$STRACE_EXE: $umsg" -u :nosuchuser: --successful-only -Z true
+       check_e "Only the last of -z/--successful-only/-Z/--failed-only options will take effect. See status qualifier for more complex filters.
+$STRACE_EXE: $umsg" -u :nosuchuser: --successful-only --failed-only true
+
+       check_e "-n/--syscall-number has no effect with -c/--summary-only
+$STRACE_EXE: $umsg" --user=:nosuchuser: --syscall-number --summary-only true
+
+       check_e "-i/--instruction-pointer has no effect with -c/--summary-only
+$STRACE_EXE: $umsg" --user=:nosuchuser: --instruction-pointer --summary-only true
+fi
+
+check_e_using_grep 'ptrace_setoptions = 0x[[:xdigit:]]+' -d /
+check_e_using_grep 'ptrace_setoptions = 0x[[:xdigit:]]+' --debug /
+
+if [ -z "$(get_config_option ENABLE_STACKTRACE 1)" ]; then
+       check_e "Stack traces (-k/--stack-traces option) are not supported by this build of strace" -k
+       check_e "Stack traces (-k/--stack-traces option) are not supported by this build of strace" --stack-traces
 fi
 
 args='-p 2147483647'
index 83ab6e391c51fece67f9abb8682633d2d1c9f82c..13aacf36c1d44d4ef4ce64a43b285ecee0d57126 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Check tracing of orphaned process group.
  *
- * Copyright (c) 2019 The strace developers.
+ * Copyright (c) 2019-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -139,7 +139,7 @@ main(void)
         */
        leader = getpid();
        printf("%-5d --- %s {si_signo=%s, si_code=SI_TKILL"
-              ", si_pid=%d, si_uid=%u} ---\n",
+              ", si_pid=%d, si_uid=%d} ---\n",
               stopped, "SIGSTOP", "SIGSTOP", stopped, geteuid());
        printf("%-5d --- stopped by SIGSTOP ---\n", stopped);
        printf("%-5d +++ exited with 0 +++\n", leader);
index d721e394fe4652b78d0d2fd49e276ac0ff99fe2b..3d8647400c5f7ca1ba8d6384bcf98156ab723598 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of osf_utimes syscall.
  *
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_osf_utimes
 
index 0260a6bc034789124c8cdbc620b10f19f9168bb2..c03123b1994bb43e030f584d474611c85010dbc5 100644 (file)
@@ -3,14 +3,14 @@
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Fei Jie <feij.fnst@cn.fujitsu.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_pause
 
index 0bc28d1858bba33bac5d9cbc99972e6561e1fac5..2ee0543a80dd5ea315e83311a037987786c01754 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2020 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -27,7 +27,7 @@ int main(void)
 #endif
 
        /* write instruction pointer length to the log */
-       assert(write(-1, NULL, 2 * sizeof(void *)) < 0);
+       assert(write(-1, (void *) 8UL, 2 * sizeof(void *)) < 0);
 
        /* just a noticeable line in the log */
        assert(munmap(&main, 0) < 0);
index 40221e578b3f261c6943a3c43bbb5da0d8f97d0d..c039d5d3734def98691ce30757ab44e122ed8a94 100755 (executable)
@@ -3,7 +3,7 @@
 # Check -i option.
 #
 # Copyright (c) 2015 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2015-2018 The strace developers.
+# Copyright (c) 2015-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -14,11 +14,11 @@ check_prog sed
 
 run_prog > /dev/null
 
-args="-if $args"
+args="--quiet=attach,personality -if $args"
 $STRACE $args 2> "$LOG" ||
        dump_log_and_fail_with "$STRACE $args failed"
 
-len="$(sed -r -n 's/^\[[[:xdigit:]]+\] write\(-1, NULL, ([[:digit:]]{1,2})\)[[:space:]]+= -1 .*/\1/p' "$LOG")" &&
+len="$(sed -r -n 's/^\[[[:xdigit:]]+\] write\(-1, 0x8, ([[:digit:]]{1,2})\)[[:space:]]+= -1 .*/\1/p' "$LOG")" &&
 [ -n "$len" ] &&
 pid="$(sed -r -n 's/^\[[[:xdigit:]]{'"$len"'}\] --- SIGCHLD \{si_signo=SIGCHLD, si_code=CLD_(KILLED|DUMPED), si_pid=([[:digit:]]+), .*/\2/p' "$LOG")" &&
 [ -n "$pid" ] &&
index ae38b6de14a907db89739b5934a1bfd677191128..d2f5b869b12e67af1acec2073bce0281f7dfd06c 100644 (file)
@@ -2,14 +2,14 @@
  * Check verbose decoding of perf_event_open syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined(__NR_perf_event_open) && defined(HAVE_LINUX_PERF_EVENT_H)
 
@@ -137,7 +137,7 @@ print_event_attr(struct perf_event_attr *attr_ptr, size_t size,
                STRACE_PEA_ABBREV_SIZE =
                        offsetof(struct perf_event_attr, config) +
                        sizeof(attr_ptr->config),
-               STRACE_PEA_SIZE = 112,
+               STRACE_PEA_SIZE = 120,
        };
 
        uint32_t read_size;
@@ -476,6 +476,28 @@ print_event_attr(struct perf_event_attr *attr_ptr, size_t size,
                goto end;
        }
 
+       val = ((uint16_t *) attr)[110 / sizeof(uint16_t)];
+       if (val)
+               printf(" /* bytes 110..111: %#" PRIx16 " */", (uint16_t) val);
+
+       if (size <= 112) {
+               cutoff = 112;
+               goto end;
+       }
+
+       val =
+#  ifdef HAVE_STRUCT_PERF_EVENT_ATTR_AUX_SAMPLE_SIZE
+               attr->aux_sample_size;
+#  else
+               ((uint32_t *) attr)[112 / sizeof(uint32_t)];
+#  endif
+       printf(", aux_sample_size=%" PRIu32, (uint32_t) val);
+
+       if (size <= 116) {
+               cutoff = 116;
+               goto end;
+       }
+
        cutoff = STRACE_PEA_SIZE;
 
 end:
@@ -489,7 +511,7 @@ end:
 }
 
 /* These require aligned access, so no byte-grain checks possible */
-# if defined SPARC || defined SPARC64 || defined POWERPC || defined POWERPC64
+# if defined SPARC || defined SPARC64 || defined POWERPC || defined POWERPC64 || defined ARM
 #  define ATTR_REC(sz) { tail_alloc((sz + 7) & ~7), sz }
 # else
 #  define ATTR_REC(sz) { tail_alloc(sz), sz }
@@ -512,7 +534,8 @@ end:
        "PERF_SAMPLE_BRANCH_CALL|" \
        "PERF_SAMPLE_BRANCH_NO_FLAGS|" \
        "PERF_SAMPLE_BRANCH_NO_CYCLES|" \
-       "PERF_SAMPLE_BRANCH_TYPE_SAVE"
+       "PERF_SAMPLE_BRANCH_TYPE_SAVE|" \
+       "PERF_SAMPLE_BRANCH_HW_INDEX"
 
 int
 main(void)
@@ -529,7 +552,11 @@ main(void)
        static const size_t attr_v4_625_size = PERF_ATTR_SIZE_VER4 + 5;
        static const size_t attr_v4_875_size = PERF_ATTR_SIZE_VER4 + 7;
        static const size_t attr_v5_size = PERF_ATTR_SIZE_VER5;
-       static const size_t attr_big_size = PERF_ATTR_SIZE_VER5 + 32;
+       static const size_t attr_v5_25_size = PERF_ATTR_SIZE_VER5 + 2;
+       static const size_t attr_v5_5_size = PERF_ATTR_SIZE_VER5 + 4;
+       static const size_t attr_v5_75_size = PERF_ATTR_SIZE_VER5 + 6;
+       static const size_t attr_v6_size = PERF_ATTR_SIZE_VER6;
+       static const size_t attr_big_size = PERF_ATTR_SIZE_VER6 + 32;
 
        static const struct u64_val_str attr_types[] = {
                { ARG_STR(PERF_TYPE_HARDWARE) },
@@ -597,7 +624,7 @@ main(void)
        static const struct u64_val_str sample_types[] = {
                { ARG_STR(0) },
                { 0x800, "PERF_SAMPLE_BRANCH_STACK" },
-               { ARG_ULL_STR(0xdeadc0deda700000) " /* PERF_SAMPLE_??? */" },
+               { ARG_ULL_STR(0xdeadc0deda600000) " /* PERF_SAMPLE_??? */" },
                { 0xffffffffffffffffULL,
                        "PERF_SAMPLE_IP|PERF_SAMPLE_TID|PERF_SAMPLE_TIME|"
                        "PERF_SAMPLE_ADDR|PERF_SAMPLE_READ|"
@@ -608,7 +635,8 @@ main(void)
                        "PERF_SAMPLE_WEIGHT|PERF_SAMPLE_DATA_SRC|"
                        "PERF_SAMPLE_IDENTIFIER|PERF_SAMPLE_TRANSACTION|"
                        "PERF_SAMPLE_REGS_INTR|PERF_SAMPLE_PHYS_ADDR|"
-                       "0xfffffffffff00000" },
+                       "PERF_SAMPLE_AUX|"
+                       "0xffffffffffe00000" },
        };
        static const struct u64_val_str read_formats[] = {
                { ARG_STR(0) },
@@ -640,11 +668,11 @@ main(void)
        static const struct u64_val_str branch_sample_types[] = {
                { ARG_STR(0) },
                { 0x80, "PERF_SAMPLE_BRANCH_ABORT_TX" },
-               { 0x1ffff, BRANCH_TYPE_ALL },
+               { 0x3ffff, BRANCH_TYPE_ALL },
                { ARG_ULL_STR(0xdeadcaffeeec0000)
                        " /* PERF_SAMPLE_BRANCH_??? */" },
                { 0xffffffffffffffffULL,
-                       BRANCH_TYPE_ALL "|0xfffffffffffe0000" }
+                       BRANCH_TYPE_ALL "|0xfffffffffffc0000" }
        };
        static const struct s32_val_str clockids[] = {
                { 11, "CLOCK_TAI" },
@@ -669,6 +697,10 @@ main(void)
                ATTR_REC(attr_v4_625_size),
                ATTR_REC(attr_v4_875_size),
                ATTR_REC(attr_v5_size),
+               ATTR_REC(attr_v5_25_size),
+               ATTR_REC(attr_v5_5_size),
+               ATTR_REC(attr_v5_75_size),
+               ATTR_REC(attr_v6_size),
                ATTR_REC(attr_big_size),
        };
 
@@ -776,6 +808,10 @@ main(void)
                ip_desc_str = precise_ip_descs[flags_data.flags.precise_ip];
 # endif
 
+               if (((i % 17) == 3) && (size >= 112))
+                       ((uint16_t *) attr)[110 / sizeof(uint16_t)] = 0;
+
+
                if (i == 0)
                        attr->size = size + 8;
 
index b87cb2c6e892760c110f9aea21580741b71145a8..d5a21a065602639a67e947160c9833d12ff48e9e 100644 (file)
@@ -2,14 +2,14 @@
  * Check decoding of perf_event_open syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined(__NR_perf_event_open) && defined(HAVE_LINUX_PERF_EVENT_H)
 
diff --git a/tests-mx32/pidfd_getfd-y.c b/tests-mx32/pidfd_getfd-y.c
new file mode 100644 (file)
index 0000000..7e78655
--- /dev/null
@@ -0,0 +1,3 @@
+#define PIDFD_PATH "<anon_inode:[pidfd]>"
+#define FD0_PATH "</dev/full>"
+#include "pidfd_getfd.c"
diff --git a/tests-mx32/pidfd_getfd-y.gen.test b/tests-mx32/pidfd_getfd-y.gen.test
new file mode 100755 (executable)
index 0000000..9aa306e
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pidfd_getfd-y --trace=pidfd_getfd -a18 -e signal=none -y </dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff --trace=pidfd_getfd -a18 -e signal=none -y </dev/full
diff --git a/tests-mx32/pidfd_getfd-yy.c b/tests-mx32/pidfd_getfd-yy.c
new file mode 100644 (file)
index 0000000..9a5a185
--- /dev/null
@@ -0,0 +1,3 @@
+#define PRINT_PIDFD 1
+#define FD0_PATH "</dev/full<char 1:7>>"
+#include "pidfd_getfd.c"
diff --git a/tests-mx32/pidfd_getfd-yy.gen.test b/tests-mx32/pidfd_getfd-yy.gen.test
new file mode 100755 (executable)
index 0000000..7c1ca01
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pidfd_getfd-yy --trace=pidfd_getfd -a18 -e signal=none -yy </dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff --trace=pidfd_getfd -a18 -e signal=none -yy </dev/full
diff --git a/tests-mx32/pidfd_getfd.c b/tests-mx32/pidfd_getfd.c
new file mode 100644 (file)
index 0000000..fef7709
--- /dev/null
@@ -0,0 +1,103 @@
+/*
+ * Check decoding of pidfd_getfd syscall.
+ *
+ * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_pidfd_getfd
+
+# include <assert.h>
+# include <signal.h>
+# include <stdio.h>
+# include <stdlib.h>
+# include <unistd.h>
+# include <sys/wait.h>
+
+# ifndef PIDFD_PATH
+#  define PIDFD_PATH ""
+# endif
+# ifndef FD0_PATH
+#  define FD0_PATH ""
+# endif
+# ifndef PRINT_PIDFD
+#  define PRINT_PIDFD 0
+# endif
+
+static const char *errstr;
+
+static long
+k_pidfd_getfd(const unsigned int pidfd, const unsigned int fd,
+             const unsigned int flags)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = fill | pidfd;
+       const kernel_ulong_t arg2 = fill | fd;
+       const kernel_ulong_t arg3 = fill | flags;
+       const long rc = syscall(__NR_pidfd_getfd,
+                               arg1, arg2, arg3, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
+int
+main(void)
+{
+       long rc;
+
+       rc = k_pidfd_getfd(-1U, -1U, 0);
+       printf("pidfd_getfd(-1, -1, 0) = %s\n", errstr);
+
+       rc = k_pidfd_getfd(0, 0, 0xbadc0ded);
+       printf("pidfd_getfd(0" FD0_PATH ", 0, 0xbadc0ded) = %s\n", errstr);
+
+       int child_wait_fds[2];
+       if (pipe(child_wait_fds))
+               perror_msg_and_fail("pipe");
+
+       int dupfd = dup(0);
+       int pid = fork();
+       if (pid == 0) {
+               close(0);
+               close(child_wait_fds[1]);
+               if (read(child_wait_fds[0], &child_wait_fds[1], sizeof(int)))
+                       _exit(2);
+               _exit(0);
+       }
+       close(dupfd);
+
+       int pidfd = syscall(__NR_pidfd_open, pid, 0);
+# if PRINT_PIDFD
+       char pidfd_str[sizeof("<pid:>") + 3 * sizeof(int)];
+       snprintf(pidfd_str, sizeof(pidfd_str), "<pid:%d>", pid);
+# else
+       const char *pidfd_str = PIDFD_PATH;
+# endif
+       rc = k_pidfd_getfd(pidfd, dupfd, 0);
+       printf("pidfd_getfd(%d%s, %d%s, 0) = %s%s\n",
+              pidfd, pidfd >= 0 ? pidfd_str : "",
+              dupfd, pidfd >= 0 ? FD0_PATH : "",
+              errstr, rc >= 0 ? FD0_PATH : "");
+
+       puts("+++ exited with 0 +++");
+
+       close(child_wait_fds[1]);
+       int status;
+       assert(wait(&status) == pid);
+       assert(status == 0);
+
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_pidfd_getfd");
+
+#endif
diff --git a/tests-mx32/pidfd_getfd.gen.test b/tests-mx32/pidfd_getfd.gen.test
new file mode 100755 (executable)
index 0000000..13a08d6
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pidfd_getfd -a18 -Xverbose -e signal=none </dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a18 -Xverbose -e signal=none </dev/full
diff --git a/tests-mx32/pidfd_open--decode-fd-path.c b/tests-mx32/pidfd_open--decode-fd-path.c
new file mode 100644 (file)
index 0000000..a358834
--- /dev/null
@@ -0,0 +1 @@
+#include "pidfd_open-y.c"
diff --git a/tests-mx32/pidfd_open--decode-fd-path.gen.test b/tests-mx32/pidfd_open--decode-fd-path.gen.test
new file mode 100755 (executable)
index 0000000..e80e2ef
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pidfd_open--decode-fd-path -a17 -e decode-fd=path -e trace=pidfd_open); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a17 -e decode-fd=path -e trace=pidfd_open
diff --git a/tests-mx32/pidfd_open--decode-fd-pidfd.c b/tests-mx32/pidfd_open--decode-fd-pidfd.c
new file mode 100644 (file)
index 0000000..3f4abfe
--- /dev/null
@@ -0,0 +1,2 @@
+#define PRINT_PIDFD 1
+#include "pidfd_open-y.c"
diff --git a/tests-mx32/pidfd_open--decode-fd-pidfd.gen.test b/tests-mx32/pidfd_open--decode-fd-pidfd.gen.test
new file mode 100755 (executable)
index 0000000..7a035db
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pidfd_open--decode-fd-pidfd -a17 -e decode-fd=pidfd -e trace=pidfd_open); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a17 -e decode-fd=pidfd -e trace=pidfd_open
diff --git a/tests-mx32/pidfd_open--decode-fd-socket.c b/tests-mx32/pidfd_open--decode-fd-socket.c
new file mode 100644 (file)
index 0000000..a358834
--- /dev/null
@@ -0,0 +1 @@
+#include "pidfd_open-y.c"
diff --git a/tests-mx32/pidfd_open--decode-fd-socket.gen.test b/tests-mx32/pidfd_open--decode-fd-socket.gen.test
new file mode 100755 (executable)
index 0000000..30b8f96
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pidfd_open--decode-fd-socket -a17 -e decode-fd=socket -e trace=pidfd_open); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a17 -e decode-fd=socket -e trace=pidfd_open
diff --git a/tests-mx32/pidfd_open--pidns-translation.c b/tests-mx32/pidfd_open--pidns-translation.c
new file mode 100644 (file)
index 0000000..c38e37a
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "pidfd_open.c"
diff --git a/tests-mx32/pidfd_open--pidns-translation.gen.test b/tests-mx32/pidfd_open--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..c87aa6b
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pidfd_open--pidns-translation test_pidns -a17 -e trace=pidfd_open); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a17 -e trace=pidfd_open
diff --git a/tests-mx32/pidfd_open-P.c b/tests-mx32/pidfd_open-P.c
new file mode 100644 (file)
index 0000000..a80db64
--- /dev/null
@@ -0,0 +1,2 @@
+#define PATH_TRACING
+#include "pidfd_open.c"
diff --git a/tests-mx32/pidfd_open-P.gen.test b/tests-mx32/pidfd_open-P.gen.test
new file mode 100755 (executable)
index 0000000..7f2221d
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pidfd_open-P -a17 -P /dev/full -e trace=pidfd_open); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a17 -P /dev/full -e trace=pidfd_open
diff --git a/tests-mx32/pidfd_open-y.c b/tests-mx32/pidfd_open-y.c
new file mode 100644 (file)
index 0000000..18bf947
--- /dev/null
@@ -0,0 +1,2 @@
+#define PRINT_PATHS
+#include "pidfd_open.c"
diff --git a/tests-mx32/pidfd_open-y.gen.test b/tests-mx32/pidfd_open-y.gen.test
new file mode 100755 (executable)
index 0000000..83d64a6
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pidfd_open-y -a17 -y -e trace=pidfd_open); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a17 -y -e trace=pidfd_open
diff --git a/tests-mx32/pidfd_open-yy.c b/tests-mx32/pidfd_open-yy.c
new file mode 100644 (file)
index 0000000..3f4abfe
--- /dev/null
@@ -0,0 +1,2 @@
+#define PRINT_PIDFD 1
+#include "pidfd_open-y.c"
diff --git a/tests-mx32/pidfd_open-yy.gen.test b/tests-mx32/pidfd_open-yy.gen.test
new file mode 100755 (executable)
index 0000000..0a81cfa
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pidfd_open-yy -a17 -yy -e trace=pidfd_open); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a17 -yy -e trace=pidfd_open
diff --git a/tests-mx32/pidfd_open.c b/tests-mx32/pidfd_open.c
new file mode 100644 (file)
index 0000000..e5d74a9
--- /dev/null
@@ -0,0 +1,113 @@
+/*
+ * Check decoding of pidfd_open syscall.
+ *
+ * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2019-2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+#include "pidns.h"
+
+#ifdef __NR_pidfd_open
+
+# include <stdio.h>
+# include <unistd.h>
+# ifdef PATH_TRACING
+#  include <fcntl.h>
+# endif
+
+static const char *errstr;
+
+static long
+k_pidfd_open(const unsigned int pid, const unsigned int flags)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = fill | pid;
+       const kernel_ulong_t arg2 = fill | flags;
+       const long rc = syscall(__NR_pidfd_open,
+                               arg1, arg2, bad, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
+int
+main(void)
+{
+       PIDNS_TEST_INIT;
+
+# if defined PATH_TRACING || defined PRINT_PATHS
+       skip_if_unavailable("/proc/self/fd/");
+# endif
+
+# ifdef PATH_TRACING
+       static const char path_full[] = "/dev/full";
+       (void) close(0);
+       if (open(path_full, O_WRONLY))
+               perror_msg_and_skip(path_full);
+# endif
+
+       k_pidfd_open(0, 0);
+# ifndef PATH_TRACING
+       pidns_print_leader();
+       printf("pidfd_open(0, 0) = %s\n", errstr);
+# endif
+
+       k_pidfd_open(-1U, 0);
+# ifndef PATH_TRACING
+       pidns_print_leader();
+       printf("pidfd_open(-1, 0) = %s\n", errstr);
+# endif
+
+       k_pidfd_open(0, -1U);
+# ifndef PATH_TRACING
+       pidns_print_leader();
+       printf("pidfd_open(0, %#x) = %s\n", -1U, errstr);
+# endif
+
+       const unsigned int flags = 0xfacefeed;
+       const int pid = getpid();
+
+       k_pidfd_open(pid, flags);
+# ifndef PATH_TRACING
+       const char *pid_str = pidns_pid2str(PT_TGID);
+       pidns_print_leader();
+       printf("pidfd_open(%d%s, %#x) = %s\n",
+               pid, pid_str, flags, errstr);
+# endif
+
+# ifdef PRINT_PATHS
+       long rc = k_pidfd_open(pid, 0);
+       if (rc < 0)
+               perror_msg_and_skip("pidfd_open");
+# else
+       k_pidfd_open(pid, 0);
+# endif
+
+# ifndef PATH_TRACING
+       pidns_print_leader();
+       printf("pidfd_open(%d%s, 0) = "
+#  if defined PRINT_PIDFD
+              "%ld<pid:%d>\n", pid, pid_str, rc, pid
+#  elif defined PRINT_PATHS
+              "%ld<anon_inode:[pidfd]>\n", pid, pid_str, rc
+#  else
+              "%s\n", pid, pid_str, errstr
+#  endif
+              );
+# endif
+
+       pidns_print_leader();
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_pidfd_open");
+
+#endif
diff --git a/tests-mx32/pidfd_open.gen.test b/tests-mx32/pidfd_open.gen.test
new file mode 100755 (executable)
index 0000000..4c240f3
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pidfd_open -a17 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a17 
diff --git a/tests-mx32/pidfd_send_signal--pidns-translation.c b/tests-mx32/pidfd_send_signal--pidns-translation.c
new file mode 100644 (file)
index 0000000..b04f10f
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "pidfd_send_signal.c"
diff --git a/tests-mx32/pidfd_send_signal--pidns-translation.gen.test b/tests-mx32/pidfd_send_signal--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..21191b0
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pidfd_send_signal--pidns-translation test_pidns -e trace=pidfd_send_signal); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -e trace=pidfd_send_signal
index 014e43de0d1f9e2bac81942819b307d59c08a1bc..a6b2d28ccac18238e28e8409cfb127c50c48b16c 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Check decoding of pidfd_send_signal syscall.
  *
- * Copyright (c) 2015-2019 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -9,8 +9,8 @@
 
 #include "tests.h"
 #include <unistd.h>
-#include <asm/unistd.h>
 #include "scno.h"
+#include "pidns.h"
 
 #ifdef __NR_pidfd_send_signal
 
@@ -37,6 +37,8 @@ sys_pidfd_send_signal(int pidfd, int sig, const void *info, int flags)
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        static const char null_path[] = "/dev/null";
 
        int fd = open(null_path, O_RDONLY);
@@ -47,19 +49,23 @@ main(void)
        const void *esi = (const void *) si + 1;
 
        sys_pidfd_send_signal(fd, SIGUSR1, esi, 0);
+       pidns_print_leader();
        printf("pidfd_send_signal(%d, SIGUSR1, %p, 0) = %s\n",
               fd, esi, errstr);
 
        si->si_signo = SIGUSR1;
        si->si_code = SI_QUEUE;
+       si->si_pid = getpid();
 
        sys_pidfd_send_signal(fd, SIGUSR2, si, -1);
+       pidns_print_leader();
        printf("pidfd_send_signal(%d, SIGUSR2, {si_signo=SIGUSR1"
-              ", si_code=SI_QUEUE, si_errno=%d, si_pid=%u, si_uid=%u"
+              ", si_code=SI_QUEUE, si_errno=%u, si_pid=%d%s, si_uid=%d"
               ", si_value={int=%d, ptr=%p}}, %#x) = %s\n",
-              fd, si->si_errno, si->si_pid, si->si_uid, si->si_int, si->si_ptr,
-              -1U, errstr);
+              fd, si->si_errno, si->si_pid, pidns_pid2str(PT_TGID), si->si_uid,
+              si->si_int, si->si_ptr, -1U, errstr);
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
diff --git a/tests-mx32/pidns-cache.c b/tests-mx32/pidns-cache.c
new file mode 100644 (file)
index 0000000..6319a7f
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+#include "pidns.h"
+
+#if defined __NR_getpid && (!defined __NR_getxpid || __NR_getxpid != __NR_getpid)
+
+# include <stdio.h>
+# include <unistd.h>
+# include <sys/time.h>
+
+# define SYSCALL_COUNT 1000
+
+/**
+ * Max ratio of the execution time with and without pidns translation.
+ */
+# define MAX_TIME_RATIO 20
+
+static long
+execute_syscalls(void)
+{
+       /* Load our PID in the cache */
+       syscall(__NR_getpid);
+
+       struct timeval stop, start;
+       gettimeofday(&start, NULL);
+
+       for (int i = 0; i < SYSCALL_COUNT; i++)
+              syscall(__NR_getpid);
+
+       gettimeofday(&stop, NULL);
+
+       return (stop.tv_usec - start.tv_usec) +
+               (stop.tv_sec - start.tv_sec) * 1000000;
+}
+
+int
+main(void)
+{
+       long max_us = execute_syscalls() * MAX_TIME_RATIO;
+
+       pidns_test_init();
+
+       long us = execute_syscalls();
+       if (us > max_us)
+               error_msg_and_fail("pidns translation took too long: %ld us "
+                                  "(max: %ld us)", us, max_us);
+
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_getpid")
+
+#endif
diff --git a/tests-mx32/pidns-cache.test b/tests-mx32/pidns-cache.test
new file mode 100755 (executable)
index 0000000..e4df082
--- /dev/null
@@ -0,0 +1,15 @@
+#!/bin/sh
+#
+# Test pidns translation cache.
+#
+# Copyright (c) 2020 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/init.sh"
+
+check_prog timeout
+
+run_prog > /dev/null
+run_strace --pidns-translation -f -e trace=getpid $args
diff --git a/tests-mx32/pidns.c b/tests-mx32/pidns.c
new file mode 100644 (file)
index 0000000..4fe5b22
--- /dev/null
@@ -0,0 +1,237 @@
+/*
+ * Testing framework for PID namespace translation
+ *
+ * Copyright (c) 2020 Ákos Uzonyi <uzonyi.akos@gmail.com>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+#include "tests.h"
+#include "pidns.h"
+#include "nsfs.h"
+
+#include <errno.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/types.h>
+#include <signal.h>
+#include <stdlib.h>
+#include <sched.h>
+#include <unistd.h>
+#include <sys/wait.h>
+#include <linux/sched.h>
+#include <fcntl.h>
+#include <sys/ioctl.h>
+
+#ifndef CLONE_NEWUSER
+# define CLONE_NEWUSER 0x10000000
+#endif
+
+#ifndef CLONE_NEWPID
+# define CLONE_NEWPID 0x20000000
+#endif
+
+static bool pidns_translation = false;
+static bool pidns_unshared = false;
+
+/* Our PIDs in strace's namespace */
+static pid_t pidns_strace_ids[PT_COUNT];
+
+void
+pidns_print_leader(void)
+{
+       if (pidns_translation)
+               printf("%-5d ", pidns_strace_ids[PT_TID]);
+}
+
+const char *
+pidns_pid2str(enum pid_type type)
+{
+       static const char format[] = " /* %d in strace's PID NS */";
+       static char buf[PT_COUNT][sizeof(format) + sizeof(int) * 3];
+
+       if (type < 0 || type >= PT_COUNT)
+               return "";
+
+       if (!pidns_unshared || !pidns_strace_ids[type])
+               return "";
+
+       snprintf(buf[type], sizeof(buf[type]), format, pidns_strace_ids[type]);
+       return buf[type];
+}
+
+/**
+ * This function is like fork, but does a few more things. It sets up the
+ * child's PGID and SID according to the parameters. Also it fills the
+ * pidns_strace_ids array in the child's memory with the PIDs of the child in
+ * parent's PID namespace. In the parent it waits for the child to terminate
+ * (but leaves the zombie to use it later as a process group). If the child
+ * terminates with nonzero exit status, the test is failed.
+ *
+ * @param pgid     The process group the child should be moved to. It's expected
+ *                 to be a PID of a zombie process (will be reaped). If
+ *                 negative, leave the child in the process group of the parent.
+ *                 If 0, move the process to its own process group.
+ * @param new_sid  Wheather child should be moved to a new session.
+ */
+static pid_t
+pidns_fork(pid_t pgid, bool new_sid)
+{
+       int strace_ids_pipe[2];
+       if (pipe(strace_ids_pipe) < 0)
+               perror_msg_and_fail("pipe");
+
+       fflush(stdout);
+       pid_t pid = fork();
+       if (pid < 0)
+               perror_msg_and_fail("fork");
+
+       if (!pid) {
+               close(strace_ids_pipe[1]);
+
+               ssize_t len = read(strace_ids_pipe[0], pidns_strace_ids,
+                               sizeof(pidns_strace_ids));
+               if (len < 0)
+                       perror_msg_and_fail("read");
+               if (len != sizeof(pidns_strace_ids))
+                       error_msg_and_fail("read returned < sizeof(pidns_strace_ids)");
+
+               close(strace_ids_pipe[0]);
+
+               if (pidns_strace_ids[PT_SID])
+                       setsid();
+
+               return 0;
+       }
+
+       pidns_strace_ids[PT_TID] = pid;
+       pidns_strace_ids[PT_TGID] = pid;
+       pidns_strace_ids[PT_PGID] = 0;
+       pidns_strace_ids[PT_SID] = 0;
+
+       if (!pgid)
+               pgid = pid;
+
+       if (pgid > 0) {
+               if (setpgid(pid, pgid) < 0)
+                       perror_msg_and_fail("setpgid");
+
+               pidns_strace_ids[PT_PGID] = pgid;
+       }
+
+       /* Reap group leader to test PGID decoding */
+       if (pgid > 0 && pgid != pid) {
+               int ret = waitpid(pgid, NULL, WNOHANG);
+               if (ret < 0)
+                       perror_msg_and_fail("wait");
+               if (!ret)
+                       error_msg_and_fail("could not reap group leader");
+       }
+
+       if (new_sid) {
+               pidns_strace_ids[PT_SID] = pid;
+               pidns_strace_ids[PT_PGID] = pid;
+       }
+
+       ssize_t len = write(strace_ids_pipe[1], pidns_strace_ids,
+                            sizeof(pidns_strace_ids));
+       if (len < 0)
+               perror_msg_and_fail("write");
+       if (len != sizeof(pidns_strace_ids))
+               error_msg_and_fail("write returned < sizeof(pidns_strace_ids)");
+
+       close(strace_ids_pipe[0]);
+       close(strace_ids_pipe[1]);
+
+       /* WNOWAIT: leave the zombie, to be able to use it as a process group */
+       siginfo_t siginfo;
+       if (waitid(P_PID, pid, &siginfo, WEXITED | WNOWAIT) < 0)
+               perror_msg_and_fail("wait");
+       if (siginfo.si_code != CLD_EXITED || siginfo.si_status)
+               error_msg_and_fail("child terminated with nonzero exit status");
+
+       return pid;
+}
+
+static void
+create_init_process(void)
+{
+       int child_pipe[2];
+       if (pipe(child_pipe) < 0)
+               perror_msg_and_fail("pipe");
+
+       pid_t pid = fork();
+       if (pid < 0)
+               perror_msg_and_fail("fork");
+
+       if (!pid) {
+               close(child_pipe[1]);
+               if (read(child_pipe[0], &child_pipe[1], sizeof(int)) != 0)
+                       _exit(1);
+               _exit(0);
+       }
+
+       close(child_pipe[0]);
+}
+
+void
+check_ns_ioctl(void)
+{
+       int fd = open("/proc/self/ns/pid", O_RDONLY);
+       if (fd < 0) {
+               if (errno == ENOENT)
+                       perror_msg_and_skip("opening /proc/self/ns/pid");
+               else
+                       perror_msg_and_fail("opening /proc/self/ns/pid");
+       }
+
+       int userns_fd = ioctl(fd, NS_GET_USERNS);
+       if (userns_fd < 0) {
+               if (errno == ENOTTY)
+                       error_msg_and_skip("NS_* ioctl commands are not "
+                                          "supported by the kernel");
+               else
+                       perror_msg_and_fail("ioctl(NS_GET_USERNS)");
+       }
+
+       close(userns_fd);
+       close(fd);
+}
+
+void
+pidns_test_init(void)
+{
+       pidns_translation = true;
+
+       check_ns_ioctl();
+
+       if (!pidns_fork(-1, false))
+               return;
+
+       /* Unshare user namespace too, so we do not need to be root */
+       if (unshare(CLONE_NEWUSER | CLONE_NEWPID) < 0) {
+               if (errno == EPERM)
+                       perror_msg_and_skip("unshare");
+
+               perror_msg_and_fail("unshare");
+       }
+
+       pidns_unshared = true;
+
+       create_init_process();
+
+       if (!pidns_fork(-1, false))
+               return;
+
+       if (!pidns_fork(-1, true))
+               return;
+
+       pid_t pgid;
+       if (!(pgid = pidns_fork(0, false)))
+               return;
+
+       if (!pidns_fork(pgid, false))
+               return;
+
+       exit(0);
+}
diff --git a/tests-mx32/pidns.h b/tests-mx32/pidns.h
new file mode 100644 (file)
index 0000000..bafc0d7
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ * Test PID namespace translation
+ *
+ * Copyright (c) 2020 Ákos Uzonyi <uzonyi.akos@gmail.com>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+#ifndef STRACE_PIDNS_H
+# define STRACE_PIDNS_H
+
+# ifdef PIDNS_TRANSLATION
+#  define PIDNS_TEST_INIT pidns_test_init()
+# else
+#  define PIDNS_TEST_INIT
+# endif
+
+# include <sys/types.h>
+
+enum pid_type {
+       PT_TID,
+       PT_TGID,
+       PT_PGID,
+       PT_SID,
+
+       PT_COUNT,
+       PT_NONE = -1
+};
+
+/* Prints leader (process tid) if pidns_test_init was called */
+void pidns_print_leader(void);
+
+/*
+ * Returns a static buffer containing the translation string of our PID.
+ */
+const char *pidns_pid2str(enum pid_type type);
+
+/**
+ * Skips the test if NS_* ioctl commands are not supported by the kernel.
+ */
+void check_ns_ioctl(void);
+
+/**
+ * Init pidns testing.
+ *
+ * Should be called at the beginning of the test's main function
+ *
+ * This function calls fork a couple of times, and returns in the child
+ * processes. These child processes are in a new PID namespace with different
+ * PID configurations (group leader, session leader, ...). If any child
+ * terminates with nonzero exit status the test is failed. Otherwise the test is
+ * succesful, and the parent process exits with 0.
+ */
+void pidns_test_init(void);
+
+#endif
\ No newline at end of file
index bdfc7565a5d1f0b97b570c84e563ec1cce368bf8..2f3571147bb53d093af7fc0080333f8cdbcf81c1 100644 (file)
@@ -2,14 +2,14 @@
  * Check decoding of pipe syscall.
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_pipe
 
index d948a1c693d19905fe574fc0abe609fe4f086a93..83a3d4c2f74c002c9c1f30fd8b16ebf5f8959473 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of pipe2 syscall.
  *
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_pipe2
 
index 6a92be40c02b03de591ae584c8e9fa5c6ac24b1a..a76266ca1db6712b5b597a056c26316b1258729c 100644 (file)
@@ -2,14 +2,13 @@
  * Check decoding of pkey_alloc syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
 #include "scno.h"
 
 #ifdef __NR_pkey_alloc
index 7bcb3f9a8937821f447e8af81b5cccdfd078f46d..b1759e2399db0e409bcdaa725cc49f75ca53a3b7 100644 (file)
@@ -2,14 +2,13 @@
  * Check decoding of pkey_free syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
 #include "scno.h"
 
 #ifdef __NR_pkey_free
index c9c96daa22dc3a5476d8146a8adbf3997f521a87..9a711a0fa396048ebcdc205c939ad763a5ce8186 100644 (file)
@@ -2,14 +2,13 @@
  * Check decoding of pkey_mprotect syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
 #include "scno.h"
 
 #ifdef __NR_pkey_mprotect
index 8ba2d303e23b1c5cd0614332c5b9c376125e386d..68121614860d7cee341c8bb585939607cca9563d 100755 (executable)
@@ -2,20 +2,20 @@
 #
 # Check path tracing of poll syscall.
 #
-# Copyright (c) 2018 The strace developers.
+# Copyright (c) 2018-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 . "${srcdir=.}/init.sh"
 
-run_prog > /dev/null
+run_prog > /dev/null 9>>/dev/full
 run_strace -a16 -vepoll -P /dev/full 9>>/dev/full \
        $args > "$EXP"
 match_diff "$LOG" "$EXP"
 
 for abbrev in 0 1 2 3 4 5; do
-       run_prog "../$NAME" $abbrev > /dev/null
+       run_prog "../$NAME" $abbrev > /dev/null 9>>/dev/full
        run_strace -a16 -epoll -s$abbrev -P /dev/full 9>>/dev/full \
                $args > "$EXP"
        match_diff "$LOG" "$EXP"
index c08bee8e1b0506e38fa48e3ecf1d50f5fa7399da..846af5a7529d32f64c8fb8d2df819e5afccbca49 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of poll syscall.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_poll
 
index e7a4474f05cb2a7ebc4ae7998153f5eb6115315b..9ada526d7ea69a2b7cb390a9f5a33042b7b83ae6 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of ppoll syscall.
  *
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_ppoll
 
index be8942708b017273aee19fd755eaa3cb4b2e2336..3a5d91136746d6782f80207ebbd94ea738350d15 100644 (file)
@@ -4,14 +4,14 @@
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_prctl
 
index 7740d52ab0ae17888e6bb9f5231c3618f37ec560..5c19602563b2421bff4066d2abf1e96d28550264 100644 (file)
@@ -3,14 +3,14 @@
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 #include <linux/prctl.h>
 
 #if defined __NR_prctl && defined PR_GET_DUMPABLE && defined PR_SET_DUMPABLE \
index 16d8591119787574d4c7da707d3ee3317e0552de..70cdc3e1bd1d0f07332aca18e419b1e1a1a696b8 100644 (file)
@@ -3,19 +3,16 @@
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
+#include <sys/prctl.h>
 
-#ifdef HAVE_PRCTL
-# include <sys/prctl.h>
-#endif
-
-#if defined HAVE_PRCTL && defined PR_GET_NAME && defined PR_SET_NAME
+#if defined PR_GET_NAME && defined PR_SET_NAME
 
 # include <stdio.h>
 # include <string.h>
@@ -79,6 +76,6 @@ main(void)
 
 #else
 
-SKIP_MAIN_UNDEFINED("HAVE_PRCTL && PR_GET_NAME && PR_SET_NAME")
+SKIP_MAIN_UNDEFINED("PR_GET_NAME && PR_SET_NAME")
 
 #endif
index 8ce13d804df815f3f988e0ebc171dbdb6807652e..8f50ca2f0559c946243d891c07ea8eecb50ea1c2 100644 (file)
@@ -1,17 +1,18 @@
 /*
  * Check decoding of prctl operations without arguments and return code parsing:
  * PR_GET_KEEPCAPS, PR_GET_SECCOMP, PR_GET_TIMERSLACK, PR_GET_TIMING,
- * PR_TASK_PERF_EVENTS_DISABLE, and PR_TASK_PERF_EVENTS_ENABLE.
+ * PR_TASK_PERF_EVENTS_DISABLE, PR_TASK_PERF_EVENTS_ENABLE, and
+ * PR_GET_TAGGED_ADDR_CTRL.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_prctl
 
@@ -36,6 +37,7 @@ main(void)
                { 30, "PR_GET_TIMERSLACK" },
                { 31, "PR_TASK_PERF_EVENTS_DISABLE" },
                { 32, "PR_TASK_PERF_EVENTS_ENABLE" },
+               { 56, "PR_GET_TAGGED_ADDR_CTRL" },
        };
 
        TAIL_ALLOC_OBJECT_CONST_PTR(unsigned int, ptr);
index 6ffbbad757f316775c1543750a37955674b8d12a..da79fdf059667a551b79e0372258c26d8c0310ec 100644 (file)
@@ -3,21 +3,21 @@
  *
  * Copyright (c) 2016 JingPiao Chen <chenjingpiao@foxmail.com>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 #include <linux/prctl.h>
 
 #if defined __NR_prctl && defined PR_GET_PDEATHSIG && defined PR_SET_PDEATHSIG
 
 # include <stdio.h>
 # include <unistd.h>
-# include <sys/signal.h>
+# include <signal.h>
 
 int
 main(void)
index f29cfad65ab2d163566f04061368c2d63090b3bc..56bee2fc12ccc493c9b8b86fa6cd5ee7ed8c0bd5 100644 (file)
@@ -2,7 +2,7 @@
  * Check verbose decoding of prctl PR_SET_SECCOMP SECCOMP_MODE_FILTER.
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 #include <unistd.h>
 #include <stdio.h>
 #include <errno.h>
-#include <asm/unistd.h>
-
-#ifdef HAVE_PRCTL
-# include <sys/prctl.h>
-#endif
+#include <sys/prctl.h>
 #ifdef HAVE_LINUX_SECCOMP_H
 # include <linux/seccomp.h>
 #endif
 #include <linux/filter.h>
+#include "scno.h"
 
-#if defined HAVE_PRCTL \
- && defined PR_SET_NO_NEW_PRIVS \
+#if defined PR_SET_NO_NEW_PRIVS \
  && defined PR_SET_SECCOMP \
  && defined SECCOMP_MODE_FILTER \
  && defined SECCOMP_RET_ERRNO \
                BPF_STMT(BPF_RET|BPF_K, SECCOMP_RET_KILL)
 
 # define PRINT_ALLOW_SYSCALL(nr) \
-       printf("BPF_JUMP(BPF_JMP|BPF_K|BPF_JEQ, %#x, 0, 0x1), " \
+       printf("BPF_JUMP(BPF_JMP|BPF_K|BPF_JEQ, %#lx, 0, 0x1), " \
               "BPF_STMT(BPF_RET|BPF_K, SECCOMP_RET_ALLOW), ", \
-              __NR_ ## nr)
+              (long) __NR_ ## nr)
 
 # define PRINT_DENY_SYSCALL(nr, err) \
-       printf("BPF_JUMP(BPF_JMP|BPF_K|BPF_JEQ, %#x, 0, 0x1), " \
+       printf("BPF_JUMP(BPF_JMP|BPF_K|BPF_JEQ, %#lx, 0, 0x1), " \
               "BPF_STMT(BPF_RET|BPF_K, SECCOMP_RET_ERRNO|%#x), ", \
-              __NR_ ## nr, err)
+              (long) __NR_ ## nr, err)
 
 static const struct sock_filter filter[] = {
        /* load syscall number */
@@ -117,7 +113,7 @@ main(void)
 
 #else
 
-SKIP_MAIN_UNDEFINED("HAVE_PRCTL && PR_SET_NO_NEW_PRIVS && PR_SET_SECCOMP"
+SKIP_MAIN_UNDEFINED("PR_SET_NO_NEW_PRIVS && PR_SET_SECCOMP"
                    " && SECCOMP_MODE_FILTER && SECCOMP_RET_ERRNO"
                    " && BPF_JUMP && BPF_STMT")
 
index 0573126e70d2cab98bffcfa28477dda423562b5f..353b07ee3781d3064f6cd2b7a98542059c828576 100644 (file)
@@ -1,17 +1,16 @@
 /*
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
-#ifdef HAVE_PRCTL
-# include <sys/prctl.h>
-#endif
+#include <sys/prctl.h>
+#include "scno.h"
 
-#if defined HAVE_PRCTL && defined PR_SET_SECCOMP && defined __NR_exit
+#if defined PR_SET_SECCOMP && defined __NR_exit
 
 # include <stdio.h>
 # include <unistd.h>
@@ -36,7 +35,7 @@ main(void)
                rc = 0;
        } else {
                /*
-                * If kernel implementaton of SECCOMP_MODE_STRICT is buggy,
+                * If kernel implementation of SECCOMP_MODE_STRICT is buggy,
                 * the following syscall will result to SIGKILL.
                 */
                rc = write(1, text1, LENGTH_OF(text1)) != LENGTH_OF(text1);
@@ -48,6 +47,6 @@ main(void)
 
 #else
 
-SKIP_MAIN_UNDEFINED("HAVE_PRCTL && PR_SET_SECCOMP && __NR_exit")
+SKIP_MAIN_UNDEFINED("PR_SET_SECCOMP && __NR_exit")
 
 #endif
index 5b32f5b5b2a0a8a61157c070ea042cef27bdcd73..8a9f1365219780b55a974f91e7d8995ed6e109c4 100644 (file)
@@ -3,14 +3,14 @@
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 #include <linux/prctl.h>
 
 #if defined __NR_prctl && defined PR_GET_SECUREBITS && defined PR_SET_SECUREBITS
index 3fa2df2d3051ba4cdb0fc8b19fe05cb152ef8d3b..c37c4e71bb57b4793a53b69479d049e6bce1b813 100644 (file)
@@ -9,7 +9,7 @@
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_prctl
 
index 9652f00dd4e1cea6e8ded8a47bb789077839a48e..14e5d395bf4aad59bc9bfede33548c84e9d2966a 100644 (file)
@@ -2,14 +2,14 @@
  * Check decoding of prctl PR_GET_TID_ADDRESS operation.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 #include <linux/prctl.h>
 
 #if defined __NR_prctl && defined __NR_set_tid_address && \
index 0ac27ecd7a7ea04b932dc2c91c96358033921646..20f9accda46825846a89a84d75a23f6be551f421 100644 (file)
@@ -3,14 +3,14 @@
  *
  * Copyright (c) 2016 JingPiao Chen <chenjingpiao@foxmail.com>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 #include <linux/prctl.h>
 
 #if defined __NR_prctl && defined PR_GET_TSC && defined PR_SET_TSC
index 3d1b504e4a161e9b365157dc0b0e8c33a644c9de..fcdac2e55b44121c89f5b04bdaaec22fa969fe1c 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2014-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -74,12 +74,7 @@ main(void)
                perror_msg_and_fail("preadv");
        printf("preadv(0, [], 0, -3) = -1 EINVAL (%m)\n");
 
-       static const char tmp[] = "preadv-tmpfile";
-       int fd = open(tmp, O_RDWR | O_CREAT | O_TRUNC, 0600);
-       if (fd < 0)
-               perror_msg_and_fail("open");
-       if (unlink(tmp))
-               perror_msg_and_fail("unlink");
+       int fd = create_tmpfile(O_RDWR);
 
        static const char w[] = "0123456789abcde";
        if (write(fd, w, LENGTH_OF(w)) != LENGTH_OF(w))
index 1266562eb3c91158f4d10c2007949561b4345fe0..d6be10a855473e3d078b473479355d6c1cf4fd4d 100644 (file)
@@ -9,7 +9,6 @@
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
 #include "scno.h"
 
 #if defined __NR_preadv2 && defined __NR_pwritev2
diff --git a/tests-mx32/print_ppid_tracerpid.c b/tests-mx32/print_ppid_tracerpid.c
new file mode 100644 (file)
index 0000000..ae55371
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Helper program for strace-D.test
+ *
+ * Copyright (c) 2019-2020 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+int
+main(void)
+{
+       static const char status[] = "/proc/self/status";
+       FILE *fp = fopen(status, "r");
+       if (!fp)
+               perror_msg_and_fail("fopen: %s", status);
+
+       static const char prefix1[] = "PPid:";
+       static const char prefix2[] = "TracerPid:";
+       char *line = NULL;
+       size_t n = 0;
+
+       while (getline(&line, &n, fp) > 0) {
+               if (strncmp(line, prefix1, sizeof(prefix1) - 1) == 0 ||
+                   strncmp(line, prefix2, sizeof(prefix2) - 1) == 0)
+                       fputs(line, stdout);
+       }
+
+       if (!line)
+               perror_msg_and_fail("getline");
+
+       free(line);
+       fclose(fp);
+
+       return 0;
+}
index e9d66471351ec10a72865ed3fcf4b8db828408f5..8793dfe0e635688afb5096a516c1c5a17a407cf3 100644 (file)
@@ -17,21 +17,26 @@ int
 printflags(const struct xlat *xlat, unsigned long long flags,
           const char *const dflt)
 {
-       if (flags == 0 && xlat->val == 0 && xlat->str) {
-               fputs(xlat->str, stdout);
+       if (flags == 0 && xlat->data->val == 0 && xlat->data->str) {
+               fputs(xlat->data->str, stdout);
                return 1;
        }
 
        int n;
+       size_t i = 0;
        char sep = 0;
-       for (n = 0; xlat->str; xlat++) {
-               if (xlat->val && (flags & xlat->val) == xlat->val) {
+       const struct xlat_data *xd = xlat->data;
+       for (n = 0; i < xlat->size; xd++, i++) {
+               if (!xd->str)
+                       continue;
+
+               if (xd->val && (flags & xd->val) == xd->val) {
                        if (sep)
                                putc(sep, stdout);
                        else
                                sep = '|';
-                       fputs(xlat->str, stdout);
-                       flags &= ~xlat->val;
+                       fputs(xd->str, stdout);
+                       flags &= ~xd->val;
                        n++;
                }
        }
index 216b6cace1b31b662a20f518924ed1d9a263dc4f..6dd36230a951ccf556d2ea57c51c44e9efba6812 100644 (file)
@@ -1,19 +1,16 @@
 /*
  * Force legacy printpath/umovestr using PR_SET_DUMPABLE.
  *
- * Copyright (c) 2017-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2020 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
+#include <sys/prctl.h>
 
-#ifdef HAVE_PRCTL
-# include <sys/prctl.h>
-#endif
-
-#if defined HAVE_PRCTL && defined PR_SET_DUMPABLE
+#ifdef PR_SET_DUMPABLE
 
 # include <stdio.h>
 # include <unistd.h>
@@ -46,6 +43,6 @@ main(void)
 
 #else
 
-SKIP_MAIN_UNDEFINED("HAVE_PRCTL && PR_SET_DUMPABLE")
+SKIP_MAIN_UNDEFINED("PR_SET_DUMPABLE")
 
 #endif
index be3f8d4bff69a7a0a38eafdf64aadc525c8d4c43..d0600a2e959b9c1185c3cb07fc2ce4b685ddef45 100644 (file)
@@ -1,19 +1,16 @@
 /*
  * Force legacy printpath/umovestr using PR_SET_DUMPABLE.
  *
- * Copyright (c) 2017-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2020 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
+#include <sys/prctl.h>
 
-#ifdef HAVE_PRCTL
-# include <sys/prctl.h>
-#endif
-
-#if defined HAVE_PRCTL && defined PR_SET_DUMPABLE
+#ifdef PR_SET_DUMPABLE
 
 # include <stdio.h>
 # include <unistd.h>
@@ -46,6 +43,6 @@ main(void)
 
 #else
 
-SKIP_MAIN_UNDEFINED("HAVE_PRCTL && PR_SET_DUMPABLE")
+SKIP_MAIN_UNDEFINED("PR_SET_DUMPABLE")
 
 #endif
diff --git a/tests-mx32/printxval-Xabbrev.c b/tests-mx32/printxval-Xabbrev.c
new file mode 100644 (file)
index 0000000..902a386
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_NAME(s_) s_##_abbrev
+#include "printxval.c"
diff --git a/tests-mx32/printxval-Xraw.c b/tests-mx32/printxval-Xraw.c
new file mode 100644 (file)
index 0000000..eb92a71
--- /dev/null
@@ -0,0 +1,3 @@
+#define XLAT_RAW 1
+#define XLAT_NAME(s_) s_##_raw
+#include "printxval.c"
diff --git a/tests-mx32/printxval-Xverbose.c b/tests-mx32/printxval-Xverbose.c
new file mode 100644 (file)
index 0000000..f97529e
--- /dev/null
@@ -0,0 +1,3 @@
+#define XLAT_VERBOSE 1
+#define XLAT_NAME(s_) s_##_verbose
+#include "printxval.c"
index 0cd629e4bdd76524b48df73ca5f1188a0413c0ec..19714570ca85352f6dd24c573e1d4b2c8f6df41a 100644 (file)
@@ -4,6 +4,7 @@
  * Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com>
  * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
  * Copyright (c) 2005-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 #include "xlat.h"
 #include <stdio.h>
 
-int
-printxval(const struct xlat *xlat, unsigned long long val,
-         const char *const dflt)
+#if !XLAT_RAW
+static const char *
+lookup_xlat(const struct xlat *xlat, unsigned long long val)
 {
-       for (; xlat->str; xlat++) {
-               if (xlat->val == val) {
-                       fputs(xlat->str, stdout);
-                       return 1;
+       const struct xlat_data *xd = xlat->data;
+
+       for (size_t i = 0; i < xlat->size; i++, xd++) {
+               if (!xd->str)
+                       continue;
+
+               if (xd->val == val) {
+                       return xd->str;
                }
        }
 
+       return NULL;
+}
+#endif
+
+int
+XLAT_NAME(printxval)(const struct xlat *xlat, unsigned long long val,
+                    const char *const dflt)
+{
+#if XLAT_RAW
        printf("%#llx", val);
+
+       return 1;
+#else
+       const char *str = lookup_xlat(xlat, val);
+
+# if XLAT_VERBOSE
+       printf("%#llx", val);
+       if (str || dflt)
+               printf(" /* %s */", str ?: dflt);
+# else
+       if (str) {
+               fputs(str, stdout);
+       } else {
+               printf("%#llx", val);
+               if (dflt)
+                       printf(" /* %s */", dflt);
+       }
+# endif /* XLAT_VERBOSE */
+
+       return !!str;
+#endif /* XLAT_RAW */
+}
+
+const char *
+XLAT_NAME(sprintxlat)(const char *str, unsigned long long val,
+                     const char *const dflt)
+{
+       static char buf[256];
+
+#if XLAT_RAW
+       snprintf(buf, sizeof(buf), "%#llx", val);
+#elif XLAT_VERBOSE
+       if (str || dflt)
+               snprintf(buf, sizeof(buf), "%#llx /* %s */", val, str ?: dflt);
+       else
+               snprintf(buf, sizeof(buf), "%#llx", val);
+#else
+       if (str)
+               return str;
+
        if (dflt)
-               printf(" /* %s */", dflt);
-       return 0;
+               snprintf(buf, sizeof(buf), "%#llx /* %s */", val, dflt);
+       else
+               snprintf(buf, sizeof(buf), "%#llx", val);
+#endif
+
+       return buf;
+}
+
+const char *
+XLAT_NAME(sprintxval)(const struct xlat *xlat, unsigned long long val,
+                     const char *const dflt)
+{
+#if XLAT_RAW
+       return sprintxlat(NULL, val, dflt);
+#else
+       return sprintxlat(lookup_xlat(xlat, val), val, dflt);
+#endif
 }
diff --git a/tests-mx32/prlimit64--pidns-translation.c b/tests-mx32/prlimit64--pidns-translation.c
new file mode 100644 (file)
index 0000000..3972de6
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "prlimit64.c"
diff --git a/tests-mx32/prlimit64--pidns-translation.gen.test b/tests-mx32/prlimit64--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..221f3c0
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (prlimit64--pidns-translation test_pidns -e trace=prlimit64); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -e trace=prlimit64
index 688ca75fb880bcebe2a7bf07c7bb0c08ea06200a..eb2e9631b0ee2605ac5cd0beac2685b638fcddf4 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of prlimit64 syscall.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_prlimit64
 
@@ -18,6 +19,7 @@
 # include <sys/resource.h>
 # include <unistd.h>
 
+# include "pidns.h"
 # include "xlat.h"
 # include "xlat/resources.h"
 
@@ -41,26 +43,38 @@ sprint_rlim(uint64_t lim)
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        unsigned long pid =
                (unsigned long) 0xdefaced00000000ULL | (unsigned) getpid();
+       const char *pid_str = pidns_pid2str(PT_TGID);
        uint64_t *const rlimit = tail_alloc(sizeof(*rlimit) * 2);
-       const struct xlat *xlat;
+       const struct xlat_data *xlat;
+       size_t i = 0;
+
+       for (xlat = resources->data; i < resources->size; ++xlat, ++i) {
+               if (!xlat->str)
+                       continue;
 
-       for (xlat = resources; xlat->str; ++xlat) {
                unsigned long res = 0xfacefeed00000000ULL | xlat->val;
                long rc = syscall(__NR_prlimit64, pid, res, 0, rlimit);
+               pidns_print_leader();
                if (rc)
-                       printf("prlimit64(%d, %s, NULL, %p) = %ld %s (%m)\n",
-                              (unsigned) pid, xlat->str, rlimit,
+                       printf("prlimit64(%d%s, %s, NULL, %p) ="
+                                    " %ld %s (%m)\n",
+                              (unsigned) pid, pid_str,
+                              xlat->str, rlimit,
                               rc, errno2name());
                else
-                       printf("prlimit64(%d, %s, NULL"
+                       printf("prlimit64(%d%s, %s, NULL"
                               ", {rlim_cur=%s, rlim_max=%s}) = 0\n",
-                              (unsigned) pid, xlat->str,
+                              (unsigned) pid, pid_str,
+                              xlat->str,
                               sprint_rlim(rlimit[0]),
                               sprint_rlim(rlimit[1]));
        }
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
diff --git a/tests-mx32/process_vm_readv--pidns-translation.c b/tests-mx32/process_vm_readv--pidns-translation.c
new file mode 100644 (file)
index 0000000..0db29ca
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "process_vm_readv.c"
diff --git a/tests-mx32/process_vm_readv--pidns-translation.gen.test b/tests-mx32/process_vm_readv--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..f8fc944
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (process_vm_readv--pidns-translation test_pidns -s5 -a37 -e trace=process_vm_readv); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -s5 -a37 -e trace=process_vm_readv
index 422000b8043b09d72fc9877f028f9bfb4d019911..b69551d009eb26a3375d5cb936d3d2822a001318 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -7,7 +7,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_process_vm_readv
 
index 9309135a6b50394cd8049c452a5d2925a4a355b4..343bd3620e867a8e2abdb002ee61bef17495f541 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of process_vm_readv/process_vm_writev syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -12,6 +12,7 @@
 #include <stdio.h>
 #include <unistd.h>
 #include <sys/uio.h>
+#include "pidns.h"
 
 #if OP_WR
 # define in_iovec  rmt_iovec
@@ -121,7 +122,7 @@ print_iov(const struct iovec *iov, const void *arg_ptr, long rc)
 }
 
 static void
-do_call(kernel_ulong_t pid,
+do_call(kernel_ulong_t pid, enum pid_type pid_type,
        kernel_ulong_t local_iov, const char *local_arg,
        kernel_ulong_t liovcnt,
        kernel_ulong_t remote_iov, const char *remote_arg,
@@ -135,7 +136,8 @@ do_call(kernel_ulong_t pid,
                flags);
        errstr = sprintrc(rc);
 
-       printf("%s(%d, ", OP_STR, (int) pid);
+       pidns_print_leader();
+       printf("%s(%d%s, ", OP_STR, (int) pid, pidns_pid2str(pid_type));
 
        if (pr_iov)
                pr_iov((const struct iovec *) (uintptr_t) local_iov, local_arg,
@@ -164,6 +166,8 @@ ptr_cast(void *ptr)
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        enum {
                SIZE_11 = 2,
                SIZE_12 = 3,
@@ -243,18 +247,18 @@ main(void)
        fill_memory_ex(data2_out, SIZE_2, SEGM2_BASE, SIZE_2);
 
 
-       do_call(bogus_pid, (kernel_ulong_t) (uintptr_t) ARG_STR(NULL),
+       do_call(bogus_pid, PT_NONE, (kernel_ulong_t) (uintptr_t) ARG_STR(NULL),
                bogus_iovcnt1, (kernel_ulong_t) (uintptr_t) ARG_STR(NULL),
                bogus_iovcnt2, bogus_flags, NULL);
 
-       do_call(my_pid, ptr_cast(bogus_iov + ARRAY_SIZE(bogus_iovec)),
+       do_call(my_pid, PT_TGID, ptr_cast(bogus_iov + ARRAY_SIZE(bogus_iovec)),
                "[]", 0, ptr_cast(in_iov + ARRAY_SIZE(in_iovec)), "[]",
                0, 0, NULL);
-       do_call(my_pid, ptr_cast(bogus_iov + ARRAY_SIZE(bogus_iovec)), NULL,
-               bogus_iovcnt1, ptr_cast(in_iov + ARRAY_SIZE(in_iovec)), NULL,
-               bogus_iovcnt2, 0, print_iov);
+       do_call(my_pid, PT_TGID, ptr_cast(bogus_iov + ARRAY_SIZE(bogus_iovec)),
+               NULL, bogus_iovcnt1, ptr_cast(in_iov + ARRAY_SIZE(in_iovec)),
+               NULL, bogus_iovcnt2, 0, print_iov);
 
-       do_call(my_pid, ptr_cast(bogus_iov), (char *) &bogus_arg,
+       do_call(my_pid, PT_TGID, ptr_cast(bogus_iov), (char *) &bogus_arg,
                ARRAY_SIZE(bogus_iovec), ptr_cast(rmt_iov + 2),
                (char *) &rmt_arg_cut, ARRAY_SIZE(rmt_iovec) - 2, 0, print_iov);
 
@@ -263,7 +267,7 @@ main(void)
        lcl_arg_cut.check_rc = 1;
 #endif
 
-       do_call(my_pid, ptr_cast(lcl_iov + 2), (char *) &lcl_arg_cut,
+       do_call(my_pid, PT_TGID, ptr_cast(lcl_iov + 2), (char *) &lcl_arg_cut,
                ARRAY_SIZE(lcl_iovec) - 1, ptr_cast(bogus_iov + 2),
                (char *) &bogus_arg_cut, ARRAY_SIZE(bogus_iovec) - 1, 0,
                print_iov);
@@ -273,15 +277,16 @@ main(void)
        rmt_arg_cut.addr_term = 1;
        rmt_arg_cut.count = 5;
 
-       do_call(my_pid, ptr_cast(lcl_iov + 2), (char *) &lcl_arg_cut,
+       do_call(my_pid, PT_TGID, ptr_cast(lcl_iov + 2), (char *) &lcl_arg_cut,
                ARRAY_SIZE(lcl_iovec) - 2, ptr_cast(rmt_iov + 1),
                (char *) &rmt_arg_cut, ARRAY_SIZE(rmt_iovec), 0, print_iov);
 
        /* Correct call */
-       do_call(my_pid, ptr_cast(lcl_iov), (char *) &lcl_arg,
+       do_call(my_pid, PT_TGID, ptr_cast(lcl_iov), (char *) &lcl_arg,
                ARRAY_SIZE(lcl_iovec), ptr_cast(rmt_iov), (char *) &rmt_arg,
                ARRAY_SIZE(rmt_iovec), 0, print_iov);
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
 
        return 0;
diff --git a/tests-mx32/process_vm_writev--pidns-translation.c b/tests-mx32/process_vm_writev--pidns-translation.c
new file mode 100644 (file)
index 0000000..9ba6a39
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "process_vm_writev.c"
diff --git a/tests-mx32/process_vm_writev--pidns-translation.gen.test b/tests-mx32/process_vm_writev--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..79d705c
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (process_vm_writev--pidns-translation test_pidns -s5 -a38 -e trace=process_vm_writev); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -s5 -a38 -e trace=process_vm_writev
index 848a9e91acc760ec719199cc8085bc4f7d218d9c..e7476b792f4792e090943765c7619ed1f5dccc4f 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -7,7 +7,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_process_vm_writev
 
index c8122e27ce70864afb60d5f905fbae083394d46f..5660df2be570135a6743cf7ad2714290c7b0b03a 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -16,7 +16,7 @@
 #include <stdio.h>
 #include <unistd.h>
 #include <sys/select.h>
-#include <asm/unistd.h>
+#include "scno.h"
 #include <sys/time.h>
 
 #ifdef __NR_pselect6
index 63435a76dcf8577595c74e5226574d0b850cfe60..38e7037ae08b335e9c3f5c740adfd50d1c14424a 100644 (file)
@@ -2,14 +2,14 @@
  * Check decoding of ptrace syscall.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #include <errno.h>
 #include "ptrace.h"
@@ -127,16 +127,16 @@ test_peeksiginfo(unsigned long pid, const unsigned long bad_request)
                        printf("ptrace(PTRACE_PEEKSIGINFO, %u"
                               ", {off=%llu, flags=0, nr=%u}"
                               ", [{si_signo=SIGUSR1, si_code=SI_TKILL"
-                              ", si_pid=%u, si_uid=%u}"
+                              ", si_pid=%d, si_uid=%d}"
                               ", {si_signo=SIGUSR2, si_code=SI_TKILL"
-                              ", si_pid=%u, si_uid=%u}"
+                              ", si_pid=%d, si_uid=%d}"
                               ", {si_signo=SIGALRM, si_code=SI_TKILL"
-                              ", si_pid=%u, si_uid=%u}"
+                              ", si_pid=%d, si_uid=%d}"
                               "]) = %s\n",
                               (unsigned) pid, psi->off, psi->nr,
-                              (unsigned) pid, (unsigned) uid,
-                              (unsigned) pid, (unsigned) uid,
-                              (unsigned) pid, (unsigned) uid,
+                              (int) pid, (int) uid,
+                              (int) pid, (int) uid,
+                              (int) pid, (int) uid,
                               errstr);
                }
 
@@ -307,7 +307,7 @@ main(void)
 
        do_ptrace(PTRACE_SETSIGINFO, pid, bad_request, (unsigned long) sip);
        printf("ptrace(PTRACE_SETSIGINFO, %u, %#lx, {si_signo=SIGBUS"
-              ", si_code=BUS_ADRALN, si_errno=%d, si_addr=%p}) = %s\n",
+              ", si_code=BUS_ADRALN, si_errno=%u, si_addr=%p}) = %s\n",
               (unsigned) pid, bad_request, sip->si_errno, sip->si_addr,
               errstr);
 
@@ -321,7 +321,7 @@ main(void)
 
        do_ptrace(PTRACE_SETSIGINFO, pid, bad_request, (unsigned long) sip);
        printf("ptrace(PTRACE_SETSIGINFO, %u, %#lx, {si_signo=SIGPROF"
-              ", si_code=%#x, si_errno=%d, si_pid=0, si_uid=3}) = %s\n",
+              ", si_code=%#x, si_errno=%u, si_pid=0, si_uid=3}) = %s\n",
               (unsigned) pid, bad_request, sip->si_code, sip->si_errno,
               errstr);
 
@@ -349,7 +349,7 @@ main(void)
 
        do_ptrace(PTRACE_SETSIGINFO, pid, bad_request, (unsigned long) sip);
        printf("ptrace(PTRACE_SETSIGINFO, %u, %#lx, {si_signo=SIGSYS"
-              ", si_code=SYS_SECCOMP, si_errno=%d, si_call_addr=NULL"
+              ", si_code=SYS_SECCOMP, si_errno=%u, si_call_addr=NULL"
               ", si_syscall=__NR_read, si_arch=%#x /* AUDIT_ARCH_??? */})"
               " = %s\n",
               (unsigned) pid, bad_request, sip->si_errno, sip->si_arch,
index ea29d22e815cfa05dc4fbab771837ee8fbcdae66..cb630adbc3b3135f42ed1de3f06218e94d93f583 100644 (file)
@@ -2,6 +2,7 @@
  * Check decoding of ptrace PTRACE_GET_SYSCALL_INFO request.
  *
  * Copyright (c) 2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2018-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +11,6 @@
 #include "tests.h"
 
 #include "ptrace.h"
-#include <asm/unistd.h>
 #include "scno.h"
 
 #include <errno.h>
 #include <linux/audit.h>
 
 #include "xlat.h"
+#define XLAT_MACROS_ONLY
+/* For xlat/audit_arch.h */
+# include "xlat/elf_em.h"
+#undef XLAT_MACROS_ONLY
 #include "xlat/audit_arch.h"
 
 static const char *errstr;
@@ -94,11 +98,11 @@ static const unsigned long args[][7] = {
 };
 
 static const unsigned int expected_none_size =
-       offsetof(struct ptrace_syscall_info, entry);
+       offsetof(struct_ptrace_syscall_info, entry);
 static const unsigned int expected_entry_size =
-       offsetofend(struct ptrace_syscall_info, entry.args);
+       offsetofend(struct_ptrace_syscall_info, entry.args);
 static const unsigned int expected_exit_size =
-       offsetofend(struct ptrace_syscall_info, exit.is_error);
+       offsetofend(struct_ptrace_syscall_info, exit.is_error);
 
 static unsigned long end_of_page;
 static unsigned int ptrace_stop;
@@ -115,7 +119,7 @@ test_none(void)
               pid, end_of_page, errstr);
 
        for (unsigned int size = 0;
-            size <= sizeof(struct ptrace_syscall_info); ++size) {
+            size <= sizeof(struct_ptrace_syscall_info); ++size) {
                unsigned long buf = end_of_page - size;
                memset((void *) buf, -1, size);
 
@@ -137,21 +141,21 @@ test_none(void)
                }
 
                /* copy to a local structure to avoid unaligned access */
-               struct ptrace_syscall_info info;
+               struct_ptrace_syscall_info info;
                memcpy(&info, (void *) buf,  MIN(size, expected_none_size));
 
                if (info.op != PTRACE_SYSCALL_INFO_NONE)
                        FAIL("signal stop mismatch");
                printf("{op=PTRACE_SYSCALL_INFO_NONE");
 
-               if (size < offsetofend(struct ptrace_syscall_info, arch))
+               if (size < offsetofend(struct_ptrace_syscall_info, arch))
                        goto printed_none;
                if (!info.arch)
                        FAIL("signal stop mismatch");
                printf(", arch=");
                printxval(audit_arch, info.arch, "AUDIT_ARCH_???");
 
-               if (size < offsetofend(struct ptrace_syscall_info,
+               if (size < offsetofend(struct_ptrace_syscall_info,
                                       instruction_pointer))
                        goto printed_none;
                if (!info.instruction_pointer)
@@ -159,7 +163,7 @@ test_none(void)
                printf(", instruction_pointer=%#llx",
                       (unsigned long long) info.instruction_pointer);
 
-               if (size < offsetofend(struct ptrace_syscall_info,
+               if (size < offsetofend(struct_ptrace_syscall_info,
                                       stack_pointer))
                        goto printed_none;
                if (!info.stack_pointer)
@@ -178,7 +182,7 @@ static void
 test_entry(void)
 {
        for (unsigned int size = 0;
-            size <= sizeof(struct ptrace_syscall_info); ++size) {
+            size <= sizeof(struct_ptrace_syscall_info); ++size) {
                unsigned long buf = end_of_page - size;
                memset((void *) buf, -1, size);
 
@@ -197,21 +201,21 @@ test_entry(void)
                }
 
                /* copy to a local structure to avoid unaligned access */
-               struct ptrace_syscall_info info;
+               struct_ptrace_syscall_info info;
                memcpy(&info, (void *) buf,  MIN(size, expected_entry_size));
 
                if (info.op != PTRACE_SYSCALL_INFO_ENTRY)
                        FAIL("#%d: entry stop mismatch", ptrace_stop);
                printf("{op=PTRACE_SYSCALL_INFO_ENTRY");
 
-               if (size < offsetofend(struct ptrace_syscall_info, arch))
+               if (size < offsetofend(struct_ptrace_syscall_info, arch))
                        goto printed_entry_common;
                if (!info.arch)
                        FAIL("#%d: entry stop mismatch", ptrace_stop);
                printf(", arch=");
                printxval(audit_arch, info.arch, "AUDIT_ARCH_???");
 
-               if (size < offsetofend(struct ptrace_syscall_info,
+               if (size < offsetofend(struct_ptrace_syscall_info,
                                       instruction_pointer))
                        goto printed_entry_common;
                if (!info.instruction_pointer)
@@ -219,7 +223,7 @@ test_entry(void)
                printf(", instruction_pointer=%#llx",
                       (unsigned long long) info.instruction_pointer);
 
-               if (size < offsetofend(struct ptrace_syscall_info,
+               if (size < offsetofend(struct_ptrace_syscall_info,
                                       stack_pointer))
                        goto printed_entry_common;
                if (!info.stack_pointer)
@@ -227,7 +231,7 @@ test_entry(void)
                printf(", stack_pointer=%#llx",
                       (unsigned long long) info.stack_pointer);
 
-               if (size < offsetofend(struct ptrace_syscall_info, entry.nr))
+               if (size < offsetofend(struct_ptrace_syscall_info, entry.nr))
                        goto printed_entry_common;
                const unsigned long *exp_args = args[ptrace_stop / 2];
                if (info.entry.nr != exp_args[0])
@@ -236,14 +240,19 @@ test_entry(void)
 
                for (unsigned int i = 0; i < ARRAY_SIZE(info.entry.args); ++i) {
                        const unsigned int i_size =
-                               offsetofend(struct ptrace_syscall_info,
+                               offsetofend(struct_ptrace_syscall_info,
                                            entry.args[i]);
                        if (size < i_size) {
                                if (i)
                                        break;
                                goto printed_entry_nr;
                        }
-                       if (info.entry.args[i] != exp_args[i + 1])
+#if SIZEOF_KERNEL_LONG_T > SIZEOF_LONG
+# define CAST (unsigned long)
+#else
+# define CAST
+#endif
+                       if (CAST info.entry.args[i] != exp_args[i + 1])
                                FAIL("#%d: entry stop mismatch", ptrace_stop);
                        printf("%s%#llx", (i ? ", " : ", arg=["),
                               (unsigned long long) info.entry.args[i]);
@@ -262,7 +271,7 @@ static void
 test_exit(void)
 {
        for (unsigned int size = 0;
-            size <= sizeof(struct ptrace_syscall_info); ++size) {
+            size <= sizeof(struct_ptrace_syscall_info); ++size) {
                unsigned long buf = end_of_page - size;
                memset((void *) buf, -1, size);
 
@@ -281,21 +290,21 @@ test_exit(void)
                }
 
                /* copy to a local structure to avoid unaligned access */
-               struct ptrace_syscall_info info;
+               struct_ptrace_syscall_info info;
                memcpy(&info, (void *) buf,  MIN(size, expected_exit_size));
 
                if (info.op != PTRACE_SYSCALL_INFO_EXIT)
                        FAIL("#%d: exit stop mismatch", ptrace_stop);
                printf("{op=PTRACE_SYSCALL_INFO_EXIT");
 
-               if (size < offsetofend(struct ptrace_syscall_info, arch))
+               if (size < offsetofend(struct_ptrace_syscall_info, arch))
                        goto printed_exit_common;
                if (!info.arch)
                        FAIL("#%d: exit stop mismatch", ptrace_stop);
                printf(", arch=");
                printxval(audit_arch, info.arch, "AUDIT_ARCH_???");
 
-               if (size < offsetofend(struct ptrace_syscall_info,
+               if (size < offsetofend(struct_ptrace_syscall_info,
                                       instruction_pointer))
                        goto printed_exit_common;
                if (!info.instruction_pointer)
@@ -303,7 +312,7 @@ test_exit(void)
                printf(", instruction_pointer=%#llx",
                       (unsigned long long) info.instruction_pointer);
 
-               if (size < offsetofend(struct ptrace_syscall_info,
+               if (size < offsetofend(struct_ptrace_syscall_info,
                                       stack_pointer))
                        goto printed_exit_common;
                if (!info.stack_pointer)
@@ -320,7 +329,7 @@ test_exit(void)
                        { 0, pid, NULL }                /* gettid */
                }, *exp_param = &exit_param[ptrace_stop / 2 - 1];
 
-               if (size < offsetofend(struct ptrace_syscall_info, exit.rval))
+               if (size < offsetofend(struct_ptrace_syscall_info, exit.rval))
                        goto printed_exit_common;
                if (info.exit.rval != exp_param->rval)
                        FAIL("#%d: exit stop mismatch", ptrace_stop);
index cc8445022663c55d4b3c266581158b1aca4c2b3e..e2773a5c53177444da32a1129adefeea315ae9d4 100644 (file)
@@ -11,10 +11,6 @@ PURE_EXECUTABLES = \
   aio_pgetevents \
   alarm \
   bpf \
-  bpf-obj_get_info_by_fd \
-  bpf-obj_get_info_by_fd-prog \
-  bpf-obj_get_info_by_fd-prog-v \
-  bpf-obj_get_info_by_fd-v \
   bpf-v \
   brk \
   btrfs \
@@ -26,13 +22,34 @@ PURE_EXECUTABLES = \
   clock_adjtime \
   clock_nanosleep \
   clock_xettime \
+  clone-flags \
+  clone3 \
+  clone3-Xabbrev \
+  clone3-Xraw \
+  clone3-Xverbose \
+  close_range \
+  close_range-P \
+  close_range-y \
+  close_range-yy \
   copy_file_range \
   creat \
   delete_module \
+  dev--decode-fds-dev \
+  dev--decode-fds-path \
+  dev--decode-fds-socket \
   dev-yy \
   dup \
+  dup-P \
+  dup-y \
+  dup-yy \
   dup2 \
+  dup2-P \
+  dup2-y \
+  dup2-yy \
   dup3 \
+  dup3-P \
+  dup3-y \
+  dup3-yy \
   epoll_create \
   epoll_create1 \
   epoll_ctl \
@@ -43,6 +60,13 @@ PURE_EXECUTABLES = \
   execve \
   execveat \
   faccessat \
+  faccessat-P \
+  faccessat-y \
+  faccessat-yy \
+  faccessat2 \
+  faccessat2-P \
+  faccessat2-y \
+  faccessat2-yy \
   fadvise64 \
   fadvise64_64 \
   fallocate \
@@ -65,6 +89,12 @@ PURE_EXECUTABLES = \
   file_ioctl \
   finit_module \
   flock \
+  fsconfig \
+  fsconfig-P \
+  fsmount \
+  fsopen \
+  fspick \
+  fspick-P \
   fstat \
   fstat-Xabbrev \
   fstat-Xraw \
@@ -85,7 +115,9 @@ PURE_EXECUTABLES = \
   getcpu \
   getcwd \
   getdents \
+  getdents-v \
   getdents64 \
+  getdents64-v \
   getegid \
   getegid32 \
   geteuid \
@@ -109,12 +141,17 @@ PURE_EXECUTABLES = \
   getsockname \
   getuid \
   getuid32 \
-  getxxid \
+  getxgid \
+  getxpid \
+  getxuid \
   group_req \
   inet-cmsg \
   init_module \
   inotify \
+  inotify_init \
+  inotify_init-y \
   inotify_init1 \
+  inotify_init1-y \
   io_uring_enter \
   io_uring_register \
   io_uring_setup \
@@ -122,6 +159,21 @@ PURE_EXECUTABLES = \
   ioctl_block \
   ioctl_dm \
   ioctl_evdev \
+  ioctl_evdev-Xabbrev \
+  ioctl_evdev-Xraw \
+  ioctl_evdev-Xverbose \
+  ioctl_evdev-v \
+  ioctl_evdev-v-Xabbrev \
+  ioctl_evdev-v-Xraw \
+  ioctl_evdev-v-Xverbose \
+  ioctl_hdio \
+  ioctl_hdio-Xabbrev \
+  ioctl_hdio-Xraw \
+  ioctl_hdio-Xverbose \
+  ioctl_hdio-v \
+  ioctl_hdio-v-Xabbrev \
+  ioctl_hdio-v-Xraw \
+  ioctl_hdio-v-Xverbose \
   ioctl_inotify \
   ioctl_kvm_run \
   ioctl_kvm_run-v \
@@ -137,8 +189,17 @@ PURE_EXECUTABLES = \
   ioctl_sg_io_v3 \
   ioctl_sg_io_v4 \
   ioctl_sock_gifconf \
+  ioctl_tee \
   ioctl_uffdio \
   ioctl_v4l2 \
+  ioctl_v4l2-Xabbrev \
+  ioctl_v4l2-Xraw \
+  ioctl_v4l2-Xverbose \
+  ioctl_v4l2-v \
+  ioctl_v4l2-v-Xabbrev \
+  ioctl_v4l2-v-Xraw \
+  ioctl_v4l2-v-Xverbose \
+  ioctl_watchdog \
   ioperm \
   iopl \
   ioprio \
@@ -187,7 +248,12 @@ PURE_EXECUTABLES = \
   lstat \
   lstat64 \
   madvise \
+  maybe_switch_current_tcp \
+  maybe_switch_current_tcp--quiet-thread-execve \
   mbind \
+  mbind-Xabbrev \
+  mbind-Xraw \
+  mbind-Xverbose \
   membarrier \
   memfd_create \
   memfd_create-Xabbrev \
@@ -217,6 +283,8 @@ PURE_EXECUTABLES = \
   mount-Xabbrev \
   mount-Xraw \
   mount-Xverbose \
+  move_mount \
+  move_mount-P \
   move_pages \
   move_pages-Xabbrev \
   move_pages-Xraw \
@@ -229,6 +297,10 @@ PURE_EXECUTABLES = \
   msg_name \
   munlockall \
   nanosleep \
+  net--decode-fds-dev-netlink \
+  net--decode-fds-none-netlink \
+  net--decode-fds-path-netlink \
+  net--decode-fds-socket-netlink \
   net-icmp_filter \
   net-packet_mreq \
   net-packet_mreq-Xabbrev \
@@ -308,7 +380,19 @@ PURE_EXECUTABLES = \
   oldselect-efault \
   oldstat \
   open \
+  open_tree \
+  open_tree-P \
   openat \
+  openat2 \
+  openat2-Xabbrev \
+  openat2-Xraw \
+  openat2-Xverbose \
+  openat2-v \
+  openat2-v-y \
+  openat2-v-y-Xabbrev \
+  openat2-v-y-Xraw \
+  openat2-v-y-Xverbose \
+  openat2-y \
   osf_utimes \
   pause \
   perf_event_open \
@@ -316,6 +400,16 @@ PURE_EXECUTABLES = \
   personality-Xabbrev \
   personality-Xraw \
   personality-Xverbose \
+  pidfd_getfd \
+  pidfd_getfd-y \
+  pidfd_getfd-yy \
+  pidfd_open \
+  pidfd_open--decode-fd-path \
+  pidfd_open--decode-fd-pidfd \
+  pidfd_open--decode-fd-socket \
+  pidfd_open-P \
+  pidfd_open-y \
+  pidfd_open-yy \
   pidfd_send_signal \
   pipe \
   pipe2 \
@@ -323,9 +417,7 @@ PURE_EXECUTABLES = \
   pkey_free \
   pkey_mprotect \
   poll \
-  poll-P \
   ppoll \
-  ppoll-P \
   prctl-arg2-intptr \
   prctl-dumpable \
   prctl-name \
@@ -367,7 +459,9 @@ PURE_EXECUTABLES = \
   readlinkat \
   readv \
   reboot \
+  recv-MSG_TRUNC \
   recvfrom \
+  recvfrom-MSG_TRUNC \
   recvmmsg-timeout \
   recvmsg \
   remap_file_pages \
@@ -405,9 +499,14 @@ PURE_EXECUTABLES = \
   seccomp_get_action_avail \
   select \
   semop \
+  semop-indirect \
+  semtimedop \
   sendfile \
   sendfile64 \
   set_mempolicy \
+  set_mempolicy-Xabbrev \
+  set_mempolicy-Xraw \
+  set_mempolicy-Xverbose \
   setdomainname \
   setfsgid \
   setfsgid32 \
@@ -465,7 +564,23 @@ PURE_EXECUTABLES = \
   stat64 \
   statfs \
   statfs64 \
+  status-all \
+  status-failed \
+  status-failed-long \
+  status-failed-status \
+  status-none \
+  status-none-f \
+  status-successful \
+  status-successful-long \
+  status-successful-status \
+  status-unfinished \
   statx \
+  strace--strings-in-hex \
+  strace--strings-in-hex-all \
+  strace--strings-in-hex-non-ascii \
+  strace-n \
+  strace-x \
+  strace-xx \
   swap \
   sxetmask \
   symlink \
@@ -476,12 +591,14 @@ PURE_EXECUTABLES = \
   sysinfo \
   syslog \
   tee \
+  tgkill \
   time \
   timer_create \
   timer_xettime \
   timerfd_xettime \
   times \
   times-fail \
+  tkill \
   truncate \
   truncate64 \
   ugetrlimit \
@@ -494,6 +611,8 @@ PURE_EXECUTABLES = \
   umovestr-illptr \
   umovestr2 \
   umovestr3 \
+  umovestr_cached \
+  umovestr_cached_adjacent \
   uname \
   unlink \
   unlinkat \
index 372252095ff63739c5d08f3a06a7dbc06c556c94..7d0f8495d370170964a3d053ad0083f3df643919 100755 (executable)
@@ -1,6 +1,6 @@
 # Executables without side effects.
 #
-# Copyright (c) 2017-2019 The strace developers.
+# Copyright (c) 2017-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -16,10 +16,6 @@ aio
 aio_pgetevents
 alarm
 bpf
-bpf-obj_get_info_by_fd
-bpf-obj_get_info_by_fd-prog
-bpf-obj_get_info_by_fd-prog-v
-bpf-obj_get_info_by_fd-v
 bpf-v
 brk
 btrfs
@@ -31,13 +27,34 @@ chroot
 clock_adjtime
 clock_nanosleep
 clock_xettime
+clone-flags
+clone3
+clone3-Xabbrev
+clone3-Xraw
+clone3-Xverbose
+close_range
+close_range-P
+close_range-y
+close_range-yy
 copy_file_range
 creat
 delete_module
+dev--decode-fds-dev
+dev--decode-fds-path
+dev--decode-fds-socket
 dev-yy
 dup
+dup-P
+dup-y
+dup-yy
 dup2
+dup2-P
+dup2-y
+dup2-yy
 dup3
+dup3-P
+dup3-y
+dup3-yy
 epoll_create
 epoll_create1
 epoll_ctl
@@ -48,6 +65,13 @@ eventfd
 execve
 execveat
 faccessat
+faccessat-P
+faccessat-y
+faccessat-yy
+faccessat2
+faccessat2-P
+faccessat2-y
+faccessat2-yy
 fadvise64
 fadvise64_64
 fallocate
@@ -70,6 +94,12 @@ file_handle
 file_ioctl
 finit_module
 flock
+fsconfig
+fsconfig-P
+fsmount
+fsopen
+fspick
+fspick-P
 fstat
 fstat-Xabbrev
 fstat-Xraw
@@ -90,7 +120,9 @@ get_mempolicy
 getcpu
 getcwd
 getdents
+getdents-v
 getdents64
+getdents64-v
 getegid
 getegid32
 geteuid
@@ -114,12 +146,17 @@ getsid
 getsockname
 getuid
 getuid32
-getxxid
+getxgid
+getxpid
+getxuid
 group_req
 inet-cmsg
 init_module
 inotify
+inotify_init
+inotify_init-y
 inotify_init1
+inotify_init1-y
 io_uring_enter
 io_uring_register
 io_uring_setup
@@ -127,6 +164,21 @@ ioctl
 ioctl_block
 ioctl_dm
 ioctl_evdev
+ioctl_evdev-Xabbrev
+ioctl_evdev-Xraw
+ioctl_evdev-Xverbose
+ioctl_evdev-v
+ioctl_evdev-v-Xabbrev
+ioctl_evdev-v-Xraw
+ioctl_evdev-v-Xverbose
+ioctl_hdio
+ioctl_hdio-Xabbrev
+ioctl_hdio-Xraw
+ioctl_hdio-Xverbose
+ioctl_hdio-v
+ioctl_hdio-v-Xabbrev
+ioctl_hdio-v-Xraw
+ioctl_hdio-v-Xverbose
 ioctl_inotify
 ioctl_kvm_run
 ioctl_kvm_run-v
@@ -142,8 +194,17 @@ ioctl_scsi
 ioctl_sg_io_v3
 ioctl_sg_io_v4
 ioctl_sock_gifconf
+ioctl_tee
 ioctl_uffdio
 ioctl_v4l2
+ioctl_v4l2-Xabbrev
+ioctl_v4l2-Xraw
+ioctl_v4l2-Xverbose
+ioctl_v4l2-v
+ioctl_v4l2-v-Xabbrev
+ioctl_v4l2-v-Xraw
+ioctl_v4l2-v-Xverbose
+ioctl_watchdog
 ioperm
 iopl
 ioprio
@@ -192,7 +253,12 @@ lseek
 lstat
 lstat64
 madvise
+maybe_switch_current_tcp
+maybe_switch_current_tcp--quiet-thread-execve
 mbind
+mbind-Xabbrev
+mbind-Xraw
+mbind-Xverbose
 membarrier
 memfd_create
 memfd_create-Xabbrev
@@ -222,6 +288,8 @@ mount
 mount-Xabbrev
 mount-Xraw
 mount-Xverbose
+move_mount
+move_mount-P
 move_pages
 move_pages-Xabbrev
 move_pages-Xraw
@@ -234,6 +302,10 @@ msg_control
 msg_name
 munlockall
 nanosleep
+net--decode-fds-dev-netlink
+net--decode-fds-none-netlink
+net--decode-fds-path-netlink
+net--decode-fds-socket-netlink
 net-icmp_filter
 net-packet_mreq
 net-packet_mreq-Xabbrev
@@ -313,7 +385,19 @@ oldselect
 oldselect-efault
 oldstat
 open
+open_tree
+open_tree-P
 openat
+openat2
+openat2-Xabbrev
+openat2-Xraw
+openat2-Xverbose
+openat2-v
+openat2-v-y
+openat2-v-y-Xabbrev
+openat2-v-y-Xraw
+openat2-v-y-Xverbose
+openat2-y
 osf_utimes
 pause
 perf_event_open
@@ -321,6 +405,16 @@ personality
 personality-Xabbrev
 personality-Xraw
 personality-Xverbose
+pidfd_getfd
+pidfd_getfd-y
+pidfd_getfd-yy
+pidfd_open
+pidfd_open--decode-fd-path
+pidfd_open--decode-fd-pidfd
+pidfd_open--decode-fd-socket
+pidfd_open-P
+pidfd_open-y
+pidfd_open-yy
 pidfd_send_signal
 pipe
 pipe2
@@ -328,9 +422,7 @@ pkey_alloc
 pkey_free
 pkey_mprotect
 poll
-poll-P
 ppoll
-ppoll-P
 prctl-arg2-intptr
 prctl-dumpable
 prctl-name
@@ -372,7 +464,9 @@ readlink
 readlinkat
 readv
 reboot
+recv-MSG_TRUNC
 recvfrom
+recvfrom-MSG_TRUNC
 recvmmsg-timeout
 recvmsg
 remap_file_pages
@@ -410,9 +504,14 @@ seccomp-filter
 seccomp_get_action_avail
 select
 semop
+semop-indirect
+semtimedop
 sendfile
 sendfile64
 set_mempolicy
+set_mempolicy-Xabbrev
+set_mempolicy-Xraw
+set_mempolicy-Xverbose
 setdomainname
 setfsgid
 setfsgid32
@@ -470,7 +569,23 @@ stat
 stat64
 statfs
 statfs64
+status-all
+status-failed
+status-failed-long
+status-failed-status
+status-none
+status-none-f
+status-successful
+status-successful-long
+status-successful-status
+status-unfinished
 statx
+strace--strings-in-hex
+strace--strings-in-hex-all
+strace--strings-in-hex-non-ascii
+strace-n
+strace-x
+strace-xx
 swap
 sxetmask
 symlink
@@ -481,12 +596,14 @@ sync_file_range2
 sysinfo
 syslog
 tee
+tgkill
 time
 timer_create
 timer_xettime
 timerfd_xettime
 times
 times-fail
+tkill
 truncate
 truncate64
 ugetrlimit
@@ -499,6 +616,8 @@ umovestr
 umovestr-illptr
 umovestr2
 umovestr3
+umovestr_cached
+umovestr_cached_adjacent
 uname
 unlink
 unlinkat
index c4fd27bf13bd0474b071bea8cb7a8793f27dd5ee..fe5eca5b9dc29b3c4d6de3a819c63ae2205466da 100755 (executable)
@@ -3,6 +3,7 @@
 # Check -e fault= syntax.
 #
 # Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2017-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -72,6 +73,27 @@ for arg in chdir:42 \!chdir:42 \
           chdir:syscall=-42 \
           chdir:syscall=42 \
           chdir:syscall=gettid:syscall=gettid \
+          chdir:when=. \
+          chdir:when=.+ \
+          chdir:when=..+ \
+          chdir:when=+ \
+          chdir:when=++ \
+          chdir:when=10. \
+          chdir:when=11.12 \
+          chdir:when=13.14+ \
+          chdir:when=15.. \
+          chdir:when=16... \
+          chdir:when=17...18 \
+          chdir:when=.19 \
+          chdir:when=..20 \
+          chdir:when=..21+ \
+          chdir:when=..22+3 \
+          chdir:when=24..23 \
+          chdir:when=25..26+0 \
+          chdir:when=27..65535 \
+          chdir:when=28..65535+ \
+          chdir:when=65535..65535 \
+          chdir:when=65535..65535+ \
           ; do
        $STRACE -e fault="$arg" true 2> "$LOG" &&
                fail_with "$arg"
index 63bbade0b9097e762c9ae2801add7f5be7ecfc07..580d29135c1ae516c9ce011762227f3d46ebafb5 100644 (file)
@@ -2,7 +2,7 @@
  * Check that fault injection works properly.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -29,7 +29,7 @@ static int out_fd;
 #define DEFAULT_ERRNO ENOSYS
 
 static const char *errstr;
-static int is_raw, err, first, step, iter, try;
+static int is_raw, err, first, last, step, iter, try;
 
 static void
 invoke(int fail)
@@ -99,7 +99,7 @@ open_file(const char *prefix, int proc)
 int
 main(int argc, char *argv[])
 {
-       assert(argc == 11);
+       assert(argc == 12);
 
        is_raw = !strcmp("raw", argv[1]);
 
@@ -120,13 +120,14 @@ main(int argc, char *argv[])
        errstr = errno2name();
 
        first = atoi(argv[3]);
-       step = atoi(argv[4]);
-       iter = atoi(argv[5]);
-       int num_procs = atoi(argv[6]);
-       char *exp_prefix = argv[7];
-       char *got_prefix = argv[8];
-       char *out_prefix = argv[9];
-       char *pid_prefix = argv[10];
+       last = atoi(argv[4]);
+       step = atoi(argv[5]);
+       iter = atoi(argv[6]);
+       int num_procs = atoi(argv[7]);
+       char *exp_prefix = argv[8];
+       char *got_prefix = argv[9];
+       char *out_prefix = argv[10];
+       char *pid_prefix = argv[11];
 
        assert(first > 0);
        assert(step >= 0);
@@ -164,8 +165,10 @@ main(int argc, char *argv[])
                int i;
                for (i = 1; i <= iter; ++i) {
                        int fail = 0;
-                       if (first > 0) {
+                       if (last != 0) {
                                --first;
+                               if (last != -1)
+                                       --last;
                                if (first == 0) {
                                        fail = 1;
                                        first = step;
index 497e35ea1533eca04c10ab1bbf54ce82e6d4d0f4..f054ed4920ce1b6b59267df4a60ea2c46df9cf23 100755 (executable)
@@ -3,7 +3,7 @@
 # Check that fault injection works properly.
 #
 # Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -22,24 +22,32 @@ N=100
 
 check_fault_injection()
 {
-       local trace fault err first step procs extra
+       local trace fault err first last step procs extra
        trace=$1; shift
        fault=$1; shift
        err=$1; shift
        first=$1; shift
+       last=$1; shift
        step=$1; shift
        procs=$1; shift
        extra="$*"
 
        local when=
-       if [ -z "$first$step" ]; then
+       if [ -z "$first$last$step" ]; then
                first=1
+               last=-1
                step=1
+       elif [ -z "$last" ]; then
+               case "$step" in
+                       '') when=":when=$first"; step=1; last=$first ;;
+                       +) when=":when=$first+"; step=1; last=-1 ;;
+                       *) when=":when=$first+$step"; last=-1; ;;
+               esac
        else
                case "$step" in
-                       '') when=":when=$first"; step=0 ;;
-                       +) when=":when=$first+"; step=1 ;;
-                       *) when=":when=$first+$step" ;;
+                       '') when=":when=${first}..${last}"; step=1 ;;
+                       +) when=":when=${first}..${last}+"; step=1 ;;
+                       *) when=":when=${first}..${last}+${step}" ;;
                esac
        fi
 
@@ -63,7 +71,7 @@ check_fault_injection()
 
        run_strace -a11 -ff -e trace=$trace \
                "$@" -e fault=$fault$when$error$suffix $extra \
-               ../$NAME $raw "$err" "$first" "$step" $N \
+               ../$NAME $raw "$err" "$first" "$last" "$step" $N \
                "$procs" "$outexp" "$outgot" "$outout" "$outpid"
 
        for i in $(seq 0 $((procs - 1)) )
@@ -78,19 +86,37 @@ check_fault_injection()
 for err in '' ENOSYS 22 einval; do
        for fault in writev desc,51; do
                check_fault_injection \
-                       writev $fault "$err" '' '' 1 -efault=chdir
+                       writev $fault "$err" '' '' '' 1 -efault=chdir
                check_fault_injection \
-                       writev $fault "$err" '' '' 1 -efault=chdir -efault=none
+                       writev $fault "$err" '' '' '' 1 -efault=chdir -efault=none
                for F in 1 2 3 5 7 11; do
                        check_fault_injection \
-                               writev $fault "$err" $F '' 1
+                               writev $fault "$err" $F '' '' 1
                        check_fault_injection \
-                               writev $fault "$err" $F + 1
+                               writev $fault "$err" $F '' + 1
+
+                       for L in 1 2 3 5 7 11; do
+                               [ "$L" -ge "$F" ] ||
+                                       continue
+                               check_fault_injection \
+                                       writev $fault "$err" $F $L '' 1
+                               check_fault_injection \
+                                       writev $fault "$err" $F $L + 1
+                       done
+
                        for S in 1 2 3 5 7 11; do
                                check_fault_injection \
-                                       writev $fault "$err" $F $S 1
+                                       writev $fault "$err" $F '' $S 1
                                check_fault_injection \
-                                       writev $fault "$err" $F $S 4
+                                       writev $fault "$err" $F '' $S 4
+                               for L in 1 2 3 5 7 11; do
+                                       [ "$L" -ge "$F" ] ||
+                                               continue
+                                       check_fault_injection \
+                                               writev $fault "$err" $F $L $S 1
+                                       check_fault_injection \
+                                               writev $fault "$err" $F $L $S 4
+                               done
                        done
                done
        done
index 4c89d78a3f920053c46eaaf99615118a1f312842..a9a8afc80764549e97d057f7aa8e75304b5994c2 100644 (file)
@@ -2,6 +2,7 @@
  * Check fault injection along with signal injection.
  *
  * Copyright (c) 2017-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -11,7 +12,7 @@
 #include <signal.h>
 #include <unistd.h>
 #include <sys/stat.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 static struct stat before, after;
 
index 16419a4939c88c3569c2a069feca187292b7c56e..1e657a734dd8d6e196ddb6d0ec079f08771963d6 100644 (file)
@@ -2,14 +2,14 @@
  * Check success injection.
  *
  * Copyright (c) 2017 Elvira Khabirova <lineprinter0@gmail.com>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_chdir
 
index c09b8322f8d9b1d73104f62ceae26a4d7c870486..03bc0331e8e91b2bae4f45747307298e2c0b6d5c 100644 (file)
@@ -2,6 +2,7 @@
  * Check that signal injection works properly.
  *
  * Copyright (c) 2017-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +11,7 @@
 #include "tests.h"
 #include <signal.h>
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 static void
 handler(int sig)
index 53245345e0e753e33234ca812eccd1b3eef329e3..c513fe12ec736ed612d1330a03b7451e240aa879 100755 (executable)
@@ -3,6 +3,7 @@
 # Check -e inject= syntax.
 #
 # Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2017-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -88,6 +89,27 @@ for arg in 42 chdir \
           chdir:syscall=-42 \
           chdir:syscall=42 \
           chdir:syscall=gettid:syscall=gettid \
+          chdir:when=. \
+          chdir:when=.+ \
+          chdir:when=..+ \
+          chdir:when=+ \
+          chdir:when=++ \
+          chdir:when=10. \
+          chdir:when=11.12 \
+          chdir:when=13.14+ \
+          chdir:when=15.. \
+          chdir:when=16... \
+          chdir:when=17...18 \
+          chdir:when=.19 \
+          chdir:when=..20 \
+          chdir:when=..21+ \
+          chdir:when=..22+3 \
+          chdir:when=24..23 \
+          chdir:when=25..26+0 \
+          chdir:when=27..65535 \
+          chdir:when=28..65535+ \
+          chdir:when=65535..65535 \
+          chdir:when=65535..65535+ \
           ; do
        $STRACE -e inject="$arg" true 2> "$LOG" &&
                fail_with "$arg"
index 8fd2b69d6b7adf6d49cb50b6925f4659b4f0cbd7..aab6a9065f4ce876e42d18bab04486c912fae41e 100755 (executable)
@@ -3,7 +3,7 @@
 # Check how strace -e signal=set works.
 #
 # Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -16,8 +16,12 @@ test_one_sig()
        sigs="$1"; shift
 
        run_prog "../$NAME" "$@" > /dev/null
+
        run_strace -e trace=none -e signal="$sigs" "../$NAME" "$@" > "$EXP"
        match_diff "$LOG" "$EXP"
+
+       run_strace --trace=none --signal="$sigs" "../$NAME" "$@" > "$EXP"
+       match_diff "$LOG" "$EXP"
 }
 
 test_sigs()
@@ -86,6 +90,11 @@ for arg in ' ' invalid_signal_name SIG -1 256 1-1 \
                fail_with "$arg"
        LC_ALL=C grep -F 'invalid signal' < "$LOG" > /dev/null ||
                fail_with "$arg"
+
+       $STRACE --signal="$arg" true 2> "$LOG" &&
+               fail_with "$arg"
+       LC_ALL=C grep -F 'invalid signal' < "$LOG" > /dev/null ||
+               fail_with "$arg"
 done
 
 exit 0
index 945fc8c72997e530513701b725e7c98347872e5f..a2882ba4dc3d218902a5cb7989c9206ac1de9276 100755 (executable)
@@ -3,7 +3,7 @@
 # Check how strace -e abbrev=set, -e raw=set, -e trace=set,
 # and -e verbose=set work.
 #
-# Copyright (c) 2014-2018 The strace developers.
+# Copyright (c) 2014-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -28,6 +28,16 @@ check_output_mismatch()
        }
 }
 
+check_execve_output_mismatch()
+{
+       local what how
+       what="$1"; shift
+       how="$1"; shift
+
+       check_output_mismatch "$@" -e "$what=$how" -e execve
+       check_output_mismatch "$@" "--$what=$how" --trace=execve
+}
+
 check_output_mismatch "$pattern_abbrev_verbose" -e execve
 LC_ALL=C grep -v -x "$pattern_abbrev_verbose" "$LOG" |
 LC_ALL=C grep '^[[:alnum:]_]*(' > /dev/null &&
@@ -47,22 +57,16 @@ LC_ALL=C grep '^[[:alnum:]_]*(' "$LOG" > /dev/null &&
 
 for a in execve \!chdir /. all \!none \
         file process \!desc \!ipc \!memory \!network \!signal; do
-       check_output_mismatch \
-               "$pattern_abbrev_verbose" -e abbrev="$a" -e execve
-       check_output_mismatch \
-               "$pattern_raw" -a22 -e raw="$a" -e execve
-       check_output_mismatch \
-               "$pattern_abbrev_verbose" -e verbose="$a" -e execve
+       check_execve_output_mismatch abbrev "$a" "$pattern_abbrev_verbose"
+       check_execve_output_mismatch raw "$a" "$pattern_raw"
+       check_execve_output_mismatch verbose "$a" "$pattern_abbrev_verbose"
 done
 
 for a in \!execve chdir 42 \!all none \
         \!file \!process desc ipc memory network signal; do
-       check_output_mismatch \
-               "$pattern_nonabbrev_verbose" -e abbrev="$a" -e execve
-       check_output_mismatch \
-               "$pattern_abbrev_verbose" -e raw="$a" -e execve
-       check_output_mismatch \
-               "$pattern_nonverbose" -a31 -e verbose="$a" -e execve
+       check_execve_output_mismatch abbrev "$a" "$pattern_nonabbrev_verbose"
+       check_execve_output_mismatch raw "$a" "$pattern_abbrev_verbose"
+       check_execve_output_mismatch verbose "$a" "$pattern_nonverbose" --columns=31
 done
 
 exit 0
index d57314fc7672877a8b15a5b75566f781bcd374bf..e2677f58d8f514f72375beeed816ae2cc91b20f5 100644 (file)
@@ -2,7 +2,7 @@
 #
 # Common code for per-personality qualification tests
 #
-# Copyright (c) 2018 The strace developers.
+# Copyright (c) 2018-2019 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -25,7 +25,7 @@ x86_64)
 x32)
        supported_pers='x32 32'
        ;;
-aarch64|powerpc64|riscv|s390x|sparc64|tile)
+aarch64|powerpc64|s390x|sparc64|tile)
        supported_pers='64 32'
        ;;
 *)
index 1fae566de07f4b929167ed5d2ca27869ef4777ea..0708e2a301bc0c73a34374b77b349a3c07c077e3 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -11,7 +11,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined(__NR_quotactl) && \
        (defined(HAVE_LINUX_QUOTA_H) || defined(HAVE_SYS_QUOTA_H)) && \
index 3a9952766ef6e45d3b4f784e3653dcc5d4ad9e20..fd45557997af3254588e9618b0031f3dacb511a0 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -11,7 +11,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined(__NR_quotactl) && \
        (defined(HAVE_LINUX_QUOTA_H) || defined(HAVE_SYS_QUOTA_H))
index 0217670b96a7510a0e693cbc79fb32c97556a1da..27df009d14aaa547b3b9d16e14f18a212d655af1 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding and dumping of read and write syscalls.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2019 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -14,7 +14,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 static void
 dump_str_ex(const char *str, const unsigned int len, const int idx_w)
@@ -153,9 +153,17 @@ main(void)
        skip_if_unavailable("/proc/self/fd/");
 
        static const char tmp[] = "read-write-tmpfile";
-       if (open(tmp, O_CREAT|O_RDONLY|O_TRUNC, 0600) != 0)
+       bool need_cleanup = true;
+       long rc;
+
+       rc = open(tmp, O_RDONLY, 0600);
+       if (rc < 0) {
+               rc = open(tmp, O_CREAT|O_EXCL|O_RDONLY, 0600);
+               need_cleanup = false;
+       }
+       if (rc != 0)
                perror_msg_and_fail("creat: %s", tmp);
-       if (open(tmp, O_WRONLY) != 1)
+       if (open(tmp, O_TRUNC|O_WRONLY) != 1)
                perror_msg_and_fail("open: %s", tmp);
 
        static const char w_c[] = "0123456789abcde";
@@ -175,8 +183,6 @@ main(void)
 
        void *efault = r1 - get_page_size();
 
-       long rc;
-
        rc = k_write(1, w, 0);
        if (rc)
                perror_msg_and_fail("write: expected 0, returned %ld", rc);
@@ -270,9 +276,11 @@ main(void)
        if (open("/dev/null", O_WRONLY) != 1)
                perror_msg_and_fail("open");
 
+       (void) close(4);
        if (open("/dev/zero", O_RDONLY) != 4)
                perror_msg_and_fail("open");
 
+       (void) close(5);
        if (open("/dev/null", O_WRONLY) != 5)
                perror_msg_and_fail("open");
 
@@ -282,6 +290,9 @@ main(void)
 
        test_dump(256, true);
 
+       if (need_cleanup && unlink(tmp))
+               perror_msg_and_fail("unlink: %s", tmp);
+
        tprintf("+++ exited with 0 +++\n");
        return 0;
 }
index 1b21fe5960492febc3921b31196c6a9cdae27c88..bcd33e0c42a07e2c17bd93b138232806c4417292 100644 (file)
@@ -1,34 +1,30 @@
 /*
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef HAVE_READAHEAD
 /* Check for glibc readahead argument passing bugs. */
-# ifdef __GLIBC__
 /*
  * glibc < 2.8 had an incorrect order of higher and lower parts of offset,
  * see https://sourceware.org/bugzilla/show_bug.cgi?id=5208
  */
-#  if !(defined __GLIBC_MINOR__ && \
-       (__GLIBC__ << 16) + __GLIBC_MINOR__ >= (2 << 16) + 8)
-#   undef HAVE_READAHEAD
-#  endif /* glibc < 2.8 */
+# if GLIBC_PREREQ_LT(2, 8)
+#  undef HAVE_READAHEAD
+# endif /* glibc < 2.8 */
 /*
  * glibc < 2.25 had an incorrect implementation on mips n64,
  * see https://sourceware.org/bugzilla/show_bug.cgi?id=21026
  */
-#  if defined LINUX_MIPSN64 && !(defined __GLIBC_MINOR__ && \
-       (__GLIBC__ << 16) + __GLIBC_MINOR__ >= (2 << 16) + 25)
-#   undef HAVE_READAHEAD
-#  endif /* LINUX_MIPSN64 && glibc < 2.25 */
-# endif /* __GLIBC__ */
+# if GLIBC_PREREQ_LT(2, 25) && defined LINUX_MIPSN64
+#  undef HAVE_READAHEAD
+# endif /* LINUX_MIPSN64 && glibc < 2.25 */
 #endif /* HAVE_READAHEAD */
 
 #ifdef HAVE_READAHEAD
index 284c221ec303a5c074ae763c9e956d6e40bc3d71..709b4f31a0362b53582698957656ac9beed09bba 100644 (file)
@@ -1,13 +1,13 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_readdir
 
index c2a9b22c6dc706f521a48f6e6685f0056347554d..a140794acc9cc2bb9eb9079862d2397524858fdf 100644 (file)
@@ -1,13 +1,14 @@
 /*
  * Copyright (c) 2015 Gleb Fotengauer-Malinovskiy <glebfm@altlinux.org>
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_readlink
 
index 6909ac0b88c4d837b6637a224841921fe9728143..50534570ca278a4b60d480c288324397ace1a5d9 100644 (file)
@@ -1,13 +1,14 @@
 /*
  * Copyright (c) 2015 Gleb Fotengauer-Malinovskiy <glebfm@altlinux.org>
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_readlinkat
 
index 8bc9c6b0957a91965aebba14b514f7f3ab461d94..0b22ee9f8b9ffe57f3ff43a32858aec45165cfa8 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_reboot
 
diff --git a/tests-mx32/recv-MSG_TRUNC.c b/tests-mx32/recv-MSG_TRUNC.c
new file mode 100644 (file)
index 0000000..ee9ea63
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+ * Check decoding of recv MSG_TRUNC.
+ *
+ * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <errno.h>
+#include <stdio.h>
+#include <sys/socket.h>
+#include "scno.h"
+
+#ifndef __NR_recv
+# define __NR_recv -1
+#endif
+#define SC_recv 10
+
+static int
+sys_recv(int sockfd, const void *buf, unsigned int len, int flags)
+{
+       int rc = socketcall(__NR_recv, SC_recv,
+                           sockfd, (long) buf, len, flags, 0);
+       if (rc < 0 && ENOSYS == errno)
+               perror_msg_and_skip("recv");
+       return rc;
+}
+
+int
+main(void)
+{
+       static const char sbuf[2] = "AB";
+       int sv[2];
+       TAIL_ALLOC_OBJECT_CONST_PTR(char, rbuf);
+
+       if (socketpair(AF_UNIX, SOCK_DGRAM, 0, sv))
+               perror_msg_and_skip("socketpair");
+
+       if (send(sv[1], sbuf + 1, 1, 0) != 1)
+                perror_msg_and_skip("send");
+       if (sys_recv(sv[0], rbuf - 1, 2, MSG_PEEK) != 1)
+               perror_msg_and_fail("recv");
+       printf("recv(%d, \"B\", 2, MSG_PEEK) = 1\n", sv[0]);
+
+       if (sys_recv(sv[0], rbuf, 1, MSG_TRUNC) != 1)
+               perror_msg_and_skip("recv");
+       printf("recv(%d, \"B\", 1, MSG_TRUNC) = 1\n", sv[0]);
+
+       if (send(sv[1], sbuf, 2, 0) != 2)
+                perror_msg_and_skip("send");
+       if (sys_recv(sv[0], rbuf, 1, MSG_TRUNC) != 2)
+               perror_msg_and_skip("recv");
+       printf("recv(%d, \"A\", 1, MSG_TRUNC) = 2\n", sv[0]);
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
diff --git a/tests-mx32/recv-MSG_TRUNC.gen.test b/tests-mx32/recv-MSG_TRUNC.gen.test
new file mode 100755 (executable)
index 0000000..07f112b
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (recv-MSG_TRUNC -a26 -e trace=recv); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a26 -e trace=recv
diff --git a/tests-mx32/recvfrom-MSG_TRUNC.c b/tests-mx32/recvfrom-MSG_TRUNC.c
new file mode 100644 (file)
index 0000000..b8ef378
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Check decoding of recvfrom MSG_TRUNC.
+ *
+ * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <stdio.h>
+#include <sys/socket.h>
+
+int
+main(void)
+{
+       static const char sbuf[2] = "AB";
+       int sv[2];
+       TAIL_ALLOC_OBJECT_CONST_PTR(char, rbuf);
+
+       if (socketpair(AF_UNIX, SOCK_DGRAM, 0, sv))
+               perror_msg_and_skip("socketpair");
+
+       if (send(sv[1], sbuf + 1, 1, 0) != 1)
+                perror_msg_and_skip("send");
+       if (recvfrom(sv[0], rbuf - 1, 2, MSG_PEEK, NULL, NULL) != 1)
+               perror_msg_and_fail("recvfrom");
+       printf("recvfrom(%d, \"B\", 2, MSG_PEEK, NULL, NULL) = 1\n", sv[0]);
+
+       if (recvfrom(sv[0], rbuf, 1, MSG_TRUNC, NULL, NULL) != 1)
+               perror_msg_and_skip("recvfrom");
+       printf("recvfrom(%d, \"B\", 1, MSG_TRUNC, NULL, NULL) = 1\n", sv[0]);
+
+       if (send(sv[1], sbuf, 2, 0) != 2)
+                perror_msg_and_skip("send");
+       if (recvfrom(sv[0], rbuf, 1, MSG_TRUNC, NULL, NULL) != 2)
+               perror_msg_and_skip("recvfrom");
+       printf("recvfrom(%d, \"A\", 1, MSG_TRUNC, NULL, NULL) = 2\n", sv[0]);
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
diff --git a/tests-mx32/recvfrom-MSG_TRUNC.gen.test b/tests-mx32/recvfrom-MSG_TRUNC.gen.test
new file mode 100755 (executable)
index 0000000..e27f52d
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (recvfrom-MSG_TRUNC -e trace=recvfrom); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=recvfrom
index ebf91bec23cbf4f5324cf80acd4d8cf7508bd655..c98052c8f7a3f466653184c1eec4d943a66fc6f8 100755 (executable)
@@ -3,7 +3,7 @@
 # Ensure that strace does not retain stdin and stdout descriptors.
 #
 # Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -16,42 +16,34 @@ run_prog_skip_if_failed \
 check_prog sleep
 check_prog yes
 
+SLEEP_3_BITS="$SLEEP_A_BIT; $SLEEP_A_BIT; $SLEEP_A_BIT"
 > "$OUT"
-> "$LOG"
+
+> lock1
+> lock2
 (
-       while [ -f "$LOG" ]; do
-               :
+       while [ -f lock1 ]; do
+               $SLEEP_A_BIT
        done
-       $SLEEP_A_BIT &
        yes
-       if kill -0 $! 2> /dev/null; then
-               wait
-       else
-               echo TIMEOUT >> "$OUT"
-       fi
+       [ -f lock2 ] ||
+               printf ' input' >> "$OUT"
 ) | $STRACE -qq -enone -esignal=none \
-       sh -c "exec <&- >&-; rm -f -- $LOG; $SLEEP_A_BIT; $SLEEP_A_BIT"
-
-if [ -s "$OUT" ]; then
-       fail_ "$STRACE failed to redirect standard input"
-fi
+       sh -c "exec <&- >&-; rm -f lock1; $SLEEP_3_BITS; rm -f lock2"
 
-> "$LOG"
+> lock1
+> lock2
 $STRACE -qq -enone -esignal=none \
-       sh -c "exec <&- >&-; rm -f -- $LOG; $SLEEP_A_BIT; $SLEEP_A_BIT" |
+       sh -c "exec <&- >&-; rm -f lock1; $SLEEP_3_BITS; rm -f lock2" |
 (
-       while [ -f "$LOG" ]; do
-               :
+       while [ -f lock1 ]; do
+               $SLEEP_A_BIT
        done
-       $SLEEP_A_BIT &
        cat > /dev/null
-       if kill -0 $! 2> /dev/null; then
-               wait
-       else
-               echo TIMEOUT >> "$OUT"
-       fi
+       [ -f lock2 ] ||
+               printf ' output' >> "$OUT"
 )
 
 if [ -s "$OUT" ]; then
-       fail_ "$STRACE failed to redirect standard output"
+       fail_ "$STRACE failed to redirect standard descriptors:$(cat "$OUT")"
 fi
index 2a2bfc6e9b57f72dfaca33973f9d111fa8aad057..7e43926e4e8297c895c322e4a50bacf7dbbbb6a4 100644 (file)
@@ -2,14 +2,13 @@
  * Check decoding of remap_file_pages syscall.
  *
  * Copyright (c) 2016-2017 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
 #include "scno.h"
 
 #ifdef __NR_remap_file_pages
@@ -77,11 +76,17 @@ main(void)
        k_remap_file_pages(addr, size, prot, pgoff, flags);
 
 /*
- * HP PA-RISC is the only architecture that has MAP_TYPE defined to 0x3, which
- * is also used for MAP_SHARED_VALIDATE since Linux commit v4.15-rc1~71^2^2~23.
+ * HP PA-RISC is the only architecture that has MAP_TYPE defined to something
+ * different.  For example, before commit v4.17-rc1~146^2~9 it was defined to
+ * 0x3 which is also used for MAP_SHARED_VALIDATE since Linux commit
+ * v4.15-rc1~71^2^2~23.
  */
 #  ifdef __hppa__
-#   define MAP_TYPE_str "MAP_SHARED_VALIDATE"
+#   if MAP_TYPE == 0x03
+#    define MAP_TYPE_str "MAP_SHARED_VALIDATE"
+#   else
+#    define MAP_TYPE_str "0x2b /* MAP_??? */"
+#   endif
 #  else
 #   define MAP_TYPE_str "0xf /* MAP_??? */"
 #  endif
index 3d77573ce7a1b36ceaf3667e09752ed1e9a69338..ccd65b410405ee79746cf76551f77ebd96f91a49 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_rename
 
index 7f11893f116e30c67cee1977a886dceed62386bc..8c648cd396a3865bc4660c5684379dc195d38663 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_renameat
 
index 663c0638fd6b52a8f7facc4f551172bfc5529b8d..548490cdef6d5d76343c7a974ebef87bf4213203 100644 (file)
@@ -2,13 +2,13 @@
  * Check decoding of renameat2 syscall.
  *
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
 #include "scno.h"
 
 #ifdef __NR_renameat2
index 20ae12f6bd98772ea3b6e2bb973c853a925302d8..2ea9a7bd461339b49713ce68e225363f867fb68a 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of request_key syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_request_key
 
index 9a8f7e3a9c166449a3181808270749bb0f7fe8f3..a42d3b9b732dc93e79da9cb4857b4c405d62a3e6 100644 (file)
@@ -1,19 +1,21 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <assert.h>
 #include <stdio.h>
 #include <stdint.h>
 #include <signal.h>
 #include <time.h>
 #include <sys/time.h>
 
+#define NANOSLEEP_NAME_RE "(nanosleep|clock_nanosleep(_time64)?)"
+#define NANOSLEEP_CALL_RE "(nanosleep\\(|clock_nanosleep(_time64)?\\(CLOCK_REALTIME, 0, )"
+
 int
 main(void)
 {
@@ -27,20 +29,22 @@ main(void)
        const sigset_t set = {};
        const struct sigaction act = { .sa_handler = SIG_IGN };
        const struct itimerval itv = { .it_value.tv_usec = 111111 };
-       struct timespec req = { .tv_nsec = 222222222 }, rem;
+       const struct timespec req = { .tv_nsec = 222222222 };
+       struct timespec rem = { 0xdefaced, 0xdefaced };
 
-       assert(sigaction(SIGALRM, &act, NULL) == 0);
-       assert(sigprocmask(SIG_SETMASK, &set, NULL) == 0);
+       if (sigaction(SIGALRM, &act, NULL))
+               perror_msg_and_fail("sigaction");
+       if (sigprocmask(SIG_SETMASK, &set, NULL))
+               perror_msg_and_fail("sigprocmask");
        if (setitimer(ITIMER_REAL, &itv, NULL))
                perror_msg_and_skip("setitimer");
        if (nanosleep(&req, &rem))
                perror_msg_and_fail("nanosleep");
 
-       printf("nanosleep\\(\\{tv_sec=%lld, tv_nsec=%llu\\}"
-              ", \\{tv_sec=%lld, tv_nsec=%llu\\}\\)"
+       printf("%s\\{tv_sec=0, tv_nsec=[0-9]+\\}"
+              ", \\{tv_sec=[0-9]+, tv_nsec=[0-9]+\\}\\)"
               " = \\? ERESTART_RESTARTBLOCK \\(Interrupted by signal\\)\n",
-              (long long) req.tv_sec, zero_extend_signed_to_ull(req.tv_nsec),
-              (long long) rem.tv_sec, zero_extend_signed_to_ull(rem.tv_nsec));
+              NANOSLEEP_CALL_RE);
        puts("--- SIGALRM \\{si_signo=SIGALRM, si_code=SI_KERNEL\\} ---");
 # ifdef __arm__
 /* old kernels used to overwrite ARM_r0 with -EINTR */
@@ -48,12 +52,12 @@ main(void)
 # else
 #  define ALTERNATIVE_NANOSLEEP_REQ ""
 # endif
-       printf("(nanosleep\\((%s\\{tv_sec=%lld, tv_nsec=%llu\\})"
-              ", %p|restart_syscall\\(<\\.\\.\\."
-              " resuming interrupted nanosleep \\.\\.\\.>)\\) = 0\n",
+       printf("(%s(%s\\{tv_sec=0, tv_nsec=[0-9]+\\})"
+              ", 0x[[:xdigit:]]+|restart_syscall\\(<\\.\\.\\."
+              " resuming interrupted %s \\.\\.\\.>)\\) = 0\n",
+              NANOSLEEP_CALL_RE,
               ALTERNATIVE_NANOSLEEP_REQ,
-              (long long) req.tv_sec, zero_extend_signed_to_ull(req.tv_nsec),
-              &rem);
+              NANOSLEEP_NAME_RE);
 
        puts("\\+\\+\\+ exited with 0 \\+\\+\\+");
        return 0;
index 8dde6684f0d69c954511af7269fb18ad6c953f3c..5c433fda04a9e0d54525d71a9bc7c977283537bc 100755 (executable)
@@ -2,7 +2,7 @@
 #
 # Check how "resuming interrupted nanosleep" works.
 #
-# Copyright (c) 2015-2018 The strace developers.
+# Copyright (c) 2015-2019 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,6 +10,6 @@
 . "${srcdir=.}/init.sh"
 
 run_prog > /dev/null
-syscalls=nanosleep,restart_syscall
+syscalls=restart_syscall,/nanosleep
 run_strace -a20 -e trace=$syscalls $args > "$EXP"
 match_grep "$LOG" "$EXP"
index 27abf75b4f91b9c3af34dda8af0892e1b8b111b6..645644c8c6434dec9e539c78cad4c3e4c1dd1730 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Check decoding of riscv_flush_icache syscall.
  *
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -9,7 +9,6 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
 
 #include "scno.h"
 
index 505303ad2db017ab2b82ae572deba313fc69d4e2..670f741d0881a179000866d3b38dcb4ea8d0b7a9 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_rmdir
 
index 06b15db207df851b0887a2d9a7273278d707e8b8..29954bad70bf6f637bac3614b5e1f0339b7ef779 100644 (file)
@@ -2,14 +2,14 @@
  * This file is part of rt_sigpending strace test.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_rt_sigpending
 
index e6f513da6959d90f53e04c2ebecea8d94b69fe70..599f28311320d562d8f7139e5b32c046c467a927 100644 (file)
@@ -2,14 +2,14 @@
  * This file is part of rt_sigprocmask strace test.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_rt_sigprocmask
 
diff --git a/tests-mx32/rt_sigqueueinfo--pidns-translation.c b/tests-mx32/rt_sigqueueinfo--pidns-translation.c
new file mode 100644 (file)
index 0000000..74bfb46
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "rt_sigqueueinfo.c"
diff --git a/tests-mx32/rt_sigqueueinfo--pidns-translation.gen.test b/tests-mx32/rt_sigqueueinfo--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..ef490b5
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_sigqueueinfo--pidns-translation test_pidns -esignal=none -e trace=rt_sigqueueinfo); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -esignal=none -e trace=rt_sigqueueinfo
index 0455dd408682ed224c140865190dd4d60e88a1d9..e22e4640350a5164731e2cd3a152590e13391a93 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
+#include "pidns.h"
 #include <assert.h>
 #include <stdio.h>
 #include <signal.h>
@@ -15,6 +16,8 @@
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        struct sigaction sa = {
                .sa_handler = SIG_IGN
        };
@@ -22,15 +25,19 @@ main(void)
                .sival_ptr = (void *) (unsigned long) 0xdeadbeefbadc0dedULL
        };
        pid_t pid = getpid();
+       const char *pid_str = pidns_pid2str(PT_TGID);
 
        assert(sigaction(SIGUSR1, &sa, NULL) == 0);
        if (sigqueue(pid, SIGUSR1, value))
                perror_msg_and_skip("sigqueue");
-       printf("rt_sigqueueinfo(%u, SIGUSR1, {si_signo=SIGUSR1, "
-               "si_code=SI_QUEUE, si_pid=%u, si_uid=%u, "
+       pidns_print_leader();
+       printf("rt_sigqueueinfo(%d%s, SIGUSR1, {si_signo=SIGUSR1, "
+               "si_code=SI_QUEUE, si_pid=%d%s, si_uid=%u, "
                "si_value={int=%d, ptr=%p}}) = 0\n",
-               pid, pid, getuid(), value.sival_int, value.sival_ptr);
-       printf("+++ exited with 0 +++\n");
+               pid, pid_str, pid, pid_str,
+               getuid(), value.sival_int, value.sival_ptr);
+       pidns_print_leader();
+       puts("+++ exited with 0 +++");
 
        return 0;
 }
index 55ae6239d31788c477f9922d071079dba7c55edb..720e178242761c6a99d51bad33955317b603a0f5 100644 (file)
@@ -2,14 +2,14 @@
  * This file is part of rt_sigsuspend strace test.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_rt_sigsuspend
 
index 56144f527005c41ddaaa53a75d89af4f41ce600b..5ecd9b13e1842a2a5584eede42781cfbd764f167 100644 (file)
@@ -2,14 +2,14 @@
  * This file is part of rt_sigtimedwait strace test.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_rt_sigtimedwait
 
diff --git a/tests-mx32/rt_tgsigqueueinfo--pidns-translation.c b/tests-mx32/rt_tgsigqueueinfo--pidns-translation.c
new file mode 100644 (file)
index 0000000..94396f0
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "rt_tgsigqueueinfo.c"
diff --git a/tests-mx32/rt_tgsigqueueinfo--pidns-translation.gen.test b/tests-mx32/rt_tgsigqueueinfo--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..399b247
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_tgsigqueueinfo--pidns-translation test_pidns -esignal=none -e trace=rt_tgsigqueueinfo); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -esignal=none -e trace=rt_tgsigqueueinfo
index e3ad0e22c1db6035092cd7f311e13befe84dc4b5..21d01cbb99a980c3a0cb7cb27df125457869f904 100644 (file)
@@ -2,16 +2,17 @@
  * This file is part of rt_tgsigqueueinfo strace test.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
+#include "pidns.h"
 
-#ifdef __NR_rt_tgsigqueueinfo
+#if defined __NR_rt_tgsigqueueinfo && defined __NR_gettid
 
 # include <errno.h>
 # include <signal.h>
 # include <unistd.h>
 
 static long
-k_tgsigqueueinfo(const pid_t pid, const int sig, const void *const info)
+k_tgsigqueueinfo(const pid_t tgid, const int tid, const int sig, const void *const info)
 {
        return syscall(__NR_rt_tgsigqueueinfo,
-                      F8ILL_KULONG_MASK | pid,
-                      F8ILL_KULONG_MASK | pid,
+                      F8ILL_KULONG_MASK | tgid,
+                      F8ILL_KULONG_MASK | tid,
                       F8ILL_KULONG_MASK | sig,
                       info);
 }
@@ -32,6 +33,8 @@ k_tgsigqueueinfo(const pid_t pid, const int sig, const void *const info)
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        const struct sigaction sa = {
                .sa_handler = SIG_IGN
        };
@@ -48,17 +51,22 @@ main(void)
        info->si_value.sival_ptr =
                (void *) (unsigned long) 0xdeadbeeffacefeedULL;
 
-       if (k_tgsigqueueinfo(info->si_pid, SIGUSR1, info))
+       if (k_tgsigqueueinfo(getpid(), syscall(__NR_gettid), SIGUSR1, info))
                (errno == ENOSYS ? perror_msg_and_skip : perror_msg_and_fail)(
                        "rt_tgsigqueueinfo");
 
-       printf("rt_tgsigqueueinfo(%u, %u, %s, {si_signo=%s"
-               ", si_code=SI_QUEUE, si_errno=ENOENT, si_pid=%u"
-               ", si_uid=%u, si_value={int=%d, ptr=%p}}) = 0\n",
-               info->si_pid, info->si_pid, "SIGUSR1", "SIGUSR1",
-               info->si_pid, info->si_uid, info->si_value.sival_int,
+       pidns_print_leader();
+       printf("rt_tgsigqueueinfo(%d%s, %d%s, %s, {si_signo=%s"
+               ", si_code=SI_QUEUE, si_errno=ENOENT, si_pid=%d%s"
+               ", si_uid=%d, si_value={int=%d, ptr=%p}}) = 0\n",
+               info->si_pid, pidns_pid2str(PT_TGID),
+               info->si_pid, pidns_pid2str(PT_TID),
+               "SIGUSR1", "SIGUSR1",
+               info->si_pid, pidns_pid2str(PT_TGID),
+               info->si_uid, info->si_value.sival_int,
                info->si_value.sival_ptr);
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
index a84c14136223230bb0aa042ca40ff5b45ac494d8..2a17b02afbd8892f7220fac06a1f00435ed0bbfb 100644 (file)
@@ -1,14 +1,14 @@
 /*
  * Check decoding of s390_guarded_storage syscall.
  *
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_s390_guarded_storage && defined HAVE_ASM_GUARDED_STORAGE_H
 
index 0cd160c6edeff901ae0f8a3442c9674c0405b87e..1286b134766114076dda396b7244adf678ac66fe 100644 (file)
@@ -1,14 +1,14 @@
 /*
  * Check decoding of s390_pci_mmio_read and s390_pci_mmio_write syscalls.
  *
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_s390_pci_mmio_read && defined __NR_s390_pci_mmio_write
 
index db31719b667d6a353c34c73d5803f1fcd30e12e1..a336f94b960ecbd2755e0adf6a9ddea71f1cfa88 100644 (file)
@@ -1,14 +1,14 @@
 /*
  * Check decoding of s390_runtime_instr syscall.
  *
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_s390_runtime_instr
 
index 5186fdc9d812fb9a21f8352b3b1426ba5390d8ea..48c3dda7961e5d3a30450ef5d8e0bd5d899eb3d0 100644 (file)
@@ -1,14 +1,14 @@
 /*
  * Check decoding of s390_sthyi syscall.
  *
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined HAVE_ICONV_H && defined HAVE_ICONV_OPEN && defined __NR_s390_sthyi
 
@@ -113,7 +113,7 @@ ebcdic2ascii(unsigned char *ebcdic, size_t size)
                                   size, sizeof(ascii_buf));
        if (cd == (iconv_t) -1)
                perror_msg_and_fail("ebcdic2ascii: unable to allocate a "
-                                   "conversion descriptior for converting "
+                                   "conversion descriptor for converting "
                                    "EBCDIC to ASCII");
 
        while ((ret = iconv(cd, &ebcdic_pos, &ebcdic_left,
@@ -185,6 +185,44 @@ print_ebcdic(const char *prefix, unsigned char *addr, unsigned int offs,
        return true;
 }
 
+static inline void
+print_funcs(unsigned char *addr, unsigned int offs)
+{
+       bool cont;
+       const uint8_t *funcs = addr + offs;
+
+       if (!funcs[0])
+               return;
+
+       printf(" /* ");
+
+       if (funcs[0] & 0x80) {
+               printf("0: Obtain CPU Capacity Info");
+               cont = true;
+       }
+
+       if (funcs[0] & 0x40)
+               printf("%s1: Hypervisor Environment Info",
+                      cont ? ", " : (cont = true, ""));
+       if (funcs[0] & 0x20)
+               printf("%s2: Guest List",
+                      cont ? ", " : (cont = true, ""));
+       if (funcs[0] & 0x10)
+               printf("%s3: Designated Guest Info",
+                      cont ? ", " : (cont = true, ""));
+       if (funcs[0] & 0x08)
+               printf("%s4: Resource Pool List",
+                      cont ? ", " : (cont = true, ""));
+       if (funcs[0] & 0x04)
+               printf("%s5: Designated Resource Pool Information",
+                      cont ? ", " : (cont = true, ""));
+       if (funcs[0] & 0x02)
+               printf("%s6: Resource Pool Member List",
+                      cont ? ", " : (cont = true, ""));
+
+       printf(" */");
+}
+
 static void
 print_hypervisor_header(unsigned char *buf, int level, unsigned int offs_pos,
                        unsigned int len_pos, bool mt)
@@ -220,10 +258,16 @@ print_hypervisor_header(unsigned char *buf, int level, unsigned int offs_pos,
                               "for capping");
                        printed = true;
                }
-               if (cur[0] & 0x3F) {
+               if (cur[0] & 0x20) {
                        if (printed)
                                printf(", ");
-                       printf("%#hhx - ???", cur[0] & 0x3F);
+                       printf("0x20 - hypervisor is MT-enabled");
+                       printed = true;
+               }
+               if (cur[0] & 0x1F) {
+                       if (printed)
+                               printf(", ");
+                       printf("%#hhx - ???", cur[0] & 0x1F);
                }
                printf(" */");
        }
@@ -254,7 +298,20 @@ print_hypervisor_header(unsigned char *buf, int level, unsigned int offs_pos,
        print_u16(", infydifl", cur, 30, VERBOSE);
 
 # if VERBOSE
-       if (hdr_size > 32 && !is_empty(cur + 32, hdr_size - 32)) {
+       if (hdr_size >= 48) {
+               printf(", infyinsf=");
+               print_quoted_hex((char *) (cur + 32), 8);
+               print_funcs(cur, 32);
+
+               printf(", infyautf=");
+               print_quoted_hex((char *) (cur + 40), 8);
+               print_funcs(cur, 40);
+
+               if (hdr_size > 48 && !is_empty(cur + 48, hdr_size - 48)) {
+                       printf(", ");
+                       print_quoted_hex((char *) (cur + 48), hdr_size - 48);
+               }
+       } else if (hdr_size > 32 && !is_empty(cur + 32, hdr_size - 32)) {
                printf(", ");
                print_quoted_hex((char *) (cur + 32), hdr_size - 32);
        }
@@ -452,7 +509,7 @@ print_sthyi(unsigned char *buf)
        hdr_size = *(uint16_t *) (buf + 10);
        if (hdr_size < 44)
                error_msg_and_fail("sthyi: header section is too small "
-                                  "(got %hu, 44 expected)", hdr_size);
+                                  "(got %hu, >=44 expected)", hdr_size);
 
        /* INFHFLG1 */
        print_0x8("{/* header */ {infhflg1", buf, 0, true);
@@ -541,7 +598,7 @@ print_sthyi(unsigned char *buf)
        hdr_size = *(uint16_t *) (buf + 14);
        if (hdr_size < 60)
                error_msg_and_fail("sthyi: machine section is too small "
-                                  "(got %hu, 60 expected)", hdr_size);
+                                  "(got %hu, >=60 expected)", hdr_size);
 
        cur = buf + offs;
 
@@ -584,7 +641,19 @@ print_sthyi(unsigned char *buf)
        print_ebcdic(", infmseq",  cur, 40, 16, id_valid, false);
        print_ebcdic(", infmpman", cur, 56, 4,  id_valid, false);
 
-       if (hdr_size > 60 && !is_empty(cur + 60, hdr_size - 60)) {
+       if (hdr_size >= 72) {
+               if (cur[60] || cur[61] || cur[62] || cur[63])
+                       printf(", reserved_1__="
+                              "\"\\x%#02hhx\\x%#02hhx\\x%#02hhx\\x%#02hhx\"",
+                              cur[60], cur[61], cur[62], cur[63]);
+
+               print_ebcdic(", infmplnm", cur, 64, 8, false, false);
+
+               if (hdr_size > 72 && !is_empty(cur + 72, hdr_size - 72)) {
+                       printf(", ");
+                       print_quoted_hex((char *) (cur + 72), hdr_size - 72);
+               }
+       } else if (hdr_size > 60 && !is_empty(cur + 60, hdr_size - 60)) {
                printf(", ");
                print_quoted_hex((char *) (cur + 60), hdr_size - 60);
        }
@@ -601,9 +670,9 @@ partition_hdr:
                goto hv_hdr;
 
        hdr_size = *(uint16_t *) (buf + 18);
-       if (hdr_size < 56)
+       if (hdr_size < 40)
                error_msg_and_fail("sthyi: partition section is too small "
-                                  "(got %hu, 56 expected)", hdr_size);
+                                  "(got %hu, >=40 expected)", hdr_size);
 
        cur = buf + offs;
 
@@ -672,21 +741,28 @@ partition_hdr:
        print_weight(", infpwbif", cur, 32, pwcap_valid);
        print_weight(", infpabif", cur, 36, pacap_valid);
 
-       if (print_ebcdic(", infplgnm", cur, 40, 8, false, false)) {
-
-               print_weight(", infplgcp", cur, 48, false);
-               print_weight(", infplgif", cur, 52, false);
-       } else {
-               if (lpar_valid) {
-                       printf(", infplgnm=");
-                       print_quoted_hex((char *) (cur + 40), 8);
+       if (hdr_size >= 56) {
+               if (print_ebcdic(", infplgnm", cur, 40, 8, false, false)) {
+                       print_weight(", infplgcp", cur, 48, false);
+                       print_weight(", infplgif", cur, 52, false);
+               } else {
+                       if (lpar_valid) {
+                               printf(", infplgnm=");
+                               print_quoted_hex((char *) (cur + 40), 8);
+                       }
+                       print_x32(", infplgcp", cur, 48, false);
+                       print_x32(", infplgif", cur, 52, false);
                }
-
-               print_x32(", infplgcp", cur, 48, false);
-               print_x32(", infplgif", cur, 52, false);
        }
 
-       if (hdr_size > 56 && !is_empty(cur + 56, hdr_size - 56)) {
+       if (hdr_size >= 64) {
+               print_ebcdic(", infpplnm", cur, 56, 8, false, false);
+
+               if (hdr_size > 64 && !is_empty(cur + 64, hdr_size - 64)) {
+                       printf(", ");
+                       print_quoted_hex((char *) (cur + 64), hdr_size - 64);
+               }
+       } else if (hdr_size > 56 && !is_empty(cur + 56, hdr_size - 56)) {
                printf(", ");
                print_quoted_hex((char *) (cur + 56), hdr_size - 56);
        }
index 7715d2867364fb9d7324b4cfdb6b37a634270455..56bbef579a86acb2473c37aebf4e7eadf37c5643 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined(__NR_sched_get_priority_min) \
  && defined(__NR_sched_get_priority_max)
index b1117f3b4a3f908f39464148ca148542e9450f83..3af6f8518f5ac0b46cdd853b05608a913fe4ad0a 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_sched_rr_get_interval
 
diff --git a/tests-mx32/sched_xetaffinity--pidns-translation.c b/tests-mx32/sched_xetaffinity--pidns-translation.c
new file mode 100644 (file)
index 0000000..814e398
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "sched_xetaffinity.c"
diff --git a/tests-mx32/sched_xetaffinity--pidns-translation.gen.test b/tests-mx32/sched_xetaffinity--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..767fa1a
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched_xetaffinity--pidns-translation test_pidns -a28 -e trace=sched_getaffinity,sched_setaffinity); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a28 -e trace=sched_getaffinity,sched_setaffinity
index 4e6fbe206b94cbce1a41177a1c912da4ae1360e4..105b3354520f17875ba98b1e9fa6c4ac919aa6e1 100644 (file)
@@ -2,13 +2,15 @@
  * This file is part of sched_xetaffinity strace test.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
+#include "pidns.h"
 #include <sched.h>
 
 #if defined __NR_sched_getaffinity && defined __NR_sched_setaffinity \
@@ -40,8 +42,11 @@ setaffinity(unsigned long pid, unsigned long size, void *set)
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        unsigned int cpuset_size = 1;
        const pid_t pid = getpid();
+       const char *pid_str = pidns_pid2str(PT_TGID);
 
        while (cpuset_size) {
                assert(getaffinity(pid, cpuset_size, NULL) == -1);
@@ -49,18 +54,21 @@ main(void)
                        break;
                if (EINVAL != errno)
                        perror_msg_and_skip("sched_getaffinity");
-               printf("sched_getaffinity(%d, %u, NULL) = %s\n",
-                      pid, cpuset_size, errstr);
+               pidns_print_leader();
+               printf("sched_getaffinity(%d%s, %u, NULL) = %s\n",
+                      pid, pid_str, cpuset_size, errstr);
                cpuset_size <<= 1;
        }
        assert(cpuset_size);
-       printf("sched_getaffinity(%d, %u, NULL) = %s\n",
-              pid, cpuset_size, errstr);
+       pidns_print_leader();
+       printf("sched_getaffinity(%d%s, %u, NULL) = %s\n",
+              pid, pid_str, cpuset_size, errstr);
 
        cpu_set_t *cpuset = tail_alloc(cpuset_size);
        getaffinity(pid, cpuset_size, cpuset + 1);
-       printf("sched_getaffinity(%d, %u, %p) = %s\n",
-              pid, cpuset_size, cpuset + 1, errstr);
+       pidns_print_leader();
+       printf("sched_getaffinity(%d%s, %u, %p) = %s\n",
+              pid, pid_str, cpuset_size, cpuset + 1, errstr);
 
        int ret_size = getaffinity(pid, cpuset_size, cpuset);
        if (ret_size < 0)
@@ -68,7 +76,8 @@ main(void)
                                    pid, (unsigned) cpuset_size, cpuset, errstr);
        assert(ret_size <= (int) cpuset_size);
 
-       printf("sched_getaffinity(%d, %u, [", pid, cpuset_size);
+       pidns_print_leader();
+       printf("sched_getaffinity(%d%s, %u, [", pid, pid_str, cpuset_size);
        const char *sep;
        unsigned int i, cpu;
        for (i = 0, cpu = 0, sep = ""; i < (unsigned) ret_size * 8; ++i) {
@@ -84,8 +93,9 @@ main(void)
        CPU_SET_S(cpu, cpuset_size, cpuset);
        if (setaffinity(pid, cpuset_size, cpuset))
                perror_msg_and_skip("sched_setaffinity");
-       printf("sched_setaffinity(%d, %u, [%u]) = 0\n",
-              pid, cpuset_size, cpu);
+       pidns_print_leader();
+       printf("sched_setaffinity(%d%s, %u, [%u]) = 0\n",
+              pid, pid_str, cpuset_size, cpu);
 
        const unsigned int big_size = cpuset_size < 128 ? 128 : cpuset_size * 2;
        cpuset = tail_alloc(big_size);
@@ -94,7 +104,8 @@ main(void)
                perror_msg_and_fail("sched_getaffinity(%d, %u, %p) = %s\n",
                                    pid, big_size, cpuset, errstr);
        assert(ret_size <= (int) big_size);
-       printf("sched_getaffinity(%d, %u, [", pid, big_size);
+       pidns_print_leader();
+       printf("sched_getaffinity(%d%s, %u, [", pid, pid_str, big_size);
        for (i = 0, sep = ""; i < (unsigned) ret_size * 8; ++i) {
                if (CPU_ISSET_S(i, (unsigned) ret_size, cpuset)) {
                        printf("%s%u", sep, i);
@@ -103,6 +114,7 @@ main(void)
        }
        printf("]) = %s\n", errstr);
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
diff --git a/tests-mx32/sched_xetattr--pidns-translation.c b/tests-mx32/sched_xetattr--pidns-translation.c
new file mode 100644 (file)
index 0000000..c152023
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "sched_xetattr.c"
diff --git a/tests-mx32/sched_xetattr--pidns-translation.gen.test b/tests-mx32/sched_xetattr--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..52692a8
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched_xetattr--pidns-translation test_pidns -a29 -e trace=sched_getattr,sched_setattr); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a29 -e trace=sched_getattr,sched_setattr
index 3440876b29db574dfe619d4829bf174201cbbce2..4a76b2d65a2d7d9e5e418bc70b076a9d3dd0d012 100644 (file)
@@ -1,13 +1,13 @@
 /*
  * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_sched_getattr && defined __NR_sched_setattr
 
@@ -15,6 +15,7 @@
 # include <stdio.h>
 # include <sched.h>
 # include <unistd.h>
+# include "pidns.h"
 # include "sched_attr.h"
 # include "xlat.h"
 # include "xlat/schedulers.h"
@@ -41,6 +42,8 @@ sys_sched_setattr(kernel_ulong_t pid, kernel_ulong_t attr, kernel_ulong_t flags)
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        static const kernel_ulong_t bogus_pid =
                (kernel_ulong_t) 0xdefacedfacefeedULL;
        static const kernel_ulong_t bogus_size =
@@ -48,20 +51,28 @@ main(void)
        static const kernel_ulong_t bogus_flags =
                (kernel_ulong_t) 0xdefaceddeadc0deULL;
 
+       const int pid = getpid();
+       const char *pid_str = pidns_pid2str(PT_TGID);
+
        TAIL_ALLOC_OBJECT_CONST_PTR(struct sched_attr, attr);
        TAIL_ALLOC_OBJECT_CONST_PTR(unsigned int, psize);
        void *const efault = attr + 1;
 
-       sys_sched_getattr(0, 0, 0, 0);
-       printf("sched_getattr(0, NULL, 0, 0) = %s\n", errstr);
+       sys_sched_getattr(pid, 0, 0, 0);
+       pidns_print_leader();
+       printf("sched_getattr(%d%s, NULL, 0, 0) = %s\n",
+               pid, pid_str, errstr);
 
        sys_sched_getattr(0, (unsigned long) attr, 0, 0);
+       pidns_print_leader();
        printf("sched_getattr(0, %p, 0, 0) = %s\n", attr, errstr);
 
        sys_sched_getattr(bogus_pid, 0, 0, 0);
+       pidns_print_leader();
        printf("sched_getattr(%d, NULL, 0, 0) = %s\n", (int) bogus_pid, errstr);
 
        sys_sched_getattr(-1U, (unsigned long) attr, bogus_size, bogus_flags);
+       pidns_print_leader();
        printf("sched_getattr(-1, %p, %s%u, %u) = %s\n",
               attr,
 # if defined __arm64__ || defined __aarch64__
@@ -71,24 +82,52 @@ main(void)
 # endif
               (unsigned) bogus_size, (unsigned) bogus_flags, errstr);
 
+       sys_sched_getattr(0, (unsigned long) efault, SCHED_ATTR_MIN_SIZE, 0);
+       pidns_print_leader();
+       printf("sched_getattr(0, %p, %u, 0) = %s\n",
+              efault, (unsigned) SCHED_ATTR_MIN_SIZE, errstr);
+
+       if (sys_sched_getattr(0, (unsigned long) attr, SCHED_ATTR_MIN_SIZE, 0))
+               perror_msg_and_skip("sched_getattr");
+       pidns_print_leader();
+       printf("sched_getattr(0, {size=%u, sched_policy=", attr->size);
+       printxval(schedulers, attr->sched_policy, NULL);
+       printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u"
+              ", sched_runtime=%" PRIu64 ", sched_deadline=%" PRIu64
+              ", sched_period=%" PRIu64 "}, %u, 0) = 0\n",
+              attr->sched_flags ? "SCHED_FLAG_RESET_ON_FORK" : "0",
+              attr->sched_nice,
+              attr->sched_priority,
+              attr->sched_runtime,
+              attr->sched_deadline,
+              attr->sched_period,
+              (unsigned) SCHED_ATTR_MIN_SIZE);
+
        sys_sched_getattr(0, (unsigned long) efault, sizeof(*attr), 0);
+       pidns_print_leader();
        printf("sched_getattr(0, %p, %u, 0) = %s\n",
               efault, (unsigned) sizeof(*attr), errstr);
 
        if (sys_sched_getattr(0, (unsigned long) attr, sizeof(*attr), 0))
                perror_msg_and_skip("sched_getattr");
+       pidns_print_leader();
        printf("sched_getattr(0, {size=%u, sched_policy=", attr->size);
        printxval(schedulers, attr->sched_policy, NULL);
        printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u"
               ", sched_runtime=%" PRIu64 ", sched_deadline=%" PRIu64
-              ", sched_period=%" PRIu64 "}, %u, 0) = 0\n",
+              ", sched_period=%" PRIu64,
               attr->sched_flags ? "SCHED_FLAG_RESET_ON_FORK" : "0",
               attr->sched_nice,
               attr->sched_priority,
               attr->sched_runtime,
               attr->sched_deadline,
-              attr->sched_period,
-              (unsigned) sizeof(*attr));
+              attr->sched_period);
+       if (attr->size >= SCHED_ATTR_SIZE_VER1) {
+               printf(", sched_util_min=%u, sched_util_max=%u",
+                      attr->sched_util_min,
+                      attr->sched_util_max);
+       }
+       printf("}, %u, 0) = 0\n", (unsigned) sizeof(*attr));
 
 # if defined __arm64__ || defined __aarch64__
        long rc =
@@ -97,66 +136,91 @@ main(void)
                          F8ILL_KULONG_MASK | sizeof(*attr), F8ILL_KULONG_MASK);
 # if defined __arm64__ || defined __aarch64__
        if (rc) {
+               pidns_print_leader();
                printf("sched_getattr(0, %p, 0xffffffff<<32|%u, 0) = %s\n",
                       attr, (unsigned) sizeof(*attr), errstr);
        } else
 # endif
        {
+               pidns_print_leader();
                printf("sched_getattr(0, {size=%u, sched_policy=", attr->size);
                printxval(schedulers, attr->sched_policy, NULL);
                printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u"
                       ", sched_runtime=%" PRIu64 ", sched_deadline=%" PRIu64
-                      ", sched_period=%" PRIu64 "}, %u, 0) = 0\n",
+                      ", sched_period=%" PRIu64,
                       attr->sched_flags ? "SCHED_FLAG_RESET_ON_FORK" : "0",
                       attr->sched_nice,
                       attr->sched_priority,
                       attr->sched_runtime,
                       attr->sched_deadline,
-                      attr->sched_period,
-                      (unsigned) sizeof(*attr));
+                      attr->sched_period);
+               if (attr->size >= SCHED_ATTR_SIZE_VER1) {
+                       printf(", sched_util_min=%u, sched_util_max=%u",
+                              attr->sched_util_min,
+                              attr->sched_util_max);
+               }
+               printf("}, %u, 0) = 0\n", (unsigned) sizeof(*attr));
        }
 
        sys_sched_setattr(bogus_pid, 0, 0);
+       pidns_print_leader();
        printf("sched_setattr(%d, NULL, 0) = %s\n", (int) bogus_pid, errstr);
 
        attr->sched_flags |= 1;
 
-       if (sys_sched_setattr(0, (unsigned long) attr, 0))
+       if (sys_sched_setattr(pid, (unsigned long) attr, 0))
                perror_msg_and_skip("sched_setattr");
-       printf("sched_setattr(0, {size=%u, sched_policy=", attr->size);
+       pidns_print_leader();
+       printf("sched_setattr(%d%s, {size=%u, sched_policy=",
+               pid, pid_str, attr->size);
        printxval(schedulers, attr->sched_policy, NULL);
        printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u"
               ", sched_runtime=%" PRIu64 ", sched_deadline=%" PRIu64
-              ", sched_period=%" PRIu64 "}, 0) = 0\n",
+              ", sched_period=%" PRIu64,
               "SCHED_FLAG_RESET_ON_FORK",
               attr->sched_nice,
               attr->sched_priority,
               attr->sched_runtime,
               attr->sched_deadline,
               attr->sched_period);
+       if (attr->size >= SCHED_ATTR_SIZE_VER1) {
+               printf(", sched_util_min=%u, sched_util_max=%u",
+                      attr->sched_util_min,
+                      attr->sched_util_max);
+       }
+       printf("}, 0) = 0\n");
 
        sys_sched_setattr(F8ILL_KULONG_MASK, (unsigned long) attr,
                          F8ILL_KULONG_MASK);
+       pidns_print_leader();
        printf("sched_setattr(0, {size=%u, sched_policy=", attr->size);
        printxval(schedulers, attr->sched_policy, NULL);
        printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u"
               ", sched_runtime=%" PRIu64 ", sched_deadline=%" PRIu64
-              ", sched_period=%" PRIu64 "}, 0) = 0\n",
+              ", sched_period=%" PRIu64,
               "SCHED_FLAG_RESET_ON_FORK",
               attr->sched_nice,
               attr->sched_priority,
               attr->sched_runtime,
               attr->sched_deadline,
               attr->sched_period);
+       if (attr->size >= SCHED_ATTR_SIZE_VER1) {
+               printf(", sched_util_min=%u, sched_util_max=%u",
+                      attr->sched_util_min,
+                      attr->sched_util_max);
+       }
+       printf("}, 0) = 0\n");
 
        *psize = attr->size;
 
        sys_sched_setattr(0, (unsigned long) psize, 0);
+       pidns_print_leader();
        printf("sched_setattr(0, %p, 0) = %s\n", psize, errstr);
 
        attr->size = 0;
 
        sys_sched_setattr(0, (unsigned long) attr, 0);
+       pidns_print_leader();
        printf("sched_setattr(0, {size=%u, sched_policy=", attr->size);
        printxval(schedulers, attr->sched_policy, NULL);
        printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u"
@@ -172,18 +236,20 @@ main(void)
        attr->size = 1;
 
        sys_sched_setattr(0, (unsigned long) attr, 0);
+       pidns_print_leader();
        printf("sched_setattr(0, {size=%u} => {size=%u}, 0) = %s\n",
               1, attr->size, errstr);
 
        attr->size = SCHED_ATTR_MIN_SIZE - 1;
 
        sys_sched_setattr(0, (unsigned long) attr, 0);
+       pidns_print_leader();
        printf("sched_setattr(0, {size=%u} => {size=%u}, 0) = %s\n",
               SCHED_ATTR_MIN_SIZE - 1, attr->size, errstr);
 
        attr->size = 0x90807060;
        attr->sched_policy = 0xca7faced;
-       attr->sched_flags = 0xbadc0ded1057da78ULL;
+       attr->sched_flags = 0xbadc0ded1057da80ULL;
        attr->sched_nice = 0xafbfcfdf;
        attr->sched_priority = 0xb8c8d8e8;
        attr->sched_runtime = 0xbadcaffedeadf157ULL;
@@ -191,11 +257,12 @@ main(void)
        attr->sched_period = 0xded1ca7edda7aca7ULL;
 
        sys_sched_setattr(bogus_pid, (unsigned long) attr, bogus_flags);
+       pidns_print_leader();
        printf("sched_setattr(%d, {size=%u, sched_policy=%#x /* SCHED_??? */, "
               "sched_flags=%#" PRIx64 " /* SCHED_FLAG_??? */, "
               "sched_nice=%d, sched_priority=%u, sched_runtime=%" PRIu64 ", "
-              "sched_deadline=%" PRIu64 ", sched_period=%" PRIu64 ", ...}, %u)"
-              " = %s\n",
+              "sched_deadline=%" PRIu64 ", sched_period=%" PRIu64 ", "
+              "sched_util_min=%u, sched_util_max=%u, ...}, %u) = %s\n",
               (int) bogus_pid,
               attr->size,
               attr->sched_policy,
@@ -205,6 +272,8 @@ main(void)
               attr->sched_runtime,
               attr->sched_deadline,
               attr->sched_period,
+              attr->sched_util_min,
+              attr->sched_util_max,
               (unsigned) bogus_flags, errstr);
 
        if (F8ILL_KULONG_SUPPORTED) {
@@ -223,7 +292,7 @@ main(void)
 
        attr->size = 0x90807060;
        attr->sched_policy = 0xca7faced;
-       attr->sched_flags = 0xfULL;
+       attr->sched_flags = 0x87ULL;
        attr->sched_nice = 0xafbfcfdf;
        attr->sched_priority = 0xb8c8d8e8;
        attr->sched_runtime = 0xbadcaffedeadf157ULL;
@@ -231,35 +300,143 @@ main(void)
        attr->sched_period = 0xded1ca7edda7aca7ULL;
 
        sys_sched_setattr(bogus_pid, (unsigned long) attr, bogus_flags);
+       pidns_print_leader();
        printf("sched_setattr(%d, {size=%u, sched_policy=%#x /* SCHED_??? */, "
               "sched_flags=SCHED_FLAG_RESET_ON_FORK|SCHED_FLAG_RECLAIM|"
-              "SCHED_FLAG_DL_OVERRUN|0x8, "
+              "SCHED_FLAG_DL_OVERRUN|0x80, "
+              "sched_nice=%d, sched_priority=%u, sched_runtime=%" PRIu64 ", "
+              "sched_deadline=%" PRIu64 ", sched_period=%" PRIu64 ", "
+              "sched_util_min=%u, sched_util_max=%u, ...}, %u) = %s\n",
+              (int) bogus_pid,
+              attr->size,
+              attr->sched_policy,
+              attr->sched_nice,
+              attr->sched_priority,
+              attr->sched_runtime,
+              attr->sched_deadline,
+              attr->sched_period,
+              attr->sched_util_min,
+              attr->sched_util_max,
+              (unsigned) bogus_flags, errstr);
+
+       if (F8ILL_KULONG_SUPPORTED) {
+               const kernel_ulong_t ill = f8ill_ptr_to_kulong(attr);
+
+               sys_sched_getattr(0, ill, sizeof(*attr), 0);
+               pidns_print_leader();
+               printf("sched_getattr(0, %#llx, %u, 0) = %s\n",
+                      (unsigned long long) ill, (unsigned) sizeof(*attr),
+                      errstr);
+
+               sys_sched_setattr(0, ill, 0);
+               pidns_print_leader();
+               printf("sched_setattr(0, %#llx, 0) = %s\n",
+                      (unsigned long long) ill, errstr);
+       }
+
+       attr->size = SCHED_ATTR_MIN_SIZE;
+       attr->sched_policy = 0xdefaced;
+       attr->sched_flags = 0x8fULL;
+
+       sys_sched_setattr(bogus_pid, (unsigned long) attr, bogus_flags);
+       pidns_print_leader();
+       printf("sched_setattr(%d, {size=%u, "
+              "sched_flags=SCHED_FLAG_RESET_ON_FORK|SCHED_FLAG_RECLAIM|"
+              "SCHED_FLAG_DL_OVERRUN|SCHED_FLAG_KEEP_POLICY|0x80, "
               "sched_nice=%d, sched_priority=%u, sched_runtime=%" PRIu64 ", "
-              "sched_deadline=%" PRIu64 ", sched_period=%" PRIu64 ", ...}, %u)"
+              "sched_deadline=%" PRIu64 ", sched_period=%" PRIu64 "}, %u)"
               " = %s\n",
               (int) bogus_pid,
               attr->size,
+              attr->sched_nice,
+              attr->sched_priority,
+              attr->sched_runtime,
+              attr->sched_deadline,
+              attr->sched_period,
+              (unsigned) bogus_flags, errstr);
+
+       if (F8ILL_KULONG_SUPPORTED) {
+               const kernel_ulong_t ill = f8ill_ptr_to_kulong(attr);
+
+               sys_sched_getattr(0, ill, sizeof(*attr), 0);
+               pidns_print_leader();
+               printf("sched_getattr(0, %#llx, %u, 0) = %s\n",
+                      (unsigned long long) ill, (unsigned) sizeof(*attr),
+                      errstr);
+
+               sys_sched_setattr(0, ill, 0);
+               pidns_print_leader();
+               printf("sched_setattr(0, %#llx, 0) = %s\n",
+                      (unsigned long long) ill, errstr);
+       }
+
+       attr->size = SCHED_ATTR_SIZE_VER1;
+       attr->sched_flags = 0xe7ULL;
+
+       sys_sched_setattr(bogus_pid, (unsigned long) attr, bogus_flags);
+       pidns_print_leader();
+       printf("sched_setattr(%d, {size=%u, sched_policy=%#x /* SCHED_??? */, "
+              "sched_flags=SCHED_FLAG_RESET_ON_FORK|SCHED_FLAG_RECLAIM|"
+              "SCHED_FLAG_DL_OVERRUN|SCHED_FLAG_UTIL_CLAMP_MIN"
+              "|SCHED_FLAG_UTIL_CLAMP_MAX|0x80, "
+              "sched_nice=%d, sched_priority=%u, sched_runtime=%" PRIu64 ", "
+              "sched_deadline=%" PRIu64 ", sched_period=%" PRIu64 ", "
+              "sched_util_min=%u, sched_util_max=%u}, %u) = %s\n",
+              (int) bogus_pid,
+              attr->size,
               attr->sched_policy,
               attr->sched_nice,
               attr->sched_priority,
               attr->sched_runtime,
               attr->sched_deadline,
               attr->sched_period,
+              attr->sched_util_min,
+              attr->sched_util_max,
+              (unsigned) bogus_flags, errstr);
+
+       if (F8ILL_KULONG_SUPPORTED) {
+               const kernel_ulong_t ill = f8ill_ptr_to_kulong(attr);
+
+               sys_sched_getattr(0, ill, sizeof(*attr), 0);
+               pidns_print_leader();
+               printf("sched_getattr(0, %#llx, %u, 0) = %s\n",
+                      (unsigned long long) ill, (unsigned) sizeof(*attr),
+                      errstr);
+
+               sys_sched_setattr(0, ill, 0);
+               pidns_print_leader();
+               printf("sched_setattr(0, %#llx, 0) = %s\n",
+                      (unsigned long long) ill, errstr);
+       }
+
+       attr->sched_flags = 0xcaffee90LL;
+
+       sys_sched_setattr(bogus_pid, (unsigned long) attr, bogus_flags);
+       pidns_print_leader();
+       printf("sched_setattr(%d, {size=%u, sched_flags=SCHED_FLAG_KEEP_PARAMS"
+              "|0xcaffee80, sched_util_min=%u, sched_util_max=%u}, %u) = %s\n",
+              (int) bogus_pid,
+              attr->size,
+              attr->sched_util_min,
+              attr->sched_util_max,
               (unsigned) bogus_flags, errstr);
 
        if (F8ILL_KULONG_SUPPORTED) {
                const kernel_ulong_t ill = f8ill_ptr_to_kulong(attr);
 
                sys_sched_getattr(0, ill, sizeof(*attr), 0);
+               pidns_print_leader();
                printf("sched_getattr(0, %#llx, %u, 0) = %s\n",
                       (unsigned long long) ill, (unsigned) sizeof(*attr),
                       errstr);
 
                sys_sched_setattr(0, ill, 0);
+               pidns_print_leader();
                printf("sched_setattr(0, %#llx, 0) = %s\n",
                       (unsigned long long) ill, errstr);
        }
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
diff --git a/tests-mx32/sched_xetparam--pidns-translation.c b/tests-mx32/sched_xetparam--pidns-translation.c
new file mode 100644 (file)
index 0000000..9fb3e57
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "sched_xetparam.c"
diff --git a/tests-mx32/sched_xetparam--pidns-translation.gen.test b/tests-mx32/sched_xetparam--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..309cabb
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched_xetparam--pidns-translation test_pidns -a23 -e trace=sched_getparam,sched_setparam); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a23 -e trace=sched_getparam,sched_setparam
index e1325a6f714a2791a02ced15d787780176c3e8b5..f48ba6d75753b686b86db91dd1b696fdc5f0fe39 100644 (file)
@@ -1,12 +1,13 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
+#include "pidns.h"
 
 #if defined __NR_sched_getparam && defined __NR_sched_setparam
 
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        struct sched_param *const param =
                tail_alloc(sizeof(struct sched_param));
 
-       long rc = syscall(__NR_sched_getparam, 0, param);
-       printf("sched_getparam(0, [%d]) = %ld\n",
-              param->sched_priority, rc);
+       const int pid = getpid();
+       const char *pid_str = pidns_pid2str(PT_TGID);
+
+       long rc = syscall(__NR_sched_getparam, pid, param);
+       pidns_print_leader();
+       printf("sched_getparam(%d%s, [%d]) = %ld\n",
+              pid, pid_str, param->sched_priority, rc);
 
        param->sched_priority = -1;
-       rc = syscall(__NR_sched_setparam, 0, param);
-       printf("sched_setparam(0, [%d]) = %ld %s (%m)\n",
+       rc = syscall(__NR_sched_setparam, pid, param);
+       pidns_print_leader();
+       printf("sched_setparam(%d%s, [%d]) = %ld %s (%m)\n",
+              pid, pid_str,
               param->sched_priority, rc, errno2name());
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
diff --git a/tests-mx32/sched_xetscheduler--pidns-translation.c b/tests-mx32/sched_xetscheduler--pidns-translation.c
new file mode 100644 (file)
index 0000000..78b794b
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "sched_xetscheduler.c"
diff --git a/tests-mx32/sched_xetscheduler--pidns-translation.gen.test b/tests-mx32/sched_xetscheduler--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..12581e4
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched_xetscheduler--pidns-translation test_pidns -a22 -e trace=sched_getscheduler,sched_setscheduler); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a22 -e trace=sched_getscheduler,sched_setscheduler
index bc48085a4ee034bf82f53c571bb36c2d4660cb52..d93db3858890b3a7def3963bda63bd8f4149c236 100644 (file)
@@ -1,12 +1,13 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
+#include "pidns.h"
 
 #if defined __NR_sched_getscheduler && defined __NR_sched_setscheduler
 
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        TAIL_ALLOC_OBJECT_CONST_PTR(struct sched_param, param);
-       long rc = syscall(__NR_sched_getscheduler, 0);
+       const int pid = getpid();
+       const char *pid_str = pidns_pid2str(PT_TGID);
+
+       long rc = syscall(__NR_sched_getscheduler, pid);
        const char *scheduler;
        switch (rc) {
                case SCHED_FIFO:
@@ -50,33 +56,43 @@ main(void)
                default:
                        scheduler = "SCHED_OTHER";
        }
-       printf("sched_getscheduler(0) = %ld (%s)\n",
-              rc, scheduler);
+       pidns_print_leader();
+       printf("sched_getscheduler(%d%s) = %ld (%s)\n",
+              pid, pid_str, rc, scheduler);
 
        rc = syscall(__NR_sched_getscheduler, -1);
+       pidns_print_leader();
        printf("sched_getscheduler(-1) = %s\n", sprintrc(rc));
 
        param->sched_priority = -1;
 
-       rc = syscall(__NR_sched_setscheduler, 0, SCHED_FIFO, NULL);
-       printf("sched_setscheduler(0, SCHED_FIFO, NULL) = %s\n", sprintrc(rc));
+       rc = syscall(__NR_sched_setscheduler, pid, SCHED_FIFO, NULL);
+       pidns_print_leader();
+       printf("sched_setscheduler(%d%s, SCHED_FIFO, NULL) = %s\n",
+              pid, pid_str, sprintrc(rc));
 
-       rc = syscall(__NR_sched_setscheduler, 0, SCHED_FIFO, param + 1);
-       printf("sched_setscheduler(0, SCHED_FIFO, %p) = %s\n", param + 1,
-              sprintrc(rc));
+       rc = syscall(__NR_sched_setscheduler, pid, SCHED_FIFO, param + 1);
+       pidns_print_leader();
+       printf("sched_setscheduler(%d%s, SCHED_FIFO, %p) = %s\n",
+              pid, pid_str, param + 1, sprintrc(rc));
 
-       rc = syscall(__NR_sched_setscheduler, 0, 0xfaceda7a, param);
-       printf("sched_setscheduler(0, %#x /* SCHED_??? */, [%d]) = %s\n",
-              0xfaceda7a, param->sched_priority, sprintrc(rc));
+       rc = syscall(__NR_sched_setscheduler, pid, 0xfaceda7a, param);
+       pidns_print_leader();
+       printf("sched_setscheduler(%d%s, %#x /* SCHED_??? */, [%d]) = %s\n",
+              pid, pid_str, 0xfaceda7a,
+              param->sched_priority, sprintrc(rc));
 
        rc = syscall(__NR_sched_setscheduler, -1, SCHED_FIFO, param);
+       pidns_print_leader();
        printf("sched_setscheduler(-1, SCHED_FIFO, [%d]) = %s\n",
               param->sched_priority, sprintrc(rc));
 
-       rc = syscall(__NR_sched_setscheduler, 0, SCHED_FIFO, param);
-       printf("sched_setscheduler(0, SCHED_FIFO, [%d]) = %s\n",
-              param->sched_priority, sprintrc(rc));
+       rc = syscall(__NR_sched_setscheduler, pid, SCHED_FIFO, param);
+       pidns_print_leader();
+       printf("sched_setscheduler(%d%s, SCHED_FIFO, [%d]) = %s\n",
+              pid, pid_str, param->sched_priority, sprintrc(rc));
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
index 40b556171fe780eeb081ef056692509dc635172a..8a3d689f8197ee2506c5ec1107efabf5c038935d 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_sched_yield
 
index 98eaeee57bafea33fbcbaa3d57bf77d3e5220d80..b5f38ca566ad3bb8b9b91ed4a309e98a9cd92a52 100644 (file)
@@ -2,7 +2,7 @@
  * Check verbose decoding of seccomp SECCOMP_SET_MODE_FILTER.
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2019 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 #include <errno.h>
 #include <stddef.h>
 #include <stdio.h>
-#include <asm/unistd.h>
 #include <unistd.h>
-
-#ifdef HAVE_PRCTL
-# include <sys/prctl.h>
-#endif
+#include <sys/prctl.h>
 #ifdef HAVE_LINUX_SECCOMP_H
 # include <linux/seccomp.h>
 #endif
 #include <linux/filter.h>
+#include "scno.h"
 
 #if defined __NR_seccomp \
  && defined PR_SET_NO_NEW_PRIVS \
                BPF_STMT(BPF_RET|BPF_K, SECCOMP_RET_KILL)
 
 # define PRINT_ALLOW_SYSCALL(nr) \
-       tprintf("BPF_JUMP(BPF_JMP|BPF_K|BPF_JEQ, %#x, 0, 0x1), " \
-              "BPF_STMT(BPF_RET|BPF_K, SECCOMP_RET_ALLOW), ", \
-              __NR_ ## nr)
+       tprintf("BPF_JUMP(BPF_JMP|BPF_K|BPF_JEQ, %#lx, 0, 0x1), " \
+               "BPF_STMT(BPF_RET|BPF_K, SECCOMP_RET_ALLOW), ", \
+               (long) __NR_ ## nr)
 
 # define PRINT_DENY_SYSCALL(nr, err) \
-       tprintf("BPF_JUMP(BPF_JMP|BPF_K|BPF_JEQ, %#x, 0, 0x1), " \
-              "BPF_STMT(BPF_RET|BPF_K, SECCOMP_RET_ERRNO|%#x), ", \
-              __NR_ ## nr, err)
+       tprintf("BPF_JUMP(BPF_JMP|BPF_K|BPF_JEQ, %#lx, 0, 0x1), " \
+               "BPF_STMT(BPF_RET|BPF_K, SECCOMP_RET_ERRNO|%#x), ", \
+               (long) __NR_ ## nr, err)
 
 static const struct sock_filter filter_c[] = {
        /* load syscall number */
@@ -118,7 +115,8 @@ main(void)
        tprintf("seccomp(SECCOMP_SET_MODE_FILTER, %s, {len=%u, filter=[",
                "SECCOMP_FILTER_FLAG_TSYNC|SECCOMP_FILTER_FLAG_LOG|"
                "SECCOMP_FILTER_FLAG_SPEC_ALLOW|"
-               "SECCOMP_FILTER_FLAG_NEW_LISTENER|0xfffffff0",
+               "SECCOMP_FILTER_FLAG_NEW_LISTENER|"
+               "SECCOMP_FILTER_FLAG_TSYNC_ESRCH|0xffffffe0",
                prog->len);
        for (i = 0; i < BPF_MAXINSNS; ++i) {
                if (i)
index 5e28ffcae78bf3925e5d4720831288e4f80d1fdc..ef485dd82e98d0a4150b4cce4ec010bc943d9d96 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of seccomp SECCOMP_SET_MODE_FILTER.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2019 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -11,7 +11,7 @@
 #include "tests.h"
 
 #include <stdio.h>
-#include <asm/unistd.h>
+#include "scno.h"
 #include <unistd.h>
 
 #ifdef HAVE_LINUX_SECCOMP_H
@@ -38,12 +38,13 @@ main(void)
               " = %ld %s (%m)\n",
               "SECCOMP_FILTER_FLAG_TSYNC|SECCOMP_FILTER_FLAG_LOG|"
               "SECCOMP_FILTER_FLAG_SPEC_ALLOW|"
-              "SECCOMP_FILTER_FLAG_NEW_LISTENER|0xfffffff0",
+              "SECCOMP_FILTER_FLAG_NEW_LISTENER|"
+              "SECCOMP_FILTER_FLAG_TSYNC_ESRCH|0xffffffe0",
               prog->len, prog->filter, rc, errno2name());
 
-       rc = syscall(__NR_seccomp, SECCOMP_SET_MODE_FILTER, -16L, efault);
+       rc = syscall(__NR_seccomp, SECCOMP_SET_MODE_FILTER, -32L, efault);
        printf("seccomp(SECCOMP_SET_MODE_FILTER, %s, %p) = %ld %s (%m)\n",
-              "0xfffffff0 /* SECCOMP_FILTER_FLAG_??? */",
+              "0xffffffe0 /* SECCOMP_FILTER_FLAG_??? */",
               efault, rc, errno2name());
 
        puts("+++ exited with 0 +++");
index 1d088109c98dff7b968c151cf30829ded1efa5c4..fcf30e540b412d31c076c774a109a6c5bc910a7f 100644 (file)
@@ -2,13 +2,14 @@
  * Check how seccomp SECCOMP_SET_MODE_STRICT is decoded.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_seccomp && defined __NR_exit
 
@@ -37,7 +38,7 @@ main(void)
                rc = 0;
        } else {
                /*
-                * If kernel implementaton of SECCOMP_MODE_STRICT is buggy,
+                * If kernel implementation of SECCOMP_MODE_STRICT is buggy,
                 * the following syscall will result to SIGKILL.
                 */
                rc = write(1, text1, LENGTH_OF(text1)) != LENGTH_OF(text1);
index e61678f4cfb58ac844d1508cf395bfde206b7a16..6ae23b9600d9b818e200f6f5bfd7007538272879 100644 (file)
@@ -8,7 +8,7 @@
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_seccomp
 
index 7935032b2e576737c3b47339b16ae23bf271e920..d65d1364c2e97c48ac50faf079a64195e89e0e49 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_select && !defined __NR__newselect
 
diff --git a/tests-mx32/semop-common.c b/tests-mx32/semop-common.c
new file mode 100644 (file)
index 0000000..646a116
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+ * Copyright (c) 2016-2019 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include <sys/ipc.h>
+#include <sys/sem.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#define XLAT_MACROS_ONLY
+#include "xlat/semop_flags.h"
+#undef XLAT_MACROS_ONLY
+
+static const char *errstr;
+
+static long
+k_semop(const unsigned int semid,
+       const kernel_ulong_t sops,
+       const unsigned int nsops);
+
+union semun {
+       int val;
+       struct semid_ds *buf;
+       unsigned short *array;
+       struct seminfo *__buf;
+};
+
+static int id = -1;
+
+static void
+cleanup(void)
+{
+       semctl(id, 0, IPC_RMID, 0);
+       id = -1;
+}
+
+int
+main(void)
+{
+       static const int bogus_semid = 0xfdb97531;
+       static kernel_ulong_t bogus_sops = (kernel_ulong_t) -1ULL;
+       static const unsigned int bogus_nsops = 0xdeadbeefU;
+
+       id = semget(IPC_PRIVATE, 1, 0600);
+       if (id < 0)
+               perror_msg_and_skip("semget");
+       atexit(cleanup);
+
+       union semun sem_union = { .val = 0 };
+       if (semctl(id, 0, SETVAL, sem_union) == -1)
+               perror_msg_and_skip("semctl");
+
+       k_semop(bogus_semid, 0, bogus_nsops);
+       printf("semop(%d, NULL, %u) = %s\n",
+               bogus_semid, bogus_nsops, errstr);
+
+       k_semop(bogus_semid, bogus_sops, 1);
+       printf("semop(%d, %#llx, %u) = %s\n",
+               bogus_semid, (unsigned long long) bogus_sops, 1, errstr);
+
+       TAIL_ALLOC_OBJECT_CONST_PTR(struct sembuf, sem_b2);
+       sem_b2->sem_num = 0xface;
+       sem_b2->sem_op = 0xf00d;
+       sem_b2->sem_flg = 0xbeef;
+
+       k_semop(bogus_semid, (uintptr_t) sem_b2, 2);
+       printf("semop(%d, [{%hu, %hd, %s%s%#hx}, ... /* %p */], %u) = %s\n",
+               bogus_semid, sem_b2->sem_num, sem_b2->sem_op,
+               sem_b2->sem_flg & SEM_UNDO ? "SEM_UNDO|" : "",
+               sem_b2->sem_flg & IPC_NOWAIT ? "IPC_NOWAIT|" : "",
+               (short) (sem_b2->sem_flg & ~(SEM_UNDO | IPC_NOWAIT)),
+               sem_b2 + 1, 2, errstr);
+
+       TAIL_ALLOC_OBJECT_CONST_PTR(struct sembuf, sem_b);
+       sem_b->sem_num = 0;
+       sem_b->sem_op = 1;
+       sem_b->sem_flg = SEM_UNDO;
+
+       k_semop(id, (uintptr_t) sem_b, 1);
+       printf("semop(%d, [{0, 1, SEM_UNDO}], 1) = %s\n", id, errstr);
+
+       sem_b->sem_op = -1;
+       k_semop(id, (uintptr_t) sem_b, 1);
+       printf("semop(%d, [{0, -1, SEM_UNDO}], 1) = %s\n", id, errstr);
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
diff --git a/tests-mx32/semop-indirect.c b/tests-mx32/semop-indirect.c
new file mode 100644 (file)
index 0000000..452f7ba
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2016-2019 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#if defined __NR_ipc && !defined __ARM_EABI__
+
+# include "semop-common.c"
+
+# define XLAT_MACROS_ONLY
+# include "xlat/ipccalls.h"
+# undef XLAT_MACROS_ONLY
+
+static long
+k_semop(const unsigned int semid,
+       const kernel_ulong_t sops,
+       const unsigned int nsops)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = fill | SEMOP;
+       const kernel_ulong_t arg2 = fill | semid;
+       const kernel_ulong_t arg3 = fill | nsops;
+       const kernel_ulong_t arg5 = sops;
+       const long rc = syscall(__NR_ipc, arg1, arg2, arg3, bad, arg5, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_ipc && !__ARM_EABI__")
+
+#endif
diff --git a/tests-mx32/semop-indirect.gen.test b/tests-mx32/semop-indirect.gen.test
new file mode 100755 (executable)
index 0000000..b70a697
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (semop-indirect -a32 -e trace=semop); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -e trace=semop
index f7f047019028287a138efa6a8e64937e9e2a5a12..7725cd46342cc67beb1843041ffd52cde293394f 100644 (file)
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <sys/ipc.h>
-#include <sys/sem.h>
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
+#include "scno.h"
 
-#include "xlat.h"
-#include "xlat/semop_flags.h"
+#ifdef __NR_semop
 
-union semun {
-       int val;
-       struct semid_ds *buf;
-       unsigned short *array;
-       struct seminfo *__buf;
-};
+# include "semop-common.c"
 
-static int id = -1;
-
-static void
-cleanup(void)
+static long
+k_semop(const unsigned int semid,
+       const kernel_ulong_t sops,
+       const unsigned int nsops)
 {
-       semctl(id, 0, IPC_RMID, 0);
-       id = -1;
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = fill | semid;
+       const kernel_ulong_t arg2 = sops;
+       const kernel_ulong_t arg3 = fill | nsops;
+       const long rc = syscall(__NR_semop, arg1, arg2, arg3, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
 }
 
-int
-main(void)
-{
-       static const int bogus_semid = 0xfdb97531;
-       static void * const bogus_sops = (void *) -1L;
-       static const size_t bogus_nsops = (size_t) 0xdefaceddeadbeefULL;
-
-       TAIL_ALLOC_OBJECT_CONST_PTR(struct timespec, ts);
-       int rc;
-
-       id = semget(IPC_PRIVATE, 1, 0600);
-       if (id < 0)
-               perror_msg_and_skip("semget");
-       atexit(cleanup);
-
-       union semun sem_union = { .val = 0 };
-       if (semctl(id, 0, SETVAL, sem_union) == -1)
-               perror_msg_and_skip("semctl");
-
-       TAIL_ALLOC_OBJECT_CONST_PTR(struct sembuf, sem_b);
-       TAIL_ALLOC_OBJECT_CONST_PTR(struct sembuf, sem_b2);
-
-       rc = semop(bogus_semid, NULL, bogus_nsops);
-       printf("semop(%d, NULL, %u) = %s\n",
-               bogus_semid, (unsigned) bogus_nsops, sprintrc(rc));
-
-       rc = semop(bogus_semid, bogus_sops, 1);
-       printf("semop(%d, %p, %u) = %s\n",
-               bogus_semid, bogus_sops, 1, sprintrc(rc));
-
-       sem_b->sem_num = 0;
-       sem_b->sem_op = 1;
-       sem_b->sem_flg = SEM_UNDO;
-
-       sem_b2->sem_num = 0xface;
-       sem_b2->sem_op = 0xf00d;
-       sem_b2->sem_flg = 0xbeef;
+#else
 
-       rc = semop(bogus_semid, sem_b2, 2);
-       printf("semop(%d, [{%hu, %hd, %s%s%#hx}, ... /* %p */], %u) = %s\n",
-               bogus_semid, sem_b2->sem_num, sem_b2->sem_op,
-               sem_b2->sem_flg & SEM_UNDO ? "SEM_UNDO|" : "",
-               sem_b2->sem_flg & IPC_NOWAIT ? "IPC_NOWAIT|" : "",
-               (short) (sem_b2->sem_flg & ~(SEM_UNDO | IPC_NOWAIT)),
-               sem_b2 + 1, 2, sprintrc(rc));
+SKIP_MAIN_UNDEFINED("__NR_semop")
 
-       if (semop(id, sem_b, 1))
-               perror_msg_and_skip("semop, 1");
-       printf("semop(%d, [{0, 1, SEM_UNDO}], 1) = 0\n", id);
-
-       sem_b->sem_op = -1;
-       if (semop(id, sem_b, 1))
-               perror_msg_and_skip("semop, -1");
-       printf("semop(%d, [{0, -1, SEM_UNDO}], 1) = 0\n", id);
-
-       rc = semtimedop(bogus_semid, NULL, bogus_nsops, NULL);
-       printf("semtimedop(%d, NULL, %u, NULL) = %s\n",
-               bogus_semid, (unsigned) bogus_nsops, sprintrc(rc));
-
-       rc = semtimedop(id, sem_b + 1, 1, ts + 1);
-       printf("semtimedop(%d, %p, 1, %p) = %s\n",
-               id, sem_b + 1, ts + 1, sprintrc(rc));
-
-       ts->tv_sec = 1;
-       ts->tv_nsec = 123456789;
-       rc = semtimedop(bogus_semid, sem_b2, 2, ts);
-       printf("semtimedop(%d, [{%hu, %hd, %s%s%#hx}, ... /* %p */], %u"
-               ", {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
-               bogus_semid, sem_b2->sem_num, sem_b2->sem_op,
-               sem_b2->sem_flg & SEM_UNDO ? "SEM_UNDO|" : "",
-               sem_b2->sem_flg & IPC_NOWAIT ? "IPC_NOWAIT|" : "",
-               (short) (sem_b2->sem_flg & ~(SEM_UNDO | IPC_NOWAIT)),
-               sem_b2 + 1, 2,
-               (long long) ts->tv_sec, zero_extend_signed_to_ull(ts->tv_nsec),
-               sprintrc(rc));
-
-       sem_b->sem_op = 1;
-       if (semtimedop(id, sem_b, 1, NULL))
-               perror_msg_and_skip("semtimedop, 1");
-       printf("semtimedop(%d, [{0, 1, SEM_UNDO}], 1, NULL) = 0\n", id);
-
-       sem_b->sem_op = -1;
-       if (semtimedop(id, sem_b, 1, ts))
-               perror_msg_and_skip("semtimedop, -1");
-       printf("semtimedop(%d, [{0, -1, SEM_UNDO}], 1"
-              ", {tv_sec=%lld, tv_nsec=%llu}) = 0\n", id,
-              (long long) ts->tv_sec, zero_extend_signed_to_ull(ts->tv_nsec));
-
-       sem_b->sem_op = 1;
-       ts->tv_sec = 0xdeadbeefU;
-       ts->tv_nsec = 0xfacefeedU;
-       rc = semtimedop(id, sem_b, 1, ts);
-       printf("semtimedop(%d, [{0, 1, SEM_UNDO}], 1"
-              ", {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
-              id, (long long) ts->tv_sec,
-              zero_extend_signed_to_ull(ts->tv_nsec), sprintrc(rc));
-
-       sem_b->sem_op = -1;
-       ts->tv_sec = (time_t) 0xcafef00ddeadbeefLL;
-       ts->tv_nsec = (long) 0xbadc0dedfacefeedLL;
-       rc = semtimedop(id, sem_b, 1, ts);
-       printf("semtimedop(%d, [{0, -1, SEM_UNDO}], 1"
-              ", {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
-              id, (long long) ts->tv_sec,
-              zero_extend_signed_to_ull(ts->tv_nsec), sprintrc(rc));
-
-       puts("+++ exited with 0 +++");
-       return 0;
-}
+#endif
index 21b67eadaba389b7bee08154e2c09330adfb5dcc..4199975aa3a2533dd6c190a1ac5c0c3f935d9c9e 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (semop -a32 -e trace=semop,semtimedop); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (semop -a32 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a32 -e trace=semop,semtimedop
+run_strace_match_diff -a32 
diff --git a/tests-mx32/semtimedop.c b/tests-mx32/semtimedop.c
new file mode 100644 (file)
index 0000000..e3cea32
--- /dev/null
@@ -0,0 +1,155 @@
+/*
+ * Copyright (c) 2016-2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#if defined __NR_semtimedop || defined __NR_socketcall
+
+# include <sys/ipc.h>
+# include <sys/sem.h>
+# include <stdint.h>
+# include <stdio.h>
+# include <stdlib.h>
+# include <unistd.h>
+
+# define XLAT_MACROS_ONLY
+#  include "xlat/semop_flags.h"
+# undef XLAT_MACROS_ONLY
+
+union semun {
+       int val;
+       struct semid_ds *buf;
+       unsigned short *array;
+       struct seminfo *__buf;
+};
+
+static int id = -1;
+
+static void
+cleanup(void)
+{
+       semctl(id, 0, IPC_RMID, 0);
+       id = -1;
+}
+
+int
+main(void)
+{
+       static const int bogus_semid = 0xfdb97531;
+       static void * const bogus_sops = (void *) -1L;
+       static const size_t bogus_nsops = (size_t) 0xdefaceddeadbeefULL;
+
+       TAIL_ALLOC_OBJECT_CONST_PTR(struct timespec, ts);
+       int rc;
+
+       id = semget(IPC_PRIVATE, 1, 0600);
+       if (id < 0)
+               perror_msg_and_skip("semget");
+       atexit(cleanup);
+
+       union semun sem_union = { .val = 0 };
+       if (semctl(id, 0, SETVAL, sem_union) == -1)
+               perror_msg_and_skip("semctl");
+
+       TAIL_ALLOC_OBJECT_CONST_PTR(struct sembuf, sem_b);
+       TAIL_ALLOC_OBJECT_CONST_PTR(struct sembuf, sem_b2);
+
+       rc = semtimedop(bogus_semid, NULL, bogus_nsops, NULL);
+       printf("semtimedop(%d, NULL, %u, NULL) = %s\n",
+              bogus_semid, (unsigned) bogus_nsops, sprintrc(rc));
+
+       rc = semtimedop(bogus_semid, bogus_sops, 1, NULL);
+       printf("semtimedop(%d, %p, %u, NULL) = %s\n",
+              bogus_semid, bogus_sops, 1, sprintrc(rc));
+
+       sem_b->sem_num = 0;
+       sem_b->sem_op = 1;
+       sem_b->sem_flg = SEM_UNDO;
+
+       sem_b2->sem_num = 0xface;
+       sem_b2->sem_op = 0xf00d;
+       sem_b2->sem_flg = 0xbeef;
+
+       rc = semtimedop(bogus_semid, sem_b2, 2, NULL);
+       printf("semtimedop(%d, [{%hu, %hd, %s%s%#hx}, ... /* %p */], %u"
+              ", NULL) = %s\n",
+              bogus_semid, sem_b2->sem_num, sem_b2->sem_op,
+              sem_b2->sem_flg & SEM_UNDO ? "SEM_UNDO|" : "",
+              sem_b2->sem_flg & IPC_NOWAIT ? "IPC_NOWAIT|" : "",
+              (short) (sem_b2->sem_flg & ~(SEM_UNDO | IPC_NOWAIT)),
+              sem_b2 + 1, 2, sprintrc(rc));
+
+       if (semtimedop(id, sem_b, 1, NULL))
+               perror_msg_and_skip("semtimedop, 1");
+       printf("semtimedop(%d, [{0, 1, SEM_UNDO}], 1, NULL) = 0\n", id);
+
+       sem_b->sem_op = -1;
+       if (semtimedop(id, sem_b, 1, NULL))
+               perror_msg_and_skip("semtimedop, -1");
+       printf("semtimedop(%d, [{0, -1, SEM_UNDO}], 1, NULL) = 0\n", id);
+
+       rc = semtimedop(bogus_semid, NULL, bogus_nsops, NULL);
+       printf("semtimedop(%d, NULL, %u, NULL) = %s\n",
+               bogus_semid, (unsigned) bogus_nsops, sprintrc(rc));
+
+       rc = semtimedop(id, sem_b + 1, 1, ts + 1);
+       printf("semtimedop(%d, %p, 1, %p) = %s\n",
+               id, sem_b + 1, ts + 1, sprintrc(rc));
+
+       ts->tv_sec = 1;
+       ts->tv_nsec = 123456789;
+       rc = semtimedop(bogus_semid, sem_b2, 2, ts);
+       printf("semtimedop(%d, [{%hu, %hd, %s%s%#hx}, ... /* %p */], %u"
+               ", {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+               bogus_semid, sem_b2->sem_num, sem_b2->sem_op,
+               sem_b2->sem_flg & SEM_UNDO ? "SEM_UNDO|" : "",
+               sem_b2->sem_flg & IPC_NOWAIT ? "IPC_NOWAIT|" : "",
+               (short) (sem_b2->sem_flg & ~(SEM_UNDO | IPC_NOWAIT)),
+               sem_b2 + 1, 2,
+               (long long) ts->tv_sec, zero_extend_signed_to_ull(ts->tv_nsec),
+               sprintrc(rc));
+
+       sem_b->sem_op = 1;
+       if (semtimedop(id, sem_b, 1, NULL))
+               perror_msg_and_skip("semtimedop, 1");
+       printf("semtimedop(%d, [{0, 1, SEM_UNDO}], 1, NULL) = 0\n", id);
+
+       sem_b->sem_op = -1;
+       if (semtimedop(id, sem_b, 1, ts))
+               perror_msg_and_skip("semtimedop, -1");
+       printf("semtimedop(%d, [{0, -1, SEM_UNDO}], 1"
+              ", {tv_sec=%lld, tv_nsec=%llu}) = 0\n", id,
+              (long long) ts->tv_sec, zero_extend_signed_to_ull(ts->tv_nsec));
+
+       sem_b->sem_op = 1;
+       ts->tv_sec = 0xdeadbeefU;
+       ts->tv_nsec = 0xfacefeedU;
+       rc = semtimedop(id, sem_b, 1, ts);
+       printf("semtimedop(%d, [{0, 1, SEM_UNDO}], 1"
+              ", {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+              id, (long long) ts->tv_sec,
+              zero_extend_signed_to_ull(ts->tv_nsec), sprintrc(rc));
+
+       sem_b->sem_op = -1;
+       ts->tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+       ts->tv_nsec = (long) 0xbadc0dedfacefeedLL;
+       rc = semtimedop(id, sem_b, 1, ts);
+       printf("semtimedop(%d, [{0, -1, SEM_UNDO}], 1"
+              ", {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+              id, (long long) ts->tv_sec,
+              zero_extend_signed_to_ull(ts->tv_nsec), sprintrc(rc));
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_semtimedop || __NR_socketcall")
+
+#endif
diff --git a/tests-mx32/semtimedop.gen.test b/tests-mx32/semtimedop.gen.test
new file mode 100755 (executable)
index 0000000..1c767ff
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (semtimedop  ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff  
index 6ef3232ef73ac1594e37eb6bf83c66f87d986d33..cb6dd388709c87d06dedd087e98b5a1c1bffd16f 100644 (file)
@@ -1,13 +1,13 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_sendfile
 
@@ -50,14 +50,9 @@ main(void)
        const unsigned int blen = file_size / 3;
        const unsigned int alen = file_size - blen;
 
-       static const char fname[] = "sendfile-tmpfile";
-       int reg_in = open(fname, O_RDWR | O_CREAT | O_TRUNC, 0600);
-       if (reg_in < 0)
-               perror_msg_and_fail("open: %s", fname);
-       if (unlink(fname))
-               perror_msg_and_fail("unlink: %s", fname);
+       int reg_in = create_tmpfile(O_RDWR);
        if (ftruncate(reg_in, file_size))
-               perror_msg_and_fail("ftruncate: %s", fname);
+               perror_msg_and_fail("ftruncate(%d, %u)", reg_in, file_size);
 
        TAIL_ALLOC_OBJECT_VAR_PTR(uint32_t, p_off);
        void *p = p_off + 1;
index c318ace8da9f4558e2fbcdf9ecc1a41b87dcfcf7..9bcf1fc7b920ebf09a75ff053647e25bbb4ce646 100644 (file)
@@ -1,13 +1,13 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_sendfile64
 
@@ -50,14 +50,9 @@ main(void)
        const unsigned int blen = file_size / 3;
        const unsigned int alen = file_size - blen;
 
-       static const char fname[] = "sendfile64-tmpfile";
-       int reg_in = open(fname, O_RDWR | O_CREAT | O_TRUNC, 0600);
-       if (reg_in < 0)
-               perror_msg_and_fail("open: %s", fname);
-       if (unlink(fname))
-               perror_msg_and_fail("unlink: %s", fname);
+       int reg_in = create_tmpfile(O_RDWR);
        if (ftruncate(reg_in, file_size))
-               perror_msg_and_fail("ftruncate: %s", fname);
+               perror_msg_and_fail("ftruncate(%d, %u)", reg_in, file_size);
 
        TAIL_ALLOC_OBJECT_CONST_PTR(uint64_t, p_off);
        void *p = p_off + 1;
diff --git a/tests-mx32/set_mempolicy-Xabbrev.c b/tests-mx32/set_mempolicy-Xabbrev.c
new file mode 100644 (file)
index 0000000..2dbc487
--- /dev/null
@@ -0,0 +1 @@
+#include "set_mempolicy.c"
diff --git a/tests-mx32/set_mempolicy-Xabbrev.gen.test b/tests-mx32/set_mempolicy-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..f27e985
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (set_mempolicy-Xabbrev -a34 -s3 -Xabbrev -e trace=set_mempolicy); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a34 -s3 -Xabbrev -e trace=set_mempolicy
diff --git a/tests-mx32/set_mempolicy-Xraw.c b/tests-mx32/set_mempolicy-Xraw.c
new file mode 100644 (file)
index 0000000..47436b5
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "set_mempolicy.c"
diff --git a/tests-mx32/set_mempolicy-Xraw.gen.test b/tests-mx32/set_mempolicy-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..3b5a6a4
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (set_mempolicy-Xraw -a24 -s3 -Xraw -e trace=set_mempolicy); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a24 -s3 -Xraw -e trace=set_mempolicy
diff --git a/tests-mx32/set_mempolicy-Xverbose.c b/tests-mx32/set_mempolicy-Xverbose.c
new file mode 100644 (file)
index 0000000..0396cb4
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "set_mempolicy.c"
diff --git a/tests-mx32/set_mempolicy-Xverbose.gen.test b/tests-mx32/set_mempolicy-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..741229e
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (set_mempolicy-Xverbose -s3 -Xverbose -e trace=set_mempolicy); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -s3 -Xverbose -e trace=set_mempolicy
index 46703713f2dca92c3cc4f09abfe5f9c738303466..ee65c4c97c10adc6c566ec515658a9a3f09a8b46 100644 (file)
@@ -2,29 +2,92 @@
  * Check decoding of set_mempolicy syscall.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_set_mempolicy
 
-# include <errno.h>
 # include <stdio.h>
 # include <string.h>
 # include <unistd.h>
 
-# include "xlat.h"
-# include "xlat/policies.h"
-
 # define MAX_STRLEN 3
 # define NLONGS(n) ((n + 8 * sizeof(long) - 2) \
                      / (8 * sizeof(long)))
 
+static const char *errstr;
+
+static long
+k_set_mempolicy(const unsigned int mode,
+               const void *const nmask,
+               const unsigned long maxnode)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = fill | mode;
+       const kernel_ulong_t arg2 = (unsigned long) nmask;
+       const kernel_ulong_t arg3 = maxnode;
+       const long rc = syscall(__NR_set_mempolicy,
+                               arg1, arg2, arg3, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
+# if XLAT_RAW
+#  define out_str      raw
+# elif XLAT_VERBOSE
+#  define out_str      verbose
+# else
+#  define out_str      abbrev
+# endif
+
+static struct {
+       unsigned int val;
+       const char *raw;
+       const char *verbose;
+       const char *abbrev;
+} mpol_modes[] = {
+       { ARG_STR(0),
+         "0 /* MPOL_DEFAULT */",
+         "MPOL_DEFAULT" },
+       { ARG_STR(0x1),
+         "0x1 /* MPOL_PREFERRED */",
+         "MPOL_PREFERRED" },
+       { ARG_STR(0x2),
+         "0x2 /* MPOL_BIND */",
+         "MPOL_BIND" },
+       { ARG_STR(0x3),
+         "0x3 /* MPOL_INTERLEAVE */",
+         "MPOL_INTERLEAVE" },
+       { ARG_STR(0x4),
+         "0x4 /* MPOL_LOCAL */",
+         "MPOL_LOCAL" },
+       { ARG_STR(0x8000),
+         "0x8000 /* MPOL_DEFAULT|MPOL_F_STATIC_NODES */",
+         "MPOL_DEFAULT|MPOL_F_STATIC_NODES" },
+       { ARG_STR(0x4001),
+         "0x4001 /* MPOL_PREFERRED|MPOL_F_RELATIVE_NODES */",
+         "MPOL_PREFERRED|MPOL_F_RELATIVE_NODES" },
+       { ARG_STR(0xc002),
+         "0xc002 /* MPOL_BIND|MPOL_F_STATIC_NODES|MPOL_F_RELATIVE_NODES */",
+         "MPOL_BIND|MPOL_F_STATIC_NODES|MPOL_F_RELATIVE_NODES" },
+       { ARG_STR(0x5),
+         "0x5 /* MPOL_??? */",
+         "0x5 /* MPOL_??? */" },
+       { ARG_STR(0xffff3fff),
+         "0xffff3fff /* MPOL_??? */",
+         "0xffff3fff /* MPOL_??? */" },
+       { ARG_STR(0xffffffff),
+         "0xffffffff /* MPOL_F_STATIC_NODES|MPOL_F_RELATIVE_NODES|0xffff3fff */",
+         "MPOL_F_STATIC_NODES|MPOL_F_RELATIVE_NODES|0xffff3fff" }
+};
+
 static void
 print_nodes(const unsigned long maxnode, unsigned int offset)
 {
@@ -38,10 +101,9 @@ print_nodes(const unsigned long maxnode, unsigned int offset)
                tail_alloc(size ? size : (offset ? 1 : 0));
        memset(nodemask, 0, size);
 
-       long rc = syscall(__NR_set_mempolicy, 0, nodemask, maxnode);
-       const char *errstr = sprintrc(rc);
+       k_set_mempolicy(mpol_modes[0].val, nodemask, maxnode);
 
-       fputs("set_mempolicy(MPOL_DEFAULT, ", stdout);
+       printf("set_mempolicy(%s, ", mpol_modes[0].out_str);
 
        if (nlongs) {
                putc('[', stdout);
@@ -103,15 +165,24 @@ test_offset(const unsigned int offset)
 int
 main(void)
 {
-       if (syscall(__NR_set_mempolicy, 0, 0, 0))
+       if (k_set_mempolicy(mpol_modes[0].val, 0, 0))
                perror_msg_and_skip("set_mempolicy");
-       puts("set_mempolicy(MPOL_DEFAULT, NULL, 0) = 0");
+       printf("set_mempolicy(%s, NULL, 0) = 0\n", mpol_modes[0].out_str);
 
        const unsigned long *nodemask = (void *) 0xfacefeedfffffffeULL;
-       const unsigned long maxnode = (unsigned long) 0xcafef00dbadc0dedULL;
-       long rc = syscall(__NR_set_mempolicy, 1, nodemask, maxnode);
-       printf("set_mempolicy(MPOL_PREFERRED, %p, %lu) = %s\n",
-              nodemask, maxnode, sprintrc(rc));
+       const unsigned long maxnode = (unsigned long) 0xcafef00ddeadbeefULL;
+
+       for (unsigned int i = 0; i < ARRAY_SIZE(mpol_modes); ++i) {
+               if (i) {
+                       k_set_mempolicy(mpol_modes[i].val, 0, 0);
+                       printf("set_mempolicy(%s, NULL, 0) = %s\n",
+                              mpol_modes[i].out_str, errstr);
+               }
+
+               k_set_mempolicy(mpol_modes[i].val, nodemask, maxnode);
+               printf("set_mempolicy(%s, %p, %lu) = %s\n",
+                      mpol_modes[i].out_str, nodemask, maxnode, errstr);
+       }
 
        test_offset(0);
        test_offset(1);
index f8c81c759ba0486eecb4b92b4ee0e60c0c010374..a527e6af766a8d2c15fcd3d374b497313dac64b2 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (set_mempolicy -s3 -a35); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (set_mempolicy -a34 -s3); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -s3 -a35
+run_strace_match_diff -a34 -s3
index 747359c24af384baae1be50dcf31422c3e002794..9fa56c1482adcbf31b87c5648a2ccdadfee758a8 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2013-2015 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2013-2018 The strace developers.
+ * Copyright (c) 2013-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -9,25 +9,21 @@
 #include "tests.h"
 #include <stdio.h>
 #include <unistd.h>
-#ifdef HAVE_PRCTL
-# include <sys/prctl.h>
-#endif
+#include <sys/prctl.h>
 
 int main(int argc, char **argv)
 {
        if (argc < 2)
                return 99;
-#ifdef HAVE_PRCTL
        /* Turn off restrictions on tracing if applicable.  If the command
         * aren't available on this system, that's OK too.  */
-# ifndef PR_SET_PTRACER
-#  define PR_SET_PTRACER 0x59616d61
-# endif
-# ifndef PR_SET_PTRACER_ANY
-#  define PR_SET_PTRACER_ANY -1UL
-# endif
-       (void) prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY, 0, 0, 0);
+#ifndef PR_SET_PTRACER
+# define PR_SET_PTRACER 0x59616d61
 #endif
+#ifndef PR_SET_PTRACER_ANY
+# define PR_SET_PTRACER_ANY -1UL
+#endif
+       (void) prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY, 0, 0, 0);
        if (write(1, "\n", 1) != 1) {
                perror("write");
                return 99;
index 177c0fd7a989a8063b9dde521fe8b65ca71fc845..c2ff8eaafc9e020c0aea1beee78f2ced3adab481 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setdomainname
 
index 496b267988a2e9e6964f45dd204ca6f499dfed18..74d642c4dc383d66d61ab686408aa086d74835ff 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setfsgid
 
index a931602c06517fc9762d97d291137d2c2129dd6c..29b41a9b178ff94c4ba4d1972da90e0e5fb8338a 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setfsgid32
 
index 269d38f2ead57c800a088cbfa1bfd543ce8ea119..78d4eb529c4f0f2089455d90a4aac5b802b2d7df 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setfsuid
 
index cfcc0f83b977b269ab403aa4d1b3a1e896d3aa20..2d4fa83594ce97746355eaeb3e13fd822a2734e9 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setfsuid32
 
index 3374924ae1ff14c8d32321cf0635a483e9e9e4e7..aba372b89a28a4e5f734be888037e1d3bc2c0f3a 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setgid
 
index 427c77b04e9633e4da1252730c06262979d8cfc2..ac695e18c29f1ee2bd895878002eac1cebae541f 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setgid32
 
index a47f10242a92d5728c932142a4afd176c0cca341..a18fdc17dfd4911ac0f3425b736302653f691bea 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of setgroups/setgroups32 syscalls.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -17,7 +17,7 @@
 #else
 
 # include "tests.h"
-# include <asm/unistd.h>
+# include "scno.h"
 
 # ifdef __NR_setgroups
 
index 935b73a99f89fdcc8b78c973c028dcba105e0516..eb111f04aa7a46d3fa55a5145a18bb412065eacd 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setgroups32
 
index c9b89c12054b4dc540dc29d3bee85383f3124704..844fb6b8bd6c9e251bba04814d5396b02e4d1634 100644 (file)
@@ -3,14 +3,14 @@
  *
  * Copyright (c) 2016 Fei Jie <feij.fnst@cn.fujitsu.com>
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_sethostname
 
index 8ef7a19b1a562fa087e9c71f89f60f41bea9aa5f..21a8dc6a5487efa37cd3d1722c916b7bc1051d6a 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of setns syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setns
 
diff --git a/tests-mx32/setpgrp-exec.c b/tests-mx32/setpgrp-exec.c
new file mode 100644 (file)
index 0000000..8a84d43
--- /dev/null
@@ -0,0 +1,22 @@
+/*
+ * Copyright (c) 2020 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <unistd.h>
+
+int main(int argc, char **argv)
+{
+       if (argc < 2)
+               error_msg_and_fail("argc < 2");
+
+       if (setpgid(0, 0))
+               perror_msg_and_fail("setpgid");
+
+       (void) execvp(argv[1], argv + 1);
+
+       perror_msg_and_fail("execvp: %s", argv[1]);
+}
index 68639e6ad50d5037435358fed3349309842393c3..232a140ab49aaf2a71ddfb1b4004dc439f15b33e 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setregid
 
index 6291bc58a4e83d859317ab30e3cb7cb97db0eeb9..fca985ed8eb5fcf5cff22274a9686e4ab3ca6d69 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setregid32
 
index f3a160e37de76e27f10896b53924b11fb8223c80..6f64d0b06d96d8c641b0746eedbe6a7fe7ee5641 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setresgid
 
index e05ae8f8dd966c391eec2826af11e2f35456a1b3..45d252e69d3b36c500f36b2b4603eddffe3ced84 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setresgid32
 
index 855a9bf70290784043353ba174f851bf5dfeda72..d0821c39b0b5e7f302b57c90744624b629d34fac 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setresuid
 
index ccfc2a51c83240368a26014165ea312a1398105d..a8201810634242e62ecd5325540e647d4cf7b95e 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setresuid32
 
index 1e34dd181011740140b9385e88930a2e889d2fff..c1279c9c39486be9d0251f1492f19e5aaa1112b7 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setreuid
 
index c0345db793a92a9d883206ca82b75d0e2226e301..903a2203b98d13ba0ae191e4a46cefc87022cd00 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setreuid32
 
index 099e24020d2d1b5d36ee707ef6bfb4e7a7d0c2ea..886cf65acdbdee9b43dce944e9e14a54374aec0c 100644 (file)
@@ -9,7 +9,7 @@
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setrlimit
 
@@ -19,9 +19,13 @@ int
 main(void)
 {
        kernel_ulong_t *const rlimit = tail_alloc(sizeof(*rlimit) * 2);
-       const struct xlat *xlat;
+       const struct xlat_data *xlat;
+       size_t i = 0;
+
+       for (xlat = resources->data, i = 0; i < resources->size; ++xlat, ++i) {
+               if (!xlat->str)
+                       continue;
 
-       for (xlat = resources; xlat->str; ++xlat) {
                unsigned long res = 0xfacefeed00000000ULL | xlat->val;
                long rc = syscall(__NR_setrlimit, res, 0);
 # if XLAT_RAW
index 4a8243e8919856b377a4faa0b27aa4ecdae7c51a..dcbe8ae0811b590069ac3366164d19b05dd2110b 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setuid
 
index ba1b2e2da1ea90fcdd0cfe0b0d952cec21d81ddf..8de08a725e222f63874504268a6babff8d1ea47b 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setuid32
 
index fe6280ce84d33196606267b6808c5d8c8be0e225..182fdae825f61b827e4cabec5bbf198394107653 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of sigaction syscall.
  *
  * Copyright (c) 2014-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2014-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_sigaction
 
@@ -156,7 +157,7 @@ main(void)
        sigdelset(mask.libc, SIGHUP);
 
        memcpy(new_act->mask, mask.old, sizeof(mask.old));
-# ifdef SA_RESTORER
+# if defined SA_RESTORER && !(defined ALPHA || defined MIPS)
        new_act->flags = SA_RESTORER;
        new_act->restorer = (unsigned long) 0xdeadfacecafef00dULL;
 #  define SA_RESTORER_FMT ", sa_flags=SA_RESTORER, sa_restorer=%#lx"
index ab1eaeb7cacb088cd53c47e2986089bbf8add685..cfcc75cbd9b525b335bcd28d540a278e60117ebf 100755 (executable)
@@ -4,7 +4,7 @@
 # Starting with commit v4.17-5-gf83b49b strace is expected
 # to forward the signal mask to tracees unchanged.
 #
-# Copyright (c) 2017-2018 The strace developers.
+# Copyright (c) 2017-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -20,7 +20,7 @@ for sig in $(../list_sigaction_signum); do
                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
+               for i in '' -I1 -Iwaiting --interruptible=3 --interruptible=never_tstp; do
                        run_strace $i -enone $check_cmd
                done
        done
index 07a8180c65edcf22809a431131adfe7f3b96d286..e5555d61dcd55466acbe50447d553a9ecfb8d91b 100755 (executable)
@@ -4,7 +4,7 @@
 # Starting with commit v4.17-8-ge97a66f strace is expected
 # to forward the signal disposition to tracees unchanged.
 #
-# Copyright (c) 2017-2018 The strace developers.
+# Copyright (c) 2017-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -20,7 +20,7 @@ for sig in $(../list_sigaction_signum); do
                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
+               for i in '' --interruptible=always --interruptible=2 -Inever -I4; do
                        run_strace $i -enone $check_cmd
                done
        done
index 7789ff279535c33c890dff8dc6e377cea14a405e..c7e57ec6e1c9a0b33d0c30406b7fe22ccbc05ee4 100644 (file)
@@ -2,6 +2,7 @@
  * Check SIGCHLD siginfo_t decoding.
  *
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -63,7 +64,7 @@ main(void)
 
        sigsuspend(&unblock_mask);
        tprintf("--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED"
-               ", si_pid=%d, si_uid=%u, si_status=%d"
+               ", si_pid=%d, si_uid=%d, si_status=%d"
                ", si_utime=%llu, si_stime=%llu} ---\n",
                sinfo.si_pid, sinfo.si_uid, sinfo.si_status,
                zero_extend_signed_to_ull(sinfo.si_utime),
@@ -94,7 +95,7 @@ main(void)
 
        sigsuspend(&unblock_mask);
        tprintf("--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_KILLED"
-               ", si_pid=%d, si_uid=%u, si_status=SIGUSR1"
+               ", si_pid=%d, si_uid=%d, si_status=SIGUSR1"
                ", si_utime=%llu, si_stime=%llu} ---\n",
                sinfo.si_pid, sinfo.si_uid,
                zero_extend_signed_to_ull(sinfo.si_utime),
@@ -121,7 +122,7 @@ main(void)
 
        sigsuspend(&unblock_mask);
        tprintf("--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_STOPPED"
-               ", si_pid=%d, si_uid=%u, si_status=SIGSTOP"
+               ", si_pid=%d, si_uid=%d, si_status=SIGSTOP"
                ", si_utime=%llu, si_stime=%llu} ---\n",
                sinfo.si_pid, sinfo.si_uid,
                zero_extend_signed_to_ull(sinfo.si_utime),
@@ -131,7 +132,7 @@ main(void)
 
        sigsuspend(&unblock_mask);
        tprintf("--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_CONTINUED"
-               ", si_pid=%d, si_uid=%u, si_status=SIGCONT"
+               ", si_pid=%d, si_uid=%d, si_status=SIGCONT"
                ", si_utime=%llu, si_stime=%llu} ---\n",
                sinfo.si_pid, sinfo.si_uid,
                zero_extend_signed_to_ull(sinfo.si_utime),
@@ -142,7 +143,7 @@ main(void)
 
        sigsuspend(&unblock_mask);
        tprintf("--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED"
-               ", si_pid=%d, si_uid=%u, si_status=0"
+               ", si_pid=%d, si_uid=%d, si_status=0"
                ", si_utime=%llu, si_stime=%llu} ---\n",
                sinfo.si_pid, sinfo.si_uid,
                zero_extend_signed_to_ull(sinfo.si_utime),
index 40cd77f5c053687050d9e55c45525286d53e7bc3..db5a19a9f48ee15908ef851aa5069f1280f7a0c1 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of signal syscall.
  *
  * Copyright (c) 2017-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_signal
 
diff --git a/tests-mx32/signal_receive--pidns-translation.c b/tests-mx32/signal_receive--pidns-translation.c
new file mode 100644 (file)
index 0000000..b4e3b2f
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "signal_receive.c"
diff --git a/tests-mx32/signal_receive--pidns-translation.gen.test b/tests-mx32/signal_receive--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..6306900
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (signal_receive--pidns-translation test_pidns -a16 -e trace=kill); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a16 -e trace=kill
index ad3b4ebd57643cc6d491b584738486067c9d5d01..46cac57121e70a62215c848473f161b810109422 100644 (file)
@@ -1,13 +1,14 @@
 /*
  * Check decoding of signal delivery.
  *
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
+#include "pidns.h"
 #include <signal.h>
 #include <stdio.h>
 #include <unistd.h>
@@ -26,10 +27,13 @@ handler(int sig, siginfo_t *info, void *ucontext)
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        static const char prefix[] = "KERNEL BUG";
        int printed = 0;
 
        const int pid = getpid();
+       const char *pid_str = pidns_pid2str(PT_TGID);
        const int uid = geteuid();
 
        for (int sig = 1; sig <= 31; ++sig) {
@@ -73,10 +77,13 @@ main(void)
                const int e_pid = s_pid;
                const int e_uid = s_uid;
 #endif
-               printf("kill(%d, %s) = 0\n", pid, signal2name(sig));
-               printf("--- %s {si_signo=%s, si_code=SI_USER, si_pid=%d"
+               pidns_print_leader();
+               printf("kill(%d%s, %s) = 0\n", pid, pid_str, signal2name(sig));
+               pidns_print_leader();
+               printf("--- %s {si_signo=%s, si_code=SI_USER, si_pid=%d%s"
                       ", si_uid=%d} ---\n",
-                      signal2name(sig), signal2name(e_sig), e_pid, e_uid);
+                      signal2name(sig), signal2name(e_sig),
+                      e_pid, pid_str, e_uid);
 
                if (s_code || sig != s_sig || pid != s_pid || uid != s_uid) {
                        /*
@@ -91,11 +98,11 @@ main(void)
                        }
                        fprintf(stderr,
                                "%s: expected: si_signo=%d, si_code=%d"
-                               ", si_pid=%d, si_uid=%d\n"
+                               ", si_pid=%d%s, si_uid=%d\n"
                                "%s: received: si_signo=%d, si_code=%d"
-                               ", si_pid=%d, si_uid=%d\n",
-                               prefix, sig, SI_USER, pid, uid,
-                               prefix, sig, s_code, s_pid, s_uid);
+                               ", si_pid=%d%s, si_uid=%d\n",
+                               prefix, sig, SI_USER, pid, pid_str, uid,
+                               prefix, sig, s_code, s_pid, pid_str, s_uid);
                }
        }
 
@@ -104,6 +111,7 @@ main(void)
                        "*** PLEASE FIX THE KERNEL ***\n", prefix);
        }
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
index 71df2dccef0622e57f604dbfced641bc364882d6..0ab6d21dd8b6b39292b0a87eafc966725d2a3b14 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of signalfd4 syscall.
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 
 #include "tests.h"
 #include <fcntl.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined HAVE_SYS_SIGNALFD_H \
  && defined HAVE_SIGNALFD \
index f065c8738662807f695ff18bf2b6539d8f5e0eb3..f39b3a483e3f630460e7d99d699a94894ad5c449 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of sigpending syscall.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_sigpending
 
index 566b8346e6f63e99191941c2dad933c712b7fcf8..4ab36d0002011d8c34b89ba4eb46285b8b655228 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of sigprocmask syscall.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_sigprocmask
 
index 5dece0a415510215004cb47ef0cf0ac32441a62d..4b7516a632099334471ca1f8e4a7d898c0712fde 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __powerpc64__ \
  || (defined __sparc__ && defined __arch64__)
index 11ffae83cdec3f5855ab8769111aa00e49b55158..165c68fa301344e155f31b05520e6a8d9443b729 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of sigsuspend syscall.
  *
  * Copyright (c) 2017-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_sigsuspend
 
index 0cdfcebc94e20efa26125139fea50c8a41cd81e1..f8fca44648a6017eebb1782e5ca109a59b144d8a 100644 (file)
@@ -2,14 +2,21 @@
  * A simple nanosleep based sleep(1) replacement.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <stdlib.h>
-#include <time.h>
+#include "scno.h"
+
+#ifdef __NR_nanosleep
+
+# include <stdlib.h>
+# include <unistd.h>
+
+# include "kernel_old_timespec.h"
 
 int
 main(int ac, char **av)
@@ -20,10 +27,16 @@ main(int ac, char **av)
        if (ac > 2)
                error_msg_and_fail("extra operand");
 
-       struct timespec ts = { atoi(av[1]), 0 };
+       kernel_old_timespec_t ts = { atoi(av[1]), 0 };
 
-       if (nanosleep(&ts, NULL))
+       if (syscall(__NR_nanosleep, (unsigned long) &ts, 0))
                perror_msg_and_fail("nanosleep");
 
        return 0;
 }
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_nanosleep")
+
+#endif
index 2592a3c178d37031a42d953848395c0b58be7ae6..03211ab91334f061fa04ba80ad23fb9b77ebad78 100644 (file)
@@ -2,6 +2,7 @@
  * Check decoding of SO_ERROR socket option.
  *
  * Copyright (c) 2018 Masatake YAMATO <yamato@redhat.com>
+ * Copyright (c) 2018-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -37,7 +38,7 @@ reserve_ephemeral_port(void)
        for (in_port_t port = 49152; port < 61000; port++) {
                /* Just bind here. No listen. */
                addr.sin_port = htons(port);
-               if (bind(sd, &addr, sizeof(addr)) == 0)
+               if (bind(sd, (void *) &addr, sizeof(addr)) == 0)
                        return port;
        }
        error_msg_and_skip("no ephemeral port available for test purposes");
@@ -69,7 +70,7 @@ main(void)
                .sin_addr.s_addr = htonl(INADDR_LOOPBACK),
                .sin_port = htons(port),
        };
-       if (connect(fd, &addr, sizeof(addr)) == 0)
+       if (connect(fd, (void *) &addr, sizeof(addr)) == 0)
                error_msg_and_skip("connect unexpectedly succeeded");
        if (errno != EINPROGRESS)
                perror_msg_and_skip("connect failed for unexpected reason");
diff --git a/tests-mx32/so_peercred--pidns-translation.c b/tests-mx32/so_peercred--pidns-translation.c
new file mode 100644 (file)
index 0000000..402bbcf
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "so_peercred.c"
diff --git a/tests-mx32/so_peercred--pidns-translation.gen.test b/tests-mx32/so_peercred--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..956f8f3
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (so_peercred--pidns-translation test_pidns -e trace=getsockopt); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -e trace=getsockopt
index 151bb1755ef878a71c7e97a8fec5554e4c6f482c..e34d6ee1a10f48846ac413ae4dc392403533678e 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of SO_PEERCRED socket option.
  *
  * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
+#include "pidns.h"
 
 #include <stddef.h>
 #include <stdio.h>
@@ -53,6 +54,8 @@ so_str(void)
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        TAIL_ALLOC_OBJECT_CONST_PTR(struct ucred, peercred);
        TAIL_ALLOC_OBJECT_CONST_PTR(socklen_t, len);
 
@@ -75,6 +78,8 @@ main(void)
        struct ucred *const gid_truncated =
                tail_alloc(sizeof_gid_truncated);
 
+       const char *pid_str = pidns_pid2str(PT_TGID);
+
        int sv[2];
        if (socketpair(AF_UNIX, SOCK_STREAM, 0, sv))
                 perror_msg_and_skip("socketpair AF_UNIX SOCK_STREAM");
@@ -82,8 +87,10 @@ main(void)
        /* classic getsockopt */
        *len = sizeof(*peercred);
        get_peercred(sv[0], peercred, len);
+       pidns_print_leader();
        printf("getsockopt(%d, %s", sv[0], so_str());
        PRINT_FIELD_D(", {", *peercred, pid);
+       printf("%s", pid_str);
        PRINT_FIELD_UID(", ", *peercred, uid);
        PRINT_FIELD_UID(", ", *peercred, gid);
        printf("}, [%d]) = %s\n", *len, errstr);
@@ -91,14 +98,17 @@ main(void)
        /* getsockopt with zero optlen */
        *len = 0;
        get_peercred(sv[0], peercred, len);
+       pidns_print_leader();
        printf("getsockopt(%d, %s, %p, [0]) = %s\n",
               sv[0], so_str(), peercred, errstr);
 
        /* getsockopt with optlen larger than necessary - shortened */
        *len = sizeof(*peercred) + 1;
        get_peercred(sv[0], peercred, len);
+       pidns_print_leader();
        printf("getsockopt(%d, %s", sv[0], so_str());
        PRINT_FIELD_D(", {", *peercred, pid);
+       printf("%s", pid_str);
        PRINT_FIELD_UID(", ", *peercred, uid);
        PRINT_FIELD_UID(", ", *peercred, gid);
        printf("}, [%u->%d]) = %s\n",
@@ -110,6 +120,7 @@ main(void)
         */
        *len = sizeof_pid_truncated;
        get_peercred(sv[0], pid_truncated, len);
+       pidns_print_leader();
        printf("getsockopt(%d, %s, {pid=", sv[0], so_str());
        print_quoted_hex(pid_truncated, *len);
        printf("}, [%d]) = %s\n", *len, errstr);
@@ -120,8 +131,10 @@ main(void)
         */
        *len = sizeof_pid;
        get_peercred(sv[0], pid, len);
+       pidns_print_leader();
        printf("getsockopt(%d, %s", sv[0], so_str());
        PRINT_FIELD_D(", {", *pid, pid);
+       printf("%s", pid_str);
        printf("}, [%d]) = %s\n", *len, errstr);
 
        /*
@@ -136,8 +149,10 @@ main(void)
         * to struct ucred.pid field.
         */
        memcpy(uid, uid_truncated, sizeof_uid_truncated);
+       pidns_print_leader();
        printf("getsockopt(%d, %s", sv[0], so_str());
        PRINT_FIELD_D(", {", *uid, pid);
+       printf("%s", pid_str);
        printf(", uid=");
        print_quoted_hex(&uid->uid, sizeof_uid_truncated -
                                    offsetof(struct ucred, uid));
@@ -149,8 +164,10 @@ main(void)
         */
        *len = sizeof_uid;
        get_peercred(sv[0], uid, len);
+       pidns_print_leader();
        printf("getsockopt(%d, %s", sv[0], so_str());
        PRINT_FIELD_D(", {", *uid, pid);
+       printf("%s", pid_str);
        PRINT_FIELD_UID(", ", *uid, uid);
        printf("}, [%d]) = %s\n", *len, errstr);
 
@@ -166,8 +183,10 @@ main(void)
         * to struct ucred.pid and struct ucred.uid fields.
         */
        memcpy(peercred, gid_truncated, sizeof_gid_truncated);
+       pidns_print_leader();
        printf("getsockopt(%d, %s", sv[0], so_str());
        PRINT_FIELD_D(", {", *peercred, pid);
+       printf("%s", pid_str);
        PRINT_FIELD_UID(", ", *peercred, uid);
        printf(", gid=");
        print_quoted_hex(&peercred->gid, sizeof_gid_truncated -
@@ -177,14 +196,17 @@ main(void)
        /* getsockopt optval EFAULT */
        *len = sizeof(*peercred);
        get_peercred(sv[0], &peercred->uid, len);
+       pidns_print_leader();
        printf("getsockopt(%d, %s, %p, [%d]) = %s\n",
               sv[0], so_str(), &peercred->uid, *len, errstr);
 
        /* getsockopt optlen EFAULT */
        get_peercred(sv[0], peercred, len + 1);
+       pidns_print_leader();
        printf("getsockopt(%d, %s, %p, %p) = %s\n",
               sv[0], so_str(), peercred, len + 1, errstr);
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
index ac483646cbc5abc107cf97f1548f22140cbe205e..5b6c5d846802e3eee60c4f19c286b1444c9b6e44 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of socket filters.
  *
  * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 
 #define HEX_FMT "%#x"
 
-#if XLAT_RAW
-# define XLAT_FMT HEX_FMT
-# define XLAT_ARGS(a_) (a_)
-#elif XLAT_VERBOSE
-# define XLAT_FMT HEX_FMT " /* %s */"
-# define XLAT_ARGS(a_) (a_), #a_
-#else
-# define XLAT_FMT "%s"
-# define XLAT_ARGS(a_) #a_
-#endif
-
 #define PRINT_STMT(pfx, code_fmt, k_fmt, ...)  \
        printf("%sBPF_STMT(" code_fmt ", " k_fmt ")", pfx, __VA_ARGS__)
 
index aa68a7eb5d55ef78d27250f565cee1dea41ac225..664a769312441c002c7f6e7dc9d423880fdb8983 100644 (file)
@@ -2,15 +2,16 @@
  * Check decoding of socketcall syscall.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
-#ifdef __NR_socketcall
+#if defined __NR_socketcall && !defined __ARM_EABI__
 
 # include <assert.h>
 # include <stdio.h>
@@ -22,9 +23,9 @@
 static const char *
 xlookup_uint(const struct xlat *xlat, const unsigned int val)
 {
-       for (; xlat->str != NULL; xlat++)
-               if (xlat->val == val)
-                       return xlat->str;
+       for (size_t i = 0; i < xlat->size; i++)
+               if (xlat->data[i].val == val)
+                       return xlat->data[i].str;
        return NULL;
 }
 
@@ -52,8 +53,8 @@ test_socketcall(const int i, const void *const addr)
 int
 main(void)
 {
-       assert((unsigned) sc_min == socketcalls[0].val);
-       assert((unsigned) sc_max == socketcalls[ARRAY_SIZE(socketcalls) - 2].val);
+       assert(0 == socketcalls->data[0].val);
+       assert((unsigned) sc_max == socketcalls->data[socketcalls->size - 1].val);
 
        const unsigned long *const args = tail_alloc(sizeof(*args) * 6);
        efault = tail_alloc(1) + 1;
@@ -70,6 +71,6 @@ main(void)
 
 #else
 
-SKIP_MAIN_UNDEFINED("__NR_socketcall")
+SKIP_MAIN_UNDEFINED("__NR_socketcall && !__ARM_EABI__")
 
 #endif
index c265992583b60dbfade3758183cb8769f8e33eee..9dd1f961092540604f794eab2ab5f829cc7f9930 100644 (file)
@@ -2,6 +2,7 @@
  * Check decoding of timestamp control messages.
  *
  * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2019-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -9,6 +10,7 @@
 
 #include "tests.h"
 #include <stdio.h>
+#include <string.h>
 #include <unistd.h>
 #include <sys/socket.h>
 
@@ -17,6 +19,9 @@
 # include <linux/time_types.h>
 #endif
 
+#include "kernel_timeval.h"
+#include "kernel_old_timespec.h"
+
 #define XLAT_MACROS_ONLY
 #include "xlat/sock_options.h"
 #undef XLAT_MACROS_ONLY
@@ -26,16 +31,18 @@ print_timestamp_old(const struct cmsghdr *c)
 {
        const void *cmsg_header = c;
        const void *cmsg_data = CMSG_DATA(c);
-       const struct timeval *tv = cmsg_data;
-       const unsigned int expected_len = sizeof(*tv);
+       kernel_old_timeval_t tv;
+       const unsigned int expected_len = sizeof(tv);
        const unsigned int data_len = c->cmsg_len - (cmsg_data - cmsg_header);
 
        if (expected_len != data_len)
                perror_msg_and_fail("sizeof(struct timeval) = %u"
                                    ", data_len = %u\n",
                                    expected_len, data_len);
+
+       memcpy(&tv, cmsg_data, sizeof(tv));
        printf("{tv_sec=%lld, tv_usec=%lld}",
-              (long long) tv->tv_sec, (long long) tv->tv_usec);
+              (long long) tv.tv_sec, (long long) tv.tv_usec);
 }
 
 static void
@@ -43,16 +50,18 @@ print_timestampns_old(const struct cmsghdr *c)
 {
        const void *cmsg_header = c;
        const void *cmsg_data = CMSG_DATA(c);
-       const struct timespec *ts = cmsg_data;
-       const unsigned int expected_len = sizeof(*ts);
+       kernel_old_timespec_t ts;
+       const unsigned int expected_len = sizeof(ts);
        const unsigned int data_len = c->cmsg_len - (cmsg_data - cmsg_header);
 
        if (expected_len != data_len)
                perror_msg_and_fail("sizeof(struct timespec) = %u"
                                    ", data_len = %u\n",
                                    expected_len, data_len);
+
+       memcpy(&ts, cmsg_data, sizeof(ts));
        printf("{tv_sec=%lld, tv_nsec=%lld}",
-              (long long) ts->tv_sec, (long long) ts->tv_nsec);
+              (long long) ts.tv_sec, (long long) ts.tv_nsec);
 }
 
 #ifdef HAVE_STRUCT___KERNEL_SOCK_TIMEVAL
@@ -61,16 +70,18 @@ print_timestamp_new(const struct cmsghdr *c)
 {
        const void *cmsg_header = c;
        const void *cmsg_data = CMSG_DATA(c);
-       const struct __kernel_sock_timeval *tv = cmsg_data;
-       const unsigned int expected_len = sizeof(*tv);
+       struct __kernel_sock_timeval tv;
+       const unsigned int expected_len = sizeof(tv);
        const unsigned int data_len = c->cmsg_len - (cmsg_data - cmsg_header);
 
        if (expected_len != data_len)
                perror_msg_and_fail("sizeof(struct __kernel_sock_timeval) = %u"
                                    ", data_len = %u\n",
                                    expected_len, data_len);
+
+       memcpy(&tv, cmsg_data, sizeof(tv));
        printf("{tv_sec=%lld, tv_usec=%lld}",
-              (long long) tv->tv_sec, (long long) tv->tv_usec);
+              (long long) tv.tv_sec, (long long) tv.tv_usec);
 }
 #endif /* HAVE_STRUCT___KERNEL_SOCK_TIMEVAL */
 
@@ -80,16 +91,18 @@ print_timestampns_new(const struct cmsghdr *c)
 {
        const void *cmsg_header = c;
        const void *cmsg_data = CMSG_DATA(c);
-       const struct __kernel_timespec *ts = cmsg_data;
-       const unsigned int expected_len = sizeof(*ts);
+       struct __kernel_timespec ts;
+       const unsigned int expected_len = sizeof(ts);
        const unsigned int data_len = c->cmsg_len - (cmsg_data - cmsg_header);
 
        if (expected_len != data_len)
                perror_msg_and_fail("sizeof(struct __kernel_timespec) = %u"
                                    ", data_len = %u\n",
                                    expected_len, data_len);
+
+       memcpy(&ts, cmsg_data, sizeof(ts));
        printf("{tv_sec=%lld, tv_nsec=%lld}",
-              (long long) ts->tv_sec, (long long) ts->tv_nsec);
+              (long long) ts.tv_sec, (long long) ts.tv_nsec);
 }
 #endif /* HAVE_STRUCT___KERNEL_TIMESPEC */
 
index 2acdde7f2b3be3c6e09d9e180ebca9cb4ab4510c..f62d5ba280ca923fa78ccab9b41bbd6a056b4ee5 100644 (file)
@@ -2,14 +2,14 @@
  * This file is part of splice strace test.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_splice
 
index 8a26a79cb36c161e27813527618763180ffbdad7..be987a9458054e1d0c06a3ed30f613706b477b70 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014-2018 The strace developers.
+ * Copyright (c) 2014-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -7,7 +7,10 @@
 
 #include "stack-fcall.h"
 
-int f0(int i)
+int
+f0(int i, unsigned long f)
 {
-       return f1(i) - i;
+       f ^= (unsigned long) (void *) f0;
+       COMPLEX_BODY(i, f);
+       return f1(i, f) - i;
 }
index b5cd89b38ac1b62de7dc17aefa2c1460c2f1928b..88f33b9b22b5cbefc7f5663ff9febe28d2ce5725 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014-2018 The strace developers.
+ * Copyright (c) 2014-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -7,7 +7,10 @@
 
 #include "stack-fcall.h"
 
-int f1(int i)
+int
+f1(int i, unsigned long f)
 {
-       return f2(i) + i;
+       f ^= (unsigned long) (void *) f1;
+       COMPLEX_BODY(i, f);
+       return f2(i, f) + i;
 }
index 16beee5888f7301a6f74c49267b12725db1260a4..00235903c591bcf0cc803846252ea6f04442f8d1 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014-2018 The strace developers.
+ * Copyright (c) 2014-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -7,7 +7,10 @@
 
 #include "stack-fcall.h"
 
-int f2(int i)
+int
+f2(int i, unsigned long f)
 {
-       return f3(i) - i;
+       f ^= (unsigned long) (void *) f2;
+       COMPLEX_BODY(i, f);
+       return f3(i, f) - i;
 }
index 538b6565ae5aa623adf4f802b2b23d2cfd560c11..ea7d5feda606a11b1b522100e49948c61e1e3747 100644 (file)
@@ -1,23 +1,28 @@
 /*
- * Copyright (c) 2014-2019 The strace developers.
+ * Copyright (c) 2014-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include <signal.h>
-#include <unistd.h>
-
 #include "stack-fcall.h"
 
-int f3(int i)
+int
+f3(int i, unsigned long f)
 {
+       f ^= (unsigned long) (void *) f3;
+       COMPLEX_BODY(i, f);
        switch (i) {
        case 1:
-               return kill(getpid(), SIGURG);
-
+               i -= chdir("");
+               break;
+       case 2:
+               i -= kill(getpid(), SIGURG) - 1;
+               break;
        default:
-               return chdir("") + i;
+               i -= syscall(__NR_exit, i - 3);
+               break;
        }
-
+       return i;
 }
diff --git a/tests-mx32/stack-fcall-attach.c b/tests-mx32/stack-fcall-attach.c
new file mode 100644 (file)
index 0000000..f2db2b7
--- /dev/null
@@ -0,0 +1,2 @@
+#define ATTACH_MODE 1
+#include "stack-fcall.c"
index cf4000e56f5aa6bb77f3d4f0fe72779aed01e73e..d0c62143e62067baf5f488e1b5ee4e4ef9f8ab01 100644 (file)
@@ -1,15 +1,26 @@
 /*
- * Copyright (c) 2014-2018 The strace developers.
+ * Copyright (c) 2014-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
+#include "tests.h"
+#include <unistd.h>
 #include "stack-fcall.h"
 
-int main(void)
+#ifndef ATTACH_MODE
+# define ATTACH_MODE 0
+#endif
+
+int
+main(int ac, char **av)
 {
-       f0(0);
-       f0(1);
-       return 0;
+#if ATTACH_MODE
+       /* sleep a bit to let the tracer time to catch up */
+       sleep(1);
+#endif
+
+       for (;;)
+               ac += f0(ac, (unsigned long) (void *) main);
 }
index cca0f94f255d0c6f96be54a46c77a94683d6f40a..3afa8a265bd90c361b40712b9ccc2472b185ed8a 100644 (file)
@@ -1,10 +1,13 @@
 /*
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
+#include <unistd.h>
+#include "scno.h"
+
 #ifdef MANGLE
 
 # define f0 _ZN2ns2f0Ei
 
 #endif
 
-int f0(int i);
-int f1(int i);
-int f2(int i);
-int f3(int i);
+int f0(int i, unsigned long);
+int f1(int i, unsigned long);
+int f2(int i, unsigned long);
+int f3(int i, unsigned long);
+
+#define COMPLEX_BODY(i, f)                             \
+       do {                                            \
+               int tid = syscall(__NR_gettid, f);      \
+               if (i == tid)                           \
+                       return 0;                       \
+               switch ((unsigned int) tid & 3) {       \
+                       case 0:                         \
+                               i += f0(tid, f);        \
+                               break;                  \
+                       case 1:                         \
+                               i += f1(tid, f);        \
+                               break;                  \
+                       case 2:                         \
+                               i += f2(tid, f);        \
+                               break;                  \
+                       case 3:                         \
+                               i += f3(tid, f);        \
+                               break;                  \
+               }                                       \
+       } while (0)
index 8c8daad1bbb255a5dcf011ded22bccbaeac0abc8..f161b4f1638a18b3bede9a752222dd8e17868fda 100644 (file)
@@ -1,13 +1,13 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_stat
 
index 13ccd0b866d5e23261abc8122f107487a1fe32ec..83037995e6b405dd11b30a0c22abd1a0d5f8937d 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (stat -a32 -v -P stat.sample -P /dev/full); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (stat -a30 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
+run_strace_match_diff -a30 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full
index 12ded4321aea8dca6fd13188628b318b71df893f..5c6b56b89a81d339f0f59fc0e8cef842e60b9a34 100644 (file)
@@ -1,13 +1,13 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_stat64
 
index f49df37a0f699a3c56526f417882587fe1159335..fe86da1db73b24ee8e45dfe7277817e37ddbc261 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (stat64 -a32 -v -P stat.sample -P /dev/full); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (stat64 -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
+run_strace_match_diff -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full
index 5672a7fc98a5f305f31c989961a07a7d2ebc77bd..13b98fa50cdd2184a953d361090ba60b17800834 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2014-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2014-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_statfs
 
index 1e0a4b243fb46e9bfde18075b1d95adc8325db11..5cd92529f87664e281dc698bbe36a794446dbd5f 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_statfs64
 
diff --git a/tests-mx32/status-all.c b/tests-mx32/status-all.c
new file mode 100644 (file)
index 0000000..db9510a
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+ * Check status=all filtering for failed and successful syscalls.
+ *
+ * Copyright (c) 2019 Intel Corporation
+ * Copyright (c) 2019 Paul Chaignon <paul.chaignon@gmail.com>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <stdio.h>
+
+int
+main(void)
+{
+       static const char sample_valid[] = ".";
+       static const char sample_invalid[] = "";
+
+       test_status_chdir(sample_valid, 1, 1);
+       test_status_chdir(sample_invalid, 1, 1);
+       puts("+++ exited with 0 +++");
+       return 0;
+}
diff --git a/tests-mx32/status-all.gen.test b/tests-mx32/status-all.gen.test
new file mode 100755 (executable)
index 0000000..0a10ba4
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (status-all -a10 -e trace=chdir --status=detached,failed,successful,unavailable,unfinished); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10 -e trace=chdir --status=detached,failed,successful,unavailable,unfinished
diff --git a/tests-mx32/status-detached.expected b/tests-mx32/status-detached.expected
new file mode 100644 (file)
index 0000000..0a6325f
--- /dev/null
@@ -0,0 +1 @@
+nanosleep\({tv_sec=2, tv_nsec=0},  <detached \.\.\.>
diff --git a/tests-mx32/status-detached.test b/tests-mx32/status-detached.test
new file mode 100755 (executable)
index 0000000..3569272
--- /dev/null
@@ -0,0 +1,20 @@
+#!/bin/sh
+#
+# Check -e status=detached option.
+#
+# Copyright (c) 2019 Paul Chaignon <paul.chaignon@gmail.com>
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/init.sh"
+
+run_prog ../sleep 0
+
+# -I2 avoids blocking all fatal signals, the default when using -o.
+$STRACE -o "$LOG" -I2 -e status=detached ../sleep 2 &
+pid=$!
+../sleep 1
+kill $pid
+wait
+match_grep
diff --git a/tests-mx32/status-failed-long.c b/tests-mx32/status-failed-long.c
new file mode 100644 (file)
index 0000000..ac61c51
--- /dev/null
@@ -0,0 +1 @@
+#include "status-failed.c"
diff --git a/tests-mx32/status-failed-long.gen.test b/tests-mx32/status-failed-long.gen.test
new file mode 100755 (executable)
index 0000000..db2abc8
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (status-failed-long -a10 -e trace=chdir --failed-only); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10 -e trace=chdir --failed-only
diff --git a/tests-mx32/status-failed-status.c b/tests-mx32/status-failed-status.c
new file mode 100644 (file)
index 0000000..ac61c51
--- /dev/null
@@ -0,0 +1 @@
+#include "status-failed.c"
diff --git a/tests-mx32/status-failed-status.gen.test b/tests-mx32/status-failed-status.gen.test
new file mode 100755 (executable)
index 0000000..f51b19f
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (status-failed-status -a10 -e trace=chdir -e status=failed); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10 -e trace=chdir -e status=failed
diff --git a/tests-mx32/status-failed.c b/tests-mx32/status-failed.c
new file mode 100644 (file)
index 0000000..81d2885
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+ * Check status=failed filtering for failed and successful syscalls.
+ *
+ * Copyright (c) 2019 Intel Corporation
+ * Copyright (c) 2019 Paul Chaignon <paul.chaignon@gmail.com>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <stdio.h>
+
+int
+main(void)
+{
+       static const char sample_valid[] = ".";
+       static const char sample_invalid[] = "";
+
+       test_status_chdir(sample_valid, 0, 1);
+       test_status_chdir(sample_invalid, 0, 1);
+       puts("+++ exited with 0 +++");
+       return 0;
+}
diff --git a/tests-mx32/status-failed.gen.test b/tests-mx32/status-failed.gen.test
new file mode 100755 (executable)
index 0000000..fcc7790
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (status-failed -a10 -e trace=chdir -Z); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10 -e trace=chdir -Z
diff --git a/tests-mx32/status-none-f.c b/tests-mx32/status-none-f.c
new file mode 100644 (file)
index 0000000..b41a566
--- /dev/null
@@ -0,0 +1,19 @@
+/*
+ * Check basic seccomp filtering with large number of traced syscalls.
+ *
+ * Copyright (c) 2018-2019 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <stdio.h>
+#include <unistd.h>
+
+int
+main(void)
+{
+       printf("%-5d +++ exited with 0 +++\n", getpid());
+       return 0;
+}
diff --git a/tests-mx32/status-none-threads.c b/tests-mx32/status-none-threads.c
new file mode 100644 (file)
index 0000000..ae93960
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Check status=none filtering when a non-leader thread invokes execve.
+ *
+ * Copyright (c) 2019 Paul Chaignon <paul.chaignon@gmail.com>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <errno.h>
+#include <pthread.h>
+#include <stdio.h>
+#include <unistd.h>
+#include "scno.h"
+
+static pid_t leader;
+
+static void *
+thread(void *arg)
+{
+       struct timespec ts = { .tv_nsec = 100000000 };
+       (void) nanosleep(&ts, NULL);
+
+       printf("%-5d +++ superseded by execve in pid %u +++\n",
+              leader, (int) syscall(__NR_gettid));
+
+       char *argv[] = {((char **) arg)[0], (char *) "0", NULL};
+       execve(argv[0], argv, NULL);
+       perror_msg_and_fail("execve");
+}
+
+int
+main(int ac, char **av)
+{
+       setvbuf(stdout, NULL, _IONBF, 0);
+       leader = getpid();
+
+       if (ac > 1) {
+               printf("%-5d +++ exited with 0 +++\n", leader);
+               return 0;
+       }
+
+       pthread_t t;
+       errno = pthread_create(&t, NULL, thread, av);
+       if (errno)
+               perror_msg_and_fail("pthread_create");
+
+       struct timespec ts = { .tv_sec = 123 };
+       (void) nanosleep(&ts, 0);
+
+       return 1;
+}
diff --git a/tests-mx32/status-none-threads.test b/tests-mx32/status-none-threads.test
new file mode 100755 (executable)
index 0000000..630424e
--- /dev/null
@@ -0,0 +1,47 @@
+#!/bin/sh
+#
+# Check status=none filtering when a non-leader thread invokes execve.
+#
+# Copyright (c) 2019 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/init.sh"
+
+# Check that PTRACE_EVENT_EXEC support in kernel is good enough.
+# The kernel before commit v3.1-rc1~308^2~7 reported 0 instead of old pid.
+require_min_kernel_version_or_skip 3.1
+
+# This test requires some concurrency between threads.
+require_min_nproc 2
+
+check_prog diff
+run_prog_skip_if_failed date +%s > /dev/null
+s0="$(date +%s)"
+
+run_prog > /dev/null
+
+set -- -a14 -f -e status=${status_filter:-none} $args
+
+# Due to probabilistic nature of the test, try it several times.
+while :; do
+       > "$LOG" || fail_ "failed to write $LOG"
+       rc=0
+       $STRACE -o "$LOG" "$@" > "$EXP" || {
+               rc=$?
+               cat < "$LOG" >&2
+       }
+
+       if [ "$rc" = 0 ] && diff -u -- "$EXP" "$LOG"; then
+               exit 0
+       fi
+
+       s1="$(date +%s)"
+       [ "$(($s1-$s0))" -gt "$(($TIMEOUT_DURATION/2))" ] ||
+               continue
+
+       [ "$rc" = 0 ] &&
+               fail_ "$STRACE $* output mismatch" ||
+               fail_ "$STRACE $* failed with code $rc"
+done
diff --git a/tests-mx32/status-none.c b/tests-mx32/status-none.c
new file mode 100644 (file)
index 0000000..0144a60
--- /dev/null
@@ -0,0 +1,18 @@
+/*
+ * Check basic -e status=none syscall filtering.
+ *
+ * Copyright (c) 2019 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <stdio.h>
+
+int
+main(void)
+{
+       puts("+++ exited with 0 +++");
+       return 0;
+}
diff --git a/tests-mx32/status-none.gen.test b/tests-mx32/status-none.gen.test
new file mode 100755 (executable)
index 0000000..2b141f2
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (status-none -e trace=all --status=none); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=all --status=none
diff --git a/tests-mx32/status-successful-long.c b/tests-mx32/status-successful-long.c
new file mode 100644 (file)
index 0000000..45be5b1
--- /dev/null
@@ -0,0 +1 @@
+#include "status-successful.c"
diff --git a/tests-mx32/status-successful-long.gen.test b/tests-mx32/status-successful-long.gen.test
new file mode 100755 (executable)
index 0000000..1618f32
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (status-successful-long -a10 -e trace=chdir --successful-only); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10 -e trace=chdir --successful-only
diff --git a/tests-mx32/status-successful-status.c b/tests-mx32/status-successful-status.c
new file mode 100644 (file)
index 0000000..45be5b1
--- /dev/null
@@ -0,0 +1 @@
+#include "status-successful.c"
diff --git a/tests-mx32/status-successful-status.gen.test b/tests-mx32/status-successful-status.gen.test
new file mode 100755 (executable)
index 0000000..34ce3db
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (status-successful-status -a10 -e trace=chdir --status=successful); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10 -e trace=chdir --status=successful
diff --git a/tests-mx32/status-successful.c b/tests-mx32/status-successful.c
new file mode 100644 (file)
index 0000000..b37854a
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+ * Check status=successful filtering for failed and successful syscalls.
+ *
+ * Copyright (c) 2019 Intel Corporation
+ * Copyright (c) 2019 Paul Chaignon <paul.chaignon@gmail.com>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <stdio.h>
+
+int
+main(void)
+{
+       static const char sample_valid[] = ".";
+       static const char sample_invalid[] = "";
+
+       test_status_chdir(sample_valid, 1, 0);
+       test_status_chdir(sample_invalid, 1, 0);
+       puts("+++ exited with 0 +++");
+       return 0;
+}
diff --git a/tests-mx32/status-successful.gen.test b/tests-mx32/status-successful.gen.test
new file mode 100755 (executable)
index 0000000..395b85e
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (status-successful -a10 -e trace=chdir -z); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10 -e trace=chdir -z
diff --git a/tests-mx32/status-unfinished-threads.c b/tests-mx32/status-unfinished-threads.c
new file mode 100644 (file)
index 0000000..77c8817
--- /dev/null
@@ -0,0 +1,66 @@
+/*
+ * Check status=unfinished filtering when a non-leader thread invokes execve.
+ *
+ * Copyright (c) 2019 Paul Chaignon <paul.chaignon@gmail.com>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_nanosleep
+
+# include <errno.h>
+# include <pthread.h>
+# include <stdio.h>
+# include <unistd.h>
+
+# include "kernel_old_timespec.h"
+
+static pid_t leader;
+
+static void *
+thread(void *arg)
+{
+       kernel_old_timespec_t ts = { .tv_nsec = 100000000 };
+       (void) syscall(__NR_nanosleep, (unsigned long) &ts, 0UL);
+
+       printf("%-5d nanosleep({tv_sec=123, tv_nsec=0},  <unfinished ...>) = ?\n"
+              "%-5d +++ superseded by execve in pid %u +++\n",
+              leader, leader, (int) syscall(__NR_gettid));
+
+       char *argv[] = {((char **) arg)[0], (char *) "0", NULL};
+       execve(argv[0], argv, NULL);
+       perror_msg_and_fail("execve");
+}
+
+int
+main(int ac, char **av)
+{
+       setvbuf(stdout, NULL, _IONBF, 0);
+       leader = getpid();
+
+       if (ac > 1) {
+               printf("%-5d exit_group(0) = ?\n"
+                      "%-5d +++ exited with 0 +++\n", leader, leader);
+               return 0;
+       }
+
+       pthread_t t;
+       errno = pthread_create(&t, NULL, thread, av);
+       if (errno)
+               perror_msg_and_fail("pthread_create");
+
+       kernel_old_timespec_t ts = { .tv_sec = 123 };
+       (void) syscall(__NR_nanosleep, (unsigned long) &ts, 0UL);
+
+       return 1;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_nanosleep")
+
+#endif
diff --git a/tests-mx32/status-unfinished-threads.test b/tests-mx32/status-unfinished-threads.test
new file mode 100755 (executable)
index 0000000..f54a323
--- /dev/null
@@ -0,0 +1,12 @@
+#!/bin/sh
+#
+# Check status=unfinished filtering when a non-leader thread invokes execve.
+#
+# Copyright (c) 2019 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+status_filter=unfinished
+
+. "${srcdir=.}"/status-none-threads.test
diff --git a/tests-mx32/status-unfinished.c b/tests-mx32/status-unfinished.c
new file mode 100644 (file)
index 0000000..de78eee
--- /dev/null
@@ -0,0 +1,19 @@
+/*
+ * Check basic -e status=unfinished syscall filtering.
+ *
+ * Copyright (c) 2019 Paul Chaignon <paul.chaignon@gmail.com>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <stdio.h>
+
+int
+main(void)
+{
+       puts("exit_group(0) = ?\n"
+            "+++ exited with 0 +++");
+       return 0;
+}
diff --git a/tests-mx32/status-unfinished.gen.test b/tests-mx32/status-unfinished.gen.test
new file mode 100755 (executable)
index 0000000..c02817b
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (status-unfinished -a10 -e trace=all --status=unfinished); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10 -e trace=all --status=unfinished
diff --git a/tests-mx32/status.c b/tests-mx32/status.c
new file mode 100644 (file)
index 0000000..82fd8b1
--- /dev/null
@@ -0,0 +1,21 @@
+/*
+ * Helper function to check -e status option.
+ *
+ * Copyright (c) 2019 Intel Corporation
+ * Copyright (c) 2019 Paul Chaignon <paul.chaignon@gmail.com>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <stdio.h>
+#include <unistd.h>
+
+void
+test_status_chdir(const char *dir, bool print_success, bool print_fail)
+{
+       long rc = chdir(dir);
+       if ((rc == -1 && print_fail) || (rc != -1 && print_success))
+               printf("chdir(\"%s\") = %s\n", dir, sprintrc(rc));
+}
index c5e86ad2e8344bbe89b61534988be0e0eeb209ac..c5537204341df265626d3128be677696161fd0e5 100644 (file)
@@ -1,14 +1,14 @@
 /*
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
-#ifdef __NR_statx
+#if defined __NR_statx && defined HAVE_STRUCT_STATX
 
 # include <linux/stat.h>
 # include "xlat.h"
@@ -45,6 +45,6 @@ static const char *TEST_SYSCALL_STATX_MASK_STR  = "STATX_ALL";
 
 #else
 
-SKIP_MAIN_UNDEFINED("__NR_statx")
+SKIP_MAIN_UNDEFINED("__NR_statx && HAVE_STRUCT_STATX")
 
 #endif
index bff3e3f29a6864a16d99c3187979207cedd1a5ed..564a5918377041c2e88ede132f1bddb5caebd566 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (statx -a32 -v -P stat.sample -P /dev/full); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (statx -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
+run_strace_match_diff -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full
diff --git a/tests-mx32/strace--absolute-timestamps-format-time-precision-ms.gen.test b/tests-mx32/strace--absolute-timestamps-format-time-precision-ms.gen.test
new file mode 100755 (executable)
index 0000000..061321c
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--absolute-timestamps-format-time-precision-ms +strace-tt.test 3 --absolute-timestamps=format:time --absolute-timestamps=precision:ms); do not edit.
+set -- 3 --absolute-timestamps=format:time --absolute-timestamps=precision:ms
+. "${srcdir=.}/strace-tt.test"
diff --git a/tests-mx32/strace--absolute-timestamps-format-time-precision-ns.gen.test b/tests-mx32/strace--absolute-timestamps-format-time-precision-ns.gen.test
new file mode 100755 (executable)
index 0000000..c1c94db
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--absolute-timestamps-format-time-precision-ns +strace-tt.test 9 --absolute-timestamps=format:time --absolute-timestamps=precision:ns); do not edit.
+set -- 9 --absolute-timestamps=format:time --absolute-timestamps=precision:ns
+. "${srcdir=.}/strace-tt.test"
diff --git a/tests-mx32/strace--absolute-timestamps-format-time-precision-s.gen.test b/tests-mx32/strace--absolute-timestamps-format-time-precision-s.gen.test
new file mode 100755 (executable)
index 0000000..52bfe1c
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--absolute-timestamps-format-time-precision-s +strace-t.test --absolute-timestamps=format:time --absolute-timestamps=precision:s); do not edit.
+set -- --absolute-timestamps=format:time --absolute-timestamps=precision:s
+. "${srcdir=.}/strace-t.test"
diff --git a/tests-mx32/strace--absolute-timestamps-format-time-precision-us.gen.test b/tests-mx32/strace--absolute-timestamps-format-time-precision-us.gen.test
new file mode 100755 (executable)
index 0000000..6c55961
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--absolute-timestamps-format-time-precision-us +strace-tt.test 6 --absolute-timestamps=format:time --absolute-timestamps=precision:us); do not edit.
+set -- 6 --absolute-timestamps=format:time --absolute-timestamps=precision:us
+. "${srcdir=.}/strace-tt.test"
diff --git a/tests-mx32/strace--absolute-timestamps-format-time.gen.test b/tests-mx32/strace--absolute-timestamps-format-time.gen.test
new file mode 100755 (executable)
index 0000000..1c55649
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--absolute-timestamps-format-time +strace-t.test --absolute-timestamps=format:time); do not edit.
+set -- --absolute-timestamps=format:time
+. "${srcdir=.}/strace-t.test"
diff --git a/tests-mx32/strace--absolute-timestamps-format-unix-precision-ms.gen.test b/tests-mx32/strace--absolute-timestamps-format-unix-precision-ms.gen.test
new file mode 100755 (executable)
index 0000000..fe4d221
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--absolute-timestamps-format-unix-precision-ms +strace-ttt.test 3 --absolute-timestamps=precision:ms --absolute-timestamps=format:unix); do not edit.
+set -- 3 --absolute-timestamps=precision:ms --absolute-timestamps=format:unix
+. "${srcdir=.}/strace-ttt.test"
diff --git a/tests-mx32/strace--absolute-timestamps-format-unix-precision-ns.gen.test b/tests-mx32/strace--absolute-timestamps-format-unix-precision-ns.gen.test
new file mode 100755 (executable)
index 0000000..9ea30ba
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--absolute-timestamps-format-unix-precision-ns +strace-ttt.test 9 --absolute-timestamps=format:unix --absolute-timestamps=precision:ns); do not edit.
+set -- 9 --absolute-timestamps=format:unix --absolute-timestamps=precision:ns
+. "${srcdir=.}/strace-ttt.test"
diff --git a/tests-mx32/strace--absolute-timestamps-format-unix-precision-s.gen.test b/tests-mx32/strace--absolute-timestamps-format-unix-precision-s.gen.test
new file mode 100755 (executable)
index 0000000..93b7221
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--absolute-timestamps-format-unix-precision-s +strace-ttt.test 0 --absolute-timestamps=format:unix --absolute-timestamps=precision:s); do not edit.
+set -- 0 --absolute-timestamps=format:unix --absolute-timestamps=precision:s
+. "${srcdir=.}/strace-ttt.test"
diff --git a/tests-mx32/strace--absolute-timestamps-format-unix-precision-us.gen.test b/tests-mx32/strace--absolute-timestamps-format-unix-precision-us.gen.test
new file mode 100755 (executable)
index 0000000..f513658
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--absolute-timestamps-format-unix-precision-us +strace-ttt.test 6 --absolute-timestamps=precision:us --absolute-timestamps=format:unix); do not edit.
+set -- 6 --absolute-timestamps=precision:us --absolute-timestamps=format:unix
+. "${srcdir=.}/strace-ttt.test"
diff --git a/tests-mx32/strace--absolute-timestamps.gen.test b/tests-mx32/strace--absolute-timestamps.gen.test
new file mode 100755 (executable)
index 0000000..f5c7995
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--absolute-timestamps +strace-t.test --absolute-timestamps); do not edit.
+set -- --absolute-timestamps
+. "${srcdir=.}/strace-t.test"
diff --git a/tests-mx32/strace--follow-forks-output-separately.expected b/tests-mx32/strace--follow-forks-output-separately.expected
new file mode 100644 (file)
index 0000000..627a1b4
--- /dev/null
@@ -0,0 +1,2 @@
+exit_group(0) = ?
++++ exited with 0 +++
diff --git a/tests-mx32/strace--follow-forks-output-separately.gen.test b/tests-mx32/strace--follow-forks-output-separately.gen.test
new file mode 100755 (executable)
index 0000000..96c225e
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--follow-forks-output-separately +strace-ff.test --follow-forks --output-separately); do not edit.
+set -- --follow-forks --output-separately
+. "${srcdir=.}/strace-ff.test"
diff --git a/tests-mx32/strace--relative-timestamps-ms.expected b/tests-mx32/strace--relative-timestamps-ms.expected
new file mode 100644 (file)
index 0000000..9fff296
--- /dev/null
@@ -0,0 +1,2 @@
+[ ]{5}0\.0{3} execve\("\.\./sleep", \["\.\./sleep", "1"\], 0x[[:xdigit:]]* /\* [[:digit:]]* vars \*/\) = 0
+[ ]{5}(1\.[01]|0\.9)[[:digit:]]{2} \+\+\+ exited with 0 \+\+\+
diff --git a/tests-mx32/strace--relative-timestamps-ms.gen.test b/tests-mx32/strace--relative-timestamps-ms.gen.test
new file mode 100755 (executable)
index 0000000..60a5865
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--relative-timestamps-ms +strace-r.test --relative-timestamps=ms); do not edit.
+set -- --relative-timestamps=ms
+. "${srcdir=.}/strace-r.test"
diff --git a/tests-mx32/strace--relative-timestamps-ns.expected b/tests-mx32/strace--relative-timestamps-ns.expected
new file mode 100644 (file)
index 0000000..d72c477
--- /dev/null
@@ -0,0 +1,2 @@
+[ ]{5}0\.0{9} execve\("\.\./sleep", \["\.\./sleep", "1"\], 0x[[:xdigit:]]* /\* [[:digit:]]* vars \*/\) = 0
+[ ]{5}(1\.[01]|0\.9)[[:digit:]]{8} \+\+\+ exited with 0 \+\+\+
diff --git a/tests-mx32/strace--relative-timestamps-ns.gen.test b/tests-mx32/strace--relative-timestamps-ns.gen.test
new file mode 100755 (executable)
index 0000000..3aec808
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--relative-timestamps-ns +strace-r.test --relative-timestamps=ns); do not edit.
+set -- --relative-timestamps=ns
+. "${srcdir=.}/strace-r.test"
diff --git a/tests-mx32/strace--relative-timestamps-s.expected b/tests-mx32/strace--relative-timestamps-s.expected
new file mode 100644 (file)
index 0000000..b3c5ff0
--- /dev/null
@@ -0,0 +1,2 @@
+[ ]{5}0 execve\("\.\./sleep", \["\.\./sleep", "1"\], 0x[[:xdigit:]]* /\* [[:digit:]]* vars \*/\) = 0
+[ ]{5}[01] \+\+\+ exited with 0 \+\+\+
diff --git a/tests-mx32/strace--relative-timestamps-s.gen.test b/tests-mx32/strace--relative-timestamps-s.gen.test
new file mode 100755 (executable)
index 0000000..2d2ba8d
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--relative-timestamps-s +strace-r.test --relative-timestamps=s); do not edit.
+set -- --relative-timestamps=s
+. "${srcdir=.}/strace-r.test"
diff --git a/tests-mx32/strace--relative-timestamps-us.expected b/tests-mx32/strace--relative-timestamps-us.expected
new file mode 100644 (file)
index 0000000..2a5b977
--- /dev/null
@@ -0,0 +1,2 @@
+[ ]{5}0\.0{6} execve\("\.\./sleep", \["\.\./sleep", "1"\], 0x[[:xdigit:]]* /\* [[:digit:]]* vars \*/\) = 0
+[ ]{5}(1\.[01]|0\.9)[[:digit:]]{5} \+\+\+ exited with 0 \+\+\+
diff --git a/tests-mx32/strace--relative-timestamps-us.gen.test b/tests-mx32/strace--relative-timestamps-us.gen.test
new file mode 100755 (executable)
index 0000000..660c0f2
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--relative-timestamps-us +strace-r.test --relative-timestamps=us); do not edit.
+set -- --relative-timestamps=us
+. "${srcdir=.}/strace-r.test"
diff --git a/tests-mx32/strace--relative-timestamps.expected b/tests-mx32/strace--relative-timestamps.expected
new file mode 100644 (file)
index 0000000..2a5b977
--- /dev/null
@@ -0,0 +1,2 @@
+[ ]{5}0\.0{6} execve\("\.\./sleep", \["\.\./sleep", "1"\], 0x[[:xdigit:]]* /\* [[:digit:]]* vars \*/\) = 0
+[ ]{5}(1\.[01]|0\.9)[[:digit:]]{5} \+\+\+ exited with 0 \+\+\+
diff --git a/tests-mx32/strace--relative-timestamps.gen.test b/tests-mx32/strace--relative-timestamps.gen.test
new file mode 100755 (executable)
index 0000000..c0e8abe
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--relative-timestamps +strace-r.test --relative-timestamps); do not edit.
+set -- --relative-timestamps
+. "${srcdir=.}/strace-r.test"
diff --git a/tests-mx32/strace--strings-in-hex-all.c b/tests-mx32/strace--strings-in-hex-all.c
new file mode 100644 (file)
index 0000000..af37c30
--- /dev/null
@@ -0,0 +1,2 @@
+#define STRACE_XX 1
+#include "strace-x.c"
diff --git a/tests-mx32/strace--strings-in-hex-all.gen.test b/tests-mx32/strace--strings-in-hex-all.gen.test
new file mode 100755 (executable)
index 0000000..78d61ed
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--strings-in-hex-all --trace=chdir --strings-in-hex=all --columns=18); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff --trace=chdir --strings-in-hex=all --columns=18
diff --git a/tests-mx32/strace--strings-in-hex-non-ascii.c b/tests-mx32/strace--strings-in-hex-non-ascii.c
new file mode 100644 (file)
index 0000000..e07ded2
--- /dev/null
@@ -0,0 +1,2 @@
+#define STRACE_XX 0
+#include "strace-x.c"
diff --git a/tests-mx32/strace--strings-in-hex-non-ascii.gen.test b/tests-mx32/strace--strings-in-hex-non-ascii.gen.test
new file mode 100755 (executable)
index 0000000..037af67
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--strings-in-hex-non-ascii --trace=chdir --strings-in-hex=non-ascii --columns=12); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff --trace=chdir --strings-in-hex=non-ascii --columns=12
diff --git a/tests-mx32/strace--strings-in-hex.c b/tests-mx32/strace--strings-in-hex.c
new file mode 100644 (file)
index 0000000..af37c30
--- /dev/null
@@ -0,0 +1,2 @@
+#define STRACE_XX 1
+#include "strace-x.c"
diff --git a/tests-mx32/strace--strings-in-hex.gen.test b/tests-mx32/strace--strings-in-hex.gen.test
new file mode 100755 (executable)
index 0000000..c16db4b
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--strings-in-hex --trace=chdir --strings-in-hex --columns=18); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff --trace=chdir --strings-in-hex --columns=18
diff --git a/tests-mx32/strace--syscall-times-ms.expected b/tests-mx32/strace--syscall-times-ms.expected
new file mode 100644 (file)
index 0000000..62c652a
--- /dev/null
@@ -0,0 +1 @@
+nanosleep\(\{tv_sec=1, tv_nsec=0\}, NULL\) = 0 <(1\.[01]|0\.9)[[:digit:]]{2}>
diff --git a/tests-mx32/strace--syscall-times-ms.gen.test b/tests-mx32/strace--syscall-times-ms.gen.test
new file mode 100755 (executable)
index 0000000..d6b43d4
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--syscall-times-ms +strace-T.test --syscall-times=ms); do not edit.
+set -- --syscall-times=ms
+. "${srcdir=.}/strace-T.test"
diff --git a/tests-mx32/strace--syscall-times-ns.expected b/tests-mx32/strace--syscall-times-ns.expected
new file mode 100644 (file)
index 0000000..0110af4
--- /dev/null
@@ -0,0 +1 @@
+nanosleep\(\{tv_sec=1, tv_nsec=0\}, NULL\) = 0 <(1\.[01]|0\.9)[[:digit:]]{8}>
diff --git a/tests-mx32/strace--syscall-times-ns.gen.test b/tests-mx32/strace--syscall-times-ns.gen.test
new file mode 100755 (executable)
index 0000000..1b719f0
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--syscall-times-ns +strace-T.test --syscall-times=ns); do not edit.
+set -- --syscall-times=ns
+. "${srcdir=.}/strace-T.test"
diff --git a/tests-mx32/strace--syscall-times-s.expected b/tests-mx32/strace--syscall-times-s.expected
new file mode 100644 (file)
index 0000000..fd4d340
--- /dev/null
@@ -0,0 +1 @@
+nanosleep\(\{tv_sec=1, tv_nsec=0\}, NULL\) = 0 <[01]>
diff --git a/tests-mx32/strace--syscall-times-s.gen.test b/tests-mx32/strace--syscall-times-s.gen.test
new file mode 100755 (executable)
index 0000000..095e49b
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--syscall-times-s +strace-T.test --syscall-times=s); do not edit.
+set -- --syscall-times=s
+. "${srcdir=.}/strace-T.test"
diff --git a/tests-mx32/strace--syscall-times-us.expected b/tests-mx32/strace--syscall-times-us.expected
new file mode 100644 (file)
index 0000000..1ea0204
--- /dev/null
@@ -0,0 +1 @@
+nanosleep\(\{tv_sec=1, tv_nsec=0\}, NULL\) = 0 <(1\.[01]|0\.9)[[:digit:]]{5}>
diff --git a/tests-mx32/strace--syscall-times-us.gen.test b/tests-mx32/strace--syscall-times-us.gen.test
new file mode 100755 (executable)
index 0000000..65ac920
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--syscall-times-us +strace-T.test --syscall-times=us); do not edit.
+set -- --syscall-times=us
+. "${srcdir=.}/strace-T.test"
diff --git a/tests-mx32/strace--syscall-times.expected b/tests-mx32/strace--syscall-times.expected
new file mode 100644 (file)
index 0000000..1ea0204
--- /dev/null
@@ -0,0 +1 @@
+nanosleep\(\{tv_sec=1, tv_nsec=0\}, NULL\) = 0 <(1\.[01]|0\.9)[[:digit:]]{5}>
diff --git a/tests-mx32/strace--syscall-times.gen.test b/tests-mx32/strace--syscall-times.gen.test
new file mode 100755 (executable)
index 0000000..a86a8f1
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--syscall-times +strace-T.test --syscall-times); do not edit.
+set -- --syscall-times
+. "${srcdir=.}/strace-T.test"
diff --git a/tests-mx32/strace--timestamps-time-ms.gen.test b/tests-mx32/strace--timestamps-time-ms.gen.test
new file mode 100755 (executable)
index 0000000..bc468d2
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--timestamps-time-ms +strace-tt.test 3 --timestamps=time,ms); do not edit.
+set -- 3 --timestamps=time,ms
+. "${srcdir=.}/strace-tt.test"
diff --git a/tests-mx32/strace--timestamps-time-ns.gen.test b/tests-mx32/strace--timestamps-time-ns.gen.test
new file mode 100755 (executable)
index 0000000..69a2a01
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--timestamps-time-ns +strace-tt.test 9 --timestamps=time,ns); do not edit.
+set -- 9 --timestamps=time,ns
+. "${srcdir=.}/strace-tt.test"
diff --git a/tests-mx32/strace--timestamps-time-s.gen.test b/tests-mx32/strace--timestamps-time-s.gen.test
new file mode 100755 (executable)
index 0000000..30a40df
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--timestamps-time-s +strace-t.test --timestamps=time,s); do not edit.
+set -- --timestamps=time,s
+. "${srcdir=.}/strace-t.test"
diff --git a/tests-mx32/strace--timestamps-time-us.gen.test b/tests-mx32/strace--timestamps-time-us.gen.test
new file mode 100755 (executable)
index 0000000..e4c7a78
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--timestamps-time-us +strace-tt.test 6 --timestamps=time,us); do not edit.
+set -- 6 --timestamps=time,us
+. "${srcdir=.}/strace-tt.test"
diff --git a/tests-mx32/strace--timestamps-time.gen.test b/tests-mx32/strace--timestamps-time.gen.test
new file mode 100755 (executable)
index 0000000..94ad345
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--timestamps-time +strace-t.test --timestamps=time); do not edit.
+set -- --timestamps=time
+. "${srcdir=.}/strace-t.test"
diff --git a/tests-mx32/strace--timestamps-unix-ms.gen.test b/tests-mx32/strace--timestamps-unix-ms.gen.test
new file mode 100755 (executable)
index 0000000..51db21a
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--timestamps-unix-ms +strace-ttt.test 3 --timestamps=unix,ms); do not edit.
+set -- 3 --timestamps=unix,ms
+. "${srcdir=.}/strace-ttt.test"
diff --git a/tests-mx32/strace--timestamps-unix-ns.gen.test b/tests-mx32/strace--timestamps-unix-ns.gen.test
new file mode 100755 (executable)
index 0000000..adfbdfc
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--timestamps-unix-ns +strace-ttt.test 9 --timestamps=unix,ns); do not edit.
+set -- 9 --timestamps=unix,ns
+. "${srcdir=.}/strace-ttt.test"
diff --git a/tests-mx32/strace--timestamps-unix-s.gen.test b/tests-mx32/strace--timestamps-unix-s.gen.test
new file mode 100755 (executable)
index 0000000..0177f07
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--timestamps-unix-s +strace-ttt.test 0 --timestamps=unix,s); do not edit.
+set -- 0 --timestamps=unix,s
+. "${srcdir=.}/strace-ttt.test"
diff --git a/tests-mx32/strace--timestamps-unix-us.gen.test b/tests-mx32/strace--timestamps-unix-us.gen.test
new file mode 100755 (executable)
index 0000000..42fdf06
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--timestamps-unix-us +strace-ttt.test 6 --timestamps=unix,us); do not edit.
+set -- 6 --timestamps=unix,us
+. "${srcdir=.}/strace-ttt.test"
diff --git a/tests-mx32/strace--timestamps.gen.test b/tests-mx32/strace--timestamps.gen.test
new file mode 100755 (executable)
index 0000000..c08f0e5
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--timestamps +strace-t.test --timestamps); do not edit.
+set -- --timestamps
+. "${srcdir=.}/strace-t.test"
diff --git a/tests-mx32/strace-D.expected b/tests-mx32/strace-D.expected
new file mode 100644 (file)
index 0000000..78c9d2d
--- /dev/null
@@ -0,0 +1 @@
++++ exited with 0 +++
diff --git a/tests-mx32/strace-D.test b/tests-mx32/strace-D.test
new file mode 100755 (executable)
index 0000000..6c6ff2c
--- /dev/null
@@ -0,0 +1,72 @@
+#!/bin/sh -efu
+#
+# Check -D option.
+#
+# Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2019-2020 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/init.sh"
+
+check_prog sed
+run_prog_skip_if_failed \
+       kill -0 $$
+
+get_parent_pid()
+{
+       sed '/^PPid:[[:space:]]*/!d;s///'
+}
+
+get_tracer_pid()
+{
+       sed '/^TracerPid:[[:space:]]*/!d;s///'
+}
+
+set -- ../print_ppid_tracerpid
+"$@" > "$LOG" ||
+       framework_skip_ "$* does not work"
+
+# not traced: PPid > 0, TracerPid == 0
+[ "$(get_parent_pid < "$LOG")" -gt 0 ] &&
+[ "$(get_tracer_pid < "$LOG")" -eq 0 ] ||
+       dump_log_and_fail_with "$*: unexpected output"
+
+# !-D: PPid > 0, TracerPid > 0, PPid == TracerPid
+run_strace -e q=attach,personality -enone "$@" > "$OUT"
+[ "$(get_parent_pid < "$OUT")" -gt 0 ] &&
+[ "$(get_tracer_pid < "$OUT")" -gt 0 ] &&
+[ "$(get_parent_pid < "$OUT")" = "$(get_tracer_pid < "$OUT")" ] || {
+       cat < "$OUT" > "$LOG"
+       dump_log_and_fail_with "$STRACE $args: unexpected output"
+}
+match_diff
+
+test_parent_tracer_pid()
+{
+       local d parent_pid tracer_pid
+       d="$1"; shift
+
+       # -D/-DD/-DDD: PPid > 0, TracerPid > 0, PPid != TracerPid
+       run_strace $d -q -enone "$@" > "$OUT"
+
+       parent_pid="$(get_parent_pid < "$OUT")" &&
+       [ "$parent_pid" -gt 0 ] &&
+       tracer_pid="$(get_tracer_pid < "$OUT")" &&
+       [ "$tracer_pid" -gt 0 ] &&
+       [ "$parent_pid" != "$tracer_pid" ] || {
+               cat < "$OUT" > "$LOG"
+               dump_log_and_fail_with "$STRACE $args: unexpected output"
+       }
+
+       while kill -0 "$tracer_pid" 2> /dev/null; do
+               $SLEEP_A_BIT
+       done
+
+       match_diff
+}
+
+test_parent_tracer_pid -D "$@"
+test_parent_tracer_pid -DD "$@"
+test_parent_tracer_pid -DDD "$@"
diff --git a/tests-mx32/strace-DD.test b/tests-mx32/strace-DD.test
new file mode 100755 (executable)
index 0000000..95164bb
--- /dev/null
@@ -0,0 +1,73 @@
+#!/bin/sh -efu
+#
+# Check -DD option.
+#
+# Copyright (c) 2019-2020 Dmitry V. Levin <ldv@altlinux.org>
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/init.sh"
+
+[ "$STRACE" = "$STRACE_EXE" ] ||
+       skip_ 'Not applicable: $STRACE != $STRACE_EXE'
+
+run_prog_skip_if_failed \
+        kill -0 $$
+
+status_file=/proc/self/status
+get_tracer_pid()
+{
+       sed '/^TracerPid:[[:space:]]*/!d;s///' "$@"
+}
+[ "$(get_tracer_pid "$status_file")" -ge 0 ] ||
+        framework_skip_ "$status_file is not available"
+
+run_prog ../sleep 0
+
+sleep_duration="$(($TIMEOUT_DURATION/2))"
+
+test_D()
+{
+       local tracee_pid tracer_pid rc sig=15
+
+       set -- $STRACE --output="$LOG" --columns=39 \
+               --interruptible=anywhere --trace=nanosleep "$@" -- \
+               ../sleep "$sleep_duration"
+       > "$LOG"
+
+       ../setpgrp-exec "$@" &
+       tracee_pid=$!
+
+       while tracer_pid="$(get_tracer_pid "/proc/$tracee_pid/status")"; do
+               [ "$tracer_pid" = 0 ] ||
+                       break
+               $SLEEP_A_BIT
+       done
+
+       $SLEEP_A_BIT
+       kill -$sig -$tracee_pid
+
+       wait $tracee_pid && rc=0 || rc=$?
+       [ "$rc" -eq $((128 + $sig)) ] ||
+               dump_log_and_fail_with \
+                       "$* failed with unexpected exit status $rc"
+
+       while kill -0 "$tracer_pid" 2> /dev/null; do
+               $SLEEP_A_BIT
+       done
+       match_diff "$LOG" "$EXP"
+}
+
+printf 'nanosleep({tv_sec=%s, tv_nsec=0}, ' "$sleep_duration" > "$EXP"
+test_D -D
+
+uid="${UID:-`id -u`}"
+cat > "$EXP" <<__EOF__
+nanosleep({tv_sec=$sleep_duration, tv_nsec=0}, NULL) = ? ERESTART_RESTARTBLOCK (Interrupted by signal)
+--- SIGTERM {si_signo=SIGTERM, si_code=SI_USER, si_pid=$$, si_uid=$uid} ---
++++ killed by SIGTERM +++
+__EOF__
+
+test_D -DD
+test_D -DDD
diff --git a/tests-mx32/strace-DDD.expected b/tests-mx32/strace-DDD.expected
new file mode 100644 (file)
index 0000000..78c9d2d
--- /dev/null
@@ -0,0 +1 @@
++++ exited with 0 +++
diff --git a/tests-mx32/strace-DDD.test b/tests-mx32/strace-DDD.test
new file mode 100755 (executable)
index 0000000..aad4000
--- /dev/null
@@ -0,0 +1,93 @@
+#!/bin/sh -efu
+#
+# Check -DDD option.
+#
+# Copyright (c) 2019-2020 Dmitry V. Levin <ldv@altlinux.org>
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/init.sh"
+
+check_prog sed
+run_prog_skip_if_failed \
+       kill -0 $$
+
+status_file=/proc/self/status
+[ -f "$status_file" ] ||
+       framework_skip_ "$status_file is not available"
+
+stat_file=/proc/self/stat
+[ -f "$stat_file" ] ||
+       framework_skip_ "$stat_file is not available"
+
+reapid="$(../get_process_reaper)" && [ "$reapid" -ge 1 ] ||
+       fail_ 'get_process_reaper failed'
+
+set -- -enone -esignal=none ../tracer_ppid_pgid_sid
+run_strace "$@" > "$OUT"
+read -r tracer_pid ppid pgid sid < "$OUT" &&
+[ "$tracer_pid" -gt 1 ] &&
+[ "$tracer_pid" -ne "$reapid" ] &&
+[ "$ppid" -gt 1 ] &&
+[ "$ppid" -ne "$reapid" ] &&
+[ "$pgid" -ge 0 ] &&
+[ "$sid" -ge 0 ] || {
+       cat < "$OUT" > "$LOG"
+       dump_log_and_fail_with "$STRACE $args: unexpected output"
+}
+match_diff
+
+pgid0="$pgid"
+sid0="$sid"
+
+run_strace -D "$@" > "$OUT"
+read -r tracer_pid ppid pgid sid < "$OUT" &&
+[ "$tracer_pid" -gt 1 ] &&
+[ "$tracer_pid" -ne "$reapid" ] &&
+[ "$ppid" -eq "$reapid" ] &&
+[ "$pgid" = "$pgid0" ] &&
+[ "$sid" = "$sid0" ] || {
+       cat < "$OUT" > "$LOG"
+       dump_log_and_fail_with "$STRACE $args: unexpected output"
+}
+while kill -0 "$tracer_pid" 2> /dev/null; do
+       $SLEEP_A_BIT
+done
+match_diff
+
+run_strace -DD "$@" > "$OUT"
+read -r tracer_pid ppid pgid sid < "$OUT" &&
+[ "$tracer_pid" -gt 1 ] &&
+[ "$tracer_pid" -ne "$reapid" ] &&
+[ "$ppid" -eq "$reapid" ] &&
+[ "$pgid" -gt 1 ] &&
+[ "$pgid" -ne "$reapid" ] &&
+[ "$pgid" != "$pgid0" ] &&
+[ "$pgid" != "$sid" ] &&
+[ "$sid" = "$sid0" ] || {
+       cat < "$OUT" > "$LOG"
+       dump_log_and_fail_with "$STRACE $args: unexpected output"
+}
+while kill -0 "$tracer_pid" 2> /dev/null; do
+       $SLEEP_A_BIT
+done
+match_diff
+
+run_strace -DDD "$@" > "$OUT"
+read -r tracer_pid ppid pgid sid < "$OUT" &&
+[ "$tracer_pid" -gt 1 ] &&
+[ "$tracer_pid" -ne "$reapid" ] &&
+[ "$ppid" -eq "$reapid" ] &&
+[ "$pgid" -gt 1 ] &&
+[ "$pgid" -ne "$reapid" ] &&
+[ "$pgid" != "$pgid0" ] &&
+[ "$sid" = "$pgid" ] &&
+[ "$sid" != "$sid0" ] || {
+       cat < "$OUT" > "$LOG"
+       dump_log_and_fail_with "$STRACE $args: unexpected output"
+}
+while kill -0 "$tracer_pid" 2> /dev/null; do
+       $SLEEP_A_BIT
+done
+match_diff
diff --git a/tests-mx32/strace-E-override.test b/tests-mx32/strace-E-override.test
new file mode 100755 (executable)
index 0000000..1559617
--- /dev/null
@@ -0,0 +1,14 @@
+#!/bin/sh
+#
+# Check that --env option does not affect strace's own environment.
+#
+# Copyright (c) 2019-2020 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/init.sh"
+
+check_prog true
+run_prog true
+run_strace --quiet=all --trace=none --signal=none --env=PATH=/ $args
diff --git a/tests-mx32/strace-E-unset.expected b/tests-mx32/strace-E-unset.expected
new file mode 100644 (file)
index 0000000..6ce3620
--- /dev/null
@@ -0,0 +1,5 @@
+execve\("\.\./sleep", \["\.\./sleep", "0"\], \[.*"option_E_var=OPTION_E_VAL".*\]\) = 0
+execve\("\.\./sleep", \["\.\./sleep", "0"\], \[.*"option_E_unsets=OPTION_E_UNSETS".*\]\) = 0
+execve\("\.\./sleep", \["\.\./sleep", "0"\], \[.*"option_E_mod=OPTION_E_NEW".*\]\) = 0
+execve\("\.\./sleep", \["\.\./sleep", "0"\], \[.*"option_E_mods=OPTION_E_MODS".*\]\) = 0
+!execve\("\.\./sleep", \["\.\./sleep", "0"\], \[.*"option_E_unset=.*\]\) = 0
diff --git a/tests-mx32/strace-E-unset.test b/tests-mx32/strace-E-unset.test
new file mode 100755 (executable)
index 0000000..c7583c1
--- /dev/null
@@ -0,0 +1,32 @@
+#!/bin/sh
+#
+# Check modify/unset behaviour of -E/--env option.
+#
+# Copyright (c) 2016-2020 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/init.sh"
+
+export option_E_var=OPTION_E_VAL
+export option_E_mod=OPTION_E_MOD
+export option_E_mods=OPTION_E_MODS
+export option_E_unset=OPTION_E_UNSET
+export option_E_unsets=OPTION_E_UNSETS
+
+run_prog ../sleep 0
+run_strace -qqq -e signal=none -e trace=execve -v \
+       -E option_E_mod=OPTION_E_NEW \
+       -E option_E_unset \
+       -E option_E_missing \
+       $args
+match_grep
+
+run_prog ../sleep 0
+run_strace --quiet=all --signal=none --trace=execve --no-abbrev \
+       --env=option_E_mod=OPTION_E_NEW \
+       --env=option_E_unset \
+       --env=option_E_missing \
+       $args
+match_grep
index 82b95df533dbb8139a9056418d0a4194881e7870..b0bebe1e667b7182162b9fd73907c7307a75cd8f 100755 (executable)
@@ -2,7 +2,7 @@
 #
 # Check -E option.
 #
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -12,3 +12,7 @@
 run_prog ../sleep 0 > /dev/null
 run_strace -E option_E_var=OPTION_E_VAL -v $args
 match_grep
+
+run_prog ../sleep 0 > /dev/null
+run_strace --env=option_E_var=OPTION_E_VAL --no-abbrev $args
+match_grep
index 4b5be6d904c2c67a5649536ae58932f17311237b..fcea4185e86d67802bf7af147af5edc970950858 100755 (executable)
@@ -2,7 +2,7 @@
 #
 # Check -S option.
 #
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -18,7 +18,7 @@ test_c()
        sortopts="$1"; shift
        sedexpr="$1"; shift
 
-       run_strace -c -w -S "$sortby" ../readv > /dev/null
+       run_strace -c -w $sortby ../readv > /dev/null
        sed -r -n -e "$sedexpr" < "$LOG" > "$OUT"
 
        [ -s "$OUT" ] ||
@@ -31,5 +31,31 @@ test_c()
 }
 
 c='[[:space:]]+([^[:space:]]+)'
-test_c calls '-n -r' '/^[[:space:]]+[0-9]/ s/^'"$c$c$c$c"'[[:space:]].*/\4/p'
-test_c name '' '/^[[:space:]]+[0-9]/ s/^'"$c$c$c$c"'([[:space:]]+[0-9]+)?'"$c"'$/\6/p'
+for s in '' '-S time' --summary-sort-by=time_total '-S total_time'; do
+       test_c "$s" '-n -r' \
+               's/^[[:space:]]+([0-9]+)[.,]([0-9]+)[[:space:]].*/\1\t\2/p'
+done
+for s in '-S avg_time' --summary-sort-by=time_avg; do
+       test_c "$s" '-n -r' \
+               '/^[[:space:]]+[0-9]/ s/^'"$c$c$c$c"'[[:space:]].*/\3/p'
+done
+for s in '-S calls' --summary-sort-by=count; do
+       test_c "$s" '-n -r' \
+               '/^[[:space:]]+[0-9]/ s/^'"$c$c$c$c"'[[:space:]].*/\4/p'
+done
+for s in '-S name' --summary-sort-by=syscall '-S syscall_name'; do
+       test_c "$s" '' \
+               '/^[[:space:]]+[0-9]/ s/^'"$c$c$c$c"'([[:space:]]+[0-9]+)?'"$c"'$/\6/p'
+done
+for s in '-S error' --summary-sort-by=errors; do
+       test_c "$s" '-n -r' \
+               '/^[[:space:]]+[0-9]/ s/^'"$c$c$c$c"'([[:space:]]+([0-9]+))?'"$c"'$/\6/p'
+done
+for s in '--summary-columns=time,time-max,name -S max_time' '-U time-percent,max_time,syscall_name --summary-sort-by=longest'; do
+       test_c "$s" '-n -r' \
+               '/^[[:space:]]+[0-9]/ s/^'"$c$c"'[[:space:]].*/\2/p'
+done
+for s in '--summary-columns=time,time_min,name -S min-time' '-U time_percent,min_time,syscall-name --summary-sort-by=shortest'; do
+       test_c "$s" '-n -r' \
+               '/^[[:space:]]+[0-9]/ s/^'"$c$c"'[[:space:]].*/\2/p'
+done
index 7c3136b78b02a0c1a8d566700919870ff7418104..adca3e87244677c852053e0ae523dd895c923b05 100755 (executable)
@@ -2,13 +2,15 @@
 #
 # Check -T option.
 #
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 . "${srcdir=.}/init.sh"
 
+T_opt="${1:--T}"
+
 run_prog ../sleep 0
-run_strace -a24 -T -enanosleep ../sleep 1
+run_strace -a24 "${T_opt}" -enanosleep ../sleep 1
 match_grep
index a0274c282f938d906ea571b8b5b61b73cba84fe8..30f10808c21a3f97df36da0ea4ce14a82afa1c2b 100755 (executable)
@@ -6,51 +6,30 @@
 run_prog_skip_if_failed date +%Y > /dev/null
 year="$(date +%Y)"
 
-run_strace -V > "$LOG"
+run_strace -V > "$OUT"
+run_strace --version > "$LOG"
+match_diff "$LOG" "$OUT" '-V and --version output mismatch'
 
-getstr()
-{
-       sed -r -n 's/#define[[:space:]]*'"$1"'[[:space:]]*"([^"]*)".*/\1/p' \
-               ../../config.h
-}
-
-# getoption OPTION YES_STRING [NO_STRING]
-#
-# Returns YES_STRING in case OPTION is enabled (present in config.h and has
-# a non-zero numeric value). Otherwise, NO_STRING (or empty string, if not
-# specified) is returned.
-getoption()
-{
-       local opt
-       opt=$(sed -r -n 's/#define[[:space:]]*'"$1"'[[:space:]]*([0-9]+)$/\1/p' \
-               ../../config.h)
-       if [ -n "$opt" -a "$opt" -ne 0 ]; then
-               printf "%s" "$2"
-       else
-               printf "%s" "${3-}"
-       fi
-}
-
-config_year=$(getstr COPYRIGHT_YEAR)
+config_year=$(get_config_str COPYRIGHT_YEAR)
 
 [ "$year" -ge "$config_year" ] && [ "$config_year" -ge 2017 ] || {
        echo >&2 "The year derived from config.h (${config_year}) does not pass sanity checks."
        exit 1
 }
 
-option_unwind=$(getoption ENABLE_STACKTRACE \
-               " stack-trace=$(getstr USE_UNWINDER)")
-option_demangle=$(getoption USE_DEMANGLE " stack-demangle")
+option_unwind=$(get_config_option ENABLE_STACKTRACE \
+               " stack-trace=$(get_config_str USE_UNWINDER)")
+option_demangle=$(get_config_option USE_DEMANGLE " stack-demangle")
 
 option_m32=
 option_mx32=
 case "$STRACE_NATIVE_ARCH" in
 x86_64)
-       option_m32=$(getoption HAVE_M32_MPERS ' m32-mpers' ' no-m32-mpers')
-       option_mx32=$(getoption HAVE_MX32_MPERS ' mx32-mpers' ' no-mx32-mpers')
+       option_m32=$(get_config_option HAVE_M32_MPERS ' m32-mpers' ' no-m32-mpers')
+       option_mx32=$(get_config_option HAVE_MX32_MPERS ' mx32-mpers' ' no-mx32-mpers')
        ;;
-aarch64|powerpc64|riscv|s390x|sparc64|tile|x32)
-       option_m32=$(getoption HAVE_M32_MPERS ' m32-mpers' ' no-m32-mpers')
+aarch64|powerpc64|s390x|sparc64|tile|x32)
+       option_m32=$(get_config_option HAVE_M32_MPERS ' m32-mpers' ' no-m32-mpers')
        ;;
 esac
 
@@ -58,12 +37,12 @@ features="${option_unwind}${option_demangle}${option_m32}${option_mx32}"
 [ -n "$features" ] || features=" (none)"
 
 cat > "$EXP" << __EOF__
-$(getstr PACKAGE_NAME) -- version $(getstr PACKAGE_VERSION)
-Copyright (c) 1991-${config_year} The strace developers <$(getstr PACKAGE_URL)>.
+$(get_config_str PACKAGE_NAME) -- version $(get_config_str PACKAGE_VERSION)
+Copyright (c) 1991-${config_year} The strace developers <$(get_config_str PACKAGE_URL)>.
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
 Optional features enabled:${features}
 __EOF__
 
-match_diff "$LOG" "$EXP"
+match_diff "$OUT" "$EXP"
index 429549f2a63d6c788ebfd3abc5902d49c29e0ced..9011bdd8dcf081aeb8ad9c7c22be048e788d718e 100755 (executable)
@@ -1,17 +1,21 @@
-#!/bin/sh
+#!/bin/sh -efu
 #
 # Check -ff option.
 #
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 . "${srcdir=.}/init.sh"
 
+ff_opt="${*:--ff}"
+
 run_prog_skip_if_failed \
        kill -0 $$
 
+run_prog ../sleep 0
+
 ../set_ptracer_any ../sleep 3 > "$OUT" &
 tracee_pid=$!
 
@@ -20,12 +24,13 @@ while ! [ -s "$OUT" ]; do
                fail_ 'set_ptracer_any sleep failed'
 done
 
-run_strace -a14 -eexit_group -ff -p $tracee_pid
+run_strace --quiet=personality -a14 -eexit_group ${ff_opt} -p $tracee_pid
 
 # check that output matches
 match_diff "$LOG.$tracee_pid"
 
 # check that no other output files have been created
+set +f
 set -- "$LOG".*
 [ "$LOG.$tracee_pid" = "$*" ] ||
        fail_ "too many output files: $*"
diff --git a/tests-mx32/strace-k-p.expected b/tests-mx32/strace-k-p.expected
new file mode 100644 (file)
index 0000000..e40c339
--- /dev/null
@@ -0,0 +1,2 @@
+^chdir .*(__kernel_vsyscaln )?(__)?chdir f3 f2 f1 f0 main
+^SIGURG .*(__kernel_vsyscaln )?(__)?kill f3 f2 f1 f0 main
diff --git a/tests-mx32/strace-k-p.test b/tests-mx32/strace-k-p.test
new file mode 100755 (executable)
index 0000000..fac484f
--- /dev/null
@@ -0,0 +1,13 @@
+#!/bin/sh
+#
+# Check strace -k for attached tracees.
+#
+# Copyright (c) 2020 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+ATTACH_MODE=1
+test_prog=../stack-fcall-attach
+
+. "${srcdir=.}"/strace-k.test
index 7a323431807aeef2b705942c7e7fe040f9600b6c..51e8cb2a1f0f163e1f8fa6a9a099ceb9c4f9ec58 100755 (executable)
@@ -4,23 +4,49 @@
 #
 # Copyright (c) 2014 Masatake YAMATO <yamato@redhat.com>
 # Copyright (c) 2014-2016 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2014-2019 The strace developers.
+# Copyright (c) 2014-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 . "${srcdir=.}/init.sh"
 
+: "${ATTACH_MODE=0}"
+
 # strace -k is implemented using /proc/$pid/maps
 [ -f /proc/self/maps ] ||
        framework_skip_ '/proc/self/maps is not available'
 
 check_prog grep
+check_prog readlink
 check_prog sed
 check_prog tr
 
+path_to_sed="$(command -v sed)"
+if [ -x "$path_to_sed" ] &&
+   path_to_sed="$(readlink -ev -- "$path_to_sed")"; then
+       "$path_to_sed" -n 's/^[^/]\+[[:space:]]\(\/.*\)$/\1/p' /proc/self/maps |
+       grep -F -x -e "$path_to_sed" > /dev/null || {
+               cat >&2 /proc/self/maps
+               framework_skip_ '/proc/self/maps is invalid'
+       }
+fi
+
 run_prog "${test_prog=../stack-fcall}"
-run_strace -e chdir -k $args
+
+if [ "x${ATTACH_MODE}" = "x1" ]; then
+       ../set_ptracer_any "${test_prog}" >> "$EXP" &
+       tracee_pid=$!
+
+       while ! [ -s "$EXP" ]; do
+               kill -0 "$tracee_pid" 2> /dev/null ||
+                       fail_ 'set_ptracer_any failed'
+       done
+
+       run_strace --trace=chdir --stack-trace --attach="$tracee_pid"
+else
+       run_strace -e chdir -k $args
+fi
 
 expected="$srcdir/$NAME.expected"
 awk '
diff --git a/tests-mx32/strace-n.c b/tests-mx32/strace-n.c
new file mode 100644 (file)
index 0000000..452bd4c
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+ * Test strace's -n option.
+ *
+ * Copyright (c) 2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#include <stdio.h>
+#include <unistd.h>
+#include <errno.h>
+
+#define SC_listen 4
+
+int
+main(void)
+{
+       int rc;
+
+#if defined __NR_socketcall
+       if (syscall(__NR_socketcall, 0L, 0L, 0L, 0L, 0L) < 0
+               && EINVAL == errno)
+       {
+               const long args[] = { 0, 0 };
+               rc = syscall(__NR_socketcall, SC_listen, args);
+               printf("[%4u] listen(0, 0) = %s\n", __NR_socketcall, sprintrc(rc));
+       }
+#endif
+
+#if defined __NR_listen
+       rc = syscall(__NR_listen, 0, 0);
+       printf("[%4u] listen(0, 0) = %s\n", __NR_listen, sprintrc(rc));
+#endif
+
+       return 0;
+}
diff --git a/tests-mx32/strace-n.gen.test b/tests-mx32/strace-n.gen.test
new file mode 100755 (executable)
index 0000000..023380f
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace-n -e trace=listen -n -qq -a 12); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=listen -n -qq -a 12
index 936f4a15c998048be78d85af7aa59aa41e22bf85..829973753c1345e1085143f12222e9be59ebabae 100755 (executable)
@@ -2,13 +2,15 @@
 #
 # Check -r option.
 #
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 . "${srcdir=.}/init.sh"
 
+r_opt="${1:--r}"
+
 run_prog ../sleep 0
-run_strace -r -eexecve ../sleep 1
+run_strace "${r_opt}" -eexecve ../sleep 1
 match_grep
index a06408dbb34f5b5069a3fa0f721e20c8d546f202..4d79a2d9a3f6dc8c62ea79c72798342a6331c588 100755 (executable)
@@ -2,19 +2,21 @@
 #
 # Check -t option.
 #
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 . "${srcdir=.}/init.sh"
 
+opts="${*:--t}"
+
 run_prog_skip_if_failed date +%s > "$LOG"
 run_prog_skip_if_failed date +%T --date "@$(cat "$LOG")" > /dev/null
 run_prog ../sleep 0
 
 s0="$(date +%s)"
-run_strace -t -eexecve $args
+run_strace $opts -eexecve $args
 s1="$(date +%s)"
 
 s="$s0"
index 4d1331b15f9fd6e1210ca954c78662fa0c0fcbdb..17d87d6737ed7a29af972ea7dc07d5c63c2b79db 100755 (executable)
@@ -2,19 +2,23 @@
 #
 # Check -tt option.
 #
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 . "${srcdir=.}/init.sh"
 
+precision="${1:-6}"
+[ x0 = "x$#" ] || shift
+opts="${*:--tt}"
+
 run_prog_skip_if_failed date +%s > "$LOG"
 run_prog_skip_if_failed date +%T --date "@$(cat "$LOG")" > /dev/null
 run_prog ../sleep 0
 
 s0="$(date +%s)"
-run_strace -tt -eexecve $args
+run_strace $opts -eexecve $args
 s1="$(date +%s)"
 
 s="$s0"
@@ -26,7 +30,7 @@ while [ "$s" -le "$s1" ]; do
 done
 
 cat > "$EXP" << __EOF__
-($t_reg)\\.[[:digit:]]{6} execve\\("\\.\\./sleep", \\["\\.\\./sleep", "0"\\], 0x[[:xdigit:]]* /\\* [[:digit:]]* vars \\*/\\) = 0
+($t_reg)\\.[[:digit:]]{${precision}} execve\\("\\.\\./sleep", \\["\\.\\./sleep", "0"\\], 0x[[:xdigit:]]* /\\* [[:digit:]]* vars \\*/\\) = 0
 __EOF__
 
 match_grep "$LOG" "$EXP"
index 089ff0647e9359f86f6a27cae5841a5931319ffd..2578d874ac601e5e4a6d6db283e749645b4d1e80 100755 (executable)
@@ -2,18 +2,22 @@
 #
 # Check -ttt option.
 #
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 . "${srcdir=.}/init.sh"
 
+precision="${1:-6}"
+[ x0 = "x$#" ] || shift
+opts="${*:--ttt}"
+
 run_prog_skip_if_failed date +%s > /dev/null
 run_prog ../sleep 0
 
 s0="$(date +%s)"
-run_strace -ttt -eexecve $args
+run_strace $opts -eexecve $args
 s1="$(date +%s)"
 
 s="$s0"
@@ -23,8 +27,14 @@ while [ "$s" -le "$s1" ]; do
        s=$(($s + 1))
 done
 
+if [ x0 = "x${precision}" ]; then
+       subsec_re=""
+else
+       subsec_re="\\.[[:digit:]]{${precision}}"
+fi
+
 cat > "$EXP" << __EOF__
-($t_reg)\\.[[:digit:]]{6} execve\\("\\.\\./sleep", \\["\\.\\./sleep", "0"\\], 0x[[:xdigit:]]* /\\* [[:digit:]]+ vars \\*/\\) = 0
+($t_reg)${subsec_re} execve\\("\\.\\./sleep", \\["\\.\\./sleep", "0"\\], 0x[[:xdigit:]]* /\\* [[:digit:]]+ vars \\*/\\) = 0
 __EOF__
 
 match_grep "$LOG" "$EXP"
diff --git a/tests-mx32/strace-x.c b/tests-mx32/strace-x.c
new file mode 100644 (file)
index 0000000..5d537e9
--- /dev/null
@@ -0,0 +1,82 @@
+/*
+ * Test strace's -x option.
+ *
+ * Copyright (c) 2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#include <stdio.h>
+#include <unistd.h>
+
+#ifndef STRACE_XX
+# define STRACE_XX 0
+#endif
+
+#if STRACE_XX
+# define XOUT(x_, xx_) xx_
+#else
+# define XOUT(x_, xx_) x_
+#endif
+
+int
+main(void)
+{
+       static const struct {
+               const char *path;
+               const char *out;
+       } test_vecs[] = {
+               { "test", XOUT("test", "\\x74\\x65\\x73\\x74") },
+               { "\t\n\v\f\r hi~", XOUT("\\t\\n\\v\\f\\r hi~",
+                 "\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\x68\\x69\\x7e") },
+               { "\t\n\v\f\r\16 hi~", XOUT(
+                 "\\x09\\x0a\\x0b\\x0c\\x0d\\x0e\\x20\\x68\\x69\\x7e",
+                 "\\x09\\x0a\\x0b\\x0c\\x0d\\x0e\\x20\\x68\\x69\\x7e") },
+               { "\10\t\n\v\f\r hi~", XOUT(
+                 "\\x08\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\x68\\x69\\x7e",
+                 "\\x08\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\x68\\x69\\x7e") },
+               { "\t\n\v\f\r\37 hi~", XOUT(
+                 "\\x09\\x0a\\x0b\\x0c\\x0d\\x1f\\x20\\x68\\x69\\x7e",
+                 "\\x09\\x0a\\x0b\\x0c\\x0d\\x1f\\x20\\x68\\x69\\x7e") },
+               { "\t\n\v\f\r hi~\177", XOUT(
+                 "\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\x68\\x69\\x7e\\x7f",
+                 "\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\x68\\x69\\x7e\\x7f") },
+               { "\t\n\v\f\r hi~\222", XOUT(
+                 "\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\x68\\x69\\x7e\\x92",
+                 "\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\x68\\x69\\x7e\\x92") },
+               { "\t\n\v\f\r hi~\377", XOUT(
+                 "\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\x68\\x69\\x7e\\xff",
+                 "\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\x68\\x69\\x7e\\xff") },
+       };
+       static char path[] = "  ";
+
+       const char *rc_str;
+
+       for (size_t i = 0; i < ARRAY_SIZE(test_vecs); i++) {
+               rc_str = sprintrc(chdir(test_vecs[i].path));
+               printf("chdir(\"%s\") = %s\n", test_vecs[i].out, rc_str);
+       }
+
+       for (unsigned char c = 1; c < 255; c++) {
+               path[1] = c;
+               rc_str = sprintrc(chdir(path));
+
+               printf("chdir(");
+#if STRACE_XX
+               print_quoted_hex(path, sizeof(path) - 1);
+#else
+               if (((c < ' ') || (c >= 0x7f)) && (c != '\t') && (c != '\n') &&
+                   (c != '\v') && (c != '\f') && (c != '\r'))
+                       print_quoted_hex(path, sizeof(path) - 1);
+               else
+                       print_quoted_string(path);
+#endif
+               printf(") = %s\n", rc_str);
+       }
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
diff --git a/tests-mx32/strace-x.gen.test b/tests-mx32/strace-x.gen.test
new file mode 100755 (executable)
index 0000000..231f34c
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace-x -e trace=chdir -x -a 12); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=chdir -x -a 12
diff --git a/tests-mx32/strace-xx.c b/tests-mx32/strace-xx.c
new file mode 100644 (file)
index 0000000..af37c30
--- /dev/null
@@ -0,0 +1,2 @@
+#define STRACE_XX 1
+#include "strace-x.c"
diff --git a/tests-mx32/strace-xx.gen.test b/tests-mx32/strace-xx.gen.test
new file mode 100755 (executable)
index 0000000..3deb88c
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace-xx -e trace=chdir -xx -a 18); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=chdir -xx -a 18
index a854182e2e90b2db92a76fdc1484a3bedf710e60..4b032207b4f3ffebc8f54f59142a79d7b97284cc 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_swapon && defined __NR_swapoff
 
index 3ad2368e22a0a08b44a34c397f0c85e6973a7c55..3b66f5a68b8e8f509430a5b98701db443e593235 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of sgetmask and ssetmask syscalls.
  *
  * Copyright (c) 2017-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_sgetmask && defined __NR_ssetmask
 
index 8283a8e243a240f57e704ef935c2fd1d4a4616cf..c47ad842d160c76ce952fb11176166abacdb70c0 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_symlink
 
index be36b941962c5ffaa42e40f0a0a236390c5c7e64..d2d1729bbc962c617253a27b013369747a69e52f 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_symlinkat
 
index e0b654d0b5be962a5e3ffae1daa35d7aee6661d0..db7924beaeee96fce051d43b2f09ef1ef7584d0f 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_sync
 
index 9eba7815259ae0da0c233e1387098853e6192249..0f6d1e3f398afc24bd4df7032c5297ce9ad3dd4d 100644 (file)
@@ -2,6 +2,7 @@
  * Check decoding of sync_file_range syscall.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -9,7 +10,7 @@
 
 #include "tests.h"
 #include <fcntl.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined HAVE_SYNC_FILE_RANGE && defined __NR_sync_file_range
 
index 03af1005646a4a52acabd54a9b8c4394938c856f..d914b28934360eebe91a260ed1444948af488e86 100644 (file)
@@ -2,6 +2,7 @@
  * Check decoding of sync_file_range2 syscall.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -9,7 +10,7 @@
 
 #include "tests.h"
 #include <fcntl.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined HAVE_SYNC_FILE_RANGE && defined  __NR_sync_file_range2
 
index 2e30e6a14d2e4155ff23973e16ec50fb85923408..da43d656e95fa0456c2a9a9ca4985a307559134f 100644 (file)
@@ -3,57 +3,76 @@
 # Define syntax testing primitives.
 #
 # Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 . "${srcdir=.}/init.sh"
 
+log_sfx()
+{
+       printf "%.128s" "$*" | tr -c '0-9A-Za-z-=,' '_'
+}
+
 check_exit_status_and_stderr()
 {
-       $STRACE "$@" 2> "$LOG" &&
-               dump_log_and_fail_with \
-                       "strace $* failed to handle the error properly"
-       match_diff "$LOG" "$EXP" ||
-               dump_log_and_fail_with \
-                       "strace $* failed to print expected diagnostics"
+       local sfx
+       sfx="$1"; shift
+       $STRACE "$@" 2> "$LOG.$sfx" && {
+               cat "$LOG.$sfx" >&2
+               fail_ "strace $* failed to handle the error properly"
+       }
+       match_diff "$LOG.$sfx" "$EXP.$sfx" \
+               "strace $* failed to print expected diagnostics"
 }
 
 check_exit_status_and_stderr_using_grep()
 {
-       $STRACE "$@" 2> "$LOG" &&
-               dump_log_and_fail_with \
-                       "strace $* failed to handle the error properly"
-       match_grep "$LOG" "$EXP" ||
-               dump_log_and_fail_with \
-                       "strace $* failed to print expected diagnostics"
+       local sfx
+       sfx="$1"; shift
+       $STRACE "$@" 2> "$LOG.$sfx" && {
+               cat "$LOG.$sfx" >&2
+               fail_ "strace $* failed to handle the error properly"
+       }
+       match_grep "$LOG.$sfx" "$EXP.$sfx" \
+               "strace $* failed to print expected diagnostics"
 }
 
 check_e()
 {
-       local pattern="$1"; shift
-       cat > "$EXP" << __EOF__
+       local pattern sfx
+       pattern="$1"; shift
+       sfx="$(log_sfx "$*")"
+       cat > "$EXP.$sfx" << __EOF__
 $STRACE_EXE: $pattern
 __EOF__
-       check_exit_status_and_stderr "$@"
+       check_exit_status_and_stderr "$sfx" "$@"
 }
 
 check_e_using_grep()
 {
-       local pattern="$1"; shift
-       cat > "$EXP" << __EOF__
+       local pattern sfx
+       pattern="$1"; shift
+       sfx="$(log_sfx "$*")"
+       cat > "$EXP.$sfx" << __EOF__
 $STRACE_EXE: $pattern
 __EOF__
-       check_exit_status_and_stderr_using_grep "$@"
+       check_exit_status_and_stderr_using_grep "$sfx" "$@"
 }
 
 check_h()
 {
-       local pattern="$1"; shift
-       cat > "$EXP" << __EOF__
-$STRACE_EXE: $pattern
-Try '$STRACE_EXE -h' for more information.
-__EOF__
-       check_exit_status_and_stderr "$@"
+       local patterns sfx
+       patterns="$1"; shift
+       sfx="$(log_sfx "$*")"
+       {
+               local pattern
+               printf '%s\n' "$patterns" |
+                       while read -r pattern; do
+                               printf '%s: %s\n' "$STRACE_EXE" "$pattern"
+                       done
+               printf "Try '%s -h' for more information.\\n" "$STRACE_EXE"
+       } > "$EXP.$sfx"
+       check_exit_status_and_stderr "$sfx" "$@"
 }
diff --git a/tests-mx32/syslog-success.c b/tests-mx32/syslog-success.c
new file mode 100644 (file)
index 0000000..4374de6
--- /dev/null
@@ -0,0 +1,2 @@
+#define RETVAL_INJECTED 1
+#include "syslog.c"
diff --git a/tests-mx32/syslog-success.test b/tests-mx32/syslog-success.test
new file mode 100755 (executable)
index 0000000..adc916e
--- /dev/null
@@ -0,0 +1,11 @@
+#!/bin/sh -efu
+
+. "${srcdir=.}/scno_tampering.sh"
+
+run_prog ../syslog-success 0
+for i in 0 23 42; do
+       run_strace -a35 -e trace=syslog -e inject=syslog:retval="${i}" \
+               ../syslog-success "${i}" > "$EXP.$i"
+       mv "$LOG" "$LOG.$i"
+       match_diff "$LOG.$i" "$EXP.$i"
+done
index 363fdf967b7c3f396306f4a995e798d46b35fb5e..a9c3c813ac411f50ebeaf02391cf1d30b9883618 100644 (file)
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_syslog
 
 # include <stdio.h>
 # include <unistd.h>
 
-# define SYSLOG_ACTION_READ 2
+# ifdef RETVAL_INJECTED
+#  define RET_SFX " (INJECTED)"
+# else
+#  define RET_SFX ""
+# endif
+
+bool
+valid_cmd(int cmd)
+{
+       return cmd >= 0 && cmd <= 10;
+}
+
+void
+printstr(const char *s, int cmd, long size)
+{
+       if (size < 0 || !valid_cmd(cmd))
+               printf("%p", s);
+       else if (size == 0)
+               printf("\"\"");
+       else if (size <= DEFAULT_STRLEN)
+               print_quoted_memory(s, size);
+       else {
+               print_quoted_memory(s, DEFAULT_STRLEN);
+               printf("...");
+       }
+}
 
 int
 main(void)
 {
-       const long addr = (long) 0xfacefeeddeadbeefULL;
-       int rc = syscall(__NR_syslog, SYSLOG_ACTION_READ, addr, -1);
-       printf("syslog(SYSLOG_ACTION_READ, %#lx, -1) = %d %s (%m)\n",
-              addr, rc, errno2name());
+       static const struct cmd_str {
+               unsigned int cmd;
+               const char *str;
+       } no_args[] = {
+               { 0,  "0 /* SYSLOG_ACTION_CLOSE */" },
+               { 1,  "1 /* SYSLOG_ACTION_OPEN */" },
+               { 5,  "5 /* SYSLOG_ACTION_CLEAR */" },
+               { 6,  "6 /* SYSLOG_ACTION_CONSOLE_OFF */" },
+               { 7,  "7 /* SYSLOG_ACTION_CONSOLE_ON */" },
+               { 9,  "9 /* SYSLOG_ACTION_SIZE_UNREAD */" },
+               { 10, "10 /* SYSLOG_ACTION_SIZE_BUFFER */" },
+       };
+       static const struct cmd_str two_args[] = {
+               { 0xfeedbeef, "-17973521 /* SYSLOG_ACTION_??? */" },
+               { -1U, "-1 /* SYSLOG_ACTION_??? */" },
+               { 2,  "2 /* SYSLOG_ACTION_READ */" },
+               { 3,  "3 /* SYSLOG_ACTION_READ_ALL */" },
+               { 4,  "4 /* SYSLOG_ACTION_READ_CLEAR */" },
+               { 11, "11 /* SYSLOG_ACTION_??? */" },
+               { (1U << 31) - 1, "2147483647 /* SYSLOG_ACTION_??? */" },
+       };
+       static const struct cmd_str levels[] = {
+               { 0xfeedbeef, "-17973521 /* LOGLEVEL_??? */" },
+               { -1U, "-1 /* LOGLEVEL_??? */" },
+               { 0, "0 /* LOGLEVEL_EMERG */" },
+               { 7, "7 /* LOGLEVEL_DEBUG */" },
+               { 8, "8 /* LOGLEVEL_DEBUG+1 */" },
+               { 9, "9 /* LOGLEVEL_??? */" },
+               { (1U << 31) - 1, "2147483647 /* LOGLEVEL_??? */" },
+       };
+       static const kernel_ulong_t high =
+               (kernel_ulong_t) 0xbadc0ded00000000ULL;
+       static const size_t buf_size = 64;
+
+       const kernel_ulong_t addr = (kernel_ulong_t) 0xfacefeeddeadbeefULL;
+       int rc;
+       char *buf = tail_alloc(buf_size);
+
+       fill_memory(buf, buf_size);
+
+       for (size_t i = 0; i < ARRAY_SIZE(no_args); i++) {
+               rc = syscall(__NR_syslog, high | no_args[i].cmd, addr, -1);
+               printf("syslog(%s) = %s" RET_SFX "\n",
+               no_args[i].str, sprintrc(rc));
+       }
+
+       for (size_t i = 0; i < ARRAY_SIZE(two_args); i++) {
+               rc = syscall(__NR_syslog, high | two_args[i].cmd, NULL, -1);
+               printf("syslog(%s, NULL, -1) = %s" RET_SFX "\n",
+                      two_args[i].str, sprintrc(rc));
+
+# ifdef RETVAL_INJECTED
+               /* Avoid valid commands with a bogus address */
+               if (!valid_cmd(two_args[i].cmd))
+# endif
+               {
+                       rc = syscall(__NR_syslog, high | two_args[i].cmd, addr,
+                                    -1);
+                       printf("syslog(%s, %#llx, -1) = %s" RET_SFX "\n",
+                              two_args[i].str, (unsigned long long) addr,
+                              sprintrc(rc));
+
+                       rc = syscall(__NR_syslog, two_args[i].cmd, addr, 0);
+
+                       printf("syslog(%s, %s, 0) = %s" RET_SFX "\n",
+                              two_args[i].str,
+                              !rc && valid_cmd(two_args[i].cmd)
+                                  && (sizeof(kernel_ulong_t) == sizeof(void *))
+                                     ? "\"\""
+                                     : (sizeof(addr) == 8)
+                                       ? "0xfacefeeddeadbeef" : "0xdeadbeef",
+                              sprintrc(rc));
+               }
+
+               rc = syscall(__NR_syslog, two_args[i].cmd, buf, buf_size);
+               const char *errstr = sprintrc(rc);
+
+               printf("syslog(%s, ", two_args[i].str);
+               if (rc >= 0 && valid_cmd(two_args[i].cmd))
+                       printstr(buf, two_args[i].cmd, rc);
+               else
+                       printf("%p", buf);
+               printf(", %zu) = %s" RET_SFX "\n", buf_size, errstr);
+       }
+
+       for (size_t i = 0; i < ARRAY_SIZE(levels); i++) {
+               rc = syscall(__NR_syslog, high | 8, addr, levels[i].cmd);
+               printf("syslog(8 /* SYSLOG_ACTION_CONSOLE_LEVEL */, %#llx, %s)"
+                      " = %s" RET_SFX "\n",
+                      (unsigned long long) addr, levels[i].str, sprintrc(rc));
+       }
 
        puts("+++ exited with 0 +++");
        return 0;
index 5707a3e2a4570fa132317ed1757c5118f40dbff7..673b0180f04fa76e167b4096c661cac62b253800 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (syslog -a36 ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (syslog -a35 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a36 
+run_strace_match_diff -a35 
index 2137c3514fe1f8490421e816e7e0e7f5d1d29049..d620bb8fed4ffe74948d3946404096ca83b5f85e 100644 (file)
@@ -2,13 +2,14 @@
  * This file is part of tee strace test.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_tee
 
index d41ddf0a0a0e0d9c63c79c37d13c0c1162d2f093..2bda35fc9bfb771e37a859d66e5f80b75afa7640 100755 (executable)
@@ -2,7 +2,7 @@
 #
 # Check termination signal forwarding.
 #
-# Copyright (c) 2017-2018 The strace developers.
+# Copyright (c) 2017-2019 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 run_expect_termsig="../run_expect_termsig 15"
 unblock_reset_raise="../unblock_reset_raise 15"
+block_reset_run="../block_reset_run 15"
+orig_STRACE="$STRACE"
 
+run_prog $run_expect_termsig $block_reset_run $unblock_reset_raise
 run_prog $run_expect_termsig $unblock_reset_raise
-STRACE="$run_expect_termsig $STRACE"
 
+STRACE="$run_expect_termsig $orig_STRACE"
+for i in 1 2 3 4; do
+       run_strace -I$i -enone -esignal=none $unblock_reset_raise
+done
+
+STRACE="$run_expect_termsig $block_reset_run $orig_STRACE"
 for i in 1 2 3 4; do
        run_strace -I$i -enone -esignal=none $unblock_reset_raise
 done
index 8b8c66b8d645abfb406bb1f05482c2c4e3b7d168..5a97382f59c8ad947e94d6de8e40c61e283dcb5e 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 #include "netlink.h"
 #include <linux/rtnetlink.h>
 
+#ifndef PRINT_SOCK
+# define PRINT_SOCK 0
+#endif
+
 static void
 init_nlattr(struct nlattr *const nla,
            const uint16_t nla_len,
@@ -37,6 +41,29 @@ print_nlattr(const unsigned int nla_len, const char *const nla_type, bool add_da
               add_data ? "[" : "", nla_len, nla_type);
 }
 
+static void
+print_sockfd(int sockfd, const char *pfx, const char *sfx)
+{
+#if PRINT_SOCK
+       static int fd = -1;
+       static unsigned long inode;
+
+       if (sockfd < 0) {
+               printf("%s%d%s", pfx, sockfd, sfx);
+               return;
+       }
+
+       if (sockfd != fd) {
+               fd = sockfd;
+               inode = inode_of_sockfd(fd);
+       }
+
+       printf("%s%d<socket:[%lu]>%s", pfx, sockfd, inode, sfx);
+#else
+       printf("%s%d%s", pfx, sockfd, sfx);
+#endif
+}
+
 #define TEST_NLATTR_EX_(fd_, nlh0_, hdrlen_,                           \
                     init_msg_, print_msg_,                             \
                     nla_type_, nla_type_str_,                          \
@@ -60,7 +87,7 @@ print_nlattr(const unsigned int nla_len, const char *const nla_type, bool add_da
                        sprintrc(sendto((fd_), nlh, msg_len,            \
                                        MSG_DONTWAIT, NULL, 0));        \
                                                                        \
-               printf("sendto(%d, {", (fd_));                          \
+               print_sockfd((fd_), "sendto(", ", {");                  \
                (print_msg_)(msg_len);                                  \
                print_nlattr(nla_len, (nla_type_str_),                  \
                             (nla_total_len_) > (nla_data_len_));       \
@@ -96,11 +123,9 @@ print_nlattr(const unsigned int nla_len, const char *const nla_type, bool add_da
 #define TEST_NLATTR_OBJECT_EX_(fd_, nlh0_, hdrlen_,                    \
                               init_msg_, print_msg_,                   \
                               nla_type_, nla_type_str_,                \
-                              pattern_, obj_, fallback_func, ...)      \
+                              pattern_, obj_, minsz_, fallback_func, ...) \
        do {                                                            \
-               const unsigned int plen =                               \
-                       sizeof(obj_) - 1 > DEFAULT_STRLEN               \
-                       ? DEFAULT_STRLEN : (int) sizeof(obj_) - 1;      \
+               const unsigned int plen = MIN((minsz_) - 1, DEFAULT_STRLEN); \
                /* len < sizeof(obj_) */                                \
                if (plen > 0)                                           \
                        TEST_NLATTR_((fd_), (nlh0_), (hdrlen_),         \
@@ -113,7 +138,7 @@ print_nlattr(const unsigned int nla_len, const char *const nla_type, bool add_da
                        (init_msg_), (print_msg_),                      \
                        (nla_type_), (nla_type_str_),                   \
                        sizeof(obj_),                                   \
-                       (pattern_), sizeof(obj_) - 1,                   \
+                       (pattern_), (minsz_) - 1,                       \
                        printf("%p",                                    \
                               RTA_DATA(NLMSG_ATTR(nlh, (hdrlen_)))));  \
                /* sizeof(obj_) */                                      \
@@ -128,12 +153,12 @@ print_nlattr(const unsigned int nla_len, const char *const nla_type, bool add_da
 #define TEST_NLATTR_OBJECT_EX(fd_, nlh0_, hdrlen_,                     \
                              init_msg_, print_msg_,                    \
                              nla_type_,                                \
-                             pattern_, obj_, fallback_func, ...)       \
+                             pattern_, obj_, minsz_, fallback_func, ...) \
        TEST_NLATTR_OBJECT_EX_((fd_), (nlh0_), (hdrlen_),               \
                               (init_msg_), (print_msg_),               \
                               (nla_type_), #nla_type_,                 \
-                              (pattern_), (obj_), (fallback_func),     \
-                              __VA_ARGS__)
+                              (pattern_), (obj_), (minsz_),            \
+                              (fallback_func), __VA_ARGS__)
 
 #define TEST_NLATTR_OBJECT(fd_, nlh0_, hdrlen_,                                \
                           init_msg_, print_msg_,                       \
@@ -141,8 +166,17 @@ print_nlattr(const unsigned int nla_len, const char *const nla_type, bool add_da
        TEST_NLATTR_OBJECT_EX_((fd_), (nlh0_), (hdrlen_),               \
                               (init_msg_), (print_msg_),               \
                               (nla_type_), #nla_type_,                 \
-                              (pattern_), (obj_), print_quoted_hex,    \
-                              __VA_ARGS__)
+                              (pattern_), (obj_), sizeof(obj_),        \
+                              print_quoted_hex, __VA_ARGS__)
+
+#define TEST_NLATTR_OBJECT_MINSZ(fd_, nlh0_, hdrlen_,                  \
+                          init_msg_, print_msg_,                       \
+                          nla_type_, pattern_, obj_, minsz_, ...)      \
+       TEST_NLATTR_OBJECT_EX_((fd_), (nlh0_), (hdrlen_),               \
+                              (init_msg_), (print_msg_),               \
+                              (nla_type_), #nla_type_,                 \
+                              (pattern_), (obj_), (minsz_),            \
+                              print_quoted_hex, __VA_ARGS__)
 
 #define TEST_NLATTR_ARRAY(fd_, nlh0_, hdrlen_,                         \
                          init_msg_, print_msg_,                        \
index 09c438d1d64c548d7af031fb5b7044a25b63e058..9e9a543c1d5ee4a6bebf6e15111554d1fda2e956 100644 (file)
@@ -2,7 +2,7 @@
  * Test printstrn/umoven.
  *
  * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -13,7 +13,6 @@
 #include <stdio.h>
 #include <string.h>
 #include <unistd.h>
-#include <asm/unistd.h>
 
 #include "scno.h"
 #include "test_ucopy.h"
index 78d393b200fd4e74e720689501d9d0216053e052..0574c73cb7263d5bbd94d9e71e2041f02990203c 100644 (file)
@@ -2,7 +2,7 @@
  * Test whether process_vm_readv and PTRACE_PEEKDATA work.
  *
  * Copyright (c) 2016-2017 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -22,7 +22,6 @@
 
 #ifndef HAVE_PROCESS_VM_READV
 
-# include <asm/unistd.h>
 # include "scno.h"
 static ssize_t
 strace_process_vm_readv(pid_t pid,
index 1a1b02c3a71f27c3fe69ed48c4256811ed330824..66c7f0e65fc63ac83496e29cea238317ef559b8d 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2019 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -24,6 +24,7 @@
 # endif
 
 # include <stdbool.h>
+# include <stdint.h>
 # include <sys/types.h>
 # include "kernel_types.h"
 # include "gcc_compat.h"
 #  define XLAT_VERBOSE 0
 # endif
 
+
+
+# if XLAT_RAW
+#  define XLAT_KNOWN(val_, str_) STRINGIFY_VAL(val_)
+#  define XLAT_UNKNOWN(val_, dflt_) STRINGIFY_VAL(val_)
+
+#  define XLAT_FMT "%#x"
+#  define XLAT_ARGS(a_) (a_)
+#  define XLAT_SEL(v_, s_) v_
+
+#  define ABBR(s_) ""
+#  define RAW(s_) s_
+#  define VERB(s_) ""
+#  define NABBR(s_) s_
+#  define NRAW(s_) ""
+#  define NVERB(s_) s_
+# elif XLAT_VERBOSE
+#  define XLAT_KNOWN(val_, str_) STRINGIFY_VAL(val_) " /* " str_ " */"
+#  define XLAT_UNKNOWN(val_, dflt_) STRINGIFY_VAL(val_) " /* " dflt_ " */"
+
+#  define XLAT_FMT "%#x /* %s */"
+#  define XLAT_ARGS(a_) a_, #a_
+#  define XLAT_SEL(v_, s_) v_, s_
+
+#  define ABBR(s_) ""
+#  define RAW(s_) ""
+#  define VERB(s_) s_
+#  define NABBR(s_) s_
+#  define NRAW(s_) s_
+#  define NVERB(s_) ""
+# else /* !XLAT_RAW && !XLAT_VERBOSE */
+#  define XLAT_KNOWN(val_, str_) str_
+#  define XLAT_UNKNOWN(val_, dflt_) STRINGIFY_VAL(val_) " /* " dflt_ " */"
+
+#  define XLAT_FMT "%s"
+#  define XLAT_ARGS(a_) #a_
+#  define XLAT_SEL(v_, s_) s_
+
+#  define ABBR(s_) s_
+#  define RAW(s_) ""
+#  define VERB(s_) ""
+#  define NABBR(s_) ""
+#  define NRAW(s_) s_
+#  define NVERB(s_) s_
+# endif /* XLAT_RAW, XLAT_VERBOSE */
+
+# define XLAT_STR(v_) sprintxlat(#v_, v_, NULL)
+
+# define ARG_XLAT_KNOWN(val_, str_) val_, XLAT_KNOWN(val_, str_)
+# define ARG_XLAT_UNKNOWN(val_, str_) val_, XLAT_UNKNOWN(val_, str_)
+
 # ifndef DEFAULT_STRLEN
 /* Default maximum # of bytes printed in printstr et al. */
 #  define DEFAULT_STRLEN 32
 # endif
 
+struct strval32 {
+       uint32_t val;
+       const char *str;
+};
+
+struct strval64 {
+       uint64_t val;
+       const char *str;
+};
+
 /* Cached sysconf(_SC_PAGESIZE). */
 size_t get_page_size(void);
 
@@ -86,6 +148,12 @@ void perror_msg_and_skip(const char *, ...)
 /* Stat the specified file and skip the test if the stat call failed. */
 void skip_if_unavailable(const char *);
 
+/*
+ * Obtain an exclusive lock on dirname(path_name)/lock_name file
+ * using open and flock.
+ */
+int lock_file_by_dirname(const char *path_name, const char *lock_name);
+
 /*
  * Allocate memory that ends on the page boundary.
  * Pages allocated by this call are preceded by an unmapped page
@@ -116,15 +184,26 @@ void *tail_memdup(const void *, const size_t)
 # define TAIL_ALLOC_OBJECT_VAR_PTR(type_name, type_ptr)                \
        type_name *type_ptr = tail_alloc(sizeof(*type_ptr))
 
-/*
+/**
  * Fill memory (pointed by ptr, having size bytes) with different bytes (with
  * values starting with start and resetting every period) in order to catch
  * sign, byte order and/or alignment errors.
  */
 void fill_memory_ex(void *ptr, size_t size, unsigned char start,
                    unsigned int period);
-/* Shortcut for fill_memory_ex(ptr, size, 0x80, 0x80) */
+/** Shortcut for fill_memory_ex(ptr, size, 0x80, 0x80) */
 void fill_memory(void *ptr, size_t size);
+/** Variant of fill_memory_ex for arrays of 16-bit (2-byte) values. */
+void fill_memory16_ex(void *ptr, size_t size, uint16_t start,
+                     unsigned int period);
+/** Shortcut for fill_memory16_ex(ptr, size, 0x80c0, 0x8000) */
+void fill_memory16(void *ptr, size_t size);
+/** Variant of fill_memory_ex for arrays of 32-bit (4-byte) values. */
+void fill_memory32_ex(void *ptr, size_t size, uint32_t start,
+                     unsigned int period);
+/** Shortcut for fill_memory32_ex(ptr, size, 0x80a0c0e0, 0x80000000) */
+void fill_memory32(void *ptr, size_t size);
+
 
 /* Close stdin, move stdout to a non-standard descriptor, and print. */
 void tprintf(const char *, ...)
@@ -202,12 +281,49 @@ struct xlat;
 int printflags(const struct xlat *, const unsigned long long, const char *);
 
 /* Print constant in symbolic form according to xlat table. */
-int printxval(const struct xlat *, const unsigned long long, const char *);
+int printxval_abbrev(const struct xlat *, const unsigned long long,
+                    const char *);
+int printxval_raw(const struct xlat *, const unsigned long long, const char *);
+int printxval_verbose(const struct xlat *, const unsigned long long,
+                     const char *);
+
+/* Print constant in symbolic form according to xlat table. */
+const char *sprintxlat_abbrev(const char *, const unsigned long long,
+                          const char *);
+const char *sprintxlat_raw(const char *, const unsigned long long,
+                          const char *);
+const char *sprintxlat_verbose(const char *, const unsigned long long,
+                              const char *);
+
+/* Print constant in symbolic form according to xlat table. */
+const char *sprintxval_abbrev(const struct xlat *, const unsigned long long,
+                             const char *);
+const char *sprintxval_raw(const struct xlat *, const unsigned long long,
+                          const char *);
+const char *sprintxval_verbose(const struct xlat *, const unsigned long long,
+                              const char *);
+
+# if XLAT_RAW
+#  define printxval  printxval_raw
+#  define sprintxlat sprintxlat_raw
+#  define sprintxval sprintxval_raw
+# elif XLAT_VERBOSE
+#  define printxval  printxval_verbose
+#  define sprintxlat sprintxlat_verbose
+#  define sprintxval sprintxval_verbose
+# else
+#  define printxval  printxval_abbrev
+#  define sprintxlat sprintxlat_abbrev
+#  define sprintxval sprintxval_abbrev
+# endif
 
 /* Invoke a socket syscall, either directly or via __NR_socketcall. */
 int socketcall(const int nr, const int call,
               long a1, long a2, long a3, long a4, long a5);
 
+/* Call chdir and print strace output depending on flags. */
+void test_status_chdir(const char *dir, bool print_success, bool print_fail);
+
 /* Wrappers for recvmmsg and sendmmsg syscalls. */
 struct mmsghdr;
 struct timespec;
@@ -218,6 +334,9 @@ int send_mmsg(int, struct mmsghdr *, unsigned int, unsigned int);
 int create_nl_socket_ext(int proto, const char *name);
 # define create_nl_socket(proto)       create_nl_socket_ext((proto), #proto)
 
+/* Create a temporary file in the current directory. */
+int create_tmpfile(unsigned int flags);
+
 /* Create a pipe with maximized descriptor numbers. */
 void pipe_maxfd(int pipefd[2]);
 
@@ -236,7 +355,7 @@ unsigned int ifindex_lo(void);
 /*
  * For 64-bit kernel_ulong_t and 32-bit pointer,
  * return a kernel_ulong_t value by filling higher bits.
- * For other architertures, return the original pointer.
+ * For other architectures, return the original pointer.
  */
 static inline kernel_ulong_t
 f8ill_ptr_to_kulong(const void *const ptr)
diff --git a/tests-mx32/tgkill--pidns-translation.c b/tests-mx32/tgkill--pidns-translation.c
new file mode 100644 (file)
index 0000000..c3ac2d0
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "tgkill.c"
diff --git a/tests-mx32/tgkill--pidns-translation.gen.test b/tests-mx32/tgkill--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..8f72925
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (tgkill--pidns-translation test_pidns -a15 --signal='!cont' -e trace=tgkill); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a15 --signal='!cont' -e trace=tgkill
diff --git a/tests-mx32/tgkill.c b/tests-mx32/tgkill.c
new file mode 100644 (file)
index 0000000..10816a6
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * Check decoding of tgkill syscall.
+ *
+ * Copyright (c) 2020 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+#include "pidns.h"
+
+#ifdef __NR_tgkill
+
+# include <signal.h>
+# include <stdio.h>
+# include <unistd.h>
+
+static const char *errstr;
+
+static long
+k_tgkill(const unsigned int tgid,
+        const unsigned int tid,
+        const unsigned int sig)
+{
+        const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+        const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+        const kernel_ulong_t arg1 = fill | tgid;
+        const kernel_ulong_t arg2 = fill | tid;
+        const kernel_ulong_t arg3 = fill | sig;
+        const long rc = syscall(__NR_tgkill, arg1, arg2, arg3, bad, bad, bad);
+        errstr = sprintrc(rc);
+        return rc;
+}
+
+int
+main(void)
+{
+       PIDNS_TEST_INIT;
+
+       const int pid = getpid();
+       const char *pid_str = pidns_pid2str(PT_TGID);
+       const int tid = syscall(__NR_gettid);
+       const char *tid_str = pidns_pid2str(PT_TID);
+       const int bad_pid = -1;
+       const int bad_sig = 0xface;
+
+       k_tgkill(pid, tid, 0);
+       pidns_print_leader();
+       printf("tgkill(%d%s, %d%s, 0) = %s\n",
+               pid, pid_str, tid, tid_str, errstr);
+
+       k_tgkill(pid, bad_pid, 0);
+       pidns_print_leader();
+       printf("tgkill(%d%s, %d, 0) = %s\n",
+               pid, pid_str, bad_pid, errstr);
+
+       k_tgkill(bad_pid, tid, 0);
+       pidns_print_leader();
+       printf("tgkill(%d, %d%s, 0) = %s\n",
+               bad_pid, tid, tid_str, errstr);
+
+       k_tgkill(pid, tid, SIGCONT);
+       pidns_print_leader();
+       printf("tgkill(%d%s, %d%s, SIGCONT) = %s\n",
+               pid, pid_str, tid, tid_str, errstr);
+
+       k_tgkill(pid, tid, bad_sig);
+       pidns_print_leader();
+       printf("tgkill(%d%s, %d%s, %d) = %s\n",
+               pid, pid_str, tid, tid_str, bad_sig, errstr);
+
+       k_tgkill(pid, tid, -bad_sig);
+       pidns_print_leader();
+       printf("tgkill(%d%s, %d%s, %d) = %s\n",
+               pid, pid_str, tid, tid_str, -bad_sig, errstr);
+
+       pidns_print_leader();
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_tgkill")
+
+#endif
diff --git a/tests-mx32/tgkill.gen.test b/tests-mx32/tgkill.gen.test
new file mode 100755 (executable)
index 0000000..6ad0e48
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (tgkill -a15 --signal='!cont'); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a15 --signal='!cont'
diff --git a/tests-mx32/threads-execve--quiet-thread-execve.c b/tests-mx32/threads-execve--quiet-thread-execve.c
new file mode 100644 (file)
index 0000000..9811b7b
--- /dev/null
@@ -0,0 +1,2 @@
+#define PRINT_SUPERSEDED 0
+#include "threads-execve.c"
diff --git a/tests-mx32/threads-execve--quiet-thread-execve.gen.test b/tests-mx32/threads-execve--quiet-thread-execve.gen.test
new file mode 100755 (executable)
index 0000000..24ed8ae
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (threads-execve--quiet-thread-execve +threads-execve.test -s40 --quiet=personality,thread-execve); do not edit.
+set -- -s40 --quiet=personality,thread-execve
+. "${srcdir=.}/threads-execve.test"
diff --git a/tests-mx32/threads-execve-q.c b/tests-mx32/threads-execve-q.c
new file mode 100644 (file)
index 0000000..a6627b7
--- /dev/null
@@ -0,0 +1 @@
+#include "threads-execve.c"
diff --git a/tests-mx32/threads-execve-q.gen.test b/tests-mx32/threads-execve-q.gen.test
new file mode 100755 (executable)
index 0000000..9865efe
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (threads-execve-q +threads-execve.test -q); do not edit.
+set -- -q
+. "${srcdir=.}/threads-execve.test"
diff --git a/tests-mx32/threads-execve-qq.c b/tests-mx32/threads-execve-qq.c
new file mode 100644 (file)
index 0000000..2dc806d
--- /dev/null
@@ -0,0 +1,2 @@
+#define PRINT_EXITED 0
+#include "threads-execve.c"
diff --git a/tests-mx32/threads-execve-qq.gen.test b/tests-mx32/threads-execve-qq.gen.test
new file mode 100755 (executable)
index 0000000..515ac44
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (threads-execve-qq +threads-execve.test -qq); do not edit.
+set -- -qq
+. "${srcdir=.}/threads-execve.test"
diff --git a/tests-mx32/threads-execve-qqq.c b/tests-mx32/threads-execve-qqq.c
new file mode 100644 (file)
index 0000000..c8e3291
--- /dev/null
@@ -0,0 +1,3 @@
+#define PRINT_SUPERSEDED 0
+#define PRINT_EXITED 0
+#include "threads-execve.c"
diff --git a/tests-mx32/threads-execve-qqq.gen.test b/tests-mx32/threads-execve-qqq.gen.test
new file mode 100755 (executable)
index 0000000..4a6641f
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (threads-execve-qqq +threads-execve.test -qqq); do not edit.
+set -- -qqq
+. "${srcdir=.}/threads-execve.test"
index 56fab5290dafe54dfdd50eab6f2e8f1ee9b7447a..3c13e29ac143ef81bd777ad0d552ccc47827239b 100644 (file)
@@ -2,21 +2,33 @@
  * Check decoding of threads when a non-leader thread invokes execve.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2019 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
-#include <errno.h>
-#include <pthread.h>
-#include <signal.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-#include <unistd.h>
+#include "scno.h"
+
+#ifdef __NR_nanosleep
+
+# include <errno.h>
+# include <pthread.h>
+# include <signal.h>
+# include <stdio.h>
+# include <stdlib.h>
+# include <time.h>
+# include <unistd.h>
+
+# include "kernel_old_timespec.h"
+
+# ifndef PRINT_EXITED
+#  define PRINT_EXITED 1
+# endif
+# ifndef PRINT_SUPERSEDED
+#  define PRINT_SUPERSEDED 1
+# endif
 
 static pid_t leader;
 static pid_t tid;
@@ -110,9 +122,9 @@ thread(void *arg)
        struct timespec ts = { .tv_nsec = 100000000 };
        (void) clock_nanosleep(CLOCK_REALTIME, 0, &ts, NULL);
 
-       ts.tv_nsec = 12345;
+       kernel_old_timespec_t ots = { .tv_nsec = 12345 };
        printf("%-5d nanosleep({tv_sec=0, tv_nsec=%u}, NULL) = 0\n",
-              tid, (unsigned int) ts.tv_nsec);
+              tid, (unsigned int) ots.tv_nsec);
 
        switch (action % NUMBER_OF_ACTIONS) {
                case ACTION_exit:
@@ -140,12 +152,12 @@ thread(void *arg)
                        break;
        }
 
-       printf("%-5d +++ superseded by execve in pid %u +++\n"
-              "%-5d <... execve resumed>) = 0\n",
-              leader, tid,
-              leader);
+# if PRINT_SUPERSEDED
+       printf("%-5d +++ superseded by execve in pid %u +++\n", leader, tid);
+# endif
+       printf("%-5d <... execve resumed>) = 0\n", leader);
 
-       (void) nanosleep(&ts, NULL);
+       (void) syscall(__NR_nanosleep, (unsigned long) &ots, 0UL);
        execve(argv[0], argv, environ);
        perror_msg_and_fail("execve");
 }
@@ -178,7 +190,9 @@ main(int ac, char **av)
        action = atoi(av[2]);
 
        if (action >= NUMBER_OF_ACTIONS * NUMBER_OF_ITERATIONS) {
+# if PRINT_EXITED
                printf("%-5d +++ exited with 0 +++\n", leader);
+# endif
                return 0;
        }
 
@@ -190,7 +204,7 @@ main(int ac, char **av)
        if (errno)
                perror_msg_and_fail("pthread_create");
 
-       struct timespec ts = { .tv_sec = 123 };
+       kernel_old_timespec_t ots = { .tv_sec = 123 };
        sigset_t mask;
        sigemptyset(&mask);
 
@@ -214,11 +228,18 @@ main(int ac, char **av)
                case ACTION_nanosleep:
                        printf("%s nanosleep({tv_sec=%u, tv_nsec=0}"
                               ",  <unfinished ...>\n",
-                              leader_str, (unsigned int) ts.tv_sec);
+                              leader_str, (unsigned int) ots.tv_sec);
                        close(fds[1]);
-                       (void) nanosleep(&ts, 0);
+                       (void) syscall(__NR_nanosleep,
+                                      (unsigned long) &ots, 0UL);
                        break;
        }
 
        return 1;
 }
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_nanosleep")
+
+#endif
index 04ce15df19a648ca7ac4f4c48a47ead0f52092d8..de6591038a477ad2903a4a3b37b2d3a9f5ca5560 100755 (executable)
@@ -3,7 +3,7 @@
 # Check decoding of threads when a non-leader thread invokes execve.
 #
 # Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2016-2019 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 # The kernel before commit v3.1-rc1~308^2~7 reported 0 instead of old pid.
 require_min_kernel_version_or_skip 3.1
 
+# This test requires some concurrency between threads.
+require_min_nproc 2
+
+opts="${*:-}"
+
 check_prog diff
 run_prog_skip_if_failed date +%s > /dev/null
 s0="$(date +%s)"
 
 run_prog > /dev/null
 
-set -- -a21 -f -esignal=none -e trace=execve,exit,nanosleep,rt_sigsuspend $args
+set -- -a21 -f -esignal=none -e trace=execve,exit,nanosleep,rt_sigsuspend $opts $args
 
 # Due to probabilistic nature of the test, try it several times.
 while :; do
index 330c884610351161f960c817026838b3ff6d0904..f41d7fdbb7411217ad30f22fd4c360658cba287f 100644 (file)
@@ -2,14 +2,14 @@
  * This file is part of time strace test.
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_time
 
index c9c64813a066197563ac92ebe179e041b5eb159b..2c4dae19bd25d72eadeb934ef4869e222c0e61a9 100644 (file)
@@ -2,13 +2,14 @@
  * This file is part of timer_create strace test.
  *
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_timer_create
 
index 17390c2d302a2e706a930dccf8d2a269bb9b9995..04d037b2fe242e9bbbe1ca9429c990d632e47bfb 100644 (file)
@@ -2,14 +2,14 @@
  * This file is part of timer_xettime strace test.
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_timer_create \
  && defined __NR_timer_gettime \
index 7361667747e28be21732b6a0c1d888bd4e069018..96d4c68248dfc7c2780e9b5630b4bff50da8a55a 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -8,7 +8,7 @@
 
 #include "tests.h"
 #include <fcntl.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_timerfd_create \
  && defined __NR_timerfd_gettime \
index 551803df7b95602ddf884e2f47fcacd66cb71891..940966d5fc01531444a6abf60aa8e4edc8106a43 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -9,7 +9,7 @@
 #include <assert.h>
 #include <stdio.h>
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 int
 main(void)
index a390dde47ce5dfb61d992f10a44e8b3d864b6b3c..06a0f25789f4364c389540d242d8dcf3ccba8823 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2015 Eugene Syromyatnikov <evgsyr@gmail.com>
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 #include <time.h>
 #include <unistd.h>
 
-#include <asm/unistd.h>
+#include "scno.h"
 #include <sys/times.h>
 #include <sys/wait.h>
 
 enum {
-       NUM_USER_ITERS = 1000000,
+       NUM_USER_ITERS_SQRT = 1000,
+       NUM_USER_ITERS = NUM_USER_ITERS_SQRT * NUM_USER_ITERS_SQRT,
        PARENT_CPUTIME_LIMIT_NSEC = 200000000,
        CHILD_CPUTIME_LIMIT_NSEC = 300000000
 };
@@ -48,7 +49,7 @@ main(void)
                if (ts.tv_sec || ts.tv_nsec >= cputime_limit)
                        break;
 
-               if (i && !(ts.tv_sec || ts.tv_nsec))
+               if ((i > NUM_USER_ITERS_SQRT) && !(ts.tv_sec || ts.tv_nsec))
                        error_msg_and_skip("clock_gettime(CLOCK_PROCESS_CPUTIME_ID, {0, 0})");
 
                for (i = 0; i < NUM_USER_ITERS; ++i)
diff --git a/tests-mx32/tkill--pidns-translation.c b/tests-mx32/tkill--pidns-translation.c
new file mode 100644 (file)
index 0000000..70a64f5
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "tkill.c"
diff --git a/tests-mx32/tkill--pidns-translation.gen.test b/tests-mx32/tkill--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..14c2fb3
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (tkill--pidns-translation test_pidns --signal='!cont' -a12 -e trace=tkill); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns --signal='!cont' -a12 -e trace=tkill
diff --git a/tests-mx32/tkill.c b/tests-mx32/tkill.c
new file mode 100644 (file)
index 0000000..89466e1
--- /dev/null
@@ -0,0 +1,69 @@
+/*
+ * Check decoding of tkill syscall.
+ *
+ * Copyright (c) 2020 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+#include "pidns.h"
+
+#ifdef __NR_tkill
+
+# include <signal.h>
+# include <stdio.h>
+# include <unistd.h>
+
+static const char *errstr;
+
+static long
+k_tkill(const unsigned int tid, const unsigned int sig)
+{
+        const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+        const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+        const kernel_ulong_t arg1 = fill | tid;
+        const kernel_ulong_t arg2 = fill | sig;
+        const long rc = syscall(__NR_tkill, arg1, arg2, bad, bad, bad, bad);
+        errstr = sprintrc(rc);
+        return rc;
+}
+
+int
+main(void)
+{
+       PIDNS_TEST_INIT;
+
+       const int tid = syscall(__NR_gettid);
+       const char *tid_str = pidns_pid2str(PT_TID);
+       const int bad_pid = -1;
+       const int bad_sig = 0xface;
+
+       k_tkill(tid, 0);
+       pidns_print_leader();
+       printf("tkill(%d%s, 0) = %s\n", tid, tid_str, errstr);
+
+       k_tkill(tid, SIGCONT);
+       pidns_print_leader();
+       printf("tkill(%d%s, SIGCONT) = %s\n", tid, tid_str, errstr);
+
+       k_tkill(bad_pid, bad_sig);
+       pidns_print_leader();
+       printf("tkill(%d, %d) = %s\n", bad_pid, bad_sig, errstr);
+
+       k_tkill(bad_pid, -bad_sig);
+       pidns_print_leader();
+       printf("tkill(%d, %d) = %s\n", bad_pid, -bad_sig, errstr);
+
+       pidns_print_leader();
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_tkill")
+
+#endif
diff --git a/tests-mx32/tkill.gen.test b/tests-mx32/tkill.gen.test
new file mode 100755 (executable)
index 0000000..65e9d96
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (tkill -a12 --signal='!cont'); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a12 --signal='!cont'
diff --git a/tests-mx32/trace_clock.gen.test b/tests-mx32/trace_clock.gen.test
new file mode 100755 (executable)
index 0000000..e9eea78
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (trace_clock test_trace_expr 'clock_nanosleep|times' -e%clock); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr 'clock_nanosleep|times' -e%clock
diff --git a/tests-mx32/trace_clock.in b/tests-mx32/trace_clock.in
new file mode 100644 (file)
index 0000000..511ec8e
--- /dev/null
@@ -0,0 +1,5 @@
+adjtimex -a13
+clock_adjtime -a21
+clock_xettime -a21
+xettimeofday -a20
+time -a9
diff --git a/tests-mx32/trace_creds.gen.test b/tests-mx32/trace_creds.gen.test
new file mode 100755 (executable)
index 0000000..d8cd589
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (trace_creds test_trace_expr '([gs]et[^p]*([gu]id|groups)|caps|prctl|[fl]?chown|print(path-umovestr|strn-umoven)-undumpable|ptrace|quotactl|rt_sigtimedwait|rt_(tg)?sigqueueinfo).*' -e%creds); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr '([gs]et[^p]*([gu]id|groups)|caps|prctl|[fl]?chown|print(path-umovestr|strn-umoven)-undumpable|ptrace|quotactl|rt_sigtimedwait|rt_(tg)?sigqueueinfo).*' -e%creds
diff --git a/tests-mx32/trace_creds.in b/tests-mx32/trace_creds.in
new file mode 100644 (file)
index 0000000..ce78253
--- /dev/null
@@ -0,0 +1,8 @@
+getgroups      -a17
+getgroups32    -a19
+getresgid      -a25
+getresgid32    -a27
+getresuid      -a25
+getresuid32    -a27
+setgroups      -s2 -a17
+setgroups32    -s2 -a19
index 3fde131dd17d6c39495d7bf09a1c6b13373fecca..9d7b51bbd66f0f08506228c6a76f0ae2824aca55 100644 (file)
@@ -9,3 +9,4 @@ fstat64-Xverbose        -a17 -Xverbose
 fstatat64      -a32
 newfstatat     -a32
 oldfstat       -a21
+statx  -a32
index abbabc49c30a314130c86734a985ad613b217f8f..ca9f131891178a9ad2ba7c0253be8e4b3d6e5939 100644 (file)
@@ -1,3 +1,3 @@
-lstat  -a32
+lstat  -a31
 lstat64        -a32
 oldlstat       -a32
index f105d78485cd01393f4422846cbea91785c23a85..75633050698804516d9be7a63de96fa1d2cdb4e5 100644 (file)
@@ -1,3 +1,3 @@
 oldstat        -a32
-stat   -a32
+stat   -a30
 stat64 -a32
diff --git a/tests-mx32/tracer_ppid_pgid_sid.c b/tests-mx32/tracer_ppid_pgid_sid.c
new file mode 100644 (file)
index 0000000..69687fa
--- /dev/null
@@ -0,0 +1,92 @@
+/*
+ * Helper program for strace-DDD.test
+ *
+ * Copyright (c) 2019-2020 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <ctype.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+static int
+fetch_tracer_pid(const char *str)
+{
+       for (; isspace(*str); ++str)
+               ;
+       return atoi(str);
+}
+
+static int
+get_tracer_pid(void)
+{
+       static const char status[] = "/proc/self/status";
+       FILE *fp = fopen(status, "r");
+       if (!fp)
+               perror_msg_and_fail("fopen: %s", status);
+
+       static const char prefix[] = "TracerPid:";
+       const size_t prefix_len = sizeof(prefix) - 1;
+       const char *str = NULL;
+       char *line = NULL;
+       size_t n = 0;
+
+       while (getline(&line, &n, fp) > 0) {
+               if (strncmp(line, prefix, prefix_len) == 0) {
+                       str = line + prefix_len;
+                       break;
+               }
+       }
+       if (!str && !line)
+               perror_msg_and_fail("getline");
+
+       int pid = str ? fetch_tracer_pid(str) : 0;
+       free(line);
+       fclose(fp);
+
+       return pid;
+}
+
+static void
+get_ppid_pgid_sid(int pid, int *ppid, int *pgid, int *sid)
+{
+       char *stat;
+       if (asprintf(&stat, "/proc/%d/stat", pid) < 0)
+               perror_msg_and_fail("asprintf");
+
+       FILE *fp = fopen(stat, "r");
+       if (!fp)
+               perror_msg_and_fail("fopen: %s", stat);
+       char buf[4096];
+       if (!fgets(buf, sizeof(buf), fp))
+               perror_msg_and_fail("fgets: %s", stat);
+
+       fclose(fp);
+
+       const char *p = strrchr(buf, ')');
+       if (!p)
+               error_msg_and_fail("%s: parenthesis not found", stat);
+       ++p;
+
+       if (sscanf(p, " %*c %d %d %d", ppid, pgid, sid) != 3)
+               error_msg_and_fail("%s: sscanf failed", stat);
+}
+
+int
+main(void)
+{
+       int tracer_pid = get_tracer_pid();
+       if (tracer_pid < 0)
+               error_msg_and_fail("tracer_pid = %d", tracer_pid);
+
+       int ppid = 0, pgid = 0, sid = 0;
+       get_ppid_pgid_sid(tracer_pid, &ppid, &pgid, &sid);
+       printf("%d %d %d %d\n", tracer_pid, ppid, pgid, sid);
+
+       return 0;
+}
diff --git a/tests-mx32/trie_for_tests.c b/tests-mx32/trie_for_tests.c
new file mode 100644 (file)
index 0000000..13e564c
--- /dev/null
@@ -0,0 +1 @@
+#include "trie.c"
diff --git a/tests-mx32/trie_test.c b/tests-mx32/trie_test.c
new file mode 100644 (file)
index 0000000..44a35ce
--- /dev/null
@@ -0,0 +1,121 @@
+/*
+ * Copyright (c) 2017-2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "trie.h"
+
+#include <stdio.h>
+#include <inttypes.h>
+
+static void
+assert_equals(const char *msg, uint64_t expected, uint64_t actual) {
+       if (actual != expected)
+               error_msg_and_fail("%s: expected: %" PRIu64
+                                  ", actual: %" PRIu64, msg, expected, actual);
+}
+
+static void
+iterate_fn(void *data, uint64_t key, uint64_t value)
+{
+       uint64_t expected = key < 256 && key % 10 == 0 ? key + 42 : -1ULL;
+       assert_equals("iterate_fn", expected, value);
+
+       int *count = (int *) data;
+       if (value != -1ULL)
+               (*count)++;
+}
+
+static void
+test_trie_iterate_fn(void)
+{
+       struct trie *t = trie_create(8, 6, 3, 3, -1);
+       for (int i = 0; i < 26; i++)
+               trie_set(t, i * 10, i * 10 + 42);
+
+       static const struct {
+               uint64_t start;
+               uint64_t end;
+               int expected_count;
+       } iterate_params[] = {
+               {0, 256, 26},
+               {0, UINT64_MAX, 26},
+               {20, 90, 8},
+               {99, 999, 16},
+               {10000, 100000, 0},
+               {200, 100, 0},
+       };
+
+       for (size_t i = 0; i < ARRAY_SIZE(iterate_params); i++) {
+               int count = 0;
+               trie_iterate_keys(t, iterate_params[i].start, iterate_params[i].end, iterate_fn, &count);
+               assert_equals("iteration count", iterate_params[i].expected_count, count);
+       }
+}
+
+struct key_value_pair {
+       uint64_t key, value;
+};
+
+static void
+test_trie_get(void)
+{
+       static const struct {
+               uint8_t key_size;
+               uint8_t item_size_lg;
+               uint8_t node_key_bits;
+               uint8_t data_block_key_bits;
+               uint64_t empty_value;
+
+               struct key_value_pair set_values[3], get_values[3];
+       } params[] = {
+               {64, 6, 10, 10, 0,
+                       {{300, 1}, {0xfacefeed, 0xabcdef123456}, {-1ULL, -1ULL}},
+                       {{301, 0}, {0xfacefeed, 0xabcdef123456}, {-1ULL, -1ULL}}},
+               {8, 2, 4, 4, 10,
+                       {{0xab, 0xcd}, {0xface, 2}, {0, 3}},
+                       {{0xab, 0xd}, {0xface, 10}, {0, 3}}},
+               {30, 0, 6, 3, -1,
+                       {{0xaaaa, 127}, {0xface, 0}, {0, 0}},
+                       {{0xaaaa, 1}, {0xface, 0}, {1, 1}}},
+               {16, 4, 5, 11, 0xffffff,
+                       {{0xabcdef, 42}, {0xabcd, 42}, {0xffff, 0}},
+                       {{0xabcdef, 0xffff}, {0xabcd, 42}, {0xffff, 0}}},
+               {41, 5, 1, 1, -1,
+                       {{0xabcdef01, 0x22222222}, {-1, 0x33333333}, {10, 10}},
+                       {{0xabcdef01, 0x22222222}, {-1, 0xffffffff}, {10, 10}}},
+       };
+
+       for (size_t i = 0; i < ARRAY_SIZE(params); i++) {
+               struct trie *t = trie_create(params[i].key_size,
+                                            params[i].item_size_lg,
+                                            params[i].node_key_bits,
+                                            params[i].data_block_key_bits,
+                                            params[i].empty_value);
+
+               if (!t)
+                       error_msg_and_fail("trie creation failed");
+
+               for (size_t j = 0; j < ARRAY_SIZE(params[i].set_values); j++) {
+                       struct key_value_pair kv = params[i].set_values[j];
+                       trie_set(t, kv.key, kv.value);
+               }
+               for (size_t j = 0; j < ARRAY_SIZE(params[i].get_values); j++) {
+                       struct key_value_pair kv = params[i].get_values[j];
+                       assert_equals("trie_get", kv.value, trie_get(t, kv.key));
+               }
+
+               trie_free(t);
+       }
+}
+
+int
+main(void)
+{
+       test_trie_get();
+       test_trie_iterate_fn();
+       return 0;
+}
diff --git a/tests-mx32/trie_test.gen.test b/tests-mx32/trie_test.gen.test
new file mode 100755 (executable)
index 0000000..c097ae5
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (trie_test run_prog ); do not edit.
+. "${srcdir=.}/init.sh"
+run_prog 
index bfb6299b61a739d56405cf339e4cd14bd81eecc6..5204ec040f2d4d86d730a95d712b62dcaf2645c4 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_truncate
 
index 1dceb41445c6cc74a702c273692c8caca2ee10a8..6b071715b9c66245193db00e0c5f86799a06ec2b 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_truncate64
 
index 49627c1f92120f074407976f140015f6dd5dc535..951ab9749ec3b1ae428eb0f3b21e3c87522bb8fc 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_ugetrlimit
 
index cd89aa0bfc3c6ae4762057f72d8940a38b656ad7..74450bc13bbc80df7d99e2bf92322d6331df86c4 100644 (file)
@@ -9,7 +9,7 @@
 #include <stdio.h>
 #include <sys/stat.h>
 #include <sys/mount.h>
-#include <asm/unistd.h>
+#include "scno.h"
 #include <unistd.h>
 
 #ifdef __NR_oldumount
index d313d5978a9b6b4d09658ce7a532765a2bc1585f..cf1fc129fbbfb21bff026ab7aac20dcad8ece6ef 100644 (file)
 #include <unistd.h>
 #include <sys/stat.h>
 #include <sys/mount.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_umount2 && (!defined __NR_umount || __NR_umount2 != __NR_umount)
+# define TEST_SYSCALL_NR __NR_umount2
 # define TEST_SYSCALL_STR "umount2"
 #else
-# define __NR_umount2 __NR_umount
+# define TEST_SYSCALL_NR __NR_umount
 # define TEST_SYSCALL_STR "umount"
 #endif
 
@@ -25,9 +26,9 @@ main(void)
        static const char sample[] = "umount2.sample";
        if (mkdir(sample, 0700))
                perror_msg_and_fail("mkdir: %s", sample);
-       (void) syscall(__NR_umount2, sample, 31);
+       long ret = syscall(TEST_SYSCALL_NR, sample, 31);
        printf("%s(\"%s\", MNT_FORCE|MNT_DETACH|MNT_EXPIRE|UMOUNT_NOFOLLOW|0x10)"
-              " = -1 EINVAL (%m)\n", TEST_SYSCALL_STR, sample);
+              " = %s\n", TEST_SYSCALL_STR, sample, sprintrc(ret));
        if (rmdir(sample))
                perror_msg_and_fail("rmdir: %s", sample);
        puts("+++ exited with 0 +++");
index 25839f77a39e39a32661e86bbf557122bf28d8cf..6a86fdcf3f4713b0a25fc3650323de3394442650 100644 (file)
@@ -2,36 +2,56 @@
  * Check decoding of invalid pointer by umoven.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <stdio.h>
-#include <time.h>
-#include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
+
+#ifdef __NR_nanosleep
+
+# include <stdio.h>
+# include <unistd.h>
+
+# include "kernel_old_timespec.h"
+
+static const char *errstr;
+
+static long
+k_nanosleep(const kernel_ulong_t arg1, const kernel_ulong_t arg2)
+{
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const long rc = syscall(__NR_nanosleep, arg1, arg2, bad, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
 
 int
 main(void)
 {
-       if (F8ILL_KULONG_SUPPORTED) {
-               struct timespec ts = { 0, 0 };
-               const void *const p = tail_memdup(&ts, sizeof(ts));
-
-               long rc = syscall(__NR_nanosleep, p, NULL);
-               printf("nanosleep({tv_sec=0, tv_nsec=0}, NULL) = %s\n",
-                      sprintrc(rc));
-
-               const kernel_ulong_t ill = f8ill_ptr_to_kulong(p);
-               rc = syscall(__NR_nanosleep, ill, NULL);
-               printf("nanosleep(%#llx, NULL) = %s\n",
-                      (unsigned long long) ill, sprintrc(rc));
-
-               puts("+++ exited with 0 +++");
-               return 0;
-       } else {
+       if (!F8ILL_KULONG_SUPPORTED)
                return 77;
-       }
+
+       kernel_old_timespec_t ts = { 0, 0 };
+       const void *const p = tail_memdup(&ts, sizeof(ts));
+
+       k_nanosleep((unsigned long) p, 0);
+       printf("nanosleep({tv_sec=0, tv_nsec=0}, NULL) = %s\n", errstr);
+
+       const kernel_ulong_t ill = f8ill_ptr_to_kulong(p);
+       k_nanosleep(ill, 0);
+       printf("nanosleep(%#llx, NULL) = %s\n",
+              (unsigned long long) ill, errstr);
+
+       puts("+++ exited with 0 +++");
+       return 0;
 }
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_nanosleep")
+
+#endif
index 5a24357ac551c8717974bc8716bb5151a917cd99..6cfcfb865e96f5cdf583e5beabf613a9db781f04 100644 (file)
@@ -2,6 +2,7 @@
  * Check decoding of invalid pointer by umovestr.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +11,7 @@
 #include "tests.h"
 #include <stdio.h>
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 int
 main(void)
diff --git a/tests-mx32/umovestr_cached.c b/tests-mx32/umovestr_cached.c
new file mode 100644 (file)
index 0000000..3d7bed3
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * Check effectiveness of umovestr memory caching.
+ *
+ * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/uio.h>
+
+int
+main(void)
+{
+       char *const buf = tail_alloc(DEFAULT_STRLEN);
+       fill_memory_ex(buf, DEFAULT_STRLEN, 'a', 'z' - 'a' + 1);
+
+       struct iovec *const io = tail_alloc(sizeof(*io) * DEFAULT_STRLEN);
+       for (unsigned int i = 0; i < DEFAULT_STRLEN; ++i) {
+               io[i].iov_base = buf + DEFAULT_STRLEN - i;
+               io[i].iov_len = i;
+       }
+
+       tprintf("%s", "");
+
+       int rc = writev(-1, io, DEFAULT_STRLEN);
+       const char *errstr = sprintrc(rc);
+
+       tprintf("writev(-1, [");
+       for (unsigned int i = 0; i < DEFAULT_STRLEN; ++i) {
+               if (i)
+                       tprintf(", ");
+               tprintf("{iov_base=\"%.*s\", iov_len=%u}",
+                       (int) io[i].iov_len,
+                       (char *) io[i].iov_base,
+                       (unsigned int) io[i].iov_len);
+       }
+       tprintf("], %u) = %s\n", DEFAULT_STRLEN, errstr);
+
+       tprintf("+++ exited with 0 +++\n");
+       return 0;
+}
diff --git a/tests-mx32/umovestr_cached.test b/tests-mx32/umovestr_cached.test
new file mode 100755 (executable)
index 0000000..4b9c832
--- /dev/null
@@ -0,0 +1,41 @@
+#!/bin/sh
+#
+# Check effectiveness of umovestr memory caching.
+#
+# Copyright (c) 2017-2020 Dmitry V. Levin <ldv@altlinux.org>
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/init.sh"
+
+expected_count="${1:-2}"
+
+check_prog grep
+$STRACE -d -enone / > /dev/null 2> "$LOG" ||:
+grep -x "[^:]*strace: PTRACE_GET_SYSCALL_INFO works" "$LOG" > /dev/null || {
+       # PTRACE_GET_SYSCALL_INFO does not work
+       case "$STRACE_ARCH:$MIPS_ABI" in
+               ia64:|mips:o32)
+               # ia64 invokes extra process_vm_readv syscalls to obtain syscall
+               # arguments, see linux/ia64/get_syscall_args.c for details.
+               # mips o32 obtains the first four syscalls arguments from registers
+               # and invokes extra process_vm_readv syscalls to obtain remaining
+               # syscall arguments, see linux/mips/get_syscall_args.c for details.
+               skip_ "the test is not supported on $STRACE_ARCH yet"
+               ;;
+       esac
+}
+
+run_strace_match_diff -e trace=writev
+
+run_strace -qq -esignal=none -eprocess_vm_readv -z \
+       -o '|grep -c ^process_vm_readv > count' \
+       -- "$STRACE_EXE" -o "$LOG" $args > /dev/null
+
+count="$(cat count)"
+case "$count" in
+       0) skip_ "$STRACE $args made no process_vm_readv syscall invocations" ;;
+       $expected_count) ;;
+       *) fail_ "$STRACE $args made $count != $expected_count process_vm_readv syscall invocations" ;;
+esac
diff --git a/tests-mx32/umovestr_cached_adjacent.c b/tests-mx32/umovestr_cached_adjacent.c
new file mode 100644 (file)
index 0000000..53a573b
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * Check effectiveness of umovestr memory caching.
+ *
+ * Copyright (c) 2019-2020 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/uio.h>
+
+int
+main(void)
+{
+       const size_t size = get_page_size() + (DEFAULT_STRLEN - 1);
+       char *const buf = tail_alloc(size);
+       fill_memory_ex(buf, DEFAULT_STRLEN * 2, 'a', 'z' - 'a' + 1);
+
+       struct iovec *const io = tail_alloc(sizeof(*io) * DEFAULT_STRLEN);
+       for (unsigned int i = 0; i < DEFAULT_STRLEN; ++i) {
+               io[i].iov_base = buf + i;
+               io[i].iov_len = DEFAULT_STRLEN;
+       }
+
+       tprintf("%s", "");
+
+       int rc = writev(-1, io, DEFAULT_STRLEN);
+       const char *errstr = sprintrc(rc);
+
+       tprintf("writev(-1, [");
+       for (unsigned int i = 0; i < DEFAULT_STRLEN; ++i) {
+               if (i)
+                       tprintf(", ");
+               tprintf("{iov_base=\"%.*s\", iov_len=%u}",
+                       (int) io[i].iov_len,
+                       (char *) io[i].iov_base,
+                       (unsigned int) io[i].iov_len);
+       }
+       tprintf("], %u) = %s\n", DEFAULT_STRLEN, errstr);
+
+       tprintf("+++ exited with 0 +++\n");
+       return 0;
+}
diff --git a/tests-mx32/umovestr_cached_adjacent.gen.test b/tests-mx32/umovestr_cached_adjacent.gen.test
new file mode 100755 (executable)
index 0000000..24b3fd7
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (umovestr_cached_adjacent +umovestr_cached.test 3); do not edit.
+set -- 3
+. "${srcdir=.}/umovestr_cached.test"
index 386fd99bdfa9dd9eebea84eecdf1f5bee07c337f..3180cffd2d0cfcb964b1195a6588945aa89ec038 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_uname
 
index 73ddd1e0f298f15514891ed47125d6beb6b73dbd..1439e1ff8438baf82c3ce191bea4e63ace9c67a8 100644 (file)
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -12,7 +13,7 @@
 #include <string.h>
 #include <unistd.h>
 #include <sys/socket.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifndef __NR_send
 # define __NR_send -1
index 9c33b624e6c831949610c9d92adffe1ee63ebc1c..af9b3a062bd62e32ff1f5b43d553ef75f731f364 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_unlink
 
index 0ae6796461c08570a8ba1c1a5386217ec1ee2103..6fcf133260b0f1f558e0adc5a5dc6d5bd23a9bb8 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_unlinkat
 
@@ -27,7 +27,7 @@ main(void)
        printf("unlinkat(%s, \"%s\", %s) = %ld %s (%m)\n",
               "AT_FDCWD", sample,
               "AT_SYMLINK_NOFOLLOW|AT_REMOVEDIR|AT_SYMLINK_FOLLOW"
-              "|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|0xffffe0ff",
+              "|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|AT_RECURSIVE|0xffff60ff",
               rc, errno2name());
 
        puts("+++ exited with 0 +++");
index a49f9ef9ccc453464d1299fa520836e3741d2efc..45e914e05bb4229ea5f5c7917b413da34603f54a 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of unshare syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_unshare
 
@@ -28,12 +28,12 @@ main(void)
                const char *str;
        } unshare_flags[] = {
                { ARG_STR(0) },
-               { 0xdeadca75,
-                       "CLONE_THREAD|CLONE_FS|CLONE_SIGHAND|CLONE_SYSVSEM|"
-                       "CLONE_NEWUTS|CLONE_NEWIPC|CLONE_NEWNET|CLONE_NEWUSER|"
-                       "CLONE_NEWCGROUP|0x80a8c075" },
+               { 0xdeadcaf5,
+                       "CLONE_NEWTIME|CLONE_FS|CLONE_SIGHAND|CLONE_THREAD"
+                       "|CLONE_SYSVSEM|CLONE_NEWCGROUP|CLONE_NEWUTS"
+                       "|CLONE_NEWIPC|CLONE_NEWUSER|CLONE_NEWNET|0x80a8c075" },
                { 0x2000000, "CLONE_NEWCGROUP" },
-               { ARG_STR(0x81f8f0ff) " /* CLONE_??? */" },
+               { ARG_STR(0x81f8f07f) " /* CLONE_??? */" },
        };
 
        long rc;
index 9e59c0fe0787a9a60b553181f28658f925eba435..fa722577a2d1fd939f994b67bf2e22ab3aaf9627 100644 (file)
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -7,7 +8,6 @@
 
 #include "tests.h"
 #include <fcntl.h>
-#include <asm/unistd.h>
 #include "scno.h"
 
 #if defined __NR_userfaultfd && defined O_CLOEXEC
index 0945a70d0f7dc2cfa6ba6ff55764e5f369af7e5c..7464b98a89d172dd738042c172c14b87ee8126b3 100644 (file)
@@ -1,13 +1,13 @@
 /*
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_ustat
 
index 151b31a99303d9037f058c4fc95592e594f27140..b548c8f815612abb47ad3a52d237fc0b8cad98e2 100644 (file)
@@ -2,14 +2,14 @@
  * Check decoding of utime syscall.
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_utime
 
index 170b2c89388ee79ce9b99beb16294a48b10bf205..4aa83c81cc05d446aa2b11667df1cbac74b1924b 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of utimensat syscall.
  *
  * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -15,7 +15,7 @@
 #include <sys/stat.h>
 #include <sys/time.h>
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_utimensat && defined UTIME_NOW && defined UTIME_OMIT
 
@@ -44,7 +44,7 @@
        "0x600 /* AT_REMOVEDIR|AT_SYMLINK_FOLLOW */"
 #  define str_flags2 \
        "0xffffffff /* AT_SYMLINK_NOFOLLOW|AT_REMOVEDIR|AT_SYMLINK_FOLLOW" \
-       "|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|0xffffe0ff */"
+       "|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|AT_RECURSIVE|0xffff60ff */"
 #  define str_utime_now_omit \
        "[{tv_sec=" big_tv_sec ", tv_nsec=1073741823} /* UTIME_NOW */, " \
        "{tv_sec=" huge_tv_sec ", tv_nsec=1073741822} /* UTIME_OMIT */]"
@@ -55,7 +55,7 @@
 #  define str_flags1                   "AT_REMOVEDIR|AT_SYMLINK_FOLLOW"
 #  define str_flags2 \
        "AT_SYMLINK_NOFOLLOW|AT_REMOVEDIR|AT_SYMLINK_FOLLOW" \
-       "|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|0xffffe0ff"
+       "|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|AT_RECURSIVE|0xffff60ff"
 #  define str_utime_now_omit           "[UTIME_NOW, UTIME_OMIT]"
 # endif
 
index 1aee6db39317b7be3edb5b9ba07b86e7ec51dd52..d78969fe451f80660655cdced5eb31973404db56 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of utimes syscall.
  *
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_utimes
 
index 1a786cc3076426c44a271e739c18ca241eb34640..46359016fc3273380e9212b5f229bca6b70da524 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_vhangup
 
index b986dafa9e85979832740a7ad3da151ef310e140..ac949ae8e3b2b6e5d671f9e8515b09a569ef5bac 100644 (file)
@@ -2,14 +2,14 @@
  * This file is part of vmsplice strace test.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_vmsplice
 
index 29b0caddd40ff6a3acfad2073d1e3fd5caf25816..048e6225e6516862b8a7a616491438a60a4b7311 100644 (file)
@@ -2,77 +2,98 @@
  * Check decoding of wait4 syscall.
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <assert.h>
-#include <signal.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <sys/wait.h>
-#include <sys/resource.h>
+#include "scno.h"
+
+#ifdef __NR_wait4
+
+# include <assert.h>
+# include <signal.h>
+# include <stdio.h>
+# include <unistd.h>
+# include <sys/wait.h>
+# include "kernel_rusage.h"
 
 static const char *
-sprint_rusage(const struct rusage *const ru)
+sprint_rusage(const kernel_rusage_t *const ru)
 {
        static char buf[1024];
        snprintf(buf, sizeof(buf),
-                "{ru_utime={tv_sec=%lld, tv_usec=%llu}"
-                ", ru_stime={tv_sec=%lld, tv_usec=%llu}"
-#if VERBOSE
-                ", ru_maxrss=%lu"
-                ", ru_ixrss=%lu"
-                ", ru_idrss=%lu"
-                ", ru_isrss=%lu"
-                ", ru_minflt=%lu"
-                ", ru_majflt=%lu"
-                ", ru_nswap=%lu"
-                ", ru_inblock=%lu"
-                ", ru_oublock=%lu"
-                ", ru_msgsnd=%lu"
-                ", ru_msgrcv=%lu"
-                ", ru_nsignals=%lu"
-                ", ru_nvcsw=%lu"
-                ", ru_nivcsw=%lu}"
-#else
+                "{ru_utime={tv_sec=%llu, tv_usec=%llu}"
+                ", ru_stime={tv_sec=%llu, tv_usec=%llu}"
+# if VERBOSE
+                ", ru_maxrss=%llu"
+                ", ru_ixrss=%llu"
+                ", ru_idrss=%llu"
+                ", ru_isrss=%llu"
+                ", ru_minflt=%llu"
+                ", ru_majflt=%llu"
+                ", ru_nswap=%llu"
+                ", ru_inblock=%llu"
+                ", ru_oublock=%llu"
+                ", ru_msgsnd=%llu"
+                ", ru_msgrcv=%llu"
+                ", ru_nsignals=%llu"
+                ", ru_nvcsw=%llu"
+                ", ru_nivcsw=%llu}"
+# else
                 ", ...}"
-#endif
-                , (long long) ru->ru_utime.tv_sec
+# endif
+                , zero_extend_signed_to_ull(ru->ru_utime.tv_sec)
                 , zero_extend_signed_to_ull(ru->ru_utime.tv_usec)
-                , (long long) ru->ru_stime.tv_sec
+                , zero_extend_signed_to_ull(ru->ru_stime.tv_sec)
                 , zero_extend_signed_to_ull(ru->ru_stime.tv_usec)
-#if VERBOSE
-                , (long) ru->ru_maxrss
-                , (long) ru->ru_ixrss
-                , (long) ru->ru_idrss
-                , (long) ru->ru_isrss
-                , (long) ru->ru_minflt
-                , (long) ru->ru_majflt
-                , (long) ru->ru_nswap
-                , (long) ru->ru_inblock
-                , (long) ru->ru_oublock
-                , (long) ru->ru_msgsnd
-                , (long) ru->ru_msgrcv
-                , (long) ru->ru_nsignals
-                , (long) ru->ru_nvcsw
-                , (long) ru->ru_nivcsw
-#endif
+# if VERBOSE
+                , zero_extend_signed_to_ull(ru->ru_maxrss)
+                , zero_extend_signed_to_ull(ru->ru_ixrss)
+                , zero_extend_signed_to_ull(ru->ru_idrss)
+                , zero_extend_signed_to_ull(ru->ru_isrss)
+                , zero_extend_signed_to_ull(ru->ru_minflt)
+                , zero_extend_signed_to_ull(ru->ru_majflt)
+                , zero_extend_signed_to_ull(ru->ru_nswap)
+                , zero_extend_signed_to_ull(ru->ru_inblock)
+                , zero_extend_signed_to_ull(ru->ru_oublock)
+                , zero_extend_signed_to_ull(ru->ru_msgsnd)
+                , zero_extend_signed_to_ull(ru->ru_msgrcv)
+                , zero_extend_signed_to_ull(ru->ru_nsignals)
+                , zero_extend_signed_to_ull(ru->ru_nvcsw)
+                , zero_extend_signed_to_ull(ru->ru_nivcsw)
+# endif
                 );
        return buf;
 }
 
+static const char *errstr;
+
+static long
+k_wait4(const unsigned int pid, void const *wstatus,
+       const unsigned int options, void const *ru)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = fill | pid;
+       const kernel_ulong_t arg2 = (uintptr_t) wstatus;
+       const kernel_ulong_t arg3 = fill | options;
+       const kernel_ulong_t arg4 = (uintptr_t) ru;
+       const long rc = syscall(__NR_wait4, arg1, arg2, arg3, arg4, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
 static pid_t
-do_wait4(pid_t pid, int *wstatus, int options, struct rusage *ru)
+do_wait4(pid_t pid, int *wstatus, int options, kernel_rusage_t *ru)
 {
        sigset_t mask = {};
        sigaddset(&mask, SIGCHLD);
 
        assert(sigprocmask(SIG_BLOCK, &mask, NULL) == 0);
-       pid_t rc = wait4(pid, wstatus, options, ru);
+       pid_t rc = k_wait4(pid, wstatus, options, ru);
        assert(sigprocmask(SIG_UNBLOCK, &mask, NULL) == 0);
        return rc;
 }
@@ -101,12 +122,12 @@ main(void)
        (void) close(0);
 
        TAIL_ALLOC_OBJECT_CONST_PTR(int, s);
-       if (wait4(pid, s, WNOHANG|__WALL, NULL))
+       if (k_wait4(pid, s, WNOHANG|__WALL, NULL))
                perror_msg_and_fail("wait4 #1");
        tprintf("wait4(%d, %p, WNOHANG|__WALL, NULL) = 0\n", pid, s);
 
-       TAIL_ALLOC_OBJECT_CONST_PTR(struct rusage, rusage);
-       if (wait4(pid, s, WNOHANG|__WALL, rusage))
+       TAIL_ALLOC_OBJECT_CONST_PTR(kernel_rusage_t, rusage);
+       if (k_wait4(pid, s, WNOHANG|__WALL, rusage))
                perror_msg_and_fail("wait4 #2");
        tprintf("wait4(%d, %p, WNOHANG|__WALL, %p) = 0\n", pid, s, rusage);
 
@@ -156,12 +177,12 @@ main(void)
        if (kill(pid, SIGCONT))
                perror_msg_and_fail("kill(SIGCONT)");
 
-#if defined WCONTINUED && defined WIFCONTINUED
+# if defined WCONTINUED && defined WIFCONTINUED
        assert(do_wait4(pid, s, WCONTINUED, rusage) == pid);
        assert(WIFCONTINUED(*s));
        tprintf("wait4(%d, [{WIFCONTINUED(s)}], WCONTINUED"
                ", %s) = %d\n", pid, sprint_rusage(rusage), pid);
-#endif /* WCONTINUED && WIFCONTINUED */
+# endif /* WCONTINUED && WIFCONTINUED */
 
        assert(write(1, "", 1) == 1);
        (void) close(1);
@@ -171,10 +192,16 @@ main(void)
        tprintf("wait4(%d, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0"
                ", %s) = %d\n", pid, sprint_rusage(rusage), pid);
 
-       assert(wait4(-1, s, WNOHANG|WSTOPPED|__WALL, rusage) == -1);
-       tprintf("wait4(-1, %p, WNOHANG|WSTOPPED|__WALL, %p) = -1 %s (%m)\n",
-               s, rusage, errno2name());
+       assert(k_wait4(-1, s, WNOHANG|WSTOPPED|__WALL, rusage) == -1);
+       tprintf("wait4(-1, %p, WNOHANG|WSTOPPED|__WALL, %p) = %s\n",
+               s, rusage, errstr);
 
        tprintf("%s\n", "+++ exited with 0 +++");
        return 0;
 }
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_wait4")
+
+#endif /* __NR_wait4 */
index f4e4a0a8f08e6b6569729149bb5b86880be5282e..8716fa088a0b5e31de5966a5852555a0116dadef 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of waitid syscall.
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 #include <string.h>
 #include <unistd.h>
 #include <sys/wait.h>
-#include <sys/resource.h>
-#include <asm/unistd.h>
+#include "kernel_rusage.h"
+#include "scno.h"
 
 static const char *
-sprint_rusage(const struct rusage *const ru)
+sprint_rusage(const kernel_rusage_t *const ru)
 {
        static char buf[1024];
        snprintf(buf, sizeof(buf),
@@ -103,8 +103,8 @@ sprint_siginfo(const siginfo_t *const si, const char *const status_text)
        snprintf(buf, sizeof(buf),
                 "{si_signo=SIGCHLD"
                 ", si_code=%s"
-                ", si_pid=%u"
-                ", si_uid=%u"
+                ", si_pid=%d"
+                ", si_uid=%d"
                 ", si_status=%s"
                 ", si_utime=%llu"
                 ", si_stime=%llu}",
@@ -128,7 +128,7 @@ do_waitid(const unsigned int idtype,
          const unsigned int id,
          const siginfo_t *const infop,
          const unsigned int options,
-         const struct rusage *const rusage)
+         const kernel_rusage_t *const rusage)
 {
        sigset_t mask = {};
        sigaddset(&mask, SIGCHLD);
@@ -169,7 +169,7 @@ main(void)
 
        TAIL_ALLOC_OBJECT_CONST_PTR(siginfo_t, sinfo);
        memset(sinfo, 0, sizeof(*sinfo));
-       TAIL_ALLOC_OBJECT_CONST_PTR(struct rusage, rusage);
+       TAIL_ALLOC_OBJECT_CONST_PTR(kernel_rusage_t, rusage);
        if (do_waitid(P_PID, pid, sinfo, WNOHANG|WEXITED|WSTOPPED, rusage))
                perror_msg_and_fail("waitid #2");
        tprintf("waitid(P_PID, %d, {}, WNOHANG|WEXITED|WSTOPPED, %s) = 0\n",
index 7069bec89676b882e3ffa6b71b2748d4c01bbe3f..14f794024e2f3de5375b37162310fc70afc9b0da 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of waitpid syscall.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_waitpid
 
diff --git a/tests-mx32/xet_robust_list--pidns-translation.c b/tests-mx32/xet_robust_list--pidns-translation.c
new file mode 100644 (file)
index 0000000..e047726
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "xet_robust_list.c"
diff --git a/tests-mx32/xet_robust_list--pidns-translation.gen.test b/tests-mx32/xet_robust_list--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..e660e10
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (xet_robust_list--pidns-translation test_pidns -a24 -e trace=get_robust_list,set_robust_list); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a24 -e trace=get_robust_list,set_robust_list
index cf4f22347ab8c009bd8ac8879ee6354b19f64100..04376bfb8d10fa2653a349d80f1548f8efbe7b3d 100644 (file)
@@ -1,13 +1,14 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
+#include "pidns.h"
 
 #if defined __NR_get_robust_list && defined __NR_set_robust_list
 
@@ -30,27 +31,36 @@ sprintaddr(void *addr)
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        const pid_t pid = getpid();
+       const char *pid_str = pidns_pid2str(PT_TGID);
        const long long_pid = (unsigned long) (0xdeadbeef00000000LL | pid);
        TAIL_ALLOC_OBJECT_CONST_PTR(void *, p_head);
        TAIL_ALLOC_OBJECT_CONST_PTR(size_t, p_len);
 
        if (syscall(__NR_get_robust_list, long_pid, p_head, p_len))
                perror_msg_and_skip("get_robust_list");
-       printf("get_robust_list(%d, [%s], [%lu]) = 0\n",
-              (int) pid, sprintaddr(*p_head), (unsigned long) *p_len);
+       pidns_print_leader();
+       printf("get_robust_list(%d%s, [%s], [%lu]) = 0\n",
+              pid, pid_str, sprintaddr(*p_head),
+              (unsigned long) *p_len);
 
        void *head = tail_alloc(*p_len);
        if (syscall(__NR_set_robust_list, head, *p_len))
                perror_msg_and_skip("set_robust_list");
+       pidns_print_leader();
        printf("set_robust_list(%p, %lu) = 0\n",
               head, (unsigned long) *p_len);
 
        if (syscall(__NR_get_robust_list, long_pid, p_head, p_len))
                perror_msg_and_skip("get_robust_list");
-       printf("get_robust_list(%d, [%s], [%lu]) = 0\n",
-              (int) pid, sprintaddr(*p_head), (unsigned long) *p_len);
+       pidns_print_leader();
+       printf("get_robust_list(%d%s, [%s], [%lu]) = 0\n",
+              pid, pid_str, sprintaddr(*p_head),
+              (unsigned long) *p_len);
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
index a1efd3192fa6be1c05a7eb0ce8d0fd0e5048e724..bdc07883d71612c079814c86333901ee8d9ddc05 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of set_thread_area and get_thread_area syscalls on x86
  * architecture.
  *
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_get_thread_area && defined __NR_set_thread_area \
  && defined HAVE_STRUCT_USER_DESC
index 8d758974effbbff978055e4001026cd0ee408989..f3455e88697f2fb4b4f810eac88a7d4398b51f77 100644 (file)
@@ -2,6 +2,7 @@
  * Check decoding of setitimer and getitimer syscalls.
  *
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 #include <stdint.h>
 #include <sys/time.h>
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
+#include "kernel_timeval.h"
+
+typedef struct {
+       kernel_old_timeval_t it_interval;
+       kernel_old_timeval_t it_value;
+} kernel_old_itimerval_t;
 
 int
 main(void)
 {
-       static const struct itimerval new = {
+       static const kernel_old_itimerval_t new = {
                .it_interval = { 0xc0de1, 0xc0de2 },
                .it_value = { 0xc0de3, 0xc0de4 }
        };
@@ -26,12 +33,12 @@ main(void)
        static const kernel_ulong_t bogus_timer =
                (kernel_ulong_t) 0xfacefeeddeadbeefULL;
 
-       TAIL_ALLOC_OBJECT_CONST_PTR(struct itimerval, p_old);
-       struct itimerval *const p_new = tail_memdup(&new, sizeof(new));
+       TAIL_ALLOC_OBJECT_CONST_PTR(kernel_old_itimerval_t, p_old);
+       kernel_old_itimerval_t *const p_new = tail_memdup(&new, sizeof(new));
        void *const efault = tail_alloc(sizeof(new) - 8);
        long rc;
 
-       if (setitimer(ITIMER_REAL, p_new, NULL))
+       if (syscall(__NR_setitimer, ITIMER_REAL, p_new, NULL))
                perror_msg_and_skip("setitimer");
        printf("setitimer(ITIMER_REAL"
               ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
@@ -43,7 +50,7 @@ main(void)
               zero_extend_signed_to_ull(new.it_value.tv_usec));
 
        fill_memory(p_old, sizeof(*p_old));
-       if (getitimer(ITIMER_REAL, p_old))
+       if (syscall(__NR_getitimer, ITIMER_REAL, p_old))
                perror_msg_and_skip("getitimer");
        printf("getitimer(ITIMER_REAL"
               ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
@@ -54,7 +61,7 @@ main(void)
               zero_extend_signed_to_ull(p_old->it_value.tv_usec));
 
        fill_memory(p_old, sizeof(*p_old));
-       setitimer(ITIMER_REAL, p_new, p_old);
+       syscall(__NR_setitimer, ITIMER_REAL, p_new, p_old);
        printf("setitimer(ITIMER_REAL"
               ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
               ", it_value={tv_sec=%lld, tv_usec=%llu}}"
@@ -69,10 +76,10 @@ main(void)
               (long long) p_old->it_value.tv_sec,
               zero_extend_signed_to_ull(p_old->it_value.tv_usec));
 
-       rc = getitimer(ITIMER_REAL, efault);
+       rc = syscall(__NR_getitimer, ITIMER_REAL, efault);
        printf("getitimer(ITIMER_REAL, %p) = %s\n", efault, sprintrc(rc));
 
-       rc = setitimer(ITIMER_REAL, p_new, efault);
+       rc = syscall(__NR_setitimer, ITIMER_REAL, p_new, efault);
        printf("setitimer(ITIMER_REAL"
               ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
               ", it_value={tv_sec=%lld, tv_usec=%llu}}, %p) = %s\n",
@@ -82,7 +89,7 @@ main(void)
               zero_extend_signed_to_ull(new.it_value.tv_usec),
               efault, sprintrc(rc));
 
-       rc = setitimer(ITIMER_REAL, efault, p_old);
+       rc = syscall(__NR_setitimer, ITIMER_REAL, efault, p_old);
        printf("setitimer(ITIMER_REAL, %p, %p) = %s\n",
               efault, p_old, sprintrc(rc));
 
@@ -146,10 +153,12 @@ main(void)
 
        p_new->it_interval.tv_sec = 0xdeadbeefU;
        p_new->it_interval.tv_usec = 0xfacefeedU;
-       p_new->it_value.tv_sec = (time_t) 0xcafef00ddeadbeefLL;
-       p_new->it_value.tv_usec = (suseconds_t) 0xbadc0dedfacefeedLL;
+       p_new->it_value.tv_sec =
+               (typeof(p_new->it_value.tv_sec)) 0xcafef00ddeadbeefLL;
+       p_new->it_value.tv_usec =
+               (typeof(p_new->it_value.tv_usec)) 0xbadc0dedfacefeedLL;
 
-       rc = setitimer(ITIMER_REAL, p_new, p_old);
+       rc = syscall(__NR_setitimer, ITIMER_REAL, p_new, p_old);
        printf("setitimer(ITIMER_REAL"
               ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
               ", it_value={tv_sec=%lld, tv_usec=%llu}}, %p) = %s\n",
diff --git a/tests-mx32/xetpgid--pidns-translation.c b/tests-mx32/xetpgid--pidns-translation.c
new file mode 100644 (file)
index 0000000..b646962
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "xetpgid.c"
diff --git a/tests-mx32/xetpgid--pidns-translation.gen.test b/tests-mx32/xetpgid--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..93c1ec3
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (xetpgid--pidns-translation test_pidns -a11 -e trace=getpgid,setpgid); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a11 -e trace=getpgid,setpgid
index 46dd332d1ae1aa190da0054a1c9ec71808cdd46f..94f9bc5e4276d1ef1db355036bbf1093b8d202ee 100644 (file)
@@ -2,14 +2,15 @@
  * This file is part of xetpgid strace test.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
+#include "pidns.h"
 
 #if defined __NR_getpgid && defined __NR_setpgid
 
 int
 main(void)
 {
-       const int pid = getpid();
-       long rc = syscall(__NR_getpgid, F8ILL_KULONG_MASK | pid);
-       printf("getpgid(%d) = %ld\n", pid, rc);
-
-       rc = syscall(__NR_setpgid, F8ILL_KULONG_MASK, F8ILL_KULONG_MASK | pid);
-       printf("setpgid(0, %d) = %ld\n", pid, rc);
+       PIDNS_TEST_INIT;
 
+       const int pid = getpid();
+       long pgid = syscall(__NR_getpgid, F8ILL_KULONG_MASK | pid);
+       pidns_print_leader();
+       printf("getpgid(%d%s) = %ld%s\n", pid, pidns_pid2str(PT_TGID),
+               pgid, pidns_pid2str(PT_PGID));
+
+       long rc = syscall(__NR_setpgid, F8ILL_KULONG_MASK,
+               F8ILL_KULONG_MASK | pgid);
+       pidns_print_leader();
+       printf("setpgid(0, %ld%s) = %s\n", pgid, pidns_pid2str(PT_PGID),
+               sprintrc(rc));
+
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
diff --git a/tests-mx32/xetpriority--pidns-translation.c b/tests-mx32/xetpriority--pidns-translation.c
new file mode 100644 (file)
index 0000000..c93669c
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "xetpriority.c"
diff --git a/tests-mx32/xetpriority--pidns-translation.gen.test b/tests-mx32/xetpriority--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..d221c7c
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (xetpriority--pidns-translation test_pidns -a27 -e trace=getpriority,setpriority); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a27 -e trace=getpriority,setpriority
index 5cd97ea947d60eac91e9af400ccfbee98696bb8b..0832ea94de1ec2fb9aa7ccf23d4e6eb37c211c81 100644 (file)
@@ -1,12 +1,13 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
+#include "pidns.h"
 
 #if defined __NR_getpriority && defined __NR_setpriority
 
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        const int pid = getpid();
+       const int pgid = getpgid(0);
+
        long rc = syscall(__NR_getpriority, PRIO_PROCESS,
                          F8ILL_KULONG_MASK | pid);
-       printf("getpriority(PRIO_PROCESS, %d) = %ld\n", pid, rc);
+       pidns_print_leader();
+       printf("getpriority(PRIO_PROCESS, %d%s) = %ld\n",
+               pid, pidns_pid2str(PT_TGID), rc);
 
        rc = syscall(__NR_setpriority, PRIO_PROCESS,
                     F8ILL_KULONG_MASK | pid, F8ILL_KULONG_MASK);
-       printf("setpriority(PRIO_PROCESS, %d, 0) = %s\n", pid, sprintrc(rc));
+       pidns_print_leader();
+       printf("setpriority(PRIO_PROCESS, %d%s, 0) = %s\n",
+               pid, pidns_pid2str(PT_TGID), sprintrc(rc));
+
+       rc = syscall(__NR_getpriority, PRIO_PGRP,
+                         F8ILL_KULONG_MASK | pgid);
+       pidns_print_leader();
+       printf("getpriority(PRIO_PGRP, %d%s) = %ld\n",
+               pgid, pidns_pid2str(PT_PGID), rc);
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
index 4b9552471bd810ffd8cadace87ededc8a6d8ac62..485c10718c6d258df74b34e25e2ba5246199f94a 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (xetpriority -a29 -e trace=getpriority,setpriority); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (xetpriority -a27 -e trace=getpriority,setpriority); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a29 -e trace=getpriority,setpriority
+run_strace_match_diff -a27 -e trace=getpriority,setpriority
index 9c8112624c4d1ca2c4e2c49faeacfc6bf0336614..eca3959b0563673748a15c1be7d35c4f7c00ba54 100644 (file)
@@ -1,18 +1,22 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <assert.h>
-#include <stdio.h>
-#include <stdint.h>
-#include <unistd.h>
-#include <sys/time.h>
-#include <asm/unistd.h>
+#include "scno.h"
+
+#ifdef __NR_gettimeofday
+
+# include <assert.h>
+# include <stdio.h>
+# include <stdint.h>
+# include <unistd.h>
+# include <sys/time.h>
+# include "scno.h"
 
 int
 main(void)
@@ -64,3 +68,9 @@ main(void)
        puts("+++ exited with 0 +++");
        return 0;
 }
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_gettimeofday")
+
+#endif /* __NR_gettimeofday */
diff --git a/tests-mx32/xgetdents.c b/tests-mx32/xgetdents.c
new file mode 100644 (file)
index 0000000..c550625
--- /dev/null
@@ -0,0 +1,141 @@
+/*
+ * Check decoding of getdents and getdents64 syscalls.
+ *
+ * Copyright (c) 2015-2020 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include <dirent.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <sys/stat.h>
+#include "kernel_dirent.h"
+#include "print_fields.h"
+
+#if VERBOSE
+static const char *
+str_d_type(const unsigned char d_type)
+{
+       switch (d_type) {
+               case DT_DIR:
+                       return "DT_DIR";
+               case DT_REG:
+                       return "DT_REG";
+               default:
+                       return "DT_UNKNOWN";
+       }
+}
+
+static void
+print_dirent(const kernel_dirent_type *d);
+#endif
+
+static const char *errstr;
+
+static long
+k_getdents(const unsigned int fd,
+          const void *dirp,
+          const unsigned int count)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = fill | fd;
+       const kernel_ulong_t arg2 = (uintptr_t) dirp;
+       const kernel_ulong_t arg3 = fill | count;
+       const long rc = syscall(NR_getdents, arg1, arg2, arg3, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
+static void
+ls(int fd, char *buf, unsigned int size)
+{
+       long rc;
+       while ((rc = k_getdents(fd, buf, size))) {
+               if (rc < 0)
+                       perror_msg_and_skip(STR_getdents);
+               printf("%s(%d, ", STR_getdents, fd);
+#if VERBOSE
+               printf("[");
+#else
+               unsigned long entries = 0;
+#endif
+               kernel_dirent_type *d;
+               for (long i = 0; i < rc; i += d->d_reclen) {
+                       d = (kernel_dirent_type *) &buf[i];
+#if VERBOSE
+                       if (i)
+                               printf(", ");
+                       print_dirent(d);
+#else
+                       ++entries;
+#endif
+               }
+#if VERBOSE
+               printf("]");
+#else
+               printf("%p /* %lu entries */", buf, entries);
+#endif
+               printf(", %u) = %ld\n", size, rc);
+       }
+#if VERBOSE
+       printf("%s(%d, [], %u) = 0\n", STR_getdents, fd, size);
+#else
+       printf("%s(%d, %p /* 0 entries */, %u) = 0\n",
+              STR_getdents, fd, buf, size);
+#endif
+}
+
+int
+main(void)
+{
+       static const char dot[] = ".";
+       static const char dot_dot[] = "..";
+       static const char dname[] = STR_getdents
+#if VERBOSE
+               "-v"
+#endif
+               ".test.tmp.dir";
+       static const char fname[] =
+               "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
+               "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
+               "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
+               "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
+               "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
+               "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
+               "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
+               "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nZ";
+
+       if (mkdir(dname, 0700))
+               perror_msg_and_fail("mkdir: %s", dname);
+       if (chdir(dname))
+               perror_msg_and_fail("chdir: %s", dname);
+       int fd = creat(fname, 0600);
+       if (fd < 0)
+               perror_msg_and_fail("creat: %s", fname);
+       if (close(fd))
+               perror_msg_and_fail("close: %s", fname);
+       fd = open(dot, O_RDONLY | O_DIRECTORY);
+       if (fd < 0)
+               perror_msg_and_fail("open: %s", dot);
+
+       unsigned int count = 0xdeadbeefU;
+       k_getdents(-1U, NULL, count);
+       printf("%s(-1, NULL, %u) = %s\n", STR_getdents, count, errstr);
+
+       static char buf[8192];
+       ls(fd, buf, sizeof(buf));
+
+       if (unlink(fname))
+               perror_msg_and_fail("unlink: %s", fname);
+       if (chdir(dot_dot))
+               perror_msg_and_fail("chdir: %s", dot_dot);
+       if (rmdir(dname))
+               perror_msg_and_fail("rmdir: %s", dname);
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
index a1c89e9b7eb691208478cbf94eb9618bf71ee19d..6a9c053817c9e1fb66f212f8201bf524d77591db 100644 (file)
@@ -77,9 +77,13 @@ int
 main(void)
 {
        kernel_ulong_t *const rlimit = tail_alloc(sizeof(*rlimit) * 2);
-       const struct xlat *xlat;
+       const struct xlat_data *xlat;
+       size_t i;
+
+       for (xlat = resources->data, i = 0; i < resources->size; ++xlat, ++i) {
+               if (!xlat->str)
+                       continue;
 
-       for (xlat = resources; xlat->str; ++xlat) {
                unsigned long res = 0xfacefeed00000000ULL | xlat->val;
                long rc = syscall(NR_GETRLIMIT, res, 0);
                if (rc && ENOSYS == errno)
diff --git a/tests-mx32/xmalloc_for_tests.c b/tests-mx32/xmalloc_for_tests.c
new file mode 100644 (file)
index 0000000..5c496ad
--- /dev/null
@@ -0,0 +1,2 @@
+#define error_msg_and_die error_msg_and_fail
+#include "xmalloc.c"
index 1b91e84467e300d4d520f7491dc890e8ed77c93b..8a86fdc39ad326686abf743534b5c8bae9effbaf 100644 (file)
@@ -34,10 +34,9 @@ static void
 print_statfs_type(const char *const prefix, const unsigned int magic)
 {
        fputs(prefix, stdout);
-       unsigned int i;
-       for (i = 0; i < ARRAY_SIZE(fsmagic); ++i)
-               if (magic == fsmagic[i].val) {
-                       fputs(fsmagic[i].str, stdout);
+       for (unsigned int i = 0; i < fsmagic->size; ++i)
+               if (magic == fsmagic->data[i].val) {
+                       fputs(fsmagic->data[i].str, stdout);
                        return;
                }
        printf("%#x", magic);
index 0d223bdc05462f2b2a440b26140fed6bea1e4233..aa9a0ae005f87ecbd5dfc9f92fac7341c10ba33c 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -46,6 +46,7 @@ typedef off_t libc_off_t;
 # define stat64 libc_stat64
 # define statx libc_statx
 # define statx_timestamp libc_statx_timestamp
+struct statx;
 # include <fcntl.h>
 # include <sys/stat.h>
 # undef statx_timestamp
@@ -460,19 +461,19 @@ main(void)
        SET_FLAGS_INVOKE(0xffffff,
                "AT_STATX_FORCE_SYNC|AT_STATX_DONT_SYNC|AT_SYMLINK_NOFOLLOW|"
                "AT_REMOVEDIR|AT_SYMLINK_FOLLOW|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|"
-               "0xff80ff");
+               "AT_RECURSIVE|0xff00ff");
 
        /* We're done playing with flags. */
        TEST_SYSCALL_STATX_FLAGS = old_flags;
        TEST_SYSCALL_STATX_FLAGS_STR = old_flags_str;
 
        SET_MASK_INVOKE(0, "0");
-       SET_MASK_INVOKE(0xfffff000U, "0xfffff000 /* STATX_??? */");
+       SET_MASK_INVOKE(0xffffe000U, "0xffffe000 /* STATX_??? */");
 
        SET_MASK_INVOKE(0xfffffffbU,
                "STATX_TYPE|STATX_MODE|STATX_UID|STATX_GID|STATX_ATIME|"
                "STATX_MTIME|STATX_CTIME|STATX_INO|STATX_SIZE|STATX_BLOCKS|"
-               "STATX_BTIME|0xfffff000");
+               "STATX_BTIME|STATX_MNT_ID|0xffffe000");
 
        SET_MASK_INVOKE(STATX_UID, "STATX_UID");
 
index 672959c424117aa5518da5b19402702626275e4b..3034e52770c35cc48d3f71a9cda26c5fbfbf335e 100644 (file)
@@ -1,7 +1,8 @@
 /*
- * Execute an executable with zero argc and specified anvironment.
+ * Execute an executable with zero argc and specified environment.
  *
  * Copyright (c) 2017-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
index 6aba591913ba118f7ce53f9a644afb53aa21030c..059b0321d58218ff49bd8f9139403436144cf012 100644 (file)
@@ -1,4 +1,4 @@
-Copyright (c) 2011-2019 The strace developers.
+Copyright (c) 2011-2020 The strace developers.
 All rights reserved.
 
 strace test suite is free software; you can redistribute it and/or modify
index 9e99aff2f677da07c2fb8d2309d25fa0a3bb0927..17f4b42455fab613b3510e9d435d5aaeb7280036 100644 (file)
@@ -1,12 +1,13 @@
 # Automake input for strace tests.
 #
 # Copyright (c) 2011-2016 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2011-2019 The strace developers.
+# Copyright (c) 2011-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 OS = linux
+CC = @CC@
 ARCH = @arch@
 NATIVE_ARCH = @arch_native@
 SIZEOF_KERNEL_LONG_T = @SIZEOF_KERNEL_LONG_T@
@@ -29,6 +30,7 @@ AM_LDFLAGS = $(ARCH_MFLAGS)
 
 libtests_a_SOURCES = \
        create_nl_socket.c \
+       create_tmpfile.c \
        errno2name.c \
        error_msg.c \
        fill_memory.c \
@@ -40,15 +42,21 @@ libtests_a_SOURCES = \
        inode_of_sockfd.c \
        libmmsg.c \
        libsocketcall.c \
+       lock_file.c \
        overflowuid.c \
+       pidns.c \
+       pidns.h \
        pipe_maxfd.c \
        print_quoted_string.c \
        print_time.c \
        printflags.c \
-       printxval.c \
+       printxval-Xabbrev.c \
+       printxval-Xraw.c \
+       printxval-Xverbose.c \
        signal2name.c \
        skip_unavailable.c \
        sprintrc.c \
+       status.c \
        tail_alloc.c \
        test_netlink.h \
        test_nlattr.h \
@@ -58,6 +66,7 @@ libtests_a_SOURCES = \
        test_ucopy.h \
        tests.h \
        tprintf.c \
+       xmalloc_for_tests.c \
        # end of libtests_a_SOURCES
 libtests_a_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 check_LIBRARIES = libtests.a
@@ -73,49 +82,102 @@ check_PROGRAMS = $(PURE_EXECUTABLES) \
        attach-p-cmd-cmd \
        attach-p-cmd-p \
        block_reset_raise_run \
+       block_reset_run \
        bpf-obj_get_info_by_fd \
        bpf-obj_get_info_by_fd-prog \
        bpf-obj_get_info_by_fd-prog-v \
        bpf-obj_get_info_by_fd-v \
        bpf-success \
+       bpf-success-long-y \
        bpf-success-v \
        caps-abbrev \
        check_sigblock \
        check_sigign \
        clone_parent \
+       clone_parent--quiet-exit \
+       clone_parent-q \
+       clone_parent-qq \
        clone_ptrace \
+       clone_ptrace--quiet-attach \
+       clone_ptrace--quiet-exit \
+       clone_ptrace-q \
+       clone_ptrace-qq \
+       clone3-success \
+       clone3-success-Xabbrev \
+       clone3-success-Xraw \
+       clone3-success-Xverbose \
        count-f \
        delay \
        execve-v \
        execveat-v \
+       fcntl--pidns-translation \
+       fcntl64--pidns-translation \
+       filter_seccomp-flag \
+       filter_seccomp-perf \
        filter-unavailable \
        fork-f \
+       fork--pidns-translation \
        fsync-y \
+       get_process_reaper \
+       getpgrp--pidns-translation      \
        getpid  \
+       getpid--pidns-translation       \
        getppid \
+       getsid--pidns-translation \
        gettid \
+       gettid--pidns-translation \
        inject-nf \
        int_0x80 \
+       ioctl_block--pidns-translation \
        ioctl_dm-v \
        ioctl_evdev-success \
+       ioctl_evdev-success-Xabbrev \
+       ioctl_evdev-success-Xraw \
+       ioctl_evdev-success-Xverbose \
        ioctl_evdev-success-v \
-       ioctl_evdev-v \
+       ioctl_evdev-success-v-Xabbrev \
+       ioctl_evdev-success-v-Xraw \
+       ioctl_evdev-success-v-Xverbose \
+       ioctl_hdio-success \
+       ioctl_hdio-success-Xabbrev \
+       ioctl_hdio-success-Xraw \
+       ioctl_hdio-success-Xverbose \
+       ioctl_hdio-success-v \
+       ioctl_hdio-success-v-Xabbrev \
+       ioctl_hdio-success-v-Xraw \
+       ioctl_hdio-success-v-Xverbose \
        ioctl_loop-nv \
        ioctl_loop-v \
        ioctl_nsfs \
        ioctl_perf-success \
        ioctl_rtc-v \
+       ioctl_v4l2-success \
+       ioctl_v4l2-success-Xabbrev \
+       ioctl_v4l2-success-Xraw \
+       ioctl_v4l2-success-Xverbose \
+       ioctl_v4l2-success-v \
+       ioctl_v4l2-success-v-Xabbrev \
+       ioctl_v4l2-success-v-Xraw \
+       ioctl_v4l2-success-v-Xverbose \
+       ioprio--pidns-translation \
        is_linux_mips_n64 \
+       kcmp-y--pidns-translation \
        kill_child \
+       kill--pidns-translation \
        ksysent \
        list_sigaction_signum \
        localtime \
        looping_threads \
+       migrate_pages--pidns-translation \
        mmsg-silent \
        mmsg_name-v \
+       move_pages--pidns-translation \
        msg_control-v \
        net-accept-connect \
+       net-sockaddr--pidns-translation \
        net-tpacket_stats-success \
+       nlattr_ifla_xdp-y \
+       netlink_audit--pidns-translation \
        netlink_inet_diag \
        netlink_netlink_diag \
        netlink_unix_diag \
@@ -127,11 +189,20 @@ check_PROGRAMS = $(PURE_EXECUTABLES) \
        pc \
        perf_event_open_nonverbose \
        perf_event_open_unabbrev \
+       pidfd_open--pidns-translation \
+       pidfd_send_signal--pidns-translation \
+       pidns-cache \
+       poll-P \
+       ppoll-P \
        ppoll-v \
+       prlimit64--pidns-translation \
        prctl-seccomp-filter-v \
        prctl-seccomp-strict \
        prctl-spec-inject \
        print_maxfd \
+       print_ppid_tracerpid \
+       process_vm_readv--pidns-translation \
+       process_vm_writev--pidns-translation \
        qual_fault \
        qual_inject-error-signal \
        qual_inject-retval \
@@ -145,7 +216,13 @@ check_PROGRAMS = $(PURE_EXECUTABLES) \
        quotactl-xfs-v \
        redirect-fds \
        restart_syscall \
+       rt_sigqueueinfo--pidns-translation \
+       rt_tgsigqueueinfo--pidns-translation \
        run_expect_termsig \
+       sched_xetaffinity--pidns-translation \
+       sched_xetattr--pidns-translation \
+       sched_xetparam--pidns-translation \
+       sched_xetscheduler--pidns-translation \
        scm_rights \
        seccomp-filter-v \
        seccomp-strict \
@@ -153,17 +230,35 @@ check_PROGRAMS = $(PURE_EXECUTABLES) \
        set_ptracer_any \
        set_sigblock \
        set_sigign \
+       setpgrp-exec \
        signal_receive \
+       signal_receive--pidns-translation \
        sleep \
        stack-fcall \
+       stack-fcall-attach \
        stack-fcall-mangled \
+       status-none-threads \
+       status-unfinished-threads \
+       so_peercred--pidns-translation \
+       syslog-success \
+       tgkill--pidns-translation \
        threads-execve \
+       threads-execve--quiet-thread-execve \
+       threads-execve-q \
+       threads-execve-qq \
+       threads-execve-qqq \
+       tkill--pidns-translation \
+       tracer_ppid_pgid_sid \
+       trie_test \
        unblock_reset_raise \
        unix-pair-send-recv \
        unix-pair-sendto-recvfrom \
        vfork-f \
        wait4-v \
        waitid-v \
+       xetpgid--pidns-translation \
+       xetpriority--pidns-translation \
+       xet_robust_list--pidns-translation \
        zeroargc \
        # end of check_PROGRAMS
 
@@ -177,6 +272,8 @@ ftruncate64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 localtime_LDADD = $(clock_LIBS) $(LDADD)
 looping_threads_LDADD = -lpthread $(LDADD)
 lstat64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
+maybe_switch_current_tcp_LDADD = -lpthread $(LDADD)
+maybe_switch_current_tcp__quiet_thread_execve_LDADD = -lpthread $(LDADD)
 mmap64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 mmap64_Xabbrev_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 mmap64_Xraw_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
@@ -190,7 +287,13 @@ preadv_pwritev_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 pwritev_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 stat64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 statfs_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
+status_none_threads_LDADD = -lpthread $(LDADD)
+status_unfinished_threads_LDADD = -lpthread $(LDADD)
 threads_execve_LDADD = -lpthread $(clock_LIBS) $(LDADD)
+threads_execve__quiet_thread_execve_LDADD = -lpthread $(clock_LIBS) $(LDADD)
+threads_execve_q_LDADD = -lpthread $(clock_LIBS) $(LDADD)
+threads_execve_qq_LDADD = -lpthread $(clock_LIBS) $(LDADD)
+threads_execve_qqq_LDADD = -lpthread $(clock_LIBS) $(LDADD)
 times_LDADD = $(clock_LIBS) $(LDADD)
 truncate64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 uio_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
@@ -198,14 +301,22 @@ uio_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 stack_fcall_SOURCES = stack-fcall.c \
        stack-fcall-0.c stack-fcall-1.c stack-fcall-2.c stack-fcall-3.c
 
+stack_fcall_attach_SOURCES = stack-fcall-attach.c \
+       stack-fcall-0.c stack-fcall-1.c stack-fcall-2.c stack-fcall-3.c
+
 stack_fcall_mangled_SOURCES = stack-fcall-mangled.c \
        stack-fcall-mangled-0.c stack-fcall-mangled-1.c \
        stack-fcall-mangled-2.c stack-fcall-mangled-3.c
 
+trie_test_SOURCES = trie_test.c trie_for_tests.c
+trie_test_CPPFLAGS = $(AM_CPPFLAGS) $(CODE_COVERAGE_CPPFLAGS)
+trie_test_CFLAGS = $(AM_CFLAGS) $(CODE_COVERAGE_CFLAGS)
+trie_test_LDADD = $(LDADD) $(CODE_COVERAGE_LIBS)
+
 include gen_tests.am
 
 if ENABLE_STACKTRACE
-STACKTRACE_TESTS = strace-k.test
+STACKTRACE_TESTS = strace-k.test strace-k-p.test
 if USE_DEMANGLE
 STACKTRACE_TESTS += strace-k-demangle.test
 endif
@@ -214,6 +325,7 @@ STACKTRACE_TESTS =
 endif
 
 DECODER_TESTS = \
+       bpf-success-long-y.test \
        bpf-success-v.test \
        bpf-success.test \
        brk.test \
@@ -226,17 +338,21 @@ DECODER_TESTS = \
        btrfs-wX.test \
        caps-abbrev.test \
        caps.test \
+       clone-flags.test \
+       clone3-success.test \
        eventfd.test \
        execve-v.test \
        execve.test \
        fadvise64.test \
+       faccessat.test \
+       faccessat2.test \
        futex.test \
        getuid.test \
        int_0x80.test \
+       inotify_init-y.test \
        ioctl.test \
-       ioctl_evdev-success-v.test \
+       ioctl_block--pidns-translation.test \
        ioctl_evdev-success.test \
-       ioctl_perf-success.test \
        ipc_msgbuf.test \
        kern_features-fault.test \
        llseek.test \
@@ -278,6 +394,7 @@ DECODER_TESTS = \
        seccomp-strict.test \
        sigaltstack.test \
        sun_path.test \
+       syslog-success.test \
        uio.test \
        umount.test \
        umount2.test \
@@ -293,7 +410,6 @@ MISC_TESTS = \
        attach-f-p.test \
        attach-p-cmd.test \
        bexecve.test \
-       clone_parent.test \
        clone_ptrace.test \
        count-f.test \
        count.test \
@@ -302,20 +418,24 @@ MISC_TESTS = \
        detach-sleeping.test \
        detach-stopped.test \
        fflush.test \
+       filter_seccomp-perf.test \
        filter-unavailable.test \
        filtering_fd-syntax.test \
        filtering_syscall-syntax.test \
        first_exec_failure.test \
+       fork--pidns-translation.test \
        get_regs.test \
+       gettid--pidns-translation.test \
        inject-nf.test \
        interactive_block.test \
        kill_child.test \
-       ksysent.test \
        localtime.test \
        looping_threads.test \
+       netlink_audit--pidns-translation.test \
        opipe.test \
        options-syntax.test \
        pc.test \
+       pidns-cache.test \
        printpath-umovestr-legacy.test \
        printstrn-umoven-legacy.test \
        qual_fault-syntax.test \
@@ -335,8 +455,16 @@ MISC_TESTS = \
        restart_syscall.test \
        sigblock.test \
        sigign.test \
+       status-detached.test \
+       status-none-threads.test \
+       status-unfinished-threads.test \
        strace-C.test \
+       strace-D.test \
+       strace-DD.test \
+       strace-DDD.test \
        strace-E.test \
+       strace-E-override.test \
+       strace-E-unset.test \
        strace-S.test \
        strace-T.test \
        strace-V.test \
@@ -349,6 +477,7 @@ MISC_TESTS = \
        strace-ttt.test \
        termsig.test \
        threads-execve.test \
+       umovestr_cached.test \
        # end of MISC_TESTS
 
 TESTS = $(GEN_TESTS) $(DECODER_TESTS) $(MISC_TESTS) $(STACKTRACE_TESTS)
@@ -381,7 +510,10 @@ EXTRA_DIST = \
        eventfd.expected \
        fadvise.h \
        fcntl-common.c \
+       filter_seccomp.in \
+       filter_seccomp.sh \
        filter-unavailable.expected \
+       fork--pidns-translation.awk \
        fstatat.c \
        fstatx.c \
        gen_pure_executables.sh \
@@ -390,17 +522,20 @@ EXTRA_DIST = \
        getresugid.c \
        init.sh \
        init_delete_module.h \
+       ioctl-success.sh \
        ioctl_kvm_run_common.c \
        ipc.sh \
+       kernel_old_timespec.h \
+       kernel_old_timex.h \
        ksysent.sed \
        lstatx.c \
        match.awk \
        net.expected \
-       netlink_sock_diag-v.sh \
        nlattr_ifla.h \
        pipe.expected \
        print_user_desc.c \
        printsignal.c \
+       printxval.c \
        process_vm_readv_writev.c \
        pure_executables.list \
        qual_fault-exit_group.expected \
@@ -414,6 +549,7 @@ EXTRA_DIST = \
        run.sh \
        sched.in \
        scno_tampering.sh \
+       semop-common.c \
        setfsugid.c \
        setresugid.c \
        setreugid.c \
@@ -422,18 +558,37 @@ EXTRA_DIST = \
        sockaddr_xlat.c \
        sockname.c \
        stack-fcall.h \
+       status-detached.expected \
+       strace--follow-forks-output-separately.expected \
+       strace--relative-timestamps.expected \
+       strace--relative-timestamps-s.expected \
+       strace--relative-timestamps-ms.expected \
+       strace--relative-timestamps-us.expected \
+       strace--relative-timestamps-ns.expected \
+       strace--syscall-times.expected \
+       strace--syscall-times-s.expected \
+       strace--syscall-times-ms.expected \
+       strace--syscall-times-us.expected \
+       strace--syscall-times-ns.expected \
        strace-C.expected \
+       strace-D.expected \
+       strace-DDD.expected \
        strace-E.expected \
+       strace-E-unset.expected \
        strace-T.expected \
        strace-ff.expected \
        strace-k-demangle.expected \
        strace-k-demangle.test \
+       strace-k-p.expected \
+       strace-k-p.test \
        strace-k.expected \
        strace-k.test \
        strace-r.expected \
        strace.supp \
        sun_path.expected \
        syntax.sh \
+       trace_clock.in \
+       trace_creds.in \
        trace_fstat.in \
        trace_fstatfs.in \
        trace_lstat.in \
@@ -454,6 +609,7 @@ EXTRA_DIST = \
        unix-pair-send-recv.expected \
        unix-pair-sendto-recvfrom.expected \
        xchownx.c \
+       xgetdents.c \
        xgetrlimit.c \
        xselect.c \
        xstatfs.c \
index 33859f4709c805f1e4bbbaa2e6b765f3ee083f54..d97c8c3516bc5822855f792390daf4e78f081275 100644 (file)
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.2 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -17,7 +17,7 @@
 # Automake input for strace tests.
 #
 # Copyright (c) 2011-2016 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2011-2019 The strace developers.
+# Copyright (c) 2011-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -105,59 +105,173 @@ host_triplet = @host@
 check_PROGRAMS = $(am__EXEEXT_1) _newselect-P$(EXEEXT) answer$(EXEEXT) \
        attach-f-p$(EXEEXT) attach-f-p-cmd$(EXEEXT) \
        attach-p-cmd-cmd$(EXEEXT) attach-p-cmd-p$(EXEEXT) \
-       block_reset_raise_run$(EXEEXT) bpf-obj_get_info_by_fd$(EXEEXT) \
+       block_reset_raise_run$(EXEEXT) block_reset_run$(EXEEXT) \
+       bpf-obj_get_info_by_fd$(EXEEXT) \
        bpf-obj_get_info_by_fd-prog$(EXEEXT) \
        bpf-obj_get_info_by_fd-prog-v$(EXEEXT) \
        bpf-obj_get_info_by_fd-v$(EXEEXT) bpf-success$(EXEEXT) \
-       bpf-success-v$(EXEEXT) caps-abbrev$(EXEEXT) \
-       check_sigblock$(EXEEXT) check_sigign$(EXEEXT) \
-       clone_parent$(EXEEXT) clone_ptrace$(EXEEXT) count-f$(EXEEXT) \
+       bpf-success-long-y$(EXEEXT) bpf-success-v$(EXEEXT) \
+       caps-abbrev$(EXEEXT) check_sigblock$(EXEEXT) \
+       check_sigign$(EXEEXT) clone_parent$(EXEEXT) \
+       clone_parent--quiet-exit$(EXEEXT) clone_parent-q$(EXEEXT) \
+       clone_parent-qq$(EXEEXT) clone_ptrace$(EXEEXT) \
+       clone_ptrace--quiet-attach$(EXEEXT) \
+       clone_ptrace--quiet-exit$(EXEEXT) clone_ptrace-q$(EXEEXT) \
+       clone_ptrace-qq$(EXEEXT) clone3-success$(EXEEXT) \
+       clone3-success-Xabbrev$(EXEEXT) clone3-success-Xraw$(EXEEXT) \
+       clone3-success-Xverbose$(EXEEXT) count-f$(EXEEXT) \
        delay$(EXEEXT) execve-v$(EXEEXT) execveat-v$(EXEEXT) \
-       filter-unavailable$(EXEEXT) fork-f$(EXEEXT) fsync-y$(EXEEXT) \
-       getpid$(EXEEXT) getppid$(EXEEXT) gettid$(EXEEXT) \
-       inject-nf$(EXEEXT) int_0x80$(EXEEXT) ioctl_dm-v$(EXEEXT) \
-       ioctl_evdev-success$(EXEEXT) ioctl_evdev-success-v$(EXEEXT) \
-       ioctl_evdev-v$(EXEEXT) ioctl_loop-nv$(EXEEXT) \
+       fcntl--pidns-translation$(EXEEXT) \
+       fcntl64--pidns-translation$(EXEEXT) \
+       filter_seccomp-flag$(EXEEXT) filter_seccomp-perf$(EXEEXT) \
+       filter-unavailable$(EXEEXT) fork-f$(EXEEXT) \
+       fork--pidns-translation$(EXEEXT) fsync-y$(EXEEXT) \
+       get_process_reaper$(EXEEXT) \
+       getpgrp--pidns-translation$(EXEEXT) getpid$(EXEEXT) \
+       getpid--pidns-translation$(EXEEXT) getppid$(EXEEXT) \
+       getsid--pidns-translation$(EXEEXT) gettid$(EXEEXT) \
+       gettid--pidns-translation$(EXEEXT) inject-nf$(EXEEXT) \
+       int_0x80$(EXEEXT) ioctl_block--pidns-translation$(EXEEXT) \
+       ioctl_dm-v$(EXEEXT) ioctl_evdev-success$(EXEEXT) \
+       ioctl_evdev-success-Xabbrev$(EXEEXT) \
+       ioctl_evdev-success-Xraw$(EXEEXT) \
+       ioctl_evdev-success-Xverbose$(EXEEXT) \
+       ioctl_evdev-success-v$(EXEEXT) \
+       ioctl_evdev-success-v-Xabbrev$(EXEEXT) \
+       ioctl_evdev-success-v-Xraw$(EXEEXT) \
+       ioctl_evdev-success-v-Xverbose$(EXEEXT) \
+       ioctl_hdio-success$(EXEEXT) \
+       ioctl_hdio-success-Xabbrev$(EXEEXT) \
+       ioctl_hdio-success-Xraw$(EXEEXT) \
+       ioctl_hdio-success-Xverbose$(EXEEXT) \
+       ioctl_hdio-success-v$(EXEEXT) \
+       ioctl_hdio-success-v-Xabbrev$(EXEEXT) \
+       ioctl_hdio-success-v-Xraw$(EXEEXT) \
+       ioctl_hdio-success-v-Xverbose$(EXEEXT) ioctl_loop-nv$(EXEEXT) \
        ioctl_loop-v$(EXEEXT) ioctl_nsfs$(EXEEXT) \
        ioctl_perf-success$(EXEEXT) ioctl_rtc-v$(EXEEXT) \
-       is_linux_mips_n64$(EXEEXT) kill_child$(EXEEXT) \
-       ksysent$(EXEEXT) list_sigaction_signum$(EXEEXT) \
-       localtime$(EXEEXT) looping_threads$(EXEEXT) \
-       mmsg-silent$(EXEEXT) mmsg_name-v$(EXEEXT) \
+       ioctl_v4l2-success$(EXEEXT) \
+       ioctl_v4l2-success-Xabbrev$(EXEEXT) \
+       ioctl_v4l2-success-Xraw$(EXEEXT) \
+       ioctl_v4l2-success-Xverbose$(EXEEXT) \
+       ioctl_v4l2-success-v$(EXEEXT) \
+       ioctl_v4l2-success-v-Xabbrev$(EXEEXT) \
+       ioctl_v4l2-success-v-Xraw$(EXEEXT) \
+       ioctl_v4l2-success-v-Xverbose$(EXEEXT) \
+       ioprio--pidns-translation$(EXEEXT) is_linux_mips_n64$(EXEEXT) \
+       kcmp-y--pidns-translation$(EXEEXT) kill_child$(EXEEXT) \
+       kill--pidns-translation$(EXEEXT) ksysent$(EXEEXT) \
+       list_sigaction_signum$(EXEEXT) localtime$(EXEEXT) \
+       looping_threads$(EXEEXT) \
+       migrate_pages--pidns-translation$(EXEEXT) mmsg-silent$(EXEEXT) \
+       mmsg_name-v$(EXEEXT) move_pages--pidns-translation$(EXEEXT) \
        msg_control-v$(EXEEXT) net-accept-connect$(EXEEXT) \
-       net-tpacket_stats-success$(EXEEXT) netlink_inet_diag$(EXEEXT) \
-       netlink_netlink_diag$(EXEEXT) netlink_unix_diag$(EXEEXT) \
-       nsyscalls$(EXEEXT) nsyscalls-d$(EXEEXT) oldselect-P$(EXEEXT) \
+       net-sockaddr--pidns-translation$(EXEEXT) \
+       net-tpacket_stats-success$(EXEEXT) nlattr_ifla_xdp-y$(EXEEXT) \
+       netlink_audit--pidns-translation$(EXEEXT) \
+       netlink_inet_diag$(EXEEXT) netlink_netlink_diag$(EXEEXT) \
+       netlink_unix_diag$(EXEEXT) nsyscalls$(EXEEXT) \
+       nsyscalls-d$(EXEEXT) oldselect-P$(EXEEXT) \
        oldselect-efault-P$(EXEEXT) orphaned_process_group$(EXEEXT) \
        pc$(EXEEXT) perf_event_open_nonverbose$(EXEEXT) \
-       perf_event_open_unabbrev$(EXEEXT) ppoll-v$(EXEEXT) \
+       perf_event_open_unabbrev$(EXEEXT) \
+       pidfd_open--pidns-translation$(EXEEXT) \
+       pidfd_send_signal--pidns-translation$(EXEEXT) \
+       pidns-cache$(EXEEXT) poll-P$(EXEEXT) ppoll-P$(EXEEXT) \
+       ppoll-v$(EXEEXT) prlimit64--pidns-translation$(EXEEXT) \
        prctl-seccomp-filter-v$(EXEEXT) prctl-seccomp-strict$(EXEEXT) \
        prctl-spec-inject$(EXEEXT) print_maxfd$(EXEEXT) \
+       print_ppid_tracerpid$(EXEEXT) \
+       process_vm_readv--pidns-translation$(EXEEXT) \
+       process_vm_writev--pidns-translation$(EXEEXT) \
        qual_fault$(EXEEXT) qual_inject-error-signal$(EXEEXT) \
        qual_inject-retval$(EXEEXT) qual_inject-signal$(EXEEXT) \
        qual_signal$(EXEEXT) quotactl-success$(EXEEXT) \
        quotactl-success-v$(EXEEXT) quotactl-v$(EXEEXT) \
        quotactl-xfs-success$(EXEEXT) quotactl-xfs-success-v$(EXEEXT) \
        quotactl-xfs-v$(EXEEXT) redirect-fds$(EXEEXT) \
-       restart_syscall$(EXEEXT) run_expect_termsig$(EXEEXT) \
+       restart_syscall$(EXEEXT) \
+       rt_sigqueueinfo--pidns-translation$(EXEEXT) \
+       rt_tgsigqueueinfo--pidns-translation$(EXEEXT) \
+       run_expect_termsig$(EXEEXT) \
+       sched_xetaffinity--pidns-translation$(EXEEXT) \
+       sched_xetattr--pidns-translation$(EXEEXT) \
+       sched_xetparam--pidns-translation$(EXEEXT) \
+       sched_xetscheduler--pidns-translation$(EXEEXT) \
        scm_rights$(EXEEXT) seccomp-filter-v$(EXEEXT) \
        seccomp-strict$(EXEEXT) select-P$(EXEEXT) \
        set_ptracer_any$(EXEEXT) set_sigblock$(EXEEXT) \
-       set_sigign$(EXEEXT) signal_receive$(EXEEXT) sleep$(EXEEXT) \
-       stack-fcall$(EXEEXT) stack-fcall-mangled$(EXEEXT) \
-       threads-execve$(EXEEXT) unblock_reset_raise$(EXEEXT) \
-       unix-pair-send-recv$(EXEEXT) \
+       set_sigign$(EXEEXT) setpgrp-exec$(EXEEXT) \
+       signal_receive$(EXEEXT) \
+       signal_receive--pidns-translation$(EXEEXT) sleep$(EXEEXT) \
+       stack-fcall$(EXEEXT) stack-fcall-attach$(EXEEXT) \
+       stack-fcall-mangled$(EXEEXT) status-none-threads$(EXEEXT) \
+       status-unfinished-threads$(EXEEXT) \
+       so_peercred--pidns-translation$(EXEEXT) \
+       syslog-success$(EXEEXT) tgkill--pidns-translation$(EXEEXT) \
+       threads-execve$(EXEEXT) \
+       threads-execve--quiet-thread-execve$(EXEEXT) \
+       threads-execve-q$(EXEEXT) threads-execve-qq$(EXEEXT) \
+       threads-execve-qqq$(EXEEXT) tkill--pidns-translation$(EXEEXT) \
+       tracer_ppid_pgid_sid$(EXEEXT) trie_test$(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)
+       wait4-v$(EXEEXT) waitid-v$(EXEEXT) \
+       xetpgid--pidns-translation$(EXEEXT) \
+       xetpriority--pidns-translation$(EXEEXT) \
+       xet_robust_list--pidns-translation$(EXEEXT) zeroargc$(EXEEXT)
 @ENABLE_STACKTRACE_TRUE@@USE_DEMANGLE_TRUE@am__append_1 = strace-k-demangle.test
 TESTS = $(GEN_TESTS) $(DECODER_TESTS) $(MISC_TESTS) $(am__EXEEXT_2)
 subdir = tests
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_code_coverage.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/xlat/btrfs_compress_types.m4 \
+       $(top_srcdir)/xlat/close_range_flags.m4 \
+       $(top_srcdir)/xlat/loop_flags_options.m4 \
+       $(top_srcdir)/xlat/rtnl_ifla_xdp_attached_mode.m4 \
+       $(top_srcdir)/xlat/rtnl_ifla_xdp_attrs.m4 \
+       $(top_srcdir)/xlat/rtnl_link_attrs.m4 \
+       $(top_srcdir)/xlat/rtnl_tc_action_attrs.m4 \
+       $(top_srcdir)/xlat/rtnl_tca_stab_attrs.m4 \
+       $(top_srcdir)/xlat/rtnl_tca_stats_attrs.m4 \
+       $(top_srcdir)/xlat/st_check_enums.m4 \
+       $(top_srcdir)/xlat/sysctl_kern.m4 \
+       $(top_srcdir)/xlat/sysctl_net.m4 \
+       $(top_srcdir)/xlat/sysctl_net_core.m4 \
+       $(top_srcdir)/xlat/sysctl_net_ipv4.m4 \
+       $(top_srcdir)/xlat/sysctl_net_ipv4_conf.m4 \
+       $(top_srcdir)/xlat/sysctl_net_ipv4_route.m4 \
+       $(top_srcdir)/xlat/sysctl_net_ipv6.m4 \
+       $(top_srcdir)/xlat/sysctl_net_ipv6_route.m4 \
+       $(top_srcdir)/xlat/sysctl_net_unix.m4 \
+       $(top_srcdir)/xlat/sysctl_root.m4 \
+       $(top_srcdir)/xlat/sysctl_vm.m4 \
+       $(top_srcdir)/xlat/v4l2_buf_types.m4 \
+       $(top_srcdir)/xlat/v4l2_colorspaces.m4 \
+       $(top_srcdir)/xlat/v4l2_control_types.m4 \
+       $(top_srcdir)/xlat/v4l2_fields.m4 \
+       $(top_srcdir)/xlat/v4l2_framesize_types.m4 \
+       $(top_srcdir)/xlat/v4l2_memories.m4 \
+       $(top_srcdir)/xlat/v4l2_tuner_types.m4 \
+       $(top_srcdir)/xlat/waitid_types.m4 \
+       $(top_srcdir)/types/check-btrfs.m4 \
+       $(top_srcdir)/types/check-cryptouser.m4 \
+       $(top_srcdir)/types/check-evdev.m4 \
+       $(top_srcdir)/types/check-io_uring.m4 \
+       $(top_srcdir)/types/check-loop.m4 \
+       $(top_srcdir)/types/check-openat2.m4 \
+       $(top_srcdir)/types/check-rtnl_link.m4 \
+       $(top_srcdir)/types/check-rtnl_mdb.m4 \
+       $(top_srcdir)/types/check-rtnl_neightbl.m4 \
+       $(top_srcdir)/types/check-rtnl_route.m4 \
+       $(top_srcdir)/types/check-tee.m4 \
+       $(top_srcdir)/types/check-v4l2.m4 \
+       $(top_srcdir)/types/st_check_types.m4 \
+       $(top_srcdir)/m4/ax_code_coverage.m4 \
        $(top_srcdir)/m4/ax_prog_cc_for_build.m4 \
        $(top_srcdir)/m4/ax_valgrind_check.m4 \
        $(top_srcdir)/m4/bpf_attr.m4 $(top_srcdir)/m4/mpers.m4 \
-       $(top_srcdir)/m4/st_demangle.m4 $(top_srcdir)/m4/st_libdw.m4 \
+       $(top_srcdir)/m4/st_demangle.m4 \
+       $(top_srcdir)/m4/st_esyscmd_s.m4 $(top_srcdir)/m4/st_libdw.m4 \
        $(top_srcdir)/m4/st_libunwind.m4 \
        $(top_srcdir)/m4/st_save_restore_var.m4 \
        $(top_srcdir)/m4/st_stacktrace.m4 \
@@ -173,19 +287,27 @@ CONFIG_CLEAN_VPATH_FILES =
 am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \
        access$(EXEEXT) acct$(EXEEXT) add_key$(EXEEXT) \
        adjtimex$(EXEEXT) aio$(EXEEXT) aio_pgetevents$(EXEEXT) \
-       alarm$(EXEEXT) bpf$(EXEEXT) bpf-obj_get_info_by_fd$(EXEEXT) \
-       bpf-obj_get_info_by_fd-prog$(EXEEXT) \
-       bpf-obj_get_info_by_fd-prog-v$(EXEEXT) \
-       bpf-obj_get_info_by_fd-v$(EXEEXT) bpf-v$(EXEEXT) brk$(EXEEXT) \
+       alarm$(EXEEXT) bpf$(EXEEXT) bpf-v$(EXEEXT) brk$(EXEEXT) \
        btrfs$(EXEEXT) caps$(EXEEXT) chmod$(EXEEXT) chown$(EXEEXT) \
        chown32$(EXEEXT) chroot$(EXEEXT) clock_adjtime$(EXEEXT) \
        clock_nanosleep$(EXEEXT) clock_xettime$(EXEEXT) \
+       clone-flags$(EXEEXT) clone3$(EXEEXT) clone3-Xabbrev$(EXEEXT) \
+       clone3-Xraw$(EXEEXT) clone3-Xverbose$(EXEEXT) \
+       close_range$(EXEEXT) close_range-P$(EXEEXT) \
+       close_range-y$(EXEEXT) close_range-yy$(EXEEXT) \
        copy_file_range$(EXEEXT) creat$(EXEEXT) delete_module$(EXEEXT) \
-       dev-yy$(EXEEXT) dup$(EXEEXT) dup2$(EXEEXT) dup3$(EXEEXT) \
+       dev--decode-fds-dev$(EXEEXT) dev--decode-fds-path$(EXEEXT) \
+       dev--decode-fds-socket$(EXEEXT) dev-yy$(EXEEXT) dup$(EXEEXT) \
+       dup-P$(EXEEXT) dup-y$(EXEEXT) dup-yy$(EXEEXT) dup2$(EXEEXT) \
+       dup2-P$(EXEEXT) dup2-y$(EXEEXT) dup2-yy$(EXEEXT) dup3$(EXEEXT) \
+       dup3-P$(EXEEXT) dup3-y$(EXEEXT) dup3-yy$(EXEEXT) \
        epoll_create$(EXEEXT) epoll_create1$(EXEEXT) \
        epoll_ctl$(EXEEXT) epoll_pwait$(EXEEXT) epoll_wait$(EXEEXT) \
        erestartsys$(EXEEXT) eventfd$(EXEEXT) execve$(EXEEXT) \
-       execveat$(EXEEXT) faccessat$(EXEEXT) fadvise64$(EXEEXT) \
+       execveat$(EXEEXT) faccessat$(EXEEXT) faccessat-P$(EXEEXT) \
+       faccessat-y$(EXEEXT) faccessat-yy$(EXEEXT) faccessat2$(EXEEXT) \
+       faccessat2-P$(EXEEXT) faccessat2-y$(EXEEXT) \
+       faccessat2-yy$(EXEEXT) fadvise64$(EXEEXT) \
        fadvise64_64$(EXEEXT) fallocate$(EXEEXT) \
        fanotify_init$(EXEEXT) fanotify_mark$(EXEEXT) \
        fanotify_mark-Xabbrev$(EXEEXT) fanotify_mark-Xraw$(EXEEXT) \
@@ -194,37 +316,54 @@ am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \
        fchown32$(EXEEXT) fchownat$(EXEEXT) fcntl$(EXEEXT) \
        fcntl64$(EXEEXT) fdatasync$(EXEEXT) fflush$(EXEEXT) \
        file_handle$(EXEEXT) file_ioctl$(EXEEXT) finit_module$(EXEEXT) \
-       flock$(EXEEXT) fstat$(EXEEXT) fstat-Xabbrev$(EXEEXT) \
+       flock$(EXEEXT) fsconfig$(EXEEXT) fsconfig-P$(EXEEXT) \
+       fsmount$(EXEEXT) fsopen$(EXEEXT) fspick$(EXEEXT) \
+       fspick-P$(EXEEXT) fstat$(EXEEXT) fstat-Xabbrev$(EXEEXT) \
        fstat-Xraw$(EXEEXT) fstat-Xverbose$(EXEEXT) fstat64$(EXEEXT) \
        fstat64-Xabbrev$(EXEEXT) fstat64-Xraw$(EXEEXT) \
        fstat64-Xverbose$(EXEEXT) fstatat64$(EXEEXT) fstatfs$(EXEEXT) \
        fstatfs64$(EXEEXT) fsync$(EXEEXT) ftruncate$(EXEEXT) \
        ftruncate64$(EXEEXT) futex$(EXEEXT) futimesat$(EXEEXT) \
        get_mempolicy$(EXEEXT) getcpu$(EXEEXT) getcwd$(EXEEXT) \
-       getdents$(EXEEXT) getdents64$(EXEEXT) getegid$(EXEEXT) \
-       getegid32$(EXEEXT) geteuid$(EXEEXT) geteuid32$(EXEEXT) \
-       getgid$(EXEEXT) getgid32$(EXEEXT) getgroups$(EXEEXT) \
-       getgroups32$(EXEEXT) getpeername$(EXEEXT) getpgrp$(EXEEXT) \
-       getpid$(EXEEXT) getppid$(EXEEXT) getrandom$(EXEEXT) \
-       getresgid$(EXEEXT) getresgid32$(EXEEXT) getresuid$(EXEEXT) \
-       getresuid32$(EXEEXT) getrlimit$(EXEEXT) getrusage$(EXEEXT) \
-       getsid$(EXEEXT) getsockname$(EXEEXT) getuid$(EXEEXT) \
-       getuid32$(EXEEXT) getxxid$(EXEEXT) group_req$(EXEEXT) \
-       inet-cmsg$(EXEEXT) init_module$(EXEEXT) inotify$(EXEEXT) \
-       inotify_init1$(EXEEXT) io_uring_enter$(EXEEXT) \
-       io_uring_register$(EXEEXT) io_uring_setup$(EXEEXT) \
-       ioctl$(EXEEXT) ioctl_block$(EXEEXT) ioctl_dm$(EXEEXT) \
-       ioctl_evdev$(EXEEXT) ioctl_inotify$(EXEEXT) \
+       getdents$(EXEEXT) getdents-v$(EXEEXT) getdents64$(EXEEXT) \
+       getdents64-v$(EXEEXT) getegid$(EXEEXT) getegid32$(EXEEXT) \
+       geteuid$(EXEEXT) geteuid32$(EXEEXT) getgid$(EXEEXT) \
+       getgid32$(EXEEXT) getgroups$(EXEEXT) getgroups32$(EXEEXT) \
+       getpeername$(EXEEXT) getpgrp$(EXEEXT) getpid$(EXEEXT) \
+       getppid$(EXEEXT) getrandom$(EXEEXT) getresgid$(EXEEXT) \
+       getresgid32$(EXEEXT) getresuid$(EXEEXT) getresuid32$(EXEEXT) \
+       getrlimit$(EXEEXT) getrusage$(EXEEXT) getsid$(EXEEXT) \
+       getsockname$(EXEEXT) getuid$(EXEEXT) getuid32$(EXEEXT) \
+       getxgid$(EXEEXT) getxpid$(EXEEXT) getxuid$(EXEEXT) \
+       group_req$(EXEEXT) inet-cmsg$(EXEEXT) init_module$(EXEEXT) \
+       inotify$(EXEEXT) inotify_init$(EXEEXT) inotify_init-y$(EXEEXT) \
+       inotify_init1$(EXEEXT) inotify_init1-y$(EXEEXT) \
+       io_uring_enter$(EXEEXT) io_uring_register$(EXEEXT) \
+       io_uring_setup$(EXEEXT) ioctl$(EXEEXT) ioctl_block$(EXEEXT) \
+       ioctl_dm$(EXEEXT) ioctl_evdev$(EXEEXT) \
+       ioctl_evdev-Xabbrev$(EXEEXT) ioctl_evdev-Xraw$(EXEEXT) \
+       ioctl_evdev-Xverbose$(EXEEXT) ioctl_evdev-v$(EXEEXT) \
+       ioctl_evdev-v-Xabbrev$(EXEEXT) ioctl_evdev-v-Xraw$(EXEEXT) \
+       ioctl_evdev-v-Xverbose$(EXEEXT) ioctl_hdio$(EXEEXT) \
+       ioctl_hdio-Xabbrev$(EXEEXT) ioctl_hdio-Xraw$(EXEEXT) \
+       ioctl_hdio-Xverbose$(EXEEXT) ioctl_hdio-v$(EXEEXT) \
+       ioctl_hdio-v-Xabbrev$(EXEEXT) ioctl_hdio-v-Xraw$(EXEEXT) \
+       ioctl_hdio-v-Xverbose$(EXEEXT) ioctl_inotify$(EXEEXT) \
        ioctl_kvm_run$(EXEEXT) ioctl_kvm_run-v$(EXEEXT) \
        ioctl_kvm_run_auxstr_vcpu$(EXEEXT) ioctl_loop$(EXEEXT) \
        ioctl_mtd$(EXEEXT) ioctl_nbd$(EXEEXT) ioctl_perf$(EXEEXT) \
        ioctl_ptp$(EXEEXT) ioctl_random$(EXEEXT) ioctl_rtc$(EXEEXT) \
        ioctl_scsi$(EXEEXT) ioctl_sg_io_v3$(EXEEXT) \
        ioctl_sg_io_v4$(EXEEXT) ioctl_sock_gifconf$(EXEEXT) \
-       ioctl_uffdio$(EXEEXT) ioctl_v4l2$(EXEEXT) ioperm$(EXEEXT) \
-       iopl$(EXEEXT) ioprio$(EXEEXT) ioprio-Xabbrev$(EXEEXT) \
-       ioprio-Xraw$(EXEEXT) ioprio-Xverbose$(EXEEXT) ip_mreq$(EXEEXT) \
-       ipc$(EXEEXT) ipc_msg$(EXEEXT) ipc_msg-Xabbrev$(EXEEXT) \
+       ioctl_tee$(EXEEXT) ioctl_uffdio$(EXEEXT) ioctl_v4l2$(EXEEXT) \
+       ioctl_v4l2-Xabbrev$(EXEEXT) ioctl_v4l2-Xraw$(EXEEXT) \
+       ioctl_v4l2-Xverbose$(EXEEXT) ioctl_v4l2-v$(EXEEXT) \
+       ioctl_v4l2-v-Xabbrev$(EXEEXT) ioctl_v4l2-v-Xraw$(EXEEXT) \
+       ioctl_v4l2-v-Xverbose$(EXEEXT) ioctl_watchdog$(EXEEXT) \
+       ioperm$(EXEEXT) iopl$(EXEEXT) ioprio$(EXEEXT) \
+       ioprio-Xabbrev$(EXEEXT) ioprio-Xraw$(EXEEXT) \
+       ioprio-Xverbose$(EXEEXT) ip_mreq$(EXEEXT) ipc$(EXEEXT) \
+       ipc_msg$(EXEEXT) ipc_msg-Xabbrev$(EXEEXT) \
        ipc_msg-Xraw$(EXEEXT) ipc_msg-Xverbose$(EXEEXT) \
        ipc_msgbuf$(EXEEXT) ipc_msgbuf-Xabbrev$(EXEEXT) \
        ipc_msgbuf-Xraw$(EXEEXT) ipc_msgbuf-Xverbose$(EXEEXT) \
@@ -240,7 +379,10 @@ am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(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) \
+       madvise$(EXEEXT) maybe_switch_current_tcp$(EXEEXT) \
+       maybe_switch_current_tcp--quiet-thread-execve$(EXEEXT) \
+       mbind$(EXEEXT) mbind-Xabbrev$(EXEEXT) mbind-Xraw$(EXEEXT) \
+       mbind-Xverbose$(EXEEXT) membarrier$(EXEEXT) \
        memfd_create$(EXEEXT) memfd_create-Xabbrev$(EXEEXT) \
        memfd_create-Xraw$(EXEEXT) memfd_create-Xverbose$(EXEEXT) \
        migrate_pages$(EXEEXT) mincore$(EXEEXT) mkdir$(EXEEXT) \
@@ -251,14 +393,18 @@ am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \
        mmap64-Xraw$(EXEEXT) mmap64-Xverbose$(EXEEXT) mmsg$(EXEEXT) \
        mmsg_name$(EXEEXT) modify_ldt$(EXEEXT) mount$(EXEEXT) \
        mount-Xabbrev$(EXEEXT) mount-Xraw$(EXEEXT) \
-       mount-Xverbose$(EXEEXT) move_pages$(EXEEXT) \
+       mount-Xverbose$(EXEEXT) move_mount$(EXEEXT) \
+       move_mount-P$(EXEEXT) move_pages$(EXEEXT) \
        move_pages-Xabbrev$(EXEEXT) move_pages-Xraw$(EXEEXT) \
        move_pages-Xverbose$(EXEEXT) mq$(EXEEXT) mq_sendrecv$(EXEEXT) \
        mq_sendrecv-read$(EXEEXT) mq_sendrecv-write$(EXEEXT) \
        msg_control$(EXEEXT) msg_name$(EXEEXT) munlockall$(EXEEXT) \
-       nanosleep$(EXEEXT) net-icmp_filter$(EXEEXT) \
-       net-packet_mreq$(EXEEXT) net-packet_mreq-Xabbrev$(EXEEXT) \
-       net-packet_mreq-Xraw$(EXEEXT) \
+       nanosleep$(EXEEXT) net--decode-fds-dev-netlink$(EXEEXT) \
+       net--decode-fds-none-netlink$(EXEEXT) \
+       net--decode-fds-path-netlink$(EXEEXT) \
+       net--decode-fds-socket-netlink$(EXEEXT) \
+       net-icmp_filter$(EXEEXT) net-packet_mreq$(EXEEXT) \
+       net-packet_mreq-Xabbrev$(EXEEXT) net-packet_mreq-Xraw$(EXEEXT) \
        net-packet_mreq-Xverbose$(EXEEXT) net-sockaddr$(EXEEXT) \
        net-tpacket_req$(EXEEXT) net-tpacket_stats$(EXEEXT) \
        net-y-unix$(EXEEXT) net-yy-inet$(EXEEXT) net-yy-inet6$(EXEEXT) \
@@ -296,18 +442,28 @@ am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \
        old_mmap-Xraw$(EXEEXT) old_mmap-Xverbose$(EXEEXT) \
        old_mmap-v-none$(EXEEXT) oldfstat$(EXEEXT) oldlstat$(EXEEXT) \
        oldselect$(EXEEXT) oldselect-efault$(EXEEXT) oldstat$(EXEEXT) \
-       open$(EXEEXT) openat$(EXEEXT) osf_utimes$(EXEEXT) \
-       pause$(EXEEXT) perf_event_open$(EXEEXT) personality$(EXEEXT) \
-       personality-Xabbrev$(EXEEXT) personality-Xraw$(EXEEXT) \
-       personality-Xverbose$(EXEEXT) pidfd_send_signal$(EXEEXT) \
-       pipe$(EXEEXT) pipe2$(EXEEXT) pkey_alloc$(EXEEXT) \
-       pkey_free$(EXEEXT) pkey_mprotect$(EXEEXT) poll$(EXEEXT) \
-       poll-P$(EXEEXT) ppoll$(EXEEXT) ppoll-P$(EXEEXT) \
-       prctl-arg2-intptr$(EXEEXT) prctl-dumpable$(EXEEXT) \
-       prctl-name$(EXEEXT) prctl-no-args$(EXEEXT) \
-       prctl-pdeathsig$(EXEEXT) prctl-securebits$(EXEEXT) \
-       prctl-tid_address$(EXEEXT) prctl-tsc$(EXEEXT) \
-       pread64-pwrite64$(EXEEXT) preadv$(EXEEXT) \
+       open$(EXEEXT) open_tree$(EXEEXT) open_tree-P$(EXEEXT) \
+       openat$(EXEEXT) openat2$(EXEEXT) openat2-Xabbrev$(EXEEXT) \
+       openat2-Xraw$(EXEEXT) openat2-Xverbose$(EXEEXT) \
+       openat2-v$(EXEEXT) openat2-v-y$(EXEEXT) \
+       openat2-v-y-Xabbrev$(EXEEXT) openat2-v-y-Xraw$(EXEEXT) \
+       openat2-v-y-Xverbose$(EXEEXT) openat2-y$(EXEEXT) \
+       osf_utimes$(EXEEXT) pause$(EXEEXT) perf_event_open$(EXEEXT) \
+       personality$(EXEEXT) personality-Xabbrev$(EXEEXT) \
+       personality-Xraw$(EXEEXT) personality-Xverbose$(EXEEXT) \
+       pidfd_getfd$(EXEEXT) pidfd_getfd-y$(EXEEXT) \
+       pidfd_getfd-yy$(EXEEXT) pidfd_open$(EXEEXT) \
+       pidfd_open--decode-fd-path$(EXEEXT) \
+       pidfd_open--decode-fd-pidfd$(EXEEXT) \
+       pidfd_open--decode-fd-socket$(EXEEXT) pidfd_open-P$(EXEEXT) \
+       pidfd_open-y$(EXEEXT) pidfd_open-yy$(EXEEXT) \
+       pidfd_send_signal$(EXEEXT) pipe$(EXEEXT) pipe2$(EXEEXT) \
+       pkey_alloc$(EXEEXT) pkey_free$(EXEEXT) pkey_mprotect$(EXEEXT) \
+       poll$(EXEEXT) ppoll$(EXEEXT) prctl-arg2-intptr$(EXEEXT) \
+       prctl-dumpable$(EXEEXT) prctl-name$(EXEEXT) \
+       prctl-no-args$(EXEEXT) prctl-pdeathsig$(EXEEXT) \
+       prctl-securebits$(EXEEXT) prctl-tid_address$(EXEEXT) \
+       prctl-tsc$(EXEEXT) pread64-pwrite64$(EXEEXT) preadv$(EXEEXT) \
        preadv-pwritev$(EXEEXT) preadv2-pwritev2$(EXEEXT) \
        printpath-umovestr$(EXEEXT) \
        printpath-umovestr-peekdata$(EXEEXT) \
@@ -322,7 +478,8 @@ am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \
        quotactl-Xraw$(EXEEXT) quotactl-Xverbose$(EXEEXT) \
        quotactl-xfs$(EXEEXT) read-write$(EXEEXT) readahead$(EXEEXT) \
        readdir$(EXEEXT) readlink$(EXEEXT) readlinkat$(EXEEXT) \
-       readv$(EXEEXT) reboot$(EXEEXT) recvfrom$(EXEEXT) \
+       readv$(EXEEXT) reboot$(EXEEXT) recv-MSG_TRUNC$(EXEEXT) \
+       recvfrom$(EXEEXT) recvfrom-MSG_TRUNC$(EXEEXT) \
        recvmmsg-timeout$(EXEEXT) recvmsg$(EXEEXT) \
        remap_file_pages$(EXEEXT) remap_file_pages-Xabbrev$(EXEEXT) \
        remap_file_pages-Xraw$(EXEEXT) \
@@ -341,8 +498,10 @@ am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \
        sched_xetparam$(EXEEXT) sched_xetscheduler$(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) \
+       semop$(EXEEXT) semop-indirect$(EXEEXT) semtimedop$(EXEEXT) \
+       sendfile$(EXEEXT) sendfile64$(EXEEXT) set_mempolicy$(EXEEXT) \
+       set_mempolicy-Xabbrev$(EXEEXT) set_mempolicy-Xraw$(EXEEXT) \
+       set_mempolicy-Xverbose$(EXEEXT) setdomainname$(EXEEXT) \
        setfsgid$(EXEEXT) setfsgid32$(EXEEXT) setfsuid$(EXEEXT) \
        setfsuid32$(EXEEXT) setgid$(EXEEXT) setgid32$(EXEEXT) \
        setgroups$(EXEEXT) setgroups32$(EXEEXT) sethostname$(EXEEXT) \
@@ -364,27 +523,36 @@ am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \
        sockaddr_xlat-Xverbose$(EXEEXT) socketcall$(EXEEXT) \
        sockopt-sol_netlink$(EXEEXT) sockopt-timestamp$(EXEEXT) \
        splice$(EXEEXT) stat$(EXEEXT) stat64$(EXEEXT) statfs$(EXEEXT) \
-       statfs64$(EXEEXT) statx$(EXEEXT) swap$(EXEEXT) \
+       statfs64$(EXEEXT) status-all$(EXEEXT) status-failed$(EXEEXT) \
+       status-failed-long$(EXEEXT) status-failed-status$(EXEEXT) \
+       status-none$(EXEEXT) status-none-f$(EXEEXT) \
+       status-successful$(EXEEXT) status-successful-long$(EXEEXT) \
+       status-successful-status$(EXEEXT) status-unfinished$(EXEEXT) \
+       statx$(EXEEXT) strace--strings-in-hex$(EXEEXT) \
+       strace--strings-in-hex-all$(EXEEXT) \
+       strace--strings-in-hex-non-ascii$(EXEEXT) strace-n$(EXEEXT) \
+       strace-x$(EXEEXT) strace-xx$(EXEEXT) swap$(EXEEXT) \
        sxetmask$(EXEEXT) symlink$(EXEEXT) symlinkat$(EXEEXT) \
        sync$(EXEEXT) sync_file_range$(EXEEXT) \
        sync_file_range2$(EXEEXT) sysinfo$(EXEEXT) syslog$(EXEEXT) \
-       tee$(EXEEXT) time$(EXEEXT) timer_create$(EXEEXT) \
-       timer_xettime$(EXEEXT) timerfd_xettime$(EXEEXT) times$(EXEEXT) \
-       times-fail$(EXEEXT) truncate$(EXEEXT) truncate64$(EXEEXT) \
+       tee$(EXEEXT) tgkill$(EXEEXT) time$(EXEEXT) \
+       timer_create$(EXEEXT) timer_xettime$(EXEEXT) \
+       timerfd_xettime$(EXEEXT) times$(EXEEXT) times-fail$(EXEEXT) \
+       tkill$(EXEEXT) truncate$(EXEEXT) truncate64$(EXEEXT) \
        ugetrlimit$(EXEEXT) uio$(EXEEXT) umask$(EXEEXT) \
        umount$(EXEEXT) umount2$(EXEEXT) umoven-illptr$(EXEEXT) \
        umovestr$(EXEEXT) umovestr-illptr$(EXEEXT) umovestr2$(EXEEXT) \
-       umovestr3$(EXEEXT) uname$(EXEEXT) unlink$(EXEEXT) \
-       unlinkat$(EXEEXT) unshare$(EXEEXT) userfaultfd$(EXEEXT) \
-       ustat$(EXEEXT) utime$(EXEEXT) utimensat$(EXEEXT) \
-       utimensat-Xabbrev$(EXEEXT) utimensat-Xraw$(EXEEXT) \
-       utimensat-Xverbose$(EXEEXT) utimes$(EXEEXT) vhangup$(EXEEXT) \
-       vmsplice$(EXEEXT) wait4$(EXEEXT) waitid$(EXEEXT) \
-       waitpid$(EXEEXT) xattr$(EXEEXT) xattr-strings$(EXEEXT) \
-       xet_robust_list$(EXEEXT) xet_thread_area_x86$(EXEEXT) \
-       xetitimer$(EXEEXT) xetpgid$(EXEEXT) xetpriority$(EXEEXT) \
-       xettimeofday$(EXEEXT)
-AR = ar
+       umovestr3$(EXEEXT) umovestr_cached$(EXEEXT) \
+       umovestr_cached_adjacent$(EXEEXT) uname$(EXEEXT) \
+       unlink$(EXEEXT) unlinkat$(EXEEXT) unshare$(EXEEXT) \
+       userfaultfd$(EXEEXT) ustat$(EXEEXT) utime$(EXEEXT) \
+       utimensat$(EXEEXT) utimensat-Xabbrev$(EXEEXT) \
+       utimensat-Xraw$(EXEEXT) utimensat-Xverbose$(EXEEXT) \
+       utimes$(EXEEXT) vhangup$(EXEEXT) vmsplice$(EXEEXT) \
+       wait4$(EXEEXT) waitid$(EXEEXT) waitpid$(EXEEXT) xattr$(EXEEXT) \
+       xattr-strings$(EXEEXT) xet_robust_list$(EXEEXT) \
+       xet_thread_area_x86$(EXEEXT) xetitimer$(EXEEXT) \
+       xetpgid$(EXEEXT) xetpriority$(EXEEXT) xettimeofday$(EXEEXT)
 ARFLAGS = cru
 AM_V_AR = $(am__v_AR_@AM_V@)
 am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
@@ -393,6 +561,7 @@ am__v_AR_1 =
 libtests_a_AR = $(AR) $(ARFLAGS)
 libtests_a_LIBADD =
 am_libtests_a_OBJECTS = libtests_a-create_nl_socket.$(OBJEXT) \
+       libtests_a-create_tmpfile.$(OBJEXT) \
        libtests_a-errno2name.$(OBJEXT) libtests_a-error_msg.$(OBJEXT) \
        libtests_a-fill_memory.$(OBJEXT) \
        libtests_a-get_page_size.$(OBJEXT) \
@@ -403,17 +572,23 @@ am_libtests_a_OBJECTS = libtests_a-create_nl_socket.$(OBJEXT) \
        libtests_a-inode_of_sockfd.$(OBJEXT) \
        libtests_a-libmmsg.$(OBJEXT) \
        libtests_a-libsocketcall.$(OBJEXT) \
-       libtests_a-overflowuid.$(OBJEXT) \
+       libtests_a-lock_file.$(OBJEXT) \
+       libtests_a-overflowuid.$(OBJEXT) libtests_a-pidns.$(OBJEXT) \
        libtests_a-pipe_maxfd.$(OBJEXT) \
        libtests_a-print_quoted_string.$(OBJEXT) \
        libtests_a-print_time.$(OBJEXT) \
-       libtests_a-printflags.$(OBJEXT) libtests_a-printxval.$(OBJEXT) \
+       libtests_a-printflags.$(OBJEXT) \
+       libtests_a-printxval-Xabbrev.$(OBJEXT) \
+       libtests_a-printxval-Xraw.$(OBJEXT) \
+       libtests_a-printxval-Xverbose.$(OBJEXT) \
        libtests_a-signal2name.$(OBJEXT) \
        libtests_a-skip_unavailable.$(OBJEXT) \
-       libtests_a-sprintrc.$(OBJEXT) libtests_a-tail_alloc.$(OBJEXT) \
+       libtests_a-sprintrc.$(OBJEXT) libtests_a-status.$(OBJEXT) \
+       libtests_a-tail_alloc.$(OBJEXT) \
        libtests_a-test_printpath.$(OBJEXT) \
        libtests_a-test_printstrn.$(OBJEXT) \
-       libtests_a-test_ucopy.$(OBJEXT) libtests_a-tprintf.$(OBJEXT)
+       libtests_a-test_ucopy.$(OBJEXT) libtests_a-tprintf.$(OBJEXT) \
+       libtests_a-xmalloc_for_tests.$(OBJEXT)
 libtests_a_OBJECTS = $(am_libtests_a_OBJECTS)
 _newselect_SOURCES = _newselect.c
 _newselect_OBJECTS = _newselect.$(OBJEXT)
@@ -482,6 +657,10 @@ block_reset_raise_run_SOURCES = block_reset_raise_run.c
 block_reset_raise_run_OBJECTS = block_reset_raise_run.$(OBJEXT)
 block_reset_raise_run_LDADD = $(LDADD)
 block_reset_raise_run_DEPENDENCIES = libtests.a
+block_reset_run_SOURCES = block_reset_run.c
+block_reset_run_OBJECTS = block_reset_run.$(OBJEXT)
+block_reset_run_LDADD = $(LDADD)
+block_reset_run_DEPENDENCIES = libtests.a
 bpf_SOURCES = bpf.c
 bpf_OBJECTS = bpf.$(OBJEXT)
 bpf_LDADD = $(LDADD)
@@ -509,6 +688,10 @@ bpf_success_SOURCES = bpf-success.c
 bpf_success_OBJECTS = bpf-success.$(OBJEXT)
 bpf_success_LDADD = $(LDADD)
 bpf_success_DEPENDENCIES = libtests.a
+bpf_success_long_y_SOURCES = bpf-success-long-y.c
+bpf_success_long_y_OBJECTS = bpf-success-long-y.$(OBJEXT)
+bpf_success_long_y_LDADD = $(LDADD)
+bpf_success_long_y_DEPENDENCIES = libtests.a
 bpf_success_v_SOURCES = bpf-success-v.c
 bpf_success_v_OBJECTS = bpf-success-v.$(OBJEXT)
 bpf_success_v_LDADD = $(LDADD)
@@ -569,14 +752,95 @@ clock_xettime_SOURCES = clock_xettime.c
 clock_xettime_OBJECTS = clock_xettime.$(OBJEXT)
 clock_xettime_LDADD = $(LDADD)
 clock_xettime_DEPENDENCIES = libtests.a
+clone_flags_SOURCES = clone-flags.c
+clone_flags_OBJECTS = clone-flags.$(OBJEXT)
+clone_flags_LDADD = $(LDADD)
+clone_flags_DEPENDENCIES = libtests.a
+clone3_SOURCES = clone3.c
+clone3_OBJECTS = clone3.$(OBJEXT)
+clone3_LDADD = $(LDADD)
+clone3_DEPENDENCIES = libtests.a
+clone3_Xabbrev_SOURCES = clone3-Xabbrev.c
+clone3_Xabbrev_OBJECTS = clone3-Xabbrev.$(OBJEXT)
+clone3_Xabbrev_LDADD = $(LDADD)
+clone3_Xabbrev_DEPENDENCIES = libtests.a
+clone3_Xraw_SOURCES = clone3-Xraw.c
+clone3_Xraw_OBJECTS = clone3-Xraw.$(OBJEXT)
+clone3_Xraw_LDADD = $(LDADD)
+clone3_Xraw_DEPENDENCIES = libtests.a
+clone3_Xverbose_SOURCES = clone3-Xverbose.c
+clone3_Xverbose_OBJECTS = clone3-Xverbose.$(OBJEXT)
+clone3_Xverbose_LDADD = $(LDADD)
+clone3_Xverbose_DEPENDENCIES = libtests.a
+clone3_success_SOURCES = clone3-success.c
+clone3_success_OBJECTS = clone3-success.$(OBJEXT)
+clone3_success_LDADD = $(LDADD)
+clone3_success_DEPENDENCIES = libtests.a
+clone3_success_Xabbrev_SOURCES = clone3-success-Xabbrev.c
+clone3_success_Xabbrev_OBJECTS = clone3-success-Xabbrev.$(OBJEXT)
+clone3_success_Xabbrev_LDADD = $(LDADD)
+clone3_success_Xabbrev_DEPENDENCIES = libtests.a
+clone3_success_Xraw_SOURCES = clone3-success-Xraw.c
+clone3_success_Xraw_OBJECTS = clone3-success-Xraw.$(OBJEXT)
+clone3_success_Xraw_LDADD = $(LDADD)
+clone3_success_Xraw_DEPENDENCIES = libtests.a
+clone3_success_Xverbose_SOURCES = clone3-success-Xverbose.c
+clone3_success_Xverbose_OBJECTS = clone3-success-Xverbose.$(OBJEXT)
+clone3_success_Xverbose_LDADD = $(LDADD)
+clone3_success_Xverbose_DEPENDENCIES = libtests.a
 clone_parent_SOURCES = clone_parent.c
 clone_parent_OBJECTS = clone_parent.$(OBJEXT)
 clone_parent_LDADD = $(LDADD)
 clone_parent_DEPENDENCIES = libtests.a
+clone_parent__quiet_exit_SOURCES = clone_parent--quiet-exit.c
+clone_parent__quiet_exit_OBJECTS = clone_parent--quiet-exit.$(OBJEXT)
+clone_parent__quiet_exit_LDADD = $(LDADD)
+clone_parent__quiet_exit_DEPENDENCIES = libtests.a
+clone_parent_q_SOURCES = clone_parent-q.c
+clone_parent_q_OBJECTS = clone_parent-q.$(OBJEXT)
+clone_parent_q_LDADD = $(LDADD)
+clone_parent_q_DEPENDENCIES = libtests.a
+clone_parent_qq_SOURCES = clone_parent-qq.c
+clone_parent_qq_OBJECTS = clone_parent-qq.$(OBJEXT)
+clone_parent_qq_LDADD = $(LDADD)
+clone_parent_qq_DEPENDENCIES = libtests.a
 clone_ptrace_SOURCES = clone_ptrace.c
 clone_ptrace_OBJECTS = clone_ptrace.$(OBJEXT)
 clone_ptrace_LDADD = $(LDADD)
 clone_ptrace_DEPENDENCIES = libtests.a
+clone_ptrace__quiet_attach_SOURCES = clone_ptrace--quiet-attach.c
+clone_ptrace__quiet_attach_OBJECTS =  \
+       clone_ptrace--quiet-attach.$(OBJEXT)
+clone_ptrace__quiet_attach_LDADD = $(LDADD)
+clone_ptrace__quiet_attach_DEPENDENCIES = libtests.a
+clone_ptrace__quiet_exit_SOURCES = clone_ptrace--quiet-exit.c
+clone_ptrace__quiet_exit_OBJECTS = clone_ptrace--quiet-exit.$(OBJEXT)
+clone_ptrace__quiet_exit_LDADD = $(LDADD)
+clone_ptrace__quiet_exit_DEPENDENCIES = libtests.a
+clone_ptrace_q_SOURCES = clone_ptrace-q.c
+clone_ptrace_q_OBJECTS = clone_ptrace-q.$(OBJEXT)
+clone_ptrace_q_LDADD = $(LDADD)
+clone_ptrace_q_DEPENDENCIES = libtests.a
+clone_ptrace_qq_SOURCES = clone_ptrace-qq.c
+clone_ptrace_qq_OBJECTS = clone_ptrace-qq.$(OBJEXT)
+clone_ptrace_qq_LDADD = $(LDADD)
+clone_ptrace_qq_DEPENDENCIES = libtests.a
+close_range_SOURCES = close_range.c
+close_range_OBJECTS = close_range.$(OBJEXT)
+close_range_LDADD = $(LDADD)
+close_range_DEPENDENCIES = libtests.a
+close_range_P_SOURCES = close_range-P.c
+close_range_P_OBJECTS = close_range-P.$(OBJEXT)
+close_range_P_LDADD = $(LDADD)
+close_range_P_DEPENDENCIES = libtests.a
+close_range_y_SOURCES = close_range-y.c
+close_range_y_OBJECTS = close_range-y.$(OBJEXT)
+close_range_y_LDADD = $(LDADD)
+close_range_y_DEPENDENCIES = libtests.a
+close_range_yy_SOURCES = close_range-yy.c
+close_range_yy_OBJECTS = close_range-yy.$(OBJEXT)
+close_range_yy_LDADD = $(LDADD)
+close_range_yy_DEPENDENCIES = libtests.a
 copy_file_range_SOURCES = copy_file_range.c
 copy_file_range_OBJECTS = copy_file_range.$(OBJEXT)
 copy_file_range_LDADD = $(LDADD)
@@ -596,6 +860,18 @@ delete_module_SOURCES = delete_module.c
 delete_module_OBJECTS = delete_module.$(OBJEXT)
 delete_module_LDADD = $(LDADD)
 delete_module_DEPENDENCIES = libtests.a
+dev__decode_fds_dev_SOURCES = dev--decode-fds-dev.c
+dev__decode_fds_dev_OBJECTS = dev--decode-fds-dev.$(OBJEXT)
+dev__decode_fds_dev_LDADD = $(LDADD)
+dev__decode_fds_dev_DEPENDENCIES = libtests.a
+dev__decode_fds_path_SOURCES = dev--decode-fds-path.c
+dev__decode_fds_path_OBJECTS = dev--decode-fds-path.$(OBJEXT)
+dev__decode_fds_path_LDADD = $(LDADD)
+dev__decode_fds_path_DEPENDENCIES = libtests.a
+dev__decode_fds_socket_SOURCES = dev--decode-fds-socket.c
+dev__decode_fds_socket_OBJECTS = dev--decode-fds-socket.$(OBJEXT)
+dev__decode_fds_socket_LDADD = $(LDADD)
+dev__decode_fds_socket_DEPENDENCIES = libtests.a
 dev_yy_SOURCES = dev-yy.c
 dev_yy_OBJECTS = dev-yy.$(OBJEXT)
 dev_yy_LDADD = $(LDADD)
@@ -604,14 +880,50 @@ dup_SOURCES = dup.c
 dup_OBJECTS = dup.$(OBJEXT)
 dup_LDADD = $(LDADD)
 dup_DEPENDENCIES = libtests.a
+dup_P_SOURCES = dup-P.c
+dup_P_OBJECTS = dup-P.$(OBJEXT)
+dup_P_LDADD = $(LDADD)
+dup_P_DEPENDENCIES = libtests.a
+dup_y_SOURCES = dup-y.c
+dup_y_OBJECTS = dup-y.$(OBJEXT)
+dup_y_LDADD = $(LDADD)
+dup_y_DEPENDENCIES = libtests.a
+dup_yy_SOURCES = dup-yy.c
+dup_yy_OBJECTS = dup-yy.$(OBJEXT)
+dup_yy_LDADD = $(LDADD)
+dup_yy_DEPENDENCIES = libtests.a
 dup2_SOURCES = dup2.c
 dup2_OBJECTS = dup2.$(OBJEXT)
 dup2_LDADD = $(LDADD)
 dup2_DEPENDENCIES = libtests.a
+dup2_P_SOURCES = dup2-P.c
+dup2_P_OBJECTS = dup2-P.$(OBJEXT)
+dup2_P_LDADD = $(LDADD)
+dup2_P_DEPENDENCIES = libtests.a
+dup2_y_SOURCES = dup2-y.c
+dup2_y_OBJECTS = dup2-y.$(OBJEXT)
+dup2_y_LDADD = $(LDADD)
+dup2_y_DEPENDENCIES = libtests.a
+dup2_yy_SOURCES = dup2-yy.c
+dup2_yy_OBJECTS = dup2-yy.$(OBJEXT)
+dup2_yy_LDADD = $(LDADD)
+dup2_yy_DEPENDENCIES = libtests.a
 dup3_SOURCES = dup3.c
 dup3_OBJECTS = dup3.$(OBJEXT)
 dup3_LDADD = $(LDADD)
 dup3_DEPENDENCIES = libtests.a
+dup3_P_SOURCES = dup3-P.c
+dup3_P_OBJECTS = dup3-P.$(OBJEXT)
+dup3_P_LDADD = $(LDADD)
+dup3_P_DEPENDENCIES = libtests.a
+dup3_y_SOURCES = dup3-y.c
+dup3_y_OBJECTS = dup3-y.$(OBJEXT)
+dup3_y_LDADD = $(LDADD)
+dup3_y_DEPENDENCIES = libtests.a
+dup3_yy_SOURCES = dup3-yy.c
+dup3_yy_OBJECTS = dup3-yy.$(OBJEXT)
+dup3_yy_LDADD = $(LDADD)
+dup3_yy_DEPENDENCIES = libtests.a
 epoll_create_SOURCES = epoll_create.c
 epoll_create_OBJECTS = epoll_create.$(OBJEXT)
 epoll_create_LDADD = $(LDADD)
@@ -660,6 +972,34 @@ faccessat_SOURCES = faccessat.c
 faccessat_OBJECTS = faccessat.$(OBJEXT)
 faccessat_LDADD = $(LDADD)
 faccessat_DEPENDENCIES = libtests.a
+faccessat_P_SOURCES = faccessat-P.c
+faccessat_P_OBJECTS = faccessat-P.$(OBJEXT)
+faccessat_P_LDADD = $(LDADD)
+faccessat_P_DEPENDENCIES = libtests.a
+faccessat_y_SOURCES = faccessat-y.c
+faccessat_y_OBJECTS = faccessat-y.$(OBJEXT)
+faccessat_y_LDADD = $(LDADD)
+faccessat_y_DEPENDENCIES = libtests.a
+faccessat_yy_SOURCES = faccessat-yy.c
+faccessat_yy_OBJECTS = faccessat-yy.$(OBJEXT)
+faccessat_yy_LDADD = $(LDADD)
+faccessat_yy_DEPENDENCIES = libtests.a
+faccessat2_SOURCES = faccessat2.c
+faccessat2_OBJECTS = faccessat2.$(OBJEXT)
+faccessat2_LDADD = $(LDADD)
+faccessat2_DEPENDENCIES = libtests.a
+faccessat2_P_SOURCES = faccessat2-P.c
+faccessat2_P_OBJECTS = faccessat2-P.$(OBJEXT)
+faccessat2_P_LDADD = $(LDADD)
+faccessat2_P_DEPENDENCIES = libtests.a
+faccessat2_y_SOURCES = faccessat2-y.c
+faccessat2_y_OBJECTS = faccessat2-y.$(OBJEXT)
+faccessat2_y_LDADD = $(LDADD)
+faccessat2_y_DEPENDENCIES = libtests.a
+faccessat2_yy_SOURCES = faccessat2-yy.c
+faccessat2_yy_OBJECTS = faccessat2-yy.$(OBJEXT)
+faccessat2_yy_LDADD = $(LDADD)
+faccessat2_yy_DEPENDENCIES = libtests.a
 fadvise64_SOURCES = fadvise64.c
 fadvise64_OBJECTS = fadvise64.$(OBJEXT)
 fadvise64_LDADD = $(LDADD)
@@ -720,10 +1060,19 @@ fcntl_SOURCES = fcntl.c
 fcntl_OBJECTS = fcntl.$(OBJEXT)
 fcntl_LDADD = $(LDADD)
 fcntl_DEPENDENCIES = libtests.a
+fcntl__pidns_translation_SOURCES = fcntl--pidns-translation.c
+fcntl__pidns_translation_OBJECTS = fcntl--pidns-translation.$(OBJEXT)
+fcntl__pidns_translation_LDADD = $(LDADD)
+fcntl__pidns_translation_DEPENDENCIES = libtests.a
 fcntl64_SOURCES = fcntl64.c
 fcntl64_OBJECTS = fcntl64.$(OBJEXT)
 fcntl64_LDADD = $(LDADD)
 fcntl64_DEPENDENCIES = libtests.a
+fcntl64__pidns_translation_SOURCES = fcntl64--pidns-translation.c
+fcntl64__pidns_translation_OBJECTS =  \
+       fcntl64--pidns-translation.$(OBJEXT)
+fcntl64__pidns_translation_LDADD = $(LDADD)
+fcntl64__pidns_translation_DEPENDENCIES = libtests.a
 fdatasync_SOURCES = fdatasync.c
 fdatasync_OBJECTS = fdatasync.$(OBJEXT)
 fdatasync_LDADD = $(LDADD)
@@ -743,6 +1092,14 @@ file_ioctl_DEPENDENCIES = libtests.a
 filter_unavailable_SOURCES = filter-unavailable.c
 filter_unavailable_OBJECTS = filter-unavailable.$(OBJEXT)
 filter_unavailable_DEPENDENCIES = $(LDADD)
+filter_seccomp_flag_SOURCES = filter_seccomp-flag.c
+filter_seccomp_flag_OBJECTS = filter_seccomp-flag.$(OBJEXT)
+filter_seccomp_flag_LDADD = $(LDADD)
+filter_seccomp_flag_DEPENDENCIES = libtests.a
+filter_seccomp_perf_SOURCES = filter_seccomp-perf.c
+filter_seccomp_perf_OBJECTS = filter_seccomp-perf.$(OBJEXT)
+filter_seccomp_perf_LDADD = $(LDADD)
+filter_seccomp_perf_DEPENDENCIES = libtests.a
 finit_module_SOURCES = finit_module.c
 finit_module_OBJECTS = finit_module.$(OBJEXT)
 finit_module_LDADD = $(LDADD)
@@ -751,10 +1108,38 @@ flock_SOURCES = flock.c
 flock_OBJECTS = flock.$(OBJEXT)
 flock_LDADD = $(LDADD)
 flock_DEPENDENCIES = libtests.a
+fork__pidns_translation_SOURCES = fork--pidns-translation.c
+fork__pidns_translation_OBJECTS = fork--pidns-translation.$(OBJEXT)
+fork__pidns_translation_LDADD = $(LDADD)
+fork__pidns_translation_DEPENDENCIES = libtests.a
 fork_f_SOURCES = fork-f.c
 fork_f_OBJECTS = fork-f.$(OBJEXT)
 fork_f_LDADD = $(LDADD)
 fork_f_DEPENDENCIES = libtests.a
+fsconfig_SOURCES = fsconfig.c
+fsconfig_OBJECTS = fsconfig.$(OBJEXT)
+fsconfig_LDADD = $(LDADD)
+fsconfig_DEPENDENCIES = libtests.a
+fsconfig_P_SOURCES = fsconfig-P.c
+fsconfig_P_OBJECTS = fsconfig-P.$(OBJEXT)
+fsconfig_P_LDADD = $(LDADD)
+fsconfig_P_DEPENDENCIES = libtests.a
+fsmount_SOURCES = fsmount.c
+fsmount_OBJECTS = fsmount.$(OBJEXT)
+fsmount_LDADD = $(LDADD)
+fsmount_DEPENDENCIES = libtests.a
+fsopen_SOURCES = fsopen.c
+fsopen_OBJECTS = fsopen.$(OBJEXT)
+fsopen_LDADD = $(LDADD)
+fsopen_DEPENDENCIES = libtests.a
+fspick_SOURCES = fspick.c
+fspick_OBJECTS = fspick.$(OBJEXT)
+fspick_LDADD = $(LDADD)
+fspick_DEPENDENCIES = libtests.a
+fspick_P_SOURCES = fspick-P.c
+fspick_P_OBJECTS = fspick-P.$(OBJEXT)
+fspick_P_LDADD = $(LDADD)
+fspick_P_DEPENDENCIES = libtests.a
 fstat_SOURCES = fstat.c
 fstat_OBJECTS = fstat.$(OBJEXT)
 fstat_LDADD = $(LDADD)
@@ -827,6 +1212,10 @@ get_mempolicy_SOURCES = get_mempolicy.c
 get_mempolicy_OBJECTS = get_mempolicy.$(OBJEXT)
 get_mempolicy_LDADD = $(LDADD)
 get_mempolicy_DEPENDENCIES = libtests.a
+get_process_reaper_SOURCES = get_process_reaper.c
+get_process_reaper_OBJECTS = get_process_reaper.$(OBJEXT)
+get_process_reaper_LDADD = $(LDADD)
+get_process_reaper_DEPENDENCIES = libtests.a
 getcpu_SOURCES = getcpu.c
 getcpu_OBJECTS = getcpu.$(OBJEXT)
 getcpu_LDADD = $(LDADD)
@@ -839,10 +1228,18 @@ getdents_SOURCES = getdents.c
 getdents_OBJECTS = getdents.$(OBJEXT)
 getdents_LDADD = $(LDADD)
 getdents_DEPENDENCIES = libtests.a
+getdents_v_SOURCES = getdents-v.c
+getdents_v_OBJECTS = getdents-v.$(OBJEXT)
+getdents_v_LDADD = $(LDADD)
+getdents_v_DEPENDENCIES = libtests.a
 getdents64_SOURCES = getdents64.c
 getdents64_OBJECTS = getdents64.$(OBJEXT)
 getdents64_LDADD = $(LDADD)
 getdents64_DEPENDENCIES = libtests.a
+getdents64_v_SOURCES = getdents64-v.c
+getdents64_v_OBJECTS = getdents64-v.$(OBJEXT)
+getdents64_v_LDADD = $(LDADD)
+getdents64_v_DEPENDENCIES = libtests.a
 getegid_SOURCES = getegid.c
 getegid_OBJECTS = getegid.$(OBJEXT)
 getegid_LDADD = $(LDADD)
@@ -883,10 +1280,20 @@ getpgrp_SOURCES = getpgrp.c
 getpgrp_OBJECTS = getpgrp.$(OBJEXT)
 getpgrp_LDADD = $(LDADD)
 getpgrp_DEPENDENCIES = libtests.a
+getpgrp__pidns_translation_SOURCES = getpgrp--pidns-translation.c
+getpgrp__pidns_translation_OBJECTS =  \
+       getpgrp--pidns-translation.$(OBJEXT)
+getpgrp__pidns_translation_LDADD = $(LDADD)
+getpgrp__pidns_translation_DEPENDENCIES = libtests.a
 getpid_SOURCES = getpid.c
 getpid_OBJECTS = getpid.$(OBJEXT)
 getpid_LDADD = $(LDADD)
 getpid_DEPENDENCIES = libtests.a
+getpid__pidns_translation_SOURCES = getpid--pidns-translation.c
+getpid__pidns_translation_OBJECTS =  \
+       getpid--pidns-translation.$(OBJEXT)
+getpid__pidns_translation_LDADD = $(LDADD)
+getpid__pidns_translation_DEPENDENCIES = libtests.a
 getppid_SOURCES = getppid.c
 getppid_OBJECTS = getppid.$(OBJEXT)
 getppid_LDADD = $(LDADD)
@@ -923,6 +1330,11 @@ getsid_SOURCES = getsid.c
 getsid_OBJECTS = getsid.$(OBJEXT)
 getsid_LDADD = $(LDADD)
 getsid_DEPENDENCIES = libtests.a
+getsid__pidns_translation_SOURCES = getsid--pidns-translation.c
+getsid__pidns_translation_OBJECTS =  \
+       getsid--pidns-translation.$(OBJEXT)
+getsid__pidns_translation_LDADD = $(LDADD)
+getsid__pidns_translation_DEPENDENCIES = libtests.a
 getsockname_SOURCES = getsockname.c
 getsockname_OBJECTS = getsockname.$(OBJEXT)
 getsockname_LDADD = $(LDADD)
@@ -931,6 +1343,11 @@ gettid_SOURCES = gettid.c
 gettid_OBJECTS = gettid.$(OBJEXT)
 gettid_LDADD = $(LDADD)
 gettid_DEPENDENCIES = libtests.a
+gettid__pidns_translation_SOURCES = gettid--pidns-translation.c
+gettid__pidns_translation_OBJECTS =  \
+       gettid--pidns-translation.$(OBJEXT)
+gettid__pidns_translation_LDADD = $(LDADD)
+gettid__pidns_translation_DEPENDENCIES = libtests.a
 getuid_SOURCES = getuid.c
 getuid_OBJECTS = getuid.$(OBJEXT)
 getuid_LDADD = $(LDADD)
@@ -939,10 +1356,18 @@ getuid32_SOURCES = getuid32.c
 getuid32_OBJECTS = getuid32.$(OBJEXT)
 getuid32_LDADD = $(LDADD)
 getuid32_DEPENDENCIES = libtests.a
-getxxid_SOURCES = getxxid.c
-getxxid_OBJECTS = getxxid.$(OBJEXT)
-getxxid_LDADD = $(LDADD)
-getxxid_DEPENDENCIES = libtests.a
+getxgid_SOURCES = getxgid.c
+getxgid_OBJECTS = getxgid.$(OBJEXT)
+getxgid_LDADD = $(LDADD)
+getxgid_DEPENDENCIES = libtests.a
+getxpid_SOURCES = getxpid.c
+getxpid_OBJECTS = getxpid.$(OBJEXT)
+getxpid_LDADD = $(LDADD)
+getxpid_DEPENDENCIES = libtests.a
+getxuid_SOURCES = getxuid.c
+getxuid_OBJECTS = getxuid.$(OBJEXT)
+getxuid_LDADD = $(LDADD)
+getxuid_DEPENDENCIES = libtests.a
 group_req_SOURCES = group_req.c
 group_req_OBJECTS = group_req.$(OBJEXT)
 group_req_LDADD = $(LDADD)
@@ -963,10 +1388,22 @@ inotify_SOURCES = inotify.c
 inotify_OBJECTS = inotify.$(OBJEXT)
 inotify_LDADD = $(LDADD)
 inotify_DEPENDENCIES = libtests.a
+inotify_init_SOURCES = inotify_init.c
+inotify_init_OBJECTS = inotify_init.$(OBJEXT)
+inotify_init_LDADD = $(LDADD)
+inotify_init_DEPENDENCIES = libtests.a
+inotify_init_y_SOURCES = inotify_init-y.c
+inotify_init_y_OBJECTS = inotify_init-y.$(OBJEXT)
+inotify_init_y_LDADD = $(LDADD)
+inotify_init_y_DEPENDENCIES = libtests.a
 inotify_init1_SOURCES = inotify_init1.c
 inotify_init1_OBJECTS = inotify_init1.$(OBJEXT)
 inotify_init1_LDADD = $(LDADD)
 inotify_init1_DEPENDENCIES = libtests.a
+inotify_init1_y_SOURCES = inotify_init1-y.c
+inotify_init1_y_OBJECTS = inotify_init1-y.$(OBJEXT)
+inotify_init1_y_LDADD = $(LDADD)
+inotify_init1_y_DEPENDENCIES = libtests.a
 int_0x80_SOURCES = int_0x80.c
 int_0x80_OBJECTS = int_0x80.$(OBJEXT)
 int_0x80_LDADD = $(LDADD)
@@ -991,6 +1428,12 @@ ioctl_block_SOURCES = ioctl_block.c
 ioctl_block_OBJECTS = ioctl_block.$(OBJEXT)
 ioctl_block_LDADD = $(LDADD)
 ioctl_block_DEPENDENCIES = libtests.a
+ioctl_block__pidns_translation_SOURCES =  \
+       ioctl_block--pidns-translation.c
+ioctl_block__pidns_translation_OBJECTS =  \
+       ioctl_block--pidns-translation.$(OBJEXT)
+ioctl_block__pidns_translation_LDADD = $(LDADD)
+ioctl_block__pidns_translation_DEPENDENCIES = libtests.a
 ioctl_dm_SOURCES = ioctl_dm.c
 ioctl_dm_OBJECTS = ioctl_dm.$(OBJEXT)
 ioctl_dm_LDADD = $(LDADD)
@@ -1003,18 +1446,143 @@ ioctl_evdev_SOURCES = ioctl_evdev.c
 ioctl_evdev_OBJECTS = ioctl_evdev.$(OBJEXT)
 ioctl_evdev_LDADD = $(LDADD)
 ioctl_evdev_DEPENDENCIES = libtests.a
+ioctl_evdev_Xabbrev_SOURCES = ioctl_evdev-Xabbrev.c
+ioctl_evdev_Xabbrev_OBJECTS = ioctl_evdev-Xabbrev.$(OBJEXT)
+ioctl_evdev_Xabbrev_LDADD = $(LDADD)
+ioctl_evdev_Xabbrev_DEPENDENCIES = libtests.a
+ioctl_evdev_Xraw_SOURCES = ioctl_evdev-Xraw.c
+ioctl_evdev_Xraw_OBJECTS = ioctl_evdev-Xraw.$(OBJEXT)
+ioctl_evdev_Xraw_LDADD = $(LDADD)
+ioctl_evdev_Xraw_DEPENDENCIES = libtests.a
+ioctl_evdev_Xverbose_SOURCES = ioctl_evdev-Xverbose.c
+ioctl_evdev_Xverbose_OBJECTS = ioctl_evdev-Xverbose.$(OBJEXT)
+ioctl_evdev_Xverbose_LDADD = $(LDADD)
+ioctl_evdev_Xverbose_DEPENDENCIES = libtests.a
 ioctl_evdev_success_SOURCES = ioctl_evdev-success.c
 ioctl_evdev_success_OBJECTS = ioctl_evdev-success.$(OBJEXT)
 ioctl_evdev_success_LDADD = $(LDADD)
 ioctl_evdev_success_DEPENDENCIES = libtests.a
+ioctl_evdev_success_Xabbrev_SOURCES = ioctl_evdev-success-Xabbrev.c
+ioctl_evdev_success_Xabbrev_OBJECTS =  \
+       ioctl_evdev-success-Xabbrev.$(OBJEXT)
+ioctl_evdev_success_Xabbrev_LDADD = $(LDADD)
+ioctl_evdev_success_Xabbrev_DEPENDENCIES = libtests.a
+ioctl_evdev_success_Xraw_SOURCES = ioctl_evdev-success-Xraw.c
+ioctl_evdev_success_Xraw_OBJECTS = ioctl_evdev-success-Xraw.$(OBJEXT)
+ioctl_evdev_success_Xraw_LDADD = $(LDADD)
+ioctl_evdev_success_Xraw_DEPENDENCIES = libtests.a
+ioctl_evdev_success_Xverbose_SOURCES = ioctl_evdev-success-Xverbose.c
+ioctl_evdev_success_Xverbose_OBJECTS =  \
+       ioctl_evdev-success-Xverbose.$(OBJEXT)
+ioctl_evdev_success_Xverbose_LDADD = $(LDADD)
+ioctl_evdev_success_Xverbose_DEPENDENCIES = libtests.a
 ioctl_evdev_success_v_SOURCES = ioctl_evdev-success-v.c
 ioctl_evdev_success_v_OBJECTS = ioctl_evdev-success-v.$(OBJEXT)
 ioctl_evdev_success_v_LDADD = $(LDADD)
 ioctl_evdev_success_v_DEPENDENCIES = libtests.a
+ioctl_evdev_success_v_Xabbrev_SOURCES =  \
+       ioctl_evdev-success-v-Xabbrev.c
+ioctl_evdev_success_v_Xabbrev_OBJECTS =  \
+       ioctl_evdev-success-v-Xabbrev.$(OBJEXT)
+ioctl_evdev_success_v_Xabbrev_LDADD = $(LDADD)
+ioctl_evdev_success_v_Xabbrev_DEPENDENCIES = libtests.a
+ioctl_evdev_success_v_Xraw_SOURCES = ioctl_evdev-success-v-Xraw.c
+ioctl_evdev_success_v_Xraw_OBJECTS =  \
+       ioctl_evdev-success-v-Xraw.$(OBJEXT)
+ioctl_evdev_success_v_Xraw_LDADD = $(LDADD)
+ioctl_evdev_success_v_Xraw_DEPENDENCIES = libtests.a
+ioctl_evdev_success_v_Xverbose_SOURCES =  \
+       ioctl_evdev-success-v-Xverbose.c
+ioctl_evdev_success_v_Xverbose_OBJECTS =  \
+       ioctl_evdev-success-v-Xverbose.$(OBJEXT)
+ioctl_evdev_success_v_Xverbose_LDADD = $(LDADD)
+ioctl_evdev_success_v_Xverbose_DEPENDENCIES = libtests.a
 ioctl_evdev_v_SOURCES = ioctl_evdev-v.c
 ioctl_evdev_v_OBJECTS = ioctl_evdev-v.$(OBJEXT)
 ioctl_evdev_v_LDADD = $(LDADD)
 ioctl_evdev_v_DEPENDENCIES = libtests.a
+ioctl_evdev_v_Xabbrev_SOURCES = ioctl_evdev-v-Xabbrev.c
+ioctl_evdev_v_Xabbrev_OBJECTS = ioctl_evdev-v-Xabbrev.$(OBJEXT)
+ioctl_evdev_v_Xabbrev_LDADD = $(LDADD)
+ioctl_evdev_v_Xabbrev_DEPENDENCIES = libtests.a
+ioctl_evdev_v_Xraw_SOURCES = ioctl_evdev-v-Xraw.c
+ioctl_evdev_v_Xraw_OBJECTS = ioctl_evdev-v-Xraw.$(OBJEXT)
+ioctl_evdev_v_Xraw_LDADD = $(LDADD)
+ioctl_evdev_v_Xraw_DEPENDENCIES = libtests.a
+ioctl_evdev_v_Xverbose_SOURCES = ioctl_evdev-v-Xverbose.c
+ioctl_evdev_v_Xverbose_OBJECTS = ioctl_evdev-v-Xverbose.$(OBJEXT)
+ioctl_evdev_v_Xverbose_LDADD = $(LDADD)
+ioctl_evdev_v_Xverbose_DEPENDENCIES = libtests.a
+ioctl_hdio_SOURCES = ioctl_hdio.c
+ioctl_hdio_OBJECTS = ioctl_hdio.$(OBJEXT)
+ioctl_hdio_LDADD = $(LDADD)
+ioctl_hdio_DEPENDENCIES = libtests.a
+ioctl_hdio_Xabbrev_SOURCES = ioctl_hdio-Xabbrev.c
+ioctl_hdio_Xabbrev_OBJECTS = ioctl_hdio-Xabbrev.$(OBJEXT)
+ioctl_hdio_Xabbrev_LDADD = $(LDADD)
+ioctl_hdio_Xabbrev_DEPENDENCIES = libtests.a
+ioctl_hdio_Xraw_SOURCES = ioctl_hdio-Xraw.c
+ioctl_hdio_Xraw_OBJECTS = ioctl_hdio-Xraw.$(OBJEXT)
+ioctl_hdio_Xraw_LDADD = $(LDADD)
+ioctl_hdio_Xraw_DEPENDENCIES = libtests.a
+ioctl_hdio_Xverbose_SOURCES = ioctl_hdio-Xverbose.c
+ioctl_hdio_Xverbose_OBJECTS = ioctl_hdio-Xverbose.$(OBJEXT)
+ioctl_hdio_Xverbose_LDADD = $(LDADD)
+ioctl_hdio_Xverbose_DEPENDENCIES = libtests.a
+ioctl_hdio_success_SOURCES = ioctl_hdio-success.c
+ioctl_hdio_success_OBJECTS = ioctl_hdio-success.$(OBJEXT)
+ioctl_hdio_success_LDADD = $(LDADD)
+ioctl_hdio_success_DEPENDENCIES = libtests.a
+ioctl_hdio_success_Xabbrev_SOURCES = ioctl_hdio-success-Xabbrev.c
+ioctl_hdio_success_Xabbrev_OBJECTS =  \
+       ioctl_hdio-success-Xabbrev.$(OBJEXT)
+ioctl_hdio_success_Xabbrev_LDADD = $(LDADD)
+ioctl_hdio_success_Xabbrev_DEPENDENCIES = libtests.a
+ioctl_hdio_success_Xraw_SOURCES = ioctl_hdio-success-Xraw.c
+ioctl_hdio_success_Xraw_OBJECTS = ioctl_hdio-success-Xraw.$(OBJEXT)
+ioctl_hdio_success_Xraw_LDADD = $(LDADD)
+ioctl_hdio_success_Xraw_DEPENDENCIES = libtests.a
+ioctl_hdio_success_Xverbose_SOURCES = ioctl_hdio-success-Xverbose.c
+ioctl_hdio_success_Xverbose_OBJECTS =  \
+       ioctl_hdio-success-Xverbose.$(OBJEXT)
+ioctl_hdio_success_Xverbose_LDADD = $(LDADD)
+ioctl_hdio_success_Xverbose_DEPENDENCIES = libtests.a
+ioctl_hdio_success_v_SOURCES = ioctl_hdio-success-v.c
+ioctl_hdio_success_v_OBJECTS = ioctl_hdio-success-v.$(OBJEXT)
+ioctl_hdio_success_v_LDADD = $(LDADD)
+ioctl_hdio_success_v_DEPENDENCIES = libtests.a
+ioctl_hdio_success_v_Xabbrev_SOURCES = ioctl_hdio-success-v-Xabbrev.c
+ioctl_hdio_success_v_Xabbrev_OBJECTS =  \
+       ioctl_hdio-success-v-Xabbrev.$(OBJEXT)
+ioctl_hdio_success_v_Xabbrev_LDADD = $(LDADD)
+ioctl_hdio_success_v_Xabbrev_DEPENDENCIES = libtests.a
+ioctl_hdio_success_v_Xraw_SOURCES = ioctl_hdio-success-v-Xraw.c
+ioctl_hdio_success_v_Xraw_OBJECTS =  \
+       ioctl_hdio-success-v-Xraw.$(OBJEXT)
+ioctl_hdio_success_v_Xraw_LDADD = $(LDADD)
+ioctl_hdio_success_v_Xraw_DEPENDENCIES = libtests.a
+ioctl_hdio_success_v_Xverbose_SOURCES =  \
+       ioctl_hdio-success-v-Xverbose.c
+ioctl_hdio_success_v_Xverbose_OBJECTS =  \
+       ioctl_hdio-success-v-Xverbose.$(OBJEXT)
+ioctl_hdio_success_v_Xverbose_LDADD = $(LDADD)
+ioctl_hdio_success_v_Xverbose_DEPENDENCIES = libtests.a
+ioctl_hdio_v_SOURCES = ioctl_hdio-v.c
+ioctl_hdio_v_OBJECTS = ioctl_hdio-v.$(OBJEXT)
+ioctl_hdio_v_LDADD = $(LDADD)
+ioctl_hdio_v_DEPENDENCIES = libtests.a
+ioctl_hdio_v_Xabbrev_SOURCES = ioctl_hdio-v-Xabbrev.c
+ioctl_hdio_v_Xabbrev_OBJECTS = ioctl_hdio-v-Xabbrev.$(OBJEXT)
+ioctl_hdio_v_Xabbrev_LDADD = $(LDADD)
+ioctl_hdio_v_Xabbrev_DEPENDENCIES = libtests.a
+ioctl_hdio_v_Xraw_SOURCES = ioctl_hdio-v-Xraw.c
+ioctl_hdio_v_Xraw_OBJECTS = ioctl_hdio-v-Xraw.$(OBJEXT)
+ioctl_hdio_v_Xraw_LDADD = $(LDADD)
+ioctl_hdio_v_Xraw_DEPENDENCIES = libtests.a
+ioctl_hdio_v_Xverbose_SOURCES = ioctl_hdio-v-Xverbose.c
+ioctl_hdio_v_Xverbose_OBJECTS = ioctl_hdio-v-Xverbose.$(OBJEXT)
+ioctl_hdio_v_Xverbose_LDADD = $(LDADD)
+ioctl_hdio_v_Xverbose_DEPENDENCIES = libtests.a
 ioctl_inotify_SOURCES = ioctl_inotify.c
 ioctl_inotify_OBJECTS = ioctl_inotify.$(OBJEXT)
 ioctl_inotify_LDADD = $(LDADD)
@@ -1096,6 +1664,10 @@ ioctl_sock_gifconf_SOURCES = ioctl_sock_gifconf.c
 ioctl_sock_gifconf_OBJECTS = ioctl_sock_gifconf.$(OBJEXT)
 ioctl_sock_gifconf_LDADD = $(LDADD)
 ioctl_sock_gifconf_DEPENDENCIES = libtests.a
+ioctl_tee_SOURCES = ioctl_tee.c
+ioctl_tee_OBJECTS = ioctl_tee.$(OBJEXT)
+ioctl_tee_LDADD = $(LDADD)
+ioctl_tee_DEPENDENCIES = libtests.a
 ioctl_uffdio_SOURCES = ioctl_uffdio.c
 ioctl_uffdio_OBJECTS = ioctl_uffdio.$(OBJEXT)
 ioctl_uffdio_LDADD = $(LDADD)
@@ -1104,6 +1676,76 @@ ioctl_v4l2_SOURCES = ioctl_v4l2.c
 ioctl_v4l2_OBJECTS = ioctl_v4l2.$(OBJEXT)
 ioctl_v4l2_LDADD = $(LDADD)
 ioctl_v4l2_DEPENDENCIES = libtests.a
+ioctl_v4l2_Xabbrev_SOURCES = ioctl_v4l2-Xabbrev.c
+ioctl_v4l2_Xabbrev_OBJECTS = ioctl_v4l2-Xabbrev.$(OBJEXT)
+ioctl_v4l2_Xabbrev_LDADD = $(LDADD)
+ioctl_v4l2_Xabbrev_DEPENDENCIES = libtests.a
+ioctl_v4l2_Xraw_SOURCES = ioctl_v4l2-Xraw.c
+ioctl_v4l2_Xraw_OBJECTS = ioctl_v4l2-Xraw.$(OBJEXT)
+ioctl_v4l2_Xraw_LDADD = $(LDADD)
+ioctl_v4l2_Xraw_DEPENDENCIES = libtests.a
+ioctl_v4l2_Xverbose_SOURCES = ioctl_v4l2-Xverbose.c
+ioctl_v4l2_Xverbose_OBJECTS = ioctl_v4l2-Xverbose.$(OBJEXT)
+ioctl_v4l2_Xverbose_LDADD = $(LDADD)
+ioctl_v4l2_Xverbose_DEPENDENCIES = libtests.a
+ioctl_v4l2_success_SOURCES = ioctl_v4l2-success.c
+ioctl_v4l2_success_OBJECTS = ioctl_v4l2-success.$(OBJEXT)
+ioctl_v4l2_success_LDADD = $(LDADD)
+ioctl_v4l2_success_DEPENDENCIES = libtests.a
+ioctl_v4l2_success_Xabbrev_SOURCES = ioctl_v4l2-success-Xabbrev.c
+ioctl_v4l2_success_Xabbrev_OBJECTS =  \
+       ioctl_v4l2-success-Xabbrev.$(OBJEXT)
+ioctl_v4l2_success_Xabbrev_LDADD = $(LDADD)
+ioctl_v4l2_success_Xabbrev_DEPENDENCIES = libtests.a
+ioctl_v4l2_success_Xraw_SOURCES = ioctl_v4l2-success-Xraw.c
+ioctl_v4l2_success_Xraw_OBJECTS = ioctl_v4l2-success-Xraw.$(OBJEXT)
+ioctl_v4l2_success_Xraw_LDADD = $(LDADD)
+ioctl_v4l2_success_Xraw_DEPENDENCIES = libtests.a
+ioctl_v4l2_success_Xverbose_SOURCES = ioctl_v4l2-success-Xverbose.c
+ioctl_v4l2_success_Xverbose_OBJECTS =  \
+       ioctl_v4l2-success-Xverbose.$(OBJEXT)
+ioctl_v4l2_success_Xverbose_LDADD = $(LDADD)
+ioctl_v4l2_success_Xverbose_DEPENDENCIES = libtests.a
+ioctl_v4l2_success_v_SOURCES = ioctl_v4l2-success-v.c
+ioctl_v4l2_success_v_OBJECTS = ioctl_v4l2-success-v.$(OBJEXT)
+ioctl_v4l2_success_v_LDADD = $(LDADD)
+ioctl_v4l2_success_v_DEPENDENCIES = libtests.a
+ioctl_v4l2_success_v_Xabbrev_SOURCES = ioctl_v4l2-success-v-Xabbrev.c
+ioctl_v4l2_success_v_Xabbrev_OBJECTS =  \
+       ioctl_v4l2-success-v-Xabbrev.$(OBJEXT)
+ioctl_v4l2_success_v_Xabbrev_LDADD = $(LDADD)
+ioctl_v4l2_success_v_Xabbrev_DEPENDENCIES = libtests.a
+ioctl_v4l2_success_v_Xraw_SOURCES = ioctl_v4l2-success-v-Xraw.c
+ioctl_v4l2_success_v_Xraw_OBJECTS =  \
+       ioctl_v4l2-success-v-Xraw.$(OBJEXT)
+ioctl_v4l2_success_v_Xraw_LDADD = $(LDADD)
+ioctl_v4l2_success_v_Xraw_DEPENDENCIES = libtests.a
+ioctl_v4l2_success_v_Xverbose_SOURCES =  \
+       ioctl_v4l2-success-v-Xverbose.c
+ioctl_v4l2_success_v_Xverbose_OBJECTS =  \
+       ioctl_v4l2-success-v-Xverbose.$(OBJEXT)
+ioctl_v4l2_success_v_Xverbose_LDADD = $(LDADD)
+ioctl_v4l2_success_v_Xverbose_DEPENDENCIES = libtests.a
+ioctl_v4l2_v_SOURCES = ioctl_v4l2-v.c
+ioctl_v4l2_v_OBJECTS = ioctl_v4l2-v.$(OBJEXT)
+ioctl_v4l2_v_LDADD = $(LDADD)
+ioctl_v4l2_v_DEPENDENCIES = libtests.a
+ioctl_v4l2_v_Xabbrev_SOURCES = ioctl_v4l2-v-Xabbrev.c
+ioctl_v4l2_v_Xabbrev_OBJECTS = ioctl_v4l2-v-Xabbrev.$(OBJEXT)
+ioctl_v4l2_v_Xabbrev_LDADD = $(LDADD)
+ioctl_v4l2_v_Xabbrev_DEPENDENCIES = libtests.a
+ioctl_v4l2_v_Xraw_SOURCES = ioctl_v4l2-v-Xraw.c
+ioctl_v4l2_v_Xraw_OBJECTS = ioctl_v4l2-v-Xraw.$(OBJEXT)
+ioctl_v4l2_v_Xraw_LDADD = $(LDADD)
+ioctl_v4l2_v_Xraw_DEPENDENCIES = libtests.a
+ioctl_v4l2_v_Xverbose_SOURCES = ioctl_v4l2-v-Xverbose.c
+ioctl_v4l2_v_Xverbose_OBJECTS = ioctl_v4l2-v-Xverbose.$(OBJEXT)
+ioctl_v4l2_v_Xverbose_LDADD = $(LDADD)
+ioctl_v4l2_v_Xverbose_DEPENDENCIES = libtests.a
+ioctl_watchdog_SOURCES = ioctl_watchdog.c
+ioctl_watchdog_OBJECTS = ioctl_watchdog.$(OBJEXT)
+ioctl_watchdog_LDADD = $(LDADD)
+ioctl_watchdog_DEPENDENCIES = libtests.a
 ioperm_SOURCES = ioperm.c
 ioperm_OBJECTS = ioperm.$(OBJEXT)
 ioperm_LDADD = $(LDADD)
@@ -1116,6 +1758,11 @@ ioprio_SOURCES = ioprio.c
 ioprio_OBJECTS = ioprio.$(OBJEXT)
 ioprio_LDADD = $(LDADD)
 ioprio_DEPENDENCIES = libtests.a
+ioprio__pidns_translation_SOURCES = ioprio--pidns-translation.c
+ioprio__pidns_translation_OBJECTS =  \
+       ioprio--pidns-translation.$(OBJEXT)
+ioprio__pidns_translation_LDADD = $(LDADD)
+ioprio__pidns_translation_DEPENDENCIES = libtests.a
 ioprio_Xabbrev_SOURCES = ioprio-Xabbrev.c
 ioprio_Xabbrev_OBJECTS = ioprio-Xabbrev.$(OBJEXT)
 ioprio_Xabbrev_LDADD = $(LDADD)
@@ -1212,6 +1859,11 @@ kcmp_y_SOURCES = kcmp-y.c
 kcmp_y_OBJECTS = kcmp-y.$(OBJEXT)
 kcmp_y_LDADD = $(LDADD)
 kcmp_y_DEPENDENCIES = libtests.a
+kcmp_y__pidns_translation_SOURCES = kcmp-y--pidns-translation.c
+kcmp_y__pidns_translation_OBJECTS =  \
+       kcmp-y--pidns-translation.$(OBJEXT)
+kcmp_y__pidns_translation_LDADD = $(LDADD)
+kcmp_y__pidns_translation_DEPENDENCIES = libtests.a
 kern_features_SOURCES = kern_features.c
 kern_features_OBJECTS = kern_features.$(OBJEXT)
 kern_features_LDADD = $(LDADD)
@@ -1260,6 +1912,10 @@ kill_SOURCES = kill.c
 kill_OBJECTS = kill.$(OBJEXT)
 kill_LDADD = $(LDADD)
 kill_DEPENDENCIES = libtests.a
+kill__pidns_translation_SOURCES = kill--pidns-translation.c
+kill__pidns_translation_OBJECTS = kill--pidns-translation.$(OBJEXT)
+kill__pidns_translation_LDADD = $(LDADD)
+kill__pidns_translation_DEPENDENCIES = libtests.a
 kill_child_SOURCES = kill_child.c
 kill_child_OBJECTS = kill_child.$(OBJEXT)
 kill_child_LDADD = $(LDADD)
@@ -1318,10 +1974,30 @@ madvise_SOURCES = madvise.c
 madvise_OBJECTS = madvise.$(OBJEXT)
 madvise_LDADD = $(LDADD)
 madvise_DEPENDENCIES = libtests.a
+maybe_switch_current_tcp_SOURCES = maybe_switch_current_tcp.c
+maybe_switch_current_tcp_OBJECTS = maybe_switch_current_tcp.$(OBJEXT)
+maybe_switch_current_tcp_DEPENDENCIES = $(LDADD)
+maybe_switch_current_tcp__quiet_thread_execve_SOURCES =  \
+       maybe_switch_current_tcp--quiet-thread-execve.c
+maybe_switch_current_tcp__quiet_thread_execve_OBJECTS =  \
+       maybe_switch_current_tcp--quiet-thread-execve.$(OBJEXT)
+maybe_switch_current_tcp__quiet_thread_execve_DEPENDENCIES = $(LDADD)
 mbind_SOURCES = mbind.c
 mbind_OBJECTS = mbind.$(OBJEXT)
 mbind_LDADD = $(LDADD)
 mbind_DEPENDENCIES = libtests.a
+mbind_Xabbrev_SOURCES = mbind-Xabbrev.c
+mbind_Xabbrev_OBJECTS = mbind-Xabbrev.$(OBJEXT)
+mbind_Xabbrev_LDADD = $(LDADD)
+mbind_Xabbrev_DEPENDENCIES = libtests.a
+mbind_Xraw_SOURCES = mbind-Xraw.c
+mbind_Xraw_OBJECTS = mbind-Xraw.$(OBJEXT)
+mbind_Xraw_LDADD = $(LDADD)
+mbind_Xraw_DEPENDENCIES = libtests.a
+mbind_Xverbose_SOURCES = mbind-Xverbose.c
+mbind_Xverbose_OBJECTS = mbind-Xverbose.$(OBJEXT)
+mbind_Xverbose_LDADD = $(LDADD)
+mbind_Xverbose_DEPENDENCIES = libtests.a
 membarrier_SOURCES = membarrier.c
 membarrier_OBJECTS = membarrier.$(OBJEXT)
 membarrier_LDADD = $(LDADD)
@@ -1346,6 +2022,12 @@ migrate_pages_SOURCES = migrate_pages.c
 migrate_pages_OBJECTS = migrate_pages.$(OBJEXT)
 migrate_pages_LDADD = $(LDADD)
 migrate_pages_DEPENDENCIES = libtests.a
+migrate_pages__pidns_translation_SOURCES =  \
+       migrate_pages--pidns-translation.c
+migrate_pages__pidns_translation_OBJECTS =  \
+       migrate_pages--pidns-translation.$(OBJEXT)
+migrate_pages__pidns_translation_LDADD = $(LDADD)
+migrate_pages__pidns_translation_DEPENDENCIES = libtests.a
 mincore_SOURCES = mincore.c
 mincore_OBJECTS = mincore.$(OBJEXT)
 mincore_LDADD = $(LDADD)
@@ -1446,10 +2128,24 @@ mount_Xverbose_SOURCES = mount-Xverbose.c
 mount_Xverbose_OBJECTS = mount-Xverbose.$(OBJEXT)
 mount_Xverbose_LDADD = $(LDADD)
 mount_Xverbose_DEPENDENCIES = libtests.a
+move_mount_SOURCES = move_mount.c
+move_mount_OBJECTS = move_mount.$(OBJEXT)
+move_mount_LDADD = $(LDADD)
+move_mount_DEPENDENCIES = libtests.a
+move_mount_P_SOURCES = move_mount-P.c
+move_mount_P_OBJECTS = move_mount-P.$(OBJEXT)
+move_mount_P_LDADD = $(LDADD)
+move_mount_P_DEPENDENCIES = libtests.a
 move_pages_SOURCES = move_pages.c
 move_pages_OBJECTS = move_pages.$(OBJEXT)
 move_pages_LDADD = $(LDADD)
 move_pages_DEPENDENCIES = libtests.a
+move_pages__pidns_translation_SOURCES =  \
+       move_pages--pidns-translation.c
+move_pages__pidns_translation_OBJECTS =  \
+       move_pages--pidns-translation.$(OBJEXT)
+move_pages__pidns_translation_LDADD = $(LDADD)
+move_pages__pidns_translation_DEPENDENCIES = libtests.a
 move_pages_Xabbrev_SOURCES = move_pages-Xabbrev.c
 move_pages_Xabbrev_OBJECTS = move_pages-Xabbrev.$(OBJEXT)
 move_pages_Xabbrev_LDADD = $(LDADD)
@@ -1497,6 +2193,27 @@ nanosleep_SOURCES = nanosleep.c
 nanosleep_OBJECTS = nanosleep.$(OBJEXT)
 nanosleep_LDADD = $(LDADD)
 nanosleep_DEPENDENCIES = libtests.a
+net__decode_fds_dev_netlink_SOURCES = net--decode-fds-dev-netlink.c
+net__decode_fds_dev_netlink_OBJECTS =  \
+       net--decode-fds-dev-netlink.$(OBJEXT)
+net__decode_fds_dev_netlink_LDADD = $(LDADD)
+net__decode_fds_dev_netlink_DEPENDENCIES = libtests.a
+net__decode_fds_none_netlink_SOURCES = net--decode-fds-none-netlink.c
+net__decode_fds_none_netlink_OBJECTS =  \
+       net--decode-fds-none-netlink.$(OBJEXT)
+net__decode_fds_none_netlink_LDADD = $(LDADD)
+net__decode_fds_none_netlink_DEPENDENCIES = libtests.a
+net__decode_fds_path_netlink_SOURCES = net--decode-fds-path-netlink.c
+net__decode_fds_path_netlink_OBJECTS =  \
+       net--decode-fds-path-netlink.$(OBJEXT)
+net__decode_fds_path_netlink_LDADD = $(LDADD)
+net__decode_fds_path_netlink_DEPENDENCIES = libtests.a
+net__decode_fds_socket_netlink_SOURCES =  \
+       net--decode-fds-socket-netlink.c
+net__decode_fds_socket_netlink_OBJECTS =  \
+       net--decode-fds-socket-netlink.$(OBJEXT)
+net__decode_fds_socket_netlink_LDADD = $(LDADD)
+net__decode_fds_socket_netlink_DEPENDENCIES = libtests.a
 net_accept_connect_SOURCES = net-accept-connect.c
 net_accept_connect_OBJECTS = net-accept-connect.$(OBJEXT)
 net_accept_connect_LDADD = $(LDADD)
@@ -1525,6 +2242,12 @@ net_sockaddr_SOURCES = net-sockaddr.c
 net_sockaddr_OBJECTS = net-sockaddr.$(OBJEXT)
 net_sockaddr_LDADD = $(LDADD)
 net_sockaddr_DEPENDENCIES = libtests.a
+net_sockaddr__pidns_translation_SOURCES =  \
+       net-sockaddr--pidns-translation.c
+net_sockaddr__pidns_translation_OBJECTS =  \
+       net-sockaddr--pidns-translation.$(OBJEXT)
+net_sockaddr__pidns_translation_LDADD = $(LDADD)
+net_sockaddr__pidns_translation_DEPENDENCIES = libtests.a
 net_tpacket_req_SOURCES = net-tpacket_req.c
 net_tpacket_req_OBJECTS = net-tpacket_req.$(OBJEXT)
 net_tpacket_req_LDADD = $(LDADD)
@@ -1562,6 +2285,12 @@ netlink_audit_SOURCES = netlink_audit.c
 netlink_audit_OBJECTS = netlink_audit.$(OBJEXT)
 netlink_audit_LDADD = $(LDADD)
 netlink_audit_DEPENDENCIES = libtests.a
+netlink_audit__pidns_translation_SOURCES =  \
+       netlink_audit--pidns-translation.c
+netlink_audit__pidns_translation_OBJECTS =  \
+       netlink_audit--pidns-translation.$(OBJEXT)
+netlink_audit__pidns_translation_LDADD = $(LDADD)
+netlink_audit__pidns_translation_DEPENDENCIES = libtests.a
 netlink_crypto_SOURCES = netlink_crypto.c
 netlink_crypto_OBJECTS = netlink_crypto.$(OBJEXT)
 netlink_crypto_LDADD = $(LDADD)
@@ -1710,6 +2439,10 @@ nlattr_ifla_xdp_SOURCES = nlattr_ifla_xdp.c
 nlattr_ifla_xdp_OBJECTS = nlattr_ifla_xdp.$(OBJEXT)
 nlattr_ifla_xdp_LDADD = $(LDADD)
 nlattr_ifla_xdp_DEPENDENCIES = libtests.a
+nlattr_ifla_xdp_y_SOURCES = nlattr_ifla_xdp-y.c
+nlattr_ifla_xdp_y_OBJECTS = nlattr_ifla_xdp-y.$(OBJEXT)
+nlattr_ifla_xdp_y_LDADD = $(LDADD)
+nlattr_ifla_xdp_y_DEPENDENCIES = libtests.a
 nlattr_inet_diag_msg_SOURCES = nlattr_inet_diag_msg.c
 nlattr_inet_diag_msg_OBJECTS = nlattr_inet_diag_msg.$(OBJEXT)
 nlattr_inet_diag_msg_LDADD = $(LDADD)
@@ -1851,10 +2584,58 @@ open_SOURCES = open.c
 open_OBJECTS = open.$(OBJEXT)
 open_LDADD = $(LDADD)
 open_DEPENDENCIES = libtests.a
+open_tree_SOURCES = open_tree.c
+open_tree_OBJECTS = open_tree.$(OBJEXT)
+open_tree_LDADD = $(LDADD)
+open_tree_DEPENDENCIES = libtests.a
+open_tree_P_SOURCES = open_tree-P.c
+open_tree_P_OBJECTS = open_tree-P.$(OBJEXT)
+open_tree_P_LDADD = $(LDADD)
+open_tree_P_DEPENDENCIES = libtests.a
 openat_SOURCES = openat.c
 openat_OBJECTS = openat.$(OBJEXT)
 openat_LDADD = $(LDADD)
 openat_DEPENDENCIES = libtests.a
+openat2_SOURCES = openat2.c
+openat2_OBJECTS = openat2.$(OBJEXT)
+openat2_LDADD = $(LDADD)
+openat2_DEPENDENCIES = libtests.a
+openat2_Xabbrev_SOURCES = openat2-Xabbrev.c
+openat2_Xabbrev_OBJECTS = openat2-Xabbrev.$(OBJEXT)
+openat2_Xabbrev_LDADD = $(LDADD)
+openat2_Xabbrev_DEPENDENCIES = libtests.a
+openat2_Xraw_SOURCES = openat2-Xraw.c
+openat2_Xraw_OBJECTS = openat2-Xraw.$(OBJEXT)
+openat2_Xraw_LDADD = $(LDADD)
+openat2_Xraw_DEPENDENCIES = libtests.a
+openat2_Xverbose_SOURCES = openat2-Xverbose.c
+openat2_Xverbose_OBJECTS = openat2-Xverbose.$(OBJEXT)
+openat2_Xverbose_LDADD = $(LDADD)
+openat2_Xverbose_DEPENDENCIES = libtests.a
+openat2_v_SOURCES = openat2-v.c
+openat2_v_OBJECTS = openat2-v.$(OBJEXT)
+openat2_v_LDADD = $(LDADD)
+openat2_v_DEPENDENCIES = libtests.a
+openat2_v_y_SOURCES = openat2-v-y.c
+openat2_v_y_OBJECTS = openat2-v-y.$(OBJEXT)
+openat2_v_y_LDADD = $(LDADD)
+openat2_v_y_DEPENDENCIES = libtests.a
+openat2_v_y_Xabbrev_SOURCES = openat2-v-y-Xabbrev.c
+openat2_v_y_Xabbrev_OBJECTS = openat2-v-y-Xabbrev.$(OBJEXT)
+openat2_v_y_Xabbrev_LDADD = $(LDADD)
+openat2_v_y_Xabbrev_DEPENDENCIES = libtests.a
+openat2_v_y_Xraw_SOURCES = openat2-v-y-Xraw.c
+openat2_v_y_Xraw_OBJECTS = openat2-v-y-Xraw.$(OBJEXT)
+openat2_v_y_Xraw_LDADD = $(LDADD)
+openat2_v_y_Xraw_DEPENDENCIES = libtests.a
+openat2_v_y_Xverbose_SOURCES = openat2-v-y-Xverbose.c
+openat2_v_y_Xverbose_OBJECTS = openat2-v-y-Xverbose.$(OBJEXT)
+openat2_v_y_Xverbose_LDADD = $(LDADD)
+openat2_v_y_Xverbose_DEPENDENCIES = libtests.a
+openat2_y_SOURCES = openat2-y.c
+openat2_y_OBJECTS = openat2-y.$(OBJEXT)
+openat2_y_LDADD = $(LDADD)
+openat2_y_DEPENDENCIES = libtests.a
 orphaned_process_group_SOURCES = orphaned_process_group.c
 orphaned_process_group_OBJECTS = orphaned_process_group.$(OBJEXT)
 orphaned_process_group_LDADD = $(LDADD)
@@ -1899,10 +2680,69 @@ personality_Xverbose_SOURCES = personality-Xverbose.c
 personality_Xverbose_OBJECTS = personality-Xverbose.$(OBJEXT)
 personality_Xverbose_LDADD = $(LDADD)
 personality_Xverbose_DEPENDENCIES = libtests.a
+pidfd_getfd_SOURCES = pidfd_getfd.c
+pidfd_getfd_OBJECTS = pidfd_getfd.$(OBJEXT)
+pidfd_getfd_LDADD = $(LDADD)
+pidfd_getfd_DEPENDENCIES = libtests.a
+pidfd_getfd_y_SOURCES = pidfd_getfd-y.c
+pidfd_getfd_y_OBJECTS = pidfd_getfd-y.$(OBJEXT)
+pidfd_getfd_y_LDADD = $(LDADD)
+pidfd_getfd_y_DEPENDENCIES = libtests.a
+pidfd_getfd_yy_SOURCES = pidfd_getfd-yy.c
+pidfd_getfd_yy_OBJECTS = pidfd_getfd-yy.$(OBJEXT)
+pidfd_getfd_yy_LDADD = $(LDADD)
+pidfd_getfd_yy_DEPENDENCIES = libtests.a
+pidfd_open_SOURCES = pidfd_open.c
+pidfd_open_OBJECTS = pidfd_open.$(OBJEXT)
+pidfd_open_LDADD = $(LDADD)
+pidfd_open_DEPENDENCIES = libtests.a
+pidfd_open__decode_fd_path_SOURCES = pidfd_open--decode-fd-path.c
+pidfd_open__decode_fd_path_OBJECTS =  \
+       pidfd_open--decode-fd-path.$(OBJEXT)
+pidfd_open__decode_fd_path_LDADD = $(LDADD)
+pidfd_open__decode_fd_path_DEPENDENCIES = libtests.a
+pidfd_open__decode_fd_pidfd_SOURCES = pidfd_open--decode-fd-pidfd.c
+pidfd_open__decode_fd_pidfd_OBJECTS =  \
+       pidfd_open--decode-fd-pidfd.$(OBJEXT)
+pidfd_open__decode_fd_pidfd_LDADD = $(LDADD)
+pidfd_open__decode_fd_pidfd_DEPENDENCIES = libtests.a
+pidfd_open__decode_fd_socket_SOURCES = pidfd_open--decode-fd-socket.c
+pidfd_open__decode_fd_socket_OBJECTS =  \
+       pidfd_open--decode-fd-socket.$(OBJEXT)
+pidfd_open__decode_fd_socket_LDADD = $(LDADD)
+pidfd_open__decode_fd_socket_DEPENDENCIES = libtests.a
+pidfd_open__pidns_translation_SOURCES =  \
+       pidfd_open--pidns-translation.c
+pidfd_open__pidns_translation_OBJECTS =  \
+       pidfd_open--pidns-translation.$(OBJEXT)
+pidfd_open__pidns_translation_LDADD = $(LDADD)
+pidfd_open__pidns_translation_DEPENDENCIES = libtests.a
+pidfd_open_P_SOURCES = pidfd_open-P.c
+pidfd_open_P_OBJECTS = pidfd_open-P.$(OBJEXT)
+pidfd_open_P_LDADD = $(LDADD)
+pidfd_open_P_DEPENDENCIES = libtests.a
+pidfd_open_y_SOURCES = pidfd_open-y.c
+pidfd_open_y_OBJECTS = pidfd_open-y.$(OBJEXT)
+pidfd_open_y_LDADD = $(LDADD)
+pidfd_open_y_DEPENDENCIES = libtests.a
+pidfd_open_yy_SOURCES = pidfd_open-yy.c
+pidfd_open_yy_OBJECTS = pidfd_open-yy.$(OBJEXT)
+pidfd_open_yy_LDADD = $(LDADD)
+pidfd_open_yy_DEPENDENCIES = libtests.a
 pidfd_send_signal_SOURCES = pidfd_send_signal.c
 pidfd_send_signal_OBJECTS = pidfd_send_signal.$(OBJEXT)
 pidfd_send_signal_LDADD = $(LDADD)
 pidfd_send_signal_DEPENDENCIES = libtests.a
+pidfd_send_signal__pidns_translation_SOURCES =  \
+       pidfd_send_signal--pidns-translation.c
+pidfd_send_signal__pidns_translation_OBJECTS =  \
+       pidfd_send_signal--pidns-translation.$(OBJEXT)
+pidfd_send_signal__pidns_translation_LDADD = $(LDADD)
+pidfd_send_signal__pidns_translation_DEPENDENCIES = libtests.a
+pidns_cache_SOURCES = pidns-cache.c
+pidns_cache_OBJECTS = pidns-cache.$(OBJEXT)
+pidns_cache_LDADD = $(LDADD)
+pidns_cache_DEPENDENCIES = libtests.a
 pipe_SOURCES = pipe.c
 pipe_OBJECTS = pipe.$(OBJEXT)
 pipe_LDADD = $(LDADD)
@@ -2008,6 +2848,10 @@ print_maxfd_SOURCES = print_maxfd.c
 print_maxfd_OBJECTS = print_maxfd.$(OBJEXT)
 print_maxfd_LDADD = $(LDADD)
 print_maxfd_DEPENDENCIES = libtests.a
+print_ppid_tracerpid_SOURCES = print_ppid_tracerpid.c
+print_ppid_tracerpid_OBJECTS = print_ppid_tracerpid.$(OBJEXT)
+print_ppid_tracerpid_LDADD = $(LDADD)
+print_ppid_tracerpid_DEPENDENCIES = libtests.a
 printpath_umovestr_SOURCES = printpath-umovestr.c
 printpath_umovestr_OBJECTS = printpath-umovestr.$(OBJEXT)
 printpath_umovestr_LDADD = $(LDADD)
@@ -2057,14 +2901,31 @@ prlimit64_SOURCES = prlimit64.c
 prlimit64_OBJECTS = prlimit64.$(OBJEXT)
 prlimit64_LDADD = $(LDADD)
 prlimit64_DEPENDENCIES = libtests.a
+prlimit64__pidns_translation_SOURCES = prlimit64--pidns-translation.c
+prlimit64__pidns_translation_OBJECTS =  \
+       prlimit64--pidns-translation.$(OBJEXT)
+prlimit64__pidns_translation_LDADD = $(LDADD)
+prlimit64__pidns_translation_DEPENDENCIES = libtests.a
 process_vm_readv_SOURCES = process_vm_readv.c
 process_vm_readv_OBJECTS = process_vm_readv.$(OBJEXT)
 process_vm_readv_LDADD = $(LDADD)
 process_vm_readv_DEPENDENCIES = libtests.a
+process_vm_readv__pidns_translation_SOURCES =  \
+       process_vm_readv--pidns-translation.c
+process_vm_readv__pidns_translation_OBJECTS =  \
+       process_vm_readv--pidns-translation.$(OBJEXT)
+process_vm_readv__pidns_translation_LDADD = $(LDADD)
+process_vm_readv__pidns_translation_DEPENDENCIES = libtests.a
 process_vm_writev_SOURCES = process_vm_writev.c
 process_vm_writev_OBJECTS = process_vm_writev.$(OBJEXT)
 process_vm_writev_LDADD = $(LDADD)
 process_vm_writev_DEPENDENCIES = libtests.a
+process_vm_writev__pidns_translation_SOURCES =  \
+       process_vm_writev--pidns-translation.c
+process_vm_writev__pidns_translation_OBJECTS =  \
+       process_vm_writev--pidns-translation.$(OBJEXT)
+process_vm_writev__pidns_translation_LDADD = $(LDADD)
+process_vm_writev__pidns_translation_DEPENDENCIES = libtests.a
 pselect6_SOURCES = pselect6.c
 pselect6_OBJECTS = pselect6.$(OBJEXT)
 pselect6_LDADD = $(LDADD)
@@ -2173,10 +3034,18 @@ reboot_SOURCES = reboot.c
 reboot_OBJECTS = reboot.$(OBJEXT)
 reboot_LDADD = $(LDADD)
 reboot_DEPENDENCIES = libtests.a
+recv_MSG_TRUNC_SOURCES = recv-MSG_TRUNC.c
+recv_MSG_TRUNC_OBJECTS = recv-MSG_TRUNC.$(OBJEXT)
+recv_MSG_TRUNC_LDADD = $(LDADD)
+recv_MSG_TRUNC_DEPENDENCIES = libtests.a
 recvfrom_SOURCES = recvfrom.c
 recvfrom_OBJECTS = recvfrom.$(OBJEXT)
 recvfrom_LDADD = $(LDADD)
 recvfrom_DEPENDENCIES = libtests.a
+recvfrom_MSG_TRUNC_SOURCES = recvfrom-MSG_TRUNC.c
+recvfrom_MSG_TRUNC_OBJECTS = recvfrom-MSG_TRUNC.$(OBJEXT)
+recvfrom_MSG_TRUNC_LDADD = $(LDADD)
+recvfrom_MSG_TRUNC_DEPENDENCIES = libtests.a
 recvmmsg_timeout_SOURCES = recvmmsg-timeout.c
 recvmmsg_timeout_OBJECTS = recvmmsg-timeout.$(OBJEXT)
 recvmmsg_timeout_LDADD = $(LDADD)
@@ -2250,6 +3119,12 @@ rt_sigqueueinfo_SOURCES = rt_sigqueueinfo.c
 rt_sigqueueinfo_OBJECTS = rt_sigqueueinfo.$(OBJEXT)
 rt_sigqueueinfo_LDADD = $(LDADD)
 rt_sigqueueinfo_DEPENDENCIES = libtests.a
+rt_sigqueueinfo__pidns_translation_SOURCES =  \
+       rt_sigqueueinfo--pidns-translation.c
+rt_sigqueueinfo__pidns_translation_OBJECTS =  \
+       rt_sigqueueinfo--pidns-translation.$(OBJEXT)
+rt_sigqueueinfo__pidns_translation_LDADD = $(LDADD)
+rt_sigqueueinfo__pidns_translation_DEPENDENCIES = libtests.a
 rt_sigreturn_SOURCES = rt_sigreturn.c
 rt_sigreturn_OBJECTS = rt_sigreturn.$(OBJEXT)
 rt_sigreturn_LDADD = $(LDADD)
@@ -2266,6 +3141,12 @@ rt_tgsigqueueinfo_SOURCES = rt_tgsigqueueinfo.c
 rt_tgsigqueueinfo_OBJECTS = rt_tgsigqueueinfo.$(OBJEXT)
 rt_tgsigqueueinfo_LDADD = $(LDADD)
 rt_tgsigqueueinfo_DEPENDENCIES = libtests.a
+rt_tgsigqueueinfo__pidns_translation_SOURCES =  \
+       rt_tgsigqueueinfo--pidns-translation.c
+rt_tgsigqueueinfo__pidns_translation_OBJECTS =  \
+       rt_tgsigqueueinfo--pidns-translation.$(OBJEXT)
+rt_tgsigqueueinfo__pidns_translation_LDADD = $(LDADD)
+rt_tgsigqueueinfo__pidns_translation_DEPENDENCIES = libtests.a
 run_expect_termsig_SOURCES = run_expect_termsig.c
 run_expect_termsig_OBJECTS = run_expect_termsig.$(OBJEXT)
 run_expect_termsig_LDADD = $(LDADD)
@@ -2306,18 +3187,42 @@ sched_xetaffinity_SOURCES = sched_xetaffinity.c
 sched_xetaffinity_OBJECTS = sched_xetaffinity.$(OBJEXT)
 sched_xetaffinity_LDADD = $(LDADD)
 sched_xetaffinity_DEPENDENCIES = libtests.a
+sched_xetaffinity__pidns_translation_SOURCES =  \
+       sched_xetaffinity--pidns-translation.c
+sched_xetaffinity__pidns_translation_OBJECTS =  \
+       sched_xetaffinity--pidns-translation.$(OBJEXT)
+sched_xetaffinity__pidns_translation_LDADD = $(LDADD)
+sched_xetaffinity__pidns_translation_DEPENDENCIES = libtests.a
 sched_xetattr_SOURCES = sched_xetattr.c
 sched_xetattr_OBJECTS = sched_xetattr.$(OBJEXT)
 sched_xetattr_LDADD = $(LDADD)
 sched_xetattr_DEPENDENCIES = libtests.a
+sched_xetattr__pidns_translation_SOURCES =  \
+       sched_xetattr--pidns-translation.c
+sched_xetattr__pidns_translation_OBJECTS =  \
+       sched_xetattr--pidns-translation.$(OBJEXT)
+sched_xetattr__pidns_translation_LDADD = $(LDADD)
+sched_xetattr__pidns_translation_DEPENDENCIES = libtests.a
 sched_xetparam_SOURCES = sched_xetparam.c
 sched_xetparam_OBJECTS = sched_xetparam.$(OBJEXT)
 sched_xetparam_LDADD = $(LDADD)
 sched_xetparam_DEPENDENCIES = libtests.a
+sched_xetparam__pidns_translation_SOURCES =  \
+       sched_xetparam--pidns-translation.c
+sched_xetparam__pidns_translation_OBJECTS =  \
+       sched_xetparam--pidns-translation.$(OBJEXT)
+sched_xetparam__pidns_translation_LDADD = $(LDADD)
+sched_xetparam__pidns_translation_DEPENDENCIES = libtests.a
 sched_xetscheduler_SOURCES = sched_xetscheduler.c
 sched_xetscheduler_OBJECTS = sched_xetscheduler.$(OBJEXT)
 sched_xetscheduler_LDADD = $(LDADD)
 sched_xetscheduler_DEPENDENCIES = libtests.a
+sched_xetscheduler__pidns_translation_SOURCES =  \
+       sched_xetscheduler--pidns-translation.c
+sched_xetscheduler__pidns_translation_OBJECTS =  \
+       sched_xetscheduler--pidns-translation.$(OBJEXT)
+sched_xetscheduler__pidns_translation_LDADD = $(LDADD)
+sched_xetscheduler__pidns_translation_DEPENDENCIES = libtests.a
 sched_yield_SOURCES = sched_yield.c
 sched_yield_OBJECTS = sched_yield.$(OBJEXT)
 sched_yield_LDADD = $(LDADD)
@@ -2354,6 +3259,14 @@ semop_SOURCES = semop.c
 semop_OBJECTS = semop.$(OBJEXT)
 semop_LDADD = $(LDADD)
 semop_DEPENDENCIES = libtests.a
+semop_indirect_SOURCES = semop-indirect.c
+semop_indirect_OBJECTS = semop-indirect.$(OBJEXT)
+semop_indirect_LDADD = $(LDADD)
+semop_indirect_DEPENDENCIES = libtests.a
+semtimedop_SOURCES = semtimedop.c
+semtimedop_OBJECTS = semtimedop.$(OBJEXT)
+semtimedop_LDADD = $(LDADD)
+semtimedop_DEPENDENCIES = libtests.a
 sendfile_SOURCES = sendfile.c
 sendfile_OBJECTS = sendfile.$(OBJEXT)
 sendfile_LDADD = $(LDADD)
@@ -2366,6 +3279,18 @@ set_mempolicy_SOURCES = set_mempolicy.c
 set_mempolicy_OBJECTS = set_mempolicy.$(OBJEXT)
 set_mempolicy_LDADD = $(LDADD)
 set_mempolicy_DEPENDENCIES = libtests.a
+set_mempolicy_Xabbrev_SOURCES = set_mempolicy-Xabbrev.c
+set_mempolicy_Xabbrev_OBJECTS = set_mempolicy-Xabbrev.$(OBJEXT)
+set_mempolicy_Xabbrev_LDADD = $(LDADD)
+set_mempolicy_Xabbrev_DEPENDENCIES = libtests.a
+set_mempolicy_Xraw_SOURCES = set_mempolicy-Xraw.c
+set_mempolicy_Xraw_OBJECTS = set_mempolicy-Xraw.$(OBJEXT)
+set_mempolicy_Xraw_LDADD = $(LDADD)
+set_mempolicy_Xraw_DEPENDENCIES = libtests.a
+set_mempolicy_Xverbose_SOURCES = set_mempolicy-Xverbose.c
+set_mempolicy_Xverbose_OBJECTS = set_mempolicy-Xverbose.$(OBJEXT)
+set_mempolicy_Xverbose_LDADD = $(LDADD)
+set_mempolicy_Xverbose_DEPENDENCIES = libtests.a
 set_ptracer_any_SOURCES = set_ptracer_any.c
 set_ptracer_any_OBJECTS = set_ptracer_any.$(OBJEXT)
 set_ptracer_any_LDADD = $(LDADD)
@@ -2422,6 +3347,10 @@ setns_SOURCES = setns.c
 setns_OBJECTS = setns.$(OBJEXT)
 setns_LDADD = $(LDADD)
 setns_DEPENDENCIES = libtests.a
+setpgrp_exec_SOURCES = setpgrp-exec.c
+setpgrp_exec_OBJECTS = setpgrp-exec.$(OBJEXT)
+setpgrp_exec_LDADD = $(LDADD)
+setpgrp_exec_DEPENDENCIES = libtests.a
 setregid_SOURCES = setregid.c
 setregid_OBJECTS = setregid.$(OBJEXT)
 setregid_LDADD = $(LDADD)
@@ -2506,6 +3435,12 @@ signal_receive_SOURCES = signal_receive.c
 signal_receive_OBJECTS = signal_receive.$(OBJEXT)
 signal_receive_LDADD = $(LDADD)
 signal_receive_DEPENDENCIES = libtests.a
+signal_receive__pidns_translation_SOURCES =  \
+       signal_receive--pidns-translation.c
+signal_receive__pidns_translation_OBJECTS =  \
+       signal_receive--pidns-translation.$(OBJEXT)
+signal_receive__pidns_translation_LDADD = $(LDADD)
+signal_receive__pidns_translation_DEPENDENCIES = libtests.a
 signalfd4_SOURCES = signalfd4.c
 signalfd4_OBJECTS = signalfd4.$(OBJEXT)
 signalfd4_LDADD = $(LDADD)
@@ -2542,6 +3477,12 @@ so_peercred_SOURCES = so_peercred.c
 so_peercred_OBJECTS = so_peercred.$(OBJEXT)
 so_peercred_LDADD = $(LDADD)
 so_peercred_DEPENDENCIES = libtests.a
+so_peercred__pidns_translation_SOURCES =  \
+       so_peercred--pidns-translation.c
+so_peercred__pidns_translation_OBJECTS =  \
+       so_peercred--pidns-translation.$(OBJEXT)
+so_peercred__pidns_translation_LDADD = $(LDADD)
+so_peercred__pidns_translation_DEPENDENCIES = libtests.a
 so_peercred_Xabbrev_SOURCES = so_peercred-Xabbrev.c
 so_peercred_Xabbrev_OBJECTS = so_peercred-Xabbrev.$(OBJEXT)
 so_peercred_Xabbrev_LDADD = $(LDADD)
@@ -2604,6 +3545,12 @@ am_stack_fcall_OBJECTS = stack-fcall.$(OBJEXT) stack-fcall-0.$(OBJEXT) \
 stack_fcall_OBJECTS = $(am_stack_fcall_OBJECTS)
 stack_fcall_LDADD = $(LDADD)
 stack_fcall_DEPENDENCIES = libtests.a
+am_stack_fcall_attach_OBJECTS = stack-fcall-attach.$(OBJEXT) \
+       stack-fcall-0.$(OBJEXT) stack-fcall-1.$(OBJEXT) \
+       stack-fcall-2.$(OBJEXT) stack-fcall-3.$(OBJEXT)
+stack_fcall_attach_OBJECTS = $(am_stack_fcall_attach_OBJECTS)
+stack_fcall_attach_LDADD = $(LDADD)
+stack_fcall_attach_DEPENDENCIES = libtests.a
 am_stack_fcall_mangled_OBJECTS = stack-fcall-mangled.$(OBJEXT) \
        stack-fcall-mangled-0.$(OBJEXT) \
        stack-fcall-mangled-1.$(OBJEXT) \
@@ -2628,10 +3575,84 @@ statfs64_SOURCES = statfs64.c
 statfs64_OBJECTS = statfs64.$(OBJEXT)
 statfs64_LDADD = $(LDADD)
 statfs64_DEPENDENCIES = libtests.a
+status_all_SOURCES = status-all.c
+status_all_OBJECTS = status-all.$(OBJEXT)
+status_all_LDADD = $(LDADD)
+status_all_DEPENDENCIES = libtests.a
+status_failed_SOURCES = status-failed.c
+status_failed_OBJECTS = status-failed.$(OBJEXT)
+status_failed_LDADD = $(LDADD)
+status_failed_DEPENDENCIES = libtests.a
+status_failed_long_SOURCES = status-failed-long.c
+status_failed_long_OBJECTS = status-failed-long.$(OBJEXT)
+status_failed_long_LDADD = $(LDADD)
+status_failed_long_DEPENDENCIES = libtests.a
+status_failed_status_SOURCES = status-failed-status.c
+status_failed_status_OBJECTS = status-failed-status.$(OBJEXT)
+status_failed_status_LDADD = $(LDADD)
+status_failed_status_DEPENDENCIES = libtests.a
+status_none_SOURCES = status-none.c
+status_none_OBJECTS = status-none.$(OBJEXT)
+status_none_LDADD = $(LDADD)
+status_none_DEPENDENCIES = libtests.a
+status_none_f_SOURCES = status-none-f.c
+status_none_f_OBJECTS = status-none-f.$(OBJEXT)
+status_none_f_LDADD = $(LDADD)
+status_none_f_DEPENDENCIES = libtests.a
+status_none_threads_SOURCES = status-none-threads.c
+status_none_threads_OBJECTS = status-none-threads.$(OBJEXT)
+status_none_threads_DEPENDENCIES = $(LDADD)
+status_successful_SOURCES = status-successful.c
+status_successful_OBJECTS = status-successful.$(OBJEXT)
+status_successful_LDADD = $(LDADD)
+status_successful_DEPENDENCIES = libtests.a
+status_successful_long_SOURCES = status-successful-long.c
+status_successful_long_OBJECTS = status-successful-long.$(OBJEXT)
+status_successful_long_LDADD = $(LDADD)
+status_successful_long_DEPENDENCIES = libtests.a
+status_successful_status_SOURCES = status-successful-status.c
+status_successful_status_OBJECTS = status-successful-status.$(OBJEXT)
+status_successful_status_LDADD = $(LDADD)
+status_successful_status_DEPENDENCIES = libtests.a
+status_unfinished_SOURCES = status-unfinished.c
+status_unfinished_OBJECTS = status-unfinished.$(OBJEXT)
+status_unfinished_LDADD = $(LDADD)
+status_unfinished_DEPENDENCIES = libtests.a
+status_unfinished_threads_SOURCES = status-unfinished-threads.c
+status_unfinished_threads_OBJECTS =  \
+       status-unfinished-threads.$(OBJEXT)
+status_unfinished_threads_DEPENDENCIES = $(LDADD)
 statx_SOURCES = statx.c
 statx_OBJECTS = statx.$(OBJEXT)
 statx_LDADD = $(LDADD)
 statx_DEPENDENCIES = libtests.a
+strace__strings_in_hex_SOURCES = strace--strings-in-hex.c
+strace__strings_in_hex_OBJECTS = strace--strings-in-hex.$(OBJEXT)
+strace__strings_in_hex_LDADD = $(LDADD)
+strace__strings_in_hex_DEPENDENCIES = libtests.a
+strace__strings_in_hex_all_SOURCES = strace--strings-in-hex-all.c
+strace__strings_in_hex_all_OBJECTS =  \
+       strace--strings-in-hex-all.$(OBJEXT)
+strace__strings_in_hex_all_LDADD = $(LDADD)
+strace__strings_in_hex_all_DEPENDENCIES = libtests.a
+strace__strings_in_hex_non_ascii_SOURCES =  \
+       strace--strings-in-hex-non-ascii.c
+strace__strings_in_hex_non_ascii_OBJECTS =  \
+       strace--strings-in-hex-non-ascii.$(OBJEXT)
+strace__strings_in_hex_non_ascii_LDADD = $(LDADD)
+strace__strings_in_hex_non_ascii_DEPENDENCIES = libtests.a
+strace_n_SOURCES = strace-n.c
+strace_n_OBJECTS = strace-n.$(OBJEXT)
+strace_n_LDADD = $(LDADD)
+strace_n_DEPENDENCIES = libtests.a
+strace_x_SOURCES = strace-x.c
+strace_x_OBJECTS = strace-x.$(OBJEXT)
+strace_x_LDADD = $(LDADD)
+strace_x_DEPENDENCIES = libtests.a
+strace_xx_SOURCES = strace-xx.c
+strace_xx_OBJECTS = strace-xx.$(OBJEXT)
+strace_xx_LDADD = $(LDADD)
+strace_xx_DEPENDENCIES = libtests.a
 swap_SOURCES = swap.c
 swap_OBJECTS = swap.$(OBJEXT)
 swap_LDADD = $(LDADD)
@@ -2668,13 +3689,41 @@ syslog_SOURCES = syslog.c
 syslog_OBJECTS = syslog.$(OBJEXT)
 syslog_LDADD = $(LDADD)
 syslog_DEPENDENCIES = libtests.a
+syslog_success_SOURCES = syslog-success.c
+syslog_success_OBJECTS = syslog-success.$(OBJEXT)
+syslog_success_LDADD = $(LDADD)
+syslog_success_DEPENDENCIES = libtests.a
 tee_SOURCES = tee.c
 tee_OBJECTS = tee.$(OBJEXT)
 tee_LDADD = $(LDADD)
 tee_DEPENDENCIES = libtests.a
+tgkill_SOURCES = tgkill.c
+tgkill_OBJECTS = tgkill.$(OBJEXT)
+tgkill_LDADD = $(LDADD)
+tgkill_DEPENDENCIES = libtests.a
+tgkill__pidns_translation_SOURCES = tgkill--pidns-translation.c
+tgkill__pidns_translation_OBJECTS =  \
+       tgkill--pidns-translation.$(OBJEXT)
+tgkill__pidns_translation_LDADD = $(LDADD)
+tgkill__pidns_translation_DEPENDENCIES = libtests.a
 threads_execve_SOURCES = threads-execve.c
 threads_execve_OBJECTS = threads-execve.$(OBJEXT)
 threads_execve_DEPENDENCIES = $(am__DEPENDENCIES_1) $(LDADD)
+threads_execve__quiet_thread_execve_SOURCES =  \
+       threads-execve--quiet-thread-execve.c
+threads_execve__quiet_thread_execve_OBJECTS =  \
+       threads-execve--quiet-thread-execve.$(OBJEXT)
+threads_execve__quiet_thread_execve_DEPENDENCIES =  \
+       $(am__DEPENDENCIES_1) $(LDADD)
+threads_execve_q_SOURCES = threads-execve-q.c
+threads_execve_q_OBJECTS = threads-execve-q.$(OBJEXT)
+threads_execve_q_DEPENDENCIES = $(am__DEPENDENCIES_1) $(LDADD)
+threads_execve_qq_SOURCES = threads-execve-qq.c
+threads_execve_qq_OBJECTS = threads-execve-qq.$(OBJEXT)
+threads_execve_qq_DEPENDENCIES = $(am__DEPENDENCIES_1) $(LDADD)
+threads_execve_qqq_SOURCES = threads-execve-qqq.c
+threads_execve_qqq_OBJECTS = threads-execve-qqq.$(OBJEXT)
+threads_execve_qqq_DEPENDENCIES = $(am__DEPENDENCIES_1) $(LDADD)
 time_SOURCES = time.c
 time_OBJECTS = time.$(OBJEXT)
 time_LDADD = $(LDADD)
@@ -2698,6 +3747,24 @@ times_fail_SOURCES = times-fail.c
 times_fail_OBJECTS = times-fail.$(OBJEXT)
 times_fail_LDADD = $(LDADD)
 times_fail_DEPENDENCIES = libtests.a
+tkill_SOURCES = tkill.c
+tkill_OBJECTS = tkill.$(OBJEXT)
+tkill_LDADD = $(LDADD)
+tkill_DEPENDENCIES = libtests.a
+tkill__pidns_translation_SOURCES = tkill--pidns-translation.c
+tkill__pidns_translation_OBJECTS = tkill--pidns-translation.$(OBJEXT)
+tkill__pidns_translation_LDADD = $(LDADD)
+tkill__pidns_translation_DEPENDENCIES = libtests.a
+tracer_ppid_pgid_sid_SOURCES = tracer_ppid_pgid_sid.c
+tracer_ppid_pgid_sid_OBJECTS = tracer_ppid_pgid_sid.$(OBJEXT)
+tracer_ppid_pgid_sid_LDADD = $(LDADD)
+tracer_ppid_pgid_sid_DEPENDENCIES = libtests.a
+am_trie_test_OBJECTS = trie_test-trie_test.$(OBJEXT) \
+       trie_test-trie_for_tests.$(OBJEXT)
+trie_test_OBJECTS = $(am_trie_test_OBJECTS)
+trie_test_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_1)
+trie_test_LINK = $(CCLD) $(trie_test_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+       $(LDFLAGS) -o $@
 truncate_SOURCES = truncate.c
 truncate_OBJECTS = truncate.$(OBJEXT)
 truncate_LDADD = $(LDADD)
@@ -2746,6 +3813,14 @@ umovestr3_SOURCES = umovestr3.c
 umovestr3_OBJECTS = umovestr3.$(OBJEXT)
 umovestr3_LDADD = $(LDADD)
 umovestr3_DEPENDENCIES = libtests.a
+umovestr_cached_SOURCES = umovestr_cached.c
+umovestr_cached_OBJECTS = umovestr_cached.$(OBJEXT)
+umovestr_cached_LDADD = $(LDADD)
+umovestr_cached_DEPENDENCIES = libtests.a
+umovestr_cached_adjacent_SOURCES = umovestr_cached_adjacent.c
+umovestr_cached_adjacent_OBJECTS = umovestr_cached_adjacent.$(OBJEXT)
+umovestr_cached_adjacent_LDADD = $(LDADD)
+umovestr_cached_adjacent_DEPENDENCIES = libtests.a
 uname_SOURCES = uname.c
 uname_OBJECTS = uname.$(OBJEXT)
 uname_LDADD = $(LDADD)
@@ -2851,6 +3926,12 @@ xet_robust_list_SOURCES = xet_robust_list.c
 xet_robust_list_OBJECTS = xet_robust_list.$(OBJEXT)
 xet_robust_list_LDADD = $(LDADD)
 xet_robust_list_DEPENDENCIES = libtests.a
+xet_robust_list__pidns_translation_SOURCES =  \
+       xet_robust_list--pidns-translation.c
+xet_robust_list__pidns_translation_OBJECTS =  \
+       xet_robust_list--pidns-translation.$(OBJEXT)
+xet_robust_list__pidns_translation_LDADD = $(LDADD)
+xet_robust_list__pidns_translation_DEPENDENCIES = libtests.a
 xet_thread_area_x86_SOURCES = xet_thread_area_x86.c
 xet_thread_area_x86_OBJECTS = xet_thread_area_x86.$(OBJEXT)
 xet_thread_area_x86_LDADD = $(LDADD)
@@ -2863,10 +3944,21 @@ xetpgid_SOURCES = xetpgid.c
 xetpgid_OBJECTS = xetpgid.$(OBJEXT)
 xetpgid_LDADD = $(LDADD)
 xetpgid_DEPENDENCIES = libtests.a
+xetpgid__pidns_translation_SOURCES = xetpgid--pidns-translation.c
+xetpgid__pidns_translation_OBJECTS =  \
+       xetpgid--pidns-translation.$(OBJEXT)
+xetpgid__pidns_translation_LDADD = $(LDADD)
+xetpgid__pidns_translation_DEPENDENCIES = libtests.a
 xetpriority_SOURCES = xetpriority.c
 xetpriority_OBJECTS = xetpriority.$(OBJEXT)
 xetpriority_LDADD = $(LDADD)
 xetpriority_DEPENDENCIES = libtests.a
+xetpriority__pidns_translation_SOURCES =  \
+       xetpriority--pidns-translation.c
+xetpriority__pidns_translation_OBJECTS =  \
+       xetpriority--pidns-translation.$(OBJEXT)
+xetpriority__pidns_translation_LDADD = $(LDADD)
+xetpriority__pidns_translation_DEPENDENCIES = libtests.a
 xettimeofday_SOURCES = xettimeofday.c
 xettimeofday_OBJECTS = xettimeofday.$(OBJEXT)
 xettimeofday_LDADD = $(LDADD)
@@ -2900,29 +3992,55 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/attach-f-p.Po ./$(DEPDIR)/attach-p-cmd-cmd.Po \
        ./$(DEPDIR)/attach-p-cmd-p.Po \
        ./$(DEPDIR)/block_reset_raise_run.Po \
+       ./$(DEPDIR)/block_reset_run.Po \
        ./$(DEPDIR)/bpf-obj_get_info_by_fd-prog-v.Po \
        ./$(DEPDIR)/bpf-obj_get_info_by_fd-prog.Po \
        ./$(DEPDIR)/bpf-obj_get_info_by_fd-v.Po \
        ./$(DEPDIR)/bpf-obj_get_info_by_fd.Po \
-       ./$(DEPDIR)/bpf-success-v.Po ./$(DEPDIR)/bpf-success.Po \
-       ./$(DEPDIR)/bpf-v.Po ./$(DEPDIR)/bpf.Po ./$(DEPDIR)/brk.Po \
-       ./$(DEPDIR)/btrfs.Po ./$(DEPDIR)/caps-abbrev.Po \
-       ./$(DEPDIR)/caps.Po ./$(DEPDIR)/check_sigblock.Po \
-       ./$(DEPDIR)/check_sigign.Po ./$(DEPDIR)/chmod.Po \
-       ./$(DEPDIR)/chown.Po ./$(DEPDIR)/chown32.Po \
-       ./$(DEPDIR)/chroot.Po ./$(DEPDIR)/clock_adjtime.Po \
-       ./$(DEPDIR)/clock_nanosleep.Po ./$(DEPDIR)/clock_xettime.Po \
-       ./$(DEPDIR)/clone_parent.Po ./$(DEPDIR)/clone_ptrace.Po \
-       ./$(DEPDIR)/copy_file_range.Po ./$(DEPDIR)/count-f.Po \
-       ./$(DEPDIR)/creat.Po ./$(DEPDIR)/delay.Po \
-       ./$(DEPDIR)/delete_module.Po ./$(DEPDIR)/dev-yy.Po \
-       ./$(DEPDIR)/dup.Po ./$(DEPDIR)/dup2.Po ./$(DEPDIR)/dup3.Po \
-       ./$(DEPDIR)/epoll_create.Po ./$(DEPDIR)/epoll_create1.Po \
-       ./$(DEPDIR)/epoll_ctl.Po ./$(DEPDIR)/epoll_pwait.Po \
-       ./$(DEPDIR)/epoll_wait.Po ./$(DEPDIR)/erestartsys.Po \
-       ./$(DEPDIR)/eventfd.Po ./$(DEPDIR)/execve-v.Po \
-       ./$(DEPDIR)/execve.Po ./$(DEPDIR)/execveat-v.Po \
-       ./$(DEPDIR)/execveat.Po ./$(DEPDIR)/faccessat.Po \
+       ./$(DEPDIR)/bpf-success-long-y.Po ./$(DEPDIR)/bpf-success-v.Po \
+       ./$(DEPDIR)/bpf-success.Po ./$(DEPDIR)/bpf-v.Po \
+       ./$(DEPDIR)/bpf.Po ./$(DEPDIR)/brk.Po ./$(DEPDIR)/btrfs.Po \
+       ./$(DEPDIR)/caps-abbrev.Po ./$(DEPDIR)/caps.Po \
+       ./$(DEPDIR)/check_sigblock.Po ./$(DEPDIR)/check_sigign.Po \
+       ./$(DEPDIR)/chmod.Po ./$(DEPDIR)/chown.Po \
+       ./$(DEPDIR)/chown32.Po ./$(DEPDIR)/chroot.Po \
+       ./$(DEPDIR)/clock_adjtime.Po ./$(DEPDIR)/clock_nanosleep.Po \
+       ./$(DEPDIR)/clock_xettime.Po ./$(DEPDIR)/clone-flags.Po \
+       ./$(DEPDIR)/clone3-Xabbrev.Po ./$(DEPDIR)/clone3-Xraw.Po \
+       ./$(DEPDIR)/clone3-Xverbose.Po \
+       ./$(DEPDIR)/clone3-success-Xabbrev.Po \
+       ./$(DEPDIR)/clone3-success-Xraw.Po \
+       ./$(DEPDIR)/clone3-success-Xverbose.Po \
+       ./$(DEPDIR)/clone3-success.Po ./$(DEPDIR)/clone3.Po \
+       ./$(DEPDIR)/clone_parent--quiet-exit.Po \
+       ./$(DEPDIR)/clone_parent-q.Po ./$(DEPDIR)/clone_parent-qq.Po \
+       ./$(DEPDIR)/clone_parent.Po \
+       ./$(DEPDIR)/clone_ptrace--quiet-attach.Po \
+       ./$(DEPDIR)/clone_ptrace--quiet-exit.Po \
+       ./$(DEPDIR)/clone_ptrace-q.Po ./$(DEPDIR)/clone_ptrace-qq.Po \
+       ./$(DEPDIR)/clone_ptrace.Po ./$(DEPDIR)/close_range-P.Po \
+       ./$(DEPDIR)/close_range-y.Po ./$(DEPDIR)/close_range-yy.Po \
+       ./$(DEPDIR)/close_range.Po ./$(DEPDIR)/copy_file_range.Po \
+       ./$(DEPDIR)/count-f.Po ./$(DEPDIR)/creat.Po \
+       ./$(DEPDIR)/delay.Po ./$(DEPDIR)/delete_module.Po \
+       ./$(DEPDIR)/dev--decode-fds-dev.Po \
+       ./$(DEPDIR)/dev--decode-fds-path.Po \
+       ./$(DEPDIR)/dev--decode-fds-socket.Po ./$(DEPDIR)/dev-yy.Po \
+       ./$(DEPDIR)/dup-P.Po ./$(DEPDIR)/dup-y.Po \
+       ./$(DEPDIR)/dup-yy.Po ./$(DEPDIR)/dup.Po ./$(DEPDIR)/dup2-P.Po \
+       ./$(DEPDIR)/dup2-y.Po ./$(DEPDIR)/dup2-yy.Po \
+       ./$(DEPDIR)/dup2.Po ./$(DEPDIR)/dup3-P.Po \
+       ./$(DEPDIR)/dup3-y.Po ./$(DEPDIR)/dup3-yy.Po \
+       ./$(DEPDIR)/dup3.Po ./$(DEPDIR)/epoll_create.Po \
+       ./$(DEPDIR)/epoll_create1.Po ./$(DEPDIR)/epoll_ctl.Po \
+       ./$(DEPDIR)/epoll_pwait.Po ./$(DEPDIR)/epoll_wait.Po \
+       ./$(DEPDIR)/erestartsys.Po ./$(DEPDIR)/eventfd.Po \
+       ./$(DEPDIR)/execve-v.Po ./$(DEPDIR)/execve.Po \
+       ./$(DEPDIR)/execveat-v.Po ./$(DEPDIR)/execveat.Po \
+       ./$(DEPDIR)/faccessat-P.Po ./$(DEPDIR)/faccessat-y.Po \
+       ./$(DEPDIR)/faccessat-yy.Po ./$(DEPDIR)/faccessat.Po \
+       ./$(DEPDIR)/faccessat2-P.Po ./$(DEPDIR)/faccessat2-y.Po \
+       ./$(DEPDIR)/faccessat2-yy.Po ./$(DEPDIR)/faccessat2.Po \
        ./$(DEPDIR)/fadvise64.Po ./$(DEPDIR)/fadvise64_64.Po \
        ./$(DEPDIR)/fallocate.Po ./$(DEPDIR)/fanotify_init.Po \
        ./$(DEPDIR)/fanotify_mark-Xabbrev.Po \
@@ -2931,12 +4049,19 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/fanotify_mark.Po ./$(DEPDIR)/fchdir.Po \
        ./$(DEPDIR)/fchmod.Po ./$(DEPDIR)/fchmodat.Po \
        ./$(DEPDIR)/fchown.Po ./$(DEPDIR)/fchown32.Po \
-       ./$(DEPDIR)/fchownat.Po ./$(DEPDIR)/fcntl.Po \
+       ./$(DEPDIR)/fchownat.Po \
+       ./$(DEPDIR)/fcntl--pidns-translation.Po ./$(DEPDIR)/fcntl.Po \
+       ./$(DEPDIR)/fcntl64--pidns-translation.Po \
        ./$(DEPDIR)/fcntl64.Po ./$(DEPDIR)/fdatasync.Po \
        ./$(DEPDIR)/fflush.Po ./$(DEPDIR)/file_handle.Po \
        ./$(DEPDIR)/file_ioctl.Po ./$(DEPDIR)/filter-unavailable.Po \
-       ./$(DEPDIR)/finit_module.Po ./$(DEPDIR)/flock.Po \
-       ./$(DEPDIR)/fork-f.Po ./$(DEPDIR)/fstat-Xabbrev.Po \
+       ./$(DEPDIR)/filter_seccomp-flag.Po \
+       ./$(DEPDIR)/filter_seccomp-perf.Po ./$(DEPDIR)/finit_module.Po \
+       ./$(DEPDIR)/flock.Po ./$(DEPDIR)/fork--pidns-translation.Po \
+       ./$(DEPDIR)/fork-f.Po ./$(DEPDIR)/fsconfig-P.Po \
+       ./$(DEPDIR)/fsconfig.Po ./$(DEPDIR)/fsmount.Po \
+       ./$(DEPDIR)/fsopen.Po ./$(DEPDIR)/fspick-P.Po \
+       ./$(DEPDIR)/fspick.Po ./$(DEPDIR)/fstat-Xabbrev.Po \
        ./$(DEPDIR)/fstat-Xraw.Po ./$(DEPDIR)/fstat-Xverbose.Po \
        ./$(DEPDIR)/fstat.Po ./$(DEPDIR)/fstat64-Xabbrev.Po \
        ./$(DEPDIR)/fstat64-Xraw.Po ./$(DEPDIR)/fstat64-Xverbose.Po \
@@ -2946,30 +4071,66 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/fsync.Po ./$(DEPDIR)/ftruncate.Po \
        ./$(DEPDIR)/ftruncate64-ftruncate64.Po ./$(DEPDIR)/futex.Po \
        ./$(DEPDIR)/futimesat.Po ./$(DEPDIR)/get_mempolicy.Po \
-       ./$(DEPDIR)/getcpu.Po ./$(DEPDIR)/getcwd.Po \
-       ./$(DEPDIR)/getdents.Po ./$(DEPDIR)/getdents64.Po \
-       ./$(DEPDIR)/getegid.Po ./$(DEPDIR)/getegid32.Po \
-       ./$(DEPDIR)/geteuid.Po ./$(DEPDIR)/geteuid32.Po \
-       ./$(DEPDIR)/getgid.Po ./$(DEPDIR)/getgid32.Po \
-       ./$(DEPDIR)/getgroups.Po ./$(DEPDIR)/getgroups32.Po \
-       ./$(DEPDIR)/getpeername.Po ./$(DEPDIR)/getpgrp.Po \
-       ./$(DEPDIR)/getpid.Po ./$(DEPDIR)/getppid.Po \
-       ./$(DEPDIR)/getrandom.Po ./$(DEPDIR)/getresgid.Po \
-       ./$(DEPDIR)/getresgid32.Po ./$(DEPDIR)/getresuid.Po \
-       ./$(DEPDIR)/getresuid32.Po ./$(DEPDIR)/getrlimit.Po \
-       ./$(DEPDIR)/getrusage.Po ./$(DEPDIR)/getsid.Po \
-       ./$(DEPDIR)/getsockname.Po ./$(DEPDIR)/gettid.Po \
+       ./$(DEPDIR)/get_process_reaper.Po ./$(DEPDIR)/getcpu.Po \
+       ./$(DEPDIR)/getcwd.Po ./$(DEPDIR)/getdents-v.Po \
+       ./$(DEPDIR)/getdents.Po ./$(DEPDIR)/getdents64-v.Po \
+       ./$(DEPDIR)/getdents64.Po ./$(DEPDIR)/getegid.Po \
+       ./$(DEPDIR)/getegid32.Po ./$(DEPDIR)/geteuid.Po \
+       ./$(DEPDIR)/geteuid32.Po ./$(DEPDIR)/getgid.Po \
+       ./$(DEPDIR)/getgid32.Po ./$(DEPDIR)/getgroups.Po \
+       ./$(DEPDIR)/getgroups32.Po ./$(DEPDIR)/getpeername.Po \
+       ./$(DEPDIR)/getpgrp--pidns-translation.Po \
+       ./$(DEPDIR)/getpgrp.Po \
+       ./$(DEPDIR)/getpid--pidns-translation.Po ./$(DEPDIR)/getpid.Po \
+       ./$(DEPDIR)/getppid.Po ./$(DEPDIR)/getrandom.Po \
+       ./$(DEPDIR)/getresgid.Po ./$(DEPDIR)/getresgid32.Po \
+       ./$(DEPDIR)/getresuid.Po ./$(DEPDIR)/getresuid32.Po \
+       ./$(DEPDIR)/getrlimit.Po ./$(DEPDIR)/getrusage.Po \
+       ./$(DEPDIR)/getsid--pidns-translation.Po ./$(DEPDIR)/getsid.Po \
+       ./$(DEPDIR)/getsockname.Po \
+       ./$(DEPDIR)/gettid--pidns-translation.Po ./$(DEPDIR)/gettid.Po \
        ./$(DEPDIR)/getuid.Po ./$(DEPDIR)/getuid32.Po \
-       ./$(DEPDIR)/getxxid.Po ./$(DEPDIR)/group_req.Po \
+       ./$(DEPDIR)/getxgid.Po ./$(DEPDIR)/getxpid.Po \
+       ./$(DEPDIR)/getxuid.Po ./$(DEPDIR)/group_req.Po \
        ./$(DEPDIR)/inet-cmsg.Po ./$(DEPDIR)/init_module.Po \
        ./$(DEPDIR)/inject-nf.Po ./$(DEPDIR)/inotify.Po \
-       ./$(DEPDIR)/inotify_init1.Po ./$(DEPDIR)/int_0x80.Po \
-       ./$(DEPDIR)/io_uring_enter.Po ./$(DEPDIR)/io_uring_register.Po \
-       ./$(DEPDIR)/io_uring_setup.Po ./$(DEPDIR)/ioctl.Po \
+       ./$(DEPDIR)/inotify_init-y.Po ./$(DEPDIR)/inotify_init.Po \
+       ./$(DEPDIR)/inotify_init1-y.Po ./$(DEPDIR)/inotify_init1.Po \
+       ./$(DEPDIR)/int_0x80.Po ./$(DEPDIR)/io_uring_enter.Po \
+       ./$(DEPDIR)/io_uring_register.Po ./$(DEPDIR)/io_uring_setup.Po \
+       ./$(DEPDIR)/ioctl.Po \
+       ./$(DEPDIR)/ioctl_block--pidns-translation.Po \
        ./$(DEPDIR)/ioctl_block.Po ./$(DEPDIR)/ioctl_dm-v.Po \
-       ./$(DEPDIR)/ioctl_dm.Po ./$(DEPDIR)/ioctl_evdev-success-v.Po \
+       ./$(DEPDIR)/ioctl_dm.Po ./$(DEPDIR)/ioctl_evdev-Xabbrev.Po \
+       ./$(DEPDIR)/ioctl_evdev-Xraw.Po \
+       ./$(DEPDIR)/ioctl_evdev-Xverbose.Po \
+       ./$(DEPDIR)/ioctl_evdev-success-Xabbrev.Po \
+       ./$(DEPDIR)/ioctl_evdev-success-Xraw.Po \
+       ./$(DEPDIR)/ioctl_evdev-success-Xverbose.Po \
+       ./$(DEPDIR)/ioctl_evdev-success-v-Xabbrev.Po \
+       ./$(DEPDIR)/ioctl_evdev-success-v-Xraw.Po \
+       ./$(DEPDIR)/ioctl_evdev-success-v-Xverbose.Po \
+       ./$(DEPDIR)/ioctl_evdev-success-v.Po \
        ./$(DEPDIR)/ioctl_evdev-success.Po \
+       ./$(DEPDIR)/ioctl_evdev-v-Xabbrev.Po \
+       ./$(DEPDIR)/ioctl_evdev-v-Xraw.Po \
+       ./$(DEPDIR)/ioctl_evdev-v-Xverbose.Po \
        ./$(DEPDIR)/ioctl_evdev-v.Po ./$(DEPDIR)/ioctl_evdev.Po \
+       ./$(DEPDIR)/ioctl_hdio-Xabbrev.Po \
+       ./$(DEPDIR)/ioctl_hdio-Xraw.Po \
+       ./$(DEPDIR)/ioctl_hdio-Xverbose.Po \
+       ./$(DEPDIR)/ioctl_hdio-success-Xabbrev.Po \
+       ./$(DEPDIR)/ioctl_hdio-success-Xraw.Po \
+       ./$(DEPDIR)/ioctl_hdio-success-Xverbose.Po \
+       ./$(DEPDIR)/ioctl_hdio-success-v-Xabbrev.Po \
+       ./$(DEPDIR)/ioctl_hdio-success-v-Xraw.Po \
+       ./$(DEPDIR)/ioctl_hdio-success-v-Xverbose.Po \
+       ./$(DEPDIR)/ioctl_hdio-success-v.Po \
+       ./$(DEPDIR)/ioctl_hdio-success.Po \
+       ./$(DEPDIR)/ioctl_hdio-v-Xabbrev.Po \
+       ./$(DEPDIR)/ioctl_hdio-v-Xraw.Po \
+       ./$(DEPDIR)/ioctl_hdio-v-Xverbose.Po \
+       ./$(DEPDIR)/ioctl_hdio-v.Po ./$(DEPDIR)/ioctl_hdio.Po \
        ./$(DEPDIR)/ioctl_inotify.Po ./$(DEPDIR)/ioctl_kvm_run-v.Po \
        ./$(DEPDIR)/ioctl_kvm_run.Po \
        ./$(DEPDIR)/ioctl_kvm_run_auxstr_vcpu.Po \
@@ -2981,21 +4142,38 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/ioctl_rtc-v.Po ./$(DEPDIR)/ioctl_rtc.Po \
        ./$(DEPDIR)/ioctl_scsi.Po ./$(DEPDIR)/ioctl_sg_io_v3.Po \
        ./$(DEPDIR)/ioctl_sg_io_v4.Po \
-       ./$(DEPDIR)/ioctl_sock_gifconf.Po ./$(DEPDIR)/ioctl_uffdio.Po \
-       ./$(DEPDIR)/ioctl_v4l2.Po ./$(DEPDIR)/ioperm.Po \
-       ./$(DEPDIR)/iopl.Po ./$(DEPDIR)/ioprio-Xabbrev.Po \
-       ./$(DEPDIR)/ioprio-Xraw.Po ./$(DEPDIR)/ioprio-Xverbose.Po \
-       ./$(DEPDIR)/ioprio.Po ./$(DEPDIR)/ip_mreq.Po \
-       ./$(DEPDIR)/ipc.Po ./$(DEPDIR)/ipc_msg-Xabbrev.Po \
-       ./$(DEPDIR)/ipc_msg-Xraw.Po ./$(DEPDIR)/ipc_msg-Xverbose.Po \
-       ./$(DEPDIR)/ipc_msg.Po ./$(DEPDIR)/ipc_msgbuf-Xabbrev.Po \
+       ./$(DEPDIR)/ioctl_sock_gifconf.Po ./$(DEPDIR)/ioctl_tee.Po \
+       ./$(DEPDIR)/ioctl_uffdio.Po ./$(DEPDIR)/ioctl_v4l2-Xabbrev.Po \
+       ./$(DEPDIR)/ioctl_v4l2-Xraw.Po \
+       ./$(DEPDIR)/ioctl_v4l2-Xverbose.Po \
+       ./$(DEPDIR)/ioctl_v4l2-success-Xabbrev.Po \
+       ./$(DEPDIR)/ioctl_v4l2-success-Xraw.Po \
+       ./$(DEPDIR)/ioctl_v4l2-success-Xverbose.Po \
+       ./$(DEPDIR)/ioctl_v4l2-success-v-Xabbrev.Po \
+       ./$(DEPDIR)/ioctl_v4l2-success-v-Xraw.Po \
+       ./$(DEPDIR)/ioctl_v4l2-success-v-Xverbose.Po \
+       ./$(DEPDIR)/ioctl_v4l2-success-v.Po \
+       ./$(DEPDIR)/ioctl_v4l2-success.Po \
+       ./$(DEPDIR)/ioctl_v4l2-v-Xabbrev.Po \
+       ./$(DEPDIR)/ioctl_v4l2-v-Xraw.Po \
+       ./$(DEPDIR)/ioctl_v4l2-v-Xverbose.Po \
+       ./$(DEPDIR)/ioctl_v4l2-v.Po ./$(DEPDIR)/ioctl_v4l2.Po \
+       ./$(DEPDIR)/ioctl_watchdog.Po ./$(DEPDIR)/ioperm.Po \
+       ./$(DEPDIR)/iopl.Po ./$(DEPDIR)/ioprio--pidns-translation.Po \
+       ./$(DEPDIR)/ioprio-Xabbrev.Po ./$(DEPDIR)/ioprio-Xraw.Po \
+       ./$(DEPDIR)/ioprio-Xverbose.Po ./$(DEPDIR)/ioprio.Po \
+       ./$(DEPDIR)/ip_mreq.Po ./$(DEPDIR)/ipc.Po \
+       ./$(DEPDIR)/ipc_msg-Xabbrev.Po ./$(DEPDIR)/ipc_msg-Xraw.Po \
+       ./$(DEPDIR)/ipc_msg-Xverbose.Po ./$(DEPDIR)/ipc_msg.Po \
+       ./$(DEPDIR)/ipc_msgbuf-Xabbrev.Po \
        ./$(DEPDIR)/ipc_msgbuf-Xraw.Po \
        ./$(DEPDIR)/ipc_msgbuf-Xverbose.Po ./$(DEPDIR)/ipc_msgbuf.Po \
        ./$(DEPDIR)/ipc_sem-Xabbrev.Po ./$(DEPDIR)/ipc_sem-Xraw.Po \
        ./$(DEPDIR)/ipc_sem-Xverbose.Po ./$(DEPDIR)/ipc_sem.Po \
        ./$(DEPDIR)/ipc_shm-Xabbrev.Po ./$(DEPDIR)/ipc_shm-Xraw.Po \
        ./$(DEPDIR)/ipc_shm-Xverbose.Po ./$(DEPDIR)/ipc_shm.Po \
-       ./$(DEPDIR)/is_linux_mips_n64.Po ./$(DEPDIR)/kcmp-y.Po \
+       ./$(DEPDIR)/is_linux_mips_n64.Po \
+       ./$(DEPDIR)/kcmp-y--pidns-translation.Po ./$(DEPDIR)/kcmp-y.Po \
        ./$(DEPDIR)/kcmp.Po ./$(DEPDIR)/kern_features.Po \
        ./$(DEPDIR)/kernel_version-Xabbrev.Po \
        ./$(DEPDIR)/kernel_version-Xraw.Po \
@@ -3003,10 +4181,12 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/kernel_version.Po ./$(DEPDIR)/kexec_file_load.Po \
        ./$(DEPDIR)/kexec_load.Po ./$(DEPDIR)/keyctl-Xabbrev.Po \
        ./$(DEPDIR)/keyctl-Xraw.Po ./$(DEPDIR)/keyctl-Xverbose.Po \
-       ./$(DEPDIR)/keyctl.Po ./$(DEPDIR)/kill.Po \
-       ./$(DEPDIR)/kill_child.Po ./$(DEPDIR)/ksysent.Po \
-       ./$(DEPDIR)/lchown.Po ./$(DEPDIR)/lchown32.Po \
+       ./$(DEPDIR)/keyctl.Po ./$(DEPDIR)/kill--pidns-translation.Po \
+       ./$(DEPDIR)/kill.Po ./$(DEPDIR)/kill_child.Po \
+       ./$(DEPDIR)/ksysent.Po ./$(DEPDIR)/lchown.Po \
+       ./$(DEPDIR)/lchown32.Po \
        ./$(DEPDIR)/libtests_a-create_nl_socket.Po \
+       ./$(DEPDIR)/libtests_a-create_tmpfile.Po \
        ./$(DEPDIR)/libtests_a-errno2name.Po \
        ./$(DEPDIR)/libtests_a-error_msg.Po \
        ./$(DEPDIR)/libtests_a-fill_memory.Po \
@@ -3018,37 +4198,48 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/libtests_a-inode_of_sockfd.Po \
        ./$(DEPDIR)/libtests_a-libmmsg.Po \
        ./$(DEPDIR)/libtests_a-libsocketcall.Po \
+       ./$(DEPDIR)/libtests_a-lock_file.Po \
        ./$(DEPDIR)/libtests_a-overflowuid.Po \
+       ./$(DEPDIR)/libtests_a-pidns.Po \
        ./$(DEPDIR)/libtests_a-pipe_maxfd.Po \
        ./$(DEPDIR)/libtests_a-print_quoted_string.Po \
        ./$(DEPDIR)/libtests_a-print_time.Po \
        ./$(DEPDIR)/libtests_a-printflags.Po \
-       ./$(DEPDIR)/libtests_a-printxval.Po \
+       ./$(DEPDIR)/libtests_a-printxval-Xabbrev.Po \
+       ./$(DEPDIR)/libtests_a-printxval-Xraw.Po \
+       ./$(DEPDIR)/libtests_a-printxval-Xverbose.Po \
        ./$(DEPDIR)/libtests_a-signal2name.Po \
        ./$(DEPDIR)/libtests_a-skip_unavailable.Po \
        ./$(DEPDIR)/libtests_a-sprintrc.Po \
+       ./$(DEPDIR)/libtests_a-status.Po \
        ./$(DEPDIR)/libtests_a-tail_alloc.Po \
        ./$(DEPDIR)/libtests_a-test_printpath.Po \
        ./$(DEPDIR)/libtests_a-test_printstrn.Po \
        ./$(DEPDIR)/libtests_a-test_ucopy.Po \
-       ./$(DEPDIR)/libtests_a-tprintf.Po ./$(DEPDIR)/link.Po \
-       ./$(DEPDIR)/linkat.Po ./$(DEPDIR)/list_sigaction_signum.Po \
-       ./$(DEPDIR)/llseek.Po ./$(DEPDIR)/localtime.Po \
-       ./$(DEPDIR)/lookup_dcookie.Po ./$(DEPDIR)/looping_threads.Po \
-       ./$(DEPDIR)/lseek.Po ./$(DEPDIR)/lstat.Po \
-       ./$(DEPDIR)/lstat64-lstat64.Po ./$(DEPDIR)/madvise.Po \
-       ./$(DEPDIR)/mbind.Po ./$(DEPDIR)/membarrier.Po \
-       ./$(DEPDIR)/memfd_create-Xabbrev.Po \
+       ./$(DEPDIR)/libtests_a-tprintf.Po \
+       ./$(DEPDIR)/libtests_a-xmalloc_for_tests.Po \
+       ./$(DEPDIR)/link.Po ./$(DEPDIR)/linkat.Po \
+       ./$(DEPDIR)/list_sigaction_signum.Po ./$(DEPDIR)/llseek.Po \
+       ./$(DEPDIR)/localtime.Po ./$(DEPDIR)/lookup_dcookie.Po \
+       ./$(DEPDIR)/looping_threads.Po ./$(DEPDIR)/lseek.Po \
+       ./$(DEPDIR)/lstat.Po ./$(DEPDIR)/lstat64-lstat64.Po \
+       ./$(DEPDIR)/madvise.Po \
+       ./$(DEPDIR)/maybe_switch_current_tcp--quiet-thread-execve.Po \
+       ./$(DEPDIR)/maybe_switch_current_tcp.Po \
+       ./$(DEPDIR)/mbind-Xabbrev.Po ./$(DEPDIR)/mbind-Xraw.Po \
+       ./$(DEPDIR)/mbind-Xverbose.Po ./$(DEPDIR)/mbind.Po \
+       ./$(DEPDIR)/membarrier.Po ./$(DEPDIR)/memfd_create-Xabbrev.Po \
        ./$(DEPDIR)/memfd_create-Xraw.Po \
        ./$(DEPDIR)/memfd_create-Xverbose.Po \
-       ./$(DEPDIR)/memfd_create.Po ./$(DEPDIR)/migrate_pages.Po \
-       ./$(DEPDIR)/mincore.Po ./$(DEPDIR)/mkdir.Po \
-       ./$(DEPDIR)/mkdirat.Po ./$(DEPDIR)/mknod.Po \
-       ./$(DEPDIR)/mknodat.Po ./$(DEPDIR)/mlock.Po \
-       ./$(DEPDIR)/mlock2.Po ./$(DEPDIR)/mlockall.Po \
-       ./$(DEPDIR)/mmap-Xabbrev.Po ./$(DEPDIR)/mmap-Xraw.Po \
-       ./$(DEPDIR)/mmap-Xverbose.Po ./$(DEPDIR)/mmap.Po \
-       ./$(DEPDIR)/mmap64-mmap64.Po \
+       ./$(DEPDIR)/memfd_create.Po \
+       ./$(DEPDIR)/migrate_pages--pidns-translation.Po \
+       ./$(DEPDIR)/migrate_pages.Po ./$(DEPDIR)/mincore.Po \
+       ./$(DEPDIR)/mkdir.Po ./$(DEPDIR)/mkdirat.Po \
+       ./$(DEPDIR)/mknod.Po ./$(DEPDIR)/mknodat.Po \
+       ./$(DEPDIR)/mlock.Po ./$(DEPDIR)/mlock2.Po \
+       ./$(DEPDIR)/mlockall.Po ./$(DEPDIR)/mmap-Xabbrev.Po \
+       ./$(DEPDIR)/mmap-Xraw.Po ./$(DEPDIR)/mmap-Xverbose.Po \
+       ./$(DEPDIR)/mmap.Po ./$(DEPDIR)/mmap64-mmap64.Po \
        ./$(DEPDIR)/mmap64_Xabbrev-mmap64-Xabbrev.Po \
        ./$(DEPDIR)/mmap64_Xraw-mmap64-Xraw.Po \
        ./$(DEPDIR)/mmap64_Xverbose-mmap64-Xverbose.Po \
@@ -3056,24 +4247,34 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/mmsg_name-v.Po ./$(DEPDIR)/mmsg_name.Po \
        ./$(DEPDIR)/modify_ldt.Po ./$(DEPDIR)/mount-Xabbrev.Po \
        ./$(DEPDIR)/mount-Xraw.Po ./$(DEPDIR)/mount-Xverbose.Po \
-       ./$(DEPDIR)/mount.Po ./$(DEPDIR)/move_pages-Xabbrev.Po \
+       ./$(DEPDIR)/mount.Po ./$(DEPDIR)/move_mount-P.Po \
+       ./$(DEPDIR)/move_mount.Po \
+       ./$(DEPDIR)/move_pages--pidns-translation.Po \
+       ./$(DEPDIR)/move_pages-Xabbrev.Po \
        ./$(DEPDIR)/move_pages-Xraw.Po \
        ./$(DEPDIR)/move_pages-Xverbose.Po ./$(DEPDIR)/move_pages.Po \
        ./$(DEPDIR)/mq.Po ./$(DEPDIR)/mq_sendrecv-read.Po \
        ./$(DEPDIR)/mq_sendrecv-write.Po ./$(DEPDIR)/mq_sendrecv.Po \
        ./$(DEPDIR)/msg_control-v.Po ./$(DEPDIR)/msg_control.Po \
        ./$(DEPDIR)/msg_name.Po ./$(DEPDIR)/munlockall.Po \
-       ./$(DEPDIR)/nanosleep.Po ./$(DEPDIR)/net-accept-connect.Po \
+       ./$(DEPDIR)/nanosleep.Po \
+       ./$(DEPDIR)/net--decode-fds-dev-netlink.Po \
+       ./$(DEPDIR)/net--decode-fds-none-netlink.Po \
+       ./$(DEPDIR)/net--decode-fds-path-netlink.Po \
+       ./$(DEPDIR)/net--decode-fds-socket-netlink.Po \
+       ./$(DEPDIR)/net-accept-connect.Po \
        ./$(DEPDIR)/net-icmp_filter.Po \
        ./$(DEPDIR)/net-packet_mreq-Xabbrev.Po \
        ./$(DEPDIR)/net-packet_mreq-Xraw.Po \
        ./$(DEPDIR)/net-packet_mreq-Xverbose.Po \
-       ./$(DEPDIR)/net-packet_mreq.Po ./$(DEPDIR)/net-sockaddr.Po \
-       ./$(DEPDIR)/net-tpacket_req.Po \
+       ./$(DEPDIR)/net-packet_mreq.Po \
+       ./$(DEPDIR)/net-sockaddr--pidns-translation.Po \
+       ./$(DEPDIR)/net-sockaddr.Po ./$(DEPDIR)/net-tpacket_req.Po \
        ./$(DEPDIR)/net-tpacket_stats-success.Po \
        ./$(DEPDIR)/net-tpacket_stats.Po ./$(DEPDIR)/net-y-unix.Po \
        ./$(DEPDIR)/net-yy-inet.Po ./$(DEPDIR)/net-yy-inet6.Po \
        ./$(DEPDIR)/net-yy-netlink.Po ./$(DEPDIR)/net-yy-unix.Po \
+       ./$(DEPDIR)/netlink_audit--pidns-translation.Po \
        ./$(DEPDIR)/netlink_audit.Po ./$(DEPDIR)/netlink_crypto.Po \
        ./$(DEPDIR)/netlink_generic.Po \
        ./$(DEPDIR)/netlink_inet_diag.Po \
@@ -3104,7 +4305,9 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/nlattr_ifla_af_spec.Po \
        ./$(DEPDIR)/nlattr_ifla_brport.Po \
        ./$(DEPDIR)/nlattr_ifla_linkinfo.Po \
-       ./$(DEPDIR)/nlattr_ifla_port.Po ./$(DEPDIR)/nlattr_ifla_xdp.Po \
+       ./$(DEPDIR)/nlattr_ifla_port.Po \
+       ./$(DEPDIR)/nlattr_ifla_xdp-y.Po \
+       ./$(DEPDIR)/nlattr_ifla_xdp.Po \
        ./$(DEPDIR)/nlattr_inet_diag_msg.Po \
        ./$(DEPDIR)/nlattr_inet_diag_req_compat.Po \
        ./$(DEPDIR)/nlattr_inet_diag_req_v2.Po \
@@ -3128,7 +4331,14 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/oldselect-P.Po ./$(DEPDIR)/oldselect-efault-P.Po \
        ./$(DEPDIR)/oldselect-efault.Po ./$(DEPDIR)/oldselect.Po \
        ./$(DEPDIR)/oldstat.Po ./$(DEPDIR)/open.Po \
-       ./$(DEPDIR)/openat.Po ./$(DEPDIR)/orphaned_process_group.Po \
+       ./$(DEPDIR)/open_tree-P.Po ./$(DEPDIR)/open_tree.Po \
+       ./$(DEPDIR)/openat.Po ./$(DEPDIR)/openat2-Xabbrev.Po \
+       ./$(DEPDIR)/openat2-Xraw.Po ./$(DEPDIR)/openat2-Xverbose.Po \
+       ./$(DEPDIR)/openat2-v-y-Xabbrev.Po \
+       ./$(DEPDIR)/openat2-v-y-Xraw.Po \
+       ./$(DEPDIR)/openat2-v-y-Xverbose.Po ./$(DEPDIR)/openat2-v-y.Po \
+       ./$(DEPDIR)/openat2-v.Po ./$(DEPDIR)/openat2-y.Po \
+       ./$(DEPDIR)/openat2.Po ./$(DEPDIR)/orphaned_process_group.Po \
        ./$(DEPDIR)/osf_utimes.Po ./$(DEPDIR)/pause.Po \
        ./$(DEPDIR)/pc.Po ./$(DEPDIR)/perf_event_open.Po \
        ./$(DEPDIR)/perf_event_open_nonverbose.Po \
@@ -3136,14 +4346,24 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/personality-Xabbrev.Po \
        ./$(DEPDIR)/personality-Xraw.Po \
        ./$(DEPDIR)/personality-Xverbose.Po ./$(DEPDIR)/personality.Po \
-       ./$(DEPDIR)/pidfd_send_signal.Po ./$(DEPDIR)/pipe.Po \
-       ./$(DEPDIR)/pipe2.Po ./$(DEPDIR)/pkey_alloc.Po \
-       ./$(DEPDIR)/pkey_free.Po ./$(DEPDIR)/pkey_mprotect.Po \
-       ./$(DEPDIR)/poll-P.Po ./$(DEPDIR)/poll.Po \
-       ./$(DEPDIR)/ppoll-P.Po ./$(DEPDIR)/ppoll-v.Po \
-       ./$(DEPDIR)/ppoll.Po ./$(DEPDIR)/prctl-arg2-intptr.Po \
-       ./$(DEPDIR)/prctl-dumpable.Po ./$(DEPDIR)/prctl-name.Po \
-       ./$(DEPDIR)/prctl-no-args.Po ./$(DEPDIR)/prctl-pdeathsig.Po \
+       ./$(DEPDIR)/pidfd_getfd-y.Po ./$(DEPDIR)/pidfd_getfd-yy.Po \
+       ./$(DEPDIR)/pidfd_getfd.Po \
+       ./$(DEPDIR)/pidfd_open--decode-fd-path.Po \
+       ./$(DEPDIR)/pidfd_open--decode-fd-pidfd.Po \
+       ./$(DEPDIR)/pidfd_open--decode-fd-socket.Po \
+       ./$(DEPDIR)/pidfd_open--pidns-translation.Po \
+       ./$(DEPDIR)/pidfd_open-P.Po ./$(DEPDIR)/pidfd_open-y.Po \
+       ./$(DEPDIR)/pidfd_open-yy.Po ./$(DEPDIR)/pidfd_open.Po \
+       ./$(DEPDIR)/pidfd_send_signal--pidns-translation.Po \
+       ./$(DEPDIR)/pidfd_send_signal.Po ./$(DEPDIR)/pidns-cache.Po \
+       ./$(DEPDIR)/pipe.Po ./$(DEPDIR)/pipe2.Po \
+       ./$(DEPDIR)/pkey_alloc.Po ./$(DEPDIR)/pkey_free.Po \
+       ./$(DEPDIR)/pkey_mprotect.Po ./$(DEPDIR)/poll-P.Po \
+       ./$(DEPDIR)/poll.Po ./$(DEPDIR)/ppoll-P.Po \
+       ./$(DEPDIR)/ppoll-v.Po ./$(DEPDIR)/ppoll.Po \
+       ./$(DEPDIR)/prctl-arg2-intptr.Po ./$(DEPDIR)/prctl-dumpable.Po \
+       ./$(DEPDIR)/prctl-name.Po ./$(DEPDIR)/prctl-no-args.Po \
+       ./$(DEPDIR)/prctl-pdeathsig.Po \
        ./$(DEPDIR)/prctl-seccomp-filter-v.Po \
        ./$(DEPDIR)/prctl-seccomp-strict.Po \
        ./$(DEPDIR)/prctl-securebits.Po \
@@ -3152,7 +4372,7 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/pread64_pwrite64-pread64-pwrite64.Po \
        ./$(DEPDIR)/preadv-preadv.Po ./$(DEPDIR)/preadv2-pwritev2.Po \
        ./$(DEPDIR)/preadv_pwritev-preadv-pwritev.Po \
-       ./$(DEPDIR)/print_maxfd.Po \
+       ./$(DEPDIR)/print_maxfd.Po ./$(DEPDIR)/print_ppid_tracerpid.Po \
        ./$(DEPDIR)/printpath-umovestr-peekdata.Po \
        ./$(DEPDIR)/printpath-umovestr-undumpable.Po \
        ./$(DEPDIR)/printpath-umovestr.Po \
@@ -3161,8 +4381,12 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/printsignal-Xverbose.Po ./$(DEPDIR)/printstr.Po \
        ./$(DEPDIR)/printstrn-umoven-peekdata.Po \
        ./$(DEPDIR)/printstrn-umoven-undumpable.Po \
-       ./$(DEPDIR)/printstrn-umoven.Po ./$(DEPDIR)/prlimit64.Po \
+       ./$(DEPDIR)/printstrn-umoven.Po \
+       ./$(DEPDIR)/prlimit64--pidns-translation.Po \
+       ./$(DEPDIR)/prlimit64.Po \
+       ./$(DEPDIR)/process_vm_readv--pidns-translation.Po \
        ./$(DEPDIR)/process_vm_readv.Po \
+       ./$(DEPDIR)/process_vm_writev--pidns-translation.Po \
        ./$(DEPDIR)/process_vm_writev.Po ./$(DEPDIR)/pselect6.Po \
        ./$(DEPDIR)/ptrace.Po ./$(DEPDIR)/ptrace_syscall_info.Po \
        ./$(DEPDIR)/pwritev-pwritev.Po ./$(DEPDIR)/qual_fault.Po \
@@ -3180,8 +4404,10 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/readahead.Po ./$(DEPDIR)/readdir.Po \
        ./$(DEPDIR)/readlink.Po ./$(DEPDIR)/readlinkat.Po \
        ./$(DEPDIR)/readv.Po ./$(DEPDIR)/reboot.Po \
-       ./$(DEPDIR)/recvfrom.Po ./$(DEPDIR)/recvmmsg-timeout.Po \
-       ./$(DEPDIR)/recvmsg.Po ./$(DEPDIR)/redirect-fds.Po \
+       ./$(DEPDIR)/recv-MSG_TRUNC.Po \
+       ./$(DEPDIR)/recvfrom-MSG_TRUNC.Po ./$(DEPDIR)/recvfrom.Po \
+       ./$(DEPDIR)/recvmmsg-timeout.Po ./$(DEPDIR)/recvmsg.Po \
+       ./$(DEPDIR)/redirect-fds.Po \
        ./$(DEPDIR)/remap_file_pages-Xabbrev.Po \
        ./$(DEPDIR)/remap_file_pages-Xraw.Po \
        ./$(DEPDIR)/remap_file_pages-Xverbose.Po \
@@ -3190,9 +4416,11 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/request_key.Po ./$(DEPDIR)/restart_syscall.Po \
        ./$(DEPDIR)/riscv_flush_icache.Po ./$(DEPDIR)/rmdir.Po \
        ./$(DEPDIR)/rt_sigaction.Po ./$(DEPDIR)/rt_sigpending.Po \
-       ./$(DEPDIR)/rt_sigprocmask.Po ./$(DEPDIR)/rt_sigqueueinfo.Po \
-       ./$(DEPDIR)/rt_sigreturn.Po ./$(DEPDIR)/rt_sigsuspend.Po \
-       ./$(DEPDIR)/rt_sigtimedwait.Po \
+       ./$(DEPDIR)/rt_sigprocmask.Po \
+       ./$(DEPDIR)/rt_sigqueueinfo--pidns-translation.Po \
+       ./$(DEPDIR)/rt_sigqueueinfo.Po ./$(DEPDIR)/rt_sigreturn.Po \
+       ./$(DEPDIR)/rt_sigsuspend.Po ./$(DEPDIR)/rt_sigtimedwait.Po \
+       ./$(DEPDIR)/rt_tgsigqueueinfo--pidns-translation.Po \
        ./$(DEPDIR)/rt_tgsigqueueinfo.Po \
        ./$(DEPDIR)/run_expect_termsig.Po \
        ./$(DEPDIR)/s390_guarded_storage-v.Po \
@@ -3202,22 +4430,31 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/s390_sthyi.Po \
        ./$(DEPDIR)/sched_get_priority_mxx.Po \
        ./$(DEPDIR)/sched_rr_get_interval.Po \
-       ./$(DEPDIR)/sched_xetaffinity.Po ./$(DEPDIR)/sched_xetattr.Po \
+       ./$(DEPDIR)/sched_xetaffinity--pidns-translation.Po \
+       ./$(DEPDIR)/sched_xetaffinity.Po \
+       ./$(DEPDIR)/sched_xetattr--pidns-translation.Po \
+       ./$(DEPDIR)/sched_xetattr.Po \
+       ./$(DEPDIR)/sched_xetparam--pidns-translation.Po \
        ./$(DEPDIR)/sched_xetparam.Po \
+       ./$(DEPDIR)/sched_xetscheduler--pidns-translation.Po \
        ./$(DEPDIR)/sched_xetscheduler.Po ./$(DEPDIR)/sched_yield.Po \
        ./$(DEPDIR)/scm_rights.Po ./$(DEPDIR)/seccomp-filter-v.Po \
        ./$(DEPDIR)/seccomp-filter.Po ./$(DEPDIR)/seccomp-strict.Po \
        ./$(DEPDIR)/seccomp_get_action_avail.Po \
        ./$(DEPDIR)/select-P.Po ./$(DEPDIR)/select.Po \
-       ./$(DEPDIR)/semop.Po ./$(DEPDIR)/sendfile.Po \
-       ./$(DEPDIR)/sendfile64.Po ./$(DEPDIR)/set_mempolicy.Po \
-       ./$(DEPDIR)/set_ptracer_any.Po ./$(DEPDIR)/set_sigblock.Po \
-       ./$(DEPDIR)/set_sigign.Po ./$(DEPDIR)/setdomainname.Po \
-       ./$(DEPDIR)/setfsgid.Po ./$(DEPDIR)/setfsgid32.Po \
-       ./$(DEPDIR)/setfsuid.Po ./$(DEPDIR)/setfsuid32.Po \
-       ./$(DEPDIR)/setgid.Po ./$(DEPDIR)/setgid32.Po \
-       ./$(DEPDIR)/setgroups.Po ./$(DEPDIR)/setgroups32.Po \
-       ./$(DEPDIR)/sethostname.Po ./$(DEPDIR)/setns.Po \
+       ./$(DEPDIR)/semop-indirect.Po ./$(DEPDIR)/semop.Po \
+       ./$(DEPDIR)/semtimedop.Po ./$(DEPDIR)/sendfile.Po \
+       ./$(DEPDIR)/sendfile64.Po ./$(DEPDIR)/set_mempolicy-Xabbrev.Po \
+       ./$(DEPDIR)/set_mempolicy-Xraw.Po \
+       ./$(DEPDIR)/set_mempolicy-Xverbose.Po \
+       ./$(DEPDIR)/set_mempolicy.Po ./$(DEPDIR)/set_ptracer_any.Po \
+       ./$(DEPDIR)/set_sigblock.Po ./$(DEPDIR)/set_sigign.Po \
+       ./$(DEPDIR)/setdomainname.Po ./$(DEPDIR)/setfsgid.Po \
+       ./$(DEPDIR)/setfsgid32.Po ./$(DEPDIR)/setfsuid.Po \
+       ./$(DEPDIR)/setfsuid32.Po ./$(DEPDIR)/setgid.Po \
+       ./$(DEPDIR)/setgid32.Po ./$(DEPDIR)/setgroups.Po \
+       ./$(DEPDIR)/setgroups32.Po ./$(DEPDIR)/sethostname.Po \
+       ./$(DEPDIR)/setns.Po ./$(DEPDIR)/setpgrp-exec.Po \
        ./$(DEPDIR)/setregid.Po ./$(DEPDIR)/setregid32.Po \
        ./$(DEPDIR)/setresgid.Po ./$(DEPDIR)/setresgid32.Po \
        ./$(DEPDIR)/setresuid.Po ./$(DEPDIR)/setresuid32.Po \
@@ -3228,11 +4465,14 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/shmxt.Po ./$(DEPDIR)/shutdown.Po \
        ./$(DEPDIR)/sigaction.Po ./$(DEPDIR)/sigaltstack.Po \
        ./$(DEPDIR)/siginfo.Po ./$(DEPDIR)/signal.Po \
+       ./$(DEPDIR)/signal_receive--pidns-translation.Po \
        ./$(DEPDIR)/signal_receive.Po ./$(DEPDIR)/signalfd4.Po \
        ./$(DEPDIR)/sigpending.Po ./$(DEPDIR)/sigprocmask.Po \
        ./$(DEPDIR)/sigreturn.Po ./$(DEPDIR)/sigsuspend.Po \
        ./$(DEPDIR)/sleep.Po ./$(DEPDIR)/so_error.Po \
-       ./$(DEPDIR)/so_linger.Po ./$(DEPDIR)/so_peercred-Xabbrev.Po \
+       ./$(DEPDIR)/so_linger.Po \
+       ./$(DEPDIR)/so_peercred--pidns-translation.Po \
+       ./$(DEPDIR)/so_peercred-Xabbrev.Po \
        ./$(DEPDIR)/so_peercred-Xraw.Po \
        ./$(DEPDIR)/so_peercred-Xverbose.Po ./$(DEPDIR)/so_peercred.Po \
        ./$(DEPDIR)/sock_filter-v-Xabbrev.Po \
@@ -3246,6 +4486,7 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/sockopt-timestamp.Po ./$(DEPDIR)/splice.Po \
        ./$(DEPDIR)/stack-fcall-0.Po ./$(DEPDIR)/stack-fcall-1.Po \
        ./$(DEPDIR)/stack-fcall-2.Po ./$(DEPDIR)/stack-fcall-3.Po \
+       ./$(DEPDIR)/stack-fcall-attach.Po \
        ./$(DEPDIR)/stack-fcall-mangled-0.Po \
        ./$(DEPDIR)/stack-fcall-mangled-1.Po \
        ./$(DEPDIR)/stack-fcall-mangled-2.Po \
@@ -3253,22 +4494,45 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/stack-fcall-mangled.Po ./$(DEPDIR)/stack-fcall.Po \
        ./$(DEPDIR)/stat.Po ./$(DEPDIR)/stat64-stat64.Po \
        ./$(DEPDIR)/statfs-statfs.Po ./$(DEPDIR)/statfs64.Po \
-       ./$(DEPDIR)/statx.Po ./$(DEPDIR)/swap.Po \
-       ./$(DEPDIR)/sxetmask.Po ./$(DEPDIR)/symlink.Po \
-       ./$(DEPDIR)/symlinkat.Po ./$(DEPDIR)/sync.Po \
-       ./$(DEPDIR)/sync_file_range.Po ./$(DEPDIR)/sync_file_range2.Po \
-       ./$(DEPDIR)/sysinfo.Po ./$(DEPDIR)/syslog.Po \
-       ./$(DEPDIR)/tee.Po ./$(DEPDIR)/threads-execve.Po \
-       ./$(DEPDIR)/time.Po ./$(DEPDIR)/timer_create.Po \
-       ./$(DEPDIR)/timer_xettime.Po ./$(DEPDIR)/timerfd_xettime.Po \
-       ./$(DEPDIR)/times-fail.Po ./$(DEPDIR)/times.Po \
-       ./$(DEPDIR)/truncate.Po ./$(DEPDIR)/truncate64-truncate64.Po \
-       ./$(DEPDIR)/ugetrlimit.Po ./$(DEPDIR)/uio-uio.Po \
-       ./$(DEPDIR)/umask.Po ./$(DEPDIR)/umount.Po \
-       ./$(DEPDIR)/umount2.Po ./$(DEPDIR)/umoven-illptr.Po \
-       ./$(DEPDIR)/umovestr-illptr.Po ./$(DEPDIR)/umovestr.Po \
-       ./$(DEPDIR)/umovestr2.Po ./$(DEPDIR)/umovestr3.Po \
-       ./$(DEPDIR)/uname.Po ./$(DEPDIR)/unblock_reset_raise.Po \
+       ./$(DEPDIR)/status-all.Po ./$(DEPDIR)/status-failed-long.Po \
+       ./$(DEPDIR)/status-failed-status.Po \
+       ./$(DEPDIR)/status-failed.Po ./$(DEPDIR)/status-none-f.Po \
+       ./$(DEPDIR)/status-none-threads.Po ./$(DEPDIR)/status-none.Po \
+       ./$(DEPDIR)/status-successful-long.Po \
+       ./$(DEPDIR)/status-successful-status.Po \
+       ./$(DEPDIR)/status-successful.Po \
+       ./$(DEPDIR)/status-unfinished-threads.Po \
+       ./$(DEPDIR)/status-unfinished.Po ./$(DEPDIR)/statx.Po \
+       ./$(DEPDIR)/strace--strings-in-hex-all.Po \
+       ./$(DEPDIR)/strace--strings-in-hex-non-ascii.Po \
+       ./$(DEPDIR)/strace--strings-in-hex.Po ./$(DEPDIR)/strace-n.Po \
+       ./$(DEPDIR)/strace-x.Po ./$(DEPDIR)/strace-xx.Po \
+       ./$(DEPDIR)/swap.Po ./$(DEPDIR)/sxetmask.Po \
+       ./$(DEPDIR)/symlink.Po ./$(DEPDIR)/symlinkat.Po \
+       ./$(DEPDIR)/sync.Po ./$(DEPDIR)/sync_file_range.Po \
+       ./$(DEPDIR)/sync_file_range2.Po ./$(DEPDIR)/sysinfo.Po \
+       ./$(DEPDIR)/syslog-success.Po ./$(DEPDIR)/syslog.Po \
+       ./$(DEPDIR)/tee.Po ./$(DEPDIR)/tgkill--pidns-translation.Po \
+       ./$(DEPDIR)/tgkill.Po \
+       ./$(DEPDIR)/threads-execve--quiet-thread-execve.Po \
+       ./$(DEPDIR)/threads-execve-q.Po \
+       ./$(DEPDIR)/threads-execve-qq.Po \
+       ./$(DEPDIR)/threads-execve-qqq.Po \
+       ./$(DEPDIR)/threads-execve.Po ./$(DEPDIR)/time.Po \
+       ./$(DEPDIR)/timer_create.Po ./$(DEPDIR)/timer_xettime.Po \
+       ./$(DEPDIR)/timerfd_xettime.Po ./$(DEPDIR)/times-fail.Po \
+       ./$(DEPDIR)/times.Po ./$(DEPDIR)/tkill--pidns-translation.Po \
+       ./$(DEPDIR)/tkill.Po ./$(DEPDIR)/tracer_ppid_pgid_sid.Po \
+       ./$(DEPDIR)/trie_test-trie_for_tests.Po \
+       ./$(DEPDIR)/trie_test-trie_test.Po ./$(DEPDIR)/truncate.Po \
+       ./$(DEPDIR)/truncate64-truncate64.Po ./$(DEPDIR)/ugetrlimit.Po \
+       ./$(DEPDIR)/uio-uio.Po ./$(DEPDIR)/umask.Po \
+       ./$(DEPDIR)/umount.Po ./$(DEPDIR)/umount2.Po \
+       ./$(DEPDIR)/umoven-illptr.Po ./$(DEPDIR)/umovestr-illptr.Po \
+       ./$(DEPDIR)/umovestr.Po ./$(DEPDIR)/umovestr2.Po \
+       ./$(DEPDIR)/umovestr3.Po ./$(DEPDIR)/umovestr_cached.Po \
+       ./$(DEPDIR)/umovestr_cached_adjacent.Po ./$(DEPDIR)/uname.Po \
+       ./$(DEPDIR)/unblock_reset_raise.Po \
        ./$(DEPDIR)/unix-pair-send-recv.Po \
        ./$(DEPDIR)/unix-pair-sendto-recvfrom.Po ./$(DEPDIR)/unlink.Po \
        ./$(DEPDIR)/unlinkat.Po ./$(DEPDIR)/unshare.Po \
@@ -3281,10 +4545,15 @@ am__depfiles_remade = ./$(DEPDIR)/_newselect-P.Po \
        ./$(DEPDIR)/wait4-v.Po ./$(DEPDIR)/wait4.Po \
        ./$(DEPDIR)/waitid-v.Po ./$(DEPDIR)/waitid.Po \
        ./$(DEPDIR)/waitpid.Po ./$(DEPDIR)/xattr-strings.Po \
-       ./$(DEPDIR)/xattr.Po ./$(DEPDIR)/xet_robust_list.Po \
+       ./$(DEPDIR)/xattr.Po \
+       ./$(DEPDIR)/xet_robust_list--pidns-translation.Po \
+       ./$(DEPDIR)/xet_robust_list.Po \
        ./$(DEPDIR)/xet_thread_area_x86.Po ./$(DEPDIR)/xetitimer.Po \
-       ./$(DEPDIR)/xetpgid.Po ./$(DEPDIR)/xetpriority.Po \
-       ./$(DEPDIR)/xettimeofday.Po ./$(DEPDIR)/zeroargc.Po
+       ./$(DEPDIR)/xetpgid--pidns-translation.Po \
+       ./$(DEPDIR)/xetpgid.Po \
+       ./$(DEPDIR)/xetpriority--pidns-translation.Po \
+       ./$(DEPDIR)/xetpriority.Po ./$(DEPDIR)/xettimeofday.Po \
+       ./$(DEPDIR)/zeroargc.Po
 am__mv = mv -f
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
@@ -3306,79 +4575,128 @@ SOURCES = $(libtests_a_SOURCES) _newselect.c _newselect-P.c accept.c \
        accept4.c access.c acct.c add_key.c adjtimex.c aio.c \
        aio_pgetevents.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-obj_get_info_by_fd.c \
-       bpf-obj_get_info_by_fd-prog.c bpf-obj_get_info_by_fd-prog-v.c \
-       bpf-obj_get_info_by_fd-v.c bpf-success.c bpf-success-v.c \
-       bpf-v.c brk.c btrfs.c caps.c caps-abbrev.c check_sigblock.c \
+       block_reset_raise_run.c block_reset_run.c bpf.c \
+       bpf-obj_get_info_by_fd.c bpf-obj_get_info_by_fd-prog.c \
+       bpf-obj_get_info_by_fd-prog-v.c bpf-obj_get_info_by_fd-v.c \
+       bpf-success.c bpf-success-long-y.c bpf-success-v.c bpf-v.c \
+       brk.c btrfs.c caps.c caps-abbrev.c check_sigblock.c \
        check_sigign.c chmod.c chown.c chown32.c chroot.c \
        clock_adjtime.c clock_nanosleep.c clock_xettime.c \
-       clone_parent.c clone_ptrace.c copy_file_range.c count-f.c \
-       creat.c delay.c delete_module.c dev-yy.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 \
+       clone-flags.c clone3.c clone3-Xabbrev.c clone3-Xraw.c \
+       clone3-Xverbose.c clone3-success.c clone3-success-Xabbrev.c \
+       clone3-success-Xraw.c clone3-success-Xverbose.c clone_parent.c \
+       clone_parent--quiet-exit.c clone_parent-q.c clone_parent-qq.c \
+       clone_ptrace.c clone_ptrace--quiet-attach.c \
+       clone_ptrace--quiet-exit.c clone_ptrace-q.c clone_ptrace-qq.c \
+       close_range.c close_range-P.c close_range-y.c close_range-yy.c \
+       copy_file_range.c count-f.c creat.c delay.c delete_module.c \
+       dev--decode-fds-dev.c dev--decode-fds-path.c \
+       dev--decode-fds-socket.c dev-yy.c dup.c dup-P.c dup-y.c \
+       dup-yy.c dup2.c dup2-P.c dup2-y.c dup2-yy.c dup3.c dup3-P.c \
+       dup3-y.c dup3-yy.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 faccessat-P.c \
+       faccessat-y.c faccessat-yy.c faccessat2.c faccessat2-P.c \
+       faccessat2-y.c faccessat2-yy.c fadvise64.c fadvise64_64.c \
        fallocate.c fanotify_init.c fanotify_mark.c \
        fanotify_mark-Xabbrev.c fanotify_mark-Xraw.c \
        fanotify_mark-Xverbose.c fchdir.c fchmod.c fchmodat.c fchown.c \
-       fchown32.c fchownat.c fcntl.c fcntl64.c fdatasync.c fflush.c \
-       file_handle.c file_ioctl.c filter-unavailable.c finit_module.c \
-       flock.c fork-f.c fstat.c fstat-Xabbrev.c fstat-Xraw.c \
-       fstat-Xverbose.c fstat64.c fstat64-Xabbrev.c fstat64-Xraw.c \
-       fstat64-Xverbose.c fstatat64.c fstatfs.c fstatfs64.c fsync.c \
-       fsync-y.c ftruncate.c ftruncate64.c futex.c futimesat.c \
-       get_mempolicy.c getcpu.c getcwd.c getdents.c getdents64.c \
-       getegid.c getegid32.c geteuid.c geteuid32.c getgid.c \
-       getgid32.c getgroups.c getgroups32.c getpeername.c getpgrp.c \
-       getpid.c getppid.c getrandom.c getresgid.c getresgid32.c \
-       getresuid.c getresuid32.c getrlimit.c getrusage.c getsid.c \
-       getsockname.c gettid.c getuid.c getuid32.c getxxid.c \
-       group_req.c inet-cmsg.c init_module.c inject-nf.c inotify.c \
-       inotify_init1.c int_0x80.c io_uring_enter.c \
-       io_uring_register.c io_uring_setup.c ioctl.c ioctl_block.c \
-       ioctl_dm.c ioctl_dm-v.c ioctl_evdev.c ioctl_evdev-success.c \
-       ioctl_evdev-success-v.c ioctl_evdev-v.c ioctl_inotify.c \
-       ioctl_kvm_run.c ioctl_kvm_run-v.c ioctl_kvm_run_auxstr_vcpu.c \
-       ioctl_loop.c ioctl_loop-nv.c ioctl_loop-v.c ioctl_mtd.c \
-       ioctl_nbd.c ioctl_nsfs.c ioctl_perf.c ioctl_perf-success.c \
-       ioctl_ptp.c ioctl_random.c ioctl_rtc.c ioctl_rtc-v.c \
-       ioctl_scsi.c ioctl_sg_io_v3.c ioctl_sg_io_v4.c \
-       ioctl_sock_gifconf.c ioctl_uffdio.c ioctl_v4l2.c ioperm.c \
-       iopl.c ioprio.c ioprio-Xabbrev.c ioprio-Xraw.c \
-       ioprio-Xverbose.c ip_mreq.c ipc.c ipc_msg.c ipc_msg-Xabbrev.c \
-       ipc_msg-Xraw.c ipc_msg-Xverbose.c ipc_msgbuf.c \
-       ipc_msgbuf-Xabbrev.c ipc_msgbuf-Xraw.c ipc_msgbuf-Xverbose.c \
-       ipc_sem.c ipc_sem-Xabbrev.c ipc_sem-Xraw.c ipc_sem-Xverbose.c \
-       ipc_shm.c ipc_shm-Xabbrev.c ipc_shm-Xraw.c ipc_shm-Xverbose.c \
-       is_linux_mips_n64.c kcmp.c kcmp-y.c kern_features.c \
+       fchown32.c fchownat.c fcntl.c fcntl--pidns-translation.c \
+       fcntl64.c fcntl64--pidns-translation.c fdatasync.c fflush.c \
+       file_handle.c file_ioctl.c filter-unavailable.c \
+       filter_seccomp-flag.c filter_seccomp-perf.c finit_module.c \
+       flock.c fork--pidns-translation.c fork-f.c fsconfig.c \
+       fsconfig-P.c fsmount.c fsopen.c fspick.c fspick-P.c fstat.c \
+       fstat-Xabbrev.c fstat-Xraw.c fstat-Xverbose.c fstat64.c \
+       fstat64-Xabbrev.c fstat64-Xraw.c fstat64-Xverbose.c \
+       fstatat64.c fstatfs.c fstatfs64.c fsync.c fsync-y.c \
+       ftruncate.c ftruncate64.c futex.c futimesat.c get_mempolicy.c \
+       get_process_reaper.c getcpu.c getcwd.c getdents.c getdents-v.c \
+       getdents64.c getdents64-v.c getegid.c getegid32.c geteuid.c \
+       geteuid32.c getgid.c getgid32.c getgroups.c getgroups32.c \
+       getpeername.c getpgrp.c getpgrp--pidns-translation.c getpid.c \
+       getpid--pidns-translation.c getppid.c getrandom.c getresgid.c \
+       getresgid32.c getresuid.c getresuid32.c getrlimit.c \
+       getrusage.c getsid.c getsid--pidns-translation.c getsockname.c \
+       gettid.c gettid--pidns-translation.c getuid.c getuid32.c \
+       getxgid.c getxpid.c getxuid.c group_req.c inet-cmsg.c \
+       init_module.c inject-nf.c inotify.c inotify_init.c \
+       inotify_init-y.c inotify_init1.c inotify_init1-y.c int_0x80.c \
+       io_uring_enter.c io_uring_register.c io_uring_setup.c ioctl.c \
+       ioctl_block.c ioctl_block--pidns-translation.c ioctl_dm.c \
+       ioctl_dm-v.c ioctl_evdev.c ioctl_evdev-Xabbrev.c \
+       ioctl_evdev-Xraw.c ioctl_evdev-Xverbose.c \
+       ioctl_evdev-success.c ioctl_evdev-success-Xabbrev.c \
+       ioctl_evdev-success-Xraw.c ioctl_evdev-success-Xverbose.c \
+       ioctl_evdev-success-v.c ioctl_evdev-success-v-Xabbrev.c \
+       ioctl_evdev-success-v-Xraw.c ioctl_evdev-success-v-Xverbose.c \
+       ioctl_evdev-v.c ioctl_evdev-v-Xabbrev.c ioctl_evdev-v-Xraw.c \
+       ioctl_evdev-v-Xverbose.c ioctl_hdio.c ioctl_hdio-Xabbrev.c \
+       ioctl_hdio-Xraw.c ioctl_hdio-Xverbose.c ioctl_hdio-success.c \
+       ioctl_hdio-success-Xabbrev.c ioctl_hdio-success-Xraw.c \
+       ioctl_hdio-success-Xverbose.c ioctl_hdio-success-v.c \
+       ioctl_hdio-success-v-Xabbrev.c ioctl_hdio-success-v-Xraw.c \
+       ioctl_hdio-success-v-Xverbose.c ioctl_hdio-v.c \
+       ioctl_hdio-v-Xabbrev.c ioctl_hdio-v-Xraw.c \
+       ioctl_hdio-v-Xverbose.c ioctl_inotify.c ioctl_kvm_run.c \
+       ioctl_kvm_run-v.c ioctl_kvm_run_auxstr_vcpu.c ioctl_loop.c \
+       ioctl_loop-nv.c ioctl_loop-v.c ioctl_mtd.c ioctl_nbd.c \
+       ioctl_nsfs.c ioctl_perf.c ioctl_perf-success.c ioctl_ptp.c \
+       ioctl_random.c ioctl_rtc.c ioctl_rtc-v.c ioctl_scsi.c \
+       ioctl_sg_io_v3.c ioctl_sg_io_v4.c ioctl_sock_gifconf.c \
+       ioctl_tee.c ioctl_uffdio.c ioctl_v4l2.c ioctl_v4l2-Xabbrev.c \
+       ioctl_v4l2-Xraw.c ioctl_v4l2-Xverbose.c ioctl_v4l2-success.c \
+       ioctl_v4l2-success-Xabbrev.c ioctl_v4l2-success-Xraw.c \
+       ioctl_v4l2-success-Xverbose.c ioctl_v4l2-success-v.c \
+       ioctl_v4l2-success-v-Xabbrev.c ioctl_v4l2-success-v-Xraw.c \
+       ioctl_v4l2-success-v-Xverbose.c ioctl_v4l2-v.c \
+       ioctl_v4l2-v-Xabbrev.c ioctl_v4l2-v-Xraw.c \
+       ioctl_v4l2-v-Xverbose.c ioctl_watchdog.c ioperm.c iopl.c \
+       ioprio.c ioprio--pidns-translation.c ioprio-Xabbrev.c \
+       ioprio-Xraw.c ioprio-Xverbose.c ip_mreq.c ipc.c ipc_msg.c \
+       ipc_msg-Xabbrev.c ipc_msg-Xraw.c ipc_msg-Xverbose.c \
+       ipc_msgbuf.c ipc_msgbuf-Xabbrev.c ipc_msgbuf-Xraw.c \
+       ipc_msgbuf-Xverbose.c ipc_sem.c ipc_sem-Xabbrev.c \
+       ipc_sem-Xraw.c ipc_sem-Xverbose.c ipc_shm.c ipc_shm-Xabbrev.c \
+       ipc_shm-Xraw.c ipc_shm-Xverbose.c is_linux_mips_n64.c kcmp.c \
+       kcmp-y.c kcmp-y--pidns-translation.c kern_features.c \
        kernel_version.c kernel_version-Xabbrev.c \
        kernel_version-Xraw.c kernel_version-Xverbose.c \
        kexec_file_load.c kexec_load.c keyctl.c keyctl-Xabbrev.c \
-       keyctl-Xraw.c keyctl-Xverbose.c kill.c kill_child.c ksysent.c \
-       lchown.c lchown32.c link.c linkat.c list_sigaction_signum.c \
-       llseek.c localtime.c lookup_dcookie.c looping_threads.c \
-       lseek.c lstat.c lstat64.c madvise.c mbind.c membarrier.c \
+       keyctl-Xraw.c keyctl-Xverbose.c kill.c \
+       kill--pidns-translation.c kill_child.c ksysent.c lchown.c \
+       lchown32.c link.c linkat.c list_sigaction_signum.c llseek.c \
+       localtime.c lookup_dcookie.c looping_threads.c lseek.c lstat.c \
+       lstat64.c madvise.c maybe_switch_current_tcp.c \
+       maybe_switch_current_tcp--quiet-thread-execve.c mbind.c \
+       mbind-Xabbrev.c mbind-Xraw.c mbind-Xverbose.c membarrier.c \
        memfd_create.c memfd_create-Xabbrev.c memfd_create-Xraw.c \
-       memfd_create-Xverbose.c migrate_pages.c mincore.c mkdir.c \
-       mkdirat.c mknod.c mknodat.c mlock.c mlock2.c mlockall.c mmap.c \
+       memfd_create-Xverbose.c migrate_pages.c \
+       migrate_pages--pidns-translation.c mincore.c mkdir.c mkdirat.c \
+       mknod.c mknodat.c mlock.c mlock2.c mlockall.c mmap.c \
        mmap-Xabbrev.c mmap-Xraw.c mmap-Xverbose.c mmap64.c \
        mmap64-Xabbrev.c mmap64-Xraw.c mmap64-Xverbose.c mmsg.c \
        mmsg-silent.c mmsg_name.c mmsg_name-v.c modify_ldt.c mount.c \
-       mount-Xabbrev.c mount-Xraw.c mount-Xverbose.c move_pages.c \
+       mount-Xabbrev.c mount-Xraw.c mount-Xverbose.c move_mount.c \
+       move_mount-P.c move_pages.c move_pages--pidns-translation.c \
        move_pages-Xabbrev.c move_pages-Xraw.c move_pages-Xverbose.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-packet_mreq.c net-packet_mreq-Xabbrev.c \
+       nanosleep.c net--decode-fds-dev-netlink.c \
+       net--decode-fds-none-netlink.c net--decode-fds-path-netlink.c \
+       net--decode-fds-socket-netlink.c net-accept-connect.c \
+       net-icmp_filter.c net-packet_mreq.c net-packet_mreq-Xabbrev.c \
        net-packet_mreq-Xraw.c net-packet_mreq-Xverbose.c \
-       net-sockaddr.c net-tpacket_req.c net-tpacket_stats.c \
+       net-sockaddr.c net-sockaddr--pidns-translation.c \
+       net-tpacket_req.c net-tpacket_stats.c \
        net-tpacket_stats-success.c net-y-unix.c net-yy-inet.c \
        net-yy-inet6.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 \
+       netlink_audit--pidns-translation.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 \
@@ -3386,166 +4704,249 @@ SOURCES = $(libtests_a_SOURCES) _newselect.c _newselect-P.c accept.c \
        nlattr_fib_rule_hdr.c nlattr_ifaddrlblmsg.c nlattr_ifaddrmsg.c \
        nlattr_ifinfomsg.c nlattr_ifla_af_spec.c nlattr_ifla_brport.c \
        nlattr_ifla_linkinfo.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 nsyscalls-d.c old_mmap.c \
-       old_mmap-P.c old_mmap-Xabbrev.c old_mmap-Xraw.c \
-       old_mmap-Xverbose.c old_mmap-v-none.c oldfstat.c oldlstat.c \
-       oldselect.c oldselect-P.c oldselect-efault.c \
-       oldselect-efault-P.c oldstat.c open.c openat.c \
+       nlattr_ifla_xdp-y.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 nsyscalls-d.c old_mmap.c old_mmap-P.c \
+       old_mmap-Xabbrev.c old_mmap-Xraw.c old_mmap-Xverbose.c \
+       old_mmap-v-none.c oldfstat.c oldlstat.c oldselect.c \
+       oldselect-P.c oldselect-efault.c oldselect-efault-P.c \
+       oldstat.c open.c open_tree.c open_tree-P.c openat.c openat2.c \
+       openat2-Xabbrev.c openat2-Xraw.c openat2-Xverbose.c \
+       openat2-v.c openat2-v-y.c openat2-v-y-Xabbrev.c \
+       openat2-v-y-Xraw.c openat2-v-y-Xverbose.c openat2-y.c \
        orphaned_process_group.c osf_utimes.c pause.c pc.c \
        perf_event_open.c perf_event_open_nonverbose.c \
        perf_event_open_unabbrev.c personality.c personality-Xabbrev.c \
-       personality-Xraw.c personality-Xverbose.c pidfd_send_signal.c \
-       pipe.c pipe2.c pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c \
-       poll-P.c ppoll.c ppoll-P.c ppoll-v.c prctl-arg2-intptr.c \
-       prctl-dumpable.c prctl-name.c prctl-no-args.c \
-       prctl-pdeathsig.c prctl-seccomp-filter-v.c \
+       personality-Xraw.c personality-Xverbose.c pidfd_getfd.c \
+       pidfd_getfd-y.c pidfd_getfd-yy.c pidfd_open.c \
+       pidfd_open--decode-fd-path.c pidfd_open--decode-fd-pidfd.c \
+       pidfd_open--decode-fd-socket.c pidfd_open--pidns-translation.c \
+       pidfd_open-P.c pidfd_open-y.c pidfd_open-yy.c \
+       pidfd_send_signal.c pidfd_send_signal--pidns-translation.c \
+       pidns-cache.c pipe.c pipe2.c pkey_alloc.c pkey_free.c \
+       pkey_mprotect.c poll.c poll-P.c ppoll.c ppoll-P.c ppoll-v.c \
+       prctl-arg2-intptr.c prctl-dumpable.c prctl-name.c \
+       prctl-no-args.c prctl-pdeathsig.c prctl-seccomp-filter-v.c \
        prctl-seccomp-strict.c prctl-securebits.c prctl-spec-inject.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 printpath-umovestr-peekdata.c \
-       printpath-umovestr-undumpable.c printsignal-Xabbrev.c \
-       printsignal-Xraw.c printsignal-Xverbose.c printstr.c \
-       printstrn-umoven.c printstrn-umoven-peekdata.c \
-       printstrn-umoven-undumpable.c prlimit64.c process_vm_readv.c \
-       process_vm_writev.c pselect6.c ptrace.c ptrace_syscall_info.c \
-       pwritev.c qual_fault.c qual_inject-error-signal.c \
-       qual_inject-retval.c qual_inject-signal.c qual_signal.c \
-       quotactl.c quotactl-Xabbrev.c quotactl-Xraw.c \
-       quotactl-Xverbose.c quotactl-success.c quotactl-success-v.c \
-       quotactl-v.c quotactl-xfs.c quotactl-xfs-success.c \
-       quotactl-xfs-success-v.c quotactl-xfs-v.c read-write.c \
-       readahead.c readdir.c readlink.c readlinkat.c readv.c reboot.c \
-       recvfrom.c recvmmsg-timeout.c recvmsg.c redirect-fds.c \
-       remap_file_pages.c remap_file_pages-Xabbrev.c \
+       print_ppid_tracerpid.c printpath-umovestr.c \
+       printpath-umovestr-peekdata.c printpath-umovestr-undumpable.c \
+       printsignal-Xabbrev.c printsignal-Xraw.c \
+       printsignal-Xverbose.c printstr.c printstrn-umoven.c \
+       printstrn-umoven-peekdata.c printstrn-umoven-undumpable.c \
+       prlimit64.c prlimit64--pidns-translation.c process_vm_readv.c \
+       process_vm_readv--pidns-translation.c process_vm_writev.c \
+       process_vm_writev--pidns-translation.c pselect6.c ptrace.c \
+       ptrace_syscall_info.c pwritev.c qual_fault.c \
+       qual_inject-error-signal.c qual_inject-retval.c \
+       qual_inject-signal.c qual_signal.c quotactl.c \
+       quotactl-Xabbrev.c quotactl-Xraw.c quotactl-Xverbose.c \
+       quotactl-success.c quotactl-success-v.c quotactl-v.c \
+       quotactl-xfs.c quotactl-xfs-success.c quotactl-xfs-success-v.c \
+       quotactl-xfs-v.c read-write.c readahead.c readdir.c readlink.c \
+       readlinkat.c readv.c reboot.c recv-MSG_TRUNC.c recvfrom.c \
+       recvfrom-MSG_TRUNC.c recvmmsg-timeout.c recvmsg.c \
+       redirect-fds.c remap_file_pages.c remap_file_pages-Xabbrev.c \
        remap_file_pages-Xraw.c remap_file_pages-Xverbose.c rename.c \
        renameat.c renameat2.c request_key.c restart_syscall.c \
        riscv_flush_icache.c rmdir.c rt_sigaction.c rt_sigpending.c \
-       rt_sigprocmask.c rt_sigqueueinfo.c rt_sigreturn.c \
+       rt_sigprocmask.c rt_sigqueueinfo.c \
+       rt_sigqueueinfo--pidns-translation.c rt_sigreturn.c \
        rt_sigsuspend.c rt_sigtimedwait.c rt_tgsigqueueinfo.c \
-       run_expect_termsig.c s390_guarded_storage.c \
-       s390_guarded_storage-v.c s390_pci_mmio_read_write.c \
-       s390_runtime_instr.c s390_sthyi.c s390_sthyi-v.c \
-       sched_get_priority_mxx.c sched_rr_get_interval.c \
-       sched_xetaffinity.c sched_xetattr.c sched_xetparam.c \
-       sched_xetscheduler.c sched_yield.c scm_rights.c \
-       seccomp-filter.c seccomp-filter-v.c seccomp-strict.c \
-       seccomp_get_action_avail.c select.c select-P.c semop.c \
-       sendfile.c sendfile64.c set_mempolicy.c set_ptracer_any.c \
-       set_sigblock.c set_sigign.c setdomainname.c setfsgid.c \
-       setfsgid32.c setfsuid.c setfsuid32.c setgid.c setgid32.c \
-       setgroups.c setgroups32.c sethostname.c setns.c setregid.c \
-       setregid32.c setresgid.c setresgid32.c setresuid.c \
-       setresuid32.c setreuid.c setreuid32.c setrlimit.c \
-       setrlimit-Xabbrev.c setrlimit-Xraw.c setrlimit-Xverbose.c \
-       setuid.c setuid32.c shmxt.c shutdown.c sigaction.c \
-       sigaltstack.c siginfo.c signal.c signal_receive.c signalfd4.c \
-       sigpending.c sigprocmask.c sigreturn.c sigsuspend.c sleep.c \
-       so_error.c so_linger.c so_peercred.c so_peercred-Xabbrev.c \
-       so_peercred-Xraw.c so_peercred-Xverbose.c sock_filter-v.c \
-       sock_filter-v-Xabbrev.c sock_filter-v-Xraw.c \
-       sock_filter-v-Xverbose.c sockaddr_xlat-Xabbrev.c \
-       sockaddr_xlat-Xraw.c sockaddr_xlat-Xverbose.c socketcall.c \
-       sockopt-sol_netlink.c sockopt-timestamp.c splice.c \
-       $(stack_fcall_SOURCES) $(stack_fcall_mangled_SOURCES) stat.c \
-       stat64.c statfs.c statfs64.c statx.c swap.c sxetmask.c \
-       symlink.c symlinkat.c sync.c sync_file_range.c \
-       sync_file_range2.c sysinfo.c syslog.c tee.c threads-execve.c \
+       rt_tgsigqueueinfo--pidns-translation.c run_expect_termsig.c \
+       s390_guarded_storage.c s390_guarded_storage-v.c \
+       s390_pci_mmio_read_write.c s390_runtime_instr.c s390_sthyi.c \
+       s390_sthyi-v.c sched_get_priority_mxx.c \
+       sched_rr_get_interval.c sched_xetaffinity.c \
+       sched_xetaffinity--pidns-translation.c sched_xetattr.c \
+       sched_xetattr--pidns-translation.c sched_xetparam.c \
+       sched_xetparam--pidns-translation.c sched_xetscheduler.c \
+       sched_xetscheduler--pidns-translation.c sched_yield.c \
+       scm_rights.c seccomp-filter.c seccomp-filter-v.c \
+       seccomp-strict.c seccomp_get_action_avail.c select.c \
+       select-P.c semop.c semop-indirect.c semtimedop.c sendfile.c \
+       sendfile64.c set_mempolicy.c set_mempolicy-Xabbrev.c \
+       set_mempolicy-Xraw.c set_mempolicy-Xverbose.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 \
+       setpgrp-exec.c setregid.c setregid32.c setresgid.c \
+       setresgid32.c setresuid.c setresuid32.c setreuid.c \
+       setreuid32.c setrlimit.c setrlimit-Xabbrev.c setrlimit-Xraw.c \
+       setrlimit-Xverbose.c setuid.c setuid32.c shmxt.c shutdown.c \
+       sigaction.c sigaltstack.c siginfo.c signal.c signal_receive.c \
+       signal_receive--pidns-translation.c signalfd4.c sigpending.c \
+       sigprocmask.c sigreturn.c sigsuspend.c sleep.c so_error.c \
+       so_linger.c so_peercred.c so_peercred--pidns-translation.c \
+       so_peercred-Xabbrev.c so_peercred-Xraw.c \
+       so_peercred-Xverbose.c sock_filter-v.c sock_filter-v-Xabbrev.c \
+       sock_filter-v-Xraw.c sock_filter-v-Xverbose.c \
+       sockaddr_xlat-Xabbrev.c sockaddr_xlat-Xraw.c \
+       sockaddr_xlat-Xverbose.c socketcall.c sockopt-sol_netlink.c \
+       sockopt-timestamp.c splice.c $(stack_fcall_SOURCES) \
+       $(stack_fcall_attach_SOURCES) $(stack_fcall_mangled_SOURCES) \
+       stat.c stat64.c statfs.c statfs64.c status-all.c \
+       status-failed.c status-failed-long.c status-failed-status.c \
+       status-none.c status-none-f.c status-none-threads.c \
+       status-successful.c status-successful-long.c \
+       status-successful-status.c status-unfinished.c \
+       status-unfinished-threads.c statx.c strace--strings-in-hex.c \
+       strace--strings-in-hex-all.c \
+       strace--strings-in-hex-non-ascii.c strace-n.c strace-x.c \
+       strace-xx.c swap.c sxetmask.c symlink.c symlinkat.c sync.c \
+       sync_file_range.c sync_file_range2.c sysinfo.c syslog.c \
+       syslog-success.c tee.c tgkill.c tgkill--pidns-translation.c \
+       threads-execve.c threads-execve--quiet-thread-execve.c \
+       threads-execve-q.c threads-execve-qq.c threads-execve-qqq.c \
        time.c timer_create.c timer_xettime.c timerfd_xettime.c \
-       times.c times-fail.c truncate.c truncate64.c ugetrlimit.c \
-       uio.c umask.c umount.c umount2.c umoven-illptr.c umovestr.c \
-       umovestr-illptr.c umovestr2.c umovestr3.c uname.c \
-       unblock_reset_raise.c unix-pair-send-recv.c \
+       times.c times-fail.c tkill.c tkill--pidns-translation.c \
+       tracer_ppid_pgid_sid.c $(trie_test_SOURCES) truncate.c \
+       truncate64.c ugetrlimit.c uio.c umask.c umount.c umount2.c \
+       umoven-illptr.c umovestr.c umovestr-illptr.c umovestr2.c \
+       umovestr3.c umovestr_cached.c umovestr_cached_adjacent.c \
+       uname.c unblock_reset_raise.c unix-pair-send-recv.c \
        unix-pair-sendto-recvfrom.c unlink.c unlinkat.c unshare.c \
        userfaultfd.c ustat.c utime.c utimensat.c utimensat-Xabbrev.c \
        utimensat-Xraw.c utimensat-Xverbose.c utimes.c vfork-f.c \
        vhangup.c vmsplice.c wait4.c wait4-v.c waitid.c waitid-v.c \
        waitpid.c xattr.c xattr-strings.c xet_robust_list.c \
-       xet_thread_area_x86.c xetitimer.c xetpgid.c xetpriority.c \
-       xettimeofday.c zeroargc.c
+       xet_robust_list--pidns-translation.c xet_thread_area_x86.c \
+       xetitimer.c xetpgid.c xetpgid--pidns-translation.c \
+       xetpriority.c xetpriority--pidns-translation.c xettimeofday.c \
+       zeroargc.c
 DIST_SOURCES = $(libtests_a_SOURCES) _newselect.c _newselect-P.c \
        accept.c accept4.c access.c acct.c add_key.c adjtimex.c aio.c \
        aio_pgetevents.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-obj_get_info_by_fd.c \
-       bpf-obj_get_info_by_fd-prog.c bpf-obj_get_info_by_fd-prog-v.c \
-       bpf-obj_get_info_by_fd-v.c bpf-success.c bpf-success-v.c \
-       bpf-v.c brk.c btrfs.c caps.c caps-abbrev.c check_sigblock.c \
+       block_reset_raise_run.c block_reset_run.c bpf.c \
+       bpf-obj_get_info_by_fd.c bpf-obj_get_info_by_fd-prog.c \
+       bpf-obj_get_info_by_fd-prog-v.c bpf-obj_get_info_by_fd-v.c \
+       bpf-success.c bpf-success-long-y.c bpf-success-v.c bpf-v.c \
+       brk.c btrfs.c caps.c caps-abbrev.c check_sigblock.c \
        check_sigign.c chmod.c chown.c chown32.c chroot.c \
        clock_adjtime.c clock_nanosleep.c clock_xettime.c \
-       clone_parent.c clone_ptrace.c copy_file_range.c count-f.c \
-       creat.c delay.c delete_module.c dev-yy.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 \
+       clone-flags.c clone3.c clone3-Xabbrev.c clone3-Xraw.c \
+       clone3-Xverbose.c clone3-success.c clone3-success-Xabbrev.c \
+       clone3-success-Xraw.c clone3-success-Xverbose.c clone_parent.c \
+       clone_parent--quiet-exit.c clone_parent-q.c clone_parent-qq.c \
+       clone_ptrace.c clone_ptrace--quiet-attach.c \
+       clone_ptrace--quiet-exit.c clone_ptrace-q.c clone_ptrace-qq.c \
+       close_range.c close_range-P.c close_range-y.c close_range-yy.c \
+       copy_file_range.c count-f.c creat.c delay.c delete_module.c \
+       dev--decode-fds-dev.c dev--decode-fds-path.c \
+       dev--decode-fds-socket.c dev-yy.c dup.c dup-P.c dup-y.c \
+       dup-yy.c dup2.c dup2-P.c dup2-y.c dup2-yy.c dup3.c dup3-P.c \
+       dup3-y.c dup3-yy.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 faccessat-P.c \
+       faccessat-y.c faccessat-yy.c faccessat2.c faccessat2-P.c \
+       faccessat2-y.c faccessat2-yy.c fadvise64.c fadvise64_64.c \
        fallocate.c fanotify_init.c fanotify_mark.c \
        fanotify_mark-Xabbrev.c fanotify_mark-Xraw.c \
        fanotify_mark-Xverbose.c fchdir.c fchmod.c fchmodat.c fchown.c \
-       fchown32.c fchownat.c fcntl.c fcntl64.c fdatasync.c fflush.c \
-       file_handle.c file_ioctl.c filter-unavailable.c finit_module.c \
-       flock.c fork-f.c fstat.c fstat-Xabbrev.c fstat-Xraw.c \
-       fstat-Xverbose.c fstat64.c fstat64-Xabbrev.c fstat64-Xraw.c \
-       fstat64-Xverbose.c fstatat64.c fstatfs.c fstatfs64.c fsync.c \
-       fsync-y.c ftruncate.c ftruncate64.c futex.c futimesat.c \
-       get_mempolicy.c getcpu.c getcwd.c getdents.c getdents64.c \
-       getegid.c getegid32.c geteuid.c geteuid32.c getgid.c \
-       getgid32.c getgroups.c getgroups32.c getpeername.c getpgrp.c \
-       getpid.c getppid.c getrandom.c getresgid.c getresgid32.c \
-       getresuid.c getresuid32.c getrlimit.c getrusage.c getsid.c \
-       getsockname.c gettid.c getuid.c getuid32.c getxxid.c \
-       group_req.c inet-cmsg.c init_module.c inject-nf.c inotify.c \
-       inotify_init1.c int_0x80.c io_uring_enter.c \
-       io_uring_register.c io_uring_setup.c ioctl.c ioctl_block.c \
-       ioctl_dm.c ioctl_dm-v.c ioctl_evdev.c ioctl_evdev-success.c \
-       ioctl_evdev-success-v.c ioctl_evdev-v.c ioctl_inotify.c \
-       ioctl_kvm_run.c ioctl_kvm_run-v.c ioctl_kvm_run_auxstr_vcpu.c \
-       ioctl_loop.c ioctl_loop-nv.c ioctl_loop-v.c ioctl_mtd.c \
-       ioctl_nbd.c ioctl_nsfs.c ioctl_perf.c ioctl_perf-success.c \
-       ioctl_ptp.c ioctl_random.c ioctl_rtc.c ioctl_rtc-v.c \
-       ioctl_scsi.c ioctl_sg_io_v3.c ioctl_sg_io_v4.c \
-       ioctl_sock_gifconf.c ioctl_uffdio.c ioctl_v4l2.c ioperm.c \
-       iopl.c ioprio.c ioprio-Xabbrev.c ioprio-Xraw.c \
-       ioprio-Xverbose.c ip_mreq.c ipc.c ipc_msg.c ipc_msg-Xabbrev.c \
-       ipc_msg-Xraw.c ipc_msg-Xverbose.c ipc_msgbuf.c \
-       ipc_msgbuf-Xabbrev.c ipc_msgbuf-Xraw.c ipc_msgbuf-Xverbose.c \
-       ipc_sem.c ipc_sem-Xabbrev.c ipc_sem-Xraw.c ipc_sem-Xverbose.c \
-       ipc_shm.c ipc_shm-Xabbrev.c ipc_shm-Xraw.c ipc_shm-Xverbose.c \
-       is_linux_mips_n64.c kcmp.c kcmp-y.c kern_features.c \
+       fchown32.c fchownat.c fcntl.c fcntl--pidns-translation.c \
+       fcntl64.c fcntl64--pidns-translation.c fdatasync.c fflush.c \
+       file_handle.c file_ioctl.c filter-unavailable.c \
+       filter_seccomp-flag.c filter_seccomp-perf.c finit_module.c \
+       flock.c fork--pidns-translation.c fork-f.c fsconfig.c \
+       fsconfig-P.c fsmount.c fsopen.c fspick.c fspick-P.c fstat.c \
+       fstat-Xabbrev.c fstat-Xraw.c fstat-Xverbose.c fstat64.c \
+       fstat64-Xabbrev.c fstat64-Xraw.c fstat64-Xverbose.c \
+       fstatat64.c fstatfs.c fstatfs64.c fsync.c fsync-y.c \
+       ftruncate.c ftruncate64.c futex.c futimesat.c get_mempolicy.c \
+       get_process_reaper.c getcpu.c getcwd.c getdents.c getdents-v.c \
+       getdents64.c getdents64-v.c getegid.c getegid32.c geteuid.c \
+       geteuid32.c getgid.c getgid32.c getgroups.c getgroups32.c \
+       getpeername.c getpgrp.c getpgrp--pidns-translation.c getpid.c \
+       getpid--pidns-translation.c getppid.c getrandom.c getresgid.c \
+       getresgid32.c getresuid.c getresuid32.c getrlimit.c \
+       getrusage.c getsid.c getsid--pidns-translation.c getsockname.c \
+       gettid.c gettid--pidns-translation.c getuid.c getuid32.c \
+       getxgid.c getxpid.c getxuid.c group_req.c inet-cmsg.c \
+       init_module.c inject-nf.c inotify.c inotify_init.c \
+       inotify_init-y.c inotify_init1.c inotify_init1-y.c int_0x80.c \
+       io_uring_enter.c io_uring_register.c io_uring_setup.c ioctl.c \
+       ioctl_block.c ioctl_block--pidns-translation.c ioctl_dm.c \
+       ioctl_dm-v.c ioctl_evdev.c ioctl_evdev-Xabbrev.c \
+       ioctl_evdev-Xraw.c ioctl_evdev-Xverbose.c \
+       ioctl_evdev-success.c ioctl_evdev-success-Xabbrev.c \
+       ioctl_evdev-success-Xraw.c ioctl_evdev-success-Xverbose.c \
+       ioctl_evdev-success-v.c ioctl_evdev-success-v-Xabbrev.c \
+       ioctl_evdev-success-v-Xraw.c ioctl_evdev-success-v-Xverbose.c \
+       ioctl_evdev-v.c ioctl_evdev-v-Xabbrev.c ioctl_evdev-v-Xraw.c \
+       ioctl_evdev-v-Xverbose.c ioctl_hdio.c ioctl_hdio-Xabbrev.c \
+       ioctl_hdio-Xraw.c ioctl_hdio-Xverbose.c ioctl_hdio-success.c \
+       ioctl_hdio-success-Xabbrev.c ioctl_hdio-success-Xraw.c \
+       ioctl_hdio-success-Xverbose.c ioctl_hdio-success-v.c \
+       ioctl_hdio-success-v-Xabbrev.c ioctl_hdio-success-v-Xraw.c \
+       ioctl_hdio-success-v-Xverbose.c ioctl_hdio-v.c \
+       ioctl_hdio-v-Xabbrev.c ioctl_hdio-v-Xraw.c \
+       ioctl_hdio-v-Xverbose.c ioctl_inotify.c ioctl_kvm_run.c \
+       ioctl_kvm_run-v.c ioctl_kvm_run_auxstr_vcpu.c ioctl_loop.c \
+       ioctl_loop-nv.c ioctl_loop-v.c ioctl_mtd.c ioctl_nbd.c \
+       ioctl_nsfs.c ioctl_perf.c ioctl_perf-success.c ioctl_ptp.c \
+       ioctl_random.c ioctl_rtc.c ioctl_rtc-v.c ioctl_scsi.c \
+       ioctl_sg_io_v3.c ioctl_sg_io_v4.c ioctl_sock_gifconf.c \
+       ioctl_tee.c ioctl_uffdio.c ioctl_v4l2.c ioctl_v4l2-Xabbrev.c \
+       ioctl_v4l2-Xraw.c ioctl_v4l2-Xverbose.c ioctl_v4l2-success.c \
+       ioctl_v4l2-success-Xabbrev.c ioctl_v4l2-success-Xraw.c \
+       ioctl_v4l2-success-Xverbose.c ioctl_v4l2-success-v.c \
+       ioctl_v4l2-success-v-Xabbrev.c ioctl_v4l2-success-v-Xraw.c \
+       ioctl_v4l2-success-v-Xverbose.c ioctl_v4l2-v.c \
+       ioctl_v4l2-v-Xabbrev.c ioctl_v4l2-v-Xraw.c \
+       ioctl_v4l2-v-Xverbose.c ioctl_watchdog.c ioperm.c iopl.c \
+       ioprio.c ioprio--pidns-translation.c ioprio-Xabbrev.c \
+       ioprio-Xraw.c ioprio-Xverbose.c ip_mreq.c ipc.c ipc_msg.c \
+       ipc_msg-Xabbrev.c ipc_msg-Xraw.c ipc_msg-Xverbose.c \
+       ipc_msgbuf.c ipc_msgbuf-Xabbrev.c ipc_msgbuf-Xraw.c \
+       ipc_msgbuf-Xverbose.c ipc_sem.c ipc_sem-Xabbrev.c \
+       ipc_sem-Xraw.c ipc_sem-Xverbose.c ipc_shm.c ipc_shm-Xabbrev.c \
+       ipc_shm-Xraw.c ipc_shm-Xverbose.c is_linux_mips_n64.c kcmp.c \
+       kcmp-y.c kcmp-y--pidns-translation.c kern_features.c \
        kernel_version.c kernel_version-Xabbrev.c \
        kernel_version-Xraw.c kernel_version-Xverbose.c \
        kexec_file_load.c kexec_load.c keyctl.c keyctl-Xabbrev.c \
-       keyctl-Xraw.c keyctl-Xverbose.c kill.c kill_child.c ksysent.c \
-       lchown.c lchown32.c link.c linkat.c list_sigaction_signum.c \
-       llseek.c localtime.c lookup_dcookie.c looping_threads.c \
-       lseek.c lstat.c lstat64.c madvise.c mbind.c membarrier.c \
+       keyctl-Xraw.c keyctl-Xverbose.c kill.c \
+       kill--pidns-translation.c kill_child.c ksysent.c lchown.c \
+       lchown32.c link.c linkat.c list_sigaction_signum.c llseek.c \
+       localtime.c lookup_dcookie.c looping_threads.c lseek.c lstat.c \
+       lstat64.c madvise.c maybe_switch_current_tcp.c \
+       maybe_switch_current_tcp--quiet-thread-execve.c mbind.c \
+       mbind-Xabbrev.c mbind-Xraw.c mbind-Xverbose.c membarrier.c \
        memfd_create.c memfd_create-Xabbrev.c memfd_create-Xraw.c \
-       memfd_create-Xverbose.c migrate_pages.c mincore.c mkdir.c \
-       mkdirat.c mknod.c mknodat.c mlock.c mlock2.c mlockall.c mmap.c \
+       memfd_create-Xverbose.c migrate_pages.c \
+       migrate_pages--pidns-translation.c mincore.c mkdir.c mkdirat.c \
+       mknod.c mknodat.c mlock.c mlock2.c mlockall.c mmap.c \
        mmap-Xabbrev.c mmap-Xraw.c mmap-Xverbose.c mmap64.c \
        mmap64-Xabbrev.c mmap64-Xraw.c mmap64-Xverbose.c mmsg.c \
        mmsg-silent.c mmsg_name.c mmsg_name-v.c modify_ldt.c mount.c \
-       mount-Xabbrev.c mount-Xraw.c mount-Xverbose.c move_pages.c \
+       mount-Xabbrev.c mount-Xraw.c mount-Xverbose.c move_mount.c \
+       move_mount-P.c move_pages.c move_pages--pidns-translation.c \
        move_pages-Xabbrev.c move_pages-Xraw.c move_pages-Xverbose.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-packet_mreq.c net-packet_mreq-Xabbrev.c \
+       nanosleep.c net--decode-fds-dev-netlink.c \
+       net--decode-fds-none-netlink.c net--decode-fds-path-netlink.c \
+       net--decode-fds-socket-netlink.c net-accept-connect.c \
+       net-icmp_filter.c net-packet_mreq.c net-packet_mreq-Xabbrev.c \
        net-packet_mreq-Xraw.c net-packet_mreq-Xverbose.c \
-       net-sockaddr.c net-tpacket_req.c net-tpacket_stats.c \
+       net-sockaddr.c net-sockaddr--pidns-translation.c \
+       net-tpacket_req.c net-tpacket_stats.c \
        net-tpacket_stats-success.c net-y-unix.c net-yy-inet.c \
        net-yy-inet6.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 \
+       netlink_audit--pidns-translation.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 \
@@ -3553,89 +4954,123 @@ DIST_SOURCES = $(libtests_a_SOURCES) _newselect.c _newselect-P.c \
        nlattr_fib_rule_hdr.c nlattr_ifaddrlblmsg.c nlattr_ifaddrmsg.c \
        nlattr_ifinfomsg.c nlattr_ifla_af_spec.c nlattr_ifla_brport.c \
        nlattr_ifla_linkinfo.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 nsyscalls-d.c old_mmap.c \
-       old_mmap-P.c old_mmap-Xabbrev.c old_mmap-Xraw.c \
-       old_mmap-Xverbose.c old_mmap-v-none.c oldfstat.c oldlstat.c \
-       oldselect.c oldselect-P.c oldselect-efault.c \
-       oldselect-efault-P.c oldstat.c open.c openat.c \
+       nlattr_ifla_xdp-y.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 nsyscalls-d.c old_mmap.c old_mmap-P.c \
+       old_mmap-Xabbrev.c old_mmap-Xraw.c old_mmap-Xverbose.c \
+       old_mmap-v-none.c oldfstat.c oldlstat.c oldselect.c \
+       oldselect-P.c oldselect-efault.c oldselect-efault-P.c \
+       oldstat.c open.c open_tree.c open_tree-P.c openat.c openat2.c \
+       openat2-Xabbrev.c openat2-Xraw.c openat2-Xverbose.c \
+       openat2-v.c openat2-v-y.c openat2-v-y-Xabbrev.c \
+       openat2-v-y-Xraw.c openat2-v-y-Xverbose.c openat2-y.c \
        orphaned_process_group.c osf_utimes.c pause.c pc.c \
        perf_event_open.c perf_event_open_nonverbose.c \
        perf_event_open_unabbrev.c personality.c personality-Xabbrev.c \
-       personality-Xraw.c personality-Xverbose.c pidfd_send_signal.c \
-       pipe.c pipe2.c pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c \
-       poll-P.c ppoll.c ppoll-P.c ppoll-v.c prctl-arg2-intptr.c \
-       prctl-dumpable.c prctl-name.c prctl-no-args.c \
-       prctl-pdeathsig.c prctl-seccomp-filter-v.c \
+       personality-Xraw.c personality-Xverbose.c pidfd_getfd.c \
+       pidfd_getfd-y.c pidfd_getfd-yy.c pidfd_open.c \
+       pidfd_open--decode-fd-path.c pidfd_open--decode-fd-pidfd.c \
+       pidfd_open--decode-fd-socket.c pidfd_open--pidns-translation.c \
+       pidfd_open-P.c pidfd_open-y.c pidfd_open-yy.c \
+       pidfd_send_signal.c pidfd_send_signal--pidns-translation.c \
+       pidns-cache.c pipe.c pipe2.c pkey_alloc.c pkey_free.c \
+       pkey_mprotect.c poll.c poll-P.c ppoll.c ppoll-P.c ppoll-v.c \
+       prctl-arg2-intptr.c prctl-dumpable.c prctl-name.c \
+       prctl-no-args.c prctl-pdeathsig.c prctl-seccomp-filter-v.c \
        prctl-seccomp-strict.c prctl-securebits.c prctl-spec-inject.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 printpath-umovestr-peekdata.c \
-       printpath-umovestr-undumpable.c printsignal-Xabbrev.c \
-       printsignal-Xraw.c printsignal-Xverbose.c printstr.c \
-       printstrn-umoven.c printstrn-umoven-peekdata.c \
-       printstrn-umoven-undumpable.c prlimit64.c process_vm_readv.c \
-       process_vm_writev.c pselect6.c ptrace.c ptrace_syscall_info.c \
-       pwritev.c qual_fault.c qual_inject-error-signal.c \
-       qual_inject-retval.c qual_inject-signal.c qual_signal.c \
-       quotactl.c quotactl-Xabbrev.c quotactl-Xraw.c \
-       quotactl-Xverbose.c quotactl-success.c quotactl-success-v.c \
-       quotactl-v.c quotactl-xfs.c quotactl-xfs-success.c \
-       quotactl-xfs-success-v.c quotactl-xfs-v.c read-write.c \
-       readahead.c readdir.c readlink.c readlinkat.c readv.c reboot.c \
-       recvfrom.c recvmmsg-timeout.c recvmsg.c redirect-fds.c \
-       remap_file_pages.c remap_file_pages-Xabbrev.c \
+       print_ppid_tracerpid.c printpath-umovestr.c \
+       printpath-umovestr-peekdata.c printpath-umovestr-undumpable.c \
+       printsignal-Xabbrev.c printsignal-Xraw.c \
+       printsignal-Xverbose.c printstr.c printstrn-umoven.c \
+       printstrn-umoven-peekdata.c printstrn-umoven-undumpable.c \
+       prlimit64.c prlimit64--pidns-translation.c process_vm_readv.c \
+       process_vm_readv--pidns-translation.c process_vm_writev.c \
+       process_vm_writev--pidns-translation.c pselect6.c ptrace.c \
+       ptrace_syscall_info.c pwritev.c qual_fault.c \
+       qual_inject-error-signal.c qual_inject-retval.c \
+       qual_inject-signal.c qual_signal.c quotactl.c \
+       quotactl-Xabbrev.c quotactl-Xraw.c quotactl-Xverbose.c \
+       quotactl-success.c quotactl-success-v.c quotactl-v.c \
+       quotactl-xfs.c quotactl-xfs-success.c quotactl-xfs-success-v.c \
+       quotactl-xfs-v.c read-write.c readahead.c readdir.c readlink.c \
+       readlinkat.c readv.c reboot.c recv-MSG_TRUNC.c recvfrom.c \
+       recvfrom-MSG_TRUNC.c recvmmsg-timeout.c recvmsg.c \
+       redirect-fds.c remap_file_pages.c remap_file_pages-Xabbrev.c \
        remap_file_pages-Xraw.c remap_file_pages-Xverbose.c rename.c \
        renameat.c renameat2.c request_key.c restart_syscall.c \
        riscv_flush_icache.c rmdir.c rt_sigaction.c rt_sigpending.c \
-       rt_sigprocmask.c rt_sigqueueinfo.c rt_sigreturn.c \
+       rt_sigprocmask.c rt_sigqueueinfo.c \
+       rt_sigqueueinfo--pidns-translation.c rt_sigreturn.c \
        rt_sigsuspend.c rt_sigtimedwait.c rt_tgsigqueueinfo.c \
-       run_expect_termsig.c s390_guarded_storage.c \
-       s390_guarded_storage-v.c s390_pci_mmio_read_write.c \
-       s390_runtime_instr.c s390_sthyi.c s390_sthyi-v.c \
-       sched_get_priority_mxx.c sched_rr_get_interval.c \
-       sched_xetaffinity.c sched_xetattr.c sched_xetparam.c \
-       sched_xetscheduler.c sched_yield.c scm_rights.c \
-       seccomp-filter.c seccomp-filter-v.c seccomp-strict.c \
-       seccomp_get_action_avail.c select.c select-P.c semop.c \
-       sendfile.c sendfile64.c set_mempolicy.c set_ptracer_any.c \
-       set_sigblock.c set_sigign.c setdomainname.c setfsgid.c \
-       setfsgid32.c setfsuid.c setfsuid32.c setgid.c setgid32.c \
-       setgroups.c setgroups32.c sethostname.c setns.c setregid.c \
-       setregid32.c setresgid.c setresgid32.c setresuid.c \
-       setresuid32.c setreuid.c setreuid32.c setrlimit.c \
-       setrlimit-Xabbrev.c setrlimit-Xraw.c setrlimit-Xverbose.c \
-       setuid.c setuid32.c shmxt.c shutdown.c sigaction.c \
-       sigaltstack.c siginfo.c signal.c signal_receive.c signalfd4.c \
-       sigpending.c sigprocmask.c sigreturn.c sigsuspend.c sleep.c \
-       so_error.c so_linger.c so_peercred.c so_peercred-Xabbrev.c \
-       so_peercred-Xraw.c so_peercred-Xverbose.c sock_filter-v.c \
-       sock_filter-v-Xabbrev.c sock_filter-v-Xraw.c \
-       sock_filter-v-Xverbose.c sockaddr_xlat-Xabbrev.c \
-       sockaddr_xlat-Xraw.c sockaddr_xlat-Xverbose.c socketcall.c \
-       sockopt-sol_netlink.c sockopt-timestamp.c splice.c \
-       $(stack_fcall_SOURCES) $(stack_fcall_mangled_SOURCES) stat.c \
-       stat64.c statfs.c statfs64.c statx.c swap.c sxetmask.c \
-       symlink.c symlinkat.c sync.c sync_file_range.c \
-       sync_file_range2.c sysinfo.c syslog.c tee.c threads-execve.c \
+       rt_tgsigqueueinfo--pidns-translation.c run_expect_termsig.c \
+       s390_guarded_storage.c s390_guarded_storage-v.c \
+       s390_pci_mmio_read_write.c s390_runtime_instr.c s390_sthyi.c \
+       s390_sthyi-v.c sched_get_priority_mxx.c \
+       sched_rr_get_interval.c sched_xetaffinity.c \
+       sched_xetaffinity--pidns-translation.c sched_xetattr.c \
+       sched_xetattr--pidns-translation.c sched_xetparam.c \
+       sched_xetparam--pidns-translation.c sched_xetscheduler.c \
+       sched_xetscheduler--pidns-translation.c sched_yield.c \
+       scm_rights.c seccomp-filter.c seccomp-filter-v.c \
+       seccomp-strict.c seccomp_get_action_avail.c select.c \
+       select-P.c semop.c semop-indirect.c semtimedop.c sendfile.c \
+       sendfile64.c set_mempolicy.c set_mempolicy-Xabbrev.c \
+       set_mempolicy-Xraw.c set_mempolicy-Xverbose.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 \
+       setpgrp-exec.c setregid.c setregid32.c setresgid.c \
+       setresgid32.c setresuid.c setresuid32.c setreuid.c \
+       setreuid32.c setrlimit.c setrlimit-Xabbrev.c setrlimit-Xraw.c \
+       setrlimit-Xverbose.c setuid.c setuid32.c shmxt.c shutdown.c \
+       sigaction.c sigaltstack.c siginfo.c signal.c signal_receive.c \
+       signal_receive--pidns-translation.c signalfd4.c sigpending.c \
+       sigprocmask.c sigreturn.c sigsuspend.c sleep.c so_error.c \
+       so_linger.c so_peercred.c so_peercred--pidns-translation.c \
+       so_peercred-Xabbrev.c so_peercred-Xraw.c \
+       so_peercred-Xverbose.c sock_filter-v.c sock_filter-v-Xabbrev.c \
+       sock_filter-v-Xraw.c sock_filter-v-Xverbose.c \
+       sockaddr_xlat-Xabbrev.c sockaddr_xlat-Xraw.c \
+       sockaddr_xlat-Xverbose.c socketcall.c sockopt-sol_netlink.c \
+       sockopt-timestamp.c splice.c $(stack_fcall_SOURCES) \
+       $(stack_fcall_attach_SOURCES) $(stack_fcall_mangled_SOURCES) \
+       stat.c stat64.c statfs.c statfs64.c status-all.c \
+       status-failed.c status-failed-long.c status-failed-status.c \
+       status-none.c status-none-f.c status-none-threads.c \
+       status-successful.c status-successful-long.c \
+       status-successful-status.c status-unfinished.c \
+       status-unfinished-threads.c statx.c strace--strings-in-hex.c \
+       strace--strings-in-hex-all.c \
+       strace--strings-in-hex-non-ascii.c strace-n.c strace-x.c \
+       strace-xx.c swap.c sxetmask.c symlink.c symlinkat.c sync.c \
+       sync_file_range.c sync_file_range2.c sysinfo.c syslog.c \
+       syslog-success.c tee.c tgkill.c tgkill--pidns-translation.c \
+       threads-execve.c threads-execve--quiet-thread-execve.c \
+       threads-execve-q.c threads-execve-qq.c threads-execve-qqq.c \
        time.c timer_create.c timer_xettime.c timerfd_xettime.c \
-       times.c times-fail.c truncate.c truncate64.c ugetrlimit.c \
-       uio.c umask.c umount.c umount2.c umoven-illptr.c umovestr.c \
-       umovestr-illptr.c umovestr2.c umovestr3.c uname.c \
-       unblock_reset_raise.c unix-pair-send-recv.c \
+       times.c times-fail.c tkill.c tkill--pidns-translation.c \
+       tracer_ppid_pgid_sid.c $(trie_test_SOURCES) truncate.c \
+       truncate64.c ugetrlimit.c uio.c umask.c umount.c umount2.c \
+       umoven-illptr.c umovestr.c umovestr-illptr.c umovestr2.c \
+       umovestr3.c umovestr_cached.c umovestr_cached_adjacent.c \
+       uname.c unblock_reset_raise.c unix-pair-send-recv.c \
        unix-pair-sendto-recvfrom.c unlink.c unlinkat.c unshare.c \
        userfaultfd.c ustat.c utime.c utimensat.c utimensat-Xabbrev.c \
        utimensat-Xraw.c utimensat-Xverbose.c utimes.c vfork-f.c \
        vhangup.c vmsplice.c wait4.c wait4-v.c waitid.c waitid-v.c \
        waitpid.c xattr.c xattr-strings.c xet_robust_list.c \
-       xet_thread_area_x86.c xetitimer.c xetpgid.c xetpriority.c \
-       xettimeofday.c zeroargc.c
+       xet_robust_list--pidns-translation.c xet_thread_area_x86.c \
+       xetitimer.c xetpgid.c xetpgid--pidns-translation.c \
+       xetpriority.c xetpriority--pidns-translation.c xettimeofday.c \
+       zeroargc.c
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -3846,9 +5281,11 @@ am__set_TESTS_bases = \
   bases='$(TEST_LOGS)'; \
   bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
   bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
 RECHECK_LOGS = $(TEST_LOGS)
 AM_RECURSIVE_TARGETS = check recheck
-@ENABLE_STACKTRACE_TRUE@am__EXEEXT_2 = strace-k.test $(am__append_1)
+@ENABLE_STACKTRACE_TRUE@am__EXEEXT_2 = strace-k.test strace-k-p.test \
+@ENABLE_STACKTRACE_TRUE@       $(am__append_1)
 TEST_SUITE_LOG = test-suite.log
 TEST_EXTENSIONS = @EXEEXT@ .test
 am__test_logs1 = $(TESTS:=.log)
@@ -3874,6 +5311,7 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
 AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
@@ -3883,8 +5321,12 @@ BUILD_OBJEXT = @BUILD_OBJEXT@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CC_FOR_BUILD = @CC_FOR_BUILD@
+CC_FOR_M32 = @CC_FOR_M32@
+CC_FOR_MX32 = @CC_FOR_MX32@
 CFLAGS = @CFLAGS@
 CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
+CFLAGS_FOR_M32 = @CFLAGS_FOR_M32@
+CFLAGS_FOR_MX32 = @CFLAGS_FOR_MX32@
 CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@
 CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@
 CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@
@@ -3895,7 +5337,11 @@ COPYRIGHT_YEAR = @COPYRIGHT_YEAR@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@
+CPPFLAGS_FOR_M32 = @CPPFLAGS_FOR_M32@
+CPPFLAGS_FOR_MX32 = @CPPFLAGS_FOR_MX32@
 CPP_FOR_BUILD = @CPP_FOR_BUILD@
+CPP_FOR_M32 = @CPP_FOR_M32@
+CPP_FOR_MX32 = @CPP_FOR_MX32@
 CYGPATH_W = @CYGPATH_W@
 DEB_CHANGELOGTIME = @DEB_CHANGELOGTIME@
 DEFS = @DEFS@
@@ -3937,7 +5383,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
 PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
-PERL = @PERL@
 RANLIB = @RANLIB@
 READELF = @READELF@
 RPM_CHANGELOGTIME = @RPM_CHANGELOGTIME@
@@ -3956,6 +5401,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CC_FOR_BUILD = @ac_ct_CC_FOR_BUILD@
 am__include = @am__include@
@@ -4046,6 +5492,7 @@ AM_CPPFLAGS = $(ARCH_MFLAGS) \
 AM_LDFLAGS = $(ARCH_MFLAGS)
 libtests_a_SOURCES = \
        create_nl_socket.c \
+       create_tmpfile.c \
        errno2name.c \
        error_msg.c \
        fill_memory.c \
@@ -4057,15 +5504,21 @@ libtests_a_SOURCES = \
        inode_of_sockfd.c \
        libmmsg.c \
        libsocketcall.c \
+       lock_file.c \
        overflowuid.c \
+       pidns.c \
+       pidns.h \
        pipe_maxfd.c \
        print_quoted_string.c \
        print_time.c \
        printflags.c \
-       printxval.c \
+       printxval-Xabbrev.c \
+       printxval-Xraw.c \
+       printxval-Xverbose.c \
        signal2name.c \
        skip_unavailable.c \
        sprintrc.c \
+       status.c \
        tail_alloc.c \
        test_netlink.h \
        test_nlattr.h \
@@ -4075,6 +5528,7 @@ libtests_a_SOURCES = \
        test_ucopy.h \
        tests.h \
        tprintf.c \
+       xmalloc_for_tests.c \
        # end of libtests_a_SOURCES
 
 libtests_a_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
@@ -4094,10 +5548,6 @@ PURE_EXECUTABLES = \
   aio_pgetevents \
   alarm \
   bpf \
-  bpf-obj_get_info_by_fd \
-  bpf-obj_get_info_by_fd-prog \
-  bpf-obj_get_info_by_fd-prog-v \
-  bpf-obj_get_info_by_fd-v \
   bpf-v \
   brk \
   btrfs \
@@ -4109,13 +5559,34 @@ PURE_EXECUTABLES = \
   clock_adjtime \
   clock_nanosleep \
   clock_xettime \
+  clone-flags \
+  clone3 \
+  clone3-Xabbrev \
+  clone3-Xraw \
+  clone3-Xverbose \
+  close_range \
+  close_range-P \
+  close_range-y \
+  close_range-yy \
   copy_file_range \
   creat \
   delete_module \
+  dev--decode-fds-dev \
+  dev--decode-fds-path \
+  dev--decode-fds-socket \
   dev-yy \
   dup \
+  dup-P \
+  dup-y \
+  dup-yy \
   dup2 \
+  dup2-P \
+  dup2-y \
+  dup2-yy \
   dup3 \
+  dup3-P \
+  dup3-y \
+  dup3-yy \
   epoll_create \
   epoll_create1 \
   epoll_ctl \
@@ -4126,6 +5597,13 @@ PURE_EXECUTABLES = \
   execve \
   execveat \
   faccessat \
+  faccessat-P \
+  faccessat-y \
+  faccessat-yy \
+  faccessat2 \
+  faccessat2-P \
+  faccessat2-y \
+  faccessat2-yy \
   fadvise64 \
   fadvise64_64 \
   fallocate \
@@ -4148,6 +5626,12 @@ PURE_EXECUTABLES = \
   file_ioctl \
   finit_module \
   flock \
+  fsconfig \
+  fsconfig-P \
+  fsmount \
+  fsopen \
+  fspick \
+  fspick-P \
   fstat \
   fstat-Xabbrev \
   fstat-Xraw \
@@ -4168,7 +5652,9 @@ PURE_EXECUTABLES = \
   getcpu \
   getcwd \
   getdents \
+  getdents-v \
   getdents64 \
+  getdents64-v \
   getegid \
   getegid32 \
   geteuid \
@@ -4192,12 +5678,17 @@ PURE_EXECUTABLES = \
   getsockname \
   getuid \
   getuid32 \
-  getxxid \
+  getxgid \
+  getxpid \
+  getxuid \
   group_req \
   inet-cmsg \
   init_module \
   inotify \
+  inotify_init \
+  inotify_init-y \
   inotify_init1 \
+  inotify_init1-y \
   io_uring_enter \
   io_uring_register \
   io_uring_setup \
@@ -4205,6 +5696,21 @@ PURE_EXECUTABLES = \
   ioctl_block \
   ioctl_dm \
   ioctl_evdev \
+  ioctl_evdev-Xabbrev \
+  ioctl_evdev-Xraw \
+  ioctl_evdev-Xverbose \
+  ioctl_evdev-v \
+  ioctl_evdev-v-Xabbrev \
+  ioctl_evdev-v-Xraw \
+  ioctl_evdev-v-Xverbose \
+  ioctl_hdio \
+  ioctl_hdio-Xabbrev \
+  ioctl_hdio-Xraw \
+  ioctl_hdio-Xverbose \
+  ioctl_hdio-v \
+  ioctl_hdio-v-Xabbrev \
+  ioctl_hdio-v-Xraw \
+  ioctl_hdio-v-Xverbose \
   ioctl_inotify \
   ioctl_kvm_run \
   ioctl_kvm_run-v \
@@ -4220,8 +5726,17 @@ PURE_EXECUTABLES = \
   ioctl_sg_io_v3 \
   ioctl_sg_io_v4 \
   ioctl_sock_gifconf \
+  ioctl_tee \
   ioctl_uffdio \
   ioctl_v4l2 \
+  ioctl_v4l2-Xabbrev \
+  ioctl_v4l2-Xraw \
+  ioctl_v4l2-Xverbose \
+  ioctl_v4l2-v \
+  ioctl_v4l2-v-Xabbrev \
+  ioctl_v4l2-v-Xraw \
+  ioctl_v4l2-v-Xverbose \
+  ioctl_watchdog \
   ioperm \
   iopl \
   ioprio \
@@ -4270,7 +5785,12 @@ PURE_EXECUTABLES = \
   lstat \
   lstat64 \
   madvise \
+  maybe_switch_current_tcp \
+  maybe_switch_current_tcp--quiet-thread-execve \
   mbind \
+  mbind-Xabbrev \
+  mbind-Xraw \
+  mbind-Xverbose \
   membarrier \
   memfd_create \
   memfd_create-Xabbrev \
@@ -4300,6 +5820,8 @@ PURE_EXECUTABLES = \
   mount-Xabbrev \
   mount-Xraw \
   mount-Xverbose \
+  move_mount \
+  move_mount-P \
   move_pages \
   move_pages-Xabbrev \
   move_pages-Xraw \
@@ -4312,6 +5834,10 @@ PURE_EXECUTABLES = \
   msg_name \
   munlockall \
   nanosleep \
+  net--decode-fds-dev-netlink \
+  net--decode-fds-none-netlink \
+  net--decode-fds-path-netlink \
+  net--decode-fds-socket-netlink \
   net-icmp_filter \
   net-packet_mreq \
   net-packet_mreq-Xabbrev \
@@ -4391,7 +5917,19 @@ PURE_EXECUTABLES = \
   oldselect-efault \
   oldstat \
   open \
+  open_tree \
+  open_tree-P \
   openat \
+  openat2 \
+  openat2-Xabbrev \
+  openat2-Xraw \
+  openat2-Xverbose \
+  openat2-v \
+  openat2-v-y \
+  openat2-v-y-Xabbrev \
+  openat2-v-y-Xraw \
+  openat2-v-y-Xverbose \
+  openat2-y \
   osf_utimes \
   pause \
   perf_event_open \
@@ -4399,6 +5937,16 @@ PURE_EXECUTABLES = \
   personality-Xabbrev \
   personality-Xraw \
   personality-Xverbose \
+  pidfd_getfd \
+  pidfd_getfd-y \
+  pidfd_getfd-yy \
+  pidfd_open \
+  pidfd_open--decode-fd-path \
+  pidfd_open--decode-fd-pidfd \
+  pidfd_open--decode-fd-socket \
+  pidfd_open-P \
+  pidfd_open-y \
+  pidfd_open-yy \
   pidfd_send_signal \
   pipe \
   pipe2 \
@@ -4406,9 +5954,7 @@ PURE_EXECUTABLES = \
   pkey_free \
   pkey_mprotect \
   poll \
-  poll-P \
   ppoll \
-  ppoll-P \
   prctl-arg2-intptr \
   prctl-dumpable \
   prctl-name \
@@ -4450,7 +5996,9 @@ PURE_EXECUTABLES = \
   readlinkat \
   readv \
   reboot \
+  recv-MSG_TRUNC \
   recvfrom \
+  recvfrom-MSG_TRUNC \
   recvmmsg-timeout \
   recvmsg \
   remap_file_pages \
@@ -4488,9 +6036,14 @@ PURE_EXECUTABLES = \
   seccomp_get_action_avail \
   select \
   semop \
+  semop-indirect \
+  semtimedop \
   sendfile \
   sendfile64 \
   set_mempolicy \
+  set_mempolicy-Xabbrev \
+  set_mempolicy-Xraw \
+  set_mempolicy-Xverbose \
   setdomainname \
   setfsgid \
   setfsgid32 \
@@ -4548,7 +6101,23 @@ PURE_EXECUTABLES = \
   stat64 \
   statfs \
   statfs64 \
+  status-all \
+  status-failed \
+  status-failed-long \
+  status-failed-status \
+  status-none \
+  status-none-f \
+  status-successful \
+  status-successful-long \
+  status-successful-status \
+  status-unfinished \
   statx \
+  strace--strings-in-hex \
+  strace--strings-in-hex-all \
+  strace--strings-in-hex-non-ascii \
+  strace-n \
+  strace-x \
+  strace-xx \
   swap \
   sxetmask \
   symlink \
@@ -4559,12 +6128,14 @@ PURE_EXECUTABLES = \
   sysinfo \
   syslog \
   tee \
+  tgkill \
   time \
   timer_create \
   timer_xettime \
   timerfd_xettime \
   times \
   times-fail \
+  tkill \
   truncate \
   truncate64 \
   ugetrlimit \
@@ -4577,6 +6148,8 @@ PURE_EXECUTABLES = \
   umovestr-illptr \
   umovestr2 \
   umovestr3 \
+  umovestr_cached \
+  umovestr_cached_adjacent \
   uname \
   unlink \
   unlinkat \
@@ -4614,6 +6187,8 @@ ftruncate64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 localtime_LDADD = $(clock_LIBS) $(LDADD)
 looping_threads_LDADD = -lpthread $(LDADD)
 lstat64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
+maybe_switch_current_tcp_LDADD = -lpthread $(LDADD)
+maybe_switch_current_tcp__quiet_thread_execve_LDADD = -lpthread $(LDADD)
 mmap64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 mmap64_Xabbrev_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 mmap64_Xraw_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
@@ -4627,17 +6202,30 @@ preadv_pwritev_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 pwritev_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 stat64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 statfs_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
+status_none_threads_LDADD = -lpthread $(LDADD)
+status_unfinished_threads_LDADD = -lpthread $(LDADD)
 threads_execve_LDADD = -lpthread $(clock_LIBS) $(LDADD)
+threads_execve__quiet_thread_execve_LDADD = -lpthread $(clock_LIBS) $(LDADD)
+threads_execve_q_LDADD = -lpthread $(clock_LIBS) $(LDADD)
+threads_execve_qq_LDADD = -lpthread $(clock_LIBS) $(LDADD)
+threads_execve_qqq_LDADD = -lpthread $(clock_LIBS) $(LDADD)
 times_LDADD = $(clock_LIBS) $(LDADD)
 truncate64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 uio_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 stack_fcall_SOURCES = stack-fcall.c \
        stack-fcall-0.c stack-fcall-1.c stack-fcall-2.c stack-fcall-3.c
 
+stack_fcall_attach_SOURCES = stack-fcall-attach.c \
+       stack-fcall-0.c stack-fcall-1.c stack-fcall-2.c stack-fcall-3.c
+
 stack_fcall_mangled_SOURCES = stack-fcall-mangled.c \
        stack-fcall-mangled-0.c stack-fcall-mangled-1.c \
        stack-fcall-mangled-2.c stack-fcall-mangled-3.c
 
+trie_test_SOURCES = trie_test.c trie_for_tests.c
+trie_test_CPPFLAGS = $(AM_CPPFLAGS) $(CODE_COVERAGE_CPPFLAGS)
+trie_test_CFLAGS = $(AM_CFLAGS) $(CODE_COVERAGE_CFLAGS)
+trie_test_LDADD = $(LDADD) $(CODE_COVERAGE_LIBS)
 
 # Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in; do not edit.
 GEN_TESTS = _newselect.gen.test _newselect-P.gen.test accept.gen.test \
@@ -4651,50 +6239,114 @@ GEN_TESTS = _newselect.gen.test _newselect-P.gen.test accept.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 \
-       dev-yy.gen.test dup.gen.test dup2.gen.test dup3.gen.test \
+       clone3.gen.test clone3-Xabbrev.gen.test clone3-Xraw.gen.test \
+       clone3-Xverbose.gen.test clone3-success-Xabbrev.gen.test \
+       clone3-success-Xraw.gen.test clone3-success-Xverbose.gen.test \
+       clone_parent.gen.test clone_parent--quiet-exit.gen.test \
+       clone_parent-q.gen.test clone_parent-qq.gen.test \
+       clone_ptrace--quiet-attach.gen.test \
+       clone_ptrace--quiet-exit.gen.test clone_ptrace-q.gen.test \
+       clone_ptrace-qq.gen.test close_range.gen.test \
+       close_range-P.gen.test close_range-y.gen.test \
+       close_range-yy.gen.test copy_file_range.gen.test \
+       creat.gen.test delete_module.gen.test \
+       dev--decode-fds-dev.gen.test dev--decode-fds-path.gen.test \
+       dev--decode-fds-socket.gen.test dev-yy.gen.test dup.gen.test \
+       dup-P.gen.test dup-y.gen.test dup-yy.gen.test dup2.gen.test \
+       dup2-P.gen.test dup2-y.gen.test dup2-yy.gen.test dup3.gen.test \
+       dup3-P.gen.test dup3-y.gen.test dup3-yy.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 \
+       faccessat-P.gen.test faccessat-y.gen.test \
+       faccessat-yy.gen.test faccessat2-P.gen.test \
+       faccessat2-y.gen.test faccessat2-yy.gen.test \
+       fadvise64_64.gen.test fallocate.gen.test \
        fanotify_init.gen.test fanotify_mark.gen.test \
        fanotify_mark-Xabbrev.gen.test fanotify_mark-Xraw.gen.test \
        fanotify_mark-Xverbose.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 fstat-Xabbrev.gen.test \
-       fstat-Xraw.gen.test fstat-Xverbose.gen.test fstat64.gen.test \
+       fcntl--pidns-translation.gen.test fcntl64.gen.test \
+       fcntl64--pidns-translation.gen.test fdatasync.gen.test \
+       file_handle.gen.test file_ioctl.gen.test \
+       filter_seccomp.gen.test filter_seccomp-flag.gen.test \
+       finit_module.gen.test flock.gen.test fork-f.gen.test \
+       fsconfig.gen.test fsconfig-P.gen.test fsmount.gen.test \
+       fsopen.gen.test fspick.gen.test fspick-P.gen.test \
+       fstat.gen.test fstat-Xabbrev.gen.test fstat-Xraw.gen.test \
+       fstat-Xverbose.gen.test fstat64.gen.test \
        fstat64-Xabbrev.gen.test fstat64-Xraw.gen.test \
        fstat64-Xverbose.gen.test fstatat64.gen.test fstatfs.gen.test \
        fstatfs64.gen.test fsync.gen.test fsync-y.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 \
+       getdents.gen.test getdents-v.gen.test getdents64.gen.test \
+       getdents64-v.gen.test getegid.gen.test getegid-creds.gen.test \
+       getegid32.gen.test getegid32-creds.gen.test geteuid.gen.test \
+       geteuid-creds.gen.test geteuid32.gen.test \
+       geteuid32-creds.gen.test getgid.gen.test getgid-creds.gen.test \
+       getgid32.gen.test getgid32-creds.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 io_uring_enter.gen.test \
-       io_uring_register.gen.test io_uring_setup.gen.test \
-       ioctl_block.gen.test ioctl_dm.gen.test ioctl_dm-v.gen.test \
-       ioctl_evdev.gen.test ioctl_evdev-v.gen.test \
-       ioctl_inotify.gen.test ioctl_kvm_run.gen.test \
-       ioctl_kvm_run-v.gen.test ioctl_kvm_run_auxstr_vcpu.gen.test \
-       ioctl_loop.gen.test ioctl_loop-nv.gen.test \
-       ioctl_loop-v.gen.test ioctl_mtd.gen.test ioctl_nbd.gen.test \
-       ioctl_nsfs.gen.test ioctl_perf.gen.test ioctl_ptp.gen.test \
-       ioctl_random.gen.test ioctl_rtc.gen.test ioctl_rtc-v.gen.test \
-       ioctl_scsi.gen.test ioctl_sg_io_v3.gen.test \
-       ioctl_sg_io_v4.gen.test ioctl_sock_gifconf.gen.test \
-       ioctl_uffdio.gen.test ioctl_v4l2.gen.test ioperm.gen.test \
-       iopl.gen.test ioprio.gen.test ioprio-Xabbrev.gen.test \
+       getpgrp--pidns-translation.gen.test getpid.gen.test \
+       getpid--pidns-translation.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 \
+       getsid--pidns-translation.gen.test getsockname.gen.test \
+       gettid.gen.test getuid-creds.gen.test getuid32.gen.test \
+       getuid32-creds.gen.test getxgid.gen.test getxpid.gen.test \
+       getxuid.gen.test group_req.gen.test inet-cmsg.gen.test \
+       init_module.gen.test inotify.gen.test inotify_init.gen.test \
+       inotify_init1.gen.test inotify_init1-y.gen.test \
+       io_uring_enter.gen.test io_uring_register.gen.test \
+       io_uring_setup.gen.test ioctl_block.gen.test ioctl_dm.gen.test \
+       ioctl_dm-v.gen.test ioctl_evdev.gen.test \
+       ioctl_evdev-Xabbrev.gen.test ioctl_evdev-Xraw.gen.test \
+       ioctl_evdev-Xverbose.gen.test ioctl_evdev-v.gen.test \
+       ioctl_evdev-v-Xabbrev.gen.test ioctl_evdev-v-Xraw.gen.test \
+       ioctl_evdev-v-Xverbose.gen.test \
+       ioctl_evdev-success-Xabbrev.gen.test \
+       ioctl_evdev-success-Xraw.gen.test \
+       ioctl_evdev-success-Xverbose.gen.test \
+       ioctl_evdev-success-v.gen.test \
+       ioctl_evdev-success-v-Xabbrev.gen.test \
+       ioctl_evdev-success-v-Xraw.gen.test \
+       ioctl_evdev-success-v-Xverbose.gen.test ioctl_hdio.gen.test \
+       ioctl_hdio-Xabbrev.gen.test ioctl_hdio-Xraw.gen.test \
+       ioctl_hdio-Xverbose.gen.test ioctl_hdio-v.gen.test \
+       ioctl_hdio-v-Xabbrev.gen.test ioctl_hdio-v-Xraw.gen.test \
+       ioctl_hdio-v-Xverbose.gen.test ioctl_hdio-success.gen.test \
+       ioctl_hdio-success-Xabbrev.gen.test \
+       ioctl_hdio-success-Xraw.gen.test \
+       ioctl_hdio-success-Xverbose.gen.test \
+       ioctl_hdio-success-v.gen.test \
+       ioctl_hdio-success-v-Xabbrev.gen.test \
+       ioctl_hdio-success-v-Xraw.gen.test \
+       ioctl_hdio-success-v-Xverbose.gen.test ioctl_inotify.gen.test \
+       ioctl_kvm_run.gen.test ioctl_kvm_run-v.gen.test \
+       ioctl_kvm_run_auxstr_vcpu.gen.test ioctl_loop.gen.test \
+       ioctl_loop-nv.gen.test ioctl_loop-v.gen.test \
+       ioctl_mtd.gen.test ioctl_nbd.gen.test ioctl_nsfs.gen.test \
+       ioctl_perf.gen.test ioctl_perf-success.gen.test \
+       ioctl_ptp.gen.test ioctl_random.gen.test ioctl_rtc.gen.test \
+       ioctl_rtc-v.gen.test ioctl_scsi.gen.test \
+       ioctl_sg_io_v3.gen.test ioctl_sg_io_v4.gen.test \
+       ioctl_sock_gifconf.gen.test ioctl_tee.gen.test \
+       ioctl_uffdio.gen.test ioctl_v4l2.gen.test \
+       ioctl_v4l2-Xabbrev.gen.test ioctl_v4l2-Xraw.gen.test \
+       ioctl_v4l2-Xverbose.gen.test ioctl_v4l2-v.gen.test \
+       ioctl_v4l2-v-Xabbrev.gen.test ioctl_v4l2-v-Xraw.gen.test \
+       ioctl_v4l2-v-Xverbose.gen.test ioctl_v4l2-success.gen.test \
+       ioctl_v4l2-success-Xabbrev.gen.test \
+       ioctl_v4l2-success-Xraw.gen.test \
+       ioctl_v4l2-success-Xverbose.gen.test \
+       ioctl_v4l2-success-v.gen.test \
+       ioctl_v4l2-success-v-Xabbrev.gen.test \
+       ioctl_v4l2-success-v-Xraw.gen.test \
+       ioctl_v4l2-success-v-Xverbose.gen.test ioctl_watchdog.gen.test \
+       ioperm.gen.test iopl.gen.test ioprio.gen.test \
+       ioprio--pidns-translation.gen.test ioprio-Xabbrev.gen.test \
        ioprio-Xraw.gen.test ioprio-Xverbose.gen.test ip_mreq.gen.test \
        ipc.gen.test ipc_msg.gen.test ipc_msg-Xabbrev.gen.test \
        ipc_msg-Xraw.gen.test ipc_msg-Xverbose.gen.test \
@@ -4704,34 +6356,47 @@ GEN_TESTS = _newselect.gen.test _newselect-P.gen.test accept.gen.test \
        ipc_sem-Xverbose.gen.test ipc_shm.gen.test \
        ipc_shm-Xabbrev.gen.test ipc_shm-Xraw.gen.test \
        ipc_shm-Xverbose.gen.test kcmp.gen.test kcmp-y.gen.test \
-       kern_features.gen.test kernel_version.gen.test \
-       kernel_version-Xabbrev.gen.test kernel_version-Xraw.gen.test \
-       kernel_version-Xverbose.gen.test kexec_file_load.gen.test \
-       kexec_load.gen.test keyctl.gen.test keyctl-Xabbrev.gen.test \
-       keyctl-Xraw.gen.test keyctl-Xverbose.gen.test kill.gen.test \
+       kcmp-y--pidns-translation.gen.test kern_features.gen.test \
+       kernel_version.gen.test kernel_version-Xabbrev.gen.test \
+       kernel_version-Xraw.gen.test kernel_version-Xverbose.gen.test \
+       kexec_file_load.gen.test kexec_load.gen.test keyctl.gen.test \
+       keyctl-Xabbrev.gen.test keyctl-Xraw.gen.test \
+       keyctl-Xverbose.gen.test kill.gen.test \
+       kill--pidns-translation.gen.test ksysent.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 \
-       memfd_create-Xabbrev.gen.test memfd_create-Xraw.gen.test \
-       memfd_create-Xverbose.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 \
+       lstat64.gen.test madvise.gen.test \
+       maybe_switch_current_tcp.gen.test \
+       maybe_switch_current_tcp--quiet-thread-execve.gen.test \
+       mbind.gen.test mbind-Xabbrev.gen.test mbind-Xraw.gen.test \
+       mbind-Xverbose.gen.test membarrier.gen.test \
+       memfd_create.gen.test memfd_create-Xabbrev.gen.test \
+       memfd_create-Xraw.gen.test memfd_create-Xverbose.gen.test \
+       migrate_pages.gen.test \
+       migrate_pages--pidns-translation.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 mmap-Xabbrev.gen.test mmap-Xraw.gen.test \
        mmap-Xverbose.gen.test mmap64.gen.test mmap64-Xabbrev.gen.test \
        mmap64-Xraw.gen.test mmap64-Xverbose.gen.test mmsg.gen.test \
        mmsg-silent.gen.test mmsg_name.gen.test mmsg_name-v.gen.test \
        modify_ldt.gen.test mount.gen.test mount-Xabbrev.gen.test \
        mount-Xraw.gen.test mount-Xverbose.gen.test \
-       move_pages.gen.test move_pages-Xabbrev.gen.test \
-       move_pages-Xraw.gen.test move_pages-Xverbose.gen.test \
-       mq.gen.test mq_sendrecv.gen.test mq_sendrecv-read.gen.test \
+       move_mount.gen.test move_mount-P.gen.test move_pages.gen.test \
+       move_pages-Xabbrev.gen.test move_pages-Xraw.gen.test \
+       move_pages-Xverbose.gen.test \
+       move_pages--pidns-translation.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-packet_mreq.gen.test net-packet_mreq-Xabbrev.gen.test \
-       net-packet_mreq-Xraw.gen.test \
+       nanosleep.gen.test net--decode-fds-dev-netlink.gen.test \
+       net--decode-fds-none-netlink.gen.test \
+       net--decode-fds-path-netlink.gen.test \
+       net--decode-fds-socket-netlink.gen.test \
+       net-icmp_filter.gen.test net-packet_mreq.gen.test \
+       net-packet_mreq-Xabbrev.gen.test net-packet_mreq-Xraw.gen.test \
        net-packet_mreq-Xverbose.gen.test net-sockaddr.gen.test \
+       net-sockaddr--pidns-translation.gen.test \
        net-tpacket_req.gen.test net-tpacket_stats.gen.test \
        net-yy-inet6.gen.test netlink_audit.gen.test \
        netlink_crypto.gen.test netlink_generic.gen.test \
@@ -4750,7 +6415,8 @@ GEN_TESTS = _newselect.gen.test _newselect-P.gen.test accept.gen.test \
        nlattr_ifaddrmsg.gen.test nlattr_ifinfomsg.gen.test \
        nlattr_ifla_af_spec.gen.test nlattr_ifla_brport.gen.test \
        nlattr_ifla_linkinfo.gen.test nlattr_ifla_port.gen.test \
-       nlattr_ifla_xdp.gen.test nlattr_inet_diag_msg.gen.test \
+       nlattr_ifla_xdp.gen.test nlattr_ifla_xdp-y.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 \
@@ -4767,31 +6433,50 @@ GEN_TESTS = _newselect.gen.test _newselect-P.gen.test accept.gen.test \
        old_mmap-v-none.gen.test oldfstat.gen.test oldlstat.gen.test \
        oldselect.gen.test oldselect-P.gen.test \
        oldselect-efault.gen.test oldselect-efault-P.gen.test \
-       oldstat.gen.test open.gen.test openat.gen.test \
-       orphaned_process_group.gen.test osf_utimes.gen.test \
-       pause.gen.test perf_event_open.gen.test \
+       oldstat.gen.test open.gen.test open_tree.gen.test \
+       open_tree-P.gen.test openat.gen.test openat2.gen.test \
+       openat2-Xabbrev.gen.test openat2-Xraw.gen.test \
+       openat2-Xverbose.gen.test openat2-v.gen.test \
+       openat2-v-y.gen.test openat2-v-y-Xabbrev.gen.test \
+       openat2-v-y-Xraw.gen.test openat2-v-y-Xverbose.gen.test \
+       openat2-y.gen.test orphaned_process_group.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 personality-Xabbrev.gen.test \
        personality-Xraw.gen.test personality-Xverbose.gen.test \
-       pidfd_send_signal.gen.test pipe2.gen.test pkey_alloc.gen.test \
-       pkey_free.gen.test pkey_mprotect.gen.test ppoll.gen.test \
-       ppoll-P.gen.test ppoll-v.gen.test pread64-pwrite64.gen.test \
-       preadv.gen.test preadv-pwritev.gen.test \
-       preadv2-pwritev2.gen.test printpath-umovestr.gen.test \
+       pidfd_getfd.gen.test pidfd_getfd-y.gen.test \
+       pidfd_getfd-yy.gen.test pidfd_open.gen.test \
+       pidfd_open--decode-fd-path.gen.test \
+       pidfd_open--decode-fd-pidfd.gen.test \
+       pidfd_open--decode-fd-socket.gen.test pidfd_open-P.gen.test \
+       pidfd_open-y.gen.test pidfd_open-yy.gen.test \
+       pidfd_open--pidns-translation.gen.test \
+       pidfd_send_signal.gen.test \
+       pidfd_send_signal--pidns-translation.gen.test pipe2.gen.test \
+       pkey_alloc.gen.test pkey_free.gen.test pkey_mprotect.gen.test \
+       ppoll.gen.test ppoll-P.gen.test ppoll-v.gen.test \
+       pread64-pwrite64.gen.test preadv.gen.test \
+       preadv-pwritev.gen.test preadv2-pwritev2.gen.test \
+       printpath-umovestr.gen.test \
        printpath-umovestr-peekdata.gen.test \
        printpath-umovestr-undumpable.gen.test \
        printsignal-Xabbrev.gen.test printsignal-Xraw.gen.test \
        printsignal-Xverbose.gen.test printstr.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 \
+       prlimit64--pidns-translation.gen.test \
+       process_vm_readv.gen.test \
+       process_vm_readv--pidns-translation.gen.test \
+       process_vm_writev.gen.test \
+       process_vm_writev--pidns-translation.gen.test \
        pselect6.gen.test ptrace.gen.test ptrace_syscall_info.gen.test \
        pwritev.gen.test quotactl.gen.test quotactl-Xabbrev.gen.test \
        quotactl-Xraw.gen.test quotactl-Xverbose.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 \
+       reboot.gen.test recv-MSG_TRUNC.gen.test recvfrom.gen.test \
+       recvfrom-MSG_TRUNC.gen.test recvmmsg-timeout.gen.test \
        recvmsg.gen.test regex.gen.test remap_file_pages.gen.test \
        remap_file_pages-Xabbrev.gen.test \
        remap_file_pages-Xraw.gen.test \
@@ -4799,72 +6484,133 @@ GEN_TESTS = _newselect.gen.test _newselect-P.gen.test accept.gen.test \
        renameat.gen.test renameat2.gen.test request_key.gen.test \
        riscv_flush_icache.gen.test rmdir.gen.test \
        rt_sigpending.gen.test rt_sigprocmask.gen.test \
-       rt_sigqueueinfo.gen.test rt_sigreturn.gen.test \
-       rt_sigsuspend.gen.test rt_sigtimedwait.gen.test \
-       rt_tgsigqueueinfo.gen.test s390_guarded_storage.gen.test \
-       s390_guarded_storage-v.gen.test \
+       rt_sigqueueinfo.gen.test \
+       rt_sigqueueinfo--pidns-translation.gen.test \
+       rt_sigreturn.gen.test rt_sigsuspend.gen.test \
+       rt_sigtimedwait.gen.test rt_tgsigqueueinfo.gen.test \
+       rt_tgsigqueueinfo--pidns-translation.gen.test \
+       s390_guarded_storage.gen.test s390_guarded_storage-v.gen.test \
        s390_pci_mmio_read_write.gen.test s390_runtime_instr.gen.test \
        s390_sthyi.gen.test s390_sthyi-v.gen.test sched.gen.test \
        sched_get_priority_mxx.gen.test sched_rr_get_interval.gen.test \
-       sched_xetaffinity.gen.test sched_xetattr.gen.test \
-       sched_xetparam.gen.test sched_xetscheduler.gen.test \
+       sched_xetaffinity.gen.test \
+       sched_xetaffinity--pidns-translation.gen.test \
+       sched_xetattr.gen.test \
+       sched_xetattr--pidns-translation.gen.test \
+       sched_xetparam.gen.test \
+       sched_xetparam--pidns-translation.gen.test \
+       sched_xetscheduler.gen.test \
+       sched_xetscheduler--pidns-translation.gen.test \
        sched_yield.gen.test seccomp-filter.gen.test \
        seccomp-filter-v.gen.test seccomp_get_action_avail.gen.test \
        select.gen.test select-P.gen.test semop.gen.test \
-       sendfile.gen.test sendfile64.gen.test set_mempolicy.gen.test \
-       setdomainname.gen.test setfsgid.gen.test setfsgid32.gen.test \
-       setfsuid.gen.test setfsuid32.gen.test setgid.gen.test \
-       setgid32.gen.test setgroups.gen.test setgroups32.gen.test \
-       sethostname.gen.test setns.gen.test setregid.gen.test \
-       setregid32.gen.test setresgid.gen.test setresgid32.gen.test \
-       setresuid.gen.test setresuid32.gen.test setreuid.gen.test \
-       setreuid32.gen.test setrlimit.gen.test \
-       setrlimit-Xabbrev.gen.test setrlimit-Xraw.gen.test \
-       setrlimit-Xverbose.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_error.gen.test \
-       so_linger.gen.test so_peercred.gen.test \
-       so_peercred-Xabbrev.gen.test so_peercred-Xraw.gen.test \
-       so_peercred-Xverbose.gen.test sock_filter-v.gen.test \
+       semop-indirect.gen.test semtimedop.gen.test sendfile.gen.test \
+       sendfile64.gen.test set_mempolicy.gen.test \
+       set_mempolicy-Xabbrev.gen.test set_mempolicy-Xraw.gen.test \
+       set_mempolicy-Xverbose.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 setrlimit-Xabbrev.gen.test \
+       setrlimit-Xraw.gen.test setrlimit-Xverbose.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 \
+       signal_receive--pidns-translation.gen.test signalfd4.gen.test \
+       sigpending.gen.test sigprocmask.gen.test sigreturn.gen.test \
+       sigsuspend.gen.test so_error.gen.test so_linger.gen.test \
+       so_peercred.gen.test so_peercred-Xabbrev.gen.test \
+       so_peercred-Xraw.gen.test so_peercred-Xverbose.gen.test \
+       so_peercred--pidns-translation.gen.test sock_filter-v.gen.test \
        sock_filter-v-Xabbrev.gen.test sock_filter-v-Xraw.gen.test \
        sock_filter-v-Xverbose.gen.test sockaddr_xlat-Xabbrev.gen.test \
        sockaddr_xlat-Xraw.gen.test sockaddr_xlat-Xverbose.gen.test \
        socketcall.gen.test sockopt-sol_netlink.gen.test \
        sockopt-timestamp.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 \
+       status-all.gen.test status-failed.gen.test \
+       status-failed-long.gen.test status-failed-status.gen.test \
+       status-none.gen.test status-successful.gen.test \
+       status-successful-long.gen.test \
+       status-successful-status.gen.test status-unfinished.gen.test \
+       statx.gen.test strace--absolute-timestamps.gen.test \
+       strace--absolute-timestamps-format-time.gen.test \
+       strace--absolute-timestamps-format-time-precision-s.gen.test \
+       strace--absolute-timestamps-format-time-precision-ms.gen.test \
+       strace--absolute-timestamps-format-time-precision-us.gen.test \
+       strace--absolute-timestamps-format-time-precision-ns.gen.test \
+       strace--absolute-timestamps-format-unix-precision-s.gen.test \
+       strace--absolute-timestamps-format-unix-precision-ms.gen.test \
+       strace--absolute-timestamps-format-unix-precision-us.gen.test \
+       strace--absolute-timestamps-format-unix-precision-ns.gen.test \
+       strace--follow-forks-output-separately.gen.test \
+       strace--relative-timestamps.gen.test \
+       strace--relative-timestamps-s.gen.test \
+       strace--relative-timestamps-ms.gen.test \
+       strace--relative-timestamps-us.gen.test \
+       strace--relative-timestamps-ns.gen.test \
+       strace--syscall-times.gen.test \
+       strace--syscall-times-s.gen.test \
+       strace--syscall-times-ms.gen.test \
+       strace--syscall-times-us.gen.test \
+       strace--syscall-times-ns.gen.test \
+       strace--strings-in-hex.gen.test \
+       strace--strings-in-hex-all.gen.test \
+       strace--strings-in-hex-non-ascii.gen.test \
+       strace--timestamps.gen.test strace--timestamps-time.gen.test \
+       strace--timestamps-time-s.gen.test \
+       strace--timestamps-time-ms.gen.test \
+       strace--timestamps-time-us.gen.test \
+       strace--timestamps-time-ns.gen.test \
+       strace--timestamps-unix-s.gen.test \
+       strace--timestamps-unix-ms.gen.test \
+       strace--timestamps-unix-us.gen.test \
+       strace--timestamps-unix-ns.gen.test strace-n.gen.test \
+       strace-x.gen.test strace-xx.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 tgkill.gen.test \
+       tgkill--pidns-translation.gen.test \
+       threads-execve--quiet-thread-execve.gen.test \
+       threads-execve-q.gen.test threads-execve-qq.gen.test \
+       threads-execve-qqq.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_personality_32.gen.test \
-       trace_personality_64.gen.test \
+       tkill.gen.test tkill--pidns-translation.gen.test \
+       trace_clock.gen.test trace_creds.gen.test trace_fstat.gen.test \
+       trace_fstatfs.gen.test trace_lstat.gen.test \
+       trace_personality_32.gen.test trace_personality_64.gen.test \
        trace_personality_regex_32.gen.test \
        trace_personality_regex_64.gen.test \
        trace_personality_regex_x32.gen.test \
        trace_personality_x32.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 utimensat-Xabbrev.gen.test \
-       utimensat-Xraw.gen.test utimensat-Xverbose.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 \
+       trie_test.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 \
+       umovestr_cached_adjacent.gen.test unlink.gen.test \
+       unlinkat.gen.test unshare.gen.test userfaultfd.gen.test \
+       ustat.gen.test utime.gen.test utimensat.gen.test \
+       utimensat-Xabbrev.gen.test utimensat-Xraw.gen.test \
+       utimensat-Xverbose.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 \
+       xet_robust_list--pidns-translation.gen.test xetitimer.gen.test \
+       xetpgid.gen.test xetpgid--pidns-translation.gen.test \
+       xetpriority.gen.test xetpriority--pidns-translation.gen.test \
        xettimeofday.gen.test
 @ENABLE_STACKTRACE_FALSE@STACKTRACE_TESTS = 
 @ENABLE_STACKTRACE_TRUE@STACKTRACE_TESTS = strace-k.test \
-@ENABLE_STACKTRACE_TRUE@       $(am__append_1)
+@ENABLE_STACKTRACE_TRUE@       strace-k-p.test $(am__append_1)
 DECODER_TESTS = \
+       bpf-success-long-y.test \
        bpf-success-v.test \
        bpf-success.test \
        brk.test \
@@ -4877,17 +6623,21 @@ DECODER_TESTS = \
        btrfs-wX.test \
        caps-abbrev.test \
        caps.test \
+       clone-flags.test \
+       clone3-success.test \
        eventfd.test \
        execve-v.test \
        execve.test \
        fadvise64.test \
+       faccessat.test \
+       faccessat2.test \
        futex.test \
        getuid.test \
        int_0x80.test \
+       inotify_init-y.test \
        ioctl.test \
-       ioctl_evdev-success-v.test \
+       ioctl_block--pidns-translation.test \
        ioctl_evdev-success.test \
-       ioctl_perf-success.test \
        ipc_msgbuf.test \
        kern_features-fault.test \
        llseek.test \
@@ -4929,6 +6679,7 @@ DECODER_TESTS = \
        seccomp-strict.test \
        sigaltstack.test \
        sun_path.test \
+       syslog-success.test \
        uio.test \
        umount.test \
        umount2.test \
@@ -4944,7 +6695,6 @@ MISC_TESTS = \
        attach-f-p.test \
        attach-p-cmd.test \
        bexecve.test \
-       clone_parent.test \
        clone_ptrace.test \
        count-f.test \
        count.test \
@@ -4953,20 +6703,24 @@ MISC_TESTS = \
        detach-sleeping.test \
        detach-stopped.test \
        fflush.test \
+       filter_seccomp-perf.test \
        filter-unavailable.test \
        filtering_fd-syntax.test \
        filtering_syscall-syntax.test \
        first_exec_failure.test \
+       fork--pidns-translation.test \
        get_regs.test \
+       gettid--pidns-translation.test \
        inject-nf.test \
        interactive_block.test \
        kill_child.test \
-       ksysent.test \
        localtime.test \
        looping_threads.test \
+       netlink_audit--pidns-translation.test \
        opipe.test \
        options-syntax.test \
        pc.test \
+       pidns-cache.test \
        printpath-umovestr-legacy.test \
        printstrn-umoven-legacy.test \
        qual_fault-syntax.test \
@@ -4986,8 +6740,16 @@ MISC_TESTS = \
        restart_syscall.test \
        sigblock.test \
        sigign.test \
+       status-detached.test \
+       status-none-threads.test \
+       status-unfinished-threads.test \
        strace-C.test \
+       strace-D.test \
+       strace-DD.test \
+       strace-DDD.test \
        strace-E.test \
+       strace-E-override.test \
+       strace-E-unset.test \
        strace-S.test \
        strace-T.test \
        strace-V.test \
@@ -5000,6 +6762,7 @@ MISC_TESTS = \
        strace-ttt.test \
        termsig.test \
        threads-execve.test \
+       umovestr_cached.test \
        # end of MISC_TESTS
 
 XFAIL_TESTS_ = 
@@ -5027,7 +6790,10 @@ EXTRA_DIST = \
        eventfd.expected \
        fadvise.h \
        fcntl-common.c \
+       filter_seccomp.in \
+       filter_seccomp.sh \
        filter-unavailable.expected \
+       fork--pidns-translation.awk \
        fstatat.c \
        fstatx.c \
        gen_pure_executables.sh \
@@ -5036,17 +6802,20 @@ EXTRA_DIST = \
        getresugid.c \
        init.sh \
        init_delete_module.h \
+       ioctl-success.sh \
        ioctl_kvm_run_common.c \
        ipc.sh \
+       kernel_old_timespec.h \
+       kernel_old_timex.h \
        ksysent.sed \
        lstatx.c \
        match.awk \
        net.expected \
-       netlink_sock_diag-v.sh \
        nlattr_ifla.h \
        pipe.expected \
        print_user_desc.c \
        printsignal.c \
+       printxval.c \
        process_vm_readv_writev.c \
        pure_executables.list \
        qual_fault-exit_group.expected \
@@ -5060,6 +6829,7 @@ EXTRA_DIST = \
        run.sh \
        sched.in \
        scno_tampering.sh \
+       semop-common.c \
        setfsugid.c \
        setresugid.c \
        setreugid.c \
@@ -5068,18 +6838,37 @@ EXTRA_DIST = \
        sockaddr_xlat.c \
        sockname.c \
        stack-fcall.h \
+       status-detached.expected \
+       strace--follow-forks-output-separately.expected \
+       strace--relative-timestamps.expected \
+       strace--relative-timestamps-s.expected \
+       strace--relative-timestamps-ms.expected \
+       strace--relative-timestamps-us.expected \
+       strace--relative-timestamps-ns.expected \
+       strace--syscall-times.expected \
+       strace--syscall-times-s.expected \
+       strace--syscall-times-ms.expected \
+       strace--syscall-times-us.expected \
+       strace--syscall-times-ns.expected \
        strace-C.expected \
+       strace-D.expected \
+       strace-DDD.expected \
        strace-E.expected \
+       strace-E-unset.expected \
        strace-T.expected \
        strace-ff.expected \
        strace-k-demangle.expected \
        strace-k-demangle.test \
+       strace-k-p.expected \
+       strace-k-p.test \
        strace-k.expected \
        strace-k.test \
        strace-r.expected \
        strace.supp \
        sun_path.expected \
        syntax.sh \
+       trace_clock.in \
+       trace_creds.in \
        trace_fstat.in \
        trace_fstatfs.in \
        trace_lstat.in \
@@ -5100,6 +6889,7 @@ EXTRA_DIST = \
        unix-pair-send-recv.expected \
        unix-pair-sendto-recvfrom.expected \
        xchownx.c \
+       xgetdents.c \
        xgetrlimit.c \
        xselect.c \
        xstatfs.c \
@@ -5233,6 +7023,10 @@ block_reset_raise_run$(EXEEXT): $(block_reset_raise_run_OBJECTS) $(block_reset_r
        @rm -f block_reset_raise_run$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(block_reset_raise_run_OBJECTS) $(block_reset_raise_run_LDADD) $(LIBS)
 
+block_reset_run$(EXEEXT): $(block_reset_run_OBJECTS) $(block_reset_run_DEPENDENCIES) $(EXTRA_block_reset_run_DEPENDENCIES) 
+       @rm -f block_reset_run$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(block_reset_run_OBJECTS) $(block_reset_run_LDADD) $(LIBS)
+
 bpf$(EXEEXT): $(bpf_OBJECTS) $(bpf_DEPENDENCIES) $(EXTRA_bpf_DEPENDENCIES) 
        @rm -f bpf$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(bpf_OBJECTS) $(bpf_LDADD) $(LIBS)
@@ -5257,6 +7051,10 @@ bpf-success$(EXEEXT): $(bpf_success_OBJECTS) $(bpf_success_DEPENDENCIES) $(EXTRA
        @rm -f bpf-success$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(bpf_success_OBJECTS) $(bpf_success_LDADD) $(LIBS)
 
+bpf-success-long-y$(EXEEXT): $(bpf_success_long_y_OBJECTS) $(bpf_success_long_y_DEPENDENCIES) $(EXTRA_bpf_success_long_y_DEPENDENCIES) 
+       @rm -f bpf-success-long-y$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(bpf_success_long_y_OBJECTS) $(bpf_success_long_y_LDADD) $(LIBS)
+
 bpf-success-v$(EXEEXT): $(bpf_success_v_OBJECTS) $(bpf_success_v_DEPENDENCIES) $(EXTRA_bpf_success_v_DEPENDENCIES) 
        @rm -f bpf-success-v$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(bpf_success_v_OBJECTS) $(bpf_success_v_LDADD) $(LIBS)
@@ -5317,14 +7115,94 @@ clock_xettime$(EXEEXT): $(clock_xettime_OBJECTS) $(clock_xettime_DEPENDENCIES) $
        @rm -f clock_xettime$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(clock_xettime_OBJECTS) $(clock_xettime_LDADD) $(LIBS)
 
+clone-flags$(EXEEXT): $(clone_flags_OBJECTS) $(clone_flags_DEPENDENCIES) $(EXTRA_clone_flags_DEPENDENCIES) 
+       @rm -f clone-flags$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(clone_flags_OBJECTS) $(clone_flags_LDADD) $(LIBS)
+
+clone3$(EXEEXT): $(clone3_OBJECTS) $(clone3_DEPENDENCIES) $(EXTRA_clone3_DEPENDENCIES) 
+       @rm -f clone3$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(clone3_OBJECTS) $(clone3_LDADD) $(LIBS)
+
+clone3-Xabbrev$(EXEEXT): $(clone3_Xabbrev_OBJECTS) $(clone3_Xabbrev_DEPENDENCIES) $(EXTRA_clone3_Xabbrev_DEPENDENCIES) 
+       @rm -f clone3-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(clone3_Xabbrev_OBJECTS) $(clone3_Xabbrev_LDADD) $(LIBS)
+
+clone3-Xraw$(EXEEXT): $(clone3_Xraw_OBJECTS) $(clone3_Xraw_DEPENDENCIES) $(EXTRA_clone3_Xraw_DEPENDENCIES) 
+       @rm -f clone3-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(clone3_Xraw_OBJECTS) $(clone3_Xraw_LDADD) $(LIBS)
+
+clone3-Xverbose$(EXEEXT): $(clone3_Xverbose_OBJECTS) $(clone3_Xverbose_DEPENDENCIES) $(EXTRA_clone3_Xverbose_DEPENDENCIES) 
+       @rm -f clone3-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(clone3_Xverbose_OBJECTS) $(clone3_Xverbose_LDADD) $(LIBS)
+
+clone3-success$(EXEEXT): $(clone3_success_OBJECTS) $(clone3_success_DEPENDENCIES) $(EXTRA_clone3_success_DEPENDENCIES) 
+       @rm -f clone3-success$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(clone3_success_OBJECTS) $(clone3_success_LDADD) $(LIBS)
+
+clone3-success-Xabbrev$(EXEEXT): $(clone3_success_Xabbrev_OBJECTS) $(clone3_success_Xabbrev_DEPENDENCIES) $(EXTRA_clone3_success_Xabbrev_DEPENDENCIES) 
+       @rm -f clone3-success-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(clone3_success_Xabbrev_OBJECTS) $(clone3_success_Xabbrev_LDADD) $(LIBS)
+
+clone3-success-Xraw$(EXEEXT): $(clone3_success_Xraw_OBJECTS) $(clone3_success_Xraw_DEPENDENCIES) $(EXTRA_clone3_success_Xraw_DEPENDENCIES) 
+       @rm -f clone3-success-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(clone3_success_Xraw_OBJECTS) $(clone3_success_Xraw_LDADD) $(LIBS)
+
+clone3-success-Xverbose$(EXEEXT): $(clone3_success_Xverbose_OBJECTS) $(clone3_success_Xverbose_DEPENDENCIES) $(EXTRA_clone3_success_Xverbose_DEPENDENCIES) 
+       @rm -f clone3-success-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(clone3_success_Xverbose_OBJECTS) $(clone3_success_Xverbose_LDADD) $(LIBS)
+
 clone_parent$(EXEEXT): $(clone_parent_OBJECTS) $(clone_parent_DEPENDENCIES) $(EXTRA_clone_parent_DEPENDENCIES) 
        @rm -f clone_parent$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(clone_parent_OBJECTS) $(clone_parent_LDADD) $(LIBS)
 
+clone_parent--quiet-exit$(EXEEXT): $(clone_parent__quiet_exit_OBJECTS) $(clone_parent__quiet_exit_DEPENDENCIES) $(EXTRA_clone_parent__quiet_exit_DEPENDENCIES) 
+       @rm -f clone_parent--quiet-exit$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(clone_parent__quiet_exit_OBJECTS) $(clone_parent__quiet_exit_LDADD) $(LIBS)
+
+clone_parent-q$(EXEEXT): $(clone_parent_q_OBJECTS) $(clone_parent_q_DEPENDENCIES) $(EXTRA_clone_parent_q_DEPENDENCIES) 
+       @rm -f clone_parent-q$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(clone_parent_q_OBJECTS) $(clone_parent_q_LDADD) $(LIBS)
+
+clone_parent-qq$(EXEEXT): $(clone_parent_qq_OBJECTS) $(clone_parent_qq_DEPENDENCIES) $(EXTRA_clone_parent_qq_DEPENDENCIES) 
+       @rm -f clone_parent-qq$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(clone_parent_qq_OBJECTS) $(clone_parent_qq_LDADD) $(LIBS)
+
 clone_ptrace$(EXEEXT): $(clone_ptrace_OBJECTS) $(clone_ptrace_DEPENDENCIES) $(EXTRA_clone_ptrace_DEPENDENCIES) 
        @rm -f clone_ptrace$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(clone_ptrace_OBJECTS) $(clone_ptrace_LDADD) $(LIBS)
 
+clone_ptrace--quiet-attach$(EXEEXT): $(clone_ptrace__quiet_attach_OBJECTS) $(clone_ptrace__quiet_attach_DEPENDENCIES) $(EXTRA_clone_ptrace__quiet_attach_DEPENDENCIES) 
+       @rm -f clone_ptrace--quiet-attach$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(clone_ptrace__quiet_attach_OBJECTS) $(clone_ptrace__quiet_attach_LDADD) $(LIBS)
+
+clone_ptrace--quiet-exit$(EXEEXT): $(clone_ptrace__quiet_exit_OBJECTS) $(clone_ptrace__quiet_exit_DEPENDENCIES) $(EXTRA_clone_ptrace__quiet_exit_DEPENDENCIES) 
+       @rm -f clone_ptrace--quiet-exit$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(clone_ptrace__quiet_exit_OBJECTS) $(clone_ptrace__quiet_exit_LDADD) $(LIBS)
+
+clone_ptrace-q$(EXEEXT): $(clone_ptrace_q_OBJECTS) $(clone_ptrace_q_DEPENDENCIES) $(EXTRA_clone_ptrace_q_DEPENDENCIES) 
+       @rm -f clone_ptrace-q$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(clone_ptrace_q_OBJECTS) $(clone_ptrace_q_LDADD) $(LIBS)
+
+clone_ptrace-qq$(EXEEXT): $(clone_ptrace_qq_OBJECTS) $(clone_ptrace_qq_DEPENDENCIES) $(EXTRA_clone_ptrace_qq_DEPENDENCIES) 
+       @rm -f clone_ptrace-qq$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(clone_ptrace_qq_OBJECTS) $(clone_ptrace_qq_LDADD) $(LIBS)
+
+close_range$(EXEEXT): $(close_range_OBJECTS) $(close_range_DEPENDENCIES) $(EXTRA_close_range_DEPENDENCIES) 
+       @rm -f close_range$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(close_range_OBJECTS) $(close_range_LDADD) $(LIBS)
+
+close_range-P$(EXEEXT): $(close_range_P_OBJECTS) $(close_range_P_DEPENDENCIES) $(EXTRA_close_range_P_DEPENDENCIES) 
+       @rm -f close_range-P$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(close_range_P_OBJECTS) $(close_range_P_LDADD) $(LIBS)
+
+close_range-y$(EXEEXT): $(close_range_y_OBJECTS) $(close_range_y_DEPENDENCIES) $(EXTRA_close_range_y_DEPENDENCIES) 
+       @rm -f close_range-y$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(close_range_y_OBJECTS) $(close_range_y_LDADD) $(LIBS)
+
+close_range-yy$(EXEEXT): $(close_range_yy_OBJECTS) $(close_range_yy_DEPENDENCIES) $(EXTRA_close_range_yy_DEPENDENCIES) 
+       @rm -f close_range-yy$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(close_range_yy_OBJECTS) $(close_range_yy_LDADD) $(LIBS)
+
 copy_file_range$(EXEEXT): $(copy_file_range_OBJECTS) $(copy_file_range_DEPENDENCIES) $(EXTRA_copy_file_range_DEPENDENCIES) 
        @rm -f copy_file_range$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(copy_file_range_OBJECTS) $(copy_file_range_LDADD) $(LIBS)
@@ -5345,6 +7223,18 @@ delete_module$(EXEEXT): $(delete_module_OBJECTS) $(delete_module_DEPENDENCIES) $
        @rm -f delete_module$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(delete_module_OBJECTS) $(delete_module_LDADD) $(LIBS)
 
+dev--decode-fds-dev$(EXEEXT): $(dev__decode_fds_dev_OBJECTS) $(dev__decode_fds_dev_DEPENDENCIES) $(EXTRA_dev__decode_fds_dev_DEPENDENCIES) 
+       @rm -f dev--decode-fds-dev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(dev__decode_fds_dev_OBJECTS) $(dev__decode_fds_dev_LDADD) $(LIBS)
+
+dev--decode-fds-path$(EXEEXT): $(dev__decode_fds_path_OBJECTS) $(dev__decode_fds_path_DEPENDENCIES) $(EXTRA_dev__decode_fds_path_DEPENDENCIES) 
+       @rm -f dev--decode-fds-path$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(dev__decode_fds_path_OBJECTS) $(dev__decode_fds_path_LDADD) $(LIBS)
+
+dev--decode-fds-socket$(EXEEXT): $(dev__decode_fds_socket_OBJECTS) $(dev__decode_fds_socket_DEPENDENCIES) $(EXTRA_dev__decode_fds_socket_DEPENDENCIES) 
+       @rm -f dev--decode-fds-socket$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(dev__decode_fds_socket_OBJECTS) $(dev__decode_fds_socket_LDADD) $(LIBS)
+
 dev-yy$(EXEEXT): $(dev_yy_OBJECTS) $(dev_yy_DEPENDENCIES) $(EXTRA_dev_yy_DEPENDENCIES) 
        @rm -f dev-yy$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(dev_yy_OBJECTS) $(dev_yy_LDADD) $(LIBS)
@@ -5353,14 +7243,50 @@ dup$(EXEEXT): $(dup_OBJECTS) $(dup_DEPENDENCIES) $(EXTRA_dup_DEPENDENCIES)
        @rm -f dup$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(dup_OBJECTS) $(dup_LDADD) $(LIBS)
 
+dup-P$(EXEEXT): $(dup_P_OBJECTS) $(dup_P_DEPENDENCIES) $(EXTRA_dup_P_DEPENDENCIES) 
+       @rm -f dup-P$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(dup_P_OBJECTS) $(dup_P_LDADD) $(LIBS)
+
+dup-y$(EXEEXT): $(dup_y_OBJECTS) $(dup_y_DEPENDENCIES) $(EXTRA_dup_y_DEPENDENCIES) 
+       @rm -f dup-y$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(dup_y_OBJECTS) $(dup_y_LDADD) $(LIBS)
+
+dup-yy$(EXEEXT): $(dup_yy_OBJECTS) $(dup_yy_DEPENDENCIES) $(EXTRA_dup_yy_DEPENDENCIES) 
+       @rm -f dup-yy$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(dup_yy_OBJECTS) $(dup_yy_LDADD) $(LIBS)
+
 dup2$(EXEEXT): $(dup2_OBJECTS) $(dup2_DEPENDENCIES) $(EXTRA_dup2_DEPENDENCIES) 
        @rm -f dup2$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(dup2_OBJECTS) $(dup2_LDADD) $(LIBS)
 
+dup2-P$(EXEEXT): $(dup2_P_OBJECTS) $(dup2_P_DEPENDENCIES) $(EXTRA_dup2_P_DEPENDENCIES) 
+       @rm -f dup2-P$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(dup2_P_OBJECTS) $(dup2_P_LDADD) $(LIBS)
+
+dup2-y$(EXEEXT): $(dup2_y_OBJECTS) $(dup2_y_DEPENDENCIES) $(EXTRA_dup2_y_DEPENDENCIES) 
+       @rm -f dup2-y$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(dup2_y_OBJECTS) $(dup2_y_LDADD) $(LIBS)
+
+dup2-yy$(EXEEXT): $(dup2_yy_OBJECTS) $(dup2_yy_DEPENDENCIES) $(EXTRA_dup2_yy_DEPENDENCIES) 
+       @rm -f dup2-yy$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(dup2_yy_OBJECTS) $(dup2_yy_LDADD) $(LIBS)
+
 dup3$(EXEEXT): $(dup3_OBJECTS) $(dup3_DEPENDENCIES) $(EXTRA_dup3_DEPENDENCIES) 
        @rm -f dup3$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(dup3_OBJECTS) $(dup3_LDADD) $(LIBS)
 
+dup3-P$(EXEEXT): $(dup3_P_OBJECTS) $(dup3_P_DEPENDENCIES) $(EXTRA_dup3_P_DEPENDENCIES) 
+       @rm -f dup3-P$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(dup3_P_OBJECTS) $(dup3_P_LDADD) $(LIBS)
+
+dup3-y$(EXEEXT): $(dup3_y_OBJECTS) $(dup3_y_DEPENDENCIES) $(EXTRA_dup3_y_DEPENDENCIES) 
+       @rm -f dup3-y$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(dup3_y_OBJECTS) $(dup3_y_LDADD) $(LIBS)
+
+dup3-yy$(EXEEXT): $(dup3_yy_OBJECTS) $(dup3_yy_DEPENDENCIES) $(EXTRA_dup3_yy_DEPENDENCIES) 
+       @rm -f dup3-yy$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(dup3_yy_OBJECTS) $(dup3_yy_LDADD) $(LIBS)
+
 epoll_create$(EXEEXT): $(epoll_create_OBJECTS) $(epoll_create_DEPENDENCIES) $(EXTRA_epoll_create_DEPENDENCIES) 
        @rm -f epoll_create$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(epoll_create_OBJECTS) $(epoll_create_LDADD) $(LIBS)
@@ -5409,6 +7335,34 @@ faccessat$(EXEEXT): $(faccessat_OBJECTS) $(faccessat_DEPENDENCIES) $(EXTRA_facce
        @rm -f faccessat$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(faccessat_OBJECTS) $(faccessat_LDADD) $(LIBS)
 
+faccessat-P$(EXEEXT): $(faccessat_P_OBJECTS) $(faccessat_P_DEPENDENCIES) $(EXTRA_faccessat_P_DEPENDENCIES) 
+       @rm -f faccessat-P$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(faccessat_P_OBJECTS) $(faccessat_P_LDADD) $(LIBS)
+
+faccessat-y$(EXEEXT): $(faccessat_y_OBJECTS) $(faccessat_y_DEPENDENCIES) $(EXTRA_faccessat_y_DEPENDENCIES) 
+       @rm -f faccessat-y$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(faccessat_y_OBJECTS) $(faccessat_y_LDADD) $(LIBS)
+
+faccessat-yy$(EXEEXT): $(faccessat_yy_OBJECTS) $(faccessat_yy_DEPENDENCIES) $(EXTRA_faccessat_yy_DEPENDENCIES) 
+       @rm -f faccessat-yy$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(faccessat_yy_OBJECTS) $(faccessat_yy_LDADD) $(LIBS)
+
+faccessat2$(EXEEXT): $(faccessat2_OBJECTS) $(faccessat2_DEPENDENCIES) $(EXTRA_faccessat2_DEPENDENCIES) 
+       @rm -f faccessat2$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(faccessat2_OBJECTS) $(faccessat2_LDADD) $(LIBS)
+
+faccessat2-P$(EXEEXT): $(faccessat2_P_OBJECTS) $(faccessat2_P_DEPENDENCIES) $(EXTRA_faccessat2_P_DEPENDENCIES) 
+       @rm -f faccessat2-P$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(faccessat2_P_OBJECTS) $(faccessat2_P_LDADD) $(LIBS)
+
+faccessat2-y$(EXEEXT): $(faccessat2_y_OBJECTS) $(faccessat2_y_DEPENDENCIES) $(EXTRA_faccessat2_y_DEPENDENCIES) 
+       @rm -f faccessat2-y$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(faccessat2_y_OBJECTS) $(faccessat2_y_LDADD) $(LIBS)
+
+faccessat2-yy$(EXEEXT): $(faccessat2_yy_OBJECTS) $(faccessat2_yy_DEPENDENCIES) $(EXTRA_faccessat2_yy_DEPENDENCIES) 
+       @rm -f faccessat2-yy$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(faccessat2_yy_OBJECTS) $(faccessat2_yy_LDADD) $(LIBS)
+
 fadvise64$(EXEEXT): $(fadvise64_OBJECTS) $(fadvise64_DEPENDENCIES) $(EXTRA_fadvise64_DEPENDENCIES) 
        @rm -f fadvise64$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(fadvise64_OBJECTS) $(fadvise64_LDADD) $(LIBS)
@@ -5469,10 +7423,18 @@ fcntl$(EXEEXT): $(fcntl_OBJECTS) $(fcntl_DEPENDENCIES) $(EXTRA_fcntl_DEPENDENCIE
        @rm -f fcntl$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(fcntl_OBJECTS) $(fcntl_LDADD) $(LIBS)
 
+fcntl--pidns-translation$(EXEEXT): $(fcntl__pidns_translation_OBJECTS) $(fcntl__pidns_translation_DEPENDENCIES) $(EXTRA_fcntl__pidns_translation_DEPENDENCIES) 
+       @rm -f fcntl--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(fcntl__pidns_translation_OBJECTS) $(fcntl__pidns_translation_LDADD) $(LIBS)
+
 fcntl64$(EXEEXT): $(fcntl64_OBJECTS) $(fcntl64_DEPENDENCIES) $(EXTRA_fcntl64_DEPENDENCIES) 
        @rm -f fcntl64$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(fcntl64_OBJECTS) $(fcntl64_LDADD) $(LIBS)
 
+fcntl64--pidns-translation$(EXEEXT): $(fcntl64__pidns_translation_OBJECTS) $(fcntl64__pidns_translation_DEPENDENCIES) $(EXTRA_fcntl64__pidns_translation_DEPENDENCIES) 
+       @rm -f fcntl64--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(fcntl64__pidns_translation_OBJECTS) $(fcntl64__pidns_translation_LDADD) $(LIBS)
+
 fdatasync$(EXEEXT): $(fdatasync_OBJECTS) $(fdatasync_DEPENDENCIES) $(EXTRA_fdatasync_DEPENDENCIES) 
        @rm -f fdatasync$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(fdatasync_OBJECTS) $(fdatasync_LDADD) $(LIBS)
@@ -5493,6 +7455,14 @@ filter-unavailable$(EXEEXT): $(filter_unavailable_OBJECTS) $(filter_unavailable_
        @rm -f filter-unavailable$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(filter_unavailable_OBJECTS) $(filter_unavailable_LDADD) $(LIBS)
 
+filter_seccomp-flag$(EXEEXT): $(filter_seccomp_flag_OBJECTS) $(filter_seccomp_flag_DEPENDENCIES) $(EXTRA_filter_seccomp_flag_DEPENDENCIES) 
+       @rm -f filter_seccomp-flag$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(filter_seccomp_flag_OBJECTS) $(filter_seccomp_flag_LDADD) $(LIBS)
+
+filter_seccomp-perf$(EXEEXT): $(filter_seccomp_perf_OBJECTS) $(filter_seccomp_perf_DEPENDENCIES) $(EXTRA_filter_seccomp_perf_DEPENDENCIES) 
+       @rm -f filter_seccomp-perf$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(filter_seccomp_perf_OBJECTS) $(filter_seccomp_perf_LDADD) $(LIBS)
+
 finit_module$(EXEEXT): $(finit_module_OBJECTS) $(finit_module_DEPENDENCIES) $(EXTRA_finit_module_DEPENDENCIES) 
        @rm -f finit_module$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(finit_module_OBJECTS) $(finit_module_LDADD) $(LIBS)
@@ -5501,10 +7471,38 @@ flock$(EXEEXT): $(flock_OBJECTS) $(flock_DEPENDENCIES) $(EXTRA_flock_DEPENDENCIE
        @rm -f flock$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(flock_OBJECTS) $(flock_LDADD) $(LIBS)
 
+fork--pidns-translation$(EXEEXT): $(fork__pidns_translation_OBJECTS) $(fork__pidns_translation_DEPENDENCIES) $(EXTRA_fork__pidns_translation_DEPENDENCIES) 
+       @rm -f fork--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(fork__pidns_translation_OBJECTS) $(fork__pidns_translation_LDADD) $(LIBS)
+
 fork-f$(EXEEXT): $(fork_f_OBJECTS) $(fork_f_DEPENDENCIES) $(EXTRA_fork_f_DEPENDENCIES) 
        @rm -f fork-f$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(fork_f_OBJECTS) $(fork_f_LDADD) $(LIBS)
 
+fsconfig$(EXEEXT): $(fsconfig_OBJECTS) $(fsconfig_DEPENDENCIES) $(EXTRA_fsconfig_DEPENDENCIES) 
+       @rm -f fsconfig$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(fsconfig_OBJECTS) $(fsconfig_LDADD) $(LIBS)
+
+fsconfig-P$(EXEEXT): $(fsconfig_P_OBJECTS) $(fsconfig_P_DEPENDENCIES) $(EXTRA_fsconfig_P_DEPENDENCIES) 
+       @rm -f fsconfig-P$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(fsconfig_P_OBJECTS) $(fsconfig_P_LDADD) $(LIBS)
+
+fsmount$(EXEEXT): $(fsmount_OBJECTS) $(fsmount_DEPENDENCIES) $(EXTRA_fsmount_DEPENDENCIES) 
+       @rm -f fsmount$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(fsmount_OBJECTS) $(fsmount_LDADD) $(LIBS)
+
+fsopen$(EXEEXT): $(fsopen_OBJECTS) $(fsopen_DEPENDENCIES) $(EXTRA_fsopen_DEPENDENCIES) 
+       @rm -f fsopen$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(fsopen_OBJECTS) $(fsopen_LDADD) $(LIBS)
+
+fspick$(EXEEXT): $(fspick_OBJECTS) $(fspick_DEPENDENCIES) $(EXTRA_fspick_DEPENDENCIES) 
+       @rm -f fspick$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(fspick_OBJECTS) $(fspick_LDADD) $(LIBS)
+
+fspick-P$(EXEEXT): $(fspick_P_OBJECTS) $(fspick_P_DEPENDENCIES) $(EXTRA_fspick_P_DEPENDENCIES) 
+       @rm -f fspick-P$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(fspick_P_OBJECTS) $(fspick_P_LDADD) $(LIBS)
+
 fstat$(EXEEXT): $(fstat_OBJECTS) $(fstat_DEPENDENCIES) $(EXTRA_fstat_DEPENDENCIES) 
        @rm -f fstat$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(fstat_OBJECTS) $(fstat_LDADD) $(LIBS)
@@ -5577,6 +7575,10 @@ get_mempolicy$(EXEEXT): $(get_mempolicy_OBJECTS) $(get_mempolicy_DEPENDENCIES) $
        @rm -f get_mempolicy$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(get_mempolicy_OBJECTS) $(get_mempolicy_LDADD) $(LIBS)
 
+get_process_reaper$(EXEEXT): $(get_process_reaper_OBJECTS) $(get_process_reaper_DEPENDENCIES) $(EXTRA_get_process_reaper_DEPENDENCIES) 
+       @rm -f get_process_reaper$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(get_process_reaper_OBJECTS) $(get_process_reaper_LDADD) $(LIBS)
+
 getcpu$(EXEEXT): $(getcpu_OBJECTS) $(getcpu_DEPENDENCIES) $(EXTRA_getcpu_DEPENDENCIES) 
        @rm -f getcpu$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(getcpu_OBJECTS) $(getcpu_LDADD) $(LIBS)
@@ -5589,10 +7591,18 @@ getdents$(EXEEXT): $(getdents_OBJECTS) $(getdents_DEPENDENCIES) $(EXTRA_getdents
        @rm -f getdents$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(getdents_OBJECTS) $(getdents_LDADD) $(LIBS)
 
+getdents-v$(EXEEXT): $(getdents_v_OBJECTS) $(getdents_v_DEPENDENCIES) $(EXTRA_getdents_v_DEPENDENCIES) 
+       @rm -f getdents-v$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(getdents_v_OBJECTS) $(getdents_v_LDADD) $(LIBS)
+
 getdents64$(EXEEXT): $(getdents64_OBJECTS) $(getdents64_DEPENDENCIES) $(EXTRA_getdents64_DEPENDENCIES) 
        @rm -f getdents64$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(getdents64_OBJECTS) $(getdents64_LDADD) $(LIBS)
 
+getdents64-v$(EXEEXT): $(getdents64_v_OBJECTS) $(getdents64_v_DEPENDENCIES) $(EXTRA_getdents64_v_DEPENDENCIES) 
+       @rm -f getdents64-v$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(getdents64_v_OBJECTS) $(getdents64_v_LDADD) $(LIBS)
+
 getegid$(EXEEXT): $(getegid_OBJECTS) $(getegid_DEPENDENCIES) $(EXTRA_getegid_DEPENDENCIES) 
        @rm -f getegid$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(getegid_OBJECTS) $(getegid_LDADD) $(LIBS)
@@ -5633,10 +7643,18 @@ getpgrp$(EXEEXT): $(getpgrp_OBJECTS) $(getpgrp_DEPENDENCIES) $(EXTRA_getpgrp_DEP
        @rm -f getpgrp$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(getpgrp_OBJECTS) $(getpgrp_LDADD) $(LIBS)
 
+getpgrp--pidns-translation$(EXEEXT): $(getpgrp__pidns_translation_OBJECTS) $(getpgrp__pidns_translation_DEPENDENCIES) $(EXTRA_getpgrp__pidns_translation_DEPENDENCIES) 
+       @rm -f getpgrp--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(getpgrp__pidns_translation_OBJECTS) $(getpgrp__pidns_translation_LDADD) $(LIBS)
+
 getpid$(EXEEXT): $(getpid_OBJECTS) $(getpid_DEPENDENCIES) $(EXTRA_getpid_DEPENDENCIES) 
        @rm -f getpid$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(getpid_OBJECTS) $(getpid_LDADD) $(LIBS)
 
+getpid--pidns-translation$(EXEEXT): $(getpid__pidns_translation_OBJECTS) $(getpid__pidns_translation_DEPENDENCIES) $(EXTRA_getpid__pidns_translation_DEPENDENCIES) 
+       @rm -f getpid--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(getpid__pidns_translation_OBJECTS) $(getpid__pidns_translation_LDADD) $(LIBS)
+
 getppid$(EXEEXT): $(getppid_OBJECTS) $(getppid_DEPENDENCIES) $(EXTRA_getppid_DEPENDENCIES) 
        @rm -f getppid$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(getppid_OBJECTS) $(getppid_LDADD) $(LIBS)
@@ -5673,6 +7691,10 @@ getsid$(EXEEXT): $(getsid_OBJECTS) $(getsid_DEPENDENCIES) $(EXTRA_getsid_DEPENDE
        @rm -f getsid$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(getsid_OBJECTS) $(getsid_LDADD) $(LIBS)
 
+getsid--pidns-translation$(EXEEXT): $(getsid__pidns_translation_OBJECTS) $(getsid__pidns_translation_DEPENDENCIES) $(EXTRA_getsid__pidns_translation_DEPENDENCIES) 
+       @rm -f getsid--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(getsid__pidns_translation_OBJECTS) $(getsid__pidns_translation_LDADD) $(LIBS)
+
 getsockname$(EXEEXT): $(getsockname_OBJECTS) $(getsockname_DEPENDENCIES) $(EXTRA_getsockname_DEPENDENCIES) 
        @rm -f getsockname$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(getsockname_OBJECTS) $(getsockname_LDADD) $(LIBS)
@@ -5681,6 +7703,10 @@ gettid$(EXEEXT): $(gettid_OBJECTS) $(gettid_DEPENDENCIES) $(EXTRA_gettid_DEPENDE
        @rm -f gettid$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(gettid_OBJECTS) $(gettid_LDADD) $(LIBS)
 
+gettid--pidns-translation$(EXEEXT): $(gettid__pidns_translation_OBJECTS) $(gettid__pidns_translation_DEPENDENCIES) $(EXTRA_gettid__pidns_translation_DEPENDENCIES) 
+       @rm -f gettid--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(gettid__pidns_translation_OBJECTS) $(gettid__pidns_translation_LDADD) $(LIBS)
+
 getuid$(EXEEXT): $(getuid_OBJECTS) $(getuid_DEPENDENCIES) $(EXTRA_getuid_DEPENDENCIES) 
        @rm -f getuid$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(getuid_OBJECTS) $(getuid_LDADD) $(LIBS)
@@ -5689,9 +7715,17 @@ getuid32$(EXEEXT): $(getuid32_OBJECTS) $(getuid32_DEPENDENCIES) $(EXTRA_getuid32
        @rm -f getuid32$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(getuid32_OBJECTS) $(getuid32_LDADD) $(LIBS)
 
-getxxid$(EXEEXT): $(getxxid_OBJECTS) $(getxxid_DEPENDENCIES) $(EXTRA_getxxid_DEPENDENCIES) 
-       @rm -f getxxid$(EXEEXT)
-       $(AM_V_CCLD)$(LINK) $(getxxid_OBJECTS) $(getxxid_LDADD) $(LIBS)
+getxgid$(EXEEXT): $(getxgid_OBJECTS) $(getxgid_DEPENDENCIES) $(EXTRA_getxgid_DEPENDENCIES) 
+       @rm -f getxgid$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(getxgid_OBJECTS) $(getxgid_LDADD) $(LIBS)
+
+getxpid$(EXEEXT): $(getxpid_OBJECTS) $(getxpid_DEPENDENCIES) $(EXTRA_getxpid_DEPENDENCIES) 
+       @rm -f getxpid$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(getxpid_OBJECTS) $(getxpid_LDADD) $(LIBS)
+
+getxuid$(EXEEXT): $(getxuid_OBJECTS) $(getxuid_DEPENDENCIES) $(EXTRA_getxuid_DEPENDENCIES) 
+       @rm -f getxuid$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(getxuid_OBJECTS) $(getxuid_LDADD) $(LIBS)
 
 group_req$(EXEEXT): $(group_req_OBJECTS) $(group_req_DEPENDENCIES) $(EXTRA_group_req_DEPENDENCIES) 
        @rm -f group_req$(EXEEXT)
@@ -5713,10 +7747,22 @@ inotify$(EXEEXT): $(inotify_OBJECTS) $(inotify_DEPENDENCIES) $(EXTRA_inotify_DEP
        @rm -f inotify$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(inotify_OBJECTS) $(inotify_LDADD) $(LIBS)
 
+inotify_init$(EXEEXT): $(inotify_init_OBJECTS) $(inotify_init_DEPENDENCIES) $(EXTRA_inotify_init_DEPENDENCIES) 
+       @rm -f inotify_init$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(inotify_init_OBJECTS) $(inotify_init_LDADD) $(LIBS)
+
+inotify_init-y$(EXEEXT): $(inotify_init_y_OBJECTS) $(inotify_init_y_DEPENDENCIES) $(EXTRA_inotify_init_y_DEPENDENCIES) 
+       @rm -f inotify_init-y$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(inotify_init_y_OBJECTS) $(inotify_init_y_LDADD) $(LIBS)
+
 inotify_init1$(EXEEXT): $(inotify_init1_OBJECTS) $(inotify_init1_DEPENDENCIES) $(EXTRA_inotify_init1_DEPENDENCIES) 
        @rm -f inotify_init1$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(inotify_init1_OBJECTS) $(inotify_init1_LDADD) $(LIBS)
 
+inotify_init1-y$(EXEEXT): $(inotify_init1_y_OBJECTS) $(inotify_init1_y_DEPENDENCIES) $(EXTRA_inotify_init1_y_DEPENDENCIES) 
+       @rm -f inotify_init1-y$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(inotify_init1_y_OBJECTS) $(inotify_init1_y_LDADD) $(LIBS)
+
 int_0x80$(EXEEXT): $(int_0x80_OBJECTS) $(int_0x80_DEPENDENCIES) $(EXTRA_int_0x80_DEPENDENCIES) 
        @rm -f int_0x80$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(int_0x80_OBJECTS) $(int_0x80_LDADD) $(LIBS)
@@ -5741,6 +7787,10 @@ ioctl_block$(EXEEXT): $(ioctl_block_OBJECTS) $(ioctl_block_DEPENDENCIES) $(EXTRA
        @rm -f ioctl_block$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(ioctl_block_OBJECTS) $(ioctl_block_LDADD) $(LIBS)
 
+ioctl_block--pidns-translation$(EXEEXT): $(ioctl_block__pidns_translation_OBJECTS) $(ioctl_block__pidns_translation_DEPENDENCIES) $(EXTRA_ioctl_block__pidns_translation_DEPENDENCIES) 
+       @rm -f ioctl_block--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_block__pidns_translation_OBJECTS) $(ioctl_block__pidns_translation_LDADD) $(LIBS)
+
 ioctl_dm$(EXEEXT): $(ioctl_dm_OBJECTS) $(ioctl_dm_DEPENDENCIES) $(EXTRA_ioctl_dm_DEPENDENCIES) 
        @rm -f ioctl_dm$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(ioctl_dm_OBJECTS) $(ioctl_dm_LDADD) $(LIBS)
@@ -5753,18 +7803,130 @@ ioctl_evdev$(EXEEXT): $(ioctl_evdev_OBJECTS) $(ioctl_evdev_DEPENDENCIES) $(EXTRA
        @rm -f ioctl_evdev$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(ioctl_evdev_OBJECTS) $(ioctl_evdev_LDADD) $(LIBS)
 
+ioctl_evdev-Xabbrev$(EXEEXT): $(ioctl_evdev_Xabbrev_OBJECTS) $(ioctl_evdev_Xabbrev_DEPENDENCIES) $(EXTRA_ioctl_evdev_Xabbrev_DEPENDENCIES) 
+       @rm -f ioctl_evdev-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_evdev_Xabbrev_OBJECTS) $(ioctl_evdev_Xabbrev_LDADD) $(LIBS)
+
+ioctl_evdev-Xraw$(EXEEXT): $(ioctl_evdev_Xraw_OBJECTS) $(ioctl_evdev_Xraw_DEPENDENCIES) $(EXTRA_ioctl_evdev_Xraw_DEPENDENCIES) 
+       @rm -f ioctl_evdev-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_evdev_Xraw_OBJECTS) $(ioctl_evdev_Xraw_LDADD) $(LIBS)
+
+ioctl_evdev-Xverbose$(EXEEXT): $(ioctl_evdev_Xverbose_OBJECTS) $(ioctl_evdev_Xverbose_DEPENDENCIES) $(EXTRA_ioctl_evdev_Xverbose_DEPENDENCIES) 
+       @rm -f ioctl_evdev-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_evdev_Xverbose_OBJECTS) $(ioctl_evdev_Xverbose_LDADD) $(LIBS)
+
 ioctl_evdev-success$(EXEEXT): $(ioctl_evdev_success_OBJECTS) $(ioctl_evdev_success_DEPENDENCIES) $(EXTRA_ioctl_evdev_success_DEPENDENCIES) 
        @rm -f ioctl_evdev-success$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(ioctl_evdev_success_OBJECTS) $(ioctl_evdev_success_LDADD) $(LIBS)
 
+ioctl_evdev-success-Xabbrev$(EXEEXT): $(ioctl_evdev_success_Xabbrev_OBJECTS) $(ioctl_evdev_success_Xabbrev_DEPENDENCIES) $(EXTRA_ioctl_evdev_success_Xabbrev_DEPENDENCIES) 
+       @rm -f ioctl_evdev-success-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_evdev_success_Xabbrev_OBJECTS) $(ioctl_evdev_success_Xabbrev_LDADD) $(LIBS)
+
+ioctl_evdev-success-Xraw$(EXEEXT): $(ioctl_evdev_success_Xraw_OBJECTS) $(ioctl_evdev_success_Xraw_DEPENDENCIES) $(EXTRA_ioctl_evdev_success_Xraw_DEPENDENCIES) 
+       @rm -f ioctl_evdev-success-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_evdev_success_Xraw_OBJECTS) $(ioctl_evdev_success_Xraw_LDADD) $(LIBS)
+
+ioctl_evdev-success-Xverbose$(EXEEXT): $(ioctl_evdev_success_Xverbose_OBJECTS) $(ioctl_evdev_success_Xverbose_DEPENDENCIES) $(EXTRA_ioctl_evdev_success_Xverbose_DEPENDENCIES) 
+       @rm -f ioctl_evdev-success-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_evdev_success_Xverbose_OBJECTS) $(ioctl_evdev_success_Xverbose_LDADD) $(LIBS)
+
 ioctl_evdev-success-v$(EXEEXT): $(ioctl_evdev_success_v_OBJECTS) $(ioctl_evdev_success_v_DEPENDENCIES) $(EXTRA_ioctl_evdev_success_v_DEPENDENCIES) 
        @rm -f ioctl_evdev-success-v$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(ioctl_evdev_success_v_OBJECTS) $(ioctl_evdev_success_v_LDADD) $(LIBS)
 
+ioctl_evdev-success-v-Xabbrev$(EXEEXT): $(ioctl_evdev_success_v_Xabbrev_OBJECTS) $(ioctl_evdev_success_v_Xabbrev_DEPENDENCIES) $(EXTRA_ioctl_evdev_success_v_Xabbrev_DEPENDENCIES) 
+       @rm -f ioctl_evdev-success-v-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_evdev_success_v_Xabbrev_OBJECTS) $(ioctl_evdev_success_v_Xabbrev_LDADD) $(LIBS)
+
+ioctl_evdev-success-v-Xraw$(EXEEXT): $(ioctl_evdev_success_v_Xraw_OBJECTS) $(ioctl_evdev_success_v_Xraw_DEPENDENCIES) $(EXTRA_ioctl_evdev_success_v_Xraw_DEPENDENCIES) 
+       @rm -f ioctl_evdev-success-v-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_evdev_success_v_Xraw_OBJECTS) $(ioctl_evdev_success_v_Xraw_LDADD) $(LIBS)
+
+ioctl_evdev-success-v-Xverbose$(EXEEXT): $(ioctl_evdev_success_v_Xverbose_OBJECTS) $(ioctl_evdev_success_v_Xverbose_DEPENDENCIES) $(EXTRA_ioctl_evdev_success_v_Xverbose_DEPENDENCIES) 
+       @rm -f ioctl_evdev-success-v-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_evdev_success_v_Xverbose_OBJECTS) $(ioctl_evdev_success_v_Xverbose_LDADD) $(LIBS)
+
 ioctl_evdev-v$(EXEEXT): $(ioctl_evdev_v_OBJECTS) $(ioctl_evdev_v_DEPENDENCIES) $(EXTRA_ioctl_evdev_v_DEPENDENCIES) 
        @rm -f ioctl_evdev-v$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(ioctl_evdev_v_OBJECTS) $(ioctl_evdev_v_LDADD) $(LIBS)
 
+ioctl_evdev-v-Xabbrev$(EXEEXT): $(ioctl_evdev_v_Xabbrev_OBJECTS) $(ioctl_evdev_v_Xabbrev_DEPENDENCIES) $(EXTRA_ioctl_evdev_v_Xabbrev_DEPENDENCIES) 
+       @rm -f ioctl_evdev-v-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_evdev_v_Xabbrev_OBJECTS) $(ioctl_evdev_v_Xabbrev_LDADD) $(LIBS)
+
+ioctl_evdev-v-Xraw$(EXEEXT): $(ioctl_evdev_v_Xraw_OBJECTS) $(ioctl_evdev_v_Xraw_DEPENDENCIES) $(EXTRA_ioctl_evdev_v_Xraw_DEPENDENCIES) 
+       @rm -f ioctl_evdev-v-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_evdev_v_Xraw_OBJECTS) $(ioctl_evdev_v_Xraw_LDADD) $(LIBS)
+
+ioctl_evdev-v-Xverbose$(EXEEXT): $(ioctl_evdev_v_Xverbose_OBJECTS) $(ioctl_evdev_v_Xverbose_DEPENDENCIES) $(EXTRA_ioctl_evdev_v_Xverbose_DEPENDENCIES) 
+       @rm -f ioctl_evdev-v-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_evdev_v_Xverbose_OBJECTS) $(ioctl_evdev_v_Xverbose_LDADD) $(LIBS)
+
+ioctl_hdio$(EXEEXT): $(ioctl_hdio_OBJECTS) $(ioctl_hdio_DEPENDENCIES) $(EXTRA_ioctl_hdio_DEPENDENCIES) 
+       @rm -f ioctl_hdio$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_hdio_OBJECTS) $(ioctl_hdio_LDADD) $(LIBS)
+
+ioctl_hdio-Xabbrev$(EXEEXT): $(ioctl_hdio_Xabbrev_OBJECTS) $(ioctl_hdio_Xabbrev_DEPENDENCIES) $(EXTRA_ioctl_hdio_Xabbrev_DEPENDENCIES) 
+       @rm -f ioctl_hdio-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_hdio_Xabbrev_OBJECTS) $(ioctl_hdio_Xabbrev_LDADD) $(LIBS)
+
+ioctl_hdio-Xraw$(EXEEXT): $(ioctl_hdio_Xraw_OBJECTS) $(ioctl_hdio_Xraw_DEPENDENCIES) $(EXTRA_ioctl_hdio_Xraw_DEPENDENCIES) 
+       @rm -f ioctl_hdio-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_hdio_Xraw_OBJECTS) $(ioctl_hdio_Xraw_LDADD) $(LIBS)
+
+ioctl_hdio-Xverbose$(EXEEXT): $(ioctl_hdio_Xverbose_OBJECTS) $(ioctl_hdio_Xverbose_DEPENDENCIES) $(EXTRA_ioctl_hdio_Xverbose_DEPENDENCIES) 
+       @rm -f ioctl_hdio-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_hdio_Xverbose_OBJECTS) $(ioctl_hdio_Xverbose_LDADD) $(LIBS)
+
+ioctl_hdio-success$(EXEEXT): $(ioctl_hdio_success_OBJECTS) $(ioctl_hdio_success_DEPENDENCIES) $(EXTRA_ioctl_hdio_success_DEPENDENCIES) 
+       @rm -f ioctl_hdio-success$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_hdio_success_OBJECTS) $(ioctl_hdio_success_LDADD) $(LIBS)
+
+ioctl_hdio-success-Xabbrev$(EXEEXT): $(ioctl_hdio_success_Xabbrev_OBJECTS) $(ioctl_hdio_success_Xabbrev_DEPENDENCIES) $(EXTRA_ioctl_hdio_success_Xabbrev_DEPENDENCIES) 
+       @rm -f ioctl_hdio-success-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_hdio_success_Xabbrev_OBJECTS) $(ioctl_hdio_success_Xabbrev_LDADD) $(LIBS)
+
+ioctl_hdio-success-Xraw$(EXEEXT): $(ioctl_hdio_success_Xraw_OBJECTS) $(ioctl_hdio_success_Xraw_DEPENDENCIES) $(EXTRA_ioctl_hdio_success_Xraw_DEPENDENCIES) 
+       @rm -f ioctl_hdio-success-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_hdio_success_Xraw_OBJECTS) $(ioctl_hdio_success_Xraw_LDADD) $(LIBS)
+
+ioctl_hdio-success-Xverbose$(EXEEXT): $(ioctl_hdio_success_Xverbose_OBJECTS) $(ioctl_hdio_success_Xverbose_DEPENDENCIES) $(EXTRA_ioctl_hdio_success_Xverbose_DEPENDENCIES) 
+       @rm -f ioctl_hdio-success-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_hdio_success_Xverbose_OBJECTS) $(ioctl_hdio_success_Xverbose_LDADD) $(LIBS)
+
+ioctl_hdio-success-v$(EXEEXT): $(ioctl_hdio_success_v_OBJECTS) $(ioctl_hdio_success_v_DEPENDENCIES) $(EXTRA_ioctl_hdio_success_v_DEPENDENCIES) 
+       @rm -f ioctl_hdio-success-v$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_hdio_success_v_OBJECTS) $(ioctl_hdio_success_v_LDADD) $(LIBS)
+
+ioctl_hdio-success-v-Xabbrev$(EXEEXT): $(ioctl_hdio_success_v_Xabbrev_OBJECTS) $(ioctl_hdio_success_v_Xabbrev_DEPENDENCIES) $(EXTRA_ioctl_hdio_success_v_Xabbrev_DEPENDENCIES) 
+       @rm -f ioctl_hdio-success-v-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_hdio_success_v_Xabbrev_OBJECTS) $(ioctl_hdio_success_v_Xabbrev_LDADD) $(LIBS)
+
+ioctl_hdio-success-v-Xraw$(EXEEXT): $(ioctl_hdio_success_v_Xraw_OBJECTS) $(ioctl_hdio_success_v_Xraw_DEPENDENCIES) $(EXTRA_ioctl_hdio_success_v_Xraw_DEPENDENCIES) 
+       @rm -f ioctl_hdio-success-v-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_hdio_success_v_Xraw_OBJECTS) $(ioctl_hdio_success_v_Xraw_LDADD) $(LIBS)
+
+ioctl_hdio-success-v-Xverbose$(EXEEXT): $(ioctl_hdio_success_v_Xverbose_OBJECTS) $(ioctl_hdio_success_v_Xverbose_DEPENDENCIES) $(EXTRA_ioctl_hdio_success_v_Xverbose_DEPENDENCIES) 
+       @rm -f ioctl_hdio-success-v-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_hdio_success_v_Xverbose_OBJECTS) $(ioctl_hdio_success_v_Xverbose_LDADD) $(LIBS)
+
+ioctl_hdio-v$(EXEEXT): $(ioctl_hdio_v_OBJECTS) $(ioctl_hdio_v_DEPENDENCIES) $(EXTRA_ioctl_hdio_v_DEPENDENCIES) 
+       @rm -f ioctl_hdio-v$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_hdio_v_OBJECTS) $(ioctl_hdio_v_LDADD) $(LIBS)
+
+ioctl_hdio-v-Xabbrev$(EXEEXT): $(ioctl_hdio_v_Xabbrev_OBJECTS) $(ioctl_hdio_v_Xabbrev_DEPENDENCIES) $(EXTRA_ioctl_hdio_v_Xabbrev_DEPENDENCIES) 
+       @rm -f ioctl_hdio-v-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_hdio_v_Xabbrev_OBJECTS) $(ioctl_hdio_v_Xabbrev_LDADD) $(LIBS)
+
+ioctl_hdio-v-Xraw$(EXEEXT): $(ioctl_hdio_v_Xraw_OBJECTS) $(ioctl_hdio_v_Xraw_DEPENDENCIES) $(EXTRA_ioctl_hdio_v_Xraw_DEPENDENCIES) 
+       @rm -f ioctl_hdio-v-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_hdio_v_Xraw_OBJECTS) $(ioctl_hdio_v_Xraw_LDADD) $(LIBS)
+
+ioctl_hdio-v-Xverbose$(EXEEXT): $(ioctl_hdio_v_Xverbose_OBJECTS) $(ioctl_hdio_v_Xverbose_DEPENDENCIES) $(EXTRA_ioctl_hdio_v_Xverbose_DEPENDENCIES) 
+       @rm -f ioctl_hdio-v-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_hdio_v_Xverbose_OBJECTS) $(ioctl_hdio_v_Xverbose_LDADD) $(LIBS)
+
 ioctl_inotify$(EXEEXT): $(ioctl_inotify_OBJECTS) $(ioctl_inotify_DEPENDENCIES) $(EXTRA_ioctl_inotify_DEPENDENCIES) 
        @rm -f ioctl_inotify$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(ioctl_inotify_OBJECTS) $(ioctl_inotify_LDADD) $(LIBS)
@@ -5845,6 +8007,10 @@ ioctl_sock_gifconf$(EXEEXT): $(ioctl_sock_gifconf_OBJECTS) $(ioctl_sock_gifconf_
        @rm -f ioctl_sock_gifconf$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(ioctl_sock_gifconf_OBJECTS) $(ioctl_sock_gifconf_LDADD) $(LIBS)
 
+ioctl_tee$(EXEEXT): $(ioctl_tee_OBJECTS) $(ioctl_tee_DEPENDENCIES) $(EXTRA_ioctl_tee_DEPENDENCIES) 
+       @rm -f ioctl_tee$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_tee_OBJECTS) $(ioctl_tee_LDADD) $(LIBS)
+
 ioctl_uffdio$(EXEEXT): $(ioctl_uffdio_OBJECTS) $(ioctl_uffdio_DEPENDENCIES) $(EXTRA_ioctl_uffdio_DEPENDENCIES) 
        @rm -f ioctl_uffdio$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(ioctl_uffdio_OBJECTS) $(ioctl_uffdio_LDADD) $(LIBS)
@@ -5853,6 +8019,70 @@ ioctl_v4l2$(EXEEXT): $(ioctl_v4l2_OBJECTS) $(ioctl_v4l2_DEPENDENCIES) $(EXTRA_io
        @rm -f ioctl_v4l2$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_OBJECTS) $(ioctl_v4l2_LDADD) $(LIBS)
 
+ioctl_v4l2-Xabbrev$(EXEEXT): $(ioctl_v4l2_Xabbrev_OBJECTS) $(ioctl_v4l2_Xabbrev_DEPENDENCIES) $(EXTRA_ioctl_v4l2_Xabbrev_DEPENDENCIES) 
+       @rm -f ioctl_v4l2-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_Xabbrev_OBJECTS) $(ioctl_v4l2_Xabbrev_LDADD) $(LIBS)
+
+ioctl_v4l2-Xraw$(EXEEXT): $(ioctl_v4l2_Xraw_OBJECTS) $(ioctl_v4l2_Xraw_DEPENDENCIES) $(EXTRA_ioctl_v4l2_Xraw_DEPENDENCIES) 
+       @rm -f ioctl_v4l2-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_Xraw_OBJECTS) $(ioctl_v4l2_Xraw_LDADD) $(LIBS)
+
+ioctl_v4l2-Xverbose$(EXEEXT): $(ioctl_v4l2_Xverbose_OBJECTS) $(ioctl_v4l2_Xverbose_DEPENDENCIES) $(EXTRA_ioctl_v4l2_Xverbose_DEPENDENCIES) 
+       @rm -f ioctl_v4l2-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_Xverbose_OBJECTS) $(ioctl_v4l2_Xverbose_LDADD) $(LIBS)
+
+ioctl_v4l2-success$(EXEEXT): $(ioctl_v4l2_success_OBJECTS) $(ioctl_v4l2_success_DEPENDENCIES) $(EXTRA_ioctl_v4l2_success_DEPENDENCIES) 
+       @rm -f ioctl_v4l2-success$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_success_OBJECTS) $(ioctl_v4l2_success_LDADD) $(LIBS)
+
+ioctl_v4l2-success-Xabbrev$(EXEEXT): $(ioctl_v4l2_success_Xabbrev_OBJECTS) $(ioctl_v4l2_success_Xabbrev_DEPENDENCIES) $(EXTRA_ioctl_v4l2_success_Xabbrev_DEPENDENCIES) 
+       @rm -f ioctl_v4l2-success-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_success_Xabbrev_OBJECTS) $(ioctl_v4l2_success_Xabbrev_LDADD) $(LIBS)
+
+ioctl_v4l2-success-Xraw$(EXEEXT): $(ioctl_v4l2_success_Xraw_OBJECTS) $(ioctl_v4l2_success_Xraw_DEPENDENCIES) $(EXTRA_ioctl_v4l2_success_Xraw_DEPENDENCIES) 
+       @rm -f ioctl_v4l2-success-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_success_Xraw_OBJECTS) $(ioctl_v4l2_success_Xraw_LDADD) $(LIBS)
+
+ioctl_v4l2-success-Xverbose$(EXEEXT): $(ioctl_v4l2_success_Xverbose_OBJECTS) $(ioctl_v4l2_success_Xverbose_DEPENDENCIES) $(EXTRA_ioctl_v4l2_success_Xverbose_DEPENDENCIES) 
+       @rm -f ioctl_v4l2-success-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_success_Xverbose_OBJECTS) $(ioctl_v4l2_success_Xverbose_LDADD) $(LIBS)
+
+ioctl_v4l2-success-v$(EXEEXT): $(ioctl_v4l2_success_v_OBJECTS) $(ioctl_v4l2_success_v_DEPENDENCIES) $(EXTRA_ioctl_v4l2_success_v_DEPENDENCIES) 
+       @rm -f ioctl_v4l2-success-v$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_success_v_OBJECTS) $(ioctl_v4l2_success_v_LDADD) $(LIBS)
+
+ioctl_v4l2-success-v-Xabbrev$(EXEEXT): $(ioctl_v4l2_success_v_Xabbrev_OBJECTS) $(ioctl_v4l2_success_v_Xabbrev_DEPENDENCIES) $(EXTRA_ioctl_v4l2_success_v_Xabbrev_DEPENDENCIES) 
+       @rm -f ioctl_v4l2-success-v-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_success_v_Xabbrev_OBJECTS) $(ioctl_v4l2_success_v_Xabbrev_LDADD) $(LIBS)
+
+ioctl_v4l2-success-v-Xraw$(EXEEXT): $(ioctl_v4l2_success_v_Xraw_OBJECTS) $(ioctl_v4l2_success_v_Xraw_DEPENDENCIES) $(EXTRA_ioctl_v4l2_success_v_Xraw_DEPENDENCIES) 
+       @rm -f ioctl_v4l2-success-v-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_success_v_Xraw_OBJECTS) $(ioctl_v4l2_success_v_Xraw_LDADD) $(LIBS)
+
+ioctl_v4l2-success-v-Xverbose$(EXEEXT): $(ioctl_v4l2_success_v_Xverbose_OBJECTS) $(ioctl_v4l2_success_v_Xverbose_DEPENDENCIES) $(EXTRA_ioctl_v4l2_success_v_Xverbose_DEPENDENCIES) 
+       @rm -f ioctl_v4l2-success-v-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_success_v_Xverbose_OBJECTS) $(ioctl_v4l2_success_v_Xverbose_LDADD) $(LIBS)
+
+ioctl_v4l2-v$(EXEEXT): $(ioctl_v4l2_v_OBJECTS) $(ioctl_v4l2_v_DEPENDENCIES) $(EXTRA_ioctl_v4l2_v_DEPENDENCIES) 
+       @rm -f ioctl_v4l2-v$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_v_OBJECTS) $(ioctl_v4l2_v_LDADD) $(LIBS)
+
+ioctl_v4l2-v-Xabbrev$(EXEEXT): $(ioctl_v4l2_v_Xabbrev_OBJECTS) $(ioctl_v4l2_v_Xabbrev_DEPENDENCIES) $(EXTRA_ioctl_v4l2_v_Xabbrev_DEPENDENCIES) 
+       @rm -f ioctl_v4l2-v-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_v_Xabbrev_OBJECTS) $(ioctl_v4l2_v_Xabbrev_LDADD) $(LIBS)
+
+ioctl_v4l2-v-Xraw$(EXEEXT): $(ioctl_v4l2_v_Xraw_OBJECTS) $(ioctl_v4l2_v_Xraw_DEPENDENCIES) $(EXTRA_ioctl_v4l2_v_Xraw_DEPENDENCIES) 
+       @rm -f ioctl_v4l2-v-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_v_Xraw_OBJECTS) $(ioctl_v4l2_v_Xraw_LDADD) $(LIBS)
+
+ioctl_v4l2-v-Xverbose$(EXEEXT): $(ioctl_v4l2_v_Xverbose_OBJECTS) $(ioctl_v4l2_v_Xverbose_DEPENDENCIES) $(EXTRA_ioctl_v4l2_v_Xverbose_DEPENDENCIES) 
+       @rm -f ioctl_v4l2-v-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_v4l2_v_Xverbose_OBJECTS) $(ioctl_v4l2_v_Xverbose_LDADD) $(LIBS)
+
+ioctl_watchdog$(EXEEXT): $(ioctl_watchdog_OBJECTS) $(ioctl_watchdog_DEPENDENCIES) $(EXTRA_ioctl_watchdog_DEPENDENCIES) 
+       @rm -f ioctl_watchdog$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioctl_watchdog_OBJECTS) $(ioctl_watchdog_LDADD) $(LIBS)
+
 ioperm$(EXEEXT): $(ioperm_OBJECTS) $(ioperm_DEPENDENCIES) $(EXTRA_ioperm_DEPENDENCIES) 
        @rm -f ioperm$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(ioperm_OBJECTS) $(ioperm_LDADD) $(LIBS)
@@ -5865,6 +8095,10 @@ ioprio$(EXEEXT): $(ioprio_OBJECTS) $(ioprio_DEPENDENCIES) $(EXTRA_ioprio_DEPENDE
        @rm -f ioprio$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(ioprio_OBJECTS) $(ioprio_LDADD) $(LIBS)
 
+ioprio--pidns-translation$(EXEEXT): $(ioprio__pidns_translation_OBJECTS) $(ioprio__pidns_translation_DEPENDENCIES) $(EXTRA_ioprio__pidns_translation_DEPENDENCIES) 
+       @rm -f ioprio--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(ioprio__pidns_translation_OBJECTS) $(ioprio__pidns_translation_LDADD) $(LIBS)
+
 ioprio-Xabbrev$(EXEEXT): $(ioprio_Xabbrev_OBJECTS) $(ioprio_Xabbrev_DEPENDENCIES) $(EXTRA_ioprio_Xabbrev_DEPENDENCIES) 
        @rm -f ioprio-Xabbrev$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(ioprio_Xabbrev_OBJECTS) $(ioprio_Xabbrev_LDADD) $(LIBS)
@@ -5961,6 +8195,10 @@ kcmp-y$(EXEEXT): $(kcmp_y_OBJECTS) $(kcmp_y_DEPENDENCIES) $(EXTRA_kcmp_y_DEPENDE
        @rm -f kcmp-y$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(kcmp_y_OBJECTS) $(kcmp_y_LDADD) $(LIBS)
 
+kcmp-y--pidns-translation$(EXEEXT): $(kcmp_y__pidns_translation_OBJECTS) $(kcmp_y__pidns_translation_DEPENDENCIES) $(EXTRA_kcmp_y__pidns_translation_DEPENDENCIES) 
+       @rm -f kcmp-y--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(kcmp_y__pidns_translation_OBJECTS) $(kcmp_y__pidns_translation_LDADD) $(LIBS)
+
 kern_features$(EXEEXT): $(kern_features_OBJECTS) $(kern_features_DEPENDENCIES) $(EXTRA_kern_features_DEPENDENCIES) 
        @rm -f kern_features$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(kern_features_OBJECTS) $(kern_features_LDADD) $(LIBS)
@@ -6009,6 +8247,10 @@ kill$(EXEEXT): $(kill_OBJECTS) $(kill_DEPENDENCIES) $(EXTRA_kill_DEPENDENCIES)
        @rm -f kill$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(kill_OBJECTS) $(kill_LDADD) $(LIBS)
 
+kill--pidns-translation$(EXEEXT): $(kill__pidns_translation_OBJECTS) $(kill__pidns_translation_DEPENDENCIES) $(EXTRA_kill__pidns_translation_DEPENDENCIES) 
+       @rm -f kill--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(kill__pidns_translation_OBJECTS) $(kill__pidns_translation_LDADD) $(LIBS)
+
 kill_child$(EXEEXT): $(kill_child_OBJECTS) $(kill_child_DEPENDENCIES) $(EXTRA_kill_child_DEPENDENCIES) 
        @rm -f kill_child$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(kill_child_OBJECTS) $(kill_child_LDADD) $(LIBS)
@@ -6069,10 +8311,30 @@ madvise$(EXEEXT): $(madvise_OBJECTS) $(madvise_DEPENDENCIES) $(EXTRA_madvise_DEP
        @rm -f madvise$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(madvise_OBJECTS) $(madvise_LDADD) $(LIBS)
 
+maybe_switch_current_tcp$(EXEEXT): $(maybe_switch_current_tcp_OBJECTS) $(maybe_switch_current_tcp_DEPENDENCIES) $(EXTRA_maybe_switch_current_tcp_DEPENDENCIES) 
+       @rm -f maybe_switch_current_tcp$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(maybe_switch_current_tcp_OBJECTS) $(maybe_switch_current_tcp_LDADD) $(LIBS)
+
+maybe_switch_current_tcp--quiet-thread-execve$(EXEEXT): $(maybe_switch_current_tcp__quiet_thread_execve_OBJECTS) $(maybe_switch_current_tcp__quiet_thread_execve_DEPENDENCIES) $(EXTRA_maybe_switch_current_tcp__quiet_thread_execve_DEPENDENCIES) 
+       @rm -f maybe_switch_current_tcp--quiet-thread-execve$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(maybe_switch_current_tcp__quiet_thread_execve_OBJECTS) $(maybe_switch_current_tcp__quiet_thread_execve_LDADD) $(LIBS)
+
 mbind$(EXEEXT): $(mbind_OBJECTS) $(mbind_DEPENDENCIES) $(EXTRA_mbind_DEPENDENCIES) 
        @rm -f mbind$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(mbind_OBJECTS) $(mbind_LDADD) $(LIBS)
 
+mbind-Xabbrev$(EXEEXT): $(mbind_Xabbrev_OBJECTS) $(mbind_Xabbrev_DEPENDENCIES) $(EXTRA_mbind_Xabbrev_DEPENDENCIES) 
+       @rm -f mbind-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(mbind_Xabbrev_OBJECTS) $(mbind_Xabbrev_LDADD) $(LIBS)
+
+mbind-Xraw$(EXEEXT): $(mbind_Xraw_OBJECTS) $(mbind_Xraw_DEPENDENCIES) $(EXTRA_mbind_Xraw_DEPENDENCIES) 
+       @rm -f mbind-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(mbind_Xraw_OBJECTS) $(mbind_Xraw_LDADD) $(LIBS)
+
+mbind-Xverbose$(EXEEXT): $(mbind_Xverbose_OBJECTS) $(mbind_Xverbose_DEPENDENCIES) $(EXTRA_mbind_Xverbose_DEPENDENCIES) 
+       @rm -f mbind-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(mbind_Xverbose_OBJECTS) $(mbind_Xverbose_LDADD) $(LIBS)
+
 membarrier$(EXEEXT): $(membarrier_OBJECTS) $(membarrier_DEPENDENCIES) $(EXTRA_membarrier_DEPENDENCIES) 
        @rm -f membarrier$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(membarrier_OBJECTS) $(membarrier_LDADD) $(LIBS)
@@ -6097,6 +8359,10 @@ migrate_pages$(EXEEXT): $(migrate_pages_OBJECTS) $(migrate_pages_DEPENDENCIES) $
        @rm -f migrate_pages$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(migrate_pages_OBJECTS) $(migrate_pages_LDADD) $(LIBS)
 
+migrate_pages--pidns-translation$(EXEEXT): $(migrate_pages__pidns_translation_OBJECTS) $(migrate_pages__pidns_translation_DEPENDENCIES) $(EXTRA_migrate_pages__pidns_translation_DEPENDENCIES) 
+       @rm -f migrate_pages--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(migrate_pages__pidns_translation_OBJECTS) $(migrate_pages__pidns_translation_LDADD) $(LIBS)
+
 mincore$(EXEEXT): $(mincore_OBJECTS) $(mincore_DEPENDENCIES) $(EXTRA_mincore_DEPENDENCIES) 
        @rm -f mincore$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(mincore_OBJECTS) $(mincore_LDADD) $(LIBS)
@@ -6197,10 +8463,22 @@ mount-Xverbose$(EXEEXT): $(mount_Xverbose_OBJECTS) $(mount_Xverbose_DEPENDENCIES
        @rm -f mount-Xverbose$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(mount_Xverbose_OBJECTS) $(mount_Xverbose_LDADD) $(LIBS)
 
+move_mount$(EXEEXT): $(move_mount_OBJECTS) $(move_mount_DEPENDENCIES) $(EXTRA_move_mount_DEPENDENCIES) 
+       @rm -f move_mount$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(move_mount_OBJECTS) $(move_mount_LDADD) $(LIBS)
+
+move_mount-P$(EXEEXT): $(move_mount_P_OBJECTS) $(move_mount_P_DEPENDENCIES) $(EXTRA_move_mount_P_DEPENDENCIES) 
+       @rm -f move_mount-P$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(move_mount_P_OBJECTS) $(move_mount_P_LDADD) $(LIBS)
+
 move_pages$(EXEEXT): $(move_pages_OBJECTS) $(move_pages_DEPENDENCIES) $(EXTRA_move_pages_DEPENDENCIES) 
        @rm -f move_pages$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(move_pages_OBJECTS) $(move_pages_LDADD) $(LIBS)
 
+move_pages--pidns-translation$(EXEEXT): $(move_pages__pidns_translation_OBJECTS) $(move_pages__pidns_translation_DEPENDENCIES) $(EXTRA_move_pages__pidns_translation_DEPENDENCIES) 
+       @rm -f move_pages--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(move_pages__pidns_translation_OBJECTS) $(move_pages__pidns_translation_LDADD) $(LIBS)
+
 move_pages-Xabbrev$(EXEEXT): $(move_pages_Xabbrev_OBJECTS) $(move_pages_Xabbrev_DEPENDENCIES) $(EXTRA_move_pages_Xabbrev_DEPENDENCIES) 
        @rm -f move_pages-Xabbrev$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(move_pages_Xabbrev_OBJECTS) $(move_pages_Xabbrev_LDADD) $(LIBS)
@@ -6249,6 +8527,22 @@ nanosleep$(EXEEXT): $(nanosleep_OBJECTS) $(nanosleep_DEPENDENCIES) $(EXTRA_nanos
        @rm -f nanosleep$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(nanosleep_OBJECTS) $(nanosleep_LDADD) $(LIBS)
 
+net--decode-fds-dev-netlink$(EXEEXT): $(net__decode_fds_dev_netlink_OBJECTS) $(net__decode_fds_dev_netlink_DEPENDENCIES) $(EXTRA_net__decode_fds_dev_netlink_DEPENDENCIES) 
+       @rm -f net--decode-fds-dev-netlink$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(net__decode_fds_dev_netlink_OBJECTS) $(net__decode_fds_dev_netlink_LDADD) $(LIBS)
+
+net--decode-fds-none-netlink$(EXEEXT): $(net__decode_fds_none_netlink_OBJECTS) $(net__decode_fds_none_netlink_DEPENDENCIES) $(EXTRA_net__decode_fds_none_netlink_DEPENDENCIES) 
+       @rm -f net--decode-fds-none-netlink$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(net__decode_fds_none_netlink_OBJECTS) $(net__decode_fds_none_netlink_LDADD) $(LIBS)
+
+net--decode-fds-path-netlink$(EXEEXT): $(net__decode_fds_path_netlink_OBJECTS) $(net__decode_fds_path_netlink_DEPENDENCIES) $(EXTRA_net__decode_fds_path_netlink_DEPENDENCIES) 
+       @rm -f net--decode-fds-path-netlink$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(net__decode_fds_path_netlink_OBJECTS) $(net__decode_fds_path_netlink_LDADD) $(LIBS)
+
+net--decode-fds-socket-netlink$(EXEEXT): $(net__decode_fds_socket_netlink_OBJECTS) $(net__decode_fds_socket_netlink_DEPENDENCIES) $(EXTRA_net__decode_fds_socket_netlink_DEPENDENCIES) 
+       @rm -f net--decode-fds-socket-netlink$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(net__decode_fds_socket_netlink_OBJECTS) $(net__decode_fds_socket_netlink_LDADD) $(LIBS)
+
 net-accept-connect$(EXEEXT): $(net_accept_connect_OBJECTS) $(net_accept_connect_DEPENDENCIES) $(EXTRA_net_accept_connect_DEPENDENCIES) 
        @rm -f net-accept-connect$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(net_accept_connect_OBJECTS) $(net_accept_connect_LDADD) $(LIBS)
@@ -6277,6 +8571,10 @@ net-sockaddr$(EXEEXT): $(net_sockaddr_OBJECTS) $(net_sockaddr_DEPENDENCIES) $(EX
        @rm -f net-sockaddr$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(net_sockaddr_OBJECTS) $(net_sockaddr_LDADD) $(LIBS)
 
+net-sockaddr--pidns-translation$(EXEEXT): $(net_sockaddr__pidns_translation_OBJECTS) $(net_sockaddr__pidns_translation_DEPENDENCIES) $(EXTRA_net_sockaddr__pidns_translation_DEPENDENCIES) 
+       @rm -f net-sockaddr--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(net_sockaddr__pidns_translation_OBJECTS) $(net_sockaddr__pidns_translation_LDADD) $(LIBS)
+
 net-tpacket_req$(EXEEXT): $(net_tpacket_req_OBJECTS) $(net_tpacket_req_DEPENDENCIES) $(EXTRA_net_tpacket_req_DEPENDENCIES) 
        @rm -f net-tpacket_req$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(net_tpacket_req_OBJECTS) $(net_tpacket_req_LDADD) $(LIBS)
@@ -6313,6 +8611,10 @@ netlink_audit$(EXEEXT): $(netlink_audit_OBJECTS) $(netlink_audit_DEPENDENCIES) $
        @rm -f netlink_audit$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(netlink_audit_OBJECTS) $(netlink_audit_LDADD) $(LIBS)
 
+netlink_audit--pidns-translation$(EXEEXT): $(netlink_audit__pidns_translation_OBJECTS) $(netlink_audit__pidns_translation_DEPENDENCIES) $(EXTRA_netlink_audit__pidns_translation_DEPENDENCIES) 
+       @rm -f netlink_audit--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(netlink_audit__pidns_translation_OBJECTS) $(netlink_audit__pidns_translation_LDADD) $(LIBS)
+
 netlink_crypto$(EXEEXT): $(netlink_crypto_OBJECTS) $(netlink_crypto_DEPENDENCIES) $(EXTRA_netlink_crypto_DEPENDENCIES) 
        @rm -f netlink_crypto$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(netlink_crypto_OBJECTS) $(netlink_crypto_LDADD) $(LIBS)
@@ -6461,6 +8763,10 @@ nlattr_ifla_xdp$(EXEEXT): $(nlattr_ifla_xdp_OBJECTS) $(nlattr_ifla_xdp_DEPENDENC
        @rm -f nlattr_ifla_xdp$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(nlattr_ifla_xdp_OBJECTS) $(nlattr_ifla_xdp_LDADD) $(LIBS)
 
+nlattr_ifla_xdp-y$(EXEEXT): $(nlattr_ifla_xdp_y_OBJECTS) $(nlattr_ifla_xdp_y_DEPENDENCIES) $(EXTRA_nlattr_ifla_xdp_y_DEPENDENCIES) 
+       @rm -f nlattr_ifla_xdp-y$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(nlattr_ifla_xdp_y_OBJECTS) $(nlattr_ifla_xdp_y_LDADD) $(LIBS)
+
 nlattr_inet_diag_msg$(EXEEXT): $(nlattr_inet_diag_msg_OBJECTS) $(nlattr_inet_diag_msg_DEPENDENCIES) $(EXTRA_nlattr_inet_diag_msg_DEPENDENCIES) 
        @rm -f nlattr_inet_diag_msg$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(nlattr_inet_diag_msg_OBJECTS) $(nlattr_inet_diag_msg_LDADD) $(LIBS)
@@ -6601,10 +8907,58 @@ open$(EXEEXT): $(open_OBJECTS) $(open_DEPENDENCIES) $(EXTRA_open_DEPENDENCIES)
        @rm -f open$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(open_OBJECTS) $(open_LDADD) $(LIBS)
 
+open_tree$(EXEEXT): $(open_tree_OBJECTS) $(open_tree_DEPENDENCIES) $(EXTRA_open_tree_DEPENDENCIES) 
+       @rm -f open_tree$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(open_tree_OBJECTS) $(open_tree_LDADD) $(LIBS)
+
+open_tree-P$(EXEEXT): $(open_tree_P_OBJECTS) $(open_tree_P_DEPENDENCIES) $(EXTRA_open_tree_P_DEPENDENCIES) 
+       @rm -f open_tree-P$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(open_tree_P_OBJECTS) $(open_tree_P_LDADD) $(LIBS)
+
 openat$(EXEEXT): $(openat_OBJECTS) $(openat_DEPENDENCIES) $(EXTRA_openat_DEPENDENCIES) 
        @rm -f openat$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(openat_OBJECTS) $(openat_LDADD) $(LIBS)
 
+openat2$(EXEEXT): $(openat2_OBJECTS) $(openat2_DEPENDENCIES) $(EXTRA_openat2_DEPENDENCIES) 
+       @rm -f openat2$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(openat2_OBJECTS) $(openat2_LDADD) $(LIBS)
+
+openat2-Xabbrev$(EXEEXT): $(openat2_Xabbrev_OBJECTS) $(openat2_Xabbrev_DEPENDENCIES) $(EXTRA_openat2_Xabbrev_DEPENDENCIES) 
+       @rm -f openat2-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(openat2_Xabbrev_OBJECTS) $(openat2_Xabbrev_LDADD) $(LIBS)
+
+openat2-Xraw$(EXEEXT): $(openat2_Xraw_OBJECTS) $(openat2_Xraw_DEPENDENCIES) $(EXTRA_openat2_Xraw_DEPENDENCIES) 
+       @rm -f openat2-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(openat2_Xraw_OBJECTS) $(openat2_Xraw_LDADD) $(LIBS)
+
+openat2-Xverbose$(EXEEXT): $(openat2_Xverbose_OBJECTS) $(openat2_Xverbose_DEPENDENCIES) $(EXTRA_openat2_Xverbose_DEPENDENCIES) 
+       @rm -f openat2-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(openat2_Xverbose_OBJECTS) $(openat2_Xverbose_LDADD) $(LIBS)
+
+openat2-v$(EXEEXT): $(openat2_v_OBJECTS) $(openat2_v_DEPENDENCIES) $(EXTRA_openat2_v_DEPENDENCIES) 
+       @rm -f openat2-v$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(openat2_v_OBJECTS) $(openat2_v_LDADD) $(LIBS)
+
+openat2-v-y$(EXEEXT): $(openat2_v_y_OBJECTS) $(openat2_v_y_DEPENDENCIES) $(EXTRA_openat2_v_y_DEPENDENCIES) 
+       @rm -f openat2-v-y$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(openat2_v_y_OBJECTS) $(openat2_v_y_LDADD) $(LIBS)
+
+openat2-v-y-Xabbrev$(EXEEXT): $(openat2_v_y_Xabbrev_OBJECTS) $(openat2_v_y_Xabbrev_DEPENDENCIES) $(EXTRA_openat2_v_y_Xabbrev_DEPENDENCIES) 
+       @rm -f openat2-v-y-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(openat2_v_y_Xabbrev_OBJECTS) $(openat2_v_y_Xabbrev_LDADD) $(LIBS)
+
+openat2-v-y-Xraw$(EXEEXT): $(openat2_v_y_Xraw_OBJECTS) $(openat2_v_y_Xraw_DEPENDENCIES) $(EXTRA_openat2_v_y_Xraw_DEPENDENCIES) 
+       @rm -f openat2-v-y-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(openat2_v_y_Xraw_OBJECTS) $(openat2_v_y_Xraw_LDADD) $(LIBS)
+
+openat2-v-y-Xverbose$(EXEEXT): $(openat2_v_y_Xverbose_OBJECTS) $(openat2_v_y_Xverbose_DEPENDENCIES) $(EXTRA_openat2_v_y_Xverbose_DEPENDENCIES) 
+       @rm -f openat2-v-y-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(openat2_v_y_Xverbose_OBJECTS) $(openat2_v_y_Xverbose_LDADD) $(LIBS)
+
+openat2-y$(EXEEXT): $(openat2_y_OBJECTS) $(openat2_y_DEPENDENCIES) $(EXTRA_openat2_y_DEPENDENCIES) 
+       @rm -f openat2-y$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(openat2_y_OBJECTS) $(openat2_y_LDADD) $(LIBS)
+
 orphaned_process_group$(EXEEXT): $(orphaned_process_group_OBJECTS) $(orphaned_process_group_DEPENDENCIES) $(EXTRA_orphaned_process_group_DEPENDENCIES) 
        @rm -f orphaned_process_group$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(orphaned_process_group_OBJECTS) $(orphaned_process_group_LDADD) $(LIBS)
@@ -6649,10 +9003,62 @@ personality-Xverbose$(EXEEXT): $(personality_Xverbose_OBJECTS) $(personality_Xve
        @rm -f personality-Xverbose$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(personality_Xverbose_OBJECTS) $(personality_Xverbose_LDADD) $(LIBS)
 
+pidfd_getfd$(EXEEXT): $(pidfd_getfd_OBJECTS) $(pidfd_getfd_DEPENDENCIES) $(EXTRA_pidfd_getfd_DEPENDENCIES) 
+       @rm -f pidfd_getfd$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pidfd_getfd_OBJECTS) $(pidfd_getfd_LDADD) $(LIBS)
+
+pidfd_getfd-y$(EXEEXT): $(pidfd_getfd_y_OBJECTS) $(pidfd_getfd_y_DEPENDENCIES) $(EXTRA_pidfd_getfd_y_DEPENDENCIES) 
+       @rm -f pidfd_getfd-y$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pidfd_getfd_y_OBJECTS) $(pidfd_getfd_y_LDADD) $(LIBS)
+
+pidfd_getfd-yy$(EXEEXT): $(pidfd_getfd_yy_OBJECTS) $(pidfd_getfd_yy_DEPENDENCIES) $(EXTRA_pidfd_getfd_yy_DEPENDENCIES) 
+       @rm -f pidfd_getfd-yy$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pidfd_getfd_yy_OBJECTS) $(pidfd_getfd_yy_LDADD) $(LIBS)
+
+pidfd_open$(EXEEXT): $(pidfd_open_OBJECTS) $(pidfd_open_DEPENDENCIES) $(EXTRA_pidfd_open_DEPENDENCIES) 
+       @rm -f pidfd_open$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pidfd_open_OBJECTS) $(pidfd_open_LDADD) $(LIBS)
+
+pidfd_open--decode-fd-path$(EXEEXT): $(pidfd_open__decode_fd_path_OBJECTS) $(pidfd_open__decode_fd_path_DEPENDENCIES) $(EXTRA_pidfd_open__decode_fd_path_DEPENDENCIES) 
+       @rm -f pidfd_open--decode-fd-path$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pidfd_open__decode_fd_path_OBJECTS) $(pidfd_open__decode_fd_path_LDADD) $(LIBS)
+
+pidfd_open--decode-fd-pidfd$(EXEEXT): $(pidfd_open__decode_fd_pidfd_OBJECTS) $(pidfd_open__decode_fd_pidfd_DEPENDENCIES) $(EXTRA_pidfd_open__decode_fd_pidfd_DEPENDENCIES) 
+       @rm -f pidfd_open--decode-fd-pidfd$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pidfd_open__decode_fd_pidfd_OBJECTS) $(pidfd_open__decode_fd_pidfd_LDADD) $(LIBS)
+
+pidfd_open--decode-fd-socket$(EXEEXT): $(pidfd_open__decode_fd_socket_OBJECTS) $(pidfd_open__decode_fd_socket_DEPENDENCIES) $(EXTRA_pidfd_open__decode_fd_socket_DEPENDENCIES) 
+       @rm -f pidfd_open--decode-fd-socket$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pidfd_open__decode_fd_socket_OBJECTS) $(pidfd_open__decode_fd_socket_LDADD) $(LIBS)
+
+pidfd_open--pidns-translation$(EXEEXT): $(pidfd_open__pidns_translation_OBJECTS) $(pidfd_open__pidns_translation_DEPENDENCIES) $(EXTRA_pidfd_open__pidns_translation_DEPENDENCIES) 
+       @rm -f pidfd_open--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pidfd_open__pidns_translation_OBJECTS) $(pidfd_open__pidns_translation_LDADD) $(LIBS)
+
+pidfd_open-P$(EXEEXT): $(pidfd_open_P_OBJECTS) $(pidfd_open_P_DEPENDENCIES) $(EXTRA_pidfd_open_P_DEPENDENCIES) 
+       @rm -f pidfd_open-P$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pidfd_open_P_OBJECTS) $(pidfd_open_P_LDADD) $(LIBS)
+
+pidfd_open-y$(EXEEXT): $(pidfd_open_y_OBJECTS) $(pidfd_open_y_DEPENDENCIES) $(EXTRA_pidfd_open_y_DEPENDENCIES) 
+       @rm -f pidfd_open-y$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pidfd_open_y_OBJECTS) $(pidfd_open_y_LDADD) $(LIBS)
+
+pidfd_open-yy$(EXEEXT): $(pidfd_open_yy_OBJECTS) $(pidfd_open_yy_DEPENDENCIES) $(EXTRA_pidfd_open_yy_DEPENDENCIES) 
+       @rm -f pidfd_open-yy$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pidfd_open_yy_OBJECTS) $(pidfd_open_yy_LDADD) $(LIBS)
+
 pidfd_send_signal$(EXEEXT): $(pidfd_send_signal_OBJECTS) $(pidfd_send_signal_DEPENDENCIES) $(EXTRA_pidfd_send_signal_DEPENDENCIES) 
        @rm -f pidfd_send_signal$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(pidfd_send_signal_OBJECTS) $(pidfd_send_signal_LDADD) $(LIBS)
 
+pidfd_send_signal--pidns-translation$(EXEEXT): $(pidfd_send_signal__pidns_translation_OBJECTS) $(pidfd_send_signal__pidns_translation_DEPENDENCIES) $(EXTRA_pidfd_send_signal__pidns_translation_DEPENDENCIES) 
+       @rm -f pidfd_send_signal--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pidfd_send_signal__pidns_translation_OBJECTS) $(pidfd_send_signal__pidns_translation_LDADD) $(LIBS)
+
+pidns-cache$(EXEEXT): $(pidns_cache_OBJECTS) $(pidns_cache_DEPENDENCIES) $(EXTRA_pidns_cache_DEPENDENCIES) 
+       @rm -f pidns-cache$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pidns_cache_OBJECTS) $(pidns_cache_LDADD) $(LIBS)
+
 pipe$(EXEEXT): $(pipe_OBJECTS) $(pipe_DEPENDENCIES) $(EXTRA_pipe_DEPENDENCIES) 
        @rm -f pipe$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(pipe_OBJECTS) $(pipe_LDADD) $(LIBS)
@@ -6757,6 +9163,10 @@ print_maxfd$(EXEEXT): $(print_maxfd_OBJECTS) $(print_maxfd_DEPENDENCIES) $(EXTRA
        @rm -f print_maxfd$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(print_maxfd_OBJECTS) $(print_maxfd_LDADD) $(LIBS)
 
+print_ppid_tracerpid$(EXEEXT): $(print_ppid_tracerpid_OBJECTS) $(print_ppid_tracerpid_DEPENDENCIES) $(EXTRA_print_ppid_tracerpid_DEPENDENCIES) 
+       @rm -f print_ppid_tracerpid$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(print_ppid_tracerpid_OBJECTS) $(print_ppid_tracerpid_LDADD) $(LIBS)
+
 printpath-umovestr$(EXEEXT): $(printpath_umovestr_OBJECTS) $(printpath_umovestr_DEPENDENCIES) $(EXTRA_printpath_umovestr_DEPENDENCIES) 
        @rm -f printpath-umovestr$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(printpath_umovestr_OBJECTS) $(printpath_umovestr_LDADD) $(LIBS)
@@ -6801,14 +9211,26 @@ prlimit64$(EXEEXT): $(prlimit64_OBJECTS) $(prlimit64_DEPENDENCIES) $(EXTRA_prlim
        @rm -f prlimit64$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(prlimit64_OBJECTS) $(prlimit64_LDADD) $(LIBS)
 
+prlimit64--pidns-translation$(EXEEXT): $(prlimit64__pidns_translation_OBJECTS) $(prlimit64__pidns_translation_DEPENDENCIES) $(EXTRA_prlimit64__pidns_translation_DEPENDENCIES) 
+       @rm -f prlimit64--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(prlimit64__pidns_translation_OBJECTS) $(prlimit64__pidns_translation_LDADD) $(LIBS)
+
 process_vm_readv$(EXEEXT): $(process_vm_readv_OBJECTS) $(process_vm_readv_DEPENDENCIES) $(EXTRA_process_vm_readv_DEPENDENCIES) 
        @rm -f process_vm_readv$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(process_vm_readv_OBJECTS) $(process_vm_readv_LDADD) $(LIBS)
 
+process_vm_readv--pidns-translation$(EXEEXT): $(process_vm_readv__pidns_translation_OBJECTS) $(process_vm_readv__pidns_translation_DEPENDENCIES) $(EXTRA_process_vm_readv__pidns_translation_DEPENDENCIES) 
+       @rm -f process_vm_readv--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(process_vm_readv__pidns_translation_OBJECTS) $(process_vm_readv__pidns_translation_LDADD) $(LIBS)
+
 process_vm_writev$(EXEEXT): $(process_vm_writev_OBJECTS) $(process_vm_writev_DEPENDENCIES) $(EXTRA_process_vm_writev_DEPENDENCIES) 
        @rm -f process_vm_writev$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(process_vm_writev_OBJECTS) $(process_vm_writev_LDADD) $(LIBS)
 
+process_vm_writev--pidns-translation$(EXEEXT): $(process_vm_writev__pidns_translation_OBJECTS) $(process_vm_writev__pidns_translation_DEPENDENCIES) $(EXTRA_process_vm_writev__pidns_translation_DEPENDENCIES) 
+       @rm -f process_vm_writev--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(process_vm_writev__pidns_translation_OBJECTS) $(process_vm_writev__pidns_translation_LDADD) $(LIBS)
+
 pselect6$(EXEEXT): $(pselect6_OBJECTS) $(pselect6_DEPENDENCIES) $(EXTRA_pselect6_DEPENDENCIES) 
        @rm -f pselect6$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(pselect6_OBJECTS) $(pselect6_LDADD) $(LIBS)
@@ -6917,10 +9339,18 @@ reboot$(EXEEXT): $(reboot_OBJECTS) $(reboot_DEPENDENCIES) $(EXTRA_reboot_DEPENDE
        @rm -f reboot$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(reboot_OBJECTS) $(reboot_LDADD) $(LIBS)
 
+recv-MSG_TRUNC$(EXEEXT): $(recv_MSG_TRUNC_OBJECTS) $(recv_MSG_TRUNC_DEPENDENCIES) $(EXTRA_recv_MSG_TRUNC_DEPENDENCIES) 
+       @rm -f recv-MSG_TRUNC$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(recv_MSG_TRUNC_OBJECTS) $(recv_MSG_TRUNC_LDADD) $(LIBS)
+
 recvfrom$(EXEEXT): $(recvfrom_OBJECTS) $(recvfrom_DEPENDENCIES) $(EXTRA_recvfrom_DEPENDENCIES) 
        @rm -f recvfrom$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(recvfrom_OBJECTS) $(recvfrom_LDADD) $(LIBS)
 
+recvfrom-MSG_TRUNC$(EXEEXT): $(recvfrom_MSG_TRUNC_OBJECTS) $(recvfrom_MSG_TRUNC_DEPENDENCIES) $(EXTRA_recvfrom_MSG_TRUNC_DEPENDENCIES) 
+       @rm -f recvfrom-MSG_TRUNC$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(recvfrom_MSG_TRUNC_OBJECTS) $(recvfrom_MSG_TRUNC_LDADD) $(LIBS)
+
 recvmmsg-timeout$(EXEEXT): $(recvmmsg_timeout_OBJECTS) $(recvmmsg_timeout_DEPENDENCIES) $(EXTRA_recvmmsg_timeout_DEPENDENCIES) 
        @rm -f recvmmsg-timeout$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(recvmmsg_timeout_OBJECTS) $(recvmmsg_timeout_LDADD) $(LIBS)
@@ -6993,6 +9423,10 @@ rt_sigqueueinfo$(EXEEXT): $(rt_sigqueueinfo_OBJECTS) $(rt_sigqueueinfo_DEPENDENC
        @rm -f rt_sigqueueinfo$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(rt_sigqueueinfo_OBJECTS) $(rt_sigqueueinfo_LDADD) $(LIBS)
 
+rt_sigqueueinfo--pidns-translation$(EXEEXT): $(rt_sigqueueinfo__pidns_translation_OBJECTS) $(rt_sigqueueinfo__pidns_translation_DEPENDENCIES) $(EXTRA_rt_sigqueueinfo__pidns_translation_DEPENDENCIES) 
+       @rm -f rt_sigqueueinfo--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(rt_sigqueueinfo__pidns_translation_OBJECTS) $(rt_sigqueueinfo__pidns_translation_LDADD) $(LIBS)
+
 rt_sigreturn$(EXEEXT): $(rt_sigreturn_OBJECTS) $(rt_sigreturn_DEPENDENCIES) $(EXTRA_rt_sigreturn_DEPENDENCIES) 
        @rm -f rt_sigreturn$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(rt_sigreturn_OBJECTS) $(rt_sigreturn_LDADD) $(LIBS)
@@ -7009,6 +9443,10 @@ rt_tgsigqueueinfo$(EXEEXT): $(rt_tgsigqueueinfo_OBJECTS) $(rt_tgsigqueueinfo_DEP
        @rm -f rt_tgsigqueueinfo$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(rt_tgsigqueueinfo_OBJECTS) $(rt_tgsigqueueinfo_LDADD) $(LIBS)
 
+rt_tgsigqueueinfo--pidns-translation$(EXEEXT): $(rt_tgsigqueueinfo__pidns_translation_OBJECTS) $(rt_tgsigqueueinfo__pidns_translation_DEPENDENCIES) $(EXTRA_rt_tgsigqueueinfo__pidns_translation_DEPENDENCIES) 
+       @rm -f rt_tgsigqueueinfo--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(rt_tgsigqueueinfo__pidns_translation_OBJECTS) $(rt_tgsigqueueinfo__pidns_translation_LDADD) $(LIBS)
+
 run_expect_termsig$(EXEEXT): $(run_expect_termsig_OBJECTS) $(run_expect_termsig_DEPENDENCIES) $(EXTRA_run_expect_termsig_DEPENDENCIES) 
        @rm -f run_expect_termsig$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(run_expect_termsig_OBJECTS) $(run_expect_termsig_LDADD) $(LIBS)
@@ -7049,18 +9487,34 @@ sched_xetaffinity$(EXEEXT): $(sched_xetaffinity_OBJECTS) $(sched_xetaffinity_DEP
        @rm -f sched_xetaffinity$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(sched_xetaffinity_OBJECTS) $(sched_xetaffinity_LDADD) $(LIBS)
 
+sched_xetaffinity--pidns-translation$(EXEEXT): $(sched_xetaffinity__pidns_translation_OBJECTS) $(sched_xetaffinity__pidns_translation_DEPENDENCIES) $(EXTRA_sched_xetaffinity__pidns_translation_DEPENDENCIES) 
+       @rm -f sched_xetaffinity--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(sched_xetaffinity__pidns_translation_OBJECTS) $(sched_xetaffinity__pidns_translation_LDADD) $(LIBS)
+
 sched_xetattr$(EXEEXT): $(sched_xetattr_OBJECTS) $(sched_xetattr_DEPENDENCIES) $(EXTRA_sched_xetattr_DEPENDENCIES) 
        @rm -f sched_xetattr$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(sched_xetattr_OBJECTS) $(sched_xetattr_LDADD) $(LIBS)
 
+sched_xetattr--pidns-translation$(EXEEXT): $(sched_xetattr__pidns_translation_OBJECTS) $(sched_xetattr__pidns_translation_DEPENDENCIES) $(EXTRA_sched_xetattr__pidns_translation_DEPENDENCIES) 
+       @rm -f sched_xetattr--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(sched_xetattr__pidns_translation_OBJECTS) $(sched_xetattr__pidns_translation_LDADD) $(LIBS)
+
 sched_xetparam$(EXEEXT): $(sched_xetparam_OBJECTS) $(sched_xetparam_DEPENDENCIES) $(EXTRA_sched_xetparam_DEPENDENCIES) 
        @rm -f sched_xetparam$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(sched_xetparam_OBJECTS) $(sched_xetparam_LDADD) $(LIBS)
 
+sched_xetparam--pidns-translation$(EXEEXT): $(sched_xetparam__pidns_translation_OBJECTS) $(sched_xetparam__pidns_translation_DEPENDENCIES) $(EXTRA_sched_xetparam__pidns_translation_DEPENDENCIES) 
+       @rm -f sched_xetparam--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(sched_xetparam__pidns_translation_OBJECTS) $(sched_xetparam__pidns_translation_LDADD) $(LIBS)
+
 sched_xetscheduler$(EXEEXT): $(sched_xetscheduler_OBJECTS) $(sched_xetscheduler_DEPENDENCIES) $(EXTRA_sched_xetscheduler_DEPENDENCIES) 
        @rm -f sched_xetscheduler$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(sched_xetscheduler_OBJECTS) $(sched_xetscheduler_LDADD) $(LIBS)
 
+sched_xetscheduler--pidns-translation$(EXEEXT): $(sched_xetscheduler__pidns_translation_OBJECTS) $(sched_xetscheduler__pidns_translation_DEPENDENCIES) $(EXTRA_sched_xetscheduler__pidns_translation_DEPENDENCIES) 
+       @rm -f sched_xetscheduler--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(sched_xetscheduler__pidns_translation_OBJECTS) $(sched_xetscheduler__pidns_translation_LDADD) $(LIBS)
+
 sched_yield$(EXEEXT): $(sched_yield_OBJECTS) $(sched_yield_DEPENDENCIES) $(EXTRA_sched_yield_DEPENDENCIES) 
        @rm -f sched_yield$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(sched_yield_OBJECTS) $(sched_yield_LDADD) $(LIBS)
@@ -7097,6 +9551,14 @@ semop$(EXEEXT): $(semop_OBJECTS) $(semop_DEPENDENCIES) $(EXTRA_semop_DEPENDENCIE
        @rm -f semop$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(semop_OBJECTS) $(semop_LDADD) $(LIBS)
 
+semop-indirect$(EXEEXT): $(semop_indirect_OBJECTS) $(semop_indirect_DEPENDENCIES) $(EXTRA_semop_indirect_DEPENDENCIES) 
+       @rm -f semop-indirect$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(semop_indirect_OBJECTS) $(semop_indirect_LDADD) $(LIBS)
+
+semtimedop$(EXEEXT): $(semtimedop_OBJECTS) $(semtimedop_DEPENDENCIES) $(EXTRA_semtimedop_DEPENDENCIES) 
+       @rm -f semtimedop$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(semtimedop_OBJECTS) $(semtimedop_LDADD) $(LIBS)
+
 sendfile$(EXEEXT): $(sendfile_OBJECTS) $(sendfile_DEPENDENCIES) $(EXTRA_sendfile_DEPENDENCIES) 
        @rm -f sendfile$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(sendfile_OBJECTS) $(sendfile_LDADD) $(LIBS)
@@ -7109,6 +9571,18 @@ set_mempolicy$(EXEEXT): $(set_mempolicy_OBJECTS) $(set_mempolicy_DEPENDENCIES) $
        @rm -f set_mempolicy$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(set_mempolicy_OBJECTS) $(set_mempolicy_LDADD) $(LIBS)
 
+set_mempolicy-Xabbrev$(EXEEXT): $(set_mempolicy_Xabbrev_OBJECTS) $(set_mempolicy_Xabbrev_DEPENDENCIES) $(EXTRA_set_mempolicy_Xabbrev_DEPENDENCIES) 
+       @rm -f set_mempolicy-Xabbrev$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(set_mempolicy_Xabbrev_OBJECTS) $(set_mempolicy_Xabbrev_LDADD) $(LIBS)
+
+set_mempolicy-Xraw$(EXEEXT): $(set_mempolicy_Xraw_OBJECTS) $(set_mempolicy_Xraw_DEPENDENCIES) $(EXTRA_set_mempolicy_Xraw_DEPENDENCIES) 
+       @rm -f set_mempolicy-Xraw$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(set_mempolicy_Xraw_OBJECTS) $(set_mempolicy_Xraw_LDADD) $(LIBS)
+
+set_mempolicy-Xverbose$(EXEEXT): $(set_mempolicy_Xverbose_OBJECTS) $(set_mempolicy_Xverbose_DEPENDENCIES) $(EXTRA_set_mempolicy_Xverbose_DEPENDENCIES) 
+       @rm -f set_mempolicy-Xverbose$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(set_mempolicy_Xverbose_OBJECTS) $(set_mempolicy_Xverbose_LDADD) $(LIBS)
+
 set_ptracer_any$(EXEEXT): $(set_ptracer_any_OBJECTS) $(set_ptracer_any_DEPENDENCIES) $(EXTRA_set_ptracer_any_DEPENDENCIES) 
        @rm -f set_ptracer_any$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(set_ptracer_any_OBJECTS) $(set_ptracer_any_LDADD) $(LIBS)
@@ -7165,6 +9639,10 @@ setns$(EXEEXT): $(setns_OBJECTS) $(setns_DEPENDENCIES) $(EXTRA_setns_DEPENDENCIE
        @rm -f setns$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(setns_OBJECTS) $(setns_LDADD) $(LIBS)
 
+setpgrp-exec$(EXEEXT): $(setpgrp_exec_OBJECTS) $(setpgrp_exec_DEPENDENCIES) $(EXTRA_setpgrp_exec_DEPENDENCIES) 
+       @rm -f setpgrp-exec$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(setpgrp_exec_OBJECTS) $(setpgrp_exec_LDADD) $(LIBS)
+
 setregid$(EXEEXT): $(setregid_OBJECTS) $(setregid_DEPENDENCIES) $(EXTRA_setregid_DEPENDENCIES) 
        @rm -f setregid$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(setregid_OBJECTS) $(setregid_LDADD) $(LIBS)
@@ -7249,6 +9727,10 @@ signal_receive$(EXEEXT): $(signal_receive_OBJECTS) $(signal_receive_DEPENDENCIES
        @rm -f signal_receive$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(signal_receive_OBJECTS) $(signal_receive_LDADD) $(LIBS)
 
+signal_receive--pidns-translation$(EXEEXT): $(signal_receive__pidns_translation_OBJECTS) $(signal_receive__pidns_translation_DEPENDENCIES) $(EXTRA_signal_receive__pidns_translation_DEPENDENCIES) 
+       @rm -f signal_receive--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(signal_receive__pidns_translation_OBJECTS) $(signal_receive__pidns_translation_LDADD) $(LIBS)
+
 signalfd4$(EXEEXT): $(signalfd4_OBJECTS) $(signalfd4_DEPENDENCIES) $(EXTRA_signalfd4_DEPENDENCIES) 
        @rm -f signalfd4$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(signalfd4_OBJECTS) $(signalfd4_LDADD) $(LIBS)
@@ -7285,6 +9767,10 @@ so_peercred$(EXEEXT): $(so_peercred_OBJECTS) $(so_peercred_DEPENDENCIES) $(EXTRA
        @rm -f so_peercred$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(so_peercred_OBJECTS) $(so_peercred_LDADD) $(LIBS)
 
+so_peercred--pidns-translation$(EXEEXT): $(so_peercred__pidns_translation_OBJECTS) $(so_peercred__pidns_translation_DEPENDENCIES) $(EXTRA_so_peercred__pidns_translation_DEPENDENCIES) 
+       @rm -f so_peercred--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(so_peercred__pidns_translation_OBJECTS) $(so_peercred__pidns_translation_LDADD) $(LIBS)
+
 so_peercred-Xabbrev$(EXEEXT): $(so_peercred_Xabbrev_OBJECTS) $(so_peercred_Xabbrev_DEPENDENCIES) $(EXTRA_so_peercred_Xabbrev_DEPENDENCIES) 
        @rm -f so_peercred-Xabbrev$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(so_peercred_Xabbrev_OBJECTS) $(so_peercred_Xabbrev_LDADD) $(LIBS)
@@ -7345,6 +9831,10 @@ stack-fcall$(EXEEXT): $(stack_fcall_OBJECTS) $(stack_fcall_DEPENDENCIES) $(EXTRA
        @rm -f stack-fcall$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(stack_fcall_OBJECTS) $(stack_fcall_LDADD) $(LIBS)
 
+stack-fcall-attach$(EXEEXT): $(stack_fcall_attach_OBJECTS) $(stack_fcall_attach_DEPENDENCIES) $(EXTRA_stack_fcall_attach_DEPENDENCIES) 
+       @rm -f stack-fcall-attach$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(stack_fcall_attach_OBJECTS) $(stack_fcall_attach_LDADD) $(LIBS)
+
 stack-fcall-mangled$(EXEEXT): $(stack_fcall_mangled_OBJECTS) $(stack_fcall_mangled_DEPENDENCIES) $(EXTRA_stack_fcall_mangled_DEPENDENCIES) 
        @rm -f stack-fcall-mangled$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(stack_fcall_mangled_OBJECTS) $(stack_fcall_mangled_LDADD) $(LIBS)
@@ -7365,10 +9855,82 @@ statfs64$(EXEEXT): $(statfs64_OBJECTS) $(statfs64_DEPENDENCIES) $(EXTRA_statfs64
        @rm -f statfs64$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(statfs64_OBJECTS) $(statfs64_LDADD) $(LIBS)
 
+status-all$(EXEEXT): $(status_all_OBJECTS) $(status_all_DEPENDENCIES) $(EXTRA_status_all_DEPENDENCIES) 
+       @rm -f status-all$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(status_all_OBJECTS) $(status_all_LDADD) $(LIBS)
+
+status-failed$(EXEEXT): $(status_failed_OBJECTS) $(status_failed_DEPENDENCIES) $(EXTRA_status_failed_DEPENDENCIES) 
+       @rm -f status-failed$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(status_failed_OBJECTS) $(status_failed_LDADD) $(LIBS)
+
+status-failed-long$(EXEEXT): $(status_failed_long_OBJECTS) $(status_failed_long_DEPENDENCIES) $(EXTRA_status_failed_long_DEPENDENCIES) 
+       @rm -f status-failed-long$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(status_failed_long_OBJECTS) $(status_failed_long_LDADD) $(LIBS)
+
+status-failed-status$(EXEEXT): $(status_failed_status_OBJECTS) $(status_failed_status_DEPENDENCIES) $(EXTRA_status_failed_status_DEPENDENCIES) 
+       @rm -f status-failed-status$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(status_failed_status_OBJECTS) $(status_failed_status_LDADD) $(LIBS)
+
+status-none$(EXEEXT): $(status_none_OBJECTS) $(status_none_DEPENDENCIES) $(EXTRA_status_none_DEPENDENCIES) 
+       @rm -f status-none$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(status_none_OBJECTS) $(status_none_LDADD) $(LIBS)
+
+status-none-f$(EXEEXT): $(status_none_f_OBJECTS) $(status_none_f_DEPENDENCIES) $(EXTRA_status_none_f_DEPENDENCIES) 
+       @rm -f status-none-f$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(status_none_f_OBJECTS) $(status_none_f_LDADD) $(LIBS)
+
+status-none-threads$(EXEEXT): $(status_none_threads_OBJECTS) $(status_none_threads_DEPENDENCIES) $(EXTRA_status_none_threads_DEPENDENCIES) 
+       @rm -f status-none-threads$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(status_none_threads_OBJECTS) $(status_none_threads_LDADD) $(LIBS)
+
+status-successful$(EXEEXT): $(status_successful_OBJECTS) $(status_successful_DEPENDENCIES) $(EXTRA_status_successful_DEPENDENCIES) 
+       @rm -f status-successful$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(status_successful_OBJECTS) $(status_successful_LDADD) $(LIBS)
+
+status-successful-long$(EXEEXT): $(status_successful_long_OBJECTS) $(status_successful_long_DEPENDENCIES) $(EXTRA_status_successful_long_DEPENDENCIES) 
+       @rm -f status-successful-long$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(status_successful_long_OBJECTS) $(status_successful_long_LDADD) $(LIBS)
+
+status-successful-status$(EXEEXT): $(status_successful_status_OBJECTS) $(status_successful_status_DEPENDENCIES) $(EXTRA_status_successful_status_DEPENDENCIES) 
+       @rm -f status-successful-status$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(status_successful_status_OBJECTS) $(status_successful_status_LDADD) $(LIBS)
+
+status-unfinished$(EXEEXT): $(status_unfinished_OBJECTS) $(status_unfinished_DEPENDENCIES) $(EXTRA_status_unfinished_DEPENDENCIES) 
+       @rm -f status-unfinished$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(status_unfinished_OBJECTS) $(status_unfinished_LDADD) $(LIBS)
+
+status-unfinished-threads$(EXEEXT): $(status_unfinished_threads_OBJECTS) $(status_unfinished_threads_DEPENDENCIES) $(EXTRA_status_unfinished_threads_DEPENDENCIES) 
+       @rm -f status-unfinished-threads$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(status_unfinished_threads_OBJECTS) $(status_unfinished_threads_LDADD) $(LIBS)
+
 statx$(EXEEXT): $(statx_OBJECTS) $(statx_DEPENDENCIES) $(EXTRA_statx_DEPENDENCIES) 
        @rm -f statx$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(statx_OBJECTS) $(statx_LDADD) $(LIBS)
 
+strace--strings-in-hex$(EXEEXT): $(strace__strings_in_hex_OBJECTS) $(strace__strings_in_hex_DEPENDENCIES) $(EXTRA_strace__strings_in_hex_DEPENDENCIES) 
+       @rm -f strace--strings-in-hex$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(strace__strings_in_hex_OBJECTS) $(strace__strings_in_hex_LDADD) $(LIBS)
+
+strace--strings-in-hex-all$(EXEEXT): $(strace__strings_in_hex_all_OBJECTS) $(strace__strings_in_hex_all_DEPENDENCIES) $(EXTRA_strace__strings_in_hex_all_DEPENDENCIES) 
+       @rm -f strace--strings-in-hex-all$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(strace__strings_in_hex_all_OBJECTS) $(strace__strings_in_hex_all_LDADD) $(LIBS)
+
+strace--strings-in-hex-non-ascii$(EXEEXT): $(strace__strings_in_hex_non_ascii_OBJECTS) $(strace__strings_in_hex_non_ascii_DEPENDENCIES) $(EXTRA_strace__strings_in_hex_non_ascii_DEPENDENCIES) 
+       @rm -f strace--strings-in-hex-non-ascii$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(strace__strings_in_hex_non_ascii_OBJECTS) $(strace__strings_in_hex_non_ascii_LDADD) $(LIBS)
+
+strace-n$(EXEEXT): $(strace_n_OBJECTS) $(strace_n_DEPENDENCIES) $(EXTRA_strace_n_DEPENDENCIES) 
+       @rm -f strace-n$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(strace_n_OBJECTS) $(strace_n_LDADD) $(LIBS)
+
+strace-x$(EXEEXT): $(strace_x_OBJECTS) $(strace_x_DEPENDENCIES) $(EXTRA_strace_x_DEPENDENCIES) 
+       @rm -f strace-x$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(strace_x_OBJECTS) $(strace_x_LDADD) $(LIBS)
+
+strace-xx$(EXEEXT): $(strace_xx_OBJECTS) $(strace_xx_DEPENDENCIES) $(EXTRA_strace_xx_DEPENDENCIES) 
+       @rm -f strace-xx$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(strace_xx_OBJECTS) $(strace_xx_LDADD) $(LIBS)
+
 swap$(EXEEXT): $(swap_OBJECTS) $(swap_DEPENDENCIES) $(EXTRA_swap_DEPENDENCIES) 
        @rm -f swap$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(swap_OBJECTS) $(swap_LDADD) $(LIBS)
@@ -7405,14 +9967,42 @@ syslog$(EXEEXT): $(syslog_OBJECTS) $(syslog_DEPENDENCIES) $(EXTRA_syslog_DEPENDE
        @rm -f syslog$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(syslog_OBJECTS) $(syslog_LDADD) $(LIBS)
 
+syslog-success$(EXEEXT): $(syslog_success_OBJECTS) $(syslog_success_DEPENDENCIES) $(EXTRA_syslog_success_DEPENDENCIES) 
+       @rm -f syslog-success$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(syslog_success_OBJECTS) $(syslog_success_LDADD) $(LIBS)
+
 tee$(EXEEXT): $(tee_OBJECTS) $(tee_DEPENDENCIES) $(EXTRA_tee_DEPENDENCIES) 
        @rm -f tee$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(tee_OBJECTS) $(tee_LDADD) $(LIBS)
 
+tgkill$(EXEEXT): $(tgkill_OBJECTS) $(tgkill_DEPENDENCIES) $(EXTRA_tgkill_DEPENDENCIES) 
+       @rm -f tgkill$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(tgkill_OBJECTS) $(tgkill_LDADD) $(LIBS)
+
+tgkill--pidns-translation$(EXEEXT): $(tgkill__pidns_translation_OBJECTS) $(tgkill__pidns_translation_DEPENDENCIES) $(EXTRA_tgkill__pidns_translation_DEPENDENCIES) 
+       @rm -f tgkill--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(tgkill__pidns_translation_OBJECTS) $(tgkill__pidns_translation_LDADD) $(LIBS)
+
 threads-execve$(EXEEXT): $(threads_execve_OBJECTS) $(threads_execve_DEPENDENCIES) $(EXTRA_threads_execve_DEPENDENCIES) 
        @rm -f threads-execve$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(threads_execve_OBJECTS) $(threads_execve_LDADD) $(LIBS)
 
+threads-execve--quiet-thread-execve$(EXEEXT): $(threads_execve__quiet_thread_execve_OBJECTS) $(threads_execve__quiet_thread_execve_DEPENDENCIES) $(EXTRA_threads_execve__quiet_thread_execve_DEPENDENCIES) 
+       @rm -f threads-execve--quiet-thread-execve$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(threads_execve__quiet_thread_execve_OBJECTS) $(threads_execve__quiet_thread_execve_LDADD) $(LIBS)
+
+threads-execve-q$(EXEEXT): $(threads_execve_q_OBJECTS) $(threads_execve_q_DEPENDENCIES) $(EXTRA_threads_execve_q_DEPENDENCIES) 
+       @rm -f threads-execve-q$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(threads_execve_q_OBJECTS) $(threads_execve_q_LDADD) $(LIBS)
+
+threads-execve-qq$(EXEEXT): $(threads_execve_qq_OBJECTS) $(threads_execve_qq_DEPENDENCIES) $(EXTRA_threads_execve_qq_DEPENDENCIES) 
+       @rm -f threads-execve-qq$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(threads_execve_qq_OBJECTS) $(threads_execve_qq_LDADD) $(LIBS)
+
+threads-execve-qqq$(EXEEXT): $(threads_execve_qqq_OBJECTS) $(threads_execve_qqq_DEPENDENCIES) $(EXTRA_threads_execve_qqq_DEPENDENCIES) 
+       @rm -f threads-execve-qqq$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(threads_execve_qqq_OBJECTS) $(threads_execve_qqq_LDADD) $(LIBS)
+
 time$(EXEEXT): $(time_OBJECTS) $(time_DEPENDENCIES) $(EXTRA_time_DEPENDENCIES) 
        @rm -f time$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(time_OBJECTS) $(time_LDADD) $(LIBS)
@@ -7437,6 +10027,22 @@ times-fail$(EXEEXT): $(times_fail_OBJECTS) $(times_fail_DEPENDENCIES) $(EXTRA_ti
        @rm -f times-fail$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(times_fail_OBJECTS) $(times_fail_LDADD) $(LIBS)
 
+tkill$(EXEEXT): $(tkill_OBJECTS) $(tkill_DEPENDENCIES) $(EXTRA_tkill_DEPENDENCIES) 
+       @rm -f tkill$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(tkill_OBJECTS) $(tkill_LDADD) $(LIBS)
+
+tkill--pidns-translation$(EXEEXT): $(tkill__pidns_translation_OBJECTS) $(tkill__pidns_translation_DEPENDENCIES) $(EXTRA_tkill__pidns_translation_DEPENDENCIES) 
+       @rm -f tkill--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(tkill__pidns_translation_OBJECTS) $(tkill__pidns_translation_LDADD) $(LIBS)
+
+tracer_ppid_pgid_sid$(EXEEXT): $(tracer_ppid_pgid_sid_OBJECTS) $(tracer_ppid_pgid_sid_DEPENDENCIES) $(EXTRA_tracer_ppid_pgid_sid_DEPENDENCIES) 
+       @rm -f tracer_ppid_pgid_sid$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(tracer_ppid_pgid_sid_OBJECTS) $(tracer_ppid_pgid_sid_LDADD) $(LIBS)
+
+trie_test$(EXEEXT): $(trie_test_OBJECTS) $(trie_test_DEPENDENCIES) $(EXTRA_trie_test_DEPENDENCIES) 
+       @rm -f trie_test$(EXEEXT)
+       $(AM_V_CCLD)$(trie_test_LINK) $(trie_test_OBJECTS) $(trie_test_LDADD) $(LIBS)
+
 truncate$(EXEEXT): $(truncate_OBJECTS) $(truncate_DEPENDENCIES) $(EXTRA_truncate_DEPENDENCIES) 
        @rm -f truncate$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(truncate_OBJECTS) $(truncate_LDADD) $(LIBS)
@@ -7485,6 +10091,14 @@ umovestr3$(EXEEXT): $(umovestr3_OBJECTS) $(umovestr3_DEPENDENCIES) $(EXTRA_umove
        @rm -f umovestr3$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(umovestr3_OBJECTS) $(umovestr3_LDADD) $(LIBS)
 
+umovestr_cached$(EXEEXT): $(umovestr_cached_OBJECTS) $(umovestr_cached_DEPENDENCIES) $(EXTRA_umovestr_cached_DEPENDENCIES) 
+       @rm -f umovestr_cached$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(umovestr_cached_OBJECTS) $(umovestr_cached_LDADD) $(LIBS)
+
+umovestr_cached_adjacent$(EXEEXT): $(umovestr_cached_adjacent_OBJECTS) $(umovestr_cached_adjacent_DEPENDENCIES) $(EXTRA_umovestr_cached_adjacent_DEPENDENCIES) 
+       @rm -f umovestr_cached_adjacent$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(umovestr_cached_adjacent_OBJECTS) $(umovestr_cached_adjacent_LDADD) $(LIBS)
+
 uname$(EXEEXT): $(uname_OBJECTS) $(uname_DEPENDENCIES) $(EXTRA_uname_DEPENDENCIES) 
        @rm -f uname$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(uname_OBJECTS) $(uname_LDADD) $(LIBS)
@@ -7589,6 +10203,10 @@ xet_robust_list$(EXEEXT): $(xet_robust_list_OBJECTS) $(xet_robust_list_DEPENDENC
        @rm -f xet_robust_list$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(xet_robust_list_OBJECTS) $(xet_robust_list_LDADD) $(LIBS)
 
+xet_robust_list--pidns-translation$(EXEEXT): $(xet_robust_list__pidns_translation_OBJECTS) $(xet_robust_list__pidns_translation_DEPENDENCIES) $(EXTRA_xet_robust_list__pidns_translation_DEPENDENCIES) 
+       @rm -f xet_robust_list--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(xet_robust_list__pidns_translation_OBJECTS) $(xet_robust_list__pidns_translation_LDADD) $(LIBS)
+
 xet_thread_area_x86$(EXEEXT): $(xet_thread_area_x86_OBJECTS) $(xet_thread_area_x86_DEPENDENCIES) $(EXTRA_xet_thread_area_x86_DEPENDENCIES) 
        @rm -f xet_thread_area_x86$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(xet_thread_area_x86_OBJECTS) $(xet_thread_area_x86_LDADD) $(LIBS)
@@ -7601,10 +10219,18 @@ xetpgid$(EXEEXT): $(xetpgid_OBJECTS) $(xetpgid_DEPENDENCIES) $(EXTRA_xetpgid_DEP
        @rm -f xetpgid$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(xetpgid_OBJECTS) $(xetpgid_LDADD) $(LIBS)
 
+xetpgid--pidns-translation$(EXEEXT): $(xetpgid__pidns_translation_OBJECTS) $(xetpgid__pidns_translation_DEPENDENCIES) $(EXTRA_xetpgid__pidns_translation_DEPENDENCIES) 
+       @rm -f xetpgid--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(xetpgid__pidns_translation_OBJECTS) $(xetpgid__pidns_translation_LDADD) $(LIBS)
+
 xetpriority$(EXEEXT): $(xetpriority_OBJECTS) $(xetpriority_DEPENDENCIES) $(EXTRA_xetpriority_DEPENDENCIES) 
        @rm -f xetpriority$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(xetpriority_OBJECTS) $(xetpriority_LDADD) $(LIBS)
 
+xetpriority--pidns-translation$(EXEEXT): $(xetpriority__pidns_translation_OBJECTS) $(xetpriority__pidns_translation_DEPENDENCIES) $(EXTRA_xetpriority__pidns_translation_DEPENDENCIES) 
+       @rm -f xetpriority--pidns-translation$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(xetpriority__pidns_translation_OBJECTS) $(xetpriority__pidns_translation_LDADD) $(LIBS)
+
 xettimeofday$(EXEEXT): $(xettimeofday_OBJECTS) $(xettimeofday_DEPENDENCIES) $(EXTRA_xettimeofday_DEPENDENCIES) 
        @rm -f xettimeofday$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(xettimeofday_OBJECTS) $(xettimeofday_LDADD) $(LIBS)
@@ -7636,10 +10262,12 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/attach-p-cmd-cmd.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/attach-p-cmd-p.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/block_reset_raise_run.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/block_reset_run.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bpf-obj_get_info_by_fd-prog-v.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bpf-obj_get_info_by_fd-prog.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bpf-obj_get_info_by_fd-v.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bpf-obj_get_info_by_fd.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bpf-success-long-y.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bpf-success-v.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bpf-success.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bpf-v.Po@am__quote@ # am--include-marker
@@ -7657,16 +10285,48 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clock_adjtime.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clock_nanosleep.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clock_xettime.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone-flags.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone3-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone3-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone3-Xverbose.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone3-success-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone3-success-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone3-success-Xverbose.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone3-success.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone3.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone_parent--quiet-exit.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone_parent-q.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone_parent-qq.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone_parent.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone_ptrace--quiet-attach.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone_ptrace--quiet-exit.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone_ptrace-q.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone_ptrace-qq.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clone_ptrace.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/close_range-P.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/close_range-y.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/close_range-yy.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/close_range.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/copy_file_range.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/count-f.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/creat.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/delay.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/delete_module.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dev--decode-fds-dev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dev--decode-fds-path.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dev--decode-fds-socket.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dev-yy.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup-P.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup-y.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup-yy.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup2-P.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup2-y.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup2-yy.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup2.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup3-P.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup3-y.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup3-yy.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup3.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/epoll_create.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/epoll_create1.Po@am__quote@ # am--include-marker
@@ -7679,7 +10339,14 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat-v.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-P.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-y.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-yy.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat2-P.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat2-y.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat2-yy.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat2.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fadvise64.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fadvise64_64.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fallocate.Po@am__quote@ # am--include-marker
@@ -7694,16 +10361,27 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchown.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchown32.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchownat.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl64--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl64.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fdatasync.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fflush.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_handle.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_ioctl.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filter-unavailable.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filter_seccomp-flag.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filter_seccomp-perf.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/finit_module.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/flock.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fork--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fork-f.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fsconfig-P.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fsconfig.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fsmount.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fsopen.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fspick-P.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fspick.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstat-Xabbrev.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstat-Xraw.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstat-Xverbose.Po@am__quote@ # am--include-marker
@@ -7722,9 +10400,12 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/futex.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/futimesat.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/get_mempolicy.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/get_process_reaper.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getcpu.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getcwd.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getdents-v.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getdents.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getdents64-v.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getdents64.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getegid.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getegid32.Po@am__quote@ # am--include-marker
@@ -7735,7 +10416,9 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getgroups.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getgroups32.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpeername.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpgrp--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpgrp.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpid--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpid.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getppid.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getrandom.Po@am__quote@ # am--include-marker
@@ -7745,30 +10428,66 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getresuid32.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getrlimit.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getrusage.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getsid--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getsid.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getsockname.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gettid--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gettid.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getuid.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getuid32.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getxxid.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getxgid.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getxpid.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getxuid.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/group_req.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inet-cmsg.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/init_module.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inject-nf.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inotify.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inotify_init-y.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inotify_init.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inotify_init1-y.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inotify_init1.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/int_0x80.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/io_uring_enter.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/io_uring_register.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/io_uring_setup.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_block--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_block.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_dm-v.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_dm.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev-Xverbose.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev-success-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev-success-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev-success-Xverbose.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev-success-v-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev-success-v-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev-success-v-Xverbose.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev-success-v.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev-success.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev-v-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev-v-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev-v-Xverbose.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev-v.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_evdev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_hdio-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_hdio-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_hdio-Xverbose.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_hdio-success-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_hdio-success-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_hdio-success-Xverbose.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_hdio-success-v-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_hdio-success-v-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_hdio-success-v-Xverbose.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_hdio-success-v.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_hdio-success.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_hdio-v-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_hdio-v-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_hdio-v-Xverbose.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_hdio-v.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_hdio.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_inotify.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_kvm_run-v.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_kvm_run.Po@am__quote@ # am--include-marker
@@ -7789,10 +10508,28 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_sg_io_v3.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_sg_io_v4.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_sock_gifconf.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_tee.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_uffdio.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_v4l2-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_v4l2-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_v4l2-Xverbose.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_v4l2-success-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_v4l2-success-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_v4l2-success-Xverbose.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_v4l2-success-v-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_v4l2-success-v-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_v4l2-success-v-Xverbose.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_v4l2-success-v.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_v4l2-success.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_v4l2-v-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_v4l2-v-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_v4l2-v-Xverbose.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_v4l2-v.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_v4l2.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_watchdog.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioperm.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iopl.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioprio--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioprio-Xabbrev.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioprio-Xraw.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioprio-Xverbose.Po@am__quote@ # am--include-marker
@@ -7816,6 +10553,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ipc_shm-Xverbose.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ipc_shm.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/is_linux_mips_n64.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kcmp-y--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kcmp-y.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kcmp.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kern_features.Po@am__quote@ # am--include-marker
@@ -7829,12 +10567,14 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keyctl-Xraw.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keyctl-Xverbose.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keyctl.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kill--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kill.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kill_child.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ksysent.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lchown.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lchown32.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-create_nl_socket.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-create_tmpfile.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-errno2name.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-error_msg.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-fill_memory.Po@am__quote@ # am--include-marker
@@ -7846,20 +10586,26 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-inode_of_sockfd.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-libmmsg.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-libsocketcall.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-lock_file.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-overflowuid.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-pidns.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-pipe_maxfd.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-print_quoted_string.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-print_time.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-printflags.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-printxval.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-printxval-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-printxval-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-printxval-Xverbose.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-signal2name.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-skip_unavailable.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-sprintrc.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-status.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-tail_alloc.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-test_printpath.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-test_printstrn.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-test_ucopy.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-tprintf.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-xmalloc_for_tests.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/link.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linkat.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/list_sigaction_signum.Po@am__quote@ # am--include-marker
@@ -7871,12 +10617,18 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lstat.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lstat64-lstat64.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/madvise.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/maybe_switch_current_tcp--quiet-thread-execve.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/maybe_switch_current_tcp.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mbind-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mbind-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mbind-Xverbose.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mbind.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/membarrier.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memfd_create-Xabbrev.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memfd_create-Xraw.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memfd_create-Xverbose.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memfd_create.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/migrate_pages--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/migrate_pages.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mincore.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mkdir.Po@am__quote@ # am--include-marker
@@ -7903,6 +10655,9 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mount-Xraw.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mount-Xverbose.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mount.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/move_mount-P.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/move_mount.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/move_pages--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/move_pages-Xabbrev.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/move_pages-Xraw.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/move_pages-Xverbose.Po@am__quote@ # am--include-marker
@@ -7916,12 +10671,17 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/msg_name.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/munlockall.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nanosleep.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net--decode-fds-dev-netlink.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net--decode-fds-none-netlink.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net--decode-fds-path-netlink.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net--decode-fds-socket-netlink.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-accept-connect.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-icmp_filter.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-packet_mreq-Xabbrev.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-packet_mreq-Xraw.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-packet_mreq-Xverbose.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-packet_mreq.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-sockaddr--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-sockaddr.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-tpacket_req.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-tpacket_stats-success.Po@am__quote@ # am--include-marker
@@ -7931,6 +10691,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-yy-inet6.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-yy-netlink.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-yy-unix.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netlink_audit--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netlink_audit.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netlink_crypto.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netlink_generic.Po@am__quote@ # am--include-marker
@@ -7968,6 +10729,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_ifla_brport.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_ifla_linkinfo.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_ifla_port.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_ifla_xdp-y.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_ifla_xdp.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_inet_diag_msg.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_inet_diag_req_compat.Po@am__quote@ # am--include-marker
@@ -8004,7 +10766,19 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldselect.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldstat.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open_tree-P.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open_tree.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat2-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat2-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat2-Xverbose.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat2-v-y-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat2-v-y-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat2-v-y-Xverbose.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat2-v-y.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat2-v.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat2-y.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat2.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orphaned_process_group.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/osf_utimes.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pause.Po@am__quote@ # am--include-marker
@@ -8016,7 +10790,20 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/personality-Xraw.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/personality-Xverbose.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/personality.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_getfd-y.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_getfd-yy.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_getfd.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_open--decode-fd-path.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_open--decode-fd-pidfd.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_open--decode-fd-socket.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_open--pidns-translation.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_open-P.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_open-y.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_open-yy.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_open.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_send_signal--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_send_signal.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidns-cache.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pipe.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pipe2.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pkey_alloc.Po@am__quote@ # am--include-marker
@@ -8043,6 +10830,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/preadv2-pwritev2.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/preadv_pwritev-preadv-pwritev.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print_maxfd.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print_ppid_tracerpid.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printpath-umovestr-peekdata.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printpath-umovestr-undumpable.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printpath-umovestr.Po@am__quote@ # am--include-marker
@@ -8053,8 +10841,11 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printstrn-umoven-peekdata.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printstrn-umoven-undumpable.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printstrn-umoven.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prlimit64--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prlimit64.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/process_vm_readv--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/process_vm_readv.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/process_vm_writev--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/process_vm_writev.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pselect6.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ptrace.Po@am__quote@ # am--include-marker
@@ -8083,6 +10874,8 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readlinkat.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readv.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reboot.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/recv-MSG_TRUNC.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/recvfrom-MSG_TRUNC.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/recvfrom.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/recvmmsg-timeout.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/recvmsg.Po@am__quote@ # am--include-marker
@@ -8101,10 +10894,12 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigaction.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigpending.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigprocmask.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigqueueinfo--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigqueueinfo.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigreturn.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigsuspend.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigtimedwait.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_tgsigqueueinfo--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_tgsigqueueinfo.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/run_expect_termsig.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390_guarded_storage-v.Po@am__quote@ # am--include-marker
@@ -8115,9 +10910,13 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390_sthyi.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_get_priority_mxx.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_rr_get_interval.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetaffinity--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetaffinity.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetattr--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetattr.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetparam--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetparam.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetscheduler--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetscheduler.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_yield.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scm_rights.Po@am__quote@ # am--include-marker
@@ -8127,9 +10926,14 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seccomp_get_action_avail.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/select-P.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/select.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/semop-indirect.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/semop.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/semtimedop.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendfile.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendfile64.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_mempolicy-Xabbrev.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_mempolicy-Xraw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_mempolicy-Xverbose.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_mempolicy.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_ptracer_any.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_sigblock.Po@am__quote@ # am--include-marker
@@ -8145,6 +10949,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setgroups32.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sethostname.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setns.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setpgrp-exec.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setregid.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setregid32.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setresgid.Po@am__quote@ # am--include-marker
@@ -8165,6 +10970,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sigaltstack.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/siginfo.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signal.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signal_receive--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signal_receive.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signalfd4.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sigpending.Po@am__quote@ # am--include-marker
@@ -8174,6 +10980,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sleep.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/so_error.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/so_linger.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/so_peercred--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/so_peercred-Xabbrev.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/so_peercred-Xraw.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/so_peercred-Xverbose.Po@am__quote@ # am--include-marker
@@ -8193,6 +11000,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-1.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-2.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-3.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-attach.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-mangled-0.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-mangled-1.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-mangled-2.Po@am__quote@ # am--include-marker
@@ -8203,7 +11011,25 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stat64-stat64.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/statfs-statfs.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/statfs64.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/status-all.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/status-failed-long.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/status-failed-status.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/status-failed.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/status-none-f.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/status-none-threads.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/status-none.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/status-successful-long.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/status-successful-status.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/status-successful.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/status-unfinished-threads.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/status-unfinished.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/statx.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace--strings-in-hex-all.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace--strings-in-hex-non-ascii.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace--strings-in-hex.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-n.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-x.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-xx.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/swap.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sxetmask.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/symlink.Po@am__quote@ # am--include-marker
@@ -8212,8 +11038,15 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sync_file_range.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sync_file_range2.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sysinfo.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/syslog-success.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/syslog.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tee.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tgkill--pidns-translation.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tgkill.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threads-execve--quiet-thread-execve.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threads-execve-q.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threads-execve-qq.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threads-execve-qqq.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threads-execve.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/time.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timer_create.Po@am__quote@ # am--include-marker
@@ -8221,6 +11054,11 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timerfd_xettime.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/times-fail.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/times.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tkill--pidns-translation.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tkill.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tracer_ppid_pgid_sid.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/trie_test-trie_for_tests.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/trie_test-trie_test.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/truncate.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/truncate64-truncate64.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ugetrlimit.Po@am__quote@ # am--include-marker
@@ -8233,6 +11071,8 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/umovestr.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/umovestr2.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/umovestr3.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/umovestr_cached.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/umovestr_cached_adjacent.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uname.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unblock_reset_raise.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unix-pair-send-recv.Po@am__quote@ # am--include-marker
@@ -8258,10 +11098,13 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/waitpid.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xattr-strings.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xattr.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xet_robust_list--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xet_robust_list.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xet_thread_area_x86.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xetitimer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xetpgid--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xetpgid.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xetpriority--pidns-translation.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xetpriority.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xettimeofday.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zeroargc.Po@am__quote@ # am--include-marker
@@ -8273,15 +11116,17 @@ $(am__depfiles_remade):
 am--depfiles: $(am__depfiles_remade)
 
 .c.o:
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_TRUE@   $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
 
 .c.obj:
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_TRUE@   $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCC_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
@@ -8300,6 +11145,20 @@ libtests_a-create_nl_socket.obj: create_nl_socket.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-create_nl_socket.obj `if test -f 'create_nl_socket.c'; then $(CYGPATH_W) 'create_nl_socket.c'; else $(CYGPATH_W) '$(srcdir)/create_nl_socket.c'; fi`
 
+libtests_a-create_tmpfile.o: create_tmpfile.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-create_tmpfile.o -MD -MP -MF $(DEPDIR)/libtests_a-create_tmpfile.Tpo -c -o libtests_a-create_tmpfile.o `test -f 'create_tmpfile.c' || echo '$(srcdir)/'`create_tmpfile.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-create_tmpfile.Tpo $(DEPDIR)/libtests_a-create_tmpfile.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='create_tmpfile.c' object='libtests_a-create_tmpfile.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-create_tmpfile.o `test -f 'create_tmpfile.c' || echo '$(srcdir)/'`create_tmpfile.c
+
+libtests_a-create_tmpfile.obj: create_tmpfile.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-create_tmpfile.obj -MD -MP -MF $(DEPDIR)/libtests_a-create_tmpfile.Tpo -c -o libtests_a-create_tmpfile.obj `if test -f 'create_tmpfile.c'; then $(CYGPATH_W) 'create_tmpfile.c'; else $(CYGPATH_W) '$(srcdir)/create_tmpfile.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-create_tmpfile.Tpo $(DEPDIR)/libtests_a-create_tmpfile.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='create_tmpfile.c' object='libtests_a-create_tmpfile.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-create_tmpfile.obj `if test -f 'create_tmpfile.c'; then $(CYGPATH_W) 'create_tmpfile.c'; else $(CYGPATH_W) '$(srcdir)/create_tmpfile.c'; fi`
+
 libtests_a-errno2name.o: errno2name.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-errno2name.o -MD -MP -MF $(DEPDIR)/libtests_a-errno2name.Tpo -c -o libtests_a-errno2name.o `test -f 'errno2name.c' || echo '$(srcdir)/'`errno2name.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-errno2name.Tpo $(DEPDIR)/libtests_a-errno2name.Po
@@ -8454,6 +11313,20 @@ libtests_a-libsocketcall.obj: libsocketcall.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-libsocketcall.obj `if test -f 'libsocketcall.c'; then $(CYGPATH_W) 'libsocketcall.c'; else $(CYGPATH_W) '$(srcdir)/libsocketcall.c'; fi`
 
+libtests_a-lock_file.o: lock_file.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-lock_file.o -MD -MP -MF $(DEPDIR)/libtests_a-lock_file.Tpo -c -o libtests_a-lock_file.o `test -f 'lock_file.c' || echo '$(srcdir)/'`lock_file.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-lock_file.Tpo $(DEPDIR)/libtests_a-lock_file.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lock_file.c' object='libtests_a-lock_file.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-lock_file.o `test -f 'lock_file.c' || echo '$(srcdir)/'`lock_file.c
+
+libtests_a-lock_file.obj: lock_file.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-lock_file.obj -MD -MP -MF $(DEPDIR)/libtests_a-lock_file.Tpo -c -o libtests_a-lock_file.obj `if test -f 'lock_file.c'; then $(CYGPATH_W) 'lock_file.c'; else $(CYGPATH_W) '$(srcdir)/lock_file.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-lock_file.Tpo $(DEPDIR)/libtests_a-lock_file.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lock_file.c' object='libtests_a-lock_file.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-lock_file.obj `if test -f 'lock_file.c'; then $(CYGPATH_W) 'lock_file.c'; else $(CYGPATH_W) '$(srcdir)/lock_file.c'; fi`
+
 libtests_a-overflowuid.o: overflowuid.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-overflowuid.o -MD -MP -MF $(DEPDIR)/libtests_a-overflowuid.Tpo -c -o libtests_a-overflowuid.o `test -f 'overflowuid.c' || echo '$(srcdir)/'`overflowuid.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-overflowuid.Tpo $(DEPDIR)/libtests_a-overflowuid.Po
@@ -8468,6 +11341,20 @@ libtests_a-overflowuid.obj: overflowuid.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-overflowuid.obj `if test -f 'overflowuid.c'; then $(CYGPATH_W) 'overflowuid.c'; else $(CYGPATH_W) '$(srcdir)/overflowuid.c'; fi`
 
+libtests_a-pidns.o: pidns.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-pidns.o -MD -MP -MF $(DEPDIR)/libtests_a-pidns.Tpo -c -o libtests_a-pidns.o `test -f 'pidns.c' || echo '$(srcdir)/'`pidns.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-pidns.Tpo $(DEPDIR)/libtests_a-pidns.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pidns.c' object='libtests_a-pidns.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-pidns.o `test -f 'pidns.c' || echo '$(srcdir)/'`pidns.c
+
+libtests_a-pidns.obj: pidns.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-pidns.obj -MD -MP -MF $(DEPDIR)/libtests_a-pidns.Tpo -c -o libtests_a-pidns.obj `if test -f 'pidns.c'; then $(CYGPATH_W) 'pidns.c'; else $(CYGPATH_W) '$(srcdir)/pidns.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-pidns.Tpo $(DEPDIR)/libtests_a-pidns.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pidns.c' object='libtests_a-pidns.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-pidns.obj `if test -f 'pidns.c'; then $(CYGPATH_W) 'pidns.c'; else $(CYGPATH_W) '$(srcdir)/pidns.c'; fi`
+
 libtests_a-pipe_maxfd.o: pipe_maxfd.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-pipe_maxfd.o -MD -MP -MF $(DEPDIR)/libtests_a-pipe_maxfd.Tpo -c -o libtests_a-pipe_maxfd.o `test -f 'pipe_maxfd.c' || echo '$(srcdir)/'`pipe_maxfd.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-pipe_maxfd.Tpo $(DEPDIR)/libtests_a-pipe_maxfd.Po
@@ -8524,19 +11411,47 @@ libtests_a-printflags.obj: printflags.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-printflags.obj `if test -f 'printflags.c'; then $(CYGPATH_W) 'printflags.c'; else $(CYGPATH_W) '$(srcdir)/printflags.c'; fi`
 
-libtests_a-printxval.o: printxval.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-printxval.o -MD -MP -MF $(DEPDIR)/libtests_a-printxval.Tpo -c -o libtests_a-printxval.o `test -f 'printxval.c' || echo '$(srcdir)/'`printxval.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-printxval.Tpo $(DEPDIR)/libtests_a-printxval.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='printxval.c' object='libtests_a-printxval.o' libtool=no @AMDEPBACKSLASH@
+libtests_a-printxval-Xabbrev.o: printxval-Xabbrev.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-printxval-Xabbrev.o -MD -MP -MF $(DEPDIR)/libtests_a-printxval-Xabbrev.Tpo -c -o libtests_a-printxval-Xabbrev.o `test -f 'printxval-Xabbrev.c' || echo '$(srcdir)/'`printxval-Xabbrev.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-printxval-Xabbrev.Tpo $(DEPDIR)/libtests_a-printxval-Xabbrev.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='printxval-Xabbrev.c' object='libtests_a-printxval-Xabbrev.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-printxval-Xabbrev.o `test -f 'printxval-Xabbrev.c' || echo '$(srcdir)/'`printxval-Xabbrev.c
+
+libtests_a-printxval-Xabbrev.obj: printxval-Xabbrev.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-printxval-Xabbrev.obj -MD -MP -MF $(DEPDIR)/libtests_a-printxval-Xabbrev.Tpo -c -o libtests_a-printxval-Xabbrev.obj `if test -f 'printxval-Xabbrev.c'; then $(CYGPATH_W) 'printxval-Xabbrev.c'; else $(CYGPATH_W) '$(srcdir)/printxval-Xabbrev.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-printxval-Xabbrev.Tpo $(DEPDIR)/libtests_a-printxval-Xabbrev.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='printxval-Xabbrev.c' object='libtests_a-printxval-Xabbrev.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-printxval-Xabbrev.obj `if test -f 'printxval-Xabbrev.c'; then $(CYGPATH_W) 'printxval-Xabbrev.c'; else $(CYGPATH_W) '$(srcdir)/printxval-Xabbrev.c'; fi`
+
+libtests_a-printxval-Xraw.o: printxval-Xraw.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-printxval-Xraw.o -MD -MP -MF $(DEPDIR)/libtests_a-printxval-Xraw.Tpo -c -o libtests_a-printxval-Xraw.o `test -f 'printxval-Xraw.c' || echo '$(srcdir)/'`printxval-Xraw.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-printxval-Xraw.Tpo $(DEPDIR)/libtests_a-printxval-Xraw.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='printxval-Xraw.c' object='libtests_a-printxval-Xraw.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-printxval-Xraw.o `test -f 'printxval-Xraw.c' || echo '$(srcdir)/'`printxval-Xraw.c
+
+libtests_a-printxval-Xraw.obj: printxval-Xraw.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-printxval-Xraw.obj -MD -MP -MF $(DEPDIR)/libtests_a-printxval-Xraw.Tpo -c -o libtests_a-printxval-Xraw.obj `if test -f 'printxval-Xraw.c'; then $(CYGPATH_W) 'printxval-Xraw.c'; else $(CYGPATH_W) '$(srcdir)/printxval-Xraw.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-printxval-Xraw.Tpo $(DEPDIR)/libtests_a-printxval-Xraw.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='printxval-Xraw.c' object='libtests_a-printxval-Xraw.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-printxval-Xraw.obj `if test -f 'printxval-Xraw.c'; then $(CYGPATH_W) 'printxval-Xraw.c'; else $(CYGPATH_W) '$(srcdir)/printxval-Xraw.c'; fi`
+
+libtests_a-printxval-Xverbose.o: printxval-Xverbose.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-printxval-Xverbose.o -MD -MP -MF $(DEPDIR)/libtests_a-printxval-Xverbose.Tpo -c -o libtests_a-printxval-Xverbose.o `test -f 'printxval-Xverbose.c' || echo '$(srcdir)/'`printxval-Xverbose.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-printxval-Xverbose.Tpo $(DEPDIR)/libtests_a-printxval-Xverbose.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='printxval-Xverbose.c' object='libtests_a-printxval-Xverbose.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-printxval.o `test -f 'printxval.c' || echo '$(srcdir)/'`printxval.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-printxval-Xverbose.o `test -f 'printxval-Xverbose.c' || echo '$(srcdir)/'`printxval-Xverbose.c
 
-libtests_a-printxval.obj: printxval.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-printxval.obj -MD -MP -MF $(DEPDIR)/libtests_a-printxval.Tpo -c -o libtests_a-printxval.obj `if test -f 'printxval.c'; then $(CYGPATH_W) 'printxval.c'; else $(CYGPATH_W) '$(srcdir)/printxval.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-printxval.Tpo $(DEPDIR)/libtests_a-printxval.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='printxval.c' object='libtests_a-printxval.obj' libtool=no @AMDEPBACKSLASH@
+libtests_a-printxval-Xverbose.obj: printxval-Xverbose.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-printxval-Xverbose.obj -MD -MP -MF $(DEPDIR)/libtests_a-printxval-Xverbose.Tpo -c -o libtests_a-printxval-Xverbose.obj `if test -f 'printxval-Xverbose.c'; then $(CYGPATH_W) 'printxval-Xverbose.c'; else $(CYGPATH_W) '$(srcdir)/printxval-Xverbose.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-printxval-Xverbose.Tpo $(DEPDIR)/libtests_a-printxval-Xverbose.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='printxval-Xverbose.c' object='libtests_a-printxval-Xverbose.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-printxval.obj `if test -f 'printxval.c'; then $(CYGPATH_W) 'printxval.c'; else $(CYGPATH_W) '$(srcdir)/printxval.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-printxval-Xverbose.obj `if test -f 'printxval-Xverbose.c'; then $(CYGPATH_W) 'printxval-Xverbose.c'; else $(CYGPATH_W) '$(srcdir)/printxval-Xverbose.c'; fi`
 
 libtests_a-signal2name.o: signal2name.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-signal2name.o -MD -MP -MF $(DEPDIR)/libtests_a-signal2name.Tpo -c -o libtests_a-signal2name.o `test -f 'signal2name.c' || echo '$(srcdir)/'`signal2name.c
@@ -8580,6 +11495,20 @@ libtests_a-sprintrc.obj: sprintrc.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-sprintrc.obj `if test -f 'sprintrc.c'; then $(CYGPATH_W) 'sprintrc.c'; else $(CYGPATH_W) '$(srcdir)/sprintrc.c'; fi`
 
+libtests_a-status.o: status.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-status.o -MD -MP -MF $(DEPDIR)/libtests_a-status.Tpo -c -o libtests_a-status.o `test -f 'status.c' || echo '$(srcdir)/'`status.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-status.Tpo $(DEPDIR)/libtests_a-status.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='status.c' object='libtests_a-status.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-status.o `test -f 'status.c' || echo '$(srcdir)/'`status.c
+
+libtests_a-status.obj: status.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-status.obj -MD -MP -MF $(DEPDIR)/libtests_a-status.Tpo -c -o libtests_a-status.obj `if test -f 'status.c'; then $(CYGPATH_W) 'status.c'; else $(CYGPATH_W) '$(srcdir)/status.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-status.Tpo $(DEPDIR)/libtests_a-status.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='status.c' object='libtests_a-status.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-status.obj `if test -f 'status.c'; then $(CYGPATH_W) 'status.c'; else $(CYGPATH_W) '$(srcdir)/status.c'; fi`
+
 libtests_a-tail_alloc.o: tail_alloc.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-tail_alloc.o -MD -MP -MF $(DEPDIR)/libtests_a-tail_alloc.Tpo -c -o libtests_a-tail_alloc.o `test -f 'tail_alloc.c' || echo '$(srcdir)/'`tail_alloc.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-tail_alloc.Tpo $(DEPDIR)/libtests_a-tail_alloc.Po
@@ -8650,6 +11579,20 @@ libtests_a-tprintf.obj: tprintf.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-tprintf.obj `if test -f 'tprintf.c'; then $(CYGPATH_W) 'tprintf.c'; else $(CYGPATH_W) '$(srcdir)/tprintf.c'; fi`
 
+libtests_a-xmalloc_for_tests.o: xmalloc_for_tests.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-xmalloc_for_tests.o -MD -MP -MF $(DEPDIR)/libtests_a-xmalloc_for_tests.Tpo -c -o libtests_a-xmalloc_for_tests.o `test -f 'xmalloc_for_tests.c' || echo '$(srcdir)/'`xmalloc_for_tests.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-xmalloc_for_tests.Tpo $(DEPDIR)/libtests_a-xmalloc_for_tests.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='xmalloc_for_tests.c' object='libtests_a-xmalloc_for_tests.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-xmalloc_for_tests.o `test -f 'xmalloc_for_tests.c' || echo '$(srcdir)/'`xmalloc_for_tests.c
+
+libtests_a-xmalloc_for_tests.obj: xmalloc_for_tests.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-xmalloc_for_tests.obj -MD -MP -MF $(DEPDIR)/libtests_a-xmalloc_for_tests.Tpo -c -o libtests_a-xmalloc_for_tests.obj `if test -f 'xmalloc_for_tests.c'; then $(CYGPATH_W) 'xmalloc_for_tests.c'; else $(CYGPATH_W) '$(srcdir)/xmalloc_for_tests.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-xmalloc_for_tests.Tpo $(DEPDIR)/libtests_a-xmalloc_for_tests.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='xmalloc_for_tests.c' object='libtests_a-xmalloc_for_tests.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-xmalloc_for_tests.obj `if test -f 'xmalloc_for_tests.c'; then $(CYGPATH_W) 'xmalloc_for_tests.c'; else $(CYGPATH_W) '$(srcdir)/xmalloc_for_tests.c'; fi`
+
 fstat64-fstat64.o: fstat64.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fstat64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fstat64-fstat64.o -MD -MP -MF $(DEPDIR)/fstat64-fstat64.Tpo -c -o fstat64-fstat64.o `test -f 'fstat64.c' || echo '$(srcdir)/'`fstat64.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/fstat64-fstat64.Tpo $(DEPDIR)/fstat64-fstat64.Po
@@ -8860,6 +11803,34 @@ statfs-statfs.obj: statfs.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(statfs_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o statfs-statfs.obj `if test -f 'statfs.c'; then $(CYGPATH_W) 'statfs.c'; else $(CYGPATH_W) '$(srcdir)/statfs.c'; fi`
 
+trie_test-trie_test.o: trie_test.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_test_CPPFLAGS) $(CPPFLAGS) $(trie_test_CFLAGS) $(CFLAGS) -MT trie_test-trie_test.o -MD -MP -MF $(DEPDIR)/trie_test-trie_test.Tpo -c -o trie_test-trie_test.o `test -f 'trie_test.c' || echo '$(srcdir)/'`trie_test.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/trie_test-trie_test.Tpo $(DEPDIR)/trie_test-trie_test.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='trie_test.c' object='trie_test-trie_test.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_test_CPPFLAGS) $(CPPFLAGS) $(trie_test_CFLAGS) $(CFLAGS) -c -o trie_test-trie_test.o `test -f 'trie_test.c' || echo '$(srcdir)/'`trie_test.c
+
+trie_test-trie_test.obj: trie_test.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_test_CPPFLAGS) $(CPPFLAGS) $(trie_test_CFLAGS) $(CFLAGS) -MT trie_test-trie_test.obj -MD -MP -MF $(DEPDIR)/trie_test-trie_test.Tpo -c -o trie_test-trie_test.obj `if test -f 'trie_test.c'; then $(CYGPATH_W) 'trie_test.c'; else $(CYGPATH_W) '$(srcdir)/trie_test.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/trie_test-trie_test.Tpo $(DEPDIR)/trie_test-trie_test.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='trie_test.c' object='trie_test-trie_test.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_test_CPPFLAGS) $(CPPFLAGS) $(trie_test_CFLAGS) $(CFLAGS) -c -o trie_test-trie_test.obj `if test -f 'trie_test.c'; then $(CYGPATH_W) 'trie_test.c'; else $(CYGPATH_W) '$(srcdir)/trie_test.c'; fi`
+
+trie_test-trie_for_tests.o: trie_for_tests.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_test_CPPFLAGS) $(CPPFLAGS) $(trie_test_CFLAGS) $(CFLAGS) -MT trie_test-trie_for_tests.o -MD -MP -MF $(DEPDIR)/trie_test-trie_for_tests.Tpo -c -o trie_test-trie_for_tests.o `test -f 'trie_for_tests.c' || echo '$(srcdir)/'`trie_for_tests.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/trie_test-trie_for_tests.Tpo $(DEPDIR)/trie_test-trie_for_tests.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='trie_for_tests.c' object='trie_test-trie_for_tests.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_test_CPPFLAGS) $(CPPFLAGS) $(trie_test_CFLAGS) $(CFLAGS) -c -o trie_test-trie_for_tests.o `test -f 'trie_for_tests.c' || echo '$(srcdir)/'`trie_for_tests.c
+
+trie_test-trie_for_tests.obj: trie_for_tests.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_test_CPPFLAGS) $(CPPFLAGS) $(trie_test_CFLAGS) $(CFLAGS) -MT trie_test-trie_for_tests.obj -MD -MP -MF $(DEPDIR)/trie_test-trie_for_tests.Tpo -c -o trie_test-trie_for_tests.obj `if test -f 'trie_for_tests.c'; then $(CYGPATH_W) 'trie_for_tests.c'; else $(CYGPATH_W) '$(srcdir)/trie_for_tests.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/trie_test-trie_for_tests.Tpo $(DEPDIR)/trie_test-trie_for_tests.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='trie_for_tests.c' object='trie_test-trie_for_tests.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_test_CPPFLAGS) $(CPPFLAGS) $(trie_test_CFLAGS) $(CFLAGS) -c -o trie_test-trie_for_tests.obj `if test -f 'trie_for_tests.c'; then $(CYGPATH_W) 'trie_for_tests.c'; else $(CYGPATH_W) '$(srcdir)/trie_for_tests.c'; fi`
+
 truncate64-truncate64.o: truncate64.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(truncate64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT truncate64-truncate64.o -MD -MP -MF $(DEPDIR)/truncate64-truncate64.Tpo -c -o truncate64-truncate64.o `test -f 'truncate64.c' || echo '$(srcdir)/'`truncate64.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/truncate64-truncate64.Tpo $(DEPDIR)/truncate64-truncate64.Po
@@ -9052,7 +12023,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
          test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);               \
        fi;                                                             \
        echo "$${col}$$br$${std}";                                      \
-       echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";   \
+       echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
        echo "$${col}$$br$${std}";                                      \
        create_testsuite_report --maybe-color;                          \
        echo "$$col$$br$$std";                                          \
@@ -9220,10 +12191,12 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/attach-p-cmd-cmd.Po
        -rm -f ./$(DEPDIR)/attach-p-cmd-p.Po
        -rm -f ./$(DEPDIR)/block_reset_raise_run.Po
+       -rm -f ./$(DEPDIR)/block_reset_run.Po
        -rm -f ./$(DEPDIR)/bpf-obj_get_info_by_fd-prog-v.Po
        -rm -f ./$(DEPDIR)/bpf-obj_get_info_by_fd-prog.Po
        -rm -f ./$(DEPDIR)/bpf-obj_get_info_by_fd-v.Po
        -rm -f ./$(DEPDIR)/bpf-obj_get_info_by_fd.Po
+       -rm -f ./$(DEPDIR)/bpf-success-long-y.Po
        -rm -f ./$(DEPDIR)/bpf-success-v.Po
        -rm -f ./$(DEPDIR)/bpf-success.Po
        -rm -f ./$(DEPDIR)/bpf-v.Po
@@ -9241,16 +12214,48 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/clock_adjtime.Po
        -rm -f ./$(DEPDIR)/clock_nanosleep.Po
        -rm -f ./$(DEPDIR)/clock_xettime.Po
+       -rm -f ./$(DEPDIR)/clone-flags.Po
+       -rm -f ./$(DEPDIR)/clone3-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/clone3-Xraw.Po
+       -rm -f ./$(DEPDIR)/clone3-Xverbose.Po
+       -rm -f ./$(DEPDIR)/clone3-success-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/clone3-success-Xraw.Po
+       -rm -f ./$(DEPDIR)/clone3-success-Xverbose.Po
+       -rm -f ./$(DEPDIR)/clone3-success.Po
+       -rm -f ./$(DEPDIR)/clone3.Po
+       -rm -f ./$(DEPDIR)/clone_parent--quiet-exit.Po
+       -rm -f ./$(DEPDIR)/clone_parent-q.Po
+       -rm -f ./$(DEPDIR)/clone_parent-qq.Po
        -rm -f ./$(DEPDIR)/clone_parent.Po
+       -rm -f ./$(DEPDIR)/clone_ptrace--quiet-attach.Po
+       -rm -f ./$(DEPDIR)/clone_ptrace--quiet-exit.Po
+       -rm -f ./$(DEPDIR)/clone_ptrace-q.Po
+       -rm -f ./$(DEPDIR)/clone_ptrace-qq.Po
        -rm -f ./$(DEPDIR)/clone_ptrace.Po
+       -rm -f ./$(DEPDIR)/close_range-P.Po
+       -rm -f ./$(DEPDIR)/close_range-y.Po
+       -rm -f ./$(DEPDIR)/close_range-yy.Po
+       -rm -f ./$(DEPDIR)/close_range.Po
        -rm -f ./$(DEPDIR)/copy_file_range.Po
        -rm -f ./$(DEPDIR)/count-f.Po
        -rm -f ./$(DEPDIR)/creat.Po
        -rm -f ./$(DEPDIR)/delay.Po
        -rm -f ./$(DEPDIR)/delete_module.Po
+       -rm -f ./$(DEPDIR)/dev--decode-fds-dev.Po
+       -rm -f ./$(DEPDIR)/dev--decode-fds-path.Po
+       -rm -f ./$(DEPDIR)/dev--decode-fds-socket.Po
        -rm -f ./$(DEPDIR)/dev-yy.Po
+       -rm -f ./$(DEPDIR)/dup-P.Po
+       -rm -f ./$(DEPDIR)/dup-y.Po
+       -rm -f ./$(DEPDIR)/dup-yy.Po
        -rm -f ./$(DEPDIR)/dup.Po
+       -rm -f ./$(DEPDIR)/dup2-P.Po
+       -rm -f ./$(DEPDIR)/dup2-y.Po
+       -rm -f ./$(DEPDIR)/dup2-yy.Po
        -rm -f ./$(DEPDIR)/dup2.Po
+       -rm -f ./$(DEPDIR)/dup3-P.Po
+       -rm -f ./$(DEPDIR)/dup3-y.Po
+       -rm -f ./$(DEPDIR)/dup3-yy.Po
        -rm -f ./$(DEPDIR)/dup3.Po
        -rm -f ./$(DEPDIR)/epoll_create.Po
        -rm -f ./$(DEPDIR)/epoll_create1.Po
@@ -9263,7 +12268,14 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/execve.Po
        -rm -f ./$(DEPDIR)/execveat-v.Po
        -rm -f ./$(DEPDIR)/execveat.Po
+       -rm -f ./$(DEPDIR)/faccessat-P.Po
+       -rm -f ./$(DEPDIR)/faccessat-y.Po
+       -rm -f ./$(DEPDIR)/faccessat-yy.Po
        -rm -f ./$(DEPDIR)/faccessat.Po
+       -rm -f ./$(DEPDIR)/faccessat2-P.Po
+       -rm -f ./$(DEPDIR)/faccessat2-y.Po
+       -rm -f ./$(DEPDIR)/faccessat2-yy.Po
+       -rm -f ./$(DEPDIR)/faccessat2.Po
        -rm -f ./$(DEPDIR)/fadvise64.Po
        -rm -f ./$(DEPDIR)/fadvise64_64.Po
        -rm -f ./$(DEPDIR)/fallocate.Po
@@ -9278,16 +12290,27 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/fchown.Po
        -rm -f ./$(DEPDIR)/fchown32.Po
        -rm -f ./$(DEPDIR)/fchownat.Po
+       -rm -f ./$(DEPDIR)/fcntl--pidns-translation.Po
        -rm -f ./$(DEPDIR)/fcntl.Po
+       -rm -f ./$(DEPDIR)/fcntl64--pidns-translation.Po
        -rm -f ./$(DEPDIR)/fcntl64.Po
        -rm -f ./$(DEPDIR)/fdatasync.Po
        -rm -f ./$(DEPDIR)/fflush.Po
        -rm -f ./$(DEPDIR)/file_handle.Po
        -rm -f ./$(DEPDIR)/file_ioctl.Po
        -rm -f ./$(DEPDIR)/filter-unavailable.Po
+       -rm -f ./$(DEPDIR)/filter_seccomp-flag.Po
+       -rm -f ./$(DEPDIR)/filter_seccomp-perf.Po
        -rm -f ./$(DEPDIR)/finit_module.Po
        -rm -f ./$(DEPDIR)/flock.Po
+       -rm -f ./$(DEPDIR)/fork--pidns-translation.Po
        -rm -f ./$(DEPDIR)/fork-f.Po
+       -rm -f ./$(DEPDIR)/fsconfig-P.Po
+       -rm -f ./$(DEPDIR)/fsconfig.Po
+       -rm -f ./$(DEPDIR)/fsmount.Po
+       -rm -f ./$(DEPDIR)/fsopen.Po
+       -rm -f ./$(DEPDIR)/fspick-P.Po
+       -rm -f ./$(DEPDIR)/fspick.Po
        -rm -f ./$(DEPDIR)/fstat-Xabbrev.Po
        -rm -f ./$(DEPDIR)/fstat-Xraw.Po
        -rm -f ./$(DEPDIR)/fstat-Xverbose.Po
@@ -9306,9 +12329,12 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/futex.Po
        -rm -f ./$(DEPDIR)/futimesat.Po
        -rm -f ./$(DEPDIR)/get_mempolicy.Po
+       -rm -f ./$(DEPDIR)/get_process_reaper.Po
        -rm -f ./$(DEPDIR)/getcpu.Po
        -rm -f ./$(DEPDIR)/getcwd.Po
+       -rm -f ./$(DEPDIR)/getdents-v.Po
        -rm -f ./$(DEPDIR)/getdents.Po
+       -rm -f ./$(DEPDIR)/getdents64-v.Po
        -rm -f ./$(DEPDIR)/getdents64.Po
        -rm -f ./$(DEPDIR)/getegid.Po
        -rm -f ./$(DEPDIR)/getegid32.Po
@@ -9319,7 +12345,9 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/getgroups.Po
        -rm -f ./$(DEPDIR)/getgroups32.Po
        -rm -f ./$(DEPDIR)/getpeername.Po
+       -rm -f ./$(DEPDIR)/getpgrp--pidns-translation.Po
        -rm -f ./$(DEPDIR)/getpgrp.Po
+       -rm -f ./$(DEPDIR)/getpid--pidns-translation.Po
        -rm -f ./$(DEPDIR)/getpid.Po
        -rm -f ./$(DEPDIR)/getppid.Po
        -rm -f ./$(DEPDIR)/getrandom.Po
@@ -9329,30 +12357,66 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/getresuid32.Po
        -rm -f ./$(DEPDIR)/getrlimit.Po
        -rm -f ./$(DEPDIR)/getrusage.Po
+       -rm -f ./$(DEPDIR)/getsid--pidns-translation.Po
        -rm -f ./$(DEPDIR)/getsid.Po
        -rm -f ./$(DEPDIR)/getsockname.Po
+       -rm -f ./$(DEPDIR)/gettid--pidns-translation.Po
        -rm -f ./$(DEPDIR)/gettid.Po
        -rm -f ./$(DEPDIR)/getuid.Po
        -rm -f ./$(DEPDIR)/getuid32.Po
-       -rm -f ./$(DEPDIR)/getxxid.Po
+       -rm -f ./$(DEPDIR)/getxgid.Po
+       -rm -f ./$(DEPDIR)/getxpid.Po
+       -rm -f ./$(DEPDIR)/getxuid.Po
        -rm -f ./$(DEPDIR)/group_req.Po
        -rm -f ./$(DEPDIR)/inet-cmsg.Po
        -rm -f ./$(DEPDIR)/init_module.Po
        -rm -f ./$(DEPDIR)/inject-nf.Po
        -rm -f ./$(DEPDIR)/inotify.Po
+       -rm -f ./$(DEPDIR)/inotify_init-y.Po
+       -rm -f ./$(DEPDIR)/inotify_init.Po
+       -rm -f ./$(DEPDIR)/inotify_init1-y.Po
        -rm -f ./$(DEPDIR)/inotify_init1.Po
        -rm -f ./$(DEPDIR)/int_0x80.Po
        -rm -f ./$(DEPDIR)/io_uring_enter.Po
        -rm -f ./$(DEPDIR)/io_uring_register.Po
        -rm -f ./$(DEPDIR)/io_uring_setup.Po
        -rm -f ./$(DEPDIR)/ioctl.Po
+       -rm -f ./$(DEPDIR)/ioctl_block--pidns-translation.Po
        -rm -f ./$(DEPDIR)/ioctl_block.Po
        -rm -f ./$(DEPDIR)/ioctl_dm-v.Po
        -rm -f ./$(DEPDIR)/ioctl_dm.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-success-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-success-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-success-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-success-v-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-success-v-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-success-v-Xverbose.Po
        -rm -f ./$(DEPDIR)/ioctl_evdev-success-v.Po
        -rm -f ./$(DEPDIR)/ioctl_evdev-success.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-v-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-v-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-v-Xverbose.Po
        -rm -f ./$(DEPDIR)/ioctl_evdev-v.Po
        -rm -f ./$(DEPDIR)/ioctl_evdev.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-success-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-success-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-success-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-success-v-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-success-v-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-success-v-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-success-v.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-success.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-v-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-v-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-v-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-v.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio.Po
        -rm -f ./$(DEPDIR)/ioctl_inotify.Po
        -rm -f ./$(DEPDIR)/ioctl_kvm_run-v.Po
        -rm -f ./$(DEPDIR)/ioctl_kvm_run.Po
@@ -9373,10 +12437,28 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/ioctl_sg_io_v3.Po
        -rm -f ./$(DEPDIR)/ioctl_sg_io_v4.Po
        -rm -f ./$(DEPDIR)/ioctl_sock_gifconf.Po
+       -rm -f ./$(DEPDIR)/ioctl_tee.Po
        -rm -f ./$(DEPDIR)/ioctl_uffdio.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-success-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-success-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-success-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-success-v-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-success-v-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-success-v-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-success-v.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-success.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-v-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-v-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-v-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-v.Po
        -rm -f ./$(DEPDIR)/ioctl_v4l2.Po
+       -rm -f ./$(DEPDIR)/ioctl_watchdog.Po
        -rm -f ./$(DEPDIR)/ioperm.Po
        -rm -f ./$(DEPDIR)/iopl.Po
+       -rm -f ./$(DEPDIR)/ioprio--pidns-translation.Po
        -rm -f ./$(DEPDIR)/ioprio-Xabbrev.Po
        -rm -f ./$(DEPDIR)/ioprio-Xraw.Po
        -rm -f ./$(DEPDIR)/ioprio-Xverbose.Po
@@ -9400,6 +12482,7 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/ipc_shm-Xverbose.Po
        -rm -f ./$(DEPDIR)/ipc_shm.Po
        -rm -f ./$(DEPDIR)/is_linux_mips_n64.Po
+       -rm -f ./$(DEPDIR)/kcmp-y--pidns-translation.Po
        -rm -f ./$(DEPDIR)/kcmp-y.Po
        -rm -f ./$(DEPDIR)/kcmp.Po
        -rm -f ./$(DEPDIR)/kern_features.Po
@@ -9413,12 +12496,14 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/keyctl-Xraw.Po
        -rm -f ./$(DEPDIR)/keyctl-Xverbose.Po
        -rm -f ./$(DEPDIR)/keyctl.Po
+       -rm -f ./$(DEPDIR)/kill--pidns-translation.Po
        -rm -f ./$(DEPDIR)/kill.Po
        -rm -f ./$(DEPDIR)/kill_child.Po
        -rm -f ./$(DEPDIR)/ksysent.Po
        -rm -f ./$(DEPDIR)/lchown.Po
        -rm -f ./$(DEPDIR)/lchown32.Po
        -rm -f ./$(DEPDIR)/libtests_a-create_nl_socket.Po
+       -rm -f ./$(DEPDIR)/libtests_a-create_tmpfile.Po
        -rm -f ./$(DEPDIR)/libtests_a-errno2name.Po
        -rm -f ./$(DEPDIR)/libtests_a-error_msg.Po
        -rm -f ./$(DEPDIR)/libtests_a-fill_memory.Po
@@ -9430,20 +12515,26 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/libtests_a-inode_of_sockfd.Po
        -rm -f ./$(DEPDIR)/libtests_a-libmmsg.Po
        -rm -f ./$(DEPDIR)/libtests_a-libsocketcall.Po
+       -rm -f ./$(DEPDIR)/libtests_a-lock_file.Po
        -rm -f ./$(DEPDIR)/libtests_a-overflowuid.Po
+       -rm -f ./$(DEPDIR)/libtests_a-pidns.Po
        -rm -f ./$(DEPDIR)/libtests_a-pipe_maxfd.Po
        -rm -f ./$(DEPDIR)/libtests_a-print_quoted_string.Po
        -rm -f ./$(DEPDIR)/libtests_a-print_time.Po
        -rm -f ./$(DEPDIR)/libtests_a-printflags.Po
-       -rm -f ./$(DEPDIR)/libtests_a-printxval.Po
+       -rm -f ./$(DEPDIR)/libtests_a-printxval-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/libtests_a-printxval-Xraw.Po
+       -rm -f ./$(DEPDIR)/libtests_a-printxval-Xverbose.Po
        -rm -f ./$(DEPDIR)/libtests_a-signal2name.Po
        -rm -f ./$(DEPDIR)/libtests_a-skip_unavailable.Po
        -rm -f ./$(DEPDIR)/libtests_a-sprintrc.Po
+       -rm -f ./$(DEPDIR)/libtests_a-status.Po
        -rm -f ./$(DEPDIR)/libtests_a-tail_alloc.Po
        -rm -f ./$(DEPDIR)/libtests_a-test_printpath.Po
        -rm -f ./$(DEPDIR)/libtests_a-test_printstrn.Po
        -rm -f ./$(DEPDIR)/libtests_a-test_ucopy.Po
        -rm -f ./$(DEPDIR)/libtests_a-tprintf.Po
+       -rm -f ./$(DEPDIR)/libtests_a-xmalloc_for_tests.Po
        -rm -f ./$(DEPDIR)/link.Po
        -rm -f ./$(DEPDIR)/linkat.Po
        -rm -f ./$(DEPDIR)/list_sigaction_signum.Po
@@ -9455,12 +12546,18 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/lstat.Po
        -rm -f ./$(DEPDIR)/lstat64-lstat64.Po
        -rm -f ./$(DEPDIR)/madvise.Po
+       -rm -f ./$(DEPDIR)/maybe_switch_current_tcp--quiet-thread-execve.Po
+       -rm -f ./$(DEPDIR)/maybe_switch_current_tcp.Po
+       -rm -f ./$(DEPDIR)/mbind-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/mbind-Xraw.Po
+       -rm -f ./$(DEPDIR)/mbind-Xverbose.Po
        -rm -f ./$(DEPDIR)/mbind.Po
        -rm -f ./$(DEPDIR)/membarrier.Po
        -rm -f ./$(DEPDIR)/memfd_create-Xabbrev.Po
        -rm -f ./$(DEPDIR)/memfd_create-Xraw.Po
        -rm -f ./$(DEPDIR)/memfd_create-Xverbose.Po
        -rm -f ./$(DEPDIR)/memfd_create.Po
+       -rm -f ./$(DEPDIR)/migrate_pages--pidns-translation.Po
        -rm -f ./$(DEPDIR)/migrate_pages.Po
        -rm -f ./$(DEPDIR)/mincore.Po
        -rm -f ./$(DEPDIR)/mkdir.Po
@@ -9487,6 +12584,9 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/mount-Xraw.Po
        -rm -f ./$(DEPDIR)/mount-Xverbose.Po
        -rm -f ./$(DEPDIR)/mount.Po
+       -rm -f ./$(DEPDIR)/move_mount-P.Po
+       -rm -f ./$(DEPDIR)/move_mount.Po
+       -rm -f ./$(DEPDIR)/move_pages--pidns-translation.Po
        -rm -f ./$(DEPDIR)/move_pages-Xabbrev.Po
        -rm -f ./$(DEPDIR)/move_pages-Xraw.Po
        -rm -f ./$(DEPDIR)/move_pages-Xverbose.Po
@@ -9500,12 +12600,17 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/msg_name.Po
        -rm -f ./$(DEPDIR)/munlockall.Po
        -rm -f ./$(DEPDIR)/nanosleep.Po
+       -rm -f ./$(DEPDIR)/net--decode-fds-dev-netlink.Po
+       -rm -f ./$(DEPDIR)/net--decode-fds-none-netlink.Po
+       -rm -f ./$(DEPDIR)/net--decode-fds-path-netlink.Po
+       -rm -f ./$(DEPDIR)/net--decode-fds-socket-netlink.Po
        -rm -f ./$(DEPDIR)/net-accept-connect.Po
        -rm -f ./$(DEPDIR)/net-icmp_filter.Po
        -rm -f ./$(DEPDIR)/net-packet_mreq-Xabbrev.Po
        -rm -f ./$(DEPDIR)/net-packet_mreq-Xraw.Po
        -rm -f ./$(DEPDIR)/net-packet_mreq-Xverbose.Po
        -rm -f ./$(DEPDIR)/net-packet_mreq.Po
+       -rm -f ./$(DEPDIR)/net-sockaddr--pidns-translation.Po
        -rm -f ./$(DEPDIR)/net-sockaddr.Po
        -rm -f ./$(DEPDIR)/net-tpacket_req.Po
        -rm -f ./$(DEPDIR)/net-tpacket_stats-success.Po
@@ -9515,6 +12620,7 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/net-yy-inet6.Po
        -rm -f ./$(DEPDIR)/net-yy-netlink.Po
        -rm -f ./$(DEPDIR)/net-yy-unix.Po
+       -rm -f ./$(DEPDIR)/netlink_audit--pidns-translation.Po
        -rm -f ./$(DEPDIR)/netlink_audit.Po
        -rm -f ./$(DEPDIR)/netlink_crypto.Po
        -rm -f ./$(DEPDIR)/netlink_generic.Po
@@ -9552,6 +12658,7 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/nlattr_ifla_brport.Po
        -rm -f ./$(DEPDIR)/nlattr_ifla_linkinfo.Po
        -rm -f ./$(DEPDIR)/nlattr_ifla_port.Po
+       -rm -f ./$(DEPDIR)/nlattr_ifla_xdp-y.Po
        -rm -f ./$(DEPDIR)/nlattr_ifla_xdp.Po
        -rm -f ./$(DEPDIR)/nlattr_inet_diag_msg.Po
        -rm -f ./$(DEPDIR)/nlattr_inet_diag_req_compat.Po
@@ -9588,7 +12695,19 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/oldselect.Po
        -rm -f ./$(DEPDIR)/oldstat.Po
        -rm -f ./$(DEPDIR)/open.Po
+       -rm -f ./$(DEPDIR)/open_tree-P.Po
+       -rm -f ./$(DEPDIR)/open_tree.Po
        -rm -f ./$(DEPDIR)/openat.Po
+       -rm -f ./$(DEPDIR)/openat2-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/openat2-Xraw.Po
+       -rm -f ./$(DEPDIR)/openat2-Xverbose.Po
+       -rm -f ./$(DEPDIR)/openat2-v-y-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/openat2-v-y-Xraw.Po
+       -rm -f ./$(DEPDIR)/openat2-v-y-Xverbose.Po
+       -rm -f ./$(DEPDIR)/openat2-v-y.Po
+       -rm -f ./$(DEPDIR)/openat2-v.Po
+       -rm -f ./$(DEPDIR)/openat2-y.Po
+       -rm -f ./$(DEPDIR)/openat2.Po
        -rm -f ./$(DEPDIR)/orphaned_process_group.Po
        -rm -f ./$(DEPDIR)/osf_utimes.Po
        -rm -f ./$(DEPDIR)/pause.Po
@@ -9600,7 +12719,20 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/personality-Xraw.Po
        -rm -f ./$(DEPDIR)/personality-Xverbose.Po
        -rm -f ./$(DEPDIR)/personality.Po
+       -rm -f ./$(DEPDIR)/pidfd_getfd-y.Po
+       -rm -f ./$(DEPDIR)/pidfd_getfd-yy.Po
+       -rm -f ./$(DEPDIR)/pidfd_getfd.Po
+       -rm -f ./$(DEPDIR)/pidfd_open--decode-fd-path.Po
+       -rm -f ./$(DEPDIR)/pidfd_open--decode-fd-pidfd.Po
+       -rm -f ./$(DEPDIR)/pidfd_open--decode-fd-socket.Po
+       -rm -f ./$(DEPDIR)/pidfd_open--pidns-translation.Po
+       -rm -f ./$(DEPDIR)/pidfd_open-P.Po
+       -rm -f ./$(DEPDIR)/pidfd_open-y.Po
+       -rm -f ./$(DEPDIR)/pidfd_open-yy.Po
+       -rm -f ./$(DEPDIR)/pidfd_open.Po
+       -rm -f ./$(DEPDIR)/pidfd_send_signal--pidns-translation.Po
        -rm -f ./$(DEPDIR)/pidfd_send_signal.Po
+       -rm -f ./$(DEPDIR)/pidns-cache.Po
        -rm -f ./$(DEPDIR)/pipe.Po
        -rm -f ./$(DEPDIR)/pipe2.Po
        -rm -f ./$(DEPDIR)/pkey_alloc.Po
@@ -9627,6 +12759,7 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/preadv2-pwritev2.Po
        -rm -f ./$(DEPDIR)/preadv_pwritev-preadv-pwritev.Po
        -rm -f ./$(DEPDIR)/print_maxfd.Po
+       -rm -f ./$(DEPDIR)/print_ppid_tracerpid.Po
        -rm -f ./$(DEPDIR)/printpath-umovestr-peekdata.Po
        -rm -f ./$(DEPDIR)/printpath-umovestr-undumpable.Po
        -rm -f ./$(DEPDIR)/printpath-umovestr.Po
@@ -9637,8 +12770,11 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/printstrn-umoven-peekdata.Po
        -rm -f ./$(DEPDIR)/printstrn-umoven-undumpable.Po
        -rm -f ./$(DEPDIR)/printstrn-umoven.Po
+       -rm -f ./$(DEPDIR)/prlimit64--pidns-translation.Po
        -rm -f ./$(DEPDIR)/prlimit64.Po
+       -rm -f ./$(DEPDIR)/process_vm_readv--pidns-translation.Po
        -rm -f ./$(DEPDIR)/process_vm_readv.Po
+       -rm -f ./$(DEPDIR)/process_vm_writev--pidns-translation.Po
        -rm -f ./$(DEPDIR)/process_vm_writev.Po
        -rm -f ./$(DEPDIR)/pselect6.Po
        -rm -f ./$(DEPDIR)/ptrace.Po
@@ -9667,6 +12803,8 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/readlinkat.Po
        -rm -f ./$(DEPDIR)/readv.Po
        -rm -f ./$(DEPDIR)/reboot.Po
+       -rm -f ./$(DEPDIR)/recv-MSG_TRUNC.Po
+       -rm -f ./$(DEPDIR)/recvfrom-MSG_TRUNC.Po
        -rm -f ./$(DEPDIR)/recvfrom.Po
        -rm -f ./$(DEPDIR)/recvmmsg-timeout.Po
        -rm -f ./$(DEPDIR)/recvmsg.Po
@@ -9685,10 +12823,12 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/rt_sigaction.Po
        -rm -f ./$(DEPDIR)/rt_sigpending.Po
        -rm -f ./$(DEPDIR)/rt_sigprocmask.Po
+       -rm -f ./$(DEPDIR)/rt_sigqueueinfo--pidns-translation.Po
        -rm -f ./$(DEPDIR)/rt_sigqueueinfo.Po
        -rm -f ./$(DEPDIR)/rt_sigreturn.Po
        -rm -f ./$(DEPDIR)/rt_sigsuspend.Po
        -rm -f ./$(DEPDIR)/rt_sigtimedwait.Po
+       -rm -f ./$(DEPDIR)/rt_tgsigqueueinfo--pidns-translation.Po
        -rm -f ./$(DEPDIR)/rt_tgsigqueueinfo.Po
        -rm -f ./$(DEPDIR)/run_expect_termsig.Po
        -rm -f ./$(DEPDIR)/s390_guarded_storage-v.Po
@@ -9699,9 +12839,13 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/s390_sthyi.Po
        -rm -f ./$(DEPDIR)/sched_get_priority_mxx.Po
        -rm -f ./$(DEPDIR)/sched_rr_get_interval.Po
+       -rm -f ./$(DEPDIR)/sched_xetaffinity--pidns-translation.Po
        -rm -f ./$(DEPDIR)/sched_xetaffinity.Po
+       -rm -f ./$(DEPDIR)/sched_xetattr--pidns-translation.Po
        -rm -f ./$(DEPDIR)/sched_xetattr.Po
+       -rm -f ./$(DEPDIR)/sched_xetparam--pidns-translation.Po
        -rm -f ./$(DEPDIR)/sched_xetparam.Po
+       -rm -f ./$(DEPDIR)/sched_xetscheduler--pidns-translation.Po
        -rm -f ./$(DEPDIR)/sched_xetscheduler.Po
        -rm -f ./$(DEPDIR)/sched_yield.Po
        -rm -f ./$(DEPDIR)/scm_rights.Po
@@ -9711,9 +12855,14 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/seccomp_get_action_avail.Po
        -rm -f ./$(DEPDIR)/select-P.Po
        -rm -f ./$(DEPDIR)/select.Po
+       -rm -f ./$(DEPDIR)/semop-indirect.Po
        -rm -f ./$(DEPDIR)/semop.Po
+       -rm -f ./$(DEPDIR)/semtimedop.Po
        -rm -f ./$(DEPDIR)/sendfile.Po
        -rm -f ./$(DEPDIR)/sendfile64.Po
+       -rm -f ./$(DEPDIR)/set_mempolicy-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/set_mempolicy-Xraw.Po
+       -rm -f ./$(DEPDIR)/set_mempolicy-Xverbose.Po
        -rm -f ./$(DEPDIR)/set_mempolicy.Po
        -rm -f ./$(DEPDIR)/set_ptracer_any.Po
        -rm -f ./$(DEPDIR)/set_sigblock.Po
@@ -9729,6 +12878,7 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/setgroups32.Po
        -rm -f ./$(DEPDIR)/sethostname.Po
        -rm -f ./$(DEPDIR)/setns.Po
+       -rm -f ./$(DEPDIR)/setpgrp-exec.Po
        -rm -f ./$(DEPDIR)/setregid.Po
        -rm -f ./$(DEPDIR)/setregid32.Po
        -rm -f ./$(DEPDIR)/setresgid.Po
@@ -9749,6 +12899,7 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/sigaltstack.Po
        -rm -f ./$(DEPDIR)/siginfo.Po
        -rm -f ./$(DEPDIR)/signal.Po
+       -rm -f ./$(DEPDIR)/signal_receive--pidns-translation.Po
        -rm -f ./$(DEPDIR)/signal_receive.Po
        -rm -f ./$(DEPDIR)/signalfd4.Po
        -rm -f ./$(DEPDIR)/sigpending.Po
@@ -9758,6 +12909,7 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/sleep.Po
        -rm -f ./$(DEPDIR)/so_error.Po
        -rm -f ./$(DEPDIR)/so_linger.Po
+       -rm -f ./$(DEPDIR)/so_peercred--pidns-translation.Po
        -rm -f ./$(DEPDIR)/so_peercred-Xabbrev.Po
        -rm -f ./$(DEPDIR)/so_peercred-Xraw.Po
        -rm -f ./$(DEPDIR)/so_peercred-Xverbose.Po
@@ -9777,6 +12929,7 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/stack-fcall-1.Po
        -rm -f ./$(DEPDIR)/stack-fcall-2.Po
        -rm -f ./$(DEPDIR)/stack-fcall-3.Po
+       -rm -f ./$(DEPDIR)/stack-fcall-attach.Po
        -rm -f ./$(DEPDIR)/stack-fcall-mangled-0.Po
        -rm -f ./$(DEPDIR)/stack-fcall-mangled-1.Po
        -rm -f ./$(DEPDIR)/stack-fcall-mangled-2.Po
@@ -9787,7 +12940,25 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/stat64-stat64.Po
        -rm -f ./$(DEPDIR)/statfs-statfs.Po
        -rm -f ./$(DEPDIR)/statfs64.Po
+       -rm -f ./$(DEPDIR)/status-all.Po
+       -rm -f ./$(DEPDIR)/status-failed-long.Po
+       -rm -f ./$(DEPDIR)/status-failed-status.Po
+       -rm -f ./$(DEPDIR)/status-failed.Po
+       -rm -f ./$(DEPDIR)/status-none-f.Po
+       -rm -f ./$(DEPDIR)/status-none-threads.Po
+       -rm -f ./$(DEPDIR)/status-none.Po
+       -rm -f ./$(DEPDIR)/status-successful-long.Po
+       -rm -f ./$(DEPDIR)/status-successful-status.Po
+       -rm -f ./$(DEPDIR)/status-successful.Po
+       -rm -f ./$(DEPDIR)/status-unfinished-threads.Po
+       -rm -f ./$(DEPDIR)/status-unfinished.Po
        -rm -f ./$(DEPDIR)/statx.Po
+       -rm -f ./$(DEPDIR)/strace--strings-in-hex-all.Po
+       -rm -f ./$(DEPDIR)/strace--strings-in-hex-non-ascii.Po
+       -rm -f ./$(DEPDIR)/strace--strings-in-hex.Po
+       -rm -f ./$(DEPDIR)/strace-n.Po
+       -rm -f ./$(DEPDIR)/strace-x.Po
+       -rm -f ./$(DEPDIR)/strace-xx.Po
        -rm -f ./$(DEPDIR)/swap.Po
        -rm -f ./$(DEPDIR)/sxetmask.Po
        -rm -f ./$(DEPDIR)/symlink.Po
@@ -9796,8 +12967,15 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/sync_file_range.Po
        -rm -f ./$(DEPDIR)/sync_file_range2.Po
        -rm -f ./$(DEPDIR)/sysinfo.Po
+       -rm -f ./$(DEPDIR)/syslog-success.Po
        -rm -f ./$(DEPDIR)/syslog.Po
        -rm -f ./$(DEPDIR)/tee.Po
+       -rm -f ./$(DEPDIR)/tgkill--pidns-translation.Po
+       -rm -f ./$(DEPDIR)/tgkill.Po
+       -rm -f ./$(DEPDIR)/threads-execve--quiet-thread-execve.Po
+       -rm -f ./$(DEPDIR)/threads-execve-q.Po
+       -rm -f ./$(DEPDIR)/threads-execve-qq.Po
+       -rm -f ./$(DEPDIR)/threads-execve-qqq.Po
        -rm -f ./$(DEPDIR)/threads-execve.Po
        -rm -f ./$(DEPDIR)/time.Po
        -rm -f ./$(DEPDIR)/timer_create.Po
@@ -9805,6 +12983,11 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/timerfd_xettime.Po
        -rm -f ./$(DEPDIR)/times-fail.Po
        -rm -f ./$(DEPDIR)/times.Po
+       -rm -f ./$(DEPDIR)/tkill--pidns-translation.Po
+       -rm -f ./$(DEPDIR)/tkill.Po
+       -rm -f ./$(DEPDIR)/tracer_ppid_pgid_sid.Po
+       -rm -f ./$(DEPDIR)/trie_test-trie_for_tests.Po
+       -rm -f ./$(DEPDIR)/trie_test-trie_test.Po
        -rm -f ./$(DEPDIR)/truncate.Po
        -rm -f ./$(DEPDIR)/truncate64-truncate64.Po
        -rm -f ./$(DEPDIR)/ugetrlimit.Po
@@ -9817,6 +13000,8 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/umovestr.Po
        -rm -f ./$(DEPDIR)/umovestr2.Po
        -rm -f ./$(DEPDIR)/umovestr3.Po
+       -rm -f ./$(DEPDIR)/umovestr_cached.Po
+       -rm -f ./$(DEPDIR)/umovestr_cached_adjacent.Po
        -rm -f ./$(DEPDIR)/uname.Po
        -rm -f ./$(DEPDIR)/unblock_reset_raise.Po
        -rm -f ./$(DEPDIR)/unix-pair-send-recv.Po
@@ -9842,10 +13027,13 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/waitpid.Po
        -rm -f ./$(DEPDIR)/xattr-strings.Po
        -rm -f ./$(DEPDIR)/xattr.Po
+       -rm -f ./$(DEPDIR)/xet_robust_list--pidns-translation.Po
        -rm -f ./$(DEPDIR)/xet_robust_list.Po
        -rm -f ./$(DEPDIR)/xet_thread_area_x86.Po
        -rm -f ./$(DEPDIR)/xetitimer.Po
+       -rm -f ./$(DEPDIR)/xetpgid--pidns-translation.Po
        -rm -f ./$(DEPDIR)/xetpgid.Po
+       -rm -f ./$(DEPDIR)/xetpriority--pidns-translation.Po
        -rm -f ./$(DEPDIR)/xetpriority.Po
        -rm -f ./$(DEPDIR)/xettimeofday.Po
        -rm -f ./$(DEPDIR)/zeroargc.Po
@@ -9911,10 +13099,12 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/attach-p-cmd-cmd.Po
        -rm -f ./$(DEPDIR)/attach-p-cmd-p.Po
        -rm -f ./$(DEPDIR)/block_reset_raise_run.Po
+       -rm -f ./$(DEPDIR)/block_reset_run.Po
        -rm -f ./$(DEPDIR)/bpf-obj_get_info_by_fd-prog-v.Po
        -rm -f ./$(DEPDIR)/bpf-obj_get_info_by_fd-prog.Po
        -rm -f ./$(DEPDIR)/bpf-obj_get_info_by_fd-v.Po
        -rm -f ./$(DEPDIR)/bpf-obj_get_info_by_fd.Po
+       -rm -f ./$(DEPDIR)/bpf-success-long-y.Po
        -rm -f ./$(DEPDIR)/bpf-success-v.Po
        -rm -f ./$(DEPDIR)/bpf-success.Po
        -rm -f ./$(DEPDIR)/bpf-v.Po
@@ -9932,16 +13122,48 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/clock_adjtime.Po
        -rm -f ./$(DEPDIR)/clock_nanosleep.Po
        -rm -f ./$(DEPDIR)/clock_xettime.Po
+       -rm -f ./$(DEPDIR)/clone-flags.Po
+       -rm -f ./$(DEPDIR)/clone3-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/clone3-Xraw.Po
+       -rm -f ./$(DEPDIR)/clone3-Xverbose.Po
+       -rm -f ./$(DEPDIR)/clone3-success-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/clone3-success-Xraw.Po
+       -rm -f ./$(DEPDIR)/clone3-success-Xverbose.Po
+       -rm -f ./$(DEPDIR)/clone3-success.Po
+       -rm -f ./$(DEPDIR)/clone3.Po
+       -rm -f ./$(DEPDIR)/clone_parent--quiet-exit.Po
+       -rm -f ./$(DEPDIR)/clone_parent-q.Po
+       -rm -f ./$(DEPDIR)/clone_parent-qq.Po
        -rm -f ./$(DEPDIR)/clone_parent.Po
+       -rm -f ./$(DEPDIR)/clone_ptrace--quiet-attach.Po
+       -rm -f ./$(DEPDIR)/clone_ptrace--quiet-exit.Po
+       -rm -f ./$(DEPDIR)/clone_ptrace-q.Po
+       -rm -f ./$(DEPDIR)/clone_ptrace-qq.Po
        -rm -f ./$(DEPDIR)/clone_ptrace.Po
+       -rm -f ./$(DEPDIR)/close_range-P.Po
+       -rm -f ./$(DEPDIR)/close_range-y.Po
+       -rm -f ./$(DEPDIR)/close_range-yy.Po
+       -rm -f ./$(DEPDIR)/close_range.Po
        -rm -f ./$(DEPDIR)/copy_file_range.Po
        -rm -f ./$(DEPDIR)/count-f.Po
        -rm -f ./$(DEPDIR)/creat.Po
        -rm -f ./$(DEPDIR)/delay.Po
        -rm -f ./$(DEPDIR)/delete_module.Po
+       -rm -f ./$(DEPDIR)/dev--decode-fds-dev.Po
+       -rm -f ./$(DEPDIR)/dev--decode-fds-path.Po
+       -rm -f ./$(DEPDIR)/dev--decode-fds-socket.Po
        -rm -f ./$(DEPDIR)/dev-yy.Po
+       -rm -f ./$(DEPDIR)/dup-P.Po
+       -rm -f ./$(DEPDIR)/dup-y.Po
+       -rm -f ./$(DEPDIR)/dup-yy.Po
        -rm -f ./$(DEPDIR)/dup.Po
+       -rm -f ./$(DEPDIR)/dup2-P.Po
+       -rm -f ./$(DEPDIR)/dup2-y.Po
+       -rm -f ./$(DEPDIR)/dup2-yy.Po
        -rm -f ./$(DEPDIR)/dup2.Po
+       -rm -f ./$(DEPDIR)/dup3-P.Po
+       -rm -f ./$(DEPDIR)/dup3-y.Po
+       -rm -f ./$(DEPDIR)/dup3-yy.Po
        -rm -f ./$(DEPDIR)/dup3.Po
        -rm -f ./$(DEPDIR)/epoll_create.Po
        -rm -f ./$(DEPDIR)/epoll_create1.Po
@@ -9954,7 +13176,14 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/execve.Po
        -rm -f ./$(DEPDIR)/execveat-v.Po
        -rm -f ./$(DEPDIR)/execveat.Po
+       -rm -f ./$(DEPDIR)/faccessat-P.Po
+       -rm -f ./$(DEPDIR)/faccessat-y.Po
+       -rm -f ./$(DEPDIR)/faccessat-yy.Po
        -rm -f ./$(DEPDIR)/faccessat.Po
+       -rm -f ./$(DEPDIR)/faccessat2-P.Po
+       -rm -f ./$(DEPDIR)/faccessat2-y.Po
+       -rm -f ./$(DEPDIR)/faccessat2-yy.Po
+       -rm -f ./$(DEPDIR)/faccessat2.Po
        -rm -f ./$(DEPDIR)/fadvise64.Po
        -rm -f ./$(DEPDIR)/fadvise64_64.Po
        -rm -f ./$(DEPDIR)/fallocate.Po
@@ -9969,16 +13198,27 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/fchown.Po
        -rm -f ./$(DEPDIR)/fchown32.Po
        -rm -f ./$(DEPDIR)/fchownat.Po
+       -rm -f ./$(DEPDIR)/fcntl--pidns-translation.Po
        -rm -f ./$(DEPDIR)/fcntl.Po
+       -rm -f ./$(DEPDIR)/fcntl64--pidns-translation.Po
        -rm -f ./$(DEPDIR)/fcntl64.Po
        -rm -f ./$(DEPDIR)/fdatasync.Po
        -rm -f ./$(DEPDIR)/fflush.Po
        -rm -f ./$(DEPDIR)/file_handle.Po
        -rm -f ./$(DEPDIR)/file_ioctl.Po
        -rm -f ./$(DEPDIR)/filter-unavailable.Po
+       -rm -f ./$(DEPDIR)/filter_seccomp-flag.Po
+       -rm -f ./$(DEPDIR)/filter_seccomp-perf.Po
        -rm -f ./$(DEPDIR)/finit_module.Po
        -rm -f ./$(DEPDIR)/flock.Po
+       -rm -f ./$(DEPDIR)/fork--pidns-translation.Po
        -rm -f ./$(DEPDIR)/fork-f.Po
+       -rm -f ./$(DEPDIR)/fsconfig-P.Po
+       -rm -f ./$(DEPDIR)/fsconfig.Po
+       -rm -f ./$(DEPDIR)/fsmount.Po
+       -rm -f ./$(DEPDIR)/fsopen.Po
+       -rm -f ./$(DEPDIR)/fspick-P.Po
+       -rm -f ./$(DEPDIR)/fspick.Po
        -rm -f ./$(DEPDIR)/fstat-Xabbrev.Po
        -rm -f ./$(DEPDIR)/fstat-Xraw.Po
        -rm -f ./$(DEPDIR)/fstat-Xverbose.Po
@@ -9997,9 +13237,12 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/futex.Po
        -rm -f ./$(DEPDIR)/futimesat.Po
        -rm -f ./$(DEPDIR)/get_mempolicy.Po
+       -rm -f ./$(DEPDIR)/get_process_reaper.Po
        -rm -f ./$(DEPDIR)/getcpu.Po
        -rm -f ./$(DEPDIR)/getcwd.Po
+       -rm -f ./$(DEPDIR)/getdents-v.Po
        -rm -f ./$(DEPDIR)/getdents.Po
+       -rm -f ./$(DEPDIR)/getdents64-v.Po
        -rm -f ./$(DEPDIR)/getdents64.Po
        -rm -f ./$(DEPDIR)/getegid.Po
        -rm -f ./$(DEPDIR)/getegid32.Po
@@ -10010,7 +13253,9 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/getgroups.Po
        -rm -f ./$(DEPDIR)/getgroups32.Po
        -rm -f ./$(DEPDIR)/getpeername.Po
+       -rm -f ./$(DEPDIR)/getpgrp--pidns-translation.Po
        -rm -f ./$(DEPDIR)/getpgrp.Po
+       -rm -f ./$(DEPDIR)/getpid--pidns-translation.Po
        -rm -f ./$(DEPDIR)/getpid.Po
        -rm -f ./$(DEPDIR)/getppid.Po
        -rm -f ./$(DEPDIR)/getrandom.Po
@@ -10020,30 +13265,66 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/getresuid32.Po
        -rm -f ./$(DEPDIR)/getrlimit.Po
        -rm -f ./$(DEPDIR)/getrusage.Po
+       -rm -f ./$(DEPDIR)/getsid--pidns-translation.Po
        -rm -f ./$(DEPDIR)/getsid.Po
        -rm -f ./$(DEPDIR)/getsockname.Po
+       -rm -f ./$(DEPDIR)/gettid--pidns-translation.Po
        -rm -f ./$(DEPDIR)/gettid.Po
        -rm -f ./$(DEPDIR)/getuid.Po
        -rm -f ./$(DEPDIR)/getuid32.Po
-       -rm -f ./$(DEPDIR)/getxxid.Po
+       -rm -f ./$(DEPDIR)/getxgid.Po
+       -rm -f ./$(DEPDIR)/getxpid.Po
+       -rm -f ./$(DEPDIR)/getxuid.Po
        -rm -f ./$(DEPDIR)/group_req.Po
        -rm -f ./$(DEPDIR)/inet-cmsg.Po
        -rm -f ./$(DEPDIR)/init_module.Po
        -rm -f ./$(DEPDIR)/inject-nf.Po
        -rm -f ./$(DEPDIR)/inotify.Po
+       -rm -f ./$(DEPDIR)/inotify_init-y.Po
+       -rm -f ./$(DEPDIR)/inotify_init.Po
+       -rm -f ./$(DEPDIR)/inotify_init1-y.Po
        -rm -f ./$(DEPDIR)/inotify_init1.Po
        -rm -f ./$(DEPDIR)/int_0x80.Po
        -rm -f ./$(DEPDIR)/io_uring_enter.Po
        -rm -f ./$(DEPDIR)/io_uring_register.Po
        -rm -f ./$(DEPDIR)/io_uring_setup.Po
        -rm -f ./$(DEPDIR)/ioctl.Po
+       -rm -f ./$(DEPDIR)/ioctl_block--pidns-translation.Po
        -rm -f ./$(DEPDIR)/ioctl_block.Po
        -rm -f ./$(DEPDIR)/ioctl_dm-v.Po
        -rm -f ./$(DEPDIR)/ioctl_dm.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-success-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-success-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-success-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-success-v-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-success-v-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-success-v-Xverbose.Po
        -rm -f ./$(DEPDIR)/ioctl_evdev-success-v.Po
        -rm -f ./$(DEPDIR)/ioctl_evdev-success.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-v-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-v-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_evdev-v-Xverbose.Po
        -rm -f ./$(DEPDIR)/ioctl_evdev-v.Po
        -rm -f ./$(DEPDIR)/ioctl_evdev.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-success-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-success-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-success-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-success-v-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-success-v-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-success-v-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-success-v.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-success.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-v-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-v-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-v-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio-v.Po
+       -rm -f ./$(DEPDIR)/ioctl_hdio.Po
        -rm -f ./$(DEPDIR)/ioctl_inotify.Po
        -rm -f ./$(DEPDIR)/ioctl_kvm_run-v.Po
        -rm -f ./$(DEPDIR)/ioctl_kvm_run.Po
@@ -10064,10 +13345,28 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/ioctl_sg_io_v3.Po
        -rm -f ./$(DEPDIR)/ioctl_sg_io_v4.Po
        -rm -f ./$(DEPDIR)/ioctl_sock_gifconf.Po
+       -rm -f ./$(DEPDIR)/ioctl_tee.Po
        -rm -f ./$(DEPDIR)/ioctl_uffdio.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-success-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-success-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-success-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-success-v-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-success-v-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-success-v-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-success-v.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-success.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-v-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-v-Xraw.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-v-Xverbose.Po
+       -rm -f ./$(DEPDIR)/ioctl_v4l2-v.Po
        -rm -f ./$(DEPDIR)/ioctl_v4l2.Po
+       -rm -f ./$(DEPDIR)/ioctl_watchdog.Po
        -rm -f ./$(DEPDIR)/ioperm.Po
        -rm -f ./$(DEPDIR)/iopl.Po
+       -rm -f ./$(DEPDIR)/ioprio--pidns-translation.Po
        -rm -f ./$(DEPDIR)/ioprio-Xabbrev.Po
        -rm -f ./$(DEPDIR)/ioprio-Xraw.Po
        -rm -f ./$(DEPDIR)/ioprio-Xverbose.Po
@@ -10091,6 +13390,7 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/ipc_shm-Xverbose.Po
        -rm -f ./$(DEPDIR)/ipc_shm.Po
        -rm -f ./$(DEPDIR)/is_linux_mips_n64.Po
+       -rm -f ./$(DEPDIR)/kcmp-y--pidns-translation.Po
        -rm -f ./$(DEPDIR)/kcmp-y.Po
        -rm -f ./$(DEPDIR)/kcmp.Po
        -rm -f ./$(DEPDIR)/kern_features.Po
@@ -10104,12 +13404,14 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/keyctl-Xraw.Po
        -rm -f ./$(DEPDIR)/keyctl-Xverbose.Po
        -rm -f ./$(DEPDIR)/keyctl.Po
+       -rm -f ./$(DEPDIR)/kill--pidns-translation.Po
        -rm -f ./$(DEPDIR)/kill.Po
        -rm -f ./$(DEPDIR)/kill_child.Po
        -rm -f ./$(DEPDIR)/ksysent.Po
        -rm -f ./$(DEPDIR)/lchown.Po
        -rm -f ./$(DEPDIR)/lchown32.Po
        -rm -f ./$(DEPDIR)/libtests_a-create_nl_socket.Po
+       -rm -f ./$(DEPDIR)/libtests_a-create_tmpfile.Po
        -rm -f ./$(DEPDIR)/libtests_a-errno2name.Po
        -rm -f ./$(DEPDIR)/libtests_a-error_msg.Po
        -rm -f ./$(DEPDIR)/libtests_a-fill_memory.Po
@@ -10121,20 +13423,26 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/libtests_a-inode_of_sockfd.Po
        -rm -f ./$(DEPDIR)/libtests_a-libmmsg.Po
        -rm -f ./$(DEPDIR)/libtests_a-libsocketcall.Po
+       -rm -f ./$(DEPDIR)/libtests_a-lock_file.Po
        -rm -f ./$(DEPDIR)/libtests_a-overflowuid.Po
+       -rm -f ./$(DEPDIR)/libtests_a-pidns.Po
        -rm -f ./$(DEPDIR)/libtests_a-pipe_maxfd.Po
        -rm -f ./$(DEPDIR)/libtests_a-print_quoted_string.Po
        -rm -f ./$(DEPDIR)/libtests_a-print_time.Po
        -rm -f ./$(DEPDIR)/libtests_a-printflags.Po
-       -rm -f ./$(DEPDIR)/libtests_a-printxval.Po
+       -rm -f ./$(DEPDIR)/libtests_a-printxval-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/libtests_a-printxval-Xraw.Po
+       -rm -f ./$(DEPDIR)/libtests_a-printxval-Xverbose.Po
        -rm -f ./$(DEPDIR)/libtests_a-signal2name.Po
        -rm -f ./$(DEPDIR)/libtests_a-skip_unavailable.Po
        -rm -f ./$(DEPDIR)/libtests_a-sprintrc.Po
+       -rm -f ./$(DEPDIR)/libtests_a-status.Po
        -rm -f ./$(DEPDIR)/libtests_a-tail_alloc.Po
        -rm -f ./$(DEPDIR)/libtests_a-test_printpath.Po
        -rm -f ./$(DEPDIR)/libtests_a-test_printstrn.Po
        -rm -f ./$(DEPDIR)/libtests_a-test_ucopy.Po
        -rm -f ./$(DEPDIR)/libtests_a-tprintf.Po
+       -rm -f ./$(DEPDIR)/libtests_a-xmalloc_for_tests.Po
        -rm -f ./$(DEPDIR)/link.Po
        -rm -f ./$(DEPDIR)/linkat.Po
        -rm -f ./$(DEPDIR)/list_sigaction_signum.Po
@@ -10146,12 +13454,18 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/lstat.Po
        -rm -f ./$(DEPDIR)/lstat64-lstat64.Po
        -rm -f ./$(DEPDIR)/madvise.Po
+       -rm -f ./$(DEPDIR)/maybe_switch_current_tcp--quiet-thread-execve.Po
+       -rm -f ./$(DEPDIR)/maybe_switch_current_tcp.Po
+       -rm -f ./$(DEPDIR)/mbind-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/mbind-Xraw.Po
+       -rm -f ./$(DEPDIR)/mbind-Xverbose.Po
        -rm -f ./$(DEPDIR)/mbind.Po
        -rm -f ./$(DEPDIR)/membarrier.Po
        -rm -f ./$(DEPDIR)/memfd_create-Xabbrev.Po
        -rm -f ./$(DEPDIR)/memfd_create-Xraw.Po
        -rm -f ./$(DEPDIR)/memfd_create-Xverbose.Po
        -rm -f ./$(DEPDIR)/memfd_create.Po
+       -rm -f ./$(DEPDIR)/migrate_pages--pidns-translation.Po
        -rm -f ./$(DEPDIR)/migrate_pages.Po
        -rm -f ./$(DEPDIR)/mincore.Po
        -rm -f ./$(DEPDIR)/mkdir.Po
@@ -10178,6 +13492,9 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/mount-Xraw.Po
        -rm -f ./$(DEPDIR)/mount-Xverbose.Po
        -rm -f ./$(DEPDIR)/mount.Po
+       -rm -f ./$(DEPDIR)/move_mount-P.Po
+       -rm -f ./$(DEPDIR)/move_mount.Po
+       -rm -f ./$(DEPDIR)/move_pages--pidns-translation.Po
        -rm -f ./$(DEPDIR)/move_pages-Xabbrev.Po
        -rm -f ./$(DEPDIR)/move_pages-Xraw.Po
        -rm -f ./$(DEPDIR)/move_pages-Xverbose.Po
@@ -10191,12 +13508,17 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/msg_name.Po
        -rm -f ./$(DEPDIR)/munlockall.Po
        -rm -f ./$(DEPDIR)/nanosleep.Po
+       -rm -f ./$(DEPDIR)/net--decode-fds-dev-netlink.Po
+       -rm -f ./$(DEPDIR)/net--decode-fds-none-netlink.Po
+       -rm -f ./$(DEPDIR)/net--decode-fds-path-netlink.Po
+       -rm -f ./$(DEPDIR)/net--decode-fds-socket-netlink.Po
        -rm -f ./$(DEPDIR)/net-accept-connect.Po
        -rm -f ./$(DEPDIR)/net-icmp_filter.Po
        -rm -f ./$(DEPDIR)/net-packet_mreq-Xabbrev.Po
        -rm -f ./$(DEPDIR)/net-packet_mreq-Xraw.Po
        -rm -f ./$(DEPDIR)/net-packet_mreq-Xverbose.Po
        -rm -f ./$(DEPDIR)/net-packet_mreq.Po
+       -rm -f ./$(DEPDIR)/net-sockaddr--pidns-translation.Po
        -rm -f ./$(DEPDIR)/net-sockaddr.Po
        -rm -f ./$(DEPDIR)/net-tpacket_req.Po
        -rm -f ./$(DEPDIR)/net-tpacket_stats-success.Po
@@ -10206,6 +13528,7 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/net-yy-inet6.Po
        -rm -f ./$(DEPDIR)/net-yy-netlink.Po
        -rm -f ./$(DEPDIR)/net-yy-unix.Po
+       -rm -f ./$(DEPDIR)/netlink_audit--pidns-translation.Po
        -rm -f ./$(DEPDIR)/netlink_audit.Po
        -rm -f ./$(DEPDIR)/netlink_crypto.Po
        -rm -f ./$(DEPDIR)/netlink_generic.Po
@@ -10243,6 +13566,7 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/nlattr_ifla_brport.Po
        -rm -f ./$(DEPDIR)/nlattr_ifla_linkinfo.Po
        -rm -f ./$(DEPDIR)/nlattr_ifla_port.Po
+       -rm -f ./$(DEPDIR)/nlattr_ifla_xdp-y.Po
        -rm -f ./$(DEPDIR)/nlattr_ifla_xdp.Po
        -rm -f ./$(DEPDIR)/nlattr_inet_diag_msg.Po
        -rm -f ./$(DEPDIR)/nlattr_inet_diag_req_compat.Po
@@ -10279,7 +13603,19 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/oldselect.Po
        -rm -f ./$(DEPDIR)/oldstat.Po
        -rm -f ./$(DEPDIR)/open.Po
+       -rm -f ./$(DEPDIR)/open_tree-P.Po
+       -rm -f ./$(DEPDIR)/open_tree.Po
        -rm -f ./$(DEPDIR)/openat.Po
+       -rm -f ./$(DEPDIR)/openat2-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/openat2-Xraw.Po
+       -rm -f ./$(DEPDIR)/openat2-Xverbose.Po
+       -rm -f ./$(DEPDIR)/openat2-v-y-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/openat2-v-y-Xraw.Po
+       -rm -f ./$(DEPDIR)/openat2-v-y-Xverbose.Po
+       -rm -f ./$(DEPDIR)/openat2-v-y.Po
+       -rm -f ./$(DEPDIR)/openat2-v.Po
+       -rm -f ./$(DEPDIR)/openat2-y.Po
+       -rm -f ./$(DEPDIR)/openat2.Po
        -rm -f ./$(DEPDIR)/orphaned_process_group.Po
        -rm -f ./$(DEPDIR)/osf_utimes.Po
        -rm -f ./$(DEPDIR)/pause.Po
@@ -10291,7 +13627,20 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/personality-Xraw.Po
        -rm -f ./$(DEPDIR)/personality-Xverbose.Po
        -rm -f ./$(DEPDIR)/personality.Po
+       -rm -f ./$(DEPDIR)/pidfd_getfd-y.Po
+       -rm -f ./$(DEPDIR)/pidfd_getfd-yy.Po
+       -rm -f ./$(DEPDIR)/pidfd_getfd.Po
+       -rm -f ./$(DEPDIR)/pidfd_open--decode-fd-path.Po
+       -rm -f ./$(DEPDIR)/pidfd_open--decode-fd-pidfd.Po
+       -rm -f ./$(DEPDIR)/pidfd_open--decode-fd-socket.Po
+       -rm -f ./$(DEPDIR)/pidfd_open--pidns-translation.Po
+       -rm -f ./$(DEPDIR)/pidfd_open-P.Po
+       -rm -f ./$(DEPDIR)/pidfd_open-y.Po
+       -rm -f ./$(DEPDIR)/pidfd_open-yy.Po
+       -rm -f ./$(DEPDIR)/pidfd_open.Po
+       -rm -f ./$(DEPDIR)/pidfd_send_signal--pidns-translation.Po
        -rm -f ./$(DEPDIR)/pidfd_send_signal.Po
+       -rm -f ./$(DEPDIR)/pidns-cache.Po
        -rm -f ./$(DEPDIR)/pipe.Po
        -rm -f ./$(DEPDIR)/pipe2.Po
        -rm -f ./$(DEPDIR)/pkey_alloc.Po
@@ -10318,6 +13667,7 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/preadv2-pwritev2.Po
        -rm -f ./$(DEPDIR)/preadv_pwritev-preadv-pwritev.Po
        -rm -f ./$(DEPDIR)/print_maxfd.Po
+       -rm -f ./$(DEPDIR)/print_ppid_tracerpid.Po
        -rm -f ./$(DEPDIR)/printpath-umovestr-peekdata.Po
        -rm -f ./$(DEPDIR)/printpath-umovestr-undumpable.Po
        -rm -f ./$(DEPDIR)/printpath-umovestr.Po
@@ -10328,8 +13678,11 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/printstrn-umoven-peekdata.Po
        -rm -f ./$(DEPDIR)/printstrn-umoven-undumpable.Po
        -rm -f ./$(DEPDIR)/printstrn-umoven.Po
+       -rm -f ./$(DEPDIR)/prlimit64--pidns-translation.Po
        -rm -f ./$(DEPDIR)/prlimit64.Po
+       -rm -f ./$(DEPDIR)/process_vm_readv--pidns-translation.Po
        -rm -f ./$(DEPDIR)/process_vm_readv.Po
+       -rm -f ./$(DEPDIR)/process_vm_writev--pidns-translation.Po
        -rm -f ./$(DEPDIR)/process_vm_writev.Po
        -rm -f ./$(DEPDIR)/pselect6.Po
        -rm -f ./$(DEPDIR)/ptrace.Po
@@ -10358,6 +13711,8 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/readlinkat.Po
        -rm -f ./$(DEPDIR)/readv.Po
        -rm -f ./$(DEPDIR)/reboot.Po
+       -rm -f ./$(DEPDIR)/recv-MSG_TRUNC.Po
+       -rm -f ./$(DEPDIR)/recvfrom-MSG_TRUNC.Po
        -rm -f ./$(DEPDIR)/recvfrom.Po
        -rm -f ./$(DEPDIR)/recvmmsg-timeout.Po
        -rm -f ./$(DEPDIR)/recvmsg.Po
@@ -10376,10 +13731,12 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/rt_sigaction.Po
        -rm -f ./$(DEPDIR)/rt_sigpending.Po
        -rm -f ./$(DEPDIR)/rt_sigprocmask.Po
+       -rm -f ./$(DEPDIR)/rt_sigqueueinfo--pidns-translation.Po
        -rm -f ./$(DEPDIR)/rt_sigqueueinfo.Po
        -rm -f ./$(DEPDIR)/rt_sigreturn.Po
        -rm -f ./$(DEPDIR)/rt_sigsuspend.Po
        -rm -f ./$(DEPDIR)/rt_sigtimedwait.Po
+       -rm -f ./$(DEPDIR)/rt_tgsigqueueinfo--pidns-translation.Po
        -rm -f ./$(DEPDIR)/rt_tgsigqueueinfo.Po
        -rm -f ./$(DEPDIR)/run_expect_termsig.Po
        -rm -f ./$(DEPDIR)/s390_guarded_storage-v.Po
@@ -10390,9 +13747,13 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/s390_sthyi.Po
        -rm -f ./$(DEPDIR)/sched_get_priority_mxx.Po
        -rm -f ./$(DEPDIR)/sched_rr_get_interval.Po
+       -rm -f ./$(DEPDIR)/sched_xetaffinity--pidns-translation.Po
        -rm -f ./$(DEPDIR)/sched_xetaffinity.Po
+       -rm -f ./$(DEPDIR)/sched_xetattr--pidns-translation.Po
        -rm -f ./$(DEPDIR)/sched_xetattr.Po
+       -rm -f ./$(DEPDIR)/sched_xetparam--pidns-translation.Po
        -rm -f ./$(DEPDIR)/sched_xetparam.Po
+       -rm -f ./$(DEPDIR)/sched_xetscheduler--pidns-translation.Po
        -rm -f ./$(DEPDIR)/sched_xetscheduler.Po
        -rm -f ./$(DEPDIR)/sched_yield.Po
        -rm -f ./$(DEPDIR)/scm_rights.Po
@@ -10402,9 +13763,14 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/seccomp_get_action_avail.Po
        -rm -f ./$(DEPDIR)/select-P.Po
        -rm -f ./$(DEPDIR)/select.Po
+       -rm -f ./$(DEPDIR)/semop-indirect.Po
        -rm -f ./$(DEPDIR)/semop.Po
+       -rm -f ./$(DEPDIR)/semtimedop.Po
        -rm -f ./$(DEPDIR)/sendfile.Po
        -rm -f ./$(DEPDIR)/sendfile64.Po
+       -rm -f ./$(DEPDIR)/set_mempolicy-Xabbrev.Po
+       -rm -f ./$(DEPDIR)/set_mempolicy-Xraw.Po
+       -rm -f ./$(DEPDIR)/set_mempolicy-Xverbose.Po
        -rm -f ./$(DEPDIR)/set_mempolicy.Po
        -rm -f ./$(DEPDIR)/set_ptracer_any.Po
        -rm -f ./$(DEPDIR)/set_sigblock.Po
@@ -10420,6 +13786,7 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/setgroups32.Po
        -rm -f ./$(DEPDIR)/sethostname.Po
        -rm -f ./$(DEPDIR)/setns.Po
+       -rm -f ./$(DEPDIR)/setpgrp-exec.Po
        -rm -f ./$(DEPDIR)/setregid.Po
        -rm -f ./$(DEPDIR)/setregid32.Po
        -rm -f ./$(DEPDIR)/setresgid.Po
@@ -10440,6 +13807,7 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/sigaltstack.Po
        -rm -f ./$(DEPDIR)/siginfo.Po
        -rm -f ./$(DEPDIR)/signal.Po
+       -rm -f ./$(DEPDIR)/signal_receive--pidns-translation.Po
        -rm -f ./$(DEPDIR)/signal_receive.Po
        -rm -f ./$(DEPDIR)/signalfd4.Po
        -rm -f ./$(DEPDIR)/sigpending.Po
@@ -10449,6 +13817,7 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/sleep.Po
        -rm -f ./$(DEPDIR)/so_error.Po
        -rm -f ./$(DEPDIR)/so_linger.Po
+       -rm -f ./$(DEPDIR)/so_peercred--pidns-translation.Po
        -rm -f ./$(DEPDIR)/so_peercred-Xabbrev.Po
        -rm -f ./$(DEPDIR)/so_peercred-Xraw.Po
        -rm -f ./$(DEPDIR)/so_peercred-Xverbose.Po
@@ -10468,6 +13837,7 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/stack-fcall-1.Po
        -rm -f ./$(DEPDIR)/stack-fcall-2.Po
        -rm -f ./$(DEPDIR)/stack-fcall-3.Po
+       -rm -f ./$(DEPDIR)/stack-fcall-attach.Po
        -rm -f ./$(DEPDIR)/stack-fcall-mangled-0.Po
        -rm -f ./$(DEPDIR)/stack-fcall-mangled-1.Po
        -rm -f ./$(DEPDIR)/stack-fcall-mangled-2.Po
@@ -10478,7 +13848,25 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/stat64-stat64.Po
        -rm -f ./$(DEPDIR)/statfs-statfs.Po
        -rm -f ./$(DEPDIR)/statfs64.Po
+       -rm -f ./$(DEPDIR)/status-all.Po
+       -rm -f ./$(DEPDIR)/status-failed-long.Po
+       -rm -f ./$(DEPDIR)/status-failed-status.Po
+       -rm -f ./$(DEPDIR)/status-failed.Po
+       -rm -f ./$(DEPDIR)/status-none-f.Po
+       -rm -f ./$(DEPDIR)/status-none-threads.Po
+       -rm -f ./$(DEPDIR)/status-none.Po
+       -rm -f ./$(DEPDIR)/status-successful-long.Po
+       -rm -f ./$(DEPDIR)/status-successful-status.Po
+       -rm -f ./$(DEPDIR)/status-successful.Po
+       -rm -f ./$(DEPDIR)/status-unfinished-threads.Po
+       -rm -f ./$(DEPDIR)/status-unfinished.Po
        -rm -f ./$(DEPDIR)/statx.Po
+       -rm -f ./$(DEPDIR)/strace--strings-in-hex-all.Po
+       -rm -f ./$(DEPDIR)/strace--strings-in-hex-non-ascii.Po
+       -rm -f ./$(DEPDIR)/strace--strings-in-hex.Po
+       -rm -f ./$(DEPDIR)/strace-n.Po
+       -rm -f ./$(DEPDIR)/strace-x.Po
+       -rm -f ./$(DEPDIR)/strace-xx.Po
        -rm -f ./$(DEPDIR)/swap.Po
        -rm -f ./$(DEPDIR)/sxetmask.Po
        -rm -f ./$(DEPDIR)/symlink.Po
@@ -10487,8 +13875,15 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/sync_file_range.Po
        -rm -f ./$(DEPDIR)/sync_file_range2.Po
        -rm -f ./$(DEPDIR)/sysinfo.Po
+       -rm -f ./$(DEPDIR)/syslog-success.Po
        -rm -f ./$(DEPDIR)/syslog.Po
        -rm -f ./$(DEPDIR)/tee.Po
+       -rm -f ./$(DEPDIR)/tgkill--pidns-translation.Po
+       -rm -f ./$(DEPDIR)/tgkill.Po
+       -rm -f ./$(DEPDIR)/threads-execve--quiet-thread-execve.Po
+       -rm -f ./$(DEPDIR)/threads-execve-q.Po
+       -rm -f ./$(DEPDIR)/threads-execve-qq.Po
+       -rm -f ./$(DEPDIR)/threads-execve-qqq.Po
        -rm -f ./$(DEPDIR)/threads-execve.Po
        -rm -f ./$(DEPDIR)/time.Po
        -rm -f ./$(DEPDIR)/timer_create.Po
@@ -10496,6 +13891,11 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/timerfd_xettime.Po
        -rm -f ./$(DEPDIR)/times-fail.Po
        -rm -f ./$(DEPDIR)/times.Po
+       -rm -f ./$(DEPDIR)/tkill--pidns-translation.Po
+       -rm -f ./$(DEPDIR)/tkill.Po
+       -rm -f ./$(DEPDIR)/tracer_ppid_pgid_sid.Po
+       -rm -f ./$(DEPDIR)/trie_test-trie_for_tests.Po
+       -rm -f ./$(DEPDIR)/trie_test-trie_test.Po
        -rm -f ./$(DEPDIR)/truncate.Po
        -rm -f ./$(DEPDIR)/truncate64-truncate64.Po
        -rm -f ./$(DEPDIR)/ugetrlimit.Po
@@ -10508,6 +13908,8 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/umovestr.Po
        -rm -f ./$(DEPDIR)/umovestr2.Po
        -rm -f ./$(DEPDIR)/umovestr3.Po
+       -rm -f ./$(DEPDIR)/umovestr_cached.Po
+       -rm -f ./$(DEPDIR)/umovestr_cached_adjacent.Po
        -rm -f ./$(DEPDIR)/uname.Po
        -rm -f ./$(DEPDIR)/unblock_reset_raise.Po
        -rm -f ./$(DEPDIR)/unix-pair-send-recv.Po
@@ -10533,10 +13935,13 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/waitpid.Po
        -rm -f ./$(DEPDIR)/xattr-strings.Po
        -rm -f ./$(DEPDIR)/xattr.Po
+       -rm -f ./$(DEPDIR)/xet_robust_list--pidns-translation.Po
        -rm -f ./$(DEPDIR)/xet_robust_list.Po
        -rm -f ./$(DEPDIR)/xet_thread_area_x86.Po
        -rm -f ./$(DEPDIR)/xetitimer.Po
+       -rm -f ./$(DEPDIR)/xetpgid--pidns-translation.Po
        -rm -f ./$(DEPDIR)/xetpgid.Po
+       -rm -f ./$(DEPDIR)/xetpriority--pidns-translation.Po
        -rm -f ./$(DEPDIR)/xetpriority.Po
        -rm -f ./$(DEPDIR)/xettimeofday.Po
        -rm -f ./$(DEPDIR)/zeroargc.Po
@@ -10659,13 +14064,79 @@ $(srcdir)/clock_nanosleep.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tes
 $(srcdir)/clock_xettime.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
-$(srcdir)/copy_file_range.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+$(srcdir)/clone3.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
-$(srcdir)/creat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+$(srcdir)/clone3-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
-$(srcdir)/delete_module.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+$(srcdir)/clone3-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone3-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone3-success-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone3-success-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone3-success-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone_parent.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone_parent--quiet-exit.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone_parent-q.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone_parent-qq.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone_ptrace--quiet-attach.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone_ptrace--quiet-exit.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone_ptrace-q.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone_ptrace-qq.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/close_range.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/close_range-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/close_range-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/close_range-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/copy_file_range.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/creat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/delete_module.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dev--decode-fds-dev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dev--decode-fds-path.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dev--decode-fds-socket.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
 $(srcdir)/dev-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
@@ -10674,12 +14145,39 @@ $(srcdir)/dev-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/dup.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/dup-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dup-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dup-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/dup2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/dup2-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dup2-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dup2-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/dup3.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/dup3-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dup3-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dup3-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/epoll_create.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -10704,7 +14202,22 @@ $(srcdir)/execveat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/execveat-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
-$(srcdir)/faccessat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+$(srcdir)/faccessat-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat2-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat2-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat2-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
 $(srcdir)/fadvise64_64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
@@ -10749,9 +14262,15 @@ $(srcdir)/fchownat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/fcntl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/fcntl--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/fcntl64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/fcntl64--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/fdatasync.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -10761,6 +14280,12 @@ $(srcdir)/file_handle.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.i
 $(srcdir)/file_ioctl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/filter_seccomp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/filter_seccomp-flag.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/finit_module.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -10770,6 +14295,24 @@ $(srcdir)/flock.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/fork-f.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/fsconfig.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/fsconfig-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/fsmount.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/fsopen.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/fspick.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/fspick-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/fstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -10830,27 +14373,51 @@ $(srcdir)/getcwd.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/getdents.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getdents-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getdents64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getdents64-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getegid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getegid-creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getegid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getegid32-creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/geteuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/geteuid-creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/geteuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/geteuid32-creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getgid-creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getgid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getgid32-creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getgroups.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -10863,9 +14430,15 @@ $(srcdir)/getpeername.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.i
 $(srcdir)/getpgrp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getpgrp--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getpid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getpid--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getppid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -10893,16 +14466,31 @@ $(srcdir)/getrusage.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/getsid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getsid--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getsockname.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
 $(srcdir)/gettid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getuid-creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
-$(srcdir)/getxxid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+$(srcdir)/getuid32-creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/getxgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/getxpid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/getxuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
 $(srcdir)/group_req.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
@@ -10917,9 +14505,15 @@ $(srcdir)/init_module.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.i
 $(srcdir)/inotify.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/inotify_init.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/inotify_init1.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/inotify_init1-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/io_uring_enter.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -10941,9 +14535,96 @@ $(srcdir)/ioctl_dm-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/ioctl_evdev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_evdev-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_evdev-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_evdev-v-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-v-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-v-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-success-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-success-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-success-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-success-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-success-v-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-success-v-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-success-v-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-v-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-v-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-v-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-success.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-success-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-success-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-success-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-success-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-success-v-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-success-v-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-success-v-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_inotify.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -10977,6 +14658,9 @@ $(srcdir)/ioctl_nsfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/ioctl_perf.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_perf-success.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_ptp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11001,12 +14685,63 @@ $(srcdir)/ioctl_sg_io_v4.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_test
 $(srcdir)/ioctl_sock_gifconf.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_tee.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_uffdio.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
 $(srcdir)/ioctl_v4l2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_v4l2-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-v-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-v-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-v-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-success.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-success-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-success-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-success-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-success-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-success-v-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-success-v-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-success-v-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_watchdog.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/ioperm.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11016,6 +14751,9 @@ $(srcdir)/iopl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/ioprio.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/ioprio--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/ioprio-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11082,6 +14820,9 @@ $(srcdir)/kcmp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/kcmp-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/kcmp-y--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/kern_features.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11118,6 +14859,12 @@ $(srcdir)/keyctl-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tes
 $(srcdir)/kill.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/kill--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ksysent.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/lchown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11142,9 +14889,24 @@ $(srcdir)/lstat64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/madvise.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/maybe_switch_current_tcp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/maybe_switch_current_tcp--quiet-thread-execve.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/mbind.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/mbind-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/mbind-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/mbind-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/membarrier.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11163,6 +14925,9 @@ $(srcdir)/memfd_create-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/g
 $(srcdir)/migrate_pages.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/migrate_pages--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/mincore.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11235,6 +15000,12 @@ $(srcdir)/mount-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/mount-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/move_mount.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/move_mount-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/move_pages.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11247,6 +15018,9 @@ $(srcdir)/move_pages-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tes
 $(srcdir)/move_pages-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/move_pages--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/mq.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11274,6 +15048,18 @@ $(srcdir)/munlockall.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/nanosleep.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/net--decode-fds-dev-netlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/net--decode-fds-none-netlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/net--decode-fds-path-netlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/net--decode-fds-socket-netlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/net-icmp_filter.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11292,6 +15078,9 @@ $(srcdir)/net-packet_mreq-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir
 $(srcdir)/net-sockaddr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/net-sockaddr--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/net-tpacket_req.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11403,6 +15192,9 @@ $(srcdir)/nlattr_ifla_port.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_te
 $(srcdir)/nlattr_ifla_xdp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/nlattr_ifla_xdp-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/nlattr_inet_diag_msg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11502,9 +15294,45 @@ $(srcdir)/oldstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/open.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/open_tree.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/open_tree-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/openat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/openat2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-v-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-v-y-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-v-y-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-v-y-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/orphaned_process_group.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11532,9 +15360,45 @@ $(srcdir)/personality-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_te
 $(srcdir)/personality-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/pidfd_getfd.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_getfd-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_getfd-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_open.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_open--decode-fd-path.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_open--decode-fd-pidfd.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_open--decode-fd-socket.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_open-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_open-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_open-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_open--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/pidfd_send_signal.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/pidfd_send_signal--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/pipe2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11601,12 +15465,21 @@ $(srcdir)/printstrn-umoven-undumpable.gen.test: $(abs_srcdir)/gen_tests.sh $(src
 $(srcdir)/prlimit64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/prlimit64--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/process_vm_readv.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/process_vm_readv--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/process_vm_writev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/process_vm_writev--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/pselect6.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11658,9 +15531,15 @@ $(srcdir)/readlinkat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/reboot.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/recv-MSG_TRUNC.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/recvfrom.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/recvfrom-MSG_TRUNC.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/recvmmsg-timeout.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11709,6 +15588,9 @@ $(srcdir)/rt_sigprocmask.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_test
 $(srcdir)/rt_sigqueueinfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/rt_sigqueueinfo--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/rt_sigreturn.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11721,6 +15603,9 @@ $(srcdir)/rt_sigtimedwait.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tes
 $(srcdir)/rt_tgsigqueueinfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/rt_tgsigqueueinfo--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/s390_guarded_storage.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11751,15 +15636,27 @@ $(srcdir)/sched_rr_get_interval.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/g
 $(srcdir)/sched_xetaffinity.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/sched_xetaffinity--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/sched_xetattr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/sched_xetattr--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/sched_xetparam.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/sched_xetparam--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/sched_xetscheduler.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/sched_xetscheduler--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/sched_yield.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11781,6 +15678,12 @@ $(srcdir)/select-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/semop.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/semop-indirect.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/semtimedop.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/sendfile.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11790,6 +15693,15 @@ $(srcdir)/sendfile64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/set_mempolicy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/set_mempolicy-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/set_mempolicy-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/set_mempolicy-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/setdomainname.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11883,6 +15795,9 @@ $(srcdir)/signal.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/signal_receive.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/signal_receive--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/signalfd4.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11916,6 +15831,9 @@ $(srcdir)/so_peercred-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_te
 $(srcdir)/so_peercred-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/so_peercred--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/sock_filter-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11961,9 +15879,147 @@ $(srcdir)/statfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/statfs64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/status-all.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/status-failed.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/status-failed-long.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/status-failed-status.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/status-none.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/status-successful.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/status-successful-long.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/status-successful-status.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/status-unfinished.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/statx.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/strace--absolute-timestamps.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-time.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-time-precision-s.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-time-precision-ms.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-time-precision-us.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-time-precision-ns.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-unix-precision-s.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-unix-precision-ms.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-unix-precision-us.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-unix-precision-ns.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--follow-forks-output-separately.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--relative-timestamps.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--relative-timestamps-s.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--relative-timestamps-ms.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--relative-timestamps-us.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--relative-timestamps-ns.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--syscall-times.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--syscall-times-s.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--syscall-times-ms.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--syscall-times-us.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--syscall-times-ns.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--strings-in-hex.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--strings-in-hex-all.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--strings-in-hex-non-ascii.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-time.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-time-s.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-time-ms.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-time-us.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-time-ns.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-unix-s.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-unix-ms.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-unix-us.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-unix-ns.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace-n.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace-x.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace-xx.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/swap.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -11994,6 +16050,24 @@ $(srcdir)/syslog.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/tee.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/tgkill.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/tgkill--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/threads-execve--quiet-thread-execve.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/threads-execve-q.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/threads-execve-qq.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/threads-execve-qqq.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/time.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -12012,6 +16086,18 @@ $(srcdir)/times.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/times-fail.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/tkill.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/tkill--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_clock.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/trace_fstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -12054,6 +16140,9 @@ $(srcdir)/trace_statfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.
 $(srcdir)/trace_statfs_like.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/trie_test.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/truncate.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -12075,6 +16164,9 @@ $(srcdir)/umovestr-illptr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tes
 $(srcdir)/umovestr3.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/umovestr_cached_adjacent.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/unlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -12141,15 +16233,24 @@ $(srcdir)/xattr-strings.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests
 $(srcdir)/xet_robust_list.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/xet_robust_list--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/xetitimer.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
 $(srcdir)/xetpgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/xetpgid--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/xetpriority.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/xetpriority--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/xettimeofday.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
index bfba2edb06d5d6ef1eb6b497eb2f0bd3c9421876..d4553341097f4bcac3b9c9ed70c1e348ba1f741f 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR__newselect
 
index df5dee8093ffffb55c02663f62287c9ebad68fbb..6ba19a45828eacf1a537d407fa6fb3dc99a453e6 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of accept syscall.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -12,7 +12,7 @@
 
 #include <unistd.h>
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_accept
 
index 0fbdc690ef6a0b8cbd2c236f6e6febab11b2a567..fb010a1916ef3939c734b8f926d8ca62f51ef2bc 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 
 # include <unistd.h>
 # include <sys/socket.h>
-# include <asm/unistd.h>
+# include "scno.h"
 
 # if defined __NR_socketcall && defined __sparc__
 /*
index cbdde6a274f58245ea1ef1207aca9f8ac5099fdf..8bdbb62657ec6cc67e636048065881317ffd95b0 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_access
 
index 7d80e6f8050922eb7e3a726c4e88201d45db9bb1..adcf5ca50cb9b5ad089016cfd1f5915cd5c2a14b 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (access -a30 -access_sample); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (access -a30 --trace-path=access_sample); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a30 -access_sample
+run_strace_match_diff -a30 --trace-path=access_sample
index 2127df604ed4c9e9afa372eceeea91011086e40f..16b67cbc0b88ec966279ecb56229ceaf9d4ff492 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_acct
 
index c1014927de2f20b22fb746bb949d18bca09ea6cd..20163274444e698eec200688ba7face3285d1b52 100644 (file)
@@ -2,14 +2,13 @@
  * Check decoding of add_key syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
 #include "scno.h"
 
 #ifdef __NR_add_key
index 87d3acdc7c6dfd812506f4084e52b33bf61d34ad..3b88d04e586742eb29b8613736b843eef85616af 100644 (file)
@@ -8,26 +8,45 @@
  */
 
 #include "tests.h"
-#include <stddef.h>
-#include <stdio.h>
-#include <stdint.h>
-#include <string.h>
-#include <sys/timex.h>
+#include "scno.h"
 
-#include "xlat.h"
-#include "xlat/adjtimex_state.h"
-#include "xlat/adjtimex_status.h"
+#ifdef __NR_adjtimex
+
+# include <stddef.h>
+# include <stdio.h>
+# include <stdint.h>
+# include <string.h>
+# include <sys/timex.h>
+# include <unistd.h>
+
+# include "kernel_old_timex.h"
+
+# include "xlat.h"
+# include "xlat/adjtimex_state.h"
+# include "xlat/adjtimex_status.h"
+
+static const char *errstr;
+
+static long
+k_adjtimex(void *const buf)
+{
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = (uintptr_t) buf;
+       const long rc = syscall(__NR_adjtimex, arg1, bad, bad, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
 
 int
 main(void)
 {
-       int state = adjtimex(NULL);
-       printf("adjtimex(NULL) = %s\n", sprintrc(state));
+       int state = k_adjtimex(NULL);
+       printf("adjtimex(NULL) = %s\n", errstr);
 
-       TAIL_ALLOC_OBJECT_CONST_PTR(struct timex, tx);
+       TAIL_ALLOC_OBJECT_CONST_PTR(kernel_old_timex_t, tx);
        memset(tx, 0, sizeof(*tx));
 
-       state = adjtimex(tx);
+       state = k_adjtimex(tx);
        if (state < 0)
                perror_msg_and_skip("adjtimex");
 
@@ -60,11 +79,7 @@ main(void)
               (intmax_t) tx->calcnt,
               (intmax_t) tx->errcnt,
               (intmax_t) tx->stbcnt,
-#ifdef HAVE_STRUCT_TIMEX_TAI
               tx->tai,
-#else
-              *(const int *)((const void *) tx + offsetofend(struct timex, stbcnt)),
-#endif
               state);
        printxval(adjtimex_state, (unsigned int) state, NULL);
        puts(")");
@@ -72,3 +87,9 @@ main(void)
        puts("+++ exited with 0 +++");
        return 0;
 }
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_adjtimex")
+
+#endif
index 1382199881941365e86068b0d8b18a99d1e38f2a..f8c2f8616667c44c95ea683dce52d4e0ae898af8 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -12,7 +12,7 @@
 #include <stdio.h>
 #include <time.h>
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_io_setup \
  && defined __NR_io_submit \
@@ -117,7 +117,7 @@ main(void)
                        /* In order to make record valid */
                        .aio_nbytes = (size_t) 0x1020304050607080ULL,
                        .aio_offset = 0xdeadda7abadc0dedULL,
-# ifdef IOCB_FLAG_RESFD
+# ifdef HAVE_STRUCT_IOCB_AIO_FLAGS
                        .aio_flags = 0xfacef157,
                        .aio_resfd = 0xded1ca7e,
 # endif
@@ -298,30 +298,31 @@ main(void)
        printf("io_submit(%#lx, %ld, ["
               "{aio_data=%#" PRI__x64 ", aio_key=%u"
                ", aio_lio_opcode=%hu /* IOCB_CMD_??? */, aio_fildes=%d}"
-               ", {aio_key=%u, aio_lio_opcode=IOCB_CMD_PWRITE, aio_reqprio=%hd"
-               ", aio_fildes=%d, aio_buf=NULL"
+               ", {aio_data=0, aio_key=%u, aio_lio_opcode=IOCB_CMD_PWRITE"
+               ", aio_reqprio=IOPRIO_PRIO_VALUE(0x5 /* IOPRIO_CLASS_??? */"
+               ", 7919), aio_fildes=%d, aio_buf=NULL"
                ", aio_nbytes=%" PRI__u64 ", aio_offset=%" PRI__d64
-# ifdef IOCB_FLAG_RESFD
-               ", aio_resfd=%d, aio_flags=%#x"
+# ifdef HAVE_STRUCT_IOCB_AIO_FLAGS
+               ", aio_flags=IOCB_FLAG_RESFD|IOCB_FLAG_IOPRIO|%#x, aio_resfd=%d"
 # endif
-              "}, {aio_key=%u, aio_lio_opcode=IOCB_CMD_PWRITE"
+              "}, {aio_data=0, aio_key=%u, aio_lio_opcode=IOCB_CMD_PWRITE"
                ", aio_reqprio=%hd, aio_fildes=%d, aio_buf=%#" PRI__x64
                ", aio_nbytes=%" PRI__u64 ", aio_offset=%" PRI__d64
-              "}, {aio_key=%u, aio_lio_opcode=IOCB_CMD_PWRITE"
+              "}, {aio_data=0, aio_key=%u, aio_lio_opcode=IOCB_CMD_PWRITE"
                ", aio_reqprio=%hd, aio_fildes=%d"
                ", aio_buf=\"\\0\\1\\2\\3%.28s\"..."
                ", aio_nbytes=%" PRI__u64 ", aio_offset=%" PRI__d64
-              "}, {aio_key=%u, aio_lio_opcode=IOCB_CMD_PWRITEV"
+              "}, {aio_data=0, aio_key=%u, aio_lio_opcode=IOCB_CMD_PWRITEV"
                ", aio_reqprio=%hd, aio_fildes=%d, aio_buf=%#" PRI__x64
                ", aio_nbytes=%" PRI__u64 ", aio_offset=%" PRI__d64
               "}, NULL, %#lx, ... /* %p */]) = ",
               *ctx, 1057L,
               cbv2[0].aio_data, cbv2[0].aio_key,
               cbv2[0].aio_lio_opcode, cbv2[0].aio_fildes,
-              cbv2[1].aio_key, cbv2[1].aio_reqprio, cbv2[1].aio_fildes,
+              cbv2[1].aio_key, cbv2[1].aio_fildes,
               cbv2[1].aio_nbytes, cbv2[1].aio_offset,
-# ifdef IOCB_FLAG_RESFD
-              cbv2[1].aio_resfd, cbv2[1].aio_flags,
+# ifdef HAVE_STRUCT_IOCB_AIO_FLAGS
+              cbv2[1].aio_flags & ~3, cbv2[1].aio_resfd,
 # endif
               cbv2[2].aio_key, cbv2[2].aio_reqprio, cbv2[2].aio_fildes,
               cbv2[2].aio_buf, cbv2[2].aio_nbytes, cbv2[2].aio_offset,
index 8bea0b7b9b07b5cea144439098e4f35e7905e27e..f82f690a98cc82d4d9780d4f1e78af049d01ed0b 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of io_pgetevents syscall.
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,6 @@
 
 #include "tests.h"
 #include <unistd.h>
-#include <asm/unistd.h>
 #include "scno.h"
 
 #if defined __NR_io_setup && defined __NR_io_pgetevents
index 35404535b814fa2463d432562a1bf460bee6816d..4411e114918585cc44ec97950e5258708abb6e75 100644 (file)
@@ -2,13 +2,14 @@
  * This file is part of alarm strace test.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_alarm
 
@@ -18,8 +19,8 @@
 int
 main(void)
 {
-       int rc = syscall(__NR_alarm, (unsigned long) 0xffffffff0000002aULL);
-       printf("alarm(%u) = %d\n", 42, rc);
+       const unsigned long arg = (unsigned long) 0xffffffff0000002aULL;
+       printf("alarm(%u) = %s\n", 42, sprintrc(syscall(__NR_alarm, arg)));
 
        puts("+++ exited with 0 +++");
        return 0;
index a69adc39aae5c8f3286452eb38d038836f5e40da..dcea6f1dbd126873672f5342cbb570754fe0d830 100644 (file)
@@ -2,6 +2,7 @@
  * Check decoding of fault injected exit_group syscall.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -9,7 +10,7 @@
 
 #include "tests.h"
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 int
 main(void)
index 3b7aed8587326aa1595e9cd3d4b6e181c695b025..4ee6714e1eb42c8580fbee6941e365afce50e9e5 100644 (file)
@@ -2,6 +2,7 @@
  * This file is part of attach-f-p strace test.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -14,7 +15,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <sys/stat.h>
-#include <asm/unistd.h>
+#include "scno.h"
 #include <unistd.h>
 
 #define N 3
index 7a135871c374ea70b6714ae563555d57b919ecde..c25235cd395204d57a8ea9d9d1a7fb11c90470cc 100755 (executable)
@@ -3,7 +3,7 @@
 # Check -bexecve behavior.
 #
 # Copyright (c) 2015 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2015-2018 The strace developers.
+# Copyright (c) 2015-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -16,23 +16,36 @@ run_strace_redir()
        $STRACE "$@" 2> "$LOG"
 }
 
-run_strace_redir -enone ../set_ptracer_any true ||
+run_strace_redir --quiet=personality -enone ../set_ptracer_any true ||
        dump_log_and_fail_with "$STRACE $args: unexpected exit status"
 
-run_strace_redir -enone ../set_ptracer_any false
+run_strace_redir --quiet=personality -enone ../set_ptracer_any false
 [ $? -eq 1 ] ||
        dump_log_and_fail_with "$STRACE $args: unexpected exit status"
 
-run_strace_redir -bexecve -enone ../set_ptracer_any false ||
+run_strace_redir --quiet=personality -bexecve -enone ../set_ptracer_any false ||
        dump_log_and_fail_with "$STRACE $args: unexpected exit status"
 
 pattern_detached='[^:]*strace: Process [1-9][0-9]* detached'
-pattern_personality='[^:]*strace: \[ Process PID=[1-9][0-9]* runs in .* mode. \]'
 
 LC_ALL=C grep -x "$pattern_detached" "$LOG" > /dev/null ||
        dump_log_and_fail_with "$STRACE $args: output mismatch"
 
-if LC_ALL=C grep -E -v -x "($pattern_detached|$pattern_personality)" "$LOG" > /dev/null; then
+if LC_ALL=C grep -E -v -x "$pattern_detached" "$LOG" > /dev/null; then
+       dump_log_and_fail_with "$STRACE $args: unexpected output"
+fi
+
+run_strace_redir --quiet=personality --seccomp-bpf -bexecve -enone ../set_ptracer_any false ||
+       dump_log_and_fail_with "$STRACE $args: unexpected exit status"
+
+pattern_seccomp='[^:]*strace: --seccomp-bpf is not enabled because it is not compatible with -b'
+
+LC_ALL=C grep -x "$pattern_detached" "$LOG" > /dev/null &&
+LC_ALL=C grep -x "$pattern_seccomp" "$LOG" > /dev/null ||
+       dump_log_and_fail_with "$STRACE $args: output mismatch"
+
+pattern_all="$pattern_detached|$pattern_seccomp"
+if LC_ALL=C grep -E -v -x "$pattern_all" "$LOG" > /dev/null; then
        dump_log_and_fail_with "$STRACE $args: unexpected output"
 fi
 
diff --git a/tests/block_reset_run.c b/tests/block_reset_run.c
new file mode 100644 (file)
index 0000000..cba77bf
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ * Execute the specified command with a blocked default signal handler.
+ *
+ * Copyright (c) 2017-2019 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <signal.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+int
+main(int ac, char **av)
+{
+       if (ac < 3)
+               error_msg_and_fail("usage: block_reset_run signo path...");
+
+       sigset_t mask;
+       sigemptyset(&mask);
+       const int signo = atoi(av[1]);
+       if (sigaddset(&mask, signo))
+               perror_msg_and_fail("sigaddset: %s", av[1]);
+       if (sigprocmask(SIG_BLOCK, &mask, NULL))
+               perror_msg_and_fail("sigprocmask");
+       if (signal(signo, SIG_DFL) == SIG_ERR)
+               perror_msg_and_fail("signal: %s", av[1]);
+
+       execvp(av[2], av + 2);
+       perror_msg_and_fail("execvp: %s", av[2]);
+}
index 3e18591d3c300ab995c704ae63520a950e1abe2e..9428692ea6d38c3e17d0ca8dd07e37bd5fe73c13 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Check bpf(BPF_OBJ_GET_INFO_BY_FD) decoding.
  *
- * Copyright (c) 2018-2019 The strace developers.
+ * Copyright (c) 2018-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -21,7 +21,6 @@
 #include <string.h>
 #include <unistd.h>
 #include <sys/sysmacros.h>
-#include <asm/unistd.h>
 
 #include "print_fields.h"
 #include "scno.h"
@@ -88,6 +87,10 @@ print_map_create(void *attr_void, size_t size, long rc)
                printf(", btf_fd=0</dev/null>"
                       ", btf_key_type_id=0, btf_value_type_id=0");
        }
+       if (size > offsetof(struct BPF_MAP_CREATE_struct,
+                           btf_vmlinux_value_type_id)) {
+               printf(", btf_vmlinux_value_type_id=0");
+       }
        printf("}, %zu) = ", size);
        if (rc >= 0)
                printf("%ld<anon_inode:bpf-map>\n", rc);
@@ -206,6 +209,10 @@ print_prog_load(void *attr_void, size_t size, long rc)
                printf(", line_info=NULL");
        if (size > offsetof(struct BPF_PROG_LOAD_struct, line_info_cnt))
                printf(", line_info_cnt=0");
+       if (size > offsetof(struct BPF_PROG_LOAD_struct, attach_btf_id))
+               printf(", attach_btf_id=0");
+       if (size > offsetof(struct BPF_PROG_LOAD_struct, attach_prog_fd))
+               printf(", attach_prog_fd=0</dev/null>");
        printf("}, %zu) = ", size);
        if (rc >= 0)
                printf("%ld<anon_inode:bpf-prog>\n", rc);
@@ -232,8 +239,26 @@ try_bpf(kernel_ulong_t cmd, void (*printer)(void *attr, size_t size, long rc),
 }
 
 int
-main(void)
+main(int ac, char **av)
 {
+       /*
+        * There is a delay when the locked memory is being reclaimed
+        * after a BPF program or map is removed.
+        *
+        * Privileged tools like iproute2 and bpftool workaround this
+        * by raising RLIMIT_MEMLOCK to infinity prior to creating
+        * BPF objects.
+        *
+        * This test is expected to be invoked without extra privileges
+        * and therefore does not have this option.
+        *
+        * The approach taken by this test is serialize all invocations
+        * and insert a delay long enough to let the locked memory be
+        * reclaimed.
+        */
+       lock_file_by_dirname(av[0], "bpf-obj_get_info_by_fd");
+       sleep(1);
+
        struct BPF_MAP_CREATE_struct bpf_map_create_attr = {
                .map_type    = BPF_MAP_TYPE_ARRAY,
                .key_size    = 4,
@@ -260,7 +285,7 @@ main(void)
                .prog_name    = "test_prog",
        };
        size_t bpf_prog_load_attr_sizes[] = {
-               sizeof(bpf_prog_load_attr),
+               BPF_PROG_LOAD_struct_size,
                offsetofend(struct BPF_PROG_LOAD_struct, prog_name),
                offsetofend(struct BPF_PROG_LOAD_struct, prog_flags),
                offsetofend(struct BPF_PROG_LOAD_struct, kern_version),
@@ -331,6 +356,10 @@ main(void)
        if (bpf_map_get_info_attr.info_len >
            offsetof(struct bpf_map_info_struct, ifindex))
                printf(", ifindex=%u", map_info->ifindex);
+       if (bpf_map_get_info_attr.info_len >
+           offsetof(struct bpf_map_info_struct, btf_vmlinux_value_type_id))
+               printf(", btf_vmlinux_value_type_id=%u",
+                      map_info->btf_vmlinux_value_type_id);
        if (bpf_map_get_info_attr.info_len >
            offsetof(struct bpf_map_info_struct, netns_dev))
                printf(", netns_dev=makedev(%#x, %#x)",
diff --git a/tests/bpf-success-long-y.c b/tests/bpf-success-long-y.c
new file mode 100644 (file)
index 0000000..d0e9b2a
--- /dev/null
@@ -0,0 +1,3 @@
+#define INJECT_RETVAL ((long) 0xbadc0de1e55beefULL)
+#define FD0_PATH "</dev/full>"
+#include "bpf.c"
diff --git a/tests/bpf-success-long-y.test b/tests/bpf-success-long-y.test
new file mode 100755 (executable)
index 0000000..5ed7e85
--- /dev/null
@@ -0,0 +1,16 @@
+:#!/bin/sh -efu
+#
+# Copyright (c) 2018-2020 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/scno_tampering.sh"
+
+case "$SIZEOF_LONG" in
+       4) rval=508935919;;
+       8) rval=841540765612359407;;
+esac
+
+run_strace -a20 -y -e trace=bpf -e inject=bpf:retval="${rval}" ../bpf-success-long-y < /dev/full > "$EXP"
+match_diff "$LOG" "$EXP"
index fd29ab442276d4ccbb4530965a7b5454d3e069e9..4f58ca294df30b4db692f9eed9ef3045fece3c9f 100644 (file)
@@ -2,7 +2,7 @@
  * Check bpf syscall decoding.
  *
  * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2019 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -16,7 +16,6 @@
 #include <string.h>
 #include <unistd.h>
 
-#include <asm/unistd.h>
 #include "scno.h"
 
 #ifdef HAVE_LINUX_BPF_H
@@ -28,6 +27,8 @@
 
 #include "xlat.h"
 #include "xlat/bpf_commands.h"
+#include "xlat/bpf_map_types.h"
+#include "xlat/bpf_prog_types.h"
 
 #if defined MPERS_IS_m32 || SIZEOF_KERNEL_LONG_T > 4
 # define BIG_ADDR(addr64_, addr32_) addr64_
 # define BIG_ADDR_MAYBE(addr_)
 #endif
 
+#ifndef FD0_PATH
+# define FD0_PATH ""
+#endif
+
 #ifndef HAVE_STRUCT_BPF_INSN
 struct bpf_insn {
        uint8_t code;
@@ -74,6 +79,12 @@ union bpf_attr_data {
        BPF_ATTR_DATA_FIELD(BPF_BTF_LOAD);
        BPF_ATTR_DATA_FIELD(BPF_BTF_GET_FD_BY_ID);
        BPF_ATTR_DATA_FIELD(BPF_TASK_FD_QUERY);
+       BPF_ATTR_DATA_FIELD(BPF_MAP_FREEZE);
+       BPF_ATTR_DATA_FIELD(BPF_MAP_LOOKUP_BATCH);
+       BPF_ATTR_DATA_FIELD(BPF_MAP_UPDATE_BATCH);
+       BPF_ATTR_DATA_FIELD(BPF_MAP_DELETE_BATCH);
+       BPF_ATTR_DATA_FIELD(BPF_LINK_CREATE);
+       BPF_ATTR_DATA_FIELD(BPF_LINK_UPDATE);
        char char_data[256];
 };
 
@@ -108,8 +119,8 @@ sys_bpf(kernel_ulong_t cmd, kernel_ulong_t attr, kernel_ulong_t size)
 
 #ifdef INJECT_RETVAL
        if (rc != INJECT_RETVAL)
-               error_msg_and_fail("Got a return value of %ld != %d",
-                                  rc, INJECT_RETVAL);
+               error_msg_and_fail("Got a return value of %ld != %ld",
+                                  rc, (long) INJECT_RETVAL);
 
        static char inj_errstr[4096];
 
@@ -250,6 +261,8 @@ init_BPF_MAP_CREATE_attr7(struct bpf_attr_check *check)
        attr->map_ifindex = ifindex_lo();
 }
 
+static_assert(ARRAY_SIZE(bpf_map_types_xdata) == 28,
+             "The map_type for tests 1 and 2 below needs to be updated");
 static struct bpf_attr_check BPF_MAP_CREATE_checks[] = {
        {
                .data = { .BPF_MAP_CREATE_data = { .map_type = 2 } },
@@ -259,7 +272,7 @@ static struct bpf_attr_check BPF_MAP_CREATE_checks[] = {
        },
        { /* 1 */
                .data = { .BPF_MAP_CREATE_data = {
-                       .map_type = 20,
+                       .map_type = 27,
                        .key_size = 4,
                        .value_size = 8,
                        .max_entries = 256,
@@ -269,7 +282,7 @@ static struct bpf_attr_check BPF_MAP_CREATE_checks[] = {
                        .map_name = "0123456789abcde",
                } },
                .size = offsetof(struct BPF_MAP_CREATE_struct, map_name) + 8,
-               .str = "map_type=BPF_MAP_TYPE_REUSEPORT_SOCKARRAY, key_size=4"
+               .str = "map_type=BPF_MAP_TYPE_RINGBUF, key_size=4"
                       ", value_size=8, max_entries=256"
                       ", map_flags=BPF_F_NO_PREALLOC|BPF_F_NO_COMMON_LRU"
                                   "|BPF_F_NUMA_NODE|BPF_F_RDONLY|BPF_F_WRONLY"
@@ -281,21 +294,21 @@ static struct bpf_attr_check BPF_MAP_CREATE_checks[] = {
        },
        { /* 2 */
                .data = { .BPF_MAP_CREATE_data = {
-                       .map_type = 24,
+                       .map_type = 28,
                        .key_size = 0xface1e55,
                        .value_size = 0xbadc0ded,
                        .max_entries = 0xbeefcafe,
-                       .map_flags = 0xffffff80,
+                       .map_flags = 0xfffff800,
                        .inner_map_fd = 2718281828,
                        .numa_node = -1,
                        .map_name = "",
                        .map_ifindex = 3141592653,
                } },
                .size = offsetofend(struct BPF_MAP_CREATE_struct, map_ifindex),
-               .str = "map_type=0x18 /* BPF_MAP_TYPE_??? */"
+               .str = "map_type=0x1c /* BPF_MAP_TYPE_??? */"
                       ", key_size=4207812181, value_size=3134983661"
                       ", max_entries=3203386110"
-                      ", map_flags=0xffffff80 /* BPF_F_??? */"
+                      ", map_flags=0xfffff800 /* BPF_F_??? */"
                       ", inner_map_fd=-1576685468"
                       ", map_name=\"\", map_ifindex=3141592653",
 
@@ -316,7 +329,8 @@ static struct bpf_attr_check BPF_MAP_CREATE_checks[] = {
                       ", max_entries=3203386110"
                       ", map_flags=BPF_F_NO_PREALLOC|BPF_F_NUMA_NODE"
                                   "|BPF_F_RDONLY|BPF_F_STACK_BUILD_ID"
-                                  "|0xc0dede80",
+                                  "|BPF_F_RDONLY_PROG|BPF_F_CLONE"
+                                  "|BPF_F_MMAPABLE|0xc0ded800",
        },
        { /* 4 */
                .data = { .BPF_MAP_CREATE_data = {
@@ -334,7 +348,8 @@ static struct bpf_attr_check BPF_MAP_CREATE_checks[] = {
                       ", max_entries=3203386110"
                       ", map_flags=BPF_F_NO_PREALLOC|BPF_F_NUMA_NODE"
                                   "|BPF_F_RDONLY|BPF_F_STACK_BUILD_ID"
-                                  "|0xc0dede80"
+                                  "|BPF_F_RDONLY_PROG|BPF_F_CLONE"
+                                  "|BPF_F_MMAPABLE|0xc0ded800"
                       ", inner_map_fd=-1576685468",
        },
        { /* 5 */
@@ -353,7 +368,8 @@ static struct bpf_attr_check BPF_MAP_CREATE_checks[] = {
                       ", max_entries=3203386110"
                       ", map_flags=BPF_F_NO_PREALLOC|BPF_F_NUMA_NODE"
                                   "|BPF_F_RDONLY|BPF_F_STACK_BUILD_ID"
-                                  "|0xc0dede80"
+                                  "|BPF_F_RDONLY_PROG|BPF_F_CLONE"
+                                  "|BPF_F_MMAPABLE|0xc0ded800"
                       ", inner_map_fd=-1576685468"
                       ", numa_node=4294967295 /* NUMA_NO_NODE */",
        },
@@ -374,7 +390,8 @@ static struct bpf_attr_check BPF_MAP_CREATE_checks[] = {
                       ", max_entries=3203386110"
                       ", map_flags=BPF_F_NO_PREALLOC|BPF_F_NUMA_NODE"
                                   "|BPF_F_RDONLY|BPF_F_STACK_BUILD_ID"
-                                  "|0xc0dede80"
+                                  "|BPF_F_RDONLY_PROG|BPF_F_CLONE"
+                                  "|BPF_F_MMAPABLE|0xc0ded800"
                       ", inner_map_fd=-1576685468"
                       ", numa_node=4294967295 /* NUMA_NO_NODE */"
                       ", map_name=\"fedcba987654321\"...",
@@ -396,7 +413,8 @@ static struct bpf_attr_check BPF_MAP_CREATE_checks[] = {
                       ", max_entries=3203386110"
                       ", map_flags=BPF_F_NO_PREALLOC|BPF_F_NUMA_NODE"
                                   "|BPF_F_RDONLY|BPF_F_STACK_BUILD_ID"
-                                  "|0xc0dede80"
+                                  "|BPF_F_RDONLY_PROG|BPF_F_CLONE"
+                                  "|BPF_F_MMAPABLE|0xc0ded800"
                       ", inner_map_fd=-1576685468"
                       ", numa_node=4294967295 /* NUMA_NO_NODE */"
                       ", map_name=\"0123456789abcde\""
@@ -416,12 +434,34 @@ static struct bpf_attr_check BPF_MAP_CREATE_checks[] = {
                       ", value_size=0"
                       ", max_entries=0"
                       ", map_flags=0"
-                      ", inner_map_fd=0"
+                      ", inner_map_fd=0" FD0_PATH
+                      ", map_name=\"\""
+                      ", map_ifindex=0"
+                      ", btf_fd=-1159983635"
+                      ", btf_key_type_id=4207869677"
+                      ", btf_value_type_id=3405705229"
+       },
+       { /* 9 */
+               .data = { .BPF_MAP_CREATE_data = {
+                       .btf_fd = 0xbadc0ded,
+                       .btf_key_type_id = 0xfacefeed,
+                       .btf_value_type_id = 0xcafef00d,
+                       .btf_vmlinux_value_type_id = 0xdeadc0de,
+               } },
+               .size = offsetofend(struct BPF_MAP_CREATE_struct,
+                                   btf_vmlinux_value_type_id),
+               .str = "map_type=BPF_MAP_TYPE_UNSPEC"
+                      ", key_size=0"
+                      ", value_size=0"
+                      ", max_entries=0"
+                      ", map_flags=0"
+                      ", inner_map_fd=0" FD0_PATH
                       ", map_name=\"\""
                       ", map_ifindex=0"
                       ", btf_fd=-1159983635"
                       ", btf_key_type_id=4207869677"
                       ", btf_value_type_id=3405705229"
+                      ", btf_vmlinux_value_type_id=3735929054"
        },
 };
 
@@ -435,10 +475,12 @@ static const struct bpf_attr_check BPF_MAP_LOOKUP_ELEM_checks[] = {
                .data = { .BPF_MAP_LOOKUP_ELEM_data = {
                        .map_fd = -1,
                        .key = 0xdeadbeef,
-                       .value = 0xbadc0ded
+                       .value = 0xbadc0ded,
+                       .flags = 4
                } },
-               .size = offsetofend(struct BPF_MAP_LOOKUP_ELEM_struct, value),
+               .size = offsetofend(struct BPF_MAP_LOOKUP_ELEM_struct, flags),
                .str = "map_fd=-1, key=0xdeadbeef, value=0xbadc0ded"
+                      ", flags=BPF_F_LOCK"
        }
 };
 
@@ -496,6 +538,14 @@ static const struct bpf_attr_check BPF_MAP_GET_NEXT_KEY_checks[] = {
        }
 };
 
+static const struct bpf_attr_check BPF_MAP_FREEZE_checks[] = {
+       {
+               .data = { .BPF_MAP_FREEZE_data = { .map_fd = -1 } },
+               .size = offsetofend(struct BPF_MAP_FREEZE_struct, map_fd),
+               .str = "map_fd=-1"
+       }
+};
+
 static const struct bpf_insn insns[] = {
        {
                .code = 0x95,
@@ -556,7 +606,7 @@ print_BPF_PROG_LOAD_attr3(const struct bpf_attr_check *check, unsigned long addr
               ", insns=" INSNS_FMT ", license=\"%s\", log_level=2718281828"
               ", log_size=%u, log_buf=%p"
               ", kern_version=KERNEL_VERSION(51966, 240, 13)"
-              ", prog_flags=0x4 /* BPF_F_??? */"
+              ", prog_flags=0x10 /* BPF_F_??? */"
               ", prog_name=\"0123456789abcde\"..., prog_ifindex=3203399405",
               (unsigned int) ARRAY_SIZE(insns), INSNS_ARG, license,
               log_buf_size, get_log_buf_tail());
@@ -582,13 +632,16 @@ print_BPF_PROG_LOAD_attr4(const struct bpf_attr_check *check, unsigned long addr
               ", license=\"%s\", log_level=2718281828, log_size=4"
               ", log_buf=\"log \"..."
               ", kern_version=KERNEL_VERSION(51966, 240, 13)"
-              ", prog_flags=BPF_F_STRICT_ALIGNMENT|BPF_F_ANY_ALIGNMENT|0x4"
+              ", prog_flags=BPF_F_STRICT_ALIGNMENT|BPF_F_ANY_ALIGNMENT"
+              "|BPF_F_TEST_RND_HI32|BPF_F_TEST_STATE_FREQ|0x10"
               ", prog_name=\"0123456789abcde\"..., prog_ifindex=%s"
               ", expected_attach_type=BPF_CGROUP_INET6_BIND",
               (unsigned int) ARRAY_SIZE(insns), INSNS_ARG,
               license, IFINDEX_LO_STR);
 }
 
+static_assert(ARRAY_SIZE(bpf_prog_types_xdata) == 31,
+             "The prog_type for test 5 below needs to be updated");
 static struct bpf_attr_check BPF_PROG_LOAD_checks[] = {
        {
                .data = { .BPF_PROG_LOAD_data = { .prog_type = 1 } },
@@ -598,7 +651,7 @@ static struct bpf_attr_check BPF_PROG_LOAD_checks[] = {
        },
        { /* 1 */
                .data = { .BPF_PROG_LOAD_data = {
-                       .prog_type = 22,
+                       .prog_type = 31,
                        .insn_cnt = 0xbadc0ded,
                        .insns = 0,
                        .license = 0,
@@ -609,7 +662,7 @@ static struct bpf_attr_check BPF_PROG_LOAD_checks[] = {
                        .prog_flags = 0,
                } },
                .size = offsetofend(struct BPF_PROG_LOAD_struct, prog_flags),
-               .str = "prog_type=0x16 /* BPF_PROG_TYPE_??? */"
+               .str = "prog_type=0x1f /* BPF_PROG_TYPE_??? */"
                       ", insn_cnt=3134983661, insns=NULL, license=NULL"
                       ", log_level=42, log_size=3141592653, log_buf=NULL"
                       ", kern_version=KERNEL_VERSION(51966, 240, 13)"
@@ -629,7 +682,7 @@ static struct bpf_attr_check BPF_PROG_LOAD_checks[] = {
                        .prog_name = "fedcba987654321",
                } },
                .size = offsetofend(struct BPF_PROG_LOAD_struct, prog_name),
-               .str = "prog_type=BPF_PROG_TYPE_SK_REUSEPORT"
+               .str = "prog_type=BPF_PROG_TYPE_LIRC_MODE2"
                       ", insn_cnt=3134983661"
                       ", insns=" BIG_ADDR("0xffffffff00000000", "NULL")
                       ", license=" BIG_ADDR("0xffffffff00000000", "NULL")
@@ -646,7 +699,7 @@ static struct bpf_attr_check BPF_PROG_LOAD_checks[] = {
                        .log_level = 2718281828U,
                        .log_size = log_buf_size,
                        .kern_version = 0xcafef00d,
-                       .prog_flags = 4,
+                       .prog_flags = 16,
                        .prog_name = "0123456789abcdef",
                        .prog_ifindex = 0xbeeffeed,
                } },
@@ -661,7 +714,7 @@ static struct bpf_attr_check BPF_PROG_LOAD_checks[] = {
                        .log_level = 2718281828U,
                        .log_size = 4,
                        .kern_version = 0xcafef00d,
-                       .prog_flags = 7,
+                       .prog_flags = 0x1f,
                        .prog_name = "0123456789abcdef",
                        .expected_attach_type = 9,
                } },
@@ -671,6 +724,30 @@ static struct bpf_attr_check BPF_PROG_LOAD_checks[] = {
                .print_fn = print_BPF_PROG_LOAD_attr4
        },
        { /* 5 */
+               .data = { .BPF_PROG_LOAD_data = {
+                       .prog_type = 30,
+                       .insn_cnt = 0xbadc0ded,
+                       .insns = 0xffffffff00000000,
+                       .license = 0xffffffff00000000,
+                       .log_level = 2718281828U,
+                       .log_size = log_buf_size,
+                       .log_buf = 0xffffffff00000000,
+                       .kern_version = 0xcafef00d,
+                       .prog_flags = 1,
+                       .prog_name = "fedcba987654321",
+               } },
+               .size = offsetofend(struct BPF_PROG_LOAD_struct, prog_name),
+               .str = "prog_type=BPF_PROG_TYPE_SK_LOOKUP"
+                      ", insn_cnt=3134983661"
+                      ", insns=" BIG_ADDR("0xffffffff00000000", "NULL")
+                      ", license=" BIG_ADDR("0xffffffff00000000", "NULL")
+                      ", log_level=2718281828, log_size=4096"
+                      ", log_buf=" BIG_ADDR("0xffffffff00000000", "NULL")
+                      ", kern_version=KERNEL_VERSION(51966, 240, 13)"
+                      ", prog_flags=BPF_F_STRICT_ALIGNMENT"
+                      ", prog_name=\"fedcba987654321\"",
+       },
+       { /* 6 */
                .data = { .BPF_PROG_LOAD_data = {
                        .prog_flags = 2,
                        .expected_attach_type = 17,
@@ -680,10 +757,12 @@ static struct bpf_attr_check BPF_PROG_LOAD_checks[] = {
                        .func_info_cnt = 0xdad3bef4,
                        .line_info_rec_size = 0xdad5bef6,
                        .line_info = 0xfac5fed5fac7fed8,
-                       .line_info_cnt = 0xdad7bef8
+                       .line_info_cnt = 0xdad7bef8,
+                       .attach_btf_id = 0xdad7befa,
+                       .attach_prog_fd = 0xbadc0def,
                } },
                .size = offsetofend(struct BPF_PROG_LOAD_struct,
-                                   line_info_cnt),
+                                   attach_prog_fd),
                .str = "prog_type=BPF_PROG_TYPE_UNSPEC"
                       ", insn_cnt=0"
                       ", insns=NULL"
@@ -703,6 +782,8 @@ static struct bpf_attr_check BPF_PROG_LOAD_checks[] = {
                       ", line_info_rec_size=3671441142"
                       ", line_info=0xfac5fed5fac7fed8"
                       ", line_info_cnt=3671572216"
+                      ", attach_btf_id=3671572218"
+                      ", attach_prog_fd=-1159983633"
        },
 };
 
@@ -717,7 +798,7 @@ static struct bpf_attr_check BPF_OBJ_PIN_checks[] = {
        {
                .data = { .BPF_OBJ_PIN_data = { .pathname = 0 } },
                .size = offsetofend(struct BPF_OBJ_PIN_struct, pathname),
-               .str = "pathname=NULL, bpf_fd=0"
+               .str = "pathname=NULL, bpf_fd=0" FD0_PATH
        },
        {
                .data = { .BPF_OBJ_PIN_data = {
@@ -725,7 +806,7 @@ static struct bpf_attr_check BPF_OBJ_PIN_checks[] = {
                } },
                .size = offsetofend(struct BPF_OBJ_PIN_struct, pathname),
                .str = "pathname=" BIG_ADDR("0xffffffffffffffff", "0xffffffff")
-                      ", bpf_fd=0",
+                      ", bpf_fd=0" FD0_PATH,
        },
        {
                .data = { .BPF_OBJ_PIN_data = { .bpf_fd = -1 } },
@@ -751,7 +832,7 @@ static const struct bpf_attr_check BPF_PROG_ATTACH_checks[] = {
        {
                .data = { .BPF_PROG_ATTACH_data = { .target_fd = -1 } },
                .size = offsetofend(struct BPF_PROG_ATTACH_struct, target_fd),
-               .str = "target_fd=-1, attach_bpf_fd=0"
+               .str = "target_fd=-1, attach_bpf_fd=0" FD0_PATH
                       ", attach_type=BPF_CGROUP_INET_INGRESS, attach_flags=0"
        },
        {
@@ -759,13 +840,28 @@ static const struct bpf_attr_check BPF_PROG_ATTACH_checks[] = {
                        .target_fd = -1,
                        .attach_bpf_fd = -2,
                        .attach_type = 2,
-                       .attach_flags = 1
+                       .attach_flags = 7
                } },
                .size = offsetofend(struct BPF_PROG_ATTACH_struct, attach_flags),
                .str = "target_fd=-1, attach_bpf_fd=-2"
                       ", attach_type=BPF_CGROUP_INET_SOCK_CREATE"
-                      ", attach_flags=BPF_F_ALLOW_OVERRIDE"
-       }
+                      ", attach_flags=BPF_F_ALLOW_OVERRIDE|BPF_F_ALLOW_MULTI"
+                                      "|BPF_F_REPLACE"
+       },
+       {
+               .data = { .BPF_PROG_ATTACH_data = {
+                       .target_fd = -1,
+                       .attach_bpf_fd = -2,
+                       .attach_type = 2,
+                       .attach_flags = 0xf8,
+                       .replace_bpf_fd = -3,
+               } },
+               .size = offsetofend(struct BPF_PROG_ATTACH_struct, replace_bpf_fd),
+               .str = "target_fd=-1, attach_bpf_fd=-2"
+                      ", attach_type=BPF_CGROUP_INET_SOCK_CREATE"
+                      ", attach_flags=0xf8 /* BPF_F_??? */"
+                      ", replace_bpf_fd=-3"
+       },
 };
 
 
@@ -810,6 +906,33 @@ static const struct bpf_attr_check BPF_PROG_TEST_RUN_checks[] = {
                       ", data_in=0xfacef11dbadc2ded"
                       ", data_out=0xfacef33dbadc4ded"
                       ", repeat=4207410904, duration=4207541978}"
+       },
+       {
+               .data = { .BPF_PROG_TEST_RUN_data = {
+                       .prog_fd = -1,
+                       .retval = 0xfac1fed2,
+                       .data_size_in = 0xfac3fed4,
+                       .data_size_out = 0xfac5fed6,
+                       .data_in = (uint64_t) 0xfacef11dbadc2dedULL,
+                       .data_out = (uint64_t) 0xfacef33dbadc4dedULL,
+                       .repeat = 0xfac7fed8,
+                       .duration = 0xfac9feda,
+                       .ctx_size_in = 0xfacbfedc,
+                       .ctx_size_out = 0xfacdfede,
+                       .ctx_in = (uint64_t) 0xfacef55dbadc6dedULL,
+                       .ctx_out = (uint64_t) 0xfacef77dbadc8dedULL
+               } },
+               .size = offsetofend(struct BPF_PROG_TEST_RUN_struct, ctx_out),
+               .str = "test={prog_fd=-1, retval=4207017682"
+                      ", data_size_in=4207148756, data_size_out=4207279830"
+                      ", data_in=0xfacef11dbadc2ded"
+                      ", data_out=0xfacef33dbadc4ded"
+                      ", repeat=4207410904"
+                      ", duration=4207541978"
+                      ", ctx_size_in=4207673052"
+                      ", ctx_size_out=4207804126"
+                      ", ctx_in=0xfacef55dbadc6ded"
+                      ", ctx_out=0xfacef77dbadc8ded}"
        }
 };
 
@@ -855,6 +978,7 @@ static const struct bpf_attr_check BPF_PROG_GET_NEXT_ID_checks[] = {
 };
 
 #define BPF_MAP_GET_NEXT_ID_checks BPF_PROG_GET_NEXT_ID_checks
+#define BPF_BTF_GET_NEXT_ID_checks BPF_PROG_GET_NEXT_ID_checks
 
 static const struct bpf_attr_check BPF_PROG_GET_FD_BY_ID_checks[] = {
        {
@@ -953,8 +1077,8 @@ print_BPF_PROG_QUERY_attr4(const struct bpf_attr_check *check, unsigned long add
        printf("query={target_fd=-1153374643"
               ", attach_type=0xfeedface /* BPF_??? */"
               ", query_flags=BPF_F_QUERY_EFFECTIVE|0xdeadf00c"
-              ", attach_flags=BPF_F_ALLOW_MULTI|0xbeefcafc"
-#if defined(INJECT_RETVAL) && INJECT_RETVAL > 0
+              ", attach_flags=BPF_F_ALLOW_MULTI|BPF_F_REPLACE|0xbeefcaf8"
+#if defined(INJECT_RETVAL)
               ", prog_ids=[0, 1, 4294967295, 2718281828], prog_cnt=4}"
 #else
               ", prog_ids=%p, prog_cnt=4}", prog_load_ids_ptr
@@ -981,8 +1105,8 @@ print_BPF_PROG_QUERY_attr5(const struct bpf_attr_check *check, unsigned long add
        printf("query={target_fd=-1153374643"
               ", attach_type=0xfeedface /* BPF_??? */"
               ", query_flags=BPF_F_QUERY_EFFECTIVE|0xdeadf00c"
-              ", attach_flags=BPF_F_ALLOW_MULTI|0xbeefcafc"
-#if defined(INJECT_RETVAL) && INJECT_RETVAL > 0
+              ", attach_flags=BPF_F_ALLOW_MULTI|BPF_F_REPLACE|0xbeefcaf8"
+#if defined(INJECT_RETVAL)
               ", prog_ids=[0, 1, 4294967295, 2718281828, ... /* %p */]"
               ", prog_cnt=5}",
               prog_load_ids_ptr + ARRAY_SIZE(prog_load_ids)
@@ -1003,13 +1127,13 @@ static struct bpf_attr_check BPF_PROG_QUERY_checks[] = {
        { /* 1 */
                .data = { .BPF_PROG_QUERY_data = {
                        .target_fd = 3141592653U,
-                       .attach_type = 16,
+                       .attach_type = 37,
                        .query_flags = 1,
                        .attach_flags = 3,
                } },
                .size = offsetofend(struct BPF_PROG_QUERY_struct, attach_flags),
                .str = "query={target_fd=-1153374643"
-                      ", attach_type=BPF_LIRC_MODE2"
+                      ", attach_type=BPF_XDP"
                       ", query_flags=BPF_F_QUERY_EFFECTIVE"
                       ", attach_flags=BPF_F_ALLOW_OVERRIDE|BPF_F_ALLOW_MULTI"
                       ", prog_ids=NULL, prog_cnt=0}",
@@ -1017,17 +1141,17 @@ static struct bpf_attr_check BPF_PROG_QUERY_checks[] = {
        { /* 2 */
                .data = { .BPF_PROG_QUERY_data = {
                        .target_fd = 3141592653U,
-                       .attach_type = 18,
+                       .attach_type = 38,
                        .query_flags = 0xfffffffe,
-                       .attach_flags = 0xfffffffc,
+                       .attach_flags = 0xfffffff8,
                        .prog_ids = 0xffffffffffffffffULL,
                        .prog_cnt = 2718281828,
                } },
                .size = offsetofend(struct BPF_PROG_QUERY_struct, prog_cnt),
                .str = "query={target_fd=-1153374643"
-                      ", attach_type=0x12 /* BPF_??? */"
+                      ", attach_type=0x26 /* BPF_??? */"
                       ", query_flags=0xfffffffe /* BPF_F_QUERY_??? */"
-                      ", attach_flags=0xfffffffc /* BPF_F_??? */"
+                      ", attach_flags=0xfffffff8 /* BPF_F_??? */"
                       ", prog_ids="
                       BIG_ADDR("0xffffffffffffffff", "0xffffffff")
                       ", prog_cnt=2718281828}",
@@ -1045,7 +1169,7 @@ static struct bpf_attr_check BPF_PROG_QUERY_checks[] = {
                .str = "query={target_fd=-1153374643"
                       ", attach_type=0xfeedface /* BPF_??? */"
                       ", query_flags=BPF_F_QUERY_EFFECTIVE|0xdeadf00c"
-                      ", attach_flags=BPF_F_ALLOW_MULTI|0xbeefcafc"
+                      ", attach_flags=BPF_F_ALLOW_MULTI|BPF_F_REPLACE|0xbeefcaf8"
                       ", prog_ids=" BIG_ADDR_MAYBE("0xffffffffffffffff") "[]"
                       ", prog_cnt=0}",
        },
@@ -1091,7 +1215,7 @@ static struct bpf_attr_check BPF_RAW_TRACEPOINT_OPEN_checks[] = {
                .data = { .BPF_RAW_TRACEPOINT_OPEN_data = { .name = 0 } },
                .size = offsetofend(struct BPF_RAW_TRACEPOINT_OPEN_struct,
                                    name),
-               .str = "raw_tracepoint={name=NULL, prog_fd=0}",
+               .str = "raw_tracepoint={name=NULL, prog_fd=0" FD0_PATH "}",
        },
        { /* 1 */
                .data = { .BPF_RAW_TRACEPOINT_OPEN_data = {
@@ -1165,16 +1289,16 @@ static const struct bpf_attr_check BPF_BTF_GET_FD_BY_ID_checks[] = {
 
 static const struct bpf_attr_check BPF_TASK_FD_QUERY_checks[] = {
        {
-               .data = { .BPF_TASK_FD_QUERY_data = { .pid = 0xdeadbeef } },
+               .data = { .BPF_TASK_FD_QUERY_data = { .pid = 1735928559 } },
                .size = offsetofend(struct BPF_TASK_FD_QUERY_struct, pid),
-               .str = "task_fd_query={pid=3735928559, fd=0, flags=0"
-                      ", buf_len=0, buf=NULL, prog_id=0"
+               .str = "task_fd_query={pid=1735928559, fd=0" FD0_PATH
+                      ", flags=0, buf_len=0, buf=NULL, prog_id=0"
                       ", fd_type=BPF_FD_TYPE_RAW_TRACEPOINT"
                       ", probe_offset=0, probe_addr=0}"
        },
        { /* 1 */
                .data = { .BPF_TASK_FD_QUERY_data = {
-                       .pid = 0xcafef00d,
+                       .pid = 1405705229,
                        .fd = 0xdeadbeef,
                        .flags = 0xfacefeed,
                        .buf_len = 0xdefaced,
@@ -1185,7 +1309,7 @@ static const struct bpf_attr_check BPF_TASK_FD_QUERY_checks[] = {
                        .probe_addr = 0xfac5fed5fac7fed8
                } },
                .size = offsetofend(struct BPF_TASK_FD_QUERY_struct, probe_addr),
-               .str = "task_fd_query={pid=3405705229"
+               .str = "task_fd_query={pid=1405705229"
                       ", fd=-559038737"
                       ", flags=4207869677"
                       ", buf_len=233811181"
@@ -1197,6 +1321,117 @@ static const struct bpf_attr_check BPF_TASK_FD_QUERY_checks[] = {
        }
 };
 
+static const struct bpf_attr_check BPF_MAP_LOOKUP_BATCH_checks[] = {
+       {
+               .data = { .BPF_MAP_LOOKUP_BATCH_data = { .map_fd = -1 } },
+               .size = offsetofend(struct BPF_MAP_LOOKUP_BATCH_struct, map_fd ),
+               .str = "batch={in_batch=NULL, out_batch=NULL, keys=NULL"
+                      ", values=NULL, count=0, map_fd=-1, elem_flags=BPF_ANY"
+                      ", flags=0}"
+       },
+       {
+               .data = { .BPF_MAP_LOOKUP_BATCH_data = {
+                       .in_batch = 0xfacefeed,
+                       .out_batch = 0xbadc0ded,
+                       .keys = 0xdeadf00d,
+                       .values = 0xfffffffe,
+                       .count = 3,
+                       .map_fd = -1,
+                       .elem_flags = 4,
+                       .flags = 4
+               } },
+               .size = offsetofend(struct BPF_MAP_LOOKUP_BATCH_struct, flags),
+               .str = "batch={in_batch=0xfacefeed, out_batch=0xbadc0ded"
+                      ", keys=0xdeadf00d, values=0xfffffffe, count=3"
+                      ", map_fd=-1, elem_flags=BPF_F_LOCK, flags=0x4}"
+       }
+};
+
+static const struct bpf_attr_check BPF_MAP_UPDATE_BATCH_checks[] = {
+       {
+               .data = { .BPF_MAP_UPDATE_BATCH_data = { .map_fd = -1 } },
+               .size = offsetofend(struct BPF_MAP_UPDATE_BATCH_struct, map_fd ),
+               .str = "batch={keys=NULL, values=NULL, count=0, map_fd=-1"
+                      ", elem_flags=BPF_ANY, flags=0}"
+       },
+       {
+               .data = { .BPF_MAP_UPDATE_BATCH_data = {
+                       .keys = 0xdeadf00d,
+                       .values = 0xfffffffe,
+                       .count = 3,
+                       .map_fd = -1,
+                       .elem_flags = 4,
+                       .flags = 4
+               } },
+               .size = offsetofend(struct BPF_MAP_UPDATE_BATCH_struct, flags),
+               .str = "batch={keys=0xdeadf00d, values=0xfffffffe, count=3"
+                      ", map_fd=-1, elem_flags=BPF_F_LOCK, flags=0x4}"
+       }
+};
+
+static const struct bpf_attr_check BPF_MAP_DELETE_BATCH_checks[] = {
+       {
+               .data = { .BPF_MAP_DELETE_BATCH_data = { .map_fd = -1 } },
+               .size = offsetofend(struct BPF_MAP_DELETE_BATCH_struct, map_fd ),
+               .str = "batch={keys=NULL, count=0, map_fd=-1"
+                      ", elem_flags=BPF_ANY, flags=0}"
+       },
+       {
+               .data = { .BPF_MAP_DELETE_BATCH_data = {
+                       .keys = 0xdeadf00d,
+                       .count = 3,
+                       .map_fd = -1,
+                       .elem_flags = 4,
+                       .flags = 4
+               } },
+               .size = offsetofend(struct BPF_MAP_DELETE_BATCH_struct, flags),
+               .str = "batch={keys=0xdeadf00d, count=3, map_fd=-1"
+                      ", elem_flags=BPF_F_LOCK, flags=0x4}"
+       }
+};
+
+static const struct bpf_attr_check BPF_LINK_CREATE_checks[] = {
+       {
+               .data = { .BPF_LINK_CREATE_data = { .prog_fd = -1, .target_fd = -2 } },
+               .size = offsetofend(struct BPF_LINK_CREATE_struct, flags),
+               .str = "link_create={prog_fd=-1, target_fd=-2"
+                      ", attach_type=BPF_CGROUP_INET_INGRESS, flags=0}"
+       },
+       {
+               .data = { .BPF_LINK_CREATE_data = {
+                       .prog_fd = -1,
+                       .target_fd = 0xdeadbeef,
+                       .attach_type = 5,
+                       .flags = 4
+               } },
+               .size = offsetofend(struct BPF_LINK_CREATE_struct, flags),
+               .str = "link_create={prog_fd=-1, target_fd=-559038737"
+                      ", attach_type=BPF_SK_SKB_STREAM_VERDICT, flags=0x4}"
+       }
+};
+
+static const struct bpf_attr_check BPF_LINK_UPDATE_checks[] = {
+       {
+               .data = { .BPF_LINK_UPDATE_data = {
+                       .link_fd = -1,
+                       .new_prog_fd = -2
+               } },
+               .size = offsetofend(struct BPF_LINK_UPDATE_struct, old_prog_fd),
+               .str = "link_update={link_fd=-1, new_prog_fd=-2, flags=0}"
+       },
+       {
+               .data = { .BPF_LINK_UPDATE_data = {
+                       .link_fd = -1,
+                       .new_prog_fd = 0xdeadbeef,
+                       .flags = 4,
+                       .old_prog_fd = 0xdeadf00d
+               } },
+               .size = offsetofend(struct BPF_LINK_UPDATE_struct, old_prog_fd),
+               .str = "link_update={link_fd=-1, new_prog_fd=-559038737"
+                      ", flags=BPF_F_REPLACE, old_prog_fd=-559026163}"
+       }
+};
+
 
 #define CHK(cmd_) \
        { \
@@ -1231,6 +1466,13 @@ main(void)
                CHK(BPF_BTF_GET_FD_BY_ID),
                CHK(BPF_TASK_FD_QUERY),
                CHK(BPF_MAP_LOOKUP_AND_DELETE_ELEM),
+               CHK(BPF_MAP_FREEZE),
+               CHK(BPF_BTF_GET_NEXT_ID),
+               CHK(BPF_MAP_LOOKUP_BATCH),
+               CHK(BPF_MAP_UPDATE_BATCH),
+               CHK(BPF_MAP_DELETE_BATCH),
+               CHK(BPF_LINK_CREATE),
+               CHK(BPF_LINK_UPDATE),
        };
 
        page_size = get_page_size();
index caf40e130f8e5e7418816f6f8b18b91e824cc115..90f990e12e96165e82305b9d7cf912b86e883059 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_brk
 
index f1a26bf32643e6042ec151d4f841053363bbea62..2a474dc4bf5f8051002af544b6e65289a3fd0d1d 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2019 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -815,7 +815,7 @@ btrfs_test_clone_ioctls(void)
                args.dest_offset);
 }
 
-# define BTRFS_COMPRESS_TYPES 2
+# define BTRFS_COMPRESS_TYPES 3
 # define BTRFS_INVALID_COMPRESS (BTRFS_COMPRESS_TYPES + 1)
 
 static void
@@ -886,9 +886,9 @@ btrfs_test_defrag_ioctls(void)
 static const char *
 xlookup(const struct xlat *xlat, const uint64_t val)
 {
-       for (; xlat->str != NULL; xlat++)
-               if (xlat->val == val)
-                       return xlat->str;
+       for (size_t i = 0; i < xlat->size; i++)
+               if (xlat->data[i].val == val)
+                       return xlat->data[i].str;
        return NULL;
 }
 
@@ -2068,7 +2068,7 @@ btrfs_test_features_ioctls(void)
 static void
 btrfs_test_read_ioctls(void)
 {
-       static const struct xlat btrfs_read_cmd[] = {
+       static const struct xlat_data btrfs_read_cmd[] = {
                XLAT(BTRFS_IOC_BALANCE_PROGRESS),
                XLAT(BTRFS_IOC_FS_INFO),
                XLAT(BTRFS_IOC_GET_FEATURES),
index c00023b4fc7b477eb406ee487620c4af51386226..1ec02e34ea04cd7c09657283b6089b31b0a618bb 100644 (file)
@@ -3,12 +3,13 @@
 # This file is part of caps strace test.
 #
 # Copyright (c) 2014-2018 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 BEGIN {
-       cap = "(0|1<<CAP_[A-Z_]+(\\|1<<CAP_[A-Z_]+)*|1<<CAP_[A-Z_]+(\\|1<<CAP_[A-Z_]+){37}\\|0xffffffc0)"
+       cap = "(0|1<<CAP_[A-Z_]+(\\|1<<CAP_[A-Z_]+)*|1<<CAP_[A-Z_]+(\\|1<<CAP_[A-Z_]+){40}\\|0xfffffe00)"
        s_efault = "-1 EFAULT (Bad address)"
        r_efault = "-1 EFAULT \\(Bad address\\)"
        r_einval = "-1 EINVAL \\(Invalid argument\\)"
index 941564aa20df2cc847474c0b579725548f6023c5..9c0030b02abd7d77e2398ea54a3e610e694a151d 100644 (file)
@@ -2,13 +2,13 @@
 #
 # This file is part of caps strace test.
 #
-# Copyright (c) 2014-2018 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2014-2020 Dmitry V. Levin <ldv@altlinux.org>
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 BEGIN {
-       cap = "(0|1<<CAP_[A-Z_]+(\\|1<<CAP_[A-Z_]+)*|1<<CAP_[A-Z_]+(\\|1<<CAP_[A-Z_]+){37}\\|0xffffffc0)"
+       cap = "(0|1<<CAP_[A-Z_]+(\\|1<<CAP_[A-Z_]+)*|1<<CAP_[A-Z_]+(\\|1<<CAP_[A-Z_]+){40}\\|0xfffffe00)"
        s_efault = "-1 EFAULT (Bad address)"
        r_efault = "-1 EFAULT \\(Bad address\\)"
        r_einval = "-1 EINVAL \\(Invalid argument\\)"
index d7c9fbabacaf0e3b8c7c2ae19bb656937fa46af6..f5acd53eab2d5cb30b12cb03c8454af05cec953d 100644 (file)
@@ -1,13 +1,14 @@
 /*
  * Copyright (c) 2016 Anchit Jain <anchitjain1234@gmail.com>
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_chmod
 
index 05fe9af15ec311b361eadfac3a2d594b511d43ec..4b6daea0ed83763b7ba413e292bb3d3cfff0e8cb 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_chown
 
index f272620311a687e11605296f9fe9dfcced3682db..5a0601cb595825e9aaaab91e03278481e4e263b8 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_chown32
 
index 3fc441e3b8d53144ea7823f3125d30df1a20eebf..1cef5f9b7369e36a3edc053e9ee6c8f2e5b617fd 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_chroot
 
index 8e5a12fb2823ee32df5b6a95b5435514ce029ef4..610c75e31b24f8857c354840d90631ee12f2b512 100644 (file)
@@ -2,13 +2,14 @@
  * This file is part of clock_adjtime strace test.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_clock_adjtime
 
index 258c3ac107c3f551ee3d36c2c183b2daf871496a..854fdb3f2d2fef8a832910de3bf8c2a1a9f4cc85 100644 (file)
@@ -2,21 +2,24 @@
  * Check decoding of clock_nanosleep and clock_gettime syscalls.
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <assert.h>
-#include <stdio.h>
-#include <stdint.h>
-#include <signal.h>
-#include <time.h>
-#include <unistd.h>
-#include <sys/time.h>
-#include <asm/unistd.h>
+#include "scno.h"
+
+#ifdef __NR_clock_nanosleep
+
+# include <assert.h>
+# include <stdio.h>
+# include <stdint.h>
+# include <signal.h>
+# include <time.h>
+# include <unistd.h>
+# include <sys/time.h>
 
 static void
 handler(int signo)
@@ -127,3 +130,9 @@ main(void)
        puts("+++ exited with 0 +++");
        return 0;
 }
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_clock_nanosleep")
+
+#endif
index c25240da44bb8a52fc248727e70a676ae380df76..345c3a42e73aa842e3ffd2f341916426a4ed568a 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -11,7 +11,7 @@
 #include <stdint.h>
 #include <time.h>
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_clock_getres \
  && defined __NR_clock_gettime \
diff --git a/tests/clone-flags.c b/tests/clone-flags.c
new file mode 100644 (file)
index 0000000..04bb2c7
--- /dev/null
@@ -0,0 +1,151 @@
+/*
+ * Check decoding of clone flags.
+ *
+ * Copyright (c) 2017-2019 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#include <errno.h>
+#include <limits.h>
+#include <sched.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/wait.h>
+#include <unistd.h>
+
+#define XLAT_MACROS_ONLY
+#include "xlat/clone_flags.h"
+#undef XLAT_MACROS_ONLY
+
+static const int child_exit_status = 42;
+static pid_t pid;
+
+static pid_t
+wait_cloned(pid_t pid, int sig, const char *text)
+{
+       if (pid < 0)
+               perror_msg_and_fail("clone %s", text);
+       int status;
+       pid_t rc = wait(&status);
+       if (sig) {
+               if (rc != pid)
+                       perror_msg_and_fail("unexpected wait rc %d from %s",
+                                           rc, text);
+               if (!WIFEXITED(status) ||
+                   WEXITSTATUS(status) != child_exit_status)
+                       error_msg_and_fail("unexpected wait status %#x from %s",
+                                          status, text);
+       } else {
+               if (rc >= 0)
+                       error_msg_and_fail("unexpected wait rc %d from %s",
+                                          rc, text);
+       }
+       return pid;
+}
+
+#ifdef IA64
+extern int __clone2(int (*)(void *), void *, size_t, int, void *, ...);
+# define do_clone(fn_, stack_, size_, flags_, arg_, ...) \
+       wait_cloned(__clone2((fn_), (stack_), (size_), (flags_), (arg_), \
+                            ## __VA_ARGS__), (flags_) & 0xff, #flags_)
+# define SYSCALL_NAME "clone2"
+# define STACK_SIZE_FMT ", stack_size=%#lx"
+# define STACK_SIZE_ARG child_stack_size,
+#else
+# define do_clone(fn_, stack_, size_, flags_, arg_, ...) \
+       wait_cloned(clone((fn_), (stack_), (flags_), (arg_),    \
+                         ## __VA_ARGS__), (flags_) & 0xff, #flags_)
+# define SYSCALL_NAME "clone"
+# define STACK_SIZE_FMT ""
+# define STACK_SIZE_ARG
+#endif
+
+static int
+child(void *const arg)
+{
+       return child_exit_status;
+}
+
+int
+main(void)
+{
+       const unsigned long child_stack_size = get_page_size();
+       void *const child_stack =
+               tail_alloc(child_stack_size * 2) + child_stack_size;
+
+       const char *child_stack_expected_str = getenv("CHILD_STACK_EXPECTED");
+       const char *child_stack_reported_str = getenv("CHILD_STACK_REPORTED");
+
+       if (!child_stack_expected_str || !child_stack_reported_str) {
+               const unsigned long child_stack_base =
+                       (unsigned long) child_stack / 0x1000;
+               pid = do_clone(child, child_stack, child_stack_size,
+                              SIGCHLD, 0);
+               printf("%s\\(child_stack=(%#lx|%#lx)[[:xdigit:]]{3}"
+                      STACK_SIZE_FMT ", flags=%s\\) = %d\n",
+                      SYSCALL_NAME, child_stack_base, child_stack_base - 1,
+                      STACK_SIZE_ARG "SIGCHLD", pid);
+               return 0;
+       }
+       const unsigned long child_stack_expected =
+               strtoul(child_stack_expected_str, 0, 16);
+       const unsigned long child_stack_reported =
+               strtoul(child_stack_reported_str, 0, 16);
+       const unsigned long child_stack_printed =
+               (unsigned long) child_stack +
+               (child_stack_reported - child_stack_expected);
+
+       pid = do_clone(child, child_stack, child_stack_size, 0, 0);
+       printf("%s(child_stack=%#lx" STACK_SIZE_FMT ", flags=%s) = %d\n",
+              SYSCALL_NAME, child_stack_printed, STACK_SIZE_ARG
+              "0", pid);
+
+       pid = do_clone(child, child_stack, child_stack_size, CLONE_FS, 0);
+       printf("%s(child_stack=%#lx" STACK_SIZE_FMT ", flags=%s) = %d\n",
+              SYSCALL_NAME, child_stack_printed, STACK_SIZE_ARG
+              "CLONE_FS", pid);
+
+       pid = do_clone(child, child_stack, child_stack_size, SIGCHLD, 0);
+       printf("%s(child_stack=%#lx" STACK_SIZE_FMT ", flags=%s) = %d\n",
+              SYSCALL_NAME, child_stack_printed, STACK_SIZE_ARG
+              "SIGCHLD", pid);
+
+       pid = do_clone(child, child_stack, child_stack_size,
+                      CLONE_FS|SIGCHLD, 0);
+       printf("%s(child_stack=%#lx" STACK_SIZE_FMT ", flags=%s) = %d\n",
+              SYSCALL_NAME, child_stack_printed, STACK_SIZE_ARG
+              "CLONE_FS|SIGCHLD", pid);
+
+       TAIL_ALLOC_OBJECT_CONST_PTR(pid_t, ptid);
+       pid = do_clone(child, child_stack, child_stack_size,
+                      CLONE_PARENT_SETTID|SIGCHLD, 0, ptid);
+       printf("%s(child_stack=%#lx" STACK_SIZE_FMT ", flags=%s"
+              ", parent_tid=[%u]) = %d\n",
+              SYSCALL_NAME, child_stack_printed, STACK_SIZE_ARG
+              "CLONE_PARENT_SETTID|SIGCHLD", *ptid, pid);
+
+       char buf[PATH_MAX];
+       if (readlink("/proc/self/fd/0", buf, sizeof(buf) - 1) > 0) {
+               *ptid = 0;
+               pid = do_clone(child, child_stack, child_stack_size,
+                              CLONE_PIDFD|SIGCHLD, 0, ptid);
+               char *fname = 0;
+               if (asprintf(&fname, "/proc/self/fd/%d", *ptid) < 0)
+                       perror_msg_and_fail("asprintf");
+               int rc = readlink(fname, buf, sizeof(buf) - 1);
+               if ((unsigned int) rc >= sizeof(buf))
+                       perror_msg_and_fail("readlink");
+               buf[rc] = '\0';
+               printf("%s(child_stack=%#lx" STACK_SIZE_FMT ", flags=%s"
+                      ", parent_tid=[%u<%s>]) = %d\n",
+                      SYSCALL_NAME, child_stack_printed, STACK_SIZE_ARG
+                      "CLONE_PIDFD|SIGCHLD", *ptid, buf, pid);
+       }
+
+       return 0;
+}
diff --git a/tests/clone-flags.test b/tests/clone-flags.test
new file mode 100755 (executable)
index 0000000..9485afa
--- /dev/null
@@ -0,0 +1,24 @@
+#!/bin/sh -efu
+#
+# Check decoding of clone flags.
+#
+# Copyright (c) 2019-2020 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/init.sh"
+
+case "$STRACE_ARCH" in
+       ia64) syscall=clone2 ;;
+       *) syscall=clone ;;
+esac
+
+# Find out the expected and reported child stack addresses.
+run_strace_match_grep --silence=exits -e signal=none -e trace=$syscall
+CHILD_STACK_EXPECTED="$(sed -n 's/^clone[^(]*(child_stack=(\(0x[[:xdigit:]]\+\)|.*/\1/p' "$EXP")000"
+CHILD_STACK_REPORTED="$(sed -n 's/^clone[^(]*(child_stack=\(0x[[:xdigit:]]\+\),.*/\1/p' "$LOG")"
+export CHILD_STACK_EXPECTED CHILD_STACK_REPORTED
+
+# Use child stack addresses to check decoding.
+run_strace_match_diff -a35 --silence=exits,personality -y -e signal=none -e trace=$syscall
diff --git a/tests/clone3-Xabbrev.c b/tests/clone3-Xabbrev.c
new file mode 100644 (file)
index 0000000..2b7e417
--- /dev/null
@@ -0,0 +1 @@
+#include "clone3.c"
diff --git a/tests/clone3-Xabbrev.gen.test b/tests/clone3-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..39eea6b
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clone3-Xabbrev -a16 -Xabbrev  -e trace=clone3); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a16 -Xabbrev  -e trace=clone3
diff --git a/tests/clone3-Xraw.c b/tests/clone3-Xraw.c
new file mode 100644 (file)
index 0000000..1e1facb
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "clone3.c"
diff --git a/tests/clone3-Xraw.gen.test b/tests/clone3-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..727ea5a
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clone3-Xraw -a16 -Xraw     -e trace=clone3); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a16 -Xraw     -e trace=clone3
diff --git a/tests/clone3-Xverbose.c b/tests/clone3-Xverbose.c
new file mode 100644 (file)
index 0000000..23c45a0
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "clone3.c"
diff --git a/tests/clone3-Xverbose.gen.test b/tests/clone3-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..9955d02
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clone3-Xverbose -a16 -Xverbose -e trace=clone3); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a16 -Xverbose -e trace=clone3
diff --git a/tests/clone3-success-Xabbrev.c b/tests/clone3-success-Xabbrev.c
new file mode 100644 (file)
index 0000000..8df14f9
--- /dev/null
@@ -0,0 +1,2 @@
+#define RETVAL_INJECTED 1
+#include "clone3.c"
diff --git a/tests/clone3-success-Xabbrev.gen.test b/tests/clone3-success-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..a9c16f4
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clone3-success-Xabbrev +clone3-success.test -a16 -Xabbrev); do not edit.
+set -- -a16 -Xabbrev
+. "${srcdir=.}/clone3-success.test"
diff --git a/tests/clone3-success-Xraw.c b/tests/clone3-success-Xraw.c
new file mode 100644 (file)
index 0000000..9a81c75
--- /dev/null
@@ -0,0 +1,3 @@
+#define RETVAL_INJECTED 1
+#define XLAT_RAW 1
+#include "clone3.c"
diff --git a/tests/clone3-success-Xraw.gen.test b/tests/clone3-success-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..d1ed0b0
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clone3-success-Xraw +clone3-success.test -a16 -Xraw); do not edit.
+set -- -a16 -Xraw
+. "${srcdir=.}/clone3-success.test"
diff --git a/tests/clone3-success-Xverbose.c b/tests/clone3-success-Xverbose.c
new file mode 100644 (file)
index 0000000..2b2a3bd
--- /dev/null
@@ -0,0 +1,3 @@
+#define RETVAL_INJECTED 1
+#define XLAT_VERBOSE 1
+#include "clone3.c"
diff --git a/tests/clone3-success-Xverbose.gen.test b/tests/clone3-success-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..3b7a3f8
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clone3-success-Xverbose +clone3-success.test -a16 -Xverbose); do not edit.
+set -- -a16 -Xverbose
+. "${srcdir=.}/clone3-success.test"
diff --git a/tests/clone3-success.c b/tests/clone3-success.c
new file mode 100644 (file)
index 0000000..8df14f9
--- /dev/null
@@ -0,0 +1,2 @@
+#define RETVAL_INJECTED 1
+#include "clone3.c"
diff --git a/tests/clone3-success.test b/tests/clone3-success.test
new file mode 100755 (executable)
index 0000000..4db29f4
--- /dev/null
@@ -0,0 +1,12 @@
+#!/bin/sh -efu
+#
+# Copyright (c) 2019 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/scno_tampering.sh"
+
+run_strace -a10 "$@" -e trace=clone3 -e inject=clone3:retval=42 \
+       "../$NAME" > "$EXP"
+match_diff "$LOG" "$EXP"
diff --git a/tests/clone3.c b/tests/clone3.c
new file mode 100644 (file)
index 0000000..c15cb1d
--- /dev/null
@@ -0,0 +1,629 @@
+/*
+ * Check decoding of clone3 syscall.
+ *
+ * Copyright (c) 2019-2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#include <errno.h>
+#include <stdint.h>
+#include <inttypes.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/wait.h>
+
+#ifdef HAVE_LINUX_SCHED_H
+# include <linux/sched.h>
+#endif
+
+#ifdef HAVE_STRUCT_USER_DESC
+# include <asm/ldt.h>
+#endif
+
+#define XLAT_MACROS_ONLY
+# include "xlat/clone_flags.h"
+# include "xlat/clone3_flags.h"
+#undef XLAT_MACROS_ONLY
+
+#include "scno.h"
+
+#ifndef VERBOSE
+# define VERBOSE 0
+#endif
+#ifndef RETVAL_INJECTED
+# define RETVAL_INJECTED 0
+#endif
+
+struct test_clone_args {
+       uint64_t flags;
+       uint64_t pidfd;
+       uint64_t child_tid;
+       uint64_t parent_tid;
+       uint64_t exit_signal;
+       uint64_t stack;
+       uint64_t stack_size;
+       uint64_t tls;
+       uint64_t set_tid;
+       uint64_t set_tid_size;
+       uint64_t cgroup;
+};
+
+#ifdef HAVE_STRUCT_CLONE_ARGS_CGROUP
+typedef struct clone_args struct_clone_args;
+#else
+typedef struct test_clone_args struct_clone_args;
+#endif
+
+enum validity_flag_bits {
+       STRUCT_VALID_BIT,
+       PIDFD_VALID_BIT,
+       CHILD_TID_VALID_BIT,
+       PARENT_TID_VALID_BIT,
+       TLS_VALID_BIT,
+};
+
+enum validity_flags {
+       FLAG(STRUCT_VALID),
+       FLAG(PIDFD_VALID),
+       FLAG(CHILD_TID_VALID),
+       FLAG(PARENT_TID_VALID),
+       FLAG(TLS_VALID),
+};
+
+#define MAX_SET_TID_SIZE 32
+
+static const int child_exit_status = 42;
+
+#if RETVAL_INJECTED
+static const long injected_retval = 42;
+
+# define INJ_STR " (INJECTED)\n"
+#else /* !RETVAL_INJECTED */
+# define INJ_STR "\n"
+#endif /* RETVAL_INJECTED */
+
+#define ERR(b_) ((1ULL << (b_)) + FAIL_BUILD_ON_ZERO((b_) < 64))
+
+
+#if !RETVAL_INJECTED
+static void
+wait_cloned(int pid)
+{
+       int status;
+
+       errno = 0;
+       while (waitpid(pid, &status, WEXITED | __WCLONE) != pid) {
+               if (errno != EINTR)
+                       perror_msg_and_fail("waitpid(%d)", pid);
+       }
+}
+#endif
+
+static long
+do_clone3_(void *args, kernel_ulong_t size, uint64_t possible_errors, int line)
+{
+       long rc = syscall(__NR_clone3, args, size);
+
+#if RETVAL_INJECTED
+       if (rc != injected_retval)
+               perror_msg_and_fail("%d: Unexpected injected return value "
+                                   "of a clone3() call (%ld instead of %ld)",
+                                   line, rc, injected_retval);
+#else
+
+       static int unimplemented_error = -1;
+
+       if (!(possible_errors & ERR(0))) {
+               if (rc >= 0)
+                       error_msg_and_fail("%d: Unexpected success"
+                                          " of a clone3() call", line);
+               if (unimplemented_error < 0)
+                       unimplemented_error =
+                               (errno == EINVAL) ? ENOSYS : errno;
+       }
+
+       /*
+        * This code works as long as all the errors we care about (EFAULT
+        * and EINVAL so far) fit inside 64 bits, otherwise it should
+        * be rewritten.
+        */
+       if (rc < 0 && errno != unimplemented_error
+           && (errno >= 64 || errno < 0 || !(ERR(errno) & possible_errors))) {
+               perror_msg_and_fail("%d: Unexpected failure of a clone3() call"
+                                   " (got errno %d, expected errno bitmask"
+                                   " %#" PRIx64 ")",
+                                   line, errno, possible_errors);
+       }
+
+       if (!rc)
+               _exit(child_exit_status);
+
+       if (rc > 0 && ((struct_clone_args *) args)->exit_signal)
+               wait_cloned(rc);
+#endif
+
+       return rc;
+}
+
+#define do_clone3(args_, size_, errors_) \
+       do_clone3_((args_), (size_), (errors_), __LINE__)
+
+static inline void
+print_addr64(const char *pfx, uint64_t addr)
+{
+       if (addr)
+               printf("%s%#" PRIx64, pfx, addr);
+       else
+               printf("%sNULL", pfx);
+}
+
+static void
+print_tls(const char *pfx, uint64_t arg_ptr, enum validity_flags vf)
+{
+#if defined HAVE_STRUCT_USER_DESC && defined __i386__
+       if (!(vf & TLS_VALID)) {
+               print_addr64(pfx, arg_ptr);
+               return;
+       }
+
+       struct user_desc *arg = (struct user_desc *) (uintptr_t) arg_ptr;
+
+       printf("%s{entry_number=%d"
+              ", base_addr=%#08x"
+              ", limit=%#08x"
+              ", seg_32bit=%u"
+              ", contents=%u"
+              ", read_exec_only=%u"
+              ", limit_in_pages=%u"
+              ", seg_not_present=%u"
+              ", useable=%u}",
+              pfx,
+              arg->entry_number,
+              arg->base_addr,
+              arg->limit,
+              arg->seg_32bit,
+              arg->contents,
+              arg->read_exec_only,
+              arg->limit_in_pages,
+              arg->seg_not_present,
+              arg->useable);
+#else
+       print_addr64(pfx, arg_ptr);
+#endif
+}
+
+static void
+print_set_tid(uint64_t set_tid, uint64_t set_tid_size)
+{
+       if (!set_tid || set_tid != (uintptr_t) set_tid ||
+           !set_tid_size || set_tid_size > MAX_SET_TID_SIZE) {
+               print_addr64(", set_tid=", set_tid);
+       } else {
+               printf(", set_tid=");
+               int *tids = (int *) (uintptr_t) set_tid;
+               for (unsigned int i = 0; i < set_tid_size; ++i)
+                       printf("%s%d", i ? ", " : "[", tids[i]);
+               printf("]");
+       }
+
+       printf(", set_tid_size=%" PRIu64, set_tid_size);
+}
+
+static inline void
+print_clone3(struct_clone_args *const arg, long rc, kernel_ulong_t sz,
+            enum validity_flags valid,
+            const char *flags_str, const char *es_str)
+{
+       int saved_errno = errno;
+
+       printf("clone3(");
+       if (!(valid & STRUCT_VALID)) {
+               printf("%p", arg);
+               goto out;
+       }
+
+#if XLAT_RAW
+       printf("{flags=%#" PRIx64, (uint64_t) arg->flags);
+#elif XLAT_VERBOSE
+       if (flags_str[0] == '0')
+               printf("{flags=%#" PRIx64, (uint64_t) arg->flags);
+       else
+               printf("{flags=%#" PRIx64 " /* %s */",
+                      (uint64_t) arg->flags, flags_str);
+#else
+       printf("{flags=%s", flags_str);
+#endif
+
+       if (arg->flags & CLONE_PIDFD)
+               print_addr64(", pidfd=", arg->pidfd);
+
+       if (arg->flags & (CLONE_CHILD_SETTID | CLONE_CHILD_CLEARTID)) {
+               if (valid & CHILD_TID_VALID)
+                       printf(", child_tid=[%d]",
+                              *(int *) (uintptr_t) arg->child_tid);
+               else
+                       print_addr64(", child_tid=", arg->child_tid);
+       }
+
+       if (arg->flags & CLONE_PARENT_SETTID)
+               print_addr64(", parent_tid=", arg->parent_tid);
+
+       printf(", exit_signal=%s", es_str);
+       print_addr64(", stack=", arg->stack);
+       printf(", stack_size=%" PRIx64, (uint64_t) arg->stack_size);
+
+       if (arg->flags & CLONE_SETTLS)
+               print_tls("tls=", arg->tls, valid);
+
+       if (sz >= offsetofend(struct_clone_args, set_tid_size) &&
+           (arg->set_tid || arg->set_tid_size))
+               print_set_tid(arg->set_tid, arg->set_tid_size);
+
+       if (sz > offsetof(struct_clone_args, cgroup) &&
+           (arg->cgroup || arg->flags & CLONE_INTO_CGROUP))
+               printf(", cgroup=%" PRIu64, (uint64_t) arg->cgroup);
+
+       printf("}");
+
+       if (rc < 0)
+               goto out;
+
+       bool comma = false;
+
+       if (arg->flags & CLONE_PIDFD) {
+               if (valid & PIDFD_VALID)
+                       printf(" => {pidfd=[%d]",
+                              *(int *) (uintptr_t) arg->pidfd);
+               else
+                       print_addr64(" => {pidfd=", arg->pidfd);
+
+               comma = true;
+       }
+
+       if (arg->flags & CLONE_PARENT_SETTID) {
+               printf(comma ? ", " : " => {");
+
+               if (valid & PARENT_TID_VALID)
+                       printf("parent_tid=[%d]",
+                              *(int *) (uintptr_t) arg->parent_tid);
+               else
+                       print_addr64("parent_tid=", arg->parent_tid);
+
+               comma = true;
+       }
+
+       if (comma)
+               printf("}");
+
+out:
+       errno = saved_errno;
+}
+
+int
+main(int argc, char *argv[])
+{
+       static const struct {
+               struct_clone_args args;
+               uint64_t possible_errors;
+               enum validity_flags vf;
+               const char *flags_str;
+               const char *es_str;
+       } arg_vals[] = {
+               { { .flags = 0 },
+                       ERR(0), 0, "0", "0" },
+               { { .flags = CLONE_PARENT_SETTID },
+                       ERR(0), 0, "CLONE_PARENT_SETTID", "0" },
+
+               /* check clone3_flags/clone_flags interoperation */
+               { { .flags = CLONE_CLEAR_SIGHAND },
+                       ERR(EINVAL) | ERR(0), 0, "CLONE_CLEAR_SIGHAND", "0" },
+               { { .flags = CLONE_PARENT_SETTID | CLONE_CLEAR_SIGHAND },
+                       ERR(EINVAL) | ERR(0), 0,
+                       "CLONE_PARENT_SETTID|CLONE_CLEAR_SIGHAND", "0" },
+
+               { { .set_tid = 0xfacefeedcafebabe },
+                       ERR(E2BIG) | ERR(EINVAL), 0, "0", "0" },
+               { { .set_tid_size = 0xfacecafefeedbabe },
+                       ERR(E2BIG) | ERR(EINVAL), 0, "0", "0" },
+               { { .set_tid = 0xfacefeedcafebabe,
+                   .set_tid_size = MAX_SET_TID_SIZE + 1 },
+                       ERR(E2BIG) | ERR(EINVAL), 0, "0", "0" },
+       };
+       TAIL_ALLOC_OBJECT_CONST_PTR(struct_clone_args, arg);
+       const size_t arg1_size = offsetofend(struct_clone_args, tls);
+       struct_clone_args *const arg1 = tail_alloc(arg1_size);
+       const size_t arg2_size = sizeof(*arg) + 8;
+       struct_clone_args *const arg2 = tail_alloc(arg2_size);
+       TAIL_ALLOC_OBJECT_CONST_PTR(int, pidfd);
+       TAIL_ALLOC_OBJECT_CONST_PTR(int, child_tid);
+       TAIL_ALLOC_OBJECT_CONST_PTR(int, parent_tid);
+       int *const tids = tail_alloc(sizeof(*tids) * MAX_SET_TID_SIZE);
+       long rc;
+
+#if defined HAVE_STRUCT_USER_DESC
+       TAIL_ALLOC_OBJECT_CONST_PTR(struct user_desc, tls);
+
+       fill_memory(tls, sizeof(*tls));
+#else
+       TAIL_ALLOC_OBJECT_CONST_PTR(int, tls);
+#endif
+
+       *pidfd = 0xbadc0ded;
+       *child_tid = 0xdeadface;
+       *parent_tid = 0xfeedbeef;
+       fill_memory(tids, sizeof(*tids) * MAX_SET_TID_SIZE);
+
+       rc = do_clone3(NULL, 0, ERR(EINVAL));
+       printf("clone3(NULL, 0) = %s" INJ_STR, sprintrc(rc));
+
+       rc = do_clone3(arg + 1, sizeof(*arg), ERR(EFAULT));
+       printf("clone3(%p, %zu) = %s" INJ_STR,
+              arg + 1, sizeof(*arg), sprintrc(rc));
+
+       size_t short_size = arg1_size - sizeof(uint64_t);
+       char *short_start = (char *) arg1 + sizeof(uint64_t);
+       rc = do_clone3(short_start, short_size, ERR(EINVAL));
+       printf("clone3(%p, %zu) = %s" INJ_STR,
+              short_start, short_size, sprintrc(rc));
+
+
+       memset(arg, 0, sizeof(*arg));
+       memset(arg1, 0, arg1_size);
+       memset(arg2, 0, arg2_size);
+
+       rc = do_clone3(arg, 64, ERR(0));
+       printf("clone3({flags=0, exit_signal=0, stack=NULL, stack_size=0}, 64)"
+              " = %s" INJ_STR,
+              sprintrc(rc));
+
+       rc = do_clone3(arg, sizeof(*arg) + 8, ERR(EFAULT));
+       printf("clone3({flags=0, exit_signal=0, stack=NULL, stack_size=0, ???}"
+#if RETVAL_INJECTED
+              " => {???}"
+#endif
+              ", %zu) = %s" INJ_STR,
+              sizeof(*arg) + 8, sprintrc(rc));
+
+       rc = do_clone3(arg1, arg1_size, ERR(0));
+       printf("clone3({flags=0, exit_signal=0, stack=NULL, stack_size=0}"
+              ", %zu) = %s" INJ_STR,
+              arg1_size, sprintrc(rc));
+
+       rc = do_clone3(arg2, arg2_size, ERR(0));
+       printf("clone3({flags=0, exit_signal=0, stack=NULL, stack_size=0}"
+              ", %zu) = %s" INJ_STR,
+              arg2_size, sprintrc(rc));
+
+       arg->set_tid = (uintptr_t) tids;
+       arg->set_tid_size = MAX_SET_TID_SIZE;
+       rc = do_clone3(arg, sizeof(*arg), ERR(E2BIG) | ERR(EINVAL));
+       print_clone3(arg, rc, sizeof(*arg), STRUCT_VALID, "0", "0");
+       printf(", %zu) = %s" INJ_STR, sizeof(*arg), sprintrc(rc));
+       memset(arg, 0, sizeof(*arg));
+
+       arg->cgroup = 0xfacefeedbadc0ded;
+       rc = do_clone3(arg, sizeof(*arg), ERR(0) | ERR(E2BIG));
+       print_clone3(arg, rc, sizeof(*arg), STRUCT_VALID, "0", "0");
+       printf(", %zu) = %s" INJ_STR, sizeof(*arg), sprintrc(rc));
+       memset(arg, 0, sizeof(*arg));
+
+       arg->flags = CLONE_INTO_CGROUP;
+       rc = do_clone3(arg, sizeof(*arg), ERR(0) | ERR(EINVAL) | ERR(EBADF));
+       print_clone3(arg, rc, sizeof(*arg), STRUCT_VALID,
+                    "CLONE_INTO_CGROUP", "0");
+       printf(", %zu) = %s" INJ_STR, sizeof(*arg), sprintrc(rc));
+       memset(arg, 0, sizeof(*arg));
+
+       /*
+        * NB: the following check is purposefully fragile (it will break
+        *     when system's struct clone_args has additional fields,
+        *     so it signalises that the decoder needs to be updated.
+        */
+       arg2[1].flags = 0xfacefeeddeadc0de;
+       arg2->exit_signal = 0xdeadface00000000ULL | SIGCHLD;
+       rc = do_clone3(arg2, sizeof(*arg2) + 8, ERR(E2BIG));
+       printf("clone3({flags=0, exit_signal=%llu, stack=NULL, stack_size=0"
+              ", /* bytes %zu..%zu */ "
+#if WORDS_BIGENDIAN
+              "\"\\xfa\\xce\\xfe\\xed\\xde\\xad\\xc0\\xde\""
+#else
+              "\"\\xde\\xc0\\xad\\xde\\xed\\xfe\\xce\\xfa\""
+#endif
+#if RETVAL_INJECTED
+              "} => {/* bytes %zu..%zu */ "
+# if WORDS_BIGENDIAN
+              "\"\\xfa\\xce\\xfe\\xed\\xde\\xad\\xc0\\xde\""
+# else
+              "\"\\xde\\xc0\\xad\\xde\\xed\\xfe\\xce\\xfa\""
+# endif
+#endif /* RETVAL_INJECTED */
+              "}, %zu) = %s" INJ_STR,
+              0xdeadface00000000ULL | SIGCHLD,
+              sizeof(*arg2), sizeof(*arg2) + 7,
+#if RETVAL_INJECTED
+              sizeof(*arg2), sizeof(*arg2) + 7,
+#endif
+              sizeof(*arg2) + 8, sprintrc(rc));
+
+       arg2->exit_signal = 0xdeadc0de;
+       rc = do_clone3(arg2, sizeof(*arg) + 16, ERR(E2BIG));
+       printf("clone3({flags=0, exit_signal=3735929054, stack=NULL"
+              ", stack_size=0, ???}"
+#if RETVAL_INJECTED
+              " => {???}"
+#endif
+              ", %zu) = %s" INJ_STR,
+              sizeof(*arg) + 16, sprintrc(rc));
+
+       arg->flags = 0xface3eefbeefc0de;
+       arg->exit_signal = 0x1e55c0de;
+       rc = do_clone3(arg, 64, ERR(EINVAL));
+       printf("clone3({flags=%s, child_tid=NULL, exit_signal=508936414"
+              ", stack=NULL, stack_size=0, tls=NULL}, 64) = %s" INJ_STR,
+              XLAT_KNOWN(0xface3eefbeefc0de, "CLONE_VFORK|CLONE_PARENT"
+              "|CLONE_THREAD|CLONE_NEWNS|CLONE_SYSVSEM|CLONE_SETTLS"
+              "|CLONE_CHILD_CLEARTID|CLONE_UNTRACED|CLONE_NEWCGROUP"
+              "|CLONE_NEWUTS|CLONE_NEWIPC|CLONE_NEWUSER|CLONE_NEWPID|CLONE_IO"
+              "|CLONE_NEWTIME|CLONE_CLEAR_SIGHAND|CLONE_INTO_CGROUP"
+              "|0xface3eec0040005e"),
+              sprintrc(rc));
+
+       arg->flags = 0xdec0deac0040007fULL;
+       arg->exit_signal = 250;
+       arg->stack = 0xface1e55beeff00dULL;
+       arg->stack_size = 0xcaffeedefacedca7ULL;
+       rc = do_clone3(arg, 64, ERR(EINVAL));
+       printf("clone3({flags=%s, exit_signal=250"
+              ", stack=0xface1e55beeff00d, stack_size=0xcaffeedefacedca7}, 64)"
+              " = %s" INJ_STR,
+              XLAT_UNKNOWN(0xdec0deac0040007f, "CLONE_???"),
+              sprintrc(rc));
+
+       arg->exit_signal = SIGCHLD;
+
+       struct {
+               uint64_t flag;
+               const char *flag_str;
+               uint64_t *field;
+               const char *field_name;
+               int *ptr;
+               bool deref_exiting;
+       } pid_fields[] = {
+               { ARG_STR(CLONE_PIDFD),
+                       (uint64_t *) &arg->pidfd,
+                       "pidfd", pidfd, true },
+               { ARG_STR(CLONE_CHILD_SETTID),
+                       (uint64_t *) &arg->child_tid,
+                       "child_tid", child_tid },
+               { ARG_STR(CLONE_CHILD_CLEARTID),
+                       (uint64_t *) &arg->child_tid,
+                       "child_tid", child_tid },
+               { ARG_STR(CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID),
+                       (uint64_t *) &arg->child_tid,
+                       "child_tid", child_tid },
+               { ARG_STR(CLONE_PARENT_SETTID),
+                       (uint64_t *) &arg->parent_tid,
+                       "parent_tid", parent_tid, true },
+       };
+
+       for (size_t i = 0; i < ARRAY_SIZE(pid_fields); i++) {
+               char flag_str[128];
+               const char *rc_str;
+
+               arg->flags = 0xbad0000000000001ULL | pid_fields[i].flag;
+
+#if XLAT_RAW
+               snprintf(flag_str, sizeof(flag_str), "%#" PRIx64,
+                        (uint64_t) arg->flags);
+#elif XLAT_VERBOSE
+               snprintf(flag_str, sizeof(flag_str),
+                        "%#" PRIx64 " /* %s|0xbad0000000000001 */",
+                        (uint64_t) arg->flags, pid_fields[i].flag_str);
+#else
+               snprintf(flag_str, sizeof(flag_str), "%s|0xbad0000000000001",
+                        pid_fields[i].flag_str);
+#endif
+
+               pid_fields[i].field[0] = 0;
+               rc = do_clone3(arg, 64, ERR(EINVAL));
+               rc_str = sprintrc(rc);
+               printf("clone3({flags=%s, %s=NULL"
+                      ", exit_signal=" XLAT_KNOWN(SIGCHLD, "SIGCHLD")
+                      ", stack=0xface1e55beeff00d"
+                      ", stack_size=0xcaffeedefacedca7}",
+                      flag_str, pid_fields[i].field_name);
+#if RETVAL_INJECTED
+               if (pid_fields[i].deref_exiting)
+                       printf(" => {%s=NULL}", pid_fields[i].field_name);
+#endif /* RETVAL_INJECTED */
+               printf(", 64) = %s" INJ_STR, rc_str);
+
+               pid_fields[i].field[0] = (uintptr_t) (pid_fields[i].ptr + 1);
+               rc = do_clone3(arg, 64, ERR(EINVAL));
+               rc_str = sprintrc(rc);
+               printf("clone3({flags=%s, %s=%p"
+                      ", exit_signal=" XLAT_KNOWN(SIGCHLD, "SIGCHLD")
+                      ", stack=0xface1e55beeff00d"
+                      ", stack_size=0xcaffeedefacedca7}",
+                      flag_str, pid_fields[i].field_name,
+                      pid_fields[i].ptr + 1);
+#if RETVAL_INJECTED
+               if (pid_fields[i].deref_exiting)
+                       printf(" => {%s=%p}",
+                              pid_fields[i].field_name, pid_fields[i].ptr + 1);
+#endif /* RETVAL_INJECTED */
+               printf(", 64) = %s" INJ_STR, rc_str);
+
+               pid_fields[i].field[0] = (uintptr_t) pid_fields[i].ptr;
+               rc = do_clone3(arg, 64, ERR(EINVAL));
+               rc_str = sprintrc(rc);
+               printf("clone3({flags=%s, %s=%p"
+                      ", exit_signal=" XLAT_KNOWN(SIGCHLD, "SIGCHLD")
+                      ", stack=0xface1e55beeff00d"
+                      ", stack_size=0xcaffeedefacedca7}",
+                      flag_str, pid_fields[i].field_name,
+                      pid_fields[i].ptr);
+#if RETVAL_INJECTED
+               if (pid_fields[i].deref_exiting)
+                       printf(" => {%s=[%d]}",
+                              pid_fields[i].field_name, *pid_fields[i].ptr);
+#endif /* RETVAL_INJECTED */
+               printf(", 64) = %s" INJ_STR, rc_str);
+       }
+
+       arg->flags = 0xbad0000000000001ULL | CLONE_SETTLS;
+       rc = do_clone3(arg, 64, ERR(EINVAL));
+       printf("clone3({flags="
+              XLAT_KNOWN(0xbad0000000080001, "CLONE_SETTLS|0xbad0000000000001")
+              ", exit_signal=" XLAT_KNOWN(SIGCHLD, "SIGCHLD")
+              ", stack=0xface1e55beeff00d"
+              ", stack_size=0xcaffeedefacedca7, tls=NULL}, 64) = %s" INJ_STR,
+              sprintrc(rc));
+
+       arg->tls = (uintptr_t) (tls + 1);
+       rc = do_clone3(arg, 64, ERR(EINVAL));
+       printf("clone3({flags="
+              XLAT_KNOWN(0xbad0000000080001, "CLONE_SETTLS|0xbad0000000000001")
+              ", exit_signal=" XLAT_KNOWN(SIGCHLD, "SIGCHLD")
+              ", stack=0xface1e55beeff00d"
+              ", stack_size=0xcaffeedefacedca7, tls=%p}, 64) = %s" INJ_STR,
+              tls + 1, sprintrc(rc));
+
+       arg->tls = (uintptr_t) tls;
+       rc = do_clone3(arg, 64, ERR(EINVAL));
+       printf("clone3({flags="
+              XLAT_KNOWN(0xbad0000000080001, "CLONE_SETTLS|0xbad0000000000001")
+              ", exit_signal=" XLAT_KNOWN(SIGCHLD, "SIGCHLD")
+              ", stack=0xface1e55beeff00d, stack_size=0xcaffeedefacedca7, tls="
+#if defined HAVE_STRUCT_USER_DESC && defined __i386__
+              "{entry_number=2206368128, base_addr=0x87868584"
+              ", limit=0x8b8a8988, seg_32bit=0, contents=2, read_exec_only=1"
+              ", limit_in_pages=0, seg_not_present=0, useable=0}"
+#else
+              "%p"
+#endif
+              "}, 64) = %s" INJ_STR,
+#if !defined HAVE_STRUCT_USER_DESC || !defined __i386__
+              tls,
+#endif
+              sprintrc(rc));
+
+       for (size_t i = 0; i < ARRAY_SIZE(arg_vals); i++) {
+               memcpy(arg, &arg_vals[i].args, sizeof(*arg));
+
+               rc = do_clone3(arg, sizeof(*arg), arg_vals[i].possible_errors);
+               print_clone3(arg, rc, sizeof(*arg),
+                            arg_vals[i].vf | STRUCT_VALID,
+                            arg_vals[i].flags_str, arg_vals[i].es_str);
+               printf(", %zu) = %s" INJ_STR, sizeof(*arg), sprintrc(rc));
+       }
+
+       puts("+++ exited with 0 +++");
+
+       return 0;
+}
diff --git a/tests/clone3.gen.test b/tests/clone3.gen.test
new file mode 100755 (executable)
index 0000000..e5d5ca4
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clone3 -a16 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a16 
diff --git a/tests/clone_parent--quiet-exit.c b/tests/clone_parent--quiet-exit.c
new file mode 100644 (file)
index 0000000..fc80d80
--- /dev/null
@@ -0,0 +1,2 @@
+#define QUIET_MSG 1
+#include "clone_parent.c"
diff --git a/tests/clone_parent--quiet-exit.gen.test b/tests/clone_parent--quiet-exit.gen.test
new file mode 100755 (executable)
index 0000000..298abc0
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clone_parent--quiet-exit +clone_ptrace.test --quiet=exit,personality); do not edit.
+set -- --quiet=exit,personality
+. "${srcdir=.}/clone_ptrace.test"
diff --git a/tests/clone_parent-q.c b/tests/clone_parent-q.c
new file mode 100644 (file)
index 0000000..503b8e8
--- /dev/null
@@ -0,0 +1,2 @@
+#define QUIET_MSG 0
+#include "clone_parent.c"
diff --git a/tests/clone_parent-q.gen.test b/tests/clone_parent-q.gen.test
new file mode 100755 (executable)
index 0000000..0d0ecb6
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clone_parent-q +clone_ptrace.test -q); do not edit.
+set -- -q
+. "${srcdir=.}/clone_ptrace.test"
diff --git a/tests/clone_parent-qq.c b/tests/clone_parent-qq.c
new file mode 100644 (file)
index 0000000..fc80d80
--- /dev/null
@@ -0,0 +1,2 @@
+#define QUIET_MSG 1
+#include "clone_parent.c"
diff --git a/tests/clone_parent-qq.gen.test b/tests/clone_parent-qq.gen.test
new file mode 100755 (executable)
index 0000000..e472bd4
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clone_parent-qq +clone_ptrace.test -qq); do not edit.
+set -- -qq
+. "${srcdir=.}/clone_ptrace.test"
index 111f98d10182a365f981196f9f0105f8319843aa..d0e9cdacf23eebca6909af68a5f329353493bfd9 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Check handling of CLONE_PARENT'ed processes.
  *
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 #include <sys/wait.h>
 #include <unistd.h>
 
+#ifndef QUIET_MSG
+# define QUIET_MSG 0
+#endif
+
 static int
 child(void *const arg)
 {
        return 42;
 }
 
-#define child_stack_size       (get_page_size() / 2)
-
 #ifdef IA64
 extern int __clone2(int (*)(void *), void *, size_t, int, void *, ...);
-# define clone(fn, child_stack, flags, arg)    \
-               __clone2(fn, child_stack, child_stack_size, flags, arg)
+# define do_clone(fn_, stack_, size_, flags_, arg_, ...)       \
+       __clone2((fn_), (stack_), (size_), (flags_), (arg_), ## __VA_ARGS__)
+#else
+# define do_clone(fn_, stack_, size_, flags_, arg_, ...)       \
+       clone((fn_), (stack_), (flags_), (arg_), ## __VA_ARGS__)
 #endif
 
 int
 main(void)
 {
-       const pid_t pid = clone(child, tail_alloc(child_stack_size),
-                               CLONE_PARENT | SIGCHLD, 0);
+       const unsigned long child_stack_size = get_page_size();
+       void *const child_stack =
+               tail_alloc(child_stack_size * 2) + child_stack_size;
+
+       const pid_t pid = do_clone(child, child_stack, child_stack_size,
+                                  CLONE_PARENT | SIGCHLD, 0);
        if (pid < 0)
                perror_msg_and_fail("clone");
 
@@ -51,10 +60,14 @@ main(void)
        FILE *const fp = fdopen(3, "a");
        if (!fp)
                perror_msg_and_fail("fdopen");
+#if !QUIET_MSG
        if (fprintf(fp, "%s: Exit of unknown pid %d ignored\n",
                    getenv("STRACE_EXE") ?: "strace", pid) < 0)
                perror_msg_and_fail("fprintf");
+#endif
 
+#if !QUIET_MSG
        puts("+++ exited with 0 +++");
+#endif
        return 0;
 }
diff --git a/tests/clone_parent.gen.test b/tests/clone_parent.gen.test
new file mode 100755 (executable)
index 0000000..4303eb0
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clone_parent +clone_ptrace.test ); do not edit.
+set -- 
+. "${srcdir=.}/clone_ptrace.test"
diff --git a/tests/clone_parent.test b/tests/clone_parent.test
deleted file mode 100755 (executable)
index a5b077f..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/sh -efu
-#
-# Check handling of CLONE_PARENT'ed processes.
-#
-# Copyright (c) 2017-2018 The strace developers.
-# All rights reserved.
-#
-# SPDX-License-Identifier: GPL-2.0-or-later
-
-. "${srcdir=.}/clone_ptrace.test"
diff --git a/tests/clone_ptrace--quiet-attach.c b/tests/clone_ptrace--quiet-attach.c
new file mode 100644 (file)
index 0000000..2fb8d85
--- /dev/null
@@ -0,0 +1,2 @@
+#define QUIET_ATTACH 1
+#include "clone_ptrace.c"
diff --git a/tests/clone_ptrace--quiet-attach.gen.test b/tests/clone_ptrace--quiet-attach.gen.test
new file mode 100755 (executable)
index 0000000..d5c3e73
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clone_ptrace--quiet-attach +clone_ptrace.test --quiet=attach,personality); do not edit.
+set -- --quiet=attach,personality
+. "${srcdir=.}/clone_ptrace.test"
diff --git a/tests/clone_ptrace--quiet-exit.c b/tests/clone_ptrace--quiet-exit.c
new file mode 100644 (file)
index 0000000..3503cfb
--- /dev/null
@@ -0,0 +1,2 @@
+#define QUIET_EXIT 1
+#include "clone_ptrace.c"
diff --git a/tests/clone_ptrace--quiet-exit.gen.test b/tests/clone_ptrace--quiet-exit.gen.test
new file mode 100755 (executable)
index 0000000..6342598
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clone_ptrace--quiet-exit +clone_ptrace.test --quiet=exit,personality); do not edit.
+set -- --quiet=exit,personality
+. "${srcdir=.}/clone_ptrace.test"
diff --git a/tests/clone_ptrace-q.c b/tests/clone_ptrace-q.c
new file mode 100644 (file)
index 0000000..2fb8d85
--- /dev/null
@@ -0,0 +1,2 @@
+#define QUIET_ATTACH 1
+#include "clone_ptrace.c"
diff --git a/tests/clone_ptrace-q.gen.test b/tests/clone_ptrace-q.gen.test
new file mode 100755 (executable)
index 0000000..155e3a5
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clone_ptrace-q +clone_ptrace.test -q); do not edit.
+set -- -q
+. "${srcdir=.}/clone_ptrace.test"
diff --git a/tests/clone_ptrace-qq.c b/tests/clone_ptrace-qq.c
new file mode 100644 (file)
index 0000000..037fbca
--- /dev/null
@@ -0,0 +1,3 @@
+#define QUIET_ATTACH 1
+#define QUIET_EXIT 1
+#include "clone_ptrace.c"
diff --git a/tests/clone_ptrace-qq.gen.test b/tests/clone_ptrace-qq.gen.test
new file mode 100755 (executable)
index 0000000..caa8ab4
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clone_ptrace-qq +clone_ptrace.test -qq); do not edit.
+set -- -qq
+. "${srcdir=.}/clone_ptrace.test"
index ee366ab936f84cd1ce5ac27cd7fcb22bc7b72374..4598400da48b7c699837faae5c837bb6957dbd9d 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Check handling of CLONE_PTRACE'ed processes.
  *
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 
 static siginfo_t sinfo;
 
+#ifndef QUIET_ATTACH
+# define QUIET_ATTACH 0
+#endif
+#ifndef QUIET_EXIT
+# define QUIET_EXIT 0
+#endif
+
 static void
 handler(const int no, siginfo_t *const si, void *const uc)
 {
@@ -34,12 +41,13 @@ child(void *const arg)
        return 0;
 }
 
-#define child_stack_size       (get_page_size() / 2)
-
 #ifdef IA64
 extern int __clone2(int (*)(void *), void *, size_t, int, void *, ...);
-# define clone(fn, child_stack, flags, arg)    \
-               __clone2(fn, child_stack, child_stack_size, flags, arg)
+# define do_clone(fn_, stack_, size_, flags_, arg_, ...)       \
+       __clone2((fn_), (stack_), (size_), (flags_), (arg_), ## __VA_ARGS__)
+#else
+# define do_clone(fn_, stack_, size_, flags_, arg_, ...)       \
+       clone((fn_), (stack_), (flags_), (arg_), ## __VA_ARGS__)
 #endif
 
 int
@@ -52,8 +60,12 @@ main(void)
        if (sigprocmask(SIG_UNBLOCK, &mask, NULL))
                perror_msg_and_fail("sigprocmask");
 
-       const pid_t pid = clone(child, tail_alloc(child_stack_size),
-                               CLONE_PTRACE | SIGCHLD, 0);
+       const unsigned long child_stack_size = get_page_size();
+       void *const child_stack =
+               tail_alloc(child_stack_size * 2) + child_stack_size;
+
+       const pid_t pid = do_clone(child, child_stack, child_stack_size,
+                                  CLONE_PTRACE | SIGCHLD, 0);
        if (pid < 0)
                perror_msg_and_fail("clone");
 
@@ -69,9 +81,11 @@ main(void)
        FILE *const fp = fdopen(3, "a");
        if (!fp)
                perror_msg_and_fail("fdopen");
+#if !QUIET_ATTACH
        if (fprintf(fp, "%s: Detached unknown pid %d\n",
                    getenv("STRACE_EXE") ?: "strace", pid) < 0)
                perror_msg_and_fail("fprintf");
+#endif
 
        int status;
        while (wait(&status) != pid) {
@@ -82,8 +96,11 @@ main(void)
                error_msg_and_fail("unexpected child exit status %d", status);
 
        printf("--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_KILLED, si_pid=%d"
-              ", si_uid=%u, si_status=%s, si_utime=%u, si_stime=%u} ---\n"
-              "+++ exited with 0 +++\n", pid, geteuid(), "SIGUSR1",
+              ", si_uid=%d, si_status=%s, si_utime=%u, si_stime=%u} ---\n"
+#if !QUIET_EXIT
+              "+++ exited with 0 +++\n"
+#endif
+              , pid, geteuid(), "SIGUSR1",
               (unsigned int) sinfo.si_utime, (unsigned int) sinfo.si_stime);
 
        return 0;
index 24c4298ad1cc55c6b76314be069af73916f8f3a3..6f77ed8b0c34b9bd56c7e3ca72788688908780e4 100755 (executable)
@@ -2,7 +2,7 @@
 #
 # Check handling of CLONE_PTRACE'ed processes.
 #
-# Copyright (c) 2017-2018 The strace developers.
+# Copyright (c) 2017-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 . "${srcdir=.}/init.sh"
 
 run_prog > /dev/null 3>&1
-args="-e trace=none $args"
+args="-e trace=none ${1:---quiet=personality} $args"
 > "$LOG" || fail_ "failed to write $LOG"
 
 $STRACE -o "$LOG" $args > "$EXP" 2> "$OUT"-err 3> "$EXP"-err || {
diff --git a/tests/close_range-P.c b/tests/close_range-P.c
new file mode 100644 (file)
index 0000000..2c757b0
--- /dev/null
@@ -0,0 +1,4 @@
+#define PATH_TRACING
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "close_range.c"
diff --git a/tests/close_range-P.gen.test b/tests/close_range-P.gen.test
new file mode 100755 (executable)
index 0000000..85fb6a8
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (close_range-P -a21 --trace=close_range -P /dev/full 7>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a21 --trace=close_range -P /dev/full 7>>/dev/full
diff --git a/tests/close_range-y.c b/tests/close_range-y.c
new file mode 100644 (file)
index 0000000..61b481b
--- /dev/null
@@ -0,0 +1,5 @@
+#define FD0_PATH "</dev/null>"
+#define FD7_PATH "</dev/full>"
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "close_range.c"
diff --git a/tests/close_range-y.gen.test b/tests/close_range-y.gen.test
new file mode 100755 (executable)
index 0000000..da08dc0
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (close_range-y -a33 --trace=close_range -y 7>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a33 --trace=close_range -y 7>>/dev/full
diff --git a/tests/close_range-yy.c b/tests/close_range-yy.c
new file mode 100644 (file)
index 0000000..64997fc
--- /dev/null
@@ -0,0 +1,5 @@
+#define FD0_PATH "</dev/null<char 1:3>>"
+#define FD7_PATH "</dev/full<char 1:7>>"
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "close_range.c"
diff --git a/tests/close_range-yy.gen.test b/tests/close_range-yy.gen.test
new file mode 100755 (executable)
index 0000000..3f3b9cb
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (close_range-yy -a33 --trace=close_range -yy 7>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a33 --trace=close_range -yy 7>>/dev/full
diff --git a/tests/close_range.c b/tests/close_range.c
new file mode 100644 (file)
index 0000000..b3a3ab7
--- /dev/null
@@ -0,0 +1,147 @@
+/*
+ * Check decoding of close_range syscall.
+ *
+ * Copyright (c) 2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_close_range
+
+# include <fcntl.h>
+# include <stdio.h>
+# include <unistd.h>
+
+# ifdef HAVE_LINUX_CLOSE_RANGE_H
+#  include <linux/close_range.h>
+# else
+#  define CLOSE_RANGE_UNSHARE  (1U << 1)
+# endif
+
+# ifndef FD0_PATH
+#  define FD0_PATH ""
+# endif
+# ifndef FD7_PATH
+#  define FD7_PATH ""
+# endif
+# ifndef SKIP_IF_PROC_IS_UNAVAILABLE
+#  define SKIP_IF_PROC_IS_UNAVAILABLE
+# endif
+
+static const char *errstr;
+
+static long
+k_close_range(const unsigned int fd1, const unsigned int fd2, const unsigned int flags)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = fill | fd1;
+       const kernel_ulong_t arg2 = fill | fd2;
+       const kernel_ulong_t arg3 = fill | flags;
+       const long rc = syscall(__NR_close_range, arg1, arg2, arg3, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
+static void
+xdup2(int fd1, int fd2)
+{
+       if (dup2(fd1, fd2) != fd2)
+               perror_msg_and_fail("dup2(%d, %d)", fd1, fd2);
+}
+
+int
+main(void)
+{
+       SKIP_IF_PROC_IS_UNAVAILABLE;
+
+       const int fd0 = dup(0);
+       const int fd7 = dup(7);
+       const int fd7_min = MIN(7, fd7);
+       const int fd7_max = MAX(7, fd7);
+
+       k_close_range(-2, -1, 1);
+# ifndef PATH_TRACING
+       printf("close_range(-2, -1, 0x1 /* CLOSE_RANGE_??? */) = %s\n", errstr);
+# endif
+
+       k_close_range(-1, -2, 2);
+# ifndef PATH_TRACING
+       printf("close_range(-1, -2, CLOSE_RANGE_UNSHARE) = %s\n", errstr);
+# endif
+
+       k_close_range(-3, 0, 4);
+# ifndef PATH_TRACING
+       printf("close_range(-3, 0" FD0_PATH ", 0x4 /* CLOSE_RANGE_??? */)"
+              " = %s\n", errstr);
+# endif
+
+       k_close_range(0, -4, -1);
+# ifndef PATH_TRACING
+       printf("close_range(0" FD0_PATH ", -4, CLOSE_RANGE_UNSHARE|%#x) = %s\n",
+              (-1U & ~CLOSE_RANGE_UNSHARE), errstr);
+# endif
+
+       k_close_range(-5, 7, 0);
+       printf("close_range(-5, 7" FD7_PATH ", 0) = %s\n", errstr);
+
+       k_close_range(7, -6, 1);
+       printf("close_range(7" FD7_PATH ", -6, 0x1 /* CLOSE_RANGE_??? */)"
+              " = %s\n", errstr);
+
+       k_close_range(7, 7, 4);
+       printf("close_range(7" FD7_PATH ", 7" FD7_PATH
+              ", 0x4 /* CLOSE_RANGE_??? */) = %s\n", errstr);
+
+       k_close_range(-7, -7, 7);
+# ifndef PATH_TRACING
+       printf("close_range(-7, -7, CLOSE_RANGE_UNSHARE|0x5) = %s\n", errstr);
+# endif
+
+       k_close_range(7, 0, 0);
+       printf("close_range(7" FD7_PATH ", 0" FD0_PATH ", 0) = %s\n", errstr);
+
+       k_close_range(fd7, fd0, 0);
+       printf("close_range(%d" FD7_PATH ", %d" FD0_PATH ", 0) = %s\n",
+              fd7, fd0, errstr);
+
+       if (k_close_range(0, 0, 0) == 0)
+               xdup2(fd0, 0);
+# ifndef PATH_TRACING
+       printf("close_range(0" FD0_PATH ", 0" FD0_PATH ", 0) = %s\n", errstr);
+# endif
+
+       if (k_close_range(fd0, fd0, 0) == 0)
+               xdup2(0, fd0);
+# ifndef PATH_TRACING
+       printf("close_range(%d" FD0_PATH ", %d" FD0_PATH ", 0) = %s\n",
+              fd0, fd0, errstr);
+# endif
+
+       if (k_close_range(7, 7, 0) == 0)
+               xdup2(fd7, 7);
+       printf("close_range(7" FD7_PATH ", 7" FD7_PATH ", 0) = %s\n", errstr);
+
+       if (k_close_range(fd7, fd7, 0) == 0)
+               xdup2(7, fd7);
+       printf("close_range(%d" FD7_PATH ", %d" FD7_PATH ", 0) = %s\n",
+              fd7, fd7, errstr);
+
+       if (k_close_range(fd7_max, -1, 0) == 0)
+               xdup2(fd7_min, fd7_max);
+       printf("close_range(%d" FD7_PATH ", -1, 0) = %s\n",
+              fd7_max, errstr);
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_close_range")
+
+#endif
diff --git a/tests/close_range.gen.test b/tests/close_range.gen.test
new file mode 100755 (executable)
index 0000000..19e6f4b
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (close_range -a21 7>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a21 7>>/dev/full
index c1f142c65b755f086dcb59ded7158f35ca3711e6..f39f8afc772dd5d5b942388faf9872ac6abf30b2 100644 (file)
@@ -2,14 +2,13 @@
  * This file is part of copy_file_range strace test.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
 #include "scno.h"
 
 #if defined __NR_copy_file_range
index 4f3d45f8889f2451a2bdc05e70a3d8d7cf7862dd..001008a36b4cb050361a68ef162b3315d23d3d0b 100755 (executable)
@@ -2,7 +2,7 @@
 #
 # Check whether -c counts through forks and clones properly.
 #
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 . "${srcdir=.}/init.sh"
 
 run_prog
-run_strace -q -f -c $args
+run_strace -e silent=attach -f -c $args
 match_grep
 
 exit 0
index 6abb177260db7bdb7b73d0074edfdd770133148e..c1ba37206a658dba7d6b81dc327192a10ef82a77 100755 (executable)
@@ -3,7 +3,7 @@
 # Check whether -c and -w options work.
 #
 # Copyright (c) 2014-2016 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2014-2018 The strace developers.
+# Copyright (c) 2014-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -29,13 +29,25 @@ grep_log()
        }
 }
 
-grep_log ' *[^ ]+ +0\.0[^n]*nanosleep'         -c
-grep_log ' *[^ ]+ +0\.0[^n]*nanosleep'         -c -O1
-grep_log ' *[^ ]+ +0\.0[^n]*nanosleep'         -c -enanosleep
-grep_log ' *[^ ]+ +0\.0[^n]*nanosleep'         -c -O1 -enanosleep
-grep_log ' *[^ ]+ +(1\.[01]|0\.99)[^n]*nanosleep'      -cw
-grep_log ' *[^ ]+ +(1\.[01]|0\.99)[^n]*nanosleep'      -cw -O1
-grep_log '100\.00 +(1\.[01]|0\.99)[^n]*nanosleep'      -cw -enanosleep
-grep_log '100\.00 +(1\.[01]|0\.99)[^n]*nanosleep'      -cw -O1 -enanosleep
+GENERIC=' *[^ ]+ +0\.0[^n]*nanosleep *'
+WALLCLOCK=' *[^ ]+ +(1\.[01]|0\.99)[^n]*nanosleep *'
+WALLCLOCK1='100\.00 +(1\.[01]|0\.99)[^n]*nanosleep'
+HALFCLOCK=' *[^ ]+ +0\.[567][^n]*nanosleep *'
+
+grep_log "$GENERIC"    -c
+grep_log "$GENERIC"    -c -O1
+grep_log "$GENERIC"    -c --summary-syscall-overhead=1
+grep_log "$GENERIC"    -c -enanosleep
+grep_log "$GENERIC"    -c -O1 -enanosleep
+grep_log "$WALLCLOCK"  -cw
+grep_log "$WALLCLOCK"  -cw -O1
+grep_log "$WALLCLOCK1" -cw -enanosleep
+grep_log "$WALLCLOCK1" -cw -O1 -enanosleep
+grep_log "$HALFCLOCK"  -cw -O4.5e2ms -enanosleep
+grep_log "$HALFCLOCK"  -cw --summary-syscall-overhead=4.5e2ms -enanosleep
+grep_log "$HALFCLOCK"  -cw -O4.5e-1s -enanosleep
+grep_log "$HALFCLOCK"  -cw --summary-syscall-overhead=4.5e-1s -enanosleep
+grep_log "$HALFCLOCK"  -cw -O456789012ns -enanosleep
+grep_log "$HALFCLOCK"  -cw --summary-syscall-overhead=456789012ns -enanosleep
 
 exit 0
index 71819d5b8aed2e2e5f72cf08530c8d9db7bf2f33..6a5c08e519b4ae099ed90998e226c74145b46bc2 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_creat
 
diff --git a/tests/create_tmpfile.c b/tests/create_tmpfile.c
new file mode 100644 (file)
index 0000000..56f4e60
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Create a temporary file in the current directory.
+ *
+ * Copyright (c) 2020 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <fcntl.h>
+#include <unistd.h>
+
+#ifndef O_TMPFILE
+# if defined __hppa__
+#  define O_TMPFILE    040000000
+# elif defined __alpha__
+#  define O_TMPFILE    0100000000
+# elif defined __sparc__
+#  define O_TMPFILE    0200000000
+# else
+#  define O_TMPFILE    020000000
+# endif
+#endif
+
+int
+create_tmpfile(unsigned int flags)
+{
+       int fd = open(".", O_TMPFILE | O_DIRECTORY | O_EXCL | flags, 0600);
+
+       if (fd < 0) {
+               /*
+                * Since every test is executed in a separate directory,
+                * there is no need to protect from race conditions.
+                */
+               static const char fname[] = "create_tmpfile";
+
+               fd = open(fname, O_CREAT | O_EXCL | flags, 0600);
+               if (fd < 0)
+                       perror_msg_and_fail("open: %s", fname);
+               if (unlink(fname))
+                       perror_msg_and_fail("unlink: %s", fname);
+       }
+
+       return fd;
+}
index fb19b15778115680e046b6158effbc75436c10a9..1b54c443fbd2f8704dda7a528e97a0c42e5997a2 100644 (file)
@@ -1,13 +1,14 @@
 /*
  * Check delay injection.
  *
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
+#include <inttypes.h>
 #include <limits.h>
 #include <stdio.h>
 #include <stdint.h>
@@ -16,7 +17,7 @@
 #include <time.h>
 #include <sys/time.h>
 #include <sys/wait.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 static int64_t
 usecs_from_tv(const struct timeval *const tv)
@@ -30,6 +31,22 @@ usecs_from_ts(const struct timespec *const ts)
     return (int64_t) ts->tv_sec * 1000000 + ts->tv_nsec / 1000;
 }
 
+static void
+check_(const int64_t got, const bool ge, const int64_t orig, const int nproc,
+       const int exitcode)
+{
+       const int64_t thresh = (orig * (ge ? nproc - 1 : nproc + 1)) / nproc;
+
+       if (ge ? got >= thresh : got <= thresh)
+               return;
+
+       fprintf(stderr, "Got delay of %" PRId64 ", %s than threshold value of "
+                       "%" PRId64 " (expected nominal delay value is %" PRId64
+                       ")\n", got, ge ? "less" : "more", thresh, orig);
+
+       _exit(exitcode);
+}
+
 static void
 check_delay(const struct timeval *const tv0,
            const struct timespec *const ts,
@@ -42,17 +59,10 @@ check_delay(const struct timeval *const tv0,
        const int64_t us  = usecs_from_ts(ts);
        const int64_t us1 = usecs_from_tv(tv1);
 
-       if (us - us0 < delay_exit * (nproc - 1) / nproc)
-               _exit(1);
-
-       if (us - us0 > delay_exit * (nproc + 1) / nproc)
-               _exit(2);
-
-       if (us1 - us < delay_enter * (nproc - 1) / nproc)
-               _exit(3);
-
-       if (us1 - us > delay_enter * (nproc + 1) / nproc)
-               _exit(4);
+       check_(us - us0, true,  delay_exit,  nproc, 1);
+       check_(us - us0, false, delay_exit,  nproc, 2);
+       check_(us1 - us, true,  delay_enter, nproc, 3);
+       check_(us1 - us, false, delay_enter, nproc, 4);
 }
 
 static void
index df8552c7b12fbb362589613415f42b3ba4b768df..f74e27f1ee5b02d04e68caf59d007f924a4f60df 100755 (executable)
@@ -2,15 +2,22 @@
 #
 # Check delay injection.
 #
-# Copyright (c) 2018 The strace developers.
+# Copyright (c) 2018-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 . "${srcdir=.}/init.sh"
 
-delay_enter=800000
-delay_exit=1600000
-run_strace -f -r -egettimeofday \
-       -einject=gettimeofday:delay_enter=$delay_enter:delay_exit=$delay_exit \
-       ../delay 4 $delay_enter $delay_exit
+while read -r denter dexit denter_us dexit_us; do
+       [ -n "$denter" ] || continue
+
+       run_strace --follow-forks -r -egettimeofday \
+               -einject=gettimeofday:delay_enter=$denter:delay_exit=$dexit \
+               ../delay 4 $denter_us $dexit_us
+done <<-EOF
+       800000 1600000  800000 1600000
+       8e5    1.6s     800000 1600000
+       800ms  1.6e+6us 800000 1600000
+       +8e8ns .16E7    800000 1600000
+EOF
index 3b2614c1dbec524d27f24df819713490cc8ade11..ad2bca67d8922f0af7e383cbe1e8e467ad4f2f95 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of delete_module syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined(__NR_delete_module)
 
diff --git a/tests/dev--decode-fds-dev.c b/tests/dev--decode-fds-dev.c
new file mode 100644 (file)
index 0000000..eb8eb5e
--- /dev/null
@@ -0,0 +1,2 @@
+#define PRINT_DEVNUM 1
+#include "dev-yy.c"
diff --git a/tests/dev--decode-fds-dev.gen.test b/tests/dev--decode-fds-dev.gen.test
new file mode 100755 (executable)
index 0000000..92983d0
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dev--decode-fds-dev -a30 -e trace=openat,fsync -P "/dev/full" -P "/dev/zero" -P "/dev/sda" -e decode-fds=dev); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a30 -e trace=openat,fsync -P "/dev/full" -P "/dev/zero" -P "/dev/sda" -e decode-fds=dev
diff --git a/tests/dev--decode-fds-path.c b/tests/dev--decode-fds-path.c
new file mode 100644 (file)
index 0000000..2a5fa12
--- /dev/null
@@ -0,0 +1,2 @@
+#define PRINT_DEVNUM 0
+#include "dev-yy.c"
diff --git a/tests/dev--decode-fds-path.gen.test b/tests/dev--decode-fds-path.gen.test
new file mode 100755 (executable)
index 0000000..0be131e
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dev--decode-fds-path -a19 -e trace=openat,fsync -P "/dev/full" -P "/dev/zero" -P "/dev/sda" -e decode-fds=path); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a19 -e trace=openat,fsync -P "/dev/full" -P "/dev/zero" -P "/dev/sda" -e decode-fds=path
diff --git a/tests/dev--decode-fds-socket.c b/tests/dev--decode-fds-socket.c
new file mode 100644 (file)
index 0000000..2a5fa12
--- /dev/null
@@ -0,0 +1,2 @@
+#define PRINT_DEVNUM 0
+#include "dev-yy.c"
diff --git a/tests/dev--decode-fds-socket.gen.test b/tests/dev--decode-fds-socket.gen.test
new file mode 100755 (executable)
index 0000000..5608564
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dev--decode-fds-socket -a19 -e trace=openat,fsync -P "/dev/full" -P "/dev/zero" -P "/dev/sda" --decode-fds=socket); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a19 -e trace=openat,fsync -P "/dev/full" -P "/dev/zero" -P "/dev/sda" --decode-fds=socket
index b9f55fa4fd9f19017a24cbbac30d085312dde58f..0ffb0c4c214226049bf4c235854c14dbca9c9e21 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Check printing of character/block device numbers in -yy mode.
  *
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 #include <stdio.h>
 #include <unistd.h>
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #include <linux/fcntl.h>
 
 #include <sys/sysmacros.h>
 
+#ifndef PRINT_DEVNUM
+# define PRINT_DEVNUM 1
+#endif
+
+#if PRINT_DEVNUM
+# define DEV_FMT "<%s<%s %u:%u>>"
+#else
+# define DEV_FMT "<%s>"
+#endif
+
 #if defined __NR_openat && defined O_PATH
 
 int
@@ -47,10 +57,13 @@ main(void)
                printf("openat(AT_FDCWD, \"%s\", O_RDONLY|O_PATH) = %s",
                       checks[i].path, sprintrc(fd));
                if (fd >= 0)
-                       printf("<%s<%s %u:%u>>",
-                              checks[i].path,
-                              checks[i].blk ? "block" : "char",
-                              checks[i].major, checks[i].minor);
+                       printf(DEV_FMT,
+                              checks[i].path
+# if PRINT_DEVNUM
+                              , checks[i].blk ? "block" : "char",
+                              checks[i].major, checks[i].minor
+# endif
+                              );
                puts("");
 
                if (fd < 0) {
@@ -63,9 +76,13 @@ main(void)
 
                int rc = fsync(fd);
 
-               printf("fsync(%ld<%s<%s %u:%u>>) = %s\n",
-                      fd, checks[i].path, checks[i].blk ? "block" : "char",
-                      checks[i].major, checks[i].minor, sprintrc(rc));
+               printf("fsync(%ld" DEV_FMT ") = %s\n",
+                      fd, checks[i].path,
+# if PRINT_DEVNUM
+                      checks[i].blk ? "block" : "char",
+                      checks[i].major, checks[i].minor,
+# endif
+                      sprintrc(rc));
 
                close(fd);
        }
diff --git a/tests/dup-P.c b/tests/dup-P.c
new file mode 100644 (file)
index 0000000..c65def8
--- /dev/null
@@ -0,0 +1,4 @@
+#define PATH_TRACING
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "dup.c"
diff --git a/tests/dup-P.gen.test b/tests/dup-P.gen.test
new file mode 100755 (executable)
index 0000000..5d170a3
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup-P -a7 --trace=dup -P /dev/full 9>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a7 --trace=dup -P /dev/full 9>>/dev/full
diff --git a/tests/dup-y.c b/tests/dup-y.c
new file mode 100644 (file)
index 0000000..285f20a
--- /dev/null
@@ -0,0 +1,5 @@
+#define FD0_PATH "</dev/null>"
+#define FD9_PATH "</dev/full>"
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "dup.c"
diff --git a/tests/dup-y.gen.test b/tests/dup-y.gen.test
new file mode 100755 (executable)
index 0000000..b29c05f
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup-y -a8 --trace=dup -y 9>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a8 --trace=dup -y 9>>/dev/full
diff --git a/tests/dup-yy.c b/tests/dup-yy.c
new file mode 100644 (file)
index 0000000..2e8175d
--- /dev/null
@@ -0,0 +1,5 @@
+#define FD0_PATH "</dev/null<char 1:3>>"
+#define FD9_PATH "</dev/full<char 1:7>>"
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "dup.c"
diff --git a/tests/dup-yy.gen.test b/tests/dup-yy.gen.test
new file mode 100755 (executable)
index 0000000..6f73d83
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup-yy -a8 --trace=dup -yy 9>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a8 --trace=dup -yy 9>>/dev/full
index 5cf5df7c50f7ffdcb602378a5735ff993b965805..d668e95e5790a280b78dfde8b1db6a722172dd7e 100644 (file)
@@ -1,20 +1,72 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Check decoding of dup syscall.
+ *
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <stdio.h>
-#include <unistd.h>
+#include "scno.h"
+
+#ifdef __NR_dup
+
+# include <stdio.h>
+# include <unistd.h>
+
+# ifndef FD0_PATH
+#  define FD0_PATH ""
+# endif
+# ifndef FD9_PATH
+#  define FD9_PATH ""
+# endif
+# ifndef SKIP_IF_PROC_IS_UNAVAILABLE
+#  define SKIP_IF_PROC_IS_UNAVAILABLE
+# endif
+
+static const char *errstr;
+
+static long
+k_dup(const unsigned int fd)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = fill | fd;
+       const long rc = syscall(__NR_dup, arg1, bad, bad, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
 
 int
 main(void)
 {
-       int rc = dup(-1);
-       printf("dup(-1) = %d %s (%m)\n", rc, errno2name());
+       SKIP_IF_PROC_IS_UNAVAILABLE;
+
+       k_dup(-1);
+# ifndef PATH_TRACING
+       printf("dup(-1) = %s\n", errstr);
+# endif
+
+       int d1 = k_dup(0);
+# ifndef PATH_TRACING
+       printf("dup(0" FD0_PATH ") = %d" FD0_PATH "\n", d1);
+# endif
+
+       int d2 = k_dup(d1);
+# ifndef PATH_TRACING
+       printf("dup(%d" FD0_PATH ") = %d" FD0_PATH "\n", d1, d2);
+# endif
+
+       d2 = k_dup(9);
+       printf("dup(9" FD9_PATH ") = %d" FD9_PATH "\n", d2);
 
        puts("+++ exited with 0 +++");
        return 0;
 }
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_dup")
+
+#endif
index e559cdbce518c63f5c424ce46e8060e9b0189865..6e9a4f795261ad9db43a60a632a4b5116dc21b9c 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup -a); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup -a7 9>>/dev/full); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a
+run_strace_match_diff -a7 9>>/dev/full
diff --git a/tests/dup2-P.c b/tests/dup2-P.c
new file mode 100644 (file)
index 0000000..f9603ea
--- /dev/null
@@ -0,0 +1,4 @@
+#define PATH_TRACING
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "dup2.c"
diff --git a/tests/dup2-P.gen.test b/tests/dup2-P.gen.test
new file mode 100755 (executable)
index 0000000..98df93e
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup2-P -a11 --trace=dup2 -P /dev/full 9>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a11 --trace=dup2 -P /dev/full 9>>/dev/full
diff --git a/tests/dup2-y.c b/tests/dup2-y.c
new file mode 100644 (file)
index 0000000..6b64663
--- /dev/null
@@ -0,0 +1,5 @@
+#define FD0_PATH "</dev/null>"
+#define FD9_PATH "</dev/full>"
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "dup2.c"
diff --git a/tests/dup2-y.gen.test b/tests/dup2-y.gen.test
new file mode 100755 (executable)
index 0000000..79d89c5
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup2-y -a13 --trace=dup2 -y 9>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a13 --trace=dup2 -y 9>>/dev/full
diff --git a/tests/dup2-yy.c b/tests/dup2-yy.c
new file mode 100644 (file)
index 0000000..6040579
--- /dev/null
@@ -0,0 +1,5 @@
+#define FD0_PATH "</dev/null<char 1:3>>"
+#define FD9_PATH "</dev/full<char 1:7>>"
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "dup2.c"
diff --git a/tests/dup2-yy.gen.test b/tests/dup2-yy.gen.test
new file mode 100755 (executable)
index 0000000..1c7ff8e
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup2-yy -a13 --trace=dup2 -yy 9>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a13 --trace=dup2 -yy 9>>/dev/full
index fba8fca5605e808ed8d11e8c51a6ebb53df706f7..ec735e9287167499234de7fefe34573013070d8a 100644 (file)
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Check decoding of dup2 syscall.
+ *
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_dup2
 
 # include <stdio.h>
 # include <unistd.h>
 
+# ifndef FD0_PATH
+#  define FD0_PATH ""
+# endif
+# ifndef FD9_PATH
+#  define FD9_PATH ""
+# endif
+# ifndef SKIP_IF_PROC_IS_UNAVAILABLE
+#  define SKIP_IF_PROC_IS_UNAVAILABLE
+# endif
+
+static const char *errstr;
+
+static long
+k_dup2(const unsigned int fd1, const unsigned int fd2)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = fill | fd1;
+       const kernel_ulong_t arg2 = fill | fd2;
+       const long rc = syscall(__NR_dup2, arg1, arg2, bad, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
 int
 main(void)
 {
-       const long int fd_old = (long int) 0xdeadbeefffffffffULL;
-       const long int fd_new = (long int) 0xdeadbeeffffffffeULL;
+       SKIP_IF_PROC_IS_UNAVAILABLE;
+
+       int fd0 = dup(0);
+       int fd9 = dup(9);
+
+       if (k_dup2(0, 0))
+               perror_msg_and_skip("dup2");
+# ifndef PATH_TRACING
+       printf("dup2(0" FD0_PATH ", 0" FD0_PATH ") = 0" FD0_PATH "\n");
+# endif
+
+       k_dup2(-1, -2);
+# ifndef PATH_TRACING
+       printf("dup2(-1, -2) = %s\n", errstr);
+# endif
+
+       k_dup2(-2, -1);
+# ifndef PATH_TRACING
+       printf("dup2(-2, -1) = %s\n", errstr);
+# endif
+
+       k_dup2(-3, 0);
+# ifndef PATH_TRACING
+       printf("dup2(-3, 0" FD0_PATH ") = %s\n", errstr);
+# endif
+
+       k_dup2(0, -4);
+# ifndef PATH_TRACING
+       printf("dup2(0" FD0_PATH ", -4) = %s\n", errstr);
+# endif
+
+       k_dup2(-5, 9);
+       printf("dup2(-5, 9" FD9_PATH ") = %s\n", errstr);
+
+       k_dup2(9, -6);
+       printf("dup2(9" FD9_PATH ", -6) = %s\n", errstr);
+
+       k_dup2(9, 9);
+       printf("dup2(9" FD9_PATH ", 9" FD9_PATH ") = 9" FD9_PATH "\n");
+
+       k_dup2(0, fd0);
+# ifndef PATH_TRACING
+       printf("dup2(0" FD0_PATH ", %d" FD0_PATH ") = %d" FD0_PATH "\n",
+              fd0, fd0);
+# endif
+
+       k_dup2(9, fd9);
+       printf("dup2(9" FD9_PATH ", %d" FD9_PATH ") = %d" FD9_PATH "\n",
+              fd9, fd9);
+
+       k_dup2(0, fd9);
+       printf("dup2(0" FD0_PATH ", %d" FD9_PATH ") = %d" FD0_PATH "\n",
+              fd9, fd9);
+
+       k_dup2(9, fd0);
+       printf("dup2(9" FD9_PATH ", %d" FD0_PATH ") = %d" FD9_PATH "\n",
+              fd0, fd0);
+
+       close(fd0);
+       close(fd9);
+
+       k_dup2(0, fd0);
+# ifndef PATH_TRACING
+       printf("dup2(0" FD0_PATH ", %d) = %d" FD0_PATH "\n",
+              fd0, fd0);
+# endif
 
-       long rc = syscall(__NR_dup2, fd_old, fd_new);
-       printf("dup2(%d, %d) = %ld %s (%m)\n",
-              (int) fd_old, (int) fd_new, rc, errno2name());
+       k_dup2(9, fd9);
+       printf("dup2(9" FD9_PATH ", %d) = %d" FD9_PATH "\n",
+              fd9, fd9);
 
        puts("+++ exited with 0 +++");
        return 0;
index 6a6d2f5898bb631d39f186e6a19b4262f4dc23a6..6d2c0688081a0ec9cfa45e36d4f5c85260c88501 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup2 -a1); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup2 -a11 9>>/dev/full); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a1
+run_strace_match_diff -a11 9>>/dev/full
diff --git a/tests/dup3-P.c b/tests/dup3-P.c
new file mode 100644 (file)
index 0000000..09ddb93
--- /dev/null
@@ -0,0 +1,4 @@
+#define PATH_TRACING
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "dup3.c"
diff --git a/tests/dup3-P.gen.test b/tests/dup3-P.gen.test
new file mode 100755 (executable)
index 0000000..ad77199
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup3-P -a13 --trace=dup3 -P /dev/full 7>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a13 --trace=dup3 -P /dev/full 7>>/dev/full
diff --git a/tests/dup3-y.c b/tests/dup3-y.c
new file mode 100644 (file)
index 0000000..730a920
--- /dev/null
@@ -0,0 +1,5 @@
+#define FD0_PATH "</dev/null>"
+#define FD7_PATH "</dev/full>"
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "dup3.c"
diff --git a/tests/dup3-y.gen.test b/tests/dup3-y.gen.test
new file mode 100755 (executable)
index 0000000..0c74ee0
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup3-y -a15 --trace=dup3 -y 7>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a15 --trace=dup3 -y 7>>/dev/full
diff --git a/tests/dup3-yy.c b/tests/dup3-yy.c
new file mode 100644 (file)
index 0000000..24d7988
--- /dev/null
@@ -0,0 +1,5 @@
+#define FD0_PATH "</dev/null<char 1:3>>"
+#define FD7_PATH "</dev/full<char 1:7>>"
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "dup3.c"
diff --git a/tests/dup3-yy.gen.test b/tests/dup3-yy.gen.test
new file mode 100755 (executable)
index 0000000..6581ef5
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup3-yy -a15 --trace=dup3 -yy 7>>/dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a15 --trace=dup3 -yy 7>>/dev/full
index 741e06f880e53f3d97d541ed90e6bd41e6a65505..930257246eea387d4308a255d818c770ae44db3f 100644 (file)
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Check decoding of dup3 syscall.
+ *
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <fcntl.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
-#if defined __NR_dup3 && defined O_CLOEXEC
+#ifdef __NR_dup3
 
+# include <fcntl.h>
 # include <stdio.h>
 # include <unistd.h>
 
+# ifndef O_CLOEXEC
+#  if defined __alpha__ || defined __hppa__
+#   define O_CLOEXEC   010000000
+#  elif defined __sparc__
+#   define O_CLOEXEC   020000000
+#  else
+#   define O_CLOEXEC   02000000
+#  endif
+# endif /* !O_CLOEXEC */
+
+# ifndef FD0_PATH
+#  define FD0_PATH ""
+# endif
+# ifndef FD7_PATH
+#  define FD7_PATH ""
+# endif
+# ifndef SKIP_IF_PROC_IS_UNAVAILABLE
+#  define SKIP_IF_PROC_IS_UNAVAILABLE
+# endif
+
+static const char *errstr;
+
+static long
+k_dup3(const unsigned int fd1, const unsigned int fd2, const unsigned int flags)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = fill | fd1;
+       const kernel_ulong_t arg2 = fill | fd2;
+       const kernel_ulong_t arg3 = fill | flags;
+       const long rc = syscall(__NR_dup3, arg1, arg2, arg3, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
 int
 main(void)
 {
-       const long int fd_old = (long int) 0xdeadbeefffffffffULL;
-       const long int fd_new = (long int) 0xdeadbeeffffffffeULL;
+       SKIP_IF_PROC_IS_UNAVAILABLE;
+
+       int fd0 = dup(0);
+       int fd7 = dup(7);
+
+       k_dup3(0, 0, 0);
+# ifndef PATH_TRACING
+       printf("dup3(0" FD0_PATH ", 0" FD0_PATH ", 0) = %s\n", errstr);
+# endif
+
+       k_dup3(-1, -2, O_CLOEXEC);
+# ifndef PATH_TRACING
+       printf("dup3(-1, -2, O_CLOEXEC) = %s\n", errstr);
+# endif
+
+       k_dup3(-2, -1, O_TRUNC);
+# ifndef PATH_TRACING
+       printf("dup3(-2, -1, O_TRUNC) = %s\n", errstr);
+# endif
+
+       k_dup3(-3, 0, O_TRUNC | O_CLOEXEC);
+# ifndef PATH_TRACING
+       printf("dup3(-3, 0" FD0_PATH ", O_TRUNC|O_CLOEXEC) = %s\n", errstr);
+# endif
+
+       k_dup3(0, -4, O_RDONLY);
+# ifndef PATH_TRACING
+       printf("dup3(0" FD0_PATH ", -4, 0) = %s\n", errstr);
+# endif
+
+       k_dup3(-5, 7, O_WRONLY);
+       printf("dup3(-5, 7" FD7_PATH ", 0x1 /* O_??? */) = %s\n", errstr);
+
+       k_dup3(7, -6, O_RDWR);
+       printf("dup3(7" FD7_PATH ", -6, 0x2 /* O_??? */) = %s\n", errstr);
+
+       k_dup3(7, 7, O_CLOEXEC);
+       printf("dup3(7" FD7_PATH ", 7" FD7_PATH ", O_CLOEXEC) = %s\n", errstr);
+
+       k_dup3(-7, -7, 7);
+# ifndef PATH_TRACING
+       printf("dup3(-7, -7, %s) = %s\n",
+#  ifdef __sparc__
+              "O_NDELAY|0x3"
+#  else
+              "0x7 /* O_??? */"
+#  endif
+              , errstr);
+# endif
+
+       if (k_dup3(0, fd0, O_CLOEXEC) != fd0)
+               perror_msg_and_skip("dup3");
+# ifndef PATH_TRACING
+       printf("dup3(0" FD0_PATH ", %d" FD0_PATH ", O_CLOEXEC) = %d" FD0_PATH
+              "\n", fd0, fd0);
+# endif
+
+       k_dup3(7, fd7, 0);
+       printf("dup3(7" FD7_PATH ", %d" FD7_PATH ", 0) = %d" FD7_PATH
+              "\n", fd7, fd7);
+
+       k_dup3(0, fd7, O_CLOEXEC);
+       printf("dup3(0" FD0_PATH ", %d" FD7_PATH ", O_CLOEXEC) = %d" FD0_PATH
+              "\n", fd7, fd7);
+
+       k_dup3(7, fd0, 0);
+       printf("dup3(7" FD7_PATH ", %d" FD0_PATH ", 0) = %d" FD7_PATH
+              "\n", fd0, fd0);
+
+       close(fd0);
+       close(fd7);
+
+       k_dup3(0, fd0, O_CLOEXEC);
+# ifndef PATH_TRACING
+       printf("dup3(0" FD0_PATH ", %d, O_CLOEXEC) = %d" FD0_PATH "\n",
+              fd0, fd0);
+# endif
 
-       long rc = syscall(__NR_dup3, fd_old, fd_new, O_CLOEXEC);
-       printf("dup3(%d, %d, O_CLOEXEC) = %ld %s (%m)\n",
-              (int) fd_old, (int) fd_new, rc, errno2name());
+       k_dup3(7, fd7, 0);
+       printf("dup3(7" FD7_PATH ", %d, 0) = %d" FD7_PATH "\n",
+              fd7, fd7);
 
        puts("+++ exited with 0 +++");
        return 0;
@@ -30,6 +142,6 @@ main(void)
 
 #else
 
-SKIP_MAIN_UNDEFINED("__NR_dup3 && O_CLOEXEC")
+SKIP_MAIN_UNDEFINED("__NR_dup3")
 
 #endif
index 776b9a7999bc693cef6ef6b1184a50cd195fc457..f5aeb03677585a83633b51230f150f49a3d4eb3a 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup3 -a24 ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup3 -a13 7>>/dev/full); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a24 
+run_strace_match_diff -a13 7>>/dev/full
index 42cc8d0458c575d6c098bf5f5cfeee0aa8628931..9b808ccecfa70513b336291830ef2a8a02c77627 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_epoll_create
 
index 81b338259d8d45133c18ab5c4f5744347f8c7869..f01867ccb94985c648ed3f4610dd02f7241e7ac6 100644 (file)
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -7,7 +8,7 @@
 
 #include "tests.h"
 #include <fcntl.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_epoll_create1 && defined O_CLOEXEC
 
index 85a288cde0165dc576ba753675f5edd087429eef..b1e7a0631ba94dff0f152b3164f35943938b95cf 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_epoll_ctl
 
index ce95e6dc5aa999566e74cafe0150b7b987c8383b..1e2834631b41677b3f5f46a4a170c69c4e33a40b 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_epoll_pwait
 
index 3981905d30f6b56e9d2651a4f2833f7c6d5d4051..21c48511e7e07a6ddfe98936f3cbf2268fec1151 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_epoll_wait
 
index 75d33dd7bd28f171fece607a0b503410ab921508..4c78dced01e11677e54da0ffdb13ddf44678a8eb 100644 (file)
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -8,7 +9,7 @@
 #include "tests.h"
 #include <fcntl.h>
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_eventfd2 && defined O_CLOEXEC
 
index 629a69ab23caa97a0a5db2e967429adc3a57e556..c8b1f4cd96c332d8dc3d84085faefaee186962b3 100644 (file)
@@ -2,14 +2,13 @@
  * This file is part of execveat strace test.
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
 #include "scno.h"
 
 #ifdef __NR_execveat
diff --git a/tests/faccessat-P.c b/tests/faccessat-P.c
new file mode 100644 (file)
index 0000000..0024d55
--- /dev/null
@@ -0,0 +1,4 @@
+#define PATH_TRACING
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "faccessat.c"
diff --git a/tests/faccessat-P.gen.test b/tests/faccessat-P.gen.test
new file mode 100755 (executable)
index 0000000..9210a5f
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (faccessat-P -a23 --trace=faccessat -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a23 --trace=faccessat -P /dev/full
diff --git a/tests/faccessat-y.c b/tests/faccessat-y.c
new file mode 100644 (file)
index 0000000..61f67d7
--- /dev/null
@@ -0,0 +1,4 @@
+#define FD_PATH "</dev/full>"
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "faccessat.c"
diff --git a/tests/faccessat-y.gen.test b/tests/faccessat-y.gen.test
new file mode 100755 (executable)
index 0000000..bc0db7f
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (faccessat-y +faccessat.test -a24 -y); do not edit.
+set -- -a24 -y
+. "${srcdir=.}/faccessat.test"
diff --git a/tests/faccessat-yy.c b/tests/faccessat-yy.c
new file mode 100644 (file)
index 0000000..b516240
--- /dev/null
@@ -0,0 +1,4 @@
+#define FD_PATH "</dev/full<char 1:7>>"
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "faccessat.c"
diff --git a/tests/faccessat-yy.gen.test b/tests/faccessat-yy.gen.test
new file mode 100755 (executable)
index 0000000..e4a8224
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (faccessat-yy +faccessat.test -a24 -yy); do not edit.
+set -- -a24 -yy
+. "${srcdir=.}/faccessat.test"
index 6d95555aa051f89cdce9357564fd6dc666cc182e..b5498bc72e5a0639625284326088b336a78d40bd 100644 (file)
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Check decoding of faccessat syscall.
+ *
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_faccessat
 
+# include <fcntl.h>
 # include <stdio.h>
 # include <unistd.h>
 
+# ifndef FD_PATH
+#  define FD_PATH ""
+# endif
+# ifndef SKIP_IF_PROC_IS_UNAVAILABLE
+#  define SKIP_IF_PROC_IS_UNAVAILABLE
+# endif
+
+static const char *errstr;
+
+static long
+k_faccessat(const unsigned int dirfd,
+           const void *const pathname,
+           const unsigned int mode)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+
+       const kernel_ulong_t arg1 = fill | dirfd;
+       const kernel_ulong_t arg2 = (uintptr_t) pathname;
+       const kernel_ulong_t arg3 = fill | mode;
+       const long rc = syscall(__NR_faccessat,
+                               arg1, arg2, arg3, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
 int
 main(void)
 {
-       static const char sample[] = "faccessat.sample";
-       const long int fd = (long int) 0xdeadbeefffffffffULL;
+       SKIP_IF_PROC_IS_UNAVAILABLE;
+
+       TAIL_ALLOC_OBJECT_CONST_PTR(const char, unterminated);
+       char *unterminated_str;
+       if (asprintf(&unterminated_str, "%p", unterminated) < 0)
+                perror_msg_and_fail("asprintf");
+       const void *const efault = unterminated + 1;
+       char *efault_str;
+       if (asprintf(&efault_str, "%p", efault) < 0)
+                perror_msg_and_fail("asprintf");
+
+       typedef struct {
+               char sym;
+               char null;
+       } sym_null;
+
+       TAIL_ALLOC_OBJECT_CONST_PTR(sym_null, dot);
+       dot->sym = '.';
+       dot->null = '\0';
+       const char *const null = &dot->null;
+
+       TAIL_ALLOC_OBJECT_CONST_PTR(sym_null, slash);
+       slash->sym = '/';
+       slash->null = '\0';
+
+       static const char path[] = "/dev/full";
+       const char *const fd_path = tail_memdup(path, sizeof(path));
+        int fd = open(path, O_WRONLY);
+        if (fd < 0)
+                perror_msg_and_fail("open: %s", path);
+       char *fd_str;
+       if (asprintf(&fd_str, "%d%s", fd, FD_PATH) < 0)
+                perror_msg_and_fail("asprintf");
+       char *path_quoted;
+       if (asprintf(&path_quoted, "\"%s\"", path) < 0)
+                perror_msg_and_fail("asprintf");
+
+       struct {
+               int val;
+               const char *str;
+       } dirfds[] = {
+               { ARG_STR(-1) },
+               { -100, "AT_FDCWD" },
+               { fd, fd_str },
+       }, modes[] = {
+               { ARG_STR(F_OK) },
+               { ARG_STR(R_OK) },
+               { ARG_STR(W_OK) },
+               { ARG_STR(X_OK) },
+               { ARG_STR(R_OK|W_OK) },
+               { ARG_STR(R_OK|X_OK) },
+               { ARG_STR(W_OK|X_OK) },
+               { ARG_STR(R_OK|W_OK|X_OK) },
+               { 8, "0x8 /* ?_OK */" },
+               { -1, "R_OK|W_OK|X_OK|0xfffffff8" },
+       };
+
+       struct {
+               const void *val;
+               const char *str;
+       } paths[] = {
+               { 0, "NULL" },
+               { efault, efault_str },
+               { unterminated, unterminated_str },
+               { null, "\"\"" },
+               { &dot->sym, "\".\"" },
+               { &slash->sym, "\"/\"" },
+               { fd_path, path_quoted },
+       };
 
-       long rc = syscall(__NR_faccessat, fd, sample, F_OK);
-       printf("faccessat(%d, \"%s\", F_OK) = %ld %s (%m)\n",
-              (int) fd, sample, rc, errno2name());
+       for (unsigned int dirfd_i = 0;
+            dirfd_i < ARRAY_SIZE(dirfds);
+            ++dirfd_i) {
+               for (unsigned int path_i = 0;
+                    path_i < ARRAY_SIZE(paths);
+                    ++path_i) {
+                       for (unsigned int mode_i = 0;
+                            mode_i < ARRAY_SIZE(modes);
+                            ++mode_i) {
+                               k_faccessat(dirfds[dirfd_i].val,
+                                           paths[path_i].val,
+                                           modes[mode_i].val);
+# ifdef PATH_TRACING
+                               if (dirfds[dirfd_i].val == fd ||
+                                   paths[path_i].val == fd_path)
+# endif
+                               printf("faccessat(%s, %s, %s) = %s\n",
+                                      dirfds[dirfd_i].str,
+                                      paths[path_i].str,
+                                      modes[mode_i].str,
+                                      errstr);
+                       }
+               }
+       }
 
        puts("+++ exited with 0 +++");
        return 0;
diff --git a/tests/faccessat.gen.test b/tests/faccessat.gen.test
deleted file mode 100755 (executable)
index 4ccec2a..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (faccessat -P $NAME.sample); do not edit.
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -P $NAME.sample
diff --git a/tests/faccessat.test b/tests/faccessat.test
new file mode 100755 (executable)
index 0000000..7b36849
--- /dev/null
@@ -0,0 +1,19 @@
+#!/bin/sh
+#
+# Check decoding of faccessat syscall.
+#
+# Copyright (c) 2020 Dmitry V. Levin <ldv@altlinux.org>
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/init.sh"
+
+check_prog sed
+
+run_prog > /dev/null
+run_strace -a23 --trace=faccessat "$@" $args > "$EXP"
+
+# Filter out faccessat() calls made by ld.so and libc.
+sed -n '/^faccessat(-1, NULL,/,$p' < "$LOG" > "$OUT"
+match_diff "$OUT" "$EXP"
diff --git a/tests/faccessat2-P.c b/tests/faccessat2-P.c
new file mode 100644 (file)
index 0000000..0e6af94
--- /dev/null
@@ -0,0 +1,4 @@
+#define PATH_TRACING
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "faccessat2.c"
diff --git a/tests/faccessat2-P.gen.test b/tests/faccessat2-P.gen.test
new file mode 100755 (executable)
index 0000000..341f4a5
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (faccessat2-P -a27 --trace=faccessat2 -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27 --trace=faccessat2 -P /dev/full
diff --git a/tests/faccessat2-y.c b/tests/faccessat2-y.c
new file mode 100644 (file)
index 0000000..9337cb5
--- /dev/null
@@ -0,0 +1,4 @@
+#define FD_PATH "</dev/full>"
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "faccessat2.c"
diff --git a/tests/faccessat2-y.gen.test b/tests/faccessat2-y.gen.test
new file mode 100755 (executable)
index 0000000..caeeb72
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (faccessat2-y +faccessat2.test -a28 -y); do not edit.
+set -- -a28 -y
+. "${srcdir=.}/faccessat2.test"
diff --git a/tests/faccessat2-yy.c b/tests/faccessat2-yy.c
new file mode 100644 (file)
index 0000000..a23f3d4
--- /dev/null
@@ -0,0 +1,4 @@
+#define FD_PATH "</dev/full<char 1:7>>"
+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/")
+
+#include "faccessat2.c"
diff --git a/tests/faccessat2-yy.gen.test b/tests/faccessat2-yy.gen.test
new file mode 100755 (executable)
index 0000000..ecaeef2
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (faccessat2-yy +faccessat2.test -a28 -yy); do not edit.
+set -- -a28 -yy
+. "${srcdir=.}/faccessat2.test"
diff --git a/tests/faccessat2.c b/tests/faccessat2.c
new file mode 100644 (file)
index 0000000..74d17cd
--- /dev/null
@@ -0,0 +1,174 @@
+/*
+ * Check decoding of faccessat2 syscall.
+ *
+ * Copyright (c) 2016-2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_faccessat2
+
+# include <fcntl.h>
+# include <stdio.h>
+# include <unistd.h>
+
+# define XLAT_MACROS_ONLY
+#  include "xlat/faccessat_flags.h"
+# undef XLAT_MACROS_ONLY
+
+# ifndef FD_PATH
+#  define FD_PATH ""
+# endif
+# ifndef SKIP_IF_PROC_IS_UNAVAILABLE
+#  define SKIP_IF_PROC_IS_UNAVAILABLE
+# endif
+
+static const char *errstr;
+
+static long
+k_faccessat2(const unsigned int dirfd,
+            const void *const pathname,
+            const unsigned int mode,
+            const unsigned int flags)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+
+       const kernel_ulong_t arg1 = fill | dirfd;
+       const kernel_ulong_t arg2 = (uintptr_t) pathname;
+       const kernel_ulong_t arg3 = fill | mode;
+       const kernel_ulong_t arg4 = fill | flags;
+       const long rc = syscall(__NR_faccessat2,
+                               arg1, arg2, arg3, arg4, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
+int
+main(void)
+{
+       SKIP_IF_PROC_IS_UNAVAILABLE;
+
+       TAIL_ALLOC_OBJECT_CONST_PTR(const char, unterminated);
+       char *unterminated_str;
+       if (asprintf(&unterminated_str, "%p", unterminated) < 0)
+                perror_msg_and_fail("asprintf");
+       const void *const efault = unterminated + 1;
+       char *efault_str;
+       if (asprintf(&efault_str, "%p", efault) < 0)
+                perror_msg_and_fail("asprintf");
+
+       typedef struct {
+               char sym;
+               char null;
+       } sym_null;
+
+       TAIL_ALLOC_OBJECT_CONST_PTR(sym_null, dot);
+       dot->sym = '.';
+       dot->null = '\0';
+       const char *const null = &dot->null;
+
+       TAIL_ALLOC_OBJECT_CONST_PTR(sym_null, slash);
+       slash->sym = '/';
+       slash->null = '\0';
+
+       static const char path[] = "/dev/full";
+       const char *const fd_path = tail_memdup(path, sizeof(path));
+        int fd = open(path, O_WRONLY);
+        if (fd < 0)
+                perror_msg_and_fail("open: %s", path);
+       char *fd_str;
+       if (asprintf(&fd_str, "%d%s", fd, FD_PATH) < 0)
+                perror_msg_and_fail("asprintf");
+       char *path_quoted;
+       if (asprintf(&path_quoted, "\"%s\"", path) < 0)
+                perror_msg_and_fail("asprintf");
+
+       struct {
+               int val;
+               const char *str;
+       } dirfds[] = {
+               { ARG_STR(-1) },
+               { -100, "AT_FDCWD" },
+               { fd, fd_str },
+       }, modes[] = {
+               { ARG_STR(F_OK) },
+               { ARG_STR(R_OK) },
+               { ARG_STR(W_OK) },
+               { ARG_STR(X_OK) },
+               { ARG_STR(R_OK|W_OK) },
+               { ARG_STR(R_OK|X_OK) },
+               { ARG_STR(W_OK|X_OK) },
+               { ARG_STR(R_OK|W_OK|X_OK) },
+               { 8, "0x8 /* ?_OK */" },
+               { -1, "R_OK|W_OK|X_OK|0xfffffff8" },
+       }, flags[] = {
+               { ARG_STR(0) },
+               { ARG_STR(AT_SYMLINK_NOFOLLOW) },
+               { ARG_STR(AT_EACCESS) },
+               { ARG_STR(AT_EMPTY_PATH) },
+               { ARG_STR(AT_SYMLINK_NOFOLLOW|AT_EACCESS) },
+               { ARG_STR(AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) },
+               { ARG_STR(AT_EACCESS|AT_EMPTY_PATH) },
+               { ARG_STR(AT_SYMLINK_NOFOLLOW|AT_EACCESS|AT_EMPTY_PATH) },
+               { 1, "0x1 /* AT_??? */" },
+               { -1, "AT_SYMLINK_NOFOLLOW|AT_EACCESS|AT_EMPTY_PATH|0xffffecff" },
+       };
+
+       struct {
+               const void *val;
+               const char *str;
+       } paths[] = {
+               { 0, "NULL" },
+               { efault, efault_str },
+               { unterminated, unterminated_str },
+               { null, "\"\"" },
+               { &dot->sym, "\".\"" },
+               { &slash->sym, "\"/\"" },
+               { fd_path, path_quoted },
+       };
+
+       for (unsigned int dirfd_i = 0;
+            dirfd_i < ARRAY_SIZE(dirfds);
+            ++dirfd_i) {
+               for (unsigned int path_i = 0;
+                    path_i < ARRAY_SIZE(paths);
+                    ++path_i) {
+                       for (unsigned int mode_i = 0;
+                            mode_i < ARRAY_SIZE(modes);
+                            ++mode_i) {
+                               for (unsigned int flag_i = 0;
+                                    flag_i < ARRAY_SIZE(flags);
+                                    ++flag_i) {
+                                       k_faccessat2(dirfds[dirfd_i].val,
+                                                   paths[path_i].val,
+                                                   modes[mode_i].val,
+                                                   flags[flag_i].val);
+# ifdef PATH_TRACING
+                                       if (dirfds[dirfd_i].val == fd ||
+                                           paths[path_i].val == fd_path)
+# endif
+                                       printf("faccessat2(%s, %s, %s, %s) = %s\n",
+                                              dirfds[dirfd_i].str,
+                                              paths[path_i].str,
+                                              modes[mode_i].str,
+                                              flags[flag_i].str,
+                                              errstr);
+                               }
+                       }
+               }
+       }
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_faccessat2")
+
+#endif
diff --git a/tests/faccessat2.test b/tests/faccessat2.test
new file mode 100755 (executable)
index 0000000..eea9ea9
--- /dev/null
@@ -0,0 +1,19 @@
+#!/bin/sh
+#
+# Check decoding of faccessat2 syscall.
+#
+# Copyright (c) 2020 Dmitry V. Levin <ldv@altlinux.org>
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/init.sh"
+
+check_prog sed
+
+run_prog > /dev/null
+run_strace -a27 --trace=faccessat2 "$@" $args > "$EXP"
+
+# Filter out faccessat2() calls made by ld.so and libc.
+sed -n '/^faccessat2(-1, NULL,/,$p' < "$LOG" > "$OUT"
+match_diff "$OUT" "$EXP"
index 1d7b6681b66dc98cb1bfffa9caac4ec7a2f2735e..7cbd3ad4721afbf85aee0cd18c65fc13db1691db 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -11,7 +11,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_fadvise64
 
index 1520b7e484227c968c6214a5836c830330433286..292b833843b2cfdbfc59fc6b36b1368215345d2c 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -11,7 +11,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __arm__
 # ifdef __NR_arm_fadvise64_64
index 0e2284de254735ed1947cfbddcdb0f0a383145ac..b48cd15700bf8e4c30d9be8d3aed460c5167d201 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of fallocate syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined(__NR_fallocate) && defined(HAVE_FALLOCATE) && HAVE_FALLOCATE
 
index a3eeff53715c341d88a791a8b7187dabd2147fe5..f9fc91615ab5f8e91e314966c0fe28476296b619 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of fanotify_init syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2019 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_fanotify_init
 
@@ -44,13 +44,14 @@ main(void)
                { F8ILL_KULONG_MASK, "FAN_CLASS_NOTIF" },
                { (kernel_ulong_t) 0xffffffff0000000cULL,
                        "0xc /* FAN_CLASS_??? */" },
-               { (kernel_ulong_t) 0xdec0deddefacec04ULL,
-                       "FAN_CLASS_CONTENT|0xefacec00 /* FAN_??? */" },
+               { (kernel_ulong_t) 0xdec0deddeface004ULL,
+                       "FAN_CLASS_CONTENT|0xeface000 /* FAN_??? */" },
                { (kernel_ulong_t) 0xffffffffffffffffULL,
                        "0xc /* FAN_CLASS_??? */|FAN_CLOEXEC|FAN_NONBLOCK|"
                        "FAN_UNLIMITED_QUEUE|FAN_UNLIMITED_MARKS|"
                        "FAN_ENABLE_AUDIT|FAN_REPORT_TID|FAN_REPORT_FID|"
-                       "0xfffffc80" },
+                       "FAN_REPORT_DIR_FID|FAN_REPORT_NAME|"
+                       "0xfffff080" },
        };
        static const struct strval event_f_flags[] = {
                { F8ILL_KULONG_MASK, "O_RDONLY" },
index 33d1825358d925841aa9ee1b52ce223245604eb6..f4bda84a9451c74682e87621022ca515cc90a58a 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2015-2019 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -11,7 +11,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined HAVE_SYS_FANOTIFY_H && defined HAVE_FANOTIFY_MARK && \
        defined __NR_fanotify_mark
@@ -68,11 +68,6 @@ struct strval {
        const char *str;
 };
 
-struct strval64 {
-       uint64_t val;
-       const char *str;
-};
-
 # define STR16 "0123456789abcdef"
 # define STR64 STR16 STR16 STR16 STR16
 
@@ -150,15 +145,16 @@ main(void)
                        "FAN_OPEN_PERM|"
                        "FAN_ACCESS_PERM|"
                        "FAN_OPEN_EXEC_PERM|"
+                       "FAN_DIR_MODIFY|"
                        "FAN_ONDIR|"
                        "FAN_EVENT_ON_CHILD|"
-                       "0xdeadfeedb7f8a000"
+                       "0xdeadfeedb7f0a000"
 # endif
 # if XLAT_VERBOSE
                        " */"
 # endif
                        },
-               { ARG_ULL_STR(0xffffffffb7f8a000)
+               { ARG_ULL_STR(0xffffffffb7f0a000)
 # if !XLAT_RAW
                        " /* FAN_??? */"
 # endif
index 118e5fea0db4ad90612d7db642ccc45030ceaaa7..ff0c64b5606d3b908786f9b96e1d299c2068791c 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_fchdir
 
index 4fa06727be63f3dfb49846cbd1bfda543de2ac1e..3bf2da6036b23c5eff4f35bf89337dfbd70a225a 100644 (file)
@@ -3,14 +3,14 @@
  *
  * Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_fchmod
 
 int
 main(void)
 {
-       static const char fname[] = "fchmod_test_file";
-
-       int fd = open(fname, O_CREAT|O_RDONLY, 0400);
-       if (fd < 0)
-               perror_msg_and_fail("open");
-
-       if (unlink(fname))
-               perror_msg_and_fail("unlink");
+       int fd = create_tmpfile(O_RDWR);
 
        long rc = syscall(__NR_fchmod, fd, 0600);
        printf("fchmod(%d, 0600) = %s\n", fd, sprintrc(rc));
index f2fa5dd0a1e62b15cb37074846a3c809bd2d2a98..3fdb5ef4c3027a3135ecf9b19b4d3693b3e010b2 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of fchmodat syscall.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_fchmodat
 
index 98bfd9deb9d16d38fcea99f13e78bc7e97273e19..bc5ca24c024618eff5f9b82fe39f1e3428ed0d0f 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_fchown
 
index 9d52f9a8c180fa8570e24c9305282d154dfa4c3e..9604aa0aac2e1d7b856802a7b77218594086ec32 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_fchown32
 
index 32167bc7a7ef41d130f4279f3bc0a54f4418128b..d790bd98ecabdf53cbac08705bd6fd3144e8103e 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of fchownat syscall.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 #include <fcntl.h>
 
 #if defined __NR_fchownat && defined AT_FDCWD && defined AT_SYMLINK_NOFOLLOW
diff --git a/tests/fcntl--pidns-translation.c b/tests/fcntl--pidns-translation.c
new file mode 100644 (file)
index 0000000..e249424
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "fcntl.c"
diff --git a/tests/fcntl--pidns-translation.gen.test b/tests/fcntl--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..7a93d8a
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fcntl--pidns-translation test_pidns -a8 -e trace=fcntl); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a8 -e trace=fcntl
index b21251711f87887b140c4c5feb16ea341ed41b06..ec18aa798c11481ee2440ec5bb964a32ff4ef7f9 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -13,6 +13,8 @@
 #include <unistd.h>
 #include <assert.h>
 #include "flock.h"
+#include "pidns.h"
+#include "scno.h"
 
 #define FILE_LEN 4096
 
@@ -48,12 +50,14 @@ test_flock_einval(const int cmd, const char *name)
        fl->l_len = (TYPEOF_FLOCK_OFF_T) 0xdefaced2cafef00dULL;
 
        invoke_test_syscall(0, cmd, fl);
+       pidns_print_leader();
        printf("%s(0, %s, {l_type=F_RDLCK, l_whence=SEEK_SET"
               ", l_start=%jd, l_len=%jd}) = %s\n", TEST_SYSCALL_STR, name,
               (intmax_t) fl->l_start, (intmax_t) fl->l_len, errstr);
 
        void *const bad_addr = (void *) fl + 1;
        invoke_test_syscall(0, cmd, bad_addr);
+       pidns_print_leader();
        printf("%s(0, %s, %p) = %s\n",
               TEST_SYSCALL_STR, name, bad_addr, errstr);
 }
@@ -72,12 +76,14 @@ test_flock64_einval(const int cmd, const char *name)
        fl->l_len = (TYPEOF_FLOCK_OFF_T) 0xdefaced2cafef00dULL;
 
        invoke_test_syscall(0, cmd, fl);
+       pidns_print_leader();
        printf("%s(0, %s, {l_type=F_RDLCK, l_whence=SEEK_SET"
               ", l_start=%jd, l_len=%jd}) = %s\n", TEST_SYSCALL_STR, name,
               (intmax_t) fl->l_start, (intmax_t) fl->l_len, errstr);
 
        void *const bad_addr = (void *) fl + 1;
        invoke_test_syscall(0, cmd, bad_addr);
+       pidns_print_leader();
        printf("%s(0, %s, %p) = %s\n",
               TEST_SYSCALL_STR, name, bad_addr, errstr);
 }
@@ -94,6 +100,7 @@ test_flock(void)
        fl->l_len = FILE_LEN;
 
        long rc = invoke_test_syscall(0, F_SETLK, fl);
+       pidns_print_leader();
        printf("%s(0, F_SETLK, {l_type=F_RDLCK, l_whence=SEEK_SET"
               ", l_start=0, l_len=%d}) = %s\n",
               TEST_SYSCALL_STR, FILE_LEN, errstr);
@@ -101,11 +108,13 @@ test_flock(void)
                return;
 
        invoke_test_syscall(0, F_GETLK, fl);
+       pidns_print_leader();
        printf("%s(0, F_GETLK, {l_type=F_UNLCK, l_whence=SEEK_SET"
               ", l_start=0, l_len=%d, l_pid=0}) = 0\n",
               TEST_SYSCALL_STR, FILE_LEN);
 
        invoke_test_syscall(0, F_SETLKW, fl);
+       pidns_print_leader();
        printf("%s(0, F_SETLKW, {l_type=F_UNLCK, l_whence=SEEK_SET"
               ", l_start=0, l_len=%d}) = 0\n",
               TEST_SYSCALL_STR, FILE_LEN);
@@ -124,6 +133,7 @@ test_flock64_ofd(void)
        fl->l_len = FILE_LEN;
 
        long rc = invoke_test_syscall(0, F_OFD_SETLK, fl);
+       pidns_print_leader();
        printf("%s(0, F_OFD_SETLK, {l_type=F_RDLCK, l_whence=SEEK_SET"
               ", l_start=0, l_len=%d}) = %s\n",
               TEST_SYSCALL_STR, FILE_LEN, errstr);
@@ -131,11 +141,13 @@ test_flock64_ofd(void)
                return;
 
        invoke_test_syscall(0, F_OFD_GETLK, fl);
+       pidns_print_leader();
        printf("%s(0, F_OFD_GETLK, {l_type=F_UNLCK, l_whence=SEEK_SET"
               ", l_start=0, l_len=%d, l_pid=0}) = 0\n",
               TEST_SYSCALL_STR, FILE_LEN);
 
        invoke_test_syscall(0, F_OFD_SETLKW, fl);
+       pidns_print_leader();
        printf("%s(0, F_OFD_SETLKW, {l_type=F_UNLCK, l_whence=SEEK_SET"
               ", l_start=0, l_len=%d}) = 0\n",
               TEST_SYSCALL_STR, FILE_LEN);
@@ -167,18 +179,21 @@ test_flock64(void)
 static long
 test_f_owner_ex_type_pid(const int cmd, const char *const cmd_name,
                         const int type, const char *const type_name,
-                        pid_t pid)
+                        enum pid_type pid_type, pid_t pid)
 {
        TAIL_ALLOC_OBJECT_CONST_PTR(struct_kernel_f_owner_ex, fo);
 
        fo->type = type;
        fo->pid = pid;
        long rc = invoke_test_syscall(0, cmd, fo);
-       printf("%s(0, %s, {type=%s, pid=%d}) = %s\n",
-              TEST_SYSCALL_STR, cmd_name, type_name, fo->pid, errstr);
+       pidns_print_leader();
+       printf("%s(0, %s, {type=%s, pid=%d%s}) = %s\n",
+              TEST_SYSCALL_STR, cmd_name, type_name,
+              fo->pid, pidns_pid2str(pid_type), errstr);
 
        void *bad_addr = (void *) fo + 1;
        invoke_test_syscall(0, cmd, bad_addr);
+       pidns_print_leader();
        printf("%s(0, %s, %p) = %s\n",
               TEST_SYSCALL_STR, cmd_name, bad_addr, errstr);
 
@@ -187,35 +202,35 @@ test_f_owner_ex_type_pid(const int cmd, const char *const cmd_name,
 
 static void
 test_f_owner_ex_umove_or_printaddr(const int type, const char *const type_name,
-                                  pid_t pid)
+                                  enum pid_type pid_type, pid_t pid)
 {
        long rc = test_f_owner_ex_type_pid(ARG_STR(F_SETOWN_EX),
-                                          type, type_name, pid);
+                                          type, type_name, pid_type, pid);
        if (!rc)
                test_f_owner_ex_type_pid(ARG_STR(F_GETOWN_EX),
-                                        type, type_name, pid);
+                                        type, type_name, pid_type, pid);
 }
 
 static void
 test_f_owner_ex(void)
 {
-       static const struct {
+       struct {
                int type;
                const char *type_name;
-               pid_t pid[2];
+               enum pid_type pid_type;
+               pid_t pid;
        } a[] = {
-               { ARG_STR(F_OWNER_TID), { 1234567890, 20 } },
-               { ARG_STR(F_OWNER_PID), { 1298126790, 30 } },
-               { ARG_STR(F_OWNER_PGRP), { 1294567890, 40 } }
+               { ARG_STR(F_OWNER_TID), PT_NONE, 1234567890 },
+               { ARG_STR(F_OWNER_PID), PT_NONE, 1234567890 },
+               { ARG_STR(F_OWNER_PGRP), PT_NONE, 1234567890 },
+               { ARG_STR(F_OWNER_TID), PT_TID, syscall(__NR_gettid) },
+               { ARG_STR(F_OWNER_PID), PT_TGID, getpid() },
+               { ARG_STR(F_OWNER_PGRP), PT_PGID, getpgid(0) },
        };
 
-       for (unsigned int i = 0; i < ARRAY_SIZE(a); i++) {
-               for (unsigned int j = 0; j < ARRAY_SIZE(a[0].pid); j++) {
-                       test_f_owner_ex_umove_or_printaddr(a[i].type,
-                                                          a[i].type_name,
-                                                          a[i].pid[j]);
-               }
-       }
+       for (unsigned int i = 0; i < ARRAY_SIZE(a); i++)
+               test_f_owner_ex_umove_or_printaddr(a[i].type, a[i].type_name,
+                       a[i].pid_type, a[i].pid);
 }
 #endif /* TEST_F_OWNER_EX */
 
@@ -228,6 +243,23 @@ struct fcntl_cmd_check {
        void (*print_flags)(long rc);
 };
 
+static void
+test_xetown(void)
+{
+       const int pid = getpid();
+       const char *pid_str = pidns_pid2str(PT_TGID);
+
+       invoke_test_syscall(0, F_SETOWN, (void *) (intptr_t) pid);
+       pidns_print_leader();
+       printf("%s(0, F_SETOWN, %d%s) = %s\n",
+               TEST_SYSCALL_STR, pid, pid_str, errstr);
+
+       invoke_test_syscall(0, F_GETOWN, NULL);
+       pidns_print_leader();
+       printf("%s(0, F_GETOWN) = %d%s\n",
+               TEST_SYSCALL_STR, pid, pid_str);
+}
+
 static void
 print_retval_flags(const struct fcntl_cmd_check *check, long rc)
 {
@@ -243,12 +275,14 @@ static void
 test_other_set_cmd(const struct fcntl_cmd_check *check)
 {
        invoke_test_syscall(check->fd, check->cmd, (void *) check->arg);
+       pidns_print_leader();
        printf("%s(%d, %s, %s) = %s\n",
               TEST_SYSCALL_STR, check->fd,
               check->cmd_str, check->arg_str, errstr);
 
        /* bad file fd */
        invoke_test_syscall(-1, check->cmd, (void *) check->arg);
+       pidns_print_leader();
        printf("%s(-1, %s, %s) = %s\n",
               TEST_SYSCALL_STR, check->cmd_str,
               check->arg_str, errstr);
@@ -258,12 +292,14 @@ static void
 test_other_get_cmd(const struct fcntl_cmd_check *check)
 {
        long rc = invoke_test_syscall(check->fd, check->cmd, NULL);
+       pidns_print_leader();
        printf("%s(%d, %s) = ",
               TEST_SYSCALL_STR, check->fd, check->cmd_str);
        print_retval_flags(check, rc);
 
        /* bad file fd */
        invoke_test_syscall(-1, check->cmd, NULL);
+       pidns_print_leader();
        printf("%s(-1, %s) = %s\n",
               TEST_SYSCALL_STR, check->cmd_str, errstr);
 }
@@ -315,7 +351,6 @@ test_fcntl_others(void)
 {
        static const struct fcntl_cmd_check set_checks[] = {
                { 0, ARG_STR(F_SETFD), ARG_STR(FD_CLOEXEC) },
-               { 0, ARG_STR(F_SETOWN), ARG_STR(20) },
 #ifdef F_SETPIPE_SZ
                { 0, ARG_STR(F_SETPIPE_SZ), ARG_STR(4097) },
 #endif
@@ -336,7 +371,6 @@ test_fcntl_others(void)
        static const struct fcntl_cmd_check get_checks[] = {
                { 0, ARG_STR(F_GETFD), .print_flags = print_flags_getfd },
                { 1, ARG_STR(F_GETFD), .print_flags = print_flags_getfd },
-               { 0, ARG_STR(F_GETOWN) },
 #ifdef F_GETPIPE_SZ
                { 0, ARG_STR(F_GETPIPE_SZ) },
 #endif
@@ -352,20 +386,16 @@ test_fcntl_others(void)
 static void
 create_sample(void)
 {
-       char fname[] = TEST_SYSCALL_STR "_XXXXXX";
-
        (void) close(0);
-       if (mkstemp(fname))
-               perror_msg_and_fail("mkstemp: %s", fname);
-       if (unlink(fname))
-               perror_msg_and_fail("unlink: %s", fname);
-       if (ftruncate(0, FILE_LEN))
+       if (ftruncate(create_tmpfile(O_RDWR), FILE_LEN))
                perror_msg_and_fail("ftruncate");
 }
 
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        create_sample();
        test_flock();
        test_flock64();
@@ -373,7 +403,9 @@ main(void)
        test_f_owner_ex();
 #endif
        test_fcntl_others();
+       test_xetown();
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
index bd9ffbdd5b14f2ff7f890bcbc5e688837c7f283e..ca9c737ba42a1daea4a89effb261b9e7547e24f4 100644 (file)
@@ -1,13 +1,13 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_fcntl
 
@@ -24,6 +24,7 @@ test_flock64_undecoded(const int cmd, const char *name)
                .l_len = 0xdefaced2cafef00dULL
        };
        invoke_test_syscall(0, cmd, &fl);
+       pidns_print_leader();
        printf("%s(0, %s, %p) = %s\n",
               TEST_SYSCALL_STR, name, &fl, errstr);
 }
diff --git a/tests/fcntl64--pidns-translation.c b/tests/fcntl64--pidns-translation.c
new file mode 100644 (file)
index 0000000..c6fdadd
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "fcntl64.c"
diff --git a/tests/fcntl64--pidns-translation.gen.test b/tests/fcntl64--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..3c46451
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fcntl64--pidns-translation test_pidns -a8 -e trace=fcntl64); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a8 -e trace=fcntl64
index 97277b2f808b55953813f1ad7099c5f3ace512b9..07df7224baedf3bd123fe13f5c15cb556e8cdd58 100644 (file)
@@ -1,13 +1,13 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_fcntl64
 
@@ -27,6 +27,7 @@ test_flock64_lk64(void)
        fl->l_len = FILE_LEN;
 
        long rc = invoke_test_syscall(0, F_SETLK64, fl);
+       pidns_print_leader();
        printf("%s(0, F_SETLK64, {l_type=F_RDLCK, l_whence=SEEK_SET"
               ", l_start=0, l_len=%d}) = %s\n",
               TEST_SYSCALL_STR, FILE_LEN, errstr);
@@ -35,11 +36,13 @@ test_flock64_lk64(void)
                return;
 
        invoke_test_syscall(0, F_GETLK64, fl);
+       pidns_print_leader();
        printf("%s(0, F_GETLK64, {l_type=F_UNLCK, l_whence=SEEK_SET"
               ", l_start=0, l_len=%d, l_pid=0}) = 0\n",
               TEST_SYSCALL_STR, FILE_LEN);
 
        invoke_test_syscall(0, F_SETLKW64, fl);
+       pidns_print_leader();
        printf("%s(0, F_SETLKW64, {l_type=F_UNLCK, l_whence=SEEK_SET"
               ", l_start=0, l_len=%d}) = 0\n",
               TEST_SYSCALL_STR, FILE_LEN);
index f4c8d55f03aa72a0baad01e690feef70d62fbf22..a1f2ba291730dabb9ffd931d9bad6bf98196f3af 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_fdatasync
 
index 38cd5af81428d11bc882b0c6527a248d2edbe684..edabde6175020b043189ed844a2dc2792ce680df 100644 (file)
@@ -3,14 +3,14 @@
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_name_to_handle_at && defined __NR_open_by_handle_at
 
index 7a2a905c0ea5a5a2556c13d94262b6105b0e636a..d0efb2106e807c4b6d3c9f36916b01049e59f357 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -11,6 +11,7 @@
 
 # include <stdio.h>
 # include <sys/ioctl.h>
+# include <linux/types.h>
 # include <linux/fiemap.h>
 # include <linux/fs.h>
 # include "xlat.h"
index 3e09d597e373d8050919280df4f1a6619df66fc5..f82314c20a98f32f8d8a8d0b3dc23bd60a212da5 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2019 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -24,3 +24,39 @@ fill_memory(void *ptr, size_t size)
 {
        fill_memory_ex(ptr, size, 0x80, 0x80);
 }
+
+void
+fill_memory16_ex(void *ptr, size_t size, uint16_t start,
+                unsigned int period)
+{
+       uint16_t *p = ptr;
+       size_t i;
+
+       for (i = 0; i < size / sizeof(uint16_t); i++) {
+               p[i] = start + i % period;
+       }
+}
+
+void
+fill_memory16(void *ptr, size_t size)
+{
+       fill_memory16_ex(ptr, size, 0x80c0, 0x8000);
+}
+
+void
+fill_memory32_ex(void *ptr, size_t size, uint32_t start,
+                unsigned int period)
+{
+       uint32_t *p = ptr;
+       size_t i;
+
+       for (i = 0; i < size / sizeof(uint32_t); i++) {
+               p[i] = start + i % period;
+       }
+}
+
+void
+fill_memory32(void *ptr, size_t size)
+{
+       fill_memory32_ex(ptr, size, 0x80a0c0e0, 0x80000000);
+}
diff --git a/tests/filter_seccomp-flag.c b/tests/filter_seccomp-flag.c
new file mode 100644 (file)
index 0000000..480db89
--- /dev/null
@@ -0,0 +1,85 @@
+/*
+ * Check that syscall numbers do not conflict with seccomp filter flags.
+ *
+ * Copyright (c) 2019 Paul Chaignon <paul.chaignon@gmail.com>
+ * Copyright (c) 2018-2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "arch_defs.h"
+#include "sysent.h"
+#include "scno.h"
+
+/* PERSONALITY*_AUDIT_ARCH definitions depend on AUDIT_ARCH_* constants.  */
+#ifdef PERSONALITY0_AUDIT_ARCH
+# include <linux/audit.h>
+# define XLAT_MACROS_ONLY
+#  include "xlat/elf_em.h"
+#  include "xlat/audit_arch.h"
+# undef XLAT_MACROS_ONLY
+#endif
+
+/* Define these shorthand notations to simplify the syscallent files. */
+#include "sysent_shorthand_defs.h"
+
+const struct_sysent sysent0[] = {
+#include "syscallent.h"
+};
+
+#if SUPPORTED_PERSONALITIES > 1
+const struct_sysent sysent1[] = {
+# include "syscallent1.h"
+};
+#endif
+
+#if SUPPORTED_PERSONALITIES > 2
+const struct_sysent sysent2[] = {
+# include "syscallent2.h"
+};
+#endif
+
+const unsigned int nsyscall_vec[SUPPORTED_PERSONALITIES] = {
+       ARRAY_SIZE(sysent0),
+#if SUPPORTED_PERSONALITIES > 1
+       ARRAY_SIZE(sysent1),
+#endif
+#if SUPPORTED_PERSONALITIES > 2
+       ARRAY_SIZE(sysent2),
+#endif
+};
+
+struct audit_arch_t {
+       unsigned int arch;
+       unsigned int flag;
+};
+
+static const struct audit_arch_t audit_arch_vec[SUPPORTED_PERSONALITIES] = {
+#if SUPPORTED_PERSONALITIES > 1
+       PERSONALITY0_AUDIT_ARCH,
+       PERSONALITY1_AUDIT_ARCH,
+# if SUPPORTED_PERSONALITIES > 2
+       PERSONALITY2_AUDIT_ARCH,
+# endif
+#endif
+};
+
+int
+main(void)
+{
+       for (unsigned int p = 0; p < SUPPORTED_PERSONALITIES; ++p) {
+               if (!audit_arch_vec[p].flag)
+                       continue;
+               for (unsigned int nr = 1; nr < nsyscall_vec[p]; ++nr) {
+                       if (!(audit_arch_vec[p].flag & nr))
+                               continue;
+                       error_msg_and_fail("system call number %u of"
+                                          " personality %u conflicts with"
+                                          " seccomp filter flag %#x",
+                                          nr, p, audit_arch_vec[p].flag);
+               }
+       }
+       return 0;
+}
diff --git a/tests/filter_seccomp-flag.gen.test b/tests/filter_seccomp-flag.gen.test
new file mode 100755 (executable)
index 0000000..b1185be
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (filter_seccomp-flag ../$NAME ); do not edit.
+. "${srcdir=.}/init.sh"
+../$NAME 
diff --git a/tests/filter_seccomp-perf.c b/tests/filter_seccomp-perf.c
new file mode 100644 (file)
index 0000000..742e1eb
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * Check seccomp filter performance.
+ *
+ * Copyright (c) 2019 Paul Chaignon <paul.chaignon@gmail.com>
+ * Copyright (c) 2018-2019 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <signal.h>
+#include <stdbool.h>
+#include <stdio.h>
+#include <unistd.h>
+
+static volatile bool stop = false;
+
+static void
+handler(int signo)
+{
+       stop = true;
+}
+
+int
+main(void)
+{
+       unsigned int i;
+       int rc = 0;
+
+       signal(SIGALRM, handler);
+       alarm(1);
+
+       for (i = 0; !stop; i++) {
+               rc |= chdir(".");
+       }
+       printf("%d\n", i);
+       return rc;
+}
diff --git a/tests/filter_seccomp-perf.test b/tests/filter_seccomp-perf.test
new file mode 100755 (executable)
index 0000000..149d704
--- /dev/null
@@ -0,0 +1,27 @@
+#!/bin/sh
+#
+# Check seccomp filter performance.
+#
+# Copyright (c) 2019 Paul Chaignon <paul.chaignon@gmail.com>
+# Copyright (c) 2018-2019 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/init.sh"
+. "${srcdir=.}/filter_seccomp.sh"
+
+args="-f -qq -e signal=none -e trace=fchdir ../$NAME"
+num_regular="$(run_strace               $args)"
+mv "$LOG" "$LOG.regular"
+num_seccomp="$(run_strace --seccomp-bpf $args)"
+mv "$LOG" "$LOG.seccomp"
+match_diff "$LOG.regular" "$LOG.seccomp"
+
+min_ratio=6
+# With seccomp filter enabled, we should be able to complete
+# at least $min_ratio times more chdir system calls.
+ratio="$((num_seccomp / num_regular))"
+if [ "$ratio" -lt "$min_ratio" ]; then
+       fail_ "Only $ratio times more syscalls performed with seccomp filter enabled, expected at least $min_ratio times speedup"
+fi
diff --git a/tests/filter_seccomp.gen.test b/tests/filter_seccomp.gen.test
new file mode 100755 (executable)
index 0000000..d41da05
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (filter_seccomp . "${srcdir=.}/filter_seccomp.sh"; test_prog_set --seccomp-bpf -f); do not edit.
+. "${srcdir=.}/init.sh"
+. "${srcdir=.}/filter_seccomp.sh"; test_prog_set --seccomp-bpf -f
diff --git a/tests/filter_seccomp.in b/tests/filter_seccomp.in
new file mode 100644 (file)
index 0000000..76e4d7e
--- /dev/null
@@ -0,0 +1,4 @@
+fork-f -a26 -qq -e signal=none -e trace=chdir
+vfork-f        -a26 -qq -e signal=none -e trace=chdir
+fork-f -a26 -qq -e signal=none -e trace=chdir,%memory,%ipc,%pure,%signal,%network -e status=failed
+status-none-f  -e trace=!ptrace -e status=none
diff --git a/tests/filter_seccomp.sh b/tests/filter_seccomp.sh
new file mode 100755 (executable)
index 0000000..cf5dee5
--- /dev/null
@@ -0,0 +1,14 @@
+#!/bin/sh
+#
+# Skip the test if seccomp filter is not available.
+#
+# Copyright (c) 2018-2019 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+$STRACE --seccomp-bpf -f -e trace=fchdir / > /dev/null 2> "$LOG" ||:
+if grep -x "[^:]*strace: seccomp filter is requested but unavailable" \
+   "$LOG" > /dev/null; then
+       skip_ 'seccomp filter is unavailable'
+fi
index 53bf1b1cfbc3a8f9e3b48ab6a6445196e266e03b..00d9f47a16da71865169aaeb9a1b13f6f7c081f3 100755 (executable)
@@ -3,7 +3,7 @@
 # Check descriptor set parsing syntax.
 #
 # Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -14,8 +14,10 @@ check_fd_qualify()
 {
        check_e "invalid descriptor '$1'" -e"read=$2"
        check_e "invalid descriptor '$1'" -e "read=$2"
+       check_e "invalid descriptor '$1'" "--read=$2"
        check_e "invalid descriptor '$1'" -e"write=$2"
        check_e "invalid descriptor '$1'" -e "write=$2"
+       check_e "invalid descriptor '$1'" "--write=$2"
 }
 
 for arg in '' , ,, ,,, ; do
index fe42edbed7ad69c86c64548fd2e802cff34d5d78..8dd83cdeecaa65819cfdd594b799df48680a52a4 100755 (executable)
@@ -4,6 +4,7 @@
 #
 # Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
 # Copyright (c) 2017 Nikolay Marchuk <marchuk.nikolay.a@gmail.com>
+# Copyright (c) 2018-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -16,37 +17,51 @@ check_syscall()
 
        check_e "invalid system call '$1'" -e "$2"
        check_e "invalid system call '$1'" -etrace="$2"
+       check_e "invalid system call '$1'" --trace="$2"
        check_e "invalid system call '$1'" -e trace="$2"
 
        check_e "invalid system call '$1'" -eabbrev="$2"
+       check_e "invalid system call '$1'" --abbrev="$2"
        check_e "invalid system call '$1'" -e abbrev="$2"
 
        check_e "invalid system call '$1'" -everbose="$2"
+       check_e "invalid system call '$1'" --verbose="$2"
        check_e "invalid system call '$1'" -e verbose="$2"
 
        check_e "invalid system call '$1'" -eraw="$2"
+       check_e "invalid system call '$1'" --raw="$2"
        check_e "invalid system call '$1'" -e raw="$2"
 
        check_e "invalid system call '$1'" -einject="$2"
+       check_e "invalid system call '$1'" --inject="$2"
        check_e "invalid system call '$1'" -e inject="$2"
        check_e "invalid system call '$1'" -einject="$2:"
        check_e "invalid system call '$1'" -einject="$2::"
        check_e "invalid system call '$1'" -einject="$2:::"
+       check_e "invalid system call '$1'" --inject="$2:"
+       check_e "invalid system call '$1'" --inject="$2::"
+       check_e "invalid system call '$1'" --inject="$2:::"
        check_e "invalid system call '$1'" -e inject="$2:"
        check_e "invalid system call '$1'" -e inject="$2::"
        check_e "invalid system call '$1'" -e inject="$2:::"
        check_e "invalid system call '$1'" -einject="$2:when=3"
+       check_e "invalid system call '$1'" --inject="$2:when=3"
        check_e "invalid system call '$1'" -e inject="$2:when=3"
 
        check_e "invalid system call '$1'" -efault="$2"
+       check_e "invalid system call '$1'" --fault="$2"
        check_e "invalid system call '$1'" -e fault="$2"
        check_e "invalid system call '$1'" -efault="$2:"
        check_e "invalid system call '$1'" -efault="$2::"
        check_e "invalid system call '$1'" -efault="$2:::"
+       check_e "invalid system call '$1'" --fault="$2:"
+       check_e "invalid system call '$1'" --fault="$2::"
+       check_e "invalid system call '$1'" --fault="$2:::"
        check_e "invalid system call '$1'" -e fault="$2:"
        check_e "invalid system call '$1'" -e fault="$2::"
        check_e "invalid system call '$1'" -e fault="$2:::"
        check_e "invalid system call '$1'" -efault="$2:when=4"
+       check_e "invalid system call '$1'" --fault="$2:when=4"
        check_e "invalid system call '$1'" -e fault="$2:when=4"
 }
 
index 64e6df02172cb0d44fbb027ccdcbdbc6dc36e23b..7c775658a89da3a5bfc3d9d7a296815b29e39b69 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of finit_module syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,6 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
 #include "scno.h"
 
 #if defined(__NR_finit_module)
index 4f0444097b0bd4d16964d4c4bd2fbfa2ebe8e583..1253616f4cf14394a3fa703240adb432e0eb591d 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_flock
 
diff --git a/tests/fork--pidns-translation.awk b/tests/fork--pidns-translation.awk
new file mode 100644 (file)
index 0000000..ef6858f
--- /dev/null
@@ -0,0 +1,15 @@
+/fork/ {
+        match($0, "([0-9]+) in strace\x27s PID NS", a);
+        if (a[1])
+                fork_pid = a[1]
+}
+
+/exited with 0/ {
+        if (!exit_pid)
+                exit_pid = $1
+}
+
+END {
+        if (!fork_pid || !exit_pid || fork_pid != exit_pid)
+                exit 1
+}
diff --git a/tests/fork--pidns-translation.c b/tests/fork--pidns-translation.c
new file mode 100644 (file)
index 0000000..1d490ce
--- /dev/null
@@ -0,0 +1,78 @@
+/*
+ * Test PID namespace translation
+ *
+ * Copyright (c) 2020 Ákos Uzonyi <uzonyi.akos@gmail.com>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+#include "pidns.h"
+
+#ifdef __NR_fork
+
+# include <errno.h>
+# include <limits.h>
+# include <sched.h>
+# include <signal.h>
+# include <stdio.h>
+# include <stdlib.h>
+# include <sys/wait.h>
+# include <unistd.h>
+# include <linux/sched.h>
+# include "nsfs.h"
+
+# ifndef CLONE_NEWUSER
+#  define CLONE_NEWUSER 0x10000000
+# endif
+
+# ifndef CLONE_NEWPID
+#  define CLONE_NEWPID 0x20000000
+# endif
+
+static int
+fork_chain(int depth)
+{
+       if (!depth)
+               return 0;
+
+       int pid = syscall(__NR_fork);
+       if (pid < 0)
+               return errno;
+
+       if (!pid)
+               _exit(fork_chain(depth - 1));
+
+       int status;
+       if (wait(&status) < 0)
+               return errno;
+
+       if (!WIFEXITED(status))
+               return -1;
+
+       return WEXITSTATUS(status);
+}
+
+int main(void)
+{
+       check_ns_ioctl();
+
+       if (unshare(CLONE_NEWPID | CLONE_NEWUSER) < 0) {
+               if (errno == EPERM)
+                       perror_msg_and_skip("unshare");
+
+               perror_msg_and_fail("unshare");
+       }
+
+       errno = fork_chain(2);
+       if (errno)
+               perror("fork_chain");
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_fork")
+
+#endif
diff --git a/tests/fork--pidns-translation.test b/tests/fork--pidns-translation.test
new file mode 100755 (executable)
index 0000000..24cc593
--- /dev/null
@@ -0,0 +1,14 @@
+#!/bin/sh
+#
+# Check pidns translation of fork's return value.
+#
+# Copyright (c) 2020 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+. "${srcdir=.}/init.sh"
+
+run_prog
+run_strace -a6 --pidns-translation -f -e trace=fork $args
+match_awk
diff --git a/tests/fsconfig-P.c b/tests/fsconfig-P.c
new file mode 100644 (file)
index 0000000..b763332
--- /dev/null
@@ -0,0 +1,2 @@
+#define PATH_TRACING
+#include "fsconfig.c"
diff --git a/tests/fsconfig-P.gen.test b/tests/fsconfig-P.gen.test
new file mode 100755 (executable)
index 0000000..36001fa
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fsconfig-P -s300 -y -P /dev/full -e trace=fsconfig); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -s300 -y -P /dev/full -e trace=fsconfig
diff --git a/tests/fsconfig.c b/tests/fsconfig.c
new file mode 100644 (file)
index 0000000..2399a6a
--- /dev/null
@@ -0,0 +1,298 @@
+/*
+ * Check decoding of fsconfig syscall.
+ *
+ * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_fsconfig
+
+# include <fcntl.h>
+# include <limits.h>
+# include <stdio.h>
+# include <stdint.h>
+# include <unistd.h>
+
+# define XLAT_MACROS_ONLY
+# include "xlat/fsconfig_cmds.h"
+# undef XLAT_MACROS_ONLY
+
+static const char *errstr;
+
+static long
+k_fsconfig(const unsigned int fs_fd,
+          const unsigned int cmd,
+          const void *key,
+          const void *value,
+          const unsigned int aux)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = fill | fs_fd;
+       const kernel_ulong_t arg2 = fill | cmd;
+       const kernel_ulong_t arg3 = (uintptr_t) key;
+       const kernel_ulong_t arg4 = (uintptr_t) value;
+       const kernel_ulong_t arg5 = fill | aux;
+       const long rc = syscall(__NR_fsconfig,
+                               arg1, arg2, arg3, arg4, arg5, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
+static const char path_full[] = "/dev/full";
+static const int max_string_size = 256;
+static const int max_blob_size = 300;
+static const int huge_blob_size = 1024 * 1024 + 1;
+static const char *fd_path;
+static const void *efault;
+static const char *empty;
+static char *fname;
+static char *key1;
+static char *key;
+static char *val1;
+static char *val;
+static char *blob1;
+static char *blob;
+static int fd;
+
+static void
+test_fsconfig_unknown(void)
+{
+       k_fsconfig(fd, 8, empty, val, -100);
+# ifndef PATH_TRACING
+       printf("fsconfig(%d<%s>, 0x8 /* FSCONFIG_??? */, %p, %p, -100) = %s\n",
+              fd, fd_path, empty, val, errstr);
+# endif
+
+       k_fsconfig(-100, -1, empty, fd_path, fd);
+# ifndef PATH_TRACING
+       printf("fsconfig(-100, 0xffffffff /* FSCONFIG_??? */, %p, %p, %d)"
+              " = %s\n",
+              empty, fd_path, fd, errstr);
+# endif
+}
+
+static void
+test_fsconfig_cmd(const unsigned int cmd, const char *cmd_str)
+{
+       k_fsconfig(fd, cmd, empty, val, -100);
+# ifndef PATH_TRACING
+       printf("fsconfig(%d<%s>, %s, %p, %p, -100) = %s\n",
+              fd, fd_path, cmd_str, empty, val, errstr);
+# endif
+
+       k_fsconfig(-100, cmd, empty, fd_path, fd);
+# ifndef PATH_TRACING
+       printf("fsconfig(-100, %s, %p, %p, %d) = %s\n",
+              cmd_str, empty, fd_path, fd, errstr);
+# endif
+}
+
+static void
+test_fsconfig_set_flag(const unsigned int cmd, const char *cmd_str)
+{
+       k_fsconfig(fd, cmd, key, val, -100);
+# ifndef PATH_TRACING
+       printf("fsconfig(%d<%s>, %s, \"%s\", %p, -100) = %s\n",
+              fd, fd_path, cmd_str, key, val, errstr);
+# endif
+
+       k_fsconfig(fd, cmd, key1, val, -100);
+# ifndef PATH_TRACING
+       printf("fsconfig(%d<%s>, %s, \"%.*s\"..., %p, -100) = %s\n",
+              fd, fd_path, cmd_str, max_string_size, key1, val, errstr);
+# endif
+
+       k_fsconfig(-100, cmd, key, fd_path, fd);
+# ifndef PATH_TRACING
+       printf("fsconfig(-100, %s, \"%s\", %p, %d) = %s\n",
+              cmd_str, key, fd_path, fd, errstr);
+# endif
+}
+
+static void
+test_fsconfig_set_string(const unsigned int cmd, const char *cmd_str)
+{
+       k_fsconfig(fd, cmd, key, val, -100);
+# ifndef PATH_TRACING
+       printf("fsconfig(%d<%s>, %s, \"%s\", \"%s\", -100) = %s\n",
+              fd, fd_path, cmd_str, key, val, errstr);
+# endif
+
+       k_fsconfig(fd, cmd, key1, val1, -100);
+# ifndef PATH_TRACING
+       printf("fsconfig(%d<%s>, %s, \"%.*s\"..., \"%.*s\"..., -100) = %s\n",
+              fd, fd_path, cmd_str, max_string_size, key1, max_string_size, val1,
+              errstr);
+# endif
+
+       k_fsconfig(-100, cmd, key, fd_path, fd);
+# ifndef PATH_TRACING
+       printf("fsconfig(-100, %s, \"%s\", \"%s\", %d) = %s\n",
+              cmd_str, key, fd_path, fd, errstr);
+# endif
+}
+
+static void
+test_fsconfig_set_binary(const unsigned int cmd, const char *cmd_str)
+{
+       k_fsconfig(fd, cmd, key, blob, max_blob_size);
+# ifndef PATH_TRACING
+       printf("fsconfig(%d<%s>, %s, \"%s\", ", fd, fd_path, cmd_str, key);
+       print_quoted_hex(blob, max_blob_size);
+       printf(", %d) = %s\n", max_blob_size, errstr);
+# endif
+
+       k_fsconfig(fd, cmd, key1, blob1, max_blob_size + 1);
+# ifndef PATH_TRACING
+       printf("fsconfig(%d<%s>, %s, \"%.*s\"..., ",
+              fd, fd_path, cmd_str, max_string_size, key1);
+       print_quoted_hex(blob1, max_blob_size);
+       printf("..., %d) = %s\n", max_blob_size + 1, errstr);
+# endif
+
+       k_fsconfig(fd, cmd, key, empty, 0);
+# ifndef PATH_TRACING
+       printf("fsconfig(%d<%s>, %s, \"%s\", \"\", 0) = %s\n",
+              fd, fd_path, cmd_str, key, errstr);
+# endif
+
+       k_fsconfig(fd, cmd, key, fname, -100);
+# ifndef PATH_TRACING
+       printf("fsconfig(%d<%s>, %s, \"%s\", %p, -100) = %s\n",
+              fd, fd_path, cmd_str, key, fname, errstr);
+# endif
+
+       k_fsconfig(fd, cmd, key, fname, huge_blob_size);
+# ifndef PATH_TRACING
+       printf("fsconfig(%d<%s>, %s, \"%s\", %p, %d) = %s\n",
+              fd, fd_path, cmd_str, key, fname, huge_blob_size, errstr);
+# endif
+
+       k_fsconfig(-100, cmd, key, fd_path, sizeof(path_full));
+# ifndef PATH_TRACING
+       printf("fsconfig(-100, %s, \"%s\", ", cmd_str, key);
+       print_quoted_hex(fd_path, sizeof(path_full));
+       printf(", %d) = %s\n", (int) sizeof(path_full), errstr);
+# endif
+
+       k_fsconfig(-100, cmd, key, fname, fd);
+# ifndef PATH_TRACING
+       printf("fsconfig(-100, %s, \"%s\", ", cmd_str, key);
+       print_quoted_hex(fname, fd);
+       printf(", %d) = %s\n", fd, errstr);
+# endif
+}
+
+static void
+test_fsconfig_set_path(const unsigned int cmd, const char *cmd_str)
+{
+       fill_memory_ex(fname, PATH_MAX, '0', 10);
+       k_fsconfig(fd, cmd, key, fname, -100);
+# ifndef PATH_TRACING
+       printf("fsconfig(%d<%s>, %s, \"%s\", \"%.*s\"..., AT_FDCWD) = %s\n",
+              fd, fd_path, cmd_str, key, (int) PATH_MAX - 1, fname, errstr);
+# endif
+
+       fname[PATH_MAX - 1] = '\0';
+       k_fsconfig(fd, cmd, key, fname, -1);
+# ifndef PATH_TRACING
+       printf("fsconfig(%d<%s>, %s, \"%s\", \"%s\", -1) = %s\n",
+              fd, fd_path, cmd_str, key, fname, errstr);
+# endif
+
+       k_fsconfig(-100, cmd, key, empty, fd);
+       printf("fsconfig(-100, %s, \"%s\", \"\", %d<%s>) = %s\n",
+              cmd_str, key, fd, fd_path, errstr);
+
+       k_fsconfig(-1, cmd, 0, fd_path, -100);
+       printf("fsconfig(-1, %s, NULL, \"%s\", AT_FDCWD) = %s\n",
+              cmd_str, fd_path, errstr);
+
+       k_fsconfig(-1, cmd, efault, efault + 1, fd);
+       printf("fsconfig(-1, %s, %p, %p, %d<%s>) = %s\n",
+              cmd_str, efault, efault + 1, fd, fd_path, errstr);
+
+       k_fsconfig(-100, cmd, key, fname, -1);
+# ifndef PATH_TRACING
+       printf("fsconfig(-100, %s, \"%s\", \"%s\", -1) = %s\n",
+              cmd_str, key, fname, errstr);
+# endif
+}
+
+static void
+test_fsconfig_set_fd(const unsigned int cmd, const char *cmd_str)
+{
+       k_fsconfig(fd, cmd, key, val, -100);
+# ifndef PATH_TRACING
+       printf("fsconfig(%d<%s>, %s, \"%s\", %p, -100) = %s\n",
+              fd, fd_path, cmd_str, key, val, errstr);
+# endif
+
+       k_fsconfig(-100, cmd, key1, 0, fd);
+       printf("fsconfig(-100, %s, \"%.*s\"..., NULL, %d<%s>) = %s\n",
+              cmd_str, max_string_size, key1, fd, fd_path, errstr);
+
+       k_fsconfig(-1, cmd, efault, efault + 1, fd);
+       printf("fsconfig(-1, %s, %p, %p, %d<%s>) = %s\n",
+              cmd_str, efault, efault + 1, fd, fd_path, errstr);
+
+       k_fsconfig(-100, cmd, key, fd_path, -1);
+# ifndef PATH_TRACING
+       printf("fsconfig(-100, %s, \"%s\", %p, -1) = %s\n",
+              cmd_str, key, fd_path, errstr);
+# endif
+}
+
+int
+main(void)
+{
+       skip_if_unavailable("/proc/self/fd/");
+
+       fd_path = tail_memdup(path_full, sizeof(path_full));
+       efault = fd_path + sizeof(path_full);
+       empty = efault - 1;
+       fname = tail_alloc(PATH_MAX);
+       key1 = tail_alloc(max_string_size + 1);
+       key = key1 + 1;
+       val1 = tail_alloc(max_string_size + 1);
+       val = val1 + 1;
+       blob1 = tail_alloc(max_blob_size + 1);
+       blob = blob1 + 1;
+
+       fill_memory_ex(fname, PATH_MAX, '0', 10);
+       fill_memory_ex(key1, max_string_size, 'a', 'z' - 'a' + 1);
+       key1[max_string_size] = '\0';
+       fill_memory_ex(val1, max_string_size, 'A', 'Z' - 'A' + 1);
+       val1[max_string_size] = '\0';
+       fill_memory_ex(blob, max_blob_size, '0', 10);
+       blob[0] = 0;
+       blob1[0] = 0;
+        fd = open(fd_path, O_WRONLY);
+        if (fd < 0)
+                perror_msg_and_fail("open: %s", fd_path);
+
+       test_fsconfig_unknown();
+       test_fsconfig_set_flag(ARG_STR(FSCONFIG_SET_FLAG));
+       test_fsconfig_set_string(ARG_STR(FSCONFIG_SET_STRING));
+       test_fsconfig_set_binary(ARG_STR(FSCONFIG_SET_BINARY));
+       test_fsconfig_set_path(ARG_STR(FSCONFIG_SET_PATH));
+       test_fsconfig_set_path(ARG_STR(FSCONFIG_SET_PATH_EMPTY));
+       test_fsconfig_set_fd(ARG_STR(FSCONFIG_SET_FD));
+       test_fsconfig_cmd(ARG_STR(FSCONFIG_CMD_CREATE));
+       test_fsconfig_cmd(ARG_STR(FSCONFIG_CMD_RECONFIGURE));
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_fsconfig")
+
+#endif
diff --git a/tests/fsconfig.gen.test b/tests/fsconfig.gen.test
new file mode 100755 (executable)
index 0000000..f482be1
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fsconfig -s300 -y); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -s300 -y
diff --git a/tests/fsmount.c b/tests/fsmount.c
new file mode 100644 (file)
index 0000000..28b14a4
--- /dev/null
@@ -0,0 +1,97 @@
+/*
+ * Check decoding of fsmount syscall.
+ *
+ * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_fsmount
+
+# include <fcntl.h>
+# include <stdio.h>
+# include <stdint.h>
+# include <unistd.h>
+
+static const char *errstr;
+
+static long
+k_fsmount(const unsigned int fs_fd,
+         const unsigned int flags,
+         const unsigned int attr_flags)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = fill | fs_fd;
+       const kernel_ulong_t arg2 = fill | flags;
+       const kernel_ulong_t arg3 = fill | attr_flags;
+       const long rc = syscall(__NR_fsmount,
+                               arg1, arg2, arg3, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
+int
+main(void)
+{
+       skip_if_unavailable("/proc/self/fd/");
+
+       static const char path[] = "/dev/full";
+        int fd = open(path, O_WRONLY);
+        if (fd < 0)
+                perror_msg_and_fail("open: %s", path);
+
+       struct {
+               unsigned int val;
+               const char *str;
+       } flags[] = {
+               { ARG_STR(0) },
+               { 1, "FSMOUNT_CLOEXEC" },
+               { 2, "0x2 /* FSMOUNT_??? */" },
+               { 0xfffffffe, "0xfffffffe /* FSMOUNT_??? */" },
+               { -1, "FSMOUNT_CLOEXEC|0xfffffffe" }
+       },
+       attrs[] = {
+               { ARG_STR(0) },
+               { 1, "MOUNT_ATTR_RDONLY" },
+               { 0x10, "MOUNT_ATTR_NOATIME" },
+               { 0xbf, "MOUNT_ATTR_RDONLY|MOUNT_ATTR_NOSUID|MOUNT_ATTR_NODEV"
+                       "|MOUNT_ATTR_NOEXEC|MOUNT_ATTR_NOATIME"
+                       "|MOUNT_ATTR_STRICTATIME|MOUNT_ATTR_NODIRATIME" },
+               { 0x40, "0x40 /* MOUNT_ATTR_??? */" },
+               { 0xffffff40, "0xffffff40 /* MOUNT_ATTR_??? */" },
+               { -1, "MOUNT_ATTR_RDONLY|MOUNT_ATTR_NOSUID|MOUNT_ATTR_NODEV"
+                       "|MOUNT_ATTR_NOEXEC|MOUNT_ATTR_NOATIME"
+                       "|MOUNT_ATTR_STRICTATIME|MOUNT_ATTR_NODIRATIME"
+                       "|0xffffff40" }
+       };
+
+       for (unsigned int i = 0; i < ARRAY_SIZE(flags); ++i) {
+               for (unsigned int j = 0; j < ARRAY_SIZE(attrs); ++j) {
+                       k_fsmount(-1, flags[i].val, attrs[j].val);
+                       printf("fsmount(-1, %s, %s) = %s\n",
+                              flags[i].str, attrs[j].str, errstr);
+
+                       k_fsmount(-100, flags[i].val, attrs[j].val);
+                       printf("fsmount(-100, %s, %s) = %s\n",
+                              flags[i].str, attrs[j].str, errstr);
+
+                       k_fsmount(fd, flags[i].val, attrs[j].val);
+                       printf("fsmount(%d<%s>, %s, %s) = %s\n",
+                              fd, path, flags[i].str, attrs[j].str, errstr);
+               }
+       }
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_fsmount")
+
+#endif
diff --git a/tests/fsmount.gen.test b/tests/fsmount.gen.test
new file mode 100755 (executable)
index 0000000..aff762b
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fsmount -a18 -y); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a18 -y
diff --git a/tests/fsopen.c b/tests/fsopen.c
new file mode 100644 (file)
index 0000000..1d8af8b
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * Check decoding of fsopen syscall.
+ *
+ * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_fsopen
+
+# include <stdio.h>
+# include <stdint.h>
+# include <unistd.h>
+
+static const char *errstr;
+
+static long
+k_fsopen(const void *name, const unsigned int flags)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = (uintptr_t) name;
+       const kernel_ulong_t arg2 = fill | flags;
+       const long rc = syscall(__NR_fsopen, arg1, arg2, bad, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
+int
+main(void)
+{
+       char *const name1 = tail_alloc(DEFAULT_STRLEN + 2);
+       char *const name = name1 + 1;
+       const void *const efault = name + DEFAULT_STRLEN + 1;
+       const char *const empty = efault - 1;
+       fill_memory_ex(name1, DEFAULT_STRLEN + 1, '0', 10);
+       name1[DEFAULT_STRLEN + 1] = '\0';
+
+       k_fsopen(name, 0);
+       printf("fsopen(\"%s\", 0) = %s\n", name, errstr);
+
+       k_fsopen(name1, 1);
+       printf("fsopen(\"%.*s\"..., FSOPEN_CLOEXEC) = %s\n",
+              DEFAULT_STRLEN, name1, errstr);
+
+       k_fsopen(0, 2);
+       printf("fsopen(NULL, 0x2 /* FSOPEN_??? */) = %s\n", errstr);
+
+       k_fsopen(efault, 0xfffffffe);
+       printf("fsopen(%p, 0xfffffffe /* FSOPEN_??? */) = %s\n", efault, errstr);
+
+       k_fsopen(empty, -1);
+       printf("fsopen(\"\", FSOPEN_CLOEXEC|0xfffffffe) = %s\n", errstr);
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_fsopen")
+
+#endif
diff --git a/tests/fsopen.gen.test b/tests/fsopen.gen.test
new file mode 100755 (executable)
index 0000000..b4130f0
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fsopen -a35 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a35 
diff --git a/tests/fspick-P.c b/tests/fspick-P.c
new file mode 100644 (file)
index 0000000..f3d41eb
--- /dev/null
@@ -0,0 +1,2 @@
+#define PATH_TRACING
+#include "fspick.c"
diff --git a/tests/fspick-P.gen.test b/tests/fspick-P.gen.test
new file mode 100755 (executable)
index 0000000..98c0021
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fspick-P -a27 -y -P /dev/full -e trace=fspick); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27 -y -P /dev/full -e trace=fspick
diff --git a/tests/fspick.c b/tests/fspick.c
new file mode 100644 (file)
index 0000000..3f7f9d7
--- /dev/null
@@ -0,0 +1,109 @@
+/*
+ * Check decoding of fspick syscall.
+ *
+ * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_fspick
+
+# include <fcntl.h>
+# include <limits.h>
+# include <stdio.h>
+# include <stdint.h>
+# include <unistd.h>
+
+static const char *errstr;
+
+static long
+k_fspick(const unsigned int dfd,
+           const void *fname,
+           const unsigned int flags)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = fill | dfd;
+       const kernel_ulong_t arg2 = (uintptr_t) fname;
+       const kernel_ulong_t arg3 = fill | flags;
+       const long rc = syscall(__NR_fspick, arg1, arg2, arg3, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
+int
+main(void)
+{
+       skip_if_unavailable("/proc/self/fd/");
+
+       static const char path_full[] = "/dev/full";
+       const char *const path = tail_memdup(path_full, sizeof(path_full));
+       char *const fname = tail_alloc(PATH_MAX);
+       const void *const efault = fname + PATH_MAX;
+       const char *const empty = efault - 1;
+       fill_memory_ex(fname, PATH_MAX, '0', 10);
+
+        int dfd = open(path, O_WRONLY);
+        if (dfd < 0)
+                perror_msg_and_fail("open: %s", path);
+
+       k_fspick(-1, 0, 1);
+# ifndef PATH_TRACING
+       printf("fspick(-1, NULL, %s) = %s\n", "FSPICK_CLOEXEC", errstr);
+# endif
+
+       k_fspick(-100, fname, 0);
+# ifndef PATH_TRACING
+       printf("fspick(%s, \"%.*s\"..., 0) = %s\n",
+              "AT_FDCWD", (int) PATH_MAX - 1, fname, errstr);
+# endif
+
+       fname[PATH_MAX - 1] = '\0';
+       k_fspick(dfd, fname, 0xfffffff0);
+       printf("fspick(%d<%s>, \"%s\", %s) = %s\n",
+              dfd, path, fname, "0xfffffff0 /* FSPICK_??? */", errstr);
+
+       k_fspick(-1, efault, 0xf);
+# ifndef PATH_TRACING
+       printf("fspick(-1, %p, %s) = %s\n",
+              efault,
+              "FSPICK_CLOEXEC|FSPICK_SYMLINK_NOFOLLOW"
+              "|FSPICK_NO_AUTOMOUNT|FSPICK_EMPTY_PATH",
+              errstr);
+# endif
+
+       k_fspick(-1, empty, -1);
+# ifndef PATH_TRACING
+       printf("fspick(-1, \"\", %s|0xfffffff0) = %s\n",
+              "FSPICK_CLOEXEC|FSPICK_SYMLINK_NOFOLLOW"
+              "|FSPICK_NO_AUTOMOUNT|FSPICK_EMPTY_PATH",
+              errstr);
+# endif
+
+       if (k_fspick(-1, path, 0) < 0)
+               printf("fspick(-1, \"%s\", 0) = %s\n",
+                      path, errstr);
+       else
+               printf("fspick(-1, \"%s\", 0) = %s<%s>\n",
+                      path, errstr, path);
+
+       if (k_fspick(dfd, empty, 8) < 0)
+               printf("fspick(%d<%s>, \"\", %s) = %s\n",
+                      dfd, path, "FSPICK_EMPTY_PATH", errstr);
+       else
+               printf("fspick(%d<%s>, \"\", %s) = %s<%s>\n",
+                      dfd, path, "FSPICK_EMPTY_PATH", errstr, path);
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_fspick")
+
+#endif
diff --git a/tests/fspick.gen.test b/tests/fspick.gen.test
new file mode 100755 (executable)
index 0000000..a126198
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fspick -a27 -y); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27 -y
index 7a52e0cc79bd9f8b9c2eac6b0e453ab165c8534b..d0b5454dd6f2bcb572be0b5be1319772b4ce7f2b 100644 (file)
@@ -1,13 +1,13 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_fstat
 
index 5d30ca410faf3208b4fe388b716f5d19fa8f9a8a..2ce73a98d7c8131e68f202b1581a38ffd64615fe 100644 (file)
@@ -1,13 +1,13 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_fstat64
 
index 949463c9bb2c094a2f91b1760b6a29c1f2b431fa..965958ef1c1b8bf7b380c39d810e442f36a86cb5 100644 (file)
@@ -1,13 +1,13 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_fstatat64
 
index 8da5c7f2a7c6138e9318147a66861804428da5a0..a453ff222673cfd4e1d69c11aa92e302d7572e63 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fstatat64 -a32 -v -P stat.sample -P /dev/full); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fstatat64 -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
+run_strace_match_diff -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full
index f16094057ecb35f2cdf6e2ecfd0f088b1873c501..e3a38aa7960d04bd7859dd3166ce72d42d8dec1a 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_fstatfs
 
index 14da042a5b56386305863c642257d0b061c65418..95171ca297078e83ade30a63fede4a4db01dc7c4 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_fstatfs64
 
index 5624096b40a7b403ef278c0b7f226e531d702c59..2efc3395baf822ab1315103953becbec96b1e90f 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_fsync
 
index 6c77d4b1c405afff9d402cfdf9739dcdf3afd302..70f813f8cacdbe5a32ae8dc7636bdb73f86975f0 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_ftruncate
 
index b7e350b4166be2e4dd9a3550f167d1a143b7067f..ad7fc4716967bc57306be7550414095ca4474220 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_ftruncate64
 
index 47191f278e752f68627a0636fa20125a03fb9d9d..f246e22ad2ee08666ed6e5cc5858c2a1c9d274b8 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -8,7 +8,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_futex
 
@@ -495,7 +495,7 @@ main(int argc, char *argv[])
         *                 wake val2 processes waiting for uaddr2 in case
         *                 operation encoded in val3 (change of value at uaddr2
         *                 and comparison of previous value against provided
-        *                 constant) succeedes with value at uaddr2. Operation
+        *                 constant) succeeds with value at uaddr2. Operation
         *                 result is written to value of uaddr2 (in any case).
         * 1. uaddr   - futex address
         * 2. op      - FUTEX_WAKE_OP
index 8024f87b1a059436aaf42f6e0f4162df4457d235..5782f1f6317ce4de851e01338c78c9b060ec553b 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of futimesat syscall.
  *
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_futimesat
 
index e6d1fc7bac7fbb3c05cb103dc699ee187e6fd29d..e0a2952df7c2883ccc5967810429bdd18c1ad011 100644 (file)
@@ -1,5 +1,5 @@
 # Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in; do not edit.
-GEN_TESTS = _newselect.gen.test _newselect-P.gen.test accept.gen.test accept4.gen.test access.gen.test acct.gen.test add_key.gen.test adjtimex.gen.test aio.gen.test aio_pgetevents.gen.test alarm.gen.test bpf.gen.test bpf-obj_get_info_by_fd.gen.test bpf-obj_get_info_by_fd-prog.gen.test bpf-obj_get_info_by_fd-prog-v.gen.test bpf-obj_get_info_by_fd-v.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 dev-yy.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 fanotify_mark-Xabbrev.gen.test fanotify_mark-Xraw.gen.test fanotify_mark-Xverbose.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 fstat-Xabbrev.gen.test fstat-Xraw.gen.test fstat-Xverbose.gen.test fstat64.gen.test fstat64-Xabbrev.gen.test fstat64-Xraw.gen.test fstat64-Xverbose.gen.test fstatat64.gen.test fstatfs.gen.test fstatfs64.gen.test fsync.gen.test fsync-y.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 io_uring_enter.gen.test io_uring_register.gen.test io_uring_setup.gen.test ioctl_block.gen.test ioctl_dm.gen.test ioctl_dm-v.gen.test ioctl_evdev.gen.test ioctl_evdev-v.gen.test ioctl_inotify.gen.test ioctl_kvm_run.gen.test ioctl_kvm_run-v.gen.test ioctl_kvm_run_auxstr_vcpu.gen.test ioctl_loop.gen.test ioctl_loop-nv.gen.test ioctl_loop-v.gen.test ioctl_mtd.gen.test ioctl_nbd.gen.test ioctl_nsfs.gen.test ioctl_perf.gen.test ioctl_ptp.gen.test ioctl_random.gen.test ioctl_rtc.gen.test ioctl_rtc-v.gen.test ioctl_scsi.gen.test ioctl_sg_io_v3.gen.test ioctl_sg_io_v4.gen.test ioctl_sock_gifconf.gen.test ioctl_uffdio.gen.test ioctl_v4l2.gen.test ioperm.gen.test iopl.gen.test ioprio.gen.test ioprio-Xabbrev.gen.test ioprio-Xraw.gen.test ioprio-Xverbose.gen.test ip_mreq.gen.test ipc.gen.test ipc_msg.gen.test ipc_msg-Xabbrev.gen.test ipc_msg-Xraw.gen.test ipc_msg-Xverbose.gen.test ipc_msgbuf-Xabbrev.gen.test ipc_msgbuf-Xraw.gen.test ipc_msgbuf-Xverbose.gen.test ipc_sem.gen.test ipc_sem-Xabbrev.gen.test ipc_sem-Xraw.gen.test ipc_sem-Xverbose.gen.test ipc_shm.gen.test ipc_shm-Xabbrev.gen.test ipc_shm-Xraw.gen.test ipc_shm-Xverbose.gen.test kcmp.gen.test kcmp-y.gen.test kern_features.gen.test kernel_version.gen.test kernel_version-Xabbrev.gen.test kernel_version-Xraw.gen.test kernel_version-Xverbose.gen.test kexec_file_load.gen.test kexec_load.gen.test keyctl.gen.test keyctl-Xabbrev.gen.test keyctl-Xraw.gen.test keyctl-Xverbose.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 memfd_create-Xabbrev.gen.test memfd_create-Xraw.gen.test memfd_create-Xverbose.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 mmap-Xabbrev.gen.test mmap-Xraw.gen.test mmap-Xverbose.gen.test mmap64.gen.test mmap64-Xabbrev.gen.test mmap64-Xraw.gen.test mmap64-Xverbose.gen.test mmsg.gen.test mmsg-silent.gen.test mmsg_name.gen.test mmsg_name-v.gen.test modify_ldt.gen.test mount.gen.test mount-Xabbrev.gen.test mount-Xraw.gen.test mount-Xverbose.gen.test move_pages.gen.test move_pages-Xabbrev.gen.test move_pages-Xraw.gen.test move_pages-Xverbose.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-packet_mreq.gen.test net-packet_mreq-Xabbrev.gen.test net-packet_mreq-Xraw.gen.test net-packet_mreq-Xverbose.gen.test net-sockaddr.gen.test net-tpacket_req.gen.test net-tpacket_stats.gen.test net-yy-inet6.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 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.gen.test nlattr_br_port_msg.gen.test nlattr_crypto_user_alg.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_af_spec.gen.test nlattr_ifla_brport.gen.test nlattr_ifla_linkinfo.gen.test nlattr_ifla_port.gen.test nlattr_ifla_xdp.gen.test nlattr_inet_diag_msg.gen.test nlattr_inet_diag_req_compat.gen.test nlattr_inet_diag_req_v2.gen.test nlattr_mdba_mdb_entry.gen.test nlattr_mdba_router_port.gen.test nlattr_ndmsg.gen.test nlattr_ndtmsg.gen.test nlattr_netconfmsg.gen.test nlattr_netlink_diag_msg.gen.test nlattr_nlmsgerr.gen.test nlattr_packet_diag_msg.gen.test nlattr_rtgenmsg.gen.test nlattr_rtmsg.gen.test nlattr_smc_diag_msg.gen.test nlattr_tc_stats.gen.test nlattr_tca_stab.gen.test nlattr_tcamsg.gen.test nlattr_tcmsg.gen.test nlattr_unix_diag_msg.gen.test old_mmap.gen.test old_mmap-P.gen.test old_mmap-Xabbrev.gen.test old_mmap-Xraw.gen.test old_mmap-Xverbose.gen.test old_mmap-v-none.gen.test oldfstat.gen.test oldlstat.gen.test oldselect.gen.test oldselect-P.gen.test oldselect-efault.gen.test oldselect-efault-P.gen.test oldstat.gen.test open.gen.test openat.gen.test orphaned_process_group.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 personality-Xabbrev.gen.test personality-Xraw.gen.test personality-Xverbose.gen.test pidfd_send_signal.gen.test pipe2.gen.test pkey_alloc.gen.test pkey_free.gen.test pkey_mprotect.gen.test ppoll.gen.test ppoll-P.gen.test ppoll-v.gen.test pread64-pwrite64.gen.test preadv.gen.test preadv-pwritev.gen.test preadv2-pwritev2.gen.test printpath-umovestr.gen.test printpath-umovestr-peekdata.gen.test printpath-umovestr-undumpable.gen.test printsignal-Xabbrev.gen.test printsignal-Xraw.gen.test printsignal-Xverbose.gen.test printstr.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 ptrace_syscall_info.gen.test pwritev.gen.test quotactl.gen.test quotactl-Xabbrev.gen.test quotactl-Xraw.gen.test quotactl-Xverbose.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 remap_file_pages-Xabbrev.gen.test remap_file_pages-Xraw.gen.test remap_file_pages-Xverbose.gen.test rename.gen.test renameat.gen.test renameat2.gen.test request_key.gen.test riscv_flush_icache.gen.test rmdir.gen.test rt_sigpending.gen.test rt_sigprocmask.gen.test rt_sigqueueinfo.gen.test rt_sigreturn.gen.test rt_sigsuspend.gen.test rt_sigtimedwait.gen.test rt_tgsigqueueinfo.gen.test s390_guarded_storage.gen.test s390_guarded_storage-v.gen.test s390_pci_mmio_read_write.gen.test s390_runtime_instr.gen.test s390_sthyi.gen.test s390_sthyi-v.gen.test sched.gen.test sched_get_priority_mxx.gen.test sched_rr_get_interval.gen.test sched_xetaffinity.gen.test sched_xetattr.gen.test sched_xetparam.gen.test sched_xetscheduler.gen.test sched_yield.gen.test seccomp-filter.gen.test seccomp-filter-v.gen.test seccomp_get_action_avail.gen.test select.gen.test select-P.gen.test semop.gen.test sendfile.gen.test sendfile64.gen.test set_mempolicy.gen.test setdomainname.gen.test setfsgid.gen.test setfsgid32.gen.test setfsuid.gen.test setfsuid32.gen.test setgid.gen.test setgid32.gen.test setgroups.gen.test setgroups32.gen.test sethostname.gen.test setns.gen.test setregid.gen.test setregid32.gen.test setresgid.gen.test setresgid32.gen.test setresuid.gen.test setresuid32.gen.test setreuid.gen.test setreuid32.gen.test setrlimit.gen.test setrlimit-Xabbrev.gen.test setrlimit-Xraw.gen.test setrlimit-Xverbose.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_error.gen.test so_linger.gen.test so_peercred.gen.test so_peercred-Xabbrev.gen.test so_peercred-Xraw.gen.test so_peercred-Xverbose.gen.test sock_filter-v.gen.test sock_filter-v-Xabbrev.gen.test sock_filter-v-Xraw.gen.test sock_filter-v-Xverbose.gen.test sockaddr_xlat-Xabbrev.gen.test sockaddr_xlat-Xraw.gen.test sockaddr_xlat-Xverbose.gen.test socketcall.gen.test sockopt-sol_netlink.gen.test sockopt-timestamp.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_personality_32.gen.test trace_personality_64.gen.test trace_personality_regex_32.gen.test trace_personality_regex_64.gen.test trace_personality_regex_x32.gen.test trace_personality_x32.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 utimensat-Xabbrev.gen.test utimensat-Xraw.gen.test utimensat-Xverbose.gen.test utimes.gen.test vfork-f.gen.test vhangup.gen.test vmsplice.gen.test wait4.gen.test wait4-v.gen.test waitid.gen.test waitid-v.gen.test waitpid.gen.test xattr.gen.test xattr-strings.gen.test xet_robust_list.gen.test xetitimer.gen.test xetpgid.gen.test xetpriority.gen.test xettimeofday.gen.test
+GEN_TESTS = _newselect.gen.test _newselect-P.gen.test accept.gen.test accept4.gen.test access.gen.test acct.gen.test add_key.gen.test adjtimex.gen.test aio.gen.test aio_pgetevents.gen.test alarm.gen.test bpf.gen.test bpf-obj_get_info_by_fd.gen.test bpf-obj_get_info_by_fd-prog.gen.test bpf-obj_get_info_by_fd-prog-v.gen.test bpf-obj_get_info_by_fd-v.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 clone3.gen.test clone3-Xabbrev.gen.test clone3-Xraw.gen.test clone3-Xverbose.gen.test clone3-success-Xabbrev.gen.test clone3-success-Xraw.gen.test clone3-success-Xverbose.gen.test clone_parent.gen.test clone_parent--quiet-exit.gen.test clone_parent-q.gen.test clone_parent-qq.gen.test clone_ptrace--quiet-attach.gen.test clone_ptrace--quiet-exit.gen.test clone_ptrace-q.gen.test clone_ptrace-qq.gen.test close_range.gen.test close_range-P.gen.test close_range-y.gen.test close_range-yy.gen.test copy_file_range.gen.test creat.gen.test delete_module.gen.test dev--decode-fds-dev.gen.test dev--decode-fds-path.gen.test dev--decode-fds-socket.gen.test dev-yy.gen.test dup.gen.test dup-P.gen.test dup-y.gen.test dup-yy.gen.test dup2.gen.test dup2-P.gen.test dup2-y.gen.test dup2-yy.gen.test dup3.gen.test dup3-P.gen.test dup3-y.gen.test dup3-yy.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-P.gen.test faccessat-y.gen.test faccessat-yy.gen.test faccessat2-P.gen.test faccessat2-y.gen.test faccessat2-yy.gen.test fadvise64_64.gen.test fallocate.gen.test fanotify_init.gen.test fanotify_mark.gen.test fanotify_mark-Xabbrev.gen.test fanotify_mark-Xraw.gen.test fanotify_mark-Xverbose.gen.test fchdir.gen.test fchmod.gen.test fchmodat.gen.test fchown.gen.test fchown32.gen.test fchownat.gen.test fcntl.gen.test fcntl--pidns-translation.gen.test fcntl64.gen.test fcntl64--pidns-translation.gen.test fdatasync.gen.test file_handle.gen.test file_ioctl.gen.test filter_seccomp.gen.test filter_seccomp-flag.gen.test finit_module.gen.test flock.gen.test fork-f.gen.test fsconfig.gen.test fsconfig-P.gen.test fsmount.gen.test fsopen.gen.test fspick.gen.test fspick-P.gen.test fstat.gen.test fstat-Xabbrev.gen.test fstat-Xraw.gen.test fstat-Xverbose.gen.test fstat64.gen.test fstat64-Xabbrev.gen.test fstat64-Xraw.gen.test fstat64-Xverbose.gen.test fstatat64.gen.test fstatfs.gen.test fstatfs64.gen.test fsync.gen.test fsync-y.gen.test ftruncate.gen.test ftruncate64.gen.test futimesat.gen.test get_mempolicy.gen.test getcpu.gen.test getcwd.gen.test getdents.gen.test getdents-v.gen.test getdents64.gen.test getdents64-v.gen.test getegid.gen.test getegid-creds.gen.test getegid32.gen.test getegid32-creds.gen.test geteuid.gen.test geteuid-creds.gen.test geteuid32.gen.test geteuid32-creds.gen.test getgid.gen.test getgid-creds.gen.test getgid32.gen.test getgid32-creds.gen.test getgroups.gen.test getgroups32.gen.test getpeername.gen.test getpgrp.gen.test getpgrp--pidns-translation.gen.test getpid.gen.test getpid--pidns-translation.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 getsid--pidns-translation.gen.test getsockname.gen.test gettid.gen.test getuid-creds.gen.test getuid32.gen.test getuid32-creds.gen.test getxgid.gen.test getxpid.gen.test getxuid.gen.test group_req.gen.test inet-cmsg.gen.test init_module.gen.test inotify.gen.test inotify_init.gen.test inotify_init1.gen.test inotify_init1-y.gen.test io_uring_enter.gen.test io_uring_register.gen.test io_uring_setup.gen.test ioctl_block.gen.test ioctl_dm.gen.test ioctl_dm-v.gen.test ioctl_evdev.gen.test ioctl_evdev-Xabbrev.gen.test ioctl_evdev-Xraw.gen.test ioctl_evdev-Xverbose.gen.test ioctl_evdev-v.gen.test ioctl_evdev-v-Xabbrev.gen.test ioctl_evdev-v-Xraw.gen.test ioctl_evdev-v-Xverbose.gen.test ioctl_evdev-success-Xabbrev.gen.test ioctl_evdev-success-Xraw.gen.test ioctl_evdev-success-Xverbose.gen.test ioctl_evdev-success-v.gen.test ioctl_evdev-success-v-Xabbrev.gen.test ioctl_evdev-success-v-Xraw.gen.test ioctl_evdev-success-v-Xverbose.gen.test ioctl_hdio.gen.test ioctl_hdio-Xabbrev.gen.test ioctl_hdio-Xraw.gen.test ioctl_hdio-Xverbose.gen.test ioctl_hdio-v.gen.test ioctl_hdio-v-Xabbrev.gen.test ioctl_hdio-v-Xraw.gen.test ioctl_hdio-v-Xverbose.gen.test ioctl_hdio-success.gen.test ioctl_hdio-success-Xabbrev.gen.test ioctl_hdio-success-Xraw.gen.test ioctl_hdio-success-Xverbose.gen.test ioctl_hdio-success-v.gen.test ioctl_hdio-success-v-Xabbrev.gen.test ioctl_hdio-success-v-Xraw.gen.test ioctl_hdio-success-v-Xverbose.gen.test ioctl_inotify.gen.test ioctl_kvm_run.gen.test ioctl_kvm_run-v.gen.test ioctl_kvm_run_auxstr_vcpu.gen.test ioctl_loop.gen.test ioctl_loop-nv.gen.test ioctl_loop-v.gen.test ioctl_mtd.gen.test ioctl_nbd.gen.test ioctl_nsfs.gen.test ioctl_perf.gen.test ioctl_perf-success.gen.test ioctl_ptp.gen.test ioctl_random.gen.test ioctl_rtc.gen.test ioctl_rtc-v.gen.test ioctl_scsi.gen.test ioctl_sg_io_v3.gen.test ioctl_sg_io_v4.gen.test ioctl_sock_gifconf.gen.test ioctl_tee.gen.test ioctl_uffdio.gen.test ioctl_v4l2.gen.test ioctl_v4l2-Xabbrev.gen.test ioctl_v4l2-Xraw.gen.test ioctl_v4l2-Xverbose.gen.test ioctl_v4l2-v.gen.test ioctl_v4l2-v-Xabbrev.gen.test ioctl_v4l2-v-Xraw.gen.test ioctl_v4l2-v-Xverbose.gen.test ioctl_v4l2-success.gen.test ioctl_v4l2-success-Xabbrev.gen.test ioctl_v4l2-success-Xraw.gen.test ioctl_v4l2-success-Xverbose.gen.test ioctl_v4l2-success-v.gen.test ioctl_v4l2-success-v-Xabbrev.gen.test ioctl_v4l2-success-v-Xraw.gen.test ioctl_v4l2-success-v-Xverbose.gen.test ioctl_watchdog.gen.test ioperm.gen.test iopl.gen.test ioprio.gen.test ioprio--pidns-translation.gen.test ioprio-Xabbrev.gen.test ioprio-Xraw.gen.test ioprio-Xverbose.gen.test ip_mreq.gen.test ipc.gen.test ipc_msg.gen.test ipc_msg-Xabbrev.gen.test ipc_msg-Xraw.gen.test ipc_msg-Xverbose.gen.test ipc_msgbuf-Xabbrev.gen.test ipc_msgbuf-Xraw.gen.test ipc_msgbuf-Xverbose.gen.test ipc_sem.gen.test ipc_sem-Xabbrev.gen.test ipc_sem-Xraw.gen.test ipc_sem-Xverbose.gen.test ipc_shm.gen.test ipc_shm-Xabbrev.gen.test ipc_shm-Xraw.gen.test ipc_shm-Xverbose.gen.test kcmp.gen.test kcmp-y.gen.test kcmp-y--pidns-translation.gen.test kern_features.gen.test kernel_version.gen.test kernel_version-Xabbrev.gen.test kernel_version-Xraw.gen.test kernel_version-Xverbose.gen.test kexec_file_load.gen.test kexec_load.gen.test keyctl.gen.test keyctl-Xabbrev.gen.test keyctl-Xraw.gen.test keyctl-Xverbose.gen.test kill.gen.test kill--pidns-translation.gen.test ksysent.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 maybe_switch_current_tcp.gen.test maybe_switch_current_tcp--quiet-thread-execve.gen.test mbind.gen.test mbind-Xabbrev.gen.test mbind-Xraw.gen.test mbind-Xverbose.gen.test membarrier.gen.test memfd_create.gen.test memfd_create-Xabbrev.gen.test memfd_create-Xraw.gen.test memfd_create-Xverbose.gen.test migrate_pages.gen.test migrate_pages--pidns-translation.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 mmap-Xabbrev.gen.test mmap-Xraw.gen.test mmap-Xverbose.gen.test mmap64.gen.test mmap64-Xabbrev.gen.test mmap64-Xraw.gen.test mmap64-Xverbose.gen.test mmsg.gen.test mmsg-silent.gen.test mmsg_name.gen.test mmsg_name-v.gen.test modify_ldt.gen.test mount.gen.test mount-Xabbrev.gen.test mount-Xraw.gen.test mount-Xverbose.gen.test move_mount.gen.test move_mount-P.gen.test move_pages.gen.test move_pages-Xabbrev.gen.test move_pages-Xraw.gen.test move_pages-Xverbose.gen.test move_pages--pidns-translation.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--decode-fds-dev-netlink.gen.test net--decode-fds-none-netlink.gen.test net--decode-fds-path-netlink.gen.test net--decode-fds-socket-netlink.gen.test net-icmp_filter.gen.test net-packet_mreq.gen.test net-packet_mreq-Xabbrev.gen.test net-packet_mreq-Xraw.gen.test net-packet_mreq-Xverbose.gen.test net-sockaddr.gen.test net-sockaddr--pidns-translation.gen.test net-tpacket_req.gen.test net-tpacket_stats.gen.test net-yy-inet6.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 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.gen.test nlattr_br_port_msg.gen.test nlattr_crypto_user_alg.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_af_spec.gen.test nlattr_ifla_brport.gen.test nlattr_ifla_linkinfo.gen.test nlattr_ifla_port.gen.test nlattr_ifla_xdp.gen.test nlattr_ifla_xdp-y.gen.test nlattr_inet_diag_msg.gen.test nlattr_inet_diag_req_compat.gen.test nlattr_inet_diag_req_v2.gen.test nlattr_mdba_mdb_entry.gen.test nlattr_mdba_router_port.gen.test nlattr_ndmsg.gen.test nlattr_ndtmsg.gen.test nlattr_netconfmsg.gen.test nlattr_netlink_diag_msg.gen.test nlattr_nlmsgerr.gen.test nlattr_packet_diag_msg.gen.test nlattr_rtgenmsg.gen.test nlattr_rtmsg.gen.test nlattr_smc_diag_msg.gen.test nlattr_tc_stats.gen.test nlattr_tca_stab.gen.test nlattr_tcamsg.gen.test nlattr_tcmsg.gen.test nlattr_unix_diag_msg.gen.test old_mmap.gen.test old_mmap-P.gen.test old_mmap-Xabbrev.gen.test old_mmap-Xraw.gen.test old_mmap-Xverbose.gen.test old_mmap-v-none.gen.test oldfstat.gen.test oldlstat.gen.test oldselect.gen.test oldselect-P.gen.test oldselect-efault.gen.test oldselect-efault-P.gen.test oldstat.gen.test open.gen.test open_tree.gen.test open_tree-P.gen.test openat.gen.test openat2.gen.test openat2-Xabbrev.gen.test openat2-Xraw.gen.test openat2-Xverbose.gen.test openat2-v.gen.test openat2-v-y.gen.test openat2-v-y-Xabbrev.gen.test openat2-v-y-Xraw.gen.test openat2-v-y-Xverbose.gen.test openat2-y.gen.test orphaned_process_group.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 personality-Xabbrev.gen.test personality-Xraw.gen.test personality-Xverbose.gen.test pidfd_getfd.gen.test pidfd_getfd-y.gen.test pidfd_getfd-yy.gen.test pidfd_open.gen.test pidfd_open--decode-fd-path.gen.test pidfd_open--decode-fd-pidfd.gen.test pidfd_open--decode-fd-socket.gen.test pidfd_open-P.gen.test pidfd_open-y.gen.test pidfd_open-yy.gen.test pidfd_open--pidns-translation.gen.test pidfd_send_signal.gen.test pidfd_send_signal--pidns-translation.gen.test pipe2.gen.test pkey_alloc.gen.test pkey_free.gen.test pkey_mprotect.gen.test ppoll.gen.test ppoll-P.gen.test ppoll-v.gen.test pread64-pwrite64.gen.test preadv.gen.test preadv-pwritev.gen.test preadv2-pwritev2.gen.test printpath-umovestr.gen.test printpath-umovestr-peekdata.gen.test printpath-umovestr-undumpable.gen.test printsignal-Xabbrev.gen.test printsignal-Xraw.gen.test printsignal-Xverbose.gen.test printstr.gen.test printstrn-umoven.gen.test printstrn-umoven-peekdata.gen.test printstrn-umoven-undumpable.gen.test prlimit64.gen.test prlimit64--pidns-translation.gen.test process_vm_readv.gen.test process_vm_readv--pidns-translation.gen.test process_vm_writev.gen.test process_vm_writev--pidns-translation.gen.test pselect6.gen.test ptrace.gen.test ptrace_syscall_info.gen.test pwritev.gen.test quotactl.gen.test quotactl-Xabbrev.gen.test quotactl-Xraw.gen.test quotactl-Xverbose.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 recv-MSG_TRUNC.gen.test recvfrom.gen.test recvfrom-MSG_TRUNC.gen.test recvmmsg-timeout.gen.test recvmsg.gen.test regex.gen.test remap_file_pages.gen.test remap_file_pages-Xabbrev.gen.test remap_file_pages-Xraw.gen.test remap_file_pages-Xverbose.gen.test rename.gen.test renameat.gen.test renameat2.gen.test request_key.gen.test riscv_flush_icache.gen.test rmdir.gen.test rt_sigpending.gen.test rt_sigprocmask.gen.test rt_sigqueueinfo.gen.test rt_sigqueueinfo--pidns-translation.gen.test rt_sigreturn.gen.test rt_sigsuspend.gen.test rt_sigtimedwait.gen.test rt_tgsigqueueinfo.gen.test rt_tgsigqueueinfo--pidns-translation.gen.test s390_guarded_storage.gen.test s390_guarded_storage-v.gen.test s390_pci_mmio_read_write.gen.test s390_runtime_instr.gen.test s390_sthyi.gen.test s390_sthyi-v.gen.test sched.gen.test sched_get_priority_mxx.gen.test sched_rr_get_interval.gen.test sched_xetaffinity.gen.test sched_xetaffinity--pidns-translation.gen.test sched_xetattr.gen.test sched_xetattr--pidns-translation.gen.test sched_xetparam.gen.test sched_xetparam--pidns-translation.gen.test sched_xetscheduler.gen.test sched_xetscheduler--pidns-translation.gen.test sched_yield.gen.test seccomp-filter.gen.test seccomp-filter-v.gen.test seccomp_get_action_avail.gen.test select.gen.test select-P.gen.test semop.gen.test semop-indirect.gen.test semtimedop.gen.test sendfile.gen.test sendfile64.gen.test set_mempolicy.gen.test set_mempolicy-Xabbrev.gen.test set_mempolicy-Xraw.gen.test set_mempolicy-Xverbose.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 setrlimit-Xabbrev.gen.test setrlimit-Xraw.gen.test setrlimit-Xverbose.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 signal_receive--pidns-translation.gen.test signalfd4.gen.test sigpending.gen.test sigprocmask.gen.test sigreturn.gen.test sigsuspend.gen.test so_error.gen.test so_linger.gen.test so_peercred.gen.test so_peercred-Xabbrev.gen.test so_peercred-Xraw.gen.test so_peercred-Xverbose.gen.test so_peercred--pidns-translation.gen.test sock_filter-v.gen.test sock_filter-v-Xabbrev.gen.test sock_filter-v-Xraw.gen.test sock_filter-v-Xverbose.gen.test sockaddr_xlat-Xabbrev.gen.test sockaddr_xlat-Xraw.gen.test sockaddr_xlat-Xverbose.gen.test socketcall.gen.test sockopt-sol_netlink.gen.test sockopt-timestamp.gen.test splice.gen.test stat.gen.test stat64.gen.test statfs.gen.test statfs64.gen.test status-all.gen.test status-failed.gen.test status-failed-long.gen.test status-failed-status.gen.test status-none.gen.test status-successful.gen.test status-successful-long.gen.test status-successful-status.gen.test status-unfinished.gen.test statx.gen.test strace--absolute-timestamps.gen.test strace--absolute-timestamps-format-time.gen.test strace--absolute-timestamps-format-time-precision-s.gen.test strace--absolute-timestamps-format-time-precision-ms.gen.test strace--absolute-timestamps-format-time-precision-us.gen.test strace--absolute-timestamps-format-time-precision-ns.gen.test strace--absolute-timestamps-format-unix-precision-s.gen.test strace--absolute-timestamps-format-unix-precision-ms.gen.test strace--absolute-timestamps-format-unix-precision-us.gen.test strace--absolute-timestamps-format-unix-precision-ns.gen.test strace--follow-forks-output-separately.gen.test strace--relative-timestamps.gen.test strace--relative-timestamps-s.gen.test strace--relative-timestamps-ms.gen.test strace--relative-timestamps-us.gen.test strace--relative-timestamps-ns.gen.test strace--syscall-times.gen.test strace--syscall-times-s.gen.test strace--syscall-times-ms.gen.test strace--syscall-times-us.gen.test strace--syscall-times-ns.gen.test strace--strings-in-hex.gen.test strace--strings-in-hex-all.gen.test strace--strings-in-hex-non-ascii.gen.test strace--timestamps.gen.test strace--timestamps-time.gen.test strace--timestamps-time-s.gen.test strace--timestamps-time-ms.gen.test strace--timestamps-time-us.gen.test strace--timestamps-time-ns.gen.test strace--timestamps-unix-s.gen.test strace--timestamps-unix-ms.gen.test strace--timestamps-unix-us.gen.test strace--timestamps-unix-ns.gen.test strace-n.gen.test strace-x.gen.test strace-xx.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 tgkill.gen.test tgkill--pidns-translation.gen.test threads-execve--quiet-thread-execve.gen.test threads-execve-q.gen.test threads-execve-qq.gen.test threads-execve-qqq.gen.test time.gen.test timer_create.gen.test timer_xettime.gen.test timerfd_xettime.gen.test times.gen.test times-fail.gen.test tkill.gen.test tkill--pidns-translation.gen.test trace_clock.gen.test trace_creds.gen.test trace_fstat.gen.test trace_fstatfs.gen.test trace_lstat.gen.test trace_personality_32.gen.test trace_personality_64.gen.test trace_personality_regex_32.gen.test trace_personality_regex_64.gen.test trace_personality_regex_x32.gen.test trace_personality_x32.gen.test trace_question.gen.test trace_stat.gen.test trace_stat_like.gen.test trace_statfs.gen.test trace_statfs_like.gen.test trie_test.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 umovestr_cached_adjacent.gen.test unlink.gen.test unlinkat.gen.test unshare.gen.test userfaultfd.gen.test ustat.gen.test utime.gen.test utimensat.gen.test utimensat-Xabbrev.gen.test utimensat-Xraw.gen.test utimensat-Xverbose.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 xet_robust_list--pidns-translation.gen.test xetitimer.gen.test xetpgid.gen.test xetpgid--pidns-translation.gen.test xetpriority.gen.test xetpriority--pidns-translation.gen.test xettimeofday.gen.test
 
 $(srcdir)/_newselect.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
@@ -79,6 +79,63 @@ $(srcdir)/clock_nanosleep.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tes
 $(srcdir)/clock_xettime.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/clone3.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone3-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone3-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone3-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone3-success-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone3-success-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone3-success-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone_parent.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone_parent--quiet-exit.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone_parent-q.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone_parent-qq.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone_ptrace--quiet-attach.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone_ptrace--quiet-exit.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone_ptrace-q.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/clone_ptrace-qq.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/close_range.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/close_range-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/close_range-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/close_range-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/copy_file_range.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -88,18 +145,54 @@ $(srcdir)/creat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/delete_module.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/dev--decode-fds-dev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dev--decode-fds-path.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dev--decode-fds-socket.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/dev-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
 $(srcdir)/dup.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/dup-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dup-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dup-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/dup2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/dup2-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dup2-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dup2-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/dup3.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/dup3-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dup3-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/dup3-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/epoll_create.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -124,7 +217,22 @@ $(srcdir)/execveat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/execveat-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
-$(srcdir)/faccessat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+$(srcdir)/faccessat-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat2-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat2-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat2-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
 $(srcdir)/fadvise64_64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
@@ -169,9 +277,15 @@ $(srcdir)/fchownat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/fcntl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/fcntl--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/fcntl64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/fcntl64--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/fdatasync.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -181,6 +295,12 @@ $(srcdir)/file_handle.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.i
 $(srcdir)/file_ioctl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/filter_seccomp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/filter_seccomp-flag.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/finit_module.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -190,6 +310,24 @@ $(srcdir)/flock.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/fork-f.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/fsconfig.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/fsconfig-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/fsmount.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/fsopen.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/fspick.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/fspick-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/fstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -250,27 +388,51 @@ $(srcdir)/getcwd.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/getdents.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getdents-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getdents64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getdents64-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getegid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getegid-creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getegid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getegid32-creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/geteuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/geteuid-creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/geteuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/geteuid32-creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getgid-creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getgid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getgid32-creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getgroups.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -283,9 +445,15 @@ $(srcdir)/getpeername.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.i
 $(srcdir)/getpgrp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getpgrp--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getpid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getpid--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getppid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -313,16 +481,31 @@ $(srcdir)/getrusage.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/getsid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getsid--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getsockname.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
 $(srcdir)/gettid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/getuid-creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/getuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
-$(srcdir)/getxxid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+$(srcdir)/getuid32-creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/getxgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/getxpid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/getxuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
 $(srcdir)/group_req.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
@@ -337,9 +520,15 @@ $(srcdir)/init_module.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.i
 $(srcdir)/inotify.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/inotify_init.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/inotify_init1.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/inotify_init1-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/io_uring_enter.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -361,9 +550,96 @@ $(srcdir)/ioctl_dm-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/ioctl_evdev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_evdev-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_evdev-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_evdev-v-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-v-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-v-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-success-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-success-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-success-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-success-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-success-v-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-success-v-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_evdev-success-v-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-v-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-v-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-v-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-success.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-success-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-success-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-success-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-success-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-success-v-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-success-v-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_hdio-success-v-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_inotify.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -397,6 +673,9 @@ $(srcdir)/ioctl_nsfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/ioctl_perf.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_perf-success.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_ptp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -421,12 +700,63 @@ $(srcdir)/ioctl_sg_io_v4.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_test
 $(srcdir)/ioctl_sock_gifconf.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_tee.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/ioctl_uffdio.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
 $(srcdir)/ioctl_v4l2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/ioctl_v4l2-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-v-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-v-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-v-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-success.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-success-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-success-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-success-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-success-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-success-v-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-success-v-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_v4l2-success-v-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_watchdog.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/ioperm.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -436,6 +766,9 @@ $(srcdir)/iopl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/ioprio.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/ioprio--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/ioprio-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -502,6 +835,9 @@ $(srcdir)/kcmp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/kcmp-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/kcmp-y--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/kern_features.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -538,6 +874,12 @@ $(srcdir)/keyctl-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tes
 $(srcdir)/kill.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/kill--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/ksysent.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/lchown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -562,9 +904,24 @@ $(srcdir)/lstat64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/madvise.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/maybe_switch_current_tcp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/maybe_switch_current_tcp--quiet-thread-execve.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/mbind.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/mbind-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/mbind-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/mbind-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/membarrier.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -583,6 +940,9 @@ $(srcdir)/memfd_create-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/g
 $(srcdir)/migrate_pages.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/migrate_pages--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/mincore.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -655,6 +1015,12 @@ $(srcdir)/mount-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/mount-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/move_mount.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/move_mount-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/move_pages.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -667,6 +1033,9 @@ $(srcdir)/move_pages-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tes
 $(srcdir)/move_pages-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/move_pages--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/mq.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -694,6 +1063,18 @@ $(srcdir)/munlockall.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/nanosleep.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/net--decode-fds-dev-netlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/net--decode-fds-none-netlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/net--decode-fds-path-netlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/net--decode-fds-socket-netlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/net-icmp_filter.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -712,6 +1093,9 @@ $(srcdir)/net-packet_mreq-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir
 $(srcdir)/net-sockaddr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/net-sockaddr--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/net-tpacket_req.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -823,6 +1207,9 @@ $(srcdir)/nlattr_ifla_port.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_te
 $(srcdir)/nlattr_ifla_xdp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/nlattr_ifla_xdp-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/nlattr_inet_diag_msg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -922,9 +1309,45 @@ $(srcdir)/oldstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/open.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/open_tree.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/open_tree-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/openat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/openat2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-v-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-v-y-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-v-y-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-v-y-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat2-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/orphaned_process_group.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -952,9 +1375,45 @@ $(srcdir)/personality-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_te
 $(srcdir)/personality-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/pidfd_getfd.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_getfd-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_getfd-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_open.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_open--decode-fd-path.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_open--decode-fd-pidfd.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_open--decode-fd-socket.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_open-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_open-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_open-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/pidfd_open--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/pidfd_send_signal.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/pidfd_send_signal--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/pipe2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -1021,12 +1480,21 @@ $(srcdir)/printstrn-umoven-undumpable.gen.test: $(abs_srcdir)/gen_tests.sh $(src
 $(srcdir)/prlimit64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/prlimit64--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/process_vm_readv.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/process_vm_readv--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/process_vm_writev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/process_vm_writev--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/pselect6.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -1078,9 +1546,15 @@ $(srcdir)/readlinkat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/reboot.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/recv-MSG_TRUNC.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/recvfrom.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/recvfrom-MSG_TRUNC.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/recvmmsg-timeout.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -1129,6 +1603,9 @@ $(srcdir)/rt_sigprocmask.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_test
 $(srcdir)/rt_sigqueueinfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/rt_sigqueueinfo--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/rt_sigreturn.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -1141,6 +1618,9 @@ $(srcdir)/rt_sigtimedwait.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tes
 $(srcdir)/rt_tgsigqueueinfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/rt_tgsigqueueinfo--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/s390_guarded_storage.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -1171,15 +1651,27 @@ $(srcdir)/sched_rr_get_interval.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/g
 $(srcdir)/sched_xetaffinity.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/sched_xetaffinity--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/sched_xetattr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/sched_xetattr--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/sched_xetparam.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/sched_xetparam--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/sched_xetscheduler.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/sched_xetscheduler--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/sched_yield.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -1201,6 +1693,12 @@ $(srcdir)/select-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/semop.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/semop-indirect.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/semtimedop.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/sendfile.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -1210,6 +1708,15 @@ $(srcdir)/sendfile64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/set_mempolicy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/set_mempolicy-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/set_mempolicy-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/set_mempolicy-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/setdomainname.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -1303,6 +1810,9 @@ $(srcdir)/signal.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/signal_receive.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/signal_receive--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/signalfd4.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -1336,6 +1846,9 @@ $(srcdir)/so_peercred-Xraw.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_te
 $(srcdir)/so_peercred-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/so_peercred--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/sock_filter-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -1381,9 +1894,147 @@ $(srcdir)/statfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/statfs64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/status-all.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/status-failed.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/status-failed-long.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/status-failed-status.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/status-none.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/status-successful.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/status-successful-long.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/status-successful-status.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/status-unfinished.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/statx.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/strace--absolute-timestamps.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-time.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-time-precision-s.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-time-precision-ms.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-time-precision-us.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-time-precision-ns.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-unix-precision-s.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-unix-precision-ms.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-unix-precision-us.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--absolute-timestamps-format-unix-precision-ns.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--follow-forks-output-separately.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--relative-timestamps.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--relative-timestamps-s.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--relative-timestamps-ms.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--relative-timestamps-us.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--relative-timestamps-ns.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--syscall-times.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--syscall-times-s.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--syscall-times-ms.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--syscall-times-us.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--syscall-times-ns.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--strings-in-hex.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--strings-in-hex-all.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--strings-in-hex-non-ascii.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-time.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-time-s.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-time-ms.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-time-us.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-time-ns.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-unix-s.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-unix-ms.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-unix-us.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace--timestamps-unix-ns.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace-n.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace-x.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/strace-xx.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/swap.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -1414,6 +2065,24 @@ $(srcdir)/syslog.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/tee.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/tgkill.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/tgkill--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/threads-execve--quiet-thread-execve.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/threads-execve-q.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/threads-execve-qq.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/threads-execve-qqq.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/time.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -1432,6 +2101,18 @@ $(srcdir)/times.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 $(srcdir)/times-fail.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/tkill.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/tkill--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_clock.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_creds.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/trace_fstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -1474,6 +2155,9 @@ $(srcdir)/trace_statfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.
 $(srcdir)/trace_statfs_like.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/trie_test.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/truncate.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -1495,6 +2179,9 @@ $(srcdir)/umovestr-illptr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tes
 $(srcdir)/umovestr3.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/umovestr_cached_adjacent.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/unlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
@@ -1561,14 +2248,23 @@ $(srcdir)/xattr-strings.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests
 $(srcdir)/xet_robust_list.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/xet_robust_list--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/xetitimer.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
 $(srcdir)/xetpgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/xetpgid--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/xetpriority.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
 
+$(srcdir)/xetpriority--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+       $(AM_V_GEN) $^ $@
+
 $(srcdir)/xettimeofday.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
        $(AM_V_GEN) $^ $@
index 487b9608a20f13c0758c4f99bf8d974b54c42990..359462a1d01d6a125e3e95512daae279101a7482 100644 (file)
@@ -1,6 +1,6 @@
 # Input for gen_tests.sh
 #
-# Copyright (c) 2017-2019 The strace developers.
+# Copyright (c) 2017-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -9,7 +9,7 @@ _newselect
 _newselect-P    -e trace=_newselect -P /dev/full 9>>/dev/full
 accept -a22
 accept4        -a37
-access -a30 -access_sample
+access -a30 --trace-path=access_sample
 acct   -a20
 add_key        -a30 -s12
 adjtimex       -a15
@@ -31,13 +31,44 @@ clock       test_trace_expr 'times|fcntl.*' -e/clock
 clock_adjtime  -a37
 clock_nanosleep        -e trace=clock_nanosleep,clock_gettime
 clock_xettime  -a36 -e trace=clock_getres,clock_gettime,clock_settime
+clone3 -a16
+clone3-Xabbrev -a16 -Xabbrev  -e trace=clone3
+clone3-Xraw    -a16 -Xraw     -e trace=clone3
+clone3-Xverbose        -a16 -Xverbose -e trace=clone3
+clone3-success-Xabbrev +clone3-success.test -a16 -Xabbrev
+clone3-success-Xraw    +clone3-success.test -a16 -Xraw
+clone3-success-Xverbose        +clone3-success.test -a16 -Xverbose
+clone_parent +clone_ptrace.test
+clone_parent--quiet-exit +clone_ptrace.test --quiet=exit,personality
+clone_parent-q +clone_ptrace.test -q
+clone_parent-qq +clone_ptrace.test -qq
+clone_ptrace--quiet-attach +clone_ptrace.test --quiet=attach,personality
+clone_ptrace--quiet-exit +clone_ptrace.test --quiet=exit,personality
+clone_ptrace-q +clone_ptrace.test -q
+clone_ptrace-qq +clone_ptrace.test -qq
+close_range    -a21 7>>/dev/full
+close_range-P  -a21 --trace=close_range -P /dev/full 7>>/dev/full
+close_range-y  -a33 --trace=close_range -y 7>>/dev/full
+close_range-yy -a33 --trace=close_range -yy 7>>/dev/full
 copy_file_range
 creat  -a20
 delete_module  -a23
+dev--decode-fds-dev    -a30 -e trace=openat,fsync -P "/dev/full" -P "/dev/zero" -P "/dev/sda" -e decode-fds=dev
+dev--decode-fds-path   -a19 -e trace=openat,fsync -P "/dev/full" -P "/dev/zero" -P "/dev/sda" -e decode-fds=path
+dev--decode-fds-socket -a19 -e trace=openat,fsync -P "/dev/full" -P "/dev/zero" -P "/dev/sda" --decode-fds=socket
 dev-yy -a30 -e trace=openat,fsync -P "/dev/full" -P "/dev/zero" -P "/dev/sda" -yy
-dup    -a8
-dup2   -a13
-dup3   -a24
+dup    -a7 9>>/dev/full
+dup-P  -a7 --trace=dup -P /dev/full 9>>/dev/full
+dup-y  -a8 --trace=dup -y 9>>/dev/full
+dup-yy -a8 --trace=dup -yy 9>>/dev/full
+dup2   -a11 9>>/dev/full
+dup2-P -a11 --trace=dup2 -P /dev/full 9>>/dev/full
+dup2-y -a13 --trace=dup2 -y 9>>/dev/full
+dup2-yy        -a13 --trace=dup2 -yy 9>>/dev/full
+dup3   -a13 7>>/dev/full
+dup3-P -a13 --trace=dup3 -P /dev/full 7>>/dev/full
+dup3-y -a15 --trace=dup3 -y 7>>/dev/full
+dup3-yy        -a15 --trace=dup3 -yy 7>>/dev/full
 epoll_create   -a17
 epoll_create1  -a28
 epoll_ctl
@@ -46,7 +77,12 @@ epoll_wait   -a26
 erestartsys    -a34 -e signal=none -e trace=recvfrom
 execveat
 execveat-v     -v -e trace=execveat
-faccessat      -P $NAME.sample
+faccessat-P    -a23 --trace=faccessat -P /dev/full
+faccessat-y    +faccessat.test -a24 -y
+faccessat-yy   +faccessat.test -a24 -yy
+faccessat2-P   -a27 --trace=faccessat2 -P /dev/full
+faccessat2-y   +faccessat2.test -a28 -y
+faccessat2-yy  +faccessat2.test -a28 -yy
 fadvise64_64   +fadvise64.test
 fallocate      -a18
 fanotify_init
@@ -61,13 +97,23 @@ fchown      -a16
 fchown32       -a18
 fchownat
 fcntl  -a8
+fcntl--pidns-translation       test_pidns -a8 -e trace=fcntl
 fcntl64        -a8
+fcntl64--pidns-translation     test_pidns -a8 -e trace=fcntl64
 fdatasync      -a14
 file_handle    -e trace=name_to_handle_at,open_by_handle_at
 file_ioctl     +ioctl.test
+filter_seccomp . "${srcdir=.}/filter_seccomp.sh"; test_prog_set --seccomp-bpf -f
+filter_seccomp-flag    ../$NAME
 finit_module   -a25
 flock  -a19
 fork-f -a26 -qq -f -e signal=none -e trace=chdir
+fsconfig       -s300 -y
+fsconfig-P     -s300 -y -P /dev/full -e trace=fsconfig
+fsmount        -a18 -y
+fsopen -a35
+fspick -a27 -y
+fspick-P       -a27 -y -P /dev/full -e trace=fspick
 fstat  -a15 -v -P stat.sample
 fstat-Xabbrev -a15 -v -Xabbrev -P stat.sample -e trace=fstat
 fstat-Xraw -a15 -v -Xraw -P stat.sample -e trace=fstat
@@ -76,7 +122,7 @@ fstat64      -a17 -v -P stat.sample
 fstat64-Xabbrev -a17 -Xabbrev -v -P stat.sample -e trace=fstat64
 fstat64-Xraw -a17 -Xraw -v -P stat.sample -e trace=fstat64
 fstat64-Xverbose -a17 -Xverbose -v -P stat.sample -e trace=fstat64
-fstatat64      -a32 -v -P stat.sample -P /dev/full
+fstatat64      -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full
 fstatfs        -a18
 fstatfs64      -a24
 fsync  -a10
@@ -87,19 +133,29 @@ futimesat  -a28
 get_mempolicy  -s3 -a38
 getcpu -a25
 getcwd -a18
-getdents       -a22 -v
-getdents64     -a24 -v
+getdents       -a31
+getdents-v     -a22 -v --trace=getdents
+getdents64     -a33
+getdents64-v   -a24 -v --trace=getdents64
 getegid        +getuid.test
+getegid-creds  +getuid.test
 getegid32      +getuid.test
+getegid32-creds        +getuid.test
 geteuid        +getuid.test
+geteuid-creds  +getuid.test
 geteuid32      +getuid.test
+geteuid32-creds        +getuid.test
 getgid +getuid.test
+getgid-creds   +getuid.test
 getgid32       +getuid.test
+getgid32-creds +getuid.test
 getgroups      -a17
 getgroups32    -a19
 getpeername    -a27
 getpgrp        -a10
+getpgrp--pidns-translation     test_pidns -e trace=getpgrp -a10
 getpid -a9
+getpid--pidns-translation      test_pidns -e trace=getpid -a9
 getppid        -a10
 getrandom      -a32 -s3
 getresgid      -a25
@@ -109,23 +165,59 @@ getresuid32       -a27
 getrlimit      -a27
 getrusage      -v
 getsid -a10
+getsid--pidns-translation      test_pidns -e trace=getsid -a10
 getsockname    -a27
 gettid -a9
+getuid-creds   +getuid.test
 getuid32       +getuid.test
-getxxid        -a10 -e trace=getxpid,getxuid,getxgid
+getuid32-creds +getuid.test
+getxgid        -a10
+getxpid        -a10
+getxuid        -a10
 group_req      -e trace=setsockopt
 inet-cmsg      -e trace=recvmsg
 init_module    -a27
 inotify        -a23 -e trace=inotify_add_watch,inotify_rm_watch
+inotify_init   -a15
 inotify_init1  -a27
+inotify_init1-y        -a27 -y -e trace=inotify_init1
 io_uring_enter -y
 io_uring_register      -y
 io_uring_setup -a26 -y
 ioctl_block    +ioctl.test
 ioctl_dm       +ioctl.test -s9
 ioctl_dm-v     +ioctl.test -v -s9
-ioctl_evdev    +ioctl.test
-ioctl_evdev-v  +ioctl.test -v
+ioctl_evdev    +ioctl.test -a26
+ioctl_evdev-Xabbrev    +ioctl.test -a26 -Xabbrev
+ioctl_evdev-Xraw       +ioctl.test -a28 -Xraw
+ioctl_evdev-Xverbose   +ioctl.test -a41 -Xverbose
+ioctl_evdev-v  +ioctl.test -a26 -v
+ioctl_evdev-v-Xabbrev  +ioctl.test -a26 -v -Xabbrev
+ioctl_evdev-v-Xraw     +ioctl.test -a28 -v -Xraw
+ioctl_evdev-v-Xverbose +ioctl.test -a41 -v -Xverbose
+ioctl_evdev-success-Xabbrev    +ioctl_evdev-success.test -Xabbrev
+ioctl_evdev-success-Xraw       +ioctl_evdev-success.test -a27 -Xraw
+ioctl_evdev-success-Xverbose   +ioctl_evdev-success.test -a43 -Xverbose
+ioctl_evdev-success-v  +ioctl_evdev-success.test -a26 -v
+ioctl_evdev-success-v-Xabbrev  +ioctl_evdev-success.test -v -Xabbrev
+ioctl_evdev-success-v-Xraw     +ioctl_evdev-success.test -a27 -v -Xraw
+ioctl_evdev-success-v-Xverbose +ioctl_evdev-success.test -a43 -v -Xverbose
+ioctl_hdio     +ioctl.test -a27
+ioctl_hdio-Xabbrev     +ioctl.test -a27 -Xabbrev
+ioctl_hdio-Xraw        +ioctl.test -a20 -Xraw
+ioctl_hdio-Xverbose    +ioctl.test -a39 -Xverbose
+ioctl_hdio-v   +ioctl.test -a27 -v
+ioctl_hdio-v-Xabbrev   +ioctl.test -a27 -v -Xabbrev
+ioctl_hdio-v-Xraw      +ioctl.test -a20 -v -Xraw
+ioctl_hdio-v-Xverbose  +ioctl.test -a39 -v -Xverbose
+ioctl_hdio-success     +ioctl-success.sh -a27
+ioctl_hdio-success-Xabbrev     +ioctl-success.sh -a27 -Xabbrev
+ioctl_hdio-success-Xraw        +ioctl-success.sh -a20 -Xraw
+ioctl_hdio-success-Xverbose    +ioctl-success.sh -a39 -Xverbose
+ioctl_hdio-success-v   +ioctl-success.sh -a27 -v
+ioctl_hdio-success-v-Xabbrev   +ioctl-success.sh -a27 -v -Xabbrev
+ioctl_hdio-success-v-Xraw      +ioctl-success.sh -a20 -v -Xraw
+ioctl_hdio-success-v-Xverbose  +ioctl-success.sh -a39 -v -Xverbose
 ioctl_inotify  +ioctl.test
 ioctl_kvm_run  +ioctl.test -a36 -y
 ioctl_kvm_run-v        +ioctl.test -v -a36 -y
@@ -137,6 +229,7 @@ ioctl_mtd   +ioctl.test
 ioctl_nbd      +ioctl.test -y
 ioctl_nsfs     +ioctl.test -esignal=none
 ioctl_perf     +ioctl.test
+ioctl_perf-success +ioctl-success.sh -a35
 ioctl_ptp      +ioctl.test
 ioctl_random   +ioctl.test
 ioctl_rtc      +ioctl.test
@@ -145,11 +238,29 @@ ioctl_scsi        +ioctl.test
 ioctl_sg_io_v3 +ioctl.test
 ioctl_sg_io_v4 +ioctl.test
 ioctl_sock_gifconf     +ioctl.test -a28 -s1
+ioctl_tee      +ioctl.test
 ioctl_uffdio   +ioctl.test
 ioctl_v4l2     +ioctl.test
+ioctl_v4l2-Xabbrev     +ioctl.test -Xabbrev
+ioctl_v4l2-Xraw        +ioctl.test -Xraw
+ioctl_v4l2-Xverbose    +ioctl.test -Xverbose
+ioctl_v4l2-v   +ioctl.test -v
+ioctl_v4l2-v-Xabbrev   +ioctl.test -v -Xabbrev
+ioctl_v4l2-v-Xraw      +ioctl.test -v -Xraw
+ioctl_v4l2-v-Xverbose  +ioctl.test -v -Xverbose
+ioctl_v4l2-success     +ioctl-success.sh -a29
+ioctl_v4l2-success-Xabbrev     +ioctl-success.sh -a29 -Xabbrev
+ioctl_v4l2-success-Xraw        +ioctl-success.sh -a27 -Xraw
+ioctl_v4l2-success-Xverbose    +ioctl-success.sh -a30 -Xverbose
+ioctl_v4l2-success-v   +ioctl-success.sh -a29 -v
+ioctl_v4l2-success-v-Xabbrev   +ioctl-success.sh -a29 -v -Xabbrev
+ioctl_v4l2-success-v-Xraw      +ioctl-success.sh -a27 -v -Xraw
+ioctl_v4l2-success-v-Xverbose  +ioctl-success.sh -a29 -v -Xverbose
+ioctl_watchdog +ioctl.test
 ioperm -a27
 iopl   -a8
 ioprio -a18 -e trace=ioprio_get,ioprio_set
+ioprio--pidns-translation      test_pidns -a18 -e trace=ioprio_get,ioprio_set
 ioprio-Xabbrev -a18 -e trace=ioprio_get,ioprio_set -Xabbrev
 ioprio-Xraw    -a18 -e trace=ioprio_get,ioprio_set -Xraw
 ioprio-Xverbose        -a18 -e trace=ioprio_get,ioprio_set -Xverbose
@@ -160,18 +271,19 @@ ipc_msg-Xabbrev   +ipc.sh -Xabbrev -a26
 ipc_msg-Xraw   +ipc.sh -Xraw -a16
 ipc_msg-Xverbose       +ipc.sh -Xverbose -a34
 ipc_msgbuf-Xabbrev     +ipc_msgbuf.test -Xabbrev
-ipc_msgbuf-Xraw        +ipc_msgbuf.test -Xraw -a22
+ipc_msgbuf-Xraw        +ipc_msgbuf.test -Xraw -a19
 ipc_msgbuf-Xverbose    +ipc_msgbuf.test -Xverbose
 ipc_sem        +ipc.sh -a29
 ipc_sem-Xabbrev        +ipc.sh -Xabbrev -a29
 ipc_sem-Xraw   +ipc.sh -Xraw -a19
 ipc_sem-Xverbose       +ipc.sh -Xverbose -a36
-ipc_shm        +ipc.sh -a29
-ipc_shm-Xabbrev        +ipc.sh -Xabbrev -a29
+ipc_shm        +ipc.sh -a26
+ipc_shm-Xabbrev        +ipc.sh -Xabbrev -a26
 ipc_shm-Xraw   +ipc.sh -Xraw -a19
-ipc_shm-Xverbose       +ipc.sh -Xverbose -a36
+ipc_shm-Xverbose       +ipc.sh -Xverbose -a34
 kcmp   -a22
 kcmp-y -a22 -y -e trace=kcmp
+kcmp-y--pidns-translation      test_pidns -a22 -y -e trace=kcmp
 kern_features -a16
 kernel_version -a16 -v -e trace=bpf
 kernel_version-Xabbrev -a16 -Xabbrev -v -e trace=bpf
@@ -184,21 +296,29 @@ keyctl-Xabbrev    -a31 -s10 -e trace=keyctl -Xabbrev
 keyctl-Xraw    -a13 -s10 -e trace=keyctl -Xraw
 keyctl-Xverbose        -a41 -s10 -e trace=keyctl -Xverbose
 kill   -a12 -esignal=none
+kill--pidns-translation        test_pidns -a12 -e trace=kill -esignal=none
+ksysent        ../$NAME
 lchown -a30
 lchown32       -a32
 link
 linkat
 lookup_dcookie -a27
-lstat  -a32 -v -P stat.sample -P /dev/full
-lstat64        -a32 -v -P stat.sample -P /dev/full
+lstat  -a31 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full
+lstat64        -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full
 madvise        -a33
+maybe_switch_current_tcp       -a30 -f -e trace=execveat
+maybe_switch_current_tcp--quiet-thread-execve  -a30 -s48 -f -e trace=execveat --quiet=personality,thread-execve
 mbind
+mbind-Xabbrev  -Xabbrev -e trace=mbind
+mbind-Xraw     -a33 -Xraw -e trace=mbind
+mbind-Xverbose -Xverbose -e trace=mbind
 membarrier     -a36
 memfd_create
 memfd_create-Xabbrev   -Xabbrev -e trace=memfd_create
 memfd_create-Xraw      -a30 -Xraw -e trace=memfd_create
 memfd_create-Xverbose  -Xverbose -e trace=memfd_create
 migrate_pages  -a33
+migrate_pages--pidns-translation       test_pidns -a33 -e trace=migrate_pages
 mincore        -a22
 mkdir  -a20
 mkdirat        -a28
@@ -223,10 +343,13 @@ mount             -a33
 mount-Xabbrev  -a33 -e trace=mount -Xabbrev
 mount-Xraw     -a33 -e trace=mount -Xraw
 mount-Xverbose -a33 -e trace=mount -Xverbose
+move_mount     -y
+move_mount-P   -y -P /dev/full -e trace=move_mount
 move_pages     -s3
 move_pages-Xabbrev     -s3 -e trace=move_pages -Xabbrev
 move_pages-Xraw        -s3 -a36 -e trace=move_pages -Xraw
 move_pages-Xverbose    -s3 -e trace=move_pages -Xverbose
+move_pages--pidns-translation  test_pidns -s3 -e trace=move_pages
 mq     -a32 -e trace=mq_getsetattr,mq_open,mq_unlink
 mq_sendrecv    -a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink
 mq_sendrecv-read       -eread=0 -a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink
@@ -236,12 +359,17 @@ msg_control-v     -v -a21 -e trace=sendmsg
 msg_name       -a20 -e trace=recvmsg
 munlockall     -a13
 nanosleep      -a20
+net--decode-fds-dev-netlink    +net-yy-netlink.test --decode-fds=dev
+net--decode-fds-none-netlink   +net-yy-netlink.test --decode-fds=none -a9
+net--decode-fds-path-netlink   +net-yy-netlink.test --decode-fds=path
+net--decode-fds-socket-netlink +net-yy-netlink.test --decode-fds=socket
 net-icmp_filter        -e trace=getsockopt,setsockopt
 net-packet_mreq -e trace=setsockopt
 net-packet_mreq-Xabbrev        -e trace=setsockopt -Xabbrev
 net-packet_mreq-Xraw   -e trace=setsockopt -Xraw
 net-packet_mreq-Xverbose       -e trace=setsockopt -Xverbose
 net-sockaddr   -a24 -e trace=connect
+net-sockaddr--pidns-translation        test_pidns -a24 -e trace=connect
 net-tpacket_req -e trace=setsockopt
 net-tpacket_stats -e trace=getsockopt
 net-yy-inet6   +net-yy-inet.test
@@ -254,7 +382,7 @@ netlink_protocol    -e trace=sendto
 netlink_route  +netlink_sock_diag.test
 netlink_selinux        +netlink_sock_diag.test
 netlink_xfrm   +netlink_sock_diag.test
-newfstatat     -a32 -v -P stat.sample -P /dev/full
+newfstatat     -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full
 nfnetlink_acct                 +netlink_sock_diag.test
 nfnetlink_cthelper             +netlink_sock_diag.test
 nfnetlink_ctnetlink            +netlink_sock_diag.test
@@ -279,6 +407,7 @@ nlattr_ifla_brport          +netlink_sock_diag.test
 nlattr_ifla_linkinfo           +netlink_sock_diag.test
 nlattr_ifla_port               +netlink_sock_diag.test
 nlattr_ifla_xdp                        +netlink_sock_diag.test
+nlattr_ifla_xdp-y              +netlink_sock_diag.test -y; exec 9</dev/full
 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
@@ -289,7 +418,7 @@ nlattr_ndtmsg                       +netlink_sock_diag.test
 nlattr_netconfmsg              +netlink_sock_diag.test
 nlattr_netlink_diag_msg                +netlink_sock_diag.test
 nlattr_nlmsgerr                        +netlink_sock_diag.test
-nlattr_packet_diag_msg         +netlink_sock_diag-v.sh
+nlattr_packet_diag_msg         +netlink_sock_diag.test -v
 nlattr_rtgenmsg                        +netlink_sock_diag.test
 nlattr_rtmsg                   +netlink_sock_diag.test
 nlattr_smc_diag_msg            +netlink_sock_diag.test
@@ -312,7 +441,19 @@ oldselect-efault   -a13 -e trace=select
 oldselect-efault-P     -a13 -e trace=select -P /dev/full 9>>/dev/full
 oldstat        -a32 -v -P stat.sample -P /dev/full
 open   -a30 -P $NAME.sample
+open_tree -a30 -y
+open_tree-P -a30 --decode-fds -P /dev/full -e trace=open_tree
 openat -a36 -P $NAME.sample
+openat2        -a35
+openat2-Xabbrev        --trace=openat2 -a35 -Xabbrev
+openat2-Xraw   --trace=openat2 -a32 -Xraw
+openat2-Xverbose       --trace=openat2 -a35 -Xverbose
+openat2-v      --trace=openat2 -a35 -v
+openat2-v-y    --trace=openat2 -a36 -v -y </dev/full
+openat2-v-y-Xabbrev    --trace=openat2 -a35 -v -y -Xabbrev </dev/full
+openat2-v-y-Xraw       --trace=openat2 -a32 -v -y -Xraw </dev/full
+openat2-v-y-Xverbose   --trace=openat2 -a44 -v -y -Xverbose </dev/full
+openat2-y      --trace=openat2 -a36 -y </dev/full
 orphaned_process_group . "${srcdir=.}/PTRACE_SEIZE.sh"; run_strace_match_diff -f -e trace=none -e signal='!chld'
 osf_utimes     -a21
 pause  -a8 -esignal=none
@@ -322,7 +463,19 @@ perf_event_open_unabbrev   -a1 -v -e trace=perf_event_open
 personality-Xabbrev    +personality.test -Xabbrev
 personality-Xraw       +personality.test -a15 -Xraw
 personality-Xverbose   +personality.test -Xverbose
+pidfd_getfd    -a18 -Xverbose -e signal=none </dev/full
+pidfd_getfd-y  --trace=pidfd_getfd -a18 -e signal=none -y </dev/full
+pidfd_getfd-yy --trace=pidfd_getfd -a18 -e signal=none -yy </dev/full
+pidfd_open     -a17
+pidfd_open--decode-fd-path     -a17 -e decode-fd=path -e trace=pidfd_open
+pidfd_open--decode-fd-pidfd    -a17 -e decode-fd=pidfd -e trace=pidfd_open
+pidfd_open--decode-fd-socket   -a17 -e decode-fd=socket -e trace=pidfd_open
+pidfd_open-P   -a17 -P /dev/full -e trace=pidfd_open
+pidfd_open-y   -a17 -y -e trace=pidfd_open
+pidfd_open-yy  -a17 -yy -e trace=pidfd_open
+pidfd_open--pidns-translation  test_pidns -a17 -e trace=pidfd_open
 pidfd_send_signal
+pidfd_send_signal--pidns-translation test_pidns -e trace=pidfd_send_signal
 pipe2  -a15
 pkey_alloc     -a17
 pkey_free      -a13
@@ -345,8 +498,11 @@ printstrn-umoven   -s4096 -e signal=none -e trace=add_key
 printstrn-umoven-peekdata      -e signal=none -e trace=add_key
 printstrn-umoven-undumpable    -e signal=none -e trace=add_key
 prlimit64
+prlimit64--pidns-translation     test_pidns -e trace=prlimit64
 process_vm_readv       -s5 -a37
+process_vm_readv--pidns-translation    test_pidns -s5 -a37 -e trace=process_vm_readv
 process_vm_writev      -s5 -a38
+process_vm_writev--pidns-translation   test_pidns -s5 -a38 -e trace=process_vm_writev
 pselect6
 ptrace -a23 -e signal=none
 ptrace_syscall_info    -a35 -e signal=none -e trace=ptrace
@@ -364,7 +520,9 @@ readdir     -a16
 readlink       -xx
 readlinkat     -xx
 reboot         -s 256
+recv-MSG_TRUNC -a26 -e trace=recv
 recvfrom       -a35
+recvfrom-MSG_TRUNC     -e trace=recvfrom
 recvmmsg-timeout       -a25 -e trace=recvmmsg
 recvmsg        -eread=0 -ewrite=1 -e trace=recvmsg,sendmsg
 regex  test_trace_expr '' -etrace='/^(.*_)?statv?fs'
@@ -381,10 +539,12 @@ rmdir     -a22
 rt_sigpending  -a20
 rt_sigprocmask
 rt_sigqueueinfo        -esignal=none
+rt_sigqueueinfo--pidns-translation     test_pidns -esignal=none -e trace=rt_sigqueueinfo
 rt_sigreturn   -esignal='!USR1'
 rt_sigsuspend  -a20 -esignal=none
 rt_sigtimedwait        -a38
 rt_tgsigqueueinfo      -esignal=none
+rt_tgsigqueueinfo--pidns-translation   test_pidns -esignal=none -e trace=rt_tgsigqueueinfo
 s390_guarded_storage   -a32
 s390_guarded_storage-v -e trace=s390_guarded_storage -a32 -v
 s390_pci_mmio_read_write       -e trace=s390_pci_mmio_read,s390_pci_mmio_write -a30
@@ -395,19 +555,28 @@ sched     test_trace_expr times -e/sched
 sched_get_priority_mxx -a33 -e trace=sched_get_priority_min,sched_get_priority_max
 sched_rr_get_interval  -a31
 sched_xetaffinity      -a28 -e trace=sched_getaffinity,sched_setaffinity
+sched_xetaffinity--pidns-translation   test_pidns -a28 -e trace=sched_getaffinity,sched_setaffinity
 sched_xetattr  -a29 -e trace=sched_getattr,sched_setattr
+sched_xetattr--pidns-translation       test_pidns -a29 -e trace=sched_getattr,sched_setattr
 sched_xetparam -a23 -e trace=sched_getparam,sched_setparam
+sched_xetparam--pidns-translation      test_pidns -a23 -e trace=sched_getparam,sched_setparam
 sched_xetscheduler     -a22 -e trace=sched_getscheduler,sched_setscheduler
+sched_xetscheduler--pidns-translation  test_pidns -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
 select-P       -a36 -e trace=select -P /dev/full 9>>/dev/full
-semop  -a32 -e trace=semop,semtimedop
+semop  -a32
+semop-indirect -a32 -e trace=semop
+semtimedop
 sendfile       -a27
 sendfile64     -a29
-set_mempolicy  -s3 -a35
+set_mempolicy  -a34 -s3
+set_mempolicy-Xabbrev  -a34 -s3 -Xabbrev -e trace=set_mempolicy
+set_mempolicy-Xraw     -a24 -s3 -Xraw -e trace=set_mempolicy
+set_mempolicy-Xverbose -s3 -Xverbose -e trace=set_mempolicy
 setdomainname  -a24
 setfsgid       -a12
 setfsgid32     -a14
@@ -439,6 +608,7 @@ sigaction   -a31
 siginfo        -e trace=none
 signal -a25 -e signal=none -e trace='/^signal$'
 signal_receive -a16 -e trace=kill
+signal_receive--pidns-translation      test_pidns -a16 -e trace=kill
 signalfd4
 sigpending     -a15
 sigprocmask    -a34
@@ -450,6 +620,7 @@ so_peercred -e trace=getsockopt
 so_peercred-Xabbrev    -e trace=getsockopt -Xabbrev
 so_peercred-Xraw       -e trace=getsockopt -Xraw -a39
 so_peercred-Xverbose   -e trace=getsockopt -Xverbose
+so_peercred--pidns-translation test_pidns -e trace=getsockopt
 sock_filter-v  -v -e trace=getsockopt,setsockopt
 sock_filter-v-Xabbrev  -v -e trace=getsockopt,setsockopt -X abbrev
 sock_filter-v-Xraw     -a 37 -v -e trace=getsockopt,setsockopt -X raw
@@ -461,11 +632,57 @@ socketcall        -a20
 sockopt-sol_netlink    -e trace=getsockopt,setsockopt
 sockopt-timestamp      -e trace=recvmsg
 splice
-stat   -a32 -v -P stat.sample -P /dev/full
-stat64 -a32 -v -P stat.sample -P /dev/full
+stat   -a30 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full
+stat64 -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full
 statfs -a17
 statfs64       -a23
-statx  -a32 -v -P stat.sample -P /dev/full
+status-all     -a10 -e trace=chdir --status=detached,failed,successful,unavailable,unfinished
+status-failed  -a10 -e trace=chdir -Z
+status-failed-long     -a10 -e trace=chdir --failed-only
+status-failed-status   -a10 -e trace=chdir -e status=failed
+status-none    -e trace=all --status=none
+status-successful      -a10 -e trace=chdir -z
+status-successful-long -a10 -e trace=chdir --successful-only
+status-successful-status       -a10 -e trace=chdir --status=successful
+status-unfinished      -a10 -e trace=all --status=unfinished
+statx  -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full
+strace--absolute-timestamps +strace-t.test --absolute-timestamps
+strace--absolute-timestamps-format-time +strace-t.test --absolute-timestamps=format:time
+strace--absolute-timestamps-format-time-precision-s +strace-t.test --absolute-timestamps=format:time --absolute-timestamps=precision:s
+strace--absolute-timestamps-format-time-precision-ms +strace-tt.test 3 --absolute-timestamps=format:time --absolute-timestamps=precision:ms
+strace--absolute-timestamps-format-time-precision-us +strace-tt.test 6 --absolute-timestamps=format:time --absolute-timestamps=precision:us
+strace--absolute-timestamps-format-time-precision-ns +strace-tt.test 9 --absolute-timestamps=format:time --absolute-timestamps=precision:ns
+strace--absolute-timestamps-format-unix-precision-s +strace-ttt.test 0 --absolute-timestamps=format:unix --absolute-timestamps=precision:s
+strace--absolute-timestamps-format-unix-precision-ms +strace-ttt.test 3 --absolute-timestamps=precision:ms --absolute-timestamps=format:unix
+strace--absolute-timestamps-format-unix-precision-us +strace-ttt.test 6 --absolute-timestamps=precision:us --absolute-timestamps=format:unix
+strace--absolute-timestamps-format-unix-precision-ns +strace-ttt.test 9 --absolute-timestamps=format:unix --absolute-timestamps=precision:ns
+strace--follow-forks-output-separately +strace-ff.test --follow-forks --output-separately
+strace--relative-timestamps +strace-r.test --relative-timestamps
+strace--relative-timestamps-s +strace-r.test --relative-timestamps=s
+strace--relative-timestamps-ms +strace-r.test --relative-timestamps=ms
+strace--relative-timestamps-us +strace-r.test --relative-timestamps=us
+strace--relative-timestamps-ns +strace-r.test --relative-timestamps=ns
+strace--syscall-times +strace-T.test --syscall-times
+strace--syscall-times-s +strace-T.test --syscall-times=s
+strace--syscall-times-ms +strace-T.test --syscall-times=ms
+strace--syscall-times-us +strace-T.test --syscall-times=us
+strace--syscall-times-ns +strace-T.test --syscall-times=ns
+strace--strings-in-hex --trace=chdir --strings-in-hex --columns=18
+strace--strings-in-hex-all     --trace=chdir --strings-in-hex=all --columns=18
+strace--strings-in-hex-non-ascii       --trace=chdir --strings-in-hex=non-ascii --columns=12
+strace--timestamps +strace-t.test --timestamps
+strace--timestamps-time +strace-t.test --timestamps=time
+strace--timestamps-time-s +strace-t.test --timestamps=time,s
+strace--timestamps-time-ms +strace-tt.test 3 --timestamps=time,ms
+strace--timestamps-time-us +strace-tt.test 6 --timestamps=time,us
+strace--timestamps-time-ns +strace-tt.test 9 --timestamps=time,ns
+strace--timestamps-unix-s +strace-ttt.test 0 --timestamps=unix,s
+strace--timestamps-unix-ms +strace-ttt.test 3 --timestamps=unix,ms
+strace--timestamps-unix-us +strace-ttt.test 6 --timestamps=unix,us
+strace--timestamps-unix-ns +strace-ttt.test 9 --timestamps=unix,ns
+strace-n       -e trace=listen -n -qq -a 12
+strace-x       -e trace=chdir -x -a 12
+strace-xx      -e trace=chdir -xx -a 18
 swap   -a23 -e trace=swapon,swapoff
 sxetmask       -a11 -e trace=sgetmask,ssetmask
 symlink        -a34
@@ -474,14 +691,24 @@ sync      -a7
 sync_file_range
 sync_file_range2
 sysinfo        -a14
-syslog -a36
+syslog -a35
 tee
+tgkill -a15 --signal='!cont'
+tgkill--pidns-translation       test_pidns -a15 --signal='!cont' -e trace=tgkill
+threads-execve--quiet-thread-execve +threads-execve.test -s40 --quiet=personality,thread-execve
+threads-execve-q +threads-execve.test -q
+threads-execve-qq +threads-execve.test -qq
+threads-execve-qqq +threads-execve.test -qqq
 time   -a10
 timer_create
 timer_xettime  -e trace=timer_create,timer_settime,timer_gettime
 timerfd_xettime        -e trace=timerfd_create,timerfd_settime,timerfd_gettime
 times  -esignal=none
 times-fail     -a12 -e trace=times
+tkill  -a12 --signal='!cont'
+tkill--pidns-translation       test_pidns --signal='!cont' -a12 -e trace=tkill
+trace_clock    test_trace_expr 'clock_nanosleep|times' -e%clock
+trace_creds    test_trace_expr '([gs]et[^p]*([gu]id|groups)|caps|prctl|[fl]?chown|print(path-umovestr|strn-umoven)-undumpable|ptrace|quotactl|rt_sigtimedwait|rt_(tg)?sigqueueinfo).*' -e%creds
 trace_fstat    test_trace_expr '' -e%fstat -v -P stat.sample -P /dev/full
 trace_fstatfs  test_trace_expr '' -e%fstatfs
 trace_lstat    test_trace_expr '' -e%lstat -v -P stat.sample -P /dev/full
@@ -496,6 +723,7 @@ trace_stat  test_trace_expr '' -e%stat -v -P stat.sample -P /dev/full
 trace_stat_like        test_trace_expr '' -e%%stat -v -P stat.sample -P /dev/full
 trace_statfs   test_trace_expr '' -e%statfs
 trace_statfs_like      test_trace_expr '' -e%%statfs
+trie_test    run_prog
 truncate
 truncate64
 ugetrlimit     -a28
@@ -503,6 +731,7 @@ umask       -a11
 umoven-illptr  -a36 -e trace=nanosleep
 umovestr-illptr        -a11 -e trace=chdir
 umovestr3      -a14 -e trace=chdir
+umovestr_cached_adjacent       +umovestr_cached.test 3
 unlink -a24
 unlinkat       -a35
 unshare        -a11
@@ -525,7 +754,10 @@ waitpid    -a28
 xattr  -a22 -e trace=getxattr,fgetxattr,lgetxattr,setxattr,fsetxattr,lsetxattr,listxattr,flistxattr,llistxattr,removexattr,fremovexattr,lremovexattr
 xattr-strings  -a22 -s 4 -e trace=fsetxattr
 xet_robust_list        -a24 -e trace=get_robust_list,set_robust_list
+xet_robust_list--pidns-translation     test_pidns -a24 -e trace=get_robust_list,set_robust_list
 xetitimer      -a29 -e trace=setitimer,getitimer
 xetpgid        -a11 -e trace=getpgid,setpgid
-xetpriority    -a29 -e trace=getpriority,setpriority
+xetpgid--pidns-translation     test_pidns -a11 -e trace=getpgid,setpgid
+xetpriority    -a27 -e trace=getpriority,setpriority
+xetpriority--pidns-translation test_pidns -a27 -e trace=getpriority,setpriority
 xettimeofday   -a20 -e trace=gettimeofday,settimeofday
index 7667bdb028e6bc1c2eca75ee8597c0d1fbe10e9c..c2e9fa694a44b8cc9b07f0f096d82fb80dc52058 100644 (file)
@@ -1,14 +1,14 @@
 /*
  * Check decoding of get_mempolicy syscall.
  *
- * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_get_mempolicy
 
@@ -16,7 +16,7 @@
 # include <unistd.h>
 
 # include "xlat.h"
-# include "xlat/policies.h"
+# include "xlat/mpol_modes.h"
 
 # define MAX_STRLEN 3
 # define NLONGS(n) ((n + 8 * sizeof(long) - 2) \
@@ -68,20 +68,20 @@ main(void)
        rc = syscall(__NR_get_mempolicy, mode, nodemask, maxnode, addr, flags);
        printf("get_mempolicy(%p, %p, %lu, %#lx, %s|%#lx) = %ld %s (%m)\n",
               mode, nodemask, maxnode, addr,
-              "MPOL_F_NODE|MPOL_F_ADDR",
-              flags & ~3, rc, errno2name());
+              "MPOL_F_NODE|MPOL_F_ADDR|MPOL_F_MEMS_ALLOWED",
+              flags & ~7, rc, errno2name());
 
        mode = tail_alloc(sizeof(*mode));
 
        rc = syscall(__NR_get_mempolicy, mode, 0, 0, 0, 0);
        printf("get_mempolicy([");
-       printxval(policies, (unsigned) *mode, "MPOL_???");
+       printxval(mpol_modes, (unsigned) *mode, "MPOL_???");
        printf("], NULL, 0, NULL, 0) = %ld\n", rc);
 
        *mode = -1;
        rc = syscall(__NR_get_mempolicy, mode, 0, 0, mode - 1, 2);
        printf("get_mempolicy([");
-       printxval(policies, (unsigned) *mode, "MPOL_???");
+       printxval(mpol_modes, (unsigned) *mode, "MPOL_???");
        printf("], NULL, 0, %p, MPOL_F_ADDR) = %ld\n", mode - 1, rc);
 
        maxnode = get_page_size() * 8;
diff --git a/tests/get_process_reaper.c b/tests/get_process_reaper.c
new file mode 100644 (file)
index 0000000..2cc6906
--- /dev/null
@@ -0,0 +1,108 @@
+/*
+ * Print the process reaper id.
+ *
+ * Copyright (c) 2020 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <stdio.h>
+#include <unistd.h>
+#include <sys/wait.h>
+
+/* PARENT - CHILD - GRANDCHILD */
+
+static int
+grandchild(int read_fd, int write_fd)
+{
+       /* wait for notification from PARENT about CHILD completion */
+       pid_t pid;
+       if (read(read_fd, &pid, sizeof(pid)) != 0)
+               perror_msg_and_fail("read");
+
+       /* write ppid to PARENT */
+       pid = getppid();
+       if (write(write_fd, &pid, sizeof(pid)) != sizeof(pid))
+               perror_msg_and_fail("write");
+
+       _exit(0);
+}
+
+static int
+child(int read_fd, int write_fd)
+{
+       pid_t pid = fork();
+       if (pid < 0)
+               perror_msg_and_fail("fork");
+
+       if (!pid)
+               return grandchild(read_fd, write_fd);
+       else
+               _exit(0);
+}
+
+static int
+parent(pid_t pid, int read_fd, int write_fd)
+{
+       /* wait for CHILD completion */
+       int status;
+       if (waitpid(pid, &status, 0) != pid)
+               perror_msg_and_fail("waitpid");
+       if (status != 0)
+               error_msg_and_fail("status %x", status);
+
+       /* notify GRANDCHILD about CHILD completion */
+       close(write_fd),
+             write_fd = -1;
+
+       /* read ppid of GRANDCHILD */
+       if (read(read_fd, &pid, sizeof(pid)) != sizeof(pid))
+               perror_msg_and_fail("read");
+
+       printf("%d\n", pid);
+       return 0;
+}
+
+int
+main(void)
+{
+       int parent_grandchild_fds[2];
+#define parent_read_fd         parent_grandchild_fds[0]
+#define grandchild_write_fd    parent_grandchild_fds[1]
+
+       int grandchild_parent_fds[2];
+#define grandchild_read_fd     grandchild_parent_fds[0]
+#define parent_write_fd                grandchild_parent_fds[1]
+
+       if (pipe(parent_grandchild_fds) ||
+           pipe(grandchild_parent_fds))
+               perror_msg_and_fail("pipe");
+
+       pid_t pid = fork();
+       if (pid < 0)
+               perror_msg_and_fail("fork");
+
+       if (!pid) {
+               /* CHILD */
+               close(parent_read_fd),
+                     parent_read_fd = -1;
+
+               close(parent_write_fd),
+                     parent_write_fd = -1;
+
+               return child(grandchild_read_fd,
+                            grandchild_write_fd);
+       } else {
+               /* PARENT */
+               close(grandchild_read_fd),
+                     grandchild_read_fd = -1;
+
+               close(grandchild_write_fd),
+                     grandchild_write_fd = -1;
+
+               return parent(pid, parent_read_fd,
+                                  parent_write_fd);
+       }
+}
index f58d1f510f82c0fc0f6744a98b9bf543adedf2bb..7921bb1e22cb22bef176c88983a5103c3cc1f054 100644 (file)
@@ -2,6 +2,7 @@
  * Find out the size of kernel's sigset_t.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +11,7 @@
 #include "tests.h"
 #include <signal.h>
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 /*
  * If the sigset size specified to rt_sigprocmask is not equal to the size
index ecbaf0dc246330da3e1f417f4be574b43fb5f74f..85edf40751c82dbc7398c23e2ae83c69ab052ea0 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of getcpu syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getcpu
 
index 5f9a7293b50da9e0a1bc6fda8f02a6319c2af312..ff563ff44bd5da4f9baf9fbabfa0d66675b96b20 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -7,7 +7,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getcwd
 
diff --git a/tests/getdents-v.c b/tests/getdents-v.c
new file mode 100644 (file)
index 0000000..c9bd7ae
--- /dev/null
@@ -0,0 +1,3 @@
+/* Check --no-abbrev decoding of getdents syscall.  */
+#define VERBOSE 1
+#include "getdents.c"
diff --git a/tests/getdents-v.gen.test b/tests/getdents-v.gen.test
new file mode 100755 (executable)
index 0000000..fc1466a
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getdents-v -a22 -v --trace=getdents); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a22 -v --trace=getdents
index 998e667f0a357c14cd05572a1eb328814ec29fb0..2eb012a46707bf5943b38bb6bf4c19cc570e9649 100644 (file)
 /*
+ * Check decoding of getdents syscall.
+ *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getdents
 
-# include <assert.h>
-# include <dirent.h>
-# include <fcntl.h>
-# include <stddef.h>
-# include <stdio.h>
-# include <sys/stat.h>
-# include <unistd.h>
-
-static const char fname[] =
-       "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
-       "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
-       "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
-       "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
-       "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
-       "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
-       "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
-       "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nZ";
-static const char qname[] =
-       "A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\n"
-       "A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\n"
-       "A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\n"
-       "A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\n"
-       "A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\n"
-       "A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\n"
-       "A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\n"
-       "A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nZ";
+# define kernel_dirent_type kernel_dirent_t
+# define NR_getdents   __NR_getdents
+# define STR_getdents  "getdents"
 
-static char buf[8192];
+# include "xgetdents.c"
 
-static const char *
-str_d_type(const unsigned char d_type)
-{
-       switch (d_type) {
-               case DT_DIR:
-                       return "DT_DIR";
-               case DT_REG:
-                       return "DT_REG";
-               default:
-                       return "DT_UNKNOWN";
-       }
-}
+# if VERBOSE
 static void
-print_dirent(const kernel_dirent *d)
+print_dirent(const kernel_dirent_type *d)
 {
-       const unsigned int d_name_offset = offsetof(kernel_dirent, d_name);
-       int d_name_len = d->d_reclen - d_name_offset - 1;
-       assert(d_name_len > 0);
-
-       printf("{d_ino=%llu, d_off=%llu, d_reclen=%u, d_name=",
-              (unsigned long long) d->d_ino,
-              (unsigned long long) d->d_off, d->d_reclen);
-
-       if (d->d_name[0] == '.')
-               printf("\"%.*s\"", d_name_len, d->d_name);
-       else
-               printf("\"%s\"", qname);
-
+       const unsigned int d_name_offset = offsetof(kernel_dirent_type, d_name);
+       int d_name_len = (int) d->d_reclen - d_name_offset - 1;
+       if (d_name_len <= 0)
+               error_msg_and_fail("d_name_len = %d", d_name_len);
+
+       PRINT_FIELD_U("{", *d, d_ino);
+       PRINT_FIELD_U(", ", *d, d_off);
+       PRINT_FIELD_U(", ", *d, d_reclen);
+       printf(", d_name=");
+       print_quoted_cstring(d->d_name, d_name_len);
        printf(", d_type=%s}",
               str_d_type(*((const char *) d + d->d_reclen - 1)));
 }
-
-int
-main(void)
-{
-       static const char dname[] = "getdents.test.tmp.dir";
-
-       assert(!mkdir(dname, 0700));
-       assert(!chdir(dname));
-       (void) close(0);
-       assert(!creat(fname, 0600));
-       assert(!close(0));
-       assert(!open(".", O_RDONLY | O_DIRECTORY));
-
-       unsigned long count = (unsigned long) 0xfacefeeddeadbeefULL;
-       long rc = syscall(__NR_getdents, (long) 0xdefacedffffffffULL, NULL,
-                         count);
-       printf("getdents(-1, NULL, %u) = %ld %s (%m)\n",
-              (unsigned) count, rc, errno2name());
-
-       count = (unsigned long) 0xfacefeed00000000ULL | sizeof(buf);
-       while ((rc = syscall(__NR_getdents, 0, buf, count))) {
-               kernel_dirent *d;
-               long i;
-
-               if (rc < 0)
-                       perror_msg_and_skip("getdents");
-               printf("getdents(0, [");
-               for (i = 0; i < rc; i += d->d_reclen) {
-                       d = (kernel_dirent *) &buf[i];
-                       if (i)
-                               printf(", ");
-                       print_dirent(d);
-               }
-               printf("], %u) = %ld\n", (unsigned) count, rc);
-       }
-       printf("getdents(0, [], %u) = 0\n", (unsigned) count);
-       puts("+++ exited with 0 +++");
-       assert(!unlink(fname));
-       assert(!chdir(".."));
-       assert(!rmdir(dname));
-
-       return 0;
-}
+# endif
 
 #else
 
index 0db5f20aeda9a10e46cdb9495c9b337398332d39..adcbb9c35ca2754b1e5d2ab185c6705c34c78fe8 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getdents -a22 -v); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getdents -a31 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a22 -v
+run_strace_match_diff -a31 
diff --git a/tests/getdents64-v.c b/tests/getdents64-v.c
new file mode 100644 (file)
index 0000000..cf78248
--- /dev/null
@@ -0,0 +1,3 @@
+/* Check --no-abbrev decoding of getdents64 syscall.  */
+#define VERBOSE 1
+#include "getdents64.c"
diff --git a/tests/getdents64-v.gen.test b/tests/getdents64-v.gen.test
new file mode 100755 (executable)
index 0000000..9b49ce9
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getdents64-v -a24 -v --trace=getdents64); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a24 -v --trace=getdents64
index e0575cf4edc696dea8eb1f2172d2bcbeff895ff2..0e46a2212d276cfdc78a7bc7472d7081a96b3c39 100644 (file)
 /*
+ * Check decoding of getdents64 syscall.
+ *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getdents64
 
-# include <assert.h>
-# include <dirent.h>
-# include <fcntl.h>
-# include <inttypes.h>
-# include <stddef.h>
-# include <stdio.h>
-# include <sys/stat.h>
-# include <unistd.h>
-
-static const char fname[] =
-       "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
-       "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
-       "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
-       "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
-       "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
-       "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
-       "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
-       "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nZ";
-static const char qname[] =
-       "A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\n"
-       "A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\n"
-       "A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\n"
-       "A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\n"
-       "A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\n"
-       "A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\n"
-       "A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\n"
-       "A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nZ";
+# define kernel_dirent_type kernel_dirent64_t
+# define NR_getdents   __NR_getdents64
+# define STR_getdents  "getdents64"
 
-typedef struct {
-               uint64_t d_ino;
-               uint64_t d_off;
-               unsigned short d_reclen;
-               unsigned char d_type;
-               char d_name[256];
-} kernel_dirent64;
+# include "xgetdents.c"
 
-static char buf[8192];
-
-static const char *
-str_d_type(const unsigned char d_type)
-{
-       switch (d_type) {
-               case DT_DIR:
-                       return "DT_DIR";
-               case DT_REG:
-                       return "DT_REG";
-               default:
-                       return "DT_UNKNOWN";
-       }
-}
+# if VERBOSE
 static void
-print_dirent(const kernel_dirent64 *d)
+print_dirent(const kernel_dirent_type *d)
 {
-       const unsigned int d_name_offset = offsetof(kernel_dirent64, d_name);
-       int d_name_len = d->d_reclen - d_name_offset;
-       assert(d_name_len > 0);
-
-       printf("{d_ino=%" PRIu64 ", d_off=%" PRId64
-              ", d_reclen=%u, d_type=%s, d_name=",
-              d->d_ino, d->d_off, d->d_reclen, str_d_type(d->d_type));
-
-       if (d->d_name[0] == '.')
-               printf("\"%.*s\"}", d_name_len, d->d_name);
-       else
-               printf("\"%s\"}", qname);
-}
-
-int
-main(void)
-{
-       static const char dname[] = "getdents64.test.tmp.dir";
-
-       assert(!mkdir(dname, 0700));
-       assert(!chdir(dname));
-       (void) close(0);
-       assert(!creat(fname, 0600));
-       assert(!close(0));
-       assert(!open(".", O_RDONLY | O_DIRECTORY));
-
-       unsigned long count = (unsigned long) 0xfacefeeddeadbeefULL;
-       long rc = syscall(__NR_getdents64, (long) 0xdefacedffffffffULL, NULL,
-                         count);
-       printf("getdents64(-1, NULL, %u) = %ld %s (%m)\n",
-              (unsigned) count, rc, errno2name());
-
-       count = (unsigned long) 0xfacefeed00000000ULL | sizeof(buf);
-       while ((rc = syscall(__NR_getdents64, 0, buf, count))) {
-               kernel_dirent64 *d;
-               long i;
-
-               if (rc < 0)
-                       perror_msg_and_skip("getdents64");
-               printf("getdents64(0, [");
-               for (i = 0; i < rc; i += d->d_reclen) {
-                       d = (kernel_dirent64 *) &buf[i];
-                       if (i)
-                               printf(", ");
-                       print_dirent(d);
-               }
-               printf("], %u) = %ld\n", (unsigned) count, rc);
-       }
-       printf("getdents64(0, [], %u) = 0\n", (unsigned) count);
-       puts("+++ exited with 0 +++");
-       assert(!unlink(fname));
-       assert(!chdir(".."));
-       assert(!rmdir(dname));
-
-       return 0;
+       const unsigned int d_name_offset = offsetof(kernel_dirent_type, d_name);
+       int d_name_len = (int) d->d_reclen - d_name_offset;
+       if (d_name_len <= 0)
+               error_msg_and_fail("d_name_len = %d", d_name_len);
+
+       PRINT_FIELD_U("{", *d, d_ino);
+       PRINT_FIELD_U(", ", *d, d_off);
+       PRINT_FIELD_U(", ", *d, d_reclen);
+       printf(", d_type=%s, d_name=", str_d_type(d->d_type));
+       print_quoted_cstring(d->d_name, d_name_len);
+       printf("}");
 }
+# endif
 
 #else
 
index 6e24d400df46ff49103d06a0a9b9693e1d2adfcd..de87954ba2e1c80c3cb38028438525993f6f1f36 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getdents64 -a24 -v); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getdents64 -a33 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a24 -v
+run_strace_match_diff -a33 
diff --git a/tests/getegid-creds.gen.test b/tests/getegid-creds.gen.test
new file mode 100755 (executable)
index 0000000..7ac87f1
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getegid-creds +getuid.test ); do not edit.
+set -- 
+. "${srcdir=.}/getuid.test"
index 2e0754b77580512ace941dc625f69aa4879d5523..d5927fea2c61a30abd9c8ddcde8698e7745fcb61 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getegid
 
@@ -16,7 +16,7 @@
 int
 main(void)
 {
-       printf("getegid() = %ld\n", syscall(__NR_getegid));
+       printf("getegid() = %s\n", sprintrc(syscall(__NR_getegid)));
        return 0;
 }
 
diff --git a/tests/getegid32-creds.gen.test b/tests/getegid32-creds.gen.test
new file mode 100755 (executable)
index 0000000..c080ac0
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getegid32-creds +getuid.test ); do not edit.
+set -- 
+. "${srcdir=.}/getuid.test"
index b7f5cb0827bcf71f4688739eef721ca9e4fa818d..bbfcf94e01cecf90b9b5859fd848330a7291b3b4 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getegid32
 
diff --git a/tests/geteuid-creds.gen.test b/tests/geteuid-creds.gen.test
new file mode 100755 (executable)
index 0000000..8210f67
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (geteuid-creds +getuid.test ); do not edit.
+set -- 
+. "${srcdir=.}/getuid.test"
index 430df1c6526bfaf88644140def29d116002fd7a8..a1defc8c2913da663a41ef763b7fd5be86ef83b8 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_geteuid
 
@@ -16,7 +16,7 @@
 int
 main(void)
 {
-       printf("geteuid() = %ld\n", syscall(__NR_geteuid));
+       printf("geteuid() = %s\n", sprintrc(syscall(__NR_geteuid)));
        return 0;
 }
 
diff --git a/tests/geteuid32-creds.gen.test b/tests/geteuid32-creds.gen.test
new file mode 100755 (executable)
index 0000000..e0ced55
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (geteuid32-creds +getuid.test ); do not edit.
+set -- 
+. "${srcdir=.}/getuid.test"
index 94174f3238872b83b5d048270db996c78f146491..e6bd57d1ec449ae89caa0eb284d9a44af728a353 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_geteuid32
 
diff --git a/tests/getgid-creds.gen.test b/tests/getgid-creds.gen.test
new file mode 100755 (executable)
index 0000000..e82e11d
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getgid-creds +getuid.test ); do not edit.
+set -- 
+. "${srcdir=.}/getuid.test"
index 1bd705023f616cd58b59cc95619f18315d42db8e..c9c9f7227632b4b7e827c93d93e8967539c79371 100644 (file)
@@ -1,14 +1,14 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
-#ifdef __NR_getgid
+#if defined __NR_getgid && (!defined __NR_getxgid || __NR_getxgid != __NR_getgid)
 
 # include <stdio.h>
 # include <unistd.h>
diff --git a/tests/getgid32-creds.gen.test b/tests/getgid32-creds.gen.test
new file mode 100755 (executable)
index 0000000..7d37993
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getgid32-creds +getuid.test ); do not edit.
+set -- 
+. "${srcdir=.}/getuid.test"
index c6859cf4d288dda33d853cfada41e6826365b230..922c6f5f9e26506080f991e3e3849056e08f1ff5 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getgid32
 
index 36c095df0c7580f0e81dfada12495c47f6e475cc..c87d987492644dbf050ee12b587f5c6b75190436 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of getgroups/getgroups32 syscalls.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -17,7 +17,7 @@
 #else
 
 # include "tests.h"
-# include <asm/unistd.h>
+# include "scno.h"
 
 # ifdef __NR_getgroups
 
index d005792d31dd75d38706857b1ba1824fb3186ebb..a626d35f3dd70ff911940abbd67bdf7e00308119 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getgroups32
 
diff --git a/tests/getpgrp--pidns-translation.c b/tests/getpgrp--pidns-translation.c
new file mode 100644 (file)
index 0000000..de8ceb3
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "getpgrp.c"
diff --git a/tests/getpgrp--pidns-translation.gen.test b/tests/getpgrp--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..9363611
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getpgrp--pidns-translation test_pidns -e trace=getpgrp -a10); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -e trace=getpgrp -a10
index 3d45f718fb13f3fae6ee0d275dbd5c38574cc47e..c981d79b1b82aa0bc54f4a8b85e65509177332f9 100644 (file)
@@ -1,12 +1,13 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
+#include "pidns.h"
 
 #ifdef __NR_getpgrp
 
 int
 main(void)
 {
-       printf("getpgrp() = %ld\n", syscall(__NR_getpgrp));
+       PIDNS_TEST_INIT;
 
+       pidns_print_leader();
+       printf("getpgrp() = %d%s\n", (int) syscall(__NR_getpgrp),
+               pidns_pid2str(PT_PGID));
+
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
diff --git a/tests/getpid--pidns-translation.c b/tests/getpid--pidns-translation.c
new file mode 100644 (file)
index 0000000..94b12a1
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "getpid.c"
diff --git a/tests/getpid--pidns-translation.gen.test b/tests/getpid--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..abe2cf4
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getpid--pidns-translation test_pidns -e trace=getpid -a9); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -e trace=getpid -a9
index 5e88e052a343390ed4789c6e9a158d565eb2d4b8..4291400d09a03e7d29512d4182a25ef85b16d846 100644 (file)
@@ -1,14 +1,15 @@
 /*
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
+#include "pidns.h"
 
-#ifdef __NR_getpid
+#if defined __NR_getpid && (!defined __NR_getxpid || __NR_getxpid != __NR_getpid)
 
 # include <stdio.h>
 # include <unistd.h>
 int
 main(void)
 {
-       printf("getpid() = %ld\n", syscall(__NR_getpid));
+       PIDNS_TEST_INIT;
+
+       pidns_print_leader();
+       printf("getpid() = %d%s\n", (int) syscall(__NR_getpid),
+               pidns_pid2str(PT_TGID));
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
index 718d0691d9f8acfabc42ec029df955d75c32b169..fd279763879a00130fffe13d3b7aeaa9dfe201c2 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getppid
 
@@ -16,7 +16,7 @@
 int
 main(void)
 {
-       printf("getppid() = %ld\n", syscall(__NR_getppid));
+       printf("getppid() = %s\n", sprintrc(syscall(__NR_getppid)));
        puts("+++ exited with 0 +++");
        return 0;
 }
index eb6cdb1bcb3d147b1e524d6ac8770689fe0cf882..ebb8c839ac426925c8ff33635a3773f03a77ae23 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getrandom
 
index 3ad2c190419fd678e0dcbf9bac9288d9815edb9a..ebf352129ee132e8a6ad182741117bd9c94268b5 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getresgid
 
index b78afaed912626e570f8f2984fc54ee6d251066f..bd8ce2124ce77e300b18fe3454ccb2931f9396bc 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getresgid32
 
index 5bb2e30114787a5020d4a7e59f5fe519a02aeaef..8a29c17275ca0b25791e15031ceeb154e47916df 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getresuid
 
index 13acc695af8202388300e1c4120c89e577f77a2a..306b9d596281800820cd34ff37fba52a3ac8cdb0 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getresuid32
 
index 6d3b4cd5d24edab202f3e1db393cad0c282083b8..8a3230910874199c3ca3879cf20a04408b60803b 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getrlimit
 
index 412d8a004c811eadd60a767558bb2af176ee8e0b..13defc9fe466514fed61b2103e4438f33d534e8f 100644 (file)
@@ -1,14 +1,14 @@
 /*
  * Copyright (c) 2016 Fei Jie <feij.fnst@cn.fujitsu.com>
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getrusage
 
 # include <unistd.h>
 # include <errno.h>
 
+# include "kernel_rusage.h"
 # include "xlat.h"
 # include "xlat/usagewho.h"
 
 int
-invoke_print(int who, const char *who_str, struct rusage *usage)
+invoke_print(int who, const char *who_str, kernel_rusage_t *usage)
 {
        int rc = syscall(__NR_getrusage, who, usage);
        int saved_errno = errno;
        printf("getrusage(%s, {ru_utime={tv_sec=%lld, tv_usec=%llu}"
-              ", ru_stime={tv_sec=%lld, tv_usec=%llu}, ru_maxrss=%lu"
-              ", ru_ixrss=%lu, ru_idrss=%lu, ru_isrss=%lu, ru_minflt=%lu"
-              ", ru_majflt=%lu, ru_nswap=%lu, ru_inblock=%lu"
-              ", ru_oublock=%lu, ru_msgsnd=%lu, ru_msgrcv=%lu"
-              ", ru_nsignals=%lu, ru_nvcsw=%lu, ru_nivcsw=%lu}) = %s\n",
+              ", ru_stime={tv_sec=%lld, tv_usec=%llu}, ru_maxrss=%llu"
+              ", ru_ixrss=%llu, ru_idrss=%llu, ru_isrss=%llu, ru_minflt=%llu"
+              ", ru_majflt=%llu, ru_nswap=%llu, ru_inblock=%llu"
+              ", ru_oublock=%llu, ru_msgsnd=%llu, ru_msgrcv=%llu"
+              ", ru_nsignals=%llu, ru_nvcsw=%llu, ru_nivcsw=%llu}) = %s\n",
               who_str,
               (long long) usage->ru_utime.tv_sec,
               zero_extend_signed_to_ull(usage->ru_utime.tv_usec),
               (long long) usage->ru_stime.tv_sec,
               zero_extend_signed_to_ull(usage->ru_stime.tv_usec),
-              usage->ru_maxrss, usage->ru_ixrss, usage->ru_idrss,
-              usage->ru_isrss, usage->ru_minflt, usage->ru_majflt,
-              usage->ru_nswap, usage->ru_inblock, usage->ru_oublock,
-              usage->ru_msgsnd, usage->ru_msgrcv, usage->ru_nsignals,
-              usage->ru_nvcsw, usage->ru_nivcsw, sprintrc(rc));
+              zero_extend_signed_to_ull(usage->ru_maxrss),
+              zero_extend_signed_to_ull(usage->ru_ixrss),
+              zero_extend_signed_to_ull(usage->ru_idrss),
+              zero_extend_signed_to_ull(usage->ru_isrss),
+              zero_extend_signed_to_ull(usage->ru_minflt),
+              zero_extend_signed_to_ull(usage->ru_majflt),
+              zero_extend_signed_to_ull(usage->ru_nswap),
+              zero_extend_signed_to_ull(usage->ru_inblock),
+              zero_extend_signed_to_ull(usage->ru_oublock),
+              zero_extend_signed_to_ull(usage->ru_msgsnd),
+              zero_extend_signed_to_ull(usage->ru_msgrcv),
+              zero_extend_signed_to_ull(usage->ru_nsignals),
+              zero_extend_signed_to_ull(usage->ru_nvcsw),
+              zero_extend_signed_to_ull(usage->ru_nivcsw),
+              sprintrc(rc));
        errno = saved_errno;
        return rc;
 }
@@ -49,7 +60,7 @@ invoke_print(int who, const char *who_str, struct rusage *usage)
 int
 main(void)
 {
-       TAIL_ALLOC_OBJECT_CONST_PTR(struct rusage, usage);
+       TAIL_ALLOC_OBJECT_CONST_PTR(kernel_rusage_t, usage);
        if (invoke_print(ARG_STR(RUSAGE_SELF), usage)) {
                perror_msg_and_fail("RUSAGE_SELF");
        }
diff --git a/tests/getsid--pidns-translation.c b/tests/getsid--pidns-translation.c
new file mode 100644 (file)
index 0000000..7f983e8
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "getsid.c"
diff --git a/tests/getsid--pidns-translation.gen.test b/tests/getsid--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..c07ae33
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getsid--pidns-translation test_pidns -e trace=getsid -a10); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -e trace=getsid -a10
index 588ea4ab0779cec82363e7639231ec24f140cfdb..71355bb63c73a9a7061f6615d66a847200599bb2 100644 (file)
@@ -1,20 +1,27 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
+#include "pidns.h"
+
 #include <stdio.h>
 #include <unistd.h>
 
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        pid_t pid = getpid();
-       printf("getsid(%d) = %d\n", pid, getsid(pid));
+       pidns_print_leader();
+       printf("getsid(%d%s) = %d%s\n", pid, pidns_pid2str(PT_TGID),
+               getsid(pid), pidns_pid2str(PT_SID));
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
diff --git a/tests/gettid--pidns-translation.c b/tests/gettid--pidns-translation.c
new file mode 100644 (file)
index 0000000..500c321
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "gettid.c"
diff --git a/tests/gettid--pidns-translation.test b/tests/gettid--pidns-translation.test
new file mode 100755 (executable)
index 0000000..9624129
--- /dev/null
@@ -0,0 +1,18 @@
+#!/bin/sh
+#
+# Check pidns translation of gettid's return value.
+#
+# Copyright (c) 2020 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+. "${srcdir=.}/init.sh"
+
+run_prog > /dev/null
+run_strace -a9 --pidns-translation -f -e trace=gettid $args > "$EXP"
+parent_pid="$(tail -n 2 $LOG | head -n 1 | cut -d' ' -f1)"
+init_pid="$(tail -n 1 $LOG | cut -d' ' -f1)"
+# uniq: filter out extra gettid calls made by musl libc
+grep -E -v "^($parent_pid|$init_pid) |unfinished|resumed" "$LOG" | uniq > "$OUT"
+match_diff "$OUT" "$EXP"
index 24947e89ce9a2ee00923989641db1cf49f574cf4..8df4f8d5ab5811fa71f43c1a025bb904606eca73 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -8,12 +8,18 @@
 #include "tests.h"
 #include <stdio.h>
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
+#include "pidns.h"
 
 int
 main(void)
 {
-       printf("gettid() = %ld\n", syscall(__NR_gettid));
+       PIDNS_TEST_INIT;
+
+       pidns_print_leader();
+       printf("gettid() = %d%s\n", (int) syscall(__NR_gettid),
+               pidns_pid2str(PT_TID));
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
diff --git a/tests/getuid-creds.gen.test b/tests/getuid-creds.gen.test
new file mode 100755 (executable)
index 0000000..5cd14c5
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getuid-creds +getuid.test ); do not edit.
+set -- 
+. "${srcdir=.}/getuid.test"
index 56f6c9021e69b53bbd38e45ca4b245fb280cab14..f3ff9af13bc03f3d2ac79eb58b4b1740b9975624 100644 (file)
@@ -1,14 +1,14 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
-#ifdef __NR_getuid
+#if defined __NR_getuid && (!defined __NR_getxuid || __NR_getxuid != __NR_getuid)
 
 # include <stdio.h>
 # include <unistd.h>
index a0bbb3ed106864fe2f8cb7a6a530a87ef6389a0d..e8351a221a24d0f37d975fb35fec491715bcedd8 100755 (executable)
@@ -1,16 +1,33 @@
 #!/bin/sh
 #
-# Check getuid syscall decoding.
+# Check get(e)?[gu]id(32)? syscalls decoding.
 #
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 . "${srcdir=.}/init.sh"
 
+check_prog grep
 check_prog uniq
+
+if [ "${NAME%-creds}" = "$NAME" ]; then
+       syscall="$NAME"
+else
+       NAME="${NAME%-creds}"
+       syscall='%creds'
+fi
+
 run_prog > /dev/null
-run_strace -qq -a9 -e$NAME $args > "$EXP"
-uniq < "$LOG" > "$OUT"
+run_strace -qq -a9 -e"$syscall" $args > "$EXP"
+
+case "$STRACE_ARCH:$syscall" in
+       mips:%creds)
+               grep -Fxv 'prctl(PR_GET_FP_MODE) = 0' < "$LOG" | uniq > "$OUT"
+               ;;
+       *)      uniq < "$LOG" > "$OUT"
+               ;;
+esac
+
 match_diff "$OUT" "$EXP"
diff --git a/tests/getuid32-creds.gen.test b/tests/getuid32-creds.gen.test
new file mode 100755 (executable)
index 0000000..d6311ca
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getuid32-creds +getuid.test ); do not edit.
+set -- 
+. "${srcdir=.}/getuid.test"
index 1222dbcb3a594bae71734441b4d3c82b24275e03..0c0441f7381fd6f9f2d183cc7820f8a9f3e2f25d 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_getuid32
 
diff --git a/tests/getxgid.c b/tests/getxgid.c
new file mode 100644 (file)
index 0000000..2fa6edd
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_getxgid
+
+# include <stdio.h>
+# include <unistd.h>
+
+int
+main(void)
+{
+       long id = syscall(__NR_getxgid);
+       printf("getxgid() = %ld (egid %ld)\n", id, id);
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_getxgid")
+
+#endif
diff --git a/tests/getxgid.gen.test b/tests/getxgid.gen.test
new file mode 100755 (executable)
index 0000000..e9068a3
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getxgid -a10 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10 
diff --git a/tests/getxpid.c b/tests/getxpid.c
new file mode 100644 (file)
index 0000000..f8218db
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_getxpid
+
+# include <stdio.h>
+# include <unistd.h>
+
+int
+main(void)
+{
+       long id = syscall(__NR_getxpid);
+       pid_t ppid = getppid();
+
+       printf("getxpid() = %ld (ppid %ld)\n", id, (long) ppid);
+       printf("getxpid() = %ld (ppid %ld)\n", id, (long) ppid);
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_getxpid")
+
+#endif
diff --git a/tests/getxpid.gen.test b/tests/getxpid.gen.test
new file mode 100755 (executable)
index 0000000..0473cce
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getxpid -a10 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10 
diff --git a/tests/getxuid.c b/tests/getxuid.c
new file mode 100644 (file)
index 0000000..6263550
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_getxuid
+
+# include <stdio.h>
+# include <unistd.h>
+
+int
+main(void)
+{
+       long id = syscall(__NR_getxuid);
+       printf("getxuid() = %ld (euid %ld)\n", id, id);
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_getxuid")
+
+#endif
diff --git a/tests/getxuid.gen.test b/tests/getxuid.gen.test
new file mode 100755 (executable)
index 0000000..37db2dd
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getxuid -a10 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10 
diff --git a/tests/getxxid.c b/tests/getxxid.c
deleted file mode 100644 (file)
index 864cea5..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
- * All rights reserved.
- *
- * SPDX-License-Identifier: GPL-2.0-or-later
- */
-
-#include "tests.h"
-#include <asm/unistd.h>
-
-#if defined __NR_getxpid && defined __NR_getxuid && defined __NR_getxgid
-
-# include <stdio.h>
-# include <unistd.h>
-
-int
-main(void)
-{
-       long id;
-       pid_t ppid;
-
-       id = syscall(__NR_getxpid);
-       ppid = getppid();
-       printf("getxpid() = %ld (ppid %ld)\n", id, (long) ppid);
-       printf("getxpid() = %ld (ppid %ld)\n", id, (long) ppid);
-
-       id = syscall(__NR_getxuid);
-       printf("getxuid() = %ld (euid %ld)\n", id, id);
-
-       id = syscall(__NR_getxgid);
-       printf("getxgid() = %ld (egid %ld)\n", id, id);
-
-       puts("+++ exited with 0 +++");
-       return 0;
-}
-
-#else
-
-SKIP_MAIN_UNDEFINED("__NR_getxpid && __NR_getxuid && __NR_getxgid")
-
-#endif
diff --git a/tests/getxxid.gen.test b/tests/getxxid.gen.test
deleted file mode 100755 (executable)
index 5aa89f6..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getxxid -a10 -e trace=getxpid,getxuid,getxgid); do not edit.
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a10 -e trace=getxpid,getxuid,getxgid
index 40e621889ab8b27a2bb640c424492e75131e95e2..524170514211c603fefd3b03ae1d7013cd95c55b 100644 (file)
@@ -1,7 +1,7 @@
 #!/bin/sh
 #
 # Copyright (c) 2011-2016 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2011-2018 The strace developers.
+# Copyright (c) 2011-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -11,6 +11,7 @@ ME_="${0##*/}"
 LOG="log"
 OUT="out"
 EXP="exp"
+CONFIG_H="../../config.h"
 
 warn_() { printf >&2 '%s\n' "$*"; }
 fail_() { warn_ "$ME_: failed test: $*"; exit 1; }
@@ -18,6 +19,33 @@ skip_() { warn_ "$ME_: skipped test: $*"; exit 77; }
 framework_failure_() { warn_ "$ME_: framework failure: $*"; exit 99; }
 framework_skip_() { warn_ "$ME_: framework skip: $*"; exit 77; }
 
+# get_config_str OPTION
+#
+# Returns the value of OPTION from config.h (path to which set
+# in the CONFIG_H variable).
+get_config_str()
+{
+       sed -r -n 's/#define[[:space:]]*'"$1"'[[:space:]]*"([^"]*)".*/\1/p' \
+               "$CONFIG_H"
+}
+
+# get_config_option OPTION YES_STRING [NO_STRING]
+#
+# Returns YES_STRING in case OPTION is enabled (present in config.h and has
+# a non-zero numeric value). Otherwise, NO_STRING (or empty string, if not
+# specified) is returned.
+get_config_option()
+{
+       local opt
+       opt=$(sed -r -n 's/#define[[:space:]]*'"$1"'[[:space:]]*([0-9]+)$/\1/p' \
+               "$CONFIG_H")
+       if [ -n "$opt" -a "$opt" -ne 0 ]; then
+               printf "%s" "$2"
+       else
+               printf "%s" "${3-}"
+       fi
+}
+
 check_prog()
 {
        type "$@" > /dev/null 2>&1 ||
@@ -161,7 +189,7 @@ match_diff()
 # dump both files and fail with ERROR_MESSAGE.
 match_grep()
 {
-       local output patterns error pattern cnt failed=
+       local output patterns error pattern cnt failed= rc negated
        if [ $# -eq 0 ]; then
                output="$LOG"
        else
@@ -183,7 +211,15 @@ match_grep()
 
        cnt=1
        while read -r pattern; do
-               LC_ALL=C grep -E -x -e "$pattern" < "$output" > /dev/null || {
+               negated=0
+               [ "x${pattern#!}" = "x${pattern}" ] ||
+                       negated=1
+
+               rc="$negated"
+               LC_ALL=C grep -E -x -e "${pattern#!}" < "$output" > /dev/null ||
+                       rc="$((!negated))"
+
+               [ 0 = "$rc" ] || {
                        test -n "$failed" || {
                                echo 'Failed patterns of expected output:'
                                failed=1
@@ -191,7 +227,8 @@ match_grep()
                        printf '#%d: %s\n' "$cnt" "$pattern"
                }
                cnt=$(($cnt + 1))
-       done < "$patterns"
+       done < "$patterns" ||
+               fail_ "Error reading patterns from \"$patterns\""
        test -z "$failed" || {
                echo 'Actual output:'
                cat < "$output"
@@ -203,7 +240,7 @@ match_grep()
 run_strace_match_diff()
 {
        args="$*"
-       [ -n "$args" -a -z "${args##*-e trace=*}" ] ||
+       [ -n "$args" -a \( -z "${args##*-e trace=*}" -o -z "${args##*--trace=*}" \) ] ||
                set -- -e trace="$NAME" "$@"
        run_prog > /dev/null
        run_strace "$@" $args > "$EXP"
@@ -214,7 +251,7 @@ run_strace_match_diff()
 run_strace_match_grep()
 {
        args="$*"
-       [ -n "$args" -a -z "${args##*-e trace=*}" ] ||
+       [ -n "$args" -a \( -z "${args##*-e trace=*}" -o -z "${args##*--trace=*}" \) ] ||
                set -- -e trace="$NAME" "$@"
        run_prog > /dev/null
        run_strace "$@" $args > "$EXP"
@@ -247,6 +284,20 @@ require_min_kernel_version_or_skip()
                skip_ "the kernel release $uname_r is not $1 or newer"
 }
 
+# Usage: require_min_nproc 2
+require_min_nproc()
+{
+       local min_nproc
+       min_nproc="$1"; shift
+
+       check_prog nproc
+       local nproc
+       nproc="$(nproc)"
+
+       [ "$nproc" -ge "$min_nproc" ] ||
+               framework_skip_ "nproc = $nproc is less than $min_nproc"
+}
+
 # Usage: grep_pid_status $pid GREP-OPTIONS...
 grep_pid_status()
 {
@@ -297,6 +348,13 @@ test_pure_prog_set()
 
                try_run_prog "../$t" || continue
                run_strace $prog_args "$@" "../$t" > "$expfile"
+
+               case "$STRACE_ARCH:$MIPS_ABI:$NAME" in
+                       mips:o32:*creds)
+                               sed -i '/^prctl(PR_GET_FP_MODE)  *= 0$/d' "$LOG"
+                               ;;
+               esac
+
                match_diff "$LOG" "$expfile"
        } < /dev/null; done
 }
@@ -324,6 +382,41 @@ test_trace_expr()
                < negative.list
 }
 
+test_prog_set()
+{
+       test_pure_prog_set "$@" < "$srcdir/$NAME.in"
+}
+
+test_pidns_run_strace()
+{
+       local parent_pid init_pid
+
+       check_prog tail
+       check_prog cut
+       check_prog grep
+
+       run_prog > /dev/null
+       run_strace --pidns-translation -f $@ $args > "$EXP"
+
+       # filter out logs made by the parent or init process of the pidns test
+       parent_pid="$(tail -n 2 $LOG | head -n 1 | cut -d' ' -f1)"
+       init_pid="$(tail -n 1 $LOG | cut -d' ' -f1)"
+       grep -E -v "^($parent_pid|$init_pid) " "$LOG" > "$OUT"
+       match_diff "$OUT" "$EXP"
+}
+
+test_pidns()
+{
+       check_prog unshare
+       unshare -Urpf true || framework_skip_ "unshare -Urpf true failed"
+
+       test_pidns_run_strace "$@"
+
+       # test PID translation when /proc is mounted from an other namespace
+       STRACE="unshare -Urpf $STRACE"
+       test_pidns_run_strace "$@"
+}
+
 check_prog cat
 check_prog rm
 
@@ -365,7 +458,7 @@ fi
 : "${STRACE_EXE:=$STRACE}"
 export STRACE_EXE
 
-: "${TIMEOUT_DURATION:=600}"
+: "${TIMEOUT_DURATION:=1500}"
 : "${SLEEP_A_BIT:=sleep 1}"
 
 [ -z "${VERBOSE-}" ] ||
index 601f7f921323cb5a3d90618ee53e4f6165f133a7..a8884720fe74b71e9dd75826ec4cbc0e7982959b 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of init_module syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined(__NR_init_module)
 
index b419984f1f55d3657170347f1557cd9c228cf428..22f3457109c3fbd6d1afe9dc89938ab64746ffbc 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Check decoding of return values injected into a syscall that "never fails".
  *
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 #include <assert.h>
 #include <stdio.h>
 #include <stdlib.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 #include "raw_syscall.h"
 
-#ifdef __alpha__
-/* alpha has no getpid */
-# define SC_NR __NR_getpgrp
-# define SC_NAME "getpgrp"
-# define getpid getpgrp
+#ifdef __NR_geteuid32
+# define SC_NR __NR_geteuid32
+# define SC_NAME "geteuid32"
 #else
-# define SC_NR __NR_getpid
-# define SC_NAME "getpid"
+# define SC_NR __NR_geteuid
+# define SC_NAME "geteuid"
 #endif
 
 #ifdef raw_syscall_0
 # define INVOKE_SC(err) raw_syscall_0(SC_NR, &err)
 #else
-/* No raw_syscall_0, let's use getpid() and hope for the best.  */
-# define INVOKE_SC(err) getpid()
+/* No raw_syscall_0, let's use geteuid() and hope for the best. */
+# define INVOKE_SC(err) geteuid()
 #endif
 
 /*
  * This prototype is intentionally different
  * from the prototype provided by <unistd.h>.
  */
-extern kernel_ulong_t getpid(void);
+extern kernel_ulong_t geteuid(void);
 
 int
 main(int ac, char **av)
@@ -45,7 +43,7 @@ main(int ac, char **av)
        assert(ac == 1 || ac == 2);
 
        kernel_ulong_t expected =
-               (ac == 1) ? getpid() : strtoull(av[1], NULL, 0);
+               (ac == 1) ? geteuid() : strtoull(av[1], NULL, 0);
        kernel_ulong_t err = 0;
        kernel_ulong_t rc = INVOKE_SC(err);
 
index cadb5adb0535b9a6efd9c177d19aa81c903b8c5c..7b0c3fda2c86f06031c5b6ac3cc6d4ff29a08fb8 100755 (executable)
@@ -2,21 +2,14 @@
 #
 # Check decoding of return values injected into a syscall that "never fails".
 #
-# Copyright (c) 2018 The strace developers.
+# Copyright (c) 2018-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 . "${srcdir=.}/scno_tampering.sh"
 
-case "$STRACE_ARCH" in
-alpha)
-       SYSCALL=getpgrp
-       ;;
-*)
-       SYSCALL=getpid
-       ;;
-esac
+SYSCALL='/^geteuid(32)?$'
 
 run_prog
 prog="$args"
index db751d4ebf6f9b54d395860aae4b96d43beb017f..f5167509e4c7c2dd19ccc1150b8ccd100964b39c 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of inotify_add_watch and inotify_rm_watch syscalls.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined(__NR_inotify_add_watch) && defined(__NR_inotify_rm_watch)
 
diff --git a/tests/inotify_init-y.c b/tests/inotify_init-y.c
new file mode 100644 (file)
index 0000000..cbe094b
--- /dev/null
@@ -0,0 +1,2 @@
+#define PRINT_PATHS
+#include "inotify_init.c"
diff --git a/tests/inotify_init-y.test b/tests/inotify_init-y.test
new file mode 100755 (executable)
index 0000000..36f2477
--- /dev/null
@@ -0,0 +1,17 @@
+#!/bin/sh
+#
+# Check decoding of inotify_init with path decoding enabled.
+#
+# Copyright (c) 2018-2019 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/init.sh"
+
+# Test expects "anon_inode:inotify" link path format for a inotify fd, which
+# is in place since v2.6.33-rc1~34^2~7. Check for older link path formats
+# is implemented in inotify_init1 test.
+require_min_kernel_version_or_skip 2.6.33
+
+run_strace_match_diff -a15 -y -e trace=inotify_init
diff --git a/tests/inotify_init.c b/tests/inotify_init.c
new file mode 100644 (file)
index 0000000..9537a7d
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * Check decoding of inotify_init syscall.
+ *
+ * Copyright (c) 2018-2019 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_inotify_init
+
+# include <stdio.h>
+# include <unistd.h>
+
+int
+main(void)
+{
+# ifdef PRINT_PATHS
+       skip_if_unavailable("/proc/self/fd/");
+# endif
+
+       long rc = syscall(__NR_inotify_init, 42);
+
+# ifdef PRINT_PATHS
+       if (rc < 0)
+               perror_msg_and_skip("inotify_init");
+# endif
+
+       printf("inotify_init() = "
+# ifdef PRINT_PATHS
+              "%ld<anon_inode:inotify>\n", rc
+# else
+              "%s\n", sprintrc(rc)
+# endif
+              );
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_inotify_init");
+
+#endif
diff --git a/tests/inotify_init.gen.test b/tests/inotify_init.gen.test
new file mode 100755 (executable)
index 0000000..47e6f60
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (inotify_init -a15 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a15 
diff --git a/tests/inotify_init1-y.c b/tests/inotify_init1-y.c
new file mode 100644 (file)
index 0000000..53c65e6
--- /dev/null
@@ -0,0 +1,2 @@
+#define PRINT_PATHS
+#include "inotify_init1.c"
diff --git a/tests/inotify_init1-y.gen.test b/tests/inotify_init1-y.gen.test
new file mode 100755 (executable)
index 0000000..160d4d3
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (inotify_init1-y -a27 -y -e trace=inotify_init1); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27 -y -e trace=inotify_init1
index 4f352b70d46f3796ba0636333e5fcc853c889baf..efff52ec205d0aa8cf75652c2e15cc69b738d4c0 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of inotify_init1 syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined(__NR_inotify_init1)
 
 # endif
 # define all_flags (O_NONBLOCK | cloexec_flag)
 
+# ifdef PRINT_PATHS
+#  define RC_FMT "%ld<%s>"
+# else
+#  define RC_FMT "%s"
+# endif
+
 int
 main(void)
 {
+# ifdef PRINT_PATHS
+       skip_if_unavailable("/proc/self/fd/");
+# endif
+
        static const kernel_ulong_t bogus_flags1 =
                (kernel_ulong_t) 0xfacefeeddeadbeefULL | O_NONBLOCK;
        static const kernel_ulong_t bogus_flags2 =
@@ -46,8 +56,51 @@ main(void)
               (unsigned int) bogus_flags2, sprintrc(rc));
 
        rc = syscall(__NR_inotify_init1, all_flags);
-       printf("inotify_init1(IN_NONBLOCK%s) = %s\n",
-              all_flags & cloexec_flag ? "|IN_CLOEXEC" : "", sprintrc(rc));
+
+# ifdef PRINT_PATHS
+       if (rc < 0)
+               perror_msg_and_skip("inotify_init(%#x)", all_flags);
+
+       /*
+        * Kernels that do not have v2.6.33-rc1~34^2~7 do not have
+        * "anon_inode:" prefix.  Let's assume that it can be either "inotify"
+        * or "anon_inode:inotify" for now, as any change there may be
+        * of interest.
+        */
+       char path[sizeof("/proc/self/fd/") + sizeof(rc) * 3];
+       char buf[2] = "";
+       const char *inotify_path;
+       ssize_t ret;
+
+       ret = snprintf(path, sizeof(path), "/proc/self/fd/%ld", rc);
+       if ((ret < 0) || ((size_t) ret >= sizeof(path)))
+               perror_msg_and_fail("snprintf(path)");
+
+       ret = readlink(path, buf, sizeof(buf));
+       if (ret < 0)
+               perror_msg_and_fail("readlink");
+
+       switch (buf[0]) {
+       case 'a':
+               inotify_path = "anon_inode:inotify";
+               break;
+       case 'i':
+               inotify_path = "inotify";
+               break;
+       default:
+               error_msg_and_fail("Unexpected first char '%c' of inotify fd "
+                                  "link path", buf[0]);
+       }
+# endif
+
+       printf("inotify_init1(IN_NONBLOCK%s) = " RC_FMT "\n",
+              all_flags & cloexec_flag ? "|IN_CLOEXEC" : "",
+# ifdef PRINT_PATHS
+              rc, inotify_path
+# else
+              sprintrc(rc)
+# endif
+              );
 
        puts("+++ exited with 0 +++");
 
index 3284ebac3ed3c373f3fe96819213e8e492bb4d05..bc741cd4cb72028561a68f46d18c4b9afd171210 100644 (file)
@@ -9,7 +9,6 @@
 
 #include "tests.h"
 #include <unistd.h>
-#include <asm/unistd.h>
 #include "scno.h"
 
 #ifdef __NR_io_uring_enter
index a0327ed85088eca18418cee921652edd98e85271..b0c5b9ee4f81c2a0bc9a2dbc311040b65ac22dd6 100644 (file)
@@ -2,6 +2,7 @@
  * Check decoding of io_uring_register syscall.
  *
  * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2019-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 
 #include "tests.h"
 #include <unistd.h>
-#include <asm/unistd.h>
 #include "scno.h"
 
 #ifdef __NR_io_uring_register
 
 # include <fcntl.h>
+# include <inttypes.h>
 # include <stdio.h>
 # include <string.h>
 # include <sys/uio.h>
 
+# ifdef HAVE_LINUX_IO_URING_H
+#  include <linux/io_uring.h>
+# endif
+
+/* From tests/bpf.c */
+# if defined MPERS_IS_m32 || SIZEOF_KERNEL_LONG_T > 4
+#  define BIG_ADDR_MAYBE(addr_)
+# elif defined __arm__ || defined __i386__ || defined __mips__ \
+   || defined __powerpc__ || defined __riscv__ || defined __s390__ \
+   || defined __sparc__ || defined __tile__
+#  define BIG_ADDR_MAYBE(addr_) addr_ " or "
+# else
+#  define BIG_ADDR_MAYBE(addr_)
+# endif
+
+# if WORDS_BIGENDIAN
+#  define BE_LE(be_, le_) be_
+# else
+#  define BE_LE(be_, le_) le_
+# endif
+
 static const char *errstr;
 
 static long
@@ -64,15 +86,40 @@ main(void)
 
        int fd_full = open(path_full, O_RDONLY);
        if (fd_full < 0)
-               perror_msg_and_fail("open: %s", path_null);
+               perror_msg_and_fail("open: %s", path_full);
 
        int fds[] = { fd_full, fd_null };
        const int *arg_fds = tail_memdup(fds, sizeof(fds));
 
-       sys_io_uring_register(fd_null, 0xbadc0ded, path_null, 0xdeadbeef);
-       printf("io_uring_register(%u<%s>, %#x /* IORING_REGISTER_??? */"
-              ", %p, %u) = %s\n",
-              fd_null, path_null, 0xbadc0ded, path_null, 0xdeadbeef, errstr);
+       static const unsigned int invalid_ops[] = { 0xbadc0dedU, 11 };
+
+       for (size_t i = 0; i < ARRAY_SIZE(invalid_ops); i++) {
+               sys_io_uring_register(fd_null, invalid_ops[i], path_null,
+                                     0xdeadbeef);
+               printf("io_uring_register(%u<%s>, %#x /* IORING_REGISTER_??? */"
+                      ", %p, %u) = %s\n",
+                      fd_null, path_null, invalid_ops[i], path_null,
+                      0xdeadbeef, errstr);
+       }
+
+       static const struct {
+               unsigned int op;
+               const char *str;
+       } no_arg_ops[] = {
+               { 1, "IORING_UNREGISTER_BUFFERS" },
+               { 3, "IORING_UNREGISTER_FILES" },
+               { 5, "IORING_UNREGISTER_EVENTFD" },
+               { 9, "IORING_REGISTER_PERSONALITY" },
+               { 10, "IORING_UNREGISTER_PERSONALITY" },
+       };
+
+       for (size_t i = 0; i < ARRAY_SIZE(no_arg_ops); i++) {
+               sys_io_uring_register(fd_null, no_arg_ops[i].op, path_null,
+                                     0xdeadbeef);
+               printf("io_uring_register(%u<%s>, %s, %p, %u) = %s\n",
+                      fd_null, path_null, no_arg_ops[i].str, path_null,
+                      0xdeadbeef, errstr);
+       }
 
        sys_io_uring_register(fd_null, 0, arg_iov, ARRAY_SIZE(iov));
        printf("io_uring_register(%u<%s>, IORING_REGISTER_BUFFERS"
@@ -83,11 +130,157 @@ main(void)
               iov[1].iov_base, (unsigned long) iov[1].iov_len,
               (unsigned int) ARRAY_SIZE(iov), errstr);
 
-       sys_io_uring_register(fd_null, 2, arg_fds, ARRAY_SIZE(fds));
-       printf("io_uring_register(%u<%s>, IORING_REGISTER_FILES"
-              ", [%u<%s>, %u<%s>], %u) = %s\n",
+       static const struct {
+               unsigned int op;
+               const char *str;
+       } fd_arr_ops[] = {
+               { 2, "IORING_REGISTER_FILES" },
+               { 4, "IORING_REGISTER_EVENTFD" },
+               { 7, "IORING_REGISTER_EVENTFD_ASYNC" },
+       };
+
+       for (size_t i = 0; i < ARRAY_SIZE(fd_arr_ops); i++) {
+               sys_io_uring_register(fd_null, fd_arr_ops[i].op, arg_fds,
+                                     ARRAY_SIZE(fds));
+               printf("io_uring_register(%u<%s>, %s, [%u<%s>, %u<%s>], %u)"
+                      " = %s\n",
+                      fd_null, path_null, fd_arr_ops[i].str,
+                      fd_full, path_full, fd_null, path_null,
+                      (unsigned int) ARRAY_SIZE(fds), errstr);
+       }
+
+# ifdef HAVE_STRUCT_IO_URING_FILES_UPDATE
+       struct io_uring_files_update bogus_iufu;
+       struct io_uring_files_update iufu;
+
+       sys_io_uring_register(fd_null, 6, NULL, 0xfacefeed);
+       printf("io_uring_register(%u<%s>, IORING_REGISTER_FILES_UPDATE"
+              ", NULL, 4207869677) = %s\n",
+              fd_null, path_null, errstr);
+
+       fill_memory(&bogus_iufu, sizeof(bogus_iufu));
+       sys_io_uring_register(fd_null, 6, &bogus_iufu, 0);
+       printf("io_uring_register(%u<%s>, IORING_REGISTER_FILES_UPDATE"
+              ", {offset=%" PRIu32 ", resv=%#" PRIx32 ", fds="
+              BIG_ADDR_MAYBE(BE_LE("0x88898a8b8c8d8e8f", "0x8f8e8d8c8b8a8988"))
+              "[]}, 0) = %s\n",
+              fd_null, path_null,
+              ((uint32_t *) &bogus_iufu)[0], ((uint32_t *) &bogus_iufu)[1],
+              errstr);
+
+       memset(&iufu, 0, sizeof(iufu));
+       iufu.offset = 0xdeadc0deU;
+       iufu.fds = (uintptr_t) fds;
+       sys_io_uring_register(fd_null, 6, &iufu, ARRAY_SIZE(fds));
+       printf("io_uring_register(%u<%s>, IORING_REGISTER_FILES_UPDATE"
+              ", {offset=3735929054, fds=[%u<%s>, %u<%s>]}, %u) = %s\n",
               fd_null, path_null, fd_full, path_full, fd_null, path_null,
               (unsigned int) ARRAY_SIZE(fds), errstr);
+# endif
+
+# ifdef HAVE_STRUCT_IO_URING_PROBE
+       struct io_uring_probe *probe = tail_alloc(sizeof(*probe) +
+                      (DEFAULT_STRLEN + 1) * sizeof(struct io_uring_probe_op));
+
+       sys_io_uring_register(fd_null, IORING_REGISTER_PROBE, NULL, 0xfacefeed);
+       printf("io_uring_register(%u<%s>, IORING_REGISTER_PROBE"
+              ", NULL, 4207869677) = %s\n",
+              fd_null, path_null, errstr);
+
+       sys_io_uring_register(fd_null, IORING_REGISTER_PROBE, probe,
+                             0xfacefeed);
+       printf("io_uring_register(%u<%s>, IORING_REGISTER_PROBE"
+              ", %p, 4207869677) = %s\n",
+              fd_null, path_null, probe, errstr);
+
+       sys_io_uring_register(fd_null, IORING_REGISTER_PROBE,
+                             (char *) probe + 1, DEFAULT_STRLEN + 1);
+       printf("io_uring_register(%u<%s>, IORING_REGISTER_PROBE"
+              ", %p, %d) = %s\n",
+              fd_null, path_null, (char *) probe + 1, DEFAULT_STRLEN + 1,
+              errstr);
+
+       sys_io_uring_register(fd_null, IORING_REGISTER_PROBE, probe, 0);
+       printf("io_uring_register(%u<%s>, IORING_REGISTER_PROBE"
+              ", {last_op=%u /* IORING_OP_??? */, ops_len=%hhu, resv=%#hx"
+              ", resv2=[%#x, %#x, %#x], ops=[]}, 0) = %s\n",
+              fd_null, path_null, probe->last_op, probe->ops_len, probe->resv,
+              probe->resv2[0], probe->resv2[1], probe->resv2[2], errstr);
+
+       probe->last_op = IORING_OP_READV;
+       probe->resv = 0;
+       sys_io_uring_register(fd_null, IORING_REGISTER_PROBE, probe, 0);
+       printf("io_uring_register(%u<%s>, IORING_REGISTER_PROBE"
+              ", {last_op=IORING_OP_READV, ops_len=%hhu"
+              ", resv2=[%#x, %#x, %#x], ops=[]}, 0) = %s\n",
+              fd_null, path_null, probe->ops_len,
+              probe->resv2[0], probe->resv2[1], probe->resv2[2], errstr);
+
+       probe->last_op = IORING_OP_EPOLL_CTL;
+       probe->resv2[0] = 0;
+       probe->resv2[2] = 0;
+
+       probe->ops[0].op = IORING_OP_NOP;
+       probe->ops[0].resv = 0xde;
+       probe->ops[0].flags = 0;
+       probe->ops[0].resv2 = 0xbeefface;
+
+       probe->ops[1].op = 33;
+       probe->ops[1].resv = 0;
+       probe->ops[1].flags = IO_URING_OP_SUPPORTED;
+       probe->ops[1].resv2 = 0xdeadc0de;
+
+       probe->ops[2].op = 34;
+       probe->ops[2].resv = 0xaf;
+       probe->ops[2].flags = 0xbeef;
+       probe->ops[2].resv2 = 0;
+
+       probe->ops[3].op = 0xfe;
+       probe->ops[3].resv = 0;
+       probe->ops[3].flags = 0xc0de;
+       probe->ops[3].resv2 = 0;
+
+       sys_io_uring_register(fd_null, IORING_REGISTER_PROBE, probe, 4);
+       printf("io_uring_register(%u<%s>, IORING_REGISTER_PROBE"
+              ", {last_op=IORING_OP_EPOLL_CTL, ops_len=%hhu"
+              ", resv2=[0, %#x, 0], ops=["
+              "{op=IORING_OP_NOP, resv=0xde, flags=0, resv2=0xbeefface}, "
+              "{op=IORING_OP_TEE, flags=IO_URING_OP_SUPPORTED"
+              ", resv2=0xdeadc0de}, "
+              "{op=34 /* IORING_OP_??? */, resv=0xaf"
+              ", flags=IO_URING_OP_SUPPORTED|0xbeee}, "
+              "{op=254 /* IORING_OP_??? */"
+              ", flags=0xc0de /* IO_URING_OP_??? */}]}, 4) = %s\n",
+              fd_null, path_null, probe->ops_len, probe->resv2[1], errstr);
+
+       probe->last_op = 34;
+       probe->resv2[1] = 0;
+       fill_memory_ex(probe->ops, sizeof(probe->ops[0]) * (DEFAULT_STRLEN + 1),
+                   0x40, 0x80);
+       sys_io_uring_register(fd_null, IORING_REGISTER_PROBE, probe,
+                             DEFAULT_STRLEN + 1);
+       printf("io_uring_register(%u<%s>, IORING_REGISTER_PROBE"
+              ", {last_op=34 /* IORING_OP_??? */, ops_len=%hhu, ops=[",
+              fd_null, path_null, probe->ops_len);
+       for (size_t i = 0; i < DEFAULT_STRLEN; i++) {
+               printf("%s{op=%u /* IORING_OP_??? */, resv=%#hhx"
+                      ", flags=%s%#hx%s, resv2=%#x}",
+                      i ? ", " : "",
+                      probe->ops[i].op, probe->ops[i].resv,
+                      probe->ops[i].flags & 1 ? "IO_URING_OP_SUPPORTED|" : "",
+                      (typeof(probe->ops[i].flags)) (probe->ops[i].flags & ~1),
+                      probe->ops[i].flags & 1 ? "" : " /* IO_URING_OP_??? */",
+                      probe->ops[i].resv2);
+       }
+       printf(", ...]}, %d) = %s\n", DEFAULT_STRLEN + 1, errstr);
+
+       probe->last_op = 0;
+       probe->ops_len = 0;
+       memset(probe->ops, 0, sizeof(probe->ops[0]) * (DEFAULT_STRLEN + 1));
+       sys_io_uring_register(fd_null, IORING_REGISTER_PROBE, probe, 8);
+       printf("io_uring_register(%u<%s>, IORING_REGISTER_PROBE, %p, 8) = %s\n",
+              fd_null, path_null, probe, errstr);
+# endif
 
        puts("+++ exited with 0 +++");
        return 0;
index f48095bb344cb634b791cffb1442ff28e78e76e1..d54f8c9bc020093a156dbfbceecb41b4a67a8727 100644 (file)
@@ -2,6 +2,7 @@
  * Check decoding of io_uring_setup syscall.
  *
  * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2019-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 
 #include "tests.h"
 #include <unistd.h>
-#include <asm/unistd.h>
 #include "scno.h"
 
 #if defined HAVE_LINUX_IO_URING_H && defined __NR_io_uring_setup
 
+# include <fcntl.h>
 # include <stdio.h>
 # include <stdint.h>
 # include <string.h>
 # include <linux/io_uring.h>
 
+# include <sys/stat.h>
+# include <sys/types.h>
+
 # include "print_fields.h"
+# include "xlat.h"
+
+# include "xlat/uring_setup_features.h"
+# include "xlat/uring_cqring_flags.h"
+
+# ifdef HAVE_STRUCT_IO_URING_PARAMS_FEATURES
+#  ifdef HAVE_STRUCT_IO_URING_PARAMS_WQ_FD
+#   define RESV_START 0
+#  else
+#   define RESV_START 1
+#  endif
+# else /* !HAVE_STRUCT_IO_URING_PARAMS_FEATURES */
+#  define RESV_START 2
+# endif /* HAVE_STRUCT_IO_URING_PARAMS_FEATURES */
 
 static const char *errstr;
 
@@ -39,12 +57,18 @@ sys_io_uring_setup(uint32_t nentries, const void *params)
 int
 main(void)
 {
+       static const char path_full[] = "/dev/full";
+
        long rc;
        TAIL_ALLOC_OBJECT_CONST_PTR(struct io_uring_params, params);
        const void *efault = (const void *) params + 1;
 
        skip_if_unavailable("/proc/self/fd/");
 
+       int fd_full = open(path_full, O_RDONLY);
+       if (fd_full < 0)
+               perror_msg_and_fail("open: %s", path_full);
+
        sys_io_uring_setup(-1U, NULL);
        printf("io_uring_setup(%u, NULL) = %s\n", -1U, errstr);
 
@@ -55,42 +79,110 @@ main(void)
        params->flags = -1;
        sys_io_uring_setup(1, params);
        printf("io_uring_setup(%u, {flags=IORING_SETUP_IOPOLL"
-              "|IORING_SETUP_SQPOLL|IORING_SETUP_SQ_AFF|%#x"
-              ", sq_thread_cpu=%#x, sq_thread_idle=%u, resv={",
-              1, -1U - 7, params->sq_thread_cpu, params->sq_thread_idle);
-       for (unsigned int i = 0; i < ARRAY_SIZE(params->resv); ++i)
-               printf("%s%#x", i ? ", " : "", params->resv[i]);
-       printf("}}) = %s\n", errstr);
-
-       memset(params, 0, sizeof(*params));
-       rc = sys_io_uring_setup(2, params);
-       printf("io_uring_setup(%u, {flags=0, sq_thread_cpu=0"
-              ", sq_thread_idle=0", 2);
-       if (rc < 0)
-               printf("}) = %s\n", errstr);
-       else
-               printf(", sq_entries=%u, cq_entries=%u"
-                      ", sq_off={head=%u, tail=%u, ring_mask=%u"
-                      ", ring_entries=%u, flags=%u, dropped=%u, array=%u}"
-                      ", cq_off={head=%u, tail=%u, ring_mask=%u"
-                      ", ring_entries=%u, overflow=%u, cqes=%u}"
-                      "}) = %ld<anon_inode:[io_uring]>\n",
-                      params->sq_entries,
-                      params->cq_entries,
-                      params->sq_off.head,
-                      params->sq_off.tail,
-                      params->sq_off.ring_mask,
-                      params->sq_off.ring_entries,
-                      params->sq_off.flags,
-                      params->sq_off.dropped,
-                      params->sq_off.array,
-                      params->cq_off.head,
-                      params->cq_off.tail,
-                      params->cq_off.ring_mask,
-                      params->cq_off.ring_entries,
-                      params->cq_off.overflow,
-                      params->cq_off.cqes,
-                      rc);
+              "|IORING_SETUP_SQPOLL|IORING_SETUP_SQ_AFF|IORING_SETUP_CQSIZE"
+              "|IORING_SETUP_CLAMP|IORING_SETUP_ATTACH_WQ|%#x"
+              ", sq_thread_cpu=%#x, sq_thread_idle=%u, wq_fd=%d, resv=[",
+              1, -1U - 63, params->sq_thread_cpu, params->sq_thread_idle,
+# if defined HAVE_STRUCT_IO_URING_PARAMS_WQ_FD
+              params->wq_fd
+# elif defined HAVE_STRUCT_IO_URING_PARAMS_FEATURES
+              params->resv[0]
+# else
+              params->resv[1]
+# endif
+              );
+       for (unsigned int i = RESV_START; i < ARRAY_SIZE(params->resv); ++i)
+               printf("%s%#x", i != RESV_START ? ", " : "", params->resv[i]);
+       printf("]}) = %s\n", errstr);
+
+       for (size_t i = 0; i < 2; i++) {
+               memset(params, 0, sizeof(*params));
+
+# if defined HAVE_STRUCT_IO_URING_PARAMS_WQ_FD
+               params->wq_fd
+# elif defined HAVE_STRUCT_IO_URING_PARAMS_FEATURES
+               params->resv[0]
+# else
+               params->resv[1]
+# endif
+                       = i == 1 ? fd_full : -1;
+               params->flags = i == 1 ? 32 : 0;
+
+               rc = sys_io_uring_setup(2, params);
+               printf("io_uring_setup(%u, {flags=%s, sq_thread_cpu=0"
+                      ", sq_thread_idle=0",
+                      2, i == 1 ? "IORING_SETUP_ATTACH_WQ" : "0");
+               if (i == 1)
+                       printf(", wq_fd=%d<%s>", fd_full, path_full);
+               if (rc < 0) {
+                       printf("}) = %s\n", errstr);
+               } else {
+                       printf(", sq_entries=%u, cq_entries=%u, features=",
+                              params->sq_entries,
+                              params->cq_entries);
+                       printflags(uring_setup_features,
+# ifdef HAVE_STRUCT_IO_URING_PARAMS_FEATURES
+                                  params->features,
+# else
+                                  params->resv[0],
+# endif
+                                  "IORING_FEAT_???");
+                       printf(", sq_off={head=%u, tail=%u, ring_mask=%u"
+                              ", ring_entries=%u, flags=%u, dropped=%u"
+                              ", array=%u",
+                              params->sq_off.head,
+                              params->sq_off.tail,
+                              params->sq_off.ring_mask,
+                              params->sq_off.ring_entries,
+                              params->sq_off.flags,
+                              params->sq_off.dropped,
+                              params->sq_off.array);
+                       if (params->sq_off.resv1)
+                               printf(", resv1=%#x", params->sq_off.resv1);
+                       if (params->sq_off.resv2)
+                               printf(", resv1=%#llx",
+                                      (unsigned long long)
+                                               params->sq_off.resv2);
+
+                       printf("}, cq_off={head=%u, tail=%u, ring_mask=%u"
+                              ", ring_entries=%u, overflow=%u, cqes=%u, flags=",
+                              params->cq_off.head,
+                              params->cq_off.tail,
+                              params->cq_off.ring_mask,
+                              params->cq_off.ring_entries,
+                              params->cq_off.overflow,
+                              params->cq_off.cqes);
+# ifdef HAVE_STRUCT_IO_CQRING_OFFSETS_FLAGS
+                       printflags(uring_cqring_flags,
+                              params->cq_off.flags,
+                              "IORING_CQ_???");
+                       if (params->cq_off.resv1)
+                               printf(", resv1=%#x", params->cq_off.resv1);
+                       if (params->cq_off.resv2)
+                               printf(", resv2=%#llx",
+                                      (unsigned long long)
+                                               params->cq_off.resv2);
+# else
+                       union {
+                               struct {
+                                       uint32_t flags;
+                                       uint32_t resv1;
+                               } s;
+                               uint64_t v;
+                       } u = { .v = params->cq_off.resv[0] };
+                       printflags(uring_cqring_flags, u.s.flags,
+                                  "IORING_CQ_???");
+                       if (u.s.resv1)
+                               printf(", resv1=%#x", u.s.resv1);
+                       if (params->cq_off.resv[1])
+                               printf(", resv2=%#llx",
+                                      (unsigned long long)
+                                               params->cq_off.resv[1]);
+# endif
+
+                       printf("}}) = %ld<anon_inode:[io_uring]>\n", rc);
+               }
+       }
 
        puts("+++ exited with 0 +++");
        return 0;
diff --git a/tests/ioctl-success.sh b/tests/ioctl-success.sh
new file mode 100755 (executable)
index 0000000..9dd8aee
--- /dev/null
@@ -0,0 +1,21 @@
+#!/bin/sh -efu
+#
+# Check decoding of ioctls using syscall injection.
+#
+# Expects a binary that accepts IOCTL_INJECT_START as the first argument.
+#
+# Copyright (c) 2018-2020 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/scno_tampering.sh"
+
+: ${IOCTL_INJECT_START=256}
+: ${IOCTL_INJECT_RETVAL=42}
+
+run_strace -a50 "$@" -e trace=ioctl \
+       -e inject=ioctl:retval="${IOCTL_INJECT_RETVAL}":when="${IOCTL_INJECT_START}+" \
+       "../$NAME" "${IOCTL_INJECT_START}" "${IOCTL_INJECT_RETVAL}" > "$EXP"
+grep -v '^ioctl([012][,<]' < "$LOG" > "$OUT"
+match_diff "$OUT" "$EXP"
index ec4e367029ef5b4f93271aac59527f870989bc65..4f8e2e9f40dd95d4c5911eba59c817f4201be34f 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -14,6 +14,8 @@
 #include <termios.h>
 #include <sys/ioctl.h>
 
+#include <linux/types.h>
+
 #ifdef HAVE_LINUX_MMTIMER_H
 # include <linux/mmtimer.h>
 #endif
diff --git a/tests/ioctl_block--pidns-translation.c b/tests/ioctl_block--pidns-translation.c
new file mode 100644 (file)
index 0000000..5eed607
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "ioctl_block.c"
diff --git a/tests/ioctl_block--pidns-translation.test b/tests/ioctl_block--pidns-translation.test
new file mode 100755 (executable)
index 0000000..d06855f
--- /dev/null
@@ -0,0 +1,22 @@
+#!/bin/sh
+#
+# Check pidns translation of ioctl(BLK*) syscall decoding.
+#
+# Copyright (c) 2020 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+. "${srcdir=.}/init.sh"
+
+check_prog head
+check_prog tail
+check_prog cut
+check_prog grep
+
+run_prog > /dev/null
+run_strace --pidns-translation -f -a16 -e trace=ioctl $@ $args > "$EXP"
+parent_pid="$(tail -n 2 $LOG | head -n 1 | cut -d' ' -f1)"
+init_pid="$(tail -n 1 $LOG | cut -d' ' -f1)"
+grep -E -v "^($parent_pid|$init_pid) |ioctl\([0123][,<]" "$LOG" > "$OUT"
+match_diff "$OUT" "$EXP"
index 65f434c8f344bdb8b15826c9391d0cf52fd7ba6b..8a345f4e1aa74aa7d7b819626ef789b16467983f 100644 (file)
@@ -2,14 +2,16 @@
  * This file is part of ioctl_block strace test.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
+#include "pidns.h"
 #include <errno.h>
+#include <unistd.h>
 #include <inttypes.h>
 #include <stdio.h>
 #include <string.h>
@@ -24,7 +26,7 @@
 static const unsigned int magic = 0xdeadbeef;
 static const unsigned long lmagic = (unsigned long) 0xdeadbeefbadc0dedULL;
 
-static struct xlat block_argless[] = {
+static struct xlat_data block_argless[] = {
        XLAT(BLKRRPART),
        XLAT(BLKFLSBUF),
 #ifdef BLKTRACESTART
@@ -41,12 +43,15 @@ static struct xlat block_argless[] = {
 #define TEST_NULL_ARG(cmd)                                             \
        do {                                                            \
                ioctl(-1, cmd, 0);                                      \
+               pidns_print_leader();                                   \
                printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n", #cmd);  \
        } while (0)
 
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        TEST_NULL_ARG(BLKBSZGET);
        TEST_NULL_ARG(BLKBSZSET);
        TEST_NULL_ARG(BLKFRAGET);
@@ -91,18 +96,22 @@ main(void)
 #endif
 
        ioctl(-1, BLKRASET, lmagic);
+       pidns_print_leader();
        printf("ioctl(-1, BLKRASET, %lu) = -1 EBADF (%m)\n", lmagic);
 
        ioctl(-1, BLKFRASET, lmagic);
+       pidns_print_leader();
        printf("ioctl(-1, BLKFRASET, %lu) = -1 EBADF (%m)\n", lmagic);
 
        TAIL_ALLOC_OBJECT_CONST_PTR(int, val_int);
        *val_int = magic;
 
        ioctl(-1, BLKROSET, val_int);
+       pidns_print_leader();
        printf("ioctl(-1, BLKROSET, [%d]) = -1 EBADF (%m)\n", *val_int);
 
        ioctl(-1, BLKBSZSET, val_int);
+       pidns_print_leader();
        printf("ioctl(-1, BLKBSZSET, [%d]) = -1 EBADF (%m)\n", *val_int);
 
        uint64_t *pair_int64 = tail_alloc(sizeof(*pair_int64) * 2);
@@ -111,18 +120,21 @@ main(void)
 
 #ifdef BLKDISCARD
        ioctl(-1, BLKDISCARD, pair_int64);
+       pidns_print_leader();
        printf("ioctl(-1, BLKDISCARD, [%" PRIu64 ", %" PRIu64 "])"
               " = -1 EBADF (%m)\n", pair_int64[0], pair_int64[1]);
 #endif
 
 #ifdef BLKSECDISCARD
        ioctl(-1, BLKSECDISCARD, pair_int64);
+       pidns_print_leader();
        printf("ioctl(-1, BLKSECDISCARD, [%" PRIu64 ", %" PRIu64 "])"
               " = -1 EBADF (%m)\n", pair_int64[0], pair_int64[1]);
 #endif
 
 #ifdef BLKZEROOUT
        ioctl(-1, BLKZEROOUT, pair_int64);
+       pidns_print_leader();
        printf("ioctl(-1, BLKZEROOUT, [%" PRIu64 ", %" PRIu64 "])"
               " = -1 EBADF (%m)\n", pair_int64[0], pair_int64[1]);
 #endif
@@ -134,6 +146,7 @@ main(void)
        blkpg->data = (void *) (unsigned long) 0xcafef00dfffffeedULL;
 
        ioctl(-1, BLKPG, blkpg);
+       pidns_print_leader();
        printf("ioctl(-1, BLKPG, {op=%s, flags=%d, datalen=%d"
               ", data=%#lx}) = -1 EBADF (%m)\n",
               "BLKPG_RESIZE_PARTITION", blkpg->flags, blkpg->datalen,
@@ -149,6 +162,7 @@ main(void)
        blkpg->data = bp;
 
        ioctl(-1, BLKPG, blkpg);
+       pidns_print_leader();
        printf("ioctl(-1, BLKPG, {op=%s, flags=%d, datalen=%d"
               ", data={start=%lld, length=%lld, pno=%d"
               ", devname=\"%.*s\"..., volname=\"%.*s\"...}})"
@@ -162,25 +176,31 @@ main(void)
 #if defined BLKTRACESETUP && defined HAVE_STRUCT_BLK_USER_TRACE_SETUP
        TAIL_ALLOC_OBJECT_CONST_PTR(struct blk_user_trace_setup, buts);
        fill_memory(buts, sizeof(*buts));
+       buts->pid = getpid();
 
        ioctl(-1, BLKTRACESETUP, buts);
+       pidns_print_leader();
        printf("ioctl(-1, BLKTRACESETUP, {act_mask=%hu, buf_size=%u, buf_nr=%u"
-              ", start_lba=%" PRI__u64 ", end_lba=%" PRI__u64 ", pid=%u})"
+              ", start_lba=%" PRI__u64 ", end_lba=%" PRI__u64 ", pid=%d%s})"
               " = -1 EBADF (%m)\n",
               buts->act_mask, buts->buf_size, buts->buf_nr,
-              buts->start_lba, buts->end_lba, buts->pid);
+              buts->start_lba, buts->end_lba, buts->pid,
+              pidns_pid2str(PT_TGID));
 #endif
 
        unsigned int i;
        for (i = 0; i < ARRAY_SIZE(block_argless); ++i) {
                ioctl(-1, (unsigned long) block_argless[i].val, lmagic);
+               pidns_print_leader();
                printf("ioctl(-1, %s) = -1 EBADF (%m)\n", block_argless[i].str);
        }
 
        ioctl(-1, _IOC(_IOC_READ, 0x12, 0xfe, 0xff), lmagic);
+       pidns_print_leader();
        printf("ioctl(-1, %s, %#lx) = -1 EBADF (%m)\n",
               "_IOC(_IOC_READ, 0x12, 0xfe, 0xff)", lmagic);
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
diff --git a/tests/ioctl_evdev-Xabbrev.c b/tests/ioctl_evdev-Xabbrev.c
new file mode 100644 (file)
index 0000000..ac474bf
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_ABBREV 1
+#include "ioctl_evdev.c"
diff --git a/tests/ioctl_evdev-Xabbrev.gen.test b/tests/ioctl_evdev-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..5f72444
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-Xabbrev +ioctl.test -a26 -Xabbrev); do not edit.
+set -- -a26 -Xabbrev
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_evdev-Xraw.c b/tests/ioctl_evdev-Xraw.c
new file mode 100644 (file)
index 0000000..15f586f
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "ioctl_evdev.c"
diff --git a/tests/ioctl_evdev-Xraw.gen.test b/tests/ioctl_evdev-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..f292f4c
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-Xraw +ioctl.test -a28 -Xraw); do not edit.
+set -- -a28 -Xraw
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_evdev-Xverbose.c b/tests/ioctl_evdev-Xverbose.c
new file mode 100644 (file)
index 0000000..603c2f0
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "ioctl_evdev.c"
diff --git a/tests/ioctl_evdev-Xverbose.gen.test b/tests/ioctl_evdev-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..0b1b4fc
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-Xverbose +ioctl.test -a41 -Xverbose); do not edit.
+set -- -a41 -Xverbose
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_evdev-success-Xabbrev.c b/tests/ioctl_evdev-success-Xabbrev.c
new file mode 100644 (file)
index 0000000..9f2416b
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_ABBREV 1
+#include "ioctl_evdev-success.c"
diff --git a/tests/ioctl_evdev-success-Xabbrev.gen.test b/tests/ioctl_evdev-success-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..6432322
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-success-Xabbrev +ioctl_evdev-success.test -Xabbrev); do not edit.
+set -- -Xabbrev
+. "${srcdir=.}/ioctl_evdev-success.test"
diff --git a/tests/ioctl_evdev-success-Xraw.c b/tests/ioctl_evdev-success-Xraw.c
new file mode 100644 (file)
index 0000000..097672a
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "ioctl_evdev-success.c"
diff --git a/tests/ioctl_evdev-success-Xraw.gen.test b/tests/ioctl_evdev-success-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..c4f8c43
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-success-Xraw +ioctl_evdev-success.test -a27 -Xraw); do not edit.
+set -- -a27 -Xraw
+. "${srcdir=.}/ioctl_evdev-success.test"
diff --git a/tests/ioctl_evdev-success-Xverbose.c b/tests/ioctl_evdev-success-Xverbose.c
new file mode 100644 (file)
index 0000000..9ee67a0
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "ioctl_evdev-success.c"
diff --git a/tests/ioctl_evdev-success-Xverbose.gen.test b/tests/ioctl_evdev-success-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..a1781fc
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-success-Xverbose +ioctl_evdev-success.test -a43 -Xverbose); do not edit.
+set -- -a43 -Xverbose
+. "${srcdir=.}/ioctl_evdev-success.test"
diff --git a/tests/ioctl_evdev-success-v-Xabbrev.c b/tests/ioctl_evdev-success-v-Xabbrev.c
new file mode 100644 (file)
index 0000000..566ad3e
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_ABBREV 1
+#include "ioctl_evdev-success-v.c"
diff --git a/tests/ioctl_evdev-success-v-Xabbrev.gen.test b/tests/ioctl_evdev-success-v-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..cdb9e79
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-success-v-Xabbrev +ioctl_evdev-success.test -v -Xabbrev); do not edit.
+set -- -v -Xabbrev
+. "${srcdir=.}/ioctl_evdev-success.test"
diff --git a/tests/ioctl_evdev-success-v-Xraw.c b/tests/ioctl_evdev-success-v-Xraw.c
new file mode 100644 (file)
index 0000000..461bcd7
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "ioctl_evdev-success-v.c"
diff --git a/tests/ioctl_evdev-success-v-Xraw.gen.test b/tests/ioctl_evdev-success-v-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..4c29234
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-success-v-Xraw +ioctl_evdev-success.test -a27 -v -Xraw); do not edit.
+set -- -a27 -v -Xraw
+. "${srcdir=.}/ioctl_evdev-success.test"
diff --git a/tests/ioctl_evdev-success-v-Xverbose.c b/tests/ioctl_evdev-success-v-Xverbose.c
new file mode 100644 (file)
index 0000000..1754320
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "ioctl_evdev-success-v.c"
diff --git a/tests/ioctl_evdev-success-v-Xverbose.gen.test b/tests/ioctl_evdev-success-v-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..d1d1cde
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-success-v-Xverbose +ioctl_evdev-success.test -a43 -v -Xverbose); do not edit.
+set -- -a43 -v -Xverbose
+. "${srcdir=.}/ioctl_evdev-success.test"
diff --git a/tests/ioctl_evdev-success-v.gen.test b/tests/ioctl_evdev-success-v.gen.test
new file mode 100755 (executable)
index 0000000..aa72de1
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-success-v +ioctl_evdev-success.test -a26 -v); do not edit.
+set -- -a26 -v
+. "${srcdir=.}/ioctl_evdev-success.test"
diff --git a/tests/ioctl_evdev-success-v.test b/tests/ioctl_evdev-success-v.test
deleted file mode 100755 (executable)
index faedee3..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/sh -efu
-#
-# Copyright (c) 2018 The strace developers.
-# All rights reserved.
-#
-# SPDX-License-Identifier: GPL-2.0-or-later
-
-. "${srcdir=.}/scno_tampering.sh"
-
-: ${IOCTL_INJECT_START=256}
-: ${IOCTL_INJECT_RETVAL=8}
-
-run_prog
-run_strace -a16 -v -e trace=ioctl \
-       -e inject=ioctl:retval="${IOCTL_INJECT_RETVAL}":when="${IOCTL_INJECT_START}+" \
-       ../ioctl_evdev-success-v "${IOCTL_INJECT_START}" "${IOCTL_INJECT_RETVAL}"> "$EXP"
-grep -v '^ioctl([012][,<]' < "$LOG" > "$OUT"
-match_diff "$OUT" "$EXP"
index 7887d417b59fdb7e01b5c3d2b33922c0c9d87bf9..d6809be5df6e1d0e6d09cb9bff5d10f5a162ddb5 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -9,6 +9,7 @@
 
 #ifdef HAVE_LINUX_INPUT_H
 
+# include <assert.h>
 # include <inttypes.h>
 # include <stdio.h>
 # include <stdlib.h>
 # include <linux/input.h>
 # include "print_fields.h"
 
+# define NUM_WORDS 4
+
 static const char *errstr;
 
 struct evdev_check {
        unsigned long cmd;
        const char *cmd_str;
-       void *arg_ptr;
-       void (*print_arg)(long rc, void *ptr, void *arg);
+       const void *arg_ptr;
+       void (*print_arg)(long rc, const void *ptr, const void *arg);
 };
 
 static long
-invoke_test_syscall(unsigned long cmd, void *p)
+invoke_test_syscall(unsigned long cmd, const void *p)
 {
        long rc = ioctl(-1, cmd, p);
        errstr = sprintrc(rc);
@@ -38,10 +41,10 @@ invoke_test_syscall(unsigned long cmd, void *p)
 }
 
 static void
-test_evdev(struct evdev_check *check, void *arg)
+test_evdev(struct evdev_check *check, const void *arg)
 {
        long rc = invoke_test_syscall(check->cmd, check->arg_ptr);
-       printf("ioctl(-1, %s, ", check->cmd_str);
+       printf("ioctl(-1, %s, ", sprintxlat(check->cmd_str, check->cmd, NULL));
        if (check->print_arg)
                check->print_arg(rc, check->arg_ptr, arg);
        else
@@ -50,9 +53,12 @@ test_evdev(struct evdev_check *check, void *arg)
 }
 
 static void
-print_input_absinfo(long rc, void *ptr, void *arg)
+print_input_absinfo(long rc, const void *ptr, const void *arg)
 {
-       struct input_absinfo *absinfo = ptr;
+       const struct input_absinfo *absinfo = ptr;
+# if VERBOSE
+       const uintptr_t sz = (uintptr_t) arg;
+# endif
 
        if (rc < 0) {
                printf("%p", absinfo);
@@ -64,9 +70,20 @@ print_input_absinfo(long rc, void *ptr, void *arg)
        PRINT_FIELD_U(", ", *absinfo, maximum);
        PRINT_FIELD_U(", ", *absinfo, fuzz);
        PRINT_FIELD_U(", ", *absinfo, flat);
+       if (sz > offsetofend(struct input_absinfo, flat)) {
+               if (sz >= 24) {
 #  ifdef HAVE_STRUCT_INPUT_ABSINFO_RESOLUTION
-       PRINT_FIELD_U(", ", *absinfo, resolution);
+                       PRINT_FIELD_U(", ", *absinfo, resolution);
+#  else
+                       printf(", resolution=%u", *((int *) ptr + 5));
 #  endif
+
+                       if (sz > 24)
+                               printf(", ...");
+               } else {
+                       printf(", ...");
+               }
+       }
 # else
        printf(", ...");
 # endif
@@ -74,66 +91,90 @@ print_input_absinfo(long rc, void *ptr, void *arg)
 }
 
 static void
-print_input_id(long rc, void *ptr, void *arg)
+print_input_id(long rc, const void *ptr, const void *arg)
 {
-       struct input_id *id = ptr;
+       const struct input_id *id = ptr;
 
        if (rc < 0) {
                printf("%p", id);
                return;
        }
-       printf("{ID_BUS=%" PRIu16
-              ", ID_VENDOR=%" PRIu16
-              ", ID_PRODUCT=%" PRIu16
-              ", ID_VERSION=%" PRIu16 "}",
+       printf("{bustype=%" PRIu16
+              ", vendor=%" PRIu16
+              ", product=%" PRIu16
+              ", version=%" PRIu16 "}",
               id->bustype, id->vendor, id->product, id->version);
 }
 
 # ifdef EVIOCGMTSLOTS
 static void
-print_mtslots(long rc, void *ptr, void *arg)
+print_mtslots(long rc, const void *ptr, const void *arg)
 {
-       int *buffer = ptr;
-       const char **str = arg;
-       int num = atoi(*(str + 1));
+       const unsigned int *buffer = ptr;
+       const char * const * str = arg;
 
        if (rc < 0) {
                printf("%p", buffer);
                return;
        }
 
-       printf("{code=%s", *str);
+       printf("{code=%s", sprintxlat(*str, *buffer, NULL));
        printf(", values=[");
-       for (unsigned int i = 1; i <= (unsigned) num; i++)
-               printf("%s%s", i > 1 ? ", " : "", *(str + i + 1));
+       for (unsigned int i = 1; str[i]; i++)
+               printf("%s%s", i > 1 ? ", " : "", str[i]);
        printf("]}");
 }
 # endif
 
 static void
-print_getbit(long rc, void *ptr, void *arg)
+print_getbit(long rc, const void *ptr, const void *arg)
 {
-       const char **str = arg;
-       int num = atoi(*str);
+       const char * const *str = arg + sizeof(char *);
+# if XLAT_RAW || XLAT_VERBOSE
+       const unsigned long *buf = ptr;
+       const unsigned long buf_size = (uintptr_t) (str[-1]);
+# endif
 
-       if (rc < 0) {
+
+
+       if (rc <= 0) {
                printf("%p", ptr);
                return;
        }
 
+# if !XLAT_RAW
        printf("[");
-       printf("%s", *(str + 1));
-       for (unsigned int i = 2; i <= (unsigned) num; i++) {
-# if ! VERBOSE
-               if (i > 4) {
+       for (unsigned long i = 0; str[i]; i++) {
+#  if ! VERBOSE
+               if (i >= 4) {
                        printf(", ...");
                        break;
                }
-# endif
-               printf(", ");
-               printf("%s", *(str + i));
+#  endif
+               if (i)
+                       printf(", ");
+               printf("%s", str[i]);
        }
        printf("]");
+# endif /* !XLAT_RAW */
+
+# if XLAT_VERBOSE
+       printf(" /* ");
+# endif
+
+# if XLAT_RAW || XLAT_VERBOSE
+       printf("[");
+       const unsigned long cnt =
+               (MIN((unsigned long) rc, buf_size) + sizeof(long) - 1)
+               / sizeof(long);
+       for (unsigned long i = 0; i < cnt; i++)
+               printf("%s%#lx", i ? ", " : "", buf[i]);
+       printf("]");
+# endif
+
+# if XLAT_VERBOSE
+       printf(" */");
+# endif
 }
 
 int
@@ -158,8 +199,8 @@ main(int argc, char **argv)
 
        for (unsigned int i = 0; i < num_skip; i++) {
                long rc = ioctl(-1, EVIOCGID, NULL);
-               printf("ioctl(-1, EVIOCGID, NULL) = %s%s\n",
-                      sprintrc(rc),
+               printf("ioctl(-1, %s, NULL) = %s%s\n",
+                      XLAT_STR(EVIOCGID), sprintrc(rc),
                       rc == inject_retval ? " (INJECTED)" : "");
 
                if (rc != inject_retval)
@@ -174,52 +215,132 @@ main(int argc, char **argv)
                                   ", EVIOCGID, NULL) returning %lu",
                                   inject_retval);
 
+       static const void *absinfo_sz =
+               (const void *) (uintptr_t) sizeof(struct input_absinfo);
+
        TAIL_ALLOC_OBJECT_CONST_PTR(struct input_id, id);
        TAIL_ALLOC_OBJECT_CONST_PTR(struct input_absinfo, absinfo);
        TAIL_ALLOC_OBJECT_CONST_PTR(int, bad_addr_slot);
+
+       struct input_absinfo *absinfo_24 = tail_alloc(MAX(sizeof(*absinfo_24),
+                                                         24));
+       struct input_absinfo *absinfo_32 = tail_alloc(MAX(sizeof(*absinfo_32),
+                                                         32));
+
+       fill_memory(absinfo, sizeof(struct input_absinfo));
+       fill_memory(absinfo_24, 24);
+       fill_memory(absinfo_32, 32);
+
 # ifdef EVIOCGMTSLOTS
-       int mtslots[] = { ABS_MT_SLOT, 1, 3 };
-       /* we use the second element to indicate the number of values */
-       /* mtslots_str[1] is "2" so the number of values is 2 */
-       const char *mtslots_str[] = { "ABS_MT_SLOT", "2", "1", "3" };
+       static const unsigned int mtslots[] = { ABS_MT_SLOT, 1, 3 };
+       static const char * const mtslots_str[] = {
+               "ABS_MT_SLOT", "1", "3", NULL };
 
        /* invalid flag */
-       int invalid_mtslot[] = { -1, 1 };
-       char invalid_str[4096];
-       snprintf(invalid_str, sizeof(invalid_str), "%#x /* ABS_MT_??? */", invalid_mtslot[0]);
-       const char *invalid_mtslot_str[] = { invalid_str, "1", "1" };
+       static const unsigned int invalid_mtslot[] = { -1, 1 };
+       static const char * const invalid_mtslot_str[] = {
+               ""
+#  if !XLAT_RAW && !XLAT_VERBOSE
+               "0xffffffff"
+#  endif
+#  if !XLAT_VERBOSE
+               " /* "
+#  endif
+               "ABS_MT_???"
+#  if !XLAT_VERBOSE
+               " */"
+#  endif
+               , "1", NULL };
 # endif
 
+       enum { ULONG_BIT = sizeof(unsigned long) * 8 };
+
        /* set more than 4 bits */
-       unsigned long ev_more[] = { 1 << EV_ABS | 1 << EV_MSC | 1 << EV_LED | 1 << EV_SND | 1 << EV_PWR };
-       /* we use the first element to indicate the number of set bits */
-       /* ev_more_str[0] is "5" so the number of set bits is 5 */
-       const char *ev_more_str[] = { "5", "EV_ABS", "EV_MSC", "EV_LED", "EV_SND", "EV_PWR" };
+       static const unsigned long ev_more[NUM_WORDS] = {
+               1 << EV_ABS | 1 << EV_MSC | 1 << EV_LED | 1 << EV_SND
+               | 1 << EV_PWR };
+       static const char * const ev_more_str_2[] = {
+               (char *) (uintptr_t) 4,
+               XLAT_KNOWN(0x3, "EV_ABS"), XLAT_KNOWN(0x4, "EV_MSC"), NULL };
+       static const char * const ev_more_str_3[] = {
+               (char *) (uintptr_t) 4,
+               XLAT_KNOWN(0x3, "EV_ABS"), XLAT_KNOWN(0x4, "EV_MSC"),
+               XLAT_KNOWN(0x11, "EV_LED"), XLAT_KNOWN(0x12, "EV_SND"),
+               XLAT_KNOWN(0x16, "EV_PWR"), NULL };
 
        /* set less than 4 bits */
-       unsigned long ev_less[] = { 1 << EV_ABS | 1 << EV_MSC | 1 << EV_LED };
-       const char *ev_less_str[] = { "3", "EV_ABS", "EV_MSC", "EV_LED" };
+       static const unsigned long ev_less[NUM_WORDS] = {
+               1 << EV_ABS | 1 << EV_MSC | 1 << EV_LED };
+       static const char * const ev_less_str_2[] = {
+               (char *) (uintptr_t) 4,
+               XLAT_KNOWN(0x3, "EV_ABS"), XLAT_KNOWN(0x4, "EV_MSC"), NULL };
+       static const char * const ev_less_str_3[] = {
+               (char *) (uintptr_t) 4,
+               XLAT_KNOWN(0x3, "EV_ABS"), XLAT_KNOWN(0x4, "EV_MSC"),
+               XLAT_KNOWN(0x11, "EV_LED"), NULL };
 
        /* set zero bit */
-       unsigned long ev_zero[] = { 0x0 };
-       const char *ev_zero_str[] = { "0", " 0 " };
+       static const unsigned long ev_zero[NUM_WORDS] = { 0x0 };
+       static const char * const ev_zero_str[] = {
+               (char *) (uintptr_t) 1,
+               " 0 ", NULL };
 
        /* KEY_MAX is 0x2ff which is greater than retval * 8 */
-       unsigned long key[] = { 1 << KEY_1 | 1 << KEY_2, 0 };
-       const char *key_str[] = { "2", "KEY_1", "KEY_2" };
+       static const unsigned long key[NUM_WORDS] = {
+               1 << KEY_1 | 1 << KEY_2,
+               [ KEY_F12 / ULONG_BIT ] = 1 << (KEY_F12 % ULONG_BIT) };
+
+       static const char * const key_str_8[] = {
+               (char *) (uintptr_t) (NUM_WORDS * sizeof(long)),
+               XLAT_KNOWN(0x2, "KEY_1"), XLAT_KNOWN(0x3, "KEY_2"), NULL };
+       static const char * const key_str_16[] = {
+               (char *) (uintptr_t) (NUM_WORDS * sizeof(long)),
+               XLAT_KNOWN(0x2, "KEY_1"), XLAT_KNOWN(0x3, "KEY_2"),
+               XLAT_KNOWN(0x58, "KEY_F12"), NULL };
+
+       assert(sizeof(ev_more) >= (unsigned long) inject_retval);
+       assert(sizeof(ev_less) >= (unsigned long) inject_retval);
+       assert(sizeof(ev_zero) >= (unsigned long) inject_retval);
+       assert(sizeof(key) >= (unsigned long) inject_retval);
 
        struct {
                struct evdev_check check;
-               void *ptr;
+               const void *ptr;
        } a[] = {
                { { ARG_STR(EVIOCGID), id, print_input_id }, NULL },
-               { { ARG_STR(EVIOCGABS(ABS_X)), absinfo, print_input_absinfo }, NULL },
-               { { ARG_STR(EVIOCGABS(ABS_Y)), absinfo, print_input_absinfo }, NULL },
-               { { ARG_STR(EVIOCGABS(ABS_Y)), absinfo, print_input_absinfo }, NULL },
-               { { ARG_STR(EVIOCGBIT(0, 0)), ev_more, print_getbit }, &ev_more_str },
-               { { ARG_STR(EVIOCGBIT(0, 0)), ev_less, print_getbit }, &ev_less_str },
+               { { _IOC(_IOC_READ, 'E', 0x40 + ABS_Y, 19), "EVIOCGABS(ABS_Y)",
+                   absinfo, NULL }, NULL },
+               { { _IOC(_IOC_READ, 'E', 0x40 + ABS_Y, 20),
+                   "EVIOCGABS(ABS_Y)", absinfo, print_input_absinfo },
+                 (const void *) (uintptr_t) 20 },
+               { { _IOC(_IOC_READ, 'E', 0x40 + ABS_Y, 21),
+                   "EVIOCGABS(ABS_Y)", absinfo_24, print_input_absinfo },
+                 (const void *) (uintptr_t) 21 },
+               { { _IOC(_IOC_READ, 'E', 0x40 + ABS_Y, 24),
+                   "EVIOCGABS(ABS_Y)", absinfo_24, print_input_absinfo },
+                 (const void *) (uintptr_t) 24 },
+               { { _IOC(_IOC_READ, 'E', 0x40 + ABS_Y, 32),
+                   "EVIOCGABS(ABS_Y)", absinfo_32, print_input_absinfo },
+                 (const void *) (uintptr_t) 32 },
+               { { ARG_STR(EVIOCGABS(ABS_X)), absinfo, print_input_absinfo },
+                 absinfo_sz},
+               { { ARG_STR(EVIOCGABS(ABS_Y)), absinfo, print_input_absinfo },
+                 absinfo_sz },
+               { { ARG_STR(EVIOCGABS(ABS_Y)), absinfo, print_input_absinfo },
+                 absinfo_sz },
+               { { ARG_STR(EVIOCGBIT(0, 0)), ev_more, print_getbit },
+                       inject_retval * 8 <= EV_LED
+                               ? (const void *) &ev_more_str_2
+                               : (const void *) &ev_more_str_3 },
+               { { ARG_STR(EVIOCGBIT(0, 0)), ev_less, print_getbit },
+                       inject_retval * 8 <= EV_LED
+                               ? (const void *) &ev_less_str_2
+                               : (const void *) &ev_less_str_3 },
                { { ARG_STR(EVIOCGBIT(0, 0)), ev_zero, print_getbit }, &ev_zero_str },
-               { { ARG_STR(EVIOCGBIT(EV_KEY, 0)), key, print_getbit }, &key_str},
+               { { ARG_STR(EVIOCGBIT(EV_KEY, 0)), key, print_getbit },
+                       inject_retval * 8 <= KEY_F12
+                               ? (const void *) &key_str_8
+                               : (const void *) &key_str_16 },
 # ifdef EVIOCGMTSLOTS
                { { ARG_STR(EVIOCGMTSLOTS(12)), mtslots, print_mtslots }, &mtslots_str },
                { { ARG_STR(EVIOCGMTSLOTS(8)), invalid_mtslot, print_mtslots }, &invalid_mtslot_str }
index 54b0a20a9803ee2100b239551cbad526868a9c16..0a7489d3f122c5515c8057c79da6523914b7ec13 100755 (executable)
@@ -1,6 +1,6 @@
 #!/bin/sh -efu
 #
-# Copyright (c) 2018 The strace developers.
+# Copyright (c) 2018-2019 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -8,11 +8,15 @@
 . "${srcdir=.}/scno_tampering.sh"
 
 : ${IOCTL_INJECT_START=256}
-: ${IOCTL_INJECT_RETVAL=8}
 
 run_prog
-run_strace -a16 -e trace=ioctl \
-       -e inject=ioctl:retval="${IOCTL_INJECT_RETVAL}":when="${IOCTL_INJECT_START}+" \
-       ../ioctl_evdev-success "${IOCTL_INJECT_START}" "${IOCTL_INJECT_RETVAL}"> "$EXP"
-grep -v '^ioctl([012][,<]' < "$LOG" > "$OUT"
-match_diff "$OUT" "$EXP"
+prog="$args"
+
+for ret in 0 2 8 15 16; do
+       run_strace -a26 "$@" -e trace=ioctl \
+               -e inject=ioctl:retval="${ret}":when="${IOCTL_INJECT_START}+" \
+               "$prog" \
+               "${IOCTL_INJECT_START}" "${ret}"> "$EXP.${ret}"
+       grep -v '^ioctl([012][,<]' < "$LOG" > "$OUT.$ret"
+       match_diff "$OUT.$ret" "$EXP.$ret"
+done
diff --git a/tests/ioctl_evdev-v-Xabbrev.c b/tests/ioctl_evdev-v-Xabbrev.c
new file mode 100644 (file)
index 0000000..b2ed15c
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_ABBREV 1
+#include "ioctl_evdev-v.c"
diff --git a/tests/ioctl_evdev-v-Xabbrev.gen.test b/tests/ioctl_evdev-v-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..f6efb73
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-v-Xabbrev +ioctl.test -a26 -v -Xabbrev); do not edit.
+set -- -a26 -v -Xabbrev
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_evdev-v-Xraw.c b/tests/ioctl_evdev-v-Xraw.c
new file mode 100644 (file)
index 0000000..c6f4e53
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "ioctl_evdev-v.c"
diff --git a/tests/ioctl_evdev-v-Xraw.gen.test b/tests/ioctl_evdev-v-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..d446068
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-v-Xraw +ioctl.test -a28 -v -Xraw); do not edit.
+set -- -a28 -v -Xraw
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_evdev-v-Xverbose.c b/tests/ioctl_evdev-v-Xverbose.c
new file mode 100644 (file)
index 0000000..f911277
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "ioctl_evdev-v.c"
diff --git a/tests/ioctl_evdev-v-Xverbose.gen.test b/tests/ioctl_evdev-v-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..7f9c298
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-v-Xverbose +ioctl.test -a41 -v -Xverbose); do not edit.
+set -- -a41 -v -Xverbose
+. "${srcdir=.}/ioctl.test"
index bf74ef4cb4cdfcaa0a53adf720b5ca34daf0de2b..3b012fb98d0d05fda70a46e8b3265b18a43c42dc 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-v +ioctl.test -v); do not edit.
-set -- -v
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev-v +ioctl.test -a26 -v); do not edit.
+set -- -a26 -v
 . "${srcdir=.}/ioctl.test"
index 02be472c7c05dbbc1e71828d576aef1548543de0..e97b54985f305d8317fe6d1181cd505afaf5ffef 100644 (file)
@@ -2,7 +2,7 @@
  * This file is part of ioctl_evdev strace test.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 #  define ABS_MT_TOOL_Y 0x3d
 # endif
 
+# if XLAT_VERBOSE
+#  define UNK_CMD(val_, str_) val_
+# else
+#  define UNK_CMD(val_, str_) val_ " /* " str_ " */"
+# endif
+
 static const unsigned int magic = 0xdeadbeef;
 static const unsigned long lmagic = (unsigned long) 0xdeadbeefbadc0dedULL;
 
@@ -43,9 +49,11 @@ print_envelope(const struct ff_envelope *const e)
 static void
 print_ffe_common(const struct ff_effect *const ffe, const char *const type_str)
 {
-       printf("ioctl(-1, EVIOCSFF, {type=%s, id=%" PRIu16
+       printf("ioctl(-1, %s", XLAT_STR(EVIOCSFF));
+       printf(", {type=%s, id=%" PRId16
               ", direction=%" PRIu16 ", ",
-              type_str, ffe->id, ffe->direction);
+              sprintxlat(type_str, ffe->type, NULL),
+              ffe->id, ffe->direction);
 # if VERBOSE
        printf("trigger={button=%hu, interval=%hu}"
               ", replay={length=%hu, delay=%hu}",
@@ -54,10 +62,11 @@ print_ffe_common(const struct ff_effect *const ffe, const char *const type_str)
 # endif /* VERBOSE */
 }
 
-# define TEST_NULL_ARG_EX(cmd, str)                                            \
+# define TEST_NULL_ARG_EX(cmd, str)                                    \
        do {                                                            \
                ioctl(-1, cmd, 0);                                      \
-               printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n", str);   \
+               printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",         \
+                      sprintxlat(str, cmd, NULL));                     \
        } while (0)
 
 # define TEST_NULL_ARG(cmd) TEST_NULL_ARG_EX(cmd, #cmd)
@@ -107,17 +116,23 @@ main(void)
        TEST_NULL_ARG(EVIOCGABS(ABS_X));
        TEST_NULL_ARG(EVIOCSABS(ABS_X));
 
-       TEST_NULL_ARG_EX(EVIOCGABS(0xe), "EVIOCGABS(0xe /* ABS_??? */)");
-       TEST_NULL_ARG_EX(EVIOCSABS(0xe), "EVIOCSABS(0xe /* ABS_??? */)");
+       TEST_NULL_ARG_EX(EVIOCGABS(0xe),
+                        "EVIOCGABS(" UNK_CMD("0xe", "ABS_???") ")");
+       TEST_NULL_ARG_EX(EVIOCSABS(0xe),
+                        "EVIOCSABS(" UNK_CMD("0xe", "ABS_???") ")");
 
        TEST_NULL_ARG(EVIOCGABS(ABS_MT_TOOL_Y));
        TEST_NULL_ARG(EVIOCSABS(ABS_MT_TOOL_Y));
 
-       TEST_NULL_ARG_EX(EVIOCGABS(0x3e), "EVIOCGABS(0x3e /* ABS_??? */)");
-       TEST_NULL_ARG_EX(EVIOCSABS(0x3e), "EVIOCSABS(0x3e /* ABS_??? */)");
+       TEST_NULL_ARG_EX(EVIOCGABS(0x3e),
+                        "EVIOCGABS(" UNK_CMD("0x3e", "ABS_???") ")");
+       TEST_NULL_ARG_EX(EVIOCSABS(0x3e),
+                        "EVIOCSABS(" UNK_CMD("0x3e", "ABS_???") ")");
 
-       TEST_NULL_ARG_EX(EVIOCGABS(0x3f), "EVIOCGABS(0x3f /* ABS_??? */)");
-       TEST_NULL_ARG_EX(EVIOCSABS(0x3f), "EVIOCSABS(0x3f /* ABS_??? */)");
+       TEST_NULL_ARG_EX(EVIOCGABS(0x3f),
+                        "EVIOCGABS(" UNK_CMD("0x3f", "ABS_???") ")");
+       TEST_NULL_ARG_EX(EVIOCSABS(0x3f),
+                        "EVIOCSABS(" UNK_CMD("0x3f", "ABS_???") ")");
 
        TEST_NULL_ARG(EVIOCGBIT(0, 0));
        TEST_NULL_ARG(EVIOCGBIT(EV_KEY, 1));
@@ -132,25 +147,36 @@ main(void)
        TEST_NULL_ARG(EVIOCGBIT(EV_PWR, 10));
        TEST_NULL_ARG(EVIOCGBIT(EV_FF_STATUS, 11));
 
-       TEST_NULL_ARG_EX(EVIOCGBIT(0x6, 12), "EVIOCGBIT(0x6 /* EV_??? */, 12)");
+       TEST_NULL_ARG_EX(EVIOCGBIT(0x6, 12),
+                        "EVIOCGBIT(" UNK_CMD("0x6", "EV_???") ", 12)");
        TEST_NULL_ARG_EX(EVIOCGBIT(0x18, 13),
-                        "EVIOCGBIT(0x18 /* EV_??? */, 13)");
+                        "EVIOCGBIT(" UNK_CMD("0x18", "EV_???") ", 13)");
        TEST_NULL_ARG_EX(EVIOCGBIT(0x1f, 14),
-                        "EVIOCGBIT(0x1f /* EV_??? */, 14)");
+                        "EVIOCGBIT(" UNK_CMD("0x1f", "EV_???") ", 14)");
 
        ioctl(-1, EVIOCGBIT(EV_MAX, 42), 0);
-       printf("ioctl(-1, EVIOCGBIT(%#x /* EV_??? */, 42), NULL)"
-              " = -1 EBADF (%m)\n", EV_MAX);
+       printf("ioctl(-1, ");
+# if XLAT_RAW
+       printf("%#x", EVIOCGBIT(EV_MAX, 42));
+# elif XLAT_VERBOSE
+       printf("%#x /* EVIOCGBIT(%#x, 42) */", EVIOCGBIT(EV_MAX, 42), EV_MAX);
+# else
+       printf("EVIOCGBIT(%#x /* EV_??? */, 42)", EV_MAX);
+# endif
+       printf(", NULL) = -1 EBADF (%m)\n");
 
        ioctl(-1, EVIOCRMFF, lmagic);
-       printf("ioctl(-1, EVIOCRMFF, %d) = -1 EBADF (%m)\n", (int) lmagic);
+       printf("ioctl(-1, %s, %d) = -1 EBADF (%m)\n",
+              XLAT_STR(EVIOCRMFF), (int) lmagic);
 
        ioctl(-1, EVIOCGRAB, lmagic);
-       printf("ioctl(-1, EVIOCGRAB, %lu) = -1 EBADF (%m)\n", lmagic);
+       printf("ioctl(-1, %s, %lu) = -1 EBADF (%m)\n",
+              XLAT_STR(EVIOCGRAB), lmagic);
 
 # ifdef EVIOCREVOKE
        ioctl(-1, EVIOCREVOKE, lmagic);
-       printf("ioctl(-1, EVIOCREVOKE, %lu) = -1 EBADF (%m)\n", lmagic);
+       printf("ioctl(-1, %s, %lu) = -1 EBADF (%m)\n",
+              XLAT_STR(EVIOCREVOKE), lmagic);
 # endif
 
        const unsigned int size = get_page_size();
@@ -162,7 +188,8 @@ main(void)
 
 # ifdef EVIOCSCLOCKID
        ioctl(-1, EVIOCSCLOCKID, val_int);
-       printf("ioctl(-1, EVIOCSCLOCKID, [%u]) = -1 EBADF (%m)\n", *val_int);
+       printf("ioctl(-1, %s, [%u]) = -1 EBADF (%m)\n",
+              XLAT_STR(EVIOCSCLOCKID), *val_int);
 # endif
 
        int *pair_int = tail_alloc(sizeof(*pair_int) * 2);
@@ -171,14 +198,15 @@ main(void)
 
 # ifdef EVIOSGREP
        ioctl(-1, EVIOCSREP, pair_int);
-       printf("ioctl(-1, EVIOCSREP, [%u, %u]) = -1 EBADF (%m)\n",
-              pair_int[0], pair_int[1]);
+       printf("ioctl(-1, %s, [%u, %u]) = -1 EBADF (%m)\n",
+              XLAT_STR(EVIOCSREP), pair_int[0], pair_int[1]);
 # endif
 
        pair_int[1] = 1;
        ioctl(-1, EVIOCSKEYCODE, pair_int);
-       printf("ioctl(-1, EVIOCSKEYCODE, [%u, %s]) = -1 EBADF (%m)\n",
-              pair_int[0], "KEY_ESC");
+       printf("ioctl(-1, %s, [%u, %s]) = -1 EBADF (%m)\n",
+              XLAT_STR(EVIOCSKEYCODE), pair_int[0],
+              XLAT_KNOWN(0x1, "KEY_ESC"));
 
 # ifdef EVIOCSKEYCODE_V2
        TAIL_ALLOC_OBJECT_CONST_PTR(struct input_keymap_entry, ike);
@@ -186,16 +214,16 @@ main(void)
        ike->keycode = 2;
 
        ioctl(-1, EVIOCSKEYCODE_V2, ike);
-       printf("ioctl(-1, EVIOCSKEYCODE_V2, {flags=%" PRIu8
-              ", len=%" PRIu8 ", ", ike->flags, ike->len);
+       printf("ioctl(-1, %s, {flags=%" PRIu8 ", len=%" PRIu8 ", ",
+              XLAT_STR(EVIOCSKEYCODE_V2), ike->flags, ike->len);
 #  if VERBOSE
        printf("index=%" PRIu16 ", keycode=%s, scancode=[",
-              ike->index, "KEY_1");
+              ike->index, XLAT_STR(KEY_1));
        unsigned int i;
        for (i = 0; i < ARRAY_SIZE(ike->scancode); ++i) {
                if (i > 0)
                        printf(", ");
-               printf("%" PRIx8, ike->scancode[i]);
+               printf("%#" PRIx8, ike->scancode[i]);
        }
        printf("]");
 #  else
@@ -256,26 +284,37 @@ main(void)
 
        ffe->type = 0xff;
        ioctl(-1, EVIOCSFF, ffe);
-       print_ffe_common(ffe, "0xff /* FF_??? */");
+       print_ffe_common(ffe,
+#  if !XLAT_RAW && !XLAT_VERBOSE
+               "0xff"
+#  endif
+#  if !XLAT_VERBOSE
+               " /* "
+#  endif
+               "FF_???"
+#  if !XLAT_VERBOSE
+               " */"
+#  endif
+               );
        errno = EBADF;
        printf("}) = -1 EBADF (%m)\n");
 # endif
 
        ioctl(-1, _IOC(_IOC_READ, 0x45, 0x1, 0xff), lmagic);
        printf("ioctl(-1, %s, %#lx) = -1 EBADF (%m)\n",
-              "_IOC(_IOC_READ, 0x45, 0x1, 0xff)", lmagic);
+              XLAT_STR(_IOC(_IOC_READ, 0x45, 0x1, 0xff)), lmagic);
 
        ioctl(-1, _IOC(_IOC_WRITE, 0x45, 0x1, 0xff), lmagic);
        printf("ioctl(-1, %s, %#lx) = -1 EBADF (%m)\n",
-              "_IOC(_IOC_WRITE, 0x45, 0x1, 0xff)", lmagic);
+              XLAT_STR(_IOC(_IOC_WRITE, 0x45, 0x1, 0xff)), lmagic);
 
        ioctl(-1, _IOC(_IOC_READ|_IOC_WRITE, 0x45, 0xfe, 0xff), lmagic);
        printf("ioctl(-1, %s, %#lx) = -1 EBADF (%m)\n",
-              "_IOC(_IOC_READ|_IOC_WRITE, 0x45, 0xfe, 0xff)", lmagic);
+              XLAT_STR(_IOC(_IOC_READ|_IOC_WRITE, 0x45, 0xfe, 0xff)), lmagic);
 
        ioctl(-1, _IOC(_IOC_READ|_IOC_WRITE, 0x45, 0, 0), lmagic);
        printf("ioctl(-1, %s, %#lx) = -1 EBADF (%m)\n",
-              "_IOC(_IOC_READ|_IOC_WRITE, 0x45, 0, 0)", lmagic);
+              XLAT_STR(_IOC(_IOC_READ|_IOC_WRITE, 0x45, 0, 0)), lmagic);
 
        puts("+++ exited with 0 +++");
        return 0;
index 68a43f7c476be333b2d8be74037dca4195fc3abf..4b9ba41345a8734ad74294a9338ae75c7bdeca5b 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev +ioctl.test ); do not edit.
-set -- 
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev +ioctl.test -a26); do not edit.
+set -- -a26
 . "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_hdio-Xabbrev.c b/tests/ioctl_hdio-Xabbrev.c
new file mode 100644 (file)
index 0000000..aa0af2a
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_ABBREV 1
+#include "ioctl_hdio.c"
diff --git a/tests/ioctl_hdio-Xabbrev.gen.test b/tests/ioctl_hdio-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..1ab876b
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_hdio-Xabbrev +ioctl.test -a27 -Xabbrev); do not edit.
+set -- -a27 -Xabbrev
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_hdio-Xraw.c b/tests/ioctl_hdio-Xraw.c
new file mode 100644 (file)
index 0000000..9e169a8
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "ioctl_hdio.c"
diff --git a/tests/ioctl_hdio-Xraw.gen.test b/tests/ioctl_hdio-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..fa03656
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_hdio-Xraw +ioctl.test -a20 -Xraw); do not edit.
+set -- -a20 -Xraw
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_hdio-Xverbose.c b/tests/ioctl_hdio-Xverbose.c
new file mode 100644 (file)
index 0000000..29e45e8
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "ioctl_hdio.c"
diff --git a/tests/ioctl_hdio-Xverbose.gen.test b/tests/ioctl_hdio-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..1dde165
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_hdio-Xverbose +ioctl.test -a39 -Xverbose); do not edit.
+set -- -a39 -Xverbose
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_hdio-success-Xabbrev.c b/tests/ioctl_hdio-success-Xabbrev.c
new file mode 100644 (file)
index 0000000..410f196
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_ABBREV 1
+#include "ioctl_hdio-success.c"
diff --git a/tests/ioctl_hdio-success-Xabbrev.gen.test b/tests/ioctl_hdio-success-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..fa74b9e
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_hdio-success-Xabbrev +ioctl-success.sh -a27 -Xabbrev); do not edit.
+set -- -a27 -Xabbrev
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests/ioctl_hdio-success-Xraw.c b/tests/ioctl_hdio-success-Xraw.c
new file mode 100644 (file)
index 0000000..ee63bb8
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "ioctl_hdio-success.c"
diff --git a/tests/ioctl_hdio-success-Xraw.gen.test b/tests/ioctl_hdio-success-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..2ac7c9c
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_hdio-success-Xraw +ioctl-success.sh -a20 -Xraw); do not edit.
+set -- -a20 -Xraw
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests/ioctl_hdio-success-Xverbose.c b/tests/ioctl_hdio-success-Xverbose.c
new file mode 100644 (file)
index 0000000..bef62b0
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "ioctl_hdio-success.c"
diff --git a/tests/ioctl_hdio-success-Xverbose.gen.test b/tests/ioctl_hdio-success-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..acbded5
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_hdio-success-Xverbose +ioctl-success.sh -a39 -Xverbose); do not edit.
+set -- -a39 -Xverbose
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests/ioctl_hdio-success-v-Xabbrev.c b/tests/ioctl_hdio-success-v-Xabbrev.c
new file mode 100644 (file)
index 0000000..1374537
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_ABBREV 1
+#include "ioctl_hdio-success-v.c"
diff --git a/tests/ioctl_hdio-success-v-Xabbrev.gen.test b/tests/ioctl_hdio-success-v-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..d6a3ab2
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_hdio-success-v-Xabbrev +ioctl-success.sh -a27 -v -Xabbrev); do not edit.
+set -- -a27 -v -Xabbrev
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests/ioctl_hdio-success-v-Xraw.c b/tests/ioctl_hdio-success-v-Xraw.c
new file mode 100644 (file)
index 0000000..c34ad58
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "ioctl_hdio-success-v.c"
diff --git a/tests/ioctl_hdio-success-v-Xraw.gen.test b/tests/ioctl_hdio-success-v-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..b0d664b
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_hdio-success-v-Xraw +ioctl-success.sh -a20 -v -Xraw); do not edit.
+set -- -a20 -v -Xraw
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests/ioctl_hdio-success-v-Xverbose.c b/tests/ioctl_hdio-success-v-Xverbose.c
new file mode 100644 (file)
index 0000000..4f44b49
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "ioctl_hdio-success-v.c"
diff --git a/tests/ioctl_hdio-success-v-Xverbose.gen.test b/tests/ioctl_hdio-success-v-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..72e9f62
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_hdio-success-v-Xverbose +ioctl-success.sh -a39 -v -Xverbose); do not edit.
+set -- -a39 -v -Xverbose
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests/ioctl_hdio-success-v.c b/tests/ioctl_hdio-success-v.c
new file mode 100644 (file)
index 0000000..f48ca93
--- /dev/null
@@ -0,0 +1,2 @@
+#define VERBOSE 1
+#include "ioctl_hdio-success.c"
diff --git a/tests/ioctl_hdio-success-v.gen.test b/tests/ioctl_hdio-success-v.gen.test
new file mode 100755 (executable)
index 0000000..a4b6c0f
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_hdio-success-v +ioctl-success.sh -a27 -v); do not edit.
+set -- -a27 -v
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests/ioctl_hdio-success.c b/tests/ioctl_hdio-success.c
new file mode 100644 (file)
index 0000000..680d703
--- /dev/null
@@ -0,0 +1,2 @@
+#define INJECT_RETVAL 42
+#include "ioctl_hdio.c"
diff --git a/tests/ioctl_hdio-success.gen.test b/tests/ioctl_hdio-success.gen.test
new file mode 100755 (executable)
index 0000000..ec9318a
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_hdio-success +ioctl-success.sh -a27); do not edit.
+set -- -a27
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests/ioctl_hdio-v-Xabbrev.c b/tests/ioctl_hdio-v-Xabbrev.c
new file mode 100644 (file)
index 0000000..86aca7d
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_ABBREV 1
+#include "ioctl_hdio-v.c"
diff --git a/tests/ioctl_hdio-v-Xabbrev.gen.test b/tests/ioctl_hdio-v-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..92df94d
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_hdio-v-Xabbrev +ioctl.test -a27 -v -Xabbrev); do not edit.
+set -- -a27 -v -Xabbrev
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_hdio-v-Xraw.c b/tests/ioctl_hdio-v-Xraw.c
new file mode 100644 (file)
index 0000000..e55841a
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "ioctl_hdio-v.c"
diff --git a/tests/ioctl_hdio-v-Xraw.gen.test b/tests/ioctl_hdio-v-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..a7e81ca
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_hdio-v-Xraw +ioctl.test -a20 -v -Xraw); do not edit.
+set -- -a20 -v -Xraw
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_hdio-v-Xverbose.c b/tests/ioctl_hdio-v-Xverbose.c
new file mode 100644 (file)
index 0000000..00b524e
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "ioctl_hdio-v.c"
diff --git a/tests/ioctl_hdio-v-Xverbose.gen.test b/tests/ioctl_hdio-v-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..eba5488
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_hdio-v-Xverbose +ioctl.test -a39 -v -Xverbose); do not edit.
+set -- -a39 -v -Xverbose
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_hdio-v.c b/tests/ioctl_hdio-v.c
new file mode 100644 (file)
index 0000000..fcff670
--- /dev/null
@@ -0,0 +1,2 @@
+#define VERBOSE 1
+#include "ioctl_hdio.c"
diff --git a/tests/ioctl_hdio-v.gen.test b/tests/ioctl_hdio-v.gen.test
new file mode 100755 (executable)
index 0000000..7d1adc3
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_hdio-v +ioctl.test -a27 -v); do not edit.
+set -- -a27 -v
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_hdio.c b/tests/ioctl_hdio.c
new file mode 100644 (file)
index 0000000..d340782
--- /dev/null
@@ -0,0 +1,227 @@
+/*
+ * Check HDIO_* ioctl decoding.
+ *
+ * Copyright (c) 2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <linux/hdreg.h>
+#include <sys/ioctl.h>
+
+static const char *errstr;
+
+static long
+do_ioctl(kernel_ulong_t cmd, kernel_ulong_t arg)
+{
+       long rc = ioctl(-1, cmd, arg);
+
+       errstr = sprintrc(rc);
+
+#ifdef INJECT_RETVAL
+       if (rc != INJECT_RETVAL)
+               error_msg_and_fail("Got a return value of %ld != %ld",
+                                  rc, (long) INJECT_RETVAL);
+
+       static char inj_errstr[4096];
+
+       snprintf(inj_errstr, sizeof(inj_errstr), "%s (INJECTED)", errstr);
+       errstr = inj_errstr;
+#endif
+
+       return rc;
+}
+
+static inline long
+do_ioctl_ptr(kernel_ulong_t cmd, const void *arg)
+{
+       return do_ioctl(cmd, (uintptr_t) arg);
+}
+
+int
+main(int argc, char *argv[])
+{
+#ifdef INJECT_RETVAL
+       unsigned long num_skip;
+       bool locked = false;
+
+       if (argc < 2)
+               error_msg_and_fail("Usage: %s NUM_SKIP", argv[0]);
+
+       num_skip = strtoul(argv[1], NULL, 0);
+
+       for (size_t i = 0; i < num_skip; i++) {
+               long ret = ioctl(-1, HDIO_GET_UNMASKINTR, 0);
+
+               printf("ioctl(-1, %s, 0) = %s%s\n",
+                      XLAT_STR(HDIO_GET_UNMASKINTR), sprintrc(ret),
+                      ret == INJECT_RETVAL ? " (INJECTED)" : "");
+
+               if (ret != INJECT_RETVAL)
+                       continue;
+
+               locked = true;
+               break;
+       }
+
+       if (!locked)
+               error_msg_and_fail("Hasn't locked on ioctl(-1"
+                                  ", HDIO_GET_UNMASKINTR, 0) returning %d",
+                                  INJECT_RETVAL);
+#endif
+
+       long rc;
+
+       /* Decoding is not supported */
+       static const struct {
+               uint32_t cmd;
+               const char *str;
+       } unsupp_cmds[] = {
+               { ARG_STR(HDIO_GET_UNMASKINTR) },
+               { ARG_STR(HDIO_GET_MULTCOUNT) },
+               { ARG_STR(HDIO_GET_QDMA) },
+               { ARG_STR(HDIO_SET_XFER) },
+               { ARG_STR(HDIO_OBSOLETE_IDENTITY) },
+               { ARG_STR(HDIO_GET_KEEPSETTINGS) },
+               { ARG_STR(HDIO_GET_32BIT) },
+               { ARG_STR(HDIO_GET_NOWERR) },
+               { ARG_STR(HDIO_GET_DMA) },
+               { ARG_STR(HDIO_GET_NICE) },
+               { ARG_STR(HDIO_GET_IDENTITY) },
+               { ARG_STR(HDIO_GET_WCACHE) },
+               { ARG_STR(HDIO_GET_ACOUSTIC) },
+               { ARG_STR(HDIO_GET_ADDRESS) },
+               { ARG_STR(HDIO_GET_BUSSTATE) },
+               { ARG_STR(HDIO_TRISTATE_HWIF) },
+               { ARG_STR(HDIO_DRIVE_RESET) },
+               { ARG_STR(HDIO_DRIVE_TASKFILE) },
+               { ARG_STR(HDIO_DRIVE_TASK) },
+               { ARG_STR(HDIO_SET_MULTCOUNT) },
+               { ARG_STR(HDIO_SET_UNMASKINTR) },
+               { ARG_STR(HDIO_SET_KEEPSETTINGS) },
+               { ARG_STR(HDIO_SET_32BIT) },
+               { ARG_STR(HDIO_SET_NOWERR) },
+               { ARG_STR(HDIO_SET_DMA) },
+               { ARG_STR(HDIO_SET_PIO_MODE) },
+               { ARG_STR(HDIO_SCAN_HWIF) },
+               { ARG_STR(HDIO_UNREGISTER_HWIF) },
+               { ARG_STR(HDIO_SET_NICE) },
+               { ARG_STR(HDIO_SET_WCACHE) },
+               { ARG_STR(HDIO_SET_ACOUSTIC) },
+               { ARG_STR(HDIO_SET_BUSSTATE) },
+               { ARG_STR(HDIO_SET_QDMA) },
+               { ARG_STR(HDIO_SET_ADDRESS) },
+       };
+
+       for (size_t i = 0; i < ARRAY_SIZE(unsupp_cmds); i++) {
+               do_ioctl(unsupp_cmds[i].cmd, 0);
+               printf("ioctl(-1, " XLAT_FMT ", 0) = %s\n",
+                      XLAT_SEL(unsupp_cmds[i].cmd, unsupp_cmds[i].str),
+                      errstr);
+
+               do_ioctl(unsupp_cmds[i].cmd,
+                        (unsigned long) 0xbadc0deddeadc0deULL);
+               printf("ioctl(-1, " XLAT_FMT ", %#lx) = %s\n",
+                      XLAT_SEL(unsupp_cmds[i].cmd, unsupp_cmds[i].str),
+                      (unsigned long) 0xbadc0deddeadc0deULL, errstr);
+       }
+
+
+       /* HDIO_GETGEO */
+       do_ioctl(HDIO_GETGEO, 0);
+       printf("ioctl(-1, %s, NULL) = %s\n",
+              XLAT_STR(HDIO_GETGEO), errstr);
+
+       TAIL_ALLOC_OBJECT_CONST_PTR(struct hd_geometry, p_hd_geom);
+
+       p_hd_geom->heads = 0xca;
+       p_hd_geom->sectors = 0xfe;
+       p_hd_geom->cylinders = 0xbabe;
+       p_hd_geom->start = (unsigned long) 0xbadc0deddeadfaceULL;
+
+       do_ioctl_ptr(HDIO_GETGEO, (char *) p_hd_geom + 1);
+       printf("ioctl(-1, %s, %p) = %s\n",
+              XLAT_STR(HDIO_GETGEO), (char *) p_hd_geom + 1, errstr);
+
+       rc = do_ioctl_ptr(HDIO_GETGEO, p_hd_geom);
+       printf("ioctl(-1, %s, ", XLAT_STR(HDIO_GETGEO));
+       if (rc >= 0) {
+               printf("{heads=202, sectors=254, cylinders=47806, start=%lu}",
+                      (unsigned long) 0xbadc0deddeadfaceULL);
+       } else {
+               printf("%p", p_hd_geom);
+       }
+       printf(") = %s\n", errstr);
+
+       /* HDIO_DRIVE_CMD */
+       do_ioctl(HDIO_DRIVE_CMD, 0);
+       printf("ioctl(-1, %s, NULL) = %s\n",
+              XLAT_STR(HDIO_DRIVE_CMD), errstr);
+
+       TAIL_ALLOC_OBJECT_CONST_PTR(struct hd_drive_cmd_hdr, p_hd_drive_cmd);
+       struct hd_drive_cmd_hdr *p_hd_drive_cmd2 =
+               tail_alloc(sizeof(*p_hd_drive_cmd2) + 16);
+       struct hd_drive_cmd_hdr *p_hd_drive_cmd3 =
+               tail_alloc(sizeof(*p_hd_drive_cmd3) + DEFAULT_STRLEN + 1);
+
+       fill_memory(p_hd_drive_cmd2, sizeof(*p_hd_drive_cmd2) + 16);
+       fill_memory(p_hd_drive_cmd3,
+                   sizeof(*p_hd_drive_cmd3) + DEFAULT_STRLEN + 1);
+
+       p_hd_drive_cmd->command = 0xca;
+       p_hd_drive_cmd->sector_number = 0xff;
+       p_hd_drive_cmd->feature = 0xee;
+       p_hd_drive_cmd->sector_count = 0;
+
+       do_ioctl_ptr(HDIO_DRIVE_CMD, (char *) p_hd_drive_cmd + 1);
+       printf("ioctl(-1, %s, %p) = %s\n",
+              XLAT_STR(HDIO_DRIVE_CMD), (char *) p_hd_drive_cmd + 1, errstr);
+
+       for (size_t i = 0; i < 2; i++) {
+               p_hd_drive_cmd->sector_count = i;
+
+               rc = do_ioctl_ptr(HDIO_DRIVE_CMD, p_hd_drive_cmd);
+               printf("ioctl(-1, %s, {command=" XLAT_FMT ", sector_number=255"
+                      ", feature=238, sector_count=%zu",
+                      XLAT_STR(HDIO_DRIVE_CMD),
+                      XLAT_SEL(0xca, "ATA_CMD_WRITE"), i);
+               if (rc >= 0) {
+                       printf("} => {/* status */ 0xca, /* error */ 255"
+                              ", /* nsector */ 238");
+                       if (i)
+                               printf(", %p", p_hd_drive_cmd + 1);
+               }
+               printf("}) = %s\n", errstr);
+       }
+
+       rc = do_ioctl_ptr(HDIO_DRIVE_CMD, p_hd_drive_cmd2);
+       printf("ioctl(-1, %s, {command=0x80" NRAW(" /* ATA_CMD_??? */")
+              ", sector_number=129, feature=130, sector_count=131",
+              XLAT_STR(HDIO_DRIVE_CMD));
+       if (rc >= 0) {
+               printf("} => {/* status */ 0x80, /* error */ 129"
+                      ", /* nsector */ 130, %p", p_hd_drive_cmd2 + 1);
+       }
+       printf("}) = %s\n", errstr);
+
+       rc = do_ioctl_ptr(HDIO_DRIVE_CMD, p_hd_drive_cmd3);
+       printf("ioctl(-1, %s, {command=0x80" NRAW(" /* ATA_CMD_??? */")
+              ", sector_number=129, feature=130, sector_count=131",
+              XLAT_STR(HDIO_DRIVE_CMD));
+       if (rc >= 0) {
+               printf("} => {/* status */ 0x80, /* error */ 129"
+                      ", /* nsector */ 130, ");
+               print_quoted_hex(p_hd_drive_cmd3 + 1, DEFAULT_STRLEN);
+               printf("...");
+       }
+       printf("}) = %s\n", errstr);
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
diff --git a/tests/ioctl_hdio.gen.test b/tests/ioctl_hdio.gen.test
new file mode 100755 (executable)
index 0000000..478c717
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_hdio +ioctl.test -a27); do not edit.
+set -- -a27
+. "${srcdir=.}/ioctl.test"
index 6be0c0eec8429a1568b3dd99fb749df48041e3ae..6ca006ae8579f5f3443cb8bdfadb557563737873 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of ioctl_inotify strace test.
  *
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -13,7 +13,7 @@
 #include <stdio.h>
 #include <string.h>
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
 #include <linux/ioctl.h>
 
 #ifndef INOTIFY_IOC_SETNEXTWD
index 26e72cec69dea004ec86f6829689c917a4bf07e7..9107c30c0b1b86d4dfd42a8ea2f6a2293b2d3a63 100644 (file)
@@ -4,7 +4,7 @@
  *
  * kvmtest.c author: Josh Triplett <josh@joshtriplett.org>
  * Copyright (c) 2015 Intel Corporation
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2019 The strace developers.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  * of this software and associated documentation files (the "Software"), to
@@ -238,6 +238,10 @@ run_kvm(const int vcpu_fd, struct kvm_run *const run, const size_t mmap_size,
                                           run->mmio.data[4], run->mmio.data[5],
                                           run->mmio.data[6], run->mmio.data[7],
                                           run->mmio.len, run->mmio.is_write);
+               case KVM_EXIT_FAIL_ENTRY:
+                       error_msg_and_fail("Got an unexpected FAIL_ENTRY exit:"
+                                          " hardware_entry_failure_reason %" PRI__x64,
+                                          run->fail_entry.hardware_entry_failure_reason);
 
                default:
                        error_msg_and_fail("exit_reason = %#x",
index 5366560305abd48e595947e29c61a4597c343e98..69c2f191370cf3c6cdc436ad035850e42a8e5b76 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2016 JingPiao Chen <chenjingpiao@gmail.com>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 #include <unistd.h>
 #include <sys/ioctl.h>
 #include <sys/sysmacros.h>
-#include <asm/unistd.h>
+#include "scno.h"
 #include <linux/ioctl.h>
 #include <linux/loop.h>
 #include "print_fields.h"
 
+#ifdef HAVE_STRUCT_LOOP_CONFIG
+typedef struct loop_config struct_loop_config;
+#else
+# include "types/loop.h"
+#endif
+
 #define XLAT_MACROS_ONLY
 #include "xlat/loop_cmds.h"
 #undef XLAT_MACROS_ONLY
@@ -155,6 +161,27 @@ print_loop_info64(struct loop_info64 * const info64, bool print_encrypt,
 #endif /* !ABBREV */
 }
 
+static void
+print_loop_config(struct_loop_config *config, bool print_reserved)
+{
+#if ABBREV
+       printf("%p", config);
+#else
+       printf("{fd=%d, block_size=%u, info=",
+              (int) config->fd, config->block_size);
+       print_loop_info64(&config->info, false, "LO_CRYPT_NONE", NULL,
+                         "LO_FLAGS_READ_ONLY");
+       if (print_reserved) {
+               printf(", __reserved=");
+               for (size_t i = 0; i < ARRAY_SIZE(config->__reserved); ++i)
+                       printf("%s%#llx", (i ? ", " : "["),
+                              (unsigned long long) config->__reserved[i]);
+               printf("]");
+       }
+       printf("}");
+#endif /* !ABBREV */
+}
+
 int
 main(void)
 {
@@ -167,6 +194,7 @@ main(void)
 
        TAIL_ALLOC_OBJECT_CONST_PTR(struct loop_info, info);
        TAIL_ALLOC_OBJECT_CONST_PTR(struct loop_info64, info64);
+       TAIL_ALLOC_OBJECT_CONST_PTR(struct_loop_config, config);
 
        /* Unknown loop commands */
        sys_ioctl(-1, unknown_loop_cmd, magic);
@@ -178,12 +206,12 @@ main(void)
               _IOC_SIZE((unsigned int) unknown_loop_cmd),
               (unsigned long) magic);
 
-       sys_ioctl(-1, LOOP_SET_BLOCK_SIZE + 1, magic);
+       sys_ioctl(-1, LOOP_CONFIGURE + 1, magic);
        printf("ioctl(-1, _IOC(%s, 0x4c, %#x, %#x), %#lx) = "
               "-1 EBADF (%m)\n",
               _IOC_NONE ? "0" : "_IOC_NONE",
-              _IOC_NR(LOOP_SET_BLOCK_SIZE + 1),
-              _IOC_SIZE(LOOP_SET_BLOCK_SIZE + 1),
+              _IOC_NR(LOOP_CONFIGURE + 1),
+              _IOC_SIZE(LOOP_CONFIGURE + 1),
               (unsigned long) magic);
 
        sys_ioctl(-1, LOOP_CTL_GET_FREE + 1, magic);
@@ -281,6 +309,32 @@ main(void)
        ioctl(-1, LOOP_GET_STATUS64, (unsigned long) info64 | kernel_mask);
        printf("ioctl(-1, LOOP_GET_STATUS64, %p) = -1 EBADF (%m)\n", info64);
 
+       /* LOOP_CONFIGURE */
+       ioctl(-1, LOOP_CONFIGURE, NULL);
+       printf("ioctl(-1, LOOP_CONFIGURE, NULL) = -1 EBADF (%m)\n");
+
+       fill_memory(config, sizeof(*config));
+       config->info.lo_flags = LO_FLAGS_READ_ONLY;
+       config->info.lo_encrypt_type = LO_CRYPT_NONE;
+       memset(config->info.lo_file_name, 'C', sizeof(config->info.lo_file_name));
+       memset(config->info.lo_crypt_name, 'D', sizeof(config->info.lo_crypt_name));
+       memset(config->info.lo_encrypt_key, 'E', sizeof(config->info.lo_encrypt_key));
+
+       ioctl(-1, LOOP_CONFIGURE, (void *) config + ALIGNOF(config));
+       printf("ioctl(-1, LOOP_CONFIGURE, %p) = -1 EBADF (%m)\n",
+              (void *) config + ALIGNOF(config));
+
+       printf("ioctl(-1, LOOP_CONFIGURE, ");
+       print_loop_config(config, true);
+       ioctl(-1, LOOP_CONFIGURE, config);
+       printf(") = -1 EBADF (%m)\n");
+
+       memset(config->__reserved, 0, sizeof(config->__reserved));
+       printf("ioctl(-1, LOOP_CONFIGURE, ");
+       print_loop_config(config, false);
+       ioctl(-1, LOOP_CONFIGURE, config);
+       printf(") = -1 EBADF (%m)\n");
+
        /* LOOP_CHANGE_FD */
        sys_ioctl(-1, LOOP_CHANGE_FD, magic);
        printf("ioctl(-1, LOOP_CHANGE_FD, %d) = -1 EBADF (%m)\n",
index 74dbe6e9486903cb8c440da1fc71e6a9d11ba69c..0af05aaf60747129636423c8852e23258cef70de 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of NS_* commands of ioctl syscall.
  *
  * Copyright (c) 2017 Nikolay Marchuk <marchuk.nikolay.a@gmail.com>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -86,22 +86,27 @@ child(void *arg)
 
 #ifdef IA64
 extern int __clone2(int (*)(void *), void *, size_t, int, void *, ...);
-# define clone(fn, child_stack, flags, arg)    \
-               __clone2(fn, child_stack, get_page_size() / 2, flags, arg)
+# define do_clone(fn_, stack_, size_, flags_, arg_, ...)       \
+       __clone2((fn_), (stack_), (size_), (flags_), (arg_), ## __VA_ARGS__)
+#else
+# define do_clone(fn_, stack_, size_, flags_, arg_, ...)       \
+       clone((fn_), (stack_), (flags_), (arg_), ## __VA_ARGS__)
 #endif
 
 static void
 test_user_namespace(void)
 {
-       pid_t pid;
        int pipefd[2];
-       int status;
-
        if (pipe(pipefd))
                perror_msg_and_fail("pipe");
 
-       pid = clone(child, tail_alloc(get_page_size() / 2),
-                   CLONE_NEWUSER | CLONE_UNTRACED | SIGCHLD, pipefd);
+       const unsigned long child_stack_size = get_page_size();
+       void *const child_stack =
+               tail_alloc(child_stack_size * 2) + child_stack_size;
+
+       const pid_t pid = do_clone(child, child_stack, child_stack_size,
+                                  CLONE_NEWUSER | CLONE_UNTRACED | SIGCHLD,
+                                  pipefd);
        if (pid == -1) {
                perror("clone");
                return;
@@ -109,6 +114,8 @@ test_user_namespace(void)
        close(pipefd[0]);
        test_clone(pid);
        close(pipefd[1]);
+
+       int status;
        if (wait(&status) != pid) {
                perror_msg_and_fail("wait");
        } else if (status != 0) {
index eaf572ac4302793e8c7b4c0a85151d7a1538e223..51419b10712cb47c38c13d67a5853326eda7e663 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Check decoding of successful PERF_EVENT_IOC_{ID,QUERY_BPF} ioctls.
  *
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -9,29 +9,31 @@
 
 #include "tests.h"
 
-#ifdef HAVE_LINUX_PERF_EVENT_H
 
-# include <assert.h>
-# include <inttypes.h>
-# include <stdio.h>
-# include <stdlib.h>
-# include <string.h>
-# include <sys/ioctl.h>
+#include <assert.h>
+#include <inttypes.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/ioctl.h>
+
+#ifdef HAVE_LINUX_PERF_EVENT_H
 # include <linux/perf_event.h>
+#endif
 
-# ifndef PERF_EVENT_IOC_ID
-#  define PERF_EVENT_IOC_ID                    _IOR('$', 7, void *)
-# endif
+#ifndef PERF_EVENT_IOC_ID
+# define PERF_EVENT_IOC_ID                     _IOR('$', 7, void *)
+#endif
 
-# ifndef PERF_EVENT_IOC_QUERY_BPF
-#  define PERF_EVENT_IOC_QUERY_BPF             _IOWR('$', 10, void *)
+#ifndef PERF_EVENT_IOC_QUERY_BPF
+# define PERF_EVENT_IOC_QUERY_BPF              _IOWR('$', 10, void *)
 
 struct perf_event_query_bpf {
         uint32_t ids_len;
         uint32_t prog_cnt;
         uint32_t ids[0];
 };
-# endif
+#endif
 
 int
 main(int argc, char **argv)
@@ -137,9 +139,3 @@ main(int argc, char **argv)
        puts("+++ exited with 0 +++");
        return 0;
 }
-
-#else
-
-SKIP_MAIN_UNDEFINED("HAVE_LINUX_PERF_EVENT_H");
-
-#endif
diff --git a/tests/ioctl_perf-success.gen.test b/tests/ioctl_perf-success.gen.test
new file mode 100755 (executable)
index 0000000..3ff7205
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_perf-success +ioctl-success.sh -a35); do not edit.
+set -- -a35
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests/ioctl_perf-success.test b/tests/ioctl_perf-success.test
deleted file mode 100755 (executable)
index 2edd1d3..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/sh -efu
-#
-# Check decoding of successful PERF_EVENT_IOC_{ID,QUERY_BPF} ioctls.
-#
-# Copyright (c) 2018 The strace developers.
-# All rights reserved.
-#
-# SPDX-License-Identifier: GPL-2.0-or-later
-
-. "${srcdir=.}/scno_tampering.sh"
-
-: ${IOCTL_INJECT_START=256}
-: ${IOCTL_INJECT_RETVAL=42}
-
-run_prog
-run_strace -a35 -e trace=ioctl \
-       -e inject=ioctl:retval="${IOCTL_INJECT_RETVAL}":when="${IOCTL_INJECT_START}+" \
-       ../ioctl_perf-success "${IOCTL_INJECT_START}" "${IOCTL_INJECT_RETVAL}" > "$EXP"
-grep -v '^ioctl([012][,<]' < "$LOG" > "$OUT"
-match_diff "$OUT" "$EXP"
index 30cb35f6cd2689ebfc7f549b037d4a619814e944..af4f443eb4e9d74cbe3ce1184521dc2f9e8bd2f9 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Check decoding of PERF_EVENT_IOC_* commands of ioctl syscall.
  *
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -16,7 +16,7 @@
 # include <string.h>
 # include <unistd.h>
 # include <sys/ioctl.h>
-# include <asm/unistd.h>
+# include "scno.h"
 # include <linux/perf_event.h>
 
 /*
index 52d9698afc3832732ce1f82f9c311d58bfc855dc..ef2bca7736d8a75b6c10e156767c34bef8c32629 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of PTP_* commands of ioctl syscall.
  *
  * Copyright (c) 2018 Harsha Sharma <harshasharmaiitr@gmail.com>
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -12,7 +12,6 @@
 
 #ifdef HAVE_STRUCT_PTP_SYS_OFFSET
 
-# include <errno.h>
 # include <fcntl.h>
 # include <inttypes.h>
 # include <stdio.h>
 # include <sys/ioctl.h>
 # include <linux/ptp_clock.h>
 
+# ifndef PTP_CLOCK_GETCAPS2
+#  define PTP_CLOCK_GETCAPS2 _IOR(PTP_CLK_MAGIC, 10, struct ptp_clock_caps)
+# endif
+# ifndef PTP_EXTTS_REQUEST2
+#  define PTP_EXTTS_REQUEST2 _IOW(PTP_CLK_MAGIC, 11, struct ptp_extts_request)
+# endif
+# ifndef PTP_PEROUT_REQUEST2
+#  define PTP_PEROUT_REQUEST2 _IOW(PTP_CLK_MAGIC, 12, struct ptp_perout_request)
+# endif
+# ifndef PTP_ENABLE_PPS2
+#  define PTP_ENABLE_PPS2 _IOW(PTP_CLK_MAGIC, 13, int)
+# endif
+# ifndef PTP_SYS_OFFSET2
+#  define PTP_SYS_OFFSET2 _IOW(PTP_CLK_MAGIC, 14, struct ptp_sys_offset)
+# endif
+
 # include "xlat.h"
-# include "xlat/ptp_flags_options.h"
+# include "xlat/ptp_extts_flags.h"
+# include "xlat/ptp_perout_flags.h"
 
 static void
 test_no_device(void)
 {
+       const char *errstr;
+
        TAIL_ALLOC_OBJECT_CONST_PTR(struct ptp_clock_caps, caps);
        fill_memory(caps, sizeof(*caps));
 
@@ -39,60 +57,93 @@ test_no_device(void)
        TAIL_ALLOC_OBJECT_CONST_PTR(struct ptp_perout_request, perout);
        fill_memory(perout, sizeof(*perout));
 
-       int saved_errno;
-
        /* PTP_CLOCK_GETCAPS */
-       ioctl(-1, PTP_CLOCK_GETCAPS, NULL);
-       printf("ioctl(-1, PTP_CLOCK_GETCAPS, NULL) = -1 EBADF (%m)\n");
-       ioctl(-1, PTP_CLOCK_GETCAPS, caps);
-       printf("ioctl(-1, PTP_CLOCK_GETCAPS, %p) = -1 EBADF (%m)\n", caps);
+       errstr = sprintrc(ioctl(-1, PTP_CLOCK_GETCAPS, NULL));
+       printf("ioctl(-1, PTP_CLOCK_GETCAPS, NULL) = %s\n", errstr);
+       errstr = sprintrc(ioctl(-1, PTP_CLOCK_GETCAPS, caps));
+       printf("ioctl(-1, PTP_CLOCK_GETCAPS, %p) = %s\n", caps, errstr);
 
        /* PTP_SYS_OFFSET */
-       ioctl(-1, PTP_SYS_OFFSET, NULL);
-       printf("ioctl(-1, PTP_SYS_OFFSET, NULL) = -1 EBADF (%m)\n");
-       ioctl(-1, PTP_SYS_OFFSET, sysoff);
-       printf("ioctl(-1, PTP_SYS_OFFSET, {n_samples=%u}) = -1 EBADF (%m)\n",
-              sysoff->n_samples);
+       errstr = sprintrc(ioctl(-1, PTP_SYS_OFFSET, NULL));
+       printf("ioctl(-1, PTP_SYS_OFFSET, NULL) = %s\n", errstr);
+       errstr = sprintrc(ioctl(-1, PTP_SYS_OFFSET, sysoff));
+       printf("ioctl(-1, PTP_SYS_OFFSET, {n_samples=%u}) = %s\n",
+              sysoff->n_samples, errstr);
 
        /* PTP_ENABLE_PPS */
-       ioctl(-1, PTP_ENABLE_PPS, 0);
-       printf("ioctl(-1, PTP_ENABLE_PPS, 0) = -1 EBADF (%m)\n");
-       ioctl(-1, PTP_ENABLE_PPS, 1);
-       printf("ioctl(-1, PTP_ENABLE_PPS, 1) = -1 EBADF (%m)\n");
+       errstr = sprintrc(ioctl(-1, PTP_ENABLE_PPS, 0));
+       printf("ioctl(-1, PTP_ENABLE_PPS, 0) = %s\n", errstr);
+       errstr = sprintrc(ioctl(-1, PTP_ENABLE_PPS, 1));
+       printf("ioctl(-1, PTP_ENABLE_PPS, 1) = %s\n", errstr);
 
        /* PTP_EXTTS_REQUEST */
-       ioctl(-1, PTP_EXTTS_REQUEST, NULL);
-       printf("ioctl(-1, PTP_EXTTS_REQUEST, NULL) = -1 EBADF (%m)\n");
-       ioctl(-1, PTP_EXTTS_REQUEST, extts);
-       saved_errno = errno;
+       errstr = sprintrc(ioctl(-1, PTP_EXTTS_REQUEST, NULL));
+       printf("ioctl(-1, PTP_EXTTS_REQUEST, NULL) = %s\n", errstr);
+       errstr = sprintrc(ioctl(-1, PTP_EXTTS_REQUEST, extts));
        printf("ioctl(-1, PTP_EXTTS_REQUEST, {index=%d, flags=", extts->index);
-       printflags(ptp_flags_options, extts->flags, "PTP_???");
-       errno = saved_errno;
-       printf("}) = -1 EBADF (%m)\n");
+       printflags(ptp_extts_flags, extts->flags, "PTP_???");
+       printf("}) = %s\n", errstr);
 
        /* PTP_PEROUT_REQUEST */
-       ioctl(-1, PTP_PEROUT_REQUEST, NULL);
-       printf("ioctl(-1, PTP_PEROUT_REQUEST, NULL) = -1 EBADF (%m)\n");
-       ioctl(-1, PTP_PEROUT_REQUEST, perout);
-       saved_errno = errno;
+       errstr = sprintrc(ioctl(-1, PTP_PEROUT_REQUEST, NULL));
+       printf("ioctl(-1, PTP_PEROUT_REQUEST, NULL) = %s\n", errstr);
+       errstr = sprintrc(ioctl(-1, PTP_PEROUT_REQUEST, perout));
        printf("ioctl(-1, PTP_PEROUT_REQUEST, {start={sec=%" PRId64
               ", nsec=%" PRIu32 "}, period={sec=%" PRId64 ", nsec=%" PRIu32 "}"
               ", index=%d, flags=",
               (int64_t) perout->start.sec, perout->start.nsec,
               (int64_t)perout->period.sec, perout->period.nsec, perout->index);
-       printflags(ptp_flags_options, perout->flags, "PTP_???");
-       errno = saved_errno;
-       printf("}) = -1 EBADF (%m)\n");
+       printflags(ptp_perout_flags, perout->flags, "PTP_???");
+       printf("}) = %s\n", errstr);
+
+       /* PTP_CLOCK_GETCAPS2 */
+       errstr = sprintrc(ioctl(-1, PTP_CLOCK_GETCAPS2, NULL));
+       printf("ioctl(-1, PTP_CLOCK_GETCAPS2, NULL) = %s\n", errstr);
+       errstr = sprintrc(ioctl(-1, PTP_CLOCK_GETCAPS2, caps));
+       printf("ioctl(-1, PTP_CLOCK_GETCAPS2, %p) = %s\n", caps, errstr);
+
+       /* PTP_SYS_OFFSET2 */
+       errstr = sprintrc(ioctl(-1, PTP_SYS_OFFSET2, NULL));
+       printf("ioctl(-1, PTP_SYS_OFFSET2, NULL) = %s\n", errstr);
+       errstr = sprintrc(ioctl(-1, PTP_SYS_OFFSET2, sysoff));
+       printf("ioctl(-1, PTP_SYS_OFFSET2, {n_samples=%u}) = %s\n",
+              sysoff->n_samples, errstr);
+
+       /* PTP_ENABLE_PPS2 */
+       errstr = sprintrc(ioctl(-1, PTP_ENABLE_PPS2, 0));
+       printf("ioctl(-1, PTP_ENABLE_PPS2, 0) = %s\n", errstr);
+       errstr = sprintrc(ioctl(-1, PTP_ENABLE_PPS2, 1));
+       printf("ioctl(-1, PTP_ENABLE_PPS2, 1) = %s\n", errstr);
+
+       /* PTP_EXTTS_REQUEST2 */
+       errstr = sprintrc(ioctl(-1, PTP_EXTTS_REQUEST2, NULL));
+       printf("ioctl(-1, PTP_EXTTS_REQUEST2, NULL) = %s\n", errstr);
+       errstr = sprintrc(ioctl(-1, PTP_EXTTS_REQUEST2, extts));
+       printf("ioctl(-1, PTP_EXTTS_REQUEST2, {index=%d, flags=", extts->index);
+       printflags(ptp_extts_flags, extts->flags, "PTP_???");
+       printf("}) = %s\n", errstr);
+
+       /* PTP_PEROUT_REQUEST2 */
+       errstr = sprintrc(ioctl(-1, PTP_PEROUT_REQUEST2, NULL));
+       printf("ioctl(-1, PTP_PEROUT_REQUEST2, NULL) = %s\n", errstr);
+       errstr = sprintrc(ioctl(-1, PTP_PEROUT_REQUEST2, perout));
+       printf("ioctl(-1, PTP_PEROUT_REQUEST2, {start={sec=%" PRId64
+              ", nsec=%" PRIu32 "}, period={sec=%" PRId64 ", nsec=%" PRIu32 "}"
+              ", index=%d, flags=",
+              (int64_t) perout->start.sec, perout->start.nsec,
+              (int64_t)perout->period.sec, perout->period.nsec, perout->index);
+       printflags(ptp_perout_flags, perout->flags, "PTP_???");
+       printf("}) = %s\n", errstr);
 
        /* unrecognized */
        ioctl(-1, _IOC(_IOC_READ, PTP_CLK_MAGIC, 0xff, 0xfe), 0);
-       printf("ioctl(-1, _IOC(_IOC_READ, %#x, 0xff, 0xfe), 0)"
-              " = -1 EBADF (%m)\n", PTP_CLK_MAGIC);
+       printf("ioctl(-1, _IOC(_IOC_READ, %#x, 0xff, 0xfe), 0) = %s\n",
+              PTP_CLK_MAGIC, errstr);
 
        const unsigned long arg = (unsigned long) 0xfacefeeddeadbeefULL;
        ioctl(-1, _IOC(_IOC_WRITE, PTP_CLK_MAGIC, 0xfd, 0xfc), arg);
        printf("ioctl(-1, _IOC(_IOC_WRITE, %#x, 0xfd, 0xfc), %#lx)"
-              " = -1 EBADF (%m)\n", PTP_CLK_MAGIC, arg);
+              " = %s\n", PTP_CLK_MAGIC, arg, errstr);
 }
 
 int
index d192e37827c5f5729599960e54107eddd64de8f2..19d54f6b8155204d063c5d7f30776ea33b00fde2 100644 (file)
@@ -34,7 +34,7 @@ print_rtc_time(const struct rtc_time *rt)
 #endif
 }
 
-static struct xlat rtc_argless[] = {
+static struct xlat_data rtc_argless[] = {
        XLAT(RTC_AIE_OFF),
        XLAT(RTC_PIE_ON),
        XLAT(RTC_PIE_OFF),
index b6347b62806860c77c9b180a555dee63a0ddedca..15eb56a9f29ec67b7bcd9deb89b36afed9c03fb9 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of SCSI ioctl commands.
  *
  * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -15,7 +15,9 @@
 # include <stdio.h>
 # include <sys/ioctl.h>
 # include <scsi/sg.h>
-# include "xlat/scsi_sg_commands.h"
+# define XLAT_MACROS_ONLY
+#  include "xlat/scsi_sg_commands.h"
+# undef XLAT_MACROS_ONLY
 
 # define TEST_NO_ARG(cmd)                                                      \
        do {                                                                    \
index 59438285a2720c6aba0b105fcc9e98cbf2f2e941..087ae7885c5c9953fc5c66dc72d5da39aa338c0c 100644 (file)
@@ -2,6 +2,7 @@
  * Check decoding of ioctl SG_IO v4 commands.
  *
  * Copyright (c) 2017-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -16,8 +17,9 @@
 # include <sys/ioctl.h>
 # include <sys/uio.h>
 # include <linux/bsg.h>
-
-# include "xlat/scsi_sg_commands.h"
+# define XLAT_MACROS_ONLY
+#  include "xlat/scsi_sg_commands.h"
+# undef XLAT_MACROS_ONLY
 
 int
 main(void)
diff --git a/tests/ioctl_tee.c b/tests/ioctl_tee.c
new file mode 100644 (file)
index 0000000..f6c2b3a
--- /dev/null
@@ -0,0 +1,437 @@
+/*
+ * Copyright (c) 2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_LINUX_TEE_H
+
+# include <fcntl.h>
+# include <stdio.h>
+# include <string.h>
+
+# include <linux/tee.h>
+
+# include <sys/ioctl.h>
+# include <sys/stat.h>
+# include <sys/types.h>
+
+# include "xlat.h"
+
+# define NUM_PARAMS 8
+# define RVAL_EBADF " = -1 EBADF (%m)\n"
+
+# define UUID_SIZE 16
+
+# ifndef TEE_IOCTL_PARAM_ATTR_META
+#  define TEE_IOCTL_PARAM_ATTR_META 0x100
+# endif
+
+# ifndef HAVE_STRUCT_TEE_IOCTL_SHM_REGISTER_FD_DATA
+struct tee_ioctl_shm_register_fd_data {
+       __s64 fd;
+       __u64 size;
+       __u32 flags;
+       __u8  _pad1[4];
+       __u32 id;
+       __u8  _pad2[4];
+} ATTRIBUTE_ALIGNED(8);
+# endif
+
+# ifndef HAVE_STRUCT_TEE_IOCTL_SHM_REGISTER_DATA
+struct tee_ioctl_shm_register_data {
+       __u64 addr;
+       __u64 length;
+       __u32 flags;
+       __s32 id;
+};
+# endif
+
+# ifndef TEE_IOC_SHM_REGISTER_FD
+#  define TEE_IOC_SHM_REGISTER_FD _IOWR(TEE_IOC_MAGIC, TEE_IOC_BASE + 8, \
+                                       struct tee_ioctl_shm_register_fd_data)
+# endif
+
+# ifndef TEE_IOC_SHM_REGISTER
+#  define TEE_IOC_SHM_REGISTER    _IOWR(TEE_IOC_MAGIC, TEE_IOC_BASE + 9, \
+                                       struct tee_ioctl_shm_register_data)
+# endif
+
+
+typedef struct {
+       uint8_t b[UUID_SIZE];
+} uuid_t;
+
+# define UUID_INIT(a_, b_, c_, d0, d1, d2, d3, d4, d5, d6, d7)         \
+{ .b = {((a_) >> 24) & 0xff, ((a_) >> 16) & 0xff,                      \
+        ((a_) >> 8) & 0xff, (a_) & 0xff,                               \
+        ((b_) >> 8) & 0xff, (b_) & 0xff,                               \
+        ((c_) >> 8) & 0xff, (c_) & 0xff,                               \
+        (d0), (d1), (d2), (d3), (d4), (d5), (d6), (d7)} }
+
+# define CHK_NULL(ioctl_)                                              \
+       do {                                                            \
+               ioctl(-1, ioctl_, NULL);                                \
+               printf("ioctl(-1, " #ioctl_ ", NULL)" RVAL_EBADF);      \
+       } while (0)
+
+# define CHK_BUF(ioctl_)                                               \
+       do {                                                            \
+               ioctl(-1, ioctl_, &buf_data);                           \
+               printf("ioctl(-1, " #ioctl_                             \
+                      ", {buf_len=%llu, buf_ptr=%#llx})" RVAL_EBADF,   \
+                      (unsigned long long) buf_data.buf_len,           \
+                      (unsigned long long) buf_data.buf_ptr);          \
+       } while (0)
+
+# define DEFINE_BUF_W_PARAMS(type_, shorthand_)                                \
+       const size_t shorthand_ ## _size = sizeof(type_) +              \
+               NUM_PARAMS * sizeof(struct tee_ioctl_param);            \
+       union {                                                         \
+               type_ shorthand_;                                       \
+               uint8_t data[shorthand_ ## _size];                      \
+       } shorthand_ ## _buf
+
+static const unsigned long one_beef = (unsigned long) 0xcafef00ddeadbeefULL;
+static const unsigned long two_beef = (unsigned long) 0xbadc0dedbadc0dedULL;
+static const unsigned long red_beef = (unsigned long) 0xdefacedbeef0beefULL;
+static const unsigned long blu_beef = (unsigned long) 0xfacefeedcafef00dULL;
+
+static const uuid_t uuid_beef = UUID_INIT(0xdeadbeef, 0xcafe, 0xc0de,
+                                         0xba, 0xdc, 0x0d, 0xed,
+                                         0xfa, 0xce, 0xfe, 0xed);
+
+static void
+fill_params(struct tee_ioctl_param *params)
+{
+       for (unsigned i = 0; i < NUM_PARAMS; i++) {
+               params[i].a = two_beef;
+               params[i].b = red_beef;
+               params[i].c = blu_beef;
+       }
+       params[0].attr = TEE_IOCTL_PARAM_ATTR_TYPE_NONE;
+       params[1].attr = TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INPUT;
+       params[2].attr = TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_OUTPUT;
+       params[3].attr = TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INOUT;
+       params[4].attr = TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INPUT;
+       params[5].attr = TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_OUTPUT;
+       params[6].attr = TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INOUT;
+       params[7].attr = TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INPUT |
+                        TEE_IOCTL_PARAM_ATTR_META;
+}
+
+static void
+print_params(struct tee_ioctl_param *params)
+{
+       printf("{attr=TEE_IOCTL_PARAM_ATTR_TYPE_NONE}, "
+              "{attr=TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INPUT, a=%#llx, b=%#llx, c=%#llx}, "
+              "{attr=TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_OUTPUT, a=%#llx, b=%#llx, c=%#llx}, "
+              "{attr=TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INOUT, a=%#llx, b=%#llx, c=%#llx}, "
+              "{attr=TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INPUT, shm_offs=%#llx, size=%#llx, shm_id=%llu}, "
+              "{attr=TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_OUTPUT, shm_offs=%#llx, size=%#llx, shm_id=%llu}, "
+              "{attr=TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INOUT, shm_offs=%#llx, size=%#llx, shm_id=%llu}, "
+              "{attr=TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INPUT|TEE_IOCTL_PARAM_ATTR_META, a=%#llx, b=%#llx, c=%#llx}",
+              (unsigned long long) two_beef, (unsigned long long) red_beef,
+              (unsigned long long) blu_beef, (unsigned long long) two_beef,
+              (unsigned long long) red_beef, (unsigned long long) blu_beef,
+              (unsigned long long) two_beef, (unsigned long long) red_beef,
+              (unsigned long long) blu_beef, (unsigned long long) two_beef,
+              (unsigned long long) red_beef, (unsigned long long) blu_beef,
+              (unsigned long long) two_beef, (unsigned long long) red_beef,
+              (unsigned long long) blu_beef, (unsigned long long) two_beef,
+              (unsigned long long) red_beef, (unsigned long long) blu_beef,
+              (unsigned long long) two_beef, (unsigned long long) red_beef,
+              (unsigned long long) blu_beef
+              );
+}
+
+int
+main(void)
+{
+       gid_t gid;
+
+       struct tee_ioctl_cancel_arg cancel;
+       struct tee_ioctl_shm_alloc_data shm_alloc;
+       struct tee_ioctl_shm_register_data shm_register;
+       struct tee_ioctl_close_session_arg close_session;
+       struct tee_ioctl_shm_register_fd_data shm_register_fd;
+
+       struct tee_ioctl_buf_data buf_data;
+       struct tee_ioctl_param *params = NULL;
+
+       DEFINE_BUF_W_PARAMS(struct tee_ioctl_invoke_arg, invoke);
+       DEFINE_BUF_W_PARAMS(struct tee_iocl_supp_recv_arg, supp_recv);
+       DEFINE_BUF_W_PARAMS(struct tee_iocl_supp_send_arg, supp_send);
+       DEFINE_BUF_W_PARAMS(struct tee_ioctl_open_session_arg, open_session);
+
+       static const char null_path[] = "/dev/null";
+       int fd = open(null_path, O_RDONLY);
+
+       /* NULL as arg */
+       CHK_NULL(TEE_IOC_CANCEL);
+       CHK_NULL(TEE_IOC_INVOKE);
+       CHK_NULL(TEE_IOC_VERSION);
+       CHK_NULL(TEE_IOC_SHM_ALLOC);
+       CHK_NULL(TEE_IOC_SUPPL_RECV);
+       CHK_NULL(TEE_IOC_SUPPL_SEND);
+       CHK_NULL(TEE_IOC_OPEN_SESSION);
+       CHK_NULL(TEE_IOC_SHM_REGISTER);
+       CHK_NULL(TEE_IOC_CLOSE_SESSION);
+
+       /* Valid parameterless calls */
+       ioctl(-1, TEE_IOC_SHM_REGISTER_FD, NULL);
+       printf("ioctl(-1, _IOC(_IOC_READ|_IOC_WRITE, 0xa4, 0x8, 0x20), NULL)"
+              RVAL_EBADF);
+       ioctl(-1, _IOC(_IOC_NONE, 0xa4, 0xa, 0), NULL);
+       printf("ioctl(-1, _IOC(_IOC_NONE, 0xa4, 0xa, 0), 0)" RVAL_EBADF);
+
+       cancel.cancel_id = (uint32_t) one_beef;
+       cancel.session = (uint32_t) two_beef;
+       ioctl(-1, TEE_IOC_CANCEL, &cancel);
+       printf("ioctl(-1, TEE_IOC_CANCEL, {cancel_id=%u, session=%#x})" RVAL_EBADF,
+              (uint32_t) one_beef, (uint32_t) two_beef);
+
+       close_session.session = (uint32_t) red_beef;
+       ioctl(-1, TEE_IOC_CLOSE_SESSION, &close_session);
+       printf("ioctl(-1, TEE_IOC_CLOSE_SESSION, {session=%#x})" RVAL_EBADF,
+              (uint32_t) red_beef);
+
+       shm_alloc.size = one_beef;
+       shm_alloc.flags = TEE_IOCTL_SHM_MAPPED | TEE_IOCTL_SHM_DMA_BUF | 0x80;
+       ioctl(-1, TEE_IOC_SHM_ALLOC, &shm_alloc);
+       printf("ioctl(-1, TEE_IOC_SHM_ALLOC, {size=%#llx, "
+              "flags=TEE_IOCTL_SHM_MAPPED|TEE_IOCTL_SHM_DMA_BUF|0x80})" RVAL_EBADF,
+              (unsigned long long) one_beef);
+
+       shm_register.addr = red_beef;
+       shm_register.length = blu_beef;
+       shm_register.flags = TEE_IOCTL_SHM_MAPPED | 0x80;
+       ioctl(-1, TEE_IOC_SHM_REGISTER, &shm_register);
+       printf("ioctl(-1, TEE_IOC_SHM_REGISTER, {addr=%#llx, length=%#llx, "
+              "flags=TEE_IOCTL_SHM_MAPPED|0x80})" RVAL_EBADF,
+              (unsigned long long) red_beef,
+              (unsigned long long) blu_beef);
+
+       if (fd >= 0) {
+               shm_register_fd.fd = fd;
+               shm_register_fd.flags = TEE_IOCTL_SHM_DMA_BUF;
+               ioctl(-1, TEE_IOC_SHM_REGISTER_FD, &shm_register_fd);
+               printf("ioctl(-1, _IOC(_IOC_READ|_IOC_WRITE, 0xa4, 0x8, 0x20), "
+                      "{fd=%d, flags=TEE_IOCTL_SHM_DMA_BUF})" RVAL_EBADF, fd);
+       }
+
+       /* Beef in buf_data */
+       buf_data.buf_ptr = one_beef;
+       buf_data.buf_len = two_beef;
+       CHK_BUF(TEE_IOC_INVOKE);
+       CHK_BUF(TEE_IOC_OPEN_SESSION);
+       CHK_BUF(TEE_IOC_SUPPL_RECV);
+       CHK_BUF(TEE_IOC_SUPPL_SEND);
+
+       /* Valid calls with parameters */
+       invoke_buf.invoke.func = (uint32_t) one_beef;
+       invoke_buf.invoke.session = (uint32_t) two_beef;
+       invoke_buf.invoke.cancel_id = (uint32_t) red_beef;
+       invoke_buf.invoke.num_params = NUM_PARAMS;
+       params = (struct tee_ioctl_param *)(&invoke_buf.invoke + 1);
+       fill_params(params);
+       buf_data.buf_ptr = (uintptr_t) &invoke_buf;
+       buf_data.buf_len = invoke_size;
+       ioctl(-1, TEE_IOC_INVOKE, &buf_data);
+       printf("ioctl(-1, TEE_IOC_INVOKE, {buf_len=%llu, "
+              "buf_ptr={func=%u, session=%#x, cancel_id=%u, "
+              "num_params=%u, params=[",
+              (unsigned long long) buf_data.buf_len,
+              (uint32_t) one_beef, (uint32_t) two_beef,
+              (uint32_t) red_beef, NUM_PARAMS);
+       print_params(params);
+       printf("]}})" RVAL_EBADF);
+
+       open_session_buf.open_session.clnt_login = TEE_IOCTL_LOGIN_PUBLIC;
+       gid = (gid_t) blu_beef;
+       memcpy(&open_session_buf.open_session.clnt_uuid, &gid, sizeof(gid_t));
+       memcpy(&open_session_buf.open_session.uuid, &uuid_beef, UUID_SIZE);
+       open_session_buf.open_session.cancel_id = (uint32_t) red_beef;
+       open_session_buf.open_session.num_params = NUM_PARAMS;
+       params = (struct tee_ioctl_param *)(&open_session_buf.open_session + 1);
+       fill_params(params);
+       buf_data.buf_ptr = (uintptr_t) &open_session_buf;
+       buf_data.buf_len = open_session_size;
+       ioctl(-1, TEE_IOC_OPEN_SESSION, &buf_data);
+       printf("ioctl(-1, TEE_IOC_OPEN_SESSION, {buf_len=%llu, "
+              "buf_ptr={uuid=deadbeef-cafe-c0de-badc-0dedfacefeed, "
+              "clnt_login=TEE_IOCTL_LOGIN_PUBLIC, "
+              "cancel_id=%u, "
+              "num_params=%u, params=[",
+              (unsigned long long) buf_data.buf_len,
+              (uint32_t) red_beef, NUM_PARAMS);
+       print_params(params);
+       printf("]}})" RVAL_EBADF);
+
+       /* All the login types */
+       open_session_buf.open_session.clnt_login = TEE_IOCTL_LOGIN_USER;
+       ioctl(-1, TEE_IOC_OPEN_SESSION, &buf_data);
+       printf("ioctl(-1, TEE_IOC_OPEN_SESSION, {buf_len=%llu, "
+              "buf_ptr={uuid=deadbeef-cafe-c0de-badc-0dedfacefeed, "
+              "clnt_login=TEE_IOCTL_LOGIN_USER, "
+              "cancel_id=%u, "
+              "num_params=%u, params=[",
+              (unsigned long long) buf_data.buf_len,
+              (uint32_t) red_beef, NUM_PARAMS);
+       print_params(params);
+       printf("]}})" RVAL_EBADF);
+
+       open_session_buf.open_session.clnt_login = TEE_IOCTL_LOGIN_GROUP;
+       ioctl(-1, TEE_IOC_OPEN_SESSION, &buf_data);
+       printf("ioctl(-1, TEE_IOC_OPEN_SESSION, {buf_len=%llu, "
+              "buf_ptr={uuid=deadbeef-cafe-c0de-badc-0dedfacefeed, "
+              "clnt_login=TEE_IOCTL_LOGIN_GROUP, "
+              "clnt_uuid=%u, cancel_id=%u, "
+              "num_params=%u, params=[",
+              (unsigned long long) buf_data.buf_len,
+              gid, (uint32_t) red_beef, NUM_PARAMS);
+       print_params(params);
+       printf("]}})" RVAL_EBADF);
+
+       open_session_buf.open_session.clnt_login = TEE_IOCTL_LOGIN_APPLICATION;
+       ioctl(-1, TEE_IOC_OPEN_SESSION, &buf_data);
+       printf("ioctl(-1, TEE_IOC_OPEN_SESSION, {buf_len=%llu, "
+              "buf_ptr={uuid=deadbeef-cafe-c0de-badc-0dedfacefeed, "
+              "clnt_login=TEE_IOCTL_LOGIN_APPLICATION, "
+              "cancel_id=%u, "
+              "num_params=%u, params=[",
+              (unsigned long long) buf_data.buf_len,
+              (uint32_t) red_beef, NUM_PARAMS);
+       print_params(params);
+       printf("]}})" RVAL_EBADF);
+
+       open_session_buf.open_session.clnt_login = TEE_IOCTL_LOGIN_USER_APPLICATION;
+       ioctl(-1, TEE_IOC_OPEN_SESSION, &buf_data);
+       printf("ioctl(-1, TEE_IOC_OPEN_SESSION, {buf_len=%llu, "
+              "buf_ptr={uuid=deadbeef-cafe-c0de-badc-0dedfacefeed, "
+              "clnt_login=TEE_IOCTL_LOGIN_USER_APPLICATION, "
+              "cancel_id=%u, "
+              "num_params=%u, params=[",
+              (unsigned long long) buf_data.buf_len,
+              (uint32_t) red_beef, NUM_PARAMS);
+       print_params(params);
+       printf("]}})" RVAL_EBADF);
+
+       open_session_buf.open_session.clnt_login = TEE_IOCTL_LOGIN_GROUP_APPLICATION;
+       ioctl(-1, TEE_IOC_OPEN_SESSION, &buf_data);
+       printf("ioctl(-1, TEE_IOC_OPEN_SESSION, {buf_len=%llu, "
+              "buf_ptr={uuid=deadbeef-cafe-c0de-badc-0dedfacefeed, "
+              "clnt_login=TEE_IOCTL_LOGIN_GROUP_APPLICATION, "
+              "clnt_uuid=%u, cancel_id=%u, "
+              "num_params=%u, params=[",
+              (unsigned long long) buf_data.buf_len,
+              gid, (uint32_t) red_beef, NUM_PARAMS);
+       print_params(params);
+       printf("]}})" RVAL_EBADF);
+
+       open_session_buf.open_session.clnt_login = 0xff;
+       ioctl(-1, TEE_IOC_OPEN_SESSION, &buf_data);
+       printf("ioctl(-1, TEE_IOC_OPEN_SESSION, {buf_len=%llu, "
+              "buf_ptr={uuid=deadbeef-cafe-c0de-badc-0dedfacefeed, "
+              "clnt_login=%#x /* TEE_IOCTL_LOGIN_??? */, "
+              "clnt_uuid=[", (unsigned long long) buf_data.buf_len,
+              open_session_buf.open_session.clnt_login);
+       for (unsigned i = 0; i < UUID_SIZE; i++) {
+               if (i > 0)
+                       printf(", ");
+               printf("%#x", open_session_buf.open_session.clnt_uuid[i]);
+       }
+       printf("], cancel_id=%u, "
+              "num_params=%u, params=[",
+              (uint32_t) red_beef, NUM_PARAMS);
+       print_params(params);
+       printf("]}})" RVAL_EBADF);
+
+       supp_recv_buf.supp_recv.func = (uint32_t) blu_beef;
+       supp_recv_buf.supp_recv.num_params = NUM_PARAMS;
+       params = (struct tee_ioctl_param *)(&supp_recv_buf.supp_recv + 1);
+       fill_params(params);
+       buf_data.buf_ptr = (uintptr_t) &supp_recv_buf;
+       buf_data.buf_len = supp_recv_size;
+       ioctl(-1, TEE_IOC_SUPPL_RECV, &buf_data);
+       printf("ioctl(-1, TEE_IOC_SUPPL_RECV, {buf_len=%llu, "
+              "buf_ptr={func=%u, "
+              "num_params=%u, params=[",
+              (unsigned long long) buf_data.buf_len,
+              (uint32_t) blu_beef, NUM_PARAMS);
+       print_params(params);
+       printf("]}})" RVAL_EBADF);
+
+       supp_send_buf.supp_send.num_params = NUM_PARAMS;
+       params = (struct tee_ioctl_param *)(&supp_send_buf.supp_send + 1);
+       fill_params(params);
+       buf_data.buf_ptr = (uintptr_t) &supp_send_buf;
+       buf_data.buf_len = supp_send_size;
+       ioctl(-1, TEE_IOC_SUPPL_SEND, &buf_data);
+       printf("ioctl(-1, TEE_IOC_SUPPL_SEND, {buf_len=%llu, "
+              "buf_ptr={num_params=%u, params=[",
+              (unsigned long long) buf_data.buf_len,
+              NUM_PARAMS);
+       print_params(params);
+       printf("]}})" RVAL_EBADF);
+
+       /* Valid buf, but unmatching num_params */
+       invoke_buf.invoke.num_params = 0;
+       supp_recv_buf.supp_recv.num_params = 0;
+       supp_send_buf.supp_send.num_params = 0;
+       open_session_buf.open_session.num_params = 0;
+
+       buf_data.buf_ptr = (uintptr_t) &invoke_buf;
+       buf_data.buf_len = invoke_size;
+       CHK_BUF(TEE_IOC_INVOKE);
+       buf_data.buf_ptr = (uintptr_t) &open_session_buf;
+       buf_data.buf_len = open_session_size;
+       CHK_BUF(TEE_IOC_OPEN_SESSION);
+       buf_data.buf_ptr = (uintptr_t) &supp_recv_buf;
+       buf_data.buf_len = supp_recv_size;
+       CHK_BUF(TEE_IOC_SUPPL_RECV);
+       buf_data.buf_ptr = (uintptr_t) &supp_send_buf;
+       buf_data.buf_len = supp_send_size;
+       CHK_BUF(TEE_IOC_SUPPL_SEND);
+
+       invoke_buf.invoke.num_params = NUM_PARAMS;
+       supp_recv_buf.supp_recv.num_params = NUM_PARAMS;
+       supp_send_buf.supp_send.num_params = NUM_PARAMS;
+       open_session_buf.open_session.num_params = NUM_PARAMS;
+
+       /* Invalid buf_len */
+       buf_data.buf_len = 0;
+       CHK_BUF(TEE_IOC_INVOKE);
+       CHK_BUF(TEE_IOC_OPEN_SESSION);
+       CHK_BUF(TEE_IOC_SUPPL_RECV);
+       CHK_BUF(TEE_IOC_SUPPL_SEND);
+
+       buf_data.buf_len = (unsigned long long) -1;
+       CHK_BUF(TEE_IOC_INVOKE);
+       CHK_BUF(TEE_IOC_OPEN_SESSION);
+       CHK_BUF(TEE_IOC_SUPPL_RECV);
+       CHK_BUF(TEE_IOC_SUPPL_SEND);
+
+       /* Valid buf_len, invalid buf_ptr */
+       buf_data.buf_ptr = one_beef;
+       buf_data.buf_len = invoke_size;
+       CHK_BUF(TEE_IOC_INVOKE);
+       buf_data.buf_len = open_session_size;
+       CHK_BUF(TEE_IOC_OPEN_SESSION);
+       buf_data.buf_len = supp_recv_size;
+       CHK_BUF(TEE_IOC_SUPPL_RECV);
+       buf_data.buf_len = supp_send_size;
+       CHK_BUF(TEE_IOC_SUPPL_SEND);
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else /* !HAVE_LINUX_TEE_H */
+
+SKIP_MAIN_UNDEFINED("HAVE_LINUX_TEE_H")
+
+#endif /* HAVE_LINUX_TEE_H */
diff --git a/tests/ioctl_tee.gen.test b/tests/ioctl_tee.gen.test
new file mode 100755 (executable)
index 0000000..f220bca
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_tee +ioctl.test ); do not edit.
+set -- 
+. "${srcdir=.}/ioctl.test"
index 19104442f675dbeb682c7f92bdb01d2b44dc7b57..971440d0395b85417478eb2f7af29cff521ee5bf 100644 (file)
@@ -1,14 +1,14 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c)      2016 Red Hat, Inc.
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_userfaultfd && defined HAVE_LINUX_USERFAULTFD_H
 
@@ -135,6 +135,13 @@ main(void)
               " mode=UFFDIO_COPY_MODE_DONTWAKE, copy=%#zx}) = %d\n",
               fd, area2, area1, pagesize, pagesize, rc);
 
+       copy_struct->mode = 0xdeadbeef;;
+       rc = ioctl(fd, UFFDIO_COPY, copy_struct);
+       printf("ioctl(%d, UFFDIO_COPY, {dst=%p, src=%p, len=%#zx,"
+              " mode=UFFDIO_COPY_MODE_DONTWAKE|UFFDIO_COPY_MODE_WP|0xdeadbeec"
+              "}) = %s\n",
+              fd, area2, area1, pagesize, sprintrc(rc));
+
        /* ---- ZEROPAGE ---- */
        TAIL_ALLOC_OBJECT_CONST_PTR(struct uffdio_zeropage, zero_struct);
        madvise(area2, pagesize, MADV_DONTNEED);
diff --git a/tests/ioctl_v4l2-Xabbrev.c b/tests/ioctl_v4l2-Xabbrev.c
new file mode 100644 (file)
index 0000000..54046bf
--- /dev/null
@@ -0,0 +1 @@
+#include "ioctl_v4l2.c"
diff --git a/tests/ioctl_v4l2-Xabbrev.gen.test b/tests/ioctl_v4l2-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..f90c41d
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2-Xabbrev +ioctl.test -Xabbrev); do not edit.
+set -- -Xabbrev
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_v4l2-Xraw.c b/tests/ioctl_v4l2-Xraw.c
new file mode 100644 (file)
index 0000000..da45f6d
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "ioctl_v4l2.c"
diff --git a/tests/ioctl_v4l2-Xraw.gen.test b/tests/ioctl_v4l2-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..9ebd283
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2-Xraw +ioctl.test -Xraw); do not edit.
+set -- -Xraw
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_v4l2-Xverbose.c b/tests/ioctl_v4l2-Xverbose.c
new file mode 100644 (file)
index 0000000..52173f7
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "ioctl_v4l2.c"
diff --git a/tests/ioctl_v4l2-Xverbose.gen.test b/tests/ioctl_v4l2-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..0d0ccd0
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2-Xverbose +ioctl.test -Xverbose); do not edit.
+set -- -Xverbose
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_v4l2-success-Xabbrev.c b/tests/ioctl_v4l2-success-Xabbrev.c
new file mode 100644 (file)
index 0000000..c328ee1
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_ABBREV 1
+#include "ioctl_v4l2-success.c"
diff --git a/tests/ioctl_v4l2-success-Xabbrev.gen.test b/tests/ioctl_v4l2-success-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..60e33ad
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2-success-Xabbrev +ioctl-success.sh -a29 -Xabbrev); do not edit.
+set -- -a29 -Xabbrev
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests/ioctl_v4l2-success-Xraw.c b/tests/ioctl_v4l2-success-Xraw.c
new file mode 100644 (file)
index 0000000..2ceb2d3
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "ioctl_v4l2-success.c"
diff --git a/tests/ioctl_v4l2-success-Xraw.gen.test b/tests/ioctl_v4l2-success-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..f1ee3f2
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2-success-Xraw +ioctl-success.sh -a27 -Xraw); do not edit.
+set -- -a27 -Xraw
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests/ioctl_v4l2-success-Xverbose.c b/tests/ioctl_v4l2-success-Xverbose.c
new file mode 100644 (file)
index 0000000..c09ee34
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "ioctl_v4l2-success.c"
diff --git a/tests/ioctl_v4l2-success-Xverbose.gen.test b/tests/ioctl_v4l2-success-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..a1b69a4
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2-success-Xverbose +ioctl-success.sh -a30 -Xverbose); do not edit.
+set -- -a30 -Xverbose
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests/ioctl_v4l2-success-v-Xabbrev.c b/tests/ioctl_v4l2-success-v-Xabbrev.c
new file mode 100644 (file)
index 0000000..f06ca45
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_ABBREV 1
+#include "ioctl_v4l2-success-v.c"
diff --git a/tests/ioctl_v4l2-success-v-Xabbrev.gen.test b/tests/ioctl_v4l2-success-v-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..49dfc26
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2-success-v-Xabbrev +ioctl-success.sh -a29 -v -Xabbrev); do not edit.
+set -- -a29 -v -Xabbrev
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests/ioctl_v4l2-success-v-Xraw.c b/tests/ioctl_v4l2-success-v-Xraw.c
new file mode 100644 (file)
index 0000000..a95c12f
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "ioctl_v4l2-success-v.c"
diff --git a/tests/ioctl_v4l2-success-v-Xraw.gen.test b/tests/ioctl_v4l2-success-v-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..55e9799
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2-success-v-Xraw +ioctl-success.sh -a27 -v -Xraw); do not edit.
+set -- -a27 -v -Xraw
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests/ioctl_v4l2-success-v-Xverbose.c b/tests/ioctl_v4l2-success-v-Xverbose.c
new file mode 100644 (file)
index 0000000..ac659b3
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "ioctl_v4l2-success-v.c"
diff --git a/tests/ioctl_v4l2-success-v-Xverbose.gen.test b/tests/ioctl_v4l2-success-v-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..ed9278f
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2-success-v-Xverbose +ioctl-success.sh -a29 -v -Xverbose); do not edit.
+set -- -a29 -v -Xverbose
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests/ioctl_v4l2-success-v.c b/tests/ioctl_v4l2-success-v.c
new file mode 100644 (file)
index 0000000..fadad4e
--- /dev/null
@@ -0,0 +1,2 @@
+#define VERBOSE 1
+#include "ioctl_v4l2-success.c"
diff --git a/tests/ioctl_v4l2-success-v.gen.test b/tests/ioctl_v4l2-success-v.gen.test
new file mode 100755 (executable)
index 0000000..6eca4cd
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2-success-v +ioctl-success.sh -a29 -v); do not edit.
+set -- -a29 -v
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests/ioctl_v4l2-success.c b/tests/ioctl_v4l2-success.c
new file mode 100644 (file)
index 0000000..f1b834e
--- /dev/null
@@ -0,0 +1,1473 @@
+/*
+ * Copyright (c) 2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/ioctl.h>
+#include "kernel_v4l2_types.h"
+
+#define XLAT_MACROS_ONLY
+# include "xlat/v4l2_ioctl_cmds.h"
+#undef XLAT_MACROS_ONLY
+
+static bool
+fill_fmt(struct v4l2_format *f)
+{
+       static struct v4l2_clip *clips;
+
+       switch (f->type) {
+       case V4L2_BUF_TYPE_VIDEO_CAPTURE:
+       case V4L2_BUF_TYPE_VIDEO_OUTPUT:
+               f->fmt.pix.width        = 0xdeadc0de;
+               f->fmt.pix.height       = 0xfeedbeef;
+               f->fmt.pix.pixelformat  = 0xb5315258; /* forurcc_be("XR15") */
+               f->fmt.pix.field = f->type == V4L2_BUF_TYPE_VIDEO_CAPTURE
+                       ? V4L2_FIELD_ALTERNATE : 0xdec0ded1;
+               f->fmt.pix.bytesperline = 0xbadc0ded;
+               f->fmt.pix.sizeimage    = 0xface1e55;
+               f->fmt.pix.colorspace   = V4L2_COLORSPACE_REC709;
+               break;
+
+       case V4L2_BUF_TYPE_VIDEO_OVERLAY:
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY
+       case V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY:
+#endif
+               f->fmt.win.w.left    = 0xa0a1a2a3;
+               f->fmt.win.w.top     = 0xb0b1b2b3;
+               f->fmt.win.w.width   = 0xc0c1c2c3;
+               f->fmt.win.w.height  = 0xd0d1d2d3;
+               f->fmt.win.field     = f->type == V4L2_BUF_TYPE_VIDEO_OVERLAY
+                       ? V4L2_FIELD_ANY : 10;
+               f->fmt.win.chromakey = 0xbeefface;
+
+               if (!clips)
+                       clips = tail_alloc(sizeof(*clips) * 3);
+               f->fmt.win.clips = clips;
+
+               f->fmt.win.clips[0].c.left   = 0xa4a5a6a7;
+               f->fmt.win.clips[0].c.top    = 0xb4b5b6b7;
+               f->fmt.win.clips[0].c.width  = 0xc4c5c6c7;
+               f->fmt.win.clips[0].c.height = 0xd4d5d6d7;
+               f->fmt.win.clips[0].next     = clips;
+
+               f->fmt.win.clips[1].c.left   = 0xa8a9aaab;
+               f->fmt.win.clips[1].c.top    = 0xb8b9babb;
+               f->fmt.win.clips[1].c.width  = 0xc8c9cacb;
+               f->fmt.win.clips[1].c.height = 0xd8d9dadb;
+
+               f->fmt.win.clips[2].c.left   = 0xacadaeaf;
+               f->fmt.win.clips[2].c.top    = 0xbcbdbebf;
+               f->fmt.win.clips[2].c.width  = 0xcccdcecf;
+               f->fmt.win.clips[2].c.height = 0xdcdddedf;
+               f->fmt.win.clips[2].next     = clips + 1;
+
+               f->fmt.win.clipcount = f->type == V4L2_BUF_TYPE_VIDEO_OVERLAY
+                       ? 4 : 0;
+               f->fmt.win.bitmap    = f->type == V4L2_BUF_TYPE_VIDEO_OVERLAY
+                       ? NULL : clips;
+               break;
+
+       case V4L2_BUF_TYPE_VBI_CAPTURE:
+       case V4L2_BUF_TYPE_VBI_OUTPUT:
+               f->fmt.vbi.sampling_rate    = 0xdecaffed;
+               f->fmt.vbi.offset           = 0xcafefeed;
+               f->fmt.vbi.samples_per_line = 0xbeefaced;
+               f->fmt.vbi.sample_format    = V4L2_PIX_FMT_RGB555X;
+
+               f->fmt.vbi.start[0] = 0xdec0ded0;
+               f->fmt.vbi.start[1] = 0xdec0ded1;
+               f->fmt.vbi.count[0] = 0xacceded2;
+               f->fmt.vbi.count[1] = 0xacceded3;
+
+               f->fmt.vbi.flags = f->type == V4L2_BUF_TYPE_VBI_CAPTURE
+                       ? 0x3 : 0x1ce50d1c;
+               break;
+
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
+       case V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE:
+       case V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE:
+               f->fmt.pix_mp.width        = 0xdeaffade;
+               f->fmt.pix_mp.height       = 0xfadeb1a5;
+               f->fmt.pix_mp.pixelformat  = 0x36314454;
+               f->fmt.pix_mp.field        = V4L2_FIELD_NONE;
+               f->fmt.pix_mp.colorspace   = 13;
+
+               for (size_t i = 0; i < VIDEO_MAX_PLANES; i++) {
+                       f->fmt.pix_mp.plane_fmt[i].sizeimage = 0xd0decad0 ^ i;
+                       if (sizeof(f->fmt.pix_mp.plane_fmt[i].bytesperline) ==
+                           sizeof(uint32_t)) {
+                               f->fmt.pix_mp.plane_fmt[i].bytesperline
+                                       = 0xd0decad1 ^ i;
+                       } else {
+# if WORDS_BIGENDIAN
+                               f->fmt.pix_mp.plane_fmt[i].bytesperline
+                                       = 0xd0de;
+                               f->fmt.pix_mp.plane_fmt[i].reserved[0]
+                                       = 0xcad1 ^ i;
+# else
+                               f->fmt.pix_mp.plane_fmt[i].bytesperline
+                                       = 0xcad1 ^ i;
+                               f->fmt.pix_mp.plane_fmt[i].reserved[0]
+                                       = 0xd0de;
+# endif
+                       }
+               }
+
+               f->fmt.pix_mp.num_planes   = f->type ==
+                       V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE ? 0xd5 : 0;
+               break;
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE
+       case V4L2_BUF_TYPE_SLICED_VBI_CAPTURE:
+       case V4L2_BUF_TYPE_SLICED_VBI_OUTPUT:
+               f->fmt.sliced.service_set = 0xfeed;
+               for (size_t i = 0; i < 2; i++) {
+                       for (size_t j = 0; j < 24; j++) {
+                               f->fmt.sliced.service_lines[i][j] =
+                                       0xdead ^ (i << 8) ^ j;
+                       }
+               }
+               f->fmt.sliced.io_size = 0xdefaceed;
+               break;
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE
+       case V4L2_BUF_TYPE_SDR_CAPTURE:
+# if HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT
+       case V4L2_BUF_TYPE_SDR_OUTPUT:
+# endif
+               f->fmt.sdr.pixelformat = V4L2_SDR_FMT_CU8;
+# ifdef HAVE_STRUCT_V4L2_SDR_FORMAT_BUFFERSIZE
+               if (sizeof(f->fmt.sdr.buffersize == sizeof(uint32_t)))
+                       f->fmt.sdr.buffersize = 0xbadc0ded;
+               else
+                       ((uint32_t *) &f->fmt.sdr)[1] = 0xbadc0ded;
+# else
+               ((uint32_t *) &f->fmt.sdr)[1] = 0xbadc0ded;
+# endif
+               break;
+#endif
+       default:
+               return false;
+       }
+
+       return true;
+}
+
+static void
+print_fmt(const char *pfx, struct v4l2_format *f)
+{
+       switch (f->type) {
+       case V4L2_BUF_TYPE_VIDEO_CAPTURE:
+       case V4L2_BUF_TYPE_VIDEO_OUTPUT:
+               printf("%sfmt.pix={width=3735929054, height=4276993775"
+                      ", pixelformat=" RAW("0xb5315258")
+                      NRAW("v4l2_fourcc('X', 'R', '1', '\\xb5')"
+                           " /* V4L2_PIX_FMT_XRGB555X */")
+                      ", field=%s, bytesperline=3134983661"
+                      ", sizeimage=4207812181, colorspace="
+                      XLAT_KNOWN(0x3, "V4L2_COLORSPACE_REC709") "}",
+                      pfx, f->type == V4L2_BUF_TYPE_VIDEO_CAPTURE
+                       ? XLAT_STR(V4L2_FIELD_ALTERNATE)
+                       : XLAT_UNKNOWN(0xdec0ded1, "V4L2_FIELD_???"));
+               break;
+
+       case V4L2_BUF_TYPE_VIDEO_OVERLAY:
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY
+       case V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY:
+#endif
+               printf("%sfmt.win={left=-1600019805, top=-1330531661"
+                      ", width=3233923779, height=3503411923, field=%s"
+                      ", chromakey=0xbeefface, clips=[",
+                      pfx, f->type == V4L2_BUF_TYPE_VIDEO_OVERLAY
+                       ? XLAT_STR(V4L2_FIELD_ANY)
+                       : XLAT_UNKNOWN(0xa, "V4L2_FIELD_???"));
+               if (f->type == V4L2_BUF_TYPE_VIDEO_OVERLAY) {
+                       printf("{left=-1532647769, top=-1263159625"
+                              ", width=3301295815, height=3570783959}, "
+                              "{left=-1465275733, top=-1195787589"
+                              ", width=3368667851, height=3638155995}, "
+                              "{left=-1397903697, top=-1128415553"
+                              ", width=3436039887, height=3705528031}, "
+                              "... /* %p */", f->fmt.win.clips + 3);
+               }
+               printf("], clipcount=%d, bitmap=",
+                      f->type == V4L2_BUF_TYPE_VIDEO_OVERLAY ? 4 : 0);
+
+               if (f->type == V4L2_BUF_TYPE_VIDEO_OVERLAY)
+                       printf("NULL");
+               else
+                       printf("%p", f->fmt.win.bitmap);
+
+#ifdef HAVE_STRUCT_V4L2_WINDOW_GLOBAL_ALPHA
+               printf(", global_alpha=%#hhx}", f->fmt.win.global_alpha);
+#else
+               struct win_ga {
+                       struct v4l2_rect w;
+                       uint32_t field;
+                       uint32_t chromakey;
+                       struct v4l2_clip *clips;
+                       uint32_t clipcount;
+                       void *bitmap;
+                       uint8_t global_alpha;
+               };
+               printf(", global_alpha=%#hhx}",
+                      ((struct win_ga *) &f->fmt.win)->global_alpha);
+#endif
+               break;
+
+       case V4L2_BUF_TYPE_VBI_CAPTURE:
+       case V4L2_BUF_TYPE_VBI_OUTPUT:
+               printf("%sfmt.vbi={sampling_rate=3737845741, offset=3405709037"
+                      ", samples_per_line=3203378413, sample_format="
+                      RAW("0x51424752") NRAW("v4l2_fourcc('R', 'G', 'B', 'Q')"
+                      " /* V4L2_PIX_FMT_RGB555X */")
+                      ", start=[-557785392, -557785391]"
+                      ", count=[2899238610, 2899238611], flags=%s}",
+                      pfx, f->type == V4L2_BUF_TYPE_VBI_CAPTURE
+                       ? XLAT_KNOWN(0x3, "V4L2_VBI_UNSYNC|V4L2_VBI_INTERLACED")
+                       : XLAT_UNKNOWN(0x1ce50d1c, "V4L2_VBI_???"));
+               break;
+
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
+       case V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE:
+       case V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE:
+               printf("%sfmt.pix_mp={width=3736074974, height=4208898469"
+                      ", pixelformat=" RAW("0x36314454")
+                      NRAW("v4l2_fourcc('T', 'D', '1', '6')")
+                      ", field=%s, colorspace=0xd"
+                      NRAW(" /* V4L2_COLORSPACE_??? */") ", plane_fmt=[",
+                      pfx, XLAT_STR(V4L2_FIELD_NONE));
+               if (f->type == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE) {
+                       printf("{sizeimage=3504261840, bytesperline=3504261841}"
+                       ", "
+                              "{sizeimage=3504261841, bytesperline=3504261840}"
+                              ", "
+                              "{sizeimage=3504261842, bytesperline=3504261843}"
+                              ", "
+                              "{sizeimage=3504261843, bytesperline=3504261842}"
+                              ", "
+                              "{sizeimage=3504261844, bytesperline=3504261845}"
+                              ", "
+                              "{sizeimage=3504261845, bytesperline=3504261844}"
+                              ", "
+                              "{sizeimage=3504261846, bytesperline=3504261847}"
+                              ", "
+                              "{sizeimage=3504261847, bytesperline=3504261846}"
+                              "], num_planes=213}");
+               } else {
+                       printf("], num_planes=0}");
+               }
+               break;
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE
+       case V4L2_BUF_TYPE_SLICED_VBI_CAPTURE:
+       case V4L2_BUF_TYPE_SLICED_VBI_OUTPUT:
+               printf("%sfmt.sliced={service_set="
+                      XLAT_UNKNOWN(0xfeed, "V4L2_SLICED_???")
+                      ", io_size=3740978925, service_lines=[[0xdead, 0xdeac"
+                      ", 0xdeaf, 0xdeae, 0xdea9, 0xdea8, 0xdeab, 0xdeaa"
+                      ", 0xdea5, 0xdea4, 0xdea7, 0xdea6, 0xdea1, 0xdea0"
+                      ", 0xdea3, 0xdea2, 0xdebd, 0xdebc, 0xdebf, 0xdebe"
+                      ", 0xdeb9, 0xdeb8, 0xdebb, 0xdeba], [0xdfad, 0xdfac"
+                      ", 0xdfaf, 0xdfae, 0xdfa9, 0xdfa8, 0xdfab, 0xdfaa"
+                      ", 0xdfa5, 0xdfa4, 0xdfa7, 0xdfa6, 0xdfa1, 0xdfa0"
+                      ", 0xdfa3, 0xdfa2, 0xdfbd, 0xdfbc, 0xdfbf, 0xdfbe"
+                      ", 0xdfb9, 0xdfb8, 0xdfbb, 0xdfba]]}",
+                      pfx);
+               break;
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE
+       case V4L2_BUF_TYPE_SDR_CAPTURE:
+# if HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT
+       case V4L2_BUF_TYPE_SDR_OUTPUT:
+# endif
+               printf("%sfmt.sdr={pixelformat=" RAW("0x38305543")
+                      NRAW("v4l2_fourcc('C', 'U', '0', '8')"
+                           " /* V4L2_SDR_FMT_CU8 */")
+                      ", buffersize=3134983661}",
+                      pfx);
+               break;
+#endif
+       }
+}
+
+int
+main(int argc, char **argv)
+{
+       unsigned long num_skip;
+       long inject_retval;
+       bool locked = false;
+
+       if (argc == 1)
+               return 0;
+
+       if (argc < 3)
+               error_msg_and_fail("Usage: %s NUM_SKIP INJECT_RETVAL", argv[0]);
+
+       num_skip = strtoul(argv[1], NULL, 0);
+       inject_retval = strtol(argv[2], NULL, 0);
+
+       if (inject_retval < 0)
+               error_msg_and_fail("Expected non-negative INJECT_RETVAL, "
+                                  "but got %ld", inject_retval);
+
+       for (unsigned int i = 0; i < num_skip; i++) {
+               long rc = ioctl(-1, VIDIOC_QUERYCAP, NULL);
+               printf("ioctl(-1, %s, NULL) = %s%s\n",
+                      XLAT_STR(VIDIOC_QUERYCAP), sprintrc(rc),
+                      rc == inject_retval ? " (INJECTED)" : "");
+
+               if (rc != inject_retval)
+                       continue;
+
+               locked = true;
+               break;
+       }
+
+       if (!locked)
+               error_msg_and_fail("Hasn't locked on ioctl(-1"
+                                  ", VIDIOC_QUERYCAP, NULL) returning %lu",
+                                  inject_retval);
+
+
+       /* VIDIOC_QUERYCAP */
+       struct v4l2_capability *caps = tail_alloc(sizeof(*caps));
+
+       fill_memory(caps, sizeof(*caps));
+       caps->capabilities = 0xdeadbeef;
+#ifdef HAVE_STRUCT_V4L2_CAPABILITY_DEVICE_CAPS
+       caps->device_caps = 0xfacefeed;
+#else
+       caps->reserved[0] = 0xfacefeed;
+#endif
+
+       ioctl(-1, VIDIOC_QUERYCAP, 0);
+       printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_QUERYCAP), inject_retval);
+
+       ioctl(-1, VIDIOC_QUERYCAP, (char *) caps + 1);
+       printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_QUERYCAP), (char *) caps + 1, inject_retval);
+
+       ioctl(-1, VIDIOC_QUERYCAP, caps);
+       printf("ioctl(-1, %s, {driver=", XLAT_STR(VIDIOC_QUERYCAP));
+       print_quoted_cstring((char *) caps->driver, sizeof(caps->driver));
+       printf(", card=");
+       print_quoted_cstring((char *) caps->card, sizeof(caps->card));
+       printf(", bus_info=");
+       print_quoted_cstring((char *) caps->bus_info, sizeof(caps->bus_info));
+       printf(", version="
+#ifdef WORDS_BIGENDIAN
+              XLAT_KNOWN(0xd0d1d2d3, "KERNEL_VERSION(53457, 210, 211)")
+#else
+              XLAT_KNOWN(0xd3d2d1d0, "KERNEL_VERSION(54226, 209, 208)")
+#endif
+              ", capabilities=" XLAT_KNOWN(0xdeadbeef,
+              "V4L2_CAP_VIDEO_CAPTURE|V4L2_CAP_VIDEO_OUTPUT"
+              "|V4L2_CAP_VIDEO_OVERLAY|V4L2_CAP_VBI_OUTPUT"
+              "|V4L2_CAP_SLICED_VBI_CAPTURE|V4L2_CAP_SLICED_VBI_OUTPUT"
+              "|V4L2_CAP_VIDEO_OUTPUT_OVERLAY|V4L2_CAP_HW_FREQ_SEEK"
+              "|V4L2_CAP_RDS_OUTPUT|V4L2_CAP_VIDEO_CAPTURE_MPLANE"
+              "|V4L2_CAP_VIDEO_OUTPUT_MPLANE|V4L2_CAP_VIDEO_M2M"
+              "|V4L2_CAP_TUNER|V4L2_CAP_RADIO|V4L2_CAP_MODULATOR"
+              "|V4L2_CAP_EXT_PIX_FORMAT|V4L2_CAP_META_CAPTURE|V4L2_CAP_ASYNCIO"
+              "|V4L2_CAP_STREAMING|V4L2_CAP_META_OUTPUT|V4L2_CAP_TOUCH"
+              "|V4L2_CAP_DEVICE_CAPS|0x40000008"));
+       printf(", device_caps=" XLAT_KNOWN(0xfacefeed,
+              "V4L2_CAP_VIDEO_CAPTURE|V4L2_CAP_VIDEO_OVERLAY"
+              "|V4L2_CAP_VBI_OUTPUT|V4L2_CAP_SLICED_VBI_CAPTURE"
+              "|V4L2_CAP_SLICED_VBI_OUTPUT|V4L2_CAP_VIDEO_OUTPUT_OVERLAY"
+              "|V4L2_CAP_HW_FREQ_SEEK|V4L2_CAP_RDS_OUTPUT"
+              "|V4L2_CAP_VIDEO_CAPTURE_MPLANE|V4L2_CAP_VIDEO_OUTPUT_MPLANE"
+              "|V4L2_CAP_VIDEO_M2M_MPLANE|V4L2_CAP_VIDEO_M2M|V4L2_CAP_AUDIO"
+              "|V4L2_CAP_RADIO|V4L2_CAP_MODULATOR|V4L2_CAP_SDR_OUTPUT"
+              "|V4L2_CAP_META_CAPTURE|V4L2_CAP_ASYNCIO|V4L2_CAP_META_OUTPUT"
+              "|V4L2_CAP_TOUCH|V4L2_CAP_DEVICE_CAPS|0x60000008"));
+       printf("}) = %ld (INJECTED)\n", inject_retval);
+
+
+       /* VIDIOC_ENUM_FMT */
+       static const struct strval32 buf_types[] = {
+               { ARG_XLAT_UNKNOWN(0, "V4L2_BUF_TYPE_???") },
+               { ARG_XLAT_KNOWN(0x1, "V4L2_BUF_TYPE_VIDEO_CAPTURE") },
+               { ARG_XLAT_KNOWN(0x2, "V4L2_BUF_TYPE_VIDEO_OUTPUT") },
+               { ARG_XLAT_KNOWN(0x3, "V4L2_BUF_TYPE_VIDEO_OVERLAY") },
+               { ARG_XLAT_KNOWN(0x4, "V4L2_BUF_TYPE_VBI_CAPTURE") },
+               { ARG_XLAT_KNOWN(0x5, "V4L2_BUF_TYPE_VBI_OUTPUT") },
+               { ARG_XLAT_KNOWN(0x6, "V4L2_BUF_TYPE_SLICED_VBI_CAPTURE") },
+               { ARG_XLAT_KNOWN(0x7, "V4L2_BUF_TYPE_SLICED_VBI_OUTPUT") },
+               { ARG_XLAT_KNOWN(0x8, "V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY") },
+               { ARG_XLAT_KNOWN(0x9, "V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE") },
+               { ARG_XLAT_KNOWN(0xa, "V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE") },
+               { ARG_XLAT_KNOWN(0xb, "V4L2_BUF_TYPE_SDR_CAPTURE") },
+               { ARG_XLAT_KNOWN(0xc, "V4L2_BUF_TYPE_SDR_OUTPUT") },
+               { ARG_XLAT_KNOWN(0xd, "V4L2_BUF_TYPE_META_CAPTURE") },
+               { ARG_XLAT_KNOWN(0xe, "V4L2_BUF_TYPE_META_OUTPUT") },
+               { ARG_XLAT_UNKNOWN(0xf, "V4L2_BUF_TYPE_???") },
+               { ARG_XLAT_UNKNOWN(0x80, "V4L2_BUF_TYPE_???") },
+               { ARG_XLAT_UNKNOWN(0xbadc0ded, "V4L2_BUF_TYPE_???") },
+       };
+       static const struct strval32 fmtdesc_flags[] = {
+               { ARG_STR(0) },
+               { ARG_XLAT_KNOWN(0x1, "V4L2_FMT_FLAG_COMPRESSED") },
+               { ARG_XLAT_KNOWN(0x3e, "V4L2_FMT_FLAG_EMULATED"
+                                      "|V4L2_FMT_FLAG_CONTINUOUS_BYTESTREAM"
+                                      "|V4L2_FMT_FLAG_DYN_RESOLUTION"
+                                      "|V4L2_FMT_FLAG_ENC_CAP_FRAME_INTERVAL"
+                                      "|0x20") },
+               { ARG_XLAT_UNKNOWN(0xdead0000, "V4L2_FMT_FLAG_???") },
+       };
+       static const struct strval32 fmtdesc_fmts[] = {
+               { 0x4c47504a, RAW("0x4c47504a")
+                             NRAW("v4l2_fourcc('J', 'P', 'G', 'L')"
+                                  " /* V4L2_PIX_FMT_JPGL */") },
+               { 0xbadc0ded, RAW("0xbadc0ded")
+                             NRAW("v4l2_fourcc('\\xed', '\\x0d', '\\xdc',"
+                                  " '\\xba')") },
+       };
+       struct v4l2_fmtdesc *fmtdesc = tail_alloc(sizeof(*fmtdesc));
+
+       fill_memory(fmtdesc, sizeof(*fmtdesc));
+       fmtdesc->index = 0xdeac0de;
+
+       ioctl(-1, VIDIOC_ENUM_FMT, 0);
+       printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_ENUM_FMT), inject_retval);
+
+       ioctl(-1, VIDIOC_ENUM_FMT, (char *) fmtdesc + 1);
+       printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_ENUM_FMT), (char *) fmtdesc + 1, inject_retval);
+
+       for (size_t i = 0; i < ARRAY_SIZE(buf_types); i++) {
+               for (size_t j = 0; j < ARRAY_SIZE(fmtdesc_flags); j++) {
+                       for (size_t k = 0; k < ARRAY_SIZE(fmtdesc_fmts); k++) {
+                               fmtdesc->type = buf_types[i].val;
+                               fmtdesc->flags = fmtdesc_flags[j].val;
+                               fmtdesc->pixelformat = fmtdesc_fmts[k].val;
+
+                               ioctl(-1, VIDIOC_ENUM_FMT, fmtdesc);
+                               printf("ioctl(-1, %s, {index=233488606, type=%s"
+                                      ", flags=%s, description=",
+                                      XLAT_STR(VIDIOC_ENUM_FMT),
+                                      buf_types[i].str,
+                                      fmtdesc_flags[j].str);
+                               print_quoted_cstring((char *) fmtdesc->description,
+                                       sizeof(fmtdesc->description));
+                               printf(", pixelformat=%s}) = %ld (INJECTED)\n",
+                                      fmtdesc_fmts[k].str, inject_retval);
+
+                               fill_memory_ex(fmtdesc->description,
+                                              sizeof(fmtdesc->description),
+                                              (i * 9 + j) * 7 + k,
+                                              (k * 3 + j) * 11 + i + 5);
+                       }
+               }
+       }
+
+
+       /* VIDIOC_REQBUFS */
+       static const struct strval32 reqb_mems[] = {
+               { ARG_XLAT_UNKNOWN(0, "V4L2_MEMORY_???") },
+               { ARG_XLAT_KNOWN(0x1, "V4L2_MEMORY_MMAP") },
+               { ARG_XLAT_KNOWN(0x4, "V4L2_MEMORY_DMABUF") },
+               { ARG_XLAT_UNKNOWN(0x5, "V4L2_MEMORY_???") },
+               { ARG_XLAT_UNKNOWN(0xbadc0ded, "V4L2_MEMORY_???") },
+       };
+       struct v4l2_requestbuffers *reqb = tail_alloc(sizeof(*reqb));
+
+       fill_memory(reqb, sizeof(*reqb));
+       reqb->count = 0xfeedface;
+
+       ioctl(-1, VIDIOC_REQBUFS, 0);
+       printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_REQBUFS), inject_retval);
+
+       ioctl(-1, VIDIOC_REQBUFS, (char *) reqb + 1);
+       printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_REQBUFS), (char *) reqb + 1, inject_retval);
+
+       for (size_t i = 0; i < MAX(ARRAY_SIZE(buf_types),
+                                  ARRAY_SIZE(reqb_mems)); i++) {
+               reqb->type = buf_types[i % ARRAY_SIZE(buf_types)].val;
+               reqb->memory = reqb_mems[i % ARRAY_SIZE(reqb_mems)].val;
+
+               ioctl(-1, VIDIOC_REQBUFS, reqb);
+               printf("ioctl(-1, %s, {type=%s, memory=%s"
+                      ", count=4277009102 => 4277009102}) = %ld (INJECTED)\n",
+                      XLAT_STR(VIDIOC_REQBUFS),
+                      buf_types[i % ARRAY_SIZE(buf_types)].str,
+                      reqb_mems[i % ARRAY_SIZE(reqb_mems)].str,
+                      inject_retval);
+       }
+
+
+       /* VIDIOC_G_FMT, VIDIOC_S_FMT, VIDIOC_TRY_FMT */
+       static const struct strval32 fmt_cmds[] = {
+               { ARG_STR(VIDIOC_G_FMT) },
+               { ARG_STR(VIDIOC_S_FMT) },
+               { ARG_STR(VIDIOC_TRY_FMT) },
+       };
+
+       struct v4l2_format *fmt = tail_alloc(sizeof(*fmt));
+
+       for (size_t i = 0; i < ARRAY_SIZE(fmt_cmds); i++) {
+               ioctl(-1, fmt_cmds[i].val, 0);
+               printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+                      sprintxlat(fmt_cmds[i].str, fmt_cmds[i].val, NULL),
+                      inject_retval);
+
+               ioctl(-1, fmt_cmds[i].val, (char *) fmt + 1);
+               printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+                      sprintxlat(fmt_cmds[i].str, fmt_cmds[i].val, NULL),
+                      (char *) fmt + 1, inject_retval);
+
+               for (size_t j = 0; j < ARRAY_SIZE(buf_types); j++) {
+                       fill_memory(fmt, sizeof(*fmt));
+
+                       fmt->type = buf_types[j].val;
+                       if (!fill_fmt(fmt))
+                               continue;
+
+                       ioctl(-1, fmt_cmds[i].val, fmt);
+                       printf("ioctl(-1, %s, {type=%s",
+                              sprintxlat(fmt_cmds[i].str, fmt_cmds[i].val,
+                                         NULL),
+                              buf_types[j].str);
+                       print_fmt(", ", fmt);
+                       if (fmt_cmds[i].val != VIDIOC_G_FMT &&
+                           buf_types[j].val != V4L2_BUF_TYPE_VIDEO_OVERLAY &&
+                           buf_types[j].val != 8)
+                               print_fmt("} => {", fmt);
+                       printf("}) = %ld (INJECTED)\n", inject_retval);
+               }
+       }
+
+
+       /* VIDIOC_QUERYBUF, VIDIOC_QBUF, VIDIOC_DQBUF */
+       static const struct strval32 buf_cmds[] = {
+               { ARG_STR(VIDIOC_QUERYBUF) },
+               { ARG_STR(VIDIOC_QBUF) },
+               { ARG_STR(VIDIOC_DQBUF) },
+       };
+
+       kernel_v4l2_buffer_t *buf = tail_alloc(sizeof(*buf));
+
+       for (size_t i = 0; i < ARRAY_SIZE(buf_cmds); i++) {
+               ioctl(-1, buf_cmds[i].val, 0);
+               printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+                      sprintxlat(buf_cmds[i].str, buf_cmds[i].val, NULL),
+                      inject_retval);
+
+               ioctl(-1, buf_cmds[i].val, (char *) buf + 1);
+               printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+                      sprintxlat(buf_cmds[i].str, buf_cmds[i].val, NULL),
+                      (char *) buf + 1, inject_retval);
+
+               fill_memory(buf, sizeof(*buf));
+               buf->index     = 0xdeadc0de;
+               buf->type      = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+               buf->bytesused = 0xdecaffee;
+               buf->flags     = 0x1ff; /* TODO: update */
+               buf->field     = V4L2_FIELD_TOP;
+
+               buf->timestamp.tv_sec  = 0x1e55c0de;
+               buf->timestamp.tv_usec = 999999;
+
+               buf->timecode.type = V4L2_TC_TYPE_24FPS;
+               buf->timecode.flags = 0xbeefdeaf;
+
+               buf->memory    = V4L2_MEMORY_MMAP;
+               buf->m.offset  = 0xfacefeed;
+               buf->length    = 0xcafebed5;
+               buf->reserved  = 0xdeefaced;
+
+               ioctl(-1, buf_cmds[i].val, buf);
+               printf("ioctl(-1, %s, {type="
+                      XLAT_KNOWN(0x1, "V4L2_BUF_TYPE_VIDEO_CAPTURE")
+                      ", index=3735929054, memory="
+                      XLAT_KNOWN(0x1, "V4L2_MEMORY_MMAP")
+                      ", m.offset=0xfacefeed, length=3405692629"
+                      ", bytesused=3737845742, flags=" RAW("0x1ff")
+#if !XLAT_RAW
+                      XLAT_KNOWN(0x1ff, "V4L2_BUF_FLAG_MAPPED"
+                      "|V4L2_BUF_FLAG_QUEUED|V4L2_BUF_FLAG_DONE"
+                      "|V4L2_BUF_FLAG_KEYFRAME|V4L2_BUF_FLAG_PFRAME"
+                      "|V4L2_BUF_FLAG_BFRAME|V4L2_BUF_FLAG_ERROR"
+                      "|V4L2_BUF_FLAG_IN_REQUEST|V4L2_BUF_FLAG_TIMECODE") "|"
+                      XLAT_KNOWN(0, "V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN") "|"
+                      XLAT_KNOWN(0, "V4L2_BUF_FLAG_TSTAMP_SRC_EOF")
+#endif
+                      "%s, ...}) = %ld (INJECTED)\n",
+                      sprintxlat(buf_cmds[i].str, buf_cmds[i].val, NULL),
+                      buf_cmds[i].val == VIDIOC_DQBUF
+                       ? ", timestamp={tv_sec=508936414, tv_usec=999999}" : "",
+                      inject_retval);
+
+               buf->type      = V4L2_BUF_TYPE_VBI_CAPTURE;
+               buf->flags     = 0x268040;
+               buf->field     = 0xb;
+               buf->memory    = V4L2_MEMORY_USERPTR;
+               buf->m.userptr = (long) 0xdefaced0dec0ded1LL;
+
+               ioctl(-1, buf_cmds[i].val, buf);
+               printf("ioctl(-1, %s, {type="
+                      XLAT_KNOWN(0x4, "V4L2_BUF_TYPE_VBI_CAPTURE")
+                      ", index=3735929054, memory="
+                      XLAT_KNOWN(0x2, "V4L2_MEMORY_USERPTR")
+                      ", m.userptr=%p, length=3405692629"
+                      ", bytesused=3737845742, flags=" RAW("0x268040")
+#if !XLAT_RAW
+                      XLAT_KNOWN(0x200040, "V4L2_BUF_FLAG_ERROR|0x200000") "|"
+                      XLAT_UNKNOWN(0x8000, "V4L2_BUF_FLAG_TIMESTAMP_???") "|"
+                      XLAT_UNKNOWN(0x60000, "V4L2_BUF_FLAG_TSTAMP_SRC_???")
+#endif
+                      "%s, ...}) = %ld (INJECTED)\n",
+                      sprintxlat(buf_cmds[i].str, buf_cmds[i].val, NULL),
+                      (void *) (intptr_t) 0xdefaced0dec0ded1LL,
+                      buf_cmds[i].val == VIDIOC_DQBUF
+                       ? ", timestamp={tv_sec=508936414, tv_usec=999999}" : "",
+                      inject_retval);
+
+               buf->type      = 0x9;
+               buf->flags     = 0;
+
+               ioctl(-1, buf_cmds[i].val, buf);
+               printf("ioctl(-1, %s, {type="
+                      XLAT_KNOWN(0x9, "V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE")
+                      ", index=3735929054, memory="
+                      XLAT_KNOWN(0x2, "V4L2_MEMORY_USERPTR")
+                      ", m.userptr=%p, length=3405692629"
+                      ", bytesused=3737845742, flags=" RAW("0")
+#if !XLAT_RAW
+                      XLAT_KNOWN(0, "V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN") "|"
+                      XLAT_KNOWN(0, "V4L2_BUF_FLAG_TSTAMP_SRC_EOF")
+#endif
+                      "%s, ...}) = %ld (INJECTED)\n",
+                      sprintxlat(buf_cmds[i].str, buf_cmds[i].val, NULL),
+                      (void *) (intptr_t) 0xdefaced0dec0ded1LL,
+                      buf_cmds[i].val == VIDIOC_DQBUF
+                       ? ", timestamp={tv_sec=508936414, tv_usec=999999}" : "",
+                      inject_retval);
+
+               buf->type      = 0xa;
+               buf->memory    = V4L2_MEMORY_OVERLAY;
+               buf->flags     = 0x2000;
+
+               ioctl(-1, buf_cmds[i].val, buf);
+               printf("ioctl(-1, %s, {type="
+                      XLAT_KNOWN(0xa, "V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE")
+                      ", index=3735929054, memory="
+                      XLAT_KNOWN(0x3, "V4L2_MEMORY_OVERLAY")
+                      ", length=3405692629, bytesused=3737845742"
+                      ", flags=" RAW("0x2000")
+#if !XLAT_RAW
+                      XLAT_KNOWN(0x2000, "V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC")
+                      "|" XLAT_KNOWN(0, "V4L2_BUF_FLAG_TSTAMP_SRC_EOF")
+#endif
+                      "%s, ...}) = %ld (INJECTED)\n",
+                      sprintxlat(buf_cmds[i].str, buf_cmds[i].val, NULL),
+                      buf_cmds[i].val == VIDIOC_DQBUF
+                       ? ", timestamp={tv_sec=508936414, tv_usec=999999}" : "",
+                      inject_retval);
+       }
+
+
+       /* VIDIOC_G_FBUF, VIDIOC_S_FBUF */
+       static const struct strval32 fbuf_cmds[] = {
+               { ARG_STR(VIDIOC_G_FBUF) },
+               { ARG_STR(VIDIOC_S_FBUF) },
+       };
+
+       struct v4l2_framebuffer *fbuf = tail_alloc(sizeof(*fbuf));
+
+       for (size_t i = 0; i < ARRAY_SIZE(fbuf_cmds); i++) {
+               ioctl(-1, fbuf_cmds[i].val, 0);
+               printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+                      sprintxlat(fbuf_cmds[i].str, fbuf_cmds[i].val, NULL),
+                      inject_retval);
+
+               ioctl(-1, fbuf_cmds[i].val, (char *) fbuf + 1);
+               printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+                      sprintxlat(fbuf_cmds[i].str, fbuf_cmds[i].val, NULL),
+                      (char *) fbuf + 1, inject_retval);
+
+               fill_memory32(fbuf, sizeof(*fbuf));
+               fbuf->base = NULL;
+
+               ioctl(-1, fbuf_cmds[i].val, fbuf);
+               printf("ioctl(-1, %s, {capability=0x80a0c0e0, flags=0x80a0c0e1"
+                      ", base=NULL}) = %ld (INJECTED)\n",
+                      sprintxlat(fbuf_cmds[i].str, fbuf_cmds[i].val, NULL),
+                      inject_retval);
+       }
+
+
+       /* VIDIOC_G_PARM, VIDIOC_S_PARM */
+       static const struct strval32 sparm_cmds[] = {
+               { ARG_STR(VIDIOC_G_PARM) },
+               { ARG_STR(VIDIOC_S_PARM) },
+       };
+
+       struct v4l2_streamparm *sparm = tail_alloc(sizeof(*sparm));
+
+       for (size_t i = 0; i < ARRAY_SIZE(sparm_cmds); i++) {
+               ioctl(-1, sparm_cmds[i].val, 0);
+               printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+                      sprintxlat(sparm_cmds[i].str, sparm_cmds[i].val, NULL),
+                      inject_retval);
+
+               ioctl(-1, sparm_cmds[i].val, (char *) sparm + 1);
+               printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+                      sprintxlat(sparm_cmds[i].str, sparm_cmds[i].val, NULL),
+                      (char *) sparm + 1, inject_retval);
+
+               fill_memory32(sparm, sizeof(*sparm));
+
+               ioctl(-1, sparm_cmds[i].val, sparm);
+               printf("ioctl(-1, %s, {type="
+                      XLAT_UNKNOWN(0x80a0c0e0, "V4L2_BUF_TYPE_???")
+                      "}) = %ld (INJECTED)\n",
+                      sprintxlat(sparm_cmds[i].str, sparm_cmds[i].val, NULL),
+                      inject_retval);
+
+               sparm->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+
+               static const char *parm_str1 = "parm.capture={capability="
+                       XLAT_UNKNOWN(0x80a0c0e1, "V4L2_CAP_???")
+                       ", capturemode="
+                       XLAT_UNKNOWN(0x80a0c0e2, "V4L2_MODE_???")
+                       ", timeperframe=2158018787/2158018788"
+                       ", extendedmode=0x80a0c0e5, readbuffers=2158018790}";
+
+               ioctl(-1, sparm_cmds[i].val, sparm);
+               printf("ioctl(-1, %s, {type="
+                      XLAT_KNOWN(0x1, "V4L2_BUF_TYPE_VIDEO_CAPTURE")
+                      ", %s}%s%s%s) = %ld (INJECTED)\n",
+                      sprintxlat(sparm_cmds[i].str, sparm_cmds[i].val, NULL),
+                      parm_str1,
+                      sparm_cmds[i].val == VIDIOC_S_PARM ? " => {" : "",
+                      sparm_cmds[i].val == VIDIOC_S_PARM ? parm_str1 : "",
+                      sparm_cmds[i].val == VIDIOC_S_PARM ? "}" : "",
+                      inject_retval);
+
+               sparm->parm.capture.capability = 0x1000;
+               sparm->parm.capture.capturemode = 0x1;
+
+               static const char *parm_str2 = "parm.capture={capability="
+                       XLAT_KNOWN(0x1000, "V4L2_CAP_TIMEPERFRAME")
+                       ", capturemode="
+                       XLAT_KNOWN(0x1, "V4L2_MODE_HIGHQUALITY")
+                       ", timeperframe=2158018787/2158018788"
+                       ", extendedmode=0x80a0c0e5, readbuffers=2158018790}";
+
+               ioctl(-1, sparm_cmds[i].val, sparm);
+               printf("ioctl(-1, %s, {type="
+                      XLAT_KNOWN(0x1, "V4L2_BUF_TYPE_VIDEO_CAPTURE")
+                      ", %s}%s%s%s) = %ld (INJECTED)\n",
+                      sprintxlat(sparm_cmds[i].str, sparm_cmds[i].val, NULL),
+                      parm_str2,
+                      sparm_cmds[i].val == VIDIOC_S_PARM ? " => {" : "",
+                      sparm_cmds[i].val == VIDIOC_S_PARM ? parm_str2 : "",
+                      sparm_cmds[i].val == VIDIOC_S_PARM ? "}" : "",
+                      inject_retval);
+
+               sparm->type = 0x9;
+               sparm->parm.capture.capability = 0xdeadbeef;
+               sparm->parm.capture.capturemode = 0xadec0ded;
+
+               ioctl(-1, sparm_cmds[i].val, sparm);
+               printf("ioctl(-1, %s, {type="
+                      XLAT_KNOWN(0x9, "V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE")
+                      "}) = %ld (INJECTED)\n",
+                      sprintxlat(sparm_cmds[i].str, sparm_cmds[i].val, NULL),
+                      inject_retval);
+
+               fill_memory32(sparm, sizeof(*sparm));
+               sparm->type = V4L2_BUF_TYPE_VIDEO_OUTPUT;
+
+               static const char *parm_str3 = "parm.output={capability="
+                       XLAT_UNKNOWN(0x80a0c0e1, "V4L2_CAP_???")
+                       ", outputmode="
+                       XLAT_UNKNOWN(0x80a0c0e2, "V4L2_MODE_???")
+                       ", timeperframe=2158018787/2158018788"
+                       ", extendedmode=0x80a0c0e5, writebuffers=2158018790}";
+
+               ioctl(-1, sparm_cmds[i].val, sparm);
+               printf("ioctl(-1, %s, {type="
+                      XLAT_KNOWN(0x2, "V4L2_BUF_TYPE_VIDEO_OUTPUT")
+                      ", %s}%s%s%s) = %ld (INJECTED)\n",
+                      sprintxlat(sparm_cmds[i].str, sparm_cmds[i].val, NULL),
+                      parm_str3,
+                      sparm_cmds[i].val == VIDIOC_S_PARM ? " => {" : "",
+                      sparm_cmds[i].val == VIDIOC_S_PARM ? parm_str3 : "",
+                      sparm_cmds[i].val == VIDIOC_S_PARM ? "}" : "",
+                      inject_retval);
+
+       }
+
+
+       /* VIDIOC_G_STD, VIDIOC_S_STD */
+       static const struct strval32 stdid_cmds[] = {
+               { ARG_STR(VIDIOC_G_STD) },
+               { ARG_STR(VIDIOC_S_STD) },
+       };
+       static const struct strval64 stdids[] = {
+               { ARG_STR(0) },
+               { ARG_STR(0x1) },
+               { ARG_STR(0xb000) },
+               { ARG_STR(0x3ffffff) },
+               { ARG_STR(0xffffffff) },
+               { ARG_ULL_STR(0xbadc0deddeadface) },
+       };
+
+       v4l2_std_id *stdid = tail_alloc(sizeof(*stdid));
+
+       for (size_t i = 0; i < ARRAY_SIZE(stdid_cmds); i++) {
+               ioctl(-1, stdid_cmds[i].val, 0);
+               printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+                      sprintxlat(stdid_cmds[i].str, stdid_cmds[i].val, NULL),
+                      inject_retval);
+
+               ioctl(-1, stdid_cmds[i].val, (char *) stdid + 1);
+               printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+                      sprintxlat(stdid_cmds[i].str, stdid_cmds[i].val, NULL),
+                      (char *) stdid + 1, inject_retval);
+
+               for (size_t j = 0; j < ARRAY_SIZE(stdids); j++) {
+                       *stdid = stdids[j].val;
+
+                       ioctl(-1, stdid_cmds[i].val, stdid);
+                       printf("ioctl(-1, %s, [%s]) = %ld (INJECTED)\n",
+                              sprintxlat(stdid_cmds[i].str, stdid_cmds[i].val, NULL),
+                              stdids[j].str, inject_retval);
+
+               }
+       }
+
+
+       /* VIDIOC_ENUMSTD */
+       struct v4l2_standard *std = tail_alloc(sizeof(*std));
+
+       ioctl(-1, VIDIOC_ENUMSTD, 0);
+       printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_ENUMSTD), inject_retval);
+
+       ioctl(-1, VIDIOC_ENUMSTD, (char *) std + 1);
+       printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_ENUMSTD), (char *) std + 1, inject_retval);
+
+       for (size_t i = 0; i < ARRAY_SIZE(stdids); i++) {
+               fill_memory32(&std->frameperiod, sizeof(*std) -
+                             offsetof(struct v4l2_standard, frameperiod));
+               fill_memory_ex(std->name, sizeof(std->name), i * 47 + 1, 255);
+               std->index = 0xdeadface;
+               std->id = stdids[i].val;
+
+               ioctl(-1, VIDIOC_ENUMSTD, std);
+               printf("ioctl(-1, %s, {index=3735943886, name=",
+                      XLAT_STR(VIDIOC_ENUMSTD));
+               print_quoted_cstring((char *) std->name, sizeof(std->name));
+               printf(", frameperiod=2158018784/2158018785"
+                      ", framelines=2158018786}) = %ld (INJECTED)\n",
+                      inject_retval);
+       }
+
+
+       /* VIDIOC_ENUMINPUT */
+       static const struct strval32 input_types[] = {
+               { ARG_XLAT_UNKNOWN(0, "V4L2_INPUT_TYPE_???") },
+               { V4L2_INPUT_TYPE_TUNER,
+                 XLAT_KNOWN(0x1, "V4L2_INPUT_TYPE_TUNER") },
+               { V4L2_INPUT_TYPE_CAMERA,
+                 XLAT_KNOWN(0x2, "V4L2_INPUT_TYPE_CAMERA") },
+               { ARG_XLAT_UNKNOWN(0x4, "V4L2_INPUT_TYPE_???") },
+               { ARG_XLAT_UNKNOWN(0xdeadc0de, "V4L2_INPUT_TYPE_???") },
+       };
+
+       struct v4l2_input *input = tail_alloc(sizeof(*input));
+
+       ioctl(-1, VIDIOC_ENUMINPUT, 0);
+       printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_ENUMINPUT), inject_retval);
+
+       ioctl(-1, VIDIOC_ENUMINPUT, (char *) input + 1);
+       printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_ENUMINPUT), (char *) input + 1, inject_retval);
+
+       for (size_t i = 0; i < ARRAY_SIZE(stdids); i++) {
+               for (size_t j = 0; j < ARRAY_SIZE(input_types); j++) {
+                       fill_memory32(input, sizeof(*input));
+                       fill_memory_ex(input->name, sizeof(input->name),
+                                      i * 47 + 13, 255);
+                       input->type = input_types[j].val;
+                       input->std = stdids[i].val;
+
+                       ioctl(-1, VIDIOC_ENUMINPUT, input);
+                       printf("ioctl(-1, %s, {index=2158018784, name=",
+                              XLAT_STR(VIDIOC_ENUMINPUT));
+                       print_quoted_cstring((char *) input->name,
+                                            sizeof(input->name));
+                       printf(", type=%s}) = %ld (INJECTED)\n",
+                              input_types[j].str, inject_retval);
+               }
+       }
+
+
+       /* VIDIOC_G_CTRL, VIDIOC_S_CTRL */
+       static const struct strval32 ctrl_cmds[] = {
+               { ARG_STR(VIDIOC_G_CTRL) },
+               { ARG_STR(VIDIOC_S_CTRL) },
+       };
+
+       struct v4l2_control *ctrl = tail_alloc(sizeof(*ctrl));
+
+       for (size_t i = 0; i < ARRAY_SIZE(ctrl_cmds); i++) {
+               ioctl(-1, ctrl_cmds[i].val, 0);
+               printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+                      sprintxlat(ctrl_cmds[i].str, ctrl_cmds[i].val, NULL),
+                      inject_retval);
+
+               ioctl(-1, ctrl_cmds[i].val, (char *) ctrl + 1);
+               printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+                      sprintxlat(ctrl_cmds[i].str, ctrl_cmds[i].val, NULL),
+                      (char *) ctrl + 1, inject_retval);
+
+               /* NB: cid printing is mostly tested in ioctl_v4l2.c */
+               fill_memory32(ctrl, sizeof(*ctrl));
+               ioctl(-1, ctrl_cmds[i].val, ctrl);
+               printf("ioctl(-1, %s, {id=0x80a0c0e0"
+                      NRAW(" /* V4L2_CID_??? */")
+                      ", value=-2136948511%s}) = %ld (INJECTED)\n",
+                      sprintxlat(ctrl_cmds[i].str, ctrl_cmds[i].val, NULL),
+                      ctrl_cmds[i].val == VIDIOC_S_CTRL
+                       ? " => -2136948511" : "",
+                      inject_retval);
+       }
+
+
+       /* VIDIOC_G_TUNER, VIDIOC_S_TUNER */
+       static const struct strval32 tuner_cmds[] = {
+               { ARG_STR(VIDIOC_G_TUNER) },
+               { ARG_STR(VIDIOC_S_TUNER) },
+       };
+       static const struct strval32 tuner_types[] = {
+               { ARG_XLAT_UNKNOWN(0, "V4L2_TUNER_???") },
+               { ARG_XLAT_KNOWN(0x1, "V4L2_TUNER_RADIO") },
+               { ARG_XLAT_KNOWN(0x5, "V4L2_TUNER_RF") },
+               { ARG_XLAT_UNKNOWN(0x6, "V4L2_TUNER_???") },
+               { ARG_XLAT_UNKNOWN(0xdeadc0de, "V4L2_TUNER_???") },
+       };
+       static const struct strval32 tuner_caps[] = {
+               { ARG_STR(0) },
+               { ARG_XLAT_KNOWN(0x1fff, "V4L2_TUNER_CAP_LOW"
+                                "|V4L2_TUNER_CAP_NORM"
+                                "|V4L2_TUNER_CAP_HWSEEK_BOUNDED"
+                                "|V4L2_TUNER_CAP_HWSEEK_WRAP"
+                                "|V4L2_TUNER_CAP_STEREO|V4L2_TUNER_CAP_LANG2"
+                                "|V4L2_TUNER_CAP_LANG1|V4L2_TUNER_CAP_RDS"
+                                "|V4L2_TUNER_CAP_RDS_BLOCK_IO"
+                                "|V4L2_TUNER_CAP_RDS_CONTROLS"
+                                "|V4L2_TUNER_CAP_FREQ_BANDS"
+                                "|V4L2_TUNER_CAP_HWSEEK_PROG_LIM"
+                                "|V4L2_TUNER_CAP_1HZ") },
+               { ARG_XLAT_KNOWN(0xdeadc0de, "V4L2_TUNER_CAP_NORM"
+                                "|V4L2_TUNER_CAP_HWSEEK_BOUNDED"
+                                "|V4L2_TUNER_CAP_HWSEEK_WRAP"
+                                "|V4L2_TUNER_CAP_STEREO|V4L2_TUNER_CAP_LANG1"
+                                "|V4L2_TUNER_CAP_RDS|0xdeadc000") },
+               { ARG_XLAT_UNKNOWN(0xffffe000, "V4L2_TUNER_CAP_???") },
+       };
+       static const struct strval32 tuner_rxsc[] = {
+               { ARG_STR(0) },
+               { ARG_XLAT_KNOWN(0x1f, "V4L2_TUNER_SUB_MONO"
+                                "|V4L2_TUNER_SUB_STEREO|V4L2_TUNER_SUB_LANG2"
+                                "|V4L2_TUNER_SUB_LANG1|V4L2_TUNER_SUB_RDS") },
+               { ARG_XLAT_KNOWN(0xbeefface, "V4L2_TUNER_SUB_STEREO"
+                                "|V4L2_TUNER_SUB_LANG2|V4L2_TUNER_SUB_LANG1"
+                                "|0xbeeffac0") },
+               { ARG_XLAT_UNKNOWN(0xffffffe0, "V4L2_TUNER_SUB_???") },
+
+       };
+       static const struct strval32 tuner_amodes[] = {
+               { ARG_XLAT_KNOWN(0, "V4L2_TUNER_MODE_MONO") },
+               { ARG_XLAT_KNOWN(0x2, "V4L2_TUNER_MODE_LANG2") },
+               { ARG_XLAT_KNOWN(0x4, "V4L2_TUNER_MODE_LANG1_LANG2") },
+               { ARG_XLAT_UNKNOWN(0x5, "V4L2_TUNER_MODE_???") },
+               { ARG_XLAT_UNKNOWN(0xcaffeeed, "V4L2_TUNER_MODE_???") },
+       };
+       static const size_t tuner_iters = MAX(MAX(MAX(ARRAY_SIZE(tuner_types),
+                                                     ARRAY_SIZE(tuner_caps)),
+                                                 ARRAY_SIZE(tuner_rxsc)),
+                                             ARRAY_SIZE(tuner_amodes));
+
+       struct v4l2_tuner *tuner = tail_alloc(sizeof(*tuner));
+
+       for (size_t i = 0; i < ARRAY_SIZE(tuner_cmds); i++) {
+               ioctl(-1, tuner_cmds[i].val, 0);
+               printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+                      sprintxlat(tuner_cmds[i].str, tuner_cmds[i].val, NULL),
+                      inject_retval);
+
+               ioctl(-1, tuner_cmds[i].val, (char *) tuner + 1);
+               printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+                      sprintxlat(tuner_cmds[i].str, tuner_cmds[i].val, NULL),
+                      (char *) tuner + 1, inject_retval);
+
+               for (size_t j = 0; j < tuner_iters; j++) {
+                       fill_memory32(tuner, sizeof(*tuner));
+                       fill_memory_ex(tuner->name, sizeof(tuner->name),
+                                      j * 47 + 7, 255);
+                       tuner->type =
+                               tuner_types[j % ARRAY_SIZE(tuner_types)].val;
+                       tuner->capability =
+                               tuner_caps[j % ARRAY_SIZE(tuner_caps)].val;
+                       tuner->rxsubchans =
+                               tuner_rxsc[j % ARRAY_SIZE(tuner_rxsc)].val;
+                       tuner->audmode =
+                               tuner_amodes[j % ARRAY_SIZE(tuner_amodes)].val;
+
+                       ioctl(-1, tuner_cmds[i].val, tuner);
+                       printf("ioctl(-1, %s, {index=2158018784",
+                              sprintxlat(tuner_cmds[i].str,
+                                         tuner_cmds[i].val, NULL));
+                       for (size_t k = 0;
+                            k < (tuner_cmds[i].val == VIDIOC_S_TUNER ? 2 : 1);
+                            k++) {
+                               printf("%sname=", k ? "} => {" : ", ");
+                               print_quoted_cstring((char *) tuner->name,
+                                                    sizeof(tuner->name));
+                               printf(", type=%s, capability=%s"
+                                      ", rangelow=2158018795"
+                                      ", rangehigh=2158018796, rxsubchans=%s"
+                                      ", audmode=%s, signal=-2136948497"
+                                      ", afc=-2136948496",
+                                      tuner_types[j %
+                                                  ARRAY_SIZE(tuner_types)].str,
+                                      tuner_caps[j %
+                                                 ARRAY_SIZE(tuner_caps)].str,
+                                      tuner_rxsc[j %
+                                                 ARRAY_SIZE(tuner_rxsc)].str,
+                                      tuner_amodes[j %
+                                                ARRAY_SIZE(tuner_amodes)].str);
+                       }
+                       printf("}) = %ld (INJECTED)\n", inject_retval);
+               }
+       }
+
+
+       /* VIDIOC_QUERYCTRL */
+       static const struct strval32 cids[] = {
+               { ARG_XLAT_UNKNOWN(0, "V4L2_CID_???") },
+               { ARG_XLAT_UNKNOWN(0x97abcd, "V4L2_CID_???") },
+               { ARG_XLAT_KNOWN(0x980000, "V4L2_CTRL_CLASS_USER+0") },
+               { ARG_XLAT_KNOWN(0x990a64,
+                                "V4L2_CID_MPEG_VIDEO_H264_CPB_SIZE") },
+               { ARG_XLAT_KNOWN(0xa31234, "V4L2_CTRL_CLASS_DETECT+0x1234") },
+               { ARG_XLAT_UNKNOWN(0xa40000, "V4L2_CID_???") },
+               { 0xdeadc0de,
+#if XLAT_RAW
+                 "0xdeadc0de"
+#else
+                 XLAT_KNOWN(0xc0000000, "V4L2_CTRL_FLAG_NEXT_CTRL"
+                                        "|V4L2_CTRL_FLAG_NEXT_COMPOUND")
+                 "|0x1eadc0de /* V4L2_CID_??? */"
+#endif
+                             },
+       };
+       static const struct strval32 ctrl_types[] = {
+               { ARG_XLAT_UNKNOWN(0, "V4L2_CTRL_TYPE_???") },
+               { ARG_XLAT_KNOWN(0x1, "V4L2_CTRL_TYPE_INTEGER") },
+               { ARG_XLAT_KNOWN(0x2, "V4L2_CTRL_TYPE_BOOLEAN") },
+               { ARG_XLAT_KNOWN(0x3, "V4L2_CTRL_TYPE_MENU") },
+               { ARG_XLAT_KNOWN(0x4, "V4L2_CTRL_TYPE_BUTTON") },
+               { ARG_XLAT_KNOWN(0x5, "V4L2_CTRL_TYPE_INTEGER64") },
+               { ARG_XLAT_KNOWN(0x6, "V4L2_CTRL_TYPE_CTRL_CLASS") },
+               { ARG_XLAT_KNOWN(0x7, "V4L2_CTRL_TYPE_STRING") },
+               { ARG_XLAT_KNOWN(0x8, "V4L2_CTRL_TYPE_BITMASK") },
+               { ARG_XLAT_KNOWN(0x9, "V4L2_CTRL_TYPE_INTEGER_MENU") },
+               { ARG_XLAT_UNKNOWN(0xa, "V4L2_CTRL_TYPE_???") },
+               { ARG_XLAT_UNKNOWN(0xff, "V4L2_CTRL_TYPE_???") },
+               { ARG_XLAT_KNOWN(0x100, "V4L2_CTRL_TYPE_U8") },
+               { ARG_XLAT_KNOWN(0x101, "V4L2_CTRL_TYPE_U16") },
+               { ARG_XLAT_KNOWN(0x102, "V4L2_CTRL_TYPE_U32") },
+               { ARG_XLAT_UNKNOWN(0x103, "V4L2_CTRL_TYPE_???") },
+               { ARG_XLAT_UNKNOWN(0x104, "V4L2_CTRL_TYPE_???") },
+               { ARG_XLAT_UNKNOWN(0x105, "V4L2_CTRL_TYPE_???") },
+               { ARG_XLAT_KNOWN(0x106, "V4L2_CTRL_TYPE_AREA") },
+               { ARG_XLAT_UNKNOWN(0x107, "V4L2_CTRL_TYPE_???") },
+               { ARG_XLAT_UNKNOWN(0xdeadc0de, "V4L2_CTRL_TYPE_???") },
+       };
+       static const struct strval32 ctrl_flags[] = {
+               { ARG_STR(0) },
+               { ARG_XLAT_KNOWN(0x7ff, "V4L2_CTRL_FLAG_DISABLED"
+                                       "|V4L2_CTRL_FLAG_GRABBED"
+                                       "|V4L2_CTRL_FLAG_READ_ONLY"
+                                       "|V4L2_CTRL_FLAG_UPDATE"
+                                       "|V4L2_CTRL_FLAG_INACTIVE"
+                                       "|V4L2_CTRL_FLAG_SLIDER"
+                                       "|V4L2_CTRL_FLAG_WRITE_ONLY"
+                                       "|V4L2_CTRL_FLAG_VOLATILE"
+                                       "|V4L2_CTRL_FLAG_HAS_PAYLOAD"
+                                       "|V4L2_CTRL_FLAG_EXECUTE_ON_WRITE"
+                                       "|V4L2_CTRL_FLAG_MODIFY_LAYOUT") },
+               { ARG_XLAT_KNOWN(0xbeefface, "V4L2_CTRL_FLAG_GRABBED"
+                                            "|V4L2_CTRL_FLAG_READ_ONLY"
+                                            "|V4L2_CTRL_FLAG_UPDATE"
+                                            "|V4L2_CTRL_FLAG_WRITE_ONLY"
+                                            "|V4L2_CTRL_FLAG_VOLATILE"
+                                            "|V4L2_CTRL_FLAG_EXECUTE_ON_WRITE"
+                                            "|0xbeeff800") },
+               { ARG_XLAT_UNKNOWN(0xfffff800, "V4L2_CTRL_FLAG_???") },
+       };
+       static const size_t qctrl_iters = MAX(MAX(ARRAY_SIZE(cids),
+                                                 ARRAY_SIZE(ctrl_types)),
+                                              ARRAY_SIZE(ctrl_flags));
+
+       struct v4l2_queryctrl *qctrl = tail_alloc(sizeof(*qctrl));
+
+       ioctl(-1, VIDIOC_QUERYCTRL, 0);
+       printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_QUERYCTRL), inject_retval);
+
+       ioctl(-1, VIDIOC_QUERYCTRL, (char *) qctrl + 1);
+       printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_QUERYCTRL), (char *) qctrl + 1, inject_retval);
+
+       for (size_t i = 0; i < qctrl_iters; i++) {
+               fill_memory32(qctrl, sizeof(*qctrl));
+               fill_memory_ex(qctrl->name, sizeof(qctrl->name),
+                              i * 47 + 5, 255);
+               qctrl->id    = cids[i % ARRAY_SIZE(cids)].val;
+               qctrl->type  = ctrl_types[i % ARRAY_SIZE(ctrl_types)].val;
+               qctrl->flags = ctrl_flags[i % ARRAY_SIZE(ctrl_flags)].val;
+
+               if (i % 2)
+                       memset(qctrl->reserved, 0, sizeof(qctrl->reserved));
+
+               ioctl(-1, VIDIOC_QUERYCTRL, qctrl);
+               printf("ioctl(-1, %s, {id=%s, type=%s, name=",
+                      XLAT_STR(VIDIOC_QUERYCTRL),
+                      cids[i % ARRAY_SIZE(cids)].str,
+                      ctrl_types[i % ARRAY_SIZE(ctrl_types)].str);
+               print_quoted_cstring((char *) qctrl->name, sizeof(qctrl->name));
+#if VERBOSE
+               printf(", minimum=-2136948502, maximum=-2136948501"
+                      ", step=-2136948500, default_value=-2136948499"
+                      ", flags=%s%s",
+                      ctrl_flags[i % ARRAY_SIZE(ctrl_flags)].str,
+                      i % 2 ? "" : ", reserved=[0x80a0c0ef, 0x80a0c0f0]");
+#else
+               printf(", ...");
+#endif
+               printf("}) = %ld (INJECTED)\n", inject_retval);
+       }
+
+
+       /* VIDIOC_G_INPUT, VIDIOC_S_INPUT */
+       static const struct strval32 input_cmds[] = {
+               { ARG_STR(VIDIOC_G_INPUT) },
+               { ARG_STR(VIDIOC_S_INPUT) },
+       };
+       static const struct strval32 inputids[] = {
+               { ARG_STR(0) },
+               { ARG_STR(1) },
+               { ARG_STR(1578221295) },
+               { ARG_STR(31415926) },
+               { ARG_STR(4294967295) },
+       };
+
+       int *inputid = tail_alloc(sizeof(*inputid));
+
+       for (size_t i = 0; i < ARRAY_SIZE(input_cmds); i++) {
+               ioctl(-1, input_cmds[i].val, 0);
+               printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+                      sprintxlat(input_cmds[i].str, input_cmds[i].val, NULL),
+                      inject_retval);
+
+               ioctl(-1, input_cmds[i].val, (char *) inputid + 1);
+               printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+                      sprintxlat(input_cmds[i].str, input_cmds[i].val, NULL),
+                      (char *) inputid + 1, inject_retval);
+
+               for (size_t j = 0; j < ARRAY_SIZE(inputids); j++) {
+                       *inputid = inputids[j].val;
+
+                       ioctl(-1, input_cmds[i].val, inputid);
+                       printf("ioctl(-1, %s, [%s]) = %ld (INJECTED)\n",
+                              sprintxlat(input_cmds[i].str, input_cmds[i].val,
+                                         NULL),
+                              inputids[j].str, inject_retval);
+
+               }
+       }
+
+
+       /* VIDIOC_CROPCAP */
+       struct v4l2_cropcap *ccap = tail_alloc(sizeof(*ccap));
+
+       fill_memory32(ccap, sizeof(*ccap));
+
+       ioctl(-1, VIDIOC_CROPCAP, 0);
+       printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_CROPCAP), inject_retval);
+
+       ioctl(-1, VIDIOC_CROPCAP, (char *) ccap + 1);
+       printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_CROPCAP), (char *) ccap + 1, inject_retval);
+
+       for (size_t i = 0; i < ARRAY_SIZE(buf_types); i++) {
+               ccap->type = buf_types[i].val;
+
+               ioctl(-1, VIDIOC_CROPCAP, ccap);
+               printf("ioctl(-1, %s, {type=%s"
+                      ", bounds={left=-2136948511, top=-2136948510"
+                      ", width=2158018787, height=2158018788}"
+                      ", defrect={left=-2136948507, top=-2136948506"
+                      ", width=2158018791, height=2158018792}"
+                      ", pixelaspect=2158018793/2158018794})"
+                      " = %ld (INJECTED)\n",
+                      XLAT_STR(VIDIOC_CROPCAP),
+                      buf_types[i].str, inject_retval);
+       }
+
+
+       /* VIDIOC_G_CROP, VIDIOC_S_CROP */
+       static const struct strval32 crop_cmds[] = {
+               { ARG_STR(VIDIOC_G_CROP) },
+               { ARG_STR(VIDIOC_S_CROP) },
+       };
+       struct v4l2_crop *crop = tail_alloc(sizeof(*crop));
+
+       for (size_t i = 0; i < ARRAY_SIZE(crop_cmds); i++) {
+               fill_memory32(crop, sizeof(*crop));
+
+               ioctl(-1, crop_cmds[i].val, 0);
+               printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+                      sprintxlat(crop_cmds[i].str, crop_cmds[i].val, NULL),
+                      inject_retval);
+
+               ioctl(-1, crop_cmds[i].val, (char *) crop + 1);
+               printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+                      sprintxlat(crop_cmds[i].str, crop_cmds[i].val, NULL),
+                      (char *) crop + 1, inject_retval);
+
+               for (size_t j = 0; j < ARRAY_SIZE(buf_types); j++) {
+                       crop->type = buf_types[j].val;
+
+                       ioctl(-1, crop_cmds[i].val, crop);
+                       printf("ioctl(-1, %s, {type=%s, c={left=-2136948511"
+                              ", top=-2136948510, width=2158018787"
+                              ", height=2158018788}}) = %ld (INJECTED)\n",
+                              sprintxlat(crop_cmds[i].str, crop_cmds[i].val,
+                                         NULL),
+                              buf_types[j].str, inject_retval);
+               }
+       }
+
+
+#ifdef VIDIOC_S_EXT_CTRLS
+       /* VIDIOC_S_EXT_CTRLS, VIDIOC_TRY_EXT_CTRLS, VIDIOC_G_EXT_CTRLS */
+       static const struct strval32 ectrl_cmds[] = {
+               { ARG_STR(VIDIOC_S_EXT_CTRLS) },
+               { ARG_STR(VIDIOC_TRY_EXT_CTRLS) },
+               { ARG_STR(VIDIOC_G_EXT_CTRLS) },
+       };
+       /* static const struct strval32 ectrl_which = {
+       }; */
+
+       struct v4l2_ext_controls *ectrls = tail_alloc(sizeof(*ectrls));
+       /* struct v4l2_ext_control *ectrl = tail_alloc(sizeof(*ectrl) * 2); */
+
+       for (size_t i = 0; i < ARRAY_SIZE(ectrl_cmds); i++) {
+               fill_memory32(ectrls, sizeof(*ectrls));
+
+               ioctl(-1, ectrl_cmds[i].val, 0);
+               printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+                      sprintxlat(ectrl_cmds[i].str, ectrl_cmds[i].val, NULL),
+                      inject_retval);
+
+               ioctl(-1, ectrl_cmds[i].val, (char *) ectrls + 1);
+               printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+                      sprintxlat(ectrl_cmds[i].str, ectrl_cmds[i].val, NULL),
+                      (char *) ectrls + 1, inject_retval);
+       }
+
+#endif /* VIDIOC_S_EXT_CTRLS */
+
+
+#ifdef HAVE_STRUCT_V4L2_FRMSIZEENUM
+       /* VIDIOC_ENUM_FRAMESIZES */
+       static const struct strval32 frmsz_simple_types[] = {
+               { ARG_XLAT_UNKNOWN(0, "V4L2_FRMSIZE_TYPE_???") },
+               { ARG_XLAT_KNOWN(0x2, "V4L2_FRMSIZE_TYPE_CONTINUOUS") },
+               { ARG_XLAT_UNKNOWN(0x4, "V4L2_FRMSIZE_TYPE_???") },
+               { ARG_XLAT_UNKNOWN(0xdeadf157, "V4L2_FRMSIZE_TYPE_???") },
+       };
+
+       struct v4l2_frmsizeenum *fse = tail_alloc(sizeof(*fse));
+
+       ioctl(-1, VIDIOC_ENUM_FRAMESIZES, 0);
+       printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_ENUM_FRAMESIZES), inject_retval);
+
+       ioctl(-1, VIDIOC_ENUM_FRAMESIZES, (char *) fse + 1);
+       printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_ENUM_FRAMESIZES), (char *) fse + 1,
+              inject_retval);
+
+       fill_memory32(fse, sizeof(*fse));
+       fse->type = V4L2_FRMSIZE_TYPE_DISCRETE;
+
+       ioctl(-1, VIDIOC_ENUM_FRAMESIZES, fse);
+       printf("ioctl(-1, %s, {index=2158018784, pixel_format="
+              RAW("0x80a0c0e1")
+              NRAW("v4l2_fourcc('\\xe1', '\\xc0', '\\xa0', '\\x80')")
+              ", type=" XLAT_KNOWN(0x1, "V4L2_FRMSIZE_TYPE_DISCRETE")
+              ", discrete={width=2158018787, height=2158018788}"
+              "}) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_ENUM_FRAMESIZES), inject_retval);
+
+       fse->pixel_format = 0x5c22270d;
+       fse->type = V4L2_FRMSIZE_TYPE_STEPWISE;
+
+       ioctl(-1, VIDIOC_ENUM_FRAMESIZES, fse);
+       printf("ioctl(-1, %s, {index=2158018784, pixel_format="
+              RAW("0x5c22270d")
+              NRAW("v4l2_fourcc('\\x0d', '\\\'', '\"', '\\\\')")
+              ", type=" XLAT_KNOWN(0x3, "V4L2_FRMSIZE_TYPE_STEPWISE")
+              ", stepwise={min_width=2158018787, max_width=2158018788"
+              ", step_width=2158018789, min_height=2158018790"
+              ", max_height=2158018791, step_height=2158018792}"
+              "}) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_ENUM_FRAMESIZES), inject_retval);
+
+       for (size_t i = 0; i < ARRAY_SIZE(frmsz_simple_types); i++) {
+               fill_memory32(fse, sizeof(*fse));
+               fse->type = frmsz_simple_types[i].val;
+
+               ioctl(-1, VIDIOC_ENUM_FRAMESIZES, fse);
+               printf("ioctl(-1, %s, {index=2158018784, pixel_format="
+                      RAW("0x80a0c0e1")
+                      NRAW("v4l2_fourcc('\\xe1', '\\xc0', '\\xa0', '\\x80')")
+                      ", type=%s}) = %ld (INJECTED)\n",
+                      XLAT_STR(VIDIOC_ENUM_FRAMESIZES),
+                      frmsz_simple_types[i].str, inject_retval);
+
+       }
+#endif /* HAVE_STRUCT_V4L2_FRMSIZEENUM */
+
+
+#ifdef HAVE_STRUCT_V4L2_FRMIVALENUM
+       /* VIDIOC_ENUM_FRAMEINTERVALS */
+       static const struct strval32 frmival_simple_types[] = {
+               { ARG_XLAT_UNKNOWN(0, "V4L2_FRMIVAL_TYPE_???") },
+               { ARG_XLAT_UNKNOWN(0x4, "V4L2_FRMIVAL_TYPE_???") },
+               { ARG_XLAT_UNKNOWN(0xdeadf157, "V4L2_FRMIVAL_TYPE_???") },
+       };
+       static const struct strval32 frmival_step_types[] = {
+               { ARG_XLAT_KNOWN(0x2, "V4L2_FRMIVAL_TYPE_CONTINUOUS") },
+               { ARG_XLAT_KNOWN(0x3, "V4L2_FRMIVAL_TYPE_STEPWISE") },
+       };
+
+       struct v4l2_frmivalenum *fie = tail_alloc(sizeof(*fie));
+
+       ioctl(-1, VIDIOC_ENUM_FRAMEINTERVALS, 0);
+       printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_ENUM_FRAMEINTERVALS), inject_retval);
+
+       ioctl(-1, VIDIOC_ENUM_FRAMEINTERVALS, (char *) fie + 1);
+       printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_ENUM_FRAMEINTERVALS), (char *) fie + 1,
+              inject_retval);
+
+       fill_memory32(fie, sizeof(*fie));
+       fie->type = V4L2_FRMIVAL_TYPE_DISCRETE;
+
+       ioctl(-1, VIDIOC_ENUM_FRAMEINTERVALS, fie);
+       printf("ioctl(-1, %s, {index=2158018784, pixel_format="
+              RAW("0x80a0c0e1")
+              NRAW("v4l2_fourcc('\\xe1', '\\xc0', '\\xa0', '\\x80')")
+              ", width=2158018786, height=2158018787"
+              ", type=" XLAT_KNOWN(0x1, "V4L2_FRMIVAL_TYPE_DISCRETE")
+              ", discrete=2158018789/2158018790}) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_ENUM_FRAMEINTERVALS), inject_retval);
+
+       fie->pixel_format = 0x5c22270d;
+
+       for (size_t i = 0; i < ARRAY_SIZE(frmival_step_types); i++) {
+               fie->type = frmival_step_types[i].val;
+
+               ioctl(-1, VIDIOC_ENUM_FRAMEINTERVALS, fie);
+               printf("ioctl(-1, %s, {index=2158018784, pixel_format="
+                      RAW("0x5c22270d")
+                      NRAW("v4l2_fourcc('\\x0d', '\\\'', '\"', '\\\\')")
+                      ", width=2158018786, height=2158018787, type=%s"
+                      ", stepwise={min=2158018789/2158018790"
+                      ", max=2158018791/2158018792"
+                      ", step=2158018793/2158018794}}) = %ld (INJECTED)\n",
+                      XLAT_STR(VIDIOC_ENUM_FRAMEINTERVALS),
+                      frmival_step_types[i].str, inject_retval);
+       }
+
+       for (size_t i = 0; i < ARRAY_SIZE(frmival_simple_types); i++) {
+               fill_memory32(fie, sizeof(*fie));
+               fie->type = frmival_simple_types[i].val;
+
+               ioctl(-1, VIDIOC_ENUM_FRAMEINTERVALS, fie);
+               printf("ioctl(-1, %s, {index=2158018784, pixel_format="
+                      RAW("0x80a0c0e1")
+                      NRAW("v4l2_fourcc('\\xe1', '\\xc0', '\\xa0', '\\x80')")
+                      ", width=2158018786, height=2158018787, type=%s})"
+                      " = %ld (INJECTED)\n",
+                      XLAT_STR(VIDIOC_ENUM_FRAMEINTERVALS),
+                      frmival_simple_types[i].str, inject_retval);
+
+       }
+#endif /* HAVE_STRUCT_V4L2_FRMIVALENUM */
+
+
+#ifdef HAVE_STRUCT_V4L2_CREATE_BUFFERS
+       /* VIDIOC_CREATE_BUFS */
+       struct v4l2_create_buffers *cbuf = tail_alloc(sizeof(*cbuf));
+
+       fill_memory32(cbuf, sizeof(*cbuf));
+
+       ioctl(-1, VIDIOC_CREATE_BUFS, 0);
+       printf("ioctl(-1, %s, NULL) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_CREATE_BUFS), inject_retval);
+
+       ioctl(-1, VIDIOC_CREATE_BUFS, (char *) cbuf + 1);
+       printf("ioctl(-1, %s, %p) = %ld (INJECTED)\n",
+              XLAT_STR(VIDIOC_CREATE_BUFS), (char *) cbuf + 1, inject_retval);
+
+       for (size_t i = 0; i < MAX(ARRAY_SIZE(buf_types),
+                                  ARRAY_SIZE(reqb_mems)); i++) {
+               cbuf->memory = reqb_mems[i % ARRAY_SIZE(reqb_mems)].val;
+               cbuf->format.type = buf_types[i % ARRAY_SIZE(buf_types)].val;
+               if (!fill_fmt(&cbuf->format))
+                       continue;
+
+               ioctl(-1, VIDIOC_CREATE_BUFS, cbuf);
+               printf("ioctl(-1, %s, {count=2158018785, memory=%s"
+                      ", format={type=%s",
+                      XLAT_STR(VIDIOC_CREATE_BUFS),
+                      reqb_mems[i % ARRAY_SIZE(reqb_mems)].str,
+                      buf_types[i % ARRAY_SIZE(buf_types)].str);
+               print_fmt(", ", &cbuf->format);
+               printf("}}) = %ld ({index=2158018784, count=2158018785})"
+                      " (INJECTED)\n", inject_retval);
+       }
+#endif /* HAVE_STRUCT_V4L2_CREATE_BUFFERS */
+
+       puts("+++ exited with 0 +++");
+
+       return 0;
+}
diff --git a/tests/ioctl_v4l2-success.gen.test b/tests/ioctl_v4l2-success.gen.test
new file mode 100755 (executable)
index 0000000..9037649
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2-success +ioctl-success.sh -a29); do not edit.
+set -- -a29
+. "${srcdir=.}/ioctl-success.sh"
diff --git a/tests/ioctl_v4l2-v-Xabbrev.c b/tests/ioctl_v4l2-v-Xabbrev.c
new file mode 100644 (file)
index 0000000..3e40ce3
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_ABBREV 1
+#include "ioctl_v4l2-v.c"
diff --git a/tests/ioctl_v4l2-v-Xabbrev.gen.test b/tests/ioctl_v4l2-v-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..64f2eac
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2-v-Xabbrev +ioctl.test -v -Xabbrev); do not edit.
+set -- -v -Xabbrev
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_v4l2-v-Xraw.c b/tests/ioctl_v4l2-v-Xraw.c
new file mode 100644 (file)
index 0000000..42d6610
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "ioctl_v4l2-v.c"
diff --git a/tests/ioctl_v4l2-v-Xraw.gen.test b/tests/ioctl_v4l2-v-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..8fb5883
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2-v-Xraw +ioctl.test -v -Xraw); do not edit.
+set -- -v -Xraw
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_v4l2-v-Xverbose.c b/tests/ioctl_v4l2-v-Xverbose.c
new file mode 100644 (file)
index 0000000..6230f9a
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "ioctl_v4l2-v.c"
diff --git a/tests/ioctl_v4l2-v-Xverbose.gen.test b/tests/ioctl_v4l2-v-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..72dcde6
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2-v-Xverbose +ioctl.test -v -Xverbose); do not edit.
+set -- -v -Xverbose
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_v4l2-v.c b/tests/ioctl_v4l2-v.c
new file mode 100644 (file)
index 0000000..dcb6c24
--- /dev/null
@@ -0,0 +1,3 @@
+/* This file is part of ioctl_v4l2-v strace test. */
+#define VERBOSE 1
+#include "ioctl_v4l2.c"
diff --git a/tests/ioctl_v4l2-v.gen.test b/tests/ioctl_v4l2-v.gen.test
new file mode 100755 (executable)
index 0000000..c5fe341
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2-v +ioctl.test -v); do not edit.
+set -- -v
+. "${srcdir=.}/ioctl.test"
index 54e9ee7c6bd933dc52873e6c111426211d104de3..c52798a4cbad0bdc2d9bd1396af9b815ddb07200 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -8,11 +8,23 @@
 
 #include "tests.h"
 #include <errno.h>
+#include <stdint.h>
 #include <stdio.h>
 #include <string.h>
 #include <sys/ioctl.h>
-#include <linux/types.h>
-#include <linux/videodev2.h>
+#include "kernel_v4l2_types.h"
+
+#define XLAT_MACROS_ONLY
+# include "xlat/v4l2_ioctl_cmds.h"
+#undef XLAT_MACROS_ONLY
+
+#ifndef V4L2_CTRL_FLAG_NEXT_CTRL
+# define V4L2_CTRL_FLAG_NEXT_CTRL 0x80000000
+#endif
+
+#ifndef V4L2_CTRL_CLASS_DETECT
+# define V4L2_CTRL_CLASS_DETECT 0x00a30000
+#endif
 
 #define cc0(arg) ((unsigned int) (unsigned char) (arg))
 #define cc1(arg) ((unsigned int) (unsigned char) ((unsigned int) (arg) >> 8))
@@ -70,8 +82,21 @@ init_v4l2_format(struct v4l2_format *const f,
                     i < ARRAY_SIZE(f->fmt.pix_mp.plane_fmt);
                     i++) {
                        cur_pix[i].sizeimage = 0x1e3c531c | i;
-                       cur_pix[i].bytesperline = 0xa983d721 | i;
+                       if (sizeof(cur_pix[i].bytesperline) ==
+                           sizeof(uint32_t)) {
+                               cur_pix[i].bytesperline = 0xa983d721 | i;
+                       } else {
+# if WORDS_BIGENDIAN
+                               cur_pix[i].bytesperline = 0xa983;
+                               cur_pix[i].reserved[0] = 0xd721 | i;
+# else
+                               cur_pix[i].bytesperline = 0xd721 | i;
+                               cur_pix[i].reserved[0] = 0xa983;
+# endif
+                       }
                }
+               if (buf_type == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE)
+                       f->fmt.pix_mp.num_planes = 1;
                break;
        }
 #endif
@@ -85,10 +110,10 @@ init_v4l2_format(struct v4l2_format *const f,
                f->fmt.win.w.height = 0xbbd886c8;
                f->fmt.win.field = V4L2_FIELD_ANY;
                f->fmt.win.chromakey = 0xdb1f991f;
-               f->fmt.win.clipcount = 2;
+               f->fmt.win.clipcount =
+                       buf_type == V4L2_BUF_TYPE_VIDEO_OVERLAY ? 3 : 2;
                f->fmt.win.clips =
-                       tail_alloc(sizeof(*f->fmt.win.clips) *
-                       f->fmt.win.clipcount);
+                       tail_alloc(sizeof(*f->fmt.win.clips) * 2);
                f->fmt.win.clips[0].c.left = 0x3313d36e;
                f->fmt.win.clips[0].c.top = 0xcdffe510;
                f->fmt.win.clips[0].c.width = 0x2064f3a8;
@@ -101,6 +126,9 @@ init_v4l2_format(struct v4l2_format *const f,
                f->fmt.win.bitmap = (void *) -2UL;
 #ifdef HAVE_STRUCT_V4L2_WINDOW_GLOBAL_ALPHA
                f->fmt.win.global_alpha = 0xce;
+#else
+               ((uint8_t *) &f->fmt.win)[offsetofend(struct v4l2_window,
+                                                     bitmap)] = 0xce;
 #endif
                break;
        case V4L2_BUF_TYPE_VBI_CAPTURE:
@@ -138,7 +166,12 @@ init_v4l2_format(struct v4l2_format *const f,
        case V4L2_BUF_TYPE_SDR_OUTPUT:
                f->fmt.sdr.pixelformat = sf_magic;
 # ifdef HAVE_STRUCT_V4L2_SDR_FORMAT_BUFFERSIZE
-               f->fmt.sdr.buffersize = 0x25afabfb;
+               if (sizeof(f->fmt.sdr.buffersize == sizeof(uint32_t)))
+                       f->fmt.sdr.buffersize = 0x25afabfb;
+               else
+                       ((uint32_t *) &f->fmt.sdr)[1] = 0x25afabfb;
+# else
+               ((uint32_t *) &f->fmt.sdr)[1] = 0x25afabfb;
 # endif
                break;
 #endif
@@ -155,8 +188,8 @@ init_v4l2_format(struct v4l2_format *const f,
 
 static void
 dprint_ioctl_v4l2(struct v4l2_format *const f,
-                 const char *request, const unsigned int buf_type,
-                 const char *buf_type_string)
+                 XLAT_SEL(unsigned reqval, const char *reqstr),
+                 const unsigned int buf_type, const char *buf_type_string)
 {
        int saved_errno;
 
@@ -164,12 +197,16 @@ dprint_ioctl_v4l2(struct v4l2_format *const f,
        case V4L2_BUF_TYPE_VIDEO_CAPTURE:
        case V4L2_BUF_TYPE_VIDEO_OUTPUT:
                saved_errno = errno;
-               printf("ioctl(-1, %s, {type=%s"
+               printf("ioctl(-1, " XLAT_FMT ", {type=" XLAT_FMT
                       ", fmt.pix={width=%u, height=%u, pixelformat=",
-                      request,
-                      buf_type_string,
+                      XLAT_SEL(reqval, reqstr),
+                      XLAT_SEL(buf_type, buf_type_string),
                       f->fmt.pix.width, f->fmt.pix.height);
 
+#if XLAT_RAW
+               printf("%#x", buf_type == V4L2_BUF_TYPE_VIDEO_CAPTURE
+                             ? magic : pf_magic);
+#else /* !XLAT_RAW */
                if (buf_type == V4L2_BUF_TYPE_VIDEO_CAPTURE)
                        printf("v4l2_fourcc('\\x%x', '\\x%x', '\\x%x', '\\x%x')",
                               cc0(magic), cc1(magic), cc2(magic), cc3(magic));
@@ -178,12 +215,15 @@ dprint_ioctl_v4l2(struct v4l2_format *const f,
                               "/* V4L2_PIX_FMT_SPCA508 */",
                               cc0(pf_magic), cc1(pf_magic), cc2(pf_magic),
                               cc3(pf_magic));
+#endif /* XLAT_RAW */
 
                errno = saved_errno;
-               printf(", field=V4L2_FIELD_NONE, bytesperline=%u, sizeimage=%u"
-                      ", colorspace=V4L2_COLORSPACE_JPEG}}) = -1 EBADF (%m)\n",
+               printf(", field=" XLAT_FMT ", bytesperline=%u, sizeimage=%u"
+                      ", colorspace=" XLAT_FMT "}}) = -1 EBADF (%m)\n",
+                      XLAT_ARGS(V4L2_FIELD_NONE),
                       f->fmt.pix.bytesperline,
-                      f->fmt.pix.sizeimage);
+                      f->fmt.pix.sizeimage,
+                      XLAT_ARGS(V4L2_COLORSPACE_JPEG));
                break;
 #if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
        case V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE:
@@ -191,13 +231,17 @@ dprint_ioctl_v4l2(struct v4l2_format *const f,
                unsigned int i;
 
                saved_errno = errno;
-               printf("ioctl(-1, %s"
-                      ", {type=%s"
+               printf("ioctl(-1, " XLAT_FMT
+                      ", {type=" XLAT_FMT
                       ", fmt.pix_mp={width=%u, height=%u, pixelformat=",
-                      request,
-                      buf_type_string,
+                      XLAT_SEL(reqval, reqstr),
+                      XLAT_SEL(buf_type, buf_type_string),
                       f->fmt.pix_mp.width, f->fmt.pix_mp.height);
 
+# if XLAT_RAW
+               printf("%#x", buf_type == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
+                             ? magic : pf_magic);
+# else /* !XLAT_RAW */
                if (buf_type == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE)
                        printf("v4l2_fourcc('\\x%x', '\\x%x', '\\x%x', '\\x%x')",
                               cc0(magic), cc1(magic), cc2(magic), cc3(magic));
@@ -206,21 +250,35 @@ dprint_ioctl_v4l2(struct v4l2_format *const f,
                               "/* V4L2_PIX_FMT_SPCA508 */",
                               cc0(pf_magic), cc1(pf_magic), cc2(pf_magic),
                               cc3(pf_magic));
+# endif /* XLAT_RAW */
 
-               printf(", field=V4L2_FIELD_NONE, colorspace="
-                      "V4L2_COLORSPACE_JPEG, plane_fmt=[");
+               printf(", field=" XLAT_FMT ", colorspace=" XLAT_FMT
+                      ", plane_fmt=[",
+                      XLAT_ARGS(V4L2_FIELD_NONE),
+                      XLAT_ARGS(V4L2_COLORSPACE_JPEG));
                for (i = 0;
-                    i < ARRAY_SIZE(f->fmt.pix_mp.plane_fmt);
+                    i < (buf_type == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
+                         ? 1 : ARRAY_SIZE(f->fmt.pix_mp.plane_fmt));
                     ++i) {
                        if (i)
                                printf(", ");
                        printf("{sizeimage=%u, bytesperline=%u}",
                        f->fmt.pix_mp.plane_fmt[i].sizeimage,
-                       f->fmt.pix_mp.plane_fmt[i].bytesperline);
+                       sizeof(f->fmt.pix_mp.plane_fmt[i].bytesperline) ==
+                       sizeof(uint32_t)
+                       ? f->fmt.pix_mp.plane_fmt[i].bytesperline :
+# if WORDS_BIGENDIAN
+                       (f->fmt.pix_mp.plane_fmt[i].bytesperline << 16) |
+                       f->fmt.pix_mp.plane_fmt[i].reserved[0]
+# else
+                       f->fmt.pix_mp.plane_fmt[i].bytesperline |
+                       (f->fmt.pix_mp.plane_fmt[i].reserved[0] << 16)
+# endif
+                       );
                }
                errno = saved_errno;
                printf("], num_planes=%u}}) = -1 EBADF (%m)\n",
-               f->fmt.pix_mp.num_planes);
+                      f->fmt.pix_mp.num_planes);
                break;
        }
 #endif
@@ -228,20 +286,17 @@ dprint_ioctl_v4l2(struct v4l2_format *const f,
        case V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY:
 #endif
        case V4L2_BUF_TYPE_VIDEO_OVERLAY:
-               printf("ioctl(-1, %s, {type=%s"
+               saved_errno = errno;
+               printf("ioctl(-1, " XLAT_FMT ", {type=" XLAT_FMT
                       ", fmt.win={left=%d, top=%d, width=%u, height=%u"
-                      ", field=V4L2_FIELD_ANY, chromakey=%#x, clips="
+                      ", field=" XLAT_FMT ", chromakey=%#x, clips="
                       "[{left=%d, top=%d, width=%u, height=%u}, "
-                      "{left=%d, top=%d, width=%u, height=%u}]"
-                      ", clipcount=%u, bitmap=%p"
-#ifdef HAVE_STRUCT_V4L2_WINDOW_GLOBAL_ALPHA
-                      ", global_alpha=%#x"
-#endif
-                      "}}) = -1 EBADF (%m)\n",
-                      request,
-                      buf_type_string,
+                      "{left=%d, top=%d, width=%u, height=%u}",
+                      XLAT_SEL(reqval, reqstr),
+                      XLAT_SEL(buf_type, buf_type_string),
                       f->fmt.win.w.left, f->fmt.win.w.top,
                       f->fmt.win.w.width, f->fmt.win.w.height,
+                      XLAT_ARGS(V4L2_FIELD_ANY),
                       f->fmt.win.chromakey,
                       f->fmt.win.clips[0].c.left,
                       f->fmt.win.clips[0].c.top,
@@ -250,24 +305,37 @@ dprint_ioctl_v4l2(struct v4l2_format *const f,
                       f->fmt.win.clips[1].c.left,
                       f->fmt.win.clips[1].c.top,
                       f->fmt.win.clips[1].c.width,
-                      f->fmt.win.clips[1].c.height,
-                      f->fmt.win.clipcount, f->fmt.win.bitmap
+                      f->fmt.win.clips[1].c.height);
+               if (f->fmt.win.clipcount > 2)
+                       printf(", ... /* %p */", f->fmt.win.clips + 2);
+               errno = saved_errno;
+               printf("], clipcount=%u, bitmap=%p"
+                      ", global_alpha=%#x"
+                      "}}) = -1 EBADF (%m)\n",
+                      f->fmt.win.clipcount, f->fmt.win.bitmap,
 #ifdef HAVE_STRUCT_V4L2_WINDOW_GLOBAL_ALPHA
-                      , f->fmt.win.global_alpha
+                      f->fmt.win.global_alpha
+#else
+                      ((uint8_t *) &f->fmt.win)[offsetofend(struct v4l2_window,
+                                                            bitmap)]
 #endif
                       );
                break;
        case V4L2_BUF_TYPE_VBI_CAPTURE:
        case V4L2_BUF_TYPE_VBI_OUTPUT:
                saved_errno = errno;
-               printf("ioctl(-1, %s, {type=%s"
+               printf("ioctl(-1, " XLAT_FMT ", {type=" XLAT_FMT
                       ", fmt.vbi={sampling_rate=%u, offset=%u"
                       ", samples_per_line=%u, sample_format=",
-                      request,
-                      buf_type_string,
+                      XLAT_SEL(reqval, reqstr),
+                      XLAT_SEL(buf_type, buf_type_string),
                       f->fmt.vbi.sampling_rate, f->fmt.vbi.offset,
                       f->fmt.vbi.samples_per_line);
 
+#if XLAT_RAW
+               printf("%#x", buf_type == V4L2_BUF_TYPE_VBI_CAPTURE
+                             ? magic : pf_magic);
+#else /* !XLAT_RAW */
                if (buf_type == V4L2_BUF_TYPE_VBI_CAPTURE)
                        printf("v4l2_fourcc('\\x%x', '\\x%x', '\\x%x', '\\x%x')",
                               cc0(magic), cc1(magic), cc2(magic), cc3(magic));
@@ -276,24 +344,27 @@ dprint_ioctl_v4l2(struct v4l2_format *const f,
                               "/* V4L2_PIX_FMT_SPCA508 */",
                               cc0(pf_magic), cc1(pf_magic), cc2(pf_magic),
                               cc3(pf_magic));
+#endif /* XLAT_RAW */
 
                errno = saved_errno;
-               printf(", start=[%u, %u], count=[%u, %u]"
-                      ", flags=V4L2_VBI_INTERLACED}})"
+               printf(", start=[%d, %d], count=[%u, %u]"
+                      ", flags=" XLAT_FMT "}})"
                       " = -1 EBADF (%m)\n",
                       f->fmt.vbi.start[0], f->fmt.vbi.start[1],
-                      f->fmt.vbi.count[0], f->fmt.vbi.count[1]);
+                      f->fmt.vbi.count[0], f->fmt.vbi.count[1],
+                      XLAT_ARGS(V4L2_VBI_INTERLACED));
                break;
 #if HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE
        case V4L2_BUF_TYPE_SLICED_VBI_CAPTURE:
        case V4L2_BUF_TYPE_SLICED_VBI_OUTPUT: {
                unsigned int i, j;
 
-               printf("ioctl(-1, %s, {type=%s"
-                      ", fmt.sliced={service_set=V4L2_SLICED_VPS"
+               printf("ioctl(-1, " XLAT_FMT ", {type=" XLAT_FMT
+                      ", fmt.sliced={service_set=" XLAT_FMT
                       ", io_size=%u, service_lines=[",
-                      request,
-                      buf_type_string,
+                      XLAT_SEL(reqval, reqstr),
+                      XLAT_SEL(buf_type, buf_type_string),
+                      XLAT_ARGS(V4L2_SLICED_VPS),
                       f->fmt.sliced.io_size);
                for (i = 0;
                     i < ARRAY_SIZE(f->fmt.sliced.service_lines);
@@ -321,30 +392,38 @@ dprint_ioctl_v4l2(struct v4l2_format *const f,
 #if HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE
        case V4L2_BUF_TYPE_SDR_CAPTURE:
                saved_errno = errno;
-               printf("ioctl(-1, %s, {type=%s"
+               printf("ioctl(-1, " XLAT_FMT ", {type=" XLAT_FMT
                       ", fmt.sdr={pixelformat=",
-                      request,
-                      buf_type_string);
+                      XLAT_SEL(reqval, reqstr),
+                      XLAT_SEL(buf_type, buf_type_string));
 
+# if XLAT_RAW
+               if (buf_type == V4L2_BUF_TYPE_SDR_CAPTURE)
+                       printf("%#x", magic);
+#  if HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT
+               else
+                       printf("%#x", sf_magic);
+#  endif
+# else /* !XLAT_RAW */
                if (buf_type == V4L2_BUF_TYPE_SDR_CAPTURE)
                        printf("v4l2_fourcc('\\x%x', '\\x%x', '\\x%x', '\\x%x')",
                               cc0(magic), cc1(magic), cc2(magic), cc3(magic));
-# if HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT
+#  if HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT
                else
                        printf("v4l2_fourcc('%c', '%c', '%c', '%c') "
                               "/* V4L2_SDR_FMT_RU12LE */",
                               cc0(sf_magic), cc1(sf_magic), cc2(sf_magic),
                               cc3(sf_magic));
-# endif
+#  endif
+# endif /* XLAT_RAW */
 
                errno = saved_errno;
-               printf(
-# ifdef HAVE_STRUCT_V4L2_SDR_FORMAT_BUFFERSIZE
-                      ", buffersize=%u"
-# endif
-                      "}}) = -1 EBADF (%m)\n"
+               printf(", buffersize=%u}}) = -1 EBADF (%m)\n"
 # ifdef HAVE_STRUCT_V4L2_SDR_FORMAT_BUFFERSIZE
-                      , f->fmt.sdr.buffersize
+                      , sizeof(f->fmt.sdr.buffersize == sizeof(uint32_t))
+                       ? f->fmt.sdr.buffersize : ((uint32_t *) &f->fmt.sdr)[1]
+# else
+                      , ((uint32_t *) &f->fmt.sdr)[1]
 # endif
                       );
                break;
@@ -352,7 +431,8 @@ dprint_ioctl_v4l2(struct v4l2_format *const f,
        }
 }
 #define print_ioctl_v4l2(v4l2_format, request, buf_type)       \
-       dprint_ioctl_v4l2((v4l2_format), (request), (buf_type), #buf_type)
+       dprint_ioctl_v4l2((v4l2_format), XLAT_SEL(request, #request), \
+                         (buf_type), #buf_type)
 
 int
 main(void)
@@ -364,267 +444,559 @@ main(void)
 
        unsigned char cc[sizeof(int)] = { 'A', '\'', '\\', '\xfa' };
 
+       /* Unknown */
+       static const struct {
+               uint32_t flags;
+               const char *str;
+       } cmd_flags[] = {
+               { ARG_STR(_IOC_NONE) },
+               { ARG_STR(_IOC_READ) },
+               { ARG_STR(_IOC_WRITE) },
+               { ARG_STR(_IOC_READ|_IOC_WRITE) },
+       };
+       static const uint8_t unknown_cmds[] = {
+               1, 3, 6 /* VIDIOC_G_MPEGCOMP */, 7 /* VIDIOC_S_MPEGCOMP */,
+               12, 13, 20, 31, 32, 35, 42, 43, 44, 45, 51, 52, 53,
+               81 /* VIDIOC_G_CHIP_IDENT_OLD */,
+               83 /* VIDIOC_ENUM_DV_PRESETS */, 84 /* VIDIOC_S_DV_PRESET */,
+               85 /* VIDIOC_G_DV_PRESET */, 86 /* VIDIOC_QUERY_DV_PRESET */,
+               104 /* 103 is the last existing */, 255
+       };
+
+       for (size_t i = 0; i < ARRAY_SIZE(unknown_cmds); i++) {
+               /* Trying to hit common argument sizes */
+               for (size_t j = 0; j < 256; j += 4) {
+                       for (size_t k = 0; k < ARRAY_SIZE(cmd_flags); k++) {
+                               uint32_t ioc = _IOC(cmd_flags[k].flags, 'V',
+                                                   unknown_cmds[i], j);
+                               /*
+                                * Conflicts with VT* and VBG* ioctls
+                                * that happen to also use 'V' command type.
+                                */
+                               switch (ioc) {
+                               /* VT_GETMODE */
+                               case _IOC(_IOC_NONE, 'V', 1, 0):
+                               /* VT_GETSTATE */
+                               case _IOC(_IOC_NONE, 'V', 3, 0):
+                               /* VBG_IOCTL_VMMDEV_REQUEST_BIG */
+                               case _IOC(_IOC_READ|_IOC_WRITE, 'V', 3, 0):
+                               /* VT_ACTIVATE */
+                               case _IOC(_IOC_NONE, 'V', 6, 0):
+                               /* VT_WAITACTIVE */
+                               case _IOC(_IOC_NONE, 'V', 7, 0):
+                               /* VT_UNLOCKSWITCH */
+                               case _IOC(_IOC_NONE, 'V', 12, 0):
+                               /* VBG_IOCTL_CHANGE_FILTER_MASK */
+                               case _IOC(_IOC_READ|_IOC_WRITE, 'V', 12, 32):
+                               /* VT_GETHIFONTMASK */
+                               case _IOC(_IOC_NONE, 'V', 13, 0):
+                                       continue;
+                               /* VBG_IOCTL_ACQUIRE_GUEST_CAPABILITIES */
+                               case _IOC(_IOC_READ|_IOC_WRITE, 'V', 13, 36):
+                                       continue;
+                               }
+
+                               ioctl(-1, ioc, 0);
+                               printf("ioctl(-1, " NABBR("%#x") VERB(" /* ")
+                                      NRAW("_IOC(%s, 0x56, %#x, %#zx)")
+                                      VERB(" */") ", 0) = -1 EBADF (%m)\n"
+#if XLAT_RAW || XLAT_VERBOSE
+                                      , ioc
+#endif
+#if !XLAT_RAW
+                                      , cmd_flags[k].str, unknown_cmds[i], j
+#endif
+                                      );
+
+                               ioctl(-1, ioc,
+                                     (unsigned long) 0xbadc0deddeadc0deULL);
+                               printf("ioctl(-1, " NABBR("%#x") VERB(" /* ")
+                                      NRAW("_IOC(%s, 0x56, %#x, %#zx)")
+                                      VERB(" */") ", %#lx) = -1 EBADF (%m)\n",
+#if XLAT_RAW || XLAT_VERBOSE
+                                      ioc,
+#endif
+#if !XLAT_RAW
+                                      cmd_flags[k].str, unknown_cmds[i], j,
+#endif
+                                      (unsigned long) 0xbadc0deddeadc0deULL);
+                       }
+               }
+       }
+
+       /* Decoding is not supported */
+       static const struct {
+               uint32_t cmd;
+               const char *str;
+       } unsupp_cmds[] = {
+               { ARG_STR(VIDIOC_OVERLAY) },
+#ifdef VIDIOC_EXPBUF
+               { ARG_STR(VIDIOC_EXPBUF) },
+#endif
+               { ARG_STR(VIDIOC_G_AUDIO) },
+               { ARG_STR(VIDIOC_S_AUDIO) },
+               { ARG_STR(VIDIOC_QUERYMENU) },
+#ifdef VIDIOC_G_EDID
+               { ARG_STR(VIDIOC_G_EDID) },
+#endif
+#ifdef VIDIOC_S_EDID
+               { ARG_STR(VIDIOC_S_EDID) },
+#endif
+               { ARG_STR(VIDIOC_G_OUTPUT) },
+               { ARG_STR(VIDIOC_S_OUTPUT) },
+               { ARG_STR(VIDIOC_ENUMOUTPUT) },
+               { ARG_STR(VIDIOC_G_AUDOUT) },
+               { ARG_STR(VIDIOC_S_AUDOUT) },
+               { ARG_STR(VIDIOC_G_MODULATOR) },
+               { ARG_STR(VIDIOC_S_MODULATOR) },
+               { ARG_STR(VIDIOC_G_FREQUENCY) },
+               { ARG_STR(VIDIOC_S_FREQUENCY) },
+               { ARG_STR(VIDIOC_G_JPEGCOMP) },
+               { ARG_STR(VIDIOC_S_JPEGCOMP) },
+               { ARG_STR(VIDIOC_QUERYSTD) },
+               { ARG_STR(VIDIOC_ENUMAUDIO) },
+               { ARG_STR(VIDIOC_ENUMAUDOUT) },
+               { ARG_STR(VIDIOC_G_PRIORITY) },
+               { ARG_STR(VIDIOC_S_PRIORITY) },
+               { ARG_STR(VIDIOC_G_SLICED_VBI_CAP) },
+               { ARG_STR(VIDIOC_LOG_STATUS) },
+#ifdef VIDIOC_G_ENC_INDEX
+               { ARG_STR(VIDIOC_G_ENC_INDEX) },
+#endif
+#ifdef VIDIOC_ENCODER_CMD
+               { ARG_STR(VIDIOC_ENCODER_CMD) },
+#endif
+#ifdef VIDIOC_TRY_ENCODER_CMD
+               { ARG_STR(VIDIOC_TRY_ENCODER_CMD) },
+#endif
+#ifdef VIDIOC_DBG_S_REGISTER
+               { ARG_STR(VIDIOC_DBG_S_REGISTER) },
+#endif
+#ifdef VIDIOC_DBG_G_REGISTER
+               { ARG_STR(VIDIOC_DBG_G_REGISTER) },
+#endif
+#ifdef VIDIOC_G_CHIP_IDENT_OLD
+               { ARG_STR(VIDIOC_G_CHIP_IDENT_OLD) },
+#endif
+#ifdef VIDIOC_DBG_G_CHIP_IDENT
+               /* Broken on RHEL 6/7 */
+               /* { ARG_STR(VIDIOC_DBG_G_CHIP_IDENT) }, */
+#endif
+#ifdef VIDIOC_S_HW_FREQ_SEEK
+               { ARG_STR(VIDIOC_S_HW_FREQ_SEEK) },
+#endif
+#ifdef VIDIOC_ENUM_DV_PRESETS
+               /* Next 4 are broken on RHEL 6 */
+               /* { ARG_STR(VIDIOC_ENUM_DV_PRESETS) }, */
+#endif
+#ifdef VIDIOC_S_DV_PRESET
+               /* { ARG_STR(VIDIOC_S_DV_PRESET) }, */
+#endif
+#ifdef VIDIOC_G_DV_PRESET
+               /* { ARG_STR(VIDIOC_G_DV_PRESET) }, */
+#endif
+#ifdef VIDIOC_QUERY_DV_PRESET
+               /* { ARG_STR(VIDIOC_QUERY_DV_PRESET) }, */
+#endif
+#ifdef VIDIOC_S_DV_TIMINGS
+               { ARG_STR(VIDIOC_S_DV_TIMINGS) },
+#endif
+#ifdef VIDIOC_G_DV_TIMINGS
+               { ARG_STR(VIDIOC_G_DV_TIMINGS) },
+#endif
+#ifdef VIDIOC_DQEVENT
+               { ARG_STR(VIDIOC_DQEVENT) },
+#endif
+#ifdef VIDIOC_SUBSCRIBE_EVENT
+               { ARG_STR(VIDIOC_SUBSCRIBE_EVENT) },
+#endif
+#ifdef VIDIOC_UNSUBSCRIBE_EVENT
+               { ARG_STR(VIDIOC_UNSUBSCRIBE_EVENT) },
+#endif
+#ifdef VIDIOC_PREPARE_BUF
+               { ARG_STR(VIDIOC_PREPARE_BUF) },
+#endif
+#ifdef VIDIOC_G_SELECTION
+               { ARG_STR(VIDIOC_G_SELECTION) },
+#endif
+#ifdef VIDIOC_S_SELECTION
+               { ARG_STR(VIDIOC_S_SELECTION) },
+#endif
+#ifdef VIDIOC_DECODER_CMD
+               { ARG_STR(VIDIOC_DECODER_CMD) },
+#endif
+#ifdef VIDIOC_TRY_DECODER_CMD
+               { ARG_STR(VIDIOC_TRY_DECODER_CMD) },
+#endif
+#ifdef VIDIOC_ENUM_DV_TIMINGS
+               { ARG_STR(VIDIOC_ENUM_DV_TIMINGS) },
+#endif
+#ifdef VIDIOC_QUERY_DV_TIMINGS
+               { ARG_STR(VIDIOC_QUERY_DV_TIMINGS) },
+#endif
+#ifdef VIDIOC_DV_TIMINGS_CAP
+               { ARG_STR(VIDIOC_DV_TIMINGS_CAP) },
+#endif
+#ifdef VIDIOC_ENUM_FREQ_BANDS
+               { ARG_STR(VIDIOC_ENUM_FREQ_BANDS) },
+#endif
+#ifdef VIDIOC_DBG_G_CHIP_INFO
+               { ARG_STR(VIDIOC_DBG_G_CHIP_INFO) },
+#endif
+#ifdef VIDIOC_QUERY_EXT_CTRL
+               { ARG_STR(VIDIOC_QUERY_EXT_CTRL) },
+#endif
+#ifdef VIDIOC_SUBDEV_ENUM_MBUS_CODE
+               { ARG_STR(VIDIOC_SUBDEV_ENUM_MBUS_CODE) },
+#endif
+#ifdef VIDIOC_SUBDEV_G_FMT
+               { ARG_STR(VIDIOC_SUBDEV_G_FMT) },
+#endif
+#ifdef VIDIOC_SUBDEV_S_FMT
+               { ARG_STR(VIDIOC_SUBDEV_S_FMT) },
+#endif
+#ifdef VIDIOC_SUBDEV_G_FRAME_INTERVAL
+               { ARG_STR(VIDIOC_SUBDEV_G_FRAME_INTERVAL) },
+#endif
+#ifdef VIDIOC_SUBDEV_S_FRAME_INTERVAL
+               { ARG_STR(VIDIOC_SUBDEV_S_FRAME_INTERVAL) },
+#endif
+#ifdef VIDIOC_SUBDEV_G_CROP
+               { ARG_STR(VIDIOC_SUBDEV_G_CROP) },
+#endif
+#ifdef VIDIOC_SUBDEV_S_CROP
+               { ARG_STR(VIDIOC_SUBDEV_S_CROP) },
+#endif
+#ifdef VIDIOC_SUBDEV_G_SELECTION
+               { ARG_STR(VIDIOC_SUBDEV_G_SELECTION) },
+#endif
+#ifdef VIDIOC_SUBDEV_S_SELECTION
+               { ARG_STR(VIDIOC_SUBDEV_S_SELECTION) },
+#endif
+#ifdef VIDIOC_SUBDEV_ENUM_FRAME_SIZE
+               { ARG_STR(VIDIOC_SUBDEV_ENUM_FRAME_SIZE) },
+#endif
+#ifdef VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL
+               { ARG_STR(VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL) },
+#endif
+       };
+
+       for (size_t i = 0; i < ARRAY_SIZE(unsupp_cmds); i++) {
+               switch (unsupp_cmds[i].cmd) {
+               /*
+                * VIDIOC_G_SLICED_VBI_CAP macro has been changed from
+                * IOR to IOWR in Linux v2.6.19-rc1~643^2~37, skip it.
+                */
+               case _IOR('V', 69, struct v4l2_sliced_vbi_cap):
+                       continue;
+               }
+
+               ioctl(-1, unsupp_cmds[i].cmd, 0);
+               printf("ioctl(-1, " XLAT_FMT ", 0) = -1 EBADF (%m)\n",
+                      XLAT_SEL(unsupp_cmds[i].cmd, unsupp_cmds[i].str));
+
+               ioctl(-1, unsupp_cmds[i].cmd,
+                     (unsigned long) 0xbadc0deddeadc0deULL);
+               printf("ioctl(-1, " XLAT_FMT ", %#lx) = -1 EBADF (%m)\n",
+                      XLAT_SEL(unsupp_cmds[i].cmd, unsupp_cmds[i].str),
+                      (unsigned long) 0xbadc0deddeadc0deULL);
+       }
+
        /* VIDIOC_QUERYCAP */
        ioctl(-1, VIDIOC_QUERYCAP, 0);
-       printf("ioctl(-1, VIDIOC_QUERYCAP, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_QUERYCAP));
 
        ioctl(-1, VIDIOC_QUERYCAP, page);
-       printf("ioctl(-1, VIDIOC_QUERYCAP, %p) = -1 EBADF (%m)\n", page);
+       printf("ioctl(-1, %s, %p) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_QUERYCAP), page);
 
        /* VIDIOC_ENUM_FMT */
        ioctl(-1, VIDIOC_ENUM_FMT, 0);
-       printf("ioctl(-1, VIDIOC_ENUM_FMT, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_ENUM_FMT));
 
        TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_fmtdesc, p_fmtdesc);
        p_fmtdesc->index = magic;
        p_fmtdesc->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
        ioctl(-1, VIDIOC_ENUM_FMT, p_fmtdesc);
-       printf("ioctl(-1, VIDIOC_ENUM_FMT, {index=%u"
-              ", type=V4L2_BUF_TYPE_VIDEO_CAPTURE}) = -1 EBADF (%m)\n",
-              p_fmtdesc->index);
+       printf("ioctl(-1, %s, {index=%u, type=" XLAT_FMT
+              "}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_ENUM_FMT), p_fmtdesc->index,
+              XLAT_ARGS(V4L2_BUF_TYPE_VIDEO_CAPTURE));
 
        /* VIDIOC_G_FMT */
        ioctl(-1, VIDIOC_G_FMT, 0);
-       printf("ioctl(-1, VIDIOC_G_FMT, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_FMT));
 
        TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_format, p_format);
 
        p_format->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
        ioctl(-1, VIDIOC_G_FMT, p_format);
-       printf("ioctl(-1, VIDIOC_G_FMT"
-              ", {type=V4L2_BUF_TYPE_VIDEO_CAPTURE}) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, {type=" XLAT_FMT "}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_FMT),
+              XLAT_ARGS(V4L2_BUF_TYPE_VIDEO_CAPTURE));
 #if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
        p_format->type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
        ioctl(-1, VIDIOC_G_FMT, p_format);
-       printf("ioctl(-1, VIDIOC_G_FMT"
-              ", {type=V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE}) ="
-              " -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, {type=" XLAT_FMT "}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_FMT),
+              XLAT_ARGS(V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE));
 #endif
 #if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY
        p_format->type = V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY;
        ioctl(-1, VIDIOC_G_FMT, p_format);
-       printf("ioctl(-1, VIDIOC_G_FMT"
-              ", {type=V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY}) ="
-              " -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, {type=" XLAT_FMT "}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_FMT),
+              XLAT_ARGS(V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY));
 #endif
        p_format->type = V4L2_BUF_TYPE_VIDEO_OVERLAY;
        ioctl(-1, VIDIOC_G_FMT, p_format);
-       printf("ioctl(-1, VIDIOC_G_FMT"
-              ", {type=V4L2_BUF_TYPE_VIDEO_OVERLAY}) ="
-              " -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, {type=" XLAT_FMT "}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_FMT),
+              XLAT_ARGS(V4L2_BUF_TYPE_VIDEO_OVERLAY));
 
        p_format->type = V4L2_BUF_TYPE_VBI_CAPTURE;
        ioctl(-1, VIDIOC_G_FMT, p_format);
-       printf("ioctl(-1, VIDIOC_G_FMT"
-              ", {type=V4L2_BUF_TYPE_VBI_CAPTURE}) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, {type=" XLAT_FMT "}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_FMT),
+              XLAT_ARGS(V4L2_BUF_TYPE_VBI_CAPTURE));
 #if HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE
        p_format->type = V4L2_BUF_TYPE_SLICED_VBI_CAPTURE;
        ioctl(-1, VIDIOC_G_FMT, p_format);
-       printf("ioctl(-1, VIDIOC_G_FMT"
-              ", {type=V4L2_BUF_TYPE_SLICED_VBI_CAPTURE}) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, {type=" XLAT_FMT "}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_FMT),
+              XLAT_ARGS(V4L2_BUF_TYPE_SLICED_VBI_CAPTURE));
 #endif
 #if HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE
        p_format->type = V4L2_BUF_TYPE_SDR_CAPTURE;
        ioctl(-1, VIDIOC_G_FMT, p_format);
-       printf("ioctl(-1, VIDIOC_G_FMT"
-              ", {type=V4L2_BUF_TYPE_SDR_CAPTURE}) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, {type=" XLAT_FMT "}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_FMT),
+              XLAT_ARGS(V4L2_BUF_TYPE_SDR_CAPTURE));
 #endif
 #if HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT
        p_format->type = V4L2_BUF_TYPE_SDR_OUTPUT;
        ioctl(-1, VIDIOC_G_FMT, p_format);
-       printf("ioctl(-1, VIDIOC_G_FMT"
-              ", {type=V4L2_BUF_TYPE_SDR_OUTPUT}) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, {type=" XLAT_FMT "}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_FMT),
+              XLAT_ARGS(V4L2_BUF_TYPE_SDR_OUTPUT));
 #endif
        /* VIDIOC_S_FMT */
        ioctl(-1, VIDIOC_S_FMT, 0);
-       printf("ioctl(-1, VIDIOC_S_FMT, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_FMT));
 
        init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_OUTPUT);
        ioctl(-1, VIDIOC_S_FMT, p_format);
-       print_ioctl_v4l2(p_format, "VIDIOC_S_FMT", V4L2_BUF_TYPE_VIDEO_OUTPUT);
+       print_ioctl_v4l2(p_format, VIDIOC_S_FMT,
+                        V4L2_BUF_TYPE_VIDEO_OUTPUT);
 #if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
        init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE);
        ioctl(-1, VIDIOC_S_FMT, p_format);
-       print_ioctl_v4l2(p_format, "VIDIOC_S_FMT",
+       print_ioctl_v4l2(p_format, VIDIOC_S_FMT,
                         V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE);
 #endif
 #if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY
        init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY);
        ioctl(-1, VIDIOC_S_FMT, p_format);
-       print_ioctl_v4l2(p_format, "VIDIOC_S_FMT",
+       print_ioctl_v4l2(p_format, VIDIOC_S_FMT,
                         V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY);
 #endif
        init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_OVERLAY);
        ioctl(-1, VIDIOC_S_FMT, p_format);
-       print_ioctl_v4l2(p_format, "VIDIOC_S_FMT",
+       print_ioctl_v4l2(p_format, VIDIOC_S_FMT,
                         V4L2_BUF_TYPE_VIDEO_OVERLAY);
 
        init_v4l2_format(p_format, V4L2_BUF_TYPE_VBI_CAPTURE);
        ioctl(-1, VIDIOC_S_FMT, p_format);
-       print_ioctl_v4l2(p_format, "VIDIOC_S_FMT", V4L2_BUF_TYPE_VBI_CAPTURE);
+       print_ioctl_v4l2(p_format, VIDIOC_S_FMT, V4L2_BUF_TYPE_VBI_CAPTURE);
 #if HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE
        init_v4l2_format(p_format, V4L2_BUF_TYPE_SLICED_VBI_CAPTURE);
        ioctl(-1, VIDIOC_S_FMT, p_format);
-       print_ioctl_v4l2(p_format, "VIDIOC_S_FMT",
+       print_ioctl_v4l2(p_format, VIDIOC_S_FMT,
                         V4L2_BUF_TYPE_SLICED_VBI_CAPTURE);
 #endif
 #if HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE
        init_v4l2_format(p_format, V4L2_BUF_TYPE_SDR_CAPTURE);
        ioctl(-1, VIDIOC_S_FMT, p_format);
-       print_ioctl_v4l2(p_format, "VIDIOC_S_FMT", V4L2_BUF_TYPE_SDR_CAPTURE);
+       print_ioctl_v4l2(p_format, VIDIOC_S_FMT, V4L2_BUF_TYPE_SDR_CAPTURE);
 #endif
 #if HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT
        init_v4l2_format(p_format, V4L2_BUF_TYPE_SDR_OUTPUT);
        ioctl(-1, VIDIOC_S_FMT, p_format);
-       print_ioctl_v4l2(p_format, "VIDIOC_S_FMT", V4L2_BUF_TYPE_SDR_OUTPUT);
+       print_ioctl_v4l2(p_format, VIDIOC_S_FMT, V4L2_BUF_TYPE_SDR_OUTPUT);
 #endif
        /* VIDIOC_TRY_FMT */
        ioctl(-1, VIDIOC_TRY_FMT, 0);
-       printf("ioctl(-1, VIDIOC_TRY_FMT, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_TRY_FMT));
 
        init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_OUTPUT);
        ioctl(-1, VIDIOC_TRY_FMT, p_format);
-       print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT",
+       print_ioctl_v4l2(p_format, VIDIOC_TRY_FMT,
                         V4L2_BUF_TYPE_VIDEO_OUTPUT);
 #if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
        init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE);
        ioctl(-1, VIDIOC_TRY_FMT, p_format);
-       print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT",
+       print_ioctl_v4l2(p_format, VIDIOC_TRY_FMT,
                         V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE);
 #endif
 #if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY
        init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY);
        ioctl(-1, VIDIOC_TRY_FMT, p_format);
-       print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT",
+       print_ioctl_v4l2(p_format, VIDIOC_TRY_FMT,
                         V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY);
 #endif
        init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_OVERLAY);
        ioctl(-1, VIDIOC_TRY_FMT, p_format);
-       print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT",
+       print_ioctl_v4l2(p_format, VIDIOC_TRY_FMT,
                         V4L2_BUF_TYPE_VIDEO_OVERLAY);
 
        init_v4l2_format(p_format, V4L2_BUF_TYPE_VBI_CAPTURE);
        ioctl(-1, VIDIOC_TRY_FMT, p_format);
-       print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT", V4L2_BUF_TYPE_VBI_CAPTURE);
+       print_ioctl_v4l2(p_format, VIDIOC_TRY_FMT, V4L2_BUF_TYPE_VBI_CAPTURE);
 #if HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE
        init_v4l2_format(p_format, V4L2_BUF_TYPE_SLICED_VBI_CAPTURE);
        ioctl(-1, VIDIOC_TRY_FMT, p_format);
-       print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT",
+       print_ioctl_v4l2(p_format, VIDIOC_TRY_FMT,
                         V4L2_BUF_TYPE_SLICED_VBI_CAPTURE);
 #endif
 #if HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE
        init_v4l2_format(p_format, V4L2_BUF_TYPE_SDR_CAPTURE);
        ioctl(-1, VIDIOC_TRY_FMT, p_format);
-       print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT", V4L2_BUF_TYPE_SDR_CAPTURE);
+       print_ioctl_v4l2(p_format, VIDIOC_TRY_FMT, V4L2_BUF_TYPE_SDR_CAPTURE);
 #endif
 #if HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT
        init_v4l2_format(p_format, V4L2_BUF_TYPE_SDR_OUTPUT);
        ioctl(-1, VIDIOC_TRY_FMT, p_format);
-       print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT", V4L2_BUF_TYPE_SDR_OUTPUT);
+       print_ioctl_v4l2(p_format, VIDIOC_TRY_FMT, V4L2_BUF_TYPE_SDR_OUTPUT);
 #endif
        struct v4l2_format *const p_v4l2_format =
                page_end - sizeof(*p_v4l2_format);
        ioctl(-1, VIDIOC_TRY_FMT, p_v4l2_format);
-       printf("ioctl(-1, VIDIOC_TRY_FMT, {type=%#x /* V4L2_BUF_TYPE_??? */})"
-              " = -1 EBADF (%m)\n", p_v4l2_format->type);
+       printf("ioctl(-1, %s, {type=%#x" NRAW(" /* V4L2_BUF_TYPE_??? */") "})"
+              " = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_TRY_FMT), p_v4l2_format->type);
 
        /* VIDIOC_REQBUFS */
        ioctl(-1, VIDIOC_REQBUFS, 0);
-       printf("ioctl(-1, VIDIOC_REQBUFS, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_REQBUFS));
 
        struct v4l2_requestbuffers *const p_v4l2_requestbuffers =
                page_end - sizeof(*p_v4l2_requestbuffers);
        ioctl(-1, VIDIOC_REQBUFS, p_v4l2_requestbuffers);
-       printf("ioctl(-1, VIDIOC_REQBUFS, {type=%#x /* V4L2_BUF_TYPE_??? */, "
-              "memory=%#x /* V4L2_MEMORY_??? */, count=%u})"
+       printf("ioctl(-1, %s, {type=%#x"
+              NRAW(" /* V4L2_BUF_TYPE_??? */")
+              ", memory=%#x" NRAW(" /* V4L2_MEMORY_??? */") ", count=%u})"
               " = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_REQBUFS),
               p_v4l2_requestbuffers->type,
               p_v4l2_requestbuffers->memory,
               p_v4l2_requestbuffers->count);
 
        /* VIDIOC_QUERYBUF */
        ioctl(-1, VIDIOC_QUERYBUF, 0);
-       printf("ioctl(-1, VIDIOC_QUERYBUF, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_QUERYBUF));
 
-       struct v4l2_buffer *const p_v4l2_buffer =
+       kernel_v4l2_buffer_t *const p_v4l2_buffer =
                page_end - sizeof(*p_v4l2_buffer);
        ioctl(-1, VIDIOC_QUERYBUF, p_v4l2_buffer);
-       printf("ioctl(-1, VIDIOC_QUERYBUF, {type=%#x /* V4L2_BUF_TYPE_??? */"
+       printf("ioctl(-1, %s, {type=%#x" NRAW(" /* V4L2_BUF_TYPE_??? */")
               ", index=%u}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_QUERYBUF),
               p_v4l2_buffer->type, p_v4l2_buffer->index);
 
        /* VIDIOC_QBUF */
        ioctl(-1, VIDIOC_QBUF, 0);
-       printf("ioctl(-1, VIDIOC_QBUF, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_QBUF));
 
        ioctl(-1, VIDIOC_QBUF, p_v4l2_buffer);
-       printf("ioctl(-1, VIDIOC_QBUF, {type=%#x /* V4L2_BUF_TYPE_??? */"
+       printf("ioctl(-1, %s, {type=%#x" NRAW(" /* V4L2_BUF_TYPE_??? */")
               ", index=%u}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_QBUF),
               p_v4l2_buffer->type, p_v4l2_buffer->index);
 
        /* VIDIOC_DQBUF */
        ioctl(-1, VIDIOC_DQBUF, 0);
-       printf("ioctl(-1, VIDIOC_DQBUF, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_DQBUF));
 
        ioctl(-1, VIDIOC_DQBUF, p_v4l2_buffer);
-       printf("ioctl(-1, VIDIOC_DQBUF, {type=%#x"
-              " /* V4L2_BUF_TYPE_??? */}) = -1 EBADF (%m)\n",
-              p_v4l2_buffer->type);
+       printf("ioctl(-1, %s, {type=%#x" NRAW(" /* V4L2_BUF_TYPE_??? */")
+              "}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_DQBUF), p_v4l2_buffer->type);
 
        /* VIDIOC_G_FBUF */
        ioctl(-1, VIDIOC_G_FBUF, 0);
-       printf("ioctl(-1, VIDIOC_G_FBUF, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_FBUF));
 
        ioctl(-1, VIDIOC_G_FBUF, page);
-       printf("ioctl(-1, VIDIOC_G_FBUF, %p) = -1 EBADF (%m)\n", page);
+       printf("ioctl(-1, %s, %p) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_FBUF), page);
 
        /* VIDIOC_S_FBUF */
        ioctl(-1, VIDIOC_S_FBUF, 0);
-       printf("ioctl(-1, VIDIOC_S_FBUF, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_FBUF));
 
        struct v4l2_framebuffer *const p_v4l2_framebuffer =
                page_end - sizeof(*p_v4l2_framebuffer);
        ioctl(-1, VIDIOC_S_FBUF, p_v4l2_framebuffer);
-       printf("ioctl(-1, VIDIOC_S_FBUF, {capability=%#x"
+       printf("ioctl(-1, %s, {capability=%#x"
               ", flags=%#x, base=%p}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_FBUF),
               p_v4l2_framebuffer->capability,
               p_v4l2_framebuffer->flags,
               p_v4l2_framebuffer->base);
 
        /* VIDIOC_STREAMON */
        ioctl(-1, VIDIOC_STREAMON, 0);
-       printf("ioctl(-1, VIDIOC_STREAMON, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_STREAMON));
 
        int *const p_int = page_end - sizeof(int);
        ioctl(-1, VIDIOC_STREAMON, p_int);
-       printf("ioctl(-1, VIDIOC_STREAMON, [%#x /* V4L2_BUF_TYPE_??? */])"
-              " = -1 EBADF (%m)\n", *p_int);
+       printf("ioctl(-1, %s, [%#x" NRAW(" /* V4L2_BUF_TYPE_??? */") "])"
+              " = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_STREAMON), *p_int);
 
        /* VIDIOC_STREAMOFF */
        ioctl(-1, VIDIOC_STREAMOFF, 0);
-       printf("ioctl(-1, VIDIOC_STREAMOFF, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_STREAMOFF));
 
        ioctl(-1, VIDIOC_STREAMOFF, p_int);
-       printf("ioctl(-1, VIDIOC_STREAMOFF, [%#x /* V4L2_BUF_TYPE_??? */])"
-              " = -1 EBADF (%m)\n", *p_int);
+       printf("ioctl(-1, %s, [%#x" NRAW(" /* V4L2_BUF_TYPE_??? */") "])"
+              " = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_STREAMOFF), *p_int);
 
        /* VIDIOC_G_PARM */
        ioctl(-1, VIDIOC_G_PARM, 0);
-       printf("ioctl(-1, VIDIOC_G_PARM, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_PARM));
 
        struct v4l2_streamparm *const p_v4l2_streamparm =
                page_end - sizeof(*p_v4l2_streamparm);
        ioctl(-1, VIDIOC_G_PARM, p_v4l2_streamparm);
-       printf("ioctl(-1, VIDIOC_G_PARM, {type=%#x /* V4L2_BUF_TYPE_??? */})"
-              " = -1 EBADF (%m)\n", p_v4l2_streamparm->type);
+       printf("ioctl(-1, %s, {type=%#x" NRAW(" /* V4L2_BUF_TYPE_??? */") "})"
+              " = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_PARM), p_v4l2_streamparm->type);
 
        /* VIDIOC_S_PARM */
        ioctl(-1, VIDIOC_S_PARM, 0);
-       printf("ioctl(-1, VIDIOC_S_PARM, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_PARM));
 
        ioctl(-1, VIDIOC_S_PARM, p_v4l2_streamparm);
-       printf("ioctl(-1, VIDIOC_S_PARM, {type=%#x /* V4L2_BUF_TYPE_??? */})"
-              " = -1 EBADF (%m)\n", p_v4l2_streamparm->type);
+       printf("ioctl(-1, %s, {type=%#x" NRAW(" /* V4L2_BUF_TYPE_??? */") "})"
+              " = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_PARM), p_v4l2_streamparm->type);
 
        TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_streamparm, p_streamparm);
        p_streamparm->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
@@ -633,91 +1005,135 @@ main(void)
        p_streamparm->parm.capture.timeperframe.numerator = 0xdeadbeef;
        p_streamparm->parm.capture.timeperframe.denominator = 0xbadc0ded;
        ioctl(-1, VIDIOC_S_PARM, p_streamparm);
-       printf("ioctl(-1, VIDIOC_S_PARM, {type=V4L2_BUF_TYPE_VIDEO_CAPTURE"
-              ", parm.capture={capability=V4L2_CAP_TIMEPERFRAME"
-              ", capturemode=V4L2_MODE_HIGHQUALITY, timeperframe=%u/%u"
-              ", extendedmode=%u, readbuffers=%u}}) = -1 EBADF (%m)\n",
+       printf("ioctl(-1, %s, {type=" XLAT_FMT
+              ", parm.capture={capability=" XLAT_FMT
+              ", capturemode=" XLAT_FMT ", timeperframe=%u/%u"
+              ", extendedmode=%#x, readbuffers=%u}}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_PARM), XLAT_ARGS(V4L2_BUF_TYPE_VIDEO_CAPTURE),
+              XLAT_ARGS(V4L2_CAP_TIMEPERFRAME), XLAT_ARGS(V4L2_MODE_HIGHQUALITY),
               p_streamparm->parm.capture.timeperframe.numerator,
               p_streamparm->parm.capture.timeperframe.denominator, -1U, -1U);
 
        p_streamparm->type = V4L2_BUF_TYPE_VIDEO_OUTPUT;
        p_streamparm->parm.output.outputmode = 0;
        ioctl(-1, VIDIOC_S_PARM, p_streamparm);
-       printf("ioctl(-1, VIDIOC_S_PARM, {type=V4L2_BUF_TYPE_VIDEO_OUTPUT"
-              ", parm.output={capability=V4L2_CAP_TIMEPERFRAME"
+       printf("ioctl(-1, %s, {type=" XLAT_FMT
+              ", parm.output={capability=" XLAT_FMT
               ", outputmode=0, timeperframe=%u/%u"
-              ", extendedmode=%u, writebuffers=%u}}) = -1 EBADF (%m)\n",
+              ", extendedmode=%#x, writebuffers=%u}}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_PARM), XLAT_ARGS(V4L2_BUF_TYPE_VIDEO_OUTPUT),
+              XLAT_ARGS(V4L2_CAP_TIMEPERFRAME),
               p_streamparm->parm.output.timeperframe.numerator,
               p_streamparm->parm.output.timeperframe.denominator, -1U, -1U);
 
        /* VIDIOC_G_STD */
        ioctl(-1, VIDIOC_G_STD, 0);
-       printf("ioctl(-1, VIDIOC_G_STD, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_STD));
 
        ioctl(-1, VIDIOC_G_STD, page);
-       printf("ioctl(-1, VIDIOC_G_STD, %p) = -1 EBADF (%m)\n", page);
+       printf("ioctl(-1, %s, %p) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_STD), page);
 
        /* VIDIOC_S_STD */
        ioctl(-1, VIDIOC_S_STD, 0);
-       printf("ioctl(-1, VIDIOC_S_STD, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_STD));
 
        long long *const p_longlong = page_end - sizeof(*p_longlong);
        ioctl(-1, VIDIOC_S_STD, p_longlong);
-       printf("ioctl(-1, VIDIOC_S_STD, [%#llx]) = -1 EBADF (%m)\n",
-              *p_longlong);
+       printf("ioctl(-1, %s, [%#llx]) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_STD), *p_longlong);
 
        /* VIDIOC_ENUMSTD */
        ioctl(-1, VIDIOC_ENUMSTD, 0);
-       printf("ioctl(-1, VIDIOC_ENUMSTD, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_ENUMSTD));
 
        struct v4l2_standard *const p_v4l2_standard =
                page_end - sizeof(*p_v4l2_standard);
        ioctl(-1, VIDIOC_ENUMSTD, p_v4l2_standard);
-       printf("ioctl(-1, VIDIOC_ENUMSTD, {index=%u}) = -1 EBADF (%m)\n",
-              p_v4l2_standard->index);
+       printf("ioctl(-1, %s, {index=%u}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_ENUMSTD), p_v4l2_standard->index);
 
        /* VIDIOC_ENUMINPUT */
        ioctl(-1, VIDIOC_ENUMINPUT, 0);
-       printf("ioctl(-1, VIDIOC_ENUMINPUT, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_ENUMINPUT));
 
        struct v4l2_input *const p_v4l2_input =
                page_end - sizeof(*p_v4l2_input);
        ioctl(-1, VIDIOC_ENUMINPUT, p_v4l2_input);
-       printf("ioctl(-1, VIDIOC_ENUMINPUT, {index=%u}) = -1 EBADF (%m)\n",
-              p_v4l2_input->index);
+       printf("ioctl(-1, %s, {index=%u}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_ENUMINPUT), p_v4l2_input->index);
 
        /* VIDIOC_G_CTRL */
        ioctl(-1, VIDIOC_G_CTRL, 0);
-       printf("ioctl(-1, VIDIOC_G_CTRL, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_CTRL));
+
+       static const struct v4l2_control v4l2_control_vals[] = {
+               { .id = 0,                    .value = 3141592653U },
+               { .id = 0x97abcd,             .value = 1234567890U },
+               { .id = V4L2_CTRL_CLASS_USER, .value = 0 },
+               { .id = 0x990a64,             .value = 42 },
+               { .id = 0xa31234,             .value = 1 },
+               { .id = 0xa40000,             .value = -1 },
+       };
+       static const char *id_strs[] = {
+               "0" NRAW(" /* V4L2_CID_??? */"),
+               "0x97abcd" NRAW(" /* V4L2_CID_??? */"),
+               XLAT_KNOWN(0x980000, "V4L2_CTRL_CLASS_USER+0"),
+               XLAT_KNOWN(0x990a64, "V4L2_CID_MPEG_VIDEO_H264_CPB_SIZE"),
+               XLAT_KNOWN(0xa31234, "V4L2_CTRL_CLASS_DETECT+0x1234"),
+               "0xa40000" NRAW(" /* V4L2_CID_??? */"),
+       };
 
        struct v4l2_control *const p_v4l2_control =
                page_end - sizeof(*p_v4l2_control);
        ioctl(-1, VIDIOC_G_CTRL, p_v4l2_control);
-       printf("ioctl(-1, VIDIOC_G_CTRL, {id=%#x /* V4L2_CID_??? */})"
-              " = -1 EBADF (%m)\n", p_v4l2_control->id);
+       printf("ioctl(-1, %s, {id=%#x" NRAW(" /* V4L2_CID_??? */")
+              "}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_CTRL), p_v4l2_control->id);
 
        /* VIDIOC_S_CTRL */
        ioctl(-1, VIDIOC_S_CTRL, 0);
-       printf("ioctl(-1, VIDIOC_S_CTRL, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_CTRL));
 
        ioctl(-1, VIDIOC_S_CTRL, p_v4l2_control);
-       printf("ioctl(-1, VIDIOC_S_CTRL, {id=%#x /* V4L2_CID_??? */"
+       printf("ioctl(-1, %s, {id=%#x" NRAW(" /* V4L2_CID_??? */")
               ", value=%d}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_CTRL),
               p_v4l2_control->id, p_v4l2_control->value);
 
+       for (size_t i = 0; i < ARRAY_SIZE(id_strs); i++) {
+               struct v4l2_control v4l2_c = v4l2_control_vals[i];
+
+               ioctl(-1, VIDIOC_G_CTRL, &v4l2_c);
+               printf("ioctl(-1, %s, {id=%s}) = -1 EBADF (%m)\n",
+                      XLAT_STR(VIDIOC_G_CTRL), id_strs[i]);
+
+               ioctl(-1, VIDIOC_S_CTRL, &v4l2_c);
+               printf("ioctl(-1, %s, {id=%s, value=%d}) = -1 EBADF (%m)\n",
+                      XLAT_STR(VIDIOC_S_CTRL), id_strs[i], v4l2_c.value);
+       }
+
        /* VIDIOC_G_TUNER */
        ioctl(-1, VIDIOC_G_TUNER, 0);
-       printf("ioctl(-1, VIDIOC_G_TUNER, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_TUNER));
 
        struct v4l2_tuner *const p_v4l2_tuner =
                page_end - sizeof(*p_v4l2_tuner);
        ioctl(-1, VIDIOC_G_TUNER, p_v4l2_tuner);
-       printf("ioctl(-1, VIDIOC_G_TUNER, {index=%u})"
-              " = -1 EBADF (%m)\n", p_v4l2_tuner->index);
+       printf("ioctl(-1, %s, {index=%u}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_TUNER), p_v4l2_tuner->index);
 
        /* VIDIOC_S_TUNER */
        ioctl(-1, VIDIOC_S_TUNER, 0);
-       printf("ioctl(-1, VIDIOC_S_TUNER, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_TUNER));
 
        TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_tuner, p_tuner);
        p_tuner->index = 0x4fb6df39;
@@ -731,79 +1147,98 @@ main(void)
        p_tuner->signal = 0x10bf92c8;
        p_tuner->afc = 0x3bf7e18b;
        ioctl(-1, VIDIOC_S_TUNER, p_tuner);
-       printf("ioctl(-1, VIDIOC_S_TUNER, {index=%u"
-              ", name=\"cum tacent clamant\""
-              ", type=V4L2_TUNER_RADIO, capability=V4L2_TUNER_CAP_LOW"
+       printf("ioctl(-1, %s, {index=%u, name=\"cum tacent clamant\""
+              ", type=" XLAT_FMT ", capability=" XLAT_FMT
               ", rangelow=%u, rangehigh=%u"
-              ", rxsubchans=V4L2_TUNER_SUB_MONO"
-              ", audmode=V4L2_TUNER_MODE_MONO, signal=%d, afc=%d"
-              "}) = -1 EBADF (%m)\n",
-              p_tuner->index, p_tuner->rangelow,
-              p_tuner->rangehigh, p_tuner->signal, p_tuner->afc);
+              ", rxsubchans=" XLAT_FMT ", audmode=" XLAT_FMT
+              ", signal=%d, afc=%d}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_TUNER), p_tuner->index,
+              XLAT_ARGS(V4L2_TUNER_RADIO), XLAT_ARGS(V4L2_TUNER_CAP_LOW),
+              p_tuner->rangelow, p_tuner->rangehigh,
+              XLAT_ARGS(V4L2_TUNER_SUB_MONO), XLAT_ARGS(V4L2_TUNER_MODE_MONO),
+              p_tuner->signal, p_tuner->afc);
 
        /* VIDIOC_QUERYCTRL */
        ioctl(-1, VIDIOC_QUERYCTRL, 0);
-       printf("ioctl(-1, VIDIOC_QUERYCTRL, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_QUERYCTRL));
 
        struct v4l2_queryctrl *const p_v4l2_queryctrl =
                page_end - sizeof(*p_v4l2_queryctrl);
        ioctl(-1, VIDIOC_QUERYCTRL, p_v4l2_queryctrl);
-#ifdef V4L2_CTRL_FLAG_NEXT_CTRL
-       printf("ioctl(-1, VIDIOC_QUERYCTRL, {id=V4L2_CTRL_FLAG_NEXT_CTRL"
-              "|%#x /* V4L2_CID_??? */}) = -1 EBADF (%m)\n",
-              p_v4l2_queryctrl->id & ~V4L2_CTRL_FLAG_NEXT_CTRL);
+       printf("ioctl(-1, %s, {id="
+#if XLAT_RAW
+             "%#x"
+#else
+              XLAT_FMT "|%#x /* V4L2_CID_??? */"
+#endif
+              "}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_QUERYCTRL),
+#if XLAT_RAW
+              p_v4l2_queryctrl->id
 #else
-       printf("ioctl(-1, VIDIOC_QUERYCTRL, {id=%#x /* V4L2_CID_??? */})"
-              " = -1 EBADF (%m)\n", p_v4l2_queryctrl->id);
+              XLAT_ARGS(V4L2_CTRL_FLAG_NEXT_CTRL),
+              p_v4l2_queryctrl->id & ~V4L2_CTRL_FLAG_NEXT_CTRL
 #endif
+              );
 
        TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_queryctrl, p_queryctrl);
        p_queryctrl->id = V4L2_CID_SATURATION;
        ioctl(-1, VIDIOC_QUERYCTRL, p_queryctrl);
-       printf("ioctl(-1, VIDIOC_QUERYCTRL, {id=V4L2_CID_SATURATION})"
-              " = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, {id=" XLAT_FMT "}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_QUERYCTRL), XLAT_ARGS(V4L2_CID_SATURATION));
 
        /* VIDIOC_G_INPUT */
        ioctl(-1, VIDIOC_G_INPUT, 0);
-       printf("ioctl(-1, VIDIOC_G_INPUT, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_INPUT));
 
        ioctl(-1, VIDIOC_G_INPUT, page);
-       printf("ioctl(-1, VIDIOC_G_INPUT, %p) = -1 EBADF (%m)\n", page);
+       printf("ioctl(-1, %s, %p) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_INPUT), page);
 
        /* VIDIOC_S_INPUT */
        ioctl(-1, VIDIOC_S_INPUT, 0);
-       printf("ioctl(-1, VIDIOC_S_INPUT, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_INPUT));
 
        ioctl(-1, VIDIOC_S_INPUT, p_int);
-       printf("ioctl(-1, VIDIOC_S_INPUT, [%u]) = -1 EBADF (%m)\n", *p_int);
+       printf("ioctl(-1, %s, [%u]) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_INPUT), *p_int);
 
        /* VIDIOC_CROPCAP */
        ioctl(-1, VIDIOC_CROPCAP, 0);
-       printf("ioctl(-1, VIDIOC_CROPCAP, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_CROPCAP));
 
        struct v4l2_cropcap *const p_v4l2_cropcap =
                page_end - sizeof(*p_v4l2_cropcap);
        ioctl(-1, VIDIOC_CROPCAP, p_v4l2_cropcap);
-       printf("ioctl(-1, VIDIOC_CROPCAP, {type=%#x /* V4L2_BUF_TYPE_??? */})"
-              " = -1 EBADF (%m)\n", p_v4l2_cropcap->type);
+       printf("ioctl(-1, %s, {type=%#x" NRAW(" /* V4L2_BUF_TYPE_??? */") "})"
+              " = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_CROPCAP), p_v4l2_cropcap->type);
 
        /* VIDIOC_G_CROP */
        ioctl(-1, VIDIOC_G_CROP, 0);
-       printf("ioctl(-1, VIDIOC_G_CROP, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_CROP));
 
        struct v4l2_crop *const p_v4l2_crop =
                page_end - sizeof(*p_v4l2_crop);
        ioctl(-1, VIDIOC_G_CROP, p_v4l2_crop);
-       printf("ioctl(-1, VIDIOC_G_CROP, {type=%#x /* V4L2_BUF_TYPE_??? */})"
-              " = -1 EBADF (%m)\n", p_v4l2_crop->type);
+       printf("ioctl(-1, %s, {type=%#x" NRAW(" /* V4L2_BUF_TYPE_??? */") "})"
+              " = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_CROP), p_v4l2_crop->type);
 
        /* VIDIOC_S_CROP */
        ioctl(-1, VIDIOC_S_CROP, 0);
-       printf("ioctl(-1, VIDIOC_S_CROP, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_CROP));
 
        ioctl(-1, VIDIOC_S_CROP, p_v4l2_crop);
-       printf("ioctl(-1, VIDIOC_S_CROP, {type=%#x /* V4L2_BUF_TYPE_??? */"
+       printf("ioctl(-1, %s, {type=%#x" NRAW(" /* V4L2_BUF_TYPE_??? */")
               ", c={left=%d, top=%d, width=%u, height=%u}}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_CROP),
               p_v4l2_crop->type,
               p_v4l2_crop->c.left,
               p_v4l2_crop->c.top,
@@ -813,36 +1248,42 @@ main(void)
 #ifdef VIDIOC_S_EXT_CTRLS
        /* VIDIOC_S_EXT_CTRLS */
        ioctl(-1, VIDIOC_S_EXT_CTRLS, 0);
-       printf("ioctl(-1, VIDIOC_S_EXT_CTRLS, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_EXT_CTRLS));
 
        TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_ext_controls, p_ext_controls);
        p_ext_controls->ctrl_class = V4L2_CTRL_CLASS_USER;
        p_ext_controls->count = 0;
        p_ext_controls->controls = (void *) -2UL;
        ioctl(-1, VIDIOC_S_EXT_CTRLS, p_ext_controls);
-       printf("ioctl(-1, VIDIOC_S_EXT_CTRLS, {ctrl_class=V4L2_CTRL_CLASS_USER"
-              ", count=%u}) = -1 EBADF (%m)\n", p_ext_controls->count);
+       printf("ioctl(-1, %s, {ctrl_class=" XLAT_FMT ", count=%u})"
+              " = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_EXT_CTRLS), XLAT_ARGS(V4L2_CTRL_CLASS_USER),
+              p_ext_controls->count);
 
        p_ext_controls->ctrl_class = 0x00a30000;
        p_ext_controls->count = magic;
        ioctl(-1, VIDIOC_S_EXT_CTRLS, p_ext_controls);
-       printf("ioctl(-1, VIDIOC_S_EXT_CTRLS, {ctrl_class=V4L2_CTRL_CLASS_DETECT"
+       printf("ioctl(-1, %s, {ctrl_class=" XLAT_FMT
               ", count=%u, controls=%p}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_EXT_CTRLS), XLAT_ARGS(V4L2_CTRL_CLASS_DETECT),
               p_ext_controls->count, p_ext_controls->controls);
 
        p_ext_controls->ctrl_class = 0x00a40000;
        p_ext_controls->count = magic;
        ioctl(-1, VIDIOC_S_EXT_CTRLS, p_ext_controls);
-       printf("ioctl(-1, VIDIOC_S_EXT_CTRLS"
-              ", {ctrl_class=0xa40000 /* V4L2_CTRL_CLASS_??? */"
+       printf("ioctl(-1, %s"
+              ", {ctrl_class=0xa40000" NRAW(" /* V4L2_CTRL_CLASS_??? */")
               ", count=%u, controls=%p}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_EXT_CTRLS),
               p_ext_controls->count, p_ext_controls->controls);
 
        p_ext_controls->ctrl_class = V4L2_CTRL_CLASS_MPEG;
        p_ext_controls->count = magic;
        ioctl(-1, VIDIOC_S_EXT_CTRLS, p_ext_controls);
-       printf("ioctl(-1, VIDIOC_S_EXT_CTRLS, {ctrl_class=V4L2_CTRL_CLASS_MPEG"
+       printf("ioctl(-1, %s, {ctrl_class=" XLAT_FMT
               ", count=%u, controls=%p}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_S_EXT_CTRLS), XLAT_ARGS(V4L2_CTRL_CLASS_MPEG),
               p_ext_controls->count, p_ext_controls->controls);
 
 # if HAVE_DECL_V4L2_CTRL_TYPE_STRING
@@ -858,107 +1299,132 @@ main(void)
                tail_alloc(p_ext_controls->controls[1].size);
 
        ioctl(-1, VIDIOC_S_EXT_CTRLS, p_ext_controls);
-       printf("ioctl(-1, VIDIOC_S_EXT_CTRLS"
-              ", {ctrl_class=V4L2_CTRL_CLASS_MPEG, count=%u, controls="
-              "[{id=V4L2_CID_BRIGHTNESS, size=0, value=%d, value64=%lld}"
-              ", {id=V4L2_CID_CONTRAST, size=2, string=\"\\377\\377\"}"
-              "] => controls="
-              "[{id=V4L2_CID_BRIGHTNESS, size=0, value=%d, value64=%lld}"
-              ", {id=V4L2_CID_CONTRAST, size=2, string=\"\\377\\377\"}"
+       printf("ioctl(-1, %s, {ctrl_class=" XLAT_FMT ", count=%u, controls="
+              "[{id=" XLAT_FMT ", size=0, value=%d, value64=%lld}"
+              ", {id=" XLAT_FMT ", size=2, string=\"\\377\\377\"}"
+              "]} => {controls="
+              "[{id=" XLAT_FMT ", size=0, value=%d, value64=%lld}"
+              ", {id=" XLAT_FMT ", size=2, string=\"\\377\\377\"}"
               "], error_idx=%u}) = -1 EBADF (%m)\n",
-              p_ext_controls->count,
+              XLAT_STR(VIDIOC_S_EXT_CTRLS), XLAT_ARGS(V4L2_CTRL_CLASS_MPEG),
+              p_ext_controls->count, XLAT_ARGS(V4L2_CID_BRIGHTNESS),
               p_ext_controls->controls[0].value,
               (long long) p_ext_controls->controls[0].value64,
+              XLAT_ARGS(V4L2_CID_CONTRAST), XLAT_ARGS(V4L2_CID_BRIGHTNESS),
               p_ext_controls->controls[0].value,
               (long long) p_ext_controls->controls[0].value64,
-              p_ext_controls->error_idx);
+              XLAT_ARGS(V4L2_CID_CONTRAST), p_ext_controls->error_idx);
 
        ++p_ext_controls->count;
        ioctl(-1, VIDIOC_S_EXT_CTRLS, p_ext_controls);
-       printf("ioctl(-1, VIDIOC_S_EXT_CTRLS"
-              ", {ctrl_class=V4L2_CTRL_CLASS_MPEG, count=%u, controls="
-              "[{id=V4L2_CID_BRIGHTNESS, size=0, value=%d, value64=%lld}"
-              ", {id=V4L2_CID_CONTRAST, size=2, string=\"\\377\\377\"}"
+       printf("ioctl(-1, %s, {ctrl_class=" XLAT_FMT ", count=%u, controls="
+              "[{id=" XLAT_FMT ", size=0, value=%d, value64=%lld}"
+              ", {id=" XLAT_FMT ", size=2, string=\"\\377\\377\"}"
               ", ... /* %p */]}) = -1 EBADF (%m)\n",
-              p_ext_controls->count,
+              XLAT_STR(VIDIOC_S_EXT_CTRLS), XLAT_ARGS(V4L2_CTRL_CLASS_MPEG),
+              p_ext_controls->count, XLAT_ARGS(V4L2_CID_BRIGHTNESS),
               p_ext_controls->controls[0].value,
               (long long) p_ext_controls->controls[0].value64,
-              p_ext_controls->controls + 2);
+              XLAT_ARGS(V4L2_CID_CONTRAST), p_ext_controls->controls + 2);
 # endif /* HAVE_DECL_V4L2_CTRL_TYPE_STRING */
 
        /* VIDIOC_TRY_EXT_CTRLS */
        ioctl(-1, VIDIOC_TRY_EXT_CTRLS, 0);
-       printf("ioctl(-1, VIDIOC_TRY_EXT_CTRLS, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_TRY_EXT_CTRLS));
 
        p_ext_controls->ctrl_class = V4L2_CTRL_CLASS_USER;
        p_ext_controls->count = magic;
        p_ext_controls->controls = (void *) -2UL;
        ioctl(-1, VIDIOC_TRY_EXT_CTRLS, p_ext_controls);
-       printf("ioctl(-1, VIDIOC_TRY_EXT_CTRLS"
-              ", {ctrl_class=V4L2_CTRL_CLASS_USER, count=%u, controls=%p})"
+       printf("ioctl(-1, %s, {ctrl_class=" XLAT_FMT ", count=%u, controls=%p})"
               " = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_TRY_EXT_CTRLS), XLAT_ARGS(V4L2_CTRL_CLASS_USER),
               p_ext_controls->count, p_ext_controls->controls);
 
        /* VIDIOC_G_EXT_CTRLS */
        ioctl(-1, VIDIOC_G_EXT_CTRLS, 0);
-       printf("ioctl(-1, VIDIOC_G_EXT_CTRLS, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_EXT_CTRLS));
 
        ioctl(-1, VIDIOC_G_EXT_CTRLS, p_ext_controls);
-       printf("ioctl(-1, VIDIOC_G_EXT_CTRLS"
-              ", {ctrl_class=V4L2_CTRL_CLASS_USER, count=%u, controls=%p"
+       printf("ioctl(-1, %s, {ctrl_class=" XLAT_FMT ", count=%u, controls=%p"
               ", error_idx=%u}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_G_EXT_CTRLS), XLAT_ARGS(V4L2_CTRL_CLASS_USER),
               p_ext_controls->count, p_ext_controls->controls,
               p_ext_controls->error_idx);
 #endif /* VIDIOC_S_EXT_CTRLS */
 
-#ifdef VIDIOC_ENUM_FRAMESIZES
+#ifdef HAVE_STRUCT_V4L2_FRMSIZEENUM
        ioctl(-1, VIDIOC_ENUM_FRAMESIZES, 0);
-       printf("ioctl(-1, VIDIOC_ENUM_FRAMESIZES, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_ENUM_FRAMESIZES));
 
        TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_frmsizeenum, p_frmsizeenum);
        p_frmsizeenum->index = magic;
        p_frmsizeenum->pixel_format = fourcc(cc[0], cc[1], cc[2], cc[3]);
 
        ioctl(-1, VIDIOC_ENUM_FRAMESIZES, p_frmsizeenum);
-       printf("ioctl(-1, VIDIOC_ENUM_FRAMESIZES, {index=%u"
-              ", pixel_format=v4l2_fourcc('%c', '\\%c', '\\%c', '\\x%x')})"
-              " = -1 EBADF (%m)\n", p_frmsizeenum->index,
-              cc[0], cc[1], cc[2], cc[3]);
-#endif /* VIDIOC_ENUM_FRAMESIZES */
-
-#ifdef VIDIOC_ENUM_FRAMEINTERVALS
+       printf("ioctl(-1, %s, {index=%u, pixel_format="
+# if XLAT_RAW
+              "0x%hhx%hhx%hhx%hhx"
+# else /* !XLAT_RAW */
+              "v4l2_fourcc('%c', '\\%c', '\\%c', '\\x%x')"
+# endif /* XLAT_RAW */
+              "}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_ENUM_FRAMESIZES), p_frmsizeenum->index,
+# if XLAT_RAW
+              cc[3], cc[2], cc[1], cc[0]
+# else /* !XLAT_RAW */
+              cc[0], cc[1], cc[2], cc[3]
+# endif /* XLAT_RAW */
+              );
+#endif /* HAVE_STRUCT_V4L2_FRMSIZEENUM */
+
+#ifdef HAVE_STRUCT_V4L2_FRMIVALENUM
        ioctl(-1, VIDIOC_ENUM_FRAMEINTERVALS, 0);
-       printf("ioctl(-1, VIDIOC_ENUM_FRAMEINTERVALS, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_ENUM_FRAMEINTERVALS));
 
        struct v4l2_frmivalenum *const p_v4l2_frmivalenum =
                page_end - sizeof(*p_v4l2_frmivalenum);
        ioctl(-1, VIDIOC_ENUM_FRAMEINTERVALS, p_v4l2_frmivalenum);
-       printf("ioctl(-1, VIDIOC_ENUM_FRAMEINTERVALS, {index=%u"
-              ", pixel_format=v4l2_fourcc('\\x%x', '\\x%x', '\\x%x', '\\x%x')"
+       printf("ioctl(-1, %s, {index=%u, pixel_format="
+# if XLAT_RAW
+              "%#x"
+# else /* !XLAT_RAW */
+              "v4l2_fourcc('\\x%x', '\\x%x', '\\x%x', '\\x%x')"
+# endif /* XLAT_RAW */
               ", width=%u, height=%u}) = -1 EBADF (%m)\n",
-              p_v4l2_frmivalenum->index,
+              XLAT_STR(VIDIOC_ENUM_FRAMEINTERVALS), p_v4l2_frmivalenum->index,
+# if XLAT_RAW
+              p_v4l2_frmivalenum->pixel_format,
+# else /* !XLAT_RAW */
               cc0(p_v4l2_frmivalenum->pixel_format),
               cc1(p_v4l2_frmivalenum->pixel_format),
               cc2(p_v4l2_frmivalenum->pixel_format),
               cc3(p_v4l2_frmivalenum->pixel_format),
+# endif /* XLAT_RAW */
               p_v4l2_frmivalenum->width,
               p_v4l2_frmivalenum->height);
-#endif /* VIDIOC_ENUM_FRAMEINTERVALS */
+#endif /* HAVE_STRUCT_V4L2_FRMIVALENUM */
 
-#ifdef VIDIOC_CREATE_BUFS
+#ifdef HAVE_STRUCT_V4L2_CREATE_BUFFERS
        ioctl(-1, VIDIOC_CREATE_BUFS, 0);
-       printf("ioctl(-1, VIDIOC_CREATE_BUFS, NULL) = -1 EBADF (%m)\n");
+       printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_CREATE_BUFS));
 
        struct v4l2_create_buffers *const p_v4l2_create_buffers =
                page_end - sizeof(*p_v4l2_create_buffers);
        ioctl(-1, VIDIOC_CREATE_BUFS, p_v4l2_create_buffers);
-       printf("ioctl(-1, VIDIOC_CREATE_BUFS, {count=%u, memory=%#x"
-              " /* V4L2_MEMORY_??? */, format={type=%#x"
-              " /* V4L2_BUF_TYPE_??? */}}) = -1 EBADF (%m)\n",
+       printf("ioctl(-1, %s, {count=%u, memory=%#x"
+              NRAW(" /* V4L2_MEMORY_??? */") ", format={type=%#x"
+              NRAW(" /* V4L2_BUF_TYPE_??? */") "}}) = -1 EBADF (%m)\n",
+              XLAT_STR(VIDIOC_CREATE_BUFS),
               p_v4l2_create_buffers->count,
               p_v4l2_create_buffers->memory,
               p_v4l2_create_buffers->format.type);
-#endif /* VIDIOC_CREATE_BUFS */
+#endif /* HAVE_STRUCT_V4L2_CREATE_BUFFERS */
 
        puts("+++ exited with 0 +++");
        return 0;
diff --git a/tests/ioctl_watchdog.c b/tests/ioctl_watchdog.c
new file mode 100644 (file)
index 0000000..d1af836
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * Check decoding of WDIOC* commands of ioctl syscall.
+ *
+ * Copyright (c) 2019 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#include <stdio.h>
+#include <string.h>
+#include <sys/ioctl.h>
+#include <linux/watchdog.h>
+
+#define XLAT_MACROS_ONLY
+#include "xlat/watchdog_ioctl_cmds.h"
+#undef XLAT_MACROS_ONLY
+
+#define RVAL_EBADF " = -1 EBADF (%m)\n"
+
+int
+main(void)
+{
+       int val = 123;
+
+       ioctl(-1, WDIOC_GETSTATUS, &val);
+       printf("ioctl(-1, WDIOC_GETSTATUS, %p)" RVAL_EBADF, &val);
+
+       ioctl(-1, WDIOC_GETBOOTSTATUS, &val);
+       printf("ioctl(-1, WDIOC_GETBOOTSTATUS, %p)" RVAL_EBADF, &val);
+
+       ioctl(-1, WDIOC_GETTEMP, &val);
+       printf("ioctl(-1, WDIOC_GETTEMP, %p)" RVAL_EBADF, &val);
+
+       ioctl(-1, WDIOC_GETTIMEOUT, &val);
+       printf("ioctl(-1, WDIOC_GETTIMEOUT, %p)" RVAL_EBADF, &val);
+
+       ioctl(-1, WDIOC_GETPRETIMEOUT, &val);
+       printf("ioctl(-1, WDIOC_GETPRETIMEOUT, %p)" RVAL_EBADF, &val);
+
+       ioctl(-1, WDIOC_GETTIMELEFT, &val);
+       printf("ioctl(-1, WDIOC_GETTIMELEFT, %p)" RVAL_EBADF, &val);
+
+       ioctl(-1, WDIOC_SETTIMEOUT, &val);
+       printf("ioctl(-1, WDIOC_SETTIMEOUT, [123])" RVAL_EBADF);
+
+       ioctl(-1, WDIOC_SETPRETIMEOUT, &val);
+       printf("ioctl(-1, WDIOC_SETPRETIMEOUT, [123])" RVAL_EBADF);
+
+       ioctl(-1, WDIOC_KEEPALIVE);
+       printf("ioctl(-1, WDIOC_KEEPALIVE)" RVAL_EBADF);
+
+       ioctl(-1, _IOC(_IOC_NONE, 'W', 0xff, 0), &val);
+       printf("ioctl(-1, _IOC(_IOC_NONE, %#x, 0xff, 0), %p)" RVAL_EBADF,
+              'W', &val);
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
diff --git a/tests/ioctl_watchdog.gen.test b/tests/ioctl_watchdog.gen.test
new file mode 100755 (executable)
index 0000000..ed1c71f
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_watchdog +ioctl.test ); do not edit.
+set -- 
+. "${srcdir=.}/ioctl.test"
index 3f99b2db5a08c1034f4068245a5e9d5b50770fba..cba8e7be70fdf5f23214f3ab0c38e45821ced38f 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_ioperm
 
index f8904030af5658f0d63f44094e7f51a4db8c6e69..f8c772b6c5706717b4bfd435e7f12106089dbc41 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_iopl
 
diff --git a/tests/ioprio--pidns-translation.c b/tests/ioprio--pidns-translation.c
new file mode 100644 (file)
index 0000000..bcb49a8
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "ioprio.c"
diff --git a/tests/ioprio--pidns-translation.gen.test b/tests/ioprio--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..f6a9c72
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioprio--pidns-translation test_pidns -a18 -e trace=ioprio_get,ioprio_set); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a18 -e trace=ioprio_get,ioprio_set
index 6577596352ce43a42199ba6caf2d154b71a121a5..5d998a225db0b3d10e49fd6f75832613c9985771 100644 (file)
@@ -2,15 +2,15 @@
  * Check decoding of ioprio_get and ioprio_set syscalls.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2019 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-
-#include <asm/unistd.h>
+#include "scno.h"
+#include "pidns.h"
 
 #if defined(__NR_ioprio_get) && defined(__NR_ioprio_set)
 
@@ -30,12 +30,18 @@ enum {
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        static const kernel_ulong_t bogus_which =
                (kernel_ulong_t) 0xdeadfacefa57beefULL;
        static const kernel_ulong_t bogus_who =
                (kernel_ulong_t) 0xbadc0dedda7a1057ULL;
        static const kernel_ulong_t bogus_ioprio =
                (kernel_ulong_t) 0xdec0ded1facefeedULL;
+
+       const int pid = getpid();
+       const int pgid = getpgid(0);
+
 # if !XLAT_RAW
        static const char * const bogus_ioprio_str =
                "IOPRIO_PRIO_VALUE(0x7d677 /* IOPRIO_CLASS_??? */, 7917)";
@@ -46,6 +52,7 @@ main(void)
 
        rc = syscall(__NR_ioprio_get, bogus_which, bogus_who);
        errstr = sprintrc(rc);
+       pidns_print_leader();
 # if XLAT_RAW
        printf("ioprio_get(%#x, %d) = %s\n",
               (int) bogus_which, (int) bogus_who, errstr);
@@ -54,47 +61,52 @@ main(void)
               (int) bogus_which, (int) bogus_who, errstr);
 # endif
 
-       rc = syscall(__NR_ioprio_get, 1, 0);
+       rc = syscall(__NR_ioprio_get, 1, pid);
        errstr = sprintrc(rc);
+       pidns_print_leader();
+       printf("ioprio_get(");
 # if XLAT_RAW
-       printf("ioprio_get(0x1, 0) = %s\n", errstr);
+       printf("0x1, ");
 # elif XLAT_VERBOSE
-       printf("ioprio_get(0x1 /* IOPRIO_WHO_PROCESS */, 0) = %s", errstr);
-       if (rc >= 0) {
-               printf(" (IOPRIO_PRIO_VALUE(%u /* ", (unsigned int) rc >> 13);
-               printxval(ioprio_class, (unsigned int) rc >> 13,
-                         "IOPRIO_CLASS_???");
-               printf(" */, %u))", (unsigned int) rc & 0x1fff);
-       }
-       puts("");
+       printf("0x1 /* IOPRIO_WHO_PROCESS */, ");
 # else /* XLAT_ABBREV */
-       printf("ioprio_get(IOPRIO_WHO_PROCESS, 0) = %s", errstr);
+       printf("IOPRIO_WHO_PROCESS, ");
+# endif
+       printf("%d%s) = %s", pid, pidns_pid2str(PT_TGID), errstr);
+# if !XLAT_RAW
        if (rc >= 0) {
                printf(" (IOPRIO_PRIO_VALUE(");
                printxval(ioprio_class, (unsigned int) rc >> 13,
                          "IOPRIO_CLASS_???");
                printf(", %u))", (unsigned int) rc & 0x1fff);
        }
-       puts("");
 # endif
+       puts("");
 
-       rc = syscall(__NR_ioprio_set, 2, 0, 8191);
+       rc = syscall(__NR_ioprio_set, 2, pgid, 8191);
        errstr = sprintrc(rc);
+       pidns_print_leader();
+       printf("ioprio_set(");
 # if XLAT_RAW
-       printf("ioprio_set(%#x, 0, 8191) = %s\n", 2, errstr);
+       printf("%#x", 2);
 # elif XLAT_VERBOSE
-       printf("ioprio_set(%#x /* IOPRIO_WHO_PGRP */, 0, 8191"
-              " /* IOPRIO_PRIO_VALUE(0 /* IOPRIO_CLASS_NONE */, 8191) */)"
-              " = %s\n",
-              2, errstr);
+       printf("%#x /* IOPRIO_WHO_PGRP */", 2);
 # else /* XLAT_ABBREV */
-       printf("ioprio_set(IOPRIO_WHO_PGRP, 0"
-              ", IOPRIO_PRIO_VALUE(IOPRIO_CLASS_NONE, 8191)) = %s\n",
-              errstr);
+       printf("IOPRIO_WHO_PGRP");
+# endif
+       printf(", %d%s", pgid, pidns_pid2str(PT_PGID));
+# if XLAT_RAW
+       printf(", 8191)");
+# elif XLAT_VERBOSE
+       printf(", 8191 /* IOPRIO_PRIO_VALUE(0 /* IOPRIO_CLASS_NONE */, 8191) */)");
+# else /* XLAT_ABBREV */
+       printf(", IOPRIO_PRIO_VALUE(IOPRIO_CLASS_NONE, 8191))");
 # endif
+       printf(" = %s\n", errstr);
 
        rc = syscall(__NR_ioprio_set, bogus_which, bogus_who, bogus_ioprio);
        errstr = sprintrc(rc);
+       pidns_print_leader();
 # if XLAT_RAW
        printf("ioprio_set(%#x, %d, %d) = %s\n",
               (int) bogus_which, (int) bogus_who, (int) bogus_ioprio,
@@ -109,6 +121,7 @@ main(void)
               errstr);
 # endif
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
 
        return 0;
index 5c86f2079bc58c30210681bb27da528fa356a1b5..5cd0b603d0367bcd2e6ad26d32b58ac2e1bf4a0b 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of ipc syscall.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_ipc && defined HAVE_LINUX_IPC_H
 
index b12f4af3315f9aaa734ba787cf18c9796cf43eb8..55dc287f1a182a8664dbe24b8395d805bdd273ef 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 # define MSG_STAT_ANY 13
 #endif
 
+#undef TEST_MSGCTL_BOGUS_ADDR
+
+/*
+ * Starting with commit glibc-2.32~83, on every 32-bit architecture
+ * where 32-bit time_t support is enabled, glibc tries to retrieve
+ * the data provided in the third argument of msgctl call.
+ */
+#if GLIBC_PREREQ_GE(2, 32) && defined __TIMESIZE && __TIMESIZE != 64
+# define TEST_MSGCTL_BOGUS_ADDR 0
+#endif
 /*
  * Before glibc-2.22-122-gbe48165, ppc64 code tried to retrieve data
  * provided in third argument of msgctl call (in case of IPC_SET cmd)
  * which led to segmentation fault.
  */
-#undef TEST_MSGCTL_BOGUS_ADDR
-#if defined __GLIBC__ && defined POWERPC64
-# if !(defined __GLIBC_MINOR__) \
-   || ((__GLIBC__ << 16) + __GLIBC_MINOR__ < (2 << 16) + 23)
-#  define TEST_MSGCTL_BOGUS_ADDR 0
-# endif
-#endif /* __GLIBC__ && POWERPC64 */
+#if GLIBC_PREREQ_LT(2, 23) && (defined POWERPC64 || defined POWERPC64LE)
+# define TEST_MSGCTL_BOGUS_ADDR 0
+#endif
 
 #ifndef TEST_MSGCTL_BOGUS_ADDR
 # define TEST_MSGCTL_BOGUS_ADDR 1
@@ -43,6 +49,7 @@
 # define str_ipc_rmid "0"
 # define str_ipc_set "0x1"
 # define str_ipc_stat "0x2"
+# define str_ipc_info "0x3"
 # define str_msg_stat "0xb"
 # define str_msg_info "0xc"
 # define str_msg_stat_any "0xd"
@@ -55,6 +62,7 @@
 # define str_ipc_rmid "0 /\\* IPC_RMID \\*/"
 # define str_ipc_set "0x1 /\\* IPC_SET \\*/"
 # define str_ipc_stat "0x2 /\\* IPC_STAT \\*/"
+# define str_ipc_info "0x3 /\\* IPC_INFO \\*/"
 # define str_msg_stat "0xb /\\* MSG_STAT \\*/"
 # define str_msg_info "0xc /\\* MSG_INFO \\*/"
 # define str_msg_stat_any "0xd /\\* MSG_STAT_ANY \\*/"
@@ -66,6 +74,7 @@
 # define str_ipc_rmid "IPC_RMID"
 # define str_ipc_set "IPC_SET"
 # define str_ipc_stat "IPC_STAT"
+# define str_ipc_info "IPC_INFO"
 # define str_msg_stat "MSG_STAT"
 # define str_msg_info "MSG_INFO"
 # define str_msg_stat_any "MSG_STAT_ANY"
@@ -84,6 +93,68 @@ cleanup(void)
        id = -1;
 }
 
+static void
+print_msginfo(const char *const str_ipc_cmd,
+             const struct msginfo *const info,
+             const int rc)
+{
+       if (rc < 0) {
+               printf("msgctl\\(%d, (%s\\|)?%s, %p\\) = %s\n",
+                      id, str_ipc_64, str_ipc_cmd, info, sprintrc_grep(rc));
+               return;
+       }
+
+       printf("msgctl\\(%d, (%s\\|)?%s, \\{msgpool=%d, msgmap=%d, msgmax=%d"
+              ", msgmnb=%d, msgmni=%d, msgssz=%d, msgtql=%d, msgseg=%u\\}\\)"
+              " = %d\n",
+              id,
+              str_ipc_64,
+              str_ipc_cmd,
+              info->msgpool,
+              info->msgmap,
+              info->msgmax,
+              info->msgmnb,
+              info->msgmni,
+              info->msgssz,
+              info->msgtql,
+              (unsigned) info->msgseg,
+              rc);
+}
+
+static void
+print_msqid_ds(const char *const str_ipc_cmd,
+              const struct msqid_ds *const ds,
+              const int rc)
+{
+       if (rc < 0) {
+               printf("msgctl\\(%d, (%s\\|)?%s, %p\\) = %s\n",
+                      id, str_ipc_64, str_ipc_cmd, ds, sprintrc_grep(rc));
+               return;
+       }
+
+       printf("msgctl\\(%d, (%s\\|)?%s, \\{msg_perm=\\{uid=%u"
+              ", gid=%u, mode=%#o, key=%u, cuid=%u, cgid=%u\\}"
+              ", msg_stime=%u, msg_rtime=%u, msg_ctime=%u, msg_qnum=%u"
+              ", msg_qbytes=%u, msg_lspid=%d, msg_lrpid=%d\\}\\) = %d\n",
+              id,
+              str_ipc_64,
+              str_ipc_cmd,
+              (unsigned) ds->msg_perm.uid,
+              (unsigned) ds->msg_perm.gid,
+              (unsigned) ds->msg_perm.mode,
+              (unsigned) ds->msg_perm.__key,
+              (unsigned) ds->msg_perm.cuid,
+              (unsigned) ds->msg_perm.cgid,
+              (unsigned) ds->msg_stime,
+              (unsigned) ds->msg_rtime,
+              (unsigned) ds->msg_ctime,
+              (unsigned) ds->msg_qnum,
+              (unsigned) ds->msg_qbytes,
+              (int) ds->msg_lspid,
+              (int) ds->msg_lrpid,
+              rc);
+}
+
 int
 main(void)
 {
@@ -98,7 +169,10 @@ main(void)
        static const int bogus_flags = 0xface1e55 & ~IPC_CREAT;
 
        int rc;
-       struct msqid_ds ds;
+       union {
+               struct msqid_ds ds;
+               struct msginfo info;
+       } buf;
 
        rc = msgget(bogus_key, bogus_flags);
        printf("msgget\\(%#llx, %s\\|%#04o\\) = %s\n",
@@ -123,39 +197,32 @@ main(void)
               sprintrc_grep(rc));
 #endif
 
-       if (msgctl(id, IPC_STAT, &ds))
+       rc = msgctl(id, IPC_STAT, &buf.ds);
+       if (rc < 0)
                perror_msg_and_skip("msgctl IPC_STAT");
-       printf("msgctl\\(%d, (%s\\|)?%s, \\{msg_perm=\\{uid=%u"
-              ", gid=%u, mode=%#o, key=%u, cuid=%u, cgid=%u\\}, msg_stime=%u"
-              ", msg_rtime=%u, msg_ctime=%u, msg_qnum=%u, msg_qbytes=%u"
-              ", msg_lspid=%u, msg_lrpid=%u\\}\\) = 0\n",
-              id, str_ipc_64, str_ipc_stat,
-              (unsigned) ds.msg_perm.uid, (unsigned) ds.msg_perm.gid,
-              (unsigned) ds.msg_perm.mode, (unsigned) ds.msg_perm.__key,
-              (unsigned) ds.msg_perm.cuid, (unsigned) ds.msg_perm.cgid,
-              (unsigned) ds.msg_stime, (unsigned) ds.msg_rtime,
-              (unsigned) ds.msg_ctime, (unsigned) ds.msg_qnum,
-              (unsigned) ds.msg_qbytes, (unsigned) ds.msg_lspid,
-              (unsigned) ds.msg_lrpid);
-
-       if (msgctl(id, IPC_SET, &ds))
+       print_msqid_ds(str_ipc_stat, &buf.ds, rc);
+
+       if (msgctl(id, IPC_SET, &buf.ds))
                perror_msg_and_skip("msgctl IPC_SET");
        printf("msgctl\\(%d, (%s\\|)?%s, \\{msg_perm=\\{uid=%u"
-              ", gid=%u, mode=%#o\\}, ...\\}\\) = 0\n",
-              id, str_ipc_64, str_ipc_set, (unsigned) ds.msg_perm.uid,
-              (unsigned) ds.msg_perm.gid, (unsigned) ds.msg_perm.mode);
+              ", gid=%u, mode=%#o\\}, msg_qbytes=%u\\}\\) = 0\n",
+              id, str_ipc_64, str_ipc_set,
+              (unsigned) buf.ds.msg_perm.uid,
+              (unsigned) buf.ds.msg_perm.gid,
+              (unsigned) buf.ds.msg_perm.mode,
+              (unsigned) buf.ds.msg_qbytes);
 
-       rc = msgctl(0, MSG_INFO, &ds);
-       printf("msgctl\\(0, (%s\\|)?%s, %p\\) = %s\n",
-              str_ipc_64, str_msg_info, &ds, sprintrc_grep(rc));
+       rc = msgctl(id, IPC_INFO, &buf.ds);
+       print_msginfo(str_ipc_info, &buf.info, rc);
 
-       rc = msgctl(id, MSG_STAT, &ds);
-       printf("msgctl\\(%d, (%s\\|)?%s, %p\\) = %s\n",
-              id, str_ipc_64, str_msg_stat, &ds, sprintrc_grep(rc));
+       rc = msgctl(id, MSG_INFO, &buf.ds);
+       print_msginfo(str_msg_info, &buf.info, rc);
 
-       rc = msgctl(id, MSG_STAT_ANY, &ds);
-       printf("msgctl\\(%d, (%s\\|)?%s, %p\\) = %s\n",
-              id, str_ipc_64, str_msg_stat_any, &ds, sprintrc_grep(rc));
+       rc = msgctl(id, MSG_STAT, &buf.ds);
+       print_msqid_ds(str_msg_stat, &buf.ds, rc);
+
+       rc = msgctl(id, MSG_STAT_ANY, &buf.ds);
+       print_msqid_ds(str_msg_stat_any, &buf.ds, rc);
 
        return 0;
 }
index c1112cb64a10856094c262b09f31fc64dd6ccf39..be35075554ad58796a8a8fe10972cb7871ba2ea4 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_msgbuf-Xraw +ipc_msgbuf.test -Xraw -a22); do not edit.
-set -- -Xraw -a22
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_msgbuf-Xraw +ipc_msgbuf.test -Xraw -a19); do not edit.
+set -- -Xraw -a19
 . "${srcdir=.}/ipc_msgbuf.test"
index 92525f94034a2cdf000da0e42a62fb238a9cb4c8..ffad6913652efb24342e4de6ff2f1c16ff72b30a 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -11,7 +11,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
 #include <sys/ipc.h>
 #include <sys/msg.h>
 #include <sys/stat.h>
index 7341f7284a92e9bdb181644144a052fcdd836229..365ed1779919bf8fdf9780cc8f1a3b88cfc25167 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2015 Andreas Schwab <schwab@suse.de>
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -11,6 +11,7 @@
 #include <errno.h>
 #include <stdio.h>
 #include <stdlib.h>
+#include <string.h>
 #include <sys/sem.h>
 
 #include "xlat.h"
@@ -24,7 +25,9 @@
 # define str_ipc_flags "0xface1e00"
 # define str_ipc_private "0"
 # define str_ipc_rmid "0"
+# define str_ipc_set "0x1"
 # define str_ipc_stat "0x2"
+# define str_ipc_info "0x3"
 # define str_sem_stat "0x12"
 # define str_sem_info "0x13"
 # define str_sem_stat_any "0x14"
@@ -35,7 +38,9 @@
        "0xface1e00 /\\* IPC_CREAT\\|IPC_EXCL\\|IPC_NOWAIT\\|0xface1000 \\*/"
 # define str_ipc_private "0 /\\* IPC_PRIVATE \\*/"
 # define str_ipc_rmid "0 /\\* IPC_RMID \\*/"
+# define str_ipc_set "0x1 /\\* IPC_SET \\*/"
 # define str_ipc_stat "0x2 /\\* IPC_STAT \\*/"
+# define str_ipc_info "0x3 /\\* IPC_INFO \\*/"
 # define str_sem_stat "0x12 /\\* SEM_STAT \\*/"
 # define str_sem_info "0x13 /\\* SEM_INFO \\*/"
 # define str_sem_stat_any "0x14 /\\* SEM_STAT_ANY \\*/"
@@ -45,7 +50,9 @@
 # define str_ipc_flags "IPC_CREAT\\|IPC_EXCL\\|IPC_NOWAIT\\|0xface1000"
 # define str_ipc_private "IPC_PRIVATE"
 # define str_ipc_rmid "IPC_RMID"
+# define str_ipc_set "IPC_SET"
 # define str_ipc_stat "IPC_STAT"
+# define str_ipc_info "IPC_INFO"
 # define str_sem_stat "SEM_STAT"
 # define str_sem_info "SEM_INFO"
 # define str_sem_stat_any "SEM_STAT_ANY"
@@ -72,6 +79,66 @@ cleanup(void)
        id = -1;
 }
 
+static void
+print_semid_ds(const char *const str_ipc_cmd,
+              const struct semid_ds *const ds,
+              const int rc)
+{
+       if (rc < 0) {
+               printf("semctl\\(%d, 0, (%s\\|)?%s, (%p|\\[%p\\])\\) = %s\n",
+                      id, str_ipc_64, str_ipc_cmd, &ds, &ds,
+                      sprintrc_grep(rc));
+               return;
+       }
+       printf("semctl\\(%d, 0, (%s\\|)?%s, \\{sem_perm=\\{uid=%u, gid=%u"
+               ", mode=%#o, key=%u, cuid=%u, cgid=%u\\}, sem_otime=%llu"
+               ", sem_ctime=%llu, sem_nsems=%llu\\}\\) = %d\n",
+               id,
+               str_ipc_64,
+               str_ipc_cmd,
+               (unsigned) ds->sem_perm.uid,
+               (unsigned) ds->sem_perm.gid,
+               (unsigned) ds->sem_perm.mode,
+               (unsigned) ds->sem_perm.__key,
+               (unsigned) ds->sem_perm.cuid,
+               (unsigned) ds->sem_perm.cgid,
+               (unsigned long long) ds->sem_otime,
+               (unsigned long long) ds->sem_ctime,
+               (unsigned long long) ds->sem_nsems,
+               rc);
+}
+
+static void
+print_sem_info(const char *const str_ipc_cmd,
+               const struct seminfo *const info,
+               const int rc)
+{
+       if (rc < 0) {
+               printf("semctl\\(%d, 0, (%s\\|)?%s, (%p|\\[%p\\])\\) = %s\n",
+                      id, str_ipc_64, str_ipc_cmd, &info, &info,
+                      sprintrc_grep(rc));
+               return;
+       }
+
+       printf("semctl\\(%d, 0, (%s\\|)?%s, \\{semmap=%d, semmni=%d"
+              ", semmns=%d, semmnu=%d, semmsl=%d, semopm=%d, semume=%d"
+              ", semusz=%d, semvmx=%d, semaem=%d\\}\\) = %d\n",
+              id,
+              str_ipc_64,
+              str_ipc_cmd,
+              info->semmap,
+              info->semmni,
+              info->semmns,
+              info->semmnu,
+              info->semmsl,
+              info->semopm,
+              info->semume,
+              info->semusz,
+              info->semvmx,
+              info->semaem,
+              rc);
+}
+
 int
 main(void)
 {
@@ -91,6 +158,8 @@ main(void)
        struct semid_ds ds;
        struct seminfo info;
 
+       memset(&ds, 0, sizeof(ds));
+
        rc = semget(bogus_key, bogus_size, bogus_flags);
        printf("semget\\(%#llx, %d, %s\\|%#04o\\) = %s\n",
               zero_extend_signed_to_ull(bogus_key), bogus_size,
@@ -108,25 +177,41 @@ main(void)
               bogus_semid, bogus_semnum, str_ipc_64, str_bogus_cmd,
               bogus_arg, bogus_arg, sprintrc_grep(rc));
 
+       un.__buf = &info;
+       rc = semctl(id, 0, IPC_INFO, un);
+        print_sem_info(str_ipc_info, &info, rc);
+
+       rc = semctl(id, 0, SEM_INFO, un);
+        print_sem_info(str_sem_info, &info, rc);
+
        un.buf = &ds;
-       if (semctl(id, 0, IPC_STAT, un))
+       rc = semctl(id, 0, IPC_STAT, un);
+       if (rc < 0)
                perror_msg_and_skip("semctl IPC_STAT");
-       printf("semctl\\(%d, 0, (%s\\|)?%s, \\[?%p\\]?\\) = 0\n",
-              id, str_ipc_64, str_ipc_stat, &ds);
+       print_semid_ds(str_ipc_stat, &ds, rc);
 
-       un.__buf = &info;
-       rc = semctl(0, 0, SEM_INFO, un);
-       printf("semctl\\(0, 0, (%s\\|)?%s, \\[?%p\\]?\\) = %s\n",
-              str_ipc_64, str_sem_info, &info, sprintrc_grep(rc));
+       if (semctl(id, 0, IPC_SET, un))
+               perror_msg_and_skip("semctl IPC_SET");
+       printf("semctl\\(%d, 0, (%s\\|)?%s, \\{sem_perm=\\{uid=%u, gid=%u"
+              ", mode=%#o\\}\\}\\) = 0\n",
+              id, str_ipc_64, str_ipc_set,
+              (unsigned) ds.sem_perm.uid,
+              (unsigned) ds.sem_perm.gid,
+              (unsigned) ds.sem_perm.mode);
 
-       un.buf = &ds;
        rc = semctl(id, 0, SEM_STAT, un);
-       printf("semctl\\(%d, 0, (%s\\|)?%s, \\[?%p\\]?\\) = %s\n",
-              id, str_ipc_64, str_sem_stat, &ds, sprintrc_grep(rc));
+       print_semid_ds(str_sem_stat, &ds, rc);
 
+/*
+ * glibc fails to pass the buffer for SEM_STAT_ANY command,
+ * so the kernel receives garbage instead of un.buf address:
+ * https://sourceware.org/bugzilla/show_bug.cgi?id=26637
+ * musl doesn't pass the buffer either.
+ */
+#if 0
        rc = semctl(id, 0, SEM_STAT_ANY, un);
-       printf("semctl\\(%d, 0, (%s\\|)?%s, (%p|\\[(%p|NULL)\\]|NULL)\\) = %s\n",
-              id, str_ipc_64, str_sem_stat_any, &ds, &ds, sprintrc_grep(rc));
+       print_semid_ds(str_sem_stat_any, &ds, rc);
+#endif
 
        return 0;
 }
index d68c24620f6b3e8edc68a893104f16e59070edd6..1982162038d0b45fb4eeb8ec01acf06311d4487e 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_shm-Xabbrev +ipc.sh -Xabbrev -a29); do not edit.
-set -- -Xabbrev -a29
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_shm-Xabbrev +ipc.sh -Xabbrev -a26); do not edit.
+set -- -Xabbrev -a26
 . "${srcdir=.}/ipc.sh"
index 170adeee7bf03cee35c3acd5db06c9855244f19b..457ad6662bd318589da4cd83c5836882fb3f7e64 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_shm-Xverbose +ipc.sh -Xverbose -a36); do not edit.
-set -- -Xverbose -a36
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_shm-Xverbose +ipc.sh -Xverbose -a34); do not edit.
+set -- -Xverbose -a34
 . "${srcdir=.}/ipc.sh"
index 76c19d8d4b0ea6a989801d24b03521f25a1524e3..18de6bf1937efdfaf42fdf373f5754d825d2d123 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 # define SHM_STAT_ANY 15
 #endif
 
+#ifndef SHM_NORESERVE
+# define SHM_NORESERVE 010000
+#endif
+
 #include "xlat.h"
 #include "xlat/shm_resource_flags.h"
 
@@ -35,6 +39,7 @@
 # define str_ipc_rmid "0"
 # define str_ipc_set "0x1"
 # define str_ipc_stat "0x2"
+# define str_ipc_info "0x3"
 # define str_shm_stat "0xd"
 # define str_shm_info "0xe"
 # define str_shm_stat_any "0xf"
@@ -49,6 +54,7 @@
 # define str_ipc_rmid "0 /\\* IPC_RMID \\*/"
 # define str_ipc_set "0x1 /\\* IPC_SET \\*/"
 # define str_ipc_stat "0x2 /\\* IPC_STAT \\*/"
+# define str_ipc_info "0x3 /\\* IPC_INFO \\*/"
 # define str_shm_stat "0xd /\\* SHM_STAT \\*/"
 # define str_shm_info "0xe /\\* SHM_INFO \\*/"
 # define str_shm_stat_any "0xf /\\* SHM_STAT_ANY \\*/"
@@ -62,6 +68,7 @@
 # define str_ipc_rmid "IPC_RMID"
 # define str_ipc_set "IPC_SET"
 # define str_ipc_stat "IPC_STAT"
+# define str_ipc_info "IPC_INFO"
 # define str_shm_stat "SHM_STAT"
 # define str_shm_info "SHM_INFO"
 # define str_shm_stat_any "SHM_STAT_ANY"
 # define str_bogus_cmd "0xdefaced2 /\\* SHM_\\?\\?\\? \\*/"
 #endif
 
+#undef TEST_SHMCTL_BOGUS_ADDR
+
+/*
+ * Starting with commit glibc-2.32~80, on every 32-bit architecture
+ * where 32-bit time_t support is enabled, glibc tries to retrieve
+ * the data provided in the third argument of shmctl call.
+ */
+#if GLIBC_PREREQ_GE(2, 32) && defined __TIMESIZE && __TIMESIZE != 64
+# define TEST_SHMCTL_BOGUS_ADDR 0
+#endif
+
+#ifndef TEST_SHMCTL_BOGUS_ADDR
+# define TEST_SHMCTL_BOGUS_ADDR 1
+#endif
+
 static int id = -1;
 
 static void
@@ -80,6 +102,89 @@ cleanup(void)
        id = -1;
 }
 
+static void
+print_shmid_ds(const char *const str_ipc_cmd,
+              const struct shmid_ds *const ds,
+              const int rc)
+{
+       if (rc < 0) {
+               printf("shmctl\\(%d, (%s\\|)?%s, %p\\) = %s\n",
+                      id, str_ipc_64, str_ipc_cmd, ds, sprintrc_grep(rc));
+               return;
+       }
+       printf("shmctl\\(%d, (%s\\|)?%s, \\{shm_perm=\\{uid=%u, gid=%u"
+               ", mode=%#o, key=%u, cuid=%u, cgid=%u\\}, shm_segsz=%u"
+               ", shm_cpid=%d, shm_lpid=%d, shm_nattch=%u, shm_atime=%u"
+               ", shm_dtime=%u, shm_ctime=%u\\}\\) = %d\n",
+               id,
+               str_ipc_64,
+               str_ipc_cmd,
+               (unsigned) ds->shm_perm.uid,
+               (unsigned) ds->shm_perm.gid,
+               (unsigned) ds->shm_perm.mode,
+               (unsigned) ds->shm_perm.__key,
+               (unsigned) ds->shm_perm.cuid,
+               (unsigned) ds->shm_perm.cgid,
+               (unsigned) ds->shm_segsz,
+               (int) ds->shm_cpid,
+               (int) ds->shm_lpid,
+               (unsigned) ds->shm_nattch,
+               (unsigned) ds->shm_atime,
+               (unsigned) ds->shm_dtime,
+               (unsigned) ds->shm_ctime,
+               rc);
+}
+
+static void
+print_ipc_info(const char *const str_ipc_cmd,
+               const struct shminfo *const info,
+               const int rc)
+{
+       if (rc < 0) {
+               printf("shmctl\\(%d, (%s\\|)?%s, %p\\) = %s\n",
+                      id, str_ipc_64, str_ipc_cmd, info, sprintrc_grep(rc));
+               return;
+       }
+
+       printf("shmctl\\(%d, (%s\\|)?%s, \\{shmmax=%llu, shmmin=%llu"
+              ", shmmni=%llu, shmseg=%llu, shmall=%llu\\}\\) = %d\n",
+              id,
+              str_ipc_64,
+              str_ipc_cmd,
+              (unsigned long long) info->shmmax,
+              (unsigned long long) info->shmmin,
+              (unsigned long long) info->shmmni,
+              (unsigned long long) info->shmseg,
+              (unsigned long long) info->shmall,
+              rc);
+}
+
+static void
+print_shm_info(const char *const str_ipc_cmd,
+              const struct shm_info *const info,
+              const int rc)
+{
+       if (rc < 0) {
+               printf("shmctl\\(%d, (%s\\|)?%s, %p\\) = %s\n",
+                      id, str_ipc_64, str_ipc_cmd, info, sprintrc_grep(rc));
+               return;
+       }
+
+       printf("shmctl\\(%d, (%s\\|)?%s, \\{used_ids=%d, shm_tot=%llu"
+              ", shm_rss=%llu, shm_swp=%llu, swap_attempts=%llu"
+              ", swap_successes=%llu\\}\\) = %d\n",
+              id,
+              str_ipc_64,
+              str_ipc_cmd,
+              info->used_ids,
+              (unsigned long long) info->shm_tot,
+              (unsigned long long) info->shm_rss,
+              (unsigned long long) info->shm_swp,
+              (unsigned long long) info->swap_attempts,
+              (unsigned long long) info->swap_successes,
+              rc);
+}
+
 int
 main(void)
 {
@@ -88,7 +193,9 @@ main(void)
        static const key_t bogus_key = (key_t) 0xeca86420fdb97531ULL;
        static const int bogus_id = 0xdefaced1;
        static const int bogus_cmd = 0xdefaced2;
+#if TEST_SHMCTL_BOGUS_ADDR
        static void * const bogus_addr = (void *) -1L;
+#endif
        static const size_t bogus_size =
        /*
         * musl sets size to SIZE_MAX if size argument is greater than
@@ -105,7 +212,11 @@ main(void)
        static const unsigned int huge_flags = 21 << SHM_HUGE_SHIFT;
        int bogus_flags;
        int rc;
-       struct shmid_ds ds;
+       union {
+               struct shmid_ds ds;
+               struct shminfo ipc_info;
+               struct shm_info shm_info;
+       } buf;
 
        rc = shmget(bogus_key, bogus_size, 0);
        printf("shmget\\(%#llx, %zu, 000\\) = %s\n",
@@ -156,45 +267,38 @@ main(void)
        printf("shmctl\\(%d, (%s\\|)?%s, NULL\\) = %s\n",
               bogus_id, str_ipc_64, str_bogus_cmd, sprintrc_grep(rc));
 
+#if TEST_SHMCTL_BOGUS_ADDR
        rc = shmctl(bogus_id, IPC_STAT, bogus_addr);
        printf("shmctl\\(%d, (%s\\|)?%s, %p\\) = %s\n",
               bogus_id, str_ipc_64, str_ipc_stat, bogus_addr,
               sprintrc_grep(rc));
+#endif
 
-       if (shmctl(id, IPC_STAT, &ds))
+       rc = shmctl(id, IPC_STAT, &buf.ds);
+       if (rc < 0)
                perror_msg_and_skip("shmctl IPC_STAT");
-       printf("shmctl\\(%d, (%s\\|)?%s, \\{shm_perm=\\{uid=%u, gid=%u, "
-               "mode=%#o, key=%u, cuid=%u, cgid=%u\\}, shm_segsz=%u, shm_cpid=%u, "
-               "shm_lpid=%u, shm_nattch=%u, shm_atime=%u, shm_dtime=%u, "
-               "shm_ctime=%u\\}\\) = 0\n",
-               id, str_ipc_64, str_ipc_stat,
-               (unsigned) ds.shm_perm.uid, (unsigned) ds.shm_perm.gid,
-               (unsigned) ds.shm_perm.mode, (unsigned) ds.shm_perm.__key,
-               (unsigned) ds.shm_perm.cuid, (unsigned) ds.shm_perm.cgid,
-               (unsigned) ds.shm_segsz, (unsigned) ds.shm_cpid,
-               (unsigned) ds.shm_lpid, (unsigned) ds.shm_nattch,
-               (unsigned) ds.shm_atime, (unsigned) ds.shm_dtime,
-               (unsigned) ds. shm_ctime);
-
-       if (shmctl(id, IPC_SET, &ds))
+       print_shmid_ds(str_ipc_stat, &buf.ds, rc);
+
+       if (shmctl(id, IPC_SET, &buf.ds))
                perror_msg_and_skip("shmctl IPC_SET");
        printf("shmctl\\(%d, (%s\\|)?%s, \\{shm_perm=\\{uid=%u, gid=%u"
-              ", mode=%#o\\}, ...\\}\\) = 0\n",
+              ", mode=%#o\\}\\}\\) = 0\n",
               id, str_ipc_64, str_ipc_set,
-              (unsigned) ds.shm_perm.uid, (unsigned) ds.shm_perm.gid,
-              (unsigned) ds.shm_perm.mode);
+              (unsigned) buf.ds.shm_perm.uid,
+              (unsigned) buf.ds.shm_perm.gid,
+              (unsigned) buf.ds.shm_perm.mode);
 
-       rc = shmctl(0, SHM_INFO, &ds);
-       printf("shmctl\\(0, (%s\\|)?%s, %p\\) = %s\n",
-              str_ipc_64, str_shm_info, &ds, sprintrc_grep(rc));
+       rc = shmctl(id, IPC_INFO, &buf.ds);
+       print_ipc_info(str_ipc_info, &buf.ipc_info, rc);
 
-       rc = shmctl(id, SHM_STAT, &ds);
-       printf("shmctl\\(%d, (%s\\|)?%s, %p\\) = %s\n",
-              id, str_ipc_64, str_shm_stat, &ds, sprintrc_grep(rc));
+       rc = shmctl(id, SHM_INFO, &buf.ds);
+       print_shm_info(str_shm_info, &buf.shm_info, rc);
 
-       rc = shmctl(id, SHM_STAT_ANY, &ds);
-       printf("shmctl\\(%d, (%s\\|)?%s, %p\\) = %s\n",
-              id, str_ipc_64, str_shm_stat_any, &ds, sprintrc_grep(rc));
+       rc = shmctl(id, SHM_STAT, &buf.ds);
+       print_shmid_ds(str_shm_stat, &buf.ds, rc);
+
+       rc = shmctl(id, SHM_STAT_ANY, &buf.ds);
+       print_shmid_ds(str_shm_stat_any, &buf.ds, rc);
 
        return 0;
 }
index 2e697d3f4e5aeb973f95ad65538821d401d9b14a..72f1571ff160527dcd7f0ee1285fc607f8c807b6 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_shm +ipc.sh -a29); do not edit.
-set -- -a29
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_shm +ipc.sh -a26); do not edit.
+set -- -a26
 . "${srcdir=.}/ipc.sh"
diff --git a/tests/kcmp-y--pidns-translation.c b/tests/kcmp-y--pidns-translation.c
new file mode 100644 (file)
index 0000000..f54d94c
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "kcmp-y.c"
diff --git a/tests/kcmp-y--pidns-translation.gen.test b/tests/kcmp-y--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..61c3ac9
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kcmp-y--pidns-translation test_pidns -a22 -y -e trace=kcmp); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a22 -y -e trace=kcmp
index 4e3433ee00fb9053937facdd68fdfdde7a5ec2d5..07a446ee0b2b6d27e2adf2320624cbcfcd153e19 100644 (file)
@@ -2,16 +2,15 @@
  * Check decoding of kcmp syscall.
  *
  * Copyright (c) 2016-2017 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-
-#include <asm/unistd.h>
 #include "scno.h"
+#include "pidns.h"
 
 #ifdef __NR_kcmp
 
@@ -65,7 +64,26 @@ static const char zero_path[] = "/dev/zero";
 static void
 printpidfd(const char *prefix, pid_t pid, unsigned fd)
 {
-       printf("%s%d", prefix, fd);
+       const char *path = NULL;
+
+# if VERBOSE_FD
+       if (pid == getpid()) {
+               switch (fd)
+               {
+               case NULL_FD:
+                       path = null_path;
+                       break;
+               case ZERO_FD:
+                       path = zero_path;
+                       break;
+               }
+       }
+# endif
+
+       if (path)
+               printf("%s%d<%s>", prefix, fd, path);
+       else
+               printf("%s%d", prefix, fd);
 }
 
 /*
@@ -83,7 +101,11 @@ do_kcmp(kernel_ulong_t pid1, kernel_ulong_t pid2, kernel_ulong_t type,
        rc = syscall(__NR_kcmp, pid1, pid2, type, idx1, idx2);
        errstr = sprintrc(rc);
 
-       printf("kcmp(%d, %d, ", (int) pid1, (int) pid2);
+       const char *pid_str = pidns_pid2str(PT_TGID);
+       pidns_print_leader();
+       printf("kcmp(%d%s, %d%s, ",
+               (int) pid1, (int) pid1 == getpid() ? pid_str : "",
+               (int) pid2, (int) pid2 == getpid() ? pid_str : "");
 
        if (type_str)
                printf("%s", type_str);
@@ -128,6 +150,8 @@ do_kcmp(kernel_ulong_t pid1, kernel_ulong_t pid2, kernel_ulong_t type,
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        static const kernel_ulong_t bogus_pid1 =
                (kernel_ulong_t) 0xdeadca75face1057ULL;
        static const kernel_ulong_t bogus_pid2 =
@@ -180,7 +204,7 @@ main(void)
        /* KCMP_FILE is the only type which has additional args */
        do_kcmp(3141592653U, 2718281828U, ARG_STR(KCMP_FILE), bogus_idx1,
                bogus_idx2);
-       do_kcmp(-1, -1, ARG_STR(KCMP_FILE), NULL_FD, ZERO_FD);
+       do_kcmp(getpid(), getpid(), ARG_STR(KCMP_FILE), NULL_FD, ZERO_FD);
 
        /* Types without additional args */
        do_kcmp(-1, -1, ARG_STR(KCMP_VM), bogus_idx1, bogus_idx2);
@@ -199,10 +223,11 @@ main(void)
        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,
+               do_kcmp(getpid(), -1, ARG_STR(KCMP_EPOLL_TFD), NULL_FD,
                        (uintptr_t) slot, 1);
        }
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
 
        return 0;
index 4814414de22b4733b087f6541acfb86141f32dd2..d4b79a6d97ab885268e10ff548437655a9143baf 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Check decoding of SPARC-specific kern_features syscall.
  *
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -9,7 +9,6 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
 
 #include "raw_syscall.h"
 #include "scno.h"
diff --git a/tests/kernel_old_timespec.h b/tests/kernel_old_timespec.h
new file mode 100644 (file)
index 0000000..fac6d7e
--- /dev/null
@@ -0,0 +1,20 @@
+/*
+ * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#ifndef STRACE_KERNEL_OLD_TIMESPEC_H
+# define STRACE_KERNEL_OLD_TIMESPEC_H
+
+typedef struct {
+# if SIZEOF_KERNEL_LONG_T == 4 || defined LINUX_MIPSN32
+       int
+# else
+       long long
+# endif
+       tv_sec, tv_nsec;
+} kernel_old_timespec_t;
+
+#endif /* !STRACE_KERNEL_OLD_TIMESPEC_H */
diff --git a/tests/kernel_old_timex.h b/tests/kernel_old_timex.h
new file mode 100644 (file)
index 0000000..2591a1a
--- /dev/null
@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#ifndef STRACE_KERNEL_OLD_TIMEX_H
+# define STRACE_KERNEL_OLD_TIMEX_H
+
+# define HAVE_ARCH_TIME32_SYSCALLS 1
+# include "kernel_timex.h"
+# undef HAVE_ARCH_TIME32_SYSCALLS
+
+typedef
+# if SIZEOF_KERNEL_LONG_T == 4 || defined LINUX_MIPSN32
+kernel_timex32_t
+# elif defined __sparc__
+kernel_sparc64_timex_t
+# else
+kernel_timex64_t
+# endif
+kernel_old_timex_t;
+
+#endif /* !STRACE_KERNEL_OLD_TIMEX_H */
index 6e1c0eacba85eccea6e1b34dbc2f2b608c0bd54d..692f94a1e2a08155eedfa1baf5a5aac8ad698ecb 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Check kernel version decoding.
  *
- * Copyright (c) 2015-2019 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -15,7 +15,6 @@
 #include <string.h>
 #include <unistd.h>
 
-#include <asm/unistd.h>
 #include "scno.h"
 
 #ifdef HAVE_LINUX_BPF_H
@@ -35,9 +34,9 @@ static void
 print_bpf_attr(void)
 {
 #if XLAT_RAW
-       printf("{prog_type=0x16"
+       printf("{prog_type=0x1f"
 #else
-       printf("{prog_type=0x16 /* BPF_PROG_TYPE_??? */"
+       printf("{prog_type=0x1f /* BPF_PROG_TYPE_??? */"
 #endif
                ", insn_cnt=3134983661"
                ", insns=NULL"
@@ -70,7 +69,9 @@ print_bpf_attr(void)
                ", func_info_cnt=0"
                ", line_info_rec_size=0"
                ", line_info=NULL"
-               ", line_info_cnt=0}");
+               ", line_info_cnt=0"
+               ", attach_btf_id=0"
+               ", attach_prog_fd=0}");
 }
 
 int
@@ -78,7 +79,7 @@ main(void)
 {
        long ret;
        struct BPF_PROG_LOAD_struct prog = {
-               .prog_type = 22,
+               .prog_type = 31,
                .insn_cnt = 0xbadc0ded,
                .insns = 0,
                .license = 0,
index 5e5d91eddb65c6e5f01253311f09d839ca0919e4..3ab525877cb13dd1fe929335dbfc8fbee8bd5b10 100644 (file)
@@ -2,14 +2,13 @@
  * Check decoding of kexec_file_load syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
 #include "scno.h"
 
 #ifdef __NR_kexec_file_load
index ae7a72c0512351d7753ab57798349e2fc42ef08f..db515143553a4933b0948e676f15baa1ea1383df 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of kexec_load syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_kexec_load
 
index ccfd3b44c3c263caa9e09bfd4f22207d8f6efac7..6dc30fb90b8240cc9c939ba11c7b406911faf08f 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of keyctl syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_keyctl
 
@@ -45,7 +45,33 @@ struct keyctl_kdf_params {
 };
 # endif
 
+# ifndef HAVE_STRUCT_KEYCTL_PKEY_QUERY
+struct keyctl_pkey_query {
+       uint32_t supported_ops;
+       uint32_t key_size;
+       uint16_t max_data_size;
+       uint16_t max_sig_size;
+       uint16_t max_enc_size;
+       uint16_t max_dec_size;
+       uint32_t __spare[10];
+};
+# endif
+
+# ifndef HAVE_STRUCT_KEYCTL_PKEY_PARAMS
+struct keyctl_pkey_params {
+       int32_t  key_id;
+       uint32_t in_len;
+       union {
+               uint32_t out_len;
+               uint32_t in2_len;
+       };
+       uint32_t __spare[7];
+};
+# endif
+
 # include "xlat.h"
+# include "xlat/keyctl_caps0.h"
+# include "xlat/keyctl_caps1.h"
 # include "xlat/keyctl_commands.h"
 
 # ifndef KEY_SPEC_REQKEY_AUTH_KEY
@@ -71,10 +97,13 @@ bool buf_in_arg;
 
 # if XLAT_RAW
 #  define XARG_STR(v_) (v_), STRINGIFY(v_)
+#  define XSTR(v_, s_) STRINGIFY(v_)
 # elif XLAT_VERBOSE
 #  define XARG_STR(v_) (v_), STRINGIFY(v_) " /* " #v_ " */"
+#  define XSTR(v_, s_) STRINGIFY(v_) " /* " s_ " */"
 # else
 #  define XARG_STR ARG_STR
+#  define XSTR(v_, s_) s_
 # endif
 
 /*
@@ -125,6 +154,21 @@ print_arg(kernel_ulong_t arg, const char *str, const char *fmt, size_t size,
        }
 }
 
+void
+print_flags(const struct xlat *xlat, unsigned long long flags,
+           const char *const dflt)
+{
+# if XLAT_RAW
+       printf("%#llx", flags);
+# elif XLAT_VERBOSE
+       printf("%#llx /* ", flags);
+       printflags(xlat, flags, dflt);
+       printf(" */");
+# else
+       printflags(xlat, flags, dflt);
+# endif
+}
+
 /*
  * Arguments are passed as sz, val, str, fmt. Arguments are read until 4
  * arguments are retrieved or size of 0 is occurred.
@@ -268,6 +312,51 @@ kckdfp_to_str(struct keyctl_kdf_params *kdf, bool deref_hash, bool deref_oi,
        return buf;
 }
 
+const char *
+kcpp_to_str(struct keyctl_pkey_params *params, bool out, const char *key_str,
+           bool print_spare)
+{
+       static char buf[4096];
+
+       size_t left = sizeof(buf);
+       char *pos = buf;
+
+       append_str(&pos, &left, "{key_id=");
+
+# if XLAT_RAW
+       append_str(&pos, &left, "%d", params->key_id);
+# elif XLAT_VERBOSE
+       if (key_str)
+               append_str(&pos, &left, "%d /* %s */", params->key_id, key_str);
+       else
+               append_str(&pos, &left, "%d", params->key_id);
+# else
+       if (key_str)
+               append_str(&pos, &left, "%s", key_str);
+       else
+               append_str(&pos, &left, "%d", params->key_id);
+# endif
+
+       append_str(&pos, &left, ", in_len=%u, %s=%u",
+                  params->in_len,
+                  out ? "out_len" : "in2_len", params->out_len);
+
+       if (print_spare) {
+               append_str(&pos, &left, ", __spare=[");
+
+               for (size_t i = 0; i < ARRAY_SIZE(params->__spare); i++) {
+                       append_str(&pos, &left, "%s%#x",
+                                  i ? ", " : "", params->__spare[i]);
+               }
+
+               append_str(&pos, &left, "]");
+       }
+
+       append_str(&pos, &left, "}");
+
+       return buf;
+}
+
 int
 main(void)
 {
@@ -358,8 +447,10 @@ main(void)
        char *bogus_buf2 = tail_alloc(256);
        char *key_iov_str1;
        char *key_iov_str2 = tail_alloc(4096);
+       const char *errstr;
        ssize_t ret;
        ssize_t kis_size = 0;
+       long rc;
        size_t i;
 
        key_iov[0].iov_base = short_type;
@@ -1092,6 +1183,222 @@ main(void)
 
        nul_terminated_buf = true;
 
+       /* KEYCTL_PKEY_QUERY */
+       do_keyctl(ARG_STR(KEYCTL_PKEY_QUERY),
+                 sizeof(int32_t), bogus_key2, NULL, "%d",
+                 sizeof(kernel_ulong_t),
+                       (kernel_ulong_t) 0xfeedf157badc0dedLLU, NULL,
+                       kulong_fmt,
+                 sizeof(char *), bogus_str, NULL, ptr_fmt,
+                 sizeof(char *), ARG_STR(NULL), ptr_fmt);
+
+       struct keyctl_pkey_query query;
+       do_keyctl(ARG_STR(KEYCTL_PKEY_QUERY),
+                 sizeof(int32_t), XARG_STR(KEY_SPEC_THREAD_KEYRING), "%d",
+                 sizeof(kernel_ulong_t), (kernel_ulong_t) 0, NULL, kulong_fmt,
+                 sizeof(char *), "x\377\0\1", "\"x\\377\"", NULL,
+                 sizeof(&query), &query, NULL, ptr_fmt);
+
+       /*
+        * KEYCTL_PKEY_ENCRYPT, KEYCTL_PKEY_DECRYPT, KEYCTL_PKEY_SIGN,
+        * KEYCTL_PKEY_VERIFY
+        */
+       static const struct {
+               int op;
+               const char *str;
+               bool out;
+       } pkey_ops[] = {
+               { ARG_STR(KEYCTL_PKEY_ENCRYPT), true },
+               { ARG_STR(KEYCTL_PKEY_DECRYPT), true },
+               { ARG_STR(KEYCTL_PKEY_SIGN),    true },
+               { ARG_STR(KEYCTL_PKEY_VERIFY),  false },
+       };
+       static const char pkey_str1[] = STR32 "xxx";
+       static const char pkey_str2[] = "\1\2HAI\255\0\1";
+       static struct {
+               struct keyctl_pkey_params params;
+               const char * key_str;
+               bool print_spare;
+               const char *str1;
+               const char *str2;
+       } pkey_vecs[] = {
+               { { KEY_SPEC_PROCESS_KEYRING, 0, { .out_len = 0 } },
+                 "KEY_SPEC_PROCESS_KEYRING", false, "\"\"", "\"\"" },
+               { { 0, 0, { .out_len = 0 }, .__spare = { 1 } },
+                 NULL, true, "\"\"", "\"\"" },
+               { { 0xdeadc0deU, 10, { .out_len = 10 },
+                   .__spare = { 0, 0xfacefeed } },
+                 NULL, true, "\"AbCdEfGhIj\"", NULL },
+               { { 0xdeadc0deU, sizeof(pkey_str1),
+                   { .out_len = sizeof(pkey_str2) - 1 },
+                   .__spare = { [6] = 0xdec0ded } },
+                 NULL, true,
+                 "\"AbCdEfGhIj\"...", "\"\\1\\2HAI\\255\\0\\1\"" },
+       };
+
+       char *pkey1 = tail_memdup(pkey_str1, sizeof(pkey_str1) - 1);
+       char *pkey2 = tail_memdup(pkey_str2, sizeof(pkey_str2) - 1);
+       struct keyctl_pkey_params *pkey_params =
+               tail_alloc(sizeof(*pkey_params));
+
+       for (i = 0; i < ARRAY_SIZE(pkey_ops); i++) {
+               do_keyctl(pkey_ops[i].op, pkey_ops[i].str,
+                         sizeof(char *), ARG_STR(NULL), ptr_fmt,
+                         sizeof(char *), ARG_STR(NULL), ptr_fmt,
+                         sizeof(char *), ARG_STR(NULL), ptr_fmt,
+                         sizeof(char *), ARG_STR(NULL), ptr_fmt);
+
+               do_keyctl(pkey_ops[i].op, pkey_ops[i].str,
+                         sizeof(char *), (uint32_t *) pkey_params + 1, NULL,
+                               ptr_fmt,
+                         sizeof(char *), "x\377\0\1", "\"x\\377\"", ptr_fmt,
+                         sizeof(char *), pkey1, NULL, ptr_fmt,
+                         sizeof(char *), pkey2, NULL, ptr_fmt);
+
+               for (size_t j = 0; j < ARRAY_SIZE(pkey_vecs); j++) {
+                       memcpy(pkey_params, &pkey_vecs[j].params,
+                              sizeof(*pkey_params));
+                       do_keyctl(pkey_ops[i].op, pkey_ops[i].str,
+                                 sizeof(char *), pkey_params,
+                                       kcpp_to_str(pkey_params,
+                                                   pkey_ops[i].out,
+                                                   pkey_vecs[j].key_str,
+                                                   pkey_vecs[j].print_spare),
+                                       ptr_fmt,
+                                 sizeof(char *), "", "\"\"", ptr_fmt,
+                                 sizeof(char *), pkey1, pkey_vecs[j].str1,
+                                       ptr_fmt,
+                                 sizeof(char *), pkey2,
+                                       pkey_ops[i].out ? NULL
+                                                       : pkey_vecs[j].str2,
+                                       ptr_fmt);
+               }
+       }
+
+       /* KEYCTL_MOVE */
+       static const struct {
+               kernel_ulong_t key;
+               const char *str;
+       } move_keys[] = {
+                 { 0xbadc0ded, "-1159983635" },
+                 { XARG_STR(KEY_SPEC_THREAD_KEYRING) },
+       };
+       static const struct {
+               kernel_ulong_t val;
+               const char *str;
+       } move_flags[] = {
+               { (kernel_ulong_t) 0xbadc0ded00000000ULL, "0" },
+               { 1, XSTR(0x1, "KEYCTL_MOVE_EXCL") },
+               { (kernel_ulong_t) 0xbadc0ded00000001ULL,
+                 XSTR(0x1, "KEYCTL_MOVE_EXCL") },
+               { (kernel_ulong_t) 0xfffffffffffffffeULL,
+# if !XLAT_RAW
+                 "0xfffffffe /* KEYCTL_MOVE_??? */"
+# else
+                 "0xfffffffe"
+# endif
+                },
+               { (kernel_ulong_t) 0xffffffffffffffffULL,
+                 XSTR(0xffffffff, "KEYCTL_MOVE_EXCL|0xfffffffe") },
+       };
+
+       for (i = 0; i < ARRAY_SIZE(move_keys) * ARRAY_SIZE(move_flags); i++) {
+               do_keyctl(ARG_STR(KEYCTL_MOVE),
+                         sizeof(kernel_ulong_t),
+                               move_keys[i % ARRAY_SIZE(move_keys)].key,
+                               move_keys[i % ARRAY_SIZE(move_keys)].str,
+                               kulong_fmt,
+                         sizeof(kernel_ulong_t),
+                               move_keys[(i + 1) % ARRAY_SIZE(move_keys)].key,
+                               move_keys[(i + 1) % ARRAY_SIZE(move_keys)].str,
+                               kulong_fmt,
+                         sizeof(kernel_ulong_t),
+                               move_keys[(i + 2) % ARRAY_SIZE(move_keys)].key,
+                               move_keys[(i + 2) % ARRAY_SIZE(move_keys)].str,
+                               kulong_fmt,
+                         sizeof(kernel_ulong_t),
+                               move_flags[i % ARRAY_SIZE(move_flags)].val,
+                               move_flags[i % ARRAY_SIZE(move_flags)].str,
+                               kulong_fmt);
+       }
+
+       /* KEYCTL_CAPABILITIES */
+       unsigned char *caps1 = tail_alloc(1);
+       unsigned char *caps2 = tail_alloc(2);
+       unsigned char *caps4 = tail_alloc(4);
+
+       do_keyctl(ARG_STR(KEYCTL_CAPABILITIES),
+                 sizeof(unsigned char *), ARG_STR(NULL), ptr_fmt,
+                 sizeof(kernel_ulong_t),
+                       (kernel_ulong_t) 0xfeedf157badc0dedLLU, NULL,
+                       ksize_fmt,
+                 0);
+
+       const kernel_ulong_t bad_len = (kernel_ulong_t) 0xbadc0ded00000001LLU;
+       rc = syscall(__NR_keyctl, KEYCTL_CAPABILITIES, caps1, bad_len);
+       errstr = sprintrc(rc);
+       printf("keyctl(" XSTR(0x1f, "KEYCTL_CAPABILITIES") ", ");
+       if (rc >= 0) {
+               printf("[");
+               if (rc >= 1)
+                       print_flags(keyctl_caps0, caps1[0], "KEYCTL_CAPS0_???");
+               printf("]");
+       } else {
+               printf("%p", caps1);
+       }
+       printf(", %llu) = %s\n", (unsigned long long) bad_len, errstr);
+
+       rc = syscall(__NR_keyctl, KEYCTL_CAPABILITIES, caps1, 2);
+       errstr = sprintrc(rc);
+       printf("keyctl(" XSTR(0x1f, "KEYCTL_CAPABILITIES") ", ");
+       if (rc >= 0) {
+               printf("[");
+               if (rc == 1)
+                       print_flags(keyctl_caps0, caps1[0], "KEYCTL_CAPS0_???");
+               printf("]");
+       } else {
+               printf("%p", caps1);
+       }
+       printf(", 2) = %s\n", errstr);
+
+       rc = syscall(__NR_keyctl, KEYCTL_CAPABILITIES, caps2, 2);
+       errstr = sprintrc(rc);
+       printf("keyctl(" XSTR(0x1f, "KEYCTL_CAPABILITIES") ", ");
+       if (rc >= 0) {
+               printf("[");
+               if (rc >= 1)
+                       print_flags(keyctl_caps0, caps2[0], "KEYCTL_CAPS0_???");
+               if (rc >= 2) {
+                       printf(", ");
+                       print_flags(keyctl_caps1, caps2[1], "KEYCTL_CAPS1_???");
+               }
+               printf("]");
+       } else {
+               printf("%p", caps2);
+       }
+       printf(", 2) = %s\n", errstr);
+
+       rc = syscall(__NR_keyctl, KEYCTL_CAPABILITIES, caps4, 4);
+       errstr = sprintrc(rc);
+       printf("keyctl(" XSTR(0x1f, "KEYCTL_CAPABILITIES") ", ");
+       if (rc >= 0) {
+               printf("[");
+               if (rc >= 1)
+                       print_flags(keyctl_caps0, caps4[0], "KEYCTL_CAPS0_???");
+               if (rc >= 2) {
+                       printf(", ");
+                       print_flags(keyctl_caps1, caps4[1], "KEYCTL_CAPS1_???");
+               }
+               if (rc >= 3)
+                       printf(", %hhx", caps4[2]);
+               if (rc >= 4)
+                       printf(", %hhx", caps4[3]);
+               printf("]");
+       } else {
+               printf("%p", caps4);
+       }
+       printf(", 4) = %s\n", errstr);
+
        puts("+++ exited with 0 +++");
 
        return 0;
diff --git a/tests/kill--pidns-translation.c b/tests/kill--pidns-translation.c
new file mode 100644 (file)
index 0000000..4736ca1
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "kill.c"
diff --git a/tests/kill--pidns-translation.gen.test b/tests/kill--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..4e909e9
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kill--pidns-translation test_pidns -a12 -e trace=kill -esignal=none); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a12 -e trace=kill -esignal=none
index 4ef9b62833b3f23d735eb67f2630d2a45e9d9bff..653e945c26b0de80c1ba588c597fcaa68a881e42 100644 (file)
@@ -3,14 +3,15 @@
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Fei Jie <feij.fnst@cn.fujitsu.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
+#include "pidns.h"
 
 #ifdef __NR_kill
 
@@ -26,6 +27,8 @@ handler(int sig)
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        const struct sigaction act = { .sa_handler = handler };
        if (sigaction(SIGALRM, &act, NULL))
                perror_msg_and_fail("sigaction");
@@ -37,18 +40,23 @@ main(void)
                perror_msg_and_fail("sigprocmask");
 
        const int pid = getpid();
+       const char *pid_str = pidns_pid2str(PT_TGID);
        long rc = syscall(__NR_kill, pid, (long) 0xdefaced00000000ULL | SIGALRM);
-       printf("kill(%d, SIGALRM) = %ld\n", pid, rc);
+       pidns_print_leader();
+       printf("kill(%d%s, SIGALRM) = %ld\n", pid, pid_str, rc);
 
        const long big_pid = (long) 0xfacefeedbadc0dedULL;
        const long big_sig = (long) 0xdeadbeefcafef00dULL;
        rc = syscall(__NR_kill, big_pid, big_sig);
+       pidns_print_leader();
        printf("kill(%d, %d) = %ld %s (%m)\n",
               (int) big_pid, (int) big_sig, rc, errno2name());
 
        rc = syscall(__NR_kill, (long) 0xdefaced00000000ULL | pid, 0);
-       printf("kill(%d, 0) = %ld\n", pid, rc);
+       pidns_print_leader();
+       printf("kill(%d%s, 0) = %ld\n", pid, pid_str, rc);
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
index 4319bdb2a3b003f517a05549ffbc689360a33aba..0716db70002f215517cc893a0e1ee11ab062f3eb 100644 (file)
@@ -2,7 +2,7 @@
  * Validate syscallent.h file.
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -12,7 +12,7 @@
 #include "sysent.h"
 #include <stdio.h>
 #include <string.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 #include "sysent_shorthand_defs.h"
 
diff --git a/tests/ksysent.gen.test b/tests/ksysent.gen.test
new file mode 100755 (executable)
index 0000000..c63ea44
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ksysent ../$NAME ); do not edit.
+. "${srcdir=.}/init.sh"
+../$NAME 
index c35ba22fe93ee22767a78f221a4e0c43d4ff41dc..92069e7560aff2a59619e7e347c5d157efcf2f0b 100644 (file)
@@ -1,6 +1,6 @@
 #!/bin/sed -rnf
 #
-# Copyright (c) 2015-2018 The strace developers.
+# Copyright (c) 2015-2019 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -8,6 +8,9 @@
 # should not have been exported at all
 /#define[[:space:]]+__NR_(sys_epoll_|arch_specific_syscall|arm_sync_file_range|syscalls|syscall_count|syscall_max|available|reserved|unused)/d
 
+# remove new aliases to traditional names on alpha
+/#define[[:space:]]+__NR_get[gup]id[[:space:]]+__NR_getx[gup]id$/d
+
 # should not have been named this way
 s/__NR_(arm|xtensa)_fadvise64_64/__NR_fadvise64_64/
 
@@ -17,4 +20,12 @@ s/__NR_madvise1/__NR_madvise/
 s/__NR_paccept/__NR_accept4/
 
 # generate
+
+# prioritize __NR_umount over __NR_umount2
+s/#define[[:space:]]+__NR_(umount)2([[:space:]].*)?$/#if defined __NR_\12 \&\& (!defined __NR_\1 || __NR_\1 != __NR_\12)\n[__NR_\12 \& 0xffff] = "\12",\n#endif/p
+
+# prioritize __NR_osf_shmat over __NR_shmat
+s/#define[[:space:]]+__NR_(shmat)([[:space:]].*)?$/#if defined __NR_\1 \&\& (!defined __NR_osf_\1 || __NR_osf_\1 != __NR_\1)\n[__NR_\1 \& 0xffff] = "\1",\n#endif/p
+
+# generic
 s/#define[[:space:]]+__NR_([a-z_][^[:space:]]+)([[:space:]].*)?$/#ifdef __NR_\1\n[__NR_\1 \& 0xffff] = "\1",\n#endif/p
diff --git a/tests/ksysent.test b/tests/ksysent.test
deleted file mode 100755 (executable)
index 347ed67..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/sh
-#
-# Copyright (c) 2015-2018 The strace developers.
-# All rights reserved.
-#
-# SPDX-License-Identifier: GPL-2.0-or-later
-
-# Validate syscallent.h
-
-./ksysent
index c9008219b6d5a2606552eefd90890359f885ddb2..b8d40945672faa3a5c287602108581631e8c9d82 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_lchown
 
index 1a505e1f9151cf75e8604946d08ca6fe67529b94..c2542a82278b131af5f54d24d154472feeaa70cf 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_lchown32
 
index 0f23597dcf07b9b1fa20abefac91fc3d85101957..4dbe4edf89e7ed1b999435d9609b0dac9db3ef9c 100644 (file)
@@ -2,6 +2,7 @@
  * Wrappers for recvmmsg and sendmmsg syscalls.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -9,7 +10,7 @@
 
 #include "tests.h"
 #include <errno.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifndef __NR_recvmmsg
 # define __NR_recvmmsg -1
index 34f65478731cdaf2ce01c4a3df665ccb4066fe13..6692d4b0e302e1527200c6ada23f1e1edb0c4a0b 100644 (file)
@@ -2,6 +2,7 @@
  * Invoke a socket syscall, either directly or via __NR_socketcall.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +11,7 @@
 #include "tests.h"
 #include <errno.h>
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 /*
  * Invoke a socket syscall, either directly or via __NR_socketcall.
index 357eb0becb86fe1ac1726e4247ef6e67b5fccec5..468086fe51c008bcd7561cd0a4c6b150a1842e8b 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_link
 
index 748ddf18181abea76bf7324f4697dedeedc125cf..7e348f120e21b55bc504047ffd3ea1a5922f5503 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_linkat
 
@@ -30,7 +30,7 @@ main(void)
        printf("linkat(%s, \"%s\", %s, \"%s\", %s) = %ld %s (%m)\n",
               "AT_FDCWD", sample_1, "AT_FDCWD", sample_2,
               "AT_SYMLINK_NOFOLLOW|AT_REMOVEDIR|AT_SYMLINK_FOLLOW"
-              "|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|0xffffe0ff",
+              "|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|AT_RECURSIVE|0xffff60ff",
               rc, errno2name());
 
        puts("+++ exited with 0 +++");
index 169fa913f94b41efad62b530fc5b796c256c1b3d..55e6336381aec1b963df57fc18fb5803b0845fd7 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR__llseek
 
index 652d3e6a414a0fdee7e4c3990a66b1cac1557c96..42e39c55d7dd0918cf42ebf7db0cba6d46d8f8b7 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Check handling of localtime() returning NULL in printleader().
  *
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -14,7 +14,7 @@
 #include <time.h>
 #include <unistd.h>
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 int
 main(void)
diff --git a/tests/lock_file.c b/tests/lock_file.c
new file mode 100644 (file)
index 0000000..56cf112
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/file.h>
+
+/* Obtain an exclusive lock on dirname(path_name)/lock_name file.  */
+int
+lock_file_by_dirname(const char *path_name, const char *lock_name)
+{
+       const char *slash = path_name ? strrchr(path_name, '/') : NULL;
+       const int plen = slash ? (int) (slash - path_name) + 1 : 0;
+
+       char *lock_file = NULL;
+       if (asprintf(&lock_file, "%.*s%s", plen, path_name, lock_name) < 0)
+               perror_msg_and_fail("asprintf");
+
+       int lock_fd = open(lock_file, O_RDONLY);
+       if (lock_fd < 0)
+               perror_msg_and_fail("open: %s", lock_file);
+
+       if (flock(lock_fd, LOCK_EX))
+               perror_msg_and_fail("flock: %s", lock_file);
+
+       free(lock_file);
+
+       return lock_fd;
+}
index 430ae135b21113fe1bd5d853cc54b26a4da26c58..9617a4caa9896918325ca67e5192f7c073e783a4 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of lookup_dcookie syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_lookup_dcookie
 
index e8b0bbb515dcc5f49a07235650ca546024b44b65..3e5d3ba9ca7ac7a31d6147339192593344cf2858 100755 (executable)
@@ -2,7 +2,7 @@
 #
 # Check tracing of looping threads.
 #
-# Copyright (c) 2009-2019 The strace developers.
+# Copyright (c) 2009-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -20,16 +20,16 @@ inc="$(nproc)"
 [ "$inc" -ge 1 ] || inc=1
 
 timeout_2="$(($TIMEOUT_DURATION/2))"
-timeout_8="$(($TIMEOUT_DURATION/8))"
+timeout_16="$(($TIMEOUT_DURATION/16))"
 nproc=1
 
-run_prog "../$NAME" "$timeout_8" "$nproc"
+run_prog "../$NAME" "$timeout_16" "$nproc"
 
 while :; do
-       run_strace -f -qq -enone -esignal=none "../$NAME" "$timeout_2" "$nproc"
+       run_strace --follow-forks -qq -enone -esignal=none "../$NAME" "$timeout_2" "$nproc"
 
        s1="$(date +%s)"
-       [ "$(($s1-$s0))" -lt "$timeout_8" ] ||
+       [ "$(($s1-$s0))" -lt "$timeout_16" ] ||
                break
 
        nproc="$(($nproc+$inc))"
index 0e12bf9ca4b9cfbbe777fbce164ee2f0f0720e21..f0d842d1f582ce45cf1b3760fa3e97bbc69f69a8 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_lseek
 
index 1a200fe7eb9011b261315fe03840c7593032b1f4..61c5cb538d4712787fefc9d630b16e7d8bf2a7d0 100644 (file)
@@ -1,13 +1,13 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_lstat
 
index 7231c491139852702048115d86f9b040b118e1ea..71155b6926ec0745d62cdbe000d50d374cd78f38 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (lstat -a32 -v -P stat.sample -P /dev/full); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (lstat -a31 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
+run_strace_match_diff -a31 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full
index 0c0cf8792e18729263d2a428fbf1ae988a62ec79..de5a265174ab9c99f816bc6e3652fb6a38153a74 100644 (file)
@@ -1,13 +1,13 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_lstat64
 
index 124cce4bbaec2ca81c622535acbf6e41fe368449..4584f9d8aa29cf573fda5aeea4a2d06f9eeac9ea 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (lstat64 -a32 -v -P stat.sample -P /dev/full); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (lstat64 -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
+run_strace_match_diff -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full
index 33a7abbedc7f14206eb053cf038c58b15b6bb39a..51118c6a0f8fd18be4276e286df32515d947f552 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 #include <stdio.h>
 #include <sys/mman.h>
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 static const char *errstr;
 
diff --git a/tests/maybe_switch_current_tcp--quiet-thread-execve.c b/tests/maybe_switch_current_tcp--quiet-thread-execve.c
new file mode 100644 (file)
index 0000000..b5c0a50
--- /dev/null
@@ -0,0 +1,2 @@
+#define QUIET_MSG 1
+#include "maybe_switch_current_tcp.c"
diff --git a/tests/maybe_switch_current_tcp--quiet-thread-execve.gen.test b/tests/maybe_switch_current_tcp--quiet-thread-execve.gen.test
new file mode 100755 (executable)
index 0000000..43327db
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (maybe_switch_current_tcp--quiet-thread-execve -a30 -s48 -f -e trace=execveat --quiet=personality,thread-execve); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a30 -s48 -f -e trace=execveat --quiet=personality,thread-execve
diff --git a/tests/maybe_switch_current_tcp.c b/tests/maybe_switch_current_tcp.c
new file mode 100644 (file)
index 0000000..7ba1b9b
--- /dev/null
@@ -0,0 +1,83 @@
+/*
+ * Check for PTRACE_EVENT_EXEC diagnostics.
+ *
+ * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2019-2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <errno.h>
+#include <pthread.h>
+#include <stdio.h>
+#include <unistd.h>
+#include "scno.h"
+
+#ifndef QUIET_MSG
+# define QUIET_MSG 0
+#endif
+
+static pid_t leader;
+static volatile unsigned int trigger;
+
+static void *
+thread(void *arg)
+{
+       const char *argv[] = {((char **) arg)[0], "1", "2", NULL};
+       int tid = syscall(__NR_gettid);
+
+       printf("%-5d execveat(AT_FDCWD, \"%s\", [\"%s\", \"%s\", \"%s\"]"
+              ", NULL, 0 <pid changed to %d ...>\n"
+#if !QUIET_MSG
+              "%-5d +++ superseded by execve in pid %d +++\n"
+#endif
+              , tid, argv[0], argv[0], argv[1], argv[2], leader
+#if !QUIET_MSG
+              , leader, tid
+#endif
+              );
+
+       while (!trigger) {
+               /* Wait for the parent to enter the busy loop.  */
+       }
+
+       syscall(__NR_execveat, -100, argv[0], argv, NULL, 0);
+       perror_msg_and_fail("execveat");
+}
+
+int
+main(int ac, char **av)
+{
+       setvbuf(stdout, NULL, _IONBF, 0);
+       leader = getpid();
+
+       if (ac <= 1) {
+               char *argv[] = {av[0], (char *) "1", NULL};
+               printf("%-5d execveat(AT_FDCWD, \"%s\""
+                      ", [\"%s\", \"%s\"], NULL, 0) = 0\n",
+                      leader, argv[0], argv[0], argv[1]);
+               syscall(__NR_execveat, -100, argv[0], argv, NULL, 0);
+               perror_msg_and_skip("execveat");
+       }
+
+       /*
+        * Since execveat is supported by the kernel,
+        * PTRACE_EVENT_EXEC support in the kernel is good enough.
+        */
+       if (ac <= 2) {
+               pthread_t t;
+               errno = pthread_create(&t, NULL, thread, av);
+               if (errno)
+                       perror_msg_and_fail("pthread_create");
+
+               for (;;)
+                       ++trigger;
+       }
+
+       printf("%-5d <... execveat resumed>) = 0\n"
+              "%-5d +++ exited with 0 +++\n",
+              leader, leader);
+       return 0;
+}
diff --git a/tests/maybe_switch_current_tcp.gen.test b/tests/maybe_switch_current_tcp.gen.test
new file mode 100755 (executable)
index 0000000..ebd50ec
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (maybe_switch_current_tcp -a30 -f -e trace=execveat); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a30 -f -e trace=execveat
diff --git a/tests/mbind-Xabbrev.c b/tests/mbind-Xabbrev.c
new file mode 100644 (file)
index 0000000..a318b5d
--- /dev/null
@@ -0,0 +1 @@
+#include "mbind.c"
diff --git a/tests/mbind-Xabbrev.gen.test b/tests/mbind-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..3ecf183
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mbind-Xabbrev -Xabbrev -e trace=mbind); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -Xabbrev -e trace=mbind
diff --git a/tests/mbind-Xraw.c b/tests/mbind-Xraw.c
new file mode 100644 (file)
index 0000000..86f9608
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "mbind.c"
diff --git a/tests/mbind-Xraw.gen.test b/tests/mbind-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..b66b481
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mbind-Xraw -a33 -Xraw -e trace=mbind); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a33 -Xraw -e trace=mbind
diff --git a/tests/mbind-Xverbose.c b/tests/mbind-Xverbose.c
new file mode 100644 (file)
index 0000000..29285cc
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "mbind.c"
diff --git a/tests/mbind-Xverbose.gen.test b/tests/mbind-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..20ebed6
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mbind-Xverbose -Xverbose -e trace=mbind); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -Xverbose -e trace=mbind
index 8e478a6f4f512c74cb78a0b57746fb50f4174496..321defb9339e4032bdb1f479d45f7fe06efe3ead 100644 (file)
 /*
  * Check decoding of mbind syscall.
  *
- * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_mbind
 
 # include <stdio.h>
 # include <unistd.h>
 
+static const char *errstr;
+
+static long
+k_mbind(const unsigned long start,
+       const unsigned long len,
+       const unsigned long mode,
+       const unsigned long nmask,
+       const unsigned long maxnode,
+       const unsigned int flags)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t arg1 = start;
+       const kernel_ulong_t arg2 = len;
+       const kernel_ulong_t arg3 = mode;
+       const kernel_ulong_t arg4 = nmask;
+       const kernel_ulong_t arg5 = maxnode;
+       const kernel_ulong_t arg6 = fill | flags;
+       const long rc = syscall(__NR_mbind, arg1, arg2, arg3, arg4, arg5, arg6);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
+# if XLAT_RAW
+#  define out_str      raw
+#  define flags_str    "0xffffffff"
+# elif XLAT_VERBOSE
+#  define out_str      verbose
+#  define flags_str    "0xffffffff /* MPOL_MF_STRICT|MPOL_MF_MOVE" \
+                       "|MPOL_MF_MOVE_ALL|0xfffffff8 */"
+# else
+#  define out_str      abbrev
+#  define flags_str    "MPOL_MF_STRICT|MPOL_MF_MOVE|MPOL_MF_MOVE_ALL|0xfffffff8"
+# endif
+
+static struct {
+       unsigned long val;
+       const char *raw;
+       const char *verbose;
+       const char *abbrev;
+} mpol_modes[] = {
+       { ARG_STR(0),
+         "0 /* MPOL_DEFAULT */",
+         "MPOL_DEFAULT" },
+       { ARG_STR(0x1),
+         "0x1 /* MPOL_PREFERRED */",
+         "MPOL_PREFERRED" },
+       { ARG_STR(0x2),
+         "0x2 /* MPOL_BIND */",
+         "MPOL_BIND" },
+       { ARG_STR(0x3),
+         "0x3 /* MPOL_INTERLEAVE */",
+         "MPOL_INTERLEAVE" },
+       { ARG_STR(0x4),
+         "0x4 /* MPOL_LOCAL */",
+         "MPOL_LOCAL" },
+       { ARG_STR(0x8000),
+         "0x8000 /* MPOL_DEFAULT|MPOL_F_STATIC_NODES */",
+         "MPOL_DEFAULT|MPOL_F_STATIC_NODES" },
+       { ARG_STR(0x4001),
+         "0x4001 /* MPOL_PREFERRED|MPOL_F_RELATIVE_NODES */",
+         "MPOL_PREFERRED|MPOL_F_RELATIVE_NODES" },
+       { ARG_STR(0xc002),
+         "0xc002 /* MPOL_BIND|MPOL_F_STATIC_NODES|MPOL_F_RELATIVE_NODES */",
+         "MPOL_BIND|MPOL_F_STATIC_NODES|MPOL_F_RELATIVE_NODES" },
+       { ARG_STR(0x5),
+         "0x5 /* MPOL_??? */",
+         "0x5 /* MPOL_??? */" },
+       { ARG_STR(0xffff3fff),
+         "0xffff3fff /* MPOL_??? */",
+         "0xffff3fff /* MPOL_??? */" },
+       { ARG_STR(0xffffffff),
+         "0xffffffff /* MPOL_F_STATIC_NODES|MPOL_F_RELATIVE_NODES|0xffff3fff */",
+         "MPOL_F_STATIC_NODES|MPOL_F_RELATIVE_NODES|0xffff3fff" },
+# if SIZEOF_LONG > 4
+       { 0xffffffff00000000UL,
+         "0xffffffff00000000",
+         "0xffffffff00000000 /* MPOL_??? */",
+         "0xffffffff00000000 /* MPOL_??? */" },
+       { 0xffffffffffff3fffUL,
+         "0xffffffffffff3fff",
+         "0xffffffffffff3fff /* MPOL_??? */",
+         "0xffffffffffff3fff /* MPOL_??? */" },
+       { -1UL,
+         "0xffffffffffffffff",
+         "0xffffffffffffffff /* MPOL_F_STATIC_NODES|MPOL_F_RELATIVE_NODES"
+         "|0xffffffffffff3fff */",
+         "MPOL_F_STATIC_NODES|MPOL_F_RELATIVE_NODES|0xffffffffffff3fff" },
+# endif
+};
+
 int
 main(void)
 {
-       const unsigned long len = (unsigned long) 0xcafef00dbadc0dedULL;
-       const unsigned long mode = 3;
-       const unsigned long nodemask = (unsigned long) 0xfacefeedfffffff1ULL;
-       const unsigned long maxnode = (unsigned long) 0xdeadbeeffffffff2ULL;
-       const unsigned long flags = -1UL;
-
-       long rc = syscall(__NR_mbind, 0, len, mode, nodemask, maxnode, flags);
-       printf("mbind(NULL, %lu, %s, %#lx, %lu, %s|%#x) = %ld %s (%m)\n",
-              len, "MPOL_INTERLEAVE", nodemask, maxnode,
-              "MPOL_MF_STRICT|MPOL_MF_MOVE|MPOL_MF_MOVE_ALL",
-              (unsigned) flags & ~7, rc, errno2name());
+       const unsigned long size = get_page_size();
+       unsigned long *const addr = tail_alloc(size);
+       const unsigned long start = (unsigned long) 0xfffffff1fffffff2ULL;
+       const unsigned long len = (unsigned long) 0xfffffff4fffffff4ULL;
+       const unsigned long nodemask = (unsigned long) 0xfffffff5fffffff6ULL;
+       const unsigned long maxnode = (unsigned long) 0xfffffff7fffffff8ULL;
+
+       if (k_mbind((unsigned long) addr, size, mpol_modes[0].val, 0, 0, 0))
+               perror_msg_and_skip("mbind");
+       printf("mbind(%p, %lu, %s, NULL, 0, 0) = 0\n",
+              addr, size, mpol_modes[0].out_str);
+
+       for (unsigned int i = 0; i < ARRAY_SIZE(mpol_modes); ++i) {
+               if (i) {
+                       k_mbind((unsigned long) addr, size, mpol_modes[i].val,
+                               0, 0, 0);
+                       printf("mbind(%p, %lu, %s, NULL, 0, 0) = %s\n",
+                              addr, size, mpol_modes[i].out_str, errstr);
+               }
+
+               k_mbind(start, len, mpol_modes[i].val,
+                       nodemask, maxnode, -1U);
+               printf("mbind(%#lx, %lu, %s, %#lx, %lu, %s) = %s\n",
+                      start, len, mpol_modes[i].out_str,
+                      nodemask, maxnode, flags_str, errstr);
+       }
 
        puts("+++ exited with 0 +++");
        return 0;
index 0e55497b10879f4a31d6e6315bab6201b6da941e..bdacf7f37ea7ac5d27d8d67748ef7cac14354c64 100644 (file)
@@ -1,13 +1,12 @@
 /*
  * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
 #include "scno.h"
 
 #ifdef __NR_membarrier
index 2658a1ba21449b7ef3eaacc69d500bb2d1a27eb2..06e017ef4c6cfd4b4cdb79c274c26d76d8f69a81 100644 (file)
@@ -2,13 +2,13 @@
  * Check decoding of memfd_create syscall.
  *
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
 #include "scno.h"
 
 #ifdef __NR_memfd_create
diff --git a/tests/migrate_pages--pidns-translation.c b/tests/migrate_pages--pidns-translation.c
new file mode 100644 (file)
index 0000000..ec34938
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "migrate_pages.c"
diff --git a/tests/migrate_pages--pidns-translation.gen.test b/tests/migrate_pages--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..c6b5b3a
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (migrate_pages--pidns-translation test_pidns -a33 -e trace=migrate_pages); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a33 -e trace=migrate_pages
index e8e66eceb5008bbecb1b7bfb220decd813d75f1c..34da2808ce4d0b944bbd552d282b5f03592010ab 100644 (file)
@@ -2,13 +2,15 @@
  * Check decoding of migrate_pages syscall.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
+#include "pidns.h"
 
 #ifdef __NR_migrate_pages
 
 int
 main(void)
 {
-       const long pid = (long) 0xfacefeedffffffffULL;
+       PIDNS_TEST_INIT;
+
+       const long pid = (long) 0xfacefeed00000000ULL | getpid();
        long rc = syscall(__NR_migrate_pages, pid, 0, 0, 0);
-       printf("migrate_pages(%d, 0, NULL, NULL) = %ld %s (%m)\n",
-              (int) pid, rc, errno2name());
 
+       pidns_print_leader();
+       printf("migrate_pages(%d%s, 0, NULL, NULL) = %ld",
+               (int) pid, pidns_pid2str(PT_TGID), rc);
+
+       if (rc < 0)
+               printf(" %s (%m)\n", errno2name());
+       else
+               printf("\n");
+
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
index e6e62ef65671965482b0b9604538b88e80140486..9faee7eb3f1193a938d0f45ea3540f28c54b8620 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_mkdir
 
index 91bf06be3c39077e39827ce53b96b688f83b0ef2..1b5a68f777693fd9f038a6bc99d4a143325d8343 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_mkdirat
 
index 94d80284a610a802f90e5d5d7416b9ec0293519e..e4d0e5fcfc924b379b83ac87bf5d856a3c9bda8b 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_mknod
 
@@ -31,44 +31,44 @@ main(int ac, char **av)
        sample = av[0];
 
        long rc = call_mknod(0, dev);
-       printf("mknod(\"%s\", 000) = %ld %s (%m)\n",
-              sample, rc, errno2name());
+       printf("mknod(\"%s\", 000) = %s\n",
+              sample, sprintrc(rc));
 
        rc = call_mknod(0xffff, dev);
-       printf("mknod(\"%s\", %#03ho) = %ld %s (%m)\n",
-              sample, (unsigned short) -1, rc, errno2name());
+       printf("mknod(\"%s\", %#03ho) = %s\n",
+              sample, (unsigned short) -1, sprintrc(rc));
 
        rc = call_mknod(S_IFREG, 0);
-       printf("mknod(\"%s\", S_IFREG|000) = %ld %s (%m)\n",
-              sample, rc, errno2name());
+       printf("mknod(\"%s\", S_IFREG|000) = %s\n",
+              sample, sprintrc(rc));
 
        rc = call_mknod(S_IFDIR | 06, 0);
-       printf("mknod(\"%s\", S_IFDIR|006) = %ld %s (%m)\n",
-              sample, rc, errno2name());
+       printf("mknod(\"%s\", S_IFDIR|006) = %s\n",
+              sample, sprintrc(rc));
 
        rc = call_mknod(S_IFLNK | 060, 0);
-       printf("mknod(\"%s\", S_IFLNK|060) = %ld %s (%m)\n",
-              sample, rc, errno2name());
+       printf("mknod(\"%s\", S_IFLNK|060) = %s\n",
+              sample, sprintrc(rc));
 
        rc = call_mknod(S_IFIFO | 0600, 0);
-       printf("mknod(\"%s\", S_IFIFO|0600) = %ld %s (%m)\n",
-              sample, rc, errno2name());
+       printf("mknod(\"%s\", S_IFIFO|0600) = %s\n",
+              sample, sprintrc(rc));
 
        dev = (unsigned long) 0xdeadbeef00000000ULL | makedev(1, 7);
 
        rc = call_mknod(S_IFCHR | 024, dev);
-       printf("mknod(\"%s\", S_IFCHR|024, makedev(0x1, 0x7)) = %ld %s (%m)\n",
-              sample, rc, errno2name());
+       printf("mknod(\"%s\", S_IFCHR|024, makedev(0x1, 0x7)) = %s\n",
+              sample, sprintrc(rc));
 
        const unsigned short mode = (0xffff & ~S_IFMT) | S_IFBLK;
        dev = (unsigned long) 0xdeadbeefbadc0dedULL;
 
        rc = call_mknod(mode, dev);
        printf("mknod(\"%s\", S_IFBLK|S_ISUID|S_ISGID|S_ISVTX|%#03ho"
-              ", makedev(%#x, %#x)) = %ld %s (%m)\n",
+              ", makedev(%#x, %#x)) = %s\n",
               sample, (short) (mode & ~(S_IFMT|S_ISUID|S_ISGID|S_ISVTX)),
               major((unsigned) dev), minor((unsigned) dev),
-              rc, errno2name());
+              sprintrc(rc));
 
        puts("+++ exited with 0 +++");
        return 0;
index 34b34d8073bcbcd8c1ff3802cbeb1d2fa7bba6ab..ffc56210df23a524835ba88d3ea0d3c3249c2b96 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_mknodat
 
index 0f31d20c812c33d09f85317604ae846289485810..c2550ba93f651e5039c8bd15ca9dd5dc0b83cf5e 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_mlock && defined __NR_munlock
 
index 23f1cd9aa8f94c3789174a85e04f8894956b7bab..0489afe3917ef50d11e3bc483216674d0adac6dc 100644 (file)
@@ -1,12 +1,12 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
 #include "scno.h"
 
 #ifdef __NR_mlock2
index 78e370e462d6b896f1a61f8edda968d2b0a13ecb..b642bbe23ca19a6b06d7b1020137a07888e68455 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Check decoding of modify_ldt syscall.
  *
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -9,7 +9,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_modify_ldt && defined HAVE_STRUCT_USER_DESC
 
@@ -23,18 +23,26 @@ void
 printrc(long rc)
 {
 # ifdef __x86_64__
-       int err = -rc;
+       /*
+        * Hopefully, we don't expect EPERM to be returned,
+        * otherwise we can't distinguish it on x32.
+        */
+       if (rc != -1) {
+               int err = -rc;
 
-       /* Thanks, long return type of syscall(2) */
-       printf("%lld", zero_extend_signed_to_ull(rc));
+               /* Thanks, long return type of syscall(2) */
+               printf("%lld", zero_extend_signed_to_ull(rc));
 
-       if (err > 0 && err < 0x1000) {
-               errno = err;
-               printf(" %s (%m)", errno2name());
+               if (err > 0 && err < 0x1000) {
+                       errno = err;
+                       printf(" %s (%m)", errno2name());
+               }
        }
-# else
-       printf("%s", sprintrc(rc));
+       else
 # endif
+       {
+               printf("%s", sprintrc(rc));
+       }
 
        puts("");
 }
diff --git a/tests/move_mount-P.c b/tests/move_mount-P.c
new file mode 100644 (file)
index 0000000..1e1cd5c
--- /dev/null
@@ -0,0 +1,2 @@
+#define PATH_TRACING
+#include "move_mount.c"
diff --git a/tests/move_mount-P.gen.test b/tests/move_mount-P.gen.test
new file mode 100755 (executable)
index 0000000..780d8c9
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (move_mount-P -y -P /dev/full -e trace=move_mount); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -y -P /dev/full -e trace=move_mount
diff --git a/tests/move_mount.c b/tests/move_mount.c
new file mode 100644 (file)
index 0000000..b6ebfda
--- /dev/null
@@ -0,0 +1,102 @@
+/*
+ * Check decoding of move_mount syscall.
+ *
+ * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_move_mount
+
+# include <fcntl.h>
+# include <limits.h>
+# include <stdio.h>
+# include <stdint.h>
+# include <unistd.h>
+
+static const char *errstr;
+
+static long
+k_move_mount(const unsigned int from_dfd, const void *from_fname,
+            const unsigned int to_dfd, const void *to_fname,
+            const unsigned int flags)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = fill | from_dfd;
+       const kernel_ulong_t arg2 = (uintptr_t) from_fname;
+       const kernel_ulong_t arg3 = fill | to_dfd;
+       const kernel_ulong_t arg4 = (uintptr_t) to_fname;
+       const kernel_ulong_t arg5 = fill | flags;
+       const long rc = syscall(__NR_move_mount,
+                               arg1, arg2, arg3, arg4, arg5, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
+int
+main(void)
+{
+       skip_if_unavailable("/proc/self/fd/");
+
+       static const char path_full[] = "/dev/full";
+       const char *const path = tail_memdup(path_full, sizeof(path_full));
+       const void *const efault = path + sizeof(path_full);
+       const char *const empty = efault - 1;
+       char *const fname = tail_alloc(PATH_MAX);
+       fill_memory_ex(fname, PATH_MAX, '0', 10);
+
+        int dfd = open(path, O_WRONLY);
+        if (dfd < 0)
+                perror_msg_and_fail("open: %s", path);
+
+       k_move_mount(-1, 0, -100, efault, 0);
+# ifndef PATH_TRACING
+       printf("move_mount(-1, NULL, AT_FDCWD, %p, 0) = %s\n", efault, errstr);
+# endif
+
+       k_move_mount(-100, efault, -1, 0, 0);
+# ifndef PATH_TRACING
+       printf("move_mount(AT_FDCWD, %p, -1, NULL, 0) = %s\n", efault, errstr);
+# endif
+
+       k_move_mount(dfd, fname, -100, empty, 1);
+       printf("move_mount(%d<%s>, \"%.*s\"..., AT_FDCWD, \"\", %s) = %s\n",
+              dfd, path, (int) PATH_MAX - 1, fname, "MOVE_MOUNT_F_SYMLINKS", errstr);
+
+       k_move_mount(-100, empty, dfd, fname, 0x10);
+       printf("move_mount(AT_FDCWD, \"\", %d<%s>, \"%.*s\"..., %s) = %s\n",
+              dfd, path, (int) PATH_MAX - 1, fname, "MOVE_MOUNT_T_SYMLINKS", errstr);
+
+# define f_flags_str "MOVE_MOUNT_F_SYMLINKS|MOVE_MOUNT_F_AUTOMOUNTS|MOVE_MOUNT_F_EMPTY_PATH"
+       fname[PATH_MAX - 1] = '\0';
+       k_move_mount(dfd, fname, -100, empty, 7);
+       printf("move_mount(%d<%s>, \"%s\", AT_FDCWD, \"\", %s) = %s\n",
+              dfd, path, fname, f_flags_str, errstr);
+
+# define t_flags_str "MOVE_MOUNT_T_SYMLINKS|MOVE_MOUNT_T_AUTOMOUNTS|MOVE_MOUNT_T_EMPTY_PATH"
+       k_move_mount(-100, empty, dfd, fname, 0x70);
+       printf("move_mount(AT_FDCWD, \"\", %d<%s>, \"%s\", %s) = %s\n",
+              dfd, path, fname, t_flags_str, errstr);
+
+       k_move_mount(-1, path, -100, empty, 0x77);
+       printf("move_mount(-1, \"%s\", AT_FDCWD, \"\", %s) = %s\n",
+              path, f_flags_str "|" t_flags_str, errstr);
+
+       k_move_mount(-100, empty, -1, path, -1);
+       printf("move_mount(AT_FDCWD, \"\", -1, \"%s\", %s) = %s\n",
+              path, f_flags_str "|" t_flags_str "|0xffffff88", errstr);
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_move_mount")
+
+#endif
diff --git a/tests/move_mount.gen.test b/tests/move_mount.gen.test
new file mode 100755 (executable)
index 0000000..465810f
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (move_mount -y ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -y 
diff --git a/tests/move_pages--pidns-translation.c b/tests/move_pages--pidns-translation.c
new file mode 100644 (file)
index 0000000..8498e39
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "move_pages.c"
diff --git a/tests/move_pages--pidns-translation.gen.test b/tests/move_pages--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..acd97c6
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (move_pages--pidns-translation test_pidns -s3 -e trace=move_pages); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -s3 -e trace=move_pages
index 895c7c6f00f9b56e0e1c7d47d20c0ca7875289ec..e648f00acc64bd68e32818721e896e4554b87b8a 100644 (file)
@@ -2,14 +2,15 @@
  * Check decoding of move_pages syscall.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2019 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
+#include "pidns.h"
 
 #ifdef __NR_move_pages
 
@@ -122,15 +123,20 @@ print_status_array(const int *const status, const unsigned long count)
 }
 
 static void
-print_stat_pages(const unsigned long pid, const unsigned long count,
-                const void **const pages, int *const status)
+print_stat_pages(const unsigned long pid,
+                const char *pid_str,
+                const unsigned long count,
+                const void **const pages,
+                int *const status)
 {
        const unsigned long flags = (unsigned long) 0xfacefeed00000002ULL;
 
        long rc = syscall(__NR_move_pages,
                          pid, count, pages, NULL, status, flags);
        const char *errstr = sprintrc(rc);
-       printf("move_pages(%d, %lu, ", (int) pid, count);
+       pidns_print_leader();
+       printf("move_pages(%d%s, %lu, ", (int) pid, pid_str,
+               count);
        print_page_array(pages, count, 0);
        printf(", NULL, ");
        if (rc) {
@@ -152,6 +158,7 @@ print_stat_pages(const unsigned long pid, const unsigned long count,
 
 static void
 print_move_pages(const unsigned long pid,
+                const char *pid_str,
                 unsigned long count,
                 const unsigned int offset,
                 const void **const pages,
@@ -164,7 +171,9 @@ print_move_pages(const unsigned long pid,
        long rc = syscall(__NR_move_pages,
                          pid, count, pages, nodes, status, flags);
        const char *errstr = sprintrc(rc);
-       printf("move_pages(%d, %lu, ", (int) pid, count);
+       pidns_print_leader();
+       printf("move_pages(%d%s, %lu, ", (int) pid, pid_str,
+               count);
        print_page_array(pages, count, offset);
        printf(", ");
        print_node_array(nodes, count, offset);
@@ -185,8 +194,11 @@ print_move_pages(const unsigned long pid,
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        const unsigned long pid =
                (unsigned long) 0xfacefeed00000000ULL | getpid();
+       const char *pid_str = pidns_pid2str(PT_TGID);
        unsigned long count = 1;
        const unsigned page_size = get_page_size();
        const void *const page = tail_alloc(page_size);
@@ -195,40 +207,41 @@ main(void)
        TAIL_ALLOC_OBJECT_VAR_PTR(int, nodes);
        TAIL_ALLOC_OBJECT_VAR_PTR(int, status);
 
-       print_stat_pages(pid, 0, pages, status);
-       print_move_pages(pid, 0, 0, pages, nodes, status);
-       print_move_pages(pid, 0, 1, pages + 1, nodes + 1, status + 1);
+       print_stat_pages(pid, pid_str, 0, pages, status);
+       print_move_pages(pid, pid_str, 0, 0, pages, nodes, status);
+       print_move_pages(pid, pid_str, 0, 1, pages + 1, nodes + 1, status + 1);
 
        *pages = page;
-       print_stat_pages(pid, count, pages, status);
+       print_stat_pages(pid, pid_str, count, pages, status);
        *nodes = 0xdeadbee1;
-       print_move_pages(pid, count, 0, pages, nodes, status);
-       print_move_pages(pid, count, 1, pages, nodes, status);
+       print_move_pages(pid, pid_str, count, 0, pages, nodes, status);
+       print_move_pages(pid, pid_str, count, 1, pages, nodes, status);
 
        ++count;
        --status;
        *(--pages) = efault;
-       print_stat_pages(pid, count, pages, status);
+       print_stat_pages(pid, pid_str, count, pages, status);
        *(--nodes) = 0xdeadbee2;
-       print_move_pages(pid, count, 0, pages, nodes, status);
-       print_move_pages(pid, count, 1, pages, nodes, status);
+       print_move_pages(pid, pid_str, count, 0, pages, nodes, status);
+       print_move_pages(pid, pid_str, count, 1, pages, nodes, status);
 
        ++count;
        --status;
        *(--pages) = nodes;
-       print_stat_pages(pid, count, pages, status);
+       print_stat_pages(pid, pid_str, count, pages, status);
        *(--nodes) = 0xdeadbee3;
-       print_move_pages(pid, count, 0, pages, nodes, status);
-       print_move_pages(pid, count, 1, pages, nodes, status);
+       print_move_pages(pid, pid_str, count, 0, pages, nodes, status);
+       print_move_pages(pid, pid_str, count, 1, pages, nodes, status);
 
        ++count;
        --status;
        *(--pages) = status;
-       print_stat_pages(pid, count, pages, status);
+       print_stat_pages(pid, pid_str, count, pages, status);
        *(--nodes) = 0xdeadbee4;
-       print_move_pages(pid, count, 0, pages, nodes, status);
-       print_move_pages(pid, count, 1, pages, nodes, status);
+       print_move_pages(pid, pid_str, count, 0, pages, nodes, status);
+       print_move_pages(pid, pid_str, count, 1, pages, nodes, status);
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
index 7af0f36e017005ebe6abd063a53a08d1ebf38d36..45ddf5ee9a2d62c55a4088a1b123379db8c52678 100644 (file)
@@ -3,7 +3,7 @@
  * mq_unlink syscalls.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -11,7 +11,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_mq_open && __NR_mq_timedsend && __NR_mq_timedreceive && \
        __NR_mq_notify && __NR_mq_unlink
index a4a32a88915e151247bcb9fd08520a3122c15a8b..2fd6c95d54a7ed3c568095756a5f981cf4996ead 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of struct msghdr ancillary data.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2019 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -25,6 +25,9 @@
 # include <linux/time_types.h>
 #endif
 
+#include "kernel_timeval.h"
+#include "kernel_old_timespec.h"
+
 #include "xlat.h"
 #define XLAT_MACROS_ONLY
 #include "xlat/sock_options.h"
@@ -38,9 +41,6 @@
 # define SOL_TCP 6
 #endif
 
-#define MIN_SIZE_OF(type, member) \
-       (offsetof(type, member) + sizeof(((type *) 0)->member))
-
 static struct cmsghdr *
 get_cmsghdr(void *const page, const size_t len)
 {
@@ -87,11 +87,11 @@ test_scm_rights1(struct msghdr *const mh,
 
        struct cmsghdr *cmsg = get_cmsghdr(page, msg_controllen);
 
-       if (msg_controllen >= MIN_SIZE_OF(struct cmsghdr, cmsg_len))
+       if (msg_controllen >= offsetofend(struct cmsghdr, cmsg_len))
                cmsg->cmsg_len = cmsg_len;
-       if (msg_controllen >= MIN_SIZE_OF(struct cmsghdr, cmsg_level))
+       if (msg_controllen >= offsetofend(struct cmsghdr, cmsg_level))
                cmsg->cmsg_level = SOL_SOCKET;
-       if (msg_controllen >= MIN_SIZE_OF(struct cmsghdr, cmsg_type))
+       if (msg_controllen >= offsetofend(struct cmsghdr, cmsg_type))
                cmsg->cmsg_type = SCM_RIGHTS;
 
        size_t src_len =
@@ -152,11 +152,11 @@ test_scm_rights2(struct msghdr *const mh,
                memcpy(CMSG_DATA(cmsg[0]), src[0], cmsg_len[0] - CMSG_LEN(0));
 
        const size_t msg_controllen1 = msg_controllen - aligned_cms_len[0];
-       if (msg_controllen1 >= MIN_SIZE_OF(struct cmsghdr, cmsg_len))
+       if (msg_controllen1 >= offsetofend(struct cmsghdr, cmsg_len))
                cmsg[1]->cmsg_len = cmsg_len[1];
-       if (msg_controllen >= MIN_SIZE_OF(struct cmsghdr, cmsg_level))
+       if (msg_controllen >= offsetofend(struct cmsghdr, cmsg_level))
                cmsg[1]->cmsg_level = SOL_SOCKET;
-       if (msg_controllen >= MIN_SIZE_OF(struct cmsghdr, cmsg_type))
+       if (msg_controllen >= offsetofend(struct cmsghdr, cmsg_type))
                cmsg[1]->cmsg_type = SCM_RIGHTS;
        size_t src1_len =
                cmsg_len[1] < msg_controllen1 ? cmsg_len[1] : msg_controllen1;
@@ -217,15 +217,17 @@ test_scm_rights3(struct msghdr *const mh, void *const page, const size_t nfds)
 static void
 test_scm_timestamp_old(struct msghdr *const mh, void *const page)
 {
-       size_t len = CMSG_SPACE(sizeof(struct timeval));
+       static const kernel_old_timeval_t tv = {
+               .tv_sec = 123456789,
+               .tv_usec = 987654
+       };
+       size_t len = CMSG_SPACE(sizeof(tv));
        struct cmsghdr *cmsg = get_cmsghdr(page, len);
 
-       cmsg->cmsg_len = CMSG_LEN(sizeof(struct timeval));
+       cmsg->cmsg_len = CMSG_LEN(sizeof(tv));
        cmsg->cmsg_level = SOL_SOCKET;
        cmsg->cmsg_type = SO_TIMESTAMP_OLD;
-       struct timeval *tv = (struct timeval *) CMSG_DATA(cmsg);
-       tv->tv_sec = 123456789;
-       tv->tv_usec = 987654;
+       memcpy(CMSG_DATA(cmsg), &tv, sizeof(tv));
 
        mh->msg_control = cmsg;
        mh->msg_controllen = len;
@@ -237,13 +239,13 @@ test_scm_timestamp_old(struct msghdr *const mh, void *const page)
               ", cmsg_data={tv_sec=%lld, tv_usec=%llu}}]"
               ", msg_controllen=%lu, msg_flags=0}, 0) = %d %s (%m)\n",
               (unsigned) cmsg->cmsg_len,
-              (long long) tv->tv_sec, zero_extend_signed_to_ull(tv->tv_usec),
+              (long long) tv.tv_sec, zero_extend_signed_to_ull(tv.tv_usec),
               (unsigned long) len, rc, errno2name());
 
-       len = CMSG_SPACE(sizeof(struct timeval) - sizeof(long));
+       len = CMSG_SPACE(sizeof(tv) - sizeof(long));
        cmsg = get_cmsghdr(page, len);
 
-       cmsg->cmsg_len = CMSG_LEN(sizeof(struct timeval) - sizeof(long));
+       cmsg->cmsg_len = CMSG_LEN(sizeof(tv) - sizeof(long));
        cmsg->cmsg_level = SOL_SOCKET;
        cmsg->cmsg_type = SO_TIMESTAMP_OLD;
 
@@ -262,15 +264,17 @@ test_scm_timestamp_old(struct msghdr *const mh, void *const page)
 static void
 test_scm_timestampns_old(struct msghdr *const mh, void *const page)
 {
-       size_t len = CMSG_SPACE(sizeof(struct timespec));
+       static const kernel_old_timespec_t ts = {
+               .tv_sec = 123456789,
+               .tv_nsec = 987654321
+       };
+       size_t len = CMSG_SPACE(sizeof(ts));
        struct cmsghdr *cmsg = get_cmsghdr(page, len);
 
-       cmsg->cmsg_len = CMSG_LEN(sizeof(struct timespec));
+       cmsg->cmsg_len = CMSG_LEN(sizeof(ts));
        cmsg->cmsg_level = SOL_SOCKET;
        cmsg->cmsg_type = SO_TIMESTAMPNS_OLD;
-       struct timespec *ts = (struct timespec *) CMSG_DATA(cmsg);
-       ts->tv_sec = 123456789;
-       ts->tv_nsec = 987654321;
+       memcpy(CMSG_DATA(cmsg), &ts, sizeof(ts));
 
        mh->msg_control = cmsg;
        mh->msg_controllen = len;
@@ -282,13 +286,13 @@ test_scm_timestampns_old(struct msghdr *const mh, void *const page)
               ", cmsg_data={tv_sec=%lld, tv_nsec=%llu}}]"
               ", msg_controllen=%lu, msg_flags=0}, 0) = %d %s (%m)\n",
               (unsigned) cmsg->cmsg_len,
-              (long long) ts->tv_sec, zero_extend_signed_to_ull(ts->tv_nsec),
+              (long long) ts.tv_sec, zero_extend_signed_to_ull(ts.tv_nsec),
               (unsigned long) len, rc, errno2name());
 
-       len = CMSG_SPACE(sizeof(struct timespec) - sizeof(long));
+       len = CMSG_SPACE(sizeof(ts) - sizeof(long));
        cmsg = get_cmsghdr(page, len);
 
-       cmsg->cmsg_len = CMSG_LEN(sizeof(struct timespec) - sizeof(long));
+       cmsg->cmsg_len = CMSG_LEN(sizeof(ts) - sizeof(long));
        cmsg->cmsg_level = SOL_SOCKET;
        cmsg->cmsg_type = SO_TIMESTAMPNS_OLD;
 
@@ -308,19 +312,18 @@ test_scm_timestampns_old(struct msghdr *const mh, void *const page)
 static void
 test_scm_timestamping_old(struct msghdr *const mh, void *const page)
 {
-       size_t len = CMSG_SPACE(3 * sizeof(struct timespec));
+       static const kernel_old_timespec_t ts[] = {
+               { .tv_sec = 123456789, .tv_nsec = 987654321 },
+               { .tv_sec = 123456790, .tv_nsec = 987654320 },
+               { .tv_sec = 123456791, .tv_nsec = 987654319 }
+       };
+       size_t len = CMSG_SPACE(sizeof(ts));
        struct cmsghdr *cmsg = get_cmsghdr(page, len);
 
-       cmsg->cmsg_len = CMSG_LEN(3 * sizeof(struct timespec));
+       cmsg->cmsg_len = CMSG_LEN(sizeof(ts));
        cmsg->cmsg_level = SOL_SOCKET;
        cmsg->cmsg_type = SO_TIMESTAMPING_OLD;
-       struct timespec *ts = (struct timespec *) CMSG_DATA(cmsg);
-       ts[0].tv_sec = 123456789;
-       ts[0].tv_nsec = 987654321;
-       ts[1].tv_sec = 123456790;
-       ts[1].tv_nsec = 987654320;
-       ts[2].tv_sec = 123456791;
-       ts[2].tv_nsec = 987654319;
+       memcpy(CMSG_DATA(cmsg), ts, sizeof(ts));
 
        mh->msg_control = cmsg;
        mh->msg_controllen = len;
@@ -340,10 +343,10 @@ test_scm_timestamping_old(struct msghdr *const mh, void *const page)
               zero_extend_signed_to_ull(ts[2].tv_nsec),
               (unsigned long) len, rc, errno2name());
 
-       len = CMSG_SPACE(3 * sizeof(struct timespec) - sizeof(long));
+       len = CMSG_SPACE(sizeof(ts) - sizeof(long));
        cmsg = get_cmsghdr(page, len);
 
-       cmsg->cmsg_len = CMSG_LEN(3 * sizeof(struct timespec) - sizeof(long));
+       cmsg->cmsg_len = CMSG_LEN(sizeof(ts) - sizeof(long));
        cmsg->cmsg_level = SOL_SOCKET;
        cmsg->cmsg_type = SO_TIMESTAMPING_OLD;
 
@@ -364,16 +367,17 @@ test_scm_timestamping_old(struct msghdr *const mh, void *const page)
 static void
 test_scm_timestamp_new(struct msghdr *const mh, void *const page)
 {
-       size_t len = CMSG_SPACE(sizeof(struct __kernel_sock_timeval));
+       static const struct __kernel_sock_timeval tv = {
+               .tv_sec = 0xdefaceddeadbeef,
+               .tv_usec = 0xdec0dedcafef00d
+       };
+       size_t len = CMSG_SPACE(sizeof(tv));
        struct cmsghdr *cmsg = get_cmsghdr(page, len);
 
-       cmsg->cmsg_len = CMSG_LEN(sizeof(struct __kernel_sock_timeval));
+       cmsg->cmsg_len = CMSG_LEN(sizeof(tv));
        cmsg->cmsg_level = SOL_SOCKET;
        cmsg->cmsg_type = SO_TIMESTAMP_NEW;
-       struct __kernel_sock_timeval *tv =
-               (struct __kernel_sock_timeval *) CMSG_DATA(cmsg);
-       tv->tv_sec = 0xdefaceddeadbeef;
-       tv->tv_usec = 0xdec0dedcafef00d;
+       memcpy(CMSG_DATA(cmsg), &tv, sizeof(tv));
 
        mh->msg_control = cmsg;
        mh->msg_controllen = len;
@@ -385,14 +389,13 @@ test_scm_timestamp_new(struct msghdr *const mh, void *const page)
               ", cmsg_data={tv_sec=%lld, tv_usec=%llu}}]"
               ", msg_controllen=%lu, msg_flags=0}, 0) = %s\n",
               (unsigned) cmsg->cmsg_len,
-              (long long) tv->tv_sec, zero_extend_signed_to_ull(tv->tv_usec),
+              (long long) tv.tv_sec, zero_extend_signed_to_ull(tv.tv_usec),
               (unsigned long) len, sprintrc(rc));
 
-       len = CMSG_SPACE(sizeof(struct __kernel_sock_timeval) - sizeof(long));
+       len = CMSG_SPACE(sizeof(tv) - sizeof(long));
        cmsg = get_cmsghdr(page, len);
 
-       cmsg->cmsg_len =
-               CMSG_LEN(sizeof(struct __kernel_sock_timeval) - sizeof(long));
+       cmsg->cmsg_len = CMSG_LEN(sizeof(tv) - sizeof(long));
        cmsg->cmsg_level = SOL_SOCKET;
        cmsg->cmsg_type = SO_TIMESTAMP_NEW;
 
@@ -413,16 +416,17 @@ test_scm_timestamp_new(struct msghdr *const mh, void *const page)
 static void
 test_scm_timestampns_new(struct msghdr *const mh, void *const page)
 {
-       size_t len = CMSG_SPACE(sizeof(struct __kernel_timespec));
+       static const struct __kernel_timespec ts = {
+               .tv_sec = 0xdefaceddeadbeef,
+               .tv_nsec = 0xdec0dedcafef00d
+       };
+       size_t len = CMSG_SPACE(sizeof(ts));
        struct cmsghdr *cmsg = get_cmsghdr(page, len);
 
-       cmsg->cmsg_len = CMSG_LEN(sizeof(struct __kernel_timespec));
+       cmsg->cmsg_len = CMSG_LEN(sizeof(ts));
        cmsg->cmsg_level = SOL_SOCKET;
        cmsg->cmsg_type = SO_TIMESTAMPNS_NEW;
-       struct __kernel_timespec *ts =
-               (struct __kernel_timespec *) CMSG_DATA(cmsg);
-       ts->tv_sec = 0xdefaceddeadbeef;
-       ts->tv_nsec = 0xdec0dedcafef00d;
+       memcpy(CMSG_DATA(cmsg), &ts, sizeof(ts));
 
        mh->msg_control = cmsg;
        mh->msg_controllen = len;
@@ -434,14 +438,13 @@ test_scm_timestampns_new(struct msghdr *const mh, void *const page)
               ", cmsg_data={tv_sec=%lld, tv_nsec=%llu}}]"
               ", msg_controllen=%lu, msg_flags=0}, 0) = %s\n",
               (unsigned) cmsg->cmsg_len,
-              (long long) ts->tv_sec, zero_extend_signed_to_ull(ts->tv_nsec),
+              (long long) ts.tv_sec, zero_extend_signed_to_ull(ts.tv_nsec),
               (unsigned long) len, sprintrc(rc));
 
-       len = CMSG_SPACE(sizeof(struct __kernel_timespec) - sizeof(long));
+       len = CMSG_SPACE(sizeof(ts) - sizeof(long));
        cmsg = get_cmsghdr(page, len);
 
-       cmsg->cmsg_len =
-               CMSG_LEN(sizeof(struct __kernel_timespec) - sizeof(long));
+       cmsg->cmsg_len = CMSG_LEN(sizeof(ts) - sizeof(long));
        cmsg->cmsg_level = SOL_SOCKET;
        cmsg->cmsg_type = SO_TIMESTAMPNS_NEW;
 
@@ -461,20 +464,18 @@ test_scm_timestampns_new(struct msghdr *const mh, void *const page)
 static void
 test_scm_timestamping_new(struct msghdr *const mh, void *const page)
 {
-       size_t len = CMSG_SPACE(3 * sizeof(struct __kernel_timespec));
+       static const struct __kernel_timespec ts[] = {
+               { .tv_sec = 0xdeface0deadbef1, .tv_nsec = 0xdec0de2cafef0d3 },
+               { .tv_sec = 0xdeface4deadbef5, .tv_nsec = 0xdec0de6cafef0d7 },
+               { .tv_sec = 0xdeface8deadbef9, .tv_nsec = 0xdec0dedcafef00d }
+       };
+       size_t len = CMSG_SPACE(sizeof(ts));
        struct cmsghdr *cmsg = get_cmsghdr(page, len);
 
-       cmsg->cmsg_len = CMSG_LEN(3 * sizeof(struct __kernel_timespec));
+       cmsg->cmsg_len = CMSG_LEN(sizeof(ts));
        cmsg->cmsg_level = SOL_SOCKET;
        cmsg->cmsg_type = SO_TIMESTAMPING_NEW;
-       struct __kernel_timespec *ts =
-               (struct __kernel_timespec *) CMSG_DATA(cmsg);
-       ts[0].tv_sec = 0xdeface0deadbef1;
-       ts[0].tv_nsec = 0xdec0de2cafef0d3;
-       ts[1].tv_sec = 0xdeface4deadbef5;
-       ts[1].tv_nsec = 0xdec0de6cafef0d7;
-       ts[2].tv_sec = 0xdeface8deadbef9;
-       ts[2].tv_nsec = 0xdec0dedcafef00d;
+       memcpy(CMSG_DATA(cmsg), ts, sizeof(ts));
 
        mh->msg_control = cmsg;
        mh->msg_controllen = len;
@@ -494,11 +495,10 @@ test_scm_timestamping_new(struct msghdr *const mh, void *const page)
               zero_extend_signed_to_ull(ts[2].tv_nsec),
               (unsigned long) len, sprintrc(rc));
 
-       len = CMSG_SPACE(3 * sizeof(struct __kernel_timespec) - sizeof(long));
+       len = CMSG_SPACE(sizeof(ts) - sizeof(long));
        cmsg = get_cmsghdr(page, len);
 
-       cmsg->cmsg_len =
-               CMSG_LEN(3 * sizeof(struct __kernel_timespec) - sizeof(long));
+       cmsg->cmsg_len = CMSG_LEN(sizeof(ts) - sizeof(long));
        cmsg->cmsg_level = SOL_SOCKET;
        cmsg->cmsg_type = SO_TIMESTAMPING_NEW;
 
@@ -987,7 +987,7 @@ int main(int ac, const char **av)
        printf("sendmsg(-1, %p, 0) = %d %s (%m)\n",
               mh + 1, rc, errno2name());
 
-       void *page = tail_alloc(1) + 1;
+       void *page = tail_alloc(1024) + 1024;
        mh->msg_control = page;
        mh->msg_controllen = CMSG_LEN(0);
        rc = sendmsg(-1, mh, 0);
index c7ebf496e0ac2592e5a4896e0852e2da9dbcb407..d55b395c40ac489a1f9b84b892b83d1f62207a64 100644 (file)
@@ -2,19 +2,38 @@
  * Check decoding of nanosleep syscall.
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <assert.h>
-#include <stdio.h>
-#include <stdint.h>
-#include <signal.h>
-#include <time.h>
-#include <sys/time.h>
+#include "scno.h"
+
+#ifdef __NR_nanosleep
+
+# include <assert.h>
+# include <stdio.h>
+# include <stdint.h>
+# include <signal.h>
+# include <sys/time.h>
+# include <unistd.h>
+
+# include "kernel_old_timespec.h"
+
+static const char *errstr;
+
+static long
+k_nanosleep(const void *const req, void *const rem)
+{
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = (uintptr_t) req;
+       const kernel_ulong_t arg2 = (uintptr_t) rem;
+       const long rc = syscall(__NR_nanosleep, arg1, arg2, bad, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
 
 static void
 handler(int signo)
@@ -25,7 +44,7 @@ int
 main(void)
 {
        struct {
-               struct timespec ts;
+               kernel_old_timespec_t ts;
                uint32_t pad[2];
        } req = {
                .ts.tv_nsec = 0xc0de1,
@@ -38,47 +57,51 @@ main(void)
        const struct sigaction act = { .sa_handler = handler };
        const struct itimerval itv = { .it_value.tv_usec = 111111 };
 
-       if (nanosleep(&req.ts, NULL))
+       if (k_nanosleep(&req.ts, NULL))
                perror_msg_and_fail("nanosleep");
        printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, NULL) = 0\n",
               (long long) req.ts.tv_sec,
               zero_extend_signed_to_ull(req.ts.tv_nsec));
 
-       assert(nanosleep(NULL, &rem.ts) == -1);
-       printf("nanosleep(NULL, %p) = -1 EFAULT (%m)\n", &rem.ts);
+       assert(k_nanosleep(NULL, &rem.ts) == -1);
+       printf("nanosleep(NULL, %p) = %s\n", &rem.ts, errstr);
 
-       if (nanosleep(&req.ts, &rem.ts))
+       if (k_nanosleep(&req.ts, &rem.ts))
                perror_msg_and_fail("nanosleep");
        printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, %p) = 0\n",
               (long long) req.ts.tv_sec,
               zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
 
        req.ts.tv_nsec = 1000000000;
-       assert(nanosleep(&req.ts, &rem.ts) == -1);
-       printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, %p) = -1 EINVAL (%m)\n",
+       assert(k_nanosleep(&req.ts, &rem.ts) == -1);
+       printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, %p) = %s\n",
               (long long) req.ts.tv_sec,
-              zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
+              zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts,
+              errstr);
 
        req.ts.tv_sec = 0xdeadbeefU;
        req.ts.tv_nsec = 0xfacefeedU;
-       assert(nanosleep(&req.ts, &rem.ts) == -1);
-       printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, %p) = -1 EINVAL (%m)\n",
+       assert(k_nanosleep(&req.ts, &rem.ts) == -1);
+       printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, %p) = %s\n",
               (long long) req.ts.tv_sec,
-              zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
+              zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts,
+              errstr);
 
        req.ts.tv_sec = (time_t) 0xcafef00ddeadbeefLL;
        req.ts.tv_nsec = (long) 0xbadc0dedfacefeedLL;
-       assert(nanosleep(&req.ts, &rem.ts) == -1);
-       printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, %p) = -1 EINVAL (%m)\n",
+       assert(k_nanosleep(&req.ts, &rem.ts) == -1);
+       printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, %p) = %s\n",
               (long long) req.ts.tv_sec,
-              zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
+              zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts,
+              errstr);
 
        req.ts.tv_sec = -1;
        req.ts.tv_nsec = -1;
-       assert(nanosleep(&req.ts, &rem.ts) == -1);
-       printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, %p) = -1 EINVAL (%m)\n",
+       assert(k_nanosleep(&req.ts, &rem.ts) == -1);
+       printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, %p) = %s\n",
               (long long) req.ts.tv_sec,
-              zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
+              zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts,
+              errstr);
 
        assert(sigaction(SIGALRM, &act, NULL) == 0);
        assert(sigprocmask(SIG_SETMASK, &set, NULL) == 0);
@@ -88,7 +111,7 @@ main(void)
 
        req.ts.tv_sec = 0;
        req.ts.tv_nsec = 999999999;
-       assert(nanosleep(&req.ts, &rem.ts) == -1);
+       assert(k_nanosleep(&req.ts, &rem.ts) == -1);
        printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}"
               ", {tv_sec=%lld, tv_nsec=%llu})"
               " = ? ERESTART_RESTARTBLOCK (Interrupted by signal)\n",
@@ -101,3 +124,9 @@ main(void)
        puts("+++ exited with 0 +++");
        return 0;
 }
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_nanosleep")
+
+#endif
diff --git a/tests/net--decode-fds-dev-netlink.c b/tests/net--decode-fds-dev-netlink.c
new file mode 100644 (file)
index 0000000..a84f91b
--- /dev/null
@@ -0,0 +1,2 @@
+#define PRINT_SOCK 1
+#include "net-yy-netlink.c"
diff --git a/tests/net--decode-fds-dev-netlink.gen.test b/tests/net--decode-fds-dev-netlink.gen.test
new file mode 100755 (executable)
index 0000000..92663b8
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (net--decode-fds-dev-netlink +net-yy-netlink.test --decode-fds=dev); do not edit.
+set -- --decode-fds=dev
+. "${srcdir=.}/net-yy-netlink.test"
diff --git a/tests/net--decode-fds-none-netlink.c b/tests/net--decode-fds-none-netlink.c
new file mode 100644 (file)
index 0000000..2c8daac
--- /dev/null
@@ -0,0 +1,2 @@
+#define PRINT_SOCK 0
+#include "net-yy-netlink.c"
diff --git a/tests/net--decode-fds-none-netlink.gen.test b/tests/net--decode-fds-none-netlink.gen.test
new file mode 100755 (executable)
index 0000000..ea3f225
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (net--decode-fds-none-netlink +net-yy-netlink.test --decode-fds=none -a9); do not edit.
+set -- --decode-fds=none -a9
+. "${srcdir=.}/net-yy-netlink.test"
diff --git a/tests/net--decode-fds-path-netlink.c b/tests/net--decode-fds-path-netlink.c
new file mode 100644 (file)
index 0000000..a84f91b
--- /dev/null
@@ -0,0 +1,2 @@
+#define PRINT_SOCK 1
+#include "net-yy-netlink.c"
diff --git a/tests/net--decode-fds-path-netlink.gen.test b/tests/net--decode-fds-path-netlink.gen.test
new file mode 100755 (executable)
index 0000000..6943b68
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (net--decode-fds-path-netlink +net-yy-netlink.test --decode-fds=path); do not edit.
+set -- --decode-fds=path
+. "${srcdir=.}/net-yy-netlink.test"
diff --git a/tests/net--decode-fds-socket-netlink.c b/tests/net--decode-fds-socket-netlink.c
new file mode 100644 (file)
index 0000000..7416ccd
--- /dev/null
@@ -0,0 +1,2 @@
+#define PRINT_SOCK 2
+#include "net-yy-netlink.c"
diff --git a/tests/net--decode-fds-socket-netlink.gen.test b/tests/net--decode-fds-socket-netlink.gen.test
new file mode 100755 (executable)
index 0000000..012d876
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (net--decode-fds-socket-netlink +net-yy-netlink.test --decode-fds=socket); do not edit.
+set -- --decode-fds=socket
+. "${srcdir=.}/net-yy-netlink.test"
diff --git a/tests/net-sockaddr--pidns-translation.c b/tests/net-sockaddr--pidns-translation.c
new file mode 100644 (file)
index 0000000..ff432bf
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "net-sockaddr.c"
diff --git a/tests/net-sockaddr--pidns-translation.gen.test b/tests/net-sockaddr--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..ce8db05
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (net-sockaddr--pidns-translation test_pidns -a24 -e trace=connect); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a24 -e trace=connect
index cd9739226314fd9ef6f405fe94a1a86b5465c421..c7e9bde7de75c342e7f8d66491509ea652281cf5 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of sockaddr structures
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2019 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
+#include "pidns.h"
 #include <stddef.h>
 #include <stdio.h>
 #include <string.h>
@@ -40,18 +41,21 @@ check_un(void)
        memset(un->sun_path, '0', sizeof(un->sun_path));
        unsigned int len = sizeof(*un);
        int ret = connect(-1, (void *) un, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_UNIX, sun_path=\"%.*u\"}"
               ", %u) = %d EBADF (%m)\n",
               (int) sizeof(un->sun_path), 0, len, ret);
 
        un->sun_path[1] = 0;
        ret = connect(-1, (void *) un, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_UNIX, sun_path=\"%u\"}, %u)"
               " = %d EBADF (%m)\n", 0, len, ret);
 
        un->sun_path[0] = 0;
        un->sun_path[2] = 1;
        ret = connect(-1, (void *) un, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_UNIX, sun_path=@\"\\0\\001%.*u\"}"
               ", %u) = %d EBADF (%m)\n",
               (int) sizeof(un->sun_path) - 3, 0, len, ret);
@@ -61,12 +65,14 @@ check_un(void)
        memset(un->sun_path, '0', sizeof(un->sun_path));
        len = sizeof(*un) + 2;
        ret = connect(-1, (void *) un, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_UNIX, sun_path=\"%.*u\"}"
               ", %u) = %d EBADF (%m)\n",
               (int) sizeof(un->sun_path), 0, len, ret);
 
        un->sun_path[0] = 0;
        ret = connect(-1, (void *) un, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_UNIX, sun_path=@\"%.*u\"}"
               ", %u) = %d EBADF (%m)\n",
               (int) sizeof(un->sun_path) - 1, 0, len, ret);
@@ -75,18 +81,21 @@ check_un(void)
        un->sun_family = AF_UNIX;
        len = sizeof(*un) - 2;
        ret = connect(-1, (void *) un, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_UNIX, sun_path=\"%.*u\"}"
               ", %u) = %d EBADF (%m)\n",
               (int) sizeof(un->sun_path) - 2, 0, len, ret);
 
        un->sun_path[0] = 0;
        ret = connect(-1, (void *) un, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_UNIX, sun_path=@\"%.*u\"}"
               ", %u) = %d EBADF (%m)\n",
               (int) sizeof(un->sun_path) - 3, 0, len, ret);
 
        len = sizeof(*un);
        ret = connect(-1, (void *) un, len);
+       pidns_print_leader();
        printf("connect(-1, %p, %u) = %d EBADF (%m)\n", un, len, ret);
 
        un = tail_alloc(sizeof(struct sockaddr_storage));
@@ -94,12 +103,14 @@ check_un(void)
        memset(un->sun_path, '0', sizeof(un->sun_path));
        len = sizeof(struct sockaddr_storage) + 1;
        ret = connect(-1, (void *) un, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_UNIX, sun_path=\"%.*u\"}"
               ", %u) = %d EBADF (%m)\n",
               (int) sizeof(un->sun_path), 0, len, ret);
 
        un->sun_path[0] = 0;
        ret = connect(-1, (void *) un, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_UNIX, sun_path=@\"%.*u\"}"
               ", %u) = %d EBADF (%m)\n",
               (int) sizeof(un->sun_path) - 1, 0, len, ret);
@@ -117,6 +128,7 @@ check_in(void)
        in->sin_addr.s_addr = inet_addr(h_addr);
        unsigned int len = sizeof(*in);
        int ret = connect(-1, (void *) in, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_INET, sin_port=htons(%hu)"
               ", sin_addr=inet_addr(\"%s\")}, %u) = %d EBADF (%m)\n",
               h_port, h_addr, len, ret);
@@ -127,6 +139,7 @@ check_in(void)
        in->sin_addr.s_addr = inet_addr(h_addr);
        len = sizeof(*in) + 4;
        ret = connect(-1, (void *) in, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_INET, sin_port=htons(%hu)"
               ", sin_addr=inet_addr(\"%s\")}, %u) = %d EBADF (%m)\n",
               h_port, h_addr, len, ret);
@@ -137,6 +150,7 @@ check_in(void)
        in->sin_addr.s_addr = 0;
        len = sizeof(*in) - 4;
        ret = connect(-1, (void *) in, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_INET, sa_data=\"%s\"}, %u)"
               " = %d EBADF (%m)\n",
               "\\0\\0\\0\\0\\0\\0\\377\\377\\377\\377",
@@ -144,6 +158,7 @@ check_in(void)
 
        len = sizeof(*in);
        ret = connect(-1, (void *) in, len);
+       pidns_print_leader();
        printf("connect(-1, %p, %u) = %d EBADF (%m)\n", in, len, ret);
 }
 
@@ -155,6 +170,7 @@ check_in6_linklocal(struct sockaddr_in6 *const in6, const char *const h_addr)
        in6->sin6_scope_id = 0xfacefeed;
        unsigned int len = sizeof(*in6);
        int ret = connect(-1, (void *) in6, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_INET6, sin6_port=htons(%hu)"
               ", sin6_flowinfo=htonl(%u)"
               ", inet_pton(AF_INET6, \"%s\", &sin6_addr)"
@@ -166,7 +182,8 @@ check_in6_linklocal(struct sockaddr_in6 *const in6, const char *const h_addr)
        in6->sin6_scope_id = ifindex_lo();
        if (in6->sin6_scope_id) {
                ret = connect(-1, (void *) in6, len);
-               printf("connect(-1, {sa_family=AF_INET6, sin6_port=htons(%hu)"
+               pidns_print_leader();
+       printf("connect(-1, {sa_family=AF_INET6, sin6_port=htons(%hu)"
                       ", sin6_flowinfo=htonl(%u)"
                       ", inet_pton(AF_INET6, \"%s\", &sin6_addr)"
                       ", sin6_scope_id=%s}, %u)"
@@ -191,6 +208,7 @@ check_in6(void)
        in6->sin6_scope_id = 0xfacefeed;
        unsigned int len = sizeof(*in6);
        int ret = connect(-1, (void *) in6, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_INET6, sin6_port=htons(%hu)"
               ", sin6_flowinfo=htonl(%u)"
               ", inet_pton(AF_INET6, \"%s\", &sin6_addr)"
@@ -209,6 +227,7 @@ check_in6(void)
        in6->sin6_scope_id = 0xfacefeed;
        len = sizeof(*in6) + 4;
        ret = connect(-1, (void *) in6, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_INET6, sin6_port=htons(%hu)"
               ", sin6_flowinfo=htonl(%u)"
               ", inet_pton(AF_INET6, \"%s\", &sin6_addr)"
@@ -223,6 +242,7 @@ check_in6(void)
        inet_pton(AF_INET6, h_addr, &in6->sin6_addr);
        len = sizeof(*in6) - sizeof(in6->sin6_scope_id);
        ret = connect(-1, (void *) in6, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_INET6, sin6_port=htons(%hu)"
               ", sin6_flowinfo=htonl(%u)"
               ", inet_pton(AF_INET6, \"%s\", &sin6_addr)}, %u)"
@@ -236,6 +256,7 @@ check_in6(void)
        memset(&in6->sin6_addr, '0', sizeof(in6->sin6_addr) - 4);
        len = sizeof(*in6) - sizeof(in6->sin6_scope_id) - 4;
        ret = connect(-1, (void *) in6, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_INET6"
               ", sa_data=\"\\0\\0\\0\\0\\0\\000%.*u\"}, %u)"
               " = %d EBADF (%m)\n",
@@ -244,6 +265,7 @@ check_in6(void)
 
        len = sizeof(*in6) - sizeof(in6->sin6_scope_id);
        ret = connect(-1, (void *) in6, len);
+       pidns_print_leader();
        printf("connect(-1, %p, %u) = %d EBADF (%m)\n", in6, len, ret);
 }
 
@@ -262,6 +284,7 @@ check_ipx(void)
        void *ipx = tail_memdup(&c_ipx, sizeof(c_ipx));
        unsigned int len = sizeof(c_ipx);
        int ret = connect(-1, ipx, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_IPX, sipx_port=htons(%u)"
               ", sipx_network=htonl(%#x)"
               ", sipx_node=[%#02x, %#02x, %#02x, %#02x, %#02x, %#02x]"
@@ -316,18 +339,21 @@ check_ax25(void)
        fill_memory(sax, size);
        sax->fsa_ax25.sax25_family = AF_AX25;
        rc = connect(-1, sax_void, sizeof(struct sockaddr_ax25) - 1);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_AX25, sa_data=\"\\202\\203\\204\\205"
               "\\206\\207\\210\\211\\212\\213\\214\\215\\216\"}, %zu) = %s\n",
               sizeof(struct sockaddr_ax25) - 1, sprintrc(rc));
 
        memcpy(sax, &ax25, sizeof(ax25));
        rc = connect(-1, sax_void, sizeof(struct sockaddr_ax25));
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_AX25, fsa_ax25={sax25_call=VALID-13"
               ", sax25_ndigis=8}, fsa_digipeater=[/* ??? */]}, %zu) = %s\n",
               sizeof(struct sockaddr_ax25), sprintrc(rc));
 
        sax->fsa_ax25.sax25_ndigis = 0;
        rc = connect(-1, sax_void, sizeof(struct sockaddr_ax25));
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_AX25, sax25_call=VALID-13"
               ", sax25_ndigis=0}, %zu) = %s\n",
               sizeof(struct sockaddr_ax25), sprintrc(rc));
@@ -335,6 +361,7 @@ check_ax25(void)
        sax->fsa_ax25.sax25_ndigis = 8;
        size = sizeof(struct sockaddr_ax25) + sizeof(ax25_address) * 3 + 1;
        rc = connect(-1, sax_void, size);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_AX25, fsa_ax25={sax25_call=VALID-13"
               ", sax25_ndigis=8}, fsa_digipeater"
               "=[{ax25_call=\"\\xa6\\xa0\\x82\\x40\\x86\\x8a\\x00\""
@@ -348,6 +375,7 @@ check_ax25(void)
        sax->fsa_digipeater[2].ax25_call[6] = 0x4;
        size = sizeof(struct sockaddr_ax25) + sizeof(ax25_address) * 4;
        rc = connect(-1, sax_void, size);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_AX25, fsa_ax25={sax25_call=VALID-13"
               ", sax25_ndigis=8}, fsa_digipeater"
               "=[{ax25_call=\"\\xa6\\xa0\\x82\\x40\\x86\\x8a\\x00\""
@@ -365,6 +393,7 @@ check_ax25(void)
        for (size_t i = 0; i < 3; i++) {
                size = sizeof(ax25) + sizeof(ax25_address) * (i / 2);
                rc = connect(-1, sax_void, size);
+               pidns_print_leader();
                printf("connect(-1, {sa_family=AF_AX25"
                       ", fsa_ax25={sax25_call=VALID-13, sax25_ndigis=%d}"
                       ", fsa_digipeater=[VALID2-7, OK-15, %s /* FINE-2 */"
@@ -423,25 +452,28 @@ check_x25(void)
                .sx25_family = AF_X25,
                .sx25_addr = { "0123456789abcdef" },
        };
-       void *x25_void = tail_memdup(&c_x25, sizeof(c_x25) + 1);
-       struct sockaddr_x25 *x25 = x25_void;
+       void *const x25_void = tail_memdup(&c_x25, sizeof(c_x25) + 1);
        long rc;
 
-       rc = connect(-1, x25, sizeof(c_x25) - 1);
+       rc = connect(-1, x25_void, sizeof(c_x25) - 1);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_X25"
               ", sa_data=\"0123456789abcde\"}, %zu) = %s\n",
               sizeof(c_x25) - 1, sprintrc(rc));
 
        for (size_t i = 0; i < 2; i++) {
-               rc = connect(-1, x25, sizeof(c_x25) + i);
+               rc = connect(-1, x25_void, sizeof(c_x25) + i);
+               pidns_print_leader();
                printf("connect(-1, {sa_family=AF_X25"
                       ", sx25_addr={x25_addr=\"0123456789abcde\"...}"
                       "}, %zu) = %s\n",
                       sizeof(c_x25) + i, sprintrc(rc));
        }
 
+       struct sockaddr_x25 *const x25 = x25_void;
        x25->sx25_addr.x25_addr[10] = '\0';
-       rc = connect(-1, x25, sizeof(c_x25));
+       rc = connect(-1, x25_void, sizeof(c_x25));
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_X25"
               ", sx25_addr={x25_addr=\"0123456789\"}"
               "}, %zu) = %s\n",
@@ -457,19 +489,21 @@ check_nl(void)
        nl->nl_groups = 0xfacefeed;
        unsigned int len = sizeof(*nl);
        int ret = connect(-1, (void *) nl, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_NETLINK, nl_pid=%d"
               ", nl_groups=%#08x}, %u) = %d EBADF (%m)\n",
               nl->nl_pid, nl->nl_groups, len, ret);
 
        nl = ((void *) nl) - 4;
        nl->nl_family = AF_NETLINK;
-       nl->nl_pid = 1234567890;
+       nl->nl_pid = getpid();
        nl->nl_groups = 0xfacefeed;
        len = sizeof(*nl) + 4;
        ret = connect(-1, (void *) nl, len);
-       printf("connect(-1, {sa_family=AF_NETLINK, nl_pid=%d"
+       pidns_print_leader();
+       printf("connect(-1, {sa_family=AF_NETLINK, nl_pid=%d%s"
               ", nl_groups=%#08x}, %u) = %d EBADF (%m)\n",
-              nl->nl_pid, nl->nl_groups, len, ret);
+              nl->nl_pid, pidns_pid2str(PT_TGID), nl->nl_groups, len, ret);
 }
 
 static void
@@ -487,6 +521,7 @@ check_ll(void)
        void *ll = tail_memdup(&c_ll, sizeof(c_ll));
        unsigned int len = sizeof(c_ll);
        int ret = connect(-1, ll, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_PACKET"
               ", sll_protocol=htons(ETH_P_ALL)"
               ", sll_ifindex=%u, sll_hatype=ARPHRD_ETHER"
@@ -502,6 +537,7 @@ check_ll(void)
 
        ((struct sockaddr_ll *) ll)->sll_halen++;
        ret = connect(-1, ll, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_PACKET"
               ", sll_protocol=htons(ETH_P_ALL)"
               ", sll_ifindex=%u, sll_hatype=ARPHRD_ETHER"
@@ -517,6 +553,7 @@ check_ll(void)
 
        ((struct sockaddr_ll *) ll)->sll_halen = 0;
        ret = connect(-1, ll, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_PACKET"
               ", sll_protocol=htons(ETH_P_ALL)"
               ", sll_ifindex=%u, sll_hatype=ARPHRD_ETHER"
@@ -526,6 +563,7 @@ check_ll(void)
        ((struct sockaddr_ll *) ll)->sll_ifindex = ifindex_lo();
        if (((struct sockaddr_ll *) ll)->sll_ifindex) {
                ret = connect(-1, ll, len);
+       pidns_print_leader();
                printf("connect(-1, {sa_family=AF_PACKET"
                       ", sll_protocol=htons(ETH_P_ALL)"
                       ", sll_ifindex=%s"
@@ -543,11 +581,24 @@ check_hci(void)
        TAIL_ALLOC_OBJECT_VAR_PTR(struct sockaddr_hci, hci);
        hci->hci_family = AF_BLUETOOTH;
        hci->hci_dev = htobs(h_port);
+# ifdef HAVE_STRUCT_SOCKADDR_HCI_HCI_CHANNEL
        hci->hci_channel = HCI_CHANNEL_RAW;
+# endif
        unsigned int len = sizeof(*hci);
-       int ret = connect(-1, (void *) hci, len);
+
+       int ret = connect(-1, (void *) hci, 4);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_BLUETOOTH, hci_dev=htobs(%hu)"
-              ", hci_channel=HCI_CHANNEL_RAW}, %u) = %d EBADF (%m)\n",
+              "}, 4) = %d EBADF (%m)\n",
+              h_port, ret);
+
+       ret = connect(-1, (void *) hci, len);
+       pidns_print_leader();
+       printf("connect(-1, {sa_family=AF_BLUETOOTH, hci_dev=htobs(%hu)"
+# ifdef HAVE_STRUCT_SOCKADDR_HCI_HCI_CHANNEL
+              ", hci_channel=HCI_CHANNEL_RAW"
+# endif
+              "}, %u) = %d EBADF (%m)\n",
               h_port, len, ret);
 }
 
@@ -561,6 +612,7 @@ check_sco(void)
        void *sco = tail_memdup(&c_sco, sizeof(c_sco));
        unsigned int len = sizeof(c_sco);
        int ret = connect(-1, sco, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_BLUETOOTH"
               ", sco_bdaddr=%02x:%02x:%02x:%02x:%02x:%02x"
               "}, %u) = %d EBADF (%m)\n",
@@ -581,6 +633,7 @@ check_rc(void)
        void *rc = tail_memdup(&c_rc, sizeof(c_rc));
        unsigned int len = sizeof(c_rc);
        int ret = connect(-1, rc, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_BLUETOOTH"
               ", rc_bdaddr=%02x:%02x:%02x:%02x:%02x:%02x"
               ", rc_channel=%u}, %u) = %d EBADF (%m)\n",
@@ -608,6 +661,7 @@ check_l2(void)
        unsigned int len = sizeof(c_l2);
 
        int ret = connect(-1, l2, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_BLUETOOTH"
               ", l2_psm=htobs(L2CAP_PSM_DYN_START + %hu)"
               ", l2_bdaddr=%02x:%02x:%02x:%02x:%02x:%02x"
@@ -629,6 +683,7 @@ check_l2(void)
 # endif
        memcpy(l2, &c_l2, sizeof(c_l2));
        ret = connect(-1, l2, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_BLUETOOTH"
               ", l2_psm=htobs(L2CAP_PSM_SDP)"
               ", l2_bdaddr=%02x:%02x:%02x:%02x:%02x:%02x"
@@ -649,6 +704,7 @@ check_l2(void)
 # endif
        memcpy(l2, &c_l2, sizeof(c_l2));
        ret = connect(-1, l2, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_BLUETOOTH"
               ", l2_psm=htobs(0xbad /* L2CAP_PSM_??? */)"
               ", l2_bdaddr=%02x:%02x:%02x:%02x:%02x:%02x"
@@ -666,6 +722,7 @@ check_l2(void)
        c_l2.l2_cid = htobs(0xffff);
        memcpy(l2, &c_l2, 12);
        ret = connect(-1, l2, 12);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_BLUETOOTH"
               ", l2_psm=htobs(L2CAP_PSM_AUTO_END)"
               ", l2_bdaddr=%02x:%02x:%02x:%02x:%02x:%02x"
@@ -689,6 +746,7 @@ check_raw(void)
        u.sa->sa_family = 0xff;
        unsigned int len = sizeof(*u.st) + 8;
        int ret = connect(-1, (void *) u.st, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=%#x /* AF_??? */, sa_data=\"%.*u\"}"
               ", %u) = %d EBADF (%m)\n", u.sa->sa_family,
               (int) (sizeof(*u.st) - sizeof(u.sa->sa_family)), 0, len, ret);
@@ -696,19 +754,22 @@ check_raw(void)
        u.sa->sa_family = 0;
        len = sizeof(u.sa->sa_family) + 1;
        ret = connect(-1, (void *) u.st, len);
+       pidns_print_leader();
        printf("connect(-1, {sa_family=AF_UNSPEC, sa_data=\"0\"}, %u)"
               " = %d EBADF (%m)\n", len, ret);
 
        u.sa->sa_family = AF_BLUETOOTH;
-       ++len;
        ret = connect(-1, (void *) u.st, len);
-       printf("connect(-1, {sa_family=AF_BLUETOOTH, sa_data=\"00\"}, %u)"
+       pidns_print_leader();
+       printf("connect(-1, {sa_family=AF_BLUETOOTH, sa_data=\"0\"}, %u)"
               " = %d EBADF (%m)\n", len, ret);
 }
 
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        check_un();
        check_in();
        check_in6();
@@ -725,6 +786,7 @@ main(void)
 #endif
        check_raw();
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
index 38b1a0d4c5a060b824f902c1068a2773a309d469..e2c9558644dc60c35471a09cfab49df609a1dc4a 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2013-2017 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 #include <linux/sock_diag.h>
 #include <linux/netlink_diag.h>
 
+#ifndef PRINT_SOCK
+# define PRINT_SOCK 2
+#endif
+
+#if PRINT_SOCK == 2
+# define FMT_UNBOUND "<NETLINK:[%lu]>"
+# define FMT_BOUND   "<NETLINK:[SOCK_DIAG:%u]>"
+# define ARG_UNBOUND inode
+# define ARG_BOUND   addr.nl_pid
+#elif PRINT_SOCK == 1
+# define FMT_UNBOUND "<socket:[%lu]>"
+# define FMT_BOUND   "<socket:[%lu]>"
+# define ARG_UNBOUND inode
+# define ARG_BOUND   inode
+#else
+# define FMT_UNBOUND "%s"
+# define FMT_BOUND   "%s"
+# define ARG_UNBOUND ""
+# define ARG_BOUND   ""
+#endif
+
 int
 main(void)
 {
@@ -37,25 +58,27 @@ main(void)
        const int fd = socket(AF_NETLINK, SOCK_RAW, NETLINK_SOCK_DIAG);
        if (fd < 0)
                perror_msg_and_skip("socket");
+#if PRINT_SOCK
        const unsigned long inode = inode_of_sockfd(fd);
+#endif
        printf("socket(AF_NETLINK, SOCK_RAW, NETLINK_SOCK_DIAG) = "
-              "%d<NETLINK:[%lu]>\n", fd, inode);
+              "%d" FMT_UNBOUND "\n", fd, ARG_UNBOUND);
 
        if (bind(fd, sa, *len))
                perror_msg_and_skip("bind");
-       printf("bind(%d<NETLINK:[%lu]>, {sa_family=AF_NETLINK"
-              ", nl_pid=%u, nl_groups=00000000}, %u) = 0\n",
-              fd, inode, addr.nl_pid, (unsigned) *len);
+       printf("bind(%d" FMT_UNBOUND ", {sa_family=AF_NETLINK"
+              ", nl_pid=%d, nl_groups=00000000}, %u) = 0\n",
+              fd, ARG_UNBOUND, addr.nl_pid, (unsigned) *len);
 
        if (getsockname(fd, sa, len))
                perror_msg_and_fail("getsockname");
-       printf("getsockname(%d<NETLINK:[SOCK_DIAG:%u]>, {sa_family=AF_NETLINK"
-              ", nl_pid=%u, nl_groups=00000000}, [%u]) = 0\n",
-              fd, addr.nl_pid, addr.nl_pid, (unsigned) *len);
+       printf("getsockname(%d" FMT_BOUND ", {sa_family=AF_NETLINK"
+              ", nl_pid=%d, nl_groups=00000000}, [%u]) = 0\n",
+              fd, ARG_BOUND, addr.nl_pid, (unsigned) *len);
 
        if (close(fd))
                perror_msg_and_fail("close");
-       printf("close(%d<NETLINK:[SOCK_DIAG:%u]>) = 0\n", fd, addr.nl_pid);
+       printf("close(%d" FMT_BOUND ") = 0\n", fd, ARG_BOUND);
 
        puts("+++ exited with 0 +++");
        return 0;
index 892c9799bc40b992f8590b6d70f3483a21438bbf..729c59a70391ed1a4b2d9f334bc75027781bea26 100755 (executable)
@@ -6,7 +6,7 @@
 # Copyright (c) 2014 Masatake YAMATO <yamato@redhat.com>
 # Copyright (c) 2014-2016 Dmitry V. Levin <ldv@altlinux.org>
 # Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 check_prog sed
 
+opts="${*:--yy}"
+
 run_prog ../netlink_netlink_diag
 run_prog > /dev/null
-run_strace -a22 -yy -eclose,network $args > "$EXP"
+run_strace -a22 ${opts} -eclose,network $args > "$EXP"
 
 # Filter out close() calls made by ld.so and libc.
 sed -n '/socket/,$p' < "$LOG" > "$OUT"
diff --git a/tests/netlink_audit--pidns-translation.c b/tests/netlink_audit--pidns-translation.c
new file mode 100644 (file)
index 0000000..e08f916
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "netlink_audit.c"
diff --git a/tests/netlink_audit--pidns-translation.test b/tests/netlink_audit--pidns-translation.test
new file mode 100755 (executable)
index 0000000..1a39ead
--- /dev/null
@@ -0,0 +1,13 @@
+#!/bin/sh
+#
+# Check pidns translation of NETLINK_SOCK_DIAG protocol decoding
+#
+# Copyright (c) 2020 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+. "${srcdir=.}/init.sh"
+
+run_prog ../netlink_netlink_diag
+test_pidns -e trace=sendto "$@"
index eba609a149c5a866c7384ab7143ebc67de6f9865..559c2f711721ec41acb6a19ef4630b751d2993c8 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
+#include "pidns.h"
 #include <stdio.h>
 #include <string.h>
 #include <unistd.h>
 static void
 test_nlmsg_type(const int fd)
 {
+       PIDNS_TEST_INIT;
+
        long rc;
        struct nlmsghdr nlh = {
                .nlmsg_len = sizeof(nlh),
                .nlmsg_type = AUDIT_GET,
                .nlmsg_flags = NLM_F_REQUEST,
+               .nlmsg_pid = getpid(),
        };
 
        rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0);
+       pidns_print_leader();
        printf("sendto(%d, {len=%u, type=AUDIT_GET"
-              ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+              ", flags=NLM_F_REQUEST, seq=0, pid=%d%s}"
               ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
-              fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc));
+              fd, nlh.nlmsg_len, nlh.nlmsg_pid, pidns_pid2str(PT_TGID),
+              (unsigned) sizeof(nlh), sprintrc(rc));
 }
 
 int main(void)
@@ -39,6 +45,7 @@ int main(void)
 
        test_nlmsg_type(fd);
 
+       pidns_print_leader();
        printf("+++ exited with 0 +++\n");
 
        return 0;
index fd901d8845fa5bffc3e6e89267464898c44e24ec..99d9eb5d9343dd5c3c72163683b6fc5a2237216e 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2014-2017 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -264,7 +264,7 @@ test_nlmsgerr(const int fd)
        printf("sendto(%d, {{len=%u, type=NLMSG_ERROR, flags=NLM_F_REQUEST"
               ", seq=0, pid=0}, {error=-EACCES"
               ", msg={len=%u, type=NLMSG_NOOP, flags=NLM_F_REQUEST|0x%x"
-              ", seq=%u, pid=%u}}}, %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+              ", seq=%u, pid=%d}}}, %u, MSG_DONTWAIT, NULL, 0) = %s\n",
               fd, nlh->nlmsg_len, err->msg.nlmsg_len, NLM_F_DUMP,
               err->msg.nlmsg_seq, err->msg.nlmsg_pid,
               nlh->nlmsg_len, sprintrc(rc));
@@ -289,7 +289,7 @@ test_nlmsgerr(const int fd)
        printf("sendto(%d, {{len=%u, type=NLMSG_ERROR, flags=NLM_F_REQUEST"
               ", seq=0, pid=0}, {error=-EACCES"
               ", msg={{len=%u, type=NLMSG_NOOP, flags=NLM_F_REQUEST|0x%x"
-              ", seq=%u, pid=%u}, \"\\x61\\x62\\x63\\x64\"}}}"
+              ", seq=%u, pid=%d}, \"\\x61\\x62\\x63\\x64\"}}}"
               ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
               fd, nlh->nlmsg_len, err->msg.nlmsg_len, NLM_F_DUMP,
               err->msg.nlmsg_seq, err->msg.nlmsg_pid,
diff --git a/tests/netlink_sock_diag-v.sh b/tests/netlink_sock_diag-v.sh
deleted file mode 100755 (executable)
index 0fb467d..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/sh
-#
-# Check verbose decoding of NETLINK_SOCK_DIAG protocol
-#
-# Copyright (c) 2017-2018 The strace developers.
-# All rights reserved.
-#
-# SPDX-License-Identifier: GPL-2.0-or-later
-
-. "${srcdir=.}/init.sh"
-
-run_prog ../netlink_netlink_diag
-run_strace_match_diff -v -e trace=sendto
index d5fb977b5c5a47e73c288f49e11d5f421546fc48..f3f17ec0b44431b62b23915fb993344e85507a21 100755 (executable)
@@ -2,7 +2,7 @@
 #
 # Check decoding of NETLINK_SOCK_DIAG protocol
 #
-# Copyright (c) 2017-2018 The strace developers.
+# Copyright (c) 2017-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,4 +10,4 @@
 . "${srcdir=.}/init.sh"
 
 run_prog ../netlink_netlink_diag
-run_strace_match_diff -e trace=sendto
+run_strace_match_diff -e trace=sendto "$@"
index 955dce6d3c0d2660512874120fce2a2ddaa2544c..805248afc15344311e50878a219e2bb0a1d58101 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_newfstatat
 
index 40ec797cb24eaf9759a4066537ff472c51400608..9bea27f2925503b9c1024a9031e4517e740aadbb 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (newfstatat -a32 -v -P stat.sample -P /dev/full); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (newfstatat -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
+run_strace_match_diff -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full
index 2c5927b23055a197d3f0ad8163fc1c5187094e4f..1331386f80342f7d27812b3c53ebd65a08f18fbf 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of netlink attribute.
  *
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -105,7 +105,7 @@ test_nlattr(const int fd)
        nla = NLMSG_ATTR(msg, sizeof(msg->udm));
        *nla = (struct nlattr) {
                .nla_len = NLA_HDRLEN + 4,
-               .nla_type = UNIX_DIAG_SHUTDOWN + 1
+               .nla_type = UNIX_DIAG_FIRST_UNUSED
        };
        memcpy(RTA_DATA(nla), "1234", 4);
        rc = sendto(fd, msg, msg_len, MSG_DONTWAIT, NULL, 0);
@@ -116,7 +116,7 @@ test_nlattr(const int fd)
               ", nla_type=%#x /* UNIX_DIAG_??? */}"
               ", \"\\x31\\x32\\x33\\x34\"}}"
               ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
-              fd, msg_len, nla->nla_len, UNIX_DIAG_SHUTDOWN + 1,
+              fd, msg_len, nla->nla_len, UNIX_DIAG_FIRST_UNUSED,
               msg_len, sprintrc(rc));
 
        /* print one struct nlattr and fetch fail second struct nlattr */
@@ -201,7 +201,7 @@ test_nlattr(const int fd)
        for (i = 0; i < ABBREV_LEN; ++i) {
                nla[i * 2] = (struct nlattr) {
                        .nla_len = NLA_HDRLEN * 2 - 1,
-                       .nla_type = UNIX_DIAG_SHUTDOWN + 1 + i
+                       .nla_type = UNIX_DIAG_FIRST_UNUSED + i
                };
                fill_memory_ex(&nla[i * 2 + 1], NLA_HDRLEN,
                               '0' + i, '~' - '0' - i);
@@ -218,7 +218,7 @@ test_nlattr(const int fd)
                if (i)
                        printf(", ");
                printf("{{nla_len=%u, nla_type=%#x /* UNIX_DIAG_??? */}, ",
-                      nla->nla_len, UNIX_DIAG_SHUTDOWN + 1 + i);
+                      nla->nla_len, UNIX_DIAG_FIRST_UNUSED + i);
                print_quoted_hex(&nla[i * 2 + 1], NLA_HDRLEN - 1);
                printf("}");
        }
@@ -286,7 +286,7 @@ test_nla_type(const int fd)
               ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
               fd, msg_len, nla->nla_len, msg_len, sprintrc(rc));
 
-       nla->nla_type = NLA_F_NESTED | (UNIX_DIAG_SHUTDOWN + 1);
+       nla->nla_type = NLA_F_NESTED | (UNIX_DIAG_FIRST_UNUSED);
        rc = sendto(fd, msg, msg->nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
        printf("sendto(%d, {{len=%u, type=SOCK_DIAG_BY_FAMILY"
               ", flags=NLM_F_DUMP, seq=0, pid=0}, {udiag_family=AF_UNIX"
@@ -294,7 +294,7 @@ test_nla_type(const int fd)
               ", udiag_ino=0, udiag_cookie=[0, 0]}, {nla_len=%u"
               ", nla_type=NLA_F_NESTED|%#x /* UNIX_DIAG_??? */}}"
               ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
-              fd, msg->nlh.nlmsg_len, nla->nla_len, UNIX_DIAG_SHUTDOWN + 1,
+              fd, msg->nlh.nlmsg_len, nla->nla_len, UNIX_DIAG_FIRST_UNUSED,
               msg->nlh.nlmsg_len, sprintrc(rc));
 }
 
index f90c620826621e97830dc043df591709b8039130..2cb2b54938659cd6a14fc0c8184876b893e1944e 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -85,7 +85,8 @@ main(void)
        TEST_NLATTR_OBJECT_EX(fd, nlh0, hdrlen,
                              init_crypto_user_alg, print_crypto_user_alg,
                              CRYPTOCFGA_REPORT_HASH,
-                             pattern, rhash, print_quoted_memory,
+                             pattern, rhash, sizeof(rhash),
+                             print_quoted_memory,
                              printf("{type=\"efgh\"");
                              PRINT_FIELD_U(", ", rhash, blocksize);
                              PRINT_FIELD_U(", ", rhash, digestsize);
@@ -104,7 +105,8 @@ main(void)
        TEST_NLATTR_OBJECT_EX(fd, nlh0, hdrlen,
                              init_crypto_user_alg, print_crypto_user_alg,
                              CRYPTOCFGA_REPORT_BLKCIPHER,
-                             pattern, rblkcipher, print_quoted_memory,
+                             pattern, rblkcipher, sizeof(rblkcipher),
+                             print_quoted_memory,
                              printf("{type=\"abcd\", geniv=\"efgh\"");
                              PRINT_FIELD_U(", ", rblkcipher, blocksize);
                              PRINT_FIELD_U(", ", rblkcipher, min_keysize);
@@ -124,7 +126,8 @@ main(void)
        TEST_NLATTR_OBJECT_EX(fd, nlh0, hdrlen,
                              init_crypto_user_alg, print_crypto_user_alg,
                              CRYPTOCFGA_REPORT_AEAD,
-                             pattern, raead, print_quoted_memory,
+                             pattern, raead, sizeof(raead),
+                             print_quoted_memory,
                              printf("{type=\"abcd\", geniv=\"efgh\"");
                              PRINT_FIELD_U(", ", raead, blocksize);
                              PRINT_FIELD_U(", ", raead, maxauthsize);
@@ -140,7 +143,7 @@ main(void)
        TEST_NLATTR_OBJECT_EX(fd, nlh0, hdrlen,
                              init_crypto_user_alg, print_crypto_user_alg,
                              CRYPTOCFGA_REPORT_RNG,
-                             pattern, rrng, print_quoted_memory,
+                             pattern, rrng, sizeof(rrng), print_quoted_memory,
                              printf("{type=\"abcd\"");
                              PRINT_FIELD_U(", ", rrng, seedsize);
                              printf("}"));
@@ -156,7 +159,8 @@ main(void)
        TEST_NLATTR_OBJECT_EX(fd, nlh0, hdrlen,
                              init_crypto_user_alg, print_crypto_user_alg,
                              CRYPTOCFGA_REPORT_CIPHER,
-                             pattern, rcipher, print_quoted_memory,
+                             pattern, rcipher, sizeof(rcipher),
+                             print_quoted_memory,
                              printf("{type=\"abcd\"");
                              PRINT_FIELD_U(", ", rcipher, blocksize);
                              PRINT_FIELD_U(", ", rcipher, min_keysize);
index a8660196909833925fc4c8b02135e62e2e6f0a1d..4e6df29dd29994a00fd5c044c625b8e33e17a60c 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -27,6 +27,8 @@
 #endif
 #define IFLA_LINK_NETNSID 37
 #define IFLA_EVENT 44
+#define IFLA_PROP_LIST 52
+#define IFLA_ALT_IFNAME 53
 
 #ifndef IFLA_INFO_KIND
 # define IFLA_INFO_KIND 1
@@ -36,6 +38,8 @@
 # define IFLA_VF_PORT 1
 #endif
 
+static const unsigned int hdrlen = sizeof(struct ifinfomsg);
+
 static void
 init_ifinfomsg(struct nlmsghdr *const nlh, const unsigned int msg_len)
 {
@@ -65,6 +69,27 @@ print_ifinfomsg(const unsigned int msg_len)
               msg_len);
 }
 
+static void
+init_prop_list_msg(struct nlmsghdr *const nlh,
+                    const unsigned int msg_len)
+{
+       init_ifinfomsg(nlh, msg_len);
+
+       struct nlattr *nla = NLMSG_ATTR(nlh, hdrlen);
+       SET_STRUCT(struct nlattr, nla,
+               .nla_len = msg_len - NLMSG_SPACE(hdrlen),
+               .nla_type = IFLA_PROP_LIST,
+       );
+}
+
+static void
+print_prop_list_msg(const unsigned int msg_len)
+{
+       print_ifinfomsg(msg_len);
+       printf(", {{nla_len=%u, nla_type=IFLA_PROP_LIST}",
+              msg_len - NLMSG_SPACE(hdrlen));
+}
+
 int
 main(void)
 {
@@ -96,9 +121,8 @@ main(void)
                .tx_compressed = 0xefdadfab
        };
        const int fd = create_nl_socket(NETLINK_ROUTE);
-       const unsigned int hdrlen = sizeof(struct ifinfomsg);
        void *nlh0 = midtail_alloc(NLMSG_SPACE(hdrlen),
-                                  NLA_HDRLEN + sizeof(st));
+                                  2 * NLA_HDRLEN + MAX(sizeof(st), 20));
 
        static char pattern[4096];
        fill_memory_ex(pattern, sizeof(pattern), 'a', 'z' - 'a' + 1);
@@ -118,40 +142,39 @@ main(void)
                           IFLA_LINK_NETNSID, pattern, netnsid,
                           printf("%d", netnsid));
 
-       TEST_NLATTR_OBJECT(fd, nlh0, hdrlen,
-                          init_ifinfomsg, print_ifinfomsg,
-                          IFLA_STATS, pattern, st,
-                          PRINT_FIELD_U("{", st, rx_packets);
-                          PRINT_FIELD_U(", ", st, tx_packets);
-                          PRINT_FIELD_U(", ", st, rx_bytes);
-                          PRINT_FIELD_U(", ", st, tx_bytes);
-                          PRINT_FIELD_U(", ", st, rx_errors);
-                          PRINT_FIELD_U(", ", st, tx_errors);
-                          PRINT_FIELD_U(", ", st, rx_dropped);
-                          PRINT_FIELD_U(", ", st, tx_dropped);
-                          PRINT_FIELD_U(", ", st, multicast);
-                          PRINT_FIELD_U(", ", st, collisions);
-                          PRINT_FIELD_U(", ", st, rx_length_errors);
-                          PRINT_FIELD_U(", ", st, rx_over_errors);
-                          PRINT_FIELD_U(", ", st, rx_crc_errors);
-                          PRINT_FIELD_U(", ", st, rx_frame_errors);
-                          PRINT_FIELD_U(", ", st, rx_fifo_errors);
-                          PRINT_FIELD_U(", ", st, rx_missed_errors);
-                          PRINT_FIELD_U(", ", st, tx_aborted_errors);
-                          PRINT_FIELD_U(", ", st, tx_carrier_errors);
-                          PRINT_FIELD_U(", ", st, tx_fifo_errors);
-                          PRINT_FIELD_U(", ", st, tx_heartbeat_errors);
-                          PRINT_FIELD_U(", ", st, tx_window_errors);
-                          PRINT_FIELD_U(", ", st, rx_compressed);
-                          PRINT_FIELD_U(", ", st, tx_compressed);
+       const unsigned int sizeof_stats =
+               offsetofend(struct rtnl_link_stats, tx_compressed);
+       TEST_NLATTR_OBJECT_MINSZ(fd, nlh0, hdrlen,
+                                init_ifinfomsg, print_ifinfomsg,
+                                IFLA_STATS, pattern, st, sizeof_stats,
+                                PRINT_FIELD_U("{", st, rx_packets);
+                                PRINT_FIELD_U(", ", st, tx_packets);
+                                PRINT_FIELD_U(", ", st, rx_bytes);
+                                PRINT_FIELD_U(", ", st, tx_bytes);
+                                PRINT_FIELD_U(", ", st, rx_errors);
+                                PRINT_FIELD_U(", ", st, tx_errors);
+                                PRINT_FIELD_U(", ", st, rx_dropped);
+                                PRINT_FIELD_U(", ", st, tx_dropped);
+                                PRINT_FIELD_U(", ", st, multicast);
+                                PRINT_FIELD_U(", ", st, collisions);
+                                PRINT_FIELD_U(", ", st, rx_length_errors);
+                                PRINT_FIELD_U(", ", st, rx_over_errors);
+                                PRINT_FIELD_U(", ", st, rx_crc_errors);
+                                PRINT_FIELD_U(", ", st, rx_frame_errors);
+                                PRINT_FIELD_U(", ", st, rx_fifo_errors);
+                                PRINT_FIELD_U(", ", st, rx_missed_errors);
+                                PRINT_FIELD_U(", ", st, tx_aborted_errors);
+                                PRINT_FIELD_U(", ", st, tx_carrier_errors);
+                                PRINT_FIELD_U(", ", st, tx_fifo_errors);
+                                PRINT_FIELD_U(", ", st, tx_heartbeat_errors);
+                                PRINT_FIELD_U(", ", st, tx_window_errors);
+                                PRINT_FIELD_U(", ", st, rx_compressed);
+                                PRINT_FIELD_U(", ", st, tx_compressed);
 #ifdef HAVE_STRUCT_RTNL_LINK_STATS_RX_NOHANDLER
-                          PRINT_FIELD_U(", ", st, rx_nohandler);
+                                PRINT_FIELD_U(", ", st, rx_nohandler);
 #endif
                           printf("}"));
 
-#ifdef HAVE_STRUCT_RTNL_LINK_STATS_RX_NOHANDLER
-       const unsigned int sizeof_stats =
-               offsetofend(struct rtnl_link_stats, tx_compressed);
        TEST_NLATTR(fd, nlh0, hdrlen,
                    init_ifinfomsg, print_ifinfomsg,
                    IFLA_STATS, sizeof_stats, &st, sizeof_stats,
@@ -179,7 +202,6 @@ main(void)
                    PRINT_FIELD_U(", ", st, rx_compressed);
                    PRINT_FIELD_U(", ", st, tx_compressed);
                    printf("}"));
-#endif /* HAVE_STRUCT_RTNL_LINK_STATS_RX_NOHANDLER */
 
        static const struct rtnl_link_ifmap map = {
                .mem_start = 0xadcbefedefbcdedb,
@@ -341,6 +363,33 @@ main(void)
                                   printf("%s", ifla_events[i].str));
        }
 
+       /* IFLA_PROP_LIST */
+       struct {
+               char p1[20];
+       } buf;
+       fill_memory(&buf, sizeof(buf));
+       TEST_NESTED_NLATTR_OBJECT_EX_(fd, nlh0, hdrlen,
+                                     init_prop_list_msg, print_prop_list_msg,
+                                     IFLA_ALT_IFNAME, "IFLA_ALT_IFNAME",
+                                     pattern, buf, print_quoted_stringn, 1,
+                                     print_quoted_memory(&buf, sizeof(buf));
+                                     printf("..."));
+
+       /* IFLA_ALT_IFNAME */
+       static const char alt_ifname[] = "OH HAI THAR\r\n\t\377\0\v\x7e";
+       TEST_NLATTR(fd, nlh0, hdrlen,
+                   init_ifinfomsg, print_ifinfomsg,
+                   IFLA_ALT_IFNAME,
+                   sizeof(alt_ifname), alt_ifname, sizeof(alt_ifname),
+                   print_quoted_memory(alt_ifname, sizeof(alt_ifname) - 1));
+
+       TEST_NLATTR(fd, nlh0, hdrlen,
+                   init_ifinfomsg, print_ifinfomsg,
+                   IFLA_ALT_IFNAME,
+                   sizeof(alt_ifname) - 1, alt_ifname, sizeof(alt_ifname) - 1,
+                   print_quoted_memory(alt_ifname, sizeof(alt_ifname) - 1);
+                   printf("..."));
+
        puts("+++ exited with 0 +++");
        return 0;
 }
index 080e73718e7e8d95ca62ac0d83c61de285938a2b..9c648d0529a9c81d2d68bcdeba5dd43251c353ff 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * IFLA_LINKINFO netlink attribute decoding check.
  *
- * Copyright (c) 2018-2019 The strace developers.
+ * Copyright (c) 2018-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -347,7 +347,6 @@ main(void)
        /* bridge attrs */
        static const struct val_name und_br_attrs[] = {
                { 0, "IFLA_BR_UNSPEC" },
-               { 20, "IFLA_BR_GROUP_ADDR" },
                { 21, "IFLA_BR_FDB_FLUSH" },
                { 40, "IFLA_BR_PAD" },
                { 47, "0x2f /* IFLA_BR_??? */" },
@@ -367,6 +366,21 @@ main(void)
                                        "\\x63\\x64\\x65\\x66\"" });
        }
 
+       static const struct val_name hwa_br_attrs[] = {
+               { 20, "IFLA_BR_GROUP_ADDR" },
+       };
+
+       for (size_t k = 0; k < ARRAY_SIZE(hwa_br_attrs); k++) {
+               TEST_NESTED_LINKINFO(fd, nlh0, 2, "IFLA_INFO_DATA", "bridge",
+                                    hwa_br_attrs[k].val, hwa_br_attrs[k].name,
+                                    unknown_msg, pattern,
+                                    { 2, "ab:ac" },
+                                    { 4, "ab:ac:db:cd" },
+                                    { 6, "ab:ac:db:cd:61:62" },
+                                    { 8, "ab:ac:db:cd:61:62:63:64" },
+                                    { 10, "ab:ac:db:cd:61:62:63:64:65:66" });
+       }
+
        static const struct val_name u64_br_attrs[] = {
                { 16, "IFLA_BR_HELLO_TIMER" },
                { 17, "IFLA_BR_TCN_TIMER" },
index df2a2ef6e67c5d4818297a815edef1f0c629526d..49003614fbed40c0630a5093aac417452191cfd7 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -57,6 +57,21 @@ main(void)
                                  printf(", vsi_type_id=\"\\x61\\x62\\x63\"");
                                  PRINT_FIELD_U(", ", vsi, vsi_type_version);
                                  printf("}"));
+
+       static const struct ifla_port_vsi vsi2 = {
+               .vsi_mgr_id = 0xab,
+               .vsi_type_id = { 10, 0, 255 },
+               .vsi_type_version = 0xef,
+               .pad = { 0, 1, 2 },
+       };
+       TEST_NESTED_NLATTR_OBJECT(fd, nlh0, hdrlen,
+                                 init_ifinfomsg, print_ifinfomsg,
+                                 IFLA_PORT_VSI_TYPE, pattern, vsi2,
+                                 PRINT_FIELD_U("{", vsi2, vsi_mgr_id);
+                                 printf(", vsi_type_id=\"\\x0a\\x00\\xff\"");
+                                 PRINT_FIELD_U(", ", vsi2, vsi_type_version);
+                                 printf(", pad=\"\\x00\\x01\\x02\"");
+                                 printf("}"));
 #endif
 
        puts("+++ exited with 0 +++");
diff --git a/tests/nlattr_ifla_xdp-y.c b/tests/nlattr_ifla_xdp-y.c
new file mode 100644 (file)
index 0000000..791c2be
--- /dev/null
@@ -0,0 +1,3 @@
+#define PRINT_SOCK 1
+#define FD9_PATH "</dev/full>"
+#include "nlattr_ifla_xdp.c"
diff --git a/tests/nlattr_ifla_xdp-y.gen.test b/tests/nlattr_ifla_xdp-y.gen.test
new file mode 100755 (executable)
index 0000000..5826766
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_ifla_xdp-y +netlink_sock_diag.test -y; exec 9</dev/full); do not edit.
+set -- -y; exec 9</dev/full
+. "${srcdir=.}/netlink_sock_diag.test"
index 232f21452a2d7eb2d8c1f82d5c2e2a8afbebc45f..3796e5ea15acbbc91501b5fbc85c7cbedc28d5f7 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 #endif
 #include <linux/rtnetlink.h>
 
+#define XLAT_MACROS_ONLY
+# include "xlat/rtnl_ifla_xdp_attrs.h"
+#undef XLAT_MACROS_ONLY
+
 #if !HAVE_DECL_IFLA_XDP
 enum { IFLA_XDP = 43 };
 #endif
-#ifndef IFLA_XDP_FD
-# define IFLA_XDP_FD 1
-#endif
-
-#ifndef IFLA_XDP_ATTACHED
-# define IFLA_XDP_ATTACHED 2
-#endif
-
-#ifndef IFLA_XDP_PROG_ID
-# define IFLA_XDP_PROG_ID 4
-#endif
-
-#ifndef IFLA_XDP_DRV_PROG_ID
-# define IFLA_XDP_DRV_PROG_ID 5
-#endif
 
-#ifndef IFLA_XDP_SKB_PROG_ID
-# define IFLA_XDP_SKB_PROG_ID 6
+#if !HAVE_DECL_XDP_ATTACHED_NONE
+enum { XDP_ATTACHED_NONE = 0 };
 #endif
-
-#ifndef IFLA_XDP_HW_PROG_ID
-# define IFLA_XDP_HW_PROG_ID 7
-#endif
-
-#ifndef XDP_ATTACHED_NONE
-# define XDP_ATTACHED_NONE 0
-#endif
-
-#ifndef XDP_ATTACHED_MULTI
-# define XDP_ATTACHED_MULTI 4
+#if !HAVE_DECL_XDP_ATTACHED_MULTI
+enum { XDP_ATTACHED_MULTI = 4 };
 #endif
 
 #define IFLA_ATTR IFLA_XDP
 #include "nlattr_ifla.h"
 
+#ifndef FD9_PATH
+# define FD9_PATH ""
+#endif
+
 int
 main(void)
 {
@@ -118,6 +102,18 @@ main(void)
                                              printf("%u", num));
        }
 
+       /* IFLA_XDP_EXPECTED_FD */
+       TEST_NESTED_NLATTR_OBJECT_EX(fd, nlh0, hdrlen,
+                                    init_ifinfomsg, print_ifinfomsg,
+                                    IFLA_XDP_EXPECTED_FD, pattern, num, 1,
+                                    printf("%d", num));
+
+       int exp_fd = 9;
+       TEST_NESTED_NLATTR_OBJECT_EX(fd, nlh0, hdrlen,
+                                    init_ifinfomsg, print_ifinfomsg,
+                                    IFLA_XDP_EXPECTED_FD, pattern, exp_fd, 1,
+                                    printf("9" FD9_PATH));
+
        puts("+++ exited with 0 +++");
        return 0;
 }
index 8cce46cd709c8d5f74caf7f83beaeacc0536af9b..9956b9610a05d27ba8991d1883be99a1c2263491 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -73,10 +73,10 @@ main(void)
 
        char nla_type_str[256];
        sprintf(nla_type_str, "%#x /* INET_DIAG_REQ_??? */",
-               INET_DIAG_REQ_BYTECODE + 1);
+               INET_DIAG_REQ_PROTOCOL + 1);
        TEST_NLATTR_(fd, nlh0, hdrlen,
                     init_inet_diag_req, print_inet_diag_req,
-                    INET_DIAG_REQ_BYTECODE + 1, nla_type_str,
+                    INET_DIAG_REQ_PROTOCOL + 1, nla_type_str,
                     4, pattern, 4,
                     print_quoted_hex(pattern, 4));
 
index 7ac89ff0d1669d2812ed5045696dfcbf317438ac..e7b0c498c1d46b295900e402c7e0877f0c0157b3 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -122,9 +122,13 @@ main(void)
                                     printf(", state=MDB_TEMPORARY");
 #  ifdef HAVE_STRUCT_BR_MDB_ENTRY_FLAGS
                                     printf(", flags=MDB_FLAGS_OFFLOAD");
+#  else
+                                    printf(", flags=0");
 #  endif
 #  ifdef HAVE_STRUCT_BR_MDB_ENTRY_VID
                                     PRINT_FIELD_U(", ", entry, vid);
+#  else
+                                    printf(", vid=0");
 #  endif
                                     printf(", addr={u=");
                                     print_quoted_hex(&entry.addr.u,
@@ -145,9 +149,13 @@ main(void)
                    printf(", state=MDB_TEMPORARY");
 #  ifdef HAVE_STRUCT_BR_MDB_ENTRY_FLAGS
                    printf(", flags=MDB_FLAGS_OFFLOAD");
+#  else
+                   printf(", flags=0");
 #  endif
 #  ifdef HAVE_STRUCT_BR_MDB_ENTRY_VID
                    PRINT_FIELD_U(", ", entry, vid);
+#  else
+                   printf(", vid=0");
 #  endif
                    printf(", addr={u=");
                    print_quoted_hex(&entry.addr.u, sizeof(entry.addr.u));
index 7ec9992a8f76a1b940309fc8dcddb908b523fd5e..f954ce41aff1bba7f91c7a9ac478133840633e24 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -12,6 +12,8 @@
 
 # include <stdio.h>
 # include "test_nlattr.h"
+/* struct br_mdb_entry needs a definition of struct in6_addr.  */
+# include <netinet/in.h>
 # include <linux/if_bridge.h>
 # include <linux/rtnetlink.h>
 
index 2dd82ce48e592bafa3e2be9675057d4a4c6591ef..8404c7a0d643b5a19cdc69ff0c65398f828b2e91 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -99,6 +99,17 @@ main(void)
                           NDA_PORT, pattern, port,
                           printf("htons(%u)", ntohs(port)));
 
+       static const uint8_t mac[6] = "\xf8\xc2\x49\x13\x57\xbd";
+       TEST_NLATTR(fd, nlh0, hdrlen, init_ndmsg, print_ndmsg,
+                   NDA_LLADDR, sizeof(mac) - 1, mac, sizeof(mac) - 1,
+                   for (unsigned int i = 0; i < sizeof(mac) - 1; ++i)
+                       printf("%s%02x", i ? ":" : "", mac[i]));
+
+       TEST_NLATTR(fd, nlh0, hdrlen, init_ndmsg, print_ndmsg,
+                   NDA_LLADDR, sizeof(mac), mac, sizeof(mac),
+                   for (unsigned int i = 0; i < sizeof(mac); ++i)
+                       printf("%s%02x", i ? ":" : "", mac[i]));
+
        puts("+++ exited with 0 +++");
        return 0;
 }
index 7177ea2a3ee13514357df108601c7cf1dfcac860..f069775fb6085bb048d1cba0acc85968b5b6fd7d 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_packet_diag_msg +netlink_sock_diag-v.sh ); do not edit.
-set -- 
-. "${srcdir=.}/netlink_sock_diag-v.sh"
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_packet_diag_msg +netlink_sock_diag.test -v); do not edit.
+set -- -v
+. "${srcdir=.}/netlink_sock_diag.test"
index c0ebaf89ed009abbe2fadd6cdd4a3f0a2e11b6a8..3fb4b743a33dc8c13d0af9374d688c38c1da0560 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 # include <linux/gen_stats.h>
 # include <linux/rtnetlink.h>
 
+# if !HAVE_DECL_TCA_STATS_PKT64
+enum { TCA_STATS_PKT64 = 8 };
+# endif
+
 const unsigned int hdrlen = sizeof(struct tcmsg);
 
 static void
@@ -120,6 +124,12 @@ main(void)
                                  printf("}"));
 # endif
 
+       static const uint64_t pkt64 = 0xdeadc0defacefeedULL;
+       TEST_NESTED_NLATTR_OBJECT(fd, nlh0, hdrlen,
+                                 init_tcmsg, print_tcmsg,
+                                 TCA_STATS_PKT64, pattern, pkt64,
+                                 printf("16045693111314087661"));
+
        puts("+++ exited with 0 +++");
        return 0;
 }
index b8bd7e35733ab28af40a4b209ce3d094c83a4c96..e25e32a60c93b3647e047f1970e081c7d2263bc4 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 
 #include <stdio.h>
 #include "test_nlattr.h"
+#include <linux/pkt_cls.h>
 #include <linux/rtnetlink.h>
 
+#if !HAVE_DECL_TCA_ACT_PAD
+enum { TCA_ACT_PAD = 5 };
+#endif
+#if !HAVE_DECL_TCA_ACT_COOKIE
+enum { TCA_ACT_COOKIE = 6 };
+#endif
+#if !HAVE_DECL_TCA_ACT_FLAGS
+enum { TCA_ACT_FLAGS = 7 };
+#endif
+#if !HAVE_DECL_TCA_ACT_HW_STATS
+enum { TCA_ACT_HW_STATS = 8 };
+#endif
+#if !HAVE_DECL_TCA_ACT_USED_HW_STATS
+enum { TCA_ACT_USED_HW_STATS = 9 };
+#endif
+
+
 static void
 init_tcamsg(struct nlmsghdr *const nlh, const unsigned int msg_len)
 {
@@ -47,14 +65,72 @@ main(void)
        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 /* TCA_ACT_??? */", nla_type);
-       TEST_NLATTR_(fd, nlh0, hdrlen,
-                    init_tcamsg, print_tcamsg,
-                    nla_type, nla_type_str,
-                    4, pattern, 4,
-                    print_quoted_hex(pattern, 4));
+       /* Invalid */
+       static const unsigned int nla_invalid[] = { 10, 0xffff & NLA_TYPE_MASK };
+       for (size_t i = 0; i < ARRAY_SIZE(nla_invalid); i++) {
+               char nla_type_str[256];
+               sprintf(nla_type_str, "%#x /* TCA_ACT_??? */", nla_invalid[i]);
+               TEST_NLATTR_(fd, nlh0, hdrlen,
+                            init_tcamsg, print_tcamsg,
+                            nla_invalid[i], nla_type_str,
+                            21, pattern, 21,
+                            print_quoted_hex(pattern, 21));
+       }
+
+       /* Default decoder */
+       static const struct {
+               unsigned int val;
+               const char *str;
+       } nla_default[] = {
+               { ARG_STR(TCA_ACT_UNSPEC) },
+               { ARG_STR(TCA_ACT_OPTIONS) },
+               { ARG_STR(TCA_ACT_PAD) },
+               { ARG_STR(TCA_ACT_COOKIE) },
+       };
+       for (size_t i = 0; i < ARRAY_SIZE(nla_default); i++) {
+               TEST_NLATTR_(fd, nlh0, hdrlen,
+                            init_tcamsg, print_tcamsg,
+                            nla_default[i].val, nla_default[i].str,
+                            17, pattern, 17,
+                            print_quoted_hex(pattern, 17));
+       }
+
+       /* TCA_ACT_KIND */
+       TEST_NLATTR(fd, nlh0, hdrlen, init_tcamsg, print_tcamsg,
+                   TCA_ACT_KIND, 21, pattern, 21,
+                   print_quoted_cstring(pattern, 22));
+
+       static const char kind[] = "Hello\tthere";
+       TEST_NLATTR(fd, nlh0, hdrlen, init_tcamsg, print_tcamsg,
+                   TCA_ACT_KIND, sizeof(kind), kind, sizeof(kind),
+                   print_quoted_string(kind));
+
+       /* TCA_ACT_INDEX */
+       static uint32_t idx = 0xdeadc0de;
+       TEST_NLATTR(fd, nlh0, hdrlen, init_tcamsg, print_tcamsg,
+                   TCA_ACT_INDEX, sizeof(idx), &idx, sizeof(idx),
+                   printf("%u", idx));
+
+       /* TCA_ACT_FLAGS */
+       static uint32_t flags = 0xfacebeef;
+       TEST_NLATTR(fd, nlh0, hdrlen, init_tcamsg, print_tcamsg,
+                   TCA_ACT_FLAGS, sizeof(flags), &flags, sizeof(flags),
+                   printf("TCA_ACT_FLAGS_NO_PERCPU_STATS|0xfacebeee"));
+
+       /* TCA_ACT_HW_STATS, TCA_ACT_USED_HW_STATS */
+       static const struct strval32 nla_hw_st[] = {
+               { ARG_STR(TCA_ACT_HW_STATS) },
+               { ARG_STR(TCA_ACT_USED_HW_STATS) },
+       };
+
+       static uint32_t hw_st = 0xfacebeef;
+       for (size_t i = 0; i < ARRAY_SIZE(nla_hw_st); i++) {
+               TEST_NLATTR_(fd, nlh0, hdrlen, init_tcamsg, print_tcamsg,
+                            nla_hw_st[i].val, nla_hw_st[i].str,
+                            sizeof(hw_st), &hw_st, sizeof(hw_st),
+                            printf("TCA_ACT_HW_STATS_IMMEDIATE|"
+                                   "TCA_ACT_HW_STATS_DELAYED|0xfacebeec"));
+       }
 
        puts("+++ exited with 0 +++");
        return 0;
index a6495b6b6ddf2c7052e3a7ad7a9638e367ac720c..8892de87557a3ab882ff0d199c2dfa45a34e6a0b 100755 (executable)
@@ -1,8 +1,8 @@
 #!/bin/sh
 #
-# Check decoding of out-of-range syscalls along with debug ouput
+# Check decoding of out-of-range syscalls along with debug output
 #
-# Copyright (c) 2017-2018 The strace developers.
+# Copyright (c) 2017-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
index 529f50ee0e6753dc70cf6935ef0aa035336dd751..1eb900711e7112addb2f5422866f8c386a62c01f 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of out-of-range syscalls.
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -14,7 +14,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 #include "sysent_shorthand_defs.h"
 
@@ -28,13 +28,6 @@ static const struct_sysent syscallent[] = {
 # define DEBUG_PRINT 0
 #endif
 
-#if defined __X32_SYSCALL_BIT && defined __NR_read \
- && (__X32_SYSCALL_BIT & __NR_read) != 0
-# define SYSCALL_BIT __X32_SYSCALL_BIT
-#else
-# define SYSCALL_BIT 0
-#endif
-
 #if DEBUG_PRINT
 static const char *strace_name;
 static FILE *debug_out;
index 92ab3efb998438e9a6c88de2c5bc96b0b84d86f0..f095bc4366a5c296e20efb45ed167d176bdc1daf 100644 (file)
@@ -2,14 +2,14 @@
  * Check decoding of "old mmap" edition of mmap syscall.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 /*
  * On s390x and m68k, this is the mmap syscall used by glibc, so,
@@ -22,6 +22,7 @@
                || defined __s390__ || defined __s390x__) \
        && (defined PATH_TRACING || !(defined __s390x__ || defined __m68k__))
 
+# include <errno.h>
 # include <stdio.h>
 # include <string.h>
 # include <sys/mman.h>
@@ -35,8 +36,9 @@ int
 main(void)
 {
        long rc = syscall(__NR_mmap, 0);
+       const bool implemented = rc != -1 || errno != ENOSYS;
 # ifndef PATH_TRACING
-       printf("mmap(NULL) = %ld %s (%m)\n", rc, errno2name());
+       printf("mmap(NULL) = %s\n", sprintrc(rc));
 # endif
 
        const unsigned long args1_c[6] = {
@@ -60,42 +62,51 @@ main(void)
 
        rc = syscall(__NR_mmap, args);
 # if XLAT_RAW
-       printf("mmap(%#lx, %lu, %#x, %#x, %d, %#lx) = %ld %s (%m)\n",
+       printf("mmap(%#lx, %lu, %#x, %#x, %d, %#lx) = %s\n",
               args1_c[0], args1_c[1], PROT_READ|PROT_EXEC, MAP_FILE | MAP_FIXED,
-              (int) args1_c[4], args1_c[5], rc, errno2name());
+              (int) args1_c[4], args1_c[5], sprintrc(rc));
 # elif XLAT_VERBOSE
        printf("mmap(%#lx, %lu, %#x /* PROT_READ|PROT_EXEC */"
-              ", %#x /* MAP_FILE|MAP_FIXED */, %d, %#lx) = %ld %s (%m)\n",
+              ", %#x /* MAP_FILE|MAP_FIXED */, %d, %#lx) = %s\n",
               args1_c[0], args1_c[1], PROT_READ|PROT_EXEC, MAP_FILE | MAP_FIXED,
-              (int) args1_c[4], args1_c[5], rc, errno2name());
+              (int) args1_c[4], args1_c[5], sprintrc(rc));
 # else
        printf("mmap(%#lx, %lu, PROT_READ|PROT_EXEC, MAP_FILE|MAP_FIXED"
-              ", %d, %#lx) = %ld %s (%m)\n",
+              ", %d, %#lx) = %s\n",
               args1_c[0], args1_c[1], (int) args1_c[4], args1_c[5],
-              rc, errno2name());
+              sprintrc(rc));
 # endif
 
        memcpy(args, args2_c, sizeof(args2_c));
        rc = syscall(__NR_mmap, args);
 # ifndef PATH_TRACING
+       const char *errstr;
+       if (implemented) {
+               char *str;
+               if (asprintf(&str, "%#lx", rc) < 0)
+                       perror_msg_and_fail("asprintf");
+               errstr = str;
+       } else {
+               errstr = sprintrc(rc);
+       }
 #  if XLAT_RAW
-       printf("mmap(NULL, %lu, %#x, %#x, %d, %#lx) = %#lx\n",
+       printf("mmap(NULL, %lu, %#x, %#x, %d, %#lx) = %s\n",
               args2_c[1], PROT_READ|PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS,
-              (int) args2_c[4], args2_c[5], rc);
+              (int) args2_c[4], args2_c[5], errstr);
 #  elif XLAT_VERBOSE
        printf("mmap(NULL, %lu, %#x /* PROT_READ|PROT_WRITE */"
-              ", %#x /* MAP_PRIVATE|MAP_ANONYMOUS */, %d, %#lx) = %#lx\n",
+              ", %#x /* MAP_PRIVATE|MAP_ANONYMOUS */, %d, %#lx) = %s\n",
               args2_c[1], PROT_READ|PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS,
-              (int) args2_c[4], args2_c[5], rc);
+              (int) args2_c[4], args2_c[5], errstr);
 #  else
        printf("mmap(NULL, %lu, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS"
-              ", %d, %#lx) = %#lx\n",
-              args2_c[1], (int) args2_c[4], args2_c[5], rc);
+              ", %d, %#lx) = %s\n",
+              args2_c[1], (int) args2_c[4], args2_c[5], errstr);
 #  endif
 # endif
 
        void *addr = (void *) rc;
-       if (mprotect(addr, page_size, PROT_NONE))
+       if (implemented && mprotect(addr, page_size, PROT_NONE))
                perror_msg_and_fail("mprotect(%p, %lu, PROT_NONE)",
                                    addr, page_size);
 
index c2624777ef3aceff2ca75330e10ebed0576ad7f3..12f0645b715e36608ff1c8561e644fe5659a2947 100644 (file)
@@ -3,14 +3,14 @@
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_oldfstat && HAVE_STRUCT___OLD_KERNEL_STAT
 
index 0444b17f0d64cc08a57cbeabbde9a6a4da654b07..d6e8f4e3708b66e8bb517f816efdbe1e3c6f67f2 100644 (file)
@@ -3,14 +3,14 @@
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_oldlstat && HAVE_STRUCT___OLD_KERNEL_STAT
 
index 4e927521226ac8ed796c2a4aadd5892ab93c06d7..5c55538202d145727f2417a773b57aaedf525b1d 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2018-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_select && defined __NR__newselect \
  && __NR_select != __NR__newselect \
index 0af3554130bd31ae6ccd32d50125ff08b04adfd7..b6f83081845d29e8ebbf67788d9c5f4a85979629 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_select && defined __NR__newselect \
  && __NR_select != __NR__newselect \
index 03b40335a5ab787dec4234353703ed32d04f6a53..022dd33cf9e2f597b5a09b34e9ef45e96f5c44a4 100644 (file)
@@ -3,14 +3,14 @@
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_oldstat && HAVE_STRUCT___OLD_KERNEL_STAT
 
index 43a3ae6815e3357288e6c73c5ec6ef08ed9ae618..05e1fb0f0826f5e77bd26fc9687974167af4334b 100644 (file)
@@ -1,13 +1,13 @@
 /*
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_open
 
diff --git a/tests/open_tree-P.c b/tests/open_tree-P.c
new file mode 100644 (file)
index 0000000..0097d76
--- /dev/null
@@ -0,0 +1,2 @@
+#define PATH_TRACING
+#include "open_tree.c"
diff --git a/tests/open_tree-P.gen.test b/tests/open_tree-P.gen.test
new file mode 100755 (executable)
index 0000000..73d5cdb
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (open_tree-P -a30 --decode-fds -P /dev/full -e trace=open_tree); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a30 --decode-fds -P /dev/full -e trace=open_tree
diff --git a/tests/open_tree.c b/tests/open_tree.c
new file mode 100644 (file)
index 0000000..bdce09e
--- /dev/null
@@ -0,0 +1,110 @@
+/*
+ * Check decoding of open_tree syscall.
+ *
+ * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_open_tree
+
+# include <fcntl.h>
+# include <limits.h>
+# include <stdio.h>
+# include <stdint.h>
+# include <unistd.h>
+
+static const char *errstr;
+
+static long
+k_open_tree(const unsigned int dfd,
+           const void *fname,
+           const unsigned int flags)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = fill | dfd;
+       const kernel_ulong_t arg2 = (uintptr_t) fname;
+       const kernel_ulong_t arg3 = fill | flags;
+       const long rc = syscall(__NR_open_tree, arg1, arg2, arg3, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
+int
+main(void)
+{
+       skip_if_unavailable("/proc/self/fd/");
+
+       static const char path_full[] = "/dev/full";
+       const char *const path = tail_memdup(path_full, sizeof(path_full));
+       char *const fname = tail_alloc(PATH_MAX);
+       const void *const efault = fname + PATH_MAX;
+       const char *const empty = efault - 1;
+       fill_memory_ex(fname, PATH_MAX, '0', 10);
+
+        int dfd = open(path, O_WRONLY);
+        if (dfd < 0)
+                perror_msg_and_fail("open: %s", path);
+
+       k_open_tree(-1, 0, 1);
+# ifndef PATH_TRACING
+       printf("open_tree(-1, NULL, %s) = %s\n", "OPEN_TREE_CLONE", errstr);
+# endif
+
+       k_open_tree(-100, fname, 0);
+# ifndef PATH_TRACING
+       printf("open_tree(%s, \"%.*s\"..., 0) = %s\n",
+              "AT_FDCWD", (int) PATH_MAX - 1, fname, errstr);
+# endif
+
+       fname[PATH_MAX - 1] = '\0';
+       k_open_tree(dfd, fname, 0x8000);
+       printf("open_tree(%d<%s>, \"%s\", %s) = %s\n",
+              dfd, path, fname, "AT_RECURSIVE", errstr);
+
+# ifdef O_CLOEXEC
+       k_open_tree(-1, efault, O_CLOEXEC | 1);
+#  ifndef PATH_TRACING
+       printf("open_tree(-1, %p, %s) = %s\n",
+              efault, "OPEN_TREE_CLONE|OPEN_TREE_CLOEXEC", errstr);
+#  endif
+
+       k_open_tree(-1, empty, -1);
+#  ifndef PATH_TRACING
+       printf("open_tree(-1, \"\", %s|%#x) = %s\n",
+              "OPEN_TREE_CLONE|OPEN_TREE_CLOEXEC"
+              "|AT_SYMLINK_NOFOLLOW|AT_REMOVEDIR|AT_SYMLINK_FOLLOW"
+              "|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|AT_RECURSIVE",
+              -1U & ~0x9f01 & ~O_CLOEXEC,
+              errstr);
+#  endif
+# endif /* O_CLOEXEC */
+
+       if (k_open_tree(-1, path, 0) < 0)
+               printf("open_tree(-1, \"%s\", 0) = %s\n",
+                      path, errstr);
+       else
+               printf("open_tree(-1, \"%s\", 0) = %s<%s>\n",
+                      path, errstr, path);
+
+       if (k_open_tree(dfd, empty, 0x1000) < 0)
+               printf("open_tree(%d<%s>, \"\", %s) = %s\n",
+                      dfd, path, "AT_EMPTY_PATH", errstr);
+       else
+               printf("open_tree(%d<%s>, \"\", %s) = %s<%s>\n",
+                      dfd, path, "AT_EMPTY_PATH", errstr, path);
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_open_tree")
+
+#endif
diff --git a/tests/open_tree.gen.test b/tests/open_tree.gen.test
new file mode 100755 (executable)
index 0000000..535010b
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (open_tree -a30 -y); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a30 -y
index d4a741787515b9534a1a347a40a2a5e508dafcdf..8d1bca0bb21de8cbc54bc506959c38b796150c37 100644 (file)
@@ -1,13 +1,13 @@
 /*
  * Copyright (c) 2016 Katerina Koukiou <k.koukiou@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_openat
 
diff --git a/tests/openat2-Xabbrev.c b/tests/openat2-Xabbrev.c
new file mode 100644 (file)
index 0000000..ba18bde
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_ABBREV 1
+#include "openat2.c"
diff --git a/tests/openat2-Xabbrev.gen.test b/tests/openat2-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..371daa3
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (openat2-Xabbrev --trace=openat2 -a35 -Xabbrev); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff --trace=openat2 -a35 -Xabbrev
diff --git a/tests/openat2-Xraw.c b/tests/openat2-Xraw.c
new file mode 100644 (file)
index 0000000..7a50005
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "openat2.c"
diff --git a/tests/openat2-Xraw.gen.test b/tests/openat2-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..bf5084e
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (openat2-Xraw --trace=openat2 -a32 -Xraw); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff --trace=openat2 -a32 -Xraw
diff --git a/tests/openat2-Xverbose.c b/tests/openat2-Xverbose.c
new file mode 100644 (file)
index 0000000..a69ad16
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "openat2.c"
diff --git a/tests/openat2-Xverbose.gen.test b/tests/openat2-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..946996b
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (openat2-Xverbose --trace=openat2 -a35 -Xverbose); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff --trace=openat2 -a35 -Xverbose
diff --git a/tests/openat2-v-y-Xabbrev.c b/tests/openat2-v-y-Xabbrev.c
new file mode 100644 (file)
index 0000000..daceedd
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_ABBREV 1
+#include "openat2-v-y.c"
diff --git a/tests/openat2-v-y-Xabbrev.gen.test b/tests/openat2-v-y-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..665be81
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (openat2-v-y-Xabbrev --trace=openat2 -a35 -v -y -Xabbrev </dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff --trace=openat2 -a35 -v -y -Xabbrev </dev/full
diff --git a/tests/openat2-v-y-Xraw.c b/tests/openat2-v-y-Xraw.c
new file mode 100644 (file)
index 0000000..ce958c7
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "openat2-v-y.c"
diff --git a/tests/openat2-v-y-Xraw.gen.test b/tests/openat2-v-y-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..c4f7141
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (openat2-v-y-Xraw --trace=openat2 -a32 -v -y -Xraw </dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff --trace=openat2 -a32 -v -y -Xraw </dev/full
diff --git a/tests/openat2-v-y-Xverbose.c b/tests/openat2-v-y-Xverbose.c
new file mode 100644 (file)
index 0000000..1dc4715
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "openat2-v-y.c"
diff --git a/tests/openat2-v-y-Xverbose.gen.test b/tests/openat2-v-y-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..37b1744
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (openat2-v-y-Xverbose --trace=openat2 -a44 -v -y -Xverbose </dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff --trace=openat2 -a44 -v -y -Xverbose </dev/full
diff --git a/tests/openat2-v-y.c b/tests/openat2-v-y.c
new file mode 100644 (file)
index 0000000..dcbca1a
--- /dev/null
@@ -0,0 +1,2 @@
+#define FD0_PATH "</dev/full>"
+#include "openat2-v.c"
diff --git a/tests/openat2-v-y.gen.test b/tests/openat2-v-y.gen.test
new file mode 100755 (executable)
index 0000000..9e4a394
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (openat2-v-y --trace=openat2 -a36 -v -y </dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff --trace=openat2 -a36 -v -y </dev/full
diff --git a/tests/openat2-v.c b/tests/openat2-v.c
new file mode 100644 (file)
index 0000000..fafe533
--- /dev/null
@@ -0,0 +1,2 @@
+#define VERBOSE 1
+#include "openat2.c"
diff --git a/tests/openat2-v.gen.test b/tests/openat2-v.gen.test
new file mode 100755 (executable)
index 0000000..1b24cbc
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (openat2-v --trace=openat2 -a35 -v); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff --trace=openat2 -a35 -v
diff --git a/tests/openat2-y.c b/tests/openat2-y.c
new file mode 100644 (file)
index 0000000..50b1863
--- /dev/null
@@ -0,0 +1,2 @@
+#define FD0_PATH "</dev/full>"
+#include "openat2.c"
diff --git a/tests/openat2-y.gen.test b/tests/openat2-y.gen.test
new file mode 100755 (executable)
index 0000000..5dad223
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (openat2-y --trace=openat2 -a36 -y </dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff --trace=openat2 -a36 -y </dev/full
diff --git a/tests/openat2.c b/tests/openat2.c
new file mode 100644 (file)
index 0000000..864dc15
--- /dev/null
@@ -0,0 +1,172 @@
+/*
+ * Check decoding of openat2 syscall.
+ *
+ * Copyright (c) 2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_openat2
+
+# include <errno.h>
+# include <stdint.h>
+# include <inttypes.h>
+# include <stdio.h>
+# include <string.h>
+# include <unistd.h>
+# include <asm/fcntl.h>
+
+# ifdef HAVE_LINUX_OPENAT2
+#  include <linux/openat2.h>
+# endif
+
+# ifndef HAVE_LINUX_OPENAT2
+struct open_how {
+       uint64_t flags;
+       uint64_t mode;
+       uint64_t resolve;
+};
+# endif
+
+# ifndef AT_FDCWD
+#  define AT_FDCWD -100
+# endif
+# ifndef RESOLVE_NO_XDEV
+#  define RESOLVE_NO_XDEV 0x01
+# endif
+# ifndef RESOLVE_IN_ROOT
+#  define RESOLVE_IN_ROOT 0x10
+# endif
+
+# ifndef O_TMPFILE
+#  if defined __hppa__
+#   define __O_TMPFILE     040000000
+#  elif defined __alpha__
+#   define __O_TMPFILE     0100000000
+#  elif defined __sparc__
+#   define __O_TMPFILE     0200000000
+#  else
+#   define __O_TMPFILE     020000000
+#  endif
+# endif
+
+# ifndef VERBOSE
+#  define VERBOSE 0
+# endif
+# ifndef FD0_PATH
+#  define FD0_PATH ""
+# endif
+
+static const char sample[] = "openat2.sample";
+
+int
+main(void)
+{
+       long rc;
+       const char *rcstr;
+       struct open_how *how = tail_alloc(sizeof(*how));
+       struct open_how *how_big = tail_alloc(sizeof(*how_big) + 8);
+
+       rc = syscall(__NR_openat2, 0, NULL, NULL,
+                    (kernel_ulong_t) 0xdeadc0debadc0dedULL);
+       printf("openat2(0" FD0_PATH ", NULL, NULL, %llu) = %s\n",
+              (unsigned long long) (kernel_ulong_t) 0xdeadc0debadc0dedULL,
+              sprintrc(rc));
+
+       rc = syscall(__NR_openat2, -100, "", how + 1, sizeof(*how));
+       printf("openat2(%s, \"\", %p, %zu) = %s\n",
+              XLAT_KNOWN(-100, "AT_FDCWD"), how + 1, sizeof(*how),
+              sprintrc(rc));
+
+       rc = syscall(__NR_openat2, -1, sample, how, 11);
+       printf("openat2(-1, \"%s\", %p, 11) = %s\n", sample, how, sprintrc(rc));
+
+       static struct strval64 flags[] = {
+               { ARG_STR(O_RDONLY|O_EXCL) },
+               { ARG_STR(O_WRONLY|O_CREAT) },
+               { ARG_STR(O_RDWR|O_LARGEFILE) },
+# ifdef O_TMPFILE
+               { ARG_STR(O_ACCMODE|O_TMPFILE) },
+# else
+               { ARG_STR(O_ACCMODE|__O_TMPFILE) },
+# endif
+               { ARG_ULL_STR(O_RDONLY|0xdeadface80000000) },
+       };
+       static uint64_t modes[] = { 0, 0777, 0xbadc0dedfacebeefULL };
+       static struct strval64 resolve[] = {
+               { 0, NULL },
+               { ARG_STR(RESOLVE_NO_XDEV) },
+               { ARG_ULL_STR(RESOLVE_NO_XDEV|RESOLVE_IN_ROOT|0xfeedfacedcaffee0) },
+               { 0xdec0dedbeefface0, NULL },
+       };
+       const size_t iters = MAX(MAX(ARRAY_SIZE(flags), ARRAY_SIZE(modes)),
+                                ARRAY_SIZE(resolve));
+
+
+       for (size_t i = 0; i < iters * 4; i++) {
+               how->flags = flags[i % ARRAY_SIZE(flags)].val;
+               how->mode = modes[i % ARRAY_SIZE(modes)];
+               how->resolve = resolve[i % ARRAY_SIZE(resolve)].val;
+
+               fill_memory(how_big + 1, 8);
+               memcpy(how_big, how, sizeof(*how));
+
+               for (size_t j = 0; j < 4; j++) {
+                       rc = syscall(__NR_openat2, -1, sample,
+                                    j > 1 ? how_big : how,
+                                    j ? sizeof(*how) + 8 : sizeof(*how));
+                       rcstr = sprintrc(rc);
+                       printf("openat2(-1, \"%s\", {flags=%s",
+                              sample,
+                              sprintxlat(flags[i % ARRAY_SIZE(flags)].str,
+                                         flags[i % ARRAY_SIZE(flags)].val,
+                                         NULL));
+
+                       if (how->mode || (i % ARRAY_SIZE(flags) == 1)
+                                     || (i % ARRAY_SIZE(flags) == 3)) {
+                               printf(", mode=%#03" PRIo64,
+                                      modes[i % ARRAY_SIZE(modes)]);
+                       }
+
+                       printf(", resolve=%s",
+                              sprintxlat(resolve[i % ARRAY_SIZE(resolve)].str,
+                                         resolve[i % ARRAY_SIZE(resolve)].val,
+                                         resolve[i % ARRAY_SIZE(resolve)].val
+                                               ? "RESOLVE_???" : NULL));
+                       if (j == 1)
+                               printf(", ???");
+                       if (j == 2) {
+                               printf(", /* bytes %zu..%zu */ \"\\x80\\x81"
+                                      "\\x82\\x83\\x84\\x85\\x86\\x87\"",
+                                      sizeof(*how), sizeof(*how) + 7);
+                       }
+                       printf("}, %zu) = %s\n",
+                              j ? sizeof(*how) + 8 : sizeof(*how), rcstr);
+
+                       if (j == 2)
+                               memset(how_big + 1, 0, 8);
+               }
+       }
+
+       how->flags = O_RDONLY | O_NOCTTY;
+       how->mode = 0;
+       how->resolve = 0;
+       rc = syscall(__NR_openat2, -100, "/dev/full", how, sizeof(*how));
+       printf("openat2(%s, \"/dev/full\", {flags=%s, resolve=0}, %zu)"
+              " = %s%s\n",
+              XLAT_KNOWN(-100, "AT_FDCWD"), XLAT_STR(O_RDONLY|O_NOCTTY),
+              sizeof(*how), sprintrc(rc), rc >= 0 ? FD0_PATH : "");
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_openat2");
+
+#endif
diff --git a/tests/openat2.gen.test b/tests/openat2.gen.test
new file mode 100755 (executable)
index 0000000..5add9e5
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (openat2 -a35 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a35 
index 5e43b3ab8a9abcf26378bdd1307189b537039dd6..e9aaf30ec9370fa59a62dcb2cc97359dc5ab2b76 100755 (executable)
@@ -3,7 +3,7 @@
 # Check strace options syntax.
 #
 # Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 . "${srcdir=.}/syntax.sh"
 
 check_e "Invalid process id: '0'" -p 0
+check_e "Invalid process id: '0'" --attach=0
 check_e "Invalid process id: '-42'" -p -42
+check_e "Invalid process id: '-42'" --attach=-42
 check_e "Invalid process id: '$$.'" -p $$.
+check_e "Invalid process id: '$$.'" --attach=$$.
 check_e "Invalid process id: 'a'" -p 1,a
+check_e "Invalid process id: 'a'" --attach=1,a
 check_e "Syscall 'chdir' for -b isn't supported" -b chdir
+check_e "Syscall 'chdir' for -b isn't supported" --detach-on=chdir
 check_e "Syscall 'chdir' for -b isn't supported" -b execve -b chdir
+check_e "Syscall 'chdir' for -b isn't supported" --detach-on=execve --detach-on=chdir
 
 check_e_using_grep 'exec: File *name too long' "$(printf '%4096s' ' ')"
 
 ff_name="$(printf '%4084s' ' ')"
 check_e_using_grep "$ff_name: File *name too long" -ff -o "$ff_name" true
+check_e_using_grep "$ff_name: File *name too long" -ff --output="$ff_name" true
 
 check_h 'must have PROG [ARGS] or -p PID'
-check_h 'PROG [ARGS] must be specified with -D' -D -p $$
-check_h '-c and -C are mutually exclusive' -c -C true
-check_h '-c and -C are mutually exclusive' -C -c true
-check_h '(-c or -C) and -ff are mutually exclusive' -c -ff true
-check_h '(-c or -C) and -ff are mutually exclusive' -C -ff true
-check_h '-w must be given with (-c or -C)' -w true
-check_h 'piping the output and -ff are mutually exclusive' -o '|' -ff true
-check_h 'piping the output and -ff are mutually exclusive' -o '!' -ff true
+check_h "must have PROG [ARGS] or -p PID" --absolute-timestamps
+check_h "must have PROG [ARGS] or -p PID" --absolute-timestamps=
+check_h "must have PROG [ARGS] or -p PID" --absolute-timestamps=,
+check_h "must have PROG [ARGS] or -p PID" --absolute-timestamps=,s
+check_h "must have PROG [ARGS] or -p PID" --absolute-timestamps=s,
+check_h "must have PROG [ARGS] or -p PID" --absolute-timestamps=,,
+check_h "must have PROG [ARGS] or -p PID" --absolute-timestamps=s,,none
+check_h "must have PROG [ARGS] or -p PID" --timestamps --absolute-timestamps=ns --timestamps=none --absolute-timestamps=format:time,precision:s --timestamps=ns,format:unix --absolute-timestamps=us,precision:ms,unix,precision:ns --timestamps=format:none,time,precision:us
+check_h "invalid --absolute-timestamps argument: 'ss'" --absolute-timestamps=ss
+check_h "invalid --timestamps argument: 'format:s'" --timestamps=format:s
+check_h "invalid --timestamps argument: 's,non'" --timestamps=s,non
+check_h "invalid --timestamps argument: 'precision:none'" --timestamps=precision:none
+check_e '-t and --absolute-timestamps cannot be provided simultaneously' -t --timestamps -p $$
+check_e '-t and --absolute-timestamps cannot be provided simultaneously' --absolute-timestamps -ttt -p $$
+check_e '-t and --absolute-timestamps cannot be provided simultaneously' -t --timestamps=ns -t -p $$
+check_e '-t and --absolute-timestamps cannot be provided simultaneously' --timestamps=ns -t --absolute-timestamps=unix -p $$
+check_h 'PROG [ARGS] must be specified with -D/--daemonize' -D -p $$
+check_h 'PROG [ARGS] must be specified with -D/--daemonize' -DD -p $$
+check_h 'PROG [ARGS] must be specified with -D/--daemonize' -DDD -p $$
+check_h 'PROG [ARGS] must be specified with -D/--daemonize' -DDDD -p $$
+check_h 'PROG [ARGS] must be specified with -D/--daemonize' --daemonize -p $$
+check_h 'PROG [ARGS] must be specified with -D/--daemonize' --daemonize=grandchild -p $$
+check_h 'PROG [ARGS] must be specified with -D/--daemonize' --daemonize=pgroup -p $$
+check_h 'PROG [ARGS] must be specified with -D/--daemonize' --daemonize=Pgrp -p $$
+check_h 'PROG [ARGS] must be specified with -D/--daemonize' --daemonize=SESSION -p $$
+check_h 'Too many -D'\''s (4), maximum supported -D count is 3' -DDDD /bin/true
+check_e '-D and --daemonize cannot be provided simultaneously' -D --daemonize -p $$
+check_e '-D and --daemonize cannot be provided simultaneously' --daemonize -D -p $$
+check_e '-D and --daemonize cannot be provided simultaneously' --daemonize -v -D /bit/true
+check_h "invalid --daemonize argument: 'pgr'" --daemonize=pgr
+check_h '-c/--summary-only and -C/--summary are mutually exclusive' -c -C true
+check_h '-c/--summary-only and -C/--summary are mutually exclusive' --summary-only --summary true
+check_h '-c/--summary-only and -C/--summary are mutually exclusive' -C -c true
+check_h '-c/--summary-only and -C/--summary are mutually exclusive' --summary --summary-only true
+check_h '(-c/--summary-only or -C/--summary) and -ff/--output-separately are mutually exclusive' -c -ff true
+check_h '(-c/--summary-only or -C/--summary) and -ff/--output-separately are mutually exclusive' --summary-only -ff true
+check_h '(-c/--summary-only or -C/--summary) and -ff/--output-separately are mutually exclusive' -C -ff true
+check_h '(-c/--summary-only or -C/--summary) and -ff/--output-separately are mutually exclusive' --summary -ff true
+check_h '-w/--summary-wall-clock must be given with (-c/--summary-only or -C/--summary)' -w true
+check_h '-w/--summary-wall-clock must be given with (-c/--summary-only or -C/--summary)' --summary-wall-clock true
+check_h '-U/--summary-columns must be given with (-c/--summary-only or -C/--summary)' -U name,time,count,errors true
+check_h '-U/--summary-columns must be given with (-c/--summary-only or -C/--summary)' --summary-columns=name,time,count,errors true
+check_h 'piping the output and -ff/--output-separately are mutually exclusive' -o '|' -ff true
+check_h 'piping the output and -ff/--output-separately are mutually exclusive' --output='|' -ff true
+check_h 'piping the output and -ff/--output-separately are mutually exclusive' -o '!' -ff true
+check_h 'piping the output and -ff/--output-separately are mutually exclusive' --output='!' -ff true
 check_h "invalid -a argument: '-42'" -a -42
 check_h "invalid -O argument: '-42'" -O -42
 check_h "invalid -s argument: '-42'" -s -42
+check_h "invalid --string-limit argument: '-42'" --string-limit=-42
 check_h "invalid -s argument: '1073741824'" -s 1073741824
+check_h "invalid --string-limit argument: '1073741824'" --string-limit=1073741824
+check_h "must have PROG [ARGS] or -p PID" --follow-forks
+check_h "must have PROG [ARGS] or -p PID" --follow-forks --output-separately
+check_h "must have PROG [ARGS] or -p PID" -f --output-separately
+check_h "must have PROG [ARGS] or -p PID" --output-separately
+check_e '-f and --follow-forks cannot be provided simultaneously' -f --follow-forks -p $$
+check_e '-ff and --output-separately cannot be provided simultaneously' --output-separately -ff -p $$
+check_h "invalid -I argument: '0x1'" -I 0x1
+check_h "invalid -I argument: '0'" -I 0
+check_h "must have PROG [ARGS] or -p PID" -I1
+check_h "must have PROG [ARGS] or -p PID" -I 2
+check_h "must have PROG [ARGS] or -p PID" -I3
+check_h "must have PROG [ARGS] or -p PID" -I 4
 check_h "invalid -I argument: '5'" -I 5
+check_h "must have PROG [ARGS] or -p PID" -I always
+check_h "must have PROG [ARGS] or -p PID" -I anywhere
+check_h "must have PROG [ARGS] or -p PID" -Iwaiting
+check_h "must have PROG [ARGS] or -p PID" -I never
+check_h "must have PROG [ARGS] or -p PID" -Inever_tstp
+check_h "invalid -I argument: '=never'" -I=never
+check_h "invalid -I argument: 'nevertheless'" -Inevertheless
+check_h "invalid -I argument: 'nev'" -Inev
+check_h "invalid --interruptible argument: '0x1'" --interruptible=0x1
+check_h "invalid --interruptible argument: '0'" --interruptible=0
+check_h "must have PROG [ARGS] or -p PID" --interruptible 1
+check_h "must have PROG [ARGS] or -p PID" --interruptible=2
+check_h "invalid --interruptible argument: '5'" --interruptible=5
+check_h "must have PROG [ARGS] or -p PID" --interruptible=anywhere
+check_h "must have PROG [ARGS] or -p PID" --interruptible=waiting
+check_h "must have PROG [ARGS] or -p PID" --interruptible=never
+check_h "must have PROG [ARGS] or -p PID" --interruptible=never_tstp
+check_h "invalid --interruptible argument: 'nevertheless'" --interruptible=nevertheless
+check_h "invalid --interruptible argument: 'nev'" --interruptible=nev
+check_h "must have PROG [ARGS] or -p PID" --relative-timestamps
+check_h "must have PROG [ARGS] or -p PID" --relative-timestamps=s
+check_h "must have PROG [ARGS] or -p PID" --relative-timestamps=ms
+check_h "must have PROG [ARGS] or -p PID" --relative-timestamps=us
+check_h "must have PROG [ARGS] or -p PID" --relative-timestamps=ns
+check_h "invalid --relative-timestamps argument: 'n'" --relative-timestamps=n
+check_h "invalid --relative-timestamps argument: 'ss'" --relative-timestamps=ss
+check_h "must have PROG [ARGS] or -p PID" --syscall-times
+check_h "must have PROG [ARGS] or -p PID" --syscall-times=s
+check_h "must have PROG [ARGS] or -p PID" --syscall-times=ms
+check_h "must have PROG [ARGS] or -p PID" --syscall-times=us
+check_h "must have PROG [ARGS] or -p PID" --syscall-times=ns
+check_h "invalid --syscall-times argument: 'n'" --syscall-times=n
+check_h "invalid --syscall-times argument: 'ss'" --syscall-times=ss
+check_h "must have PROG [ARGS] or -p PID" --strings-in-hex
+check_h "must have PROG [ARGS] or -p PID" --strings-in-hex=all
+check_h "must have PROG [ARGS] or -p PID" --strings-in-hex=non-ascii
+check_h "invalid --strings-in-hex argument: 'al'" --strings-in-hex=al
+check_h "invalid --strings-in-hex argument: 'alll'" --strings-in-hex=alll
+check_h "invalid --strings-in-hex argument: 'ascii'" --strings-in-hex=ascii
+check_h "must have PROG [ARGS] or -p PID" --quiet=all
+check_h "must have PROG [ARGS] or -p PID" --quiet=none
+check_h "must have PROG [ARGS] or -p PID" --quiet=\!attach
+check_h "must have PROG [ARGS] or -p PID" --quiet=exit,exits,personality
+check_e "invalid quiet 'detach'" --quiet=detach -p $$
+check_e "invalid quiet 'fds'" -q --quiet=fds -p $$
+check_e "invalid quiet 'detach'" --quiet=detach -p $$
+check_e '-q and -e quiet/--quiet cannot be provided simultaneously' -q --quiet -p $$
+check_e '-q and -e quiet/--quiet cannot be provided simultaneously' -q -e q=none -p $$
+check_e '-q and -e quiet/--quiet cannot be provided simultaneously' -q -e silent=attach,personality -p $$
+
+check_h 'must have PROG [ARGS] or -p PID' -P .
+check_h 'must have PROG [ARGS] or -p PID' -P . -P..
+check_h 'must have PROG [ARGS] or -p PID' --trace-path=.
+check_h 'must have PROG [ARGS] or -p PID' --trace-path=. --trace-path ..
+check_e "Requested path \"///\" resolved into \"/\"
+$STRACE_EXE: Requested path \"/.\" resolved into \"/\"
+$STRACE_EXE: -q and -e quiet/--quiet cannot be provided simultaneously" -q --quiet -P /// -P/. .
+
+for i in time time_percent time-percent time_total time-total total_time total-time min_time min-time time_min time-min shortest max_time max-time time_max time-max longest avg_time avg-time time_avg time-avg calls count error errors name syscall syscall_name syscall-name none nothing; do
+       check_h "must have PROG [ARGS] or -p PID" -S "$i"
+       check_h "must have PROG [ARGS] or -p PID" --summary-sort-by="$i"
+       if [ "x$i" != xnone -a "x$i" != xnothing ]; then
+               check_h "must have PROG [ARGS] or -p PID" -c -U "$i"
+               check_h "must have PROG [ARGS] or -p PID" --summary-only --summary-columns="$i"
+       fi
+done
+for i in time,time_total,avg_time,calls,errors,name time_percent,total_time,time_avg,count,error,syscall_name; do
+       check_h "must have PROG [ARGS] or -p PID" -c -U "$i"
+       check_h "must have PROG [ARGS] or -p PID" --summary-only --summary-columns="$i"
+done
+for i in non syscall_names; do
+       check_h "invalid sortby: '$i'" -S "$i"
+       check_h "invalid sortby: '$i'" --summary-sort-by="$i"
+       check_h "unknown column name: '$i'" -U "$i"
+       check_h "unknown column name: '$i'" --summary-columns="$i"
+done
+check_h "unknown column name: ''" -U time,,name
+check_h "call summary column has been provided more than once: 'time_percent' (-U option residual: 'time_percent,time_total')" -U time,time_percent,time_total
+
+check_e '-x and --strings-in-hex cannot be provided simultaneously' -x --strings-in-hex -p $$
+check_e '-x and --strings-in-hex cannot be provided simultaneously' --strings-in-hex -p $$ -xx
 check_h "invalid -X argument: 'test'" -Xtest
+check_h "invalid --const-print-style argument: 'test'" --const-print-style=test
 check_h "invalid -X argument: 'a'" -Xa
+check_h "invalid --const-print-style argument: 'a'" --const-print-style=a
 check_h "invalid -X argument: 'abbreviated'" -X abbreviated
+check_h "invalid --const-print-style argument: 'abbreviated'" --const-print-style=abbreviated
+check_h "must have PROG [ARGS] or -p PID" --decode-fds
+check_h "must have PROG [ARGS] or -p PID" --decode-fds=all
+check_h "must have PROG [ARGS] or -p PID" --decode-fds=none
+check_h "must have PROG [ARGS] or -p PID" --decode-fds=path
+check_h "must have PROG [ARGS] or -p PID" --decode-fds=socket,dev
+check_h "must have PROG [ARGS] or -p PID" --decode-fds=\!path
+check_h "must have PROG [ARGS] or -p PID" --decode-fds=socket,path,dev
+check_e "invalid decode-fds 'p'" --decode-fds=p -p $$
+check_e "invalid decode-fds 'device'" -y --decode-fds=device -p $$
+check_e "invalid decode-fds 'name'" --decode-fds=path,name -p $$
+check_e "invalid decode-fds 'sock'" -e decode-fd=sock -y -p $$
+check_e '-y and --decode-fds cannot be provided simultaneously' -y --decode-fds -p $$
+check_e '-y and --decode-fds cannot be provided simultaneously' -e decode-fd=all -yy -p $$
+check_e '-y and --decode-fds cannot be provided simultaneously' --decode-fds=none -y -p $$
 
 check_h "incorrect personality designator '' in qualification 'getcwd@'" -e trace=getcwd@
 check_h "incorrect personality designator '42' in qualification 'getcwd@42'" -e trace=getcwd@42
 check_h "incorrect personality designator '42' in qualification 'getcwd@42'" -e trace=gettid,getcwd@42
 check_h "incorrect personality designator '42' in qualification '23@42'" -e trace=23@42,123
 
+check_h '--seccomp-bpf cannot be used without -f/--follow-forks, disabling
+-w/--summary-wall-clock must be given with (-c/--summary-only or -C/--summary)' --seccomp-bpf -w /
+check_h '--seccomp-bpf is not enabled for processes attached with -p
+-w/--summary-wall-clock must be given with (-c/--summary-only or -C/--summary)' --seccomp-bpf -f -p 1 -w
+
+check_h 'option -F is deprecated, please use -f/--follow-forks instead
+-w/--summary-wall-clock must be given with (-c/--summary-only or -C/--summary)' -F -w /
+check_h 'option -F is deprecated, please use -f/--follow-forks instead
+-w/--summary-wall-clock must be given with (-c/--summary-only or -C/--summary)' -FF -w /
+check_h 'deprecated option -F ignored
+-w/--summary-wall-clock must be given with (-c/--summary-only or -C/--summary)' -fF -w /
+
 check_e "invalid system call '/getcwd@ohmy'" -e trace=/getcwd@ohmy
 check_e "invalid -e kvm= argument: 'chdir'" -e kvm=chdir
+check_e "invalid -e kvm= argument: 'chdir'" --kvm=chdir
 
 case "$STRACE_NATIVE_ARCH" in
 x86_64)
@@ -59,7 +229,7 @@ x32)
        check_h "must have PROG [ARGS] or -p PID" -e trace=getcwd@32
        check_h "must have PROG [ARGS] or -p PID" -e trace=getcwd@x32
        ;;
-aarch64|powerpc64|riscv|s390x|sparc64|tile)
+aarch64|powerpc64|s390x|sparc64|tile)
        check_h "must have PROG [ARGS] or -p PID" -e trace=getcwd@64
        check_h "must have PROG [ARGS] or -p PID" -e trace=getcwd@32
        check_h "incorrect personality designator 'x32' in qualification 'getcwd@x32'" -e trace=getcwd@x32
@@ -93,21 +263,60 @@ if [ "$uid" -ge 0 ]; then
        if [ "$uid" -eq 0 ]; then
                umsg="Cannot find user ':nosuchuser:'"
        else
-               umsg='You must be root to use the -u option'
+               umsg='You must be root to use the -u/--username option'
        fi
 
        check_e "$umsg" -u :nosuchuser: true
 
-       for c in i r t T y; do
-               check_e "-$c has no effect with -c
-$STRACE_EXE: $umsg" -u :nosuchuser: -c -$c true
+       for c in i/--instruction-pointer n/--syscall-number r/--relative-timestamps t/--absolute-timestamps T/--syscall-times y/--decode-fds; do
+               check_e "-$c has no effect with -c/--summary-only
+$STRACE_EXE: $umsg" -u :nosuchuser: -c -${c%%/*} true
        done
-               check_e "-i has no effect with -c
-$STRACE_EXE: -r has no effect with -c
-$STRACE_EXE: -t has no effect with -c
-$STRACE_EXE: -T has no effect with -c
-$STRACE_EXE: -y has no effect with -c
-$STRACE_EXE: $umsg" -u :nosuchuser: -cirtTy true
+
+       check_e "-i/--instruction-pointer has no effect with -c/--summary-only
+$STRACE_EXE: -n/--syscall-number has no effect with -c/--summary-only
+$STRACE_EXE: -r/--relative-timestamps has no effect with -c/--summary-only
+$STRACE_EXE: -t/--absolute-timestamps has no effect with -c/--summary-only
+$STRACE_EXE: -T/--syscall-times has no effect with -c/--summary-only
+$STRACE_EXE: -y/--decode-fds has no effect with -c/--summary-only
+$STRACE_EXE: Only the last of -z/--successful-only/-Z/--failed-only options will take effect. See status qualifier for more complex filters.
+$STRACE_EXE: $umsg" -u :nosuchuser: -cinrtTyzZ true
+
+       for c in --output-separately -A/--output-append-mode; do
+               check_e "$c has no effect without -o/--output
+$STRACE_EXE: $umsg" -u :nosuchuser: ${c%%/*} true
+       done
+
+       check_e "-S/--summary-sort-by has no effect without (-c/--summary-only or -C/--summary)
+$STRACE_EXE: $umsg" -u :nosuchuser: --summary-sort-by errors true
+
+       check_e "--output-separately has no effect without -o/--output
+$STRACE_EXE: -A/--output-append-mode has no effect without -o/--output
+$STRACE_EXE: $umsg" -u :nosuchuser: --output-separately --output-append-mode true
+
+       check_e "$umsg" -u :nosuchuser: -ff true
+       check_e "$umsg" -u :nosuchuser: --output-separately --follow-forks true
+
+       check_e "Only the last of -z/--successful-only/-Z/--failed-only options will take effect. See status qualifier for more complex filters.
+$STRACE_EXE: $umsg" -u :nosuchuser: -z --successful-only true
+       check_e "Only the last of -z/--successful-only/-Z/--failed-only options will take effect. See status qualifier for more complex filters.
+$STRACE_EXE: $umsg" -u :nosuchuser: --successful-only -Z true
+       check_e "Only the last of -z/--successful-only/-Z/--failed-only options will take effect. See status qualifier for more complex filters.
+$STRACE_EXE: $umsg" -u :nosuchuser: --successful-only --failed-only true
+
+       check_e "-n/--syscall-number has no effect with -c/--summary-only
+$STRACE_EXE: $umsg" --user=:nosuchuser: --syscall-number --summary-only true
+
+       check_e "-i/--instruction-pointer has no effect with -c/--summary-only
+$STRACE_EXE: $umsg" --user=:nosuchuser: --instruction-pointer --summary-only true
+fi
+
+check_e_using_grep 'ptrace_setoptions = 0x[[:xdigit:]]+' -d /
+check_e_using_grep 'ptrace_setoptions = 0x[[:xdigit:]]+' --debug /
+
+if [ -z "$(get_config_option ENABLE_STACKTRACE 1)" ]; then
+       check_e "Stack traces (-k/--stack-traces option) are not supported by this build of strace" -k
+       check_e "Stack traces (-k/--stack-traces option) are not supported by this build of strace" --stack-traces
 fi
 
 args='-p 2147483647'
index 83ab6e391c51fece67f9abb8682633d2d1c9f82c..13aacf36c1d44d4ef4ce64a43b285ecee0d57126 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Check tracing of orphaned process group.
  *
- * Copyright (c) 2019 The strace developers.
+ * Copyright (c) 2019-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -139,7 +139,7 @@ main(void)
         */
        leader = getpid();
        printf("%-5d --- %s {si_signo=%s, si_code=SI_TKILL"
-              ", si_pid=%d, si_uid=%u} ---\n",
+              ", si_pid=%d, si_uid=%d} ---\n",
               stopped, "SIGSTOP", "SIGSTOP", stopped, geteuid());
        printf("%-5d --- stopped by SIGSTOP ---\n", stopped);
        printf("%-5d +++ exited with 0 +++\n", leader);
index d721e394fe4652b78d0d2fd49e276ac0ff99fe2b..3d8647400c5f7ca1ba8d6384bcf98156ab723598 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of osf_utimes syscall.
  *
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_osf_utimes
 
index 0260a6bc034789124c8cdbc620b10f19f9168bb2..c03123b1994bb43e030f584d474611c85010dbc5 100644 (file)
@@ -3,14 +3,14 @@
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Fei Jie <feij.fnst@cn.fujitsu.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_pause
 
index 0bc28d1858bba33bac5d9cbc99972e6561e1fac5..2ee0543a80dd5ea315e83311a037987786c01754 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2020 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -27,7 +27,7 @@ int main(void)
 #endif
 
        /* write instruction pointer length to the log */
-       assert(write(-1, NULL, 2 * sizeof(void *)) < 0);
+       assert(write(-1, (void *) 8UL, 2 * sizeof(void *)) < 0);
 
        /* just a noticeable line in the log */
        assert(munmap(&main, 0) < 0);
index 40221e578b3f261c6943a3c43bbb5da0d8f97d0d..c039d5d3734def98691ce30757ab44e122ed8a94 100755 (executable)
@@ -3,7 +3,7 @@
 # Check -i option.
 #
 # Copyright (c) 2015 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2015-2018 The strace developers.
+# Copyright (c) 2015-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -14,11 +14,11 @@ check_prog sed
 
 run_prog > /dev/null
 
-args="-if $args"
+args="--quiet=attach,personality -if $args"
 $STRACE $args 2> "$LOG" ||
        dump_log_and_fail_with "$STRACE $args failed"
 
-len="$(sed -r -n 's/^\[[[:xdigit:]]+\] write\(-1, NULL, ([[:digit:]]{1,2})\)[[:space:]]+= -1 .*/\1/p' "$LOG")" &&
+len="$(sed -r -n 's/^\[[[:xdigit:]]+\] write\(-1, 0x8, ([[:digit:]]{1,2})\)[[:space:]]+= -1 .*/\1/p' "$LOG")" &&
 [ -n "$len" ] &&
 pid="$(sed -r -n 's/^\[[[:xdigit:]]{'"$len"'}\] --- SIGCHLD \{si_signo=SIGCHLD, si_code=CLD_(KILLED|DUMPED), si_pid=([[:digit:]]+), .*/\2/p' "$LOG")" &&
 [ -n "$pid" ] &&
index ae38b6de14a907db89739b5934a1bfd677191128..d2f5b869b12e67af1acec2073bce0281f7dfd06c 100644 (file)
@@ -2,14 +2,14 @@
  * Check verbose decoding of perf_event_open syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined(__NR_perf_event_open) && defined(HAVE_LINUX_PERF_EVENT_H)
 
@@ -137,7 +137,7 @@ print_event_attr(struct perf_event_attr *attr_ptr, size_t size,
                STRACE_PEA_ABBREV_SIZE =
                        offsetof(struct perf_event_attr, config) +
                        sizeof(attr_ptr->config),
-               STRACE_PEA_SIZE = 112,
+               STRACE_PEA_SIZE = 120,
        };
 
        uint32_t read_size;
@@ -476,6 +476,28 @@ print_event_attr(struct perf_event_attr *attr_ptr, size_t size,
                goto end;
        }
 
+       val = ((uint16_t *) attr)[110 / sizeof(uint16_t)];
+       if (val)
+               printf(" /* bytes 110..111: %#" PRIx16 " */", (uint16_t) val);
+
+       if (size <= 112) {
+               cutoff = 112;
+               goto end;
+       }
+
+       val =
+#  ifdef HAVE_STRUCT_PERF_EVENT_ATTR_AUX_SAMPLE_SIZE
+               attr->aux_sample_size;
+#  else
+               ((uint32_t *) attr)[112 / sizeof(uint32_t)];
+#  endif
+       printf(", aux_sample_size=%" PRIu32, (uint32_t) val);
+
+       if (size <= 116) {
+               cutoff = 116;
+               goto end;
+       }
+
        cutoff = STRACE_PEA_SIZE;
 
 end:
@@ -489,7 +511,7 @@ end:
 }
 
 /* These require aligned access, so no byte-grain checks possible */
-# if defined SPARC || defined SPARC64 || defined POWERPC || defined POWERPC64
+# if defined SPARC || defined SPARC64 || defined POWERPC || defined POWERPC64 || defined ARM
 #  define ATTR_REC(sz) { tail_alloc((sz + 7) & ~7), sz }
 # else
 #  define ATTR_REC(sz) { tail_alloc(sz), sz }
@@ -512,7 +534,8 @@ end:
        "PERF_SAMPLE_BRANCH_CALL|" \
        "PERF_SAMPLE_BRANCH_NO_FLAGS|" \
        "PERF_SAMPLE_BRANCH_NO_CYCLES|" \
-       "PERF_SAMPLE_BRANCH_TYPE_SAVE"
+       "PERF_SAMPLE_BRANCH_TYPE_SAVE|" \
+       "PERF_SAMPLE_BRANCH_HW_INDEX"
 
 int
 main(void)
@@ -529,7 +552,11 @@ main(void)
        static const size_t attr_v4_625_size = PERF_ATTR_SIZE_VER4 + 5;
        static const size_t attr_v4_875_size = PERF_ATTR_SIZE_VER4 + 7;
        static const size_t attr_v5_size = PERF_ATTR_SIZE_VER5;
-       static const size_t attr_big_size = PERF_ATTR_SIZE_VER5 + 32;
+       static const size_t attr_v5_25_size = PERF_ATTR_SIZE_VER5 + 2;
+       static const size_t attr_v5_5_size = PERF_ATTR_SIZE_VER5 + 4;
+       static const size_t attr_v5_75_size = PERF_ATTR_SIZE_VER5 + 6;
+       static const size_t attr_v6_size = PERF_ATTR_SIZE_VER6;
+       static const size_t attr_big_size = PERF_ATTR_SIZE_VER6 + 32;
 
        static const struct u64_val_str attr_types[] = {
                { ARG_STR(PERF_TYPE_HARDWARE) },
@@ -597,7 +624,7 @@ main(void)
        static const struct u64_val_str sample_types[] = {
                { ARG_STR(0) },
                { 0x800, "PERF_SAMPLE_BRANCH_STACK" },
-               { ARG_ULL_STR(0xdeadc0deda700000) " /* PERF_SAMPLE_??? */" },
+               { ARG_ULL_STR(0xdeadc0deda600000) " /* PERF_SAMPLE_??? */" },
                { 0xffffffffffffffffULL,
                        "PERF_SAMPLE_IP|PERF_SAMPLE_TID|PERF_SAMPLE_TIME|"
                        "PERF_SAMPLE_ADDR|PERF_SAMPLE_READ|"
@@ -608,7 +635,8 @@ main(void)
                        "PERF_SAMPLE_WEIGHT|PERF_SAMPLE_DATA_SRC|"
                        "PERF_SAMPLE_IDENTIFIER|PERF_SAMPLE_TRANSACTION|"
                        "PERF_SAMPLE_REGS_INTR|PERF_SAMPLE_PHYS_ADDR|"
-                       "0xfffffffffff00000" },
+                       "PERF_SAMPLE_AUX|"
+                       "0xffffffffffe00000" },
        };
        static const struct u64_val_str read_formats[] = {
                { ARG_STR(0) },
@@ -640,11 +668,11 @@ main(void)
        static const struct u64_val_str branch_sample_types[] = {
                { ARG_STR(0) },
                { 0x80, "PERF_SAMPLE_BRANCH_ABORT_TX" },
-               { 0x1ffff, BRANCH_TYPE_ALL },
+               { 0x3ffff, BRANCH_TYPE_ALL },
                { ARG_ULL_STR(0xdeadcaffeeec0000)
                        " /* PERF_SAMPLE_BRANCH_??? */" },
                { 0xffffffffffffffffULL,
-                       BRANCH_TYPE_ALL "|0xfffffffffffe0000" }
+                       BRANCH_TYPE_ALL "|0xfffffffffffc0000" }
        };
        static const struct s32_val_str clockids[] = {
                { 11, "CLOCK_TAI" },
@@ -669,6 +697,10 @@ main(void)
                ATTR_REC(attr_v4_625_size),
                ATTR_REC(attr_v4_875_size),
                ATTR_REC(attr_v5_size),
+               ATTR_REC(attr_v5_25_size),
+               ATTR_REC(attr_v5_5_size),
+               ATTR_REC(attr_v5_75_size),
+               ATTR_REC(attr_v6_size),
                ATTR_REC(attr_big_size),
        };
 
@@ -776,6 +808,10 @@ main(void)
                ip_desc_str = precise_ip_descs[flags_data.flags.precise_ip];
 # endif
 
+               if (((i % 17) == 3) && (size >= 112))
+                       ((uint16_t *) attr)[110 / sizeof(uint16_t)] = 0;
+
+
                if (i == 0)
                        attr->size = size + 8;
 
index b87cb2c6e892760c110f9aea21580741b71145a8..d5a21a065602639a67e947160c9833d12ff48e9e 100644 (file)
@@ -2,14 +2,14 @@
  * Check decoding of perf_event_open syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined(__NR_perf_event_open) && defined(HAVE_LINUX_PERF_EVENT_H)
 
diff --git a/tests/pidfd_getfd-y.c b/tests/pidfd_getfd-y.c
new file mode 100644 (file)
index 0000000..7e78655
--- /dev/null
@@ -0,0 +1,3 @@
+#define PIDFD_PATH "<anon_inode:[pidfd]>"
+#define FD0_PATH "</dev/full>"
+#include "pidfd_getfd.c"
diff --git a/tests/pidfd_getfd-y.gen.test b/tests/pidfd_getfd-y.gen.test
new file mode 100755 (executable)
index 0000000..9aa306e
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pidfd_getfd-y --trace=pidfd_getfd -a18 -e signal=none -y </dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff --trace=pidfd_getfd -a18 -e signal=none -y </dev/full
diff --git a/tests/pidfd_getfd-yy.c b/tests/pidfd_getfd-yy.c
new file mode 100644 (file)
index 0000000..9a5a185
--- /dev/null
@@ -0,0 +1,3 @@
+#define PRINT_PIDFD 1
+#define FD0_PATH "</dev/full<char 1:7>>"
+#include "pidfd_getfd.c"
diff --git a/tests/pidfd_getfd-yy.gen.test b/tests/pidfd_getfd-yy.gen.test
new file mode 100755 (executable)
index 0000000..7c1ca01
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pidfd_getfd-yy --trace=pidfd_getfd -a18 -e signal=none -yy </dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff --trace=pidfd_getfd -a18 -e signal=none -yy </dev/full
diff --git a/tests/pidfd_getfd.c b/tests/pidfd_getfd.c
new file mode 100644 (file)
index 0000000..fef7709
--- /dev/null
@@ -0,0 +1,103 @@
+/*
+ * Check decoding of pidfd_getfd syscall.
+ *
+ * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_pidfd_getfd
+
+# include <assert.h>
+# include <signal.h>
+# include <stdio.h>
+# include <stdlib.h>
+# include <unistd.h>
+# include <sys/wait.h>
+
+# ifndef PIDFD_PATH
+#  define PIDFD_PATH ""
+# endif
+# ifndef FD0_PATH
+#  define FD0_PATH ""
+# endif
+# ifndef PRINT_PIDFD
+#  define PRINT_PIDFD 0
+# endif
+
+static const char *errstr;
+
+static long
+k_pidfd_getfd(const unsigned int pidfd, const unsigned int fd,
+             const unsigned int flags)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = fill | pidfd;
+       const kernel_ulong_t arg2 = fill | fd;
+       const kernel_ulong_t arg3 = fill | flags;
+       const long rc = syscall(__NR_pidfd_getfd,
+                               arg1, arg2, arg3, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
+int
+main(void)
+{
+       long rc;
+
+       rc = k_pidfd_getfd(-1U, -1U, 0);
+       printf("pidfd_getfd(-1, -1, 0) = %s\n", errstr);
+
+       rc = k_pidfd_getfd(0, 0, 0xbadc0ded);
+       printf("pidfd_getfd(0" FD0_PATH ", 0, 0xbadc0ded) = %s\n", errstr);
+
+       int child_wait_fds[2];
+       if (pipe(child_wait_fds))
+               perror_msg_and_fail("pipe");
+
+       int dupfd = dup(0);
+       int pid = fork();
+       if (pid == 0) {
+               close(0);
+               close(child_wait_fds[1]);
+               if (read(child_wait_fds[0], &child_wait_fds[1], sizeof(int)))
+                       _exit(2);
+               _exit(0);
+       }
+       close(dupfd);
+
+       int pidfd = syscall(__NR_pidfd_open, pid, 0);
+# if PRINT_PIDFD
+       char pidfd_str[sizeof("<pid:>") + 3 * sizeof(int)];
+       snprintf(pidfd_str, sizeof(pidfd_str), "<pid:%d>", pid);
+# else
+       const char *pidfd_str = PIDFD_PATH;
+# endif
+       rc = k_pidfd_getfd(pidfd, dupfd, 0);
+       printf("pidfd_getfd(%d%s, %d%s, 0) = %s%s\n",
+              pidfd, pidfd >= 0 ? pidfd_str : "",
+              dupfd, pidfd >= 0 ? FD0_PATH : "",
+              errstr, rc >= 0 ? FD0_PATH : "");
+
+       puts("+++ exited with 0 +++");
+
+       close(child_wait_fds[1]);
+       int status;
+       assert(wait(&status) == pid);
+       assert(status == 0);
+
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_pidfd_getfd");
+
+#endif
diff --git a/tests/pidfd_getfd.gen.test b/tests/pidfd_getfd.gen.test
new file mode 100755 (executable)
index 0000000..13a08d6
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pidfd_getfd -a18 -Xverbose -e signal=none </dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a18 -Xverbose -e signal=none </dev/full
diff --git a/tests/pidfd_open--decode-fd-path.c b/tests/pidfd_open--decode-fd-path.c
new file mode 100644 (file)
index 0000000..a358834
--- /dev/null
@@ -0,0 +1 @@
+#include "pidfd_open-y.c"
diff --git a/tests/pidfd_open--decode-fd-path.gen.test b/tests/pidfd_open--decode-fd-path.gen.test
new file mode 100755 (executable)
index 0000000..e80e2ef
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pidfd_open--decode-fd-path -a17 -e decode-fd=path -e trace=pidfd_open); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a17 -e decode-fd=path -e trace=pidfd_open
diff --git a/tests/pidfd_open--decode-fd-pidfd.c b/tests/pidfd_open--decode-fd-pidfd.c
new file mode 100644 (file)
index 0000000..3f4abfe
--- /dev/null
@@ -0,0 +1,2 @@
+#define PRINT_PIDFD 1
+#include "pidfd_open-y.c"
diff --git a/tests/pidfd_open--decode-fd-pidfd.gen.test b/tests/pidfd_open--decode-fd-pidfd.gen.test
new file mode 100755 (executable)
index 0000000..7a035db
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pidfd_open--decode-fd-pidfd -a17 -e decode-fd=pidfd -e trace=pidfd_open); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a17 -e decode-fd=pidfd -e trace=pidfd_open
diff --git a/tests/pidfd_open--decode-fd-socket.c b/tests/pidfd_open--decode-fd-socket.c
new file mode 100644 (file)
index 0000000..a358834
--- /dev/null
@@ -0,0 +1 @@
+#include "pidfd_open-y.c"
diff --git a/tests/pidfd_open--decode-fd-socket.gen.test b/tests/pidfd_open--decode-fd-socket.gen.test
new file mode 100755 (executable)
index 0000000..30b8f96
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pidfd_open--decode-fd-socket -a17 -e decode-fd=socket -e trace=pidfd_open); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a17 -e decode-fd=socket -e trace=pidfd_open
diff --git a/tests/pidfd_open--pidns-translation.c b/tests/pidfd_open--pidns-translation.c
new file mode 100644 (file)
index 0000000..c38e37a
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "pidfd_open.c"
diff --git a/tests/pidfd_open--pidns-translation.gen.test b/tests/pidfd_open--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..c87aa6b
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pidfd_open--pidns-translation test_pidns -a17 -e trace=pidfd_open); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a17 -e trace=pidfd_open
diff --git a/tests/pidfd_open-P.c b/tests/pidfd_open-P.c
new file mode 100644 (file)
index 0000000..a80db64
--- /dev/null
@@ -0,0 +1,2 @@
+#define PATH_TRACING
+#include "pidfd_open.c"
diff --git a/tests/pidfd_open-P.gen.test b/tests/pidfd_open-P.gen.test
new file mode 100755 (executable)
index 0000000..7f2221d
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pidfd_open-P -a17 -P /dev/full -e trace=pidfd_open); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a17 -P /dev/full -e trace=pidfd_open
diff --git a/tests/pidfd_open-y.c b/tests/pidfd_open-y.c
new file mode 100644 (file)
index 0000000..18bf947
--- /dev/null
@@ -0,0 +1,2 @@
+#define PRINT_PATHS
+#include "pidfd_open.c"
diff --git a/tests/pidfd_open-y.gen.test b/tests/pidfd_open-y.gen.test
new file mode 100755 (executable)
index 0000000..83d64a6
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pidfd_open-y -a17 -y -e trace=pidfd_open); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a17 -y -e trace=pidfd_open
diff --git a/tests/pidfd_open-yy.c b/tests/pidfd_open-yy.c
new file mode 100644 (file)
index 0000000..3f4abfe
--- /dev/null
@@ -0,0 +1,2 @@
+#define PRINT_PIDFD 1
+#include "pidfd_open-y.c"
diff --git a/tests/pidfd_open-yy.gen.test b/tests/pidfd_open-yy.gen.test
new file mode 100755 (executable)
index 0000000..0a81cfa
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pidfd_open-yy -a17 -yy -e trace=pidfd_open); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a17 -yy -e trace=pidfd_open
diff --git a/tests/pidfd_open.c b/tests/pidfd_open.c
new file mode 100644 (file)
index 0000000..e5d74a9
--- /dev/null
@@ -0,0 +1,113 @@
+/*
+ * Check decoding of pidfd_open syscall.
+ *
+ * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2019-2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+#include "pidns.h"
+
+#ifdef __NR_pidfd_open
+
+# include <stdio.h>
+# include <unistd.h>
+# ifdef PATH_TRACING
+#  include <fcntl.h>
+# endif
+
+static const char *errstr;
+
+static long
+k_pidfd_open(const unsigned int pid, const unsigned int flags)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = fill | pid;
+       const kernel_ulong_t arg2 = fill | flags;
+       const long rc = syscall(__NR_pidfd_open,
+                               arg1, arg2, bad, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
+int
+main(void)
+{
+       PIDNS_TEST_INIT;
+
+# if defined PATH_TRACING || defined PRINT_PATHS
+       skip_if_unavailable("/proc/self/fd/");
+# endif
+
+# ifdef PATH_TRACING
+       static const char path_full[] = "/dev/full";
+       (void) close(0);
+       if (open(path_full, O_WRONLY))
+               perror_msg_and_skip(path_full);
+# endif
+
+       k_pidfd_open(0, 0);
+# ifndef PATH_TRACING
+       pidns_print_leader();
+       printf("pidfd_open(0, 0) = %s\n", errstr);
+# endif
+
+       k_pidfd_open(-1U, 0);
+# ifndef PATH_TRACING
+       pidns_print_leader();
+       printf("pidfd_open(-1, 0) = %s\n", errstr);
+# endif
+
+       k_pidfd_open(0, -1U);
+# ifndef PATH_TRACING
+       pidns_print_leader();
+       printf("pidfd_open(0, %#x) = %s\n", -1U, errstr);
+# endif
+
+       const unsigned int flags = 0xfacefeed;
+       const int pid = getpid();
+
+       k_pidfd_open(pid, flags);
+# ifndef PATH_TRACING
+       const char *pid_str = pidns_pid2str(PT_TGID);
+       pidns_print_leader();
+       printf("pidfd_open(%d%s, %#x) = %s\n",
+               pid, pid_str, flags, errstr);
+# endif
+
+# ifdef PRINT_PATHS
+       long rc = k_pidfd_open(pid, 0);
+       if (rc < 0)
+               perror_msg_and_skip("pidfd_open");
+# else
+       k_pidfd_open(pid, 0);
+# endif
+
+# ifndef PATH_TRACING
+       pidns_print_leader();
+       printf("pidfd_open(%d%s, 0) = "
+#  if defined PRINT_PIDFD
+              "%ld<pid:%d>\n", pid, pid_str, rc, pid
+#  elif defined PRINT_PATHS
+              "%ld<anon_inode:[pidfd]>\n", pid, pid_str, rc
+#  else
+              "%s\n", pid, pid_str, errstr
+#  endif
+              );
+# endif
+
+       pidns_print_leader();
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_pidfd_open");
+
+#endif
diff --git a/tests/pidfd_open.gen.test b/tests/pidfd_open.gen.test
new file mode 100755 (executable)
index 0000000..4c240f3
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pidfd_open -a17 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a17 
diff --git a/tests/pidfd_send_signal--pidns-translation.c b/tests/pidfd_send_signal--pidns-translation.c
new file mode 100644 (file)
index 0000000..b04f10f
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "pidfd_send_signal.c"
diff --git a/tests/pidfd_send_signal--pidns-translation.gen.test b/tests/pidfd_send_signal--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..21191b0
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pidfd_send_signal--pidns-translation test_pidns -e trace=pidfd_send_signal); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -e trace=pidfd_send_signal
index 014e43de0d1f9e2bac81942819b307d59c08a1bc..a6b2d28ccac18238e28e8409cfb127c50c48b16c 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Check decoding of pidfd_send_signal syscall.
  *
- * Copyright (c) 2015-2019 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -9,8 +9,8 @@
 
 #include "tests.h"
 #include <unistd.h>
-#include <asm/unistd.h>
 #include "scno.h"
+#include "pidns.h"
 
 #ifdef __NR_pidfd_send_signal
 
@@ -37,6 +37,8 @@ sys_pidfd_send_signal(int pidfd, int sig, const void *info, int flags)
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        static const char null_path[] = "/dev/null";
 
        int fd = open(null_path, O_RDONLY);
@@ -47,19 +49,23 @@ main(void)
        const void *esi = (const void *) si + 1;
 
        sys_pidfd_send_signal(fd, SIGUSR1, esi, 0);
+       pidns_print_leader();
        printf("pidfd_send_signal(%d, SIGUSR1, %p, 0) = %s\n",
               fd, esi, errstr);
 
        si->si_signo = SIGUSR1;
        si->si_code = SI_QUEUE;
+       si->si_pid = getpid();
 
        sys_pidfd_send_signal(fd, SIGUSR2, si, -1);
+       pidns_print_leader();
        printf("pidfd_send_signal(%d, SIGUSR2, {si_signo=SIGUSR1"
-              ", si_code=SI_QUEUE, si_errno=%d, si_pid=%u, si_uid=%u"
+              ", si_code=SI_QUEUE, si_errno=%u, si_pid=%d%s, si_uid=%d"
               ", si_value={int=%d, ptr=%p}}, %#x) = %s\n",
-              fd, si->si_errno, si->si_pid, si->si_uid, si->si_int, si->si_ptr,
-              -1U, errstr);
+              fd, si->si_errno, si->si_pid, pidns_pid2str(PT_TGID), si->si_uid,
+              si->si_int, si->si_ptr, -1U, errstr);
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
diff --git a/tests/pidns-cache.c b/tests/pidns-cache.c
new file mode 100644 (file)
index 0000000..6319a7f
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+#include "pidns.h"
+
+#if defined __NR_getpid && (!defined __NR_getxpid || __NR_getxpid != __NR_getpid)
+
+# include <stdio.h>
+# include <unistd.h>
+# include <sys/time.h>
+
+# define SYSCALL_COUNT 1000
+
+/**
+ * Max ratio of the execution time with and without pidns translation.
+ */
+# define MAX_TIME_RATIO 20
+
+static long
+execute_syscalls(void)
+{
+       /* Load our PID in the cache */
+       syscall(__NR_getpid);
+
+       struct timeval stop, start;
+       gettimeofday(&start, NULL);
+
+       for (int i = 0; i < SYSCALL_COUNT; i++)
+              syscall(__NR_getpid);
+
+       gettimeofday(&stop, NULL);
+
+       return (stop.tv_usec - start.tv_usec) +
+               (stop.tv_sec - start.tv_sec) * 1000000;
+}
+
+int
+main(void)
+{
+       long max_us = execute_syscalls() * MAX_TIME_RATIO;
+
+       pidns_test_init();
+
+       long us = execute_syscalls();
+       if (us > max_us)
+               error_msg_and_fail("pidns translation took too long: %ld us "
+                                  "(max: %ld us)", us, max_us);
+
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_getpid")
+
+#endif
diff --git a/tests/pidns-cache.test b/tests/pidns-cache.test
new file mode 100755 (executable)
index 0000000..e4df082
--- /dev/null
@@ -0,0 +1,15 @@
+#!/bin/sh
+#
+# Test pidns translation cache.
+#
+# Copyright (c) 2020 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/init.sh"
+
+check_prog timeout
+
+run_prog > /dev/null
+run_strace --pidns-translation -f -e trace=getpid $args
diff --git a/tests/pidns.c b/tests/pidns.c
new file mode 100644 (file)
index 0000000..4fe5b22
--- /dev/null
@@ -0,0 +1,237 @@
+/*
+ * Testing framework for PID namespace translation
+ *
+ * Copyright (c) 2020 Ákos Uzonyi <uzonyi.akos@gmail.com>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+#include "tests.h"
+#include "pidns.h"
+#include "nsfs.h"
+
+#include <errno.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/types.h>
+#include <signal.h>
+#include <stdlib.h>
+#include <sched.h>
+#include <unistd.h>
+#include <sys/wait.h>
+#include <linux/sched.h>
+#include <fcntl.h>
+#include <sys/ioctl.h>
+
+#ifndef CLONE_NEWUSER
+# define CLONE_NEWUSER 0x10000000
+#endif
+
+#ifndef CLONE_NEWPID
+# define CLONE_NEWPID 0x20000000
+#endif
+
+static bool pidns_translation = false;
+static bool pidns_unshared = false;
+
+/* Our PIDs in strace's namespace */
+static pid_t pidns_strace_ids[PT_COUNT];
+
+void
+pidns_print_leader(void)
+{
+       if (pidns_translation)
+               printf("%-5d ", pidns_strace_ids[PT_TID]);
+}
+
+const char *
+pidns_pid2str(enum pid_type type)
+{
+       static const char format[] = " /* %d in strace's PID NS */";
+       static char buf[PT_COUNT][sizeof(format) + sizeof(int) * 3];
+
+       if (type < 0 || type >= PT_COUNT)
+               return "";
+
+       if (!pidns_unshared || !pidns_strace_ids[type])
+               return "";
+
+       snprintf(buf[type], sizeof(buf[type]), format, pidns_strace_ids[type]);
+       return buf[type];
+}
+
+/**
+ * This function is like fork, but does a few more things. It sets up the
+ * child's PGID and SID according to the parameters. Also it fills the
+ * pidns_strace_ids array in the child's memory with the PIDs of the child in
+ * parent's PID namespace. In the parent it waits for the child to terminate
+ * (but leaves the zombie to use it later as a process group). If the child
+ * terminates with nonzero exit status, the test is failed.
+ *
+ * @param pgid     The process group the child should be moved to. It's expected
+ *                 to be a PID of a zombie process (will be reaped). If
+ *                 negative, leave the child in the process group of the parent.
+ *                 If 0, move the process to its own process group.
+ * @param new_sid  Wheather child should be moved to a new session.
+ */
+static pid_t
+pidns_fork(pid_t pgid, bool new_sid)
+{
+       int strace_ids_pipe[2];
+       if (pipe(strace_ids_pipe) < 0)
+               perror_msg_and_fail("pipe");
+
+       fflush(stdout);
+       pid_t pid = fork();
+       if (pid < 0)
+               perror_msg_and_fail("fork");
+
+       if (!pid) {
+               close(strace_ids_pipe[1]);
+
+               ssize_t len = read(strace_ids_pipe[0], pidns_strace_ids,
+                               sizeof(pidns_strace_ids));
+               if (len < 0)
+                       perror_msg_and_fail("read");
+               if (len != sizeof(pidns_strace_ids))
+                       error_msg_and_fail("read returned < sizeof(pidns_strace_ids)");
+
+               close(strace_ids_pipe[0]);
+
+               if (pidns_strace_ids[PT_SID])
+                       setsid();
+
+               return 0;
+       }
+
+       pidns_strace_ids[PT_TID] = pid;
+       pidns_strace_ids[PT_TGID] = pid;
+       pidns_strace_ids[PT_PGID] = 0;
+       pidns_strace_ids[PT_SID] = 0;
+
+       if (!pgid)
+               pgid = pid;
+
+       if (pgid > 0) {
+               if (setpgid(pid, pgid) < 0)
+                       perror_msg_and_fail("setpgid");
+
+               pidns_strace_ids[PT_PGID] = pgid;
+       }
+
+       /* Reap group leader to test PGID decoding */
+       if (pgid > 0 && pgid != pid) {
+               int ret = waitpid(pgid, NULL, WNOHANG);
+               if (ret < 0)
+                       perror_msg_and_fail("wait");
+               if (!ret)
+                       error_msg_and_fail("could not reap group leader");
+       }
+
+       if (new_sid) {
+               pidns_strace_ids[PT_SID] = pid;
+               pidns_strace_ids[PT_PGID] = pid;
+       }
+
+       ssize_t len = write(strace_ids_pipe[1], pidns_strace_ids,
+                            sizeof(pidns_strace_ids));
+       if (len < 0)
+               perror_msg_and_fail("write");
+       if (len != sizeof(pidns_strace_ids))
+               error_msg_and_fail("write returned < sizeof(pidns_strace_ids)");
+
+       close(strace_ids_pipe[0]);
+       close(strace_ids_pipe[1]);
+
+       /* WNOWAIT: leave the zombie, to be able to use it as a process group */
+       siginfo_t siginfo;
+       if (waitid(P_PID, pid, &siginfo, WEXITED | WNOWAIT) < 0)
+               perror_msg_and_fail("wait");
+       if (siginfo.si_code != CLD_EXITED || siginfo.si_status)
+               error_msg_and_fail("child terminated with nonzero exit status");
+
+       return pid;
+}
+
+static void
+create_init_process(void)
+{
+       int child_pipe[2];
+       if (pipe(child_pipe) < 0)
+               perror_msg_and_fail("pipe");
+
+       pid_t pid = fork();
+       if (pid < 0)
+               perror_msg_and_fail("fork");
+
+       if (!pid) {
+               close(child_pipe[1]);
+               if (read(child_pipe[0], &child_pipe[1], sizeof(int)) != 0)
+                       _exit(1);
+               _exit(0);
+       }
+
+       close(child_pipe[0]);
+}
+
+void
+check_ns_ioctl(void)
+{
+       int fd = open("/proc/self/ns/pid", O_RDONLY);
+       if (fd < 0) {
+               if (errno == ENOENT)
+                       perror_msg_and_skip("opening /proc/self/ns/pid");
+               else
+                       perror_msg_and_fail("opening /proc/self/ns/pid");
+       }
+
+       int userns_fd = ioctl(fd, NS_GET_USERNS);
+       if (userns_fd < 0) {
+               if (errno == ENOTTY)
+                       error_msg_and_skip("NS_* ioctl commands are not "
+                                          "supported by the kernel");
+               else
+                       perror_msg_and_fail("ioctl(NS_GET_USERNS)");
+       }
+
+       close(userns_fd);
+       close(fd);
+}
+
+void
+pidns_test_init(void)
+{
+       pidns_translation = true;
+
+       check_ns_ioctl();
+
+       if (!pidns_fork(-1, false))
+               return;
+
+       /* Unshare user namespace too, so we do not need to be root */
+       if (unshare(CLONE_NEWUSER | CLONE_NEWPID) < 0) {
+               if (errno == EPERM)
+                       perror_msg_and_skip("unshare");
+
+               perror_msg_and_fail("unshare");
+       }
+
+       pidns_unshared = true;
+
+       create_init_process();
+
+       if (!pidns_fork(-1, false))
+               return;
+
+       if (!pidns_fork(-1, true))
+               return;
+
+       pid_t pgid;
+       if (!(pgid = pidns_fork(0, false)))
+               return;
+
+       if (!pidns_fork(pgid, false))
+               return;
+
+       exit(0);
+}
diff --git a/tests/pidns.h b/tests/pidns.h
new file mode 100644 (file)
index 0000000..bafc0d7
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ * Test PID namespace translation
+ *
+ * Copyright (c) 2020 Ákos Uzonyi <uzonyi.akos@gmail.com>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+#ifndef STRACE_PIDNS_H
+# define STRACE_PIDNS_H
+
+# ifdef PIDNS_TRANSLATION
+#  define PIDNS_TEST_INIT pidns_test_init()
+# else
+#  define PIDNS_TEST_INIT
+# endif
+
+# include <sys/types.h>
+
+enum pid_type {
+       PT_TID,
+       PT_TGID,
+       PT_PGID,
+       PT_SID,
+
+       PT_COUNT,
+       PT_NONE = -1
+};
+
+/* Prints leader (process tid) if pidns_test_init was called */
+void pidns_print_leader(void);
+
+/*
+ * Returns a static buffer containing the translation string of our PID.
+ */
+const char *pidns_pid2str(enum pid_type type);
+
+/**
+ * Skips the test if NS_* ioctl commands are not supported by the kernel.
+ */
+void check_ns_ioctl(void);
+
+/**
+ * Init pidns testing.
+ *
+ * Should be called at the beginning of the test's main function
+ *
+ * This function calls fork a couple of times, and returns in the child
+ * processes. These child processes are in a new PID namespace with different
+ * PID configurations (group leader, session leader, ...). If any child
+ * terminates with nonzero exit status the test is failed. Otherwise the test is
+ * succesful, and the parent process exits with 0.
+ */
+void pidns_test_init(void);
+
+#endif
\ No newline at end of file
index bdfc7565a5d1f0b97b570c84e563ec1cce368bf8..2f3571147bb53d093af7fc0080333f8cdbcf81c1 100644 (file)
@@ -2,14 +2,14 @@
  * Check decoding of pipe syscall.
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_pipe
 
index d948a1c693d19905fe574fc0abe609fe4f086a93..83a3d4c2f74c002c9c1f30fd8b16ebf5f8959473 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of pipe2 syscall.
  *
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_pipe2
 
index 6a92be40c02b03de591ae584c8e9fa5c6ac24b1a..a76266ca1db6712b5b597a056c26316b1258729c 100644 (file)
@@ -2,14 +2,13 @@
  * Check decoding of pkey_alloc syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
 #include "scno.h"
 
 #ifdef __NR_pkey_alloc
index 7bcb3f9a8937821f447e8af81b5cccdfd078f46d..b1759e2399db0e409bcdaa725cc49f75ca53a3b7 100644 (file)
@@ -2,14 +2,13 @@
  * Check decoding of pkey_free syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
 #include "scno.h"
 
 #ifdef __NR_pkey_free
index c9c96daa22dc3a5476d8146a8adbf3997f521a87..9a711a0fa396048ebcdc205c939ad763a5ce8186 100644 (file)
@@ -2,14 +2,13 @@
  * Check decoding of pkey_mprotect syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
 #include "scno.h"
 
 #ifdef __NR_pkey_mprotect
index 8ba2d303e23b1c5cd0614332c5b9c376125e386d..68121614860d7cee341c8bb585939607cca9563d 100755 (executable)
@@ -2,20 +2,20 @@
 #
 # Check path tracing of poll syscall.
 #
-# Copyright (c) 2018 The strace developers.
+# Copyright (c) 2018-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 . "${srcdir=.}/init.sh"
 
-run_prog > /dev/null
+run_prog > /dev/null 9>>/dev/full
 run_strace -a16 -vepoll -P /dev/full 9>>/dev/full \
        $args > "$EXP"
 match_diff "$LOG" "$EXP"
 
 for abbrev in 0 1 2 3 4 5; do
-       run_prog "../$NAME" $abbrev > /dev/null
+       run_prog "../$NAME" $abbrev > /dev/null 9>>/dev/full
        run_strace -a16 -epoll -s$abbrev -P /dev/full 9>>/dev/full \
                $args > "$EXP"
        match_diff "$LOG" "$EXP"
index c08bee8e1b0506e38fa48e3ecf1d50f5fa7399da..846af5a7529d32f64c8fb8d2df819e5afccbca49 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of poll syscall.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_poll
 
index e7a4474f05cb2a7ebc4ae7998153f5eb6115315b..9ada526d7ea69a2b7cb390a9f5a33042b7b83ae6 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of ppoll syscall.
  *
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_ppoll
 
index be8942708b017273aee19fd755eaa3cb4b2e2336..3a5d91136746d6782f80207ebbd94ea738350d15 100644 (file)
@@ -4,14 +4,14 @@
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_prctl
 
index 7740d52ab0ae17888e6bb9f5231c3618f37ec560..5c19602563b2421bff4066d2abf1e96d28550264 100644 (file)
@@ -3,14 +3,14 @@
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 #include <linux/prctl.h>
 
 #if defined __NR_prctl && defined PR_GET_DUMPABLE && defined PR_SET_DUMPABLE \
index 16d8591119787574d4c7da707d3ee3317e0552de..70cdc3e1bd1d0f07332aca18e419b1e1a1a696b8 100644 (file)
@@ -3,19 +3,16 @@
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
+#include <sys/prctl.h>
 
-#ifdef HAVE_PRCTL
-# include <sys/prctl.h>
-#endif
-
-#if defined HAVE_PRCTL && defined PR_GET_NAME && defined PR_SET_NAME
+#if defined PR_GET_NAME && defined PR_SET_NAME
 
 # include <stdio.h>
 # include <string.h>
@@ -79,6 +76,6 @@ main(void)
 
 #else
 
-SKIP_MAIN_UNDEFINED("HAVE_PRCTL && PR_GET_NAME && PR_SET_NAME")
+SKIP_MAIN_UNDEFINED("PR_GET_NAME && PR_SET_NAME")
 
 #endif
index 8ce13d804df815f3f988e0ebc171dbdb6807652e..8f50ca2f0559c946243d891c07ea8eecb50ea1c2 100644 (file)
@@ -1,17 +1,18 @@
 /*
  * Check decoding of prctl operations without arguments and return code parsing:
  * PR_GET_KEEPCAPS, PR_GET_SECCOMP, PR_GET_TIMERSLACK, PR_GET_TIMING,
- * PR_TASK_PERF_EVENTS_DISABLE, and PR_TASK_PERF_EVENTS_ENABLE.
+ * PR_TASK_PERF_EVENTS_DISABLE, PR_TASK_PERF_EVENTS_ENABLE, and
+ * PR_GET_TAGGED_ADDR_CTRL.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_prctl
 
@@ -36,6 +37,7 @@ main(void)
                { 30, "PR_GET_TIMERSLACK" },
                { 31, "PR_TASK_PERF_EVENTS_DISABLE" },
                { 32, "PR_TASK_PERF_EVENTS_ENABLE" },
+               { 56, "PR_GET_TAGGED_ADDR_CTRL" },
        };
 
        TAIL_ALLOC_OBJECT_CONST_PTR(unsigned int, ptr);
index 6ffbbad757f316775c1543750a37955674b8d12a..da79fdf059667a551b79e0372258c26d8c0310ec 100644 (file)
@@ -3,21 +3,21 @@
  *
  * Copyright (c) 2016 JingPiao Chen <chenjingpiao@foxmail.com>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 #include <linux/prctl.h>
 
 #if defined __NR_prctl && defined PR_GET_PDEATHSIG && defined PR_SET_PDEATHSIG
 
 # include <stdio.h>
 # include <unistd.h>
-# include <sys/signal.h>
+# include <signal.h>
 
 int
 main(void)
index f29cfad65ab2d163566f04061368c2d63090b3bc..56bee2fc12ccc493c9b8b86fa6cd5ee7ed8c0bd5 100644 (file)
@@ -2,7 +2,7 @@
  * Check verbose decoding of prctl PR_SET_SECCOMP SECCOMP_MODE_FILTER.
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 #include <unistd.h>
 #include <stdio.h>
 #include <errno.h>
-#include <asm/unistd.h>
-
-#ifdef HAVE_PRCTL
-# include <sys/prctl.h>
-#endif
+#include <sys/prctl.h>
 #ifdef HAVE_LINUX_SECCOMP_H
 # include <linux/seccomp.h>
 #endif
 #include <linux/filter.h>
+#include "scno.h"
 
-#if defined HAVE_PRCTL \
- && defined PR_SET_NO_NEW_PRIVS \
+#if defined PR_SET_NO_NEW_PRIVS \
  && defined PR_SET_SECCOMP \
  && defined SECCOMP_MODE_FILTER \
  && defined SECCOMP_RET_ERRNO \
                BPF_STMT(BPF_RET|BPF_K, SECCOMP_RET_KILL)
 
 # define PRINT_ALLOW_SYSCALL(nr) \
-       printf("BPF_JUMP(BPF_JMP|BPF_K|BPF_JEQ, %#x, 0, 0x1), " \
+       printf("BPF_JUMP(BPF_JMP|BPF_K|BPF_JEQ, %#lx, 0, 0x1), " \
               "BPF_STMT(BPF_RET|BPF_K, SECCOMP_RET_ALLOW), ", \
-              __NR_ ## nr)
+              (long) __NR_ ## nr)
 
 # define PRINT_DENY_SYSCALL(nr, err) \
-       printf("BPF_JUMP(BPF_JMP|BPF_K|BPF_JEQ, %#x, 0, 0x1), " \
+       printf("BPF_JUMP(BPF_JMP|BPF_K|BPF_JEQ, %#lx, 0, 0x1), " \
               "BPF_STMT(BPF_RET|BPF_K, SECCOMP_RET_ERRNO|%#x), ", \
-              __NR_ ## nr, err)
+              (long) __NR_ ## nr, err)
 
 static const struct sock_filter filter[] = {
        /* load syscall number */
@@ -117,7 +113,7 @@ main(void)
 
 #else
 
-SKIP_MAIN_UNDEFINED("HAVE_PRCTL && PR_SET_NO_NEW_PRIVS && PR_SET_SECCOMP"
+SKIP_MAIN_UNDEFINED("PR_SET_NO_NEW_PRIVS && PR_SET_SECCOMP"
                    " && SECCOMP_MODE_FILTER && SECCOMP_RET_ERRNO"
                    " && BPF_JUMP && BPF_STMT")
 
index 0573126e70d2cab98bffcfa28477dda423562b5f..353b07ee3781d3064f6cd2b7a98542059c828576 100644 (file)
@@ -1,17 +1,16 @@
 /*
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
-#ifdef HAVE_PRCTL
-# include <sys/prctl.h>
-#endif
+#include <sys/prctl.h>
+#include "scno.h"
 
-#if defined HAVE_PRCTL && defined PR_SET_SECCOMP && defined __NR_exit
+#if defined PR_SET_SECCOMP && defined __NR_exit
 
 # include <stdio.h>
 # include <unistd.h>
@@ -36,7 +35,7 @@ main(void)
                rc = 0;
        } else {
                /*
-                * If kernel implementaton of SECCOMP_MODE_STRICT is buggy,
+                * If kernel implementation of SECCOMP_MODE_STRICT is buggy,
                 * the following syscall will result to SIGKILL.
                 */
                rc = write(1, text1, LENGTH_OF(text1)) != LENGTH_OF(text1);
@@ -48,6 +47,6 @@ main(void)
 
 #else
 
-SKIP_MAIN_UNDEFINED("HAVE_PRCTL && PR_SET_SECCOMP && __NR_exit")
+SKIP_MAIN_UNDEFINED("PR_SET_SECCOMP && __NR_exit")
 
 #endif
index 5b32f5b5b2a0a8a61157c070ea042cef27bdcd73..8a9f1365219780b55a974f91e7d8995ed6e109c4 100644 (file)
@@ -3,14 +3,14 @@
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 #include <linux/prctl.h>
 
 #if defined __NR_prctl && defined PR_GET_SECUREBITS && defined PR_SET_SECUREBITS
index 3fa2df2d3051ba4cdb0fc8b19fe05cb152ef8d3b..c37c4e71bb57b4793a53b69479d049e6bce1b813 100644 (file)
@@ -9,7 +9,7 @@
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_prctl
 
index 9652f00dd4e1cea6e8ded8a47bb789077839a48e..14e5d395bf4aad59bc9bfede33548c84e9d2966a 100644 (file)
@@ -2,14 +2,14 @@
  * Check decoding of prctl PR_GET_TID_ADDRESS operation.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 #include <linux/prctl.h>
 
 #if defined __NR_prctl && defined __NR_set_tid_address && \
index 0ac27ecd7a7ea04b932dc2c91c96358033921646..20f9accda46825846a89a84d75a23f6be551f421 100644 (file)
@@ -3,14 +3,14 @@
  *
  * Copyright (c) 2016 JingPiao Chen <chenjingpiao@foxmail.com>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 #include <linux/prctl.h>
 
 #if defined __NR_prctl && defined PR_GET_TSC && defined PR_SET_TSC
index 3d1b504e4a161e9b365157dc0b0e8c33a644c9de..fcdac2e55b44121c89f5b04bdaaec22fa969fe1c 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2014-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -74,12 +74,7 @@ main(void)
                perror_msg_and_fail("preadv");
        printf("preadv(0, [], 0, -3) = -1 EINVAL (%m)\n");
 
-       static const char tmp[] = "preadv-tmpfile";
-       int fd = open(tmp, O_RDWR | O_CREAT | O_TRUNC, 0600);
-       if (fd < 0)
-               perror_msg_and_fail("open");
-       if (unlink(tmp))
-               perror_msg_and_fail("unlink");
+       int fd = create_tmpfile(O_RDWR);
 
        static const char w[] = "0123456789abcde";
        if (write(fd, w, LENGTH_OF(w)) != LENGTH_OF(w))
index 1266562eb3c91158f4d10c2007949561b4345fe0..d6be10a855473e3d078b473479355d6c1cf4fd4d 100644 (file)
@@ -9,7 +9,6 @@
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
 #include "scno.h"
 
 #if defined __NR_preadv2 && defined __NR_pwritev2
diff --git a/tests/print_ppid_tracerpid.c b/tests/print_ppid_tracerpid.c
new file mode 100644 (file)
index 0000000..ae55371
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Helper program for strace-D.test
+ *
+ * Copyright (c) 2019-2020 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+int
+main(void)
+{
+       static const char status[] = "/proc/self/status";
+       FILE *fp = fopen(status, "r");
+       if (!fp)
+               perror_msg_and_fail("fopen: %s", status);
+
+       static const char prefix1[] = "PPid:";
+       static const char prefix2[] = "TracerPid:";
+       char *line = NULL;
+       size_t n = 0;
+
+       while (getline(&line, &n, fp) > 0) {
+               if (strncmp(line, prefix1, sizeof(prefix1) - 1) == 0 ||
+                   strncmp(line, prefix2, sizeof(prefix2) - 1) == 0)
+                       fputs(line, stdout);
+       }
+
+       if (!line)
+               perror_msg_and_fail("getline");
+
+       free(line);
+       fclose(fp);
+
+       return 0;
+}
index e9d66471351ec10a72865ed3fcf4b8db828408f5..8793dfe0e635688afb5096a516c1c5a17a407cf3 100644 (file)
@@ -17,21 +17,26 @@ int
 printflags(const struct xlat *xlat, unsigned long long flags,
           const char *const dflt)
 {
-       if (flags == 0 && xlat->val == 0 && xlat->str) {
-               fputs(xlat->str, stdout);
+       if (flags == 0 && xlat->data->val == 0 && xlat->data->str) {
+               fputs(xlat->data->str, stdout);
                return 1;
        }
 
        int n;
+       size_t i = 0;
        char sep = 0;
-       for (n = 0; xlat->str; xlat++) {
-               if (xlat->val && (flags & xlat->val) == xlat->val) {
+       const struct xlat_data *xd = xlat->data;
+       for (n = 0; i < xlat->size; xd++, i++) {
+               if (!xd->str)
+                       continue;
+
+               if (xd->val && (flags & xd->val) == xd->val) {
                        if (sep)
                                putc(sep, stdout);
                        else
                                sep = '|';
-                       fputs(xlat->str, stdout);
-                       flags &= ~xlat->val;
+                       fputs(xd->str, stdout);
+                       flags &= ~xd->val;
                        n++;
                }
        }
index 216b6cace1b31b662a20f518924ed1d9a263dc4f..6dd36230a951ccf556d2ea57c51c44e9efba6812 100644 (file)
@@ -1,19 +1,16 @@
 /*
  * Force legacy printpath/umovestr using PR_SET_DUMPABLE.
  *
- * Copyright (c) 2017-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2020 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
+#include <sys/prctl.h>
 
-#ifdef HAVE_PRCTL
-# include <sys/prctl.h>
-#endif
-
-#if defined HAVE_PRCTL && defined PR_SET_DUMPABLE
+#ifdef PR_SET_DUMPABLE
 
 # include <stdio.h>
 # include <unistd.h>
@@ -46,6 +43,6 @@ main(void)
 
 #else
 
-SKIP_MAIN_UNDEFINED("HAVE_PRCTL && PR_SET_DUMPABLE")
+SKIP_MAIN_UNDEFINED("PR_SET_DUMPABLE")
 
 #endif
index be3f8d4bff69a7a0a38eafdf64aadc525c8d4c43..d0600a2e959b9c1185c3cb07fc2ce4b685ddef45 100644 (file)
@@ -1,19 +1,16 @@
 /*
  * Force legacy printpath/umovestr using PR_SET_DUMPABLE.
  *
- * Copyright (c) 2017-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2020 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
+#include <sys/prctl.h>
 
-#ifdef HAVE_PRCTL
-# include <sys/prctl.h>
-#endif
-
-#if defined HAVE_PRCTL && defined PR_SET_DUMPABLE
+#ifdef PR_SET_DUMPABLE
 
 # include <stdio.h>
 # include <unistd.h>
@@ -46,6 +43,6 @@ main(void)
 
 #else
 
-SKIP_MAIN_UNDEFINED("HAVE_PRCTL && PR_SET_DUMPABLE")
+SKIP_MAIN_UNDEFINED("PR_SET_DUMPABLE")
 
 #endif
diff --git a/tests/printxval-Xabbrev.c b/tests/printxval-Xabbrev.c
new file mode 100644 (file)
index 0000000..902a386
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_NAME(s_) s_##_abbrev
+#include "printxval.c"
diff --git a/tests/printxval-Xraw.c b/tests/printxval-Xraw.c
new file mode 100644 (file)
index 0000000..eb92a71
--- /dev/null
@@ -0,0 +1,3 @@
+#define XLAT_RAW 1
+#define XLAT_NAME(s_) s_##_raw
+#include "printxval.c"
diff --git a/tests/printxval-Xverbose.c b/tests/printxval-Xverbose.c
new file mode 100644 (file)
index 0000000..f97529e
--- /dev/null
@@ -0,0 +1,3 @@
+#define XLAT_VERBOSE 1
+#define XLAT_NAME(s_) s_##_verbose
+#include "printxval.c"
index 0cd629e4bdd76524b48df73ca5f1188a0413c0ec..19714570ca85352f6dd24c573e1d4b2c8f6df41a 100644 (file)
@@ -4,6 +4,7 @@
  * Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com>
  * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
  * Copyright (c) 2005-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 #include "xlat.h"
 #include <stdio.h>
 
-int
-printxval(const struct xlat *xlat, unsigned long long val,
-         const char *const dflt)
+#if !XLAT_RAW
+static const char *
+lookup_xlat(const struct xlat *xlat, unsigned long long val)
 {
-       for (; xlat->str; xlat++) {
-               if (xlat->val == val) {
-                       fputs(xlat->str, stdout);
-                       return 1;
+       const struct xlat_data *xd = xlat->data;
+
+       for (size_t i = 0; i < xlat->size; i++, xd++) {
+               if (!xd->str)
+                       continue;
+
+               if (xd->val == val) {
+                       return xd->str;
                }
        }
 
+       return NULL;
+}
+#endif
+
+int
+XLAT_NAME(printxval)(const struct xlat *xlat, unsigned long long val,
+                    const char *const dflt)
+{
+#if XLAT_RAW
        printf("%#llx", val);
+
+       return 1;
+#else
+       const char *str = lookup_xlat(xlat, val);
+
+# if XLAT_VERBOSE
+       printf("%#llx", val);
+       if (str || dflt)
+               printf(" /* %s */", str ?: dflt);
+# else
+       if (str) {
+               fputs(str, stdout);
+       } else {
+               printf("%#llx", val);
+               if (dflt)
+                       printf(" /* %s */", dflt);
+       }
+# endif /* XLAT_VERBOSE */
+
+       return !!str;
+#endif /* XLAT_RAW */
+}
+
+const char *
+XLAT_NAME(sprintxlat)(const char *str, unsigned long long val,
+                     const char *const dflt)
+{
+       static char buf[256];
+
+#if XLAT_RAW
+       snprintf(buf, sizeof(buf), "%#llx", val);
+#elif XLAT_VERBOSE
+       if (str || dflt)
+               snprintf(buf, sizeof(buf), "%#llx /* %s */", val, str ?: dflt);
+       else
+               snprintf(buf, sizeof(buf), "%#llx", val);
+#else
+       if (str)
+               return str;
+
        if (dflt)
-               printf(" /* %s */", dflt);
-       return 0;
+               snprintf(buf, sizeof(buf), "%#llx /* %s */", val, dflt);
+       else
+               snprintf(buf, sizeof(buf), "%#llx", val);
+#endif
+
+       return buf;
+}
+
+const char *
+XLAT_NAME(sprintxval)(const struct xlat *xlat, unsigned long long val,
+                     const char *const dflt)
+{
+#if XLAT_RAW
+       return sprintxlat(NULL, val, dflt);
+#else
+       return sprintxlat(lookup_xlat(xlat, val), val, dflt);
+#endif
 }
diff --git a/tests/prlimit64--pidns-translation.c b/tests/prlimit64--pidns-translation.c
new file mode 100644 (file)
index 0000000..3972de6
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "prlimit64.c"
diff --git a/tests/prlimit64--pidns-translation.gen.test b/tests/prlimit64--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..221f3c0
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (prlimit64--pidns-translation test_pidns -e trace=prlimit64); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -e trace=prlimit64
index 688ca75fb880bcebe2a7bf07c7bb0c08ea06200a..eb2e9631b0ee2605ac5cd0beac2685b638fcddf4 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of prlimit64 syscall.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_prlimit64
 
@@ -18,6 +19,7 @@
 # include <sys/resource.h>
 # include <unistd.h>
 
+# include "pidns.h"
 # include "xlat.h"
 # include "xlat/resources.h"
 
@@ -41,26 +43,38 @@ sprint_rlim(uint64_t lim)
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        unsigned long pid =
                (unsigned long) 0xdefaced00000000ULL | (unsigned) getpid();
+       const char *pid_str = pidns_pid2str(PT_TGID);
        uint64_t *const rlimit = tail_alloc(sizeof(*rlimit) * 2);
-       const struct xlat *xlat;
+       const struct xlat_data *xlat;
+       size_t i = 0;
+
+       for (xlat = resources->data; i < resources->size; ++xlat, ++i) {
+               if (!xlat->str)
+                       continue;
 
-       for (xlat = resources; xlat->str; ++xlat) {
                unsigned long res = 0xfacefeed00000000ULL | xlat->val;
                long rc = syscall(__NR_prlimit64, pid, res, 0, rlimit);
+               pidns_print_leader();
                if (rc)
-                       printf("prlimit64(%d, %s, NULL, %p) = %ld %s (%m)\n",
-                              (unsigned) pid, xlat->str, rlimit,
+                       printf("prlimit64(%d%s, %s, NULL, %p) ="
+                                    " %ld %s (%m)\n",
+                              (unsigned) pid, pid_str,
+                              xlat->str, rlimit,
                               rc, errno2name());
                else
-                       printf("prlimit64(%d, %s, NULL"
+                       printf("prlimit64(%d%s, %s, NULL"
                               ", {rlim_cur=%s, rlim_max=%s}) = 0\n",
-                              (unsigned) pid, xlat->str,
+                              (unsigned) pid, pid_str,
+                              xlat->str,
                               sprint_rlim(rlimit[0]),
                               sprint_rlim(rlimit[1]));
        }
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
diff --git a/tests/process_vm_readv--pidns-translation.c b/tests/process_vm_readv--pidns-translation.c
new file mode 100644 (file)
index 0000000..0db29ca
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "process_vm_readv.c"
diff --git a/tests/process_vm_readv--pidns-translation.gen.test b/tests/process_vm_readv--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..f8fc944
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (process_vm_readv--pidns-translation test_pidns -s5 -a37 -e trace=process_vm_readv); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -s5 -a37 -e trace=process_vm_readv
index 422000b8043b09d72fc9877f028f9bfb4d019911..b69551d009eb26a3375d5cb936d3d2822a001318 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -7,7 +7,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_process_vm_readv
 
index 9309135a6b50394cd8049c452a5d2925a4a355b4..343bd3620e867a8e2abdb002ee61bef17495f541 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of process_vm_readv/process_vm_writev syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -12,6 +12,7 @@
 #include <stdio.h>
 #include <unistd.h>
 #include <sys/uio.h>
+#include "pidns.h"
 
 #if OP_WR
 # define in_iovec  rmt_iovec
@@ -121,7 +122,7 @@ print_iov(const struct iovec *iov, const void *arg_ptr, long rc)
 }
 
 static void
-do_call(kernel_ulong_t pid,
+do_call(kernel_ulong_t pid, enum pid_type pid_type,
        kernel_ulong_t local_iov, const char *local_arg,
        kernel_ulong_t liovcnt,
        kernel_ulong_t remote_iov, const char *remote_arg,
@@ -135,7 +136,8 @@ do_call(kernel_ulong_t pid,
                flags);
        errstr = sprintrc(rc);
 
-       printf("%s(%d, ", OP_STR, (int) pid);
+       pidns_print_leader();
+       printf("%s(%d%s, ", OP_STR, (int) pid, pidns_pid2str(pid_type));
 
        if (pr_iov)
                pr_iov((const struct iovec *) (uintptr_t) local_iov, local_arg,
@@ -164,6 +166,8 @@ ptr_cast(void *ptr)
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        enum {
                SIZE_11 = 2,
                SIZE_12 = 3,
@@ -243,18 +247,18 @@ main(void)
        fill_memory_ex(data2_out, SIZE_2, SEGM2_BASE, SIZE_2);
 
 
-       do_call(bogus_pid, (kernel_ulong_t) (uintptr_t) ARG_STR(NULL),
+       do_call(bogus_pid, PT_NONE, (kernel_ulong_t) (uintptr_t) ARG_STR(NULL),
                bogus_iovcnt1, (kernel_ulong_t) (uintptr_t) ARG_STR(NULL),
                bogus_iovcnt2, bogus_flags, NULL);
 
-       do_call(my_pid, ptr_cast(bogus_iov + ARRAY_SIZE(bogus_iovec)),
+       do_call(my_pid, PT_TGID, ptr_cast(bogus_iov + ARRAY_SIZE(bogus_iovec)),
                "[]", 0, ptr_cast(in_iov + ARRAY_SIZE(in_iovec)), "[]",
                0, 0, NULL);
-       do_call(my_pid, ptr_cast(bogus_iov + ARRAY_SIZE(bogus_iovec)), NULL,
-               bogus_iovcnt1, ptr_cast(in_iov + ARRAY_SIZE(in_iovec)), NULL,
-               bogus_iovcnt2, 0, print_iov);
+       do_call(my_pid, PT_TGID, ptr_cast(bogus_iov + ARRAY_SIZE(bogus_iovec)),
+               NULL, bogus_iovcnt1, ptr_cast(in_iov + ARRAY_SIZE(in_iovec)),
+               NULL, bogus_iovcnt2, 0, print_iov);
 
-       do_call(my_pid, ptr_cast(bogus_iov), (char *) &bogus_arg,
+       do_call(my_pid, PT_TGID, ptr_cast(bogus_iov), (char *) &bogus_arg,
                ARRAY_SIZE(bogus_iovec), ptr_cast(rmt_iov + 2),
                (char *) &rmt_arg_cut, ARRAY_SIZE(rmt_iovec) - 2, 0, print_iov);
 
@@ -263,7 +267,7 @@ main(void)
        lcl_arg_cut.check_rc = 1;
 #endif
 
-       do_call(my_pid, ptr_cast(lcl_iov + 2), (char *) &lcl_arg_cut,
+       do_call(my_pid, PT_TGID, ptr_cast(lcl_iov + 2), (char *) &lcl_arg_cut,
                ARRAY_SIZE(lcl_iovec) - 1, ptr_cast(bogus_iov + 2),
                (char *) &bogus_arg_cut, ARRAY_SIZE(bogus_iovec) - 1, 0,
                print_iov);
@@ -273,15 +277,16 @@ main(void)
        rmt_arg_cut.addr_term = 1;
        rmt_arg_cut.count = 5;
 
-       do_call(my_pid, ptr_cast(lcl_iov + 2), (char *) &lcl_arg_cut,
+       do_call(my_pid, PT_TGID, ptr_cast(lcl_iov + 2), (char *) &lcl_arg_cut,
                ARRAY_SIZE(lcl_iovec) - 2, ptr_cast(rmt_iov + 1),
                (char *) &rmt_arg_cut, ARRAY_SIZE(rmt_iovec), 0, print_iov);
 
        /* Correct call */
-       do_call(my_pid, ptr_cast(lcl_iov), (char *) &lcl_arg,
+       do_call(my_pid, PT_TGID, ptr_cast(lcl_iov), (char *) &lcl_arg,
                ARRAY_SIZE(lcl_iovec), ptr_cast(rmt_iov), (char *) &rmt_arg,
                ARRAY_SIZE(rmt_iovec), 0, print_iov);
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
 
        return 0;
diff --git a/tests/process_vm_writev--pidns-translation.c b/tests/process_vm_writev--pidns-translation.c
new file mode 100644 (file)
index 0000000..9ba6a39
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "process_vm_writev.c"
diff --git a/tests/process_vm_writev--pidns-translation.gen.test b/tests/process_vm_writev--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..79d705c
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (process_vm_writev--pidns-translation test_pidns -s5 -a38 -e trace=process_vm_writev); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -s5 -a38 -e trace=process_vm_writev
index 848a9e91acc760ec719199cc8085bc4f7d218d9c..e7476b792f4792e090943765c7619ed1f5dccc4f 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -7,7 +7,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_process_vm_writev
 
index c8122e27ce70864afb60d5f905fbae083394d46f..5660df2be570135a6743cf7ad2714290c7b0b03a 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -16,7 +16,7 @@
 #include <stdio.h>
 #include <unistd.h>
 #include <sys/select.h>
-#include <asm/unistd.h>
+#include "scno.h"
 #include <sys/time.h>
 
 #ifdef __NR_pselect6
index 63435a76dcf8577595c74e5226574d0b850cfe60..38e7037ae08b335e9c3f5c740adfd50d1c14424a 100644 (file)
@@ -2,14 +2,14 @@
  * Check decoding of ptrace syscall.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #include <errno.h>
 #include "ptrace.h"
@@ -127,16 +127,16 @@ test_peeksiginfo(unsigned long pid, const unsigned long bad_request)
                        printf("ptrace(PTRACE_PEEKSIGINFO, %u"
                               ", {off=%llu, flags=0, nr=%u}"
                               ", [{si_signo=SIGUSR1, si_code=SI_TKILL"
-                              ", si_pid=%u, si_uid=%u}"
+                              ", si_pid=%d, si_uid=%d}"
                               ", {si_signo=SIGUSR2, si_code=SI_TKILL"
-                              ", si_pid=%u, si_uid=%u}"
+                              ", si_pid=%d, si_uid=%d}"
                               ", {si_signo=SIGALRM, si_code=SI_TKILL"
-                              ", si_pid=%u, si_uid=%u}"
+                              ", si_pid=%d, si_uid=%d}"
                               "]) = %s\n",
                               (unsigned) pid, psi->off, psi->nr,
-                              (unsigned) pid, (unsigned) uid,
-                              (unsigned) pid, (unsigned) uid,
-                              (unsigned) pid, (unsigned) uid,
+                              (int) pid, (int) uid,
+                              (int) pid, (int) uid,
+                              (int) pid, (int) uid,
                               errstr);
                }
 
@@ -307,7 +307,7 @@ main(void)
 
        do_ptrace(PTRACE_SETSIGINFO, pid, bad_request, (unsigned long) sip);
        printf("ptrace(PTRACE_SETSIGINFO, %u, %#lx, {si_signo=SIGBUS"
-              ", si_code=BUS_ADRALN, si_errno=%d, si_addr=%p}) = %s\n",
+              ", si_code=BUS_ADRALN, si_errno=%u, si_addr=%p}) = %s\n",
               (unsigned) pid, bad_request, sip->si_errno, sip->si_addr,
               errstr);
 
@@ -321,7 +321,7 @@ main(void)
 
        do_ptrace(PTRACE_SETSIGINFO, pid, bad_request, (unsigned long) sip);
        printf("ptrace(PTRACE_SETSIGINFO, %u, %#lx, {si_signo=SIGPROF"
-              ", si_code=%#x, si_errno=%d, si_pid=0, si_uid=3}) = %s\n",
+              ", si_code=%#x, si_errno=%u, si_pid=0, si_uid=3}) = %s\n",
               (unsigned) pid, bad_request, sip->si_code, sip->si_errno,
               errstr);
 
@@ -349,7 +349,7 @@ main(void)
 
        do_ptrace(PTRACE_SETSIGINFO, pid, bad_request, (unsigned long) sip);
        printf("ptrace(PTRACE_SETSIGINFO, %u, %#lx, {si_signo=SIGSYS"
-              ", si_code=SYS_SECCOMP, si_errno=%d, si_call_addr=NULL"
+              ", si_code=SYS_SECCOMP, si_errno=%u, si_call_addr=NULL"
               ", si_syscall=__NR_read, si_arch=%#x /* AUDIT_ARCH_??? */})"
               " = %s\n",
               (unsigned) pid, bad_request, sip->si_errno, sip->si_arch,
index ea29d22e815cfa05dc4fbab771837ee8fbcdae66..cb630adbc3b3135f42ed1de3f06218e94d93f583 100644 (file)
@@ -2,6 +2,7 @@
  * Check decoding of ptrace PTRACE_GET_SYSCALL_INFO request.
  *
  * Copyright (c) 2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2018-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +11,6 @@
 #include "tests.h"
 
 #include "ptrace.h"
-#include <asm/unistd.h>
 #include "scno.h"
 
 #include <errno.h>
 #include <linux/audit.h>
 
 #include "xlat.h"
+#define XLAT_MACROS_ONLY
+/* For xlat/audit_arch.h */
+# include "xlat/elf_em.h"
+#undef XLAT_MACROS_ONLY
 #include "xlat/audit_arch.h"
 
 static const char *errstr;
@@ -94,11 +98,11 @@ static const unsigned long args[][7] = {
 };
 
 static const unsigned int expected_none_size =
-       offsetof(struct ptrace_syscall_info, entry);
+       offsetof(struct_ptrace_syscall_info, entry);
 static const unsigned int expected_entry_size =
-       offsetofend(struct ptrace_syscall_info, entry.args);
+       offsetofend(struct_ptrace_syscall_info, entry.args);
 static const unsigned int expected_exit_size =
-       offsetofend(struct ptrace_syscall_info, exit.is_error);
+       offsetofend(struct_ptrace_syscall_info, exit.is_error);
 
 static unsigned long end_of_page;
 static unsigned int ptrace_stop;
@@ -115,7 +119,7 @@ test_none(void)
               pid, end_of_page, errstr);
 
        for (unsigned int size = 0;
-            size <= sizeof(struct ptrace_syscall_info); ++size) {
+            size <= sizeof(struct_ptrace_syscall_info); ++size) {
                unsigned long buf = end_of_page - size;
                memset((void *) buf, -1, size);
 
@@ -137,21 +141,21 @@ test_none(void)
                }
 
                /* copy to a local structure to avoid unaligned access */
-               struct ptrace_syscall_info info;
+               struct_ptrace_syscall_info info;
                memcpy(&info, (void *) buf,  MIN(size, expected_none_size));
 
                if (info.op != PTRACE_SYSCALL_INFO_NONE)
                        FAIL("signal stop mismatch");
                printf("{op=PTRACE_SYSCALL_INFO_NONE");
 
-               if (size < offsetofend(struct ptrace_syscall_info, arch))
+               if (size < offsetofend(struct_ptrace_syscall_info, arch))
                        goto printed_none;
                if (!info.arch)
                        FAIL("signal stop mismatch");
                printf(", arch=");
                printxval(audit_arch, info.arch, "AUDIT_ARCH_???");
 
-               if (size < offsetofend(struct ptrace_syscall_info,
+               if (size < offsetofend(struct_ptrace_syscall_info,
                                       instruction_pointer))
                        goto printed_none;
                if (!info.instruction_pointer)
@@ -159,7 +163,7 @@ test_none(void)
                printf(", instruction_pointer=%#llx",
                       (unsigned long long) info.instruction_pointer);
 
-               if (size < offsetofend(struct ptrace_syscall_info,
+               if (size < offsetofend(struct_ptrace_syscall_info,
                                       stack_pointer))
                        goto printed_none;
                if (!info.stack_pointer)
@@ -178,7 +182,7 @@ static void
 test_entry(void)
 {
        for (unsigned int size = 0;
-            size <= sizeof(struct ptrace_syscall_info); ++size) {
+            size <= sizeof(struct_ptrace_syscall_info); ++size) {
                unsigned long buf = end_of_page - size;
                memset((void *) buf, -1, size);
 
@@ -197,21 +201,21 @@ test_entry(void)
                }
 
                /* copy to a local structure to avoid unaligned access */
-               struct ptrace_syscall_info info;
+               struct_ptrace_syscall_info info;
                memcpy(&info, (void *) buf,  MIN(size, expected_entry_size));
 
                if (info.op != PTRACE_SYSCALL_INFO_ENTRY)
                        FAIL("#%d: entry stop mismatch", ptrace_stop);
                printf("{op=PTRACE_SYSCALL_INFO_ENTRY");
 
-               if (size < offsetofend(struct ptrace_syscall_info, arch))
+               if (size < offsetofend(struct_ptrace_syscall_info, arch))
                        goto printed_entry_common;
                if (!info.arch)
                        FAIL("#%d: entry stop mismatch", ptrace_stop);
                printf(", arch=");
                printxval(audit_arch, info.arch, "AUDIT_ARCH_???");
 
-               if (size < offsetofend(struct ptrace_syscall_info,
+               if (size < offsetofend(struct_ptrace_syscall_info,
                                       instruction_pointer))
                        goto printed_entry_common;
                if (!info.instruction_pointer)
@@ -219,7 +223,7 @@ test_entry(void)
                printf(", instruction_pointer=%#llx",
                       (unsigned long long) info.instruction_pointer);
 
-               if (size < offsetofend(struct ptrace_syscall_info,
+               if (size < offsetofend(struct_ptrace_syscall_info,
                                       stack_pointer))
                        goto printed_entry_common;
                if (!info.stack_pointer)
@@ -227,7 +231,7 @@ test_entry(void)
                printf(", stack_pointer=%#llx",
                       (unsigned long long) info.stack_pointer);
 
-               if (size < offsetofend(struct ptrace_syscall_info, entry.nr))
+               if (size < offsetofend(struct_ptrace_syscall_info, entry.nr))
                        goto printed_entry_common;
                const unsigned long *exp_args = args[ptrace_stop / 2];
                if (info.entry.nr != exp_args[0])
@@ -236,14 +240,19 @@ test_entry(void)
 
                for (unsigned int i = 0; i < ARRAY_SIZE(info.entry.args); ++i) {
                        const unsigned int i_size =
-                               offsetofend(struct ptrace_syscall_info,
+                               offsetofend(struct_ptrace_syscall_info,
                                            entry.args[i]);
                        if (size < i_size) {
                                if (i)
                                        break;
                                goto printed_entry_nr;
                        }
-                       if (info.entry.args[i] != exp_args[i + 1])
+#if SIZEOF_KERNEL_LONG_T > SIZEOF_LONG
+# define CAST (unsigned long)
+#else
+# define CAST
+#endif
+                       if (CAST info.entry.args[i] != exp_args[i + 1])
                                FAIL("#%d: entry stop mismatch", ptrace_stop);
                        printf("%s%#llx", (i ? ", " : ", arg=["),
                               (unsigned long long) info.entry.args[i]);
@@ -262,7 +271,7 @@ static void
 test_exit(void)
 {
        for (unsigned int size = 0;
-            size <= sizeof(struct ptrace_syscall_info); ++size) {
+            size <= sizeof(struct_ptrace_syscall_info); ++size) {
                unsigned long buf = end_of_page - size;
                memset((void *) buf, -1, size);
 
@@ -281,21 +290,21 @@ test_exit(void)
                }
 
                /* copy to a local structure to avoid unaligned access */
-               struct ptrace_syscall_info info;
+               struct_ptrace_syscall_info info;
                memcpy(&info, (void *) buf,  MIN(size, expected_exit_size));
 
                if (info.op != PTRACE_SYSCALL_INFO_EXIT)
                        FAIL("#%d: exit stop mismatch", ptrace_stop);
                printf("{op=PTRACE_SYSCALL_INFO_EXIT");
 
-               if (size < offsetofend(struct ptrace_syscall_info, arch))
+               if (size < offsetofend(struct_ptrace_syscall_info, arch))
                        goto printed_exit_common;
                if (!info.arch)
                        FAIL("#%d: exit stop mismatch", ptrace_stop);
                printf(", arch=");
                printxval(audit_arch, info.arch, "AUDIT_ARCH_???");
 
-               if (size < offsetofend(struct ptrace_syscall_info,
+               if (size < offsetofend(struct_ptrace_syscall_info,
                                       instruction_pointer))
                        goto printed_exit_common;
                if (!info.instruction_pointer)
@@ -303,7 +312,7 @@ test_exit(void)
                printf(", instruction_pointer=%#llx",
                       (unsigned long long) info.instruction_pointer);
 
-               if (size < offsetofend(struct ptrace_syscall_info,
+               if (size < offsetofend(struct_ptrace_syscall_info,
                                       stack_pointer))
                        goto printed_exit_common;
                if (!info.stack_pointer)
@@ -320,7 +329,7 @@ test_exit(void)
                        { 0, pid, NULL }                /* gettid */
                }, *exp_param = &exit_param[ptrace_stop / 2 - 1];
 
-               if (size < offsetofend(struct ptrace_syscall_info, exit.rval))
+               if (size < offsetofend(struct_ptrace_syscall_info, exit.rval))
                        goto printed_exit_common;
                if (info.exit.rval != exp_param->rval)
                        FAIL("#%d: exit stop mismatch", ptrace_stop);
index cc8445022663c55d4b3c266581158b1aca4c2b3e..e2773a5c53177444da32a1129adefeea315ae9d4 100644 (file)
@@ -11,10 +11,6 @@ PURE_EXECUTABLES = \
   aio_pgetevents \
   alarm \
   bpf \
-  bpf-obj_get_info_by_fd \
-  bpf-obj_get_info_by_fd-prog \
-  bpf-obj_get_info_by_fd-prog-v \
-  bpf-obj_get_info_by_fd-v \
   bpf-v \
   brk \
   btrfs \
@@ -26,13 +22,34 @@ PURE_EXECUTABLES = \
   clock_adjtime \
   clock_nanosleep \
   clock_xettime \
+  clone-flags \
+  clone3 \
+  clone3-Xabbrev \
+  clone3-Xraw \
+  clone3-Xverbose \
+  close_range \
+  close_range-P \
+  close_range-y \
+  close_range-yy \
   copy_file_range \
   creat \
   delete_module \
+  dev--decode-fds-dev \
+  dev--decode-fds-path \
+  dev--decode-fds-socket \
   dev-yy \
   dup \
+  dup-P \
+  dup-y \
+  dup-yy \
   dup2 \
+  dup2-P \
+  dup2-y \
+  dup2-yy \
   dup3 \
+  dup3-P \
+  dup3-y \
+  dup3-yy \
   epoll_create \
   epoll_create1 \
   epoll_ctl \
@@ -43,6 +60,13 @@ PURE_EXECUTABLES = \
   execve \
   execveat \
   faccessat \
+  faccessat-P \
+  faccessat-y \
+  faccessat-yy \
+  faccessat2 \
+  faccessat2-P \
+  faccessat2-y \
+  faccessat2-yy \
   fadvise64 \
   fadvise64_64 \
   fallocate \
@@ -65,6 +89,12 @@ PURE_EXECUTABLES = \
   file_ioctl \
   finit_module \
   flock \
+  fsconfig \
+  fsconfig-P \
+  fsmount \
+  fsopen \
+  fspick \
+  fspick-P \
   fstat \
   fstat-Xabbrev \
   fstat-Xraw \
@@ -85,7 +115,9 @@ PURE_EXECUTABLES = \
   getcpu \
   getcwd \
   getdents \
+  getdents-v \
   getdents64 \
+  getdents64-v \
   getegid \
   getegid32 \
   geteuid \
@@ -109,12 +141,17 @@ PURE_EXECUTABLES = \
   getsockname \
   getuid \
   getuid32 \
-  getxxid \
+  getxgid \
+  getxpid \
+  getxuid \
   group_req \
   inet-cmsg \
   init_module \
   inotify \
+  inotify_init \
+  inotify_init-y \
   inotify_init1 \
+  inotify_init1-y \
   io_uring_enter \
   io_uring_register \
   io_uring_setup \
@@ -122,6 +159,21 @@ PURE_EXECUTABLES = \
   ioctl_block \
   ioctl_dm \
   ioctl_evdev \
+  ioctl_evdev-Xabbrev \
+  ioctl_evdev-Xraw \
+  ioctl_evdev-Xverbose \
+  ioctl_evdev-v \
+  ioctl_evdev-v-Xabbrev \
+  ioctl_evdev-v-Xraw \
+  ioctl_evdev-v-Xverbose \
+  ioctl_hdio \
+  ioctl_hdio-Xabbrev \
+  ioctl_hdio-Xraw \
+  ioctl_hdio-Xverbose \
+  ioctl_hdio-v \
+  ioctl_hdio-v-Xabbrev \
+  ioctl_hdio-v-Xraw \
+  ioctl_hdio-v-Xverbose \
   ioctl_inotify \
   ioctl_kvm_run \
   ioctl_kvm_run-v \
@@ -137,8 +189,17 @@ PURE_EXECUTABLES = \
   ioctl_sg_io_v3 \
   ioctl_sg_io_v4 \
   ioctl_sock_gifconf \
+  ioctl_tee \
   ioctl_uffdio \
   ioctl_v4l2 \
+  ioctl_v4l2-Xabbrev \
+  ioctl_v4l2-Xraw \
+  ioctl_v4l2-Xverbose \
+  ioctl_v4l2-v \
+  ioctl_v4l2-v-Xabbrev \
+  ioctl_v4l2-v-Xraw \
+  ioctl_v4l2-v-Xverbose \
+  ioctl_watchdog \
   ioperm \
   iopl \
   ioprio \
@@ -187,7 +248,12 @@ PURE_EXECUTABLES = \
   lstat \
   lstat64 \
   madvise \
+  maybe_switch_current_tcp \
+  maybe_switch_current_tcp--quiet-thread-execve \
   mbind \
+  mbind-Xabbrev \
+  mbind-Xraw \
+  mbind-Xverbose \
   membarrier \
   memfd_create \
   memfd_create-Xabbrev \
@@ -217,6 +283,8 @@ PURE_EXECUTABLES = \
   mount-Xabbrev \
   mount-Xraw \
   mount-Xverbose \
+  move_mount \
+  move_mount-P \
   move_pages \
   move_pages-Xabbrev \
   move_pages-Xraw \
@@ -229,6 +297,10 @@ PURE_EXECUTABLES = \
   msg_name \
   munlockall \
   nanosleep \
+  net--decode-fds-dev-netlink \
+  net--decode-fds-none-netlink \
+  net--decode-fds-path-netlink \
+  net--decode-fds-socket-netlink \
   net-icmp_filter \
   net-packet_mreq \
   net-packet_mreq-Xabbrev \
@@ -308,7 +380,19 @@ PURE_EXECUTABLES = \
   oldselect-efault \
   oldstat \
   open \
+  open_tree \
+  open_tree-P \
   openat \
+  openat2 \
+  openat2-Xabbrev \
+  openat2-Xraw \
+  openat2-Xverbose \
+  openat2-v \
+  openat2-v-y \
+  openat2-v-y-Xabbrev \
+  openat2-v-y-Xraw \
+  openat2-v-y-Xverbose \
+  openat2-y \
   osf_utimes \
   pause \
   perf_event_open \
@@ -316,6 +400,16 @@ PURE_EXECUTABLES = \
   personality-Xabbrev \
   personality-Xraw \
   personality-Xverbose \
+  pidfd_getfd \
+  pidfd_getfd-y \
+  pidfd_getfd-yy \
+  pidfd_open \
+  pidfd_open--decode-fd-path \
+  pidfd_open--decode-fd-pidfd \
+  pidfd_open--decode-fd-socket \
+  pidfd_open-P \
+  pidfd_open-y \
+  pidfd_open-yy \
   pidfd_send_signal \
   pipe \
   pipe2 \
@@ -323,9 +417,7 @@ PURE_EXECUTABLES = \
   pkey_free \
   pkey_mprotect \
   poll \
-  poll-P \
   ppoll \
-  ppoll-P \
   prctl-arg2-intptr \
   prctl-dumpable \
   prctl-name \
@@ -367,7 +459,9 @@ PURE_EXECUTABLES = \
   readlinkat \
   readv \
   reboot \
+  recv-MSG_TRUNC \
   recvfrom \
+  recvfrom-MSG_TRUNC \
   recvmmsg-timeout \
   recvmsg \
   remap_file_pages \
@@ -405,9 +499,14 @@ PURE_EXECUTABLES = \
   seccomp_get_action_avail \
   select \
   semop \
+  semop-indirect \
+  semtimedop \
   sendfile \
   sendfile64 \
   set_mempolicy \
+  set_mempolicy-Xabbrev \
+  set_mempolicy-Xraw \
+  set_mempolicy-Xverbose \
   setdomainname \
   setfsgid \
   setfsgid32 \
@@ -465,7 +564,23 @@ PURE_EXECUTABLES = \
   stat64 \
   statfs \
   statfs64 \
+  status-all \
+  status-failed \
+  status-failed-long \
+  status-failed-status \
+  status-none \
+  status-none-f \
+  status-successful \
+  status-successful-long \
+  status-successful-status \
+  status-unfinished \
   statx \
+  strace--strings-in-hex \
+  strace--strings-in-hex-all \
+  strace--strings-in-hex-non-ascii \
+  strace-n \
+  strace-x \
+  strace-xx \
   swap \
   sxetmask \
   symlink \
@@ -476,12 +591,14 @@ PURE_EXECUTABLES = \
   sysinfo \
   syslog \
   tee \
+  tgkill \
   time \
   timer_create \
   timer_xettime \
   timerfd_xettime \
   times \
   times-fail \
+  tkill \
   truncate \
   truncate64 \
   ugetrlimit \
@@ -494,6 +611,8 @@ PURE_EXECUTABLES = \
   umovestr-illptr \
   umovestr2 \
   umovestr3 \
+  umovestr_cached \
+  umovestr_cached_adjacent \
   uname \
   unlink \
   unlinkat \
index 372252095ff63739c5d08f3a06a7dbc06c556c94..7d0f8495d370170964a3d053ad0083f3df643919 100755 (executable)
@@ -1,6 +1,6 @@
 # Executables without side effects.
 #
-# Copyright (c) 2017-2019 The strace developers.
+# Copyright (c) 2017-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -16,10 +16,6 @@ aio
 aio_pgetevents
 alarm
 bpf
-bpf-obj_get_info_by_fd
-bpf-obj_get_info_by_fd-prog
-bpf-obj_get_info_by_fd-prog-v
-bpf-obj_get_info_by_fd-v
 bpf-v
 brk
 btrfs
@@ -31,13 +27,34 @@ chroot
 clock_adjtime
 clock_nanosleep
 clock_xettime
+clone-flags
+clone3
+clone3-Xabbrev
+clone3-Xraw
+clone3-Xverbose
+close_range
+close_range-P
+close_range-y
+close_range-yy
 copy_file_range
 creat
 delete_module
+dev--decode-fds-dev
+dev--decode-fds-path
+dev--decode-fds-socket
 dev-yy
 dup
+dup-P
+dup-y
+dup-yy
 dup2
+dup2-P
+dup2-y
+dup2-yy
 dup3
+dup3-P
+dup3-y
+dup3-yy
 epoll_create
 epoll_create1
 epoll_ctl
@@ -48,6 +65,13 @@ eventfd
 execve
 execveat
 faccessat
+faccessat-P
+faccessat-y
+faccessat-yy
+faccessat2
+faccessat2-P
+faccessat2-y
+faccessat2-yy
 fadvise64
 fadvise64_64
 fallocate
@@ -70,6 +94,12 @@ file_handle
 file_ioctl
 finit_module
 flock
+fsconfig
+fsconfig-P
+fsmount
+fsopen
+fspick
+fspick-P
 fstat
 fstat-Xabbrev
 fstat-Xraw
@@ -90,7 +120,9 @@ get_mempolicy
 getcpu
 getcwd
 getdents
+getdents-v
 getdents64
+getdents64-v
 getegid
 getegid32
 geteuid
@@ -114,12 +146,17 @@ getsid
 getsockname
 getuid
 getuid32
-getxxid
+getxgid
+getxpid
+getxuid
 group_req
 inet-cmsg
 init_module
 inotify
+inotify_init
+inotify_init-y
 inotify_init1
+inotify_init1-y
 io_uring_enter
 io_uring_register
 io_uring_setup
@@ -127,6 +164,21 @@ ioctl
 ioctl_block
 ioctl_dm
 ioctl_evdev
+ioctl_evdev-Xabbrev
+ioctl_evdev-Xraw
+ioctl_evdev-Xverbose
+ioctl_evdev-v
+ioctl_evdev-v-Xabbrev
+ioctl_evdev-v-Xraw
+ioctl_evdev-v-Xverbose
+ioctl_hdio
+ioctl_hdio-Xabbrev
+ioctl_hdio-Xraw
+ioctl_hdio-Xverbose
+ioctl_hdio-v
+ioctl_hdio-v-Xabbrev
+ioctl_hdio-v-Xraw
+ioctl_hdio-v-Xverbose
 ioctl_inotify
 ioctl_kvm_run
 ioctl_kvm_run-v
@@ -142,8 +194,17 @@ ioctl_scsi
 ioctl_sg_io_v3
 ioctl_sg_io_v4
 ioctl_sock_gifconf
+ioctl_tee
 ioctl_uffdio
 ioctl_v4l2
+ioctl_v4l2-Xabbrev
+ioctl_v4l2-Xraw
+ioctl_v4l2-Xverbose
+ioctl_v4l2-v
+ioctl_v4l2-v-Xabbrev
+ioctl_v4l2-v-Xraw
+ioctl_v4l2-v-Xverbose
+ioctl_watchdog
 ioperm
 iopl
 ioprio
@@ -192,7 +253,12 @@ lseek
 lstat
 lstat64
 madvise
+maybe_switch_current_tcp
+maybe_switch_current_tcp--quiet-thread-execve
 mbind
+mbind-Xabbrev
+mbind-Xraw
+mbind-Xverbose
 membarrier
 memfd_create
 memfd_create-Xabbrev
@@ -222,6 +288,8 @@ mount
 mount-Xabbrev
 mount-Xraw
 mount-Xverbose
+move_mount
+move_mount-P
 move_pages
 move_pages-Xabbrev
 move_pages-Xraw
@@ -234,6 +302,10 @@ msg_control
 msg_name
 munlockall
 nanosleep
+net--decode-fds-dev-netlink
+net--decode-fds-none-netlink
+net--decode-fds-path-netlink
+net--decode-fds-socket-netlink
 net-icmp_filter
 net-packet_mreq
 net-packet_mreq-Xabbrev
@@ -313,7 +385,19 @@ oldselect
 oldselect-efault
 oldstat
 open
+open_tree
+open_tree-P
 openat
+openat2
+openat2-Xabbrev
+openat2-Xraw
+openat2-Xverbose
+openat2-v
+openat2-v-y
+openat2-v-y-Xabbrev
+openat2-v-y-Xraw
+openat2-v-y-Xverbose
+openat2-y
 osf_utimes
 pause
 perf_event_open
@@ -321,6 +405,16 @@ personality
 personality-Xabbrev
 personality-Xraw
 personality-Xverbose
+pidfd_getfd
+pidfd_getfd-y
+pidfd_getfd-yy
+pidfd_open
+pidfd_open--decode-fd-path
+pidfd_open--decode-fd-pidfd
+pidfd_open--decode-fd-socket
+pidfd_open-P
+pidfd_open-y
+pidfd_open-yy
 pidfd_send_signal
 pipe
 pipe2
@@ -328,9 +422,7 @@ pkey_alloc
 pkey_free
 pkey_mprotect
 poll
-poll-P
 ppoll
-ppoll-P
 prctl-arg2-intptr
 prctl-dumpable
 prctl-name
@@ -372,7 +464,9 @@ readlink
 readlinkat
 readv
 reboot
+recv-MSG_TRUNC
 recvfrom
+recvfrom-MSG_TRUNC
 recvmmsg-timeout
 recvmsg
 remap_file_pages
@@ -410,9 +504,14 @@ seccomp-filter
 seccomp_get_action_avail
 select
 semop
+semop-indirect
+semtimedop
 sendfile
 sendfile64
 set_mempolicy
+set_mempolicy-Xabbrev
+set_mempolicy-Xraw
+set_mempolicy-Xverbose
 setdomainname
 setfsgid
 setfsgid32
@@ -470,7 +569,23 @@ stat
 stat64
 statfs
 statfs64
+status-all
+status-failed
+status-failed-long
+status-failed-status
+status-none
+status-none-f
+status-successful
+status-successful-long
+status-successful-status
+status-unfinished
 statx
+strace--strings-in-hex
+strace--strings-in-hex-all
+strace--strings-in-hex-non-ascii
+strace-n
+strace-x
+strace-xx
 swap
 sxetmask
 symlink
@@ -481,12 +596,14 @@ sync_file_range2
 sysinfo
 syslog
 tee
+tgkill
 time
 timer_create
 timer_xettime
 timerfd_xettime
 times
 times-fail
+tkill
 truncate
 truncate64
 ugetrlimit
@@ -499,6 +616,8 @@ umovestr
 umovestr-illptr
 umovestr2
 umovestr3
+umovestr_cached
+umovestr_cached_adjacent
 uname
 unlink
 unlinkat
index c4fd27bf13bd0474b071bea8cb7a8793f27dd5ee..fe5eca5b9dc29b3c4d6de3a819c63ae2205466da 100755 (executable)
@@ -3,6 +3,7 @@
 # Check -e fault= syntax.
 #
 # Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2017-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -72,6 +73,27 @@ for arg in chdir:42 \!chdir:42 \
           chdir:syscall=-42 \
           chdir:syscall=42 \
           chdir:syscall=gettid:syscall=gettid \
+          chdir:when=. \
+          chdir:when=.+ \
+          chdir:when=..+ \
+          chdir:when=+ \
+          chdir:when=++ \
+          chdir:when=10. \
+          chdir:when=11.12 \
+          chdir:when=13.14+ \
+          chdir:when=15.. \
+          chdir:when=16... \
+          chdir:when=17...18 \
+          chdir:when=.19 \
+          chdir:when=..20 \
+          chdir:when=..21+ \
+          chdir:when=..22+3 \
+          chdir:when=24..23 \
+          chdir:when=25..26+0 \
+          chdir:when=27..65535 \
+          chdir:when=28..65535+ \
+          chdir:when=65535..65535 \
+          chdir:when=65535..65535+ \
           ; do
        $STRACE -e fault="$arg" true 2> "$LOG" &&
                fail_with "$arg"
index 63bbade0b9097e762c9ae2801add7f5be7ecfc07..580d29135c1ae516c9ce011762227f3d46ebafb5 100644 (file)
@@ -2,7 +2,7 @@
  * Check that fault injection works properly.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -29,7 +29,7 @@ static int out_fd;
 #define DEFAULT_ERRNO ENOSYS
 
 static const char *errstr;
-static int is_raw, err, first, step, iter, try;
+static int is_raw, err, first, last, step, iter, try;
 
 static void
 invoke(int fail)
@@ -99,7 +99,7 @@ open_file(const char *prefix, int proc)
 int
 main(int argc, char *argv[])
 {
-       assert(argc == 11);
+       assert(argc == 12);
 
        is_raw = !strcmp("raw", argv[1]);
 
@@ -120,13 +120,14 @@ main(int argc, char *argv[])
        errstr = errno2name();
 
        first = atoi(argv[3]);
-       step = atoi(argv[4]);
-       iter = atoi(argv[5]);
-       int num_procs = atoi(argv[6]);
-       char *exp_prefix = argv[7];
-       char *got_prefix = argv[8];
-       char *out_prefix = argv[9];
-       char *pid_prefix = argv[10];
+       last = atoi(argv[4]);
+       step = atoi(argv[5]);
+       iter = atoi(argv[6]);
+       int num_procs = atoi(argv[7]);
+       char *exp_prefix = argv[8];
+       char *got_prefix = argv[9];
+       char *out_prefix = argv[10];
+       char *pid_prefix = argv[11];
 
        assert(first > 0);
        assert(step >= 0);
@@ -164,8 +165,10 @@ main(int argc, char *argv[])
                int i;
                for (i = 1; i <= iter; ++i) {
                        int fail = 0;
-                       if (first > 0) {
+                       if (last != 0) {
                                --first;
+                               if (last != -1)
+                                       --last;
                                if (first == 0) {
                                        fail = 1;
                                        first = step;
index 497e35ea1533eca04c10ab1bbf54ce82e6d4d0f4..f054ed4920ce1b6b59267df4a60ea2c46df9cf23 100755 (executable)
@@ -3,7 +3,7 @@
 # Check that fault injection works properly.
 #
 # Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -22,24 +22,32 @@ N=100
 
 check_fault_injection()
 {
-       local trace fault err first step procs extra
+       local trace fault err first last step procs extra
        trace=$1; shift
        fault=$1; shift
        err=$1; shift
        first=$1; shift
+       last=$1; shift
        step=$1; shift
        procs=$1; shift
        extra="$*"
 
        local when=
-       if [ -z "$first$step" ]; then
+       if [ -z "$first$last$step" ]; then
                first=1
+               last=-1
                step=1
+       elif [ -z "$last" ]; then
+               case "$step" in
+                       '') when=":when=$first"; step=1; last=$first ;;
+                       +) when=":when=$first+"; step=1; last=-1 ;;
+                       *) when=":when=$first+$step"; last=-1; ;;
+               esac
        else
                case "$step" in
-                       '') when=":when=$first"; step=0 ;;
-                       +) when=":when=$first+"; step=1 ;;
-                       *) when=":when=$first+$step" ;;
+                       '') when=":when=${first}..${last}"; step=1 ;;
+                       +) when=":when=${first}..${last}+"; step=1 ;;
+                       *) when=":when=${first}..${last}+${step}" ;;
                esac
        fi
 
@@ -63,7 +71,7 @@ check_fault_injection()
 
        run_strace -a11 -ff -e trace=$trace \
                "$@" -e fault=$fault$when$error$suffix $extra \
-               ../$NAME $raw "$err" "$first" "$step" $N \
+               ../$NAME $raw "$err" "$first" "$last" "$step" $N \
                "$procs" "$outexp" "$outgot" "$outout" "$outpid"
 
        for i in $(seq 0 $((procs - 1)) )
@@ -78,19 +86,37 @@ check_fault_injection()
 for err in '' ENOSYS 22 einval; do
        for fault in writev desc,51; do
                check_fault_injection \
-                       writev $fault "$err" '' '' 1 -efault=chdir
+                       writev $fault "$err" '' '' '' 1 -efault=chdir
                check_fault_injection \
-                       writev $fault "$err" '' '' 1 -efault=chdir -efault=none
+                       writev $fault "$err" '' '' '' 1 -efault=chdir -efault=none
                for F in 1 2 3 5 7 11; do
                        check_fault_injection \
-                               writev $fault "$err" $F '' 1
+                               writev $fault "$err" $F '' '' 1
                        check_fault_injection \
-                               writev $fault "$err" $F + 1
+                               writev $fault "$err" $F '' + 1
+
+                       for L in 1 2 3 5 7 11; do
+                               [ "$L" -ge "$F" ] ||
+                                       continue
+                               check_fault_injection \
+                                       writev $fault "$err" $F $L '' 1
+                               check_fault_injection \
+                                       writev $fault "$err" $F $L + 1
+                       done
+
                        for S in 1 2 3 5 7 11; do
                                check_fault_injection \
-                                       writev $fault "$err" $F $S 1
+                                       writev $fault "$err" $F '' $S 1
                                check_fault_injection \
-                                       writev $fault "$err" $F $S 4
+                                       writev $fault "$err" $F '' $S 4
+                               for L in 1 2 3 5 7 11; do
+                                       [ "$L" -ge "$F" ] ||
+                                               continue
+                                       check_fault_injection \
+                                               writev $fault "$err" $F $L $S 1
+                                       check_fault_injection \
+                                               writev $fault "$err" $F $L $S 4
+                               done
                        done
                done
        done
index 4c89d78a3f920053c46eaaf99615118a1f312842..a9a8afc80764549e97d057f7aa8e75304b5994c2 100644 (file)
@@ -2,6 +2,7 @@
  * Check fault injection along with signal injection.
  *
  * Copyright (c) 2017-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -11,7 +12,7 @@
 #include <signal.h>
 #include <unistd.h>
 #include <sys/stat.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 static struct stat before, after;
 
index 16419a4939c88c3569c2a069feca187292b7c56e..1e657a734dd8d6e196ddb6d0ec079f08771963d6 100644 (file)
@@ -2,14 +2,14 @@
  * Check success injection.
  *
  * Copyright (c) 2017 Elvira Khabirova <lineprinter0@gmail.com>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_chdir
 
index c09b8322f8d9b1d73104f62ceae26a4d7c870486..03bc0331e8e91b2bae4f45747307298e2c0b6d5c 100644 (file)
@@ -2,6 +2,7 @@
  * Check that signal injection works properly.
  *
  * Copyright (c) 2017-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +11,7 @@
 #include "tests.h"
 #include <signal.h>
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 static void
 handler(int sig)
index 53245345e0e753e33234ca812eccd1b3eef329e3..c513fe12ec736ed612d1330a03b7451e240aa879 100755 (executable)
@@ -3,6 +3,7 @@
 # Check -e inject= syntax.
 #
 # Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2017-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -88,6 +89,27 @@ for arg in 42 chdir \
           chdir:syscall=-42 \
           chdir:syscall=42 \
           chdir:syscall=gettid:syscall=gettid \
+          chdir:when=. \
+          chdir:when=.+ \
+          chdir:when=..+ \
+          chdir:when=+ \
+          chdir:when=++ \
+          chdir:when=10. \
+          chdir:when=11.12 \
+          chdir:when=13.14+ \
+          chdir:when=15.. \
+          chdir:when=16... \
+          chdir:when=17...18 \
+          chdir:when=.19 \
+          chdir:when=..20 \
+          chdir:when=..21+ \
+          chdir:when=..22+3 \
+          chdir:when=24..23 \
+          chdir:when=25..26+0 \
+          chdir:when=27..65535 \
+          chdir:when=28..65535+ \
+          chdir:when=65535..65535 \
+          chdir:when=65535..65535+ \
           ; do
        $STRACE -e inject="$arg" true 2> "$LOG" &&
                fail_with "$arg"
index 8fd2b69d6b7adf6d49cb50b6925f4659b4f0cbd7..aab6a9065f4ce876e42d18bab04486c912fae41e 100755 (executable)
@@ -3,7 +3,7 @@
 # Check how strace -e signal=set works.
 #
 # Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -16,8 +16,12 @@ test_one_sig()
        sigs="$1"; shift
 
        run_prog "../$NAME" "$@" > /dev/null
+
        run_strace -e trace=none -e signal="$sigs" "../$NAME" "$@" > "$EXP"
        match_diff "$LOG" "$EXP"
+
+       run_strace --trace=none --signal="$sigs" "../$NAME" "$@" > "$EXP"
+       match_diff "$LOG" "$EXP"
 }
 
 test_sigs()
@@ -86,6 +90,11 @@ for arg in ' ' invalid_signal_name SIG -1 256 1-1 \
                fail_with "$arg"
        LC_ALL=C grep -F 'invalid signal' < "$LOG" > /dev/null ||
                fail_with "$arg"
+
+       $STRACE --signal="$arg" true 2> "$LOG" &&
+               fail_with "$arg"
+       LC_ALL=C grep -F 'invalid signal' < "$LOG" > /dev/null ||
+               fail_with "$arg"
 done
 
 exit 0
index 945fc8c72997e530513701b725e7c98347872e5f..a2882ba4dc3d218902a5cb7989c9206ac1de9276 100755 (executable)
@@ -3,7 +3,7 @@
 # Check how strace -e abbrev=set, -e raw=set, -e trace=set,
 # and -e verbose=set work.
 #
-# Copyright (c) 2014-2018 The strace developers.
+# Copyright (c) 2014-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -28,6 +28,16 @@ check_output_mismatch()
        }
 }
 
+check_execve_output_mismatch()
+{
+       local what how
+       what="$1"; shift
+       how="$1"; shift
+
+       check_output_mismatch "$@" -e "$what=$how" -e execve
+       check_output_mismatch "$@" "--$what=$how" --trace=execve
+}
+
 check_output_mismatch "$pattern_abbrev_verbose" -e execve
 LC_ALL=C grep -v -x "$pattern_abbrev_verbose" "$LOG" |
 LC_ALL=C grep '^[[:alnum:]_]*(' > /dev/null &&
@@ -47,22 +57,16 @@ LC_ALL=C grep '^[[:alnum:]_]*(' "$LOG" > /dev/null &&
 
 for a in execve \!chdir /. all \!none \
         file process \!desc \!ipc \!memory \!network \!signal; do
-       check_output_mismatch \
-               "$pattern_abbrev_verbose" -e abbrev="$a" -e execve
-       check_output_mismatch \
-               "$pattern_raw" -a22 -e raw="$a" -e execve
-       check_output_mismatch \
-               "$pattern_abbrev_verbose" -e verbose="$a" -e execve
+       check_execve_output_mismatch abbrev "$a" "$pattern_abbrev_verbose"
+       check_execve_output_mismatch raw "$a" "$pattern_raw"
+       check_execve_output_mismatch verbose "$a" "$pattern_abbrev_verbose"
 done
 
 for a in \!execve chdir 42 \!all none \
         \!file \!process desc ipc memory network signal; do
-       check_output_mismatch \
-               "$pattern_nonabbrev_verbose" -e abbrev="$a" -e execve
-       check_output_mismatch \
-               "$pattern_abbrev_verbose" -e raw="$a" -e execve
-       check_output_mismatch \
-               "$pattern_nonverbose" -a31 -e verbose="$a" -e execve
+       check_execve_output_mismatch abbrev "$a" "$pattern_nonabbrev_verbose"
+       check_execve_output_mismatch raw "$a" "$pattern_abbrev_verbose"
+       check_execve_output_mismatch verbose "$a" "$pattern_nonverbose" --columns=31
 done
 
 exit 0
index d57314fc7672877a8b15a5b75566f781bcd374bf..e2677f58d8f514f72375beeed816ae2cc91b20f5 100644 (file)
@@ -2,7 +2,7 @@
 #
 # Common code for per-personality qualification tests
 #
-# Copyright (c) 2018 The strace developers.
+# Copyright (c) 2018-2019 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -25,7 +25,7 @@ x86_64)
 x32)
        supported_pers='x32 32'
        ;;
-aarch64|powerpc64|riscv|s390x|sparc64|tile)
+aarch64|powerpc64|s390x|sparc64|tile)
        supported_pers='64 32'
        ;;
 *)
index 1fae566de07f4b929167ed5d2ca27869ef4777ea..0708e2a301bc0c73a34374b77b349a3c07c077e3 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -11,7 +11,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined(__NR_quotactl) && \
        (defined(HAVE_LINUX_QUOTA_H) || defined(HAVE_SYS_QUOTA_H)) && \
index 3a9952766ef6e45d3b4f784e3653dcc5d4ad9e20..fd45557997af3254588e9618b0031f3dacb511a0 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -11,7 +11,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined(__NR_quotactl) && \
        (defined(HAVE_LINUX_QUOTA_H) || defined(HAVE_SYS_QUOTA_H))
index 0217670b96a7510a0e693cbc79fb32c97556a1da..27df009d14aaa547b3b9d16e14f18a212d655af1 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding and dumping of read and write syscalls.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2019 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -14,7 +14,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 static void
 dump_str_ex(const char *str, const unsigned int len, const int idx_w)
@@ -153,9 +153,17 @@ main(void)
        skip_if_unavailable("/proc/self/fd/");
 
        static const char tmp[] = "read-write-tmpfile";
-       if (open(tmp, O_CREAT|O_RDONLY|O_TRUNC, 0600) != 0)
+       bool need_cleanup = true;
+       long rc;
+
+       rc = open(tmp, O_RDONLY, 0600);
+       if (rc < 0) {
+               rc = open(tmp, O_CREAT|O_EXCL|O_RDONLY, 0600);
+               need_cleanup = false;
+       }
+       if (rc != 0)
                perror_msg_and_fail("creat: %s", tmp);
-       if (open(tmp, O_WRONLY) != 1)
+       if (open(tmp, O_TRUNC|O_WRONLY) != 1)
                perror_msg_and_fail("open: %s", tmp);
 
        static const char w_c[] = "0123456789abcde";
@@ -175,8 +183,6 @@ main(void)
 
        void *efault = r1 - get_page_size();
 
-       long rc;
-
        rc = k_write(1, w, 0);
        if (rc)
                perror_msg_and_fail("write: expected 0, returned %ld", rc);
@@ -270,9 +276,11 @@ main(void)
        if (open("/dev/null", O_WRONLY) != 1)
                perror_msg_and_fail("open");
 
+       (void) close(4);
        if (open("/dev/zero", O_RDONLY) != 4)
                perror_msg_and_fail("open");
 
+       (void) close(5);
        if (open("/dev/null", O_WRONLY) != 5)
                perror_msg_and_fail("open");
 
@@ -282,6 +290,9 @@ main(void)
 
        test_dump(256, true);
 
+       if (need_cleanup && unlink(tmp))
+               perror_msg_and_fail("unlink: %s", tmp);
+
        tprintf("+++ exited with 0 +++\n");
        return 0;
 }
index 1b21fe5960492febc3921b31196c6a9cdae27c88..bcd33e0c42a07e2c17bd93b138232806c4417292 100644 (file)
@@ -1,34 +1,30 @@
 /*
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef HAVE_READAHEAD
 /* Check for glibc readahead argument passing bugs. */
-# ifdef __GLIBC__
 /*
  * glibc < 2.8 had an incorrect order of higher and lower parts of offset,
  * see https://sourceware.org/bugzilla/show_bug.cgi?id=5208
  */
-#  if !(defined __GLIBC_MINOR__ && \
-       (__GLIBC__ << 16) + __GLIBC_MINOR__ >= (2 << 16) + 8)
-#   undef HAVE_READAHEAD
-#  endif /* glibc < 2.8 */
+# if GLIBC_PREREQ_LT(2, 8)
+#  undef HAVE_READAHEAD
+# endif /* glibc < 2.8 */
 /*
  * glibc < 2.25 had an incorrect implementation on mips n64,
  * see https://sourceware.org/bugzilla/show_bug.cgi?id=21026
  */
-#  if defined LINUX_MIPSN64 && !(defined __GLIBC_MINOR__ && \
-       (__GLIBC__ << 16) + __GLIBC_MINOR__ >= (2 << 16) + 25)
-#   undef HAVE_READAHEAD
-#  endif /* LINUX_MIPSN64 && glibc < 2.25 */
-# endif /* __GLIBC__ */
+# if GLIBC_PREREQ_LT(2, 25) && defined LINUX_MIPSN64
+#  undef HAVE_READAHEAD
+# endif /* LINUX_MIPSN64 && glibc < 2.25 */
 #endif /* HAVE_READAHEAD */
 
 #ifdef HAVE_READAHEAD
index 284c221ec303a5c074ae763c9e956d6e40bc3d71..709b4f31a0362b53582698957656ac9beed09bba 100644 (file)
@@ -1,13 +1,13 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_readdir
 
index c2a9b22c6dc706f521a48f6e6685f0056347554d..a140794acc9cc2bb9eb9079862d2397524858fdf 100644 (file)
@@ -1,13 +1,14 @@
 /*
  * Copyright (c) 2015 Gleb Fotengauer-Malinovskiy <glebfm@altlinux.org>
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_readlink
 
index 6909ac0b88c4d837b6637a224841921fe9728143..50534570ca278a4b60d480c288324397ace1a5d9 100644 (file)
@@ -1,13 +1,14 @@
 /*
  * Copyright (c) 2015 Gleb Fotengauer-Malinovskiy <glebfm@altlinux.org>
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_readlinkat
 
index 8bc9c6b0957a91965aebba14b514f7f3ab461d94..0b22ee9f8b9ffe57f3ff43a32858aec45165cfa8 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_reboot
 
diff --git a/tests/recv-MSG_TRUNC.c b/tests/recv-MSG_TRUNC.c
new file mode 100644 (file)
index 0000000..ee9ea63
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+ * Check decoding of recv MSG_TRUNC.
+ *
+ * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <errno.h>
+#include <stdio.h>
+#include <sys/socket.h>
+#include "scno.h"
+
+#ifndef __NR_recv
+# define __NR_recv -1
+#endif
+#define SC_recv 10
+
+static int
+sys_recv(int sockfd, const void *buf, unsigned int len, int flags)
+{
+       int rc = socketcall(__NR_recv, SC_recv,
+                           sockfd, (long) buf, len, flags, 0);
+       if (rc < 0 && ENOSYS == errno)
+               perror_msg_and_skip("recv");
+       return rc;
+}
+
+int
+main(void)
+{
+       static const char sbuf[2] = "AB";
+       int sv[2];
+       TAIL_ALLOC_OBJECT_CONST_PTR(char, rbuf);
+
+       if (socketpair(AF_UNIX, SOCK_DGRAM, 0, sv))
+               perror_msg_and_skip("socketpair");
+
+       if (send(sv[1], sbuf + 1, 1, 0) != 1)
+                perror_msg_and_skip("send");
+       if (sys_recv(sv[0], rbuf - 1, 2, MSG_PEEK) != 1)
+               perror_msg_and_fail("recv");
+       printf("recv(%d, \"B\", 2, MSG_PEEK) = 1\n", sv[0]);
+
+       if (sys_recv(sv[0], rbuf, 1, MSG_TRUNC) != 1)
+               perror_msg_and_skip("recv");
+       printf("recv(%d, \"B\", 1, MSG_TRUNC) = 1\n", sv[0]);
+
+       if (send(sv[1], sbuf, 2, 0) != 2)
+                perror_msg_and_skip("send");
+       if (sys_recv(sv[0], rbuf, 1, MSG_TRUNC) != 2)
+               perror_msg_and_skip("recv");
+       printf("recv(%d, \"A\", 1, MSG_TRUNC) = 2\n", sv[0]);
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
diff --git a/tests/recv-MSG_TRUNC.gen.test b/tests/recv-MSG_TRUNC.gen.test
new file mode 100755 (executable)
index 0000000..07f112b
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (recv-MSG_TRUNC -a26 -e trace=recv); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a26 -e trace=recv
diff --git a/tests/recvfrom-MSG_TRUNC.c b/tests/recvfrom-MSG_TRUNC.c
new file mode 100644 (file)
index 0000000..b8ef378
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Check decoding of recvfrom MSG_TRUNC.
+ *
+ * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <stdio.h>
+#include <sys/socket.h>
+
+int
+main(void)
+{
+       static const char sbuf[2] = "AB";
+       int sv[2];
+       TAIL_ALLOC_OBJECT_CONST_PTR(char, rbuf);
+
+       if (socketpair(AF_UNIX, SOCK_DGRAM, 0, sv))
+               perror_msg_and_skip("socketpair");
+
+       if (send(sv[1], sbuf + 1, 1, 0) != 1)
+                perror_msg_and_skip("send");
+       if (recvfrom(sv[0], rbuf - 1, 2, MSG_PEEK, NULL, NULL) != 1)
+               perror_msg_and_fail("recvfrom");
+       printf("recvfrom(%d, \"B\", 2, MSG_PEEK, NULL, NULL) = 1\n", sv[0]);
+
+       if (recvfrom(sv[0], rbuf, 1, MSG_TRUNC, NULL, NULL) != 1)
+               perror_msg_and_skip("recvfrom");
+       printf("recvfrom(%d, \"B\", 1, MSG_TRUNC, NULL, NULL) = 1\n", sv[0]);
+
+       if (send(sv[1], sbuf, 2, 0) != 2)
+                perror_msg_and_skip("send");
+       if (recvfrom(sv[0], rbuf, 1, MSG_TRUNC, NULL, NULL) != 2)
+               perror_msg_and_skip("recvfrom");
+       printf("recvfrom(%d, \"A\", 1, MSG_TRUNC, NULL, NULL) = 2\n", sv[0]);
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
diff --git a/tests/recvfrom-MSG_TRUNC.gen.test b/tests/recvfrom-MSG_TRUNC.gen.test
new file mode 100755 (executable)
index 0000000..e27f52d
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (recvfrom-MSG_TRUNC -e trace=recvfrom); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=recvfrom
index ebf91bec23cbf4f5324cf80acd4d8cf7508bd655..c98052c8f7a3f466653184c1eec4d943a66fc6f8 100755 (executable)
@@ -3,7 +3,7 @@
 # Ensure that strace does not retain stdin and stdout descriptors.
 #
 # Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -16,42 +16,34 @@ run_prog_skip_if_failed \
 check_prog sleep
 check_prog yes
 
+SLEEP_3_BITS="$SLEEP_A_BIT; $SLEEP_A_BIT; $SLEEP_A_BIT"
 > "$OUT"
-> "$LOG"
+
+> lock1
+> lock2
 (
-       while [ -f "$LOG" ]; do
-               :
+       while [ -f lock1 ]; do
+               $SLEEP_A_BIT
        done
-       $SLEEP_A_BIT &
        yes
-       if kill -0 $! 2> /dev/null; then
-               wait
-       else
-               echo TIMEOUT >> "$OUT"
-       fi
+       [ -f lock2 ] ||
+               printf ' input' >> "$OUT"
 ) | $STRACE -qq -enone -esignal=none \
-       sh -c "exec <&- >&-; rm -f -- $LOG; $SLEEP_A_BIT; $SLEEP_A_BIT"
-
-if [ -s "$OUT" ]; then
-       fail_ "$STRACE failed to redirect standard input"
-fi
+       sh -c "exec <&- >&-; rm -f lock1; $SLEEP_3_BITS; rm -f lock2"
 
-> "$LOG"
+> lock1
+> lock2
 $STRACE -qq -enone -esignal=none \
-       sh -c "exec <&- >&-; rm -f -- $LOG; $SLEEP_A_BIT; $SLEEP_A_BIT" |
+       sh -c "exec <&- >&-; rm -f lock1; $SLEEP_3_BITS; rm -f lock2" |
 (
-       while [ -f "$LOG" ]; do
-               :
+       while [ -f lock1 ]; do
+               $SLEEP_A_BIT
        done
-       $SLEEP_A_BIT &
        cat > /dev/null
-       if kill -0 $! 2> /dev/null; then
-               wait
-       else
-               echo TIMEOUT >> "$OUT"
-       fi
+       [ -f lock2 ] ||
+               printf ' output' >> "$OUT"
 )
 
 if [ -s "$OUT" ]; then
-       fail_ "$STRACE failed to redirect standard output"
+       fail_ "$STRACE failed to redirect standard descriptors:$(cat "$OUT")"
 fi
index 2a2bfc6e9b57f72dfaca33973f9d111fa8aad057..7e43926e4e8297c895c322e4a50bacf7dbbbb6a4 100644 (file)
@@ -2,14 +2,13 @@
  * Check decoding of remap_file_pages syscall.
  *
  * Copyright (c) 2016-2017 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
 #include "scno.h"
 
 #ifdef __NR_remap_file_pages
@@ -77,11 +76,17 @@ main(void)
        k_remap_file_pages(addr, size, prot, pgoff, flags);
 
 /*
- * HP PA-RISC is the only architecture that has MAP_TYPE defined to 0x3, which
- * is also used for MAP_SHARED_VALIDATE since Linux commit v4.15-rc1~71^2^2~23.
+ * HP PA-RISC is the only architecture that has MAP_TYPE defined to something
+ * different.  For example, before commit v4.17-rc1~146^2~9 it was defined to
+ * 0x3 which is also used for MAP_SHARED_VALIDATE since Linux commit
+ * v4.15-rc1~71^2^2~23.
  */
 #  ifdef __hppa__
-#   define MAP_TYPE_str "MAP_SHARED_VALIDATE"
+#   if MAP_TYPE == 0x03
+#    define MAP_TYPE_str "MAP_SHARED_VALIDATE"
+#   else
+#    define MAP_TYPE_str "0x2b /* MAP_??? */"
+#   endif
 #  else
 #   define MAP_TYPE_str "0xf /* MAP_??? */"
 #  endif
index 3d77573ce7a1b36ceaf3667e09752ed1e9a69338..ccd65b410405ee79746cf76551f77ebd96f91a49 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_rename
 
index 7f11893f116e30c67cee1977a886dceed62386bc..8c648cd396a3865bc4660c5684379dc195d38663 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_renameat
 
index 663c0638fd6b52a8f7facc4f551172bfc5529b8d..548490cdef6d5d76343c7a974ebef87bf4213203 100644 (file)
@@ -2,13 +2,13 @@
  * Check decoding of renameat2 syscall.
  *
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
 #include "scno.h"
 
 #ifdef __NR_renameat2
index 20ae12f6bd98772ea3b6e2bb973c853a925302d8..2ea9a7bd461339b49713ce68e225363f867fb68a 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of request_key syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_request_key
 
index 9a8f7e3a9c166449a3181808270749bb0f7fe8f3..a42d3b9b732dc93e79da9cb4857b4c405d62a3e6 100644 (file)
@@ -1,19 +1,21 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <assert.h>
 #include <stdio.h>
 #include <stdint.h>
 #include <signal.h>
 #include <time.h>
 #include <sys/time.h>
 
+#define NANOSLEEP_NAME_RE "(nanosleep|clock_nanosleep(_time64)?)"
+#define NANOSLEEP_CALL_RE "(nanosleep\\(|clock_nanosleep(_time64)?\\(CLOCK_REALTIME, 0, )"
+
 int
 main(void)
 {
@@ -27,20 +29,22 @@ main(void)
        const sigset_t set = {};
        const struct sigaction act = { .sa_handler = SIG_IGN };
        const struct itimerval itv = { .it_value.tv_usec = 111111 };
-       struct timespec req = { .tv_nsec = 222222222 }, rem;
+       const struct timespec req = { .tv_nsec = 222222222 };
+       struct timespec rem = { 0xdefaced, 0xdefaced };
 
-       assert(sigaction(SIGALRM, &act, NULL) == 0);
-       assert(sigprocmask(SIG_SETMASK, &set, NULL) == 0);
+       if (sigaction(SIGALRM, &act, NULL))
+               perror_msg_and_fail("sigaction");
+       if (sigprocmask(SIG_SETMASK, &set, NULL))
+               perror_msg_and_fail("sigprocmask");
        if (setitimer(ITIMER_REAL, &itv, NULL))
                perror_msg_and_skip("setitimer");
        if (nanosleep(&req, &rem))
                perror_msg_and_fail("nanosleep");
 
-       printf("nanosleep\\(\\{tv_sec=%lld, tv_nsec=%llu\\}"
-              ", \\{tv_sec=%lld, tv_nsec=%llu\\}\\)"
+       printf("%s\\{tv_sec=0, tv_nsec=[0-9]+\\}"
+              ", \\{tv_sec=[0-9]+, tv_nsec=[0-9]+\\}\\)"
               " = \\? ERESTART_RESTARTBLOCK \\(Interrupted by signal\\)\n",
-              (long long) req.tv_sec, zero_extend_signed_to_ull(req.tv_nsec),
-              (long long) rem.tv_sec, zero_extend_signed_to_ull(rem.tv_nsec));
+              NANOSLEEP_CALL_RE);
        puts("--- SIGALRM \\{si_signo=SIGALRM, si_code=SI_KERNEL\\} ---");
 # ifdef __arm__
 /* old kernels used to overwrite ARM_r0 with -EINTR */
@@ -48,12 +52,12 @@ main(void)
 # else
 #  define ALTERNATIVE_NANOSLEEP_REQ ""
 # endif
-       printf("(nanosleep\\((%s\\{tv_sec=%lld, tv_nsec=%llu\\})"
-              ", %p|restart_syscall\\(<\\.\\.\\."
-              " resuming interrupted nanosleep \\.\\.\\.>)\\) = 0\n",
+       printf("(%s(%s\\{tv_sec=0, tv_nsec=[0-9]+\\})"
+              ", 0x[[:xdigit:]]+|restart_syscall\\(<\\.\\.\\."
+              " resuming interrupted %s \\.\\.\\.>)\\) = 0\n",
+              NANOSLEEP_CALL_RE,
               ALTERNATIVE_NANOSLEEP_REQ,
-              (long long) req.tv_sec, zero_extend_signed_to_ull(req.tv_nsec),
-              &rem);
+              NANOSLEEP_NAME_RE);
 
        puts("\\+\\+\\+ exited with 0 \\+\\+\\+");
        return 0;
index 8dde6684f0d69c954511af7269fb18ad6c953f3c..5c433fda04a9e0d54525d71a9bc7c977283537bc 100755 (executable)
@@ -2,7 +2,7 @@
 #
 # Check how "resuming interrupted nanosleep" works.
 #
-# Copyright (c) 2015-2018 The strace developers.
+# Copyright (c) 2015-2019 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,6 +10,6 @@
 . "${srcdir=.}/init.sh"
 
 run_prog > /dev/null
-syscalls=nanosleep,restart_syscall
+syscalls=restart_syscall,/nanosleep
 run_strace -a20 -e trace=$syscalls $args > "$EXP"
 match_grep "$LOG" "$EXP"
index 27abf75b4f91b9c3af34dda8af0892e1b8b111b6..645644c8c6434dec9e539c78cad4c3e4c1dd1730 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Check decoding of riscv_flush_icache syscall.
  *
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -9,7 +9,6 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
 
 #include "scno.h"
 
index 505303ad2db017ab2b82ae572deba313fc69d4e2..670f741d0881a179000866d3b38dcb4ea8d0b7a9 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_rmdir
 
index 06b15db207df851b0887a2d9a7273278d707e8b8..29954bad70bf6f637bac3614b5e1f0339b7ef779 100644 (file)
@@ -2,14 +2,14 @@
  * This file is part of rt_sigpending strace test.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_rt_sigpending
 
index e6f513da6959d90f53e04c2ebecea8d94b69fe70..599f28311320d562d8f7139e5b32c046c467a927 100644 (file)
@@ -2,14 +2,14 @@
  * This file is part of rt_sigprocmask strace test.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_rt_sigprocmask
 
diff --git a/tests/rt_sigqueueinfo--pidns-translation.c b/tests/rt_sigqueueinfo--pidns-translation.c
new file mode 100644 (file)
index 0000000..74bfb46
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "rt_sigqueueinfo.c"
diff --git a/tests/rt_sigqueueinfo--pidns-translation.gen.test b/tests/rt_sigqueueinfo--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..ef490b5
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_sigqueueinfo--pidns-translation test_pidns -esignal=none -e trace=rt_sigqueueinfo); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -esignal=none -e trace=rt_sigqueueinfo
index 0455dd408682ed224c140865190dd4d60e88a1d9..e22e4640350a5164731e2cd3a152590e13391a93 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
+#include "pidns.h"
 #include <assert.h>
 #include <stdio.h>
 #include <signal.h>
@@ -15,6 +16,8 @@
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        struct sigaction sa = {
                .sa_handler = SIG_IGN
        };
@@ -22,15 +25,19 @@ main(void)
                .sival_ptr = (void *) (unsigned long) 0xdeadbeefbadc0dedULL
        };
        pid_t pid = getpid();
+       const char *pid_str = pidns_pid2str(PT_TGID);
 
        assert(sigaction(SIGUSR1, &sa, NULL) == 0);
        if (sigqueue(pid, SIGUSR1, value))
                perror_msg_and_skip("sigqueue");
-       printf("rt_sigqueueinfo(%u, SIGUSR1, {si_signo=SIGUSR1, "
-               "si_code=SI_QUEUE, si_pid=%u, si_uid=%u, "
+       pidns_print_leader();
+       printf("rt_sigqueueinfo(%d%s, SIGUSR1, {si_signo=SIGUSR1, "
+               "si_code=SI_QUEUE, si_pid=%d%s, si_uid=%u, "
                "si_value={int=%d, ptr=%p}}) = 0\n",
-               pid, pid, getuid(), value.sival_int, value.sival_ptr);
-       printf("+++ exited with 0 +++\n");
+               pid, pid_str, pid, pid_str,
+               getuid(), value.sival_int, value.sival_ptr);
+       pidns_print_leader();
+       puts("+++ exited with 0 +++");
 
        return 0;
 }
index 55ae6239d31788c477f9922d071079dba7c55edb..720e178242761c6a99d51bad33955317b603a0f5 100644 (file)
@@ -2,14 +2,14 @@
  * This file is part of rt_sigsuspend strace test.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_rt_sigsuspend
 
index 56144f527005c41ddaaa53a75d89af4f41ce600b..5ecd9b13e1842a2a5584eede42781cfbd764f167 100644 (file)
@@ -2,14 +2,14 @@
  * This file is part of rt_sigtimedwait strace test.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_rt_sigtimedwait
 
diff --git a/tests/rt_tgsigqueueinfo--pidns-translation.c b/tests/rt_tgsigqueueinfo--pidns-translation.c
new file mode 100644 (file)
index 0000000..94396f0
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "rt_tgsigqueueinfo.c"
diff --git a/tests/rt_tgsigqueueinfo--pidns-translation.gen.test b/tests/rt_tgsigqueueinfo--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..399b247
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_tgsigqueueinfo--pidns-translation test_pidns -esignal=none -e trace=rt_tgsigqueueinfo); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -esignal=none -e trace=rt_tgsigqueueinfo
index e3ad0e22c1db6035092cd7f311e13befe84dc4b5..21d01cbb99a980c3a0cb7cb27df125457869f904 100644 (file)
@@ -2,16 +2,17 @@
  * This file is part of rt_tgsigqueueinfo strace test.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
+#include "pidns.h"
 
-#ifdef __NR_rt_tgsigqueueinfo
+#if defined __NR_rt_tgsigqueueinfo && defined __NR_gettid
 
 # include <errno.h>
 # include <signal.h>
 # include <unistd.h>
 
 static long
-k_tgsigqueueinfo(const pid_t pid, const int sig, const void *const info)
+k_tgsigqueueinfo(const pid_t tgid, const int tid, const int sig, const void *const info)
 {
        return syscall(__NR_rt_tgsigqueueinfo,
-                      F8ILL_KULONG_MASK | pid,
-                      F8ILL_KULONG_MASK | pid,
+                      F8ILL_KULONG_MASK | tgid,
+                      F8ILL_KULONG_MASK | tid,
                       F8ILL_KULONG_MASK | sig,
                       info);
 }
@@ -32,6 +33,8 @@ k_tgsigqueueinfo(const pid_t pid, const int sig, const void *const info)
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        const struct sigaction sa = {
                .sa_handler = SIG_IGN
        };
@@ -48,17 +51,22 @@ main(void)
        info->si_value.sival_ptr =
                (void *) (unsigned long) 0xdeadbeeffacefeedULL;
 
-       if (k_tgsigqueueinfo(info->si_pid, SIGUSR1, info))
+       if (k_tgsigqueueinfo(getpid(), syscall(__NR_gettid), SIGUSR1, info))
                (errno == ENOSYS ? perror_msg_and_skip : perror_msg_and_fail)(
                        "rt_tgsigqueueinfo");
 
-       printf("rt_tgsigqueueinfo(%u, %u, %s, {si_signo=%s"
-               ", si_code=SI_QUEUE, si_errno=ENOENT, si_pid=%u"
-               ", si_uid=%u, si_value={int=%d, ptr=%p}}) = 0\n",
-               info->si_pid, info->si_pid, "SIGUSR1", "SIGUSR1",
-               info->si_pid, info->si_uid, info->si_value.sival_int,
+       pidns_print_leader();
+       printf("rt_tgsigqueueinfo(%d%s, %d%s, %s, {si_signo=%s"
+               ", si_code=SI_QUEUE, si_errno=ENOENT, si_pid=%d%s"
+               ", si_uid=%d, si_value={int=%d, ptr=%p}}) = 0\n",
+               info->si_pid, pidns_pid2str(PT_TGID),
+               info->si_pid, pidns_pid2str(PT_TID),
+               "SIGUSR1", "SIGUSR1",
+               info->si_pid, pidns_pid2str(PT_TGID),
+               info->si_uid, info->si_value.sival_int,
                info->si_value.sival_ptr);
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
index a84c14136223230bb0aa042ca40ff5b45ac494d8..2a17b02afbd8892f7220fac06a1f00435ed0bbfb 100644 (file)
@@ -1,14 +1,14 @@
 /*
  * Check decoding of s390_guarded_storage syscall.
  *
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_s390_guarded_storage && defined HAVE_ASM_GUARDED_STORAGE_H
 
index 0cd160c6edeff901ae0f8a3442c9674c0405b87e..1286b134766114076dda396b7244adf678ac66fe 100644 (file)
@@ -1,14 +1,14 @@
 /*
  * Check decoding of s390_pci_mmio_read and s390_pci_mmio_write syscalls.
  *
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_s390_pci_mmio_read && defined __NR_s390_pci_mmio_write
 
index db31719b667d6a353c34c73d5803f1fcd30e12e1..a336f94b960ecbd2755e0adf6a9ddea71f1cfa88 100644 (file)
@@ -1,14 +1,14 @@
 /*
  * Check decoding of s390_runtime_instr syscall.
  *
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_s390_runtime_instr
 
index 5186fdc9d812fb9a21f8352b3b1426ba5390d8ea..48c3dda7961e5d3a30450ef5d8e0bd5d899eb3d0 100644 (file)
@@ -1,14 +1,14 @@
 /*
  * Check decoding of s390_sthyi syscall.
  *
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined HAVE_ICONV_H && defined HAVE_ICONV_OPEN && defined __NR_s390_sthyi
 
@@ -113,7 +113,7 @@ ebcdic2ascii(unsigned char *ebcdic, size_t size)
                                   size, sizeof(ascii_buf));
        if (cd == (iconv_t) -1)
                perror_msg_and_fail("ebcdic2ascii: unable to allocate a "
-                                   "conversion descriptior for converting "
+                                   "conversion descriptor for converting "
                                    "EBCDIC to ASCII");
 
        while ((ret = iconv(cd, &ebcdic_pos, &ebcdic_left,
@@ -185,6 +185,44 @@ print_ebcdic(const char *prefix, unsigned char *addr, unsigned int offs,
        return true;
 }
 
+static inline void
+print_funcs(unsigned char *addr, unsigned int offs)
+{
+       bool cont;
+       const uint8_t *funcs = addr + offs;
+
+       if (!funcs[0])
+               return;
+
+       printf(" /* ");
+
+       if (funcs[0] & 0x80) {
+               printf("0: Obtain CPU Capacity Info");
+               cont = true;
+       }
+
+       if (funcs[0] & 0x40)
+               printf("%s1: Hypervisor Environment Info",
+                      cont ? ", " : (cont = true, ""));
+       if (funcs[0] & 0x20)
+               printf("%s2: Guest List",
+                      cont ? ", " : (cont = true, ""));
+       if (funcs[0] & 0x10)
+               printf("%s3: Designated Guest Info",
+                      cont ? ", " : (cont = true, ""));
+       if (funcs[0] & 0x08)
+               printf("%s4: Resource Pool List",
+                      cont ? ", " : (cont = true, ""));
+       if (funcs[0] & 0x04)
+               printf("%s5: Designated Resource Pool Information",
+                      cont ? ", " : (cont = true, ""));
+       if (funcs[0] & 0x02)
+               printf("%s6: Resource Pool Member List",
+                      cont ? ", " : (cont = true, ""));
+
+       printf(" */");
+}
+
 static void
 print_hypervisor_header(unsigned char *buf, int level, unsigned int offs_pos,
                        unsigned int len_pos, bool mt)
@@ -220,10 +258,16 @@ print_hypervisor_header(unsigned char *buf, int level, unsigned int offs_pos,
                               "for capping");
                        printed = true;
                }
-               if (cur[0] & 0x3F) {
+               if (cur[0] & 0x20) {
                        if (printed)
                                printf(", ");
-                       printf("%#hhx - ???", cur[0] & 0x3F);
+                       printf("0x20 - hypervisor is MT-enabled");
+                       printed = true;
+               }
+               if (cur[0] & 0x1F) {
+                       if (printed)
+                               printf(", ");
+                       printf("%#hhx - ???", cur[0] & 0x1F);
                }
                printf(" */");
        }
@@ -254,7 +298,20 @@ print_hypervisor_header(unsigned char *buf, int level, unsigned int offs_pos,
        print_u16(", infydifl", cur, 30, VERBOSE);
 
 # if VERBOSE
-       if (hdr_size > 32 && !is_empty(cur + 32, hdr_size - 32)) {
+       if (hdr_size >= 48) {
+               printf(", infyinsf=");
+               print_quoted_hex((char *) (cur + 32), 8);
+               print_funcs(cur, 32);
+
+               printf(", infyautf=");
+               print_quoted_hex((char *) (cur + 40), 8);
+               print_funcs(cur, 40);
+
+               if (hdr_size > 48 && !is_empty(cur + 48, hdr_size - 48)) {
+                       printf(", ");
+                       print_quoted_hex((char *) (cur + 48), hdr_size - 48);
+               }
+       } else if (hdr_size > 32 && !is_empty(cur + 32, hdr_size - 32)) {
                printf(", ");
                print_quoted_hex((char *) (cur + 32), hdr_size - 32);
        }
@@ -452,7 +509,7 @@ print_sthyi(unsigned char *buf)
        hdr_size = *(uint16_t *) (buf + 10);
        if (hdr_size < 44)
                error_msg_and_fail("sthyi: header section is too small "
-                                  "(got %hu, 44 expected)", hdr_size);
+                                  "(got %hu, >=44 expected)", hdr_size);
 
        /* INFHFLG1 */
        print_0x8("{/* header */ {infhflg1", buf, 0, true);
@@ -541,7 +598,7 @@ print_sthyi(unsigned char *buf)
        hdr_size = *(uint16_t *) (buf + 14);
        if (hdr_size < 60)
                error_msg_and_fail("sthyi: machine section is too small "
-                                  "(got %hu, 60 expected)", hdr_size);
+                                  "(got %hu, >=60 expected)", hdr_size);
 
        cur = buf + offs;
 
@@ -584,7 +641,19 @@ print_sthyi(unsigned char *buf)
        print_ebcdic(", infmseq",  cur, 40, 16, id_valid, false);
        print_ebcdic(", infmpman", cur, 56, 4,  id_valid, false);
 
-       if (hdr_size > 60 && !is_empty(cur + 60, hdr_size - 60)) {
+       if (hdr_size >= 72) {
+               if (cur[60] || cur[61] || cur[62] || cur[63])
+                       printf(", reserved_1__="
+                              "\"\\x%#02hhx\\x%#02hhx\\x%#02hhx\\x%#02hhx\"",
+                              cur[60], cur[61], cur[62], cur[63]);
+
+               print_ebcdic(", infmplnm", cur, 64, 8, false, false);
+
+               if (hdr_size > 72 && !is_empty(cur + 72, hdr_size - 72)) {
+                       printf(", ");
+                       print_quoted_hex((char *) (cur + 72), hdr_size - 72);
+               }
+       } else if (hdr_size > 60 && !is_empty(cur + 60, hdr_size - 60)) {
                printf(", ");
                print_quoted_hex((char *) (cur + 60), hdr_size - 60);
        }
@@ -601,9 +670,9 @@ partition_hdr:
                goto hv_hdr;
 
        hdr_size = *(uint16_t *) (buf + 18);
-       if (hdr_size < 56)
+       if (hdr_size < 40)
                error_msg_and_fail("sthyi: partition section is too small "
-                                  "(got %hu, 56 expected)", hdr_size);
+                                  "(got %hu, >=40 expected)", hdr_size);
 
        cur = buf + offs;
 
@@ -672,21 +741,28 @@ partition_hdr:
        print_weight(", infpwbif", cur, 32, pwcap_valid);
        print_weight(", infpabif", cur, 36, pacap_valid);
 
-       if (print_ebcdic(", infplgnm", cur, 40, 8, false, false)) {
-
-               print_weight(", infplgcp", cur, 48, false);
-               print_weight(", infplgif", cur, 52, false);
-       } else {
-               if (lpar_valid) {
-                       printf(", infplgnm=");
-                       print_quoted_hex((char *) (cur + 40), 8);
+       if (hdr_size >= 56) {
+               if (print_ebcdic(", infplgnm", cur, 40, 8, false, false)) {
+                       print_weight(", infplgcp", cur, 48, false);
+                       print_weight(", infplgif", cur, 52, false);
+               } else {
+                       if (lpar_valid) {
+                               printf(", infplgnm=");
+                               print_quoted_hex((char *) (cur + 40), 8);
+                       }
+                       print_x32(", infplgcp", cur, 48, false);
+                       print_x32(", infplgif", cur, 52, false);
                }
-
-               print_x32(", infplgcp", cur, 48, false);
-               print_x32(", infplgif", cur, 52, false);
        }
 
-       if (hdr_size > 56 && !is_empty(cur + 56, hdr_size - 56)) {
+       if (hdr_size >= 64) {
+               print_ebcdic(", infpplnm", cur, 56, 8, false, false);
+
+               if (hdr_size > 64 && !is_empty(cur + 64, hdr_size - 64)) {
+                       printf(", ");
+                       print_quoted_hex((char *) (cur + 64), hdr_size - 64);
+               }
+       } else if (hdr_size > 56 && !is_empty(cur + 56, hdr_size - 56)) {
                printf(", ");
                print_quoted_hex((char *) (cur + 56), hdr_size - 56);
        }
index 7715d2867364fb9d7324b4cfdb6b37a634270455..56bbef579a86acb2473c37aebf4e7eadf37c5643 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined(__NR_sched_get_priority_min) \
  && defined(__NR_sched_get_priority_max)
index b1117f3b4a3f908f39464148ca148542e9450f83..3af6f8518f5ac0b46cdd853b05608a913fe4ad0a 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_sched_rr_get_interval
 
diff --git a/tests/sched_xetaffinity--pidns-translation.c b/tests/sched_xetaffinity--pidns-translation.c
new file mode 100644 (file)
index 0000000..814e398
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "sched_xetaffinity.c"
diff --git a/tests/sched_xetaffinity--pidns-translation.gen.test b/tests/sched_xetaffinity--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..767fa1a
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched_xetaffinity--pidns-translation test_pidns -a28 -e trace=sched_getaffinity,sched_setaffinity); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a28 -e trace=sched_getaffinity,sched_setaffinity
index 4e6fbe206b94cbce1a41177a1c912da4ae1360e4..105b3354520f17875ba98b1e9fa6c4ac919aa6e1 100644 (file)
@@ -2,13 +2,15 @@
  * This file is part of sched_xetaffinity strace test.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
+#include "pidns.h"
 #include <sched.h>
 
 #if defined __NR_sched_getaffinity && defined __NR_sched_setaffinity \
@@ -40,8 +42,11 @@ setaffinity(unsigned long pid, unsigned long size, void *set)
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        unsigned int cpuset_size = 1;
        const pid_t pid = getpid();
+       const char *pid_str = pidns_pid2str(PT_TGID);
 
        while (cpuset_size) {
                assert(getaffinity(pid, cpuset_size, NULL) == -1);
@@ -49,18 +54,21 @@ main(void)
                        break;
                if (EINVAL != errno)
                        perror_msg_and_skip("sched_getaffinity");
-               printf("sched_getaffinity(%d, %u, NULL) = %s\n",
-                      pid, cpuset_size, errstr);
+               pidns_print_leader();
+               printf("sched_getaffinity(%d%s, %u, NULL) = %s\n",
+                      pid, pid_str, cpuset_size, errstr);
                cpuset_size <<= 1;
        }
        assert(cpuset_size);
-       printf("sched_getaffinity(%d, %u, NULL) = %s\n",
-              pid, cpuset_size, errstr);
+       pidns_print_leader();
+       printf("sched_getaffinity(%d%s, %u, NULL) = %s\n",
+              pid, pid_str, cpuset_size, errstr);
 
        cpu_set_t *cpuset = tail_alloc(cpuset_size);
        getaffinity(pid, cpuset_size, cpuset + 1);
-       printf("sched_getaffinity(%d, %u, %p) = %s\n",
-              pid, cpuset_size, cpuset + 1, errstr);
+       pidns_print_leader();
+       printf("sched_getaffinity(%d%s, %u, %p) = %s\n",
+              pid, pid_str, cpuset_size, cpuset + 1, errstr);
 
        int ret_size = getaffinity(pid, cpuset_size, cpuset);
        if (ret_size < 0)
@@ -68,7 +76,8 @@ main(void)
                                    pid, (unsigned) cpuset_size, cpuset, errstr);
        assert(ret_size <= (int) cpuset_size);
 
-       printf("sched_getaffinity(%d, %u, [", pid, cpuset_size);
+       pidns_print_leader();
+       printf("sched_getaffinity(%d%s, %u, [", pid, pid_str, cpuset_size);
        const char *sep;
        unsigned int i, cpu;
        for (i = 0, cpu = 0, sep = ""; i < (unsigned) ret_size * 8; ++i) {
@@ -84,8 +93,9 @@ main(void)
        CPU_SET_S(cpu, cpuset_size, cpuset);
        if (setaffinity(pid, cpuset_size, cpuset))
                perror_msg_and_skip("sched_setaffinity");
-       printf("sched_setaffinity(%d, %u, [%u]) = 0\n",
-              pid, cpuset_size, cpu);
+       pidns_print_leader();
+       printf("sched_setaffinity(%d%s, %u, [%u]) = 0\n",
+              pid, pid_str, cpuset_size, cpu);
 
        const unsigned int big_size = cpuset_size < 128 ? 128 : cpuset_size * 2;
        cpuset = tail_alloc(big_size);
@@ -94,7 +104,8 @@ main(void)
                perror_msg_and_fail("sched_getaffinity(%d, %u, %p) = %s\n",
                                    pid, big_size, cpuset, errstr);
        assert(ret_size <= (int) big_size);
-       printf("sched_getaffinity(%d, %u, [", pid, big_size);
+       pidns_print_leader();
+       printf("sched_getaffinity(%d%s, %u, [", pid, pid_str, big_size);
        for (i = 0, sep = ""; i < (unsigned) ret_size * 8; ++i) {
                if (CPU_ISSET_S(i, (unsigned) ret_size, cpuset)) {
                        printf("%s%u", sep, i);
@@ -103,6 +114,7 @@ main(void)
        }
        printf("]) = %s\n", errstr);
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
diff --git a/tests/sched_xetattr--pidns-translation.c b/tests/sched_xetattr--pidns-translation.c
new file mode 100644 (file)
index 0000000..c152023
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "sched_xetattr.c"
diff --git a/tests/sched_xetattr--pidns-translation.gen.test b/tests/sched_xetattr--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..52692a8
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched_xetattr--pidns-translation test_pidns -a29 -e trace=sched_getattr,sched_setattr); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a29 -e trace=sched_getattr,sched_setattr
index 3440876b29db574dfe619d4829bf174201cbbce2..4a76b2d65a2d7d9e5e418bc70b076a9d3dd0d012 100644 (file)
@@ -1,13 +1,13 @@
 /*
  * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_sched_getattr && defined __NR_sched_setattr
 
@@ -15,6 +15,7 @@
 # include <stdio.h>
 # include <sched.h>
 # include <unistd.h>
+# include "pidns.h"
 # include "sched_attr.h"
 # include "xlat.h"
 # include "xlat/schedulers.h"
@@ -41,6 +42,8 @@ sys_sched_setattr(kernel_ulong_t pid, kernel_ulong_t attr, kernel_ulong_t flags)
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        static const kernel_ulong_t bogus_pid =
                (kernel_ulong_t) 0xdefacedfacefeedULL;
        static const kernel_ulong_t bogus_size =
@@ -48,20 +51,28 @@ main(void)
        static const kernel_ulong_t bogus_flags =
                (kernel_ulong_t) 0xdefaceddeadc0deULL;
 
+       const int pid = getpid();
+       const char *pid_str = pidns_pid2str(PT_TGID);
+
        TAIL_ALLOC_OBJECT_CONST_PTR(struct sched_attr, attr);
        TAIL_ALLOC_OBJECT_CONST_PTR(unsigned int, psize);
        void *const efault = attr + 1;
 
-       sys_sched_getattr(0, 0, 0, 0);
-       printf("sched_getattr(0, NULL, 0, 0) = %s\n", errstr);
+       sys_sched_getattr(pid, 0, 0, 0);
+       pidns_print_leader();
+       printf("sched_getattr(%d%s, NULL, 0, 0) = %s\n",
+               pid, pid_str, errstr);
 
        sys_sched_getattr(0, (unsigned long) attr, 0, 0);
+       pidns_print_leader();
        printf("sched_getattr(0, %p, 0, 0) = %s\n", attr, errstr);
 
        sys_sched_getattr(bogus_pid, 0, 0, 0);
+       pidns_print_leader();
        printf("sched_getattr(%d, NULL, 0, 0) = %s\n", (int) bogus_pid, errstr);
 
        sys_sched_getattr(-1U, (unsigned long) attr, bogus_size, bogus_flags);
+       pidns_print_leader();
        printf("sched_getattr(-1, %p, %s%u, %u) = %s\n",
               attr,
 # if defined __arm64__ || defined __aarch64__
@@ -71,24 +82,52 @@ main(void)
 # endif
               (unsigned) bogus_size, (unsigned) bogus_flags, errstr);
 
+       sys_sched_getattr(0, (unsigned long) efault, SCHED_ATTR_MIN_SIZE, 0);
+       pidns_print_leader();
+       printf("sched_getattr(0, %p, %u, 0) = %s\n",
+              efault, (unsigned) SCHED_ATTR_MIN_SIZE, errstr);
+
+       if (sys_sched_getattr(0, (unsigned long) attr, SCHED_ATTR_MIN_SIZE, 0))
+               perror_msg_and_skip("sched_getattr");
+       pidns_print_leader();
+       printf("sched_getattr(0, {size=%u, sched_policy=", attr->size);
+       printxval(schedulers, attr->sched_policy, NULL);
+       printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u"
+              ", sched_runtime=%" PRIu64 ", sched_deadline=%" PRIu64
+              ", sched_period=%" PRIu64 "}, %u, 0) = 0\n",
+              attr->sched_flags ? "SCHED_FLAG_RESET_ON_FORK" : "0",
+              attr->sched_nice,
+              attr->sched_priority,
+              attr->sched_runtime,
+              attr->sched_deadline,
+              attr->sched_period,
+              (unsigned) SCHED_ATTR_MIN_SIZE);
+
        sys_sched_getattr(0, (unsigned long) efault, sizeof(*attr), 0);
+       pidns_print_leader();
        printf("sched_getattr(0, %p, %u, 0) = %s\n",
               efault, (unsigned) sizeof(*attr), errstr);
 
        if (sys_sched_getattr(0, (unsigned long) attr, sizeof(*attr), 0))
                perror_msg_and_skip("sched_getattr");
+       pidns_print_leader();
        printf("sched_getattr(0, {size=%u, sched_policy=", attr->size);
        printxval(schedulers, attr->sched_policy, NULL);
        printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u"
               ", sched_runtime=%" PRIu64 ", sched_deadline=%" PRIu64
-              ", sched_period=%" PRIu64 "}, %u, 0) = 0\n",
+              ", sched_period=%" PRIu64,
               attr->sched_flags ? "SCHED_FLAG_RESET_ON_FORK" : "0",
               attr->sched_nice,
               attr->sched_priority,
               attr->sched_runtime,
               attr->sched_deadline,
-              attr->sched_period,
-              (unsigned) sizeof(*attr));
+              attr->sched_period);
+       if (attr->size >= SCHED_ATTR_SIZE_VER1) {
+               printf(", sched_util_min=%u, sched_util_max=%u",
+                      attr->sched_util_min,
+                      attr->sched_util_max);
+       }
+       printf("}, %u, 0) = 0\n", (unsigned) sizeof(*attr));
 
 # if defined __arm64__ || defined __aarch64__
        long rc =
@@ -97,66 +136,91 @@ main(void)
                          F8ILL_KULONG_MASK | sizeof(*attr), F8ILL_KULONG_MASK);
 # if defined __arm64__ || defined __aarch64__
        if (rc) {
+               pidns_print_leader();
                printf("sched_getattr(0, %p, 0xffffffff<<32|%u, 0) = %s\n",
                       attr, (unsigned) sizeof(*attr), errstr);
        } else
 # endif
        {
+               pidns_print_leader();
                printf("sched_getattr(0, {size=%u, sched_policy=", attr->size);
                printxval(schedulers, attr->sched_policy, NULL);
                printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u"
                       ", sched_runtime=%" PRIu64 ", sched_deadline=%" PRIu64
-                      ", sched_period=%" PRIu64 "}, %u, 0) = 0\n",
+                      ", sched_period=%" PRIu64,
                       attr->sched_flags ? "SCHED_FLAG_RESET_ON_FORK" : "0",
                       attr->sched_nice,
                       attr->sched_priority,
                       attr->sched_runtime,
                       attr->sched_deadline,
-                      attr->sched_period,
-                      (unsigned) sizeof(*attr));
+                      attr->sched_period);
+               if (attr->size >= SCHED_ATTR_SIZE_VER1) {
+                       printf(", sched_util_min=%u, sched_util_max=%u",
+                              attr->sched_util_min,
+                              attr->sched_util_max);
+               }
+               printf("}, %u, 0) = 0\n", (unsigned) sizeof(*attr));
        }
 
        sys_sched_setattr(bogus_pid, 0, 0);
+       pidns_print_leader();
        printf("sched_setattr(%d, NULL, 0) = %s\n", (int) bogus_pid, errstr);
 
        attr->sched_flags |= 1;
 
-       if (sys_sched_setattr(0, (unsigned long) attr, 0))
+       if (sys_sched_setattr(pid, (unsigned long) attr, 0))
                perror_msg_and_skip("sched_setattr");
-       printf("sched_setattr(0, {size=%u, sched_policy=", attr->size);
+       pidns_print_leader();
+       printf("sched_setattr(%d%s, {size=%u, sched_policy=",
+               pid, pid_str, attr->size);
        printxval(schedulers, attr->sched_policy, NULL);
        printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u"
               ", sched_runtime=%" PRIu64 ", sched_deadline=%" PRIu64
-              ", sched_period=%" PRIu64 "}, 0) = 0\n",
+              ", sched_period=%" PRIu64,
               "SCHED_FLAG_RESET_ON_FORK",
               attr->sched_nice,
               attr->sched_priority,
               attr->sched_runtime,
               attr->sched_deadline,
               attr->sched_period);
+       if (attr->size >= SCHED_ATTR_SIZE_VER1) {
+               printf(", sched_util_min=%u, sched_util_max=%u",
+                      attr->sched_util_min,
+                      attr->sched_util_max);
+       }
+       printf("}, 0) = 0\n");
 
        sys_sched_setattr(F8ILL_KULONG_MASK, (unsigned long) attr,
                          F8ILL_KULONG_MASK);
+       pidns_print_leader();
        printf("sched_setattr(0, {size=%u, sched_policy=", attr->size);
        printxval(schedulers, attr->sched_policy, NULL);
        printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u"
               ", sched_runtime=%" PRIu64 ", sched_deadline=%" PRIu64
-              ", sched_period=%" PRIu64 "}, 0) = 0\n",
+              ", sched_period=%" PRIu64,
               "SCHED_FLAG_RESET_ON_FORK",
               attr->sched_nice,
               attr->sched_priority,
               attr->sched_runtime,
               attr->sched_deadline,
               attr->sched_period);
+       if (attr->size >= SCHED_ATTR_SIZE_VER1) {
+               printf(", sched_util_min=%u, sched_util_max=%u",
+                      attr->sched_util_min,
+                      attr->sched_util_max);
+       }
+       printf("}, 0) = 0\n");
 
        *psize = attr->size;
 
        sys_sched_setattr(0, (unsigned long) psize, 0);
+       pidns_print_leader();
        printf("sched_setattr(0, %p, 0) = %s\n", psize, errstr);
 
        attr->size = 0;
 
        sys_sched_setattr(0, (unsigned long) attr, 0);
+       pidns_print_leader();
        printf("sched_setattr(0, {size=%u, sched_policy=", attr->size);
        printxval(schedulers, attr->sched_policy, NULL);
        printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u"
@@ -172,18 +236,20 @@ main(void)
        attr->size = 1;
 
        sys_sched_setattr(0, (unsigned long) attr, 0);
+       pidns_print_leader();
        printf("sched_setattr(0, {size=%u} => {size=%u}, 0) = %s\n",
               1, attr->size, errstr);
 
        attr->size = SCHED_ATTR_MIN_SIZE - 1;
 
        sys_sched_setattr(0, (unsigned long) attr, 0);
+       pidns_print_leader();
        printf("sched_setattr(0, {size=%u} => {size=%u}, 0) = %s\n",
               SCHED_ATTR_MIN_SIZE - 1, attr->size, errstr);
 
        attr->size = 0x90807060;
        attr->sched_policy = 0xca7faced;
-       attr->sched_flags = 0xbadc0ded1057da78ULL;
+       attr->sched_flags = 0xbadc0ded1057da80ULL;
        attr->sched_nice = 0xafbfcfdf;
        attr->sched_priority = 0xb8c8d8e8;
        attr->sched_runtime = 0xbadcaffedeadf157ULL;
@@ -191,11 +257,12 @@ main(void)
        attr->sched_period = 0xded1ca7edda7aca7ULL;
 
        sys_sched_setattr(bogus_pid, (unsigned long) attr, bogus_flags);
+       pidns_print_leader();
        printf("sched_setattr(%d, {size=%u, sched_policy=%#x /* SCHED_??? */, "
               "sched_flags=%#" PRIx64 " /* SCHED_FLAG_??? */, "
               "sched_nice=%d, sched_priority=%u, sched_runtime=%" PRIu64 ", "
-              "sched_deadline=%" PRIu64 ", sched_period=%" PRIu64 ", ...}, %u)"
-              " = %s\n",
+              "sched_deadline=%" PRIu64 ", sched_period=%" PRIu64 ", "
+              "sched_util_min=%u, sched_util_max=%u, ...}, %u) = %s\n",
               (int) bogus_pid,
               attr->size,
               attr->sched_policy,
@@ -205,6 +272,8 @@ main(void)
               attr->sched_runtime,
               attr->sched_deadline,
               attr->sched_period,
+              attr->sched_util_min,
+              attr->sched_util_max,
               (unsigned) bogus_flags, errstr);
 
        if (F8ILL_KULONG_SUPPORTED) {
@@ -223,7 +292,7 @@ main(void)
 
        attr->size = 0x90807060;
        attr->sched_policy = 0xca7faced;
-       attr->sched_flags = 0xfULL;
+       attr->sched_flags = 0x87ULL;
        attr->sched_nice = 0xafbfcfdf;
        attr->sched_priority = 0xb8c8d8e8;
        attr->sched_runtime = 0xbadcaffedeadf157ULL;
@@ -231,35 +300,143 @@ main(void)
        attr->sched_period = 0xded1ca7edda7aca7ULL;
 
        sys_sched_setattr(bogus_pid, (unsigned long) attr, bogus_flags);
+       pidns_print_leader();
        printf("sched_setattr(%d, {size=%u, sched_policy=%#x /* SCHED_??? */, "
               "sched_flags=SCHED_FLAG_RESET_ON_FORK|SCHED_FLAG_RECLAIM|"
-              "SCHED_FLAG_DL_OVERRUN|0x8, "
+              "SCHED_FLAG_DL_OVERRUN|0x80, "
+              "sched_nice=%d, sched_priority=%u, sched_runtime=%" PRIu64 ", "
+              "sched_deadline=%" PRIu64 ", sched_period=%" PRIu64 ", "
+              "sched_util_min=%u, sched_util_max=%u, ...}, %u) = %s\n",
+              (int) bogus_pid,
+              attr->size,
+              attr->sched_policy,
+              attr->sched_nice,
+              attr->sched_priority,
+              attr->sched_runtime,
+              attr->sched_deadline,
+              attr->sched_period,
+              attr->sched_util_min,
+              attr->sched_util_max,
+              (unsigned) bogus_flags, errstr);
+
+       if (F8ILL_KULONG_SUPPORTED) {
+               const kernel_ulong_t ill = f8ill_ptr_to_kulong(attr);
+
+               sys_sched_getattr(0, ill, sizeof(*attr), 0);
+               pidns_print_leader();
+               printf("sched_getattr(0, %#llx, %u, 0) = %s\n",
+                      (unsigned long long) ill, (unsigned) sizeof(*attr),
+                      errstr);
+
+               sys_sched_setattr(0, ill, 0);
+               pidns_print_leader();
+               printf("sched_setattr(0, %#llx, 0) = %s\n",
+                      (unsigned long long) ill, errstr);
+       }
+
+       attr->size = SCHED_ATTR_MIN_SIZE;
+       attr->sched_policy = 0xdefaced;
+       attr->sched_flags = 0x8fULL;
+
+       sys_sched_setattr(bogus_pid, (unsigned long) attr, bogus_flags);
+       pidns_print_leader();
+       printf("sched_setattr(%d, {size=%u, "
+              "sched_flags=SCHED_FLAG_RESET_ON_FORK|SCHED_FLAG_RECLAIM|"
+              "SCHED_FLAG_DL_OVERRUN|SCHED_FLAG_KEEP_POLICY|0x80, "
               "sched_nice=%d, sched_priority=%u, sched_runtime=%" PRIu64 ", "
-              "sched_deadline=%" PRIu64 ", sched_period=%" PRIu64 ", ...}, %u)"
+              "sched_deadline=%" PRIu64 ", sched_period=%" PRIu64 "}, %u)"
               " = %s\n",
               (int) bogus_pid,
               attr->size,
+              attr->sched_nice,
+              attr->sched_priority,
+              attr->sched_runtime,
+              attr->sched_deadline,
+              attr->sched_period,
+              (unsigned) bogus_flags, errstr);
+
+       if (F8ILL_KULONG_SUPPORTED) {
+               const kernel_ulong_t ill = f8ill_ptr_to_kulong(attr);
+
+               sys_sched_getattr(0, ill, sizeof(*attr), 0);
+               pidns_print_leader();
+               printf("sched_getattr(0, %#llx, %u, 0) = %s\n",
+                      (unsigned long long) ill, (unsigned) sizeof(*attr),
+                      errstr);
+
+               sys_sched_setattr(0, ill, 0);
+               pidns_print_leader();
+               printf("sched_setattr(0, %#llx, 0) = %s\n",
+                      (unsigned long long) ill, errstr);
+       }
+
+       attr->size = SCHED_ATTR_SIZE_VER1;
+       attr->sched_flags = 0xe7ULL;
+
+       sys_sched_setattr(bogus_pid, (unsigned long) attr, bogus_flags);
+       pidns_print_leader();
+       printf("sched_setattr(%d, {size=%u, sched_policy=%#x /* SCHED_??? */, "
+              "sched_flags=SCHED_FLAG_RESET_ON_FORK|SCHED_FLAG_RECLAIM|"
+              "SCHED_FLAG_DL_OVERRUN|SCHED_FLAG_UTIL_CLAMP_MIN"
+              "|SCHED_FLAG_UTIL_CLAMP_MAX|0x80, "
+              "sched_nice=%d, sched_priority=%u, sched_runtime=%" PRIu64 ", "
+              "sched_deadline=%" PRIu64 ", sched_period=%" PRIu64 ", "
+              "sched_util_min=%u, sched_util_max=%u}, %u) = %s\n",
+              (int) bogus_pid,
+              attr->size,
               attr->sched_policy,
               attr->sched_nice,
               attr->sched_priority,
               attr->sched_runtime,
               attr->sched_deadline,
               attr->sched_period,
+              attr->sched_util_min,
+              attr->sched_util_max,
+              (unsigned) bogus_flags, errstr);
+
+       if (F8ILL_KULONG_SUPPORTED) {
+               const kernel_ulong_t ill = f8ill_ptr_to_kulong(attr);
+
+               sys_sched_getattr(0, ill, sizeof(*attr), 0);
+               pidns_print_leader();
+               printf("sched_getattr(0, %#llx, %u, 0) = %s\n",
+                      (unsigned long long) ill, (unsigned) sizeof(*attr),
+                      errstr);
+
+               sys_sched_setattr(0, ill, 0);
+               pidns_print_leader();
+               printf("sched_setattr(0, %#llx, 0) = %s\n",
+                      (unsigned long long) ill, errstr);
+       }
+
+       attr->sched_flags = 0xcaffee90LL;
+
+       sys_sched_setattr(bogus_pid, (unsigned long) attr, bogus_flags);
+       pidns_print_leader();
+       printf("sched_setattr(%d, {size=%u, sched_flags=SCHED_FLAG_KEEP_PARAMS"
+              "|0xcaffee80, sched_util_min=%u, sched_util_max=%u}, %u) = %s\n",
+              (int) bogus_pid,
+              attr->size,
+              attr->sched_util_min,
+              attr->sched_util_max,
               (unsigned) bogus_flags, errstr);
 
        if (F8ILL_KULONG_SUPPORTED) {
                const kernel_ulong_t ill = f8ill_ptr_to_kulong(attr);
 
                sys_sched_getattr(0, ill, sizeof(*attr), 0);
+               pidns_print_leader();
                printf("sched_getattr(0, %#llx, %u, 0) = %s\n",
                       (unsigned long long) ill, (unsigned) sizeof(*attr),
                       errstr);
 
                sys_sched_setattr(0, ill, 0);
+               pidns_print_leader();
                printf("sched_setattr(0, %#llx, 0) = %s\n",
                       (unsigned long long) ill, errstr);
        }
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
diff --git a/tests/sched_xetparam--pidns-translation.c b/tests/sched_xetparam--pidns-translation.c
new file mode 100644 (file)
index 0000000..9fb3e57
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "sched_xetparam.c"
diff --git a/tests/sched_xetparam--pidns-translation.gen.test b/tests/sched_xetparam--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..309cabb
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched_xetparam--pidns-translation test_pidns -a23 -e trace=sched_getparam,sched_setparam); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a23 -e trace=sched_getparam,sched_setparam
index e1325a6f714a2791a02ced15d787780176c3e8b5..f48ba6d75753b686b86db91dd1b696fdc5f0fe39 100644 (file)
@@ -1,12 +1,13 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
+#include "pidns.h"
 
 #if defined __NR_sched_getparam && defined __NR_sched_setparam
 
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        struct sched_param *const param =
                tail_alloc(sizeof(struct sched_param));
 
-       long rc = syscall(__NR_sched_getparam, 0, param);
-       printf("sched_getparam(0, [%d]) = %ld\n",
-              param->sched_priority, rc);
+       const int pid = getpid();
+       const char *pid_str = pidns_pid2str(PT_TGID);
+
+       long rc = syscall(__NR_sched_getparam, pid, param);
+       pidns_print_leader();
+       printf("sched_getparam(%d%s, [%d]) = %ld\n",
+              pid, pid_str, param->sched_priority, rc);
 
        param->sched_priority = -1;
-       rc = syscall(__NR_sched_setparam, 0, param);
-       printf("sched_setparam(0, [%d]) = %ld %s (%m)\n",
+       rc = syscall(__NR_sched_setparam, pid, param);
+       pidns_print_leader();
+       printf("sched_setparam(%d%s, [%d]) = %ld %s (%m)\n",
+              pid, pid_str,
               param->sched_priority, rc, errno2name());
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
diff --git a/tests/sched_xetscheduler--pidns-translation.c b/tests/sched_xetscheduler--pidns-translation.c
new file mode 100644 (file)
index 0000000..78b794b
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "sched_xetscheduler.c"
diff --git a/tests/sched_xetscheduler--pidns-translation.gen.test b/tests/sched_xetscheduler--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..12581e4
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched_xetscheduler--pidns-translation test_pidns -a22 -e trace=sched_getscheduler,sched_setscheduler); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a22 -e trace=sched_getscheduler,sched_setscheduler
index bc48085a4ee034bf82f53c571bb36c2d4660cb52..d93db3858890b3a7def3963bda63bd8f4149c236 100644 (file)
@@ -1,12 +1,13 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
+#include "pidns.h"
 
 #if defined __NR_sched_getscheduler && defined __NR_sched_setscheduler
 
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        TAIL_ALLOC_OBJECT_CONST_PTR(struct sched_param, param);
-       long rc = syscall(__NR_sched_getscheduler, 0);
+       const int pid = getpid();
+       const char *pid_str = pidns_pid2str(PT_TGID);
+
+       long rc = syscall(__NR_sched_getscheduler, pid);
        const char *scheduler;
        switch (rc) {
                case SCHED_FIFO:
@@ -50,33 +56,43 @@ main(void)
                default:
                        scheduler = "SCHED_OTHER";
        }
-       printf("sched_getscheduler(0) = %ld (%s)\n",
-              rc, scheduler);
+       pidns_print_leader();
+       printf("sched_getscheduler(%d%s) = %ld (%s)\n",
+              pid, pid_str, rc, scheduler);
 
        rc = syscall(__NR_sched_getscheduler, -1);
+       pidns_print_leader();
        printf("sched_getscheduler(-1) = %s\n", sprintrc(rc));
 
        param->sched_priority = -1;
 
-       rc = syscall(__NR_sched_setscheduler, 0, SCHED_FIFO, NULL);
-       printf("sched_setscheduler(0, SCHED_FIFO, NULL) = %s\n", sprintrc(rc));
+       rc = syscall(__NR_sched_setscheduler, pid, SCHED_FIFO, NULL);
+       pidns_print_leader();
+       printf("sched_setscheduler(%d%s, SCHED_FIFO, NULL) = %s\n",
+              pid, pid_str, sprintrc(rc));
 
-       rc = syscall(__NR_sched_setscheduler, 0, SCHED_FIFO, param + 1);
-       printf("sched_setscheduler(0, SCHED_FIFO, %p) = %s\n", param + 1,
-              sprintrc(rc));
+       rc = syscall(__NR_sched_setscheduler, pid, SCHED_FIFO, param + 1);
+       pidns_print_leader();
+       printf("sched_setscheduler(%d%s, SCHED_FIFO, %p) = %s\n",
+              pid, pid_str, param + 1, sprintrc(rc));
 
-       rc = syscall(__NR_sched_setscheduler, 0, 0xfaceda7a, param);
-       printf("sched_setscheduler(0, %#x /* SCHED_??? */, [%d]) = %s\n",
-              0xfaceda7a, param->sched_priority, sprintrc(rc));
+       rc = syscall(__NR_sched_setscheduler, pid, 0xfaceda7a, param);
+       pidns_print_leader();
+       printf("sched_setscheduler(%d%s, %#x /* SCHED_??? */, [%d]) = %s\n",
+              pid, pid_str, 0xfaceda7a,
+              param->sched_priority, sprintrc(rc));
 
        rc = syscall(__NR_sched_setscheduler, -1, SCHED_FIFO, param);
+       pidns_print_leader();
        printf("sched_setscheduler(-1, SCHED_FIFO, [%d]) = %s\n",
               param->sched_priority, sprintrc(rc));
 
-       rc = syscall(__NR_sched_setscheduler, 0, SCHED_FIFO, param);
-       printf("sched_setscheduler(0, SCHED_FIFO, [%d]) = %s\n",
-              param->sched_priority, sprintrc(rc));
+       rc = syscall(__NR_sched_setscheduler, pid, SCHED_FIFO, param);
+       pidns_print_leader();
+       printf("sched_setscheduler(%d%s, SCHED_FIFO, [%d]) = %s\n",
+              pid, pid_str, param->sched_priority, sprintrc(rc));
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
index 40b556171fe780eeb081ef056692509dc635172a..8a3d689f8197ee2506c5ec1107efabf5c038935d 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_sched_yield
 
index 98eaeee57bafea33fbcbaa3d57bf77d3e5220d80..b5f38ca566ad3bb8b9b91ed4a309e98a9cd92a52 100644 (file)
@@ -2,7 +2,7 @@
  * Check verbose decoding of seccomp SECCOMP_SET_MODE_FILTER.
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2019 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 #include <errno.h>
 #include <stddef.h>
 #include <stdio.h>
-#include <asm/unistd.h>
 #include <unistd.h>
-
-#ifdef HAVE_PRCTL
-# include <sys/prctl.h>
-#endif
+#include <sys/prctl.h>
 #ifdef HAVE_LINUX_SECCOMP_H
 # include <linux/seccomp.h>
 #endif
 #include <linux/filter.h>
+#include "scno.h"
 
 #if defined __NR_seccomp \
  && defined PR_SET_NO_NEW_PRIVS \
                BPF_STMT(BPF_RET|BPF_K, SECCOMP_RET_KILL)
 
 # define PRINT_ALLOW_SYSCALL(nr) \
-       tprintf("BPF_JUMP(BPF_JMP|BPF_K|BPF_JEQ, %#x, 0, 0x1), " \
-              "BPF_STMT(BPF_RET|BPF_K, SECCOMP_RET_ALLOW), ", \
-              __NR_ ## nr)
+       tprintf("BPF_JUMP(BPF_JMP|BPF_K|BPF_JEQ, %#lx, 0, 0x1), " \
+               "BPF_STMT(BPF_RET|BPF_K, SECCOMP_RET_ALLOW), ", \
+               (long) __NR_ ## nr)
 
 # define PRINT_DENY_SYSCALL(nr, err) \
-       tprintf("BPF_JUMP(BPF_JMP|BPF_K|BPF_JEQ, %#x, 0, 0x1), " \
-              "BPF_STMT(BPF_RET|BPF_K, SECCOMP_RET_ERRNO|%#x), ", \
-              __NR_ ## nr, err)
+       tprintf("BPF_JUMP(BPF_JMP|BPF_K|BPF_JEQ, %#lx, 0, 0x1), " \
+               "BPF_STMT(BPF_RET|BPF_K, SECCOMP_RET_ERRNO|%#x), ", \
+               (long) __NR_ ## nr, err)
 
 static const struct sock_filter filter_c[] = {
        /* load syscall number */
@@ -118,7 +115,8 @@ main(void)
        tprintf("seccomp(SECCOMP_SET_MODE_FILTER, %s, {len=%u, filter=[",
                "SECCOMP_FILTER_FLAG_TSYNC|SECCOMP_FILTER_FLAG_LOG|"
                "SECCOMP_FILTER_FLAG_SPEC_ALLOW|"
-               "SECCOMP_FILTER_FLAG_NEW_LISTENER|0xfffffff0",
+               "SECCOMP_FILTER_FLAG_NEW_LISTENER|"
+               "SECCOMP_FILTER_FLAG_TSYNC_ESRCH|0xffffffe0",
                prog->len);
        for (i = 0; i < BPF_MAXINSNS; ++i) {
                if (i)
index 5e28ffcae78bf3925e5d4720831288e4f80d1fdc..ef485dd82e98d0a4150b4cce4ec010bc943d9d96 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of seccomp SECCOMP_SET_MODE_FILTER.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2019 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -11,7 +11,7 @@
 #include "tests.h"
 
 #include <stdio.h>
-#include <asm/unistd.h>
+#include "scno.h"
 #include <unistd.h>
 
 #ifdef HAVE_LINUX_SECCOMP_H
@@ -38,12 +38,13 @@ main(void)
               " = %ld %s (%m)\n",
               "SECCOMP_FILTER_FLAG_TSYNC|SECCOMP_FILTER_FLAG_LOG|"
               "SECCOMP_FILTER_FLAG_SPEC_ALLOW|"
-              "SECCOMP_FILTER_FLAG_NEW_LISTENER|0xfffffff0",
+              "SECCOMP_FILTER_FLAG_NEW_LISTENER|"
+              "SECCOMP_FILTER_FLAG_TSYNC_ESRCH|0xffffffe0",
               prog->len, prog->filter, rc, errno2name());
 
-       rc = syscall(__NR_seccomp, SECCOMP_SET_MODE_FILTER, -16L, efault);
+       rc = syscall(__NR_seccomp, SECCOMP_SET_MODE_FILTER, -32L, efault);
        printf("seccomp(SECCOMP_SET_MODE_FILTER, %s, %p) = %ld %s (%m)\n",
-              "0xfffffff0 /* SECCOMP_FILTER_FLAG_??? */",
+              "0xffffffe0 /* SECCOMP_FILTER_FLAG_??? */",
               efault, rc, errno2name());
 
        puts("+++ exited with 0 +++");
index 1d088109c98dff7b968c151cf30829ded1efa5c4..fcf30e540b412d31c076c774a109a6c5bc910a7f 100644 (file)
@@ -2,13 +2,14 @@
  * Check how seccomp SECCOMP_SET_MODE_STRICT is decoded.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_seccomp && defined __NR_exit
 
@@ -37,7 +38,7 @@ main(void)
                rc = 0;
        } else {
                /*
-                * If kernel implementaton of SECCOMP_MODE_STRICT is buggy,
+                * If kernel implementation of SECCOMP_MODE_STRICT is buggy,
                 * the following syscall will result to SIGKILL.
                 */
                rc = write(1, text1, LENGTH_OF(text1)) != LENGTH_OF(text1);
index e61678f4cfb58ac844d1508cf395bfde206b7a16..6ae23b9600d9b818e200f6f5bfd7007538272879 100644 (file)
@@ -8,7 +8,7 @@
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_seccomp
 
index 7935032b2e576737c3b47339b16ae23bf271e920..d65d1364c2e97c48ac50faf079a64195e89e0e49 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_select && !defined __NR__newselect
 
diff --git a/tests/semop-common.c b/tests/semop-common.c
new file mode 100644 (file)
index 0000000..646a116
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+ * Copyright (c) 2016-2019 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include <sys/ipc.h>
+#include <sys/sem.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#define XLAT_MACROS_ONLY
+#include "xlat/semop_flags.h"
+#undef XLAT_MACROS_ONLY
+
+static const char *errstr;
+
+static long
+k_semop(const unsigned int semid,
+       const kernel_ulong_t sops,
+       const unsigned int nsops);
+
+union semun {
+       int val;
+       struct semid_ds *buf;
+       unsigned short *array;
+       struct seminfo *__buf;
+};
+
+static int id = -1;
+
+static void
+cleanup(void)
+{
+       semctl(id, 0, IPC_RMID, 0);
+       id = -1;
+}
+
+int
+main(void)
+{
+       static const int bogus_semid = 0xfdb97531;
+       static kernel_ulong_t bogus_sops = (kernel_ulong_t) -1ULL;
+       static const unsigned int bogus_nsops = 0xdeadbeefU;
+
+       id = semget(IPC_PRIVATE, 1, 0600);
+       if (id < 0)
+               perror_msg_and_skip("semget");
+       atexit(cleanup);
+
+       union semun sem_union = { .val = 0 };
+       if (semctl(id, 0, SETVAL, sem_union) == -1)
+               perror_msg_and_skip("semctl");
+
+       k_semop(bogus_semid, 0, bogus_nsops);
+       printf("semop(%d, NULL, %u) = %s\n",
+               bogus_semid, bogus_nsops, errstr);
+
+       k_semop(bogus_semid, bogus_sops, 1);
+       printf("semop(%d, %#llx, %u) = %s\n",
+               bogus_semid, (unsigned long long) bogus_sops, 1, errstr);
+
+       TAIL_ALLOC_OBJECT_CONST_PTR(struct sembuf, sem_b2);
+       sem_b2->sem_num = 0xface;
+       sem_b2->sem_op = 0xf00d;
+       sem_b2->sem_flg = 0xbeef;
+
+       k_semop(bogus_semid, (uintptr_t) sem_b2, 2);
+       printf("semop(%d, [{%hu, %hd, %s%s%#hx}, ... /* %p */], %u) = %s\n",
+               bogus_semid, sem_b2->sem_num, sem_b2->sem_op,
+               sem_b2->sem_flg & SEM_UNDO ? "SEM_UNDO|" : "",
+               sem_b2->sem_flg & IPC_NOWAIT ? "IPC_NOWAIT|" : "",
+               (short) (sem_b2->sem_flg & ~(SEM_UNDO | IPC_NOWAIT)),
+               sem_b2 + 1, 2, errstr);
+
+       TAIL_ALLOC_OBJECT_CONST_PTR(struct sembuf, sem_b);
+       sem_b->sem_num = 0;
+       sem_b->sem_op = 1;
+       sem_b->sem_flg = SEM_UNDO;
+
+       k_semop(id, (uintptr_t) sem_b, 1);
+       printf("semop(%d, [{0, 1, SEM_UNDO}], 1) = %s\n", id, errstr);
+
+       sem_b->sem_op = -1;
+       k_semop(id, (uintptr_t) sem_b, 1);
+       printf("semop(%d, [{0, -1, SEM_UNDO}], 1) = %s\n", id, errstr);
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
diff --git a/tests/semop-indirect.c b/tests/semop-indirect.c
new file mode 100644 (file)
index 0000000..452f7ba
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2016-2019 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#if defined __NR_ipc && !defined __ARM_EABI__
+
+# include "semop-common.c"
+
+# define XLAT_MACROS_ONLY
+# include "xlat/ipccalls.h"
+# undef XLAT_MACROS_ONLY
+
+static long
+k_semop(const unsigned int semid,
+       const kernel_ulong_t sops,
+       const unsigned int nsops)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = fill | SEMOP;
+       const kernel_ulong_t arg2 = fill | semid;
+       const kernel_ulong_t arg3 = fill | nsops;
+       const kernel_ulong_t arg5 = sops;
+       const long rc = syscall(__NR_ipc, arg1, arg2, arg3, bad, arg5, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_ipc && !__ARM_EABI__")
+
+#endif
diff --git a/tests/semop-indirect.gen.test b/tests/semop-indirect.gen.test
new file mode 100755 (executable)
index 0000000..b70a697
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (semop-indirect -a32 -e trace=semop); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -e trace=semop
index f7f047019028287a138efa6a8e64937e9e2a5a12..7725cd46342cc67beb1843041ffd52cde293394f 100644 (file)
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <sys/ipc.h>
-#include <sys/sem.h>
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
+#include "scno.h"
 
-#include "xlat.h"
-#include "xlat/semop_flags.h"
+#ifdef __NR_semop
 
-union semun {
-       int val;
-       struct semid_ds *buf;
-       unsigned short *array;
-       struct seminfo *__buf;
-};
+# include "semop-common.c"
 
-static int id = -1;
-
-static void
-cleanup(void)
+static long
+k_semop(const unsigned int semid,
+       const kernel_ulong_t sops,
+       const unsigned int nsops)
 {
-       semctl(id, 0, IPC_RMID, 0);
-       id = -1;
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = fill | semid;
+       const kernel_ulong_t arg2 = sops;
+       const kernel_ulong_t arg3 = fill | nsops;
+       const long rc = syscall(__NR_semop, arg1, arg2, arg3, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
 }
 
-int
-main(void)
-{
-       static const int bogus_semid = 0xfdb97531;
-       static void * const bogus_sops = (void *) -1L;
-       static const size_t bogus_nsops = (size_t) 0xdefaceddeadbeefULL;
-
-       TAIL_ALLOC_OBJECT_CONST_PTR(struct timespec, ts);
-       int rc;
-
-       id = semget(IPC_PRIVATE, 1, 0600);
-       if (id < 0)
-               perror_msg_and_skip("semget");
-       atexit(cleanup);
-
-       union semun sem_union = { .val = 0 };
-       if (semctl(id, 0, SETVAL, sem_union) == -1)
-               perror_msg_and_skip("semctl");
-
-       TAIL_ALLOC_OBJECT_CONST_PTR(struct sembuf, sem_b);
-       TAIL_ALLOC_OBJECT_CONST_PTR(struct sembuf, sem_b2);
-
-       rc = semop(bogus_semid, NULL, bogus_nsops);
-       printf("semop(%d, NULL, %u) = %s\n",
-               bogus_semid, (unsigned) bogus_nsops, sprintrc(rc));
-
-       rc = semop(bogus_semid, bogus_sops, 1);
-       printf("semop(%d, %p, %u) = %s\n",
-               bogus_semid, bogus_sops, 1, sprintrc(rc));
-
-       sem_b->sem_num = 0;
-       sem_b->sem_op = 1;
-       sem_b->sem_flg = SEM_UNDO;
-
-       sem_b2->sem_num = 0xface;
-       sem_b2->sem_op = 0xf00d;
-       sem_b2->sem_flg = 0xbeef;
+#else
 
-       rc = semop(bogus_semid, sem_b2, 2);
-       printf("semop(%d, [{%hu, %hd, %s%s%#hx}, ... /* %p */], %u) = %s\n",
-               bogus_semid, sem_b2->sem_num, sem_b2->sem_op,
-               sem_b2->sem_flg & SEM_UNDO ? "SEM_UNDO|" : "",
-               sem_b2->sem_flg & IPC_NOWAIT ? "IPC_NOWAIT|" : "",
-               (short) (sem_b2->sem_flg & ~(SEM_UNDO | IPC_NOWAIT)),
-               sem_b2 + 1, 2, sprintrc(rc));
+SKIP_MAIN_UNDEFINED("__NR_semop")
 
-       if (semop(id, sem_b, 1))
-               perror_msg_and_skip("semop, 1");
-       printf("semop(%d, [{0, 1, SEM_UNDO}], 1) = 0\n", id);
-
-       sem_b->sem_op = -1;
-       if (semop(id, sem_b, 1))
-               perror_msg_and_skip("semop, -1");
-       printf("semop(%d, [{0, -1, SEM_UNDO}], 1) = 0\n", id);
-
-       rc = semtimedop(bogus_semid, NULL, bogus_nsops, NULL);
-       printf("semtimedop(%d, NULL, %u, NULL) = %s\n",
-               bogus_semid, (unsigned) bogus_nsops, sprintrc(rc));
-
-       rc = semtimedop(id, sem_b + 1, 1, ts + 1);
-       printf("semtimedop(%d, %p, 1, %p) = %s\n",
-               id, sem_b + 1, ts + 1, sprintrc(rc));
-
-       ts->tv_sec = 1;
-       ts->tv_nsec = 123456789;
-       rc = semtimedop(bogus_semid, sem_b2, 2, ts);
-       printf("semtimedop(%d, [{%hu, %hd, %s%s%#hx}, ... /* %p */], %u"
-               ", {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
-               bogus_semid, sem_b2->sem_num, sem_b2->sem_op,
-               sem_b2->sem_flg & SEM_UNDO ? "SEM_UNDO|" : "",
-               sem_b2->sem_flg & IPC_NOWAIT ? "IPC_NOWAIT|" : "",
-               (short) (sem_b2->sem_flg & ~(SEM_UNDO | IPC_NOWAIT)),
-               sem_b2 + 1, 2,
-               (long long) ts->tv_sec, zero_extend_signed_to_ull(ts->tv_nsec),
-               sprintrc(rc));
-
-       sem_b->sem_op = 1;
-       if (semtimedop(id, sem_b, 1, NULL))
-               perror_msg_and_skip("semtimedop, 1");
-       printf("semtimedop(%d, [{0, 1, SEM_UNDO}], 1, NULL) = 0\n", id);
-
-       sem_b->sem_op = -1;
-       if (semtimedop(id, sem_b, 1, ts))
-               perror_msg_and_skip("semtimedop, -1");
-       printf("semtimedop(%d, [{0, -1, SEM_UNDO}], 1"
-              ", {tv_sec=%lld, tv_nsec=%llu}) = 0\n", id,
-              (long long) ts->tv_sec, zero_extend_signed_to_ull(ts->tv_nsec));
-
-       sem_b->sem_op = 1;
-       ts->tv_sec = 0xdeadbeefU;
-       ts->tv_nsec = 0xfacefeedU;
-       rc = semtimedop(id, sem_b, 1, ts);
-       printf("semtimedop(%d, [{0, 1, SEM_UNDO}], 1"
-              ", {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
-              id, (long long) ts->tv_sec,
-              zero_extend_signed_to_ull(ts->tv_nsec), sprintrc(rc));
-
-       sem_b->sem_op = -1;
-       ts->tv_sec = (time_t) 0xcafef00ddeadbeefLL;
-       ts->tv_nsec = (long) 0xbadc0dedfacefeedLL;
-       rc = semtimedop(id, sem_b, 1, ts);
-       printf("semtimedop(%d, [{0, -1, SEM_UNDO}], 1"
-              ", {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
-              id, (long long) ts->tv_sec,
-              zero_extend_signed_to_ull(ts->tv_nsec), sprintrc(rc));
-
-       puts("+++ exited with 0 +++");
-       return 0;
-}
+#endif
index 21b67eadaba389b7bee08154e2c09330adfb5dcc..4199975aa3a2533dd6c190a1ac5c0c3f935d9c9e 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (semop -a32 -e trace=semop,semtimedop); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (semop -a32 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a32 -e trace=semop,semtimedop
+run_strace_match_diff -a32 
diff --git a/tests/semtimedop.c b/tests/semtimedop.c
new file mode 100644 (file)
index 0000000..e3cea32
--- /dev/null
@@ -0,0 +1,155 @@
+/*
+ * Copyright (c) 2016-2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#if defined __NR_semtimedop || defined __NR_socketcall
+
+# include <sys/ipc.h>
+# include <sys/sem.h>
+# include <stdint.h>
+# include <stdio.h>
+# include <stdlib.h>
+# include <unistd.h>
+
+# define XLAT_MACROS_ONLY
+#  include "xlat/semop_flags.h"
+# undef XLAT_MACROS_ONLY
+
+union semun {
+       int val;
+       struct semid_ds *buf;
+       unsigned short *array;
+       struct seminfo *__buf;
+};
+
+static int id = -1;
+
+static void
+cleanup(void)
+{
+       semctl(id, 0, IPC_RMID, 0);
+       id = -1;
+}
+
+int
+main(void)
+{
+       static const int bogus_semid = 0xfdb97531;
+       static void * const bogus_sops = (void *) -1L;
+       static const size_t bogus_nsops = (size_t) 0xdefaceddeadbeefULL;
+
+       TAIL_ALLOC_OBJECT_CONST_PTR(struct timespec, ts);
+       int rc;
+
+       id = semget(IPC_PRIVATE, 1, 0600);
+       if (id < 0)
+               perror_msg_and_skip("semget");
+       atexit(cleanup);
+
+       union semun sem_union = { .val = 0 };
+       if (semctl(id, 0, SETVAL, sem_union) == -1)
+               perror_msg_and_skip("semctl");
+
+       TAIL_ALLOC_OBJECT_CONST_PTR(struct sembuf, sem_b);
+       TAIL_ALLOC_OBJECT_CONST_PTR(struct sembuf, sem_b2);
+
+       rc = semtimedop(bogus_semid, NULL, bogus_nsops, NULL);
+       printf("semtimedop(%d, NULL, %u, NULL) = %s\n",
+              bogus_semid, (unsigned) bogus_nsops, sprintrc(rc));
+
+       rc = semtimedop(bogus_semid, bogus_sops, 1, NULL);
+       printf("semtimedop(%d, %p, %u, NULL) = %s\n",
+              bogus_semid, bogus_sops, 1, sprintrc(rc));
+
+       sem_b->sem_num = 0;
+       sem_b->sem_op = 1;
+       sem_b->sem_flg = SEM_UNDO;
+
+       sem_b2->sem_num = 0xface;
+       sem_b2->sem_op = 0xf00d;
+       sem_b2->sem_flg = 0xbeef;
+
+       rc = semtimedop(bogus_semid, sem_b2, 2, NULL);
+       printf("semtimedop(%d, [{%hu, %hd, %s%s%#hx}, ... /* %p */], %u"
+              ", NULL) = %s\n",
+              bogus_semid, sem_b2->sem_num, sem_b2->sem_op,
+              sem_b2->sem_flg & SEM_UNDO ? "SEM_UNDO|" : "",
+              sem_b2->sem_flg & IPC_NOWAIT ? "IPC_NOWAIT|" : "",
+              (short) (sem_b2->sem_flg & ~(SEM_UNDO | IPC_NOWAIT)),
+              sem_b2 + 1, 2, sprintrc(rc));
+
+       if (semtimedop(id, sem_b, 1, NULL))
+               perror_msg_and_skip("semtimedop, 1");
+       printf("semtimedop(%d, [{0, 1, SEM_UNDO}], 1, NULL) = 0\n", id);
+
+       sem_b->sem_op = -1;
+       if (semtimedop(id, sem_b, 1, NULL))
+               perror_msg_and_skip("semtimedop, -1");
+       printf("semtimedop(%d, [{0, -1, SEM_UNDO}], 1, NULL) = 0\n", id);
+
+       rc = semtimedop(bogus_semid, NULL, bogus_nsops, NULL);
+       printf("semtimedop(%d, NULL, %u, NULL) = %s\n",
+               bogus_semid, (unsigned) bogus_nsops, sprintrc(rc));
+
+       rc = semtimedop(id, sem_b + 1, 1, ts + 1);
+       printf("semtimedop(%d, %p, 1, %p) = %s\n",
+               id, sem_b + 1, ts + 1, sprintrc(rc));
+
+       ts->tv_sec = 1;
+       ts->tv_nsec = 123456789;
+       rc = semtimedop(bogus_semid, sem_b2, 2, ts);
+       printf("semtimedop(%d, [{%hu, %hd, %s%s%#hx}, ... /* %p */], %u"
+               ", {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+               bogus_semid, sem_b2->sem_num, sem_b2->sem_op,
+               sem_b2->sem_flg & SEM_UNDO ? "SEM_UNDO|" : "",
+               sem_b2->sem_flg & IPC_NOWAIT ? "IPC_NOWAIT|" : "",
+               (short) (sem_b2->sem_flg & ~(SEM_UNDO | IPC_NOWAIT)),
+               sem_b2 + 1, 2,
+               (long long) ts->tv_sec, zero_extend_signed_to_ull(ts->tv_nsec),
+               sprintrc(rc));
+
+       sem_b->sem_op = 1;
+       if (semtimedop(id, sem_b, 1, NULL))
+               perror_msg_and_skip("semtimedop, 1");
+       printf("semtimedop(%d, [{0, 1, SEM_UNDO}], 1, NULL) = 0\n", id);
+
+       sem_b->sem_op = -1;
+       if (semtimedop(id, sem_b, 1, ts))
+               perror_msg_and_skip("semtimedop, -1");
+       printf("semtimedop(%d, [{0, -1, SEM_UNDO}], 1"
+              ", {tv_sec=%lld, tv_nsec=%llu}) = 0\n", id,
+              (long long) ts->tv_sec, zero_extend_signed_to_ull(ts->tv_nsec));
+
+       sem_b->sem_op = 1;
+       ts->tv_sec = 0xdeadbeefU;
+       ts->tv_nsec = 0xfacefeedU;
+       rc = semtimedop(id, sem_b, 1, ts);
+       printf("semtimedop(%d, [{0, 1, SEM_UNDO}], 1"
+              ", {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+              id, (long long) ts->tv_sec,
+              zero_extend_signed_to_ull(ts->tv_nsec), sprintrc(rc));
+
+       sem_b->sem_op = -1;
+       ts->tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+       ts->tv_nsec = (long) 0xbadc0dedfacefeedLL;
+       rc = semtimedop(id, sem_b, 1, ts);
+       printf("semtimedop(%d, [{0, -1, SEM_UNDO}], 1"
+              ", {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+              id, (long long) ts->tv_sec,
+              zero_extend_signed_to_ull(ts->tv_nsec), sprintrc(rc));
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_semtimedop || __NR_socketcall")
+
+#endif
diff --git a/tests/semtimedop.gen.test b/tests/semtimedop.gen.test
new file mode 100755 (executable)
index 0000000..1c767ff
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (semtimedop  ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff  
index 6ef3232ef73ac1594e37eb6bf83c66f87d986d33..cb6dd388709c87d06dedd087e98b5a1c1bffd16f 100644 (file)
@@ -1,13 +1,13 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_sendfile
 
@@ -50,14 +50,9 @@ main(void)
        const unsigned int blen = file_size / 3;
        const unsigned int alen = file_size - blen;
 
-       static const char fname[] = "sendfile-tmpfile";
-       int reg_in = open(fname, O_RDWR | O_CREAT | O_TRUNC, 0600);
-       if (reg_in < 0)
-               perror_msg_and_fail("open: %s", fname);
-       if (unlink(fname))
-               perror_msg_and_fail("unlink: %s", fname);
+       int reg_in = create_tmpfile(O_RDWR);
        if (ftruncate(reg_in, file_size))
-               perror_msg_and_fail("ftruncate: %s", fname);
+               perror_msg_and_fail("ftruncate(%d, %u)", reg_in, file_size);
 
        TAIL_ALLOC_OBJECT_VAR_PTR(uint32_t, p_off);
        void *p = p_off + 1;
index c318ace8da9f4558e2fbcdf9ecc1a41b87dcfcf7..9bcf1fc7b920ebf09a75ff053647e25bbb4ce646 100644 (file)
@@ -1,13 +1,13 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_sendfile64
 
@@ -50,14 +50,9 @@ main(void)
        const unsigned int blen = file_size / 3;
        const unsigned int alen = file_size - blen;
 
-       static const char fname[] = "sendfile64-tmpfile";
-       int reg_in = open(fname, O_RDWR | O_CREAT | O_TRUNC, 0600);
-       if (reg_in < 0)
-               perror_msg_and_fail("open: %s", fname);
-       if (unlink(fname))
-               perror_msg_and_fail("unlink: %s", fname);
+       int reg_in = create_tmpfile(O_RDWR);
        if (ftruncate(reg_in, file_size))
-               perror_msg_and_fail("ftruncate: %s", fname);
+               perror_msg_and_fail("ftruncate(%d, %u)", reg_in, file_size);
 
        TAIL_ALLOC_OBJECT_CONST_PTR(uint64_t, p_off);
        void *p = p_off + 1;
diff --git a/tests/set_mempolicy-Xabbrev.c b/tests/set_mempolicy-Xabbrev.c
new file mode 100644 (file)
index 0000000..2dbc487
--- /dev/null
@@ -0,0 +1 @@
+#include "set_mempolicy.c"
diff --git a/tests/set_mempolicy-Xabbrev.gen.test b/tests/set_mempolicy-Xabbrev.gen.test
new file mode 100755 (executable)
index 0000000..f27e985
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (set_mempolicy-Xabbrev -a34 -s3 -Xabbrev -e trace=set_mempolicy); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a34 -s3 -Xabbrev -e trace=set_mempolicy
diff --git a/tests/set_mempolicy-Xraw.c b/tests/set_mempolicy-Xraw.c
new file mode 100644 (file)
index 0000000..47436b5
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "set_mempolicy.c"
diff --git a/tests/set_mempolicy-Xraw.gen.test b/tests/set_mempolicy-Xraw.gen.test
new file mode 100755 (executable)
index 0000000..3b5a6a4
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (set_mempolicy-Xraw -a24 -s3 -Xraw -e trace=set_mempolicy); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a24 -s3 -Xraw -e trace=set_mempolicy
diff --git a/tests/set_mempolicy-Xverbose.c b/tests/set_mempolicy-Xverbose.c
new file mode 100644 (file)
index 0000000..0396cb4
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "set_mempolicy.c"
diff --git a/tests/set_mempolicy-Xverbose.gen.test b/tests/set_mempolicy-Xverbose.gen.test
new file mode 100755 (executable)
index 0000000..741229e
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (set_mempolicy-Xverbose -s3 -Xverbose -e trace=set_mempolicy); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -s3 -Xverbose -e trace=set_mempolicy
index 46703713f2dca92c3cc4f09abfe5f9c738303466..ee65c4c97c10adc6c566ec515658a9a3f09a8b46 100644 (file)
@@ -2,29 +2,92 @@
  * Check decoding of set_mempolicy syscall.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_set_mempolicy
 
-# include <errno.h>
 # include <stdio.h>
 # include <string.h>
 # include <unistd.h>
 
-# include "xlat.h"
-# include "xlat/policies.h"
-
 # define MAX_STRLEN 3
 # define NLONGS(n) ((n + 8 * sizeof(long) - 2) \
                      / (8 * sizeof(long)))
 
+static const char *errstr;
+
+static long
+k_set_mempolicy(const unsigned int mode,
+               const void *const nmask,
+               const unsigned long maxnode)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = fill | mode;
+       const kernel_ulong_t arg2 = (unsigned long) nmask;
+       const kernel_ulong_t arg3 = maxnode;
+       const long rc = syscall(__NR_set_mempolicy,
+                               arg1, arg2, arg3, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
+# if XLAT_RAW
+#  define out_str      raw
+# elif XLAT_VERBOSE
+#  define out_str      verbose
+# else
+#  define out_str      abbrev
+# endif
+
+static struct {
+       unsigned int val;
+       const char *raw;
+       const char *verbose;
+       const char *abbrev;
+} mpol_modes[] = {
+       { ARG_STR(0),
+         "0 /* MPOL_DEFAULT */",
+         "MPOL_DEFAULT" },
+       { ARG_STR(0x1),
+         "0x1 /* MPOL_PREFERRED */",
+         "MPOL_PREFERRED" },
+       { ARG_STR(0x2),
+         "0x2 /* MPOL_BIND */",
+         "MPOL_BIND" },
+       { ARG_STR(0x3),
+         "0x3 /* MPOL_INTERLEAVE */",
+         "MPOL_INTERLEAVE" },
+       { ARG_STR(0x4),
+         "0x4 /* MPOL_LOCAL */",
+         "MPOL_LOCAL" },
+       { ARG_STR(0x8000),
+         "0x8000 /* MPOL_DEFAULT|MPOL_F_STATIC_NODES */",
+         "MPOL_DEFAULT|MPOL_F_STATIC_NODES" },
+       { ARG_STR(0x4001),
+         "0x4001 /* MPOL_PREFERRED|MPOL_F_RELATIVE_NODES */",
+         "MPOL_PREFERRED|MPOL_F_RELATIVE_NODES" },
+       { ARG_STR(0xc002),
+         "0xc002 /* MPOL_BIND|MPOL_F_STATIC_NODES|MPOL_F_RELATIVE_NODES */",
+         "MPOL_BIND|MPOL_F_STATIC_NODES|MPOL_F_RELATIVE_NODES" },
+       { ARG_STR(0x5),
+         "0x5 /* MPOL_??? */",
+         "0x5 /* MPOL_??? */" },
+       { ARG_STR(0xffff3fff),
+         "0xffff3fff /* MPOL_??? */",
+         "0xffff3fff /* MPOL_??? */" },
+       { ARG_STR(0xffffffff),
+         "0xffffffff /* MPOL_F_STATIC_NODES|MPOL_F_RELATIVE_NODES|0xffff3fff */",
+         "MPOL_F_STATIC_NODES|MPOL_F_RELATIVE_NODES|0xffff3fff" }
+};
+
 static void
 print_nodes(const unsigned long maxnode, unsigned int offset)
 {
@@ -38,10 +101,9 @@ print_nodes(const unsigned long maxnode, unsigned int offset)
                tail_alloc(size ? size : (offset ? 1 : 0));
        memset(nodemask, 0, size);
 
-       long rc = syscall(__NR_set_mempolicy, 0, nodemask, maxnode);
-       const char *errstr = sprintrc(rc);
+       k_set_mempolicy(mpol_modes[0].val, nodemask, maxnode);
 
-       fputs("set_mempolicy(MPOL_DEFAULT, ", stdout);
+       printf("set_mempolicy(%s, ", mpol_modes[0].out_str);
 
        if (nlongs) {
                putc('[', stdout);
@@ -103,15 +165,24 @@ test_offset(const unsigned int offset)
 int
 main(void)
 {
-       if (syscall(__NR_set_mempolicy, 0, 0, 0))
+       if (k_set_mempolicy(mpol_modes[0].val, 0, 0))
                perror_msg_and_skip("set_mempolicy");
-       puts("set_mempolicy(MPOL_DEFAULT, NULL, 0) = 0");
+       printf("set_mempolicy(%s, NULL, 0) = 0\n", mpol_modes[0].out_str);
 
        const unsigned long *nodemask = (void *) 0xfacefeedfffffffeULL;
-       const unsigned long maxnode = (unsigned long) 0xcafef00dbadc0dedULL;
-       long rc = syscall(__NR_set_mempolicy, 1, nodemask, maxnode);
-       printf("set_mempolicy(MPOL_PREFERRED, %p, %lu) = %s\n",
-              nodemask, maxnode, sprintrc(rc));
+       const unsigned long maxnode = (unsigned long) 0xcafef00ddeadbeefULL;
+
+       for (unsigned int i = 0; i < ARRAY_SIZE(mpol_modes); ++i) {
+               if (i) {
+                       k_set_mempolicy(mpol_modes[i].val, 0, 0);
+                       printf("set_mempolicy(%s, NULL, 0) = %s\n",
+                              mpol_modes[i].out_str, errstr);
+               }
+
+               k_set_mempolicy(mpol_modes[i].val, nodemask, maxnode);
+               printf("set_mempolicy(%s, %p, %lu) = %s\n",
+                      mpol_modes[i].out_str, nodemask, maxnode, errstr);
+       }
 
        test_offset(0);
        test_offset(1);
index f8c81c759ba0486eecb4b92b4ee0e60c0c010374..a527e6af766a8d2c15fcd3d374b497313dac64b2 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (set_mempolicy -s3 -a35); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (set_mempolicy -a34 -s3); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -s3 -a35
+run_strace_match_diff -a34 -s3
index 747359c24af384baae1be50dcf31422c3e002794..9fa56c1482adcbf31b87c5648a2ccdadfee758a8 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2013-2015 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2013-2018 The strace developers.
+ * Copyright (c) 2013-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -9,25 +9,21 @@
 #include "tests.h"
 #include <stdio.h>
 #include <unistd.h>
-#ifdef HAVE_PRCTL
-# include <sys/prctl.h>
-#endif
+#include <sys/prctl.h>
 
 int main(int argc, char **argv)
 {
        if (argc < 2)
                return 99;
-#ifdef HAVE_PRCTL
        /* Turn off restrictions on tracing if applicable.  If the command
         * aren't available on this system, that's OK too.  */
-# ifndef PR_SET_PTRACER
-#  define PR_SET_PTRACER 0x59616d61
-# endif
-# ifndef PR_SET_PTRACER_ANY
-#  define PR_SET_PTRACER_ANY -1UL
-# endif
-       (void) prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY, 0, 0, 0);
+#ifndef PR_SET_PTRACER
+# define PR_SET_PTRACER 0x59616d61
 #endif
+#ifndef PR_SET_PTRACER_ANY
+# define PR_SET_PTRACER_ANY -1UL
+#endif
+       (void) prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY, 0, 0, 0);
        if (write(1, "\n", 1) != 1) {
                perror("write");
                return 99;
index 177c0fd7a989a8063b9dde521fe8b65ca71fc845..c2ff8eaafc9e020c0aea1beee78f2ced3adab481 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setdomainname
 
index 496b267988a2e9e6964f45dd204ca6f499dfed18..74d642c4dc383d66d61ab686408aa086d74835ff 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setfsgid
 
index a931602c06517fc9762d97d291137d2c2129dd6c..29b41a9b178ff94c4ba4d1972da90e0e5fb8338a 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setfsgid32
 
index 269d38f2ead57c800a088cbfa1bfd543ce8ea119..78d4eb529c4f0f2089455d90a4aac5b802b2d7df 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setfsuid
 
index cfcc0f83b977b269ab403aa4d1b3a1e896d3aa20..2d4fa83594ce97746355eaeb3e13fd822a2734e9 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setfsuid32
 
index 3374924ae1ff14c8d32321cf0635a483e9e9e4e7..aba372b89a28a4e5f734be888037e1d3bc2c0f3a 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setgid
 
index 427c77b04e9633e4da1252730c06262979d8cfc2..ac695e18c29f1ee2bd895878002eac1cebae541f 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setgid32
 
index a47f10242a92d5728c932142a4afd176c0cca341..a18fdc17dfd4911ac0f3425b736302653f691bea 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of setgroups/setgroups32 syscalls.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -17,7 +17,7 @@
 #else
 
 # include "tests.h"
-# include <asm/unistd.h>
+# include "scno.h"
 
 # ifdef __NR_setgroups
 
index 935b73a99f89fdcc8b78c973c028dcba105e0516..eb111f04aa7a46d3fa55a5145a18bb412065eacd 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setgroups32
 
index c9b89c12054b4dc540dc29d3bee85383f3124704..844fb6b8bd6c9e251bba04814d5396b02e4d1634 100644 (file)
@@ -3,14 +3,14 @@
  *
  * Copyright (c) 2016 Fei Jie <feij.fnst@cn.fujitsu.com>
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_sethostname
 
index 8ef7a19b1a562fa087e9c71f89f60f41bea9aa5f..21a8dc6a5487efa37cd3d1722c916b7bc1051d6a 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of setns syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setns
 
diff --git a/tests/setpgrp-exec.c b/tests/setpgrp-exec.c
new file mode 100644 (file)
index 0000000..8a84d43
--- /dev/null
@@ -0,0 +1,22 @@
+/*
+ * Copyright (c) 2020 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <unistd.h>
+
+int main(int argc, char **argv)
+{
+       if (argc < 2)
+               error_msg_and_fail("argc < 2");
+
+       if (setpgid(0, 0))
+               perror_msg_and_fail("setpgid");
+
+       (void) execvp(argv[1], argv + 1);
+
+       perror_msg_and_fail("execvp: %s", argv[1]);
+}
index 68639e6ad50d5037435358fed3349309842393c3..232a140ab49aaf2a71ddfb1b4004dc439f15b33e 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setregid
 
index 6291bc58a4e83d859317ab30e3cb7cb97db0eeb9..fca985ed8eb5fcf5cff22274a9686e4ab3ca6d69 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setregid32
 
index f3a160e37de76e27f10896b53924b11fb8223c80..6f64d0b06d96d8c641b0746eedbe6a7fe7ee5641 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setresgid
 
index e05ae8f8dd966c391eec2826af11e2f35456a1b3..45d252e69d3b36c500f36b2b4603eddffe3ced84 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setresgid32
 
index 855a9bf70290784043353ba174f851bf5dfeda72..d0821c39b0b5e7f302b57c90744624b629d34fac 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setresuid
 
index ccfc2a51c83240368a26014165ea312a1398105d..a8201810634242e62ecd5325540e647d4cf7b95e 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setresuid32
 
index 1e34dd181011740140b9385e88930a2e889d2fff..c1279c9c39486be9d0251f1492f19e5aaa1112b7 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setreuid
 
index c0345db793a92a9d883206ca82b75d0e2226e301..903a2203b98d13ba0ae191e4a46cefc87022cd00 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setreuid32
 
index 099e24020d2d1b5d36ee707ef6bfb4e7a7d0c2ea..886cf65acdbdee9b43dce944e9e14a54374aec0c 100644 (file)
@@ -9,7 +9,7 @@
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setrlimit
 
@@ -19,9 +19,13 @@ int
 main(void)
 {
        kernel_ulong_t *const rlimit = tail_alloc(sizeof(*rlimit) * 2);
-       const struct xlat *xlat;
+       const struct xlat_data *xlat;
+       size_t i = 0;
+
+       for (xlat = resources->data, i = 0; i < resources->size; ++xlat, ++i) {
+               if (!xlat->str)
+                       continue;
 
-       for (xlat = resources; xlat->str; ++xlat) {
                unsigned long res = 0xfacefeed00000000ULL | xlat->val;
                long rc = syscall(__NR_setrlimit, res, 0);
 # if XLAT_RAW
index 4a8243e8919856b377a4faa0b27aa4ecdae7c51a..dcbe8ae0811b590069ac3366164d19b05dd2110b 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setuid
 
index ba1b2e2da1ea90fcdd0cfe0b0d952cec21d81ddf..8de08a725e222f63874504268a6babff8d1ea47b 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_setuid32
 
index fe6280ce84d33196606267b6808c5d8c8be0e225..182fdae825f61b827e4cabec5bbf198394107653 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of sigaction syscall.
  *
  * Copyright (c) 2014-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2014-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_sigaction
 
@@ -156,7 +157,7 @@ main(void)
        sigdelset(mask.libc, SIGHUP);
 
        memcpy(new_act->mask, mask.old, sizeof(mask.old));
-# ifdef SA_RESTORER
+# if defined SA_RESTORER && !(defined ALPHA || defined MIPS)
        new_act->flags = SA_RESTORER;
        new_act->restorer = (unsigned long) 0xdeadfacecafef00dULL;
 #  define SA_RESTORER_FMT ", sa_flags=SA_RESTORER, sa_restorer=%#lx"
index ab1eaeb7cacb088cd53c47e2986089bbf8add685..cfcc75cbd9b525b335bcd28d540a278e60117ebf 100755 (executable)
@@ -4,7 +4,7 @@
 # Starting with commit v4.17-5-gf83b49b strace is expected
 # to forward the signal mask to tracees unchanged.
 #
-# Copyright (c) 2017-2018 The strace developers.
+# Copyright (c) 2017-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -20,7 +20,7 @@ for sig in $(../list_sigaction_signum); do
                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
+               for i in '' -I1 -Iwaiting --interruptible=3 --interruptible=never_tstp; do
                        run_strace $i -enone $check_cmd
                done
        done
index 07a8180c65edcf22809a431131adfe7f3b96d286..e5555d61dcd55466acbe50447d553a9ecfb8d91b 100755 (executable)
@@ -4,7 +4,7 @@
 # Starting with commit v4.17-8-ge97a66f strace is expected
 # to forward the signal disposition to tracees unchanged.
 #
-# Copyright (c) 2017-2018 The strace developers.
+# Copyright (c) 2017-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -20,7 +20,7 @@ for sig in $(../list_sigaction_signum); do
                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
+               for i in '' --interruptible=always --interruptible=2 -Inever -I4; do
                        run_strace $i -enone $check_cmd
                done
        done
index 7789ff279535c33c890dff8dc6e377cea14a405e..c7e57ec6e1c9a0b33d0c30406b7fe22ccbc05ee4 100644 (file)
@@ -2,6 +2,7 @@
  * Check SIGCHLD siginfo_t decoding.
  *
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -63,7 +64,7 @@ main(void)
 
        sigsuspend(&unblock_mask);
        tprintf("--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED"
-               ", si_pid=%d, si_uid=%u, si_status=%d"
+               ", si_pid=%d, si_uid=%d, si_status=%d"
                ", si_utime=%llu, si_stime=%llu} ---\n",
                sinfo.si_pid, sinfo.si_uid, sinfo.si_status,
                zero_extend_signed_to_ull(sinfo.si_utime),
@@ -94,7 +95,7 @@ main(void)
 
        sigsuspend(&unblock_mask);
        tprintf("--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_KILLED"
-               ", si_pid=%d, si_uid=%u, si_status=SIGUSR1"
+               ", si_pid=%d, si_uid=%d, si_status=SIGUSR1"
                ", si_utime=%llu, si_stime=%llu} ---\n",
                sinfo.si_pid, sinfo.si_uid,
                zero_extend_signed_to_ull(sinfo.si_utime),
@@ -121,7 +122,7 @@ main(void)
 
        sigsuspend(&unblock_mask);
        tprintf("--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_STOPPED"
-               ", si_pid=%d, si_uid=%u, si_status=SIGSTOP"
+               ", si_pid=%d, si_uid=%d, si_status=SIGSTOP"
                ", si_utime=%llu, si_stime=%llu} ---\n",
                sinfo.si_pid, sinfo.si_uid,
                zero_extend_signed_to_ull(sinfo.si_utime),
@@ -131,7 +132,7 @@ main(void)
 
        sigsuspend(&unblock_mask);
        tprintf("--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_CONTINUED"
-               ", si_pid=%d, si_uid=%u, si_status=SIGCONT"
+               ", si_pid=%d, si_uid=%d, si_status=SIGCONT"
                ", si_utime=%llu, si_stime=%llu} ---\n",
                sinfo.si_pid, sinfo.si_uid,
                zero_extend_signed_to_ull(sinfo.si_utime),
@@ -142,7 +143,7 @@ main(void)
 
        sigsuspend(&unblock_mask);
        tprintf("--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED"
-               ", si_pid=%d, si_uid=%u, si_status=0"
+               ", si_pid=%d, si_uid=%d, si_status=0"
                ", si_utime=%llu, si_stime=%llu} ---\n",
                sinfo.si_pid, sinfo.si_uid,
                zero_extend_signed_to_ull(sinfo.si_utime),
index 40cd77f5c053687050d9e55c45525286d53e7bc3..db5a19a9f48ee15908ef851aa5069f1280f7a0c1 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of signal syscall.
  *
  * Copyright (c) 2017-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_signal
 
diff --git a/tests/signal_receive--pidns-translation.c b/tests/signal_receive--pidns-translation.c
new file mode 100644 (file)
index 0000000..b4e3b2f
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "signal_receive.c"
diff --git a/tests/signal_receive--pidns-translation.gen.test b/tests/signal_receive--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..6306900
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (signal_receive--pidns-translation test_pidns -a16 -e trace=kill); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a16 -e trace=kill
index ad3b4ebd57643cc6d491b584738486067c9d5d01..46cac57121e70a62215c848473f161b810109422 100644 (file)
@@ -1,13 +1,14 @@
 /*
  * Check decoding of signal delivery.
  *
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
+#include "pidns.h"
 #include <signal.h>
 #include <stdio.h>
 #include <unistd.h>
@@ -26,10 +27,13 @@ handler(int sig, siginfo_t *info, void *ucontext)
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        static const char prefix[] = "KERNEL BUG";
        int printed = 0;
 
        const int pid = getpid();
+       const char *pid_str = pidns_pid2str(PT_TGID);
        const int uid = geteuid();
 
        for (int sig = 1; sig <= 31; ++sig) {
@@ -73,10 +77,13 @@ main(void)
                const int e_pid = s_pid;
                const int e_uid = s_uid;
 #endif
-               printf("kill(%d, %s) = 0\n", pid, signal2name(sig));
-               printf("--- %s {si_signo=%s, si_code=SI_USER, si_pid=%d"
+               pidns_print_leader();
+               printf("kill(%d%s, %s) = 0\n", pid, pid_str, signal2name(sig));
+               pidns_print_leader();
+               printf("--- %s {si_signo=%s, si_code=SI_USER, si_pid=%d%s"
                       ", si_uid=%d} ---\n",
-                      signal2name(sig), signal2name(e_sig), e_pid, e_uid);
+                      signal2name(sig), signal2name(e_sig),
+                      e_pid, pid_str, e_uid);
 
                if (s_code || sig != s_sig || pid != s_pid || uid != s_uid) {
                        /*
@@ -91,11 +98,11 @@ main(void)
                        }
                        fprintf(stderr,
                                "%s: expected: si_signo=%d, si_code=%d"
-                               ", si_pid=%d, si_uid=%d\n"
+                               ", si_pid=%d%s, si_uid=%d\n"
                                "%s: received: si_signo=%d, si_code=%d"
-                               ", si_pid=%d, si_uid=%d\n",
-                               prefix, sig, SI_USER, pid, uid,
-                               prefix, sig, s_code, s_pid, s_uid);
+                               ", si_pid=%d%s, si_uid=%d\n",
+                               prefix, sig, SI_USER, pid, pid_str, uid,
+                               prefix, sig, s_code, s_pid, pid_str, s_uid);
                }
        }
 
@@ -104,6 +111,7 @@ main(void)
                        "*** PLEASE FIX THE KERNEL ***\n", prefix);
        }
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
index 71df2dccef0622e57f604dbfced641bc364882d6..0ab6d21dd8b6b39292b0a87eafc966725d2a3b14 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of signalfd4 syscall.
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 
 #include "tests.h"
 #include <fcntl.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined HAVE_SYS_SIGNALFD_H \
  && defined HAVE_SIGNALFD \
index f065c8738662807f695ff18bf2b6539d8f5e0eb3..f39b3a483e3f630460e7d99d699a94894ad5c449 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of sigpending syscall.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_sigpending
 
index 566b8346e6f63e99191941c2dad933c712b7fcf8..4ab36d0002011d8c34b89ba4eb46285b8b655228 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of sigprocmask syscall.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_sigprocmask
 
index 5dece0a415510215004cb47ef0cf0ac32441a62d..4b7516a632099334471ca1f8e4a7d898c0712fde 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __powerpc64__ \
  || (defined __sparc__ && defined __arch64__)
index 11ffae83cdec3f5855ab8769111aa00e49b55158..165c68fa301344e155f31b05520e6a8d9443b729 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of sigsuspend syscall.
  *
  * Copyright (c) 2017-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_sigsuspend
 
index 0cdfcebc94e20efa26125139fea50c8a41cd81e1..f8fca44648a6017eebb1782e5ca109a59b144d8a 100644 (file)
@@ -2,14 +2,21 @@
  * A simple nanosleep based sleep(1) replacement.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <stdlib.h>
-#include <time.h>
+#include "scno.h"
+
+#ifdef __NR_nanosleep
+
+# include <stdlib.h>
+# include <unistd.h>
+
+# include "kernel_old_timespec.h"
 
 int
 main(int ac, char **av)
@@ -20,10 +27,16 @@ main(int ac, char **av)
        if (ac > 2)
                error_msg_and_fail("extra operand");
 
-       struct timespec ts = { atoi(av[1]), 0 };
+       kernel_old_timespec_t ts = { atoi(av[1]), 0 };
 
-       if (nanosleep(&ts, NULL))
+       if (syscall(__NR_nanosleep, (unsigned long) &ts, 0))
                perror_msg_and_fail("nanosleep");
 
        return 0;
 }
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_nanosleep")
+
+#endif
index 2592a3c178d37031a42d953848395c0b58be7ae6..03211ab91334f061fa04ba80ad23fb9b77ebad78 100644 (file)
@@ -2,6 +2,7 @@
  * Check decoding of SO_ERROR socket option.
  *
  * Copyright (c) 2018 Masatake YAMATO <yamato@redhat.com>
+ * Copyright (c) 2018-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -37,7 +38,7 @@ reserve_ephemeral_port(void)
        for (in_port_t port = 49152; port < 61000; port++) {
                /* Just bind here. No listen. */
                addr.sin_port = htons(port);
-               if (bind(sd, &addr, sizeof(addr)) == 0)
+               if (bind(sd, (void *) &addr, sizeof(addr)) == 0)
                        return port;
        }
        error_msg_and_skip("no ephemeral port available for test purposes");
@@ -69,7 +70,7 @@ main(void)
                .sin_addr.s_addr = htonl(INADDR_LOOPBACK),
                .sin_port = htons(port),
        };
-       if (connect(fd, &addr, sizeof(addr)) == 0)
+       if (connect(fd, (void *) &addr, sizeof(addr)) == 0)
                error_msg_and_skip("connect unexpectedly succeeded");
        if (errno != EINPROGRESS)
                perror_msg_and_skip("connect failed for unexpected reason");
diff --git a/tests/so_peercred--pidns-translation.c b/tests/so_peercred--pidns-translation.c
new file mode 100644 (file)
index 0000000..402bbcf
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "so_peercred.c"
diff --git a/tests/so_peercred--pidns-translation.gen.test b/tests/so_peercred--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..956f8f3
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (so_peercred--pidns-translation test_pidns -e trace=getsockopt); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -e trace=getsockopt
index 151bb1755ef878a71c7e97a8fec5554e4c6f482c..e34d6ee1a10f48846ac413ae4dc392403533678e 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of SO_PEERCRED socket option.
  *
  * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
+#include "pidns.h"
 
 #include <stddef.h>
 #include <stdio.h>
@@ -53,6 +54,8 @@ so_str(void)
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        TAIL_ALLOC_OBJECT_CONST_PTR(struct ucred, peercred);
        TAIL_ALLOC_OBJECT_CONST_PTR(socklen_t, len);
 
@@ -75,6 +78,8 @@ main(void)
        struct ucred *const gid_truncated =
                tail_alloc(sizeof_gid_truncated);
 
+       const char *pid_str = pidns_pid2str(PT_TGID);
+
        int sv[2];
        if (socketpair(AF_UNIX, SOCK_STREAM, 0, sv))
                 perror_msg_and_skip("socketpair AF_UNIX SOCK_STREAM");
@@ -82,8 +87,10 @@ main(void)
        /* classic getsockopt */
        *len = sizeof(*peercred);
        get_peercred(sv[0], peercred, len);
+       pidns_print_leader();
        printf("getsockopt(%d, %s", sv[0], so_str());
        PRINT_FIELD_D(", {", *peercred, pid);
+       printf("%s", pid_str);
        PRINT_FIELD_UID(", ", *peercred, uid);
        PRINT_FIELD_UID(", ", *peercred, gid);
        printf("}, [%d]) = %s\n", *len, errstr);
@@ -91,14 +98,17 @@ main(void)
        /* getsockopt with zero optlen */
        *len = 0;
        get_peercred(sv[0], peercred, len);
+       pidns_print_leader();
        printf("getsockopt(%d, %s, %p, [0]) = %s\n",
               sv[0], so_str(), peercred, errstr);
 
        /* getsockopt with optlen larger than necessary - shortened */
        *len = sizeof(*peercred) + 1;
        get_peercred(sv[0], peercred, len);
+       pidns_print_leader();
        printf("getsockopt(%d, %s", sv[0], so_str());
        PRINT_FIELD_D(", {", *peercred, pid);
+       printf("%s", pid_str);
        PRINT_FIELD_UID(", ", *peercred, uid);
        PRINT_FIELD_UID(", ", *peercred, gid);
        printf("}, [%u->%d]) = %s\n",
@@ -110,6 +120,7 @@ main(void)
         */
        *len = sizeof_pid_truncated;
        get_peercred(sv[0], pid_truncated, len);
+       pidns_print_leader();
        printf("getsockopt(%d, %s, {pid=", sv[0], so_str());
        print_quoted_hex(pid_truncated, *len);
        printf("}, [%d]) = %s\n", *len, errstr);
@@ -120,8 +131,10 @@ main(void)
         */
        *len = sizeof_pid;
        get_peercred(sv[0], pid, len);
+       pidns_print_leader();
        printf("getsockopt(%d, %s", sv[0], so_str());
        PRINT_FIELD_D(", {", *pid, pid);
+       printf("%s", pid_str);
        printf("}, [%d]) = %s\n", *len, errstr);
 
        /*
@@ -136,8 +149,10 @@ main(void)
         * to struct ucred.pid field.
         */
        memcpy(uid, uid_truncated, sizeof_uid_truncated);
+       pidns_print_leader();
        printf("getsockopt(%d, %s", sv[0], so_str());
        PRINT_FIELD_D(", {", *uid, pid);
+       printf("%s", pid_str);
        printf(", uid=");
        print_quoted_hex(&uid->uid, sizeof_uid_truncated -
                                    offsetof(struct ucred, uid));
@@ -149,8 +164,10 @@ main(void)
         */
        *len = sizeof_uid;
        get_peercred(sv[0], uid, len);
+       pidns_print_leader();
        printf("getsockopt(%d, %s", sv[0], so_str());
        PRINT_FIELD_D(", {", *uid, pid);
+       printf("%s", pid_str);
        PRINT_FIELD_UID(", ", *uid, uid);
        printf("}, [%d]) = %s\n", *len, errstr);
 
@@ -166,8 +183,10 @@ main(void)
         * to struct ucred.pid and struct ucred.uid fields.
         */
        memcpy(peercred, gid_truncated, sizeof_gid_truncated);
+       pidns_print_leader();
        printf("getsockopt(%d, %s", sv[0], so_str());
        PRINT_FIELD_D(", {", *peercred, pid);
+       printf("%s", pid_str);
        PRINT_FIELD_UID(", ", *peercred, uid);
        printf(", gid=");
        print_quoted_hex(&peercred->gid, sizeof_gid_truncated -
@@ -177,14 +196,17 @@ main(void)
        /* getsockopt optval EFAULT */
        *len = sizeof(*peercred);
        get_peercred(sv[0], &peercred->uid, len);
+       pidns_print_leader();
        printf("getsockopt(%d, %s, %p, [%d]) = %s\n",
               sv[0], so_str(), &peercred->uid, *len, errstr);
 
        /* getsockopt optlen EFAULT */
        get_peercred(sv[0], peercred, len + 1);
+       pidns_print_leader();
        printf("getsockopt(%d, %s, %p, %p) = %s\n",
               sv[0], so_str(), peercred, len + 1, errstr);
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
index ac483646cbc5abc107cf97f1548f22140cbe205e..5b6c5d846802e3eee60c4f19c286b1444c9b6e44 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of socket filters.
  *
  * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 
 #define HEX_FMT "%#x"
 
-#if XLAT_RAW
-# define XLAT_FMT HEX_FMT
-# define XLAT_ARGS(a_) (a_)
-#elif XLAT_VERBOSE
-# define XLAT_FMT HEX_FMT " /* %s */"
-# define XLAT_ARGS(a_) (a_), #a_
-#else
-# define XLAT_FMT "%s"
-# define XLAT_ARGS(a_) #a_
-#endif
-
 #define PRINT_STMT(pfx, code_fmt, k_fmt, ...)  \
        printf("%sBPF_STMT(" code_fmt ", " k_fmt ")", pfx, __VA_ARGS__)
 
index aa68a7eb5d55ef78d27250f565cee1dea41ac225..664a769312441c002c7f6e7dc9d423880fdb8983 100644 (file)
@@ -2,15 +2,16 @@
  * Check decoding of socketcall syscall.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
-#ifdef __NR_socketcall
+#if defined __NR_socketcall && !defined __ARM_EABI__
 
 # include <assert.h>
 # include <stdio.h>
@@ -22,9 +23,9 @@
 static const char *
 xlookup_uint(const struct xlat *xlat, const unsigned int val)
 {
-       for (; xlat->str != NULL; xlat++)
-               if (xlat->val == val)
-                       return xlat->str;
+       for (size_t i = 0; i < xlat->size; i++)
+               if (xlat->data[i].val == val)
+                       return xlat->data[i].str;
        return NULL;
 }
 
@@ -52,8 +53,8 @@ test_socketcall(const int i, const void *const addr)
 int
 main(void)
 {
-       assert((unsigned) sc_min == socketcalls[0].val);
-       assert((unsigned) sc_max == socketcalls[ARRAY_SIZE(socketcalls) - 2].val);
+       assert(0 == socketcalls->data[0].val);
+       assert((unsigned) sc_max == socketcalls->data[socketcalls->size - 1].val);
 
        const unsigned long *const args = tail_alloc(sizeof(*args) * 6);
        efault = tail_alloc(1) + 1;
@@ -70,6 +71,6 @@ main(void)
 
 #else
 
-SKIP_MAIN_UNDEFINED("__NR_socketcall")
+SKIP_MAIN_UNDEFINED("__NR_socketcall && !__ARM_EABI__")
 
 #endif
index c265992583b60dbfade3758183cb8769f8e33eee..9dd1f961092540604f794eab2ab5f829cc7f9930 100644 (file)
@@ -2,6 +2,7 @@
  * Check decoding of timestamp control messages.
  *
  * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2019-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -9,6 +10,7 @@
 
 #include "tests.h"
 #include <stdio.h>
+#include <string.h>
 #include <unistd.h>
 #include <sys/socket.h>
 
@@ -17,6 +19,9 @@
 # include <linux/time_types.h>
 #endif
 
+#include "kernel_timeval.h"
+#include "kernel_old_timespec.h"
+
 #define XLAT_MACROS_ONLY
 #include "xlat/sock_options.h"
 #undef XLAT_MACROS_ONLY
@@ -26,16 +31,18 @@ print_timestamp_old(const struct cmsghdr *c)
 {
        const void *cmsg_header = c;
        const void *cmsg_data = CMSG_DATA(c);
-       const struct timeval *tv = cmsg_data;
-       const unsigned int expected_len = sizeof(*tv);
+       kernel_old_timeval_t tv;
+       const unsigned int expected_len = sizeof(tv);
        const unsigned int data_len = c->cmsg_len - (cmsg_data - cmsg_header);
 
        if (expected_len != data_len)
                perror_msg_and_fail("sizeof(struct timeval) = %u"
                                    ", data_len = %u\n",
                                    expected_len, data_len);
+
+       memcpy(&tv, cmsg_data, sizeof(tv));
        printf("{tv_sec=%lld, tv_usec=%lld}",
-              (long long) tv->tv_sec, (long long) tv->tv_usec);
+              (long long) tv.tv_sec, (long long) tv.tv_usec);
 }
 
 static void
@@ -43,16 +50,18 @@ print_timestampns_old(const struct cmsghdr *c)
 {
        const void *cmsg_header = c;
        const void *cmsg_data = CMSG_DATA(c);
-       const struct timespec *ts = cmsg_data;
-       const unsigned int expected_len = sizeof(*ts);
+       kernel_old_timespec_t ts;
+       const unsigned int expected_len = sizeof(ts);
        const unsigned int data_len = c->cmsg_len - (cmsg_data - cmsg_header);
 
        if (expected_len != data_len)
                perror_msg_and_fail("sizeof(struct timespec) = %u"
                                    ", data_len = %u\n",
                                    expected_len, data_len);
+
+       memcpy(&ts, cmsg_data, sizeof(ts));
        printf("{tv_sec=%lld, tv_nsec=%lld}",
-              (long long) ts->tv_sec, (long long) ts->tv_nsec);
+              (long long) ts.tv_sec, (long long) ts.tv_nsec);
 }
 
 #ifdef HAVE_STRUCT___KERNEL_SOCK_TIMEVAL
@@ -61,16 +70,18 @@ print_timestamp_new(const struct cmsghdr *c)
 {
        const void *cmsg_header = c;
        const void *cmsg_data = CMSG_DATA(c);
-       const struct __kernel_sock_timeval *tv = cmsg_data;
-       const unsigned int expected_len = sizeof(*tv);
+       struct __kernel_sock_timeval tv;
+       const unsigned int expected_len = sizeof(tv);
        const unsigned int data_len = c->cmsg_len - (cmsg_data - cmsg_header);
 
        if (expected_len != data_len)
                perror_msg_and_fail("sizeof(struct __kernel_sock_timeval) = %u"
                                    ", data_len = %u\n",
                                    expected_len, data_len);
+
+       memcpy(&tv, cmsg_data, sizeof(tv));
        printf("{tv_sec=%lld, tv_usec=%lld}",
-              (long long) tv->tv_sec, (long long) tv->tv_usec);
+              (long long) tv.tv_sec, (long long) tv.tv_usec);
 }
 #endif /* HAVE_STRUCT___KERNEL_SOCK_TIMEVAL */
 
@@ -80,16 +91,18 @@ print_timestampns_new(const struct cmsghdr *c)
 {
        const void *cmsg_header = c;
        const void *cmsg_data = CMSG_DATA(c);
-       const struct __kernel_timespec *ts = cmsg_data;
-       const unsigned int expected_len = sizeof(*ts);
+       struct __kernel_timespec ts;
+       const unsigned int expected_len = sizeof(ts);
        const unsigned int data_len = c->cmsg_len - (cmsg_data - cmsg_header);
 
        if (expected_len != data_len)
                perror_msg_and_fail("sizeof(struct __kernel_timespec) = %u"
                                    ", data_len = %u\n",
                                    expected_len, data_len);
+
+       memcpy(&ts, cmsg_data, sizeof(ts));
        printf("{tv_sec=%lld, tv_nsec=%lld}",
-              (long long) ts->tv_sec, (long long) ts->tv_nsec);
+              (long long) ts.tv_sec, (long long) ts.tv_nsec);
 }
 #endif /* HAVE_STRUCT___KERNEL_TIMESPEC */
 
index 2acdde7f2b3be3c6e09d9e180ebca9cb4ab4510c..f62d5ba280ca923fa78ccab9b41bbd6a056b4ee5 100644 (file)
@@ -2,14 +2,14 @@
  * This file is part of splice strace test.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_splice
 
index 8a26a79cb36c161e27813527618763180ffbdad7..be987a9458054e1d0c06a3ed30f613706b477b70 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014-2018 The strace developers.
+ * Copyright (c) 2014-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -7,7 +7,10 @@
 
 #include "stack-fcall.h"
 
-int f0(int i)
+int
+f0(int i, unsigned long f)
 {
-       return f1(i) - i;
+       f ^= (unsigned long) (void *) f0;
+       COMPLEX_BODY(i, f);
+       return f1(i, f) - i;
 }
index b5cd89b38ac1b62de7dc17aefa2c1460c2f1928b..88f33b9b22b5cbefc7f5663ff9febe28d2ce5725 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014-2018 The strace developers.
+ * Copyright (c) 2014-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -7,7 +7,10 @@
 
 #include "stack-fcall.h"
 
-int f1(int i)
+int
+f1(int i, unsigned long f)
 {
-       return f2(i) + i;
+       f ^= (unsigned long) (void *) f1;
+       COMPLEX_BODY(i, f);
+       return f2(i, f) + i;
 }
index 16beee5888f7301a6f74c49267b12725db1260a4..00235903c591bcf0cc803846252ea6f04442f8d1 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014-2018 The strace developers.
+ * Copyright (c) 2014-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -7,7 +7,10 @@
 
 #include "stack-fcall.h"
 
-int f2(int i)
+int
+f2(int i, unsigned long f)
 {
-       return f3(i) - i;
+       f ^= (unsigned long) (void *) f2;
+       COMPLEX_BODY(i, f);
+       return f3(i, f) - i;
 }
index 538b6565ae5aa623adf4f802b2b23d2cfd560c11..ea7d5feda606a11b1b522100e49948c61e1e3747 100644 (file)
@@ -1,23 +1,28 @@
 /*
- * Copyright (c) 2014-2019 The strace developers.
+ * Copyright (c) 2014-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include <signal.h>
-#include <unistd.h>
-
 #include "stack-fcall.h"
 
-int f3(int i)
+int
+f3(int i, unsigned long f)
 {
+       f ^= (unsigned long) (void *) f3;
+       COMPLEX_BODY(i, f);
        switch (i) {
        case 1:
-               return kill(getpid(), SIGURG);
-
+               i -= chdir("");
+               break;
+       case 2:
+               i -= kill(getpid(), SIGURG) - 1;
+               break;
        default:
-               return chdir("") + i;
+               i -= syscall(__NR_exit, i - 3);
+               break;
        }
-
+       return i;
 }
diff --git a/tests/stack-fcall-attach.c b/tests/stack-fcall-attach.c
new file mode 100644 (file)
index 0000000..f2db2b7
--- /dev/null
@@ -0,0 +1,2 @@
+#define ATTACH_MODE 1
+#include "stack-fcall.c"
index cf4000e56f5aa6bb77f3d4f0fe72779aed01e73e..d0c62143e62067baf5f488e1b5ee4e4ef9f8ab01 100644 (file)
@@ -1,15 +1,26 @@
 /*
- * Copyright (c) 2014-2018 The strace developers.
+ * Copyright (c) 2014-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
+#include "tests.h"
+#include <unistd.h>
 #include "stack-fcall.h"
 
-int main(void)
+#ifndef ATTACH_MODE
+# define ATTACH_MODE 0
+#endif
+
+int
+main(int ac, char **av)
 {
-       f0(0);
-       f0(1);
-       return 0;
+#if ATTACH_MODE
+       /* sleep a bit to let the tracer time to catch up */
+       sleep(1);
+#endif
+
+       for (;;)
+               ac += f0(ac, (unsigned long) (void *) main);
 }
index cca0f94f255d0c6f96be54a46c77a94683d6f40a..3afa8a265bd90c361b40712b9ccc2472b185ed8a 100644 (file)
@@ -1,10 +1,13 @@
 /*
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
+#include <unistd.h>
+#include "scno.h"
+
 #ifdef MANGLE
 
 # define f0 _ZN2ns2f0Ei
 
 #endif
 
-int f0(int i);
-int f1(int i);
-int f2(int i);
-int f3(int i);
+int f0(int i, unsigned long);
+int f1(int i, unsigned long);
+int f2(int i, unsigned long);
+int f3(int i, unsigned long);
+
+#define COMPLEX_BODY(i, f)                             \
+       do {                                            \
+               int tid = syscall(__NR_gettid, f);      \
+               if (i == tid)                           \
+                       return 0;                       \
+               switch ((unsigned int) tid & 3) {       \
+                       case 0:                         \
+                               i += f0(tid, f);        \
+                               break;                  \
+                       case 1:                         \
+                               i += f1(tid, f);        \
+                               break;                  \
+                       case 2:                         \
+                               i += f2(tid, f);        \
+                               break;                  \
+                       case 3:                         \
+                               i += f3(tid, f);        \
+                               break;                  \
+               }                                       \
+       } while (0)
index 8c8daad1bbb255a5dcf011ded22bccbaeac0abc8..f161b4f1638a18b3bede9a752222dd8e17868fda 100644 (file)
@@ -1,13 +1,13 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_stat
 
index 13ccd0b866d5e23261abc8122f107487a1fe32ec..83037995e6b405dd11b30a0c22abd1a0d5f8937d 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (stat -a32 -v -P stat.sample -P /dev/full); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (stat -a30 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
+run_strace_match_diff -a30 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full
index 12ded4321aea8dca6fd13188628b318b71df893f..5c6b56b89a81d339f0f59fc0e8cef842e60b9a34 100644 (file)
@@ -1,13 +1,13 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_stat64
 
index f49df37a0f699a3c56526f417882587fe1159335..fe86da1db73b24ee8e45dfe7277817e37ddbc261 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (stat64 -a32 -v -P stat.sample -P /dev/full); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (stat64 -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
+run_strace_match_diff -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full
index 5672a7fc98a5f305f31c989961a07a7d2ebc77bd..13b98fa50cdd2184a953d361090ba60b17800834 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2014-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2014-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_statfs
 
index 1e0a4b243fb46e9bfde18075b1d95adc8325db11..5cd92529f87664e281dc698bbe36a794446dbd5f 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_statfs64
 
diff --git a/tests/status-all.c b/tests/status-all.c
new file mode 100644 (file)
index 0000000..db9510a
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+ * Check status=all filtering for failed and successful syscalls.
+ *
+ * Copyright (c) 2019 Intel Corporation
+ * Copyright (c) 2019 Paul Chaignon <paul.chaignon@gmail.com>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <stdio.h>
+
+int
+main(void)
+{
+       static const char sample_valid[] = ".";
+       static const char sample_invalid[] = "";
+
+       test_status_chdir(sample_valid, 1, 1);
+       test_status_chdir(sample_invalid, 1, 1);
+       puts("+++ exited with 0 +++");
+       return 0;
+}
diff --git a/tests/status-all.gen.test b/tests/status-all.gen.test
new file mode 100755 (executable)
index 0000000..0a10ba4
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (status-all -a10 -e trace=chdir --status=detached,failed,successful,unavailable,unfinished); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10 -e trace=chdir --status=detached,failed,successful,unavailable,unfinished
diff --git a/tests/status-detached.expected b/tests/status-detached.expected
new file mode 100644 (file)
index 0000000..0a6325f
--- /dev/null
@@ -0,0 +1 @@
+nanosleep\({tv_sec=2, tv_nsec=0},  <detached \.\.\.>
diff --git a/tests/status-detached.test b/tests/status-detached.test
new file mode 100755 (executable)
index 0000000..3569272
--- /dev/null
@@ -0,0 +1,20 @@
+#!/bin/sh
+#
+# Check -e status=detached option.
+#
+# Copyright (c) 2019 Paul Chaignon <paul.chaignon@gmail.com>
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/init.sh"
+
+run_prog ../sleep 0
+
+# -I2 avoids blocking all fatal signals, the default when using -o.
+$STRACE -o "$LOG" -I2 -e status=detached ../sleep 2 &
+pid=$!
+../sleep 1
+kill $pid
+wait
+match_grep
diff --git a/tests/status-failed-long.c b/tests/status-failed-long.c
new file mode 100644 (file)
index 0000000..ac61c51
--- /dev/null
@@ -0,0 +1 @@
+#include "status-failed.c"
diff --git a/tests/status-failed-long.gen.test b/tests/status-failed-long.gen.test
new file mode 100755 (executable)
index 0000000..db2abc8
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (status-failed-long -a10 -e trace=chdir --failed-only); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10 -e trace=chdir --failed-only
diff --git a/tests/status-failed-status.c b/tests/status-failed-status.c
new file mode 100644 (file)
index 0000000..ac61c51
--- /dev/null
@@ -0,0 +1 @@
+#include "status-failed.c"
diff --git a/tests/status-failed-status.gen.test b/tests/status-failed-status.gen.test
new file mode 100755 (executable)
index 0000000..f51b19f
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (status-failed-status -a10 -e trace=chdir -e status=failed); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10 -e trace=chdir -e status=failed
diff --git a/tests/status-failed.c b/tests/status-failed.c
new file mode 100644 (file)
index 0000000..81d2885
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+ * Check status=failed filtering for failed and successful syscalls.
+ *
+ * Copyright (c) 2019 Intel Corporation
+ * Copyright (c) 2019 Paul Chaignon <paul.chaignon@gmail.com>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <stdio.h>
+
+int
+main(void)
+{
+       static const char sample_valid[] = ".";
+       static const char sample_invalid[] = "";
+
+       test_status_chdir(sample_valid, 0, 1);
+       test_status_chdir(sample_invalid, 0, 1);
+       puts("+++ exited with 0 +++");
+       return 0;
+}
diff --git a/tests/status-failed.gen.test b/tests/status-failed.gen.test
new file mode 100755 (executable)
index 0000000..fcc7790
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (status-failed -a10 -e trace=chdir -Z); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10 -e trace=chdir -Z
diff --git a/tests/status-none-f.c b/tests/status-none-f.c
new file mode 100644 (file)
index 0000000..b41a566
--- /dev/null
@@ -0,0 +1,19 @@
+/*
+ * Check basic seccomp filtering with large number of traced syscalls.
+ *
+ * Copyright (c) 2018-2019 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <stdio.h>
+#include <unistd.h>
+
+int
+main(void)
+{
+       printf("%-5d +++ exited with 0 +++\n", getpid());
+       return 0;
+}
diff --git a/tests/status-none-threads.c b/tests/status-none-threads.c
new file mode 100644 (file)
index 0000000..ae93960
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Check status=none filtering when a non-leader thread invokes execve.
+ *
+ * Copyright (c) 2019 Paul Chaignon <paul.chaignon@gmail.com>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <errno.h>
+#include <pthread.h>
+#include <stdio.h>
+#include <unistd.h>
+#include "scno.h"
+
+static pid_t leader;
+
+static void *
+thread(void *arg)
+{
+       struct timespec ts = { .tv_nsec = 100000000 };
+       (void) nanosleep(&ts, NULL);
+
+       printf("%-5d +++ superseded by execve in pid %u +++\n",
+              leader, (int) syscall(__NR_gettid));
+
+       char *argv[] = {((char **) arg)[0], (char *) "0", NULL};
+       execve(argv[0], argv, NULL);
+       perror_msg_and_fail("execve");
+}
+
+int
+main(int ac, char **av)
+{
+       setvbuf(stdout, NULL, _IONBF, 0);
+       leader = getpid();
+
+       if (ac > 1) {
+               printf("%-5d +++ exited with 0 +++\n", leader);
+               return 0;
+       }
+
+       pthread_t t;
+       errno = pthread_create(&t, NULL, thread, av);
+       if (errno)
+               perror_msg_and_fail("pthread_create");
+
+       struct timespec ts = { .tv_sec = 123 };
+       (void) nanosleep(&ts, 0);
+
+       return 1;
+}
diff --git a/tests/status-none-threads.test b/tests/status-none-threads.test
new file mode 100755 (executable)
index 0000000..630424e
--- /dev/null
@@ -0,0 +1,47 @@
+#!/bin/sh
+#
+# Check status=none filtering when a non-leader thread invokes execve.
+#
+# Copyright (c) 2019 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/init.sh"
+
+# Check that PTRACE_EVENT_EXEC support in kernel is good enough.
+# The kernel before commit v3.1-rc1~308^2~7 reported 0 instead of old pid.
+require_min_kernel_version_or_skip 3.1
+
+# This test requires some concurrency between threads.
+require_min_nproc 2
+
+check_prog diff
+run_prog_skip_if_failed date +%s > /dev/null
+s0="$(date +%s)"
+
+run_prog > /dev/null
+
+set -- -a14 -f -e status=${status_filter:-none} $args
+
+# Due to probabilistic nature of the test, try it several times.
+while :; do
+       > "$LOG" || fail_ "failed to write $LOG"
+       rc=0
+       $STRACE -o "$LOG" "$@" > "$EXP" || {
+               rc=$?
+               cat < "$LOG" >&2
+       }
+
+       if [ "$rc" = 0 ] && diff -u -- "$EXP" "$LOG"; then
+               exit 0
+       fi
+
+       s1="$(date +%s)"
+       [ "$(($s1-$s0))" -gt "$(($TIMEOUT_DURATION/2))" ] ||
+               continue
+
+       [ "$rc" = 0 ] &&
+               fail_ "$STRACE $* output mismatch" ||
+               fail_ "$STRACE $* failed with code $rc"
+done
diff --git a/tests/status-none.c b/tests/status-none.c
new file mode 100644 (file)
index 0000000..0144a60
--- /dev/null
@@ -0,0 +1,18 @@
+/*
+ * Check basic -e status=none syscall filtering.
+ *
+ * Copyright (c) 2019 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <stdio.h>
+
+int
+main(void)
+{
+       puts("+++ exited with 0 +++");
+       return 0;
+}
diff --git a/tests/status-none.gen.test b/tests/status-none.gen.test
new file mode 100755 (executable)
index 0000000..2b141f2
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (status-none -e trace=all --status=none); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=all --status=none
diff --git a/tests/status-successful-long.c b/tests/status-successful-long.c
new file mode 100644 (file)
index 0000000..45be5b1
--- /dev/null
@@ -0,0 +1 @@
+#include "status-successful.c"
diff --git a/tests/status-successful-long.gen.test b/tests/status-successful-long.gen.test
new file mode 100755 (executable)
index 0000000..1618f32
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (status-successful-long -a10 -e trace=chdir --successful-only); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10 -e trace=chdir --successful-only
diff --git a/tests/status-successful-status.c b/tests/status-successful-status.c
new file mode 100644 (file)
index 0000000..45be5b1
--- /dev/null
@@ -0,0 +1 @@
+#include "status-successful.c"
diff --git a/tests/status-successful-status.gen.test b/tests/status-successful-status.gen.test
new file mode 100755 (executable)
index 0000000..34ce3db
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (status-successful-status -a10 -e trace=chdir --status=successful); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10 -e trace=chdir --status=successful
diff --git a/tests/status-successful.c b/tests/status-successful.c
new file mode 100644 (file)
index 0000000..b37854a
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+ * Check status=successful filtering for failed and successful syscalls.
+ *
+ * Copyright (c) 2019 Intel Corporation
+ * Copyright (c) 2019 Paul Chaignon <paul.chaignon@gmail.com>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <stdio.h>
+
+int
+main(void)
+{
+       static const char sample_valid[] = ".";
+       static const char sample_invalid[] = "";
+
+       test_status_chdir(sample_valid, 1, 0);
+       test_status_chdir(sample_invalid, 1, 0);
+       puts("+++ exited with 0 +++");
+       return 0;
+}
diff --git a/tests/status-successful.gen.test b/tests/status-successful.gen.test
new file mode 100755 (executable)
index 0000000..395b85e
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (status-successful -a10 -e trace=chdir -z); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10 -e trace=chdir -z
diff --git a/tests/status-unfinished-threads.c b/tests/status-unfinished-threads.c
new file mode 100644 (file)
index 0000000..77c8817
--- /dev/null
@@ -0,0 +1,66 @@
+/*
+ * Check status=unfinished filtering when a non-leader thread invokes execve.
+ *
+ * Copyright (c) 2019 Paul Chaignon <paul.chaignon@gmail.com>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_nanosleep
+
+# include <errno.h>
+# include <pthread.h>
+# include <stdio.h>
+# include <unistd.h>
+
+# include "kernel_old_timespec.h"
+
+static pid_t leader;
+
+static void *
+thread(void *arg)
+{
+       kernel_old_timespec_t ts = { .tv_nsec = 100000000 };
+       (void) syscall(__NR_nanosleep, (unsigned long) &ts, 0UL);
+
+       printf("%-5d nanosleep({tv_sec=123, tv_nsec=0},  <unfinished ...>) = ?\n"
+              "%-5d +++ superseded by execve in pid %u +++\n",
+              leader, leader, (int) syscall(__NR_gettid));
+
+       char *argv[] = {((char **) arg)[0], (char *) "0", NULL};
+       execve(argv[0], argv, NULL);
+       perror_msg_and_fail("execve");
+}
+
+int
+main(int ac, char **av)
+{
+       setvbuf(stdout, NULL, _IONBF, 0);
+       leader = getpid();
+
+       if (ac > 1) {
+               printf("%-5d exit_group(0) = ?\n"
+                      "%-5d +++ exited with 0 +++\n", leader, leader);
+               return 0;
+       }
+
+       pthread_t t;
+       errno = pthread_create(&t, NULL, thread, av);
+       if (errno)
+               perror_msg_and_fail("pthread_create");
+
+       kernel_old_timespec_t ts = { .tv_sec = 123 };
+       (void) syscall(__NR_nanosleep, (unsigned long) &ts, 0UL);
+
+       return 1;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_nanosleep")
+
+#endif
diff --git a/tests/status-unfinished-threads.test b/tests/status-unfinished-threads.test
new file mode 100755 (executable)
index 0000000..f54a323
--- /dev/null
@@ -0,0 +1,12 @@
+#!/bin/sh
+#
+# Check status=unfinished filtering when a non-leader thread invokes execve.
+#
+# Copyright (c) 2019 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+status_filter=unfinished
+
+. "${srcdir=.}"/status-none-threads.test
diff --git a/tests/status-unfinished.c b/tests/status-unfinished.c
new file mode 100644 (file)
index 0000000..de78eee
--- /dev/null
@@ -0,0 +1,19 @@
+/*
+ * Check basic -e status=unfinished syscall filtering.
+ *
+ * Copyright (c) 2019 Paul Chaignon <paul.chaignon@gmail.com>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <stdio.h>
+
+int
+main(void)
+{
+       puts("exit_group(0) = ?\n"
+            "+++ exited with 0 +++");
+       return 0;
+}
diff --git a/tests/status-unfinished.gen.test b/tests/status-unfinished.gen.test
new file mode 100755 (executable)
index 0000000..c02817b
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (status-unfinished -a10 -e trace=all --status=unfinished); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10 -e trace=all --status=unfinished
diff --git a/tests/status.c b/tests/status.c
new file mode 100644 (file)
index 0000000..82fd8b1
--- /dev/null
@@ -0,0 +1,21 @@
+/*
+ * Helper function to check -e status option.
+ *
+ * Copyright (c) 2019 Intel Corporation
+ * Copyright (c) 2019 Paul Chaignon <paul.chaignon@gmail.com>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <stdio.h>
+#include <unistd.h>
+
+void
+test_status_chdir(const char *dir, bool print_success, bool print_fail)
+{
+       long rc = chdir(dir);
+       if ((rc == -1 && print_fail) || (rc != -1 && print_success))
+               printf("chdir(\"%s\") = %s\n", dir, sprintrc(rc));
+}
index c5e86ad2e8344bbe89b61534988be0e0eeb209ac..c5537204341df265626d3128be677696161fd0e5 100644 (file)
@@ -1,14 +1,14 @@
 /*
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
-#ifdef __NR_statx
+#if defined __NR_statx && defined HAVE_STRUCT_STATX
 
 # include <linux/stat.h>
 # include "xlat.h"
@@ -45,6 +45,6 @@ static const char *TEST_SYSCALL_STATX_MASK_STR  = "STATX_ALL";
 
 #else
 
-SKIP_MAIN_UNDEFINED("__NR_statx")
+SKIP_MAIN_UNDEFINED("__NR_statx && HAVE_STRUCT_STATX")
 
 #endif
index bff3e3f29a6864a16d99c3187979207cedd1a5ed..564a5918377041c2e88ede132f1bddb5caebd566 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (statx -a32 -v -P stat.sample -P /dev/full); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (statx -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
+run_strace_match_diff -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full
diff --git a/tests/strace--absolute-timestamps-format-time-precision-ms.gen.test b/tests/strace--absolute-timestamps-format-time-precision-ms.gen.test
new file mode 100755 (executable)
index 0000000..061321c
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--absolute-timestamps-format-time-precision-ms +strace-tt.test 3 --absolute-timestamps=format:time --absolute-timestamps=precision:ms); do not edit.
+set -- 3 --absolute-timestamps=format:time --absolute-timestamps=precision:ms
+. "${srcdir=.}/strace-tt.test"
diff --git a/tests/strace--absolute-timestamps-format-time-precision-ns.gen.test b/tests/strace--absolute-timestamps-format-time-precision-ns.gen.test
new file mode 100755 (executable)
index 0000000..c1c94db
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--absolute-timestamps-format-time-precision-ns +strace-tt.test 9 --absolute-timestamps=format:time --absolute-timestamps=precision:ns); do not edit.
+set -- 9 --absolute-timestamps=format:time --absolute-timestamps=precision:ns
+. "${srcdir=.}/strace-tt.test"
diff --git a/tests/strace--absolute-timestamps-format-time-precision-s.gen.test b/tests/strace--absolute-timestamps-format-time-precision-s.gen.test
new file mode 100755 (executable)
index 0000000..52bfe1c
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--absolute-timestamps-format-time-precision-s +strace-t.test --absolute-timestamps=format:time --absolute-timestamps=precision:s); do not edit.
+set -- --absolute-timestamps=format:time --absolute-timestamps=precision:s
+. "${srcdir=.}/strace-t.test"
diff --git a/tests/strace--absolute-timestamps-format-time-precision-us.gen.test b/tests/strace--absolute-timestamps-format-time-precision-us.gen.test
new file mode 100755 (executable)
index 0000000..6c55961
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--absolute-timestamps-format-time-precision-us +strace-tt.test 6 --absolute-timestamps=format:time --absolute-timestamps=precision:us); do not edit.
+set -- 6 --absolute-timestamps=format:time --absolute-timestamps=precision:us
+. "${srcdir=.}/strace-tt.test"
diff --git a/tests/strace--absolute-timestamps-format-time.gen.test b/tests/strace--absolute-timestamps-format-time.gen.test
new file mode 100755 (executable)
index 0000000..1c55649
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--absolute-timestamps-format-time +strace-t.test --absolute-timestamps=format:time); do not edit.
+set -- --absolute-timestamps=format:time
+. "${srcdir=.}/strace-t.test"
diff --git a/tests/strace--absolute-timestamps-format-unix-precision-ms.gen.test b/tests/strace--absolute-timestamps-format-unix-precision-ms.gen.test
new file mode 100755 (executable)
index 0000000..fe4d221
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--absolute-timestamps-format-unix-precision-ms +strace-ttt.test 3 --absolute-timestamps=precision:ms --absolute-timestamps=format:unix); do not edit.
+set -- 3 --absolute-timestamps=precision:ms --absolute-timestamps=format:unix
+. "${srcdir=.}/strace-ttt.test"
diff --git a/tests/strace--absolute-timestamps-format-unix-precision-ns.gen.test b/tests/strace--absolute-timestamps-format-unix-precision-ns.gen.test
new file mode 100755 (executable)
index 0000000..9ea30ba
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--absolute-timestamps-format-unix-precision-ns +strace-ttt.test 9 --absolute-timestamps=format:unix --absolute-timestamps=precision:ns); do not edit.
+set -- 9 --absolute-timestamps=format:unix --absolute-timestamps=precision:ns
+. "${srcdir=.}/strace-ttt.test"
diff --git a/tests/strace--absolute-timestamps-format-unix-precision-s.gen.test b/tests/strace--absolute-timestamps-format-unix-precision-s.gen.test
new file mode 100755 (executable)
index 0000000..93b7221
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--absolute-timestamps-format-unix-precision-s +strace-ttt.test 0 --absolute-timestamps=format:unix --absolute-timestamps=precision:s); do not edit.
+set -- 0 --absolute-timestamps=format:unix --absolute-timestamps=precision:s
+. "${srcdir=.}/strace-ttt.test"
diff --git a/tests/strace--absolute-timestamps-format-unix-precision-us.gen.test b/tests/strace--absolute-timestamps-format-unix-precision-us.gen.test
new file mode 100755 (executable)
index 0000000..f513658
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--absolute-timestamps-format-unix-precision-us +strace-ttt.test 6 --absolute-timestamps=precision:us --absolute-timestamps=format:unix); do not edit.
+set -- 6 --absolute-timestamps=precision:us --absolute-timestamps=format:unix
+. "${srcdir=.}/strace-ttt.test"
diff --git a/tests/strace--absolute-timestamps.gen.test b/tests/strace--absolute-timestamps.gen.test
new file mode 100755 (executable)
index 0000000..f5c7995
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--absolute-timestamps +strace-t.test --absolute-timestamps); do not edit.
+set -- --absolute-timestamps
+. "${srcdir=.}/strace-t.test"
diff --git a/tests/strace--follow-forks-output-separately.expected b/tests/strace--follow-forks-output-separately.expected
new file mode 100644 (file)
index 0000000..627a1b4
--- /dev/null
@@ -0,0 +1,2 @@
+exit_group(0) = ?
++++ exited with 0 +++
diff --git a/tests/strace--follow-forks-output-separately.gen.test b/tests/strace--follow-forks-output-separately.gen.test
new file mode 100755 (executable)
index 0000000..96c225e
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--follow-forks-output-separately +strace-ff.test --follow-forks --output-separately); do not edit.
+set -- --follow-forks --output-separately
+. "${srcdir=.}/strace-ff.test"
diff --git a/tests/strace--relative-timestamps-ms.expected b/tests/strace--relative-timestamps-ms.expected
new file mode 100644 (file)
index 0000000..9fff296
--- /dev/null
@@ -0,0 +1,2 @@
+[ ]{5}0\.0{3} execve\("\.\./sleep", \["\.\./sleep", "1"\], 0x[[:xdigit:]]* /\* [[:digit:]]* vars \*/\) = 0
+[ ]{5}(1\.[01]|0\.9)[[:digit:]]{2} \+\+\+ exited with 0 \+\+\+
diff --git a/tests/strace--relative-timestamps-ms.gen.test b/tests/strace--relative-timestamps-ms.gen.test
new file mode 100755 (executable)
index 0000000..60a5865
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--relative-timestamps-ms +strace-r.test --relative-timestamps=ms); do not edit.
+set -- --relative-timestamps=ms
+. "${srcdir=.}/strace-r.test"
diff --git a/tests/strace--relative-timestamps-ns.expected b/tests/strace--relative-timestamps-ns.expected
new file mode 100644 (file)
index 0000000..d72c477
--- /dev/null
@@ -0,0 +1,2 @@
+[ ]{5}0\.0{9} execve\("\.\./sleep", \["\.\./sleep", "1"\], 0x[[:xdigit:]]* /\* [[:digit:]]* vars \*/\) = 0
+[ ]{5}(1\.[01]|0\.9)[[:digit:]]{8} \+\+\+ exited with 0 \+\+\+
diff --git a/tests/strace--relative-timestamps-ns.gen.test b/tests/strace--relative-timestamps-ns.gen.test
new file mode 100755 (executable)
index 0000000..3aec808
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--relative-timestamps-ns +strace-r.test --relative-timestamps=ns); do not edit.
+set -- --relative-timestamps=ns
+. "${srcdir=.}/strace-r.test"
diff --git a/tests/strace--relative-timestamps-s.expected b/tests/strace--relative-timestamps-s.expected
new file mode 100644 (file)
index 0000000..b3c5ff0
--- /dev/null
@@ -0,0 +1,2 @@
+[ ]{5}0 execve\("\.\./sleep", \["\.\./sleep", "1"\], 0x[[:xdigit:]]* /\* [[:digit:]]* vars \*/\) = 0
+[ ]{5}[01] \+\+\+ exited with 0 \+\+\+
diff --git a/tests/strace--relative-timestamps-s.gen.test b/tests/strace--relative-timestamps-s.gen.test
new file mode 100755 (executable)
index 0000000..2d2ba8d
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--relative-timestamps-s +strace-r.test --relative-timestamps=s); do not edit.
+set -- --relative-timestamps=s
+. "${srcdir=.}/strace-r.test"
diff --git a/tests/strace--relative-timestamps-us.expected b/tests/strace--relative-timestamps-us.expected
new file mode 100644 (file)
index 0000000..2a5b977
--- /dev/null
@@ -0,0 +1,2 @@
+[ ]{5}0\.0{6} execve\("\.\./sleep", \["\.\./sleep", "1"\], 0x[[:xdigit:]]* /\* [[:digit:]]* vars \*/\) = 0
+[ ]{5}(1\.[01]|0\.9)[[:digit:]]{5} \+\+\+ exited with 0 \+\+\+
diff --git a/tests/strace--relative-timestamps-us.gen.test b/tests/strace--relative-timestamps-us.gen.test
new file mode 100755 (executable)
index 0000000..660c0f2
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--relative-timestamps-us +strace-r.test --relative-timestamps=us); do not edit.
+set -- --relative-timestamps=us
+. "${srcdir=.}/strace-r.test"
diff --git a/tests/strace--relative-timestamps.expected b/tests/strace--relative-timestamps.expected
new file mode 100644 (file)
index 0000000..2a5b977
--- /dev/null
@@ -0,0 +1,2 @@
+[ ]{5}0\.0{6} execve\("\.\./sleep", \["\.\./sleep", "1"\], 0x[[:xdigit:]]* /\* [[:digit:]]* vars \*/\) = 0
+[ ]{5}(1\.[01]|0\.9)[[:digit:]]{5} \+\+\+ exited with 0 \+\+\+
diff --git a/tests/strace--relative-timestamps.gen.test b/tests/strace--relative-timestamps.gen.test
new file mode 100755 (executable)
index 0000000..c0e8abe
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--relative-timestamps +strace-r.test --relative-timestamps); do not edit.
+set -- --relative-timestamps
+. "${srcdir=.}/strace-r.test"
diff --git a/tests/strace--strings-in-hex-all.c b/tests/strace--strings-in-hex-all.c
new file mode 100644 (file)
index 0000000..af37c30
--- /dev/null
@@ -0,0 +1,2 @@
+#define STRACE_XX 1
+#include "strace-x.c"
diff --git a/tests/strace--strings-in-hex-all.gen.test b/tests/strace--strings-in-hex-all.gen.test
new file mode 100755 (executable)
index 0000000..78d61ed
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--strings-in-hex-all --trace=chdir --strings-in-hex=all --columns=18); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff --trace=chdir --strings-in-hex=all --columns=18
diff --git a/tests/strace--strings-in-hex-non-ascii.c b/tests/strace--strings-in-hex-non-ascii.c
new file mode 100644 (file)
index 0000000..e07ded2
--- /dev/null
@@ -0,0 +1,2 @@
+#define STRACE_XX 0
+#include "strace-x.c"
diff --git a/tests/strace--strings-in-hex-non-ascii.gen.test b/tests/strace--strings-in-hex-non-ascii.gen.test
new file mode 100755 (executable)
index 0000000..037af67
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--strings-in-hex-non-ascii --trace=chdir --strings-in-hex=non-ascii --columns=12); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff --trace=chdir --strings-in-hex=non-ascii --columns=12
diff --git a/tests/strace--strings-in-hex.c b/tests/strace--strings-in-hex.c
new file mode 100644 (file)
index 0000000..af37c30
--- /dev/null
@@ -0,0 +1,2 @@
+#define STRACE_XX 1
+#include "strace-x.c"
diff --git a/tests/strace--strings-in-hex.gen.test b/tests/strace--strings-in-hex.gen.test
new file mode 100755 (executable)
index 0000000..c16db4b
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--strings-in-hex --trace=chdir --strings-in-hex --columns=18); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff --trace=chdir --strings-in-hex --columns=18
diff --git a/tests/strace--syscall-times-ms.expected b/tests/strace--syscall-times-ms.expected
new file mode 100644 (file)
index 0000000..62c652a
--- /dev/null
@@ -0,0 +1 @@
+nanosleep\(\{tv_sec=1, tv_nsec=0\}, NULL\) = 0 <(1\.[01]|0\.9)[[:digit:]]{2}>
diff --git a/tests/strace--syscall-times-ms.gen.test b/tests/strace--syscall-times-ms.gen.test
new file mode 100755 (executable)
index 0000000..d6b43d4
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--syscall-times-ms +strace-T.test --syscall-times=ms); do not edit.
+set -- --syscall-times=ms
+. "${srcdir=.}/strace-T.test"
diff --git a/tests/strace--syscall-times-ns.expected b/tests/strace--syscall-times-ns.expected
new file mode 100644 (file)
index 0000000..0110af4
--- /dev/null
@@ -0,0 +1 @@
+nanosleep\(\{tv_sec=1, tv_nsec=0\}, NULL\) = 0 <(1\.[01]|0\.9)[[:digit:]]{8}>
diff --git a/tests/strace--syscall-times-ns.gen.test b/tests/strace--syscall-times-ns.gen.test
new file mode 100755 (executable)
index 0000000..1b719f0
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--syscall-times-ns +strace-T.test --syscall-times=ns); do not edit.
+set -- --syscall-times=ns
+. "${srcdir=.}/strace-T.test"
diff --git a/tests/strace--syscall-times-s.expected b/tests/strace--syscall-times-s.expected
new file mode 100644 (file)
index 0000000..fd4d340
--- /dev/null
@@ -0,0 +1 @@
+nanosleep\(\{tv_sec=1, tv_nsec=0\}, NULL\) = 0 <[01]>
diff --git a/tests/strace--syscall-times-s.gen.test b/tests/strace--syscall-times-s.gen.test
new file mode 100755 (executable)
index 0000000..095e49b
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--syscall-times-s +strace-T.test --syscall-times=s); do not edit.
+set -- --syscall-times=s
+. "${srcdir=.}/strace-T.test"
diff --git a/tests/strace--syscall-times-us.expected b/tests/strace--syscall-times-us.expected
new file mode 100644 (file)
index 0000000..1ea0204
--- /dev/null
@@ -0,0 +1 @@
+nanosleep\(\{tv_sec=1, tv_nsec=0\}, NULL\) = 0 <(1\.[01]|0\.9)[[:digit:]]{5}>
diff --git a/tests/strace--syscall-times-us.gen.test b/tests/strace--syscall-times-us.gen.test
new file mode 100755 (executable)
index 0000000..65ac920
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--syscall-times-us +strace-T.test --syscall-times=us); do not edit.
+set -- --syscall-times=us
+. "${srcdir=.}/strace-T.test"
diff --git a/tests/strace--syscall-times.expected b/tests/strace--syscall-times.expected
new file mode 100644 (file)
index 0000000..1ea0204
--- /dev/null
@@ -0,0 +1 @@
+nanosleep\(\{tv_sec=1, tv_nsec=0\}, NULL\) = 0 <(1\.[01]|0\.9)[[:digit:]]{5}>
diff --git a/tests/strace--syscall-times.gen.test b/tests/strace--syscall-times.gen.test
new file mode 100755 (executable)
index 0000000..a86a8f1
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--syscall-times +strace-T.test --syscall-times); do not edit.
+set -- --syscall-times
+. "${srcdir=.}/strace-T.test"
diff --git a/tests/strace--timestamps-time-ms.gen.test b/tests/strace--timestamps-time-ms.gen.test
new file mode 100755 (executable)
index 0000000..bc468d2
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--timestamps-time-ms +strace-tt.test 3 --timestamps=time,ms); do not edit.
+set -- 3 --timestamps=time,ms
+. "${srcdir=.}/strace-tt.test"
diff --git a/tests/strace--timestamps-time-ns.gen.test b/tests/strace--timestamps-time-ns.gen.test
new file mode 100755 (executable)
index 0000000..69a2a01
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--timestamps-time-ns +strace-tt.test 9 --timestamps=time,ns); do not edit.
+set -- 9 --timestamps=time,ns
+. "${srcdir=.}/strace-tt.test"
diff --git a/tests/strace--timestamps-time-s.gen.test b/tests/strace--timestamps-time-s.gen.test
new file mode 100755 (executable)
index 0000000..30a40df
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--timestamps-time-s +strace-t.test --timestamps=time,s); do not edit.
+set -- --timestamps=time,s
+. "${srcdir=.}/strace-t.test"
diff --git a/tests/strace--timestamps-time-us.gen.test b/tests/strace--timestamps-time-us.gen.test
new file mode 100755 (executable)
index 0000000..e4c7a78
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--timestamps-time-us +strace-tt.test 6 --timestamps=time,us); do not edit.
+set -- 6 --timestamps=time,us
+. "${srcdir=.}/strace-tt.test"
diff --git a/tests/strace--timestamps-time.gen.test b/tests/strace--timestamps-time.gen.test
new file mode 100755 (executable)
index 0000000..94ad345
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--timestamps-time +strace-t.test --timestamps=time); do not edit.
+set -- --timestamps=time
+. "${srcdir=.}/strace-t.test"
diff --git a/tests/strace--timestamps-unix-ms.gen.test b/tests/strace--timestamps-unix-ms.gen.test
new file mode 100755 (executable)
index 0000000..51db21a
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--timestamps-unix-ms +strace-ttt.test 3 --timestamps=unix,ms); do not edit.
+set -- 3 --timestamps=unix,ms
+. "${srcdir=.}/strace-ttt.test"
diff --git a/tests/strace--timestamps-unix-ns.gen.test b/tests/strace--timestamps-unix-ns.gen.test
new file mode 100755 (executable)
index 0000000..adfbdfc
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--timestamps-unix-ns +strace-ttt.test 9 --timestamps=unix,ns); do not edit.
+set -- 9 --timestamps=unix,ns
+. "${srcdir=.}/strace-ttt.test"
diff --git a/tests/strace--timestamps-unix-s.gen.test b/tests/strace--timestamps-unix-s.gen.test
new file mode 100755 (executable)
index 0000000..0177f07
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--timestamps-unix-s +strace-ttt.test 0 --timestamps=unix,s); do not edit.
+set -- 0 --timestamps=unix,s
+. "${srcdir=.}/strace-ttt.test"
diff --git a/tests/strace--timestamps-unix-us.gen.test b/tests/strace--timestamps-unix-us.gen.test
new file mode 100755 (executable)
index 0000000..42fdf06
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--timestamps-unix-us +strace-ttt.test 6 --timestamps=unix,us); do not edit.
+set -- 6 --timestamps=unix,us
+. "${srcdir=.}/strace-ttt.test"
diff --git a/tests/strace--timestamps.gen.test b/tests/strace--timestamps.gen.test
new file mode 100755 (executable)
index 0000000..c08f0e5
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace--timestamps +strace-t.test --timestamps); do not edit.
+set -- --timestamps
+. "${srcdir=.}/strace-t.test"
diff --git a/tests/strace-D.expected b/tests/strace-D.expected
new file mode 100644 (file)
index 0000000..78c9d2d
--- /dev/null
@@ -0,0 +1 @@
++++ exited with 0 +++
diff --git a/tests/strace-D.test b/tests/strace-D.test
new file mode 100755 (executable)
index 0000000..6c6ff2c
--- /dev/null
@@ -0,0 +1,72 @@
+#!/bin/sh -efu
+#
+# Check -D option.
+#
+# Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2019-2020 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/init.sh"
+
+check_prog sed
+run_prog_skip_if_failed \
+       kill -0 $$
+
+get_parent_pid()
+{
+       sed '/^PPid:[[:space:]]*/!d;s///'
+}
+
+get_tracer_pid()
+{
+       sed '/^TracerPid:[[:space:]]*/!d;s///'
+}
+
+set -- ../print_ppid_tracerpid
+"$@" > "$LOG" ||
+       framework_skip_ "$* does not work"
+
+# not traced: PPid > 0, TracerPid == 0
+[ "$(get_parent_pid < "$LOG")" -gt 0 ] &&
+[ "$(get_tracer_pid < "$LOG")" -eq 0 ] ||
+       dump_log_and_fail_with "$*: unexpected output"
+
+# !-D: PPid > 0, TracerPid > 0, PPid == TracerPid
+run_strace -e q=attach,personality -enone "$@" > "$OUT"
+[ "$(get_parent_pid < "$OUT")" -gt 0 ] &&
+[ "$(get_tracer_pid < "$OUT")" -gt 0 ] &&
+[ "$(get_parent_pid < "$OUT")" = "$(get_tracer_pid < "$OUT")" ] || {
+       cat < "$OUT" > "$LOG"
+       dump_log_and_fail_with "$STRACE $args: unexpected output"
+}
+match_diff
+
+test_parent_tracer_pid()
+{
+       local d parent_pid tracer_pid
+       d="$1"; shift
+
+       # -D/-DD/-DDD: PPid > 0, TracerPid > 0, PPid != TracerPid
+       run_strace $d -q -enone "$@" > "$OUT"
+
+       parent_pid="$(get_parent_pid < "$OUT")" &&
+       [ "$parent_pid" -gt 0 ] &&
+       tracer_pid="$(get_tracer_pid < "$OUT")" &&
+       [ "$tracer_pid" -gt 0 ] &&
+       [ "$parent_pid" != "$tracer_pid" ] || {
+               cat < "$OUT" > "$LOG"
+               dump_log_and_fail_with "$STRACE $args: unexpected output"
+       }
+
+       while kill -0 "$tracer_pid" 2> /dev/null; do
+               $SLEEP_A_BIT
+       done
+
+       match_diff
+}
+
+test_parent_tracer_pid -D "$@"
+test_parent_tracer_pid -DD "$@"
+test_parent_tracer_pid -DDD "$@"
diff --git a/tests/strace-DD.test b/tests/strace-DD.test
new file mode 100755 (executable)
index 0000000..95164bb
--- /dev/null
@@ -0,0 +1,73 @@
+#!/bin/sh -efu
+#
+# Check -DD option.
+#
+# Copyright (c) 2019-2020 Dmitry V. Levin <ldv@altlinux.org>
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/init.sh"
+
+[ "$STRACE" = "$STRACE_EXE" ] ||
+       skip_ 'Not applicable: $STRACE != $STRACE_EXE'
+
+run_prog_skip_if_failed \
+        kill -0 $$
+
+status_file=/proc/self/status
+get_tracer_pid()
+{
+       sed '/^TracerPid:[[:space:]]*/!d;s///' "$@"
+}
+[ "$(get_tracer_pid "$status_file")" -ge 0 ] ||
+        framework_skip_ "$status_file is not available"
+
+run_prog ../sleep 0
+
+sleep_duration="$(($TIMEOUT_DURATION/2))"
+
+test_D()
+{
+       local tracee_pid tracer_pid rc sig=15
+
+       set -- $STRACE --output="$LOG" --columns=39 \
+               --interruptible=anywhere --trace=nanosleep "$@" -- \
+               ../sleep "$sleep_duration"
+       > "$LOG"
+
+       ../setpgrp-exec "$@" &
+       tracee_pid=$!
+
+       while tracer_pid="$(get_tracer_pid "/proc/$tracee_pid/status")"; do
+               [ "$tracer_pid" = 0 ] ||
+                       break
+               $SLEEP_A_BIT
+       done
+
+       $SLEEP_A_BIT
+       kill -$sig -$tracee_pid
+
+       wait $tracee_pid && rc=0 || rc=$?
+       [ "$rc" -eq $((128 + $sig)) ] ||
+               dump_log_and_fail_with \
+                       "$* failed with unexpected exit status $rc"
+
+       while kill -0 "$tracer_pid" 2> /dev/null; do
+               $SLEEP_A_BIT
+       done
+       match_diff "$LOG" "$EXP"
+}
+
+printf 'nanosleep({tv_sec=%s, tv_nsec=0}, ' "$sleep_duration" > "$EXP"
+test_D -D
+
+uid="${UID:-`id -u`}"
+cat > "$EXP" <<__EOF__
+nanosleep({tv_sec=$sleep_duration, tv_nsec=0}, NULL) = ? ERESTART_RESTARTBLOCK (Interrupted by signal)
+--- SIGTERM {si_signo=SIGTERM, si_code=SI_USER, si_pid=$$, si_uid=$uid} ---
++++ killed by SIGTERM +++
+__EOF__
+
+test_D -DD
+test_D -DDD
diff --git a/tests/strace-DDD.expected b/tests/strace-DDD.expected
new file mode 100644 (file)
index 0000000..78c9d2d
--- /dev/null
@@ -0,0 +1 @@
++++ exited with 0 +++
diff --git a/tests/strace-DDD.test b/tests/strace-DDD.test
new file mode 100755 (executable)
index 0000000..aad4000
--- /dev/null
@@ -0,0 +1,93 @@
+#!/bin/sh -efu
+#
+# Check -DDD option.
+#
+# Copyright (c) 2019-2020 Dmitry V. Levin <ldv@altlinux.org>
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/init.sh"
+
+check_prog sed
+run_prog_skip_if_failed \
+       kill -0 $$
+
+status_file=/proc/self/status
+[ -f "$status_file" ] ||
+       framework_skip_ "$status_file is not available"
+
+stat_file=/proc/self/stat
+[ -f "$stat_file" ] ||
+       framework_skip_ "$stat_file is not available"
+
+reapid="$(../get_process_reaper)" && [ "$reapid" -ge 1 ] ||
+       fail_ 'get_process_reaper failed'
+
+set -- -enone -esignal=none ../tracer_ppid_pgid_sid
+run_strace "$@" > "$OUT"
+read -r tracer_pid ppid pgid sid < "$OUT" &&
+[ "$tracer_pid" -gt 1 ] &&
+[ "$tracer_pid" -ne "$reapid" ] &&
+[ "$ppid" -gt 1 ] &&
+[ "$ppid" -ne "$reapid" ] &&
+[ "$pgid" -ge 0 ] &&
+[ "$sid" -ge 0 ] || {
+       cat < "$OUT" > "$LOG"
+       dump_log_and_fail_with "$STRACE $args: unexpected output"
+}
+match_diff
+
+pgid0="$pgid"
+sid0="$sid"
+
+run_strace -D "$@" > "$OUT"
+read -r tracer_pid ppid pgid sid < "$OUT" &&
+[ "$tracer_pid" -gt 1 ] &&
+[ "$tracer_pid" -ne "$reapid" ] &&
+[ "$ppid" -eq "$reapid" ] &&
+[ "$pgid" = "$pgid0" ] &&
+[ "$sid" = "$sid0" ] || {
+       cat < "$OUT" > "$LOG"
+       dump_log_and_fail_with "$STRACE $args: unexpected output"
+}
+while kill -0 "$tracer_pid" 2> /dev/null; do
+       $SLEEP_A_BIT
+done
+match_diff
+
+run_strace -DD "$@" > "$OUT"
+read -r tracer_pid ppid pgid sid < "$OUT" &&
+[ "$tracer_pid" -gt 1 ] &&
+[ "$tracer_pid" -ne "$reapid" ] &&
+[ "$ppid" -eq "$reapid" ] &&
+[ "$pgid" -gt 1 ] &&
+[ "$pgid" -ne "$reapid" ] &&
+[ "$pgid" != "$pgid0" ] &&
+[ "$pgid" != "$sid" ] &&
+[ "$sid" = "$sid0" ] || {
+       cat < "$OUT" > "$LOG"
+       dump_log_and_fail_with "$STRACE $args: unexpected output"
+}
+while kill -0 "$tracer_pid" 2> /dev/null; do
+       $SLEEP_A_BIT
+done
+match_diff
+
+run_strace -DDD "$@" > "$OUT"
+read -r tracer_pid ppid pgid sid < "$OUT" &&
+[ "$tracer_pid" -gt 1 ] &&
+[ "$tracer_pid" -ne "$reapid" ] &&
+[ "$ppid" -eq "$reapid" ] &&
+[ "$pgid" -gt 1 ] &&
+[ "$pgid" -ne "$reapid" ] &&
+[ "$pgid" != "$pgid0" ] &&
+[ "$sid" = "$pgid" ] &&
+[ "$sid" != "$sid0" ] || {
+       cat < "$OUT" > "$LOG"
+       dump_log_and_fail_with "$STRACE $args: unexpected output"
+}
+while kill -0 "$tracer_pid" 2> /dev/null; do
+       $SLEEP_A_BIT
+done
+match_diff
diff --git a/tests/strace-E-override.test b/tests/strace-E-override.test
new file mode 100755 (executable)
index 0000000..1559617
--- /dev/null
@@ -0,0 +1,14 @@
+#!/bin/sh
+#
+# Check that --env option does not affect strace's own environment.
+#
+# Copyright (c) 2019-2020 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/init.sh"
+
+check_prog true
+run_prog true
+run_strace --quiet=all --trace=none --signal=none --env=PATH=/ $args
diff --git a/tests/strace-E-unset.expected b/tests/strace-E-unset.expected
new file mode 100644 (file)
index 0000000..6ce3620
--- /dev/null
@@ -0,0 +1,5 @@
+execve\("\.\./sleep", \["\.\./sleep", "0"\], \[.*"option_E_var=OPTION_E_VAL".*\]\) = 0
+execve\("\.\./sleep", \["\.\./sleep", "0"\], \[.*"option_E_unsets=OPTION_E_UNSETS".*\]\) = 0
+execve\("\.\./sleep", \["\.\./sleep", "0"\], \[.*"option_E_mod=OPTION_E_NEW".*\]\) = 0
+execve\("\.\./sleep", \["\.\./sleep", "0"\], \[.*"option_E_mods=OPTION_E_MODS".*\]\) = 0
+!execve\("\.\./sleep", \["\.\./sleep", "0"\], \[.*"option_E_unset=.*\]\) = 0
diff --git a/tests/strace-E-unset.test b/tests/strace-E-unset.test
new file mode 100755 (executable)
index 0000000..c7583c1
--- /dev/null
@@ -0,0 +1,32 @@
+#!/bin/sh
+#
+# Check modify/unset behaviour of -E/--env option.
+#
+# Copyright (c) 2016-2020 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/init.sh"
+
+export option_E_var=OPTION_E_VAL
+export option_E_mod=OPTION_E_MOD
+export option_E_mods=OPTION_E_MODS
+export option_E_unset=OPTION_E_UNSET
+export option_E_unsets=OPTION_E_UNSETS
+
+run_prog ../sleep 0
+run_strace -qqq -e signal=none -e trace=execve -v \
+       -E option_E_mod=OPTION_E_NEW \
+       -E option_E_unset \
+       -E option_E_missing \
+       $args
+match_grep
+
+run_prog ../sleep 0
+run_strace --quiet=all --signal=none --trace=execve --no-abbrev \
+       --env=option_E_mod=OPTION_E_NEW \
+       --env=option_E_unset \
+       --env=option_E_missing \
+       $args
+match_grep
index 82b95df533dbb8139a9056418d0a4194881e7870..b0bebe1e667b7182162b9fd73907c7307a75cd8f 100755 (executable)
@@ -2,7 +2,7 @@
 #
 # Check -E option.
 #
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -12,3 +12,7 @@
 run_prog ../sleep 0 > /dev/null
 run_strace -E option_E_var=OPTION_E_VAL -v $args
 match_grep
+
+run_prog ../sleep 0 > /dev/null
+run_strace --env=option_E_var=OPTION_E_VAL --no-abbrev $args
+match_grep
index 4b5be6d904c2c67a5649536ae58932f17311237b..fcea4185e86d67802bf7af147af5edc970950858 100755 (executable)
@@ -2,7 +2,7 @@
 #
 # Check -S option.
 #
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
@@ -18,7 +18,7 @@ test_c()
        sortopts="$1"; shift
        sedexpr="$1"; shift
 
-       run_strace -c -w -S "$sortby" ../readv > /dev/null
+       run_strace -c -w $sortby ../readv > /dev/null
        sed -r -n -e "$sedexpr" < "$LOG" > "$OUT"
 
        [ -s "$OUT" ] ||
@@ -31,5 +31,31 @@ test_c()
 }
 
 c='[[:space:]]+([^[:space:]]+)'
-test_c calls '-n -r' '/^[[:space:]]+[0-9]/ s/^'"$c$c$c$c"'[[:space:]].*/\4/p'
-test_c name '' '/^[[:space:]]+[0-9]/ s/^'"$c$c$c$c"'([[:space:]]+[0-9]+)?'"$c"'$/\6/p'
+for s in '' '-S time' --summary-sort-by=time_total '-S total_time'; do
+       test_c "$s" '-n -r' \
+               's/^[[:space:]]+([0-9]+)[.,]([0-9]+)[[:space:]].*/\1\t\2/p'
+done
+for s in '-S avg_time' --summary-sort-by=time_avg; do
+       test_c "$s" '-n -r' \
+               '/^[[:space:]]+[0-9]/ s/^'"$c$c$c$c"'[[:space:]].*/\3/p'
+done
+for s in '-S calls' --summary-sort-by=count; do
+       test_c "$s" '-n -r' \
+               '/^[[:space:]]+[0-9]/ s/^'"$c$c$c$c"'[[:space:]].*/\4/p'
+done
+for s in '-S name' --summary-sort-by=syscall '-S syscall_name'; do
+       test_c "$s" '' \
+               '/^[[:space:]]+[0-9]/ s/^'"$c$c$c$c"'([[:space:]]+[0-9]+)?'"$c"'$/\6/p'
+done
+for s in '-S error' --summary-sort-by=errors; do
+       test_c "$s" '-n -r' \
+               '/^[[:space:]]+[0-9]/ s/^'"$c$c$c$c"'([[:space:]]+([0-9]+))?'"$c"'$/\6/p'
+done
+for s in '--summary-columns=time,time-max,name -S max_time' '-U time-percent,max_time,syscall_name --summary-sort-by=longest'; do
+       test_c "$s" '-n -r' \
+               '/^[[:space:]]+[0-9]/ s/^'"$c$c"'[[:space:]].*/\2/p'
+done
+for s in '--summary-columns=time,time_min,name -S min-time' '-U time_percent,min_time,syscall-name --summary-sort-by=shortest'; do
+       test_c "$s" '-n -r' \
+               '/^[[:space:]]+[0-9]/ s/^'"$c$c"'[[:space:]].*/\2/p'
+done
index 7c3136b78b02a0c1a8d566700919870ff7418104..adca3e87244677c852053e0ae523dd895c923b05 100755 (executable)
@@ -2,13 +2,15 @@
 #
 # Check -T option.
 #
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 . "${srcdir=.}/init.sh"
 
+T_opt="${1:--T}"
+
 run_prog ../sleep 0
-run_strace -a24 -T -enanosleep ../sleep 1
+run_strace -a24 "${T_opt}" -enanosleep ../sleep 1
 match_grep
index a0274c282f938d906ea571b8b5b61b73cba84fe8..30f10808c21a3f97df36da0ea4ce14a82afa1c2b 100755 (executable)
@@ -6,51 +6,30 @@
 run_prog_skip_if_failed date +%Y > /dev/null
 year="$(date +%Y)"
 
-run_strace -V > "$LOG"
+run_strace -V > "$OUT"
+run_strace --version > "$LOG"
+match_diff "$LOG" "$OUT" '-V and --version output mismatch'
 
-getstr()
-{
-       sed -r -n 's/#define[[:space:]]*'"$1"'[[:space:]]*"([^"]*)".*/\1/p' \
-               ../../config.h
-}
-
-# getoption OPTION YES_STRING [NO_STRING]
-#
-# Returns YES_STRING in case OPTION is enabled (present in config.h and has
-# a non-zero numeric value). Otherwise, NO_STRING (or empty string, if not
-# specified) is returned.
-getoption()
-{
-       local opt
-       opt=$(sed -r -n 's/#define[[:space:]]*'"$1"'[[:space:]]*([0-9]+)$/\1/p' \
-               ../../config.h)
-       if [ -n "$opt" -a "$opt" -ne 0 ]; then
-               printf "%s" "$2"
-       else
-               printf "%s" "${3-}"
-       fi
-}
-
-config_year=$(getstr COPYRIGHT_YEAR)
+config_year=$(get_config_str COPYRIGHT_YEAR)
 
 [ "$year" -ge "$config_year" ] && [ "$config_year" -ge 2017 ] || {
        echo >&2 "The year derived from config.h (${config_year}) does not pass sanity checks."
        exit 1
 }
 
-option_unwind=$(getoption ENABLE_STACKTRACE \
-               " stack-trace=$(getstr USE_UNWINDER)")
-option_demangle=$(getoption USE_DEMANGLE " stack-demangle")
+option_unwind=$(get_config_option ENABLE_STACKTRACE \
+               " stack-trace=$(get_config_str USE_UNWINDER)")
+option_demangle=$(get_config_option USE_DEMANGLE " stack-demangle")
 
 option_m32=
 option_mx32=
 case "$STRACE_NATIVE_ARCH" in
 x86_64)
-       option_m32=$(getoption HAVE_M32_MPERS ' m32-mpers' ' no-m32-mpers')
-       option_mx32=$(getoption HAVE_MX32_MPERS ' mx32-mpers' ' no-mx32-mpers')
+       option_m32=$(get_config_option HAVE_M32_MPERS ' m32-mpers' ' no-m32-mpers')
+       option_mx32=$(get_config_option HAVE_MX32_MPERS ' mx32-mpers' ' no-mx32-mpers')
        ;;
-aarch64|powerpc64|riscv|s390x|sparc64|tile|x32)
-       option_m32=$(getoption HAVE_M32_MPERS ' m32-mpers' ' no-m32-mpers')
+aarch64|powerpc64|s390x|sparc64|tile|x32)
+       option_m32=$(get_config_option HAVE_M32_MPERS ' m32-mpers' ' no-m32-mpers')
        ;;
 esac
 
@@ -58,12 +37,12 @@ features="${option_unwind}${option_demangle}${option_m32}${option_mx32}"
 [ -n "$features" ] || features=" (none)"
 
 cat > "$EXP" << __EOF__
-$(getstr PACKAGE_NAME) -- version $(getstr PACKAGE_VERSION)
-Copyright (c) 1991-${config_year} The strace developers <$(getstr PACKAGE_URL)>.
+$(get_config_str PACKAGE_NAME) -- version $(get_config_str PACKAGE_VERSION)
+Copyright (c) 1991-${config_year} The strace developers <$(get_config_str PACKAGE_URL)>.
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
 Optional features enabled:${features}
 __EOF__
 
-match_diff "$LOG" "$EXP"
+match_diff "$OUT" "$EXP"
index 429549f2a63d6c788ebfd3abc5902d49c29e0ced..9011bdd8dcf081aeb8ad9c7c22be048e788d718e 100755 (executable)
@@ -1,17 +1,21 @@
-#!/bin/sh
+#!/bin/sh -efu
 #
 # Check -ff option.
 #
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 . "${srcdir=.}/init.sh"
 
+ff_opt="${*:--ff}"
+
 run_prog_skip_if_failed \
        kill -0 $$
 
+run_prog ../sleep 0
+
 ../set_ptracer_any ../sleep 3 > "$OUT" &
 tracee_pid=$!
 
@@ -20,12 +24,13 @@ while ! [ -s "$OUT" ]; do
                fail_ 'set_ptracer_any sleep failed'
 done
 
-run_strace -a14 -eexit_group -ff -p $tracee_pid
+run_strace --quiet=personality -a14 -eexit_group ${ff_opt} -p $tracee_pid
 
 # check that output matches
 match_diff "$LOG.$tracee_pid"
 
 # check that no other output files have been created
+set +f
 set -- "$LOG".*
 [ "$LOG.$tracee_pid" = "$*" ] ||
        fail_ "too many output files: $*"
diff --git a/tests/strace-k-p.expected b/tests/strace-k-p.expected
new file mode 100644 (file)
index 0000000..e40c339
--- /dev/null
@@ -0,0 +1,2 @@
+^chdir .*(__kernel_vsyscaln )?(__)?chdir f3 f2 f1 f0 main
+^SIGURG .*(__kernel_vsyscaln )?(__)?kill f3 f2 f1 f0 main
diff --git a/tests/strace-k-p.test b/tests/strace-k-p.test
new file mode 100755 (executable)
index 0000000..fac484f
--- /dev/null
@@ -0,0 +1,13 @@
+#!/bin/sh
+#
+# Check strace -k for attached tracees.
+#
+# Copyright (c) 2020 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+ATTACH_MODE=1
+test_prog=../stack-fcall-attach
+
+. "${srcdir=.}"/strace-k.test
index 7a323431807aeef2b705942c7e7fe040f9600b6c..51e8cb2a1f0f163e1f8fa6a9a099ceb9c4f9ec58 100755 (executable)
@@ -4,23 +4,49 @@
 #
 # Copyright (c) 2014 Masatake YAMATO <yamato@redhat.com>
 # Copyright (c) 2014-2016 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2014-2019 The strace developers.
+# Copyright (c) 2014-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 . "${srcdir=.}/init.sh"
 
+: "${ATTACH_MODE=0}"
+
 # strace -k is implemented using /proc/$pid/maps
 [ -f /proc/self/maps ] ||
        framework_skip_ '/proc/self/maps is not available'
 
 check_prog grep
+check_prog readlink
 check_prog sed
 check_prog tr
 
+path_to_sed="$(command -v sed)"
+if [ -x "$path_to_sed" ] &&
+   path_to_sed="$(readlink -ev -- "$path_to_sed")"; then
+       "$path_to_sed" -n 's/^[^/]\+[[:space:]]\(\/.*\)$/\1/p' /proc/self/maps |
+       grep -F -x -e "$path_to_sed" > /dev/null || {
+               cat >&2 /proc/self/maps
+               framework_skip_ '/proc/self/maps is invalid'
+       }
+fi
+
 run_prog "${test_prog=../stack-fcall}"
-run_strace -e chdir -k $args
+
+if [ "x${ATTACH_MODE}" = "x1" ]; then
+       ../set_ptracer_any "${test_prog}" >> "$EXP" &
+       tracee_pid=$!
+
+       while ! [ -s "$EXP" ]; do
+               kill -0 "$tracee_pid" 2> /dev/null ||
+                       fail_ 'set_ptracer_any failed'
+       done
+
+       run_strace --trace=chdir --stack-trace --attach="$tracee_pid"
+else
+       run_strace -e chdir -k $args
+fi
 
 expected="$srcdir/$NAME.expected"
 awk '
diff --git a/tests/strace-n.c b/tests/strace-n.c
new file mode 100644 (file)
index 0000000..452bd4c
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+ * Test strace's -n option.
+ *
+ * Copyright (c) 2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#include <stdio.h>
+#include <unistd.h>
+#include <errno.h>
+
+#define SC_listen 4
+
+int
+main(void)
+{
+       int rc;
+
+#if defined __NR_socketcall
+       if (syscall(__NR_socketcall, 0L, 0L, 0L, 0L, 0L) < 0
+               && EINVAL == errno)
+       {
+               const long args[] = { 0, 0 };
+               rc = syscall(__NR_socketcall, SC_listen, args);
+               printf("[%4u] listen(0, 0) = %s\n", __NR_socketcall, sprintrc(rc));
+       }
+#endif
+
+#if defined __NR_listen
+       rc = syscall(__NR_listen, 0, 0);
+       printf("[%4u] listen(0, 0) = %s\n", __NR_listen, sprintrc(rc));
+#endif
+
+       return 0;
+}
diff --git a/tests/strace-n.gen.test b/tests/strace-n.gen.test
new file mode 100755 (executable)
index 0000000..023380f
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace-n -e trace=listen -n -qq -a 12); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=listen -n -qq -a 12
index 936f4a15c998048be78d85af7aa59aa41e22bf85..829973753c1345e1085143f12222e9be59ebabae 100755 (executable)
@@ -2,13 +2,15 @@
 #
 # Check -r option.
 #
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 . "${srcdir=.}/init.sh"
 
+r_opt="${1:--r}"
+
 run_prog ../sleep 0
-run_strace -r -eexecve ../sleep 1
+run_strace "${r_opt}" -eexecve ../sleep 1
 match_grep
index a06408dbb34f5b5069a3fa0f721e20c8d546f202..4d79a2d9a3f6dc8c62ea79c72798342a6331c588 100755 (executable)
@@ -2,19 +2,21 @@
 #
 # Check -t option.
 #
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 . "${srcdir=.}/init.sh"
 
+opts="${*:--t}"
+
 run_prog_skip_if_failed date +%s > "$LOG"
 run_prog_skip_if_failed date +%T --date "@$(cat "$LOG")" > /dev/null
 run_prog ../sleep 0
 
 s0="$(date +%s)"
-run_strace -t -eexecve $args
+run_strace $opts -eexecve $args
 s1="$(date +%s)"
 
 s="$s0"
index 4d1331b15f9fd6e1210ca954c78662fa0c0fcbdb..17d87d6737ed7a29af972ea7dc07d5c63c2b79db 100755 (executable)
@@ -2,19 +2,23 @@
 #
 # Check -tt option.
 #
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 . "${srcdir=.}/init.sh"
 
+precision="${1:-6}"
+[ x0 = "x$#" ] || shift
+opts="${*:--tt}"
+
 run_prog_skip_if_failed date +%s > "$LOG"
 run_prog_skip_if_failed date +%T --date "@$(cat "$LOG")" > /dev/null
 run_prog ../sleep 0
 
 s0="$(date +%s)"
-run_strace -tt -eexecve $args
+run_strace $opts -eexecve $args
 s1="$(date +%s)"
 
 s="$s0"
@@ -26,7 +30,7 @@ while [ "$s" -le "$s1" ]; do
 done
 
 cat > "$EXP" << __EOF__
-($t_reg)\\.[[:digit:]]{6} execve\\("\\.\\./sleep", \\["\\.\\./sleep", "0"\\], 0x[[:xdigit:]]* /\\* [[:digit:]]* vars \\*/\\) = 0
+($t_reg)\\.[[:digit:]]{${precision}} execve\\("\\.\\./sleep", \\["\\.\\./sleep", "0"\\], 0x[[:xdigit:]]* /\\* [[:digit:]]* vars \\*/\\) = 0
 __EOF__
 
 match_grep "$LOG" "$EXP"
index 089ff0647e9359f86f6a27cae5841a5931319ffd..2578d874ac601e5e4a6d6db283e749645b4d1e80 100755 (executable)
@@ -2,18 +2,22 @@
 #
 # Check -ttt option.
 #
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 . "${srcdir=.}/init.sh"
 
+precision="${1:-6}"
+[ x0 = "x$#" ] || shift
+opts="${*:--ttt}"
+
 run_prog_skip_if_failed date +%s > /dev/null
 run_prog ../sleep 0
 
 s0="$(date +%s)"
-run_strace -ttt -eexecve $args
+run_strace $opts -eexecve $args
 s1="$(date +%s)"
 
 s="$s0"
@@ -23,8 +27,14 @@ while [ "$s" -le "$s1" ]; do
        s=$(($s + 1))
 done
 
+if [ x0 = "x${precision}" ]; then
+       subsec_re=""
+else
+       subsec_re="\\.[[:digit:]]{${precision}}"
+fi
+
 cat > "$EXP" << __EOF__
-($t_reg)\\.[[:digit:]]{6} execve\\("\\.\\./sleep", \\["\\.\\./sleep", "0"\\], 0x[[:xdigit:]]* /\\* [[:digit:]]+ vars \\*/\\) = 0
+($t_reg)${subsec_re} execve\\("\\.\\./sleep", \\["\\.\\./sleep", "0"\\], 0x[[:xdigit:]]* /\\* [[:digit:]]+ vars \\*/\\) = 0
 __EOF__
 
 match_grep "$LOG" "$EXP"
diff --git a/tests/strace-x.c b/tests/strace-x.c
new file mode 100644 (file)
index 0000000..5d537e9
--- /dev/null
@@ -0,0 +1,82 @@
+/*
+ * Test strace's -x option.
+ *
+ * Copyright (c) 2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#include <stdio.h>
+#include <unistd.h>
+
+#ifndef STRACE_XX
+# define STRACE_XX 0
+#endif
+
+#if STRACE_XX
+# define XOUT(x_, xx_) xx_
+#else
+# define XOUT(x_, xx_) x_
+#endif
+
+int
+main(void)
+{
+       static const struct {
+               const char *path;
+               const char *out;
+       } test_vecs[] = {
+               { "test", XOUT("test", "\\x74\\x65\\x73\\x74") },
+               { "\t\n\v\f\r hi~", XOUT("\\t\\n\\v\\f\\r hi~",
+                 "\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\x68\\x69\\x7e") },
+               { "\t\n\v\f\r\16 hi~", XOUT(
+                 "\\x09\\x0a\\x0b\\x0c\\x0d\\x0e\\x20\\x68\\x69\\x7e",
+                 "\\x09\\x0a\\x0b\\x0c\\x0d\\x0e\\x20\\x68\\x69\\x7e") },
+               { "\10\t\n\v\f\r hi~", XOUT(
+                 "\\x08\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\x68\\x69\\x7e",
+                 "\\x08\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\x68\\x69\\x7e") },
+               { "\t\n\v\f\r\37 hi~", XOUT(
+                 "\\x09\\x0a\\x0b\\x0c\\x0d\\x1f\\x20\\x68\\x69\\x7e",
+                 "\\x09\\x0a\\x0b\\x0c\\x0d\\x1f\\x20\\x68\\x69\\x7e") },
+               { "\t\n\v\f\r hi~\177", XOUT(
+                 "\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\x68\\x69\\x7e\\x7f",
+                 "\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\x68\\x69\\x7e\\x7f") },
+               { "\t\n\v\f\r hi~\222", XOUT(
+                 "\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\x68\\x69\\x7e\\x92",
+                 "\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\x68\\x69\\x7e\\x92") },
+               { "\t\n\v\f\r hi~\377", XOUT(
+                 "\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\x68\\x69\\x7e\\xff",
+                 "\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\x68\\x69\\x7e\\xff") },
+       };
+       static char path[] = "  ";
+
+       const char *rc_str;
+
+       for (size_t i = 0; i < ARRAY_SIZE(test_vecs); i++) {
+               rc_str = sprintrc(chdir(test_vecs[i].path));
+               printf("chdir(\"%s\") = %s\n", test_vecs[i].out, rc_str);
+       }
+
+       for (unsigned char c = 1; c < 255; c++) {
+               path[1] = c;
+               rc_str = sprintrc(chdir(path));
+
+               printf("chdir(");
+#if STRACE_XX
+               print_quoted_hex(path, sizeof(path) - 1);
+#else
+               if (((c < ' ') || (c >= 0x7f)) && (c != '\t') && (c != '\n') &&
+                   (c != '\v') && (c != '\f') && (c != '\r'))
+                       print_quoted_hex(path, sizeof(path) - 1);
+               else
+                       print_quoted_string(path);
+#endif
+               printf(") = %s\n", rc_str);
+       }
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
diff --git a/tests/strace-x.gen.test b/tests/strace-x.gen.test
new file mode 100755 (executable)
index 0000000..231f34c
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace-x -e trace=chdir -x -a 12); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=chdir -x -a 12
diff --git a/tests/strace-xx.c b/tests/strace-xx.c
new file mode 100644 (file)
index 0000000..af37c30
--- /dev/null
@@ -0,0 +1,2 @@
+#define STRACE_XX 1
+#include "strace-x.c"
diff --git a/tests/strace-xx.gen.test b/tests/strace-xx.gen.test
new file mode 100755 (executable)
index 0000000..3deb88c
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (strace-xx -e trace=chdir -xx -a 18); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=chdir -xx -a 18
index a854182e2e90b2db92a76fdc1484a3bedf710e60..4b032207b4f3ffebc8f54f59142a79d7b97284cc 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_swapon && defined __NR_swapoff
 
index 3ad2368e22a0a08b44a34c397f0c85e6973a7c55..3b66f5a68b8e8f509430a5b98701db443e593235 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of sgetmask and ssetmask syscalls.
  *
  * Copyright (c) 2017-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_sgetmask && defined __NR_ssetmask
 
index 8283a8e243a240f57e704ef935c2fd1d4a4616cf..c47ad842d160c76ce952fb11176166abacdb70c0 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_symlink
 
index be36b941962c5ffaa42e40f0a0a236390c5c7e64..d2d1729bbc962c617253a27b013369747a69e52f 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_symlinkat
 
index e0b654d0b5be962a5e3ffae1daa35d7aee6661d0..db7924beaeee96fce051d43b2f09ef1ef7584d0f 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_sync
 
index 9eba7815259ae0da0c233e1387098853e6192249..0f6d1e3f398afc24bd4df7032c5297ce9ad3dd4d 100644 (file)
@@ -2,6 +2,7 @@
  * Check decoding of sync_file_range syscall.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -9,7 +10,7 @@
 
 #include "tests.h"
 #include <fcntl.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined HAVE_SYNC_FILE_RANGE && defined __NR_sync_file_range
 
index 03af1005646a4a52acabd54a9b8c4394938c856f..d914b28934360eebe91a260ed1444948af488e86 100644 (file)
@@ -2,6 +2,7 @@
  * Check decoding of sync_file_range2 syscall.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -9,7 +10,7 @@
 
 #include "tests.h"
 #include <fcntl.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined HAVE_SYNC_FILE_RANGE && defined  __NR_sync_file_range2
 
index 2e30e6a14d2e4155ff23973e16ec50fb85923408..da43d656e95fa0456c2a9a9ca4985a307559134f 100644 (file)
@@ -3,57 +3,76 @@
 # Define syntax testing primitives.
 #
 # Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2016-2018 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 . "${srcdir=.}/init.sh"
 
+log_sfx()
+{
+       printf "%.128s" "$*" | tr -c '0-9A-Za-z-=,' '_'
+}
+
 check_exit_status_and_stderr()
 {
-       $STRACE "$@" 2> "$LOG" &&
-               dump_log_and_fail_with \
-                       "strace $* failed to handle the error properly"
-       match_diff "$LOG" "$EXP" ||
-               dump_log_and_fail_with \
-                       "strace $* failed to print expected diagnostics"
+       local sfx
+       sfx="$1"; shift
+       $STRACE "$@" 2> "$LOG.$sfx" && {
+               cat "$LOG.$sfx" >&2
+               fail_ "strace $* failed to handle the error properly"
+       }
+       match_diff "$LOG.$sfx" "$EXP.$sfx" \
+               "strace $* failed to print expected diagnostics"
 }
 
 check_exit_status_and_stderr_using_grep()
 {
-       $STRACE "$@" 2> "$LOG" &&
-               dump_log_and_fail_with \
-                       "strace $* failed to handle the error properly"
-       match_grep "$LOG" "$EXP" ||
-               dump_log_and_fail_with \
-                       "strace $* failed to print expected diagnostics"
+       local sfx
+       sfx="$1"; shift
+       $STRACE "$@" 2> "$LOG.$sfx" && {
+               cat "$LOG.$sfx" >&2
+               fail_ "strace $* failed to handle the error properly"
+       }
+       match_grep "$LOG.$sfx" "$EXP.$sfx" \
+               "strace $* failed to print expected diagnostics"
 }
 
 check_e()
 {
-       local pattern="$1"; shift
-       cat > "$EXP" << __EOF__
+       local pattern sfx
+       pattern="$1"; shift
+       sfx="$(log_sfx "$*")"
+       cat > "$EXP.$sfx" << __EOF__
 $STRACE_EXE: $pattern
 __EOF__
-       check_exit_status_and_stderr "$@"
+       check_exit_status_and_stderr "$sfx" "$@"
 }
 
 check_e_using_grep()
 {
-       local pattern="$1"; shift
-       cat > "$EXP" << __EOF__
+       local pattern sfx
+       pattern="$1"; shift
+       sfx="$(log_sfx "$*")"
+       cat > "$EXP.$sfx" << __EOF__
 $STRACE_EXE: $pattern
 __EOF__
-       check_exit_status_and_stderr_using_grep "$@"
+       check_exit_status_and_stderr_using_grep "$sfx" "$@"
 }
 
 check_h()
 {
-       local pattern="$1"; shift
-       cat > "$EXP" << __EOF__
-$STRACE_EXE: $pattern
-Try '$STRACE_EXE -h' for more information.
-__EOF__
-       check_exit_status_and_stderr "$@"
+       local patterns sfx
+       patterns="$1"; shift
+       sfx="$(log_sfx "$*")"
+       {
+               local pattern
+               printf '%s\n' "$patterns" |
+                       while read -r pattern; do
+                               printf '%s: %s\n' "$STRACE_EXE" "$pattern"
+                       done
+               printf "Try '%s -h' for more information.\\n" "$STRACE_EXE"
+       } > "$EXP.$sfx"
+       check_exit_status_and_stderr "$sfx" "$@"
 }
diff --git a/tests/syslog-success.c b/tests/syslog-success.c
new file mode 100644 (file)
index 0000000..4374de6
--- /dev/null
@@ -0,0 +1,2 @@
+#define RETVAL_INJECTED 1
+#include "syslog.c"
diff --git a/tests/syslog-success.test b/tests/syslog-success.test
new file mode 100755 (executable)
index 0000000..adc916e
--- /dev/null
@@ -0,0 +1,11 @@
+#!/bin/sh -efu
+
+. "${srcdir=.}/scno_tampering.sh"
+
+run_prog ../syslog-success 0
+for i in 0 23 42; do
+       run_strace -a35 -e trace=syslog -e inject=syslog:retval="${i}" \
+               ../syslog-success "${i}" > "$EXP.$i"
+       mv "$LOG" "$LOG.$i"
+       match_diff "$LOG.$i" "$EXP.$i"
+done
index 363fdf967b7c3f396306f4a995e798d46b35fb5e..a9c3c813ac411f50ebeaf02391cf1d30b9883618 100644 (file)
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_syslog
 
 # include <stdio.h>
 # include <unistd.h>
 
-# define SYSLOG_ACTION_READ 2
+# ifdef RETVAL_INJECTED
+#  define RET_SFX " (INJECTED)"
+# else
+#  define RET_SFX ""
+# endif
+
+bool
+valid_cmd(int cmd)
+{
+       return cmd >= 0 && cmd <= 10;
+}
+
+void
+printstr(const char *s, int cmd, long size)
+{
+       if (size < 0 || !valid_cmd(cmd))
+               printf("%p", s);
+       else if (size == 0)
+               printf("\"\"");
+       else if (size <= DEFAULT_STRLEN)
+               print_quoted_memory(s, size);
+       else {
+               print_quoted_memory(s, DEFAULT_STRLEN);
+               printf("...");
+       }
+}
 
 int
 main(void)
 {
-       const long addr = (long) 0xfacefeeddeadbeefULL;
-       int rc = syscall(__NR_syslog, SYSLOG_ACTION_READ, addr, -1);
-       printf("syslog(SYSLOG_ACTION_READ, %#lx, -1) = %d %s (%m)\n",
-              addr, rc, errno2name());
+       static const struct cmd_str {
+               unsigned int cmd;
+               const char *str;
+       } no_args[] = {
+               { 0,  "0 /* SYSLOG_ACTION_CLOSE */" },
+               { 1,  "1 /* SYSLOG_ACTION_OPEN */" },
+               { 5,  "5 /* SYSLOG_ACTION_CLEAR */" },
+               { 6,  "6 /* SYSLOG_ACTION_CONSOLE_OFF */" },
+               { 7,  "7 /* SYSLOG_ACTION_CONSOLE_ON */" },
+               { 9,  "9 /* SYSLOG_ACTION_SIZE_UNREAD */" },
+               { 10, "10 /* SYSLOG_ACTION_SIZE_BUFFER */" },
+       };
+       static const struct cmd_str two_args[] = {
+               { 0xfeedbeef, "-17973521 /* SYSLOG_ACTION_??? */" },
+               { -1U, "-1 /* SYSLOG_ACTION_??? */" },
+               { 2,  "2 /* SYSLOG_ACTION_READ */" },
+               { 3,  "3 /* SYSLOG_ACTION_READ_ALL */" },
+               { 4,  "4 /* SYSLOG_ACTION_READ_CLEAR */" },
+               { 11, "11 /* SYSLOG_ACTION_??? */" },
+               { (1U << 31) - 1, "2147483647 /* SYSLOG_ACTION_??? */" },
+       };
+       static const struct cmd_str levels[] = {
+               { 0xfeedbeef, "-17973521 /* LOGLEVEL_??? */" },
+               { -1U, "-1 /* LOGLEVEL_??? */" },
+               { 0, "0 /* LOGLEVEL_EMERG */" },
+               { 7, "7 /* LOGLEVEL_DEBUG */" },
+               { 8, "8 /* LOGLEVEL_DEBUG+1 */" },
+               { 9, "9 /* LOGLEVEL_??? */" },
+               { (1U << 31) - 1, "2147483647 /* LOGLEVEL_??? */" },
+       };
+       static const kernel_ulong_t high =
+               (kernel_ulong_t) 0xbadc0ded00000000ULL;
+       static const size_t buf_size = 64;
+
+       const kernel_ulong_t addr = (kernel_ulong_t) 0xfacefeeddeadbeefULL;
+       int rc;
+       char *buf = tail_alloc(buf_size);
+
+       fill_memory(buf, buf_size);
+
+       for (size_t i = 0; i < ARRAY_SIZE(no_args); i++) {
+               rc = syscall(__NR_syslog, high | no_args[i].cmd, addr, -1);
+               printf("syslog(%s) = %s" RET_SFX "\n",
+               no_args[i].str, sprintrc(rc));
+       }
+
+       for (size_t i = 0; i < ARRAY_SIZE(two_args); i++) {
+               rc = syscall(__NR_syslog, high | two_args[i].cmd, NULL, -1);
+               printf("syslog(%s, NULL, -1) = %s" RET_SFX "\n",
+                      two_args[i].str, sprintrc(rc));
+
+# ifdef RETVAL_INJECTED
+               /* Avoid valid commands with a bogus address */
+               if (!valid_cmd(two_args[i].cmd))
+# endif
+               {
+                       rc = syscall(__NR_syslog, high | two_args[i].cmd, addr,
+                                    -1);
+                       printf("syslog(%s, %#llx, -1) = %s" RET_SFX "\n",
+                              two_args[i].str, (unsigned long long) addr,
+                              sprintrc(rc));
+
+                       rc = syscall(__NR_syslog, two_args[i].cmd, addr, 0);
+
+                       printf("syslog(%s, %s, 0) = %s" RET_SFX "\n",
+                              two_args[i].str,
+                              !rc && valid_cmd(two_args[i].cmd)
+                                  && (sizeof(kernel_ulong_t) == sizeof(void *))
+                                     ? "\"\""
+                                     : (sizeof(addr) == 8)
+                                       ? "0xfacefeeddeadbeef" : "0xdeadbeef",
+                              sprintrc(rc));
+               }
+
+               rc = syscall(__NR_syslog, two_args[i].cmd, buf, buf_size);
+               const char *errstr = sprintrc(rc);
+
+               printf("syslog(%s, ", two_args[i].str);
+               if (rc >= 0 && valid_cmd(two_args[i].cmd))
+                       printstr(buf, two_args[i].cmd, rc);
+               else
+                       printf("%p", buf);
+               printf(", %zu) = %s" RET_SFX "\n", buf_size, errstr);
+       }
+
+       for (size_t i = 0; i < ARRAY_SIZE(levels); i++) {
+               rc = syscall(__NR_syslog, high | 8, addr, levels[i].cmd);
+               printf("syslog(8 /* SYSLOG_ACTION_CONSOLE_LEVEL */, %#llx, %s)"
+                      " = %s" RET_SFX "\n",
+                      (unsigned long long) addr, levels[i].str, sprintrc(rc));
+       }
 
        puts("+++ exited with 0 +++");
        return 0;
index 5707a3e2a4570fa132317ed1757c5118f40dbff7..673b0180f04fa76e167b4096c661cac62b253800 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (syslog -a36 ); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (syslog -a35 ); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a36 
+run_strace_match_diff -a35 
index 2137c3514fe1f8490421e816e7e0e7f5d1d29049..d620bb8fed4ffe74948d3946404096ca83b5f85e 100644 (file)
@@ -2,13 +2,14 @@
  * This file is part of tee strace test.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_tee
 
index d41ddf0a0a0e0d9c63c79c37d13c0c1162d2f093..2bda35fc9bfb771e37a859d66e5f80b75afa7640 100755 (executable)
@@ -2,7 +2,7 @@
 #
 # Check termination signal forwarding.
 #
-# Copyright (c) 2017-2018 The strace developers.
+# Copyright (c) 2017-2019 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 run_expect_termsig="../run_expect_termsig 15"
 unblock_reset_raise="../unblock_reset_raise 15"
+block_reset_run="../block_reset_run 15"
+orig_STRACE="$STRACE"
 
+run_prog $run_expect_termsig $block_reset_run $unblock_reset_raise
 run_prog $run_expect_termsig $unblock_reset_raise
-STRACE="$run_expect_termsig $STRACE"
 
+STRACE="$run_expect_termsig $orig_STRACE"
+for i in 1 2 3 4; do
+       run_strace -I$i -enone -esignal=none $unblock_reset_raise
+done
+
+STRACE="$run_expect_termsig $block_reset_run $orig_STRACE"
 for i in 1 2 3 4; do
        run_strace -I$i -enone -esignal=none $unblock_reset_raise
 done
index 8b8c66b8d645abfb406bb1f05482c2c4e3b7d168..5a97382f59c8ad947e94d6de8e40c61e283dcb5e 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 #include "netlink.h"
 #include <linux/rtnetlink.h>
 
+#ifndef PRINT_SOCK
+# define PRINT_SOCK 0
+#endif
+
 static void
 init_nlattr(struct nlattr *const nla,
            const uint16_t nla_len,
@@ -37,6 +41,29 @@ print_nlattr(const unsigned int nla_len, const char *const nla_type, bool add_da
               add_data ? "[" : "", nla_len, nla_type);
 }
 
+static void
+print_sockfd(int sockfd, const char *pfx, const char *sfx)
+{
+#if PRINT_SOCK
+       static int fd = -1;
+       static unsigned long inode;
+
+       if (sockfd < 0) {
+               printf("%s%d%s", pfx, sockfd, sfx);
+               return;
+       }
+
+       if (sockfd != fd) {
+               fd = sockfd;
+               inode = inode_of_sockfd(fd);
+       }
+
+       printf("%s%d<socket:[%lu]>%s", pfx, sockfd, inode, sfx);
+#else
+       printf("%s%d%s", pfx, sockfd, sfx);
+#endif
+}
+
 #define TEST_NLATTR_EX_(fd_, nlh0_, hdrlen_,                           \
                     init_msg_, print_msg_,                             \
                     nla_type_, nla_type_str_,                          \
@@ -60,7 +87,7 @@ print_nlattr(const unsigned int nla_len, const char *const nla_type, bool add_da
                        sprintrc(sendto((fd_), nlh, msg_len,            \
                                        MSG_DONTWAIT, NULL, 0));        \
                                                                        \
-               printf("sendto(%d, {", (fd_));                          \
+               print_sockfd((fd_), "sendto(", ", {");                  \
                (print_msg_)(msg_len);                                  \
                print_nlattr(nla_len, (nla_type_str_),                  \
                             (nla_total_len_) > (nla_data_len_));       \
@@ -96,11 +123,9 @@ print_nlattr(const unsigned int nla_len, const char *const nla_type, bool add_da
 #define TEST_NLATTR_OBJECT_EX_(fd_, nlh0_, hdrlen_,                    \
                               init_msg_, print_msg_,                   \
                               nla_type_, nla_type_str_,                \
-                              pattern_, obj_, fallback_func, ...)      \
+                              pattern_, obj_, minsz_, fallback_func, ...) \
        do {                                                            \
-               const unsigned int plen =                               \
-                       sizeof(obj_) - 1 > DEFAULT_STRLEN               \
-                       ? DEFAULT_STRLEN : (int) sizeof(obj_) - 1;      \
+               const unsigned int plen = MIN((minsz_) - 1, DEFAULT_STRLEN); \
                /* len < sizeof(obj_) */                                \
                if (plen > 0)                                           \
                        TEST_NLATTR_((fd_), (nlh0_), (hdrlen_),         \
@@ -113,7 +138,7 @@ print_nlattr(const unsigned int nla_len, const char *const nla_type, bool add_da
                        (init_msg_), (print_msg_),                      \
                        (nla_type_), (nla_type_str_),                   \
                        sizeof(obj_),                                   \
-                       (pattern_), sizeof(obj_) - 1,                   \
+                       (pattern_), (minsz_) - 1,                       \
                        printf("%p",                                    \
                               RTA_DATA(NLMSG_ATTR(nlh, (hdrlen_)))));  \
                /* sizeof(obj_) */                                      \
@@ -128,12 +153,12 @@ print_nlattr(const unsigned int nla_len, const char *const nla_type, bool add_da
 #define TEST_NLATTR_OBJECT_EX(fd_, nlh0_, hdrlen_,                     \
                              init_msg_, print_msg_,                    \
                              nla_type_,                                \
-                             pattern_, obj_, fallback_func, ...)       \
+                             pattern_, obj_, minsz_, fallback_func, ...) \
        TEST_NLATTR_OBJECT_EX_((fd_), (nlh0_), (hdrlen_),               \
                               (init_msg_), (print_msg_),               \
                               (nla_type_), #nla_type_,                 \
-                              (pattern_), (obj_), (fallback_func),     \
-                              __VA_ARGS__)
+                              (pattern_), (obj_), (minsz_),            \
+                              (fallback_func), __VA_ARGS__)
 
 #define TEST_NLATTR_OBJECT(fd_, nlh0_, hdrlen_,                                \
                           init_msg_, print_msg_,                       \
@@ -141,8 +166,17 @@ print_nlattr(const unsigned int nla_len, const char *const nla_type, bool add_da
        TEST_NLATTR_OBJECT_EX_((fd_), (nlh0_), (hdrlen_),               \
                               (init_msg_), (print_msg_),               \
                               (nla_type_), #nla_type_,                 \
-                              (pattern_), (obj_), print_quoted_hex,    \
-                              __VA_ARGS__)
+                              (pattern_), (obj_), sizeof(obj_),        \
+                              print_quoted_hex, __VA_ARGS__)
+
+#define TEST_NLATTR_OBJECT_MINSZ(fd_, nlh0_, hdrlen_,                  \
+                          init_msg_, print_msg_,                       \
+                          nla_type_, pattern_, obj_, minsz_, ...)      \
+       TEST_NLATTR_OBJECT_EX_((fd_), (nlh0_), (hdrlen_),               \
+                              (init_msg_), (print_msg_),               \
+                              (nla_type_), #nla_type_,                 \
+                              (pattern_), (obj_), (minsz_),            \
+                              print_quoted_hex, __VA_ARGS__)
 
 #define TEST_NLATTR_ARRAY(fd_, nlh0_, hdrlen_,                         \
                          init_msg_, print_msg_,                        \
index 09c438d1d64c548d7af031fb5b7044a25b63e058..9e9a543c1d5ee4a6bebf6e15111554d1fda2e956 100644 (file)
@@ -2,7 +2,7 @@
  * Test printstrn/umoven.
  *
  * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -13,7 +13,6 @@
 #include <stdio.h>
 #include <string.h>
 #include <unistd.h>
-#include <asm/unistd.h>
 
 #include "scno.h"
 #include "test_ucopy.h"
index 78d393b200fd4e74e720689501d9d0216053e052..0574c73cb7263d5bbd94d9e71e2041f02990203c 100644 (file)
@@ -2,7 +2,7 @@
  * Test whether process_vm_readv and PTRACE_PEEKDATA work.
  *
  * Copyright (c) 2016-2017 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -22,7 +22,6 @@
 
 #ifndef HAVE_PROCESS_VM_READV
 
-# include <asm/unistd.h>
 # include "scno.h"
 static ssize_t
 strace_process_vm_readv(pid_t pid,
index 1a1b02c3a71f27c3fe69ed48c4256811ed330824..66c7f0e65fc63ac83496e29cea238317ef559b8d 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2019 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -24,6 +24,7 @@
 # endif
 
 # include <stdbool.h>
+# include <stdint.h>
 # include <sys/types.h>
 # include "kernel_types.h"
 # include "gcc_compat.h"
 #  define XLAT_VERBOSE 0
 # endif
 
+
+
+# if XLAT_RAW
+#  define XLAT_KNOWN(val_, str_) STRINGIFY_VAL(val_)
+#  define XLAT_UNKNOWN(val_, dflt_) STRINGIFY_VAL(val_)
+
+#  define XLAT_FMT "%#x"
+#  define XLAT_ARGS(a_) (a_)
+#  define XLAT_SEL(v_, s_) v_
+
+#  define ABBR(s_) ""
+#  define RAW(s_) s_
+#  define VERB(s_) ""
+#  define NABBR(s_) s_
+#  define NRAW(s_) ""
+#  define NVERB(s_) s_
+# elif XLAT_VERBOSE
+#  define XLAT_KNOWN(val_, str_) STRINGIFY_VAL(val_) " /* " str_ " */"
+#  define XLAT_UNKNOWN(val_, dflt_) STRINGIFY_VAL(val_) " /* " dflt_ " */"
+
+#  define XLAT_FMT "%#x /* %s */"
+#  define XLAT_ARGS(a_) a_, #a_
+#  define XLAT_SEL(v_, s_) v_, s_
+
+#  define ABBR(s_) ""
+#  define RAW(s_) ""
+#  define VERB(s_) s_
+#  define NABBR(s_) s_
+#  define NRAW(s_) s_
+#  define NVERB(s_) ""
+# else /* !XLAT_RAW && !XLAT_VERBOSE */
+#  define XLAT_KNOWN(val_, str_) str_
+#  define XLAT_UNKNOWN(val_, dflt_) STRINGIFY_VAL(val_) " /* " dflt_ " */"
+
+#  define XLAT_FMT "%s"
+#  define XLAT_ARGS(a_) #a_
+#  define XLAT_SEL(v_, s_) s_
+
+#  define ABBR(s_) s_
+#  define RAW(s_) ""
+#  define VERB(s_) ""
+#  define NABBR(s_) ""
+#  define NRAW(s_) s_
+#  define NVERB(s_) s_
+# endif /* XLAT_RAW, XLAT_VERBOSE */
+
+# define XLAT_STR(v_) sprintxlat(#v_, v_, NULL)
+
+# define ARG_XLAT_KNOWN(val_, str_) val_, XLAT_KNOWN(val_, str_)
+# define ARG_XLAT_UNKNOWN(val_, str_) val_, XLAT_UNKNOWN(val_, str_)
+
 # ifndef DEFAULT_STRLEN
 /* Default maximum # of bytes printed in printstr et al. */
 #  define DEFAULT_STRLEN 32
 # endif
 
+struct strval32 {
+       uint32_t val;
+       const char *str;
+};
+
+struct strval64 {
+       uint64_t val;
+       const char *str;
+};
+
 /* Cached sysconf(_SC_PAGESIZE). */
 size_t get_page_size(void);
 
@@ -86,6 +148,12 @@ void perror_msg_and_skip(const char *, ...)
 /* Stat the specified file and skip the test if the stat call failed. */
 void skip_if_unavailable(const char *);
 
+/*
+ * Obtain an exclusive lock on dirname(path_name)/lock_name file
+ * using open and flock.
+ */
+int lock_file_by_dirname(const char *path_name, const char *lock_name);
+
 /*
  * Allocate memory that ends on the page boundary.
  * Pages allocated by this call are preceded by an unmapped page
@@ -116,15 +184,26 @@ void *tail_memdup(const void *, const size_t)
 # define TAIL_ALLOC_OBJECT_VAR_PTR(type_name, type_ptr)                \
        type_name *type_ptr = tail_alloc(sizeof(*type_ptr))
 
-/*
+/**
  * Fill memory (pointed by ptr, having size bytes) with different bytes (with
  * values starting with start and resetting every period) in order to catch
  * sign, byte order and/or alignment errors.
  */
 void fill_memory_ex(void *ptr, size_t size, unsigned char start,
                    unsigned int period);
-/* Shortcut for fill_memory_ex(ptr, size, 0x80, 0x80) */
+/** Shortcut for fill_memory_ex(ptr, size, 0x80, 0x80) */
 void fill_memory(void *ptr, size_t size);
+/** Variant of fill_memory_ex for arrays of 16-bit (2-byte) values. */
+void fill_memory16_ex(void *ptr, size_t size, uint16_t start,
+                     unsigned int period);
+/** Shortcut for fill_memory16_ex(ptr, size, 0x80c0, 0x8000) */
+void fill_memory16(void *ptr, size_t size);
+/** Variant of fill_memory_ex for arrays of 32-bit (4-byte) values. */
+void fill_memory32_ex(void *ptr, size_t size, uint32_t start,
+                     unsigned int period);
+/** Shortcut for fill_memory32_ex(ptr, size, 0x80a0c0e0, 0x80000000) */
+void fill_memory32(void *ptr, size_t size);
+
 
 /* Close stdin, move stdout to a non-standard descriptor, and print. */
 void tprintf(const char *, ...)
@@ -202,12 +281,49 @@ struct xlat;
 int printflags(const struct xlat *, const unsigned long long, const char *);
 
 /* Print constant in symbolic form according to xlat table. */
-int printxval(const struct xlat *, const unsigned long long, const char *);
+int printxval_abbrev(const struct xlat *, const unsigned long long,
+                    const char *);
+int printxval_raw(const struct xlat *, const unsigned long long, const char *);
+int printxval_verbose(const struct xlat *, const unsigned long long,
+                     const char *);
+
+/* Print constant in symbolic form according to xlat table. */
+const char *sprintxlat_abbrev(const char *, const unsigned long long,
+                          const char *);
+const char *sprintxlat_raw(const char *, const unsigned long long,
+                          const char *);
+const char *sprintxlat_verbose(const char *, const unsigned long long,
+                              const char *);
+
+/* Print constant in symbolic form according to xlat table. */
+const char *sprintxval_abbrev(const struct xlat *, const unsigned long long,
+                             const char *);
+const char *sprintxval_raw(const struct xlat *, const unsigned long long,
+                          const char *);
+const char *sprintxval_verbose(const struct xlat *, const unsigned long long,
+                              const char *);
+
+# if XLAT_RAW
+#  define printxval  printxval_raw
+#  define sprintxlat sprintxlat_raw
+#  define sprintxval sprintxval_raw
+# elif XLAT_VERBOSE
+#  define printxval  printxval_verbose
+#  define sprintxlat sprintxlat_verbose
+#  define sprintxval sprintxval_verbose
+# else
+#  define printxval  printxval_abbrev
+#  define sprintxlat sprintxlat_abbrev
+#  define sprintxval sprintxval_abbrev
+# endif
 
 /* Invoke a socket syscall, either directly or via __NR_socketcall. */
 int socketcall(const int nr, const int call,
               long a1, long a2, long a3, long a4, long a5);
 
+/* Call chdir and print strace output depending on flags. */
+void test_status_chdir(const char *dir, bool print_success, bool print_fail);
+
 /* Wrappers for recvmmsg and sendmmsg syscalls. */
 struct mmsghdr;
 struct timespec;
@@ -218,6 +334,9 @@ int send_mmsg(int, struct mmsghdr *, unsigned int, unsigned int);
 int create_nl_socket_ext(int proto, const char *name);
 # define create_nl_socket(proto)       create_nl_socket_ext((proto), #proto)
 
+/* Create a temporary file in the current directory. */
+int create_tmpfile(unsigned int flags);
+
 /* Create a pipe with maximized descriptor numbers. */
 void pipe_maxfd(int pipefd[2]);
 
@@ -236,7 +355,7 @@ unsigned int ifindex_lo(void);
 /*
  * For 64-bit kernel_ulong_t and 32-bit pointer,
  * return a kernel_ulong_t value by filling higher bits.
- * For other architertures, return the original pointer.
+ * For other architectures, return the original pointer.
  */
 static inline kernel_ulong_t
 f8ill_ptr_to_kulong(const void *const ptr)
diff --git a/tests/tgkill--pidns-translation.c b/tests/tgkill--pidns-translation.c
new file mode 100644 (file)
index 0000000..c3ac2d0
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "tgkill.c"
diff --git a/tests/tgkill--pidns-translation.gen.test b/tests/tgkill--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..8f72925
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (tgkill--pidns-translation test_pidns -a15 --signal='!cont' -e trace=tgkill); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a15 --signal='!cont' -e trace=tgkill
diff --git a/tests/tgkill.c b/tests/tgkill.c
new file mode 100644 (file)
index 0000000..10816a6
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * Check decoding of tgkill syscall.
+ *
+ * Copyright (c) 2020 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+#include "pidns.h"
+
+#ifdef __NR_tgkill
+
+# include <signal.h>
+# include <stdio.h>
+# include <unistd.h>
+
+static const char *errstr;
+
+static long
+k_tgkill(const unsigned int tgid,
+        const unsigned int tid,
+        const unsigned int sig)
+{
+        const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+        const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+        const kernel_ulong_t arg1 = fill | tgid;
+        const kernel_ulong_t arg2 = fill | tid;
+        const kernel_ulong_t arg3 = fill | sig;
+        const long rc = syscall(__NR_tgkill, arg1, arg2, arg3, bad, bad, bad);
+        errstr = sprintrc(rc);
+        return rc;
+}
+
+int
+main(void)
+{
+       PIDNS_TEST_INIT;
+
+       const int pid = getpid();
+       const char *pid_str = pidns_pid2str(PT_TGID);
+       const int tid = syscall(__NR_gettid);
+       const char *tid_str = pidns_pid2str(PT_TID);
+       const int bad_pid = -1;
+       const int bad_sig = 0xface;
+
+       k_tgkill(pid, tid, 0);
+       pidns_print_leader();
+       printf("tgkill(%d%s, %d%s, 0) = %s\n",
+               pid, pid_str, tid, tid_str, errstr);
+
+       k_tgkill(pid, bad_pid, 0);
+       pidns_print_leader();
+       printf("tgkill(%d%s, %d, 0) = %s\n",
+               pid, pid_str, bad_pid, errstr);
+
+       k_tgkill(bad_pid, tid, 0);
+       pidns_print_leader();
+       printf("tgkill(%d, %d%s, 0) = %s\n",
+               bad_pid, tid, tid_str, errstr);
+
+       k_tgkill(pid, tid, SIGCONT);
+       pidns_print_leader();
+       printf("tgkill(%d%s, %d%s, SIGCONT) = %s\n",
+               pid, pid_str, tid, tid_str, errstr);
+
+       k_tgkill(pid, tid, bad_sig);
+       pidns_print_leader();
+       printf("tgkill(%d%s, %d%s, %d) = %s\n",
+               pid, pid_str, tid, tid_str, bad_sig, errstr);
+
+       k_tgkill(pid, tid, -bad_sig);
+       pidns_print_leader();
+       printf("tgkill(%d%s, %d%s, %d) = %s\n",
+               pid, pid_str, tid, tid_str, -bad_sig, errstr);
+
+       pidns_print_leader();
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_tgkill")
+
+#endif
diff --git a/tests/tgkill.gen.test b/tests/tgkill.gen.test
new file mode 100755 (executable)
index 0000000..6ad0e48
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (tgkill -a15 --signal='!cont'); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a15 --signal='!cont'
diff --git a/tests/threads-execve--quiet-thread-execve.c b/tests/threads-execve--quiet-thread-execve.c
new file mode 100644 (file)
index 0000000..9811b7b
--- /dev/null
@@ -0,0 +1,2 @@
+#define PRINT_SUPERSEDED 0
+#include "threads-execve.c"
diff --git a/tests/threads-execve--quiet-thread-execve.gen.test b/tests/threads-execve--quiet-thread-execve.gen.test
new file mode 100755 (executable)
index 0000000..24ed8ae
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (threads-execve--quiet-thread-execve +threads-execve.test -s40 --quiet=personality,thread-execve); do not edit.
+set -- -s40 --quiet=personality,thread-execve
+. "${srcdir=.}/threads-execve.test"
diff --git a/tests/threads-execve-q.c b/tests/threads-execve-q.c
new file mode 100644 (file)
index 0000000..a6627b7
--- /dev/null
@@ -0,0 +1 @@
+#include "threads-execve.c"
diff --git a/tests/threads-execve-q.gen.test b/tests/threads-execve-q.gen.test
new file mode 100755 (executable)
index 0000000..9865efe
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (threads-execve-q +threads-execve.test -q); do not edit.
+set -- -q
+. "${srcdir=.}/threads-execve.test"
diff --git a/tests/threads-execve-qq.c b/tests/threads-execve-qq.c
new file mode 100644 (file)
index 0000000..2dc806d
--- /dev/null
@@ -0,0 +1,2 @@
+#define PRINT_EXITED 0
+#include "threads-execve.c"
diff --git a/tests/threads-execve-qq.gen.test b/tests/threads-execve-qq.gen.test
new file mode 100755 (executable)
index 0000000..515ac44
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (threads-execve-qq +threads-execve.test -qq); do not edit.
+set -- -qq
+. "${srcdir=.}/threads-execve.test"
diff --git a/tests/threads-execve-qqq.c b/tests/threads-execve-qqq.c
new file mode 100644 (file)
index 0000000..c8e3291
--- /dev/null
@@ -0,0 +1,3 @@
+#define PRINT_SUPERSEDED 0
+#define PRINT_EXITED 0
+#include "threads-execve.c"
diff --git a/tests/threads-execve-qqq.gen.test b/tests/threads-execve-qqq.gen.test
new file mode 100755 (executable)
index 0000000..4a6641f
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (threads-execve-qqq +threads-execve.test -qqq); do not edit.
+set -- -qqq
+. "${srcdir=.}/threads-execve.test"
index 56fab5290dafe54dfdd50eab6f2e8f1ee9b7447a..3c13e29ac143ef81bd777ad0d552ccc47827239b 100644 (file)
@@ -2,21 +2,33 @@
  * Check decoding of threads when a non-leader thread invokes execve.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2019 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
-#include <errno.h>
-#include <pthread.h>
-#include <signal.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-#include <unistd.h>
+#include "scno.h"
+
+#ifdef __NR_nanosleep
+
+# include <errno.h>
+# include <pthread.h>
+# include <signal.h>
+# include <stdio.h>
+# include <stdlib.h>
+# include <time.h>
+# include <unistd.h>
+
+# include "kernel_old_timespec.h"
+
+# ifndef PRINT_EXITED
+#  define PRINT_EXITED 1
+# endif
+# ifndef PRINT_SUPERSEDED
+#  define PRINT_SUPERSEDED 1
+# endif
 
 static pid_t leader;
 static pid_t tid;
@@ -110,9 +122,9 @@ thread(void *arg)
        struct timespec ts = { .tv_nsec = 100000000 };
        (void) clock_nanosleep(CLOCK_REALTIME, 0, &ts, NULL);
 
-       ts.tv_nsec = 12345;
+       kernel_old_timespec_t ots = { .tv_nsec = 12345 };
        printf("%-5d nanosleep({tv_sec=0, tv_nsec=%u}, NULL) = 0\n",
-              tid, (unsigned int) ts.tv_nsec);
+              tid, (unsigned int) ots.tv_nsec);
 
        switch (action % NUMBER_OF_ACTIONS) {
                case ACTION_exit:
@@ -140,12 +152,12 @@ thread(void *arg)
                        break;
        }
 
-       printf("%-5d +++ superseded by execve in pid %u +++\n"
-              "%-5d <... execve resumed>) = 0\n",
-              leader, tid,
-              leader);
+# if PRINT_SUPERSEDED
+       printf("%-5d +++ superseded by execve in pid %u +++\n", leader, tid);
+# endif
+       printf("%-5d <... execve resumed>) = 0\n", leader);
 
-       (void) nanosleep(&ts, NULL);
+       (void) syscall(__NR_nanosleep, (unsigned long) &ots, 0UL);
        execve(argv[0], argv, environ);
        perror_msg_and_fail("execve");
 }
@@ -178,7 +190,9 @@ main(int ac, char **av)
        action = atoi(av[2]);
 
        if (action >= NUMBER_OF_ACTIONS * NUMBER_OF_ITERATIONS) {
+# if PRINT_EXITED
                printf("%-5d +++ exited with 0 +++\n", leader);
+# endif
                return 0;
        }
 
@@ -190,7 +204,7 @@ main(int ac, char **av)
        if (errno)
                perror_msg_and_fail("pthread_create");
 
-       struct timespec ts = { .tv_sec = 123 };
+       kernel_old_timespec_t ots = { .tv_sec = 123 };
        sigset_t mask;
        sigemptyset(&mask);
 
@@ -214,11 +228,18 @@ main(int ac, char **av)
                case ACTION_nanosleep:
                        printf("%s nanosleep({tv_sec=%u, tv_nsec=0}"
                               ",  <unfinished ...>\n",
-                              leader_str, (unsigned int) ts.tv_sec);
+                              leader_str, (unsigned int) ots.tv_sec);
                        close(fds[1]);
-                       (void) nanosleep(&ts, 0);
+                       (void) syscall(__NR_nanosleep,
+                                      (unsigned long) &ots, 0UL);
                        break;
        }
 
        return 1;
 }
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_nanosleep")
+
+#endif
index 04ce15df19a648ca7ac4f4c48a47ead0f52092d8..de6591038a477ad2903a4a3b37b2d3a9f5ca5560 100755 (executable)
@@ -3,7 +3,7 @@
 # Check decoding of threads when a non-leader thread invokes execve.
 #
 # Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2016-2019 The strace developers.
+# Copyright (c) 2016-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 # The kernel before commit v3.1-rc1~308^2~7 reported 0 instead of old pid.
 require_min_kernel_version_or_skip 3.1
 
+# This test requires some concurrency between threads.
+require_min_nproc 2
+
+opts="${*:-}"
+
 check_prog diff
 run_prog_skip_if_failed date +%s > /dev/null
 s0="$(date +%s)"
 
 run_prog > /dev/null
 
-set -- -a21 -f -esignal=none -e trace=execve,exit,nanosleep,rt_sigsuspend $args
+set -- -a21 -f -esignal=none -e trace=execve,exit,nanosleep,rt_sigsuspend $opts $args
 
 # Due to probabilistic nature of the test, try it several times.
 while :; do
index 330c884610351161f960c817026838b3ff6d0904..f41d7fdbb7411217ad30f22fd4c360658cba287f 100644 (file)
@@ -2,14 +2,14 @@
  * This file is part of time strace test.
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_time
 
index c9c64813a066197563ac92ebe179e041b5eb159b..2c4dae19bd25d72eadeb934ef4869e222c0e61a9 100644 (file)
@@ -2,13 +2,14 @@
  * This file is part of timer_create strace test.
  *
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_timer_create
 
index 17390c2d302a2e706a930dccf8d2a269bb9b9995..04d037b2fe242e9bbbe1ca9429c990d632e47bfb 100644 (file)
@@ -2,14 +2,14 @@
  * This file is part of timer_xettime strace test.
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_timer_create \
  && defined __NR_timer_gettime \
index 7361667747e28be21732b6a0c1d888bd4e069018..96d4c68248dfc7c2780e9b5630b4bff50da8a55a 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -8,7 +8,7 @@
 
 #include "tests.h"
 #include <fcntl.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_timerfd_create \
  && defined __NR_timerfd_gettime \
index 551803df7b95602ddf884e2f47fcacd66cb71891..940966d5fc01531444a6abf60aa8e4edc8106a43 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -9,7 +9,7 @@
 #include <assert.h>
 #include <stdio.h>
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 int
 main(void)
index a390dde47ce5dfb61d992f10a44e8b3d864b6b3c..06a0f25789f4364c389540d242d8dcf3ccba8823 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright (c) 2015 Eugene Syromyatnikov <evgsyr@gmail.com>
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 #include <time.h>
 #include <unistd.h>
 
-#include <asm/unistd.h>
+#include "scno.h"
 #include <sys/times.h>
 #include <sys/wait.h>
 
 enum {
-       NUM_USER_ITERS = 1000000,
+       NUM_USER_ITERS_SQRT = 1000,
+       NUM_USER_ITERS = NUM_USER_ITERS_SQRT * NUM_USER_ITERS_SQRT,
        PARENT_CPUTIME_LIMIT_NSEC = 200000000,
        CHILD_CPUTIME_LIMIT_NSEC = 300000000
 };
@@ -48,7 +49,7 @@ main(void)
                if (ts.tv_sec || ts.tv_nsec >= cputime_limit)
                        break;
 
-               if (i && !(ts.tv_sec || ts.tv_nsec))
+               if ((i > NUM_USER_ITERS_SQRT) && !(ts.tv_sec || ts.tv_nsec))
                        error_msg_and_skip("clock_gettime(CLOCK_PROCESS_CPUTIME_ID, {0, 0})");
 
                for (i = 0; i < NUM_USER_ITERS; ++i)
diff --git a/tests/tkill--pidns-translation.c b/tests/tkill--pidns-translation.c
new file mode 100644 (file)
index 0000000..70a64f5
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "tkill.c"
diff --git a/tests/tkill--pidns-translation.gen.test b/tests/tkill--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..14c2fb3
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (tkill--pidns-translation test_pidns --signal='!cont' -a12 -e trace=tkill); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns --signal='!cont' -a12 -e trace=tkill
diff --git a/tests/tkill.c b/tests/tkill.c
new file mode 100644 (file)
index 0000000..89466e1
--- /dev/null
@@ -0,0 +1,69 @@
+/*
+ * Check decoding of tkill syscall.
+ *
+ * Copyright (c) 2020 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+#include "pidns.h"
+
+#ifdef __NR_tkill
+
+# include <signal.h>
+# include <stdio.h>
+# include <unistd.h>
+
+static const char *errstr;
+
+static long
+k_tkill(const unsigned int tid, const unsigned int sig)
+{
+        const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+        const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+        const kernel_ulong_t arg1 = fill | tid;
+        const kernel_ulong_t arg2 = fill | sig;
+        const long rc = syscall(__NR_tkill, arg1, arg2, bad, bad, bad, bad);
+        errstr = sprintrc(rc);
+        return rc;
+}
+
+int
+main(void)
+{
+       PIDNS_TEST_INIT;
+
+       const int tid = syscall(__NR_gettid);
+       const char *tid_str = pidns_pid2str(PT_TID);
+       const int bad_pid = -1;
+       const int bad_sig = 0xface;
+
+       k_tkill(tid, 0);
+       pidns_print_leader();
+       printf("tkill(%d%s, 0) = %s\n", tid, tid_str, errstr);
+
+       k_tkill(tid, SIGCONT);
+       pidns_print_leader();
+       printf("tkill(%d%s, SIGCONT) = %s\n", tid, tid_str, errstr);
+
+       k_tkill(bad_pid, bad_sig);
+       pidns_print_leader();
+       printf("tkill(%d, %d) = %s\n", bad_pid, bad_sig, errstr);
+
+       k_tkill(bad_pid, -bad_sig);
+       pidns_print_leader();
+       printf("tkill(%d, %d) = %s\n", bad_pid, -bad_sig, errstr);
+
+       pidns_print_leader();
+       puts("+++ exited with 0 +++");
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_tkill")
+
+#endif
diff --git a/tests/tkill.gen.test b/tests/tkill.gen.test
new file mode 100755 (executable)
index 0000000..65e9d96
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (tkill -a12 --signal='!cont'); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a12 --signal='!cont'
diff --git a/tests/trace_clock.gen.test b/tests/trace_clock.gen.test
new file mode 100755 (executable)
index 0000000..e9eea78
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (trace_clock test_trace_expr 'clock_nanosleep|times' -e%clock); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr 'clock_nanosleep|times' -e%clock
diff --git a/tests/trace_clock.in b/tests/trace_clock.in
new file mode 100644 (file)
index 0000000..511ec8e
--- /dev/null
@@ -0,0 +1,5 @@
+adjtimex -a13
+clock_adjtime -a21
+clock_xettime -a21
+xettimeofday -a20
+time -a9
diff --git a/tests/trace_creds.gen.test b/tests/trace_creds.gen.test
new file mode 100755 (executable)
index 0000000..d8cd589
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (trace_creds test_trace_expr '([gs]et[^p]*([gu]id|groups)|caps|prctl|[fl]?chown|print(path-umovestr|strn-umoven)-undumpable|ptrace|quotactl|rt_sigtimedwait|rt_(tg)?sigqueueinfo).*' -e%creds); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr '([gs]et[^p]*([gu]id|groups)|caps|prctl|[fl]?chown|print(path-umovestr|strn-umoven)-undumpable|ptrace|quotactl|rt_sigtimedwait|rt_(tg)?sigqueueinfo).*' -e%creds
diff --git a/tests/trace_creds.in b/tests/trace_creds.in
new file mode 100644 (file)
index 0000000..ce78253
--- /dev/null
@@ -0,0 +1,8 @@
+getgroups      -a17
+getgroups32    -a19
+getresgid      -a25
+getresgid32    -a27
+getresuid      -a25
+getresuid32    -a27
+setgroups      -s2 -a17
+setgroups32    -s2 -a19
index 3fde131dd17d6c39495d7bf09a1c6b13373fecca..9d7b51bbd66f0f08506228c6a76f0ae2824aca55 100644 (file)
@@ -9,3 +9,4 @@ fstat64-Xverbose        -a17 -Xverbose
 fstatat64      -a32
 newfstatat     -a32
 oldfstat       -a21
+statx  -a32
index abbabc49c30a314130c86734a985ad613b217f8f..ca9f131891178a9ad2ba7c0253be8e4b3d6e5939 100644 (file)
@@ -1,3 +1,3 @@
-lstat  -a32
+lstat  -a31
 lstat64        -a32
 oldlstat       -a32
index f105d78485cd01393f4422846cbea91785c23a85..75633050698804516d9be7a63de96fa1d2cdb4e5 100644 (file)
@@ -1,3 +1,3 @@
 oldstat        -a32
-stat   -a32
+stat   -a30
 stat64 -a32
diff --git a/tests/tracer_ppid_pgid_sid.c b/tests/tracer_ppid_pgid_sid.c
new file mode 100644 (file)
index 0000000..69687fa
--- /dev/null
@@ -0,0 +1,92 @@
+/*
+ * Helper program for strace-DDD.test
+ *
+ * Copyright (c) 2019-2020 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include <ctype.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+static int
+fetch_tracer_pid(const char *str)
+{
+       for (; isspace(*str); ++str)
+               ;
+       return atoi(str);
+}
+
+static int
+get_tracer_pid(void)
+{
+       static const char status[] = "/proc/self/status";
+       FILE *fp = fopen(status, "r");
+       if (!fp)
+               perror_msg_and_fail("fopen: %s", status);
+
+       static const char prefix[] = "TracerPid:";
+       const size_t prefix_len = sizeof(prefix) - 1;
+       const char *str = NULL;
+       char *line = NULL;
+       size_t n = 0;
+
+       while (getline(&line, &n, fp) > 0) {
+               if (strncmp(line, prefix, prefix_len) == 0) {
+                       str = line + prefix_len;
+                       break;
+               }
+       }
+       if (!str && !line)
+               perror_msg_and_fail("getline");
+
+       int pid = str ? fetch_tracer_pid(str) : 0;
+       free(line);
+       fclose(fp);
+
+       return pid;
+}
+
+static void
+get_ppid_pgid_sid(int pid, int *ppid, int *pgid, int *sid)
+{
+       char *stat;
+       if (asprintf(&stat, "/proc/%d/stat", pid) < 0)
+               perror_msg_and_fail("asprintf");
+
+       FILE *fp = fopen(stat, "r");
+       if (!fp)
+               perror_msg_and_fail("fopen: %s", stat);
+       char buf[4096];
+       if (!fgets(buf, sizeof(buf), fp))
+               perror_msg_and_fail("fgets: %s", stat);
+
+       fclose(fp);
+
+       const char *p = strrchr(buf, ')');
+       if (!p)
+               error_msg_and_fail("%s: parenthesis not found", stat);
+       ++p;
+
+       if (sscanf(p, " %*c %d %d %d", ppid, pgid, sid) != 3)
+               error_msg_and_fail("%s: sscanf failed", stat);
+}
+
+int
+main(void)
+{
+       int tracer_pid = get_tracer_pid();
+       if (tracer_pid < 0)
+               error_msg_and_fail("tracer_pid = %d", tracer_pid);
+
+       int ppid = 0, pgid = 0, sid = 0;
+       get_ppid_pgid_sid(tracer_pid, &ppid, &pgid, &sid);
+       printf("%d %d %d %d\n", tracer_pid, ppid, pgid, sid);
+
+       return 0;
+}
diff --git a/tests/trie_for_tests.c b/tests/trie_for_tests.c
new file mode 100644 (file)
index 0000000..13e564c
--- /dev/null
@@ -0,0 +1 @@
+#include "trie.c"
diff --git a/tests/trie_test.c b/tests/trie_test.c
new file mode 100644 (file)
index 0000000..44a35ce
--- /dev/null
@@ -0,0 +1,121 @@
+/*
+ * Copyright (c) 2017-2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "trie.h"
+
+#include <stdio.h>
+#include <inttypes.h>
+
+static void
+assert_equals(const char *msg, uint64_t expected, uint64_t actual) {
+       if (actual != expected)
+               error_msg_and_fail("%s: expected: %" PRIu64
+                                  ", actual: %" PRIu64, msg, expected, actual);
+}
+
+static void
+iterate_fn(void *data, uint64_t key, uint64_t value)
+{
+       uint64_t expected = key < 256 && key % 10 == 0 ? key + 42 : -1ULL;
+       assert_equals("iterate_fn", expected, value);
+
+       int *count = (int *) data;
+       if (value != -1ULL)
+               (*count)++;
+}
+
+static void
+test_trie_iterate_fn(void)
+{
+       struct trie *t = trie_create(8, 6, 3, 3, -1);
+       for (int i = 0; i < 26; i++)
+               trie_set(t, i * 10, i * 10 + 42);
+
+       static const struct {
+               uint64_t start;
+               uint64_t end;
+               int expected_count;
+       } iterate_params[] = {
+               {0, 256, 26},
+               {0, UINT64_MAX, 26},
+               {20, 90, 8},
+               {99, 999, 16},
+               {10000, 100000, 0},
+               {200, 100, 0},
+       };
+
+       for (size_t i = 0; i < ARRAY_SIZE(iterate_params); i++) {
+               int count = 0;
+               trie_iterate_keys(t, iterate_params[i].start, iterate_params[i].end, iterate_fn, &count);
+               assert_equals("iteration count", iterate_params[i].expected_count, count);
+       }
+}
+
+struct key_value_pair {
+       uint64_t key, value;
+};
+
+static void
+test_trie_get(void)
+{
+       static const struct {
+               uint8_t key_size;
+               uint8_t item_size_lg;
+               uint8_t node_key_bits;
+               uint8_t data_block_key_bits;
+               uint64_t empty_value;
+
+               struct key_value_pair set_values[3], get_values[3];
+       } params[] = {
+               {64, 6, 10, 10, 0,
+                       {{300, 1}, {0xfacefeed, 0xabcdef123456}, {-1ULL, -1ULL}},
+                       {{301, 0}, {0xfacefeed, 0xabcdef123456}, {-1ULL, -1ULL}}},
+               {8, 2, 4, 4, 10,
+                       {{0xab, 0xcd}, {0xface, 2}, {0, 3}},
+                       {{0xab, 0xd}, {0xface, 10}, {0, 3}}},
+               {30, 0, 6, 3, -1,
+                       {{0xaaaa, 127}, {0xface, 0}, {0, 0}},
+                       {{0xaaaa, 1}, {0xface, 0}, {1, 1}}},
+               {16, 4, 5, 11, 0xffffff,
+                       {{0xabcdef, 42}, {0xabcd, 42}, {0xffff, 0}},
+                       {{0xabcdef, 0xffff}, {0xabcd, 42}, {0xffff, 0}}},
+               {41, 5, 1, 1, -1,
+                       {{0xabcdef01, 0x22222222}, {-1, 0x33333333}, {10, 10}},
+                       {{0xabcdef01, 0x22222222}, {-1, 0xffffffff}, {10, 10}}},
+       };
+
+       for (size_t i = 0; i < ARRAY_SIZE(params); i++) {
+               struct trie *t = trie_create(params[i].key_size,
+                                            params[i].item_size_lg,
+                                            params[i].node_key_bits,
+                                            params[i].data_block_key_bits,
+                                            params[i].empty_value);
+
+               if (!t)
+                       error_msg_and_fail("trie creation failed");
+
+               for (size_t j = 0; j < ARRAY_SIZE(params[i].set_values); j++) {
+                       struct key_value_pair kv = params[i].set_values[j];
+                       trie_set(t, kv.key, kv.value);
+               }
+               for (size_t j = 0; j < ARRAY_SIZE(params[i].get_values); j++) {
+                       struct key_value_pair kv = params[i].get_values[j];
+                       assert_equals("trie_get", kv.value, trie_get(t, kv.key));
+               }
+
+               trie_free(t);
+       }
+}
+
+int
+main(void)
+{
+       test_trie_get();
+       test_trie_iterate_fn();
+       return 0;
+}
diff --git a/tests/trie_test.gen.test b/tests/trie_test.gen.test
new file mode 100755 (executable)
index 0000000..c097ae5
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (trie_test run_prog ); do not edit.
+. "${srcdir=.}/init.sh"
+run_prog 
index bfb6299b61a739d56405cf339e4cd14bd81eecc6..5204ec040f2d4d86d730a95d712b62dcaf2645c4 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_truncate
 
index 1dceb41445c6cc74a702c273692c8caca2ee10a8..6b071715b9c66245193db00e0c5f86799a06ec2b 100644 (file)
@@ -1,12 +1,13 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_truncate64
 
index 49627c1f92120f074407976f140015f6dd5dc535..951ab9749ec3b1ae428eb0f3b21e3c87522bb8fc 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_ugetrlimit
 
index cd89aa0bfc3c6ae4762057f72d8940a38b656ad7..74450bc13bbc80df7d99e2bf92322d6331df86c4 100644 (file)
@@ -9,7 +9,7 @@
 #include <stdio.h>
 #include <sys/stat.h>
 #include <sys/mount.h>
-#include <asm/unistd.h>
+#include "scno.h"
 #include <unistd.h>
 
 #ifdef __NR_oldumount
index d313d5978a9b6b4d09658ce7a532765a2bc1585f..cf1fc129fbbfb21bff026ab7aac20dcad8ece6ef 100644 (file)
 #include <unistd.h>
 #include <sys/stat.h>
 #include <sys/mount.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_umount2 && (!defined __NR_umount || __NR_umount2 != __NR_umount)
+# define TEST_SYSCALL_NR __NR_umount2
 # define TEST_SYSCALL_STR "umount2"
 #else
-# define __NR_umount2 __NR_umount
+# define TEST_SYSCALL_NR __NR_umount
 # define TEST_SYSCALL_STR "umount"
 #endif
 
@@ -25,9 +26,9 @@ main(void)
        static const char sample[] = "umount2.sample";
        if (mkdir(sample, 0700))
                perror_msg_and_fail("mkdir: %s", sample);
-       (void) syscall(__NR_umount2, sample, 31);
+       long ret = syscall(TEST_SYSCALL_NR, sample, 31);
        printf("%s(\"%s\", MNT_FORCE|MNT_DETACH|MNT_EXPIRE|UMOUNT_NOFOLLOW|0x10)"
-              " = -1 EINVAL (%m)\n", TEST_SYSCALL_STR, sample);
+              " = %s\n", TEST_SYSCALL_STR, sample, sprintrc(ret));
        if (rmdir(sample))
                perror_msg_and_fail("rmdir: %s", sample);
        puts("+++ exited with 0 +++");
index 25839f77a39e39a32661e86bbf557122bf28d8cf..6a86fdcf3f4713b0a25fc3650323de3394442650 100644 (file)
@@ -2,36 +2,56 @@
  * Check decoding of invalid pointer by umoven.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <stdio.h>
-#include <time.h>
-#include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
+
+#ifdef __NR_nanosleep
+
+# include <stdio.h>
+# include <unistd.h>
+
+# include "kernel_old_timespec.h"
+
+static const char *errstr;
+
+static long
+k_nanosleep(const kernel_ulong_t arg1, const kernel_ulong_t arg2)
+{
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const long rc = syscall(__NR_nanosleep, arg1, arg2, bad, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
 
 int
 main(void)
 {
-       if (F8ILL_KULONG_SUPPORTED) {
-               struct timespec ts = { 0, 0 };
-               const void *const p = tail_memdup(&ts, sizeof(ts));
-
-               long rc = syscall(__NR_nanosleep, p, NULL);
-               printf("nanosleep({tv_sec=0, tv_nsec=0}, NULL) = %s\n",
-                      sprintrc(rc));
-
-               const kernel_ulong_t ill = f8ill_ptr_to_kulong(p);
-               rc = syscall(__NR_nanosleep, ill, NULL);
-               printf("nanosleep(%#llx, NULL) = %s\n",
-                      (unsigned long long) ill, sprintrc(rc));
-
-               puts("+++ exited with 0 +++");
-               return 0;
-       } else {
+       if (!F8ILL_KULONG_SUPPORTED)
                return 77;
-       }
+
+       kernel_old_timespec_t ts = { 0, 0 };
+       const void *const p = tail_memdup(&ts, sizeof(ts));
+
+       k_nanosleep((unsigned long) p, 0);
+       printf("nanosleep({tv_sec=0, tv_nsec=0}, NULL) = %s\n", errstr);
+
+       const kernel_ulong_t ill = f8ill_ptr_to_kulong(p);
+       k_nanosleep(ill, 0);
+       printf("nanosleep(%#llx, NULL) = %s\n",
+              (unsigned long long) ill, errstr);
+
+       puts("+++ exited with 0 +++");
+       return 0;
 }
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_nanosleep")
+
+#endif
index 5a24357ac551c8717974bc8716bb5151a917cd99..6cfcfb865e96f5cdf583e5beabf613a9db781f04 100644 (file)
@@ -2,6 +2,7 @@
  * Check decoding of invalid pointer by umovestr.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +11,7 @@
 #include "tests.h"
 #include <stdio.h>
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 int
 main(void)
diff --git a/tests/umovestr_cached.c b/tests/umovestr_cached.c
new file mode 100644 (file)
index 0000000..3d7bed3
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * Check effectiveness of umovestr memory caching.
+ *
+ * Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/uio.h>
+
+int
+main(void)
+{
+       char *const buf = tail_alloc(DEFAULT_STRLEN);
+       fill_memory_ex(buf, DEFAULT_STRLEN, 'a', 'z' - 'a' + 1);
+
+       struct iovec *const io = tail_alloc(sizeof(*io) * DEFAULT_STRLEN);
+       for (unsigned int i = 0; i < DEFAULT_STRLEN; ++i) {
+               io[i].iov_base = buf + DEFAULT_STRLEN - i;
+               io[i].iov_len = i;
+       }
+
+       tprintf("%s", "");
+
+       int rc = writev(-1, io, DEFAULT_STRLEN);
+       const char *errstr = sprintrc(rc);
+
+       tprintf("writev(-1, [");
+       for (unsigned int i = 0; i < DEFAULT_STRLEN; ++i) {
+               if (i)
+                       tprintf(", ");
+               tprintf("{iov_base=\"%.*s\", iov_len=%u}",
+                       (int) io[i].iov_len,
+                       (char *) io[i].iov_base,
+                       (unsigned int) io[i].iov_len);
+       }
+       tprintf("], %u) = %s\n", DEFAULT_STRLEN, errstr);
+
+       tprintf("+++ exited with 0 +++\n");
+       return 0;
+}
diff --git a/tests/umovestr_cached.test b/tests/umovestr_cached.test
new file mode 100755 (executable)
index 0000000..4b9c832
--- /dev/null
@@ -0,0 +1,41 @@
+#!/bin/sh
+#
+# Check effectiveness of umovestr memory caching.
+#
+# Copyright (c) 2017-2020 Dmitry V. Levin <ldv@altlinux.org>
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/init.sh"
+
+expected_count="${1:-2}"
+
+check_prog grep
+$STRACE -d -enone / > /dev/null 2> "$LOG" ||:
+grep -x "[^:]*strace: PTRACE_GET_SYSCALL_INFO works" "$LOG" > /dev/null || {
+       # PTRACE_GET_SYSCALL_INFO does not work
+       case "$STRACE_ARCH:$MIPS_ABI" in
+               ia64:|mips:o32)
+               # ia64 invokes extra process_vm_readv syscalls to obtain syscall
+               # arguments, see linux/ia64/get_syscall_args.c for details.
+               # mips o32 obtains the first four syscalls arguments from registers
+               # and invokes extra process_vm_readv syscalls to obtain remaining
+               # syscall arguments, see linux/mips/get_syscall_args.c for details.
+               skip_ "the test is not supported on $STRACE_ARCH yet"
+               ;;
+       esac
+}
+
+run_strace_match_diff -e trace=writev
+
+run_strace -qq -esignal=none -eprocess_vm_readv -z \
+       -o '|grep -c ^process_vm_readv > count' \
+       -- "$STRACE_EXE" -o "$LOG" $args > /dev/null
+
+count="$(cat count)"
+case "$count" in
+       0) skip_ "$STRACE $args made no process_vm_readv syscall invocations" ;;
+       $expected_count) ;;
+       *) fail_ "$STRACE $args made $count != $expected_count process_vm_readv syscall invocations" ;;
+esac
diff --git a/tests/umovestr_cached_adjacent.c b/tests/umovestr_cached_adjacent.c
new file mode 100644 (file)
index 0000000..53a573b
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * Check effectiveness of umovestr memory caching.
+ *
+ * Copyright (c) 2019-2020 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/uio.h>
+
+int
+main(void)
+{
+       const size_t size = get_page_size() + (DEFAULT_STRLEN - 1);
+       char *const buf = tail_alloc(size);
+       fill_memory_ex(buf, DEFAULT_STRLEN * 2, 'a', 'z' - 'a' + 1);
+
+       struct iovec *const io = tail_alloc(sizeof(*io) * DEFAULT_STRLEN);
+       for (unsigned int i = 0; i < DEFAULT_STRLEN; ++i) {
+               io[i].iov_base = buf + i;
+               io[i].iov_len = DEFAULT_STRLEN;
+       }
+
+       tprintf("%s", "");
+
+       int rc = writev(-1, io, DEFAULT_STRLEN);
+       const char *errstr = sprintrc(rc);
+
+       tprintf("writev(-1, [");
+       for (unsigned int i = 0; i < DEFAULT_STRLEN; ++i) {
+               if (i)
+                       tprintf(", ");
+               tprintf("{iov_base=\"%.*s\", iov_len=%u}",
+                       (int) io[i].iov_len,
+                       (char *) io[i].iov_base,
+                       (unsigned int) io[i].iov_len);
+       }
+       tprintf("], %u) = %s\n", DEFAULT_STRLEN, errstr);
+
+       tprintf("+++ exited with 0 +++\n");
+       return 0;
+}
diff --git a/tests/umovestr_cached_adjacent.gen.test b/tests/umovestr_cached_adjacent.gen.test
new file mode 100755 (executable)
index 0000000..24b3fd7
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (umovestr_cached_adjacent +umovestr_cached.test 3); do not edit.
+set -- 3
+. "${srcdir=.}/umovestr_cached.test"
index 386fd99bdfa9dd9eebea84eecdf1f5bee07c337f..3180cffd2d0cfcb964b1195a6588945aa89ec038 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_uname
 
index 73ddd1e0f298f15514891ed47125d6beb6b73dbd..1439e1ff8438baf82c3ce191bea4e63ace9c67a8 100644 (file)
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -12,7 +13,7 @@
 #include <string.h>
 #include <unistd.h>
 #include <sys/socket.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifndef __NR_send
 # define __NR_send -1
index 9c33b624e6c831949610c9d92adffe1ee63ebc1c..af9b3a062bd62e32ff1f5b43d553ef75f731f364 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_unlink
 
index 0ae6796461c08570a8ba1c1a5386217ec1ee2103..6fcf133260b0f1f558e0adc5a5dc6d5bd23a9bb8 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_unlinkat
 
@@ -27,7 +27,7 @@ main(void)
        printf("unlinkat(%s, \"%s\", %s) = %ld %s (%m)\n",
               "AT_FDCWD", sample,
               "AT_SYMLINK_NOFOLLOW|AT_REMOVEDIR|AT_SYMLINK_FOLLOW"
-              "|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|0xffffe0ff",
+              "|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|AT_RECURSIVE|0xffff60ff",
               rc, errno2name());
 
        puts("+++ exited with 0 +++");
index a49f9ef9ccc453464d1299fa520836e3741d2efc..45e914e05bb4229ea5f5c7917b413da34603f54a 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of unshare syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_unshare
 
@@ -28,12 +28,12 @@ main(void)
                const char *str;
        } unshare_flags[] = {
                { ARG_STR(0) },
-               { 0xdeadca75,
-                       "CLONE_THREAD|CLONE_FS|CLONE_SIGHAND|CLONE_SYSVSEM|"
-                       "CLONE_NEWUTS|CLONE_NEWIPC|CLONE_NEWNET|CLONE_NEWUSER|"
-                       "CLONE_NEWCGROUP|0x80a8c075" },
+               { 0xdeadcaf5,
+                       "CLONE_NEWTIME|CLONE_FS|CLONE_SIGHAND|CLONE_THREAD"
+                       "|CLONE_SYSVSEM|CLONE_NEWCGROUP|CLONE_NEWUTS"
+                       "|CLONE_NEWIPC|CLONE_NEWUSER|CLONE_NEWNET|0x80a8c075" },
                { 0x2000000, "CLONE_NEWCGROUP" },
-               { ARG_STR(0x81f8f0ff) " /* CLONE_??? */" },
+               { ARG_STR(0x81f8f07f) " /* CLONE_??? */" },
        };
 
        long rc;
index 9e59c0fe0787a9a60b553181f28658f925eba435..fa722577a2d1fd939f994b67bf2e22ab3aaf9627 100644 (file)
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -7,7 +8,6 @@
 
 #include "tests.h"
 #include <fcntl.h>
-#include <asm/unistd.h>
 #include "scno.h"
 
 #if defined __NR_userfaultfd && defined O_CLOEXEC
index 0945a70d0f7dc2cfa6ba6ff55764e5f369af7e5c..7464b98a89d172dd738042c172c14b87ee8126b3 100644 (file)
@@ -1,13 +1,13 @@
 /*
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_ustat
 
index 151b31a99303d9037f058c4fc95592e594f27140..b548c8f815612abb47ad3a52d237fc0b8cad98e2 100644 (file)
@@ -2,14 +2,14 @@
  * Check decoding of utime syscall.
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_utime
 
index 170b2c89388ee79ce9b99beb16294a48b10bf205..4aa83c81cc05d446aa2b11667df1cbac74b1924b 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of utimensat syscall.
  *
  * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -15,7 +15,7 @@
 #include <sys/stat.h>
 #include <sys/time.h>
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_utimensat && defined UTIME_NOW && defined UTIME_OMIT
 
@@ -44,7 +44,7 @@
        "0x600 /* AT_REMOVEDIR|AT_SYMLINK_FOLLOW */"
 #  define str_flags2 \
        "0xffffffff /* AT_SYMLINK_NOFOLLOW|AT_REMOVEDIR|AT_SYMLINK_FOLLOW" \
-       "|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|0xffffe0ff */"
+       "|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|AT_RECURSIVE|0xffff60ff */"
 #  define str_utime_now_omit \
        "[{tv_sec=" big_tv_sec ", tv_nsec=1073741823} /* UTIME_NOW */, " \
        "{tv_sec=" huge_tv_sec ", tv_nsec=1073741822} /* UTIME_OMIT */]"
@@ -55,7 +55,7 @@
 #  define str_flags1                   "AT_REMOVEDIR|AT_SYMLINK_FOLLOW"
 #  define str_flags2 \
        "AT_SYMLINK_NOFOLLOW|AT_REMOVEDIR|AT_SYMLINK_FOLLOW" \
-       "|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|0xffffe0ff"
+       "|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|AT_RECURSIVE|0xffff60ff"
 #  define str_utime_now_omit           "[UTIME_NOW, UTIME_OMIT]"
 # endif
 
index 1aee6db39317b7be3edb5b9ba07b86e7ec51dd52..d78969fe451f80660655cdced5eb31973404db56 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of utimes syscall.
  *
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_utimes
 
index 1a786cc3076426c44a271e739c18ca241eb34640..46359016fc3273380e9212b5f229bca6b70da524 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_vhangup
 
index b986dafa9e85979832740a7ad3da151ef310e140..ac949ae8e3b2b6e5d671f9e8515b09a569ef5bac 100644 (file)
@@ -2,14 +2,14 @@
  * This file is part of vmsplice strace test.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_vmsplice
 
index 29b0caddd40ff6a3acfad2073d1e3fd5caf25816..048e6225e6516862b8a7a616491438a60a4b7311 100644 (file)
@@ -2,77 +2,98 @@
  * Check decoding of wait4 syscall.
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <assert.h>
-#include <signal.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <sys/wait.h>
-#include <sys/resource.h>
+#include "scno.h"
+
+#ifdef __NR_wait4
+
+# include <assert.h>
+# include <signal.h>
+# include <stdio.h>
+# include <unistd.h>
+# include <sys/wait.h>
+# include "kernel_rusage.h"
 
 static const char *
-sprint_rusage(const struct rusage *const ru)
+sprint_rusage(const kernel_rusage_t *const ru)
 {
        static char buf[1024];
        snprintf(buf, sizeof(buf),
-                "{ru_utime={tv_sec=%lld, tv_usec=%llu}"
-                ", ru_stime={tv_sec=%lld, tv_usec=%llu}"
-#if VERBOSE
-                ", ru_maxrss=%lu"
-                ", ru_ixrss=%lu"
-                ", ru_idrss=%lu"
-                ", ru_isrss=%lu"
-                ", ru_minflt=%lu"
-                ", ru_majflt=%lu"
-                ", ru_nswap=%lu"
-                ", ru_inblock=%lu"
-                ", ru_oublock=%lu"
-                ", ru_msgsnd=%lu"
-                ", ru_msgrcv=%lu"
-                ", ru_nsignals=%lu"
-                ", ru_nvcsw=%lu"
-                ", ru_nivcsw=%lu}"
-#else
+                "{ru_utime={tv_sec=%llu, tv_usec=%llu}"
+                ", ru_stime={tv_sec=%llu, tv_usec=%llu}"
+# if VERBOSE
+                ", ru_maxrss=%llu"
+                ", ru_ixrss=%llu"
+                ", ru_idrss=%llu"
+                ", ru_isrss=%llu"
+                ", ru_minflt=%llu"
+                ", ru_majflt=%llu"
+                ", ru_nswap=%llu"
+                ", ru_inblock=%llu"
+                ", ru_oublock=%llu"
+                ", ru_msgsnd=%llu"
+                ", ru_msgrcv=%llu"
+                ", ru_nsignals=%llu"
+                ", ru_nvcsw=%llu"
+                ", ru_nivcsw=%llu}"
+# else
                 ", ...}"
-#endif
-                , (long long) ru->ru_utime.tv_sec
+# endif
+                , zero_extend_signed_to_ull(ru->ru_utime.tv_sec)
                 , zero_extend_signed_to_ull(ru->ru_utime.tv_usec)
-                , (long long) ru->ru_stime.tv_sec
+                , zero_extend_signed_to_ull(ru->ru_stime.tv_sec)
                 , zero_extend_signed_to_ull(ru->ru_stime.tv_usec)
-#if VERBOSE
-                , (long) ru->ru_maxrss
-                , (long) ru->ru_ixrss
-                , (long) ru->ru_idrss
-                , (long) ru->ru_isrss
-                , (long) ru->ru_minflt
-                , (long) ru->ru_majflt
-                , (long) ru->ru_nswap
-                , (long) ru->ru_inblock
-                , (long) ru->ru_oublock
-                , (long) ru->ru_msgsnd
-                , (long) ru->ru_msgrcv
-                , (long) ru->ru_nsignals
-                , (long) ru->ru_nvcsw
-                , (long) ru->ru_nivcsw
-#endif
+# if VERBOSE
+                , zero_extend_signed_to_ull(ru->ru_maxrss)
+                , zero_extend_signed_to_ull(ru->ru_ixrss)
+                , zero_extend_signed_to_ull(ru->ru_idrss)
+                , zero_extend_signed_to_ull(ru->ru_isrss)
+                , zero_extend_signed_to_ull(ru->ru_minflt)
+                , zero_extend_signed_to_ull(ru->ru_majflt)
+                , zero_extend_signed_to_ull(ru->ru_nswap)
+                , zero_extend_signed_to_ull(ru->ru_inblock)
+                , zero_extend_signed_to_ull(ru->ru_oublock)
+                , zero_extend_signed_to_ull(ru->ru_msgsnd)
+                , zero_extend_signed_to_ull(ru->ru_msgrcv)
+                , zero_extend_signed_to_ull(ru->ru_nsignals)
+                , zero_extend_signed_to_ull(ru->ru_nvcsw)
+                , zero_extend_signed_to_ull(ru->ru_nivcsw)
+# endif
                 );
        return buf;
 }
 
+static const char *errstr;
+
+static long
+k_wait4(const unsigned int pid, void const *wstatus,
+       const unsigned int options, void const *ru)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = fill | pid;
+       const kernel_ulong_t arg2 = (uintptr_t) wstatus;
+       const kernel_ulong_t arg3 = fill | options;
+       const kernel_ulong_t arg4 = (uintptr_t) ru;
+       const long rc = syscall(__NR_wait4, arg1, arg2, arg3, arg4, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
 static pid_t
-do_wait4(pid_t pid, int *wstatus, int options, struct rusage *ru)
+do_wait4(pid_t pid, int *wstatus, int options, kernel_rusage_t *ru)
 {
        sigset_t mask = {};
        sigaddset(&mask, SIGCHLD);
 
        assert(sigprocmask(SIG_BLOCK, &mask, NULL) == 0);
-       pid_t rc = wait4(pid, wstatus, options, ru);
+       pid_t rc = k_wait4(pid, wstatus, options, ru);
        assert(sigprocmask(SIG_UNBLOCK, &mask, NULL) == 0);
        return rc;
 }
@@ -101,12 +122,12 @@ main(void)
        (void) close(0);
 
        TAIL_ALLOC_OBJECT_CONST_PTR(int, s);
-       if (wait4(pid, s, WNOHANG|__WALL, NULL))
+       if (k_wait4(pid, s, WNOHANG|__WALL, NULL))
                perror_msg_and_fail("wait4 #1");
        tprintf("wait4(%d, %p, WNOHANG|__WALL, NULL) = 0\n", pid, s);
 
-       TAIL_ALLOC_OBJECT_CONST_PTR(struct rusage, rusage);
-       if (wait4(pid, s, WNOHANG|__WALL, rusage))
+       TAIL_ALLOC_OBJECT_CONST_PTR(kernel_rusage_t, rusage);
+       if (k_wait4(pid, s, WNOHANG|__WALL, rusage))
                perror_msg_and_fail("wait4 #2");
        tprintf("wait4(%d, %p, WNOHANG|__WALL, %p) = 0\n", pid, s, rusage);
 
@@ -156,12 +177,12 @@ main(void)
        if (kill(pid, SIGCONT))
                perror_msg_and_fail("kill(SIGCONT)");
 
-#if defined WCONTINUED && defined WIFCONTINUED
+# if defined WCONTINUED && defined WIFCONTINUED
        assert(do_wait4(pid, s, WCONTINUED, rusage) == pid);
        assert(WIFCONTINUED(*s));
        tprintf("wait4(%d, [{WIFCONTINUED(s)}], WCONTINUED"
                ", %s) = %d\n", pid, sprint_rusage(rusage), pid);
-#endif /* WCONTINUED && WIFCONTINUED */
+# endif /* WCONTINUED && WIFCONTINUED */
 
        assert(write(1, "", 1) == 1);
        (void) close(1);
@@ -171,10 +192,16 @@ main(void)
        tprintf("wait4(%d, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0"
                ", %s) = %d\n", pid, sprint_rusage(rusage), pid);
 
-       assert(wait4(-1, s, WNOHANG|WSTOPPED|__WALL, rusage) == -1);
-       tprintf("wait4(-1, %p, WNOHANG|WSTOPPED|__WALL, %p) = -1 %s (%m)\n",
-               s, rusage, errno2name());
+       assert(k_wait4(-1, s, WNOHANG|WSTOPPED|__WALL, rusage) == -1);
+       tprintf("wait4(-1, %p, WNOHANG|WSTOPPED|__WALL, %p) = %s\n",
+               s, rusage, errstr);
 
        tprintf("%s\n", "+++ exited with 0 +++");
        return 0;
 }
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_wait4")
+
+#endif /* __NR_wait4 */
index f4e4a0a8f08e6b6569729149bb5b86880be5282e..8716fa088a0b5e31de5966a5852555a0116dadef 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of waitid syscall.
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 #include <string.h>
 #include <unistd.h>
 #include <sys/wait.h>
-#include <sys/resource.h>
-#include <asm/unistd.h>
+#include "kernel_rusage.h"
+#include "scno.h"
 
 static const char *
-sprint_rusage(const struct rusage *const ru)
+sprint_rusage(const kernel_rusage_t *const ru)
 {
        static char buf[1024];
        snprintf(buf, sizeof(buf),
@@ -103,8 +103,8 @@ sprint_siginfo(const siginfo_t *const si, const char *const status_text)
        snprintf(buf, sizeof(buf),
                 "{si_signo=SIGCHLD"
                 ", si_code=%s"
-                ", si_pid=%u"
-                ", si_uid=%u"
+                ", si_pid=%d"
+                ", si_uid=%d"
                 ", si_status=%s"
                 ", si_utime=%llu"
                 ", si_stime=%llu}",
@@ -128,7 +128,7 @@ do_waitid(const unsigned int idtype,
          const unsigned int id,
          const siginfo_t *const infop,
          const unsigned int options,
-         const struct rusage *const rusage)
+         const kernel_rusage_t *const rusage)
 {
        sigset_t mask = {};
        sigaddset(&mask, SIGCHLD);
@@ -169,7 +169,7 @@ main(void)
 
        TAIL_ALLOC_OBJECT_CONST_PTR(siginfo_t, sinfo);
        memset(sinfo, 0, sizeof(*sinfo));
-       TAIL_ALLOC_OBJECT_CONST_PTR(struct rusage, rusage);
+       TAIL_ALLOC_OBJECT_CONST_PTR(kernel_rusage_t, rusage);
        if (do_waitid(P_PID, pid, sinfo, WNOHANG|WEXITED|WSTOPPED, rusage))
                perror_msg_and_fail("waitid #2");
        tprintf("waitid(P_PID, %d, {}, WNOHANG|WEXITED|WSTOPPED, %s) = 0\n",
index 7069bec89676b882e3ffa6b71b2748d4c01bbe3f..14f794024e2f3de5375b37162310fc70afc9b0da 100644 (file)
@@ -2,13 +2,14 @@
  * Check decoding of waitpid syscall.
  *
  * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
 
 #ifdef __NR_waitpid
 
diff --git a/tests/xet_robust_list--pidns-translation.c b/tests/xet_robust_list--pidns-translation.c
new file mode 100644 (file)
index 0000000..e047726
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "xet_robust_list.c"
diff --git a/tests/xet_robust_list--pidns-translation.gen.test b/tests/xet_robust_list--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..e660e10
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (xet_robust_list--pidns-translation test_pidns -a24 -e trace=get_robust_list,set_robust_list); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a24 -e trace=get_robust_list,set_robust_list
index cf4f22347ab8c009bd8ac8879ee6354b19f64100..04376bfb8d10fa2653a349d80f1548f8efbe7b3d 100644 (file)
@@ -1,13 +1,14 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
+#include "pidns.h"
 
 #if defined __NR_get_robust_list && defined __NR_set_robust_list
 
@@ -30,27 +31,36 @@ sprintaddr(void *addr)
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        const pid_t pid = getpid();
+       const char *pid_str = pidns_pid2str(PT_TGID);
        const long long_pid = (unsigned long) (0xdeadbeef00000000LL | pid);
        TAIL_ALLOC_OBJECT_CONST_PTR(void *, p_head);
        TAIL_ALLOC_OBJECT_CONST_PTR(size_t, p_len);
 
        if (syscall(__NR_get_robust_list, long_pid, p_head, p_len))
                perror_msg_and_skip("get_robust_list");
-       printf("get_robust_list(%d, [%s], [%lu]) = 0\n",
-              (int) pid, sprintaddr(*p_head), (unsigned long) *p_len);
+       pidns_print_leader();
+       printf("get_robust_list(%d%s, [%s], [%lu]) = 0\n",
+              pid, pid_str, sprintaddr(*p_head),
+              (unsigned long) *p_len);
 
        void *head = tail_alloc(*p_len);
        if (syscall(__NR_set_robust_list, head, *p_len))
                perror_msg_and_skip("set_robust_list");
+       pidns_print_leader();
        printf("set_robust_list(%p, %lu) = 0\n",
               head, (unsigned long) *p_len);
 
        if (syscall(__NR_get_robust_list, long_pid, p_head, p_len))
                perror_msg_and_skip("get_robust_list");
-       printf("get_robust_list(%d, [%s], [%lu]) = 0\n",
-              (int) pid, sprintaddr(*p_head), (unsigned long) *p_len);
+       pidns_print_leader();
+       printf("get_robust_list(%d%s, [%s], [%lu]) = 0\n",
+              pid, pid_str, sprintaddr(*p_head),
+              (unsigned long) *p_len);
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
index a1efd3192fa6be1c05a7eb0ce8d0fd0e5048e724..bdc07883d71612c079814c86333901ee8d9ddc05 100644 (file)
@@ -2,7 +2,7 @@
  * Check decoding of set_thread_area and get_thread_area syscalls on x86
  * architecture.
  *
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +10,7 @@
 
 #include "tests.h"
 
-#include <asm/unistd.h>
+#include "scno.h"
 
 #if defined __NR_get_thread_area && defined __NR_set_thread_area \
  && defined HAVE_STRUCT_USER_DESC
index 8d758974effbbff978055e4001026cd0ee408989..f3455e88697f2fb4b4f810eac88a7d4398b51f77 100644 (file)
@@ -2,6 +2,7 @@
  * Check decoding of setitimer and getitimer syscalls.
  *
  * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
 #include <stdint.h>
 #include <sys/time.h>
 #include <unistd.h>
-#include <asm/unistd.h>
+#include "scno.h"
+#include "kernel_timeval.h"
+
+typedef struct {
+       kernel_old_timeval_t it_interval;
+       kernel_old_timeval_t it_value;
+} kernel_old_itimerval_t;
 
 int
 main(void)
 {
-       static const struct itimerval new = {
+       static const kernel_old_itimerval_t new = {
                .it_interval = { 0xc0de1, 0xc0de2 },
                .it_value = { 0xc0de3, 0xc0de4 }
        };
@@ -26,12 +33,12 @@ main(void)
        static const kernel_ulong_t bogus_timer =
                (kernel_ulong_t) 0xfacefeeddeadbeefULL;
 
-       TAIL_ALLOC_OBJECT_CONST_PTR(struct itimerval, p_old);
-       struct itimerval *const p_new = tail_memdup(&new, sizeof(new));
+       TAIL_ALLOC_OBJECT_CONST_PTR(kernel_old_itimerval_t, p_old);
+       kernel_old_itimerval_t *const p_new = tail_memdup(&new, sizeof(new));
        void *const efault = tail_alloc(sizeof(new) - 8);
        long rc;
 
-       if (setitimer(ITIMER_REAL, p_new, NULL))
+       if (syscall(__NR_setitimer, ITIMER_REAL, p_new, NULL))
                perror_msg_and_skip("setitimer");
        printf("setitimer(ITIMER_REAL"
               ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
@@ -43,7 +50,7 @@ main(void)
               zero_extend_signed_to_ull(new.it_value.tv_usec));
 
        fill_memory(p_old, sizeof(*p_old));
-       if (getitimer(ITIMER_REAL, p_old))
+       if (syscall(__NR_getitimer, ITIMER_REAL, p_old))
                perror_msg_and_skip("getitimer");
        printf("getitimer(ITIMER_REAL"
               ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
@@ -54,7 +61,7 @@ main(void)
               zero_extend_signed_to_ull(p_old->it_value.tv_usec));
 
        fill_memory(p_old, sizeof(*p_old));
-       setitimer(ITIMER_REAL, p_new, p_old);
+       syscall(__NR_setitimer, ITIMER_REAL, p_new, p_old);
        printf("setitimer(ITIMER_REAL"
               ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
               ", it_value={tv_sec=%lld, tv_usec=%llu}}"
@@ -69,10 +76,10 @@ main(void)
               (long long) p_old->it_value.tv_sec,
               zero_extend_signed_to_ull(p_old->it_value.tv_usec));
 
-       rc = getitimer(ITIMER_REAL, efault);
+       rc = syscall(__NR_getitimer, ITIMER_REAL, efault);
        printf("getitimer(ITIMER_REAL, %p) = %s\n", efault, sprintrc(rc));
 
-       rc = setitimer(ITIMER_REAL, p_new, efault);
+       rc = syscall(__NR_setitimer, ITIMER_REAL, p_new, efault);
        printf("setitimer(ITIMER_REAL"
               ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
               ", it_value={tv_sec=%lld, tv_usec=%llu}}, %p) = %s\n",
@@ -82,7 +89,7 @@ main(void)
               zero_extend_signed_to_ull(new.it_value.tv_usec),
               efault, sprintrc(rc));
 
-       rc = setitimer(ITIMER_REAL, efault, p_old);
+       rc = syscall(__NR_setitimer, ITIMER_REAL, efault, p_old);
        printf("setitimer(ITIMER_REAL, %p, %p) = %s\n",
               efault, p_old, sprintrc(rc));
 
@@ -146,10 +153,12 @@ main(void)
 
        p_new->it_interval.tv_sec = 0xdeadbeefU;
        p_new->it_interval.tv_usec = 0xfacefeedU;
-       p_new->it_value.tv_sec = (time_t) 0xcafef00ddeadbeefLL;
-       p_new->it_value.tv_usec = (suseconds_t) 0xbadc0dedfacefeedLL;
+       p_new->it_value.tv_sec =
+               (typeof(p_new->it_value.tv_sec)) 0xcafef00ddeadbeefLL;
+       p_new->it_value.tv_usec =
+               (typeof(p_new->it_value.tv_usec)) 0xbadc0dedfacefeedLL;
 
-       rc = setitimer(ITIMER_REAL, p_new, p_old);
+       rc = syscall(__NR_setitimer, ITIMER_REAL, p_new, p_old);
        printf("setitimer(ITIMER_REAL"
               ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
               ", it_value={tv_sec=%lld, tv_usec=%llu}}, %p) = %s\n",
diff --git a/tests/xetpgid--pidns-translation.c b/tests/xetpgid--pidns-translation.c
new file mode 100644 (file)
index 0000000..b646962
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "xetpgid.c"
diff --git a/tests/xetpgid--pidns-translation.gen.test b/tests/xetpgid--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..93c1ec3
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (xetpgid--pidns-translation test_pidns -a11 -e trace=getpgid,setpgid); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a11 -e trace=getpgid,setpgid
index 46dd332d1ae1aa190da0054a1c9ec71808cdd46f..94f9bc5e4276d1ef1db355036bbf1093b8d202ee 100644 (file)
@@ -2,14 +2,15 @@
  * This file is part of xetpgid strace test.
  *
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
+#include "pidns.h"
 
 #if defined __NR_getpgid && defined __NR_setpgid
 
 int
 main(void)
 {
-       const int pid = getpid();
-       long rc = syscall(__NR_getpgid, F8ILL_KULONG_MASK | pid);
-       printf("getpgid(%d) = %ld\n", pid, rc);
-
-       rc = syscall(__NR_setpgid, F8ILL_KULONG_MASK, F8ILL_KULONG_MASK | pid);
-       printf("setpgid(0, %d) = %ld\n", pid, rc);
+       PIDNS_TEST_INIT;
 
+       const int pid = getpid();
+       long pgid = syscall(__NR_getpgid, F8ILL_KULONG_MASK | pid);
+       pidns_print_leader();
+       printf("getpgid(%d%s) = %ld%s\n", pid, pidns_pid2str(PT_TGID),
+               pgid, pidns_pid2str(PT_PGID));
+
+       long rc = syscall(__NR_setpgid, F8ILL_KULONG_MASK,
+               F8ILL_KULONG_MASK | pgid);
+       pidns_print_leader();
+       printf("setpgid(0, %ld%s) = %s\n", pgid, pidns_pid2str(PT_PGID),
+               sprintrc(rc));
+
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
diff --git a/tests/xetpriority--pidns-translation.c b/tests/xetpriority--pidns-translation.c
new file mode 100644 (file)
index 0000000..c93669c
--- /dev/null
@@ -0,0 +1,2 @@
+#define PIDNS_TRANSLATION
+#include "xetpriority.c"
diff --git a/tests/xetpriority--pidns-translation.gen.test b/tests/xetpriority--pidns-translation.gen.test
new file mode 100755 (executable)
index 0000000..d221c7c
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (xetpriority--pidns-translation test_pidns -a27 -e trace=getpriority,setpriority); do not edit.
+. "${srcdir=.}/init.sh"
+test_pidns -a27 -e trace=getpriority,setpriority
index 5cd97ea947d60eac91e9af400ccfbee98696bb8b..0832ea94de1ec2fb9aa7ccf23d4e6eb37c211c81 100644 (file)
@@ -1,12 +1,13 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <asm/unistd.h>
+#include "scno.h"
+#include "pidns.h"
 
 #if defined __NR_getpriority && defined __NR_setpriority
 
 int
 main(void)
 {
+       PIDNS_TEST_INIT;
+
        const int pid = getpid();
+       const int pgid = getpgid(0);
+
        long rc = syscall(__NR_getpriority, PRIO_PROCESS,
                          F8ILL_KULONG_MASK | pid);
-       printf("getpriority(PRIO_PROCESS, %d) = %ld\n", pid, rc);
+       pidns_print_leader();
+       printf("getpriority(PRIO_PROCESS, %d%s) = %ld\n",
+               pid, pidns_pid2str(PT_TGID), rc);
 
        rc = syscall(__NR_setpriority, PRIO_PROCESS,
                     F8ILL_KULONG_MASK | pid, F8ILL_KULONG_MASK);
-       printf("setpriority(PRIO_PROCESS, %d, 0) = %s\n", pid, sprintrc(rc));
+       pidns_print_leader();
+       printf("setpriority(PRIO_PROCESS, %d%s, 0) = %s\n",
+               pid, pidns_pid2str(PT_TGID), sprintrc(rc));
+
+       rc = syscall(__NR_getpriority, PRIO_PGRP,
+                         F8ILL_KULONG_MASK | pgid);
+       pidns_print_leader();
+       printf("getpriority(PRIO_PGRP, %d%s) = %ld\n",
+               pgid, pidns_pid2str(PT_PGID), rc);
 
+       pidns_print_leader();
        puts("+++ exited with 0 +++");
        return 0;
 }
index 4b9552471bd810ffd8cadace87ededc8a6d8ac62..485c10718c6d258df74b34e25e2ba5246199f94a 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (xetpriority -a29 -e trace=getpriority,setpriority); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (xetpriority -a27 -e trace=getpriority,setpriority); do not edit.
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a29 -e trace=getpriority,setpriority
+run_strace_match_diff -a27 -e trace=getpriority,setpriority
index 9c8112624c4d1ca2c4e2c49faeacfc6bf0336614..eca3959b0563673748a15c1be7d35c4f7c00ba54 100644 (file)
@@ -1,18 +1,22 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
 #include "tests.h"
-#include <assert.h>
-#include <stdio.h>
-#include <stdint.h>
-#include <unistd.h>
-#include <sys/time.h>
-#include <asm/unistd.h>
+#include "scno.h"
+
+#ifdef __NR_gettimeofday
+
+# include <assert.h>
+# include <stdio.h>
+# include <stdint.h>
+# include <unistd.h>
+# include <sys/time.h>
+# include "scno.h"
 
 int
 main(void)
@@ -64,3 +68,9 @@ main(void)
        puts("+++ exited with 0 +++");
        return 0;
 }
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_gettimeofday")
+
+#endif /* __NR_gettimeofday */
diff --git a/tests/xgetdents.c b/tests/xgetdents.c
new file mode 100644 (file)
index 0000000..c550625
--- /dev/null
@@ -0,0 +1,141 @@
+/*
+ * Check decoding of getdents and getdents64 syscalls.
+ *
+ * Copyright (c) 2015-2020 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include <dirent.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <sys/stat.h>
+#include "kernel_dirent.h"
+#include "print_fields.h"
+
+#if VERBOSE
+static const char *
+str_d_type(const unsigned char d_type)
+{
+       switch (d_type) {
+               case DT_DIR:
+                       return "DT_DIR";
+               case DT_REG:
+                       return "DT_REG";
+               default:
+                       return "DT_UNKNOWN";
+       }
+}
+
+static void
+print_dirent(const kernel_dirent_type *d);
+#endif
+
+static const char *errstr;
+
+static long
+k_getdents(const unsigned int fd,
+          const void *dirp,
+          const unsigned int count)
+{
+       const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL;
+       const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL;
+       const kernel_ulong_t arg1 = fill | fd;
+       const kernel_ulong_t arg2 = (uintptr_t) dirp;
+       const kernel_ulong_t arg3 = fill | count;
+       const long rc = syscall(NR_getdents, arg1, arg2, arg3, bad, bad, bad);
+       errstr = sprintrc(rc);
+       return rc;
+}
+
+static void
+ls(int fd, char *buf, unsigned int size)
+{
+       long rc;
+       while ((rc = k_getdents(fd, buf, size))) {
+               if (rc < 0)
+                       perror_msg_and_skip(STR_getdents);
+               printf("%s(%d, ", STR_getdents, fd);
+#if VERBOSE
+               printf("[");
+#else
+               unsigned long entries = 0;
+#endif
+               kernel_dirent_type *d;
+               for (long i = 0; i < rc; i += d->d_reclen) {
+                       d = (kernel_dirent_type *) &buf[i];
+#if VERBOSE
+                       if (i)
+                               printf(", ");
+                       print_dirent(d);
+#else
+                       ++entries;
+#endif
+               }
+#if VERBOSE
+               printf("]");
+#else
+               printf("%p /* %lu entries */", buf, entries);
+#endif
+               printf(", %u) = %ld\n", size, rc);
+       }
+#if VERBOSE
+       printf("%s(%d, [], %u) = 0\n", STR_getdents, fd, size);
+#else
+       printf("%s(%d, %p /* 0 entries */, %u) = 0\n",
+              STR_getdents, fd, buf, size);
+#endif
+}
+
+int
+main(void)
+{
+       static const char dot[] = ".";
+       static const char dot_dot[] = "..";
+       static const char dname[] = STR_getdents
+#if VERBOSE
+               "-v"
+#endif
+               ".test.tmp.dir";
+       static const char fname[] =
+               "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
+               "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
+               "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
+               "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
+               "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
+               "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
+               "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\n"
+               "A\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nA\nZ";
+
+       if (mkdir(dname, 0700))
+               perror_msg_and_fail("mkdir: %s", dname);
+       if (chdir(dname))
+               perror_msg_and_fail("chdir: %s", dname);
+       int fd = creat(fname, 0600);
+       if (fd < 0)
+               perror_msg_and_fail("creat: %s", fname);
+       if (close(fd))
+               perror_msg_and_fail("close: %s", fname);
+       fd = open(dot, O_RDONLY | O_DIRECTORY);
+       if (fd < 0)
+               perror_msg_and_fail("open: %s", dot);
+
+       unsigned int count = 0xdeadbeefU;
+       k_getdents(-1U, NULL, count);
+       printf("%s(-1, NULL, %u) = %s\n", STR_getdents, count, errstr);
+
+       static char buf[8192];
+       ls(fd, buf, sizeof(buf));
+
+       if (unlink(fname))
+               perror_msg_and_fail("unlink: %s", fname);
+       if (chdir(dot_dot))
+               perror_msg_and_fail("chdir: %s", dot_dot);
+       if (rmdir(dname))
+               perror_msg_and_fail("rmdir: %s", dname);
+
+       puts("+++ exited with 0 +++");
+       return 0;
+}
index a1c89e9b7eb691208478cbf94eb9618bf71ee19d..6a9c053817c9e1fb66f212f8201bf524d77591db 100644 (file)
@@ -77,9 +77,13 @@ int
 main(void)
 {
        kernel_ulong_t *const rlimit = tail_alloc(sizeof(*rlimit) * 2);
-       const struct xlat *xlat;
+       const struct xlat_data *xlat;
+       size_t i;
+
+       for (xlat = resources->data, i = 0; i < resources->size; ++xlat, ++i) {
+               if (!xlat->str)
+                       continue;
 
-       for (xlat = resources; xlat->str; ++xlat) {
                unsigned long res = 0xfacefeed00000000ULL | xlat->val;
                long rc = syscall(NR_GETRLIMIT, res, 0);
                if (rc && ENOSYS == errno)
diff --git a/tests/xmalloc_for_tests.c b/tests/xmalloc_for_tests.c
new file mode 100644 (file)
index 0000000..5c496ad
--- /dev/null
@@ -0,0 +1,2 @@
+#define error_msg_and_die error_msg_and_fail
+#include "xmalloc.c"
index 1b91e84467e300d4d520f7491dc890e8ed77c93b..8a86fdc39ad326686abf743534b5c8bae9effbaf 100644 (file)
@@ -34,10 +34,9 @@ static void
 print_statfs_type(const char *const prefix, const unsigned int magic)
 {
        fputs(prefix, stdout);
-       unsigned int i;
-       for (i = 0; i < ARRAY_SIZE(fsmagic); ++i)
-               if (magic == fsmagic[i].val) {
-                       fputs(fsmagic[i].str, stdout);
+       for (unsigned int i = 0; i < fsmagic->size; ++i)
+               if (magic == fsmagic->data[i].val) {
+                       fputs(fsmagic->data[i].str, stdout);
                        return;
                }
        printf("%#x", magic);
index 0d223bdc05462f2b2a440b26140fed6bea1e4233..aa9a0ae005f87ecbd5dfc9f92fac7341c10ba33c 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2015-2018 The strace developers.
+ * Copyright (c) 2015-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -46,6 +46,7 @@ typedef off_t libc_off_t;
 # define stat64 libc_stat64
 # define statx libc_statx
 # define statx_timestamp libc_statx_timestamp
+struct statx;
 # include <fcntl.h>
 # include <sys/stat.h>
 # undef statx_timestamp
@@ -460,19 +461,19 @@ main(void)
        SET_FLAGS_INVOKE(0xffffff,
                "AT_STATX_FORCE_SYNC|AT_STATX_DONT_SYNC|AT_SYMLINK_NOFOLLOW|"
                "AT_REMOVEDIR|AT_SYMLINK_FOLLOW|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|"
-               "0xff80ff");
+               "AT_RECURSIVE|0xff00ff");
 
        /* We're done playing with flags. */
        TEST_SYSCALL_STATX_FLAGS = old_flags;
        TEST_SYSCALL_STATX_FLAGS_STR = old_flags_str;
 
        SET_MASK_INVOKE(0, "0");
-       SET_MASK_INVOKE(0xfffff000U, "0xfffff000 /* STATX_??? */");
+       SET_MASK_INVOKE(0xffffe000U, "0xffffe000 /* STATX_??? */");
 
        SET_MASK_INVOKE(0xfffffffbU,
                "STATX_TYPE|STATX_MODE|STATX_UID|STATX_GID|STATX_ATIME|"
                "STATX_MTIME|STATX_CTIME|STATX_INO|STATX_SIZE|STATX_BLOCKS|"
-               "STATX_BTIME|0xfffff000");
+               "STATX_BTIME|STATX_MNT_ID|0xffffe000");
 
        SET_MASK_INVOKE(STATX_UID, "STATX_UID");
 
index 672959c424117aa5518da5b19402702626275e4b..3034e52770c35cc48d3f71a9cda26c5fbfbf335e 100644 (file)
@@ -1,7 +1,8 @@
 /*
- * Execute an executable with zero argc and specified anvironment.
+ * Execute an executable with zero argc and specified environment.
  *
  * Copyright (c) 2017-2018 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
diff --git a/time.c b/time.c
index 5b163c84de2ad9f10a50cfb114d42974e6a45794..fe05b468217f563a7a8cb07d8d8775cbb17b88ee 100644 (file)
--- a/time.c
+++ b/time.c
@@ -2,7 +2,7 @@
  * Copyright (c) 1991, 1992 Paul Kranenburg <pk@cs.few.eur.nl>
  * Copyright (c) 1993 Branko Lankester <branko@hacktic.nl>
  * Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com>
- * Copyright (c) 1996-2019 The strace developers.
+ * Copyright (c) 1996-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -13,6 +13,7 @@
 #include <signal.h>
 #include <sys/timex.h>
 
+#if HAVE_ARCH_TIME32_SYSCALLS || HAVE_ARCH_OLD_TIME64_SYSCALLS
 static void
 print_timezone(struct tcb *const tcp, const kernel_ulong_t addr)
 {
@@ -35,6 +36,16 @@ SYS_FUNC(gettimeofday)
        return 0;
 }
 
+SYS_FUNC(settimeofday)
+{
+       print_timeval(tcp, tcp->u_arg[0]);
+       tprints(", ");
+       print_timezone(tcp, tcp->u_arg[1]);
+
+       return RVAL_DECODED;
+}
+#endif
+
 #ifdef ALPHA
 SYS_FUNC(osf_gettimeofday)
 {
@@ -47,15 +58,6 @@ SYS_FUNC(osf_gettimeofday)
 }
 #endif
 
-SYS_FUNC(settimeofday)
-{
-       print_timeval(tcp, tcp->u_arg[0]);
-       tprints(", ");
-       print_timezone(tcp, tcp->u_arg[1]);
-
-       return RVAL_DECODED;
-}
-
 #ifdef ALPHA
 SYS_FUNC(osf_settimeofday)
 {
@@ -113,8 +115,7 @@ SYS_FUNC(nanosleep_time64)
 SYS_FUNC(getitimer)
 {
        if (entering(tcp)) {
-               printxval_index(itimer_which, (unsigned int) tcp->u_arg[0],
-                               "ITIMER_???");
+               printxval(itimer_which, tcp->u_arg[0], "ITIMER_???");
                tprints(", ");
        } else {
                print_itimerval(tcp, tcp->u_arg[1]);
@@ -126,8 +127,7 @@ SYS_FUNC(getitimer)
 SYS_FUNC(osf_getitimer)
 {
        if (entering(tcp)) {
-               printxval_index(itimer_which, (unsigned int) tcp->u_arg[0],
-                               "ITIMER_???");
+               printxval(itimer_which, tcp->u_arg[0], "ITIMER_???");
                tprints(", ");
        } else {
                print_itimerval32(tcp, tcp->u_arg[1]);
@@ -139,8 +139,7 @@ SYS_FUNC(osf_getitimer)
 SYS_FUNC(setitimer)
 {
        if (entering(tcp)) {
-               printxval_index(itimer_which, (unsigned int) tcp->u_arg[0],
-                               "ITIMER_???");
+               printxval(itimer_which, tcp->u_arg[0], "ITIMER_???");
                tprints(", ");
                print_itimerval(tcp, tcp->u_arg[1]);
                tprints(", ");
@@ -154,8 +153,7 @@ SYS_FUNC(setitimer)
 SYS_FUNC(osf_setitimer)
 {
        if (entering(tcp)) {
-               printxval_index(itimer_which, (unsigned int) tcp->u_arg[0],
-                               "ITIMER_???");
+               printxval(itimer_which, tcp->u_arg[0], "ITIMER_???");
                tprints(", ");
                print_itimerval32(tcp, tcp->u_arg[1]);
                tprints(", ");
@@ -174,8 +172,7 @@ do_adjtimex(struct tcb *const tcp, const print_obj_by_addr_fn print_tx,
 {
        if (print_tx(tcp, addr))
                return 0;
-       tcp->auxstr = xlat_idx(adjtimex_state, ARRAY_SIZE(adjtimex_state) - 1,
-                              (kernel_ulong_t) tcp->u_rval);
+       tcp->auxstr = xlookup(adjtimex_state, (kernel_ulong_t) tcp->u_rval);
        return RVAL_STR;
 }
 
@@ -228,9 +225,8 @@ printclockname(int clockid)
                                        "MAKE_THREAD_CPUCLOCK" :
                                        "MAKE_PROCESS_CPUCLOCK",
                                CPUCLOCK_PID(clockid));
-                       printxval_index(cpuclocknames,
-                                       (unsigned int) clockid & CLOCKFD_MASK,
-                                       "CPUCLOCK_???");
+                       printxval(cpuclocknames, clockid & CLOCKFD_MASK,
+                                 "CPUCLOCK_???");
                        tprints(")");
                }
 
@@ -238,7 +234,7 @@ printclockname(int clockid)
                        tprints(" */");
        } else
 #endif
-               printxval_index(clocknames, clockid, "CLOCK_???");
+               printxval(clocknames, clockid, "CLOCK_???");
 }
 
 static int
index 53a711b821e5f0cee3168967485a680bf80c5c12..9021fc5503f3adec64ee3626667a0d63af499033 100644 (file)
@@ -66,6 +66,11 @@ enum trace_event {
         * Restart the tracee with signal 0.
         */
        TE_STOP_BEFORE_EXIT,
+
+       /*
+        * SECCOMP_RET_TRACE rule is triggered.
+        */
+       TE_SECCOMP,
 };
 
 #endif /* !STRACE_TRACE_EVENT_H */
diff --git a/trie.c b/trie.c
new file mode 100644 (file)
index 0000000..c26368e
--- /dev/null
+++ b/trie.c
@@ -0,0 +1,290 @@
+/*
+ * Simple trie implementation for key-value mapping storage
+ *
+ * Copyright (c) 2020 Ákos Uzonyi <uzonyi.akos@gmail.com>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "trie.h"
+#include "xmalloc.h"
+
+static const uint8_t ptr_sz_lg = (sizeof(void *) == 8 ? 6 : 5);
+
+/**
+ * Returns lg2 of node size in bits for the specific level of the trie.
+ */
+static uint8_t
+trie_get_node_size(struct trie *t, uint8_t depth)
+{
+       /* Last level contains data and we allow it having a different size */
+       if (depth == t->max_depth)
+               return t->data_block_key_bits + t->item_size_lg;
+       /* Last level of the tree can be smaller */
+       if (depth == t->max_depth - 1)
+               return (t->key_size - t->data_block_key_bits - 1) %
+               t->node_key_bits + 1 + ptr_sz_lg;
+
+       return t->node_key_bits + ptr_sz_lg;
+}
+
+/**
+ * Provides starting offset of bits in key corresponding to the node index
+ * at the specific level.
+ */
+static uint8_t
+trie_get_node_bit_offs(struct trie *t, uint8_t depth)
+{
+       uint8_t offs;
+
+       if (depth == t->max_depth)
+               return 0;
+
+       offs = t->data_block_key_bits;
+
+       if (depth == t->max_depth - 1)
+               return offs;
+
+       /* data_block_size + remainder */
+       offs += trie_get_node_size(t, t->max_depth - 1) - ptr_sz_lg;
+       offs += (t->max_depth - depth - 2) * t->node_key_bits;
+
+       return offs;
+}
+
+struct trie *
+trie_create(uint8_t key_size, uint8_t item_size_lg, uint8_t node_key_bits,
+            uint8_t data_block_key_bits, uint64_t empty_value)
+{
+       if (item_size_lg > 6)
+               return NULL;
+       if (key_size > 64)
+               return NULL;
+       if (node_key_bits < 1)
+               return NULL;
+       if (data_block_key_bits < 1 || data_block_key_bits > key_size)
+               return NULL;
+
+       struct trie *t = malloc(sizeof(*t));
+       if (!t)
+               return NULL;
+
+       t->empty_value = empty_value;
+       t->data = NULL;
+       t->item_size_lg = item_size_lg;
+       t->node_key_bits = node_key_bits;
+       t->data_block_key_bits = data_block_key_bits;
+       t->key_size = key_size;
+       t->max_depth = (key_size - data_block_key_bits + node_key_bits - 1)
+               / t->node_key_bits;
+
+       if (item_size_lg != 6)
+               t->empty_value &= (((uint64_t) 1 << (1 << t->item_size_lg)) - 1);
+
+       return t;
+}
+
+static void *
+trie_create_data_block(struct trie *t)
+{
+       uint64_t fill_value = t->empty_value;
+       for (int i = 1; i < 1 << (6 - t->item_size_lg); i++) {
+               fill_value <<= (1 << t->item_size_lg);
+               fill_value |= t->empty_value;
+       }
+
+       uint8_t sz = t->data_block_key_bits + t->item_size_lg;
+       if (sz < 6)
+               sz = 6;
+
+       size_t count = 1 << (sz - 6);
+       uint64_t *data_block = xcalloc(count, 8);
+
+       for (size_t i = 0; i < count; i++)
+               data_block[i] = fill_value;
+
+       return data_block;
+}
+
+static uint64_t *
+trie_get_node(struct trie *t, uint64_t key, bool auto_create)
+{
+       void **cur_node = &(t->data);
+
+       if (t->key_size < 64 && key > (uint64_t) 1 << t->key_size)
+               return NULL;
+
+       for (uint8_t cur_depth = 0; cur_depth <= t->max_depth; cur_depth++) {
+               uint8_t offs = trie_get_node_bit_offs(t, cur_depth);
+               uint8_t sz = trie_get_node_size(t, cur_depth);
+
+               if (!*cur_node) {
+                       if (!auto_create)
+                               return NULL;
+
+                       if (cur_depth == t->max_depth)
+                               *cur_node = trie_create_data_block(t);
+                       else
+                               *cur_node = xcalloc(1 << sz, 1);
+               }
+
+               if (cur_depth == t->max_depth)
+                       break;
+
+               size_t pos = (key >> offs) & ((1 << (sz - ptr_sz_lg)) - 1);
+               cur_node = (((void **) (*cur_node)) + pos);
+       }
+
+       return (uint64_t *) (*cur_node);
+}
+
+static void
+trie_data_block_calc_pos(struct trie *t, uint64_t key,
+                         uint64_t *pos, uint64_t *mask, uint64_t *offs)
+{
+       uint64_t key_mask;
+
+       key_mask = (1 << t->data_block_key_bits) - 1;
+       *pos = (key & key_mask) >> (6 - t->item_size_lg);
+
+       if (t->item_size_lg == 6) {
+               *offs = 0;
+               *mask = -1;
+               return;
+       }
+
+       key_mask = (1 << (6 - t->item_size_lg)) - 1;
+       *offs = (key & key_mask) * (1 << t->item_size_lg);
+
+       *mask = (((uint64_t) 1 << (1 << t->item_size_lg)) - 1) << *offs;
+}
+
+bool
+trie_set(struct trie *t, uint64_t key, uint64_t val)
+{
+       uint64_t *data = trie_get_node(t, key, true);
+       if (!data)
+               return false;
+
+       uint64_t pos, mask, offs;
+       trie_data_block_calc_pos(t, key, &pos, &mask, &offs);
+
+       data[pos] &= ~mask;
+       data[pos] |= (val << offs) & mask;
+
+       return true;
+}
+
+static uint64_t
+trie_data_block_get(struct trie *t, uint64_t *data, uint64_t key)
+{
+       if (!data)
+               return t->empty_value;
+
+       uint64_t pos, mask, offs;
+       trie_data_block_calc_pos(t, key, &pos, &mask, &offs);
+
+       return (data[pos] & mask) >> offs;
+}
+
+uint64_t
+trie_get(struct trie *b, uint64_t key)
+{
+       return trie_data_block_get(b, trie_get_node(b, key, false), key);
+}
+
+static uint64_t
+trie_iterate_keys_node(struct trie *t,
+                       trie_iterate_fn fn, void *fn_data,
+                       void *node, uint64_t start, uint64_t end,
+                       uint8_t depth)
+{
+       if (start > end || !node)
+               return 0;
+
+       if (t->key_size < 64) {
+               uint64_t key_max = ((uint64_t) 1 << t->key_size) - 1;
+               if (end > key_max)
+                       end = key_max;
+       }
+
+       if (depth == t->max_depth) {
+               for (uint64_t i = start; i <= end; i++)
+                       fn(fn_data, i, trie_data_block_get(t,
+                               (uint64_t *) node, i));
+
+               return end - start + 1;
+       }
+
+       uint8_t parent_node_bit_off = depth == 0 ?
+               t->key_size :
+               trie_get_node_bit_offs(t, depth - 1);
+
+       uint64_t first_key_in_node = start &
+               (uint64_t) -1 << parent_node_bit_off;
+
+       uint8_t node_bit_off = trie_get_node_bit_offs(t, depth);
+       uint8_t node_key_bits = parent_node_bit_off - node_bit_off;
+       uint64_t mask = ((uint64_t) 1 << (node_key_bits)) - 1;
+       uint64_t start_index = (start >> node_bit_off) & mask;
+       uint64_t end_index = (end >> node_bit_off) & mask;
+       uint64_t child_key_count = (uint64_t) 1 << node_bit_off;
+
+       uint64_t count = 0;
+
+       for (uint64_t i = start_index; i <= end_index; i++) {
+               uint64_t child_start = first_key_in_node + i * child_key_count;
+               uint64_t child_end = first_key_in_node +
+                       (i + 1) * child_key_count - 1;
+
+               if (child_start < start)
+                       child_start = start;
+               if (child_end > end)
+                       child_end = end;
+
+               count += trie_iterate_keys_node(t, fn, fn_data,
+                       ((void **) node)[i], child_start, child_end,
+                       depth + 1);
+       }
+
+       return count;
+}
+
+uint64_t trie_iterate_keys(struct trie *t, uint64_t start, uint64_t end,
+                           trie_iterate_fn fn, void *fn_data)
+{
+       return trie_iterate_keys_node(t, fn, fn_data, t->data,
+               start, end, 0);
+}
+
+static void
+trie_free_node(struct trie *t, void *node, uint8_t depth)
+{
+       if (!node)
+               return;
+
+       if (depth >= t->max_depth)
+               goto free_node;
+
+       size_t sz = 1 << (trie_get_node_size(t, depth) - ptr_sz_lg);
+       for (size_t i = 0; i < sz; i++)
+               trie_free_node(t, ((void **) node)[i], depth + 1);
+
+free_node:
+       free(node);
+}
+
+void
+trie_free(struct trie *t)
+{
+       trie_free_node(t, t->data, 0);
+       free(t);
+}
diff --git a/trie.h b/trie.h
new file mode 100644 (file)
index 0000000..da8f45e
--- /dev/null
+++ b/trie.h
@@ -0,0 +1,92 @@
+/*
+ * Simple trie interface
+ *
+ * Copyright (c) 2020 Ákos Uzonyi <uzonyi.akos@gmail.com>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#ifndef STRACE_TRIE_H
+# define STRACE_TRIE_H
+
+# include <stdbool.h>
+# include <stdint.h>
+
+/**
+ * Trie control structure.
+ * Trie implemented here has the following properties:
+ *  * It allows storing values of the same size, the size can vary from 1 bit to
+ *    64 bit values (only power of 2 sizes are allowed).
+ *  * The key can be up to 64 bits in size.
+ *  * It has separate configuration for node size and data block size.
+ *
+ * How bits of key are used for different node levels:
+ *
+ *   highest bits                                                  lowest bits
+ *  | node_key_bits | node_key_bits | ... | <remainder> | data_block_key_bits |
+ *  \_________________________________________________________________________/
+ *                                 key_size
+ *
+ * So, the remainder is used on the lowest non-data node level.
+ *
+ * As of now, it doesn't implement any mechanisms for resizing/changing key
+ * size.  De-fragmentation is also unsupported currently.
+ */
+struct trie {
+       /** Return value of trie_get if key is not found */
+       uint64_t empty_value;
+
+       /** Pointer to root node */
+       void *data;
+
+       /** Key size in bits (0..64). */
+       uint8_t key_size;
+
+       /**
+        * Size of the stored values in log2 bits (0..6).
+        * (6: 64 bit values, 5: 32 bit values, ...)
+        */
+       uint8_t item_size_lg;
+
+       /**
+        * Number of bits in the key that make a symbol for a node.
+        * (equals to log2 of the child count of the node)
+        */
+       uint8_t node_key_bits;
+
+       /**
+        * Number of bits in the key that make a symbol for the data block (leaf).
+        * (equals to log2 of the value count stored in a data block)
+        */
+       uint8_t data_block_key_bits;
+
+       /** The depth of the data block. Calculated from the values above */
+       uint8_t max_depth;
+};
+
+struct trie* trie_create(uint8_t key_size, uint8_t item_size_lg,
+                       uint8_t node_key_bits, uint8_t data_block_key_bits,
+                       uint64_t empty_value);
+
+bool trie_set(struct trie *t, uint64_t key, uint64_t val);
+uint64_t trie_get(struct trie *t, uint64_t key);
+
+typedef void (*trie_iterate_fn)(void *data, uint64_t key, uint64_t val);
+
+/**
+ * Calls trie_iterate_fn for each key-value pair where
+ * key is inside the [start, end] interval (inclusive).
+ *
+ * @param t        The trie.
+ * @param start    The start of the key interval (inclusive).
+ * @param end      The end of the key interval (inclusive).
+ * @param fn       The function to be called.
+ * @param fn_data  The value to be passed to fn.
+ */
+uint64_t trie_iterate_keys(struct trie *t, uint64_t start, uint64_t end,
+                           trie_iterate_fn fn, void *fn_data);
+
+void trie_free(struct trie *t);
+
+#endif /* !STRACE_TRIE_H */
diff --git a/types/Makemodule.am b/types/Makemodule.am
new file mode 100644 (file)
index 0000000..bb17664
--- /dev/null
@@ -0,0 +1,2 @@
+TYPES_HEADER_FILES = types/btrfs.h types/cryptouser.h types/evdev.h types/io_uring.h types/loop.h types/openat2.h types/rtnl_link.h types/rtnl_mdb.h types/rtnl_neightbl.h types/rtnl_route.h types/tee.h types/v4l2.h 
+TYPES_CHECK_FILES = types/check-btrfs.c types/check-cryptouser.c types/check-evdev.c types/check-io_uring.c types/check-loop.c types/check-openat2.c types/check-rtnl_link.c types/check-rtnl_mdb.c types/check-rtnl_neightbl.c types/check-rtnl_route.c types/check-tee.c types/check-v4l2.c 
diff --git a/types/btrfs.h b/types/btrfs.h
new file mode 100644 (file)
index 0000000..41d4c3f
--- /dev/null
@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) 2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#ifndef STRACE_TYPES_BTRFS_H
+# define STRACE_TYPES_BTRFS_H
+
+# ifdef HAVE_LINUX_BTRFS_H
+#  include <stdio.h>
+#  include <stdint.h>
+#  include <linux/btrfs.h>
+# endif
+
+typedef struct {
+       uint64_t logical;
+       uint64_t size;
+       uint64_t reserved[3];
+       uint64_t flags;
+       uint64_t inodes;
+} struct_btrfs_ioctl_logical_ino_args;
+
+#endif /* STRACE_TYPES_BTRFS_H */
diff --git a/types/check-btrfs.c b/types/check-btrfs.c
new file mode 100644 (file)
index 0000000..1e40dcf
--- /dev/null
@@ -0,0 +1,14 @@
+/* Generated by ./types/gen.sh from ./types/btrfs.h; do not edit. */
+#include "defs.h"
+#include "static_assert.h"
+#include "types/btrfs.h"
+
+#ifdef HAVE_STRUCT_BTRFS_IOCTL_LOGICAL_INO_ARGS
+# ifdef HAVE_STRUCT_BTRFS_IOCTL_LOGICAL_INO_ARGS_INODES
+static_assert(sizeof(struct btrfs_ioctl_logical_ino_args) == sizeof(struct_btrfs_ioctl_logical_ino_args),
+      "struct btrfs_ioctl_logical_ino_args size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct btrfs_ioctl_logical_ino_args) <= offsetof(struct_btrfs_ioctl_logical_ino_args, inodes),
+"struct btrfs_ioctl_logical_ino_args size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_BTRFS_IOCTL_LOGICAL_INO_ARGS_INODES */
+#endif /* HAVE_STRUCT_BTRFS_IOCTL_LOGICAL_INO_ARGS */
diff --git a/types/check-btrfs.m4 b/types/check-btrfs.m4
new file mode 100644 (file)
index 0000000..9318a2d
--- /dev/null
@@ -0,0 +1,15 @@
+dnl Generated by ./types/gen.sh from ./types/btrfs.h; do not edit.
+AC_DEFUN([st_CHECK_TYPES_BTRFS],[
+AC_CHECK_HEADERS([linux/btrfs.h],[
+
+AC_CHECK_TYPES([struct btrfs_ioctl_logical_ino_args],
+[AC_CHECK_MEMBERS([struct btrfs_ioctl_logical_ino_args.inodes],,,[AC_INCLUDES_DEFAULT
+#include <stdio.h>
+#include <stdint.h>
+#include <linux/btrfs.h>])],,[AC_INCLUDES_DEFAULT
+#include <stdio.h>
+#include <stdint.h>
+#include <linux/btrfs.h>])
+],[],[AC_INCLUDES_DEFAULT
+#include <stdio.h>
+#include <stdint.h>])])
diff --git a/types/check-cryptouser.c b/types/check-cryptouser.c
new file mode 100644 (file)
index 0000000..8bdf9ac
--- /dev/null
@@ -0,0 +1,64 @@
+/* Generated by ./types/gen.sh from ./types/cryptouser.h; do not edit. */
+#include "defs.h"
+#include "static_assert.h"
+#include "types/cryptouser.h"
+
+#ifdef HAVE_STRUCT_CRYPTO_USER_ALG
+# ifdef HAVE_STRUCT_CRYPTO_USER_ALG_CRU_FLAGS
+static_assert(sizeof(struct crypto_user_alg) == sizeof(struct_crypto_user_alg),
+      "struct crypto_user_alg size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct crypto_user_alg) <= offsetof(struct_crypto_user_alg, cru_flags),
+"struct crypto_user_alg size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_CRYPTO_USER_ALG_CRU_FLAGS */
+#endif /* HAVE_STRUCT_CRYPTO_USER_ALG */
+
+#ifdef HAVE_STRUCT_CRYPTO_REPORT_HASH
+# ifdef HAVE_STRUCT_CRYPTO_REPORT_HASH_DIGESTSIZE
+static_assert(sizeof(struct crypto_report_hash) == sizeof(struct_crypto_report_hash),
+      "struct crypto_report_hash size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct crypto_report_hash) <= offsetof(struct_crypto_report_hash, digestsize),
+"struct crypto_report_hash size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_CRYPTO_REPORT_HASH_DIGESTSIZE */
+#endif /* HAVE_STRUCT_CRYPTO_REPORT_HASH */
+
+#ifdef HAVE_STRUCT_CRYPTO_REPORT_CIPHER
+# ifdef HAVE_STRUCT_CRYPTO_REPORT_CIPHER_MAX_KEYSIZE
+static_assert(sizeof(struct crypto_report_cipher) == sizeof(struct_crypto_report_cipher),
+      "struct crypto_report_cipher size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct crypto_report_cipher) <= offsetof(struct_crypto_report_cipher, max_keysize),
+"struct crypto_report_cipher size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_CRYPTO_REPORT_CIPHER_MAX_KEYSIZE */
+#endif /* HAVE_STRUCT_CRYPTO_REPORT_CIPHER */
+
+#ifdef HAVE_STRUCT_CRYPTO_REPORT_BLKCIPHER
+# ifdef HAVE_STRUCT_CRYPTO_REPORT_BLKCIPHER_IVSIZE
+static_assert(sizeof(struct crypto_report_blkcipher) == sizeof(struct_crypto_report_blkcipher),
+      "struct crypto_report_blkcipher size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct crypto_report_blkcipher) <= offsetof(struct_crypto_report_blkcipher, ivsize),
+"struct crypto_report_blkcipher size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_CRYPTO_REPORT_BLKCIPHER_IVSIZE */
+#endif /* HAVE_STRUCT_CRYPTO_REPORT_BLKCIPHER */
+
+#ifdef HAVE_STRUCT_CRYPTO_REPORT_AEAD
+# ifdef HAVE_STRUCT_CRYPTO_REPORT_AEAD_IVSIZE
+static_assert(sizeof(struct crypto_report_aead) == sizeof(struct_crypto_report_aead),
+      "struct crypto_report_aead size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct crypto_report_aead) <= offsetof(struct_crypto_report_aead, ivsize),
+"struct crypto_report_aead size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_CRYPTO_REPORT_AEAD_IVSIZE */
+#endif /* HAVE_STRUCT_CRYPTO_REPORT_AEAD */
+
+#ifdef HAVE_STRUCT_CRYPTO_REPORT_RNG
+# ifdef HAVE_STRUCT_CRYPTO_REPORT_RNG_SEEDSIZE
+static_assert(sizeof(struct crypto_report_rng) == sizeof(struct_crypto_report_rng),
+      "struct crypto_report_rng size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct crypto_report_rng) <= offsetof(struct_crypto_report_rng, seedsize),
+"struct crypto_report_rng size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_CRYPTO_REPORT_RNG_SEEDSIZE */
+#endif /* HAVE_STRUCT_CRYPTO_REPORT_RNG */
diff --git a/types/check-cryptouser.m4 b/types/check-cryptouser.m4
new file mode 100644 (file)
index 0000000..a299dc5
--- /dev/null
@@ -0,0 +1,35 @@
+dnl Generated by ./types/gen.sh from ./types/cryptouser.h; do not edit.
+AC_DEFUN([st_CHECK_TYPES_CRYPTOUSER],[
+AC_CHECK_HEADERS([linux/cryptouser.h],[
+
+AC_CHECK_TYPES([struct crypto_user_alg],
+[AC_CHECK_MEMBERS([struct crypto_user_alg.cru_flags],,,[AC_INCLUDES_DEFAULT
+#include <linux/cryptouser.h>])],,[AC_INCLUDES_DEFAULT
+#include <linux/cryptouser.h>])
+
+AC_CHECK_TYPES([struct crypto_report_hash],
+[AC_CHECK_MEMBERS([struct crypto_report_hash.digestsize],,,[AC_INCLUDES_DEFAULT
+#include <linux/cryptouser.h>])],,[AC_INCLUDES_DEFAULT
+#include <linux/cryptouser.h>])
+
+AC_CHECK_TYPES([struct crypto_report_cipher],
+[AC_CHECK_MEMBERS([struct crypto_report_cipher.max_keysize],,,[AC_INCLUDES_DEFAULT
+#include <linux/cryptouser.h>])],,[AC_INCLUDES_DEFAULT
+#include <linux/cryptouser.h>])
+
+AC_CHECK_TYPES([struct crypto_report_blkcipher],
+[AC_CHECK_MEMBERS([struct crypto_report_blkcipher.ivsize],,,[AC_INCLUDES_DEFAULT
+#include <linux/cryptouser.h>])],,[AC_INCLUDES_DEFAULT
+#include <linux/cryptouser.h>])
+
+AC_CHECK_TYPES([struct crypto_report_aead],
+[AC_CHECK_MEMBERS([struct crypto_report_aead.ivsize],,,[AC_INCLUDES_DEFAULT
+#include <linux/cryptouser.h>])],,[AC_INCLUDES_DEFAULT
+#include <linux/cryptouser.h>])
+
+AC_CHECK_TYPES([struct crypto_report_rng],
+[AC_CHECK_MEMBERS([struct crypto_report_rng.seedsize],,,[AC_INCLUDES_DEFAULT
+#include <linux/cryptouser.h>])],,[AC_INCLUDES_DEFAULT
+#include <linux/cryptouser.h>])
+],[],[AC_INCLUDES_DEFAULT
+])])
diff --git a/types/check-evdev.c b/types/check-evdev.c
new file mode 100644 (file)
index 0000000..f7dfc83
--- /dev/null
@@ -0,0 +1,34 @@
+/* Generated by ./types/gen.sh from ./types/evdev.h; do not edit. */
+#include "defs.h"
+#include "static_assert.h"
+#include "types/evdev.h"
+
+#ifdef HAVE_STRUCT_INPUT_ABSINFO
+# ifdef HAVE_STRUCT_INPUT_ABSINFO_RESOLUTION
+static_assert(sizeof(struct input_absinfo) == sizeof(struct_input_absinfo),
+      "struct input_absinfo size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct input_absinfo) <= offsetof(struct_input_absinfo, resolution),
+"struct input_absinfo size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_INPUT_ABSINFO_RESOLUTION */
+#endif /* HAVE_STRUCT_INPUT_ABSINFO */
+
+#ifdef HAVE_STRUCT_INPUT_KEYMAP_ENTRY
+# ifdef HAVE_STRUCT_INPUT_KEYMAP_ENTRY_SCANCODE
+static_assert(sizeof(struct input_keymap_entry) == sizeof(struct_input_keymap_entry),
+      "struct input_keymap_entry size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct input_keymap_entry) <= offsetof(struct_input_keymap_entry, scancode),
+"struct input_keymap_entry size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_INPUT_KEYMAP_ENTRY_SCANCODE */
+#endif /* HAVE_STRUCT_INPUT_KEYMAP_ENTRY */
+
+#ifdef HAVE_STRUCT_INPUT_MASK
+# ifdef HAVE_STRUCT_INPUT_MASK_CODES_PTR
+static_assert(sizeof(struct input_mask) == sizeof(struct_input_mask),
+      "struct input_mask size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct input_mask) <= offsetof(struct_input_mask, codes_ptr),
+"struct input_mask size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_INPUT_MASK_CODES_PTR */
+#endif /* HAVE_STRUCT_INPUT_MASK */
diff --git a/types/check-evdev.m4 b/types/check-evdev.m4
new file mode 100644 (file)
index 0000000..282b75c
--- /dev/null
@@ -0,0 +1,20 @@
+dnl Generated by ./types/gen.sh from ./types/evdev.h; do not edit.
+AC_DEFUN([st_CHECK_TYPES_EVDEV],[
+AC_CHECK_HEADERS([linux/input.h],[
+
+AC_CHECK_TYPES([struct input_absinfo],
+[AC_CHECK_MEMBERS([struct input_absinfo.resolution],,,[AC_INCLUDES_DEFAULT
+#include <linux/input.h>])],,[AC_INCLUDES_DEFAULT
+#include <linux/input.h>])
+
+AC_CHECK_TYPES([struct input_keymap_entry],
+[AC_CHECK_MEMBERS([struct input_keymap_entry.scancode],,,[AC_INCLUDES_DEFAULT
+#include <linux/input.h>])],,[AC_INCLUDES_DEFAULT
+#include <linux/input.h>])
+
+AC_CHECK_TYPES([struct input_mask],
+[AC_CHECK_MEMBERS([struct input_mask.codes_ptr],,,[AC_INCLUDES_DEFAULT
+#include <linux/input.h>])],,[AC_INCLUDES_DEFAULT
+#include <linux/input.h>])
+],[],[AC_INCLUDES_DEFAULT
+])])
diff --git a/types/check-io_uring.c b/types/check-io_uring.c
new file mode 100644 (file)
index 0000000..20a3ffb
--- /dev/null
@@ -0,0 +1,64 @@
+/* Generated by ./types/gen.sh from ./types/io_uring.h; do not edit. */
+#include "defs.h"
+#include "static_assert.h"
+#include "types/io_uring.h"
+
+#ifdef HAVE_STRUCT_IO_SQRING_OFFSETS
+# ifdef HAVE_STRUCT_IO_SQRING_OFFSETS_RESV2
+static_assert(sizeof(struct io_sqring_offsets) == sizeof(struct_io_sqring_offsets),
+      "struct io_sqring_offsets size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct io_sqring_offsets) <= offsetof(struct_io_sqring_offsets, resv2),
+"struct io_sqring_offsets size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_IO_SQRING_OFFSETS_RESV2 */
+#endif /* HAVE_STRUCT_IO_SQRING_OFFSETS */
+
+#ifdef HAVE_STRUCT_IO_CQRING_OFFSETS
+# ifdef HAVE_STRUCT_IO_CQRING_OFFSETS_CQES
+static_assert(sizeof(struct io_cqring_offsets) == sizeof(struct_io_cqring_offsets),
+      "struct io_cqring_offsets size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct io_cqring_offsets) <= offsetof(struct_io_cqring_offsets, cqes),
+"struct io_cqring_offsets size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_IO_CQRING_OFFSETS_CQES */
+#endif /* HAVE_STRUCT_IO_CQRING_OFFSETS */
+
+#ifdef HAVE_STRUCT_IO_URING_PARAMS
+# ifdef HAVE_STRUCT_IO_URING_PARAMS_CQ_OFF
+static_assert(sizeof(struct io_uring_params) == sizeof(struct_io_uring_params),
+      "struct io_uring_params size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct io_uring_params) <= offsetof(struct_io_uring_params, cq_off),
+"struct io_uring_params size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_IO_URING_PARAMS_CQ_OFF */
+#endif /* HAVE_STRUCT_IO_URING_PARAMS */
+
+#ifdef HAVE_STRUCT_IO_URING_FILES_UPDATE
+# ifdef HAVE_STRUCT_IO_URING_FILES_UPDATE_FDS
+static_assert(sizeof(struct io_uring_files_update) == sizeof(struct_io_uring_files_update),
+      "struct io_uring_files_update size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct io_uring_files_update) <= offsetof(struct_io_uring_files_update, fds),
+"struct io_uring_files_update size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_IO_URING_FILES_UPDATE_FDS */
+#endif /* HAVE_STRUCT_IO_URING_FILES_UPDATE */
+
+#ifdef HAVE_STRUCT_IO_URING_PROBE_OP
+# ifdef HAVE_STRUCT_IO_URING_PROBE_OP_RESV2
+static_assert(sizeof(struct io_uring_probe_op) == sizeof(struct_io_uring_probe_op),
+      "struct io_uring_probe_op size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct io_uring_probe_op) <= offsetof(struct_io_uring_probe_op, resv2),
+"struct io_uring_probe_op size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_IO_URING_PROBE_OP_RESV2 */
+#endif /* HAVE_STRUCT_IO_URING_PROBE_OP */
+
+#ifdef HAVE_STRUCT_IO_URING_PROBE
+# ifdef HAVE_STRUCT_IO_URING_PROBE_OPS
+static_assert(sizeof(struct io_uring_probe) == sizeof(struct_io_uring_probe),
+      "struct io_uring_probe size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct io_uring_probe) <= offsetof(struct_io_uring_probe, ops),
+"struct io_uring_probe size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_IO_URING_PROBE_OPS */
+#endif /* HAVE_STRUCT_IO_URING_PROBE */
diff --git a/types/check-io_uring.m4 b/types/check-io_uring.m4
new file mode 100644 (file)
index 0000000..dac9565
--- /dev/null
@@ -0,0 +1,35 @@
+dnl Generated by ./types/gen.sh from ./types/io_uring.h; do not edit.
+AC_DEFUN([st_CHECK_TYPES_IO_URING],[
+AC_CHECK_HEADERS([linux/io_uring.h],[
+
+AC_CHECK_TYPES([struct io_sqring_offsets],
+[AC_CHECK_MEMBERS([struct io_sqring_offsets.resv2],,,[AC_INCLUDES_DEFAULT
+#include <linux/io_uring.h>])],,[AC_INCLUDES_DEFAULT
+#include <linux/io_uring.h>])
+
+AC_CHECK_TYPES([struct io_cqring_offsets],
+[AC_CHECK_MEMBERS([struct io_cqring_offsets.cqes],,,[AC_INCLUDES_DEFAULT
+#include <linux/io_uring.h>])],,[AC_INCLUDES_DEFAULT
+#include <linux/io_uring.h>])
+
+AC_CHECK_TYPES([struct io_uring_params],
+[AC_CHECK_MEMBERS([struct io_uring_params.cq_off],,,[AC_INCLUDES_DEFAULT
+#include <linux/io_uring.h>])],,[AC_INCLUDES_DEFAULT
+#include <linux/io_uring.h>])
+
+AC_CHECK_TYPES([struct io_uring_files_update],
+[AC_CHECK_MEMBERS([struct io_uring_files_update.fds],,,[AC_INCLUDES_DEFAULT
+#include <linux/io_uring.h>])],,[AC_INCLUDES_DEFAULT
+#include <linux/io_uring.h>])
+
+AC_CHECK_TYPES([struct io_uring_probe_op],
+[AC_CHECK_MEMBERS([struct io_uring_probe_op.resv2],,,[AC_INCLUDES_DEFAULT
+#include <linux/io_uring.h>])],,[AC_INCLUDES_DEFAULT
+#include <linux/io_uring.h>])
+
+AC_CHECK_TYPES([struct io_uring_probe],
+[AC_CHECK_MEMBERS([struct io_uring_probe.ops],,,[AC_INCLUDES_DEFAULT
+#include <linux/io_uring.h>])],,[AC_INCLUDES_DEFAULT
+#include <linux/io_uring.h>])
+],[],[AC_INCLUDES_DEFAULT
+])])
diff --git a/types/check-loop.c b/types/check-loop.c
new file mode 100644 (file)
index 0000000..d25e715
--- /dev/null
@@ -0,0 +1,14 @@
+/* Generated by ./types/gen.sh from ./types/loop.h; do not edit. */
+#include "defs.h"
+#include "static_assert.h"
+#include "types/loop.h"
+
+#ifdef HAVE_STRUCT_LOOP_CONFIG
+# ifdef HAVE_STRUCT_LOOP_CONFIG___RESERVED
+static_assert(sizeof(struct loop_config) == sizeof(struct_loop_config),
+      "struct loop_config size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct loop_config) <= offsetof(struct_loop_config, __reserved),
+"struct loop_config size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_LOOP_CONFIG___RESERVED */
+#endif /* HAVE_STRUCT_LOOP_CONFIG */
diff --git a/types/check-loop.m4 b/types/check-loop.m4
new file mode 100644 (file)
index 0000000..47e9a6e
--- /dev/null
@@ -0,0 +1,12 @@
+dnl Generated by ./types/gen.sh from ./types/loop.h; do not edit.
+AC_DEFUN([st_CHECK_TYPES_LOOP],[
+AC_CHECK_HEADERS([linux/loop.h],[
+
+AC_CHECK_TYPES([struct loop_config],
+[AC_CHECK_MEMBERS([struct loop_config.__reserved],,,[AC_INCLUDES_DEFAULT
+#include <linux/ioctl.h>
+#include <linux/loop.h>])],,[AC_INCLUDES_DEFAULT
+#include <linux/ioctl.h>
+#include <linux/loop.h>])
+],[],[AC_INCLUDES_DEFAULT
+#include <linux/ioctl.h>])])
diff --git a/types/check-openat2.c b/types/check-openat2.c
new file mode 100644 (file)
index 0000000..282939c
--- /dev/null
@@ -0,0 +1,14 @@
+/* Generated by ./types/gen.sh from ./types/openat2.h; do not edit. */
+#include "defs.h"
+#include "static_assert.h"
+#include "types/openat2.h"
+
+#ifdef HAVE_STRUCT_OPEN_HOW
+# ifdef HAVE_STRUCT_OPEN_HOW_RESOLVE
+static_assert(sizeof(struct open_how) == sizeof(struct_open_how),
+      "struct open_how size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct open_how) <= offsetof(struct_open_how, resolve),
+"struct open_how size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_OPEN_HOW_RESOLVE */
+#endif /* HAVE_STRUCT_OPEN_HOW */
diff --git a/types/check-openat2.m4 b/types/check-openat2.m4
new file mode 100644 (file)
index 0000000..19bebdc
--- /dev/null
@@ -0,0 +1,10 @@
+dnl Generated by ./types/gen.sh from ./types/openat2.h; do not edit.
+AC_DEFUN([st_CHECK_TYPES_OPENAT2],[
+AC_CHECK_HEADERS([linux/openat2.h],[
+
+AC_CHECK_TYPES([struct open_how],
+[AC_CHECK_MEMBERS([struct open_how.resolve],,,[AC_INCLUDES_DEFAULT
+#include <linux/openat2.h>])],,[AC_INCLUDES_DEFAULT
+#include <linux/openat2.h>])
+],[],[AC_INCLUDES_DEFAULT
+])])
diff --git a/types/check-rtnl_link.c b/types/check-rtnl_link.c
new file mode 100644 (file)
index 0000000..bed9a8b
--- /dev/null
@@ -0,0 +1,44 @@
+/* Generated by ./types/gen.sh from ./types/rtnl_link.h; do not edit. */
+#include "defs.h"
+#include "static_assert.h"
+#include "types/rtnl_link.h"
+
+#ifdef HAVE_STRUCT_RTNL_LINK_STATS
+# ifdef HAVE_STRUCT_RTNL_LINK_STATS_RX_NOHANDLER
+static_assert(sizeof(struct rtnl_link_stats) == sizeof(struct_rtnl_link_stats),
+      "struct rtnl_link_stats size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct rtnl_link_stats) <= offsetof(struct_rtnl_link_stats, rx_nohandler),
+"struct rtnl_link_stats size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_RTNL_LINK_STATS_RX_NOHANDLER */
+#endif /* HAVE_STRUCT_RTNL_LINK_STATS */
+
+#ifdef HAVE_STRUCT_RTNL_LINK_STATS64
+# ifdef HAVE_STRUCT_RTNL_LINK_STATS64_RX_NOHANDLER
+static_assert(sizeof(struct rtnl_link_stats64) == sizeof(struct_rtnl_link_stats64),
+      "struct rtnl_link_stats64 size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct rtnl_link_stats64) <= offsetof(struct_rtnl_link_stats64, rx_nohandler),
+"struct rtnl_link_stats64 size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_RTNL_LINK_STATS64_RX_NOHANDLER */
+#endif /* HAVE_STRUCT_RTNL_LINK_STATS64 */
+
+#ifdef HAVE_STRUCT_IFLA_BRIDGE_ID
+# ifdef HAVE_STRUCT_IFLA_BRIDGE_ID_ADDR
+static_assert(sizeof(struct ifla_bridge_id) == sizeof(struct_ifla_bridge_id),
+      "struct ifla_bridge_id size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct ifla_bridge_id) <= offsetof(struct_ifla_bridge_id, addr),
+"struct ifla_bridge_id size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_IFLA_BRIDGE_ID_ADDR */
+#endif /* HAVE_STRUCT_IFLA_BRIDGE_ID */
+
+#ifdef HAVE_STRUCT_IFLA_PORT_VSI
+# ifdef HAVE_STRUCT_IFLA_PORT_VSI_PAD
+static_assert(sizeof(struct ifla_port_vsi) == sizeof(struct_ifla_port_vsi),
+      "struct ifla_port_vsi size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct ifla_port_vsi) <= offsetof(struct_ifla_port_vsi, pad),
+"struct ifla_port_vsi size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_IFLA_PORT_VSI_PAD */
+#endif /* HAVE_STRUCT_IFLA_PORT_VSI */
diff --git a/types/check-rtnl_link.m4 b/types/check-rtnl_link.m4
new file mode 100644 (file)
index 0000000..47c7cd6
--- /dev/null
@@ -0,0 +1,33 @@
+dnl Generated by ./types/gen.sh from ./types/rtnl_link.h; do not edit.
+AC_DEFUN([st_CHECK_TYPES_RTNL_LINK],[
+AC_CHECK_HEADERS([linux/rtnetlink.h],[
+
+AC_CHECK_TYPES([struct rtnl_link_stats],
+[AC_CHECK_MEMBERS([struct rtnl_link_stats.rx_nohandler],,,[AC_INCLUDES_DEFAULT
+#include "$srcdir/netlink.h"
+#include <linux/rtnetlink.h>])],,[AC_INCLUDES_DEFAULT
+#include "$srcdir/netlink.h"
+#include <linux/rtnetlink.h>])
+
+AC_CHECK_TYPES([struct rtnl_link_stats64],
+[AC_CHECK_MEMBERS([struct rtnl_link_stats64.rx_nohandler],,,[AC_INCLUDES_DEFAULT
+#include "$srcdir/netlink.h"
+#include <linux/rtnetlink.h>])],,[AC_INCLUDES_DEFAULT
+#include "$srcdir/netlink.h"
+#include <linux/rtnetlink.h>])
+
+AC_CHECK_TYPES([struct ifla_bridge_id],
+[AC_CHECK_MEMBERS([struct ifla_bridge_id.addr],,,[AC_INCLUDES_DEFAULT
+#include "$srcdir/netlink.h"
+#include <linux/rtnetlink.h>])],,[AC_INCLUDES_DEFAULT
+#include "$srcdir/netlink.h"
+#include <linux/rtnetlink.h>])
+
+AC_CHECK_TYPES([struct ifla_port_vsi],
+[AC_CHECK_MEMBERS([struct ifla_port_vsi.pad],,,[AC_INCLUDES_DEFAULT
+#include "$srcdir/netlink.h"
+#include <linux/rtnetlink.h>])],,[AC_INCLUDES_DEFAULT
+#include "$srcdir/netlink.h"
+#include <linux/rtnetlink.h>])
+],[],[AC_INCLUDES_DEFAULT
+#include "$srcdir/netlink.h"])])
diff --git a/types/check-rtnl_mdb.c b/types/check-rtnl_mdb.c
new file mode 100644 (file)
index 0000000..3f11b41
--- /dev/null
@@ -0,0 +1,24 @@
+/* Generated by ./types/gen.sh from ./types/rtnl_mdb.h; do not edit. */
+#include "defs.h"
+#include "static_assert.h"
+#include "types/rtnl_mdb.h"
+
+#ifdef HAVE_STRUCT_BR_PORT_MSG
+# ifdef HAVE_STRUCT_BR_PORT_MSG_IFINDEX
+static_assert(sizeof(struct br_port_msg) == sizeof(struct_br_port_msg),
+      "struct br_port_msg size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct br_port_msg) <= offsetof(struct_br_port_msg, ifindex),
+"struct br_port_msg size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_BR_PORT_MSG_IFINDEX */
+#endif /* HAVE_STRUCT_BR_PORT_MSG */
+
+#ifdef HAVE_STRUCT_BR_MDB_ENTRY
+# ifdef HAVE_STRUCT_BR_MDB_ENTRY_ADDR
+static_assert(sizeof(struct br_mdb_entry) == sizeof(struct_br_mdb_entry),
+      "struct br_mdb_entry size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct br_mdb_entry) <= offsetof(struct_br_mdb_entry, addr),
+"struct br_mdb_entry size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_BR_MDB_ENTRY_ADDR */
+#endif /* HAVE_STRUCT_BR_MDB_ENTRY */
diff --git a/types/check-rtnl_mdb.m4 b/types/check-rtnl_mdb.m4
new file mode 100644 (file)
index 0000000..8f14836
--- /dev/null
@@ -0,0 +1,19 @@
+dnl Generated by ./types/gen.sh from ./types/rtnl_mdb.h; do not edit.
+AC_DEFUN([st_CHECK_TYPES_RTNL_MDB],[
+AC_CHECK_HEADERS([linux/if_bridge.h],[
+
+AC_CHECK_TYPES([struct br_port_msg],
+[AC_CHECK_MEMBERS([struct br_port_msg.ifindex],,,[AC_INCLUDES_DEFAULT
+#include <netinet/in.h>
+#include <linux/if_bridge.h>])],,[AC_INCLUDES_DEFAULT
+#include <netinet/in.h>
+#include <linux/if_bridge.h>])
+
+AC_CHECK_TYPES([struct br_mdb_entry],
+[AC_CHECK_MEMBERS([struct br_mdb_entry.addr],,,[AC_INCLUDES_DEFAULT
+#include <netinet/in.h>
+#include <linux/if_bridge.h>])],,[AC_INCLUDES_DEFAULT
+#include <netinet/in.h>
+#include <linux/if_bridge.h>])
+],[],[AC_INCLUDES_DEFAULT
+#include <netinet/in.h>])])
diff --git a/types/check-rtnl_neightbl.c b/types/check-rtnl_neightbl.c
new file mode 100644 (file)
index 0000000..87ae2b8
--- /dev/null
@@ -0,0 +1,24 @@
+/* Generated by ./types/gen.sh from ./types/rtnl_neightbl.h; do not edit. */
+#include "defs.h"
+#include "static_assert.h"
+#include "types/rtnl_neightbl.h"
+
+#ifdef HAVE_STRUCT_NDT_CONFIG
+# ifdef HAVE_STRUCT_NDT_CONFIG_NDTC_PROXY_QLEN
+static_assert(sizeof(struct ndt_config) == sizeof(struct_ndt_config),
+      "struct ndt_config size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct ndt_config) <= offsetof(struct_ndt_config, ndtc_proxy_qlen),
+"struct ndt_config size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_NDT_CONFIG_NDTC_PROXY_QLEN */
+#endif /* HAVE_STRUCT_NDT_CONFIG */
+
+#ifdef HAVE_STRUCT_NDT_STATS
+# ifdef HAVE_STRUCT_NDT_STATS_NDTS_TABLE_FULLS
+static_assert(sizeof(struct ndt_stats) == sizeof(struct_ndt_stats),
+      "struct ndt_stats size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct ndt_stats) <= offsetof(struct_ndt_stats, ndts_table_fulls),
+"struct ndt_stats size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_NDT_STATS_NDTS_TABLE_FULLS */
+#endif /* HAVE_STRUCT_NDT_STATS */
diff --git a/types/check-rtnl_neightbl.m4 b/types/check-rtnl_neightbl.m4
new file mode 100644 (file)
index 0000000..c0b6bf2
--- /dev/null
@@ -0,0 +1,19 @@
+dnl Generated by ./types/gen.sh from ./types/rtnl_neightbl.h; do not edit.
+AC_DEFUN([st_CHECK_TYPES_RTNL_NEIGHTBL],[
+AC_CHECK_HEADERS([linux/rtnetlink.h],[
+
+AC_CHECK_TYPES([struct ndt_config],
+[AC_CHECK_MEMBERS([struct ndt_config.ndtc_proxy_qlen],,,[AC_INCLUDES_DEFAULT
+#include "$srcdir/netlink.h"
+#include <linux/rtnetlink.h>])],,[AC_INCLUDES_DEFAULT
+#include "$srcdir/netlink.h"
+#include <linux/rtnetlink.h>])
+
+AC_CHECK_TYPES([struct ndt_stats],
+[AC_CHECK_MEMBERS([struct ndt_stats.ndts_table_fulls],,,[AC_INCLUDES_DEFAULT
+#include "$srcdir/netlink.h"
+#include <linux/rtnetlink.h>])],,[AC_INCLUDES_DEFAULT
+#include "$srcdir/netlink.h"
+#include <linux/rtnetlink.h>])
+],[],[AC_INCLUDES_DEFAULT
+#include "$srcdir/netlink.h"])])
diff --git a/types/check-rtnl_route.c b/types/check-rtnl_route.c
new file mode 100644 (file)
index 0000000..afd9db7
--- /dev/null
@@ -0,0 +1,24 @@
+/* Generated by ./types/gen.sh from ./types/rtnl_route.h; do not edit. */
+#include "defs.h"
+#include "static_assert.h"
+#include "types/rtnl_route.h"
+
+#ifdef HAVE_STRUCT_RTA_MFC_STATS
+# ifdef HAVE_STRUCT_RTA_MFC_STATS_MFCS_WRONG_IF
+static_assert(sizeof(struct rta_mfc_stats) == sizeof(struct_rta_mfc_stats),
+      "struct rta_mfc_stats size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct rta_mfc_stats) <= offsetof(struct_rta_mfc_stats, mfcs_wrong_if),
+"struct rta_mfc_stats size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_RTA_MFC_STATS_MFCS_WRONG_IF */
+#endif /* HAVE_STRUCT_RTA_MFC_STATS */
+
+#ifdef HAVE_STRUCT_RTVIA
+# ifdef HAVE_STRUCT_RTVIA_RTVIA_ADDR
+static_assert(sizeof(struct rtvia) == sizeof(struct_rtvia),
+      "struct rtvia size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct rtvia) <= offsetof(struct_rtvia, rtvia_addr),
+"struct rtvia size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_RTVIA_RTVIA_ADDR */
+#endif /* HAVE_STRUCT_RTVIA */
diff --git a/types/check-rtnl_route.m4 b/types/check-rtnl_route.m4
new file mode 100644 (file)
index 0000000..21a2058
--- /dev/null
@@ -0,0 +1,19 @@
+dnl Generated by ./types/gen.sh from ./types/rtnl_route.h; do not edit.
+AC_DEFUN([st_CHECK_TYPES_RTNL_ROUTE],[
+AC_CHECK_HEADERS([linux/rtnetlink.h],[
+
+AC_CHECK_TYPES([struct rta_mfc_stats],
+[AC_CHECK_MEMBERS([struct rta_mfc_stats.mfcs_wrong_if],,,[AC_INCLUDES_DEFAULT
+#include "$srcdir/netlink.h"
+#include <linux/rtnetlink.h>])],,[AC_INCLUDES_DEFAULT
+#include "$srcdir/netlink.h"
+#include <linux/rtnetlink.h>])
+
+AC_CHECK_TYPES([struct rtvia],
+[AC_CHECK_MEMBERS([struct rtvia.rtvia_addr],,,[AC_INCLUDES_DEFAULT
+#include "$srcdir/netlink.h"
+#include <linux/rtnetlink.h>])],,[AC_INCLUDES_DEFAULT
+#include "$srcdir/netlink.h"
+#include <linux/rtnetlink.h>])
+],[],[AC_INCLUDES_DEFAULT
+#include "$srcdir/netlink.h"])])
diff --git a/types/check-tee.c b/types/check-tee.c
new file mode 100644 (file)
index 0000000..ca0cc15
--- /dev/null
@@ -0,0 +1,114 @@
+/* Generated by ./types/gen.sh from ./types/tee.h; do not edit. */
+#include "defs.h"
+#include "static_assert.h"
+#include "types/tee.h"
+
+#ifdef HAVE_STRUCT_TEE_IOCTL_BUF_DATA
+# ifdef HAVE_STRUCT_TEE_IOCTL_BUF_DATA_BUF_LEN
+static_assert(sizeof(struct tee_ioctl_buf_data) == sizeof(struct_tee_ioctl_buf_data),
+      "struct tee_ioctl_buf_data size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct tee_ioctl_buf_data) <= offsetof(struct_tee_ioctl_buf_data, buf_len),
+"struct tee_ioctl_buf_data size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_TEE_IOCTL_BUF_DATA_BUF_LEN */
+#endif /* HAVE_STRUCT_TEE_IOCTL_BUF_DATA */
+
+#ifdef HAVE_STRUCT_TEE_IOCTL_CANCEL_ARG
+# ifdef HAVE_STRUCT_TEE_IOCTL_CANCEL_ARG_SESSION
+static_assert(sizeof(struct tee_ioctl_cancel_arg) == sizeof(struct_tee_ioctl_cancel_arg),
+      "struct tee_ioctl_cancel_arg size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct tee_ioctl_cancel_arg) <= offsetof(struct_tee_ioctl_cancel_arg, session),
+"struct tee_ioctl_cancel_arg size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_TEE_IOCTL_CANCEL_ARG_SESSION */
+#endif /* HAVE_STRUCT_TEE_IOCTL_CANCEL_ARG */
+
+#ifdef HAVE_STRUCT_TEE_IOCTL_CLOSE_SESSION_ARG
+# ifdef HAVE_STRUCT_TEE_IOCTL_CLOSE_SESSION_ARG_SESSION
+static_assert(sizeof(struct tee_ioctl_close_session_arg) == sizeof(struct_tee_ioctl_close_session_arg),
+      "struct tee_ioctl_close_session_arg size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct tee_ioctl_close_session_arg) <= offsetof(struct_tee_ioctl_close_session_arg, session),
+"struct tee_ioctl_close_session_arg size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_TEE_IOCTL_CLOSE_SESSION_ARG_SESSION */
+#endif /* HAVE_STRUCT_TEE_IOCTL_CLOSE_SESSION_ARG */
+
+#ifdef HAVE_STRUCT_TEE_IOCTL_SHM_ALLOC_DATA
+# ifdef HAVE_STRUCT_TEE_IOCTL_SHM_ALLOC_DATA_ID
+static_assert(sizeof(struct tee_ioctl_shm_alloc_data) == sizeof(struct_tee_ioctl_shm_alloc_data),
+      "struct tee_ioctl_shm_alloc_data size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct tee_ioctl_shm_alloc_data) <= offsetof(struct_tee_ioctl_shm_alloc_data, id),
+"struct tee_ioctl_shm_alloc_data size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_TEE_IOCTL_SHM_ALLOC_DATA_ID */
+#endif /* HAVE_STRUCT_TEE_IOCTL_SHM_ALLOC_DATA */
+
+#ifdef HAVE_STRUCT_TEE_IOCTL_SHM_REGISTER_DATA
+# ifdef HAVE_STRUCT_TEE_IOCTL_SHM_REGISTER_DATA_ID
+static_assert(sizeof(struct tee_ioctl_shm_register_data) == sizeof(struct_tee_ioctl_shm_register_data),
+      "struct tee_ioctl_shm_register_data size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct tee_ioctl_shm_register_data) <= offsetof(struct_tee_ioctl_shm_register_data, id),
+"struct tee_ioctl_shm_register_data size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_TEE_IOCTL_SHM_REGISTER_DATA_ID */
+#endif /* HAVE_STRUCT_TEE_IOCTL_SHM_REGISTER_DATA */
+
+#ifdef HAVE_STRUCT_TEE_IOCTL_VERSION_DATA
+# ifdef HAVE_STRUCT_TEE_IOCTL_VERSION_DATA_GEN_CAPS
+static_assert(sizeof(struct tee_ioctl_version_data) == sizeof(struct_tee_ioctl_version_data),
+      "struct tee_ioctl_version_data size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct tee_ioctl_version_data) <= offsetof(struct_tee_ioctl_version_data, gen_caps),
+"struct tee_ioctl_version_data size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_TEE_IOCTL_VERSION_DATA_GEN_CAPS */
+#endif /* HAVE_STRUCT_TEE_IOCTL_VERSION_DATA */
+
+#ifdef HAVE_STRUCT_TEE_IOCTL_PARAM
+# ifdef HAVE_STRUCT_TEE_IOCTL_PARAM_C
+static_assert(sizeof(struct tee_ioctl_param) == sizeof(struct_tee_ioctl_param),
+      "struct tee_ioctl_param size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct tee_ioctl_param) <= offsetof(struct_tee_ioctl_param, c),
+"struct tee_ioctl_param size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_TEE_IOCTL_PARAM_C */
+#endif /* HAVE_STRUCT_TEE_IOCTL_PARAM */
+
+#ifdef HAVE_STRUCT_TEE_IOCTL_INVOKE_ARG
+# ifdef HAVE_STRUCT_TEE_IOCTL_INVOKE_ARG_PARAMS
+static_assert(sizeof(struct tee_ioctl_invoke_arg) == sizeof(struct_tee_ioctl_invoke_arg),
+      "struct tee_ioctl_invoke_arg size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct tee_ioctl_invoke_arg) <= offsetof(struct_tee_ioctl_invoke_arg, params),
+"struct tee_ioctl_invoke_arg size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_TEE_IOCTL_INVOKE_ARG_PARAMS */
+#endif /* HAVE_STRUCT_TEE_IOCTL_INVOKE_ARG */
+
+#ifdef HAVE_STRUCT_TEE_IOCL_SUPP_RECV_ARG
+# ifdef HAVE_STRUCT_TEE_IOCL_SUPP_RECV_ARG_PARAMS
+static_assert(sizeof(struct tee_iocl_supp_recv_arg) == sizeof(struct_tee_iocl_supp_recv_arg),
+      "struct tee_iocl_supp_recv_arg size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct tee_iocl_supp_recv_arg) <= offsetof(struct_tee_iocl_supp_recv_arg, params),
+"struct tee_iocl_supp_recv_arg size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_TEE_IOCL_SUPP_RECV_ARG_PARAMS */
+#endif /* HAVE_STRUCT_TEE_IOCL_SUPP_RECV_ARG */
+
+#ifdef HAVE_STRUCT_TEE_IOCL_SUPP_SEND_ARG
+# ifdef HAVE_STRUCT_TEE_IOCL_SUPP_SEND_ARG_PARAMS
+static_assert(sizeof(struct tee_iocl_supp_send_arg) == sizeof(struct_tee_iocl_supp_send_arg),
+      "struct tee_iocl_supp_send_arg size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct tee_iocl_supp_send_arg) <= offsetof(struct_tee_iocl_supp_send_arg, params),
+"struct tee_iocl_supp_send_arg size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_TEE_IOCL_SUPP_SEND_ARG_PARAMS */
+#endif /* HAVE_STRUCT_TEE_IOCL_SUPP_SEND_ARG */
+
+#ifdef HAVE_STRUCT_TEE_IOCTL_OPEN_SESSION_ARG
+# ifdef HAVE_STRUCT_TEE_IOCTL_OPEN_SESSION_ARG_PARAMS
+static_assert(sizeof(struct tee_ioctl_open_session_arg) == sizeof(struct_tee_ioctl_open_session_arg),
+      "struct tee_ioctl_open_session_arg size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct tee_ioctl_open_session_arg) <= offsetof(struct_tee_ioctl_open_session_arg, params),
+"struct tee_ioctl_open_session_arg size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_TEE_IOCTL_OPEN_SESSION_ARG_PARAMS */
+#endif /* HAVE_STRUCT_TEE_IOCTL_OPEN_SESSION_ARG */
diff --git a/types/check-tee.m4 b/types/check-tee.m4
new file mode 100644 (file)
index 0000000..c297a0b
--- /dev/null
@@ -0,0 +1,82 @@
+dnl Generated by ./types/gen.sh from ./types/tee.h; do not edit.
+AC_DEFUN([st_CHECK_TYPES_TEE],[
+AC_CHECK_HEADERS([linux/tee.h],[
+
+AC_CHECK_TYPES([struct tee_ioctl_buf_data],
+[AC_CHECK_MEMBERS([struct tee_ioctl_buf_data.buf_len],,,[AC_INCLUDES_DEFAULT
+#include <linux/ioctl.h>
+#include <linux/tee.h>])],,[AC_INCLUDES_DEFAULT
+#include <linux/ioctl.h>
+#include <linux/tee.h>])
+
+AC_CHECK_TYPES([struct tee_ioctl_cancel_arg],
+[AC_CHECK_MEMBERS([struct tee_ioctl_cancel_arg.session],,,[AC_INCLUDES_DEFAULT
+#include <linux/ioctl.h>
+#include <linux/tee.h>])],,[AC_INCLUDES_DEFAULT
+#include <linux/ioctl.h>
+#include <linux/tee.h>])
+
+AC_CHECK_TYPES([struct tee_ioctl_close_session_arg],
+[AC_CHECK_MEMBERS([struct tee_ioctl_close_session_arg.session],,,[AC_INCLUDES_DEFAULT
+#include <linux/ioctl.h>
+#include <linux/tee.h>])],,[AC_INCLUDES_DEFAULT
+#include <linux/ioctl.h>
+#include <linux/tee.h>])
+
+AC_CHECK_TYPES([struct tee_ioctl_shm_alloc_data],
+[AC_CHECK_MEMBERS([struct tee_ioctl_shm_alloc_data.id],,,[AC_INCLUDES_DEFAULT
+#include <linux/ioctl.h>
+#include <linux/tee.h>])],,[AC_INCLUDES_DEFAULT
+#include <linux/ioctl.h>
+#include <linux/tee.h>])
+
+AC_CHECK_TYPES([struct tee_ioctl_shm_register_data],
+[AC_CHECK_MEMBERS([struct tee_ioctl_shm_register_data.id],,,[AC_INCLUDES_DEFAULT
+#include <linux/ioctl.h>
+#include <linux/tee.h>])],,[AC_INCLUDES_DEFAULT
+#include <linux/ioctl.h>
+#include <linux/tee.h>])
+
+AC_CHECK_TYPES([struct tee_ioctl_version_data],
+[AC_CHECK_MEMBERS([struct tee_ioctl_version_data.gen_caps],,,[AC_INCLUDES_DEFAULT
+#include <linux/ioctl.h>
+#include <linux/tee.h>])],,[AC_INCLUDES_DEFAULT
+#include <linux/ioctl.h>
+#include <linux/tee.h>])
+
+AC_CHECK_TYPES([struct tee_ioctl_param],
+[AC_CHECK_MEMBERS([struct tee_ioctl_param.c],,,[AC_INCLUDES_DEFAULT
+#include <linux/ioctl.h>
+#include <linux/tee.h>])],,[AC_INCLUDES_DEFAULT
+#include <linux/ioctl.h>
+#include <linux/tee.h>])
+
+AC_CHECK_TYPES([struct tee_ioctl_invoke_arg],
+[AC_CHECK_MEMBERS([struct tee_ioctl_invoke_arg.params],,,[AC_INCLUDES_DEFAULT
+#include <linux/ioctl.h>
+#include <linux/tee.h>])],,[AC_INCLUDES_DEFAULT
+#include <linux/ioctl.h>
+#include <linux/tee.h>])
+
+AC_CHECK_TYPES([struct tee_iocl_supp_recv_arg],
+[AC_CHECK_MEMBERS([struct tee_iocl_supp_recv_arg.params],,,[AC_INCLUDES_DEFAULT
+#include <linux/ioctl.h>
+#include <linux/tee.h>])],,[AC_INCLUDES_DEFAULT
+#include <linux/ioctl.h>
+#include <linux/tee.h>])
+
+AC_CHECK_TYPES([struct tee_iocl_supp_send_arg],
+[AC_CHECK_MEMBERS([struct tee_iocl_supp_send_arg.params],,,[AC_INCLUDES_DEFAULT
+#include <linux/ioctl.h>
+#include <linux/tee.h>])],,[AC_INCLUDES_DEFAULT
+#include <linux/ioctl.h>
+#include <linux/tee.h>])
+
+AC_CHECK_TYPES([struct tee_ioctl_open_session_arg],
+[AC_CHECK_MEMBERS([struct tee_ioctl_open_session_arg.params],,,[AC_INCLUDES_DEFAULT
+#include <linux/ioctl.h>
+#include <linux/tee.h>])],,[AC_INCLUDES_DEFAULT
+#include <linux/ioctl.h>
+#include <linux/tee.h>])
+],[],[AC_INCLUDES_DEFAULT
+#include <linux/ioctl.h>])])
diff --git a/types/check-v4l2.c b/types/check-v4l2.c
new file mode 100644 (file)
index 0000000..4df7c6a
--- /dev/null
@@ -0,0 +1,174 @@
+/* Generated by ./types/gen.sh from ./types/v4l2.h; do not edit. */
+#include "defs.h"
+#include "static_assert.h"
+#include "types/v4l2.h"
+
+#ifdef HAVE_STRUCT_V4L2_CAPABILITY
+# ifdef HAVE_STRUCT_V4L2_CAPABILITY_RESERVED
+static_assert(sizeof(struct v4l2_capability) == sizeof(struct_v4l2_capability),
+      "struct v4l2_capability size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct v4l2_capability) <= offsetof(struct_v4l2_capability, reserved),
+"struct v4l2_capability size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_V4L2_CAPABILITY_RESERVED */
+#endif /* HAVE_STRUCT_V4L2_CAPABILITY */
+
+#ifdef HAVE_STRUCT_V4L2_PIX_FORMAT
+# ifdef HAVE_STRUCT_V4L2_PIX_FORMAT_XFER_FUNC
+static_assert(sizeof(struct v4l2_pix_format) == sizeof(struct_v4l2_pix_format),
+      "struct v4l2_pix_format size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct v4l2_pix_format) <= offsetof(struct_v4l2_pix_format, xfer_func),
+"struct v4l2_pix_format size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_V4L2_PIX_FORMAT_XFER_FUNC */
+#endif /* HAVE_STRUCT_V4L2_PIX_FORMAT */
+
+#ifdef HAVE_STRUCT_V4L2_PLANE_PIX_FORMAT
+# ifdef HAVE_STRUCT_V4L2_PLANE_PIX_FORMAT_RESERVED
+static_assert(sizeof(struct v4l2_plane_pix_format) == sizeof(struct_v4l2_plane_pix_format),
+      "struct v4l2_plane_pix_format size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct v4l2_plane_pix_format) <= offsetof(struct_v4l2_plane_pix_format, reserved),
+"struct v4l2_plane_pix_format size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_V4L2_PLANE_PIX_FORMAT_RESERVED */
+#endif /* HAVE_STRUCT_V4L2_PLANE_PIX_FORMAT */
+
+#ifdef HAVE_STRUCT_V4L2_CLIP
+# ifdef HAVE_STRUCT_V4L2_CLIP_NEXT
+static_assert(sizeof(struct v4l2_clip) == sizeof(struct_v4l2_clip),
+      "struct v4l2_clip size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct v4l2_clip) <= offsetof(struct_v4l2_clip, next),
+"struct v4l2_clip size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_V4L2_CLIP_NEXT */
+#endif /* HAVE_STRUCT_V4L2_CLIP */
+
+#ifdef HAVE_STRUCT_V4L2_WINDOW
+# ifdef HAVE_STRUCT_V4L2_WINDOW_GLOBAL_ALPHA
+static_assert(sizeof(struct v4l2_window) == sizeof(struct_v4l2_window),
+      "struct v4l2_window size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct v4l2_window) <= offsetof(struct_v4l2_window, global_alpha),
+"struct v4l2_window size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_V4L2_WINDOW_GLOBAL_ALPHA */
+#endif /* HAVE_STRUCT_V4L2_WINDOW */
+
+#ifdef HAVE_STRUCT_V4L2_VBI_FORMAT
+# ifdef HAVE_STRUCT_V4L2_VBI_FORMAT_RESERVED
+static_assert(sizeof(struct v4l2_vbi_format) == sizeof(struct_v4l2_vbi_format),
+      "struct v4l2_vbi_format size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct v4l2_vbi_format) <= offsetof(struct_v4l2_vbi_format, reserved),
+"struct v4l2_vbi_format size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_V4L2_VBI_FORMAT_RESERVED */
+#endif /* HAVE_STRUCT_V4L2_VBI_FORMAT */
+
+#ifdef HAVE_STRUCT_V4L2_SLICED_VBI_FORMAT
+# ifdef HAVE_STRUCT_V4L2_SLICED_VBI_FORMAT_RESERVED
+static_assert(sizeof(struct v4l2_sliced_vbi_format) == sizeof(struct_v4l2_sliced_vbi_format),
+      "struct v4l2_sliced_vbi_format size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct v4l2_sliced_vbi_format) <= offsetof(struct_v4l2_sliced_vbi_format, reserved),
+"struct v4l2_sliced_vbi_format size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_V4L2_SLICED_VBI_FORMAT_RESERVED */
+#endif /* HAVE_STRUCT_V4L2_SLICED_VBI_FORMAT */
+
+#ifdef HAVE_STRUCT_V4L2_SLICED_VBI_CAP
+# ifdef HAVE_STRUCT_V4L2_SLICED_VBI_CAP_RESERVED
+static_assert(sizeof(struct v4l2_sliced_vbi_cap) == sizeof(struct_v4l2_sliced_vbi_cap),
+      "struct v4l2_sliced_vbi_cap size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct v4l2_sliced_vbi_cap) <= offsetof(struct_v4l2_sliced_vbi_cap, reserved),
+"struct v4l2_sliced_vbi_cap size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_V4L2_SLICED_VBI_CAP_RESERVED */
+#endif /* HAVE_STRUCT_V4L2_SLICED_VBI_CAP */
+
+#ifdef HAVE_STRUCT_V4L2_FORMAT
+# ifdef HAVE_STRUCT_V4L2_FORMAT_FMT
+static_assert(sizeof(struct v4l2_format) == sizeof(struct_v4l2_format),
+      "struct v4l2_format size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct v4l2_format) <= offsetof(struct_v4l2_format, fmt),
+"struct v4l2_format size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_V4L2_FORMAT_FMT */
+#endif /* HAVE_STRUCT_V4L2_FORMAT */
+
+#ifdef HAVE_STRUCT_V4L2_AREA
+# ifdef HAVE_STRUCT_V4L2_AREA_HEIGHT
+static_assert(sizeof(struct v4l2_area) == sizeof(struct_v4l2_area),
+      "struct v4l2_area size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct v4l2_area) <= offsetof(struct_v4l2_area, height),
+"struct v4l2_area size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_V4L2_AREA_HEIGHT */
+#endif /* HAVE_STRUCT_V4L2_AREA */
+
+#ifdef HAVE_STRUCT_V4L2_EXT_CONTROLS
+# ifdef HAVE_STRUCT_V4L2_EXT_CONTROLS_CONTROLS
+static_assert(sizeof(struct v4l2_ext_controls) == sizeof(struct_v4l2_ext_controls),
+      "struct v4l2_ext_controls size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct v4l2_ext_controls) <= offsetof(struct_v4l2_ext_controls, controls),
+"struct v4l2_ext_controls size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_V4L2_EXT_CONTROLS_CONTROLS */
+#endif /* HAVE_STRUCT_V4L2_EXT_CONTROLS */
+
+#ifdef HAVE_STRUCT_V4L2_FRMSIZE_DISCRETE
+# ifdef HAVE_STRUCT_V4L2_FRMSIZE_DISCRETE_HEIGHT
+static_assert(sizeof(struct v4l2_frmsize_discrete) == sizeof(struct_v4l2_frmsize_discrete),
+      "struct v4l2_frmsize_discrete size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct v4l2_frmsize_discrete) <= offsetof(struct_v4l2_frmsize_discrete, height),
+"struct v4l2_frmsize_discrete size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_V4L2_FRMSIZE_DISCRETE_HEIGHT */
+#endif /* HAVE_STRUCT_V4L2_FRMSIZE_DISCRETE */
+
+#ifdef HAVE_STRUCT_V4L2_FRMSIZE_STEPWISE
+# ifdef HAVE_STRUCT_V4L2_FRMSIZE_STEPWISE_STEP_HEIGHT
+static_assert(sizeof(struct v4l2_frmsize_stepwise) == sizeof(struct_v4l2_frmsize_stepwise),
+      "struct v4l2_frmsize_stepwise size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct v4l2_frmsize_stepwise) <= offsetof(struct_v4l2_frmsize_stepwise, step_height),
+"struct v4l2_frmsize_stepwise size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_V4L2_FRMSIZE_STEPWISE_STEP_HEIGHT */
+#endif /* HAVE_STRUCT_V4L2_FRMSIZE_STEPWISE */
+
+#ifdef HAVE_STRUCT_V4L2_FRMSIZEENUM
+# ifdef HAVE_STRUCT_V4L2_FRMSIZEENUM_RESERVED
+static_assert(sizeof(struct v4l2_frmsizeenum) == sizeof(struct_v4l2_frmsizeenum),
+      "struct v4l2_frmsizeenum size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct v4l2_frmsizeenum) <= offsetof(struct_v4l2_frmsizeenum, reserved),
+"struct v4l2_frmsizeenum size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_V4L2_FRMSIZEENUM_RESERVED */
+#endif /* HAVE_STRUCT_V4L2_FRMSIZEENUM */
+
+#ifdef HAVE_STRUCT_V4L2_FRMIVAL_STEPWISE
+# ifdef HAVE_STRUCT_V4L2_FRMIVAL_STEPWISE_STEP
+static_assert(sizeof(struct v4l2_frmival_stepwise) == sizeof(struct_v4l2_frmival_stepwise),
+      "struct v4l2_frmival_stepwise size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct v4l2_frmival_stepwise) <= offsetof(struct_v4l2_frmival_stepwise, step),
+"struct v4l2_frmival_stepwise size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_V4L2_FRMIVAL_STEPWISE_STEP */
+#endif /* HAVE_STRUCT_V4L2_FRMIVAL_STEPWISE */
+
+#ifdef HAVE_STRUCT_V4L2_FRMIVALENUM
+# ifdef HAVE_STRUCT_V4L2_FRMIVALENUM_RESERVED
+static_assert(sizeof(struct v4l2_frmivalenum) == sizeof(struct_v4l2_frmivalenum),
+      "struct v4l2_frmivalenum size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct v4l2_frmivalenum) <= offsetof(struct_v4l2_frmivalenum, reserved),
+"struct v4l2_frmivalenum size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_V4L2_FRMIVALENUM_RESERVED */
+#endif /* HAVE_STRUCT_V4L2_FRMIVALENUM */
+
+#ifdef HAVE_STRUCT_V4L2_CREATE_BUFFERS
+# ifdef HAVE_STRUCT_V4L2_CREATE_BUFFERS_RESERVED
+static_assert(sizeof(struct v4l2_create_buffers) == sizeof(struct_v4l2_create_buffers),
+      "struct v4l2_create_buffers size mismatch, please update the decoder or fix the kernel");
+# else
+static_assert(sizeof(struct v4l2_create_buffers) <= offsetof(struct_v4l2_create_buffers, reserved),
+"struct v4l2_create_buffers size mismatch, please update the decoder or fix the kernel");
+# endif /* HAVE_STRUCT_V4L2_CREATE_BUFFERS_RESERVED */
+#endif /* HAVE_STRUCT_V4L2_CREATE_BUFFERS */
diff --git a/types/check-v4l2.m4 b/types/check-v4l2.m4
new file mode 100644 (file)
index 0000000..9798d51
--- /dev/null
@@ -0,0 +1,194 @@
+dnl Generated by ./types/gen.sh from ./types/v4l2.h; do not edit.
+AC_DEFUN([st_CHECK_TYPES_V4L2],[
+AC_CHECK_HEADERS([linux/videodev2.h],[
+
+AC_CHECK_TYPES([struct v4l2_capability],
+[AC_CHECK_MEMBERS([struct v4l2_capability.reserved],,,[AC_INCLUDES_DEFAULT
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>])],,[AC_INCLUDES_DEFAULT
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>])
+
+AC_CHECK_TYPES([struct v4l2_pix_format],
+[AC_CHECK_MEMBERS([struct v4l2_pix_format.xfer_func],,,[AC_INCLUDES_DEFAULT
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>])],,[AC_INCLUDES_DEFAULT
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>])
+
+AC_CHECK_TYPES([struct v4l2_plane_pix_format],
+[AC_CHECK_MEMBERS([struct v4l2_plane_pix_format.reserved],,,[AC_INCLUDES_DEFAULT
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>])],,[AC_INCLUDES_DEFAULT
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>])
+
+AC_CHECK_TYPES([struct v4l2_clip],
+[AC_CHECK_MEMBERS([struct v4l2_clip.next],,,[AC_INCLUDES_DEFAULT
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>])],,[AC_INCLUDES_DEFAULT
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>])
+
+AC_CHECK_TYPES([struct v4l2_window],
+[AC_CHECK_MEMBERS([struct v4l2_window.global_alpha],,,[AC_INCLUDES_DEFAULT
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>])],,[AC_INCLUDES_DEFAULT
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>])
+
+AC_CHECK_TYPES([struct v4l2_vbi_format],
+[AC_CHECK_MEMBERS([struct v4l2_vbi_format.reserved],,,[AC_INCLUDES_DEFAULT
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>])],,[AC_INCLUDES_DEFAULT
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>])
+
+AC_CHECK_TYPES([struct v4l2_sliced_vbi_format],
+[AC_CHECK_MEMBERS([struct v4l2_sliced_vbi_format.reserved],,,[AC_INCLUDES_DEFAULT
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>])],,[AC_INCLUDES_DEFAULT
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>])
+
+AC_CHECK_TYPES([struct v4l2_sliced_vbi_cap],
+[AC_CHECK_MEMBERS([struct v4l2_sliced_vbi_cap.reserved],,,[AC_INCLUDES_DEFAULT
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>])],,[AC_INCLUDES_DEFAULT
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>])
+
+AC_CHECK_TYPES([struct v4l2_format],
+[AC_CHECK_MEMBERS([struct v4l2_format.fmt],,,[AC_INCLUDES_DEFAULT
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>])],,[AC_INCLUDES_DEFAULT
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>])
+
+AC_CHECK_TYPES([struct v4l2_area],
+[AC_CHECK_MEMBERS([struct v4l2_area.height],,,[AC_INCLUDES_DEFAULT
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>])],,[AC_INCLUDES_DEFAULT
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>])
+
+AC_CHECK_TYPES([struct v4l2_ext_controls],
+[AC_CHECK_MEMBERS([struct v4l2_ext_controls.controls],,,[AC_INCLUDES_DEFAULT
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>])],,[AC_INCLUDES_DEFAULT
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>])
+
+AC_CHECK_TYPES([struct v4l2_frmsize_discrete],
+[AC_CHECK_MEMBERS([struct v4l2_frmsize_discrete.height],,,[AC_INCLUDES_DEFAULT
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>])],,[AC_INCLUDES_DEFAULT
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>])
+
+AC_CHECK_TYPES([struct v4l2_frmsize_stepwise],
+[AC_CHECK_MEMBERS([struct v4l2_frmsize_stepwise.step_height],,,[AC_INCLUDES_DEFAULT
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>])],,[AC_INCLUDES_DEFAULT
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>])
+
+AC_CHECK_TYPES([struct v4l2_frmsizeenum],
+[AC_CHECK_MEMBERS([struct v4l2_frmsizeenum.reserved],,,[AC_INCLUDES_DEFAULT
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>])],,[AC_INCLUDES_DEFAULT
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>])
+
+AC_CHECK_TYPES([struct v4l2_frmival_stepwise],
+[AC_CHECK_MEMBERS([struct v4l2_frmival_stepwise.step],,,[AC_INCLUDES_DEFAULT
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>])],,[AC_INCLUDES_DEFAULT
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>])
+
+AC_CHECK_TYPES([struct v4l2_frmivalenum],
+[AC_CHECK_MEMBERS([struct v4l2_frmivalenum.reserved],,,[AC_INCLUDES_DEFAULT
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>])],,[AC_INCLUDES_DEFAULT
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>])
+
+AC_CHECK_TYPES([struct v4l2_create_buffers],
+[AC_CHECK_MEMBERS([struct v4l2_create_buffers.reserved],,,[AC_INCLUDES_DEFAULT
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>])],,[AC_INCLUDES_DEFAULT
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>])
+],[],[AC_INCLUDES_DEFAULT
+#include <stdint.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>])])
diff --git a/types/cryptouser.h b/types/cryptouser.h
new file mode 100644 (file)
index 0000000..31aea9c
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 2019-2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#ifndef STRACE_TYPES_CRYPTOUSER_H
+# define STRACE_TYPES_CRYPTOUSER_H
+
+# ifdef HAVE_LINUX_CRYPTOUSER_H
+#  include <linux/cryptouser.h>
+# endif
+
+# ifndef CRYPTO_MAX_NAME
+#  define CRYPTO_MAX_NAME 64
+# endif
+
+typedef struct {
+       char cru_name[CRYPTO_MAX_NAME];
+       char cru_driver_name[CRYPTO_MAX_NAME];
+       char cru_module_name[CRYPTO_MAX_NAME];
+       uint32_t cru_type;
+       uint32_t cru_mask;
+       int32_t cru_refcnt;
+       uint32_t cru_flags;
+} struct_crypto_user_alg;
+
+typedef struct {
+       char type[CRYPTO_MAX_NAME];
+       uint32_t blocksize;
+       uint32_t digestsize;
+} struct_crypto_report_hash;
+
+typedef struct {
+       char type[CRYPTO_MAX_NAME];
+       uint32_t blocksize;
+       uint32_t min_keysize;
+       uint32_t max_keysize;
+} struct_crypto_report_cipher;
+
+typedef struct {
+       char type[CRYPTO_MAX_NAME];
+       char geniv[CRYPTO_MAX_NAME];
+       uint32_t blocksize;
+       uint32_t min_keysize;
+       uint32_t max_keysize;
+       uint32_t ivsize;
+} struct_crypto_report_blkcipher;
+
+typedef struct {
+       char type[CRYPTO_MAX_NAME];
+       char geniv[CRYPTO_MAX_NAME];
+       uint32_t blocksize;
+       uint32_t maxauthsize;
+       uint32_t ivsize;
+} struct_crypto_report_aead;
+
+typedef struct {
+       char type[CRYPTO_MAX_NAME];
+       uint32_t seedsize;
+} struct_crypto_report_rng;
+
+#endif /* !STRACE_TYPES_CRYPTOUSER_H */
diff --git a/types/evdev.h b/types/evdev.h
new file mode 100644 (file)
index 0000000..06e8183
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2019-2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#ifndef STRACE_TYPES_EVDEV_H
+# define STRACE_TYPES_EVDEV_H
+
+# ifdef HAVE_LINUX_INPUT_H
+#  include <linux/input.h>
+# endif
+
+typedef struct {
+       int32_t value;
+       int32_t minimum;
+       int32_t maximum;
+       int32_t fuzz;
+       int32_t flat;
+       int32_t resolution; /**< Added by Linux commit v2.6.31-rc1~100^2~1 */
+} struct_input_absinfo;
+
+/** Added by Linux commit v2.6.37-rc1~5^2~3^2~47 */
+typedef struct {
+       uint8_t  flags;
+       uint8_t  len;
+       uint16_t index;
+       uint32_t keycode;
+       uint8_t  scancode[32];
+} struct_input_keymap_entry;
+
+/** Added by Linux commit v4.4-rc1~11^2~3^2~2 */
+typedef struct {
+       uint32_t type;
+       uint32_t codes_size;
+       uint64_t codes_ptr;
+} struct_input_mask;
+
+#endif /* !STRACE_TYPES_EVDEV_H */
diff --git a/types/find_last_type_fields.awk b/types/find_last_type_fields.awk
new file mode 100644 (file)
index 0000000..d0cae0d
--- /dev/null
@@ -0,0 +1,24 @@
+#!/bin/gawk -f
+#
+# Copyright (c) 2018-2020 Dmitry V. Levin <ldv@altlinux.org>
+# All rights reserved.
+#
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+/^typedef struct {$/ {
+       in_struct = 1
+       last_field = ""
+       next
+}
+
+(in_struct == 1) {
+       if (match($0, /^} struct_([a-z][a-z_0-9]*);$/, a)) {
+               in_struct = 0
+               print a[1] "." last_field
+               next
+       }
+       if (match($0, /^[[:space:]]+[^];[:space:]:\/[][^];:[]*[[:space:]]+([^][:space:];:[]+)(\[[^];:[]*\])?;.*$/, a)) {
+               last_field = a[1]
+               next
+       }
+}
diff --git a/types/gen.sh b/types/gen.sh
new file mode 100755 (executable)
index 0000000..d9dce70
--- /dev/null
@@ -0,0 +1,209 @@
+#!/bin/sh -efu
+#
+# Copyright (c) 2014-2015 Mike Frysinger <vapier@gentoo.org>
+# Copyright (c) 2014-2015 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2014-2020 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+[ "x${D:-0}" != x1 ] || set -x
+
+export LC_ALL=C
+
+usage()
+{
+       cat <<EOF
+Usage: $0 <input-header> <output-c> <output-m4>
+
+Generate .c and .m4 files from <input-header> (a file or dir of files)
+and write the generated files to <output-c> and <output-m4>.
+EOF
+       exit 1
+}
+
+gen_c_check()
+{
+       local input output
+       input="$1"; shift
+       output="$1"; shift
+
+       local type_fields
+       type_fields="$(gawk -f "${0%/*}/find_last_type_fields.awk" "$input")"
+       [ -n "$type_fields" ] || {
+               echo >&2 "$input: no types found"
+               return 1
+       }
+
+       echo "generating $output"
+       {
+               cat <<-EOF
+                       /* Generated by $0 from $input; do not edit. */
+                       #include "defs.h"
+                       #include "static_assert.h"
+                       #include "types/${input##*/}"
+               EOF
+               local type_field type field TYPE FIELD
+               for type_field in $type_fields; do
+                       type="${type_field%%.*}"
+                       field="${type_field#*.}"
+                       TYPE="$(printf %s "$type" |tr '[:lower:] ' '[:upper:]_')"
+                       FIELD="$(printf %s "$field" |tr '[:lower:].' '[:upper:]_')"
+
+                       cat <<-EOF
+
+                               #ifdef HAVE_STRUCT_$TYPE
+                               # ifdef HAVE_STRUCT_${TYPE}_$FIELD
+                               static_assert(sizeof(struct $type) == sizeof(struct_$type),
+                                     "struct $type size mismatch, please update the decoder or fix the kernel");
+                               # else
+                               static_assert(sizeof(struct $type) <= offsetof(struct_$type, $field),
+                                       "struct $type size mismatch, please update the decoder or fix the kernel");
+                               # endif /* HAVE_STRUCT_${TYPE}_$FIELD */
+                               #endif /* HAVE_STRUCT_$TYPE */
+                       EOF
+               done
+       } > "$output"
+}
+
+gen_m4_check()
+{
+       local input output macro
+       input="$1"; shift
+       output="$1"; shift
+       macro="$1"; shift
+
+       local type_fields
+       type_fields="$(gawk -f "${0%/*}/find_last_type_fields.awk" "$input")"
+       [ -n "$type_fields" ] || {
+               echo >&2 "$input: no types found"
+               return 1
+       }
+
+       local header
+       header="$(sed -n 's/^#[[:space:]]*include[[:space:]]\+<\([^>]\+\)>.*/\1/p' "$input" |
+               tail -1)"
+       [ -n "$header" ] || {
+               echo >&2 "$input: no included headers found"
+               return 1
+       }
+
+       local inc_expr1 inc_expr2 includes header_includes
+       inc_expr1='s/^#[[:space:]]*include[[:space:]]\+\(<[^>]\+>\).*/#include \1/p'
+       inc_expr2='s/^#[[:space:]]*include[[:space:]]\+"\([^"]\+\)".*/#include "\$srcdir\/\1"/p'
+       includes="$(sed -n "$inc_expr1; $inc_expr2" "$input")"
+       header_includes="$(printf %s "$includes" |sed '$d')"
+
+       echo "generating $output"
+       {
+               cat <<-EOF
+                       dnl Generated by $0 from $input; do not edit.
+                       AC_DEFUN([$macro],[
+                       AC_CHECK_HEADERS([$header],[
+               EOF
+               local type_field type field
+               for type_field in $type_fields; do
+                       type="${type_field%%.*}"
+                       field="${type_field#*.}"
+                       cat <<-EOF
+
+                               AC_CHECK_TYPES([struct $type],
+                               [AC_CHECK_MEMBERS([struct $type.$field],,,[AC_INCLUDES_DEFAULT
+                               $includes])],,[AC_INCLUDES_DEFAULT
+                               $includes])
+                       EOF
+               done
+               cat <<-EOF
+                       ],[],[AC_INCLUDES_DEFAULT
+                       $header_includes])])
+               EOF
+       } > "$output"
+}
+
+gen_m4_entry()
+{
+       local output
+       output="$1"; shift
+       echo "generating $output"
+       {
+               printf 'AC_DEFUN([st_CHECK_TYPES],[\n'
+               printf '\t%s\n' "$@"
+               printf '])\n'
+       } >"$output"
+}
+
+gen_gitignore()
+{
+       local output
+       output="$1"; shift
+       echo "generating $output"
+       {
+               printf '/%s\n' .gitignore Makemodule.am st_check_types.m4
+               printf '/check-%s.c\n' "$@"
+               printf '/check-%s.m4\n' "$@"
+       } >"$output"
+}
+
+gen_makefile()
+{
+       local output
+       output="$1"; shift
+       echo "generating $output"
+       {
+               printf 'TYPES_HEADER_FILES = '
+               [ $# -eq 0 ] ||
+                       printf 'types/%s.h ' "$@"
+               echo
+               printf 'TYPES_CHECK_FILES = '
+               [ $# -eq 0 ] ||
+                       printf 'types/check-%s.c ' "$@"
+               echo
+       } >"$output"
+}
+
+process_all()
+{
+       local dir
+       dir="${0%/*}"
+
+       set +f
+       set -- "$dir"/*.h
+       set -f
+
+       local f
+       local names= macros=
+       for f; do
+               [ -f "$f" ] || continue
+               local name macro
+               name=${f##*/}
+               name=${name%.h}
+               macro="st_CHECK_TYPES_$(printf %s "$name" |tr '[:lower:].' '[:upper:]_')"
+               gen_c_check "$f" "$dir/check-$name.c"
+               gen_m4_check "$f" "$dir/check-$name.m4" "$macro"
+               names="$names $name"
+               macros="$macros $macro"
+       done
+       gen_m4_entry "$dir/st_check_types.m4" $macros
+       gen_gitignore "$dir/.gitignore" $names
+       gen_makefile "$dir/Makemodule.am" $names
+}
+
+process_one()
+{
+       local input output_c output_m4 name macro
+       input="$1"; shift
+       output_c="$1"; shift
+       output_m4="$1"; shift
+
+       name=${input##*/}
+       name=${name%.h}
+       macro="st_CHECK_TYPES_$(printf %s "$name" |tr '[:lower:].' '[:upper:]_')"
+       gen_c_check "$input" "$output_c"
+       gen_m4_check "$input" "$output_m4" "$macro"
+}
+
+case $# in
+       0) process_all ;;
+       3) process_one "$@" ;;
+       *) usage ;;
+esac
diff --git a/types/io_uring.h b/types/io_uring.h
new file mode 100644 (file)
index 0000000..2fe1c13
--- /dev/null
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) 2019-2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#ifndef STRACE_TYPES_IO_URING_H
+# define STRACE_TYPES_IO_URING_H
+
+# ifdef HAVE_LINUX_IO_URING_H
+#  include <linux/io_uring.h>
+# endif
+
+typedef struct {
+       uint32_t head;
+       uint32_t tail;
+       uint32_t ring_mask;
+       uint32_t ring_entries;
+       uint32_t flags;
+       uint32_t dropped;
+       uint32_t array;
+       uint32_t resv1;
+       uint64_t resv2;
+} struct_io_sqring_offsets;
+
+typedef struct {
+       uint32_t head;
+       uint32_t tail;
+       uint32_t ring_mask;
+       uint32_t ring_entries;
+       uint32_t overflow;
+       uint32_t cqes;
+       /** Added by v5.8-rc1~190^2~22 */       uint32_t flags;
+       /** Added by v5.8-rc1~190^2~22 */       uint32_t resv1;
+       /** Added by v5.8-rc1~190^2~22 */       uint64_t resv2;
+} struct_io_cqring_offsets;
+
+typedef struct {
+       uint32_t sq_entries;
+       uint32_t cq_entries;
+       uint32_t flags;
+       uint32_t sq_thread_cpu;
+       uint32_t sq_thread_idle;
+       uint32_t features;
+       uint32_t wq_fd;
+       uint32_t resv[3];
+       struct_io_sqring_offsets sq_off;
+       struct_io_cqring_offsets cq_off;
+} struct_io_uring_params;
+
+typedef struct {
+       uint32_t offset;
+       uint32_t resv;
+       uint64_t /* int * */ fds;
+} struct_io_uring_files_update;
+
+typedef struct {
+       uint8_t  op;
+       uint8_t  resv;
+       uint16_t flags;    /* IO_URING_OP_* flags */
+       uint32_t resv2;
+} struct_io_uring_probe_op;
+
+typedef struct {
+       uint8_t  last_op;   /* last opcode supported */
+       uint8_t  ops_len;   /* length of ops[] array below */
+       uint16_t resv;
+       uint32_t resv2[3];
+       struct_io_uring_probe_op ops[0];
+} struct_io_uring_probe;
+
+#endif /* !STRACE_TYPES_IO_URING_H */
diff --git a/types/loop.h b/types/loop.h
new file mode 100644 (file)
index 0000000..f5127b2
--- /dev/null
@@ -0,0 +1,21 @@
+/*
+ * Copyright (c) 2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#ifndef STRACE_TYPES_LOOP_H
+# define STRACE_TYPES_LOOP_H
+
+# include <linux/ioctl.h>
+# include <linux/loop.h>
+
+typedef struct {
+       uint32_t fd;
+       uint32_t block_size;
+       struct loop_info64 info;
+       uint64_t __reserved[8];
+} struct_loop_config;
+
+#endif /* STRACE_TYPES_LOOP_H */
diff --git a/types/openat2.h b/types/openat2.h
new file mode 100644 (file)
index 0000000..1d9dd70
--- /dev/null
@@ -0,0 +1,21 @@
+/*
+ * Copyright (c) 2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#ifndef STRACE_TYPES_OPENAT2_H
+# define STRACE_TYPES_OPENAT2_H
+
+# ifdef HAVE_LINUX_OPENAT2_H
+#  include <linux/openat2.h>
+# endif
+
+typedef struct {
+       uint64_t flags;
+       uint64_t mode;
+       uint64_t resolve;
+} struct_open_how;
+
+#endif /* STRACE_TYPES_OPENAT2_H */
diff --git a/types/rtnl_link.h b/types/rtnl_link.h
new file mode 100644 (file)
index 0000000..923df08
--- /dev/null
@@ -0,0 +1,94 @@
+/*
+ * Copyright (c) 2019-2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#ifndef STRACE_TYPES_IF_LINK_H
+# define STRACE_TYPES_IF_LINK_H
+
+/*
+ * <linux/rtnetlink.h> used to require other headers be included beforehand,
+ * include "netlink.h" that pulls in all necessary headers.
+ */
+# include "netlink.h"
+
+/*
+ * These types are defined in <linux/if_link.h> nowadays, but that was not
+ * always the case in the past.  Fortunately, when these types were moved
+ * out of <linux/rtnetlink.h>, it was changed to include necessary headers
+ * for backwards compatibility.
+ */
+# include <linux/rtnetlink.h>
+
+typedef struct {
+       uint32_t rx_packets;
+       uint32_t tx_packets;
+       uint32_t rx_bytes;
+       uint32_t tx_bytes;
+       uint32_t rx_errors;
+       uint32_t tx_errors;
+       uint32_t rx_dropped;
+       uint32_t tx_dropped;
+       uint32_t multicast;
+       uint32_t collisions;
+       uint32_t rx_length_errors;
+       uint32_t rx_over_errors;
+       uint32_t rx_crc_errors;
+       uint32_t rx_frame_errors;
+       uint32_t rx_fifo_errors;
+       uint32_t rx_missed_errors;
+       uint32_t tx_aborted_errors;
+       uint32_t tx_carrier_errors;
+       uint32_t tx_fifo_errors;
+       uint32_t tx_heartbeat_errors;
+       uint32_t tx_window_errors;
+       uint32_t rx_compressed;
+       uint32_t tx_compressed;
+       uint32_t rx_nohandler; /**< Added by v4.6-rc1~91^2~329^2~2 */
+} struct_rtnl_link_stats;
+
+/** Added by Linux commit v2.6.35-rc1~473^2~759 */
+typedef struct {
+       uint64_t rx_packets;
+       uint64_t tx_packets;
+       uint64_t rx_bytes;
+       uint64_t tx_bytes;
+       uint64_t rx_errors;
+       uint64_t tx_errors;
+       uint64_t rx_dropped;
+       uint64_t tx_dropped;
+       uint64_t multicast;
+       uint64_t collisions;
+       uint64_t rx_length_errors;
+       uint64_t rx_over_errors;
+       uint64_t rx_crc_errors;
+       uint64_t rx_frame_errors;
+       uint64_t rx_fifo_errors;
+       uint64_t rx_missed_errors;
+       uint64_t tx_aborted_errors;
+       uint64_t tx_carrier_errors;
+       uint64_t tx_fifo_errors;
+       uint64_t tx_heartbeat_errors;
+       uint64_t tx_window_errors;
+       uint64_t rx_compressed;
+       uint64_t tx_compressed;
+       uint64_t rx_nohandler; /**< Added by v4.6-rc1~91^2~329^2~2 */
+} struct_rtnl_link_stats64;
+
+/** Added by Linux commit v4.4-rc1~141^2~231^2~18 */
+typedef struct {
+        uint8_t prio[2];
+        uint8_t addr[6];
+} struct_ifla_bridge_id;
+
+/** Added by Linux commit v2.6.35-rc1~473^2~33 */
+typedef struct {
+       uint8_t vsi_mgr_id;
+       uint8_t vsi_type_id[3];
+       uint8_t vsi_type_version;
+       uint8_t pad[3];
+} struct_ifla_port_vsi;
+
+#endif /* !STRACE_TYPES_IF_LINK_H */
diff --git a/types/rtnl_mdb.h b/types/rtnl_mdb.h
new file mode 100644 (file)
index 0000000..789140b
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2019-2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#ifndef STRACE_TYPES_RTNL_MDB_H
+# define STRACE_TYPES_RTNL_MDB_H
+
+/* struct_br_mdb_entry needs a definition of struct in6_addr.  */
+# include <netinet/in.h>
+
+# include <linux/if_bridge.h>
+
+/** Added by Linux commit v3.8-rc1~139^2~50 */
+typedef struct {
+       uint8_t  family; /** Added by Linux commit v3.8-rc1~139^2~3 */
+       uint32_t ifindex;
+} struct_br_port_msg;
+
+/** Added by Linux commit v3.8-rc1~139^2~50 */
+typedef struct {
+       uint32_t ifindex;
+       uint8_t  state; /** Added by Linux commit v3.8-rc1~40^2~30 */
+       uint8_t  flags; /** Added by Linux commit v4.6-rc1~91^2~309^2~2 */
+       uint16_t vid; /** Added by Linux commit v4.3-rc1~96^2~365 */
+       struct {
+               union {
+                       uint32_t /* __be32 */ ip4;
+                       struct in6_addr       ip6;
+               } u;
+               uint16_t /* __be16 */ proto;
+       } addr;
+} struct_br_mdb_entry;
+
+#endif /* !STRACE_TYPES_RTNL_MDB_H */
diff --git a/types/rtnl_neightbl.h b/types/rtnl_neightbl.h
new file mode 100644 (file)
index 0000000..3bdd22a
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 2019-2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#ifndef STRACE_TYPES_RTNL_NEIGHTBL_H
+# define STRACE_TYPES_RTNL_NEIGHTBL_H
+
+/*
+ * <linux/rtnetlink.h> used to require other headers be included beforehand,
+ * include "netlink.h" that pulls in all necessary headers.
+ */
+# include "netlink.h"
+
+/*
+ * These types are defined in <linux/neighbour.h> nowadays, but that was not
+ * always the case in the past.  Fortunately, when these types were moved
+ * out of <linux/rtnetlink.h>, it was changed to include necessary headers
+ * for backwards compatibility.
+ */
+# include <linux/rtnetlink.h>
+
+typedef struct {
+       uint16_t ndtc_key_len;
+       uint16_t ndtc_entry_size;
+       uint32_t ndtc_entries;
+       uint32_t ndtc_last_flush;
+       uint32_t ndtc_last_rand;
+       uint32_t ndtc_hash_rnd;
+       uint32_t ndtc_hash_mask;
+       uint32_t ndtc_hash_chain_gc;
+       uint32_t ndtc_proxy_qlen;
+} struct_ndt_config;
+
+typedef struct {
+       uint64_t ndts_allocs;
+       uint64_t ndts_destroys;
+       uint64_t ndts_hash_grows;
+       uint64_t ndts_res_failed;
+       uint64_t ndts_lookups;
+       uint64_t ndts_hits;
+       uint64_t ndts_rcv_probes_mcast;
+       uint64_t ndts_rcv_probes_ucast;
+       uint64_t ndts_periodic_gc_runs;
+       uint64_t ndts_forced_gc_runs;
+       uint64_t ndts_table_fulls; /**< Added by v4.3-rc1~96^2~202 */
+} struct_ndt_stats;
+
+#endif /* !STRACE_TYPES_RTNL_NEIGHTBL_H */
diff --git a/types/rtnl_route.h b/types/rtnl_route.h
new file mode 100644 (file)
index 0000000..a355e7f
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2019-2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#ifndef STRACE_TYPES_RTNL_ROUTE_H
+# define STRACE_TYPES_RTNL_ROUTE_H
+
+/*
+ * <linux/rtnetlink.h> used to require other headers be included beforehand,
+ * include "netlink.h" that pulls in all necessary headers.
+ */
+# include "netlink.h"
+# include <linux/rtnetlink.h>
+
+/** Added by Linux commit v3.8-rc1~139^2~90 */
+typedef struct {
+       uint64_t mfcs_packets;
+       uint64_t mfcs_bytes;
+       uint64_t mfcs_wrong_if;
+} struct_rta_mfc_stats;
+
+/** Added by Linux commit v4.1-rc1~128^2~350^2~1 */
+typedef struct {
+       uint16_t /* __kernel_sa_family_t */ rtvia_family;
+       uint8_t rtvia_addr[0];
+} struct_rtvia;
+
+#endif /* !STRACE_TYPES_RTNL_ROUTE_H */
diff --git a/types/st_check_types.m4 b/types/st_check_types.m4
new file mode 100644 (file)
index 0000000..233b4dc
--- /dev/null
@@ -0,0 +1,14 @@
+AC_DEFUN([st_CHECK_TYPES],[
+       st_CHECK_TYPES_BTRFS
+       st_CHECK_TYPES_CRYPTOUSER
+       st_CHECK_TYPES_EVDEV
+       st_CHECK_TYPES_IO_URING
+       st_CHECK_TYPES_LOOP
+       st_CHECK_TYPES_OPENAT2
+       st_CHECK_TYPES_RTNL_LINK
+       st_CHECK_TYPES_RTNL_MDB
+       st_CHECK_TYPES_RTNL_NEIGHTBL
+       st_CHECK_TYPES_RTNL_ROUTE
+       st_CHECK_TYPES_TEE
+       st_CHECK_TYPES_V4L2
+])
diff --git a/types/tee.h b/types/tee.h
new file mode 100644 (file)
index 0000000..ab3a25d
--- /dev/null
@@ -0,0 +1,107 @@
+/*
+ * Copyright (c) 2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#ifndef STRACE_TYPES_TEE_H
+# define STRACE_TYPES_TEE_H
+
+# include <linux/ioctl.h>
+
+# ifdef HAVE_LINUX_TEE_H
+#  include <linux/tee.h>
+# else
+#  define TEE_IOCTL_UUID_LEN 16
+# endif
+
+typedef struct {
+       uint64_t buf_ptr;
+       uint64_t buf_len;
+} struct_tee_ioctl_buf_data;
+
+typedef struct {
+       uint32_t cancel_id;
+       uint32_t session;
+} struct_tee_ioctl_cancel_arg;
+
+typedef struct {
+       uint32_t session;
+} struct_tee_ioctl_close_session_arg;
+
+typedef struct {
+       uint64_t size;
+       uint32_t flags;
+       int32_t id;
+} struct_tee_ioctl_shm_alloc_data;
+
+/* Not in mainline */
+typedef struct {
+       int64_t fd;
+       uint64_t size;
+       uint32_t flags;
+       uint8_t _pad1[4];
+       int32_t id;
+       uint8_t _pad2[4];
+} ATTRIBUTE_ALIGNED(8) struct_tee_ioctl_shm_register_fd_data;
+
+typedef struct {
+       uint64_t addr;
+       uint64_t length;
+       uint32_t flags;
+       int32_t id;
+} struct_tee_ioctl_shm_register_data;
+
+typedef struct {
+       uint32_t impl_id;
+       uint32_t impl_caps;
+       uint32_t gen_caps;
+} struct_tee_ioctl_version_data;
+
+typedef struct {
+       uint64_t attr;
+       uint64_t a;
+       uint64_t b;
+       uint64_t c;
+} struct_tee_ioctl_param;
+
+typedef struct {
+       uint32_t func;
+       uint32_t session;
+       uint32_t cancel_id;
+       uint32_t ret;
+       uint32_t ret_origin;
+       uint32_t num_params;
+       /* num_params tells the actual number of element in params */
+       struct_tee_ioctl_param params[];
+} struct_tee_ioctl_invoke_arg;
+
+typedef struct {
+       uint32_t func;
+       uint32_t num_params;
+       /* num_params tells the actual number of element in params */
+       struct_tee_ioctl_param params[];
+} struct_tee_iocl_supp_recv_arg;
+
+typedef struct {
+       uint32_t ret;
+       uint32_t num_params;
+       /* num_params tells the actual number of element in params */
+       struct_tee_ioctl_param params[];
+} struct_tee_iocl_supp_send_arg;
+
+typedef struct {
+       uint8_t uuid[TEE_IOCTL_UUID_LEN];
+       uint8_t clnt_uuid[TEE_IOCTL_UUID_LEN];
+       uint32_t clnt_login;
+       uint32_t cancel_id;
+       uint32_t session;
+       uint32_t ret;
+       uint32_t ret_origin;
+       uint32_t num_params;
+       /* num_params tells the actual number of element in params */
+       struct_tee_ioctl_param params[];
+} struct_tee_ioctl_open_session_arg;
+
+#endif /* STRACE_TYPES_TEE_H */
diff --git a/types/v4l2.h b/types/v4l2.h
new file mode 100644 (file)
index 0000000..0bfc9d2
--- /dev/null
@@ -0,0 +1,257 @@
+/*
+ * V4L2-related type definitions.
+ *
+ * Copyright (c) 2016-2020 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#ifndef STRACE_TYPES_V4L2_H
+# define STRACE_TYPES_V4L2_H
+
+# include <stdint.h>
+# include <linux/ioctl.h>
+# include <linux/types.h>
+# include <linux/videodev2.h>
+
+typedef struct v4l2_framebuffer struct_v4l2_framebuffer;
+typedef struct v4l2_input struct_v4l2_input;
+typedef struct v4l2_standard struct_v4l2_standard;
+
+
+typedef struct {
+       uint8_t  driver[16];
+       uint8_t  card[32];
+       uint8_t  bus_info[32];
+       uint32_t version;
+       uint32_t capabilities;
+       uint32_t device_caps; /**< Added by v3.4-rc1~110^2^2~259 */
+       uint32_t reserved[3];
+} struct_v4l2_capability;
+
+
+typedef struct {
+       uint32_t width;
+       uint32_t height;
+       uint32_t pixelformat;
+       uint32_t field;
+       uint32_t bytesperline;
+       uint32_t sizeimage;
+       uint32_t colorspace; /**< enum v4l2_colorspace */
+       uint32_t priv;
+       /** Format flags (V4L2_PIX_FMT_FLAG_*), added by v3.17-rc1~112^2~326 */
+       uint32_t flags;
+       union {
+               /** enum v4l2_ycbcr_encoding, added by v3.19-rc1~29^2~72 */
+               uint32_t ycbcr_enc;
+               /** enum v4l2_hsv_encoding, added by v4.10-rc1~71^2^2~352 */
+               uint32_t hsv_enc;
+       };
+       /** enum v4l2_quantization, added by v3.19-rc1~29^2~72 */
+       uint32_t quantization;
+       /** enum v4l2_xfer_func, added by Linux commit v4.2-rc1~107^2~136 */
+       uint32_t xfer_func;
+} struct_v4l2_pix_format;
+
+/** Added by Linux commit v2.6.39-rc1~86^2~437 */
+typedef struct {
+       uint32_t sizeimage;
+       uint32_t bytesperline; /**< Type has changed in v4.1-rc1~59^2~1^2~88 */
+       uint16_t reserved[6];
+} struct_v4l2_plane_pix_format;
+
+/** Added by Linux commit v2.6.39-rc1~86^2~437 */
+typedef struct {
+       uint32_t width;
+       uint32_t height;
+       uint32_t pixelformat;
+       uint32_t field;
+       uint32_t colorspace;
+
+       struct_v4l2_plane_pix_format plane_fmt[8 /* VIDEO_MAX_PLANES */];
+       uint8_t num_planes;
+       /** Format flags (V4L2_PIX_FMT_FLAG_*), added by v3.17-rc1~112^2~326 */
+       uint8_t flags;
+       union {
+               /** enum v4l2_ycbcr_encoding, added by v3.19-rc1~29^2~72 */
+               uint8_t ycbcr_enc;
+               /** enum v4l2_hsv_encoding, added by v4.10-rc1~71^2^2~352 */
+               uint8_t hsv_enc;
+       };
+       /** enum v4l2_quantization, added by v3.19-rc1~29^2~72 */
+       uint8_t quantization;
+       /** enum v4l2_xfer_func, added by Linux commit v4.2-rc1~107^2~136 */
+       uint8_t xfer_func;
+       uint8_t reserved[7];
+} ATTRIBUTE_PACKED struct_v4l2_pix_format_mplane;
+
+typedef struct strace_v4l2_clip {
+       struct v4l2_rect c;
+       struct strace_v4l2_clip * next;
+} struct_v4l2_clip;
+
+typedef struct {
+       struct v4l2_rect w;
+       uint32_t field; /* enum v4l2_field */
+       uint32_t chromakey;
+       struct_v4l2_clip *clips;
+       uint32_t clipcount;
+       void *bitmap;
+       uint8_t global_alpha; /**< Added by v2.6.22-rc1~1118^2~179 */
+} struct_v4l2_window;
+
+typedef struct {
+       uint32_t sampling_rate;
+       uint32_t offset;
+       uint32_t samples_per_line;
+       uint32_t sample_format; /* V4L2_PIX_FMT_* */
+       int32_t  start[2];
+       uint32_t count[2];
+       uint32_t flags; /* V4L2_VBI_* */
+       uint32_t reserved[2];
+} struct_v4l2_vbi_format;
+
+/** Added by Linux commit v2.6.16.28-rc1~3732 */
+typedef struct {
+       uint16_t service_set;
+       uint16_t service_lines[2][24];
+       uint32_t io_size;
+       uint32_t reserved[2];
+} struct_v4l2_sliced_vbi_format;
+
+typedef struct {
+       uint16_t service_set;
+       uint16_t service_lines[2][24];
+       uint32_t type; /**< enum v4l2_buf_type, added by v2.6.19-rc1~643^2~52 */
+       uint32_t reserved[3];
+} struct_v4l2_sliced_vbi_cap;
+
+/** Added by Linux commits v3.15-rc1~85^2~213, v3.15-rc1~85^2~41 */
+typedef struct {
+       uint32_t pixelformat;
+       uint32_t buffersize; /**< Added by Linux commit v3.17-rc1~112^2~230 */
+       uint8_t  reserved[24];
+} ATTRIBUTE_PACKED struct_v4l2_sdr_format;
+
+/** Added by Linux commit v4.12-rc1~85^2~71 */
+typedef struct {
+       uint32_t dataformat;
+       uint32_t buffersize;
+} ATTRIBUTE_PACKED struct_v4l2_meta_format;
+
+typedef struct {
+       uint32_t type;
+       union {
+               struct_v4l2_pix_format          pix;
+               /** Added by Linux commit v2.6.39-rc1~86^2~437 */
+               struct_v4l2_pix_format_mplane   pix_mp;
+               struct_v4l2_window              win;
+               struct_v4l2_vbi_format          vbi;
+               /** Added by Linux commit v2.6.16.28-rc1~3732 */
+               struct_v4l2_sliced_vbi_format   sliced;
+               /** Added by v3.15-rc1~85^2~213, v3.15-rc1~85^2~41 */
+               struct_v4l2_sdr_format          sdr;
+               /** Added by Linux commit v4.12-rc1~85^2~71 */
+               struct_v4l2_meta_format         meta;
+               uint8_t raw_data[200];
+       } fmt;
+} struct_v4l2_format;
+
+
+/** Added by Linux v5.5-rc1~143^2^2~225 */
+typedef struct {
+       __u32   width;
+       __u32   height;
+} struct_v4l2_area;
+
+/** Added by Linux commit v2.6.18-rc1~862^2~18 */
+typedef struct {
+        uint32_t id;
+        uint32_t size; /* Added by v2.6.32-rc1~679^2~72 */
+        uint32_t reserved2[1];
+        union {
+                int32_t value;
+                int64_t value64;
+                char * string;             /**< Added by v2.6.32-rc1~679^2~72 */
+                uint8_t * p_u8;            /**< Added by v3.17-rc1~112^2~343 */
+                uint16_t * p_u16;          /**< Added by v3.17-rc1~112^2~343 */
+                uint32_t * p_u32;          /**< Added by v3.17-rc1~112^2~112 */
+                struct_v4l2_area * p_area; /**< Added by v5.5-rc1~143^2^2~51 */
+                void * ptr;                /**< Added by v3.17-rc1~112^2~363 */
+        };
+} ATTRIBUTE_PACKED struct_v4l2_ext_control;
+
+/** Added by Linux commit v2.6.18-rc1~862^2~18 */
+typedef struct {
+        union {
+               uint32_t ctrl_class;
+               uint32_t which;
+       };
+        uint32_t count;
+       uint32_t error_idx;
+       int32_t  request_fd; /**< Added by Linux commit v4.20-rc1~51^2~44 */
+       uint32_t reserved[1];
+       struct_v4l2_ext_control * controls;
+} struct_v4l2_ext_controls;
+
+
+typedef struct {
+       uint32_t width;
+       uint32_t height;
+} struct_v4l2_frmsize_discrete;
+
+typedef struct {
+       uint32_t min_width;
+       uint32_t max_width;
+       uint32_t step_width;
+       uint32_t min_height;
+       uint32_t max_height;
+       uint32_t step_height;
+} struct_v4l2_frmsize_stepwise;
+
+/** Added by Linux commit v2.6.19-rc1~183 */
+typedef struct {
+       uint32_t index;
+       uint32_t pixel_format;
+       uint32_t type; /**< enum v4l2_frmsizetypes */
+       union {
+               struct_v4l2_frmsize_discrete discrete;
+               struct_v4l2_frmsize_stepwise stepwise;
+       };
+       uint32_t reserved[2];
+} struct_v4l2_frmsizeenum;
+
+typedef struct {
+       struct v4l2_fract min;
+       struct v4l2_fract max;
+       struct v4l2_fract step;
+} struct_v4l2_frmival_stepwise;
+
+typedef struct {
+       uint32_t index;
+       uint32_t pixel_format;
+       uint32_t width;
+       uint32_t height;
+       uint32_t type; /**< enum v4l2_frmivaltypes */
+       union {
+               struct v4l2_fract               discrete;
+               struct_v4l2_frmival_stepwise    stepwise;
+       };
+       uint32_t reserved[2];
+} struct_v4l2_frmivalenum;
+
+
+typedef struct {
+       uint32_t index;
+       uint32_t count;
+       uint32_t memory;
+       struct_v4l2_format format;
+       /** V4L2_BUF_CAP_*, added by Linux commit v4.20-rc1~51^2~14 */
+       uint32_t capabilities;
+       /** V4L2_FLAG_MEMORY_NON_CONSISTENT, added by Linux commit v5.9-rc1~94^2~295 */
+       uint32_t flags;
+       uint32_t reserved[6];
+} struct_v4l2_create_buffers;
+
+#endif /* STRACE_TYPES_V4L2_H */
diff --git a/ucopy.c b/ucopy.c
index 7db49c4a20fff9bc1393f75f50e2693c705582ec..59af86417787e1c16f4c2fca50a63f5b53c125de 100644 (file)
--- a/ucopy.c
+++ b/ucopy.c
@@ -6,7 +6,7 @@
  * Copyright (c) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation
  *                     Linux for s390 port by D.J. Barrow
  *                    <barrow_dj@mail.yahoo.com,djbarrow@de.ibm.com>
- * Copyright (c) 1999-2018 The strace developers.
+ * Copyright (c) 1999-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -14,7 +14,6 @@
 
 #include "defs.h"
 #include <sys/uio.h>
-#include <asm/unistd.h>
 
 #include "scno.h"
 #include "ptrace.h"
@@ -42,24 +41,15 @@ static ssize_t strace_process_vm_readv(pid_t pid,
 #endif /* !HAVE_PROCESS_VM_READV */
 
 static ssize_t
-vm_read_mem(const pid_t pid, void *const laddr,
-           const kernel_ulong_t raddr, const size_t len)
+process_read_mem(const pid_t pid, void *const laddr,
+                void *const raddr, const size_t len)
 {
-       const unsigned long truncated_raddr = raddr;
-
-#if SIZEOF_LONG < SIZEOF_KERNEL_LONG_T
-       if (raddr != (kernel_ulong_t) truncated_raddr) {
-               errno = EIO;
-               return -1;
-       }
-#endif
-
        const struct iovec local = {
                .iov_base = laddr,
                .iov_len = len
        };
        const struct iovec remote = {
-               .iov_base = (void *) truncated_raddr,
+               .iov_base = raddr,
                .iov_len = len
        };
 
@@ -70,6 +60,119 @@ vm_read_mem(const pid_t pid, void *const laddr,
        return rc;
 }
 
+static int cached_idx = -1;
+static unsigned long cached_raddr[4];
+
+void
+invalidate_umove_cache(void)
+{
+       cached_idx = -1;
+}
+
+static int
+get_next_unused_idx(void)
+{
+       return (cached_idx + 1) % ARRAY_SIZE(cached_raddr);
+}
+
+static int
+lookup_cached_raddr_idx(const unsigned long raddr)
+{
+       if (cached_idx >= 0) {
+               for (int i = cached_idx; i >= 0; --i)
+                       if (raddr == cached_raddr[i])
+                               return i;
+               for (int i = (int) ARRAY_SIZE(cached_raddr) - 1;
+                    i > cached_idx; --i)
+                       if (raddr == cached_raddr[i])
+                               return i;
+       }
+       return -1;
+}
+
+static void
+set_cached_raddr_idx(const unsigned long raddr, const int idx)
+{
+       if (cached_idx < 0)
+               memset(cached_raddr, 0, sizeof(cached_raddr));
+       cached_raddr[idx] = raddr;
+       cached_idx = idx;
+}
+
+static ssize_t
+vm_read_mem(const pid_t pid, void *laddr,
+           const kernel_ulong_t kraddr, size_t len)
+{
+       if (!len)
+               return len;
+
+       unsigned long taddr = kraddr;
+
+#if SIZEOF_LONG < SIZEOF_KERNEL_LONG_T
+       if (kraddr != (kernel_ulong_t) taddr) {
+               errno = EIO;
+               return -1;
+       }
+#endif
+
+       const size_t page_size = get_pagesize();
+       const size_t page_mask = page_size - 1;
+       unsigned long page_start = taddr & ~page_mask;
+       const unsigned long page_after_last =
+               (taddr + len + page_mask) & ~page_mask;
+
+       if (!page_start ||
+           page_after_last < page_start ||
+           page_after_last - page_start > ARRAY_SIZE(cached_raddr) * page_size)
+               return process_read_mem(pid, laddr, (void *) taddr, len);
+
+       size_t total_read = 0;
+
+       for (;;) {
+               static char *buf[ARRAY_SIZE(cached_raddr)];
+               int idx = lookup_cached_raddr_idx(page_start);
+
+               if (idx == -1) {
+                       idx = get_next_unused_idx();
+
+                       if (!buf[idx])
+                               buf[idx] = xmalloc(page_size);
+
+                       const ssize_t rc =
+                               process_read_mem(pid, buf[idx],
+                                                (void *) page_start, page_size);
+                       if (rc < 0)
+                               return total_read ? (ssize_t) total_read : rc;
+
+                       set_cached_raddr_idx(page_start, idx);
+               }
+
+               const unsigned long offset = taddr - page_start;
+               size_t copy_len, next_len;
+
+               if (len <= page_size - offset) {
+                       copy_len = len;
+                       next_len = 0;
+               } else {
+                       copy_len = page_size - offset;
+                       next_len = len - copy_len;
+               }
+
+               memcpy(laddr, buf[idx] + offset, copy_len);
+               total_read += copy_len;
+
+               if (!next_len)
+                       break;
+
+               len = next_len;
+               laddr += copy_len;
+               page_start += page_size;
+               taddr = page_start;
+       }
+
+       return total_read;
+}
+
 static bool
 tracee_addr_is_invalid(kernel_ulong_t addr)
 {
@@ -107,14 +210,16 @@ umoven_peekdata(const int pid, kernel_ulong_t addr, unsigned int len,
                        case EFAULT: case EIO: case EPERM:
                                /* address space is inaccessible */
                                if (nread) {
-                                       perror_msg("umoven: short read (%u < %u) @0x%" PRI_klx,
-                                                  nread, nread + len, addr - nread);
+                                       perror_func_msg("short read (%u < %u)"
+                                                       " @0x%" PRI_klx,
+                                                       nread, nread + len,
+                                                       addr - nread);
                                }
                                return -1;
                        default:
                                /* all the rest is strange and should be reported */
-                               perror_msg("umoven: PTRACE_PEEKDATA pid:%d @0x%" PRI_klx,
-                                           pid, addr);
+                               perror_func_msg("pid:%d @0x%" PRI_klx,
+                                               pid, addr);
                                return -1;
                }
 
@@ -150,8 +255,8 @@ umoven(struct tcb *const tcp, kernel_ulong_t addr, unsigned int len,
        if ((unsigned int) r == len)
                return 0;
        if (r >= 0) {
-               error_msg("umoven: short read (%u < %u) @0x%" PRI_klx,
-                         (unsigned int) r, len, addr);
+               error_func_msg("short read (%u < %u) @0x%" PRI_klx,
+                              (unsigned int) r, len, addr);
                return -1;
        }
        switch (errno) {
@@ -167,8 +272,7 @@ umoven(struct tcb *const tcp, kernel_ulong_t addr, unsigned int len,
                        return -1;
                default:
                        /* all the rest is strange and should be reported */
-                       perror_msg("process_vm_readv: pid:%d @0x%" PRI_klx,
-                                   pid, addr);
+                       perror_func_msg("pid:%d @0x%" PRI_klx, pid, addr);
                        return -1;
        }
 }
@@ -203,14 +307,16 @@ umovestr_peekdata(const int pid, kernel_ulong_t addr, unsigned int len,
                        case EFAULT: case EIO: case EPERM:
                                /* address space is inaccessible */
                                if (nread) {
-                                       perror_msg("umovestr: short read (%d < %d) @0x%" PRI_klx,
-                                                  nread, nread + len, addr - nread);
+                                       perror_func_msg("short read (%d < %d)"
+                                                       " @0x%" PRI_klx,
+                                                       nread, nread + len,
+                                                       addr - nread);
                                }
                                return -1;
                        default:
                                /* all the rest is strange and should be reported */
-                               perror_msg("umovestr: PTRACE_PEEKDATA pid:%d @0x%" PRI_klx,
-                                          pid, addr);
+                               perror_func_msg("pid:%d @0x%" PRI_klx,
+                                               pid, addr);
                                return -1;
                }
 
@@ -290,16 +396,17 @@ umovestr(struct tcb *const tcp, kernel_ulong_t addr, unsigned int len,
                        case EFAULT: case EIO:
                                /* address space is inaccessible */
                                if (nread)
-                                       perror_msg("umovestr: short read (%d < %d) @0x%" PRI_klx,
-                                                  nread, nread + len, addr - nread);
+                                       perror_func_msg("short read (%d < %d)"
+                                                       " @0x%" PRI_klx,
+                                                       nread, nread + len,
+                                                       addr - nread);
                                return -1;
                        case ESRCH:
                                /* the process is gone */
                                return -1;
                        default:
                                /* all the rest is strange and should be reported */
-                               perror_msg("process_vm_readv: pid:%d @0x%" PRI_klx,
-                                           pid, addr);
+                               perror_func_msg("pid:%d @0x%" PRI_klx, pid, addr);
                                return -1;
                }
        }
index d9fa79caee84129cdf40836019cead281b7ec811..a16cdce7a80a07fa6e1221ddab5e286e61222613 100644 (file)
@@ -8,7 +8,7 @@
  *
  * Copyright (c) 2014-2018 Mark Wielaard <mjw@redhat.com>
  * Copyright (c) 2018 Masatake YAMATO <yamato@redhat.com>
- * Copyright (c) 2018 The strace developers.
+ * Copyright (c) 2018-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
 #include "defs.h"
 #include "unwind.h"
 #include "mmap_notify.h"
+#include "static_assert.h"
 #include <elfutils/libdwfl.h>
 
+#define STRACE_UW_CACHE_SIZE 2048
+#define STRACE_UW_CACHE_ASSOC 32
+static_assert(STRACE_UW_CACHE_SIZE % STRACE_UW_CACHE_ASSOC == 0,
+            "STRACE_UW_CACHE_SIZE % STRACE_UW_CACHE_ASSOC != 0");
+
+struct cache_entry {
+       /* key */
+       Dwarf_Addr pc;
+       unsigned long long generation;
+
+       /* value */
+       const char *modname;
+       const char *symname;
+       GElf_Off off;
+       Dwarf_Addr true_offset;
+
+       /* replacement */
+       unsigned long long last_use;
+};
+
 struct ctx {
        Dwfl *dwfl;
-       unsigned int last_proc_updating;
+       unsigned long long last_proc_updating;
+       struct cache_entry cache[STRACE_UW_CACHE_SIZE];
 };
 
-static unsigned int mapping_generation;
+static unsigned long long mapping_generation = 1;
+static unsigned long long uwcache_clock;
 
 static void
 update_mapping_generation(struct tcb *tcp, void *unused)
@@ -69,7 +92,8 @@ tcb_init(struct tcb *tcp)
 
        struct ctx *ctx = xmalloc(sizeof(*ctx));
        ctx->dwfl = dwfl;
-       ctx->last_proc_updating = 0;
+       ctx->last_proc_updating = mapping_generation - 1;
+       memset(ctx->cache, 0, sizeof(ctx->cache));
        return ctx;
 }
 
@@ -113,8 +137,34 @@ struct frame_user_data {
        unwind_error_action_fn error_action;
        void *data;
        int stack_depth;
+       struct ctx *ctx;
 };
 
+static bool
+find_bucket(struct ctx *ctx, Dwarf_Addr pc, struct cache_entry **res) {
+       unsigned int idx = pc & ((STRACE_UW_CACHE_SIZE-1) &
+                                ~(STRACE_UW_CACHE_ASSOC-1));
+       struct cache_entry *unused = NULL;
+       struct cache_entry *lru = ctx->cache + idx;
+       for (unsigned int i = 0; i < STRACE_UW_CACHE_ASSOC; ++i) {
+               struct cache_entry *ce = ctx->cache + (idx + i);
+               if (ce->generation == mapping_generation && ce->pc == pc) {
+                       ce->last_use = uwcache_clock++;
+                       *res = ce;
+                       return true;
+               }
+               if (ce->generation != mapping_generation) {
+                       unused = ce;
+                       continue;
+               }
+               if (ce->last_use < lru->last_use)
+                       lru = ce;
+       }
+       *res = unused ? unused : lru;
+
+       return false;
+}
+
 static int
 frame_callback(Dwfl_Frame *state, void *arg)
 {
@@ -130,24 +180,40 @@ frame_callback(Dwfl_Frame *state, void *arg)
        if (!isactivation)
                pc--;
 
-       Dwfl *dwfl = dwfl_thread_dwfl(dwfl_frame_thread(state));
-       Dwfl_Module *mod = dwfl_addrmodule(dwfl, pc);
-       GElf_Off off = 0;
-
-       if (mod != NULL) {
-               const char *modname = NULL;
-               const char *symname = NULL;
-               GElf_Sym sym;
-               Dwarf_Addr true_offset = pc;
-
-               modname = dwfl_module_info(mod, NULL, NULL, NULL, NULL,
-                                          NULL, NULL, NULL);
-               symname = dwfl_module_addrinfo(mod, pc, &off, &sym,
-                                              NULL, NULL, NULL);
-               dwfl_module_relocate_address(mod, &true_offset);
-               user_data->call_action(user_data->data, modname, symname,
-                                      off, true_offset);
+       struct cache_entry *ce;
+       if (find_bucket(user_data->ctx, pc, &ce)) {
+               user_data->call_action(user_data->data,
+                                      ce->modname, ce->symname,
+                                      ce->off, ce->true_offset);
+       } else {
+               Dwfl *dwfl = dwfl_thread_dwfl(dwfl_frame_thread(state));
+               Dwfl_Module *mod = dwfl_addrmodule(dwfl, pc);
+               GElf_Off off = 0;
+
+               if (mod != NULL) {
+                       const char *modname = NULL;
+                       const char *symname = NULL;
+                       GElf_Sym sym;
+                       Dwarf_Addr true_offset = pc;
+
+                       modname = dwfl_module_info(mod, NULL, NULL, NULL, NULL,
+                                                  NULL, NULL, NULL);
+                       symname = dwfl_module_addrinfo(mod, pc, &off, &sym,
+                                                      NULL, NULL, NULL);
+                       dwfl_module_relocate_address(mod, &true_offset);
+                       user_data->call_action(user_data->data, modname, symname,
+                                              off, true_offset);
+
+                       ce->generation = mapping_generation;
+                       ce->pc = pc;
+                       ce->modname = modname;
+                       ce->symname = symname;
+                       ce->off = off;
+                       ce->true_offset = true_offset;
+                       ce->last_use = uwcache_clock++;
+               }
        }
+
        /* Max number of frames to print reached? */
        if (user_data->stack_depth-- == 0)
                return DWARF_CB_ABORT;
@@ -170,6 +236,7 @@ tcb_walk(struct tcb *tcp,
                .error_action = error_action,
                .data = data,
                .stack_depth = 256,
+               .ctx = ctx,
        };
 
        flush_cache_maybe(tcp);
diff --git a/upeek.c b/upeek.c
index 0618f2701f90e530d9f349e91933f6da862eeab6..b28b73cc44e1521700fade4b2128810cb74d4512 100644 (file)
--- a/upeek.c
+++ b/upeek.c
@@ -6,7 +6,7 @@
  * Copyright (c) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation
  *                     Linux for s390 port by D.J. Barrow
  *                    <barrow_dj@mail.yahoo.com,djbarrow@de.ibm.com>
- * Copyright (c) 1999-2018 The strace developers.
+ * Copyright (c) 1999-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -23,10 +23,9 @@ upeek(struct tcb *tcp, unsigned long off, kernel_ulong_t *res)
        errno = 0;
        val = ptrace(PTRACE_PEEKUSER, (pid_t) tcp->pid, (void *) off, 0);
        if (val == -1 && errno) {
-               if (errno != ESRCH) {
-                       perror_msg("upeek: PTRACE_PEEKUSER pid:%d @0x%lx)",
-                                  tcp->pid, off);
-               }
+               if (errno != ESRCH)
+                       perror_func_msg("PTRACE_PEEKUSER pid:%d @0x%lx)",
+                                       tcp->pid, off);
                return -1;
        }
        *res = (unsigned long) val;
diff --git a/upoke.c b/upoke.c
index ae532e4896e8004904eaa3f2970ff590e0dd9d34..bb629c54fdd40cd42d7072c1799e5bcd1a760163 100644 (file)
--- a/upoke.c
+++ b/upoke.c
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -15,8 +15,8 @@ upoke(struct tcb *tcp, unsigned long off, kernel_ulong_t val)
 {
        if (ptrace_pokeuser(tcp->pid, off, val) < 0) {
                if (errno != ESRCH)
-                       perror_msg("upoke: PTRACE_POKEUSER pid:%d @%#lx)",
-                                  tcp->pid, off);
+                       perror_func_msg("PTRACE_POKEUSER pid:%d @%#lx)",
+                                       tcp->pid, off);
                return -1;
        }
        return 0;
diff --git a/ustat.c b/ustat.c
index 814ed431a9f7a4e9470dbeabe858569828ca8619..2651af5899b377b4aa4be5432f5174f494404b8a 100644 (file)
--- a/ustat.c
+++ b/ustat.c
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
- * Copyright (c) 2017-2018 The strace developers.
+ * Copyright (c) 2017-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -15,6 +15,8 @@ typedef struct ustat struct_ustat;
 
 #include MPERS_DEFS
 
+#include "print_fields.h"
+
 SYS_FUNC(ustat)
 {
        if (entering(tcp))
@@ -24,10 +26,11 @@ SYS_FUNC(ustat)
 #ifdef HAVE_USTAT_H
                struct_ustat ust;
 
-               if (!umove_or_printaddr(tcp, tcp->u_arg[1], &ust))
-                       tprintf("{f_tfree=%llu, f_tinode=%llu}",
-                               zero_extend_signed_to_ull(ust.f_tfree),
-                               zero_extend_signed_to_ull(ust.f_tinode));
+               if (!umove_or_printaddr(tcp, tcp->u_arg[1], &ust)) {
+                       PRINT_FIELD_U("{", ust, f_tfree);
+                       PRINT_FIELD_U(", ", ust, f_tinode);
+                       tprints("}");
+               }
 #else /* !HAVE_USTAT_H */
                printaddr(tcp->u_arg[1]);
 #endif /* HAVE_USTAT_H */
diff --git a/util.c b/util.c
index fa384c59784f171b058b0dde734ffc6f24894ac9..481144bf0996048b909af77b64d8796f1e3ad310 100644 (file)
--- a/util.c
+++ b/util.c
@@ -6,7 +6,7 @@
  * Copyright (c) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation
  *                     Linux for s390 port by D.J. Barrow
  *                    <barrow_dj@mail.yahoo.com,djbarrow@de.ibm.com>
- * Copyright (c) 1999-2019 The strace developers.
+ * Copyright (c) 1999-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
 #include <sys/uio.h>
 
 #include "largefile_wrappers.h"
+#include "number_set.h"
 #include "print_utils.h"
 #include "static_assert.h"
+#include "string_to_uint.h"
 #include "xlat.h"
 #include "xstring.h"
 
+const struct xlat_data *
+find_xlat_val_ex(const struct xlat_data *items, const char *s, size_t num_items,
+                unsigned int flags)
+{
+       for (size_t i = 0; i < num_items; i++) {
+               if (!(flags & FXL_CASE_SENSITIVE ? strcmp
+                                                : strcasecmp)(items[i].str, s))
+                       return items + i;
+       }
+
+       return NULL;
+}
+
+uint64_t
+find_arg_val_(const char *arg, const struct xlat_data *strs, size_t strs_size,
+              uint64_t default_val, uint64_t not_found)
+{
+       if (!arg)
+               return default_val;
+
+       const struct xlat_data *res = find_xlat_val_ex(strs, arg, strs_size, 0);
+
+       return  res ? res->val : not_found;
+}
+
+int
+str2timescale_ex(const char *arg, int empty_dflt, int null_dflt,
+                int *width)
+{
+       static const struct xlat_data units[] = {
+               { 1000000000U | (0ULL << 32), "s" },
+               { 1000000U    | (3ULL << 32), "ms" },
+               { 1000U       | (6ULL << 32), "us" },
+               { 1U          | (9ULL << 32), "ns" },
+       };
+
+       if (!arg)
+               return null_dflt;
+       if (!arg[0])
+               return empty_dflt;
+
+       uint64_t res = find_arg_val(arg, units, null_dflt, -1ULL);
+
+       if (width && res != -1ULL)
+               *width = res >> 32;
+
+       return res & 0xffffffff;
+}
+
 int
 ts_nz(const struct timespec *a)
 {
@@ -76,7 +127,7 @@ ts_sub(struct timespec *tv, const struct timespec *a, const struct timespec *b)
 }
 
 void
-ts_div(struct timespec *tv, const struct timespec *a, int n)
+ts_div(struct timespec *tv, const struct timespec *a, uint64_t n)
 {
        long long nsec = (a->tv_sec % n * 1000000000LL + a->tv_nsec + n / 2) / n;
        tv->tv_sec = a->tv_sec / n + nsec / 1000000000;
@@ -84,13 +135,72 @@ ts_div(struct timespec *tv, const struct timespec *a, int n)
 }
 
 void
-ts_mul(struct timespec *tv, const struct timespec *a, int n)
+ts_mul(struct timespec *tv, const struct timespec *a, uint64_t n)
 {
        long long nsec = a->tv_nsec * n;
        tv->tv_sec = a->tv_sec * n + nsec / 1000000000;
        tv->tv_nsec = nsec % 1000000000;
 }
 
+const struct timespec *
+ts_min(const struct timespec *a, const struct timespec *b)
+{
+       return ts_cmp(a, b) < 0 ? a : b;
+}
+
+const struct timespec *
+ts_max(const struct timespec *a, const struct timespec *b)
+{
+       return ts_cmp(a, b) > 0 ? a : b;
+}
+
+int
+parse_ts(const char *s, struct timespec *t)
+{
+       enum { NS_IN_S = 1000000000 };
+
+       static const char float_accept[] =  "eE.-+0123456789";
+       static const char int_accept[] = "+0123456789";
+
+       size_t float_len = strspn(s, float_accept);
+       size_t int_len = strspn(s, int_accept);
+       char *endptr = NULL;
+       double float_val = -1;
+       long long int_val = -1;
+
+       if (float_len > int_len) {
+               errno = 0;
+
+               float_val = strtod(s, &endptr);
+
+               if (endptr == s || errno)
+                       return -1;
+               if (float_val < 0)
+                       return -1;
+       } else {
+               int_val = string_to_uint_ex(s, &endptr, LLONG_MAX, "smun");
+
+               if (int_val < 0)
+                       return -1;
+       }
+
+       int scale = str2timescale_sfx(endptr, NULL);
+       if (scale <= 0)
+               return -1;
+
+       if (float_len > int_len) {
+               t->tv_sec = float_val / (NS_IN_S / scale);
+               t->tv_nsec = ((uint64_t) ((float_val -
+                                          (t->tv_sec * (NS_IN_S / scale)))
+                                         * scale)) % NS_IN_S;
+       } else {
+               t->tv_sec = int_val / (NS_IN_S / scale);
+               t->tv_nsec = (int_val % (NS_IN_S / scale)) * scale;
+       }
+
+       return 0;
+}
+
 #if !defined HAVE_STPCPY
 char *
 stpcpy(char *dst, const char *src)
@@ -159,10 +269,10 @@ getllval(struct tcb *tcp, unsigned long long *val, int arg_no)
 #if SIZEOF_KERNEL_LONG_T > 4
 # ifndef current_klongsize
        if (current_klongsize < SIZEOF_KERNEL_LONG_T) {
-#  if defined(AARCH64) || defined(POWERPC64)
+#  if defined(AARCH64) || defined(POWERPC64) || defined(POWERPC64LE)
                /* Align arg_no to the next even number. */
                arg_no = (arg_no + 1) & 0xe;
-#  endif /* AARCH64 || POWERPC64 */
+#  endif /* AARCH64 || POWERPC64 || POWERPC64LE */
                *val = ULONG_LONG(tcp->u_arg[arg_no], tcp->u_arg[arg_no + 1]);
                arg_no += 2;
        } else
@@ -270,40 +380,29 @@ DEF_PRINTNUM(int64, uint64_t)
 DEF_PRINTNUM_ADDR(int64, uint64_t)
 DEF_PRINTPAIR(int64, uint64_t)
 
-#ifndef current_wordsize
 bool
-printnum_long_int(struct tcb *const tcp, const kernel_ulong_t addr,
-                 const char *const fmt_long, const char *const fmt_int)
+printnum_fd(struct tcb *const tcp, const kernel_ulong_t addr)
 {
-       if (current_wordsize > sizeof(int)) {
-               return printnum_int64(tcp, addr, fmt_long);
-       } else {
-               return printnum_int(tcp, addr, fmt_int);
-       }
-}
-
-bool
-printnum_addr_long_int(struct tcb *tcp, const kernel_ulong_t addr)
-{
-       if (current_wordsize > sizeof(int)) {
-               return printnum_addr_int64(tcp, addr);
-       } else {
-               return printnum_addr_int(tcp, addr);
-       }
+       int fd;
+       if (umove_or_printaddr(tcp, addr, &fd))
+               return false;
+       tprints("[");
+       printfd(tcp, fd);
+       tprints("]");
+       return true;
 }
-#endif /* !current_wordsize */
 
-#ifndef current_klongsize
 bool
-printnum_addr_klong_int(struct tcb *tcp, const kernel_ulong_t addr)
+printnum_pid(struct tcb *const tcp, const kernel_ulong_t addr, enum pid_type type)
 {
-       if (current_klongsize > sizeof(int)) {
-               return printnum_addr_int64(tcp, addr);
-       } else {
-               return printnum_addr_int(tcp, addr);
-       }
+       int pid;
+       if (umove_or_printaddr(tcp, addr, &pid))
+               return false;
+       tprints("[");
+       printpid(tcp, pid, type);
+       tprints("]");
+       return true;
 }
-#endif /* !current_klongsize */
 
 /**
  * Prints time to a (static internal) buffer and returns pointer to it.
@@ -402,7 +501,7 @@ getfdproto(struct tcb *tcp, int fd)
        if (fd < 0)
                return SOCK_PROTO_UNKNOWN;
 
-       xsprintf(path, "/proc/%u/fd/%u", tcp->pid, fd);
+       xsprintf(path, "/proc/%u/fd/%u", get_proc_pid(tcp), fd);
        r = getxattr(path, "system.sockprotoname", buf, bufsize - 1);
        if (r <= 0)
                return SOCK_PROTO_UNKNOWN;
@@ -480,21 +579,87 @@ printdev(struct tcb *tcp, int fd, const char *path)
        return false;
 }
 
+pid_t
+pidfd_get_pid(pid_t pid_of_fd, int fd)
+{
+       int proc_pid = 0;
+       translate_pid(NULL, pid_of_fd, PT_TID, &proc_pid);
+       if (!proc_pid)
+               return -1;
+
+       char fdi_path[sizeof("/proc/%u/fdinfo/%u") + 2 * sizeof(int) * 3];
+       xsprintf(fdi_path, "/proc/%u/fdinfo/%u", proc_pid, fd);
+
+       FILE *f = fopen_stream(fdi_path, "r");
+       if (!f)
+               return -1;
+
+       static const char pid_pfx[] = "Pid:\t";
+       char *line = NULL;
+       size_t sz = 0;
+       pid_t pid = -1;
+       while (getline(&line, &sz, f) > 0) {
+               const char *pos = STR_STRIP_PREFIX(line, pid_pfx);
+               if (pos == line)
+                       continue;
+
+               pid = string_to_uint_ex(pos, NULL, INT_MAX, "\n");
+               break;
+       }
+
+       free(line);
+       fclose(f);
+
+       return pid;
+}
+
+static bool
+printpidfd(pid_t pid_of_fd, int fd, const char *path)
+{
+       static const char pidfd_path[] = "anon_inode:[pidfd]";
+
+       if (strcmp(path, pidfd_path))
+               return false;
+
+       pid_t pid = pidfd_get_pid(pid_of_fd, fd);
+       if (pid <= 0)
+               return false;
+
+       tprintf("pid:%d", pid);
+       return true;
+}
+
 void
-printfd(struct tcb *tcp, int fd)
+printfd_pid(struct tcb *tcp, pid_t pid, int fd)
 {
        char path[PATH_MAX + 1];
-       if (show_fd_path && getfdpath(tcp, fd, path, sizeof(path)) >= 0) {
-               tprintf("%d<", fd);
-               if (show_fd_path <= 1
-                   || (!printsocket(tcp, fd, path)
-                        && !printdev(tcp, fd, path))) {
-                       print_quoted_string_ex(path, strlen(path),
-                               QUOTE_OMIT_LEADING_TRAILING_QUOTES, "<>");
-               }
+       if (pid > 0 && !number_set_array_is_empty(decode_fd_set, 0)
+           && getfdpath_pid(pid, fd, path, sizeof(path)) >= 0) {
+               tprintf("%d<", (int) fd);
+               if (is_number_in_set(DECODE_FD_SOCKET, decode_fd_set) &&
+                   printsocket(tcp, fd, path))
+                       goto printed;
+               if (is_number_in_set(DECODE_FD_DEV, decode_fd_set) &&
+                   printdev(tcp, fd, path))
+                       goto printed;
+               if (is_number_in_set(DECODE_FD_PIDFD, decode_fd_set) &&
+                   printpidfd(pid, fd, path))
+                       goto printed;
+               print_quoted_string_ex(path, strlen(path),
+                       QUOTE_OMIT_LEADING_TRAILING_QUOTES, "<>");
+
+printed:
                tprints(">");
-       } else
+       } else {
                tprintf("%d", fd);
+       }
+}
+
+void
+printfd_pid_tracee_ns(struct tcb *tcp, pid_t pid, int fd)
+{
+       int strace_pid = translate_pid(tcp, pid, PT_TGID, NULL);
+       printfd_pid(tcp, strace_pid, fd);
 }
 
 /*
@@ -857,7 +1022,7 @@ printstr_ex(struct tcb *const tcp, const kernel_ulong_t addr,
         */
        ellipsis = string_quote(str, outstr, size, style, NULL)
                   && len
-                  && ((style & QUOTE_0_TERMINATED)
+                  && ((style & (QUOTE_0_TERMINATED | QUOTE_EXPECT_TRAILING_0))
                       || len > max_strlen);
 
        tprints(outstr);
@@ -867,6 +1032,49 @@ printstr_ex(struct tcb *const tcp, const kernel_ulong_t addr,
        return rc;
 }
 
+bool
+print_nonzero_bytes(struct tcb *const tcp, const char *prefix,
+                   const kernel_ulong_t start_addr,
+                   const unsigned int start_offs,
+                   const unsigned int total_len,
+                   const unsigned int style)
+{
+       if (start_offs >= total_len)
+               return false;
+
+       const kernel_ulong_t addr = start_addr + start_offs;
+       const unsigned int len = total_len - start_offs;
+       const unsigned int size = MIN(len, max_strlen);
+
+       char *str = malloc(len);
+
+       if (!str) {
+               error_func_msg("memory exhausted when tried to allocate"
+                               " %u bytes", len);
+               tprintf("%s???", prefix);
+               return true;
+       }
+
+       bool ret = true;
+
+       if (umoven(tcp, addr, len, str)) {
+               tprintf("%s???", prefix);
+       } else if (is_filled(str, 0, len)) {
+               ret = false;
+       } else {
+               tprints(prefix);
+               tprintf("/* bytes %u..%u */ ", start_offs, total_len - 1);
+
+               print_quoted_string(str, size, style);
+
+               if (size < len)
+                       tprints("...");
+       }
+
+       free(str);
+       return ret;
+}
+
 void
 dumpiov_upto(struct tcb *const tcp, const int len, const kernel_ulong_t addr,
             kernel_ulong_t data_size)
@@ -925,66 +1133,6 @@ dumpiov_upto(struct tcb *const tcp, const int len, const kernel_ulong_t addr,
 #undef iov
 }
 
-#define ILOG2_ITER_(val_, ret_, bit_)                                  \
-       do {                                                            \
-               typeof(ret_) shift_ =                                   \
-                       ((val_) > ((((typeof(val_)) 1)                  \
-                                  << (1 << (bit_))) - 1)) << (bit_);   \
-               (val_) >>= shift_;                                      \
-               (ret_) |= shift_;                                       \
-       } while (0)
-
-/**
- * Calculate floor(log2(val)), with the exception of val == 0, for which 0
- * is returned as well.
- *
- * @param val 64-bit value to calculate integer base-2 logarithm for.
- * @return    (unsigned int) floor(log2(val)) if val > 0, 0 if val == 0.
- */
-static inline unsigned int
-ilog2_64(uint64_t val)
-{
-       unsigned int ret = 0;
-
-       ILOG2_ITER_(val, ret, 5);
-       ILOG2_ITER_(val, ret, 4);
-       ILOG2_ITER_(val, ret, 3);
-       ILOG2_ITER_(val, ret, 2);
-       ILOG2_ITER_(val, ret, 1);
-       ILOG2_ITER_(val, ret, 0);
-
-       return ret;
-}
-
-/**
- * Calculate floor(log2(val)), with the exception of val == 0, for which 0
- * is returned as well.
- *
- * @param val 32-bit value to calculate integer base-2 logarithm for.
- * @return    (unsigned int) floor(log2(val)) if val > 0, 0 if val == 0.
- */
-static inline unsigned int
-ilog2_32(uint32_t val)
-{
-       unsigned int ret = 0;
-
-       ILOG2_ITER_(val, ret, 4);
-       ILOG2_ITER_(val, ret, 3);
-       ILOG2_ITER_(val, ret, 2);
-       ILOG2_ITER_(val, ret, 1);
-       ILOG2_ITER_(val, ret, 0);
-
-       return ret;
-}
-
-#undef ILOG2_ITER_
-
-#if SIZEOF_KERNEL_LONG_T > 4
-# define ilog2_klong ilog2_64
-#else
-# define ilog2_klong ilog2_32
-#endif
-
 void
 dumpstr(struct tcb *const tcp, const kernel_ulong_t addr,
        const kernel_ulong_t len)
@@ -1185,6 +1333,24 @@ print_uint64_array_member(struct tcb *tcp, void *elem_buf, size_t elem_size,
        return true;
 }
 
+bool
+print_xint32_array_member(struct tcb *tcp, void *elem_buf, size_t elem_size,
+                         void *data)
+{
+       tprintf("%#" PRIx32, *(uint32_t *) elem_buf);
+
+       return true;
+}
+
+bool
+print_xint64_array_member(struct tcb *tcp, void *elem_buf, size_t elem_size,
+                         void *data)
+{
+       tprintf("%#" PRIx64, *(uint64_t *) elem_buf);
+
+       return true;
+}
+
 /*
  * Iteratively fetch and print up to nmemb elements of elem_size size
  * from the array that starts at tracee's address start_addr.
@@ -1220,14 +1386,13 @@ bool
 print_array_ex(struct tcb *const tcp,
               const kernel_ulong_t start_addr,
               const size_t nmemb,
-              void *const elem_buf,
+              void *elem_buf,
               const size_t elem_size,
               tfetch_mem_fn tfetch_mem_func,
               print_fn print_func,
               void *const opaque_data,
               unsigned int flags,
               const struct xlat *index_xlat,
-              size_t index_xlat_size,
               const char *index_dflt)
 {
        if (!start_addr) {
@@ -1244,7 +1409,10 @@ print_array_ex(struct tcb *const tcp,
        const kernel_ulong_t end_addr = start_addr + size;
 
        if (end_addr <= start_addr || size / elem_size != nmemb) {
-               printaddr(start_addr);
+               if (tfetch_mem_func)
+                       printaddr(start_addr);
+               else
+                       tprints("???");
                return false;
        }
 
@@ -1254,19 +1422,25 @@ print_array_ex(struct tcb *const tcp,
        kernel_ulong_t cur;
        kernel_ulong_t idx = 0;
        enum xlat_style xlat_style = flags & XLAT_STYLE_MASK;
+       bool truncated = false;
 
        for (cur = start_addr; cur < end_addr; cur += elem_size, idx++) {
                if (cur != start_addr)
                        tprints(", ");
 
-               if (!tfetch_mem_func(tcp, cur, elem_size, elem_buf)) {
-                       if (cur == start_addr)
-                               printaddr(cur);
-                       else {
-                               tprints("...");
-                               printaddr_comment(cur);
+               if (tfetch_mem_func) {
+                       if (!tfetch_mem_func(tcp, cur, elem_size, elem_buf)) {
+                               if (cur == start_addr)
+                                       printaddr(cur);
+                               else {
+                                       tprints("...");
+                                       printaddr_comment(cur);
+                                       truncated = true;
+                               }
+                               break;
                        }
-                       break;
+               } else {
+                       elem_buf = (void *) (uintptr_t) cur;
                }
 
                if (cur == start_addr)
@@ -1275,6 +1449,7 @@ print_array_ex(struct tcb *const tcp,
                if (cur >= abbrev_end) {
                        tprints("...");
                        cur = end_addr;
+                       truncated = true;
                        break;
                }
 
@@ -1283,15 +1458,9 @@ print_array_ex(struct tcb *const tcp,
 
                        if (!index_xlat) {
                                print_xlat_ex(idx, NULL, xlat_style);
-                       } else if (flags & PAF_INDEX_XLAT_VALUE_INDEXED) {
-                               printxval_indexn_ex(index_xlat,
-                                                   index_xlat_size, idx,
-                                                   index_dflt, xlat_style);
                        } else {
-                               printxvals_ex(idx, index_dflt, xlat_style,
-                                             (flags & PAF_INDEX_XLAT_SORTED)
-                                               && idx ? NULL : index_xlat,
-                                             NULL);
+                               printxval_ex(idx ? NULL : index_xlat, idx,
+                                            index_dflt, xlat_style);
                        }
 
                        tprints("] = ");
@@ -1302,8 +1471,17 @@ print_array_ex(struct tcb *const tcp,
                        break;
                }
        }
-       if (cur != start_addr)
+
+       if ((cur != start_addr) || !tfetch_mem_func) {
+               if ((flags & PAF_ARRAY_TRUNCATED) && !truncated) {
+                       if (cur != start_addr)
+                               tprints(", ");
+
+                       tprints("...");
+               }
+
                tprints("]");
+       }
 
        return cur >= end_addr;
 }
@@ -1352,7 +1530,7 @@ print_abnormal_hi(const kernel_ulong_t val)
 }
 
 int
-read_int_from_file(struct tcb *tcp, const char *const fname, int *const pvalue)
+read_int_from_file(const char *const fname, int *const pvalue)
 {
        const int fd = open_file(fname, O_RDONLY);
        if (fd < 0)
index bee7809867246f298e7f0dde2ba24e5c07043379..d969133a3aa9694ffe82bab93ccccd7c1574e274 100644 (file)
--- a/utimes.c
+++ b/utimes.c
@@ -26,6 +26,7 @@ SYS_FUNC(utimes)
 SYS_FUNC(futimesat)
 {
        print_dirfd(tcp, tcp->u_arg[0]);
+       tprints(", ");
        printpath(tcp, tcp->u_arg[1]);
        tprints(", ");
        print_timeval_utimes(tcp, tcp->u_arg[2]);
@@ -37,6 +38,7 @@ static int
 do_utimensat(struct tcb *const tcp, const print_obj_by_addr_fn print_ts)
 {
        print_dirfd(tcp, tcp->u_arg[0]);
+       tprints(", ");
        printpath(tcp, tcp->u_arg[1]);
        tprints(", ");
        print_ts(tcp, tcp->u_arg[2]);
diff --git a/v4l2.c b/v4l2.c
index b325cf8b3606da5e0caa9e02a6211c0437d58af7..3a1c49d2f417308892336cb8d03b2d5f8e1776df 100644 (file)
--- a/v4l2.c
+++ b/v4l2.c
@@ -2,7 +2,7 @@
  * Copyright (c) 2014 Philippe De Muyter <phdm@macqel.be>
  * Copyright (c) 2014 William Manley <will@williammanley.net>
  * Copyright (c) 2011 Peter Zotov <whitequark@whitequark.org>
- * Copyright (c) 2014-2019 The strace developers.
+ * Copyright (c) 2014-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
 
 #include "defs.h"
 
-#include <stdint.h>
-#include <linux/ioctl.h>
-#include <linux/types.h>
-#include <linux/videodev2.h>
-
-#include DEF_MPERS_TYPE(struct_v4l2_buffer)
+#include "static_assert.h"
+
+#define CHECK_V4L2_STRUCT_SIZE(s_) \
+       static_assert(sizeof(struct s_) == sizeof(struct_##s_), \
+                     "Unexpected struct " #s_ " size")
+#define CHECK_V4L2_STRUCT_SIZE_LE(s_) \
+       static_assert(sizeof(struct s_) <= sizeof(struct_##s_), \
+                     "Unexpected struct " #s_ " size, " \
+                     "please update the decoder")
+#define CHECK_V4L2_RESERVED_SIZE(s_) \
+       static_assert(sizeof_field(struct s_, reserved) \
+                     >= sizeof_field(struct_##s_, reserved), \
+                     "Unexpected struct " #s_ ".reserved size, " \
+                     "please update the decoder")
+#define CHECK_V4L2_STRUCT_RESERVED_SIZE(s_) \
+       CHECK_V4L2_STRUCT_SIZE(s_); \
+       CHECK_V4L2_RESERVED_SIZE(s_)
+
+#include DEF_MPERS_TYPE(kernel_v4l2_buffer_t)
+#include DEF_MPERS_TYPE(kernel_v4l2_event_t)
 #include DEF_MPERS_TYPE(struct_v4l2_clip)
-#ifdef VIDIOC_CREATE_BUFS
-# include DEF_MPERS_TYPE(struct_v4l2_create_buffers)
-#endif
+#include DEF_MPERS_TYPE(struct_v4l2_create_buffers)
 #include DEF_MPERS_TYPE(struct_v4l2_ext_control)
 #include DEF_MPERS_TYPE(struct_v4l2_ext_controls)
 #include DEF_MPERS_TYPE(struct_v4l2_format)
 #include DEF_MPERS_TYPE(struct_v4l2_input)
 #include DEF_MPERS_TYPE(struct_v4l2_standard)
 
-typedef struct v4l2_buffer struct_v4l2_buffer;
-typedef struct v4l2_clip struct_v4l2_clip;
-#ifdef VIDIOC_CREATE_BUFS
-typedef struct v4l2_create_buffers struct_v4l2_create_buffers;
+#include "kernel_v4l2_types.h"
+
+CHECK_V4L2_STRUCT_RESERVED_SIZE(v4l2_capability);
+CHECK_V4L2_STRUCT_SIZE_LE(v4l2_pix_format);
+#ifdef HAVE_STRUCT_V4L2_PLANE_PIX_FORMAT
+CHECK_V4L2_STRUCT_RESERVED_SIZE(v4l2_plane_pix_format);
+#endif
+#ifdef HAVE_STRUCT_V4L2_PIX_FORMAT_MPLANE
+CHECK_V4L2_STRUCT_RESERVED_SIZE(v4l2_pix_format_mplane);
+#endif
+CHECK_V4L2_STRUCT_SIZE(v4l2_clip);
+CHECK_V4L2_STRUCT_SIZE_LE(v4l2_window);
+CHECK_V4L2_STRUCT_RESERVED_SIZE(v4l2_vbi_format);
+CHECK_V4L2_STRUCT_RESERVED_SIZE(v4l2_sliced_vbi_format);
+CHECK_V4L2_STRUCT_RESERVED_SIZE(v4l2_sliced_vbi_cap);
+#ifdef HAVE_STRUCT_V4L2_SDR_FORMAT
+CHECK_V4L2_STRUCT_RESERVED_SIZE(v4l2_sdr_format);
+#endif
+#ifdef HAVE_STRUCT_V4L2_META_FORMAT
+CHECK_V4L2_STRUCT_SIZE(v4l2_meta_format);
+#endif
+CHECK_V4L2_STRUCT_SIZE(v4l2_format);
+#ifdef HAVE_STRUCT_V4L2_FRMSIZEENUM
+CHECK_V4L2_STRUCT_RESERVED_SIZE(v4l2_frmsizeenum);
+#endif
+#ifdef HAVE_STRUCT_V4L2_FRMIVALENUM
+CHECK_V4L2_STRUCT_RESERVED_SIZE(v4l2_frmivalenum);
+#endif
+#ifdef HAVE_STRUCT_V4L2_CREATE_BUFFERS
+CHECK_V4L2_STRUCT_RESERVED_SIZE(v4l2_create_buffers);
 #endif
-typedef struct v4l2_ext_control struct_v4l2_ext_control;
-typedef struct v4l2_ext_controls struct_v4l2_ext_controls;
-typedef struct v4l2_format struct_v4l2_format;
-typedef struct v4l2_framebuffer struct_v4l2_framebuffer;
-typedef struct v4l2_input struct_v4l2_input;
-typedef struct v4l2_standard struct_v4l2_standard;
 
 #include MPERS_DEFS
 
@@ -47,7 +79,11 @@ typedef struct v4l2_standard struct_v4l2_standard;
 
 /* v4l2_fourcc_be was added by Linux commit v3.18-rc1~101^2^2~127 */
 #ifndef v4l2_fourcc_be
-# define v4l2_fourcc_be(a, b, c, d) (v4l2_fourcc(a, b, c, d) | (1 << 31))
+# define v4l2_fourcc_be(a, b, c, d) (v4l2_fourcc(a, b, c, d) | (1U << 31))
+#endif
+
+#ifndef VIDEO_MAX_PLANES
+# define VIDEO_MAX_PLANES 8
 #endif
 
 #define FMT_FRACT "%u/%u"
@@ -59,9 +95,18 @@ typedef struct v4l2_standard struct_v4l2_standard;
 #include "xlat/v4l2_pix_fmts.h"
 #include "xlat/v4l2_sdr_fmts.h"
 
+#define XLAT_MACROS_ONLY
+# include "xlat/v4l2_ioctl_cmds.h"
+#undef XLAT_MACROS_ONLY
+
 static void
 print_pixelformat(uint32_t fourcc, const struct xlat *xlat)
 {
+       if (xlat_verbose(xlat_verbosity) == XLAT_STYLE_RAW) {
+               tprintf("%#x", fourcc);
+               return;
+       }
+
        unsigned char a[] = {
                (unsigned char) fourcc,
                (unsigned char) (fourcc >> 8),
@@ -117,7 +162,7 @@ print_pixelformat(uint32_t fourcc, const struct xlat *xlat)
 static int
 print_v4l2_capability(struct tcb *const tcp, const kernel_ulong_t arg)
 {
-       struct v4l2_capability caps;
+       struct_v4l2_capability caps;
 
        if (entering(tcp))
                return 0;
@@ -127,17 +172,16 @@ print_v4l2_capability(struct tcb *const tcp, const kernel_ulong_t arg)
        PRINT_FIELD_CSTRING("{", caps, driver);
        PRINT_FIELD_CSTRING(", ", caps, card);
        PRINT_FIELD_CSTRING(", ", caps, bus_info);
-       tprintf(", version=%u.%u.%u, capabilities=",
-               (caps.version >> 16) & 0xFF,
-               (caps.version >> 8) & 0xFF,
-               caps.version & 0xFF);
+       tprints(", version=");
+       print_kernel_version(caps.version);
+       tprints(", capabilities=");
        printflags(v4l2_device_capabilities_flags, caps.capabilities,
                   "V4L2_CAP_???");
-#ifdef V4L2_CAP_DEVICE_CAPS
-       tprints(", device_caps=");
-       printflags(v4l2_device_capabilities_flags, caps.device_caps,
-                  "V4L2_CAP_???");
-#endif
+       if (caps.device_caps) {
+               tprints(", device_caps=");
+               printflags(v4l2_device_capabilities_flags, caps.device_caps,
+                          "V4L2_CAP_???");
+       }
        tprints("}");
        return RVAL_IOCTL_DECODED;
 }
@@ -204,7 +248,6 @@ print_v4l2_format_fmt(struct tcb *const tcp, const char *prefix,
                          "V4L2_COLORSPACE_???");
                tprints("}");
                break;
-#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
        case V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE:
        case V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE: {
                unsigned int i, max;
@@ -233,11 +276,8 @@ print_v4l2_format_fmt(struct tcb *const tcp, const char *prefix,
                        (unsigned) f->fmt.pix_mp.num_planes);
                break;
        }
-#endif
        /* OUTPUT_OVERLAY since Linux v2.6.22-rc1~1118^2~179 */
-#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY
        case V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY:
-#endif
        case V4L2_BUF_TYPE_VIDEO_OVERLAY: {
                struct_v4l2_clip clip;
                tprints(prefix);
@@ -250,9 +290,8 @@ print_v4l2_format_fmt(struct tcb *const tcp, const char *prefix,
                                  tfetch_mem, print_v4l2_clip, 0);
                tprintf(", clipcount=%u, bitmap=", f->fmt.win.clipcount);
                printaddr(ptr_to_kulong(f->fmt.win.bitmap));
-#ifdef HAVE_STRUCT_V4L2_WINDOW_GLOBAL_ALPHA
-               tprintf(", global_alpha=%#x", f->fmt.win.global_alpha);
-#endif
+               if (f->fmt.win.global_alpha)
+                       tprintf(", global_alpha=%#x", f->fmt.win.global_alpha);
                tprints("}");
                break;
        }
@@ -264,15 +303,14 @@ print_v4l2_format_fmt(struct tcb *const tcp, const char *prefix,
                        f->fmt.vbi.sampling_rate, f->fmt.vbi.offset,
                        f->fmt.vbi.samples_per_line);
                print_pixelformat(f->fmt.vbi.sample_format, v4l2_pix_fmts);
-               tprintf(", start=[%u, %u], count=[%u, %u], ",
+               tprintf(", start=[%d, %d], count=[%u, %u], ",
                        f->fmt.vbi.start[0], f->fmt.vbi.start[1],
                        f->fmt.vbi.count[0], f->fmt.vbi.count[1]);
                tprints("flags=");
-               printxval(v4l2_vbi_flags, f->fmt.vbi.flags, "V4L2_VBI_???");
+               printflags(v4l2_vbi_flags, f->fmt.vbi.flags, "V4L2_VBI_???");
                tprints("}");
                break;
        /* both since Linux v2.6.14-rc2~64 */
-#if HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE
        case V4L2_BUF_TYPE_SLICED_VBI_CAPTURE:
        case V4L2_BUF_TYPE_SLICED_VBI_OUTPUT: {
                unsigned int i, j;
@@ -300,24 +338,20 @@ print_v4l2_format_fmt(struct tcb *const tcp, const char *prefix,
                tprints("]}");
                break;
        }
-#endif
        /* since Linux v4.4-rc1~118^2~14 */
-#if HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT
        case V4L2_BUF_TYPE_SDR_OUTPUT:
-#endif
        /* since Linux v3.15-rc1~85^2~213 */
-#if HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE
        case V4L2_BUF_TYPE_SDR_CAPTURE:
                tprints(prefix);
                tprints("fmt.sdr={pixelformat=");
                print_pixelformat(f->fmt.sdr.pixelformat, v4l2_sdr_fmts);
-# ifdef HAVE_STRUCT_V4L2_SDR_FORMAT_BUFFERSIZE
-               tprintf(", buffersize=%u",
-                       f->fmt.sdr.buffersize);
-# endif
+               if (f->fmt.sdr.buffersize)
+                       tprintf(", buffersize=%u",
+                               f->fmt.sdr.buffersize);
                tprints("}");
                break;
-#endif
+       default:
+               return false;
        }
        return ret;
 }
@@ -345,7 +379,7 @@ print_v4l2_format(struct tcb *const tcp, const kernel_ulong_t arg,
        }
 
        if (!syserror(tcp) && !umove(tcp, arg, &f))
-               print_v4l2_format_fmt(tcp, is_get ? ", " : " => ", &f);
+               print_v4l2_format_fmt(tcp, is_get ? ", " : "} => {", &f);
 
        tprints("}");
 
@@ -365,7 +399,7 @@ print_v4l2_requestbuffers(struct tcb *const tcp, const kernel_ulong_t arg)
                if (umove_or_printaddr(tcp, arg, &reqbufs))
                        return RVAL_IOCTL_DECODED;
 
-               tprintf("{type=");
+               tprints("{type=");
                printxval(v4l2_buf_types, reqbufs.type, "V4L2_BUF_TYPE_???");
                tprints(", memory=");
                printxval(v4l2_memories, reqbufs.memory, "V4L2_MEMORY_???");
@@ -389,12 +423,41 @@ print_v4l2_requestbuffers(struct tcb *const tcp, const kernel_ulong_t arg)
 }
 
 #include "xlat/v4l2_buf_flags.h"
+#include "xlat/v4l2_buf_flags_ts_type.h"
+#include "xlat/v4l2_buf_flags_ts_src.h"
+
+#define XLAT_MACROS_ONLY
+# include "xlat/v4l2_buf_flags_masks.h"
+#undef XLAT_MACROS_ONLY
+
+static void
+print_v4l2_buffer_flags(uint32_t val)
+{
+       const uint32_t ts_type = val & V4L2_BUF_FLAG_TIMESTAMP_MASK;
+       const uint32_t ts_src  = val & V4L2_BUF_FLAG_TSTAMP_SRC_MASK;
+       const uint32_t flags   = val & ~ts_type & ~ts_src;
+
+       if (xlat_verbose(xlat_verbosity) == XLAT_STYLE_RAW) {
+               tprintf("%#" PRIx32, val);
+               return;
+       }
+
+       if (flags) {
+               printflags(v4l2_buf_flags, flags, "V4L2_BUF_FLAG_???");
+               tprints("|");
+       }
+       printxval(v4l2_buf_flags_ts_type, ts_type,
+                 "V4L2_BUF_FLAG_TIMESTAMP_???");
+       tprints("|");
+       printxval(v4l2_buf_flags_ts_src, ts_src,
+                 "V4L2_BUF_FLAG_TSTAMP_SRC_???");
+}
 
 static int
 print_v4l2_buffer(struct tcb *const tcp, const unsigned int code,
                  const kernel_ulong_t arg)
 {
-       struct_v4l2_buffer b;
+       kernel_v4l2_buffer_t b;
 
        if (entering(tcp)) {
                tprints(", ");
@@ -423,10 +486,18 @@ print_v4l2_buffer(struct tcb *const tcp, const unsigned int code,
 
                tprintf(", length=%u, bytesused=%u, flags=",
                        b.length, b.bytesused);
-               printflags(v4l2_buf_flags, b.flags, "V4L2_BUF_FLAG_???");
+               print_v4l2_buffer_flags(b.flags);
                if (code == VIDIOC_DQBUF) {
-                       tprints(", timestamp = ");
-                       MPERS_FUNC_NAME(print_struct_timeval)(&b.timestamp);
+                       tprints(", timestamp=");
+                       kernel_timeval64_t t;
+                       if (sizeof(t.tv_usec) == sizeof(b.timestamp.tv_usec)) {
+                               print_timeval64_data_size(&b.timestamp,
+                                                         sizeof(b.timestamp));
+                       } else {
+                               t.tv_sec = b.timestamp.tv_sec;
+                               t.tv_usec = zero_extend_signed_to_ull(b.timestamp.tv_usec);
+                               print_timeval64_data_size(&t, sizeof(t));
+                       }
                }
                tprints(", ...");
        }
@@ -497,7 +568,7 @@ print_v4l2_streamparm(struct tcb *const tcp, const kernel_ulong_t arg,
                        tprints("}");
                        return RVAL_IOCTL_DECODED;
                }
-               tprints(is_get ? ", " : " => ");
+               tprints(is_get ? ", " : "} => {");
        }
 
        if (s.type == V4L2_BUF_TYPE_VIDEO_CAPTURE) {
@@ -512,7 +583,7 @@ print_v4l2_streamparm(struct tcb *const tcp, const kernel_ulong_t arg,
                tprintf(", timeperframe=" FMT_FRACT,
                        ARGS_FRACT(s.parm.capture.timeperframe));
 
-               tprintf(", extendedmode=%u, readbuffers=%u}",
+               tprintf(", extendedmode=%#x, readbuffers=%u}",
                        s.parm.capture.extendedmode,
                        s.parm.capture.readbuffers);
        } else {
@@ -520,12 +591,14 @@ print_v4l2_streamparm(struct tcb *const tcp, const kernel_ulong_t arg,
                printflags(v4l2_streaming_capabilities,
                           s.parm.output.capability, "V4L2_CAP_???");
 
-               tprintf(", outputmode=%u", s.parm.output.outputmode);
+               tprints(", outputmode=");
+               printflags(v4l2_capture_modes,
+                          s.parm.output.outputmode, "V4L2_MODE_???");
 
                tprintf(", timeperframe=" FMT_FRACT,
                        ARGS_FRACT(s.parm.output.timeperframe));
 
-               tprintf(", extendedmode=%u, writebuffers=%u}",
+               tprintf(", extendedmode=%#x, writebuffers=%u}",
                        s.parm.output.extendedmode,
                        s.parm.output.writebuffers);
        }
@@ -555,7 +628,7 @@ print_v4l2_standard(struct tcb *const tcp, const kernel_ulong_t arg)
                PRINT_FIELD_CSTRING(", ", s, name);
                tprintf(", frameperiod=" FMT_FRACT,
                        ARGS_FRACT(s.frameperiod));
-               tprintf(", framelines=%d", s.framelines);
+               tprintf(", framelines=%u", s.framelines);
        }
 
        tprints("}");
@@ -597,6 +670,52 @@ print_v4l2_input(struct tcb *const tcp, const kernel_ulong_t arg)
 #include "xlat/v4l2_control_classes.h"
 #include "xlat/v4l2_control_id_bases.h"
 #include "xlat/v4l2_control_ids.h"
+#include "xlat/v4l2_control_query_flags.h"
+
+static void
+print_v4l2_cid(uint32_t cid, bool next_flags)
+{
+       if (xlat_verbose(xlat_verbosity) == XLAT_STYLE_RAW) {
+               tprintf("%#x", cid);
+               return;
+       }
+
+       if (next_flags) {
+               uint32_t flags = cid & v4l2_control_query_flags->flags_mask;
+
+               if (flags) {
+                       printflags(v4l2_control_query_flags, flags,
+                                  "V4L2_CTRL_FLAG_NEXT_???");
+                       tprints("|");
+
+                       cid &= ~flags;
+               }
+       }
+
+       const char *id_name = xlookup(v4l2_control_ids, cid);
+
+       if (id_name) {
+               print_xlat_ex(cid, id_name, XLAT_STYLE_DEFAULT);
+               return;
+       }
+
+       uint64_t class_id = cid;
+       const char *class_str = xlookup_le(v4l2_control_classes, &class_id);
+
+       if (!class_str || (cid - class_id) >= 0x10000) {
+               print_xlat_ex(cid, "V4L2_CID_???", PXF_DEFAULT_STR);
+               return;
+       }
+
+       /*
+        * As of now, the longest control class name is V4L2_CTRL_CLASS_IMAGE_SOURCE,
+        * of 28 characters long.
+        */
+       char tmp_str[64 + sizeof("+%#") + sizeof(class_id) * 2];
+
+       xsprintf(tmp_str, "%s+%#" PRIx64, class_str, cid - class_id);
+       print_xlat_ex(cid, tmp_str, XLAT_STYLE_DEFAULT);
+}
 
 static int
 print_v4l2_control(struct tcb *const tcp, const kernel_ulong_t arg,
@@ -608,16 +727,16 @@ print_v4l2_control(struct tcb *const tcp, const kernel_ulong_t arg,
                tprints(", ");
                if (umove_or_printaddr(tcp, arg, &c))
                        return RVAL_IOCTL_DECODED;
+
                tprints("{id=");
-               printxval(v4l2_control_ids, c.id, "V4L2_CID_???");
+               print_v4l2_cid(c.id, false);
                if (!is_get)
                        tprintf(", value=%d", c.value);
                return 0;
        }
 
        if (!syserror(tcp) && !umove(tcp, arg, &c)) {
-               tprints(is_get ? ", " : " => ");
-               tprintf("value=%d", c.value);
+               tprintf("%s%d", is_get ? ", value=" : " => ", c.value);
        }
 
        tprints("}");
@@ -648,18 +767,18 @@ print_v4l2_tuner(struct tcb *const tcp, const kernel_ulong_t arg,
                        tprints("}");
                        return RVAL_IOCTL_DECODED;
                }
-               tprints(is_get ? ", " : " => ");
+               tprints(is_get ? ", " : "} => {");
        }
 
        PRINT_FIELD_CSTRING("", c, name);
        tprints(", type=");
-       printxval(v4l2_tuner_types, c.type, "V4L2_TUNER_TYPE_???");
+       printxval(v4l2_tuner_types, c.type, "V4L2_TUNER_???");
        tprints(", capability=");
-       printxval(v4l2_tuner_capabilities, c.capability,
+       printflags(v4l2_tuner_capabilities, c.capability,
                  "V4L2_TUNER_CAP_???");
        tprintf(", rangelow=%u, rangehigh=%u, rxsubchans=",
                c.rangelow, c.rangehigh);
-       printxval(v4l2_tuner_rxsubchanses, c.rxsubchans,
+       printflags(v4l2_tuner_rxsubchanses, c.rxsubchans,
                  "V4L2_TUNER_SUB_???");
        tprints(", audmode=");
        printxval(v4l2_tuner_audmodes, c.audmode,
@@ -686,40 +805,45 @@ print_v4l2_queryctrl(struct tcb *const tcp, const kernel_ulong_t arg)
                tprints(", ");
                if (umove_or_printaddr(tcp, arg, &c))
                        return RVAL_IOCTL_DECODED;
+               set_tcb_priv_ulong(tcp, c.id);
                tprints("{id=");
-       } else {
-               if (syserror(tcp) || umove(tcp, arg, &c) < 0) {
-                       tprints("}");
-                       return RVAL_IOCTL_DECODED;
-               }
-               if (get_tcb_priv_ulong(tcp))
-                       tprints(" => ");
-       }
+               print_v4l2_cid(c.id, true);
 
-       if (entering(tcp) || get_tcb_priv_ulong(tcp)) {
-#ifdef V4L2_CTRL_FLAG_NEXT_CTRL
-               const unsigned long next = c.id & V4L2_CTRL_FLAG_NEXT_CTRL;
-               set_tcb_priv_ulong(tcp, next);
-               if (next) {
-                       print_xlat(V4L2_CTRL_FLAG_NEXT_CTRL);
-                       tprints("|");
-                       c.id &= ~V4L2_CTRL_FLAG_NEXT_CTRL;
-               }
-#endif
-               printxval(v4l2_control_ids, c.id, "V4L2_CID_???");
+               return 0;
        }
 
-       if (exiting(tcp)) {
-               tprints(", type=");
-               printxval(v4l2_control_types, c.type, "V4L2_CTRL_TYPE_???");
-               PRINT_FIELD_CSTRING(", ", c, name);
-               tprintf(", minimum=%d, maximum=%d, step=%d"
-                       ", default_value=%d, flags=",
-                       c.minimum, c.maximum, c.step, c.default_value);
-               printflags(v4l2_control_flags, c.flags, "V4L2_CTRL_FLAG_???");
+       /* exiting */
+       if (syserror(tcp) || umove(tcp, arg, &c) < 0) {
                tprints("}");
+               return RVAL_IOCTL_DECODED;
+       }
+
+       unsigned long entry_id = get_tcb_priv_ulong(tcp);
+
+       if (c.id != entry_id) {
+               tprints(" => ");
+               print_v4l2_cid(c.id, false);
+       }
+
+       PRINT_FIELD_XVAL(", ", c, type, v4l2_control_types,
+                        "V4L2_CTRL_TYPE_???");
+       PRINT_FIELD_CSTRING(", ", c, name);
+       if (!abbrev(tcp)) {
+               PRINT_FIELD_D(", ", c, minimum);
+               PRINT_FIELD_D(", ", c, maximum);
+               PRINT_FIELD_D(", ", c, step);
+               PRINT_FIELD_D(", ", c, default_value);
+               PRINT_FIELD_FLAGS(", ", c, flags, v4l2_control_flags,
+                                 "V4L2_CTRL_FLAG_???");
+               if (!IS_ARRAY_ZERO(c.reserved))
+                       PRINT_FIELD_ARRAY(", ", c, reserved, tcp,
+                                         print_xint32_array_member);
+       } else {
+               tprints(", ...");
        }
-       return entering(tcp) ? 0 : RVAL_IOCTL_DECODED;
+       tprints("}");
+
+       return RVAL_IOCTL_DECODED;
 }
 
 static int
@@ -776,7 +900,6 @@ print_v4l2_crop(struct tcb *const tcp, const kernel_ulong_t arg,
        return RVAL_IOCTL_DECODED;
 }
 
-#ifdef VIDIOC_S_EXT_CTRLS
 static bool
 print_v4l2_ext_control(struct tcb *tcp, void *elem_buf, size_t elem_size, void *data)
 {
@@ -784,14 +907,13 @@ print_v4l2_ext_control(struct tcb *tcp, void *elem_buf, size_t elem_size, void *
 
        tprints("{id=");
        printxval(v4l2_control_ids, p->id, "V4L2_CID_???");
-# if HAVE_DECL_V4L2_CTRL_TYPE_STRING
        tprintf(", size=%u", p->size);
        if (p->size > 0) {
                tprints(", string=");
                printstrn(tcp, ptr_to_kulong(p->string), p->size);
-       } else
-# endif
-       tprintf(", value=%d, value64=%" PRId64, p->value, (int64_t) p->value64);
+       } else {
+               tprintf(", value=%d, value64=%" PRId64, p->value, p->value64);
+       }
        tprints("}");
 
        return true;
@@ -823,7 +945,7 @@ print_v4l2_ext_controls(struct tcb *const tcp, const kernel_ulong_t arg,
                        tprints("}");
                        return RVAL_IOCTL_DECODED;
                }
-               tprints(is_get ? ", " : " => ");
+               tprints(is_get ? ", " : "} => {");
        }
 
        tprints("controls=");
@@ -844,15 +966,13 @@ print_v4l2_ext_controls(struct tcb *const tcp, const kernel_ulong_t arg,
        /* entering */
        return 0;
 }
-#endif /* VIDIOC_S_EXT_CTRLS */
 
-#ifdef VIDIOC_ENUM_FRAMESIZES
-# include "xlat/v4l2_framesize_types.h"
+#include "xlat/v4l2_framesize_types.h"
 
 static int
 print_v4l2_frmsizeenum(struct tcb *const tcp, const kernel_ulong_t arg)
 {
-       struct v4l2_frmsizeenum s;
+       struct_v4l2_frmsizeenum s;
 
        if (entering(tcp)) {
                tprints(", ");
@@ -884,15 +1004,13 @@ print_v4l2_frmsizeenum(struct tcb *const tcp, const kernel_ulong_t arg)
        tprints("}");
        return RVAL_IOCTL_DECODED;
 }
-#endif /* VIDIOC_ENUM_FRAMESIZES */
 
-#ifdef VIDIOC_ENUM_FRAMEINTERVALS
-# include "xlat/v4l2_frameinterval_types.h"
+#include "xlat/v4l2_frameinterval_types.h"
 
 static int
 print_v4l2_frmivalenum(struct tcb *const tcp, const kernel_ulong_t arg)
 {
-       struct v4l2_frmivalenum f;
+       struct_v4l2_frmivalenum f;
 
        if (entering(tcp)) {
                tprints(", ");
@@ -928,9 +1046,7 @@ print_v4l2_frmivalenum(struct tcb *const tcp, const kernel_ulong_t arg)
 
        return RVAL_IOCTL_DECODED;
 }
-#endif /* VIDIOC_ENUM_FRAMEINTERVALS */
 
-#ifdef VIDIOC_CREATE_BUFS
 static int
 print_v4l2_create_buffers(struct tcb *const tcp, const kernel_ulong_t arg)
 {
@@ -962,7 +1078,6 @@ print_v4l2_create_buffers(struct tcb *const tcp, const kernel_ulong_t arg)
 
        return RVAL_IOCTL_DECODED | RVAL_STR;
 }
-#endif /* VIDIOC_CREATE_BUFS */
 
 MPERS_PRINTER_DECL(int, v4l2_ioctl, struct tcb *const tcp,
                   const unsigned int code, const kernel_ulong_t arg)
@@ -1047,28 +1162,20 @@ MPERS_PRINTER_DECL(int, v4l2_ioctl, struct tcb *const tcp,
        case VIDIOC_S_CROP: /* W */
                return print_v4l2_crop(tcp, arg, code == VIDIOC_G_CROP);
 
-#ifdef VIDIOC_S_EXT_CTRLS
        case VIDIOC_S_EXT_CTRLS: /* RW */
        case VIDIOC_TRY_EXT_CTRLS: /* RW */
        case VIDIOC_G_EXT_CTRLS: /* RW */
                return print_v4l2_ext_controls(tcp, arg,
                                               code == VIDIOC_G_EXT_CTRLS);
-#endif /* VIDIOC_S_EXT_CTRLS */
 
-#ifdef VIDIOC_ENUM_FRAMESIZES
        case VIDIOC_ENUM_FRAMESIZES: /* RW */
                return print_v4l2_frmsizeenum(tcp, arg);
-#endif /* VIDIOC_ENUM_FRAMESIZES */
 
-#ifdef VIDIOC_ENUM_FRAMEINTERVALS
        case VIDIOC_ENUM_FRAMEINTERVALS: /* RW */
                return print_v4l2_frmivalenum(tcp, arg);
-#endif /* VIDIOC_ENUM_FRAMEINTERVALS */
 
-#ifdef VIDIOC_CREATE_BUFS
        case VIDIOC_CREATE_BUFS: /* RW */
                return print_v4l2_create_buffers(tcp, arg);
-#endif /* VIDIOC_CREATE_BUFS */
 
        default:
                return RVAL_DECODED;
diff --git a/wait.c b/wait.c
index dbc917b1bb7cf4a15dd61bdbcd80f584d4310191..177427c8265bda6b954335dda5d680ab49e6f09b 100644 (file)
--- a/wait.c
+++ b/wait.c
@@ -7,7 +7,7 @@
  * Copyright (c) 2004 Ulrich Drepper <drepper@redhat.com>
  * Copyright (c) 2009-2013 Denys Vlasenko <dvlasenk@redhat.com>
  * Copyright (c) 2014-2015 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2014-2018 The strace developers.
+ * Copyright (c) 2014-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -80,14 +80,8 @@ printwaitn(struct tcb *const tcp,
           void (*const print_rusage)(struct tcb *, kernel_ulong_t))
 {
        if (entering(tcp)) {
-               /* On Linux, kernel-side pid_t is typedef'ed to int
-                * on all arches. Also, glibc-2.8 truncates wait3 and wait4
-                * pid argument to int on 64bit arches, producing,
-                * for example, wait4(4294967295, ...) instead of -1
-                * in strace. We have to use int here, not long.
-                */
-               int pid = tcp->u_arg[0];
-               tprintf("%d, ", pid);
+               printpid_tgid_pgid(tcp, tcp->u_arg[0]);
+               tprintf(", ");
        } else {
                int status;
 
@@ -108,7 +102,7 @@ printwaitn(struct tcb *const tcp,
                                printaddr(tcp->u_arg[3]);
                }
        }
-       return 0;
+       return RVAL_TGID;
 }
 
 SYS_FUNC(waitpid)
@@ -116,10 +110,12 @@ SYS_FUNC(waitpid)
        return printwaitn(tcp, NULL);
 }
 
+#if HAVE_ARCH_TIME32_SYSCALLS || HAVE_ARCH_OLD_TIME64_SYSCALLS
 SYS_FUNC(wait4)
 {
        return printwaitn(tcp, printrusage);
 }
+#endif
 
 #ifdef ALPHA
 SYS_FUNC(osf_wait4)
@@ -132,10 +128,28 @@ SYS_FUNC(osf_wait4)
 
 SYS_FUNC(waitid)
 {
+       unsigned int idtype = (unsigned int) tcp->u_arg[0];
+       int id = tcp->u_arg[1];
+
        if (entering(tcp)) {
-               printxval(waitid_types, tcp->u_arg[0], "P_???");
-               int pid = tcp->u_arg[1];
-               tprintf(", %d, ", pid);
+               printxval(waitid_types, idtype, "P_???");
+               tprints(", ");
+               switch (idtype)
+               {
+               case P_PID:
+                       printpid(tcp, id, PT_TGID);
+                       break;
+               case P_PIDFD:
+                       printfd(tcp, id);
+                       break;
+               case P_PGID:
+                       printpid(tcp, id, PT_PGID);
+                       break;
+               default:
+                       tprintf("%d", id);
+                       break;
+               }
+               tprints(", ");
        } else {
                /* siginfo */
                printsiginfo_at(tcp, tcp->u_arg[2]);
diff --git a/watchdog_ioctl.c b/watchdog_ioctl.c
new file mode 100644 (file)
index 0000000..179ed8b
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2019 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#include "defs.h"
+#include "print_fields.h"
+
+#include <linux/watchdog.h>
+
+#define XLAT_MACROS_ONLY
+#include "xlat/watchdog_ioctl_cmds.h"
+#undef XLAT_MACROS_ONLY
+
+int
+watchdog_ioctl(struct tcb *const tcp, const unsigned int code,
+          const kernel_ulong_t arg)
+{
+       switch (code) {
+       case WDIOC_GETSTATUS:
+       case WDIOC_GETBOOTSTATUS:
+       case WDIOC_GETTEMP:
+       case WDIOC_GETTIMEOUT:
+       case WDIOC_GETPRETIMEOUT:
+       case WDIOC_GETTIMELEFT:
+               if (entering(tcp))
+                       return 0;
+               ATTRIBUTE_FALLTHROUGH;
+       case WDIOC_SETTIMEOUT:
+       case WDIOC_SETPRETIMEOUT:
+               tprints(", ");
+               printnum_int(tcp, arg, "%d");
+               break;
+
+       /*
+        * linux/watchdog.h says that this takes an int, but in
+        * practice the argument is ignored.
+        */
+       case WDIOC_KEEPALIVE:
+               break;
+       default:
+               return RVAL_DECODED;
+       }
+       return RVAL_IOCTL_DECODED;
+}
diff --git a/xgetdents.c b/xgetdents.c
new file mode 100644 (file)
index 0000000..80bf49f
--- /dev/null
@@ -0,0 +1,141 @@
+/*
+ * Copyright (c) 2020 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#include "xgetdents.h"
+#include "kernel_dirent.h"
+
+static void
+decode_dents(struct tcb *const tcp, kernel_ulong_t addr, unsigned int len,
+            const unsigned int header_size,
+            const decode_dentry_head_fn decode_dentry_head,
+            const decode_dentry_tail_fn decode_dentry_tail)
+{
+       union {
+               kernel_dirent_t ent;
+               kernel_dirent64_t ent64;
+       } dent;
+       unsigned int count = 0;
+
+       if (abbrev(tcp))
+               printaddr(addr);
+
+       for (;;) {
+               if (len < header_size) {
+                       if (!abbrev(tcp)) {
+                               if (!len) {
+                                       tprints("[");
+                                       ++count;
+                               } else {
+                                       printstr_ex(tcp, addr, len,
+                                                   QUOTE_FORCE_HEX);
+                               }
+                       }
+                       break;
+               }
+
+               /* len >= header_size after this point.  */
+               if (!tfetch_mem(tcp, addr, header_size, &dent)) {
+                       if (!abbrev(tcp)) {
+                               if (count) {
+                                       tprints("...");
+                                       printaddr_comment(addr);
+                               } else {
+                                       printaddr(addr);
+                               }
+                       }
+
+                       break;
+               }
+
+               if (!abbrev(tcp)) {
+                       if (!count)
+                               tprints("[");
+               }
+               ++count;
+
+               kernel_ulong_t next_addr = 0;
+               unsigned int next_len = 0;
+               unsigned int d_reclen = decode_dentry_head(tcp, &dent);
+
+               if (d_reclen > len) {
+                       /* cannot happen? */
+                       tprintf_comment("%s%u bytes overflow",
+                                       (abbrev(tcp) ? "d_reclen " : ""),
+                                       d_reclen - len);
+                       d_reclen = len;
+               } else if (d_reclen < header_size) {
+                       /* cannot happen? */
+                       tprintf_comment("%s%u bytes underflow",
+                                       (abbrev(tcp) ? "d_reclen " : ""),
+                                       header_size - d_reclen);
+                       d_reclen = header_size;
+                       next_len = len - header_size;
+               } else {
+                       next_len = len - d_reclen;
+                       if (next_len) {
+                               if (addr + d_reclen > addr) {
+                                       next_addr = addr + d_reclen;
+                               } else {
+                                       /* cannot happen? */
+                                       tprints_comment("address overflow");
+                               }
+                       }
+               }
+
+               len = next_len;
+               /* Do not use len inside the loop after this point.  */
+
+               if (!abbrev(tcp)) {
+                       int rc = decode_dentry_tail(tcp, addr + header_size,
+                                                  &dent,
+                                                  d_reclen - header_size);
+                       if (next_addr) {
+                               tprints(", ");
+                               if (rc < 0) {
+                                       tprints("...");
+                                       break;
+                               }
+                       }
+               }
+
+               if (!next_addr)
+                       break;
+               addr = next_addr;
+       }
+
+       if (!abbrev(tcp)) {
+               if (count)
+                       tprints("]");
+       } else {
+               tprintf_comment("%u%s entries", count, len ? "+" : "");
+       }
+}
+
+int
+xgetdents(struct tcb *const tcp, const unsigned int header_size,
+         const decode_dentry_head_fn decode_dentry_head,
+         const decode_dentry_tail_fn decode_dentry_tail)
+{
+       if (entering(tcp)) {
+               printfd(tcp, tcp->u_arg[0]);
+               tprints(", ");
+               return 0;
+       }
+
+       const unsigned int count = tcp->u_arg[2];
+
+       if (syserror(tcp) || !verbose(tcp) ||
+           (kernel_ulong_t) tcp->u_rval > count /* kernel gone bananas? */) {
+               printaddr(tcp->u_arg[1]);
+       } else {
+               decode_dents(tcp, tcp->u_arg[1], tcp->u_rval, header_size,
+                            decode_dentry_head, decode_dentry_tail);
+       }
+
+       tprintf(", %u", count);
+       return 0;
+}
diff --git a/xgetdents.h b/xgetdents.h
new file mode 100644 (file)
index 0000000..968057b
--- /dev/null
@@ -0,0 +1,21 @@
+/*
+ * Copyright (c) 2020 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#ifndef STRACE_XGETDENTS_H
+# define STRACE_XGETDENTS_H
+
+# include "defs.h"
+
+typedef unsigned int (*decode_dentry_head_fn)(struct tcb *, const void *);
+typedef int (*decode_dentry_tail_fn)(struct tcb *, kernel_ulong_t,
+                                    const void *, unsigned int);
+
+extern int
+xgetdents(struct tcb *, unsigned int header_size,
+         decode_dentry_head_fn, decode_dentry_tail_fn);
+
+#endif /* !STRACE_XGETDENTS_H */
diff --git a/xlat.c b/xlat.c
index 62245f9cb2900e47e47394abfef63b135711516e..bc3378cee3a4fc57f4de2370460dc4de3820d973 100644 (file)
--- a/xlat.c
+++ b/xlat.c
@@ -3,7 +3,7 @@
  * Copyright (c) 1993 Branko Lankester <branko@hacktic.nl>
  * Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com>
  * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
- * Copyright (c) 1999-2018 The strace developers.
+ * Copyright (c) 1999-2020 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -50,49 +50,159 @@ print_xlat_val(uint64_t val, enum xlat_style style)
        tprints(sprint_xlat_val(val, style));
 }
 
+static int
+xlat_bsearch_compare(const void *a, const void *b)
+{
+       const uint64_t val1 = *(const uint64_t *) a;
+       const uint64_t val2 = ((const struct xlat_data *) b)->val;
+       return (val1 > val2) ? 1 : (val1 < val2) ? -1 : 0;
+}
+
 const char *
 xlookup(const struct xlat *xlat, const uint64_t val)
 {
-       static const struct xlat *pos;
+       static const struct xlat *x;
+       static size_t idx;
+       const struct xlat_data *e;
+
+       if (xlat) {
+               x = xlat;
+               idx = 0;
+       }
+
+       if (!x || !x->data)
+               return NULL;
+
+       switch (x->type) {
+       case XT_NORMAL:
+               for (; idx < x->size; idx++)
+                       if (x->data[idx].val == val)
+                               return x->data[idx].str;
+               break;
 
-       if (xlat)
-               pos = xlat;
+       case XT_SORTED:
+               e = bsearch((const void *) &val,
+                           x->data + idx,
+                           x->size - idx,
+                           sizeof(x->data[0]),
+                           xlat_bsearch_compare);
+               if (e) {
+                       idx = e - x->data;
+                       return e->str;
+               }
+               break;
+
+       case XT_INDEXED:
+               if (val < x->size) {
+                       if (val == x->data[val].val)
+                               return x->data[val].str;
+                       if (x->data[val].val == 0)
+                               break; /* a hole in the index */
+                       error_func_msg("Unexpected xlat value %" PRIu64
+                                      " at index %" PRIu64 " (str %s)",
+                                      x->data[val].val, val,
+                                      x->data[val].str);
+               }
+               break;
+
+       default:
+               error_func_msg("Invalid xlat type: %#x", x->type);
+       }
 
-       for (; pos->str != NULL; pos++)
-               if (pos->val == val)
-                       return pos->str;
        return NULL;
 }
 
-static int
-xlat_bsearch_compare(const void *a, const void *b)
+static const char *
+xlat_search_eq_or_less(const struct xlat *xlat, uint64_t *val)
 {
-       const uint64_t val1 = *(const uint64_t *) a;
-       const uint64_t val2 = ((const struct xlat *) b)->val;
-       return (val1 > val2) ? 1 : (val1 < val2) ? -1 : 0;
+       const struct xlat_data *base = xlat->data;
+       const struct xlat_data *cur = xlat->data;
+       size_t nmemb = xlat->size;
+
+       for (; nmemb > 0; nmemb >>= 1) {
+               cur = base + (nmemb >> 1);
+
+               if (*val == cur->val)
+                       return cur->str;
+
+               if (*val > cur->val) {
+                       base = cur + 1;
+                       nmemb--;
+               }
+       }
+
+       if (*val < cur->val) {
+               if (cur > xlat->data)
+                       cur--;
+               else
+                       return NULL;
+       }
+
+       *val = cur->val;
+       return cur->str;
 }
 
 const char *
-xlat_search(const struct xlat *xlat, const size_t nmemb, const uint64_t val)
+xlookup_le(const struct xlat *xlat, uint64_t *val)
 {
-       static const struct xlat *pos;
-       static size_t memb_left;
+       if (!xlat || !xlat->data)
+               return NULL;
 
-       if (xlat) {
-               pos = xlat;
-               memb_left = nmemb;
+       switch (xlat->type) {
+       case XT_SORTED:
+               return xlat_search_eq_or_less(xlat, val);
+
+#if 0 /* enable when used */
+       case XT_NORMAL: {
+               uint64_t best_hit = 0;
+               const char *str = NULL;
+
+               for (size_t idx = 0; idx < xlat->size; idx++) {
+                       if (xlat->data[idx].val == *val)
+                               return xlat->data[idx].str;
+
+                       if (xlat->data[idx].val < *val
+                           && xlat->data[idx].val > best_hit) {
+                               best_hit = xlat->data[idx].val;
+                               str = xlat->data[idx].str;
+                       }
+               }
+
+               *val = best_hit;
+               return str;
        }
 
-       const struct xlat *e =
-               bsearch((const void *) &val,
-                       pos, memb_left, sizeof(*pos), xlat_bsearch_compare);
+       case XT_INDEXED: {
+               size_t idx = *val;
 
-       if (e) {
-               memb_left -= e - pos;
-               return e->str;
-       } else {
+               if (idx >= xlat->size) {
+                       if (!xlat->size)
+                               return NULL;
+
+                       idx = xlat->size - 1;
+               }
+
+               do {
+                       if (idx == xlat->data[idx].val && xlat->data[idx].str) {
+                               *val = idx;
+                               return xlat->data[idx].str;
+                       }
+                       if (xlat->data[idx].val == 0)
+                               continue; /* a hole in the index */
+                       error_func_msg("Unexpected xlat value %" PRIu64
+                                      " at index %zu (str %s)",
+                                      xlat->data[idx].val, idx,
+                                      xlat->data[idx].str);
+               } while (idx--);
                return NULL;
        }
+#endif
+
+       default:
+               error_func_msg("Invalid xlat type: %#x", xlat->type);
+       }
+
+       return NULL;
 }
 
 /**
@@ -180,94 +290,6 @@ sprintxval_ex(char *const buf, const size_t size, const struct xlat *const x,
        return xsnprintf(buf, size, "%s", sprint_xlat_val(val, style));
 }
 
-/**
- * Print entry in sorted struct xlat table, if it is there.
- *
- * @param xlat      Pointer to an array of xlat values (not terminated with
- *                  XLAT_END).
- * @param xlat_size Number of xlat elements present in array (usually ARRAY_SIZE
- *                  if array is declared in the unit's scope and not
- *                  terminated with XLAT_END).
- * @param val       Value to search literal representation for.
- * @param dflt      String (abbreviated in comment syntax) which should be
- *                  emitted if no appropriate xlat value has been found.
- * @param style     Style in which xlat value should be printed.
- * @param fn        Search function.
- * @return          1 if appropriate xlat value has been found, 0
- *                  otherwise.
- */
-static int
-printxval_sized(const struct xlat *xlat, size_t xlat_size, uint64_t val,
-               const char *dflt, enum xlat_style style,
-               const char *(* fn)(const struct xlat *, size_t, uint64_t))
-{
-       style = get_xlat_style(style);
-
-       if (xlat_verbose(style) == XLAT_STYLE_RAW) {
-               print_xlat_val(val, style);
-               return 0;
-       }
-
-       const char *s = fn(xlat, xlat_size, val);
-
-       if (s) {
-               if (xlat_verbose(style) == XLAT_STYLE_VERBOSE) {
-                       print_xlat_val(val, style);
-                       tprints_comment(s);
-               } else {
-                       tprints(s);
-               }
-               return 1;
-       }
-
-       print_xlat_val(val, style);
-       tprints_comment(dflt);
-
-       return 0;
-}
-
-int
-printxval_searchn_ex(const struct xlat *xlat, size_t xlat_size, uint64_t val,
-                    const char *dflt, enum xlat_style style)
-{
-       return printxval_sized(xlat, xlat_size, val, dflt, style,
-                                 xlat_search);
-}
-
-const char *
-xlat_idx(const struct xlat *xlat, size_t nmemb, uint64_t val)
-{
-       static const struct xlat *pos;
-       static size_t memb_left;
-
-       if (xlat) {
-               pos = xlat;
-               memb_left = nmemb;
-       }
-
-       if (val >= memb_left)
-               return NULL;
-
-       if (val != pos[val].val) {
-               if (pos[val].val == 0)
-                       return NULL;    /* a hole in the index */
-
-               error_func_msg("Unexpected xlat value %" PRIu64
-                              " at index %" PRIu64,
-                              pos[val].val, val);
-               return NULL;
-       }
-
-       return pos[val].str;
-}
-
-int
-printxval_indexn_ex(const struct xlat *xlat, size_t xlat_size, uint64_t val,
-                   const char *dflt, enum xlat_style style)
-{
-       return printxval_sized(xlat, xlat_size, val, dflt, style, xlat_idx);
-}
-
 /*
  * Interpret `xlat' as an array of flags.
  * Print to static string the entries whose bits are on in `flags'
@@ -292,7 +314,7 @@ printxval_indexn_ex(const struct xlat *xlat, size_t xlat_size, uint64_t val,
  */
 const char *
 sprintflags_ex(const char *prefix, const struct xlat *xlat, uint64_t flags,
-              enum xlat_style style)
+              char sep, enum xlat_style style)
 {
        static char outstr[1024];
        char *outptr;
@@ -305,43 +327,55 @@ sprintflags_ex(const char *prefix, const struct xlat *xlat, uint64_t flags,
                if (!flags)
                        return NULL;
 
+               if (sep)
+                       *outptr++ = sep;
                outptr = xappendstr(outstr, outptr, "%s",
                                    sprint_xlat_val(flags, style));
 
                return outstr;
        }
 
-       if (flags == 0 && xlat->val == 0 && xlat->str) {
+       if (flags == 0 && xlat->data->val == 0 && xlat->data->str) {
+               if (sep)
+                       *outptr++ = sep;
                if (xlat_verbose(style) == XLAT_STYLE_VERBOSE) {
                        outptr = xappendstr(outstr, outptr, "0 /* %s */",
-                                           xlat->str);
+                                           xlat->data->str);
                } else {
-                       strcpy(outptr, xlat->str);
+                       strcpy(outptr, xlat->data->str);
                }
 
                return outstr;
        }
 
-       if (xlat_verbose(style) == XLAT_STYLE_VERBOSE && flags)
+       if (xlat_verbose(style) == XLAT_STYLE_VERBOSE && flags) {
+               if (sep) {
+                       *outptr++ = sep;
+                       sep = '\0';
+               }
                outptr = xappendstr(outstr, outptr, "%s",
                                    sprint_xlat_val(flags, style));
+       }
 
-       for (; flags && xlat->str; xlat++) {
-               if (xlat->val && (flags & xlat->val) == xlat->val) {
-                       if (found)
-                               *outptr++ = '|';
-                       else if (xlat_verbose(style) == XLAT_STYLE_VERBOSE)
+       for (size_t idx = 0; flags && idx < xlat->size; idx++) {
+               if (xlat->data[idx].val && xlat->data[idx].str
+                   && (flags & xlat->data[idx].val) == xlat->data[idx].val) {
+                       if (sep) {
+                               *outptr++ = sep;
+                       } else if (xlat_verbose(style) == XLAT_STYLE_VERBOSE) {
                                outptr = stpcpy(outptr, " /* ");
+                       }
 
-                       outptr = stpcpy(outptr, xlat->str);
+                       outptr = stpcpy(outptr, xlat->data[idx].str);
                        found = 1;
-                       flags &= ~xlat->val;
+                       sep = '|';
+                       flags &= ~xlat->data[idx].val;
                }
        }
 
        if (flags) {
-               if (found)
-                       *outptr++ = '|';
+               if (sep)
+                       *outptr++ = sep;
                if (found || xlat_verbose(style) != XLAT_STYLE_VERBOSE)
                        outptr = xappendstr(outstr, outptr, "%s",
                                            sprint_xlat_val(flags, style));
@@ -407,15 +441,17 @@ printflags_ex(uint64_t flags, const char *dflt, enum xlat_style style,
 
        va_start(args, xlat);
        for (; xlat; xlat = va_arg(args, const struct xlat *)) {
-               for (; (flags || !n) && xlat->str; ++xlat) {
-                       if ((flags == xlat->val) ||
-                           (xlat->val && (flags & xlat->val) == xlat->val)) {
+               for (size_t idx = 0; (flags || !n) && idx < xlat->size; ++idx) {
+                       uint64_t v = xlat->data[idx].val;
+                       if (xlat->data[idx].str
+                           && ((flags == v) || (v && (flags & v) == v))) {
                                if (xlat_verbose(style) == XLAT_STYLE_VERBOSE
                                    && !flags)
                                        tprints("0");
                                tprintf("%s%s",
-                                       (n++ ? "|" : init_sep), xlat->str);
-                               flags &= ~xlat->val;
+                                       (n++ ? "|" : init_sep),
+                                       xlat->data[idx].str);
+                               flags &= ~v;
                        }
                        if (!flags)
                                break;
@@ -447,7 +483,7 @@ printflags_ex(uint64_t flags, const char *dflt, enum xlat_style style,
 }
 
 void
-print_xlat_ex(const uint64_t val, const char *str, enum xlat_style style)
+print_xlat_ex(const uint64_t val, const char *str, uint32_t style)
 {
        bool default_str = style & PXF_DEFAULT_STR;
        style = get_xlat_style(style);
@@ -478,23 +514,3 @@ print_xlat_ex(const uint64_t val, const char *str, enum xlat_style style)
                tprints_comment(str);
        }
 }
-
-void
-printxval_dispatch_ex(const struct xlat *xlat, size_t xlat_size, uint64_t val,
-                     const char *dflt, enum xlat_type xt,
-                     enum xlat_style style)
-{
-       switch (xt) {
-       case XT_NORMAL:
-               printxvals_ex(val, dflt, style, xlat, NULL);
-               break;
-
-       case XT_SORTED:
-               printxval_searchn_ex(xlat, xlat_size, val, dflt, style);
-               break;
-
-       case XT_INDEXED:
-               printxval_indexn_ex(xlat, xlat_size, val, dflt, style);
-               break;
-       }
-}
diff --git a/xlat.h b/xlat.h
index 366678acd6535287171d999195b4c59fadbf5921..05311bf983f4d9e8518d95b37e5f7dafcb853cd4 100644 (file)
--- a/xlat.h
+++ b/xlat.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2018 The strace developers.
+ * Copyright (c) 2016-2019 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: LGPL-2.1-or-later
@@ -48,15 +48,22 @@ enum xlat_style {
 # define XLAT_STYLE_MASK ((1 << XLAT_STYLE_SPEC_BITS) - 1)
 };
 
-struct xlat {
+struct xlat_data {
        uint64_t val;
        const char *str;
 };
 
+struct xlat {
+       const struct xlat_data *data;
+       size_t flags_strsz;
+       uint32_t size;
+       enum xlat_type type;
+       uint64_t flags_mask;
+};
+
 # define XLAT(val)                     { (unsigned)(val), #val }
 # define XLAT_PAIR(val, str)           { (unsigned)(val), str  }
 # define XLAT_TYPE(type, val)          {     (type)(val), #val }
 # define XLAT_TYPE_PAIR(type, val, str)        {     (type)(val), str  }
-# define XLAT_END                      {               0, 0    }
 
 #endif /* !STRACE_XLAT_H */
index e7ac1c38d2bbddab36c8da0181cf9540306a7b3c..884ef6d4aa1cb79cab7f7dddc06c3aa2b19d99cb 100644 (file)
@@ -1,6 +1,6 @@
-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/af_packet_versions.in xlat/aio_cmds.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/ax25_protocols.in xlat/baud_options.in xlat/bdaddr_types.in xlat/blkpg_ops.in xlat/block_ioctl_cmds.in xlat/bluetooth_l2_cid.in xlat/bluetooth_l2_psm.in xlat/bootflags1.in xlat/bootflags2.in xlat/bootflags3.in xlat/bpf_attach_flags.in xlat/bpf_attach_type.in xlat/bpf_class.in xlat/bpf_commands.in xlat/bpf_file_mode_flags.in xlat/bpf_map_flags.in xlat/bpf_map_types.in xlat/bpf_map_update_elem_flags.in xlat/bpf_miscop.in xlat/bpf_mode.in xlat/bpf_op_alu.in xlat/bpf_op_jmp.in xlat/bpf_prog_flags.in xlat/bpf_prog_types.in xlat/bpf_query_flags.in xlat/bpf_rval.in xlat/bpf_size.in xlat/bpf_src.in xlat/bpf_task_fd_type.in xlat/bsg_flags.in xlat/bsg_protocol.in xlat/bsg_subprotocol.in xlat/bt_protocols.in xlat/btrfs_balance_args.in xlat/btrfs_balance_ctl_cmds.in xlat/btrfs_balance_flags.in xlat/btrfs_balance_state.in xlat/btrfs_compress_types.in xlat/btrfs_cont_reading_from_srcdev_mode.in xlat/btrfs_defrag_flags.in xlat/btrfs_dev_replace_cmds.in xlat/btrfs_dev_replace_results.in xlat/btrfs_dev_replace_state.in xlat/btrfs_dev_stats_flags.in xlat/btrfs_dev_stats_values.in xlat/btrfs_features_compat.in xlat/btrfs_features_compat_ro.in xlat/btrfs_features_incompat.in xlat/btrfs_key_types.in xlat/btrfs_logical_ino_args_flags.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/caif_protocols.in xlat/can_protocols.in xlat/cap.in xlat/cap_mask0.in xlat/cap_mask1.in xlat/cap_version.in xlat/clockflags.in xlat/clocknames.in xlat/clone_flags.in xlat/cpuclocknames.in xlat/crypto_nl_attrs.in xlat/dcb_commands.in xlat/delete_module_flags.in xlat/dirent_types.in xlat/dm_flags.in xlat/ebpf_class.in xlat/ebpf_mode.in xlat/ebpf_op_alu.in xlat/ebpf_op_jmp.in xlat/ebpf_regs.in xlat/ebpf_size.in xlat/efd_flags.in xlat/epollctls.in xlat/epollevents.in xlat/epollflags.in xlat/ethernet_protocols.in xlat/evdev_abs.in xlat/evdev_autorepeat.in xlat/evdev_ev.in 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/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/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/futexbitset.in xlat/futexops.in xlat/futexwakecmps.in xlat/futexwakeops.in xlat/getrandom_flags.in xlat/getsock_ip_options.in xlat/getsock_ipv6_options.in xlat/getsock_options.in xlat/hci_channels.in xlat/hw_breakpoint_len.in xlat/hw_breakpoint_type.in xlat/icmpfilterflags.in xlat/if_dqblk_valid.in xlat/if_dqinfo_flags.in xlat/if_dqinfo_valid.in xlat/ifaddrflags.in xlat/iffflags.in xlat/in6_addr_gen_mode.in xlat/inet6_devconf_indices.in xlat/inet6_if_flags.in xlat/inet_devconf_indices.in xlat/inet_diag_attrs.in xlat/inet_diag_bytecodes.in xlat/inet_diag_extended_flags.in xlat/inet_diag_req_attrs.in xlat/inet_protocols.in xlat/inotify_flags.in xlat/inotify_init_flags.in xlat/ioctl_dirs.in xlat/ioprio_class.in xlat/ioprio_who.in xlat/ip_cmsg_types.in xlat/ip_type_of_services.in xlat/ipc_msg_flags.in xlat/ipc_private.in xlat/ipccalls.in xlat/irda_protocols.in xlat/isdn_protocols.in xlat/itimer_which.in xlat/kcm_protocols.in xlat/kcmp_types.in xlat/kexec_arch_values.in xlat/kexec_file_load_flags.in xlat/kexec_load_flags.in xlat/key_perms.in xlat/key_reqkeys.in xlat/key_spec.in xlat/keyctl_commands.in xlat/kvm_cap.in xlat/kvm_cpuid_flags.in xlat/kvm_exit_reason.in xlat/kvm_mem_flags.in xlat/lockfcmds.in xlat/loop_cmds.in xlat/loop_crypt_type_options.in xlat/loop_flags_options.in xlat/lwtunnel_encap_types.in xlat/madvise_cmds.in xlat/mbindflags.in xlat/mctl_sync.in xlat/mdb_flags.in xlat/mdb_states.in xlat/membarrier_cmds.in xlat/memfd_create_flags.in xlat/mempolicyflags.in xlat/mlock_flags.in xlat/mlockall_flags.in xlat/mmap_flags.in xlat/mmap_prot.in xlat/modem_flags.in xlat/modetypes.in xlat/module_init_flags.in xlat/mount_flags.in xlat/move_pages_flags.in xlat/mq_attr_flags.in xlat/mremap_flags.in xlat/msg_flags.in xlat/msgctl_flags.in xlat/mtd_file_mode_options.in xlat/mtd_flags_options.in xlat/mtd_mode_options.in xlat/mtd_nandecc_options.in xlat/mtd_otp_options.in xlat/mtd_type_options.in xlat/multicast_router_types.in xlat/name_to_handle_at_flags.in xlat/nbd_ioctl_cmds.in xlat/nbd_ioctl_flags.in xlat/neighbor_cache_entry_flags.in xlat/neighbor_cache_entry_states.in xlat/netfilter_versions.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_sk_meminfo_indices.in xlat/netlink_socket_flags.in xlat/netlink_states.in xlat/netlink_types.in xlat/nf_acct_msg_types.in xlat/nf_cthelper_msg_types.in 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/nfc_protocols.in xlat/nl_audit_types.in xlat/nl_crypto_types.in xlat/nl_netfilter_msg_types.in xlat/nl_netfilter_subsys_ids.in xlat/nl_route_types.in xlat/nl_selinux_types.in xlat/nl_sock_diag_types.in xlat/nl_xfrm_types.in xlat/nlmsgerr_attrs.in xlat/notifyflags.in xlat/nt_descriptor_types.in xlat/numa_node.in xlat/open_access_modes.in xlat/open_mode_flags.in xlat/packet_diag_attrs.in xlat/packet_diag_info_flags.in xlat/packet_diag_show.in xlat/packet_mreq_type.in xlat/perf_attr_size.in 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_ioctl_cmds.in xlat/perf_ioctl_flags.in xlat/perf_sw_ids.in xlat/perf_type_id.in xlat/personality_flags.in xlat/personality_types.in xlat/phonet_protocols.in xlat/pkey_access.in xlat/policies.in xlat/pollflags.in xlat/pr_cap_ambient.in xlat/pr_dumpable.in xlat/pr_fp_mode.in xlat/pr_mce_kill.in xlat/pr_mce_kill_policy.in xlat/pr_set_mm.in xlat/pr_spec_cmds.in xlat/pr_spec_get_store_bypass_flags.in xlat/pr_spec_set_store_bypass_flags.in xlat/pr_sve_vl_flags.in xlat/pr_tsc.in xlat/pr_unalign_flags.in xlat/prctl_options.in xlat/priorities.in xlat/ptp_flags_options.in xlat/ptrace_cmds.in xlat/ptrace_events.in xlat/ptrace_peeksiginfo_flags.in xlat/ptrace_setoptions_flags.in xlat/ptrace_syscall_info_op.in xlat/quota_formats.in xlat/quotacmds.in xlat/quotatypes.in xlat/random_ioctl_cmds.in xlat/rename_flags.in xlat/resource_flags.in xlat/resources.in xlat/riscv_flush_icache_flags.in xlat/route_nexthop_flags.in xlat/routing_flags.in xlat/routing_protocols.in xlat/routing_scopes.in xlat/routing_table_ids.in xlat/routing_types.in xlat/rtnl_addr_attrs.in xlat/rtnl_addrlabel_attrs.in xlat/rtnl_dcb_attrs.in xlat/rtnl_ifla_af_spec_inet6_attrs.in xlat/rtnl_ifla_af_spec_inet_attrs.in xlat/rtnl_ifla_brport_attrs.in xlat/rtnl_ifla_events.in xlat/rtnl_ifla_info_attrs.in xlat/rtnl_ifla_info_data_bridge_attrs.in xlat/rtnl_ifla_info_data_tun_attrs.in xlat/rtnl_ifla_port_attrs.in xlat/rtnl_ifla_vf_port_attrs.in xlat/rtnl_ifla_xdp_attached_mode.in xlat/rtnl_ifla_xdp_attrs.in xlat/rtnl_link_attrs.in xlat/rtnl_mdb_attrs.in xlat/rtnl_mdba_mdb_attrs.in xlat/rtnl_mdba_mdb_eattr_attrs.in xlat/rtnl_mdba_mdb_entry_attrs.in xlat/rtnl_mdba_router_attrs.in xlat/rtnl_mdba_router_pattr_attrs.in xlat/rtnl_neigh_attrs.in xlat/rtnl_neightbl_attrs.in xlat/rtnl_neightbl_parms_attrs.in xlat/rtnl_netconf_attrs.in xlat/rtnl_nsid_attrs.in xlat/rtnl_route_attrs.in xlat/rtnl_rta_metrics_attrs.in xlat/rtnl_rule_attrs.in xlat/rtnl_tc_action_attrs.in xlat/rtnl_tc_attrs.in xlat/rtnl_tca_stab_attrs.in xlat/rtnl_tca_stats_attrs.in xlat/rwf_flags.in xlat/s390_guarded_storage_commands.in xlat/s390_runtime_instr_commands.in xlat/s390_sthyi_function_codes.in xlat/sa_handler_values.in xlat/sched_flags.in xlat/schedulers.in xlat/scmvals.in xlat/scsi_sg_commands.in xlat/secbits.in xlat/seccomp_filter_flags.in xlat/seccomp_mode.in xlat/seccomp_ops.in xlat/seccomp_ret_action.in xlat/semctl_flags.in xlat/semop_flags.in xlat/setns_types.in xlat/setsock_ip_options.in xlat/setsock_ipv6_options.in xlat/setsock_options.in xlat/sfd_flags.in xlat/sg_io_dxfer_direction.in xlat/sg_io_flags.in xlat/sg_io_info.in xlat/sg_scsi_reset.in xlat/shm_flags.in xlat/shm_resource_flags.in xlat/shmctl_flags.in xlat/shutdown_modes.in xlat/sigact_flags.in xlat/sigaltstack_flags.in xlat/sigbus_codes.in xlat/sigchld_codes.in xlat/sigemt_codes.in xlat/sigev_value.in xlat/sigfpe_codes.in xlat/sigill_codes.in xlat/siginfo_codes.in xlat/sigpoll_codes.in xlat/sigprocmaskcmds.in xlat/sigprof_codes.in xlat/sigsegv_codes.in xlat/sigsys_codes.in xlat/sigtrap_codes.in xlat/skf_ad.in xlat/skf_off.in xlat/smc_decl_codes.in xlat/smc_diag_attrs.in xlat/smc_diag_extended_flags.in xlat/smc_diag_mode.in xlat/smc_link_group_roles.in xlat/smc_protocols.in xlat/smc_states.in xlat/snmp_icmp6_stats.in xlat/snmp_ip_stats.in xlat/sock_alg_options.in xlat/sock_ax25_options.in xlat/sock_bluetooth_options.in xlat/sock_caif_options.in xlat/sock_dccp_options.in xlat/sock_ip_options.in xlat/sock_ipv6_options.in xlat/sock_ipx_options.in xlat/sock_irda_options.in xlat/sock_iucv_options.in xlat/sock_kcm_options.in xlat/sock_llc_options.in xlat/sock_netlink_options.in xlat/sock_nfcllcp_options.in xlat/sock_options.in xlat/sock_packet_options.in xlat/sock_pnp_options.in xlat/sock_pppol2tp_options.in xlat/sock_raw_options.in xlat/sock_rds_options.in xlat/sock_rxrpc_options.in xlat/sock_sctp_options.in xlat/sock_shutdown_flags.in xlat/sock_tcp_options.in xlat/sock_tipc_options.in xlat/sock_tls_options.in xlat/sock_type_flags.in xlat/sock_udp_options.in xlat/sock_xdp_options.in xlat/socketcalls.in xlat/socketlayers.in xlat/socktypes.in xlat/sparc_kern_features.in xlat/splice_flags.in xlat/sram_alloc_flags.in xlat/statfs_flags.in xlat/statx_attrs.in xlat/statx_masks.in xlat/swap_flags.in xlat/sync_file_range_flags.in xlat/sysctl_kern.in xlat/sysctl_net.in xlat/sysctl_net_core.in xlat/sysctl_net_ipv4.in xlat/sysctl_net_ipv4_conf.in xlat/sysctl_net_ipv4_route.in xlat/sysctl_net_ipv6.in xlat/sysctl_net_ipv6_route.in xlat/sysctl_net_unix.in 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/tun_device_types.in xlat/ubi_volume_props.in xlat/ubi_volume_types.in xlat/uffd_api_features.in xlat/uffd_api_flags.in xlat/uffd_copy_flags.in xlat/uffd_flags.in xlat/uffd_register_ioctl_flags.in xlat/uffd_register_mode_flags.in xlat/uffd_zeropage_flags.in xlat/umount_flags.in xlat/unix_diag_attrs.in xlat/unix_diag_show.in xlat/unshare_flags.in xlat/uring_enter_flags.in xlat/uring_register_opcodes.in xlat/uring_setup_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_id_bases.in xlat/v4l2_control_ids.in xlat/v4l2_control_types.in xlat/v4l2_device_capabilities_flags.in xlat/v4l2_fields.in xlat/v4l2_format_description_flags.in xlat/v4l2_frameinterval_types.in xlat/v4l2_framesize_types.in xlat/v4l2_input_types.in xlat/v4l2_memories.in xlat/v4l2_pix_fmts.in xlat/v4l2_sdr_fmts.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/af_packet_versions.h xlat/aio_cmds.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/ax25_protocols.h xlat/baud_options.h xlat/bdaddr_types.h xlat/blkpg_ops.h xlat/block_ioctl_cmds.h xlat/bluetooth_l2_cid.h xlat/bluetooth_l2_psm.h xlat/bootflags1.h xlat/bootflags2.h xlat/bootflags3.h xlat/bpf_attach_flags.h xlat/bpf_attach_type.h xlat/bpf_class.h xlat/bpf_commands.h xlat/bpf_file_mode_flags.h xlat/bpf_map_flags.h xlat/bpf_map_types.h xlat/bpf_map_update_elem_flags.h xlat/bpf_miscop.h xlat/bpf_mode.h xlat/bpf_op_alu.h xlat/bpf_op_jmp.h xlat/bpf_prog_flags.h xlat/bpf_prog_types.h xlat/bpf_query_flags.h xlat/bpf_rval.h xlat/bpf_size.h xlat/bpf_src.h xlat/bpf_task_fd_type.h xlat/bsg_flags.h xlat/bsg_protocol.h xlat/bsg_subprotocol.h xlat/bt_protocols.h xlat/btrfs_balance_args.h xlat/btrfs_balance_ctl_cmds.h xlat/btrfs_balance_flags.h xlat/btrfs_balance_state.h xlat/btrfs_compress_types.h xlat/btrfs_cont_reading_from_srcdev_mode.h xlat/btrfs_defrag_flags.h xlat/btrfs_dev_replace_cmds.h xlat/btrfs_dev_replace_results.h xlat/btrfs_dev_replace_state.h xlat/btrfs_dev_stats_flags.h 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_logical_ino_args_flags.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/caif_protocols.h xlat/can_protocols.h xlat/cap.h xlat/cap_mask0.h xlat/cap_mask1.h xlat/cap_version.h xlat/clockflags.h xlat/clocknames.h xlat/clone_flags.h xlat/cpuclocknames.h xlat/crypto_nl_attrs.h xlat/dcb_commands.h xlat/delete_module_flags.h xlat/dirent_types.h xlat/dm_flags.h xlat/ebpf_class.h xlat/ebpf_mode.h xlat/ebpf_op_alu.h xlat/ebpf_op_jmp.h xlat/ebpf_regs.h xlat/ebpf_size.h xlat/efd_flags.h xlat/epollctls.h xlat/epollevents.h xlat/epollflags.h xlat/ethernet_protocols.h xlat/evdev_abs.h xlat/evdev_autorepeat.h xlat/evdev_ev.h xlat/evdev_ff_status.h 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/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/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/futexbitset.h xlat/futexops.h xlat/futexwakecmps.h xlat/futexwakeops.h xlat/getrandom_flags.h xlat/getsock_ip_options.h xlat/getsock_ipv6_options.h xlat/getsock_options.h xlat/hci_channels.h xlat/hw_breakpoint_len.h xlat/hw_breakpoint_type.h xlat/icmpfilterflags.h xlat/if_dqblk_valid.h xlat/if_dqinfo_flags.h xlat/if_dqinfo_valid.h xlat/ifaddrflags.h xlat/iffflags.h xlat/in6_addr_gen_mode.h xlat/inet6_devconf_indices.h xlat/inet6_if_flags.h xlat/inet_devconf_indices.h xlat/inet_diag_attrs.h xlat/inet_diag_bytecodes.h xlat/inet_diag_extended_flags.h xlat/inet_diag_req_attrs.h xlat/inet_protocols.h xlat/inotify_flags.h xlat/inotify_init_flags.h xlat/ioctl_dirs.h xlat/ioprio_class.h xlat/ioprio_who.h xlat/ip_cmsg_types.h xlat/ip_type_of_services.h xlat/ipc_msg_flags.h xlat/ipc_private.h xlat/ipccalls.h xlat/irda_protocols.h xlat/isdn_protocols.h xlat/itimer_which.h xlat/kcm_protocols.h xlat/kcmp_types.h xlat/kexec_arch_values.h xlat/kexec_file_load_flags.h xlat/kexec_load_flags.h xlat/key_perms.h xlat/key_reqkeys.h xlat/key_spec.h xlat/keyctl_commands.h xlat/kvm_cap.h xlat/kvm_cpuid_flags.h xlat/kvm_exit_reason.h xlat/kvm_mem_flags.h xlat/lockfcmds.h xlat/loop_cmds.h xlat/loop_crypt_type_options.h xlat/loop_flags_options.h xlat/lwtunnel_encap_types.h xlat/madvise_cmds.h xlat/mbindflags.h xlat/mctl_sync.h xlat/mdb_flags.h xlat/mdb_states.h xlat/membarrier_cmds.h xlat/memfd_create_flags.h xlat/mempolicyflags.h xlat/mlock_flags.h xlat/mlockall_flags.h xlat/mmap_flags.h xlat/mmap_prot.h xlat/modem_flags.h xlat/modetypes.h xlat/module_init_flags.h xlat/mount_flags.h xlat/move_pages_flags.h xlat/mq_attr_flags.h xlat/mremap_flags.h xlat/msg_flags.h xlat/msgctl_flags.h xlat/mtd_file_mode_options.h xlat/mtd_flags_options.h xlat/mtd_mode_options.h xlat/mtd_nandecc_options.h xlat/mtd_otp_options.h xlat/mtd_type_options.h xlat/multicast_router_types.h xlat/name_to_handle_at_flags.h xlat/nbd_ioctl_cmds.h xlat/nbd_ioctl_flags.h xlat/neighbor_cache_entry_flags.h xlat/neighbor_cache_entry_states.h xlat/netfilter_versions.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_sk_meminfo_indices.h xlat/netlink_socket_flags.h xlat/netlink_states.h xlat/netlink_types.h xlat/nf_acct_msg_types.h xlat/nf_cthelper_msg_types.h xlat/nf_ctnetlink_exp_msg_types.h xlat/nf_ctnetlink_msg_types.h xlat/nf_cttimeout_msg_types.h xlat/nf_ipset_msg_types.h xlat/nf_nft_compat_msg_types.h xlat/nf_nftables_msg_types.h xlat/nf_osf_msg_types.h xlat/nf_queue_msg_types.h xlat/nf_ulog_msg_types.h xlat/nfc_protocols.h xlat/nl_audit_types.h xlat/nl_crypto_types.h xlat/nl_netfilter_msg_types.h xlat/nl_netfilter_subsys_ids.h xlat/nl_route_types.h xlat/nl_selinux_types.h xlat/nl_sock_diag_types.h xlat/nl_xfrm_types.h xlat/nlmsgerr_attrs.h xlat/notifyflags.h xlat/nt_descriptor_types.h xlat/numa_node.h xlat/open_access_modes.h xlat/open_mode_flags.h xlat/packet_diag_attrs.h xlat/packet_diag_info_flags.h xlat/packet_diag_show.h xlat/packet_mreq_type.h xlat/perf_attr_size.h xlat/perf_branch_sample_type.h xlat/perf_event_open_flags.h xlat/perf_event_read_format.h xlat/perf_event_sample_format.h xlat/perf_hw_cache_id.h xlat/perf_hw_cache_op_id.h xlat/perf_hw_cache_op_result_id.h xlat/perf_hw_id.h xlat/perf_ioctl_cmds.h xlat/perf_ioctl_flags.h xlat/perf_sw_ids.h xlat/perf_type_id.h xlat/personality_flags.h xlat/personality_types.h xlat/phonet_protocols.h xlat/pkey_access.h xlat/policies.h xlat/pollflags.h xlat/pr_cap_ambient.h xlat/pr_dumpable.h xlat/pr_fp_mode.h xlat/pr_mce_kill.h xlat/pr_mce_kill_policy.h xlat/pr_set_mm.h xlat/pr_spec_cmds.h xlat/pr_spec_get_store_bypass_flags.h xlat/pr_spec_set_store_bypass_flags.h xlat/pr_sve_vl_flags.h xlat/pr_tsc.h xlat/pr_unalign_flags.h xlat/prctl_options.h xlat/priorities.h xlat/ptp_flags_options.h xlat/ptrace_cmds.h xlat/ptrace_events.h xlat/ptrace_peeksiginfo_flags.h xlat/ptrace_setoptions_flags.h xlat/ptrace_syscall_info_op.h xlat/quota_formats.h xlat/quotacmds.h xlat/quotatypes.h xlat/random_ioctl_cmds.h xlat/rename_flags.h xlat/resource_flags.h xlat/resources.h xlat/riscv_flush_icache_flags.h xlat/route_nexthop_flags.h xlat/routing_flags.h xlat/routing_protocols.h xlat/routing_scopes.h xlat/routing_table_ids.h xlat/routing_types.h xlat/rtnl_addr_attrs.h xlat/rtnl_addrlabel_attrs.h xlat/rtnl_dcb_attrs.h xlat/rtnl_ifla_af_spec_inet6_attrs.h xlat/rtnl_ifla_af_spec_inet_attrs.h xlat/rtnl_ifla_brport_attrs.h xlat/rtnl_ifla_events.h xlat/rtnl_ifla_info_attrs.h xlat/rtnl_ifla_info_data_bridge_attrs.h xlat/rtnl_ifla_info_data_tun_attrs.h xlat/rtnl_ifla_port_attrs.h xlat/rtnl_ifla_vf_port_attrs.h xlat/rtnl_ifla_xdp_attached_mode.h xlat/rtnl_ifla_xdp_attrs.h xlat/rtnl_link_attrs.h xlat/rtnl_mdb_attrs.h xlat/rtnl_mdba_mdb_attrs.h xlat/rtnl_mdba_mdb_eattr_attrs.h xlat/rtnl_mdba_mdb_entry_attrs.h xlat/rtnl_mdba_router_attrs.h xlat/rtnl_mdba_router_pattr_attrs.h xlat/rtnl_neigh_attrs.h xlat/rtnl_neightbl_attrs.h xlat/rtnl_neightbl_parms_attrs.h xlat/rtnl_netconf_attrs.h xlat/rtnl_nsid_attrs.h xlat/rtnl_route_attrs.h xlat/rtnl_rta_metrics_attrs.h xlat/rtnl_rule_attrs.h xlat/rtnl_tc_action_attrs.h xlat/rtnl_tc_attrs.h xlat/rtnl_tca_stab_attrs.h xlat/rtnl_tca_stats_attrs.h xlat/rwf_flags.h xlat/s390_guarded_storage_commands.h xlat/s390_runtime_instr_commands.h xlat/s390_sthyi_function_codes.h xlat/sa_handler_values.h xlat/sched_flags.h xlat/schedulers.h xlat/scmvals.h xlat/scsi_sg_commands.h xlat/secbits.h xlat/seccomp_filter_flags.h xlat/seccomp_mode.h xlat/seccomp_ops.h xlat/seccomp_ret_action.h xlat/semctl_flags.h xlat/semop_flags.h xlat/setns_types.h xlat/setsock_ip_options.h xlat/setsock_ipv6_options.h xlat/setsock_options.h xlat/sfd_flags.h xlat/sg_io_dxfer_direction.h xlat/sg_io_flags.h xlat/sg_io_info.h xlat/sg_scsi_reset.h xlat/shm_flags.h xlat/shm_resource_flags.h xlat/shmctl_flags.h xlat/shutdown_modes.h xlat/sigact_flags.h xlat/sigaltstack_flags.h xlat/sigbus_codes.h xlat/sigchld_codes.h xlat/sigemt_codes.h xlat/sigev_value.h xlat/sigfpe_codes.h xlat/sigill_codes.h xlat/siginfo_codes.h xlat/sigpoll_codes.h xlat/sigprocmaskcmds.h xlat/sigprof_codes.h xlat/sigsegv_codes.h xlat/sigsys_codes.h xlat/sigtrap_codes.h xlat/skf_ad.h xlat/skf_off.h xlat/smc_decl_codes.h xlat/smc_diag_attrs.h xlat/smc_diag_extended_flags.h xlat/smc_diag_mode.h xlat/smc_link_group_roles.h xlat/smc_protocols.h xlat/smc_states.h xlat/snmp_icmp6_stats.h xlat/snmp_ip_stats.h xlat/sock_alg_options.h xlat/sock_ax25_options.h xlat/sock_bluetooth_options.h xlat/sock_caif_options.h xlat/sock_dccp_options.h xlat/sock_ip_options.h xlat/sock_ipv6_options.h xlat/sock_ipx_options.h xlat/sock_irda_options.h xlat/sock_iucv_options.h xlat/sock_kcm_options.h xlat/sock_llc_options.h xlat/sock_netlink_options.h xlat/sock_nfcllcp_options.h xlat/sock_options.h xlat/sock_packet_options.h xlat/sock_pnp_options.h xlat/sock_pppol2tp_options.h xlat/sock_raw_options.h xlat/sock_rds_options.h xlat/sock_rxrpc_options.h xlat/sock_sctp_options.h xlat/sock_shutdown_flags.h xlat/sock_tcp_options.h xlat/sock_tipc_options.h xlat/sock_tls_options.h xlat/sock_type_flags.h xlat/sock_udp_options.h xlat/sock_xdp_options.h xlat/socketcalls.h xlat/socketlayers.h xlat/socktypes.h xlat/sparc_kern_features.h xlat/splice_flags.h xlat/sram_alloc_flags.h xlat/statfs_flags.h xlat/statx_attrs.h xlat/statx_masks.h xlat/swap_flags.h 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/tun_device_types.h xlat/ubi_volume_props.h xlat/ubi_volume_types.h xlat/uffd_api_features.h xlat/uffd_api_flags.h xlat/uffd_copy_flags.h xlat/uffd_flags.h xlat/uffd_register_ioctl_flags.h xlat/uffd_register_mode_flags.h xlat/uffd_zeropage_flags.h xlat/umount_flags.h xlat/unix_diag_attrs.h xlat/unix_diag_show.h xlat/unshare_flags.h xlat/uring_enter_flags.h xlat/uring_register_opcodes.h xlat/uring_setup_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_id_bases.h xlat/v4l2_control_ids.h xlat/v4l2_control_types.h xlat/v4l2_device_capabilities_flags.h xlat/v4l2_fields.h xlat/v4l2_format_description_flags.h xlat/v4l2_frameinterval_types.h xlat/v4l2_framesize_types.h xlat/v4l2_input_types.h xlat/v4l2_memories.h xlat/v4l2_pix_fmts.h xlat/v4l2_sdr_fmts.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
+XLAT_INPUT_FILES = xlat/access_modes.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/af_packet_versions.in xlat/aio_cmds.in xlat/aio_iocb_flags.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/ax25_protocols.in xlat/baud_options.in xlat/bdaddr_types.in xlat/blkpg_ops.in xlat/block_ioctl_cmds.in xlat/bluetooth_l2_cid.in xlat/bluetooth_l2_psm.in xlat/bootflags1.in xlat/bootflags2.in xlat/bootflags3.in xlat/bpf_attach_flags.in xlat/bpf_attach_type.in xlat/bpf_class.in xlat/bpf_commands.in xlat/bpf_file_mode_flags.in xlat/bpf_map_flags.in xlat/bpf_map_lookup_elem_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_query_flags.in xlat/bpf_rval.in xlat/bpf_size.in xlat/bpf_src.in xlat/bpf_task_fd_type.in xlat/bsg_flags.in xlat/bsg_protocol.in xlat/bsg_subprotocol.in xlat/bt_protocols.in xlat/btrfs_balance_args.in xlat/btrfs_balance_ctl_cmds.in xlat/btrfs_balance_flags.in xlat/btrfs_balance_state.in xlat/btrfs_compress_types.in xlat/btrfs_cont_reading_from_srcdev_mode.in xlat/btrfs_defrag_flags.in xlat/btrfs_dev_replace_cmds.in xlat/btrfs_dev_replace_results.in xlat/btrfs_dev_replace_state.in xlat/btrfs_dev_stats_flags.in xlat/btrfs_dev_stats_values.in xlat/btrfs_features_compat.in xlat/btrfs_features_compat_ro.in xlat/btrfs_features_incompat.in xlat/btrfs_key_types.in xlat/btrfs_logical_ino_args_flags.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_flags.in xlat/cacheflush_scope.in xlat/caif_protocols.in xlat/can_protocols.in xlat/cap.in xlat/cap_mask0.in xlat/cap_mask1.in xlat/cap_version.in xlat/clockflags.in xlat/clocknames.in xlat/clone3_flags.in xlat/clone_flags.in xlat/close_range_flags.in xlat/cpuclocknames.in xlat/crypto_msgs.in xlat/crypto_nl_attrs.in xlat/dcb_commands.in xlat/delete_module_flags.in xlat/dirent_types.in xlat/dm_flags.in xlat/ebpf_class.in xlat/ebpf_mode.in xlat/ebpf_op_alu.in xlat/ebpf_op_jmp.in xlat/ebpf_regs.in xlat/ebpf_size.in xlat/efd_flags.in xlat/elf_em.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_ioctl_cmds.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/f_owner_types.in xlat/f_seals.in xlat/faccessat_flags.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/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/fsconfig_cmds.in xlat/fsmagic.in xlat/fsmount_flags.in xlat/fsopen_flags.in xlat/fspick_flags.in xlat/futexbitset.in xlat/futexops.in xlat/futexwakecmps.in xlat/futexwakeops.in xlat/get_mempolicy_flags.in xlat/getrandom_flags.in xlat/getsock_ip_options.in xlat/getsock_ipv6_options.in xlat/getsock_options.in xlat/hci_channels.in xlat/hdio_drive_cmds.in xlat/hw_breakpoint_len.in xlat/hw_breakpoint_type.in xlat/icmpfilterflags.in xlat/if_dqblk_valid.in xlat/if_dqinfo_flags.in xlat/if_dqinfo_valid.in xlat/ifaddrflags.in xlat/iffflags.in xlat/in6_addr_gen_mode.in xlat/inet6_devconf_indices.in xlat/inet6_if_flags.in xlat/inet_devconf_indices.in xlat/inet_diag_attrs.in xlat/inet_diag_bytecodes.in xlat/inet_diag_extended_flags.in xlat/inet_diag_req_attrs.in xlat/inet_protocols.in xlat/inotify_flags.in xlat/inotify_init_flags.in xlat/ioctl_dirs.in xlat/ioprio_class.in xlat/ioprio_who.in xlat/ip_cmsg_types.in xlat/ip_type_of_services.in xlat/ipc_msg_flags.in xlat/ipc_private.in xlat/ipccalls.in xlat/irda_protocols.in xlat/isdn_protocols.in xlat/itimer_which.in xlat/kcm_protocols.in xlat/kcmp_types.in xlat/kexec_arch_values.in xlat/kexec_file_load_flags.in xlat/kexec_load_flags.in xlat/key_perms.in xlat/key_reqkeys.in xlat/key_spec.in xlat/keyctl_caps0.in xlat/keyctl_caps1.in xlat/keyctl_commands.in xlat/keyctl_move_flags.in xlat/keyctl_pkey_ops.in xlat/kvm_cap.in xlat/kvm_cpuid_flags.in xlat/kvm_exit_reason.in xlat/kvm_mem_flags.in xlat/lockfcmds.in xlat/loop_cmds.in xlat/loop_crypt_type_options.in xlat/loop_flags_options.in xlat/lwtunnel_encap_types.in xlat/madvise_cmds.in xlat/mbind_flags.in xlat/mctl_sync.in xlat/mdb_flags.in xlat/mdb_states.in xlat/membarrier_cmds.in xlat/memfd_create_flags.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_attr_flags.in xlat/mount_flags.in xlat/move_mount_flags.in xlat/move_pages_flags.in xlat/mpol_mode_flags.in xlat/mpol_modes.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/nbd_ioctl_cmds.in xlat/nbd_ioctl_flags.in xlat/neighbor_cache_entry_flags.in xlat/neighbor_cache_entry_states.in xlat/netfilter_versions.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_sk_meminfo_indices.in xlat/netlink_socket_flags.in xlat/netlink_states.in xlat/netlink_types.in xlat/nf_acct_msg_types.in xlat/nf_cthelper_msg_types.in 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/nfc_protocols.in xlat/nl_audit_types.in xlat/nl_crypto_types.in xlat/nl_netfilter_msg_types.in xlat/nl_netfilter_subsys_ids.in xlat/nl_route_types.in xlat/nl_selinux_types.in xlat/nl_sock_diag_types.in xlat/nl_xfrm_types.in xlat/nlmsgerr_attrs.in xlat/notifyflags.in xlat/nt_descriptor_types.in xlat/numa_node.in xlat/open_access_modes.in xlat/open_mode_flags.in xlat/open_resolve_flags.in xlat/open_tree_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_ioctl_cmds.in xlat/perf_ioctl_flags.in xlat/perf_sw_ids.in xlat/perf_type_id.in xlat/personality_flags.in xlat/personality_types.in xlat/phonet_protocols.in xlat/pkey_access.in xlat/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_spec_cmds.in xlat/pr_spec_get_store_bypass_flags.in xlat/pr_spec_set_store_bypass_flags.in xlat/pr_sve_vl_flags.in xlat/pr_tsc.in xlat/pr_unalign_flags.in xlat/prctl_options.in xlat/priorities.in xlat/ptp_extts_flags.in xlat/ptp_perout_flags.in xlat/ptrace_cmds.in xlat/ptrace_events.in xlat/ptrace_peeksiginfo_flags.in xlat/ptrace_setoptions_flags.in xlat/ptrace_syscall_info_op.in xlat/quota_formats.in xlat/quotacmds.in xlat/quotatypes.in xlat/random_ioctl_cmds.in xlat/rename_flags.in xlat/resource_flags.in xlat/resources.in xlat/riscv_flush_icache_flags.in xlat/route_nexthop_flags.in xlat/routing_flags.in xlat/routing_protocols.in xlat/routing_scopes.in xlat/routing_table_ids.in xlat/routing_types.in xlat/rtc_ioctl_cmds.in xlat/rtc_vl_flags.in xlat/rtnl_addr_attrs.in xlat/rtnl_addrlabel_attrs.in xlat/rtnl_dcb_attrs.in xlat/rtnl_ifla_af_spec_inet6_attrs.in xlat/rtnl_ifla_af_spec_inet_attrs.in xlat/rtnl_ifla_brport_attrs.in xlat/rtnl_ifla_events.in xlat/rtnl_ifla_info_attrs.in xlat/rtnl_ifla_info_data_bridge_attrs.in xlat/rtnl_ifla_info_data_tun_attrs.in xlat/rtnl_ifla_port_attrs.in xlat/rtnl_ifla_vf_port_attrs.in xlat/rtnl_ifla_xdp_attached_mode.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_act_flags.in xlat/rtnl_tca_act_hw_stats.in xlat/rtnl_tca_stab_attrs.in xlat/rtnl_tca_stats_attrs.in xlat/rwf_flags.in xlat/s390_guarded_storage_commands.in xlat/s390_runtime_instr_commands.in xlat/s390_sthyi_function_codes.in xlat/sa_handler_values.in xlat/sched_flags.in xlat/schedulers.in xlat/scmvals.in xlat/scsi_sg_commands.in xlat/secbits.in xlat/seccomp_filter_flags.in xlat/seccomp_mode.in xlat/seccomp_ops.in xlat/seccomp_ret_action.in xlat/semctl_flags.in xlat/semop_flags.in xlat/setns_types.in xlat/setsock_ip_options.in xlat/setsock_ipv6_options.in xlat/setsock_options.in xlat/sfd_flags.in xlat/sg_io_dxfer_direction.in xlat/sg_io_flags.in xlat/sg_io_info.in xlat/sg_scsi_reset.in xlat/shm_flags.in xlat/shm_resource_flags.in xlat/shmctl_flags.in xlat/shutdown_modes.in xlat/sigact_flags.in xlat/sigaltstack_flags.in xlat/sigbus_codes.in xlat/sigchld_codes.in xlat/sigemt_codes.in xlat/sigev_value.in xlat/sigfpe_codes.in xlat/sigill_codes.in xlat/siginfo_codes.in xlat/sigpoll_codes.in xlat/sigprocmaskcmds.in xlat/sigprof_codes.in xlat/sigsegv_codes.in xlat/sigsys_codes.in xlat/sigtrap_codes.in xlat/skf_ad.in xlat/skf_off.in xlat/smc_decl_codes.in xlat/smc_diag_attrs.in xlat/smc_diag_extended_flags.in xlat/smc_diag_mode.in xlat/smc_link_group_roles.in xlat/smc_protocols.in xlat/smc_states.in xlat/snmp_icmp6_stats.in xlat/snmp_ip_stats.in xlat/sock_alg_options.in xlat/sock_ax25_options.in xlat/sock_bluetooth_options.in xlat/sock_caif_options.in xlat/sock_dccp_options.in xlat/sock_ip_options.in xlat/sock_ipv6_options.in xlat/sock_ipx_options.in xlat/sock_irda_options.in xlat/sock_iucv_options.in xlat/sock_kcm_options.in xlat/sock_llc_options.in xlat/sock_netlink_options.in xlat/sock_nfcllcp_options.in xlat/sock_options.in xlat/sock_packet_options.in xlat/sock_pnp_options.in xlat/sock_pppol2tp_options.in xlat/sock_raw_options.in xlat/sock_rds_options.in xlat/sock_rxrpc_options.in xlat/sock_sctp_options.in xlat/sock_shutdown_flags.in xlat/sock_tcp_options.in xlat/sock_tipc_options.in xlat/sock_tls_options.in xlat/sock_type_flags.in xlat/sock_udp_options.in xlat/sock_xdp_options.in xlat/socketcalls.in xlat/socketlayers.in xlat/socktypes.in xlat/sparc_kern_features.in xlat/splice_flags.in xlat/sram_alloc_flags.in xlat/statfs_flags.in xlat/statx_attrs.in xlat/statx_masks.in xlat/swap_flags.in xlat/sync_file_range_flags.in xlat/sysctl_kern.in xlat/sysctl_net.in xlat/sysctl_net_core.in xlat/sysctl_net_ipv4.in xlat/sysctl_net_ipv4_conf.in xlat/sysctl_net_ipv4_route.in xlat/sysctl_net_ipv6.in xlat/sysctl_net_ipv6_route.in xlat/sysctl_net_unix.in xlat/sysctl_root.in xlat/sysctl_vm.in xlat/syslog_action_type.in xlat/syslog_console_levels.in xlat/sysmips_operations.in xlat/tcflsh_options.in xlat/tcp_state_flags.in xlat/tcp_states.in xlat/tcxonc_options.in xlat/tee_ioctl_cmds.in xlat/tee_ioctl_gen_caps.in xlat/tee_ioctl_impl_ids.in xlat/tee_ioctl_login_types.in xlat/tee_ioctl_max_arg_size.in xlat/tee_ioctl_optee_caps.in xlat/tee_ioctl_origins.in xlat/tee_ioctl_param_attr_types.in xlat/tee_ioctl_shm_flags.in xlat/timerfdflags.in xlat/tun_device_types.in xlat/ubi_volume_props.in xlat/ubi_volume_types.in xlat/uffd_api_features.in xlat/uffd_api_flags.in xlat/uffd_copy_flags.in xlat/uffd_flags.in xlat/uffd_register_ioctl_flags.in xlat/uffd_register_mode_flags.in xlat/uffd_zeropage_flags.in xlat/umount_flags.in xlat/unix_diag_attrs.in xlat/unix_diag_show.in xlat/unshare_flags.in xlat/uring_cqring_flags.in xlat/uring_enter_flags.in xlat/uring_op_flags.in xlat/uring_ops.in xlat/uring_register_opcodes.in xlat/uring_setup_features.in xlat/uring_setup_flags.in xlat/usagewho.in xlat/v4l2_buf_flags.in xlat/v4l2_buf_flags_masks.in xlat/v4l2_buf_flags_ts_src.in xlat/v4l2_buf_flags_ts_type.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_id_bases.in xlat/v4l2_control_ids.in xlat/v4l2_control_query_flags.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_ioctl_cmds.in xlat/v4l2_memories.in xlat/v4l2_pix_fmts.in xlat/v4l2_sdr_fmts.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/watchdog_ioctl_cmds.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_modes.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/af_packet_versions.h xlat/aio_cmds.h xlat/aio_iocb_flags.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/ax25_protocols.h xlat/baud_options.h xlat/bdaddr_types.h xlat/blkpg_ops.h xlat/block_ioctl_cmds.h xlat/bluetooth_l2_cid.h xlat/bluetooth_l2_psm.h xlat/bootflags1.h xlat/bootflags2.h xlat/bootflags3.h xlat/bpf_attach_flags.h xlat/bpf_attach_type.h xlat/bpf_class.h xlat/bpf_commands.h xlat/bpf_file_mode_flags.h xlat/bpf_map_flags.h xlat/bpf_map_lookup_elem_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_query_flags.h xlat/bpf_rval.h xlat/bpf_size.h xlat/bpf_src.h xlat/bpf_task_fd_type.h xlat/bsg_flags.h xlat/bsg_protocol.h xlat/bsg_subprotocol.h xlat/bt_protocols.h xlat/btrfs_balance_args.h xlat/btrfs_balance_ctl_cmds.h xlat/btrfs_balance_flags.h xlat/btrfs_balance_state.h xlat/btrfs_compress_types.h xlat/btrfs_cont_reading_from_srcdev_mode.h xlat/btrfs_defrag_flags.h xlat/btrfs_dev_replace_cmds.h xlat/btrfs_dev_replace_results.h xlat/btrfs_dev_replace_state.h xlat/btrfs_dev_stats_flags.h 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_logical_ino_args_flags.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_flags.h xlat/cacheflush_scope.h xlat/caif_protocols.h xlat/can_protocols.h xlat/cap.h xlat/cap_mask0.h xlat/cap_mask1.h xlat/cap_version.h xlat/clockflags.h xlat/clocknames.h xlat/clone3_flags.h xlat/clone_flags.h xlat/close_range_flags.h xlat/cpuclocknames.h xlat/crypto_msgs.h xlat/crypto_nl_attrs.h xlat/dcb_commands.h xlat/delete_module_flags.h xlat/dirent_types.h xlat/dm_flags.h xlat/ebpf_class.h xlat/ebpf_mode.h xlat/ebpf_op_alu.h xlat/ebpf_op_jmp.h xlat/ebpf_regs.h xlat/ebpf_size.h xlat/efd_flags.h xlat/elf_em.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_ioctl_cmds.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/f_owner_types.h xlat/f_seals.h xlat/faccessat_flags.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/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/fsconfig_cmds.h xlat/fsmagic.h xlat/fsmount_flags.h xlat/fsopen_flags.h xlat/fspick_flags.h xlat/futexbitset.h xlat/futexops.h xlat/futexwakecmps.h xlat/futexwakeops.h xlat/get_mempolicy_flags.h xlat/getrandom_flags.h xlat/getsock_ip_options.h xlat/getsock_ipv6_options.h xlat/getsock_options.h xlat/hci_channels.h xlat/hdio_drive_cmds.h xlat/hw_breakpoint_len.h xlat/hw_breakpoint_type.h xlat/icmpfilterflags.h xlat/if_dqblk_valid.h xlat/if_dqinfo_flags.h xlat/if_dqinfo_valid.h xlat/ifaddrflags.h xlat/iffflags.h xlat/in6_addr_gen_mode.h xlat/inet6_devconf_indices.h xlat/inet6_if_flags.h xlat/inet_devconf_indices.h xlat/inet_diag_attrs.h xlat/inet_diag_bytecodes.h xlat/inet_diag_extended_flags.h xlat/inet_diag_req_attrs.h xlat/inet_protocols.h xlat/inotify_flags.h xlat/inotify_init_flags.h xlat/ioctl_dirs.h xlat/ioprio_class.h xlat/ioprio_who.h xlat/ip_cmsg_types.h xlat/ip_type_of_services.h xlat/ipc_msg_flags.h xlat/ipc_private.h xlat/ipccalls.h xlat/irda_protocols.h xlat/isdn_protocols.h xlat/itimer_which.h xlat/kcm_protocols.h xlat/kcmp_types.h xlat/kexec_arch_values.h xlat/kexec_file_load_flags.h xlat/kexec_load_flags.h xlat/key_perms.h xlat/key_reqkeys.h xlat/key_spec.h xlat/keyctl_caps0.h xlat/keyctl_caps1.h xlat/keyctl_commands.h xlat/keyctl_move_flags.h xlat/keyctl_pkey_ops.h xlat/kvm_cap.h xlat/kvm_cpuid_flags.h xlat/kvm_exit_reason.h xlat/kvm_mem_flags.h xlat/lockfcmds.h xlat/loop_cmds.h xlat/loop_crypt_type_options.h xlat/loop_flags_options.h xlat/lwtunnel_encap_types.h xlat/madvise_cmds.h xlat/mbind_flags.h xlat/mctl_sync.h xlat/mdb_flags.h xlat/mdb_states.h xlat/membarrier_cmds.h xlat/memfd_create_flags.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_attr_flags.h xlat/mount_flags.h xlat/move_mount_flags.h xlat/move_pages_flags.h xlat/mpol_mode_flags.h xlat/mpol_modes.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/nbd_ioctl_cmds.h xlat/nbd_ioctl_flags.h xlat/neighbor_cache_entry_flags.h xlat/neighbor_cache_entry_states.h xlat/netfilter_versions.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_sk_meminfo_indices.h xlat/netlink_socket_flags.h xlat/netlink_states.h xlat/netlink_types.h xlat/nf_acct_msg_types.h xlat/nf_cthelper_msg_types.h xlat/nf_ctnetlink_exp_msg_types.h xlat/nf_ctnetlink_msg_types.h xlat/nf_cttimeout_msg_types.h xlat/nf_ipset_msg_types.h xlat/nf_nft_compat_msg_types.h xlat/nf_nftables_msg_types.h xlat/nf_osf_msg_types.h xlat/nf_queue_msg_types.h xlat/nf_ulog_msg_types.h xlat/nfc_protocols.h xlat/nl_audit_types.h xlat/nl_crypto_types.h xlat/nl_netfilter_msg_types.h xlat/nl_netfilter_subsys_ids.h xlat/nl_route_types.h xlat/nl_selinux_types.h xlat/nl_sock_diag_types.h xlat/nl_xfrm_types.h xlat/nlmsgerr_attrs.h xlat/notifyflags.h xlat/nt_descriptor_types.h xlat/numa_node.h xlat/open_access_modes.h xlat/open_mode_flags.h xlat/open_resolve_flags.h xlat/open_tree_flags.h xlat/packet_diag_attrs.h xlat/packet_diag_info_flags.h xlat/packet_diag_show.h xlat/packet_mreq_type.h xlat/perf_attr_size.h xlat/perf_branch_sample_type.h xlat/perf_event_open_flags.h xlat/perf_event_read_format.h xlat/perf_event_sample_format.h xlat/perf_hw_cache_id.h xlat/perf_hw_cache_op_id.h xlat/perf_hw_cache_op_result_id.h xlat/perf_hw_id.h xlat/perf_ioctl_cmds.h xlat/perf_ioctl_flags.h xlat/perf_sw_ids.h xlat/perf_type_id.h xlat/personality_flags.h xlat/personality_types.h xlat/phonet_protocols.h xlat/pkey_access.h xlat/pollflags.h xlat/pr_cap_ambient.h xlat/pr_dumpable.h xlat/pr_fp_mode.h xlat/pr_mce_kill.h xlat/pr_mce_kill_policy.h xlat/pr_set_mm.h xlat/pr_spec_cmds.h xlat/pr_spec_get_store_bypass_flags.h xlat/pr_spec_set_store_bypass_flags.h xlat/pr_sve_vl_flags.h xlat/pr_tsc.h xlat/pr_unalign_flags.h xlat/prctl_options.h xlat/priorities.h xlat/ptp_extts_flags.h xlat/ptp_perout_flags.h xlat/ptrace_cmds.h xlat/ptrace_events.h xlat/ptrace_peeksiginfo_flags.h xlat/ptrace_setoptions_flags.h xlat/ptrace_syscall_info_op.h xlat/quota_formats.h xlat/quotacmds.h xlat/quotatypes.h xlat/random_ioctl_cmds.h xlat/rename_flags.h xlat/resource_flags.h xlat/resources.h xlat/riscv_flush_icache_flags.h xlat/route_nexthop_flags.h xlat/routing_flags.h xlat/routing_protocols.h xlat/routing_scopes.h xlat/routing_table_ids.h xlat/routing_types.h xlat/rtc_ioctl_cmds.h xlat/rtc_vl_flags.h xlat/rtnl_addr_attrs.h xlat/rtnl_addrlabel_attrs.h xlat/rtnl_dcb_attrs.h xlat/rtnl_ifla_af_spec_inet6_attrs.h xlat/rtnl_ifla_af_spec_inet_attrs.h xlat/rtnl_ifla_brport_attrs.h xlat/rtnl_ifla_events.h xlat/rtnl_ifla_info_attrs.h xlat/rtnl_ifla_info_data_bridge_attrs.h xlat/rtnl_ifla_info_data_tun_attrs.h xlat/rtnl_ifla_port_attrs.h xlat/rtnl_ifla_vf_port_attrs.h xlat/rtnl_ifla_xdp_attached_mode.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_act_flags.h xlat/rtnl_tca_act_hw_stats.h xlat/rtnl_tca_stab_attrs.h xlat/rtnl_tca_stats_attrs.h xlat/rwf_flags.h xlat/s390_guarded_storage_commands.h xlat/s390_runtime_instr_commands.h xlat/s390_sthyi_function_codes.h xlat/sa_handler_values.h xlat/sched_flags.h xlat/schedulers.h xlat/scmvals.h xlat/scsi_sg_commands.h xlat/secbits.h xlat/seccomp_filter_flags.h xlat/seccomp_mode.h xlat/seccomp_ops.h xlat/seccomp_ret_action.h xlat/semctl_flags.h xlat/semop_flags.h xlat/setns_types.h xlat/setsock_ip_options.h xlat/setsock_ipv6_options.h xlat/setsock_options.h xlat/sfd_flags.h xlat/sg_io_dxfer_direction.h xlat/sg_io_flags.h xlat/sg_io_info.h xlat/sg_scsi_reset.h xlat/shm_flags.h xlat/shm_resource_flags.h xlat/shmctl_flags.h xlat/shutdown_modes.h xlat/sigact_flags.h xlat/sigaltstack_flags.h xlat/sigbus_codes.h xlat/sigchld_codes.h xlat/sigemt_codes.h xlat/sigev_value.h xlat/sigfpe_codes.h xlat/sigill_codes.h xlat/siginfo_codes.h xlat/sigpoll_codes.h xlat/sigprocmaskcmds.h xlat/sigprof_codes.h xlat/sigsegv_codes.h xlat/sigsys_codes.h xlat/sigtrap_codes.h xlat/skf_ad.h xlat/skf_off.h xlat/smc_decl_codes.h xlat/smc_diag_attrs.h xlat/smc_diag_extended_flags.h xlat/smc_diag_mode.h xlat/smc_link_group_roles.h xlat/smc_protocols.h xlat/smc_states.h xlat/snmp_icmp6_stats.h xlat/snmp_ip_stats.h xlat/sock_alg_options.h xlat/sock_ax25_options.h xlat/sock_bluetooth_options.h xlat/sock_caif_options.h xlat/sock_dccp_options.h xlat/sock_ip_options.h xlat/sock_ipv6_options.h xlat/sock_ipx_options.h xlat/sock_irda_options.h xlat/sock_iucv_options.h xlat/sock_kcm_options.h xlat/sock_llc_options.h xlat/sock_netlink_options.h xlat/sock_nfcllcp_options.h xlat/sock_options.h xlat/sock_packet_options.h xlat/sock_pnp_options.h xlat/sock_pppol2tp_options.h xlat/sock_raw_options.h xlat/sock_rds_options.h xlat/sock_rxrpc_options.h xlat/sock_sctp_options.h xlat/sock_shutdown_flags.h xlat/sock_tcp_options.h xlat/sock_tipc_options.h xlat/sock_tls_options.h xlat/sock_type_flags.h xlat/sock_udp_options.h xlat/sock_xdp_options.h xlat/socketcalls.h xlat/socketlayers.h xlat/socktypes.h xlat/sparc_kern_features.h xlat/splice_flags.h xlat/sram_alloc_flags.h xlat/statfs_flags.h xlat/statx_attrs.h xlat/statx_masks.h xlat/swap_flags.h 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/syslog_console_levels.h xlat/sysmips_operations.h xlat/tcflsh_options.h xlat/tcp_state_flags.h xlat/tcp_states.h xlat/tcxonc_options.h xlat/tee_ioctl_cmds.h xlat/tee_ioctl_gen_caps.h xlat/tee_ioctl_impl_ids.h xlat/tee_ioctl_login_types.h xlat/tee_ioctl_max_arg_size.h xlat/tee_ioctl_optee_caps.h xlat/tee_ioctl_origins.h xlat/tee_ioctl_param_attr_types.h xlat/tee_ioctl_shm_flags.h xlat/timerfdflags.h xlat/tun_device_types.h xlat/ubi_volume_props.h xlat/ubi_volume_types.h xlat/uffd_api_features.h xlat/uffd_api_flags.h xlat/uffd_copy_flags.h xlat/uffd_flags.h xlat/uffd_register_ioctl_flags.h xlat/uffd_register_mode_flags.h xlat/uffd_zeropage_flags.h xlat/umount_flags.h xlat/unix_diag_attrs.h xlat/unix_diag_show.h xlat/unshare_flags.h xlat/uring_cqring_flags.h xlat/uring_enter_flags.h xlat/uring_op_flags.h xlat/uring_ops.h xlat/uring_register_opcodes.h xlat/uring_setup_features.h xlat/uring_setup_flags.h xlat/usagewho.h xlat/v4l2_buf_flags.h xlat/v4l2_buf_flags_masks.h xlat/v4l2_buf_flags_ts_src.h xlat/v4l2_buf_flags_ts_type.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_id_bases.h xlat/v4l2_control_ids.h xlat/v4l2_control_query_flags.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_ioctl_cmds.h xlat/v4l2_memories.h xlat/v4l2_pix_fmts.h xlat/v4l2_sdr_fmts.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/watchdog_ioctl_cmds.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_modes.h: $(top_srcdir)/xlat/access_modes.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/addrfams.h: $(top_srcdir)/xlat/addrfams.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
@@ -18,6 +18,8 @@ $(top_srcdir)/xlat/af_packet_versions.h: $(top_srcdir)/xlat/af_packet_versions.i
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/aio_cmds.h: $(top_srcdir)/xlat/aio_cmds.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/aio_iocb_flags.h: $(top_srcdir)/xlat/aio_iocb_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/archvals.h: $(top_srcdir)/xlat/archvals.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/arp_hardware_types.h: $(top_srcdir)/xlat/arp_hardware_types.in $(top_srcdir)/xlat/gen.sh
@@ -62,6 +64,8 @@ $(top_srcdir)/xlat/bpf_file_mode_flags.h: $(top_srcdir)/xlat/bpf_file_mode_flags
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/bpf_map_flags.h: $(top_srcdir)/xlat/bpf_map_flags.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/bpf_map_lookup_elem_flags.h: $(top_srcdir)/xlat/bpf_map_lookup_elem_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/bpf_map_types.h: $(top_srcdir)/xlat/bpf_map_types.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/bpf_map_update_elem_flags.h: $(top_srcdir)/xlat/bpf_map_update_elem_flags.in $(top_srcdir)/xlat/gen.sh
@@ -148,6 +152,8 @@ $(top_srcdir)/xlat/btrfs_space_info_flags.h: $(top_srcdir)/xlat/btrfs_space_info
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/btrfs_tree_objectids.h: $(top_srcdir)/xlat/btrfs_tree_objectids.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/cacheflush_flags.h: $(top_srcdir)/xlat/cacheflush_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/cacheflush_scope.h: $(top_srcdir)/xlat/cacheflush_scope.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/caif_protocols.h: $(top_srcdir)/xlat/caif_protocols.in $(top_srcdir)/xlat/gen.sh
@@ -166,10 +172,16 @@ $(top_srcdir)/xlat/clockflags.h: $(top_srcdir)/xlat/clockflags.in $(top_srcdir)/
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/clocknames.h: $(top_srcdir)/xlat/clocknames.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/clone3_flags.h: $(top_srcdir)/xlat/clone3_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/clone_flags.h: $(top_srcdir)/xlat/clone_flags.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/close_range_flags.h: $(top_srcdir)/xlat/close_range_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/cpuclocknames.h: $(top_srcdir)/xlat/cpuclocknames.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/crypto_msgs.h: $(top_srcdir)/xlat/crypto_msgs.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/crypto_nl_attrs.h: $(top_srcdir)/xlat/crypto_nl_attrs.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/dcb_commands.h: $(top_srcdir)/xlat/dcb_commands.in $(top_srcdir)/xlat/gen.sh
@@ -194,6 +206,8 @@ $(top_srcdir)/xlat/ebpf_size.h: $(top_srcdir)/xlat/ebpf_size.in $(top_srcdir)/xl
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/efd_flags.h: $(top_srcdir)/xlat/efd_flags.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/elf_em.h: $(top_srcdir)/xlat/elf_em.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/epollctls.h: $(top_srcdir)/xlat/epollctls.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/epollevents.h: $(top_srcdir)/xlat/epollevents.in $(top_srcdir)/xlat/gen.sh
@@ -212,6 +226,8 @@ $(top_srcdir)/xlat/evdev_ff_status.h: $(top_srcdir)/xlat/evdev_ff_status.in $(to
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/evdev_ff_types.h: $(top_srcdir)/xlat/evdev_ff_types.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/evdev_ioctl_cmds.h: $(top_srcdir)/xlat/evdev_ioctl_cmds.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/evdev_keycode.h: $(top_srcdir)/xlat/evdev_keycode.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/evdev_leds.h: $(top_srcdir)/xlat/evdev_leds.in $(top_srcdir)/xlat/gen.sh
@@ -232,6 +248,8 @@ $(top_srcdir)/xlat/f_owner_types.h: $(top_srcdir)/xlat/f_owner_types.in $(top_sr
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/f_seals.h: $(top_srcdir)/xlat/f_seals.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/faccessat_flags.h: $(top_srcdir)/xlat/faccessat_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/falloc_flags.h: $(top_srcdir)/xlat/falloc_flags.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/fan_classes.h: $(top_srcdir)/xlat/fan_classes.in $(top_srcdir)/xlat/gen.sh
@@ -256,8 +274,16 @@ $(top_srcdir)/xlat/fiemap_flags.h: $(top_srcdir)/xlat/fiemap_flags.in $(top_srcd
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/flockcmds.h: $(top_srcdir)/xlat/flockcmds.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/fsconfig_cmds.h: $(top_srcdir)/xlat/fsconfig_cmds.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/fsmagic.h: $(top_srcdir)/xlat/fsmagic.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/fsmount_flags.h: $(top_srcdir)/xlat/fsmount_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/fsopen_flags.h: $(top_srcdir)/xlat/fsopen_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/fspick_flags.h: $(top_srcdir)/xlat/fspick_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/futexbitset.h: $(top_srcdir)/xlat/futexbitset.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/futexops.h: $(top_srcdir)/xlat/futexops.in $(top_srcdir)/xlat/gen.sh
@@ -266,6 +292,8 @@ $(top_srcdir)/xlat/futexwakecmps.h: $(top_srcdir)/xlat/futexwakecmps.in $(top_sr
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/futexwakeops.h: $(top_srcdir)/xlat/futexwakeops.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/get_mempolicy_flags.h: $(top_srcdir)/xlat/get_mempolicy_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/getrandom_flags.h: $(top_srcdir)/xlat/getrandom_flags.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/getsock_ip_options.h: $(top_srcdir)/xlat/getsock_ip_options.in $(top_srcdir)/xlat/gen.sh
@@ -276,6 +304,8 @@ $(top_srcdir)/xlat/getsock_options.h: $(top_srcdir)/xlat/getsock_options.in $(to
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/hci_channels.h: $(top_srcdir)/xlat/hci_channels.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/hdio_drive_cmds.h: $(top_srcdir)/xlat/hdio_drive_cmds.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/hw_breakpoint_len.h: $(top_srcdir)/xlat/hw_breakpoint_len.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/hw_breakpoint_type.h: $(top_srcdir)/xlat/hw_breakpoint_type.in $(top_srcdir)/xlat/gen.sh
@@ -352,8 +382,16 @@ $(top_srcdir)/xlat/key_reqkeys.h: $(top_srcdir)/xlat/key_reqkeys.in $(top_srcdir
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/key_spec.h: $(top_srcdir)/xlat/key_spec.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/keyctl_caps0.h: $(top_srcdir)/xlat/keyctl_caps0.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/keyctl_caps1.h: $(top_srcdir)/xlat/keyctl_caps1.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/keyctl_commands.h: $(top_srcdir)/xlat/keyctl_commands.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/keyctl_move_flags.h: $(top_srcdir)/xlat/keyctl_move_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/keyctl_pkey_ops.h: $(top_srcdir)/xlat/keyctl_pkey_ops.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/kvm_cap.h: $(top_srcdir)/xlat/kvm_cap.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/kvm_cpuid_flags.h: $(top_srcdir)/xlat/kvm_cpuid_flags.in $(top_srcdir)/xlat/gen.sh
@@ -374,7 +412,7 @@ $(top_srcdir)/xlat/lwtunnel_encap_types.h: $(top_srcdir)/xlat/lwtunnel_encap_typ
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/madvise_cmds.h: $(top_srcdir)/xlat/madvise_cmds.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/mbindflags.h: $(top_srcdir)/xlat/mbindflags.in $(top_srcdir)/xlat/gen.sh
+$(top_srcdir)/xlat/mbind_flags.h: $(top_srcdir)/xlat/mbind_flags.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/mctl_sync.h: $(top_srcdir)/xlat/mctl_sync.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
@@ -386,8 +424,6 @@ $(top_srcdir)/xlat/membarrier_cmds.h: $(top_srcdir)/xlat/membarrier_cmds.in $(to
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/memfd_create_flags.h: $(top_srcdir)/xlat/memfd_create_flags.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/mempolicyflags.h: $(top_srcdir)/xlat/mempolicyflags.in $(top_srcdir)/xlat/gen.sh
-       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/mlock_flags.h: $(top_srcdir)/xlat/mlock_flags.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/mlockall_flags.h: $(top_srcdir)/xlat/mlockall_flags.in $(top_srcdir)/xlat/gen.sh
@@ -402,10 +438,18 @@ $(top_srcdir)/xlat/modetypes.h: $(top_srcdir)/xlat/modetypes.in $(top_srcdir)/xl
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/module_init_flags.h: $(top_srcdir)/xlat/module_init_flags.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/mount_attr_flags.h: $(top_srcdir)/xlat/mount_attr_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/mount_flags.h: $(top_srcdir)/xlat/mount_flags.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/move_mount_flags.h: $(top_srcdir)/xlat/move_mount_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/move_pages_flags.h: $(top_srcdir)/xlat/move_pages_flags.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/mpol_mode_flags.h: $(top_srcdir)/xlat/mpol_mode_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/mpol_modes.h: $(top_srcdir)/xlat/mpol_modes.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/mq_attr_flags.h: $(top_srcdir)/xlat/mq_attr_flags.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/mremap_flags.h: $(top_srcdir)/xlat/mremap_flags.in $(top_srcdir)/xlat/gen.sh
@@ -516,6 +560,10 @@ $(top_srcdir)/xlat/open_access_modes.h: $(top_srcdir)/xlat/open_access_modes.in
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/open_mode_flags.h: $(top_srcdir)/xlat/open_mode_flags.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/open_resolve_flags.h: $(top_srcdir)/xlat/open_resolve_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/open_tree_flags.h: $(top_srcdir)/xlat/open_tree_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/packet_diag_attrs.h: $(top_srcdir)/xlat/packet_diag_attrs.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/packet_diag_info_flags.h: $(top_srcdir)/xlat/packet_diag_info_flags.in $(top_srcdir)/xlat/gen.sh
@@ -558,8 +606,6 @@ $(top_srcdir)/xlat/phonet_protocols.h: $(top_srcdir)/xlat/phonet_protocols.in $(
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/pkey_access.h: $(top_srcdir)/xlat/pkey_access.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/policies.h: $(top_srcdir)/xlat/policies.in $(top_srcdir)/xlat/gen.sh
-       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/pollflags.h: $(top_srcdir)/xlat/pollflags.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/pr_cap_ambient.h: $(top_srcdir)/xlat/pr_cap_ambient.in $(top_srcdir)/xlat/gen.sh
@@ -590,7 +636,9 @@ $(top_srcdir)/xlat/prctl_options.h: $(top_srcdir)/xlat/prctl_options.in $(top_sr
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/priorities.h: $(top_srcdir)/xlat/priorities.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/ptp_flags_options.h: $(top_srcdir)/xlat/ptp_flags_options.in $(top_srcdir)/xlat/gen.sh
+$(top_srcdir)/xlat/ptp_extts_flags.h: $(top_srcdir)/xlat/ptp_extts_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/ptp_perout_flags.h: $(top_srcdir)/xlat/ptp_perout_flags.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/ptrace_cmds.h: $(top_srcdir)/xlat/ptrace_cmds.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
@@ -630,6 +678,10 @@ $(top_srcdir)/xlat/routing_table_ids.h: $(top_srcdir)/xlat/routing_table_ids.in
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/routing_types.h: $(top_srcdir)/xlat/routing_types.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/rtc_ioctl_cmds.h: $(top_srcdir)/xlat/rtc_ioctl_cmds.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/rtc_vl_flags.h: $(top_srcdir)/xlat/rtc_vl_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/rtnl_addr_attrs.h: $(top_srcdir)/xlat/rtnl_addr_attrs.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/rtnl_addrlabel_attrs.h: $(top_srcdir)/xlat/rtnl_addrlabel_attrs.in $(top_srcdir)/xlat/gen.sh
@@ -692,6 +744,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_act_flags.h: $(top_srcdir)/xlat/rtnl_tca_act_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/rtnl_tca_act_hw_stats.h: $(top_srcdir)/xlat/rtnl_tca_act_hw_stats.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
@@ -910,6 +966,8 @@ $(top_srcdir)/xlat/sysctl_vm.h: $(top_srcdir)/xlat/sysctl_vm.in $(top_srcdir)/xl
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/syslog_action_type.h: $(top_srcdir)/xlat/syslog_action_type.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/syslog_console_levels.h: $(top_srcdir)/xlat/syslog_console_levels.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/sysmips_operations.h: $(top_srcdir)/xlat/sysmips_operations.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/tcflsh_options.h: $(top_srcdir)/xlat/tcflsh_options.in $(top_srcdir)/xlat/gen.sh
@@ -920,6 +978,24 @@ $(top_srcdir)/xlat/tcp_states.h: $(top_srcdir)/xlat/tcp_states.in $(top_srcdir)/
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/tcxonc_options.h: $(top_srcdir)/xlat/tcxonc_options.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/tee_ioctl_cmds.h: $(top_srcdir)/xlat/tee_ioctl_cmds.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/tee_ioctl_gen_caps.h: $(top_srcdir)/xlat/tee_ioctl_gen_caps.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/tee_ioctl_impl_ids.h: $(top_srcdir)/xlat/tee_ioctl_impl_ids.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/tee_ioctl_login_types.h: $(top_srcdir)/xlat/tee_ioctl_login_types.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/tee_ioctl_max_arg_size.h: $(top_srcdir)/xlat/tee_ioctl_max_arg_size.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/tee_ioctl_optee_caps.h: $(top_srcdir)/xlat/tee_ioctl_optee_caps.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/tee_ioctl_origins.h: $(top_srcdir)/xlat/tee_ioctl_origins.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/tee_ioctl_param_attr_types.h: $(top_srcdir)/xlat/tee_ioctl_param_attr_types.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/tee_ioctl_shm_flags.h: $(top_srcdir)/xlat/tee_ioctl_shm_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/timerfdflags.h: $(top_srcdir)/xlat/timerfdflags.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/tun_device_types.h: $(top_srcdir)/xlat/tun_device_types.in $(top_srcdir)/xlat/gen.sh
@@ -950,16 +1026,30 @@ $(top_srcdir)/xlat/unix_diag_show.h: $(top_srcdir)/xlat/unix_diag_show.in $(top_
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/unshare_flags.h: $(top_srcdir)/xlat/unshare_flags.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/uring_cqring_flags.h: $(top_srcdir)/xlat/uring_cqring_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/uring_enter_flags.h: $(top_srcdir)/xlat/uring_enter_flags.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/uring_op_flags.h: $(top_srcdir)/xlat/uring_op_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/uring_ops.h: $(top_srcdir)/xlat/uring_ops.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/uring_register_opcodes.h: $(top_srcdir)/xlat/uring_register_opcodes.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/uring_setup_features.h: $(top_srcdir)/xlat/uring_setup_features.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/uring_setup_flags.h: $(top_srcdir)/xlat/uring_setup_flags.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/usagewho.h: $(top_srcdir)/xlat/usagewho.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/v4l2_buf_flags.h: $(top_srcdir)/xlat/v4l2_buf_flags.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/v4l2_buf_flags_masks.h: $(top_srcdir)/xlat/v4l2_buf_flags_masks.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/v4l2_buf_flags_ts_src.h: $(top_srcdir)/xlat/v4l2_buf_flags_ts_src.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/v4l2_buf_flags_ts_type.h: $(top_srcdir)/xlat/v4l2_buf_flags_ts_type.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/v4l2_buf_types.h: $(top_srcdir)/xlat/v4l2_buf_types.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/v4l2_capture_modes.h: $(top_srcdir)/xlat/v4l2_capture_modes.in $(top_srcdir)/xlat/gen.sh
@@ -974,6 +1064,8 @@ $(top_srcdir)/xlat/v4l2_control_id_bases.h: $(top_srcdir)/xlat/v4l2_control_id_b
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/v4l2_control_ids.h: $(top_srcdir)/xlat/v4l2_control_ids.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/v4l2_control_query_flags.h: $(top_srcdir)/xlat/v4l2_control_query_flags.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/v4l2_control_types.h: $(top_srcdir)/xlat/v4l2_control_types.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/v4l2_device_capabilities_flags.h: $(top_srcdir)/xlat/v4l2_device_capabilities_flags.in $(top_srcdir)/xlat/gen.sh
@@ -988,6 +1080,8 @@ $(top_srcdir)/xlat/v4l2_framesize_types.h: $(top_srcdir)/xlat/v4l2_framesize_typ
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/v4l2_input_types.h: $(top_srcdir)/xlat/v4l2_input_types.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/v4l2_ioctl_cmds.h: $(top_srcdir)/xlat/v4l2_ioctl_cmds.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/v4l2_memories.h: $(top_srcdir)/xlat/v4l2_memories.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/v4l2_pix_fmts.h: $(top_srcdir)/xlat/v4l2_pix_fmts.in $(top_srcdir)/xlat/gen.sh
@@ -1012,6 +1106,8 @@ $(top_srcdir)/xlat/wait4_options.h: $(top_srcdir)/xlat/wait4_options.in $(top_sr
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/waitid_types.h: $(top_srcdir)/xlat/waitid_types.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/watchdog_ioctl_cmds.h: $(top_srcdir)/xlat/watchdog_ioctl_cmds.in $(top_srcdir)/xlat/gen.sh
+       $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/whence_codes.h: $(top_srcdir)/xlat/whence_codes.in $(top_srcdir)/xlat/gen.sh
        $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/xattrflags.h: $(top_srcdir)/xlat/xattrflags.in $(top_srcdir)/xlat/gen.sh
diff --git a/xlat/access_flags.h b/xlat/access_flags.h
deleted file mode 100644 (file)
index e12a08c..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Generated by ./xlat/gen.sh from ./xlat/access_flags.in; do not edit. */
-
-#include "gcc_compat.h"
-#include "static_assert.h"
-
-
-#ifndef XLAT_MACROS_ONLY
-
-# ifdef IN_MPERS
-
-#  error static const struct xlat access_flags in mpers mode
-
-# else
-
-static
-const struct xlat access_flags[] = {
-#if defined(F_OK) || (defined(HAVE_DECL_F_OK) && HAVE_DECL_F_OK)
-  XLAT(F_OK),
-#endif
-#if defined(R_OK) || (defined(HAVE_DECL_R_OK) && HAVE_DECL_R_OK)
-  XLAT(R_OK),
-#endif
-#if defined(W_OK) || (defined(HAVE_DECL_W_OK) && HAVE_DECL_W_OK)
-  XLAT(W_OK),
-#endif
-#if defined(X_OK) || (defined(HAVE_DECL_X_OK) && HAVE_DECL_X_OK)
-  XLAT(X_OK),
-#endif
-#if defined(EFF_ONLY_OK) || (defined(HAVE_DECL_EFF_ONLY_OK) && HAVE_DECL_EFF_ONLY_OK)
-  XLAT(EFF_ONLY_OK),
-#endif
-#if defined(EX_OK) || (defined(HAVE_DECL_EX_OK) && HAVE_DECL_EX_OK)
-  XLAT(EX_OK),
-#endif
- XLAT_END
-};
-
-# endif /* !IN_MPERS */
-
-#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/access_flags.in b/xlat/access_flags.in
deleted file mode 100644 (file)
index cc46ad5..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-F_OK
-R_OK
-W_OK
-X_OK
-EFF_ONLY_OK
-EX_OK
diff --git a/xlat/access_modes.h b/xlat/access_modes.h
new file mode 100644 (file)
index 0000000..291e424
--- /dev/null
@@ -0,0 +1,102 @@
+/* Generated by ./xlat/gen.sh from ./xlat/access_modes.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(F_OK) || (defined(HAVE_DECL_F_OK) && HAVE_DECL_F_OK)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((F_OK) == (0), "F_OK != 0");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define F_OK 0
+#endif
+#if defined(R_OK) || (defined(HAVE_DECL_R_OK) && HAVE_DECL_R_OK)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((R_OK) == (4), "R_OK != 4");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define R_OK 4
+#endif
+#if defined(W_OK) || (defined(HAVE_DECL_W_OK) && HAVE_DECL_W_OK)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((W_OK) == (2), "W_OK != 2");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define W_OK 2
+#endif
+#if defined(X_OK) || (defined(HAVE_DECL_X_OK) && HAVE_DECL_X_OK)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((X_OK) == (1), "X_OK != 1");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define X_OK 1
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat access_modes in mpers mode
+
+# else
+
+static const struct xlat_data access_modes_xdata[] = {
+ XLAT(F_OK),
+ #define XLAT_VAL_0 ((unsigned) (F_OK))
+ #define XLAT_STR_0 STRINGIFY(F_OK)
+ XLAT(R_OK),
+ #define XLAT_VAL_1 ((unsigned) (R_OK))
+ #define XLAT_STR_1 STRINGIFY(R_OK)
+ XLAT(W_OK),
+ #define XLAT_VAL_2 ((unsigned) (W_OK))
+ #define XLAT_STR_2 STRINGIFY(W_OK)
+ XLAT(X_OK),
+ #define XLAT_VAL_3 ((unsigned) (X_OK))
+ #define XLAT_STR_3 STRINGIFY(X_OK)
+};
+static
+const struct xlat access_modes[1] = { {
+ .data = access_modes_xdata,
+ .size = ARRAY_SIZE(access_modes_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/access_modes.in b/xlat/access_modes.in
new file mode 100644 (file)
index 0000000..3e57702
--- /dev/null
@@ -0,0 +1,4 @@
+F_OK 0
+R_OK 4
+W_OK 2
+X_OK 1
index b95108399f497816a075114dafebe06c901a8a9e..a50a3eba60b0487c6acf905e5d9156b6badc9e79 100644 (file)
@@ -323,55 +323,513 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # ifndef IN_MPERS
 
-const struct xlat addrfams[] = {
+static const struct xlat_data addrfams_xdata[] = {
  [AF_UNSPEC] = XLAT(AF_UNSPEC),
+ #define XLAT_VAL_0 ((unsigned) (AF_UNSPEC))
+ #define XLAT_STR_0 STRINGIFY(AF_UNSPEC)
  [AF_UNIX] = XLAT(AF_UNIX),
+ #define XLAT_VAL_1 ((unsigned) (AF_UNIX))
+ #define XLAT_STR_1 STRINGIFY(AF_UNIX)
  [AF_INET] = XLAT(AF_INET),
+ #define XLAT_VAL_2 ((unsigned) (AF_INET))
+ #define XLAT_STR_2 STRINGIFY(AF_INET)
  [AF_AX25] = XLAT(AF_AX25),
+ #define XLAT_VAL_3 ((unsigned) (AF_AX25))
+ #define XLAT_STR_3 STRINGIFY(AF_AX25)
  [AF_IPX] = XLAT(AF_IPX),
+ #define XLAT_VAL_4 ((unsigned) (AF_IPX))
+ #define XLAT_STR_4 STRINGIFY(AF_IPX)
  [AF_APPLETALK] = XLAT(AF_APPLETALK),
+ #define XLAT_VAL_5 ((unsigned) (AF_APPLETALK))
+ #define XLAT_STR_5 STRINGIFY(AF_APPLETALK)
  [AF_NETROM] = XLAT(AF_NETROM),
+ #define XLAT_VAL_6 ((unsigned) (AF_NETROM))
+ #define XLAT_STR_6 STRINGIFY(AF_NETROM)
  [AF_BRIDGE] = XLAT(AF_BRIDGE),
+ #define XLAT_VAL_7 ((unsigned) (AF_BRIDGE))
+ #define XLAT_STR_7 STRINGIFY(AF_BRIDGE)
  [AF_ATMPVC] = XLAT(AF_ATMPVC),
+ #define XLAT_VAL_8 ((unsigned) (AF_ATMPVC))
+ #define XLAT_STR_8 STRINGIFY(AF_ATMPVC)
  [AF_X25] = XLAT(AF_X25),
+ #define XLAT_VAL_9 ((unsigned) (AF_X25))
+ #define XLAT_STR_9 STRINGIFY(AF_X25)
  [AF_INET6] = XLAT(AF_INET6),
+ #define XLAT_VAL_10 ((unsigned) (AF_INET6))
+ #define XLAT_STR_10 STRINGIFY(AF_INET6)
  [AF_ROSE] = XLAT(AF_ROSE),
+ #define XLAT_VAL_11 ((unsigned) (AF_ROSE))
+ #define XLAT_STR_11 STRINGIFY(AF_ROSE)
  [AF_DECnet] = XLAT(AF_DECnet),
+ #define XLAT_VAL_12 ((unsigned) (AF_DECnet))
+ #define XLAT_STR_12 STRINGIFY(AF_DECnet)
  [AF_NETBEUI] = XLAT(AF_NETBEUI),
+ #define XLAT_VAL_13 ((unsigned) (AF_NETBEUI))
+ #define XLAT_STR_13 STRINGIFY(AF_NETBEUI)
  [AF_SECURITY] = XLAT(AF_SECURITY),
+ #define XLAT_VAL_14 ((unsigned) (AF_SECURITY))
+ #define XLAT_STR_14 STRINGIFY(AF_SECURITY)
  [AF_KEY] = XLAT(AF_KEY),
+ #define XLAT_VAL_15 ((unsigned) (AF_KEY))
+ #define XLAT_STR_15 STRINGIFY(AF_KEY)
  [AF_NETLINK] = XLAT(AF_NETLINK),
+ #define XLAT_VAL_16 ((unsigned) (AF_NETLINK))
+ #define XLAT_STR_16 STRINGIFY(AF_NETLINK)
  [AF_PACKET] = XLAT(AF_PACKET),
+ #define XLAT_VAL_17 ((unsigned) (AF_PACKET))
+ #define XLAT_STR_17 STRINGIFY(AF_PACKET)
  [AF_ASH] = XLAT(AF_ASH),
+ #define XLAT_VAL_18 ((unsigned) (AF_ASH))
+ #define XLAT_STR_18 STRINGIFY(AF_ASH)
  [AF_ECONET] = XLAT(AF_ECONET),
+ #define XLAT_VAL_19 ((unsigned) (AF_ECONET))
+ #define XLAT_STR_19 STRINGIFY(AF_ECONET)
  [AF_ATMSVC] = XLAT(AF_ATMSVC),
+ #define XLAT_VAL_20 ((unsigned) (AF_ATMSVC))
+ #define XLAT_STR_20 STRINGIFY(AF_ATMSVC)
  [AF_RDS] = XLAT(AF_RDS),
+ #define XLAT_VAL_21 ((unsigned) (AF_RDS))
+ #define XLAT_STR_21 STRINGIFY(AF_RDS)
  [AF_SNA] = XLAT(AF_SNA),
+ #define XLAT_VAL_22 ((unsigned) (AF_SNA))
+ #define XLAT_STR_22 STRINGIFY(AF_SNA)
  [AF_IRDA] = XLAT(AF_IRDA),
+ #define XLAT_VAL_23 ((unsigned) (AF_IRDA))
+ #define XLAT_STR_23 STRINGIFY(AF_IRDA)
  [AF_PPPOX] = XLAT(AF_PPPOX),
+ #define XLAT_VAL_24 ((unsigned) (AF_PPPOX))
+ #define XLAT_STR_24 STRINGIFY(AF_PPPOX)
  [AF_WANPIPE] = XLAT(AF_WANPIPE),
+ #define XLAT_VAL_25 ((unsigned) (AF_WANPIPE))
+ #define XLAT_STR_25 STRINGIFY(AF_WANPIPE)
  [AF_LLC] = XLAT(AF_LLC),
+ #define XLAT_VAL_26 ((unsigned) (AF_LLC))
+ #define XLAT_STR_26 STRINGIFY(AF_LLC)
  [AF_IB] = XLAT(AF_IB),
+ #define XLAT_VAL_27 ((unsigned) (AF_IB))
+ #define XLAT_STR_27 STRINGIFY(AF_IB)
  [AF_MPLS] = XLAT(AF_MPLS),
+ #define XLAT_VAL_28 ((unsigned) (AF_MPLS))
+ #define XLAT_STR_28 STRINGIFY(AF_MPLS)
  [AF_CAN] = XLAT(AF_CAN),
+ #define XLAT_VAL_29 ((unsigned) (AF_CAN))
+ #define XLAT_STR_29 STRINGIFY(AF_CAN)
  [AF_TIPC] = XLAT(AF_TIPC),
+ #define XLAT_VAL_30 ((unsigned) (AF_TIPC))
+ #define XLAT_STR_30 STRINGIFY(AF_TIPC)
  [AF_BLUETOOTH] = XLAT(AF_BLUETOOTH),
+ #define XLAT_VAL_31 ((unsigned) (AF_BLUETOOTH))
+ #define XLAT_STR_31 STRINGIFY(AF_BLUETOOTH)
  [AF_IUCV] = XLAT(AF_IUCV),
+ #define XLAT_VAL_32 ((unsigned) (AF_IUCV))
+ #define XLAT_STR_32 STRINGIFY(AF_IUCV)
  [AF_RXRPC] = XLAT(AF_RXRPC),
+ #define XLAT_VAL_33 ((unsigned) (AF_RXRPC))
+ #define XLAT_STR_33 STRINGIFY(AF_RXRPC)
  [AF_ISDN] = XLAT(AF_ISDN),
+ #define XLAT_VAL_34 ((unsigned) (AF_ISDN))
+ #define XLAT_STR_34 STRINGIFY(AF_ISDN)
  [AF_PHONET] = XLAT(AF_PHONET),
+ #define XLAT_VAL_35 ((unsigned) (AF_PHONET))
+ #define XLAT_STR_35 STRINGIFY(AF_PHONET)
  [AF_IEEE802154] = XLAT(AF_IEEE802154),
+ #define XLAT_VAL_36 ((unsigned) (AF_IEEE802154))
+ #define XLAT_STR_36 STRINGIFY(AF_IEEE802154)
  [AF_CAIF] = XLAT(AF_CAIF),
+ #define XLAT_VAL_37 ((unsigned) (AF_CAIF))
+ #define XLAT_STR_37 STRINGIFY(AF_CAIF)
  [AF_ALG] = XLAT(AF_ALG),
+ #define XLAT_VAL_38 ((unsigned) (AF_ALG))
+ #define XLAT_STR_38 STRINGIFY(AF_ALG)
  [AF_NFC] = XLAT(AF_NFC),
+ #define XLAT_VAL_39 ((unsigned) (AF_NFC))
+ #define XLAT_STR_39 STRINGIFY(AF_NFC)
  [AF_VSOCK] = XLAT(AF_VSOCK),
+ #define XLAT_VAL_40 ((unsigned) (AF_VSOCK))
+ #define XLAT_STR_40 STRINGIFY(AF_VSOCK)
  [AF_KCM] = XLAT(AF_KCM),
+ #define XLAT_VAL_41 ((unsigned) (AF_KCM))
+ #define XLAT_STR_41 STRINGIFY(AF_KCM)
  [AF_QIPCRTR] = XLAT(AF_QIPCRTR),
+ #define XLAT_VAL_42 ((unsigned) (AF_QIPCRTR))
+ #define XLAT_STR_42 STRINGIFY(AF_QIPCRTR)
  [AF_SMC] = XLAT(AF_SMC),
+ #define XLAT_VAL_43 ((unsigned) (AF_SMC))
+ #define XLAT_STR_43 STRINGIFY(AF_SMC)
  [AF_XDP] = XLAT(AF_XDP),
- XLAT_END
+ #define XLAT_VAL_44 ((unsigned) (AF_XDP))
+ #define XLAT_STR_44 STRINGIFY(AF_XDP)
 };
+const struct xlat addrfams[1] = { {
+ .data = addrfams_xdata,
+ .size = ARRAY_SIZE(addrfams_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+#  ifdef XLAT_VAL_30
+  | XLAT_VAL_30
+#  endif
+#  ifdef XLAT_VAL_31
+  | XLAT_VAL_31
+#  endif
+#  ifdef XLAT_VAL_32
+  | XLAT_VAL_32
+#  endif
+#  ifdef XLAT_VAL_33
+  | XLAT_VAL_33
+#  endif
+#  ifdef XLAT_VAL_34
+  | XLAT_VAL_34
+#  endif
+#  ifdef XLAT_VAL_35
+  | XLAT_VAL_35
+#  endif
+#  ifdef XLAT_VAL_36
+  | XLAT_VAL_36
+#  endif
+#  ifdef XLAT_VAL_37
+  | XLAT_VAL_37
+#  endif
+#  ifdef XLAT_VAL_38
+  | XLAT_VAL_38
+#  endif
+#  ifdef XLAT_VAL_39
+  | XLAT_VAL_39
+#  endif
+#  ifdef XLAT_VAL_40
+  | XLAT_VAL_40
+#  endif
+#  ifdef XLAT_VAL_41
+  | XLAT_VAL_41
+#  endif
+#  ifdef XLAT_VAL_42
+  | XLAT_VAL_42
+#  endif
+#  ifdef XLAT_VAL_43
+  | XLAT_VAL_43
+#  endif
+#  ifdef XLAT_VAL_44
+  | XLAT_VAL_44
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+#  ifdef XLAT_STR_30
+  + sizeof(XLAT_STR_30)
+#  endif
+#  ifdef XLAT_STR_31
+  + sizeof(XLAT_STR_31)
+#  endif
+#  ifdef XLAT_STR_32
+  + sizeof(XLAT_STR_32)
+#  endif
+#  ifdef XLAT_STR_33
+  + sizeof(XLAT_STR_33)
+#  endif
+#  ifdef XLAT_STR_34
+  + sizeof(XLAT_STR_34)
+#  endif
+#  ifdef XLAT_STR_35
+  + sizeof(XLAT_STR_35)
+#  endif
+#  ifdef XLAT_STR_36
+  + sizeof(XLAT_STR_36)
+#  endif
+#  ifdef XLAT_STR_37
+  + sizeof(XLAT_STR_37)
+#  endif
+#  ifdef XLAT_STR_38
+  + sizeof(XLAT_STR_38)
+#  endif
+#  ifdef XLAT_STR_39
+  + sizeof(XLAT_STR_39)
+#  endif
+#  ifdef XLAT_STR_40
+  + sizeof(XLAT_STR_40)
+#  endif
+#  ifdef XLAT_STR_41
+  + sizeof(XLAT_STR_41)
+#  endif
+#  ifdef XLAT_STR_42
+  + sizeof(XLAT_STR_42)
+#  endif
+#  ifdef XLAT_STR_43
+  + sizeof(XLAT_STR_43)
+#  endif
+#  ifdef XLAT_STR_44
+  + sizeof(XLAT_STR_44)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
+#  undef XLAT_STR_30
+#  undef XLAT_VAL_30
+#  undef XLAT_STR_31
+#  undef XLAT_VAL_31
+#  undef XLAT_STR_32
+#  undef XLAT_VAL_32
+#  undef XLAT_STR_33
+#  undef XLAT_VAL_33
+#  undef XLAT_STR_34
+#  undef XLAT_VAL_34
+#  undef XLAT_STR_35
+#  undef XLAT_VAL_35
+#  undef XLAT_STR_36
+#  undef XLAT_VAL_36
+#  undef XLAT_STR_37
+#  undef XLAT_VAL_37
+#  undef XLAT_STR_38
+#  undef XLAT_VAL_38
+#  undef XLAT_STR_39
+#  undef XLAT_VAL_39
+#  undef XLAT_STR_40
+#  undef XLAT_VAL_40
+#  undef XLAT_STR_41
+#  undef XLAT_VAL_41
+#  undef XLAT_STR_42
+#  undef XLAT_VAL_42
+#  undef XLAT_STR_43
+#  undef XLAT_VAL_43
+#  undef XLAT_STR_44
+#  undef XLAT_VAL_44
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 8f57ca293fe79a5f78b636cf6877e7fe5b2f3653..317a32e3275dabde66faf7ee92afe8e7febd454d 100644 (file)
@@ -103,24 +103,162 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat adjtimex_modes[] = {
+static const struct xlat_data adjtimex_modes_xdata[] = {
  XLAT(ADJ_OFFSET_SS_READ),
+ #define XLAT_VAL_0 ((unsigned) (ADJ_OFFSET_SS_READ))
+ #define XLAT_STR_0 STRINGIFY(ADJ_OFFSET_SS_READ)
  XLAT(ADJ_OFFSET_SINGLESHOT),
+ #define XLAT_VAL_1 ((unsigned) (ADJ_OFFSET_SINGLESHOT))
+ #define XLAT_STR_1 STRINGIFY(ADJ_OFFSET_SINGLESHOT)
  XLAT(ADJ_OFFSET),
+ #define XLAT_VAL_2 ((unsigned) (ADJ_OFFSET))
+ #define XLAT_STR_2 STRINGIFY(ADJ_OFFSET)
  XLAT(ADJ_FREQUENCY),
+ #define XLAT_VAL_3 ((unsigned) (ADJ_FREQUENCY))
+ #define XLAT_STR_3 STRINGIFY(ADJ_FREQUENCY)
  XLAT(ADJ_MAXERROR),
+ #define XLAT_VAL_4 ((unsigned) (ADJ_MAXERROR))
+ #define XLAT_STR_4 STRINGIFY(ADJ_MAXERROR)
  XLAT(ADJ_ESTERROR),
+ #define XLAT_VAL_5 ((unsigned) (ADJ_ESTERROR))
+ #define XLAT_STR_5 STRINGIFY(ADJ_ESTERROR)
  XLAT(ADJ_STATUS),
+ #define XLAT_VAL_6 ((unsigned) (ADJ_STATUS))
+ #define XLAT_STR_6 STRINGIFY(ADJ_STATUS)
  XLAT(ADJ_TIMECONST),
+ #define XLAT_VAL_7 ((unsigned) (ADJ_TIMECONST))
+ #define XLAT_STR_7 STRINGIFY(ADJ_TIMECONST)
  XLAT(ADJ_TAI),
+ #define XLAT_VAL_8 ((unsigned) (ADJ_TAI))
+ #define XLAT_STR_8 STRINGIFY(ADJ_TAI)
  XLAT(ADJ_SETOFFSET),
+ #define XLAT_VAL_9 ((unsigned) (ADJ_SETOFFSET))
+ #define XLAT_STR_9 STRINGIFY(ADJ_SETOFFSET)
  XLAT(ADJ_MICRO),
+ #define XLAT_VAL_10 ((unsigned) (ADJ_MICRO))
+ #define XLAT_STR_10 STRINGIFY(ADJ_MICRO)
  XLAT(ADJ_NANO),
+ #define XLAT_VAL_11 ((unsigned) (ADJ_NANO))
+ #define XLAT_STR_11 STRINGIFY(ADJ_NANO)
  XLAT(ADJ_TICK),
- XLAT_END
+ #define XLAT_VAL_12 ((unsigned) (ADJ_TICK))
+ #define XLAT_STR_12 STRINGIFY(ADJ_TICK)
 };
+static
+const struct xlat adjtimex_modes[1] = { {
+ .data = adjtimex_modes_xdata,
+ .size = ARRAY_SIZE(adjtimex_modes_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 01b760c96560f07e9a15a2d2c8d4cb97dbd1ac37..af2cfd50961d588ab541210f1482f2e1053faedc 100644 (file)
@@ -54,17 +54,85 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat adjtimex_state[] = {
+static const struct xlat_data adjtimex_state_xdata[] = {
  [TIME_OK] = XLAT(TIME_OK),
+ #define XLAT_VAL_0 ((unsigned) (TIME_OK))
+ #define XLAT_STR_0 STRINGIFY(TIME_OK)
  [TIME_INS] = XLAT(TIME_INS),
+ #define XLAT_VAL_1 ((unsigned) (TIME_INS))
+ #define XLAT_STR_1 STRINGIFY(TIME_INS)
  [TIME_DEL] = XLAT(TIME_DEL),
+ #define XLAT_VAL_2 ((unsigned) (TIME_DEL))
+ #define XLAT_STR_2 STRINGIFY(TIME_DEL)
  [TIME_OOP] = XLAT(TIME_OOP),
+ #define XLAT_VAL_3 ((unsigned) (TIME_OOP))
+ #define XLAT_STR_3 STRINGIFY(TIME_OOP)
  [TIME_WAIT] = XLAT(TIME_WAIT),
+ #define XLAT_VAL_4 ((unsigned) (TIME_WAIT))
+ #define XLAT_STR_4 STRINGIFY(TIME_WAIT)
  [TIME_ERROR] = XLAT(TIME_ERROR),
- XLAT_END
+ #define XLAT_VAL_5 ((unsigned) (TIME_ERROR))
+ #define XLAT_STR_5 STRINGIFY(TIME_ERROR)
 };
+static
+const struct xlat adjtimex_state[1] = { {
+ .data = adjtimex_state_xdata,
+ .size = ARRAY_SIZE(adjtimex_state_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index b9e249e2c086af2647c37c0aefecf6a407c22e0d..517a7433005cd8d0d92563397f588b5c1c5b12f9 100644 (file)
@@ -124,27 +124,195 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat adjtimex_status[] = {
+static const struct xlat_data adjtimex_status_xdata[] = {
  XLAT(STA_PLL),
+ #define XLAT_VAL_0 ((unsigned) (STA_PLL))
+ #define XLAT_STR_0 STRINGIFY(STA_PLL)
  XLAT(STA_PPSFREQ),
+ #define XLAT_VAL_1 ((unsigned) (STA_PPSFREQ))
+ #define XLAT_STR_1 STRINGIFY(STA_PPSFREQ)
  XLAT(STA_PPSTIME),
+ #define XLAT_VAL_2 ((unsigned) (STA_PPSTIME))
+ #define XLAT_STR_2 STRINGIFY(STA_PPSTIME)
  XLAT(STA_FLL),
+ #define XLAT_VAL_3 ((unsigned) (STA_FLL))
+ #define XLAT_STR_3 STRINGIFY(STA_FLL)
  XLAT(STA_INS),
+ #define XLAT_VAL_4 ((unsigned) (STA_INS))
+ #define XLAT_STR_4 STRINGIFY(STA_INS)
  XLAT(STA_DEL),
+ #define XLAT_VAL_5 ((unsigned) (STA_DEL))
+ #define XLAT_STR_5 STRINGIFY(STA_DEL)
  XLAT(STA_UNSYNC),
+ #define XLAT_VAL_6 ((unsigned) (STA_UNSYNC))
+ #define XLAT_STR_6 STRINGIFY(STA_UNSYNC)
  XLAT(STA_FREQHOLD),
+ #define XLAT_VAL_7 ((unsigned) (STA_FREQHOLD))
+ #define XLAT_STR_7 STRINGIFY(STA_FREQHOLD)
  XLAT(STA_PPSSIGNAL),
+ #define XLAT_VAL_8 ((unsigned) (STA_PPSSIGNAL))
+ #define XLAT_STR_8 STRINGIFY(STA_PPSSIGNAL)
  XLAT(STA_PPSJITTER),
+ #define XLAT_VAL_9 ((unsigned) (STA_PPSJITTER))
+ #define XLAT_STR_9 STRINGIFY(STA_PPSJITTER)
  XLAT(STA_PPSWANDER),
+ #define XLAT_VAL_10 ((unsigned) (STA_PPSWANDER))
+ #define XLAT_STR_10 STRINGIFY(STA_PPSWANDER)
  XLAT(STA_PPSERROR),
+ #define XLAT_VAL_11 ((unsigned) (STA_PPSERROR))
+ #define XLAT_STR_11 STRINGIFY(STA_PPSERROR)
  XLAT(STA_CLOCKERR),
+ #define XLAT_VAL_12 ((unsigned) (STA_CLOCKERR))
+ #define XLAT_STR_12 STRINGIFY(STA_CLOCKERR)
  XLAT(STA_NANO),
+ #define XLAT_VAL_13 ((unsigned) (STA_NANO))
+ #define XLAT_STR_13 STRINGIFY(STA_NANO)
  XLAT(STA_MODE),
+ #define XLAT_VAL_14 ((unsigned) (STA_MODE))
+ #define XLAT_STR_14 STRINGIFY(STA_MODE)
  XLAT(STA_CLK),
- XLAT_END
+ #define XLAT_VAL_15 ((unsigned) (STA_CLK))
+ #define XLAT_STR_15 STRINGIFY(STA_CLK)
 };
+static
+const struct xlat adjtimex_status[1] = { {
+ .data = adjtimex_status_xdata,
+ .size = ARRAY_SIZE(adjtimex_status_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index cf5252285cc5f7dd17e1f8cd428e1f7cc788a036..a786ce38d3bd9ae15becb6a0b7e58150e14b4939 100644 (file)
@@ -71,22 +71,110 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat advise[] = {
+static const struct xlat_data advise_xdata[] = {
  XLAT(POSIX_FADV_NORMAL),
+ #define XLAT_VAL_0 ((unsigned) (POSIX_FADV_NORMAL))
+ #define XLAT_STR_0 STRINGIFY(POSIX_FADV_NORMAL)
  XLAT(POSIX_FADV_RANDOM),
+ #define XLAT_VAL_1 ((unsigned) (POSIX_FADV_RANDOM))
+ #define XLAT_STR_1 STRINGIFY(POSIX_FADV_RANDOM)
  XLAT(POSIX_FADV_SEQUENTIAL),
+ #define XLAT_VAL_2 ((unsigned) (POSIX_FADV_SEQUENTIAL))
+ #define XLAT_STR_2 STRINGIFY(POSIX_FADV_SEQUENTIAL)
  XLAT(POSIX_FADV_WILLNEED),
+ #define XLAT_VAL_3 ((unsigned) (POSIX_FADV_WILLNEED))
+ #define XLAT_STR_3 STRINGIFY(POSIX_FADV_WILLNEED)
 #if defined __s390x__
  XLAT(POSIX_FADV_DONTNEED),
+ #define XLAT_VAL_4 ((unsigned) (POSIX_FADV_DONTNEED))
+ #define XLAT_STR_4 STRINGIFY(POSIX_FADV_DONTNEED)
  XLAT(POSIX_FADV_NOREUSE),
+ #define XLAT_VAL_5 ((unsigned) (POSIX_FADV_NOREUSE))
+ #define XLAT_STR_5 STRINGIFY(POSIX_FADV_NOREUSE)
 #else
  XLAT(POSIX_FADV_DONTNEED),
+ #define XLAT_VAL_6 ((unsigned) (POSIX_FADV_DONTNEED))
+ #define XLAT_STR_6 STRINGIFY(POSIX_FADV_DONTNEED)
  XLAT(POSIX_FADV_NOREUSE),
+ #define XLAT_VAL_7 ((unsigned) (POSIX_FADV_NOREUSE))
+ #define XLAT_STR_7 STRINGIFY(POSIX_FADV_NOREUSE)
 #endif
- XLAT_END
 };
+static
+const struct xlat advise[1] = { {
+ .data = advise_xdata,
+ .size = ARRAY_SIZE(advise_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index c104813daf25384366a5c49aa173fdcc737421b0..6a7e2603f2b93d403077852618d02ae3cc01b00a 100644 (file)
@@ -68,19 +68,107 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat af_packet_types[] = {
+static const struct xlat_data af_packet_types_xdata[] = {
  [PACKET_HOST] = XLAT(PACKET_HOST),
+ #define XLAT_VAL_0 ((unsigned) (PACKET_HOST))
+ #define XLAT_STR_0 STRINGIFY(PACKET_HOST)
  [PACKET_BROADCAST] = XLAT(PACKET_BROADCAST),
+ #define XLAT_VAL_1 ((unsigned) (PACKET_BROADCAST))
+ #define XLAT_STR_1 STRINGIFY(PACKET_BROADCAST)
  [PACKET_MULTICAST] = XLAT(PACKET_MULTICAST),
+ #define XLAT_VAL_2 ((unsigned) (PACKET_MULTICAST))
+ #define XLAT_STR_2 STRINGIFY(PACKET_MULTICAST)
  [PACKET_OTHERHOST] = XLAT(PACKET_OTHERHOST),
+ #define XLAT_VAL_3 ((unsigned) (PACKET_OTHERHOST))
+ #define XLAT_STR_3 STRINGIFY(PACKET_OTHERHOST)
  [PACKET_OUTGOING] = XLAT(PACKET_OUTGOING),
+ #define XLAT_VAL_4 ((unsigned) (PACKET_OUTGOING))
+ #define XLAT_STR_4 STRINGIFY(PACKET_OUTGOING)
  [PACKET_LOOPBACK] = XLAT(PACKET_LOOPBACK),
+ #define XLAT_VAL_5 ((unsigned) (PACKET_LOOPBACK))
+ #define XLAT_STR_5 STRINGIFY(PACKET_LOOPBACK)
  [PACKET_USER] = XLAT(PACKET_USER),
+ #define XLAT_VAL_6 ((unsigned) (PACKET_USER))
+ #define XLAT_STR_6 STRINGIFY(PACKET_USER)
  [PACKET_KERNEL] = XLAT(PACKET_KERNEL),
- XLAT_END
+ #define XLAT_VAL_7 ((unsigned) (PACKET_KERNEL))
+ #define XLAT_STR_7 STRINGIFY(PACKET_KERNEL)
 };
+static
+const struct xlat af_packet_types[1] = { {
+ .data = af_packet_types_xdata,
+ .size = ARRAY_SIZE(af_packet_types_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 8d82eba95bef0a6b9298ade75187d10f1745891c..bf3a4f4bcaca2dccc47afd5d56d7436af629a36d 100644 (file)
@@ -33,14 +33,52 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat af_packet_versions[] = {
- XLAT(TPACKET_V1),
- XLAT(TPACKET_V2),
- XLAT(TPACKET_V3),
- XLAT_END
+static const struct xlat_data af_packet_versions_xdata[] = {
+ [TPACKET_V1] = XLAT(TPACKET_V1),
+ #define XLAT_VAL_0 ((unsigned) (TPACKET_V1))
+ #define XLAT_STR_0 STRINGIFY(TPACKET_V1)
+ [TPACKET_V2] = XLAT(TPACKET_V2),
+ #define XLAT_VAL_1 ((unsigned) (TPACKET_V2))
+ #define XLAT_STR_1 STRINGIFY(TPACKET_V2)
+ [TPACKET_V3] = XLAT(TPACKET_V3),
+ #define XLAT_VAL_2 ((unsigned) (TPACKET_V3))
+ #define XLAT_STR_2 STRINGIFY(TPACKET_V3)
 };
+static
+const struct xlat af_packet_versions[1] = { {
+ .data = af_packet_versions_xdata,
+ .size = ARRAY_SIZE(af_packet_versions_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 399cdf4d40bda80aac418cc7a6bd96b31e0a8320..17a9f31a50854a2889f91d544eeeae8ee0fc4e65 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 TPACKET_V1     0
 TPACKET_V2     1
 TPACKET_V3     2
index dd558e8e69f60ae6328473696db3ee923a1e2c4b..10f1bff221b76fd9546061b07ae78fda863f93ec 100644 (file)
@@ -75,20 +75,118 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat aio_cmds[] = {
+static const struct xlat_data aio_cmds_xdata[] = {
  [IOCB_CMD_PREAD] = XLAT(IOCB_CMD_PREAD),
+ #define XLAT_VAL_0 ((unsigned) (IOCB_CMD_PREAD))
+ #define XLAT_STR_0 STRINGIFY(IOCB_CMD_PREAD)
  [IOCB_CMD_PWRITE] = XLAT(IOCB_CMD_PWRITE),
+ #define XLAT_VAL_1 ((unsigned) (IOCB_CMD_PWRITE))
+ #define XLAT_STR_1 STRINGIFY(IOCB_CMD_PWRITE)
  [IOCB_CMD_FSYNC] = XLAT(IOCB_CMD_FSYNC),
+ #define XLAT_VAL_2 ((unsigned) (IOCB_CMD_FSYNC))
+ #define XLAT_STR_2 STRINGIFY(IOCB_CMD_FSYNC)
  [IOCB_CMD_FDSYNC] = XLAT(IOCB_CMD_FDSYNC),
+ #define XLAT_VAL_3 ((unsigned) (IOCB_CMD_FDSYNC))
+ #define XLAT_STR_3 STRINGIFY(IOCB_CMD_FDSYNC)
  [IOCB_CMD_PREADX] = XLAT(IOCB_CMD_PREADX),
+ #define XLAT_VAL_4 ((unsigned) (IOCB_CMD_PREADX))
+ #define XLAT_STR_4 STRINGIFY(IOCB_CMD_PREADX)
  [IOCB_CMD_POLL] = XLAT(IOCB_CMD_POLL),
+ #define XLAT_VAL_5 ((unsigned) (IOCB_CMD_POLL))
+ #define XLAT_STR_5 STRINGIFY(IOCB_CMD_POLL)
  [IOCB_CMD_NOOP] = XLAT(IOCB_CMD_NOOP),
+ #define XLAT_VAL_6 ((unsigned) (IOCB_CMD_NOOP))
+ #define XLAT_STR_6 STRINGIFY(IOCB_CMD_NOOP)
  [IOCB_CMD_PREADV] = XLAT(IOCB_CMD_PREADV),
+ #define XLAT_VAL_7 ((unsigned) (IOCB_CMD_PREADV))
+ #define XLAT_STR_7 STRINGIFY(IOCB_CMD_PREADV)
  [IOCB_CMD_PWRITEV] = XLAT(IOCB_CMD_PWRITEV),
- XLAT_END
+ #define XLAT_VAL_8 ((unsigned) (IOCB_CMD_PWRITEV))
+ #define XLAT_STR_8 STRINGIFY(IOCB_CMD_PWRITEV)
 };
+static
+const struct xlat aio_cmds[1] = { {
+ .data = aio_cmds_xdata,
+ .size = ARRAY_SIZE(aio_cmds_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/aio_iocb_flags.h b/xlat/aio_iocb_flags.h
new file mode 100644 (file)
index 0000000..f4f7960
--- /dev/null
@@ -0,0 +1,66 @@
+/* Generated by ./xlat/gen.sh from ./xlat/aio_iocb_flags.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(IOCB_FLAG_RESFD) || (defined(HAVE_DECL_IOCB_FLAG_RESFD) && HAVE_DECL_IOCB_FLAG_RESFD)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IOCB_FLAG_RESFD) == (1), "IOCB_FLAG_RESFD != 1");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IOCB_FLAG_RESFD 1
+#endif
+#if defined(IOCB_FLAG_IOPRIO) || (defined(HAVE_DECL_IOCB_FLAG_IOPRIO) && HAVE_DECL_IOCB_FLAG_IOPRIO)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IOCB_FLAG_IOPRIO) == (2), "IOCB_FLAG_IOPRIO != 2");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IOCB_FLAG_IOPRIO 2
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat aio_iocb_flags in mpers mode
+
+# else
+
+static const struct xlat_data aio_iocb_flags_xdata[] = {
+ XLAT(IOCB_FLAG_RESFD),
+ #define XLAT_VAL_0 ((unsigned) (IOCB_FLAG_RESFD))
+ #define XLAT_STR_0 STRINGIFY(IOCB_FLAG_RESFD)
+ XLAT(IOCB_FLAG_IOPRIO),
+ #define XLAT_VAL_1 ((unsigned) (IOCB_FLAG_IOPRIO))
+ #define XLAT_STR_1 STRINGIFY(IOCB_FLAG_IOPRIO)
+};
+static
+const struct xlat aio_iocb_flags[1] = { {
+ .data = aio_iocb_flags_xdata,
+ .size = ARRAY_SIZE(aio_iocb_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/aio_iocb_flags.in b/xlat/aio_iocb_flags.in
new file mode 100644 (file)
index 0000000..f6a5ab7
--- /dev/null
@@ -0,0 +1,2 @@
+IOCB_FLAG_RESFD                1
+IOCB_FLAG_IOPRIO       2
index 2e5264a8657e10369d13c3dd15fd2a3809177c39..7ffb255e84693b199cd6be195dc2963236e438c2 100644 (file)
@@ -75,20 +75,118 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat archvals[] = {
+static const struct xlat_data archvals_xdata[] = {
  XLAT(ARCH_SET_GS),
+ #define XLAT_VAL_0 ((unsigned) (ARCH_SET_GS))
+ #define XLAT_STR_0 STRINGIFY(ARCH_SET_GS)
  XLAT(ARCH_SET_FS),
+ #define XLAT_VAL_1 ((unsigned) (ARCH_SET_FS))
+ #define XLAT_STR_1 STRINGIFY(ARCH_SET_FS)
  XLAT(ARCH_GET_FS),
+ #define XLAT_VAL_2 ((unsigned) (ARCH_GET_FS))
+ #define XLAT_STR_2 STRINGIFY(ARCH_GET_FS)
  XLAT(ARCH_GET_GS),
+ #define XLAT_VAL_3 ((unsigned) (ARCH_GET_GS))
+ #define XLAT_STR_3 STRINGIFY(ARCH_GET_GS)
  XLAT(ARCH_GET_CPUID),
+ #define XLAT_VAL_4 ((unsigned) (ARCH_GET_CPUID))
+ #define XLAT_STR_4 STRINGIFY(ARCH_GET_CPUID)
  XLAT(ARCH_SET_CPUID),
+ #define XLAT_VAL_5 ((unsigned) (ARCH_SET_CPUID))
+ #define XLAT_STR_5 STRINGIFY(ARCH_SET_CPUID)
  XLAT(ARCH_MAP_VDSO_X32),
+ #define XLAT_VAL_6 ((unsigned) (ARCH_MAP_VDSO_X32))
+ #define XLAT_STR_6 STRINGIFY(ARCH_MAP_VDSO_X32)
  XLAT(ARCH_MAP_VDSO_32),
+ #define XLAT_VAL_7 ((unsigned) (ARCH_MAP_VDSO_32))
+ #define XLAT_STR_7 STRINGIFY(ARCH_MAP_VDSO_32)
  XLAT(ARCH_MAP_VDSO_64),
- XLAT_END
+ #define XLAT_VAL_8 ((unsigned) (ARCH_MAP_VDSO_64))
+ #define XLAT_STR_8 STRINGIFY(ARCH_MAP_VDSO_64)
 };
+static
+const struct xlat archvals[1] = { {
+ .data = archvals_xdata,
+ .size = ARRAY_SIZE(archvals_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 3da3fc5a05bae168fe8177b84459163387997e1e..0a6de924fa300b7c17042c00185032abbfa62645 100644 (file)
@@ -470,77 +470,744 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # ifndef IN_MPERS
 
-const struct xlat arp_hardware_types[] = {
-
+static const struct xlat_data arp_hardware_types_xdata[] = {
  XLAT(ARPHRD_NETROM),
+ #define XLAT_VAL_0 ((unsigned) (ARPHRD_NETROM))
+ #define XLAT_STR_0 STRINGIFY(ARPHRD_NETROM)
  XLAT(ARPHRD_ETHER),
+ #define XLAT_VAL_1 ((unsigned) (ARPHRD_ETHER))
+ #define XLAT_STR_1 STRINGIFY(ARPHRD_ETHER)
  XLAT(ARPHRD_EETHER),
+ #define XLAT_VAL_2 ((unsigned) (ARPHRD_EETHER))
+ #define XLAT_STR_2 STRINGIFY(ARPHRD_EETHER)
  XLAT(ARPHRD_AX25),
+ #define XLAT_VAL_3 ((unsigned) (ARPHRD_AX25))
+ #define XLAT_STR_3 STRINGIFY(ARPHRD_AX25)
  XLAT(ARPHRD_PRONET),
+ #define XLAT_VAL_4 ((unsigned) (ARPHRD_PRONET))
+ #define XLAT_STR_4 STRINGIFY(ARPHRD_PRONET)
  XLAT(ARPHRD_CHAOS),
+ #define XLAT_VAL_5 ((unsigned) (ARPHRD_CHAOS))
+ #define XLAT_STR_5 STRINGIFY(ARPHRD_CHAOS)
  XLAT(ARPHRD_IEEE802),
+ #define XLAT_VAL_6 ((unsigned) (ARPHRD_IEEE802))
+ #define XLAT_STR_6 STRINGIFY(ARPHRD_IEEE802)
  XLAT(ARPHRD_ARCNET),
+ #define XLAT_VAL_7 ((unsigned) (ARPHRD_ARCNET))
+ #define XLAT_STR_7 STRINGIFY(ARPHRD_ARCNET)
  XLAT(ARPHRD_APPLETLK),
+ #define XLAT_VAL_8 ((unsigned) (ARPHRD_APPLETLK))
+ #define XLAT_STR_8 STRINGIFY(ARPHRD_APPLETLK)
  XLAT(ARPHRD_DLCI),
+ #define XLAT_VAL_9 ((unsigned) (ARPHRD_DLCI))
+ #define XLAT_STR_9 STRINGIFY(ARPHRD_DLCI)
  XLAT(ARPHRD_ATM),
+ #define XLAT_VAL_10 ((unsigned) (ARPHRD_ATM))
+ #define XLAT_STR_10 STRINGIFY(ARPHRD_ATM)
  XLAT(ARPHRD_METRICOM),
+ #define XLAT_VAL_11 ((unsigned) (ARPHRD_METRICOM))
+ #define XLAT_STR_11 STRINGIFY(ARPHRD_METRICOM)
  XLAT(ARPHRD_IEEE1394),
+ #define XLAT_VAL_12 ((unsigned) (ARPHRD_IEEE1394))
+ #define XLAT_STR_12 STRINGIFY(ARPHRD_IEEE1394)
  XLAT(ARPHRD_EUI64),
+ #define XLAT_VAL_13 ((unsigned) (ARPHRD_EUI64))
+ #define XLAT_STR_13 STRINGIFY(ARPHRD_EUI64)
  XLAT(ARPHRD_INFINIBAND),
+ #define XLAT_VAL_14 ((unsigned) (ARPHRD_INFINIBAND))
+ #define XLAT_STR_14 STRINGIFY(ARPHRD_INFINIBAND)
  XLAT(ARPHRD_SLIP),
+ #define XLAT_VAL_15 ((unsigned) (ARPHRD_SLIP))
+ #define XLAT_STR_15 STRINGIFY(ARPHRD_SLIP)
  XLAT(ARPHRD_CSLIP),
+ #define XLAT_VAL_16 ((unsigned) (ARPHRD_CSLIP))
+ #define XLAT_STR_16 STRINGIFY(ARPHRD_CSLIP)
  XLAT(ARPHRD_SLIP6),
+ #define XLAT_VAL_17 ((unsigned) (ARPHRD_SLIP6))
+ #define XLAT_STR_17 STRINGIFY(ARPHRD_SLIP6)
  XLAT(ARPHRD_CSLIP6),
+ #define XLAT_VAL_18 ((unsigned) (ARPHRD_CSLIP6))
+ #define XLAT_STR_18 STRINGIFY(ARPHRD_CSLIP6)
  XLAT(ARPHRD_RSRVD),
+ #define XLAT_VAL_19 ((unsigned) (ARPHRD_RSRVD))
+ #define XLAT_STR_19 STRINGIFY(ARPHRD_RSRVD)
  XLAT(ARPHRD_ADAPT),
+ #define XLAT_VAL_20 ((unsigned) (ARPHRD_ADAPT))
+ #define XLAT_STR_20 STRINGIFY(ARPHRD_ADAPT)
  XLAT(ARPHRD_ROSE),
+ #define XLAT_VAL_21 ((unsigned) (ARPHRD_ROSE))
+ #define XLAT_STR_21 STRINGIFY(ARPHRD_ROSE)
  XLAT(ARPHRD_X25),
+ #define XLAT_VAL_22 ((unsigned) (ARPHRD_X25))
+ #define XLAT_STR_22 STRINGIFY(ARPHRD_X25)
  XLAT(ARPHRD_HWX25),
+ #define XLAT_VAL_23 ((unsigned) (ARPHRD_HWX25))
+ #define XLAT_STR_23 STRINGIFY(ARPHRD_HWX25)
  XLAT(ARPHRD_CAN),
+ #define XLAT_VAL_24 ((unsigned) (ARPHRD_CAN))
+ #define XLAT_STR_24 STRINGIFY(ARPHRD_CAN)
  XLAT(ARPHRD_PPP),
+ #define XLAT_VAL_25 ((unsigned) (ARPHRD_PPP))
+ #define XLAT_STR_25 STRINGIFY(ARPHRD_PPP)
  XLAT(ARPHRD_CISCO),
+ #define XLAT_VAL_26 ((unsigned) (ARPHRD_CISCO))
+ #define XLAT_STR_26 STRINGIFY(ARPHRD_CISCO)
  XLAT(ARPHRD_LAPB),
+ #define XLAT_VAL_27 ((unsigned) (ARPHRD_LAPB))
+ #define XLAT_STR_27 STRINGIFY(ARPHRD_LAPB)
  XLAT(ARPHRD_DDCMP),
+ #define XLAT_VAL_28 ((unsigned) (ARPHRD_DDCMP))
+ #define XLAT_STR_28 STRINGIFY(ARPHRD_DDCMP)
  XLAT(ARPHRD_RAWHDLC),
+ #define XLAT_VAL_29 ((unsigned) (ARPHRD_RAWHDLC))
+ #define XLAT_STR_29 STRINGIFY(ARPHRD_RAWHDLC)
  XLAT(ARPHRD_RAWIP),
+ #define XLAT_VAL_30 ((unsigned) (ARPHRD_RAWIP))
+ #define XLAT_STR_30 STRINGIFY(ARPHRD_RAWIP)
  XLAT(ARPHRD_TUNNEL),
+ #define XLAT_VAL_31 ((unsigned) (ARPHRD_TUNNEL))
+ #define XLAT_STR_31 STRINGIFY(ARPHRD_TUNNEL)
  XLAT(ARPHRD_TUNNEL6),
+ #define XLAT_VAL_32 ((unsigned) (ARPHRD_TUNNEL6))
+ #define XLAT_STR_32 STRINGIFY(ARPHRD_TUNNEL6)
  XLAT(ARPHRD_FRAD),
+ #define XLAT_VAL_33 ((unsigned) (ARPHRD_FRAD))
+ #define XLAT_STR_33 STRINGIFY(ARPHRD_FRAD)
  XLAT(ARPHRD_SKIP),
+ #define XLAT_VAL_34 ((unsigned) (ARPHRD_SKIP))
+ #define XLAT_STR_34 STRINGIFY(ARPHRD_SKIP)
  XLAT(ARPHRD_LOOPBACK),
+ #define XLAT_VAL_35 ((unsigned) (ARPHRD_LOOPBACK))
+ #define XLAT_STR_35 STRINGIFY(ARPHRD_LOOPBACK)
  XLAT(ARPHRD_LOCALTLK),
+ #define XLAT_VAL_36 ((unsigned) (ARPHRD_LOCALTLK))
+ #define XLAT_STR_36 STRINGIFY(ARPHRD_LOCALTLK)
  XLAT(ARPHRD_FDDI),
+ #define XLAT_VAL_37 ((unsigned) (ARPHRD_FDDI))
+ #define XLAT_STR_37 STRINGIFY(ARPHRD_FDDI)
  XLAT(ARPHRD_BIF),
+ #define XLAT_VAL_38 ((unsigned) (ARPHRD_BIF))
+ #define XLAT_STR_38 STRINGIFY(ARPHRD_BIF)
  XLAT(ARPHRD_SIT),
+ #define XLAT_VAL_39 ((unsigned) (ARPHRD_SIT))
+ #define XLAT_STR_39 STRINGIFY(ARPHRD_SIT)
  XLAT(ARPHRD_IPDDP),
+ #define XLAT_VAL_40 ((unsigned) (ARPHRD_IPDDP))
+ #define XLAT_STR_40 STRINGIFY(ARPHRD_IPDDP)
  XLAT(ARPHRD_IPGRE),
+ #define XLAT_VAL_41 ((unsigned) (ARPHRD_IPGRE))
+ #define XLAT_STR_41 STRINGIFY(ARPHRD_IPGRE)
  XLAT(ARPHRD_PIMREG),
+ #define XLAT_VAL_42 ((unsigned) (ARPHRD_PIMREG))
+ #define XLAT_STR_42 STRINGIFY(ARPHRD_PIMREG)
  XLAT(ARPHRD_HIPPI),
+ #define XLAT_VAL_43 ((unsigned) (ARPHRD_HIPPI))
+ #define XLAT_STR_43 STRINGIFY(ARPHRD_HIPPI)
  XLAT(ARPHRD_ASH),
+ #define XLAT_VAL_44 ((unsigned) (ARPHRD_ASH))
+ #define XLAT_STR_44 STRINGIFY(ARPHRD_ASH)
  XLAT(ARPHRD_ECONET),
+ #define XLAT_VAL_45 ((unsigned) (ARPHRD_ECONET))
+ #define XLAT_STR_45 STRINGIFY(ARPHRD_ECONET)
  XLAT(ARPHRD_IRDA),
+ #define XLAT_VAL_46 ((unsigned) (ARPHRD_IRDA))
+ #define XLAT_STR_46 STRINGIFY(ARPHRD_IRDA)
  XLAT(ARPHRD_FCPP),
+ #define XLAT_VAL_47 ((unsigned) (ARPHRD_FCPP))
+ #define XLAT_STR_47 STRINGIFY(ARPHRD_FCPP)
  XLAT(ARPHRD_FCAL),
+ #define XLAT_VAL_48 ((unsigned) (ARPHRD_FCAL))
+ #define XLAT_STR_48 STRINGIFY(ARPHRD_FCAL)
  XLAT(ARPHRD_FCPL),
+ #define XLAT_VAL_49 ((unsigned) (ARPHRD_FCPL))
+ #define XLAT_STR_49 STRINGIFY(ARPHRD_FCPL)
  XLAT(ARPHRD_FCFABRIC),
+ #define XLAT_VAL_50 ((unsigned) (ARPHRD_FCFABRIC))
+ #define XLAT_STR_50 STRINGIFY(ARPHRD_FCFABRIC)
  XLAT(ARPHRD_IEEE802_TR),
+ #define XLAT_VAL_51 ((unsigned) (ARPHRD_IEEE802_TR))
+ #define XLAT_STR_51 STRINGIFY(ARPHRD_IEEE802_TR)
  XLAT(ARPHRD_IEEE80211),
+ #define XLAT_VAL_52 ((unsigned) (ARPHRD_IEEE80211))
+ #define XLAT_STR_52 STRINGIFY(ARPHRD_IEEE80211)
  XLAT(ARPHRD_IEEE80211_PRISM),
+ #define XLAT_VAL_53 ((unsigned) (ARPHRD_IEEE80211_PRISM))
+ #define XLAT_STR_53 STRINGIFY(ARPHRD_IEEE80211_PRISM)
  XLAT(ARPHRD_IEEE80211_RADIOTAP),
+ #define XLAT_VAL_54 ((unsigned) (ARPHRD_IEEE80211_RADIOTAP))
+ #define XLAT_STR_54 STRINGIFY(ARPHRD_IEEE80211_RADIOTAP)
  XLAT(ARPHRD_IEEE802154),
+ #define XLAT_VAL_55 ((unsigned) (ARPHRD_IEEE802154))
+ #define XLAT_STR_55 STRINGIFY(ARPHRD_IEEE802154)
  XLAT(ARPHRD_IEEE802154_MONITOR),
+ #define XLAT_VAL_56 ((unsigned) (ARPHRD_IEEE802154_MONITOR))
+ #define XLAT_STR_56 STRINGIFY(ARPHRD_IEEE802154_MONITOR)
  XLAT(ARPHRD_PHONET),
+ #define XLAT_VAL_57 ((unsigned) (ARPHRD_PHONET))
+ #define XLAT_STR_57 STRINGIFY(ARPHRD_PHONET)
  XLAT(ARPHRD_PHONET_PIPE),
+ #define XLAT_VAL_58 ((unsigned) (ARPHRD_PHONET_PIPE))
+ #define XLAT_STR_58 STRINGIFY(ARPHRD_PHONET_PIPE)
  XLAT(ARPHRD_CAIF),
+ #define XLAT_VAL_59 ((unsigned) (ARPHRD_CAIF))
+ #define XLAT_STR_59 STRINGIFY(ARPHRD_CAIF)
  XLAT(ARPHRD_IP6GRE),
+ #define XLAT_VAL_60 ((unsigned) (ARPHRD_IP6GRE))
+ #define XLAT_STR_60 STRINGIFY(ARPHRD_IP6GRE)
  XLAT(ARPHRD_NETLINK),
+ #define XLAT_VAL_61 ((unsigned) (ARPHRD_NETLINK))
+ #define XLAT_STR_61 STRINGIFY(ARPHRD_NETLINK)
  XLAT(ARPHRD_6LOWPAN),
+ #define XLAT_VAL_62 ((unsigned) (ARPHRD_6LOWPAN))
+ #define XLAT_STR_62 STRINGIFY(ARPHRD_6LOWPAN)
  XLAT(ARPHRD_VSOCKMON),
+ #define XLAT_VAL_63 ((unsigned) (ARPHRD_VSOCKMON))
+ #define XLAT_STR_63 STRINGIFY(ARPHRD_VSOCKMON)
  XLAT(ARPHRD_NONE),
+ #define XLAT_VAL_64 ((unsigned) (ARPHRD_NONE))
+ #define XLAT_STR_64 STRINGIFY(ARPHRD_NONE)
  XLAT(ARPHRD_VOID),
- XLAT_END
+ #define XLAT_VAL_65 ((unsigned) (ARPHRD_VOID))
+ #define XLAT_STR_65 STRINGIFY(ARPHRD_VOID)
 };
+const struct xlat arp_hardware_types[1] = { {
+ .data = arp_hardware_types_xdata,
+ .size = ARRAY_SIZE(arp_hardware_types_xdata),
+ .type = XT_SORTED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+#  ifdef XLAT_VAL_30
+  | XLAT_VAL_30
+#  endif
+#  ifdef XLAT_VAL_31
+  | XLAT_VAL_31
+#  endif
+#  ifdef XLAT_VAL_32
+  | XLAT_VAL_32
+#  endif
+#  ifdef XLAT_VAL_33
+  | XLAT_VAL_33
+#  endif
+#  ifdef XLAT_VAL_34
+  | XLAT_VAL_34
+#  endif
+#  ifdef XLAT_VAL_35
+  | XLAT_VAL_35
+#  endif
+#  ifdef XLAT_VAL_36
+  | XLAT_VAL_36
+#  endif
+#  ifdef XLAT_VAL_37
+  | XLAT_VAL_37
+#  endif
+#  ifdef XLAT_VAL_38
+  | XLAT_VAL_38
+#  endif
+#  ifdef XLAT_VAL_39
+  | XLAT_VAL_39
+#  endif
+#  ifdef XLAT_VAL_40
+  | XLAT_VAL_40
+#  endif
+#  ifdef XLAT_VAL_41
+  | XLAT_VAL_41
+#  endif
+#  ifdef XLAT_VAL_42
+  | XLAT_VAL_42
+#  endif
+#  ifdef XLAT_VAL_43
+  | XLAT_VAL_43
+#  endif
+#  ifdef XLAT_VAL_44
+  | XLAT_VAL_44
+#  endif
+#  ifdef XLAT_VAL_45
+  | XLAT_VAL_45
+#  endif
+#  ifdef XLAT_VAL_46
+  | XLAT_VAL_46
+#  endif
+#  ifdef XLAT_VAL_47
+  | XLAT_VAL_47
+#  endif
+#  ifdef XLAT_VAL_48
+  | XLAT_VAL_48
+#  endif
+#  ifdef XLAT_VAL_49
+  | XLAT_VAL_49
+#  endif
+#  ifdef XLAT_VAL_50
+  | XLAT_VAL_50
+#  endif
+#  ifdef XLAT_VAL_51
+  | XLAT_VAL_51
+#  endif
+#  ifdef XLAT_VAL_52
+  | XLAT_VAL_52
+#  endif
+#  ifdef XLAT_VAL_53
+  | XLAT_VAL_53
+#  endif
+#  ifdef XLAT_VAL_54
+  | XLAT_VAL_54
+#  endif
+#  ifdef XLAT_VAL_55
+  | XLAT_VAL_55
+#  endif
+#  ifdef XLAT_VAL_56
+  | XLAT_VAL_56
+#  endif
+#  ifdef XLAT_VAL_57
+  | XLAT_VAL_57
+#  endif
+#  ifdef XLAT_VAL_58
+  | XLAT_VAL_58
+#  endif
+#  ifdef XLAT_VAL_59
+  | XLAT_VAL_59
+#  endif
+#  ifdef XLAT_VAL_60
+  | XLAT_VAL_60
+#  endif
+#  ifdef XLAT_VAL_61
+  | XLAT_VAL_61
+#  endif
+#  ifdef XLAT_VAL_62
+  | XLAT_VAL_62
+#  endif
+#  ifdef XLAT_VAL_63
+  | XLAT_VAL_63
+#  endif
+#  ifdef XLAT_VAL_64
+  | XLAT_VAL_64
+#  endif
+#  ifdef XLAT_VAL_65
+  | XLAT_VAL_65
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+#  ifdef XLAT_STR_30
+  + sizeof(XLAT_STR_30)
+#  endif
+#  ifdef XLAT_STR_31
+  + sizeof(XLAT_STR_31)
+#  endif
+#  ifdef XLAT_STR_32
+  + sizeof(XLAT_STR_32)
+#  endif
+#  ifdef XLAT_STR_33
+  + sizeof(XLAT_STR_33)
+#  endif
+#  ifdef XLAT_STR_34
+  + sizeof(XLAT_STR_34)
+#  endif
+#  ifdef XLAT_STR_35
+  + sizeof(XLAT_STR_35)
+#  endif
+#  ifdef XLAT_STR_36
+  + sizeof(XLAT_STR_36)
+#  endif
+#  ifdef XLAT_STR_37
+  + sizeof(XLAT_STR_37)
+#  endif
+#  ifdef XLAT_STR_38
+  + sizeof(XLAT_STR_38)
+#  endif
+#  ifdef XLAT_STR_39
+  + sizeof(XLAT_STR_39)
+#  endif
+#  ifdef XLAT_STR_40
+  + sizeof(XLAT_STR_40)
+#  endif
+#  ifdef XLAT_STR_41
+  + sizeof(XLAT_STR_41)
+#  endif
+#  ifdef XLAT_STR_42
+  + sizeof(XLAT_STR_42)
+#  endif
+#  ifdef XLAT_STR_43
+  + sizeof(XLAT_STR_43)
+#  endif
+#  ifdef XLAT_STR_44
+  + sizeof(XLAT_STR_44)
+#  endif
+#  ifdef XLAT_STR_45
+  + sizeof(XLAT_STR_45)
+#  endif
+#  ifdef XLAT_STR_46
+  + sizeof(XLAT_STR_46)
+#  endif
+#  ifdef XLAT_STR_47
+  + sizeof(XLAT_STR_47)
+#  endif
+#  ifdef XLAT_STR_48
+  + sizeof(XLAT_STR_48)
+#  endif
+#  ifdef XLAT_STR_49
+  + sizeof(XLAT_STR_49)
+#  endif
+#  ifdef XLAT_STR_50
+  + sizeof(XLAT_STR_50)
+#  endif
+#  ifdef XLAT_STR_51
+  + sizeof(XLAT_STR_51)
+#  endif
+#  ifdef XLAT_STR_52
+  + sizeof(XLAT_STR_52)
+#  endif
+#  ifdef XLAT_STR_53
+  + sizeof(XLAT_STR_53)
+#  endif
+#  ifdef XLAT_STR_54
+  + sizeof(XLAT_STR_54)
+#  endif
+#  ifdef XLAT_STR_55
+  + sizeof(XLAT_STR_55)
+#  endif
+#  ifdef XLAT_STR_56
+  + sizeof(XLAT_STR_56)
+#  endif
+#  ifdef XLAT_STR_57
+  + sizeof(XLAT_STR_57)
+#  endif
+#  ifdef XLAT_STR_58
+  + sizeof(XLAT_STR_58)
+#  endif
+#  ifdef XLAT_STR_59
+  + sizeof(XLAT_STR_59)
+#  endif
+#  ifdef XLAT_STR_60
+  + sizeof(XLAT_STR_60)
+#  endif
+#  ifdef XLAT_STR_61
+  + sizeof(XLAT_STR_61)
+#  endif
+#  ifdef XLAT_STR_62
+  + sizeof(XLAT_STR_62)
+#  endif
+#  ifdef XLAT_STR_63
+  + sizeof(XLAT_STR_63)
+#  endif
+#  ifdef XLAT_STR_64
+  + sizeof(XLAT_STR_64)
+#  endif
+#  ifdef XLAT_STR_65
+  + sizeof(XLAT_STR_65)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
+#  undef XLAT_STR_30
+#  undef XLAT_VAL_30
+#  undef XLAT_STR_31
+#  undef XLAT_VAL_31
+#  undef XLAT_STR_32
+#  undef XLAT_VAL_32
+#  undef XLAT_STR_33
+#  undef XLAT_VAL_33
+#  undef XLAT_STR_34
+#  undef XLAT_VAL_34
+#  undef XLAT_STR_35
+#  undef XLAT_VAL_35
+#  undef XLAT_STR_36
+#  undef XLAT_VAL_36
+#  undef XLAT_STR_37
+#  undef XLAT_VAL_37
+#  undef XLAT_STR_38
+#  undef XLAT_VAL_38
+#  undef XLAT_STR_39
+#  undef XLAT_VAL_39
+#  undef XLAT_STR_40
+#  undef XLAT_VAL_40
+#  undef XLAT_STR_41
+#  undef XLAT_VAL_41
+#  undef XLAT_STR_42
+#  undef XLAT_VAL_42
+#  undef XLAT_STR_43
+#  undef XLAT_VAL_43
+#  undef XLAT_STR_44
+#  undef XLAT_VAL_44
+#  undef XLAT_STR_45
+#  undef XLAT_VAL_45
+#  undef XLAT_STR_46
+#  undef XLAT_VAL_46
+#  undef XLAT_STR_47
+#  undef XLAT_VAL_47
+#  undef XLAT_STR_48
+#  undef XLAT_VAL_48
+#  undef XLAT_STR_49
+#  undef XLAT_VAL_49
+#  undef XLAT_STR_50
+#  undef XLAT_VAL_50
+#  undef XLAT_STR_51
+#  undef XLAT_VAL_51
+#  undef XLAT_STR_52
+#  undef XLAT_VAL_52
+#  undef XLAT_STR_53
+#  undef XLAT_VAL_53
+#  undef XLAT_STR_54
+#  undef XLAT_VAL_54
+#  undef XLAT_STR_55
+#  undef XLAT_VAL_55
+#  undef XLAT_STR_56
+#  undef XLAT_VAL_56
+#  undef XLAT_STR_57
+#  undef XLAT_VAL_57
+#  undef XLAT_STR_58
+#  undef XLAT_VAL_58
+#  undef XLAT_STR_59
+#  undef XLAT_VAL_59
+#  undef XLAT_STR_60
+#  undef XLAT_VAL_60
+#  undef XLAT_STR_61
+#  undef XLAT_VAL_61
+#  undef XLAT_STR_62
+#  undef XLAT_VAL_62
+#  undef XLAT_STR_63
+#  undef XLAT_VAL_63
+#  undef XLAT_STR_64
+#  undef XLAT_VAL_64
+#  undef XLAT_STR_65
+#  undef XLAT_VAL_65
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 3d81314a4600536ad7b860f3a3b96b45ba54af70..9b57da34419a86236ff126a6f6bba8815a9ec5b9 100644 (file)
@@ -1,4 +1,4 @@
-/* sort -k2,2g */
+#sorted sort -k2,2g
 ARPHRD_NETROM                  0
 ARPHRD_ETHER                   1
 ARPHRD_EETHER                  2
index bb16a8ef8b8eb8405da6ee5e42758b2d332a1f9e..9cc26fd06146abc7aa8943288f13acb0002bb0d5 100644 (file)
@@ -38,20 +38,96 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define AT_EMPTY_PATH 0x1000
 #endif
+#if defined(AT_RECURSIVE) || (defined(HAVE_DECL_AT_RECURSIVE) && HAVE_DECL_AT_RECURSIVE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AT_RECURSIVE) == (0x8000), "AT_RECURSIVE != 0x8000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AT_RECURSIVE 0x8000
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
 # ifndef IN_MPERS
 
-const struct xlat at_flags[] = {
+static const struct xlat_data at_flags_xdata[] = {
  XLAT(AT_SYMLINK_NOFOLLOW),
+ #define XLAT_VAL_0 ((unsigned) (AT_SYMLINK_NOFOLLOW))
+ #define XLAT_STR_0 STRINGIFY(AT_SYMLINK_NOFOLLOW)
  XLAT(AT_REMOVEDIR),
+ #define XLAT_VAL_1 ((unsigned) (AT_REMOVEDIR))
+ #define XLAT_STR_1 STRINGIFY(AT_REMOVEDIR)
  XLAT(AT_SYMLINK_FOLLOW),
+ #define XLAT_VAL_2 ((unsigned) (AT_SYMLINK_FOLLOW))
+ #define XLAT_STR_2 STRINGIFY(AT_SYMLINK_FOLLOW)
  XLAT(AT_NO_AUTOMOUNT),
+ #define XLAT_VAL_3 ((unsigned) (AT_NO_AUTOMOUNT))
+ #define XLAT_STR_3 STRINGIFY(AT_NO_AUTOMOUNT)
  XLAT(AT_EMPTY_PATH),
- XLAT_END
+ #define XLAT_VAL_4 ((unsigned) (AT_EMPTY_PATH))
+ #define XLAT_STR_4 STRINGIFY(AT_EMPTY_PATH)
+ XLAT(AT_RECURSIVE),
+ #define XLAT_VAL_5 ((unsigned) (AT_RECURSIVE))
+ #define XLAT_STR_5 STRINGIFY(AT_RECURSIVE)
 };
+const struct xlat at_flags[1] = { {
+ .data = at_flags_xdata,
+ .size = ARRAY_SIZE(at_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 77a8de9bd9a4b9932e4ee0bd5d755494b4f81dfb..6fe238921e12f512336613aad703d84dff3982a6 100644 (file)
@@ -3,3 +3,4 @@ AT_REMOVEDIR            0x200
 AT_SYMLINK_FOLLOW      0x400
 AT_NO_AUTOMOUNT                0x800
 AT_EMPTY_PATH          0x1000
+AT_RECURSIVE           0x8000
index 2850d53e8e6756edd576c0bd796b7c5486155412..ff1cb350baaf4fdc165add4b768702e7a676914b 100644 (file)
@@ -40,16 +40,64 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat at_statx_sync_types[] = {
+static const struct xlat_data at_statx_sync_types_xdata[] = {
  XLAT(AT_STATX_SYNC_AS_STAT),
+ #define XLAT_VAL_0 ((unsigned) (AT_STATX_SYNC_AS_STAT))
+ #define XLAT_STR_0 STRINGIFY(AT_STATX_SYNC_AS_STAT)
  XLAT(AT_STATX_FORCE_SYNC),
+ #define XLAT_VAL_1 ((unsigned) (AT_STATX_FORCE_SYNC))
+ #define XLAT_STR_1 STRINGIFY(AT_STATX_FORCE_SYNC)
  XLAT(AT_STATX_DONT_SYNC),
+ #define XLAT_VAL_2 ((unsigned) (AT_STATX_DONT_SYNC))
+ #define XLAT_STR_2 STRINGIFY(AT_STATX_DONT_SYNC)
 
  XLAT(AT_STATX_SYNC_TYPE),
- XLAT_END
+ #define XLAT_VAL_3 ((unsigned) (AT_STATX_SYNC_TYPE))
+ #define XLAT_STR_3 STRINGIFY(AT_STATX_SYNC_TYPE)
 };
+static
+const struct xlat at_statx_sync_types[1] = { {
+ .data = at_statx_sync_types_xdata,
+ .size = ARRAY_SIZE(at_statx_sync_types_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 17e0323dfd267f44edbd998831bed53d76a85eea..71be16ddb0dca8f1d7e727783ddc356b257ef26c 100644 (file)
@@ -12,8 +12,7 @@
 
 # else
 
-static
-const struct xlat atomic_ops[] = {
+static const struct xlat_data atomic_ops_xdata[] = {
 { OR1K_ATOMIC_SWAP,            "SWAP"          },
 { OR1K_ATOMIC_CMPXCHG,         "CMPXCHG"       },
 { OR1K_ATOMIC_XCHG,            "XCHG"          },
@@ -23,8 +22,17 @@ const struct xlat atomic_ops[] = {
 { OR1K_ATOMIC_OR,              "OR"            },
 { OR1K_ATOMIC_UMAX,            "UMAX"          },
 { OR1K_ATOMIC_UMIN,            "UMIN"          },
- XLAT_END
 };
+static
+const struct xlat atomic_ops[1] = { {
+ .data = atomic_ops_xdata,
+ .size = ARRAY_SIZE(atomic_ops_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+  ,
+ .flags_strsz = 0
+  ,
+} };
 
 # endif /* !IN_MPERS */
 
index fbeb0f54eba7ae7d9c66d20bc879d011f8742db2..b823bb1c6fdec3b90e0c6a46a42838a11dd1bb07 100644 (file)
 #include "gcc_compat.h"
 #include "static_assert.h"
 
-#ifdef EM_ARM
+#ifndef __AUDIT_ARCH_CONVENTION_MIPS64_N32
+# define __AUDIT_ARCH_CONVENTION_MIPS64_N32    0x20000000
 #endif
-#ifdef EM_FRV
+#ifndef __AUDIT_ARCH_64BIT
+# define __AUDIT_ARCH_64BIT    0x80000000
 #endif
-#ifdef EM_MICROBLAZE
+#ifndef __AUDIT_ARCH_LE
+# define __AUDIT_ARCH_LE       0x40000000
 #endif
-#ifdef EM_OPENRISC
-#endif
-
-#ifndef XLAT_MACROS_ONLY
-
-# ifndef IN_MPERS
-
-const struct xlat audit_arch[] = {
-
 #if defined(AUDIT_ARCH_AARCH64) || (defined(HAVE_DECL_AUDIT_ARCH_AARCH64) && HAVE_DECL_AUDIT_ARCH_AARCH64)
-  XLAT(AUDIT_ARCH_AARCH64),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_AARCH64) == ((EM_AARCH64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)), "AUDIT_ARCH_AARCH64 != (EM_AARCH64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_AARCH64 (EM_AARCH64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
 #endif
 #if defined(AUDIT_ARCH_ALPHA) || (defined(HAVE_DECL_AUDIT_ARCH_ALPHA) && HAVE_DECL_AUDIT_ARCH_ALPHA)
-  XLAT(AUDIT_ARCH_ALPHA),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_ALPHA) == ((EM_ALPHA|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)), "AUDIT_ARCH_ALPHA != (EM_ALPHA|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_ALPHA (EM_ALPHA|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
+#endif
+#if defined(AUDIT_ARCH_ARCOMPACT) || (defined(HAVE_DECL_AUDIT_ARCH_ARCOMPACT) && HAVE_DECL_AUDIT_ARCH_ARCOMPACT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_ARCOMPACT) == ((EM_ARCOMPACT|__AUDIT_ARCH_LE)), "AUDIT_ARCH_ARCOMPACT != (EM_ARCOMPACT|__AUDIT_ARCH_LE)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_ARCOMPACT (EM_ARCOMPACT|__AUDIT_ARCH_LE)
+#endif
+#if defined(AUDIT_ARCH_ARCOMPACTBE) || (defined(HAVE_DECL_AUDIT_ARCH_ARCOMPACTBE) && HAVE_DECL_AUDIT_ARCH_ARCOMPACTBE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_ARCOMPACTBE) == ((EM_ARCOMPACT)), "AUDIT_ARCH_ARCOMPACTBE != (EM_ARCOMPACT)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_ARCOMPACTBE (EM_ARCOMPACT)
+#endif
+#if defined(AUDIT_ARCH_ARCV2) || (defined(HAVE_DECL_AUDIT_ARCH_ARCV2) && HAVE_DECL_AUDIT_ARCH_ARCV2)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_ARCV2) == ((EM_ARCV2|__AUDIT_ARCH_LE)), "AUDIT_ARCH_ARCV2 != (EM_ARCV2|__AUDIT_ARCH_LE)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_ARCV2 (EM_ARCV2|__AUDIT_ARCH_LE)
+#endif
+#if defined(AUDIT_ARCH_ARCV2BE) || (defined(HAVE_DECL_AUDIT_ARCH_ARCV2BE) && HAVE_DECL_AUDIT_ARCH_ARCV2BE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_ARCV2BE) == ((EM_ARCV2)), "AUDIT_ARCH_ARCV2BE != (EM_ARCV2)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_ARCV2BE (EM_ARCV2)
 #endif
-#ifdef EM_ARM
 #if defined(AUDIT_ARCH_ARM) || (defined(HAVE_DECL_AUDIT_ARCH_ARM) && HAVE_DECL_AUDIT_ARCH_ARM)
-  XLAT(AUDIT_ARCH_ARM),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_ARM) == ((EM_ARM|__AUDIT_ARCH_LE)), "AUDIT_ARCH_ARM != (EM_ARM|__AUDIT_ARCH_LE)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_ARM (EM_ARM|__AUDIT_ARCH_LE)
 #endif
 #if defined(AUDIT_ARCH_ARMEB) || (defined(HAVE_DECL_AUDIT_ARCH_ARMEB) && HAVE_DECL_AUDIT_ARCH_ARMEB)
-  XLAT(AUDIT_ARCH_ARMEB),
-#endif
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_ARMEB) == ((EM_ARM)), "AUDIT_ARCH_ARMEB != (EM_ARM)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_ARMEB (EM_ARM)
+#endif
+#if defined(AUDIT_ARCH_C6X) || (defined(HAVE_DECL_AUDIT_ARCH_C6X) && HAVE_DECL_AUDIT_ARCH_C6X)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_C6X) == ((EM_TI_C6000|__AUDIT_ARCH_LE)), "AUDIT_ARCH_C6X != (EM_TI_C6000|__AUDIT_ARCH_LE)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_C6X (EM_TI_C6000|__AUDIT_ARCH_LE)
+#endif
+#if defined(AUDIT_ARCH_C6XBE) || (defined(HAVE_DECL_AUDIT_ARCH_C6XBE) && HAVE_DECL_AUDIT_ARCH_C6XBE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_C6XBE) == ((EM_TI_C6000)), "AUDIT_ARCH_C6XBE != (EM_TI_C6000)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_C6XBE (EM_TI_C6000)
 #endif
 #if defined(AUDIT_ARCH_CRIS) || (defined(HAVE_DECL_AUDIT_ARCH_CRIS) && HAVE_DECL_AUDIT_ARCH_CRIS)
-  XLAT(AUDIT_ARCH_CRIS),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_CRIS) == ((EM_CRIS|__AUDIT_ARCH_LE)), "AUDIT_ARCH_CRIS != (EM_CRIS|__AUDIT_ARCH_LE)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_CRIS (EM_CRIS|__AUDIT_ARCH_LE)
+#endif
+#if defined(AUDIT_ARCH_CSKY) || (defined(HAVE_DECL_AUDIT_ARCH_CSKY) && HAVE_DECL_AUDIT_ARCH_CSKY)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_CSKY) == ((EM_CSKY|__AUDIT_ARCH_LE)), "AUDIT_ARCH_CSKY != (EM_CSKY|__AUDIT_ARCH_LE)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_CSKY (EM_CSKY|__AUDIT_ARCH_LE)
 #endif
-#ifdef EM_FRV
 #if defined(AUDIT_ARCH_FRV) || (defined(HAVE_DECL_AUDIT_ARCH_FRV) && HAVE_DECL_AUDIT_ARCH_FRV)
-  XLAT(AUDIT_ARCH_FRV),
-#endif
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_FRV) == ((EM_FRV)), "AUDIT_ARCH_FRV != (EM_FRV)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_FRV (EM_FRV)
+#endif
+#if defined(AUDIT_ARCH_H8300) || (defined(HAVE_DECL_AUDIT_ARCH_H8300) && HAVE_DECL_AUDIT_ARCH_H8300)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_H8300) == ((EM_H8_300)), "AUDIT_ARCH_H8300 != (EM_H8_300)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_H8300 (EM_H8_300)
+#endif
+#if defined(AUDIT_ARCH_HEXAGON) || (defined(HAVE_DECL_AUDIT_ARCH_HEXAGON) && HAVE_DECL_AUDIT_ARCH_HEXAGON)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_HEXAGON) == ((EM_HEXAGON)), "AUDIT_ARCH_HEXAGON != (EM_HEXAGON)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_HEXAGON (EM_HEXAGON)
 #endif
 #if defined(AUDIT_ARCH_I386) || (defined(HAVE_DECL_AUDIT_ARCH_I386) && HAVE_DECL_AUDIT_ARCH_I386)
-  XLAT(AUDIT_ARCH_I386),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_I386) == ((EM_386|__AUDIT_ARCH_LE)), "AUDIT_ARCH_I386 != (EM_386|__AUDIT_ARCH_LE)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_I386 (EM_386|__AUDIT_ARCH_LE)
 #endif
 #if defined(AUDIT_ARCH_IA64) || (defined(HAVE_DECL_AUDIT_ARCH_IA64) && HAVE_DECL_AUDIT_ARCH_IA64)
-  XLAT(AUDIT_ARCH_IA64),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_IA64) == ((EM_IA_64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)), "AUDIT_ARCH_IA64 != (EM_IA_64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_IA64 (EM_IA_64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
 #endif
 #if defined(AUDIT_ARCH_M32R) || (defined(HAVE_DECL_AUDIT_ARCH_M32R) && HAVE_DECL_AUDIT_ARCH_M32R)
-  XLAT(AUDIT_ARCH_M32R),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_M32R) == ((EM_M32R)), "AUDIT_ARCH_M32R != (EM_M32R)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_M32R (EM_M32R)
 #endif
 #if defined(AUDIT_ARCH_M68K) || (defined(HAVE_DECL_AUDIT_ARCH_M68K) && HAVE_DECL_AUDIT_ARCH_M68K)
-  XLAT(AUDIT_ARCH_M68K),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_M68K) == ((EM_68K)), "AUDIT_ARCH_M68K != (EM_68K)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_M68K (EM_68K)
 #endif
-#ifdef EM_MICROBLAZE
 #if defined(AUDIT_ARCH_MICROBLAZE) || (defined(HAVE_DECL_AUDIT_ARCH_MICROBLAZE) && HAVE_DECL_AUDIT_ARCH_MICROBLAZE)
-  XLAT(AUDIT_ARCH_MICROBLAZE),
-#endif
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_MICROBLAZE) == ((EM_MICROBLAZE)), "AUDIT_ARCH_MICROBLAZE != (EM_MICROBLAZE)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_MICROBLAZE (EM_MICROBLAZE)
 #endif
 #if defined(AUDIT_ARCH_MIPS) || (defined(HAVE_DECL_AUDIT_ARCH_MIPS) && HAVE_DECL_AUDIT_ARCH_MIPS)
-  XLAT(AUDIT_ARCH_MIPS),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_MIPS) == ((EM_MIPS)), "AUDIT_ARCH_MIPS != (EM_MIPS)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_MIPS (EM_MIPS)
 #endif
 #if defined(AUDIT_ARCH_MIPS64) || (defined(HAVE_DECL_AUDIT_ARCH_MIPS64) && HAVE_DECL_AUDIT_ARCH_MIPS64)
-  XLAT(AUDIT_ARCH_MIPS64),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_MIPS64) == ((EM_MIPS|__AUDIT_ARCH_64BIT)), "AUDIT_ARCH_MIPS64 != (EM_MIPS|__AUDIT_ARCH_64BIT)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_MIPS64 (EM_MIPS|__AUDIT_ARCH_64BIT)
 #endif
 #if defined(AUDIT_ARCH_MIPS64N32) || (defined(HAVE_DECL_AUDIT_ARCH_MIPS64N32) && HAVE_DECL_AUDIT_ARCH_MIPS64N32)
-  XLAT(AUDIT_ARCH_MIPS64N32),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_MIPS64N32) == ((EM_MIPS|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_CONVENTION_MIPS64_N32)), "AUDIT_ARCH_MIPS64N32 != (EM_MIPS|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_CONVENTION_MIPS64_N32)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_MIPS64N32 (EM_MIPS|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_CONVENTION_MIPS64_N32)
 #endif
 #if defined(AUDIT_ARCH_MIPSEL) || (defined(HAVE_DECL_AUDIT_ARCH_MIPSEL) && HAVE_DECL_AUDIT_ARCH_MIPSEL)
-  XLAT(AUDIT_ARCH_MIPSEL),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_MIPSEL) == ((EM_MIPS|__AUDIT_ARCH_LE)), "AUDIT_ARCH_MIPSEL != (EM_MIPS|__AUDIT_ARCH_LE)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_MIPSEL (EM_MIPS|__AUDIT_ARCH_LE)
 #endif
 #if defined(AUDIT_ARCH_MIPSEL64) || (defined(HAVE_DECL_AUDIT_ARCH_MIPSEL64) && HAVE_DECL_AUDIT_ARCH_MIPSEL64)
-  XLAT(AUDIT_ARCH_MIPSEL64),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_MIPSEL64) == ((EM_MIPS|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)), "AUDIT_ARCH_MIPSEL64 != (EM_MIPS|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_MIPSEL64 (EM_MIPS|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
 #endif
 #if defined(AUDIT_ARCH_MIPSEL64N32) || (defined(HAVE_DECL_AUDIT_ARCH_MIPSEL64N32) && HAVE_DECL_AUDIT_ARCH_MIPSEL64N32)
-  XLAT(AUDIT_ARCH_MIPSEL64N32),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_MIPSEL64N32) == ((EM_MIPS|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE|__AUDIT_ARCH_CONVENTION_MIPS64_N32)), "AUDIT_ARCH_MIPSEL64N32 != (EM_MIPS|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE|__AUDIT_ARCH_CONVENTION_MIPS64_N32)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_MIPSEL64N32 (EM_MIPS|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE|__AUDIT_ARCH_CONVENTION_MIPS64_N32)
+#endif
+#if defined(AUDIT_ARCH_NDS32) || (defined(HAVE_DECL_AUDIT_ARCH_NDS32) && HAVE_DECL_AUDIT_ARCH_NDS32)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_NDS32) == ((EM_NDS32|__AUDIT_ARCH_LE)), "AUDIT_ARCH_NDS32 != (EM_NDS32|__AUDIT_ARCH_LE)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_NDS32 (EM_NDS32|__AUDIT_ARCH_LE)
+#endif
+#if defined(AUDIT_ARCH_NDS32BE) || (defined(HAVE_DECL_AUDIT_ARCH_NDS32BE) && HAVE_DECL_AUDIT_ARCH_NDS32BE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_NDS32BE) == ((EM_NDS32)), "AUDIT_ARCH_NDS32BE != (EM_NDS32)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_NDS32BE (EM_NDS32)
+#endif
+#if defined(AUDIT_ARCH_NIOS2) || (defined(HAVE_DECL_AUDIT_ARCH_NIOS2) && HAVE_DECL_AUDIT_ARCH_NIOS2)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_NIOS2) == ((EM_ALTERA_NIOS2|__AUDIT_ARCH_LE)), "AUDIT_ARCH_NIOS2 != (EM_ALTERA_NIOS2|__AUDIT_ARCH_LE)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_NIOS2 (EM_ALTERA_NIOS2|__AUDIT_ARCH_LE)
 #endif
-#ifdef EM_OPENRISC
 #if defined(AUDIT_ARCH_OPENRISC) || (defined(HAVE_DECL_AUDIT_ARCH_OPENRISC) && HAVE_DECL_AUDIT_ARCH_OPENRISC)
-  XLAT(AUDIT_ARCH_OPENRISC),
-#endif
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_OPENRISC) == ((EM_OPENRISC)), "AUDIT_ARCH_OPENRISC != (EM_OPENRISC)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_OPENRISC (EM_OPENRISC)
 #endif
 #if defined(AUDIT_ARCH_PARISC) || (defined(HAVE_DECL_AUDIT_ARCH_PARISC) && HAVE_DECL_AUDIT_ARCH_PARISC)
-  XLAT(AUDIT_ARCH_PARISC),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_PARISC) == ((EM_PARISC)), "AUDIT_ARCH_PARISC != (EM_PARISC)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_PARISC (EM_PARISC)
 #endif
 #if defined(AUDIT_ARCH_PARISC64) || (defined(HAVE_DECL_AUDIT_ARCH_PARISC64) && HAVE_DECL_AUDIT_ARCH_PARISC64)
-  XLAT(AUDIT_ARCH_PARISC64),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_PARISC64) == ((EM_PARISC|__AUDIT_ARCH_64BIT)), "AUDIT_ARCH_PARISC64 != (EM_PARISC|__AUDIT_ARCH_64BIT)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_PARISC64 (EM_PARISC|__AUDIT_ARCH_64BIT)
 #endif
 #if defined(AUDIT_ARCH_PPC) || (defined(HAVE_DECL_AUDIT_ARCH_PPC) && HAVE_DECL_AUDIT_ARCH_PPC)
-  XLAT(AUDIT_ARCH_PPC),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_PPC) == ((EM_PPC)), "AUDIT_ARCH_PPC != (EM_PPC)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_PPC (EM_PPC)
 #endif
 #if defined(AUDIT_ARCH_PPC64) || (defined(HAVE_DECL_AUDIT_ARCH_PPC64) && HAVE_DECL_AUDIT_ARCH_PPC64)
-  XLAT(AUDIT_ARCH_PPC64),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_PPC64) == ((EM_PPC64|__AUDIT_ARCH_64BIT)), "AUDIT_ARCH_PPC64 != (EM_PPC64|__AUDIT_ARCH_64BIT)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_PPC64 (EM_PPC64|__AUDIT_ARCH_64BIT)
 #endif
 #if defined(AUDIT_ARCH_PPC64LE) || (defined(HAVE_DECL_AUDIT_ARCH_PPC64LE) && HAVE_DECL_AUDIT_ARCH_PPC64LE)
-  XLAT(AUDIT_ARCH_PPC64LE),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_PPC64LE) == ((EM_PPC64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)), "AUDIT_ARCH_PPC64LE != (EM_PPC64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_PPC64LE (EM_PPC64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
+#endif
+#if defined(AUDIT_ARCH_RISCV32) || (defined(HAVE_DECL_AUDIT_ARCH_RISCV32) && HAVE_DECL_AUDIT_ARCH_RISCV32)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_RISCV32) == ((EM_RISCV|__AUDIT_ARCH_LE)), "AUDIT_ARCH_RISCV32 != (EM_RISCV|__AUDIT_ARCH_LE)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_RISCV32 (EM_RISCV|__AUDIT_ARCH_LE)
+#endif
+#if defined(AUDIT_ARCH_RISCV64) || (defined(HAVE_DECL_AUDIT_ARCH_RISCV64) && HAVE_DECL_AUDIT_ARCH_RISCV64)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_RISCV64) == ((EM_RISCV|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)), "AUDIT_ARCH_RISCV64 != (EM_RISCV|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_RISCV64 (EM_RISCV|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
 #endif
 #if defined(AUDIT_ARCH_S390) || (defined(HAVE_DECL_AUDIT_ARCH_S390) && HAVE_DECL_AUDIT_ARCH_S390)
-  XLAT(AUDIT_ARCH_S390),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_S390) == ((EM_S390)), "AUDIT_ARCH_S390 != (EM_S390)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_S390 (EM_S390)
 #endif
 #if defined(AUDIT_ARCH_S390X) || (defined(HAVE_DECL_AUDIT_ARCH_S390X) && HAVE_DECL_AUDIT_ARCH_S390X)
-  XLAT(AUDIT_ARCH_S390X),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_S390X) == ((EM_S390|__AUDIT_ARCH_64BIT)), "AUDIT_ARCH_S390X != (EM_S390|__AUDIT_ARCH_64BIT)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_S390X (EM_S390|__AUDIT_ARCH_64BIT)
 #endif
 #if defined(AUDIT_ARCH_SH) || (defined(HAVE_DECL_AUDIT_ARCH_SH) && HAVE_DECL_AUDIT_ARCH_SH)
-  XLAT(AUDIT_ARCH_SH),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_SH) == ((EM_SH)), "AUDIT_ARCH_SH != (EM_SH)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_SH (EM_SH)
 #endif
 #if defined(AUDIT_ARCH_SH64) || (defined(HAVE_DECL_AUDIT_ARCH_SH64) && HAVE_DECL_AUDIT_ARCH_SH64)
-  XLAT(AUDIT_ARCH_SH64),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_SH64) == ((EM_SH|__AUDIT_ARCH_64BIT)), "AUDIT_ARCH_SH64 != (EM_SH|__AUDIT_ARCH_64BIT)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_SH64 (EM_SH|__AUDIT_ARCH_64BIT)
 #endif
 #if defined(AUDIT_ARCH_SHEL) || (defined(HAVE_DECL_AUDIT_ARCH_SHEL) && HAVE_DECL_AUDIT_ARCH_SHEL)
-  XLAT(AUDIT_ARCH_SHEL),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_SHEL) == ((EM_SH|__AUDIT_ARCH_LE)), "AUDIT_ARCH_SHEL != (EM_SH|__AUDIT_ARCH_LE)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_SHEL (EM_SH|__AUDIT_ARCH_LE)
 #endif
 #if defined(AUDIT_ARCH_SHEL64) || (defined(HAVE_DECL_AUDIT_ARCH_SHEL64) && HAVE_DECL_AUDIT_ARCH_SHEL64)
-  XLAT(AUDIT_ARCH_SHEL64),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_SHEL64) == ((EM_SH|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)), "AUDIT_ARCH_SHEL64 != (EM_SH|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_SHEL64 (EM_SH|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
 #endif
 #if defined(AUDIT_ARCH_SPARC) || (defined(HAVE_DECL_AUDIT_ARCH_SPARC) && HAVE_DECL_AUDIT_ARCH_SPARC)
-  XLAT(AUDIT_ARCH_SPARC),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_SPARC) == ((EM_SPARC)), "AUDIT_ARCH_SPARC != (EM_SPARC)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_SPARC (EM_SPARC)
 #endif
 #if defined(AUDIT_ARCH_SPARC64) || (defined(HAVE_DECL_AUDIT_ARCH_SPARC64) && HAVE_DECL_AUDIT_ARCH_SPARC64)
-  XLAT(AUDIT_ARCH_SPARC64),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_SPARC64) == ((EM_SPARCV9|__AUDIT_ARCH_64BIT)), "AUDIT_ARCH_SPARC64 != (EM_SPARCV9|__AUDIT_ARCH_64BIT)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_SPARC64 (EM_SPARCV9|__AUDIT_ARCH_64BIT)
+#endif
+#if defined(AUDIT_ARCH_TILEGX) || (defined(HAVE_DECL_AUDIT_ARCH_TILEGX) && HAVE_DECL_AUDIT_ARCH_TILEGX)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_TILEGX) == ((EM_TILEGX|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)), "AUDIT_ARCH_TILEGX != (EM_TILEGX|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_TILEGX (EM_TILEGX|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
+#endif
+#if defined(AUDIT_ARCH_TILEGX32) || (defined(HAVE_DECL_AUDIT_ARCH_TILEGX32) && HAVE_DECL_AUDIT_ARCH_TILEGX32)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_TILEGX32) == ((EM_TILEGX|__AUDIT_ARCH_LE)), "AUDIT_ARCH_TILEGX32 != (EM_TILEGX|__AUDIT_ARCH_LE)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_TILEGX32 (EM_TILEGX|__AUDIT_ARCH_LE)
+#endif
+#if defined(AUDIT_ARCH_TILEPRO) || (defined(HAVE_DECL_AUDIT_ARCH_TILEPRO) && HAVE_DECL_AUDIT_ARCH_TILEPRO)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_TILEPRO) == ((EM_TILEPRO|__AUDIT_ARCH_LE)), "AUDIT_ARCH_TILEPRO != (EM_TILEPRO|__AUDIT_ARCH_LE)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_TILEPRO (EM_TILEPRO|__AUDIT_ARCH_LE)
+#endif
+#if defined(AUDIT_ARCH_UNICORE) || (defined(HAVE_DECL_AUDIT_ARCH_UNICORE) && HAVE_DECL_AUDIT_ARCH_UNICORE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_UNICORE) == ((EM_UNICORE|__AUDIT_ARCH_LE)), "AUDIT_ARCH_UNICORE != (EM_UNICORE|__AUDIT_ARCH_LE)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_UNICORE (EM_UNICORE|__AUDIT_ARCH_LE)
+#endif
+#if defined(AUDIT_ARCH_V850) || (defined(HAVE_DECL_AUDIT_ARCH_V850) && HAVE_DECL_AUDIT_ARCH_V850)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_V850) == ((EM_V850|__AUDIT_ARCH_LE)), "AUDIT_ARCH_V850 != (EM_V850|__AUDIT_ARCH_LE)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_V850 (EM_V850|__AUDIT_ARCH_LE)
 #endif
 #if defined(AUDIT_ARCH_X86_64) || (defined(HAVE_DECL_AUDIT_ARCH_X86_64) && HAVE_DECL_AUDIT_ARCH_X86_64)
-  XLAT(AUDIT_ARCH_X86_64),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_X86_64) == ((EM_X86_64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)), "AUDIT_ARCH_X86_64 != (EM_X86_64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_X86_64 (EM_X86_64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
+#endif
+#if defined(AUDIT_ARCH_XTENSA) || (defined(HAVE_DECL_AUDIT_ARCH_XTENSA) && HAVE_DECL_AUDIT_ARCH_XTENSA)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ARCH_XTENSA) == ((EM_XTENSA)), "AUDIT_ARCH_XTENSA != (EM_XTENSA)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ARCH_XTENSA (EM_XTENSA)
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifndef IN_MPERS
+
+static const struct xlat_data audit_arch_xdata[] = {
+#ifndef __AUDIT_ARCH_CONVENTION_MIPS64_N32
+# define __AUDIT_ARCH_CONVENTION_MIPS64_N32    0x20000000
+#endif
+#ifndef __AUDIT_ARCH_64BIT
+# define __AUDIT_ARCH_64BIT    0x80000000
 #endif
- XLAT_END
+#ifndef __AUDIT_ARCH_LE
+# define __AUDIT_ARCH_LE       0x40000000
+#endif
+
+ XLAT(AUDIT_ARCH_AARCH64),
+ #define XLAT_VAL_0 ((unsigned) (AUDIT_ARCH_AARCH64))
+ #define XLAT_STR_0 STRINGIFY(AUDIT_ARCH_AARCH64)
+ XLAT(AUDIT_ARCH_ALPHA),
+ #define XLAT_VAL_1 ((unsigned) (AUDIT_ARCH_ALPHA))
+ #define XLAT_STR_1 STRINGIFY(AUDIT_ARCH_ALPHA)
+ XLAT(AUDIT_ARCH_ARCOMPACT),
+ #define XLAT_VAL_2 ((unsigned) (AUDIT_ARCH_ARCOMPACT))
+ #define XLAT_STR_2 STRINGIFY(AUDIT_ARCH_ARCOMPACT)
+ XLAT(AUDIT_ARCH_ARCOMPACTBE),
+ #define XLAT_VAL_3 ((unsigned) (AUDIT_ARCH_ARCOMPACTBE))
+ #define XLAT_STR_3 STRINGIFY(AUDIT_ARCH_ARCOMPACTBE)
+ XLAT(AUDIT_ARCH_ARCV2),
+ #define XLAT_VAL_4 ((unsigned) (AUDIT_ARCH_ARCV2))
+ #define XLAT_STR_4 STRINGIFY(AUDIT_ARCH_ARCV2)
+ XLAT(AUDIT_ARCH_ARCV2BE),
+ #define XLAT_VAL_5 ((unsigned) (AUDIT_ARCH_ARCV2BE))
+ #define XLAT_STR_5 STRINGIFY(AUDIT_ARCH_ARCV2BE)
+ XLAT(AUDIT_ARCH_ARM),
+ #define XLAT_VAL_6 ((unsigned) (AUDIT_ARCH_ARM))
+ #define XLAT_STR_6 STRINGIFY(AUDIT_ARCH_ARM)
+ XLAT(AUDIT_ARCH_ARMEB),
+ #define XLAT_VAL_7 ((unsigned) (AUDIT_ARCH_ARMEB))
+ #define XLAT_STR_7 STRINGIFY(AUDIT_ARCH_ARMEB)
+ XLAT(AUDIT_ARCH_C6X),
+ #define XLAT_VAL_8 ((unsigned) (AUDIT_ARCH_C6X))
+ #define XLAT_STR_8 STRINGIFY(AUDIT_ARCH_C6X)
+ XLAT(AUDIT_ARCH_C6XBE),
+ #define XLAT_VAL_9 ((unsigned) (AUDIT_ARCH_C6XBE))
+ #define XLAT_STR_9 STRINGIFY(AUDIT_ARCH_C6XBE)
+ XLAT(AUDIT_ARCH_CRIS),
+ #define XLAT_VAL_10 ((unsigned) (AUDIT_ARCH_CRIS))
+ #define XLAT_STR_10 STRINGIFY(AUDIT_ARCH_CRIS)
+ XLAT(AUDIT_ARCH_CSKY),
+ #define XLAT_VAL_11 ((unsigned) (AUDIT_ARCH_CSKY))
+ #define XLAT_STR_11 STRINGIFY(AUDIT_ARCH_CSKY)
+ XLAT(AUDIT_ARCH_FRV),
+ #define XLAT_VAL_12 ((unsigned) (AUDIT_ARCH_FRV))
+ #define XLAT_STR_12 STRINGIFY(AUDIT_ARCH_FRV)
+ XLAT(AUDIT_ARCH_H8300),
+ #define XLAT_VAL_13 ((unsigned) (AUDIT_ARCH_H8300))
+ #define XLAT_STR_13 STRINGIFY(AUDIT_ARCH_H8300)
+ XLAT(AUDIT_ARCH_HEXAGON),
+ #define XLAT_VAL_14 ((unsigned) (AUDIT_ARCH_HEXAGON))
+ #define XLAT_STR_14 STRINGIFY(AUDIT_ARCH_HEXAGON)
+ XLAT(AUDIT_ARCH_I386),
+ #define XLAT_VAL_15 ((unsigned) (AUDIT_ARCH_I386))
+ #define XLAT_STR_15 STRINGIFY(AUDIT_ARCH_I386)
+ XLAT(AUDIT_ARCH_IA64),
+ #define XLAT_VAL_16 ((unsigned) (AUDIT_ARCH_IA64))
+ #define XLAT_STR_16 STRINGIFY(AUDIT_ARCH_IA64)
+ XLAT(AUDIT_ARCH_M32R),
+ #define XLAT_VAL_17 ((unsigned) (AUDIT_ARCH_M32R))
+ #define XLAT_STR_17 STRINGIFY(AUDIT_ARCH_M32R)
+ XLAT(AUDIT_ARCH_M68K),
+ #define XLAT_VAL_18 ((unsigned) (AUDIT_ARCH_M68K))
+ #define XLAT_STR_18 STRINGIFY(AUDIT_ARCH_M68K)
+ XLAT(AUDIT_ARCH_MICROBLAZE),
+ #define XLAT_VAL_19 ((unsigned) (AUDIT_ARCH_MICROBLAZE))
+ #define XLAT_STR_19 STRINGIFY(AUDIT_ARCH_MICROBLAZE)
+ XLAT(AUDIT_ARCH_MIPS),
+ #define XLAT_VAL_20 ((unsigned) (AUDIT_ARCH_MIPS))
+ #define XLAT_STR_20 STRINGIFY(AUDIT_ARCH_MIPS)
+ XLAT(AUDIT_ARCH_MIPS64),
+ #define XLAT_VAL_21 ((unsigned) (AUDIT_ARCH_MIPS64))
+ #define XLAT_STR_21 STRINGIFY(AUDIT_ARCH_MIPS64)
+ XLAT(AUDIT_ARCH_MIPS64N32),
+ #define XLAT_VAL_22 ((unsigned) (AUDIT_ARCH_MIPS64N32))
+ #define XLAT_STR_22 STRINGIFY(AUDIT_ARCH_MIPS64N32)
+ XLAT(AUDIT_ARCH_MIPSEL),
+ #define XLAT_VAL_23 ((unsigned) (AUDIT_ARCH_MIPSEL))
+ #define XLAT_STR_23 STRINGIFY(AUDIT_ARCH_MIPSEL)
+ XLAT(AUDIT_ARCH_MIPSEL64),
+ #define XLAT_VAL_24 ((unsigned) (AUDIT_ARCH_MIPSEL64))
+ #define XLAT_STR_24 STRINGIFY(AUDIT_ARCH_MIPSEL64)
+ XLAT(AUDIT_ARCH_MIPSEL64N32),
+ #define XLAT_VAL_25 ((unsigned) (AUDIT_ARCH_MIPSEL64N32))
+ #define XLAT_STR_25 STRINGIFY(AUDIT_ARCH_MIPSEL64N32)
+ XLAT(AUDIT_ARCH_NDS32),
+ #define XLAT_VAL_26 ((unsigned) (AUDIT_ARCH_NDS32))
+ #define XLAT_STR_26 STRINGIFY(AUDIT_ARCH_NDS32)
+ XLAT(AUDIT_ARCH_NDS32BE),
+ #define XLAT_VAL_27 ((unsigned) (AUDIT_ARCH_NDS32BE))
+ #define XLAT_STR_27 STRINGIFY(AUDIT_ARCH_NDS32BE)
+ XLAT(AUDIT_ARCH_NIOS2),
+ #define XLAT_VAL_28 ((unsigned) (AUDIT_ARCH_NIOS2))
+ #define XLAT_STR_28 STRINGIFY(AUDIT_ARCH_NIOS2)
+ XLAT(AUDIT_ARCH_OPENRISC),
+ #define XLAT_VAL_29 ((unsigned) (AUDIT_ARCH_OPENRISC))
+ #define XLAT_STR_29 STRINGIFY(AUDIT_ARCH_OPENRISC)
+ XLAT(AUDIT_ARCH_PARISC),
+ #define XLAT_VAL_30 ((unsigned) (AUDIT_ARCH_PARISC))
+ #define XLAT_STR_30 STRINGIFY(AUDIT_ARCH_PARISC)
+ XLAT(AUDIT_ARCH_PARISC64),
+ #define XLAT_VAL_31 ((unsigned) (AUDIT_ARCH_PARISC64))
+ #define XLAT_STR_31 STRINGIFY(AUDIT_ARCH_PARISC64)
+ XLAT(AUDIT_ARCH_PPC),
+ #define XLAT_VAL_32 ((unsigned) (AUDIT_ARCH_PPC))
+ #define XLAT_STR_32 STRINGIFY(AUDIT_ARCH_PPC)
+ XLAT(AUDIT_ARCH_PPC64),
+ #define XLAT_VAL_33 ((unsigned) (AUDIT_ARCH_PPC64))
+ #define XLAT_STR_33 STRINGIFY(AUDIT_ARCH_PPC64)
+ XLAT(AUDIT_ARCH_PPC64LE),
+ #define XLAT_VAL_34 ((unsigned) (AUDIT_ARCH_PPC64LE))
+ #define XLAT_STR_34 STRINGIFY(AUDIT_ARCH_PPC64LE)
+ XLAT(AUDIT_ARCH_RISCV32),
+ #define XLAT_VAL_35 ((unsigned) (AUDIT_ARCH_RISCV32))
+ #define XLAT_STR_35 STRINGIFY(AUDIT_ARCH_RISCV32)
+ XLAT(AUDIT_ARCH_RISCV64),
+ #define XLAT_VAL_36 ((unsigned) (AUDIT_ARCH_RISCV64))
+ #define XLAT_STR_36 STRINGIFY(AUDIT_ARCH_RISCV64)
+ XLAT(AUDIT_ARCH_S390),
+ #define XLAT_VAL_37 ((unsigned) (AUDIT_ARCH_S390))
+ #define XLAT_STR_37 STRINGIFY(AUDIT_ARCH_S390)
+ XLAT(AUDIT_ARCH_S390X),
+ #define XLAT_VAL_38 ((unsigned) (AUDIT_ARCH_S390X))
+ #define XLAT_STR_38 STRINGIFY(AUDIT_ARCH_S390X)
+ XLAT(AUDIT_ARCH_SH),
+ #define XLAT_VAL_39 ((unsigned) (AUDIT_ARCH_SH))
+ #define XLAT_STR_39 STRINGIFY(AUDIT_ARCH_SH)
+ XLAT(AUDIT_ARCH_SH64),
+ #define XLAT_VAL_40 ((unsigned) (AUDIT_ARCH_SH64))
+ #define XLAT_STR_40 STRINGIFY(AUDIT_ARCH_SH64)
+ XLAT(AUDIT_ARCH_SHEL),
+ #define XLAT_VAL_41 ((unsigned) (AUDIT_ARCH_SHEL))
+ #define XLAT_STR_41 STRINGIFY(AUDIT_ARCH_SHEL)
+ XLAT(AUDIT_ARCH_SHEL64),
+ #define XLAT_VAL_42 ((unsigned) (AUDIT_ARCH_SHEL64))
+ #define XLAT_STR_42 STRINGIFY(AUDIT_ARCH_SHEL64)
+ XLAT(AUDIT_ARCH_SPARC),
+ #define XLAT_VAL_43 ((unsigned) (AUDIT_ARCH_SPARC))
+ #define XLAT_STR_43 STRINGIFY(AUDIT_ARCH_SPARC)
+ XLAT(AUDIT_ARCH_SPARC64),
+ #define XLAT_VAL_44 ((unsigned) (AUDIT_ARCH_SPARC64))
+ #define XLAT_STR_44 STRINGIFY(AUDIT_ARCH_SPARC64)
+ XLAT(AUDIT_ARCH_TILEGX),
+ #define XLAT_VAL_45 ((unsigned) (AUDIT_ARCH_TILEGX))
+ #define XLAT_STR_45 STRINGIFY(AUDIT_ARCH_TILEGX)
+ XLAT(AUDIT_ARCH_TILEGX32),
+ #define XLAT_VAL_46 ((unsigned) (AUDIT_ARCH_TILEGX32))
+ #define XLAT_STR_46 STRINGIFY(AUDIT_ARCH_TILEGX32)
+ XLAT(AUDIT_ARCH_TILEPRO),
+ #define XLAT_VAL_47 ((unsigned) (AUDIT_ARCH_TILEPRO))
+ #define XLAT_STR_47 STRINGIFY(AUDIT_ARCH_TILEPRO)
+ XLAT(AUDIT_ARCH_UNICORE),
+ #define XLAT_VAL_48 ((unsigned) (AUDIT_ARCH_UNICORE))
+ #define XLAT_STR_48 STRINGIFY(AUDIT_ARCH_UNICORE)
+ XLAT(AUDIT_ARCH_V850),
+ #define XLAT_VAL_49 ((unsigned) (AUDIT_ARCH_V850))
+ #define XLAT_STR_49 STRINGIFY(AUDIT_ARCH_V850)
+ XLAT(AUDIT_ARCH_X86_64),
+ #define XLAT_VAL_50 ((unsigned) (AUDIT_ARCH_X86_64))
+ #define XLAT_STR_50 STRINGIFY(AUDIT_ARCH_X86_64)
+ XLAT(AUDIT_ARCH_XTENSA),
+ #define XLAT_VAL_51 ((unsigned) (AUDIT_ARCH_XTENSA))
+ #define XLAT_STR_51 STRINGIFY(AUDIT_ARCH_XTENSA)
 };
+const struct xlat audit_arch[1] = { {
+ .data = audit_arch_xdata,
+ .size = ARRAY_SIZE(audit_arch_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+#  ifdef XLAT_VAL_30
+  | XLAT_VAL_30
+#  endif
+#  ifdef XLAT_VAL_31
+  | XLAT_VAL_31
+#  endif
+#  ifdef XLAT_VAL_32
+  | XLAT_VAL_32
+#  endif
+#  ifdef XLAT_VAL_33
+  | XLAT_VAL_33
+#  endif
+#  ifdef XLAT_VAL_34
+  | XLAT_VAL_34
+#  endif
+#  ifdef XLAT_VAL_35
+  | XLAT_VAL_35
+#  endif
+#  ifdef XLAT_VAL_36
+  | XLAT_VAL_36
+#  endif
+#  ifdef XLAT_VAL_37
+  | XLAT_VAL_37
+#  endif
+#  ifdef XLAT_VAL_38
+  | XLAT_VAL_38
+#  endif
+#  ifdef XLAT_VAL_39
+  | XLAT_VAL_39
+#  endif
+#  ifdef XLAT_VAL_40
+  | XLAT_VAL_40
+#  endif
+#  ifdef XLAT_VAL_41
+  | XLAT_VAL_41
+#  endif
+#  ifdef XLAT_VAL_42
+  | XLAT_VAL_42
+#  endif
+#  ifdef XLAT_VAL_43
+  | XLAT_VAL_43
+#  endif
+#  ifdef XLAT_VAL_44
+  | XLAT_VAL_44
+#  endif
+#  ifdef XLAT_VAL_45
+  | XLAT_VAL_45
+#  endif
+#  ifdef XLAT_VAL_46
+  | XLAT_VAL_46
+#  endif
+#  ifdef XLAT_VAL_47
+  | XLAT_VAL_47
+#  endif
+#  ifdef XLAT_VAL_48
+  | XLAT_VAL_48
+#  endif
+#  ifdef XLAT_VAL_49
+  | XLAT_VAL_49
+#  endif
+#  ifdef XLAT_VAL_50
+  | XLAT_VAL_50
+#  endif
+#  ifdef XLAT_VAL_51
+  | XLAT_VAL_51
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+#  ifdef XLAT_STR_30
+  + sizeof(XLAT_STR_30)
+#  endif
+#  ifdef XLAT_STR_31
+  + sizeof(XLAT_STR_31)
+#  endif
+#  ifdef XLAT_STR_32
+  + sizeof(XLAT_STR_32)
+#  endif
+#  ifdef XLAT_STR_33
+  + sizeof(XLAT_STR_33)
+#  endif
+#  ifdef XLAT_STR_34
+  + sizeof(XLAT_STR_34)
+#  endif
+#  ifdef XLAT_STR_35
+  + sizeof(XLAT_STR_35)
+#  endif
+#  ifdef XLAT_STR_36
+  + sizeof(XLAT_STR_36)
+#  endif
+#  ifdef XLAT_STR_37
+  + sizeof(XLAT_STR_37)
+#  endif
+#  ifdef XLAT_STR_38
+  + sizeof(XLAT_STR_38)
+#  endif
+#  ifdef XLAT_STR_39
+  + sizeof(XLAT_STR_39)
+#  endif
+#  ifdef XLAT_STR_40
+  + sizeof(XLAT_STR_40)
+#  endif
+#  ifdef XLAT_STR_41
+  + sizeof(XLAT_STR_41)
+#  endif
+#  ifdef XLAT_STR_42
+  + sizeof(XLAT_STR_42)
+#  endif
+#  ifdef XLAT_STR_43
+  + sizeof(XLAT_STR_43)
+#  endif
+#  ifdef XLAT_STR_44
+  + sizeof(XLAT_STR_44)
+#  endif
+#  ifdef XLAT_STR_45
+  + sizeof(XLAT_STR_45)
+#  endif
+#  ifdef XLAT_STR_46
+  + sizeof(XLAT_STR_46)
+#  endif
+#  ifdef XLAT_STR_47
+  + sizeof(XLAT_STR_47)
+#  endif
+#  ifdef XLAT_STR_48
+  + sizeof(XLAT_STR_48)
+#  endif
+#  ifdef XLAT_STR_49
+  + sizeof(XLAT_STR_49)
+#  endif
+#  ifdef XLAT_STR_50
+  + sizeof(XLAT_STR_50)
+#  endif
+#  ifdef XLAT_STR_51
+  + sizeof(XLAT_STR_51)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
+#  undef XLAT_STR_30
+#  undef XLAT_VAL_30
+#  undef XLAT_STR_31
+#  undef XLAT_VAL_31
+#  undef XLAT_STR_32
+#  undef XLAT_VAL_32
+#  undef XLAT_STR_33
+#  undef XLAT_VAL_33
+#  undef XLAT_STR_34
+#  undef XLAT_VAL_34
+#  undef XLAT_STR_35
+#  undef XLAT_VAL_35
+#  undef XLAT_STR_36
+#  undef XLAT_VAL_36
+#  undef XLAT_STR_37
+#  undef XLAT_VAL_37
+#  undef XLAT_STR_38
+#  undef XLAT_VAL_38
+#  undef XLAT_STR_39
+#  undef XLAT_VAL_39
+#  undef XLAT_STR_40
+#  undef XLAT_VAL_40
+#  undef XLAT_STR_41
+#  undef XLAT_VAL_41
+#  undef XLAT_STR_42
+#  undef XLAT_VAL_42
+#  undef XLAT_STR_43
+#  undef XLAT_VAL_43
+#  undef XLAT_STR_44
+#  undef XLAT_VAL_44
+#  undef XLAT_STR_45
+#  undef XLAT_VAL_45
+#  undef XLAT_STR_46
+#  undef XLAT_VAL_46
+#  undef XLAT_STR_47
+#  undef XLAT_VAL_47
+#  undef XLAT_STR_48
+#  undef XLAT_VAL_48
+#  undef XLAT_STR_49
+#  undef XLAT_VAL_49
+#  undef XLAT_STR_50
+#  undef XLAT_VAL_50
+#  undef XLAT_STR_51
+#  undef XLAT_VAL_51
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index e0b3db39d3bfd3bda416b8a84d5546816c5cd846..63d3fe52b6cef8d86211e7802d9c272a8b433ac8 100644 (file)
@@ -1,41 +1,62 @@
-/* linux used to have linux/elf-em.h out of sync with linux/audit.h */
-AUDIT_ARCH_AARCH64
-AUDIT_ARCH_ALPHA
-#ifdef EM_ARM
-AUDIT_ARCH_ARM
-AUDIT_ARCH_ARMEB
+#ifndef __AUDIT_ARCH_CONVENTION_MIPS64_N32
+# define __AUDIT_ARCH_CONVENTION_MIPS64_N32    0x20000000
 #endif
-AUDIT_ARCH_CRIS
-#ifdef EM_FRV
-AUDIT_ARCH_FRV
+#ifndef __AUDIT_ARCH_64BIT
+# define __AUDIT_ARCH_64BIT    0x80000000
 #endif
-AUDIT_ARCH_I386
-AUDIT_ARCH_IA64
-AUDIT_ARCH_M32R
-AUDIT_ARCH_M68K
-#ifdef EM_MICROBLAZE
-AUDIT_ARCH_MICROBLAZE
+#ifndef __AUDIT_ARCH_LE
+# define __AUDIT_ARCH_LE       0x40000000
 #endif
-AUDIT_ARCH_MIPS
-AUDIT_ARCH_MIPS64
-AUDIT_ARCH_MIPS64N32
-AUDIT_ARCH_MIPSEL
-AUDIT_ARCH_MIPSEL64
-AUDIT_ARCH_MIPSEL64N32
-#ifdef EM_OPENRISC
-AUDIT_ARCH_OPENRISC
-#endif
-AUDIT_ARCH_PARISC
-AUDIT_ARCH_PARISC64
-AUDIT_ARCH_PPC
-AUDIT_ARCH_PPC64
-AUDIT_ARCH_PPC64LE
-AUDIT_ARCH_S390
-AUDIT_ARCH_S390X
-AUDIT_ARCH_SH
-AUDIT_ARCH_SH64
-AUDIT_ARCH_SHEL
-AUDIT_ARCH_SHEL64
-AUDIT_ARCH_SPARC
-AUDIT_ARCH_SPARC64
-AUDIT_ARCH_X86_64
+
+AUDIT_ARCH_AARCH64     (EM_AARCH64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
+AUDIT_ARCH_ALPHA       (EM_ALPHA|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
+AUDIT_ARCH_ARCOMPACT   (EM_ARCOMPACT|__AUDIT_ARCH_LE)
+AUDIT_ARCH_ARCOMPACTBE (EM_ARCOMPACT)
+AUDIT_ARCH_ARCV2       (EM_ARCV2|__AUDIT_ARCH_LE)
+AUDIT_ARCH_ARCV2BE     (EM_ARCV2)
+AUDIT_ARCH_ARM         (EM_ARM|__AUDIT_ARCH_LE)
+AUDIT_ARCH_ARMEB       (EM_ARM)
+AUDIT_ARCH_C6X         (EM_TI_C6000|__AUDIT_ARCH_LE)
+AUDIT_ARCH_C6XBE       (EM_TI_C6000)
+AUDIT_ARCH_CRIS                (EM_CRIS|__AUDIT_ARCH_LE)
+AUDIT_ARCH_CSKY                (EM_CSKY|__AUDIT_ARCH_LE)
+AUDIT_ARCH_FRV         (EM_FRV)
+AUDIT_ARCH_H8300       (EM_H8_300) /* Removed in v3.13-rc1~130^2~2 */
+AUDIT_ARCH_HEXAGON     (EM_HEXAGON)
+AUDIT_ARCH_I386                (EM_386|__AUDIT_ARCH_LE)
+AUDIT_ARCH_IA64                (EM_IA_64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
+AUDIT_ARCH_M32R                (EM_M32R)
+AUDIT_ARCH_M68K                (EM_68K)
+AUDIT_ARCH_MICROBLAZE  (EM_MICROBLAZE)
+AUDIT_ARCH_MIPS                (EM_MIPS)
+AUDIT_ARCH_MIPS64      (EM_MIPS|__AUDIT_ARCH_64BIT)
+AUDIT_ARCH_MIPS64N32   (EM_MIPS|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_CONVENTION_MIPS64_N32)
+AUDIT_ARCH_MIPSEL      (EM_MIPS|__AUDIT_ARCH_LE)
+AUDIT_ARCH_MIPSEL64    (EM_MIPS|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
+AUDIT_ARCH_MIPSEL64N32 (EM_MIPS|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE|__AUDIT_ARCH_CONVENTION_MIPS64_N32)
+AUDIT_ARCH_NDS32       (EM_NDS32|__AUDIT_ARCH_LE)
+AUDIT_ARCH_NDS32BE     (EM_NDS32)
+AUDIT_ARCH_NIOS2       (EM_ALTERA_NIOS2|__AUDIT_ARCH_LE)
+AUDIT_ARCH_OPENRISC    (EM_OPENRISC)
+AUDIT_ARCH_PARISC      (EM_PARISC)
+AUDIT_ARCH_PARISC64    (EM_PARISC|__AUDIT_ARCH_64BIT)
+AUDIT_ARCH_PPC         (EM_PPC)
+AUDIT_ARCH_PPC64       (EM_PPC64|__AUDIT_ARCH_64BIT)
+AUDIT_ARCH_PPC64LE     (EM_PPC64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
+AUDIT_ARCH_RISCV32     (EM_RISCV|__AUDIT_ARCH_LE)
+AUDIT_ARCH_RISCV64     (EM_RISCV|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
+AUDIT_ARCH_S390                (EM_S390)
+AUDIT_ARCH_S390X       (EM_S390|__AUDIT_ARCH_64BIT)
+AUDIT_ARCH_SH          (EM_SH)
+AUDIT_ARCH_SH64                (EM_SH|__AUDIT_ARCH_64BIT)
+AUDIT_ARCH_SHEL                (EM_SH|__AUDIT_ARCH_LE)
+AUDIT_ARCH_SHEL64      (EM_SH|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
+AUDIT_ARCH_SPARC       (EM_SPARC)
+AUDIT_ARCH_SPARC64     (EM_SPARCV9|__AUDIT_ARCH_64BIT)
+AUDIT_ARCH_TILEGX      (EM_TILEGX|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
+AUDIT_ARCH_TILEGX32    (EM_TILEGX|__AUDIT_ARCH_LE)
+AUDIT_ARCH_TILEPRO     (EM_TILEPRO|__AUDIT_ARCH_LE)
+AUDIT_ARCH_UNICORE     (EM_UNICORE|__AUDIT_ARCH_LE)
+AUDIT_ARCH_V850                (EM_V850|__AUDIT_ARCH_LE) /* Removed in v2.6.27-rc1~721 */
+AUDIT_ARCH_X86_64      (EM_X86_64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
+AUDIT_ARCH_XTENSA      (EM_XTENSA)
index 8f72ebb8e24386e67a7cc90b9b853c484b5e705a..9cae4b044e77bc8c5c9ff2a60c37cb1215bb3b88 100644 (file)
@@ -103,28 +103,165 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat ax25_protocols[] = {
-
+static const struct xlat_data ax25_protocols_xdata[] = {
 
  XLAT(AX25_P_ROSE),
+ #define XLAT_VAL_0 ((unsigned) (AX25_P_ROSE))
+ #define XLAT_STR_0 STRINGIFY(AX25_P_ROSE)
  XLAT(AX25_P_VJCOMP),
+ #define XLAT_VAL_1 ((unsigned) (AX25_P_VJCOMP))
+ #define XLAT_STR_1 STRINGIFY(AX25_P_VJCOMP)
 
  XLAT(AX25_P_VJUNCOMP),
+ #define XLAT_VAL_2 ((unsigned) (AX25_P_VJUNCOMP))
+ #define XLAT_STR_2 STRINGIFY(AX25_P_VJUNCOMP)
 
  XLAT(AX25_P_SEGMENT),
+ #define XLAT_VAL_3 ((unsigned) (AX25_P_SEGMENT))
+ #define XLAT_STR_3 STRINGIFY(AX25_P_SEGMENT)
  XLAT(AX25_P_TEXNET),
+ #define XLAT_VAL_4 ((unsigned) (AX25_P_TEXNET))
+ #define XLAT_STR_4 STRINGIFY(AX25_P_TEXNET)
  XLAT(AX25_P_LQ),
+ #define XLAT_VAL_5 ((unsigned) (AX25_P_LQ))
+ #define XLAT_STR_5 STRINGIFY(AX25_P_LQ)
  XLAT(AX25_P_ATALK),
+ #define XLAT_VAL_6 ((unsigned) (AX25_P_ATALK))
+ #define XLAT_STR_6 STRINGIFY(AX25_P_ATALK)
  XLAT(AX25_P_ATALK_ARP),
+ #define XLAT_VAL_7 ((unsigned) (AX25_P_ATALK_ARP))
+ #define XLAT_STR_7 STRINGIFY(AX25_P_ATALK_ARP)
  XLAT(AX25_P_IP),
+ #define XLAT_VAL_8 ((unsigned) (AX25_P_IP))
+ #define XLAT_STR_8 STRINGIFY(AX25_P_IP)
  XLAT(AX25_P_ARP),
+ #define XLAT_VAL_9 ((unsigned) (AX25_P_ARP))
+ #define XLAT_STR_9 STRINGIFY(AX25_P_ARP)
  XLAT(AX25_P_FLEXNET),
+ #define XLAT_VAL_10 ((unsigned) (AX25_P_FLEXNET))
+ #define XLAT_STR_10 STRINGIFY(AX25_P_FLEXNET)
  XLAT(AX25_P_NETROM),
+ #define XLAT_VAL_11 ((unsigned) (AX25_P_NETROM))
+ #define XLAT_STR_11 STRINGIFY(AX25_P_NETROM)
  XLAT(AX25_P_TEXT),
- XLAT_END
+ #define XLAT_VAL_12 ((unsigned) (AX25_P_TEXT))
+ #define XLAT_STR_12 STRINGIFY(AX25_P_TEXT)
 };
+static
+const struct xlat ax25_protocols[1] = { {
+ .data = ax25_protocols_xdata,
+ .size = ARRAY_SIZE(ax25_protocols_xdata),
+ .type = XT_SORTED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 89ced436d78116467314af1c1953e14e2a37f36c..9cac1a63671a0427392c3025f5fdec8bab03a793 100644 (file)
@@ -1,4 +1,4 @@
-/* sorted */
+#sorted
 /* Those are pulled from include/net/ax25.h, they should be part of UAPI */
 AX25_P_ROSE            0x01
 AX25_P_VJCOMP          0x06    /* Compressed TCP/IP packet   */
index 62e706f3ac7080349cde8d2193d1fde56bf70d75..5e15944c4c03b865c5ff25483ab92b4e6333c52d 100644 (file)
 
 # else
 
-static
-const struct xlat baud_options[] = {
+static const struct xlat_data baud_options_xdata[] = {
 #if defined(B0) || (defined(HAVE_DECL_B0) && HAVE_DECL_B0)
   XLAT(B0),
+ #define XLAT_VAL_0 ((unsigned) (B0))
+ #define XLAT_STR_0 STRINGIFY(B0)
 #endif
 #if defined(B50) || (defined(HAVE_DECL_B50) && HAVE_DECL_B50)
   XLAT(B50),
+ #define XLAT_VAL_1 ((unsigned) (B50))
+ #define XLAT_STR_1 STRINGIFY(B50)
 #endif
 #if defined(B75) || (defined(HAVE_DECL_B75) && HAVE_DECL_B75)
   XLAT(B75),
+ #define XLAT_VAL_2 ((unsigned) (B75))
+ #define XLAT_STR_2 STRINGIFY(B75)
 #endif
 #if defined(B110) || (defined(HAVE_DECL_B110) && HAVE_DECL_B110)
   XLAT(B110),
+ #define XLAT_VAL_3 ((unsigned) (B110))
+ #define XLAT_STR_3 STRINGIFY(B110)
 #endif
 #if defined(B134) || (defined(HAVE_DECL_B134) && HAVE_DECL_B134)
   XLAT(B134),
+ #define XLAT_VAL_4 ((unsigned) (B134))
+ #define XLAT_STR_4 STRINGIFY(B134)
 #endif
 #if defined(B150) || (defined(HAVE_DECL_B150) && HAVE_DECL_B150)
   XLAT(B150),
+ #define XLAT_VAL_5 ((unsigned) (B150))
+ #define XLAT_STR_5 STRINGIFY(B150)
 #endif
 #if defined(B200) || (defined(HAVE_DECL_B200) && HAVE_DECL_B200)
   XLAT(B200),
+ #define XLAT_VAL_6 ((unsigned) (B200))
+ #define XLAT_STR_6 STRINGIFY(B200)
 #endif
 #if defined(B300) || (defined(HAVE_DECL_B300) && HAVE_DECL_B300)
   XLAT(B300),
+ #define XLAT_VAL_7 ((unsigned) (B300))
+ #define XLAT_STR_7 STRINGIFY(B300)
 #endif
 #if defined(B600) || (defined(HAVE_DECL_B600) && HAVE_DECL_B600)
   XLAT(B600),
+ #define XLAT_VAL_8 ((unsigned) (B600))
+ #define XLAT_STR_8 STRINGIFY(B600)
 #endif
 #if defined(B1200) || (defined(HAVE_DECL_B1200) && HAVE_DECL_B1200)
   XLAT(B1200),
+ #define XLAT_VAL_9 ((unsigned) (B1200))
+ #define XLAT_STR_9 STRINGIFY(B1200)
 #endif
 #if defined(B1800) || (defined(HAVE_DECL_B1800) && HAVE_DECL_B1800)
   XLAT(B1800),
+ #define XLAT_VAL_10 ((unsigned) (B1800))
+ #define XLAT_STR_10 STRINGIFY(B1800)
 #endif
 #if defined(B2400) || (defined(HAVE_DECL_B2400) && HAVE_DECL_B2400)
   XLAT(B2400),
+ #define XLAT_VAL_11 ((unsigned) (B2400))
+ #define XLAT_STR_11 STRINGIFY(B2400)
 #endif
 #if defined(B4800) || (defined(HAVE_DECL_B4800) && HAVE_DECL_B4800)
   XLAT(B4800),
+ #define XLAT_VAL_12 ((unsigned) (B4800))
+ #define XLAT_STR_12 STRINGIFY(B4800)
 #endif
 #if defined(B9600) || (defined(HAVE_DECL_B9600) && HAVE_DECL_B9600)
   XLAT(B9600),
+ #define XLAT_VAL_13 ((unsigned) (B9600))
+ #define XLAT_STR_13 STRINGIFY(B9600)
 #endif
 #if defined(B19200) || (defined(HAVE_DECL_B19200) && HAVE_DECL_B19200)
   XLAT(B19200),
+ #define XLAT_VAL_14 ((unsigned) (B19200))
+ #define XLAT_STR_14 STRINGIFY(B19200)
 #endif
 #if defined(B38400) || (defined(HAVE_DECL_B38400) && HAVE_DECL_B38400)
   XLAT(B38400),
+ #define XLAT_VAL_15 ((unsigned) (B38400))
+ #define XLAT_STR_15 STRINGIFY(B38400)
 #endif
 #if defined(B57600) || (defined(HAVE_DECL_B57600) && HAVE_DECL_B57600)
   XLAT(B57600),
+ #define XLAT_VAL_16 ((unsigned) (B57600))
+ #define XLAT_STR_16 STRINGIFY(B57600)
 #endif
 #if defined(B115200) || (defined(HAVE_DECL_B115200) && HAVE_DECL_B115200)
   XLAT(B115200),
+ #define XLAT_VAL_17 ((unsigned) (B115200))
+ #define XLAT_STR_17 STRINGIFY(B115200)
 #endif
 #if defined(B230400) || (defined(HAVE_DECL_B230400) && HAVE_DECL_B230400)
   XLAT(B230400),
+ #define XLAT_VAL_18 ((unsigned) (B230400))
+ #define XLAT_STR_18 STRINGIFY(B230400)
 #endif
 #if defined(B460800) || (defined(HAVE_DECL_B460800) && HAVE_DECL_B460800)
   XLAT(B460800),
+ #define XLAT_VAL_19 ((unsigned) (B460800))
+ #define XLAT_STR_19 STRINGIFY(B460800)
 #endif
 #if defined(B500000) || (defined(HAVE_DECL_B500000) && HAVE_DECL_B500000)
   XLAT(B500000),
+ #define XLAT_VAL_20 ((unsigned) (B500000))
+ #define XLAT_STR_20 STRINGIFY(B500000)
 #endif
 #if defined(B576000) || (defined(HAVE_DECL_B576000) && HAVE_DECL_B576000)
   XLAT(B576000),
+ #define XLAT_VAL_21 ((unsigned) (B576000))
+ #define XLAT_STR_21 STRINGIFY(B576000)
 #endif
 #if defined(B921600) || (defined(HAVE_DECL_B921600) && HAVE_DECL_B921600)
   XLAT(B921600),
+ #define XLAT_VAL_22 ((unsigned) (B921600))
+ #define XLAT_STR_22 STRINGIFY(B921600)
 #endif
 #if defined(B1000000) || (defined(HAVE_DECL_B1000000) && HAVE_DECL_B1000000)
   XLAT(B1000000),
+ #define XLAT_VAL_23 ((unsigned) (B1000000))
+ #define XLAT_STR_23 STRINGIFY(B1000000)
 #endif
 #if defined(B1152000) || (defined(HAVE_DECL_B1152000) && HAVE_DECL_B1152000)
   XLAT(B1152000),
+ #define XLAT_VAL_24 ((unsigned) (B1152000))
+ #define XLAT_STR_24 STRINGIFY(B1152000)
 #endif
 #if defined(B1500000) || (defined(HAVE_DECL_B1500000) && HAVE_DECL_B1500000)
   XLAT(B1500000),
+ #define XLAT_VAL_25 ((unsigned) (B1500000))
+ #define XLAT_STR_25 STRINGIFY(B1500000)
 #endif
 #if defined(B2000000) || (defined(HAVE_DECL_B2000000) && HAVE_DECL_B2000000)
   XLAT(B2000000),
+ #define XLAT_VAL_26 ((unsigned) (B2000000))
+ #define XLAT_STR_26 STRINGIFY(B2000000)
 #endif
 #if defined(B2500000) || (defined(HAVE_DECL_B2500000) && HAVE_DECL_B2500000)
   XLAT(B2500000),
+ #define XLAT_VAL_27 ((unsigned) (B2500000))
+ #define XLAT_STR_27 STRINGIFY(B2500000)
 #endif
 #if defined(B3000000) || (defined(HAVE_DECL_B3000000) && HAVE_DECL_B3000000)
   XLAT(B3000000),
+ #define XLAT_VAL_28 ((unsigned) (B3000000))
+ #define XLAT_STR_28 STRINGIFY(B3000000)
 #endif
 #if defined(B3500000) || (defined(HAVE_DECL_B3500000) && HAVE_DECL_B3500000)
   XLAT(B3500000),
+ #define XLAT_VAL_29 ((unsigned) (B3500000))
+ #define XLAT_STR_29 STRINGIFY(B3500000)
 #endif
 #if defined(B4000000) || (defined(HAVE_DECL_B4000000) && HAVE_DECL_B4000000)
   XLAT(B4000000),
+ #define XLAT_VAL_30 ((unsigned) (B4000000))
+ #define XLAT_STR_30 STRINGIFY(B4000000)
 #endif
 #if defined(EXTA) || (defined(HAVE_DECL_EXTA) && HAVE_DECL_EXTA)
   XLAT(EXTA),
+ #define XLAT_VAL_31 ((unsigned) (EXTA))
+ #define XLAT_STR_31 STRINGIFY(EXTA)
 #endif
 #if defined(EXTB) || (defined(HAVE_DECL_EXTB) && HAVE_DECL_EXTB)
   XLAT(EXTB),
+ #define XLAT_VAL_32 ((unsigned) (EXTB))
+ #define XLAT_STR_32 STRINGIFY(EXTB)
 #endif
- XLAT_END
 };
+static
+const struct xlat baud_options[1] = { {
+ .data = baud_options_xdata,
+ .size = ARRAY_SIZE(baud_options_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+#  ifdef XLAT_VAL_30
+  | XLAT_VAL_30
+#  endif
+#  ifdef XLAT_VAL_31
+  | XLAT_VAL_31
+#  endif
+#  ifdef XLAT_VAL_32
+  | XLAT_VAL_32
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+#  ifdef XLAT_STR_30
+  + sizeof(XLAT_STR_30)
+#  endif
+#  ifdef XLAT_STR_31
+  + sizeof(XLAT_STR_31)
+#  endif
+#  ifdef XLAT_STR_32
+  + sizeof(XLAT_STR_32)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
+#  undef XLAT_STR_30
+#  undef XLAT_VAL_30
+#  undef XLAT_STR_31
+#  undef XLAT_VAL_31
+#  undef XLAT_STR_32
+#  undef XLAT_VAL_32
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 110ee4d3e86fe411965a3b3c25c82083dd51a751..b099f810590c79ecf370a302cb4432a465ff483c 100644 (file)
@@ -33,14 +33,52 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat bdaddr_types[] = {
+static const struct xlat_data bdaddr_types_xdata[] = {
  [BDADDR_BREDR] = XLAT(BDADDR_BREDR),
+ #define XLAT_VAL_0 ((unsigned) (BDADDR_BREDR))
+ #define XLAT_STR_0 STRINGIFY(BDADDR_BREDR)
  [BDADDR_LE_PUBLIC] = XLAT(BDADDR_LE_PUBLIC),
+ #define XLAT_VAL_1 ((unsigned) (BDADDR_LE_PUBLIC))
+ #define XLAT_STR_1 STRINGIFY(BDADDR_LE_PUBLIC)
  [BDADDR_LE_RANDOM] = XLAT(BDADDR_LE_RANDOM),
- XLAT_END
+ #define XLAT_VAL_2 ((unsigned) (BDADDR_LE_RANDOM))
+ #define XLAT_STR_2 STRINGIFY(BDADDR_LE_RANDOM)
 };
+static
+const struct xlat bdaddr_types[1] = { {
+ .data = bdaddr_types_xdata,
+ .size = ARRAY_SIZE(bdaddr_types_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 81171dcf6421a6d76981cfc968a1aad5c1c07cb1..302de868b6473e22da08475c317ed00c073d2d4d 100644 (file)
@@ -33,16 +33,54 @@ extern const struct xlat blkpg_ops[];
 
 # else
 
+static const struct xlat_data blkpg_ops_xdata[] = {
+ [BLKPG_ADD_PARTITION] = XLAT(BLKPG_ADD_PARTITION),
+ #define XLAT_VAL_0 ((unsigned) (BLKPG_ADD_PARTITION))
+ #define XLAT_STR_0 STRINGIFY(BLKPG_ADD_PARTITION)
+ [BLKPG_DEL_PARTITION] = XLAT(BLKPG_DEL_PARTITION),
+ #define XLAT_VAL_1 ((unsigned) (BLKPG_DEL_PARTITION))
+ #define XLAT_STR_1 STRINGIFY(BLKPG_DEL_PARTITION)
+ [BLKPG_RESIZE_PARTITION] = XLAT(BLKPG_RESIZE_PARTITION),
+ #define XLAT_VAL_2 ((unsigned) (BLKPG_RESIZE_PARTITION))
+ #define XLAT_STR_2 STRINGIFY(BLKPG_RESIZE_PARTITION)
+};
 #  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
 static
 #  endif
-const struct xlat blkpg_ops[] = {
- XLAT(BLKPG_ADD_PARTITION),
- XLAT(BLKPG_DEL_PARTITION),
- XLAT(BLKPG_RESIZE_PARTITION),
- XLAT_END
-};
+const struct xlat blkpg_ops[1] = { {
+ .data = blkpg_ops_xdata,
+ .size = ARRAY_SIZE(blkpg_ops_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index fb194de5e4714ce7e2cda5546983eda155cde8b3..f4dc1e1696c2c4bd384e96d8618f1ea94162e6ee 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 BLKPG_ADD_PARTITION    1
 BLKPG_DEL_PARTITION    2
 BLKPG_RESIZE_PARTITION 3
index a0935a670fcb194652aa0d4396b72ac0cf9295fd..5a19851831a2f854a5b0568a65c1e24f274d035a 100644 (file)
@@ -250,52 +250,400 @@ extern const struct xlat block_ioctl_cmds[];
 
 # else
 
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat block_ioctl_cmds[] = {
+static const struct xlat_data block_ioctl_cmds_xdata[] = {
  XLAT(BLKROSET),
+ #define XLAT_VAL_0 ((unsigned) (BLKROSET))
+ #define XLAT_STR_0 STRINGIFY(BLKROSET)
  XLAT(BLKROGET),
+ #define XLAT_VAL_1 ((unsigned) (BLKROGET))
+ #define XLAT_STR_1 STRINGIFY(BLKROGET)
  XLAT(BLKRRPART),
+ #define XLAT_VAL_2 ((unsigned) (BLKRRPART))
+ #define XLAT_STR_2 STRINGIFY(BLKRRPART)
  XLAT(BLKGETSIZE),
+ #define XLAT_VAL_3 ((unsigned) (BLKGETSIZE))
+ #define XLAT_STR_3 STRINGIFY(BLKGETSIZE)
  XLAT(BLKFLSBUF),
+ #define XLAT_VAL_4 ((unsigned) (BLKFLSBUF))
+ #define XLAT_STR_4 STRINGIFY(BLKFLSBUF)
  XLAT(BLKRASET),
+ #define XLAT_VAL_5 ((unsigned) (BLKRASET))
+ #define XLAT_STR_5 STRINGIFY(BLKRASET)
  XLAT(BLKRAGET),
+ #define XLAT_VAL_6 ((unsigned) (BLKRAGET))
+ #define XLAT_STR_6 STRINGIFY(BLKRAGET)
  XLAT(BLKFRASET),
+ #define XLAT_VAL_7 ((unsigned) (BLKFRASET))
+ #define XLAT_STR_7 STRINGIFY(BLKFRASET)
  XLAT(BLKFRAGET),
+ #define XLAT_VAL_8 ((unsigned) (BLKFRAGET))
+ #define XLAT_STR_8 STRINGIFY(BLKFRAGET)
  XLAT(BLKSECTSET),
+ #define XLAT_VAL_9 ((unsigned) (BLKSECTSET))
+ #define XLAT_STR_9 STRINGIFY(BLKSECTSET)
  XLAT(BLKSECTGET),
+ #define XLAT_VAL_10 ((unsigned) (BLKSECTGET))
+ #define XLAT_STR_10 STRINGIFY(BLKSECTGET)
  XLAT(BLKSSZGET),
+ #define XLAT_VAL_11 ((unsigned) (BLKSSZGET))
+ #define XLAT_STR_11 STRINGIFY(BLKSSZGET)
  XLAT(BLKPG),
+ #define XLAT_VAL_12 ((unsigned) (BLKPG))
+ #define XLAT_STR_12 STRINGIFY(BLKPG)
  XLAT(BLKELVGET),
+ #define XLAT_VAL_13 ((unsigned) (BLKELVGET))
+ #define XLAT_STR_13 STRINGIFY(BLKELVGET)
  XLAT(BLKELVSET),
+ #define XLAT_VAL_14 ((unsigned) (BLKELVSET))
+ #define XLAT_STR_14 STRINGIFY(BLKELVSET)
  XLAT(BLKBSZGET),
+ #define XLAT_VAL_15 ((unsigned) (BLKBSZGET))
+ #define XLAT_STR_15 STRINGIFY(BLKBSZGET)
  XLAT(BLKBSZSET),
+ #define XLAT_VAL_16 ((unsigned) (BLKBSZSET))
+ #define XLAT_STR_16 STRINGIFY(BLKBSZSET)
  XLAT(BLKGETSIZE64),
+ #define XLAT_VAL_17 ((unsigned) (BLKGETSIZE64))
+ #define XLAT_STR_17 STRINGIFY(BLKGETSIZE64)
  XLAT(BLKTRACESETUP),
+ #define XLAT_VAL_18 ((unsigned) (BLKTRACESETUP))
+ #define XLAT_STR_18 STRINGIFY(BLKTRACESETUP)
  XLAT(BLKTRACESTART),
+ #define XLAT_VAL_19 ((unsigned) (BLKTRACESTART))
+ #define XLAT_STR_19 STRINGIFY(BLKTRACESTART)
  XLAT(BLKTRACESTOP),
+ #define XLAT_VAL_20 ((unsigned) (BLKTRACESTOP))
+ #define XLAT_STR_20 STRINGIFY(BLKTRACESTOP)
  XLAT(BLKTRACETEARDOWN),
+ #define XLAT_VAL_21 ((unsigned) (BLKTRACETEARDOWN))
+ #define XLAT_STR_21 STRINGIFY(BLKTRACETEARDOWN)
  XLAT(BLKDISCARD),
+ #define XLAT_VAL_22 ((unsigned) (BLKDISCARD))
+ #define XLAT_STR_22 STRINGIFY(BLKDISCARD)
  XLAT(BLKIOMIN),
+ #define XLAT_VAL_23 ((unsigned) (BLKIOMIN))
+ #define XLAT_STR_23 STRINGIFY(BLKIOMIN)
  XLAT(BLKIOOPT),
+ #define XLAT_VAL_24 ((unsigned) (BLKIOOPT))
+ #define XLAT_STR_24 STRINGIFY(BLKIOOPT)
  XLAT(BLKALIGNOFF),
+ #define XLAT_VAL_25 ((unsigned) (BLKALIGNOFF))
+ #define XLAT_STR_25 STRINGIFY(BLKALIGNOFF)
  XLAT(BLKPBSZGET),
+ #define XLAT_VAL_26 ((unsigned) (BLKPBSZGET))
+ #define XLAT_STR_26 STRINGIFY(BLKPBSZGET)
  XLAT(BLKDISCARDZEROES),
+ #define XLAT_VAL_27 ((unsigned) (BLKDISCARDZEROES))
+ #define XLAT_STR_27 STRINGIFY(BLKDISCARDZEROES)
  XLAT(BLKSECDISCARD),
+ #define XLAT_VAL_28 ((unsigned) (BLKSECDISCARD))
+ #define XLAT_STR_28 STRINGIFY(BLKSECDISCARD)
  XLAT(BLKROTATIONAL),
+ #define XLAT_VAL_29 ((unsigned) (BLKROTATIONAL))
+ #define XLAT_STR_29 STRINGIFY(BLKROTATIONAL)
  XLAT(BLKZEROOUT),
+ #define XLAT_VAL_30 ((unsigned) (BLKZEROOUT))
+ #define XLAT_STR_30 STRINGIFY(BLKZEROOUT)
 
 
 
  XLAT(BLKDAXGET),
+ #define XLAT_VAL_31 ((unsigned) (BLKDAXGET))
+ #define XLAT_STR_31 STRINGIFY(BLKDAXGET)
 
 
  XLAT(BLKGETZONESZ),
+ #define XLAT_VAL_32 ((unsigned) (BLKGETZONESZ))
+ #define XLAT_STR_32 STRINGIFY(BLKGETZONESZ)
  XLAT(BLKGETNRZONES),
- XLAT_END
+ #define XLAT_VAL_33 ((unsigned) (BLKGETNRZONES))
+ #define XLAT_STR_33 STRINGIFY(BLKGETNRZONES)
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat block_ioctl_cmds[1] = { {
+ .data = block_ioctl_cmds_xdata,
+ .size = ARRAY_SIZE(block_ioctl_cmds_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+#  ifdef XLAT_VAL_30
+  | XLAT_VAL_30
+#  endif
+#  ifdef XLAT_VAL_31
+  | XLAT_VAL_31
+#  endif
+#  ifdef XLAT_VAL_32
+  | XLAT_VAL_32
+#  endif
+#  ifdef XLAT_VAL_33
+  | XLAT_VAL_33
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+#  ifdef XLAT_STR_30
+  + sizeof(XLAT_STR_30)
+#  endif
+#  ifdef XLAT_STR_31
+  + sizeof(XLAT_STR_31)
+#  endif
+#  ifdef XLAT_STR_32
+  + sizeof(XLAT_STR_32)
+#  endif
+#  ifdef XLAT_STR_33
+  + sizeof(XLAT_STR_33)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
+#  undef XLAT_STR_30
+#  undef XLAT_VAL_30
+#  undef XLAT_STR_31
+#  undef XLAT_VAL_31
+#  undef XLAT_STR_32
+#  undef XLAT_VAL_32
+#  undef XLAT_STR_33
+#  undef XLAT_VAL_33
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 654e5aad721bfdf9a7f9d414573b0af79e2c6e9b..2d72456d27a1ce8beddf8286fc9d3e06294502f1 100644 (file)
@@ -82,22 +82,129 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat bluetooth_l2_cid[] = {
-
+static const struct xlat_data bluetooth_l2_cid_xdata[] = {
  XLAT(L2CAP_CID_SIGNALING),
+ #define XLAT_VAL_0 ((unsigned) (L2CAP_CID_SIGNALING))
+ #define XLAT_STR_0 STRINGIFY(L2CAP_CID_SIGNALING)
  XLAT(L2CAP_CID_CONN_LESS),
+ #define XLAT_VAL_1 ((unsigned) (L2CAP_CID_CONN_LESS))
+ #define XLAT_STR_1 STRINGIFY(L2CAP_CID_CONN_LESS)
  XLAT(L2CAP_CID_A2MP),
+ #define XLAT_VAL_2 ((unsigned) (L2CAP_CID_A2MP))
+ #define XLAT_STR_2 STRINGIFY(L2CAP_CID_A2MP)
  XLAT(L2CAP_CID_ATT),
+ #define XLAT_VAL_3 ((unsigned) (L2CAP_CID_ATT))
+ #define XLAT_STR_3 STRINGIFY(L2CAP_CID_ATT)
  XLAT(L2CAP_CID_LE_SIGNALING),
+ #define XLAT_VAL_4 ((unsigned) (L2CAP_CID_LE_SIGNALING))
+ #define XLAT_STR_4 STRINGIFY(L2CAP_CID_LE_SIGNALING)
  XLAT(L2CAP_CID_SMP),
+ #define XLAT_VAL_5 ((unsigned) (L2CAP_CID_SMP))
+ #define XLAT_STR_5 STRINGIFY(L2CAP_CID_SMP)
  XLAT(L2CAP_CID_SMP_BREDR),
+ #define XLAT_VAL_6 ((unsigned) (L2CAP_CID_SMP_BREDR))
+ #define XLAT_STR_6 STRINGIFY(L2CAP_CID_SMP_BREDR)
  XLAT(L2CAP_CID_DYN_START),
+ #define XLAT_VAL_7 ((unsigned) (L2CAP_CID_DYN_START))
+ #define XLAT_STR_7 STRINGIFY(L2CAP_CID_DYN_START)
  XLAT(L2CAP_CID_LE_DYN_END),
+ #define XLAT_VAL_8 ((unsigned) (L2CAP_CID_LE_DYN_END))
+ #define XLAT_STR_8 STRINGIFY(L2CAP_CID_LE_DYN_END)
  XLAT(L2CAP_CID_DYN_END),
- XLAT_END
+ #define XLAT_VAL_9 ((unsigned) (L2CAP_CID_DYN_END))
+ #define XLAT_STR_9 STRINGIFY(L2CAP_CID_DYN_END)
 };
+static
+const struct xlat bluetooth_l2_cid[1] = { {
+ .data = bluetooth_l2_cid_xdata,
+ .size = ARRAY_SIZE(bluetooth_l2_cid_xdata),
+ .type = XT_SORTED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 5fd8fd172e60760b605c12220c3a63ffdb67a311..e2b47f73281808c356a25638ae3139c0d179379a 100644 (file)
@@ -1,4 +1,4 @@
-/* sort -k2,2 */
+#sorted sort -k2,2
 L2CAP_CID_SIGNALING    0x0001
 L2CAP_CID_CONN_LESS    0x0002
 L2CAP_CID_A2MP         0x0003
index 358316a5df46ac81ddfdba848426eb21a7e82652..d1b2664ad7e0f96bd59da10c3a6bae538c2148c6 100644 (file)
@@ -75,21 +75,118 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat bluetooth_l2_psm[] = {
-
+static const struct xlat_data bluetooth_l2_psm_xdata[] = {
  XLAT(L2CAP_PSM_SDP),
+ #define XLAT_VAL_0 ((unsigned) (L2CAP_PSM_SDP))
+ #define XLAT_STR_0 STRINGIFY(L2CAP_PSM_SDP)
  XLAT(L2CAP_PSM_RFCOMM),
+ #define XLAT_VAL_1 ((unsigned) (L2CAP_PSM_RFCOMM))
+ #define XLAT_STR_1 STRINGIFY(L2CAP_PSM_RFCOMM)
  XLAT(L2CAP_PSM_3DSP),
+ #define XLAT_VAL_2 ((unsigned) (L2CAP_PSM_3DSP))
+ #define XLAT_STR_2 STRINGIFY(L2CAP_PSM_3DSP)
  XLAT(L2CAP_PSM_IPSP),
+ #define XLAT_VAL_3 ((unsigned) (L2CAP_PSM_IPSP))
+ #define XLAT_STR_3 STRINGIFY(L2CAP_PSM_IPSP)
  XLAT(L2CAP_PSM_LE_DYN_START),
+ #define XLAT_VAL_4 ((unsigned) (L2CAP_PSM_LE_DYN_START))
+ #define XLAT_STR_4 STRINGIFY(L2CAP_PSM_LE_DYN_START)
  XLAT(L2CAP_PSM_LE_DYN_END),
+ #define XLAT_VAL_5 ((unsigned) (L2CAP_PSM_LE_DYN_END))
+ #define XLAT_STR_5 STRINGIFY(L2CAP_PSM_LE_DYN_END)
  XLAT(L2CAP_PSM_DYN_START),
+ #define XLAT_VAL_6 ((unsigned) (L2CAP_PSM_DYN_START))
+ #define XLAT_STR_6 STRINGIFY(L2CAP_PSM_DYN_START)
  XLAT(L2CAP_PSM_AUTO_END),
+ #define XLAT_VAL_7 ((unsigned) (L2CAP_PSM_AUTO_END))
+ #define XLAT_STR_7 STRINGIFY(L2CAP_PSM_AUTO_END)
  XLAT(L2CAP_PSM_DYN_END),
- XLAT_END
+ #define XLAT_VAL_8 ((unsigned) (L2CAP_PSM_DYN_END))
+ #define XLAT_STR_8 STRINGIFY(L2CAP_PSM_DYN_END)
 };
+static
+const struct xlat bluetooth_l2_psm[1] = { {
+ .data = bluetooth_l2_psm_xdata,
+ .size = ARRAY_SIZE(bluetooth_l2_psm_xdata),
+ .type = XT_SORTED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index afac026aaad1aabb19256b9fd4ce2d13cbe592e5..f83370432f3d70df837672bf9606aefc0736c522 100644 (file)
@@ -1,4 +1,4 @@
-/* sort -k2,2 */
+#sorted sort -k2,2
 L2CAP_PSM_SDP           0x0001
 L2CAP_PSM_RFCOMM        0x0003
 L2CAP_PSM_3DSP          0x0021
index d868f9c84fa50929fc46e0e7599c92b9731dc9ef..e214b9835244652b18b70ab1c555e0aaa44634d3 100644 (file)
@@ -19,12 +19,30 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat bootflags1[] = {
+static const struct xlat_data bootflags1_xdata[] = {
  XLAT(LINUX_REBOOT_MAGIC1),
- XLAT_END
+ #define XLAT_VAL_0 ((unsigned) (LINUX_REBOOT_MAGIC1))
+ #define XLAT_STR_0 STRINGIFY(LINUX_REBOOT_MAGIC1)
 };
-
+static
+const struct xlat bootflags1[1] = { {
+ .data = bootflags1_xdata,
+ .size = ARRAY_SIZE(bootflags1_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 6560af3e6b096f40afc7a016abfbc4ee1b3f834c..56911024dacb38a7b5c16b345be08ec32e107c6a 100644 (file)
@@ -40,15 +40,63 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat bootflags2[] = {
+static const struct xlat_data bootflags2_xdata[] = {
  XLAT(LINUX_REBOOT_MAGIC2),
+ #define XLAT_VAL_0 ((unsigned) (LINUX_REBOOT_MAGIC2))
+ #define XLAT_STR_0 STRINGIFY(LINUX_REBOOT_MAGIC2)
  XLAT(LINUX_REBOOT_MAGIC2A),
+ #define XLAT_VAL_1 ((unsigned) (LINUX_REBOOT_MAGIC2A))
+ #define XLAT_STR_1 STRINGIFY(LINUX_REBOOT_MAGIC2A)
  XLAT(LINUX_REBOOT_MAGIC2B),
+ #define XLAT_VAL_2 ((unsigned) (LINUX_REBOOT_MAGIC2B))
+ #define XLAT_STR_2 STRINGIFY(LINUX_REBOOT_MAGIC2B)
  XLAT(LINUX_REBOOT_MAGIC2C),
- XLAT_END
+ #define XLAT_VAL_3 ((unsigned) (LINUX_REBOOT_MAGIC2C))
+ #define XLAT_STR_3 STRINGIFY(LINUX_REBOOT_MAGIC2C)
 };
+static
+const struct xlat bootflags2[1] = { {
+ .data = bootflags2_xdata,
+ .size = ARRAY_SIZE(bootflags2_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index e11a06f658e919f0e5b3214bdaf6ab6e1f922812..a65ed580e63dba2df21638ea3ec97bbfb2b901b6 100644 (file)
@@ -68,19 +68,107 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat bootflags3[] = {
+static const struct xlat_data bootflags3_xdata[] = {
  XLAT(LINUX_REBOOT_CMD_RESTART),
+ #define XLAT_VAL_0 ((unsigned) (LINUX_REBOOT_CMD_RESTART))
+ #define XLAT_STR_0 STRINGIFY(LINUX_REBOOT_CMD_RESTART)
  XLAT(LINUX_REBOOT_CMD_HALT),
+ #define XLAT_VAL_1 ((unsigned) (LINUX_REBOOT_CMD_HALT))
+ #define XLAT_STR_1 STRINGIFY(LINUX_REBOOT_CMD_HALT)
  XLAT(LINUX_REBOOT_CMD_CAD_ON),
+ #define XLAT_VAL_2 ((unsigned) (LINUX_REBOOT_CMD_CAD_ON))
+ #define XLAT_STR_2 STRINGIFY(LINUX_REBOOT_CMD_CAD_ON)
  XLAT(LINUX_REBOOT_CMD_CAD_OFF),
+ #define XLAT_VAL_3 ((unsigned) (LINUX_REBOOT_CMD_CAD_OFF))
+ #define XLAT_STR_3 STRINGIFY(LINUX_REBOOT_CMD_CAD_OFF)
  XLAT(LINUX_REBOOT_CMD_POWER_OFF),
+ #define XLAT_VAL_4 ((unsigned) (LINUX_REBOOT_CMD_POWER_OFF))
+ #define XLAT_STR_4 STRINGIFY(LINUX_REBOOT_CMD_POWER_OFF)
  XLAT(LINUX_REBOOT_CMD_RESTART2),
+ #define XLAT_VAL_5 ((unsigned) (LINUX_REBOOT_CMD_RESTART2))
+ #define XLAT_STR_5 STRINGIFY(LINUX_REBOOT_CMD_RESTART2)
  XLAT(LINUX_REBOOT_CMD_SW_SUSPEND),
+ #define XLAT_VAL_6 ((unsigned) (LINUX_REBOOT_CMD_SW_SUSPEND))
+ #define XLAT_STR_6 STRINGIFY(LINUX_REBOOT_CMD_SW_SUSPEND)
  XLAT(LINUX_REBOOT_CMD_KEXEC),
- XLAT_END
+ #define XLAT_VAL_7 ((unsigned) (LINUX_REBOOT_CMD_KEXEC))
+ #define XLAT_STR_7 STRINGIFY(LINUX_REBOOT_CMD_KEXEC)
 };
+static
+const struct xlat bootflags3[1] = { {
+ .data = bootflags3_xdata,
+ .size = ARRAY_SIZE(bootflags3_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 753d8f16ab351b445f7cc64f56f47e3a818a24b3..f35f4b4d07bd40db18316448bbcf2ffd247a1751 100644 (file)
@@ -5,17 +5,24 @@
 
 #if defined(BPF_F_ALLOW_OVERRIDE) || (defined(HAVE_DECL_BPF_F_ALLOW_OVERRIDE) && HAVE_DECL_BPF_F_ALLOW_OVERRIDE)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((BPF_F_ALLOW_OVERRIDE) == (1), "BPF_F_ALLOW_OVERRIDE != 1");
+static_assert((BPF_F_ALLOW_OVERRIDE) == (1U), "BPF_F_ALLOW_OVERRIDE != 1U");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define BPF_F_ALLOW_OVERRIDE 1
+# define BPF_F_ALLOW_OVERRIDE 1U
 #endif
 #if defined(BPF_F_ALLOW_MULTI) || (defined(HAVE_DECL_BPF_F_ALLOW_MULTI) && HAVE_DECL_BPF_F_ALLOW_MULTI)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((BPF_F_ALLOW_MULTI) == (2), "BPF_F_ALLOW_MULTI != 2");
+static_assert((BPF_F_ALLOW_MULTI) == ((1U << 1)), "BPF_F_ALLOW_MULTI != (1U << 1)");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define BPF_F_ALLOW_MULTI 2
+# define BPF_F_ALLOW_MULTI (1U << 1)
+#endif
+#if defined(BPF_F_REPLACE) || (defined(HAVE_DECL_BPF_F_REPLACE) && HAVE_DECL_BPF_F_REPLACE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_F_REPLACE) == ((1U << 2)), "BPF_F_REPLACE != (1U << 2)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_F_REPLACE (1U << 2)
 #endif
 
 #ifndef XLAT_MACROS_ONLY
@@ -26,13 +33,52 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat bpf_attach_flags[] = {
+static const struct xlat_data bpf_attach_flags_xdata[] = {
  XLAT(BPF_F_ALLOW_OVERRIDE),
+ #define XLAT_VAL_0 ((unsigned) (BPF_F_ALLOW_OVERRIDE))
+ #define XLAT_STR_0 STRINGIFY(BPF_F_ALLOW_OVERRIDE)
  XLAT(BPF_F_ALLOW_MULTI),
- XLAT_END
+ #define XLAT_VAL_1 ((unsigned) (BPF_F_ALLOW_MULTI))
+ #define XLAT_STR_1 STRINGIFY(BPF_F_ALLOW_MULTI)
+ XLAT(BPF_F_REPLACE),
+ #define XLAT_VAL_2 ((unsigned) (BPF_F_REPLACE))
+ #define XLAT_STR_2 STRINGIFY(BPF_F_REPLACE)
 };
+static
+const struct xlat bpf_attach_flags[1] = { {
+ .data = bpf_attach_flags_xdata,
+ .size = ARRAY_SIZE(bpf_attach_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index a67c02b632f14da010a3af69272f5ff9bceee2a1..cee8d1918e3a877e3490f26376a21c9f446148ac 100644 (file)
@@ -1,2 +1,3 @@
-BPF_F_ALLOW_OVERRIDE   1
-BPF_F_ALLOW_MULTI      2
+BPF_F_ALLOW_OVERRIDE   1U
+BPF_F_ALLOW_MULTI      (1U << 1)
+BPF_F_REPLACE          (1U << 2)
index d2fe008e6cdaf7677a0355cc71904797f0b80c73..bbcb333525d42a865ec4cef25d595a0139536b8d 100644 (file)
@@ -129,6 +129,146 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define BPF_FLOW_DISSECTOR 17
 #endif
+#if defined(BPF_CGROUP_SYSCTL) || (defined(HAVE_DECL_BPF_CGROUP_SYSCTL) && HAVE_DECL_BPF_CGROUP_SYSCTL)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_CGROUP_SYSCTL) == (18), "BPF_CGROUP_SYSCTL != 18");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_CGROUP_SYSCTL 18
+#endif
+#if defined(BPF_CGROUP_UDP4_RECVMSG) || (defined(HAVE_DECL_BPF_CGROUP_UDP4_RECVMSG) && HAVE_DECL_BPF_CGROUP_UDP4_RECVMSG)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_CGROUP_UDP4_RECVMSG) == (19), "BPF_CGROUP_UDP4_RECVMSG != 19");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_CGROUP_UDP4_RECVMSG 19
+#endif
+#if defined(BPF_CGROUP_UDP6_RECVMSG) || (defined(HAVE_DECL_BPF_CGROUP_UDP6_RECVMSG) && HAVE_DECL_BPF_CGROUP_UDP6_RECVMSG)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_CGROUP_UDP6_RECVMSG) == (20), "BPF_CGROUP_UDP6_RECVMSG != 20");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_CGROUP_UDP6_RECVMSG 20
+#endif
+#if defined(BPF_CGROUP_GETSOCKOPT) || (defined(HAVE_DECL_BPF_CGROUP_GETSOCKOPT) && HAVE_DECL_BPF_CGROUP_GETSOCKOPT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_CGROUP_GETSOCKOPT) == (21), "BPF_CGROUP_GETSOCKOPT != 21");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_CGROUP_GETSOCKOPT 21
+#endif
+#if defined(BPF_CGROUP_SETSOCKOPT) || (defined(HAVE_DECL_BPF_CGROUP_SETSOCKOPT) && HAVE_DECL_BPF_CGROUP_SETSOCKOPT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_CGROUP_SETSOCKOPT) == (22), "BPF_CGROUP_SETSOCKOPT != 22");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_CGROUP_SETSOCKOPT 22
+#endif
+#if defined(BPF_TRACE_RAW_TP) || (defined(HAVE_DECL_BPF_TRACE_RAW_TP) && HAVE_DECL_BPF_TRACE_RAW_TP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_TRACE_RAW_TP) == (23), "BPF_TRACE_RAW_TP != 23");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_TRACE_RAW_TP 23
+#endif
+#if defined(BPF_TRACE_FENTRY) || (defined(HAVE_DECL_BPF_TRACE_FENTRY) && HAVE_DECL_BPF_TRACE_FENTRY)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_TRACE_FENTRY) == (24), "BPF_TRACE_FENTRY != 24");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_TRACE_FENTRY 24
+#endif
+#if defined(BPF_TRACE_FEXIT) || (defined(HAVE_DECL_BPF_TRACE_FEXIT) && HAVE_DECL_BPF_TRACE_FEXIT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_TRACE_FEXIT) == (25), "BPF_TRACE_FEXIT != 25");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_TRACE_FEXIT 25
+#endif
+#if defined(BPF_MODIFY_RETURN) || (defined(HAVE_DECL_BPF_MODIFY_RETURN) && HAVE_DECL_BPF_MODIFY_RETURN)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_MODIFY_RETURN) == (26), "BPF_MODIFY_RETURN != 26");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_MODIFY_RETURN 26
+#endif
+#if defined(BPF_LSM_MAC) || (defined(HAVE_DECL_BPF_LSM_MAC) && HAVE_DECL_BPF_LSM_MAC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_LSM_MAC) == (27), "BPF_LSM_MAC != 27");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_LSM_MAC 27
+#endif
+#if defined(BPF_TRACE_ITER) || (defined(HAVE_DECL_BPF_TRACE_ITER) && HAVE_DECL_BPF_TRACE_ITER)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_TRACE_ITER) == (28), "BPF_TRACE_ITER != 28");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_TRACE_ITER 28
+#endif
+#if defined(BPF_CGROUP_INET4_GETPEERNAME) || (defined(HAVE_DECL_BPF_CGROUP_INET4_GETPEERNAME) && HAVE_DECL_BPF_CGROUP_INET4_GETPEERNAME)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_CGROUP_INET4_GETPEERNAME) == (29), "BPF_CGROUP_INET4_GETPEERNAME != 29");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_CGROUP_INET4_GETPEERNAME 29
+#endif
+#if defined(BPF_CGROUP_INET6_GETPEERNAME) || (defined(HAVE_DECL_BPF_CGROUP_INET6_GETPEERNAME) && HAVE_DECL_BPF_CGROUP_INET6_GETPEERNAME)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_CGROUP_INET6_GETPEERNAME) == (30), "BPF_CGROUP_INET6_GETPEERNAME != 30");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_CGROUP_INET6_GETPEERNAME 30
+#endif
+#if defined(BPF_CGROUP_INET4_GETSOCKNAME) || (defined(HAVE_DECL_BPF_CGROUP_INET4_GETSOCKNAME) && HAVE_DECL_BPF_CGROUP_INET4_GETSOCKNAME)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_CGROUP_INET4_GETSOCKNAME) == (31), "BPF_CGROUP_INET4_GETSOCKNAME != 31");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_CGROUP_INET4_GETSOCKNAME 31
+#endif
+#if defined(BPF_CGROUP_INET6_GETSOCKNAME) || (defined(HAVE_DECL_BPF_CGROUP_INET6_GETSOCKNAME) && HAVE_DECL_BPF_CGROUP_INET6_GETSOCKNAME)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_CGROUP_INET6_GETSOCKNAME) == (32), "BPF_CGROUP_INET6_GETSOCKNAME != 32");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_CGROUP_INET6_GETSOCKNAME 32
+#endif
+#if defined(BPF_XDP_DEVMAP) || (defined(HAVE_DECL_BPF_XDP_DEVMAP) && HAVE_DECL_BPF_XDP_DEVMAP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_XDP_DEVMAP) == (33), "BPF_XDP_DEVMAP != 33");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_XDP_DEVMAP 33
+#endif
+#if defined(BPF_CGROUP_INET_SOCK_RELEASE) || (defined(HAVE_DECL_BPF_CGROUP_INET_SOCK_RELEASE) && HAVE_DECL_BPF_CGROUP_INET_SOCK_RELEASE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_CGROUP_INET_SOCK_RELEASE) == (34), "BPF_CGROUP_INET_SOCK_RELEASE != 34");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_CGROUP_INET_SOCK_RELEASE 34
+#endif
+#if defined(BPF_XDP_CPUMAP) || (defined(HAVE_DECL_BPF_XDP_CPUMAP) && HAVE_DECL_BPF_XDP_CPUMAP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_XDP_CPUMAP) == (35), "BPF_XDP_CPUMAP != 35");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_XDP_CPUMAP 35
+#endif
+#if defined(BPF_SK_LOOKUP) || (defined(HAVE_DECL_BPF_SK_LOOKUP) && HAVE_DECL_BPF_SK_LOOKUP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_SK_LOOKUP) == (36), "BPF_SK_LOOKUP != 36");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_SK_LOOKUP 36
+#endif
+#if defined(BPF_XDP) || (defined(HAVE_DECL_BPF_XDP) && HAVE_DECL_BPF_XDP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_XDP) == (37), "BPF_XDP != 37");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_XDP 37
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
@@ -138,29 +278,437 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat bpf_attach_type[] = {
+static const struct xlat_data bpf_attach_type_xdata[] = {
  [BPF_CGROUP_INET_INGRESS] = XLAT(BPF_CGROUP_INET_INGRESS),
+ #define XLAT_VAL_0 ((unsigned) (BPF_CGROUP_INET_INGRESS))
+ #define XLAT_STR_0 STRINGIFY(BPF_CGROUP_INET_INGRESS)
  [BPF_CGROUP_INET_EGRESS] = XLAT(BPF_CGROUP_INET_EGRESS),
+ #define XLAT_VAL_1 ((unsigned) (BPF_CGROUP_INET_EGRESS))
+ #define XLAT_STR_1 STRINGIFY(BPF_CGROUP_INET_EGRESS)
  [BPF_CGROUP_INET_SOCK_CREATE] = XLAT(BPF_CGROUP_INET_SOCK_CREATE),
+ #define XLAT_VAL_2 ((unsigned) (BPF_CGROUP_INET_SOCK_CREATE))
+ #define XLAT_STR_2 STRINGIFY(BPF_CGROUP_INET_SOCK_CREATE)
  [BPF_CGROUP_SOCK_OPS] = XLAT(BPF_CGROUP_SOCK_OPS),
+ #define XLAT_VAL_3 ((unsigned) (BPF_CGROUP_SOCK_OPS))
+ #define XLAT_STR_3 STRINGIFY(BPF_CGROUP_SOCK_OPS)
  [BPF_SK_SKB_STREAM_PARSER] = XLAT(BPF_SK_SKB_STREAM_PARSER),
+ #define XLAT_VAL_4 ((unsigned) (BPF_SK_SKB_STREAM_PARSER))
+ #define XLAT_STR_4 STRINGIFY(BPF_SK_SKB_STREAM_PARSER)
  [BPF_SK_SKB_STREAM_VERDICT] = XLAT(BPF_SK_SKB_STREAM_VERDICT),
+ #define XLAT_VAL_5 ((unsigned) (BPF_SK_SKB_STREAM_VERDICT))
+ #define XLAT_STR_5 STRINGIFY(BPF_SK_SKB_STREAM_VERDICT)
  [BPF_CGROUP_DEVICE] = XLAT(BPF_CGROUP_DEVICE),
+ #define XLAT_VAL_6 ((unsigned) (BPF_CGROUP_DEVICE))
+ #define XLAT_STR_6 STRINGIFY(BPF_CGROUP_DEVICE)
  [BPF_SK_MSG_VERDICT] = XLAT(BPF_SK_MSG_VERDICT),
+ #define XLAT_VAL_7 ((unsigned) (BPF_SK_MSG_VERDICT))
+ #define XLAT_STR_7 STRINGIFY(BPF_SK_MSG_VERDICT)
  [BPF_CGROUP_INET4_BIND] = XLAT(BPF_CGROUP_INET4_BIND),
+ #define XLAT_VAL_8 ((unsigned) (BPF_CGROUP_INET4_BIND))
+ #define XLAT_STR_8 STRINGIFY(BPF_CGROUP_INET4_BIND)
  [BPF_CGROUP_INET6_BIND] = XLAT(BPF_CGROUP_INET6_BIND),
+ #define XLAT_VAL_9 ((unsigned) (BPF_CGROUP_INET6_BIND))
+ #define XLAT_STR_9 STRINGIFY(BPF_CGROUP_INET6_BIND)
  [BPF_CGROUP_INET4_CONNECT] = XLAT(BPF_CGROUP_INET4_CONNECT),
+ #define XLAT_VAL_10 ((unsigned) (BPF_CGROUP_INET4_CONNECT))
+ #define XLAT_STR_10 STRINGIFY(BPF_CGROUP_INET4_CONNECT)
  [BPF_CGROUP_INET6_CONNECT] = XLAT(BPF_CGROUP_INET6_CONNECT),
+ #define XLAT_VAL_11 ((unsigned) (BPF_CGROUP_INET6_CONNECT))
+ #define XLAT_STR_11 STRINGIFY(BPF_CGROUP_INET6_CONNECT)
  [BPF_CGROUP_INET4_POST_BIND] = XLAT(BPF_CGROUP_INET4_POST_BIND),
+ #define XLAT_VAL_12 ((unsigned) (BPF_CGROUP_INET4_POST_BIND))
+ #define XLAT_STR_12 STRINGIFY(BPF_CGROUP_INET4_POST_BIND)
  [BPF_CGROUP_INET6_POST_BIND] = XLAT(BPF_CGROUP_INET6_POST_BIND),
+ #define XLAT_VAL_13 ((unsigned) (BPF_CGROUP_INET6_POST_BIND))
+ #define XLAT_STR_13 STRINGIFY(BPF_CGROUP_INET6_POST_BIND)
  [BPF_CGROUP_UDP4_SENDMSG] = XLAT(BPF_CGROUP_UDP4_SENDMSG),
+ #define XLAT_VAL_14 ((unsigned) (BPF_CGROUP_UDP4_SENDMSG))
+ #define XLAT_STR_14 STRINGIFY(BPF_CGROUP_UDP4_SENDMSG)
  [BPF_CGROUP_UDP6_SENDMSG] = XLAT(BPF_CGROUP_UDP6_SENDMSG),
+ #define XLAT_VAL_15 ((unsigned) (BPF_CGROUP_UDP6_SENDMSG))
+ #define XLAT_STR_15 STRINGIFY(BPF_CGROUP_UDP6_SENDMSG)
  [BPF_LIRC_MODE2] = XLAT(BPF_LIRC_MODE2),
+ #define XLAT_VAL_16 ((unsigned) (BPF_LIRC_MODE2))
+ #define XLAT_STR_16 STRINGIFY(BPF_LIRC_MODE2)
  [BPF_FLOW_DISSECTOR] = XLAT(BPF_FLOW_DISSECTOR),
- XLAT_END
+ #define XLAT_VAL_17 ((unsigned) (BPF_FLOW_DISSECTOR))
+ #define XLAT_STR_17 STRINGIFY(BPF_FLOW_DISSECTOR)
+ [BPF_CGROUP_SYSCTL] = XLAT(BPF_CGROUP_SYSCTL),
+ #define XLAT_VAL_18 ((unsigned) (BPF_CGROUP_SYSCTL))
+ #define XLAT_STR_18 STRINGIFY(BPF_CGROUP_SYSCTL)
+ [BPF_CGROUP_UDP4_RECVMSG] = XLAT(BPF_CGROUP_UDP4_RECVMSG),
+ #define XLAT_VAL_19 ((unsigned) (BPF_CGROUP_UDP4_RECVMSG))
+ #define XLAT_STR_19 STRINGIFY(BPF_CGROUP_UDP4_RECVMSG)
+ [BPF_CGROUP_UDP6_RECVMSG] = XLAT(BPF_CGROUP_UDP6_RECVMSG),
+ #define XLAT_VAL_20 ((unsigned) (BPF_CGROUP_UDP6_RECVMSG))
+ #define XLAT_STR_20 STRINGIFY(BPF_CGROUP_UDP6_RECVMSG)
+ [BPF_CGROUP_GETSOCKOPT] = XLAT(BPF_CGROUP_GETSOCKOPT),
+ #define XLAT_VAL_21 ((unsigned) (BPF_CGROUP_GETSOCKOPT))
+ #define XLAT_STR_21 STRINGIFY(BPF_CGROUP_GETSOCKOPT)
+ [BPF_CGROUP_SETSOCKOPT] = XLAT(BPF_CGROUP_SETSOCKOPT),
+ #define XLAT_VAL_22 ((unsigned) (BPF_CGROUP_SETSOCKOPT))
+ #define XLAT_STR_22 STRINGIFY(BPF_CGROUP_SETSOCKOPT)
+ [BPF_TRACE_RAW_TP] = XLAT(BPF_TRACE_RAW_TP),
+ #define XLAT_VAL_23 ((unsigned) (BPF_TRACE_RAW_TP))
+ #define XLAT_STR_23 STRINGIFY(BPF_TRACE_RAW_TP)
+ [BPF_TRACE_FENTRY] = XLAT(BPF_TRACE_FENTRY),
+ #define XLAT_VAL_24 ((unsigned) (BPF_TRACE_FENTRY))
+ #define XLAT_STR_24 STRINGIFY(BPF_TRACE_FENTRY)
+ [BPF_TRACE_FEXIT] = XLAT(BPF_TRACE_FEXIT),
+ #define XLAT_VAL_25 ((unsigned) (BPF_TRACE_FEXIT))
+ #define XLAT_STR_25 STRINGIFY(BPF_TRACE_FEXIT)
+ [BPF_MODIFY_RETURN] = XLAT(BPF_MODIFY_RETURN),
+ #define XLAT_VAL_26 ((unsigned) (BPF_MODIFY_RETURN))
+ #define XLAT_STR_26 STRINGIFY(BPF_MODIFY_RETURN)
+ [BPF_LSM_MAC] = XLAT(BPF_LSM_MAC),
+ #define XLAT_VAL_27 ((unsigned) (BPF_LSM_MAC))
+ #define XLAT_STR_27 STRINGIFY(BPF_LSM_MAC)
+ [BPF_TRACE_ITER] = XLAT(BPF_TRACE_ITER),
+ #define XLAT_VAL_28 ((unsigned) (BPF_TRACE_ITER))
+ #define XLAT_STR_28 STRINGIFY(BPF_TRACE_ITER)
+ [BPF_CGROUP_INET4_GETPEERNAME] = XLAT(BPF_CGROUP_INET4_GETPEERNAME),
+ #define XLAT_VAL_29 ((unsigned) (BPF_CGROUP_INET4_GETPEERNAME))
+ #define XLAT_STR_29 STRINGIFY(BPF_CGROUP_INET4_GETPEERNAME)
+ [BPF_CGROUP_INET6_GETPEERNAME] = XLAT(BPF_CGROUP_INET6_GETPEERNAME),
+ #define XLAT_VAL_30 ((unsigned) (BPF_CGROUP_INET6_GETPEERNAME))
+ #define XLAT_STR_30 STRINGIFY(BPF_CGROUP_INET6_GETPEERNAME)
+ [BPF_CGROUP_INET4_GETSOCKNAME] = XLAT(BPF_CGROUP_INET4_GETSOCKNAME),
+ #define XLAT_VAL_31 ((unsigned) (BPF_CGROUP_INET4_GETSOCKNAME))
+ #define XLAT_STR_31 STRINGIFY(BPF_CGROUP_INET4_GETSOCKNAME)
+ [BPF_CGROUP_INET6_GETSOCKNAME] = XLAT(BPF_CGROUP_INET6_GETSOCKNAME),
+ #define XLAT_VAL_32 ((unsigned) (BPF_CGROUP_INET6_GETSOCKNAME))
+ #define XLAT_STR_32 STRINGIFY(BPF_CGROUP_INET6_GETSOCKNAME)
+ [BPF_XDP_DEVMAP] = XLAT(BPF_XDP_DEVMAP),
+ #define XLAT_VAL_33 ((unsigned) (BPF_XDP_DEVMAP))
+ #define XLAT_STR_33 STRINGIFY(BPF_XDP_DEVMAP)
+ [BPF_CGROUP_INET_SOCK_RELEASE] = XLAT(BPF_CGROUP_INET_SOCK_RELEASE),
+ #define XLAT_VAL_34 ((unsigned) (BPF_CGROUP_INET_SOCK_RELEASE))
+ #define XLAT_STR_34 STRINGIFY(BPF_CGROUP_INET_SOCK_RELEASE)
+ [BPF_XDP_CPUMAP] = XLAT(BPF_XDP_CPUMAP),
+ #define XLAT_VAL_35 ((unsigned) (BPF_XDP_CPUMAP))
+ #define XLAT_STR_35 STRINGIFY(BPF_XDP_CPUMAP)
+ [BPF_SK_LOOKUP] = XLAT(BPF_SK_LOOKUP),
+ #define XLAT_VAL_36 ((unsigned) (BPF_SK_LOOKUP))
+ #define XLAT_STR_36 STRINGIFY(BPF_SK_LOOKUP)
+ [BPF_XDP] = XLAT(BPF_XDP),
+ #define XLAT_VAL_37 ((unsigned) (BPF_XDP))
+ #define XLAT_STR_37 STRINGIFY(BPF_XDP)
 };
+static
+const struct xlat bpf_attach_type[1] = { {
+ .data = bpf_attach_type_xdata,
+ .size = ARRAY_SIZE(bpf_attach_type_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+#  ifdef XLAT_VAL_30
+  | XLAT_VAL_30
+#  endif
+#  ifdef XLAT_VAL_31
+  | XLAT_VAL_31
+#  endif
+#  ifdef XLAT_VAL_32
+  | XLAT_VAL_32
+#  endif
+#  ifdef XLAT_VAL_33
+  | XLAT_VAL_33
+#  endif
+#  ifdef XLAT_VAL_34
+  | XLAT_VAL_34
+#  endif
+#  ifdef XLAT_VAL_35
+  | XLAT_VAL_35
+#  endif
+#  ifdef XLAT_VAL_36
+  | XLAT_VAL_36
+#  endif
+#  ifdef XLAT_VAL_37
+  | XLAT_VAL_37
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+#  ifdef XLAT_STR_30
+  + sizeof(XLAT_STR_30)
+#  endif
+#  ifdef XLAT_STR_31
+  + sizeof(XLAT_STR_31)
+#  endif
+#  ifdef XLAT_STR_32
+  + sizeof(XLAT_STR_32)
+#  endif
+#  ifdef XLAT_STR_33
+  + sizeof(XLAT_STR_33)
+#  endif
+#  ifdef XLAT_STR_34
+  + sizeof(XLAT_STR_34)
+#  endif
+#  ifdef XLAT_STR_35
+  + sizeof(XLAT_STR_35)
+#  endif
+#  ifdef XLAT_STR_36
+  + sizeof(XLAT_STR_36)
+#  endif
+#  ifdef XLAT_STR_37
+  + sizeof(XLAT_STR_37)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
+#  undef XLAT_STR_30
+#  undef XLAT_VAL_30
+#  undef XLAT_STR_31
+#  undef XLAT_VAL_31
+#  undef XLAT_STR_32
+#  undef XLAT_VAL_32
+#  undef XLAT_STR_33
+#  undef XLAT_VAL_33
+#  undef XLAT_STR_34
+#  undef XLAT_VAL_34
+#  undef XLAT_STR_35
+#  undef XLAT_VAL_35
+#  undef XLAT_STR_36
+#  undef XLAT_VAL_36
+#  undef XLAT_STR_37
+#  undef XLAT_VAL_37
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 29a58b81ba440d3a027f179703bc6074940b848d..c2da7348ec22a085cecbbb629a4b56f73afe1cab 100644 (file)
@@ -17,3 +17,23 @@ BPF_CGROUP_UDP4_SENDMSG 14
 BPF_CGROUP_UDP6_SENDMSG 15
 BPF_LIRC_MODE2 16
 BPF_FLOW_DISSECTOR 17
+BPF_CGROUP_SYSCTL 18
+BPF_CGROUP_UDP4_RECVMSG 19
+BPF_CGROUP_UDP6_RECVMSG 20
+BPF_CGROUP_GETSOCKOPT 21
+BPF_CGROUP_SETSOCKOPT 22
+BPF_TRACE_RAW_TP 23
+BPF_TRACE_FENTRY 24
+BPF_TRACE_FEXIT 25
+BPF_MODIFY_RETURN 26
+BPF_LSM_MAC 27
+BPF_TRACE_ITER 28
+BPF_CGROUP_INET4_GETPEERNAME 29
+BPF_CGROUP_INET6_GETPEERNAME 30
+BPF_CGROUP_INET4_GETSOCKNAME 31
+BPF_CGROUP_INET6_GETSOCKNAME 32
+BPF_XDP_DEVMAP 33
+BPF_CGROUP_INET_SOCK_RELEASE 34
+BPF_XDP_CPUMAP 35
+BPF_SK_LOOKUP 36
+BPF_XDP 37
index a45ebd7fdb76285cae0c7b4ec1dd322517f45b41..c22d7f3b6b96dc5253017b3b63b160b71e402434 100644 (file)
@@ -68,19 +68,107 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat bpf_class[] = {
+static const struct xlat_data bpf_class_xdata[] = {
  [BPF_LD] = XLAT(BPF_LD),
+ #define XLAT_VAL_0 ((unsigned) (BPF_LD))
+ #define XLAT_STR_0 STRINGIFY(BPF_LD)
  [BPF_LDX] = XLAT(BPF_LDX),
+ #define XLAT_VAL_1 ((unsigned) (BPF_LDX))
+ #define XLAT_STR_1 STRINGIFY(BPF_LDX)
  [BPF_ST] = XLAT(BPF_ST),
+ #define XLAT_VAL_2 ((unsigned) (BPF_ST))
+ #define XLAT_STR_2 STRINGIFY(BPF_ST)
  [BPF_STX] = XLAT(BPF_STX),
+ #define XLAT_VAL_3 ((unsigned) (BPF_STX))
+ #define XLAT_STR_3 STRINGIFY(BPF_STX)
  [BPF_ALU] = XLAT(BPF_ALU),
+ #define XLAT_VAL_4 ((unsigned) (BPF_ALU))
+ #define XLAT_STR_4 STRINGIFY(BPF_ALU)
  [BPF_JMP] = XLAT(BPF_JMP),
+ #define XLAT_VAL_5 ((unsigned) (BPF_JMP))
+ #define XLAT_STR_5 STRINGIFY(BPF_JMP)
  [BPF_RET] = XLAT(BPF_RET),
+ #define XLAT_VAL_6 ((unsigned) (BPF_RET))
+ #define XLAT_STR_6 STRINGIFY(BPF_RET)
  [BPF_MISC] = XLAT(BPF_MISC),
- XLAT_END
+ #define XLAT_VAL_7 ((unsigned) (BPF_MISC))
+ #define XLAT_STR_7 STRINGIFY(BPF_MISC)
 };
+static
+const struct xlat bpf_class[1] = { {
+ .data = bpf_class_xdata,
+ .size = ARRAY_SIZE(bpf_class_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index bd99d5a7b80972aaf73c339028a5962b9b1959cf..f7276436cbb6b0ed5f4f8b06df85b274363de80e 100644 (file)
@@ -157,6 +157,97 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define BPF_MAP_LOOKUP_AND_DELETE_ELEM 21
 #endif
+#if defined(BPF_MAP_FREEZE) || (defined(HAVE_DECL_BPF_MAP_FREEZE) && HAVE_DECL_BPF_MAP_FREEZE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_MAP_FREEZE) == (22), "BPF_MAP_FREEZE != 22");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_MAP_FREEZE 22
+#endif
+#if defined(BPF_BTF_GET_NEXT_ID) || (defined(HAVE_DECL_BPF_BTF_GET_NEXT_ID) && HAVE_DECL_BPF_BTF_GET_NEXT_ID)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_BTF_GET_NEXT_ID) == (23), "BPF_BTF_GET_NEXT_ID != 23");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_BTF_GET_NEXT_ID 23
+#endif
+#if defined(BPF_MAP_LOOKUP_BATCH) || (defined(HAVE_DECL_BPF_MAP_LOOKUP_BATCH) && HAVE_DECL_BPF_MAP_LOOKUP_BATCH)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_MAP_LOOKUP_BATCH) == (24), "BPF_MAP_LOOKUP_BATCH != 24");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_MAP_LOOKUP_BATCH 24
+#endif
+#if defined(BPF_MAP_LOOKUP_AND_DELETE_BATCH) || (defined(HAVE_DECL_BPF_MAP_LOOKUP_AND_DELETE_BATCH) && HAVE_DECL_BPF_MAP_LOOKUP_AND_DELETE_BATCH)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_MAP_LOOKUP_AND_DELETE_BATCH) == (25), "BPF_MAP_LOOKUP_AND_DELETE_BATCH != 25");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_MAP_LOOKUP_AND_DELETE_BATCH 25
+#endif
+#if defined(BPF_MAP_UPDATE_BATCH) || (defined(HAVE_DECL_BPF_MAP_UPDATE_BATCH) && HAVE_DECL_BPF_MAP_UPDATE_BATCH)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_MAP_UPDATE_BATCH) == (26), "BPF_MAP_UPDATE_BATCH != 26");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_MAP_UPDATE_BATCH 26
+#endif
+#if defined(BPF_MAP_DELETE_BATCH) || (defined(HAVE_DECL_BPF_MAP_DELETE_BATCH) && HAVE_DECL_BPF_MAP_DELETE_BATCH)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_MAP_DELETE_BATCH) == (27), "BPF_MAP_DELETE_BATCH != 27");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_MAP_DELETE_BATCH 27
+#endif
+#if defined(BPF_LINK_CREATE) || (defined(HAVE_DECL_BPF_LINK_CREATE) && HAVE_DECL_BPF_LINK_CREATE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_LINK_CREATE) == (28), "BPF_LINK_CREATE != 28");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_LINK_CREATE 28
+#endif
+#if defined(BPF_LINK_UPDATE) || (defined(HAVE_DECL_BPF_LINK_UPDATE) && HAVE_DECL_BPF_LINK_UPDATE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_LINK_UPDATE) == (29), "BPF_LINK_UPDATE != 29");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_LINK_UPDATE 29
+#endif
+#if defined(BPF_LINK_GET_FD_BY_ID) || (defined(HAVE_DECL_BPF_LINK_GET_FD_BY_ID) && HAVE_DECL_BPF_LINK_GET_FD_BY_ID)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_LINK_GET_FD_BY_ID) == (30), "BPF_LINK_GET_FD_BY_ID != 30");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_LINK_GET_FD_BY_ID 30
+#endif
+#if defined(BPF_LINK_GET_NEXT_ID) || (defined(HAVE_DECL_BPF_LINK_GET_NEXT_ID) && HAVE_DECL_BPF_LINK_GET_NEXT_ID)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_LINK_GET_NEXT_ID) == (31), "BPF_LINK_GET_NEXT_ID != 31");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_LINK_GET_NEXT_ID 31
+#endif
+#if defined(BPF_ENABLE_STATS) || (defined(HAVE_DECL_BPF_ENABLE_STATS) && HAVE_DECL_BPF_ENABLE_STATS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_ENABLE_STATS) == (32), "BPF_ENABLE_STATS != 32");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_ENABLE_STATS 32
+#endif
+#if defined(BPF_ITER_CREATE) || (defined(HAVE_DECL_BPF_ITER_CREATE) && HAVE_DECL_BPF_ITER_CREATE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_ITER_CREATE) == (33), "BPF_ITER_CREATE != 33");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_ITER_CREATE 33
+#endif
+#if defined(BPF_LINK_DETACH) || (defined(HAVE_DECL_BPF_LINK_DETACH) && HAVE_DECL_BPF_LINK_DETACH)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_LINK_DETACH) == (34), "BPF_LINK_DETACH != 34");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_LINK_DETACH 34
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
@@ -166,33 +257,404 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat bpf_commands[] = {
+static const struct xlat_data bpf_commands_xdata[] = {
  [BPF_MAP_CREATE] = XLAT(BPF_MAP_CREATE),
+ #define XLAT_VAL_0 ((unsigned) (BPF_MAP_CREATE))
+ #define XLAT_STR_0 STRINGIFY(BPF_MAP_CREATE)
  [BPF_MAP_LOOKUP_ELEM] = XLAT(BPF_MAP_LOOKUP_ELEM),
+ #define XLAT_VAL_1 ((unsigned) (BPF_MAP_LOOKUP_ELEM))
+ #define XLAT_STR_1 STRINGIFY(BPF_MAP_LOOKUP_ELEM)
  [BPF_MAP_UPDATE_ELEM] = XLAT(BPF_MAP_UPDATE_ELEM),
+ #define XLAT_VAL_2 ((unsigned) (BPF_MAP_UPDATE_ELEM))
+ #define XLAT_STR_2 STRINGIFY(BPF_MAP_UPDATE_ELEM)
  [BPF_MAP_DELETE_ELEM] = XLAT(BPF_MAP_DELETE_ELEM),
+ #define XLAT_VAL_3 ((unsigned) (BPF_MAP_DELETE_ELEM))
+ #define XLAT_STR_3 STRINGIFY(BPF_MAP_DELETE_ELEM)
  [BPF_MAP_GET_NEXT_KEY] = XLAT(BPF_MAP_GET_NEXT_KEY),
+ #define XLAT_VAL_4 ((unsigned) (BPF_MAP_GET_NEXT_KEY))
+ #define XLAT_STR_4 STRINGIFY(BPF_MAP_GET_NEXT_KEY)
  [BPF_PROG_LOAD] = XLAT(BPF_PROG_LOAD),
+ #define XLAT_VAL_5 ((unsigned) (BPF_PROG_LOAD))
+ #define XLAT_STR_5 STRINGIFY(BPF_PROG_LOAD)
  [BPF_OBJ_PIN] = XLAT(BPF_OBJ_PIN),
+ #define XLAT_VAL_6 ((unsigned) (BPF_OBJ_PIN))
+ #define XLAT_STR_6 STRINGIFY(BPF_OBJ_PIN)
  [BPF_OBJ_GET] = XLAT(BPF_OBJ_GET),
+ #define XLAT_VAL_7 ((unsigned) (BPF_OBJ_GET))
+ #define XLAT_STR_7 STRINGIFY(BPF_OBJ_GET)
  [BPF_PROG_ATTACH] = XLAT(BPF_PROG_ATTACH),
+ #define XLAT_VAL_8 ((unsigned) (BPF_PROG_ATTACH))
+ #define XLAT_STR_8 STRINGIFY(BPF_PROG_ATTACH)
  [BPF_PROG_DETACH] = XLAT(BPF_PROG_DETACH),
+ #define XLAT_VAL_9 ((unsigned) (BPF_PROG_DETACH))
+ #define XLAT_STR_9 STRINGIFY(BPF_PROG_DETACH)
  [BPF_PROG_TEST_RUN] = XLAT(BPF_PROG_TEST_RUN),
+ #define XLAT_VAL_10 ((unsigned) (BPF_PROG_TEST_RUN))
+ #define XLAT_STR_10 STRINGIFY(BPF_PROG_TEST_RUN)
  [BPF_PROG_GET_NEXT_ID] = XLAT(BPF_PROG_GET_NEXT_ID),
+ #define XLAT_VAL_11 ((unsigned) (BPF_PROG_GET_NEXT_ID))
+ #define XLAT_STR_11 STRINGIFY(BPF_PROG_GET_NEXT_ID)
  [BPF_MAP_GET_NEXT_ID] = XLAT(BPF_MAP_GET_NEXT_ID),
+ #define XLAT_VAL_12 ((unsigned) (BPF_MAP_GET_NEXT_ID))
+ #define XLAT_STR_12 STRINGIFY(BPF_MAP_GET_NEXT_ID)
  [BPF_PROG_GET_FD_BY_ID] = XLAT(BPF_PROG_GET_FD_BY_ID),
+ #define XLAT_VAL_13 ((unsigned) (BPF_PROG_GET_FD_BY_ID))
+ #define XLAT_STR_13 STRINGIFY(BPF_PROG_GET_FD_BY_ID)
  [BPF_MAP_GET_FD_BY_ID] = XLAT(BPF_MAP_GET_FD_BY_ID),
+ #define XLAT_VAL_14 ((unsigned) (BPF_MAP_GET_FD_BY_ID))
+ #define XLAT_STR_14 STRINGIFY(BPF_MAP_GET_FD_BY_ID)
  [BPF_OBJ_GET_INFO_BY_FD] = XLAT(BPF_OBJ_GET_INFO_BY_FD),
+ #define XLAT_VAL_15 ((unsigned) (BPF_OBJ_GET_INFO_BY_FD))
+ #define XLAT_STR_15 STRINGIFY(BPF_OBJ_GET_INFO_BY_FD)
  [BPF_PROG_QUERY] = XLAT(BPF_PROG_QUERY),
+ #define XLAT_VAL_16 ((unsigned) (BPF_PROG_QUERY))
+ #define XLAT_STR_16 STRINGIFY(BPF_PROG_QUERY)
  [BPF_RAW_TRACEPOINT_OPEN] = XLAT(BPF_RAW_TRACEPOINT_OPEN),
+ #define XLAT_VAL_17 ((unsigned) (BPF_RAW_TRACEPOINT_OPEN))
+ #define XLAT_STR_17 STRINGIFY(BPF_RAW_TRACEPOINT_OPEN)
  [BPF_BTF_LOAD] = XLAT(BPF_BTF_LOAD),
+ #define XLAT_VAL_18 ((unsigned) (BPF_BTF_LOAD))
+ #define XLAT_STR_18 STRINGIFY(BPF_BTF_LOAD)
  [BPF_BTF_GET_FD_BY_ID] = XLAT(BPF_BTF_GET_FD_BY_ID),
+ #define XLAT_VAL_19 ((unsigned) (BPF_BTF_GET_FD_BY_ID))
+ #define XLAT_STR_19 STRINGIFY(BPF_BTF_GET_FD_BY_ID)
  [BPF_TASK_FD_QUERY] = XLAT(BPF_TASK_FD_QUERY),
+ #define XLAT_VAL_20 ((unsigned) (BPF_TASK_FD_QUERY))
+ #define XLAT_STR_20 STRINGIFY(BPF_TASK_FD_QUERY)
  [BPF_MAP_LOOKUP_AND_DELETE_ELEM] = XLAT(BPF_MAP_LOOKUP_AND_DELETE_ELEM),
- XLAT_END
+ #define XLAT_VAL_21 ((unsigned) (BPF_MAP_LOOKUP_AND_DELETE_ELEM))
+ #define XLAT_STR_21 STRINGIFY(BPF_MAP_LOOKUP_AND_DELETE_ELEM)
+ [BPF_MAP_FREEZE] = XLAT(BPF_MAP_FREEZE),
+ #define XLAT_VAL_22 ((unsigned) (BPF_MAP_FREEZE))
+ #define XLAT_STR_22 STRINGIFY(BPF_MAP_FREEZE)
+ [BPF_BTF_GET_NEXT_ID] = XLAT(BPF_BTF_GET_NEXT_ID),
+ #define XLAT_VAL_23 ((unsigned) (BPF_BTF_GET_NEXT_ID))
+ #define XLAT_STR_23 STRINGIFY(BPF_BTF_GET_NEXT_ID)
+ [BPF_MAP_LOOKUP_BATCH] = XLAT(BPF_MAP_LOOKUP_BATCH),
+ #define XLAT_VAL_24 ((unsigned) (BPF_MAP_LOOKUP_BATCH))
+ #define XLAT_STR_24 STRINGIFY(BPF_MAP_LOOKUP_BATCH)
+ [BPF_MAP_LOOKUP_AND_DELETE_BATCH] = XLAT(BPF_MAP_LOOKUP_AND_DELETE_BATCH),
+ #define XLAT_VAL_25 ((unsigned) (BPF_MAP_LOOKUP_AND_DELETE_BATCH))
+ #define XLAT_STR_25 STRINGIFY(BPF_MAP_LOOKUP_AND_DELETE_BATCH)
+ [BPF_MAP_UPDATE_BATCH] = XLAT(BPF_MAP_UPDATE_BATCH),
+ #define XLAT_VAL_26 ((unsigned) (BPF_MAP_UPDATE_BATCH))
+ #define XLAT_STR_26 STRINGIFY(BPF_MAP_UPDATE_BATCH)
+ [BPF_MAP_DELETE_BATCH] = XLAT(BPF_MAP_DELETE_BATCH),
+ #define XLAT_VAL_27 ((unsigned) (BPF_MAP_DELETE_BATCH))
+ #define XLAT_STR_27 STRINGIFY(BPF_MAP_DELETE_BATCH)
+ [BPF_LINK_CREATE] = XLAT(BPF_LINK_CREATE),
+ #define XLAT_VAL_28 ((unsigned) (BPF_LINK_CREATE))
+ #define XLAT_STR_28 STRINGIFY(BPF_LINK_CREATE)
+ [BPF_LINK_UPDATE] = XLAT(BPF_LINK_UPDATE),
+ #define XLAT_VAL_29 ((unsigned) (BPF_LINK_UPDATE))
+ #define XLAT_STR_29 STRINGIFY(BPF_LINK_UPDATE)
+ [BPF_LINK_GET_FD_BY_ID] = XLAT(BPF_LINK_GET_FD_BY_ID),
+ #define XLAT_VAL_30 ((unsigned) (BPF_LINK_GET_FD_BY_ID))
+ #define XLAT_STR_30 STRINGIFY(BPF_LINK_GET_FD_BY_ID)
+ [BPF_LINK_GET_NEXT_ID] = XLAT(BPF_LINK_GET_NEXT_ID),
+ #define XLAT_VAL_31 ((unsigned) (BPF_LINK_GET_NEXT_ID))
+ #define XLAT_STR_31 STRINGIFY(BPF_LINK_GET_NEXT_ID)
+ [BPF_ENABLE_STATS] = XLAT(BPF_ENABLE_STATS),
+ #define XLAT_VAL_32 ((unsigned) (BPF_ENABLE_STATS))
+ #define XLAT_STR_32 STRINGIFY(BPF_ENABLE_STATS)
+ [BPF_ITER_CREATE] = XLAT(BPF_ITER_CREATE),
+ #define XLAT_VAL_33 ((unsigned) (BPF_ITER_CREATE))
+ #define XLAT_STR_33 STRINGIFY(BPF_ITER_CREATE)
+ [BPF_LINK_DETACH] = XLAT(BPF_LINK_DETACH),
+ #define XLAT_VAL_34 ((unsigned) (BPF_LINK_DETACH))
+ #define XLAT_STR_34 STRINGIFY(BPF_LINK_DETACH)
 };
+static
+const struct xlat bpf_commands[1] = { {
+ .data = bpf_commands_xdata,
+ .size = ARRAY_SIZE(bpf_commands_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+#  ifdef XLAT_VAL_30
+  | XLAT_VAL_30
+#  endif
+#  ifdef XLAT_VAL_31
+  | XLAT_VAL_31
+#  endif
+#  ifdef XLAT_VAL_32
+  | XLAT_VAL_32
+#  endif
+#  ifdef XLAT_VAL_33
+  | XLAT_VAL_33
+#  endif
+#  ifdef XLAT_VAL_34
+  | XLAT_VAL_34
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+#  ifdef XLAT_STR_30
+  + sizeof(XLAT_STR_30)
+#  endif
+#  ifdef XLAT_STR_31
+  + sizeof(XLAT_STR_31)
+#  endif
+#  ifdef XLAT_STR_32
+  + sizeof(XLAT_STR_32)
+#  endif
+#  ifdef XLAT_STR_33
+  + sizeof(XLAT_STR_33)
+#  endif
+#  ifdef XLAT_STR_34
+  + sizeof(XLAT_STR_34)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
+#  undef XLAT_STR_30
+#  undef XLAT_VAL_30
+#  undef XLAT_STR_31
+#  undef XLAT_VAL_31
+#  undef XLAT_STR_32
+#  undef XLAT_VAL_32
+#  undef XLAT_STR_33
+#  undef XLAT_VAL_33
+#  undef XLAT_STR_34
+#  undef XLAT_VAL_34
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 6dff998d3bc7cba1dd11f8f91634d87d2e0f1645..6b248a666050b17de83fad1ec22cc8ced3e47545 100644 (file)
@@ -21,3 +21,16 @@ BPF_BTF_LOAD 18
 BPF_BTF_GET_FD_BY_ID 19
 BPF_TASK_FD_QUERY 20
 BPF_MAP_LOOKUP_AND_DELETE_ELEM 21
+BPF_MAP_FREEZE 22
+BPF_BTF_GET_NEXT_ID 23
+BPF_MAP_LOOKUP_BATCH 24
+BPF_MAP_LOOKUP_AND_DELETE_BATCH 25
+BPF_MAP_UPDATE_BATCH 26
+BPF_MAP_DELETE_BATCH 27
+BPF_LINK_CREATE 28
+BPF_LINK_UPDATE 29
+BPF_LINK_GET_FD_BY_ID 30
+BPF_LINK_GET_NEXT_ID 31
+BPF_ENABLE_STATS 32
+BPF_ITER_CREATE 33
+BPF_LINK_DETACH 34
index 3a6baf549e441c5f2af7fecc6e16a926ea3b192a..f95224db9e125b589c495ae0f89d7dab44c5d04c 100644 (file)
@@ -26,13 +26,41 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat bpf_file_mode_flags[] = {
+static const struct xlat_data bpf_file_mode_flags_xdata[] = {
  XLAT(BPF_F_RDONLY),
+ #define XLAT_VAL_0 ((unsigned) (BPF_F_RDONLY))
+ #define XLAT_STR_0 STRINGIFY(BPF_F_RDONLY)
  XLAT(BPF_F_WRONLY),
- XLAT_END
+ #define XLAT_VAL_1 ((unsigned) (BPF_F_WRONLY))
+ #define XLAT_STR_1 STRINGIFY(BPF_F_WRONLY)
 };
+static
+const struct xlat bpf_file_mode_flags[1] = { {
+ .data = bpf_file_mode_flags_xdata,
+ .size = ARRAY_SIZE(bpf_file_mode_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index dcfd0fc0d0e9c7b18f8f0c32c6e2a6268732694c..ba18799a2ca0b4c5ef4465b6e380c84e12b535d4 100644 (file)
@@ -52,6 +52,34 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define BPF_F_ZERO_SEED (1U << 6)
 #endif
+#if defined(BPF_F_RDONLY_PROG) || (defined(HAVE_DECL_BPF_F_RDONLY_PROG) && HAVE_DECL_BPF_F_RDONLY_PROG)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_F_RDONLY_PROG) == ((1U << 7)), "BPF_F_RDONLY_PROG != (1U << 7)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_F_RDONLY_PROG (1U << 7)
+#endif
+#if defined(BPF_F_WRONLY_PROG) || (defined(HAVE_DECL_BPF_F_WRONLY_PROG) && HAVE_DECL_BPF_F_WRONLY_PROG)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_F_WRONLY_PROG) == ((1U << 8)), "BPF_F_WRONLY_PROG != (1U << 8)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_F_WRONLY_PROG (1U << 8)
+#endif
+#if defined(BPF_F_CLONE) || (defined(HAVE_DECL_BPF_F_CLONE) && HAVE_DECL_BPF_F_CLONE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_F_CLONE) == ((1U << 9)), "BPF_F_CLONE != (1U << 9)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_F_CLONE (1U << 9)
+#endif
+#if defined(BPF_F_MMAPABLE) || (defined(HAVE_DECL_BPF_F_MMAPABLE) && HAVE_DECL_BPF_F_MMAPABLE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_F_MMAPABLE) == ((1U << 10)), "BPF_F_MMAPABLE != (1U << 10)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_F_MMAPABLE (1U << 10)
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
@@ -61,18 +89,140 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat bpf_map_flags[] = {
+static const struct xlat_data bpf_map_flags_xdata[] = {
  XLAT(BPF_F_NO_PREALLOC),
+ #define XLAT_VAL_0 ((unsigned) (BPF_F_NO_PREALLOC))
+ #define XLAT_STR_0 STRINGIFY(BPF_F_NO_PREALLOC)
  XLAT(BPF_F_NO_COMMON_LRU),
+ #define XLAT_VAL_1 ((unsigned) (BPF_F_NO_COMMON_LRU))
+ #define XLAT_STR_1 STRINGIFY(BPF_F_NO_COMMON_LRU)
  XLAT(BPF_F_NUMA_NODE),
+ #define XLAT_VAL_2 ((unsigned) (BPF_F_NUMA_NODE))
+ #define XLAT_STR_2 STRINGIFY(BPF_F_NUMA_NODE)
  XLAT(BPF_F_RDONLY),
+ #define XLAT_VAL_3 ((unsigned) (BPF_F_RDONLY))
+ #define XLAT_STR_3 STRINGIFY(BPF_F_RDONLY)
  XLAT(BPF_F_WRONLY),
+ #define XLAT_VAL_4 ((unsigned) (BPF_F_WRONLY))
+ #define XLAT_STR_4 STRINGIFY(BPF_F_WRONLY)
  XLAT(BPF_F_STACK_BUILD_ID),
+ #define XLAT_VAL_5 ((unsigned) (BPF_F_STACK_BUILD_ID))
+ #define XLAT_STR_5 STRINGIFY(BPF_F_STACK_BUILD_ID)
  XLAT(BPF_F_ZERO_SEED),
- XLAT_END
+ #define XLAT_VAL_6 ((unsigned) (BPF_F_ZERO_SEED))
+ #define XLAT_STR_6 STRINGIFY(BPF_F_ZERO_SEED)
+ XLAT(BPF_F_RDONLY_PROG),
+ #define XLAT_VAL_7 ((unsigned) (BPF_F_RDONLY_PROG))
+ #define XLAT_STR_7 STRINGIFY(BPF_F_RDONLY_PROG)
+ XLAT(BPF_F_WRONLY_PROG),
+ #define XLAT_VAL_8 ((unsigned) (BPF_F_WRONLY_PROG))
+ #define XLAT_STR_8 STRINGIFY(BPF_F_WRONLY_PROG)
+ XLAT(BPF_F_CLONE),
+ #define XLAT_VAL_9 ((unsigned) (BPF_F_CLONE))
+ #define XLAT_STR_9 STRINGIFY(BPF_F_CLONE)
+ XLAT(BPF_F_MMAPABLE),
+ #define XLAT_VAL_10 ((unsigned) (BPF_F_MMAPABLE))
+ #define XLAT_STR_10 STRINGIFY(BPF_F_MMAPABLE)
 };
+static
+const struct xlat bpf_map_flags[1] = { {
+ .data = bpf_map_flags_xdata,
+ .size = ARRAY_SIZE(bpf_map_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index a2790db65cf5411779f07313d417e9a1ae37d1b9..f0484ab8cfe0140f0d5989f74a6f01418149a54d 100644 (file)
@@ -5,3 +5,7 @@ BPF_F_RDONLY            (1U << 3)
 BPF_F_WRONLY           (1U << 4)
 BPF_F_STACK_BUILD_ID   (1U << 5)
 BPF_F_ZERO_SEED                (1U << 6)
+BPF_F_RDONLY_PROG      (1U << 7)
+BPF_F_WRONLY_PROG      (1U << 8)
+BPF_F_CLONE            (1U << 9)
+BPF_F_MMAPABLE         (1U << 10)
diff --git a/xlat/bpf_map_lookup_elem_flags.h b/xlat/bpf_map_lookup_elem_flags.h
new file mode 100644 (file)
index 0000000..5e81734
--- /dev/null
@@ -0,0 +1,66 @@
+/* Generated by ./xlat/gen.sh from ./xlat/bpf_map_lookup_elem_flags.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(BPF_ANY) || (defined(HAVE_DECL_BPF_ANY) && HAVE_DECL_BPF_ANY)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_ANY) == (0), "BPF_ANY != 0");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_ANY 0
+#endif
+#if defined(BPF_F_LOCK) || (defined(HAVE_DECL_BPF_F_LOCK) && HAVE_DECL_BPF_F_LOCK)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_F_LOCK) == (4), "BPF_F_LOCK != 4");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_F_LOCK 4
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat bpf_map_lookup_elem_flags in mpers mode
+
+# else
+
+static const struct xlat_data bpf_map_lookup_elem_flags_xdata[] = {
+ XLAT(BPF_ANY),
+ #define XLAT_VAL_0 ((unsigned) (BPF_ANY))
+ #define XLAT_STR_0 STRINGIFY(BPF_ANY)
+ XLAT(BPF_F_LOCK),
+ #define XLAT_VAL_1 ((unsigned) (BPF_F_LOCK))
+ #define XLAT_STR_1 STRINGIFY(BPF_F_LOCK)
+};
+static
+const struct xlat bpf_map_lookup_elem_flags[1] = { {
+ .data = bpf_map_lookup_elem_flags_xdata,
+ .size = ARRAY_SIZE(bpf_map_lookup_elem_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/bpf_map_lookup_elem_flags.in b/xlat/bpf_map_lookup_elem_flags.in
new file mode 100644 (file)
index 0000000..68c936b
--- /dev/null
@@ -0,0 +1,2 @@
+BPF_ANY 0
+BPF_F_LOCK 4
index a6b4a3b33346ec35a81b4fd11934008966baf9a7..0c88fa98279925104ef2278e9fe15c076ce0c9db 100644 (file)
@@ -171,6 +171,34 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define BPF_MAP_TYPE_STACK 23
 #endif
+#if defined(BPF_MAP_TYPE_SK_STORAGE) || (defined(HAVE_DECL_BPF_MAP_TYPE_SK_STORAGE) && HAVE_DECL_BPF_MAP_TYPE_SK_STORAGE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_MAP_TYPE_SK_STORAGE) == (24), "BPF_MAP_TYPE_SK_STORAGE != 24");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_MAP_TYPE_SK_STORAGE 24
+#endif
+#if defined(BPF_MAP_TYPE_DEVMAP_HASH) || (defined(HAVE_DECL_BPF_MAP_TYPE_DEVMAP_HASH) && HAVE_DECL_BPF_MAP_TYPE_DEVMAP_HASH)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_MAP_TYPE_DEVMAP_HASH) == (25), "BPF_MAP_TYPE_DEVMAP_HASH != 25");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_MAP_TYPE_DEVMAP_HASH 25
+#endif
+#if defined(BPF_MAP_TYPE_STRUCT_OPS) || (defined(HAVE_DECL_BPF_MAP_TYPE_STRUCT_OPS) && HAVE_DECL_BPF_MAP_TYPE_STRUCT_OPS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_MAP_TYPE_STRUCT_OPS) == (26), "BPF_MAP_TYPE_STRUCT_OPS != 26");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_MAP_TYPE_STRUCT_OPS 26
+#endif
+#if defined(BPF_MAP_TYPE_RINGBUF) || (defined(HAVE_DECL_BPF_MAP_TYPE_RINGBUF) && HAVE_DECL_BPF_MAP_TYPE_RINGBUF)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_MAP_TYPE_RINGBUF) == (27), "BPF_MAP_TYPE_RINGBUF != 27");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_MAP_TYPE_RINGBUF 27
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
@@ -180,35 +208,327 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat bpf_map_types[] = {
+static const struct xlat_data bpf_map_types_xdata[] = {
  [BPF_MAP_TYPE_UNSPEC] = XLAT(BPF_MAP_TYPE_UNSPEC),
+ #define XLAT_VAL_0 ((unsigned) (BPF_MAP_TYPE_UNSPEC))
+ #define XLAT_STR_0 STRINGIFY(BPF_MAP_TYPE_UNSPEC)
  [BPF_MAP_TYPE_HASH] = XLAT(BPF_MAP_TYPE_HASH),
+ #define XLAT_VAL_1 ((unsigned) (BPF_MAP_TYPE_HASH))
+ #define XLAT_STR_1 STRINGIFY(BPF_MAP_TYPE_HASH)
  [BPF_MAP_TYPE_ARRAY] = XLAT(BPF_MAP_TYPE_ARRAY),
+ #define XLAT_VAL_2 ((unsigned) (BPF_MAP_TYPE_ARRAY))
+ #define XLAT_STR_2 STRINGIFY(BPF_MAP_TYPE_ARRAY)
  [BPF_MAP_TYPE_PROG_ARRAY] = XLAT(BPF_MAP_TYPE_PROG_ARRAY),
+ #define XLAT_VAL_3 ((unsigned) (BPF_MAP_TYPE_PROG_ARRAY))
+ #define XLAT_STR_3 STRINGIFY(BPF_MAP_TYPE_PROG_ARRAY)
  [BPF_MAP_TYPE_PERF_EVENT_ARRAY] = XLAT(BPF_MAP_TYPE_PERF_EVENT_ARRAY),
+ #define XLAT_VAL_4 ((unsigned) (BPF_MAP_TYPE_PERF_EVENT_ARRAY))
+ #define XLAT_STR_4 STRINGIFY(BPF_MAP_TYPE_PERF_EVENT_ARRAY)
  [BPF_MAP_TYPE_PERCPU_HASH] = XLAT(BPF_MAP_TYPE_PERCPU_HASH),
+ #define XLAT_VAL_5 ((unsigned) (BPF_MAP_TYPE_PERCPU_HASH))
+ #define XLAT_STR_5 STRINGIFY(BPF_MAP_TYPE_PERCPU_HASH)
  [BPF_MAP_TYPE_PERCPU_ARRAY] = XLAT(BPF_MAP_TYPE_PERCPU_ARRAY),
+ #define XLAT_VAL_6 ((unsigned) (BPF_MAP_TYPE_PERCPU_ARRAY))
+ #define XLAT_STR_6 STRINGIFY(BPF_MAP_TYPE_PERCPU_ARRAY)
  [BPF_MAP_TYPE_STACK_TRACE] = XLAT(BPF_MAP_TYPE_STACK_TRACE),
+ #define XLAT_VAL_7 ((unsigned) (BPF_MAP_TYPE_STACK_TRACE))
+ #define XLAT_STR_7 STRINGIFY(BPF_MAP_TYPE_STACK_TRACE)
  [BPF_MAP_TYPE_CGROUP_ARRAY] = XLAT(BPF_MAP_TYPE_CGROUP_ARRAY),
+ #define XLAT_VAL_8 ((unsigned) (BPF_MAP_TYPE_CGROUP_ARRAY))
+ #define XLAT_STR_8 STRINGIFY(BPF_MAP_TYPE_CGROUP_ARRAY)
  [BPF_MAP_TYPE_LRU_HASH] = XLAT(BPF_MAP_TYPE_LRU_HASH),
+ #define XLAT_VAL_9 ((unsigned) (BPF_MAP_TYPE_LRU_HASH))
+ #define XLAT_STR_9 STRINGIFY(BPF_MAP_TYPE_LRU_HASH)
  [BPF_MAP_TYPE_LRU_PERCPU_HASH] = XLAT(BPF_MAP_TYPE_LRU_PERCPU_HASH),
+ #define XLAT_VAL_10 ((unsigned) (BPF_MAP_TYPE_LRU_PERCPU_HASH))
+ #define XLAT_STR_10 STRINGIFY(BPF_MAP_TYPE_LRU_PERCPU_HASH)
  [BPF_MAP_TYPE_LPM_TRIE] = XLAT(BPF_MAP_TYPE_LPM_TRIE),
+ #define XLAT_VAL_11 ((unsigned) (BPF_MAP_TYPE_LPM_TRIE))
+ #define XLAT_STR_11 STRINGIFY(BPF_MAP_TYPE_LPM_TRIE)
  [BPF_MAP_TYPE_ARRAY_OF_MAPS] = XLAT(BPF_MAP_TYPE_ARRAY_OF_MAPS),
+ #define XLAT_VAL_12 ((unsigned) (BPF_MAP_TYPE_ARRAY_OF_MAPS))
+ #define XLAT_STR_12 STRINGIFY(BPF_MAP_TYPE_ARRAY_OF_MAPS)
  [BPF_MAP_TYPE_HASH_OF_MAPS] = XLAT(BPF_MAP_TYPE_HASH_OF_MAPS),
+ #define XLAT_VAL_13 ((unsigned) (BPF_MAP_TYPE_HASH_OF_MAPS))
+ #define XLAT_STR_13 STRINGIFY(BPF_MAP_TYPE_HASH_OF_MAPS)
  [BPF_MAP_TYPE_DEVMAP] = XLAT(BPF_MAP_TYPE_DEVMAP),
+ #define XLAT_VAL_14 ((unsigned) (BPF_MAP_TYPE_DEVMAP))
+ #define XLAT_STR_14 STRINGIFY(BPF_MAP_TYPE_DEVMAP)
  [BPF_MAP_TYPE_SOCKMAP] = XLAT(BPF_MAP_TYPE_SOCKMAP),
+ #define XLAT_VAL_15 ((unsigned) (BPF_MAP_TYPE_SOCKMAP))
+ #define XLAT_STR_15 STRINGIFY(BPF_MAP_TYPE_SOCKMAP)
  [BPF_MAP_TYPE_CPUMAP] = XLAT(BPF_MAP_TYPE_CPUMAP),
+ #define XLAT_VAL_16 ((unsigned) (BPF_MAP_TYPE_CPUMAP))
+ #define XLAT_STR_16 STRINGIFY(BPF_MAP_TYPE_CPUMAP)
  [BPF_MAP_TYPE_XSKMAP] = XLAT(BPF_MAP_TYPE_XSKMAP),
+ #define XLAT_VAL_17 ((unsigned) (BPF_MAP_TYPE_XSKMAP))
+ #define XLAT_STR_17 STRINGIFY(BPF_MAP_TYPE_XSKMAP)
  [BPF_MAP_TYPE_SOCKHASH] = XLAT(BPF_MAP_TYPE_SOCKHASH),
+ #define XLAT_VAL_18 ((unsigned) (BPF_MAP_TYPE_SOCKHASH))
+ #define XLAT_STR_18 STRINGIFY(BPF_MAP_TYPE_SOCKHASH)
  [BPF_MAP_TYPE_CGROUP_STORAGE] = XLAT(BPF_MAP_TYPE_CGROUP_STORAGE),
+ #define XLAT_VAL_19 ((unsigned) (BPF_MAP_TYPE_CGROUP_STORAGE))
+ #define XLAT_STR_19 STRINGIFY(BPF_MAP_TYPE_CGROUP_STORAGE)
  [BPF_MAP_TYPE_REUSEPORT_SOCKARRAY] = XLAT(BPF_MAP_TYPE_REUSEPORT_SOCKARRAY),
+ #define XLAT_VAL_20 ((unsigned) (BPF_MAP_TYPE_REUSEPORT_SOCKARRAY))
+ #define XLAT_STR_20 STRINGIFY(BPF_MAP_TYPE_REUSEPORT_SOCKARRAY)
  [BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE] = XLAT(BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE),
+ #define XLAT_VAL_21 ((unsigned) (BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE))
+ #define XLAT_STR_21 STRINGIFY(BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE)
  [BPF_MAP_TYPE_QUEUE] = XLAT(BPF_MAP_TYPE_QUEUE),
+ #define XLAT_VAL_22 ((unsigned) (BPF_MAP_TYPE_QUEUE))
+ #define XLAT_STR_22 STRINGIFY(BPF_MAP_TYPE_QUEUE)
  [BPF_MAP_TYPE_STACK] = XLAT(BPF_MAP_TYPE_STACK),
- XLAT_END
+ #define XLAT_VAL_23 ((unsigned) (BPF_MAP_TYPE_STACK))
+ #define XLAT_STR_23 STRINGIFY(BPF_MAP_TYPE_STACK)
+ [BPF_MAP_TYPE_SK_STORAGE] = XLAT(BPF_MAP_TYPE_SK_STORAGE),
+ #define XLAT_VAL_24 ((unsigned) (BPF_MAP_TYPE_SK_STORAGE))
+ #define XLAT_STR_24 STRINGIFY(BPF_MAP_TYPE_SK_STORAGE)
+ [BPF_MAP_TYPE_DEVMAP_HASH] = XLAT(BPF_MAP_TYPE_DEVMAP_HASH),
+ #define XLAT_VAL_25 ((unsigned) (BPF_MAP_TYPE_DEVMAP_HASH))
+ #define XLAT_STR_25 STRINGIFY(BPF_MAP_TYPE_DEVMAP_HASH)
+ [BPF_MAP_TYPE_STRUCT_OPS] = XLAT(BPF_MAP_TYPE_STRUCT_OPS),
+ #define XLAT_VAL_26 ((unsigned) (BPF_MAP_TYPE_STRUCT_OPS))
+ #define XLAT_STR_26 STRINGIFY(BPF_MAP_TYPE_STRUCT_OPS)
+ [BPF_MAP_TYPE_RINGBUF] = XLAT(BPF_MAP_TYPE_RINGBUF),
+ #define XLAT_VAL_27 ((unsigned) (BPF_MAP_TYPE_RINGBUF))
+ #define XLAT_STR_27 STRINGIFY(BPF_MAP_TYPE_RINGBUF)
 };
+static
+const struct xlat bpf_map_types[1] = { {
+ .data = bpf_map_types_xdata,
+ .size = ARRAY_SIZE(bpf_map_types_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 8a67d3ed5766b027953e34bef3c5baa6ab5e0b8b..79cf639e36e07920c3732bea01bf0c10f361a9a0 100644 (file)
@@ -23,3 +23,7 @@ BPF_MAP_TYPE_REUSEPORT_SOCKARRAY 20
 BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE 21
 BPF_MAP_TYPE_QUEUE 22
 BPF_MAP_TYPE_STACK 23
+BPF_MAP_TYPE_SK_STORAGE 24
+BPF_MAP_TYPE_DEVMAP_HASH 25
+BPF_MAP_TYPE_STRUCT_OPS 26
+BPF_MAP_TYPE_RINGBUF 27
index 9d60ac40bd7b35cca3939b1ef3382db52a1bd737..0ca8036eb91d4f9aa5e7099921c67966ee546955 100644 (file)
@@ -40,15 +40,63 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat bpf_map_update_elem_flags[] = {
+static const struct xlat_data bpf_map_update_elem_flags_xdata[] = {
  [BPF_ANY] = XLAT(BPF_ANY),
+ #define XLAT_VAL_0 ((unsigned) (BPF_ANY))
+ #define XLAT_STR_0 STRINGIFY(BPF_ANY)
  [BPF_NOEXIST] = XLAT(BPF_NOEXIST),
+ #define XLAT_VAL_1 ((unsigned) (BPF_NOEXIST))
+ #define XLAT_STR_1 STRINGIFY(BPF_NOEXIST)
  [BPF_EXIST] = XLAT(BPF_EXIST),
+ #define XLAT_VAL_2 ((unsigned) (BPF_EXIST))
+ #define XLAT_STR_2 STRINGIFY(BPF_EXIST)
  [BPF_F_LOCK] = XLAT(BPF_F_LOCK),
- XLAT_END
+ #define XLAT_VAL_3 ((unsigned) (BPF_F_LOCK))
+ #define XLAT_STR_3 STRINGIFY(BPF_F_LOCK)
 };
+static
+const struct xlat bpf_map_update_elem_flags[1] = { {
+ .data = bpf_map_update_elem_flags_xdata,
+ .size = ARRAY_SIZE(bpf_map_update_elem_flags_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 3a930e65b8b9d3f38c3a94ecca3cbd5042c0a3c2..34421dc47f65870e7c9fc747390570d8fef77992 100644 (file)
@@ -26,13 +26,41 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat bpf_miscop[] = {
+static const struct xlat_data bpf_miscop_xdata[] = {
  XLAT(BPF_TAX),
+ #define XLAT_VAL_0 ((unsigned) (BPF_TAX))
+ #define XLAT_STR_0 STRINGIFY(BPF_TAX)
  XLAT(BPF_TXA),
- XLAT_END
+ #define XLAT_VAL_1 ((unsigned) (BPF_TXA))
+ #define XLAT_STR_1 STRINGIFY(BPF_TXA)
 };
+static
+const struct xlat bpf_miscop[1] = { {
+ .data = bpf_miscop_xdata,
+ .size = ARRAY_SIZE(bpf_miscop_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 5cb73d6b22002d6d3ee8ef035827607431c99176..3a331617e9fdecf847df22ab6360808b49486304 100644 (file)
@@ -61,18 +61,96 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat bpf_mode[] = {
+static const struct xlat_data bpf_mode_xdata[] = {
  XLAT(BPF_IMM),
+ #define XLAT_VAL_0 ((unsigned) (BPF_IMM))
+ #define XLAT_STR_0 STRINGIFY(BPF_IMM)
  XLAT(BPF_ABS),
+ #define XLAT_VAL_1 ((unsigned) (BPF_ABS))
+ #define XLAT_STR_1 STRINGIFY(BPF_ABS)
  XLAT(BPF_IND),
+ #define XLAT_VAL_2 ((unsigned) (BPF_IND))
+ #define XLAT_STR_2 STRINGIFY(BPF_IND)
  XLAT(BPF_MEM),
+ #define XLAT_VAL_3 ((unsigned) (BPF_MEM))
+ #define XLAT_STR_3 STRINGIFY(BPF_MEM)
  XLAT(BPF_LEN),
+ #define XLAT_VAL_4 ((unsigned) (BPF_LEN))
+ #define XLAT_STR_4 STRINGIFY(BPF_LEN)
  XLAT(BPF_MSH),
+ #define XLAT_VAL_5 ((unsigned) (BPF_MSH))
+ #define XLAT_STR_5 STRINGIFY(BPF_MSH)
  XLAT(BPF_XADD),
- XLAT_END
+ #define XLAT_VAL_6 ((unsigned) (BPF_XADD))
+ #define XLAT_STR_6 STRINGIFY(BPF_XADD)
 };
+static
+const struct xlat bpf_mode[1] = { {
+ .data = bpf_mode_xdata,
+ .size = ARRAY_SIZE(bpf_mode_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 96be4230b13d5dd929a90df901a64c3dfea1a6be..ca8c7290dc64fbe185dc3e84e5b8e662d3018fd3 100644 (file)
@@ -110,25 +110,173 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat bpf_op_alu[] = {
+static const struct xlat_data bpf_op_alu_xdata[] = {
  XLAT(BPF_ADD),
+ #define XLAT_VAL_0 ((unsigned) (BPF_ADD))
+ #define XLAT_STR_0 STRINGIFY(BPF_ADD)
  XLAT(BPF_SUB),
+ #define XLAT_VAL_1 ((unsigned) (BPF_SUB))
+ #define XLAT_STR_1 STRINGIFY(BPF_SUB)
  XLAT(BPF_MUL),
+ #define XLAT_VAL_2 ((unsigned) (BPF_MUL))
+ #define XLAT_STR_2 STRINGIFY(BPF_MUL)
  XLAT(BPF_DIV),
+ #define XLAT_VAL_3 ((unsigned) (BPF_DIV))
+ #define XLAT_STR_3 STRINGIFY(BPF_DIV)
  XLAT(BPF_OR),
+ #define XLAT_VAL_4 ((unsigned) (BPF_OR))
+ #define XLAT_STR_4 STRINGIFY(BPF_OR)
  XLAT(BPF_AND),
+ #define XLAT_VAL_5 ((unsigned) (BPF_AND))
+ #define XLAT_STR_5 STRINGIFY(BPF_AND)
  XLAT(BPF_LSH),
+ #define XLAT_VAL_6 ((unsigned) (BPF_LSH))
+ #define XLAT_STR_6 STRINGIFY(BPF_LSH)
  XLAT(BPF_RSH),
+ #define XLAT_VAL_7 ((unsigned) (BPF_RSH))
+ #define XLAT_STR_7 STRINGIFY(BPF_RSH)
  XLAT(BPF_NEG),
+ #define XLAT_VAL_8 ((unsigned) (BPF_NEG))
+ #define XLAT_STR_8 STRINGIFY(BPF_NEG)
  XLAT(BPF_MOD),
+ #define XLAT_VAL_9 ((unsigned) (BPF_MOD))
+ #define XLAT_STR_9 STRINGIFY(BPF_MOD)
  XLAT(BPF_XOR),
+ #define XLAT_VAL_10 ((unsigned) (BPF_XOR))
+ #define XLAT_STR_10 STRINGIFY(BPF_XOR)
  XLAT(BPF_MOV),
+ #define XLAT_VAL_11 ((unsigned) (BPF_MOV))
+ #define XLAT_STR_11 STRINGIFY(BPF_MOV)
  XLAT(BPF_ARSH),
+ #define XLAT_VAL_12 ((unsigned) (BPF_ARSH))
+ #define XLAT_STR_12 STRINGIFY(BPF_ARSH)
  XLAT(BPF_END),
- XLAT_END
+ #define XLAT_VAL_13 ((unsigned) (BPF_END))
+ #define XLAT_STR_13 STRINGIFY(BPF_END)
 };
+static
+const struct xlat bpf_op_alu[1] = { {
+ .data = bpf_op_alu_xdata,
+ .size = ARRAY_SIZE(bpf_op_alu_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 56d1a42b8f515dccd6ad8af0e6135929b8c1b98b..2c9ac03049523bedf112b69fe83c18e36bd39193 100644 (file)
@@ -110,25 +110,173 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat bpf_op_jmp[] = {
+static const struct xlat_data bpf_op_jmp_xdata[] = {
  XLAT(BPF_JA),
+ #define XLAT_VAL_0 ((unsigned) (BPF_JA))
+ #define XLAT_STR_0 STRINGIFY(BPF_JA)
  XLAT(BPF_JEQ),
+ #define XLAT_VAL_1 ((unsigned) (BPF_JEQ))
+ #define XLAT_STR_1 STRINGIFY(BPF_JEQ)
  XLAT(BPF_JGT),
+ #define XLAT_VAL_2 ((unsigned) (BPF_JGT))
+ #define XLAT_STR_2 STRINGIFY(BPF_JGT)
  XLAT(BPF_JGE),
+ #define XLAT_VAL_3 ((unsigned) (BPF_JGE))
+ #define XLAT_STR_3 STRINGIFY(BPF_JGE)
  XLAT(BPF_JSET),
+ #define XLAT_VAL_4 ((unsigned) (BPF_JSET))
+ #define XLAT_STR_4 STRINGIFY(BPF_JSET)
  XLAT(BPF_JNE),
+ #define XLAT_VAL_5 ((unsigned) (BPF_JNE))
+ #define XLAT_STR_5 STRINGIFY(BPF_JNE)
  XLAT(BPF_JSGT),
+ #define XLAT_VAL_6 ((unsigned) (BPF_JSGT))
+ #define XLAT_STR_6 STRINGIFY(BPF_JSGT)
  XLAT(BPF_JSGE),
+ #define XLAT_VAL_7 ((unsigned) (BPF_JSGE))
+ #define XLAT_STR_7 STRINGIFY(BPF_JSGE)
  XLAT(BPF_CALL),
+ #define XLAT_VAL_8 ((unsigned) (BPF_CALL))
+ #define XLAT_STR_8 STRINGIFY(BPF_CALL)
  XLAT(BPF_EXIT),
+ #define XLAT_VAL_9 ((unsigned) (BPF_EXIT))
+ #define XLAT_STR_9 STRINGIFY(BPF_EXIT)
  XLAT(BPF_JLT),
+ #define XLAT_VAL_10 ((unsigned) (BPF_JLT))
+ #define XLAT_STR_10 STRINGIFY(BPF_JLT)
  XLAT(BPF_JLE),
+ #define XLAT_VAL_11 ((unsigned) (BPF_JLE))
+ #define XLAT_STR_11 STRINGIFY(BPF_JLE)
  XLAT(BPF_JSLT),
+ #define XLAT_VAL_12 ((unsigned) (BPF_JSLT))
+ #define XLAT_STR_12 STRINGIFY(BPF_JSLT)
  XLAT(BPF_JSLE),
- XLAT_END
+ #define XLAT_VAL_13 ((unsigned) (BPF_JSLE))
+ #define XLAT_STR_13 STRINGIFY(BPF_JSLE)
 };
+static
+const struct xlat bpf_op_jmp[1] = { {
+ .data = bpf_op_jmp_xdata,
+ .size = ARRAY_SIZE(bpf_op_jmp_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index e33d0b6301e1bc5de378517f47c7ced7dc4b424c..eed59c88972856075beb751fdebce9f3a6efccb8 100644 (file)
@@ -17,6 +17,20 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define BPF_F_ANY_ALIGNMENT (1U << 1)
 #endif
+#if defined(BPF_F_TEST_RND_HI32) || (defined(HAVE_DECL_BPF_F_TEST_RND_HI32) && HAVE_DECL_BPF_F_TEST_RND_HI32)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_F_TEST_RND_HI32) == ((1U << 2)), "BPF_F_TEST_RND_HI32 != (1U << 2)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_F_TEST_RND_HI32 (1U << 2)
+#endif
+#if defined(BPF_F_TEST_STATE_FREQ) || (defined(HAVE_DECL_BPF_F_TEST_STATE_FREQ) && HAVE_DECL_BPF_F_TEST_STATE_FREQ)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_F_TEST_STATE_FREQ) == ((1U << 3)), "BPF_F_TEST_STATE_FREQ != (1U << 3)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_F_TEST_STATE_FREQ (1U << 3)
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
@@ -26,13 +40,63 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat bpf_prog_flags[] = {
+static const struct xlat_data bpf_prog_flags_xdata[] = {
  XLAT(BPF_F_STRICT_ALIGNMENT),
+ #define XLAT_VAL_0 ((unsigned) (BPF_F_STRICT_ALIGNMENT))
+ #define XLAT_STR_0 STRINGIFY(BPF_F_STRICT_ALIGNMENT)
  XLAT(BPF_F_ANY_ALIGNMENT),
- XLAT_END
+ #define XLAT_VAL_1 ((unsigned) (BPF_F_ANY_ALIGNMENT))
+ #define XLAT_STR_1 STRINGIFY(BPF_F_ANY_ALIGNMENT)
+ XLAT(BPF_F_TEST_RND_HI32),
+ #define XLAT_VAL_2 ((unsigned) (BPF_F_TEST_RND_HI32))
+ #define XLAT_STR_2 STRINGIFY(BPF_F_TEST_RND_HI32)
+ XLAT(BPF_F_TEST_STATE_FREQ),
+ #define XLAT_VAL_3 ((unsigned) (BPF_F_TEST_STATE_FREQ))
+ #define XLAT_STR_3 STRINGIFY(BPF_F_TEST_STATE_FREQ)
 };
+static
+const struct xlat bpf_prog_flags[1] = { {
+ .data = bpf_prog_flags_xdata,
+ .size = ARRAY_SIZE(bpf_prog_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index e9eb42aa431cd4e5443fe9d520a6bad7843fc1ab..74c28972084581945c30f7877e5df9a0ba637442 100644 (file)
@@ -1,2 +1,4 @@
 BPF_F_STRICT_ALIGNMENT 1U
 BPF_F_ANY_ALIGNMENT    (1U << 1)
+BPF_F_TEST_RND_HI32    (1U << 2)
+BPF_F_TEST_STATE_FREQ  (1U << 3)
index 14bd253da4a25988dcce40b6e5a8839a7457f18f..dea97dbc403430a7161a8897769ac8c34be052ba 100644 (file)
@@ -129,33 +129,96 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define BPF_PROG_TYPE_RAW_TRACEPOINT 17
 #endif
+#if defined(BPF_PROG_TYPE_CGROUP_SOCK_ADDR) || (defined(HAVE_DECL_BPF_PROG_TYPE_CGROUP_SOCK_ADDR) && HAVE_DECL_BPF_PROG_TYPE_CGROUP_SOCK_ADDR)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_PROG_TYPE_CGROUP_SOCK_ADDR) == (18), "BPF_PROG_TYPE_CGROUP_SOCK_ADDR != 18");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_PROG_TYPE_CGROUP_SOCK_ADDR 18
+#endif
 #if defined(BPF_PROG_TYPE_LWT_SEG6LOCAL) || (defined(HAVE_DECL_BPF_PROG_TYPE_LWT_SEG6LOCAL) && HAVE_DECL_BPF_PROG_TYPE_LWT_SEG6LOCAL)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((BPF_PROG_TYPE_LWT_SEG6LOCAL) == (18), "BPF_PROG_TYPE_LWT_SEG6LOCAL != 18");
+static_assert((BPF_PROG_TYPE_LWT_SEG6LOCAL) == (19), "BPF_PROG_TYPE_LWT_SEG6LOCAL != 19");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define BPF_PROG_TYPE_LWT_SEG6LOCAL 18
+# define BPF_PROG_TYPE_LWT_SEG6LOCAL 19
 #endif
 #if defined(BPF_PROG_TYPE_LIRC_MODE2) || (defined(HAVE_DECL_BPF_PROG_TYPE_LIRC_MODE2) && HAVE_DECL_BPF_PROG_TYPE_LIRC_MODE2)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((BPF_PROG_TYPE_LIRC_MODE2) == (19), "BPF_PROG_TYPE_LIRC_MODE2 != 19");
+static_assert((BPF_PROG_TYPE_LIRC_MODE2) == (20), "BPF_PROG_TYPE_LIRC_MODE2 != 20");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define BPF_PROG_TYPE_LIRC_MODE2 19
+# define BPF_PROG_TYPE_LIRC_MODE2 20
 #endif
 #if defined(BPF_PROG_TYPE_SK_REUSEPORT) || (defined(HAVE_DECL_BPF_PROG_TYPE_SK_REUSEPORT) && HAVE_DECL_BPF_PROG_TYPE_SK_REUSEPORT)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((BPF_PROG_TYPE_SK_REUSEPORT) == (20), "BPF_PROG_TYPE_SK_REUSEPORT != 20");
+static_assert((BPF_PROG_TYPE_SK_REUSEPORT) == (21), "BPF_PROG_TYPE_SK_REUSEPORT != 21");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define BPF_PROG_TYPE_SK_REUSEPORT 20
+# define BPF_PROG_TYPE_SK_REUSEPORT 21
 #endif
 #if defined(BPF_PROG_TYPE_FLOW_DISSECTOR) || (defined(HAVE_DECL_BPF_PROG_TYPE_FLOW_DISSECTOR) && HAVE_DECL_BPF_PROG_TYPE_FLOW_DISSECTOR)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((BPF_PROG_TYPE_FLOW_DISSECTOR) == (21), "BPF_PROG_TYPE_FLOW_DISSECTOR != 21");
+static_assert((BPF_PROG_TYPE_FLOW_DISSECTOR) == (22), "BPF_PROG_TYPE_FLOW_DISSECTOR != 22");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_PROG_TYPE_FLOW_DISSECTOR 22
+#endif
+#if defined(BPF_PROG_TYPE_CGROUP_SYSCTL) || (defined(HAVE_DECL_BPF_PROG_TYPE_CGROUP_SYSCTL) && HAVE_DECL_BPF_PROG_TYPE_CGROUP_SYSCTL)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_PROG_TYPE_CGROUP_SYSCTL) == (23), "BPF_PROG_TYPE_CGROUP_SYSCTL != 23");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_PROG_TYPE_CGROUP_SYSCTL 23
+#endif
+#if defined(BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE) || (defined(HAVE_DECL_BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE) && HAVE_DECL_BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE) == (24), "BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE != 24");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE 24
+#endif
+#if defined(BPF_PROG_TYPE_CGROUP_SOCKOPT) || (defined(HAVE_DECL_BPF_PROG_TYPE_CGROUP_SOCKOPT) && HAVE_DECL_BPF_PROG_TYPE_CGROUP_SOCKOPT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_PROG_TYPE_CGROUP_SOCKOPT) == (25), "BPF_PROG_TYPE_CGROUP_SOCKOPT != 25");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_PROG_TYPE_CGROUP_SOCKOPT 25
+#endif
+#if defined(BPF_PROG_TYPE_TRACING) || (defined(HAVE_DECL_BPF_PROG_TYPE_TRACING) && HAVE_DECL_BPF_PROG_TYPE_TRACING)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_PROG_TYPE_TRACING) == (26), "BPF_PROG_TYPE_TRACING != 26");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_PROG_TYPE_TRACING 26
+#endif
+#if defined(BPF_PROG_TYPE_STRUCT_OPS) || (defined(HAVE_DECL_BPF_PROG_TYPE_STRUCT_OPS) && HAVE_DECL_BPF_PROG_TYPE_STRUCT_OPS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_PROG_TYPE_STRUCT_OPS) == (27), "BPF_PROG_TYPE_STRUCT_OPS != 27");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define BPF_PROG_TYPE_FLOW_DISSECTOR 21
+# define BPF_PROG_TYPE_STRUCT_OPS 27
+#endif
+#if defined(BPF_PROG_TYPE_EXT) || (defined(HAVE_DECL_BPF_PROG_TYPE_EXT) && HAVE_DECL_BPF_PROG_TYPE_EXT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_PROG_TYPE_EXT) == (28), "BPF_PROG_TYPE_EXT != 28");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_PROG_TYPE_EXT 28
+#endif
+#if defined(BPF_PROG_TYPE_LSM) || (defined(HAVE_DECL_BPF_PROG_TYPE_LSM) && HAVE_DECL_BPF_PROG_TYPE_LSM)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_PROG_TYPE_LSM) == (29), "BPF_PROG_TYPE_LSM != 29");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_PROG_TYPE_LSM 29
+#endif
+#if defined(BPF_PROG_TYPE_SK_LOOKUP) || (defined(HAVE_DECL_BPF_PROG_TYPE_SK_LOOKUP) && HAVE_DECL_BPF_PROG_TYPE_SK_LOOKUP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_PROG_TYPE_SK_LOOKUP) == (30), "BPF_PROG_TYPE_SK_LOOKUP != 30");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_PROG_TYPE_SK_LOOKUP 30
 #endif
 
 #ifndef XLAT_MACROS_ONLY
@@ -166,33 +229,360 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat bpf_prog_types[] = {
+static const struct xlat_data bpf_prog_types_xdata[] = {
  [BPF_PROG_TYPE_UNSPEC] = XLAT(BPF_PROG_TYPE_UNSPEC),
+ #define XLAT_VAL_0 ((unsigned) (BPF_PROG_TYPE_UNSPEC))
+ #define XLAT_STR_0 STRINGIFY(BPF_PROG_TYPE_UNSPEC)
  [BPF_PROG_TYPE_SOCKET_FILTER] = XLAT(BPF_PROG_TYPE_SOCKET_FILTER),
+ #define XLAT_VAL_1 ((unsigned) (BPF_PROG_TYPE_SOCKET_FILTER))
+ #define XLAT_STR_1 STRINGIFY(BPF_PROG_TYPE_SOCKET_FILTER)
  [BPF_PROG_TYPE_KPROBE] = XLAT(BPF_PROG_TYPE_KPROBE),
+ #define XLAT_VAL_2 ((unsigned) (BPF_PROG_TYPE_KPROBE))
+ #define XLAT_STR_2 STRINGIFY(BPF_PROG_TYPE_KPROBE)
  [BPF_PROG_TYPE_SCHED_CLS] = XLAT(BPF_PROG_TYPE_SCHED_CLS),
+ #define XLAT_VAL_3 ((unsigned) (BPF_PROG_TYPE_SCHED_CLS))
+ #define XLAT_STR_3 STRINGIFY(BPF_PROG_TYPE_SCHED_CLS)
  [BPF_PROG_TYPE_SCHED_ACT] = XLAT(BPF_PROG_TYPE_SCHED_ACT),
+ #define XLAT_VAL_4 ((unsigned) (BPF_PROG_TYPE_SCHED_ACT))
+ #define XLAT_STR_4 STRINGIFY(BPF_PROG_TYPE_SCHED_ACT)
  [BPF_PROG_TYPE_TRACEPOINT] = XLAT(BPF_PROG_TYPE_TRACEPOINT),
+ #define XLAT_VAL_5 ((unsigned) (BPF_PROG_TYPE_TRACEPOINT))
+ #define XLAT_STR_5 STRINGIFY(BPF_PROG_TYPE_TRACEPOINT)
  [BPF_PROG_TYPE_XDP] = XLAT(BPF_PROG_TYPE_XDP),
+ #define XLAT_VAL_6 ((unsigned) (BPF_PROG_TYPE_XDP))
+ #define XLAT_STR_6 STRINGIFY(BPF_PROG_TYPE_XDP)
  [BPF_PROG_TYPE_PERF_EVENT] = XLAT(BPF_PROG_TYPE_PERF_EVENT),
+ #define XLAT_VAL_7 ((unsigned) (BPF_PROG_TYPE_PERF_EVENT))
+ #define XLAT_STR_7 STRINGIFY(BPF_PROG_TYPE_PERF_EVENT)
  [BPF_PROG_TYPE_CGROUP_SKB] = XLAT(BPF_PROG_TYPE_CGROUP_SKB),
+ #define XLAT_VAL_8 ((unsigned) (BPF_PROG_TYPE_CGROUP_SKB))
+ #define XLAT_STR_8 STRINGIFY(BPF_PROG_TYPE_CGROUP_SKB)
  [BPF_PROG_TYPE_CGROUP_SOCK] = XLAT(BPF_PROG_TYPE_CGROUP_SOCK),
+ #define XLAT_VAL_9 ((unsigned) (BPF_PROG_TYPE_CGROUP_SOCK))
+ #define XLAT_STR_9 STRINGIFY(BPF_PROG_TYPE_CGROUP_SOCK)
  [BPF_PROG_TYPE_LWT_IN] = XLAT(BPF_PROG_TYPE_LWT_IN),
+ #define XLAT_VAL_10 ((unsigned) (BPF_PROG_TYPE_LWT_IN))
+ #define XLAT_STR_10 STRINGIFY(BPF_PROG_TYPE_LWT_IN)
  [BPF_PROG_TYPE_LWT_OUT] = XLAT(BPF_PROG_TYPE_LWT_OUT),
+ #define XLAT_VAL_11 ((unsigned) (BPF_PROG_TYPE_LWT_OUT))
+ #define XLAT_STR_11 STRINGIFY(BPF_PROG_TYPE_LWT_OUT)
  [BPF_PROG_TYPE_LWT_XMIT] = XLAT(BPF_PROG_TYPE_LWT_XMIT),
+ #define XLAT_VAL_12 ((unsigned) (BPF_PROG_TYPE_LWT_XMIT))
+ #define XLAT_STR_12 STRINGIFY(BPF_PROG_TYPE_LWT_XMIT)
  [BPF_PROG_TYPE_SOCK_OPS] = XLAT(BPF_PROG_TYPE_SOCK_OPS),
+ #define XLAT_VAL_13 ((unsigned) (BPF_PROG_TYPE_SOCK_OPS))
+ #define XLAT_STR_13 STRINGIFY(BPF_PROG_TYPE_SOCK_OPS)
  [BPF_PROG_TYPE_SK_SKB] = XLAT(BPF_PROG_TYPE_SK_SKB),
+ #define XLAT_VAL_14 ((unsigned) (BPF_PROG_TYPE_SK_SKB))
+ #define XLAT_STR_14 STRINGIFY(BPF_PROG_TYPE_SK_SKB)
  [BPF_PROG_TYPE_CGROUP_DEVICE] = XLAT(BPF_PROG_TYPE_CGROUP_DEVICE),
+ #define XLAT_VAL_15 ((unsigned) (BPF_PROG_TYPE_CGROUP_DEVICE))
+ #define XLAT_STR_15 STRINGIFY(BPF_PROG_TYPE_CGROUP_DEVICE)
  [BPF_PROG_TYPE_SK_MSG] = XLAT(BPF_PROG_TYPE_SK_MSG),
+ #define XLAT_VAL_16 ((unsigned) (BPF_PROG_TYPE_SK_MSG))
+ #define XLAT_STR_16 STRINGIFY(BPF_PROG_TYPE_SK_MSG)
  [BPF_PROG_TYPE_RAW_TRACEPOINT] = XLAT(BPF_PROG_TYPE_RAW_TRACEPOINT),
+ #define XLAT_VAL_17 ((unsigned) (BPF_PROG_TYPE_RAW_TRACEPOINT))
+ #define XLAT_STR_17 STRINGIFY(BPF_PROG_TYPE_RAW_TRACEPOINT)
+ [BPF_PROG_TYPE_CGROUP_SOCK_ADDR] = XLAT(BPF_PROG_TYPE_CGROUP_SOCK_ADDR),
+ #define XLAT_VAL_18 ((unsigned) (BPF_PROG_TYPE_CGROUP_SOCK_ADDR))
+ #define XLAT_STR_18 STRINGIFY(BPF_PROG_TYPE_CGROUP_SOCK_ADDR)
  [BPF_PROG_TYPE_LWT_SEG6LOCAL] = XLAT(BPF_PROG_TYPE_LWT_SEG6LOCAL),
+ #define XLAT_VAL_19 ((unsigned) (BPF_PROG_TYPE_LWT_SEG6LOCAL))
+ #define XLAT_STR_19 STRINGIFY(BPF_PROG_TYPE_LWT_SEG6LOCAL)
  [BPF_PROG_TYPE_LIRC_MODE2] = XLAT(BPF_PROG_TYPE_LIRC_MODE2),
+ #define XLAT_VAL_20 ((unsigned) (BPF_PROG_TYPE_LIRC_MODE2))
+ #define XLAT_STR_20 STRINGIFY(BPF_PROG_TYPE_LIRC_MODE2)
  [BPF_PROG_TYPE_SK_REUSEPORT] = XLAT(BPF_PROG_TYPE_SK_REUSEPORT),
+ #define XLAT_VAL_21 ((unsigned) (BPF_PROG_TYPE_SK_REUSEPORT))
+ #define XLAT_STR_21 STRINGIFY(BPF_PROG_TYPE_SK_REUSEPORT)
  [BPF_PROG_TYPE_FLOW_DISSECTOR] = XLAT(BPF_PROG_TYPE_FLOW_DISSECTOR),
- XLAT_END
+ #define XLAT_VAL_22 ((unsigned) (BPF_PROG_TYPE_FLOW_DISSECTOR))
+ #define XLAT_STR_22 STRINGIFY(BPF_PROG_TYPE_FLOW_DISSECTOR)
+ [BPF_PROG_TYPE_CGROUP_SYSCTL] = XLAT(BPF_PROG_TYPE_CGROUP_SYSCTL),
+ #define XLAT_VAL_23 ((unsigned) (BPF_PROG_TYPE_CGROUP_SYSCTL))
+ #define XLAT_STR_23 STRINGIFY(BPF_PROG_TYPE_CGROUP_SYSCTL)
+ [BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE] = XLAT(BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE),
+ #define XLAT_VAL_24 ((unsigned) (BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE))
+ #define XLAT_STR_24 STRINGIFY(BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE)
+ [BPF_PROG_TYPE_CGROUP_SOCKOPT] = XLAT(BPF_PROG_TYPE_CGROUP_SOCKOPT),
+ #define XLAT_VAL_25 ((unsigned) (BPF_PROG_TYPE_CGROUP_SOCKOPT))
+ #define XLAT_STR_25 STRINGIFY(BPF_PROG_TYPE_CGROUP_SOCKOPT)
+ [BPF_PROG_TYPE_TRACING] = XLAT(BPF_PROG_TYPE_TRACING),
+ #define XLAT_VAL_26 ((unsigned) (BPF_PROG_TYPE_TRACING))
+ #define XLAT_STR_26 STRINGIFY(BPF_PROG_TYPE_TRACING)
+ [BPF_PROG_TYPE_STRUCT_OPS] = XLAT(BPF_PROG_TYPE_STRUCT_OPS),
+ #define XLAT_VAL_27 ((unsigned) (BPF_PROG_TYPE_STRUCT_OPS))
+ #define XLAT_STR_27 STRINGIFY(BPF_PROG_TYPE_STRUCT_OPS)
+ [BPF_PROG_TYPE_EXT] = XLAT(BPF_PROG_TYPE_EXT),
+ #define XLAT_VAL_28 ((unsigned) (BPF_PROG_TYPE_EXT))
+ #define XLAT_STR_28 STRINGIFY(BPF_PROG_TYPE_EXT)
+ [BPF_PROG_TYPE_LSM] = XLAT(BPF_PROG_TYPE_LSM),
+ #define XLAT_VAL_29 ((unsigned) (BPF_PROG_TYPE_LSM))
+ #define XLAT_STR_29 STRINGIFY(BPF_PROG_TYPE_LSM)
+ [BPF_PROG_TYPE_SK_LOOKUP] = XLAT(BPF_PROG_TYPE_SK_LOOKUP),
+ #define XLAT_VAL_30 ((unsigned) (BPF_PROG_TYPE_SK_LOOKUP))
+ #define XLAT_STR_30 STRINGIFY(BPF_PROG_TYPE_SK_LOOKUP)
 };
+static
+const struct xlat bpf_prog_types[1] = { {
+ .data = bpf_prog_types_xdata,
+ .size = ARRAY_SIZE(bpf_prog_types_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+#  ifdef XLAT_VAL_30
+  | XLAT_VAL_30
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+#  ifdef XLAT_STR_30
+  + sizeof(XLAT_STR_30)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
+#  undef XLAT_STR_30
+#  undef XLAT_VAL_30
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index dd1b40792eab08b706f29ff28922f7115f748f25..2fcb1ef913a34edd1f7c3f73e6ad33b3fbaf8e4e 100644 (file)
@@ -17,7 +17,16 @@ BPF_PROG_TYPE_SK_SKB 14
 BPF_PROG_TYPE_CGROUP_DEVICE 15
 BPF_PROG_TYPE_SK_MSG 16
 BPF_PROG_TYPE_RAW_TRACEPOINT 17
-BPF_PROG_TYPE_LWT_SEG6LOCAL 18
-BPF_PROG_TYPE_LIRC_MODE2 19
-BPF_PROG_TYPE_SK_REUSEPORT 20
-BPF_PROG_TYPE_FLOW_DISSECTOR 21
+BPF_PROG_TYPE_CGROUP_SOCK_ADDR 18
+BPF_PROG_TYPE_LWT_SEG6LOCAL 19
+BPF_PROG_TYPE_LIRC_MODE2 20
+BPF_PROG_TYPE_SK_REUSEPORT 21
+BPF_PROG_TYPE_FLOW_DISSECTOR 22
+BPF_PROG_TYPE_CGROUP_SYSCTL 23
+BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE 24
+BPF_PROG_TYPE_CGROUP_SOCKOPT 25
+BPF_PROG_TYPE_TRACING 26
+BPF_PROG_TYPE_STRUCT_OPS 27
+BPF_PROG_TYPE_EXT 28
+BPF_PROG_TYPE_LSM 29
+BPF_PROG_TYPE_SK_LOOKUP 30
index 38f84b4d1414a5eb953e62fc2452616b0ecef9a3..0a11a36400e394406de1fb52cf86eddebe7adc81 100644 (file)
@@ -19,12 +19,30 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat bpf_query_flags[] = {
+static const struct xlat_data bpf_query_flags_xdata[] = {
  XLAT(BPF_F_QUERY_EFFECTIVE),
- XLAT_END
+ #define XLAT_VAL_0 ((unsigned) (BPF_F_QUERY_EFFECTIVE))
+ #define XLAT_STR_0 STRINGIFY(BPF_F_QUERY_EFFECTIVE)
 };
-
+static
+const struct xlat bpf_query_flags[1] = { {
+ .data = bpf_query_flags_xdata,
+ .size = ARRAY_SIZE(bpf_query_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 85a11c1a9e66c96671523cf36c4e3ebe5522a7fe..362c8e770e8ad7f0d7aad65f732c473d7ccd25c6 100644 (file)
@@ -33,14 +33,52 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat bpf_rval[] = {
+static const struct xlat_data bpf_rval_xdata[] = {
  XLAT(BPF_K),
+ #define XLAT_VAL_0 ((unsigned) (BPF_K))
+ #define XLAT_STR_0 STRINGIFY(BPF_K)
  XLAT(BPF_X),
+ #define XLAT_VAL_1 ((unsigned) (BPF_X))
+ #define XLAT_STR_1 STRINGIFY(BPF_X)
  XLAT(BPF_A),
- XLAT_END
+ #define XLAT_VAL_2 ((unsigned) (BPF_A))
+ #define XLAT_STR_2 STRINGIFY(BPF_A)
 };
+static
+const struct xlat bpf_rval[1] = { {
+ .data = bpf_rval_xdata,
+ .size = ARRAY_SIZE(bpf_rval_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 51aa5399f41003c9a2767dec72e94706a72e3fa7..da7df64d49203610be550f6556a952d5cbecf498 100644 (file)
@@ -40,15 +40,63 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat bpf_size[] = {
+static const struct xlat_data bpf_size_xdata[] = {
  XLAT(BPF_W),
+ #define XLAT_VAL_0 ((unsigned) (BPF_W))
+ #define XLAT_STR_0 STRINGIFY(BPF_W)
  XLAT(BPF_H),
+ #define XLAT_VAL_1 ((unsigned) (BPF_H))
+ #define XLAT_STR_1 STRINGIFY(BPF_H)
  XLAT(BPF_B),
+ #define XLAT_VAL_2 ((unsigned) (BPF_B))
+ #define XLAT_STR_2 STRINGIFY(BPF_B)
  XLAT(BPF_DW),
- XLAT_END
+ #define XLAT_VAL_3 ((unsigned) (BPF_DW))
+ #define XLAT_STR_3 STRINGIFY(BPF_DW)
 };
+static
+const struct xlat bpf_size[1] = { {
+ .data = bpf_size_xdata,
+ .size = ARRAY_SIZE(bpf_size_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index eee32dda867d717c369e89f241137fd101c81f91..9c141045be805ec486ffd42fb9ab3eeab7b2301f 100644 (file)
@@ -26,13 +26,41 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat bpf_src[] = {
+static const struct xlat_data bpf_src_xdata[] = {
  XLAT(BPF_K),
+ #define XLAT_VAL_0 ((unsigned) (BPF_K))
+ #define XLAT_STR_0 STRINGIFY(BPF_K)
  XLAT(BPF_X),
- XLAT_END
+ #define XLAT_VAL_1 ((unsigned) (BPF_X))
+ #define XLAT_STR_1 STRINGIFY(BPF_X)
 };
+static
+const struct xlat bpf_src[1] = { {
+ .data = bpf_src_xdata,
+ .size = ARRAY_SIZE(bpf_src_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index c4d1993d626ddc341fceb2c027bbb125864cb067..e0a22e75a0ca6bece72fe1f7a8f06388f0d774af 100644 (file)
@@ -54,17 +54,85 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat bpf_task_fd_type[] = {
+static const struct xlat_data bpf_task_fd_type_xdata[] = {
  [BPF_FD_TYPE_RAW_TRACEPOINT] = XLAT(BPF_FD_TYPE_RAW_TRACEPOINT),
+ #define XLAT_VAL_0 ((unsigned) (BPF_FD_TYPE_RAW_TRACEPOINT))
+ #define XLAT_STR_0 STRINGIFY(BPF_FD_TYPE_RAW_TRACEPOINT)
  [BPF_FD_TYPE_TRACEPOINT] = XLAT(BPF_FD_TYPE_TRACEPOINT),
+ #define XLAT_VAL_1 ((unsigned) (BPF_FD_TYPE_TRACEPOINT))
+ #define XLAT_STR_1 STRINGIFY(BPF_FD_TYPE_TRACEPOINT)
  [BPF_FD_TYPE_KPROBE] = XLAT(BPF_FD_TYPE_KPROBE),
+ #define XLAT_VAL_2 ((unsigned) (BPF_FD_TYPE_KPROBE))
+ #define XLAT_STR_2 STRINGIFY(BPF_FD_TYPE_KPROBE)
  [BPF_FD_TYPE_KRETPROBE] = XLAT(BPF_FD_TYPE_KRETPROBE),
+ #define XLAT_VAL_3 ((unsigned) (BPF_FD_TYPE_KRETPROBE))
+ #define XLAT_STR_3 STRINGIFY(BPF_FD_TYPE_KRETPROBE)
  [BPF_FD_TYPE_UPROBE] = XLAT(BPF_FD_TYPE_UPROBE),
+ #define XLAT_VAL_4 ((unsigned) (BPF_FD_TYPE_UPROBE))
+ #define XLAT_STR_4 STRINGIFY(BPF_FD_TYPE_UPROBE)
  [BPF_FD_TYPE_URETPROBE] = XLAT(BPF_FD_TYPE_URETPROBE),
- XLAT_END
+ #define XLAT_VAL_5 ((unsigned) (BPF_FD_TYPE_URETPROBE))
+ #define XLAT_STR_5 STRINGIFY(BPF_FD_TYPE_URETPROBE)
 };
+static
+const struct xlat bpf_task_fd_type[1] = { {
+ .data = bpf_task_fd_type_xdata,
+ .size = ARRAY_SIZE(bpf_task_fd_type_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index fc0f083b0db55ec109d7dfdf21765b0c179b7510..6d3ca6ca2a0bee328c2aa8d0601b6e6f376fb4d2 100644 (file)
@@ -26,13 +26,41 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat bsg_flags[] = {
+static const struct xlat_data bsg_flags_xdata[] = {
  XLAT(BSG_FLAG_Q_AT_TAIL),
+ #define XLAT_VAL_0 ((unsigned) (BSG_FLAG_Q_AT_TAIL))
+ #define XLAT_STR_0 STRINGIFY(BSG_FLAG_Q_AT_TAIL)
  XLAT(BSG_FLAG_Q_AT_HEAD),
- XLAT_END
+ #define XLAT_VAL_1 ((unsigned) (BSG_FLAG_Q_AT_HEAD))
+ #define XLAT_STR_1 STRINGIFY(BSG_FLAG_Q_AT_HEAD)
 };
+static
+const struct xlat bsg_flags[1] = { {
+ .data = bsg_flags_xdata,
+ .size = ARRAY_SIZE(bsg_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index fba6c1e5bd494b2999be02f0da9cbf9176b90561..74c611b6b52276e8ac2b0f93de9163a30d6bd444 100644 (file)
 
 # else
 
-static
-const struct xlat bsg_protocol[] = {
+static const struct xlat_data bsg_protocol_xdata[] = {
 #if defined(BSG_PROTOCOL_SCSI) || (defined(HAVE_DECL_BSG_PROTOCOL_SCSI) && HAVE_DECL_BSG_PROTOCOL_SCSI)
   XLAT(BSG_PROTOCOL_SCSI),
+ #define XLAT_VAL_0 ((unsigned) (BSG_PROTOCOL_SCSI))
+ #define XLAT_STR_0 STRINGIFY(BSG_PROTOCOL_SCSI)
 #endif
- XLAT_END
 };
-
+static
+const struct xlat bsg_protocol[1] = { {
+ .data = bsg_protocol_xdata,
+ .size = ARRAY_SIZE(bsg_protocol_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 20752c4416cf75c0543dd2465b602b8ee21976bd..4e34367678355b1ca3156c89bbebb7eef64ec4ca 100644 (file)
 
 # else
 
-static
-const struct xlat bsg_subprotocol[] = {
+static const struct xlat_data bsg_subprotocol_xdata[] = {
 #if defined(BSG_SUB_PROTOCOL_SCSI_CMD) || (defined(HAVE_DECL_BSG_SUB_PROTOCOL_SCSI_CMD) && HAVE_DECL_BSG_SUB_PROTOCOL_SCSI_CMD)
   XLAT(BSG_SUB_PROTOCOL_SCSI_CMD),
+ #define XLAT_VAL_0 ((unsigned) (BSG_SUB_PROTOCOL_SCSI_CMD))
+ #define XLAT_STR_0 STRINGIFY(BSG_SUB_PROTOCOL_SCSI_CMD)
 #endif
 #if defined(BSG_SUB_PROTOCOL_SCSI_TMF) || (defined(HAVE_DECL_BSG_SUB_PROTOCOL_SCSI_TMF) && HAVE_DECL_BSG_SUB_PROTOCOL_SCSI_TMF)
   XLAT(BSG_SUB_PROTOCOL_SCSI_TMF),
+ #define XLAT_VAL_1 ((unsigned) (BSG_SUB_PROTOCOL_SCSI_TMF))
+ #define XLAT_STR_1 STRINGIFY(BSG_SUB_PROTOCOL_SCSI_TMF)
 #endif
 #if defined(BSG_SUB_PROTOCOL_SCSI_TRANSPORT) || (defined(HAVE_DECL_BSG_SUB_PROTOCOL_SCSI_TRANSPORT) && HAVE_DECL_BSG_SUB_PROTOCOL_SCSI_TRANSPORT)
   XLAT(BSG_SUB_PROTOCOL_SCSI_TRANSPORT),
+ #define XLAT_VAL_2 ((unsigned) (BSG_SUB_PROTOCOL_SCSI_TRANSPORT))
+ #define XLAT_STR_2 STRINGIFY(BSG_SUB_PROTOCOL_SCSI_TRANSPORT)
 #endif
- XLAT_END
 };
+static
+const struct xlat bsg_subprotocol[1] = { {
+ .data = bsg_subprotocol_xdata,
+ .size = ARRAY_SIZE(bsg_subprotocol_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index bd2db0195a76834a5726433631f8ea351d0a54b3..82d304d523c29fa7658e7038a1122fd6a0ab9339 100644 (file)
@@ -68,19 +68,107 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat bt_protocols[] = {
+static const struct xlat_data bt_protocols_xdata[] = {
  [BTPROTO_L2CAP] = XLAT(BTPROTO_L2CAP),
+ #define XLAT_VAL_0 ((unsigned) (BTPROTO_L2CAP))
+ #define XLAT_STR_0 STRINGIFY(BTPROTO_L2CAP)
  [BTPROTO_HCI] = XLAT(BTPROTO_HCI),
+ #define XLAT_VAL_1 ((unsigned) (BTPROTO_HCI))
+ #define XLAT_STR_1 STRINGIFY(BTPROTO_HCI)
  [BTPROTO_SCO] = XLAT(BTPROTO_SCO),
+ #define XLAT_VAL_2 ((unsigned) (BTPROTO_SCO))
+ #define XLAT_STR_2 STRINGIFY(BTPROTO_SCO)
  [BTPROTO_RFCOMM] = XLAT(BTPROTO_RFCOMM),
+ #define XLAT_VAL_3 ((unsigned) (BTPROTO_RFCOMM))
+ #define XLAT_STR_3 STRINGIFY(BTPROTO_RFCOMM)
  [BTPROTO_BNEP] = XLAT(BTPROTO_BNEP),
+ #define XLAT_VAL_4 ((unsigned) (BTPROTO_BNEP))
+ #define XLAT_STR_4 STRINGIFY(BTPROTO_BNEP)
  [BTPROTO_CMTP] = XLAT(BTPROTO_CMTP),
+ #define XLAT_VAL_5 ((unsigned) (BTPROTO_CMTP))
+ #define XLAT_STR_5 STRINGIFY(BTPROTO_CMTP)
  [BTPROTO_HIDP] = XLAT(BTPROTO_HIDP),
+ #define XLAT_VAL_6 ((unsigned) (BTPROTO_HIDP))
+ #define XLAT_STR_6 STRINGIFY(BTPROTO_HIDP)
  [BTPROTO_AVDTP] = XLAT(BTPROTO_AVDTP),
- XLAT_END
+ #define XLAT_VAL_7 ((unsigned) (BTPROTO_AVDTP))
+ #define XLAT_STR_7 STRINGIFY(BTPROTO_AVDTP)
 };
+static
+const struct xlat bt_protocols[1] = { {
+ .data = bt_protocols_xdata,
+ .size = ARRAY_SIZE(bt_protocols_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 11eced6471df4ea8bd46637f31c058bed829536d..51bb42635d514b53152abf25af6931b71040bb58 100644 (file)
@@ -89,24 +89,142 @@ extern const struct xlat btrfs_balance_args[];
 
 # else
 
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat btrfs_balance_args[] = {
+static const struct xlat_data btrfs_balance_args_xdata[] = {
  XLAT_TYPE(uint64_t, BTRFS_BALANCE_ARGS_PROFILES),
+ #define XLAT_VAL_0 ((uint64_t) (BTRFS_BALANCE_ARGS_PROFILES))
+ #define XLAT_STR_0 STRINGIFY(BTRFS_BALANCE_ARGS_PROFILES)
  XLAT_TYPE(uint64_t, BTRFS_BALANCE_ARGS_USAGE),
+ #define XLAT_VAL_1 ((uint64_t) (BTRFS_BALANCE_ARGS_USAGE))
+ #define XLAT_STR_1 STRINGIFY(BTRFS_BALANCE_ARGS_USAGE)
  XLAT_TYPE(uint64_t, BTRFS_BALANCE_ARGS_DEVID),
+ #define XLAT_VAL_2 ((uint64_t) (BTRFS_BALANCE_ARGS_DEVID))
+ #define XLAT_STR_2 STRINGIFY(BTRFS_BALANCE_ARGS_DEVID)
  XLAT_TYPE(uint64_t, BTRFS_BALANCE_ARGS_DRANGE),
+ #define XLAT_VAL_3 ((uint64_t) (BTRFS_BALANCE_ARGS_DRANGE))
+ #define XLAT_STR_3 STRINGIFY(BTRFS_BALANCE_ARGS_DRANGE)
  XLAT_TYPE(uint64_t, BTRFS_BALANCE_ARGS_VRANGE),
+ #define XLAT_VAL_4 ((uint64_t) (BTRFS_BALANCE_ARGS_VRANGE))
+ #define XLAT_STR_4 STRINGIFY(BTRFS_BALANCE_ARGS_VRANGE)
  XLAT_TYPE(uint64_t, BTRFS_BALANCE_ARGS_LIMIT),
+ #define XLAT_VAL_5 ((uint64_t) (BTRFS_BALANCE_ARGS_LIMIT))
+ #define XLAT_STR_5 STRINGIFY(BTRFS_BALANCE_ARGS_LIMIT)
  XLAT_TYPE(uint64_t, BTRFS_BALANCE_ARGS_LIMIT_RANGE),
+ #define XLAT_VAL_6 ((uint64_t) (BTRFS_BALANCE_ARGS_LIMIT_RANGE))
+ #define XLAT_STR_6 STRINGIFY(BTRFS_BALANCE_ARGS_LIMIT_RANGE)
  XLAT_TYPE(uint64_t, BTRFS_BALANCE_ARGS_STRIPES_RANGE),
+ #define XLAT_VAL_7 ((uint64_t) (BTRFS_BALANCE_ARGS_STRIPES_RANGE))
+ #define XLAT_STR_7 STRINGIFY(BTRFS_BALANCE_ARGS_STRIPES_RANGE)
  XLAT_TYPE(uint64_t, BTRFS_BALANCE_ARGS_CONVERT),
+ #define XLAT_VAL_8 ((uint64_t) (BTRFS_BALANCE_ARGS_CONVERT))
+ #define XLAT_STR_8 STRINGIFY(BTRFS_BALANCE_ARGS_CONVERT)
  XLAT_TYPE(uint64_t, BTRFS_BALANCE_ARGS_SOFT),
+ #define XLAT_VAL_9 ((uint64_t) (BTRFS_BALANCE_ARGS_SOFT))
+ #define XLAT_STR_9 STRINGIFY(BTRFS_BALANCE_ARGS_SOFT)
  XLAT_TYPE(uint64_t, BTRFS_BALANCE_ARGS_USAGE_RANGE),
- XLAT_END
+ #define XLAT_VAL_10 ((uint64_t) (BTRFS_BALANCE_ARGS_USAGE_RANGE))
+ #define XLAT_STR_10 STRINGIFY(BTRFS_BALANCE_ARGS_USAGE_RANGE)
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat btrfs_balance_args[1] = { {
+ .data = btrfs_balance_args_xdata,
+ .size = ARRAY_SIZE(btrfs_balance_args_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index a7c0040efb8629b018743acf408c4181519516dd..2f602e6a6eacc25aeff7cfa908e87d9c8956f99f 100644 (file)
@@ -26,15 +26,43 @@ extern const struct xlat btrfs_balance_ctl_cmds[];
 
 # else
 
+static const struct xlat_data btrfs_balance_ctl_cmds_xdata[] = {
+ [BTRFS_BALANCE_CTL_PAUSE] = XLAT(BTRFS_BALANCE_CTL_PAUSE),
+ #define XLAT_VAL_0 ((unsigned) (BTRFS_BALANCE_CTL_PAUSE))
+ #define XLAT_STR_0 STRINGIFY(BTRFS_BALANCE_CTL_PAUSE)
+ [BTRFS_BALANCE_CTL_CANCEL] = XLAT(BTRFS_BALANCE_CTL_CANCEL),
+ #define XLAT_VAL_1 ((unsigned) (BTRFS_BALANCE_CTL_CANCEL))
+ #define XLAT_STR_1 STRINGIFY(BTRFS_BALANCE_CTL_CANCEL)
+};
 #  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
 static
 #  endif
-const struct xlat btrfs_balance_ctl_cmds[] = {
- XLAT(BTRFS_BALANCE_CTL_PAUSE),
- XLAT(BTRFS_BALANCE_CTL_CANCEL),
- XLAT_END
-};
+const struct xlat btrfs_balance_ctl_cmds[1] = { {
+ .data = btrfs_balance_ctl_cmds_xdata,
+ .size = ARRAY_SIZE(btrfs_balance_ctl_cmds_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 5cdd0bc54b9641bcad915d940957ec555a18aec3..3e38dd9a26aa72cac5be025a9eddaa0b3157b828 100644 (file)
@@ -1,2 +1,3 @@
+#value_indexed
 BTRFS_BALANCE_CTL_PAUSE         1
 BTRFS_BALANCE_CTL_CANCEL        2
index 875375528c1a04ba38e9daabd92f5ebfa1ba7c6c..f5a9cda23cfc268757773c2a61edf216c19d0e59 100644 (file)
@@ -47,18 +47,76 @@ extern const struct xlat btrfs_balance_flags[];
 
 # else
 
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat btrfs_balance_flags[] = {
+static const struct xlat_data btrfs_balance_flags_xdata[] = {
  XLAT_TYPE(uint64_t, BTRFS_BALANCE_DATA),
+ #define XLAT_VAL_0 ((uint64_t) (BTRFS_BALANCE_DATA))
+ #define XLAT_STR_0 STRINGIFY(BTRFS_BALANCE_DATA)
  XLAT_TYPE(uint64_t, BTRFS_BALANCE_SYSTEM),
+ #define XLAT_VAL_1 ((uint64_t) (BTRFS_BALANCE_SYSTEM))
+ #define XLAT_STR_1 STRINGIFY(BTRFS_BALANCE_SYSTEM)
  XLAT_TYPE(uint64_t, BTRFS_BALANCE_METADATA),
+ #define XLAT_VAL_2 ((uint64_t) (BTRFS_BALANCE_METADATA))
+ #define XLAT_STR_2 STRINGIFY(BTRFS_BALANCE_METADATA)
  XLAT_TYPE(uint64_t, BTRFS_BALANCE_FORCE),
+ #define XLAT_VAL_3 ((uint64_t) (BTRFS_BALANCE_FORCE))
+ #define XLAT_STR_3 STRINGIFY(BTRFS_BALANCE_FORCE)
  XLAT_TYPE(uint64_t, BTRFS_BALANCE_RESUME),
- XLAT_END
+ #define XLAT_VAL_4 ((uint64_t) (BTRFS_BALANCE_RESUME))
+ #define XLAT_STR_4 STRINGIFY(BTRFS_BALANCE_RESUME)
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat btrfs_balance_flags[1] = { {
+ .data = btrfs_balance_flags_xdata,
+ .size = ARRAY_SIZE(btrfs_balance_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 1a14a03dee23a2e82dc50df91f2bb6faea930412..8fc31684b8b67fb27a5c9db7d06aceb78bad8469 100644 (file)
@@ -33,16 +33,54 @@ extern const struct xlat btrfs_balance_state[];
 
 # else
 
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat btrfs_balance_state[] = {
+static const struct xlat_data btrfs_balance_state_xdata[] = {
  XLAT(BTRFS_BALANCE_STATE_RUNNING),
+ #define XLAT_VAL_0 ((unsigned) (BTRFS_BALANCE_STATE_RUNNING))
+ #define XLAT_STR_0 STRINGIFY(BTRFS_BALANCE_STATE_RUNNING)
  XLAT(BTRFS_BALANCE_STATE_PAUSE_REQ),
+ #define XLAT_VAL_1 ((unsigned) (BTRFS_BALANCE_STATE_PAUSE_REQ))
+ #define XLAT_STR_1 STRINGIFY(BTRFS_BALANCE_STATE_PAUSE_REQ)
  XLAT(BTRFS_BALANCE_STATE_CANCEL_REQ),
- XLAT_END
+ #define XLAT_VAL_2 ((unsigned) (BTRFS_BALANCE_STATE_CANCEL_REQ))
+ #define XLAT_STR_2 STRINGIFY(BTRFS_BALANCE_STATE_CANCEL_REQ)
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat btrfs_balance_state[1] = { {
+ .data = btrfs_balance_state_xdata,
+ .size = ARRAY_SIZE(btrfs_balance_state_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 50fa15fc14f2316f37cf23d82b1863d0a29b9d8a..4edc05634d9a4e92a60e3575b8af29c5b47191b3 100644 (file)
@@ -24,6 +24,13 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define BTRFS_COMPRESS_LZO 2
 #endif
+#if defined(BTRFS_COMPRESS_ZSTD) || (defined(HAVE_DECL_BTRFS_COMPRESS_ZSTD) && HAVE_DECL_BTRFS_COMPRESS_ZSTD)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BTRFS_COMPRESS_ZSTD) == (3), "BTRFS_COMPRESS_ZSTD != 3");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BTRFS_COMPRESS_ZSTD 3
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
@@ -33,16 +40,65 @@ extern const struct xlat btrfs_compress_types[];
 
 # else
 
+static const struct xlat_data btrfs_compress_types_xdata[] = {
+ [BTRFS_COMPRESS_NONE] = XLAT(BTRFS_COMPRESS_NONE),
+ #define XLAT_VAL_0 ((unsigned) (BTRFS_COMPRESS_NONE))
+ #define XLAT_STR_0 STRINGIFY(BTRFS_COMPRESS_NONE)
+ [BTRFS_COMPRESS_ZLIB] = XLAT(BTRFS_COMPRESS_ZLIB),
+ #define XLAT_VAL_1 ((unsigned) (BTRFS_COMPRESS_ZLIB))
+ #define XLAT_STR_1 STRINGIFY(BTRFS_COMPRESS_ZLIB)
+ [BTRFS_COMPRESS_LZO] = XLAT(BTRFS_COMPRESS_LZO),
+ #define XLAT_VAL_2 ((unsigned) (BTRFS_COMPRESS_LZO))
+ #define XLAT_STR_2 STRINGIFY(BTRFS_COMPRESS_LZO)
+ [BTRFS_COMPRESS_ZSTD] = XLAT(BTRFS_COMPRESS_ZSTD),
+ #define XLAT_VAL_3 ((unsigned) (BTRFS_COMPRESS_ZSTD))
+ #define XLAT_STR_3 STRINGIFY(BTRFS_COMPRESS_ZSTD)
+};
 #  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
 static
 #  endif
-const struct xlat btrfs_compress_types[] = {
- XLAT(BTRFS_COMPRESS_NONE),
- XLAT(BTRFS_COMPRESS_ZLIB),
- XLAT(BTRFS_COMPRESS_LZO),
- XLAT_END
-};
+const struct xlat btrfs_compress_types[1] = { {
+ .data = btrfs_compress_types_xdata,
+ .size = ARRAY_SIZE(btrfs_compress_types_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index c47d59fcff207cdc1577a29f0faeeeb60e1245b2..595a2855f196841a6084d5fb8286c252a61f4e03 100644 (file)
@@ -1,3 +1,8 @@
+#value_indexed
+#enum
+#include <stdio.h>
+#include <linux/btrfs.h>
 BTRFS_COMPRESS_NONE 0
 BTRFS_COMPRESS_ZLIB 1
 BTRFS_COMPRESS_LZO 2
+BTRFS_COMPRESS_ZSTD 3
diff --git a/xlat/btrfs_compress_types.m4 b/xlat/btrfs_compress_types.m4
new file mode 100644 (file)
index 0000000..ffeeabb
--- /dev/null
@@ -0,0 +1,11 @@
+dnl Generated by ./xlat/gen.sh from ./xlat/btrfs_compress_types.in; do not edit.
+AC_DEFUN([st_CHECK_ENUMS_btrfs_compress_types],[
+AC_CHECK_DECLS(m4_normalize([
+BTRFS_COMPRESS_NONE,
+BTRFS_COMPRESS_ZLIB,
+BTRFS_COMPRESS_LZO,
+BTRFS_COMPRESS_ZSTD
+]),,, [
+#include <stdio.h>
+#include <linux/btrfs.h>
+])])])
index 4904e933c852126085b7052b51ed254f204c909a..4377595d8649a21a0ec7385d20519e5bf88ab6aa 100644 (file)
@@ -26,15 +26,43 @@ extern const struct xlat btrfs_cont_reading_from_srcdev_mode[];
 
 # else
 
+static const struct xlat_data btrfs_cont_reading_from_srcdev_mode_xdata[] = {
+ [BTRFS_IOCTL_DEV_REPLACE_CONT_READING_FROM_SRCDEV_MODE_ALWAYS] = XLAT(BTRFS_IOCTL_DEV_REPLACE_CONT_READING_FROM_SRCDEV_MODE_ALWAYS),
+ #define XLAT_VAL_0 ((unsigned) (BTRFS_IOCTL_DEV_REPLACE_CONT_READING_FROM_SRCDEV_MODE_ALWAYS))
+ #define XLAT_STR_0 STRINGIFY(BTRFS_IOCTL_DEV_REPLACE_CONT_READING_FROM_SRCDEV_MODE_ALWAYS)
+ [BTRFS_IOCTL_DEV_REPLACE_CONT_READING_FROM_SRCDEV_MODE_AVOID] = XLAT(BTRFS_IOCTL_DEV_REPLACE_CONT_READING_FROM_SRCDEV_MODE_AVOID),
+ #define XLAT_VAL_1 ((unsigned) (BTRFS_IOCTL_DEV_REPLACE_CONT_READING_FROM_SRCDEV_MODE_AVOID))
+ #define XLAT_STR_1 STRINGIFY(BTRFS_IOCTL_DEV_REPLACE_CONT_READING_FROM_SRCDEV_MODE_AVOID)
+};
 #  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
 static
 #  endif
-const struct xlat btrfs_cont_reading_from_srcdev_mode[] = {
- XLAT(BTRFS_IOCTL_DEV_REPLACE_CONT_READING_FROM_SRCDEV_MODE_ALWAYS),
- XLAT(BTRFS_IOCTL_DEV_REPLACE_CONT_READING_FROM_SRCDEV_MODE_AVOID),
- XLAT_END
-};
+const struct xlat btrfs_cont_reading_from_srcdev_mode[1] = { {
+ .data = btrfs_cont_reading_from_srcdev_mode_xdata,
+ .size = ARRAY_SIZE(btrfs_cont_reading_from_srcdev_mode_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 0a1decfbc16563ab4a4ccfbf8e1a61e09b6d3098..0ae8b5164901fc13042b326a3d48b4cff0a9273b 100644 (file)
@@ -1,2 +1,3 @@
+#value_indexed
 BTRFS_IOCTL_DEV_REPLACE_CONT_READING_FROM_SRCDEV_MODE_ALWAYS    0
 BTRFS_IOCTL_DEV_REPLACE_CONT_READING_FROM_SRCDEV_MODE_AVOID     1
index 7fac3a4f7518240004cecc929bf7021ec1df500b..438797732f0689c0f289194fd46b6246e2d2d695 100644 (file)
@@ -12,19 +12,47 @@ extern const struct xlat btrfs_defrag_flags[];
 
 # else
 
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat btrfs_defrag_flags[] = {
+static const struct xlat_data btrfs_defrag_flags_xdata[] = {
 #if defined(BTRFS_DEFRAG_RANGE_COMPRESS) || (defined(HAVE_DECL_BTRFS_DEFRAG_RANGE_COMPRESS) && HAVE_DECL_BTRFS_DEFRAG_RANGE_COMPRESS)
   XLAT_TYPE(uint64_t, BTRFS_DEFRAG_RANGE_COMPRESS),
+ #define XLAT_VAL_0 ((uint64_t) (BTRFS_DEFRAG_RANGE_COMPRESS))
+ #define XLAT_STR_0 STRINGIFY(BTRFS_DEFRAG_RANGE_COMPRESS)
 #endif
 #if defined(BTRFS_DEFRAG_RANGE_START_IO) || (defined(HAVE_DECL_BTRFS_DEFRAG_RANGE_START_IO) && HAVE_DECL_BTRFS_DEFRAG_RANGE_START_IO)
   XLAT_TYPE(uint64_t, BTRFS_DEFRAG_RANGE_START_IO),
+ #define XLAT_VAL_1 ((uint64_t) (BTRFS_DEFRAG_RANGE_START_IO))
+ #define XLAT_STR_1 STRINGIFY(BTRFS_DEFRAG_RANGE_START_IO)
 #endif
- XLAT_END
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat btrfs_defrag_flags[1] = { {
+ .data = btrfs_defrag_flags_xdata,
+ .size = ARRAY_SIZE(btrfs_defrag_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index f612ebdfed6ddeac1b0959fd1b4c4b7c40bda308..5fd94699a9856f819a36d0fa7764de39ae392b38 100644 (file)
@@ -12,22 +12,60 @@ extern const struct xlat btrfs_dev_replace_cmds[];
 
 # else
 
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat btrfs_dev_replace_cmds[] = {
+static const struct xlat_data btrfs_dev_replace_cmds_xdata[] = {
 #if defined(BTRFS_IOCTL_DEV_REPLACE_CMD_START) || (defined(HAVE_DECL_BTRFS_IOCTL_DEV_REPLACE_CMD_START) && HAVE_DECL_BTRFS_IOCTL_DEV_REPLACE_CMD_START)
   XLAT_TYPE(uint64_t, BTRFS_IOCTL_DEV_REPLACE_CMD_START),
+ #define XLAT_VAL_0 ((uint64_t) (BTRFS_IOCTL_DEV_REPLACE_CMD_START))
+ #define XLAT_STR_0 STRINGIFY(BTRFS_IOCTL_DEV_REPLACE_CMD_START)
 #endif
 #if defined(BTRFS_IOCTL_DEV_REPLACE_CMD_STATUS) || (defined(HAVE_DECL_BTRFS_IOCTL_DEV_REPLACE_CMD_STATUS) && HAVE_DECL_BTRFS_IOCTL_DEV_REPLACE_CMD_STATUS)
   XLAT_TYPE(uint64_t, BTRFS_IOCTL_DEV_REPLACE_CMD_STATUS),
+ #define XLAT_VAL_1 ((uint64_t) (BTRFS_IOCTL_DEV_REPLACE_CMD_STATUS))
+ #define XLAT_STR_1 STRINGIFY(BTRFS_IOCTL_DEV_REPLACE_CMD_STATUS)
 #endif
 #if defined(BTRFS_IOCTL_DEV_REPLACE_CMD_CANCEL) || (defined(HAVE_DECL_BTRFS_IOCTL_DEV_REPLACE_CMD_CANCEL) && HAVE_DECL_BTRFS_IOCTL_DEV_REPLACE_CMD_CANCEL)
   XLAT_TYPE(uint64_t, BTRFS_IOCTL_DEV_REPLACE_CMD_CANCEL),
+ #define XLAT_VAL_2 ((uint64_t) (BTRFS_IOCTL_DEV_REPLACE_CMD_CANCEL))
+ #define XLAT_STR_2 STRINGIFY(BTRFS_IOCTL_DEV_REPLACE_CMD_CANCEL)
 #endif
- XLAT_END
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat btrfs_dev_replace_cmds[1] = { {
+ .data = btrfs_dev_replace_cmds_xdata,
+ .size = ARRAY_SIZE(btrfs_dev_replace_cmds_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index cf96f4f4c2f1374f2522b986845949fc62981d4d..e12287aff1dbd72fe113f9266dc4822170f9f360 100644 (file)
@@ -12,25 +12,73 @@ extern const struct xlat btrfs_dev_replace_results[];
 
 # else
 
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat btrfs_dev_replace_results[] = {
+static const struct xlat_data btrfs_dev_replace_results_xdata[] = {
 #if defined(BTRFS_IOCTL_DEV_REPLACE_RESULT_NO_ERROR) || (defined(HAVE_DECL_BTRFS_IOCTL_DEV_REPLACE_RESULT_NO_ERROR) && HAVE_DECL_BTRFS_IOCTL_DEV_REPLACE_RESULT_NO_ERROR)
   XLAT_TYPE(uint64_t, BTRFS_IOCTL_DEV_REPLACE_RESULT_NO_ERROR),
+ #define XLAT_VAL_0 ((uint64_t) (BTRFS_IOCTL_DEV_REPLACE_RESULT_NO_ERROR))
+ #define XLAT_STR_0 STRINGIFY(BTRFS_IOCTL_DEV_REPLACE_RESULT_NO_ERROR)
 #endif
 #if defined(BTRFS_IOCTL_DEV_REPLACE_RESULT_NOT_STARTED) || (defined(HAVE_DECL_BTRFS_IOCTL_DEV_REPLACE_RESULT_NOT_STARTED) && HAVE_DECL_BTRFS_IOCTL_DEV_REPLACE_RESULT_NOT_STARTED)
   XLAT_TYPE(uint64_t, BTRFS_IOCTL_DEV_REPLACE_RESULT_NOT_STARTED),
+ #define XLAT_VAL_1 ((uint64_t) (BTRFS_IOCTL_DEV_REPLACE_RESULT_NOT_STARTED))
+ #define XLAT_STR_1 STRINGIFY(BTRFS_IOCTL_DEV_REPLACE_RESULT_NOT_STARTED)
 #endif
 #if defined(BTRFS_IOCTL_DEV_REPLACE_RESULT_ALREADY_STARTED) || (defined(HAVE_DECL_BTRFS_IOCTL_DEV_REPLACE_RESULT_ALREADY_STARTED) && HAVE_DECL_BTRFS_IOCTL_DEV_REPLACE_RESULT_ALREADY_STARTED)
   XLAT_TYPE(uint64_t, BTRFS_IOCTL_DEV_REPLACE_RESULT_ALREADY_STARTED),
+ #define XLAT_VAL_2 ((uint64_t) (BTRFS_IOCTL_DEV_REPLACE_RESULT_ALREADY_STARTED))
+ #define XLAT_STR_2 STRINGIFY(BTRFS_IOCTL_DEV_REPLACE_RESULT_ALREADY_STARTED)
 #endif
 #if defined(BTRFS_IOCTL_DEV_REPLACE_RESULT_SCRUB_INPROGRESS) || (defined(HAVE_DECL_BTRFS_IOCTL_DEV_REPLACE_RESULT_SCRUB_INPROGRESS) && HAVE_DECL_BTRFS_IOCTL_DEV_REPLACE_RESULT_SCRUB_INPROGRESS)
   XLAT_TYPE(uint64_t, BTRFS_IOCTL_DEV_REPLACE_RESULT_SCRUB_INPROGRESS),
+ #define XLAT_VAL_3 ((uint64_t) (BTRFS_IOCTL_DEV_REPLACE_RESULT_SCRUB_INPROGRESS))
+ #define XLAT_STR_3 STRINGIFY(BTRFS_IOCTL_DEV_REPLACE_RESULT_SCRUB_INPROGRESS)
 #endif
- XLAT_END
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat btrfs_dev_replace_results[1] = { {
+ .data = btrfs_dev_replace_results_xdata,
+ .size = ARRAY_SIZE(btrfs_dev_replace_results_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index de5cf7bf8b3ddc54fbf03e9dfd36a07a3fdc8ccb..285d4e6a19e7f29322b4c6fa6b1009c92f6749f9 100644 (file)
@@ -12,28 +12,86 @@ extern const struct xlat btrfs_dev_replace_state[];
 
 # else
 
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat btrfs_dev_replace_state[] = {
+static const struct xlat_data btrfs_dev_replace_state_xdata[] = {
 #if defined(BTRFS_IOCTL_DEV_REPLACE_STATE_NEVER_STARTED) || (defined(HAVE_DECL_BTRFS_IOCTL_DEV_REPLACE_STATE_NEVER_STARTED) && HAVE_DECL_BTRFS_IOCTL_DEV_REPLACE_STATE_NEVER_STARTED)
   XLAT_TYPE(uint64_t, BTRFS_IOCTL_DEV_REPLACE_STATE_NEVER_STARTED),
+ #define XLAT_VAL_0 ((uint64_t) (BTRFS_IOCTL_DEV_REPLACE_STATE_NEVER_STARTED))
+ #define XLAT_STR_0 STRINGIFY(BTRFS_IOCTL_DEV_REPLACE_STATE_NEVER_STARTED)
 #endif
 #if defined(BTRFS_IOCTL_DEV_REPLACE_STATE_STARTED) || (defined(HAVE_DECL_BTRFS_IOCTL_DEV_REPLACE_STATE_STARTED) && HAVE_DECL_BTRFS_IOCTL_DEV_REPLACE_STATE_STARTED)
   XLAT_TYPE(uint64_t, BTRFS_IOCTL_DEV_REPLACE_STATE_STARTED),
+ #define XLAT_VAL_1 ((uint64_t) (BTRFS_IOCTL_DEV_REPLACE_STATE_STARTED))
+ #define XLAT_STR_1 STRINGIFY(BTRFS_IOCTL_DEV_REPLACE_STATE_STARTED)
 #endif
 #if defined(BTRFS_IOCTL_DEV_REPLACE_STATE_FINISHED) || (defined(HAVE_DECL_BTRFS_IOCTL_DEV_REPLACE_STATE_FINISHED) && HAVE_DECL_BTRFS_IOCTL_DEV_REPLACE_STATE_FINISHED)
   XLAT_TYPE(uint64_t, BTRFS_IOCTL_DEV_REPLACE_STATE_FINISHED),
+ #define XLAT_VAL_2 ((uint64_t) (BTRFS_IOCTL_DEV_REPLACE_STATE_FINISHED))
+ #define XLAT_STR_2 STRINGIFY(BTRFS_IOCTL_DEV_REPLACE_STATE_FINISHED)
 #endif
 #if defined(BTRFS_IOCTL_DEV_REPLACE_STATE_CANCELED) || (defined(HAVE_DECL_BTRFS_IOCTL_DEV_REPLACE_STATE_CANCELED) && HAVE_DECL_BTRFS_IOCTL_DEV_REPLACE_STATE_CANCELED)
   XLAT_TYPE(uint64_t, BTRFS_IOCTL_DEV_REPLACE_STATE_CANCELED),
+ #define XLAT_VAL_3 ((uint64_t) (BTRFS_IOCTL_DEV_REPLACE_STATE_CANCELED))
+ #define XLAT_STR_3 STRINGIFY(BTRFS_IOCTL_DEV_REPLACE_STATE_CANCELED)
 #endif
 #if defined(BTRFS_IOCTL_DEV_REPLACE_STATE_SUSPENDED) || (defined(HAVE_DECL_BTRFS_IOCTL_DEV_REPLACE_STATE_SUSPENDED) && HAVE_DECL_BTRFS_IOCTL_DEV_REPLACE_STATE_SUSPENDED)
   XLAT_TYPE(uint64_t, BTRFS_IOCTL_DEV_REPLACE_STATE_SUSPENDED),
+ #define XLAT_VAL_4 ((uint64_t) (BTRFS_IOCTL_DEV_REPLACE_STATE_SUSPENDED))
+ #define XLAT_STR_4 STRINGIFY(BTRFS_IOCTL_DEV_REPLACE_STATE_SUSPENDED)
 #endif
- XLAT_END
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat btrfs_dev_replace_state[1] = { {
+ .data = btrfs_dev_replace_state_xdata,
+ .size = ARRAY_SIZE(btrfs_dev_replace_state_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 29793e5f663f0225246528895da209beec2d72ac..c805e93e636c95394485130483340b553ed248a1 100644 (file)
@@ -12,16 +12,34 @@ extern const struct xlat btrfs_dev_stats_flags[];
 
 # else
 
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat btrfs_dev_stats_flags[] = {
+static const struct xlat_data btrfs_dev_stats_flags_xdata[] = {
 #if defined(BTRFS_DEV_STATS_RESET) || (defined(HAVE_DECL_BTRFS_DEV_STATS_RESET) && HAVE_DECL_BTRFS_DEV_STATS_RESET)
   XLAT_TYPE(uint64_t, BTRFS_DEV_STATS_RESET),
+ #define XLAT_VAL_0 ((uint64_t) (BTRFS_DEV_STATS_RESET))
+ #define XLAT_STR_0 STRINGIFY(BTRFS_DEV_STATS_RESET)
 #endif
- XLAT_END
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat btrfs_dev_stats_flags[1] = { {
+ .data = btrfs_dev_stats_flags_xdata,
+ .size = ARRAY_SIZE(btrfs_dev_stats_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 071507113cb27da31acce6d118d3facbc018b5fc..593fb3196ee6ed5ba5ebb0cf452ab123fd21e1c7 100644 (file)
@@ -12,18 +12,76 @@ extern const struct xlat btrfs_dev_stats_values[];
 
 # else
 
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat btrfs_dev_stats_values[] = {
+static const struct xlat_data btrfs_dev_stats_values_xdata[] = {
  XLAT_TYPE(uint64_t, BTRFS_DEV_STAT_WRITE_ERRS),
+ #define XLAT_VAL_0 ((uint64_t) (BTRFS_DEV_STAT_WRITE_ERRS))
+ #define XLAT_STR_0 STRINGIFY(BTRFS_DEV_STAT_WRITE_ERRS)
  XLAT_TYPE(uint64_t, BTRFS_DEV_STAT_READ_ERRS),
+ #define XLAT_VAL_1 ((uint64_t) (BTRFS_DEV_STAT_READ_ERRS))
+ #define XLAT_STR_1 STRINGIFY(BTRFS_DEV_STAT_READ_ERRS)
  XLAT_TYPE(uint64_t, BTRFS_DEV_STAT_FLUSH_ERRS),
+ #define XLAT_VAL_2 ((uint64_t) (BTRFS_DEV_STAT_FLUSH_ERRS))
+ #define XLAT_STR_2 STRINGIFY(BTRFS_DEV_STAT_FLUSH_ERRS)
  XLAT_TYPE(uint64_t, BTRFS_DEV_STAT_CORRUPTION_ERRS),
+ #define XLAT_VAL_3 ((uint64_t) (BTRFS_DEV_STAT_CORRUPTION_ERRS))
+ #define XLAT_STR_3 STRINGIFY(BTRFS_DEV_STAT_CORRUPTION_ERRS)
  XLAT_TYPE(uint64_t, BTRFS_DEV_STAT_GENERATION_ERRS),
- XLAT_END
+ #define XLAT_VAL_4 ((uint64_t) (BTRFS_DEV_STAT_GENERATION_ERRS))
+ #define XLAT_STR_4 STRINGIFY(BTRFS_DEV_STAT_GENERATION_ERRS)
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat btrfs_dev_stats_values[1] = { {
+ .data = btrfs_dev_stats_values_xdata,
+ .size = ARRAY_SIZE(btrfs_dev_stats_values_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 754dc9e19a6b9af422c2ce746609d4d9cede0d04..d74af31541bc60cb01c06a76c38d275c6efa3ae4 100644 (file)
@@ -12,12 +12,20 @@ extern const struct xlat btrfs_features_compat[];
 
 # else
 
+static const struct xlat_data btrfs_features_compat_xdata[] = {
+};
 #  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
 static
 #  endif
-const struct xlat btrfs_features_compat[] = {
- XLAT_END
-};
+const struct xlat btrfs_features_compat[1] = { {
+ .data = btrfs_features_compat_xdata,
+ .size = ARRAY_SIZE(btrfs_features_compat_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+  ,
+ .flags_strsz = 0
+  ,
+} };
 
 # endif /* !IN_MPERS */
 
index 348782ba0371a119bb71655f4e32f80fa4c84aef..be7dfe67bed06bed8190ef7e2ec09a789dfbb3ef 100644 (file)
@@ -26,15 +26,43 @@ extern const struct xlat btrfs_features_compat_ro[];
 
 # else
 
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat btrfs_features_compat_ro[] = {
+static const struct xlat_data btrfs_features_compat_ro_xdata[] = {
  XLAT_TYPE(uint64_t, BTRFS_FEATURE_COMPAT_RO_FREE_SPACE_TREE),
+ #define XLAT_VAL_0 ((uint64_t) (BTRFS_FEATURE_COMPAT_RO_FREE_SPACE_TREE))
+ #define XLAT_STR_0 STRINGIFY(BTRFS_FEATURE_COMPAT_RO_FREE_SPACE_TREE)
  XLAT_TYPE(uint64_t, BTRFS_FEATURE_COMPAT_RO_FREE_SPACE_TREE_VALID),
- XLAT_END
+ #define XLAT_VAL_1 ((uint64_t) (BTRFS_FEATURE_COMPAT_RO_FREE_SPACE_TREE_VALID))
+ #define XLAT_STR_1 STRINGIFY(BTRFS_FEATURE_COMPAT_RO_FREE_SPACE_TREE_VALID)
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat btrfs_features_compat_ro[1] = { {
+ .data = btrfs_features_compat_ro_xdata,
+ .size = ARRAY_SIZE(btrfs_features_compat_ro_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index ce06f491c8eb3c33046b4c005c8ecbe554f23b6b..fdf4b2ff722d13b9f99ce795e420b1b1eb54965d 100644 (file)
@@ -89,24 +89,142 @@ extern const struct xlat btrfs_features_incompat[];
 
 # else
 
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat btrfs_features_incompat[] = {
+static const struct xlat_data btrfs_features_incompat_xdata[] = {
  XLAT_TYPE(uint64_t, BTRFS_FEATURE_INCOMPAT_MIXED_BACKREF),
+ #define XLAT_VAL_0 ((uint64_t) (BTRFS_FEATURE_INCOMPAT_MIXED_BACKREF))
+ #define XLAT_STR_0 STRINGIFY(BTRFS_FEATURE_INCOMPAT_MIXED_BACKREF)
  XLAT_TYPE(uint64_t, BTRFS_FEATURE_INCOMPAT_DEFAULT_SUBVOL),
+ #define XLAT_VAL_1 ((uint64_t) (BTRFS_FEATURE_INCOMPAT_DEFAULT_SUBVOL))
+ #define XLAT_STR_1 STRINGIFY(BTRFS_FEATURE_INCOMPAT_DEFAULT_SUBVOL)
  XLAT_TYPE(uint64_t, BTRFS_FEATURE_INCOMPAT_MIXED_GROUPS),
+ #define XLAT_VAL_2 ((uint64_t) (BTRFS_FEATURE_INCOMPAT_MIXED_GROUPS))
+ #define XLAT_STR_2 STRINGIFY(BTRFS_FEATURE_INCOMPAT_MIXED_GROUPS)
  XLAT_TYPE(uint64_t, BTRFS_FEATURE_INCOMPAT_COMPRESS_LZO),
+ #define XLAT_VAL_3 ((uint64_t) (BTRFS_FEATURE_INCOMPAT_COMPRESS_LZO))
+ #define XLAT_STR_3 STRINGIFY(BTRFS_FEATURE_INCOMPAT_COMPRESS_LZO)
  XLAT_TYPE(uint64_t, BTRFS_FEATURE_INCOMPAT_COMPRESS_LZOv2),
+ #define XLAT_VAL_4 ((uint64_t) (BTRFS_FEATURE_INCOMPAT_COMPRESS_LZOv2))
+ #define XLAT_STR_4 STRINGIFY(BTRFS_FEATURE_INCOMPAT_COMPRESS_LZOv2)
  XLAT_TYPE(uint64_t, BTRFS_FEATURE_INCOMPAT_BIG_METADATA),
+ #define XLAT_VAL_5 ((uint64_t) (BTRFS_FEATURE_INCOMPAT_BIG_METADATA))
+ #define XLAT_STR_5 STRINGIFY(BTRFS_FEATURE_INCOMPAT_BIG_METADATA)
  XLAT_TYPE(uint64_t, BTRFS_FEATURE_INCOMPAT_EXTENDED_IREF),
+ #define XLAT_VAL_6 ((uint64_t) (BTRFS_FEATURE_INCOMPAT_EXTENDED_IREF))
+ #define XLAT_STR_6 STRINGIFY(BTRFS_FEATURE_INCOMPAT_EXTENDED_IREF)
  XLAT_TYPE(uint64_t, BTRFS_FEATURE_INCOMPAT_RAID56),
+ #define XLAT_VAL_7 ((uint64_t) (BTRFS_FEATURE_INCOMPAT_RAID56))
+ #define XLAT_STR_7 STRINGIFY(BTRFS_FEATURE_INCOMPAT_RAID56)
  XLAT_TYPE(uint64_t, BTRFS_FEATURE_INCOMPAT_SKINNY_METADATA),
+ #define XLAT_VAL_8 ((uint64_t) (BTRFS_FEATURE_INCOMPAT_SKINNY_METADATA))
+ #define XLAT_STR_8 STRINGIFY(BTRFS_FEATURE_INCOMPAT_SKINNY_METADATA)
  XLAT_TYPE(uint64_t, BTRFS_FEATURE_INCOMPAT_NO_HOLES),
+ #define XLAT_VAL_9 ((uint64_t) (BTRFS_FEATURE_INCOMPAT_NO_HOLES))
+ #define XLAT_STR_9 STRINGIFY(BTRFS_FEATURE_INCOMPAT_NO_HOLES)
  XLAT_TYPE(uint64_t, BTRFS_FEATURE_INCOMPAT_METADATA_UUID),
- XLAT_END
+ #define XLAT_VAL_10 ((uint64_t) (BTRFS_FEATURE_INCOMPAT_METADATA_UUID))
+ #define XLAT_STR_10 STRINGIFY(BTRFS_FEATURE_INCOMPAT_METADATA_UUID)
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat btrfs_features_incompat[1] = { {
+ .data = btrfs_features_incompat_xdata,
+ .size = ARRAY_SIZE(btrfs_features_incompat_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 71fcaba0fbe24a937d363841d574f41282a6f1b0..2b441d35229dc60cce377d3473ea1f9784d4274d 100644 (file)
@@ -299,54 +299,472 @@ extern const struct xlat btrfs_key_types[];
 
 # else
 
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat btrfs_key_types[] = {
+static const struct xlat_data btrfs_key_types_xdata[] = {
  XLAT_TYPE(uint64_t, BTRFS_INODE_ITEM_KEY),
+ #define XLAT_VAL_0 ((uint64_t) (BTRFS_INODE_ITEM_KEY))
+ #define XLAT_STR_0 STRINGIFY(BTRFS_INODE_ITEM_KEY)
  XLAT_TYPE(uint64_t, BTRFS_INODE_REF_KEY),
+ #define XLAT_VAL_1 ((uint64_t) (BTRFS_INODE_REF_KEY))
+ #define XLAT_STR_1 STRINGIFY(BTRFS_INODE_REF_KEY)
  XLAT_TYPE(uint64_t, BTRFS_INODE_EXTREF_KEY),
+ #define XLAT_VAL_2 ((uint64_t) (BTRFS_INODE_EXTREF_KEY))
+ #define XLAT_STR_2 STRINGIFY(BTRFS_INODE_EXTREF_KEY)
  XLAT_TYPE(uint64_t, BTRFS_XATTR_ITEM_KEY),
+ #define XLAT_VAL_3 ((uint64_t) (BTRFS_XATTR_ITEM_KEY))
+ #define XLAT_STR_3 STRINGIFY(BTRFS_XATTR_ITEM_KEY)
  XLAT_TYPE(uint64_t, BTRFS_ORPHAN_ITEM_KEY),
+ #define XLAT_VAL_4 ((uint64_t) (BTRFS_ORPHAN_ITEM_KEY))
+ #define XLAT_STR_4 STRINGIFY(BTRFS_ORPHAN_ITEM_KEY)
  XLAT_TYPE(uint64_t, BTRFS_DIR_LOG_ITEM_KEY),
+ #define XLAT_VAL_5 ((uint64_t) (BTRFS_DIR_LOG_ITEM_KEY))
+ #define XLAT_STR_5 STRINGIFY(BTRFS_DIR_LOG_ITEM_KEY)
  XLAT_TYPE(uint64_t, BTRFS_DIR_LOG_INDEX_KEY),
+ #define XLAT_VAL_6 ((uint64_t) (BTRFS_DIR_LOG_INDEX_KEY))
+ #define XLAT_STR_6 STRINGIFY(BTRFS_DIR_LOG_INDEX_KEY)
  XLAT_TYPE(uint64_t, BTRFS_DIR_ITEM_KEY),
+ #define XLAT_VAL_7 ((uint64_t) (BTRFS_DIR_ITEM_KEY))
+ #define XLAT_STR_7 STRINGIFY(BTRFS_DIR_ITEM_KEY)
  XLAT_TYPE(uint64_t, BTRFS_DIR_INDEX_KEY),
+ #define XLAT_VAL_8 ((uint64_t) (BTRFS_DIR_INDEX_KEY))
+ #define XLAT_STR_8 STRINGIFY(BTRFS_DIR_INDEX_KEY)
  XLAT_TYPE(uint64_t, BTRFS_EXTENT_DATA_KEY),
+ #define XLAT_VAL_9 ((uint64_t) (BTRFS_EXTENT_DATA_KEY))
+ #define XLAT_STR_9 STRINGIFY(BTRFS_EXTENT_DATA_KEY)
  XLAT_TYPE(uint64_t, BTRFS_EXTENT_CSUM_KEY),
+ #define XLAT_VAL_10 ((uint64_t) (BTRFS_EXTENT_CSUM_KEY))
+ #define XLAT_STR_10 STRINGIFY(BTRFS_EXTENT_CSUM_KEY)
  XLAT_TYPE(uint64_t, BTRFS_ROOT_ITEM_KEY),
+ #define XLAT_VAL_11 ((uint64_t) (BTRFS_ROOT_ITEM_KEY))
+ #define XLAT_STR_11 STRINGIFY(BTRFS_ROOT_ITEM_KEY)
  XLAT_TYPE(uint64_t, BTRFS_ROOT_BACKREF_KEY),
+ #define XLAT_VAL_12 ((uint64_t) (BTRFS_ROOT_BACKREF_KEY))
+ #define XLAT_STR_12 STRINGIFY(BTRFS_ROOT_BACKREF_KEY)
  XLAT_TYPE(uint64_t, BTRFS_ROOT_REF_KEY),
+ #define XLAT_VAL_13 ((uint64_t) (BTRFS_ROOT_REF_KEY))
+ #define XLAT_STR_13 STRINGIFY(BTRFS_ROOT_REF_KEY)
  XLAT_TYPE(uint64_t, BTRFS_EXTENT_ITEM_KEY),
+ #define XLAT_VAL_14 ((uint64_t) (BTRFS_EXTENT_ITEM_KEY))
+ #define XLAT_STR_14 STRINGIFY(BTRFS_EXTENT_ITEM_KEY)
  XLAT_TYPE(uint64_t, BTRFS_METADATA_ITEM_KEY),
+ #define XLAT_VAL_15 ((uint64_t) (BTRFS_METADATA_ITEM_KEY))
+ #define XLAT_STR_15 STRINGIFY(BTRFS_METADATA_ITEM_KEY)
  XLAT_TYPE(uint64_t, BTRFS_TREE_BLOCK_REF_KEY),
+ #define XLAT_VAL_16 ((uint64_t) (BTRFS_TREE_BLOCK_REF_KEY))
+ #define XLAT_STR_16 STRINGIFY(BTRFS_TREE_BLOCK_REF_KEY)
  XLAT_TYPE(uint64_t, BTRFS_EXTENT_DATA_REF_KEY),
+ #define XLAT_VAL_17 ((uint64_t) (BTRFS_EXTENT_DATA_REF_KEY))
+ #define XLAT_STR_17 STRINGIFY(BTRFS_EXTENT_DATA_REF_KEY)
  XLAT_TYPE(uint64_t, BTRFS_EXTENT_REF_V0_KEY),
+ #define XLAT_VAL_18 ((uint64_t) (BTRFS_EXTENT_REF_V0_KEY))
+ #define XLAT_STR_18 STRINGIFY(BTRFS_EXTENT_REF_V0_KEY)
  XLAT_TYPE(uint64_t, BTRFS_SHARED_BLOCK_REF_KEY),
+ #define XLAT_VAL_19 ((uint64_t) (BTRFS_SHARED_BLOCK_REF_KEY))
+ #define XLAT_STR_19 STRINGIFY(BTRFS_SHARED_BLOCK_REF_KEY)
  XLAT_TYPE(uint64_t, BTRFS_SHARED_DATA_REF_KEY),
+ #define XLAT_VAL_20 ((uint64_t) (BTRFS_SHARED_DATA_REF_KEY))
+ #define XLAT_STR_20 STRINGIFY(BTRFS_SHARED_DATA_REF_KEY)
  XLAT_TYPE(uint64_t, BTRFS_BLOCK_GROUP_ITEM_KEY),
+ #define XLAT_VAL_21 ((uint64_t) (BTRFS_BLOCK_GROUP_ITEM_KEY))
+ #define XLAT_STR_21 STRINGIFY(BTRFS_BLOCK_GROUP_ITEM_KEY)
  XLAT_TYPE(uint64_t, BTRFS_FREE_SPACE_INFO_KEY),
+ #define XLAT_VAL_22 ((uint64_t) (BTRFS_FREE_SPACE_INFO_KEY))
+ #define XLAT_STR_22 STRINGIFY(BTRFS_FREE_SPACE_INFO_KEY)
  XLAT_TYPE(uint64_t, BTRFS_FREE_SPACE_EXTENT_KEY),
+ #define XLAT_VAL_23 ((uint64_t) (BTRFS_FREE_SPACE_EXTENT_KEY))
+ #define XLAT_STR_23 STRINGIFY(BTRFS_FREE_SPACE_EXTENT_KEY)
  XLAT_TYPE(uint64_t, BTRFS_FREE_SPACE_BITMAP_KEY),
+ #define XLAT_VAL_24 ((uint64_t) (BTRFS_FREE_SPACE_BITMAP_KEY))
+ #define XLAT_STR_24 STRINGIFY(BTRFS_FREE_SPACE_BITMAP_KEY)
  XLAT_TYPE(uint64_t, BTRFS_DEV_EXTENT_KEY),
+ #define XLAT_VAL_25 ((uint64_t) (BTRFS_DEV_EXTENT_KEY))
+ #define XLAT_STR_25 STRINGIFY(BTRFS_DEV_EXTENT_KEY)
  XLAT_TYPE(uint64_t, BTRFS_DEV_ITEM_KEY),
+ #define XLAT_VAL_26 ((uint64_t) (BTRFS_DEV_ITEM_KEY))
+ #define XLAT_STR_26 STRINGIFY(BTRFS_DEV_ITEM_KEY)
  XLAT_TYPE(uint64_t, BTRFS_CHUNK_ITEM_KEY),
+ #define XLAT_VAL_27 ((uint64_t) (BTRFS_CHUNK_ITEM_KEY))
+ #define XLAT_STR_27 STRINGIFY(BTRFS_CHUNK_ITEM_KEY)
  XLAT_TYPE(uint64_t, BTRFS_QGROUP_STATUS_KEY),
+ #define XLAT_VAL_28 ((uint64_t) (BTRFS_QGROUP_STATUS_KEY))
+ #define XLAT_STR_28 STRINGIFY(BTRFS_QGROUP_STATUS_KEY)
  XLAT_TYPE(uint64_t, BTRFS_QGROUP_INFO_KEY),
+ #define XLAT_VAL_29 ((uint64_t) (BTRFS_QGROUP_INFO_KEY))
+ #define XLAT_STR_29 STRINGIFY(BTRFS_QGROUP_INFO_KEY)
  XLAT_TYPE(uint64_t, BTRFS_QGROUP_LIMIT_KEY),
+ #define XLAT_VAL_30 ((uint64_t) (BTRFS_QGROUP_LIMIT_KEY))
+ #define XLAT_STR_30 STRINGIFY(BTRFS_QGROUP_LIMIT_KEY)
  XLAT_TYPE(uint64_t, BTRFS_QGROUP_RELATION_KEY),
+ #define XLAT_VAL_31 ((uint64_t) (BTRFS_QGROUP_RELATION_KEY))
+ #define XLAT_STR_31 STRINGIFY(BTRFS_QGROUP_RELATION_KEY)
  XLAT_TYPE(uint64_t, BTRFS_BALANCE_ITEM_KEY),
+ #define XLAT_VAL_32 ((uint64_t) (BTRFS_BALANCE_ITEM_KEY))
+ #define XLAT_STR_32 STRINGIFY(BTRFS_BALANCE_ITEM_KEY)
  XLAT_TYPE(uint64_t, BTRFS_TEMPORARY_ITEM_KEY),
+ #define XLAT_VAL_33 ((uint64_t) (BTRFS_TEMPORARY_ITEM_KEY))
+ #define XLAT_STR_33 STRINGIFY(BTRFS_TEMPORARY_ITEM_KEY)
  XLAT_TYPE(uint64_t, BTRFS_DEV_STATS_KEY),
+ #define XLAT_VAL_34 ((uint64_t) (BTRFS_DEV_STATS_KEY))
+ #define XLAT_STR_34 STRINGIFY(BTRFS_DEV_STATS_KEY)
  XLAT_TYPE(uint64_t, BTRFS_PERSISTENT_ITEM_KEY),
+ #define XLAT_VAL_35 ((uint64_t) (BTRFS_PERSISTENT_ITEM_KEY))
+ #define XLAT_STR_35 STRINGIFY(BTRFS_PERSISTENT_ITEM_KEY)
  XLAT_TYPE(uint64_t, BTRFS_DEV_REPLACE_KEY),
+ #define XLAT_VAL_36 ((uint64_t) (BTRFS_DEV_REPLACE_KEY))
+ #define XLAT_STR_36 STRINGIFY(BTRFS_DEV_REPLACE_KEY)
  XLAT_TYPE(uint64_t, BTRFS_UUID_KEY_SUBVOL),
+ #define XLAT_VAL_37 ((uint64_t) (BTRFS_UUID_KEY_SUBVOL))
+ #define XLAT_STR_37 STRINGIFY(BTRFS_UUID_KEY_SUBVOL)
  XLAT_TYPE(uint64_t, BTRFS_UUID_KEY_RECEIVED_SUBVOL),
+ #define XLAT_VAL_38 ((uint64_t) (BTRFS_UUID_KEY_RECEIVED_SUBVOL))
+ #define XLAT_STR_38 STRINGIFY(BTRFS_UUID_KEY_RECEIVED_SUBVOL)
  XLAT_TYPE(uint64_t, BTRFS_STRING_ITEM_KEY),
+ #define XLAT_VAL_39 ((uint64_t) (BTRFS_STRING_ITEM_KEY))
+ #define XLAT_STR_39 STRINGIFY(BTRFS_STRING_ITEM_KEY)
  XLAT_TYPE(uint64_t, UINT32_MAX),
- XLAT_END
+ #define XLAT_VAL_40 ((uint64_t) (UINT32_MAX))
+ #define XLAT_STR_40 STRINGIFY(UINT32_MAX)
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat btrfs_key_types[1] = { {
+ .data = btrfs_key_types_xdata,
+ .size = ARRAY_SIZE(btrfs_key_types_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+#  ifdef XLAT_VAL_30
+  | XLAT_VAL_30
+#  endif
+#  ifdef XLAT_VAL_31
+  | XLAT_VAL_31
+#  endif
+#  ifdef XLAT_VAL_32
+  | XLAT_VAL_32
+#  endif
+#  ifdef XLAT_VAL_33
+  | XLAT_VAL_33
+#  endif
+#  ifdef XLAT_VAL_34
+  | XLAT_VAL_34
+#  endif
+#  ifdef XLAT_VAL_35
+  | XLAT_VAL_35
+#  endif
+#  ifdef XLAT_VAL_36
+  | XLAT_VAL_36
+#  endif
+#  ifdef XLAT_VAL_37
+  | XLAT_VAL_37
+#  endif
+#  ifdef XLAT_VAL_38
+  | XLAT_VAL_38
+#  endif
+#  ifdef XLAT_VAL_39
+  | XLAT_VAL_39
+#  endif
+#  ifdef XLAT_VAL_40
+  | XLAT_VAL_40
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+#  ifdef XLAT_STR_30
+  + sizeof(XLAT_STR_30)
+#  endif
+#  ifdef XLAT_STR_31
+  + sizeof(XLAT_STR_31)
+#  endif
+#  ifdef XLAT_STR_32
+  + sizeof(XLAT_STR_32)
+#  endif
+#  ifdef XLAT_STR_33
+  + sizeof(XLAT_STR_33)
+#  endif
+#  ifdef XLAT_STR_34
+  + sizeof(XLAT_STR_34)
+#  endif
+#  ifdef XLAT_STR_35
+  + sizeof(XLAT_STR_35)
+#  endif
+#  ifdef XLAT_STR_36
+  + sizeof(XLAT_STR_36)
+#  endif
+#  ifdef XLAT_STR_37
+  + sizeof(XLAT_STR_37)
+#  endif
+#  ifdef XLAT_STR_38
+  + sizeof(XLAT_STR_38)
+#  endif
+#  ifdef XLAT_STR_39
+  + sizeof(XLAT_STR_39)
+#  endif
+#  ifdef XLAT_STR_40
+  + sizeof(XLAT_STR_40)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
+#  undef XLAT_STR_30
+#  undef XLAT_VAL_30
+#  undef XLAT_STR_31
+#  undef XLAT_VAL_31
+#  undef XLAT_STR_32
+#  undef XLAT_VAL_32
+#  undef XLAT_STR_33
+#  undef XLAT_VAL_33
+#  undef XLAT_STR_34
+#  undef XLAT_VAL_34
+#  undef XLAT_STR_35
+#  undef XLAT_VAL_35
+#  undef XLAT_STR_36
+#  undef XLAT_VAL_36
+#  undef XLAT_STR_37
+#  undef XLAT_VAL_37
+#  undef XLAT_STR_38
+#  undef XLAT_VAL_38
+#  undef XLAT_STR_39
+#  undef XLAT_VAL_39
+#  undef XLAT_STR_40
+#  undef XLAT_VAL_40
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index ca969b7645b0a3b41adba4c774f88a1978af9da6..3c1bbd489b149ac752950a3ef996613137a11cce 100644 (file)
@@ -19,14 +19,32 @@ extern const struct xlat btrfs_logical_ino_args_flags[];
 
 # else
 
+static const struct xlat_data btrfs_logical_ino_args_flags_xdata[] = {
+ XLAT(BTRFS_LOGICAL_INO_ARGS_IGNORE_OFFSET),
+ #define XLAT_VAL_0 ((unsigned) (BTRFS_LOGICAL_INO_ARGS_IGNORE_OFFSET))
+ #define XLAT_STR_0 STRINGIFY(BTRFS_LOGICAL_INO_ARGS_IGNORE_OFFSET)
+};
 #  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
 static
 #  endif
-const struct xlat btrfs_logical_ino_args_flags[] = {
- XLAT(BTRFS_LOGICAL_INO_ARGS_IGNORE_OFFSET),
- XLAT_END
-};
+const struct xlat btrfs_logical_ino_args_flags[1] = { {
+ .data = btrfs_logical_ino_args_flags_xdata,
+ .size = ARRAY_SIZE(btrfs_logical_ino_args_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 932f7274e7c573661c86d2cce1f7b6626918497a..f8201db59867f20e7c8b7ca56dc37f2bb4a649b0 100644 (file)
@@ -12,22 +12,60 @@ extern const struct xlat btrfs_qgroup_ctl_cmds[];
 
 # else
 
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat btrfs_qgroup_ctl_cmds[] = {
+static const struct xlat_data btrfs_qgroup_ctl_cmds_xdata[] = {
 #if defined(BTRFS_QUOTA_CTL_ENABLE) || (defined(HAVE_DECL_BTRFS_QUOTA_CTL_ENABLE) && HAVE_DECL_BTRFS_QUOTA_CTL_ENABLE)
   XLAT_TYPE(uint64_t, BTRFS_QUOTA_CTL_ENABLE),
+ #define XLAT_VAL_0 ((uint64_t) (BTRFS_QUOTA_CTL_ENABLE))
+ #define XLAT_STR_0 STRINGIFY(BTRFS_QUOTA_CTL_ENABLE)
 #endif
 #if defined(BTRFS_QUOTA_CTL_DISABLE) || (defined(HAVE_DECL_BTRFS_QUOTA_CTL_DISABLE) && HAVE_DECL_BTRFS_QUOTA_CTL_DISABLE)
   XLAT_TYPE(uint64_t, BTRFS_QUOTA_CTL_DISABLE),
+ #define XLAT_VAL_1 ((uint64_t) (BTRFS_QUOTA_CTL_DISABLE))
+ #define XLAT_STR_1 STRINGIFY(BTRFS_QUOTA_CTL_DISABLE)
 #endif
 #if defined(BTRFS_QUOTA_CTL_RESCAN__NOTUSED) || (defined(HAVE_DECL_BTRFS_QUOTA_CTL_RESCAN__NOTUSED) && HAVE_DECL_BTRFS_QUOTA_CTL_RESCAN__NOTUSED)
   XLAT_TYPE(uint64_t, BTRFS_QUOTA_CTL_RESCAN__NOTUSED),
+ #define XLAT_VAL_2 ((uint64_t) (BTRFS_QUOTA_CTL_RESCAN__NOTUSED))
+ #define XLAT_STR_2 STRINGIFY(BTRFS_QUOTA_CTL_RESCAN__NOTUSED)
 #endif
- XLAT_END
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat btrfs_qgroup_ctl_cmds[1] = { {
+ .data = btrfs_qgroup_ctl_cmds_xdata,
+ .size = ARRAY_SIZE(btrfs_qgroup_ctl_cmds_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 5f8d2f2d4b710f7353867a664611cb8715f55771..4e139a824a121a03ceced5faf07c9640bf7d2fee 100644 (file)
@@ -12,16 +12,34 @@ extern const struct xlat btrfs_qgroup_inherit_flags[];
 
 # else
 
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat btrfs_qgroup_inherit_flags[] = {
+static const struct xlat_data btrfs_qgroup_inherit_flags_xdata[] = {
 #if defined(BTRFS_QGROUP_INHERIT_SET_LIMITS) || (defined(HAVE_DECL_BTRFS_QGROUP_INHERIT_SET_LIMITS) && HAVE_DECL_BTRFS_QGROUP_INHERIT_SET_LIMITS)
   XLAT_TYPE(uint64_t, BTRFS_QGROUP_INHERIT_SET_LIMITS),
+ #define XLAT_VAL_0 ((uint64_t) (BTRFS_QGROUP_INHERIT_SET_LIMITS))
+ #define XLAT_STR_0 STRINGIFY(BTRFS_QGROUP_INHERIT_SET_LIMITS)
 #endif
- XLAT_END
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat btrfs_qgroup_inherit_flags[1] = { {
+ .data = btrfs_qgroup_inherit_flags_xdata,
+ .size = ARRAY_SIZE(btrfs_qgroup_inherit_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 5932d1205637a339ac5a1401be94634714cc1446..371280b510163e5f5f0e8d964561ff18a89da438 100644 (file)
@@ -54,19 +54,87 @@ extern const struct xlat btrfs_qgroup_limit_flags[];
 
 # else
 
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat btrfs_qgroup_limit_flags[] = {
+static const struct xlat_data btrfs_qgroup_limit_flags_xdata[] = {
  XLAT_TYPE(uint64_t, BTRFS_QGROUP_LIMIT_MAX_RFER),
+ #define XLAT_VAL_0 ((uint64_t) (BTRFS_QGROUP_LIMIT_MAX_RFER))
+ #define XLAT_STR_0 STRINGIFY(BTRFS_QGROUP_LIMIT_MAX_RFER)
  XLAT_TYPE(uint64_t, BTRFS_QGROUP_LIMIT_MAX_EXCL),
+ #define XLAT_VAL_1 ((uint64_t) (BTRFS_QGROUP_LIMIT_MAX_EXCL))
+ #define XLAT_STR_1 STRINGIFY(BTRFS_QGROUP_LIMIT_MAX_EXCL)
  XLAT_TYPE(uint64_t, BTRFS_QGROUP_LIMIT_RSV_RFER),
+ #define XLAT_VAL_2 ((uint64_t) (BTRFS_QGROUP_LIMIT_RSV_RFER))
+ #define XLAT_STR_2 STRINGIFY(BTRFS_QGROUP_LIMIT_RSV_RFER)
  XLAT_TYPE(uint64_t, BTRFS_QGROUP_LIMIT_RSV_EXCL),
+ #define XLAT_VAL_3 ((uint64_t) (BTRFS_QGROUP_LIMIT_RSV_EXCL))
+ #define XLAT_STR_3 STRINGIFY(BTRFS_QGROUP_LIMIT_RSV_EXCL)
  XLAT_TYPE(uint64_t, BTRFS_QGROUP_LIMIT_RFER_CMPR),
+ #define XLAT_VAL_4 ((uint64_t) (BTRFS_QGROUP_LIMIT_RFER_CMPR))
+ #define XLAT_STR_4 STRINGIFY(BTRFS_QGROUP_LIMIT_RFER_CMPR)
  XLAT_TYPE(uint64_t, BTRFS_QGROUP_LIMIT_EXCL_CMPR),
- XLAT_END
+ #define XLAT_VAL_5 ((uint64_t) (BTRFS_QGROUP_LIMIT_EXCL_CMPR))
+ #define XLAT_STR_5 STRINGIFY(BTRFS_QGROUP_LIMIT_EXCL_CMPR)
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat btrfs_qgroup_limit_flags[1] = { {
+ .data = btrfs_qgroup_limit_flags_xdata,
+ .size = ARRAY_SIZE(btrfs_qgroup_limit_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 252ef61e518c5ea6a52083ea35071d10b539ea18..471c753b732ff773b64f81184622020228ec8262 100644 (file)
@@ -26,15 +26,43 @@ extern const struct xlat btrfs_qgroup_status_flags[];
 
 # else
 
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat btrfs_qgroup_status_flags[] = {
+static const struct xlat_data btrfs_qgroup_status_flags_xdata[] = {
  XLAT_TYPE(uint64_t, BTRFS_QGROUP_STATUS_FLAG_ON),
+ #define XLAT_VAL_0 ((uint64_t) (BTRFS_QGROUP_STATUS_FLAG_ON))
+ #define XLAT_STR_0 STRINGIFY(BTRFS_QGROUP_STATUS_FLAG_ON)
  XLAT_TYPE(uint64_t, BTRFS_QGROUP_STATUS_FLAG_RESCAN),
- XLAT_END
+ #define XLAT_VAL_1 ((uint64_t) (BTRFS_QGROUP_STATUS_FLAG_RESCAN))
+ #define XLAT_STR_1 STRINGIFY(BTRFS_QGROUP_STATUS_FLAG_RESCAN)
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat btrfs_qgroup_status_flags[1] = { {
+ .data = btrfs_qgroup_status_flags_xdata,
+ .size = ARRAY_SIZE(btrfs_qgroup_status_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index b59647634f4f83bef55c1a8340718dd019412431..d3cb659864cb45be460a2cef78b595e19866fe4a 100644 (file)
@@ -19,14 +19,32 @@ extern const struct xlat btrfs_scrub_flags[];
 
 # else
 
+static const struct xlat_data btrfs_scrub_flags_xdata[] = {
+ XLAT_TYPE(uint64_t, BTRFS_SCRUB_READONLY),
+ #define XLAT_VAL_0 ((uint64_t) (BTRFS_SCRUB_READONLY))
+ #define XLAT_STR_0 STRINGIFY(BTRFS_SCRUB_READONLY)
+};
 #  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
 static
 #  endif
-const struct xlat btrfs_scrub_flags[] = {
- XLAT_TYPE(uint64_t, BTRFS_SCRUB_READONLY),
- XLAT_END
-};
+const struct xlat btrfs_scrub_flags[1] = { {
+ .data = btrfs_scrub_flags_xdata,
+ .size = ARRAY_SIZE(btrfs_scrub_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index a357f71e3acb13d41a0b7e27c8c9f3820456120f..80818db47c325a6df23b7574909e5c2f7bc8d07a 100644 (file)
@@ -33,16 +33,54 @@ extern const struct xlat btrfs_send_flags[];
 
 # else
 
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat btrfs_send_flags[] = {
+static const struct xlat_data btrfs_send_flags_xdata[] = {
  XLAT(BTRFS_SEND_FLAG_NO_FILE_DATA),
+ #define XLAT_VAL_0 ((unsigned) (BTRFS_SEND_FLAG_NO_FILE_DATA))
+ #define XLAT_STR_0 STRINGIFY(BTRFS_SEND_FLAG_NO_FILE_DATA)
  XLAT(BTRFS_SEND_FLAG_OMIT_STREAM_HEADER),
+ #define XLAT_VAL_1 ((unsigned) (BTRFS_SEND_FLAG_OMIT_STREAM_HEADER))
+ #define XLAT_STR_1 STRINGIFY(BTRFS_SEND_FLAG_OMIT_STREAM_HEADER)
  XLAT(BTRFS_SEND_FLAG_OMIT_END_CMD),
- XLAT_END
+ #define XLAT_VAL_2 ((unsigned) (BTRFS_SEND_FLAG_OMIT_END_CMD))
+ #define XLAT_STR_2 STRINGIFY(BTRFS_SEND_FLAG_OMIT_END_CMD)
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat btrfs_send_flags[1] = { {
+ .data = btrfs_send_flags_xdata,
+ .size = ARRAY_SIZE(btrfs_send_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 00fd6809df123c2bcb991c13911f184d2c34605a..ca171f759bf1195d78cb282e80313bb407c4c07a 100644 (file)
@@ -12,22 +12,60 @@ extern const struct xlat btrfs_snap_flags_v2[];
 
 # else
 
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat btrfs_snap_flags_v2[] = {
+static const struct xlat_data btrfs_snap_flags_v2_xdata[] = {
 #if defined(BTRFS_SUBVOL_CREATE_ASYNC) || (defined(HAVE_DECL_BTRFS_SUBVOL_CREATE_ASYNC) && HAVE_DECL_BTRFS_SUBVOL_CREATE_ASYNC)
   XLAT_TYPE(uint64_t, BTRFS_SUBVOL_CREATE_ASYNC),
+ #define XLAT_VAL_0 ((uint64_t) (BTRFS_SUBVOL_CREATE_ASYNC))
+ #define XLAT_STR_0 STRINGIFY(BTRFS_SUBVOL_CREATE_ASYNC)
 #endif
 #if defined(BTRFS_SUBVOL_RDONLY) || (defined(HAVE_DECL_BTRFS_SUBVOL_RDONLY) && HAVE_DECL_BTRFS_SUBVOL_RDONLY)
   XLAT_TYPE(uint64_t, BTRFS_SUBVOL_RDONLY),
+ #define XLAT_VAL_1 ((uint64_t) (BTRFS_SUBVOL_RDONLY))
+ #define XLAT_STR_1 STRINGIFY(BTRFS_SUBVOL_RDONLY)
 #endif
 #if defined(BTRFS_SUBVOL_QGROUP_INHERIT) || (defined(HAVE_DECL_BTRFS_SUBVOL_QGROUP_INHERIT) && HAVE_DECL_BTRFS_SUBVOL_QGROUP_INHERIT)
   XLAT_TYPE(uint64_t, BTRFS_SUBVOL_QGROUP_INHERIT),
+ #define XLAT_VAL_2 ((uint64_t) (BTRFS_SUBVOL_QGROUP_INHERIT))
+ #define XLAT_STR_2 STRINGIFY(BTRFS_SUBVOL_QGROUP_INHERIT)
 #endif
- XLAT_END
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat btrfs_snap_flags_v2[1] = { {
+ .data = btrfs_snap_flags_v2_xdata,
+ .size = ARRAY_SIZE(btrfs_snap_flags_v2_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 665612db3c46a883471d75c744aba72944cc634c..31c3bd88a8d0ae2b6db8acb54fbb581d91f09660 100644 (file)
@@ -89,24 +89,142 @@ extern const struct xlat btrfs_space_info_flags[];
 
 # else
 
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat btrfs_space_info_flags[] = {
+static const struct xlat_data btrfs_space_info_flags_xdata[] = {
  XLAT_TYPE(uint64_t, BTRFS_BLOCK_GROUP_DATA),
+ #define XLAT_VAL_0 ((uint64_t) (BTRFS_BLOCK_GROUP_DATA))
+ #define XLAT_STR_0 STRINGIFY(BTRFS_BLOCK_GROUP_DATA)
  XLAT_TYPE(uint64_t, BTRFS_BLOCK_GROUP_SYSTEM),
+ #define XLAT_VAL_1 ((uint64_t) (BTRFS_BLOCK_GROUP_SYSTEM))
+ #define XLAT_STR_1 STRINGIFY(BTRFS_BLOCK_GROUP_SYSTEM)
  XLAT_TYPE(uint64_t, BTRFS_BLOCK_GROUP_METADATA),
+ #define XLAT_VAL_2 ((uint64_t) (BTRFS_BLOCK_GROUP_METADATA))
+ #define XLAT_STR_2 STRINGIFY(BTRFS_BLOCK_GROUP_METADATA)
  XLAT_TYPE(uint64_t, BTRFS_BLOCK_GROUP_RAID0),
+ #define XLAT_VAL_3 ((uint64_t) (BTRFS_BLOCK_GROUP_RAID0))
+ #define XLAT_STR_3 STRINGIFY(BTRFS_BLOCK_GROUP_RAID0)
  XLAT_TYPE(uint64_t, BTRFS_BLOCK_GROUP_RAID1),
+ #define XLAT_VAL_4 ((uint64_t) (BTRFS_BLOCK_GROUP_RAID1))
+ #define XLAT_STR_4 STRINGIFY(BTRFS_BLOCK_GROUP_RAID1)
  XLAT_TYPE(uint64_t, BTRFS_BLOCK_GROUP_DUP),
+ #define XLAT_VAL_5 ((uint64_t) (BTRFS_BLOCK_GROUP_DUP))
+ #define XLAT_STR_5 STRINGIFY(BTRFS_BLOCK_GROUP_DUP)
  XLAT_TYPE(uint64_t, BTRFS_BLOCK_GROUP_RAID10),
+ #define XLAT_VAL_6 ((uint64_t) (BTRFS_BLOCK_GROUP_RAID10))
+ #define XLAT_STR_6 STRINGIFY(BTRFS_BLOCK_GROUP_RAID10)
  XLAT_TYPE(uint64_t, BTRFS_BLOCK_GROUP_RAID5),
+ #define XLAT_VAL_7 ((uint64_t) (BTRFS_BLOCK_GROUP_RAID5))
+ #define XLAT_STR_7 STRINGIFY(BTRFS_BLOCK_GROUP_RAID5)
  XLAT_TYPE(uint64_t, BTRFS_BLOCK_GROUP_RAID6),
+ #define XLAT_VAL_8 ((uint64_t) (BTRFS_BLOCK_GROUP_RAID6))
+ #define XLAT_STR_8 STRINGIFY(BTRFS_BLOCK_GROUP_RAID6)
  XLAT_TYPE(uint64_t, BTRFS_AVAIL_ALLOC_BIT_SINGLE),
+ #define XLAT_VAL_9 ((uint64_t) (BTRFS_AVAIL_ALLOC_BIT_SINGLE))
+ #define XLAT_STR_9 STRINGIFY(BTRFS_AVAIL_ALLOC_BIT_SINGLE)
  XLAT_TYPE(uint64_t, BTRFS_SPACE_INFO_GLOBAL_RSV),
- XLAT_END
+ #define XLAT_VAL_10 ((uint64_t) (BTRFS_SPACE_INFO_GLOBAL_RSV))
+ #define XLAT_STR_10 STRINGIFY(BTRFS_SPACE_INFO_GLOBAL_RSV)
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat btrfs_space_info_flags[1] = { {
+ .data = btrfs_space_info_flags_xdata,
+ .size = ARRAY_SIZE(btrfs_space_info_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 5acf10966790e615ce78bb76d1a4b998f20b036f..f2c4b98a7a33463a2062ba73fb07211419898f7e 100644 (file)
@@ -103,26 +103,164 @@ extern const struct xlat btrfs_tree_objectids[];
 
 # else
 
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat btrfs_tree_objectids[] = {
+static const struct xlat_data btrfs_tree_objectids_xdata[] = {
  XLAT_TYPE(uint64_t, BTRFS_ROOT_TREE_OBJECTID),
+ #define XLAT_VAL_0 ((uint64_t) (BTRFS_ROOT_TREE_OBJECTID))
+ #define XLAT_STR_0 STRINGIFY(BTRFS_ROOT_TREE_OBJECTID)
  XLAT_TYPE(uint64_t, BTRFS_EXTENT_TREE_OBJECTID),
+ #define XLAT_VAL_1 ((uint64_t) (BTRFS_EXTENT_TREE_OBJECTID))
+ #define XLAT_STR_1 STRINGIFY(BTRFS_EXTENT_TREE_OBJECTID)
  XLAT_TYPE(uint64_t, BTRFS_CHUNK_TREE_OBJECTID),
+ #define XLAT_VAL_2 ((uint64_t) (BTRFS_CHUNK_TREE_OBJECTID))
+ #define XLAT_STR_2 STRINGIFY(BTRFS_CHUNK_TREE_OBJECTID)
  XLAT_TYPE(uint64_t, BTRFS_DEV_TREE_OBJECTID),
+ #define XLAT_VAL_3 ((uint64_t) (BTRFS_DEV_TREE_OBJECTID))
+ #define XLAT_STR_3 STRINGIFY(BTRFS_DEV_TREE_OBJECTID)
  XLAT_TYPE(uint64_t, BTRFS_FS_TREE_OBJECTID),
+ #define XLAT_VAL_4 ((uint64_t) (BTRFS_FS_TREE_OBJECTID))
+ #define XLAT_STR_4 STRINGIFY(BTRFS_FS_TREE_OBJECTID)
  XLAT_TYPE(uint64_t, BTRFS_ROOT_TREE_DIR_OBJECTID),
+ #define XLAT_VAL_5 ((uint64_t) (BTRFS_ROOT_TREE_DIR_OBJECTID))
+ #define XLAT_STR_5 STRINGIFY(BTRFS_ROOT_TREE_DIR_OBJECTID)
  XLAT_TYPE(uint64_t, BTRFS_CSUM_TREE_OBJECTID),
+ #define XLAT_VAL_6 ((uint64_t) (BTRFS_CSUM_TREE_OBJECTID))
+ #define XLAT_STR_6 STRINGIFY(BTRFS_CSUM_TREE_OBJECTID)
  XLAT_TYPE(uint64_t, BTRFS_QUOTA_TREE_OBJECTID),
+ #define XLAT_VAL_7 ((uint64_t) (BTRFS_QUOTA_TREE_OBJECTID))
+ #define XLAT_STR_7 STRINGIFY(BTRFS_QUOTA_TREE_OBJECTID)
  XLAT_TYPE(uint64_t, BTRFS_UUID_TREE_OBJECTID),
+ #define XLAT_VAL_8 ((uint64_t) (BTRFS_UUID_TREE_OBJECTID))
+ #define XLAT_STR_8 STRINGIFY(BTRFS_UUID_TREE_OBJECTID)
  XLAT_TYPE(uint64_t, BTRFS_FREE_SPACE_TREE_OBJECTID),
+ #define XLAT_VAL_9 ((uint64_t) (BTRFS_FREE_SPACE_TREE_OBJECTID))
+ #define XLAT_STR_9 STRINGIFY(BTRFS_FREE_SPACE_TREE_OBJECTID)
  XLAT_TYPE(uint64_t, BTRFS_FIRST_FREE_OBJECTID),
+ #define XLAT_VAL_10 ((uint64_t) (BTRFS_FIRST_FREE_OBJECTID))
+ #define XLAT_STR_10 STRINGIFY(BTRFS_FIRST_FREE_OBJECTID)
  XLAT_TYPE(uint64_t, BTRFS_LAST_FREE_OBJECTID),
+ #define XLAT_VAL_11 ((uint64_t) (BTRFS_LAST_FREE_OBJECTID))
+ #define XLAT_STR_11 STRINGIFY(BTRFS_LAST_FREE_OBJECTID)
  XLAT_TYPE(uint64_t, UINT64_MAX),
- XLAT_END
+ #define XLAT_VAL_12 ((uint64_t) (UINT64_MAX))
+ #define XLAT_STR_12 STRINGIFY(UINT64_MAX)
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat btrfs_tree_objectids[1] = { {
+ .data = btrfs_tree_objectids_xdata,
+ .size = ARRAY_SIZE(btrfs_tree_objectids_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/cacheflush_flags.h b/xlat/cacheflush_flags.h
new file mode 100644 (file)
index 0000000..9ceee75
--- /dev/null
@@ -0,0 +1,242 @@
+/* Generated by ./xlat/gen.sh from ./xlat/cacheflush_flags.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined M68K
+#if defined(FLUSH_CACHE_BOTH) || (defined(HAVE_DECL_FLUSH_CACHE_BOTH) && HAVE_DECL_FLUSH_CACHE_BOTH)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((FLUSH_CACHE_BOTH) == (3), "FLUSH_CACHE_BOTH != 3");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define FLUSH_CACHE_BOTH 3
+#endif
+#if defined(FLUSH_CACHE_DATA) || (defined(HAVE_DECL_FLUSH_CACHE_DATA) && HAVE_DECL_FLUSH_CACHE_DATA)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((FLUSH_CACHE_DATA) == (1), "FLUSH_CACHE_DATA != 1");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define FLUSH_CACHE_DATA 1
+#endif
+#if defined(FLUSH_CACHE_INSN) || (defined(HAVE_DECL_FLUSH_CACHE_INSN) && HAVE_DECL_FLUSH_CACHE_INSN)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((FLUSH_CACHE_INSN) == (2), "FLUSH_CACHE_INSN != 2");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define FLUSH_CACHE_INSN 2
+#endif
+#elif defined BFIN || defined CSKY
+#if defined(BCACHE) || (defined(HAVE_DECL_BCACHE) && HAVE_DECL_BCACHE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BCACHE) == (3), "BCACHE != 3");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BCACHE 3
+#endif
+#if defined(ICACHE) || (defined(HAVE_DECL_ICACHE) && HAVE_DECL_ICACHE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ICACHE) == (1), "ICACHE != 1");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ICACHE 1
+#endif
+#if defined(DCACHE) || (defined(HAVE_DECL_DCACHE) && HAVE_DECL_DCACHE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((DCACHE) == (2), "DCACHE != 2");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define DCACHE 2
+#endif
+#elif defined SH
+#if defined(BCACHE) || (defined(HAVE_DECL_BCACHE) && HAVE_DECL_BCACHE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BCACHE) == (7), "BCACHE != 7");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BCACHE 7
+#endif
+#if defined(ICACHE) || (defined(HAVE_DECL_ICACHE) && HAVE_DECL_ICACHE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ICACHE) == (4), "ICACHE != 4");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ICACHE 4
+#endif
+#if defined(DCACHE) || (defined(HAVE_DECL_DCACHE) && HAVE_DECL_DCACHE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((DCACHE) == (3), "DCACHE != 3");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define DCACHE 3
+#endif
+#if defined(CACHEFLUSH_D_INVAL) || (defined(HAVE_DECL_CACHEFLUSH_D_INVAL) && HAVE_DECL_CACHEFLUSH_D_INVAL)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((CACHEFLUSH_D_INVAL) == (1), "CACHEFLUSH_D_INVAL != 1");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define CACHEFLUSH_D_INVAL 1
+#endif
+#if defined(CACHEFLUSH_D_WB) || (defined(HAVE_DECL_CACHEFLUSH_D_WB) && HAVE_DECL_CACHEFLUSH_D_WB)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((CACHEFLUSH_D_WB) == (2), "CACHEFLUSH_D_WB != 2");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define CACHEFLUSH_D_WB 2
+#endif
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat cacheflush_flags in mpers mode
+
+# else
+
+static const struct xlat_data cacheflush_flags_xdata[] = {
+#if defined M68K
+
+ XLAT(FLUSH_CACHE_BOTH),
+ #define XLAT_VAL_0 ((unsigned) (FLUSH_CACHE_BOTH))
+ #define XLAT_STR_0 STRINGIFY(FLUSH_CACHE_BOTH)
+ XLAT(FLUSH_CACHE_DATA),
+ #define XLAT_VAL_1 ((unsigned) (FLUSH_CACHE_DATA))
+ #define XLAT_STR_1 STRINGIFY(FLUSH_CACHE_DATA)
+ XLAT(FLUSH_CACHE_INSN),
+ #define XLAT_VAL_2 ((unsigned) (FLUSH_CACHE_INSN))
+ #define XLAT_STR_2 STRINGIFY(FLUSH_CACHE_INSN)
+
+#elif defined BFIN || defined CSKY
+
+ XLAT(BCACHE),
+ #define XLAT_VAL_3 ((unsigned) (BCACHE))
+ #define XLAT_STR_3 STRINGIFY(BCACHE)
+ XLAT(ICACHE),
+ #define XLAT_VAL_4 ((unsigned) (ICACHE))
+ #define XLAT_STR_4 STRINGIFY(ICACHE)
+ XLAT(DCACHE),
+ #define XLAT_VAL_5 ((unsigned) (DCACHE))
+ #define XLAT_STR_5 STRINGIFY(DCACHE)
+
+#elif defined SH
+
+ XLAT(BCACHE),
+ #define XLAT_VAL_6 ((unsigned) (BCACHE))
+ #define XLAT_STR_6 STRINGIFY(BCACHE)
+ XLAT(ICACHE),
+ #define XLAT_VAL_7 ((unsigned) (ICACHE))
+ #define XLAT_STR_7 STRINGIFY(ICACHE)
+ XLAT(DCACHE),
+ #define XLAT_VAL_8 ((unsigned) (DCACHE))
+ #define XLAT_STR_8 STRINGIFY(DCACHE)
+ XLAT(CACHEFLUSH_D_INVAL),
+ #define XLAT_VAL_9 ((unsigned) (CACHEFLUSH_D_INVAL))
+ #define XLAT_STR_9 STRINGIFY(CACHEFLUSH_D_INVAL)
+ XLAT(CACHEFLUSH_D_WB),
+ #define XLAT_VAL_10 ((unsigned) (CACHEFLUSH_D_WB))
+ #define XLAT_STR_10 STRINGIFY(CACHEFLUSH_D_WB)
+
+#endif
+};
+static
+const struct xlat cacheflush_flags[1] = { {
+ .data = cacheflush_flags_xdata,
+ .size = ARRAY_SIZE(cacheflush_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/cacheflush_flags.in b/xlat/cacheflush_flags.in
new file mode 100644 (file)
index 0000000..06ed0d6
--- /dev/null
@@ -0,0 +1,21 @@
+#if defined M68K
+
+FLUSH_CACHE_BOTH       3
+FLUSH_CACHE_DATA       1
+FLUSH_CACHE_INSN       2
+
+#elif defined BFIN || defined CSKY
+
+BCACHE 3
+ICACHE 1
+DCACHE 2
+
+#elif defined SH
+
+BCACHE 7
+ICACHE 4
+DCACHE 3
+CACHEFLUSH_D_INVAL     1
+CACHEFLUSH_D_WB                2
+
+#endif
index eac973e3b502a8535a0c2f714fdbf6a5ab3fd3a0..2cbefcc5d2a4dcf01de517b10431c60b45c63fa0 100644 (file)
 
 # else
 
-static
-const struct xlat cacheflush_scope[] = {
+static const struct xlat_data cacheflush_scope_xdata[] = {
 #if defined(FLUSH_SCOPE_LINE) || (defined(HAVE_DECL_FLUSH_SCOPE_LINE) && HAVE_DECL_FLUSH_SCOPE_LINE)
   XLAT(FLUSH_SCOPE_LINE),
+ #define XLAT_VAL_0 ((unsigned) (FLUSH_SCOPE_LINE))
+ #define XLAT_STR_0 STRINGIFY(FLUSH_SCOPE_LINE)
 #endif
 #if defined(FLUSH_SCOPE_PAGE) || (defined(HAVE_DECL_FLUSH_SCOPE_PAGE) && HAVE_DECL_FLUSH_SCOPE_PAGE)
   XLAT(FLUSH_SCOPE_PAGE),
+ #define XLAT_VAL_1 ((unsigned) (FLUSH_SCOPE_PAGE))
+ #define XLAT_STR_1 STRINGIFY(FLUSH_SCOPE_PAGE)
 #endif
 #if defined(FLUSH_SCOPE_ALL) || (defined(HAVE_DECL_FLUSH_SCOPE_ALL) && HAVE_DECL_FLUSH_SCOPE_ALL)
   XLAT(FLUSH_SCOPE_ALL),
+ #define XLAT_VAL_2 ((unsigned) (FLUSH_SCOPE_ALL))
+ #define XLAT_STR_2 STRINGIFY(FLUSH_SCOPE_ALL)
 #endif
- XLAT_END
 };
+static
+const struct xlat cacheflush_scope[1] = { {
+ .data = cacheflush_scope_xdata,
+ .size = ARRAY_SIZE(cacheflush_scope_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 5c193a12c84a5a01a1859b76923c81f248bca79d..dfa344067b813ba1ed68b9b4d4e196c5d6792402 100644 (file)
@@ -54,17 +54,85 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat caif_protocols[] = {
+static const struct xlat_data caif_protocols_xdata[] = {
  [CAIFPROTO_AT] = XLAT(CAIFPROTO_AT),
+ #define XLAT_VAL_0 ((unsigned) (CAIFPROTO_AT))
+ #define XLAT_STR_0 STRINGIFY(CAIFPROTO_AT)
  [CAIFPROTO_DATAGRAM] = XLAT(CAIFPROTO_DATAGRAM),
+ #define XLAT_VAL_1 ((unsigned) (CAIFPROTO_DATAGRAM))
+ #define XLAT_STR_1 STRINGIFY(CAIFPROTO_DATAGRAM)
  [CAIFPROTO_DATAGRAM_LOOP] = XLAT(CAIFPROTO_DATAGRAM_LOOP),
+ #define XLAT_VAL_2 ((unsigned) (CAIFPROTO_DATAGRAM_LOOP))
+ #define XLAT_STR_2 STRINGIFY(CAIFPROTO_DATAGRAM_LOOP)
  [CAIFPROTO_UTIL] = XLAT(CAIFPROTO_UTIL),
+ #define XLAT_VAL_3 ((unsigned) (CAIFPROTO_UTIL))
+ #define XLAT_STR_3 STRINGIFY(CAIFPROTO_UTIL)
  [CAIFPROTO_RFM] = XLAT(CAIFPROTO_RFM),
+ #define XLAT_VAL_4 ((unsigned) (CAIFPROTO_RFM))
+ #define XLAT_STR_4 STRINGIFY(CAIFPROTO_RFM)
  [CAIFPROTO_DEBUG] = XLAT(CAIFPROTO_DEBUG),
- XLAT_END
+ #define XLAT_VAL_5 ((unsigned) (CAIFPROTO_DEBUG))
+ #define XLAT_STR_5 STRINGIFY(CAIFPROTO_DEBUG)
 };
+static
+const struct xlat caif_protocols[1] = { {
+ .data = caif_protocols_xdata,
+ .size = ARRAY_SIZE(caif_protocols_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 3e207f7d09f99832d263be2086ebf6e3eefaf415..f88f481048673200b15be2c85adeabed0cadbe88 100644 (file)
@@ -45,6 +45,13 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define CAN_ISOTP 6
 #endif
+#if defined(CAN_J1939) || (defined(HAVE_DECL_CAN_J1939) && HAVE_DECL_CAN_J1939)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((CAN_J1939) == (7), "CAN_J1939 != 7");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define CAN_J1939 7
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
@@ -54,17 +61,96 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat can_protocols[] = {
+static const struct xlat_data can_protocols_xdata[] = {
  [CAN_RAW] = XLAT(CAN_RAW),
+ #define XLAT_VAL_0 ((unsigned) (CAN_RAW))
+ #define XLAT_STR_0 STRINGIFY(CAN_RAW)
  [CAN_BCM] = XLAT(CAN_BCM),
+ #define XLAT_VAL_1 ((unsigned) (CAN_BCM))
+ #define XLAT_STR_1 STRINGIFY(CAN_BCM)
  [CAN_TP16] = XLAT(CAN_TP16),
+ #define XLAT_VAL_2 ((unsigned) (CAN_TP16))
+ #define XLAT_STR_2 STRINGIFY(CAN_TP16)
  [CAN_TP20] = XLAT(CAN_TP20),
+ #define XLAT_VAL_3 ((unsigned) (CAN_TP20))
+ #define XLAT_STR_3 STRINGIFY(CAN_TP20)
  [CAN_MCNET] = XLAT(CAN_MCNET),
+ #define XLAT_VAL_4 ((unsigned) (CAN_MCNET))
+ #define XLAT_STR_4 STRINGIFY(CAN_MCNET)
  [CAN_ISOTP] = XLAT(CAN_ISOTP),
- XLAT_END
+ #define XLAT_VAL_5 ((unsigned) (CAN_ISOTP))
+ #define XLAT_STR_5 STRINGIFY(CAN_ISOTP)
+ [CAN_J1939] = XLAT(CAN_J1939),
+ #define XLAT_VAL_6 ((unsigned) (CAN_J1939))
+ #define XLAT_STR_6 STRINGIFY(CAN_J1939)
 };
+static
+const struct xlat can_protocols[1] = { {
+ .data = can_protocols_xdata,
+ .size = ARRAY_SIZE(can_protocols_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index f74caa733ecdf7c45274b2a162126a2fb14ffa0e..05a7ae6175181f37e9db3631855269f0a6d02d6e 100644 (file)
@@ -5,3 +5,4 @@ CAN_TP16        3
 CAN_TP20       4
 CAN_MCNET      5
 CAN_ISOTP      6
+CAN_J1939      7
index c8205f701b43a36ed7afd8d9b110bd7534fd98ea..56b8de28f2adae05c6ea33dd33b1aa9eb6480cd8 100644 (file)
 
 # else
 
-static
-const struct xlat cap[] = {
+static const struct xlat_data cap_xdata[] = {
  XLAT(CAP_CHOWN),
+ #define XLAT_VAL_0 ((unsigned) (CAP_CHOWN))
+ #define XLAT_STR_0 STRINGIFY(CAP_CHOWN)
  XLAT(CAP_DAC_OVERRIDE),
+ #define XLAT_VAL_1 ((unsigned) (CAP_DAC_OVERRIDE))
+ #define XLAT_STR_1 STRINGIFY(CAP_DAC_OVERRIDE)
  XLAT(CAP_DAC_READ_SEARCH),
+ #define XLAT_VAL_2 ((unsigned) (CAP_DAC_READ_SEARCH))
+ #define XLAT_STR_2 STRINGIFY(CAP_DAC_READ_SEARCH)
  XLAT(CAP_FOWNER),
+ #define XLAT_VAL_3 ((unsigned) (CAP_FOWNER))
+ #define XLAT_STR_3 STRINGIFY(CAP_FOWNER)
  XLAT(CAP_FSETID),
+ #define XLAT_VAL_4 ((unsigned) (CAP_FSETID))
+ #define XLAT_STR_4 STRINGIFY(CAP_FSETID)
  XLAT(CAP_KILL),
+ #define XLAT_VAL_5 ((unsigned) (CAP_KILL))
+ #define XLAT_STR_5 STRINGIFY(CAP_KILL)
  XLAT(CAP_SETGID),
+ #define XLAT_VAL_6 ((unsigned) (CAP_SETGID))
+ #define XLAT_STR_6 STRINGIFY(CAP_SETGID)
  XLAT(CAP_SETUID),
+ #define XLAT_VAL_7 ((unsigned) (CAP_SETUID))
+ #define XLAT_STR_7 STRINGIFY(CAP_SETUID)
  XLAT(CAP_SETPCAP),
+ #define XLAT_VAL_8 ((unsigned) (CAP_SETPCAP))
+ #define XLAT_STR_8 STRINGIFY(CAP_SETPCAP)
  XLAT(CAP_LINUX_IMMUTABLE),
+ #define XLAT_VAL_9 ((unsigned) (CAP_LINUX_IMMUTABLE))
+ #define XLAT_STR_9 STRINGIFY(CAP_LINUX_IMMUTABLE)
  XLAT(CAP_NET_BIND_SERVICE),
+ #define XLAT_VAL_10 ((unsigned) (CAP_NET_BIND_SERVICE))
+ #define XLAT_STR_10 STRINGIFY(CAP_NET_BIND_SERVICE)
  XLAT(CAP_NET_BROADCAST),
+ #define XLAT_VAL_11 ((unsigned) (CAP_NET_BROADCAST))
+ #define XLAT_STR_11 STRINGIFY(CAP_NET_BROADCAST)
  XLAT(CAP_NET_ADMIN),
+ #define XLAT_VAL_12 ((unsigned) (CAP_NET_ADMIN))
+ #define XLAT_STR_12 STRINGIFY(CAP_NET_ADMIN)
  XLAT(CAP_NET_RAW),
+ #define XLAT_VAL_13 ((unsigned) (CAP_NET_RAW))
+ #define XLAT_STR_13 STRINGIFY(CAP_NET_RAW)
  XLAT(CAP_IPC_LOCK),
+ #define XLAT_VAL_14 ((unsigned) (CAP_IPC_LOCK))
+ #define XLAT_STR_14 STRINGIFY(CAP_IPC_LOCK)
  XLAT(CAP_IPC_OWNER),
+ #define XLAT_VAL_15 ((unsigned) (CAP_IPC_OWNER))
+ #define XLAT_STR_15 STRINGIFY(CAP_IPC_OWNER)
  XLAT(CAP_SYS_MODULE),
+ #define XLAT_VAL_16 ((unsigned) (CAP_SYS_MODULE))
+ #define XLAT_STR_16 STRINGIFY(CAP_SYS_MODULE)
  XLAT(CAP_SYS_RAWIO),
+ #define XLAT_VAL_17 ((unsigned) (CAP_SYS_RAWIO))
+ #define XLAT_STR_17 STRINGIFY(CAP_SYS_RAWIO)
  XLAT(CAP_SYS_CHROOT),
+ #define XLAT_VAL_18 ((unsigned) (CAP_SYS_CHROOT))
+ #define XLAT_STR_18 STRINGIFY(CAP_SYS_CHROOT)
  XLAT(CAP_SYS_PTRACE),
+ #define XLAT_VAL_19 ((unsigned) (CAP_SYS_PTRACE))
+ #define XLAT_STR_19 STRINGIFY(CAP_SYS_PTRACE)
  XLAT(CAP_SYS_PACCT),
+ #define XLAT_VAL_20 ((unsigned) (CAP_SYS_PACCT))
+ #define XLAT_STR_20 STRINGIFY(CAP_SYS_PACCT)
  XLAT(CAP_SYS_ADMIN),
+ #define XLAT_VAL_21 ((unsigned) (CAP_SYS_ADMIN))
+ #define XLAT_STR_21 STRINGIFY(CAP_SYS_ADMIN)
  XLAT(CAP_SYS_BOOT),
+ #define XLAT_VAL_22 ((unsigned) (CAP_SYS_BOOT))
+ #define XLAT_STR_22 STRINGIFY(CAP_SYS_BOOT)
  XLAT(CAP_SYS_NICE),
+ #define XLAT_VAL_23 ((unsigned) (CAP_SYS_NICE))
+ #define XLAT_STR_23 STRINGIFY(CAP_SYS_NICE)
  XLAT(CAP_SYS_RESOURCE),
+ #define XLAT_VAL_24 ((unsigned) (CAP_SYS_RESOURCE))
+ #define XLAT_STR_24 STRINGIFY(CAP_SYS_RESOURCE)
  XLAT(CAP_SYS_TIME),
+ #define XLAT_VAL_25 ((unsigned) (CAP_SYS_TIME))
+ #define XLAT_STR_25 STRINGIFY(CAP_SYS_TIME)
  XLAT(CAP_SYS_TTY_CONFIG),
+ #define XLAT_VAL_26 ((unsigned) (CAP_SYS_TTY_CONFIG))
+ #define XLAT_STR_26 STRINGIFY(CAP_SYS_TTY_CONFIG)
  XLAT(CAP_MKNOD),
+ #define XLAT_VAL_27 ((unsigned) (CAP_MKNOD))
+ #define XLAT_STR_27 STRINGIFY(CAP_MKNOD)
  XLAT(CAP_LEASE),
+ #define XLAT_VAL_28 ((unsigned) (CAP_LEASE))
+ #define XLAT_STR_28 STRINGIFY(CAP_LEASE)
  XLAT(CAP_AUDIT_WRITE),
+ #define XLAT_VAL_29 ((unsigned) (CAP_AUDIT_WRITE))
+ #define XLAT_STR_29 STRINGIFY(CAP_AUDIT_WRITE)
  XLAT(CAP_AUDIT_CONTROL),
+ #define XLAT_VAL_30 ((unsigned) (CAP_AUDIT_CONTROL))
+ #define XLAT_STR_30 STRINGIFY(CAP_AUDIT_CONTROL)
  XLAT(CAP_SETFCAP),
+ #define XLAT_VAL_31 ((unsigned) (CAP_SETFCAP))
+ #define XLAT_STR_31 STRINGIFY(CAP_SETFCAP)
  XLAT(CAP_MAC_OVERRIDE),
+ #define XLAT_VAL_32 ((unsigned) (CAP_MAC_OVERRIDE))
+ #define XLAT_STR_32 STRINGIFY(CAP_MAC_OVERRIDE)
  XLAT(CAP_MAC_ADMIN),
+ #define XLAT_VAL_33 ((unsigned) (CAP_MAC_ADMIN))
+ #define XLAT_STR_33 STRINGIFY(CAP_MAC_ADMIN)
  XLAT(CAP_SYSLOG),
+ #define XLAT_VAL_34 ((unsigned) (CAP_SYSLOG))
+ #define XLAT_STR_34 STRINGIFY(CAP_SYSLOG)
  XLAT(CAP_WAKE_ALARM),
+ #define XLAT_VAL_35 ((unsigned) (CAP_WAKE_ALARM))
+ #define XLAT_STR_35 STRINGIFY(CAP_WAKE_ALARM)
  XLAT(CAP_BLOCK_SUSPEND),
+ #define XLAT_VAL_36 ((unsigned) (CAP_BLOCK_SUSPEND))
+ #define XLAT_STR_36 STRINGIFY(CAP_BLOCK_SUSPEND)
  XLAT(CAP_AUDIT_READ),
- XLAT_END
+ #define XLAT_VAL_37 ((unsigned) (CAP_AUDIT_READ))
+ #define XLAT_STR_37 STRINGIFY(CAP_AUDIT_READ)
+ XLAT(CAP_PERFMON),
+ #define XLAT_VAL_38 ((unsigned) (CAP_PERFMON))
+ #define XLAT_STR_38 STRINGIFY(CAP_PERFMON)
+ XLAT(CAP_BPF),
+ #define XLAT_VAL_39 ((unsigned) (CAP_BPF))
+ #define XLAT_STR_39 STRINGIFY(CAP_BPF)
+ XLAT(CAP_CHECKPOINT_RESTORE),
+ #define XLAT_VAL_40 ((unsigned) (CAP_CHECKPOINT_RESTORE))
+ #define XLAT_STR_40 STRINGIFY(CAP_CHECKPOINT_RESTORE)
 };
+static
+const struct xlat cap[1] = { {
+ .data = cap_xdata,
+ .size = ARRAY_SIZE(cap_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+#  ifdef XLAT_VAL_30
+  | XLAT_VAL_30
+#  endif
+#  ifdef XLAT_VAL_31
+  | XLAT_VAL_31
+#  endif
+#  ifdef XLAT_VAL_32
+  | XLAT_VAL_32
+#  endif
+#  ifdef XLAT_VAL_33
+  | XLAT_VAL_33
+#  endif
+#  ifdef XLAT_VAL_34
+  | XLAT_VAL_34
+#  endif
+#  ifdef XLAT_VAL_35
+  | XLAT_VAL_35
+#  endif
+#  ifdef XLAT_VAL_36
+  | XLAT_VAL_36
+#  endif
+#  ifdef XLAT_VAL_37
+  | XLAT_VAL_37
+#  endif
+#  ifdef XLAT_VAL_38
+  | XLAT_VAL_38
+#  endif
+#  ifdef XLAT_VAL_39
+  | XLAT_VAL_39
+#  endif
+#  ifdef XLAT_VAL_40
+  | XLAT_VAL_40
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+#  ifdef XLAT_STR_30
+  + sizeof(XLAT_STR_30)
+#  endif
+#  ifdef XLAT_STR_31
+  + sizeof(XLAT_STR_31)
+#  endif
+#  ifdef XLAT_STR_32
+  + sizeof(XLAT_STR_32)
+#  endif
+#  ifdef XLAT_STR_33
+  + sizeof(XLAT_STR_33)
+#  endif
+#  ifdef XLAT_STR_34
+  + sizeof(XLAT_STR_34)
+#  endif
+#  ifdef XLAT_STR_35
+  + sizeof(XLAT_STR_35)
+#  endif
+#  ifdef XLAT_STR_36
+  + sizeof(XLAT_STR_36)
+#  endif
+#  ifdef XLAT_STR_37
+  + sizeof(XLAT_STR_37)
+#  endif
+#  ifdef XLAT_STR_38
+  + sizeof(XLAT_STR_38)
+#  endif
+#  ifdef XLAT_STR_39
+  + sizeof(XLAT_STR_39)
+#  endif
+#  ifdef XLAT_STR_40
+  + sizeof(XLAT_STR_40)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
+#  undef XLAT_STR_30
+#  undef XLAT_VAL_30
+#  undef XLAT_STR_31
+#  undef XLAT_VAL_31
+#  undef XLAT_STR_32
+#  undef XLAT_VAL_32
+#  undef XLAT_STR_33
+#  undef XLAT_VAL_33
+#  undef XLAT_STR_34
+#  undef XLAT_VAL_34
+#  undef XLAT_STR_35
+#  undef XLAT_VAL_35
+#  undef XLAT_STR_36
+#  undef XLAT_VAL_36
+#  undef XLAT_STR_37
+#  undef XLAT_VAL_37
+#  undef XLAT_STR_38
+#  undef XLAT_VAL_38
+#  undef XLAT_STR_39
+#  undef XLAT_VAL_39
+#  undef XLAT_STR_40
+#  undef XLAT_VAL_40
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index bbac8d314593add53cfb20a45de058211e4de9ce..5f4ba403210f905c97f70187c668bb3c81146a4e 100644 (file)
@@ -37,3 +37,6 @@ CAP_SYSLOG
 CAP_WAKE_ALARM
 CAP_BLOCK_SUSPEND
 CAP_AUDIT_READ
+CAP_PERFMON
+CAP_BPF
+CAP_CHECKPOINT_RESTORE
index 84d529f29afae19d6a2e2ed13a2cc2c47d9c44d4..92434019aeed74e08b5bcadb3d3d96f4ee9e9340 100644 (file)
 
 # else
 
-static
-const struct xlat cap_mask0[] = {
+static const struct xlat_data cap_mask0_xdata[] = {
  XLAT_PAIR(1ULL<<CAP_CHOWN, "1<<CAP_CHOWN"),
+ #define XLAT_VAL_0 ((unsigned) (1ULL<<CAP_CHOWN))
+ #define XLAT_STR_0 "1<<CAP_CHOWN"
  XLAT_PAIR(1ULL<<CAP_DAC_OVERRIDE, "1<<CAP_DAC_OVERRIDE"),
+ #define XLAT_VAL_1 ((unsigned) (1ULL<<CAP_DAC_OVERRIDE))
+ #define XLAT_STR_1 "1<<CAP_DAC_OVERRIDE"
  XLAT_PAIR(1ULL<<CAP_DAC_READ_SEARCH, "1<<CAP_DAC_READ_SEARCH"),
+ #define XLAT_VAL_2 ((unsigned) (1ULL<<CAP_DAC_READ_SEARCH))
+ #define XLAT_STR_2 "1<<CAP_DAC_READ_SEARCH"
  XLAT_PAIR(1ULL<<CAP_FOWNER, "1<<CAP_FOWNER"),
+ #define XLAT_VAL_3 ((unsigned) (1ULL<<CAP_FOWNER))
+ #define XLAT_STR_3 "1<<CAP_FOWNER"
  XLAT_PAIR(1ULL<<CAP_FSETID, "1<<CAP_FSETID"),
+ #define XLAT_VAL_4 ((unsigned) (1ULL<<CAP_FSETID))
+ #define XLAT_STR_4 "1<<CAP_FSETID"
  XLAT_PAIR(1ULL<<CAP_KILL, "1<<CAP_KILL"),
+ #define XLAT_VAL_5 ((unsigned) (1ULL<<CAP_KILL))
+ #define XLAT_STR_5 "1<<CAP_KILL"
  XLAT_PAIR(1ULL<<CAP_SETGID, "1<<CAP_SETGID"),
+ #define XLAT_VAL_6 ((unsigned) (1ULL<<CAP_SETGID))
+ #define XLAT_STR_6 "1<<CAP_SETGID"
  XLAT_PAIR(1ULL<<CAP_SETUID, "1<<CAP_SETUID"),
+ #define XLAT_VAL_7 ((unsigned) (1ULL<<CAP_SETUID))
+ #define XLAT_STR_7 "1<<CAP_SETUID"
  XLAT_PAIR(1ULL<<CAP_SETPCAP, "1<<CAP_SETPCAP"),
+ #define XLAT_VAL_8 ((unsigned) (1ULL<<CAP_SETPCAP))
+ #define XLAT_STR_8 "1<<CAP_SETPCAP"
  XLAT_PAIR(1ULL<<CAP_LINUX_IMMUTABLE, "1<<CAP_LINUX_IMMUTABLE"),
+ #define XLAT_VAL_9 ((unsigned) (1ULL<<CAP_LINUX_IMMUTABLE))
+ #define XLAT_STR_9 "1<<CAP_LINUX_IMMUTABLE"
  XLAT_PAIR(1ULL<<CAP_NET_BIND_SERVICE, "1<<CAP_NET_BIND_SERVICE"),
+ #define XLAT_VAL_10 ((unsigned) (1ULL<<CAP_NET_BIND_SERVICE))
+ #define XLAT_STR_10 "1<<CAP_NET_BIND_SERVICE"
  XLAT_PAIR(1ULL<<CAP_NET_BROADCAST, "1<<CAP_NET_BROADCAST"),
+ #define XLAT_VAL_11 ((unsigned) (1ULL<<CAP_NET_BROADCAST))
+ #define XLAT_STR_11 "1<<CAP_NET_BROADCAST"
  XLAT_PAIR(1ULL<<CAP_NET_ADMIN, "1<<CAP_NET_ADMIN"),
+ #define XLAT_VAL_12 ((unsigned) (1ULL<<CAP_NET_ADMIN))
+ #define XLAT_STR_12 "1<<CAP_NET_ADMIN"
  XLAT_PAIR(1ULL<<CAP_NET_RAW, "1<<CAP_NET_RAW"),
+ #define XLAT_VAL_13 ((unsigned) (1ULL<<CAP_NET_RAW))
+ #define XLAT_STR_13 "1<<CAP_NET_RAW"
  XLAT_PAIR(1ULL<<CAP_IPC_LOCK, "1<<CAP_IPC_LOCK"),
+ #define XLAT_VAL_14 ((unsigned) (1ULL<<CAP_IPC_LOCK))
+ #define XLAT_STR_14 "1<<CAP_IPC_LOCK"
  XLAT_PAIR(1ULL<<CAP_IPC_OWNER, "1<<CAP_IPC_OWNER"),
+ #define XLAT_VAL_15 ((unsigned) (1ULL<<CAP_IPC_OWNER))
+ #define XLAT_STR_15 "1<<CAP_IPC_OWNER"
  XLAT_PAIR(1ULL<<CAP_SYS_MODULE, "1<<CAP_SYS_MODULE"),
+ #define XLAT_VAL_16 ((unsigned) (1ULL<<CAP_SYS_MODULE))
+ #define XLAT_STR_16 "1<<CAP_SYS_MODULE"
  XLAT_PAIR(1ULL<<CAP_SYS_RAWIO, "1<<CAP_SYS_RAWIO"),
+ #define XLAT_VAL_17 ((unsigned) (1ULL<<CAP_SYS_RAWIO))
+ #define XLAT_STR_17 "1<<CAP_SYS_RAWIO"
  XLAT_PAIR(1ULL<<CAP_SYS_CHROOT, "1<<CAP_SYS_CHROOT"),
+ #define XLAT_VAL_18 ((unsigned) (1ULL<<CAP_SYS_CHROOT))
+ #define XLAT_STR_18 "1<<CAP_SYS_CHROOT"
  XLAT_PAIR(1ULL<<CAP_SYS_PTRACE, "1<<CAP_SYS_PTRACE"),
+ #define XLAT_VAL_19 ((unsigned) (1ULL<<CAP_SYS_PTRACE))
+ #define XLAT_STR_19 "1<<CAP_SYS_PTRACE"
  XLAT_PAIR(1ULL<<CAP_SYS_PACCT, "1<<CAP_SYS_PACCT"),
+ #define XLAT_VAL_20 ((unsigned) (1ULL<<CAP_SYS_PACCT))
+ #define XLAT_STR_20 "1<<CAP_SYS_PACCT"
  XLAT_PAIR(1ULL<<CAP_SYS_ADMIN, "1<<CAP_SYS_ADMIN"),
+ #define XLAT_VAL_21 ((unsigned) (1ULL<<CAP_SYS_ADMIN))
+ #define XLAT_STR_21 "1<<CAP_SYS_ADMIN"
  XLAT_PAIR(1ULL<<CAP_SYS_BOOT, "1<<CAP_SYS_BOOT"),
+ #define XLAT_VAL_22 ((unsigned) (1ULL<<CAP_SYS_BOOT))
+ #define XLAT_STR_22 "1<<CAP_SYS_BOOT"
  XLAT_PAIR(1ULL<<CAP_SYS_NICE, "1<<CAP_SYS_NICE"),
+ #define XLAT_VAL_23 ((unsigned) (1ULL<<CAP_SYS_NICE))
+ #define XLAT_STR_23 "1<<CAP_SYS_NICE"
  XLAT_PAIR(1ULL<<CAP_SYS_RESOURCE, "1<<CAP_SYS_RESOURCE"),
+ #define XLAT_VAL_24 ((unsigned) (1ULL<<CAP_SYS_RESOURCE))
+ #define XLAT_STR_24 "1<<CAP_SYS_RESOURCE"
  XLAT_PAIR(1ULL<<CAP_SYS_TIME, "1<<CAP_SYS_TIME"),
+ #define XLAT_VAL_25 ((unsigned) (1ULL<<CAP_SYS_TIME))
+ #define XLAT_STR_25 "1<<CAP_SYS_TIME"
  XLAT_PAIR(1ULL<<CAP_SYS_TTY_CONFIG, "1<<CAP_SYS_TTY_CONFIG"),
+ #define XLAT_VAL_26 ((unsigned) (1ULL<<CAP_SYS_TTY_CONFIG))
+ #define XLAT_STR_26 "1<<CAP_SYS_TTY_CONFIG"
  XLAT_PAIR(1ULL<<CAP_MKNOD, "1<<CAP_MKNOD"),
+ #define XLAT_VAL_27 ((unsigned) (1ULL<<CAP_MKNOD))
+ #define XLAT_STR_27 "1<<CAP_MKNOD"
  XLAT_PAIR(1ULL<<CAP_LEASE, "1<<CAP_LEASE"),
+ #define XLAT_VAL_28 ((unsigned) (1ULL<<CAP_LEASE))
+ #define XLAT_STR_28 "1<<CAP_LEASE"
  XLAT_PAIR(1ULL<<CAP_AUDIT_WRITE, "1<<CAP_AUDIT_WRITE"),
+ #define XLAT_VAL_29 ((unsigned) (1ULL<<CAP_AUDIT_WRITE))
+ #define XLAT_STR_29 "1<<CAP_AUDIT_WRITE"
  XLAT_PAIR(1ULL<<CAP_AUDIT_CONTROL, "1<<CAP_AUDIT_CONTROL"),
+ #define XLAT_VAL_30 ((unsigned) (1ULL<<CAP_AUDIT_CONTROL))
+ #define XLAT_STR_30 "1<<CAP_AUDIT_CONTROL"
  XLAT_PAIR(1ULL<<CAP_SETFCAP, "1<<CAP_SETFCAP"),
- XLAT_END
+ #define XLAT_VAL_31 ((unsigned) (1ULL<<CAP_SETFCAP))
+ #define XLAT_STR_31 "1<<CAP_SETFCAP"
 };
+static
+const struct xlat cap_mask0[1] = { {
+ .data = cap_mask0_xdata,
+ .size = ARRAY_SIZE(cap_mask0_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+#  ifdef XLAT_VAL_30
+  | XLAT_VAL_30
+#  endif
+#  ifdef XLAT_VAL_31
+  | XLAT_VAL_31
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+#  ifdef XLAT_STR_30
+  + sizeof(XLAT_STR_30)
+#  endif
+#  ifdef XLAT_STR_31
+  + sizeof(XLAT_STR_31)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
+#  undef XLAT_STR_30
+#  undef XLAT_VAL_30
+#  undef XLAT_STR_31
+#  undef XLAT_VAL_31
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index c32c0196e6c0a03fca71b08ebb37c09191183da5..6b529a6e5c66e3df97689b0a6d008e52a8d53649 100644 (file)
 
 # else
 
-static
-const struct xlat cap_mask1[] = {
+static const struct xlat_data cap_mask1_xdata[] = {
  XLAT_PAIR(1ULL<<CAP_MAC_OVERRIDE, "1<<CAP_MAC_OVERRIDE"),
+ #define XLAT_VAL_0 ((unsigned) (1ULL<<CAP_MAC_OVERRIDE))
+ #define XLAT_STR_0 "1<<CAP_MAC_OVERRIDE"
  XLAT_PAIR(1ULL<<CAP_MAC_ADMIN, "1<<CAP_MAC_ADMIN"),
+ #define XLAT_VAL_1 ((unsigned) (1ULL<<CAP_MAC_ADMIN))
+ #define XLAT_STR_1 "1<<CAP_MAC_ADMIN"
  XLAT_PAIR(1ULL<<CAP_SYSLOG, "1<<CAP_SYSLOG"),
+ #define XLAT_VAL_2 ((unsigned) (1ULL<<CAP_SYSLOG))
+ #define XLAT_STR_2 "1<<CAP_SYSLOG"
  XLAT_PAIR(1ULL<<CAP_WAKE_ALARM, "1<<CAP_WAKE_ALARM"),
+ #define XLAT_VAL_3 ((unsigned) (1ULL<<CAP_WAKE_ALARM))
+ #define XLAT_STR_3 "1<<CAP_WAKE_ALARM"
  XLAT_PAIR(1ULL<<CAP_BLOCK_SUSPEND, "1<<CAP_BLOCK_SUSPEND"),
+ #define XLAT_VAL_4 ((unsigned) (1ULL<<CAP_BLOCK_SUSPEND))
+ #define XLAT_STR_4 "1<<CAP_BLOCK_SUSPEND"
  XLAT_PAIR(1ULL<<CAP_AUDIT_READ, "1<<CAP_AUDIT_READ"),
- XLAT_END
+ #define XLAT_VAL_5 ((unsigned) (1ULL<<CAP_AUDIT_READ))
+ #define XLAT_STR_5 "1<<CAP_AUDIT_READ"
+ XLAT_PAIR(1ULL<<CAP_PERFMON, "1<<CAP_PERFMON"),
+ #define XLAT_VAL_6 ((unsigned) (1ULL<<CAP_PERFMON))
+ #define XLAT_STR_6 "1<<CAP_PERFMON"
+ XLAT_PAIR(1ULL<<CAP_BPF, "1<<CAP_BPF"),
+ #define XLAT_VAL_7 ((unsigned) (1ULL<<CAP_BPF))
+ #define XLAT_STR_7 "1<<CAP_BPF"
+ XLAT_PAIR(1ULL<<CAP_CHECKPOINT_RESTORE, "1<<CAP_CHECKPOINT_RESTORE"),
+ #define XLAT_VAL_8 ((unsigned) (1ULL<<CAP_CHECKPOINT_RESTORE))
+ #define XLAT_STR_8 "1<<CAP_CHECKPOINT_RESTORE"
 };
+static
+const struct xlat cap_mask1[1] = { {
+ .data = cap_mask1_xdata,
+ .size = ARRAY_SIZE(cap_mask1_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index bf787a06397c0db3620ef1437e7c5fbf4506bfb4..82153e1dd7cfea337c5e8f11a64b3776269c1a62 100644 (file)
@@ -5,3 +5,6 @@
 1<<CAP_WAKE_ALARM
 1<<CAP_BLOCK_SUSPEND
 1<<CAP_AUDIT_READ
+1<<CAP_PERFMON
+1<<CAP_BPF
+1<<CAP_CHECKPOINT_RESTORE
index 69ca874ad74bcf1ac5eb5b1c2709b24ef63aa703..58ef1182a3b12c056141ad5d19fbc12c029db3aa 100644 (file)
 
 # else
 
-static
-const struct xlat cap_version[] = {
+static const struct xlat_data cap_version_xdata[] = {
  XLAT(_LINUX_CAPABILITY_VERSION_1),
+ #define XLAT_VAL_0 ((unsigned) (_LINUX_CAPABILITY_VERSION_1))
+ #define XLAT_STR_0 STRINGIFY(_LINUX_CAPABILITY_VERSION_1)
  XLAT(_LINUX_CAPABILITY_VERSION_2),
+ #define XLAT_VAL_1 ((unsigned) (_LINUX_CAPABILITY_VERSION_2))
+ #define XLAT_STR_1 STRINGIFY(_LINUX_CAPABILITY_VERSION_2)
  XLAT(_LINUX_CAPABILITY_VERSION_3),
- XLAT_END
+ #define XLAT_VAL_2 ((unsigned) (_LINUX_CAPABILITY_VERSION_3))
+ #define XLAT_STR_2 STRINGIFY(_LINUX_CAPABILITY_VERSION_3)
 };
-
+static
+const struct xlat cap_version[1] = { {
+ .data = cap_version_xdata,
+ .size = ARRAY_SIZE(cap_version_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 4f343a1c0b5ee8e338b119fdb18afb9cbf26610d..8a404f695759bc752a0fe6a71da1f53678f7bb28 100644 (file)
 
 # else
 
-static
-const struct xlat clockflags[] = {
+static const struct xlat_data clockflags_xdata[] = {
 #if defined(TIMER_ABSTIME) || (defined(HAVE_DECL_TIMER_ABSTIME) && HAVE_DECL_TIMER_ABSTIME)
   XLAT(TIMER_ABSTIME),
+ #define XLAT_VAL_0 ((unsigned) (TIMER_ABSTIME))
+ #define XLAT_STR_0 STRINGIFY(TIMER_ABSTIME)
 #endif
- XLAT_END
 };
-
+static
+const struct xlat clockflags[1] = { {
+ .data = clockflags_xdata,
+ .size = ARRAY_SIZE(clockflags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index a2932f91ed2a11ce6f98d9bf998fed94b1e96377..fa16cb2a67ab6c18f82c1e6eff862b8ee21c6b97 100644 (file)
@@ -92,22 +92,150 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # ifndef IN_MPERS
 
-const struct xlat clocknames[] = {
+static const struct xlat_data clocknames_xdata[] = {
  [CLOCK_REALTIME] = XLAT(CLOCK_REALTIME),
+ #define XLAT_VAL_0 ((unsigned) (CLOCK_REALTIME))
+ #define XLAT_STR_0 STRINGIFY(CLOCK_REALTIME)
  [CLOCK_MONOTONIC] = XLAT(CLOCK_MONOTONIC),
+ #define XLAT_VAL_1 ((unsigned) (CLOCK_MONOTONIC))
+ #define XLAT_STR_1 STRINGIFY(CLOCK_MONOTONIC)
  [CLOCK_PROCESS_CPUTIME_ID] = XLAT(CLOCK_PROCESS_CPUTIME_ID),
+ #define XLAT_VAL_2 ((unsigned) (CLOCK_PROCESS_CPUTIME_ID))
+ #define XLAT_STR_2 STRINGIFY(CLOCK_PROCESS_CPUTIME_ID)
  [CLOCK_THREAD_CPUTIME_ID] = XLAT(CLOCK_THREAD_CPUTIME_ID),
+ #define XLAT_VAL_3 ((unsigned) (CLOCK_THREAD_CPUTIME_ID))
+ #define XLAT_STR_3 STRINGIFY(CLOCK_THREAD_CPUTIME_ID)
  [CLOCK_MONOTONIC_RAW] = XLAT(CLOCK_MONOTONIC_RAW),
+ #define XLAT_VAL_4 ((unsigned) (CLOCK_MONOTONIC_RAW))
+ #define XLAT_STR_4 STRINGIFY(CLOCK_MONOTONIC_RAW)
  [CLOCK_REALTIME_COARSE] = XLAT(CLOCK_REALTIME_COARSE),
+ #define XLAT_VAL_5 ((unsigned) (CLOCK_REALTIME_COARSE))
+ #define XLAT_STR_5 STRINGIFY(CLOCK_REALTIME_COARSE)
  [CLOCK_MONOTONIC_COARSE] = XLAT(CLOCK_MONOTONIC_COARSE),
+ #define XLAT_VAL_6 ((unsigned) (CLOCK_MONOTONIC_COARSE))
+ #define XLAT_STR_6 STRINGIFY(CLOCK_MONOTONIC_COARSE)
  [CLOCK_BOOTTIME] = XLAT(CLOCK_BOOTTIME),
+ #define XLAT_VAL_7 ((unsigned) (CLOCK_BOOTTIME))
+ #define XLAT_STR_7 STRINGIFY(CLOCK_BOOTTIME)
  [CLOCK_REALTIME_ALARM] = XLAT(CLOCK_REALTIME_ALARM),
+ #define XLAT_VAL_8 ((unsigned) (CLOCK_REALTIME_ALARM))
+ #define XLAT_STR_8 STRINGIFY(CLOCK_REALTIME_ALARM)
  [CLOCK_BOOTTIME_ALARM] = XLAT(CLOCK_BOOTTIME_ALARM),
+ #define XLAT_VAL_9 ((unsigned) (CLOCK_BOOTTIME_ALARM))
+ #define XLAT_STR_9 STRINGIFY(CLOCK_BOOTTIME_ALARM)
  [CLOCK_SGI_CYCLE] = XLAT(CLOCK_SGI_CYCLE),
+ #define XLAT_VAL_10 ((unsigned) (CLOCK_SGI_CYCLE))
+ #define XLAT_STR_10 STRINGIFY(CLOCK_SGI_CYCLE)
  [CLOCK_TAI] = XLAT(CLOCK_TAI),
- XLAT_END
+ #define XLAT_VAL_11 ((unsigned) (CLOCK_TAI))
+ #define XLAT_STR_11 STRINGIFY(CLOCK_TAI)
 };
+const struct xlat clocknames[1] = { {
+ .data = clocknames_xdata,
+ .size = ARRAY_SIZE(clocknames_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/clone3_flags.h b/xlat/clone3_flags.h
new file mode 100644 (file)
index 0000000..8376ced
--- /dev/null
@@ -0,0 +1,84 @@
+/* Generated by ./xlat/gen.sh from ./xlat/clone3_flags.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(CLONE_NEWTIME) || (defined(HAVE_DECL_CLONE_NEWTIME) && HAVE_DECL_CLONE_NEWTIME)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((CLONE_NEWTIME) == (0x80), "CLONE_NEWTIME != 0x80");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define CLONE_NEWTIME 0x80
+#endif
+#if defined(CLONE_CLEAR_SIGHAND) || (defined(HAVE_DECL_CLONE_CLEAR_SIGHAND) && HAVE_DECL_CLONE_CLEAR_SIGHAND)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((CLONE_CLEAR_SIGHAND) == (0x100000000ULL), "CLONE_CLEAR_SIGHAND != 0x100000000ULL");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define CLONE_CLEAR_SIGHAND 0x100000000ULL
+#endif
+#if defined(CLONE_INTO_CGROUP) || (defined(HAVE_DECL_CLONE_INTO_CGROUP) && HAVE_DECL_CLONE_INTO_CGROUP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((CLONE_INTO_CGROUP) == (0x200000000ULL), "CLONE_INTO_CGROUP != 0x200000000ULL");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define CLONE_INTO_CGROUP 0x200000000ULL
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat clone3_flags in mpers mode
+
+# else
+
+static const struct xlat_data clone3_flags_xdata[] = {
+ XLAT_TYPE(uint64_t, CLONE_NEWTIME),
+ #define XLAT_VAL_0 ((uint64_t) (CLONE_NEWTIME))
+ #define XLAT_STR_0 STRINGIFY(CLONE_NEWTIME)
+ XLAT_TYPE(uint64_t, CLONE_CLEAR_SIGHAND),
+ #define XLAT_VAL_1 ((uint64_t) (CLONE_CLEAR_SIGHAND))
+ #define XLAT_STR_1 STRINGIFY(CLONE_CLEAR_SIGHAND)
+ XLAT_TYPE(uint64_t, CLONE_INTO_CGROUP),
+ #define XLAT_VAL_2 ((uint64_t) (CLONE_INTO_CGROUP))
+ #define XLAT_STR_2 STRINGIFY(CLONE_INTO_CGROUP)
+};
+static
+const struct xlat clone3_flags[1] = { {
+ .data = clone3_flags_xdata,
+ .size = ARRAY_SIZE(clone3_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/clone3_flags.in b/xlat/clone3_flags.in
new file mode 100644 (file)
index 0000000..9eb55e1
--- /dev/null
@@ -0,0 +1,4 @@
+#val_type uint64_t
+CLONE_NEWTIME          0x80
+CLONE_CLEAR_SIGHAND    0x100000000ULL
+CLONE_INTO_CGROUP      0x200000000ULL
index d2d939fd79d03ed83d86af6b5543f8a09b2075fc..326864a69164a29a43a22851978a7a20dc71e2c6 100644 (file)
@@ -31,12 +31,12 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define CLONE_SIGHAND 0x00000800
 #endif
-#if defined(CLONE_IDLETASK) || (defined(HAVE_DECL_CLONE_IDLETASK) && HAVE_DECL_CLONE_IDLETASK)
+#if defined(CLONE_PIDFD) || (defined(HAVE_DECL_CLONE_PIDFD) && HAVE_DECL_CLONE_PIDFD)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((CLONE_IDLETASK) == (0x00001000), "CLONE_IDLETASK != 0x00001000");
+static_assert((CLONE_PIDFD) == (0x00001000), "CLONE_PIDFD != 0x00001000");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define CLONE_IDLETASK 0x00001000
+# define CLONE_PIDFD 0x00001000
 #endif
 #if defined(CLONE_PTRACE) || (defined(HAVE_DECL_CLONE_PTRACE) && HAVE_DECL_CLONE_PTRACE)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
@@ -173,34 +173,273 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat clone_flags[] = {
+static const struct xlat_data clone_flags_xdata[] = {
  XLAT(CLONE_VM),
+ #define XLAT_VAL_0 ((unsigned) (CLONE_VM))
+ #define XLAT_STR_0 STRINGIFY(CLONE_VM)
  XLAT(CLONE_FS),
+ #define XLAT_VAL_1 ((unsigned) (CLONE_FS))
+ #define XLAT_STR_1 STRINGIFY(CLONE_FS)
  XLAT(CLONE_FILES),
+ #define XLAT_VAL_2 ((unsigned) (CLONE_FILES))
+ #define XLAT_STR_2 STRINGIFY(CLONE_FILES)
  XLAT(CLONE_SIGHAND),
- XLAT(CLONE_IDLETASK),
+ #define XLAT_VAL_3 ((unsigned) (CLONE_SIGHAND))
+ #define XLAT_STR_3 STRINGIFY(CLONE_SIGHAND)
+ XLAT(CLONE_PIDFD),
+ #define XLAT_VAL_4 ((unsigned) (CLONE_PIDFD))
+ #define XLAT_STR_4 STRINGIFY(CLONE_PIDFD)
  XLAT(CLONE_PTRACE),
+ #define XLAT_VAL_5 ((unsigned) (CLONE_PTRACE))
+ #define XLAT_STR_5 STRINGIFY(CLONE_PTRACE)
  XLAT(CLONE_VFORK),
+ #define XLAT_VAL_6 ((unsigned) (CLONE_VFORK))
+ #define XLAT_STR_6 STRINGIFY(CLONE_VFORK)
  XLAT(CLONE_PARENT),
+ #define XLAT_VAL_7 ((unsigned) (CLONE_PARENT))
+ #define XLAT_STR_7 STRINGIFY(CLONE_PARENT)
  XLAT(CLONE_THREAD),
+ #define XLAT_VAL_8 ((unsigned) (CLONE_THREAD))
+ #define XLAT_STR_8 STRINGIFY(CLONE_THREAD)
  XLAT(CLONE_NEWNS),
+ #define XLAT_VAL_9 ((unsigned) (CLONE_NEWNS))
+ #define XLAT_STR_9 STRINGIFY(CLONE_NEWNS)
  XLAT(CLONE_SYSVSEM),
+ #define XLAT_VAL_10 ((unsigned) (CLONE_SYSVSEM))
+ #define XLAT_STR_10 STRINGIFY(CLONE_SYSVSEM)
  XLAT(CLONE_SETTLS),
+ #define XLAT_VAL_11 ((unsigned) (CLONE_SETTLS))
+ #define XLAT_STR_11 STRINGIFY(CLONE_SETTLS)
  XLAT(CLONE_PARENT_SETTID),
+ #define XLAT_VAL_12 ((unsigned) (CLONE_PARENT_SETTID))
+ #define XLAT_STR_12 STRINGIFY(CLONE_PARENT_SETTID)
  XLAT(CLONE_CHILD_CLEARTID),
+ #define XLAT_VAL_13 ((unsigned) (CLONE_CHILD_CLEARTID))
+ #define XLAT_STR_13 STRINGIFY(CLONE_CHILD_CLEARTID)
+
  XLAT(CLONE_UNTRACED),
+ #define XLAT_VAL_14 ((unsigned) (CLONE_UNTRACED))
+ #define XLAT_STR_14 STRINGIFY(CLONE_UNTRACED)
  XLAT(CLONE_CHILD_SETTID),
+ #define XLAT_VAL_15 ((unsigned) (CLONE_CHILD_SETTID))
+ #define XLAT_STR_15 STRINGIFY(CLONE_CHILD_SETTID)
  XLAT(CLONE_NEWCGROUP),
+ #define XLAT_VAL_16 ((unsigned) (CLONE_NEWCGROUP))
+ #define XLAT_STR_16 STRINGIFY(CLONE_NEWCGROUP)
  XLAT(CLONE_NEWUTS),
+ #define XLAT_VAL_17 ((unsigned) (CLONE_NEWUTS))
+ #define XLAT_STR_17 STRINGIFY(CLONE_NEWUTS)
  XLAT(CLONE_NEWIPC),
+ #define XLAT_VAL_18 ((unsigned) (CLONE_NEWIPC))
+ #define XLAT_STR_18 STRINGIFY(CLONE_NEWIPC)
  XLAT(CLONE_NEWUSER),
+ #define XLAT_VAL_19 ((unsigned) (CLONE_NEWUSER))
+ #define XLAT_STR_19 STRINGIFY(CLONE_NEWUSER)
  XLAT(CLONE_NEWPID),
+ #define XLAT_VAL_20 ((unsigned) (CLONE_NEWPID))
+ #define XLAT_STR_20 STRINGIFY(CLONE_NEWPID)
  XLAT(CLONE_NEWNET),
+ #define XLAT_VAL_21 ((unsigned) (CLONE_NEWNET))
+ #define XLAT_STR_21 STRINGIFY(CLONE_NEWNET)
  XLAT(CLONE_IO),
- XLAT_END
+ #define XLAT_VAL_22 ((unsigned) (CLONE_IO))
+ #define XLAT_STR_22 STRINGIFY(CLONE_IO)
 };
+static
+const struct xlat clone_flags[1] = { {
+ .data = clone_flags_xdata,
+ .size = ARRAY_SIZE(clone_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 2b08c79bbba1d401543873fd39185b1625681ad6..9c967234b69243a04e861c142fb69ace4dfb5b86 100644 (file)
@@ -2,7 +2,7 @@ CLONE_VM        0x00000100
 CLONE_FS       0x00000200
 CLONE_FILES    0x00000400
 CLONE_SIGHAND  0x00000800
-CLONE_IDLETASK 0x00001000
+CLONE_PIDFD    0x00001000
 CLONE_PTRACE   0x00002000
 CLONE_VFORK    0x00004000
 CLONE_PARENT   0x00008000
@@ -12,6 +12,7 @@ CLONE_SYSVSEM 0x00040000
 CLONE_SETTLS   0x00080000
 CLONE_PARENT_SETTID    0x00100000
 CLONE_CHILD_CLEARTID   0x00200000
+/* CLONE_DETACHED      0x00400000 - ignored by kernel */
 CLONE_UNTRACED 0x00800000
 CLONE_CHILD_SETTID     0x01000000
 CLONE_NEWCGROUP        0x02000000
diff --git a/xlat/close_range_flags.h b/xlat/close_range_flags.h
new file mode 100644 (file)
index 0000000..2cb17f6
--- /dev/null
@@ -0,0 +1,48 @@
+/* Generated by ./xlat/gen.sh from ./xlat/close_range_flags.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(CLOSE_RANGE_UNSHARE) || (defined(HAVE_DECL_CLOSE_RANGE_UNSHARE) && HAVE_DECL_CLOSE_RANGE_UNSHARE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((CLOSE_RANGE_UNSHARE) == ((1U << 1)), "CLOSE_RANGE_UNSHARE != (1U << 1)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define CLOSE_RANGE_UNSHARE (1U << 1)
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat close_range_flags in mpers mode
+
+# else
+
+static const struct xlat_data close_range_flags_xdata[] = {
+ XLAT(CLOSE_RANGE_UNSHARE),
+ #define XLAT_VAL_0 ((unsigned) (CLOSE_RANGE_UNSHARE))
+ #define XLAT_STR_0 STRINGIFY(CLOSE_RANGE_UNSHARE)
+};
+static
+const struct xlat close_range_flags[1] = { {
+ .data = close_range_flags_xdata,
+ .size = ARRAY_SIZE(close_range_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/close_range_flags.in b/xlat/close_range_flags.in
new file mode 100644 (file)
index 0000000..5b4261e
--- /dev/null
@@ -0,0 +1,3 @@
+#enum
+#include <linux/close_range.h>
+CLOSE_RANGE_UNSHARE    (1U << 1)
diff --git a/xlat/close_range_flags.m4 b/xlat/close_range_flags.m4
new file mode 100644 (file)
index 0000000..bc1a9aa
--- /dev/null
@@ -0,0 +1,7 @@
+dnl Generated by ./xlat/gen.sh from ./xlat/close_range_flags.in; do not edit.
+AC_DEFUN([st_CHECK_ENUMS_close_range_flags],[
+AC_CHECK_DECLS(m4_normalize([
+CLOSE_RANGE_UNSHARE
+]),,, [
+#include <linux/close_range.h>
+])])])
index 93331c93332778d124c8be8568a256f1e9566de8..7fe504209e2110b20c67c9e21e1b7390a9bf2c6b 100644 (file)
@@ -33,14 +33,52 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat cpuclocknames[] = {
+static const struct xlat_data cpuclocknames_xdata[] = {
  [CPUCLOCK_PROF] = XLAT(CPUCLOCK_PROF),
+ #define XLAT_VAL_0 ((unsigned) (CPUCLOCK_PROF))
+ #define XLAT_STR_0 STRINGIFY(CPUCLOCK_PROF)
  [CPUCLOCK_VIRT] = XLAT(CPUCLOCK_VIRT),
+ #define XLAT_VAL_1 ((unsigned) (CPUCLOCK_VIRT))
+ #define XLAT_STR_1 STRINGIFY(CPUCLOCK_VIRT)
  [CPUCLOCK_SCHED] = XLAT(CPUCLOCK_SCHED),
- XLAT_END
+ #define XLAT_VAL_2 ((unsigned) (CPUCLOCK_SCHED))
+ #define XLAT_STR_2 STRINGIFY(CPUCLOCK_SCHED)
 };
+static
+const struct xlat cpuclocknames[1] = { {
+ .data = cpuclocknames_xdata,
+ .size = ARRAY_SIZE(cpuclocknames_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/crypto_msgs.h b/xlat/crypto_msgs.h
new file mode 100644 (file)
index 0000000..31b916e
--- /dev/null
@@ -0,0 +1,138 @@
+/* Generated by ./xlat/gen.sh from ./xlat/crypto_msgs.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(CRYPTO_MSG_NEWALG) || (defined(HAVE_DECL_CRYPTO_MSG_NEWALG) && HAVE_DECL_CRYPTO_MSG_NEWALG)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((CRYPTO_MSG_NEWALG) == (0x10), "CRYPTO_MSG_NEWALG != 0x10");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define CRYPTO_MSG_NEWALG 0x10
+#endif
+#if defined(CRYPTO_MSG_DELALG) || (defined(HAVE_DECL_CRYPTO_MSG_DELALG) && HAVE_DECL_CRYPTO_MSG_DELALG)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((CRYPTO_MSG_DELALG) == (0x11), "CRYPTO_MSG_DELALG != 0x11");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define CRYPTO_MSG_DELALG 0x11
+#endif
+#if defined(CRYPTO_MSG_UPDATEALG) || (defined(HAVE_DECL_CRYPTO_MSG_UPDATEALG) && HAVE_DECL_CRYPTO_MSG_UPDATEALG)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((CRYPTO_MSG_UPDATEALG) == (0x12), "CRYPTO_MSG_UPDATEALG != 0x12");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define CRYPTO_MSG_UPDATEALG 0x12
+#endif
+#if defined(CRYPTO_MSG_GETALG) || (defined(HAVE_DECL_CRYPTO_MSG_GETALG) && HAVE_DECL_CRYPTO_MSG_GETALG)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((CRYPTO_MSG_GETALG) == (0x13), "CRYPTO_MSG_GETALG != 0x13");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define CRYPTO_MSG_GETALG 0x13
+#endif
+#if defined(CRYPTO_MSG_DELRNG) || (defined(HAVE_DECL_CRYPTO_MSG_DELRNG) && HAVE_DECL_CRYPTO_MSG_DELRNG)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((CRYPTO_MSG_DELRNG) == (0x14), "CRYPTO_MSG_DELRNG != 0x14");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define CRYPTO_MSG_DELRNG 0x14
+#endif
+#if defined(CRYPTO_MSG_GETSTAT) || (defined(HAVE_DECL_CRYPTO_MSG_GETSTAT) && HAVE_DECL_CRYPTO_MSG_GETSTAT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((CRYPTO_MSG_GETSTAT) == (0x15), "CRYPTO_MSG_GETSTAT != 0x15");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define CRYPTO_MSG_GETSTAT 0x15
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat crypto_msgs in mpers mode
+
+# else
+
+static const struct xlat_data crypto_msgs_xdata[] = {
+ XLAT(CRYPTO_MSG_NEWALG),
+ #define XLAT_VAL_0 ((unsigned) (CRYPTO_MSG_NEWALG))
+ #define XLAT_STR_0 STRINGIFY(CRYPTO_MSG_NEWALG)
+ XLAT(CRYPTO_MSG_DELALG),
+ #define XLAT_VAL_1 ((unsigned) (CRYPTO_MSG_DELALG))
+ #define XLAT_STR_1 STRINGIFY(CRYPTO_MSG_DELALG)
+ XLAT(CRYPTO_MSG_UPDATEALG),
+ #define XLAT_VAL_2 ((unsigned) (CRYPTO_MSG_UPDATEALG))
+ #define XLAT_STR_2 STRINGIFY(CRYPTO_MSG_UPDATEALG)
+ XLAT(CRYPTO_MSG_GETALG),
+ #define XLAT_VAL_3 ((unsigned) (CRYPTO_MSG_GETALG))
+ #define XLAT_STR_3 STRINGIFY(CRYPTO_MSG_GETALG)
+ XLAT(CRYPTO_MSG_DELRNG),
+ #define XLAT_VAL_4 ((unsigned) (CRYPTO_MSG_DELRNG))
+ #define XLAT_STR_4 STRINGIFY(CRYPTO_MSG_DELRNG)
+ XLAT(CRYPTO_MSG_GETSTAT),
+ #define XLAT_VAL_5 ((unsigned) (CRYPTO_MSG_GETSTAT))
+ #define XLAT_STR_5 STRINGIFY(CRYPTO_MSG_GETSTAT)
+};
+static
+const struct xlat crypto_msgs[1] = { {
+ .data = crypto_msgs_xdata,
+ .size = ARRAY_SIZE(crypto_msgs_xdata),
+ .type = XT_SORTED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/crypto_msgs.in b/xlat/crypto_msgs.in
new file mode 100644 (file)
index 0000000..89426a9
--- /dev/null
@@ -0,0 +1,7 @@
+#sorted
+CRYPTO_MSG_NEWALG      0x10
+CRYPTO_MSG_DELALG      0x11
+CRYPTO_MSG_UPDATEALG   0x12
+CRYPTO_MSG_GETALG      0x13
+CRYPTO_MSG_DELRNG      0x14
+CRYPTO_MSG_GETSTAT     0x15
index 46fbcb8eef62aa279a221b7df9510d355d769c6b..c81b18bff46f498e0cdda67a750cb5c5fd7c1e1b 100644 (file)
@@ -96,23 +96,151 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat crypto_nl_attrs[] = {
- XLAT(CRYPTOCFGA_UNSPEC),
- XLAT(CRYPTOCFGA_PRIORITY_VAL),
- XLAT(CRYPTOCFGA_REPORT_LARVAL),
- XLAT(CRYPTOCFGA_REPORT_HASH),
- XLAT(CRYPTOCFGA_REPORT_BLKCIPHER),
- XLAT(CRYPTOCFGA_REPORT_AEAD),
- XLAT(CRYPTOCFGA_REPORT_COMPRESS),
- XLAT(CRYPTOCFGA_REPORT_RNG),
- XLAT(CRYPTOCFGA_REPORT_CIPHER),
- XLAT(CRYPTOCFGA_REPORT_AKCIPHER),
- XLAT(CRYPTOCFGA_REPORT_KPP),
- XLAT(CRYPTOCFGA_REPORT_ACOMP),
- XLAT_END
+static const struct xlat_data crypto_nl_attrs_xdata[] = {
+ [CRYPTOCFGA_UNSPEC] = XLAT(CRYPTOCFGA_UNSPEC),
+ #define XLAT_VAL_0 ((unsigned) (CRYPTOCFGA_UNSPEC))
+ #define XLAT_STR_0 STRINGIFY(CRYPTOCFGA_UNSPEC)
+ [CRYPTOCFGA_PRIORITY_VAL] = XLAT(CRYPTOCFGA_PRIORITY_VAL),
+ #define XLAT_VAL_1 ((unsigned) (CRYPTOCFGA_PRIORITY_VAL))
+ #define XLAT_STR_1 STRINGIFY(CRYPTOCFGA_PRIORITY_VAL)
+ [CRYPTOCFGA_REPORT_LARVAL] = XLAT(CRYPTOCFGA_REPORT_LARVAL),
+ #define XLAT_VAL_2 ((unsigned) (CRYPTOCFGA_REPORT_LARVAL))
+ #define XLAT_STR_2 STRINGIFY(CRYPTOCFGA_REPORT_LARVAL)
+ [CRYPTOCFGA_REPORT_HASH] = XLAT(CRYPTOCFGA_REPORT_HASH),
+ #define XLAT_VAL_3 ((unsigned) (CRYPTOCFGA_REPORT_HASH))
+ #define XLAT_STR_3 STRINGIFY(CRYPTOCFGA_REPORT_HASH)
+ [CRYPTOCFGA_REPORT_BLKCIPHER] = XLAT(CRYPTOCFGA_REPORT_BLKCIPHER),
+ #define XLAT_VAL_4 ((unsigned) (CRYPTOCFGA_REPORT_BLKCIPHER))
+ #define XLAT_STR_4 STRINGIFY(CRYPTOCFGA_REPORT_BLKCIPHER)
+ [CRYPTOCFGA_REPORT_AEAD] = XLAT(CRYPTOCFGA_REPORT_AEAD),
+ #define XLAT_VAL_5 ((unsigned) (CRYPTOCFGA_REPORT_AEAD))
+ #define XLAT_STR_5 STRINGIFY(CRYPTOCFGA_REPORT_AEAD)
+ [CRYPTOCFGA_REPORT_COMPRESS] = XLAT(CRYPTOCFGA_REPORT_COMPRESS),
+ #define XLAT_VAL_6 ((unsigned) (CRYPTOCFGA_REPORT_COMPRESS))
+ #define XLAT_STR_6 STRINGIFY(CRYPTOCFGA_REPORT_COMPRESS)
+ [CRYPTOCFGA_REPORT_RNG] = XLAT(CRYPTOCFGA_REPORT_RNG),
+ #define XLAT_VAL_7 ((unsigned) (CRYPTOCFGA_REPORT_RNG))
+ #define XLAT_STR_7 STRINGIFY(CRYPTOCFGA_REPORT_RNG)
+ [CRYPTOCFGA_REPORT_CIPHER] = XLAT(CRYPTOCFGA_REPORT_CIPHER),
+ #define XLAT_VAL_8 ((unsigned) (CRYPTOCFGA_REPORT_CIPHER))
+ #define XLAT_STR_8 STRINGIFY(CRYPTOCFGA_REPORT_CIPHER)
+ [CRYPTOCFGA_REPORT_AKCIPHER] = XLAT(CRYPTOCFGA_REPORT_AKCIPHER),
+ #define XLAT_VAL_9 ((unsigned) (CRYPTOCFGA_REPORT_AKCIPHER))
+ #define XLAT_STR_9 STRINGIFY(CRYPTOCFGA_REPORT_AKCIPHER)
+ [CRYPTOCFGA_REPORT_KPP] = XLAT(CRYPTOCFGA_REPORT_KPP),
+ #define XLAT_VAL_10 ((unsigned) (CRYPTOCFGA_REPORT_KPP))
+ #define XLAT_STR_10 STRINGIFY(CRYPTOCFGA_REPORT_KPP)
+ [CRYPTOCFGA_REPORT_ACOMP] = XLAT(CRYPTOCFGA_REPORT_ACOMP),
+ #define XLAT_VAL_11 ((unsigned) (CRYPTOCFGA_REPORT_ACOMP))
+ #define XLAT_STR_11 STRINGIFY(CRYPTOCFGA_REPORT_ACOMP)
 };
+static
+const struct xlat crypto_nl_attrs[1] = { {
+ .data = crypto_nl_attrs_xdata,
+ .size = ARRAY_SIZE(crypto_nl_attrs_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 02b366286499eca1020a920b48c4706ef31a2bc0..7ec320739a3a7a0502d1c42a6b770df95de40426 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 CRYPTOCFGA_UNSPEC              0
 CRYPTOCFGA_PRIORITY_VAL                1
 CRYPTOCFGA_REPORT_LARVAL       2
index 768dbc1353c8a60f5045dd0ef96a3fed56bfab65..74c98812a8282d992811f5dcde600434e32ad925 100644 (file)
@@ -208,39 +208,327 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat dcb_commands[] = {
- XLAT(DCB_CMD_UNDEFINED),
- XLAT(DCB_CMD_GSTATE),
- XLAT(DCB_CMD_SSTATE),
- XLAT(DCB_CMD_PGTX_GCFG),
- XLAT(DCB_CMD_PGTX_SCFG),
- XLAT(DCB_CMD_PGRX_GCFG),
- XLAT(DCB_CMD_PGRX_SCFG),
- XLAT(DCB_CMD_PFC_GCFG),
- XLAT(DCB_CMD_PFC_SCFG),
- XLAT(DCB_CMD_SET_ALL),
- XLAT(DCB_CMD_GPERM_HWADDR),
- XLAT(DCB_CMD_GCAP),
- XLAT(DCB_CMD_GNUMTCS),
- XLAT(DCB_CMD_SNUMTCS),
- XLAT(DCB_CMD_PFC_GSTATE),
- XLAT(DCB_CMD_PFC_SSTATE),
- XLAT(DCB_CMD_BCN_GCFG),
- XLAT(DCB_CMD_BCN_SCFG),
- XLAT(DCB_CMD_GAPP),
- XLAT(DCB_CMD_SAPP),
- XLAT(DCB_CMD_IEEE_SET),
- XLAT(DCB_CMD_IEEE_GET),
- XLAT(DCB_CMD_GDCBX),
- XLAT(DCB_CMD_SDCBX),
- XLAT(DCB_CMD_GFEATCFG),
- XLAT(DCB_CMD_SFEATCFG),
- XLAT(DCB_CMD_CEE_GET),
- XLAT(DCB_CMD_IEEE_DEL),
- XLAT_END
+static const struct xlat_data dcb_commands_xdata[] = {
+ [DCB_CMD_UNDEFINED] = XLAT(DCB_CMD_UNDEFINED),
+ #define XLAT_VAL_0 ((unsigned) (DCB_CMD_UNDEFINED))
+ #define XLAT_STR_0 STRINGIFY(DCB_CMD_UNDEFINED)
+ [DCB_CMD_GSTATE] = XLAT(DCB_CMD_GSTATE),
+ #define XLAT_VAL_1 ((unsigned) (DCB_CMD_GSTATE))
+ #define XLAT_STR_1 STRINGIFY(DCB_CMD_GSTATE)
+ [DCB_CMD_SSTATE] = XLAT(DCB_CMD_SSTATE),
+ #define XLAT_VAL_2 ((unsigned) (DCB_CMD_SSTATE))
+ #define XLAT_STR_2 STRINGIFY(DCB_CMD_SSTATE)
+ [DCB_CMD_PGTX_GCFG] = XLAT(DCB_CMD_PGTX_GCFG),
+ #define XLAT_VAL_3 ((unsigned) (DCB_CMD_PGTX_GCFG))
+ #define XLAT_STR_3 STRINGIFY(DCB_CMD_PGTX_GCFG)
+ [DCB_CMD_PGTX_SCFG] = XLAT(DCB_CMD_PGTX_SCFG),
+ #define XLAT_VAL_4 ((unsigned) (DCB_CMD_PGTX_SCFG))
+ #define XLAT_STR_4 STRINGIFY(DCB_CMD_PGTX_SCFG)
+ [DCB_CMD_PGRX_GCFG] = XLAT(DCB_CMD_PGRX_GCFG),
+ #define XLAT_VAL_5 ((unsigned) (DCB_CMD_PGRX_GCFG))
+ #define XLAT_STR_5 STRINGIFY(DCB_CMD_PGRX_GCFG)
+ [DCB_CMD_PGRX_SCFG] = XLAT(DCB_CMD_PGRX_SCFG),
+ #define XLAT_VAL_6 ((unsigned) (DCB_CMD_PGRX_SCFG))
+ #define XLAT_STR_6 STRINGIFY(DCB_CMD_PGRX_SCFG)
+ [DCB_CMD_PFC_GCFG] = XLAT(DCB_CMD_PFC_GCFG),
+ #define XLAT_VAL_7 ((unsigned) (DCB_CMD_PFC_GCFG))
+ #define XLAT_STR_7 STRINGIFY(DCB_CMD_PFC_GCFG)
+ [DCB_CMD_PFC_SCFG] = XLAT(DCB_CMD_PFC_SCFG),
+ #define XLAT_VAL_8 ((unsigned) (DCB_CMD_PFC_SCFG))
+ #define XLAT_STR_8 STRINGIFY(DCB_CMD_PFC_SCFG)
+ [DCB_CMD_SET_ALL] = XLAT(DCB_CMD_SET_ALL),
+ #define XLAT_VAL_9 ((unsigned) (DCB_CMD_SET_ALL))
+ #define XLAT_STR_9 STRINGIFY(DCB_CMD_SET_ALL)
+ [DCB_CMD_GPERM_HWADDR] = XLAT(DCB_CMD_GPERM_HWADDR),
+ #define XLAT_VAL_10 ((unsigned) (DCB_CMD_GPERM_HWADDR))
+ #define XLAT_STR_10 STRINGIFY(DCB_CMD_GPERM_HWADDR)
+ [DCB_CMD_GCAP] = XLAT(DCB_CMD_GCAP),
+ #define XLAT_VAL_11 ((unsigned) (DCB_CMD_GCAP))
+ #define XLAT_STR_11 STRINGIFY(DCB_CMD_GCAP)
+ [DCB_CMD_GNUMTCS] = XLAT(DCB_CMD_GNUMTCS),
+ #define XLAT_VAL_12 ((unsigned) (DCB_CMD_GNUMTCS))
+ #define XLAT_STR_12 STRINGIFY(DCB_CMD_GNUMTCS)
+ [DCB_CMD_SNUMTCS] = XLAT(DCB_CMD_SNUMTCS),
+ #define XLAT_VAL_13 ((unsigned) (DCB_CMD_SNUMTCS))
+ #define XLAT_STR_13 STRINGIFY(DCB_CMD_SNUMTCS)
+ [DCB_CMD_PFC_GSTATE] = XLAT(DCB_CMD_PFC_GSTATE),
+ #define XLAT_VAL_14 ((unsigned) (DCB_CMD_PFC_GSTATE))
+ #define XLAT_STR_14 STRINGIFY(DCB_CMD_PFC_GSTATE)
+ [DCB_CMD_PFC_SSTATE] = XLAT(DCB_CMD_PFC_SSTATE),
+ #define XLAT_VAL_15 ((unsigned) (DCB_CMD_PFC_SSTATE))
+ #define XLAT_STR_15 STRINGIFY(DCB_CMD_PFC_SSTATE)
+ [DCB_CMD_BCN_GCFG] = XLAT(DCB_CMD_BCN_GCFG),
+ #define XLAT_VAL_16 ((unsigned) (DCB_CMD_BCN_GCFG))
+ #define XLAT_STR_16 STRINGIFY(DCB_CMD_BCN_GCFG)
+ [DCB_CMD_BCN_SCFG] = XLAT(DCB_CMD_BCN_SCFG),
+ #define XLAT_VAL_17 ((unsigned) (DCB_CMD_BCN_SCFG))
+ #define XLAT_STR_17 STRINGIFY(DCB_CMD_BCN_SCFG)
+ [DCB_CMD_GAPP] = XLAT(DCB_CMD_GAPP),
+ #define XLAT_VAL_18 ((unsigned) (DCB_CMD_GAPP))
+ #define XLAT_STR_18 STRINGIFY(DCB_CMD_GAPP)
+ [DCB_CMD_SAPP] = XLAT(DCB_CMD_SAPP),
+ #define XLAT_VAL_19 ((unsigned) (DCB_CMD_SAPP))
+ #define XLAT_STR_19 STRINGIFY(DCB_CMD_SAPP)
+ [DCB_CMD_IEEE_SET] = XLAT(DCB_CMD_IEEE_SET),
+ #define XLAT_VAL_20 ((unsigned) (DCB_CMD_IEEE_SET))
+ #define XLAT_STR_20 STRINGIFY(DCB_CMD_IEEE_SET)
+ [DCB_CMD_IEEE_GET] = XLAT(DCB_CMD_IEEE_GET),
+ #define XLAT_VAL_21 ((unsigned) (DCB_CMD_IEEE_GET))
+ #define XLAT_STR_21 STRINGIFY(DCB_CMD_IEEE_GET)
+ [DCB_CMD_GDCBX] = XLAT(DCB_CMD_GDCBX),
+ #define XLAT_VAL_22 ((unsigned) (DCB_CMD_GDCBX))
+ #define XLAT_STR_22 STRINGIFY(DCB_CMD_GDCBX)
+ [DCB_CMD_SDCBX] = XLAT(DCB_CMD_SDCBX),
+ #define XLAT_VAL_23 ((unsigned) (DCB_CMD_SDCBX))
+ #define XLAT_STR_23 STRINGIFY(DCB_CMD_SDCBX)
+ [DCB_CMD_GFEATCFG] = XLAT(DCB_CMD_GFEATCFG),
+ #define XLAT_VAL_24 ((unsigned) (DCB_CMD_GFEATCFG))
+ #define XLAT_STR_24 STRINGIFY(DCB_CMD_GFEATCFG)
+ [DCB_CMD_SFEATCFG] = XLAT(DCB_CMD_SFEATCFG),
+ #define XLAT_VAL_25 ((unsigned) (DCB_CMD_SFEATCFG))
+ #define XLAT_STR_25 STRINGIFY(DCB_CMD_SFEATCFG)
+ [DCB_CMD_CEE_GET] = XLAT(DCB_CMD_CEE_GET),
+ #define XLAT_VAL_26 ((unsigned) (DCB_CMD_CEE_GET))
+ #define XLAT_STR_26 STRINGIFY(DCB_CMD_CEE_GET)
+ [DCB_CMD_IEEE_DEL] = XLAT(DCB_CMD_IEEE_DEL),
+ #define XLAT_VAL_27 ((unsigned) (DCB_CMD_IEEE_DEL))
+ #define XLAT_STR_27 STRINGIFY(DCB_CMD_IEEE_DEL)
 };
+static
+const struct xlat dcb_commands[1] = { {
+ .data = dcb_commands_xdata,
+ .size = ARRAY_SIZE(dcb_commands_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 6a5e6133af6d19772cf7c88dc3480c54ce45e52b..9b3f5c3ed9d3498fed341f2de2a344b91c2ad7af 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 DCB_CMD_UNDEFINED      0
 DCB_CMD_GSTATE         1
 DCB_CMD_SSTATE         2
index 8c09810a510c49239b109f5641923df7b4b03c80..59593eaf5ba63b57290a777541ca3c8d17888351 100644 (file)
 
 # else
 
-static
-const struct xlat delete_module_flags[] = {
+static const struct xlat_data delete_module_flags_xdata[] = {
 #if defined(O_NONBLOCK) || (defined(HAVE_DECL_O_NONBLOCK) && HAVE_DECL_O_NONBLOCK)
   XLAT(O_NONBLOCK),
+ #define XLAT_VAL_0 ((unsigned) (O_NONBLOCK))
+ #define XLAT_STR_0 STRINGIFY(O_NONBLOCK)
 #endif
 #if defined(O_TRUNC) || (defined(HAVE_DECL_O_TRUNC) && HAVE_DECL_O_TRUNC)
   XLAT(O_TRUNC),
+ #define XLAT_VAL_1 ((unsigned) (O_TRUNC))
+ #define XLAT_STR_1 STRINGIFY(O_TRUNC)
 #endif
- XLAT_END
 };
-
+static
+const struct xlat delete_module_flags[1] = { {
+ .data = delete_module_flags_xdata,
+ .size = ARRAY_SIZE(delete_module_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 0d21f501e4ab4002cf1a7c660f53a772b06cb4b9..eb0a40cccc34c2c0bd160b01a230b3d68433e47f 100644 (file)
 
 # ifndef IN_MPERS
 
-const struct xlat dirent_types[] = {
+static const struct xlat_data dirent_types_xdata[] = {
 #if defined(DT_UNKNOWN) || (defined(HAVE_DECL_DT_UNKNOWN) && HAVE_DECL_DT_UNKNOWN)
   XLAT(DT_UNKNOWN),
+ #define XLAT_VAL_0 ((unsigned) (DT_UNKNOWN))
+ #define XLAT_STR_0 STRINGIFY(DT_UNKNOWN)
 #endif
 #if defined(DT_FIFO) || (defined(HAVE_DECL_DT_FIFO) && HAVE_DECL_DT_FIFO)
   XLAT(DT_FIFO),
+ #define XLAT_VAL_1 ((unsigned) (DT_FIFO))
+ #define XLAT_STR_1 STRINGIFY(DT_FIFO)
 #endif
 #if defined(DT_CHR) || (defined(HAVE_DECL_DT_CHR) && HAVE_DECL_DT_CHR)
   XLAT(DT_CHR),
+ #define XLAT_VAL_2 ((unsigned) (DT_CHR))
+ #define XLAT_STR_2 STRINGIFY(DT_CHR)
 #endif
 #if defined(DT_DIR) || (defined(HAVE_DECL_DT_DIR) && HAVE_DECL_DT_DIR)
   XLAT(DT_DIR),
+ #define XLAT_VAL_3 ((unsigned) (DT_DIR))
+ #define XLAT_STR_3 STRINGIFY(DT_DIR)
 #endif
 #if defined(DT_BLK) || (defined(HAVE_DECL_DT_BLK) && HAVE_DECL_DT_BLK)
   XLAT(DT_BLK),
+ #define XLAT_VAL_4 ((unsigned) (DT_BLK))
+ #define XLAT_STR_4 STRINGIFY(DT_BLK)
 #endif
 #if defined(DT_REG) || (defined(HAVE_DECL_DT_REG) && HAVE_DECL_DT_REG)
   XLAT(DT_REG),
+ #define XLAT_VAL_5 ((unsigned) (DT_REG))
+ #define XLAT_STR_5 STRINGIFY(DT_REG)
 #endif
 #if defined(DT_LNK) || (defined(HAVE_DECL_DT_LNK) && HAVE_DECL_DT_LNK)
   XLAT(DT_LNK),
+ #define XLAT_VAL_6 ((unsigned) (DT_LNK))
+ #define XLAT_STR_6 STRINGIFY(DT_LNK)
 #endif
 #if defined(DT_SOCK) || (defined(HAVE_DECL_DT_SOCK) && HAVE_DECL_DT_SOCK)
   XLAT(DT_SOCK),
+ #define XLAT_VAL_7 ((unsigned) (DT_SOCK))
+ #define XLAT_STR_7 STRINGIFY(DT_SOCK)
 #endif
 #if defined(DT_WHT) || (defined(HAVE_DECL_DT_WHT) && HAVE_DECL_DT_WHT)
   XLAT(DT_WHT),
+ #define XLAT_VAL_8 ((unsigned) (DT_WHT))
+ #define XLAT_STR_8 STRINGIFY(DT_WHT)
 #endif
- XLAT_END
 };
+const struct xlat dirent_types[1] = { {
+ .data = dirent_types_xdata,
+ .size = ARRAY_SIZE(dirent_types_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 88b508cb61f3396e24c02688b0a31dd5a34323be..610c0d6216ea60d7928ef312da6fce196724d897 100644 (file)
@@ -138,30 +138,218 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat dm_flags[] = {
+static const struct xlat_data dm_flags_xdata[] = {
  XLAT(DM_READONLY_FLAG),
+ #define XLAT_VAL_0 ((unsigned) (DM_READONLY_FLAG))
+ #define XLAT_STR_0 STRINGIFY(DM_READONLY_FLAG)
  XLAT(DM_SUSPEND_FLAG),
+ #define XLAT_VAL_1 ((unsigned) (DM_SUSPEND_FLAG))
+ #define XLAT_STR_1 STRINGIFY(DM_SUSPEND_FLAG)
 
  XLAT(DM_EXISTS_FLAG),
+ #define XLAT_VAL_2 ((unsigned) (DM_EXISTS_FLAG))
+ #define XLAT_STR_2 STRINGIFY(DM_EXISTS_FLAG)
  XLAT(DM_PERSISTENT_DEV_FLAG),
+ #define XLAT_VAL_3 ((unsigned) (DM_PERSISTENT_DEV_FLAG))
+ #define XLAT_STR_3 STRINGIFY(DM_PERSISTENT_DEV_FLAG)
  XLAT(DM_STATUS_TABLE_FLAG),
+ #define XLAT_VAL_4 ((unsigned) (DM_STATUS_TABLE_FLAG))
+ #define XLAT_STR_4 STRINGIFY(DM_STATUS_TABLE_FLAG)
  XLAT(DM_ACTIVE_PRESENT_FLAG),
+ #define XLAT_VAL_5 ((unsigned) (DM_ACTIVE_PRESENT_FLAG))
+ #define XLAT_STR_5 STRINGIFY(DM_ACTIVE_PRESENT_FLAG)
  XLAT(DM_INACTIVE_PRESENT_FLAG),
+ #define XLAT_VAL_6 ((unsigned) (DM_INACTIVE_PRESENT_FLAG))
+ #define XLAT_STR_6 STRINGIFY(DM_INACTIVE_PRESENT_FLAG)
  XLAT(DM_BUFFER_FULL_FLAG),
+ #define XLAT_VAL_7 ((unsigned) (DM_BUFFER_FULL_FLAG))
+ #define XLAT_STR_7 STRINGIFY(DM_BUFFER_FULL_FLAG)
  XLAT(DM_SKIP_BDGET_FLAG),
+ #define XLAT_VAL_8 ((unsigned) (DM_SKIP_BDGET_FLAG))
+ #define XLAT_STR_8 STRINGIFY(DM_SKIP_BDGET_FLAG)
  XLAT(DM_SKIP_LOCKFS_FLAG),
+ #define XLAT_VAL_9 ((unsigned) (DM_SKIP_LOCKFS_FLAG))
+ #define XLAT_STR_9 STRINGIFY(DM_SKIP_LOCKFS_FLAG)
  XLAT(DM_NOFLUSH_FLAG),
+ #define XLAT_VAL_10 ((unsigned) (DM_NOFLUSH_FLAG))
+ #define XLAT_STR_10 STRINGIFY(DM_NOFLUSH_FLAG)
  XLAT(DM_QUERY_INACTIVE_TABLE_FLAG),
+ #define XLAT_VAL_11 ((unsigned) (DM_QUERY_INACTIVE_TABLE_FLAG))
+ #define XLAT_STR_11 STRINGIFY(DM_QUERY_INACTIVE_TABLE_FLAG)
  XLAT(DM_UEVENT_GENERATED_FLAG),
+ #define XLAT_VAL_12 ((unsigned) (DM_UEVENT_GENERATED_FLAG))
+ #define XLAT_STR_12 STRINGIFY(DM_UEVENT_GENERATED_FLAG)
  XLAT(DM_UUID_FLAG),
+ #define XLAT_VAL_13 ((unsigned) (DM_UUID_FLAG))
+ #define XLAT_STR_13 STRINGIFY(DM_UUID_FLAG)
  XLAT(DM_SECURE_DATA_FLAG),
+ #define XLAT_VAL_14 ((unsigned) (DM_SECURE_DATA_FLAG))
+ #define XLAT_STR_14 STRINGIFY(DM_SECURE_DATA_FLAG)
  XLAT(DM_DATA_OUT_FLAG),
+ #define XLAT_VAL_15 ((unsigned) (DM_DATA_OUT_FLAG))
+ #define XLAT_STR_15 STRINGIFY(DM_DATA_OUT_FLAG)
  XLAT(DM_DEFERRED_REMOVE),
+ #define XLAT_VAL_16 ((unsigned) (DM_DEFERRED_REMOVE))
+ #define XLAT_STR_16 STRINGIFY(DM_DEFERRED_REMOVE)
  XLAT(DM_INTERNAL_SUSPEND_FLAG),
- XLAT_END
+ #define XLAT_VAL_17 ((unsigned) (DM_INTERNAL_SUSPEND_FLAG))
+ #define XLAT_STR_17 STRINGIFY(DM_INTERNAL_SUSPEND_FLAG)
 };
+static
+const struct xlat dm_flags[1] = { {
+ .data = dm_flags_xdata,
+ .size = ARRAY_SIZE(dm_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index f8d5ac43c87a4a85bd1090ace16e51a5c7c09fef..0e113cfb82bc4256f8b0dee05d49e7d7a1d9df2e 100644 (file)
@@ -68,19 +68,107 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat ebpf_class[] = {
+static const struct xlat_data ebpf_class_xdata[] = {
  [BPF_LD] = XLAT(BPF_LD),
+ #define XLAT_VAL_0 ((unsigned) (BPF_LD))
+ #define XLAT_STR_0 STRINGIFY(BPF_LD)
  [BPF_LDX] = XLAT(BPF_LDX),
+ #define XLAT_VAL_1 ((unsigned) (BPF_LDX))
+ #define XLAT_STR_1 STRINGIFY(BPF_LDX)
  [BPF_ST] = XLAT(BPF_ST),
+ #define XLAT_VAL_2 ((unsigned) (BPF_ST))
+ #define XLAT_STR_2 STRINGIFY(BPF_ST)
  [BPF_STX] = XLAT(BPF_STX),
+ #define XLAT_VAL_3 ((unsigned) (BPF_STX))
+ #define XLAT_STR_3 STRINGIFY(BPF_STX)
  [BPF_ALU] = XLAT(BPF_ALU),
+ #define XLAT_VAL_4 ((unsigned) (BPF_ALU))
+ #define XLAT_STR_4 STRINGIFY(BPF_ALU)
  [BPF_JMP] = XLAT(BPF_JMP),
+ #define XLAT_VAL_5 ((unsigned) (BPF_JMP))
+ #define XLAT_STR_5 STRINGIFY(BPF_JMP)
  [BPF_JMP32] = XLAT(BPF_JMP32),
+ #define XLAT_VAL_6 ((unsigned) (BPF_JMP32))
+ #define XLAT_STR_6 STRINGIFY(BPF_JMP32)
  [BPF_ALU64] = XLAT(BPF_ALU64),
- XLAT_END
+ #define XLAT_VAL_7 ((unsigned) (BPF_ALU64))
+ #define XLAT_STR_7 STRINGIFY(BPF_ALU64)
 };
+static
+const struct xlat ebpf_class[1] = { {
+ .data = ebpf_class_xdata,
+ .size = ARRAY_SIZE(ebpf_class_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 5fddcfb6966ec29cfcc036c29c7ea89343aca850..a587d670d483d19a480288ddeab05bcc33d4b772 100644 (file)
@@ -47,16 +47,74 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat ebpf_mode[] = {
+static const struct xlat_data ebpf_mode_xdata[] = {
  XLAT(BPF_IMM),
+ #define XLAT_VAL_0 ((unsigned) (BPF_IMM))
+ #define XLAT_STR_0 STRINGIFY(BPF_IMM)
  XLAT(BPF_ABS),
+ #define XLAT_VAL_1 ((unsigned) (BPF_ABS))
+ #define XLAT_STR_1 STRINGIFY(BPF_ABS)
  XLAT(BPF_IND),
+ #define XLAT_VAL_2 ((unsigned) (BPF_IND))
+ #define XLAT_STR_2 STRINGIFY(BPF_IND)
  XLAT(BPF_MEM),
+ #define XLAT_VAL_3 ((unsigned) (BPF_MEM))
+ #define XLAT_STR_3 STRINGIFY(BPF_MEM)
  XLAT(BPF_XADD),
- XLAT_END
+ #define XLAT_VAL_4 ((unsigned) (BPF_XADD))
+ #define XLAT_STR_4 STRINGIFY(BPF_XADD)
 };
+static
+const struct xlat ebpf_mode[1] = { {
+ .data = ebpf_mode_xdata,
+ .size = ARRAY_SIZE(ebpf_mode_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 2a5151c39f4c34e3ac4cb1baf0ee72815b8a2163..264d0cbaa51a33f79d3fcd1bd6314a521b2ddcd0 100644 (file)
@@ -33,14 +33,52 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat ebpf_op_alu[] = {
+static const struct xlat_data ebpf_op_alu_xdata[] = {
  XLAT(BPF_MOV),
+ #define XLAT_VAL_0 ((unsigned) (BPF_MOV))
+ #define XLAT_STR_0 STRINGIFY(BPF_MOV)
  XLAT(BPF_ARSH),
+ #define XLAT_VAL_1 ((unsigned) (BPF_ARSH))
+ #define XLAT_STR_1 STRINGIFY(BPF_ARSH)
  XLAT(BPF_END),
- XLAT_END
+ #define XLAT_VAL_2 ((unsigned) (BPF_END))
+ #define XLAT_STR_2 STRINGIFY(BPF_END)
 };
+static
+const struct xlat ebpf_op_alu[1] = { {
+ .data = ebpf_op_alu_xdata,
+ .size = ARRAY_SIZE(ebpf_op_alu_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index d1feb21cd3e411e60e34bf0dcd3f5f3047942bef..543893b0a0c765cc8bb22e84be5e62b23353ed1a 100644 (file)
@@ -75,20 +75,118 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat ebpf_op_jmp[] = {
+static const struct xlat_data ebpf_op_jmp_xdata[] = {
  XLAT(BPF_JNE),
+ #define XLAT_VAL_0 ((unsigned) (BPF_JNE))
+ #define XLAT_STR_0 STRINGIFY(BPF_JNE)
  XLAT(BPF_JSGT),
+ #define XLAT_VAL_1 ((unsigned) (BPF_JSGT))
+ #define XLAT_STR_1 STRINGIFY(BPF_JSGT)
  XLAT(BPF_JSGE),
+ #define XLAT_VAL_2 ((unsigned) (BPF_JSGE))
+ #define XLAT_STR_2 STRINGIFY(BPF_JSGE)
  XLAT(BPF_CALL),
+ #define XLAT_VAL_3 ((unsigned) (BPF_CALL))
+ #define XLAT_STR_3 STRINGIFY(BPF_CALL)
  XLAT(BPF_EXIT),
+ #define XLAT_VAL_4 ((unsigned) (BPF_EXIT))
+ #define XLAT_STR_4 STRINGIFY(BPF_EXIT)
  XLAT(BPF_JLT),
+ #define XLAT_VAL_5 ((unsigned) (BPF_JLT))
+ #define XLAT_STR_5 STRINGIFY(BPF_JLT)
  XLAT(BPF_JLE),
+ #define XLAT_VAL_6 ((unsigned) (BPF_JLE))
+ #define XLAT_STR_6 STRINGIFY(BPF_JLE)
  XLAT(BPF_JSLT),
+ #define XLAT_VAL_7 ((unsigned) (BPF_JSLT))
+ #define XLAT_STR_7 STRINGIFY(BPF_JSLT)
  XLAT(BPF_JSLE),
- XLAT_END
+ #define XLAT_VAL_8 ((unsigned) (BPF_JSLE))
+ #define XLAT_STR_8 STRINGIFY(BPF_JSLE)
 };
+static
+const struct xlat ebpf_op_jmp[1] = { {
+ .data = ebpf_op_jmp_xdata,
+ .size = ARRAY_SIZE(ebpf_op_jmp_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 67985169a8042d20a14e9e3aabc442e1f22d2222..f632149661493264e5940531f75c23398d6b9c7e 100644 (file)
@@ -89,22 +89,140 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat ebpf_regs[] = {
+static const struct xlat_data ebpf_regs_xdata[] = {
  [BPF_REG_0] = XLAT(BPF_REG_0),
+ #define XLAT_VAL_0 ((unsigned) (BPF_REG_0))
+ #define XLAT_STR_0 STRINGIFY(BPF_REG_0)
  [BPF_REG_1] = XLAT(BPF_REG_1),
+ #define XLAT_VAL_1 ((unsigned) (BPF_REG_1))
+ #define XLAT_STR_1 STRINGIFY(BPF_REG_1)
  [BPF_REG_2] = XLAT(BPF_REG_2),
+ #define XLAT_VAL_2 ((unsigned) (BPF_REG_2))
+ #define XLAT_STR_2 STRINGIFY(BPF_REG_2)
  [BPF_REG_3] = XLAT(BPF_REG_3),
+ #define XLAT_VAL_3 ((unsigned) (BPF_REG_3))
+ #define XLAT_STR_3 STRINGIFY(BPF_REG_3)
  [BPF_REG_4] = XLAT(BPF_REG_4),
+ #define XLAT_VAL_4 ((unsigned) (BPF_REG_4))
+ #define XLAT_STR_4 STRINGIFY(BPF_REG_4)
  [BPF_REG_5] = XLAT(BPF_REG_5),
+ #define XLAT_VAL_5 ((unsigned) (BPF_REG_5))
+ #define XLAT_STR_5 STRINGIFY(BPF_REG_5)
  [BPF_REG_6] = XLAT(BPF_REG_6),
+ #define XLAT_VAL_6 ((unsigned) (BPF_REG_6))
+ #define XLAT_STR_6 STRINGIFY(BPF_REG_6)
  [BPF_REG_7] = XLAT(BPF_REG_7),
+ #define XLAT_VAL_7 ((unsigned) (BPF_REG_7))
+ #define XLAT_STR_7 STRINGIFY(BPF_REG_7)
  [BPF_REG_8] = XLAT(BPF_REG_8),
+ #define XLAT_VAL_8 ((unsigned) (BPF_REG_8))
+ #define XLAT_STR_8 STRINGIFY(BPF_REG_8)
  [BPF_REG_9] = XLAT(BPF_REG_9),
+ #define XLAT_VAL_9 ((unsigned) (BPF_REG_9))
+ #define XLAT_STR_9 STRINGIFY(BPF_REG_9)
  [BPF_REG_10] = XLAT(BPF_REG_10),
- XLAT_END
+ #define XLAT_VAL_10 ((unsigned) (BPF_REG_10))
+ #define XLAT_STR_10 STRINGIFY(BPF_REG_10)
 };
+static
+const struct xlat ebpf_regs[1] = { {
+ .data = ebpf_regs_xdata,
+ .size = ARRAY_SIZE(ebpf_regs_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index b3d32d2db51a3b22c0f834d3630016ed6296d565..4adb5547e58a44e61b12809295d96a40a80b04ad 100644 (file)
@@ -19,12 +19,30 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat ebpf_size[] = {
+static const struct xlat_data ebpf_size_xdata[] = {
  XLAT(BPF_DW),
- XLAT_END
+ #define XLAT_VAL_0 ((unsigned) (BPF_DW))
+ #define XLAT_STR_0 STRINGIFY(BPF_DW)
 };
-
+static
+const struct xlat ebpf_size[1] = { {
+ .data = ebpf_size_xdata,
+ .size = ARRAY_SIZE(ebpf_size_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index e61316ade6e804262de565f48584f9b55a37ee0b..082919f1f6b5ee38970758763f75d0334d970e7e 100644 (file)
@@ -35,16 +35,54 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat efd_flags[] = {
+static const struct xlat_data efd_flags_xdata[] = {
  XLAT(EFD_SEMAPHORE),
+ #define XLAT_VAL_0 ((unsigned) (EFD_SEMAPHORE))
+ #define XLAT_STR_0 STRINGIFY(EFD_SEMAPHORE)
 #if defined EFD_CLOEXEC || defined O_CLOEXEC
  XLAT(EFD_CLOEXEC),
+ #define XLAT_VAL_1 ((unsigned) (EFD_CLOEXEC))
+ #define XLAT_STR_1 STRINGIFY(EFD_CLOEXEC)
 #endif
  XLAT(EFD_NONBLOCK),
- XLAT_END
+ #define XLAT_VAL_2 ((unsigned) (EFD_NONBLOCK))
+ #define XLAT_STR_2 STRINGIFY(EFD_NONBLOCK)
 };
+static
+const struct xlat efd_flags[1] = { {
+ .data = efd_flags_xdata,
+ .size = ARRAY_SIZE(efd_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/elf_em.h b/xlat/elf_em.h
new file mode 100644 (file)
index 0000000..0db74dc
--- /dev/null
@@ -0,0 +1,3412 @@
+/* Generated by ./xlat/gen.sh from ./xlat/elf_em.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(EM_NONE) || (defined(HAVE_DECL_EM_NONE) && HAVE_DECL_EM_NONE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_NONE) == (0), "EM_NONE != 0");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_NONE 0
+#endif
+#if defined(EM_M32) || (defined(HAVE_DECL_EM_M32) && HAVE_DECL_EM_M32)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_M32) == (1), "EM_M32 != 1");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_M32 1
+#endif
+#if defined(EM_SPARC) || (defined(HAVE_DECL_EM_SPARC) && HAVE_DECL_EM_SPARC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_SPARC) == (2), "EM_SPARC != 2");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_SPARC 2
+#endif
+#if defined(EM_386) || (defined(HAVE_DECL_EM_386) && HAVE_DECL_EM_386)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_386) == (3), "EM_386 != 3");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_386 3
+#endif
+#if defined(EM_68K) || (defined(HAVE_DECL_EM_68K) && HAVE_DECL_EM_68K)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_68K) == (4), "EM_68K != 4");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_68K 4
+#endif
+#if defined(EM_88K) || (defined(HAVE_DECL_EM_88K) && HAVE_DECL_EM_88K)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_88K) == (5), "EM_88K != 5");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_88K 5
+#endif
+#if defined(EM_486) || (defined(HAVE_DECL_EM_486) && HAVE_DECL_EM_486)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_486) == (6), "EM_486 != 6");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_486 6
+#endif
+#if defined(EM_860) || (defined(HAVE_DECL_EM_860) && HAVE_DECL_EM_860)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_860) == (7), "EM_860 != 7");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_860 7
+#endif
+#if defined(EM_MIPS) || (defined(HAVE_DECL_EM_MIPS) && HAVE_DECL_EM_MIPS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_MIPS) == (8), "EM_MIPS != 8");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_MIPS 8
+#endif
+#if defined(EM_S370) || (defined(HAVE_DECL_EM_S370) && HAVE_DECL_EM_S370)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_S370) == (9), "EM_S370 != 9");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_S370 9
+#endif
+#if defined(EM_MIPS_RS3_LE) || (defined(HAVE_DECL_EM_MIPS_RS3_LE) && HAVE_DECL_EM_MIPS_RS3_LE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_MIPS_RS3_LE) == (10), "EM_MIPS_RS3_LE != 10");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_MIPS_RS3_LE 10
+#endif
+#if defined(EM_PARISC) || (defined(HAVE_DECL_EM_PARISC) && HAVE_DECL_EM_PARISC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_PARISC) == (15), "EM_PARISC != 15");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_PARISC 15
+#endif
+#if defined(EM_VPP500) || (defined(HAVE_DECL_EM_VPP500) && HAVE_DECL_EM_VPP500)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_VPP500) == (17), "EM_VPP500 != 17");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_VPP500 17
+#endif
+#if defined(EM_SPARC32PLUS) || (defined(HAVE_DECL_EM_SPARC32PLUS) && HAVE_DECL_EM_SPARC32PLUS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_SPARC32PLUS) == (18), "EM_SPARC32PLUS != 18");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_SPARC32PLUS 18
+#endif
+#if defined(EM_960) || (defined(HAVE_DECL_EM_960) && HAVE_DECL_EM_960)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_960) == (19), "EM_960 != 19");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_960 19
+#endif
+#if defined(EM_PPC) || (defined(HAVE_DECL_EM_PPC) && HAVE_DECL_EM_PPC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_PPC) == (20), "EM_PPC != 20");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_PPC 20
+#endif
+#if defined(EM_PPC64) || (defined(HAVE_DECL_EM_PPC64) && HAVE_DECL_EM_PPC64)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_PPC64) == (21), "EM_PPC64 != 21");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_PPC64 21
+#endif
+#if defined(EM_S390) || (defined(HAVE_DECL_EM_S390) && HAVE_DECL_EM_S390)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_S390) == (22), "EM_S390 != 22");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_S390 22
+#endif
+#if defined(EM_SPU) || (defined(HAVE_DECL_EM_SPU) && HAVE_DECL_EM_SPU)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_SPU) == (23), "EM_SPU != 23");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_SPU 23
+#endif
+#if defined(EM_V800) || (defined(HAVE_DECL_EM_V800) && HAVE_DECL_EM_V800)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_V800) == (36), "EM_V800 != 36");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_V800 36
+#endif
+#if defined(EM_FR20) || (defined(HAVE_DECL_EM_FR20) && HAVE_DECL_EM_FR20)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_FR20) == (37), "EM_FR20 != 37");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_FR20 37
+#endif
+#if defined(EM_RH32) || (defined(HAVE_DECL_EM_RH32) && HAVE_DECL_EM_RH32)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_RH32) == (38), "EM_RH32 != 38");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_RH32 38
+#endif
+#if defined(EM_RCE) || (defined(HAVE_DECL_EM_RCE) && HAVE_DECL_EM_RCE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_RCE) == (39), "EM_RCE != 39");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_RCE 39
+#endif
+#if defined(EM_ARM) || (defined(HAVE_DECL_EM_ARM) && HAVE_DECL_EM_ARM)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_ARM) == (40), "EM_ARM != 40");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_ARM 40
+#endif
+#if defined(EM_SH) || (defined(HAVE_DECL_EM_SH) && HAVE_DECL_EM_SH)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_SH) == (42), "EM_SH != 42");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_SH 42
+#endif
+#if defined(EM_SPARCV9) || (defined(HAVE_DECL_EM_SPARCV9) && HAVE_DECL_EM_SPARCV9)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_SPARCV9) == (43), "EM_SPARCV9 != 43");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_SPARCV9 43
+#endif
+#if defined(EM_TRICORE) || (defined(HAVE_DECL_EM_TRICORE) && HAVE_DECL_EM_TRICORE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_TRICORE) == (44), "EM_TRICORE != 44");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_TRICORE 44
+#endif
+#if defined(EM_ARC) || (defined(HAVE_DECL_EM_ARC) && HAVE_DECL_EM_ARC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_ARC) == (45), "EM_ARC != 45");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_ARC 45
+#endif
+#if defined(EM_H8_300) || (defined(HAVE_DECL_EM_H8_300) && HAVE_DECL_EM_H8_300)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_H8_300) == (46), "EM_H8_300 != 46");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_H8_300 46
+#endif
+#if defined(EM_H8_300H) || (defined(HAVE_DECL_EM_H8_300H) && HAVE_DECL_EM_H8_300H)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_H8_300H) == (47), "EM_H8_300H != 47");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_H8_300H 47
+#endif
+#if defined(EM_H8S) || (defined(HAVE_DECL_EM_H8S) && HAVE_DECL_EM_H8S)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_H8S) == (48), "EM_H8S != 48");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_H8S 48
+#endif
+#if defined(EM_H8_500) || (defined(HAVE_DECL_EM_H8_500) && HAVE_DECL_EM_H8_500)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_H8_500) == (49), "EM_H8_500 != 49");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_H8_500 49
+#endif
+#if defined(EM_IA_64) || (defined(HAVE_DECL_EM_IA_64) && HAVE_DECL_EM_IA_64)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_IA_64) == (50), "EM_IA_64 != 50");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_IA_64 50
+#endif
+#if defined(EM_MIPS_X) || (defined(HAVE_DECL_EM_MIPS_X) && HAVE_DECL_EM_MIPS_X)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_MIPS_X) == (51), "EM_MIPS_X != 51");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_MIPS_X 51
+#endif
+#if defined(EM_COLDFIRE) || (defined(HAVE_DECL_EM_COLDFIRE) && HAVE_DECL_EM_COLDFIRE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_COLDFIRE) == (52), "EM_COLDFIRE != 52");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_COLDFIRE 52
+#endif
+#if defined(EM_68HC12) || (defined(HAVE_DECL_EM_68HC12) && HAVE_DECL_EM_68HC12)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_68HC12) == (53), "EM_68HC12 != 53");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_68HC12 53
+#endif
+#if defined(EM_MMA) || (defined(HAVE_DECL_EM_MMA) && HAVE_DECL_EM_MMA)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_MMA) == (54), "EM_MMA != 54");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_MMA 54
+#endif
+#if defined(EM_PCP) || (defined(HAVE_DECL_EM_PCP) && HAVE_DECL_EM_PCP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_PCP) == (55), "EM_PCP != 55");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_PCP 55
+#endif
+#if defined(EM_NCPU) || (defined(HAVE_DECL_EM_NCPU) && HAVE_DECL_EM_NCPU)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_NCPU) == (56), "EM_NCPU != 56");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_NCPU 56
+#endif
+#if defined(EM_NDR1) || (defined(HAVE_DECL_EM_NDR1) && HAVE_DECL_EM_NDR1)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_NDR1) == (57), "EM_NDR1 != 57");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_NDR1 57
+#endif
+#if defined(EM_STARCORE) || (defined(HAVE_DECL_EM_STARCORE) && HAVE_DECL_EM_STARCORE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_STARCORE) == (58), "EM_STARCORE != 58");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_STARCORE 58
+#endif
+#if defined(EM_ME16) || (defined(HAVE_DECL_EM_ME16) && HAVE_DECL_EM_ME16)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_ME16) == (59), "EM_ME16 != 59");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_ME16 59
+#endif
+#if defined(EM_ST100) || (defined(HAVE_DECL_EM_ST100) && HAVE_DECL_EM_ST100)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_ST100) == (60), "EM_ST100 != 60");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_ST100 60
+#endif
+#if defined(EM_TINYJ) || (defined(HAVE_DECL_EM_TINYJ) && HAVE_DECL_EM_TINYJ)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_TINYJ) == (61), "EM_TINYJ != 61");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_TINYJ 61
+#endif
+#if defined(EM_X86_64) || (defined(HAVE_DECL_EM_X86_64) && HAVE_DECL_EM_X86_64)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_X86_64) == (62), "EM_X86_64 != 62");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_X86_64 62
+#endif
+#if defined(EM_PDSP) || (defined(HAVE_DECL_EM_PDSP) && HAVE_DECL_EM_PDSP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_PDSP) == (63), "EM_PDSP != 63");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_PDSP 63
+#endif
+#if defined(EM_PDP10) || (defined(HAVE_DECL_EM_PDP10) && HAVE_DECL_EM_PDP10)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_PDP10) == (64), "EM_PDP10 != 64");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_PDP10 64
+#endif
+#if defined(EM_PDP11) || (defined(HAVE_DECL_EM_PDP11) && HAVE_DECL_EM_PDP11)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_PDP11) == (65), "EM_PDP11 != 65");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_PDP11 65
+#endif
+#if defined(EM_FX66) || (defined(HAVE_DECL_EM_FX66) && HAVE_DECL_EM_FX66)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_FX66) == (66), "EM_FX66 != 66");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_FX66 66
+#endif
+#if defined(EM_ST9PLUS) || (defined(HAVE_DECL_EM_ST9PLUS) && HAVE_DECL_EM_ST9PLUS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_ST9PLUS) == (67), "EM_ST9PLUS != 67");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_ST9PLUS 67
+#endif
+#if defined(EM_ST7) || (defined(HAVE_DECL_EM_ST7) && HAVE_DECL_EM_ST7)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_ST7) == (68), "EM_ST7 != 68");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_ST7 68
+#endif
+#if defined(EM_68HC16) || (defined(HAVE_DECL_EM_68HC16) && HAVE_DECL_EM_68HC16)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_68HC16) == (69), "EM_68HC16 != 69");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_68HC16 69
+#endif
+#if defined(EM_68HC11) || (defined(HAVE_DECL_EM_68HC11) && HAVE_DECL_EM_68HC11)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_68HC11) == (70), "EM_68HC11 != 70");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_68HC11 70
+#endif
+#if defined(EM_68HC08) || (defined(HAVE_DECL_EM_68HC08) && HAVE_DECL_EM_68HC08)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_68HC08) == (71), "EM_68HC08 != 71");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_68HC08 71
+#endif
+#if defined(EM_68HC05) || (defined(HAVE_DECL_EM_68HC05) && HAVE_DECL_EM_68HC05)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_68HC05) == (72), "EM_68HC05 != 72");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_68HC05 72
+#endif
+#if defined(EM_SVX) || (defined(HAVE_DECL_EM_SVX) && HAVE_DECL_EM_SVX)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_SVX) == (73), "EM_SVX != 73");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_SVX 73
+#endif
+#if defined(EM_ST19) || (defined(HAVE_DECL_EM_ST19) && HAVE_DECL_EM_ST19)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_ST19) == (74), "EM_ST19 != 74");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_ST19 74
+#endif
+#if defined(EM_VAX) || (defined(HAVE_DECL_EM_VAX) && HAVE_DECL_EM_VAX)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_VAX) == (75), "EM_VAX != 75");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_VAX 75
+#endif
+#if defined(EM_CRIS) || (defined(HAVE_DECL_EM_CRIS) && HAVE_DECL_EM_CRIS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_CRIS) == (76), "EM_CRIS != 76");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_CRIS 76
+#endif
+#if defined(EM_JAVELIN) || (defined(HAVE_DECL_EM_JAVELIN) && HAVE_DECL_EM_JAVELIN)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_JAVELIN) == (77), "EM_JAVELIN != 77");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_JAVELIN 77
+#endif
+#if defined(EM_FIREPATH) || (defined(HAVE_DECL_EM_FIREPATH) && HAVE_DECL_EM_FIREPATH)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_FIREPATH) == (78), "EM_FIREPATH != 78");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_FIREPATH 78
+#endif
+#if defined(EM_ZSP) || (defined(HAVE_DECL_EM_ZSP) && HAVE_DECL_EM_ZSP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_ZSP) == (79), "EM_ZSP != 79");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_ZSP 79
+#endif
+#if defined(EM_MMIX) || (defined(HAVE_DECL_EM_MMIX) && HAVE_DECL_EM_MMIX)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_MMIX) == (80), "EM_MMIX != 80");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_MMIX 80
+#endif
+#if defined(EM_HUANY) || (defined(HAVE_DECL_EM_HUANY) && HAVE_DECL_EM_HUANY)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_HUANY) == (81), "EM_HUANY != 81");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_HUANY 81
+#endif
+#if defined(EM_PRISM) || (defined(HAVE_DECL_EM_PRISM) && HAVE_DECL_EM_PRISM)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_PRISM) == (82), "EM_PRISM != 82");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_PRISM 82
+#endif
+#if defined(EM_AVR) || (defined(HAVE_DECL_EM_AVR) && HAVE_DECL_EM_AVR)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_AVR) == (83), "EM_AVR != 83");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_AVR 83
+#endif
+#if defined(EM_FR30) || (defined(HAVE_DECL_EM_FR30) && HAVE_DECL_EM_FR30)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_FR30) == (84), "EM_FR30 != 84");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_FR30 84
+#endif
+#if defined(EM_D10V) || (defined(HAVE_DECL_EM_D10V) && HAVE_DECL_EM_D10V)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_D10V) == (85), "EM_D10V != 85");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_D10V 85
+#endif
+#if defined(EM_D30V) || (defined(HAVE_DECL_EM_D30V) && HAVE_DECL_EM_D30V)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_D30V) == (86), "EM_D30V != 86");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_D30V 86
+#endif
+#if defined(EM_V850) || (defined(HAVE_DECL_EM_V850) && HAVE_DECL_EM_V850)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_V850) == (87), "EM_V850 != 87");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_V850 87
+#endif
+#if defined(EM_M32R) || (defined(HAVE_DECL_EM_M32R) && HAVE_DECL_EM_M32R)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_M32R) == (88), "EM_M32R != 88");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_M32R 88
+#endif
+#if defined(EM_MN10300) || (defined(HAVE_DECL_EM_MN10300) && HAVE_DECL_EM_MN10300)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_MN10300) == (89), "EM_MN10300 != 89");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_MN10300 89
+#endif
+#if defined(EM_MN10200) || (defined(HAVE_DECL_EM_MN10200) && HAVE_DECL_EM_MN10200)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_MN10200) == (90), "EM_MN10200 != 90");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_MN10200 90
+#endif
+#if defined(EM_PJ) || (defined(HAVE_DECL_EM_PJ) && HAVE_DECL_EM_PJ)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_PJ) == (91), "EM_PJ != 91");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_PJ 91
+#endif
+#if defined(EM_OPENRISC) || (defined(HAVE_DECL_EM_OPENRISC) && HAVE_DECL_EM_OPENRISC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_OPENRISC) == (92), "EM_OPENRISC != 92");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_OPENRISC 92
+#endif
+#if defined(EM_ARCOMPACT) || (defined(HAVE_DECL_EM_ARCOMPACT) && HAVE_DECL_EM_ARCOMPACT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_ARCOMPACT) == (93), "EM_ARCOMPACT != 93");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_ARCOMPACT 93
+#endif
+#if defined(EM_XTENSA) || (defined(HAVE_DECL_EM_XTENSA) && HAVE_DECL_EM_XTENSA)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_XTENSA) == (94), "EM_XTENSA != 94");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_XTENSA 94
+#endif
+#if defined(EM_VIDEOCORE) || (defined(HAVE_DECL_EM_VIDEOCORE) && HAVE_DECL_EM_VIDEOCORE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_VIDEOCORE) == (95), "EM_VIDEOCORE != 95");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_VIDEOCORE 95
+#endif
+#if defined(EM_TMM_GPP) || (defined(HAVE_DECL_EM_TMM_GPP) && HAVE_DECL_EM_TMM_GPP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_TMM_GPP) == (96), "EM_TMM_GPP != 96");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_TMM_GPP 96
+#endif
+#if defined(EM_NS32K) || (defined(HAVE_DECL_EM_NS32K) && HAVE_DECL_EM_NS32K)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_NS32K) == (97), "EM_NS32K != 97");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_NS32K 97
+#endif
+#if defined(EM_TPC) || (defined(HAVE_DECL_EM_TPC) && HAVE_DECL_EM_TPC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_TPC) == (98), "EM_TPC != 98");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_TPC 98
+#endif
+#if defined(EM_SNP1K) || (defined(HAVE_DECL_EM_SNP1K) && HAVE_DECL_EM_SNP1K)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_SNP1K) == (99), "EM_SNP1K != 99");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_SNP1K 99
+#endif
+#if defined(EM_ST200) || (defined(HAVE_DECL_EM_ST200) && HAVE_DECL_EM_ST200)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_ST200) == (100), "EM_ST200 != 100");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_ST200 100
+#endif
+#if defined(EM_IP2K) || (defined(HAVE_DECL_EM_IP2K) && HAVE_DECL_EM_IP2K)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_IP2K) == (101), "EM_IP2K != 101");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_IP2K 101
+#endif
+#if defined(EM_MAX) || (defined(HAVE_DECL_EM_MAX) && HAVE_DECL_EM_MAX)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_MAX) == (102), "EM_MAX != 102");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_MAX 102
+#endif
+#if defined(EM_CR) || (defined(HAVE_DECL_EM_CR) && HAVE_DECL_EM_CR)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_CR) == (103), "EM_CR != 103");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_CR 103
+#endif
+#if defined(EM_F2MC16) || (defined(HAVE_DECL_EM_F2MC16) && HAVE_DECL_EM_F2MC16)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_F2MC16) == (104), "EM_F2MC16 != 104");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_F2MC16 104
+#endif
+#if defined(EM_MSP430) || (defined(HAVE_DECL_EM_MSP430) && HAVE_DECL_EM_MSP430)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_MSP430) == (105), "EM_MSP430 != 105");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_MSP430 105
+#endif
+#if defined(EM_BLACKFIN) || (defined(HAVE_DECL_EM_BLACKFIN) && HAVE_DECL_EM_BLACKFIN)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_BLACKFIN) == (106), "EM_BLACKFIN != 106");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_BLACKFIN 106
+#endif
+#if defined(EM_SE_C33) || (defined(HAVE_DECL_EM_SE_C33) && HAVE_DECL_EM_SE_C33)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_SE_C33) == (107), "EM_SE_C33 != 107");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_SE_C33 107
+#endif
+#if defined(EM_SEP) || (defined(HAVE_DECL_EM_SEP) && HAVE_DECL_EM_SEP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_SEP) == (108), "EM_SEP != 108");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_SEP 108
+#endif
+#if defined(EM_ARCA) || (defined(HAVE_DECL_EM_ARCA) && HAVE_DECL_EM_ARCA)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_ARCA) == (109), "EM_ARCA != 109");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_ARCA 109
+#endif
+#if defined(EM_UNICORE) || (defined(HAVE_DECL_EM_UNICORE) && HAVE_DECL_EM_UNICORE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_UNICORE) == (110), "EM_UNICORE != 110");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_UNICORE 110
+#endif
+#if defined(EM_EXCESS) || (defined(HAVE_DECL_EM_EXCESS) && HAVE_DECL_EM_EXCESS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_EXCESS) == (111), "EM_EXCESS != 111");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_EXCESS 111
+#endif
+#if defined(EM_DXP) || (defined(HAVE_DECL_EM_DXP) && HAVE_DECL_EM_DXP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_DXP) == (112), "EM_DXP != 112");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_DXP 112
+#endif
+#if defined(EM_ALTERA_NIOS2) || (defined(HAVE_DECL_EM_ALTERA_NIOS2) && HAVE_DECL_EM_ALTERA_NIOS2)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_ALTERA_NIOS2) == (113), "EM_ALTERA_NIOS2 != 113");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_ALTERA_NIOS2 113
+#endif
+#if defined(EM_CRX) || (defined(HAVE_DECL_EM_CRX) && HAVE_DECL_EM_CRX)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_CRX) == (114), "EM_CRX != 114");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_CRX 114
+#endif
+#if defined(EM_XGATE) || (defined(HAVE_DECL_EM_XGATE) && HAVE_DECL_EM_XGATE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_XGATE) == (115), "EM_XGATE != 115");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_XGATE 115
+#endif
+#if defined(EM_C166) || (defined(HAVE_DECL_EM_C166) && HAVE_DECL_EM_C166)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_C166) == (116), "EM_C166 != 116");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_C166 116
+#endif
+#if defined(EM_M16C) || (defined(HAVE_DECL_EM_M16C) && HAVE_DECL_EM_M16C)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_M16C) == (117), "EM_M16C != 117");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_M16C 117
+#endif
+#if defined(EM_DSPIC30F) || (defined(HAVE_DECL_EM_DSPIC30F) && HAVE_DECL_EM_DSPIC30F)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_DSPIC30F) == (118), "EM_DSPIC30F != 118");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_DSPIC30F 118
+#endif
+#if defined(EM_CE) || (defined(HAVE_DECL_EM_CE) && HAVE_DECL_EM_CE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_CE) == (119), "EM_CE != 119");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_CE 119
+#endif
+#if defined(EM_M32C) || (defined(HAVE_DECL_EM_M32C) && HAVE_DECL_EM_M32C)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_M32C) == (120), "EM_M32C != 120");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_M32C 120
+#endif
+#if defined(EM_TSK3000) || (defined(HAVE_DECL_EM_TSK3000) && HAVE_DECL_EM_TSK3000)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_TSK3000) == (131), "EM_TSK3000 != 131");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_TSK3000 131
+#endif
+#if defined(EM_RS08) || (defined(HAVE_DECL_EM_RS08) && HAVE_DECL_EM_RS08)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_RS08) == (132), "EM_RS08 != 132");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_RS08 132
+#endif
+#if defined(EM_SHARC) || (defined(HAVE_DECL_EM_SHARC) && HAVE_DECL_EM_SHARC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_SHARC) == (133), "EM_SHARC != 133");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_SHARC 133
+#endif
+#if defined(EM_ECOG2) || (defined(HAVE_DECL_EM_ECOG2) && HAVE_DECL_EM_ECOG2)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_ECOG2) == (134), "EM_ECOG2 != 134");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_ECOG2 134
+#endif
+#if defined(EM_SCORE7) || (defined(HAVE_DECL_EM_SCORE7) && HAVE_DECL_EM_SCORE7)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_SCORE7) == (135), "EM_SCORE7 != 135");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_SCORE7 135
+#endif
+#if defined(EM_DSP24) || (defined(HAVE_DECL_EM_DSP24) && HAVE_DECL_EM_DSP24)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_DSP24) == (136), "EM_DSP24 != 136");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_DSP24 136
+#endif
+#if defined(EM_VIDEOCORE3) || (defined(HAVE_DECL_EM_VIDEOCORE3) && HAVE_DECL_EM_VIDEOCORE3)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_VIDEOCORE3) == (137), "EM_VIDEOCORE3 != 137");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_VIDEOCORE3 137
+#endif
+#if defined(EM_LATTICEMICO32) || (defined(HAVE_DECL_EM_LATTICEMICO32) && HAVE_DECL_EM_LATTICEMICO32)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_LATTICEMICO32) == (138), "EM_LATTICEMICO32 != 138");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_LATTICEMICO32 138
+#endif
+#if defined(EM_SE_C17) || (defined(HAVE_DECL_EM_SE_C17) && HAVE_DECL_EM_SE_C17)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_SE_C17) == (139), "EM_SE_C17 != 139");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_SE_C17 139
+#endif
+#if defined(EM_TI_C6000) || (defined(HAVE_DECL_EM_TI_C6000) && HAVE_DECL_EM_TI_C6000)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_TI_C6000) == (140), "EM_TI_C6000 != 140");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_TI_C6000 140
+#endif
+#if defined(EM_TI_C2000) || (defined(HAVE_DECL_EM_TI_C2000) && HAVE_DECL_EM_TI_C2000)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_TI_C2000) == (141), "EM_TI_C2000 != 141");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_TI_C2000 141
+#endif
+#if defined(EM_TI_C5500) || (defined(HAVE_DECL_EM_TI_C5500) && HAVE_DECL_EM_TI_C5500)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_TI_C5500) == (142), "EM_TI_C5500 != 142");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_TI_C5500 142
+#endif
+#if defined(EM_TI_ARP32) || (defined(HAVE_DECL_EM_TI_ARP32) && HAVE_DECL_EM_TI_ARP32)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_TI_ARP32) == (143), "EM_TI_ARP32 != 143");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_TI_ARP32 143
+#endif
+#if defined(EM_TI_PRU) || (defined(HAVE_DECL_EM_TI_PRU) && HAVE_DECL_EM_TI_PRU)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_TI_PRU) == (144), "EM_TI_PRU != 144");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_TI_PRU 144
+#endif
+#if defined(EM_MMDSP_PLUS) || (defined(HAVE_DECL_EM_MMDSP_PLUS) && HAVE_DECL_EM_MMDSP_PLUS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_MMDSP_PLUS) == (160), "EM_MMDSP_PLUS != 160");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_MMDSP_PLUS 160
+#endif
+#if defined(EM_CYPRESS_M8C) || (defined(HAVE_DECL_EM_CYPRESS_M8C) && HAVE_DECL_EM_CYPRESS_M8C)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_CYPRESS_M8C) == (161), "EM_CYPRESS_M8C != 161");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_CYPRESS_M8C 161
+#endif
+#if defined(EM_R32C) || (defined(HAVE_DECL_EM_R32C) && HAVE_DECL_EM_R32C)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_R32C) == (162), "EM_R32C != 162");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_R32C 162
+#endif
+#if defined(EM_TRIMEDIA) || (defined(HAVE_DECL_EM_TRIMEDIA) && HAVE_DECL_EM_TRIMEDIA)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_TRIMEDIA) == (163), "EM_TRIMEDIA != 163");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_TRIMEDIA 163
+#endif
+#if defined(EM_HEXAGON) || (defined(HAVE_DECL_EM_HEXAGON) && HAVE_DECL_EM_HEXAGON)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_HEXAGON) == (164), "EM_HEXAGON != 164");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_HEXAGON 164
+#endif
+#if defined(EM_8051) || (defined(HAVE_DECL_EM_8051) && HAVE_DECL_EM_8051)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_8051) == (165), "EM_8051 != 165");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_8051 165
+#endif
+#if defined(EM_STXP7X) || (defined(HAVE_DECL_EM_STXP7X) && HAVE_DECL_EM_STXP7X)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_STXP7X) == (166), "EM_STXP7X != 166");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_STXP7X 166
+#endif
+#if defined(EM_NDS32) || (defined(HAVE_DECL_EM_NDS32) && HAVE_DECL_EM_NDS32)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_NDS32) == (167), "EM_NDS32 != 167");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_NDS32 167
+#endif
+#if defined(EM_ECOG1X) || (defined(HAVE_DECL_EM_ECOG1X) && HAVE_DECL_EM_ECOG1X)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_ECOG1X) == (168), "EM_ECOG1X != 168");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_ECOG1X 168
+#endif
+#if defined(EM_MAXQ30) || (defined(HAVE_DECL_EM_MAXQ30) && HAVE_DECL_EM_MAXQ30)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_MAXQ30) == (169), "EM_MAXQ30 != 169");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_MAXQ30 169
+#endif
+#if defined(EM_XIMO16) || (defined(HAVE_DECL_EM_XIMO16) && HAVE_DECL_EM_XIMO16)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_XIMO16) == (170), "EM_XIMO16 != 170");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_XIMO16 170
+#endif
+#if defined(EM_MANIK) || (defined(HAVE_DECL_EM_MANIK) && HAVE_DECL_EM_MANIK)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_MANIK) == (171), "EM_MANIK != 171");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_MANIK 171
+#endif
+#if defined(EM_CRAYNV2) || (defined(HAVE_DECL_EM_CRAYNV2) && HAVE_DECL_EM_CRAYNV2)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_CRAYNV2) == (172), "EM_CRAYNV2 != 172");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_CRAYNV2 172
+#endif
+#if defined(EM_RX) || (defined(HAVE_DECL_EM_RX) && HAVE_DECL_EM_RX)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_RX) == (173), "EM_RX != 173");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_RX 173
+#endif
+#if defined(EM_METAG) || (defined(HAVE_DECL_EM_METAG) && HAVE_DECL_EM_METAG)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_METAG) == (174), "EM_METAG != 174");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_METAG 174
+#endif
+#if defined(EM_MCST_ELBRUS) || (defined(HAVE_DECL_EM_MCST_ELBRUS) && HAVE_DECL_EM_MCST_ELBRUS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_MCST_ELBRUS) == (175), "EM_MCST_ELBRUS != 175");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_MCST_ELBRUS 175
+#endif
+#if defined(EM_ECOG16) || (defined(HAVE_DECL_EM_ECOG16) && HAVE_DECL_EM_ECOG16)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_ECOG16) == (176), "EM_ECOG16 != 176");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_ECOG16 176
+#endif
+#if defined(EM_CR16) || (defined(HAVE_DECL_EM_CR16) && HAVE_DECL_EM_CR16)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_CR16) == (177), "EM_CR16 != 177");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_CR16 177
+#endif
+#if defined(EM_ETPU) || (defined(HAVE_DECL_EM_ETPU) && HAVE_DECL_EM_ETPU)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_ETPU) == (178), "EM_ETPU != 178");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_ETPU 178
+#endif
+#if defined(EM_SLE9X) || (defined(HAVE_DECL_EM_SLE9X) && HAVE_DECL_EM_SLE9X)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_SLE9X) == (179), "EM_SLE9X != 179");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_SLE9X 179
+#endif
+#if defined(EM_L10M) || (defined(HAVE_DECL_EM_L10M) && HAVE_DECL_EM_L10M)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_L10M) == (180), "EM_L10M != 180");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_L10M 180
+#endif
+#if defined(EM_K10M) || (defined(HAVE_DECL_EM_K10M) && HAVE_DECL_EM_K10M)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_K10M) == (181), "EM_K10M != 181");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_K10M 181
+#endif
+#if defined(EM_AARCH64) || (defined(HAVE_DECL_EM_AARCH64) && HAVE_DECL_EM_AARCH64)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_AARCH64) == (183), "EM_AARCH64 != 183");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_AARCH64 183
+#endif
+#if defined(EM_STM8) || (defined(HAVE_DECL_EM_STM8) && HAVE_DECL_EM_STM8)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_STM8) == (186), "EM_STM8 != 186");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_STM8 186
+#endif
+#if defined(EM_TILE64) || (defined(HAVE_DECL_EM_TILE64) && HAVE_DECL_EM_TILE64)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_TILE64) == (187), "EM_TILE64 != 187");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_TILE64 187
+#endif
+#if defined(EM_TILEPRO) || (defined(HAVE_DECL_EM_TILEPRO) && HAVE_DECL_EM_TILEPRO)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_TILEPRO) == (188), "EM_TILEPRO != 188");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_TILEPRO 188
+#endif
+#if defined(EM_MICROBLAZE) || (defined(HAVE_DECL_EM_MICROBLAZE) && HAVE_DECL_EM_MICROBLAZE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_MICROBLAZE) == (189), "EM_MICROBLAZE != 189");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_MICROBLAZE 189
+#endif
+#if defined(EM_CUDA) || (defined(HAVE_DECL_EM_CUDA) && HAVE_DECL_EM_CUDA)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_CUDA) == (190), "EM_CUDA != 190");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_CUDA 190
+#endif
+#if defined(EM_TILEGX) || (defined(HAVE_DECL_EM_TILEGX) && HAVE_DECL_EM_TILEGX)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_TILEGX) == (191), "EM_TILEGX != 191");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_TILEGX 191
+#endif
+#if defined(EM_CLOUDSHIELD) || (defined(HAVE_DECL_EM_CLOUDSHIELD) && HAVE_DECL_EM_CLOUDSHIELD)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_CLOUDSHIELD) == (192), "EM_CLOUDSHIELD != 192");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_CLOUDSHIELD 192
+#endif
+#if defined(EM_COREA_1ST) || (defined(HAVE_DECL_EM_COREA_1ST) && HAVE_DECL_EM_COREA_1ST)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_COREA_1ST) == (193), "EM_COREA_1ST != 193");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_COREA_1ST 193
+#endif
+#if defined(EM_COREA_2ND) || (defined(HAVE_DECL_EM_COREA_2ND) && HAVE_DECL_EM_COREA_2ND)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_COREA_2ND) == (194), "EM_COREA_2ND != 194");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_COREA_2ND 194
+#endif
+#if defined(EM_ARCV2) || (defined(HAVE_DECL_EM_ARCV2) && HAVE_DECL_EM_ARCV2)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_ARCV2) == (195), "EM_ARCV2 != 195");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_ARCV2 195
+#endif
+#if defined(EM_OPEN8) || (defined(HAVE_DECL_EM_OPEN8) && HAVE_DECL_EM_OPEN8)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_OPEN8) == (196), "EM_OPEN8 != 196");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_OPEN8 196
+#endif
+#if defined(EM_RL78) || (defined(HAVE_DECL_EM_RL78) && HAVE_DECL_EM_RL78)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_RL78) == (197), "EM_RL78 != 197");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_RL78 197
+#endif
+#if defined(EM_VIDEOCORE5) || (defined(HAVE_DECL_EM_VIDEOCORE5) && HAVE_DECL_EM_VIDEOCORE5)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_VIDEOCORE5) == (198), "EM_VIDEOCORE5 != 198");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_VIDEOCORE5 198
+#endif
+#if defined(EM_78KOR) || (defined(HAVE_DECL_EM_78KOR) && HAVE_DECL_EM_78KOR)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_78KOR) == (199), "EM_78KOR != 199");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_78KOR 199
+#endif
+#if defined(EM_56800EX) || (defined(HAVE_DECL_EM_56800EX) && HAVE_DECL_EM_56800EX)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_56800EX) == (200), "EM_56800EX != 200");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_56800EX 200
+#endif
+#if defined(EM_BA1) || (defined(HAVE_DECL_EM_BA1) && HAVE_DECL_EM_BA1)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_BA1) == (201), "EM_BA1 != 201");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_BA1 201
+#endif
+#if defined(EM_BA2) || (defined(HAVE_DECL_EM_BA2) && HAVE_DECL_EM_BA2)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_BA2) == (202), "EM_BA2 != 202");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_BA2 202
+#endif
+#if defined(EM_XCORE) || (defined(HAVE_DECL_EM_XCORE) && HAVE_DECL_EM_XCORE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_XCORE) == (203), "EM_XCORE != 203");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_XCORE 203
+#endif
+#if defined(EM_MCHP_PIC) || (defined(HAVE_DECL_EM_MCHP_PIC) && HAVE_DECL_EM_MCHP_PIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_MCHP_PIC) == (204), "EM_MCHP_PIC != 204");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_MCHP_PIC 204
+#endif
+#if defined(EM_KM32) || (defined(HAVE_DECL_EM_KM32) && HAVE_DECL_EM_KM32)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_KM32) == (210), "EM_KM32 != 210");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_KM32 210
+#endif
+#if defined(EM_KMX32) || (defined(HAVE_DECL_EM_KMX32) && HAVE_DECL_EM_KMX32)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_KMX32) == (211), "EM_KMX32 != 211");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_KMX32 211
+#endif
+#if defined(EM_KMX16) || (defined(HAVE_DECL_EM_KMX16) && HAVE_DECL_EM_KMX16)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_KMX16) == (212), "EM_KMX16 != 212");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_KMX16 212
+#endif
+#if defined(EM_KMX8) || (defined(HAVE_DECL_EM_KMX8) && HAVE_DECL_EM_KMX8)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_KMX8) == (213), "EM_KMX8 != 213");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_KMX8 213
+#endif
+#if defined(EM_KVARC) || (defined(HAVE_DECL_EM_KVARC) && HAVE_DECL_EM_KVARC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_KVARC) == (214), "EM_KVARC != 214");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_KVARC 214
+#endif
+#if defined(EM_CDP) || (defined(HAVE_DECL_EM_CDP) && HAVE_DECL_EM_CDP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_CDP) == (215), "EM_CDP != 215");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_CDP 215
+#endif
+#if defined(EM_COGE) || (defined(HAVE_DECL_EM_COGE) && HAVE_DECL_EM_COGE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_COGE) == (216), "EM_COGE != 216");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_COGE 216
+#endif
+#if defined(EM_COOL) || (defined(HAVE_DECL_EM_COOL) && HAVE_DECL_EM_COOL)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_COOL) == (217), "EM_COOL != 217");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_COOL 217
+#endif
+#if defined(EM_NORC) || (defined(HAVE_DECL_EM_NORC) && HAVE_DECL_EM_NORC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_NORC) == (218), "EM_NORC != 218");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_NORC 218
+#endif
+#if defined(EM_CSR_KALIMBA) || (defined(HAVE_DECL_EM_CSR_KALIMBA) && HAVE_DECL_EM_CSR_KALIMBA)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_CSR_KALIMBA) == (219), "EM_CSR_KALIMBA != 219");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_CSR_KALIMBA 219
+#endif
+#if defined(EM_Z80) || (defined(HAVE_DECL_EM_Z80) && HAVE_DECL_EM_Z80)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_Z80) == (220), "EM_Z80 != 220");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_Z80 220
+#endif
+#if defined(EM_VISIUM) || (defined(HAVE_DECL_EM_VISIUM) && HAVE_DECL_EM_VISIUM)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_VISIUM) == (221), "EM_VISIUM != 221");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_VISIUM 221
+#endif
+#if defined(EM_FT32) || (defined(HAVE_DECL_EM_FT32) && HAVE_DECL_EM_FT32)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_FT32) == (222), "EM_FT32 != 222");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_FT32 222
+#endif
+#if defined(EM_MOXIE) || (defined(HAVE_DECL_EM_MOXIE) && HAVE_DECL_EM_MOXIE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_MOXIE) == (223), "EM_MOXIE != 223");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_MOXIE 223
+#endif
+#if defined(EM_AMDGPU) || (defined(HAVE_DECL_EM_AMDGPU) && HAVE_DECL_EM_AMDGPU)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_AMDGPU) == (224), "EM_AMDGPU != 224");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_AMDGPU 224
+#endif
+#if defined(EM_RISCV) || (defined(HAVE_DECL_EM_RISCV) && HAVE_DECL_EM_RISCV)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_RISCV) == (243), "EM_RISCV != 243");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_RISCV 243
+#endif
+#if defined(EM_BPF) || (defined(HAVE_DECL_EM_BPF) && HAVE_DECL_EM_BPF)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_BPF) == (247), "EM_BPF != 247");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_BPF 247
+#endif
+#if defined(EM_CSKY) || (defined(HAVE_DECL_EM_CSKY) && HAVE_DECL_EM_CSKY)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_CSKY) == (252), "EM_CSKY != 252");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_CSKY 252
+#endif
+#if defined(EM_AVR32) || (defined(HAVE_DECL_EM_AVR32) && HAVE_DECL_EM_AVR32)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_AVR32) == (0x18ad), "EM_AVR32 != 0x18ad");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_AVR32 0x18ad
+#endif
+#if defined(EM_FRV) || (defined(HAVE_DECL_EM_FRV) && HAVE_DECL_EM_FRV)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_FRV) == (0x5441), "EM_FRV != 0x5441");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_FRV 0x5441
+#endif
+#if defined(EM_OR32) || (defined(HAVE_DECL_EM_OR32) && HAVE_DECL_EM_OR32)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_OR32) == (0x8472), "EM_OR32 != 0x8472");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_OR32 0x8472
+#endif
+#if defined(EM_ALPHA) || (defined(HAVE_DECL_EM_ALPHA) && HAVE_DECL_EM_ALPHA)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_ALPHA) == (0x9026), "EM_ALPHA != 0x9026");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_ALPHA 0x9026
+#endif
+#if defined(EM_CYGNUS_V850) || (defined(HAVE_DECL_EM_CYGNUS_V850) && HAVE_DECL_EM_CYGNUS_V850)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_CYGNUS_V850) == (0x9080), "EM_CYGNUS_V850 != 0x9080");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_CYGNUS_V850 0x9080
+#endif
+#if defined(EM_CYGNUS_M32R) || (defined(HAVE_DECL_EM_CYGNUS_M32R) && HAVE_DECL_EM_CYGNUS_M32R)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_CYGNUS_M32R) == (0x9041), "EM_CYGNUS_M32R != 0x9041");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_CYGNUS_M32R 0x9041
+#endif
+#if defined(EM_S390_OLD) || (defined(HAVE_DECL_EM_S390_OLD) && HAVE_DECL_EM_S390_OLD)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_S390_OLD) == (0xa390), "EM_S390_OLD != 0xa390");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_S390_OLD 0xa390
+#endif
+#if defined(EM_XTENSA_OLD) || (defined(HAVE_DECL_EM_XTENSA_OLD) && HAVE_DECL_EM_XTENSA_OLD)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_XTENSA_OLD) == (0xabc7), "EM_XTENSA_OLD != 0xabc7");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_XTENSA_OLD 0xabc7
+#endif
+#if defined(EM_MICROBLAZE_OLD) || (defined(HAVE_DECL_EM_MICROBLAZE_OLD) && HAVE_DECL_EM_MICROBLAZE_OLD)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_MICROBLAZE_OLD) == (0xbaab), "EM_MICROBLAZE_OLD != 0xbaab");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_MICROBLAZE_OLD 0xbaab
+#endif
+#if defined(EM_CYGNUS_MN10300) || (defined(HAVE_DECL_EM_CYGNUS_MN10300) && HAVE_DECL_EM_CYGNUS_MN10300)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EM_CYGNUS_MN10300) == (0xbeef), "EM_CYGNUS_MN10300 != 0xbeef");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EM_CYGNUS_MN10300 0xbeef
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+extern const struct xlat elf_em[];
+
+# else
+
+static const struct xlat_data elf_em_xdata[] = {
+
+
+ XLAT(EM_NONE),
+ #define XLAT_VAL_0 ((unsigned) (EM_NONE))
+ #define XLAT_STR_0 STRINGIFY(EM_NONE)
+ XLAT(EM_M32),
+ #define XLAT_VAL_1 ((unsigned) (EM_M32))
+ #define XLAT_STR_1 STRINGIFY(EM_M32)
+ XLAT(EM_SPARC),
+ #define XLAT_VAL_2 ((unsigned) (EM_SPARC))
+ #define XLAT_STR_2 STRINGIFY(EM_SPARC)
+ XLAT(EM_386),
+ #define XLAT_VAL_3 ((unsigned) (EM_386))
+ #define XLAT_STR_3 STRINGIFY(EM_386)
+ XLAT(EM_68K),
+ #define XLAT_VAL_4 ((unsigned) (EM_68K))
+ #define XLAT_STR_4 STRINGIFY(EM_68K)
+ XLAT(EM_88K),
+ #define XLAT_VAL_5 ((unsigned) (EM_88K))
+ #define XLAT_STR_5 STRINGIFY(EM_88K)
+ XLAT(EM_486),
+ #define XLAT_VAL_6 ((unsigned) (EM_486))
+ #define XLAT_STR_6 STRINGIFY(EM_486)
+
+ XLAT(EM_860),
+ #define XLAT_VAL_7 ((unsigned) (EM_860))
+ #define XLAT_STR_7 STRINGIFY(EM_860)
+ XLAT(EM_MIPS),
+ #define XLAT_VAL_8 ((unsigned) (EM_MIPS))
+ #define XLAT_STR_8 STRINGIFY(EM_MIPS)
+ XLAT(EM_S370),
+ #define XLAT_VAL_9 ((unsigned) (EM_S370))
+ #define XLAT_STR_9 STRINGIFY(EM_S370)
+ XLAT(EM_MIPS_RS3_LE),
+ #define XLAT_VAL_10 ((unsigned) (EM_MIPS_RS3_LE))
+ #define XLAT_STR_10 STRINGIFY(EM_MIPS_RS3_LE)
+
+
+ XLAT(EM_PARISC),
+ #define XLAT_VAL_11 ((unsigned) (EM_PARISC))
+ #define XLAT_STR_11 STRINGIFY(EM_PARISC)
+
+ XLAT(EM_VPP500),
+ #define XLAT_VAL_12 ((unsigned) (EM_VPP500))
+ #define XLAT_STR_12 STRINGIFY(EM_VPP500)
+ XLAT(EM_SPARC32PLUS),
+ #define XLAT_VAL_13 ((unsigned) (EM_SPARC32PLUS))
+ #define XLAT_STR_13 STRINGIFY(EM_SPARC32PLUS)
+ XLAT(EM_960),
+ #define XLAT_VAL_14 ((unsigned) (EM_960))
+ #define XLAT_STR_14 STRINGIFY(EM_960)
+ XLAT(EM_PPC),
+ #define XLAT_VAL_15 ((unsigned) (EM_PPC))
+ #define XLAT_STR_15 STRINGIFY(EM_PPC)
+ XLAT(EM_PPC64),
+ #define XLAT_VAL_16 ((unsigned) (EM_PPC64))
+ #define XLAT_STR_16 STRINGIFY(EM_PPC64)
+ XLAT(EM_S390),
+ #define XLAT_VAL_17 ((unsigned) (EM_S390))
+ #define XLAT_STR_17 STRINGIFY(EM_S390)
+ XLAT(EM_SPU),
+ #define XLAT_VAL_18 ((unsigned) (EM_SPU))
+ #define XLAT_STR_18 STRINGIFY(EM_SPU)
+
+ XLAT(EM_V800),
+ #define XLAT_VAL_19 ((unsigned) (EM_V800))
+ #define XLAT_STR_19 STRINGIFY(EM_V800)
+ XLAT(EM_FR20),
+ #define XLAT_VAL_20 ((unsigned) (EM_FR20))
+ #define XLAT_STR_20 STRINGIFY(EM_FR20)
+ XLAT(EM_RH32),
+ #define XLAT_VAL_21 ((unsigned) (EM_RH32))
+ #define XLAT_STR_21 STRINGIFY(EM_RH32)
+ XLAT(EM_RCE),
+ #define XLAT_VAL_22 ((unsigned) (EM_RCE))
+ #define XLAT_STR_22 STRINGIFY(EM_RCE)
+ XLAT(EM_ARM),
+ #define XLAT_VAL_23 ((unsigned) (EM_ARM))
+ #define XLAT_STR_23 STRINGIFY(EM_ARM)
+
+ XLAT(EM_SH),
+ #define XLAT_VAL_24 ((unsigned) (EM_SH))
+ #define XLAT_STR_24 STRINGIFY(EM_SH)
+ XLAT(EM_SPARCV9),
+ #define XLAT_VAL_25 ((unsigned) (EM_SPARCV9))
+ #define XLAT_STR_25 STRINGIFY(EM_SPARCV9)
+ XLAT(EM_TRICORE),
+ #define XLAT_VAL_26 ((unsigned) (EM_TRICORE))
+ #define XLAT_STR_26 STRINGIFY(EM_TRICORE)
+ XLAT(EM_ARC),
+ #define XLAT_VAL_27 ((unsigned) (EM_ARC))
+ #define XLAT_STR_27 STRINGIFY(EM_ARC)
+ XLAT(EM_H8_300),
+ #define XLAT_VAL_28 ((unsigned) (EM_H8_300))
+ #define XLAT_STR_28 STRINGIFY(EM_H8_300)
+ XLAT(EM_H8_300H),
+ #define XLAT_VAL_29 ((unsigned) (EM_H8_300H))
+ #define XLAT_STR_29 STRINGIFY(EM_H8_300H)
+ XLAT(EM_H8S),
+ #define XLAT_VAL_30 ((unsigned) (EM_H8S))
+ #define XLAT_STR_30 STRINGIFY(EM_H8S)
+ XLAT(EM_H8_500),
+ #define XLAT_VAL_31 ((unsigned) (EM_H8_500))
+ #define XLAT_STR_31 STRINGIFY(EM_H8_500)
+ XLAT(EM_IA_64),
+ #define XLAT_VAL_32 ((unsigned) (EM_IA_64))
+ #define XLAT_STR_32 STRINGIFY(EM_IA_64)
+ XLAT(EM_MIPS_X),
+ #define XLAT_VAL_33 ((unsigned) (EM_MIPS_X))
+ #define XLAT_STR_33 STRINGIFY(EM_MIPS_X)
+ XLAT(EM_COLDFIRE),
+ #define XLAT_VAL_34 ((unsigned) (EM_COLDFIRE))
+ #define XLAT_STR_34 STRINGIFY(EM_COLDFIRE)
+ XLAT(EM_68HC12),
+ #define XLAT_VAL_35 ((unsigned) (EM_68HC12))
+ #define XLAT_STR_35 STRINGIFY(EM_68HC12)
+ XLAT(EM_MMA),
+ #define XLAT_VAL_36 ((unsigned) (EM_MMA))
+ #define XLAT_STR_36 STRINGIFY(EM_MMA)
+ XLAT(EM_PCP),
+ #define XLAT_VAL_37 ((unsigned) (EM_PCP))
+ #define XLAT_STR_37 STRINGIFY(EM_PCP)
+ XLAT(EM_NCPU),
+ #define XLAT_VAL_38 ((unsigned) (EM_NCPU))
+ #define XLAT_STR_38 STRINGIFY(EM_NCPU)
+ XLAT(EM_NDR1),
+ #define XLAT_VAL_39 ((unsigned) (EM_NDR1))
+ #define XLAT_STR_39 STRINGIFY(EM_NDR1)
+ XLAT(EM_STARCORE),
+ #define XLAT_VAL_40 ((unsigned) (EM_STARCORE))
+ #define XLAT_STR_40 STRINGIFY(EM_STARCORE)
+ XLAT(EM_ME16),
+ #define XLAT_VAL_41 ((unsigned) (EM_ME16))
+ #define XLAT_STR_41 STRINGIFY(EM_ME16)
+ XLAT(EM_ST100),
+ #define XLAT_VAL_42 ((unsigned) (EM_ST100))
+ #define XLAT_STR_42 STRINGIFY(EM_ST100)
+ XLAT(EM_TINYJ),
+ #define XLAT_VAL_43 ((unsigned) (EM_TINYJ))
+ #define XLAT_STR_43 STRINGIFY(EM_TINYJ)
+ XLAT(EM_X86_64),
+ #define XLAT_VAL_44 ((unsigned) (EM_X86_64))
+ #define XLAT_STR_44 STRINGIFY(EM_X86_64)
+ XLAT(EM_PDSP),
+ #define XLAT_VAL_45 ((unsigned) (EM_PDSP))
+ #define XLAT_STR_45 STRINGIFY(EM_PDSP)
+ XLAT(EM_PDP10),
+ #define XLAT_VAL_46 ((unsigned) (EM_PDP10))
+ #define XLAT_STR_46 STRINGIFY(EM_PDP10)
+ XLAT(EM_PDP11),
+ #define XLAT_VAL_47 ((unsigned) (EM_PDP11))
+ #define XLAT_STR_47 STRINGIFY(EM_PDP11)
+ XLAT(EM_FX66),
+ #define XLAT_VAL_48 ((unsigned) (EM_FX66))
+ #define XLAT_STR_48 STRINGIFY(EM_FX66)
+ XLAT(EM_ST9PLUS),
+ #define XLAT_VAL_49 ((unsigned) (EM_ST9PLUS))
+ #define XLAT_STR_49 STRINGIFY(EM_ST9PLUS)
+ XLAT(EM_ST7),
+ #define XLAT_VAL_50 ((unsigned) (EM_ST7))
+ #define XLAT_STR_50 STRINGIFY(EM_ST7)
+ XLAT(EM_68HC16),
+ #define XLAT_VAL_51 ((unsigned) (EM_68HC16))
+ #define XLAT_STR_51 STRINGIFY(EM_68HC16)
+ XLAT(EM_68HC11),
+ #define XLAT_VAL_52 ((unsigned) (EM_68HC11))
+ #define XLAT_STR_52 STRINGIFY(EM_68HC11)
+ XLAT(EM_68HC08),
+ #define XLAT_VAL_53 ((unsigned) (EM_68HC08))
+ #define XLAT_STR_53 STRINGIFY(EM_68HC08)
+ XLAT(EM_68HC05),
+ #define XLAT_VAL_54 ((unsigned) (EM_68HC05))
+ #define XLAT_STR_54 STRINGIFY(EM_68HC05)
+ XLAT(EM_SVX),
+ #define XLAT_VAL_55 ((unsigned) (EM_SVX))
+ #define XLAT_STR_55 STRINGIFY(EM_SVX)
+ XLAT(EM_ST19),
+ #define XLAT_VAL_56 ((unsigned) (EM_ST19))
+ #define XLAT_STR_56 STRINGIFY(EM_ST19)
+ XLAT(EM_VAX),
+ #define XLAT_VAL_57 ((unsigned) (EM_VAX))
+ #define XLAT_STR_57 STRINGIFY(EM_VAX)
+ XLAT(EM_CRIS),
+ #define XLAT_VAL_58 ((unsigned) (EM_CRIS))
+ #define XLAT_STR_58 STRINGIFY(EM_CRIS)
+ XLAT(EM_JAVELIN),
+ #define XLAT_VAL_59 ((unsigned) (EM_JAVELIN))
+ #define XLAT_STR_59 STRINGIFY(EM_JAVELIN)
+ XLAT(EM_FIREPATH),
+ #define XLAT_VAL_60 ((unsigned) (EM_FIREPATH))
+ #define XLAT_STR_60 STRINGIFY(EM_FIREPATH)
+ XLAT(EM_ZSP),
+ #define XLAT_VAL_61 ((unsigned) (EM_ZSP))
+ #define XLAT_STR_61 STRINGIFY(EM_ZSP)
+ XLAT(EM_MMIX),
+ #define XLAT_VAL_62 ((unsigned) (EM_MMIX))
+ #define XLAT_STR_62 STRINGIFY(EM_MMIX)
+ XLAT(EM_HUANY),
+ #define XLAT_VAL_63 ((unsigned) (EM_HUANY))
+ #define XLAT_STR_63 STRINGIFY(EM_HUANY)
+ XLAT(EM_PRISM),
+ #define XLAT_VAL_64 ((unsigned) (EM_PRISM))
+ #define XLAT_STR_64 STRINGIFY(EM_PRISM)
+ XLAT(EM_AVR),
+ #define XLAT_VAL_65 ((unsigned) (EM_AVR))
+ #define XLAT_STR_65 STRINGIFY(EM_AVR)
+ XLAT(EM_FR30),
+ #define XLAT_VAL_66 ((unsigned) (EM_FR30))
+ #define XLAT_STR_66 STRINGIFY(EM_FR30)
+ XLAT(EM_D10V),
+ #define XLAT_VAL_67 ((unsigned) (EM_D10V))
+ #define XLAT_STR_67 STRINGIFY(EM_D10V)
+ XLAT(EM_D30V),
+ #define XLAT_VAL_68 ((unsigned) (EM_D30V))
+ #define XLAT_STR_68 STRINGIFY(EM_D30V)
+ XLAT(EM_V850),
+ #define XLAT_VAL_69 ((unsigned) (EM_V850))
+ #define XLAT_STR_69 STRINGIFY(EM_V850)
+ XLAT(EM_M32R),
+ #define XLAT_VAL_70 ((unsigned) (EM_M32R))
+ #define XLAT_STR_70 STRINGIFY(EM_M32R)
+ XLAT(EM_MN10300),
+ #define XLAT_VAL_71 ((unsigned) (EM_MN10300))
+ #define XLAT_STR_71 STRINGIFY(EM_MN10300)
+ XLAT(EM_MN10200),
+ #define XLAT_VAL_72 ((unsigned) (EM_MN10200))
+ #define XLAT_STR_72 STRINGIFY(EM_MN10200)
+ XLAT(EM_PJ),
+ #define XLAT_VAL_73 ((unsigned) (EM_PJ))
+ #define XLAT_STR_73 STRINGIFY(EM_PJ)
+ XLAT(EM_OPENRISC),
+ #define XLAT_VAL_74 ((unsigned) (EM_OPENRISC))
+ #define XLAT_STR_74 STRINGIFY(EM_OPENRISC)
+ XLAT(EM_ARCOMPACT),
+ #define XLAT_VAL_75 ((unsigned) (EM_ARCOMPACT))
+ #define XLAT_STR_75 STRINGIFY(EM_ARCOMPACT)
+ XLAT(EM_XTENSA),
+ #define XLAT_VAL_76 ((unsigned) (EM_XTENSA))
+ #define XLAT_STR_76 STRINGIFY(EM_XTENSA)
+ XLAT(EM_VIDEOCORE),
+ #define XLAT_VAL_77 ((unsigned) (EM_VIDEOCORE))
+ #define XLAT_STR_77 STRINGIFY(EM_VIDEOCORE)
+ XLAT(EM_TMM_GPP),
+ #define XLAT_VAL_78 ((unsigned) (EM_TMM_GPP))
+ #define XLAT_STR_78 STRINGIFY(EM_TMM_GPP)
+ XLAT(EM_NS32K),
+ #define XLAT_VAL_79 ((unsigned) (EM_NS32K))
+ #define XLAT_STR_79 STRINGIFY(EM_NS32K)
+ XLAT(EM_TPC),
+ #define XLAT_VAL_80 ((unsigned) (EM_TPC))
+ #define XLAT_STR_80 STRINGIFY(EM_TPC)
+ XLAT(EM_SNP1K),
+ #define XLAT_VAL_81 ((unsigned) (EM_SNP1K))
+ #define XLAT_STR_81 STRINGIFY(EM_SNP1K)
+ XLAT(EM_ST200),
+ #define XLAT_VAL_82 ((unsigned) (EM_ST200))
+ #define XLAT_STR_82 STRINGIFY(EM_ST200)
+ XLAT(EM_IP2K),
+ #define XLAT_VAL_83 ((unsigned) (EM_IP2K))
+ #define XLAT_STR_83 STRINGIFY(EM_IP2K)
+ XLAT(EM_MAX),
+ #define XLAT_VAL_84 ((unsigned) (EM_MAX))
+ #define XLAT_STR_84 STRINGIFY(EM_MAX)
+ XLAT(EM_CR),
+ #define XLAT_VAL_85 ((unsigned) (EM_CR))
+ #define XLAT_STR_85 STRINGIFY(EM_CR)
+ XLAT(EM_F2MC16),
+ #define XLAT_VAL_86 ((unsigned) (EM_F2MC16))
+ #define XLAT_STR_86 STRINGIFY(EM_F2MC16)
+ XLAT(EM_MSP430),
+ #define XLAT_VAL_87 ((unsigned) (EM_MSP430))
+ #define XLAT_STR_87 STRINGIFY(EM_MSP430)
+ XLAT(EM_BLACKFIN),
+ #define XLAT_VAL_88 ((unsigned) (EM_BLACKFIN))
+ #define XLAT_STR_88 STRINGIFY(EM_BLACKFIN)
+ XLAT(EM_SE_C33),
+ #define XLAT_VAL_89 ((unsigned) (EM_SE_C33))
+ #define XLAT_STR_89 STRINGIFY(EM_SE_C33)
+ XLAT(EM_SEP),
+ #define XLAT_VAL_90 ((unsigned) (EM_SEP))
+ #define XLAT_STR_90 STRINGIFY(EM_SEP)
+ XLAT(EM_ARCA),
+ #define XLAT_VAL_91 ((unsigned) (EM_ARCA))
+ #define XLAT_STR_91 STRINGIFY(EM_ARCA)
+ XLAT(EM_UNICORE),
+ #define XLAT_VAL_92 ((unsigned) (EM_UNICORE))
+ #define XLAT_STR_92 STRINGIFY(EM_UNICORE)
+ XLAT(EM_EXCESS),
+ #define XLAT_VAL_93 ((unsigned) (EM_EXCESS))
+ #define XLAT_STR_93 STRINGIFY(EM_EXCESS)
+ XLAT(EM_DXP),
+ #define XLAT_VAL_94 ((unsigned) (EM_DXP))
+ #define XLAT_STR_94 STRINGIFY(EM_DXP)
+ XLAT(EM_ALTERA_NIOS2),
+ #define XLAT_VAL_95 ((unsigned) (EM_ALTERA_NIOS2))
+ #define XLAT_STR_95 STRINGIFY(EM_ALTERA_NIOS2)
+ XLAT(EM_CRX),
+ #define XLAT_VAL_96 ((unsigned) (EM_CRX))
+ #define XLAT_STR_96 STRINGIFY(EM_CRX)
+ XLAT(EM_XGATE),
+ #define XLAT_VAL_97 ((unsigned) (EM_XGATE))
+ #define XLAT_STR_97 STRINGIFY(EM_XGATE)
+ XLAT(EM_C166),
+ #define XLAT_VAL_98 ((unsigned) (EM_C166))
+ #define XLAT_STR_98 STRINGIFY(EM_C166)
+ XLAT(EM_M16C),
+ #define XLAT_VAL_99 ((unsigned) (EM_M16C))
+ #define XLAT_STR_99 STRINGIFY(EM_M16C)
+ XLAT(EM_DSPIC30F),
+ #define XLAT_VAL_100 ((unsigned) (EM_DSPIC30F))
+ #define XLAT_STR_100 STRINGIFY(EM_DSPIC30F)
+ XLAT(EM_CE),
+ #define XLAT_VAL_101 ((unsigned) (EM_CE))
+ #define XLAT_STR_101 STRINGIFY(EM_CE)
+ XLAT(EM_M32C),
+ #define XLAT_VAL_102 ((unsigned) (EM_M32C))
+ #define XLAT_STR_102 STRINGIFY(EM_M32C)
+
+ XLAT(EM_TSK3000),
+ #define XLAT_VAL_103 ((unsigned) (EM_TSK3000))
+ #define XLAT_STR_103 STRINGIFY(EM_TSK3000)
+ XLAT(EM_RS08),
+ #define XLAT_VAL_104 ((unsigned) (EM_RS08))
+ #define XLAT_STR_104 STRINGIFY(EM_RS08)
+ XLAT(EM_SHARC),
+ #define XLAT_VAL_105 ((unsigned) (EM_SHARC))
+ #define XLAT_STR_105 STRINGIFY(EM_SHARC)
+ XLAT(EM_ECOG2),
+ #define XLAT_VAL_106 ((unsigned) (EM_ECOG2))
+ #define XLAT_STR_106 STRINGIFY(EM_ECOG2)
+ XLAT(EM_SCORE7),
+ #define XLAT_VAL_107 ((unsigned) (EM_SCORE7))
+ #define XLAT_STR_107 STRINGIFY(EM_SCORE7)
+ XLAT(EM_DSP24),
+ #define XLAT_VAL_108 ((unsigned) (EM_DSP24))
+ #define XLAT_STR_108 STRINGIFY(EM_DSP24)
+ XLAT(EM_VIDEOCORE3),
+ #define XLAT_VAL_109 ((unsigned) (EM_VIDEOCORE3))
+ #define XLAT_STR_109 STRINGIFY(EM_VIDEOCORE3)
+ XLAT(EM_LATTICEMICO32),
+ #define XLAT_VAL_110 ((unsigned) (EM_LATTICEMICO32))
+ #define XLAT_STR_110 STRINGIFY(EM_LATTICEMICO32)
+ XLAT(EM_SE_C17),
+ #define XLAT_VAL_111 ((unsigned) (EM_SE_C17))
+ #define XLAT_STR_111 STRINGIFY(EM_SE_C17)
+ XLAT(EM_TI_C6000),
+ #define XLAT_VAL_112 ((unsigned) (EM_TI_C6000))
+ #define XLAT_STR_112 STRINGIFY(EM_TI_C6000)
+ XLAT(EM_TI_C2000),
+ #define XLAT_VAL_113 ((unsigned) (EM_TI_C2000))
+ #define XLAT_STR_113 STRINGIFY(EM_TI_C2000)
+ XLAT(EM_TI_C5500),
+ #define XLAT_VAL_114 ((unsigned) (EM_TI_C5500))
+ #define XLAT_STR_114 STRINGIFY(EM_TI_C5500)
+ XLAT(EM_TI_ARP32),
+ #define XLAT_VAL_115 ((unsigned) (EM_TI_ARP32))
+ #define XLAT_STR_115 STRINGIFY(EM_TI_ARP32)
+ XLAT(EM_TI_PRU),
+ #define XLAT_VAL_116 ((unsigned) (EM_TI_PRU))
+ #define XLAT_STR_116 STRINGIFY(EM_TI_PRU)
+
+ XLAT(EM_MMDSP_PLUS),
+ #define XLAT_VAL_117 ((unsigned) (EM_MMDSP_PLUS))
+ #define XLAT_STR_117 STRINGIFY(EM_MMDSP_PLUS)
+ XLAT(EM_CYPRESS_M8C),
+ #define XLAT_VAL_118 ((unsigned) (EM_CYPRESS_M8C))
+ #define XLAT_STR_118 STRINGIFY(EM_CYPRESS_M8C)
+ XLAT(EM_R32C),
+ #define XLAT_VAL_119 ((unsigned) (EM_R32C))
+ #define XLAT_STR_119 STRINGIFY(EM_R32C)
+ XLAT(EM_TRIMEDIA),
+ #define XLAT_VAL_120 ((unsigned) (EM_TRIMEDIA))
+ #define XLAT_STR_120 STRINGIFY(EM_TRIMEDIA)
+ XLAT(EM_HEXAGON),
+ #define XLAT_VAL_121 ((unsigned) (EM_HEXAGON))
+ #define XLAT_STR_121 STRINGIFY(EM_HEXAGON)
+ XLAT(EM_8051),
+ #define XLAT_VAL_122 ((unsigned) (EM_8051))
+ #define XLAT_STR_122 STRINGIFY(EM_8051)
+ XLAT(EM_STXP7X),
+ #define XLAT_VAL_123 ((unsigned) (EM_STXP7X))
+ #define XLAT_STR_123 STRINGIFY(EM_STXP7X)
+ XLAT(EM_NDS32),
+ #define XLAT_VAL_124 ((unsigned) (EM_NDS32))
+ #define XLAT_STR_124 STRINGIFY(EM_NDS32)
+ XLAT(EM_ECOG1X),
+ #define XLAT_VAL_125 ((unsigned) (EM_ECOG1X))
+ #define XLAT_STR_125 STRINGIFY(EM_ECOG1X)
+ XLAT(EM_MAXQ30),
+ #define XLAT_VAL_126 ((unsigned) (EM_MAXQ30))
+ #define XLAT_STR_126 STRINGIFY(EM_MAXQ30)
+ XLAT(EM_XIMO16),
+ #define XLAT_VAL_127 ((unsigned) (EM_XIMO16))
+ #define XLAT_STR_127 STRINGIFY(EM_XIMO16)
+ XLAT(EM_MANIK),
+ #define XLAT_VAL_128 ((unsigned) (EM_MANIK))
+ #define XLAT_STR_128 STRINGIFY(EM_MANIK)
+ XLAT(EM_CRAYNV2),
+ #define XLAT_VAL_129 ((unsigned) (EM_CRAYNV2))
+ #define XLAT_STR_129 STRINGIFY(EM_CRAYNV2)
+ XLAT(EM_RX),
+ #define XLAT_VAL_130 ((unsigned) (EM_RX))
+ #define XLAT_STR_130 STRINGIFY(EM_RX)
+ XLAT(EM_METAG),
+ #define XLAT_VAL_131 ((unsigned) (EM_METAG))
+ #define XLAT_STR_131 STRINGIFY(EM_METAG)
+ XLAT(EM_MCST_ELBRUS),
+ #define XLAT_VAL_132 ((unsigned) (EM_MCST_ELBRUS))
+ #define XLAT_STR_132 STRINGIFY(EM_MCST_ELBRUS)
+ XLAT(EM_ECOG16),
+ #define XLAT_VAL_133 ((unsigned) (EM_ECOG16))
+ #define XLAT_STR_133 STRINGIFY(EM_ECOG16)
+ XLAT(EM_CR16),
+ #define XLAT_VAL_134 ((unsigned) (EM_CR16))
+ #define XLAT_STR_134 STRINGIFY(EM_CR16)
+ XLAT(EM_ETPU),
+ #define XLAT_VAL_135 ((unsigned) (EM_ETPU))
+ #define XLAT_STR_135 STRINGIFY(EM_ETPU)
+ XLAT(EM_SLE9X),
+ #define XLAT_VAL_136 ((unsigned) (EM_SLE9X))
+ #define XLAT_STR_136 STRINGIFY(EM_SLE9X)
+ XLAT(EM_L10M),
+ #define XLAT_VAL_137 ((unsigned) (EM_L10M))
+ #define XLAT_STR_137 STRINGIFY(EM_L10M)
+ XLAT(EM_K10M),
+ #define XLAT_VAL_138 ((unsigned) (EM_K10M))
+ #define XLAT_STR_138 STRINGIFY(EM_K10M)
+
+ XLAT(EM_AARCH64),
+ #define XLAT_VAL_139 ((unsigned) (EM_AARCH64))
+ #define XLAT_STR_139 STRINGIFY(EM_AARCH64)
+
+
+ XLAT(EM_STM8),
+ #define XLAT_VAL_140 ((unsigned) (EM_STM8))
+ #define XLAT_STR_140 STRINGIFY(EM_STM8)
+ XLAT(EM_TILE64),
+ #define XLAT_VAL_141 ((unsigned) (EM_TILE64))
+ #define XLAT_STR_141 STRINGIFY(EM_TILE64)
+ XLAT(EM_TILEPRO),
+ #define XLAT_VAL_142 ((unsigned) (EM_TILEPRO))
+ #define XLAT_STR_142 STRINGIFY(EM_TILEPRO)
+ XLAT(EM_MICROBLAZE),
+ #define XLAT_VAL_143 ((unsigned) (EM_MICROBLAZE))
+ #define XLAT_STR_143 STRINGIFY(EM_MICROBLAZE)
+ XLAT(EM_CUDA),
+ #define XLAT_VAL_144 ((unsigned) (EM_CUDA))
+ #define XLAT_STR_144 STRINGIFY(EM_CUDA)
+ XLAT(EM_TILEGX),
+ #define XLAT_VAL_145 ((unsigned) (EM_TILEGX))
+ #define XLAT_STR_145 STRINGIFY(EM_TILEGX)
+ XLAT(EM_CLOUDSHIELD),
+ #define XLAT_VAL_146 ((unsigned) (EM_CLOUDSHIELD))
+ #define XLAT_STR_146 STRINGIFY(EM_CLOUDSHIELD)
+ XLAT(EM_COREA_1ST),
+ #define XLAT_VAL_147 ((unsigned) (EM_COREA_1ST))
+ #define XLAT_STR_147 STRINGIFY(EM_COREA_1ST)
+ XLAT(EM_COREA_2ND),
+ #define XLAT_VAL_148 ((unsigned) (EM_COREA_2ND))
+ #define XLAT_STR_148 STRINGIFY(EM_COREA_2ND)
+ XLAT(EM_ARCV2),
+ #define XLAT_VAL_149 ((unsigned) (EM_ARCV2))
+ #define XLAT_STR_149 STRINGIFY(EM_ARCV2)
+ XLAT(EM_OPEN8),
+ #define XLAT_VAL_150 ((unsigned) (EM_OPEN8))
+ #define XLAT_STR_150 STRINGIFY(EM_OPEN8)
+ XLAT(EM_RL78),
+ #define XLAT_VAL_151 ((unsigned) (EM_RL78))
+ #define XLAT_STR_151 STRINGIFY(EM_RL78)
+ XLAT(EM_VIDEOCORE5),
+ #define XLAT_VAL_152 ((unsigned) (EM_VIDEOCORE5))
+ #define XLAT_STR_152 STRINGIFY(EM_VIDEOCORE5)
+ XLAT(EM_78KOR),
+ #define XLAT_VAL_153 ((unsigned) (EM_78KOR))
+ #define XLAT_STR_153 STRINGIFY(EM_78KOR)
+ XLAT(EM_56800EX),
+ #define XLAT_VAL_154 ((unsigned) (EM_56800EX))
+ #define XLAT_STR_154 STRINGIFY(EM_56800EX)
+ XLAT(EM_BA1),
+ #define XLAT_VAL_155 ((unsigned) (EM_BA1))
+ #define XLAT_STR_155 STRINGIFY(EM_BA1)
+ XLAT(EM_BA2),
+ #define XLAT_VAL_156 ((unsigned) (EM_BA2))
+ #define XLAT_STR_156 STRINGIFY(EM_BA2)
+ XLAT(EM_XCORE),
+ #define XLAT_VAL_157 ((unsigned) (EM_XCORE))
+ #define XLAT_STR_157 STRINGIFY(EM_XCORE)
+ XLAT(EM_MCHP_PIC),
+ #define XLAT_VAL_158 ((unsigned) (EM_MCHP_PIC))
+ #define XLAT_STR_158 STRINGIFY(EM_MCHP_PIC)
+
+ XLAT(EM_KM32),
+ #define XLAT_VAL_159 ((unsigned) (EM_KM32))
+ #define XLAT_STR_159 STRINGIFY(EM_KM32)
+ XLAT(EM_KMX32),
+ #define XLAT_VAL_160 ((unsigned) (EM_KMX32))
+ #define XLAT_STR_160 STRINGIFY(EM_KMX32)
+ XLAT(EM_KMX16),
+ #define XLAT_VAL_161 ((unsigned) (EM_KMX16))
+ #define XLAT_STR_161 STRINGIFY(EM_KMX16)
+ XLAT(EM_KMX8),
+ #define XLAT_VAL_162 ((unsigned) (EM_KMX8))
+ #define XLAT_STR_162 STRINGIFY(EM_KMX8)
+ XLAT(EM_KVARC),
+ #define XLAT_VAL_163 ((unsigned) (EM_KVARC))
+ #define XLAT_STR_163 STRINGIFY(EM_KVARC)
+ XLAT(EM_CDP),
+ #define XLAT_VAL_164 ((unsigned) (EM_CDP))
+ #define XLAT_STR_164 STRINGIFY(EM_CDP)
+ XLAT(EM_COGE),
+ #define XLAT_VAL_165 ((unsigned) (EM_COGE))
+ #define XLAT_STR_165 STRINGIFY(EM_COGE)
+ XLAT(EM_COOL),
+ #define XLAT_VAL_166 ((unsigned) (EM_COOL))
+ #define XLAT_STR_166 STRINGIFY(EM_COOL)
+ XLAT(EM_NORC),
+ #define XLAT_VAL_167 ((unsigned) (EM_NORC))
+ #define XLAT_STR_167 STRINGIFY(EM_NORC)
+ XLAT(EM_CSR_KALIMBA),
+ #define XLAT_VAL_168 ((unsigned) (EM_CSR_KALIMBA))
+ #define XLAT_STR_168 STRINGIFY(EM_CSR_KALIMBA)
+ XLAT(EM_Z80),
+ #define XLAT_VAL_169 ((unsigned) (EM_Z80))
+ #define XLAT_STR_169 STRINGIFY(EM_Z80)
+ XLAT(EM_VISIUM),
+ #define XLAT_VAL_170 ((unsigned) (EM_VISIUM))
+ #define XLAT_STR_170 STRINGIFY(EM_VISIUM)
+ XLAT(EM_FT32),
+ #define XLAT_VAL_171 ((unsigned) (EM_FT32))
+ #define XLAT_STR_171 STRINGIFY(EM_FT32)
+ XLAT(EM_MOXIE),
+ #define XLAT_VAL_172 ((unsigned) (EM_MOXIE))
+ #define XLAT_STR_172 STRINGIFY(EM_MOXIE)
+ XLAT(EM_AMDGPU),
+ #define XLAT_VAL_173 ((unsigned) (EM_AMDGPU))
+ #define XLAT_STR_173 STRINGIFY(EM_AMDGPU)
+ XLAT(EM_RISCV),
+ #define XLAT_VAL_174 ((unsigned) (EM_RISCV))
+ #define XLAT_STR_174 STRINGIFY(EM_RISCV)
+ XLAT(EM_BPF),
+ #define XLAT_VAL_175 ((unsigned) (EM_BPF))
+ #define XLAT_STR_175 STRINGIFY(EM_BPF)
+ XLAT(EM_CSKY),
+ #define XLAT_VAL_176 ((unsigned) (EM_CSKY))
+ #define XLAT_STR_176 STRINGIFY(EM_CSKY)
+ XLAT(EM_AVR32),
+ #define XLAT_VAL_177 ((unsigned) (EM_AVR32))
+ #define XLAT_STR_177 STRINGIFY(EM_AVR32)
+ XLAT(EM_FRV),
+ #define XLAT_VAL_178 ((unsigned) (EM_FRV))
+ #define XLAT_STR_178 STRINGIFY(EM_FRV)
+ XLAT(EM_OR32),
+ #define XLAT_VAL_179 ((unsigned) (EM_OR32))
+ #define XLAT_STR_179 STRINGIFY(EM_OR32)
+ XLAT(EM_ALPHA),
+ #define XLAT_VAL_180 ((unsigned) (EM_ALPHA))
+ #define XLAT_STR_180 STRINGIFY(EM_ALPHA)
+ XLAT(EM_CYGNUS_V850),
+ #define XLAT_VAL_181 ((unsigned) (EM_CYGNUS_V850))
+ #define XLAT_STR_181 STRINGIFY(EM_CYGNUS_V850)
+ XLAT(EM_CYGNUS_M32R),
+ #define XLAT_VAL_182 ((unsigned) (EM_CYGNUS_M32R))
+ #define XLAT_STR_182 STRINGIFY(EM_CYGNUS_M32R)
+ XLAT(EM_S390_OLD),
+ #define XLAT_VAL_183 ((unsigned) (EM_S390_OLD))
+ #define XLAT_STR_183 STRINGIFY(EM_S390_OLD)
+ XLAT(EM_XTENSA_OLD),
+ #define XLAT_VAL_184 ((unsigned) (EM_XTENSA_OLD))
+ #define XLAT_STR_184 STRINGIFY(EM_XTENSA_OLD)
+ XLAT(EM_MICROBLAZE_OLD),
+ #define XLAT_VAL_185 ((unsigned) (EM_MICROBLAZE_OLD))
+ #define XLAT_STR_185 STRINGIFY(EM_MICROBLAZE_OLD)
+ XLAT(EM_CYGNUS_MN10300),
+ #define XLAT_VAL_186 ((unsigned) (EM_CYGNUS_MN10300))
+ #define XLAT_STR_186 STRINGIFY(EM_CYGNUS_MN10300)
+};
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat elf_em[1] = { {
+ .data = elf_em_xdata,
+ .size = ARRAY_SIZE(elf_em_xdata),
+ .type = XT_SORTED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+#  ifdef XLAT_VAL_30
+  | XLAT_VAL_30
+#  endif
+#  ifdef XLAT_VAL_31
+  | XLAT_VAL_31
+#  endif
+#  ifdef XLAT_VAL_32
+  | XLAT_VAL_32
+#  endif
+#  ifdef XLAT_VAL_33
+  | XLAT_VAL_33
+#  endif
+#  ifdef XLAT_VAL_34
+  | XLAT_VAL_34
+#  endif
+#  ifdef XLAT_VAL_35
+  | XLAT_VAL_35
+#  endif
+#  ifdef XLAT_VAL_36
+  | XLAT_VAL_36
+#  endif
+#  ifdef XLAT_VAL_37
+  | XLAT_VAL_37
+#  endif
+#  ifdef XLAT_VAL_38
+  | XLAT_VAL_38
+#  endif
+#  ifdef XLAT_VAL_39
+  | XLAT_VAL_39
+#  endif
+#  ifdef XLAT_VAL_40
+  | XLAT_VAL_40
+#  endif
+#  ifdef XLAT_VAL_41
+  | XLAT_VAL_41
+#  endif
+#  ifdef XLAT_VAL_42
+  | XLAT_VAL_42
+#  endif
+#  ifdef XLAT_VAL_43
+  | XLAT_VAL_43
+#  endif
+#  ifdef XLAT_VAL_44
+  | XLAT_VAL_44
+#  endif
+#  ifdef XLAT_VAL_45
+  | XLAT_VAL_45
+#  endif
+#  ifdef XLAT_VAL_46
+  | XLAT_VAL_46
+#  endif
+#  ifdef XLAT_VAL_47
+  | XLAT_VAL_47
+#  endif
+#  ifdef XLAT_VAL_48
+  | XLAT_VAL_48
+#  endif
+#  ifdef XLAT_VAL_49
+  | XLAT_VAL_49
+#  endif
+#  ifdef XLAT_VAL_50
+  | XLAT_VAL_50
+#  endif
+#  ifdef XLAT_VAL_51
+  | XLAT_VAL_51
+#  endif
+#  ifdef XLAT_VAL_52
+  | XLAT_VAL_52
+#  endif
+#  ifdef XLAT_VAL_53
+  | XLAT_VAL_53
+#  endif
+#  ifdef XLAT_VAL_54
+  | XLAT_VAL_54
+#  endif
+#  ifdef XLAT_VAL_55
+  | XLAT_VAL_55
+#  endif
+#  ifdef XLAT_VAL_56
+  | XLAT_VAL_56
+#  endif
+#  ifdef XLAT_VAL_57
+  | XLAT_VAL_57
+#  endif
+#  ifdef XLAT_VAL_58
+  | XLAT_VAL_58
+#  endif
+#  ifdef XLAT_VAL_59
+  | XLAT_VAL_59
+#  endif
+#  ifdef XLAT_VAL_60
+  | XLAT_VAL_60
+#  endif
+#  ifdef XLAT_VAL_61
+  | XLAT_VAL_61
+#  endif
+#  ifdef XLAT_VAL_62
+  | XLAT_VAL_62
+#  endif
+#  ifdef XLAT_VAL_63
+  | XLAT_VAL_63
+#  endif
+#  ifdef XLAT_VAL_64
+  | XLAT_VAL_64
+#  endif
+#  ifdef XLAT_VAL_65
+  | XLAT_VAL_65
+#  endif
+#  ifdef XLAT_VAL_66
+  | XLAT_VAL_66
+#  endif
+#  ifdef XLAT_VAL_67
+  | XLAT_VAL_67
+#  endif
+#  ifdef XLAT_VAL_68
+  | XLAT_VAL_68
+#  endif
+#  ifdef XLAT_VAL_69
+  | XLAT_VAL_69
+#  endif
+#  ifdef XLAT_VAL_70
+  | XLAT_VAL_70
+#  endif
+#  ifdef XLAT_VAL_71
+  | XLAT_VAL_71
+#  endif
+#  ifdef XLAT_VAL_72
+  | XLAT_VAL_72
+#  endif
+#  ifdef XLAT_VAL_73
+  | XLAT_VAL_73
+#  endif
+#  ifdef XLAT_VAL_74
+  | XLAT_VAL_74
+#  endif
+#  ifdef XLAT_VAL_75
+  | XLAT_VAL_75
+#  endif
+#  ifdef XLAT_VAL_76
+  | XLAT_VAL_76
+#  endif
+#  ifdef XLAT_VAL_77
+  | XLAT_VAL_77
+#  endif
+#  ifdef XLAT_VAL_78
+  | XLAT_VAL_78
+#  endif
+#  ifdef XLAT_VAL_79
+  | XLAT_VAL_79
+#  endif
+#  ifdef XLAT_VAL_80
+  | XLAT_VAL_80
+#  endif
+#  ifdef XLAT_VAL_81
+  | XLAT_VAL_81
+#  endif
+#  ifdef XLAT_VAL_82
+  | XLAT_VAL_82
+#  endif
+#  ifdef XLAT_VAL_83
+  | XLAT_VAL_83
+#  endif
+#  ifdef XLAT_VAL_84
+  | XLAT_VAL_84
+#  endif
+#  ifdef XLAT_VAL_85
+  | XLAT_VAL_85
+#  endif
+#  ifdef XLAT_VAL_86
+  | XLAT_VAL_86
+#  endif
+#  ifdef XLAT_VAL_87
+  | XLAT_VAL_87
+#  endif
+#  ifdef XLAT_VAL_88
+  | XLAT_VAL_88
+#  endif
+#  ifdef XLAT_VAL_89
+  | XLAT_VAL_89
+#  endif
+#  ifdef XLAT_VAL_90
+  | XLAT_VAL_90
+#  endif
+#  ifdef XLAT_VAL_91
+  | XLAT_VAL_91
+#  endif
+#  ifdef XLAT_VAL_92
+  | XLAT_VAL_92
+#  endif
+#  ifdef XLAT_VAL_93
+  | XLAT_VAL_93
+#  endif
+#  ifdef XLAT_VAL_94
+  | XLAT_VAL_94
+#  endif
+#  ifdef XLAT_VAL_95
+  | XLAT_VAL_95
+#  endif
+#  ifdef XLAT_VAL_96
+  | XLAT_VAL_96
+#  endif
+#  ifdef XLAT_VAL_97
+  | XLAT_VAL_97
+#  endif
+#  ifdef XLAT_VAL_98
+  | XLAT_VAL_98
+#  endif
+#  ifdef XLAT_VAL_99
+  | XLAT_VAL_99
+#  endif
+#  ifdef XLAT_VAL_100
+  | XLAT_VAL_100
+#  endif
+#  ifdef XLAT_VAL_101
+  | XLAT_VAL_101
+#  endif
+#  ifdef XLAT_VAL_102
+  | XLAT_VAL_102
+#  endif
+#  ifdef XLAT_VAL_103
+  | XLAT_VAL_103
+#  endif
+#  ifdef XLAT_VAL_104
+  | XLAT_VAL_104
+#  endif
+#  ifdef XLAT_VAL_105
+  | XLAT_VAL_105
+#  endif
+#  ifdef XLAT_VAL_106
+  | XLAT_VAL_106
+#  endif
+#  ifdef XLAT_VAL_107
+  | XLAT_VAL_107
+#  endif
+#  ifdef XLAT_VAL_108
+  | XLAT_VAL_108
+#  endif
+#  ifdef XLAT_VAL_109
+  | XLAT_VAL_109
+#  endif
+#  ifdef XLAT_VAL_110
+  | XLAT_VAL_110
+#  endif
+#  ifdef XLAT_VAL_111
+  | XLAT_VAL_111
+#  endif
+#  ifdef XLAT_VAL_112
+  | XLAT_VAL_112
+#  endif
+#  ifdef XLAT_VAL_113
+  | XLAT_VAL_113
+#  endif
+#  ifdef XLAT_VAL_114
+  | XLAT_VAL_114
+#  endif
+#  ifdef XLAT_VAL_115
+  | XLAT_VAL_115
+#  endif
+#  ifdef XLAT_VAL_116
+  | XLAT_VAL_116
+#  endif
+#  ifdef XLAT_VAL_117
+  | XLAT_VAL_117
+#  endif
+#  ifdef XLAT_VAL_118
+  | XLAT_VAL_118
+#  endif
+#  ifdef XLAT_VAL_119
+  | XLAT_VAL_119
+#  endif
+#  ifdef XLAT_VAL_120
+  | XLAT_VAL_120
+#  endif
+#  ifdef XLAT_VAL_121
+  | XLAT_VAL_121
+#  endif
+#  ifdef XLAT_VAL_122
+  | XLAT_VAL_122
+#  endif
+#  ifdef XLAT_VAL_123
+  | XLAT_VAL_123
+#  endif
+#  ifdef XLAT_VAL_124
+  | XLAT_VAL_124
+#  endif
+#  ifdef XLAT_VAL_125
+  | XLAT_VAL_125
+#  endif
+#  ifdef XLAT_VAL_126
+  | XLAT_VAL_126
+#  endif
+#  ifdef XLAT_VAL_127
+  | XLAT_VAL_127
+#  endif
+#  ifdef XLAT_VAL_128
+  | XLAT_VAL_128
+#  endif
+#  ifdef XLAT_VAL_129
+  | XLAT_VAL_129
+#  endif
+#  ifdef XLAT_VAL_130
+  | XLAT_VAL_130
+#  endif
+#  ifdef XLAT_VAL_131
+  | XLAT_VAL_131
+#  endif
+#  ifdef XLAT_VAL_132
+  | XLAT_VAL_132
+#  endif
+#  ifdef XLAT_VAL_133
+  | XLAT_VAL_133
+#  endif
+#  ifdef XLAT_VAL_134
+  | XLAT_VAL_134
+#  endif
+#  ifdef XLAT_VAL_135
+  | XLAT_VAL_135
+#  endif
+#  ifdef XLAT_VAL_136
+  | XLAT_VAL_136
+#  endif
+#  ifdef XLAT_VAL_137
+  | XLAT_VAL_137
+#  endif
+#  ifdef XLAT_VAL_138
+  | XLAT_VAL_138
+#  endif
+#  ifdef XLAT_VAL_139
+  | XLAT_VAL_139
+#  endif
+#  ifdef XLAT_VAL_140
+  | XLAT_VAL_140
+#  endif
+#  ifdef XLAT_VAL_141
+  | XLAT_VAL_141
+#  endif
+#  ifdef XLAT_VAL_142
+  | XLAT_VAL_142
+#  endif
+#  ifdef XLAT_VAL_143
+  | XLAT_VAL_143
+#  endif
+#  ifdef XLAT_VAL_144
+  | XLAT_VAL_144
+#  endif
+#  ifdef XLAT_VAL_145
+  | XLAT_VAL_145
+#  endif
+#  ifdef XLAT_VAL_146
+  | XLAT_VAL_146
+#  endif
+#  ifdef XLAT_VAL_147
+  | XLAT_VAL_147
+#  endif
+#  ifdef XLAT_VAL_148
+  | XLAT_VAL_148
+#  endif
+#  ifdef XLAT_VAL_149
+  | XLAT_VAL_149
+#  endif
+#  ifdef XLAT_VAL_150
+  | XLAT_VAL_150
+#  endif
+#  ifdef XLAT_VAL_151
+  | XLAT_VAL_151
+#  endif
+#  ifdef XLAT_VAL_152
+  | XLAT_VAL_152
+#  endif
+#  ifdef XLAT_VAL_153
+  | XLAT_VAL_153
+#  endif
+#  ifdef XLAT_VAL_154
+  | XLAT_VAL_154
+#  endif
+#  ifdef XLAT_VAL_155
+  | XLAT_VAL_155
+#  endif
+#  ifdef XLAT_VAL_156
+  | XLAT_VAL_156
+#  endif
+#  ifdef XLAT_VAL_157
+  | XLAT_VAL_157
+#  endif
+#  ifdef XLAT_VAL_158
+  | XLAT_VAL_158
+#  endif
+#  ifdef XLAT_VAL_159
+  | XLAT_VAL_159
+#  endif
+#  ifdef XLAT_VAL_160
+  | XLAT_VAL_160
+#  endif
+#  ifdef XLAT_VAL_161
+  | XLAT_VAL_161
+#  endif
+#  ifdef XLAT_VAL_162
+  | XLAT_VAL_162
+#  endif
+#  ifdef XLAT_VAL_163
+  | XLAT_VAL_163
+#  endif
+#  ifdef XLAT_VAL_164
+  | XLAT_VAL_164
+#  endif
+#  ifdef XLAT_VAL_165
+  | XLAT_VAL_165
+#  endif
+#  ifdef XLAT_VAL_166
+  | XLAT_VAL_166
+#  endif
+#  ifdef XLAT_VAL_167
+  | XLAT_VAL_167
+#  endif
+#  ifdef XLAT_VAL_168
+  | XLAT_VAL_168
+#  endif
+#  ifdef XLAT_VAL_169
+  | XLAT_VAL_169
+#  endif
+#  ifdef XLAT_VAL_170
+  | XLAT_VAL_170
+#  endif
+#  ifdef XLAT_VAL_171
+  | XLAT_VAL_171
+#  endif
+#  ifdef XLAT_VAL_172
+  | XLAT_VAL_172
+#  endif
+#  ifdef XLAT_VAL_173
+  | XLAT_VAL_173
+#  endif
+#  ifdef XLAT_VAL_174
+  | XLAT_VAL_174
+#  endif
+#  ifdef XLAT_VAL_175
+  | XLAT_VAL_175
+#  endif
+#  ifdef XLAT_VAL_176
+  | XLAT_VAL_176
+#  endif
+#  ifdef XLAT_VAL_177
+  | XLAT_VAL_177
+#  endif
+#  ifdef XLAT_VAL_178
+  | XLAT_VAL_178
+#  endif
+#  ifdef XLAT_VAL_179
+  | XLAT_VAL_179
+#  endif
+#  ifdef XLAT_VAL_180
+  | XLAT_VAL_180
+#  endif
+#  ifdef XLAT_VAL_181
+  | XLAT_VAL_181
+#  endif
+#  ifdef XLAT_VAL_182
+  | XLAT_VAL_182
+#  endif
+#  ifdef XLAT_VAL_183
+  | XLAT_VAL_183
+#  endif
+#  ifdef XLAT_VAL_184
+  | XLAT_VAL_184
+#  endif
+#  ifdef XLAT_VAL_185
+  | XLAT_VAL_185
+#  endif
+#  ifdef XLAT_VAL_186
+  | XLAT_VAL_186
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+#  ifdef XLAT_STR_30
+  + sizeof(XLAT_STR_30)
+#  endif
+#  ifdef XLAT_STR_31
+  + sizeof(XLAT_STR_31)
+#  endif
+#  ifdef XLAT_STR_32
+  + sizeof(XLAT_STR_32)
+#  endif
+#  ifdef XLAT_STR_33
+  + sizeof(XLAT_STR_33)
+#  endif
+#  ifdef XLAT_STR_34
+  + sizeof(XLAT_STR_34)
+#  endif
+#  ifdef XLAT_STR_35
+  + sizeof(XLAT_STR_35)
+#  endif
+#  ifdef XLAT_STR_36
+  + sizeof(XLAT_STR_36)
+#  endif
+#  ifdef XLAT_STR_37
+  + sizeof(XLAT_STR_37)
+#  endif
+#  ifdef XLAT_STR_38
+  + sizeof(XLAT_STR_38)
+#  endif
+#  ifdef XLAT_STR_39
+  + sizeof(XLAT_STR_39)
+#  endif
+#  ifdef XLAT_STR_40
+  + sizeof(XLAT_STR_40)
+#  endif
+#  ifdef XLAT_STR_41
+  + sizeof(XLAT_STR_41)
+#  endif
+#  ifdef XLAT_STR_42
+  + sizeof(XLAT_STR_42)
+#  endif
+#  ifdef XLAT_STR_43
+  + sizeof(XLAT_STR_43)
+#  endif
+#  ifdef XLAT_STR_44
+  + sizeof(XLAT_STR_44)
+#  endif
+#  ifdef XLAT_STR_45
+  + sizeof(XLAT_STR_45)
+#  endif
+#  ifdef XLAT_STR_46
+  + sizeof(XLAT_STR_46)
+#  endif
+#  ifdef XLAT_STR_47
+  + sizeof(XLAT_STR_47)
+#  endif
+#  ifdef XLAT_STR_48
+  + sizeof(XLAT_STR_48)
+#  endif
+#  ifdef XLAT_STR_49
+  + sizeof(XLAT_STR_49)
+#  endif
+#  ifdef XLAT_STR_50
+  + sizeof(XLAT_STR_50)
+#  endif
+#  ifdef XLAT_STR_51
+  + sizeof(XLAT_STR_51)
+#  endif
+#  ifdef XLAT_STR_52
+  + sizeof(XLAT_STR_52)
+#  endif
+#  ifdef XLAT_STR_53
+  + sizeof(XLAT_STR_53)
+#  endif
+#  ifdef XLAT_STR_54
+  + sizeof(XLAT_STR_54)
+#  endif
+#  ifdef XLAT_STR_55
+  + sizeof(XLAT_STR_55)
+#  endif
+#  ifdef XLAT_STR_56
+  + sizeof(XLAT_STR_56)
+#  endif
+#  ifdef XLAT_STR_57
+  + sizeof(XLAT_STR_57)
+#  endif
+#  ifdef XLAT_STR_58
+  + sizeof(XLAT_STR_58)
+#  endif
+#  ifdef XLAT_STR_59
+  + sizeof(XLAT_STR_59)
+#  endif
+#  ifdef XLAT_STR_60
+  + sizeof(XLAT_STR_60)
+#  endif
+#  ifdef XLAT_STR_61
+  + sizeof(XLAT_STR_61)
+#  endif
+#  ifdef XLAT_STR_62
+  + sizeof(XLAT_STR_62)
+#  endif
+#  ifdef XLAT_STR_63
+  + sizeof(XLAT_STR_63)
+#  endif
+#  ifdef XLAT_STR_64
+  + sizeof(XLAT_STR_64)
+#  endif
+#  ifdef XLAT_STR_65
+  + sizeof(XLAT_STR_65)
+#  endif
+#  ifdef XLAT_STR_66
+  + sizeof(XLAT_STR_66)
+#  endif
+#  ifdef XLAT_STR_67
+  + sizeof(XLAT_STR_67)
+#  endif
+#  ifdef XLAT_STR_68
+  + sizeof(XLAT_STR_68)
+#  endif
+#  ifdef XLAT_STR_69
+  + sizeof(XLAT_STR_69)
+#  endif
+#  ifdef XLAT_STR_70
+  + sizeof(XLAT_STR_70)
+#  endif
+#  ifdef XLAT_STR_71
+  + sizeof(XLAT_STR_71)
+#  endif
+#  ifdef XLAT_STR_72
+  + sizeof(XLAT_STR_72)
+#  endif
+#  ifdef XLAT_STR_73
+  + sizeof(XLAT_STR_73)
+#  endif
+#  ifdef XLAT_STR_74
+  + sizeof(XLAT_STR_74)
+#  endif
+#  ifdef XLAT_STR_75
+  + sizeof(XLAT_STR_75)
+#  endif
+#  ifdef XLAT_STR_76
+  + sizeof(XLAT_STR_76)
+#  endif
+#  ifdef XLAT_STR_77
+  + sizeof(XLAT_STR_77)
+#  endif
+#  ifdef XLAT_STR_78
+  + sizeof(XLAT_STR_78)
+#  endif
+#  ifdef XLAT_STR_79
+  + sizeof(XLAT_STR_79)
+#  endif
+#  ifdef XLAT_STR_80
+  + sizeof(XLAT_STR_80)
+#  endif
+#  ifdef XLAT_STR_81
+  + sizeof(XLAT_STR_81)
+#  endif
+#  ifdef XLAT_STR_82
+  + sizeof(XLAT_STR_82)
+#  endif
+#  ifdef XLAT_STR_83
+  + sizeof(XLAT_STR_83)
+#  endif
+#  ifdef XLAT_STR_84
+  + sizeof(XLAT_STR_84)
+#  endif
+#  ifdef XLAT_STR_85
+  + sizeof(XLAT_STR_85)
+#  endif
+#  ifdef XLAT_STR_86
+  + sizeof(XLAT_STR_86)
+#  endif
+#  ifdef XLAT_STR_87
+  + sizeof(XLAT_STR_87)
+#  endif
+#  ifdef XLAT_STR_88
+  + sizeof(XLAT_STR_88)
+#  endif
+#  ifdef XLAT_STR_89
+  + sizeof(XLAT_STR_89)
+#  endif
+#  ifdef XLAT_STR_90
+  + sizeof(XLAT_STR_90)
+#  endif
+#  ifdef XLAT_STR_91
+  + sizeof(XLAT_STR_91)
+#  endif
+#  ifdef XLAT_STR_92
+  + sizeof(XLAT_STR_92)
+#  endif
+#  ifdef XLAT_STR_93
+  + sizeof(XLAT_STR_93)
+#  endif
+#  ifdef XLAT_STR_94
+  + sizeof(XLAT_STR_94)
+#  endif
+#  ifdef XLAT_STR_95
+  + sizeof(XLAT_STR_95)
+#  endif
+#  ifdef XLAT_STR_96
+  + sizeof(XLAT_STR_96)
+#  endif
+#  ifdef XLAT_STR_97
+  + sizeof(XLAT_STR_97)
+#  endif
+#  ifdef XLAT_STR_98
+  + sizeof(XLAT_STR_98)
+#  endif
+#  ifdef XLAT_STR_99
+  + sizeof(XLAT_STR_99)
+#  endif
+#  ifdef XLAT_STR_100
+  + sizeof(XLAT_STR_100)
+#  endif
+#  ifdef XLAT_STR_101
+  + sizeof(XLAT_STR_101)
+#  endif
+#  ifdef XLAT_STR_102
+  + sizeof(XLAT_STR_102)
+#  endif
+#  ifdef XLAT_STR_103
+  + sizeof(XLAT_STR_103)
+#  endif
+#  ifdef XLAT_STR_104
+  + sizeof(XLAT_STR_104)
+#  endif
+#  ifdef XLAT_STR_105
+  + sizeof(XLAT_STR_105)
+#  endif
+#  ifdef XLAT_STR_106
+  + sizeof(XLAT_STR_106)
+#  endif
+#  ifdef XLAT_STR_107
+  + sizeof(XLAT_STR_107)
+#  endif
+#  ifdef XLAT_STR_108
+  + sizeof(XLAT_STR_108)
+#  endif
+#  ifdef XLAT_STR_109
+  + sizeof(XLAT_STR_109)
+#  endif
+#  ifdef XLAT_STR_110
+  + sizeof(XLAT_STR_110)
+#  endif
+#  ifdef XLAT_STR_111
+  + sizeof(XLAT_STR_111)
+#  endif
+#  ifdef XLAT_STR_112
+  + sizeof(XLAT_STR_112)
+#  endif
+#  ifdef XLAT_STR_113
+  + sizeof(XLAT_STR_113)
+#  endif
+#  ifdef XLAT_STR_114
+  + sizeof(XLAT_STR_114)
+#  endif
+#  ifdef XLAT_STR_115
+  + sizeof(XLAT_STR_115)
+#  endif
+#  ifdef XLAT_STR_116
+  + sizeof(XLAT_STR_116)
+#  endif
+#  ifdef XLAT_STR_117
+  + sizeof(XLAT_STR_117)
+#  endif
+#  ifdef XLAT_STR_118
+  + sizeof(XLAT_STR_118)
+#  endif
+#  ifdef XLAT_STR_119
+  + sizeof(XLAT_STR_119)
+#  endif
+#  ifdef XLAT_STR_120
+  + sizeof(XLAT_STR_120)
+#  endif
+#  ifdef XLAT_STR_121
+  + sizeof(XLAT_STR_121)
+#  endif
+#  ifdef XLAT_STR_122
+  + sizeof(XLAT_STR_122)
+#  endif
+#  ifdef XLAT_STR_123
+  + sizeof(XLAT_STR_123)
+#  endif
+#  ifdef XLAT_STR_124
+  + sizeof(XLAT_STR_124)
+#  endif
+#  ifdef XLAT_STR_125
+  + sizeof(XLAT_STR_125)
+#  endif
+#  ifdef XLAT_STR_126
+  + sizeof(XLAT_STR_126)
+#  endif
+#  ifdef XLAT_STR_127
+  + sizeof(XLAT_STR_127)
+#  endif
+#  ifdef XLAT_STR_128
+  + sizeof(XLAT_STR_128)
+#  endif
+#  ifdef XLAT_STR_129
+  + sizeof(XLAT_STR_129)
+#  endif
+#  ifdef XLAT_STR_130
+  + sizeof(XLAT_STR_130)
+#  endif
+#  ifdef XLAT_STR_131
+  + sizeof(XLAT_STR_131)
+#  endif
+#  ifdef XLAT_STR_132
+  + sizeof(XLAT_STR_132)
+#  endif
+#  ifdef XLAT_STR_133
+  + sizeof(XLAT_STR_133)
+#  endif
+#  ifdef XLAT_STR_134
+  + sizeof(XLAT_STR_134)
+#  endif
+#  ifdef XLAT_STR_135
+  + sizeof(XLAT_STR_135)
+#  endif
+#  ifdef XLAT_STR_136
+  + sizeof(XLAT_STR_136)
+#  endif
+#  ifdef XLAT_STR_137
+  + sizeof(XLAT_STR_137)
+#  endif
+#  ifdef XLAT_STR_138
+  + sizeof(XLAT_STR_138)
+#  endif
+#  ifdef XLAT_STR_139
+  + sizeof(XLAT_STR_139)
+#  endif
+#  ifdef XLAT_STR_140
+  + sizeof(XLAT_STR_140)
+#  endif
+#  ifdef XLAT_STR_141
+  + sizeof(XLAT_STR_141)
+#  endif
+#  ifdef XLAT_STR_142
+  + sizeof(XLAT_STR_142)
+#  endif
+#  ifdef XLAT_STR_143
+  + sizeof(XLAT_STR_143)
+#  endif
+#  ifdef XLAT_STR_144
+  + sizeof(XLAT_STR_144)
+#  endif
+#  ifdef XLAT_STR_145
+  + sizeof(XLAT_STR_145)
+#  endif
+#  ifdef XLAT_STR_146
+  + sizeof(XLAT_STR_146)
+#  endif
+#  ifdef XLAT_STR_147
+  + sizeof(XLAT_STR_147)
+#  endif
+#  ifdef XLAT_STR_148
+  + sizeof(XLAT_STR_148)
+#  endif
+#  ifdef XLAT_STR_149
+  + sizeof(XLAT_STR_149)
+#  endif
+#  ifdef XLAT_STR_150
+  + sizeof(XLAT_STR_150)
+#  endif
+#  ifdef XLAT_STR_151
+  + sizeof(XLAT_STR_151)
+#  endif
+#  ifdef XLAT_STR_152
+  + sizeof(XLAT_STR_152)
+#  endif
+#  ifdef XLAT_STR_153
+  + sizeof(XLAT_STR_153)
+#  endif
+#  ifdef XLAT_STR_154
+  + sizeof(XLAT_STR_154)
+#  endif
+#  ifdef XLAT_STR_155
+  + sizeof(XLAT_STR_155)
+#  endif
+#  ifdef XLAT_STR_156
+  + sizeof(XLAT_STR_156)
+#  endif
+#  ifdef XLAT_STR_157
+  + sizeof(XLAT_STR_157)
+#  endif
+#  ifdef XLAT_STR_158
+  + sizeof(XLAT_STR_158)
+#  endif
+#  ifdef XLAT_STR_159
+  + sizeof(XLAT_STR_159)
+#  endif
+#  ifdef XLAT_STR_160
+  + sizeof(XLAT_STR_160)
+#  endif
+#  ifdef XLAT_STR_161
+  + sizeof(XLAT_STR_161)
+#  endif
+#  ifdef XLAT_STR_162
+  + sizeof(XLAT_STR_162)
+#  endif
+#  ifdef XLAT_STR_163
+  + sizeof(XLAT_STR_163)
+#  endif
+#  ifdef XLAT_STR_164
+  + sizeof(XLAT_STR_164)
+#  endif
+#  ifdef XLAT_STR_165
+  + sizeof(XLAT_STR_165)
+#  endif
+#  ifdef XLAT_STR_166
+  + sizeof(XLAT_STR_166)
+#  endif
+#  ifdef XLAT_STR_167
+  + sizeof(XLAT_STR_167)
+#  endif
+#  ifdef XLAT_STR_168
+  + sizeof(XLAT_STR_168)
+#  endif
+#  ifdef XLAT_STR_169
+  + sizeof(XLAT_STR_169)
+#  endif
+#  ifdef XLAT_STR_170
+  + sizeof(XLAT_STR_170)
+#  endif
+#  ifdef XLAT_STR_171
+  + sizeof(XLAT_STR_171)
+#  endif
+#  ifdef XLAT_STR_172
+  + sizeof(XLAT_STR_172)
+#  endif
+#  ifdef XLAT_STR_173
+  + sizeof(XLAT_STR_173)
+#  endif
+#  ifdef XLAT_STR_174
+  + sizeof(XLAT_STR_174)
+#  endif
+#  ifdef XLAT_STR_175
+  + sizeof(XLAT_STR_175)
+#  endif
+#  ifdef XLAT_STR_176
+  + sizeof(XLAT_STR_176)
+#  endif
+#  ifdef XLAT_STR_177
+  + sizeof(XLAT_STR_177)
+#  endif
+#  ifdef XLAT_STR_178
+  + sizeof(XLAT_STR_178)
+#  endif
+#  ifdef XLAT_STR_179
+  + sizeof(XLAT_STR_179)
+#  endif
+#  ifdef XLAT_STR_180
+  + sizeof(XLAT_STR_180)
+#  endif
+#  ifdef XLAT_STR_181
+  + sizeof(XLAT_STR_181)
+#  endif
+#  ifdef XLAT_STR_182
+  + sizeof(XLAT_STR_182)
+#  endif
+#  ifdef XLAT_STR_183
+  + sizeof(XLAT_STR_183)
+#  endif
+#  ifdef XLAT_STR_184
+  + sizeof(XLAT_STR_184)
+#  endif
+#  ifdef XLAT_STR_185
+  + sizeof(XLAT_STR_185)
+#  endif
+#  ifdef XLAT_STR_186
+  + sizeof(XLAT_STR_186)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
+#  undef XLAT_STR_30
+#  undef XLAT_VAL_30
+#  undef XLAT_STR_31
+#  undef XLAT_VAL_31
+#  undef XLAT_STR_32
+#  undef XLAT_VAL_32
+#  undef XLAT_STR_33
+#  undef XLAT_VAL_33
+#  undef XLAT_STR_34
+#  undef XLAT_VAL_34
+#  undef XLAT_STR_35
+#  undef XLAT_VAL_35
+#  undef XLAT_STR_36
+#  undef XLAT_VAL_36
+#  undef XLAT_STR_37
+#  undef XLAT_VAL_37
+#  undef XLAT_STR_38
+#  undef XLAT_VAL_38
+#  undef XLAT_STR_39
+#  undef XLAT_VAL_39
+#  undef XLAT_STR_40
+#  undef XLAT_VAL_40
+#  undef XLAT_STR_41
+#  undef XLAT_VAL_41
+#  undef XLAT_STR_42
+#  undef XLAT_VAL_42
+#  undef XLAT_STR_43
+#  undef XLAT_VAL_43
+#  undef XLAT_STR_44
+#  undef XLAT_VAL_44
+#  undef XLAT_STR_45
+#  undef XLAT_VAL_45
+#  undef XLAT_STR_46
+#  undef XLAT_VAL_46
+#  undef XLAT_STR_47
+#  undef XLAT_VAL_47
+#  undef XLAT_STR_48
+#  undef XLAT_VAL_48
+#  undef XLAT_STR_49
+#  undef XLAT_VAL_49
+#  undef XLAT_STR_50
+#  undef XLAT_VAL_50
+#  undef XLAT_STR_51
+#  undef XLAT_VAL_51
+#  undef XLAT_STR_52
+#  undef XLAT_VAL_52
+#  undef XLAT_STR_53
+#  undef XLAT_VAL_53
+#  undef XLAT_STR_54
+#  undef XLAT_VAL_54
+#  undef XLAT_STR_55
+#  undef XLAT_VAL_55
+#  undef XLAT_STR_56
+#  undef XLAT_VAL_56
+#  undef XLAT_STR_57
+#  undef XLAT_VAL_57
+#  undef XLAT_STR_58
+#  undef XLAT_VAL_58
+#  undef XLAT_STR_59
+#  undef XLAT_VAL_59
+#  undef XLAT_STR_60
+#  undef XLAT_VAL_60
+#  undef XLAT_STR_61
+#  undef XLAT_VAL_61
+#  undef XLAT_STR_62
+#  undef XLAT_VAL_62
+#  undef XLAT_STR_63
+#  undef XLAT_VAL_63
+#  undef XLAT_STR_64
+#  undef XLAT_VAL_64
+#  undef XLAT_STR_65
+#  undef XLAT_VAL_65
+#  undef XLAT_STR_66
+#  undef XLAT_VAL_66
+#  undef XLAT_STR_67
+#  undef XLAT_VAL_67
+#  undef XLAT_STR_68
+#  undef XLAT_VAL_68
+#  undef XLAT_STR_69
+#  undef XLAT_VAL_69
+#  undef XLAT_STR_70
+#  undef XLAT_VAL_70
+#  undef XLAT_STR_71
+#  undef XLAT_VAL_71
+#  undef XLAT_STR_72
+#  undef XLAT_VAL_72
+#  undef XLAT_STR_73
+#  undef XLAT_VAL_73
+#  undef XLAT_STR_74
+#  undef XLAT_VAL_74
+#  undef XLAT_STR_75
+#  undef XLAT_VAL_75
+#  undef XLAT_STR_76
+#  undef XLAT_VAL_76
+#  undef XLAT_STR_77
+#  undef XLAT_VAL_77
+#  undef XLAT_STR_78
+#  undef XLAT_VAL_78
+#  undef XLAT_STR_79
+#  undef XLAT_VAL_79
+#  undef XLAT_STR_80
+#  undef XLAT_VAL_80
+#  undef XLAT_STR_81
+#  undef XLAT_VAL_81
+#  undef XLAT_STR_82
+#  undef XLAT_VAL_82
+#  undef XLAT_STR_83
+#  undef XLAT_VAL_83
+#  undef XLAT_STR_84
+#  undef XLAT_VAL_84
+#  undef XLAT_STR_85
+#  undef XLAT_VAL_85
+#  undef XLAT_STR_86
+#  undef XLAT_VAL_86
+#  undef XLAT_STR_87
+#  undef XLAT_VAL_87
+#  undef XLAT_STR_88
+#  undef XLAT_VAL_88
+#  undef XLAT_STR_89
+#  undef XLAT_VAL_89
+#  undef XLAT_STR_90
+#  undef XLAT_VAL_90
+#  undef XLAT_STR_91
+#  undef XLAT_VAL_91
+#  undef XLAT_STR_92
+#  undef XLAT_VAL_92
+#  undef XLAT_STR_93
+#  undef XLAT_VAL_93
+#  undef XLAT_STR_94
+#  undef XLAT_VAL_94
+#  undef XLAT_STR_95
+#  undef XLAT_VAL_95
+#  undef XLAT_STR_96
+#  undef XLAT_VAL_96
+#  undef XLAT_STR_97
+#  undef XLAT_VAL_97
+#  undef XLAT_STR_98
+#  undef XLAT_VAL_98
+#  undef XLAT_STR_99
+#  undef XLAT_VAL_99
+#  undef XLAT_STR_100
+#  undef XLAT_VAL_100
+#  undef XLAT_STR_101
+#  undef XLAT_VAL_101
+#  undef XLAT_STR_102
+#  undef XLAT_VAL_102
+#  undef XLAT_STR_103
+#  undef XLAT_VAL_103
+#  undef XLAT_STR_104
+#  undef XLAT_VAL_104
+#  undef XLAT_STR_105
+#  undef XLAT_VAL_105
+#  undef XLAT_STR_106
+#  undef XLAT_VAL_106
+#  undef XLAT_STR_107
+#  undef XLAT_VAL_107
+#  undef XLAT_STR_108
+#  undef XLAT_VAL_108
+#  undef XLAT_STR_109
+#  undef XLAT_VAL_109
+#  undef XLAT_STR_110
+#  undef XLAT_VAL_110
+#  undef XLAT_STR_111
+#  undef XLAT_VAL_111
+#  undef XLAT_STR_112
+#  undef XLAT_VAL_112
+#  undef XLAT_STR_113
+#  undef XLAT_VAL_113
+#  undef XLAT_STR_114
+#  undef XLAT_VAL_114
+#  undef XLAT_STR_115
+#  undef XLAT_VAL_115
+#  undef XLAT_STR_116
+#  undef XLAT_VAL_116
+#  undef XLAT_STR_117
+#  undef XLAT_VAL_117
+#  undef XLAT_STR_118
+#  undef XLAT_VAL_118
+#  undef XLAT_STR_119
+#  undef XLAT_VAL_119
+#  undef XLAT_STR_120
+#  undef XLAT_VAL_120
+#  undef XLAT_STR_121
+#  undef XLAT_VAL_121
+#  undef XLAT_STR_122
+#  undef XLAT_VAL_122
+#  undef XLAT_STR_123
+#  undef XLAT_VAL_123
+#  undef XLAT_STR_124
+#  undef XLAT_VAL_124
+#  undef XLAT_STR_125
+#  undef XLAT_VAL_125
+#  undef XLAT_STR_126
+#  undef XLAT_VAL_126
+#  undef XLAT_STR_127
+#  undef XLAT_VAL_127
+#  undef XLAT_STR_128
+#  undef XLAT_VAL_128
+#  undef XLAT_STR_129
+#  undef XLAT_VAL_129
+#  undef XLAT_STR_130
+#  undef XLAT_VAL_130
+#  undef XLAT_STR_131
+#  undef XLAT_VAL_131
+#  undef XLAT_STR_132
+#  undef XLAT_VAL_132
+#  undef XLAT_STR_133
+#  undef XLAT_VAL_133
+#  undef XLAT_STR_134
+#  undef XLAT_VAL_134
+#  undef XLAT_STR_135
+#  undef XLAT_VAL_135
+#  undef XLAT_STR_136
+#  undef XLAT_VAL_136
+#  undef XLAT_STR_137
+#  undef XLAT_VAL_137
+#  undef XLAT_STR_138
+#  undef XLAT_VAL_138
+#  undef XLAT_STR_139
+#  undef XLAT_VAL_139
+#  undef XLAT_STR_140
+#  undef XLAT_VAL_140
+#  undef XLAT_STR_141
+#  undef XLAT_VAL_141
+#  undef XLAT_STR_142
+#  undef XLAT_VAL_142
+#  undef XLAT_STR_143
+#  undef XLAT_VAL_143
+#  undef XLAT_STR_144
+#  undef XLAT_VAL_144
+#  undef XLAT_STR_145
+#  undef XLAT_VAL_145
+#  undef XLAT_STR_146
+#  undef XLAT_VAL_146
+#  undef XLAT_STR_147
+#  undef XLAT_VAL_147
+#  undef XLAT_STR_148
+#  undef XLAT_VAL_148
+#  undef XLAT_STR_149
+#  undef XLAT_VAL_149
+#  undef XLAT_STR_150
+#  undef XLAT_VAL_150
+#  undef XLAT_STR_151
+#  undef XLAT_VAL_151
+#  undef XLAT_STR_152
+#  undef XLAT_VAL_152
+#  undef XLAT_STR_153
+#  undef XLAT_VAL_153
+#  undef XLAT_STR_154
+#  undef XLAT_VAL_154
+#  undef XLAT_STR_155
+#  undef XLAT_VAL_155
+#  undef XLAT_STR_156
+#  undef XLAT_VAL_156
+#  undef XLAT_STR_157
+#  undef XLAT_VAL_157
+#  undef XLAT_STR_158
+#  undef XLAT_VAL_158
+#  undef XLAT_STR_159
+#  undef XLAT_VAL_159
+#  undef XLAT_STR_160
+#  undef XLAT_VAL_160
+#  undef XLAT_STR_161
+#  undef XLAT_VAL_161
+#  undef XLAT_STR_162
+#  undef XLAT_VAL_162
+#  undef XLAT_STR_163
+#  undef XLAT_VAL_163
+#  undef XLAT_STR_164
+#  undef XLAT_VAL_164
+#  undef XLAT_STR_165
+#  undef XLAT_VAL_165
+#  undef XLAT_STR_166
+#  undef XLAT_VAL_166
+#  undef XLAT_STR_167
+#  undef XLAT_VAL_167
+#  undef XLAT_STR_168
+#  undef XLAT_VAL_168
+#  undef XLAT_STR_169
+#  undef XLAT_VAL_169
+#  undef XLAT_STR_170
+#  undef XLAT_VAL_170
+#  undef XLAT_STR_171
+#  undef XLAT_VAL_171
+#  undef XLAT_STR_172
+#  undef XLAT_VAL_172
+#  undef XLAT_STR_173
+#  undef XLAT_VAL_173
+#  undef XLAT_STR_174
+#  undef XLAT_VAL_174
+#  undef XLAT_STR_175
+#  undef XLAT_VAL_175
+#  undef XLAT_STR_176
+#  undef XLAT_VAL_176
+#  undef XLAT_STR_177
+#  undef XLAT_VAL_177
+#  undef XLAT_STR_178
+#  undef XLAT_VAL_178
+#  undef XLAT_STR_179
+#  undef XLAT_VAL_179
+#  undef XLAT_STR_180
+#  undef XLAT_VAL_180
+#  undef XLAT_STR_181
+#  undef XLAT_VAL_181
+#  undef XLAT_STR_182
+#  undef XLAT_VAL_182
+#  undef XLAT_STR_183
+#  undef XLAT_VAL_183
+#  undef XLAT_STR_184
+#  undef XLAT_VAL_184
+#  undef XLAT_STR_185
+#  undef XLAT_VAL_185
+#  undef XLAT_STR_186
+#  undef XLAT_VAL_186
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/elf_em.in b/xlat/elf_em.in
new file mode 100644 (file)
index 0000000..9ffbcd6
--- /dev/null
@@ -0,0 +1,202 @@
+#sorted
+/* General source: include/uapi/linux/elf-em.h */
+/* See also https://www.sco.com/developers/gabi/latest/ch4.eheader.html */
+EM_NONE                        0
+EM_M32                 1 /* AT&T WE 32100 */
+EM_SPARC               2 /* SPARC */
+EM_386                 3 /* Intel 80386 */
+EM_68K                 4 /* Motorola 68000 */
+EM_88K                 5 /* Motorola 88000 */
+EM_486                 6 /* "Perhaps disused" */
+/* EM_IAMCU            6 - Intel MCU */
+EM_860                 7 /* Intel 80860 */
+EM_MIPS                        8 /* MIPS I, MIPS R3000 (officially, big-endian only) */
+EM_S370                        9 /* IBM System/370 Processor */
+EM_MIPS_RS3_LE         10 /* MIPS RS3000 Little-endian */
+/* EM_MIPS_RS4_BE      10 - MIPS R4000 big-endian */
+/* 11-14 reserved for future use */
+EM_PARISC              15 /* Hewlett-Packard PA-RISC */
+/* 16 reserved for future use */
+EM_VPP500              17 /* Fujitsu VPP500 */
+EM_SPARC32PLUS         18 /* Enhanced instruction seti SPARC, Sun's "v8plus" */
+EM_960                 19 /* Intel 80960 */
+EM_PPC                 20 /* PowerPC */
+EM_PPC64               21 /* 64-bit PowerPC */
+EM_S390                        22 /* IBM System/390 Processor */
+EM_SPU                 23 /* IBM Cell BE SPU/SPC */
+/* 24-35 reserved for future use */
+EM_V800                        36 /* NEC V800 */
+EM_FR20                        37 /* Fujitsu FR20 */
+EM_RH32                        38 /* TRW RH-32 */
+EM_RCE                 39 /* Motorola RCE */
+EM_ARM                 40 /* ARM 32-bit architecture */
+/* EM_ALPHA            41 - Digital Alpha */
+EM_SH                  42 /* Hitachi SH */
+EM_SPARCV9             43 /* SPARC Version 9 */
+EM_TRICORE             44 /* Siemens TriCore embedded processor */
+EM_ARC                 45 /* Argonaut RISC Core, Argonaut Technologies Inc. */
+EM_H8_300              46 /* Hitachi/Renesas H8/300 */
+EM_H8_300H             47 /* Hitachi H8/300H */
+EM_H8S                 48 /* Hitachi H8S */
+EM_H8_500              49 /* Hitachi H8/500 */
+EM_IA_64               50 /* Intel IA-64 processor architecture */
+EM_MIPS_X              51 /* Stanford MIPS-X */
+EM_COLDFIRE            52 /* Motorola ColdFire */
+EM_68HC12              53 /* Motorola M68HC12 */
+EM_MMA                 54 /* Fujitsu MMA Multimedia Accelerator */
+EM_PCP                 55 /* Siemens PCP */
+EM_NCPU                        56 /* Sony nCPU embedded RISC processor */
+EM_NDR1                        57 /* Denso NDR1 microprocessor */
+EM_STARCORE            58 /* Motorola Star*Core processor */
+EM_ME16                        59 /* Toyota ME16 processor */
+EM_ST100               60 /* STMicroelectronics ST100 processor */
+EM_TINYJ               61 /* Advanced Logic Corp. TinyJ embedded processor family */
+EM_X86_64              62 /* AMD x86-64 architecture */
+EM_PDSP                        63 /* Sony DSP Processor */
+EM_PDP10               64 /* Digital Equipment Corp. PDP-10 */
+EM_PDP11               65 /* Digital Equipment Corp. PDP-11 */
+EM_FX66                        66 /* Siemens FX66 microcontroller */
+EM_ST9PLUS             67 /* STMicroelectronics ST9+ 8/16 bit microcontroller */
+EM_ST7                 68 /* STMicroelectronics ST7 8-bit microcontroller */
+EM_68HC16              69 /* Motorola MC68HC16 Microcontroller */
+EM_68HC11              70 /* Motorola MC68HC11 Microcontroller */
+EM_68HC08              71 /* Motorola MC68HC08 Microcontroller */
+EM_68HC05              72 /* Motorola MC68HC05 Microcontroller */
+EM_SVX                 73 /* Silicon Graphics SVx */
+EM_ST19                        74 /* STMicroelectronics ST19 8-bit microcontroller */
+EM_VAX                 75 /* Digital VAX */
+EM_CRIS                        76 /* Axis Communications 32-bit embedded processor */
+EM_JAVELIN             77 /* Infineon Technologies 32-bit embedded processor */
+EM_FIREPATH            78 /* Element 14 64-bit DSP Processor */
+EM_ZSP                 79 /* LSI Logic 16-bit DSP Processor */
+EM_MMIX                        80 /* Donald Knuth's educational 64-bit processor */
+EM_HUANY               81 /* Harvard University machine-independent object files */
+EM_PRISM               82 /* SiTera Prism */
+EM_AVR                 83 /* Atmel AVR 8-bit microcontroller */
+EM_FR30                        84 /* Fujitsu FR30 */
+EM_D10V                        85 /* Mitsubishi D10V */
+EM_D30V                        86 /* Mitsubishi D30V */
+EM_V850                        87 /* NEC v850, removed in v4.6-rc1~95^2~36 */
+EM_M32R                        88 /* Mitsubishi M32R */
+EM_MN10300             89 /* Matsushita MN10300 */
+EM_MN10200             90 /* Matsushita MN10200 */
+EM_PJ                  91 /* picoJava */
+EM_OPENRISC            92 /* OpenRISC 32-bit embedded processor */
+EM_ARCOMPACT           93 /* ARCompact processor */
+EM_XTENSA              94 /* arch/xtensa/include/asm/elf.h; Tensilica Xtensa Architecture */
+EM_VIDEOCORE           95 /* Alphamosaic VideoCore processor */
+EM_TMM_GPP             96 /* Thompson Multimedia General Purpose Processor */
+EM_NS32K               97 /* National Semiconductor 32000 series */
+EM_TPC                 98 /* Tenor Network TPC processor */
+EM_SNP1K               99 /* Trebia SNP 1000 processor */
+EM_ST200               100 /* STMicroelectronics (www.st.com) ST200 microcontroller */
+EM_IP2K                        101 /* Ubicom IP2xxx microcontroller family */
+EM_MAX                 102 /* MAX Processor */
+EM_CR                  103 /* National Semiconductor CompactRISC microprocessor */
+EM_F2MC16              104 /* Fujitsu F2MC16 */
+EM_MSP430              105 /* Texas Instruments embedded microcontroller msp430 */
+EM_BLACKFIN            106 /* ADI Blackfin Processor */
+EM_SE_C33              107 /* S1C33 Family of Seiko Epson processors */
+EM_SEP                 108 /* Sharp embedded microprocessor */
+EM_ARCA                        109 /* Arca RISC Microprocessor */
+EM_UNICORE             110 /* UniCore-32 */
+EM_EXCESS              111 /* eXcess: 16/32/64-bit configurable embedded CPU */
+EM_DXP                 112 /* Icera Semiconductor Inc. Deep Execution Processor */
+EM_ALTERA_NIOS2                113 /* Altera Nios II soft-core processor */
+EM_CRX                 114 /* National Semiconductor CompactRISC CRX microprocessor */
+EM_XGATE               115 /* Motorola XGATE embedded processor */
+EM_C166                        116 /* Infineon C16x/XC16x processor */
+EM_M16C                        117 /* Renesas M16C series microprocessors */
+EM_DSPIC30F            118 /* Microchip Technology dsPIC30F Digital Signal Controller */
+EM_CE                  119 /* Freescale Communication Engine RISC core */
+EM_M32C                        120 /* Renesas M32C series microprocessors */
+/* 121-130 reserved for future use */
+EM_TSK3000             131 /* Altium TSK3000 core */
+EM_RS08                        132 /* Freescale RS08 embedded processor */
+EM_SHARC               133 /* Analog Devices SHARC family of 32-bit DSP processors */
+EM_ECOG2               134 /* Cyan Technology eCOG2 microprocessor */
+EM_SCORE7              135 /* Sunplus S+core7 RISC processor, arch/score/include/asm/elf.h; removed in v4.17-rc1~163^2~59 */
+EM_DSP24               136 /* New Japan Radio (NJR) 24-bit DSP Processor */
+EM_VIDEOCORE3          137 /* Broadcom VideoCore III processor */
+EM_LATTICEMICO32       138 /* RISC processor for Lattice FPGA architecture */
+EM_SE_C17              139 /* Seiko Epson C17 family */
+EM_TI_C6000            140 /* The Texas Instruments TMS320C6000 DSP family */
+EM_TI_C2000            141 /* The Texas Instruments TMS320C2000 DSP family */
+EM_TI_C5500            142 /* The Texas Instruments TMS320C55x DSP family */
+EM_TI_ARP32            143 /* Texas Instruments Application Specific RISC Processor, 32bit fetch */
+EM_TI_PRU              144 /* Texas Instruments Programmable Realtime Unit */
+/* 145-159 reserved for future use */
+EM_MMDSP_PLUS          160
+EM_CYPRESS_M8C         161 /* Cypress M8C microprocessor */
+EM_R32C                        162 /* Renesas R32C series microprocessors */
+EM_TRIMEDIA            163 /* NXP Semiconductors TriMedia architecture family */
+EM_HEXAGON             164 /* QUALCOMM Hexagon */
+EM_8051                        165 /* Intel 8051 and variants */
+EM_STXP7X              166 /* STMicroelectronics STxP7x family of configurable and extensible RISC processors */
+EM_NDS32               167 /* Andes Technology compact code size embedded RISC processor family */
+EM_ECOG1X              168 /* Cyan Technology eCOG1X family (synonym: EM_ECOG1) */
+EM_MAXQ30              169 /* Dallas Semiconductor MAXQ30 Core Micro-controllers */
+EM_XIMO16              170 /* New Japan Radio (NJR) 16-bit DSP Processor */
+EM_MANIK               171 /* M2000 Reconfigurable RISC Microprocessor */
+EM_CRAYNV2             172 /* Cray Inc. NV2 vector architecture */
+EM_RX                  173 /* Renesas RX family */
+EM_METAG               174 /* Imagination Technologies META processor architecture, arch/metag/include/asm/elf.h; removed in v4.17-rc1~163^2~63^2~10 */
+EM_MCST_ELBRUS         175 /* MCST Elbrus general purpose hardware architecture */
+EM_ECOG16              176 /* Cyan Technology eCOG16 family */
+EM_CR16                        177 /* National Semiconductor CompactRISC CR16 16-bit microprocessor */
+EM_ETPU                        178 /* Freescale Extended Time Processing Unit */
+EM_SLE9X               179 /* Infineon Technologies SLE9X core */
+EM_L10M                        180 /* Intel L10M/L1OM - Larrabee/Knights Ferry */
+EM_K10M                        181 /* Intel K10M/K1OM - Knights Korner */
+/* 182 reserved for future Intel use */
+EM_AARCH64             183
+/* 184 reserved for future ARM use */
+/* EM_AVR32            185 - Atmel Corporation 32-bit microprocessor family */
+EM_STM8                        186 /* STMicroeletronics STM8 8-bit microcontroller */
+EM_TILE64              187 /* Tilera TILE64 multicore architecture family */
+EM_TILEPRO             188 /* Tilera TILEPro multicore architecture family */
+EM_MICROBLAZE          189 /* Xilinx MicroBlaze 32-bit RISC soft processor core */
+EM_CUDA                        190 /* NVIDIA CUDA architecture */
+EM_TILEGX              191 /* Tilera TILE-Gx multicore architecture family */
+EM_CLOUDSHIELD         192 /* CloudShield architecture family */
+EM_COREA_1ST           193 /* KIPO-KAIST Core-A 1st generation processor family */
+EM_COREA_2ND           194 /* KIPO-KAIST Core-A 2nd generation processor family */
+EM_ARCV2               195 /* Synopsys ARCv2 Cores */
+EM_OPEN8               196 /* Open8 8-bit RISC soft processor core */
+EM_RL78                        197 /* Renesas RL78 family */
+EM_VIDEOCORE5          198 /* Broadcom VideoCore V processor */
+EM_78KOR               199 /* Renesas 78KOR family */
+EM_56800EX             200 /* Freescale 56800EX Digital Signal Controller (DSC) */
+EM_BA1                 201 /* Beyond BA1 CPU architecture */
+EM_BA2                 202 /* Beyond BA2 CPU architecture */
+EM_XCORE               203 /* XMOS xCORE processor family */
+EM_MCHP_PIC            204 /* Microchip 8-bit PIC(r) family */
+/* 205-209 reserved by Intel */
+EM_KM32                        210 /* KM211 KM32 32-bit processor */
+EM_KMX32               211 /* KM211 KMX32 32-bit processor */
+EM_KMX16               212 /* KM211 KMX16 16-bit processor */
+EM_KMX8                        213 /* KM211 KMX8 8-bit processor */
+EM_KVARC               214 /* KM211 KVARC processor */
+EM_CDP                 215 /* Paneve CDP architecture family */
+EM_COGE                        216 /* Cognitive Smart Memory Processor */
+EM_COOL                        217 /* Bluechip Systems CoolEngine */
+EM_NORC                        218 /* Nanoradio Optimized RISC */
+EM_CSR_KALIMBA         219 /* CSR Kalimba architecture family */
+EM_Z80                 220 /* Zilog Z80 */
+EM_VISIUM              221 /* Controls and Data Services VISIUMcore processor */
+EM_FT32                        222 /* FTDI Chip FT32 high performance 32-bit RISC architecture */
+EM_MOXIE               223 /* Moxie processor family */
+EM_AMDGPU              224 /* AMD GPU architecture */
+EM_RISCV               243 /* RISC-V */
+EM_BPF                 247 /* Linux BPF - in-kernel virtual machine */
+EM_CSKY                        252 /* C-SKY */
+EM_AVR32               0x18ad /* Atmel AVR32, removed in v4.12-rc1~159^2~5 */
+EM_FRV                 0x5441 /* Fujitsu FR-V */
+EM_OR32                        0x8472 /* arch/openrisc/include/uapi/asm/elf.h */
+EM_ALPHA               0x9026 /* "This is an interim value that we will use until the committee comes up with a final number."; see also 41 */
+EM_CYGNUS_V850         0x9080 /* Bogus old v850 magic number, used by old tools, removed in v4.6-rc1~95^2~36 */
+EM_CYGNUS_M32R         0x9041 /* Bogus old m32r magic number, used by old tools. */
+EM_S390_OLD            0xa390 /* This is the old interim value for S/390 architecture */
+EM_XTENSA_OLD          0xabc7 /* arch/xtensa/include/asm/elf.h */
+EM_MICROBLAZE_OLD      0xbaab /* arch/microblaze/include/uapi/asm/elf.h */
+EM_CYGNUS_MN10300      0xbeef /* Also Panasonic/MEI MN10300, AM33 */
index a3b7419b4311c3950a48bb48b1d443304a285d44..97ed17733f5d8631253ced4a6c3039c69064b9bd 100644 (file)
@@ -33,14 +33,52 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat epollctls[] = {
- XLAT(EPOLL_CTL_ADD),
- XLAT(EPOLL_CTL_DEL),
- XLAT(EPOLL_CTL_MOD),
- XLAT_END
+static const struct xlat_data epollctls_xdata[] = {
+ [EPOLL_CTL_ADD] = XLAT(EPOLL_CTL_ADD),
+ #define XLAT_VAL_0 ((unsigned) (EPOLL_CTL_ADD))
+ #define XLAT_STR_0 STRINGIFY(EPOLL_CTL_ADD)
+ [EPOLL_CTL_DEL] = XLAT(EPOLL_CTL_DEL),
+ #define XLAT_VAL_1 ((unsigned) (EPOLL_CTL_DEL))
+ #define XLAT_STR_1 STRINGIFY(EPOLL_CTL_DEL)
+ [EPOLL_CTL_MOD] = XLAT(EPOLL_CTL_MOD),
+ #define XLAT_VAL_2 ((unsigned) (EPOLL_CTL_MOD))
+ #define XLAT_STR_2 STRINGIFY(EPOLL_CTL_MOD)
 };
+static
+const struct xlat epollctls[1] = { {
+ .data = epollctls_xdata,
+ .size = ARRAY_SIZE(epollctls_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 86665f6896fa7cfe05281a1f55604ec94124d2e0..2955c3a0d9cec08fcb53d2363eae21d5771d8864 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 EPOLL_CTL_ADD 1
 EPOLL_CTL_DEL 2
 EPOLL_CTL_MOD 3
index 45d9cd9437214b696ccea2e55e40644334c83b95..bbb5796ce9990ab6ce1cb730cdaf99fba2156084 100644 (file)
@@ -124,27 +124,195 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat epollevents[] = {
+static const struct xlat_data epollevents_xdata[] = {
  XLAT(EPOLLIN),
+ #define XLAT_VAL_0 ((unsigned) (EPOLLIN))
+ #define XLAT_STR_0 STRINGIFY(EPOLLIN)
  XLAT(EPOLLPRI),
+ #define XLAT_VAL_1 ((unsigned) (EPOLLPRI))
+ #define XLAT_STR_1 STRINGIFY(EPOLLPRI)
  XLAT(EPOLLOUT),
+ #define XLAT_VAL_2 ((unsigned) (EPOLLOUT))
+ #define XLAT_STR_2 STRINGIFY(EPOLLOUT)
  XLAT(EPOLLERR),
+ #define XLAT_VAL_3 ((unsigned) (EPOLLERR))
+ #define XLAT_STR_3 STRINGIFY(EPOLLERR)
  XLAT(EPOLLHUP),
+ #define XLAT_VAL_4 ((unsigned) (EPOLLHUP))
+ #define XLAT_STR_4 STRINGIFY(EPOLLHUP)
  XLAT(EPOLLNVAL),
+ #define XLAT_VAL_5 ((unsigned) (EPOLLNVAL))
+ #define XLAT_STR_5 STRINGIFY(EPOLLNVAL)
  XLAT(EPOLLRDNORM),
+ #define XLAT_VAL_6 ((unsigned) (EPOLLRDNORM))
+ #define XLAT_STR_6 STRINGIFY(EPOLLRDNORM)
  XLAT(EPOLLRDBAND),
+ #define XLAT_VAL_7 ((unsigned) (EPOLLRDBAND))
+ #define XLAT_STR_7 STRINGIFY(EPOLLRDBAND)
  XLAT(EPOLLWRNORM),
+ #define XLAT_VAL_8 ((unsigned) (EPOLLWRNORM))
+ #define XLAT_STR_8 STRINGIFY(EPOLLWRNORM)
  XLAT(EPOLLWRBAND),
+ #define XLAT_VAL_9 ((unsigned) (EPOLLWRBAND))
+ #define XLAT_STR_9 STRINGIFY(EPOLLWRBAND)
  XLAT(EPOLLMSG),
+ #define XLAT_VAL_10 ((unsigned) (EPOLLMSG))
+ #define XLAT_STR_10 STRINGIFY(EPOLLMSG)
  XLAT(EPOLLRDHUP),
+ #define XLAT_VAL_11 ((unsigned) (EPOLLRDHUP))
+ #define XLAT_STR_11 STRINGIFY(EPOLLRDHUP)
  XLAT(EPOLLEXCLUSIVE),
+ #define XLAT_VAL_12 ((unsigned) (EPOLLEXCLUSIVE))
+ #define XLAT_STR_12 STRINGIFY(EPOLLEXCLUSIVE)
  XLAT(EPOLLWAKEUP),
+ #define XLAT_VAL_13 ((unsigned) (EPOLLWAKEUP))
+ #define XLAT_STR_13 STRINGIFY(EPOLLWAKEUP)
  XLAT(EPOLLONESHOT),
+ #define XLAT_VAL_14 ((unsigned) (EPOLLONESHOT))
+ #define XLAT_STR_14 STRINGIFY(EPOLLONESHOT)
  XLAT(EPOLLET),
- XLAT_END
+ #define XLAT_VAL_15 ((unsigned) (EPOLLET))
+ #define XLAT_STR_15 STRINGIFY(EPOLLET)
 };
+static
+const struct xlat epollevents[1] = { {
+ .data = epollevents_xdata,
+ .size = ARRAY_SIZE(epollevents_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index faf4b0ca5b133da2185e0b54013900b258dc03b9..f5a27ae43823a28f36442ffccb085e10e06dbfe9 100644 (file)
@@ -21,14 +21,32 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat epollflags[] = {
+static const struct xlat_data epollflags_xdata[] = {
 #if defined EPOLL_CLOEXEC || defined O_CLOEXEC
  XLAT(EPOLL_CLOEXEC),
+ #define XLAT_VAL_0 ((unsigned) (EPOLL_CLOEXEC))
+ #define XLAT_STR_0 STRINGIFY(EPOLL_CLOEXEC)
 #endif
- XLAT_END
 };
-
+static
+const struct xlat epollflags[1] = { {
+ .data = epollflags_xdata,
+ .size = ARRAY_SIZE(epollflags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 67c64cbef9010ef55cc1c06e9dbc0a21106c5ae0..6dd6310cadc0ab196340783b7dd9968ebed37dc8 100644 (file)
@@ -500,6 +500,20 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define ETH_P_TIPC 0x88CA
 #endif
+#if defined(ETH_P_LLDP) || (defined(HAVE_DECL_ETH_P_LLDP) && HAVE_DECL_ETH_P_LLDP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ETH_P_LLDP) == (0x88CC), "ETH_P_LLDP != 0x88CC");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ETH_P_LLDP 0x88CC
+#endif
+#if defined(ETH_P_MRP) || (defined(HAVE_DECL_ETH_P_MRP) && HAVE_DECL_ETH_P_MRP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ETH_P_MRP) == (0x88E3), "ETH_P_MRP != 0x88E3");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ETH_P_MRP 0x88E3
+#endif
 #if defined(ETH_P_MACSEC) || (defined(HAVE_DECL_ETH_P_MACSEC) && HAVE_DECL_ETH_P_MACSEC)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
 static_assert((ETH_P_MACSEC) == (0x88E5), "ETH_P_MACSEC != 0x88E5");
@@ -626,6 +640,13 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define ETH_P_EDSA 0xDADA
 #endif
+#if defined(ETH_P_DSA_8021Q) || (defined(HAVE_DECL_ETH_P_DSA_8021Q) && HAVE_DECL_ETH_P_DSA_8021Q)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ETH_P_DSA_8021Q) == (0xDADB), "ETH_P_DSA_8021Q != 0xDADB");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ETH_P_DSA_8021Q 0xDADB
+#endif
 #if defined(ETH_P_IFE) || (defined(HAVE_DECL_ETH_P_IFE) && HAVE_DECL_ETH_P_IFE)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
 static_assert((ETH_P_IFE) == (0xED3E), "ETH_P_IFE != 0xED3E");
@@ -645,102 +666,1052 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # ifndef IN_MPERS
 
-const struct xlat ethernet_protocols[] = {
-
+static const struct xlat_data ethernet_protocols_xdata[] = {
  XLAT(ETH_P_802_3),
+ #define XLAT_VAL_0 ((unsigned) (ETH_P_802_3))
+ #define XLAT_STR_0 STRINGIFY(ETH_P_802_3)
  XLAT(ETH_P_AX25),
+ #define XLAT_VAL_1 ((unsigned) (ETH_P_AX25))
+ #define XLAT_STR_1 STRINGIFY(ETH_P_AX25)
  XLAT(ETH_P_ALL),
+ #define XLAT_VAL_2 ((unsigned) (ETH_P_ALL))
+ #define XLAT_STR_2 STRINGIFY(ETH_P_ALL)
  XLAT(ETH_P_802_2),
+ #define XLAT_VAL_3 ((unsigned) (ETH_P_802_2))
+ #define XLAT_STR_3 STRINGIFY(ETH_P_802_2)
  XLAT(ETH_P_SNAP),
+ #define XLAT_VAL_4 ((unsigned) (ETH_P_SNAP))
+ #define XLAT_STR_4 STRINGIFY(ETH_P_SNAP)
  XLAT(ETH_P_DDCMP),
+ #define XLAT_VAL_5 ((unsigned) (ETH_P_DDCMP))
+ #define XLAT_STR_5 STRINGIFY(ETH_P_DDCMP)
  XLAT(ETH_P_WAN_PPP),
+ #define XLAT_VAL_6 ((unsigned) (ETH_P_WAN_PPP))
+ #define XLAT_STR_6 STRINGIFY(ETH_P_WAN_PPP)
  XLAT(ETH_P_PPP_MP),
+ #define XLAT_VAL_7 ((unsigned) (ETH_P_PPP_MP))
+ #define XLAT_STR_7 STRINGIFY(ETH_P_PPP_MP)
  XLAT(ETH_P_LOCALTALK),
+ #define XLAT_VAL_8 ((unsigned) (ETH_P_LOCALTALK))
+ #define XLAT_STR_8 STRINGIFY(ETH_P_LOCALTALK)
  XLAT(ETH_P_CAN),
+ #define XLAT_VAL_9 ((unsigned) (ETH_P_CAN))
+ #define XLAT_STR_9 STRINGIFY(ETH_P_CAN)
  XLAT(ETH_P_CANFD),
+ #define XLAT_VAL_10 ((unsigned) (ETH_P_CANFD))
+ #define XLAT_STR_10 STRINGIFY(ETH_P_CANFD)
  XLAT(ETH_P_PPPTALK),
+ #define XLAT_VAL_11 ((unsigned) (ETH_P_PPPTALK))
+ #define XLAT_STR_11 STRINGIFY(ETH_P_PPPTALK)
  XLAT(ETH_P_TR_802_2),
+ #define XLAT_VAL_12 ((unsigned) (ETH_P_TR_802_2))
+ #define XLAT_STR_12 STRINGIFY(ETH_P_TR_802_2)
  XLAT(ETH_P_MOBITEX),
+ #define XLAT_VAL_13 ((unsigned) (ETH_P_MOBITEX))
+ #define XLAT_STR_13 STRINGIFY(ETH_P_MOBITEX)
  XLAT(ETH_P_CONTROL),
+ #define XLAT_VAL_14 ((unsigned) (ETH_P_CONTROL))
+ #define XLAT_STR_14 STRINGIFY(ETH_P_CONTROL)
  XLAT(ETH_P_IRDA),
+ #define XLAT_VAL_15 ((unsigned) (ETH_P_IRDA))
+ #define XLAT_STR_15 STRINGIFY(ETH_P_IRDA)
  XLAT(ETH_P_ECONET),
+ #define XLAT_VAL_16 ((unsigned) (ETH_P_ECONET))
+ #define XLAT_STR_16 STRINGIFY(ETH_P_ECONET)
  XLAT(ETH_P_HDLC),
+ #define XLAT_VAL_17 ((unsigned) (ETH_P_HDLC))
+ #define XLAT_STR_17 STRINGIFY(ETH_P_HDLC)
  XLAT(ETH_P_ARCNET),
+ #define XLAT_VAL_18 ((unsigned) (ETH_P_ARCNET))
+ #define XLAT_STR_18 STRINGIFY(ETH_P_ARCNET)
  XLAT(ETH_P_DSA),
+ #define XLAT_VAL_19 ((unsigned) (ETH_P_DSA))
+ #define XLAT_STR_19 STRINGIFY(ETH_P_DSA)
  XLAT(ETH_P_TRAILER),
+ #define XLAT_VAL_20 ((unsigned) (ETH_P_TRAILER))
+ #define XLAT_STR_20 STRINGIFY(ETH_P_TRAILER)
  XLAT(ETH_P_LOOP),
+ #define XLAT_VAL_21 ((unsigned) (ETH_P_LOOP))
+ #define XLAT_STR_21 STRINGIFY(ETH_P_LOOP)
  XLAT(ETH_P_PHONET),
+ #define XLAT_VAL_22 ((unsigned) (ETH_P_PHONET))
+ #define XLAT_STR_22 STRINGIFY(ETH_P_PHONET)
  XLAT(ETH_P_IEEE802154),
+ #define XLAT_VAL_23 ((unsigned) (ETH_P_IEEE802154))
+ #define XLAT_STR_23 STRINGIFY(ETH_P_IEEE802154)
  XLAT(ETH_P_CAIF),
+ #define XLAT_VAL_24 ((unsigned) (ETH_P_CAIF))
+ #define XLAT_STR_24 STRINGIFY(ETH_P_CAIF)
  XLAT(ETH_P_XDSA),
+ #define XLAT_VAL_25 ((unsigned) (ETH_P_XDSA))
+ #define XLAT_STR_25 STRINGIFY(ETH_P_XDSA)
  XLAT(ETH_P_MAP),
+ #define XLAT_VAL_26 ((unsigned) (ETH_P_MAP))
+ #define XLAT_STR_26 STRINGIFY(ETH_P_MAP)
  XLAT(ETH_P_PUP),
+ #define XLAT_VAL_27 ((unsigned) (ETH_P_PUP))
+ #define XLAT_STR_27 STRINGIFY(ETH_P_PUP)
  XLAT(ETH_P_PUPAT),
+ #define XLAT_VAL_28 ((unsigned) (ETH_P_PUPAT))
+ #define XLAT_STR_28 STRINGIFY(ETH_P_PUPAT)
  XLAT(ETH_P_802_3_MIN),
+ #define XLAT_VAL_29 ((unsigned) (ETH_P_802_3_MIN))
+ #define XLAT_STR_29 STRINGIFY(ETH_P_802_3_MIN)
  XLAT(ETH_P_IP),
+ #define XLAT_VAL_30 ((unsigned) (ETH_P_IP))
+ #define XLAT_STR_30 STRINGIFY(ETH_P_IP)
  XLAT(ETH_P_X25),
+ #define XLAT_VAL_31 ((unsigned) (ETH_P_X25))
+ #define XLAT_STR_31 STRINGIFY(ETH_P_X25)
  XLAT(ETH_P_ARP),
+ #define XLAT_VAL_32 ((unsigned) (ETH_P_ARP))
+ #define XLAT_STR_32 STRINGIFY(ETH_P_ARP)
  XLAT(ETH_P_BPQ),
+ #define XLAT_VAL_33 ((unsigned) (ETH_P_BPQ))
+ #define XLAT_STR_33 STRINGIFY(ETH_P_BPQ)
  XLAT(ETH_P_IEEEPUP),
+ #define XLAT_VAL_34 ((unsigned) (ETH_P_IEEEPUP))
+ #define XLAT_STR_34 STRINGIFY(ETH_P_IEEEPUP)
  XLAT(ETH_P_IEEEPUPAT),
+ #define XLAT_VAL_35 ((unsigned) (ETH_P_IEEEPUPAT))
+ #define XLAT_STR_35 STRINGIFY(ETH_P_IEEEPUPAT)
  XLAT(ETH_P_ERSPAN2),
+ #define XLAT_VAL_36 ((unsigned) (ETH_P_ERSPAN2))
+ #define XLAT_STR_36 STRINGIFY(ETH_P_ERSPAN2)
  XLAT(ETH_P_TSN),
+ #define XLAT_VAL_37 ((unsigned) (ETH_P_TSN))
+ #define XLAT_STR_37 STRINGIFY(ETH_P_TSN)
  XLAT(ETH_P_BATMAN),
+ #define XLAT_VAL_38 ((unsigned) (ETH_P_BATMAN))
+ #define XLAT_STR_38 STRINGIFY(ETH_P_BATMAN)
  XLAT(ETH_P_DEC),
+ #define XLAT_VAL_39 ((unsigned) (ETH_P_DEC))
+ #define XLAT_STR_39 STRINGIFY(ETH_P_DEC)
  XLAT(ETH_P_DNA_DL),
+ #define XLAT_VAL_40 ((unsigned) (ETH_P_DNA_DL))
+ #define XLAT_STR_40 STRINGIFY(ETH_P_DNA_DL)
  XLAT(ETH_P_DNA_RC),
+ #define XLAT_VAL_41 ((unsigned) (ETH_P_DNA_RC))
+ #define XLAT_STR_41 STRINGIFY(ETH_P_DNA_RC)
  XLAT(ETH_P_DNA_RT),
+ #define XLAT_VAL_42 ((unsigned) (ETH_P_DNA_RT))
+ #define XLAT_STR_42 STRINGIFY(ETH_P_DNA_RT)
  XLAT(ETH_P_LAT),
+ #define XLAT_VAL_43 ((unsigned) (ETH_P_LAT))
+ #define XLAT_STR_43 STRINGIFY(ETH_P_LAT)
  XLAT(ETH_P_DIAG),
+ #define XLAT_VAL_44 ((unsigned) (ETH_P_DIAG))
+ #define XLAT_STR_44 STRINGIFY(ETH_P_DIAG)
  XLAT(ETH_P_CUST),
+ #define XLAT_VAL_45 ((unsigned) (ETH_P_CUST))
+ #define XLAT_STR_45 STRINGIFY(ETH_P_CUST)
  XLAT(ETH_P_SCA),
+ #define XLAT_VAL_46 ((unsigned) (ETH_P_SCA))
+ #define XLAT_STR_46 STRINGIFY(ETH_P_SCA)
  XLAT(ETH_P_TEB),
+ #define XLAT_VAL_47 ((unsigned) (ETH_P_TEB))
+ #define XLAT_STR_47 STRINGIFY(ETH_P_TEB)
  XLAT(ETH_P_RARP),
+ #define XLAT_VAL_48 ((unsigned) (ETH_P_RARP))
+ #define XLAT_STR_48 STRINGIFY(ETH_P_RARP)
  XLAT(ETH_P_ATALK),
+ #define XLAT_VAL_49 ((unsigned) (ETH_P_ATALK))
+ #define XLAT_STR_49 STRINGIFY(ETH_P_ATALK)
  XLAT(ETH_P_AARP),
+ #define XLAT_VAL_50 ((unsigned) (ETH_P_AARP))
+ #define XLAT_STR_50 STRINGIFY(ETH_P_AARP)
  XLAT(ETH_P_8021Q),
+ #define XLAT_VAL_51 ((unsigned) (ETH_P_8021Q))
+ #define XLAT_STR_51 STRINGIFY(ETH_P_8021Q)
  XLAT(ETH_P_IPX),
+ #define XLAT_VAL_52 ((unsigned) (ETH_P_IPX))
+ #define XLAT_STR_52 STRINGIFY(ETH_P_IPX)
  XLAT(ETH_P_IPV6),
+ #define XLAT_VAL_53 ((unsigned) (ETH_P_IPV6))
+ #define XLAT_STR_53 STRINGIFY(ETH_P_IPV6)
  XLAT(ETH_P_PAUSE),
+ #define XLAT_VAL_54 ((unsigned) (ETH_P_PAUSE))
+ #define XLAT_STR_54 STRINGIFY(ETH_P_PAUSE)
  XLAT(ETH_P_SLOW),
+ #define XLAT_VAL_55 ((unsigned) (ETH_P_SLOW))
+ #define XLAT_STR_55 STRINGIFY(ETH_P_SLOW)
  XLAT(ETH_P_WCCP),
+ #define XLAT_VAL_56 ((unsigned) (ETH_P_WCCP))
+ #define XLAT_STR_56 STRINGIFY(ETH_P_WCCP)
  XLAT(ETH_P_MPLS_UC),
+ #define XLAT_VAL_57 ((unsigned) (ETH_P_MPLS_UC))
+ #define XLAT_STR_57 STRINGIFY(ETH_P_MPLS_UC)
  XLAT(ETH_P_MPLS_MC),
+ #define XLAT_VAL_58 ((unsigned) (ETH_P_MPLS_MC))
+ #define XLAT_STR_58 STRINGIFY(ETH_P_MPLS_MC)
  XLAT(ETH_P_ATMMPOA),
+ #define XLAT_VAL_59 ((unsigned) (ETH_P_ATMMPOA))
+ #define XLAT_STR_59 STRINGIFY(ETH_P_ATMMPOA)
  XLAT(ETH_P_PPP_DISC),
+ #define XLAT_VAL_60 ((unsigned) (ETH_P_PPP_DISC))
+ #define XLAT_STR_60 STRINGIFY(ETH_P_PPP_DISC)
  XLAT(ETH_P_PPP_SES),
+ #define XLAT_VAL_61 ((unsigned) (ETH_P_PPP_SES))
+ #define XLAT_STR_61 STRINGIFY(ETH_P_PPP_SES)
  XLAT(ETH_P_LINK_CTL),
+ #define XLAT_VAL_62 ((unsigned) (ETH_P_LINK_CTL))
+ #define XLAT_STR_62 STRINGIFY(ETH_P_LINK_CTL)
  XLAT(ETH_P_ATMFATE),
+ #define XLAT_VAL_63 ((unsigned) (ETH_P_ATMFATE))
+ #define XLAT_STR_63 STRINGIFY(ETH_P_ATMFATE)
  XLAT(ETH_P_PAE),
+ #define XLAT_VAL_64 ((unsigned) (ETH_P_PAE))
+ #define XLAT_STR_64 STRINGIFY(ETH_P_PAE)
  XLAT(ETH_P_AOE),
+ #define XLAT_VAL_65 ((unsigned) (ETH_P_AOE))
+ #define XLAT_STR_65 STRINGIFY(ETH_P_AOE)
  XLAT(ETH_P_8021AD),
+ #define XLAT_VAL_66 ((unsigned) (ETH_P_8021AD))
+ #define XLAT_STR_66 STRINGIFY(ETH_P_8021AD)
  XLAT(ETH_P_802_EX1),
+ #define XLAT_VAL_67 ((unsigned) (ETH_P_802_EX1))
+ #define XLAT_STR_67 STRINGIFY(ETH_P_802_EX1)
  XLAT(ETH_P_ERSPAN),
+ #define XLAT_VAL_68 ((unsigned) (ETH_P_ERSPAN))
+ #define XLAT_STR_68 STRINGIFY(ETH_P_ERSPAN)
  XLAT(ETH_P_PREAUTH),
+ #define XLAT_VAL_69 ((unsigned) (ETH_P_PREAUTH))
+ #define XLAT_STR_69 STRINGIFY(ETH_P_PREAUTH)
  XLAT(ETH_P_TIPC),
+ #define XLAT_VAL_70 ((unsigned) (ETH_P_TIPC))
+ #define XLAT_STR_70 STRINGIFY(ETH_P_TIPC)
+ XLAT(ETH_P_LLDP),
+ #define XLAT_VAL_71 ((unsigned) (ETH_P_LLDP))
+ #define XLAT_STR_71 STRINGIFY(ETH_P_LLDP)
+ XLAT(ETH_P_MRP),
+ #define XLAT_VAL_72 ((unsigned) (ETH_P_MRP))
+ #define XLAT_STR_72 STRINGIFY(ETH_P_MRP)
  XLAT(ETH_P_MACSEC),
+ #define XLAT_VAL_73 ((unsigned) (ETH_P_MACSEC))
+ #define XLAT_STR_73 STRINGIFY(ETH_P_MACSEC)
  XLAT(ETH_P_8021AH),
+ #define XLAT_VAL_74 ((unsigned) (ETH_P_8021AH))
+ #define XLAT_STR_74 STRINGIFY(ETH_P_8021AH)
  XLAT(ETH_P_MVRP),
+ #define XLAT_VAL_75 ((unsigned) (ETH_P_MVRP))
+ #define XLAT_STR_75 STRINGIFY(ETH_P_MVRP)
  XLAT(ETH_P_1588),
+ #define XLAT_VAL_76 ((unsigned) (ETH_P_1588))
+ #define XLAT_STR_76 STRINGIFY(ETH_P_1588)
  XLAT(ETH_P_NCSI),
+ #define XLAT_VAL_77 ((unsigned) (ETH_P_NCSI))
+ #define XLAT_STR_77 STRINGIFY(ETH_P_NCSI)
  XLAT(ETH_P_PRP),
+ #define XLAT_VAL_78 ((unsigned) (ETH_P_PRP))
+ #define XLAT_STR_78 STRINGIFY(ETH_P_PRP)
  XLAT(ETH_P_FCOE),
+ #define XLAT_VAL_79 ((unsigned) (ETH_P_FCOE))
+ #define XLAT_STR_79 STRINGIFY(ETH_P_FCOE)
  XLAT(ETH_P_TDLS),
+ #define XLAT_VAL_80 ((unsigned) (ETH_P_TDLS))
+ #define XLAT_STR_80 STRINGIFY(ETH_P_TDLS)
  XLAT(ETH_P_FIP),
+ #define XLAT_VAL_81 ((unsigned) (ETH_P_FIP))
+ #define XLAT_STR_81 STRINGIFY(ETH_P_FIP)
  XLAT(ETH_P_IBOE),
+ #define XLAT_VAL_82 ((unsigned) (ETH_P_IBOE))
+ #define XLAT_STR_82 STRINGIFY(ETH_P_IBOE)
  XLAT(ETH_P_80221),
+ #define XLAT_VAL_83 ((unsigned) (ETH_P_80221))
+ #define XLAT_STR_83 STRINGIFY(ETH_P_80221)
  XLAT(ETH_P_HSR),
+ #define XLAT_VAL_84 ((unsigned) (ETH_P_HSR))
+ #define XLAT_STR_84 STRINGIFY(ETH_P_HSR)
  XLAT(ETH_P_NSH),
+ #define XLAT_VAL_85 ((unsigned) (ETH_P_NSH))
+ #define XLAT_STR_85 STRINGIFY(ETH_P_NSH)
  XLAT(ETH_P_LOOPBACK),
+ #define XLAT_VAL_86 ((unsigned) (ETH_P_LOOPBACK))
+ #define XLAT_STR_86 STRINGIFY(ETH_P_LOOPBACK)
  XLAT(ETH_P_QINQ1),
+ #define XLAT_VAL_87 ((unsigned) (ETH_P_QINQ1))
+ #define XLAT_STR_87 STRINGIFY(ETH_P_QINQ1)
  XLAT(ETH_P_QINQ2),
+ #define XLAT_VAL_88 ((unsigned) (ETH_P_QINQ2))
+ #define XLAT_STR_88 STRINGIFY(ETH_P_QINQ2)
  XLAT(ETH_P_QINQ3),
+ #define XLAT_VAL_89 ((unsigned) (ETH_P_QINQ3))
+ #define XLAT_STR_89 STRINGIFY(ETH_P_QINQ3)
  XLAT(ETH_P_EDSA),
+ #define XLAT_VAL_90 ((unsigned) (ETH_P_EDSA))
+ #define XLAT_STR_90 STRINGIFY(ETH_P_EDSA)
+ XLAT(ETH_P_DSA_8021Q),
+ #define XLAT_VAL_91 ((unsigned) (ETH_P_DSA_8021Q))
+ #define XLAT_STR_91 STRINGIFY(ETH_P_DSA_8021Q)
  XLAT(ETH_P_IFE),
+ #define XLAT_VAL_92 ((unsigned) (ETH_P_IFE))
+ #define XLAT_STR_92 STRINGIFY(ETH_P_IFE)
  XLAT(ETH_P_AF_IUCV),
- XLAT_END
+ #define XLAT_VAL_93 ((unsigned) (ETH_P_AF_IUCV))
+ #define XLAT_STR_93 STRINGIFY(ETH_P_AF_IUCV)
 };
+const struct xlat ethernet_protocols[1] = { {
+ .data = ethernet_protocols_xdata,
+ .size = ARRAY_SIZE(ethernet_protocols_xdata),
+ .type = XT_SORTED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+#  ifdef XLAT_VAL_30
+  | XLAT_VAL_30
+#  endif
+#  ifdef XLAT_VAL_31
+  | XLAT_VAL_31
+#  endif
+#  ifdef XLAT_VAL_32
+  | XLAT_VAL_32
+#  endif
+#  ifdef XLAT_VAL_33
+  | XLAT_VAL_33
+#  endif
+#  ifdef XLAT_VAL_34
+  | XLAT_VAL_34
+#  endif
+#  ifdef XLAT_VAL_35
+  | XLAT_VAL_35
+#  endif
+#  ifdef XLAT_VAL_36
+  | XLAT_VAL_36
+#  endif
+#  ifdef XLAT_VAL_37
+  | XLAT_VAL_37
+#  endif
+#  ifdef XLAT_VAL_38
+  | XLAT_VAL_38
+#  endif
+#  ifdef XLAT_VAL_39
+  | XLAT_VAL_39
+#  endif
+#  ifdef XLAT_VAL_40
+  | XLAT_VAL_40
+#  endif
+#  ifdef XLAT_VAL_41
+  | XLAT_VAL_41
+#  endif
+#  ifdef XLAT_VAL_42
+  | XLAT_VAL_42
+#  endif
+#  ifdef XLAT_VAL_43
+  | XLAT_VAL_43
+#  endif
+#  ifdef XLAT_VAL_44
+  | XLAT_VAL_44
+#  endif
+#  ifdef XLAT_VAL_45
+  | XLAT_VAL_45
+#  endif
+#  ifdef XLAT_VAL_46
+  | XLAT_VAL_46
+#  endif
+#  ifdef XLAT_VAL_47
+  | XLAT_VAL_47
+#  endif
+#  ifdef XLAT_VAL_48
+  | XLAT_VAL_48
+#  endif
+#  ifdef XLAT_VAL_49
+  | XLAT_VAL_49
+#  endif
+#  ifdef XLAT_VAL_50
+  | XLAT_VAL_50
+#  endif
+#  ifdef XLAT_VAL_51
+  | XLAT_VAL_51
+#  endif
+#  ifdef XLAT_VAL_52
+  | XLAT_VAL_52
+#  endif
+#  ifdef XLAT_VAL_53
+  | XLAT_VAL_53
+#  endif
+#  ifdef XLAT_VAL_54
+  | XLAT_VAL_54
+#  endif
+#  ifdef XLAT_VAL_55
+  | XLAT_VAL_55
+#  endif
+#  ifdef XLAT_VAL_56
+  | XLAT_VAL_56
+#  endif
+#  ifdef XLAT_VAL_57
+  | XLAT_VAL_57
+#  endif
+#  ifdef XLAT_VAL_58
+  | XLAT_VAL_58
+#  endif
+#  ifdef XLAT_VAL_59
+  | XLAT_VAL_59
+#  endif
+#  ifdef XLAT_VAL_60
+  | XLAT_VAL_60
+#  endif
+#  ifdef XLAT_VAL_61
+  | XLAT_VAL_61
+#  endif
+#  ifdef XLAT_VAL_62
+  | XLAT_VAL_62
+#  endif
+#  ifdef XLAT_VAL_63
+  | XLAT_VAL_63
+#  endif
+#  ifdef XLAT_VAL_64
+  | XLAT_VAL_64
+#  endif
+#  ifdef XLAT_VAL_65
+  | XLAT_VAL_65
+#  endif
+#  ifdef XLAT_VAL_66
+  | XLAT_VAL_66
+#  endif
+#  ifdef XLAT_VAL_67
+  | XLAT_VAL_67
+#  endif
+#  ifdef XLAT_VAL_68
+  | XLAT_VAL_68
+#  endif
+#  ifdef XLAT_VAL_69
+  | XLAT_VAL_69
+#  endif
+#  ifdef XLAT_VAL_70
+  | XLAT_VAL_70
+#  endif
+#  ifdef XLAT_VAL_71
+  | XLAT_VAL_71
+#  endif
+#  ifdef XLAT_VAL_72
+  | XLAT_VAL_72
+#  endif
+#  ifdef XLAT_VAL_73
+  | XLAT_VAL_73
+#  endif
+#  ifdef XLAT_VAL_74
+  | XLAT_VAL_74
+#  endif
+#  ifdef XLAT_VAL_75
+  | XLAT_VAL_75
+#  endif
+#  ifdef XLAT_VAL_76
+  | XLAT_VAL_76
+#  endif
+#  ifdef XLAT_VAL_77
+  | XLAT_VAL_77
+#  endif
+#  ifdef XLAT_VAL_78
+  | XLAT_VAL_78
+#  endif
+#  ifdef XLAT_VAL_79
+  | XLAT_VAL_79
+#  endif
+#  ifdef XLAT_VAL_80
+  | XLAT_VAL_80
+#  endif
+#  ifdef XLAT_VAL_81
+  | XLAT_VAL_81
+#  endif
+#  ifdef XLAT_VAL_82
+  | XLAT_VAL_82
+#  endif
+#  ifdef XLAT_VAL_83
+  | XLAT_VAL_83
+#  endif
+#  ifdef XLAT_VAL_84
+  | XLAT_VAL_84
+#  endif
+#  ifdef XLAT_VAL_85
+  | XLAT_VAL_85
+#  endif
+#  ifdef XLAT_VAL_86
+  | XLAT_VAL_86
+#  endif
+#  ifdef XLAT_VAL_87
+  | XLAT_VAL_87
+#  endif
+#  ifdef XLAT_VAL_88
+  | XLAT_VAL_88
+#  endif
+#  ifdef XLAT_VAL_89
+  | XLAT_VAL_89
+#  endif
+#  ifdef XLAT_VAL_90
+  | XLAT_VAL_90
+#  endif
+#  ifdef XLAT_VAL_91
+  | XLAT_VAL_91
+#  endif
+#  ifdef XLAT_VAL_92
+  | XLAT_VAL_92
+#  endif
+#  ifdef XLAT_VAL_93
+  | XLAT_VAL_93
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+#  ifdef XLAT_STR_30
+  + sizeof(XLAT_STR_30)
+#  endif
+#  ifdef XLAT_STR_31
+  + sizeof(XLAT_STR_31)
+#  endif
+#  ifdef XLAT_STR_32
+  + sizeof(XLAT_STR_32)
+#  endif
+#  ifdef XLAT_STR_33
+  + sizeof(XLAT_STR_33)
+#  endif
+#  ifdef XLAT_STR_34
+  + sizeof(XLAT_STR_34)
+#  endif
+#  ifdef XLAT_STR_35
+  + sizeof(XLAT_STR_35)
+#  endif
+#  ifdef XLAT_STR_36
+  + sizeof(XLAT_STR_36)
+#  endif
+#  ifdef XLAT_STR_37
+  + sizeof(XLAT_STR_37)
+#  endif
+#  ifdef XLAT_STR_38
+  + sizeof(XLAT_STR_38)
+#  endif
+#  ifdef XLAT_STR_39
+  + sizeof(XLAT_STR_39)
+#  endif
+#  ifdef XLAT_STR_40
+  + sizeof(XLAT_STR_40)
+#  endif
+#  ifdef XLAT_STR_41
+  + sizeof(XLAT_STR_41)
+#  endif
+#  ifdef XLAT_STR_42
+  + sizeof(XLAT_STR_42)
+#  endif
+#  ifdef XLAT_STR_43
+  + sizeof(XLAT_STR_43)
+#  endif
+#  ifdef XLAT_STR_44
+  + sizeof(XLAT_STR_44)
+#  endif
+#  ifdef XLAT_STR_45
+  + sizeof(XLAT_STR_45)
+#  endif
+#  ifdef XLAT_STR_46
+  + sizeof(XLAT_STR_46)
+#  endif
+#  ifdef XLAT_STR_47
+  + sizeof(XLAT_STR_47)
+#  endif
+#  ifdef XLAT_STR_48
+  + sizeof(XLAT_STR_48)
+#  endif
+#  ifdef XLAT_STR_49
+  + sizeof(XLAT_STR_49)
+#  endif
+#  ifdef XLAT_STR_50
+  + sizeof(XLAT_STR_50)
+#  endif
+#  ifdef XLAT_STR_51
+  + sizeof(XLAT_STR_51)
+#  endif
+#  ifdef XLAT_STR_52
+  + sizeof(XLAT_STR_52)
+#  endif
+#  ifdef XLAT_STR_53
+  + sizeof(XLAT_STR_53)
+#  endif
+#  ifdef XLAT_STR_54
+  + sizeof(XLAT_STR_54)
+#  endif
+#  ifdef XLAT_STR_55
+  + sizeof(XLAT_STR_55)
+#  endif
+#  ifdef XLAT_STR_56
+  + sizeof(XLAT_STR_56)
+#  endif
+#  ifdef XLAT_STR_57
+  + sizeof(XLAT_STR_57)
+#  endif
+#  ifdef XLAT_STR_58
+  + sizeof(XLAT_STR_58)
+#  endif
+#  ifdef XLAT_STR_59
+  + sizeof(XLAT_STR_59)
+#  endif
+#  ifdef XLAT_STR_60
+  + sizeof(XLAT_STR_60)
+#  endif
+#  ifdef XLAT_STR_61
+  + sizeof(XLAT_STR_61)
+#  endif
+#  ifdef XLAT_STR_62
+  + sizeof(XLAT_STR_62)
+#  endif
+#  ifdef XLAT_STR_63
+  + sizeof(XLAT_STR_63)
+#  endif
+#  ifdef XLAT_STR_64
+  + sizeof(XLAT_STR_64)
+#  endif
+#  ifdef XLAT_STR_65
+  + sizeof(XLAT_STR_65)
+#  endif
+#  ifdef XLAT_STR_66
+  + sizeof(XLAT_STR_66)
+#  endif
+#  ifdef XLAT_STR_67
+  + sizeof(XLAT_STR_67)
+#  endif
+#  ifdef XLAT_STR_68
+  + sizeof(XLAT_STR_68)
+#  endif
+#  ifdef XLAT_STR_69
+  + sizeof(XLAT_STR_69)
+#  endif
+#  ifdef XLAT_STR_70
+  + sizeof(XLAT_STR_70)
+#  endif
+#  ifdef XLAT_STR_71
+  + sizeof(XLAT_STR_71)
+#  endif
+#  ifdef XLAT_STR_72
+  + sizeof(XLAT_STR_72)
+#  endif
+#  ifdef XLAT_STR_73
+  + sizeof(XLAT_STR_73)
+#  endif
+#  ifdef XLAT_STR_74
+  + sizeof(XLAT_STR_74)
+#  endif
+#  ifdef XLAT_STR_75
+  + sizeof(XLAT_STR_75)
+#  endif
+#  ifdef XLAT_STR_76
+  + sizeof(XLAT_STR_76)
+#  endif
+#  ifdef XLAT_STR_77
+  + sizeof(XLAT_STR_77)
+#  endif
+#  ifdef XLAT_STR_78
+  + sizeof(XLAT_STR_78)
+#  endif
+#  ifdef XLAT_STR_79
+  + sizeof(XLAT_STR_79)
+#  endif
+#  ifdef XLAT_STR_80
+  + sizeof(XLAT_STR_80)
+#  endif
+#  ifdef XLAT_STR_81
+  + sizeof(XLAT_STR_81)
+#  endif
+#  ifdef XLAT_STR_82
+  + sizeof(XLAT_STR_82)
+#  endif
+#  ifdef XLAT_STR_83
+  + sizeof(XLAT_STR_83)
+#  endif
+#  ifdef XLAT_STR_84
+  + sizeof(XLAT_STR_84)
+#  endif
+#  ifdef XLAT_STR_85
+  + sizeof(XLAT_STR_85)
+#  endif
+#  ifdef XLAT_STR_86
+  + sizeof(XLAT_STR_86)
+#  endif
+#  ifdef XLAT_STR_87
+  + sizeof(XLAT_STR_87)
+#  endif
+#  ifdef XLAT_STR_88
+  + sizeof(XLAT_STR_88)
+#  endif
+#  ifdef XLAT_STR_89
+  + sizeof(XLAT_STR_89)
+#  endif
+#  ifdef XLAT_STR_90
+  + sizeof(XLAT_STR_90)
+#  endif
+#  ifdef XLAT_STR_91
+  + sizeof(XLAT_STR_91)
+#  endif
+#  ifdef XLAT_STR_92
+  + sizeof(XLAT_STR_92)
+#  endif
+#  ifdef XLAT_STR_93
+  + sizeof(XLAT_STR_93)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
+#  undef XLAT_STR_30
+#  undef XLAT_VAL_30
+#  undef XLAT_STR_31
+#  undef XLAT_VAL_31
+#  undef XLAT_STR_32
+#  undef XLAT_VAL_32
+#  undef XLAT_STR_33
+#  undef XLAT_VAL_33
+#  undef XLAT_STR_34
+#  undef XLAT_VAL_34
+#  undef XLAT_STR_35
+#  undef XLAT_VAL_35
+#  undef XLAT_STR_36
+#  undef XLAT_VAL_36
+#  undef XLAT_STR_37
+#  undef XLAT_VAL_37
+#  undef XLAT_STR_38
+#  undef XLAT_VAL_38
+#  undef XLAT_STR_39
+#  undef XLAT_VAL_39
+#  undef XLAT_STR_40
+#  undef XLAT_VAL_40
+#  undef XLAT_STR_41
+#  undef XLAT_VAL_41
+#  undef XLAT_STR_42
+#  undef XLAT_VAL_42
+#  undef XLAT_STR_43
+#  undef XLAT_VAL_43
+#  undef XLAT_STR_44
+#  undef XLAT_VAL_44
+#  undef XLAT_STR_45
+#  undef XLAT_VAL_45
+#  undef XLAT_STR_46
+#  undef XLAT_VAL_46
+#  undef XLAT_STR_47
+#  undef XLAT_VAL_47
+#  undef XLAT_STR_48
+#  undef XLAT_VAL_48
+#  undef XLAT_STR_49
+#  undef XLAT_VAL_49
+#  undef XLAT_STR_50
+#  undef XLAT_VAL_50
+#  undef XLAT_STR_51
+#  undef XLAT_VAL_51
+#  undef XLAT_STR_52
+#  undef XLAT_VAL_52
+#  undef XLAT_STR_53
+#  undef XLAT_VAL_53
+#  undef XLAT_STR_54
+#  undef XLAT_VAL_54
+#  undef XLAT_STR_55
+#  undef XLAT_VAL_55
+#  undef XLAT_STR_56
+#  undef XLAT_VAL_56
+#  undef XLAT_STR_57
+#  undef XLAT_VAL_57
+#  undef XLAT_STR_58
+#  undef XLAT_VAL_58
+#  undef XLAT_STR_59
+#  undef XLAT_VAL_59
+#  undef XLAT_STR_60
+#  undef XLAT_VAL_60
+#  undef XLAT_STR_61
+#  undef XLAT_VAL_61
+#  undef XLAT_STR_62
+#  undef XLAT_VAL_62
+#  undef XLAT_STR_63
+#  undef XLAT_VAL_63
+#  undef XLAT_STR_64
+#  undef XLAT_VAL_64
+#  undef XLAT_STR_65
+#  undef XLAT_VAL_65
+#  undef XLAT_STR_66
+#  undef XLAT_VAL_66
+#  undef XLAT_STR_67
+#  undef XLAT_VAL_67
+#  undef XLAT_STR_68
+#  undef XLAT_VAL_68
+#  undef XLAT_STR_69
+#  undef XLAT_VAL_69
+#  undef XLAT_STR_70
+#  undef XLAT_VAL_70
+#  undef XLAT_STR_71
+#  undef XLAT_VAL_71
+#  undef XLAT_STR_72
+#  undef XLAT_VAL_72
+#  undef XLAT_STR_73
+#  undef XLAT_VAL_73
+#  undef XLAT_STR_74
+#  undef XLAT_VAL_74
+#  undef XLAT_STR_75
+#  undef XLAT_VAL_75
+#  undef XLAT_STR_76
+#  undef XLAT_VAL_76
+#  undef XLAT_STR_77
+#  undef XLAT_VAL_77
+#  undef XLAT_STR_78
+#  undef XLAT_VAL_78
+#  undef XLAT_STR_79
+#  undef XLAT_VAL_79
+#  undef XLAT_STR_80
+#  undef XLAT_VAL_80
+#  undef XLAT_STR_81
+#  undef XLAT_VAL_81
+#  undef XLAT_STR_82
+#  undef XLAT_VAL_82
+#  undef XLAT_STR_83
+#  undef XLAT_VAL_83
+#  undef XLAT_STR_84
+#  undef XLAT_VAL_84
+#  undef XLAT_STR_85
+#  undef XLAT_VAL_85
+#  undef XLAT_STR_86
+#  undef XLAT_VAL_86
+#  undef XLAT_STR_87
+#  undef XLAT_VAL_87
+#  undef XLAT_STR_88
+#  undef XLAT_VAL_88
+#  undef XLAT_STR_89
+#  undef XLAT_VAL_89
+#  undef XLAT_STR_90
+#  undef XLAT_VAL_90
+#  undef XLAT_STR_91
+#  undef XLAT_VAL_91
+#  undef XLAT_STR_92
+#  undef XLAT_VAL_92
+#  undef XLAT_STR_93
+#  undef XLAT_VAL_93
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 80c52a969a929d508fe36ebef4f2d967f7cbab00..6277b4f6a2654fbee95604155844b95ba4412358 100644 (file)
@@ -1,4 +1,4 @@
-/* sort -k2,2 */
+#sorted sort -k2,2
 ETH_P_802_3    0x0001          /* Dummy type for 802.3 frames  */
 ETH_P_AX25     0x0002          /* Dummy protocol id for AX.25  */
 ETH_P_ALL      0x0003          /* Every packet (be careful!!!) */
@@ -70,6 +70,8 @@ ETH_P_802_EX1 0x88B5          /* 802.1 Local Experimental 1.  */
 ETH_P_ERSPAN   0x88BE          /* ERSPAN type II               */
 ETH_P_PREAUTH  0x88C7          /* 802.11 Preauthentication     */
 ETH_P_TIPC     0x88CA          /* TIPC                         */
+ETH_P_LLDP     0x88CC          /* Link Layer Discovery Protocol */
+ETH_P_MRP      0x88E3          /* Media Redundancy Protocol    */
 ETH_P_MACSEC   0x88E5          /* 802.1ae MACsec */
 ETH_P_8021AH   0x88E7          /* 802.1ah Backbone Service Tag */
 ETH_P_MVRP     0x88F5          /* 802.1Q MVRP                  */
@@ -88,5 +90,6 @@ ETH_P_QINQ1   0x9100          /* deprecated QinQ VLAN [ NOT AN OFFICIALLY REGISTERED ID ]
 ETH_P_QINQ2    0x9200          /* deprecated QinQ VLAN [ NOT AN OFFICIALLY REGISTERED ID ] */
 ETH_P_QINQ3    0x9300          /* deprecated QinQ VLAN [ NOT AN OFFICIALLY REGISTERED ID ] */
 ETH_P_EDSA     0xDADA          /* Ethertype DSA [ NOT AN OFFICIALLY REGISTERED ID ] */
+ETH_P_DSA_8021Q        0xDADB          /* Fake VLAN Header for DSA [ NOT AN OFFICIALLY REGISTERED ID ] */
 ETH_P_IFE      0xED3E          /* ForCES inter-FE LFB type */
 ETH_P_AF_IUCV   0xFBFB         /* IBM af_iucv [ NOT AN OFFICIALLY REGISTERED ID ] */
index b9aafaf3f576113f700d51fce6b4606087f35fc1..baff3cc74554b5902b1f95be31aa8aa35fac92a1 100644 (file)
@@ -302,52 +302,480 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # ifndef IN_MPERS
 
-const struct xlat evdev_abs[] = {
+static const struct xlat_data evdev_abs_xdata[] = {
  [ABS_X] = XLAT(ABS_X),
+ #define XLAT_VAL_0 ((unsigned) (ABS_X))
+ #define XLAT_STR_0 STRINGIFY(ABS_X)
  [ABS_Y] = XLAT(ABS_Y),
+ #define XLAT_VAL_1 ((unsigned) (ABS_Y))
+ #define XLAT_STR_1 STRINGIFY(ABS_Y)
  [ABS_Z] = XLAT(ABS_Z),
+ #define XLAT_VAL_2 ((unsigned) (ABS_Z))
+ #define XLAT_STR_2 STRINGIFY(ABS_Z)
  [ABS_RX] = XLAT(ABS_RX),
+ #define XLAT_VAL_3 ((unsigned) (ABS_RX))
+ #define XLAT_STR_3 STRINGIFY(ABS_RX)
  [ABS_RY] = XLAT(ABS_RY),
+ #define XLAT_VAL_4 ((unsigned) (ABS_RY))
+ #define XLAT_STR_4 STRINGIFY(ABS_RY)
  [ABS_RZ] = XLAT(ABS_RZ),
+ #define XLAT_VAL_5 ((unsigned) (ABS_RZ))
+ #define XLAT_STR_5 STRINGIFY(ABS_RZ)
  [ABS_THROTTLE] = XLAT(ABS_THROTTLE),
+ #define XLAT_VAL_6 ((unsigned) (ABS_THROTTLE))
+ #define XLAT_STR_6 STRINGIFY(ABS_THROTTLE)
  [ABS_RUDDER] = XLAT(ABS_RUDDER),
+ #define XLAT_VAL_7 ((unsigned) (ABS_RUDDER))
+ #define XLAT_STR_7 STRINGIFY(ABS_RUDDER)
  [ABS_WHEEL] = XLAT(ABS_WHEEL),
+ #define XLAT_VAL_8 ((unsigned) (ABS_WHEEL))
+ #define XLAT_STR_8 STRINGIFY(ABS_WHEEL)
  [ABS_GAS] = XLAT(ABS_GAS),
+ #define XLAT_VAL_9 ((unsigned) (ABS_GAS))
+ #define XLAT_STR_9 STRINGIFY(ABS_GAS)
  [ABS_BRAKE] = XLAT(ABS_BRAKE),
+ #define XLAT_VAL_10 ((unsigned) (ABS_BRAKE))
+ #define XLAT_STR_10 STRINGIFY(ABS_BRAKE)
  [ABS_HAT0X] = XLAT(ABS_HAT0X),
+ #define XLAT_VAL_11 ((unsigned) (ABS_HAT0X))
+ #define XLAT_STR_11 STRINGIFY(ABS_HAT0X)
  [ABS_HAT0Y] = XLAT(ABS_HAT0Y),
+ #define XLAT_VAL_12 ((unsigned) (ABS_HAT0Y))
+ #define XLAT_STR_12 STRINGIFY(ABS_HAT0Y)
  [ABS_HAT1X] = XLAT(ABS_HAT1X),
+ #define XLAT_VAL_13 ((unsigned) (ABS_HAT1X))
+ #define XLAT_STR_13 STRINGIFY(ABS_HAT1X)
  [ABS_HAT1Y] = XLAT(ABS_HAT1Y),
+ #define XLAT_VAL_14 ((unsigned) (ABS_HAT1Y))
+ #define XLAT_STR_14 STRINGIFY(ABS_HAT1Y)
  [ABS_HAT2X] = XLAT(ABS_HAT2X),
+ #define XLAT_VAL_15 ((unsigned) (ABS_HAT2X))
+ #define XLAT_STR_15 STRINGIFY(ABS_HAT2X)
  [ABS_HAT2Y] = XLAT(ABS_HAT2Y),
+ #define XLAT_VAL_16 ((unsigned) (ABS_HAT2Y))
+ #define XLAT_STR_16 STRINGIFY(ABS_HAT2Y)
  [ABS_HAT3X] = XLAT(ABS_HAT3X),
+ #define XLAT_VAL_17 ((unsigned) (ABS_HAT3X))
+ #define XLAT_STR_17 STRINGIFY(ABS_HAT3X)
  [ABS_HAT3Y] = XLAT(ABS_HAT3Y),
+ #define XLAT_VAL_18 ((unsigned) (ABS_HAT3Y))
+ #define XLAT_STR_18 STRINGIFY(ABS_HAT3Y)
  [ABS_PRESSURE] = XLAT(ABS_PRESSURE),
+ #define XLAT_VAL_19 ((unsigned) (ABS_PRESSURE))
+ #define XLAT_STR_19 STRINGIFY(ABS_PRESSURE)
  [ABS_DISTANCE] = XLAT(ABS_DISTANCE),
+ #define XLAT_VAL_20 ((unsigned) (ABS_DISTANCE))
+ #define XLAT_STR_20 STRINGIFY(ABS_DISTANCE)
  [ABS_TILT_X] = XLAT(ABS_TILT_X),
+ #define XLAT_VAL_21 ((unsigned) (ABS_TILT_X))
+ #define XLAT_STR_21 STRINGIFY(ABS_TILT_X)
  [ABS_TILT_Y] = XLAT(ABS_TILT_Y),
+ #define XLAT_VAL_22 ((unsigned) (ABS_TILT_Y))
+ #define XLAT_STR_22 STRINGIFY(ABS_TILT_Y)
  [ABS_TOOL_WIDTH] = XLAT(ABS_TOOL_WIDTH),
+ #define XLAT_VAL_23 ((unsigned) (ABS_TOOL_WIDTH))
+ #define XLAT_STR_23 STRINGIFY(ABS_TOOL_WIDTH)
  [ABS_VOLUME] = XLAT(ABS_VOLUME),
+ #define XLAT_VAL_24 ((unsigned) (ABS_VOLUME))
+ #define XLAT_STR_24 STRINGIFY(ABS_VOLUME)
  [ABS_MISC] = XLAT(ABS_MISC),
+ #define XLAT_VAL_25 ((unsigned) (ABS_MISC))
+ #define XLAT_STR_25 STRINGIFY(ABS_MISC)
  [ABS_RESERVED] = XLAT(ABS_RESERVED),
+ #define XLAT_VAL_26 ((unsigned) (ABS_RESERVED))
+ #define XLAT_STR_26 STRINGIFY(ABS_RESERVED)
  [ABS_MT_SLOT] = XLAT(ABS_MT_SLOT),
+ #define XLAT_VAL_27 ((unsigned) (ABS_MT_SLOT))
+ #define XLAT_STR_27 STRINGIFY(ABS_MT_SLOT)
  [ABS_MT_TOUCH_MAJOR] = XLAT(ABS_MT_TOUCH_MAJOR),
+ #define XLAT_VAL_28 ((unsigned) (ABS_MT_TOUCH_MAJOR))
+ #define XLAT_STR_28 STRINGIFY(ABS_MT_TOUCH_MAJOR)
  [ABS_MT_TOUCH_MINOR] = XLAT(ABS_MT_TOUCH_MINOR),
+ #define XLAT_VAL_29 ((unsigned) (ABS_MT_TOUCH_MINOR))
+ #define XLAT_STR_29 STRINGIFY(ABS_MT_TOUCH_MINOR)
  [ABS_MT_WIDTH_MAJOR] = XLAT(ABS_MT_WIDTH_MAJOR),
+ #define XLAT_VAL_30 ((unsigned) (ABS_MT_WIDTH_MAJOR))
+ #define XLAT_STR_30 STRINGIFY(ABS_MT_WIDTH_MAJOR)
  [ABS_MT_WIDTH_MINOR] = XLAT(ABS_MT_WIDTH_MINOR),
+ #define XLAT_VAL_31 ((unsigned) (ABS_MT_WIDTH_MINOR))
+ #define XLAT_STR_31 STRINGIFY(ABS_MT_WIDTH_MINOR)
  [ABS_MT_ORIENTATION] = XLAT(ABS_MT_ORIENTATION),
+ #define XLAT_VAL_32 ((unsigned) (ABS_MT_ORIENTATION))
+ #define XLAT_STR_32 STRINGIFY(ABS_MT_ORIENTATION)
  [ABS_MT_POSITION_X] = XLAT(ABS_MT_POSITION_X),
+ #define XLAT_VAL_33 ((unsigned) (ABS_MT_POSITION_X))
+ #define XLAT_STR_33 STRINGIFY(ABS_MT_POSITION_X)
  [ABS_MT_POSITION_Y] = XLAT(ABS_MT_POSITION_Y),
+ #define XLAT_VAL_34 ((unsigned) (ABS_MT_POSITION_Y))
+ #define XLAT_STR_34 STRINGIFY(ABS_MT_POSITION_Y)
  [ABS_MT_TOOL_TYPE] = XLAT(ABS_MT_TOOL_TYPE),
+ #define XLAT_VAL_35 ((unsigned) (ABS_MT_TOOL_TYPE))
+ #define XLAT_STR_35 STRINGIFY(ABS_MT_TOOL_TYPE)
  [ABS_MT_BLOB_ID] = XLAT(ABS_MT_BLOB_ID),
+ #define XLAT_VAL_36 ((unsigned) (ABS_MT_BLOB_ID))
+ #define XLAT_STR_36 STRINGIFY(ABS_MT_BLOB_ID)
  [ABS_MT_TRACKING_ID] = XLAT(ABS_MT_TRACKING_ID),
+ #define XLAT_VAL_37 ((unsigned) (ABS_MT_TRACKING_ID))
+ #define XLAT_STR_37 STRINGIFY(ABS_MT_TRACKING_ID)
  [ABS_MT_PRESSURE] = XLAT(ABS_MT_PRESSURE),
+ #define XLAT_VAL_38 ((unsigned) (ABS_MT_PRESSURE))
+ #define XLAT_STR_38 STRINGIFY(ABS_MT_PRESSURE)
  [ABS_MT_DISTANCE] = XLAT(ABS_MT_DISTANCE),
+ #define XLAT_VAL_39 ((unsigned) (ABS_MT_DISTANCE))
+ #define XLAT_STR_39 STRINGIFY(ABS_MT_DISTANCE)
  [ABS_MT_TOOL_X] = XLAT(ABS_MT_TOOL_X),
+ #define XLAT_VAL_40 ((unsigned) (ABS_MT_TOOL_X))
+ #define XLAT_STR_40 STRINGIFY(ABS_MT_TOOL_X)
  [ABS_MT_TOOL_Y] = XLAT(ABS_MT_TOOL_Y),
- XLAT_END
+ #define XLAT_VAL_41 ((unsigned) (ABS_MT_TOOL_Y))
+ #define XLAT_STR_41 STRINGIFY(ABS_MT_TOOL_Y)
 };
+const struct xlat evdev_abs[1] = { {
+ .data = evdev_abs_xdata,
+ .size = ARRAY_SIZE(evdev_abs_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+#  ifdef XLAT_VAL_30
+  | XLAT_VAL_30
+#  endif
+#  ifdef XLAT_VAL_31
+  | XLAT_VAL_31
+#  endif
+#  ifdef XLAT_VAL_32
+  | XLAT_VAL_32
+#  endif
+#  ifdef XLAT_VAL_33
+  | XLAT_VAL_33
+#  endif
+#  ifdef XLAT_VAL_34
+  | XLAT_VAL_34
+#  endif
+#  ifdef XLAT_VAL_35
+  | XLAT_VAL_35
+#  endif
+#  ifdef XLAT_VAL_36
+  | XLAT_VAL_36
+#  endif
+#  ifdef XLAT_VAL_37
+  | XLAT_VAL_37
+#  endif
+#  ifdef XLAT_VAL_38
+  | XLAT_VAL_38
+#  endif
+#  ifdef XLAT_VAL_39
+  | XLAT_VAL_39
+#  endif
+#  ifdef XLAT_VAL_40
+  | XLAT_VAL_40
+#  endif
+#  ifdef XLAT_VAL_41
+  | XLAT_VAL_41
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+#  ifdef XLAT_STR_30
+  + sizeof(XLAT_STR_30)
+#  endif
+#  ifdef XLAT_STR_31
+  + sizeof(XLAT_STR_31)
+#  endif
+#  ifdef XLAT_STR_32
+  + sizeof(XLAT_STR_32)
+#  endif
+#  ifdef XLAT_STR_33
+  + sizeof(XLAT_STR_33)
+#  endif
+#  ifdef XLAT_STR_34
+  + sizeof(XLAT_STR_34)
+#  endif
+#  ifdef XLAT_STR_35
+  + sizeof(XLAT_STR_35)
+#  endif
+#  ifdef XLAT_STR_36
+  + sizeof(XLAT_STR_36)
+#  endif
+#  ifdef XLAT_STR_37
+  + sizeof(XLAT_STR_37)
+#  endif
+#  ifdef XLAT_STR_38
+  + sizeof(XLAT_STR_38)
+#  endif
+#  ifdef XLAT_STR_39
+  + sizeof(XLAT_STR_39)
+#  endif
+#  ifdef XLAT_STR_40
+  + sizeof(XLAT_STR_40)
+#  endif
+#  ifdef XLAT_STR_41
+  + sizeof(XLAT_STR_41)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
+#  undef XLAT_STR_30
+#  undef XLAT_VAL_30
+#  undef XLAT_STR_31
+#  undef XLAT_VAL_31
+#  undef XLAT_STR_32
+#  undef XLAT_VAL_32
+#  undef XLAT_STR_33
+#  undef XLAT_VAL_33
+#  undef XLAT_STR_34
+#  undef XLAT_VAL_34
+#  undef XLAT_STR_35
+#  undef XLAT_VAL_35
+#  undef XLAT_STR_36
+#  undef XLAT_VAL_36
+#  undef XLAT_STR_37
+#  undef XLAT_VAL_37
+#  undef XLAT_STR_38
+#  undef XLAT_VAL_38
+#  undef XLAT_STR_39
+#  undef XLAT_VAL_39
+#  undef XLAT_STR_40
+#  undef XLAT_VAL_40
+#  undef XLAT_STR_41
+#  undef XLAT_VAL_41
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index c6edd503e4e2121825e50362e04a24436a5cacd3..ba6b2a4e7d02e9be8012a2b6f6fbdcb8d83c9f94 100644 (file)
@@ -26,13 +26,41 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat evdev_autorepeat[] = {
+static const struct xlat_data evdev_autorepeat_xdata[] = {
  [REP_DELAY] = XLAT(REP_DELAY),
+ #define XLAT_VAL_0 ((unsigned) (REP_DELAY))
+ #define XLAT_STR_0 STRINGIFY(REP_DELAY)
  [REP_PERIOD] = XLAT(REP_PERIOD),
- XLAT_END
+ #define XLAT_VAL_1 ((unsigned) (REP_PERIOD))
+ #define XLAT_STR_1 STRINGIFY(REP_PERIOD)
 };
+static
+const struct xlat evdev_autorepeat[1] = { {
+ .data = evdev_autorepeat_xdata,
+ .size = ARRAY_SIZE(evdev_autorepeat_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index a112805d9453aa1c2a5fb203d3871795fd578c8f..c15140ad4132776d195121036284c26ab3d3b366 100644 (file)
@@ -92,22 +92,150 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # ifndef IN_MPERS
 
-const struct xlat evdev_ev[] = {
+static const struct xlat_data evdev_ev_xdata[] = {
  XLAT(EV_SYN),
+ #define XLAT_VAL_0 ((unsigned) (EV_SYN))
+ #define XLAT_STR_0 STRINGIFY(EV_SYN)
  XLAT(EV_KEY),
+ #define XLAT_VAL_1 ((unsigned) (EV_KEY))
+ #define XLAT_STR_1 STRINGIFY(EV_KEY)
  XLAT(EV_REL),
+ #define XLAT_VAL_2 ((unsigned) (EV_REL))
+ #define XLAT_STR_2 STRINGIFY(EV_REL)
  XLAT(EV_ABS),
+ #define XLAT_VAL_3 ((unsigned) (EV_ABS))
+ #define XLAT_STR_3 STRINGIFY(EV_ABS)
  XLAT(EV_MSC),
+ #define XLAT_VAL_4 ((unsigned) (EV_MSC))
+ #define XLAT_STR_4 STRINGIFY(EV_MSC)
  XLAT(EV_SW),
+ #define XLAT_VAL_5 ((unsigned) (EV_SW))
+ #define XLAT_STR_5 STRINGIFY(EV_SW)
  XLAT(EV_LED),
+ #define XLAT_VAL_6 ((unsigned) (EV_LED))
+ #define XLAT_STR_6 STRINGIFY(EV_LED)
  XLAT(EV_SND),
+ #define XLAT_VAL_7 ((unsigned) (EV_SND))
+ #define XLAT_STR_7 STRINGIFY(EV_SND)
  XLAT(EV_REP),
+ #define XLAT_VAL_8 ((unsigned) (EV_REP))
+ #define XLAT_STR_8 STRINGIFY(EV_REP)
  XLAT(EV_FF),
+ #define XLAT_VAL_9 ((unsigned) (EV_FF))
+ #define XLAT_STR_9 STRINGIFY(EV_FF)
  XLAT(EV_PWR),
+ #define XLAT_VAL_10 ((unsigned) (EV_PWR))
+ #define XLAT_STR_10 STRINGIFY(EV_PWR)
  XLAT(EV_FF_STATUS),
- XLAT_END
+ #define XLAT_VAL_11 ((unsigned) (EV_FF_STATUS))
+ #define XLAT_STR_11 STRINGIFY(EV_FF_STATUS)
 };
+const struct xlat evdev_ev[1] = { {
+ .data = evdev_ev_xdata,
+ .size = ARRAY_SIZE(evdev_ev_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 947d545d2452ea80a555d63bc2e671c8474c595d..4662db4c4bf6d9da9d87bfc133a7ba7895a30870 100644 (file)
@@ -26,13 +26,41 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat evdev_ff_status[] = {
+static const struct xlat_data evdev_ff_status_xdata[] = {
  [FF_STATUS_STOPPED] = XLAT(FF_STATUS_STOPPED),
+ #define XLAT_VAL_0 ((unsigned) (FF_STATUS_STOPPED))
+ #define XLAT_STR_0 STRINGIFY(FF_STATUS_STOPPED)
  [FF_STATUS_PLAYING] = XLAT(FF_STATUS_PLAYING),
- XLAT_END
+ #define XLAT_VAL_1 ((unsigned) (FF_STATUS_PLAYING))
+ #define XLAT_STR_1 STRINGIFY(FF_STATUS_PLAYING)
 };
+static
+const struct xlat evdev_ff_status[1] = { {
+ .data = evdev_ff_status_xdata,
+ .size = ARRAY_SIZE(evdev_ff_status_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 3bc6b042ea33e9d42e7878cc025edc4acc71e41d..0a8320faad244a3da8c05df46333403045417bd0 100644 (file)
@@ -124,28 +124,195 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat evdev_ff_types[] = {
-
+static const struct xlat_data evdev_ff_types_xdata[] = {
  XLAT(FF_RUMBLE),
+ #define XLAT_VAL_0 ((unsigned) (FF_RUMBLE))
+ #define XLAT_STR_0 STRINGIFY(FF_RUMBLE)
  XLAT(FF_PERIODIC),
+ #define XLAT_VAL_1 ((unsigned) (FF_PERIODIC))
+ #define XLAT_STR_1 STRINGIFY(FF_PERIODIC)
  XLAT(FF_CONSTANT),
+ #define XLAT_VAL_2 ((unsigned) (FF_CONSTANT))
+ #define XLAT_STR_2 STRINGIFY(FF_CONSTANT)
  XLAT(FF_SPRING),
+ #define XLAT_VAL_3 ((unsigned) (FF_SPRING))
+ #define XLAT_STR_3 STRINGIFY(FF_SPRING)
  XLAT(FF_FRICTION),
+ #define XLAT_VAL_4 ((unsigned) (FF_FRICTION))
+ #define XLAT_STR_4 STRINGIFY(FF_FRICTION)
  XLAT(FF_DAMPER),
+ #define XLAT_VAL_5 ((unsigned) (FF_DAMPER))
+ #define XLAT_STR_5 STRINGIFY(FF_DAMPER)
  XLAT(FF_INERTIA),
+ #define XLAT_VAL_6 ((unsigned) (FF_INERTIA))
+ #define XLAT_STR_6 STRINGIFY(FF_INERTIA)
  XLAT(FF_RAMP),
+ #define XLAT_VAL_7 ((unsigned) (FF_RAMP))
+ #define XLAT_STR_7 STRINGIFY(FF_RAMP)
  XLAT(FF_SQUARE),
+ #define XLAT_VAL_8 ((unsigned) (FF_SQUARE))
+ #define XLAT_STR_8 STRINGIFY(FF_SQUARE)
  XLAT(FF_TRIANGLE),
+ #define XLAT_VAL_9 ((unsigned) (FF_TRIANGLE))
+ #define XLAT_STR_9 STRINGIFY(FF_TRIANGLE)
  XLAT(FF_SINE),
+ #define XLAT_VAL_10 ((unsigned) (FF_SINE))
+ #define XLAT_STR_10 STRINGIFY(FF_SINE)
  XLAT(FF_SAW_UP),
+ #define XLAT_VAL_11 ((unsigned) (FF_SAW_UP))
+ #define XLAT_STR_11 STRINGIFY(FF_SAW_UP)
  XLAT(FF_SAW_DOWN),
+ #define XLAT_VAL_12 ((unsigned) (FF_SAW_DOWN))
+ #define XLAT_STR_12 STRINGIFY(FF_SAW_DOWN)
  XLAT(FF_CUSTOM),
+ #define XLAT_VAL_13 ((unsigned) (FF_CUSTOM))
+ #define XLAT_STR_13 STRINGIFY(FF_CUSTOM)
  XLAT(FF_GAIN),
+ #define XLAT_VAL_14 ((unsigned) (FF_GAIN))
+ #define XLAT_STR_14 STRINGIFY(FF_GAIN)
  XLAT(FF_AUTOCENTER),
- XLAT_END
+ #define XLAT_VAL_15 ((unsigned) (FF_AUTOCENTER))
+ #define XLAT_STR_15 STRINGIFY(FF_AUTOCENTER)
 };
+static
+const struct xlat evdev_ff_types[1] = { {
+ .data = evdev_ff_types_xdata,
+ .size = ARRAY_SIZE(evdev_ff_types_xdata),
+ .type = XT_SORTED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 72b87c5320abfba69322bbc22cf0b0a412051295..71dc538229fc71b9554b521d1687b5e788a3590a 100644 (file)
@@ -1,4 +1,4 @@
-/* sort -k2,2 */
+#sorted sort -k2,2
 FF_RUMBLE       0x50
 FF_PERIODIC     0x51
 FF_CONSTANT     0x52
diff --git a/xlat/evdev_ioctl_cmds.h b/xlat/evdev_ioctl_cmds.h
new file mode 100644 (file)
index 0000000..a5dbfa8
--- /dev/null
@@ -0,0 +1,302 @@
+/* Generated by ./xlat/gen.sh from ./xlat/evdev_ioctl_cmds.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(EVIOCGVERSION) || (defined(HAVE_DECL_EVIOCGVERSION) && HAVE_DECL_EVIOCGVERSION)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EVIOCGVERSION) == (_IOR('E', 0x01, int)), "EVIOCGVERSION != _IOR('E', 0x01, int)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EVIOCGVERSION _IOR('E', 0x01, int)
+#endif
+#if defined(EVIOCGID) || (defined(HAVE_DECL_EVIOCGID) && HAVE_DECL_EVIOCGID)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EVIOCGID) == (_IOR('E', 0x02, struct input_id)), "EVIOCGID != _IOR('E', 0x02, struct input_id)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EVIOCGID _IOR('E', 0x02, struct input_id)
+#endif
+#if defined(EVIOCGREP) || (defined(HAVE_DECL_EVIOCGREP) && HAVE_DECL_EVIOCGREP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EVIOCGREP) == (_IOR('E', 0x03, unsigned int[2])), "EVIOCGREP != _IOR('E', 0x03, unsigned int[2])");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EVIOCGREP _IOR('E', 0x03, unsigned int[2])
+#endif
+#if defined(EVIOCSREP) || (defined(HAVE_DECL_EVIOCSREP) && HAVE_DECL_EVIOCSREP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EVIOCSREP) == (_IOW('E', 0x03, unsigned int[2])), "EVIOCSREP != _IOW('E', 0x03, unsigned int[2])");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EVIOCSREP _IOW('E', 0x03, unsigned int[2])
+#endif
+#if defined(EVIOCGKEYCODE) || (defined(HAVE_DECL_EVIOCGKEYCODE) && HAVE_DECL_EVIOCGKEYCODE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EVIOCGKEYCODE) == (_IOR('E', 0x04, unsigned int[2])), "EVIOCGKEYCODE != _IOR('E', 0x04, unsigned int[2])");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EVIOCGKEYCODE _IOR('E', 0x04, unsigned int[2])
+#endif
+#if defined(EVIOCGKEYCODE_V2) || (defined(HAVE_DECL_EVIOCGKEYCODE_V2) && HAVE_DECL_EVIOCGKEYCODE_V2)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EVIOCGKEYCODE_V2) == (_IOR('E', 0x04, struct_input_keymap_entry)), "EVIOCGKEYCODE_V2 != _IOR('E', 0x04, struct_input_keymap_entry)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EVIOCGKEYCODE_V2 _IOR('E', 0x04, struct_input_keymap_entry)
+#endif
+#if defined(EVIOCSKEYCODE) || (defined(HAVE_DECL_EVIOCSKEYCODE) && HAVE_DECL_EVIOCSKEYCODE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EVIOCSKEYCODE) == (_IOW('E', 0x04, unsigned int[2])), "EVIOCSKEYCODE != _IOW('E', 0x04, unsigned int[2])");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EVIOCSKEYCODE _IOW('E', 0x04, unsigned int[2])
+#endif
+#if defined(EVIOCSKEYCODE_V2) || (defined(HAVE_DECL_EVIOCSKEYCODE_V2) && HAVE_DECL_EVIOCSKEYCODE_V2)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EVIOCSKEYCODE_V2) == (_IOW('E', 0x04, struct_input_keymap_entry)), "EVIOCSKEYCODE_V2 != _IOW('E', 0x04, struct_input_keymap_entry)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EVIOCSKEYCODE_V2 _IOW('E', 0x04, struct_input_keymap_entry)
+#endif
+#if defined(EVIOCRMFF) || (defined(HAVE_DECL_EVIOCRMFF) && HAVE_DECL_EVIOCRMFF)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EVIOCRMFF) == (_IOW('E', 0x81, int)), "EVIOCRMFF != _IOW('E', 0x81, int)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EVIOCRMFF _IOW('E', 0x81, int)
+#endif
+#if defined(EVIOCGEFFECTS) || (defined(HAVE_DECL_EVIOCGEFFECTS) && HAVE_DECL_EVIOCGEFFECTS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EVIOCGEFFECTS) == (_IOR('E', 0x84, int)), "EVIOCGEFFECTS != _IOR('E', 0x84, int)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EVIOCGEFFECTS _IOR('E', 0x84, int)
+#endif
+#if defined(EVIOCGRAB) || (defined(HAVE_DECL_EVIOCGRAB) && HAVE_DECL_EVIOCGRAB)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EVIOCGRAB) == (_IOW('E', 0x90, int)), "EVIOCGRAB != _IOW('E', 0x90, int)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EVIOCGRAB _IOW('E', 0x90, int)
+#endif
+#if defined(EVIOCREVOKE) || (defined(HAVE_DECL_EVIOCREVOKE) && HAVE_DECL_EVIOCREVOKE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EVIOCREVOKE) == (_IOW('E', 0x91, int)), "EVIOCREVOKE != _IOW('E', 0x91, int)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EVIOCREVOKE _IOW('E', 0x91, int)
+#endif
+#if defined(EVIOCGMASK) || (defined(HAVE_DECL_EVIOCGMASK) && HAVE_DECL_EVIOCGMASK)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EVIOCGMASK) == (_IOR('E', 0x92, struct_input_mask)), "EVIOCGMASK != _IOR('E', 0x92, struct_input_mask)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EVIOCGMASK _IOR('E', 0x92, struct_input_mask)
+#endif
+#if defined(EVIOCSMASK) || (defined(HAVE_DECL_EVIOCSMASK) && HAVE_DECL_EVIOCSMASK)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EVIOCSMASK) == (_IOW('E', 0x93, struct_input_mask)), "EVIOCSMASK != _IOW('E', 0x93, struct_input_mask)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EVIOCSMASK _IOW('E', 0x93, struct_input_mask)
+#endif
+#if defined(EVIOCSCLOCKID) || (defined(HAVE_DECL_EVIOCSCLOCKID) && HAVE_DECL_EVIOCSCLOCKID)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EVIOCSCLOCKID) == (_IOW('E', 0xa0, int)), "EVIOCSCLOCKID != _IOW('E', 0xa0, int)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EVIOCSCLOCKID _IOW('E', 0xa0, int)
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat evdev_ioctl_cmds in mpers mode
+
+# else
+
+static const struct xlat_data evdev_ioctl_cmds_xdata[] = {
+ XLAT(EVIOCGVERSION),
+ #define XLAT_VAL_0 ((unsigned) (EVIOCGVERSION))
+ #define XLAT_STR_0 STRINGIFY(EVIOCGVERSION)
+ XLAT(EVIOCGID),
+ #define XLAT_VAL_1 ((unsigned) (EVIOCGID))
+ #define XLAT_STR_1 STRINGIFY(EVIOCGID)
+ XLAT(EVIOCGREP),
+ #define XLAT_VAL_2 ((unsigned) (EVIOCGREP))
+ #define XLAT_STR_2 STRINGIFY(EVIOCGREP)
+ XLAT(EVIOCSREP),
+ #define XLAT_VAL_3 ((unsigned) (EVIOCSREP))
+ #define XLAT_STR_3 STRINGIFY(EVIOCSREP)
+ XLAT(EVIOCGKEYCODE),
+ #define XLAT_VAL_4 ((unsigned) (EVIOCGKEYCODE))
+ #define XLAT_STR_4 STRINGIFY(EVIOCGKEYCODE)
+ XLAT(EVIOCGKEYCODE_V2),
+ #define XLAT_VAL_5 ((unsigned) (EVIOCGKEYCODE_V2))
+ #define XLAT_STR_5 STRINGIFY(EVIOCGKEYCODE_V2)
+ XLAT(EVIOCSKEYCODE),
+ #define XLAT_VAL_6 ((unsigned) (EVIOCSKEYCODE))
+ #define XLAT_STR_6 STRINGIFY(EVIOCSKEYCODE)
+ XLAT(EVIOCSKEYCODE_V2),
+ #define XLAT_VAL_7 ((unsigned) (EVIOCSKEYCODE_V2))
+ #define XLAT_STR_7 STRINGIFY(EVIOCSKEYCODE_V2)
+
+
+ XLAT(EVIOCRMFF),
+ #define XLAT_VAL_8 ((unsigned) (EVIOCRMFF))
+ #define XLAT_STR_8 STRINGIFY(EVIOCRMFF)
+ XLAT(EVIOCGEFFECTS),
+ #define XLAT_VAL_9 ((unsigned) (EVIOCGEFFECTS))
+ #define XLAT_STR_9 STRINGIFY(EVIOCGEFFECTS)
+ XLAT(EVIOCGRAB),
+ #define XLAT_VAL_10 ((unsigned) (EVIOCGRAB))
+ #define XLAT_STR_10 STRINGIFY(EVIOCGRAB)
+ XLAT(EVIOCREVOKE),
+ #define XLAT_VAL_11 ((unsigned) (EVIOCREVOKE))
+ #define XLAT_STR_11 STRINGIFY(EVIOCREVOKE)
+ XLAT(EVIOCGMASK),
+ #define XLAT_VAL_12 ((unsigned) (EVIOCGMASK))
+ #define XLAT_STR_12 STRINGIFY(EVIOCGMASK)
+ XLAT(EVIOCSMASK),
+ #define XLAT_VAL_13 ((unsigned) (EVIOCSMASK))
+ #define XLAT_STR_13 STRINGIFY(EVIOCSMASK)
+ XLAT(EVIOCSCLOCKID),
+ #define XLAT_VAL_14 ((unsigned) (EVIOCSCLOCKID))
+ #define XLAT_STR_14 STRINGIFY(EVIOCSCLOCKID)
+};
+static
+const struct xlat evdev_ioctl_cmds[1] = { {
+ .data = evdev_ioctl_cmds_xdata,
+ .size = ARRAY_SIZE(evdev_ioctl_cmds_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/evdev_ioctl_cmds.in b/xlat/evdev_ioctl_cmds.in
new file mode 100644 (file)
index 0000000..29a5864
--- /dev/null
@@ -0,0 +1,17 @@
+EVIOCGVERSION          _IOR('E', 0x01, int)
+EVIOCGID               _IOR('E', 0x02, struct input_id)
+EVIOCGREP              _IOR('E', 0x03, unsigned int[2])
+EVIOCSREP              _IOW('E', 0x03, unsigned int[2])
+EVIOCGKEYCODE          _IOR('E', 0x04, unsigned int[2])
+EVIOCGKEYCODE_V2       _IOR('E', 0x04, struct_input_keymap_entry)
+EVIOCSKEYCODE          _IOW('E', 0x04, unsigned int[2])
+EVIOCSKEYCODE_V2       _IOW('E', 0x04, struct_input_keymap_entry)
+/* struct ff_effect is personality-dependent in size */
+/* EVIOCSFF            _IOW('E', 0x80, struct ff_effect) */
+EVIOCRMFF              _IOW('E', 0x81, int)
+EVIOCGEFFECTS          _IOR('E', 0x84, int)
+EVIOCGRAB              _IOW('E', 0x90, int)
+EVIOCREVOKE            _IOW('E', 0x91, int)
+EVIOCGMASK             _IOR('E', 0x92, struct_input_mask)
+EVIOCSMASK             _IOW('E', 0x93, struct_input_mask)
+EVIOCSCLOCKID          _IOW('E', 0xa0, int)
index 9fedfb929d4a4e96127453696f8ddbdb47733b1f..c63e500097c1a5c5f31f32153fc676ade59b07f4 100644 (file)
@@ -3353,6 +3353,13 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define KEY_ASSISTANT 0x247
 #endif
+#if defined(KEY_KBD_LAYOUT_NEXT) || (defined(HAVE_DECL_KEY_KBD_LAYOUT_NEXT) && HAVE_DECL_KEY_KBD_LAYOUT_NEXT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEY_KBD_LAYOUT_NEXT) == (0x248), "KEY_KBD_LAYOUT_NEXT != 0x248");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEY_KBD_LAYOUT_NEXT 0x248
+#endif
 #ifndef STRACE_WORKAROUND_FOR_KEY_BRIGHTNESS_MIN
 # define STRACE_WORKAROUND_FOR_KEY_BRIGHTNESS_MIN
 # undef KEY_BRIGHTNESS_MIN
@@ -3550,6 +3557,307 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define KEY_ONSCREEN_KEYBOARD 0x278
 #endif
+#if defined(KEY_PRIVACY_SCREEN_TOGGLE) || (defined(HAVE_DECL_KEY_PRIVACY_SCREEN_TOGGLE) && HAVE_DECL_KEY_PRIVACY_SCREEN_TOGGLE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEY_PRIVACY_SCREEN_TOGGLE) == (0x279), "KEY_PRIVACY_SCREEN_TOGGLE != 0x279");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEY_PRIVACY_SCREEN_TOGGLE 0x279
+#endif
+#if defined(KEY_SELECTIVE_SCREENSHOT) || (defined(HAVE_DECL_KEY_SELECTIVE_SCREENSHOT) && HAVE_DECL_KEY_SELECTIVE_SCREENSHOT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEY_SELECTIVE_SCREENSHOT) == (0x27a), "KEY_SELECTIVE_SCREENSHOT != 0x27a");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEY_SELECTIVE_SCREENSHOT 0x27a
+#endif
+#if defined(KEY_MACRO1) || (defined(HAVE_DECL_KEY_MACRO1) && HAVE_DECL_KEY_MACRO1)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEY_MACRO1) == (0x290), "KEY_MACRO1 != 0x290");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEY_MACRO1 0x290
+#endif
+#if defined(KEY_MACRO2) || (defined(HAVE_DECL_KEY_MACRO2) && HAVE_DECL_KEY_MACRO2)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEY_MACRO2) == (0x291), "KEY_MACRO2 != 0x291");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEY_MACRO2 0x291
+#endif
+#if defined(KEY_MACRO3) || (defined(HAVE_DECL_KEY_MACRO3) && HAVE_DECL_KEY_MACRO3)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEY_MACRO3) == (0x292), "KEY_MACRO3 != 0x292");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEY_MACRO3 0x292
+#endif
+#if defined(KEY_MACRO4) || (defined(HAVE_DECL_KEY_MACRO4) && HAVE_DECL_KEY_MACRO4)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEY_MACRO4) == (0x293), "KEY_MACRO4 != 0x293");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEY_MACRO4 0x293
+#endif
+#if defined(KEY_MACRO5) || (defined(HAVE_DECL_KEY_MACRO5) && HAVE_DECL_KEY_MACRO5)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEY_MACRO5) == (0x294), "KEY_MACRO5 != 0x294");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEY_MACRO5 0x294
+#endif
+#if defined(KEY_MACRO6) || (defined(HAVE_DECL_KEY_MACRO6) && HAVE_DECL_KEY_MACRO6)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEY_MACRO6) == (0x295), "KEY_MACRO6 != 0x295");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEY_MACRO6 0x295
+#endif
+#if defined(KEY_MACRO7) || (defined(HAVE_DECL_KEY_MACRO7) && HAVE_DECL_KEY_MACRO7)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEY_MACRO7) == (0x296), "KEY_MACRO7 != 0x296");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEY_MACRO7 0x296
+#endif
+#if defined(KEY_MACRO8) || (defined(HAVE_DECL_KEY_MACRO8) && HAVE_DECL_KEY_MACRO8)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEY_MACRO8) == (0x297), "KEY_MACRO8 != 0x297");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEY_MACRO8 0x297
+#endif
+#if defined(KEY_MACRO9) || (defined(HAVE_DECL_KEY_MACRO9) && HAVE_DECL_KEY_MACRO9)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEY_MACRO9) == (0x298), "KEY_MACRO9 != 0x298");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEY_MACRO9 0x298
+#endif
+#if defined(KEY_MACRO10) || (defined(HAVE_DECL_KEY_MACRO10) && HAVE_DECL_KEY_MACRO10)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEY_MACRO10) == (0x299), "KEY_MACRO10 != 0x299");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEY_MACRO10 0x299
+#endif
+#if defined(KEY_MACRO11) || (defined(HAVE_DECL_KEY_MACRO11) && HAVE_DECL_KEY_MACRO11)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEY_MACRO11) == (0x29a), "KEY_MACRO11 != 0x29a");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEY_MACRO11 0x29a
+#endif
+#if defined(KEY_MACRO12) || (defined(HAVE_DECL_KEY_MACRO12) && HAVE_DECL_KEY_MACRO12)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEY_MACRO12) == (0x29b), "KEY_MACRO12 != 0x29b");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEY_MACRO12 0x29b
+#endif
+#if defined(KEY_MACRO13) || (defined(HAVE_DECL_KEY_MACRO13) && HAVE_DECL_KEY_MACRO13)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEY_MACRO13) == (0x29c), "KEY_MACRO13 != 0x29c");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEY_MACRO13 0x29c
+#endif
+#if defined(KEY_MACRO14) || (defined(HAVE_DECL_KEY_MACRO14) && HAVE_DECL_KEY_MACRO14)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEY_MACRO14) == (0x29d), "KEY_MACRO14 != 0x29d");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEY_MACRO14 0x29d
+#endif
+#if defined(KEY_MACRO15) || (defined(HAVE_DECL_KEY_MACRO15) && HAVE_DECL_KEY_MACRO15)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEY_MACRO15) == (0x29e), "KEY_MACRO15 != 0x29e");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEY_MACRO15 0x29e
+#endif
+#if defined(KEY_MACRO16) || (defined(HAVE_DECL_KEY_MACRO16) && HAVE_DECL_KEY_MACRO16)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEY_MACRO16) == (0x29f), "KEY_MACRO16 != 0x29f");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEY_MACRO16 0x29f
+#endif
+#if defined(KEY_MACRO17) || (defined(HAVE_DECL_KEY_MACRO17) && HAVE_DECL_KEY_MACRO17)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEY_MACRO17) == (0x2a0), "KEY_MACRO17 != 0x2a0");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEY_MACRO17 0x2a0
+#endif
+#if defined(KEY_MACRO18) || (defined(HAVE_DECL_KEY_MACRO18) && HAVE_DECL_KEY_MACRO18)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEY_MACRO18) == (0x2a1), "KEY_MACRO18 != 0x2a1");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEY_MACRO18 0x2a1
+#endif
+#if defined(KEY_MACRO19) || (defined(HAVE_DECL_KEY_MACRO19) && HAVE_DECL_KEY_MACRO19)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEY_MACRO19) == (0x2a2), "KEY_MACRO19 != 0x2a2");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEY_MACRO19 0x2a2
+#endif
+#if defined(KEY_MACRO20) || (defined(HAVE_DECL_KEY_MACRO20) && HAVE_DECL_KEY_MACRO20)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEY_MACRO20) == (0x2a3), "KEY_MACRO20 != 0x2a3");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEY_MACRO20 0x2a3
+#endif
+#if defined(KEY_MACRO21) || (defined(HAVE_DECL_KEY_MACRO21) && HAVE_DECL_KEY_MACRO21)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEY_MACRO21) == (0x2a4), "KEY_MACRO21 != 0x2a4");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEY_MACRO21 0x2a4
+#endif
+#if defined(KEY_MACRO22) || (defined(HAVE_DECL_KEY_MACRO22) && HAVE_DECL_KEY_MACRO22)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEY_MACRO22) == (0x2a5), "KEY_MACRO22 != 0x2a5");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEY_MACRO22 0x2a5
+#endif
+#if defined(KEY_MACRO23) || (defined(HAVE_DECL_KEY_MACRO23) && HAVE_DECL_KEY_MACRO23)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEY_MACRO23) == (0x2a6), "KEY_MACRO23 != 0x2a6");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEY_MACRO23 0x2a6
+#endif
+#if defined(KEY_MACRO24) || (defined(HAVE_DECL_KEY_MACRO24) && HAVE_DECL_KEY_MACRO24)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEY_MACRO24) == (0x2a7), "KEY_MACRO24 != 0x2a7");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEY_MACRO24 0x2a7
+#endif
+#if defined(KEY_MACRO25) || (defined(HAVE_DECL_KEY_MACRO25) && HAVE_DECL_KEY_MACRO25)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEY_MACRO25) == (0x2a8), "KEY_MACRO25 != 0x2a8");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEY_MACRO25 0x2a8
+#endif
+#if defined(KEY_MACRO26) || (defined(HAVE_DECL_KEY_MACRO26) && HAVE_DECL_KEY_MACRO26)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEY_MACRO26) == (0x2a9), "KEY_MACRO26 != 0x2a9");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEY_MACRO26 0x2a9
+#endif
+#if defined(KEY_MACRO27) || (defined(HAVE_DECL_KEY_MACRO27) && HAVE_DECL_KEY_MACRO27)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEY_MACRO27) == (0x2aa), "KEY_MACRO27 != 0x2aa");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEY_MACRO27 0x2aa
+#endif
+#if defined(KEY_MACRO28) || (defined(HAVE_DECL_KEY_MACRO28) && HAVE_DECL_KEY_MACRO28)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEY_MACRO28) == (0x2ab), "KEY_MACRO28 != 0x2ab");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEY_MACRO28 0x2ab
+#endif
+#if defined(KEY_MACRO29) || (defined(HAVE_DECL_KEY_MACRO29) && HAVE_DECL_KEY_MACRO29)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEY_MACRO29) == (0x2ac), "KEY_MACRO29 != 0x2ac");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEY_MACRO29 0x2ac
+#endif
+#if defined(KEY_MACRO30) || (defined(HAVE_DECL_KEY_MACRO30) && HAVE_DECL_KEY_MACRO30)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEY_MACRO30) == (0x2ad), "KEY_MACRO30 != 0x2ad");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEY_MACRO30 0x2ad
+#endif
+#if defined(KEY_MACRO_RECORD_START) || (defined(HAVE_DECL_KEY_MACRO_RECORD_START) && HAVE_DECL_KEY_MACRO_RECORD_START)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEY_MACRO_RECORD_START) == (0x2b0), "KEY_MACRO_RECORD_START != 0x2b0");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEY_MACRO_RECORD_START 0x2b0
+#endif
+#if defined(KEY_MACRO_RECORD_STOP) || (defined(HAVE_DECL_KEY_MACRO_RECORD_STOP) && HAVE_DECL_KEY_MACRO_RECORD_STOP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEY_MACRO_RECORD_STOP) == (0x2b1), "KEY_MACRO_RECORD_STOP != 0x2b1");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEY_MACRO_RECORD_STOP 0x2b1
+#endif
+#if defined(KEY_MACRO_PRESET_CYCLE) || (defined(HAVE_DECL_KEY_MACRO_PRESET_CYCLE) && HAVE_DECL_KEY_MACRO_PRESET_CYCLE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEY_MACRO_PRESET_CYCLE) == (0x2b2), "KEY_MACRO_PRESET_CYCLE != 0x2b2");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEY_MACRO_PRESET_CYCLE 0x2b2
+#endif
+#if defined(KEY_MACRO_PRESET1) || (defined(HAVE_DECL_KEY_MACRO_PRESET1) && HAVE_DECL_KEY_MACRO_PRESET1)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEY_MACRO_PRESET1) == (0x2b3), "KEY_MACRO_PRESET1 != 0x2b3");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEY_MACRO_PRESET1 0x2b3
+#endif
+#if defined(KEY_MACRO_PRESET2) || (defined(HAVE_DECL_KEY_MACRO_PRESET2) && HAVE_DECL_KEY_MACRO_PRESET2)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEY_MACRO_PRESET2) == (0x2b4), "KEY_MACRO_PRESET2 != 0x2b4");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEY_MACRO_PRESET2 0x2b4
+#endif
+#if defined(KEY_MACRO_PRESET3) || (defined(HAVE_DECL_KEY_MACRO_PRESET3) && HAVE_DECL_KEY_MACRO_PRESET3)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEY_MACRO_PRESET3) == (0x2b5), "KEY_MACRO_PRESET3 != 0x2b5");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEY_MACRO_PRESET3 0x2b5
+#endif
+#if defined(KEY_KBD_LCD_MENU1) || (defined(HAVE_DECL_KEY_KBD_LCD_MENU1) && HAVE_DECL_KEY_KBD_LCD_MENU1)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEY_KBD_LCD_MENU1) == (0x2b8), "KEY_KBD_LCD_MENU1 != 0x2b8");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEY_KBD_LCD_MENU1 0x2b8
+#endif
+#if defined(KEY_KBD_LCD_MENU2) || (defined(HAVE_DECL_KEY_KBD_LCD_MENU2) && HAVE_DECL_KEY_KBD_LCD_MENU2)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEY_KBD_LCD_MENU2) == (0x2b9), "KEY_KBD_LCD_MENU2 != 0x2b9");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEY_KBD_LCD_MENU2 0x2b9
+#endif
+#if defined(KEY_KBD_LCD_MENU3) || (defined(HAVE_DECL_KEY_KBD_LCD_MENU3) && HAVE_DECL_KEY_KBD_LCD_MENU3)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEY_KBD_LCD_MENU3) == (0x2ba), "KEY_KBD_LCD_MENU3 != 0x2ba");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEY_KBD_LCD_MENU3 0x2ba
+#endif
+#if defined(KEY_KBD_LCD_MENU4) || (defined(HAVE_DECL_KEY_KBD_LCD_MENU4) && HAVE_DECL_KEY_KBD_LCD_MENU4)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEY_KBD_LCD_MENU4) == (0x2bb), "KEY_KBD_LCD_MENU4 != 0x2bb");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEY_KBD_LCD_MENU4 0x2bb
+#endif
+#if defined(KEY_KBD_LCD_MENU5) || (defined(HAVE_DECL_KEY_KBD_LCD_MENU5) && HAVE_DECL_KEY_KBD_LCD_MENU5)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEY_KBD_LCD_MENU5) == (0x2bc), "KEY_KBD_LCD_MENU5 != 0x2bc");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEY_KBD_LCD_MENU5 0x2bc
+#endif
 #if defined(BTN_TRIGGER_HAPPY1) || (defined(HAVE_DECL_BTN_TRIGGER_HAPPY1) && HAVE_DECL_BTN_TRIGGER_HAPPY1)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
 static_assert((BTN_TRIGGER_HAPPY1) == (0x2c0), "BTN_TRIGGER_HAPPY1 != 0x2c0");
@@ -3839,263 +4147,744 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat evdev_keycode[] = {
+static const struct xlat_data evdev_keycode_xdata[] = {
 
  [KEY_RESERVED] = XLAT(KEY_RESERVED),
+ #define XLAT_VAL_0 ((unsigned) (KEY_RESERVED))
+ #define XLAT_STR_0 STRINGIFY(KEY_RESERVED)
  [KEY_ESC] = XLAT(KEY_ESC),
+ #define XLAT_VAL_1 ((unsigned) (KEY_ESC))
+ #define XLAT_STR_1 STRINGIFY(KEY_ESC)
  [KEY_1] = XLAT(KEY_1),
+ #define XLAT_VAL_2 ((unsigned) (KEY_1))
+ #define XLAT_STR_2 STRINGIFY(KEY_1)
  [KEY_2] = XLAT(KEY_2),
+ #define XLAT_VAL_3 ((unsigned) (KEY_2))
+ #define XLAT_STR_3 STRINGIFY(KEY_2)
  [KEY_3] = XLAT(KEY_3),
+ #define XLAT_VAL_4 ((unsigned) (KEY_3))
+ #define XLAT_STR_4 STRINGIFY(KEY_3)
  [KEY_4] = XLAT(KEY_4),
+ #define XLAT_VAL_5 ((unsigned) (KEY_4))
+ #define XLAT_STR_5 STRINGIFY(KEY_4)
  [KEY_5] = XLAT(KEY_5),
+ #define XLAT_VAL_6 ((unsigned) (KEY_5))
+ #define XLAT_STR_6 STRINGIFY(KEY_5)
  [KEY_6] = XLAT(KEY_6),
+ #define XLAT_VAL_7 ((unsigned) (KEY_6))
+ #define XLAT_STR_7 STRINGIFY(KEY_6)
  [KEY_7] = XLAT(KEY_7),
+ #define XLAT_VAL_8 ((unsigned) (KEY_7))
+ #define XLAT_STR_8 STRINGIFY(KEY_7)
  [KEY_8] = XLAT(KEY_8),
+ #define XLAT_VAL_9 ((unsigned) (KEY_8))
+ #define XLAT_STR_9 STRINGIFY(KEY_8)
  [KEY_9] = XLAT(KEY_9),
+ #define XLAT_VAL_10 ((unsigned) (KEY_9))
+ #define XLAT_STR_10 STRINGIFY(KEY_9)
  [KEY_0] = XLAT(KEY_0),
+ #define XLAT_VAL_11 ((unsigned) (KEY_0))
+ #define XLAT_STR_11 STRINGIFY(KEY_0)
  [KEY_MINUS] = XLAT(KEY_MINUS),
+ #define XLAT_VAL_12 ((unsigned) (KEY_MINUS))
+ #define XLAT_STR_12 STRINGIFY(KEY_MINUS)
  [KEY_EQUAL] = XLAT(KEY_EQUAL),
+ #define XLAT_VAL_13 ((unsigned) (KEY_EQUAL))
+ #define XLAT_STR_13 STRINGIFY(KEY_EQUAL)
  [KEY_BACKSPACE] = XLAT(KEY_BACKSPACE),
+ #define XLAT_VAL_14 ((unsigned) (KEY_BACKSPACE))
+ #define XLAT_STR_14 STRINGIFY(KEY_BACKSPACE)
  [KEY_TAB] = XLAT(KEY_TAB),
+ #define XLAT_VAL_15 ((unsigned) (KEY_TAB))
+ #define XLAT_STR_15 STRINGIFY(KEY_TAB)
  [KEY_Q] = XLAT(KEY_Q),
+ #define XLAT_VAL_16 ((unsigned) (KEY_Q))
+ #define XLAT_STR_16 STRINGIFY(KEY_Q)
  [KEY_W] = XLAT(KEY_W),
+ #define XLAT_VAL_17 ((unsigned) (KEY_W))
+ #define XLAT_STR_17 STRINGIFY(KEY_W)
  [KEY_E] = XLAT(KEY_E),
+ #define XLAT_VAL_18 ((unsigned) (KEY_E))
+ #define XLAT_STR_18 STRINGIFY(KEY_E)
  [KEY_R] = XLAT(KEY_R),
+ #define XLAT_VAL_19 ((unsigned) (KEY_R))
+ #define XLAT_STR_19 STRINGIFY(KEY_R)
  [KEY_T] = XLAT(KEY_T),
+ #define XLAT_VAL_20 ((unsigned) (KEY_T))
+ #define XLAT_STR_20 STRINGIFY(KEY_T)
  [KEY_Y] = XLAT(KEY_Y),
+ #define XLAT_VAL_21 ((unsigned) (KEY_Y))
+ #define XLAT_STR_21 STRINGIFY(KEY_Y)
  [KEY_U] = XLAT(KEY_U),
+ #define XLAT_VAL_22 ((unsigned) (KEY_U))
+ #define XLAT_STR_22 STRINGIFY(KEY_U)
  [KEY_I] = XLAT(KEY_I),
+ #define XLAT_VAL_23 ((unsigned) (KEY_I))
+ #define XLAT_STR_23 STRINGIFY(KEY_I)
  [KEY_O] = XLAT(KEY_O),
+ #define XLAT_VAL_24 ((unsigned) (KEY_O))
+ #define XLAT_STR_24 STRINGIFY(KEY_O)
  [KEY_P] = XLAT(KEY_P),
+ #define XLAT_VAL_25 ((unsigned) (KEY_P))
+ #define XLAT_STR_25 STRINGIFY(KEY_P)
  [KEY_LEFTBRACE] = XLAT(KEY_LEFTBRACE),
+ #define XLAT_VAL_26 ((unsigned) (KEY_LEFTBRACE))
+ #define XLAT_STR_26 STRINGIFY(KEY_LEFTBRACE)
  [KEY_RIGHTBRACE] = XLAT(KEY_RIGHTBRACE),
+ #define XLAT_VAL_27 ((unsigned) (KEY_RIGHTBRACE))
+ #define XLAT_STR_27 STRINGIFY(KEY_RIGHTBRACE)
  [KEY_ENTER] = XLAT(KEY_ENTER),
+ #define XLAT_VAL_28 ((unsigned) (KEY_ENTER))
+ #define XLAT_STR_28 STRINGIFY(KEY_ENTER)
  [KEY_LEFTCTRL] = XLAT(KEY_LEFTCTRL),
+ #define XLAT_VAL_29 ((unsigned) (KEY_LEFTCTRL))
+ #define XLAT_STR_29 STRINGIFY(KEY_LEFTCTRL)
  [KEY_A] = XLAT(KEY_A),
+ #define XLAT_VAL_30 ((unsigned) (KEY_A))
+ #define XLAT_STR_30 STRINGIFY(KEY_A)
  [KEY_S] = XLAT(KEY_S),
+ #define XLAT_VAL_31 ((unsigned) (KEY_S))
+ #define XLAT_STR_31 STRINGIFY(KEY_S)
  [KEY_D] = XLAT(KEY_D),
+ #define XLAT_VAL_32 ((unsigned) (KEY_D))
+ #define XLAT_STR_32 STRINGIFY(KEY_D)
  [KEY_F] = XLAT(KEY_F),
+ #define XLAT_VAL_33 ((unsigned) (KEY_F))
+ #define XLAT_STR_33 STRINGIFY(KEY_F)
  [KEY_G] = XLAT(KEY_G),
+ #define XLAT_VAL_34 ((unsigned) (KEY_G))
+ #define XLAT_STR_34 STRINGIFY(KEY_G)
  [KEY_H] = XLAT(KEY_H),
+ #define XLAT_VAL_35 ((unsigned) (KEY_H))
+ #define XLAT_STR_35 STRINGIFY(KEY_H)
  [KEY_J] = XLAT(KEY_J),
+ #define XLAT_VAL_36 ((unsigned) (KEY_J))
+ #define XLAT_STR_36 STRINGIFY(KEY_J)
  [KEY_K] = XLAT(KEY_K),
+ #define XLAT_VAL_37 ((unsigned) (KEY_K))
+ #define XLAT_STR_37 STRINGIFY(KEY_K)
  [KEY_L] = XLAT(KEY_L),
+ #define XLAT_VAL_38 ((unsigned) (KEY_L))
+ #define XLAT_STR_38 STRINGIFY(KEY_L)
  [KEY_SEMICOLON] = XLAT(KEY_SEMICOLON),
+ #define XLAT_VAL_39 ((unsigned) (KEY_SEMICOLON))
+ #define XLAT_STR_39 STRINGIFY(KEY_SEMICOLON)
  [KEY_APOSTROPHE] = XLAT(KEY_APOSTROPHE),
+ #define XLAT_VAL_40 ((unsigned) (KEY_APOSTROPHE))
+ #define XLAT_STR_40 STRINGIFY(KEY_APOSTROPHE)
  [KEY_GRAVE] = XLAT(KEY_GRAVE),
+ #define XLAT_VAL_41 ((unsigned) (KEY_GRAVE))
+ #define XLAT_STR_41 STRINGIFY(KEY_GRAVE)
  [KEY_LEFTSHIFT] = XLAT(KEY_LEFTSHIFT),
+ #define XLAT_VAL_42 ((unsigned) (KEY_LEFTSHIFT))
+ #define XLAT_STR_42 STRINGIFY(KEY_LEFTSHIFT)
  [KEY_BACKSLASH] = XLAT(KEY_BACKSLASH),
+ #define XLAT_VAL_43 ((unsigned) (KEY_BACKSLASH))
+ #define XLAT_STR_43 STRINGIFY(KEY_BACKSLASH)
  [KEY_Z] = XLAT(KEY_Z),
+ #define XLAT_VAL_44 ((unsigned) (KEY_Z))
+ #define XLAT_STR_44 STRINGIFY(KEY_Z)
  [KEY_X] = XLAT(KEY_X),
+ #define XLAT_VAL_45 ((unsigned) (KEY_X))
+ #define XLAT_STR_45 STRINGIFY(KEY_X)
  [KEY_C] = XLAT(KEY_C),
+ #define XLAT_VAL_46 ((unsigned) (KEY_C))
+ #define XLAT_STR_46 STRINGIFY(KEY_C)
  [KEY_V] = XLAT(KEY_V),
+ #define XLAT_VAL_47 ((unsigned) (KEY_V))
+ #define XLAT_STR_47 STRINGIFY(KEY_V)
  [KEY_B] = XLAT(KEY_B),
+ #define XLAT_VAL_48 ((unsigned) (KEY_B))
+ #define XLAT_STR_48 STRINGIFY(KEY_B)
  [KEY_N] = XLAT(KEY_N),
+ #define XLAT_VAL_49 ((unsigned) (KEY_N))
+ #define XLAT_STR_49 STRINGIFY(KEY_N)
  [KEY_M] = XLAT(KEY_M),
+ #define XLAT_VAL_50 ((unsigned) (KEY_M))
+ #define XLAT_STR_50 STRINGIFY(KEY_M)
  [KEY_COMMA] = XLAT(KEY_COMMA),
+ #define XLAT_VAL_51 ((unsigned) (KEY_COMMA))
+ #define XLAT_STR_51 STRINGIFY(KEY_COMMA)
  [KEY_DOT] = XLAT(KEY_DOT),
+ #define XLAT_VAL_52 ((unsigned) (KEY_DOT))
+ #define XLAT_STR_52 STRINGIFY(KEY_DOT)
  [KEY_SLASH] = XLAT(KEY_SLASH),
+ #define XLAT_VAL_53 ((unsigned) (KEY_SLASH))
+ #define XLAT_STR_53 STRINGIFY(KEY_SLASH)
  [KEY_RIGHTSHIFT] = XLAT(KEY_RIGHTSHIFT),
+ #define XLAT_VAL_54 ((unsigned) (KEY_RIGHTSHIFT))
+ #define XLAT_STR_54 STRINGIFY(KEY_RIGHTSHIFT)
  [KEY_KPASTERISK] = XLAT(KEY_KPASTERISK),
+ #define XLAT_VAL_55 ((unsigned) (KEY_KPASTERISK))
+ #define XLAT_STR_55 STRINGIFY(KEY_KPASTERISK)
  [KEY_LEFTALT] = XLAT(KEY_LEFTALT),
+ #define XLAT_VAL_56 ((unsigned) (KEY_LEFTALT))
+ #define XLAT_STR_56 STRINGIFY(KEY_LEFTALT)
  [KEY_SPACE] = XLAT(KEY_SPACE),
+ #define XLAT_VAL_57 ((unsigned) (KEY_SPACE))
+ #define XLAT_STR_57 STRINGIFY(KEY_SPACE)
  [KEY_CAPSLOCK] = XLAT(KEY_CAPSLOCK),
+ #define XLAT_VAL_58 ((unsigned) (KEY_CAPSLOCK))
+ #define XLAT_STR_58 STRINGIFY(KEY_CAPSLOCK)
  [KEY_F1] = XLAT(KEY_F1),
+ #define XLAT_VAL_59 ((unsigned) (KEY_F1))
+ #define XLAT_STR_59 STRINGIFY(KEY_F1)
  [KEY_F2] = XLAT(KEY_F2),
+ #define XLAT_VAL_60 ((unsigned) (KEY_F2))
+ #define XLAT_STR_60 STRINGIFY(KEY_F2)
  [KEY_F3] = XLAT(KEY_F3),
+ #define XLAT_VAL_61 ((unsigned) (KEY_F3))
+ #define XLAT_STR_61 STRINGIFY(KEY_F3)
  [KEY_F4] = XLAT(KEY_F4),
+ #define XLAT_VAL_62 ((unsigned) (KEY_F4))
+ #define XLAT_STR_62 STRINGIFY(KEY_F4)
  [KEY_F5] = XLAT(KEY_F5),
+ #define XLAT_VAL_63 ((unsigned) (KEY_F5))
+ #define XLAT_STR_63 STRINGIFY(KEY_F5)
  [KEY_F6] = XLAT(KEY_F6),
+ #define XLAT_VAL_64 ((unsigned) (KEY_F6))
+ #define XLAT_STR_64 STRINGIFY(KEY_F6)
  [KEY_F7] = XLAT(KEY_F7),
+ #define XLAT_VAL_65 ((unsigned) (KEY_F7))
+ #define XLAT_STR_65 STRINGIFY(KEY_F7)
  [KEY_F8] = XLAT(KEY_F8),
+ #define XLAT_VAL_66 ((unsigned) (KEY_F8))
+ #define XLAT_STR_66 STRINGIFY(KEY_F8)
  [KEY_F9] = XLAT(KEY_F9),
+ #define XLAT_VAL_67 ((unsigned) (KEY_F9))
+ #define XLAT_STR_67 STRINGIFY(KEY_F9)
  [KEY_F10] = XLAT(KEY_F10),
+ #define XLAT_VAL_68 ((unsigned) (KEY_F10))
+ #define XLAT_STR_68 STRINGIFY(KEY_F10)
  [KEY_NUMLOCK] = XLAT(KEY_NUMLOCK),
+ #define XLAT_VAL_69 ((unsigned) (KEY_NUMLOCK))
+ #define XLAT_STR_69 STRINGIFY(KEY_NUMLOCK)
  [KEY_SCROLLLOCK] = XLAT(KEY_SCROLLLOCK),
+ #define XLAT_VAL_70 ((unsigned) (KEY_SCROLLLOCK))
+ #define XLAT_STR_70 STRINGIFY(KEY_SCROLLLOCK)
  [KEY_KP7] = XLAT(KEY_KP7),
+ #define XLAT_VAL_71 ((unsigned) (KEY_KP7))
+ #define XLAT_STR_71 STRINGIFY(KEY_KP7)
  [KEY_KP8] = XLAT(KEY_KP8),
+ #define XLAT_VAL_72 ((unsigned) (KEY_KP8))
+ #define XLAT_STR_72 STRINGIFY(KEY_KP8)
  [KEY_KP9] = XLAT(KEY_KP9),
+ #define XLAT_VAL_73 ((unsigned) (KEY_KP9))
+ #define XLAT_STR_73 STRINGIFY(KEY_KP9)
  [KEY_KPMINUS] = XLAT(KEY_KPMINUS),
+ #define XLAT_VAL_74 ((unsigned) (KEY_KPMINUS))
+ #define XLAT_STR_74 STRINGIFY(KEY_KPMINUS)
  [KEY_KP4] = XLAT(KEY_KP4),
+ #define XLAT_VAL_75 ((unsigned) (KEY_KP4))
+ #define XLAT_STR_75 STRINGIFY(KEY_KP4)
  [KEY_KP5] = XLAT(KEY_KP5),
+ #define XLAT_VAL_76 ((unsigned) (KEY_KP5))
+ #define XLAT_STR_76 STRINGIFY(KEY_KP5)
  [KEY_KP6] = XLAT(KEY_KP6),
+ #define XLAT_VAL_77 ((unsigned) (KEY_KP6))
+ #define XLAT_STR_77 STRINGIFY(KEY_KP6)
  [KEY_KPPLUS] = XLAT(KEY_KPPLUS),
+ #define XLAT_VAL_78 ((unsigned) (KEY_KPPLUS))
+ #define XLAT_STR_78 STRINGIFY(KEY_KPPLUS)
  [KEY_KP1] = XLAT(KEY_KP1),
+ #define XLAT_VAL_79 ((unsigned) (KEY_KP1))
+ #define XLAT_STR_79 STRINGIFY(KEY_KP1)
  [KEY_KP2] = XLAT(KEY_KP2),
+ #define XLAT_VAL_80 ((unsigned) (KEY_KP2))
+ #define XLAT_STR_80 STRINGIFY(KEY_KP2)
  [KEY_KP3] = XLAT(KEY_KP3),
+ #define XLAT_VAL_81 ((unsigned) (KEY_KP3))
+ #define XLAT_STR_81 STRINGIFY(KEY_KP3)
  [KEY_KP0] = XLAT(KEY_KP0),
+ #define XLAT_VAL_82 ((unsigned) (KEY_KP0))
+ #define XLAT_STR_82 STRINGIFY(KEY_KP0)
  [KEY_KPDOT] = XLAT(KEY_KPDOT),
+ #define XLAT_VAL_83 ((unsigned) (KEY_KPDOT))
+ #define XLAT_STR_83 STRINGIFY(KEY_KPDOT)
 
  [KEY_ZENKAKUHANKAKU] = XLAT(KEY_ZENKAKUHANKAKU),
+ #define XLAT_VAL_84 ((unsigned) (KEY_ZENKAKUHANKAKU))
+ #define XLAT_STR_84 STRINGIFY(KEY_ZENKAKUHANKAKU)
  [KEY_102ND] = XLAT(KEY_102ND),
+ #define XLAT_VAL_85 ((unsigned) (KEY_102ND))
+ #define XLAT_STR_85 STRINGIFY(KEY_102ND)
  [KEY_F11] = XLAT(KEY_F11),
+ #define XLAT_VAL_86 ((unsigned) (KEY_F11))
+ #define XLAT_STR_86 STRINGIFY(KEY_F11)
  [KEY_F12] = XLAT(KEY_F12),
+ #define XLAT_VAL_87 ((unsigned) (KEY_F12))
+ #define XLAT_STR_87 STRINGIFY(KEY_F12)
  [KEY_RO] = XLAT(KEY_RO),
+ #define XLAT_VAL_88 ((unsigned) (KEY_RO))
+ #define XLAT_STR_88 STRINGIFY(KEY_RO)
  [KEY_KATAKANA] = XLAT(KEY_KATAKANA),
+ #define XLAT_VAL_89 ((unsigned) (KEY_KATAKANA))
+ #define XLAT_STR_89 STRINGIFY(KEY_KATAKANA)
  [KEY_HIRAGANA] = XLAT(KEY_HIRAGANA),
+ #define XLAT_VAL_90 ((unsigned) (KEY_HIRAGANA))
+ #define XLAT_STR_90 STRINGIFY(KEY_HIRAGANA)
  [KEY_HENKAN] = XLAT(KEY_HENKAN),
+ #define XLAT_VAL_91 ((unsigned) (KEY_HENKAN))
+ #define XLAT_STR_91 STRINGIFY(KEY_HENKAN)
  [KEY_KATAKANAHIRAGANA] = XLAT(KEY_KATAKANAHIRAGANA),
+ #define XLAT_VAL_92 ((unsigned) (KEY_KATAKANAHIRAGANA))
+ #define XLAT_STR_92 STRINGIFY(KEY_KATAKANAHIRAGANA)
  [KEY_MUHENKAN] = XLAT(KEY_MUHENKAN),
+ #define XLAT_VAL_93 ((unsigned) (KEY_MUHENKAN))
+ #define XLAT_STR_93 STRINGIFY(KEY_MUHENKAN)
  [KEY_KPJPCOMMA] = XLAT(KEY_KPJPCOMMA),
+ #define XLAT_VAL_94 ((unsigned) (KEY_KPJPCOMMA))
+ #define XLAT_STR_94 STRINGIFY(KEY_KPJPCOMMA)
  [KEY_KPENTER] = XLAT(KEY_KPENTER),
+ #define XLAT_VAL_95 ((unsigned) (KEY_KPENTER))
+ #define XLAT_STR_95 STRINGIFY(KEY_KPENTER)
  [KEY_RIGHTCTRL] = XLAT(KEY_RIGHTCTRL),
+ #define XLAT_VAL_96 ((unsigned) (KEY_RIGHTCTRL))
+ #define XLAT_STR_96 STRINGIFY(KEY_RIGHTCTRL)
  [KEY_KPSLASH] = XLAT(KEY_KPSLASH),
+ #define XLAT_VAL_97 ((unsigned) (KEY_KPSLASH))
+ #define XLAT_STR_97 STRINGIFY(KEY_KPSLASH)
  [KEY_SYSRQ] = XLAT(KEY_SYSRQ),
+ #define XLAT_VAL_98 ((unsigned) (KEY_SYSRQ))
+ #define XLAT_STR_98 STRINGIFY(KEY_SYSRQ)
  [KEY_RIGHTALT] = XLAT(KEY_RIGHTALT),
+ #define XLAT_VAL_99 ((unsigned) (KEY_RIGHTALT))
+ #define XLAT_STR_99 STRINGIFY(KEY_RIGHTALT)
  [KEY_LINEFEED] = XLAT(KEY_LINEFEED),
+ #define XLAT_VAL_100 ((unsigned) (KEY_LINEFEED))
+ #define XLAT_STR_100 STRINGIFY(KEY_LINEFEED)
  [KEY_HOME] = XLAT(KEY_HOME),
+ #define XLAT_VAL_101 ((unsigned) (KEY_HOME))
+ #define XLAT_STR_101 STRINGIFY(KEY_HOME)
  [KEY_UP] = XLAT(KEY_UP),
+ #define XLAT_VAL_102 ((unsigned) (KEY_UP))
+ #define XLAT_STR_102 STRINGIFY(KEY_UP)
  [KEY_PAGEUP] = XLAT(KEY_PAGEUP),
+ #define XLAT_VAL_103 ((unsigned) (KEY_PAGEUP))
+ #define XLAT_STR_103 STRINGIFY(KEY_PAGEUP)
  [KEY_LEFT] = XLAT(KEY_LEFT),
+ #define XLAT_VAL_104 ((unsigned) (KEY_LEFT))
+ #define XLAT_STR_104 STRINGIFY(KEY_LEFT)
  [KEY_RIGHT] = XLAT(KEY_RIGHT),
+ #define XLAT_VAL_105 ((unsigned) (KEY_RIGHT))
+ #define XLAT_STR_105 STRINGIFY(KEY_RIGHT)
  [KEY_END] = XLAT(KEY_END),
+ #define XLAT_VAL_106 ((unsigned) (KEY_END))
+ #define XLAT_STR_106 STRINGIFY(KEY_END)
  [KEY_DOWN] = XLAT(KEY_DOWN),
+ #define XLAT_VAL_107 ((unsigned) (KEY_DOWN))
+ #define XLAT_STR_107 STRINGIFY(KEY_DOWN)
  [KEY_PAGEDOWN] = XLAT(KEY_PAGEDOWN),
+ #define XLAT_VAL_108 ((unsigned) (KEY_PAGEDOWN))
+ #define XLAT_STR_108 STRINGIFY(KEY_PAGEDOWN)
  [KEY_INSERT] = XLAT(KEY_INSERT),
+ #define XLAT_VAL_109 ((unsigned) (KEY_INSERT))
+ #define XLAT_STR_109 STRINGIFY(KEY_INSERT)
  [KEY_DELETE] = XLAT(KEY_DELETE),
+ #define XLAT_VAL_110 ((unsigned) (KEY_DELETE))
+ #define XLAT_STR_110 STRINGIFY(KEY_DELETE)
  [KEY_MACRO] = XLAT(KEY_MACRO),
+ #define XLAT_VAL_111 ((unsigned) (KEY_MACRO))
+ #define XLAT_STR_111 STRINGIFY(KEY_MACRO)
  [KEY_MUTE] = XLAT(KEY_MUTE),
+ #define XLAT_VAL_112 ((unsigned) (KEY_MUTE))
+ #define XLAT_STR_112 STRINGIFY(KEY_MUTE)
  [KEY_VOLUMEDOWN] = XLAT(KEY_VOLUMEDOWN),
+ #define XLAT_VAL_113 ((unsigned) (KEY_VOLUMEDOWN))
+ #define XLAT_STR_113 STRINGIFY(KEY_VOLUMEDOWN)
  [KEY_VOLUMEUP] = XLAT(KEY_VOLUMEUP),
+ #define XLAT_VAL_114 ((unsigned) (KEY_VOLUMEUP))
+ #define XLAT_STR_114 STRINGIFY(KEY_VOLUMEUP)
  [KEY_POWER] = XLAT(KEY_POWER),
+ #define XLAT_VAL_115 ((unsigned) (KEY_POWER))
+ #define XLAT_STR_115 STRINGIFY(KEY_POWER)
  [KEY_KPEQUAL] = XLAT(KEY_KPEQUAL),
+ #define XLAT_VAL_116 ((unsigned) (KEY_KPEQUAL))
+ #define XLAT_STR_116 STRINGIFY(KEY_KPEQUAL)
  [KEY_KPPLUSMINUS] = XLAT(KEY_KPPLUSMINUS),
+ #define XLAT_VAL_117 ((unsigned) (KEY_KPPLUSMINUS))
+ #define XLAT_STR_117 STRINGIFY(KEY_KPPLUSMINUS)
  [KEY_PAUSE] = XLAT(KEY_PAUSE),
+ #define XLAT_VAL_118 ((unsigned) (KEY_PAUSE))
+ #define XLAT_STR_118 STRINGIFY(KEY_PAUSE)
  [KEY_SCALE] = XLAT(KEY_SCALE),
+ #define XLAT_VAL_119 ((unsigned) (KEY_SCALE))
+ #define XLAT_STR_119 STRINGIFY(KEY_SCALE)
 
  [KEY_KPCOMMA] = XLAT(KEY_KPCOMMA),
+ #define XLAT_VAL_120 ((unsigned) (KEY_KPCOMMA))
+ #define XLAT_STR_120 STRINGIFY(KEY_KPCOMMA)
  [KEY_HANGEUL] = XLAT(KEY_HANGEUL),
+ #define XLAT_VAL_121 ((unsigned) (KEY_HANGEUL))
+ #define XLAT_STR_121 STRINGIFY(KEY_HANGEUL)
  [KEY_HANJA] = XLAT(KEY_HANJA),
+ #define XLAT_VAL_122 ((unsigned) (KEY_HANJA))
+ #define XLAT_STR_122 STRINGIFY(KEY_HANJA)
  [KEY_YEN] = XLAT(KEY_YEN),
+ #define XLAT_VAL_123 ((unsigned) (KEY_YEN))
+ #define XLAT_STR_123 STRINGIFY(KEY_YEN)
  [KEY_LEFTMETA] = XLAT(KEY_LEFTMETA),
+ #define XLAT_VAL_124 ((unsigned) (KEY_LEFTMETA))
+ #define XLAT_STR_124 STRINGIFY(KEY_LEFTMETA)
  [KEY_RIGHTMETA] = XLAT(KEY_RIGHTMETA),
+ #define XLAT_VAL_125 ((unsigned) (KEY_RIGHTMETA))
+ #define XLAT_STR_125 STRINGIFY(KEY_RIGHTMETA)
  [KEY_COMPOSE] = XLAT(KEY_COMPOSE),
+ #define XLAT_VAL_126 ((unsigned) (KEY_COMPOSE))
+ #define XLAT_STR_126 STRINGIFY(KEY_COMPOSE)
 
  [KEY_STOP] = XLAT(KEY_STOP),
+ #define XLAT_VAL_127 ((unsigned) (KEY_STOP))
+ #define XLAT_STR_127 STRINGIFY(KEY_STOP)
  [KEY_AGAIN] = XLAT(KEY_AGAIN),
+ #define XLAT_VAL_128 ((unsigned) (KEY_AGAIN))
+ #define XLAT_STR_128 STRINGIFY(KEY_AGAIN)
  [KEY_PROPS] = XLAT(KEY_PROPS),
+ #define XLAT_VAL_129 ((unsigned) (KEY_PROPS))
+ #define XLAT_STR_129 STRINGIFY(KEY_PROPS)
  [KEY_UNDO] = XLAT(KEY_UNDO),
+ #define XLAT_VAL_130 ((unsigned) (KEY_UNDO))
+ #define XLAT_STR_130 STRINGIFY(KEY_UNDO)
  [KEY_FRONT] = XLAT(KEY_FRONT),
+ #define XLAT_VAL_131 ((unsigned) (KEY_FRONT))
+ #define XLAT_STR_131 STRINGIFY(KEY_FRONT)
  [KEY_COPY] = XLAT(KEY_COPY),
+ #define XLAT_VAL_132 ((unsigned) (KEY_COPY))
+ #define XLAT_STR_132 STRINGIFY(KEY_COPY)
  [KEY_OPEN] = XLAT(KEY_OPEN),
+ #define XLAT_VAL_133 ((unsigned) (KEY_OPEN))
+ #define XLAT_STR_133 STRINGIFY(KEY_OPEN)
  [KEY_PASTE] = XLAT(KEY_PASTE),
+ #define XLAT_VAL_134 ((unsigned) (KEY_PASTE))
+ #define XLAT_STR_134 STRINGIFY(KEY_PASTE)
  [KEY_FIND] = XLAT(KEY_FIND),
+ #define XLAT_VAL_135 ((unsigned) (KEY_FIND))
+ #define XLAT_STR_135 STRINGIFY(KEY_FIND)
  [KEY_CUT] = XLAT(KEY_CUT),
+ #define XLAT_VAL_136 ((unsigned) (KEY_CUT))
+ #define XLAT_STR_136 STRINGIFY(KEY_CUT)
  [KEY_HELP] = XLAT(KEY_HELP),
+ #define XLAT_VAL_137 ((unsigned) (KEY_HELP))
+ #define XLAT_STR_137 STRINGIFY(KEY_HELP)
  [KEY_MENU] = XLAT(KEY_MENU),
+ #define XLAT_VAL_138 ((unsigned) (KEY_MENU))
+ #define XLAT_STR_138 STRINGIFY(KEY_MENU)
  [KEY_CALC] = XLAT(KEY_CALC),
+ #define XLAT_VAL_139 ((unsigned) (KEY_CALC))
+ #define XLAT_STR_139 STRINGIFY(KEY_CALC)
  [KEY_SETUP] = XLAT(KEY_SETUP),
+ #define XLAT_VAL_140 ((unsigned) (KEY_SETUP))
+ #define XLAT_STR_140 STRINGIFY(KEY_SETUP)
  [KEY_SLEEP] = XLAT(KEY_SLEEP),
+ #define XLAT_VAL_141 ((unsigned) (KEY_SLEEP))
+ #define XLAT_STR_141 STRINGIFY(KEY_SLEEP)
  [KEY_WAKEUP] = XLAT(KEY_WAKEUP),
+ #define XLAT_VAL_142 ((unsigned) (KEY_WAKEUP))
+ #define XLAT_STR_142 STRINGIFY(KEY_WAKEUP)
  [KEY_FILE] = XLAT(KEY_FILE),
+ #define XLAT_VAL_143 ((unsigned) (KEY_FILE))
+ #define XLAT_STR_143 STRINGIFY(KEY_FILE)
  [KEY_SENDFILE] = XLAT(KEY_SENDFILE),
+ #define XLAT_VAL_144 ((unsigned) (KEY_SENDFILE))
+ #define XLAT_STR_144 STRINGIFY(KEY_SENDFILE)
  [KEY_DELETEFILE] = XLAT(KEY_DELETEFILE),
+ #define XLAT_VAL_145 ((unsigned) (KEY_DELETEFILE))
+ #define XLAT_STR_145 STRINGIFY(KEY_DELETEFILE)
  [KEY_XFER] = XLAT(KEY_XFER),
+ #define XLAT_VAL_146 ((unsigned) (KEY_XFER))
+ #define XLAT_STR_146 STRINGIFY(KEY_XFER)
  [KEY_PROG1] = XLAT(KEY_PROG1),
+ #define XLAT_VAL_147 ((unsigned) (KEY_PROG1))
+ #define XLAT_STR_147 STRINGIFY(KEY_PROG1)
  [KEY_PROG2] = XLAT(KEY_PROG2),
+ #define XLAT_VAL_148 ((unsigned) (KEY_PROG2))
+ #define XLAT_STR_148 STRINGIFY(KEY_PROG2)
  [KEY_WWW] = XLAT(KEY_WWW),
+ #define XLAT_VAL_149 ((unsigned) (KEY_WWW))
+ #define XLAT_STR_149 STRINGIFY(KEY_WWW)
  [KEY_MSDOS] = XLAT(KEY_MSDOS),
+ #define XLAT_VAL_150 ((unsigned) (KEY_MSDOS))
+ #define XLAT_STR_150 STRINGIFY(KEY_MSDOS)
  [KEY_COFFEE] = XLAT(KEY_COFFEE),
+ #define XLAT_VAL_151 ((unsigned) (KEY_COFFEE))
+ #define XLAT_STR_151 STRINGIFY(KEY_COFFEE)
  [KEY_ROTATE_DISPLAY] = XLAT(KEY_ROTATE_DISPLAY),
+ #define XLAT_VAL_152 ((unsigned) (KEY_ROTATE_DISPLAY))
+ #define XLAT_STR_152 STRINGIFY(KEY_ROTATE_DISPLAY)
  [KEY_CYCLEWINDOWS] = XLAT(KEY_CYCLEWINDOWS),
+ #define XLAT_VAL_153 ((unsigned) (KEY_CYCLEWINDOWS))
+ #define XLAT_STR_153 STRINGIFY(KEY_CYCLEWINDOWS)
  [KEY_MAIL] = XLAT(KEY_MAIL),
+ #define XLAT_VAL_154 ((unsigned) (KEY_MAIL))
+ #define XLAT_STR_154 STRINGIFY(KEY_MAIL)
  [KEY_BOOKMARKS] = XLAT(KEY_BOOKMARKS),
+ #define XLAT_VAL_155 ((unsigned) (KEY_BOOKMARKS))
+ #define XLAT_STR_155 STRINGIFY(KEY_BOOKMARKS)
  [KEY_COMPUTER] = XLAT(KEY_COMPUTER),
+ #define XLAT_VAL_156 ((unsigned) (KEY_COMPUTER))
+ #define XLAT_STR_156 STRINGIFY(KEY_COMPUTER)
  [KEY_BACK] = XLAT(KEY_BACK),
+ #define XLAT_VAL_157 ((unsigned) (KEY_BACK))
+ #define XLAT_STR_157 STRINGIFY(KEY_BACK)
  [KEY_FORWARD] = XLAT(KEY_FORWARD),
+ #define XLAT_VAL_158 ((unsigned) (KEY_FORWARD))
+ #define XLAT_STR_158 STRINGIFY(KEY_FORWARD)
  [KEY_CLOSECD] = XLAT(KEY_CLOSECD),
+ #define XLAT_VAL_159 ((unsigned) (KEY_CLOSECD))
+ #define XLAT_STR_159 STRINGIFY(KEY_CLOSECD)
  [KEY_EJECTCD] = XLAT(KEY_EJECTCD),
+ #define XLAT_VAL_160 ((unsigned) (KEY_EJECTCD))
+ #define XLAT_STR_160 STRINGIFY(KEY_EJECTCD)
  [KEY_EJECTCLOSECD] = XLAT(KEY_EJECTCLOSECD),
+ #define XLAT_VAL_161 ((unsigned) (KEY_EJECTCLOSECD))
+ #define XLAT_STR_161 STRINGIFY(KEY_EJECTCLOSECD)
  [KEY_NEXTSONG] = XLAT(KEY_NEXTSONG),
+ #define XLAT_VAL_162 ((unsigned) (KEY_NEXTSONG))
+ #define XLAT_STR_162 STRINGIFY(KEY_NEXTSONG)
  [KEY_PLAYPAUSE] = XLAT(KEY_PLAYPAUSE),
+ #define XLAT_VAL_163 ((unsigned) (KEY_PLAYPAUSE))
+ #define XLAT_STR_163 STRINGIFY(KEY_PLAYPAUSE)
  [KEY_PREVIOUSSONG] = XLAT(KEY_PREVIOUSSONG),
+ #define XLAT_VAL_164 ((unsigned) (KEY_PREVIOUSSONG))
+ #define XLAT_STR_164 STRINGIFY(KEY_PREVIOUSSONG)
  [KEY_STOPCD] = XLAT(KEY_STOPCD),
+ #define XLAT_VAL_165 ((unsigned) (KEY_STOPCD))
+ #define XLAT_STR_165 STRINGIFY(KEY_STOPCD)
  [KEY_RECORD] = XLAT(KEY_RECORD),
+ #define XLAT_VAL_166 ((unsigned) (KEY_RECORD))
+ #define XLAT_STR_166 STRINGIFY(KEY_RECORD)
  [KEY_REWIND] = XLAT(KEY_REWIND),
+ #define XLAT_VAL_167 ((unsigned) (KEY_REWIND))
+ #define XLAT_STR_167 STRINGIFY(KEY_REWIND)
  [KEY_PHONE] = XLAT(KEY_PHONE),
+ #define XLAT_VAL_168 ((unsigned) (KEY_PHONE))
+ #define XLAT_STR_168 STRINGIFY(KEY_PHONE)
  [KEY_ISO] = XLAT(KEY_ISO),
+ #define XLAT_VAL_169 ((unsigned) (KEY_ISO))
+ #define XLAT_STR_169 STRINGIFY(KEY_ISO)
  [KEY_CONFIG] = XLAT(KEY_CONFIG),
+ #define XLAT_VAL_170 ((unsigned) (KEY_CONFIG))
+ #define XLAT_STR_170 STRINGIFY(KEY_CONFIG)
  [KEY_HOMEPAGE] = XLAT(KEY_HOMEPAGE),
+ #define XLAT_VAL_171 ((unsigned) (KEY_HOMEPAGE))
+ #define XLAT_STR_171 STRINGIFY(KEY_HOMEPAGE)
  [KEY_REFRESH] = XLAT(KEY_REFRESH),
+ #define XLAT_VAL_172 ((unsigned) (KEY_REFRESH))
+ #define XLAT_STR_172 STRINGIFY(KEY_REFRESH)
  [KEY_EXIT] = XLAT(KEY_EXIT),
+ #define XLAT_VAL_173 ((unsigned) (KEY_EXIT))
+ #define XLAT_STR_173 STRINGIFY(KEY_EXIT)
  [KEY_MOVE] = XLAT(KEY_MOVE),
+ #define XLAT_VAL_174 ((unsigned) (KEY_MOVE))
+ #define XLAT_STR_174 STRINGIFY(KEY_MOVE)
  [KEY_EDIT] = XLAT(KEY_EDIT),
+ #define XLAT_VAL_175 ((unsigned) (KEY_EDIT))
+ #define XLAT_STR_175 STRINGIFY(KEY_EDIT)
  [KEY_SCROLLUP] = XLAT(KEY_SCROLLUP),
+ #define XLAT_VAL_176 ((unsigned) (KEY_SCROLLUP))
+ #define XLAT_STR_176 STRINGIFY(KEY_SCROLLUP)
  [KEY_SCROLLDOWN] = XLAT(KEY_SCROLLDOWN),
+ #define XLAT_VAL_177 ((unsigned) (KEY_SCROLLDOWN))
+ #define XLAT_STR_177 STRINGIFY(KEY_SCROLLDOWN)
  [KEY_KPLEFTPAREN] = XLAT(KEY_KPLEFTPAREN),
+ #define XLAT_VAL_178 ((unsigned) (KEY_KPLEFTPAREN))
+ #define XLAT_STR_178 STRINGIFY(KEY_KPLEFTPAREN)
  [KEY_KPRIGHTPAREN] = XLAT(KEY_KPRIGHTPAREN),
+ #define XLAT_VAL_179 ((unsigned) (KEY_KPRIGHTPAREN))
+ #define XLAT_STR_179 STRINGIFY(KEY_KPRIGHTPAREN)
  [KEY_NEW] = XLAT(KEY_NEW),
+ #define XLAT_VAL_180 ((unsigned) (KEY_NEW))
+ #define XLAT_STR_180 STRINGIFY(KEY_NEW)
  [KEY_REDO] = XLAT(KEY_REDO),
+ #define XLAT_VAL_181 ((unsigned) (KEY_REDO))
+ #define XLAT_STR_181 STRINGIFY(KEY_REDO)
 
  [KEY_F13] = XLAT(KEY_F13),
+ #define XLAT_VAL_182 ((unsigned) (KEY_F13))
+ #define XLAT_STR_182 STRINGIFY(KEY_F13)
  [KEY_F14] = XLAT(KEY_F14),
+ #define XLAT_VAL_183 ((unsigned) (KEY_F14))
+ #define XLAT_STR_183 STRINGIFY(KEY_F14)
  [KEY_F15] = XLAT(KEY_F15),
+ #define XLAT_VAL_184 ((unsigned) (KEY_F15))
+ #define XLAT_STR_184 STRINGIFY(KEY_F15)
  [KEY_F16] = XLAT(KEY_F16),
+ #define XLAT_VAL_185 ((unsigned) (KEY_F16))
+ #define XLAT_STR_185 STRINGIFY(KEY_F16)
  [KEY_F17] = XLAT(KEY_F17),
+ #define XLAT_VAL_186 ((unsigned) (KEY_F17))
+ #define XLAT_STR_186 STRINGIFY(KEY_F17)
  [KEY_F18] = XLAT(KEY_F18),
+ #define XLAT_VAL_187 ((unsigned) (KEY_F18))
+ #define XLAT_STR_187 STRINGIFY(KEY_F18)
  [KEY_F19] = XLAT(KEY_F19),
+ #define XLAT_VAL_188 ((unsigned) (KEY_F19))
+ #define XLAT_STR_188 STRINGIFY(KEY_F19)
  [KEY_F20] = XLAT(KEY_F20),
+ #define XLAT_VAL_189 ((unsigned) (KEY_F20))
+ #define XLAT_STR_189 STRINGIFY(KEY_F20)
  [KEY_F21] = XLAT(KEY_F21),
+ #define XLAT_VAL_190 ((unsigned) (KEY_F21))
+ #define XLAT_STR_190 STRINGIFY(KEY_F21)
  [KEY_F22] = XLAT(KEY_F22),
+ #define XLAT_VAL_191 ((unsigned) (KEY_F22))
+ #define XLAT_STR_191 STRINGIFY(KEY_F22)
  [KEY_F23] = XLAT(KEY_F23),
+ #define XLAT_VAL_192 ((unsigned) (KEY_F23))
+ #define XLAT_STR_192 STRINGIFY(KEY_F23)
  [KEY_F24] = XLAT(KEY_F24),
+ #define XLAT_VAL_193 ((unsigned) (KEY_F24))
+ #define XLAT_STR_193 STRINGIFY(KEY_F24)
 
  [KEY_PLAYCD] = XLAT(KEY_PLAYCD),
+ #define XLAT_VAL_194 ((unsigned) (KEY_PLAYCD))
+ #define XLAT_STR_194 STRINGIFY(KEY_PLAYCD)
  [KEY_PAUSECD] = XLAT(KEY_PAUSECD),
+ #define XLAT_VAL_195 ((unsigned) (KEY_PAUSECD))
+ #define XLAT_STR_195 STRINGIFY(KEY_PAUSECD)
  [KEY_PROG3] = XLAT(KEY_PROG3),
+ #define XLAT_VAL_196 ((unsigned) (KEY_PROG3))
+ #define XLAT_STR_196 STRINGIFY(KEY_PROG3)
  [KEY_PROG4] = XLAT(KEY_PROG4),
+ #define XLAT_VAL_197 ((unsigned) (KEY_PROG4))
+ #define XLAT_STR_197 STRINGIFY(KEY_PROG4)
  [KEY_DASHBOARD] = XLAT(KEY_DASHBOARD),
+ #define XLAT_VAL_198 ((unsigned) (KEY_DASHBOARD))
+ #define XLAT_STR_198 STRINGIFY(KEY_DASHBOARD)
  [KEY_SUSPEND] = XLAT(KEY_SUSPEND),
+ #define XLAT_VAL_199 ((unsigned) (KEY_SUSPEND))
+ #define XLAT_STR_199 STRINGIFY(KEY_SUSPEND)
  [KEY_CLOSE] = XLAT(KEY_CLOSE),
+ #define XLAT_VAL_200 ((unsigned) (KEY_CLOSE))
+ #define XLAT_STR_200 STRINGIFY(KEY_CLOSE)
  [KEY_PLAY] = XLAT(KEY_PLAY),
+ #define XLAT_VAL_201 ((unsigned) (KEY_PLAY))
+ #define XLAT_STR_201 STRINGIFY(KEY_PLAY)
  [KEY_FASTFORWARD] = XLAT(KEY_FASTFORWARD),
+ #define XLAT_VAL_202 ((unsigned) (KEY_FASTFORWARD))
+ #define XLAT_STR_202 STRINGIFY(KEY_FASTFORWARD)
  [KEY_BASSBOOST] = XLAT(KEY_BASSBOOST),
+ #define XLAT_VAL_203 ((unsigned) (KEY_BASSBOOST))
+ #define XLAT_STR_203 STRINGIFY(KEY_BASSBOOST)
  [KEY_PRINT] = XLAT(KEY_PRINT),
+ #define XLAT_VAL_204 ((unsigned) (KEY_PRINT))
+ #define XLAT_STR_204 STRINGIFY(KEY_PRINT)
  [KEY_HP] = XLAT(KEY_HP),
+ #define XLAT_VAL_205 ((unsigned) (KEY_HP))
+ #define XLAT_STR_205 STRINGIFY(KEY_HP)
  [KEY_CAMERA] = XLAT(KEY_CAMERA),
+ #define XLAT_VAL_206 ((unsigned) (KEY_CAMERA))
+ #define XLAT_STR_206 STRINGIFY(KEY_CAMERA)
  [KEY_SOUND] = XLAT(KEY_SOUND),
+ #define XLAT_VAL_207 ((unsigned) (KEY_SOUND))
+ #define XLAT_STR_207 STRINGIFY(KEY_SOUND)
  [KEY_QUESTION] = XLAT(KEY_QUESTION),
+ #define XLAT_VAL_208 ((unsigned) (KEY_QUESTION))
+ #define XLAT_STR_208 STRINGIFY(KEY_QUESTION)
  [KEY_EMAIL] = XLAT(KEY_EMAIL),
+ #define XLAT_VAL_209 ((unsigned) (KEY_EMAIL))
+ #define XLAT_STR_209 STRINGIFY(KEY_EMAIL)
  [KEY_CHAT] = XLAT(KEY_CHAT),
+ #define XLAT_VAL_210 ((unsigned) (KEY_CHAT))
+ #define XLAT_STR_210 STRINGIFY(KEY_CHAT)
  [KEY_SEARCH] = XLAT(KEY_SEARCH),
+ #define XLAT_VAL_211 ((unsigned) (KEY_SEARCH))
+ #define XLAT_STR_211 STRINGIFY(KEY_SEARCH)
  [KEY_CONNECT] = XLAT(KEY_CONNECT),
+ #define XLAT_VAL_212 ((unsigned) (KEY_CONNECT))
+ #define XLAT_STR_212 STRINGIFY(KEY_CONNECT)
  [KEY_FINANCE] = XLAT(KEY_FINANCE),
+ #define XLAT_VAL_213 ((unsigned) (KEY_FINANCE))
+ #define XLAT_STR_213 STRINGIFY(KEY_FINANCE)
  [KEY_SPORT] = XLAT(KEY_SPORT),
+ #define XLAT_VAL_214 ((unsigned) (KEY_SPORT))
+ #define XLAT_STR_214 STRINGIFY(KEY_SPORT)
  [KEY_SHOP] = XLAT(KEY_SHOP),
+ #define XLAT_VAL_215 ((unsigned) (KEY_SHOP))
+ #define XLAT_STR_215 STRINGIFY(KEY_SHOP)
  [KEY_ALTERASE] = XLAT(KEY_ALTERASE),
+ #define XLAT_VAL_216 ((unsigned) (KEY_ALTERASE))
+ #define XLAT_STR_216 STRINGIFY(KEY_ALTERASE)
  [KEY_CANCEL] = XLAT(KEY_CANCEL),
+ #define XLAT_VAL_217 ((unsigned) (KEY_CANCEL))
+ #define XLAT_STR_217 STRINGIFY(KEY_CANCEL)
  [KEY_BRIGHTNESSDOWN] = XLAT(KEY_BRIGHTNESSDOWN),
+ #define XLAT_VAL_218 ((unsigned) (KEY_BRIGHTNESSDOWN))
+ #define XLAT_STR_218 STRINGIFY(KEY_BRIGHTNESSDOWN)
  [KEY_BRIGHTNESSUP] = XLAT(KEY_BRIGHTNESSUP),
+ #define XLAT_VAL_219 ((unsigned) (KEY_BRIGHTNESSUP))
+ #define XLAT_STR_219 STRINGIFY(KEY_BRIGHTNESSUP)
  [KEY_MEDIA] = XLAT(KEY_MEDIA),
+ #define XLAT_VAL_220 ((unsigned) (KEY_MEDIA))
+ #define XLAT_STR_220 STRINGIFY(KEY_MEDIA)
 
  [KEY_SWITCHVIDEOMODE] = XLAT(KEY_SWITCHVIDEOMODE),
+ #define XLAT_VAL_221 ((unsigned) (KEY_SWITCHVIDEOMODE))
+ #define XLAT_STR_221 STRINGIFY(KEY_SWITCHVIDEOMODE)
 
  [KEY_KBDILLUMTOGGLE] = XLAT(KEY_KBDILLUMTOGGLE),
+ #define XLAT_VAL_222 ((unsigned) (KEY_KBDILLUMTOGGLE))
+ #define XLAT_STR_222 STRINGIFY(KEY_KBDILLUMTOGGLE)
  [KEY_KBDILLUMDOWN] = XLAT(KEY_KBDILLUMDOWN),
+ #define XLAT_VAL_223 ((unsigned) (KEY_KBDILLUMDOWN))
+ #define XLAT_STR_223 STRINGIFY(KEY_KBDILLUMDOWN)
  [KEY_KBDILLUMUP] = XLAT(KEY_KBDILLUMUP),
+ #define XLAT_VAL_224 ((unsigned) (KEY_KBDILLUMUP))
+ #define XLAT_STR_224 STRINGIFY(KEY_KBDILLUMUP)
 
  [KEY_SEND] = XLAT(KEY_SEND),
+ #define XLAT_VAL_225 ((unsigned) (KEY_SEND))
+ #define XLAT_STR_225 STRINGIFY(KEY_SEND)
  [KEY_REPLY] = XLAT(KEY_REPLY),
+ #define XLAT_VAL_226 ((unsigned) (KEY_REPLY))
+ #define XLAT_STR_226 STRINGIFY(KEY_REPLY)
  [KEY_FORWARDMAIL] = XLAT(KEY_FORWARDMAIL),
+ #define XLAT_VAL_227 ((unsigned) (KEY_FORWARDMAIL))
+ #define XLAT_STR_227 STRINGIFY(KEY_FORWARDMAIL)
  [KEY_SAVE] = XLAT(KEY_SAVE),
+ #define XLAT_VAL_228 ((unsigned) (KEY_SAVE))
+ #define XLAT_STR_228 STRINGIFY(KEY_SAVE)
  [KEY_DOCUMENTS] = XLAT(KEY_DOCUMENTS),
+ #define XLAT_VAL_229 ((unsigned) (KEY_DOCUMENTS))
+ #define XLAT_STR_229 STRINGIFY(KEY_DOCUMENTS)
 
  [KEY_BATTERY] = XLAT(KEY_BATTERY),
+ #define XLAT_VAL_230 ((unsigned) (KEY_BATTERY))
+ #define XLAT_STR_230 STRINGIFY(KEY_BATTERY)
 
  [KEY_BLUETOOTH] = XLAT(KEY_BLUETOOTH),
+ #define XLAT_VAL_231 ((unsigned) (KEY_BLUETOOTH))
+ #define XLAT_STR_231 STRINGIFY(KEY_BLUETOOTH)
  [KEY_WLAN] = XLAT(KEY_WLAN),
+ #define XLAT_VAL_232 ((unsigned) (KEY_WLAN))
+ #define XLAT_STR_232 STRINGIFY(KEY_WLAN)
  [KEY_UWB] = XLAT(KEY_UWB),
+ #define XLAT_VAL_233 ((unsigned) (KEY_UWB))
+ #define XLAT_STR_233 STRINGIFY(KEY_UWB)
 
  [KEY_UNKNOWN] = XLAT(KEY_UNKNOWN),
+ #define XLAT_VAL_234 ((unsigned) (KEY_UNKNOWN))
+ #define XLAT_STR_234 STRINGIFY(KEY_UNKNOWN)
 
  [KEY_VIDEO_NEXT] = XLAT(KEY_VIDEO_NEXT),
+ #define XLAT_VAL_235 ((unsigned) (KEY_VIDEO_NEXT))
+ #define XLAT_STR_235 STRINGIFY(KEY_VIDEO_NEXT)
  [KEY_VIDEO_PREV] = XLAT(KEY_VIDEO_PREV),
+ #define XLAT_VAL_236 ((unsigned) (KEY_VIDEO_PREV))
+ #define XLAT_STR_236 STRINGIFY(KEY_VIDEO_PREV)
  [KEY_BRIGHTNESS_CYCLE] = XLAT(KEY_BRIGHTNESS_CYCLE),
+ #define XLAT_VAL_237 ((unsigned) (KEY_BRIGHTNESS_CYCLE))
+ #define XLAT_STR_237 STRINGIFY(KEY_BRIGHTNESS_CYCLE)
  [KEY_BRIGHTNESS_AUTO] = XLAT(KEY_BRIGHTNESS_AUTO),
+ #define XLAT_VAL_238 ((unsigned) (KEY_BRIGHTNESS_AUTO))
+ #define XLAT_STR_238 STRINGIFY(KEY_BRIGHTNESS_AUTO)
  [KEY_DISPLAY_OFF] = XLAT(KEY_DISPLAY_OFF),
+ #define XLAT_VAL_239 ((unsigned) (KEY_DISPLAY_OFF))
+ #define XLAT_STR_239 STRINGIFY(KEY_DISPLAY_OFF)
 
  [KEY_WWAN] = XLAT(KEY_WWAN),
+ #define XLAT_VAL_240 ((unsigned) (KEY_WWAN))
+ #define XLAT_STR_240 STRINGIFY(KEY_WWAN)
 
 #ifndef STRACE_WORKAROUND_FOR_KEY_RFKILL
 # define STRACE_WORKAROUND_FOR_KEY_RFKILL
@@ -4110,263 +4899,740 @@ const struct xlat evdev_keycode[] = {
 # undef KEY_RFKILL
 #endif
  [KEY_RFKILL] = XLAT(KEY_RFKILL),
+ #define XLAT_VAL_241 ((unsigned) (KEY_RFKILL))
+ #define XLAT_STR_241 STRINGIFY(KEY_RFKILL)
 
  [KEY_MICMUTE] = XLAT(KEY_MICMUTE),
+ #define XLAT_VAL_242 ((unsigned) (KEY_MICMUTE))
+ #define XLAT_STR_242 STRINGIFY(KEY_MICMUTE)
 
  [BTN_0] = XLAT(BTN_0),
+ #define XLAT_VAL_243 ((unsigned) (BTN_0))
+ #define XLAT_STR_243 STRINGIFY(BTN_0)
  [BTN_1] = XLAT(BTN_1),
+ #define XLAT_VAL_244 ((unsigned) (BTN_1))
+ #define XLAT_STR_244 STRINGIFY(BTN_1)
  [BTN_2] = XLAT(BTN_2),
+ #define XLAT_VAL_245 ((unsigned) (BTN_2))
+ #define XLAT_STR_245 STRINGIFY(BTN_2)
  [BTN_3] = XLAT(BTN_3),
+ #define XLAT_VAL_246 ((unsigned) (BTN_3))
+ #define XLAT_STR_246 STRINGIFY(BTN_3)
  [BTN_4] = XLAT(BTN_4),
+ #define XLAT_VAL_247 ((unsigned) (BTN_4))
+ #define XLAT_STR_247 STRINGIFY(BTN_4)
  [BTN_5] = XLAT(BTN_5),
+ #define XLAT_VAL_248 ((unsigned) (BTN_5))
+ #define XLAT_STR_248 STRINGIFY(BTN_5)
  [BTN_6] = XLAT(BTN_6),
+ #define XLAT_VAL_249 ((unsigned) (BTN_6))
+ #define XLAT_STR_249 STRINGIFY(BTN_6)
  [BTN_7] = XLAT(BTN_7),
+ #define XLAT_VAL_250 ((unsigned) (BTN_7))
+ #define XLAT_STR_250 STRINGIFY(BTN_7)
  [BTN_8] = XLAT(BTN_8),
+ #define XLAT_VAL_251 ((unsigned) (BTN_8))
+ #define XLAT_STR_251 STRINGIFY(BTN_8)
  [BTN_9] = XLAT(BTN_9),
+ #define XLAT_VAL_252 ((unsigned) (BTN_9))
+ #define XLAT_STR_252 STRINGIFY(BTN_9)
 
  [BTN_LEFT] = XLAT(BTN_LEFT),
+ #define XLAT_VAL_253 ((unsigned) (BTN_LEFT))
+ #define XLAT_STR_253 STRINGIFY(BTN_LEFT)
  [BTN_RIGHT] = XLAT(BTN_RIGHT),
+ #define XLAT_VAL_254 ((unsigned) (BTN_RIGHT))
+ #define XLAT_STR_254 STRINGIFY(BTN_RIGHT)
  [BTN_MIDDLE] = XLAT(BTN_MIDDLE),
+ #define XLAT_VAL_255 ((unsigned) (BTN_MIDDLE))
+ #define XLAT_STR_255 STRINGIFY(BTN_MIDDLE)
  [BTN_SIDE] = XLAT(BTN_SIDE),
+ #define XLAT_VAL_256 ((unsigned) (BTN_SIDE))
+ #define XLAT_STR_256 STRINGIFY(BTN_SIDE)
  [BTN_EXTRA] = XLAT(BTN_EXTRA),
+ #define XLAT_VAL_257 ((unsigned) (BTN_EXTRA))
+ #define XLAT_STR_257 STRINGIFY(BTN_EXTRA)
  [BTN_FORWARD] = XLAT(BTN_FORWARD),
+ #define XLAT_VAL_258 ((unsigned) (BTN_FORWARD))
+ #define XLAT_STR_258 STRINGIFY(BTN_FORWARD)
  [BTN_BACK] = XLAT(BTN_BACK),
+ #define XLAT_VAL_259 ((unsigned) (BTN_BACK))
+ #define XLAT_STR_259 STRINGIFY(BTN_BACK)
  [BTN_TASK] = XLAT(BTN_TASK),
+ #define XLAT_VAL_260 ((unsigned) (BTN_TASK))
+ #define XLAT_STR_260 STRINGIFY(BTN_TASK)
 
  [BTN_TRIGGER] = XLAT(BTN_TRIGGER),
+ #define XLAT_VAL_261 ((unsigned) (BTN_TRIGGER))
+ #define XLAT_STR_261 STRINGIFY(BTN_TRIGGER)
  [BTN_THUMB] = XLAT(BTN_THUMB),
+ #define XLAT_VAL_262 ((unsigned) (BTN_THUMB))
+ #define XLAT_STR_262 STRINGIFY(BTN_THUMB)
  [BTN_THUMB2] = XLAT(BTN_THUMB2),
+ #define XLAT_VAL_263 ((unsigned) (BTN_THUMB2))
+ #define XLAT_STR_263 STRINGIFY(BTN_THUMB2)
  [BTN_TOP] = XLAT(BTN_TOP),
+ #define XLAT_VAL_264 ((unsigned) (BTN_TOP))
+ #define XLAT_STR_264 STRINGIFY(BTN_TOP)
  [BTN_TOP2] = XLAT(BTN_TOP2),
+ #define XLAT_VAL_265 ((unsigned) (BTN_TOP2))
+ #define XLAT_STR_265 STRINGIFY(BTN_TOP2)
  [BTN_PINKIE] = XLAT(BTN_PINKIE),
+ #define XLAT_VAL_266 ((unsigned) (BTN_PINKIE))
+ #define XLAT_STR_266 STRINGIFY(BTN_PINKIE)
  [BTN_BASE] = XLAT(BTN_BASE),
+ #define XLAT_VAL_267 ((unsigned) (BTN_BASE))
+ #define XLAT_STR_267 STRINGIFY(BTN_BASE)
  [BTN_BASE2] = XLAT(BTN_BASE2),
+ #define XLAT_VAL_268 ((unsigned) (BTN_BASE2))
+ #define XLAT_STR_268 STRINGIFY(BTN_BASE2)
  [BTN_BASE3] = XLAT(BTN_BASE3),
+ #define XLAT_VAL_269 ((unsigned) (BTN_BASE3))
+ #define XLAT_STR_269 STRINGIFY(BTN_BASE3)
  [BTN_BASE4] = XLAT(BTN_BASE4),
+ #define XLAT_VAL_270 ((unsigned) (BTN_BASE4))
+ #define XLAT_STR_270 STRINGIFY(BTN_BASE4)
  [BTN_BASE5] = XLAT(BTN_BASE5),
+ #define XLAT_VAL_271 ((unsigned) (BTN_BASE5))
+ #define XLAT_STR_271 STRINGIFY(BTN_BASE5)
  [BTN_BASE6] = XLAT(BTN_BASE6),
+ #define XLAT_VAL_272 ((unsigned) (BTN_BASE6))
+ #define XLAT_STR_272 STRINGIFY(BTN_BASE6)
  [BTN_DEAD] = XLAT(BTN_DEAD),
+ #define XLAT_VAL_273 ((unsigned) (BTN_DEAD))
+ #define XLAT_STR_273 STRINGIFY(BTN_DEAD)
 
  [BTN_SOUTH] = XLAT(BTN_SOUTH),
+ #define XLAT_VAL_274 ((unsigned) (BTN_SOUTH))
+ #define XLAT_STR_274 STRINGIFY(BTN_SOUTH)
  [BTN_EAST] = XLAT(BTN_EAST),
+ #define XLAT_VAL_275 ((unsigned) (BTN_EAST))
+ #define XLAT_STR_275 STRINGIFY(BTN_EAST)
  [BTN_C] = XLAT(BTN_C),
+ #define XLAT_VAL_276 ((unsigned) (BTN_C))
+ #define XLAT_STR_276 STRINGIFY(BTN_C)
  [BTN_NORTH] = XLAT(BTN_NORTH),
+ #define XLAT_VAL_277 ((unsigned) (BTN_NORTH))
+ #define XLAT_STR_277 STRINGIFY(BTN_NORTH)
  [BTN_WEST] = XLAT(BTN_WEST),
+ #define XLAT_VAL_278 ((unsigned) (BTN_WEST))
+ #define XLAT_STR_278 STRINGIFY(BTN_WEST)
  [BTN_Z] = XLAT(BTN_Z),
+ #define XLAT_VAL_279 ((unsigned) (BTN_Z))
+ #define XLAT_STR_279 STRINGIFY(BTN_Z)
  [BTN_TL] = XLAT(BTN_TL),
+ #define XLAT_VAL_280 ((unsigned) (BTN_TL))
+ #define XLAT_STR_280 STRINGIFY(BTN_TL)
  [BTN_TR] = XLAT(BTN_TR),
+ #define XLAT_VAL_281 ((unsigned) (BTN_TR))
+ #define XLAT_STR_281 STRINGIFY(BTN_TR)
  [BTN_TL2] = XLAT(BTN_TL2),
+ #define XLAT_VAL_282 ((unsigned) (BTN_TL2))
+ #define XLAT_STR_282 STRINGIFY(BTN_TL2)
  [BTN_TR2] = XLAT(BTN_TR2),
+ #define XLAT_VAL_283 ((unsigned) (BTN_TR2))
+ #define XLAT_STR_283 STRINGIFY(BTN_TR2)
  [BTN_SELECT] = XLAT(BTN_SELECT),
+ #define XLAT_VAL_284 ((unsigned) (BTN_SELECT))
+ #define XLAT_STR_284 STRINGIFY(BTN_SELECT)
  [BTN_START] = XLAT(BTN_START),
+ #define XLAT_VAL_285 ((unsigned) (BTN_START))
+ #define XLAT_STR_285 STRINGIFY(BTN_START)
  [BTN_MODE] = XLAT(BTN_MODE),
+ #define XLAT_VAL_286 ((unsigned) (BTN_MODE))
+ #define XLAT_STR_286 STRINGIFY(BTN_MODE)
  [BTN_THUMBL] = XLAT(BTN_THUMBL),
+ #define XLAT_VAL_287 ((unsigned) (BTN_THUMBL))
+ #define XLAT_STR_287 STRINGIFY(BTN_THUMBL)
  [BTN_THUMBR] = XLAT(BTN_THUMBR),
+ #define XLAT_VAL_288 ((unsigned) (BTN_THUMBR))
+ #define XLAT_STR_288 STRINGIFY(BTN_THUMBR)
 
  [BTN_TOOL_PEN] = XLAT(BTN_TOOL_PEN),
+ #define XLAT_VAL_289 ((unsigned) (BTN_TOOL_PEN))
+ #define XLAT_STR_289 STRINGIFY(BTN_TOOL_PEN)
  [BTN_TOOL_RUBBER] = XLAT(BTN_TOOL_RUBBER),
+ #define XLAT_VAL_290 ((unsigned) (BTN_TOOL_RUBBER))
+ #define XLAT_STR_290 STRINGIFY(BTN_TOOL_RUBBER)
  [BTN_TOOL_BRUSH] = XLAT(BTN_TOOL_BRUSH),
+ #define XLAT_VAL_291 ((unsigned) (BTN_TOOL_BRUSH))
+ #define XLAT_STR_291 STRINGIFY(BTN_TOOL_BRUSH)
  [BTN_TOOL_PENCIL] = XLAT(BTN_TOOL_PENCIL),
+ #define XLAT_VAL_292 ((unsigned) (BTN_TOOL_PENCIL))
+ #define XLAT_STR_292 STRINGIFY(BTN_TOOL_PENCIL)
  [BTN_TOOL_AIRBRUSH] = XLAT(BTN_TOOL_AIRBRUSH),
+ #define XLAT_VAL_293 ((unsigned) (BTN_TOOL_AIRBRUSH))
+ #define XLAT_STR_293 STRINGIFY(BTN_TOOL_AIRBRUSH)
  [BTN_TOOL_FINGER] = XLAT(BTN_TOOL_FINGER),
+ #define XLAT_VAL_294 ((unsigned) (BTN_TOOL_FINGER))
+ #define XLAT_STR_294 STRINGIFY(BTN_TOOL_FINGER)
  [BTN_TOOL_MOUSE] = XLAT(BTN_TOOL_MOUSE),
+ #define XLAT_VAL_295 ((unsigned) (BTN_TOOL_MOUSE))
+ #define XLAT_STR_295 STRINGIFY(BTN_TOOL_MOUSE)
  [BTN_TOOL_LENS] = XLAT(BTN_TOOL_LENS),
+ #define XLAT_VAL_296 ((unsigned) (BTN_TOOL_LENS))
+ #define XLAT_STR_296 STRINGIFY(BTN_TOOL_LENS)
  [BTN_TOOL_QUINTTAP] = XLAT(BTN_TOOL_QUINTTAP),
+ #define XLAT_VAL_297 ((unsigned) (BTN_TOOL_QUINTTAP))
+ #define XLAT_STR_297 STRINGIFY(BTN_TOOL_QUINTTAP)
  [BTN_STYLUS3] = XLAT(BTN_STYLUS3),
+ #define XLAT_VAL_298 ((unsigned) (BTN_STYLUS3))
+ #define XLAT_STR_298 STRINGIFY(BTN_STYLUS3)
  [BTN_TOUCH] = XLAT(BTN_TOUCH),
+ #define XLAT_VAL_299 ((unsigned) (BTN_TOUCH))
+ #define XLAT_STR_299 STRINGIFY(BTN_TOUCH)
  [BTN_STYLUS] = XLAT(BTN_STYLUS),
+ #define XLAT_VAL_300 ((unsigned) (BTN_STYLUS))
+ #define XLAT_STR_300 STRINGIFY(BTN_STYLUS)
  [BTN_STYLUS2] = XLAT(BTN_STYLUS2),
+ #define XLAT_VAL_301 ((unsigned) (BTN_STYLUS2))
+ #define XLAT_STR_301 STRINGIFY(BTN_STYLUS2)
  [BTN_TOOL_DOUBLETAP] = XLAT(BTN_TOOL_DOUBLETAP),
+ #define XLAT_VAL_302 ((unsigned) (BTN_TOOL_DOUBLETAP))
+ #define XLAT_STR_302 STRINGIFY(BTN_TOOL_DOUBLETAP)
  [BTN_TOOL_TRIPLETAP] = XLAT(BTN_TOOL_TRIPLETAP),
+ #define XLAT_VAL_303 ((unsigned) (BTN_TOOL_TRIPLETAP))
+ #define XLAT_STR_303 STRINGIFY(BTN_TOOL_TRIPLETAP)
  [BTN_TOOL_QUADTAP] = XLAT(BTN_TOOL_QUADTAP),
+ #define XLAT_VAL_304 ((unsigned) (BTN_TOOL_QUADTAP))
+ #define XLAT_STR_304 STRINGIFY(BTN_TOOL_QUADTAP)
 
  [BTN_GEAR_DOWN] = XLAT(BTN_GEAR_DOWN),
+ #define XLAT_VAL_305 ((unsigned) (BTN_GEAR_DOWN))
+ #define XLAT_STR_305 STRINGIFY(BTN_GEAR_DOWN)
  [BTN_GEAR_UP] = XLAT(BTN_GEAR_UP),
+ #define XLAT_VAL_306 ((unsigned) (BTN_GEAR_UP))
+ #define XLAT_STR_306 STRINGIFY(BTN_GEAR_UP)
 
  [KEY_OK] = XLAT(KEY_OK),
+ #define XLAT_VAL_307 ((unsigned) (KEY_OK))
+ #define XLAT_STR_307 STRINGIFY(KEY_OK)
  [KEY_SELECT] = XLAT(KEY_SELECT),
+ #define XLAT_VAL_308 ((unsigned) (KEY_SELECT))
+ #define XLAT_STR_308 STRINGIFY(KEY_SELECT)
  [KEY_GOTO] = XLAT(KEY_GOTO),
+ #define XLAT_VAL_309 ((unsigned) (KEY_GOTO))
+ #define XLAT_STR_309 STRINGIFY(KEY_GOTO)
  [KEY_CLEAR] = XLAT(KEY_CLEAR),
+ #define XLAT_VAL_310 ((unsigned) (KEY_CLEAR))
+ #define XLAT_STR_310 STRINGIFY(KEY_CLEAR)
  [KEY_POWER2] = XLAT(KEY_POWER2),
+ #define XLAT_VAL_311 ((unsigned) (KEY_POWER2))
+ #define XLAT_STR_311 STRINGIFY(KEY_POWER2)
  [KEY_OPTION] = XLAT(KEY_OPTION),
+ #define XLAT_VAL_312 ((unsigned) (KEY_OPTION))
+ #define XLAT_STR_312 STRINGIFY(KEY_OPTION)
  [KEY_INFO] = XLAT(KEY_INFO),
+ #define XLAT_VAL_313 ((unsigned) (KEY_INFO))
+ #define XLAT_STR_313 STRINGIFY(KEY_INFO)
  [KEY_TIME] = XLAT(KEY_TIME),
+ #define XLAT_VAL_314 ((unsigned) (KEY_TIME))
+ #define XLAT_STR_314 STRINGIFY(KEY_TIME)
  [KEY_VENDOR] = XLAT(KEY_VENDOR),
+ #define XLAT_VAL_315 ((unsigned) (KEY_VENDOR))
+ #define XLAT_STR_315 STRINGIFY(KEY_VENDOR)
  [KEY_ARCHIVE] = XLAT(KEY_ARCHIVE),
+ #define XLAT_VAL_316 ((unsigned) (KEY_ARCHIVE))
+ #define XLAT_STR_316 STRINGIFY(KEY_ARCHIVE)
  [KEY_PROGRAM] = XLAT(KEY_PROGRAM),
+ #define XLAT_VAL_317 ((unsigned) (KEY_PROGRAM))
+ #define XLAT_STR_317 STRINGIFY(KEY_PROGRAM)
  [KEY_CHANNEL] = XLAT(KEY_CHANNEL),
+ #define XLAT_VAL_318 ((unsigned) (KEY_CHANNEL))
+ #define XLAT_STR_318 STRINGIFY(KEY_CHANNEL)
  [KEY_FAVORITES] = XLAT(KEY_FAVORITES),
+ #define XLAT_VAL_319 ((unsigned) (KEY_FAVORITES))
+ #define XLAT_STR_319 STRINGIFY(KEY_FAVORITES)
  [KEY_EPG] = XLAT(KEY_EPG),
+ #define XLAT_VAL_320 ((unsigned) (KEY_EPG))
+ #define XLAT_STR_320 STRINGIFY(KEY_EPG)
  [KEY_PVR] = XLAT(KEY_PVR),
+ #define XLAT_VAL_321 ((unsigned) (KEY_PVR))
+ #define XLAT_STR_321 STRINGIFY(KEY_PVR)
  [KEY_MHP] = XLAT(KEY_MHP),
+ #define XLAT_VAL_322 ((unsigned) (KEY_MHP))
+ #define XLAT_STR_322 STRINGIFY(KEY_MHP)
  [KEY_LANGUAGE] = XLAT(KEY_LANGUAGE),
+ #define XLAT_VAL_323 ((unsigned) (KEY_LANGUAGE))
+ #define XLAT_STR_323 STRINGIFY(KEY_LANGUAGE)
  [KEY_TITLE] = XLAT(KEY_TITLE),
+ #define XLAT_VAL_324 ((unsigned) (KEY_TITLE))
+ #define XLAT_STR_324 STRINGIFY(KEY_TITLE)
  [KEY_SUBTITLE] = XLAT(KEY_SUBTITLE),
+ #define XLAT_VAL_325 ((unsigned) (KEY_SUBTITLE))
+ #define XLAT_STR_325 STRINGIFY(KEY_SUBTITLE)
  [KEY_ANGLE] = XLAT(KEY_ANGLE),
+ #define XLAT_VAL_326 ((unsigned) (KEY_ANGLE))
+ #define XLAT_STR_326 STRINGIFY(KEY_ANGLE)
  [KEY_ZOOM] = XLAT(KEY_ZOOM),
+ #define XLAT_VAL_327 ((unsigned) (KEY_ZOOM))
+ #define XLAT_STR_327 STRINGIFY(KEY_ZOOM)
  [KEY_MODE] = XLAT(KEY_MODE),
+ #define XLAT_VAL_328 ((unsigned) (KEY_MODE))
+ #define XLAT_STR_328 STRINGIFY(KEY_MODE)
  [KEY_KEYBOARD] = XLAT(KEY_KEYBOARD),
+ #define XLAT_VAL_329 ((unsigned) (KEY_KEYBOARD))
+ #define XLAT_STR_329 STRINGIFY(KEY_KEYBOARD)
  [KEY_SCREEN] = XLAT(KEY_SCREEN),
+ #define XLAT_VAL_330 ((unsigned) (KEY_SCREEN))
+ #define XLAT_STR_330 STRINGIFY(KEY_SCREEN)
  [KEY_PC] = XLAT(KEY_PC),
+ #define XLAT_VAL_331 ((unsigned) (KEY_PC))
+ #define XLAT_STR_331 STRINGIFY(KEY_PC)
  [KEY_TV] = XLAT(KEY_TV),
+ #define XLAT_VAL_332 ((unsigned) (KEY_TV))
+ #define XLAT_STR_332 STRINGIFY(KEY_TV)
  [KEY_TV2] = XLAT(KEY_TV2),
+ #define XLAT_VAL_333 ((unsigned) (KEY_TV2))
+ #define XLAT_STR_333 STRINGIFY(KEY_TV2)
  [KEY_VCR] = XLAT(KEY_VCR),
+ #define XLAT_VAL_334 ((unsigned) (KEY_VCR))
+ #define XLAT_STR_334 STRINGIFY(KEY_VCR)
  [KEY_VCR2] = XLAT(KEY_VCR2),
+ #define XLAT_VAL_335 ((unsigned) (KEY_VCR2))
+ #define XLAT_STR_335 STRINGIFY(KEY_VCR2)
  [KEY_SAT] = XLAT(KEY_SAT),
+ #define XLAT_VAL_336 ((unsigned) (KEY_SAT))
+ #define XLAT_STR_336 STRINGIFY(KEY_SAT)
  [KEY_SAT2] = XLAT(KEY_SAT2),
+ #define XLAT_VAL_337 ((unsigned) (KEY_SAT2))
+ #define XLAT_STR_337 STRINGIFY(KEY_SAT2)
  [KEY_CD] = XLAT(KEY_CD),
+ #define XLAT_VAL_338 ((unsigned) (KEY_CD))
+ #define XLAT_STR_338 STRINGIFY(KEY_CD)
  [KEY_TAPE] = XLAT(KEY_TAPE),
+ #define XLAT_VAL_339 ((unsigned) (KEY_TAPE))
+ #define XLAT_STR_339 STRINGIFY(KEY_TAPE)
  [KEY_RADIO] = XLAT(KEY_RADIO),
+ #define XLAT_VAL_340 ((unsigned) (KEY_RADIO))
+ #define XLAT_STR_340 STRINGIFY(KEY_RADIO)
  [KEY_TUNER] = XLAT(KEY_TUNER),
+ #define XLAT_VAL_341 ((unsigned) (KEY_TUNER))
+ #define XLAT_STR_341 STRINGIFY(KEY_TUNER)
  [KEY_PLAYER] = XLAT(KEY_PLAYER),
+ #define XLAT_VAL_342 ((unsigned) (KEY_PLAYER))
+ #define XLAT_STR_342 STRINGIFY(KEY_PLAYER)
  [KEY_TEXT] = XLAT(KEY_TEXT),
+ #define XLAT_VAL_343 ((unsigned) (KEY_TEXT))
+ #define XLAT_STR_343 STRINGIFY(KEY_TEXT)
  [KEY_DVD] = XLAT(KEY_DVD),
+ #define XLAT_VAL_344 ((unsigned) (KEY_DVD))
+ #define XLAT_STR_344 STRINGIFY(KEY_DVD)
  [KEY_AUX] = XLAT(KEY_AUX),
+ #define XLAT_VAL_345 ((unsigned) (KEY_AUX))
+ #define XLAT_STR_345 STRINGIFY(KEY_AUX)
  [KEY_MP3] = XLAT(KEY_MP3),
+ #define XLAT_VAL_346 ((unsigned) (KEY_MP3))
+ #define XLAT_STR_346 STRINGIFY(KEY_MP3)
  [KEY_AUDIO] = XLAT(KEY_AUDIO),
+ #define XLAT_VAL_347 ((unsigned) (KEY_AUDIO))
+ #define XLAT_STR_347 STRINGIFY(KEY_AUDIO)
  [KEY_VIDEO] = XLAT(KEY_VIDEO),
+ #define XLAT_VAL_348 ((unsigned) (KEY_VIDEO))
+ #define XLAT_STR_348 STRINGIFY(KEY_VIDEO)
  [KEY_DIRECTORY] = XLAT(KEY_DIRECTORY),
+ #define XLAT_VAL_349 ((unsigned) (KEY_DIRECTORY))
+ #define XLAT_STR_349 STRINGIFY(KEY_DIRECTORY)
  [KEY_LIST] = XLAT(KEY_LIST),
+ #define XLAT_VAL_350 ((unsigned) (KEY_LIST))
+ #define XLAT_STR_350 STRINGIFY(KEY_LIST)
  [KEY_MEMO] = XLAT(KEY_MEMO),
+ #define XLAT_VAL_351 ((unsigned) (KEY_MEMO))
+ #define XLAT_STR_351 STRINGIFY(KEY_MEMO)
  [KEY_CALENDAR] = XLAT(KEY_CALENDAR),
+ #define XLAT_VAL_352 ((unsigned) (KEY_CALENDAR))
+ #define XLAT_STR_352 STRINGIFY(KEY_CALENDAR)
  [KEY_RED] = XLAT(KEY_RED),
+ #define XLAT_VAL_353 ((unsigned) (KEY_RED))
+ #define XLAT_STR_353 STRINGIFY(KEY_RED)
  [KEY_GREEN] = XLAT(KEY_GREEN),
+ #define XLAT_VAL_354 ((unsigned) (KEY_GREEN))
+ #define XLAT_STR_354 STRINGIFY(KEY_GREEN)
  [KEY_YELLOW] = XLAT(KEY_YELLOW),
+ #define XLAT_VAL_355 ((unsigned) (KEY_YELLOW))
+ #define XLAT_STR_355 STRINGIFY(KEY_YELLOW)
  [KEY_BLUE] = XLAT(KEY_BLUE),
+ #define XLAT_VAL_356 ((unsigned) (KEY_BLUE))
+ #define XLAT_STR_356 STRINGIFY(KEY_BLUE)
  [KEY_CHANNELUP] = XLAT(KEY_CHANNELUP),
+ #define XLAT_VAL_357 ((unsigned) (KEY_CHANNELUP))
+ #define XLAT_STR_357 STRINGIFY(KEY_CHANNELUP)
  [KEY_CHANNELDOWN] = XLAT(KEY_CHANNELDOWN),
+ #define XLAT_VAL_358 ((unsigned) (KEY_CHANNELDOWN))
+ #define XLAT_STR_358 STRINGIFY(KEY_CHANNELDOWN)
  [KEY_FIRST] = XLAT(KEY_FIRST),
+ #define XLAT_VAL_359 ((unsigned) (KEY_FIRST))
+ #define XLAT_STR_359 STRINGIFY(KEY_FIRST)
  [KEY_LAST] = XLAT(KEY_LAST),
+ #define XLAT_VAL_360 ((unsigned) (KEY_LAST))
+ #define XLAT_STR_360 STRINGIFY(KEY_LAST)
  [KEY_AB] = XLAT(KEY_AB),
+ #define XLAT_VAL_361 ((unsigned) (KEY_AB))
+ #define XLAT_STR_361 STRINGIFY(KEY_AB)
  [KEY_NEXT] = XLAT(KEY_NEXT),
+ #define XLAT_VAL_362 ((unsigned) (KEY_NEXT))
+ #define XLAT_STR_362 STRINGIFY(KEY_NEXT)
  [KEY_RESTART] = XLAT(KEY_RESTART),
+ #define XLAT_VAL_363 ((unsigned) (KEY_RESTART))
+ #define XLAT_STR_363 STRINGIFY(KEY_RESTART)
  [KEY_SLOW] = XLAT(KEY_SLOW),
+ #define XLAT_VAL_364 ((unsigned) (KEY_SLOW))
+ #define XLAT_STR_364 STRINGIFY(KEY_SLOW)
  [KEY_SHUFFLE] = XLAT(KEY_SHUFFLE),
+ #define XLAT_VAL_365 ((unsigned) (KEY_SHUFFLE))
+ #define XLAT_STR_365 STRINGIFY(KEY_SHUFFLE)
  [KEY_BREAK] = XLAT(KEY_BREAK),
+ #define XLAT_VAL_366 ((unsigned) (KEY_BREAK))
+ #define XLAT_STR_366 STRINGIFY(KEY_BREAK)
  [KEY_PREVIOUS] = XLAT(KEY_PREVIOUS),
+ #define XLAT_VAL_367 ((unsigned) (KEY_PREVIOUS))
+ #define XLAT_STR_367 STRINGIFY(KEY_PREVIOUS)
  [KEY_DIGITS] = XLAT(KEY_DIGITS),
+ #define XLAT_VAL_368 ((unsigned) (KEY_DIGITS))
+ #define XLAT_STR_368 STRINGIFY(KEY_DIGITS)
  [KEY_TEEN] = XLAT(KEY_TEEN),
+ #define XLAT_VAL_369 ((unsigned) (KEY_TEEN))
+ #define XLAT_STR_369 STRINGIFY(KEY_TEEN)
  [KEY_TWEN] = XLAT(KEY_TWEN),
+ #define XLAT_VAL_370 ((unsigned) (KEY_TWEN))
+ #define XLAT_STR_370 STRINGIFY(KEY_TWEN)
  [KEY_VIDEOPHONE] = XLAT(KEY_VIDEOPHONE),
+ #define XLAT_VAL_371 ((unsigned) (KEY_VIDEOPHONE))
+ #define XLAT_STR_371 STRINGIFY(KEY_VIDEOPHONE)
  [KEY_GAMES] = XLAT(KEY_GAMES),
+ #define XLAT_VAL_372 ((unsigned) (KEY_GAMES))
+ #define XLAT_STR_372 STRINGIFY(KEY_GAMES)
  [KEY_ZOOMIN] = XLAT(KEY_ZOOMIN),
+ #define XLAT_VAL_373 ((unsigned) (KEY_ZOOMIN))
+ #define XLAT_STR_373 STRINGIFY(KEY_ZOOMIN)
  [KEY_ZOOMOUT] = XLAT(KEY_ZOOMOUT),
+ #define XLAT_VAL_374 ((unsigned) (KEY_ZOOMOUT))
+ #define XLAT_STR_374 STRINGIFY(KEY_ZOOMOUT)
  [KEY_ZOOMRESET] = XLAT(KEY_ZOOMRESET),
+ #define XLAT_VAL_375 ((unsigned) (KEY_ZOOMRESET))
+ #define XLAT_STR_375 STRINGIFY(KEY_ZOOMRESET)
  [KEY_WORDPROCESSOR] = XLAT(KEY_WORDPROCESSOR),
+ #define XLAT_VAL_376 ((unsigned) (KEY_WORDPROCESSOR))
+ #define XLAT_STR_376 STRINGIFY(KEY_WORDPROCESSOR)
  [KEY_EDITOR] = XLAT(KEY_EDITOR),
+ #define XLAT_VAL_377 ((unsigned) (KEY_EDITOR))
+ #define XLAT_STR_377 STRINGIFY(KEY_EDITOR)
  [KEY_SPREADSHEET] = XLAT(KEY_SPREADSHEET),
+ #define XLAT_VAL_378 ((unsigned) (KEY_SPREADSHEET))
+ #define XLAT_STR_378 STRINGIFY(KEY_SPREADSHEET)
  [KEY_GRAPHICSEDITOR] = XLAT(KEY_GRAPHICSEDITOR),
+ #define XLAT_VAL_379 ((unsigned) (KEY_GRAPHICSEDITOR))
+ #define XLAT_STR_379 STRINGIFY(KEY_GRAPHICSEDITOR)
  [KEY_PRESENTATION] = XLAT(KEY_PRESENTATION),
+ #define XLAT_VAL_380 ((unsigned) (KEY_PRESENTATION))
+ #define XLAT_STR_380 STRINGIFY(KEY_PRESENTATION)
  [KEY_DATABASE] = XLAT(KEY_DATABASE),
+ #define XLAT_VAL_381 ((unsigned) (KEY_DATABASE))
+ #define XLAT_STR_381 STRINGIFY(KEY_DATABASE)
  [KEY_NEWS] = XLAT(KEY_NEWS),
+ #define XLAT_VAL_382 ((unsigned) (KEY_NEWS))
+ #define XLAT_STR_382 STRINGIFY(KEY_NEWS)
  [KEY_VOICEMAIL] = XLAT(KEY_VOICEMAIL),
+ #define XLAT_VAL_383 ((unsigned) (KEY_VOICEMAIL))
+ #define XLAT_STR_383 STRINGIFY(KEY_VOICEMAIL)
  [KEY_ADDRESSBOOK] = XLAT(KEY_ADDRESSBOOK),
+ #define XLAT_VAL_384 ((unsigned) (KEY_ADDRESSBOOK))
+ #define XLAT_STR_384 STRINGIFY(KEY_ADDRESSBOOK)
  [KEY_MESSENGER] = XLAT(KEY_MESSENGER),
+ #define XLAT_VAL_385 ((unsigned) (KEY_MESSENGER))
+ #define XLAT_STR_385 STRINGIFY(KEY_MESSENGER)
  [KEY_DISPLAYTOGGLE] = XLAT(KEY_DISPLAYTOGGLE),
+ #define XLAT_VAL_386 ((unsigned) (KEY_DISPLAYTOGGLE))
+ #define XLAT_STR_386 STRINGIFY(KEY_DISPLAYTOGGLE)
  [KEY_SPELLCHECK] = XLAT(KEY_SPELLCHECK),
+ #define XLAT_VAL_387 ((unsigned) (KEY_SPELLCHECK))
+ #define XLAT_STR_387 STRINGIFY(KEY_SPELLCHECK)
  [KEY_LOGOFF] = XLAT(KEY_LOGOFF),
+ #define XLAT_VAL_388 ((unsigned) (KEY_LOGOFF))
+ #define XLAT_STR_388 STRINGIFY(KEY_LOGOFF)
 
  [KEY_DOLLAR] = XLAT(KEY_DOLLAR),
+ #define XLAT_VAL_389 ((unsigned) (KEY_DOLLAR))
+ #define XLAT_STR_389 STRINGIFY(KEY_DOLLAR)
  [KEY_EURO] = XLAT(KEY_EURO),
+ #define XLAT_VAL_390 ((unsigned) (KEY_EURO))
+ #define XLAT_STR_390 STRINGIFY(KEY_EURO)
 
  [KEY_FRAMEBACK] = XLAT(KEY_FRAMEBACK),
+ #define XLAT_VAL_391 ((unsigned) (KEY_FRAMEBACK))
+ #define XLAT_STR_391 STRINGIFY(KEY_FRAMEBACK)
  [KEY_FRAMEFORWARD] = XLAT(KEY_FRAMEFORWARD),
+ #define XLAT_VAL_392 ((unsigned) (KEY_FRAMEFORWARD))
+ #define XLAT_STR_392 STRINGIFY(KEY_FRAMEFORWARD)
  [KEY_CONTEXT_MENU] = XLAT(KEY_CONTEXT_MENU),
+ #define XLAT_VAL_393 ((unsigned) (KEY_CONTEXT_MENU))
+ #define XLAT_STR_393 STRINGIFY(KEY_CONTEXT_MENU)
  [KEY_MEDIA_REPEAT] = XLAT(KEY_MEDIA_REPEAT),
+ #define XLAT_VAL_394 ((unsigned) (KEY_MEDIA_REPEAT))
+ #define XLAT_STR_394 STRINGIFY(KEY_MEDIA_REPEAT)
  [KEY_10CHANNELSUP] = XLAT(KEY_10CHANNELSUP),
+ #define XLAT_VAL_395 ((unsigned) (KEY_10CHANNELSUP))
+ #define XLAT_STR_395 STRINGIFY(KEY_10CHANNELSUP)
  [KEY_10CHANNELSDOWN] = XLAT(KEY_10CHANNELSDOWN),
+ #define XLAT_VAL_396 ((unsigned) (KEY_10CHANNELSDOWN))
+ #define XLAT_STR_396 STRINGIFY(KEY_10CHANNELSDOWN)
  [KEY_IMAGES] = XLAT(KEY_IMAGES),
+ #define XLAT_VAL_397 ((unsigned) (KEY_IMAGES))
+ #define XLAT_STR_397 STRINGIFY(KEY_IMAGES)
 
  [KEY_DEL_EOL] = XLAT(KEY_DEL_EOL),
+ #define XLAT_VAL_398 ((unsigned) (KEY_DEL_EOL))
+ #define XLAT_STR_398 STRINGIFY(KEY_DEL_EOL)
  [KEY_DEL_EOS] = XLAT(KEY_DEL_EOS),
+ #define XLAT_VAL_399 ((unsigned) (KEY_DEL_EOS))
+ #define XLAT_STR_399 STRINGIFY(KEY_DEL_EOS)
  [KEY_INS_LINE] = XLAT(KEY_INS_LINE),
+ #define XLAT_VAL_400 ((unsigned) (KEY_INS_LINE))
+ #define XLAT_STR_400 STRINGIFY(KEY_INS_LINE)
  [KEY_DEL_LINE] = XLAT(KEY_DEL_LINE),
+ #define XLAT_VAL_401 ((unsigned) (KEY_DEL_LINE))
+ #define XLAT_STR_401 STRINGIFY(KEY_DEL_LINE)
 
  [KEY_FN] = XLAT(KEY_FN),
+ #define XLAT_VAL_402 ((unsigned) (KEY_FN))
+ #define XLAT_STR_402 STRINGIFY(KEY_FN)
  [KEY_FN_ESC] = XLAT(KEY_FN_ESC),
+ #define XLAT_VAL_403 ((unsigned) (KEY_FN_ESC))
+ #define XLAT_STR_403 STRINGIFY(KEY_FN_ESC)
  [KEY_FN_F1] = XLAT(KEY_FN_F1),
+ #define XLAT_VAL_404 ((unsigned) (KEY_FN_F1))
+ #define XLAT_STR_404 STRINGIFY(KEY_FN_F1)
  [KEY_FN_F2] = XLAT(KEY_FN_F2),
+ #define XLAT_VAL_405 ((unsigned) (KEY_FN_F2))
+ #define XLAT_STR_405 STRINGIFY(KEY_FN_F2)
  [KEY_FN_F3] = XLAT(KEY_FN_F3),
+ #define XLAT_VAL_406 ((unsigned) (KEY_FN_F3))
+ #define XLAT_STR_406 STRINGIFY(KEY_FN_F3)
  [KEY_FN_F4] = XLAT(KEY_FN_F4),
+ #define XLAT_VAL_407 ((unsigned) (KEY_FN_F4))
+ #define XLAT_STR_407 STRINGIFY(KEY_FN_F4)
  [KEY_FN_F5] = XLAT(KEY_FN_F5),
+ #define XLAT_VAL_408 ((unsigned) (KEY_FN_F5))
+ #define XLAT_STR_408 STRINGIFY(KEY_FN_F5)
  [KEY_FN_F6] = XLAT(KEY_FN_F6),
+ #define XLAT_VAL_409 ((unsigned) (KEY_FN_F6))
+ #define XLAT_STR_409 STRINGIFY(KEY_FN_F6)
  [KEY_FN_F7] = XLAT(KEY_FN_F7),
+ #define XLAT_VAL_410 ((unsigned) (KEY_FN_F7))
+ #define XLAT_STR_410 STRINGIFY(KEY_FN_F7)
  [KEY_FN_F8] = XLAT(KEY_FN_F8),
+ #define XLAT_VAL_411 ((unsigned) (KEY_FN_F8))
+ #define XLAT_STR_411 STRINGIFY(KEY_FN_F8)
  [KEY_FN_F9] = XLAT(KEY_FN_F9),
+ #define XLAT_VAL_412 ((unsigned) (KEY_FN_F9))
+ #define XLAT_STR_412 STRINGIFY(KEY_FN_F9)
  [KEY_FN_F10] = XLAT(KEY_FN_F10),
+ #define XLAT_VAL_413 ((unsigned) (KEY_FN_F10))
+ #define XLAT_STR_413 STRINGIFY(KEY_FN_F10)
  [KEY_FN_F11] = XLAT(KEY_FN_F11),
+ #define XLAT_VAL_414 ((unsigned) (KEY_FN_F11))
+ #define XLAT_STR_414 STRINGIFY(KEY_FN_F11)
  [KEY_FN_F12] = XLAT(KEY_FN_F12),
+ #define XLAT_VAL_415 ((unsigned) (KEY_FN_F12))
+ #define XLAT_STR_415 STRINGIFY(KEY_FN_F12)
  [KEY_FN_1] = XLAT(KEY_FN_1),
+ #define XLAT_VAL_416 ((unsigned) (KEY_FN_1))
+ #define XLAT_STR_416 STRINGIFY(KEY_FN_1)
  [KEY_FN_2] = XLAT(KEY_FN_2),
+ #define XLAT_VAL_417 ((unsigned) (KEY_FN_2))
+ #define XLAT_STR_417 STRINGIFY(KEY_FN_2)
  [KEY_FN_D] = XLAT(KEY_FN_D),
+ #define XLAT_VAL_418 ((unsigned) (KEY_FN_D))
+ #define XLAT_STR_418 STRINGIFY(KEY_FN_D)
  [KEY_FN_E] = XLAT(KEY_FN_E),
+ #define XLAT_VAL_419 ((unsigned) (KEY_FN_E))
+ #define XLAT_STR_419 STRINGIFY(KEY_FN_E)
  [KEY_FN_F] = XLAT(KEY_FN_F),
+ #define XLAT_VAL_420 ((unsigned) (KEY_FN_F))
+ #define XLAT_STR_420 STRINGIFY(KEY_FN_F)
  [KEY_FN_S] = XLAT(KEY_FN_S),
+ #define XLAT_VAL_421 ((unsigned) (KEY_FN_S))
+ #define XLAT_STR_421 STRINGIFY(KEY_FN_S)
  [KEY_FN_B] = XLAT(KEY_FN_B),
+ #define XLAT_VAL_422 ((unsigned) (KEY_FN_B))
+ #define XLAT_STR_422 STRINGIFY(KEY_FN_B)
 
  [KEY_BRL_DOT1] = XLAT(KEY_BRL_DOT1),
+ #define XLAT_VAL_423 ((unsigned) (KEY_BRL_DOT1))
+ #define XLAT_STR_423 STRINGIFY(KEY_BRL_DOT1)
  [KEY_BRL_DOT2] = XLAT(KEY_BRL_DOT2),
+ #define XLAT_VAL_424 ((unsigned) (KEY_BRL_DOT2))
+ #define XLAT_STR_424 STRINGIFY(KEY_BRL_DOT2)
  [KEY_BRL_DOT3] = XLAT(KEY_BRL_DOT3),
+ #define XLAT_VAL_425 ((unsigned) (KEY_BRL_DOT3))
+ #define XLAT_STR_425 STRINGIFY(KEY_BRL_DOT3)
  [KEY_BRL_DOT4] = XLAT(KEY_BRL_DOT4),
+ #define XLAT_VAL_426 ((unsigned) (KEY_BRL_DOT4))
+ #define XLAT_STR_426 STRINGIFY(KEY_BRL_DOT4)
  [KEY_BRL_DOT5] = XLAT(KEY_BRL_DOT5),
+ #define XLAT_VAL_427 ((unsigned) (KEY_BRL_DOT5))
+ #define XLAT_STR_427 STRINGIFY(KEY_BRL_DOT5)
  [KEY_BRL_DOT6] = XLAT(KEY_BRL_DOT6),
+ #define XLAT_VAL_428 ((unsigned) (KEY_BRL_DOT6))
+ #define XLAT_STR_428 STRINGIFY(KEY_BRL_DOT6)
  [KEY_BRL_DOT7] = XLAT(KEY_BRL_DOT7),
+ #define XLAT_VAL_429 ((unsigned) (KEY_BRL_DOT7))
+ #define XLAT_STR_429 STRINGIFY(KEY_BRL_DOT7)
  [KEY_BRL_DOT8] = XLAT(KEY_BRL_DOT8),
+ #define XLAT_VAL_430 ((unsigned) (KEY_BRL_DOT8))
+ #define XLAT_STR_430 STRINGIFY(KEY_BRL_DOT8)
  [KEY_BRL_DOT9] = XLAT(KEY_BRL_DOT9),
+ #define XLAT_VAL_431 ((unsigned) (KEY_BRL_DOT9))
+ #define XLAT_STR_431 STRINGIFY(KEY_BRL_DOT9)
  [KEY_BRL_DOT10] = XLAT(KEY_BRL_DOT10),
+ #define XLAT_VAL_432 ((unsigned) (KEY_BRL_DOT10))
+ #define XLAT_STR_432 STRINGIFY(KEY_BRL_DOT10)
 
  [KEY_NUMERIC_0] = XLAT(KEY_NUMERIC_0),
+ #define XLAT_VAL_433 ((unsigned) (KEY_NUMERIC_0))
+ #define XLAT_STR_433 STRINGIFY(KEY_NUMERIC_0)
  [KEY_NUMERIC_1] = XLAT(KEY_NUMERIC_1),
+ #define XLAT_VAL_434 ((unsigned) (KEY_NUMERIC_1))
+ #define XLAT_STR_434 STRINGIFY(KEY_NUMERIC_1)
  [KEY_NUMERIC_2] = XLAT(KEY_NUMERIC_2),
+ #define XLAT_VAL_435 ((unsigned) (KEY_NUMERIC_2))
+ #define XLAT_STR_435 STRINGIFY(KEY_NUMERIC_2)
  [KEY_NUMERIC_3] = XLAT(KEY_NUMERIC_3),
+ #define XLAT_VAL_436 ((unsigned) (KEY_NUMERIC_3))
+ #define XLAT_STR_436 STRINGIFY(KEY_NUMERIC_3)
  [KEY_NUMERIC_4] = XLAT(KEY_NUMERIC_4),
+ #define XLAT_VAL_437 ((unsigned) (KEY_NUMERIC_4))
+ #define XLAT_STR_437 STRINGIFY(KEY_NUMERIC_4)
  [KEY_NUMERIC_5] = XLAT(KEY_NUMERIC_5),
+ #define XLAT_VAL_438 ((unsigned) (KEY_NUMERIC_5))
+ #define XLAT_STR_438 STRINGIFY(KEY_NUMERIC_5)
  [KEY_NUMERIC_6] = XLAT(KEY_NUMERIC_6),
+ #define XLAT_VAL_439 ((unsigned) (KEY_NUMERIC_6))
+ #define XLAT_STR_439 STRINGIFY(KEY_NUMERIC_6)
  [KEY_NUMERIC_7] = XLAT(KEY_NUMERIC_7),
+ #define XLAT_VAL_440 ((unsigned) (KEY_NUMERIC_7))
+ #define XLAT_STR_440 STRINGIFY(KEY_NUMERIC_7)
  [KEY_NUMERIC_8] = XLAT(KEY_NUMERIC_8),
+ #define XLAT_VAL_441 ((unsigned) (KEY_NUMERIC_8))
+ #define XLAT_STR_441 STRINGIFY(KEY_NUMERIC_8)
  [KEY_NUMERIC_9] = XLAT(KEY_NUMERIC_9),
+ #define XLAT_VAL_442 ((unsigned) (KEY_NUMERIC_9))
+ #define XLAT_STR_442 STRINGIFY(KEY_NUMERIC_9)
  [KEY_NUMERIC_STAR] = XLAT(KEY_NUMERIC_STAR),
+ #define XLAT_VAL_443 ((unsigned) (KEY_NUMERIC_STAR))
+ #define XLAT_STR_443 STRINGIFY(KEY_NUMERIC_STAR)
  [KEY_NUMERIC_POUND] = XLAT(KEY_NUMERIC_POUND),
+ #define XLAT_VAL_444 ((unsigned) (KEY_NUMERIC_POUND))
+ #define XLAT_STR_444 STRINGIFY(KEY_NUMERIC_POUND)
  [KEY_NUMERIC_A] = XLAT(KEY_NUMERIC_A),
+ #define XLAT_VAL_445 ((unsigned) (KEY_NUMERIC_A))
+ #define XLAT_STR_445 STRINGIFY(KEY_NUMERIC_A)
  [KEY_NUMERIC_B] = XLAT(KEY_NUMERIC_B),
+ #define XLAT_VAL_446 ((unsigned) (KEY_NUMERIC_B))
+ #define XLAT_STR_446 STRINGIFY(KEY_NUMERIC_B)
  [KEY_NUMERIC_C] = XLAT(KEY_NUMERIC_C),
+ #define XLAT_VAL_447 ((unsigned) (KEY_NUMERIC_C))
+ #define XLAT_STR_447 STRINGIFY(KEY_NUMERIC_C)
  [KEY_NUMERIC_D] = XLAT(KEY_NUMERIC_D),
+ #define XLAT_VAL_448 ((unsigned) (KEY_NUMERIC_D))
+ #define XLAT_STR_448 STRINGIFY(KEY_NUMERIC_D)
 
  [KEY_CAMERA_FOCUS] = XLAT(KEY_CAMERA_FOCUS),
+ #define XLAT_VAL_449 ((unsigned) (KEY_CAMERA_FOCUS))
+ #define XLAT_STR_449 STRINGIFY(KEY_CAMERA_FOCUS)
  [KEY_WPS_BUTTON] = XLAT(KEY_WPS_BUTTON),
+ #define XLAT_VAL_450 ((unsigned) (KEY_WPS_BUTTON))
+ #define XLAT_STR_450 STRINGIFY(KEY_WPS_BUTTON)
 
  [KEY_TOUCHPAD_TOGGLE] = XLAT(KEY_TOUCHPAD_TOGGLE),
+ #define XLAT_VAL_451 ((unsigned) (KEY_TOUCHPAD_TOGGLE))
+ #define XLAT_STR_451 STRINGIFY(KEY_TOUCHPAD_TOGGLE)
  [KEY_TOUCHPAD_ON] = XLAT(KEY_TOUCHPAD_ON),
+ #define XLAT_VAL_452 ((unsigned) (KEY_TOUCHPAD_ON))
+ #define XLAT_STR_452 STRINGIFY(KEY_TOUCHPAD_ON)
  [KEY_TOUCHPAD_OFF] = XLAT(KEY_TOUCHPAD_OFF),
+ #define XLAT_VAL_453 ((unsigned) (KEY_TOUCHPAD_OFF))
+ #define XLAT_STR_453 STRINGIFY(KEY_TOUCHPAD_OFF)
 
  [KEY_CAMERA_ZOOMIN] = XLAT(KEY_CAMERA_ZOOMIN),
+ #define XLAT_VAL_454 ((unsigned) (KEY_CAMERA_ZOOMIN))
+ #define XLAT_STR_454 STRINGIFY(KEY_CAMERA_ZOOMIN)
  [KEY_CAMERA_ZOOMOUT] = XLAT(KEY_CAMERA_ZOOMOUT),
+ #define XLAT_VAL_455 ((unsigned) (KEY_CAMERA_ZOOMOUT))
+ #define XLAT_STR_455 STRINGIFY(KEY_CAMERA_ZOOMOUT)
  [KEY_CAMERA_UP] = XLAT(KEY_CAMERA_UP),
+ #define XLAT_VAL_456 ((unsigned) (KEY_CAMERA_UP))
+ #define XLAT_STR_456 STRINGIFY(KEY_CAMERA_UP)
  [KEY_CAMERA_DOWN] = XLAT(KEY_CAMERA_DOWN),
+ #define XLAT_VAL_457 ((unsigned) (KEY_CAMERA_DOWN))
+ #define XLAT_STR_457 STRINGIFY(KEY_CAMERA_DOWN)
  [KEY_CAMERA_LEFT] = XLAT(KEY_CAMERA_LEFT),
+ #define XLAT_VAL_458 ((unsigned) (KEY_CAMERA_LEFT))
+ #define XLAT_STR_458 STRINGIFY(KEY_CAMERA_LEFT)
  [KEY_CAMERA_RIGHT] = XLAT(KEY_CAMERA_RIGHT),
+ #define XLAT_VAL_459 ((unsigned) (KEY_CAMERA_RIGHT))
+ #define XLAT_STR_459 STRINGIFY(KEY_CAMERA_RIGHT)
 
  [KEY_ATTENDANT_ON] = XLAT(KEY_ATTENDANT_ON),
+ #define XLAT_VAL_460 ((unsigned) (KEY_ATTENDANT_ON))
+ #define XLAT_STR_460 STRINGIFY(KEY_ATTENDANT_ON)
  [KEY_ATTENDANT_OFF] = XLAT(KEY_ATTENDANT_OFF),
+ #define XLAT_VAL_461 ((unsigned) (KEY_ATTENDANT_OFF))
+ #define XLAT_STR_461 STRINGIFY(KEY_ATTENDANT_OFF)
  [KEY_ATTENDANT_TOGGLE] = XLAT(KEY_ATTENDANT_TOGGLE),
+ #define XLAT_VAL_462 ((unsigned) (KEY_ATTENDANT_TOGGLE))
+ #define XLAT_STR_462 STRINGIFY(KEY_ATTENDANT_TOGGLE)
  [KEY_LIGHTS_TOGGLE] = XLAT(KEY_LIGHTS_TOGGLE),
+ #define XLAT_VAL_463 ((unsigned) (KEY_LIGHTS_TOGGLE))
+ #define XLAT_STR_463 STRINGIFY(KEY_LIGHTS_TOGGLE)
 
  [BTN_DPAD_UP] = XLAT(BTN_DPAD_UP),
+ #define XLAT_VAL_464 ((unsigned) (BTN_DPAD_UP))
+ #define XLAT_STR_464 STRINGIFY(BTN_DPAD_UP)
  [BTN_DPAD_DOWN] = XLAT(BTN_DPAD_DOWN),
+ #define XLAT_VAL_465 ((unsigned) (BTN_DPAD_DOWN))
+ #define XLAT_STR_465 STRINGIFY(BTN_DPAD_DOWN)
  [BTN_DPAD_LEFT] = XLAT(BTN_DPAD_LEFT),
+ #define XLAT_VAL_466 ((unsigned) (BTN_DPAD_LEFT))
+ #define XLAT_STR_466 STRINGIFY(BTN_DPAD_LEFT)
  [BTN_DPAD_RIGHT] = XLAT(BTN_DPAD_RIGHT),
+ #define XLAT_VAL_467 ((unsigned) (BTN_DPAD_RIGHT))
+ #define XLAT_STR_467 STRINGIFY(BTN_DPAD_RIGHT)
 
  [KEY_ALS_TOGGLE] = XLAT(KEY_ALS_TOGGLE),
+ #define XLAT_VAL_468 ((unsigned) (KEY_ALS_TOGGLE))
+ #define XLAT_STR_468 STRINGIFY(KEY_ALS_TOGGLE)
  [KEY_ROTATE_LOCK_TOGGLE] = XLAT(KEY_ROTATE_LOCK_TOGGLE),
+ #define XLAT_VAL_469 ((unsigned) (KEY_ROTATE_LOCK_TOGGLE))
+ #define XLAT_STR_469 STRINGIFY(KEY_ROTATE_LOCK_TOGGLE)
 
  [KEY_BUTTONCONFIG] = XLAT(KEY_BUTTONCONFIG),
+ #define XLAT_VAL_470 ((unsigned) (KEY_BUTTONCONFIG))
+ #define XLAT_STR_470 STRINGIFY(KEY_BUTTONCONFIG)
  [KEY_TASKMANAGER] = XLAT(KEY_TASKMANAGER),
+ #define XLAT_VAL_471 ((unsigned) (KEY_TASKMANAGER))
+ #define XLAT_STR_471 STRINGIFY(KEY_TASKMANAGER)
  [KEY_JOURNAL] = XLAT(KEY_JOURNAL),
+ #define XLAT_VAL_472 ((unsigned) (KEY_JOURNAL))
+ #define XLAT_STR_472 STRINGIFY(KEY_JOURNAL)
  [KEY_CONTROLPANEL] = XLAT(KEY_CONTROLPANEL),
+ #define XLAT_VAL_473 ((unsigned) (KEY_CONTROLPANEL))
+ #define XLAT_STR_473 STRINGIFY(KEY_CONTROLPANEL)
  [KEY_APPSELECT] = XLAT(KEY_APPSELECT),
+ #define XLAT_VAL_474 ((unsigned) (KEY_APPSELECT))
+ #define XLAT_STR_474 STRINGIFY(KEY_APPSELECT)
  [KEY_SCREENSAVER] = XLAT(KEY_SCREENSAVER),
+ #define XLAT_VAL_475 ((unsigned) (KEY_SCREENSAVER))
+ #define XLAT_STR_475 STRINGIFY(KEY_SCREENSAVER)
  [KEY_VOICECOMMAND] = XLAT(KEY_VOICECOMMAND),
+ #define XLAT_VAL_476 ((unsigned) (KEY_VOICECOMMAND))
+ #define XLAT_STR_476 STRINGIFY(KEY_VOICECOMMAND)
  [KEY_ASSISTANT] = XLAT(KEY_ASSISTANT),
+ #define XLAT_VAL_477 ((unsigned) (KEY_ASSISTANT))
+ #define XLAT_STR_477 STRINGIFY(KEY_ASSISTANT)
+ [KEY_KBD_LAYOUT_NEXT] = XLAT(KEY_KBD_LAYOUT_NEXT),
+ #define XLAT_VAL_478 ((unsigned) (KEY_KBD_LAYOUT_NEXT))
+ #define XLAT_STR_478 STRINGIFY(KEY_KBD_LAYOUT_NEXT)
 
 #ifndef STRACE_WORKAROUND_FOR_KEY_BRIGHTNESS_MIN
 # define STRACE_WORKAROUND_FOR_KEY_BRIGHTNESS_MIN
@@ -4381,35 +5647,85 @@ const struct xlat evdev_keycode[] = {
 # undef KEY_BRIGHTNESS_MIN
 #endif
  [KEY_BRIGHTNESS_MIN] = XLAT(KEY_BRIGHTNESS_MIN),
+ #define XLAT_VAL_479 ((unsigned) (KEY_BRIGHTNESS_MIN))
+ #define XLAT_STR_479 STRINGIFY(KEY_BRIGHTNESS_MIN)
 
  [KEY_BRIGHTNESS_MAX] = XLAT(KEY_BRIGHTNESS_MAX),
+ #define XLAT_VAL_480 ((unsigned) (KEY_BRIGHTNESS_MAX))
+ #define XLAT_STR_480 STRINGIFY(KEY_BRIGHTNESS_MAX)
 
  [KEY_KBDINPUTASSIST_PREV] = XLAT(KEY_KBDINPUTASSIST_PREV),
+ #define XLAT_VAL_481 ((unsigned) (KEY_KBDINPUTASSIST_PREV))
+ #define XLAT_STR_481 STRINGIFY(KEY_KBDINPUTASSIST_PREV)
  [KEY_KBDINPUTASSIST_NEXT] = XLAT(KEY_KBDINPUTASSIST_NEXT),
+ #define XLAT_VAL_482 ((unsigned) (KEY_KBDINPUTASSIST_NEXT))
+ #define XLAT_STR_482 STRINGIFY(KEY_KBDINPUTASSIST_NEXT)
  [KEY_KBDINPUTASSIST_PREVGROUP] = XLAT(KEY_KBDINPUTASSIST_PREVGROUP),
+ #define XLAT_VAL_483 ((unsigned) (KEY_KBDINPUTASSIST_PREVGROUP))
+ #define XLAT_STR_483 STRINGIFY(KEY_KBDINPUTASSIST_PREVGROUP)
  [KEY_KBDINPUTASSIST_NEXTGROUP] = XLAT(KEY_KBDINPUTASSIST_NEXTGROUP),
+ #define XLAT_VAL_484 ((unsigned) (KEY_KBDINPUTASSIST_NEXTGROUP))
+ #define XLAT_STR_484 STRINGIFY(KEY_KBDINPUTASSIST_NEXTGROUP)
  [KEY_KBDINPUTASSIST_ACCEPT] = XLAT(KEY_KBDINPUTASSIST_ACCEPT),
+ #define XLAT_VAL_485 ((unsigned) (KEY_KBDINPUTASSIST_ACCEPT))
+ #define XLAT_STR_485 STRINGIFY(KEY_KBDINPUTASSIST_ACCEPT)
  [KEY_KBDINPUTASSIST_CANCEL] = XLAT(KEY_KBDINPUTASSIST_CANCEL),
+ #define XLAT_VAL_486 ((unsigned) (KEY_KBDINPUTASSIST_CANCEL))
+ #define XLAT_STR_486 STRINGIFY(KEY_KBDINPUTASSIST_CANCEL)
 
  [KEY_RIGHT_UP] = XLAT(KEY_RIGHT_UP),
+ #define XLAT_VAL_487 ((unsigned) (KEY_RIGHT_UP))
+ #define XLAT_STR_487 STRINGIFY(KEY_RIGHT_UP)
  [KEY_RIGHT_DOWN] = XLAT(KEY_RIGHT_DOWN),
+ #define XLAT_VAL_488 ((unsigned) (KEY_RIGHT_DOWN))
+ #define XLAT_STR_488 STRINGIFY(KEY_RIGHT_DOWN)
  [KEY_LEFT_UP] = XLAT(KEY_LEFT_UP),
+ #define XLAT_VAL_489 ((unsigned) (KEY_LEFT_UP))
+ #define XLAT_STR_489 STRINGIFY(KEY_LEFT_UP)
  [KEY_LEFT_DOWN] = XLAT(KEY_LEFT_DOWN),
+ #define XLAT_VAL_490 ((unsigned) (KEY_LEFT_DOWN))
+ #define XLAT_STR_490 STRINGIFY(KEY_LEFT_DOWN)
 
  [KEY_ROOT_MENU] = XLAT(KEY_ROOT_MENU),
+ #define XLAT_VAL_491 ((unsigned) (KEY_ROOT_MENU))
+ #define XLAT_STR_491 STRINGIFY(KEY_ROOT_MENU)
  [KEY_MEDIA_TOP_MENU] = XLAT(KEY_MEDIA_TOP_MENU),
+ #define XLAT_VAL_492 ((unsigned) (KEY_MEDIA_TOP_MENU))
+ #define XLAT_STR_492 STRINGIFY(KEY_MEDIA_TOP_MENU)
  [KEY_NUMERIC_11] = XLAT(KEY_NUMERIC_11),
+ #define XLAT_VAL_493 ((unsigned) (KEY_NUMERIC_11))
+ #define XLAT_STR_493 STRINGIFY(KEY_NUMERIC_11)
  [KEY_NUMERIC_12] = XLAT(KEY_NUMERIC_12),
+ #define XLAT_VAL_494 ((unsigned) (KEY_NUMERIC_12))
+ #define XLAT_STR_494 STRINGIFY(KEY_NUMERIC_12)
 
  [KEY_AUDIO_DESC] = XLAT(KEY_AUDIO_DESC),
+ #define XLAT_VAL_495 ((unsigned) (KEY_AUDIO_DESC))
+ #define XLAT_STR_495 STRINGIFY(KEY_AUDIO_DESC)
  [KEY_3D_MODE] = XLAT(KEY_3D_MODE),
+ #define XLAT_VAL_496 ((unsigned) (KEY_3D_MODE))
+ #define XLAT_STR_496 STRINGIFY(KEY_3D_MODE)
  [KEY_NEXT_FAVORITE] = XLAT(KEY_NEXT_FAVORITE),
+ #define XLAT_VAL_497 ((unsigned) (KEY_NEXT_FAVORITE))
+ #define XLAT_STR_497 STRINGIFY(KEY_NEXT_FAVORITE)
  [KEY_STOP_RECORD] = XLAT(KEY_STOP_RECORD),
+ #define XLAT_VAL_498 ((unsigned) (KEY_STOP_RECORD))
+ #define XLAT_STR_498 STRINGIFY(KEY_STOP_RECORD)
  [KEY_PAUSE_RECORD] = XLAT(KEY_PAUSE_RECORD),
+ #define XLAT_VAL_499 ((unsigned) (KEY_PAUSE_RECORD))
+ #define XLAT_STR_499 STRINGIFY(KEY_PAUSE_RECORD)
  [KEY_VOD] = XLAT(KEY_VOD),
+ #define XLAT_VAL_500 ((unsigned) (KEY_VOD))
+ #define XLAT_STR_500 STRINGIFY(KEY_VOD)
  [KEY_UNMUTE] = XLAT(KEY_UNMUTE),
+ #define XLAT_VAL_501 ((unsigned) (KEY_UNMUTE))
+ #define XLAT_STR_501 STRINGIFY(KEY_UNMUTE)
  [KEY_FASTREVERSE] = XLAT(KEY_FASTREVERSE),
+ #define XLAT_VAL_502 ((unsigned) (KEY_FASTREVERSE))
+ #define XLAT_STR_502 STRINGIFY(KEY_FASTREVERSE)
  [KEY_SLOWREVERSE] = XLAT(KEY_SLOWREVERSE),
+ #define XLAT_VAL_503 ((unsigned) (KEY_SLOWREVERSE))
+ #define XLAT_STR_503 STRINGIFY(KEY_SLOWREVERSE)
 
 #ifndef STRACE_WORKAROUND_FOR_KEY_DATA
 # define STRACE_WORKAROUND_FOR_KEY_DATA
@@ -4423,52 +5739,4990 @@ const struct xlat evdev_keycode[] = {
 # undef KEY_DATA
 #endif
  [KEY_DATA] = XLAT(KEY_DATA),
+ #define XLAT_VAL_504 ((unsigned) (KEY_DATA))
+ #define XLAT_STR_504 STRINGIFY(KEY_DATA)
 
  [KEY_ONSCREEN_KEYBOARD] = XLAT(KEY_ONSCREEN_KEYBOARD),
+ #define XLAT_VAL_505 ((unsigned) (KEY_ONSCREEN_KEYBOARD))
+ #define XLAT_STR_505 STRINGIFY(KEY_ONSCREEN_KEYBOARD)
+ [KEY_PRIVACY_SCREEN_TOGGLE] = XLAT(KEY_PRIVACY_SCREEN_TOGGLE),
+ #define XLAT_VAL_506 ((unsigned) (KEY_PRIVACY_SCREEN_TOGGLE))
+ #define XLAT_STR_506 STRINGIFY(KEY_PRIVACY_SCREEN_TOGGLE)
+
+ [KEY_SELECTIVE_SCREENSHOT] = XLAT(KEY_SELECTIVE_SCREENSHOT),
+ #define XLAT_VAL_507 ((unsigned) (KEY_SELECTIVE_SCREENSHOT))
+ #define XLAT_STR_507 STRINGIFY(KEY_SELECTIVE_SCREENSHOT)
+
+ [KEY_MACRO1] = XLAT(KEY_MACRO1),
+ #define XLAT_VAL_508 ((unsigned) (KEY_MACRO1))
+ #define XLAT_STR_508 STRINGIFY(KEY_MACRO1)
+ [KEY_MACRO2] = XLAT(KEY_MACRO2),
+ #define XLAT_VAL_509 ((unsigned) (KEY_MACRO2))
+ #define XLAT_STR_509 STRINGIFY(KEY_MACRO2)
+ [KEY_MACRO3] = XLAT(KEY_MACRO3),
+ #define XLAT_VAL_510 ((unsigned) (KEY_MACRO3))
+ #define XLAT_STR_510 STRINGIFY(KEY_MACRO3)
+ [KEY_MACRO4] = XLAT(KEY_MACRO4),
+ #define XLAT_VAL_511 ((unsigned) (KEY_MACRO4))
+ #define XLAT_STR_511 STRINGIFY(KEY_MACRO4)
+ [KEY_MACRO5] = XLAT(KEY_MACRO5),
+ #define XLAT_VAL_512 ((unsigned) (KEY_MACRO5))
+ #define XLAT_STR_512 STRINGIFY(KEY_MACRO5)
+ [KEY_MACRO6] = XLAT(KEY_MACRO6),
+ #define XLAT_VAL_513 ((unsigned) (KEY_MACRO6))
+ #define XLAT_STR_513 STRINGIFY(KEY_MACRO6)
+ [KEY_MACRO7] = XLAT(KEY_MACRO7),
+ #define XLAT_VAL_514 ((unsigned) (KEY_MACRO7))
+ #define XLAT_STR_514 STRINGIFY(KEY_MACRO7)
+ [KEY_MACRO8] = XLAT(KEY_MACRO8),
+ #define XLAT_VAL_515 ((unsigned) (KEY_MACRO8))
+ #define XLAT_STR_515 STRINGIFY(KEY_MACRO8)
+ [KEY_MACRO9] = XLAT(KEY_MACRO9),
+ #define XLAT_VAL_516 ((unsigned) (KEY_MACRO9))
+ #define XLAT_STR_516 STRINGIFY(KEY_MACRO9)
+ [KEY_MACRO10] = XLAT(KEY_MACRO10),
+ #define XLAT_VAL_517 ((unsigned) (KEY_MACRO10))
+ #define XLAT_STR_517 STRINGIFY(KEY_MACRO10)
+ [KEY_MACRO11] = XLAT(KEY_MACRO11),
+ #define XLAT_VAL_518 ((unsigned) (KEY_MACRO11))
+ #define XLAT_STR_518 STRINGIFY(KEY_MACRO11)
+ [KEY_MACRO12] = XLAT(KEY_MACRO12),
+ #define XLAT_VAL_519 ((unsigned) (KEY_MACRO12))
+ #define XLAT_STR_519 STRINGIFY(KEY_MACRO12)
+ [KEY_MACRO13] = XLAT(KEY_MACRO13),
+ #define XLAT_VAL_520 ((unsigned) (KEY_MACRO13))
+ #define XLAT_STR_520 STRINGIFY(KEY_MACRO13)
+ [KEY_MACRO14] = XLAT(KEY_MACRO14),
+ #define XLAT_VAL_521 ((unsigned) (KEY_MACRO14))
+ #define XLAT_STR_521 STRINGIFY(KEY_MACRO14)
+ [KEY_MACRO15] = XLAT(KEY_MACRO15),
+ #define XLAT_VAL_522 ((unsigned) (KEY_MACRO15))
+ #define XLAT_STR_522 STRINGIFY(KEY_MACRO15)
+ [KEY_MACRO16] = XLAT(KEY_MACRO16),
+ #define XLAT_VAL_523 ((unsigned) (KEY_MACRO16))
+ #define XLAT_STR_523 STRINGIFY(KEY_MACRO16)
+ [KEY_MACRO17] = XLAT(KEY_MACRO17),
+ #define XLAT_VAL_524 ((unsigned) (KEY_MACRO17))
+ #define XLAT_STR_524 STRINGIFY(KEY_MACRO17)
+ [KEY_MACRO18] = XLAT(KEY_MACRO18),
+ #define XLAT_VAL_525 ((unsigned) (KEY_MACRO18))
+ #define XLAT_STR_525 STRINGIFY(KEY_MACRO18)
+ [KEY_MACRO19] = XLAT(KEY_MACRO19),
+ #define XLAT_VAL_526 ((unsigned) (KEY_MACRO19))
+ #define XLAT_STR_526 STRINGIFY(KEY_MACRO19)
+ [KEY_MACRO20] = XLAT(KEY_MACRO20),
+ #define XLAT_VAL_527 ((unsigned) (KEY_MACRO20))
+ #define XLAT_STR_527 STRINGIFY(KEY_MACRO20)
+ [KEY_MACRO21] = XLAT(KEY_MACRO21),
+ #define XLAT_VAL_528 ((unsigned) (KEY_MACRO21))
+ #define XLAT_STR_528 STRINGIFY(KEY_MACRO21)
+ [KEY_MACRO22] = XLAT(KEY_MACRO22),
+ #define XLAT_VAL_529 ((unsigned) (KEY_MACRO22))
+ #define XLAT_STR_529 STRINGIFY(KEY_MACRO22)
+ [KEY_MACRO23] = XLAT(KEY_MACRO23),
+ #define XLAT_VAL_530 ((unsigned) (KEY_MACRO23))
+ #define XLAT_STR_530 STRINGIFY(KEY_MACRO23)
+ [KEY_MACRO24] = XLAT(KEY_MACRO24),
+ #define XLAT_VAL_531 ((unsigned) (KEY_MACRO24))
+ #define XLAT_STR_531 STRINGIFY(KEY_MACRO24)
+ [KEY_MACRO25] = XLAT(KEY_MACRO25),
+ #define XLAT_VAL_532 ((unsigned) (KEY_MACRO25))
+ #define XLAT_STR_532 STRINGIFY(KEY_MACRO25)
+ [KEY_MACRO26] = XLAT(KEY_MACRO26),
+ #define XLAT_VAL_533 ((unsigned) (KEY_MACRO26))
+ #define XLAT_STR_533 STRINGIFY(KEY_MACRO26)
+ [KEY_MACRO27] = XLAT(KEY_MACRO27),
+ #define XLAT_VAL_534 ((unsigned) (KEY_MACRO27))
+ #define XLAT_STR_534 STRINGIFY(KEY_MACRO27)
+ [KEY_MACRO28] = XLAT(KEY_MACRO28),
+ #define XLAT_VAL_535 ((unsigned) (KEY_MACRO28))
+ #define XLAT_STR_535 STRINGIFY(KEY_MACRO28)
+ [KEY_MACRO29] = XLAT(KEY_MACRO29),
+ #define XLAT_VAL_536 ((unsigned) (KEY_MACRO29))
+ #define XLAT_STR_536 STRINGIFY(KEY_MACRO29)
+ [KEY_MACRO30] = XLAT(KEY_MACRO30),
+ #define XLAT_VAL_537 ((unsigned) (KEY_MACRO30))
+ #define XLAT_STR_537 STRINGIFY(KEY_MACRO30)
+
+ [KEY_MACRO_RECORD_START] = XLAT(KEY_MACRO_RECORD_START),
+ #define XLAT_VAL_538 ((unsigned) (KEY_MACRO_RECORD_START))
+ #define XLAT_STR_538 STRINGIFY(KEY_MACRO_RECORD_START)
+ [KEY_MACRO_RECORD_STOP] = XLAT(KEY_MACRO_RECORD_STOP),
+ #define XLAT_VAL_539 ((unsigned) (KEY_MACRO_RECORD_STOP))
+ #define XLAT_STR_539 STRINGIFY(KEY_MACRO_RECORD_STOP)
+ [KEY_MACRO_PRESET_CYCLE] = XLAT(KEY_MACRO_PRESET_CYCLE),
+ #define XLAT_VAL_540 ((unsigned) (KEY_MACRO_PRESET_CYCLE))
+ #define XLAT_STR_540 STRINGIFY(KEY_MACRO_PRESET_CYCLE)
+ [KEY_MACRO_PRESET1] = XLAT(KEY_MACRO_PRESET1),
+ #define XLAT_VAL_541 ((unsigned) (KEY_MACRO_PRESET1))
+ #define XLAT_STR_541 STRINGIFY(KEY_MACRO_PRESET1)
+ [KEY_MACRO_PRESET2] = XLAT(KEY_MACRO_PRESET2),
+ #define XLAT_VAL_542 ((unsigned) (KEY_MACRO_PRESET2))
+ #define XLAT_STR_542 STRINGIFY(KEY_MACRO_PRESET2)
+ [KEY_MACRO_PRESET3] = XLAT(KEY_MACRO_PRESET3),
+ #define XLAT_VAL_543 ((unsigned) (KEY_MACRO_PRESET3))
+ #define XLAT_STR_543 STRINGIFY(KEY_MACRO_PRESET3)
+
+ [KEY_KBD_LCD_MENU1] = XLAT(KEY_KBD_LCD_MENU1),
+ #define XLAT_VAL_544 ((unsigned) (KEY_KBD_LCD_MENU1))
+ #define XLAT_STR_544 STRINGIFY(KEY_KBD_LCD_MENU1)
+ [KEY_KBD_LCD_MENU2] = XLAT(KEY_KBD_LCD_MENU2),
+ #define XLAT_VAL_545 ((unsigned) (KEY_KBD_LCD_MENU2))
+ #define XLAT_STR_545 STRINGIFY(KEY_KBD_LCD_MENU2)
+ [KEY_KBD_LCD_MENU3] = XLAT(KEY_KBD_LCD_MENU3),
+ #define XLAT_VAL_546 ((unsigned) (KEY_KBD_LCD_MENU3))
+ #define XLAT_STR_546 STRINGIFY(KEY_KBD_LCD_MENU3)
+ [KEY_KBD_LCD_MENU4] = XLAT(KEY_KBD_LCD_MENU4),
+ #define XLAT_VAL_547 ((unsigned) (KEY_KBD_LCD_MENU4))
+ #define XLAT_STR_547 STRINGIFY(KEY_KBD_LCD_MENU4)
+ [KEY_KBD_LCD_MENU5] = XLAT(KEY_KBD_LCD_MENU5),
+ #define XLAT_VAL_548 ((unsigned) (KEY_KBD_LCD_MENU5))
+ #define XLAT_STR_548 STRINGIFY(KEY_KBD_LCD_MENU5)
 
  [BTN_TRIGGER_HAPPY1] = XLAT(BTN_TRIGGER_HAPPY1),
+ #define XLAT_VAL_549 ((unsigned) (BTN_TRIGGER_HAPPY1))
+ #define XLAT_STR_549 STRINGIFY(BTN_TRIGGER_HAPPY1)
  [BTN_TRIGGER_HAPPY2] = XLAT(BTN_TRIGGER_HAPPY2),
+ #define XLAT_VAL_550 ((unsigned) (BTN_TRIGGER_HAPPY2))
+ #define XLAT_STR_550 STRINGIFY(BTN_TRIGGER_HAPPY2)
  [BTN_TRIGGER_HAPPY3] = XLAT(BTN_TRIGGER_HAPPY3),
+ #define XLAT_VAL_551 ((unsigned) (BTN_TRIGGER_HAPPY3))
+ #define XLAT_STR_551 STRINGIFY(BTN_TRIGGER_HAPPY3)
  [BTN_TRIGGER_HAPPY4] = XLAT(BTN_TRIGGER_HAPPY4),
+ #define XLAT_VAL_552 ((unsigned) (BTN_TRIGGER_HAPPY4))
+ #define XLAT_STR_552 STRINGIFY(BTN_TRIGGER_HAPPY4)
  [BTN_TRIGGER_HAPPY5] = XLAT(BTN_TRIGGER_HAPPY5),
+ #define XLAT_VAL_553 ((unsigned) (BTN_TRIGGER_HAPPY5))
+ #define XLAT_STR_553 STRINGIFY(BTN_TRIGGER_HAPPY5)
  [BTN_TRIGGER_HAPPY6] = XLAT(BTN_TRIGGER_HAPPY6),
+ #define XLAT_VAL_554 ((unsigned) (BTN_TRIGGER_HAPPY6))
+ #define XLAT_STR_554 STRINGIFY(BTN_TRIGGER_HAPPY6)
  [BTN_TRIGGER_HAPPY7] = XLAT(BTN_TRIGGER_HAPPY7),
+ #define XLAT_VAL_555 ((unsigned) (BTN_TRIGGER_HAPPY7))
+ #define XLAT_STR_555 STRINGIFY(BTN_TRIGGER_HAPPY7)
  [BTN_TRIGGER_HAPPY8] = XLAT(BTN_TRIGGER_HAPPY8),
+ #define XLAT_VAL_556 ((unsigned) (BTN_TRIGGER_HAPPY8))
+ #define XLAT_STR_556 STRINGIFY(BTN_TRIGGER_HAPPY8)
  [BTN_TRIGGER_HAPPY9] = XLAT(BTN_TRIGGER_HAPPY9),
+ #define XLAT_VAL_557 ((unsigned) (BTN_TRIGGER_HAPPY9))
+ #define XLAT_STR_557 STRINGIFY(BTN_TRIGGER_HAPPY9)
  [BTN_TRIGGER_HAPPY10] = XLAT(BTN_TRIGGER_HAPPY10),
+ #define XLAT_VAL_558 ((unsigned) (BTN_TRIGGER_HAPPY10))
+ #define XLAT_STR_558 STRINGIFY(BTN_TRIGGER_HAPPY10)
  [BTN_TRIGGER_HAPPY11] = XLAT(BTN_TRIGGER_HAPPY11),
+ #define XLAT_VAL_559 ((unsigned) (BTN_TRIGGER_HAPPY11))
+ #define XLAT_STR_559 STRINGIFY(BTN_TRIGGER_HAPPY11)
  [BTN_TRIGGER_HAPPY12] = XLAT(BTN_TRIGGER_HAPPY12),
+ #define XLAT_VAL_560 ((unsigned) (BTN_TRIGGER_HAPPY12))
+ #define XLAT_STR_560 STRINGIFY(BTN_TRIGGER_HAPPY12)
  [BTN_TRIGGER_HAPPY13] = XLAT(BTN_TRIGGER_HAPPY13),
+ #define XLAT_VAL_561 ((unsigned) (BTN_TRIGGER_HAPPY13))
+ #define XLAT_STR_561 STRINGIFY(BTN_TRIGGER_HAPPY13)
  [BTN_TRIGGER_HAPPY14] = XLAT(BTN_TRIGGER_HAPPY14),
+ #define XLAT_VAL_562 ((unsigned) (BTN_TRIGGER_HAPPY14))
+ #define XLAT_STR_562 STRINGIFY(BTN_TRIGGER_HAPPY14)
  [BTN_TRIGGER_HAPPY15] = XLAT(BTN_TRIGGER_HAPPY15),
+ #define XLAT_VAL_563 ((unsigned) (BTN_TRIGGER_HAPPY15))
+ #define XLAT_STR_563 STRINGIFY(BTN_TRIGGER_HAPPY15)
  [BTN_TRIGGER_HAPPY16] = XLAT(BTN_TRIGGER_HAPPY16),
+ #define XLAT_VAL_564 ((unsigned) (BTN_TRIGGER_HAPPY16))
+ #define XLAT_STR_564 STRINGIFY(BTN_TRIGGER_HAPPY16)
  [BTN_TRIGGER_HAPPY17] = XLAT(BTN_TRIGGER_HAPPY17),
+ #define XLAT_VAL_565 ((unsigned) (BTN_TRIGGER_HAPPY17))
+ #define XLAT_STR_565 STRINGIFY(BTN_TRIGGER_HAPPY17)
  [BTN_TRIGGER_HAPPY18] = XLAT(BTN_TRIGGER_HAPPY18),
+ #define XLAT_VAL_566 ((unsigned) (BTN_TRIGGER_HAPPY18))
+ #define XLAT_STR_566 STRINGIFY(BTN_TRIGGER_HAPPY18)
  [BTN_TRIGGER_HAPPY19] = XLAT(BTN_TRIGGER_HAPPY19),
+ #define XLAT_VAL_567 ((unsigned) (BTN_TRIGGER_HAPPY19))
+ #define XLAT_STR_567 STRINGIFY(BTN_TRIGGER_HAPPY19)
  [BTN_TRIGGER_HAPPY20] = XLAT(BTN_TRIGGER_HAPPY20),
+ #define XLAT_VAL_568 ((unsigned) (BTN_TRIGGER_HAPPY20))
+ #define XLAT_STR_568 STRINGIFY(BTN_TRIGGER_HAPPY20)
  [BTN_TRIGGER_HAPPY21] = XLAT(BTN_TRIGGER_HAPPY21),
+ #define XLAT_VAL_569 ((unsigned) (BTN_TRIGGER_HAPPY21))
+ #define XLAT_STR_569 STRINGIFY(BTN_TRIGGER_HAPPY21)
  [BTN_TRIGGER_HAPPY22] = XLAT(BTN_TRIGGER_HAPPY22),
+ #define XLAT_VAL_570 ((unsigned) (BTN_TRIGGER_HAPPY22))
+ #define XLAT_STR_570 STRINGIFY(BTN_TRIGGER_HAPPY22)
  [BTN_TRIGGER_HAPPY23] = XLAT(BTN_TRIGGER_HAPPY23),
+ #define XLAT_VAL_571 ((unsigned) (BTN_TRIGGER_HAPPY23))
+ #define XLAT_STR_571 STRINGIFY(BTN_TRIGGER_HAPPY23)
  [BTN_TRIGGER_HAPPY24] = XLAT(BTN_TRIGGER_HAPPY24),
+ #define XLAT_VAL_572 ((unsigned) (BTN_TRIGGER_HAPPY24))
+ #define XLAT_STR_572 STRINGIFY(BTN_TRIGGER_HAPPY24)
  [BTN_TRIGGER_HAPPY25] = XLAT(BTN_TRIGGER_HAPPY25),
+ #define XLAT_VAL_573 ((unsigned) (BTN_TRIGGER_HAPPY25))
+ #define XLAT_STR_573 STRINGIFY(BTN_TRIGGER_HAPPY25)
  [BTN_TRIGGER_HAPPY26] = XLAT(BTN_TRIGGER_HAPPY26),
+ #define XLAT_VAL_574 ((unsigned) (BTN_TRIGGER_HAPPY26))
+ #define XLAT_STR_574 STRINGIFY(BTN_TRIGGER_HAPPY26)
  [BTN_TRIGGER_HAPPY27] = XLAT(BTN_TRIGGER_HAPPY27),
+ #define XLAT_VAL_575 ((unsigned) (BTN_TRIGGER_HAPPY27))
+ #define XLAT_STR_575 STRINGIFY(BTN_TRIGGER_HAPPY27)
  [BTN_TRIGGER_HAPPY28] = XLAT(BTN_TRIGGER_HAPPY28),
+ #define XLAT_VAL_576 ((unsigned) (BTN_TRIGGER_HAPPY28))
+ #define XLAT_STR_576 STRINGIFY(BTN_TRIGGER_HAPPY28)
  [BTN_TRIGGER_HAPPY29] = XLAT(BTN_TRIGGER_HAPPY29),
+ #define XLAT_VAL_577 ((unsigned) (BTN_TRIGGER_HAPPY29))
+ #define XLAT_STR_577 STRINGIFY(BTN_TRIGGER_HAPPY29)
  [BTN_TRIGGER_HAPPY30] = XLAT(BTN_TRIGGER_HAPPY30),
+ #define XLAT_VAL_578 ((unsigned) (BTN_TRIGGER_HAPPY30))
+ #define XLAT_STR_578 STRINGIFY(BTN_TRIGGER_HAPPY30)
  [BTN_TRIGGER_HAPPY31] = XLAT(BTN_TRIGGER_HAPPY31),
+ #define XLAT_VAL_579 ((unsigned) (BTN_TRIGGER_HAPPY31))
+ #define XLAT_STR_579 STRINGIFY(BTN_TRIGGER_HAPPY31)
  [BTN_TRIGGER_HAPPY32] = XLAT(BTN_TRIGGER_HAPPY32),
+ #define XLAT_VAL_580 ((unsigned) (BTN_TRIGGER_HAPPY32))
+ #define XLAT_STR_580 STRINGIFY(BTN_TRIGGER_HAPPY32)
  [BTN_TRIGGER_HAPPY33] = XLAT(BTN_TRIGGER_HAPPY33),
+ #define XLAT_VAL_581 ((unsigned) (BTN_TRIGGER_HAPPY33))
+ #define XLAT_STR_581 STRINGIFY(BTN_TRIGGER_HAPPY33)
  [BTN_TRIGGER_HAPPY34] = XLAT(BTN_TRIGGER_HAPPY34),
+ #define XLAT_VAL_582 ((unsigned) (BTN_TRIGGER_HAPPY34))
+ #define XLAT_STR_582 STRINGIFY(BTN_TRIGGER_HAPPY34)
  [BTN_TRIGGER_HAPPY35] = XLAT(BTN_TRIGGER_HAPPY35),
+ #define XLAT_VAL_583 ((unsigned) (BTN_TRIGGER_HAPPY35))
+ #define XLAT_STR_583 STRINGIFY(BTN_TRIGGER_HAPPY35)
  [BTN_TRIGGER_HAPPY36] = XLAT(BTN_TRIGGER_HAPPY36),
+ #define XLAT_VAL_584 ((unsigned) (BTN_TRIGGER_HAPPY36))
+ #define XLAT_STR_584 STRINGIFY(BTN_TRIGGER_HAPPY36)
  [BTN_TRIGGER_HAPPY37] = XLAT(BTN_TRIGGER_HAPPY37),
+ #define XLAT_VAL_585 ((unsigned) (BTN_TRIGGER_HAPPY37))
+ #define XLAT_STR_585 STRINGIFY(BTN_TRIGGER_HAPPY37)
  [BTN_TRIGGER_HAPPY38] = XLAT(BTN_TRIGGER_HAPPY38),
+ #define XLAT_VAL_586 ((unsigned) (BTN_TRIGGER_HAPPY38))
+ #define XLAT_STR_586 STRINGIFY(BTN_TRIGGER_HAPPY38)
  [BTN_TRIGGER_HAPPY39] = XLAT(BTN_TRIGGER_HAPPY39),
+ #define XLAT_VAL_587 ((unsigned) (BTN_TRIGGER_HAPPY39))
+ #define XLAT_STR_587 STRINGIFY(BTN_TRIGGER_HAPPY39)
  [BTN_TRIGGER_HAPPY40] = XLAT(BTN_TRIGGER_HAPPY40),
- XLAT_END
+ #define XLAT_VAL_588 ((unsigned) (BTN_TRIGGER_HAPPY40))
+ #define XLAT_STR_588 STRINGIFY(BTN_TRIGGER_HAPPY40)
 };
+static
+const struct xlat evdev_keycode[1] = { {
+ .data = evdev_keycode_xdata,
+ .size = ARRAY_SIZE(evdev_keycode_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+#  ifdef XLAT_VAL_30
+  | XLAT_VAL_30
+#  endif
+#  ifdef XLAT_VAL_31
+  | XLAT_VAL_31
+#  endif
+#  ifdef XLAT_VAL_32
+  | XLAT_VAL_32
+#  endif
+#  ifdef XLAT_VAL_33
+  | XLAT_VAL_33
+#  endif
+#  ifdef XLAT_VAL_34
+  | XLAT_VAL_34
+#  endif
+#  ifdef XLAT_VAL_35
+  | XLAT_VAL_35
+#  endif
+#  ifdef XLAT_VAL_36
+  | XLAT_VAL_36
+#  endif
+#  ifdef XLAT_VAL_37
+  | XLAT_VAL_37
+#  endif
+#  ifdef XLAT_VAL_38
+  | XLAT_VAL_38
+#  endif
+#  ifdef XLAT_VAL_39
+  | XLAT_VAL_39
+#  endif
+#  ifdef XLAT_VAL_40
+  | XLAT_VAL_40
+#  endif
+#  ifdef XLAT_VAL_41
+  | XLAT_VAL_41
+#  endif
+#  ifdef XLAT_VAL_42
+  | XLAT_VAL_42
+#  endif
+#  ifdef XLAT_VAL_43
+  | XLAT_VAL_43
+#  endif
+#  ifdef XLAT_VAL_44
+  | XLAT_VAL_44
+#  endif
+#  ifdef XLAT_VAL_45
+  | XLAT_VAL_45
+#  endif
+#  ifdef XLAT_VAL_46
+  | XLAT_VAL_46
+#  endif
+#  ifdef XLAT_VAL_47
+  | XLAT_VAL_47
+#  endif
+#  ifdef XLAT_VAL_48
+  | XLAT_VAL_48
+#  endif
+#  ifdef XLAT_VAL_49
+  | XLAT_VAL_49
+#  endif
+#  ifdef XLAT_VAL_50
+  | XLAT_VAL_50
+#  endif
+#  ifdef XLAT_VAL_51
+  | XLAT_VAL_51
+#  endif
+#  ifdef XLAT_VAL_52
+  | XLAT_VAL_52
+#  endif
+#  ifdef XLAT_VAL_53
+  | XLAT_VAL_53
+#  endif
+#  ifdef XLAT_VAL_54
+  | XLAT_VAL_54
+#  endif
+#  ifdef XLAT_VAL_55
+  | XLAT_VAL_55
+#  endif
+#  ifdef XLAT_VAL_56
+  | XLAT_VAL_56
+#  endif
+#  ifdef XLAT_VAL_57
+  | XLAT_VAL_57
+#  endif
+#  ifdef XLAT_VAL_58
+  | XLAT_VAL_58
+#  endif
+#  ifdef XLAT_VAL_59
+  | XLAT_VAL_59
+#  endif
+#  ifdef XLAT_VAL_60
+  | XLAT_VAL_60
+#  endif
+#  ifdef XLAT_VAL_61
+  | XLAT_VAL_61
+#  endif
+#  ifdef XLAT_VAL_62
+  | XLAT_VAL_62
+#  endif
+#  ifdef XLAT_VAL_63
+  | XLAT_VAL_63
+#  endif
+#  ifdef XLAT_VAL_64
+  | XLAT_VAL_64
+#  endif
+#  ifdef XLAT_VAL_65
+  | XLAT_VAL_65
+#  endif
+#  ifdef XLAT_VAL_66
+  | XLAT_VAL_66
+#  endif
+#  ifdef XLAT_VAL_67
+  | XLAT_VAL_67
+#  endif
+#  ifdef XLAT_VAL_68
+  | XLAT_VAL_68
+#  endif
+#  ifdef XLAT_VAL_69
+  | XLAT_VAL_69
+#  endif
+#  ifdef XLAT_VAL_70
+  | XLAT_VAL_70
+#  endif
+#  ifdef XLAT_VAL_71
+  | XLAT_VAL_71
+#  endif
+#  ifdef XLAT_VAL_72
+  | XLAT_VAL_72
+#  endif
+#  ifdef XLAT_VAL_73
+  | XLAT_VAL_73
+#  endif
+#  ifdef XLAT_VAL_74
+  | XLAT_VAL_74
+#  endif
+#  ifdef XLAT_VAL_75
+  | XLAT_VAL_75
+#  endif
+#  ifdef XLAT_VAL_76
+  | XLAT_VAL_76
+#  endif
+#  ifdef XLAT_VAL_77
+  | XLAT_VAL_77
+#  endif
+#  ifdef XLAT_VAL_78
+  | XLAT_VAL_78
+#  endif
+#  ifdef XLAT_VAL_79
+  | XLAT_VAL_79
+#  endif
+#  ifdef XLAT_VAL_80
+  | XLAT_VAL_80
+#  endif
+#  ifdef XLAT_VAL_81
+  | XLAT_VAL_81
+#  endif
+#  ifdef XLAT_VAL_82
+  | XLAT_VAL_82
+#  endif
+#  ifdef XLAT_VAL_83
+  | XLAT_VAL_83
+#  endif
+#  ifdef XLAT_VAL_84
+  | XLAT_VAL_84
+#  endif
+#  ifdef XLAT_VAL_85
+  | XLAT_VAL_85
+#  endif
+#  ifdef XLAT_VAL_86
+  | XLAT_VAL_86
+#  endif
+#  ifdef XLAT_VAL_87
+  | XLAT_VAL_87
+#  endif
+#  ifdef XLAT_VAL_88
+  | XLAT_VAL_88
+#  endif
+#  ifdef XLAT_VAL_89
+  | XLAT_VAL_89
+#  endif
+#  ifdef XLAT_VAL_90
+  | XLAT_VAL_90
+#  endif
+#  ifdef XLAT_VAL_91
+  | XLAT_VAL_91
+#  endif
+#  ifdef XLAT_VAL_92
+  | XLAT_VAL_92
+#  endif
+#  ifdef XLAT_VAL_93
+  | XLAT_VAL_93
+#  endif
+#  ifdef XLAT_VAL_94
+  | XLAT_VAL_94
+#  endif
+#  ifdef XLAT_VAL_95
+  | XLAT_VAL_95
+#  endif
+#  ifdef XLAT_VAL_96
+  | XLAT_VAL_96
+#  endif
+#  ifdef XLAT_VAL_97
+  | XLAT_VAL_97
+#  endif
+#  ifdef XLAT_VAL_98
+  | XLAT_VAL_98
+#  endif
+#  ifdef XLAT_VAL_99
+  | XLAT_VAL_99
+#  endif
+#  ifdef XLAT_VAL_100
+  | XLAT_VAL_100
+#  endif
+#  ifdef XLAT_VAL_101
+  | XLAT_VAL_101
+#  endif
+#  ifdef XLAT_VAL_102
+  | XLAT_VAL_102
+#  endif
+#  ifdef XLAT_VAL_103
+  | XLAT_VAL_103
+#  endif
+#  ifdef XLAT_VAL_104
+  | XLAT_VAL_104
+#  endif
+#  ifdef XLAT_VAL_105
+  | XLAT_VAL_105
+#  endif
+#  ifdef XLAT_VAL_106
+  | XLAT_VAL_106
+#  endif
+#  ifdef XLAT_VAL_107
+  | XLAT_VAL_107
+#  endif
+#  ifdef XLAT_VAL_108
+  | XLAT_VAL_108
+#  endif
+#  ifdef XLAT_VAL_109
+  | XLAT_VAL_109
+#  endif
+#  ifdef XLAT_VAL_110
+  | XLAT_VAL_110
+#  endif
+#  ifdef XLAT_VAL_111
+  | XLAT_VAL_111
+#  endif
+#  ifdef XLAT_VAL_112
+  | XLAT_VAL_112
+#  endif
+#  ifdef XLAT_VAL_113
+  | XLAT_VAL_113
+#  endif
+#  ifdef XLAT_VAL_114
+  | XLAT_VAL_114
+#  endif
+#  ifdef XLAT_VAL_115
+  | XLAT_VAL_115
+#  endif
+#  ifdef XLAT_VAL_116
+  | XLAT_VAL_116
+#  endif
+#  ifdef XLAT_VAL_117
+  | XLAT_VAL_117
+#  endif
+#  ifdef XLAT_VAL_118
+  | XLAT_VAL_118
+#  endif
+#  ifdef XLAT_VAL_119
+  | XLAT_VAL_119
+#  endif
+#  ifdef XLAT_VAL_120
+  | XLAT_VAL_120
+#  endif
+#  ifdef XLAT_VAL_121
+  | XLAT_VAL_121
+#  endif
+#  ifdef XLAT_VAL_122
+  | XLAT_VAL_122
+#  endif
+#  ifdef XLAT_VAL_123
+  | XLAT_VAL_123
+#  endif
+#  ifdef XLAT_VAL_124
+  | XLAT_VAL_124
+#  endif
+#  ifdef XLAT_VAL_125
+  | XLAT_VAL_125
+#  endif
+#  ifdef XLAT_VAL_126
+  | XLAT_VAL_126
+#  endif
+#  ifdef XLAT_VAL_127
+  | XLAT_VAL_127
+#  endif
+#  ifdef XLAT_VAL_128
+  | XLAT_VAL_128
+#  endif
+#  ifdef XLAT_VAL_129
+  | XLAT_VAL_129
+#  endif
+#  ifdef XLAT_VAL_130
+  | XLAT_VAL_130
+#  endif
+#  ifdef XLAT_VAL_131
+  | XLAT_VAL_131
+#  endif
+#  ifdef XLAT_VAL_132
+  | XLAT_VAL_132
+#  endif
+#  ifdef XLAT_VAL_133
+  | XLAT_VAL_133
+#  endif
+#  ifdef XLAT_VAL_134
+  | XLAT_VAL_134
+#  endif
+#  ifdef XLAT_VAL_135
+  | XLAT_VAL_135
+#  endif
+#  ifdef XLAT_VAL_136
+  | XLAT_VAL_136
+#  endif
+#  ifdef XLAT_VAL_137
+  | XLAT_VAL_137
+#  endif
+#  ifdef XLAT_VAL_138
+  | XLAT_VAL_138
+#  endif
+#  ifdef XLAT_VAL_139
+  | XLAT_VAL_139
+#  endif
+#  ifdef XLAT_VAL_140
+  | XLAT_VAL_140
+#  endif
+#  ifdef XLAT_VAL_141
+  | XLAT_VAL_141
+#  endif
+#  ifdef XLAT_VAL_142
+  | XLAT_VAL_142
+#  endif
+#  ifdef XLAT_VAL_143
+  | XLAT_VAL_143
+#  endif
+#  ifdef XLAT_VAL_144
+  | XLAT_VAL_144
+#  endif
+#  ifdef XLAT_VAL_145
+  | XLAT_VAL_145
+#  endif
+#  ifdef XLAT_VAL_146
+  | XLAT_VAL_146
+#  endif
+#  ifdef XLAT_VAL_147
+  | XLAT_VAL_147
+#  endif
+#  ifdef XLAT_VAL_148
+  | XLAT_VAL_148
+#  endif
+#  ifdef XLAT_VAL_149
+  | XLAT_VAL_149
+#  endif
+#  ifdef XLAT_VAL_150
+  | XLAT_VAL_150
+#  endif
+#  ifdef XLAT_VAL_151
+  | XLAT_VAL_151
+#  endif
+#  ifdef XLAT_VAL_152
+  | XLAT_VAL_152
+#  endif
+#  ifdef XLAT_VAL_153
+  | XLAT_VAL_153
+#  endif
+#  ifdef XLAT_VAL_154
+  | XLAT_VAL_154
+#  endif
+#  ifdef XLAT_VAL_155
+  | XLAT_VAL_155
+#  endif
+#  ifdef XLAT_VAL_156
+  | XLAT_VAL_156
+#  endif
+#  ifdef XLAT_VAL_157
+  | XLAT_VAL_157
+#  endif
+#  ifdef XLAT_VAL_158
+  | XLAT_VAL_158
+#  endif
+#  ifdef XLAT_VAL_159
+  | XLAT_VAL_159
+#  endif
+#  ifdef XLAT_VAL_160
+  | XLAT_VAL_160
+#  endif
+#  ifdef XLAT_VAL_161
+  | XLAT_VAL_161
+#  endif
+#  ifdef XLAT_VAL_162
+  | XLAT_VAL_162
+#  endif
+#  ifdef XLAT_VAL_163
+  | XLAT_VAL_163
+#  endif
+#  ifdef XLAT_VAL_164
+  | XLAT_VAL_164
+#  endif
+#  ifdef XLAT_VAL_165
+  | XLAT_VAL_165
+#  endif
+#  ifdef XLAT_VAL_166
+  | XLAT_VAL_166
+#  endif
+#  ifdef XLAT_VAL_167
+  | XLAT_VAL_167
+#  endif
+#  ifdef XLAT_VAL_168
+  | XLAT_VAL_168
+#  endif
+#  ifdef XLAT_VAL_169
+  | XLAT_VAL_169
+#  endif
+#  ifdef XLAT_VAL_170
+  | XLAT_VAL_170
+#  endif
+#  ifdef XLAT_VAL_171
+  | XLAT_VAL_171
+#  endif
+#  ifdef XLAT_VAL_172
+  | XLAT_VAL_172
+#  endif
+#  ifdef XLAT_VAL_173
+  | XLAT_VAL_173
+#  endif
+#  ifdef XLAT_VAL_174
+  | XLAT_VAL_174
+#  endif
+#  ifdef XLAT_VAL_175
+  | XLAT_VAL_175
+#  endif
+#  ifdef XLAT_VAL_176
+  | XLAT_VAL_176
+#  endif
+#  ifdef XLAT_VAL_177
+  | XLAT_VAL_177
+#  endif
+#  ifdef XLAT_VAL_178
+  | XLAT_VAL_178
+#  endif
+#  ifdef XLAT_VAL_179
+  | XLAT_VAL_179
+#  endif
+#  ifdef XLAT_VAL_180
+  | XLAT_VAL_180
+#  endif
+#  ifdef XLAT_VAL_181
+  | XLAT_VAL_181
+#  endif
+#  ifdef XLAT_VAL_182
+  | XLAT_VAL_182
+#  endif
+#  ifdef XLAT_VAL_183
+  | XLAT_VAL_183
+#  endif
+#  ifdef XLAT_VAL_184
+  | XLAT_VAL_184
+#  endif
+#  ifdef XLAT_VAL_185
+  | XLAT_VAL_185
+#  endif
+#  ifdef XLAT_VAL_186
+  | XLAT_VAL_186
+#  endif
+#  ifdef XLAT_VAL_187
+  | XLAT_VAL_187
+#  endif
+#  ifdef XLAT_VAL_188
+  | XLAT_VAL_188
+#  endif
+#  ifdef XLAT_VAL_189
+  | XLAT_VAL_189
+#  endif
+#  ifdef XLAT_VAL_190
+  | XLAT_VAL_190
+#  endif
+#  ifdef XLAT_VAL_191
+  | XLAT_VAL_191
+#  endif
+#  ifdef XLAT_VAL_192
+  | XLAT_VAL_192
+#  endif
+#  ifdef XLAT_VAL_193
+  | XLAT_VAL_193
+#  endif
+#  ifdef XLAT_VAL_194
+  | XLAT_VAL_194
+#  endif
+#  ifdef XLAT_VAL_195
+  | XLAT_VAL_195
+#  endif
+#  ifdef XLAT_VAL_196
+  | XLAT_VAL_196
+#  endif
+#  ifdef XLAT_VAL_197
+  | XLAT_VAL_197
+#  endif
+#  ifdef XLAT_VAL_198
+  | XLAT_VAL_198
+#  endif
+#  ifdef XLAT_VAL_199
+  | XLAT_VAL_199
+#  endif
+#  ifdef XLAT_VAL_200
+  | XLAT_VAL_200
+#  endif
+#  ifdef XLAT_VAL_201
+  | XLAT_VAL_201
+#  endif
+#  ifdef XLAT_VAL_202
+  | XLAT_VAL_202
+#  endif
+#  ifdef XLAT_VAL_203
+  | XLAT_VAL_203
+#  endif
+#  ifdef XLAT_VAL_204
+  | XLAT_VAL_204
+#  endif
+#  ifdef XLAT_VAL_205
+  | XLAT_VAL_205
+#  endif
+#  ifdef XLAT_VAL_206
+  | XLAT_VAL_206
+#  endif
+#  ifdef XLAT_VAL_207
+  | XLAT_VAL_207
+#  endif
+#  ifdef XLAT_VAL_208
+  | XLAT_VAL_208
+#  endif
+#  ifdef XLAT_VAL_209
+  | XLAT_VAL_209
+#  endif
+#  ifdef XLAT_VAL_210
+  | XLAT_VAL_210
+#  endif
+#  ifdef XLAT_VAL_211
+  | XLAT_VAL_211
+#  endif
+#  ifdef XLAT_VAL_212
+  | XLAT_VAL_212
+#  endif
+#  ifdef XLAT_VAL_213
+  | XLAT_VAL_213
+#  endif
+#  ifdef XLAT_VAL_214
+  | XLAT_VAL_214
+#  endif
+#  ifdef XLAT_VAL_215
+  | XLAT_VAL_215
+#  endif
+#  ifdef XLAT_VAL_216
+  | XLAT_VAL_216
+#  endif
+#  ifdef XLAT_VAL_217
+  | XLAT_VAL_217
+#  endif
+#  ifdef XLAT_VAL_218
+  | XLAT_VAL_218
+#  endif
+#  ifdef XLAT_VAL_219
+  | XLAT_VAL_219
+#  endif
+#  ifdef XLAT_VAL_220
+  | XLAT_VAL_220
+#  endif
+#  ifdef XLAT_VAL_221
+  | XLAT_VAL_221
+#  endif
+#  ifdef XLAT_VAL_222
+  | XLAT_VAL_222
+#  endif
+#  ifdef XLAT_VAL_223
+  | XLAT_VAL_223
+#  endif
+#  ifdef XLAT_VAL_224
+  | XLAT_VAL_224
+#  endif
+#  ifdef XLAT_VAL_225
+  | XLAT_VAL_225
+#  endif
+#  ifdef XLAT_VAL_226
+  | XLAT_VAL_226
+#  endif
+#  ifdef XLAT_VAL_227
+  | XLAT_VAL_227
+#  endif
+#  ifdef XLAT_VAL_228
+  | XLAT_VAL_228
+#  endif
+#  ifdef XLAT_VAL_229
+  | XLAT_VAL_229
+#  endif
+#  ifdef XLAT_VAL_230
+  | XLAT_VAL_230
+#  endif
+#  ifdef XLAT_VAL_231
+  | XLAT_VAL_231
+#  endif
+#  ifdef XLAT_VAL_232
+  | XLAT_VAL_232
+#  endif
+#  ifdef XLAT_VAL_233
+  | XLAT_VAL_233
+#  endif
+#  ifdef XLAT_VAL_234
+  | XLAT_VAL_234
+#  endif
+#  ifdef XLAT_VAL_235
+  | XLAT_VAL_235
+#  endif
+#  ifdef XLAT_VAL_236
+  | XLAT_VAL_236
+#  endif
+#  ifdef XLAT_VAL_237
+  | XLAT_VAL_237
+#  endif
+#  ifdef XLAT_VAL_238
+  | XLAT_VAL_238
+#  endif
+#  ifdef XLAT_VAL_239
+  | XLAT_VAL_239
+#  endif
+#  ifdef XLAT_VAL_240
+  | XLAT_VAL_240
+#  endif
+#  ifdef XLAT_VAL_241
+  | XLAT_VAL_241
+#  endif
+#  ifdef XLAT_VAL_242
+  | XLAT_VAL_242
+#  endif
+#  ifdef XLAT_VAL_243
+  | XLAT_VAL_243
+#  endif
+#  ifdef XLAT_VAL_244
+  | XLAT_VAL_244
+#  endif
+#  ifdef XLAT_VAL_245
+  | XLAT_VAL_245
+#  endif
+#  ifdef XLAT_VAL_246
+  | XLAT_VAL_246
+#  endif
+#  ifdef XLAT_VAL_247
+  | XLAT_VAL_247
+#  endif
+#  ifdef XLAT_VAL_248
+  | XLAT_VAL_248
+#  endif
+#  ifdef XLAT_VAL_249
+  | XLAT_VAL_249
+#  endif
+#  ifdef XLAT_VAL_250
+  | XLAT_VAL_250
+#  endif
+#  ifdef XLAT_VAL_251
+  | XLAT_VAL_251
+#  endif
+#  ifdef XLAT_VAL_252
+  | XLAT_VAL_252
+#  endif
+#  ifdef XLAT_VAL_253
+  | XLAT_VAL_253
+#  endif
+#  ifdef XLAT_VAL_254
+  | XLAT_VAL_254
+#  endif
+#  ifdef XLAT_VAL_255
+  | XLAT_VAL_255
+#  endif
+#  ifdef XLAT_VAL_256
+  | XLAT_VAL_256
+#  endif
+#  ifdef XLAT_VAL_257
+  | XLAT_VAL_257
+#  endif
+#  ifdef XLAT_VAL_258
+  | XLAT_VAL_258
+#  endif
+#  ifdef XLAT_VAL_259
+  | XLAT_VAL_259
+#  endif
+#  ifdef XLAT_VAL_260
+  | XLAT_VAL_260
+#  endif
+#  ifdef XLAT_VAL_261
+  | XLAT_VAL_261
+#  endif
+#  ifdef XLAT_VAL_262
+  | XLAT_VAL_262
+#  endif
+#  ifdef XLAT_VAL_263
+  | XLAT_VAL_263
+#  endif
+#  ifdef XLAT_VAL_264
+  | XLAT_VAL_264
+#  endif
+#  ifdef XLAT_VAL_265
+  | XLAT_VAL_265
+#  endif
+#  ifdef XLAT_VAL_266
+  | XLAT_VAL_266
+#  endif
+#  ifdef XLAT_VAL_267
+  | XLAT_VAL_267
+#  endif
+#  ifdef XLAT_VAL_268
+  | XLAT_VAL_268
+#  endif
+#  ifdef XLAT_VAL_269
+  | XLAT_VAL_269
+#  endif
+#  ifdef XLAT_VAL_270
+  | XLAT_VAL_270
+#  endif
+#  ifdef XLAT_VAL_271
+  | XLAT_VAL_271
+#  endif
+#  ifdef XLAT_VAL_272
+  | XLAT_VAL_272
+#  endif
+#  ifdef XLAT_VAL_273
+  | XLAT_VAL_273
+#  endif
+#  ifdef XLAT_VAL_274
+  | XLAT_VAL_274
+#  endif
+#  ifdef XLAT_VAL_275
+  | XLAT_VAL_275
+#  endif
+#  ifdef XLAT_VAL_276
+  | XLAT_VAL_276
+#  endif
+#  ifdef XLAT_VAL_277
+  | XLAT_VAL_277
+#  endif
+#  ifdef XLAT_VAL_278
+  | XLAT_VAL_278
+#  endif
+#  ifdef XLAT_VAL_279
+  | XLAT_VAL_279
+#  endif
+#  ifdef XLAT_VAL_280
+  | XLAT_VAL_280
+#  endif
+#  ifdef XLAT_VAL_281
+  | XLAT_VAL_281
+#  endif
+#  ifdef XLAT_VAL_282
+  | XLAT_VAL_282
+#  endif
+#  ifdef XLAT_VAL_283
+  | XLAT_VAL_283
+#  endif
+#  ifdef XLAT_VAL_284
+  | XLAT_VAL_284
+#  endif
+#  ifdef XLAT_VAL_285
+  | XLAT_VAL_285
+#  endif
+#  ifdef XLAT_VAL_286
+  | XLAT_VAL_286
+#  endif
+#  ifdef XLAT_VAL_287
+  | XLAT_VAL_287
+#  endif
+#  ifdef XLAT_VAL_288
+  | XLAT_VAL_288
+#  endif
+#  ifdef XLAT_VAL_289
+  | XLAT_VAL_289
+#  endif
+#  ifdef XLAT_VAL_290
+  | XLAT_VAL_290
+#  endif
+#  ifdef XLAT_VAL_291
+  | XLAT_VAL_291
+#  endif
+#  ifdef XLAT_VAL_292
+  | XLAT_VAL_292
+#  endif
+#  ifdef XLAT_VAL_293
+  | XLAT_VAL_293
+#  endif
+#  ifdef XLAT_VAL_294
+  | XLAT_VAL_294
+#  endif
+#  ifdef XLAT_VAL_295
+  | XLAT_VAL_295
+#  endif
+#  ifdef XLAT_VAL_296
+  | XLAT_VAL_296
+#  endif
+#  ifdef XLAT_VAL_297
+  | XLAT_VAL_297
+#  endif
+#  ifdef XLAT_VAL_298
+  | XLAT_VAL_298
+#  endif
+#  ifdef XLAT_VAL_299
+  | XLAT_VAL_299
+#  endif
+#  ifdef XLAT_VAL_300
+  | XLAT_VAL_300
+#  endif
+#  ifdef XLAT_VAL_301
+  | XLAT_VAL_301
+#  endif
+#  ifdef XLAT_VAL_302
+  | XLAT_VAL_302
+#  endif
+#  ifdef XLAT_VAL_303
+  | XLAT_VAL_303
+#  endif
+#  ifdef XLAT_VAL_304
+  | XLAT_VAL_304
+#  endif
+#  ifdef XLAT_VAL_305
+  | XLAT_VAL_305
+#  endif
+#  ifdef XLAT_VAL_306
+  | XLAT_VAL_306
+#  endif
+#  ifdef XLAT_VAL_307
+  | XLAT_VAL_307
+#  endif
+#  ifdef XLAT_VAL_308
+  | XLAT_VAL_308
+#  endif
+#  ifdef XLAT_VAL_309
+  | XLAT_VAL_309
+#  endif
+#  ifdef XLAT_VAL_310
+  | XLAT_VAL_310
+#  endif
+#  ifdef XLAT_VAL_311
+  | XLAT_VAL_311
+#  endif
+#  ifdef XLAT_VAL_312
+  | XLAT_VAL_312
+#  endif
+#  ifdef XLAT_VAL_313
+  | XLAT_VAL_313
+#  endif
+#  ifdef XLAT_VAL_314
+  | XLAT_VAL_314
+#  endif
+#  ifdef XLAT_VAL_315
+  | XLAT_VAL_315
+#  endif
+#  ifdef XLAT_VAL_316
+  | XLAT_VAL_316
+#  endif
+#  ifdef XLAT_VAL_317
+  | XLAT_VAL_317
+#  endif
+#  ifdef XLAT_VAL_318
+  | XLAT_VAL_318
+#  endif
+#  ifdef XLAT_VAL_319
+  | XLAT_VAL_319
+#  endif
+#  ifdef XLAT_VAL_320
+  | XLAT_VAL_320
+#  endif
+#  ifdef XLAT_VAL_321
+  | XLAT_VAL_321
+#  endif
+#  ifdef XLAT_VAL_322
+  | XLAT_VAL_322
+#  endif
+#  ifdef XLAT_VAL_323
+  | XLAT_VAL_323
+#  endif
+#  ifdef XLAT_VAL_324
+  | XLAT_VAL_324
+#  endif
+#  ifdef XLAT_VAL_325
+  | XLAT_VAL_325
+#  endif
+#  ifdef XLAT_VAL_326
+  | XLAT_VAL_326
+#  endif
+#  ifdef XLAT_VAL_327
+  | XLAT_VAL_327
+#  endif
+#  ifdef XLAT_VAL_328
+  | XLAT_VAL_328
+#  endif
+#  ifdef XLAT_VAL_329
+  | XLAT_VAL_329
+#  endif
+#  ifdef XLAT_VAL_330
+  | XLAT_VAL_330
+#  endif
+#  ifdef XLAT_VAL_331
+  | XLAT_VAL_331
+#  endif
+#  ifdef XLAT_VAL_332
+  | XLAT_VAL_332
+#  endif
+#  ifdef XLAT_VAL_333
+  | XLAT_VAL_333
+#  endif
+#  ifdef XLAT_VAL_334
+  | XLAT_VAL_334
+#  endif
+#  ifdef XLAT_VAL_335
+  | XLAT_VAL_335
+#  endif
+#  ifdef XLAT_VAL_336
+  | XLAT_VAL_336
+#  endif
+#  ifdef XLAT_VAL_337
+  | XLAT_VAL_337
+#  endif
+#  ifdef XLAT_VAL_338
+  | XLAT_VAL_338
+#  endif
+#  ifdef XLAT_VAL_339
+  | XLAT_VAL_339
+#  endif
+#  ifdef XLAT_VAL_340
+  | XLAT_VAL_340
+#  endif
+#  ifdef XLAT_VAL_341
+  | XLAT_VAL_341
+#  endif
+#  ifdef XLAT_VAL_342
+  | XLAT_VAL_342
+#  endif
+#  ifdef XLAT_VAL_343
+  | XLAT_VAL_343
+#  endif
+#  ifdef XLAT_VAL_344
+  | XLAT_VAL_344
+#  endif
+#  ifdef XLAT_VAL_345
+  | XLAT_VAL_345
+#  endif
+#  ifdef XLAT_VAL_346
+  | XLAT_VAL_346
+#  endif
+#  ifdef XLAT_VAL_347
+  | XLAT_VAL_347
+#  endif
+#  ifdef XLAT_VAL_348
+  | XLAT_VAL_348
+#  endif
+#  ifdef XLAT_VAL_349
+  | XLAT_VAL_349
+#  endif
+#  ifdef XLAT_VAL_350
+  | XLAT_VAL_350
+#  endif
+#  ifdef XLAT_VAL_351
+  | XLAT_VAL_351
+#  endif
+#  ifdef XLAT_VAL_352
+  | XLAT_VAL_352
+#  endif
+#  ifdef XLAT_VAL_353
+  | XLAT_VAL_353
+#  endif
+#  ifdef XLAT_VAL_354
+  | XLAT_VAL_354
+#  endif
+#  ifdef XLAT_VAL_355
+  | XLAT_VAL_355
+#  endif
+#  ifdef XLAT_VAL_356
+  | XLAT_VAL_356
+#  endif
+#  ifdef XLAT_VAL_357
+  | XLAT_VAL_357
+#  endif
+#  ifdef XLAT_VAL_358
+  | XLAT_VAL_358
+#  endif
+#  ifdef XLAT_VAL_359
+  | XLAT_VAL_359
+#  endif
+#  ifdef XLAT_VAL_360
+  | XLAT_VAL_360
+#  endif
+#  ifdef XLAT_VAL_361
+  | XLAT_VAL_361
+#  endif
+#  ifdef XLAT_VAL_362
+  | XLAT_VAL_362
+#  endif
+#  ifdef XLAT_VAL_363
+  | XLAT_VAL_363
+#  endif
+#  ifdef XLAT_VAL_364
+  | XLAT_VAL_364
+#  endif
+#  ifdef XLAT_VAL_365
+  | XLAT_VAL_365
+#  endif
+#  ifdef XLAT_VAL_366
+  | XLAT_VAL_366
+#  endif
+#  ifdef XLAT_VAL_367
+  | XLAT_VAL_367
+#  endif
+#  ifdef XLAT_VAL_368
+  | XLAT_VAL_368
+#  endif
+#  ifdef XLAT_VAL_369
+  | XLAT_VAL_369
+#  endif
+#  ifdef XLAT_VAL_370
+  | XLAT_VAL_370
+#  endif
+#  ifdef XLAT_VAL_371
+  | XLAT_VAL_371
+#  endif
+#  ifdef XLAT_VAL_372
+  | XLAT_VAL_372
+#  endif
+#  ifdef XLAT_VAL_373
+  | XLAT_VAL_373
+#  endif
+#  ifdef XLAT_VAL_374
+  | XLAT_VAL_374
+#  endif
+#  ifdef XLAT_VAL_375
+  | XLAT_VAL_375
+#  endif
+#  ifdef XLAT_VAL_376
+  | XLAT_VAL_376
+#  endif
+#  ifdef XLAT_VAL_377
+  | XLAT_VAL_377
+#  endif
+#  ifdef XLAT_VAL_378
+  | XLAT_VAL_378
+#  endif
+#  ifdef XLAT_VAL_379
+  | XLAT_VAL_379
+#  endif
+#  ifdef XLAT_VAL_380
+  | XLAT_VAL_380
+#  endif
+#  ifdef XLAT_VAL_381
+  | XLAT_VAL_381
+#  endif
+#  ifdef XLAT_VAL_382
+  | XLAT_VAL_382
+#  endif
+#  ifdef XLAT_VAL_383
+  | XLAT_VAL_383
+#  endif
+#  ifdef XLAT_VAL_384
+  | XLAT_VAL_384
+#  endif
+#  ifdef XLAT_VAL_385
+  | XLAT_VAL_385
+#  endif
+#  ifdef XLAT_VAL_386
+  | XLAT_VAL_386
+#  endif
+#  ifdef XLAT_VAL_387
+  | XLAT_VAL_387
+#  endif
+#  ifdef XLAT_VAL_388
+  | XLAT_VAL_388
+#  endif
+#  ifdef XLAT_VAL_389
+  | XLAT_VAL_389
+#  endif
+#  ifdef XLAT_VAL_390
+  | XLAT_VAL_390
+#  endif
+#  ifdef XLAT_VAL_391
+  | XLAT_VAL_391
+#  endif
+#  ifdef XLAT_VAL_392
+  | XLAT_VAL_392
+#  endif
+#  ifdef XLAT_VAL_393
+  | XLAT_VAL_393
+#  endif
+#  ifdef XLAT_VAL_394
+  | XLAT_VAL_394
+#  endif
+#  ifdef XLAT_VAL_395
+  | XLAT_VAL_395
+#  endif
+#  ifdef XLAT_VAL_396
+  | XLAT_VAL_396
+#  endif
+#  ifdef XLAT_VAL_397
+  | XLAT_VAL_397
+#  endif
+#  ifdef XLAT_VAL_398
+  | XLAT_VAL_398
+#  endif
+#  ifdef XLAT_VAL_399
+  | XLAT_VAL_399
+#  endif
+#  ifdef XLAT_VAL_400
+  | XLAT_VAL_400
+#  endif
+#  ifdef XLAT_VAL_401
+  | XLAT_VAL_401
+#  endif
+#  ifdef XLAT_VAL_402
+  | XLAT_VAL_402
+#  endif
+#  ifdef XLAT_VAL_403
+  | XLAT_VAL_403
+#  endif
+#  ifdef XLAT_VAL_404
+  | XLAT_VAL_404
+#  endif
+#  ifdef XLAT_VAL_405
+  | XLAT_VAL_405
+#  endif
+#  ifdef XLAT_VAL_406
+  | XLAT_VAL_406
+#  endif
+#  ifdef XLAT_VAL_407
+  | XLAT_VAL_407
+#  endif
+#  ifdef XLAT_VAL_408
+  | XLAT_VAL_408
+#  endif
+#  ifdef XLAT_VAL_409
+  | XLAT_VAL_409
+#  endif
+#  ifdef XLAT_VAL_410
+  | XLAT_VAL_410
+#  endif
+#  ifdef XLAT_VAL_411
+  | XLAT_VAL_411
+#  endif
+#  ifdef XLAT_VAL_412
+  | XLAT_VAL_412
+#  endif
+#  ifdef XLAT_VAL_413
+  | XLAT_VAL_413
+#  endif
+#  ifdef XLAT_VAL_414
+  | XLAT_VAL_414
+#  endif
+#  ifdef XLAT_VAL_415
+  | XLAT_VAL_415
+#  endif
+#  ifdef XLAT_VAL_416
+  | XLAT_VAL_416
+#  endif
+#  ifdef XLAT_VAL_417
+  | XLAT_VAL_417
+#  endif
+#  ifdef XLAT_VAL_418
+  | XLAT_VAL_418
+#  endif
+#  ifdef XLAT_VAL_419
+  | XLAT_VAL_419
+#  endif
+#  ifdef XLAT_VAL_420
+  | XLAT_VAL_420
+#  endif
+#  ifdef XLAT_VAL_421
+  | XLAT_VAL_421
+#  endif
+#  ifdef XLAT_VAL_422
+  | XLAT_VAL_422
+#  endif
+#  ifdef XLAT_VAL_423
+  | XLAT_VAL_423
+#  endif
+#  ifdef XLAT_VAL_424
+  | XLAT_VAL_424
+#  endif
+#  ifdef XLAT_VAL_425
+  | XLAT_VAL_425
+#  endif
+#  ifdef XLAT_VAL_426
+  | XLAT_VAL_426
+#  endif
+#  ifdef XLAT_VAL_427
+  | XLAT_VAL_427
+#  endif
+#  ifdef XLAT_VAL_428
+  | XLAT_VAL_428
+#  endif
+#  ifdef XLAT_VAL_429
+  | XLAT_VAL_429
+#  endif
+#  ifdef XLAT_VAL_430
+  | XLAT_VAL_430
+#  endif
+#  ifdef XLAT_VAL_431
+  | XLAT_VAL_431
+#  endif
+#  ifdef XLAT_VAL_432
+  | XLAT_VAL_432
+#  endif
+#  ifdef XLAT_VAL_433
+  | XLAT_VAL_433
+#  endif
+#  ifdef XLAT_VAL_434
+  | XLAT_VAL_434
+#  endif
+#  ifdef XLAT_VAL_435
+  | XLAT_VAL_435
+#  endif
+#  ifdef XLAT_VAL_436
+  | XLAT_VAL_436
+#  endif
+#  ifdef XLAT_VAL_437
+  | XLAT_VAL_437
+#  endif
+#  ifdef XLAT_VAL_438
+  | XLAT_VAL_438
+#  endif
+#  ifdef XLAT_VAL_439
+  | XLAT_VAL_439
+#  endif
+#  ifdef XLAT_VAL_440
+  | XLAT_VAL_440
+#  endif
+#  ifdef XLAT_VAL_441
+  | XLAT_VAL_441
+#  endif
+#  ifdef XLAT_VAL_442
+  | XLAT_VAL_442
+#  endif
+#  ifdef XLAT_VAL_443
+  | XLAT_VAL_443
+#  endif
+#  ifdef XLAT_VAL_444
+  | XLAT_VAL_444
+#  endif
+#  ifdef XLAT_VAL_445
+  | XLAT_VAL_445
+#  endif
+#  ifdef XLAT_VAL_446
+  | XLAT_VAL_446
+#  endif
+#  ifdef XLAT_VAL_447
+  | XLAT_VAL_447
+#  endif
+#  ifdef XLAT_VAL_448
+  | XLAT_VAL_448
+#  endif
+#  ifdef XLAT_VAL_449
+  | XLAT_VAL_449
+#  endif
+#  ifdef XLAT_VAL_450
+  | XLAT_VAL_450
+#  endif
+#  ifdef XLAT_VAL_451
+  | XLAT_VAL_451
+#  endif
+#  ifdef XLAT_VAL_452
+  | XLAT_VAL_452
+#  endif
+#  ifdef XLAT_VAL_453
+  | XLAT_VAL_453
+#  endif
+#  ifdef XLAT_VAL_454
+  | XLAT_VAL_454
+#  endif
+#  ifdef XLAT_VAL_455
+  | XLAT_VAL_455
+#  endif
+#  ifdef XLAT_VAL_456
+  | XLAT_VAL_456
+#  endif
+#  ifdef XLAT_VAL_457
+  | XLAT_VAL_457
+#  endif
+#  ifdef XLAT_VAL_458
+  | XLAT_VAL_458
+#  endif
+#  ifdef XLAT_VAL_459
+  | XLAT_VAL_459
+#  endif
+#  ifdef XLAT_VAL_460
+  | XLAT_VAL_460
+#  endif
+#  ifdef XLAT_VAL_461
+  | XLAT_VAL_461
+#  endif
+#  ifdef XLAT_VAL_462
+  | XLAT_VAL_462
+#  endif
+#  ifdef XLAT_VAL_463
+  | XLAT_VAL_463
+#  endif
+#  ifdef XLAT_VAL_464
+  | XLAT_VAL_464
+#  endif
+#  ifdef XLAT_VAL_465
+  | XLAT_VAL_465
+#  endif
+#  ifdef XLAT_VAL_466
+  | XLAT_VAL_466
+#  endif
+#  ifdef XLAT_VAL_467
+  | XLAT_VAL_467
+#  endif
+#  ifdef XLAT_VAL_468
+  | XLAT_VAL_468
+#  endif
+#  ifdef XLAT_VAL_469
+  | XLAT_VAL_469
+#  endif
+#  ifdef XLAT_VAL_470
+  | XLAT_VAL_470
+#  endif
+#  ifdef XLAT_VAL_471
+  | XLAT_VAL_471
+#  endif
+#  ifdef XLAT_VAL_472
+  | XLAT_VAL_472
+#  endif
+#  ifdef XLAT_VAL_473
+  | XLAT_VAL_473
+#  endif
+#  ifdef XLAT_VAL_474
+  | XLAT_VAL_474
+#  endif
+#  ifdef XLAT_VAL_475
+  | XLAT_VAL_475
+#  endif
+#  ifdef XLAT_VAL_476
+  | XLAT_VAL_476
+#  endif
+#  ifdef XLAT_VAL_477
+  | XLAT_VAL_477
+#  endif
+#  ifdef XLAT_VAL_478
+  | XLAT_VAL_478
+#  endif
+#  ifdef XLAT_VAL_479
+  | XLAT_VAL_479
+#  endif
+#  ifdef XLAT_VAL_480
+  | XLAT_VAL_480
+#  endif
+#  ifdef XLAT_VAL_481
+  | XLAT_VAL_481
+#  endif
+#  ifdef XLAT_VAL_482
+  | XLAT_VAL_482
+#  endif
+#  ifdef XLAT_VAL_483
+  | XLAT_VAL_483
+#  endif
+#  ifdef XLAT_VAL_484
+  | XLAT_VAL_484
+#  endif
+#  ifdef XLAT_VAL_485
+  | XLAT_VAL_485
+#  endif
+#  ifdef XLAT_VAL_486
+  | XLAT_VAL_486
+#  endif
+#  ifdef XLAT_VAL_487
+  | XLAT_VAL_487
+#  endif
+#  ifdef XLAT_VAL_488
+  | XLAT_VAL_488
+#  endif
+#  ifdef XLAT_VAL_489
+  | XLAT_VAL_489
+#  endif
+#  ifdef XLAT_VAL_490
+  | XLAT_VAL_490
+#  endif
+#  ifdef XLAT_VAL_491
+  | XLAT_VAL_491
+#  endif
+#  ifdef XLAT_VAL_492
+  | XLAT_VAL_492
+#  endif
+#  ifdef XLAT_VAL_493
+  | XLAT_VAL_493
+#  endif
+#  ifdef XLAT_VAL_494
+  | XLAT_VAL_494
+#  endif
+#  ifdef XLAT_VAL_495
+  | XLAT_VAL_495
+#  endif
+#  ifdef XLAT_VAL_496
+  | XLAT_VAL_496
+#  endif
+#  ifdef XLAT_VAL_497
+  | XLAT_VAL_497
+#  endif
+#  ifdef XLAT_VAL_498
+  | XLAT_VAL_498
+#  endif
+#  ifdef XLAT_VAL_499
+  | XLAT_VAL_499
+#  endif
+#  ifdef XLAT_VAL_500
+  | XLAT_VAL_500
+#  endif
+#  ifdef XLAT_VAL_501
+  | XLAT_VAL_501
+#  endif
+#  ifdef XLAT_VAL_502
+  | XLAT_VAL_502
+#  endif
+#  ifdef XLAT_VAL_503
+  | XLAT_VAL_503
+#  endif
+#  ifdef XLAT_VAL_504
+  | XLAT_VAL_504
+#  endif
+#  ifdef XLAT_VAL_505
+  | XLAT_VAL_505
+#  endif
+#  ifdef XLAT_VAL_506
+  | XLAT_VAL_506
+#  endif
+#  ifdef XLAT_VAL_507
+  | XLAT_VAL_507
+#  endif
+#  ifdef XLAT_VAL_508
+  | XLAT_VAL_508
+#  endif
+#  ifdef XLAT_VAL_509
+  | XLAT_VAL_509
+#  endif
+#  ifdef XLAT_VAL_510
+  | XLAT_VAL_510
+#  endif
+#  ifdef XLAT_VAL_511
+  | XLAT_VAL_511
+#  endif
+#  ifdef XLAT_VAL_512
+  | XLAT_VAL_512
+#  endif
+#  ifdef XLAT_VAL_513
+  | XLAT_VAL_513
+#  endif
+#  ifdef XLAT_VAL_514
+  | XLAT_VAL_514
+#  endif
+#  ifdef XLAT_VAL_515
+  | XLAT_VAL_515
+#  endif
+#  ifdef XLAT_VAL_516
+  | XLAT_VAL_516
+#  endif
+#  ifdef XLAT_VAL_517
+  | XLAT_VAL_517
+#  endif
+#  ifdef XLAT_VAL_518
+  | XLAT_VAL_518
+#  endif
+#  ifdef XLAT_VAL_519
+  | XLAT_VAL_519
+#  endif
+#  ifdef XLAT_VAL_520
+  | XLAT_VAL_520
+#  endif
+#  ifdef XLAT_VAL_521
+  | XLAT_VAL_521
+#  endif
+#  ifdef XLAT_VAL_522
+  | XLAT_VAL_522
+#  endif
+#  ifdef XLAT_VAL_523
+  | XLAT_VAL_523
+#  endif
+#  ifdef XLAT_VAL_524
+  | XLAT_VAL_524
+#  endif
+#  ifdef XLAT_VAL_525
+  | XLAT_VAL_525
+#  endif
+#  ifdef XLAT_VAL_526
+  | XLAT_VAL_526
+#  endif
+#  ifdef XLAT_VAL_527
+  | XLAT_VAL_527
+#  endif
+#  ifdef XLAT_VAL_528
+  | XLAT_VAL_528
+#  endif
+#  ifdef XLAT_VAL_529
+  | XLAT_VAL_529
+#  endif
+#  ifdef XLAT_VAL_530
+  | XLAT_VAL_530
+#  endif
+#  ifdef XLAT_VAL_531
+  | XLAT_VAL_531
+#  endif
+#  ifdef XLAT_VAL_532
+  | XLAT_VAL_532
+#  endif
+#  ifdef XLAT_VAL_533
+  | XLAT_VAL_533
+#  endif
+#  ifdef XLAT_VAL_534
+  | XLAT_VAL_534
+#  endif
+#  ifdef XLAT_VAL_535
+  | XLAT_VAL_535
+#  endif
+#  ifdef XLAT_VAL_536
+  | XLAT_VAL_536
+#  endif
+#  ifdef XLAT_VAL_537
+  | XLAT_VAL_537
+#  endif
+#  ifdef XLAT_VAL_538
+  | XLAT_VAL_538
+#  endif
+#  ifdef XLAT_VAL_539
+  | XLAT_VAL_539
+#  endif
+#  ifdef XLAT_VAL_540
+  | XLAT_VAL_540
+#  endif
+#  ifdef XLAT_VAL_541
+  | XLAT_VAL_541
+#  endif
+#  ifdef XLAT_VAL_542
+  | XLAT_VAL_542
+#  endif
+#  ifdef XLAT_VAL_543
+  | XLAT_VAL_543
+#  endif
+#  ifdef XLAT_VAL_544
+  | XLAT_VAL_544
+#  endif
+#  ifdef XLAT_VAL_545
+  | XLAT_VAL_545
+#  endif
+#  ifdef XLAT_VAL_546
+  | XLAT_VAL_546
+#  endif
+#  ifdef XLAT_VAL_547
+  | XLAT_VAL_547
+#  endif
+#  ifdef XLAT_VAL_548
+  | XLAT_VAL_548
+#  endif
+#  ifdef XLAT_VAL_549
+  | XLAT_VAL_549
+#  endif
+#  ifdef XLAT_VAL_550
+  | XLAT_VAL_550
+#  endif
+#  ifdef XLAT_VAL_551
+  | XLAT_VAL_551
+#  endif
+#  ifdef XLAT_VAL_552
+  | XLAT_VAL_552
+#  endif
+#  ifdef XLAT_VAL_553
+  | XLAT_VAL_553
+#  endif
+#  ifdef XLAT_VAL_554
+  | XLAT_VAL_554
+#  endif
+#  ifdef XLAT_VAL_555
+  | XLAT_VAL_555
+#  endif
+#  ifdef XLAT_VAL_556
+  | XLAT_VAL_556
+#  endif
+#  ifdef XLAT_VAL_557
+  | XLAT_VAL_557
+#  endif
+#  ifdef XLAT_VAL_558
+  | XLAT_VAL_558
+#  endif
+#  ifdef XLAT_VAL_559
+  | XLAT_VAL_559
+#  endif
+#  ifdef XLAT_VAL_560
+  | XLAT_VAL_560
+#  endif
+#  ifdef XLAT_VAL_561
+  | XLAT_VAL_561
+#  endif
+#  ifdef XLAT_VAL_562
+  | XLAT_VAL_562
+#  endif
+#  ifdef XLAT_VAL_563
+  | XLAT_VAL_563
+#  endif
+#  ifdef XLAT_VAL_564
+  | XLAT_VAL_564
+#  endif
+#  ifdef XLAT_VAL_565
+  | XLAT_VAL_565
+#  endif
+#  ifdef XLAT_VAL_566
+  | XLAT_VAL_566
+#  endif
+#  ifdef XLAT_VAL_567
+  | XLAT_VAL_567
+#  endif
+#  ifdef XLAT_VAL_568
+  | XLAT_VAL_568
+#  endif
+#  ifdef XLAT_VAL_569
+  | XLAT_VAL_569
+#  endif
+#  ifdef XLAT_VAL_570
+  | XLAT_VAL_570
+#  endif
+#  ifdef XLAT_VAL_571
+  | XLAT_VAL_571
+#  endif
+#  ifdef XLAT_VAL_572
+  | XLAT_VAL_572
+#  endif
+#  ifdef XLAT_VAL_573
+  | XLAT_VAL_573
+#  endif
+#  ifdef XLAT_VAL_574
+  | XLAT_VAL_574
+#  endif
+#  ifdef XLAT_VAL_575
+  | XLAT_VAL_575
+#  endif
+#  ifdef XLAT_VAL_576
+  | XLAT_VAL_576
+#  endif
+#  ifdef XLAT_VAL_577
+  | XLAT_VAL_577
+#  endif
+#  ifdef XLAT_VAL_578
+  | XLAT_VAL_578
+#  endif
+#  ifdef XLAT_VAL_579
+  | XLAT_VAL_579
+#  endif
+#  ifdef XLAT_VAL_580
+  | XLAT_VAL_580
+#  endif
+#  ifdef XLAT_VAL_581
+  | XLAT_VAL_581
+#  endif
+#  ifdef XLAT_VAL_582
+  | XLAT_VAL_582
+#  endif
+#  ifdef XLAT_VAL_583
+  | XLAT_VAL_583
+#  endif
+#  ifdef XLAT_VAL_584
+  | XLAT_VAL_584
+#  endif
+#  ifdef XLAT_VAL_585
+  | XLAT_VAL_585
+#  endif
+#  ifdef XLAT_VAL_586
+  | XLAT_VAL_586
+#  endif
+#  ifdef XLAT_VAL_587
+  | XLAT_VAL_587
+#  endif
+#  ifdef XLAT_VAL_588
+  | XLAT_VAL_588
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+#  ifdef XLAT_STR_30
+  + sizeof(XLAT_STR_30)
+#  endif
+#  ifdef XLAT_STR_31
+  + sizeof(XLAT_STR_31)
+#  endif
+#  ifdef XLAT_STR_32
+  + sizeof(XLAT_STR_32)
+#  endif
+#  ifdef XLAT_STR_33
+  + sizeof(XLAT_STR_33)
+#  endif
+#  ifdef XLAT_STR_34
+  + sizeof(XLAT_STR_34)
+#  endif
+#  ifdef XLAT_STR_35
+  + sizeof(XLAT_STR_35)
+#  endif
+#  ifdef XLAT_STR_36
+  + sizeof(XLAT_STR_36)
+#  endif
+#  ifdef XLAT_STR_37
+  + sizeof(XLAT_STR_37)
+#  endif
+#  ifdef XLAT_STR_38
+  + sizeof(XLAT_STR_38)
+#  endif
+#  ifdef XLAT_STR_39
+  + sizeof(XLAT_STR_39)
+#  endif
+#  ifdef XLAT_STR_40
+  + sizeof(XLAT_STR_40)
+#  endif
+#  ifdef XLAT_STR_41
+  + sizeof(XLAT_STR_41)
+#  endif
+#  ifdef XLAT_STR_42
+  + sizeof(XLAT_STR_42)
+#  endif
+#  ifdef XLAT_STR_43
+  + sizeof(XLAT_STR_43)
+#  endif
+#  ifdef XLAT_STR_44
+  + sizeof(XLAT_STR_44)
+#  endif
+#  ifdef XLAT_STR_45
+  + sizeof(XLAT_STR_45)
+#  endif
+#  ifdef XLAT_STR_46
+  + sizeof(XLAT_STR_46)
+#  endif
+#  ifdef XLAT_STR_47
+  + sizeof(XLAT_STR_47)
+#  endif
+#  ifdef XLAT_STR_48
+  + sizeof(XLAT_STR_48)
+#  endif
+#  ifdef XLAT_STR_49
+  + sizeof(XLAT_STR_49)
+#  endif
+#  ifdef XLAT_STR_50
+  + sizeof(XLAT_STR_50)
+#  endif
+#  ifdef XLAT_STR_51
+  + sizeof(XLAT_STR_51)
+#  endif
+#  ifdef XLAT_STR_52
+  + sizeof(XLAT_STR_52)
+#  endif
+#  ifdef XLAT_STR_53
+  + sizeof(XLAT_STR_53)
+#  endif
+#  ifdef XLAT_STR_54
+  + sizeof(XLAT_STR_54)
+#  endif
+#  ifdef XLAT_STR_55
+  + sizeof(XLAT_STR_55)
+#  endif
+#  ifdef XLAT_STR_56
+  + sizeof(XLAT_STR_56)
+#  endif
+#  ifdef XLAT_STR_57
+  + sizeof(XLAT_STR_57)
+#  endif
+#  ifdef XLAT_STR_58
+  + sizeof(XLAT_STR_58)
+#  endif
+#  ifdef XLAT_STR_59
+  + sizeof(XLAT_STR_59)
+#  endif
+#  ifdef XLAT_STR_60
+  + sizeof(XLAT_STR_60)
+#  endif
+#  ifdef XLAT_STR_61
+  + sizeof(XLAT_STR_61)
+#  endif
+#  ifdef XLAT_STR_62
+  + sizeof(XLAT_STR_62)
+#  endif
+#  ifdef XLAT_STR_63
+  + sizeof(XLAT_STR_63)
+#  endif
+#  ifdef XLAT_STR_64
+  + sizeof(XLAT_STR_64)
+#  endif
+#  ifdef XLAT_STR_65
+  + sizeof(XLAT_STR_65)
+#  endif
+#  ifdef XLAT_STR_66
+  + sizeof(XLAT_STR_66)
+#  endif
+#  ifdef XLAT_STR_67
+  + sizeof(XLAT_STR_67)
+#  endif
+#  ifdef XLAT_STR_68
+  + sizeof(XLAT_STR_68)
+#  endif
+#  ifdef XLAT_STR_69
+  + sizeof(XLAT_STR_69)
+#  endif
+#  ifdef XLAT_STR_70
+  + sizeof(XLAT_STR_70)
+#  endif
+#  ifdef XLAT_STR_71
+  + sizeof(XLAT_STR_71)
+#  endif
+#  ifdef XLAT_STR_72
+  + sizeof(XLAT_STR_72)
+#  endif
+#  ifdef XLAT_STR_73
+  + sizeof(XLAT_STR_73)
+#  endif
+#  ifdef XLAT_STR_74
+  + sizeof(XLAT_STR_74)
+#  endif
+#  ifdef XLAT_STR_75
+  + sizeof(XLAT_STR_75)
+#  endif
+#  ifdef XLAT_STR_76
+  + sizeof(XLAT_STR_76)
+#  endif
+#  ifdef XLAT_STR_77
+  + sizeof(XLAT_STR_77)
+#  endif
+#  ifdef XLAT_STR_78
+  + sizeof(XLAT_STR_78)
+#  endif
+#  ifdef XLAT_STR_79
+  + sizeof(XLAT_STR_79)
+#  endif
+#  ifdef XLAT_STR_80
+  + sizeof(XLAT_STR_80)
+#  endif
+#  ifdef XLAT_STR_81
+  + sizeof(XLAT_STR_81)
+#  endif
+#  ifdef XLAT_STR_82
+  + sizeof(XLAT_STR_82)
+#  endif
+#  ifdef XLAT_STR_83
+  + sizeof(XLAT_STR_83)
+#  endif
+#  ifdef XLAT_STR_84
+  + sizeof(XLAT_STR_84)
+#  endif
+#  ifdef XLAT_STR_85
+  + sizeof(XLAT_STR_85)
+#  endif
+#  ifdef XLAT_STR_86
+  + sizeof(XLAT_STR_86)
+#  endif
+#  ifdef XLAT_STR_87
+  + sizeof(XLAT_STR_87)
+#  endif
+#  ifdef XLAT_STR_88
+  + sizeof(XLAT_STR_88)
+#  endif
+#  ifdef XLAT_STR_89
+  + sizeof(XLAT_STR_89)
+#  endif
+#  ifdef XLAT_STR_90
+  + sizeof(XLAT_STR_90)
+#  endif
+#  ifdef XLAT_STR_91
+  + sizeof(XLAT_STR_91)
+#  endif
+#  ifdef XLAT_STR_92
+  + sizeof(XLAT_STR_92)
+#  endif
+#  ifdef XLAT_STR_93
+  + sizeof(XLAT_STR_93)
+#  endif
+#  ifdef XLAT_STR_94
+  + sizeof(XLAT_STR_94)
+#  endif
+#  ifdef XLAT_STR_95
+  + sizeof(XLAT_STR_95)
+#  endif
+#  ifdef XLAT_STR_96
+  + sizeof(XLAT_STR_96)
+#  endif
+#  ifdef XLAT_STR_97
+  + sizeof(XLAT_STR_97)
+#  endif
+#  ifdef XLAT_STR_98
+  + sizeof(XLAT_STR_98)
+#  endif
+#  ifdef XLAT_STR_99
+  + sizeof(XLAT_STR_99)
+#  endif
+#  ifdef XLAT_STR_100
+  + sizeof(XLAT_STR_100)
+#  endif
+#  ifdef XLAT_STR_101
+  + sizeof(XLAT_STR_101)
+#  endif
+#  ifdef XLAT_STR_102
+  + sizeof(XLAT_STR_102)
+#  endif
+#  ifdef XLAT_STR_103
+  + sizeof(XLAT_STR_103)
+#  endif
+#  ifdef XLAT_STR_104
+  + sizeof(XLAT_STR_104)
+#  endif
+#  ifdef XLAT_STR_105
+  + sizeof(XLAT_STR_105)
+#  endif
+#  ifdef XLAT_STR_106
+  + sizeof(XLAT_STR_106)
+#  endif
+#  ifdef XLAT_STR_107
+  + sizeof(XLAT_STR_107)
+#  endif
+#  ifdef XLAT_STR_108
+  + sizeof(XLAT_STR_108)
+#  endif
+#  ifdef XLAT_STR_109
+  + sizeof(XLAT_STR_109)
+#  endif
+#  ifdef XLAT_STR_110
+  + sizeof(XLAT_STR_110)
+#  endif
+#  ifdef XLAT_STR_111
+  + sizeof(XLAT_STR_111)
+#  endif
+#  ifdef XLAT_STR_112
+  + sizeof(XLAT_STR_112)
+#  endif
+#  ifdef XLAT_STR_113
+  + sizeof(XLAT_STR_113)
+#  endif
+#  ifdef XLAT_STR_114
+  + sizeof(XLAT_STR_114)
+#  endif
+#  ifdef XLAT_STR_115
+  + sizeof(XLAT_STR_115)
+#  endif
+#  ifdef XLAT_STR_116
+  + sizeof(XLAT_STR_116)
+#  endif
+#  ifdef XLAT_STR_117
+  + sizeof(XLAT_STR_117)
+#  endif
+#  ifdef XLAT_STR_118
+  + sizeof(XLAT_STR_118)
+#  endif
+#  ifdef XLAT_STR_119
+  + sizeof(XLAT_STR_119)
+#  endif
+#  ifdef XLAT_STR_120
+  + sizeof(XLAT_STR_120)
+#  endif
+#  ifdef XLAT_STR_121
+  + sizeof(XLAT_STR_121)
+#  endif
+#  ifdef XLAT_STR_122
+  + sizeof(XLAT_STR_122)
+#  endif
+#  ifdef XLAT_STR_123
+  + sizeof(XLAT_STR_123)
+#  endif
+#  ifdef XLAT_STR_124
+  + sizeof(XLAT_STR_124)
+#  endif
+#  ifdef XLAT_STR_125
+  + sizeof(XLAT_STR_125)
+#  endif
+#  ifdef XLAT_STR_126
+  + sizeof(XLAT_STR_126)
+#  endif
+#  ifdef XLAT_STR_127
+  + sizeof(XLAT_STR_127)
+#  endif
+#  ifdef XLAT_STR_128
+  + sizeof(XLAT_STR_128)
+#  endif
+#  ifdef XLAT_STR_129
+  + sizeof(XLAT_STR_129)
+#  endif
+#  ifdef XLAT_STR_130
+  + sizeof(XLAT_STR_130)
+#  endif
+#  ifdef XLAT_STR_131
+  + sizeof(XLAT_STR_131)
+#  endif
+#  ifdef XLAT_STR_132
+  + sizeof(XLAT_STR_132)
+#  endif
+#  ifdef XLAT_STR_133
+  + sizeof(XLAT_STR_133)
+#  endif
+#  ifdef XLAT_STR_134
+  + sizeof(XLAT_STR_134)
+#  endif
+#  ifdef XLAT_STR_135
+  + sizeof(XLAT_STR_135)
+#  endif
+#  ifdef XLAT_STR_136
+  + sizeof(XLAT_STR_136)
+#  endif
+#  ifdef XLAT_STR_137
+  + sizeof(XLAT_STR_137)
+#  endif
+#  ifdef XLAT_STR_138
+  + sizeof(XLAT_STR_138)
+#  endif
+#  ifdef XLAT_STR_139
+  + sizeof(XLAT_STR_139)
+#  endif
+#  ifdef XLAT_STR_140
+  + sizeof(XLAT_STR_140)
+#  endif
+#  ifdef XLAT_STR_141
+  + sizeof(XLAT_STR_141)
+#  endif
+#  ifdef XLAT_STR_142
+  + sizeof(XLAT_STR_142)
+#  endif
+#  ifdef XLAT_STR_143
+  + sizeof(XLAT_STR_143)
+#  endif
+#  ifdef XLAT_STR_144
+  + sizeof(XLAT_STR_144)
+#  endif
+#  ifdef XLAT_STR_145
+  + sizeof(XLAT_STR_145)
+#  endif
+#  ifdef XLAT_STR_146
+  + sizeof(XLAT_STR_146)
+#  endif
+#  ifdef XLAT_STR_147
+  + sizeof(XLAT_STR_147)
+#  endif
+#  ifdef XLAT_STR_148
+  + sizeof(XLAT_STR_148)
+#  endif
+#  ifdef XLAT_STR_149
+  + sizeof(XLAT_STR_149)
+#  endif
+#  ifdef XLAT_STR_150
+  + sizeof(XLAT_STR_150)
+#  endif
+#  ifdef XLAT_STR_151
+  + sizeof(XLAT_STR_151)
+#  endif
+#  ifdef XLAT_STR_152
+  + sizeof(XLAT_STR_152)
+#  endif
+#  ifdef XLAT_STR_153
+  + sizeof(XLAT_STR_153)
+#  endif
+#  ifdef XLAT_STR_154
+  + sizeof(XLAT_STR_154)
+#  endif
+#  ifdef XLAT_STR_155
+  + sizeof(XLAT_STR_155)
+#  endif
+#  ifdef XLAT_STR_156
+  + sizeof(XLAT_STR_156)
+#  endif
+#  ifdef XLAT_STR_157
+  + sizeof(XLAT_STR_157)
+#  endif
+#  ifdef XLAT_STR_158
+  + sizeof(XLAT_STR_158)
+#  endif
+#  ifdef XLAT_STR_159
+  + sizeof(XLAT_STR_159)
+#  endif
+#  ifdef XLAT_STR_160
+  + sizeof(XLAT_STR_160)
+#  endif
+#  ifdef XLAT_STR_161
+  + sizeof(XLAT_STR_161)
+#  endif
+#  ifdef XLAT_STR_162
+  + sizeof(XLAT_STR_162)
+#  endif
+#  ifdef XLAT_STR_163
+  + sizeof(XLAT_STR_163)
+#  endif
+#  ifdef XLAT_STR_164
+  + sizeof(XLAT_STR_164)
+#  endif
+#  ifdef XLAT_STR_165
+  + sizeof(XLAT_STR_165)
+#  endif
+#  ifdef XLAT_STR_166
+  + sizeof(XLAT_STR_166)
+#  endif
+#  ifdef XLAT_STR_167
+  + sizeof(XLAT_STR_167)
+#  endif
+#  ifdef XLAT_STR_168
+  + sizeof(XLAT_STR_168)
+#  endif
+#  ifdef XLAT_STR_169
+  + sizeof(XLAT_STR_169)
+#  endif
+#  ifdef XLAT_STR_170
+  + sizeof(XLAT_STR_170)
+#  endif
+#  ifdef XLAT_STR_171
+  + sizeof(XLAT_STR_171)
+#  endif
+#  ifdef XLAT_STR_172
+  + sizeof(XLAT_STR_172)
+#  endif
+#  ifdef XLAT_STR_173
+  + sizeof(XLAT_STR_173)
+#  endif
+#  ifdef XLAT_STR_174
+  + sizeof(XLAT_STR_174)
+#  endif
+#  ifdef XLAT_STR_175
+  + sizeof(XLAT_STR_175)
+#  endif
+#  ifdef XLAT_STR_176
+  + sizeof(XLAT_STR_176)
+#  endif
+#  ifdef XLAT_STR_177
+  + sizeof(XLAT_STR_177)
+#  endif
+#  ifdef XLAT_STR_178
+  + sizeof(XLAT_STR_178)
+#  endif
+#  ifdef XLAT_STR_179
+  + sizeof(XLAT_STR_179)
+#  endif
+#  ifdef XLAT_STR_180
+  + sizeof(XLAT_STR_180)
+#  endif
+#  ifdef XLAT_STR_181
+  + sizeof(XLAT_STR_181)
+#  endif
+#  ifdef XLAT_STR_182
+  + sizeof(XLAT_STR_182)
+#  endif
+#  ifdef XLAT_STR_183
+  + sizeof(XLAT_STR_183)
+#  endif
+#  ifdef XLAT_STR_184
+  + sizeof(XLAT_STR_184)
+#  endif
+#  ifdef XLAT_STR_185
+  + sizeof(XLAT_STR_185)
+#  endif
+#  ifdef XLAT_STR_186
+  + sizeof(XLAT_STR_186)
+#  endif
+#  ifdef XLAT_STR_187
+  + sizeof(XLAT_STR_187)
+#  endif
+#  ifdef XLAT_STR_188
+  + sizeof(XLAT_STR_188)
+#  endif
+#  ifdef XLAT_STR_189
+  + sizeof(XLAT_STR_189)
+#  endif
+#  ifdef XLAT_STR_190
+  + sizeof(XLAT_STR_190)
+#  endif
+#  ifdef XLAT_STR_191
+  + sizeof(XLAT_STR_191)
+#  endif
+#  ifdef XLAT_STR_192
+  + sizeof(XLAT_STR_192)
+#  endif
+#  ifdef XLAT_STR_193
+  + sizeof(XLAT_STR_193)
+#  endif
+#  ifdef XLAT_STR_194
+  + sizeof(XLAT_STR_194)
+#  endif
+#  ifdef XLAT_STR_195
+  + sizeof(XLAT_STR_195)
+#  endif
+#  ifdef XLAT_STR_196
+  + sizeof(XLAT_STR_196)
+#  endif
+#  ifdef XLAT_STR_197
+  + sizeof(XLAT_STR_197)
+#  endif
+#  ifdef XLAT_STR_198
+  + sizeof(XLAT_STR_198)
+#  endif
+#  ifdef XLAT_STR_199
+  + sizeof(XLAT_STR_199)
+#  endif
+#  ifdef XLAT_STR_200
+  + sizeof(XLAT_STR_200)
+#  endif
+#  ifdef XLAT_STR_201
+  + sizeof(XLAT_STR_201)
+#  endif
+#  ifdef XLAT_STR_202
+  + sizeof(XLAT_STR_202)
+#  endif
+#  ifdef XLAT_STR_203
+  + sizeof(XLAT_STR_203)
+#  endif
+#  ifdef XLAT_STR_204
+  + sizeof(XLAT_STR_204)
+#  endif
+#  ifdef XLAT_STR_205
+  + sizeof(XLAT_STR_205)
+#  endif
+#  ifdef XLAT_STR_206
+  + sizeof(XLAT_STR_206)
+#  endif
+#  ifdef XLAT_STR_207
+  + sizeof(XLAT_STR_207)
+#  endif
+#  ifdef XLAT_STR_208
+  + sizeof(XLAT_STR_208)
+#  endif
+#  ifdef XLAT_STR_209
+  + sizeof(XLAT_STR_209)
+#  endif
+#  ifdef XLAT_STR_210
+  + sizeof(XLAT_STR_210)
+#  endif
+#  ifdef XLAT_STR_211
+  + sizeof(XLAT_STR_211)
+#  endif
+#  ifdef XLAT_STR_212
+  + sizeof(XLAT_STR_212)
+#  endif
+#  ifdef XLAT_STR_213
+  + sizeof(XLAT_STR_213)
+#  endif
+#  ifdef XLAT_STR_214
+  + sizeof(XLAT_STR_214)
+#  endif
+#  ifdef XLAT_STR_215
+  + sizeof(XLAT_STR_215)
+#  endif
+#  ifdef XLAT_STR_216
+  + sizeof(XLAT_STR_216)
+#  endif
+#  ifdef XLAT_STR_217
+  + sizeof(XLAT_STR_217)
+#  endif
+#  ifdef XLAT_STR_218
+  + sizeof(XLAT_STR_218)
+#  endif
+#  ifdef XLAT_STR_219
+  + sizeof(XLAT_STR_219)
+#  endif
+#  ifdef XLAT_STR_220
+  + sizeof(XLAT_STR_220)
+#  endif
+#  ifdef XLAT_STR_221
+  + sizeof(XLAT_STR_221)
+#  endif
+#  ifdef XLAT_STR_222
+  + sizeof(XLAT_STR_222)
+#  endif
+#  ifdef XLAT_STR_223
+  + sizeof(XLAT_STR_223)
+#  endif
+#  ifdef XLAT_STR_224
+  + sizeof(XLAT_STR_224)
+#  endif
+#  ifdef XLAT_STR_225
+  + sizeof(XLAT_STR_225)
+#  endif
+#  ifdef XLAT_STR_226
+  + sizeof(XLAT_STR_226)
+#  endif
+#  ifdef XLAT_STR_227
+  + sizeof(XLAT_STR_227)
+#  endif
+#  ifdef XLAT_STR_228
+  + sizeof(XLAT_STR_228)
+#  endif
+#  ifdef XLAT_STR_229
+  + sizeof(XLAT_STR_229)
+#  endif
+#  ifdef XLAT_STR_230
+  + sizeof(XLAT_STR_230)
+#  endif
+#  ifdef XLAT_STR_231
+  + sizeof(XLAT_STR_231)
+#  endif
+#  ifdef XLAT_STR_232
+  + sizeof(XLAT_STR_232)
+#  endif
+#  ifdef XLAT_STR_233
+  + sizeof(XLAT_STR_233)
+#  endif
+#  ifdef XLAT_STR_234
+  + sizeof(XLAT_STR_234)
+#  endif
+#  ifdef XLAT_STR_235
+  + sizeof(XLAT_STR_235)
+#  endif
+#  ifdef XLAT_STR_236
+  + sizeof(XLAT_STR_236)
+#  endif
+#  ifdef XLAT_STR_237
+  + sizeof(XLAT_STR_237)
+#  endif
+#  ifdef XLAT_STR_238
+  + sizeof(XLAT_STR_238)
+#  endif
+#  ifdef XLAT_STR_239
+  + sizeof(XLAT_STR_239)
+#  endif
+#  ifdef XLAT_STR_240
+  + sizeof(XLAT_STR_240)
+#  endif
+#  ifdef XLAT_STR_241
+  + sizeof(XLAT_STR_241)
+#  endif
+#  ifdef XLAT_STR_242
+  + sizeof(XLAT_STR_242)
+#  endif
+#  ifdef XLAT_STR_243
+  + sizeof(XLAT_STR_243)
+#  endif
+#  ifdef XLAT_STR_244
+  + sizeof(XLAT_STR_244)
+#  endif
+#  ifdef XLAT_STR_245
+  + sizeof(XLAT_STR_245)
+#  endif
+#  ifdef XLAT_STR_246
+  + sizeof(XLAT_STR_246)
+#  endif
+#  ifdef XLAT_STR_247
+  + sizeof(XLAT_STR_247)
+#  endif
+#  ifdef XLAT_STR_248
+  + sizeof(XLAT_STR_248)
+#  endif
+#  ifdef XLAT_STR_249
+  + sizeof(XLAT_STR_249)
+#  endif
+#  ifdef XLAT_STR_250
+  + sizeof(XLAT_STR_250)
+#  endif
+#  ifdef XLAT_STR_251
+  + sizeof(XLAT_STR_251)
+#  endif
+#  ifdef XLAT_STR_252
+  + sizeof(XLAT_STR_252)
+#  endif
+#  ifdef XLAT_STR_253
+  + sizeof(XLAT_STR_253)
+#  endif
+#  ifdef XLAT_STR_254
+  + sizeof(XLAT_STR_254)
+#  endif
+#  ifdef XLAT_STR_255
+  + sizeof(XLAT_STR_255)
+#  endif
+#  ifdef XLAT_STR_256
+  + sizeof(XLAT_STR_256)
+#  endif
+#  ifdef XLAT_STR_257
+  + sizeof(XLAT_STR_257)
+#  endif
+#  ifdef XLAT_STR_258
+  + sizeof(XLAT_STR_258)
+#  endif
+#  ifdef XLAT_STR_259
+  + sizeof(XLAT_STR_259)
+#  endif
+#  ifdef XLAT_STR_260
+  + sizeof(XLAT_STR_260)
+#  endif
+#  ifdef XLAT_STR_261
+  + sizeof(XLAT_STR_261)
+#  endif
+#  ifdef XLAT_STR_262
+  + sizeof(XLAT_STR_262)
+#  endif
+#  ifdef XLAT_STR_263
+  + sizeof(XLAT_STR_263)
+#  endif
+#  ifdef XLAT_STR_264
+  + sizeof(XLAT_STR_264)
+#  endif
+#  ifdef XLAT_STR_265
+  + sizeof(XLAT_STR_265)
+#  endif
+#  ifdef XLAT_STR_266
+  + sizeof(XLAT_STR_266)
+#  endif
+#  ifdef XLAT_STR_267
+  + sizeof(XLAT_STR_267)
+#  endif
+#  ifdef XLAT_STR_268
+  + sizeof(XLAT_STR_268)
+#  endif
+#  ifdef XLAT_STR_269
+  + sizeof(XLAT_STR_269)
+#  endif
+#  ifdef XLAT_STR_270
+  + sizeof(XLAT_STR_270)
+#  endif
+#  ifdef XLAT_STR_271
+  + sizeof(XLAT_STR_271)
+#  endif
+#  ifdef XLAT_STR_272
+  + sizeof(XLAT_STR_272)
+#  endif
+#  ifdef XLAT_STR_273
+  + sizeof(XLAT_STR_273)
+#  endif
+#  ifdef XLAT_STR_274
+  + sizeof(XLAT_STR_274)
+#  endif
+#  ifdef XLAT_STR_275
+  + sizeof(XLAT_STR_275)
+#  endif
+#  ifdef XLAT_STR_276
+  + sizeof(XLAT_STR_276)
+#  endif
+#  ifdef XLAT_STR_277
+  + sizeof(XLAT_STR_277)
+#  endif
+#  ifdef XLAT_STR_278
+  + sizeof(XLAT_STR_278)
+#  endif
+#  ifdef XLAT_STR_279
+  + sizeof(XLAT_STR_279)
+#  endif
+#  ifdef XLAT_STR_280
+  + sizeof(XLAT_STR_280)
+#  endif
+#  ifdef XLAT_STR_281
+  + sizeof(XLAT_STR_281)
+#  endif
+#  ifdef XLAT_STR_282
+  + sizeof(XLAT_STR_282)
+#  endif
+#  ifdef XLAT_STR_283
+  + sizeof(XLAT_STR_283)
+#  endif
+#  ifdef XLAT_STR_284
+  + sizeof(XLAT_STR_284)
+#  endif
+#  ifdef XLAT_STR_285
+  + sizeof(XLAT_STR_285)
+#  endif
+#  ifdef XLAT_STR_286
+  + sizeof(XLAT_STR_286)
+#  endif
+#  ifdef XLAT_STR_287
+  + sizeof(XLAT_STR_287)
+#  endif
+#  ifdef XLAT_STR_288
+  + sizeof(XLAT_STR_288)
+#  endif
+#  ifdef XLAT_STR_289
+  + sizeof(XLAT_STR_289)
+#  endif
+#  ifdef XLAT_STR_290
+  + sizeof(XLAT_STR_290)
+#  endif
+#  ifdef XLAT_STR_291
+  + sizeof(XLAT_STR_291)
+#  endif
+#  ifdef XLAT_STR_292
+  + sizeof(XLAT_STR_292)
+#  endif
+#  ifdef XLAT_STR_293
+  + sizeof(XLAT_STR_293)
+#  endif
+#  ifdef XLAT_STR_294
+  + sizeof(XLAT_STR_294)
+#  endif
+#  ifdef XLAT_STR_295
+  + sizeof(XLAT_STR_295)
+#  endif
+#  ifdef XLAT_STR_296
+  + sizeof(XLAT_STR_296)
+#  endif
+#  ifdef XLAT_STR_297
+  + sizeof(XLAT_STR_297)
+#  endif
+#  ifdef XLAT_STR_298
+  + sizeof(XLAT_STR_298)
+#  endif
+#  ifdef XLAT_STR_299
+  + sizeof(XLAT_STR_299)
+#  endif
+#  ifdef XLAT_STR_300
+  + sizeof(XLAT_STR_300)
+#  endif
+#  ifdef XLAT_STR_301
+  + sizeof(XLAT_STR_301)
+#  endif
+#  ifdef XLAT_STR_302
+  + sizeof(XLAT_STR_302)
+#  endif
+#  ifdef XLAT_STR_303
+  + sizeof(XLAT_STR_303)
+#  endif
+#  ifdef XLAT_STR_304
+  + sizeof(XLAT_STR_304)
+#  endif
+#  ifdef XLAT_STR_305
+  + sizeof(XLAT_STR_305)
+#  endif
+#  ifdef XLAT_STR_306
+  + sizeof(XLAT_STR_306)
+#  endif
+#  ifdef XLAT_STR_307
+  + sizeof(XLAT_STR_307)
+#  endif
+#  ifdef XLAT_STR_308
+  + sizeof(XLAT_STR_308)
+#  endif
+#  ifdef XLAT_STR_309
+  + sizeof(XLAT_STR_309)
+#  endif
+#  ifdef XLAT_STR_310
+  + sizeof(XLAT_STR_310)
+#  endif
+#  ifdef XLAT_STR_311
+  + sizeof(XLAT_STR_311)
+#  endif
+#  ifdef XLAT_STR_312
+  + sizeof(XLAT_STR_312)
+#  endif
+#  ifdef XLAT_STR_313
+  + sizeof(XLAT_STR_313)
+#  endif
+#  ifdef XLAT_STR_314
+  + sizeof(XLAT_STR_314)
+#  endif
+#  ifdef XLAT_STR_315
+  + sizeof(XLAT_STR_315)
+#  endif
+#  ifdef XLAT_STR_316
+  + sizeof(XLAT_STR_316)
+#  endif
+#  ifdef XLAT_STR_317
+  + sizeof(XLAT_STR_317)
+#  endif
+#  ifdef XLAT_STR_318
+  + sizeof(XLAT_STR_318)
+#  endif
+#  ifdef XLAT_STR_319
+  + sizeof(XLAT_STR_319)
+#  endif
+#  ifdef XLAT_STR_320
+  + sizeof(XLAT_STR_320)
+#  endif
+#  ifdef XLAT_STR_321
+  + sizeof(XLAT_STR_321)
+#  endif
+#  ifdef XLAT_STR_322
+  + sizeof(XLAT_STR_322)
+#  endif
+#  ifdef XLAT_STR_323
+  + sizeof(XLAT_STR_323)
+#  endif
+#  ifdef XLAT_STR_324
+  + sizeof(XLAT_STR_324)
+#  endif
+#  ifdef XLAT_STR_325
+  + sizeof(XLAT_STR_325)
+#  endif
+#  ifdef XLAT_STR_326
+  + sizeof(XLAT_STR_326)
+#  endif
+#  ifdef XLAT_STR_327
+  + sizeof(XLAT_STR_327)
+#  endif
+#  ifdef XLAT_STR_328
+  + sizeof(XLAT_STR_328)
+#  endif
+#  ifdef XLAT_STR_329
+  + sizeof(XLAT_STR_329)
+#  endif
+#  ifdef XLAT_STR_330
+  + sizeof(XLAT_STR_330)
+#  endif
+#  ifdef XLAT_STR_331
+  + sizeof(XLAT_STR_331)
+#  endif
+#  ifdef XLAT_STR_332
+  + sizeof(XLAT_STR_332)
+#  endif
+#  ifdef XLAT_STR_333
+  + sizeof(XLAT_STR_333)
+#  endif
+#  ifdef XLAT_STR_334
+  + sizeof(XLAT_STR_334)
+#  endif
+#  ifdef XLAT_STR_335
+  + sizeof(XLAT_STR_335)
+#  endif
+#  ifdef XLAT_STR_336
+  + sizeof(XLAT_STR_336)
+#  endif
+#  ifdef XLAT_STR_337
+  + sizeof(XLAT_STR_337)
+#  endif
+#  ifdef XLAT_STR_338
+  + sizeof(XLAT_STR_338)
+#  endif
+#  ifdef XLAT_STR_339
+  + sizeof(XLAT_STR_339)
+#  endif
+#  ifdef XLAT_STR_340
+  + sizeof(XLAT_STR_340)
+#  endif
+#  ifdef XLAT_STR_341
+  + sizeof(XLAT_STR_341)
+#  endif
+#  ifdef XLAT_STR_342
+  + sizeof(XLAT_STR_342)
+#  endif
+#  ifdef XLAT_STR_343
+  + sizeof(XLAT_STR_343)
+#  endif
+#  ifdef XLAT_STR_344
+  + sizeof(XLAT_STR_344)
+#  endif
+#  ifdef XLAT_STR_345
+  + sizeof(XLAT_STR_345)
+#  endif
+#  ifdef XLAT_STR_346
+  + sizeof(XLAT_STR_346)
+#  endif
+#  ifdef XLAT_STR_347
+  + sizeof(XLAT_STR_347)
+#  endif
+#  ifdef XLAT_STR_348
+  + sizeof(XLAT_STR_348)
+#  endif
+#  ifdef XLAT_STR_349
+  + sizeof(XLAT_STR_349)
+#  endif
+#  ifdef XLAT_STR_350
+  + sizeof(XLAT_STR_350)
+#  endif
+#  ifdef XLAT_STR_351
+  + sizeof(XLAT_STR_351)
+#  endif
+#  ifdef XLAT_STR_352
+  + sizeof(XLAT_STR_352)
+#  endif
+#  ifdef XLAT_STR_353
+  + sizeof(XLAT_STR_353)
+#  endif
+#  ifdef XLAT_STR_354
+  + sizeof(XLAT_STR_354)
+#  endif
+#  ifdef XLAT_STR_355
+  + sizeof(XLAT_STR_355)
+#  endif
+#  ifdef XLAT_STR_356
+  + sizeof(XLAT_STR_356)
+#  endif
+#  ifdef XLAT_STR_357
+  + sizeof(XLAT_STR_357)
+#  endif
+#  ifdef XLAT_STR_358
+  + sizeof(XLAT_STR_358)
+#  endif
+#  ifdef XLAT_STR_359
+  + sizeof(XLAT_STR_359)
+#  endif
+#  ifdef XLAT_STR_360
+  + sizeof(XLAT_STR_360)
+#  endif
+#  ifdef XLAT_STR_361
+  + sizeof(XLAT_STR_361)
+#  endif
+#  ifdef XLAT_STR_362
+  + sizeof(XLAT_STR_362)
+#  endif
+#  ifdef XLAT_STR_363
+  + sizeof(XLAT_STR_363)
+#  endif
+#  ifdef XLAT_STR_364
+  + sizeof(XLAT_STR_364)
+#  endif
+#  ifdef XLAT_STR_365
+  + sizeof(XLAT_STR_365)
+#  endif
+#  ifdef XLAT_STR_366
+  + sizeof(XLAT_STR_366)
+#  endif
+#  ifdef XLAT_STR_367
+  + sizeof(XLAT_STR_367)
+#  endif
+#  ifdef XLAT_STR_368
+  + sizeof(XLAT_STR_368)
+#  endif
+#  ifdef XLAT_STR_369
+  + sizeof(XLAT_STR_369)
+#  endif
+#  ifdef XLAT_STR_370
+  + sizeof(XLAT_STR_370)
+#  endif
+#  ifdef XLAT_STR_371
+  + sizeof(XLAT_STR_371)
+#  endif
+#  ifdef XLAT_STR_372
+  + sizeof(XLAT_STR_372)
+#  endif
+#  ifdef XLAT_STR_373
+  + sizeof(XLAT_STR_373)
+#  endif
+#  ifdef XLAT_STR_374
+  + sizeof(XLAT_STR_374)
+#  endif
+#  ifdef XLAT_STR_375
+  + sizeof(XLAT_STR_375)
+#  endif
+#  ifdef XLAT_STR_376
+  + sizeof(XLAT_STR_376)
+#  endif
+#  ifdef XLAT_STR_377
+  + sizeof(XLAT_STR_377)
+#  endif
+#  ifdef XLAT_STR_378
+  + sizeof(XLAT_STR_378)
+#  endif
+#  ifdef XLAT_STR_379
+  + sizeof(XLAT_STR_379)
+#  endif
+#  ifdef XLAT_STR_380
+  + sizeof(XLAT_STR_380)
+#  endif
+#  ifdef XLAT_STR_381
+  + sizeof(XLAT_STR_381)
+#  endif
+#  ifdef XLAT_STR_382
+  + sizeof(XLAT_STR_382)
+#  endif
+#  ifdef XLAT_STR_383
+  + sizeof(XLAT_STR_383)
+#  endif
+#  ifdef XLAT_STR_384
+  + sizeof(XLAT_STR_384)
+#  endif
+#  ifdef XLAT_STR_385
+  + sizeof(XLAT_STR_385)
+#  endif
+#  ifdef XLAT_STR_386
+  + sizeof(XLAT_STR_386)
+#  endif
+#  ifdef XLAT_STR_387
+  + sizeof(XLAT_STR_387)
+#  endif
+#  ifdef XLAT_STR_388
+  + sizeof(XLAT_STR_388)
+#  endif
+#  ifdef XLAT_STR_389
+  + sizeof(XLAT_STR_389)
+#  endif
+#  ifdef XLAT_STR_390
+  + sizeof(XLAT_STR_390)
+#  endif
+#  ifdef XLAT_STR_391
+  + sizeof(XLAT_STR_391)
+#  endif
+#  ifdef XLAT_STR_392
+  + sizeof(XLAT_STR_392)
+#  endif
+#  ifdef XLAT_STR_393
+  + sizeof(XLAT_STR_393)
+#  endif
+#  ifdef XLAT_STR_394
+  + sizeof(XLAT_STR_394)
+#  endif
+#  ifdef XLAT_STR_395
+  + sizeof(XLAT_STR_395)
+#  endif
+#  ifdef XLAT_STR_396
+  + sizeof(XLAT_STR_396)
+#  endif
+#  ifdef XLAT_STR_397
+  + sizeof(XLAT_STR_397)
+#  endif
+#  ifdef XLAT_STR_398
+  + sizeof(XLAT_STR_398)
+#  endif
+#  ifdef XLAT_STR_399
+  + sizeof(XLAT_STR_399)
+#  endif
+#  ifdef XLAT_STR_400
+  + sizeof(XLAT_STR_400)
+#  endif
+#  ifdef XLAT_STR_401
+  + sizeof(XLAT_STR_401)
+#  endif
+#  ifdef XLAT_STR_402
+  + sizeof(XLAT_STR_402)
+#  endif
+#  ifdef XLAT_STR_403
+  + sizeof(XLAT_STR_403)
+#  endif
+#  ifdef XLAT_STR_404
+  + sizeof(XLAT_STR_404)
+#  endif
+#  ifdef XLAT_STR_405
+  + sizeof(XLAT_STR_405)
+#  endif
+#  ifdef XLAT_STR_406
+  + sizeof(XLAT_STR_406)
+#  endif
+#  ifdef XLAT_STR_407
+  + sizeof(XLAT_STR_407)
+#  endif
+#  ifdef XLAT_STR_408
+  + sizeof(XLAT_STR_408)
+#  endif
+#  ifdef XLAT_STR_409
+  + sizeof(XLAT_STR_409)
+#  endif
+#  ifdef XLAT_STR_410
+  + sizeof(XLAT_STR_410)
+#  endif
+#  ifdef XLAT_STR_411
+  + sizeof(XLAT_STR_411)
+#  endif
+#  ifdef XLAT_STR_412
+  + sizeof(XLAT_STR_412)
+#  endif
+#  ifdef XLAT_STR_413
+  + sizeof(XLAT_STR_413)
+#  endif
+#  ifdef XLAT_STR_414
+  + sizeof(XLAT_STR_414)
+#  endif
+#  ifdef XLAT_STR_415
+  + sizeof(XLAT_STR_415)
+#  endif
+#  ifdef XLAT_STR_416
+  + sizeof(XLAT_STR_416)
+#  endif
+#  ifdef XLAT_STR_417
+  + sizeof(XLAT_STR_417)
+#  endif
+#  ifdef XLAT_STR_418
+  + sizeof(XLAT_STR_418)
+#  endif
+#  ifdef XLAT_STR_419
+  + sizeof(XLAT_STR_419)
+#  endif
+#  ifdef XLAT_STR_420
+  + sizeof(XLAT_STR_420)
+#  endif
+#  ifdef XLAT_STR_421
+  + sizeof(XLAT_STR_421)
+#  endif
+#  ifdef XLAT_STR_422
+  + sizeof(XLAT_STR_422)
+#  endif
+#  ifdef XLAT_STR_423
+  + sizeof(XLAT_STR_423)
+#  endif
+#  ifdef XLAT_STR_424
+  + sizeof(XLAT_STR_424)
+#  endif
+#  ifdef XLAT_STR_425
+  + sizeof(XLAT_STR_425)
+#  endif
+#  ifdef XLAT_STR_426
+  + sizeof(XLAT_STR_426)
+#  endif
+#  ifdef XLAT_STR_427
+  + sizeof(XLAT_STR_427)
+#  endif
+#  ifdef XLAT_STR_428
+  + sizeof(XLAT_STR_428)
+#  endif
+#  ifdef XLAT_STR_429
+  + sizeof(XLAT_STR_429)
+#  endif
+#  ifdef XLAT_STR_430
+  + sizeof(XLAT_STR_430)
+#  endif
+#  ifdef XLAT_STR_431
+  + sizeof(XLAT_STR_431)
+#  endif
+#  ifdef XLAT_STR_432
+  + sizeof(XLAT_STR_432)
+#  endif
+#  ifdef XLAT_STR_433
+  + sizeof(XLAT_STR_433)
+#  endif
+#  ifdef XLAT_STR_434
+  + sizeof(XLAT_STR_434)
+#  endif
+#  ifdef XLAT_STR_435
+  + sizeof(XLAT_STR_435)
+#  endif
+#  ifdef XLAT_STR_436
+  + sizeof(XLAT_STR_436)
+#  endif
+#  ifdef XLAT_STR_437
+  + sizeof(XLAT_STR_437)
+#  endif
+#  ifdef XLAT_STR_438
+  + sizeof(XLAT_STR_438)
+#  endif
+#  ifdef XLAT_STR_439
+  + sizeof(XLAT_STR_439)
+#  endif
+#  ifdef XLAT_STR_440
+  + sizeof(XLAT_STR_440)
+#  endif
+#  ifdef XLAT_STR_441
+  + sizeof(XLAT_STR_441)
+#  endif
+#  ifdef XLAT_STR_442
+  + sizeof(XLAT_STR_442)
+#  endif
+#  ifdef XLAT_STR_443
+  + sizeof(XLAT_STR_443)
+#  endif
+#  ifdef XLAT_STR_444
+  + sizeof(XLAT_STR_444)
+#  endif
+#  ifdef XLAT_STR_445
+  + sizeof(XLAT_STR_445)
+#  endif
+#  ifdef XLAT_STR_446
+  + sizeof(XLAT_STR_446)
+#  endif
+#  ifdef XLAT_STR_447
+  + sizeof(XLAT_STR_447)
+#  endif
+#  ifdef XLAT_STR_448
+  + sizeof(XLAT_STR_448)
+#  endif
+#  ifdef XLAT_STR_449
+  + sizeof(XLAT_STR_449)
+#  endif
+#  ifdef XLAT_STR_450
+  + sizeof(XLAT_STR_450)
+#  endif
+#  ifdef XLAT_STR_451
+  + sizeof(XLAT_STR_451)
+#  endif
+#  ifdef XLAT_STR_452
+  + sizeof(XLAT_STR_452)
+#  endif
+#  ifdef XLAT_STR_453
+  + sizeof(XLAT_STR_453)
+#  endif
+#  ifdef XLAT_STR_454
+  + sizeof(XLAT_STR_454)
+#  endif
+#  ifdef XLAT_STR_455
+  + sizeof(XLAT_STR_455)
+#  endif
+#  ifdef XLAT_STR_456
+  + sizeof(XLAT_STR_456)
+#  endif
+#  ifdef XLAT_STR_457
+  + sizeof(XLAT_STR_457)
+#  endif
+#  ifdef XLAT_STR_458
+  + sizeof(XLAT_STR_458)
+#  endif
+#  ifdef XLAT_STR_459
+  + sizeof(XLAT_STR_459)
+#  endif
+#  ifdef XLAT_STR_460
+  + sizeof(XLAT_STR_460)
+#  endif
+#  ifdef XLAT_STR_461
+  + sizeof(XLAT_STR_461)
+#  endif
+#  ifdef XLAT_STR_462
+  + sizeof(XLAT_STR_462)
+#  endif
+#  ifdef XLAT_STR_463
+  + sizeof(XLAT_STR_463)
+#  endif
+#  ifdef XLAT_STR_464
+  + sizeof(XLAT_STR_464)
+#  endif
+#  ifdef XLAT_STR_465
+  + sizeof(XLAT_STR_465)
+#  endif
+#  ifdef XLAT_STR_466
+  + sizeof(XLAT_STR_466)
+#  endif
+#  ifdef XLAT_STR_467
+  + sizeof(XLAT_STR_467)
+#  endif
+#  ifdef XLAT_STR_468
+  + sizeof(XLAT_STR_468)
+#  endif
+#  ifdef XLAT_STR_469
+  + sizeof(XLAT_STR_469)
+#  endif
+#  ifdef XLAT_STR_470
+  + sizeof(XLAT_STR_470)
+#  endif
+#  ifdef XLAT_STR_471
+  + sizeof(XLAT_STR_471)
+#  endif
+#  ifdef XLAT_STR_472
+  + sizeof(XLAT_STR_472)
+#  endif
+#  ifdef XLAT_STR_473
+  + sizeof(XLAT_STR_473)
+#  endif
+#  ifdef XLAT_STR_474
+  + sizeof(XLAT_STR_474)
+#  endif
+#  ifdef XLAT_STR_475
+  + sizeof(XLAT_STR_475)
+#  endif
+#  ifdef XLAT_STR_476
+  + sizeof(XLAT_STR_476)
+#  endif
+#  ifdef XLAT_STR_477
+  + sizeof(XLAT_STR_477)
+#  endif
+#  ifdef XLAT_STR_478
+  + sizeof(XLAT_STR_478)
+#  endif
+#  ifdef XLAT_STR_479
+  + sizeof(XLAT_STR_479)
+#  endif
+#  ifdef XLAT_STR_480
+  + sizeof(XLAT_STR_480)
+#  endif
+#  ifdef XLAT_STR_481
+  + sizeof(XLAT_STR_481)
+#  endif
+#  ifdef XLAT_STR_482
+  + sizeof(XLAT_STR_482)
+#  endif
+#  ifdef XLAT_STR_483
+  + sizeof(XLAT_STR_483)
+#  endif
+#  ifdef XLAT_STR_484
+  + sizeof(XLAT_STR_484)
+#  endif
+#  ifdef XLAT_STR_485
+  + sizeof(XLAT_STR_485)
+#  endif
+#  ifdef XLAT_STR_486
+  + sizeof(XLAT_STR_486)
+#  endif
+#  ifdef XLAT_STR_487
+  + sizeof(XLAT_STR_487)
+#  endif
+#  ifdef XLAT_STR_488
+  + sizeof(XLAT_STR_488)
+#  endif
+#  ifdef XLAT_STR_489
+  + sizeof(XLAT_STR_489)
+#  endif
+#  ifdef XLAT_STR_490
+  + sizeof(XLAT_STR_490)
+#  endif
+#  ifdef XLAT_STR_491
+  + sizeof(XLAT_STR_491)
+#  endif
+#  ifdef XLAT_STR_492
+  + sizeof(XLAT_STR_492)
+#  endif
+#  ifdef XLAT_STR_493
+  + sizeof(XLAT_STR_493)
+#  endif
+#  ifdef XLAT_STR_494
+  + sizeof(XLAT_STR_494)
+#  endif
+#  ifdef XLAT_STR_495
+  + sizeof(XLAT_STR_495)
+#  endif
+#  ifdef XLAT_STR_496
+  + sizeof(XLAT_STR_496)
+#  endif
+#  ifdef XLAT_STR_497
+  + sizeof(XLAT_STR_497)
+#  endif
+#  ifdef XLAT_STR_498
+  + sizeof(XLAT_STR_498)
+#  endif
+#  ifdef XLAT_STR_499
+  + sizeof(XLAT_STR_499)
+#  endif
+#  ifdef XLAT_STR_500
+  + sizeof(XLAT_STR_500)
+#  endif
+#  ifdef XLAT_STR_501
+  + sizeof(XLAT_STR_501)
+#  endif
+#  ifdef XLAT_STR_502
+  + sizeof(XLAT_STR_502)
+#  endif
+#  ifdef XLAT_STR_503
+  + sizeof(XLAT_STR_503)
+#  endif
+#  ifdef XLAT_STR_504
+  + sizeof(XLAT_STR_504)
+#  endif
+#  ifdef XLAT_STR_505
+  + sizeof(XLAT_STR_505)
+#  endif
+#  ifdef XLAT_STR_506
+  + sizeof(XLAT_STR_506)
+#  endif
+#  ifdef XLAT_STR_507
+  + sizeof(XLAT_STR_507)
+#  endif
+#  ifdef XLAT_STR_508
+  + sizeof(XLAT_STR_508)
+#  endif
+#  ifdef XLAT_STR_509
+  + sizeof(XLAT_STR_509)
+#  endif
+#  ifdef XLAT_STR_510
+  + sizeof(XLAT_STR_510)
+#  endif
+#  ifdef XLAT_STR_511
+  + sizeof(XLAT_STR_511)
+#  endif
+#  ifdef XLAT_STR_512
+  + sizeof(XLAT_STR_512)
+#  endif
+#  ifdef XLAT_STR_513
+  + sizeof(XLAT_STR_513)
+#  endif
+#  ifdef XLAT_STR_514
+  + sizeof(XLAT_STR_514)
+#  endif
+#  ifdef XLAT_STR_515
+  + sizeof(XLAT_STR_515)
+#  endif
+#  ifdef XLAT_STR_516
+  + sizeof(XLAT_STR_516)
+#  endif
+#  ifdef XLAT_STR_517
+  + sizeof(XLAT_STR_517)
+#  endif
+#  ifdef XLAT_STR_518
+  + sizeof(XLAT_STR_518)
+#  endif
+#  ifdef XLAT_STR_519
+  + sizeof(XLAT_STR_519)
+#  endif
+#  ifdef XLAT_STR_520
+  + sizeof(XLAT_STR_520)
+#  endif
+#  ifdef XLAT_STR_521
+  + sizeof(XLAT_STR_521)
+#  endif
+#  ifdef XLAT_STR_522
+  + sizeof(XLAT_STR_522)
+#  endif
+#  ifdef XLAT_STR_523
+  + sizeof(XLAT_STR_523)
+#  endif
+#  ifdef XLAT_STR_524
+  + sizeof(XLAT_STR_524)
+#  endif
+#  ifdef XLAT_STR_525
+  + sizeof(XLAT_STR_525)
+#  endif
+#  ifdef XLAT_STR_526
+  + sizeof(XLAT_STR_526)
+#  endif
+#  ifdef XLAT_STR_527
+  + sizeof(XLAT_STR_527)
+#  endif
+#  ifdef XLAT_STR_528
+  + sizeof(XLAT_STR_528)
+#  endif
+#  ifdef XLAT_STR_529
+  + sizeof(XLAT_STR_529)
+#  endif
+#  ifdef XLAT_STR_530
+  + sizeof(XLAT_STR_530)
+#  endif
+#  ifdef XLAT_STR_531
+  + sizeof(XLAT_STR_531)
+#  endif
+#  ifdef XLAT_STR_532
+  + sizeof(XLAT_STR_532)
+#  endif
+#  ifdef XLAT_STR_533
+  + sizeof(XLAT_STR_533)
+#  endif
+#  ifdef XLAT_STR_534
+  + sizeof(XLAT_STR_534)
+#  endif
+#  ifdef XLAT_STR_535
+  + sizeof(XLAT_STR_535)
+#  endif
+#  ifdef XLAT_STR_536
+  + sizeof(XLAT_STR_536)
+#  endif
+#  ifdef XLAT_STR_537
+  + sizeof(XLAT_STR_537)
+#  endif
+#  ifdef XLAT_STR_538
+  + sizeof(XLAT_STR_538)
+#  endif
+#  ifdef XLAT_STR_539
+  + sizeof(XLAT_STR_539)
+#  endif
+#  ifdef XLAT_STR_540
+  + sizeof(XLAT_STR_540)
+#  endif
+#  ifdef XLAT_STR_541
+  + sizeof(XLAT_STR_541)
+#  endif
+#  ifdef XLAT_STR_542
+  + sizeof(XLAT_STR_542)
+#  endif
+#  ifdef XLAT_STR_543
+  + sizeof(XLAT_STR_543)
+#  endif
+#  ifdef XLAT_STR_544
+  + sizeof(XLAT_STR_544)
+#  endif
+#  ifdef XLAT_STR_545
+  + sizeof(XLAT_STR_545)
+#  endif
+#  ifdef XLAT_STR_546
+  + sizeof(XLAT_STR_546)
+#  endif
+#  ifdef XLAT_STR_547
+  + sizeof(XLAT_STR_547)
+#  endif
+#  ifdef XLAT_STR_548
+  + sizeof(XLAT_STR_548)
+#  endif
+#  ifdef XLAT_STR_549
+  + sizeof(XLAT_STR_549)
+#  endif
+#  ifdef XLAT_STR_550
+  + sizeof(XLAT_STR_550)
+#  endif
+#  ifdef XLAT_STR_551
+  + sizeof(XLAT_STR_551)
+#  endif
+#  ifdef XLAT_STR_552
+  + sizeof(XLAT_STR_552)
+#  endif
+#  ifdef XLAT_STR_553
+  + sizeof(XLAT_STR_553)
+#  endif
+#  ifdef XLAT_STR_554
+  + sizeof(XLAT_STR_554)
+#  endif
+#  ifdef XLAT_STR_555
+  + sizeof(XLAT_STR_555)
+#  endif
+#  ifdef XLAT_STR_556
+  + sizeof(XLAT_STR_556)
+#  endif
+#  ifdef XLAT_STR_557
+  + sizeof(XLAT_STR_557)
+#  endif
+#  ifdef XLAT_STR_558
+  + sizeof(XLAT_STR_558)
+#  endif
+#  ifdef XLAT_STR_559
+  + sizeof(XLAT_STR_559)
+#  endif
+#  ifdef XLAT_STR_560
+  + sizeof(XLAT_STR_560)
+#  endif
+#  ifdef XLAT_STR_561
+  + sizeof(XLAT_STR_561)
+#  endif
+#  ifdef XLAT_STR_562
+  + sizeof(XLAT_STR_562)
+#  endif
+#  ifdef XLAT_STR_563
+  + sizeof(XLAT_STR_563)
+#  endif
+#  ifdef XLAT_STR_564
+  + sizeof(XLAT_STR_564)
+#  endif
+#  ifdef XLAT_STR_565
+  + sizeof(XLAT_STR_565)
+#  endif
+#  ifdef XLAT_STR_566
+  + sizeof(XLAT_STR_566)
+#  endif
+#  ifdef XLAT_STR_567
+  + sizeof(XLAT_STR_567)
+#  endif
+#  ifdef XLAT_STR_568
+  + sizeof(XLAT_STR_568)
+#  endif
+#  ifdef XLAT_STR_569
+  + sizeof(XLAT_STR_569)
+#  endif
+#  ifdef XLAT_STR_570
+  + sizeof(XLAT_STR_570)
+#  endif
+#  ifdef XLAT_STR_571
+  + sizeof(XLAT_STR_571)
+#  endif
+#  ifdef XLAT_STR_572
+  + sizeof(XLAT_STR_572)
+#  endif
+#  ifdef XLAT_STR_573
+  + sizeof(XLAT_STR_573)
+#  endif
+#  ifdef XLAT_STR_574
+  + sizeof(XLAT_STR_574)
+#  endif
+#  ifdef XLAT_STR_575
+  + sizeof(XLAT_STR_575)
+#  endif
+#  ifdef XLAT_STR_576
+  + sizeof(XLAT_STR_576)
+#  endif
+#  ifdef XLAT_STR_577
+  + sizeof(XLAT_STR_577)
+#  endif
+#  ifdef XLAT_STR_578
+  + sizeof(XLAT_STR_578)
+#  endif
+#  ifdef XLAT_STR_579
+  + sizeof(XLAT_STR_579)
+#  endif
+#  ifdef XLAT_STR_580
+  + sizeof(XLAT_STR_580)
+#  endif
+#  ifdef XLAT_STR_581
+  + sizeof(XLAT_STR_581)
+#  endif
+#  ifdef XLAT_STR_582
+  + sizeof(XLAT_STR_582)
+#  endif
+#  ifdef XLAT_STR_583
+  + sizeof(XLAT_STR_583)
+#  endif
+#  ifdef XLAT_STR_584
+  + sizeof(XLAT_STR_584)
+#  endif
+#  ifdef XLAT_STR_585
+  + sizeof(XLAT_STR_585)
+#  endif
+#  ifdef XLAT_STR_586
+  + sizeof(XLAT_STR_586)
+#  endif
+#  ifdef XLAT_STR_587
+  + sizeof(XLAT_STR_587)
+#  endif
+#  ifdef XLAT_STR_588
+  + sizeof(XLAT_STR_588)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
+#  undef XLAT_STR_30
+#  undef XLAT_VAL_30
+#  undef XLAT_STR_31
+#  undef XLAT_VAL_31
+#  undef XLAT_STR_32
+#  undef XLAT_VAL_32
+#  undef XLAT_STR_33
+#  undef XLAT_VAL_33
+#  undef XLAT_STR_34
+#  undef XLAT_VAL_34
+#  undef XLAT_STR_35
+#  undef XLAT_VAL_35
+#  undef XLAT_STR_36
+#  undef XLAT_VAL_36
+#  undef XLAT_STR_37
+#  undef XLAT_VAL_37
+#  undef XLAT_STR_38
+#  undef XLAT_VAL_38
+#  undef XLAT_STR_39
+#  undef XLAT_VAL_39
+#  undef XLAT_STR_40
+#  undef XLAT_VAL_40
+#  undef XLAT_STR_41
+#  undef XLAT_VAL_41
+#  undef XLAT_STR_42
+#  undef XLAT_VAL_42
+#  undef XLAT_STR_43
+#  undef XLAT_VAL_43
+#  undef XLAT_STR_44
+#  undef XLAT_VAL_44
+#  undef XLAT_STR_45
+#  undef XLAT_VAL_45
+#  undef XLAT_STR_46
+#  undef XLAT_VAL_46
+#  undef XLAT_STR_47
+#  undef XLAT_VAL_47
+#  undef XLAT_STR_48
+#  undef XLAT_VAL_48
+#  undef XLAT_STR_49
+#  undef XLAT_VAL_49
+#  undef XLAT_STR_50
+#  undef XLAT_VAL_50
+#  undef XLAT_STR_51
+#  undef XLAT_VAL_51
+#  undef XLAT_STR_52
+#  undef XLAT_VAL_52
+#  undef XLAT_STR_53
+#  undef XLAT_VAL_53
+#  undef XLAT_STR_54
+#  undef XLAT_VAL_54
+#  undef XLAT_STR_55
+#  undef XLAT_VAL_55
+#  undef XLAT_STR_56
+#  undef XLAT_VAL_56
+#  undef XLAT_STR_57
+#  undef XLAT_VAL_57
+#  undef XLAT_STR_58
+#  undef XLAT_VAL_58
+#  undef XLAT_STR_59
+#  undef XLAT_VAL_59
+#  undef XLAT_STR_60
+#  undef XLAT_VAL_60
+#  undef XLAT_STR_61
+#  undef XLAT_VAL_61
+#  undef XLAT_STR_62
+#  undef XLAT_VAL_62
+#  undef XLAT_STR_63
+#  undef XLAT_VAL_63
+#  undef XLAT_STR_64
+#  undef XLAT_VAL_64
+#  undef XLAT_STR_65
+#  undef XLAT_VAL_65
+#  undef XLAT_STR_66
+#  undef XLAT_VAL_66
+#  undef XLAT_STR_67
+#  undef XLAT_VAL_67
+#  undef XLAT_STR_68
+#  undef XLAT_VAL_68
+#  undef XLAT_STR_69
+#  undef XLAT_VAL_69
+#  undef XLAT_STR_70
+#  undef XLAT_VAL_70
+#  undef XLAT_STR_71
+#  undef XLAT_VAL_71
+#  undef XLAT_STR_72
+#  undef XLAT_VAL_72
+#  undef XLAT_STR_73
+#  undef XLAT_VAL_73
+#  undef XLAT_STR_74
+#  undef XLAT_VAL_74
+#  undef XLAT_STR_75
+#  undef XLAT_VAL_75
+#  undef XLAT_STR_76
+#  undef XLAT_VAL_76
+#  undef XLAT_STR_77
+#  undef XLAT_VAL_77
+#  undef XLAT_STR_78
+#  undef XLAT_VAL_78
+#  undef XLAT_STR_79
+#  undef XLAT_VAL_79
+#  undef XLAT_STR_80
+#  undef XLAT_VAL_80
+#  undef XLAT_STR_81
+#  undef XLAT_VAL_81
+#  undef XLAT_STR_82
+#  undef XLAT_VAL_82
+#  undef XLAT_STR_83
+#  undef XLAT_VAL_83
+#  undef XLAT_STR_84
+#  undef XLAT_VAL_84
+#  undef XLAT_STR_85
+#  undef XLAT_VAL_85
+#  undef XLAT_STR_86
+#  undef XLAT_VAL_86
+#  undef XLAT_STR_87
+#  undef XLAT_VAL_87
+#  undef XLAT_STR_88
+#  undef XLAT_VAL_88
+#  undef XLAT_STR_89
+#  undef XLAT_VAL_89
+#  undef XLAT_STR_90
+#  undef XLAT_VAL_90
+#  undef XLAT_STR_91
+#  undef XLAT_VAL_91
+#  undef XLAT_STR_92
+#  undef XLAT_VAL_92
+#  undef XLAT_STR_93
+#  undef XLAT_VAL_93
+#  undef XLAT_STR_94
+#  undef XLAT_VAL_94
+#  undef XLAT_STR_95
+#  undef XLAT_VAL_95
+#  undef XLAT_STR_96
+#  undef XLAT_VAL_96
+#  undef XLAT_STR_97
+#  undef XLAT_VAL_97
+#  undef XLAT_STR_98
+#  undef XLAT_VAL_98
+#  undef XLAT_STR_99
+#  undef XLAT_VAL_99
+#  undef XLAT_STR_100
+#  undef XLAT_VAL_100
+#  undef XLAT_STR_101
+#  undef XLAT_VAL_101
+#  undef XLAT_STR_102
+#  undef XLAT_VAL_102
+#  undef XLAT_STR_103
+#  undef XLAT_VAL_103
+#  undef XLAT_STR_104
+#  undef XLAT_VAL_104
+#  undef XLAT_STR_105
+#  undef XLAT_VAL_105
+#  undef XLAT_STR_106
+#  undef XLAT_VAL_106
+#  undef XLAT_STR_107
+#  undef XLAT_VAL_107
+#  undef XLAT_STR_108
+#  undef XLAT_VAL_108
+#  undef XLAT_STR_109
+#  undef XLAT_VAL_109
+#  undef XLAT_STR_110
+#  undef XLAT_VAL_110
+#  undef XLAT_STR_111
+#  undef XLAT_VAL_111
+#  undef XLAT_STR_112
+#  undef XLAT_VAL_112
+#  undef XLAT_STR_113
+#  undef XLAT_VAL_113
+#  undef XLAT_STR_114
+#  undef XLAT_VAL_114
+#  undef XLAT_STR_115
+#  undef XLAT_VAL_115
+#  undef XLAT_STR_116
+#  undef XLAT_VAL_116
+#  undef XLAT_STR_117
+#  undef XLAT_VAL_117
+#  undef XLAT_STR_118
+#  undef XLAT_VAL_118
+#  undef XLAT_STR_119
+#  undef XLAT_VAL_119
+#  undef XLAT_STR_120
+#  undef XLAT_VAL_120
+#  undef XLAT_STR_121
+#  undef XLAT_VAL_121
+#  undef XLAT_STR_122
+#  undef XLAT_VAL_122
+#  undef XLAT_STR_123
+#  undef XLAT_VAL_123
+#  undef XLAT_STR_124
+#  undef XLAT_VAL_124
+#  undef XLAT_STR_125
+#  undef XLAT_VAL_125
+#  undef XLAT_STR_126
+#  undef XLAT_VAL_126
+#  undef XLAT_STR_127
+#  undef XLAT_VAL_127
+#  undef XLAT_STR_128
+#  undef XLAT_VAL_128
+#  undef XLAT_STR_129
+#  undef XLAT_VAL_129
+#  undef XLAT_STR_130
+#  undef XLAT_VAL_130
+#  undef XLAT_STR_131
+#  undef XLAT_VAL_131
+#  undef XLAT_STR_132
+#  undef XLAT_VAL_132
+#  undef XLAT_STR_133
+#  undef XLAT_VAL_133
+#  undef XLAT_STR_134
+#  undef XLAT_VAL_134
+#  undef XLAT_STR_135
+#  undef XLAT_VAL_135
+#  undef XLAT_STR_136
+#  undef XLAT_VAL_136
+#  undef XLAT_STR_137
+#  undef XLAT_VAL_137
+#  undef XLAT_STR_138
+#  undef XLAT_VAL_138
+#  undef XLAT_STR_139
+#  undef XLAT_VAL_139
+#  undef XLAT_STR_140
+#  undef XLAT_VAL_140
+#  undef XLAT_STR_141
+#  undef XLAT_VAL_141
+#  undef XLAT_STR_142
+#  undef XLAT_VAL_142
+#  undef XLAT_STR_143
+#  undef XLAT_VAL_143
+#  undef XLAT_STR_144
+#  undef XLAT_VAL_144
+#  undef XLAT_STR_145
+#  undef XLAT_VAL_145
+#  undef XLAT_STR_146
+#  undef XLAT_VAL_146
+#  undef XLAT_STR_147
+#  undef XLAT_VAL_147
+#  undef XLAT_STR_148
+#  undef XLAT_VAL_148
+#  undef XLAT_STR_149
+#  undef XLAT_VAL_149
+#  undef XLAT_STR_150
+#  undef XLAT_VAL_150
+#  undef XLAT_STR_151
+#  undef XLAT_VAL_151
+#  undef XLAT_STR_152
+#  undef XLAT_VAL_152
+#  undef XLAT_STR_153
+#  undef XLAT_VAL_153
+#  undef XLAT_STR_154
+#  undef XLAT_VAL_154
+#  undef XLAT_STR_155
+#  undef XLAT_VAL_155
+#  undef XLAT_STR_156
+#  undef XLAT_VAL_156
+#  undef XLAT_STR_157
+#  undef XLAT_VAL_157
+#  undef XLAT_STR_158
+#  undef XLAT_VAL_158
+#  undef XLAT_STR_159
+#  undef XLAT_VAL_159
+#  undef XLAT_STR_160
+#  undef XLAT_VAL_160
+#  undef XLAT_STR_161
+#  undef XLAT_VAL_161
+#  undef XLAT_STR_162
+#  undef XLAT_VAL_162
+#  undef XLAT_STR_163
+#  undef XLAT_VAL_163
+#  undef XLAT_STR_164
+#  undef XLAT_VAL_164
+#  undef XLAT_STR_165
+#  undef XLAT_VAL_165
+#  undef XLAT_STR_166
+#  undef XLAT_VAL_166
+#  undef XLAT_STR_167
+#  undef XLAT_VAL_167
+#  undef XLAT_STR_168
+#  undef XLAT_VAL_168
+#  undef XLAT_STR_169
+#  undef XLAT_VAL_169
+#  undef XLAT_STR_170
+#  undef XLAT_VAL_170
+#  undef XLAT_STR_171
+#  undef XLAT_VAL_171
+#  undef XLAT_STR_172
+#  undef XLAT_VAL_172
+#  undef XLAT_STR_173
+#  undef XLAT_VAL_173
+#  undef XLAT_STR_174
+#  undef XLAT_VAL_174
+#  undef XLAT_STR_175
+#  undef XLAT_VAL_175
+#  undef XLAT_STR_176
+#  undef XLAT_VAL_176
+#  undef XLAT_STR_177
+#  undef XLAT_VAL_177
+#  undef XLAT_STR_178
+#  undef XLAT_VAL_178
+#  undef XLAT_STR_179
+#  undef XLAT_VAL_179
+#  undef XLAT_STR_180
+#  undef XLAT_VAL_180
+#  undef XLAT_STR_181
+#  undef XLAT_VAL_181
+#  undef XLAT_STR_182
+#  undef XLAT_VAL_182
+#  undef XLAT_STR_183
+#  undef XLAT_VAL_183
+#  undef XLAT_STR_184
+#  undef XLAT_VAL_184
+#  undef XLAT_STR_185
+#  undef XLAT_VAL_185
+#  undef XLAT_STR_186
+#  undef XLAT_VAL_186
+#  undef XLAT_STR_187
+#  undef XLAT_VAL_187
+#  undef XLAT_STR_188
+#  undef XLAT_VAL_188
+#  undef XLAT_STR_189
+#  undef XLAT_VAL_189
+#  undef XLAT_STR_190
+#  undef XLAT_VAL_190
+#  undef XLAT_STR_191
+#  undef XLAT_VAL_191
+#  undef XLAT_STR_192
+#  undef XLAT_VAL_192
+#  undef XLAT_STR_193
+#  undef XLAT_VAL_193
+#  undef XLAT_STR_194
+#  undef XLAT_VAL_194
+#  undef XLAT_STR_195
+#  undef XLAT_VAL_195
+#  undef XLAT_STR_196
+#  undef XLAT_VAL_196
+#  undef XLAT_STR_197
+#  undef XLAT_VAL_197
+#  undef XLAT_STR_198
+#  undef XLAT_VAL_198
+#  undef XLAT_STR_199
+#  undef XLAT_VAL_199
+#  undef XLAT_STR_200
+#  undef XLAT_VAL_200
+#  undef XLAT_STR_201
+#  undef XLAT_VAL_201
+#  undef XLAT_STR_202
+#  undef XLAT_VAL_202
+#  undef XLAT_STR_203
+#  undef XLAT_VAL_203
+#  undef XLAT_STR_204
+#  undef XLAT_VAL_204
+#  undef XLAT_STR_205
+#  undef XLAT_VAL_205
+#  undef XLAT_STR_206
+#  undef XLAT_VAL_206
+#  undef XLAT_STR_207
+#  undef XLAT_VAL_207
+#  undef XLAT_STR_208
+#  undef XLAT_VAL_208
+#  undef XLAT_STR_209
+#  undef XLAT_VAL_209
+#  undef XLAT_STR_210
+#  undef XLAT_VAL_210
+#  undef XLAT_STR_211
+#  undef XLAT_VAL_211
+#  undef XLAT_STR_212
+#  undef XLAT_VAL_212
+#  undef XLAT_STR_213
+#  undef XLAT_VAL_213
+#  undef XLAT_STR_214
+#  undef XLAT_VAL_214
+#  undef XLAT_STR_215
+#  undef XLAT_VAL_215
+#  undef XLAT_STR_216
+#  undef XLAT_VAL_216
+#  undef XLAT_STR_217
+#  undef XLAT_VAL_217
+#  undef XLAT_STR_218
+#  undef XLAT_VAL_218
+#  undef XLAT_STR_219
+#  undef XLAT_VAL_219
+#  undef XLAT_STR_220
+#  undef XLAT_VAL_220
+#  undef XLAT_STR_221
+#  undef XLAT_VAL_221
+#  undef XLAT_STR_222
+#  undef XLAT_VAL_222
+#  undef XLAT_STR_223
+#  undef XLAT_VAL_223
+#  undef XLAT_STR_224
+#  undef XLAT_VAL_224
+#  undef XLAT_STR_225
+#  undef XLAT_VAL_225
+#  undef XLAT_STR_226
+#  undef XLAT_VAL_226
+#  undef XLAT_STR_227
+#  undef XLAT_VAL_227
+#  undef XLAT_STR_228
+#  undef XLAT_VAL_228
+#  undef XLAT_STR_229
+#  undef XLAT_VAL_229
+#  undef XLAT_STR_230
+#  undef XLAT_VAL_230
+#  undef XLAT_STR_231
+#  undef XLAT_VAL_231
+#  undef XLAT_STR_232
+#  undef XLAT_VAL_232
+#  undef XLAT_STR_233
+#  undef XLAT_VAL_233
+#  undef XLAT_STR_234
+#  undef XLAT_VAL_234
+#  undef XLAT_STR_235
+#  undef XLAT_VAL_235
+#  undef XLAT_STR_236
+#  undef XLAT_VAL_236
+#  undef XLAT_STR_237
+#  undef XLAT_VAL_237
+#  undef XLAT_STR_238
+#  undef XLAT_VAL_238
+#  undef XLAT_STR_239
+#  undef XLAT_VAL_239
+#  undef XLAT_STR_240
+#  undef XLAT_VAL_240
+#  undef XLAT_STR_241
+#  undef XLAT_VAL_241
+#  undef XLAT_STR_242
+#  undef XLAT_VAL_242
+#  undef XLAT_STR_243
+#  undef XLAT_VAL_243
+#  undef XLAT_STR_244
+#  undef XLAT_VAL_244
+#  undef XLAT_STR_245
+#  undef XLAT_VAL_245
+#  undef XLAT_STR_246
+#  undef XLAT_VAL_246
+#  undef XLAT_STR_247
+#  undef XLAT_VAL_247
+#  undef XLAT_STR_248
+#  undef XLAT_VAL_248
+#  undef XLAT_STR_249
+#  undef XLAT_VAL_249
+#  undef XLAT_STR_250
+#  undef XLAT_VAL_250
+#  undef XLAT_STR_251
+#  undef XLAT_VAL_251
+#  undef XLAT_STR_252
+#  undef XLAT_VAL_252
+#  undef XLAT_STR_253
+#  undef XLAT_VAL_253
+#  undef XLAT_STR_254
+#  undef XLAT_VAL_254
+#  undef XLAT_STR_255
+#  undef XLAT_VAL_255
+#  undef XLAT_STR_256
+#  undef XLAT_VAL_256
+#  undef XLAT_STR_257
+#  undef XLAT_VAL_257
+#  undef XLAT_STR_258
+#  undef XLAT_VAL_258
+#  undef XLAT_STR_259
+#  undef XLAT_VAL_259
+#  undef XLAT_STR_260
+#  undef XLAT_VAL_260
+#  undef XLAT_STR_261
+#  undef XLAT_VAL_261
+#  undef XLAT_STR_262
+#  undef XLAT_VAL_262
+#  undef XLAT_STR_263
+#  undef XLAT_VAL_263
+#  undef XLAT_STR_264
+#  undef XLAT_VAL_264
+#  undef XLAT_STR_265
+#  undef XLAT_VAL_265
+#  undef XLAT_STR_266
+#  undef XLAT_VAL_266
+#  undef XLAT_STR_267
+#  undef XLAT_VAL_267
+#  undef XLAT_STR_268
+#  undef XLAT_VAL_268
+#  undef XLAT_STR_269
+#  undef XLAT_VAL_269
+#  undef XLAT_STR_270
+#  undef XLAT_VAL_270
+#  undef XLAT_STR_271
+#  undef XLAT_VAL_271
+#  undef XLAT_STR_272
+#  undef XLAT_VAL_272
+#  undef XLAT_STR_273
+#  undef XLAT_VAL_273
+#  undef XLAT_STR_274
+#  undef XLAT_VAL_274
+#  undef XLAT_STR_275
+#  undef XLAT_VAL_275
+#  undef XLAT_STR_276
+#  undef XLAT_VAL_276
+#  undef XLAT_STR_277
+#  undef XLAT_VAL_277
+#  undef XLAT_STR_278
+#  undef XLAT_VAL_278
+#  undef XLAT_STR_279
+#  undef XLAT_VAL_279
+#  undef XLAT_STR_280
+#  undef XLAT_VAL_280
+#  undef XLAT_STR_281
+#  undef XLAT_VAL_281
+#  undef XLAT_STR_282
+#  undef XLAT_VAL_282
+#  undef XLAT_STR_283
+#  undef XLAT_VAL_283
+#  undef XLAT_STR_284
+#  undef XLAT_VAL_284
+#  undef XLAT_STR_285
+#  undef XLAT_VAL_285
+#  undef XLAT_STR_286
+#  undef XLAT_VAL_286
+#  undef XLAT_STR_287
+#  undef XLAT_VAL_287
+#  undef XLAT_STR_288
+#  undef XLAT_VAL_288
+#  undef XLAT_STR_289
+#  undef XLAT_VAL_289
+#  undef XLAT_STR_290
+#  undef XLAT_VAL_290
+#  undef XLAT_STR_291
+#  undef XLAT_VAL_291
+#  undef XLAT_STR_292
+#  undef XLAT_VAL_292
+#  undef XLAT_STR_293
+#  undef XLAT_VAL_293
+#  undef XLAT_STR_294
+#  undef XLAT_VAL_294
+#  undef XLAT_STR_295
+#  undef XLAT_VAL_295
+#  undef XLAT_STR_296
+#  undef XLAT_VAL_296
+#  undef XLAT_STR_297
+#  undef XLAT_VAL_297
+#  undef XLAT_STR_298
+#  undef XLAT_VAL_298
+#  undef XLAT_STR_299
+#  undef XLAT_VAL_299
+#  undef XLAT_STR_300
+#  undef XLAT_VAL_300
+#  undef XLAT_STR_301
+#  undef XLAT_VAL_301
+#  undef XLAT_STR_302
+#  undef XLAT_VAL_302
+#  undef XLAT_STR_303
+#  undef XLAT_VAL_303
+#  undef XLAT_STR_304
+#  undef XLAT_VAL_304
+#  undef XLAT_STR_305
+#  undef XLAT_VAL_305
+#  undef XLAT_STR_306
+#  undef XLAT_VAL_306
+#  undef XLAT_STR_307
+#  undef XLAT_VAL_307
+#  undef XLAT_STR_308
+#  undef XLAT_VAL_308
+#  undef XLAT_STR_309
+#  undef XLAT_VAL_309
+#  undef XLAT_STR_310
+#  undef XLAT_VAL_310
+#  undef XLAT_STR_311
+#  undef XLAT_VAL_311
+#  undef XLAT_STR_312
+#  undef XLAT_VAL_312
+#  undef XLAT_STR_313
+#  undef XLAT_VAL_313
+#  undef XLAT_STR_314
+#  undef XLAT_VAL_314
+#  undef XLAT_STR_315
+#  undef XLAT_VAL_315
+#  undef XLAT_STR_316
+#  undef XLAT_VAL_316
+#  undef XLAT_STR_317
+#  undef XLAT_VAL_317
+#  undef XLAT_STR_318
+#  undef XLAT_VAL_318
+#  undef XLAT_STR_319
+#  undef XLAT_VAL_319
+#  undef XLAT_STR_320
+#  undef XLAT_VAL_320
+#  undef XLAT_STR_321
+#  undef XLAT_VAL_321
+#  undef XLAT_STR_322
+#  undef XLAT_VAL_322
+#  undef XLAT_STR_323
+#  undef XLAT_VAL_323
+#  undef XLAT_STR_324
+#  undef XLAT_VAL_324
+#  undef XLAT_STR_325
+#  undef XLAT_VAL_325
+#  undef XLAT_STR_326
+#  undef XLAT_VAL_326
+#  undef XLAT_STR_327
+#  undef XLAT_VAL_327
+#  undef XLAT_STR_328
+#  undef XLAT_VAL_328
+#  undef XLAT_STR_329
+#  undef XLAT_VAL_329
+#  undef XLAT_STR_330
+#  undef XLAT_VAL_330
+#  undef XLAT_STR_331
+#  undef XLAT_VAL_331
+#  undef XLAT_STR_332
+#  undef XLAT_VAL_332
+#  undef XLAT_STR_333
+#  undef XLAT_VAL_333
+#  undef XLAT_STR_334
+#  undef XLAT_VAL_334
+#  undef XLAT_STR_335
+#  undef XLAT_VAL_335
+#  undef XLAT_STR_336
+#  undef XLAT_VAL_336
+#  undef XLAT_STR_337
+#  undef XLAT_VAL_337
+#  undef XLAT_STR_338
+#  undef XLAT_VAL_338
+#  undef XLAT_STR_339
+#  undef XLAT_VAL_339
+#  undef XLAT_STR_340
+#  undef XLAT_VAL_340
+#  undef XLAT_STR_341
+#  undef XLAT_VAL_341
+#  undef XLAT_STR_342
+#  undef XLAT_VAL_342
+#  undef XLAT_STR_343
+#  undef XLAT_VAL_343
+#  undef XLAT_STR_344
+#  undef XLAT_VAL_344
+#  undef XLAT_STR_345
+#  undef XLAT_VAL_345
+#  undef XLAT_STR_346
+#  undef XLAT_VAL_346
+#  undef XLAT_STR_347
+#  undef XLAT_VAL_347
+#  undef XLAT_STR_348
+#  undef XLAT_VAL_348
+#  undef XLAT_STR_349
+#  undef XLAT_VAL_349
+#  undef XLAT_STR_350
+#  undef XLAT_VAL_350
+#  undef XLAT_STR_351
+#  undef XLAT_VAL_351
+#  undef XLAT_STR_352
+#  undef XLAT_VAL_352
+#  undef XLAT_STR_353
+#  undef XLAT_VAL_353
+#  undef XLAT_STR_354
+#  undef XLAT_VAL_354
+#  undef XLAT_STR_355
+#  undef XLAT_VAL_355
+#  undef XLAT_STR_356
+#  undef XLAT_VAL_356
+#  undef XLAT_STR_357
+#  undef XLAT_VAL_357
+#  undef XLAT_STR_358
+#  undef XLAT_VAL_358
+#  undef XLAT_STR_359
+#  undef XLAT_VAL_359
+#  undef XLAT_STR_360
+#  undef XLAT_VAL_360
+#  undef XLAT_STR_361
+#  undef XLAT_VAL_361
+#  undef XLAT_STR_362
+#  undef XLAT_VAL_362
+#  undef XLAT_STR_363
+#  undef XLAT_VAL_363
+#  undef XLAT_STR_364
+#  undef XLAT_VAL_364
+#  undef XLAT_STR_365
+#  undef XLAT_VAL_365
+#  undef XLAT_STR_366
+#  undef XLAT_VAL_366
+#  undef XLAT_STR_367
+#  undef XLAT_VAL_367
+#  undef XLAT_STR_368
+#  undef XLAT_VAL_368
+#  undef XLAT_STR_369
+#  undef XLAT_VAL_369
+#  undef XLAT_STR_370
+#  undef XLAT_VAL_370
+#  undef XLAT_STR_371
+#  undef XLAT_VAL_371
+#  undef XLAT_STR_372
+#  undef XLAT_VAL_372
+#  undef XLAT_STR_373
+#  undef XLAT_VAL_373
+#  undef XLAT_STR_374
+#  undef XLAT_VAL_374
+#  undef XLAT_STR_375
+#  undef XLAT_VAL_375
+#  undef XLAT_STR_376
+#  undef XLAT_VAL_376
+#  undef XLAT_STR_377
+#  undef XLAT_VAL_377
+#  undef XLAT_STR_378
+#  undef XLAT_VAL_378
+#  undef XLAT_STR_379
+#  undef XLAT_VAL_379
+#  undef XLAT_STR_380
+#  undef XLAT_VAL_380
+#  undef XLAT_STR_381
+#  undef XLAT_VAL_381
+#  undef XLAT_STR_382
+#  undef XLAT_VAL_382
+#  undef XLAT_STR_383
+#  undef XLAT_VAL_383
+#  undef XLAT_STR_384
+#  undef XLAT_VAL_384
+#  undef XLAT_STR_385
+#  undef XLAT_VAL_385
+#  undef XLAT_STR_386
+#  undef XLAT_VAL_386
+#  undef XLAT_STR_387
+#  undef XLAT_VAL_387
+#  undef XLAT_STR_388
+#  undef XLAT_VAL_388
+#  undef XLAT_STR_389
+#  undef XLAT_VAL_389
+#  undef XLAT_STR_390
+#  undef XLAT_VAL_390
+#  undef XLAT_STR_391
+#  undef XLAT_VAL_391
+#  undef XLAT_STR_392
+#  undef XLAT_VAL_392
+#  undef XLAT_STR_393
+#  undef XLAT_VAL_393
+#  undef XLAT_STR_394
+#  undef XLAT_VAL_394
+#  undef XLAT_STR_395
+#  undef XLAT_VAL_395
+#  undef XLAT_STR_396
+#  undef XLAT_VAL_396
+#  undef XLAT_STR_397
+#  undef XLAT_VAL_397
+#  undef XLAT_STR_398
+#  undef XLAT_VAL_398
+#  undef XLAT_STR_399
+#  undef XLAT_VAL_399
+#  undef XLAT_STR_400
+#  undef XLAT_VAL_400
+#  undef XLAT_STR_401
+#  undef XLAT_VAL_401
+#  undef XLAT_STR_402
+#  undef XLAT_VAL_402
+#  undef XLAT_STR_403
+#  undef XLAT_VAL_403
+#  undef XLAT_STR_404
+#  undef XLAT_VAL_404
+#  undef XLAT_STR_405
+#  undef XLAT_VAL_405
+#  undef XLAT_STR_406
+#  undef XLAT_VAL_406
+#  undef XLAT_STR_407
+#  undef XLAT_VAL_407
+#  undef XLAT_STR_408
+#  undef XLAT_VAL_408
+#  undef XLAT_STR_409
+#  undef XLAT_VAL_409
+#  undef XLAT_STR_410
+#  undef XLAT_VAL_410
+#  undef XLAT_STR_411
+#  undef XLAT_VAL_411
+#  undef XLAT_STR_412
+#  undef XLAT_VAL_412
+#  undef XLAT_STR_413
+#  undef XLAT_VAL_413
+#  undef XLAT_STR_414
+#  undef XLAT_VAL_414
+#  undef XLAT_STR_415
+#  undef XLAT_VAL_415
+#  undef XLAT_STR_416
+#  undef XLAT_VAL_416
+#  undef XLAT_STR_417
+#  undef XLAT_VAL_417
+#  undef XLAT_STR_418
+#  undef XLAT_VAL_418
+#  undef XLAT_STR_419
+#  undef XLAT_VAL_419
+#  undef XLAT_STR_420
+#  undef XLAT_VAL_420
+#  undef XLAT_STR_421
+#  undef XLAT_VAL_421
+#  undef XLAT_STR_422
+#  undef XLAT_VAL_422
+#  undef XLAT_STR_423
+#  undef XLAT_VAL_423
+#  undef XLAT_STR_424
+#  undef XLAT_VAL_424
+#  undef XLAT_STR_425
+#  undef XLAT_VAL_425
+#  undef XLAT_STR_426
+#  undef XLAT_VAL_426
+#  undef XLAT_STR_427
+#  undef XLAT_VAL_427
+#  undef XLAT_STR_428
+#  undef XLAT_VAL_428
+#  undef XLAT_STR_429
+#  undef XLAT_VAL_429
+#  undef XLAT_STR_430
+#  undef XLAT_VAL_430
+#  undef XLAT_STR_431
+#  undef XLAT_VAL_431
+#  undef XLAT_STR_432
+#  undef XLAT_VAL_432
+#  undef XLAT_STR_433
+#  undef XLAT_VAL_433
+#  undef XLAT_STR_434
+#  undef XLAT_VAL_434
+#  undef XLAT_STR_435
+#  undef XLAT_VAL_435
+#  undef XLAT_STR_436
+#  undef XLAT_VAL_436
+#  undef XLAT_STR_437
+#  undef XLAT_VAL_437
+#  undef XLAT_STR_438
+#  undef XLAT_VAL_438
+#  undef XLAT_STR_439
+#  undef XLAT_VAL_439
+#  undef XLAT_STR_440
+#  undef XLAT_VAL_440
+#  undef XLAT_STR_441
+#  undef XLAT_VAL_441
+#  undef XLAT_STR_442
+#  undef XLAT_VAL_442
+#  undef XLAT_STR_443
+#  undef XLAT_VAL_443
+#  undef XLAT_STR_444
+#  undef XLAT_VAL_444
+#  undef XLAT_STR_445
+#  undef XLAT_VAL_445
+#  undef XLAT_STR_446
+#  undef XLAT_VAL_446
+#  undef XLAT_STR_447
+#  undef XLAT_VAL_447
+#  undef XLAT_STR_448
+#  undef XLAT_VAL_448
+#  undef XLAT_STR_449
+#  undef XLAT_VAL_449
+#  undef XLAT_STR_450
+#  undef XLAT_VAL_450
+#  undef XLAT_STR_451
+#  undef XLAT_VAL_451
+#  undef XLAT_STR_452
+#  undef XLAT_VAL_452
+#  undef XLAT_STR_453
+#  undef XLAT_VAL_453
+#  undef XLAT_STR_454
+#  undef XLAT_VAL_454
+#  undef XLAT_STR_455
+#  undef XLAT_VAL_455
+#  undef XLAT_STR_456
+#  undef XLAT_VAL_456
+#  undef XLAT_STR_457
+#  undef XLAT_VAL_457
+#  undef XLAT_STR_458
+#  undef XLAT_VAL_458
+#  undef XLAT_STR_459
+#  undef XLAT_VAL_459
+#  undef XLAT_STR_460
+#  undef XLAT_VAL_460
+#  undef XLAT_STR_461
+#  undef XLAT_VAL_461
+#  undef XLAT_STR_462
+#  undef XLAT_VAL_462
+#  undef XLAT_STR_463
+#  undef XLAT_VAL_463
+#  undef XLAT_STR_464
+#  undef XLAT_VAL_464
+#  undef XLAT_STR_465
+#  undef XLAT_VAL_465
+#  undef XLAT_STR_466
+#  undef XLAT_VAL_466
+#  undef XLAT_STR_467
+#  undef XLAT_VAL_467
+#  undef XLAT_STR_468
+#  undef XLAT_VAL_468
+#  undef XLAT_STR_469
+#  undef XLAT_VAL_469
+#  undef XLAT_STR_470
+#  undef XLAT_VAL_470
+#  undef XLAT_STR_471
+#  undef XLAT_VAL_471
+#  undef XLAT_STR_472
+#  undef XLAT_VAL_472
+#  undef XLAT_STR_473
+#  undef XLAT_VAL_473
+#  undef XLAT_STR_474
+#  undef XLAT_VAL_474
+#  undef XLAT_STR_475
+#  undef XLAT_VAL_475
+#  undef XLAT_STR_476
+#  undef XLAT_VAL_476
+#  undef XLAT_STR_477
+#  undef XLAT_VAL_477
+#  undef XLAT_STR_478
+#  undef XLAT_VAL_478
+#  undef XLAT_STR_479
+#  undef XLAT_VAL_479
+#  undef XLAT_STR_480
+#  undef XLAT_VAL_480
+#  undef XLAT_STR_481
+#  undef XLAT_VAL_481
+#  undef XLAT_STR_482
+#  undef XLAT_VAL_482
+#  undef XLAT_STR_483
+#  undef XLAT_VAL_483
+#  undef XLAT_STR_484
+#  undef XLAT_VAL_484
+#  undef XLAT_STR_485
+#  undef XLAT_VAL_485
+#  undef XLAT_STR_486
+#  undef XLAT_VAL_486
+#  undef XLAT_STR_487
+#  undef XLAT_VAL_487
+#  undef XLAT_STR_488
+#  undef XLAT_VAL_488
+#  undef XLAT_STR_489
+#  undef XLAT_VAL_489
+#  undef XLAT_STR_490
+#  undef XLAT_VAL_490
+#  undef XLAT_STR_491
+#  undef XLAT_VAL_491
+#  undef XLAT_STR_492
+#  undef XLAT_VAL_492
+#  undef XLAT_STR_493
+#  undef XLAT_VAL_493
+#  undef XLAT_STR_494
+#  undef XLAT_VAL_494
+#  undef XLAT_STR_495
+#  undef XLAT_VAL_495
+#  undef XLAT_STR_496
+#  undef XLAT_VAL_496
+#  undef XLAT_STR_497
+#  undef XLAT_VAL_497
+#  undef XLAT_STR_498
+#  undef XLAT_VAL_498
+#  undef XLAT_STR_499
+#  undef XLAT_VAL_499
+#  undef XLAT_STR_500
+#  undef XLAT_VAL_500
+#  undef XLAT_STR_501
+#  undef XLAT_VAL_501
+#  undef XLAT_STR_502
+#  undef XLAT_VAL_502
+#  undef XLAT_STR_503
+#  undef XLAT_VAL_503
+#  undef XLAT_STR_504
+#  undef XLAT_VAL_504
+#  undef XLAT_STR_505
+#  undef XLAT_VAL_505
+#  undef XLAT_STR_506
+#  undef XLAT_VAL_506
+#  undef XLAT_STR_507
+#  undef XLAT_VAL_507
+#  undef XLAT_STR_508
+#  undef XLAT_VAL_508
+#  undef XLAT_STR_509
+#  undef XLAT_VAL_509
+#  undef XLAT_STR_510
+#  undef XLAT_VAL_510
+#  undef XLAT_STR_511
+#  undef XLAT_VAL_511
+#  undef XLAT_STR_512
+#  undef XLAT_VAL_512
+#  undef XLAT_STR_513
+#  undef XLAT_VAL_513
+#  undef XLAT_STR_514
+#  undef XLAT_VAL_514
+#  undef XLAT_STR_515
+#  undef XLAT_VAL_515
+#  undef XLAT_STR_516
+#  undef XLAT_VAL_516
+#  undef XLAT_STR_517
+#  undef XLAT_VAL_517
+#  undef XLAT_STR_518
+#  undef XLAT_VAL_518
+#  undef XLAT_STR_519
+#  undef XLAT_VAL_519
+#  undef XLAT_STR_520
+#  undef XLAT_VAL_520
+#  undef XLAT_STR_521
+#  undef XLAT_VAL_521
+#  undef XLAT_STR_522
+#  undef XLAT_VAL_522
+#  undef XLAT_STR_523
+#  undef XLAT_VAL_523
+#  undef XLAT_STR_524
+#  undef XLAT_VAL_524
+#  undef XLAT_STR_525
+#  undef XLAT_VAL_525
+#  undef XLAT_STR_526
+#  undef XLAT_VAL_526
+#  undef XLAT_STR_527
+#  undef XLAT_VAL_527
+#  undef XLAT_STR_528
+#  undef XLAT_VAL_528
+#  undef XLAT_STR_529
+#  undef XLAT_VAL_529
+#  undef XLAT_STR_530
+#  undef XLAT_VAL_530
+#  undef XLAT_STR_531
+#  undef XLAT_VAL_531
+#  undef XLAT_STR_532
+#  undef XLAT_VAL_532
+#  undef XLAT_STR_533
+#  undef XLAT_VAL_533
+#  undef XLAT_STR_534
+#  undef XLAT_VAL_534
+#  undef XLAT_STR_535
+#  undef XLAT_VAL_535
+#  undef XLAT_STR_536
+#  undef XLAT_VAL_536
+#  undef XLAT_STR_537
+#  undef XLAT_VAL_537
+#  undef XLAT_STR_538
+#  undef XLAT_VAL_538
+#  undef XLAT_STR_539
+#  undef XLAT_VAL_539
+#  undef XLAT_STR_540
+#  undef XLAT_VAL_540
+#  undef XLAT_STR_541
+#  undef XLAT_VAL_541
+#  undef XLAT_STR_542
+#  undef XLAT_VAL_542
+#  undef XLAT_STR_543
+#  undef XLAT_VAL_543
+#  undef XLAT_STR_544
+#  undef XLAT_VAL_544
+#  undef XLAT_STR_545
+#  undef XLAT_VAL_545
+#  undef XLAT_STR_546
+#  undef XLAT_VAL_546
+#  undef XLAT_STR_547
+#  undef XLAT_VAL_547
+#  undef XLAT_STR_548
+#  undef XLAT_VAL_548
+#  undef XLAT_STR_549
+#  undef XLAT_VAL_549
+#  undef XLAT_STR_550
+#  undef XLAT_VAL_550
+#  undef XLAT_STR_551
+#  undef XLAT_VAL_551
+#  undef XLAT_STR_552
+#  undef XLAT_VAL_552
+#  undef XLAT_STR_553
+#  undef XLAT_VAL_553
+#  undef XLAT_STR_554
+#  undef XLAT_VAL_554
+#  undef XLAT_STR_555
+#  undef XLAT_VAL_555
+#  undef XLAT_STR_556
+#  undef XLAT_VAL_556
+#  undef XLAT_STR_557
+#  undef XLAT_VAL_557
+#  undef XLAT_STR_558
+#  undef XLAT_VAL_558
+#  undef XLAT_STR_559
+#  undef XLAT_VAL_559
+#  undef XLAT_STR_560
+#  undef XLAT_VAL_560
+#  undef XLAT_STR_561
+#  undef XLAT_VAL_561
+#  undef XLAT_STR_562
+#  undef XLAT_VAL_562
+#  undef XLAT_STR_563
+#  undef XLAT_VAL_563
+#  undef XLAT_STR_564
+#  undef XLAT_VAL_564
+#  undef XLAT_STR_565
+#  undef XLAT_VAL_565
+#  undef XLAT_STR_566
+#  undef XLAT_VAL_566
+#  undef XLAT_STR_567
+#  undef XLAT_VAL_567
+#  undef XLAT_STR_568
+#  undef XLAT_VAL_568
+#  undef XLAT_STR_569
+#  undef XLAT_VAL_569
+#  undef XLAT_STR_570
+#  undef XLAT_VAL_570
+#  undef XLAT_STR_571
+#  undef XLAT_VAL_571
+#  undef XLAT_STR_572
+#  undef XLAT_VAL_572
+#  undef XLAT_STR_573
+#  undef XLAT_VAL_573
+#  undef XLAT_STR_574
+#  undef XLAT_VAL_574
+#  undef XLAT_STR_575
+#  undef XLAT_VAL_575
+#  undef XLAT_STR_576
+#  undef XLAT_VAL_576
+#  undef XLAT_STR_577
+#  undef XLAT_VAL_577
+#  undef XLAT_STR_578
+#  undef XLAT_VAL_578
+#  undef XLAT_STR_579
+#  undef XLAT_VAL_579
+#  undef XLAT_STR_580
+#  undef XLAT_VAL_580
+#  undef XLAT_STR_581
+#  undef XLAT_VAL_581
+#  undef XLAT_STR_582
+#  undef XLAT_VAL_582
+#  undef XLAT_STR_583
+#  undef XLAT_VAL_583
+#  undef XLAT_STR_584
+#  undef XLAT_VAL_584
+#  undef XLAT_STR_585
+#  undef XLAT_VAL_585
+#  undef XLAT_STR_586
+#  undef XLAT_VAL_586
+#  undef XLAT_STR_587
+#  undef XLAT_VAL_587
+#  undef XLAT_STR_588
+#  undef XLAT_VAL_588
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 08fb5d1027c31fa0a7f0b7bb9305bcb07561e016..c2700c5f22c6b38950435ee4d314b801de397464 100644 (file)
@@ -525,6 +525,7 @@ KEY_APPSELECT               0x244
 KEY_SCREENSAVER                0x245
 KEY_VOICECOMMAND               0x246
 KEY_ASSISTANT          0x247
+KEY_KBD_LAYOUT_NEXT    0x248
 
 #ifndef STRACE_WORKAROUND_FOR_KEY_BRIGHTNESS_MIN
 # define STRACE_WORKAROUND_FOR_KEY_BRIGHTNESS_MIN
@@ -583,6 +584,53 @@ KEY_SLOWREVERSE                    0x276
 KEY_DATA                       0x277
 
 KEY_ONSCREEN_KEYBOARD          0x278
+KEY_PRIVACY_SCREEN_TOGGLE      0x279
+
+KEY_SELECTIVE_SCREENSHOT       0x27a
+
+KEY_MACRO1                     0x290
+KEY_MACRO2                     0x291
+KEY_MACRO3                     0x292
+KEY_MACRO4                     0x293
+KEY_MACRO5                     0x294
+KEY_MACRO6                     0x295
+KEY_MACRO7                     0x296
+KEY_MACRO8                     0x297
+KEY_MACRO9                     0x298
+KEY_MACRO10                    0x299
+KEY_MACRO11                    0x29a
+KEY_MACRO12                    0x29b
+KEY_MACRO13                    0x29c
+KEY_MACRO14                    0x29d
+KEY_MACRO15                    0x29e
+KEY_MACRO16                    0x29f
+KEY_MACRO17                    0x2a0
+KEY_MACRO18                    0x2a1
+KEY_MACRO19                    0x2a2
+KEY_MACRO20                    0x2a3
+KEY_MACRO21                    0x2a4
+KEY_MACRO22                    0x2a5
+KEY_MACRO23                    0x2a6
+KEY_MACRO24                    0x2a7
+KEY_MACRO25                    0x2a8
+KEY_MACRO26                    0x2a9
+KEY_MACRO27                    0x2aa
+KEY_MACRO28                    0x2ab
+KEY_MACRO29                    0x2ac
+KEY_MACRO30                    0x2ad
+
+KEY_MACRO_RECORD_START         0x2b0
+KEY_MACRO_RECORD_STOP          0x2b1
+KEY_MACRO_PRESET_CYCLE         0x2b2
+KEY_MACRO_PRESET1              0x2b3
+KEY_MACRO_PRESET2              0x2b4
+KEY_MACRO_PRESET3              0x2b5
+
+KEY_KBD_LCD_MENU1              0x2b8
+KEY_KBD_LCD_MENU2              0x2b9
+KEY_KBD_LCD_MENU3              0x2ba
+KEY_KBD_LCD_MENU4              0x2bb
+KEY_KBD_LCD_MENU5              0x2bc
 
 BTN_TRIGGER_HAPPY1             0x2c0
 BTN_TRIGGER_HAPPY2             0x2c1
index 09dc066591093bd08eaafc9c153908bfeda848e1..a405f3367999c03c8c96030c715140de49be3b60 100644 (file)
@@ -89,22 +89,140 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat evdev_leds[] = {
+static const struct xlat_data evdev_leds_xdata[] = {
  [LED_NUML] = XLAT(LED_NUML),
+ #define XLAT_VAL_0 ((unsigned) (LED_NUML))
+ #define XLAT_STR_0 STRINGIFY(LED_NUML)
  [LED_CAPSL] = XLAT(LED_CAPSL),
+ #define XLAT_VAL_1 ((unsigned) (LED_CAPSL))
+ #define XLAT_STR_1 STRINGIFY(LED_CAPSL)
  [LED_SCROLLL] = XLAT(LED_SCROLLL),
+ #define XLAT_VAL_2 ((unsigned) (LED_SCROLLL))
+ #define XLAT_STR_2 STRINGIFY(LED_SCROLLL)
  [LED_COMPOSE] = XLAT(LED_COMPOSE),
+ #define XLAT_VAL_3 ((unsigned) (LED_COMPOSE))
+ #define XLAT_STR_3 STRINGIFY(LED_COMPOSE)
  [LED_KANA] = XLAT(LED_KANA),
+ #define XLAT_VAL_4 ((unsigned) (LED_KANA))
+ #define XLAT_STR_4 STRINGIFY(LED_KANA)
  [LED_SLEEP] = XLAT(LED_SLEEP),
+ #define XLAT_VAL_5 ((unsigned) (LED_SLEEP))
+ #define XLAT_STR_5 STRINGIFY(LED_SLEEP)
  [LED_SUSPEND] = XLAT(LED_SUSPEND),
+ #define XLAT_VAL_6 ((unsigned) (LED_SUSPEND))
+ #define XLAT_STR_6 STRINGIFY(LED_SUSPEND)
  [LED_MUTE] = XLAT(LED_MUTE),
+ #define XLAT_VAL_7 ((unsigned) (LED_MUTE))
+ #define XLAT_STR_7 STRINGIFY(LED_MUTE)
  [LED_MISC] = XLAT(LED_MISC),
+ #define XLAT_VAL_8 ((unsigned) (LED_MISC))
+ #define XLAT_STR_8 STRINGIFY(LED_MISC)
  [LED_MAIL] = XLAT(LED_MAIL),
+ #define XLAT_VAL_9 ((unsigned) (LED_MAIL))
+ #define XLAT_STR_9 STRINGIFY(LED_MAIL)
  [LED_CHARGING] = XLAT(LED_CHARGING),
- XLAT_END
+ #define XLAT_VAL_10 ((unsigned) (LED_CHARGING))
+ #define XLAT_STR_10 STRINGIFY(LED_CHARGING)
 };
+static
+const struct xlat evdev_leds[1] = { {
+ .data = evdev_leds_xdata,
+ .size = ARRAY_SIZE(evdev_leds_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 92c3879c3baa44a692619b4e2b64d79173c8ee5d..ac3645c96c7f8d06726650323b8b4aaf3e58658e 100644 (file)
@@ -54,17 +54,85 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat evdev_misc[] = {
+static const struct xlat_data evdev_misc_xdata[] = {
  [MSC_SERIAL] = XLAT(MSC_SERIAL),
+ #define XLAT_VAL_0 ((unsigned) (MSC_SERIAL))
+ #define XLAT_STR_0 STRINGIFY(MSC_SERIAL)
  [MSC_PULSELED] = XLAT(MSC_PULSELED),
+ #define XLAT_VAL_1 ((unsigned) (MSC_PULSELED))
+ #define XLAT_STR_1 STRINGIFY(MSC_PULSELED)
  [MSC_GESTURE] = XLAT(MSC_GESTURE),
+ #define XLAT_VAL_2 ((unsigned) (MSC_GESTURE))
+ #define XLAT_STR_2 STRINGIFY(MSC_GESTURE)
  [MSC_RAW] = XLAT(MSC_RAW),
+ #define XLAT_VAL_3 ((unsigned) (MSC_RAW))
+ #define XLAT_STR_3 STRINGIFY(MSC_RAW)
  [MSC_SCAN] = XLAT(MSC_SCAN),
+ #define XLAT_VAL_4 ((unsigned) (MSC_SCAN))
+ #define XLAT_STR_4 STRINGIFY(MSC_SCAN)
  [MSC_TIMESTAMP] = XLAT(MSC_TIMESTAMP),
- XLAT_END
+ #define XLAT_VAL_5 ((unsigned) (MSC_TIMESTAMP))
+ #define XLAT_STR_5 STRINGIFY(MSC_TIMESTAMP)
 };
+static
+const struct xlat evdev_misc[1] = { {
+ .data = evdev_misc_xdata,
+ .size = ARRAY_SIZE(evdev_misc_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index ec6ee61c65d8029833a8d2e4d4c9a3e35f13f282..d7c826a0ce49d43bcd21c7cea35bc5b0908088ad 100644 (file)
 #include "gcc_compat.h"
 #include "static_assert.h"
 
-
-#ifndef XLAT_MACROS_ONLY
-
-# ifdef IN_MPERS
-
-#  error static const struct xlat evdev_mtslots in mpers mode
-
-# else
-
-static
-const struct xlat evdev_mtslots[] = {
 #if defined(ABS_MT_SLOT) || (defined(HAVE_DECL_ABS_MT_SLOT) && HAVE_DECL_ABS_MT_SLOT)
-  XLAT(ABS_MT_SLOT),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ABS_MT_SLOT) == (0x2f), "ABS_MT_SLOT != 0x2f");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ABS_MT_SLOT 0x2f
 #endif
 #if defined(ABS_MT_TOUCH_MAJOR) || (defined(HAVE_DECL_ABS_MT_TOUCH_MAJOR) && HAVE_DECL_ABS_MT_TOUCH_MAJOR)
-  XLAT(ABS_MT_TOUCH_MAJOR),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ABS_MT_TOUCH_MAJOR) == (0x30), "ABS_MT_TOUCH_MAJOR != 0x30");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ABS_MT_TOUCH_MAJOR 0x30
 #endif
 #if defined(ABS_MT_TOUCH_MINOR) || (defined(HAVE_DECL_ABS_MT_TOUCH_MINOR) && HAVE_DECL_ABS_MT_TOUCH_MINOR)
-  XLAT(ABS_MT_TOUCH_MINOR),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ABS_MT_TOUCH_MINOR) == (0x31), "ABS_MT_TOUCH_MINOR != 0x31");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ABS_MT_TOUCH_MINOR 0x31
 #endif
 #if defined(ABS_MT_WIDTH_MAJOR) || (defined(HAVE_DECL_ABS_MT_WIDTH_MAJOR) && HAVE_DECL_ABS_MT_WIDTH_MAJOR)
-  XLAT(ABS_MT_WIDTH_MAJOR),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ABS_MT_WIDTH_MAJOR) == (0x32), "ABS_MT_WIDTH_MAJOR != 0x32");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ABS_MT_WIDTH_MAJOR 0x32
 #endif
 #if defined(ABS_MT_WIDTH_MINOR) || (defined(HAVE_DECL_ABS_MT_WIDTH_MINOR) && HAVE_DECL_ABS_MT_WIDTH_MINOR)
-  XLAT(ABS_MT_WIDTH_MINOR),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ABS_MT_WIDTH_MINOR) == (0x33), "ABS_MT_WIDTH_MINOR != 0x33");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ABS_MT_WIDTH_MINOR 0x33
 #endif
 #if defined(ABS_MT_ORIENTATION) || (defined(HAVE_DECL_ABS_MT_ORIENTATION) && HAVE_DECL_ABS_MT_ORIENTATION)
-  XLAT(ABS_MT_ORIENTATION),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ABS_MT_ORIENTATION) == (0x34), "ABS_MT_ORIENTATION != 0x34");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ABS_MT_ORIENTATION 0x34
 #endif
 #if defined(ABS_MT_POSITION_X) || (defined(HAVE_DECL_ABS_MT_POSITION_X) && HAVE_DECL_ABS_MT_POSITION_X)
-  XLAT(ABS_MT_POSITION_X),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ABS_MT_POSITION_X) == (0x35), "ABS_MT_POSITION_X != 0x35");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ABS_MT_POSITION_X 0x35
 #endif
 #if defined(ABS_MT_POSITION_Y) || (defined(HAVE_DECL_ABS_MT_POSITION_Y) && HAVE_DECL_ABS_MT_POSITION_Y)
-  XLAT(ABS_MT_POSITION_Y),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ABS_MT_POSITION_Y) == (0x36), "ABS_MT_POSITION_Y != 0x36");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ABS_MT_POSITION_Y 0x36
 #endif
 #if defined(ABS_MT_TOOL_TYPE) || (defined(HAVE_DECL_ABS_MT_TOOL_TYPE) && HAVE_DECL_ABS_MT_TOOL_TYPE)
-  XLAT(ABS_MT_TOOL_TYPE),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ABS_MT_TOOL_TYPE) == (0x37), "ABS_MT_TOOL_TYPE != 0x37");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ABS_MT_TOOL_TYPE 0x37
 #endif
 #if defined(ABS_MT_BLOB_ID) || (defined(HAVE_DECL_ABS_MT_BLOB_ID) && HAVE_DECL_ABS_MT_BLOB_ID)
-  XLAT(ABS_MT_BLOB_ID),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ABS_MT_BLOB_ID) == (0x38), "ABS_MT_BLOB_ID != 0x38");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ABS_MT_BLOB_ID 0x38
 #endif
 #if defined(ABS_MT_TRACKING_ID) || (defined(HAVE_DECL_ABS_MT_TRACKING_ID) && HAVE_DECL_ABS_MT_TRACKING_ID)
-  XLAT(ABS_MT_TRACKING_ID),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ABS_MT_TRACKING_ID) == (0x39), "ABS_MT_TRACKING_ID != 0x39");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ABS_MT_TRACKING_ID 0x39
 #endif
 #if defined(ABS_MT_PRESSURE) || (defined(HAVE_DECL_ABS_MT_PRESSURE) && HAVE_DECL_ABS_MT_PRESSURE)
-  XLAT(ABS_MT_PRESSURE),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ABS_MT_PRESSURE) == (0x3a), "ABS_MT_PRESSURE != 0x3a");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ABS_MT_PRESSURE 0x3a
 #endif
 #if defined(ABS_MT_DISTANCE) || (defined(HAVE_DECL_ABS_MT_DISTANCE) && HAVE_DECL_ABS_MT_DISTANCE)
-  XLAT(ABS_MT_DISTANCE),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ABS_MT_DISTANCE) == (0x3b), "ABS_MT_DISTANCE != 0x3b");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ABS_MT_DISTANCE 0x3b
 #endif
 #if defined(ABS_MT_TOOL_X) || (defined(HAVE_DECL_ABS_MT_TOOL_X) && HAVE_DECL_ABS_MT_TOOL_X)
-  XLAT(ABS_MT_TOOL_X),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ABS_MT_TOOL_X) == (0x3c), "ABS_MT_TOOL_X != 0x3c");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ABS_MT_TOOL_X 0x3c
 #endif
 #if defined(ABS_MT_TOOL_Y) || (defined(HAVE_DECL_ABS_MT_TOOL_Y) && HAVE_DECL_ABS_MT_TOOL_Y)
-  XLAT(ABS_MT_TOOL_Y),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ABS_MT_TOOL_Y) == (0x3d), "ABS_MT_TOOL_Y != 0x3d");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ABS_MT_TOOL_Y 0x3d
 #endif
- XLAT_END
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat evdev_mtslots in mpers mode
+
+# else
+
+static const struct xlat_data evdev_mtslots_xdata[] = {
+ XLAT(ABS_MT_SLOT),
+ #define XLAT_VAL_0 ((unsigned) (ABS_MT_SLOT))
+ #define XLAT_STR_0 STRINGIFY(ABS_MT_SLOT)
+ XLAT(ABS_MT_TOUCH_MAJOR),
+ #define XLAT_VAL_1 ((unsigned) (ABS_MT_TOUCH_MAJOR))
+ #define XLAT_STR_1 STRINGIFY(ABS_MT_TOUCH_MAJOR)
+ XLAT(ABS_MT_TOUCH_MINOR),
+ #define XLAT_VAL_2 ((unsigned) (ABS_MT_TOUCH_MINOR))
+ #define XLAT_STR_2 STRINGIFY(ABS_MT_TOUCH_MINOR)
+ XLAT(ABS_MT_WIDTH_MAJOR),
+ #define XLAT_VAL_3 ((unsigned) (ABS_MT_WIDTH_MAJOR))
+ #define XLAT_STR_3 STRINGIFY(ABS_MT_WIDTH_MAJOR)
+ XLAT(ABS_MT_WIDTH_MINOR),
+ #define XLAT_VAL_4 ((unsigned) (ABS_MT_WIDTH_MINOR))
+ #define XLAT_STR_4 STRINGIFY(ABS_MT_WIDTH_MINOR)
+ XLAT(ABS_MT_ORIENTATION),
+ #define XLAT_VAL_5 ((unsigned) (ABS_MT_ORIENTATION))
+ #define XLAT_STR_5 STRINGIFY(ABS_MT_ORIENTATION)
+ XLAT(ABS_MT_POSITION_X),
+ #define XLAT_VAL_6 ((unsigned) (ABS_MT_POSITION_X))
+ #define XLAT_STR_6 STRINGIFY(ABS_MT_POSITION_X)
+ XLAT(ABS_MT_POSITION_Y),
+ #define XLAT_VAL_7 ((unsigned) (ABS_MT_POSITION_Y))
+ #define XLAT_STR_7 STRINGIFY(ABS_MT_POSITION_Y)
+ XLAT(ABS_MT_TOOL_TYPE),
+ #define XLAT_VAL_8 ((unsigned) (ABS_MT_TOOL_TYPE))
+ #define XLAT_STR_8 STRINGIFY(ABS_MT_TOOL_TYPE)
+ XLAT(ABS_MT_BLOB_ID),
+ #define XLAT_VAL_9 ((unsigned) (ABS_MT_BLOB_ID))
+ #define XLAT_STR_9 STRINGIFY(ABS_MT_BLOB_ID)
+ XLAT(ABS_MT_TRACKING_ID),
+ #define XLAT_VAL_10 ((unsigned) (ABS_MT_TRACKING_ID))
+ #define XLAT_STR_10 STRINGIFY(ABS_MT_TRACKING_ID)
+ XLAT(ABS_MT_PRESSURE),
+ #define XLAT_VAL_11 ((unsigned) (ABS_MT_PRESSURE))
+ #define XLAT_STR_11 STRINGIFY(ABS_MT_PRESSURE)
+ XLAT(ABS_MT_DISTANCE),
+ #define XLAT_VAL_12 ((unsigned) (ABS_MT_DISTANCE))
+ #define XLAT_STR_12 STRINGIFY(ABS_MT_DISTANCE)
+ XLAT(ABS_MT_TOOL_X),
+ #define XLAT_VAL_13 ((unsigned) (ABS_MT_TOOL_X))
+ #define XLAT_STR_13 STRINGIFY(ABS_MT_TOOL_X)
+ XLAT(ABS_MT_TOOL_Y),
+ #define XLAT_VAL_14 ((unsigned) (ABS_MT_TOOL_Y))
+ #define XLAT_STR_14 STRINGIFY(ABS_MT_TOOL_Y)
 };
+static
+const struct xlat evdev_mtslots[1] = { {
+ .data = evdev_mtslots_xdata,
+ .size = ARRAY_SIZE(evdev_mtslots_xdata),
+ .type = XT_SORTED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index eedf6885a098c3227e6f8af39c838cd5d868f2c3..f0e36b37db9725d2993edc3d2183ef5a53b0b3ee 100644 (file)
@@ -1,15 +1,16 @@
-ABS_MT_SLOT
-ABS_MT_TOUCH_MAJOR
-ABS_MT_TOUCH_MINOR
-ABS_MT_WIDTH_MAJOR
-ABS_MT_WIDTH_MINOR
-ABS_MT_ORIENTATION
-ABS_MT_POSITION_X
-ABS_MT_POSITION_Y
-ABS_MT_TOOL_TYPE
-ABS_MT_BLOB_ID
-ABS_MT_TRACKING_ID
-ABS_MT_PRESSURE
-ABS_MT_DISTANCE
-ABS_MT_TOOL_X
-ABS_MT_TOOL_Y
+#sorted
+ABS_MT_SLOT            0x2f
+ABS_MT_TOUCH_MAJOR     0x30
+ABS_MT_TOUCH_MINOR     0x31
+ABS_MT_WIDTH_MAJOR     0x32
+ABS_MT_WIDTH_MINOR     0x33
+ABS_MT_ORIENTATION     0x34
+ABS_MT_POSITION_X      0x35
+ABS_MT_POSITION_Y      0x36
+ABS_MT_TOOL_TYPE       0x37
+ABS_MT_BLOB_ID         0x38
+ABS_MT_TRACKING_ID     0x39
+ABS_MT_PRESSURE                0x3a
+ABS_MT_DISTANCE                0x3b
+ABS_MT_TOOL_X          0x3c
+ABS_MT_TOOL_Y          0x3d
index ea872fbe2af53c755061806732dc50407c3018ec..4fcb5699bc828bd9fccd3ae5463082fe86b1aa0e 100644 (file)
@@ -61,18 +61,96 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat evdev_prop[] = {
+static const struct xlat_data evdev_prop_xdata[] = {
  [INPUT_PROP_POINTER] = XLAT(INPUT_PROP_POINTER),
+ #define XLAT_VAL_0 ((unsigned) (INPUT_PROP_POINTER))
+ #define XLAT_STR_0 STRINGIFY(INPUT_PROP_POINTER)
  [INPUT_PROP_DIRECT] = XLAT(INPUT_PROP_DIRECT),
+ #define XLAT_VAL_1 ((unsigned) (INPUT_PROP_DIRECT))
+ #define XLAT_STR_1 STRINGIFY(INPUT_PROP_DIRECT)
  [INPUT_PROP_BUTTONPAD] = XLAT(INPUT_PROP_BUTTONPAD),
+ #define XLAT_VAL_2 ((unsigned) (INPUT_PROP_BUTTONPAD))
+ #define XLAT_STR_2 STRINGIFY(INPUT_PROP_BUTTONPAD)
  [INPUT_PROP_SEMI_MT] = XLAT(INPUT_PROP_SEMI_MT),
+ #define XLAT_VAL_3 ((unsigned) (INPUT_PROP_SEMI_MT))
+ #define XLAT_STR_3 STRINGIFY(INPUT_PROP_SEMI_MT)
  [INPUT_PROP_TOPBUTTONPAD] = XLAT(INPUT_PROP_TOPBUTTONPAD),
+ #define XLAT_VAL_4 ((unsigned) (INPUT_PROP_TOPBUTTONPAD))
+ #define XLAT_STR_4 STRINGIFY(INPUT_PROP_TOPBUTTONPAD)
  [INPUT_PROP_POINTING_STICK] = XLAT(INPUT_PROP_POINTING_STICK),
+ #define XLAT_VAL_5 ((unsigned) (INPUT_PROP_POINTING_STICK))
+ #define XLAT_STR_5 STRINGIFY(INPUT_PROP_POINTING_STICK)
  [INPUT_PROP_ACCELEROMETER] = XLAT(INPUT_PROP_ACCELEROMETER),
- XLAT_END
+ #define XLAT_VAL_6 ((unsigned) (INPUT_PROP_ACCELEROMETER))
+ #define XLAT_STR_6 STRINGIFY(INPUT_PROP_ACCELEROMETER)
 };
+static
+const struct xlat evdev_prop[1] = { {
+ .data = evdev_prop_xdata,
+ .size = ARRAY_SIZE(evdev_prop_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 0c95784e803bfc0c7989321800c04adeb6372877..5dc4307866f4d8438f880e4e8af732284f013cba 100644 (file)
@@ -103,24 +103,162 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat evdev_relative_axes[] = {
+static const struct xlat_data evdev_relative_axes_xdata[] = {
  [REL_X] = XLAT(REL_X),
+ #define XLAT_VAL_0 ((unsigned) (REL_X))
+ #define XLAT_STR_0 STRINGIFY(REL_X)
  [REL_Y] = XLAT(REL_Y),
+ #define XLAT_VAL_1 ((unsigned) (REL_Y))
+ #define XLAT_STR_1 STRINGIFY(REL_Y)
  [REL_Z] = XLAT(REL_Z),
+ #define XLAT_VAL_2 ((unsigned) (REL_Z))
+ #define XLAT_STR_2 STRINGIFY(REL_Z)
  [REL_RX] = XLAT(REL_RX),
+ #define XLAT_VAL_3 ((unsigned) (REL_RX))
+ #define XLAT_STR_3 STRINGIFY(REL_RX)
  [REL_RY] = XLAT(REL_RY),
+ #define XLAT_VAL_4 ((unsigned) (REL_RY))
+ #define XLAT_STR_4 STRINGIFY(REL_RY)
  [REL_RZ] = XLAT(REL_RZ),
+ #define XLAT_VAL_5 ((unsigned) (REL_RZ))
+ #define XLAT_STR_5 STRINGIFY(REL_RZ)
  [REL_HWHEEL] = XLAT(REL_HWHEEL),
+ #define XLAT_VAL_6 ((unsigned) (REL_HWHEEL))
+ #define XLAT_STR_6 STRINGIFY(REL_HWHEEL)
  [REL_DIAL] = XLAT(REL_DIAL),
+ #define XLAT_VAL_7 ((unsigned) (REL_DIAL))
+ #define XLAT_STR_7 STRINGIFY(REL_DIAL)
  [REL_WHEEL] = XLAT(REL_WHEEL),
+ #define XLAT_VAL_8 ((unsigned) (REL_WHEEL))
+ #define XLAT_STR_8 STRINGIFY(REL_WHEEL)
  [REL_MISC] = XLAT(REL_MISC),
+ #define XLAT_VAL_9 ((unsigned) (REL_MISC))
+ #define XLAT_STR_9 STRINGIFY(REL_MISC)
  [REL_RESERVED] = XLAT(REL_RESERVED),
+ #define XLAT_VAL_10 ((unsigned) (REL_RESERVED))
+ #define XLAT_STR_10 STRINGIFY(REL_RESERVED)
  [REL_WHEEL_HI_RES] = XLAT(REL_WHEEL_HI_RES),
+ #define XLAT_VAL_11 ((unsigned) (REL_WHEEL_HI_RES))
+ #define XLAT_STR_11 STRINGIFY(REL_WHEEL_HI_RES)
  [REL_HWHEEL_HI_RES] = XLAT(REL_HWHEEL_HI_RES),
- XLAT_END
+ #define XLAT_VAL_12 ((unsigned) (REL_HWHEEL_HI_RES))
+ #define XLAT_STR_12 STRINGIFY(REL_HWHEEL_HI_RES)
 };
+static
+const struct xlat evdev_relative_axes[1] = { {
+ .data = evdev_relative_axes_xdata,
+ .size = ARRAY_SIZE(evdev_relative_axes_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 35d6c448b5313b0933c161245b34408531783a6b..2c9f02eeec39e3ce5b0575c54891e2af44907ecb 100644 (file)
@@ -33,14 +33,52 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat evdev_snd[] = {
+static const struct xlat_data evdev_snd_xdata[] = {
  [SND_CLICK] = XLAT(SND_CLICK),
+ #define XLAT_VAL_0 ((unsigned) (SND_CLICK))
+ #define XLAT_STR_0 STRINGIFY(SND_CLICK)
  [SND_BELL] = XLAT(SND_BELL),
+ #define XLAT_VAL_1 ((unsigned) (SND_BELL))
+ #define XLAT_STR_1 STRINGIFY(SND_BELL)
  [SND_TONE] = XLAT(SND_TONE),
- XLAT_END
+ #define XLAT_VAL_2 ((unsigned) (SND_TONE))
+ #define XLAT_STR_2 STRINGIFY(SND_TONE)
 };
+static
+const struct xlat evdev_snd[1] = { {
+ .data = evdev_snd_xdata,
+ .size = ARRAY_SIZE(evdev_snd_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index d5aa9df9284ce8b00e4b01ab9eb756e6a4981d1e..0879d9e145c8de82f874240bf1aad25ca0f72a46 100644 (file)
@@ -124,27 +124,195 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat evdev_switch[] = {
+static const struct xlat_data evdev_switch_xdata[] = {
  [SW_LID] = XLAT(SW_LID),
+ #define XLAT_VAL_0 ((unsigned) (SW_LID))
+ #define XLAT_STR_0 STRINGIFY(SW_LID)
  [SW_TABLET_MODE] = XLAT(SW_TABLET_MODE),
+ #define XLAT_VAL_1 ((unsigned) (SW_TABLET_MODE))
+ #define XLAT_STR_1 STRINGIFY(SW_TABLET_MODE)
  [SW_HEADPHONE_INSERT] = XLAT(SW_HEADPHONE_INSERT),
+ #define XLAT_VAL_2 ((unsigned) (SW_HEADPHONE_INSERT))
+ #define XLAT_STR_2 STRINGIFY(SW_HEADPHONE_INSERT)
  [SW_RFKILL_ALL] = XLAT(SW_RFKILL_ALL),
+ #define XLAT_VAL_3 ((unsigned) (SW_RFKILL_ALL))
+ #define XLAT_STR_3 STRINGIFY(SW_RFKILL_ALL)
  [SW_MICROPHONE_INSERT] = XLAT(SW_MICROPHONE_INSERT),
+ #define XLAT_VAL_4 ((unsigned) (SW_MICROPHONE_INSERT))
+ #define XLAT_STR_4 STRINGIFY(SW_MICROPHONE_INSERT)
  [SW_DOCK] = XLAT(SW_DOCK),
+ #define XLAT_VAL_5 ((unsigned) (SW_DOCK))
+ #define XLAT_STR_5 STRINGIFY(SW_DOCK)
  [SW_LINEOUT_INSERT] = XLAT(SW_LINEOUT_INSERT),
+ #define XLAT_VAL_6 ((unsigned) (SW_LINEOUT_INSERT))
+ #define XLAT_STR_6 STRINGIFY(SW_LINEOUT_INSERT)
  [SW_JACK_PHYSICAL_INSERT] = XLAT(SW_JACK_PHYSICAL_INSERT),
+ #define XLAT_VAL_7 ((unsigned) (SW_JACK_PHYSICAL_INSERT))
+ #define XLAT_STR_7 STRINGIFY(SW_JACK_PHYSICAL_INSERT)
  [SW_VIDEOOUT_INSERT] = XLAT(SW_VIDEOOUT_INSERT),
+ #define XLAT_VAL_8 ((unsigned) (SW_VIDEOOUT_INSERT))
+ #define XLAT_STR_8 STRINGIFY(SW_VIDEOOUT_INSERT)
  [SW_CAMERA_LENS_COVER] = XLAT(SW_CAMERA_LENS_COVER),
+ #define XLAT_VAL_9 ((unsigned) (SW_CAMERA_LENS_COVER))
+ #define XLAT_STR_9 STRINGIFY(SW_CAMERA_LENS_COVER)
  [SW_KEYPAD_SLIDE] = XLAT(SW_KEYPAD_SLIDE),
+ #define XLAT_VAL_10 ((unsigned) (SW_KEYPAD_SLIDE))
+ #define XLAT_STR_10 STRINGIFY(SW_KEYPAD_SLIDE)
  [SW_FRONT_PROXIMITY] = XLAT(SW_FRONT_PROXIMITY),
+ #define XLAT_VAL_11 ((unsigned) (SW_FRONT_PROXIMITY))
+ #define XLAT_STR_11 STRINGIFY(SW_FRONT_PROXIMITY)
  [SW_ROTATE_LOCK] = XLAT(SW_ROTATE_LOCK),
+ #define XLAT_VAL_12 ((unsigned) (SW_ROTATE_LOCK))
+ #define XLAT_STR_12 STRINGIFY(SW_ROTATE_LOCK)
  [SW_LINEIN_INSERT] = XLAT(SW_LINEIN_INSERT),
+ #define XLAT_VAL_13 ((unsigned) (SW_LINEIN_INSERT))
+ #define XLAT_STR_13 STRINGIFY(SW_LINEIN_INSERT)
  [SW_MUTE_DEVICE] = XLAT(SW_MUTE_DEVICE),
+ #define XLAT_VAL_14 ((unsigned) (SW_MUTE_DEVICE))
+ #define XLAT_STR_14 STRINGIFY(SW_MUTE_DEVICE)
  [SW_PEN_INSERTED] = XLAT(SW_PEN_INSERTED),
- XLAT_END
+ #define XLAT_VAL_15 ((unsigned) (SW_PEN_INSERTED))
+ #define XLAT_STR_15 STRINGIFY(SW_PEN_INSERTED)
 };
+static
+const struct xlat evdev_switch[1] = { {
+ .data = evdev_switch_xdata,
+ .size = ARRAY_SIZE(evdev_switch_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 765987102285ff258d856c6d1d878d98244ce926..2afcb9cdf20553dc5a0c1e8a0d82668bb584e2d0 100644 (file)
@@ -33,14 +33,52 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat f_owner_types[] = {
- XLAT(F_OWNER_TID),
- XLAT(F_OWNER_PID),
- XLAT(F_OWNER_PGRP),
- XLAT_END
+static const struct xlat_data f_owner_types_xdata[] = {
+ [F_OWNER_TID] = XLAT(F_OWNER_TID),
+ #define XLAT_VAL_0 ((unsigned) (F_OWNER_TID))
+ #define XLAT_STR_0 STRINGIFY(F_OWNER_TID)
+ [F_OWNER_PID] = XLAT(F_OWNER_PID),
+ #define XLAT_VAL_1 ((unsigned) (F_OWNER_PID))
+ #define XLAT_STR_1 STRINGIFY(F_OWNER_PID)
+ [F_OWNER_PGRP] = XLAT(F_OWNER_PGRP),
+ #define XLAT_VAL_2 ((unsigned) (F_OWNER_PGRP))
+ #define XLAT_STR_2 STRINGIFY(F_OWNER_PGRP)
 };
+static
+const struct xlat f_owner_types[1] = { {
+ .data = f_owner_types_xdata,
+ .size = ARRAY_SIZE(f_owner_types_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 2c8124d8febec51efa50cabcac4b747984c72141..d1c0d3970afe39a558833851efaae0c9aa33ad7a 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 F_OWNER_TID    0
 F_OWNER_PID    1
 F_OWNER_PGRP   2
index 5f5a6b2078495d92edbb2c2aaa8217dff74a5a3e..eab71603cc4b2211ae6f700fa1d3679af4354c74 100644 (file)
@@ -47,16 +47,74 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat f_seals[] = {
+static const struct xlat_data f_seals_xdata[] = {
  XLAT(F_SEAL_SEAL),
+ #define XLAT_VAL_0 ((unsigned) (F_SEAL_SEAL))
+ #define XLAT_STR_0 STRINGIFY(F_SEAL_SEAL)
  XLAT(F_SEAL_SHRINK),
+ #define XLAT_VAL_1 ((unsigned) (F_SEAL_SHRINK))
+ #define XLAT_STR_1 STRINGIFY(F_SEAL_SHRINK)
  XLAT(F_SEAL_GROW),
+ #define XLAT_VAL_2 ((unsigned) (F_SEAL_GROW))
+ #define XLAT_STR_2 STRINGIFY(F_SEAL_GROW)
  XLAT(F_SEAL_WRITE),
+ #define XLAT_VAL_3 ((unsigned) (F_SEAL_WRITE))
+ #define XLAT_STR_3 STRINGIFY(F_SEAL_WRITE)
  XLAT(F_SEAL_FUTURE_WRITE),
- XLAT_END
+ #define XLAT_VAL_4 ((unsigned) (F_SEAL_FUTURE_WRITE))
+ #define XLAT_STR_4 STRINGIFY(F_SEAL_FUTURE_WRITE)
 };
+static
+const struct xlat f_seals[1] = { {
+ .data = f_seals_xdata,
+ .size = ARRAY_SIZE(f_seals_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/faccessat_flags.h b/xlat/faccessat_flags.h
new file mode 100644 (file)
index 0000000..97855bb
--- /dev/null
@@ -0,0 +1,84 @@
+/* Generated by ./xlat/gen.sh from ./xlat/faccessat_flags.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(AT_SYMLINK_NOFOLLOW) || (defined(HAVE_DECL_AT_SYMLINK_NOFOLLOW) && HAVE_DECL_AT_SYMLINK_NOFOLLOW)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AT_SYMLINK_NOFOLLOW) == (0x100), "AT_SYMLINK_NOFOLLOW != 0x100");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AT_SYMLINK_NOFOLLOW 0x100
+#endif
+#if defined(AT_EACCESS) || (defined(HAVE_DECL_AT_EACCESS) && HAVE_DECL_AT_EACCESS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AT_EACCESS) == (0x200), "AT_EACCESS != 0x200");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AT_EACCESS 0x200
+#endif
+#if defined(AT_EMPTY_PATH) || (defined(HAVE_DECL_AT_EMPTY_PATH) && HAVE_DECL_AT_EMPTY_PATH)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AT_EMPTY_PATH) == (0x1000), "AT_EMPTY_PATH != 0x1000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AT_EMPTY_PATH 0x1000
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat faccessat_flags in mpers mode
+
+# else
+
+static const struct xlat_data faccessat_flags_xdata[] = {
+ XLAT(AT_SYMLINK_NOFOLLOW),
+ #define XLAT_VAL_0 ((unsigned) (AT_SYMLINK_NOFOLLOW))
+ #define XLAT_STR_0 STRINGIFY(AT_SYMLINK_NOFOLLOW)
+ XLAT(AT_EACCESS),
+ #define XLAT_VAL_1 ((unsigned) (AT_EACCESS))
+ #define XLAT_STR_1 STRINGIFY(AT_EACCESS)
+ XLAT(AT_EMPTY_PATH),
+ #define XLAT_VAL_2 ((unsigned) (AT_EMPTY_PATH))
+ #define XLAT_STR_2 STRINGIFY(AT_EMPTY_PATH)
+};
+static
+const struct xlat faccessat_flags[1] = { {
+ .data = faccessat_flags_xdata,
+ .size = ARRAY_SIZE(faccessat_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/faccessat_flags.in b/xlat/faccessat_flags.in
new file mode 100644 (file)
index 0000000..d20e8cb
--- /dev/null
@@ -0,0 +1,3 @@
+AT_SYMLINK_NOFOLLOW    0x100
+AT_EACCESS             0x200
+AT_EMPTY_PATH          0x1000
index aaa7468a6363c8214520459916836fd020e4e2cc..7644f6915c0196057e45b0729151d070293b3220 100644 (file)
@@ -61,18 +61,96 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat falloc_flags[] = {
+static const struct xlat_data falloc_flags_xdata[] = {
  XLAT(FALLOC_FL_KEEP_SIZE),
+ #define XLAT_VAL_0 ((unsigned) (FALLOC_FL_KEEP_SIZE))
+ #define XLAT_STR_0 STRINGIFY(FALLOC_FL_KEEP_SIZE)
  XLAT(FALLOC_FL_PUNCH_HOLE),
+ #define XLAT_VAL_1 ((unsigned) (FALLOC_FL_PUNCH_HOLE))
+ #define XLAT_STR_1 STRINGIFY(FALLOC_FL_PUNCH_HOLE)
  XLAT(FALLOC_FL_NO_HIDE_STALE),
+ #define XLAT_VAL_2 ((unsigned) (FALLOC_FL_NO_HIDE_STALE))
+ #define XLAT_STR_2 STRINGIFY(FALLOC_FL_NO_HIDE_STALE)
  XLAT(FALLOC_FL_COLLAPSE_RANGE),
+ #define XLAT_VAL_3 ((unsigned) (FALLOC_FL_COLLAPSE_RANGE))
+ #define XLAT_STR_3 STRINGIFY(FALLOC_FL_COLLAPSE_RANGE)
  XLAT(FALLOC_FL_ZERO_RANGE),
+ #define XLAT_VAL_4 ((unsigned) (FALLOC_FL_ZERO_RANGE))
+ #define XLAT_STR_4 STRINGIFY(FALLOC_FL_ZERO_RANGE)
  XLAT(FALLOC_FL_INSERT_RANGE),
+ #define XLAT_VAL_5 ((unsigned) (FALLOC_FL_INSERT_RANGE))
+ #define XLAT_STR_5 STRINGIFY(FALLOC_FL_INSERT_RANGE)
  XLAT(FALLOC_FL_UNSHARE_RANGE),
- XLAT_END
+ #define XLAT_VAL_6 ((unsigned) (FALLOC_FL_UNSHARE_RANGE))
+ #define XLAT_STR_6 STRINGIFY(FALLOC_FL_UNSHARE_RANGE)
 };
+static
+const struct xlat falloc_flags[1] = { {
+ .data = falloc_flags_xdata,
+ .size = ARRAY_SIZE(falloc_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index ff4ff95d16973a12dacb065136f3920512595dbc..25bb16fea3452624e9a571cba15c6122b2fd03b4 100644 (file)
@@ -33,14 +33,52 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat fan_classes[] = {
+static const struct xlat_data fan_classes_xdata[] = {
  XLAT(FAN_CLASS_NOTIF),
+ #define XLAT_VAL_0 ((unsigned) (FAN_CLASS_NOTIF))
+ #define XLAT_STR_0 STRINGIFY(FAN_CLASS_NOTIF)
  XLAT(FAN_CLASS_CONTENT),
+ #define XLAT_VAL_1 ((unsigned) (FAN_CLASS_CONTENT))
+ #define XLAT_STR_1 STRINGIFY(FAN_CLASS_CONTENT)
  XLAT(FAN_CLASS_PRE_CONTENT),
- XLAT_END
+ #define XLAT_VAL_2 ((unsigned) (FAN_CLASS_PRE_CONTENT))
+ #define XLAT_STR_2 STRINGIFY(FAN_CLASS_PRE_CONTENT)
 };
+static
+const struct xlat fan_classes[1] = { {
+ .data = fan_classes_xdata,
+ .size = ARRAY_SIZE(fan_classes_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index a5bd03c34bb85947562831e97e8ffcb9b7179a75..57bcd0d4104af81b9d141d81b9a4617a7669d8c1 100644 (file)
@@ -122,6 +122,13 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define FAN_OPEN_EXEC_PERM 0x00040000
 #endif
+#if defined(FAN_DIR_MODIFY) || (defined(HAVE_DECL_FAN_DIR_MODIFY) && HAVE_DECL_FAN_DIR_MODIFY)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((FAN_DIR_MODIFY) == (0x00080000), "FAN_DIR_MODIFY != 0x00080000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define FAN_DIR_MODIFY 0x00080000
+#endif
 #if defined(FAN_ONDIR) || (defined(HAVE_DECL_FAN_ONDIR) && HAVE_DECL_FAN_ONDIR)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
 static_assert((FAN_ONDIR) == (0x40000000), "FAN_ONDIR != 0x40000000");
@@ -145,30 +152,239 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat fan_event_flags[] = {
+static const struct xlat_data fan_event_flags_xdata[] = {
  XLAT(FAN_ACCESS),
+ #define XLAT_VAL_0 ((unsigned) (FAN_ACCESS))
+ #define XLAT_STR_0 STRINGIFY(FAN_ACCESS)
  XLAT(FAN_MODIFY),
+ #define XLAT_VAL_1 ((unsigned) (FAN_MODIFY))
+ #define XLAT_STR_1 STRINGIFY(FAN_MODIFY)
  XLAT(FAN_ATTRIB),
+ #define XLAT_VAL_2 ((unsigned) (FAN_ATTRIB))
+ #define XLAT_STR_2 STRINGIFY(FAN_ATTRIB)
  XLAT(FAN_CLOSE_WRITE),
+ #define XLAT_VAL_3 ((unsigned) (FAN_CLOSE_WRITE))
+ #define XLAT_STR_3 STRINGIFY(FAN_CLOSE_WRITE)
  XLAT(FAN_CLOSE_NOWRITE),
+ #define XLAT_VAL_4 ((unsigned) (FAN_CLOSE_NOWRITE))
+ #define XLAT_STR_4 STRINGIFY(FAN_CLOSE_NOWRITE)
  XLAT(FAN_OPEN),
+ #define XLAT_VAL_5 ((unsigned) (FAN_OPEN))
+ #define XLAT_STR_5 STRINGIFY(FAN_OPEN)
  XLAT(FAN_MOVED_FROM),
+ #define XLAT_VAL_6 ((unsigned) (FAN_MOVED_FROM))
+ #define XLAT_STR_6 STRINGIFY(FAN_MOVED_FROM)
  XLAT(FAN_MOVED_TO),
+ #define XLAT_VAL_7 ((unsigned) (FAN_MOVED_TO))
+ #define XLAT_STR_7 STRINGIFY(FAN_MOVED_TO)
  XLAT(FAN_CREATE),
+ #define XLAT_VAL_8 ((unsigned) (FAN_CREATE))
+ #define XLAT_STR_8 STRINGIFY(FAN_CREATE)
  XLAT(FAN_DELETE),
+ #define XLAT_VAL_9 ((unsigned) (FAN_DELETE))
+ #define XLAT_STR_9 STRINGIFY(FAN_DELETE)
  XLAT(FAN_DELETE_SELF),
+ #define XLAT_VAL_10 ((unsigned) (FAN_DELETE_SELF))
+ #define XLAT_STR_10 STRINGIFY(FAN_DELETE_SELF)
  XLAT(FAN_MOVE_SELF),
+ #define XLAT_VAL_11 ((unsigned) (FAN_MOVE_SELF))
+ #define XLAT_STR_11 STRINGIFY(FAN_MOVE_SELF)
  XLAT(FAN_OPEN_EXEC),
+ #define XLAT_VAL_12 ((unsigned) (FAN_OPEN_EXEC))
+ #define XLAT_STR_12 STRINGIFY(FAN_OPEN_EXEC)
  XLAT(FAN_Q_OVERFLOW),
+ #define XLAT_VAL_13 ((unsigned) (FAN_Q_OVERFLOW))
+ #define XLAT_STR_13 STRINGIFY(FAN_Q_OVERFLOW)
  XLAT(FAN_OPEN_PERM),
+ #define XLAT_VAL_14 ((unsigned) (FAN_OPEN_PERM))
+ #define XLAT_STR_14 STRINGIFY(FAN_OPEN_PERM)
  XLAT(FAN_ACCESS_PERM),
+ #define XLAT_VAL_15 ((unsigned) (FAN_ACCESS_PERM))
+ #define XLAT_STR_15 STRINGIFY(FAN_ACCESS_PERM)
  XLAT(FAN_OPEN_EXEC_PERM),
+ #define XLAT_VAL_16 ((unsigned) (FAN_OPEN_EXEC_PERM))
+ #define XLAT_STR_16 STRINGIFY(FAN_OPEN_EXEC_PERM)
+ XLAT(FAN_DIR_MODIFY),
+ #define XLAT_VAL_17 ((unsigned) (FAN_DIR_MODIFY))
+ #define XLAT_STR_17 STRINGIFY(FAN_DIR_MODIFY)
  XLAT(FAN_ONDIR),
+ #define XLAT_VAL_18 ((unsigned) (FAN_ONDIR))
+ #define XLAT_STR_18 STRINGIFY(FAN_ONDIR)
  XLAT(FAN_EVENT_ON_CHILD),
- XLAT_END
+ #define XLAT_VAL_19 ((unsigned) (FAN_EVENT_ON_CHILD))
+ #define XLAT_STR_19 STRINGIFY(FAN_EVENT_ON_CHILD)
 };
+static
+const struct xlat fan_event_flags[1] = { {
+ .data = fan_event_flags_xdata,
+ .size = ARRAY_SIZE(fan_event_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 53ecdb694f46bbb9b49b5971c2b5d95573ec731d..210e2b12675c4c3c6cd6876566010aa7a4ddd4a9 100644 (file)
@@ -15,5 +15,6 @@ FAN_Q_OVERFLOW                0x00004000
 FAN_OPEN_PERM          0x00010000
 FAN_ACCESS_PERM                0x00020000
 FAN_OPEN_EXEC_PERM     0x00040000
+FAN_DIR_MODIFY         0x00080000
 FAN_ONDIR              0x40000000
 FAN_EVENT_ON_CHILD     0x08000000
index 2cb87e24c0a4c88d3361a458bc1824c1c8aac331..7fccbdb0dae052e801b4dd9105b8e26bee0b973b 100644 (file)
@@ -52,6 +52,20 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define FAN_REPORT_FID 0x00000200
 #endif
+#if defined(FAN_REPORT_DIR_FID) || (defined(HAVE_DECL_FAN_REPORT_DIR_FID) && HAVE_DECL_FAN_REPORT_DIR_FID)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((FAN_REPORT_DIR_FID) == (0x00000400), "FAN_REPORT_DIR_FID != 0x00000400");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define FAN_REPORT_DIR_FID 0x00000400
+#endif
+#if defined(FAN_REPORT_NAME) || (defined(HAVE_DECL_FAN_REPORT_NAME) && HAVE_DECL_FAN_REPORT_NAME)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((FAN_REPORT_NAME) == (0x00000800), "FAN_REPORT_NAME != 0x00000800");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define FAN_REPORT_NAME 0x00000800
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
@@ -61,18 +75,118 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat fan_init_flags[] = {
+static const struct xlat_data fan_init_flags_xdata[] = {
  XLAT(FAN_CLOEXEC),
+ #define XLAT_VAL_0 ((unsigned) (FAN_CLOEXEC))
+ #define XLAT_STR_0 STRINGIFY(FAN_CLOEXEC)
  XLAT(FAN_NONBLOCK),
+ #define XLAT_VAL_1 ((unsigned) (FAN_NONBLOCK))
+ #define XLAT_STR_1 STRINGIFY(FAN_NONBLOCK)
  XLAT(FAN_UNLIMITED_QUEUE),
+ #define XLAT_VAL_2 ((unsigned) (FAN_UNLIMITED_QUEUE))
+ #define XLAT_STR_2 STRINGIFY(FAN_UNLIMITED_QUEUE)
  XLAT(FAN_UNLIMITED_MARKS),
+ #define XLAT_VAL_3 ((unsigned) (FAN_UNLIMITED_MARKS))
+ #define XLAT_STR_3 STRINGIFY(FAN_UNLIMITED_MARKS)
  XLAT(FAN_ENABLE_AUDIT),
+ #define XLAT_VAL_4 ((unsigned) (FAN_ENABLE_AUDIT))
+ #define XLAT_STR_4 STRINGIFY(FAN_ENABLE_AUDIT)
  XLAT(FAN_REPORT_TID),
+ #define XLAT_VAL_5 ((unsigned) (FAN_REPORT_TID))
+ #define XLAT_STR_5 STRINGIFY(FAN_REPORT_TID)
  XLAT(FAN_REPORT_FID),
- XLAT_END
+ #define XLAT_VAL_6 ((unsigned) (FAN_REPORT_FID))
+ #define XLAT_STR_6 STRINGIFY(FAN_REPORT_FID)
+ XLAT(FAN_REPORT_DIR_FID),
+ #define XLAT_VAL_7 ((unsigned) (FAN_REPORT_DIR_FID))
+ #define XLAT_STR_7 STRINGIFY(FAN_REPORT_DIR_FID)
+ XLAT(FAN_REPORT_NAME),
+ #define XLAT_VAL_8 ((unsigned) (FAN_REPORT_NAME))
+ #define XLAT_STR_8 STRINGIFY(FAN_REPORT_NAME)
 };
+static
+const struct xlat fan_init_flags[1] = { {
+ .data = fan_init_flags_xdata,
+ .size = ARRAY_SIZE(fan_init_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 14a9fd242dcb9fb14def28bb12e980167431e939..69501bbbc348fbc4011a5e27f0e6d494407023a3 100644 (file)
@@ -5,3 +5,5 @@ FAN_UNLIMITED_MARKS 0x00000020
 FAN_ENABLE_AUDIT 0x00000040
 FAN_REPORT_TID 0x00000100
 FAN_REPORT_FID 0x00000200
+FAN_REPORT_DIR_FID 0x00000400
+FAN_REPORT_NAME 0x00000800
index 6f2e9f4101d5a97e7c94b593602131dad728bdd4..0f46a1c55ae853a9adbf80a92329c2aa27f70060 100644 (file)
@@ -75,20 +75,118 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat fan_mark_flags[] = {
+static const struct xlat_data fan_mark_flags_xdata[] = {
  XLAT(FAN_MARK_ADD),
+ #define XLAT_VAL_0 ((unsigned) (FAN_MARK_ADD))
+ #define XLAT_STR_0 STRINGIFY(FAN_MARK_ADD)
  XLAT(FAN_MARK_REMOVE),
+ #define XLAT_VAL_1 ((unsigned) (FAN_MARK_REMOVE))
+ #define XLAT_STR_1 STRINGIFY(FAN_MARK_REMOVE)
  XLAT(FAN_MARK_DONT_FOLLOW),
+ #define XLAT_VAL_2 ((unsigned) (FAN_MARK_DONT_FOLLOW))
+ #define XLAT_STR_2 STRINGIFY(FAN_MARK_DONT_FOLLOW)
  XLAT(FAN_MARK_ONLYDIR),
+ #define XLAT_VAL_3 ((unsigned) (FAN_MARK_ONLYDIR))
+ #define XLAT_STR_3 STRINGIFY(FAN_MARK_ONLYDIR)
  XLAT(FAN_MARK_MOUNT),
+ #define XLAT_VAL_4 ((unsigned) (FAN_MARK_MOUNT))
+ #define XLAT_STR_4 STRINGIFY(FAN_MARK_MOUNT)
  XLAT(FAN_MARK_IGNORED_MASK),
+ #define XLAT_VAL_5 ((unsigned) (FAN_MARK_IGNORED_MASK))
+ #define XLAT_STR_5 STRINGIFY(FAN_MARK_IGNORED_MASK)
  XLAT(FAN_MARK_IGNORED_SURV_MODIFY),
+ #define XLAT_VAL_6 ((unsigned) (FAN_MARK_IGNORED_SURV_MODIFY))
+ #define XLAT_STR_6 STRINGIFY(FAN_MARK_IGNORED_SURV_MODIFY)
  XLAT(FAN_MARK_FLUSH),
+ #define XLAT_VAL_7 ((unsigned) (FAN_MARK_FLUSH))
+ #define XLAT_STR_7 STRINGIFY(FAN_MARK_FLUSH)
  XLAT(FAN_MARK_FILESYSTEM),
- XLAT_END
+ #define XLAT_VAL_8 ((unsigned) (FAN_MARK_FILESYSTEM))
+ #define XLAT_STR_8 STRINGIFY(FAN_MARK_FILESYSTEM)
 };
+static
+const struct xlat fan_mark_flags[1] = { {
+ .data = fan_mark_flags_xdata,
+ .size = ARRAY_SIZE(fan_mark_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index ad354de1ec59b364f64807beecc595e087a36db7..d1e5a11bb48ebafa0779d12897090e47eeaf8de4 100644 (file)
@@ -393,68 +393,137 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat fcntlcmds[] = {
+static const struct xlat_data fcntlcmds_xdata[] = {
 
  XLAT(F_DUPFD),
+ #define XLAT_VAL_0 ((unsigned) (F_DUPFD))
+ #define XLAT_STR_0 STRINGIFY(F_DUPFD)
  XLAT(F_GETFD),
+ #define XLAT_VAL_1 ((unsigned) (F_GETFD))
+ #define XLAT_STR_1 STRINGIFY(F_GETFD)
  XLAT(F_SETFD),
+ #define XLAT_VAL_2 ((unsigned) (F_SETFD))
+ #define XLAT_STR_2 STRINGIFY(F_SETFD)
  XLAT(F_GETFL),
+ #define XLAT_VAL_3 ((unsigned) (F_GETFL))
+ #define XLAT_STR_3 STRINGIFY(F_GETFL)
  XLAT(F_SETFL),
+ #define XLAT_VAL_4 ((unsigned) (F_SETFL))
+ #define XLAT_STR_4 STRINGIFY(F_SETFL)
 
 #if defined __alpha__ || defined __sparc__
  XLAT(F_GETLK),
+ #define XLAT_VAL_5 ((unsigned) (F_GETLK))
+ #define XLAT_STR_5 STRINGIFY(F_GETLK)
 #elif defined __mips__
  XLAT(F_GETLK),
+ #define XLAT_VAL_6 ((unsigned) (F_GETLK))
+ #define XLAT_STR_6 STRINGIFY(F_GETLK)
 #else
  XLAT(F_GETLK),
+ #define XLAT_VAL_7 ((unsigned) (F_GETLK))
+ #define XLAT_STR_7 STRINGIFY(F_GETLK)
 #endif
 
 #if defined __alpha__ || defined __sparc__
  XLAT(F_SETLK),
+ #define XLAT_VAL_8 ((unsigned) (F_SETLK))
+ #define XLAT_STR_8 STRINGIFY(F_SETLK)
  XLAT(F_SETLKW),
+ #define XLAT_VAL_9 ((unsigned) (F_SETLKW))
+ #define XLAT_STR_9 STRINGIFY(F_SETLKW)
 #else
  XLAT(F_SETLK),
+ #define XLAT_VAL_10 ((unsigned) (F_SETLK))
+ #define XLAT_STR_10 STRINGIFY(F_SETLK)
  XLAT(F_SETLKW),
+ #define XLAT_VAL_11 ((unsigned) (F_SETLKW))
+ #define XLAT_STR_11 STRINGIFY(F_SETLKW)
 #endif
 
 #if defined __alpha__
  XLAT(F_SETOWN),
+ #define XLAT_VAL_12 ((unsigned) (F_SETOWN))
+ #define XLAT_STR_12 STRINGIFY(F_SETOWN)
  XLAT(F_GETOWN),
+ #define XLAT_VAL_13 ((unsigned) (F_GETOWN))
+ #define XLAT_STR_13 STRINGIFY(F_GETOWN)
 #elif defined __hppa__
  XLAT(F_GETOWN),
+ #define XLAT_VAL_14 ((unsigned) (F_GETOWN))
+ #define XLAT_STR_14 STRINGIFY(F_GETOWN)
  XLAT(F_SETOWN),
+ #define XLAT_VAL_15 ((unsigned) (F_SETOWN))
+ #define XLAT_STR_15 STRINGIFY(F_SETOWN)
 #elif defined __mips__
  XLAT(F_GETOWN),
+ #define XLAT_VAL_16 ((unsigned) (F_GETOWN))
+ #define XLAT_STR_16 STRINGIFY(F_GETOWN)
  XLAT(F_SETOWN),
+ #define XLAT_VAL_17 ((unsigned) (F_SETOWN))
+ #define XLAT_STR_17 STRINGIFY(F_SETOWN)
 #elif defined __sparc__
  XLAT(F_GETOWN),
+ #define XLAT_VAL_18 ((unsigned) (F_GETOWN))
+ #define XLAT_STR_18 STRINGIFY(F_GETOWN)
  XLAT(F_SETOWN),
+ #define XLAT_VAL_19 ((unsigned) (F_SETOWN))
+ #define XLAT_STR_19 STRINGIFY(F_SETOWN)
 #else
  XLAT(F_SETOWN),
+ #define XLAT_VAL_20 ((unsigned) (F_SETOWN))
+ #define XLAT_STR_20 STRINGIFY(F_SETOWN)
  XLAT(F_GETOWN),
+ #define XLAT_VAL_21 ((unsigned) (F_GETOWN))
+ #define XLAT_STR_21 STRINGIFY(F_GETOWN)
 #endif
 
 #ifdef __hppa__
  XLAT(F_SETSIG),
+ #define XLAT_VAL_22 ((unsigned) (F_SETSIG))
+ #define XLAT_STR_22 STRINGIFY(F_SETSIG)
  XLAT(F_GETSIG),
+ #define XLAT_VAL_23 ((unsigned) (F_GETSIG))
+ #define XLAT_STR_23 STRINGIFY(F_GETSIG)
 #else
  XLAT(F_SETSIG),
+ #define XLAT_VAL_24 ((unsigned) (F_SETSIG))
+ #define XLAT_STR_24 STRINGIFY(F_SETSIG)
  XLAT(F_GETSIG),
+ #define XLAT_VAL_25 ((unsigned) (F_GETSIG))
+ #define XLAT_STR_25 STRINGIFY(F_GETSIG)
 #endif
 
 #if defined __hppa__
  XLAT(F_GETLK64),
+ #define XLAT_VAL_26 ((unsigned) (F_GETLK64))
+ #define XLAT_STR_26 STRINGIFY(F_GETLK64)
  XLAT(F_SETLK64),
+ #define XLAT_VAL_27 ((unsigned) (F_SETLK64))
+ #define XLAT_STR_27 STRINGIFY(F_SETLK64)
  XLAT(F_SETLKW64),
+ #define XLAT_VAL_28 ((unsigned) (F_SETLKW64))
+ #define XLAT_STR_28 STRINGIFY(F_SETLKW64)
 #elif defined __mips__ && !defined __mips64
  XLAT(F_GETLK64),
+ #define XLAT_VAL_29 ((unsigned) (F_GETLK64))
+ #define XLAT_STR_29 STRINGIFY(F_GETLK64)
  XLAT(F_SETLK64),
+ #define XLAT_VAL_30 ((unsigned) (F_SETLK64))
+ #define XLAT_STR_30 STRINGIFY(F_SETLK64)
  XLAT(F_SETLKW64),
+ #define XLAT_VAL_31 ((unsigned) (F_SETLKW64))
+ #define XLAT_STR_31 STRINGIFY(F_SETLKW64)
 #else
  XLAT(F_GETLK64),
+ #define XLAT_VAL_32 ((unsigned) (F_GETLK64))
+ #define XLAT_STR_32 STRINGIFY(F_GETLK64)
  XLAT(F_SETLK64),
+ #define XLAT_VAL_33 ((unsigned) (F_SETLK64))
+ #define XLAT_STR_33 STRINGIFY(F_SETLK64)
  XLAT(F_SETLKW64),
+ #define XLAT_VAL_34 ((unsigned) (F_SETLKW64))
+ #define XLAT_STR_34 STRINGIFY(F_SETLKW64)
 #endif
 
 #ifndef STRACE_WORKAROUND_FOR_F_OWNER_EX
@@ -476,26 +545,465 @@ const struct xlat fcntlcmds[] = {
 # undef F_GETOWN_EX
 #endif
  XLAT(F_SETOWN_EX),
+ #define XLAT_VAL_35 ((unsigned) (F_SETOWN_EX))
+ #define XLAT_STR_35 STRINGIFY(F_SETOWN_EX)
  XLAT(F_GETOWN_EX),
+ #define XLAT_VAL_36 ((unsigned) (F_GETOWN_EX))
+ #define XLAT_STR_36 STRINGIFY(F_GETOWN_EX)
 
  XLAT(F_GETOWNER_UIDS),
+ #define XLAT_VAL_37 ((unsigned) (F_GETOWNER_UIDS))
+ #define XLAT_STR_37 STRINGIFY(F_GETOWNER_UIDS)
  XLAT(F_OFD_GETLK),
+ #define XLAT_VAL_38 ((unsigned) (F_OFD_GETLK))
+ #define XLAT_STR_38 STRINGIFY(F_OFD_GETLK)
  XLAT(F_OFD_SETLK),
+ #define XLAT_VAL_39 ((unsigned) (F_OFD_SETLK))
+ #define XLAT_STR_39 STRINGIFY(F_OFD_SETLK)
  XLAT(F_OFD_SETLKW),
+ #define XLAT_VAL_40 ((unsigned) (F_OFD_SETLKW))
+ #define XLAT_STR_40 STRINGIFY(F_OFD_SETLKW)
 
 
  XLAT(F_SETLEASE),
+ #define XLAT_VAL_41 ((unsigned) (F_SETLEASE))
+ #define XLAT_STR_41 STRINGIFY(F_SETLEASE)
  XLAT(F_GETLEASE),
+ #define XLAT_VAL_42 ((unsigned) (F_GETLEASE))
+ #define XLAT_STR_42 STRINGIFY(F_GETLEASE)
  XLAT(F_NOTIFY),
+ #define XLAT_VAL_43 ((unsigned) (F_NOTIFY))
+ #define XLAT_STR_43 STRINGIFY(F_NOTIFY)
  XLAT(F_CANCELLK),
+ #define XLAT_VAL_44 ((unsigned) (F_CANCELLK))
+ #define XLAT_STR_44 STRINGIFY(F_CANCELLK)
  XLAT(F_DUPFD_CLOEXEC),
+ #define XLAT_VAL_45 ((unsigned) (F_DUPFD_CLOEXEC))
+ #define XLAT_STR_45 STRINGIFY(F_DUPFD_CLOEXEC)
  XLAT(F_SETPIPE_SZ),
+ #define XLAT_VAL_46 ((unsigned) (F_SETPIPE_SZ))
+ #define XLAT_STR_46 STRINGIFY(F_SETPIPE_SZ)
  XLAT(F_GETPIPE_SZ),
+ #define XLAT_VAL_47 ((unsigned) (F_GETPIPE_SZ))
+ #define XLAT_STR_47 STRINGIFY(F_GETPIPE_SZ)
  XLAT(F_ADD_SEALS),
+ #define XLAT_VAL_48 ((unsigned) (F_ADD_SEALS))
+ #define XLAT_STR_48 STRINGIFY(F_ADD_SEALS)
  XLAT(F_GET_SEALS),
- XLAT_END
+ #define XLAT_VAL_49 ((unsigned) (F_GET_SEALS))
+ #define XLAT_STR_49 STRINGIFY(F_GET_SEALS)
 };
+static
+const struct xlat fcntlcmds[1] = { {
+ .data = fcntlcmds_xdata,
+ .size = ARRAY_SIZE(fcntlcmds_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+#  ifdef XLAT_VAL_30
+  | XLAT_VAL_30
+#  endif
+#  ifdef XLAT_VAL_31
+  | XLAT_VAL_31
+#  endif
+#  ifdef XLAT_VAL_32
+  | XLAT_VAL_32
+#  endif
+#  ifdef XLAT_VAL_33
+  | XLAT_VAL_33
+#  endif
+#  ifdef XLAT_VAL_34
+  | XLAT_VAL_34
+#  endif
+#  ifdef XLAT_VAL_35
+  | XLAT_VAL_35
+#  endif
+#  ifdef XLAT_VAL_36
+  | XLAT_VAL_36
+#  endif
+#  ifdef XLAT_VAL_37
+  | XLAT_VAL_37
+#  endif
+#  ifdef XLAT_VAL_38
+  | XLAT_VAL_38
+#  endif
+#  ifdef XLAT_VAL_39
+  | XLAT_VAL_39
+#  endif
+#  ifdef XLAT_VAL_40
+  | XLAT_VAL_40
+#  endif
+#  ifdef XLAT_VAL_41
+  | XLAT_VAL_41
+#  endif
+#  ifdef XLAT_VAL_42
+  | XLAT_VAL_42
+#  endif
+#  ifdef XLAT_VAL_43
+  | XLAT_VAL_43
+#  endif
+#  ifdef XLAT_VAL_44
+  | XLAT_VAL_44
+#  endif
+#  ifdef XLAT_VAL_45
+  | XLAT_VAL_45
+#  endif
+#  ifdef XLAT_VAL_46
+  | XLAT_VAL_46
+#  endif
+#  ifdef XLAT_VAL_47
+  | XLAT_VAL_47
+#  endif
+#  ifdef XLAT_VAL_48
+  | XLAT_VAL_48
+#  endif
+#  ifdef XLAT_VAL_49
+  | XLAT_VAL_49
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+#  ifdef XLAT_STR_30
+  + sizeof(XLAT_STR_30)
+#  endif
+#  ifdef XLAT_STR_31
+  + sizeof(XLAT_STR_31)
+#  endif
+#  ifdef XLAT_STR_32
+  + sizeof(XLAT_STR_32)
+#  endif
+#  ifdef XLAT_STR_33
+  + sizeof(XLAT_STR_33)
+#  endif
+#  ifdef XLAT_STR_34
+  + sizeof(XLAT_STR_34)
+#  endif
+#  ifdef XLAT_STR_35
+  + sizeof(XLAT_STR_35)
+#  endif
+#  ifdef XLAT_STR_36
+  + sizeof(XLAT_STR_36)
+#  endif
+#  ifdef XLAT_STR_37
+  + sizeof(XLAT_STR_37)
+#  endif
+#  ifdef XLAT_STR_38
+  + sizeof(XLAT_STR_38)
+#  endif
+#  ifdef XLAT_STR_39
+  + sizeof(XLAT_STR_39)
+#  endif
+#  ifdef XLAT_STR_40
+  + sizeof(XLAT_STR_40)
+#  endif
+#  ifdef XLAT_STR_41
+  + sizeof(XLAT_STR_41)
+#  endif
+#  ifdef XLAT_STR_42
+  + sizeof(XLAT_STR_42)
+#  endif
+#  ifdef XLAT_STR_43
+  + sizeof(XLAT_STR_43)
+#  endif
+#  ifdef XLAT_STR_44
+  + sizeof(XLAT_STR_44)
+#  endif
+#  ifdef XLAT_STR_45
+  + sizeof(XLAT_STR_45)
+#  endif
+#  ifdef XLAT_STR_46
+  + sizeof(XLAT_STR_46)
+#  endif
+#  ifdef XLAT_STR_47
+  + sizeof(XLAT_STR_47)
+#  endif
+#  ifdef XLAT_STR_48
+  + sizeof(XLAT_STR_48)
+#  endif
+#  ifdef XLAT_STR_49
+  + sizeof(XLAT_STR_49)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
+#  undef XLAT_STR_30
+#  undef XLAT_VAL_30
+#  undef XLAT_STR_31
+#  undef XLAT_VAL_31
+#  undef XLAT_STR_32
+#  undef XLAT_VAL_32
+#  undef XLAT_STR_33
+#  undef XLAT_VAL_33
+#  undef XLAT_STR_34
+#  undef XLAT_VAL_34
+#  undef XLAT_STR_35
+#  undef XLAT_VAL_35
+#  undef XLAT_STR_36
+#  undef XLAT_VAL_36
+#  undef XLAT_STR_37
+#  undef XLAT_VAL_37
+#  undef XLAT_STR_38
+#  undef XLAT_VAL_38
+#  undef XLAT_STR_39
+#  undef XLAT_VAL_39
+#  undef XLAT_STR_40
+#  undef XLAT_VAL_40
+#  undef XLAT_STR_41
+#  undef XLAT_VAL_41
+#  undef XLAT_STR_42
+#  undef XLAT_VAL_42
+#  undef XLAT_STR_43
+#  undef XLAT_VAL_43
+#  undef XLAT_STR_44
+#  undef XLAT_VAL_44
+#  undef XLAT_STR_45
+#  undef XLAT_VAL_45
+#  undef XLAT_STR_46
+#  undef XLAT_VAL_46
+#  undef XLAT_STR_47
+#  undef XLAT_VAL_47
+#  undef XLAT_STR_48
+#  undef XLAT_VAL_48
+#  undef XLAT_STR_49
+#  undef XLAT_VAL_49
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 5d627e34a0e3006b0ccb95a4e2e12e26915ccccc..a26d4025cc1757edd0561024ee40e719e506c1fb 100644 (file)
 
 # else
 
-static
-const struct xlat fdflags[] = {
+static const struct xlat_data fdflags_xdata[] = {
 #if defined(FD_CLOEXEC) || (defined(HAVE_DECL_FD_CLOEXEC) && HAVE_DECL_FD_CLOEXEC)
   XLAT(FD_CLOEXEC),
+ #define XLAT_VAL_0 ((unsigned) (FD_CLOEXEC))
+ #define XLAT_STR_0 STRINGIFY(FD_CLOEXEC)
 #endif
- XLAT_END
 };
-
+static
+const struct xlat fdflags[1] = { {
+ .data = fdflags_xdata,
+ .size = ARRAY_SIZE(fdflags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 5681ddba7859c740c899b9d1cfce515cea28651a..dfac9d3de8a503e7d25c16d2b2f1f5d2a00cbd8d 100644 (file)
@@ -75,20 +75,118 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat fib_rule_actions[] = {
- XLAT(FR_ACT_UNSPEC),
- XLAT(FR_ACT_TO_TBL),
- XLAT(FR_ACT_GOTO),
- XLAT(FR_ACT_NOP),
- XLAT(FR_ACT_RES3),
- XLAT(FR_ACT_RES4),
- XLAT(FR_ACT_BLACKHOLE),
- XLAT(FR_ACT_UNREACHABLE),
- XLAT(FR_ACT_PROHIBIT),
- XLAT_END
+static const struct xlat_data fib_rule_actions_xdata[] = {
+ [FR_ACT_UNSPEC] = XLAT(FR_ACT_UNSPEC),
+ #define XLAT_VAL_0 ((unsigned) (FR_ACT_UNSPEC))
+ #define XLAT_STR_0 STRINGIFY(FR_ACT_UNSPEC)
+ [FR_ACT_TO_TBL] = XLAT(FR_ACT_TO_TBL),
+ #define XLAT_VAL_1 ((unsigned) (FR_ACT_TO_TBL))
+ #define XLAT_STR_1 STRINGIFY(FR_ACT_TO_TBL)
+ [FR_ACT_GOTO] = XLAT(FR_ACT_GOTO),
+ #define XLAT_VAL_2 ((unsigned) (FR_ACT_GOTO))
+ #define XLAT_STR_2 STRINGIFY(FR_ACT_GOTO)
+ [FR_ACT_NOP] = XLAT(FR_ACT_NOP),
+ #define XLAT_VAL_3 ((unsigned) (FR_ACT_NOP))
+ #define XLAT_STR_3 STRINGIFY(FR_ACT_NOP)
+ [FR_ACT_RES3] = XLAT(FR_ACT_RES3),
+ #define XLAT_VAL_4 ((unsigned) (FR_ACT_RES3))
+ #define XLAT_STR_4 STRINGIFY(FR_ACT_RES3)
+ [FR_ACT_RES4] = XLAT(FR_ACT_RES4),
+ #define XLAT_VAL_5 ((unsigned) (FR_ACT_RES4))
+ #define XLAT_STR_5 STRINGIFY(FR_ACT_RES4)
+ [FR_ACT_BLACKHOLE] = XLAT(FR_ACT_BLACKHOLE),
+ #define XLAT_VAL_6 ((unsigned) (FR_ACT_BLACKHOLE))
+ #define XLAT_STR_6 STRINGIFY(FR_ACT_BLACKHOLE)
+ [FR_ACT_UNREACHABLE] = XLAT(FR_ACT_UNREACHABLE),
+ #define XLAT_VAL_7 ((unsigned) (FR_ACT_UNREACHABLE))
+ #define XLAT_STR_7 STRINGIFY(FR_ACT_UNREACHABLE)
+ [FR_ACT_PROHIBIT] = XLAT(FR_ACT_PROHIBIT),
+ #define XLAT_VAL_8 ((unsigned) (FR_ACT_PROHIBIT))
+ #define XLAT_STR_8 STRINGIFY(FR_ACT_PROHIBIT)
 };
+static
+const struct xlat fib_rule_actions[1] = { {
+ .data = fib_rule_actions_xdata,
+ .size = ARRAY_SIZE(fib_rule_actions_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 55d59123ff9cc5cbc16729c9835548184c41a86e..181c2eabbb4305d8a0b9e9703e3fa11d1ebb06a5 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 FR_ACT_UNSPEC          0
 FR_ACT_TO_TBL          1
 FR_ACT_GOTO            2
index b395b5adf0bff7e1e3513fa98eb36f926a3f4958..3ae0b35214f3eccc124b33bc239cfe52d1f308e3 100644 (file)
 #include "gcc_compat.h"
 #include "static_assert.h"
 
-
-#ifndef XLAT_MACROS_ONLY
-
-# ifdef IN_MPERS
-
-#  error static const struct xlat fib_rule_flags in mpers mode
-
-# else
-
-static
-const struct xlat fib_rule_flags[] = {
 #if defined(FIB_RULE_PERMANENT) || (defined(HAVE_DECL_FIB_RULE_PERMANENT) && HAVE_DECL_FIB_RULE_PERMANENT)
-  XLAT(FIB_RULE_PERMANENT),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((FIB_RULE_PERMANENT) == (0x00000001), "FIB_RULE_PERMANENT != 0x00000001");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define FIB_RULE_PERMANENT 0x00000001
 #endif
 #if defined(FIB_RULE_INVERT) || (defined(HAVE_DECL_FIB_RULE_INVERT) && HAVE_DECL_FIB_RULE_INVERT)
-  XLAT(FIB_RULE_INVERT),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((FIB_RULE_INVERT) == (0x00000002), "FIB_RULE_INVERT != 0x00000002");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define FIB_RULE_INVERT 0x00000002
 #endif
 #if defined(FIB_RULE_UNRESOLVED) || (defined(HAVE_DECL_FIB_RULE_UNRESOLVED) && HAVE_DECL_FIB_RULE_UNRESOLVED)
-  XLAT(FIB_RULE_UNRESOLVED),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((FIB_RULE_UNRESOLVED) == (0x00000004), "FIB_RULE_UNRESOLVED != 0x00000004");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define FIB_RULE_UNRESOLVED 0x00000004
 #endif
 #if defined(FIB_RULE_IIF_DETACHED) || (defined(HAVE_DECL_FIB_RULE_IIF_DETACHED) && HAVE_DECL_FIB_RULE_IIF_DETACHED)
-  XLAT(FIB_RULE_IIF_DETACHED),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((FIB_RULE_IIF_DETACHED) == (0x00000008), "FIB_RULE_IIF_DETACHED != 0x00000008");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define FIB_RULE_IIF_DETACHED 0x00000008
 #endif
 #if defined(FIB_RULE_OIF_DETACHED) || (defined(HAVE_DECL_FIB_RULE_OIF_DETACHED) && HAVE_DECL_FIB_RULE_OIF_DETACHED)
-  XLAT(FIB_RULE_OIF_DETACHED),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((FIB_RULE_OIF_DETACHED) == (0x00000010), "FIB_RULE_OIF_DETACHED != 0x00000010");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define FIB_RULE_OIF_DETACHED 0x00000010
 #endif
 #if defined(FIB_RULE_FIND_SADDR) || (defined(HAVE_DECL_FIB_RULE_FIND_SADDR) && HAVE_DECL_FIB_RULE_FIND_SADDR)
-  XLAT(FIB_RULE_FIND_SADDR),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((FIB_RULE_FIND_SADDR) == (0x00010000), "FIB_RULE_FIND_SADDR != 0x00010000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define FIB_RULE_FIND_SADDR 0x00010000
 #endif
- XLAT_END
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat fib_rule_flags in mpers mode
+
+# else
+
+static const struct xlat_data fib_rule_flags_xdata[] = {
+ XLAT(FIB_RULE_PERMANENT),
+ #define XLAT_VAL_0 ((unsigned) (FIB_RULE_PERMANENT))
+ #define XLAT_STR_0 STRINGIFY(FIB_RULE_PERMANENT)
+ XLAT(FIB_RULE_INVERT),
+ #define XLAT_VAL_1 ((unsigned) (FIB_RULE_INVERT))
+ #define XLAT_STR_1 STRINGIFY(FIB_RULE_INVERT)
+ XLAT(FIB_RULE_UNRESOLVED),
+ #define XLAT_VAL_2 ((unsigned) (FIB_RULE_UNRESOLVED))
+ #define XLAT_STR_2 STRINGIFY(FIB_RULE_UNRESOLVED)
+ XLAT(FIB_RULE_IIF_DETACHED),
+ #define XLAT_VAL_3 ((unsigned) (FIB_RULE_IIF_DETACHED))
+ #define XLAT_STR_3 STRINGIFY(FIB_RULE_IIF_DETACHED)
+ XLAT(FIB_RULE_OIF_DETACHED),
+ #define XLAT_VAL_4 ((unsigned) (FIB_RULE_OIF_DETACHED))
+ #define XLAT_STR_4 STRINGIFY(FIB_RULE_OIF_DETACHED)
+ XLAT(FIB_RULE_FIND_SADDR),
+ #define XLAT_VAL_5 ((unsigned) (FIB_RULE_FIND_SADDR))
+ #define XLAT_STR_5 STRINGIFY(FIB_RULE_FIND_SADDR)
 };
+static
+const struct xlat fib_rule_flags[1] = { {
+ .data = fib_rule_flags_xdata,
+ .size = ARRAY_SIZE(fib_rule_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 8f4d42c0dd105cdb667e6c3b17cc3d8bd0eba774..001db9a3c9e7a25d25bb11b647f96744bf2cbfaa 100644 (file)
@@ -1,6 +1,6 @@
-FIB_RULE_PERMANENT
-FIB_RULE_INVERT
-FIB_RULE_UNRESOLVED
-FIB_RULE_IIF_DETACHED
-FIB_RULE_OIF_DETACHED
-FIB_RULE_FIND_SADDR
+FIB_RULE_PERMANENT     0x00000001
+FIB_RULE_INVERT                0x00000002
+FIB_RULE_UNRESOLVED    0x00000004
+FIB_RULE_IIF_DETACHED  0x00000008
+FIB_RULE_OIF_DETACHED  0x00000010
+FIB_RULE_FIND_SADDR    0x00010000
index 41e85be8364744cf9496864b72b6ff90162ba2c0..3310e7c01ed60f16856c191fadf76f5b26476a17 100644 (file)
@@ -89,22 +89,140 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat fiemap_extent_flags[] = {
+static const struct xlat_data fiemap_extent_flags_xdata[] = {
  XLAT(FIEMAP_EXTENT_LAST),
+ #define XLAT_VAL_0 ((unsigned) (FIEMAP_EXTENT_LAST))
+ #define XLAT_STR_0 STRINGIFY(FIEMAP_EXTENT_LAST)
  XLAT(FIEMAP_EXTENT_UNKNOWN),
+ #define XLAT_VAL_1 ((unsigned) (FIEMAP_EXTENT_UNKNOWN))
+ #define XLAT_STR_1 STRINGIFY(FIEMAP_EXTENT_UNKNOWN)
  XLAT(FIEMAP_EXTENT_DELALLOC),
+ #define XLAT_VAL_2 ((unsigned) (FIEMAP_EXTENT_DELALLOC))
+ #define XLAT_STR_2 STRINGIFY(FIEMAP_EXTENT_DELALLOC)
  XLAT(FIEMAP_EXTENT_ENCODED),
+ #define XLAT_VAL_3 ((unsigned) (FIEMAP_EXTENT_ENCODED))
+ #define XLAT_STR_3 STRINGIFY(FIEMAP_EXTENT_ENCODED)
  XLAT(FIEMAP_EXTENT_DATA_ENCRYPTED),
+ #define XLAT_VAL_4 ((unsigned) (FIEMAP_EXTENT_DATA_ENCRYPTED))
+ #define XLAT_STR_4 STRINGIFY(FIEMAP_EXTENT_DATA_ENCRYPTED)
  XLAT(FIEMAP_EXTENT_NOT_ALIGNED),
+ #define XLAT_VAL_5 ((unsigned) (FIEMAP_EXTENT_NOT_ALIGNED))
+ #define XLAT_STR_5 STRINGIFY(FIEMAP_EXTENT_NOT_ALIGNED)
  XLAT(FIEMAP_EXTENT_DATA_INLINE),
+ #define XLAT_VAL_6 ((unsigned) (FIEMAP_EXTENT_DATA_INLINE))
+ #define XLAT_STR_6 STRINGIFY(FIEMAP_EXTENT_DATA_INLINE)
  XLAT(FIEMAP_EXTENT_DATA_TAIL),
+ #define XLAT_VAL_7 ((unsigned) (FIEMAP_EXTENT_DATA_TAIL))
+ #define XLAT_STR_7 STRINGIFY(FIEMAP_EXTENT_DATA_TAIL)
  XLAT(FIEMAP_EXTENT_UNWRITTEN),
+ #define XLAT_VAL_8 ((unsigned) (FIEMAP_EXTENT_UNWRITTEN))
+ #define XLAT_STR_8 STRINGIFY(FIEMAP_EXTENT_UNWRITTEN)
  XLAT(FIEMAP_EXTENT_MERGED),
+ #define XLAT_VAL_9 ((unsigned) (FIEMAP_EXTENT_MERGED))
+ #define XLAT_STR_9 STRINGIFY(FIEMAP_EXTENT_MERGED)
  XLAT(FIEMAP_EXTENT_SHARED),
- XLAT_END
+ #define XLAT_VAL_10 ((unsigned) (FIEMAP_EXTENT_SHARED))
+ #define XLAT_STR_10 STRINGIFY(FIEMAP_EXTENT_SHARED)
 };
+static
+const struct xlat fiemap_extent_flags[1] = { {
+ .data = fiemap_extent_flags_xdata,
+ .size = ARRAY_SIZE(fiemap_extent_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 73395e8f41478bbb8eaa1e3af0af9c47aa5d0b60..d3d189502dcbe0a10830c3eeaa413fc8225caf84 100644 (file)
@@ -33,14 +33,52 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat fiemap_flags[] = {
+static const struct xlat_data fiemap_flags_xdata[] = {
  XLAT(FIEMAP_FLAG_SYNC),
+ #define XLAT_VAL_0 ((unsigned) (FIEMAP_FLAG_SYNC))
+ #define XLAT_STR_0 STRINGIFY(FIEMAP_FLAG_SYNC)
  XLAT(FIEMAP_FLAG_XATTR),
+ #define XLAT_VAL_1 ((unsigned) (FIEMAP_FLAG_XATTR))
+ #define XLAT_STR_1 STRINGIFY(FIEMAP_FLAG_XATTR)
  XLAT(FIEMAP_FLAG_CACHE),
- XLAT_END
+ #define XLAT_VAL_2 ((unsigned) (FIEMAP_FLAG_CACHE))
+ #define XLAT_STR_2 STRINGIFY(FIEMAP_FLAG_CACHE)
 };
+static
+const struct xlat fiemap_flags[1] = { {
+ .data = fiemap_flags_xdata,
+ .size = ARRAY_SIZE(fiemap_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index c7cf93994fec6711e516396ed08311cfba2aa566..c45532cbbbb2c2693226992456dd8bfe54e757c2 100644 (file)
@@ -68,19 +68,107 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat flockcmds[] = {
+static const struct xlat_data flockcmds_xdata[] = {
  XLAT(LOCK_SH),
+ #define XLAT_VAL_0 ((unsigned) (LOCK_SH))
+ #define XLAT_STR_0 STRINGIFY(LOCK_SH)
  XLAT(LOCK_EX),
+ #define XLAT_VAL_1 ((unsigned) (LOCK_EX))
+ #define XLAT_STR_1 STRINGIFY(LOCK_EX)
  XLAT(LOCK_NB),
+ #define XLAT_VAL_2 ((unsigned) (LOCK_NB))
+ #define XLAT_STR_2 STRINGIFY(LOCK_NB)
  XLAT(LOCK_UN),
+ #define XLAT_VAL_3 ((unsigned) (LOCK_UN))
+ #define XLAT_STR_3 STRINGIFY(LOCK_UN)
  XLAT(LOCK_MAND),
+ #define XLAT_VAL_4 ((unsigned) (LOCK_MAND))
+ #define XLAT_STR_4 STRINGIFY(LOCK_MAND)
  XLAT(LOCK_RW),
+ #define XLAT_VAL_5 ((unsigned) (LOCK_RW))
+ #define XLAT_STR_5 STRINGIFY(LOCK_RW)
  XLAT(LOCK_READ),
+ #define XLAT_VAL_6 ((unsigned) (LOCK_READ))
+ #define XLAT_STR_6 STRINGIFY(LOCK_READ)
  XLAT(LOCK_WRITE),
- XLAT_END
+ #define XLAT_VAL_7 ((unsigned) (LOCK_WRITE))
+ #define XLAT_STR_7 STRINGIFY(LOCK_WRITE)
 };
+static
+const struct xlat flockcmds[1] = { {
+ .data = flockcmds_xdata,
+ .size = ARRAY_SIZE(flockcmds_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/fsconfig_cmds.h b/xlat/fsconfig_cmds.h
new file mode 100644 (file)
index 0000000..e0b95f1
--- /dev/null
@@ -0,0 +1,174 @@
+/* Generated by ./xlat/gen.sh from ./xlat/fsconfig_cmds.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(FSCONFIG_SET_FLAG) || (defined(HAVE_DECL_FSCONFIG_SET_FLAG) && HAVE_DECL_FSCONFIG_SET_FLAG)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((FSCONFIG_SET_FLAG) == (0), "FSCONFIG_SET_FLAG != 0");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define FSCONFIG_SET_FLAG 0
+#endif
+#if defined(FSCONFIG_SET_STRING) || (defined(HAVE_DECL_FSCONFIG_SET_STRING) && HAVE_DECL_FSCONFIG_SET_STRING)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((FSCONFIG_SET_STRING) == (1), "FSCONFIG_SET_STRING != 1");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define FSCONFIG_SET_STRING 1
+#endif
+#if defined(FSCONFIG_SET_BINARY) || (defined(HAVE_DECL_FSCONFIG_SET_BINARY) && HAVE_DECL_FSCONFIG_SET_BINARY)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((FSCONFIG_SET_BINARY) == (2), "FSCONFIG_SET_BINARY != 2");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define FSCONFIG_SET_BINARY 2
+#endif
+#if defined(FSCONFIG_SET_PATH) || (defined(HAVE_DECL_FSCONFIG_SET_PATH) && HAVE_DECL_FSCONFIG_SET_PATH)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((FSCONFIG_SET_PATH) == (3), "FSCONFIG_SET_PATH != 3");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define FSCONFIG_SET_PATH 3
+#endif
+#if defined(FSCONFIG_SET_PATH_EMPTY) || (defined(HAVE_DECL_FSCONFIG_SET_PATH_EMPTY) && HAVE_DECL_FSCONFIG_SET_PATH_EMPTY)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((FSCONFIG_SET_PATH_EMPTY) == (4), "FSCONFIG_SET_PATH_EMPTY != 4");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define FSCONFIG_SET_PATH_EMPTY 4
+#endif
+#if defined(FSCONFIG_SET_FD) || (defined(HAVE_DECL_FSCONFIG_SET_FD) && HAVE_DECL_FSCONFIG_SET_FD)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((FSCONFIG_SET_FD) == (5), "FSCONFIG_SET_FD != 5");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define FSCONFIG_SET_FD 5
+#endif
+#if defined(FSCONFIG_CMD_CREATE) || (defined(HAVE_DECL_FSCONFIG_CMD_CREATE) && HAVE_DECL_FSCONFIG_CMD_CREATE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((FSCONFIG_CMD_CREATE) == (6), "FSCONFIG_CMD_CREATE != 6");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define FSCONFIG_CMD_CREATE 6
+#endif
+#if defined(FSCONFIG_CMD_RECONFIGURE) || (defined(HAVE_DECL_FSCONFIG_CMD_RECONFIGURE) && HAVE_DECL_FSCONFIG_CMD_RECONFIGURE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((FSCONFIG_CMD_RECONFIGURE) == (7), "FSCONFIG_CMD_RECONFIGURE != 7");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define FSCONFIG_CMD_RECONFIGURE 7
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat fsconfig_cmds in mpers mode
+
+# else
+
+static const struct xlat_data fsconfig_cmds_xdata[] = {
+ [FSCONFIG_SET_FLAG] = XLAT(FSCONFIG_SET_FLAG),
+ #define XLAT_VAL_0 ((unsigned) (FSCONFIG_SET_FLAG))
+ #define XLAT_STR_0 STRINGIFY(FSCONFIG_SET_FLAG)
+ [FSCONFIG_SET_STRING] = XLAT(FSCONFIG_SET_STRING),
+ #define XLAT_VAL_1 ((unsigned) (FSCONFIG_SET_STRING))
+ #define XLAT_STR_1 STRINGIFY(FSCONFIG_SET_STRING)
+ [FSCONFIG_SET_BINARY] = XLAT(FSCONFIG_SET_BINARY),
+ #define XLAT_VAL_2 ((unsigned) (FSCONFIG_SET_BINARY))
+ #define XLAT_STR_2 STRINGIFY(FSCONFIG_SET_BINARY)
+ [FSCONFIG_SET_PATH] = XLAT(FSCONFIG_SET_PATH),
+ #define XLAT_VAL_3 ((unsigned) (FSCONFIG_SET_PATH))
+ #define XLAT_STR_3 STRINGIFY(FSCONFIG_SET_PATH)
+ [FSCONFIG_SET_PATH_EMPTY] = XLAT(FSCONFIG_SET_PATH_EMPTY),
+ #define XLAT_VAL_4 ((unsigned) (FSCONFIG_SET_PATH_EMPTY))
+ #define XLAT_STR_4 STRINGIFY(FSCONFIG_SET_PATH_EMPTY)
+ [FSCONFIG_SET_FD] = XLAT(FSCONFIG_SET_FD),
+ #define XLAT_VAL_5 ((unsigned) (FSCONFIG_SET_FD))
+ #define XLAT_STR_5 STRINGIFY(FSCONFIG_SET_FD)
+ [FSCONFIG_CMD_CREATE] = XLAT(FSCONFIG_CMD_CREATE),
+ #define XLAT_VAL_6 ((unsigned) (FSCONFIG_CMD_CREATE))
+ #define XLAT_STR_6 STRINGIFY(FSCONFIG_CMD_CREATE)
+ [FSCONFIG_CMD_RECONFIGURE] = XLAT(FSCONFIG_CMD_RECONFIGURE),
+ #define XLAT_VAL_7 ((unsigned) (FSCONFIG_CMD_RECONFIGURE))
+ #define XLAT_STR_7 STRINGIFY(FSCONFIG_CMD_RECONFIGURE)
+};
+static
+const struct xlat fsconfig_cmds[1] = { {
+ .data = fsconfig_cmds_xdata,
+ .size = ARRAY_SIZE(fsconfig_cmds_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/fsconfig_cmds.in b/xlat/fsconfig_cmds.in
new file mode 100644 (file)
index 0000000..be33679
--- /dev/null
@@ -0,0 +1,9 @@
+#value_indexed
+FSCONFIG_SET_FLAG              0
+FSCONFIG_SET_STRING            1
+FSCONFIG_SET_BINARY            2
+FSCONFIG_SET_PATH              3
+FSCONFIG_SET_PATH_EMPTY                4
+FSCONFIG_SET_FD                        5
+FSCONFIG_CMD_CREATE            6
+FSCONFIG_CMD_RECONFIGURE       7
index a85e54ffd0ba8cc17cf0733c775deede3034da4b..d7a8de9c122b6147ffb9304ba720e53f4e4b0033 100644 (file)
@@ -3,6 +3,769 @@
 #include "gcc_compat.h"
 #include "static_assert.h"
 
+#if defined(QNX4_SUPER_MAGIC) || (defined(HAVE_DECL_QNX4_SUPER_MAGIC) && HAVE_DECL_QNX4_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((QNX4_SUPER_MAGIC) == (0x0000002f), "QNX4_SUPER_MAGIC != 0x0000002f");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define QNX4_SUPER_MAGIC 0x0000002f
+#endif
+#if defined(Z3FOLD_MAGIC) || (defined(HAVE_DECL_Z3FOLD_MAGIC) && HAVE_DECL_Z3FOLD_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((Z3FOLD_MAGIC) == (0x00000033), "Z3FOLD_MAGIC != 0x00000033");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define Z3FOLD_MAGIC 0x00000033
+#endif
+#if defined(AUTOFS_SUPER_MAGIC) || (defined(HAVE_DECL_AUTOFS_SUPER_MAGIC) && HAVE_DECL_AUTOFS_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUTOFS_SUPER_MAGIC) == (0x00000187), "AUTOFS_SUPER_MAGIC != 0x00000187");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUTOFS_SUPER_MAGIC 0x00000187
+#endif
+#if defined(DEVFS_SUPER_MAGIC) || (defined(HAVE_DECL_DEVFS_SUPER_MAGIC) && HAVE_DECL_DEVFS_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((DEVFS_SUPER_MAGIC) == (0x00001373), "DEVFS_SUPER_MAGIC != 0x00001373");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define DEVFS_SUPER_MAGIC 0x00001373
+#endif
+#if defined(EXT_SUPER_MAGIC) || (defined(HAVE_DECL_EXT_SUPER_MAGIC) && HAVE_DECL_EXT_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EXT_SUPER_MAGIC) == (0x0000137d), "EXT_SUPER_MAGIC != 0x0000137d");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EXT_SUPER_MAGIC 0x0000137d
+#endif
+#if defined(MINIX_SUPER_MAGIC) || (defined(HAVE_DECL_MINIX_SUPER_MAGIC) && HAVE_DECL_MINIX_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((MINIX_SUPER_MAGIC) == (0x0000137f), "MINIX_SUPER_MAGIC != 0x0000137f");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define MINIX_SUPER_MAGIC 0x0000137f
+#endif
+#if defined(MINIX_SUPER_MAGIC2) || (defined(HAVE_DECL_MINIX_SUPER_MAGIC2) && HAVE_DECL_MINIX_SUPER_MAGIC2)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((MINIX_SUPER_MAGIC2) == (0x0000138f), "MINIX_SUPER_MAGIC2 != 0x0000138f");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define MINIX_SUPER_MAGIC2 0x0000138f
+#endif
+#if defined(DEVPTS_SUPER_MAGIC) || (defined(HAVE_DECL_DEVPTS_SUPER_MAGIC) && HAVE_DECL_DEVPTS_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((DEVPTS_SUPER_MAGIC) == (0x00001cd1), "DEVPTS_SUPER_MAGIC != 0x00001cd1");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define DEVPTS_SUPER_MAGIC 0x00001cd1
+#endif
+#if defined(MINIX2_SUPER_MAGIC) || (defined(HAVE_DECL_MINIX2_SUPER_MAGIC) && HAVE_DECL_MINIX2_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((MINIX2_SUPER_MAGIC) == (0x00002468), "MINIX2_SUPER_MAGIC != 0x00002468");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define MINIX2_SUPER_MAGIC 0x00002468
+#endif
+#if defined(MINIX2_SUPER_MAGIC2) || (defined(HAVE_DECL_MINIX2_SUPER_MAGIC2) && HAVE_DECL_MINIX2_SUPER_MAGIC2)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((MINIX2_SUPER_MAGIC2) == (0x00002478), "MINIX2_SUPER_MAGIC2 != 0x00002478");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define MINIX2_SUPER_MAGIC2 0x00002478
+#endif
+#if defined(NILFS_SUPER_MAGIC) || (defined(HAVE_DECL_NILFS_SUPER_MAGIC) && HAVE_DECL_NILFS_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((NILFS_SUPER_MAGIC) == (0x00003434), "NILFS_SUPER_MAGIC != 0x00003434");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define NILFS_SUPER_MAGIC 0x00003434
+#endif
+#if defined(HFS_SUPER_MAGIC) || (defined(HAVE_DECL_HFS_SUPER_MAGIC) && HAVE_DECL_HFS_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((HFS_SUPER_MAGIC) == (0x00004244), "HFS_SUPER_MAGIC != 0x00004244");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define HFS_SUPER_MAGIC 0x00004244
+#endif
+#if defined(HFSPLUS_SUPER_MAGIC) || (defined(HAVE_DECL_HFSPLUS_SUPER_MAGIC) && HAVE_DECL_HFSPLUS_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((HFSPLUS_SUPER_MAGIC) == (0x0000482b), "HFSPLUS_SUPER_MAGIC != 0x0000482b");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define HFSPLUS_SUPER_MAGIC 0x0000482b
+#endif
+#if defined(MSDOS_SUPER_MAGIC) || (defined(HAVE_DECL_MSDOS_SUPER_MAGIC) && HAVE_DECL_MSDOS_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((MSDOS_SUPER_MAGIC) == (0x00004d44), "MSDOS_SUPER_MAGIC != 0x00004d44");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define MSDOS_SUPER_MAGIC 0x00004d44
+#endif
+#if defined(MINIX3_SUPER_MAGIC) || (defined(HAVE_DECL_MINIX3_SUPER_MAGIC) && HAVE_DECL_MINIX3_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((MINIX3_SUPER_MAGIC) == (0x00004d5a), "MINIX3_SUPER_MAGIC != 0x00004d5a");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define MINIX3_SUPER_MAGIC 0x00004d5a
+#endif
+#if defined(SMB_SUPER_MAGIC) || (defined(HAVE_DECL_SMB_SUPER_MAGIC) && HAVE_DECL_SMB_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((SMB_SUPER_MAGIC) == (0x0000517b), "SMB_SUPER_MAGIC != 0x0000517b");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define SMB_SUPER_MAGIC 0x0000517b
+#endif
+#if defined(NCP_SUPER_MAGIC) || (defined(HAVE_DECL_NCP_SUPER_MAGIC) && HAVE_DECL_NCP_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((NCP_SUPER_MAGIC) == (0x0000564c), "NCP_SUPER_MAGIC != 0x0000564c");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define NCP_SUPER_MAGIC 0x0000564c
+#endif
+#if defined(EXOFS_SUPER_MAGIC) || (defined(HAVE_DECL_EXOFS_SUPER_MAGIC) && HAVE_DECL_EXOFS_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EXOFS_SUPER_MAGIC) == (0x00005df5), "EXOFS_SUPER_MAGIC != 0x00005df5");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EXOFS_SUPER_MAGIC 0x00005df5
+#endif
+#if defined(NFS_SUPER_MAGIC) || (defined(HAVE_DECL_NFS_SUPER_MAGIC) && HAVE_DECL_NFS_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((NFS_SUPER_MAGIC) == (0x00006969), "NFS_SUPER_MAGIC != 0x00006969");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define NFS_SUPER_MAGIC 0x00006969
+#endif
+#if defined(ROMFS_MAGIC) || (defined(HAVE_DECL_ROMFS_MAGIC) && HAVE_DECL_ROMFS_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ROMFS_MAGIC) == (0x00007275), "ROMFS_MAGIC != 0x00007275");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ROMFS_MAGIC 0x00007275
+#endif
+#if defined(JFFS2_SUPER_MAGIC) || (defined(HAVE_DECL_JFFS2_SUPER_MAGIC) && HAVE_DECL_JFFS2_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((JFFS2_SUPER_MAGIC) == (0x000072b6), "JFFS2_SUPER_MAGIC != 0x000072b6");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define JFFS2_SUPER_MAGIC 0x000072b6
+#endif
+#if defined(ISOFS_SUPER_MAGIC) || (defined(HAVE_DECL_ISOFS_SUPER_MAGIC) && HAVE_DECL_ISOFS_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ISOFS_SUPER_MAGIC) == (0x00009660), "ISOFS_SUPER_MAGIC != 0x00009660");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ISOFS_SUPER_MAGIC 0x00009660
+#endif
+#if defined(PROC_SUPER_MAGIC) || (defined(HAVE_DECL_PROC_SUPER_MAGIC) && HAVE_DECL_PROC_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PROC_SUPER_MAGIC) == (0x00009fa0), "PROC_SUPER_MAGIC != 0x00009fa0");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PROC_SUPER_MAGIC 0x00009fa0
+#endif
+#if defined(OPENPROM_SUPER_MAGIC) || (defined(HAVE_DECL_OPENPROM_SUPER_MAGIC) && HAVE_DECL_OPENPROM_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((OPENPROM_SUPER_MAGIC) == (0x00009fa1), "OPENPROM_SUPER_MAGIC != 0x00009fa1");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define OPENPROM_SUPER_MAGIC 0x00009fa1
+#endif
+#if defined(USBDEVICE_SUPER_MAGIC) || (defined(HAVE_DECL_USBDEVICE_SUPER_MAGIC) && HAVE_DECL_USBDEVICE_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((USBDEVICE_SUPER_MAGIC) == (0x00009fa2), "USBDEVICE_SUPER_MAGIC != 0x00009fa2");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define USBDEVICE_SUPER_MAGIC 0x00009fa2
+#endif
+#if defined(ADFS_SUPER_MAGIC) || (defined(HAVE_DECL_ADFS_SUPER_MAGIC) && HAVE_DECL_ADFS_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ADFS_SUPER_MAGIC) == (0x0000adf5), "ADFS_SUPER_MAGIC != 0x0000adf5");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ADFS_SUPER_MAGIC 0x0000adf5
+#endif
+#if defined(AFFS_SUPER_MAGIC) || (defined(HAVE_DECL_AFFS_SUPER_MAGIC) && HAVE_DECL_AFFS_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AFFS_SUPER_MAGIC) == (0x0000adff), "AFFS_SUPER_MAGIC != 0x0000adff");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AFFS_SUPER_MAGIC 0x0000adff
+#endif
+#if defined(EXT2_OLD_SUPER_MAGIC) || (defined(HAVE_DECL_EXT2_OLD_SUPER_MAGIC) && HAVE_DECL_EXT2_OLD_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EXT2_OLD_SUPER_MAGIC) == (0x0000ef51), "EXT2_OLD_SUPER_MAGIC != 0x0000ef51");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EXT2_OLD_SUPER_MAGIC 0x0000ef51
+#endif
+#if defined(EXT2_SUPER_MAGIC) || (defined(HAVE_DECL_EXT2_SUPER_MAGIC) && HAVE_DECL_EXT2_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EXT2_SUPER_MAGIC) == (0x0000ef53), "EXT2_SUPER_MAGIC != 0x0000ef53");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EXT2_SUPER_MAGIC 0x0000ef53
+#endif
+#if defined(ECRYPTFS_SUPER_MAGIC) || (defined(HAVE_DECL_ECRYPTFS_SUPER_MAGIC) && HAVE_DECL_ECRYPTFS_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ECRYPTFS_SUPER_MAGIC) == (0x0000f15f), "ECRYPTFS_SUPER_MAGIC != 0x0000f15f");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ECRYPTFS_SUPER_MAGIC 0x0000f15f
+#endif
+#if defined(UFS_MAGIC) || (defined(HAVE_DECL_UFS_MAGIC) && HAVE_DECL_UFS_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((UFS_MAGIC) == (0x00011954), "UFS_MAGIC != 0x00011954");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define UFS_MAGIC 0x00011954
+#endif
+#if defined(CGROUP_SUPER_MAGIC) || (defined(HAVE_DECL_CGROUP_SUPER_MAGIC) && HAVE_DECL_CGROUP_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((CGROUP_SUPER_MAGIC) == (0x0027e0eb), "CGROUP_SUPER_MAGIC != 0x0027e0eb");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define CGROUP_SUPER_MAGIC 0x0027e0eb
+#endif
+#if defined(EFS_SUPER_MAGIC) || (defined(HAVE_DECL_EFS_SUPER_MAGIC) && HAVE_DECL_EFS_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EFS_SUPER_MAGIC) == (0x00414a53), "EFS_SUPER_MAGIC != 0x00414a53");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EFS_SUPER_MAGIC 0x00414a53
+#endif
+#if defined(HOSTFS_SUPER_MAGIC) || (defined(HAVE_DECL_HOSTFS_SUPER_MAGIC) && HAVE_DECL_HOSTFS_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((HOSTFS_SUPER_MAGIC) == (0x00c0ffee), "HOSTFS_SUPER_MAGIC != 0x00c0ffee");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define HOSTFS_SUPER_MAGIC 0x00c0ffee
+#endif
+#if defined(CEPH_SUPER_MAGIC) || (defined(HAVE_DECL_CEPH_SUPER_MAGIC) && HAVE_DECL_CEPH_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((CEPH_SUPER_MAGIC) == (0x00c36400), "CEPH_SUPER_MAGIC != 0x00c36400");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define CEPH_SUPER_MAGIC 0x00c36400
+#endif
+#if defined(TMPFS_MAGIC) || (defined(HAVE_DECL_TMPFS_MAGIC) && HAVE_DECL_TMPFS_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TMPFS_MAGIC) == (0x01021994), "TMPFS_MAGIC != 0x01021994");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TMPFS_MAGIC 0x01021994
+#endif
+#if defined(V9FS_MAGIC) || (defined(HAVE_DECL_V9FS_MAGIC) && HAVE_DECL_V9FS_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V9FS_MAGIC) == (0x01021997), "V9FS_MAGIC != 0x01021997");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V9FS_MAGIC 0x01021997
+#endif
+#if defined(GFS2_MAGIC) || (defined(HAVE_DECL_GFS2_MAGIC) && HAVE_DECL_GFS2_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((GFS2_MAGIC) == (0x01161970), "GFS2_MAGIC != 0x01161970");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define GFS2_MAGIC 0x01161970
+#endif
+#if defined(XIAFS_SUPER_MAGIC) || (defined(HAVE_DECL_XIAFS_SUPER_MAGIC) && HAVE_DECL_XIAFS_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((XIAFS_SUPER_MAGIC) == (0x012fd16d), "XIAFS_SUPER_MAGIC != 0x012fd16d");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define XIAFS_SUPER_MAGIC 0x012fd16d
+#endif
+#if defined(XENIX_SUPER_MAGIC) || (defined(HAVE_DECL_XENIX_SUPER_MAGIC) && HAVE_DECL_XENIX_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((XENIX_SUPER_MAGIC) == (0x012ff7b4), "XENIX_SUPER_MAGIC != 0x012ff7b4");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define XENIX_SUPER_MAGIC 0x012ff7b4
+#endif
+#if defined(SYSV4_SUPER_MAGIC) || (defined(HAVE_DECL_SYSV4_SUPER_MAGIC) && HAVE_DECL_SYSV4_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((SYSV4_SUPER_MAGIC) == (0x012ff7b5), "SYSV4_SUPER_MAGIC != 0x012ff7b5");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define SYSV4_SUPER_MAGIC 0x012ff7b5
+#endif
+#if defined(SYSV2_SUPER_MAGIC) || (defined(HAVE_DECL_SYSV2_SUPER_MAGIC) && HAVE_DECL_SYSV2_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((SYSV2_SUPER_MAGIC) == (0x012ff7b6), "SYSV2_SUPER_MAGIC != 0x012ff7b6");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define SYSV2_SUPER_MAGIC 0x012ff7b6
+#endif
+#if defined(COH_SUPER_MAGIC) || (defined(HAVE_DECL_COH_SUPER_MAGIC) && HAVE_DECL_COH_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((COH_SUPER_MAGIC) == (0x012ff7b7), "COH_SUPER_MAGIC != 0x012ff7b7");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define COH_SUPER_MAGIC 0x012ff7b7
+#endif
+#if defined(SHMFS_SUPER_MAGIC) || (defined(HAVE_DECL_SHMFS_SUPER_MAGIC) && HAVE_DECL_SHMFS_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((SHMFS_SUPER_MAGIC) == (0x02011994), "SHMFS_SUPER_MAGIC != 0x02011994");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define SHMFS_SUPER_MAGIC 0x02011994
+#endif
+#if defined(ANON_INODE_FS_MAGIC) || (defined(HAVE_DECL_ANON_INODE_FS_MAGIC) && HAVE_DECL_ANON_INODE_FS_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ANON_INODE_FS_MAGIC) == (0x09041934), "ANON_INODE_FS_MAGIC != 0x09041934");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ANON_INODE_FS_MAGIC 0x09041934
+#endif
+#if defined(FUTEXFS_SUPER_MAGIC) || (defined(HAVE_DECL_FUTEXFS_SUPER_MAGIC) && HAVE_DECL_FUTEXFS_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((FUTEXFS_SUPER_MAGIC) == (0x0bad1dea), "FUTEXFS_SUPER_MAGIC != 0x0bad1dea");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define FUTEXFS_SUPER_MAGIC 0x0bad1dea
+#endif
+#if defined(MTD_INODE_FS_MAGIC) || (defined(HAVE_DECL_MTD_INODE_FS_MAGIC) && HAVE_DECL_MTD_INODE_FS_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((MTD_INODE_FS_MAGIC) == (0x11307854), "MTD_INODE_FS_MAGIC != 0x11307854");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define MTD_INODE_FS_MAGIC 0x11307854
+#endif
+#if defined(BALLOON_KVM_MAGIC) || (defined(HAVE_DECL_BALLOON_KVM_MAGIC) && HAVE_DECL_BALLOON_KVM_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BALLOON_KVM_MAGIC) == (0x13661366), "BALLOON_KVM_MAGIC != 0x13661366");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BALLOON_KVM_MAGIC 0x13661366
+#endif
+#if defined(UDF_SUPER_MAGIC) || (defined(HAVE_DECL_UDF_SUPER_MAGIC) && HAVE_DECL_UDF_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((UDF_SUPER_MAGIC) == (0x15013346), "UDF_SUPER_MAGIC != 0x15013346");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define UDF_SUPER_MAGIC 0x15013346
+#endif
+#if defined(BFS_MAGIC) || (defined(HAVE_DECL_BFS_MAGIC) && HAVE_DECL_BFS_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BFS_MAGIC) == (0x1badface), "BFS_MAGIC != 0x1badface");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BFS_MAGIC 0x1badface
+#endif
+#if defined(UBIFS_SUPER_MAGIC) || (defined(HAVE_DECL_UBIFS_SUPER_MAGIC) && HAVE_DECL_UBIFS_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((UBIFS_SUPER_MAGIC) == (0x24051905), "UBIFS_SUPER_MAGIC != 0x24051905");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define UBIFS_SUPER_MAGIC 0x24051905
+#endif
+#if defined(CRAMFS_MAGIC) || (defined(HAVE_DECL_CRAMFS_MAGIC) && HAVE_DECL_CRAMFS_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((CRAMFS_MAGIC) == (0x28cd3d45), "CRAMFS_MAGIC != 0x28cd3d45");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define CRAMFS_MAGIC 0x28cd3d45
+#endif
+#if defined(ZFS_SUPER_MAGIC) || (defined(HAVE_DECL_ZFS_SUPER_MAGIC) && HAVE_DECL_ZFS_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ZFS_SUPER_MAGIC) == (0x2fc12fc1), "ZFS_SUPER_MAGIC != 0x2fc12fc1");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ZFS_SUPER_MAGIC 0x2fc12fc1
+#endif
+#if defined(JFS_SUPER_MAGIC) || (defined(HAVE_DECL_JFS_SUPER_MAGIC) && HAVE_DECL_JFS_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((JFS_SUPER_MAGIC) == (0x3153464a), "JFS_SUPER_MAGIC != 0x3153464a");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define JFS_SUPER_MAGIC 0x3153464a
+#endif
+#if defined(BEFS_SUPER_MAGIC) || (defined(HAVE_DECL_BEFS_SUPER_MAGIC) && HAVE_DECL_BEFS_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BEFS_SUPER_MAGIC) == (0x42465331), "BEFS_SUPER_MAGIC != 0x42465331");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BEFS_SUPER_MAGIC 0x42465331
+#endif
+#if defined(BINFMTFS_MAGIC) || (defined(HAVE_DECL_BINFMTFS_MAGIC) && HAVE_DECL_BINFMTFS_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BINFMTFS_MAGIC) == (0x42494e4d), "BINFMTFS_MAGIC != 0x42494e4d");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BINFMTFS_MAGIC 0x42494e4d
+#endif
+#if defined(SMACK_MAGIC) || (defined(HAVE_DECL_SMACK_MAGIC) && HAVE_DECL_SMACK_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((SMACK_MAGIC) == (0x43415d53), "SMACK_MAGIC != 0x43415d53");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define SMACK_MAGIC 0x43415d53
+#endif
+#if defined(DMA_BUF_MAGIC) || (defined(HAVE_DECL_DMA_BUF_MAGIC) && HAVE_DECL_DMA_BUF_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((DMA_BUF_MAGIC) == (0x444d4142), "DMA_BUF_MAGIC != 0x444d4142");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define DMA_BUF_MAGIC 0x444d4142
+#endif
+#if defined(CRAMFS_MAGIC_WEND) || (defined(HAVE_DECL_CRAMFS_MAGIC_WEND) && HAVE_DECL_CRAMFS_MAGIC_WEND)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((CRAMFS_MAGIC_WEND) == (0x453dcd28), "CRAMFS_MAGIC_WEND != 0x453dcd28");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define CRAMFS_MAGIC_WEND 0x453dcd28
+#endif
+#if defined(DEVMEM_MAGIC) || (defined(HAVE_DECL_DEVMEM_MAGIC) && HAVE_DECL_DEVMEM_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((DEVMEM_MAGIC) == (0x454d444d), "DEVMEM_MAGIC != 0x454d444d");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define DEVMEM_MAGIC 0x454d444d
+#endif
+#if defined(GPFS_SUPER_MAGIC) || (defined(HAVE_DECL_GPFS_SUPER_MAGIC) && HAVE_DECL_GPFS_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((GPFS_SUPER_MAGIC) == (0x47504653), "GPFS_SUPER_MAGIC != 0x47504653");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define GPFS_SUPER_MAGIC 0x47504653
+#endif
+#if defined(PIPEFS_MAGIC) || (defined(HAVE_DECL_PIPEFS_MAGIC) && HAVE_DECL_PIPEFS_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PIPEFS_MAGIC) == (0x50495045), "PIPEFS_MAGIC != 0x50495045");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PIPEFS_MAGIC 0x50495045
+#endif
+#if defined(REISERFS_SUPER_MAGIC) || (defined(HAVE_DECL_REISERFS_SUPER_MAGIC) && HAVE_DECL_REISERFS_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((REISERFS_SUPER_MAGIC) == (0x52654973), "REISERFS_SUPER_MAGIC != 0x52654973");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define REISERFS_SUPER_MAGIC 0x52654973
+#endif
+#if defined(AFS_SUPER_MAGIC) || (defined(HAVE_DECL_AFS_SUPER_MAGIC) && HAVE_DECL_AFS_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AFS_SUPER_MAGIC) == (0x5346414f), "AFS_SUPER_MAGIC != 0x5346414f");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AFS_SUPER_MAGIC 0x5346414f
+#endif
+#if defined(NTFS_SB_MAGIC) || (defined(HAVE_DECL_NTFS_SB_MAGIC) && HAVE_DECL_NTFS_SB_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((NTFS_SB_MAGIC) == (0x5346544e), "NTFS_SB_MAGIC != 0x5346544e");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define NTFS_SB_MAGIC 0x5346544e
+#endif
+#if defined(SOCKFS_MAGIC) || (defined(HAVE_DECL_SOCKFS_MAGIC) && HAVE_DECL_SOCKFS_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((SOCKFS_MAGIC) == (0x534f434b), "SOCKFS_MAGIC != 0x534f434b");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define SOCKFS_MAGIC 0x534f434b
+#endif
+#if defined(UFS_CIGAM) || (defined(HAVE_DECL_UFS_CIGAM) && HAVE_DECL_UFS_CIGAM)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((UFS_CIGAM) == (0x54190100), "UFS_CIGAM != 0x54190100");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define UFS_CIGAM 0x54190100
+#endif
+#if defined(VZFS_SUPER_MAGIC) || (defined(HAVE_DECL_VZFS_SUPER_MAGIC) && HAVE_DECL_VZFS_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((VZFS_SUPER_MAGIC) == (0x565a4653), "VZFS_SUPER_MAGIC != 0x565a4653");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define VZFS_SUPER_MAGIC 0x565a4653
+#endif
+#if defined(STACK_END_MAGIC) || (defined(HAVE_DECL_STACK_END_MAGIC) && HAVE_DECL_STACK_END_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((STACK_END_MAGIC) == (0x57ac6e9d), "STACK_END_MAGIC != 0x57ac6e9d");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define STACK_END_MAGIC 0x57ac6e9d
+#endif
+#if defined(ZSMALLOC_MAGIC) || (defined(HAVE_DECL_ZSMALLOC_MAGIC) && HAVE_DECL_ZSMALLOC_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ZSMALLOC_MAGIC) == (0x58295829), "ZSMALLOC_MAGIC != 0x58295829");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ZSMALLOC_MAGIC 0x58295829
+#endif
+#if defined(XFS_SB_MAGIC) || (defined(HAVE_DECL_XFS_SB_MAGIC) && HAVE_DECL_XFS_SB_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((XFS_SB_MAGIC) == (0x58465342), "XFS_SB_MAGIC != 0x58465342");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define XFS_SB_MAGIC 0x58465342
+#endif
+#if defined(AAFS_MAGIC) || (defined(HAVE_DECL_AAFS_MAGIC) && HAVE_DECL_AAFS_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AAFS_MAGIC) == (0x5a3c69f0), "AAFS_MAGIC != 0x5a3c69f0");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AAFS_MAGIC 0x5a3c69f0
+#endif
+#if defined(ZONEFS_MAGIC) || (defined(HAVE_DECL_ZONEFS_MAGIC) && HAVE_DECL_ZONEFS_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ZONEFS_MAGIC) == (0x5a4f4653), "ZONEFS_MAGIC != 0x5a4f4653");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ZONEFS_MAGIC 0x5a4f4653
+#endif
+#if defined(PSTOREFS_MAGIC) || (defined(HAVE_DECL_PSTOREFS_MAGIC) && HAVE_DECL_PSTOREFS_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PSTOREFS_MAGIC) == (0x6165676c), "PSTOREFS_MAGIC != 0x6165676c");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PSTOREFS_MAGIC 0x6165676c
+#endif
+#if defined(AUFS_SUPER_MAGIC) || (defined(HAVE_DECL_AUFS_SUPER_MAGIC) && HAVE_DECL_AUFS_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUFS_SUPER_MAGIC) == (0x61756673), "AUFS_SUPER_MAGIC != 0x61756673");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUFS_SUPER_MAGIC 0x61756673
+#endif
+#if defined(BDEVFS_MAGIC) || (defined(HAVE_DECL_BDEVFS_MAGIC) && HAVE_DECL_BDEVFS_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BDEVFS_MAGIC) == (0x62646576), "BDEVFS_MAGIC != 0x62646576");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BDEVFS_MAGIC 0x62646576
+#endif
+#if defined(CONFIGFS_MAGIC) || (defined(HAVE_DECL_CONFIGFS_MAGIC) && HAVE_DECL_CONFIGFS_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((CONFIGFS_MAGIC) == (0x62656570), "CONFIGFS_MAGIC != 0x62656570");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define CONFIGFS_MAGIC 0x62656570
+#endif
+#if defined(SYSFS_MAGIC) || (defined(HAVE_DECL_SYSFS_MAGIC) && HAVE_DECL_SYSFS_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((SYSFS_MAGIC) == (0x62656572), "SYSFS_MAGIC != 0x62656572");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define SYSFS_MAGIC 0x62656572
+#endif
+#if defined(CGROUP2_SUPER_MAGIC) || (defined(HAVE_DECL_CGROUP2_SUPER_MAGIC) && HAVE_DECL_CGROUP2_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((CGROUP2_SUPER_MAGIC) == (0x63677270), "CGROUP2_SUPER_MAGIC != 0x63677270");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define CGROUP2_SUPER_MAGIC 0x63677270
+#endif
+#if defined(DEBUGFS_MAGIC) || (defined(HAVE_DECL_DEBUGFS_MAGIC) && HAVE_DECL_DEBUGFS_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((DEBUGFS_MAGIC) == (0x64626720), "DEBUGFS_MAGIC != 0x64626720");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define DEBUGFS_MAGIC 0x64626720
+#endif
+#if defined(DAXFS_MAGIC) || (defined(HAVE_DECL_DAXFS_MAGIC) && HAVE_DECL_DAXFS_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((DAXFS_MAGIC) == (0x64646178), "DAXFS_MAGIC != 0x64646178");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define DAXFS_MAGIC 0x64646178
+#endif
+#if defined(FUSE_CTL_SUPER_MAGIC) || (defined(HAVE_DECL_FUSE_CTL_SUPER_MAGIC) && HAVE_DECL_FUSE_CTL_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((FUSE_CTL_SUPER_MAGIC) == (0x65735543), "FUSE_CTL_SUPER_MAGIC != 0x65735543");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define FUSE_CTL_SUPER_MAGIC 0x65735543
+#endif
+#if defined(FUSE_SUPER_MAGIC) || (defined(HAVE_DECL_FUSE_SUPER_MAGIC) && HAVE_DECL_FUSE_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((FUSE_SUPER_MAGIC) == (0x65735546), "FUSE_SUPER_MAGIC != 0x65735546");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define FUSE_SUPER_MAGIC 0x65735546
+#endif
+#if defined(QNX6_SUPER_MAGIC) || (defined(HAVE_DECL_QNX6_SUPER_MAGIC) && HAVE_DECL_QNX6_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((QNX6_SUPER_MAGIC) == (0x68191122), "QNX6_SUPER_MAGIC != 0x68191122");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define QNX6_SUPER_MAGIC 0x68191122
+#endif
+#if defined(AFS_FS_MAGIC) || (defined(HAVE_DECL_AFS_FS_MAGIC) && HAVE_DECL_AFS_FS_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AFS_FS_MAGIC) == (0x6b414653), "AFS_FS_MAGIC != 0x6b414653");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AFS_FS_MAGIC 0x6b414653
+#endif
+#if defined(BINDERFS_SUPER_MAGIC) || (defined(HAVE_DECL_BINDERFS_SUPER_MAGIC) && HAVE_DECL_BINDERFS_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BINDERFS_SUPER_MAGIC) == (0x6c6f6f70), "BINDERFS_SUPER_MAGIC != 0x6c6f6f70");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BINDERFS_SUPER_MAGIC 0x6c6f6f70
+#endif
+#if defined(NSFS_MAGIC) || (defined(HAVE_DECL_NSFS_MAGIC) && HAVE_DECL_NSFS_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((NSFS_MAGIC) == (0x6e736673), "NSFS_MAGIC != 0x6e736673");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define NSFS_MAGIC 0x6e736673
+#endif
+#if defined(SECURITYFS_MAGIC) || (defined(HAVE_DECL_SECURITYFS_MAGIC) && HAVE_DECL_SECURITYFS_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((SECURITYFS_MAGIC) == (0x73636673), "SECURITYFS_MAGIC != 0x73636673");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define SECURITYFS_MAGIC 0x73636673
+#endif
+#if defined(SQUASHFS_MAGIC) || (defined(HAVE_DECL_SQUASHFS_MAGIC) && HAVE_DECL_SQUASHFS_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((SQUASHFS_MAGIC) == (0x73717368), "SQUASHFS_MAGIC != 0x73717368");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define SQUASHFS_MAGIC 0x73717368
+#endif
+#if defined(BTRFS_TEST_MAGIC) || (defined(HAVE_DECL_BTRFS_TEST_MAGIC) && HAVE_DECL_BTRFS_TEST_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BTRFS_TEST_MAGIC) == (0x73727279), "BTRFS_TEST_MAGIC != 0x73727279");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BTRFS_TEST_MAGIC 0x73727279
+#endif
+#if defined(CODA_SUPER_MAGIC) || (defined(HAVE_DECL_CODA_SUPER_MAGIC) && HAVE_DECL_CODA_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((CODA_SUPER_MAGIC) == (0x73757245), "CODA_SUPER_MAGIC != 0x73757245");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define CODA_SUPER_MAGIC 0x73757245
+#endif
+#if defined(OCFS2_SUPER_MAGIC) || (defined(HAVE_DECL_OCFS2_SUPER_MAGIC) && HAVE_DECL_OCFS2_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((OCFS2_SUPER_MAGIC) == (0x7461636f), "OCFS2_SUPER_MAGIC != 0x7461636f");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define OCFS2_SUPER_MAGIC 0x7461636f
+#endif
+#if defined(TRACEFS_MAGIC) || (defined(HAVE_DECL_TRACEFS_MAGIC) && HAVE_DECL_TRACEFS_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TRACEFS_MAGIC) == (0x74726163), "TRACEFS_MAGIC != 0x74726163");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TRACEFS_MAGIC 0x74726163
+#endif
+#if defined(OVERLAYFS_SUPER_MAGIC) || (defined(HAVE_DECL_OVERLAYFS_SUPER_MAGIC) && HAVE_DECL_OVERLAYFS_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((OVERLAYFS_SUPER_MAGIC) == (0x794c7630), "OVERLAYFS_SUPER_MAGIC != 0x794c7630");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define OVERLAYFS_SUPER_MAGIC 0x794c7630
+#endif
+#if defined(RAMFS_MAGIC) || (defined(HAVE_DECL_RAMFS_MAGIC) && HAVE_DECL_RAMFS_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((RAMFS_MAGIC) == (0x858458f6), "RAMFS_MAGIC != 0x858458f6");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define RAMFS_MAGIC 0x858458f6
+#endif
+#if defined(BTRFS_SUPER_MAGIC) || (defined(HAVE_DECL_BTRFS_SUPER_MAGIC) && HAVE_DECL_BTRFS_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BTRFS_SUPER_MAGIC) == (0x9123683e), "BTRFS_SUPER_MAGIC != 0x9123683e");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BTRFS_SUPER_MAGIC 0x9123683e
+#endif
+#if defined(HUGETLBFS_MAGIC) || (defined(HAVE_DECL_HUGETLBFS_MAGIC) && HAVE_DECL_HUGETLBFS_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((HUGETLBFS_MAGIC) == (0x958458f6), "HUGETLBFS_MAGIC != 0x958458f6");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define HUGETLBFS_MAGIC 0x958458f6
+#endif
+#if defined(VXFS_SUPER_MAGIC) || (defined(HAVE_DECL_VXFS_SUPER_MAGIC) && HAVE_DECL_VXFS_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((VXFS_SUPER_MAGIC) == (0xa501fcf5), "VXFS_SUPER_MAGIC != 0xa501fcf5");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define VXFS_SUPER_MAGIC 0xa501fcf5
+#endif
+#if defined(XENFS_SUPER_MAGIC) || (defined(HAVE_DECL_XENFS_SUPER_MAGIC) && HAVE_DECL_XENFS_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((XENFS_SUPER_MAGIC) == (0xabba1974), "XENFS_SUPER_MAGIC != 0xabba1974");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define XENFS_SUPER_MAGIC 0xabba1974
+#endif
+#if defined(PPC_CMM_MAGIC) || (defined(HAVE_DECL_PPC_CMM_MAGIC) && HAVE_DECL_PPC_CMM_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PPC_CMM_MAGIC) == (0xc7571590), "PPC_CMM_MAGIC != 0xc7571590");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PPC_CMM_MAGIC 0xc7571590
+#endif
+#if defined(LOGFS_MAGIC) || (defined(HAVE_DECL_LOGFS_MAGIC) && HAVE_DECL_LOGFS_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((LOGFS_MAGIC) == (0xc97e8168), "LOGFS_MAGIC != 0xc97e8168");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define LOGFS_MAGIC 0xc97e8168
+#endif
+#if defined(BPF_FS_MAGIC) || (defined(HAVE_DECL_BPF_FS_MAGIC) && HAVE_DECL_BPF_FS_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((BPF_FS_MAGIC) == (0xcafe4a11), "BPF_FS_MAGIC != 0xcafe4a11");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define BPF_FS_MAGIC 0xcafe4a11
+#endif
+#if defined(EFIVARFS_MAGIC) || (defined(HAVE_DECL_EFIVARFS_MAGIC) && HAVE_DECL_EFIVARFS_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EFIVARFS_MAGIC) == (0xde5e81e4), "EFIVARFS_MAGIC != 0xde5e81e4");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EFIVARFS_MAGIC 0xde5e81e4
+#endif
+#if defined(EROFS_SUPER_MAGIC_V1) || (defined(HAVE_DECL_EROFS_SUPER_MAGIC_V1) && HAVE_DECL_EROFS_SUPER_MAGIC_V1)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((EROFS_SUPER_MAGIC_V1) == (0xe0f5e1e2), "EROFS_SUPER_MAGIC_V1 != 0xe0f5e1e2");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define EROFS_SUPER_MAGIC_V1 0xe0f5e1e2
+#endif
+#if defined(F2FS_SUPER_MAGIC) || (defined(HAVE_DECL_F2FS_SUPER_MAGIC) && HAVE_DECL_F2FS_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((F2FS_SUPER_MAGIC) == (0xf2f52010), "F2FS_SUPER_MAGIC != 0xf2f52010");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define F2FS_SUPER_MAGIC 0xf2f52010
+#endif
+#if defined(SELINUX_MAGIC) || (defined(HAVE_DECL_SELINUX_MAGIC) && HAVE_DECL_SELINUX_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((SELINUX_MAGIC) == (0xf97cff8c), "SELINUX_MAGIC != 0xf97cff8c");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define SELINUX_MAGIC 0xf97cff8c
+#endif
+#if defined(HPFS_SUPER_MAGIC) || (defined(HAVE_DECL_HPFS_SUPER_MAGIC) && HAVE_DECL_HPFS_SUPER_MAGIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((HPFS_SUPER_MAGIC) == (0xf995e849), "HPFS_SUPER_MAGIC != 0xf995e849");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define HPFS_SUPER_MAGIC 0xf995e849
+#endif
+#if defined(SMB2_MAGIC_NUMBER) || (defined(HAVE_DECL_SMB2_MAGIC_NUMBER) && HAVE_DECL_SMB2_MAGIC_NUMBER)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((SMB2_MAGIC_NUMBER) == (0xfe534d42), "SMB2_MAGIC_NUMBER != 0xfe534d42");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define SMB2_MAGIC_NUMBER 0xfe534d42
+#endif
+#if defined(CIFS_MAGIC_NUMBER) || (defined(HAVE_DECL_CIFS_MAGIC_NUMBER) && HAVE_DECL_CIFS_MAGIC_NUMBER)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((CIFS_MAGIC_NUMBER) == (0xff534d42), "CIFS_MAGIC_NUMBER != 0xff534d42");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define CIFS_MAGIC_NUMBER 0xff534d42
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
 
 # else
 
-static
-const struct xlat fsmagic[] = {
-
-{ 0x0000002f,  "QNX4_SUPER_MAGIC"      },
-{ 0x00000187,  "AUTOFS_SUPER_MAGIC"    },
-{ 0x00001373,  "DEVFS_SUPER_MAGIC"     },
-{ 0x0000137d,  "EXT_SUPER_MAGIC"       },
-{ 0x0000137f,  "MINIX_SUPER_MAGIC"     },
-{ 0x0000138f,  "MINIX_SUPER_MAGIC2"    },
-{ 0x00001cd1,  "DEVPTS_SUPER_MAGIC"    },
-{ 0x00002468,  "MINIX2_SUPER_MAGIC"    },
-{ 0x00002478,  "MINIX2_SUPER_MAGIC2"   },
-{ 0x00003434,  "NILFS_SUPER_MAGIC"     },
-{ 0x00004244,  "HFS_SUPER_MAGIC"       },
-{ 0x0000482b,  "HFSPLUS_SUPER_MAGIC"   },
-{ 0x00004d44,  "MSDOS_SUPER_MAGIC"     },
-{ 0x00004d5a,  "MINIX3_SUPER_MAGIC"    },
-{ 0x0000517b,  "SMB_SUPER_MAGIC"       },
-{ 0x0000564c,  "NCP_SUPER_MAGIC"       },
-{ 0x00005df5,  "EXOFS_SUPER_MAGIC"     },
-{ 0x00006969,  "NFS_SUPER_MAGIC"       },
-{ 0x00007275,  "ROMFS_MAGIC"           },
-{ 0x000072b6,  "JFFS2_SUPER_MAGIC"     },
-{ 0x00009660,  "ISOFS_SUPER_MAGIC"     },
-{ 0x00009fa0,  "PROC_SUPER_MAGIC"      },
-{ 0x00009fa1,  "OPENPROM_SUPER_MAGIC"  },
-{ 0x00009fa2,  "USBDEVICE_SUPER_MAGIC" },
-{ 0x0000adf5,  "ADFS_SUPER_MAGIC"      },
-{ 0x0000adff,  "AFFS_SUPER_MAGIC"      },
-{ 0x0000ef51,  "EXT2_OLD_SUPER_MAGIC"  },
-{ 0x0000ef53,  "EXT2_SUPER_MAGIC"      },
-{ 0x0000f15f,  "ECRYPTFS_SUPER_MAGIC"  },
-{ 0x00011954,  "UFS_MAGIC"             },
-{ 0x0027e0eb,  "CGROUP_SUPER_MAGIC"    },
-{ 0x00414a53,  "EFS_SUPER_MAGIC"       },
-{ 0x00c0ffee,  "HOSTFS_SUPER_MAGIC"    },
-{ 0x00c36400,  "CEPH_SUPER_MAGIC"      },
-{ 0x01021994,  "TMPFS_MAGIC"           },
-{ 0x01021997,  "V9FS_MAGIC"            },
-{ 0x01161970,  "GFS2_MAGIC"            },
-{ 0x012fd16d,  "XIAFS_SUPER_MAGIC"     },
-{ 0x012ff7b4,  "XENIX_SUPER_MAGIC"     },
-{ 0x012ff7b5,  "SYSV4_SUPER_MAGIC"     },
-{ 0x012ff7b6,  "SYSV2_SUPER_MAGIC"     },
-{ 0x012ff7b7,  "COH_SUPER_MAGIC"       },
-{ 0x02011994,  "SHMFS_SUPER_MAGIC"     },
-{ 0x09041934,  "ANON_INODE_FS_MAGIC"   },
-{ 0x0bad1dea,  "FUTEXFS_SUPER_MAGIC"   },
-{ 0x11307854,  "MTD_INODE_FS_MAGIC"    },
-{ 0x13661366,  "BALLOON_KVM_MAGIC"     },
-{ 0x15013346,  "UDF_SUPER_MAGIC"       },
-{ 0x1badface,  "BFS_MAGIC"             },
-{ 0x24051905,  "UBIFS_SUPER_MAGIC"     },
-{ 0x28cd3d45,  "CRAMFS_MAGIC"          },
-{ 0x2fc12fc1,  "ZFS_SUPER_MAGIC"       },
-{ 0x3153464a,  "JFS_SUPER_MAGIC"       },
-{ 0x42465331,  "BEFS_SUPER_MAGIC"      },
-{ 0x42494e4d,  "BINFMTFS_MAGIC"        },
-{ 0x43415d53,  "SMACK_MAGIC"           },
-{ 0x453dcd28,  "CRAMFS_MAGIC_WEND"     },
-{ 0x47504653,  "GPFS_SUPER_MAGIC"      },
-{ 0x50495045,  "PIPEFS_MAGIC"          },
-{ 0x52654973,  "REISERFS_SUPER_MAGIC"  },
-{ 0x5346414f,  "AFS_SUPER_MAGIC"       },
-{ 0x5346544e,  "NTFS_SB_MAGIC"         },
-{ 0x534f434b,  "SOCKFS_MAGIC"          },
-{ 0x54190100,  "UFS_CIGAM"             },
-{ 0x565a4653,  "VZFS_SUPER_MAGIC"      },
-{ 0x57ac6e9d,  "STACK_END_MAGIC"       },
-{ 0x58295829,  "ZSMALLOC_MAGIC"        },
-{ 0x58465342,  "XFS_SB_MAGIC"          },
-{ 0x5a3c69f0,  "AAFS_MAGIC"            },
-{ 0x6165676c,  "PSTOREFS_MAGIC"        },
-{ 0x61756673,  "AUFS_SUPER_MAGIC"      },
-{ 0x62646576,  "BDEVFS_MAGIC"          },
-{ 0x62656570,  "CONFIGFS_MAGIC"        },
-{ 0x62656572,  "SYSFS_MAGIC"           },
-{ 0x63677270,  "CGROUP2_SUPER_MAGIC"   },
-{ 0x64626720,  "DEBUGFS_MAGIC"         },
-{ 0x64646178,  "DAXFS_MAGIC"           },
-{ 0x65735543,  "FUSE_CTL_SUPER_MAGIC"  },
-{ 0x65735546,  "FUSE_SUPER_MAGIC"      },
-{ 0x68191122,  "QNX6_SUPER_MAGIC"      },
-{ 0x6b414653,  "AFS_FS_MAGIC"          },
-{ 0x6c6f6f70,  "BINDERFS_SUPER_MAGIC"  },
-{ 0x6e736673,  "NSFS_MAGIC"            },
-{ 0x73636673,  "SECURITYFS_MAGIC"      },
-{ 0x73717368,  "SQUASHFS_MAGIC"        },
-{ 0x73727279,  "BTRFS_TEST_MAGIC"      },
-{ 0x73757245,  "CODA_SUPER_MAGIC"      },
-{ 0x7461636f,  "OCFS2_SUPER_MAGIC"     },
-{ 0x74726163,  "TRACEFS_MAGIC"         },
-{ 0x794c7630,  "OVERLAYFS_SUPER_MAGIC" },
-{ 0x858458f6,  "RAMFS_MAGIC"           },
-{ 0x9123683e,  "BTRFS_SUPER_MAGIC"     },
-{ 0x958458f6,  "HUGETLBFS_MAGIC"       },
-{ 0xa501fcf5,  "VXFS_SUPER_MAGIC"      },
-{ 0xabba1974,  "XENFS_SUPER_MAGIC"     },
-{ 0xc97e8168,  "LOGFS_MAGIC"           },
-{ 0xcafe4a11,  "BPF_FS_MAGIC"          },
-{ 0xde5e81e4,  "EFIVARFS_MAGIC"        },
-{ 0xf2f52010,  "F2FS_SUPER_MAGIC"      },
-{ 0xf97cff8c,  "SELINUX_MAGIC"         },
-{ 0xf995e849,  "HPFS_SUPER_MAGIC"      },
-{ 0xfe534d42,  "SMB2_MAGIC_NUMBER"     },
-{ 0xff534d42,  "CIFS_MAGIC_NUMBER"     },
- XLAT_END
+static const struct xlat_data fsmagic_xdata[] = {
+ XLAT(QNX4_SUPER_MAGIC),
+ #define XLAT_VAL_0 ((unsigned) (QNX4_SUPER_MAGIC))
+ #define XLAT_STR_0 STRINGIFY(QNX4_SUPER_MAGIC)
+ XLAT(Z3FOLD_MAGIC),
+ #define XLAT_VAL_1 ((unsigned) (Z3FOLD_MAGIC))
+ #define XLAT_STR_1 STRINGIFY(Z3FOLD_MAGIC)
+ XLAT(AUTOFS_SUPER_MAGIC),
+ #define XLAT_VAL_2 ((unsigned) (AUTOFS_SUPER_MAGIC))
+ #define XLAT_STR_2 STRINGIFY(AUTOFS_SUPER_MAGIC)
+ XLAT(DEVFS_SUPER_MAGIC),
+ #define XLAT_VAL_3 ((unsigned) (DEVFS_SUPER_MAGIC))
+ #define XLAT_STR_3 STRINGIFY(DEVFS_SUPER_MAGIC)
+ XLAT(EXT_SUPER_MAGIC),
+ #define XLAT_VAL_4 ((unsigned) (EXT_SUPER_MAGIC))
+ #define XLAT_STR_4 STRINGIFY(EXT_SUPER_MAGIC)
+ XLAT(MINIX_SUPER_MAGIC),
+ #define XLAT_VAL_5 ((unsigned) (MINIX_SUPER_MAGIC))
+ #define XLAT_STR_5 STRINGIFY(MINIX_SUPER_MAGIC)
+ XLAT(MINIX_SUPER_MAGIC2),
+ #define XLAT_VAL_6 ((unsigned) (MINIX_SUPER_MAGIC2))
+ #define XLAT_STR_6 STRINGIFY(MINIX_SUPER_MAGIC2)
+ XLAT(DEVPTS_SUPER_MAGIC),
+ #define XLAT_VAL_7 ((unsigned) (DEVPTS_SUPER_MAGIC))
+ #define XLAT_STR_7 STRINGIFY(DEVPTS_SUPER_MAGIC)
+ XLAT(MINIX2_SUPER_MAGIC),
+ #define XLAT_VAL_8 ((unsigned) (MINIX2_SUPER_MAGIC))
+ #define XLAT_STR_8 STRINGIFY(MINIX2_SUPER_MAGIC)
+ XLAT(MINIX2_SUPER_MAGIC2),
+ #define XLAT_VAL_9 ((unsigned) (MINIX2_SUPER_MAGIC2))
+ #define XLAT_STR_9 STRINGIFY(MINIX2_SUPER_MAGIC2)
+ XLAT(NILFS_SUPER_MAGIC),
+ #define XLAT_VAL_10 ((unsigned) (NILFS_SUPER_MAGIC))
+ #define XLAT_STR_10 STRINGIFY(NILFS_SUPER_MAGIC)
+ XLAT(HFS_SUPER_MAGIC),
+ #define XLAT_VAL_11 ((unsigned) (HFS_SUPER_MAGIC))
+ #define XLAT_STR_11 STRINGIFY(HFS_SUPER_MAGIC)
+ XLAT(HFSPLUS_SUPER_MAGIC),
+ #define XLAT_VAL_12 ((unsigned) (HFSPLUS_SUPER_MAGIC))
+ #define XLAT_STR_12 STRINGIFY(HFSPLUS_SUPER_MAGIC)
+ XLAT(MSDOS_SUPER_MAGIC),
+ #define XLAT_VAL_13 ((unsigned) (MSDOS_SUPER_MAGIC))
+ #define XLAT_STR_13 STRINGIFY(MSDOS_SUPER_MAGIC)
+ XLAT(MINIX3_SUPER_MAGIC),
+ #define XLAT_VAL_14 ((unsigned) (MINIX3_SUPER_MAGIC))
+ #define XLAT_STR_14 STRINGIFY(MINIX3_SUPER_MAGIC)
+ XLAT(SMB_SUPER_MAGIC),
+ #define XLAT_VAL_15 ((unsigned) (SMB_SUPER_MAGIC))
+ #define XLAT_STR_15 STRINGIFY(SMB_SUPER_MAGIC)
+ XLAT(NCP_SUPER_MAGIC),
+ #define XLAT_VAL_16 ((unsigned) (NCP_SUPER_MAGIC))
+ #define XLAT_STR_16 STRINGIFY(NCP_SUPER_MAGIC)
+ XLAT(EXOFS_SUPER_MAGIC),
+ #define XLAT_VAL_17 ((unsigned) (EXOFS_SUPER_MAGIC))
+ #define XLAT_STR_17 STRINGIFY(EXOFS_SUPER_MAGIC)
+ XLAT(NFS_SUPER_MAGIC),
+ #define XLAT_VAL_18 ((unsigned) (NFS_SUPER_MAGIC))
+ #define XLAT_STR_18 STRINGIFY(NFS_SUPER_MAGIC)
+ XLAT(ROMFS_MAGIC),
+ #define XLAT_VAL_19 ((unsigned) (ROMFS_MAGIC))
+ #define XLAT_STR_19 STRINGIFY(ROMFS_MAGIC)
+ XLAT(JFFS2_SUPER_MAGIC),
+ #define XLAT_VAL_20 ((unsigned) (JFFS2_SUPER_MAGIC))
+ #define XLAT_STR_20 STRINGIFY(JFFS2_SUPER_MAGIC)
+ XLAT(ISOFS_SUPER_MAGIC),
+ #define XLAT_VAL_21 ((unsigned) (ISOFS_SUPER_MAGIC))
+ #define XLAT_STR_21 STRINGIFY(ISOFS_SUPER_MAGIC)
+ XLAT(PROC_SUPER_MAGIC),
+ #define XLAT_VAL_22 ((unsigned) (PROC_SUPER_MAGIC))
+ #define XLAT_STR_22 STRINGIFY(PROC_SUPER_MAGIC)
+ XLAT(OPENPROM_SUPER_MAGIC),
+ #define XLAT_VAL_23 ((unsigned) (OPENPROM_SUPER_MAGIC))
+ #define XLAT_STR_23 STRINGIFY(OPENPROM_SUPER_MAGIC)
+ XLAT(USBDEVICE_SUPER_MAGIC),
+ #define XLAT_VAL_24 ((unsigned) (USBDEVICE_SUPER_MAGIC))
+ #define XLAT_STR_24 STRINGIFY(USBDEVICE_SUPER_MAGIC)
+ XLAT(ADFS_SUPER_MAGIC),
+ #define XLAT_VAL_25 ((unsigned) (ADFS_SUPER_MAGIC))
+ #define XLAT_STR_25 STRINGIFY(ADFS_SUPER_MAGIC)
+ XLAT(AFFS_SUPER_MAGIC),
+ #define XLAT_VAL_26 ((unsigned) (AFFS_SUPER_MAGIC))
+ #define XLAT_STR_26 STRINGIFY(AFFS_SUPER_MAGIC)
+ XLAT(EXT2_OLD_SUPER_MAGIC),
+ #define XLAT_VAL_27 ((unsigned) (EXT2_OLD_SUPER_MAGIC))
+ #define XLAT_STR_27 STRINGIFY(EXT2_OLD_SUPER_MAGIC)
+ XLAT(EXT2_SUPER_MAGIC),
+ #define XLAT_VAL_28 ((unsigned) (EXT2_SUPER_MAGIC))
+ #define XLAT_STR_28 STRINGIFY(EXT2_SUPER_MAGIC)
+ XLAT(ECRYPTFS_SUPER_MAGIC),
+ #define XLAT_VAL_29 ((unsigned) (ECRYPTFS_SUPER_MAGIC))
+ #define XLAT_STR_29 STRINGIFY(ECRYPTFS_SUPER_MAGIC)
+ XLAT(UFS_MAGIC),
+ #define XLAT_VAL_30 ((unsigned) (UFS_MAGIC))
+ #define XLAT_STR_30 STRINGIFY(UFS_MAGIC)
+ XLAT(CGROUP_SUPER_MAGIC),
+ #define XLAT_VAL_31 ((unsigned) (CGROUP_SUPER_MAGIC))
+ #define XLAT_STR_31 STRINGIFY(CGROUP_SUPER_MAGIC)
+ XLAT(EFS_SUPER_MAGIC),
+ #define XLAT_VAL_32 ((unsigned) (EFS_SUPER_MAGIC))
+ #define XLAT_STR_32 STRINGIFY(EFS_SUPER_MAGIC)
+ XLAT(HOSTFS_SUPER_MAGIC),
+ #define XLAT_VAL_33 ((unsigned) (HOSTFS_SUPER_MAGIC))
+ #define XLAT_STR_33 STRINGIFY(HOSTFS_SUPER_MAGIC)
+ XLAT(CEPH_SUPER_MAGIC),
+ #define XLAT_VAL_34 ((unsigned) (CEPH_SUPER_MAGIC))
+ #define XLAT_STR_34 STRINGIFY(CEPH_SUPER_MAGIC)
+ XLAT(TMPFS_MAGIC),
+ #define XLAT_VAL_35 ((unsigned) (TMPFS_MAGIC))
+ #define XLAT_STR_35 STRINGIFY(TMPFS_MAGIC)
+ XLAT(V9FS_MAGIC),
+ #define XLAT_VAL_36 ((unsigned) (V9FS_MAGIC))
+ #define XLAT_STR_36 STRINGIFY(V9FS_MAGIC)
+ XLAT(GFS2_MAGIC),
+ #define XLAT_VAL_37 ((unsigned) (GFS2_MAGIC))
+ #define XLAT_STR_37 STRINGIFY(GFS2_MAGIC)
+ XLAT(XIAFS_SUPER_MAGIC),
+ #define XLAT_VAL_38 ((unsigned) (XIAFS_SUPER_MAGIC))
+ #define XLAT_STR_38 STRINGIFY(XIAFS_SUPER_MAGIC)
+ XLAT(XENIX_SUPER_MAGIC),
+ #define XLAT_VAL_39 ((unsigned) (XENIX_SUPER_MAGIC))
+ #define XLAT_STR_39 STRINGIFY(XENIX_SUPER_MAGIC)
+ XLAT(SYSV4_SUPER_MAGIC),
+ #define XLAT_VAL_40 ((unsigned) (SYSV4_SUPER_MAGIC))
+ #define XLAT_STR_40 STRINGIFY(SYSV4_SUPER_MAGIC)
+ XLAT(SYSV2_SUPER_MAGIC),
+ #define XLAT_VAL_41 ((unsigned) (SYSV2_SUPER_MAGIC))
+ #define XLAT_STR_41 STRINGIFY(SYSV2_SUPER_MAGIC)
+ XLAT(COH_SUPER_MAGIC),
+ #define XLAT_VAL_42 ((unsigned) (COH_SUPER_MAGIC))
+ #define XLAT_STR_42 STRINGIFY(COH_SUPER_MAGIC)
+ XLAT(SHMFS_SUPER_MAGIC),
+ #define XLAT_VAL_43 ((unsigned) (SHMFS_SUPER_MAGIC))
+ #define XLAT_STR_43 STRINGIFY(SHMFS_SUPER_MAGIC)
+ XLAT(ANON_INODE_FS_MAGIC),
+ #define XLAT_VAL_44 ((unsigned) (ANON_INODE_FS_MAGIC))
+ #define XLAT_STR_44 STRINGIFY(ANON_INODE_FS_MAGIC)
+ XLAT(FUTEXFS_SUPER_MAGIC),
+ #define XLAT_VAL_45 ((unsigned) (FUTEXFS_SUPER_MAGIC))
+ #define XLAT_STR_45 STRINGIFY(FUTEXFS_SUPER_MAGIC)
+ XLAT(MTD_INODE_FS_MAGIC),
+ #define XLAT_VAL_46 ((unsigned) (MTD_INODE_FS_MAGIC))
+ #define XLAT_STR_46 STRINGIFY(MTD_INODE_FS_MAGIC)
+ XLAT(BALLOON_KVM_MAGIC),
+ #define XLAT_VAL_47 ((unsigned) (BALLOON_KVM_MAGIC))
+ #define XLAT_STR_47 STRINGIFY(BALLOON_KVM_MAGIC)
+ XLAT(UDF_SUPER_MAGIC),
+ #define XLAT_VAL_48 ((unsigned) (UDF_SUPER_MAGIC))
+ #define XLAT_STR_48 STRINGIFY(UDF_SUPER_MAGIC)
+ XLAT(BFS_MAGIC),
+ #define XLAT_VAL_49 ((unsigned) (BFS_MAGIC))
+ #define XLAT_STR_49 STRINGIFY(BFS_MAGIC)
+ XLAT(UBIFS_SUPER_MAGIC),
+ #define XLAT_VAL_50 ((unsigned) (UBIFS_SUPER_MAGIC))
+ #define XLAT_STR_50 STRINGIFY(UBIFS_SUPER_MAGIC)
+ XLAT(CRAMFS_MAGIC),
+ #define XLAT_VAL_51 ((unsigned) (CRAMFS_MAGIC))
+ #define XLAT_STR_51 STRINGIFY(CRAMFS_MAGIC)
+ XLAT(ZFS_SUPER_MAGIC),
+ #define XLAT_VAL_52 ((unsigned) (ZFS_SUPER_MAGIC))
+ #define XLAT_STR_52 STRINGIFY(ZFS_SUPER_MAGIC)
+ XLAT(JFS_SUPER_MAGIC),
+ #define XLAT_VAL_53 ((unsigned) (JFS_SUPER_MAGIC))
+ #define XLAT_STR_53 STRINGIFY(JFS_SUPER_MAGIC)
+ XLAT(BEFS_SUPER_MAGIC),
+ #define XLAT_VAL_54 ((unsigned) (BEFS_SUPER_MAGIC))
+ #define XLAT_STR_54 STRINGIFY(BEFS_SUPER_MAGIC)
+ XLAT(BINFMTFS_MAGIC),
+ #define XLAT_VAL_55 ((unsigned) (BINFMTFS_MAGIC))
+ #define XLAT_STR_55 STRINGIFY(BINFMTFS_MAGIC)
+ XLAT(SMACK_MAGIC),
+ #define XLAT_VAL_56 ((unsigned) (SMACK_MAGIC))
+ #define XLAT_STR_56 STRINGIFY(SMACK_MAGIC)
+ XLAT(DMA_BUF_MAGIC),
+ #define XLAT_VAL_57 ((unsigned) (DMA_BUF_MAGIC))
+ #define XLAT_STR_57 STRINGIFY(DMA_BUF_MAGIC)
+ XLAT(CRAMFS_MAGIC_WEND),
+ #define XLAT_VAL_58 ((unsigned) (CRAMFS_MAGIC_WEND))
+ #define XLAT_STR_58 STRINGIFY(CRAMFS_MAGIC_WEND)
+ XLAT(DEVMEM_MAGIC),
+ #define XLAT_VAL_59 ((unsigned) (DEVMEM_MAGIC))
+ #define XLAT_STR_59 STRINGIFY(DEVMEM_MAGIC)
+ XLAT(GPFS_SUPER_MAGIC),
+ #define XLAT_VAL_60 ((unsigned) (GPFS_SUPER_MAGIC))
+ #define XLAT_STR_60 STRINGIFY(GPFS_SUPER_MAGIC)
+ XLAT(PIPEFS_MAGIC),
+ #define XLAT_VAL_61 ((unsigned) (PIPEFS_MAGIC))
+ #define XLAT_STR_61 STRINGIFY(PIPEFS_MAGIC)
+ XLAT(REISERFS_SUPER_MAGIC),
+ #define XLAT_VAL_62 ((unsigned) (REISERFS_SUPER_MAGIC))
+ #define XLAT_STR_62 STRINGIFY(REISERFS_SUPER_MAGIC)
+ XLAT(AFS_SUPER_MAGIC),
+ #define XLAT_VAL_63 ((unsigned) (AFS_SUPER_MAGIC))
+ #define XLAT_STR_63 STRINGIFY(AFS_SUPER_MAGIC)
+ XLAT(NTFS_SB_MAGIC),
+ #define XLAT_VAL_64 ((unsigned) (NTFS_SB_MAGIC))
+ #define XLAT_STR_64 STRINGIFY(NTFS_SB_MAGIC)
+ XLAT(SOCKFS_MAGIC),
+ #define XLAT_VAL_65 ((unsigned) (SOCKFS_MAGIC))
+ #define XLAT_STR_65 STRINGIFY(SOCKFS_MAGIC)
+ XLAT(UFS_CIGAM),
+ #define XLAT_VAL_66 ((unsigned) (UFS_CIGAM))
+ #define XLAT_STR_66 STRINGIFY(UFS_CIGAM)
+ XLAT(VZFS_SUPER_MAGIC),
+ #define XLAT_VAL_67 ((unsigned) (VZFS_SUPER_MAGIC))
+ #define XLAT_STR_67 STRINGIFY(VZFS_SUPER_MAGIC)
+ XLAT(STACK_END_MAGIC),
+ #define XLAT_VAL_68 ((unsigned) (STACK_END_MAGIC))
+ #define XLAT_STR_68 STRINGIFY(STACK_END_MAGIC)
+ XLAT(ZSMALLOC_MAGIC),
+ #define XLAT_VAL_69 ((unsigned) (ZSMALLOC_MAGIC))
+ #define XLAT_STR_69 STRINGIFY(ZSMALLOC_MAGIC)
+ XLAT(XFS_SB_MAGIC),
+ #define XLAT_VAL_70 ((unsigned) (XFS_SB_MAGIC))
+ #define XLAT_STR_70 STRINGIFY(XFS_SB_MAGIC)
+ XLAT(AAFS_MAGIC),
+ #define XLAT_VAL_71 ((unsigned) (AAFS_MAGIC))
+ #define XLAT_STR_71 STRINGIFY(AAFS_MAGIC)
+ XLAT(ZONEFS_MAGIC),
+ #define XLAT_VAL_72 ((unsigned) (ZONEFS_MAGIC))
+ #define XLAT_STR_72 STRINGIFY(ZONEFS_MAGIC)
+ XLAT(PSTOREFS_MAGIC),
+ #define XLAT_VAL_73 ((unsigned) (PSTOREFS_MAGIC))
+ #define XLAT_STR_73 STRINGIFY(PSTOREFS_MAGIC)
+ XLAT(AUFS_SUPER_MAGIC),
+ #define XLAT_VAL_74 ((unsigned) (AUFS_SUPER_MAGIC))
+ #define XLAT_STR_74 STRINGIFY(AUFS_SUPER_MAGIC)
+ XLAT(BDEVFS_MAGIC),
+ #define XLAT_VAL_75 ((unsigned) (BDEVFS_MAGIC))
+ #define XLAT_STR_75 STRINGIFY(BDEVFS_MAGIC)
+ XLAT(CONFIGFS_MAGIC),
+ #define XLAT_VAL_76 ((unsigned) (CONFIGFS_MAGIC))
+ #define XLAT_STR_76 STRINGIFY(CONFIGFS_MAGIC)
+ XLAT(SYSFS_MAGIC),
+ #define XLAT_VAL_77 ((unsigned) (SYSFS_MAGIC))
+ #define XLAT_STR_77 STRINGIFY(SYSFS_MAGIC)
+ XLAT(CGROUP2_SUPER_MAGIC),
+ #define XLAT_VAL_78 ((unsigned) (CGROUP2_SUPER_MAGIC))
+ #define XLAT_STR_78 STRINGIFY(CGROUP2_SUPER_MAGIC)
+ XLAT(DEBUGFS_MAGIC),
+ #define XLAT_VAL_79 ((unsigned) (DEBUGFS_MAGIC))
+ #define XLAT_STR_79 STRINGIFY(DEBUGFS_MAGIC)
+ XLAT(DAXFS_MAGIC),
+ #define XLAT_VAL_80 ((unsigned) (DAXFS_MAGIC))
+ #define XLAT_STR_80 STRINGIFY(DAXFS_MAGIC)
+ XLAT(FUSE_CTL_SUPER_MAGIC),
+ #define XLAT_VAL_81 ((unsigned) (FUSE_CTL_SUPER_MAGIC))
+ #define XLAT_STR_81 STRINGIFY(FUSE_CTL_SUPER_MAGIC)
+ XLAT(FUSE_SUPER_MAGIC),
+ #define XLAT_VAL_82 ((unsigned) (FUSE_SUPER_MAGIC))
+ #define XLAT_STR_82 STRINGIFY(FUSE_SUPER_MAGIC)
+ XLAT(QNX6_SUPER_MAGIC),
+ #define XLAT_VAL_83 ((unsigned) (QNX6_SUPER_MAGIC))
+ #define XLAT_STR_83 STRINGIFY(QNX6_SUPER_MAGIC)
+ XLAT(AFS_FS_MAGIC),
+ #define XLAT_VAL_84 ((unsigned) (AFS_FS_MAGIC))
+ #define XLAT_STR_84 STRINGIFY(AFS_FS_MAGIC)
+ XLAT(BINDERFS_SUPER_MAGIC),
+ #define XLAT_VAL_85 ((unsigned) (BINDERFS_SUPER_MAGIC))
+ #define XLAT_STR_85 STRINGIFY(BINDERFS_SUPER_MAGIC)
+ XLAT(NSFS_MAGIC),
+ #define XLAT_VAL_86 ((unsigned) (NSFS_MAGIC))
+ #define XLAT_STR_86 STRINGIFY(NSFS_MAGIC)
+ XLAT(SECURITYFS_MAGIC),
+ #define XLAT_VAL_87 ((unsigned) (SECURITYFS_MAGIC))
+ #define XLAT_STR_87 STRINGIFY(SECURITYFS_MAGIC)
+ XLAT(SQUASHFS_MAGIC),
+ #define XLAT_VAL_88 ((unsigned) (SQUASHFS_MAGIC))
+ #define XLAT_STR_88 STRINGIFY(SQUASHFS_MAGIC)
+ XLAT(BTRFS_TEST_MAGIC),
+ #define XLAT_VAL_89 ((unsigned) (BTRFS_TEST_MAGIC))
+ #define XLAT_STR_89 STRINGIFY(BTRFS_TEST_MAGIC)
+ XLAT(CODA_SUPER_MAGIC),
+ #define XLAT_VAL_90 ((unsigned) (CODA_SUPER_MAGIC))
+ #define XLAT_STR_90 STRINGIFY(CODA_SUPER_MAGIC)
+ XLAT(OCFS2_SUPER_MAGIC),
+ #define XLAT_VAL_91 ((unsigned) (OCFS2_SUPER_MAGIC))
+ #define XLAT_STR_91 STRINGIFY(OCFS2_SUPER_MAGIC)
+ XLAT(TRACEFS_MAGIC),
+ #define XLAT_VAL_92 ((unsigned) (TRACEFS_MAGIC))
+ #define XLAT_STR_92 STRINGIFY(TRACEFS_MAGIC)
+ XLAT(OVERLAYFS_SUPER_MAGIC),
+ #define XLAT_VAL_93 ((unsigned) (OVERLAYFS_SUPER_MAGIC))
+ #define XLAT_STR_93 STRINGIFY(OVERLAYFS_SUPER_MAGIC)
+ XLAT(RAMFS_MAGIC),
+ #define XLAT_VAL_94 ((unsigned) (RAMFS_MAGIC))
+ #define XLAT_STR_94 STRINGIFY(RAMFS_MAGIC)
+ XLAT(BTRFS_SUPER_MAGIC),
+ #define XLAT_VAL_95 ((unsigned) (BTRFS_SUPER_MAGIC))
+ #define XLAT_STR_95 STRINGIFY(BTRFS_SUPER_MAGIC)
+ XLAT(HUGETLBFS_MAGIC),
+ #define XLAT_VAL_96 ((unsigned) (HUGETLBFS_MAGIC))
+ #define XLAT_STR_96 STRINGIFY(HUGETLBFS_MAGIC)
+ XLAT(VXFS_SUPER_MAGIC),
+ #define XLAT_VAL_97 ((unsigned) (VXFS_SUPER_MAGIC))
+ #define XLAT_STR_97 STRINGIFY(VXFS_SUPER_MAGIC)
+ XLAT(XENFS_SUPER_MAGIC),
+ #define XLAT_VAL_98 ((unsigned) (XENFS_SUPER_MAGIC))
+ #define XLAT_STR_98 STRINGIFY(XENFS_SUPER_MAGIC)
+ XLAT(PPC_CMM_MAGIC),
+ #define XLAT_VAL_99 ((unsigned) (PPC_CMM_MAGIC))
+ #define XLAT_STR_99 STRINGIFY(PPC_CMM_MAGIC)
+ XLAT(LOGFS_MAGIC),
+ #define XLAT_VAL_100 ((unsigned) (LOGFS_MAGIC))
+ #define XLAT_STR_100 STRINGIFY(LOGFS_MAGIC)
+ XLAT(BPF_FS_MAGIC),
+ #define XLAT_VAL_101 ((unsigned) (BPF_FS_MAGIC))
+ #define XLAT_STR_101 STRINGIFY(BPF_FS_MAGIC)
+ XLAT(EFIVARFS_MAGIC),
+ #define XLAT_VAL_102 ((unsigned) (EFIVARFS_MAGIC))
+ #define XLAT_STR_102 STRINGIFY(EFIVARFS_MAGIC)
+ XLAT(EROFS_SUPER_MAGIC_V1),
+ #define XLAT_VAL_103 ((unsigned) (EROFS_SUPER_MAGIC_V1))
+ #define XLAT_STR_103 STRINGIFY(EROFS_SUPER_MAGIC_V1)
+ XLAT(F2FS_SUPER_MAGIC),
+ #define XLAT_VAL_104 ((unsigned) (F2FS_SUPER_MAGIC))
+ #define XLAT_STR_104 STRINGIFY(F2FS_SUPER_MAGIC)
+ XLAT(SELINUX_MAGIC),
+ #define XLAT_VAL_105 ((unsigned) (SELINUX_MAGIC))
+ #define XLAT_STR_105 STRINGIFY(SELINUX_MAGIC)
+ XLAT(HPFS_SUPER_MAGIC),
+ #define XLAT_VAL_106 ((unsigned) (HPFS_SUPER_MAGIC))
+ #define XLAT_STR_106 STRINGIFY(HPFS_SUPER_MAGIC)
+ XLAT(SMB2_MAGIC_NUMBER),
+ #define XLAT_VAL_107 ((unsigned) (SMB2_MAGIC_NUMBER))
+ #define XLAT_STR_107 STRINGIFY(SMB2_MAGIC_NUMBER)
+ XLAT(CIFS_MAGIC_NUMBER),
+ #define XLAT_VAL_108 ((unsigned) (CIFS_MAGIC_NUMBER))
+ #define XLAT_STR_108 STRINGIFY(CIFS_MAGIC_NUMBER)
 };
+static
+const struct xlat fsmagic[1] = { {
+ .data = fsmagic_xdata,
+ .size = ARRAY_SIZE(fsmagic_xdata),
+ .type = XT_SORTED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+#  ifdef XLAT_VAL_30
+  | XLAT_VAL_30
+#  endif
+#  ifdef XLAT_VAL_31
+  | XLAT_VAL_31
+#  endif
+#  ifdef XLAT_VAL_32
+  | XLAT_VAL_32
+#  endif
+#  ifdef XLAT_VAL_33
+  | XLAT_VAL_33
+#  endif
+#  ifdef XLAT_VAL_34
+  | XLAT_VAL_34
+#  endif
+#  ifdef XLAT_VAL_35
+  | XLAT_VAL_35
+#  endif
+#  ifdef XLAT_VAL_36
+  | XLAT_VAL_36
+#  endif
+#  ifdef XLAT_VAL_37
+  | XLAT_VAL_37
+#  endif
+#  ifdef XLAT_VAL_38
+  | XLAT_VAL_38
+#  endif
+#  ifdef XLAT_VAL_39
+  | XLAT_VAL_39
+#  endif
+#  ifdef XLAT_VAL_40
+  | XLAT_VAL_40
+#  endif
+#  ifdef XLAT_VAL_41
+  | XLAT_VAL_41
+#  endif
+#  ifdef XLAT_VAL_42
+  | XLAT_VAL_42
+#  endif
+#  ifdef XLAT_VAL_43
+  | XLAT_VAL_43
+#  endif
+#  ifdef XLAT_VAL_44
+  | XLAT_VAL_44
+#  endif
+#  ifdef XLAT_VAL_45
+  | XLAT_VAL_45
+#  endif
+#  ifdef XLAT_VAL_46
+  | XLAT_VAL_46
+#  endif
+#  ifdef XLAT_VAL_47
+  | XLAT_VAL_47
+#  endif
+#  ifdef XLAT_VAL_48
+  | XLAT_VAL_48
+#  endif
+#  ifdef XLAT_VAL_49
+  | XLAT_VAL_49
+#  endif
+#  ifdef XLAT_VAL_50
+  | XLAT_VAL_50
+#  endif
+#  ifdef XLAT_VAL_51
+  | XLAT_VAL_51
+#  endif
+#  ifdef XLAT_VAL_52
+  | XLAT_VAL_52
+#  endif
+#  ifdef XLAT_VAL_53
+  | XLAT_VAL_53
+#  endif
+#  ifdef XLAT_VAL_54
+  | XLAT_VAL_54
+#  endif
+#  ifdef XLAT_VAL_55
+  | XLAT_VAL_55
+#  endif
+#  ifdef XLAT_VAL_56
+  | XLAT_VAL_56
+#  endif
+#  ifdef XLAT_VAL_57
+  | XLAT_VAL_57
+#  endif
+#  ifdef XLAT_VAL_58
+  | XLAT_VAL_58
+#  endif
+#  ifdef XLAT_VAL_59
+  | XLAT_VAL_59
+#  endif
+#  ifdef XLAT_VAL_60
+  | XLAT_VAL_60
+#  endif
+#  ifdef XLAT_VAL_61
+  | XLAT_VAL_61
+#  endif
+#  ifdef XLAT_VAL_62
+  | XLAT_VAL_62
+#  endif
+#  ifdef XLAT_VAL_63
+  | XLAT_VAL_63
+#  endif
+#  ifdef XLAT_VAL_64
+  | XLAT_VAL_64
+#  endif
+#  ifdef XLAT_VAL_65
+  | XLAT_VAL_65
+#  endif
+#  ifdef XLAT_VAL_66
+  | XLAT_VAL_66
+#  endif
+#  ifdef XLAT_VAL_67
+  | XLAT_VAL_67
+#  endif
+#  ifdef XLAT_VAL_68
+  | XLAT_VAL_68
+#  endif
+#  ifdef XLAT_VAL_69
+  | XLAT_VAL_69
+#  endif
+#  ifdef XLAT_VAL_70
+  | XLAT_VAL_70
+#  endif
+#  ifdef XLAT_VAL_71
+  | XLAT_VAL_71
+#  endif
+#  ifdef XLAT_VAL_72
+  | XLAT_VAL_72
+#  endif
+#  ifdef XLAT_VAL_73
+  | XLAT_VAL_73
+#  endif
+#  ifdef XLAT_VAL_74
+  | XLAT_VAL_74
+#  endif
+#  ifdef XLAT_VAL_75
+  | XLAT_VAL_75
+#  endif
+#  ifdef XLAT_VAL_76
+  | XLAT_VAL_76
+#  endif
+#  ifdef XLAT_VAL_77
+  | XLAT_VAL_77
+#  endif
+#  ifdef XLAT_VAL_78
+  | XLAT_VAL_78
+#  endif
+#  ifdef XLAT_VAL_79
+  | XLAT_VAL_79
+#  endif
+#  ifdef XLAT_VAL_80
+  | XLAT_VAL_80
+#  endif
+#  ifdef XLAT_VAL_81
+  | XLAT_VAL_81
+#  endif
+#  ifdef XLAT_VAL_82
+  | XLAT_VAL_82
+#  endif
+#  ifdef XLAT_VAL_83
+  | XLAT_VAL_83
+#  endif
+#  ifdef XLAT_VAL_84
+  | XLAT_VAL_84
+#  endif
+#  ifdef XLAT_VAL_85
+  | XLAT_VAL_85
+#  endif
+#  ifdef XLAT_VAL_86
+  | XLAT_VAL_86
+#  endif
+#  ifdef XLAT_VAL_87
+  | XLAT_VAL_87
+#  endif
+#  ifdef XLAT_VAL_88
+  | XLAT_VAL_88
+#  endif
+#  ifdef XLAT_VAL_89
+  | XLAT_VAL_89
+#  endif
+#  ifdef XLAT_VAL_90
+  | XLAT_VAL_90
+#  endif
+#  ifdef XLAT_VAL_91
+  | XLAT_VAL_91
+#  endif
+#  ifdef XLAT_VAL_92
+  | XLAT_VAL_92
+#  endif
+#  ifdef XLAT_VAL_93
+  | XLAT_VAL_93
+#  endif
+#  ifdef XLAT_VAL_94
+  | XLAT_VAL_94
+#  endif
+#  ifdef XLAT_VAL_95
+  | XLAT_VAL_95
+#  endif
+#  ifdef XLAT_VAL_96
+  | XLAT_VAL_96
+#  endif
+#  ifdef XLAT_VAL_97
+  | XLAT_VAL_97
+#  endif
+#  ifdef XLAT_VAL_98
+  | XLAT_VAL_98
+#  endif
+#  ifdef XLAT_VAL_99
+  | XLAT_VAL_99
+#  endif
+#  ifdef XLAT_VAL_100
+  | XLAT_VAL_100
+#  endif
+#  ifdef XLAT_VAL_101
+  | XLAT_VAL_101
+#  endif
+#  ifdef XLAT_VAL_102
+  | XLAT_VAL_102
+#  endif
+#  ifdef XLAT_VAL_103
+  | XLAT_VAL_103
+#  endif
+#  ifdef XLAT_VAL_104
+  | XLAT_VAL_104
+#  endif
+#  ifdef XLAT_VAL_105
+  | XLAT_VAL_105
+#  endif
+#  ifdef XLAT_VAL_106
+  | XLAT_VAL_106
+#  endif
+#  ifdef XLAT_VAL_107
+  | XLAT_VAL_107
+#  endif
+#  ifdef XLAT_VAL_108
+  | XLAT_VAL_108
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+#  ifdef XLAT_STR_30
+  + sizeof(XLAT_STR_30)
+#  endif
+#  ifdef XLAT_STR_31
+  + sizeof(XLAT_STR_31)
+#  endif
+#  ifdef XLAT_STR_32
+  + sizeof(XLAT_STR_32)
+#  endif
+#  ifdef XLAT_STR_33
+  + sizeof(XLAT_STR_33)
+#  endif
+#  ifdef XLAT_STR_34
+  + sizeof(XLAT_STR_34)
+#  endif
+#  ifdef XLAT_STR_35
+  + sizeof(XLAT_STR_35)
+#  endif
+#  ifdef XLAT_STR_36
+  + sizeof(XLAT_STR_36)
+#  endif
+#  ifdef XLAT_STR_37
+  + sizeof(XLAT_STR_37)
+#  endif
+#  ifdef XLAT_STR_38
+  + sizeof(XLAT_STR_38)
+#  endif
+#  ifdef XLAT_STR_39
+  + sizeof(XLAT_STR_39)
+#  endif
+#  ifdef XLAT_STR_40
+  + sizeof(XLAT_STR_40)
+#  endif
+#  ifdef XLAT_STR_41
+  + sizeof(XLAT_STR_41)
+#  endif
+#  ifdef XLAT_STR_42
+  + sizeof(XLAT_STR_42)
+#  endif
+#  ifdef XLAT_STR_43
+  + sizeof(XLAT_STR_43)
+#  endif
+#  ifdef XLAT_STR_44
+  + sizeof(XLAT_STR_44)
+#  endif
+#  ifdef XLAT_STR_45
+  + sizeof(XLAT_STR_45)
+#  endif
+#  ifdef XLAT_STR_46
+  + sizeof(XLAT_STR_46)
+#  endif
+#  ifdef XLAT_STR_47
+  + sizeof(XLAT_STR_47)
+#  endif
+#  ifdef XLAT_STR_48
+  + sizeof(XLAT_STR_48)
+#  endif
+#  ifdef XLAT_STR_49
+  + sizeof(XLAT_STR_49)
+#  endif
+#  ifdef XLAT_STR_50
+  + sizeof(XLAT_STR_50)
+#  endif
+#  ifdef XLAT_STR_51
+  + sizeof(XLAT_STR_51)
+#  endif
+#  ifdef XLAT_STR_52
+  + sizeof(XLAT_STR_52)
+#  endif
+#  ifdef XLAT_STR_53
+  + sizeof(XLAT_STR_53)
+#  endif
+#  ifdef XLAT_STR_54
+  + sizeof(XLAT_STR_54)
+#  endif
+#  ifdef XLAT_STR_55
+  + sizeof(XLAT_STR_55)
+#  endif
+#  ifdef XLAT_STR_56
+  + sizeof(XLAT_STR_56)
+#  endif
+#  ifdef XLAT_STR_57
+  + sizeof(XLAT_STR_57)
+#  endif
+#  ifdef XLAT_STR_58
+  + sizeof(XLAT_STR_58)
+#  endif
+#  ifdef XLAT_STR_59
+  + sizeof(XLAT_STR_59)
+#  endif
+#  ifdef XLAT_STR_60
+  + sizeof(XLAT_STR_60)
+#  endif
+#  ifdef XLAT_STR_61
+  + sizeof(XLAT_STR_61)
+#  endif
+#  ifdef XLAT_STR_62
+  + sizeof(XLAT_STR_62)
+#  endif
+#  ifdef XLAT_STR_63
+  + sizeof(XLAT_STR_63)
+#  endif
+#  ifdef XLAT_STR_64
+  + sizeof(XLAT_STR_64)
+#  endif
+#  ifdef XLAT_STR_65
+  + sizeof(XLAT_STR_65)
+#  endif
+#  ifdef XLAT_STR_66
+  + sizeof(XLAT_STR_66)
+#  endif
+#  ifdef XLAT_STR_67
+  + sizeof(XLAT_STR_67)
+#  endif
+#  ifdef XLAT_STR_68
+  + sizeof(XLAT_STR_68)
+#  endif
+#  ifdef XLAT_STR_69
+  + sizeof(XLAT_STR_69)
+#  endif
+#  ifdef XLAT_STR_70
+  + sizeof(XLAT_STR_70)
+#  endif
+#  ifdef XLAT_STR_71
+  + sizeof(XLAT_STR_71)
+#  endif
+#  ifdef XLAT_STR_72
+  + sizeof(XLAT_STR_72)
+#  endif
+#  ifdef XLAT_STR_73
+  + sizeof(XLAT_STR_73)
+#  endif
+#  ifdef XLAT_STR_74
+  + sizeof(XLAT_STR_74)
+#  endif
+#  ifdef XLAT_STR_75
+  + sizeof(XLAT_STR_75)
+#  endif
+#  ifdef XLAT_STR_76
+  + sizeof(XLAT_STR_76)
+#  endif
+#  ifdef XLAT_STR_77
+  + sizeof(XLAT_STR_77)
+#  endif
+#  ifdef XLAT_STR_78
+  + sizeof(XLAT_STR_78)
+#  endif
+#  ifdef XLAT_STR_79
+  + sizeof(XLAT_STR_79)
+#  endif
+#  ifdef XLAT_STR_80
+  + sizeof(XLAT_STR_80)
+#  endif
+#  ifdef XLAT_STR_81
+  + sizeof(XLAT_STR_81)
+#  endif
+#  ifdef XLAT_STR_82
+  + sizeof(XLAT_STR_82)
+#  endif
+#  ifdef XLAT_STR_83
+  + sizeof(XLAT_STR_83)
+#  endif
+#  ifdef XLAT_STR_84
+  + sizeof(XLAT_STR_84)
+#  endif
+#  ifdef XLAT_STR_85
+  + sizeof(XLAT_STR_85)
+#  endif
+#  ifdef XLAT_STR_86
+  + sizeof(XLAT_STR_86)
+#  endif
+#  ifdef XLAT_STR_87
+  + sizeof(XLAT_STR_87)
+#  endif
+#  ifdef XLAT_STR_88
+  + sizeof(XLAT_STR_88)
+#  endif
+#  ifdef XLAT_STR_89
+  + sizeof(XLAT_STR_89)
+#  endif
+#  ifdef XLAT_STR_90
+  + sizeof(XLAT_STR_90)
+#  endif
+#  ifdef XLAT_STR_91
+  + sizeof(XLAT_STR_91)
+#  endif
+#  ifdef XLAT_STR_92
+  + sizeof(XLAT_STR_92)
+#  endif
+#  ifdef XLAT_STR_93
+  + sizeof(XLAT_STR_93)
+#  endif
+#  ifdef XLAT_STR_94
+  + sizeof(XLAT_STR_94)
+#  endif
+#  ifdef XLAT_STR_95
+  + sizeof(XLAT_STR_95)
+#  endif
+#  ifdef XLAT_STR_96
+  + sizeof(XLAT_STR_96)
+#  endif
+#  ifdef XLAT_STR_97
+  + sizeof(XLAT_STR_97)
+#  endif
+#  ifdef XLAT_STR_98
+  + sizeof(XLAT_STR_98)
+#  endif
+#  ifdef XLAT_STR_99
+  + sizeof(XLAT_STR_99)
+#  endif
+#  ifdef XLAT_STR_100
+  + sizeof(XLAT_STR_100)
+#  endif
+#  ifdef XLAT_STR_101
+  + sizeof(XLAT_STR_101)
+#  endif
+#  ifdef XLAT_STR_102
+  + sizeof(XLAT_STR_102)
+#  endif
+#  ifdef XLAT_STR_103
+  + sizeof(XLAT_STR_103)
+#  endif
+#  ifdef XLAT_STR_104
+  + sizeof(XLAT_STR_104)
+#  endif
+#  ifdef XLAT_STR_105
+  + sizeof(XLAT_STR_105)
+#  endif
+#  ifdef XLAT_STR_106
+  + sizeof(XLAT_STR_106)
+#  endif
+#  ifdef XLAT_STR_107
+  + sizeof(XLAT_STR_107)
+#  endif
+#  ifdef XLAT_STR_108
+  + sizeof(XLAT_STR_108)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
+#  undef XLAT_STR_30
+#  undef XLAT_VAL_30
+#  undef XLAT_STR_31
+#  undef XLAT_VAL_31
+#  undef XLAT_STR_32
+#  undef XLAT_VAL_32
+#  undef XLAT_STR_33
+#  undef XLAT_VAL_33
+#  undef XLAT_STR_34
+#  undef XLAT_VAL_34
+#  undef XLAT_STR_35
+#  undef XLAT_VAL_35
+#  undef XLAT_STR_36
+#  undef XLAT_VAL_36
+#  undef XLAT_STR_37
+#  undef XLAT_VAL_37
+#  undef XLAT_STR_38
+#  undef XLAT_VAL_38
+#  undef XLAT_STR_39
+#  undef XLAT_VAL_39
+#  undef XLAT_STR_40
+#  undef XLAT_VAL_40
+#  undef XLAT_STR_41
+#  undef XLAT_VAL_41
+#  undef XLAT_STR_42
+#  undef XLAT_VAL_42
+#  undef XLAT_STR_43
+#  undef XLAT_VAL_43
+#  undef XLAT_STR_44
+#  undef XLAT_VAL_44
+#  undef XLAT_STR_45
+#  undef XLAT_VAL_45
+#  undef XLAT_STR_46
+#  undef XLAT_VAL_46
+#  undef XLAT_STR_47
+#  undef XLAT_VAL_47
+#  undef XLAT_STR_48
+#  undef XLAT_VAL_48
+#  undef XLAT_STR_49
+#  undef XLAT_VAL_49
+#  undef XLAT_STR_50
+#  undef XLAT_VAL_50
+#  undef XLAT_STR_51
+#  undef XLAT_VAL_51
+#  undef XLAT_STR_52
+#  undef XLAT_VAL_52
+#  undef XLAT_STR_53
+#  undef XLAT_VAL_53
+#  undef XLAT_STR_54
+#  undef XLAT_VAL_54
+#  undef XLAT_STR_55
+#  undef XLAT_VAL_55
+#  undef XLAT_STR_56
+#  undef XLAT_VAL_56
+#  undef XLAT_STR_57
+#  undef XLAT_VAL_57
+#  undef XLAT_STR_58
+#  undef XLAT_VAL_58
+#  undef XLAT_STR_59
+#  undef XLAT_VAL_59
+#  undef XLAT_STR_60
+#  undef XLAT_VAL_60
+#  undef XLAT_STR_61
+#  undef XLAT_VAL_61
+#  undef XLAT_STR_62
+#  undef XLAT_VAL_62
+#  undef XLAT_STR_63
+#  undef XLAT_VAL_63
+#  undef XLAT_STR_64
+#  undef XLAT_VAL_64
+#  undef XLAT_STR_65
+#  undef XLAT_VAL_65
+#  undef XLAT_STR_66
+#  undef XLAT_VAL_66
+#  undef XLAT_STR_67
+#  undef XLAT_VAL_67
+#  undef XLAT_STR_68
+#  undef XLAT_VAL_68
+#  undef XLAT_STR_69
+#  undef XLAT_VAL_69
+#  undef XLAT_STR_70
+#  undef XLAT_VAL_70
+#  undef XLAT_STR_71
+#  undef XLAT_VAL_71
+#  undef XLAT_STR_72
+#  undef XLAT_VAL_72
+#  undef XLAT_STR_73
+#  undef XLAT_VAL_73
+#  undef XLAT_STR_74
+#  undef XLAT_VAL_74
+#  undef XLAT_STR_75
+#  undef XLAT_VAL_75
+#  undef XLAT_STR_76
+#  undef XLAT_VAL_76
+#  undef XLAT_STR_77
+#  undef XLAT_VAL_77
+#  undef XLAT_STR_78
+#  undef XLAT_VAL_78
+#  undef XLAT_STR_79
+#  undef XLAT_VAL_79
+#  undef XLAT_STR_80
+#  undef XLAT_VAL_80
+#  undef XLAT_STR_81
+#  undef XLAT_VAL_81
+#  undef XLAT_STR_82
+#  undef XLAT_VAL_82
+#  undef XLAT_STR_83
+#  undef XLAT_VAL_83
+#  undef XLAT_STR_84
+#  undef XLAT_VAL_84
+#  undef XLAT_STR_85
+#  undef XLAT_VAL_85
+#  undef XLAT_STR_86
+#  undef XLAT_VAL_86
+#  undef XLAT_STR_87
+#  undef XLAT_VAL_87
+#  undef XLAT_STR_88
+#  undef XLAT_VAL_88
+#  undef XLAT_STR_89
+#  undef XLAT_VAL_89
+#  undef XLAT_STR_90
+#  undef XLAT_VAL_90
+#  undef XLAT_STR_91
+#  undef XLAT_VAL_91
+#  undef XLAT_STR_92
+#  undef XLAT_VAL_92
+#  undef XLAT_STR_93
+#  undef XLAT_VAL_93
+#  undef XLAT_STR_94
+#  undef XLAT_VAL_94
+#  undef XLAT_STR_95
+#  undef XLAT_VAL_95
+#  undef XLAT_STR_96
+#  undef XLAT_VAL_96
+#  undef XLAT_STR_97
+#  undef XLAT_VAL_97
+#  undef XLAT_STR_98
+#  undef XLAT_VAL_98
+#  undef XLAT_STR_99
+#  undef XLAT_VAL_99
+#  undef XLAT_STR_100
+#  undef XLAT_VAL_100
+#  undef XLAT_STR_101
+#  undef XLAT_VAL_101
+#  undef XLAT_STR_102
+#  undef XLAT_VAL_102
+#  undef XLAT_STR_103
+#  undef XLAT_VAL_103
+#  undef XLAT_STR_104
+#  undef XLAT_VAL_104
+#  undef XLAT_STR_105
+#  undef XLAT_VAL_105
+#  undef XLAT_STR_106
+#  undef XLAT_VAL_106
+#  undef XLAT_STR_107
+#  undef XLAT_VAL_107
+#  undef XLAT_STR_108
+#  undef XLAT_VAL_108
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index ffab9e04aaf5704ce84e1a488e382190d50585ff..9cdaba5195a776cf9b804f4dccc388c023c705a5 100644 (file)
-/* sort -k2,2 */
-{ 0x0000002f,  "QNX4_SUPER_MAGIC"      },
-{ 0x00000187,  "AUTOFS_SUPER_MAGIC"    },
-{ 0x00001373,  "DEVFS_SUPER_MAGIC"     },
-{ 0x0000137d,  "EXT_SUPER_MAGIC"       },
-{ 0x0000137f,  "MINIX_SUPER_MAGIC"     },
-{ 0x0000138f,  "MINIX_SUPER_MAGIC2"    },
-{ 0x00001cd1,  "DEVPTS_SUPER_MAGIC"    },
-{ 0x00002468,  "MINIX2_SUPER_MAGIC"    },
-{ 0x00002478,  "MINIX2_SUPER_MAGIC2"   },
-{ 0x00003434,  "NILFS_SUPER_MAGIC"     },
-{ 0x00004244,  "HFS_SUPER_MAGIC"       },
-{ 0x0000482b,  "HFSPLUS_SUPER_MAGIC"   },
-{ 0x00004d44,  "MSDOS_SUPER_MAGIC"     },
-{ 0x00004d5a,  "MINIX3_SUPER_MAGIC"    },
-{ 0x0000517b,  "SMB_SUPER_MAGIC"       },
-{ 0x0000564c,  "NCP_SUPER_MAGIC"       },
-{ 0x00005df5,  "EXOFS_SUPER_MAGIC"     },
-{ 0x00006969,  "NFS_SUPER_MAGIC"       },
-{ 0x00007275,  "ROMFS_MAGIC"           },
-{ 0x000072b6,  "JFFS2_SUPER_MAGIC"     },
-{ 0x00009660,  "ISOFS_SUPER_MAGIC"     },
-{ 0x00009fa0,  "PROC_SUPER_MAGIC"      },
-{ 0x00009fa1,  "OPENPROM_SUPER_MAGIC"  },
-{ 0x00009fa2,  "USBDEVICE_SUPER_MAGIC" },
-{ 0x0000adf5,  "ADFS_SUPER_MAGIC"      },
-{ 0x0000adff,  "AFFS_SUPER_MAGIC"      },
-{ 0x0000ef51,  "EXT2_OLD_SUPER_MAGIC"  },
-{ 0x0000ef53,  "EXT2_SUPER_MAGIC"      },
-{ 0x0000f15f,  "ECRYPTFS_SUPER_MAGIC"  },
-{ 0x00011954,  "UFS_MAGIC"             },
-{ 0x0027e0eb,  "CGROUP_SUPER_MAGIC"    },
-{ 0x00414a53,  "EFS_SUPER_MAGIC"       },
-{ 0x00c0ffee,  "HOSTFS_SUPER_MAGIC"    },
-{ 0x00c36400,  "CEPH_SUPER_MAGIC"      },
-{ 0x01021994,  "TMPFS_MAGIC"           },
-{ 0x01021997,  "V9FS_MAGIC"            },
-{ 0x01161970,  "GFS2_MAGIC"            },
-{ 0x012fd16d,  "XIAFS_SUPER_MAGIC"     },
-{ 0x012ff7b4,  "XENIX_SUPER_MAGIC"     },
-{ 0x012ff7b5,  "SYSV4_SUPER_MAGIC"     },
-{ 0x012ff7b6,  "SYSV2_SUPER_MAGIC"     },
-{ 0x012ff7b7,  "COH_SUPER_MAGIC"       },
-{ 0x02011994,  "SHMFS_SUPER_MAGIC"     },
-{ 0x09041934,  "ANON_INODE_FS_MAGIC"   },
-{ 0x0bad1dea,  "FUTEXFS_SUPER_MAGIC"   },
-{ 0x11307854,  "MTD_INODE_FS_MAGIC"    },
-{ 0x13661366,  "BALLOON_KVM_MAGIC"     },
-{ 0x15013346,  "UDF_SUPER_MAGIC"       },
-{ 0x1badface,  "BFS_MAGIC"             },
-{ 0x24051905,  "UBIFS_SUPER_MAGIC"     },
-{ 0x28cd3d45,  "CRAMFS_MAGIC"          },
-{ 0x2fc12fc1,  "ZFS_SUPER_MAGIC"       },
-{ 0x3153464a,  "JFS_SUPER_MAGIC"       },
-{ 0x42465331,  "BEFS_SUPER_MAGIC"      },
-{ 0x42494e4d,  "BINFMTFS_MAGIC"        },
-{ 0x43415d53,  "SMACK_MAGIC"           },
-{ 0x453dcd28,  "CRAMFS_MAGIC_WEND"     },
-{ 0x47504653,  "GPFS_SUPER_MAGIC"      },
-{ 0x50495045,  "PIPEFS_MAGIC"          },
-{ 0x52654973,  "REISERFS_SUPER_MAGIC"  },
-{ 0x5346414f,  "AFS_SUPER_MAGIC"       },
-{ 0x5346544e,  "NTFS_SB_MAGIC"         },
-{ 0x534f434b,  "SOCKFS_MAGIC"          },
-{ 0x54190100,  "UFS_CIGAM"             },
-{ 0x565a4653,  "VZFS_SUPER_MAGIC"      },
-{ 0x57ac6e9d,  "STACK_END_MAGIC"       },
-{ 0x58295829,  "ZSMALLOC_MAGIC"        },
-{ 0x58465342,  "XFS_SB_MAGIC"          },
-{ 0x5a3c69f0,  "AAFS_MAGIC"            },
-{ 0x6165676c,  "PSTOREFS_MAGIC"        },
-{ 0x61756673,  "AUFS_SUPER_MAGIC"      },
-{ 0x62646576,  "BDEVFS_MAGIC"          },
-{ 0x62656570,  "CONFIGFS_MAGIC"        },
-{ 0x62656572,  "SYSFS_MAGIC"           },
-{ 0x63677270,  "CGROUP2_SUPER_MAGIC"   },
-{ 0x64626720,  "DEBUGFS_MAGIC"         },
-{ 0x64646178,  "DAXFS_MAGIC"           },
-{ 0x65735543,  "FUSE_CTL_SUPER_MAGIC"  },
-{ 0x65735546,  "FUSE_SUPER_MAGIC"      },
-{ 0x68191122,  "QNX6_SUPER_MAGIC"      },
-{ 0x6b414653,  "AFS_FS_MAGIC"          },
-{ 0x6c6f6f70,  "BINDERFS_SUPER_MAGIC"  },
-{ 0x6e736673,  "NSFS_MAGIC"            },
-{ 0x73636673,  "SECURITYFS_MAGIC"      },
-{ 0x73717368,  "SQUASHFS_MAGIC"        },
-{ 0x73727279,  "BTRFS_TEST_MAGIC"      },
-{ 0x73757245,  "CODA_SUPER_MAGIC"      },
-{ 0x7461636f,  "OCFS2_SUPER_MAGIC"     },
-{ 0x74726163,  "TRACEFS_MAGIC"         },
-{ 0x794c7630,  "OVERLAYFS_SUPER_MAGIC" },
-{ 0x858458f6,  "RAMFS_MAGIC"           },
-{ 0x9123683e,  "BTRFS_SUPER_MAGIC"     },
-{ 0x958458f6,  "HUGETLBFS_MAGIC"       },
-{ 0xa501fcf5,  "VXFS_SUPER_MAGIC"      },
-{ 0xabba1974,  "XENFS_SUPER_MAGIC"     },
-{ 0xc97e8168,  "LOGFS_MAGIC"           },
-{ 0xcafe4a11,  "BPF_FS_MAGIC"          },
-{ 0xde5e81e4,  "EFIVARFS_MAGIC"        },
-{ 0xf2f52010,  "F2FS_SUPER_MAGIC"      },
-{ 0xf97cff8c,  "SELINUX_MAGIC"         },
-{ 0xf995e849,  "HPFS_SUPER_MAGIC"      },
-{ 0xfe534d42,  "SMB2_MAGIC_NUMBER"     },
-{ 0xff534d42,  "CIFS_MAGIC_NUMBER"     },
+#sorted sort -k2,2
+QNX4_SUPER_MAGIC       0x0000002f
+Z3FOLD_MAGIC           0x00000033
+AUTOFS_SUPER_MAGIC     0x00000187
+DEVFS_SUPER_MAGIC      0x00001373
+EXT_SUPER_MAGIC                0x0000137d
+MINIX_SUPER_MAGIC      0x0000137f
+MINIX_SUPER_MAGIC2     0x0000138f
+DEVPTS_SUPER_MAGIC     0x00001cd1
+MINIX2_SUPER_MAGIC     0x00002468
+MINIX2_SUPER_MAGIC2    0x00002478
+NILFS_SUPER_MAGIC      0x00003434
+HFS_SUPER_MAGIC                0x00004244
+HFSPLUS_SUPER_MAGIC    0x0000482b
+MSDOS_SUPER_MAGIC      0x00004d44
+MINIX3_SUPER_MAGIC     0x00004d5a
+SMB_SUPER_MAGIC                0x0000517b
+NCP_SUPER_MAGIC                0x0000564c
+EXOFS_SUPER_MAGIC      0x00005df5
+NFS_SUPER_MAGIC                0x00006969
+ROMFS_MAGIC            0x00007275
+JFFS2_SUPER_MAGIC      0x000072b6
+ISOFS_SUPER_MAGIC      0x00009660
+PROC_SUPER_MAGIC       0x00009fa0
+OPENPROM_SUPER_MAGIC   0x00009fa1
+USBDEVICE_SUPER_MAGIC  0x00009fa2
+ADFS_SUPER_MAGIC       0x0000adf5
+AFFS_SUPER_MAGIC       0x0000adff
+EXT2_OLD_SUPER_MAGIC   0x0000ef51
+EXT2_SUPER_MAGIC       0x0000ef53
+ECRYPTFS_SUPER_MAGIC   0x0000f15f
+UFS_MAGIC              0x00011954
+CGROUP_SUPER_MAGIC     0x0027e0eb
+EFS_SUPER_MAGIC                0x00414a53
+HOSTFS_SUPER_MAGIC     0x00c0ffee
+CEPH_SUPER_MAGIC       0x00c36400
+TMPFS_MAGIC            0x01021994
+V9FS_MAGIC             0x01021997
+GFS2_MAGIC             0x01161970
+XIAFS_SUPER_MAGIC      0x012fd16d
+XENIX_SUPER_MAGIC      0x012ff7b4
+SYSV4_SUPER_MAGIC      0x012ff7b5
+SYSV2_SUPER_MAGIC      0x012ff7b6
+COH_SUPER_MAGIC                0x012ff7b7
+SHMFS_SUPER_MAGIC      0x02011994
+ANON_INODE_FS_MAGIC    0x09041934
+FUTEXFS_SUPER_MAGIC    0x0bad1dea
+MTD_INODE_FS_MAGIC     0x11307854
+BALLOON_KVM_MAGIC      0x13661366
+UDF_SUPER_MAGIC                0x15013346
+BFS_MAGIC              0x1badface
+UBIFS_SUPER_MAGIC      0x24051905
+CRAMFS_MAGIC           0x28cd3d45
+ZFS_SUPER_MAGIC                0x2fc12fc1
+JFS_SUPER_MAGIC                0x3153464a
+BEFS_SUPER_MAGIC       0x42465331
+BINFMTFS_MAGIC         0x42494e4d
+SMACK_MAGIC            0x43415d53
+DMA_BUF_MAGIC          0x444d4142
+CRAMFS_MAGIC_WEND      0x453dcd28
+DEVMEM_MAGIC           0x454d444d
+GPFS_SUPER_MAGIC       0x47504653
+PIPEFS_MAGIC           0x50495045
+REISERFS_SUPER_MAGIC   0x52654973
+AFS_SUPER_MAGIC                0x5346414f
+NTFS_SB_MAGIC          0x5346544e
+SOCKFS_MAGIC           0x534f434b
+UFS_CIGAM              0x54190100
+VZFS_SUPER_MAGIC       0x565a4653
+STACK_END_MAGIC                0x57ac6e9d
+ZSMALLOC_MAGIC         0x58295829
+XFS_SB_MAGIC           0x58465342
+AAFS_MAGIC             0x5a3c69f0
+ZONEFS_MAGIC           0x5a4f4653
+PSTOREFS_MAGIC         0x6165676c
+AUFS_SUPER_MAGIC       0x61756673
+BDEVFS_MAGIC           0x62646576
+CONFIGFS_MAGIC         0x62656570
+SYSFS_MAGIC            0x62656572
+CGROUP2_SUPER_MAGIC    0x63677270
+DEBUGFS_MAGIC          0x64626720
+DAXFS_MAGIC            0x64646178
+FUSE_CTL_SUPER_MAGIC   0x65735543
+FUSE_SUPER_MAGIC       0x65735546
+QNX6_SUPER_MAGIC       0x68191122
+AFS_FS_MAGIC           0x6b414653
+BINDERFS_SUPER_MAGIC   0x6c6f6f70
+NSFS_MAGIC             0x6e736673
+SECURITYFS_MAGIC       0x73636673
+SQUASHFS_MAGIC         0x73717368
+BTRFS_TEST_MAGIC       0x73727279
+CODA_SUPER_MAGIC       0x73757245
+OCFS2_SUPER_MAGIC      0x7461636f
+TRACEFS_MAGIC          0x74726163
+OVERLAYFS_SUPER_MAGIC  0x794c7630
+RAMFS_MAGIC            0x858458f6
+BTRFS_SUPER_MAGIC      0x9123683e
+HUGETLBFS_MAGIC                0x958458f6
+VXFS_SUPER_MAGIC       0xa501fcf5
+XENFS_SUPER_MAGIC      0xabba1974
+PPC_CMM_MAGIC          0xc7571590
+LOGFS_MAGIC            0xc97e8168
+BPF_FS_MAGIC           0xcafe4a11
+EFIVARFS_MAGIC         0xde5e81e4
+EROFS_SUPER_MAGIC_V1   0xe0f5e1e2
+F2FS_SUPER_MAGIC       0xf2f52010
+SELINUX_MAGIC          0xf97cff8c
+HPFS_SUPER_MAGIC       0xf995e849
+SMB2_MAGIC_NUMBER      0xfe534d42
+CIFS_MAGIC_NUMBER      0xff534d42
diff --git a/xlat/fsmount_flags.h b/xlat/fsmount_flags.h
new file mode 100644 (file)
index 0000000..2aa7ec8
--- /dev/null
@@ -0,0 +1,48 @@
+/* Generated by ./xlat/gen.sh from ./xlat/fsmount_flags.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(FSMOUNT_CLOEXEC) || (defined(HAVE_DECL_FSMOUNT_CLOEXEC) && HAVE_DECL_FSMOUNT_CLOEXEC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((FSMOUNT_CLOEXEC) == (1), "FSMOUNT_CLOEXEC != 1");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define FSMOUNT_CLOEXEC 1
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat fsmount_flags in mpers mode
+
+# else
+
+static const struct xlat_data fsmount_flags_xdata[] = {
+ XLAT(FSMOUNT_CLOEXEC),
+ #define XLAT_VAL_0 ((unsigned) (FSMOUNT_CLOEXEC))
+ #define XLAT_STR_0 STRINGIFY(FSMOUNT_CLOEXEC)
+};
+static
+const struct xlat fsmount_flags[1] = { {
+ .data = fsmount_flags_xdata,
+ .size = ARRAY_SIZE(fsmount_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/fsmount_flags.in b/xlat/fsmount_flags.in
new file mode 100644 (file)
index 0000000..8a3b95e
--- /dev/null
@@ -0,0 +1 @@
+FSMOUNT_CLOEXEC        1
diff --git a/xlat/fsopen_flags.h b/xlat/fsopen_flags.h
new file mode 100644 (file)
index 0000000..d9b0e9f
--- /dev/null
@@ -0,0 +1,48 @@
+/* Generated by ./xlat/gen.sh from ./xlat/fsopen_flags.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(FSOPEN_CLOEXEC) || (defined(HAVE_DECL_FSOPEN_CLOEXEC) && HAVE_DECL_FSOPEN_CLOEXEC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((FSOPEN_CLOEXEC) == (1), "FSOPEN_CLOEXEC != 1");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define FSOPEN_CLOEXEC 1
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat fsopen_flags in mpers mode
+
+# else
+
+static const struct xlat_data fsopen_flags_xdata[] = {
+ XLAT(FSOPEN_CLOEXEC),
+ #define XLAT_VAL_0 ((unsigned) (FSOPEN_CLOEXEC))
+ #define XLAT_STR_0 STRINGIFY(FSOPEN_CLOEXEC)
+};
+static
+const struct xlat fsopen_flags[1] = { {
+ .data = fsopen_flags_xdata,
+ .size = ARRAY_SIZE(fsopen_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/fsopen_flags.in b/xlat/fsopen_flags.in
new file mode 100644 (file)
index 0000000..ce01ddf
--- /dev/null
@@ -0,0 +1 @@
+FSOPEN_CLOEXEC 1
diff --git a/xlat/fspick_flags.h b/xlat/fspick_flags.h
new file mode 100644 (file)
index 0000000..d3e7b26
--- /dev/null
@@ -0,0 +1,102 @@
+/* Generated by ./xlat/gen.sh from ./xlat/fspick_flags.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(FSPICK_CLOEXEC) || (defined(HAVE_DECL_FSPICK_CLOEXEC) && HAVE_DECL_FSPICK_CLOEXEC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((FSPICK_CLOEXEC) == (0x01), "FSPICK_CLOEXEC != 0x01");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define FSPICK_CLOEXEC 0x01
+#endif
+#if defined(FSPICK_SYMLINK_NOFOLLOW) || (defined(HAVE_DECL_FSPICK_SYMLINK_NOFOLLOW) && HAVE_DECL_FSPICK_SYMLINK_NOFOLLOW)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((FSPICK_SYMLINK_NOFOLLOW) == (0x02), "FSPICK_SYMLINK_NOFOLLOW != 0x02");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define FSPICK_SYMLINK_NOFOLLOW 0x02
+#endif
+#if defined(FSPICK_NO_AUTOMOUNT) || (defined(HAVE_DECL_FSPICK_NO_AUTOMOUNT) && HAVE_DECL_FSPICK_NO_AUTOMOUNT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((FSPICK_NO_AUTOMOUNT) == (0x04), "FSPICK_NO_AUTOMOUNT != 0x04");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define FSPICK_NO_AUTOMOUNT 0x04
+#endif
+#if defined(FSPICK_EMPTY_PATH) || (defined(HAVE_DECL_FSPICK_EMPTY_PATH) && HAVE_DECL_FSPICK_EMPTY_PATH)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((FSPICK_EMPTY_PATH) == (0x08), "FSPICK_EMPTY_PATH != 0x08");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define FSPICK_EMPTY_PATH 0x08
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat fspick_flags in mpers mode
+
+# else
+
+static const struct xlat_data fspick_flags_xdata[] = {
+ XLAT(FSPICK_CLOEXEC),
+ #define XLAT_VAL_0 ((unsigned) (FSPICK_CLOEXEC))
+ #define XLAT_STR_0 STRINGIFY(FSPICK_CLOEXEC)
+ XLAT(FSPICK_SYMLINK_NOFOLLOW),
+ #define XLAT_VAL_1 ((unsigned) (FSPICK_SYMLINK_NOFOLLOW))
+ #define XLAT_STR_1 STRINGIFY(FSPICK_SYMLINK_NOFOLLOW)
+ XLAT(FSPICK_NO_AUTOMOUNT),
+ #define XLAT_VAL_2 ((unsigned) (FSPICK_NO_AUTOMOUNT))
+ #define XLAT_STR_2 STRINGIFY(FSPICK_NO_AUTOMOUNT)
+ XLAT(FSPICK_EMPTY_PATH),
+ #define XLAT_VAL_3 ((unsigned) (FSPICK_EMPTY_PATH))
+ #define XLAT_STR_3 STRINGIFY(FSPICK_EMPTY_PATH)
+};
+static
+const struct xlat fspick_flags[1] = { {
+ .data = fspick_flags_xdata,
+ .size = ARRAY_SIZE(fspick_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/fspick_flags.in b/xlat/fspick_flags.in
new file mode 100644 (file)
index 0000000..52ed035
--- /dev/null
@@ -0,0 +1,4 @@
+FSPICK_CLOEXEC         0x01
+FSPICK_SYMLINK_NOFOLLOW        0x02
+FSPICK_NO_AUTOMOUNT    0x04
+FSPICK_EMPTY_PATH      0x08
index 566c8cbc232c27458735817362ccb48a07e08f75..a3917ba78d4cc216e4b5f41a62a0f8dcdb798a81 100644 (file)
@@ -19,12 +19,30 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat futexbitset[] = {
+static const struct xlat_data futexbitset_xdata[] = {
  XLAT(FUTEX_BITSET_MATCH_ANY),
- XLAT_END
+ #define XLAT_VAL_0 ((unsigned) (FUTEX_BITSET_MATCH_ANY))
+ #define XLAT_STR_0 STRINGIFY(FUTEX_BITSET_MATCH_ANY)
 };
-
+static
+const struct xlat futexbitset[1] = { {
+ .data = futexbitset_xdata,
+ .size = ARRAY_SIZE(futexbitset_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 562f6af92033c9b1383a879031f443d887faa328..691f090f2f97c9e38cee322c7fa68cb724ffaa2d 100644 (file)
@@ -187,57 +187,385 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat futexops[] = {
+static const struct xlat_data futexops_xdata[] = {
  XLAT(FUTEX_WAIT),
+ #define XLAT_VAL_0 ((unsigned) (FUTEX_WAIT))
+ #define XLAT_STR_0 STRINGIFY(FUTEX_WAIT)
  XLAT(FUTEX_WAKE),
+ #define XLAT_VAL_1 ((unsigned) (FUTEX_WAKE))
+ #define XLAT_STR_1 STRINGIFY(FUTEX_WAKE)
  XLAT(FUTEX_FD),
+ #define XLAT_VAL_2 ((unsigned) (FUTEX_FD))
+ #define XLAT_STR_2 STRINGIFY(FUTEX_FD)
  XLAT(FUTEX_REQUEUE),
+ #define XLAT_VAL_3 ((unsigned) (FUTEX_REQUEUE))
+ #define XLAT_STR_3 STRINGIFY(FUTEX_REQUEUE)
  XLAT(FUTEX_CMP_REQUEUE),
+ #define XLAT_VAL_4 ((unsigned) (FUTEX_CMP_REQUEUE))
+ #define XLAT_STR_4 STRINGIFY(FUTEX_CMP_REQUEUE)
  XLAT(FUTEX_WAKE_OP),
+ #define XLAT_VAL_5 ((unsigned) (FUTEX_WAKE_OP))
+ #define XLAT_STR_5 STRINGIFY(FUTEX_WAKE_OP)
  XLAT(FUTEX_LOCK_PI),
+ #define XLAT_VAL_6 ((unsigned) (FUTEX_LOCK_PI))
+ #define XLAT_STR_6 STRINGIFY(FUTEX_LOCK_PI)
  XLAT(FUTEX_UNLOCK_PI),
+ #define XLAT_VAL_7 ((unsigned) (FUTEX_UNLOCK_PI))
+ #define XLAT_STR_7 STRINGIFY(FUTEX_UNLOCK_PI)
  XLAT(FUTEX_TRYLOCK_PI),
+ #define XLAT_VAL_8 ((unsigned) (FUTEX_TRYLOCK_PI))
+ #define XLAT_STR_8 STRINGIFY(FUTEX_TRYLOCK_PI)
  XLAT(FUTEX_WAIT_BITSET),
+ #define XLAT_VAL_9 ((unsigned) (FUTEX_WAIT_BITSET))
+ #define XLAT_STR_9 STRINGIFY(FUTEX_WAIT_BITSET)
  XLAT(FUTEX_WAKE_BITSET),
+ #define XLAT_VAL_10 ((unsigned) (FUTEX_WAKE_BITSET))
+ #define XLAT_STR_10 STRINGIFY(FUTEX_WAKE_BITSET)
  XLAT(FUTEX_WAIT_REQUEUE_PI),
+ #define XLAT_VAL_11 ((unsigned) (FUTEX_WAIT_REQUEUE_PI))
+ #define XLAT_STR_11 STRINGIFY(FUTEX_WAIT_REQUEUE_PI)
  XLAT(FUTEX_CMP_REQUEUE_PI),
+ #define XLAT_VAL_12 ((unsigned) (FUTEX_CMP_REQUEUE_PI))
+ #define XLAT_STR_12 STRINGIFY(FUTEX_CMP_REQUEUE_PI)
  XLAT(FUTEX_WAIT_PRIVATE),
+ #define XLAT_VAL_13 ((unsigned) (FUTEX_WAIT_PRIVATE))
+ #define XLAT_STR_13 STRINGIFY(FUTEX_WAIT_PRIVATE)
  XLAT(FUTEX_WAKE_PRIVATE),
+ #define XLAT_VAL_14 ((unsigned) (FUTEX_WAKE_PRIVATE))
+ #define XLAT_STR_14 STRINGIFY(FUTEX_WAKE_PRIVATE)
 #if defined(FUTEX_FD) || (defined(HAVE_DECL_FUTEX_FD) && HAVE_DECL_FUTEX_FD)
   XLAT(FUTEX_FD|FUTEX_PRIVATE_FLAG),
+ #define XLAT_VAL_15 ((unsigned) (FUTEX_FD|FUTEX_PRIVATE_FLAG))
+ #define XLAT_STR_15 STRINGIFY(FUTEX_FD|FUTEX_PRIVATE_FLAG)
 #endif
  XLAT(FUTEX_REQUEUE_PRIVATE),
+ #define XLAT_VAL_16 ((unsigned) (FUTEX_REQUEUE_PRIVATE))
+ #define XLAT_STR_16 STRINGIFY(FUTEX_REQUEUE_PRIVATE)
  XLAT(FUTEX_CMP_REQUEUE_PRIVATE),
+ #define XLAT_VAL_17 ((unsigned) (FUTEX_CMP_REQUEUE_PRIVATE))
+ #define XLAT_STR_17 STRINGIFY(FUTEX_CMP_REQUEUE_PRIVATE)
  XLAT(FUTEX_WAKE_OP_PRIVATE),
+ #define XLAT_VAL_18 ((unsigned) (FUTEX_WAKE_OP_PRIVATE))
+ #define XLAT_STR_18 STRINGIFY(FUTEX_WAKE_OP_PRIVATE)
  XLAT(FUTEX_LOCK_PI_PRIVATE),
+ #define XLAT_VAL_19 ((unsigned) (FUTEX_LOCK_PI_PRIVATE))
+ #define XLAT_STR_19 STRINGIFY(FUTEX_LOCK_PI_PRIVATE)
  XLAT(FUTEX_UNLOCK_PI_PRIVATE),
+ #define XLAT_VAL_20 ((unsigned) (FUTEX_UNLOCK_PI_PRIVATE))
+ #define XLAT_STR_20 STRINGIFY(FUTEX_UNLOCK_PI_PRIVATE)
  XLAT(FUTEX_TRYLOCK_PI_PRIVATE),
+ #define XLAT_VAL_21 ((unsigned) (FUTEX_TRYLOCK_PI_PRIVATE))
+ #define XLAT_STR_21 STRINGIFY(FUTEX_TRYLOCK_PI_PRIVATE)
  XLAT(FUTEX_WAIT_BITSET_PRIVATE),
+ #define XLAT_VAL_22 ((unsigned) (FUTEX_WAIT_BITSET_PRIVATE))
+ #define XLAT_STR_22 STRINGIFY(FUTEX_WAIT_BITSET_PRIVATE)
  XLAT(FUTEX_WAKE_BITSET_PRIVATE),
+ #define XLAT_VAL_23 ((unsigned) (FUTEX_WAKE_BITSET_PRIVATE))
+ #define XLAT_STR_23 STRINGIFY(FUTEX_WAKE_BITSET_PRIVATE)
  XLAT(FUTEX_WAIT_REQUEUE_PI_PRIVATE),
+ #define XLAT_VAL_24 ((unsigned) (FUTEX_WAIT_REQUEUE_PI_PRIVATE))
+ #define XLAT_STR_24 STRINGIFY(FUTEX_WAIT_REQUEUE_PI_PRIVATE)
  XLAT(FUTEX_CMP_REQUEUE_PI_PRIVATE),
+ #define XLAT_VAL_25 ((unsigned) (FUTEX_CMP_REQUEUE_PI_PRIVATE))
+ #define XLAT_STR_25 STRINGIFY(FUTEX_CMP_REQUEUE_PI_PRIVATE)
 #if defined(FUTEX_WAIT) || (defined(HAVE_DECL_FUTEX_WAIT) && HAVE_DECL_FUTEX_WAIT)
   XLAT(FUTEX_WAIT|FUTEX_CLOCK_REALTIME),
+ #define XLAT_VAL_26 ((unsigned) (FUTEX_WAIT|FUTEX_CLOCK_REALTIME))
+ #define XLAT_STR_26 STRINGIFY(FUTEX_WAIT|FUTEX_CLOCK_REALTIME)
 #endif
 #if defined(FUTEX_WAIT_PRIVATE) || (defined(HAVE_DECL_FUTEX_WAIT_PRIVATE) && HAVE_DECL_FUTEX_WAIT_PRIVATE)
   XLAT(FUTEX_WAIT_PRIVATE|FUTEX_CLOCK_REALTIME),
+ #define XLAT_VAL_27 ((unsigned) (FUTEX_WAIT_PRIVATE|FUTEX_CLOCK_REALTIME))
+ #define XLAT_STR_27 STRINGIFY(FUTEX_WAIT_PRIVATE|FUTEX_CLOCK_REALTIME)
 #endif
 #if defined(FUTEX_WAIT_BITSET) || (defined(HAVE_DECL_FUTEX_WAIT_BITSET) && HAVE_DECL_FUTEX_WAIT_BITSET)
   XLAT(FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME),
+ #define XLAT_VAL_28 ((unsigned) (FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME))
+ #define XLAT_STR_28 STRINGIFY(FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME)
 #endif
 #if defined(FUTEX_WAIT_BITSET_PRIVATE) || (defined(HAVE_DECL_FUTEX_WAIT_BITSET_PRIVATE) && HAVE_DECL_FUTEX_WAIT_BITSET_PRIVATE)
   XLAT(FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME),
+ #define XLAT_VAL_29 ((unsigned) (FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME))
+ #define XLAT_STR_29 STRINGIFY(FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME)
 #endif
 #if defined(FUTEX_WAIT_REQUEUE_PI) || (defined(HAVE_DECL_FUTEX_WAIT_REQUEUE_PI) && HAVE_DECL_FUTEX_WAIT_REQUEUE_PI)
   XLAT(FUTEX_WAIT_REQUEUE_PI|FUTEX_CLOCK_REALTIME),
+ #define XLAT_VAL_30 ((unsigned) (FUTEX_WAIT_REQUEUE_PI|FUTEX_CLOCK_REALTIME))
+ #define XLAT_STR_30 STRINGIFY(FUTEX_WAIT_REQUEUE_PI|FUTEX_CLOCK_REALTIME)
 #endif
 #if defined(FUTEX_WAIT_REQUEUE_PI_PRIVATE) || (defined(HAVE_DECL_FUTEX_WAIT_REQUEUE_PI_PRIVATE) && HAVE_DECL_FUTEX_WAIT_REQUEUE_PI_PRIVATE)
   XLAT(FUTEX_WAIT_REQUEUE_PI_PRIVATE|FUTEX_CLOCK_REALTIME),
+ #define XLAT_VAL_31 ((unsigned) (FUTEX_WAIT_REQUEUE_PI_PRIVATE|FUTEX_CLOCK_REALTIME))
+ #define XLAT_STR_31 STRINGIFY(FUTEX_WAIT_REQUEUE_PI_PRIVATE|FUTEX_CLOCK_REALTIME)
 #endif
- XLAT_END
 };
+static
+const struct xlat futexops[1] = { {
+ .data = futexops_xdata,
+ .size = ARRAY_SIZE(futexops_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+#  ifdef XLAT_VAL_30
+  | XLAT_VAL_30
+#  endif
+#  ifdef XLAT_VAL_31
+  | XLAT_VAL_31
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+#  ifdef XLAT_STR_30
+  + sizeof(XLAT_STR_30)
+#  endif
+#  ifdef XLAT_STR_31
+  + sizeof(XLAT_STR_31)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
+#  undef XLAT_STR_30
+#  undef XLAT_VAL_30
+#  undef XLAT_STR_31
+#  undef XLAT_VAL_31
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index b0ee5b0deec5811ddc6a6ff4b2f0125d28ca6e51..a5478d44033f946c936dc8be8d58e0e99bc32548 100644 (file)
@@ -54,17 +54,85 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat futexwakecmps[] = {
- XLAT(FUTEX_OP_CMP_EQ),
- XLAT(FUTEX_OP_CMP_NE),
- XLAT(FUTEX_OP_CMP_LT),
- XLAT(FUTEX_OP_CMP_LE),
- XLAT(FUTEX_OP_CMP_GT),
- XLAT(FUTEX_OP_CMP_GE),
- XLAT_END
+static const struct xlat_data futexwakecmps_xdata[] = {
+ [FUTEX_OP_CMP_EQ] = XLAT(FUTEX_OP_CMP_EQ),
+ #define XLAT_VAL_0 ((unsigned) (FUTEX_OP_CMP_EQ))
+ #define XLAT_STR_0 STRINGIFY(FUTEX_OP_CMP_EQ)
+ [FUTEX_OP_CMP_NE] = XLAT(FUTEX_OP_CMP_NE),
+ #define XLAT_VAL_1 ((unsigned) (FUTEX_OP_CMP_NE))
+ #define XLAT_STR_1 STRINGIFY(FUTEX_OP_CMP_NE)
+ [FUTEX_OP_CMP_LT] = XLAT(FUTEX_OP_CMP_LT),
+ #define XLAT_VAL_2 ((unsigned) (FUTEX_OP_CMP_LT))
+ #define XLAT_STR_2 STRINGIFY(FUTEX_OP_CMP_LT)
+ [FUTEX_OP_CMP_LE] = XLAT(FUTEX_OP_CMP_LE),
+ #define XLAT_VAL_3 ((unsigned) (FUTEX_OP_CMP_LE))
+ #define XLAT_STR_3 STRINGIFY(FUTEX_OP_CMP_LE)
+ [FUTEX_OP_CMP_GT] = XLAT(FUTEX_OP_CMP_GT),
+ #define XLAT_VAL_4 ((unsigned) (FUTEX_OP_CMP_GT))
+ #define XLAT_STR_4 STRINGIFY(FUTEX_OP_CMP_GT)
+ [FUTEX_OP_CMP_GE] = XLAT(FUTEX_OP_CMP_GE),
+ #define XLAT_VAL_5 ((unsigned) (FUTEX_OP_CMP_GE))
+ #define XLAT_STR_5 STRINGIFY(FUTEX_OP_CMP_GE)
 };
+static
+const struct xlat futexwakecmps[1] = { {
+ .data = futexwakecmps_xdata,
+ .size = ARRAY_SIZE(futexwakecmps_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 743e44c2d7aac64e1e4220d71a36ee7d1878b362..96d92069bca56453df66f3c04243613dc55a2fa6 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 FUTEX_OP_CMP_EQ        0
 FUTEX_OP_CMP_NE        1
 FUTEX_OP_CMP_LT        2
index b64335369e2233f37d413f9b37fb309b770511f5..cb7880968b45adbae2f139b4219a9292d7e6d09a 100644 (file)
@@ -47,16 +47,74 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat futexwakeops[] = {
- XLAT(FUTEX_OP_SET),
- XLAT(FUTEX_OP_ADD),
- XLAT(FUTEX_OP_OR),
- XLAT(FUTEX_OP_ANDN),
- XLAT(FUTEX_OP_XOR),
- XLAT_END
+static const struct xlat_data futexwakeops_xdata[] = {
+ [FUTEX_OP_SET] = XLAT(FUTEX_OP_SET),
+ #define XLAT_VAL_0 ((unsigned) (FUTEX_OP_SET))
+ #define XLAT_STR_0 STRINGIFY(FUTEX_OP_SET)
+ [FUTEX_OP_ADD] = XLAT(FUTEX_OP_ADD),
+ #define XLAT_VAL_1 ((unsigned) (FUTEX_OP_ADD))
+ #define XLAT_STR_1 STRINGIFY(FUTEX_OP_ADD)
+ [FUTEX_OP_OR] = XLAT(FUTEX_OP_OR),
+ #define XLAT_VAL_2 ((unsigned) (FUTEX_OP_OR))
+ #define XLAT_STR_2 STRINGIFY(FUTEX_OP_OR)
+ [FUTEX_OP_ANDN] = XLAT(FUTEX_OP_ANDN),
+ #define XLAT_VAL_3 ((unsigned) (FUTEX_OP_ANDN))
+ #define XLAT_STR_3 STRINGIFY(FUTEX_OP_ANDN)
+ [FUTEX_OP_XOR] = XLAT(FUTEX_OP_XOR),
+ #define XLAT_VAL_4 ((unsigned) (FUTEX_OP_XOR))
+ #define XLAT_STR_4 STRINGIFY(FUTEX_OP_XOR)
 };
+static
+const struct xlat futexwakeops[1] = { {
+ .data = futexwakeops_xdata,
+ .size = ARRAY_SIZE(futexwakeops_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 5bb5b198580e64e884c33d49cb3cb0f04d4e2b40..1086fecf8470251db922a33eb982a6fc12ca5c4c 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 FUTEX_OP_SET   0
 FUTEX_OP_ADD   1
 FUTEX_OP_OR    2
index 30b2dd82c2e52bedee19e5363b2e2211ab38a585..e08df21b534bfd2be12a361462e55339b0b46368 100755 (executable)
@@ -2,7 +2,7 @@
 #
 # Copyright (c) 2014-2015 Mike Frysinger <vapier@gentoo.org>
 # Copyright (c) 2014-2015 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2014-2019 The strace developers.
+# Copyright (c) 2014-2020 The strace developers.
 # All rights reserved.
 #
 # SPDX-License-Identifier: LGPL-2.1-or-later
@@ -20,6 +20,22 @@ EOF
        exit 1
 }
 
+print_m4_record()
+{
+       local val output
+       val="$1"; shift
+       output="$1"; shift
+       [ -n "$output" ] || return 0
+
+       if [ "$first_enum" = 1 ]; then
+               printf '%s' "$val"
+       else
+               printf ',\n%s' "$val"
+       fi >> "$output"
+
+       first_enum=0
+}
+
 cond_def()
 {
        local line
@@ -60,13 +76,20 @@ print_xlat()
        else
                echo " XLAT_TYPE(${val_type}, ${val}),"
        fi
+
+       echo " #define XLAT_VAL_$xlat_flag_cnt ((${val_type:-unsigned}) (${val}))"
+       echo " #define XLAT_STR_$xlat_flag_cnt STRINGIFY(${val})"
+       xlat_flag_cnt=$((xlat_flag_cnt + 1))
+
+       [ -z "$enum" ] || print_m4_record "$val" "$output_m4"
 }
 
 print_xlat_pair()
 {
-       local val str
+       local val str macro
        val="$1"; shift
        str="$1"; shift
+       macro="$1"; shift
 
        [ 1 = "$value_indexed" ] && printf " [%s] =" "${val}"
        if [ -z "${val_type-}" ]; then
@@ -74,6 +97,12 @@ print_xlat_pair()
        else
                echo " XLAT_TYPE_PAIR(${val_type}, ${val}, \"${str}\"),"
        fi
+
+       echo " #define XLAT_VAL_$xlat_flag_cnt ((${val_type:-unsigned}) (${val}))"
+       echo " #define XLAT_STR_$xlat_flag_cnt \"${str}\""
+       xlat_flag_cnt=$((xlat_flag_cnt + 1))
+
+       [ -z "$enum" ] || print_m4_record "$macro" "$output_m4"
 }
 
 cond_xlat()
@@ -88,8 +117,8 @@ cond_xlat()
                if [ "${m}" = "${m#1<<}" ]; then
                        xlat="$(print_xlat "${val}")"
                else
-                       xlat="$(print_xlat_pair "1ULL<<${val#1<<}" "${val}")"
                        m="${m#1<<}"
+                       xlat="$(print_xlat_pair "1ULL<<${val#1<<}" "${val}" "$m")"
                fi
 
                if [ -z "${def}" ]; then
@@ -101,19 +130,31 @@ cond_xlat()
                        echo "$xlat"
                fi
        }
+
+       # Since we're calling print_xlat/print_xlat_pair in subprocess
+       xlat_flag_cnt=$((xlat_flag_cnt + 1))
+       first_enum=0
 }
 
 gen_header()
 {
-       local input="$1" output="$2" name="$3"
-       echo "generating ${output}"
+       local input="$1" output="$2" name="$3" output_m4="$4"
+
+       exec 3>&1
+
+       echo "generating ${output}" >&2
        (
        local defs="${0%/*}/../defs.h"
        local mpers="${0%/*}/../mpers_xlat.h"
        local decl="extern const struct xlat ${name}[];"
        local in_defs= in_mpers=
+       local xlat_type="XT_NORMAL"
+       local includes=""
+       local enum=""
 
+       first_enum=1
        value_indexed=0
+       xlat_flag_cnt=0
 
        if grep -F -q -x "$decl" "$defs"; then
                in_defs=1
@@ -140,9 +181,6 @@ gen_header()
                esac
 
                case $line in
-               '#stop')
-                       exit 0
-                       ;;
                '#conditional')
                        unconditional=
                        ;;
@@ -152,8 +190,18 @@ gen_header()
                '#val_type '*)
                        # to be processed during 2nd pass
                        ;;
+               '#sorted'|'#sorted '*)
+                       xlat_type="XT_SORTED"
+                       ;;
                '#value_indexed')
                        value_indexed=1
+                       xlat_type="XT_INDEXED"
+                       ;;
+               '#enum')
+                       [ -z "$output_m4" ] || enum=1
+                       ;;
+               '#include '*)
+                       includes="${includes} ${line###include }"
                        ;;
                '#'*)
                        echo "${line}"
@@ -171,6 +219,14 @@ gen_header()
 
        EOF
 
+       [ "$enum" != 1 ] || (
+               echo "generating ${output_m4}" >&2
+               printf 'dnl Generated by %s from %s; do not edit.\n' \
+                       "$0" "$input"
+               printf 'AC_DEFUN([st_CHECK_ENUMS_%s],[\n' "$name"
+               printf 'AC_CHECK_DECLS(m4_normalize([\n'
+       ) > "${output_m4}"
+
        if [ -n "$in_defs" ]; then
                cat <<-EOF
                        # ifndef IN_MPERS
@@ -184,9 +240,6 @@ gen_header()
 
                        # else
 
-                       #  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-                       static
-                       #  endif
                EOF
        else
                cat <<-EOF
@@ -196,11 +249,10 @@ gen_header()
 
                        # else
 
-                       static
                EOF
        fi
 
-       echo "const struct xlat ${name}[] = {"
+       echo "static const struct xlat_data ${name}_xdata[] = {"
 
        unconditional= val_type=
        # 2nd pass: output everything.
@@ -219,8 +271,14 @@ gen_header()
                '#unconditional')
                        unconditional=1
                        ;;
+               '#sorted'|'#sorted '*)
+                       ;;
                '#value_indexed')
                        ;;
+               '#enum')
+                       ;;
+               '#include '*)
+                       ;;
                '#val_type '*)
                        val_type="${line#\#val_type }"
                        ;;
@@ -233,7 +291,7 @@ gen_header()
                        ;;
                '1<<'[A-Z_]*)   # symbolic constants with shift
                        if [ -n "${unconditional}" ]; then
-                               print_xlat_pair "1ULL<<${line#1<<}" "${line}"
+                               print_xlat_pair "1ULL<<${line#1<<}" "${line}" "${line#1<<}"
                        else
                                cond_xlat "${line}"
                        fi
@@ -246,16 +304,78 @@ gen_header()
                        ;;
                esac
        done < "${input}"
-       echo ' XLAT_END'
+       echo '};'
+
+       [ "$enum" != 1 ] || (
+               printf '\n]),,, [\n'
+               [ -z "$includes" ] || printf '#include %s\n' $includes
+               printf '])])])\n'
+
+               # Providing macro name to main
+               echo "st_CHECK_ENUMS_${name}" >&3
+       ) >> "${output_m4}"
+
+       if [ -n "$in_defs" ]; then
+               :
+       elif [ -n "$in_mpers" ]; then
+               cat <<-EOF
+                       #  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+                       static
+                       #  endif
+               EOF
+       else
+               cat <<-EOF
+                       static
+               EOF
+       fi
 
        cat <<-EOF
-               };
+               const struct xlat ${name}[1] = { {
+                        .data = ${name}_xdata,
+                        .size = ARRAY_SIZE(${name}_xdata),
+                        .type = ${xlat_type},
+       EOF
+
+       echo " .flags_mask = 0"
+       for i in $(seq 0 "$((xlat_flag_cnt - 1))"); do
+               cat <<-EOF
+                       #  ifdef XLAT_VAL_${i}
+                         | XLAT_VAL_${i}
+                       #  endif
+               EOF
+       done
+       echo "  ,"
 
+       echo " .flags_strsz = 0"
+       for i in $(seq 0 "$((xlat_flag_cnt - 1))"); do
+               cat <<-EOF
+                       #  ifdef XLAT_STR_${i}
+                         + sizeof(XLAT_STR_${i})
+                       #  endif
+               EOF
+       done
+       echo "  ,"
+
+       cat <<-EOF
+               } };
+
+       EOF
+
+       for i in $(seq 0 "$((xlat_flag_cnt - 1))"); do
+               cat <<-EOF
+                       #  undef XLAT_STR_${i}
+                       #  undef XLAT_VAL_${i}
+               EOF
+       done
+
+       cat <<-EOF
                # endif /* !IN_MPERS */
 
                #endif /* !XLAT_MACROS_ONLY */
        EOF
        ) >"${output}"
+
+       exec 3>&-
 }
 
 gen_make()
@@ -263,7 +383,7 @@ gen_make()
        local output="$1"
        local name
        shift
-       echo "generating ${output}"
+       echo "generating ${output}" >&2
        (
                printf "XLAT_INPUT_FILES = "
                printf 'xlat/%s.in ' "$@"
@@ -283,23 +403,41 @@ gen_git()
 {
        local output="$1"
        shift
-       echo "generating ${output}"
+       echo "generating ${output}" >&2
        (
-               printf '/%s\n' .gitignore Makemodule.am
+               printf '/%s\n' .gitignore Makemodule.am st_check_enums.m4
                printf '/%s.h\n' "$@"
+               printf '/%s.m4\n' "$@"
        ) >"${output}"
 }
 
+gen_m4_entry()
+{
+       local output
+       output="$1"; shift
+
+       echo "generating $output" >&2
+       {
+               printf 'AC_DEFUN([st_CHECK_ENUMS],[\n'
+               while read fun; do
+                       printf '\t%s\n' "$fun"
+               done
+               printf '])\n'
+       } >"$output"
+}
+
 main()
 {
        case $# in
        0) set -- "${0%/*}" "${0%/*}" ;;
        2) ;;
+       3) ;;
        *) usage ;;
        esac
 
        local input="$1"
        local output="$2"
+       local output_m4="${3:-}"
        local name
        local jobs=0
        local ncpus="$(getconf _NPROCESSORS_ONLN)"
@@ -308,6 +446,7 @@ main()
                ncpus=1
 
        if [ -d "${input}" ]; then
+               (
                local f names=
                set +f
                set -- "${input}"/*.in
@@ -316,7 +455,8 @@ main()
                        [ -f "${f}" ] || continue
                        name=${f##*/}
                        name=${name%.in}
-                       gen_header "${f}" "${output}/${name}.h" "${name}" &
+                       gen_header "${f}" "${output}/${name}.h" "${name}" \
+                               "${output}/${name}.m4" &
                        pids="$pids $!"
                        names="${names} ${name}"
                        : $(( jobs += 1 ))
@@ -332,10 +472,12 @@ main()
                gen_git "${output}/.gitignore" ${names} &
                gen_make "${output}/Makemodule.am" ${names} &
                wait
+               ) | sort | gen_m4_entry "${output}/st_check_enums.m4"
        else
                name=${input##*/}
                name=${name%.in}
-               gen_header "${input}" "${output}" "${name}"
+               gen_header "${input}" "${output}" "${name}" "${output_m4}" \
+                       > /dev/null
        fi
 }
 
diff --git a/xlat/get_mempolicy_flags.h b/xlat/get_mempolicy_flags.h
new file mode 100644 (file)
index 0000000..1b01c6f
--- /dev/null
@@ -0,0 +1,84 @@
+/* Generated by ./xlat/gen.sh from ./xlat/get_mempolicy_flags.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(MPOL_F_NODE) || (defined(HAVE_DECL_MPOL_F_NODE) && HAVE_DECL_MPOL_F_NODE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((MPOL_F_NODE) == (1), "MPOL_F_NODE != 1");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define MPOL_F_NODE 1
+#endif
+#if defined(MPOL_F_ADDR) || (defined(HAVE_DECL_MPOL_F_ADDR) && HAVE_DECL_MPOL_F_ADDR)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((MPOL_F_ADDR) == (2), "MPOL_F_ADDR != 2");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define MPOL_F_ADDR 2
+#endif
+#if defined(MPOL_F_MEMS_ALLOWED) || (defined(HAVE_DECL_MPOL_F_MEMS_ALLOWED) && HAVE_DECL_MPOL_F_MEMS_ALLOWED)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((MPOL_F_MEMS_ALLOWED) == (4), "MPOL_F_MEMS_ALLOWED != 4");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define MPOL_F_MEMS_ALLOWED 4
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat get_mempolicy_flags in mpers mode
+
+# else
+
+static const struct xlat_data get_mempolicy_flags_xdata[] = {
+ XLAT(MPOL_F_NODE),
+ #define XLAT_VAL_0 ((unsigned) (MPOL_F_NODE))
+ #define XLAT_STR_0 STRINGIFY(MPOL_F_NODE)
+ XLAT(MPOL_F_ADDR),
+ #define XLAT_VAL_1 ((unsigned) (MPOL_F_ADDR))
+ #define XLAT_STR_1 STRINGIFY(MPOL_F_ADDR)
+ XLAT(MPOL_F_MEMS_ALLOWED),
+ #define XLAT_VAL_2 ((unsigned) (MPOL_F_MEMS_ALLOWED))
+ #define XLAT_STR_2 STRINGIFY(MPOL_F_MEMS_ALLOWED)
+};
+static
+const struct xlat get_mempolicy_flags[1] = { {
+ .data = get_mempolicy_flags_xdata,
+ .size = ARRAY_SIZE(get_mempolicy_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/get_mempolicy_flags.in b/xlat/get_mempolicy_flags.in
new file mode 100644 (file)
index 0000000..4e8025b
--- /dev/null
@@ -0,0 +1,3 @@
+MPOL_F_NODE    1
+MPOL_F_ADDR    2
+MPOL_F_MEMS_ALLOWED    4
index e2877d1a8d40c3453914982600cc9af250ebef3c..d6f08f7a86e2fef7dceced1c9a69f3fad06a19c2 100644 (file)
@@ -17,6 +17,13 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define GRND_RANDOM 2
 #endif
+#if defined(GRND_INSECURE) || (defined(HAVE_DECL_GRND_INSECURE) && HAVE_DECL_GRND_INSECURE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((GRND_INSECURE) == (4), "GRND_INSECURE != 4");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define GRND_INSECURE 4
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
@@ -26,13 +33,52 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat getrandom_flags[] = {
+static const struct xlat_data getrandom_flags_xdata[] = {
  XLAT(GRND_NONBLOCK),
+ #define XLAT_VAL_0 ((unsigned) (GRND_NONBLOCK))
+ #define XLAT_STR_0 STRINGIFY(GRND_NONBLOCK)
  XLAT(GRND_RANDOM),
- XLAT_END
+ #define XLAT_VAL_1 ((unsigned) (GRND_RANDOM))
+ #define XLAT_STR_1 STRINGIFY(GRND_RANDOM)
+ XLAT(GRND_INSECURE),
+ #define XLAT_VAL_2 ((unsigned) (GRND_INSECURE))
+ #define XLAT_STR_2 STRINGIFY(GRND_INSECURE)
 };
+static
+const struct xlat getrandom_flags[1] = { {
+ .data = getrandom_flags_xdata,
+ .size = ARRAY_SIZE(getrandom_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index ad1a7580606a7eeb3d138cb76a6a2405a402a8f5..96fdcb00e246e3530ed02c0cc15127a56376a95d 100644 (file)
@@ -1,2 +1,3 @@
 GRND_NONBLOCK  1
 GRND_RANDOM    2
+GRND_INSECURE  4
index ca4bd9ebd0007be6de7a859a22990488d83d3861..da49b6fefe695254877e68adc6065c7d6492b6c6 100644 (file)
@@ -12,8 +12,7 @@
 
 # else
 
-static
-const struct xlat getsock_ip_options[] = {
+static const struct xlat_data getsock_ip_options_xdata[] = {
 /*
 * Options specific to getsockopt(SOL_IP).
 * Common {g,s}etsockopt(SOL_IP) options
@@ -22,70 +21,279 @@ const struct xlat getsock_ip_options[] = {
 
 #if defined(ARPT_SO_GET_INFO) || (defined(HAVE_DECL_ARPT_SO_GET_INFO) && HAVE_DECL_ARPT_SO_GET_INFO)
   XLAT(ARPT_SO_GET_INFO),
+ #define XLAT_VAL_0 ((unsigned) (ARPT_SO_GET_INFO))
+ #define XLAT_STR_0 STRINGIFY(ARPT_SO_GET_INFO)
 #endif
 #if defined(ARPT_SO_GET_ENTRIES) || (defined(HAVE_DECL_ARPT_SO_GET_ENTRIES) && HAVE_DECL_ARPT_SO_GET_ENTRIES)
   XLAT(ARPT_SO_GET_ENTRIES),
+ #define XLAT_VAL_1 ((unsigned) (ARPT_SO_GET_ENTRIES))
+ #define XLAT_STR_1 STRINGIFY(ARPT_SO_GET_ENTRIES)
 #endif
 #if defined(ARPT_SO_GET_REVISION_MATCH) || (defined(HAVE_DECL_ARPT_SO_GET_REVISION_MATCH) && HAVE_DECL_ARPT_SO_GET_REVISION_MATCH)
   XLAT(ARPT_SO_GET_REVISION_MATCH),
+ #define XLAT_VAL_2 ((unsigned) (ARPT_SO_GET_REVISION_MATCH))
+ #define XLAT_STR_2 STRINGIFY(ARPT_SO_GET_REVISION_MATCH)
 #endif
 #if defined(ARPT_SO_GET_REVISION_TARGET) || (defined(HAVE_DECL_ARPT_SO_GET_REVISION_TARGET) && HAVE_DECL_ARPT_SO_GET_REVISION_TARGET)
   XLAT(ARPT_SO_GET_REVISION_TARGET),
+ #define XLAT_VAL_3 ((unsigned) (ARPT_SO_GET_REVISION_TARGET))
+ #define XLAT_STR_3 STRINGIFY(ARPT_SO_GET_REVISION_TARGET)
 #endif
 
 #if defined(EBT_SO_GET_INFO) || (defined(HAVE_DECL_EBT_SO_GET_INFO) && HAVE_DECL_EBT_SO_GET_INFO)
   XLAT(EBT_SO_GET_INFO),
+ #define XLAT_VAL_4 ((unsigned) (EBT_SO_GET_INFO))
+ #define XLAT_STR_4 STRINGIFY(EBT_SO_GET_INFO)
 #endif
 #if defined(EBT_SO_GET_ENTRIES) || (defined(HAVE_DECL_EBT_SO_GET_ENTRIES) && HAVE_DECL_EBT_SO_GET_ENTRIES)
   XLAT(EBT_SO_GET_ENTRIES),
+ #define XLAT_VAL_5 ((unsigned) (EBT_SO_GET_ENTRIES))
+ #define XLAT_STR_5 STRINGIFY(EBT_SO_GET_ENTRIES)
 #endif
 #if defined(EBT_SO_GET_INIT_INFO) || (defined(HAVE_DECL_EBT_SO_GET_INIT_INFO) && HAVE_DECL_EBT_SO_GET_INIT_INFO)
   XLAT(EBT_SO_GET_INIT_INFO),
+ #define XLAT_VAL_6 ((unsigned) (EBT_SO_GET_INIT_INFO))
+ #define XLAT_STR_6 STRINGIFY(EBT_SO_GET_INIT_INFO)
 #endif
 #if defined(EBT_SO_GET_INIT_ENTRIES) || (defined(HAVE_DECL_EBT_SO_GET_INIT_ENTRIES) && HAVE_DECL_EBT_SO_GET_INIT_ENTRIES)
   XLAT(EBT_SO_GET_INIT_ENTRIES),
+ #define XLAT_VAL_7 ((unsigned) (EBT_SO_GET_INIT_ENTRIES))
+ #define XLAT_STR_7 STRINGIFY(EBT_SO_GET_INIT_ENTRIES)
 #endif
 
 #if defined(IP_VS_SO_GET_VERSION) || (defined(HAVE_DECL_IP_VS_SO_GET_VERSION) && HAVE_DECL_IP_VS_SO_GET_VERSION)
   XLAT(IP_VS_SO_GET_VERSION),
+ #define XLAT_VAL_8 ((unsigned) (IP_VS_SO_GET_VERSION))
+ #define XLAT_STR_8 STRINGIFY(IP_VS_SO_GET_VERSION)
 #endif
 #if defined(IP_VS_SO_GET_INFO) || (defined(HAVE_DECL_IP_VS_SO_GET_INFO) && HAVE_DECL_IP_VS_SO_GET_INFO)
   XLAT(IP_VS_SO_GET_INFO),
+ #define XLAT_VAL_9 ((unsigned) (IP_VS_SO_GET_INFO))
+ #define XLAT_STR_9 STRINGIFY(IP_VS_SO_GET_INFO)
 #endif
 #if defined(IP_VS_SO_GET_SERVICES) || (defined(HAVE_DECL_IP_VS_SO_GET_SERVICES) && HAVE_DECL_IP_VS_SO_GET_SERVICES)
   XLAT(IP_VS_SO_GET_SERVICES),
+ #define XLAT_VAL_10 ((unsigned) (IP_VS_SO_GET_SERVICES))
+ #define XLAT_STR_10 STRINGIFY(IP_VS_SO_GET_SERVICES)
 #endif
 #if defined(IP_VS_SO_GET_SERVICE) || (defined(HAVE_DECL_IP_VS_SO_GET_SERVICE) && HAVE_DECL_IP_VS_SO_GET_SERVICE)
   XLAT(IP_VS_SO_GET_SERVICE),
+ #define XLAT_VAL_11 ((unsigned) (IP_VS_SO_GET_SERVICE))
+ #define XLAT_STR_11 STRINGIFY(IP_VS_SO_GET_SERVICE)
 #endif
 #if defined(IP_VS_SO_GET_DESTS) || (defined(HAVE_DECL_IP_VS_SO_GET_DESTS) && HAVE_DECL_IP_VS_SO_GET_DESTS)
   XLAT(IP_VS_SO_GET_DESTS),
+ #define XLAT_VAL_12 ((unsigned) (IP_VS_SO_GET_DESTS))
+ #define XLAT_STR_12 STRINGIFY(IP_VS_SO_GET_DESTS)
 #endif
 #if defined(IP_VS_SO_GET_DEST) || (defined(HAVE_DECL_IP_VS_SO_GET_DEST) && HAVE_DECL_IP_VS_SO_GET_DEST)
   XLAT(IP_VS_SO_GET_DEST),
+ #define XLAT_VAL_13 ((unsigned) (IP_VS_SO_GET_DEST))
+ #define XLAT_STR_13 STRINGIFY(IP_VS_SO_GET_DEST)
 #endif
 #if defined(IP_VS_SO_GET_TIMEOUT) || (defined(HAVE_DECL_IP_VS_SO_GET_TIMEOUT) && HAVE_DECL_IP_VS_SO_GET_TIMEOUT)
   XLAT(IP_VS_SO_GET_TIMEOUT),
+ #define XLAT_VAL_14 ((unsigned) (IP_VS_SO_GET_TIMEOUT))
+ #define XLAT_STR_14 STRINGIFY(IP_VS_SO_GET_TIMEOUT)
 #endif
 #if defined(IP_VS_SO_GET_DAEMON) || (defined(HAVE_DECL_IP_VS_SO_GET_DAEMON) && HAVE_DECL_IP_VS_SO_GET_DAEMON)
   XLAT(IP_VS_SO_GET_DAEMON),
+ #define XLAT_VAL_15 ((unsigned) (IP_VS_SO_GET_DAEMON))
+ #define XLAT_STR_15 STRINGIFY(IP_VS_SO_GET_DAEMON)
 #endif
 
 #if defined(IPT_SO_GET_INFO) || (defined(HAVE_DECL_IPT_SO_GET_INFO) && HAVE_DECL_IPT_SO_GET_INFO)
   XLAT(IPT_SO_GET_INFO),
+ #define XLAT_VAL_16 ((unsigned) (IPT_SO_GET_INFO))
+ #define XLAT_STR_16 STRINGIFY(IPT_SO_GET_INFO)
 #endif
 #if defined(IPT_SO_GET_ENTRIES) || (defined(HAVE_DECL_IPT_SO_GET_ENTRIES) && HAVE_DECL_IPT_SO_GET_ENTRIES)
   XLAT(IPT_SO_GET_ENTRIES),
+ #define XLAT_VAL_17 ((unsigned) (IPT_SO_GET_ENTRIES))
+ #define XLAT_STR_17 STRINGIFY(IPT_SO_GET_ENTRIES)
 #endif
 #if defined(IPT_SO_GET_REVISION_MATCH) || (defined(HAVE_DECL_IPT_SO_GET_REVISION_MATCH) && HAVE_DECL_IPT_SO_GET_REVISION_MATCH)
   XLAT(IPT_SO_GET_REVISION_MATCH),
+ #define XLAT_VAL_18 ((unsigned) (IPT_SO_GET_REVISION_MATCH))
+ #define XLAT_STR_18 STRINGIFY(IPT_SO_GET_REVISION_MATCH)
 #endif
 #if defined(IPT_SO_GET_REVISION_TARGET) || (defined(HAVE_DECL_IPT_SO_GET_REVISION_TARGET) && HAVE_DECL_IPT_SO_GET_REVISION_TARGET)
   XLAT(IPT_SO_GET_REVISION_TARGET),
+ #define XLAT_VAL_19 ((unsigned) (IPT_SO_GET_REVISION_TARGET))
+ #define XLAT_STR_19 STRINGIFY(IPT_SO_GET_REVISION_TARGET)
 #endif
- XLAT_END
 };
+static
+const struct xlat getsock_ip_options[1] = { {
+ .data = getsock_ip_options_xdata,
+ .size = ARRAY_SIZE(getsock_ip_options_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 6525dfdb58a09ba1afacdf6c57a873b3d109ae59..e91371610093d82700442bab9c0d3159db9c2fd2 100644 (file)
@@ -12,8 +12,7 @@
 
 # else
 
-static
-const struct xlat getsock_ipv6_options[] = {
+static const struct xlat_data getsock_ipv6_options_xdata[] = {
 /*
 * Options specific to getsockopt(SOL_IPV6).
 * Common {g,s}etsockopt(SOL_IPV6) options
@@ -22,19 +21,68 @@ const struct xlat getsock_ipv6_options[] = {
 
 #if defined(IP6T_SO_GET_INFO) || (defined(HAVE_DECL_IP6T_SO_GET_INFO) && HAVE_DECL_IP6T_SO_GET_INFO)
   XLAT(IP6T_SO_GET_INFO),
+ #define XLAT_VAL_0 ((unsigned) (IP6T_SO_GET_INFO))
+ #define XLAT_STR_0 STRINGIFY(IP6T_SO_GET_INFO)
 #endif
 #if defined(IP6T_SO_GET_ENTRIES) || (defined(HAVE_DECL_IP6T_SO_GET_ENTRIES) && HAVE_DECL_IP6T_SO_GET_ENTRIES)
   XLAT(IP6T_SO_GET_ENTRIES),
+ #define XLAT_VAL_1 ((unsigned) (IP6T_SO_GET_ENTRIES))
+ #define XLAT_STR_1 STRINGIFY(IP6T_SO_GET_ENTRIES)
 #endif
 #if defined(IP6T_SO_GET_REVISION_MATCH) || (defined(HAVE_DECL_IP6T_SO_GET_REVISION_MATCH) && HAVE_DECL_IP6T_SO_GET_REVISION_MATCH)
   XLAT(IP6T_SO_GET_REVISION_MATCH),
+ #define XLAT_VAL_2 ((unsigned) (IP6T_SO_GET_REVISION_MATCH))
+ #define XLAT_STR_2 STRINGIFY(IP6T_SO_GET_REVISION_MATCH)
 #endif
 #if defined(IP6T_SO_GET_REVISION_TARGET) || (defined(HAVE_DECL_IP6T_SO_GET_REVISION_TARGET) && HAVE_DECL_IP6T_SO_GET_REVISION_TARGET)
   XLAT(IP6T_SO_GET_REVISION_TARGET),
+ #define XLAT_VAL_3 ((unsigned) (IP6T_SO_GET_REVISION_TARGET))
+ #define XLAT_STR_3 STRINGIFY(IP6T_SO_GET_REVISION_TARGET)
 #endif
- XLAT_END
 };
+static
+const struct xlat getsock_ipv6_options[1] = { {
+ .data = getsock_ipv6_options_xdata,
+ .size = ARRAY_SIZE(getsock_ipv6_options_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 1f2035fd4509e312d6e8d37fe39543cb228a3f2c..c201df853bb884a1d47861dc88f0bf023f925421 100644 (file)
@@ -29,16 +29,44 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat getsock_options[] = {
+static const struct xlat_data getsock_options_xdata[] = {
 #if defined __hppa__
  XLAT(SO_GET_FILTER),
+ #define XLAT_VAL_0 ((unsigned) (SO_GET_FILTER))
+ #define XLAT_STR_0 STRINGIFY(SO_GET_FILTER)
 #else
  XLAT(SO_GET_FILTER),
+ #define XLAT_VAL_1 ((unsigned) (SO_GET_FILTER))
+ #define XLAT_STR_1 STRINGIFY(SO_GET_FILTER)
 #endif
- XLAT_END
 };
+static
+const struct xlat getsock_options[1] = { {
+ .data = getsock_options_xdata,
+ .size = ARRAY_SIZE(getsock_options_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index a989ff2c57a064a5bcccfa4caeb7154c5a7eb17e..84e28a2375c211a9f38afe294b760889e893abe1 100644 (file)
@@ -47,16 +47,74 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat hci_channels[] = {
+static const struct xlat_data hci_channels_xdata[] = {
  [HCI_CHANNEL_RAW] = XLAT(HCI_CHANNEL_RAW),
+ #define XLAT_VAL_0 ((unsigned) (HCI_CHANNEL_RAW))
+ #define XLAT_STR_0 STRINGIFY(HCI_CHANNEL_RAW)
  [HCI_CHANNEL_USER] = XLAT(HCI_CHANNEL_USER),
+ #define XLAT_VAL_1 ((unsigned) (HCI_CHANNEL_USER))
+ #define XLAT_STR_1 STRINGIFY(HCI_CHANNEL_USER)
  [HCI_CHANNEL_MONITOR] = XLAT(HCI_CHANNEL_MONITOR),
+ #define XLAT_VAL_2 ((unsigned) (HCI_CHANNEL_MONITOR))
+ #define XLAT_STR_2 STRINGIFY(HCI_CHANNEL_MONITOR)
  [HCI_CHANNEL_CONTROL] = XLAT(HCI_CHANNEL_CONTROL),
+ #define XLAT_VAL_3 ((unsigned) (HCI_CHANNEL_CONTROL))
+ #define XLAT_STR_3 STRINGIFY(HCI_CHANNEL_CONTROL)
  [HCI_CHANNEL_LOGGING] = XLAT(HCI_CHANNEL_LOGGING),
- XLAT_END
+ #define XLAT_VAL_4 ((unsigned) (HCI_CHANNEL_LOGGING))
+ #define XLAT_STR_4 STRINGIFY(HCI_CHANNEL_LOGGING)
 };
+static
+const struct xlat hci_channels[1] = { {
+ .data = hci_channels_xdata,
+ .size = ARRAY_SIZE(hci_channels_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/hdio_drive_cmds.h b/xlat/hdio_drive_cmds.h
new file mode 100644 (file)
index 0000000..a97c9f5
--- /dev/null
@@ -0,0 +1,1706 @@
+/* Generated by ./xlat/gen.sh from ./xlat/hdio_drive_cmds.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(ATA_CMD_NOP) || (defined(HAVE_DECL_ATA_CMD_NOP) && HAVE_DECL_ATA_CMD_NOP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_NOP) == (0x00), "ATA_CMD_NOP != 0x00");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_NOP 0x00
+#endif
+#if defined(ATA_CMD_CFA_REQ_EXT_ERR) || (defined(HAVE_DECL_ATA_CMD_CFA_REQ_EXT_ERR) && HAVE_DECL_ATA_CMD_CFA_REQ_EXT_ERR)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_CFA_REQ_EXT_ERR) == (0x03), "ATA_CMD_CFA_REQ_EXT_ERR != 0x03");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_CFA_REQ_EXT_ERR 0x03
+#endif
+#if defined(ATA_CMD_DSM) || (defined(HAVE_DECL_ATA_CMD_DSM) && HAVE_DECL_ATA_CMD_DSM)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_DSM) == (0x06), "ATA_CMD_DSM != 0x06");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_DSM 0x06
+#endif
+#if defined(ATA_CMD_DEV_RESET) || (defined(HAVE_DECL_ATA_CMD_DEV_RESET) && HAVE_DECL_ATA_CMD_DEV_RESET)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_DEV_RESET) == (0x08), "ATA_CMD_DEV_RESET != 0x08");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_DEV_RESET 0x08
+#endif
+#if defined(ATA_CMD_REQ_SENSE_DATA) || (defined(HAVE_DECL_ATA_CMD_REQ_SENSE_DATA) && HAVE_DECL_ATA_CMD_REQ_SENSE_DATA)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_REQ_SENSE_DATA) == (0x0B), "ATA_CMD_REQ_SENSE_DATA != 0x0B");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_REQ_SENSE_DATA 0x0B
+#endif
+#if defined(ATA_CMD_RESTORE) || (defined(HAVE_DECL_ATA_CMD_RESTORE) && HAVE_DECL_ATA_CMD_RESTORE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_RESTORE) == (0x10), "ATA_CMD_RESTORE != 0x10");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_RESTORE 0x10
+#endif
+#if defined(ATA_CMD_PIO_READ) || (defined(HAVE_DECL_ATA_CMD_PIO_READ) && HAVE_DECL_ATA_CMD_PIO_READ)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_PIO_READ) == (0x20), "ATA_CMD_PIO_READ != 0x20");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_PIO_READ 0x20
+#endif
+#if defined(ATA_CMD_READ_LONG) || (defined(HAVE_DECL_ATA_CMD_READ_LONG) && HAVE_DECL_ATA_CMD_READ_LONG)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_READ_LONG) == (0x22), "ATA_CMD_READ_LONG != 0x22");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_READ_LONG 0x22
+#endif
+#if defined(ATA_CMD_READ_LONG_ONCE) || (defined(HAVE_DECL_ATA_CMD_READ_LONG_ONCE) && HAVE_DECL_ATA_CMD_READ_LONG_ONCE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_READ_LONG_ONCE) == (0x23), "ATA_CMD_READ_LONG_ONCE != 0x23");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_READ_LONG_ONCE 0x23
+#endif
+#if defined(ATA_CMD_PIO_READ_EXT) || (defined(HAVE_DECL_ATA_CMD_PIO_READ_EXT) && HAVE_DECL_ATA_CMD_PIO_READ_EXT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_PIO_READ_EXT) == (0x24), "ATA_CMD_PIO_READ_EXT != 0x24");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_PIO_READ_EXT 0x24
+#endif
+#if defined(ATA_CMD_READ_EXT) || (defined(HAVE_DECL_ATA_CMD_READ_EXT) && HAVE_DECL_ATA_CMD_READ_EXT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_READ_EXT) == (0x25), "ATA_CMD_READ_EXT != 0x25");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_READ_EXT 0x25
+#endif
+#if defined(ATA_CMD_READ_QUEUED) || (defined(HAVE_DECL_ATA_CMD_READ_QUEUED) && HAVE_DECL_ATA_CMD_READ_QUEUED)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_READ_QUEUED) == (0x26), "ATA_CMD_READ_QUEUED != 0x26");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_READ_QUEUED 0x26
+#endif
+#if defined(ATA_CMD_READ_NATIVE_MAX_EXT) || (defined(HAVE_DECL_ATA_CMD_READ_NATIVE_MAX_EXT) && HAVE_DECL_ATA_CMD_READ_NATIVE_MAX_EXT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_READ_NATIVE_MAX_EXT) == (0x27), "ATA_CMD_READ_NATIVE_MAX_EXT != 0x27");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_READ_NATIVE_MAX_EXT 0x27
+#endif
+#if defined(ATA_CMD_READ_MULTI_EXT) || (defined(HAVE_DECL_ATA_CMD_READ_MULTI_EXT) && HAVE_DECL_ATA_CMD_READ_MULTI_EXT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_READ_MULTI_EXT) == (0x29), "ATA_CMD_READ_MULTI_EXT != 0x29");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_READ_MULTI_EXT 0x29
+#endif
+#if defined(ATA_CMD_READ_STREAM_DMA_EXT) || (defined(HAVE_DECL_ATA_CMD_READ_STREAM_DMA_EXT) && HAVE_DECL_ATA_CMD_READ_STREAM_DMA_EXT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_READ_STREAM_DMA_EXT) == (0x2A), "ATA_CMD_READ_STREAM_DMA_EXT != 0x2A");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_READ_STREAM_DMA_EXT 0x2A
+#endif
+#if defined(ATA_CMD_READ_STREAM_EXT) || (defined(HAVE_DECL_ATA_CMD_READ_STREAM_EXT) && HAVE_DECL_ATA_CMD_READ_STREAM_EXT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_READ_STREAM_EXT) == (0x2B), "ATA_CMD_READ_STREAM_EXT != 0x2B");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_READ_STREAM_EXT 0x2B
+#endif
+#if defined(ATA_CMD_READ_LOG_EXT) || (defined(HAVE_DECL_ATA_CMD_READ_LOG_EXT) && HAVE_DECL_ATA_CMD_READ_LOG_EXT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_READ_LOG_EXT) == (0x2F), "ATA_CMD_READ_LOG_EXT != 0x2F");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_READ_LOG_EXT 0x2F
+#endif
+#if defined(ATA_CMD_PIO_WRITE) || (defined(HAVE_DECL_ATA_CMD_PIO_WRITE) && HAVE_DECL_ATA_CMD_PIO_WRITE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_PIO_WRITE) == (0x30), "ATA_CMD_PIO_WRITE != 0x30");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_PIO_WRITE 0x30
+#endif
+#if defined(ATA_CMD_WRITE_LONG) || (defined(HAVE_DECL_ATA_CMD_WRITE_LONG) && HAVE_DECL_ATA_CMD_WRITE_LONG)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_WRITE_LONG) == (0x32), "ATA_CMD_WRITE_LONG != 0x32");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_WRITE_LONG 0x32
+#endif
+#if defined(ATA_CMD_WRITE_LONG_ONCE) || (defined(HAVE_DECL_ATA_CMD_WRITE_LONG_ONCE) && HAVE_DECL_ATA_CMD_WRITE_LONG_ONCE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_WRITE_LONG_ONCE) == (0x33), "ATA_CMD_WRITE_LONG_ONCE != 0x33");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_WRITE_LONG_ONCE 0x33
+#endif
+#if defined(ATA_CMD_PIO_WRITE_EXT) || (defined(HAVE_DECL_ATA_CMD_PIO_WRITE_EXT) && HAVE_DECL_ATA_CMD_PIO_WRITE_EXT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_PIO_WRITE_EXT) == (0x34), "ATA_CMD_PIO_WRITE_EXT != 0x34");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_PIO_WRITE_EXT 0x34
+#endif
+#if defined(ATA_CMD_WRITE_EXT) || (defined(HAVE_DECL_ATA_CMD_WRITE_EXT) && HAVE_DECL_ATA_CMD_WRITE_EXT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_WRITE_EXT) == (0x35), "ATA_CMD_WRITE_EXT != 0x35");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_WRITE_EXT 0x35
+#endif
+#if defined(ATA_CMD_WRITE_QUEUED) || (defined(HAVE_DECL_ATA_CMD_WRITE_QUEUED) && HAVE_DECL_ATA_CMD_WRITE_QUEUED)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_WRITE_QUEUED) == (0x36), "ATA_CMD_WRITE_QUEUED != 0x36");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_WRITE_QUEUED 0x36
+#endif
+#if defined(ATA_CMD_SET_MAX_EXT) || (defined(HAVE_DECL_ATA_CMD_SET_MAX_EXT) && HAVE_DECL_ATA_CMD_SET_MAX_EXT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_SET_MAX_EXT) == (0x37), "ATA_CMD_SET_MAX_EXT != 0x37");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_SET_MAX_EXT 0x37
+#endif
+#if defined(ATA_CMD_CFA_WRITE_NE) || (defined(HAVE_DECL_ATA_CMD_CFA_WRITE_NE) && HAVE_DECL_ATA_CMD_CFA_WRITE_NE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_CFA_WRITE_NE) == (0x38), "ATA_CMD_CFA_WRITE_NE != 0x38");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_CFA_WRITE_NE 0x38
+#endif
+#if defined(ATA_CMD_WRITE_MULTI_EXT) || (defined(HAVE_DECL_ATA_CMD_WRITE_MULTI_EXT) && HAVE_DECL_ATA_CMD_WRITE_MULTI_EXT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_WRITE_MULTI_EXT) == (0x39), "ATA_CMD_WRITE_MULTI_EXT != 0x39");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_WRITE_MULTI_EXT 0x39
+#endif
+#if defined(ATA_CMD_WRITE_STREAM_DMA_EXT) || (defined(HAVE_DECL_ATA_CMD_WRITE_STREAM_DMA_EXT) && HAVE_DECL_ATA_CMD_WRITE_STREAM_DMA_EXT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_WRITE_STREAM_DMA_EXT) == (0x3A), "ATA_CMD_WRITE_STREAM_DMA_EXT != 0x3A");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_WRITE_STREAM_DMA_EXT 0x3A
+#endif
+#if defined(ATA_CMD_WRITE_STREAM_EXT) || (defined(HAVE_DECL_ATA_CMD_WRITE_STREAM_EXT) && HAVE_DECL_ATA_CMD_WRITE_STREAM_EXT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_WRITE_STREAM_EXT) == (0x3B), "ATA_CMD_WRITE_STREAM_EXT != 0x3B");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_WRITE_STREAM_EXT 0x3B
+#endif
+#if defined(ATA_CMD_WRITE_FUA_EXT) || (defined(HAVE_DECL_ATA_CMD_WRITE_FUA_EXT) && HAVE_DECL_ATA_CMD_WRITE_FUA_EXT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_WRITE_FUA_EXT) == (0x3D), "ATA_CMD_WRITE_FUA_EXT != 0x3D");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_WRITE_FUA_EXT 0x3D
+#endif
+#if defined(ATA_CMD_WRITE_QUEUED_FUA_EXT) || (defined(HAVE_DECL_ATA_CMD_WRITE_QUEUED_FUA_EXT) && HAVE_DECL_ATA_CMD_WRITE_QUEUED_FUA_EXT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_WRITE_QUEUED_FUA_EXT) == (0x3E), "ATA_CMD_WRITE_QUEUED_FUA_EXT != 0x3E");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_WRITE_QUEUED_FUA_EXT 0x3E
+#endif
+#if defined(ATA_CMD_WRITE_LOG_EXT) || (defined(HAVE_DECL_ATA_CMD_WRITE_LOG_EXT) && HAVE_DECL_ATA_CMD_WRITE_LOG_EXT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_WRITE_LOG_EXT) == (0x3F), "ATA_CMD_WRITE_LOG_EXT != 0x3F");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_WRITE_LOG_EXT 0x3F
+#endif
+#if defined(ATA_CMD_VERIFY) || (defined(HAVE_DECL_ATA_CMD_VERIFY) && HAVE_DECL_ATA_CMD_VERIFY)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_VERIFY) == (0x40), "ATA_CMD_VERIFY != 0x40");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_VERIFY 0x40
+#endif
+#if defined(ATA_CMD_VERIFY_EXT) || (defined(HAVE_DECL_ATA_CMD_VERIFY_EXT) && HAVE_DECL_ATA_CMD_VERIFY_EXT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_VERIFY_EXT) == (0x42), "ATA_CMD_VERIFY_EXT != 0x42");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_VERIFY_EXT 0x42
+#endif
+#if defined(ATA_CMD_WRITE_UNCORR_EXT) || (defined(HAVE_DECL_ATA_CMD_WRITE_UNCORR_EXT) && HAVE_DECL_ATA_CMD_WRITE_UNCORR_EXT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_WRITE_UNCORR_EXT) == (0x45), "ATA_CMD_WRITE_UNCORR_EXT != 0x45");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_WRITE_UNCORR_EXT 0x45
+#endif
+#if defined(ATA_CMD_READ_LOG_DMA_EXT) || (defined(HAVE_DECL_ATA_CMD_READ_LOG_DMA_EXT) && HAVE_DECL_ATA_CMD_READ_LOG_DMA_EXT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_READ_LOG_DMA_EXT) == (0x47), "ATA_CMD_READ_LOG_DMA_EXT != 0x47");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_READ_LOG_DMA_EXT 0x47
+#endif
+#if defined(ATA_CMD_ZAC_MGMT_IN) || (defined(HAVE_DECL_ATA_CMD_ZAC_MGMT_IN) && HAVE_DECL_ATA_CMD_ZAC_MGMT_IN)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_ZAC_MGMT_IN) == (0x4A), "ATA_CMD_ZAC_MGMT_IN != 0x4A");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_ZAC_MGMT_IN 0x4A
+#endif
+#if defined(ATA_CMD_CONFIG_STREAM) || (defined(HAVE_DECL_ATA_CMD_CONFIG_STREAM) && HAVE_DECL_ATA_CMD_CONFIG_STREAM)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_CONFIG_STREAM) == (0x51), "ATA_CMD_CONFIG_STREAM != 0x51");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_CONFIG_STREAM 0x51
+#endif
+#if defined(ATA_CMD_WRITE_LOG_DMA_EXT) || (defined(HAVE_DECL_ATA_CMD_WRITE_LOG_DMA_EXT) && HAVE_DECL_ATA_CMD_WRITE_LOG_DMA_EXT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_WRITE_LOG_DMA_EXT) == (0x57), "ATA_CMD_WRITE_LOG_DMA_EXT != 0x57");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_WRITE_LOG_DMA_EXT 0x57
+#endif
+#if defined(ATA_CMD_TRUSTED_NONDATA) || (defined(HAVE_DECL_ATA_CMD_TRUSTED_NONDATA) && HAVE_DECL_ATA_CMD_TRUSTED_NONDATA)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_TRUSTED_NONDATA) == (0x5B), "ATA_CMD_TRUSTED_NONDATA != 0x5B");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_TRUSTED_NONDATA 0x5B
+#endif
+#if defined(ATA_CMD_TRUSTED_RCV) || (defined(HAVE_DECL_ATA_CMD_TRUSTED_RCV) && HAVE_DECL_ATA_CMD_TRUSTED_RCV)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_TRUSTED_RCV) == (0x5C), "ATA_CMD_TRUSTED_RCV != 0x5C");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_TRUSTED_RCV 0x5C
+#endif
+#if defined(ATA_CMD_TRUSTED_RCV_DMA) || (defined(HAVE_DECL_ATA_CMD_TRUSTED_RCV_DMA) && HAVE_DECL_ATA_CMD_TRUSTED_RCV_DMA)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_TRUSTED_RCV_DMA) == (0x5D), "ATA_CMD_TRUSTED_RCV_DMA != 0x5D");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_TRUSTED_RCV_DMA 0x5D
+#endif
+#if defined(ATA_CMD_TRUSTED_SND) || (defined(HAVE_DECL_ATA_CMD_TRUSTED_SND) && HAVE_DECL_ATA_CMD_TRUSTED_SND)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_TRUSTED_SND) == (0x5E), "ATA_CMD_TRUSTED_SND != 0x5E");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_TRUSTED_SND 0x5E
+#endif
+#if defined(ATA_CMD_TRUSTED_SND_DMA) || (defined(HAVE_DECL_ATA_CMD_TRUSTED_SND_DMA) && HAVE_DECL_ATA_CMD_TRUSTED_SND_DMA)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_TRUSTED_SND_DMA) == (0x5F), "ATA_CMD_TRUSTED_SND_DMA != 0x5F");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_TRUSTED_SND_DMA 0x5F
+#endif
+#if defined(ATA_CMD_FPDMA_READ) || (defined(HAVE_DECL_ATA_CMD_FPDMA_READ) && HAVE_DECL_ATA_CMD_FPDMA_READ)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_FPDMA_READ) == (0x60), "ATA_CMD_FPDMA_READ != 0x60");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_FPDMA_READ 0x60
+#endif
+#if defined(ATA_CMD_FPDMA_WRITE) || (defined(HAVE_DECL_ATA_CMD_FPDMA_WRITE) && HAVE_DECL_ATA_CMD_FPDMA_WRITE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_FPDMA_WRITE) == (0x61), "ATA_CMD_FPDMA_WRITE != 0x61");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_FPDMA_WRITE 0x61
+#endif
+#if defined(ATA_CMD_NCQ_NON_DATA) || (defined(HAVE_DECL_ATA_CMD_NCQ_NON_DATA) && HAVE_DECL_ATA_CMD_NCQ_NON_DATA)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_NCQ_NON_DATA) == (0x63), "ATA_CMD_NCQ_NON_DATA != 0x63");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_NCQ_NON_DATA 0x63
+#endif
+#if defined(ATA_CMD_FPDMA_SEND) || (defined(HAVE_DECL_ATA_CMD_FPDMA_SEND) && HAVE_DECL_ATA_CMD_FPDMA_SEND)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_FPDMA_SEND) == (0x64), "ATA_CMD_FPDMA_SEND != 0x64");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_FPDMA_SEND 0x64
+#endif
+#if defined(ATA_CMD_FPDMA_RECV) || (defined(HAVE_DECL_ATA_CMD_FPDMA_RECV) && HAVE_DECL_ATA_CMD_FPDMA_RECV)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_FPDMA_RECV) == (0x65), "ATA_CMD_FPDMA_RECV != 0x65");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_FPDMA_RECV 0x65
+#endif
+#if defined(ATA_CMD_CFA_TRANS_SECT) || (defined(HAVE_DECL_ATA_CMD_CFA_TRANS_SECT) && HAVE_DECL_ATA_CMD_CFA_TRANS_SECT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_CFA_TRANS_SECT) == (0x87), "ATA_CMD_CFA_TRANS_SECT != 0x87");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_CFA_TRANS_SECT 0x87
+#endif
+#if defined(ATA_CMD_EDD) || (defined(HAVE_DECL_ATA_CMD_EDD) && HAVE_DECL_ATA_CMD_EDD)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_EDD) == (0x90), "ATA_CMD_EDD != 0x90");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_EDD 0x90
+#endif
+#if defined(ATA_CMD_INIT_DEV_PARAMS) || (defined(HAVE_DECL_ATA_CMD_INIT_DEV_PARAMS) && HAVE_DECL_ATA_CMD_INIT_DEV_PARAMS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_INIT_DEV_PARAMS) == (0x91), "ATA_CMD_INIT_DEV_PARAMS != 0x91");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_INIT_DEV_PARAMS 0x91
+#endif
+#if defined(ATA_CMD_DOWNLOAD_MICRO) || (defined(HAVE_DECL_ATA_CMD_DOWNLOAD_MICRO) && HAVE_DECL_ATA_CMD_DOWNLOAD_MICRO)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_DOWNLOAD_MICRO) == (0x92), "ATA_CMD_DOWNLOAD_MICRO != 0x92");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_DOWNLOAD_MICRO 0x92
+#endif
+#if defined(ATA_CMD_DOWNLOAD_MICRO_DMA) || (defined(HAVE_DECL_ATA_CMD_DOWNLOAD_MICRO_DMA) && HAVE_DECL_ATA_CMD_DOWNLOAD_MICRO_DMA)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_DOWNLOAD_MICRO_DMA) == (0x93), "ATA_CMD_DOWNLOAD_MICRO_DMA != 0x93");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_DOWNLOAD_MICRO_DMA 0x93
+#endif
+#if defined(ATA_CMD_ZAC_MGMT_OUT) || (defined(HAVE_DECL_ATA_CMD_ZAC_MGMT_OUT) && HAVE_DECL_ATA_CMD_ZAC_MGMT_OUT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_ZAC_MGMT_OUT) == (0x9F), "ATA_CMD_ZAC_MGMT_OUT != 0x9F");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_ZAC_MGMT_OUT 0x9F
+#endif
+#if defined(ATA_CMD_PACKET) || (defined(HAVE_DECL_ATA_CMD_PACKET) && HAVE_DECL_ATA_CMD_PACKET)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_PACKET) == (0xA0), "ATA_CMD_PACKET != 0xA0");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_PACKET 0xA0
+#endif
+#if defined(ATA_CMD_ID_ATAPI) || (defined(HAVE_DECL_ATA_CMD_ID_ATAPI) && HAVE_DECL_ATA_CMD_ID_ATAPI)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_ID_ATAPI) == (0xA1), "ATA_CMD_ID_ATAPI != 0xA1");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_ID_ATAPI 0xA1
+#endif
+#if defined(ATA_CMD_SERVICE) || (defined(HAVE_DECL_ATA_CMD_SERVICE) && HAVE_DECL_ATA_CMD_SERVICE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_SERVICE) == (0xA2), "ATA_CMD_SERVICE != 0xA2");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_SERVICE 0xA2
+#endif
+#if defined(ATA_CMD_SMART) || (defined(HAVE_DECL_ATA_CMD_SMART) && HAVE_DECL_ATA_CMD_SMART)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_SMART) == (0xB0), "ATA_CMD_SMART != 0xB0");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_SMART 0xB0
+#endif
+#if defined(ATA_CMD_CONF_OVERLAY) || (defined(HAVE_DECL_ATA_CMD_CONF_OVERLAY) && HAVE_DECL_ATA_CMD_CONF_OVERLAY)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_CONF_OVERLAY) == (0xB1), "ATA_CMD_CONF_OVERLAY != 0xB1");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_CONF_OVERLAY 0xB1
+#endif
+#if defined(ATA_CMD_SANITIZE_DEVICE) || (defined(HAVE_DECL_ATA_CMD_SANITIZE_DEVICE) && HAVE_DECL_ATA_CMD_SANITIZE_DEVICE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_SANITIZE_DEVICE) == (0xB4), "ATA_CMD_SANITIZE_DEVICE != 0xB4");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_SANITIZE_DEVICE 0xB4
+#endif
+#if defined(ATA_CMD_CFA_ERASE) || (defined(HAVE_DECL_ATA_CMD_CFA_ERASE) && HAVE_DECL_ATA_CMD_CFA_ERASE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_CFA_ERASE) == (0xC0), "ATA_CMD_CFA_ERASE != 0xC0");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_CFA_ERASE 0xC0
+#endif
+#if defined(ATA_CMD_READ_MULTI) || (defined(HAVE_DECL_ATA_CMD_READ_MULTI) && HAVE_DECL_ATA_CMD_READ_MULTI)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_READ_MULTI) == (0xC4), "ATA_CMD_READ_MULTI != 0xC4");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_READ_MULTI 0xC4
+#endif
+#if defined(ATA_CMD_WRITE_MULTI) || (defined(HAVE_DECL_ATA_CMD_WRITE_MULTI) && HAVE_DECL_ATA_CMD_WRITE_MULTI)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_WRITE_MULTI) == (0xC5), "ATA_CMD_WRITE_MULTI != 0xC5");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_WRITE_MULTI 0xC5
+#endif
+#if defined(ATA_CMD_SET_MULTI) || (defined(HAVE_DECL_ATA_CMD_SET_MULTI) && HAVE_DECL_ATA_CMD_SET_MULTI)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_SET_MULTI) == (0xC6), "ATA_CMD_SET_MULTI != 0xC6");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_SET_MULTI 0xC6
+#endif
+#if defined(ATA_CMD_READ) || (defined(HAVE_DECL_ATA_CMD_READ) && HAVE_DECL_ATA_CMD_READ)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_READ) == (0xC8), "ATA_CMD_READ != 0xC8");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_READ 0xC8
+#endif
+#if defined(ATA_CMD_WRITE) || (defined(HAVE_DECL_ATA_CMD_WRITE) && HAVE_DECL_ATA_CMD_WRITE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_WRITE) == (0xCA), "ATA_CMD_WRITE != 0xCA");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_WRITE 0xCA
+#endif
+#if defined(ATA_CMD_CFA_WRITE_MULT_NE) || (defined(HAVE_DECL_ATA_CMD_CFA_WRITE_MULT_NE) && HAVE_DECL_ATA_CMD_CFA_WRITE_MULT_NE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_CFA_WRITE_MULT_NE) == (0xCD), "ATA_CMD_CFA_WRITE_MULT_NE != 0xCD");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_CFA_WRITE_MULT_NE 0xCD
+#endif
+#if defined(ATA_CMD_WRITE_MULTI_FUA_EXT) || (defined(HAVE_DECL_ATA_CMD_WRITE_MULTI_FUA_EXT) && HAVE_DECL_ATA_CMD_WRITE_MULTI_FUA_EXT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_WRITE_MULTI_FUA_EXT) == (0xCE), "ATA_CMD_WRITE_MULTI_FUA_EXT != 0xCE");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_WRITE_MULTI_FUA_EXT 0xCE
+#endif
+#if defined(ATA_CMD_CHK_MED_CRD_TYP) || (defined(HAVE_DECL_ATA_CMD_CHK_MED_CRD_TYP) && HAVE_DECL_ATA_CMD_CHK_MED_CRD_TYP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_CHK_MED_CRD_TYP) == (0xD1), "ATA_CMD_CHK_MED_CRD_TYP != 0xD1");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_CHK_MED_CRD_TYP 0xD1
+#endif
+#if defined(ATA_CMD_MEDIA_LOCK) || (defined(HAVE_DECL_ATA_CMD_MEDIA_LOCK) && HAVE_DECL_ATA_CMD_MEDIA_LOCK)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_MEDIA_LOCK) == (0xDE), "ATA_CMD_MEDIA_LOCK != 0xDE");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_MEDIA_LOCK 0xDE
+#endif
+#if defined(ATA_CMD_MEDIA_UNLOCK) || (defined(HAVE_DECL_ATA_CMD_MEDIA_UNLOCK) && HAVE_DECL_ATA_CMD_MEDIA_UNLOCK)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_MEDIA_UNLOCK) == (0xDF), "ATA_CMD_MEDIA_UNLOCK != 0xDF");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_MEDIA_UNLOCK 0xDF
+#endif
+#if defined(ATA_CMD_STANDBYNOW1) || (defined(HAVE_DECL_ATA_CMD_STANDBYNOW1) && HAVE_DECL_ATA_CMD_STANDBYNOW1)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_STANDBYNOW1) == (0xE0), "ATA_CMD_STANDBYNOW1 != 0xE0");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_STANDBYNOW1 0xE0
+#endif
+#if defined(ATA_CMD_IDLEIMMEDIATE) || (defined(HAVE_DECL_ATA_CMD_IDLEIMMEDIATE) && HAVE_DECL_ATA_CMD_IDLEIMMEDIATE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_IDLEIMMEDIATE) == (0xE1), "ATA_CMD_IDLEIMMEDIATE != 0xE1");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_IDLEIMMEDIATE 0xE1
+#endif
+#if defined(ATA_CMD_STANDBY) || (defined(HAVE_DECL_ATA_CMD_STANDBY) && HAVE_DECL_ATA_CMD_STANDBY)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_STANDBY) == (0xE2), "ATA_CMD_STANDBY != 0xE2");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_STANDBY 0xE2
+#endif
+#if defined(ATA_CMD_IDLE) || (defined(HAVE_DECL_ATA_CMD_IDLE) && HAVE_DECL_ATA_CMD_IDLE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_IDLE) == (0xE3), "ATA_CMD_IDLE != 0xE3");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_IDLE 0xE3
+#endif
+#if defined(ATA_CMD_PMP_READ) || (defined(HAVE_DECL_ATA_CMD_PMP_READ) && HAVE_DECL_ATA_CMD_PMP_READ)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_PMP_READ) == (0xE4), "ATA_CMD_PMP_READ != 0xE4");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_PMP_READ 0xE4
+#endif
+#if defined(ATA_CMD_CHK_POWER) || (defined(HAVE_DECL_ATA_CMD_CHK_POWER) && HAVE_DECL_ATA_CMD_CHK_POWER)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_CHK_POWER) == (0xE5), "ATA_CMD_CHK_POWER != 0xE5");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_CHK_POWER 0xE5
+#endif
+#if defined(ATA_CMD_SLEEP) || (defined(HAVE_DECL_ATA_CMD_SLEEP) && HAVE_DECL_ATA_CMD_SLEEP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_SLEEP) == (0xE6), "ATA_CMD_SLEEP != 0xE6");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_SLEEP 0xE6
+#endif
+#if defined(ATA_CMD_FLUSH) || (defined(HAVE_DECL_ATA_CMD_FLUSH) && HAVE_DECL_ATA_CMD_FLUSH)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_FLUSH) == (0xE7), "ATA_CMD_FLUSH != 0xE7");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_FLUSH 0xE7
+#endif
+#if defined(ATA_CMD_PMP_WRITE) || (defined(HAVE_DECL_ATA_CMD_PMP_WRITE) && HAVE_DECL_ATA_CMD_PMP_WRITE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_PMP_WRITE) == (0xE8), "ATA_CMD_PMP_WRITE != 0xE8");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_PMP_WRITE 0xE8
+#endif
+#if defined(ATA_CMD_PMP_READ_DMA) || (defined(HAVE_DECL_ATA_CMD_PMP_READ_DMA) && HAVE_DECL_ATA_CMD_PMP_READ_DMA)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_PMP_READ_DMA) == (0xE9), "ATA_CMD_PMP_READ_DMA != 0xE9");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_PMP_READ_DMA 0xE9
+#endif
+#if defined(ATA_CMD_FLUSH_EXT) || (defined(HAVE_DECL_ATA_CMD_FLUSH_EXT) && HAVE_DECL_ATA_CMD_FLUSH_EXT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_FLUSH_EXT) == (0xEA), "ATA_CMD_FLUSH_EXT != 0xEA");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_FLUSH_EXT 0xEA
+#endif
+#if defined(ATA_CMD_PMP_WRITE_DMA) || (defined(HAVE_DECL_ATA_CMD_PMP_WRITE_DMA) && HAVE_DECL_ATA_CMD_PMP_WRITE_DMA)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_PMP_WRITE_DMA) == (0xEB), "ATA_CMD_PMP_WRITE_DMA != 0xEB");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_PMP_WRITE_DMA 0xEB
+#endif
+#if defined(ATA_CMD_ID_ATA) || (defined(HAVE_DECL_ATA_CMD_ID_ATA) && HAVE_DECL_ATA_CMD_ID_ATA)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_ID_ATA) == (0xEC), "ATA_CMD_ID_ATA != 0xEC");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_ID_ATA 0xEC
+#endif
+#if defined(ATA_CMD_SET_FEATURES) || (defined(HAVE_DECL_ATA_CMD_SET_FEATURES) && HAVE_DECL_ATA_CMD_SET_FEATURES)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_SET_FEATURES) == (0xEF), "ATA_CMD_SET_FEATURES != 0xEF");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_SET_FEATURES 0xEF
+#endif
+#if defined(ATA_CMD_SEC_SET_PASS) || (defined(HAVE_DECL_ATA_CMD_SEC_SET_PASS) && HAVE_DECL_ATA_CMD_SEC_SET_PASS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_SEC_SET_PASS) == (0xF1), "ATA_CMD_SEC_SET_PASS != 0xF1");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_SEC_SET_PASS 0xF1
+#endif
+#if defined(ATA_CMD_SEC_UNLOCK) || (defined(HAVE_DECL_ATA_CMD_SEC_UNLOCK) && HAVE_DECL_ATA_CMD_SEC_UNLOCK)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_SEC_UNLOCK) == (0xF2), "ATA_CMD_SEC_UNLOCK != 0xF2");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_SEC_UNLOCK 0xF2
+#endif
+#if defined(ATA_CMD_SEC_ERASE_PREP) || (defined(HAVE_DECL_ATA_CMD_SEC_ERASE_PREP) && HAVE_DECL_ATA_CMD_SEC_ERASE_PREP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_SEC_ERASE_PREP) == (0xF3), "ATA_CMD_SEC_ERASE_PREP != 0xF3");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_SEC_ERASE_PREP 0xF3
+#endif
+#if defined(ATA_CMD_SEC_ERASE_UNIT) || (defined(HAVE_DECL_ATA_CMD_SEC_ERASE_UNIT) && HAVE_DECL_ATA_CMD_SEC_ERASE_UNIT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_SEC_ERASE_UNIT) == (0xF4), "ATA_CMD_SEC_ERASE_UNIT != 0xF4");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_SEC_ERASE_UNIT 0xF4
+#endif
+#if defined(ATA_CMD_SEC_FREEZE_LOCK) || (defined(HAVE_DECL_ATA_CMD_SEC_FREEZE_LOCK) && HAVE_DECL_ATA_CMD_SEC_FREEZE_LOCK)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_SEC_FREEZE_LOCK) == (0xF5), "ATA_CMD_SEC_FREEZE_LOCK != 0xF5");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_SEC_FREEZE_LOCK 0xF5
+#endif
+#if defined(ATA_CMD_SEC_DISABLE_PASS) || (defined(HAVE_DECL_ATA_CMD_SEC_DISABLE_PASS) && HAVE_DECL_ATA_CMD_SEC_DISABLE_PASS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_SEC_DISABLE_PASS) == (0xF6), "ATA_CMD_SEC_DISABLE_PASS != 0xF6");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_SEC_DISABLE_PASS 0xF6
+#endif
+#if defined(ATA_CMD_READ_NATIVE_MAX) || (defined(HAVE_DECL_ATA_CMD_READ_NATIVE_MAX) && HAVE_DECL_ATA_CMD_READ_NATIVE_MAX)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_READ_NATIVE_MAX) == (0xF8), "ATA_CMD_READ_NATIVE_MAX != 0xF8");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_READ_NATIVE_MAX 0xF8
+#endif
+#if defined(ATA_CMD_SET_MAX) || (defined(HAVE_DECL_ATA_CMD_SET_MAX) && HAVE_DECL_ATA_CMD_SET_MAX)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((ATA_CMD_SET_MAX) == (0xF9), "ATA_CMD_SET_MAX != 0xF9");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define ATA_CMD_SET_MAX 0xF9
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+extern const struct xlat hdio_drive_cmds[];
+
+# else
+
+static const struct xlat_data hdio_drive_cmds_xdata[] = {
+ XLAT(ATA_CMD_NOP),
+ #define XLAT_VAL_0 ((unsigned) (ATA_CMD_NOP))
+ #define XLAT_STR_0 STRINGIFY(ATA_CMD_NOP)
+ XLAT(ATA_CMD_CFA_REQ_EXT_ERR),
+ #define XLAT_VAL_1 ((unsigned) (ATA_CMD_CFA_REQ_EXT_ERR))
+ #define XLAT_STR_1 STRINGIFY(ATA_CMD_CFA_REQ_EXT_ERR)
+ XLAT(ATA_CMD_DSM),
+ #define XLAT_VAL_2 ((unsigned) (ATA_CMD_DSM))
+ #define XLAT_STR_2 STRINGIFY(ATA_CMD_DSM)
+ XLAT(ATA_CMD_DEV_RESET),
+ #define XLAT_VAL_3 ((unsigned) (ATA_CMD_DEV_RESET))
+ #define XLAT_STR_3 STRINGIFY(ATA_CMD_DEV_RESET)
+ XLAT(ATA_CMD_REQ_SENSE_DATA),
+ #define XLAT_VAL_4 ((unsigned) (ATA_CMD_REQ_SENSE_DATA))
+ #define XLAT_STR_4 STRINGIFY(ATA_CMD_REQ_SENSE_DATA)
+ XLAT(ATA_CMD_RESTORE),
+ #define XLAT_VAL_5 ((unsigned) (ATA_CMD_RESTORE))
+ #define XLAT_STR_5 STRINGIFY(ATA_CMD_RESTORE)
+ XLAT(ATA_CMD_PIO_READ),
+ #define XLAT_VAL_6 ((unsigned) (ATA_CMD_PIO_READ))
+ #define XLAT_STR_6 STRINGIFY(ATA_CMD_PIO_READ)
+ XLAT(ATA_CMD_READ_LONG),
+ #define XLAT_VAL_7 ((unsigned) (ATA_CMD_READ_LONG))
+ #define XLAT_STR_7 STRINGIFY(ATA_CMD_READ_LONG)
+ XLAT(ATA_CMD_READ_LONG_ONCE),
+ #define XLAT_VAL_8 ((unsigned) (ATA_CMD_READ_LONG_ONCE))
+ #define XLAT_STR_8 STRINGIFY(ATA_CMD_READ_LONG_ONCE)
+ XLAT(ATA_CMD_PIO_READ_EXT),
+ #define XLAT_VAL_9 ((unsigned) (ATA_CMD_PIO_READ_EXT))
+ #define XLAT_STR_9 STRINGIFY(ATA_CMD_PIO_READ_EXT)
+ XLAT(ATA_CMD_READ_EXT),
+ #define XLAT_VAL_10 ((unsigned) (ATA_CMD_READ_EXT))
+ #define XLAT_STR_10 STRINGIFY(ATA_CMD_READ_EXT)
+ XLAT(ATA_CMD_READ_QUEUED),
+ #define XLAT_VAL_11 ((unsigned) (ATA_CMD_READ_QUEUED))
+ #define XLAT_STR_11 STRINGIFY(ATA_CMD_READ_QUEUED)
+ XLAT(ATA_CMD_READ_NATIVE_MAX_EXT),
+ #define XLAT_VAL_12 ((unsigned) (ATA_CMD_READ_NATIVE_MAX_EXT))
+ #define XLAT_STR_12 STRINGIFY(ATA_CMD_READ_NATIVE_MAX_EXT)
+ XLAT(ATA_CMD_READ_MULTI_EXT),
+ #define XLAT_VAL_13 ((unsigned) (ATA_CMD_READ_MULTI_EXT))
+ #define XLAT_STR_13 STRINGIFY(ATA_CMD_READ_MULTI_EXT)
+ XLAT(ATA_CMD_READ_STREAM_DMA_EXT),
+ #define XLAT_VAL_14 ((unsigned) (ATA_CMD_READ_STREAM_DMA_EXT))
+ #define XLAT_STR_14 STRINGIFY(ATA_CMD_READ_STREAM_DMA_EXT)
+ XLAT(ATA_CMD_READ_STREAM_EXT),
+ #define XLAT_VAL_15 ((unsigned) (ATA_CMD_READ_STREAM_EXT))
+ #define XLAT_STR_15 STRINGIFY(ATA_CMD_READ_STREAM_EXT)
+ XLAT(ATA_CMD_READ_LOG_EXT),
+ #define XLAT_VAL_16 ((unsigned) (ATA_CMD_READ_LOG_EXT))
+ #define XLAT_STR_16 STRINGIFY(ATA_CMD_READ_LOG_EXT)
+ XLAT(ATA_CMD_PIO_WRITE),
+ #define XLAT_VAL_17 ((unsigned) (ATA_CMD_PIO_WRITE))
+ #define XLAT_STR_17 STRINGIFY(ATA_CMD_PIO_WRITE)
+ XLAT(ATA_CMD_WRITE_LONG),
+ #define XLAT_VAL_18 ((unsigned) (ATA_CMD_WRITE_LONG))
+ #define XLAT_STR_18 STRINGIFY(ATA_CMD_WRITE_LONG)
+ XLAT(ATA_CMD_WRITE_LONG_ONCE),
+ #define XLAT_VAL_19 ((unsigned) (ATA_CMD_WRITE_LONG_ONCE))
+ #define XLAT_STR_19 STRINGIFY(ATA_CMD_WRITE_LONG_ONCE)
+ XLAT(ATA_CMD_PIO_WRITE_EXT),
+ #define XLAT_VAL_20 ((unsigned) (ATA_CMD_PIO_WRITE_EXT))
+ #define XLAT_STR_20 STRINGIFY(ATA_CMD_PIO_WRITE_EXT)
+ XLAT(ATA_CMD_WRITE_EXT),
+ #define XLAT_VAL_21 ((unsigned) (ATA_CMD_WRITE_EXT))
+ #define XLAT_STR_21 STRINGIFY(ATA_CMD_WRITE_EXT)
+ XLAT(ATA_CMD_WRITE_QUEUED),
+ #define XLAT_VAL_22 ((unsigned) (ATA_CMD_WRITE_QUEUED))
+ #define XLAT_STR_22 STRINGIFY(ATA_CMD_WRITE_QUEUED)
+ XLAT(ATA_CMD_SET_MAX_EXT),
+ #define XLAT_VAL_23 ((unsigned) (ATA_CMD_SET_MAX_EXT))
+ #define XLAT_STR_23 STRINGIFY(ATA_CMD_SET_MAX_EXT)
+ XLAT(ATA_CMD_CFA_WRITE_NE),
+ #define XLAT_VAL_24 ((unsigned) (ATA_CMD_CFA_WRITE_NE))
+ #define XLAT_STR_24 STRINGIFY(ATA_CMD_CFA_WRITE_NE)
+ XLAT(ATA_CMD_WRITE_MULTI_EXT),
+ #define XLAT_VAL_25 ((unsigned) (ATA_CMD_WRITE_MULTI_EXT))
+ #define XLAT_STR_25 STRINGIFY(ATA_CMD_WRITE_MULTI_EXT)
+ XLAT(ATA_CMD_WRITE_STREAM_DMA_EXT),
+ #define XLAT_VAL_26 ((unsigned) (ATA_CMD_WRITE_STREAM_DMA_EXT))
+ #define XLAT_STR_26 STRINGIFY(ATA_CMD_WRITE_STREAM_DMA_EXT)
+ XLAT(ATA_CMD_WRITE_STREAM_EXT),
+ #define XLAT_VAL_27 ((unsigned) (ATA_CMD_WRITE_STREAM_EXT))
+ #define XLAT_STR_27 STRINGIFY(ATA_CMD_WRITE_STREAM_EXT)
+ XLAT(ATA_CMD_WRITE_FUA_EXT),
+ #define XLAT_VAL_28 ((unsigned) (ATA_CMD_WRITE_FUA_EXT))
+ #define XLAT_STR_28 STRINGIFY(ATA_CMD_WRITE_FUA_EXT)
+ XLAT(ATA_CMD_WRITE_QUEUED_FUA_EXT),
+ #define XLAT_VAL_29 ((unsigned) (ATA_CMD_WRITE_QUEUED_FUA_EXT))
+ #define XLAT_STR_29 STRINGIFY(ATA_CMD_WRITE_QUEUED_FUA_EXT)
+ XLAT(ATA_CMD_WRITE_LOG_EXT),
+ #define XLAT_VAL_30 ((unsigned) (ATA_CMD_WRITE_LOG_EXT))
+ #define XLAT_STR_30 STRINGIFY(ATA_CMD_WRITE_LOG_EXT)
+ XLAT(ATA_CMD_VERIFY),
+ #define XLAT_VAL_31 ((unsigned) (ATA_CMD_VERIFY))
+ #define XLAT_STR_31 STRINGIFY(ATA_CMD_VERIFY)
+ XLAT(ATA_CMD_VERIFY_EXT),
+ #define XLAT_VAL_32 ((unsigned) (ATA_CMD_VERIFY_EXT))
+ #define XLAT_STR_32 STRINGIFY(ATA_CMD_VERIFY_EXT)
+ XLAT(ATA_CMD_WRITE_UNCORR_EXT),
+ #define XLAT_VAL_33 ((unsigned) (ATA_CMD_WRITE_UNCORR_EXT))
+ #define XLAT_STR_33 STRINGIFY(ATA_CMD_WRITE_UNCORR_EXT)
+ XLAT(ATA_CMD_READ_LOG_DMA_EXT),
+ #define XLAT_VAL_34 ((unsigned) (ATA_CMD_READ_LOG_DMA_EXT))
+ #define XLAT_STR_34 STRINGIFY(ATA_CMD_READ_LOG_DMA_EXT)
+ XLAT(ATA_CMD_ZAC_MGMT_IN),
+ #define XLAT_VAL_35 ((unsigned) (ATA_CMD_ZAC_MGMT_IN))
+ #define XLAT_STR_35 STRINGIFY(ATA_CMD_ZAC_MGMT_IN)
+ XLAT(ATA_CMD_CONFIG_STREAM),
+ #define XLAT_VAL_36 ((unsigned) (ATA_CMD_CONFIG_STREAM))
+ #define XLAT_STR_36 STRINGIFY(ATA_CMD_CONFIG_STREAM)
+ XLAT(ATA_CMD_WRITE_LOG_DMA_EXT),
+ #define XLAT_VAL_37 ((unsigned) (ATA_CMD_WRITE_LOG_DMA_EXT))
+ #define XLAT_STR_37 STRINGIFY(ATA_CMD_WRITE_LOG_DMA_EXT)
+ XLAT(ATA_CMD_TRUSTED_NONDATA),
+ #define XLAT_VAL_38 ((unsigned) (ATA_CMD_TRUSTED_NONDATA))
+ #define XLAT_STR_38 STRINGIFY(ATA_CMD_TRUSTED_NONDATA)
+ XLAT(ATA_CMD_TRUSTED_RCV),
+ #define XLAT_VAL_39 ((unsigned) (ATA_CMD_TRUSTED_RCV))
+ #define XLAT_STR_39 STRINGIFY(ATA_CMD_TRUSTED_RCV)
+ XLAT(ATA_CMD_TRUSTED_RCV_DMA),
+ #define XLAT_VAL_40 ((unsigned) (ATA_CMD_TRUSTED_RCV_DMA))
+ #define XLAT_STR_40 STRINGIFY(ATA_CMD_TRUSTED_RCV_DMA)
+ XLAT(ATA_CMD_TRUSTED_SND),
+ #define XLAT_VAL_41 ((unsigned) (ATA_CMD_TRUSTED_SND))
+ #define XLAT_STR_41 STRINGIFY(ATA_CMD_TRUSTED_SND)
+ XLAT(ATA_CMD_TRUSTED_SND_DMA),
+ #define XLAT_VAL_42 ((unsigned) (ATA_CMD_TRUSTED_SND_DMA))
+ #define XLAT_STR_42 STRINGIFY(ATA_CMD_TRUSTED_SND_DMA)
+ XLAT(ATA_CMD_FPDMA_READ),
+ #define XLAT_VAL_43 ((unsigned) (ATA_CMD_FPDMA_READ))
+ #define XLAT_STR_43 STRINGIFY(ATA_CMD_FPDMA_READ)
+ XLAT(ATA_CMD_FPDMA_WRITE),
+ #define XLAT_VAL_44 ((unsigned) (ATA_CMD_FPDMA_WRITE))
+ #define XLAT_STR_44 STRINGIFY(ATA_CMD_FPDMA_WRITE)
+ XLAT(ATA_CMD_NCQ_NON_DATA),
+ #define XLAT_VAL_45 ((unsigned) (ATA_CMD_NCQ_NON_DATA))
+ #define XLAT_STR_45 STRINGIFY(ATA_CMD_NCQ_NON_DATA)
+ XLAT(ATA_CMD_FPDMA_SEND),
+ #define XLAT_VAL_46 ((unsigned) (ATA_CMD_FPDMA_SEND))
+ #define XLAT_STR_46 STRINGIFY(ATA_CMD_FPDMA_SEND)
+ XLAT(ATA_CMD_FPDMA_RECV),
+ #define XLAT_VAL_47 ((unsigned) (ATA_CMD_FPDMA_RECV))
+ #define XLAT_STR_47 STRINGIFY(ATA_CMD_FPDMA_RECV)
+ XLAT(ATA_CMD_CFA_TRANS_SECT),
+ #define XLAT_VAL_48 ((unsigned) (ATA_CMD_CFA_TRANS_SECT))
+ #define XLAT_STR_48 STRINGIFY(ATA_CMD_CFA_TRANS_SECT)
+ XLAT(ATA_CMD_EDD),
+ #define XLAT_VAL_49 ((unsigned) (ATA_CMD_EDD))
+ #define XLAT_STR_49 STRINGIFY(ATA_CMD_EDD)
+ XLAT(ATA_CMD_INIT_DEV_PARAMS),
+ #define XLAT_VAL_50 ((unsigned) (ATA_CMD_INIT_DEV_PARAMS))
+ #define XLAT_STR_50 STRINGIFY(ATA_CMD_INIT_DEV_PARAMS)
+ XLAT(ATA_CMD_DOWNLOAD_MICRO),
+ #define XLAT_VAL_51 ((unsigned) (ATA_CMD_DOWNLOAD_MICRO))
+ #define XLAT_STR_51 STRINGIFY(ATA_CMD_DOWNLOAD_MICRO)
+ XLAT(ATA_CMD_DOWNLOAD_MICRO_DMA),
+ #define XLAT_VAL_52 ((unsigned) (ATA_CMD_DOWNLOAD_MICRO_DMA))
+ #define XLAT_STR_52 STRINGIFY(ATA_CMD_DOWNLOAD_MICRO_DMA)
+ XLAT(ATA_CMD_ZAC_MGMT_OUT),
+ #define XLAT_VAL_53 ((unsigned) (ATA_CMD_ZAC_MGMT_OUT))
+ #define XLAT_STR_53 STRINGIFY(ATA_CMD_ZAC_MGMT_OUT)
+ XLAT(ATA_CMD_PACKET),
+ #define XLAT_VAL_54 ((unsigned) (ATA_CMD_PACKET))
+ #define XLAT_STR_54 STRINGIFY(ATA_CMD_PACKET)
+ XLAT(ATA_CMD_ID_ATAPI),
+ #define XLAT_VAL_55 ((unsigned) (ATA_CMD_ID_ATAPI))
+ #define XLAT_STR_55 STRINGIFY(ATA_CMD_ID_ATAPI)
+ XLAT(ATA_CMD_SERVICE),
+ #define XLAT_VAL_56 ((unsigned) (ATA_CMD_SERVICE))
+ #define XLAT_STR_56 STRINGIFY(ATA_CMD_SERVICE)
+ XLAT(ATA_CMD_SMART),
+ #define XLAT_VAL_57 ((unsigned) (ATA_CMD_SMART))
+ #define XLAT_STR_57 STRINGIFY(ATA_CMD_SMART)
+ XLAT(ATA_CMD_CONF_OVERLAY),
+ #define XLAT_VAL_58 ((unsigned) (ATA_CMD_CONF_OVERLAY))
+ #define XLAT_STR_58 STRINGIFY(ATA_CMD_CONF_OVERLAY)
+ XLAT(ATA_CMD_SANITIZE_DEVICE),
+ #define XLAT_VAL_59 ((unsigned) (ATA_CMD_SANITIZE_DEVICE))
+ #define XLAT_STR_59 STRINGIFY(ATA_CMD_SANITIZE_DEVICE)
+ XLAT(ATA_CMD_CFA_ERASE),
+ #define XLAT_VAL_60 ((unsigned) (ATA_CMD_CFA_ERASE))
+ #define XLAT_STR_60 STRINGIFY(ATA_CMD_CFA_ERASE)
+ XLAT(ATA_CMD_READ_MULTI),
+ #define XLAT_VAL_61 ((unsigned) (ATA_CMD_READ_MULTI))
+ #define XLAT_STR_61 STRINGIFY(ATA_CMD_READ_MULTI)
+ XLAT(ATA_CMD_WRITE_MULTI),
+ #define XLAT_VAL_62 ((unsigned) (ATA_CMD_WRITE_MULTI))
+ #define XLAT_STR_62 STRINGIFY(ATA_CMD_WRITE_MULTI)
+ XLAT(ATA_CMD_SET_MULTI),
+ #define XLAT_VAL_63 ((unsigned) (ATA_CMD_SET_MULTI))
+ #define XLAT_STR_63 STRINGIFY(ATA_CMD_SET_MULTI)
+ XLAT(ATA_CMD_READ),
+ #define XLAT_VAL_64 ((unsigned) (ATA_CMD_READ))
+ #define XLAT_STR_64 STRINGIFY(ATA_CMD_READ)
+ XLAT(ATA_CMD_WRITE),
+ #define XLAT_VAL_65 ((unsigned) (ATA_CMD_WRITE))
+ #define XLAT_STR_65 STRINGIFY(ATA_CMD_WRITE)
+ XLAT(ATA_CMD_CFA_WRITE_MULT_NE),
+ #define XLAT_VAL_66 ((unsigned) (ATA_CMD_CFA_WRITE_MULT_NE))
+ #define XLAT_STR_66 STRINGIFY(ATA_CMD_CFA_WRITE_MULT_NE)
+ XLAT(ATA_CMD_WRITE_MULTI_FUA_EXT),
+ #define XLAT_VAL_67 ((unsigned) (ATA_CMD_WRITE_MULTI_FUA_EXT))
+ #define XLAT_STR_67 STRINGIFY(ATA_CMD_WRITE_MULTI_FUA_EXT)
+ XLAT(ATA_CMD_CHK_MED_CRD_TYP),
+ #define XLAT_VAL_68 ((unsigned) (ATA_CMD_CHK_MED_CRD_TYP))
+ #define XLAT_STR_68 STRINGIFY(ATA_CMD_CHK_MED_CRD_TYP)
+ XLAT(ATA_CMD_MEDIA_LOCK),
+ #define XLAT_VAL_69 ((unsigned) (ATA_CMD_MEDIA_LOCK))
+ #define XLAT_STR_69 STRINGIFY(ATA_CMD_MEDIA_LOCK)
+ XLAT(ATA_CMD_MEDIA_UNLOCK),
+ #define XLAT_VAL_70 ((unsigned) (ATA_CMD_MEDIA_UNLOCK))
+ #define XLAT_STR_70 STRINGIFY(ATA_CMD_MEDIA_UNLOCK)
+ XLAT(ATA_CMD_STANDBYNOW1),
+ #define XLAT_VAL_71 ((unsigned) (ATA_CMD_STANDBYNOW1))
+ #define XLAT_STR_71 STRINGIFY(ATA_CMD_STANDBYNOW1)
+ XLAT(ATA_CMD_IDLEIMMEDIATE),
+ #define XLAT_VAL_72 ((unsigned) (ATA_CMD_IDLEIMMEDIATE))
+ #define XLAT_STR_72 STRINGIFY(ATA_CMD_IDLEIMMEDIATE)
+ XLAT(ATA_CMD_STANDBY),
+ #define XLAT_VAL_73 ((unsigned) (ATA_CMD_STANDBY))
+ #define XLAT_STR_73 STRINGIFY(ATA_CMD_STANDBY)
+ XLAT(ATA_CMD_IDLE),
+ #define XLAT_VAL_74 ((unsigned) (ATA_CMD_IDLE))
+ #define XLAT_STR_74 STRINGIFY(ATA_CMD_IDLE)
+ XLAT(ATA_CMD_PMP_READ),
+ #define XLAT_VAL_75 ((unsigned) (ATA_CMD_PMP_READ))
+ #define XLAT_STR_75 STRINGIFY(ATA_CMD_PMP_READ)
+ XLAT(ATA_CMD_CHK_POWER),
+ #define XLAT_VAL_76 ((unsigned) (ATA_CMD_CHK_POWER))
+ #define XLAT_STR_76 STRINGIFY(ATA_CMD_CHK_POWER)
+ XLAT(ATA_CMD_SLEEP),
+ #define XLAT_VAL_77 ((unsigned) (ATA_CMD_SLEEP))
+ #define XLAT_STR_77 STRINGIFY(ATA_CMD_SLEEP)
+ XLAT(ATA_CMD_FLUSH),
+ #define XLAT_VAL_78 ((unsigned) (ATA_CMD_FLUSH))
+ #define XLAT_STR_78 STRINGIFY(ATA_CMD_FLUSH)
+ XLAT(ATA_CMD_PMP_WRITE),
+ #define XLAT_VAL_79 ((unsigned) (ATA_CMD_PMP_WRITE))
+ #define XLAT_STR_79 STRINGIFY(ATA_CMD_PMP_WRITE)
+ XLAT(ATA_CMD_PMP_READ_DMA),
+ #define XLAT_VAL_80 ((unsigned) (ATA_CMD_PMP_READ_DMA))
+ #define XLAT_STR_80 STRINGIFY(ATA_CMD_PMP_READ_DMA)
+ XLAT(ATA_CMD_FLUSH_EXT),
+ #define XLAT_VAL_81 ((unsigned) (ATA_CMD_FLUSH_EXT))
+ #define XLAT_STR_81 STRINGIFY(ATA_CMD_FLUSH_EXT)
+ XLAT(ATA_CMD_PMP_WRITE_DMA),
+ #define XLAT_VAL_82 ((unsigned) (ATA_CMD_PMP_WRITE_DMA))
+ #define XLAT_STR_82 STRINGIFY(ATA_CMD_PMP_WRITE_DMA)
+ XLAT(ATA_CMD_ID_ATA),
+ #define XLAT_VAL_83 ((unsigned) (ATA_CMD_ID_ATA))
+ #define XLAT_STR_83 STRINGIFY(ATA_CMD_ID_ATA)
+ XLAT(ATA_CMD_SET_FEATURES),
+ #define XLAT_VAL_84 ((unsigned) (ATA_CMD_SET_FEATURES))
+ #define XLAT_STR_84 STRINGIFY(ATA_CMD_SET_FEATURES)
+ XLAT(ATA_CMD_SEC_SET_PASS),
+ #define XLAT_VAL_85 ((unsigned) (ATA_CMD_SEC_SET_PASS))
+ #define XLAT_STR_85 STRINGIFY(ATA_CMD_SEC_SET_PASS)
+ XLAT(ATA_CMD_SEC_UNLOCK),
+ #define XLAT_VAL_86 ((unsigned) (ATA_CMD_SEC_UNLOCK))
+ #define XLAT_STR_86 STRINGIFY(ATA_CMD_SEC_UNLOCK)
+ XLAT(ATA_CMD_SEC_ERASE_PREP),
+ #define XLAT_VAL_87 ((unsigned) (ATA_CMD_SEC_ERASE_PREP))
+ #define XLAT_STR_87 STRINGIFY(ATA_CMD_SEC_ERASE_PREP)
+ XLAT(ATA_CMD_SEC_ERASE_UNIT),
+ #define XLAT_VAL_88 ((unsigned) (ATA_CMD_SEC_ERASE_UNIT))
+ #define XLAT_STR_88 STRINGIFY(ATA_CMD_SEC_ERASE_UNIT)
+ XLAT(ATA_CMD_SEC_FREEZE_LOCK),
+ #define XLAT_VAL_89 ((unsigned) (ATA_CMD_SEC_FREEZE_LOCK))
+ #define XLAT_STR_89 STRINGIFY(ATA_CMD_SEC_FREEZE_LOCK)
+ XLAT(ATA_CMD_SEC_DISABLE_PASS),
+ #define XLAT_VAL_90 ((unsigned) (ATA_CMD_SEC_DISABLE_PASS))
+ #define XLAT_STR_90 STRINGIFY(ATA_CMD_SEC_DISABLE_PASS)
+ XLAT(ATA_CMD_READ_NATIVE_MAX),
+ #define XLAT_VAL_91 ((unsigned) (ATA_CMD_READ_NATIVE_MAX))
+ #define XLAT_STR_91 STRINGIFY(ATA_CMD_READ_NATIVE_MAX)
+ XLAT(ATA_CMD_SET_MAX),
+ #define XLAT_VAL_92 ((unsigned) (ATA_CMD_SET_MAX))
+ #define XLAT_STR_92 STRINGIFY(ATA_CMD_SET_MAX)
+};
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat hdio_drive_cmds[1] = { {
+ .data = hdio_drive_cmds_xdata,
+ .size = ARRAY_SIZE(hdio_drive_cmds_xdata),
+ .type = XT_SORTED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+#  ifdef XLAT_VAL_30
+  | XLAT_VAL_30
+#  endif
+#  ifdef XLAT_VAL_31
+  | XLAT_VAL_31
+#  endif
+#  ifdef XLAT_VAL_32
+  | XLAT_VAL_32
+#  endif
+#  ifdef XLAT_VAL_33
+  | XLAT_VAL_33
+#  endif
+#  ifdef XLAT_VAL_34
+  | XLAT_VAL_34
+#  endif
+#  ifdef XLAT_VAL_35
+  | XLAT_VAL_35
+#  endif
+#  ifdef XLAT_VAL_36
+  | XLAT_VAL_36
+#  endif
+#  ifdef XLAT_VAL_37
+  | XLAT_VAL_37
+#  endif
+#  ifdef XLAT_VAL_38
+  | XLAT_VAL_38
+#  endif
+#  ifdef XLAT_VAL_39
+  | XLAT_VAL_39
+#  endif
+#  ifdef XLAT_VAL_40
+  | XLAT_VAL_40
+#  endif
+#  ifdef XLAT_VAL_41
+  | XLAT_VAL_41
+#  endif
+#  ifdef XLAT_VAL_42
+  | XLAT_VAL_42
+#  endif
+#  ifdef XLAT_VAL_43
+  | XLAT_VAL_43
+#  endif
+#  ifdef XLAT_VAL_44
+  | XLAT_VAL_44
+#  endif
+#  ifdef XLAT_VAL_45
+  | XLAT_VAL_45
+#  endif
+#  ifdef XLAT_VAL_46
+  | XLAT_VAL_46
+#  endif
+#  ifdef XLAT_VAL_47
+  | XLAT_VAL_47
+#  endif
+#  ifdef XLAT_VAL_48
+  | XLAT_VAL_48
+#  endif
+#  ifdef XLAT_VAL_49
+  | XLAT_VAL_49
+#  endif
+#  ifdef XLAT_VAL_50
+  | XLAT_VAL_50
+#  endif
+#  ifdef XLAT_VAL_51
+  | XLAT_VAL_51
+#  endif
+#  ifdef XLAT_VAL_52
+  | XLAT_VAL_52
+#  endif
+#  ifdef XLAT_VAL_53
+  | XLAT_VAL_53
+#  endif
+#  ifdef XLAT_VAL_54
+  | XLAT_VAL_54
+#  endif
+#  ifdef XLAT_VAL_55
+  | XLAT_VAL_55
+#  endif
+#  ifdef XLAT_VAL_56
+  | XLAT_VAL_56
+#  endif
+#  ifdef XLAT_VAL_57
+  | XLAT_VAL_57
+#  endif
+#  ifdef XLAT_VAL_58
+  | XLAT_VAL_58
+#  endif
+#  ifdef XLAT_VAL_59
+  | XLAT_VAL_59
+#  endif
+#  ifdef XLAT_VAL_60
+  | XLAT_VAL_60
+#  endif
+#  ifdef XLAT_VAL_61
+  | XLAT_VAL_61
+#  endif
+#  ifdef XLAT_VAL_62
+  | XLAT_VAL_62
+#  endif
+#  ifdef XLAT_VAL_63
+  | XLAT_VAL_63
+#  endif
+#  ifdef XLAT_VAL_64
+  | XLAT_VAL_64
+#  endif
+#  ifdef XLAT_VAL_65
+  | XLAT_VAL_65
+#  endif
+#  ifdef XLAT_VAL_66
+  | XLAT_VAL_66
+#  endif
+#  ifdef XLAT_VAL_67
+  | XLAT_VAL_67
+#  endif
+#  ifdef XLAT_VAL_68
+  | XLAT_VAL_68
+#  endif
+#  ifdef XLAT_VAL_69
+  | XLAT_VAL_69
+#  endif
+#  ifdef XLAT_VAL_70
+  | XLAT_VAL_70
+#  endif
+#  ifdef XLAT_VAL_71
+  | XLAT_VAL_71
+#  endif
+#  ifdef XLAT_VAL_72
+  | XLAT_VAL_72
+#  endif
+#  ifdef XLAT_VAL_73
+  | XLAT_VAL_73
+#  endif
+#  ifdef XLAT_VAL_74
+  | XLAT_VAL_74
+#  endif
+#  ifdef XLAT_VAL_75
+  | XLAT_VAL_75
+#  endif
+#  ifdef XLAT_VAL_76
+  | XLAT_VAL_76
+#  endif
+#  ifdef XLAT_VAL_77
+  | XLAT_VAL_77
+#  endif
+#  ifdef XLAT_VAL_78
+  | XLAT_VAL_78
+#  endif
+#  ifdef XLAT_VAL_79
+  | XLAT_VAL_79
+#  endif
+#  ifdef XLAT_VAL_80
+  | XLAT_VAL_80
+#  endif
+#  ifdef XLAT_VAL_81
+  | XLAT_VAL_81
+#  endif
+#  ifdef XLAT_VAL_82
+  | XLAT_VAL_82
+#  endif
+#  ifdef XLAT_VAL_83
+  | XLAT_VAL_83
+#  endif
+#  ifdef XLAT_VAL_84
+  | XLAT_VAL_84
+#  endif
+#  ifdef XLAT_VAL_85
+  | XLAT_VAL_85
+#  endif
+#  ifdef XLAT_VAL_86
+  | XLAT_VAL_86
+#  endif
+#  ifdef XLAT_VAL_87
+  | XLAT_VAL_87
+#  endif
+#  ifdef XLAT_VAL_88
+  | XLAT_VAL_88
+#  endif
+#  ifdef XLAT_VAL_89
+  | XLAT_VAL_89
+#  endif
+#  ifdef XLAT_VAL_90
+  | XLAT_VAL_90
+#  endif
+#  ifdef XLAT_VAL_91
+  | XLAT_VAL_91
+#  endif
+#  ifdef XLAT_VAL_92
+  | XLAT_VAL_92
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+#  ifdef XLAT_STR_30
+  + sizeof(XLAT_STR_30)
+#  endif
+#  ifdef XLAT_STR_31
+  + sizeof(XLAT_STR_31)
+#  endif
+#  ifdef XLAT_STR_32
+  + sizeof(XLAT_STR_32)
+#  endif
+#  ifdef XLAT_STR_33
+  + sizeof(XLAT_STR_33)
+#  endif
+#  ifdef XLAT_STR_34
+  + sizeof(XLAT_STR_34)
+#  endif
+#  ifdef XLAT_STR_35
+  + sizeof(XLAT_STR_35)
+#  endif
+#  ifdef XLAT_STR_36
+  + sizeof(XLAT_STR_36)
+#  endif
+#  ifdef XLAT_STR_37
+  + sizeof(XLAT_STR_37)
+#  endif
+#  ifdef XLAT_STR_38
+  + sizeof(XLAT_STR_38)
+#  endif
+#  ifdef XLAT_STR_39
+  + sizeof(XLAT_STR_39)
+#  endif
+#  ifdef XLAT_STR_40
+  + sizeof(XLAT_STR_40)
+#  endif
+#  ifdef XLAT_STR_41
+  + sizeof(XLAT_STR_41)
+#  endif
+#  ifdef XLAT_STR_42
+  + sizeof(XLAT_STR_42)
+#  endif
+#  ifdef XLAT_STR_43
+  + sizeof(XLAT_STR_43)
+#  endif
+#  ifdef XLAT_STR_44
+  + sizeof(XLAT_STR_44)
+#  endif
+#  ifdef XLAT_STR_45
+  + sizeof(XLAT_STR_45)
+#  endif
+#  ifdef XLAT_STR_46
+  + sizeof(XLAT_STR_46)
+#  endif
+#  ifdef XLAT_STR_47
+  + sizeof(XLAT_STR_47)
+#  endif
+#  ifdef XLAT_STR_48
+  + sizeof(XLAT_STR_48)
+#  endif
+#  ifdef XLAT_STR_49
+  + sizeof(XLAT_STR_49)
+#  endif
+#  ifdef XLAT_STR_50
+  + sizeof(XLAT_STR_50)
+#  endif
+#  ifdef XLAT_STR_51
+  + sizeof(XLAT_STR_51)
+#  endif
+#  ifdef XLAT_STR_52
+  + sizeof(XLAT_STR_52)
+#  endif
+#  ifdef XLAT_STR_53
+  + sizeof(XLAT_STR_53)
+#  endif
+#  ifdef XLAT_STR_54
+  + sizeof(XLAT_STR_54)
+#  endif
+#  ifdef XLAT_STR_55
+  + sizeof(XLAT_STR_55)
+#  endif
+#  ifdef XLAT_STR_56
+  + sizeof(XLAT_STR_56)
+#  endif
+#  ifdef XLAT_STR_57
+  + sizeof(XLAT_STR_57)
+#  endif
+#  ifdef XLAT_STR_58
+  + sizeof(XLAT_STR_58)
+#  endif
+#  ifdef XLAT_STR_59
+  + sizeof(XLAT_STR_59)
+#  endif
+#  ifdef XLAT_STR_60
+  + sizeof(XLAT_STR_60)
+#  endif
+#  ifdef XLAT_STR_61
+  + sizeof(XLAT_STR_61)
+#  endif
+#  ifdef XLAT_STR_62
+  + sizeof(XLAT_STR_62)
+#  endif
+#  ifdef XLAT_STR_63
+  + sizeof(XLAT_STR_63)
+#  endif
+#  ifdef XLAT_STR_64
+  + sizeof(XLAT_STR_64)
+#  endif
+#  ifdef XLAT_STR_65
+  + sizeof(XLAT_STR_65)
+#  endif
+#  ifdef XLAT_STR_66
+  + sizeof(XLAT_STR_66)
+#  endif
+#  ifdef XLAT_STR_67
+  + sizeof(XLAT_STR_67)
+#  endif
+#  ifdef XLAT_STR_68
+  + sizeof(XLAT_STR_68)
+#  endif
+#  ifdef XLAT_STR_69
+  + sizeof(XLAT_STR_69)
+#  endif
+#  ifdef XLAT_STR_70
+  + sizeof(XLAT_STR_70)
+#  endif
+#  ifdef XLAT_STR_71
+  + sizeof(XLAT_STR_71)
+#  endif
+#  ifdef XLAT_STR_72
+  + sizeof(XLAT_STR_72)
+#  endif
+#  ifdef XLAT_STR_73
+  + sizeof(XLAT_STR_73)
+#  endif
+#  ifdef XLAT_STR_74
+  + sizeof(XLAT_STR_74)
+#  endif
+#  ifdef XLAT_STR_75
+  + sizeof(XLAT_STR_75)
+#  endif
+#  ifdef XLAT_STR_76
+  + sizeof(XLAT_STR_76)
+#  endif
+#  ifdef XLAT_STR_77
+  + sizeof(XLAT_STR_77)
+#  endif
+#  ifdef XLAT_STR_78
+  + sizeof(XLAT_STR_78)
+#  endif
+#  ifdef XLAT_STR_79
+  + sizeof(XLAT_STR_79)
+#  endif
+#  ifdef XLAT_STR_80
+  + sizeof(XLAT_STR_80)
+#  endif
+#  ifdef XLAT_STR_81
+  + sizeof(XLAT_STR_81)
+#  endif
+#  ifdef XLAT_STR_82
+  + sizeof(XLAT_STR_82)
+#  endif
+#  ifdef XLAT_STR_83
+  + sizeof(XLAT_STR_83)
+#  endif
+#  ifdef XLAT_STR_84
+  + sizeof(XLAT_STR_84)
+#  endif
+#  ifdef XLAT_STR_85
+  + sizeof(XLAT_STR_85)
+#  endif
+#  ifdef XLAT_STR_86
+  + sizeof(XLAT_STR_86)
+#  endif
+#  ifdef XLAT_STR_87
+  + sizeof(XLAT_STR_87)
+#  endif
+#  ifdef XLAT_STR_88
+  + sizeof(XLAT_STR_88)
+#  endif
+#  ifdef XLAT_STR_89
+  + sizeof(XLAT_STR_89)
+#  endif
+#  ifdef XLAT_STR_90
+  + sizeof(XLAT_STR_90)
+#  endif
+#  ifdef XLAT_STR_91
+  + sizeof(XLAT_STR_91)
+#  endif
+#  ifdef XLAT_STR_92
+  + sizeof(XLAT_STR_92)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
+#  undef XLAT_STR_30
+#  undef XLAT_VAL_30
+#  undef XLAT_STR_31
+#  undef XLAT_VAL_31
+#  undef XLAT_STR_32
+#  undef XLAT_VAL_32
+#  undef XLAT_STR_33
+#  undef XLAT_VAL_33
+#  undef XLAT_STR_34
+#  undef XLAT_VAL_34
+#  undef XLAT_STR_35
+#  undef XLAT_VAL_35
+#  undef XLAT_STR_36
+#  undef XLAT_VAL_36
+#  undef XLAT_STR_37
+#  undef XLAT_VAL_37
+#  undef XLAT_STR_38
+#  undef XLAT_VAL_38
+#  undef XLAT_STR_39
+#  undef XLAT_VAL_39
+#  undef XLAT_STR_40
+#  undef XLAT_VAL_40
+#  undef XLAT_STR_41
+#  undef XLAT_VAL_41
+#  undef XLAT_STR_42
+#  undef XLAT_VAL_42
+#  undef XLAT_STR_43
+#  undef XLAT_VAL_43
+#  undef XLAT_STR_44
+#  undef XLAT_VAL_44
+#  undef XLAT_STR_45
+#  undef XLAT_VAL_45
+#  undef XLAT_STR_46
+#  undef XLAT_VAL_46
+#  undef XLAT_STR_47
+#  undef XLAT_VAL_47
+#  undef XLAT_STR_48
+#  undef XLAT_VAL_48
+#  undef XLAT_STR_49
+#  undef XLAT_VAL_49
+#  undef XLAT_STR_50
+#  undef XLAT_VAL_50
+#  undef XLAT_STR_51
+#  undef XLAT_VAL_51
+#  undef XLAT_STR_52
+#  undef XLAT_VAL_52
+#  undef XLAT_STR_53
+#  undef XLAT_VAL_53
+#  undef XLAT_STR_54
+#  undef XLAT_VAL_54
+#  undef XLAT_STR_55
+#  undef XLAT_VAL_55
+#  undef XLAT_STR_56
+#  undef XLAT_VAL_56
+#  undef XLAT_STR_57
+#  undef XLAT_VAL_57
+#  undef XLAT_STR_58
+#  undef XLAT_VAL_58
+#  undef XLAT_STR_59
+#  undef XLAT_VAL_59
+#  undef XLAT_STR_60
+#  undef XLAT_VAL_60
+#  undef XLAT_STR_61
+#  undef XLAT_VAL_61
+#  undef XLAT_STR_62
+#  undef XLAT_VAL_62
+#  undef XLAT_STR_63
+#  undef XLAT_VAL_63
+#  undef XLAT_STR_64
+#  undef XLAT_VAL_64
+#  undef XLAT_STR_65
+#  undef XLAT_VAL_65
+#  undef XLAT_STR_66
+#  undef XLAT_VAL_66
+#  undef XLAT_STR_67
+#  undef XLAT_VAL_67
+#  undef XLAT_STR_68
+#  undef XLAT_VAL_68
+#  undef XLAT_STR_69
+#  undef XLAT_VAL_69
+#  undef XLAT_STR_70
+#  undef XLAT_VAL_70
+#  undef XLAT_STR_71
+#  undef XLAT_VAL_71
+#  undef XLAT_STR_72
+#  undef XLAT_VAL_72
+#  undef XLAT_STR_73
+#  undef XLAT_VAL_73
+#  undef XLAT_STR_74
+#  undef XLAT_VAL_74
+#  undef XLAT_STR_75
+#  undef XLAT_VAL_75
+#  undef XLAT_STR_76
+#  undef XLAT_VAL_76
+#  undef XLAT_STR_77
+#  undef XLAT_VAL_77
+#  undef XLAT_STR_78
+#  undef XLAT_VAL_78
+#  undef XLAT_STR_79
+#  undef XLAT_VAL_79
+#  undef XLAT_STR_80
+#  undef XLAT_VAL_80
+#  undef XLAT_STR_81
+#  undef XLAT_VAL_81
+#  undef XLAT_STR_82
+#  undef XLAT_VAL_82
+#  undef XLAT_STR_83
+#  undef XLAT_VAL_83
+#  undef XLAT_STR_84
+#  undef XLAT_VAL_84
+#  undef XLAT_STR_85
+#  undef XLAT_VAL_85
+#  undef XLAT_STR_86
+#  undef XLAT_VAL_86
+#  undef XLAT_STR_87
+#  undef XLAT_VAL_87
+#  undef XLAT_STR_88
+#  undef XLAT_VAL_88
+#  undef XLAT_STR_89
+#  undef XLAT_VAL_89
+#  undef XLAT_STR_90
+#  undef XLAT_VAL_90
+#  undef XLAT_STR_91
+#  undef XLAT_VAL_91
+#  undef XLAT_STR_92
+#  undef XLAT_VAL_92
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/hdio_drive_cmds.in b/xlat/hdio_drive_cmds.in
new file mode 100644 (file)
index 0000000..1158abb
--- /dev/null
@@ -0,0 +1,94 @@
+#sorted sort -k2,2
+ATA_CMD_NOP                    0x00
+ATA_CMD_CFA_REQ_EXT_ERR                0x03
+ATA_CMD_DSM                    0x06
+ATA_CMD_DEV_RESET              0x08
+ATA_CMD_REQ_SENSE_DATA         0x0B
+ATA_CMD_RESTORE                        0x10
+ATA_CMD_PIO_READ               0x20
+ATA_CMD_READ_LONG              0x22
+ATA_CMD_READ_LONG_ONCE         0x23
+ATA_CMD_PIO_READ_EXT           0x24
+ATA_CMD_READ_EXT               0x25
+ATA_CMD_READ_QUEUED            0x26
+ATA_CMD_READ_NATIVE_MAX_EXT    0x27
+ATA_CMD_READ_MULTI_EXT         0x29
+ATA_CMD_READ_STREAM_DMA_EXT    0x2A
+ATA_CMD_READ_STREAM_EXT                0x2B
+ATA_CMD_READ_LOG_EXT           0x2F
+ATA_CMD_PIO_WRITE              0x30
+ATA_CMD_WRITE_LONG             0x32
+ATA_CMD_WRITE_LONG_ONCE                0x33
+ATA_CMD_PIO_WRITE_EXT          0x34
+ATA_CMD_WRITE_EXT              0x35
+ATA_CMD_WRITE_QUEUED           0x36
+ATA_CMD_SET_MAX_EXT            0x37
+ATA_CMD_CFA_WRITE_NE           0x38
+ATA_CMD_WRITE_MULTI_EXT                0x39
+ATA_CMD_WRITE_STREAM_DMA_EXT   0x3A
+ATA_CMD_WRITE_STREAM_EXT       0x3B
+ATA_CMD_WRITE_FUA_EXT          0x3D
+ATA_CMD_WRITE_QUEUED_FUA_EXT   0x3E
+ATA_CMD_WRITE_LOG_EXT          0x3F
+ATA_CMD_VERIFY                 0x40
+ATA_CMD_VERIFY_EXT             0x42
+ATA_CMD_WRITE_UNCORR_EXT       0x45
+ATA_CMD_READ_LOG_DMA_EXT       0x47
+ATA_CMD_ZAC_MGMT_IN            0x4A
+ATA_CMD_CONFIG_STREAM          0x51
+ATA_CMD_WRITE_LOG_DMA_EXT      0x57
+ATA_CMD_TRUSTED_NONDATA                0x5B
+ATA_CMD_TRUSTED_RCV            0x5C
+ATA_CMD_TRUSTED_RCV_DMA                0x5D
+ATA_CMD_TRUSTED_SND            0x5E
+ATA_CMD_TRUSTED_SND_DMA                0x5F
+ATA_CMD_FPDMA_READ             0x60
+ATA_CMD_FPDMA_WRITE            0x61
+ATA_CMD_NCQ_NON_DATA           0x63
+ATA_CMD_FPDMA_SEND             0x64
+ATA_CMD_FPDMA_RECV             0x65
+ATA_CMD_CFA_TRANS_SECT         0x87
+ATA_CMD_EDD                    0x90
+ATA_CMD_INIT_DEV_PARAMS                0x91
+ATA_CMD_DOWNLOAD_MICRO         0x92
+ATA_CMD_DOWNLOAD_MICRO_DMA     0x93
+ATA_CMD_ZAC_MGMT_OUT           0x9F
+ATA_CMD_PACKET                 0xA0
+ATA_CMD_ID_ATAPI               0xA1
+ATA_CMD_SERVICE                        0xA2
+ATA_CMD_SMART                  0xB0
+ATA_CMD_CONF_OVERLAY           0xB1
+ATA_CMD_SANITIZE_DEVICE                0xB4
+ATA_CMD_CFA_ERASE              0xC0
+ATA_CMD_READ_MULTI             0xC4
+ATA_CMD_WRITE_MULTI            0xC5
+ATA_CMD_SET_MULTI              0xC6
+ATA_CMD_READ                   0xC8
+ATA_CMD_WRITE                  0xCA
+ATA_CMD_CFA_WRITE_MULT_NE      0xCD
+ATA_CMD_WRITE_MULTI_FUA_EXT    0xCE
+ATA_CMD_CHK_MED_CRD_TYP                0xD1
+ATA_CMD_MEDIA_LOCK             0xDE
+ATA_CMD_MEDIA_UNLOCK           0xDF
+ATA_CMD_STANDBYNOW1            0xE0
+ATA_CMD_IDLEIMMEDIATE          0xE1
+ATA_CMD_STANDBY                        0xE2
+ATA_CMD_IDLE                   0xE3
+ATA_CMD_PMP_READ               0xE4
+ATA_CMD_CHK_POWER              0xE5
+ATA_CMD_SLEEP                  0xE6
+ATA_CMD_FLUSH                  0xE7
+ATA_CMD_PMP_WRITE              0xE8
+ATA_CMD_PMP_READ_DMA           0xE9
+ATA_CMD_FLUSH_EXT              0xEA
+ATA_CMD_PMP_WRITE_DMA          0xEB
+ATA_CMD_ID_ATA                 0xEC
+ATA_CMD_SET_FEATURES           0xEF
+ATA_CMD_SEC_SET_PASS           0xF1
+ATA_CMD_SEC_UNLOCK             0xF2
+ATA_CMD_SEC_ERASE_PREP         0xF3
+ATA_CMD_SEC_ERASE_UNIT         0xF4
+ATA_CMD_SEC_FREEZE_LOCK                0xF5
+ATA_CMD_SEC_DISABLE_PASS       0xF6
+ATA_CMD_READ_NATIVE_MAX                0xF8
+ATA_CMD_SET_MAX                        0xF9
index cb6c4573572cac4c4e5874bd967c0cb8d42a3fe9..775b8f1cb6e4bb641bce2ddd8ada21d17e619342 100644 (file)
@@ -40,15 +40,63 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat hw_breakpoint_len[] = {
+static const struct xlat_data hw_breakpoint_len_xdata[] = {
  XLAT(HW_BREAKPOINT_LEN_1),
+ #define XLAT_VAL_0 ((unsigned) (HW_BREAKPOINT_LEN_1))
+ #define XLAT_STR_0 STRINGIFY(HW_BREAKPOINT_LEN_1)
  XLAT(HW_BREAKPOINT_LEN_2),
+ #define XLAT_VAL_1 ((unsigned) (HW_BREAKPOINT_LEN_2))
+ #define XLAT_STR_1 STRINGIFY(HW_BREAKPOINT_LEN_2)
  XLAT(HW_BREAKPOINT_LEN_4),
+ #define XLAT_VAL_2 ((unsigned) (HW_BREAKPOINT_LEN_4))
+ #define XLAT_STR_2 STRINGIFY(HW_BREAKPOINT_LEN_4)
  XLAT(HW_BREAKPOINT_LEN_8),
- XLAT_END
+ #define XLAT_VAL_3 ((unsigned) (HW_BREAKPOINT_LEN_8))
+ #define XLAT_STR_3 STRINGIFY(HW_BREAKPOINT_LEN_8)
 };
+static
+const struct xlat hw_breakpoint_len[1] = { {
+ .data = hw_breakpoint_len_xdata,
+ .size = ARRAY_SIZE(hw_breakpoint_len_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 30b3af8cf096955a01f87454e96f1e0f78320f0a..e3d07f862a418cc5741c7ec131ad1c151565d1aa 100644 (file)
@@ -47,17 +47,74 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat hw_breakpoint_type[] = {
-
+static const struct xlat_data hw_breakpoint_type_xdata[] = {
  XLAT(HW_BREAKPOINT_EMPTY),
+ #define XLAT_VAL_0 ((unsigned) (HW_BREAKPOINT_EMPTY))
+ #define XLAT_STR_0 STRINGIFY(HW_BREAKPOINT_EMPTY)
  XLAT(HW_BREAKPOINT_R),
+ #define XLAT_VAL_1 ((unsigned) (HW_BREAKPOINT_R))
+ #define XLAT_STR_1 STRINGIFY(HW_BREAKPOINT_R)
  XLAT(HW_BREAKPOINT_W),
+ #define XLAT_VAL_2 ((unsigned) (HW_BREAKPOINT_W))
+ #define XLAT_STR_2 STRINGIFY(HW_BREAKPOINT_W)
  XLAT(HW_BREAKPOINT_RW),
+ #define XLAT_VAL_3 ((unsigned) (HW_BREAKPOINT_RW))
+ #define XLAT_STR_3 STRINGIFY(HW_BREAKPOINT_RW)
  XLAT(HW_BREAKPOINT_X),
- XLAT_END
+ #define XLAT_VAL_4 ((unsigned) (HW_BREAKPOINT_X))
+ #define XLAT_STR_4 STRINGIFY(HW_BREAKPOINT_X)
 };
+static
+const struct xlat hw_breakpoint_type[1] = { {
+ .data = hw_breakpoint_type_xdata,
+ .size = ARRAY_SIZE(hw_breakpoint_type_xdata),
+ .type = XT_SORTED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 0fc625b7546ce8c9cf071b83f5e62d2e8d313e89..4ffcaae1354112a77789b1904e959d9c74e00372 100644 (file)
@@ -1,4 +1,4 @@
-/* sort -k2,2n */
+#sorted sort -k2,2n
 HW_BREAKPOINT_EMPTY 0
 HW_BREAKPOINT_R 1
 HW_BREAKPOINT_W 2
index a3f1300d1c11156a8772fe38fddfa6571f1dc13b..b68ca54fdbd89b29ed6a6d8ebf578e3fd8af1dda 100644 (file)
 
 # else
 
-static
-const struct xlat icmpfilterflags[] = {
+static const struct xlat_data icmpfilterflags_xdata[] = {
 #if defined(ICMP_ECHOREPLY) || (defined(HAVE_DECL_ICMP_ECHOREPLY) && HAVE_DECL_ICMP_ECHOREPLY)
   XLAT_PAIR(1ULL<<ICMP_ECHOREPLY, "1<<ICMP_ECHOREPLY"),
+ #define XLAT_VAL_0 ((unsigned) (1ULL<<ICMP_ECHOREPLY))
+ #define XLAT_STR_0 "1<<ICMP_ECHOREPLY"
 #endif
 #if defined(ICMP_DEST_UNREACH) || (defined(HAVE_DECL_ICMP_DEST_UNREACH) && HAVE_DECL_ICMP_DEST_UNREACH)
   XLAT_PAIR(1ULL<<ICMP_DEST_UNREACH, "1<<ICMP_DEST_UNREACH"),
+ #define XLAT_VAL_1 ((unsigned) (1ULL<<ICMP_DEST_UNREACH))
+ #define XLAT_STR_1 "1<<ICMP_DEST_UNREACH"
 #endif
 #if defined(ICMP_SOURCE_QUENCH) || (defined(HAVE_DECL_ICMP_SOURCE_QUENCH) && HAVE_DECL_ICMP_SOURCE_QUENCH)
   XLAT_PAIR(1ULL<<ICMP_SOURCE_QUENCH, "1<<ICMP_SOURCE_QUENCH"),
+ #define XLAT_VAL_2 ((unsigned) (1ULL<<ICMP_SOURCE_QUENCH))
+ #define XLAT_STR_2 "1<<ICMP_SOURCE_QUENCH"
 #endif
 #if defined(ICMP_REDIRECT) || (defined(HAVE_DECL_ICMP_REDIRECT) && HAVE_DECL_ICMP_REDIRECT)
   XLAT_PAIR(1ULL<<ICMP_REDIRECT, "1<<ICMP_REDIRECT"),
+ #define XLAT_VAL_3 ((unsigned) (1ULL<<ICMP_REDIRECT))
+ #define XLAT_STR_3 "1<<ICMP_REDIRECT"
 #endif
 #if defined(ICMP_ECHO) || (defined(HAVE_DECL_ICMP_ECHO) && HAVE_DECL_ICMP_ECHO)
   XLAT_PAIR(1ULL<<ICMP_ECHO, "1<<ICMP_ECHO"),
+ #define XLAT_VAL_4 ((unsigned) (1ULL<<ICMP_ECHO))
+ #define XLAT_STR_4 "1<<ICMP_ECHO"
 #endif
 #if defined(ICMP_TIME_EXCEEDED) || (defined(HAVE_DECL_ICMP_TIME_EXCEEDED) && HAVE_DECL_ICMP_TIME_EXCEEDED)
   XLAT_PAIR(1ULL<<ICMP_TIME_EXCEEDED, "1<<ICMP_TIME_EXCEEDED"),
+ #define XLAT_VAL_5 ((unsigned) (1ULL<<ICMP_TIME_EXCEEDED))
+ #define XLAT_STR_5 "1<<ICMP_TIME_EXCEEDED"
 #endif
 #if defined(ICMP_PARAMETERPROB) || (defined(HAVE_DECL_ICMP_PARAMETERPROB) && HAVE_DECL_ICMP_PARAMETERPROB)
   XLAT_PAIR(1ULL<<ICMP_PARAMETERPROB, "1<<ICMP_PARAMETERPROB"),
+ #define XLAT_VAL_6 ((unsigned) (1ULL<<ICMP_PARAMETERPROB))
+ #define XLAT_STR_6 "1<<ICMP_PARAMETERPROB"
 #endif
 #if defined(ICMP_TIMESTAMP) || (defined(HAVE_DECL_ICMP_TIMESTAMP) && HAVE_DECL_ICMP_TIMESTAMP)
   XLAT_PAIR(1ULL<<ICMP_TIMESTAMP, "1<<ICMP_TIMESTAMP"),
+ #define XLAT_VAL_7 ((unsigned) (1ULL<<ICMP_TIMESTAMP))
+ #define XLAT_STR_7 "1<<ICMP_TIMESTAMP"
 #endif
 #if defined(ICMP_TIMESTAMPREPLY) || (defined(HAVE_DECL_ICMP_TIMESTAMPREPLY) && HAVE_DECL_ICMP_TIMESTAMPREPLY)
   XLAT_PAIR(1ULL<<ICMP_TIMESTAMPREPLY, "1<<ICMP_TIMESTAMPREPLY"),
+ #define XLAT_VAL_8 ((unsigned) (1ULL<<ICMP_TIMESTAMPREPLY))
+ #define XLAT_STR_8 "1<<ICMP_TIMESTAMPREPLY"
 #endif
 #if defined(ICMP_INFO_REQUEST) || (defined(HAVE_DECL_ICMP_INFO_REQUEST) && HAVE_DECL_ICMP_INFO_REQUEST)
   XLAT_PAIR(1ULL<<ICMP_INFO_REQUEST, "1<<ICMP_INFO_REQUEST"),
+ #define XLAT_VAL_9 ((unsigned) (1ULL<<ICMP_INFO_REQUEST))
+ #define XLAT_STR_9 "1<<ICMP_INFO_REQUEST"
 #endif
 #if defined(ICMP_INFO_REPLY) || (defined(HAVE_DECL_ICMP_INFO_REPLY) && HAVE_DECL_ICMP_INFO_REPLY)
   XLAT_PAIR(1ULL<<ICMP_INFO_REPLY, "1<<ICMP_INFO_REPLY"),
+ #define XLAT_VAL_10 ((unsigned) (1ULL<<ICMP_INFO_REPLY))
+ #define XLAT_STR_10 "1<<ICMP_INFO_REPLY"
 #endif
 #if defined(ICMP_ADDRESS) || (defined(HAVE_DECL_ICMP_ADDRESS) && HAVE_DECL_ICMP_ADDRESS)
   XLAT_PAIR(1ULL<<ICMP_ADDRESS, "1<<ICMP_ADDRESS"),
+ #define XLAT_VAL_11 ((unsigned) (1ULL<<ICMP_ADDRESS))
+ #define XLAT_STR_11 "1<<ICMP_ADDRESS"
 #endif
 #if defined(ICMP_ADDRESSREPLY) || (defined(HAVE_DECL_ICMP_ADDRESSREPLY) && HAVE_DECL_ICMP_ADDRESSREPLY)
   XLAT_PAIR(1ULL<<ICMP_ADDRESSREPLY, "1<<ICMP_ADDRESSREPLY"),
+ #define XLAT_VAL_12 ((unsigned) (1ULL<<ICMP_ADDRESSREPLY))
+ #define XLAT_STR_12 "1<<ICMP_ADDRESSREPLY"
 #endif
- XLAT_END
 };
+static
+const struct xlat icmpfilterflags[1] = { {
+ .data = icmpfilterflags_xdata,
+ .size = ARRAY_SIZE(icmpfilterflags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index e6d03bf20bf29c2fc70b1a6e4044080797ea3ca6..38611bbac0e49aca61dffd4a0aa5a4f299746ada 100644 (file)
@@ -54,17 +54,85 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat if_dqblk_valid[] = {
+static const struct xlat_data if_dqblk_valid_xdata[] = {
  XLAT(QIF_BLIMITS),
+ #define XLAT_VAL_0 ((unsigned) (QIF_BLIMITS))
+ #define XLAT_STR_0 STRINGIFY(QIF_BLIMITS)
  XLAT(QIF_SPACE),
+ #define XLAT_VAL_1 ((unsigned) (QIF_SPACE))
+ #define XLAT_STR_1 STRINGIFY(QIF_SPACE)
  XLAT(QIF_ILIMITS),
+ #define XLAT_VAL_2 ((unsigned) (QIF_ILIMITS))
+ #define XLAT_STR_2 STRINGIFY(QIF_ILIMITS)
  XLAT(QIF_INODES),
+ #define XLAT_VAL_3 ((unsigned) (QIF_INODES))
+ #define XLAT_STR_3 STRINGIFY(QIF_INODES)
  XLAT(QIF_BTIME),
+ #define XLAT_VAL_4 ((unsigned) (QIF_BTIME))
+ #define XLAT_STR_4 STRINGIFY(QIF_BTIME)
  XLAT(QIF_ITIME),
- XLAT_END
+ #define XLAT_VAL_5 ((unsigned) (QIF_ITIME))
+ #define XLAT_STR_5 STRINGIFY(QIF_ITIME)
 };
+static
+const struct xlat if_dqblk_valid[1] = { {
+ .data = if_dqblk_valid_xdata,
+ .size = ARRAY_SIZE(if_dqblk_valid_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index aeb76bdada9101a606c84b79169eed7fa303e30f..f35f9089ea29f5b935cac06ccd8a1c8e5692bc03 100644 (file)
@@ -26,13 +26,41 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat if_dqinfo_flags[] = {
+static const struct xlat_data if_dqinfo_flags_xdata[] = {
  XLAT(DQF_ROOT_SQUASH),
+ #define XLAT_VAL_0 ((unsigned) (DQF_ROOT_SQUASH))
+ #define XLAT_STR_0 STRINGIFY(DQF_ROOT_SQUASH)
  XLAT(DQF_SYS_FILE),
- XLAT_END
+ #define XLAT_VAL_1 ((unsigned) (DQF_SYS_FILE))
+ #define XLAT_STR_1 STRINGIFY(DQF_SYS_FILE)
 };
+static
+const struct xlat if_dqinfo_flags[1] = { {
+ .data = if_dqinfo_flags_xdata,
+ .size = ARRAY_SIZE(if_dqinfo_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index b4fc12729fdceb51ceaae34eb1e7d52c93efdf79..04f86e3f71a36186d0320435c3b9694c3c67bab7 100644 (file)
@@ -33,14 +33,52 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat if_dqinfo_valid[] = {
+static const struct xlat_data if_dqinfo_valid_xdata[] = {
  XLAT(IIF_BGRACE),
+ #define XLAT_VAL_0 ((unsigned) (IIF_BGRACE))
+ #define XLAT_STR_0 STRINGIFY(IIF_BGRACE)
  XLAT(IIF_IGRACE),
+ #define XLAT_VAL_1 ((unsigned) (IIF_IGRACE))
+ #define XLAT_STR_1 STRINGIFY(IIF_IGRACE)
  XLAT(IIF_FLAGS),
- XLAT_END
+ #define XLAT_VAL_2 ((unsigned) (IIF_FLAGS))
+ #define XLAT_STR_2 STRINGIFY(IIF_FLAGS)
 };
+static
+const struct xlat if_dqinfo_valid[1] = { {
+ .data = if_dqinfo_valid_xdata,
+ .size = ARRAY_SIZE(if_dqinfo_valid_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index cc2c9894d2f06e7acaef5b7afb684f15b815eca8..5e8b1b2256aa45267fdfc6f998624a9f9f2f378b 100644 (file)
 
 # else
 
-static
-const struct xlat ifaddrflags[] = {
+static const struct xlat_data ifaddrflags_xdata[] = {
 #if defined(IFA_F_SECONDARY) || (defined(HAVE_DECL_IFA_F_SECONDARY) && HAVE_DECL_IFA_F_SECONDARY)
   XLAT(IFA_F_SECONDARY),
+ #define XLAT_VAL_0 ((unsigned) (IFA_F_SECONDARY))
+ #define XLAT_STR_0 STRINGIFY(IFA_F_SECONDARY)
 #endif
 #if defined(IFA_F_NODAD) || (defined(HAVE_DECL_IFA_F_NODAD) && HAVE_DECL_IFA_F_NODAD)
   XLAT(IFA_F_NODAD),
+ #define XLAT_VAL_1 ((unsigned) (IFA_F_NODAD))
+ #define XLAT_STR_1 STRINGIFY(IFA_F_NODAD)
 #endif
 #if defined(IFA_F_OPTIMISTIC) || (defined(HAVE_DECL_IFA_F_OPTIMISTIC) && HAVE_DECL_IFA_F_OPTIMISTIC)
   XLAT(IFA_F_OPTIMISTIC),
+ #define XLAT_VAL_2 ((unsigned) (IFA_F_OPTIMISTIC))
+ #define XLAT_STR_2 STRINGIFY(IFA_F_OPTIMISTIC)
 #endif
 #if defined(IFA_F_DADFAILED) || (defined(HAVE_DECL_IFA_F_DADFAILED) && HAVE_DECL_IFA_F_DADFAILED)
   XLAT(IFA_F_DADFAILED),
+ #define XLAT_VAL_3 ((unsigned) (IFA_F_DADFAILED))
+ #define XLAT_STR_3 STRINGIFY(IFA_F_DADFAILED)
 #endif
 #if defined(IFA_F_HOMEADDRESS) || (defined(HAVE_DECL_IFA_F_HOMEADDRESS) && HAVE_DECL_IFA_F_HOMEADDRESS)
   XLAT(IFA_F_HOMEADDRESS),
+ #define XLAT_VAL_4 ((unsigned) (IFA_F_HOMEADDRESS))
+ #define XLAT_STR_4 STRINGIFY(IFA_F_HOMEADDRESS)
 #endif
 #if defined(IFA_F_DEPRECATED) || (defined(HAVE_DECL_IFA_F_DEPRECATED) && HAVE_DECL_IFA_F_DEPRECATED)
   XLAT(IFA_F_DEPRECATED),
+ #define XLAT_VAL_5 ((unsigned) (IFA_F_DEPRECATED))
+ #define XLAT_STR_5 STRINGIFY(IFA_F_DEPRECATED)
 #endif
 #if defined(IFA_F_TENTATIVE) || (defined(HAVE_DECL_IFA_F_TENTATIVE) && HAVE_DECL_IFA_F_TENTATIVE)
   XLAT(IFA_F_TENTATIVE),
+ #define XLAT_VAL_6 ((unsigned) (IFA_F_TENTATIVE))
+ #define XLAT_STR_6 STRINGIFY(IFA_F_TENTATIVE)
 #endif
 #if defined(IFA_F_PERMANENT) || (defined(HAVE_DECL_IFA_F_PERMANENT) && HAVE_DECL_IFA_F_PERMANENT)
   XLAT(IFA_F_PERMANENT),
+ #define XLAT_VAL_7 ((unsigned) (IFA_F_PERMANENT))
+ #define XLAT_STR_7 STRINGIFY(IFA_F_PERMANENT)
 #endif
 #if defined(IFA_F_MANAGETEMPADDR) || (defined(HAVE_DECL_IFA_F_MANAGETEMPADDR) && HAVE_DECL_IFA_F_MANAGETEMPADDR)
   XLAT(IFA_F_MANAGETEMPADDR),
+ #define XLAT_VAL_8 ((unsigned) (IFA_F_MANAGETEMPADDR))
+ #define XLAT_STR_8 STRINGIFY(IFA_F_MANAGETEMPADDR)
 #endif
 #if defined(IFA_F_NOPREFIXROUTE) || (defined(HAVE_DECL_IFA_F_NOPREFIXROUTE) && HAVE_DECL_IFA_F_NOPREFIXROUTE)
   XLAT(IFA_F_NOPREFIXROUTE),
+ #define XLAT_VAL_9 ((unsigned) (IFA_F_NOPREFIXROUTE))
+ #define XLAT_STR_9 STRINGIFY(IFA_F_NOPREFIXROUTE)
 #endif
 #if defined(IFA_F_MCAUTOJOIN) || (defined(HAVE_DECL_IFA_F_MCAUTOJOIN) && HAVE_DECL_IFA_F_MCAUTOJOIN)
   XLAT(IFA_F_MCAUTOJOIN),
+ #define XLAT_VAL_10 ((unsigned) (IFA_F_MCAUTOJOIN))
+ #define XLAT_STR_10 STRINGIFY(IFA_F_MCAUTOJOIN)
 #endif
 #if defined(IFA_F_STABLE_PRIVACY) || (defined(HAVE_DECL_IFA_F_STABLE_PRIVACY) && HAVE_DECL_IFA_F_STABLE_PRIVACY)
   XLAT(IFA_F_STABLE_PRIVACY),
+ #define XLAT_VAL_11 ((unsigned) (IFA_F_STABLE_PRIVACY))
+ #define XLAT_STR_11 STRINGIFY(IFA_F_STABLE_PRIVACY)
 #endif
- XLAT_END
 };
+static
+const struct xlat ifaddrflags[1] = { {
+ .data = ifaddrflags_xdata,
+ .size = ARRAY_SIZE(ifaddrflags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 5c1b507d2d0c9a3be00080f9195ab8ddb6970043..badc09a284dd74e8b07ecfb0b7665aae6928f672 100644 (file)
@@ -141,30 +141,227 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # ifndef IN_MPERS
 
-const struct xlat iffflags[] = {
-
+static const struct xlat_data iffflags_xdata[] = {
  XLAT(IFF_UP),
+ #define XLAT_VAL_0 ((unsigned) (IFF_UP))
+ #define XLAT_STR_0 STRINGIFY(IFF_UP)
  XLAT(IFF_BROADCAST),
+ #define XLAT_VAL_1 ((unsigned) (IFF_BROADCAST))
+ #define XLAT_STR_1 STRINGIFY(IFF_BROADCAST)
  XLAT(IFF_DEBUG),
+ #define XLAT_VAL_2 ((unsigned) (IFF_DEBUG))
+ #define XLAT_STR_2 STRINGIFY(IFF_DEBUG)
  XLAT(IFF_LOOPBACK),
+ #define XLAT_VAL_3 ((unsigned) (IFF_LOOPBACK))
+ #define XLAT_STR_3 STRINGIFY(IFF_LOOPBACK)
  XLAT(IFF_POINTOPOINT),
+ #define XLAT_VAL_4 ((unsigned) (IFF_POINTOPOINT))
+ #define XLAT_STR_4 STRINGIFY(IFF_POINTOPOINT)
  XLAT(IFF_NOTRAILERS),
+ #define XLAT_VAL_5 ((unsigned) (IFF_NOTRAILERS))
+ #define XLAT_STR_5 STRINGIFY(IFF_NOTRAILERS)
  XLAT(IFF_RUNNING),
+ #define XLAT_VAL_6 ((unsigned) (IFF_RUNNING))
+ #define XLAT_STR_6 STRINGIFY(IFF_RUNNING)
  XLAT(IFF_NOARP),
+ #define XLAT_VAL_7 ((unsigned) (IFF_NOARP))
+ #define XLAT_STR_7 STRINGIFY(IFF_NOARP)
  XLAT(IFF_PROMISC),
+ #define XLAT_VAL_8 ((unsigned) (IFF_PROMISC))
+ #define XLAT_STR_8 STRINGIFY(IFF_PROMISC)
  XLAT(IFF_ALLMULTI),
+ #define XLAT_VAL_9 ((unsigned) (IFF_ALLMULTI))
+ #define XLAT_STR_9 STRINGIFY(IFF_ALLMULTI)
  XLAT(IFF_MASTER),
+ #define XLAT_VAL_10 ((unsigned) (IFF_MASTER))
+ #define XLAT_STR_10 STRINGIFY(IFF_MASTER)
  XLAT(IFF_SLAVE),
+ #define XLAT_VAL_11 ((unsigned) (IFF_SLAVE))
+ #define XLAT_STR_11 STRINGIFY(IFF_SLAVE)
  XLAT(IFF_MULTICAST),
+ #define XLAT_VAL_12 ((unsigned) (IFF_MULTICAST))
+ #define XLAT_STR_12 STRINGIFY(IFF_MULTICAST)
  XLAT(IFF_PORTSEL),
+ #define XLAT_VAL_13 ((unsigned) (IFF_PORTSEL))
+ #define XLAT_STR_13 STRINGIFY(IFF_PORTSEL)
  XLAT(IFF_AUTOMEDIA),
+ #define XLAT_VAL_14 ((unsigned) (IFF_AUTOMEDIA))
+ #define XLAT_STR_14 STRINGIFY(IFF_AUTOMEDIA)
  XLAT(IFF_DYNAMIC),
+ #define XLAT_VAL_15 ((unsigned) (IFF_DYNAMIC))
+ #define XLAT_STR_15 STRINGIFY(IFF_DYNAMIC)
  XLAT(IFF_LOWER_UP),
+ #define XLAT_VAL_16 ((unsigned) (IFF_LOWER_UP))
+ #define XLAT_STR_16 STRINGIFY(IFF_LOWER_UP)
  XLAT(IFF_DORMANT),
+ #define XLAT_VAL_17 ((unsigned) (IFF_DORMANT))
+ #define XLAT_STR_17 STRINGIFY(IFF_DORMANT)
  XLAT(IFF_ECHO),
- XLAT_END
+ #define XLAT_VAL_18 ((unsigned) (IFF_ECHO))
+ #define XLAT_STR_18 STRINGIFY(IFF_ECHO)
 };
+const struct xlat iffflags[1] = { {
+ .data = iffflags_xdata,
+ .size = ARRAY_SIZE(iffflags_xdata),
+ .type = XT_SORTED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 210495b701b1ecda90623e6f11fcb317bf90e822..53b552402e6c1d54d46625bb9c4f633ac57c5b02 100644 (file)
@@ -1,4 +1,4 @@
-/* sort -k4,4g */
+#sorted sort -k4,4g
 IFF_UP         (1 << 0)
 IFF_BROADCAST  (1 << 1)
 IFF_DEBUG      (1 << 2)
index c11c00a7d304cfbc958b5068537dcaa6a92195b5..31b00c68ddc0b1364b4f720b33cedb1b7886ff2f 100644 (file)
@@ -40,15 +40,63 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat in6_addr_gen_mode[] = {
+static const struct xlat_data in6_addr_gen_mode_xdata[] = {
  [IN6_ADDR_GEN_MODE_EUI64] = XLAT(IN6_ADDR_GEN_MODE_EUI64),
+ #define XLAT_VAL_0 ((unsigned) (IN6_ADDR_GEN_MODE_EUI64))
+ #define XLAT_STR_0 STRINGIFY(IN6_ADDR_GEN_MODE_EUI64)
  [IN6_ADDR_GEN_MODE_NONE] = XLAT(IN6_ADDR_GEN_MODE_NONE),
+ #define XLAT_VAL_1 ((unsigned) (IN6_ADDR_GEN_MODE_NONE))
+ #define XLAT_STR_1 STRINGIFY(IN6_ADDR_GEN_MODE_NONE)
  [IN6_ADDR_GEN_MODE_STABLE_PRIVACY] = XLAT(IN6_ADDR_GEN_MODE_STABLE_PRIVACY),
+ #define XLAT_VAL_2 ((unsigned) (IN6_ADDR_GEN_MODE_STABLE_PRIVACY))
+ #define XLAT_STR_2 STRINGIFY(IN6_ADDR_GEN_MODE_STABLE_PRIVACY)
  [IN6_ADDR_GEN_MODE_RANDOM] = XLAT(IN6_ADDR_GEN_MODE_RANDOM),
- XLAT_END
+ #define XLAT_VAL_3 ((unsigned) (IN6_ADDR_GEN_MODE_RANDOM))
+ #define XLAT_STR_3 STRINGIFY(IN6_ADDR_GEN_MODE_RANDOM)
 };
+static
+const struct xlat in6_addr_gen_mode[1] = { {
+ .data = in6_addr_gen_mode_xdata,
+ .size = ARRAY_SIZE(in6_addr_gen_mode_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 97a210b041e27c9f672b403e39efe0f41aee0876..40e7d2084c81f20cab605e84be2a86e9561f5982 100644 (file)
@@ -369,62 +369,580 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat inet6_devconf_indices[] = {
+static const struct xlat_data inet6_devconf_indices_xdata[] = {
  [DEVCONF_FORWARDING] = XLAT(DEVCONF_FORWARDING),
+ #define XLAT_VAL_0 ((unsigned) (DEVCONF_FORWARDING))
+ #define XLAT_STR_0 STRINGIFY(DEVCONF_FORWARDING)
  [DEVCONF_HOPLIMIT] = XLAT(DEVCONF_HOPLIMIT),
+ #define XLAT_VAL_1 ((unsigned) (DEVCONF_HOPLIMIT))
+ #define XLAT_STR_1 STRINGIFY(DEVCONF_HOPLIMIT)
  [DEVCONF_MTU6] = XLAT(DEVCONF_MTU6),
+ #define XLAT_VAL_2 ((unsigned) (DEVCONF_MTU6))
+ #define XLAT_STR_2 STRINGIFY(DEVCONF_MTU6)
  [DEVCONF_ACCEPT_RA] = XLAT(DEVCONF_ACCEPT_RA),
+ #define XLAT_VAL_3 ((unsigned) (DEVCONF_ACCEPT_RA))
+ #define XLAT_STR_3 STRINGIFY(DEVCONF_ACCEPT_RA)
  [DEVCONF_ACCEPT_REDIRECTS] = XLAT(DEVCONF_ACCEPT_REDIRECTS),
+ #define XLAT_VAL_4 ((unsigned) (DEVCONF_ACCEPT_REDIRECTS))
+ #define XLAT_STR_4 STRINGIFY(DEVCONF_ACCEPT_REDIRECTS)
  [DEVCONF_AUTOCONF] = XLAT(DEVCONF_AUTOCONF),
+ #define XLAT_VAL_5 ((unsigned) (DEVCONF_AUTOCONF))
+ #define XLAT_STR_5 STRINGIFY(DEVCONF_AUTOCONF)
  [DEVCONF_DAD_TRANSMITS] = XLAT(DEVCONF_DAD_TRANSMITS),
+ #define XLAT_VAL_6 ((unsigned) (DEVCONF_DAD_TRANSMITS))
+ #define XLAT_STR_6 STRINGIFY(DEVCONF_DAD_TRANSMITS)
  [DEVCONF_RTR_SOLICITS] = XLAT(DEVCONF_RTR_SOLICITS),
+ #define XLAT_VAL_7 ((unsigned) (DEVCONF_RTR_SOLICITS))
+ #define XLAT_STR_7 STRINGIFY(DEVCONF_RTR_SOLICITS)
  [DEVCONF_RTR_SOLICIT_INTERVAL] = XLAT(DEVCONF_RTR_SOLICIT_INTERVAL),
+ #define XLAT_VAL_8 ((unsigned) (DEVCONF_RTR_SOLICIT_INTERVAL))
+ #define XLAT_STR_8 STRINGIFY(DEVCONF_RTR_SOLICIT_INTERVAL)
  [DEVCONF_RTR_SOLICIT_DELAY] = XLAT(DEVCONF_RTR_SOLICIT_DELAY),
+ #define XLAT_VAL_9 ((unsigned) (DEVCONF_RTR_SOLICIT_DELAY))
+ #define XLAT_STR_9 STRINGIFY(DEVCONF_RTR_SOLICIT_DELAY)
  [DEVCONF_USE_TEMPADDR] = XLAT(DEVCONF_USE_TEMPADDR),
+ #define XLAT_VAL_10 ((unsigned) (DEVCONF_USE_TEMPADDR))
+ #define XLAT_STR_10 STRINGIFY(DEVCONF_USE_TEMPADDR)
  [DEVCONF_TEMP_VALID_LFT] = XLAT(DEVCONF_TEMP_VALID_LFT),
+ #define XLAT_VAL_11 ((unsigned) (DEVCONF_TEMP_VALID_LFT))
+ #define XLAT_STR_11 STRINGIFY(DEVCONF_TEMP_VALID_LFT)
  [DEVCONF_TEMP_PREFERED_LFT] = XLAT(DEVCONF_TEMP_PREFERED_LFT),
+ #define XLAT_VAL_12 ((unsigned) (DEVCONF_TEMP_PREFERED_LFT))
+ #define XLAT_STR_12 STRINGIFY(DEVCONF_TEMP_PREFERED_LFT)
  [DEVCONF_REGEN_MAX_RETRY] = XLAT(DEVCONF_REGEN_MAX_RETRY),
+ #define XLAT_VAL_13 ((unsigned) (DEVCONF_REGEN_MAX_RETRY))
+ #define XLAT_STR_13 STRINGIFY(DEVCONF_REGEN_MAX_RETRY)
  [DEVCONF_MAX_DESYNC_FACTOR] = XLAT(DEVCONF_MAX_DESYNC_FACTOR),
+ #define XLAT_VAL_14 ((unsigned) (DEVCONF_MAX_DESYNC_FACTOR))
+ #define XLAT_STR_14 STRINGIFY(DEVCONF_MAX_DESYNC_FACTOR)
  [DEVCONF_MAX_ADDRESSES] = XLAT(DEVCONF_MAX_ADDRESSES),
+ #define XLAT_VAL_15 ((unsigned) (DEVCONF_MAX_ADDRESSES))
+ #define XLAT_STR_15 STRINGIFY(DEVCONF_MAX_ADDRESSES)
  [DEVCONF_FORCE_MLD_VERSION] = XLAT(DEVCONF_FORCE_MLD_VERSION),
+ #define XLAT_VAL_16 ((unsigned) (DEVCONF_FORCE_MLD_VERSION))
+ #define XLAT_STR_16 STRINGIFY(DEVCONF_FORCE_MLD_VERSION)
  [DEVCONF_ACCEPT_RA_DEFRTR] = XLAT(DEVCONF_ACCEPT_RA_DEFRTR),
+ #define XLAT_VAL_17 ((unsigned) (DEVCONF_ACCEPT_RA_DEFRTR))
+ #define XLAT_STR_17 STRINGIFY(DEVCONF_ACCEPT_RA_DEFRTR)
  [DEVCONF_ACCEPT_RA_PINFO] = XLAT(DEVCONF_ACCEPT_RA_PINFO),
+ #define XLAT_VAL_18 ((unsigned) (DEVCONF_ACCEPT_RA_PINFO))
+ #define XLAT_STR_18 STRINGIFY(DEVCONF_ACCEPT_RA_PINFO)
  [DEVCONF_ACCEPT_RA_RTR_PREF] = XLAT(DEVCONF_ACCEPT_RA_RTR_PREF),
+ #define XLAT_VAL_19 ((unsigned) (DEVCONF_ACCEPT_RA_RTR_PREF))
+ #define XLAT_STR_19 STRINGIFY(DEVCONF_ACCEPT_RA_RTR_PREF)
  [DEVCONF_RTR_PROBE_INTERVAL] = XLAT(DEVCONF_RTR_PROBE_INTERVAL),
+ #define XLAT_VAL_20 ((unsigned) (DEVCONF_RTR_PROBE_INTERVAL))
+ #define XLAT_STR_20 STRINGIFY(DEVCONF_RTR_PROBE_INTERVAL)
  [DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN] = XLAT(DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN),
+ #define XLAT_VAL_21 ((unsigned) (DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN))
+ #define XLAT_STR_21 STRINGIFY(DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN)
  [DEVCONF_PROXY_NDP] = XLAT(DEVCONF_PROXY_NDP),
+ #define XLAT_VAL_22 ((unsigned) (DEVCONF_PROXY_NDP))
+ #define XLAT_STR_22 STRINGIFY(DEVCONF_PROXY_NDP)
  [DEVCONF_OPTIMISTIC_DAD] = XLAT(DEVCONF_OPTIMISTIC_DAD),
+ #define XLAT_VAL_23 ((unsigned) (DEVCONF_OPTIMISTIC_DAD))
+ #define XLAT_STR_23 STRINGIFY(DEVCONF_OPTIMISTIC_DAD)
  [DEVCONF_ACCEPT_SOURCE_ROUTE] = XLAT(DEVCONF_ACCEPT_SOURCE_ROUTE),
+ #define XLAT_VAL_24 ((unsigned) (DEVCONF_ACCEPT_SOURCE_ROUTE))
+ #define XLAT_STR_24 STRINGIFY(DEVCONF_ACCEPT_SOURCE_ROUTE)
  [DEVCONF_MC_FORWARDING] = XLAT(DEVCONF_MC_FORWARDING),
+ #define XLAT_VAL_25 ((unsigned) (DEVCONF_MC_FORWARDING))
+ #define XLAT_STR_25 STRINGIFY(DEVCONF_MC_FORWARDING)
  [DEVCONF_DISABLE_IPV6] = XLAT(DEVCONF_DISABLE_IPV6),
+ #define XLAT_VAL_26 ((unsigned) (DEVCONF_DISABLE_IPV6))
+ #define XLAT_STR_26 STRINGIFY(DEVCONF_DISABLE_IPV6)
  [DEVCONF_ACCEPT_DAD] = XLAT(DEVCONF_ACCEPT_DAD),
+ #define XLAT_VAL_27 ((unsigned) (DEVCONF_ACCEPT_DAD))
+ #define XLAT_STR_27 STRINGIFY(DEVCONF_ACCEPT_DAD)
  [DEVCONF_FORCE_TLLAO] = XLAT(DEVCONF_FORCE_TLLAO),
+ #define XLAT_VAL_28 ((unsigned) (DEVCONF_FORCE_TLLAO))
+ #define XLAT_STR_28 STRINGIFY(DEVCONF_FORCE_TLLAO)
  [DEVCONF_NDISC_NOTIFY] = XLAT(DEVCONF_NDISC_NOTIFY),
+ #define XLAT_VAL_29 ((unsigned) (DEVCONF_NDISC_NOTIFY))
+ #define XLAT_STR_29 STRINGIFY(DEVCONF_NDISC_NOTIFY)
  [DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL] = XLAT(DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL),
+ #define XLAT_VAL_30 ((unsigned) (DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL))
+ #define XLAT_STR_30 STRINGIFY(DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL)
  [DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL] = XLAT(DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL),
+ #define XLAT_VAL_31 ((unsigned) (DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL))
+ #define XLAT_STR_31 STRINGIFY(DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL)
  [DEVCONF_SUPPRESS_FRAG_NDISC] = XLAT(DEVCONF_SUPPRESS_FRAG_NDISC),
+ #define XLAT_VAL_32 ((unsigned) (DEVCONF_SUPPRESS_FRAG_NDISC))
+ #define XLAT_STR_32 STRINGIFY(DEVCONF_SUPPRESS_FRAG_NDISC)
  [DEVCONF_ACCEPT_RA_FROM_LOCAL] = XLAT(DEVCONF_ACCEPT_RA_FROM_LOCAL),
+ #define XLAT_VAL_33 ((unsigned) (DEVCONF_ACCEPT_RA_FROM_LOCAL))
+ #define XLAT_STR_33 STRINGIFY(DEVCONF_ACCEPT_RA_FROM_LOCAL)
  [DEVCONF_USE_OPTIMISTIC] = XLAT(DEVCONF_USE_OPTIMISTIC),
+ #define XLAT_VAL_34 ((unsigned) (DEVCONF_USE_OPTIMISTIC))
+ #define XLAT_STR_34 STRINGIFY(DEVCONF_USE_OPTIMISTIC)
  [DEVCONF_ACCEPT_RA_MTU] = XLAT(DEVCONF_ACCEPT_RA_MTU),
+ #define XLAT_VAL_35 ((unsigned) (DEVCONF_ACCEPT_RA_MTU))
+ #define XLAT_STR_35 STRINGIFY(DEVCONF_ACCEPT_RA_MTU)
  [DEVCONF_STABLE_SECRET] = XLAT(DEVCONF_STABLE_SECRET),
+ #define XLAT_VAL_36 ((unsigned) (DEVCONF_STABLE_SECRET))
+ #define XLAT_STR_36 STRINGIFY(DEVCONF_STABLE_SECRET)
  [DEVCONF_USE_OIF_ADDRS_ONLY] = XLAT(DEVCONF_USE_OIF_ADDRS_ONLY),
+ #define XLAT_VAL_37 ((unsigned) (DEVCONF_USE_OIF_ADDRS_ONLY))
+ #define XLAT_STR_37 STRINGIFY(DEVCONF_USE_OIF_ADDRS_ONLY)
  [DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT] = XLAT(DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT),
+ #define XLAT_VAL_38 ((unsigned) (DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT))
+ #define XLAT_STR_38 STRINGIFY(DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT)
  [DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN] = XLAT(DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN),
+ #define XLAT_VAL_39 ((unsigned) (DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN))
+ #define XLAT_STR_39 STRINGIFY(DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN)
  [DEVCONF_DROP_UNICAST_IN_L2_MULTICAST] = XLAT(DEVCONF_DROP_UNICAST_IN_L2_MULTICAST),
+ #define XLAT_VAL_40 ((unsigned) (DEVCONF_DROP_UNICAST_IN_L2_MULTICAST))
+ #define XLAT_STR_40 STRINGIFY(DEVCONF_DROP_UNICAST_IN_L2_MULTICAST)
  [DEVCONF_DROP_UNSOLICITED_NA] = XLAT(DEVCONF_DROP_UNSOLICITED_NA),
+ #define XLAT_VAL_41 ((unsigned) (DEVCONF_DROP_UNSOLICITED_NA))
+ #define XLAT_STR_41 STRINGIFY(DEVCONF_DROP_UNSOLICITED_NA)
  [DEVCONF_KEEP_ADDR_ON_DOWN] = XLAT(DEVCONF_KEEP_ADDR_ON_DOWN),
+ #define XLAT_VAL_42 ((unsigned) (DEVCONF_KEEP_ADDR_ON_DOWN))
+ #define XLAT_STR_42 STRINGIFY(DEVCONF_KEEP_ADDR_ON_DOWN)
  [DEVCONF_RTR_SOLICIT_MAX_INTERVAL] = XLAT(DEVCONF_RTR_SOLICIT_MAX_INTERVAL),
+ #define XLAT_VAL_43 ((unsigned) (DEVCONF_RTR_SOLICIT_MAX_INTERVAL))
+ #define XLAT_STR_43 STRINGIFY(DEVCONF_RTR_SOLICIT_MAX_INTERVAL)
  [DEVCONF_SEG6_ENABLED] = XLAT(DEVCONF_SEG6_ENABLED),
+ #define XLAT_VAL_44 ((unsigned) (DEVCONF_SEG6_ENABLED))
+ #define XLAT_STR_44 STRINGIFY(DEVCONF_SEG6_ENABLED)
  [DEVCONF_SEG6_REQUIRE_HMAC] = XLAT(DEVCONF_SEG6_REQUIRE_HMAC),
+ #define XLAT_VAL_45 ((unsigned) (DEVCONF_SEG6_REQUIRE_HMAC))
+ #define XLAT_STR_45 STRINGIFY(DEVCONF_SEG6_REQUIRE_HMAC)
  [DEVCONF_ENHANCED_DAD] = XLAT(DEVCONF_ENHANCED_DAD),
+ #define XLAT_VAL_46 ((unsigned) (DEVCONF_ENHANCED_DAD))
+ #define XLAT_STR_46 STRINGIFY(DEVCONF_ENHANCED_DAD)
  [DEVCONF_ADDR_GEN_MODE] = XLAT(DEVCONF_ADDR_GEN_MODE),
+ #define XLAT_VAL_47 ((unsigned) (DEVCONF_ADDR_GEN_MODE))
+ #define XLAT_STR_47 STRINGIFY(DEVCONF_ADDR_GEN_MODE)
  [DEVCONF_DISABLE_POLICY] = XLAT(DEVCONF_DISABLE_POLICY),
+ #define XLAT_VAL_48 ((unsigned) (DEVCONF_DISABLE_POLICY))
+ #define XLAT_STR_48 STRINGIFY(DEVCONF_DISABLE_POLICY)
  [DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN] = XLAT(DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN),
+ #define XLAT_VAL_49 ((unsigned) (DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN))
+ #define XLAT_STR_49 STRINGIFY(DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN)
  [DEVCONF_NDISC_TCLASS] = XLAT(DEVCONF_NDISC_TCLASS),
- XLAT_END
+ #define XLAT_VAL_50 ((unsigned) (DEVCONF_NDISC_TCLASS))
+ #define XLAT_STR_50 STRINGIFY(DEVCONF_NDISC_TCLASS)
 };
+static
+const struct xlat inet6_devconf_indices[1] = { {
+ .data = inet6_devconf_indices_xdata,
+ .size = ARRAY_SIZE(inet6_devconf_indices_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+#  ifdef XLAT_VAL_30
+  | XLAT_VAL_30
+#  endif
+#  ifdef XLAT_VAL_31
+  | XLAT_VAL_31
+#  endif
+#  ifdef XLAT_VAL_32
+  | XLAT_VAL_32
+#  endif
+#  ifdef XLAT_VAL_33
+  | XLAT_VAL_33
+#  endif
+#  ifdef XLAT_VAL_34
+  | XLAT_VAL_34
+#  endif
+#  ifdef XLAT_VAL_35
+  | XLAT_VAL_35
+#  endif
+#  ifdef XLAT_VAL_36
+  | XLAT_VAL_36
+#  endif
+#  ifdef XLAT_VAL_37
+  | XLAT_VAL_37
+#  endif
+#  ifdef XLAT_VAL_38
+  | XLAT_VAL_38
+#  endif
+#  ifdef XLAT_VAL_39
+  | XLAT_VAL_39
+#  endif
+#  ifdef XLAT_VAL_40
+  | XLAT_VAL_40
+#  endif
+#  ifdef XLAT_VAL_41
+  | XLAT_VAL_41
+#  endif
+#  ifdef XLAT_VAL_42
+  | XLAT_VAL_42
+#  endif
+#  ifdef XLAT_VAL_43
+  | XLAT_VAL_43
+#  endif
+#  ifdef XLAT_VAL_44
+  | XLAT_VAL_44
+#  endif
+#  ifdef XLAT_VAL_45
+  | XLAT_VAL_45
+#  endif
+#  ifdef XLAT_VAL_46
+  | XLAT_VAL_46
+#  endif
+#  ifdef XLAT_VAL_47
+  | XLAT_VAL_47
+#  endif
+#  ifdef XLAT_VAL_48
+  | XLAT_VAL_48
+#  endif
+#  ifdef XLAT_VAL_49
+  | XLAT_VAL_49
+#  endif
+#  ifdef XLAT_VAL_50
+  | XLAT_VAL_50
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+#  ifdef XLAT_STR_30
+  + sizeof(XLAT_STR_30)
+#  endif
+#  ifdef XLAT_STR_31
+  + sizeof(XLAT_STR_31)
+#  endif
+#  ifdef XLAT_STR_32
+  + sizeof(XLAT_STR_32)
+#  endif
+#  ifdef XLAT_STR_33
+  + sizeof(XLAT_STR_33)
+#  endif
+#  ifdef XLAT_STR_34
+  + sizeof(XLAT_STR_34)
+#  endif
+#  ifdef XLAT_STR_35
+  + sizeof(XLAT_STR_35)
+#  endif
+#  ifdef XLAT_STR_36
+  + sizeof(XLAT_STR_36)
+#  endif
+#  ifdef XLAT_STR_37
+  + sizeof(XLAT_STR_37)
+#  endif
+#  ifdef XLAT_STR_38
+  + sizeof(XLAT_STR_38)
+#  endif
+#  ifdef XLAT_STR_39
+  + sizeof(XLAT_STR_39)
+#  endif
+#  ifdef XLAT_STR_40
+  + sizeof(XLAT_STR_40)
+#  endif
+#  ifdef XLAT_STR_41
+  + sizeof(XLAT_STR_41)
+#  endif
+#  ifdef XLAT_STR_42
+  + sizeof(XLAT_STR_42)
+#  endif
+#  ifdef XLAT_STR_43
+  + sizeof(XLAT_STR_43)
+#  endif
+#  ifdef XLAT_STR_44
+  + sizeof(XLAT_STR_44)
+#  endif
+#  ifdef XLAT_STR_45
+  + sizeof(XLAT_STR_45)
+#  endif
+#  ifdef XLAT_STR_46
+  + sizeof(XLAT_STR_46)
+#  endif
+#  ifdef XLAT_STR_47
+  + sizeof(XLAT_STR_47)
+#  endif
+#  ifdef XLAT_STR_48
+  + sizeof(XLAT_STR_48)
+#  endif
+#  ifdef XLAT_STR_49
+  + sizeof(XLAT_STR_49)
+#  endif
+#  ifdef XLAT_STR_50
+  + sizeof(XLAT_STR_50)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
+#  undef XLAT_STR_30
+#  undef XLAT_VAL_30
+#  undef XLAT_STR_31
+#  undef XLAT_VAL_31
+#  undef XLAT_STR_32
+#  undef XLAT_VAL_32
+#  undef XLAT_STR_33
+#  undef XLAT_VAL_33
+#  undef XLAT_STR_34
+#  undef XLAT_VAL_34
+#  undef XLAT_STR_35
+#  undef XLAT_VAL_35
+#  undef XLAT_STR_36
+#  undef XLAT_VAL_36
+#  undef XLAT_STR_37
+#  undef XLAT_VAL_37
+#  undef XLAT_STR_38
+#  undef XLAT_VAL_38
+#  undef XLAT_STR_39
+#  undef XLAT_VAL_39
+#  undef XLAT_STR_40
+#  undef XLAT_VAL_40
+#  undef XLAT_STR_41
+#  undef XLAT_VAL_41
+#  undef XLAT_STR_42
+#  undef XLAT_VAL_42
+#  undef XLAT_STR_43
+#  undef XLAT_VAL_43
+#  undef XLAT_STR_44
+#  undef XLAT_VAL_44
+#  undef XLAT_STR_45
+#  undef XLAT_VAL_45
+#  undef XLAT_STR_46
+#  undef XLAT_VAL_46
+#  undef XLAT_STR_47
+#  undef XLAT_VAL_47
+#  undef XLAT_STR_48
+#  undef XLAT_VAL_48
+#  undef XLAT_STR_49
+#  undef XLAT_VAL_49
+#  undef XLAT_STR_50
+#  undef XLAT_VAL_50
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 74ba7d18475da0a362b4ba1b15dcea7146c1a0a4..6cd756f193e52abf63e776520559f4f9dc293b8f 100644 (file)
@@ -47,17 +47,74 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat inet6_if_flags[] = {
-
+static const struct xlat_data inet6_if_flags_xdata[] = {
  XLAT(IF_RS_SENT),
+ #define XLAT_VAL_0 ((unsigned) (IF_RS_SENT))
+ #define XLAT_STR_0 STRINGIFY(IF_RS_SENT)
  XLAT(IF_RA_RCVD),
+ #define XLAT_VAL_1 ((unsigned) (IF_RA_RCVD))
+ #define XLAT_STR_1 STRINGIFY(IF_RA_RCVD)
  XLAT(IF_RA_MANAGED),
+ #define XLAT_VAL_2 ((unsigned) (IF_RA_MANAGED))
+ #define XLAT_STR_2 STRINGIFY(IF_RA_MANAGED)
  XLAT(IF_RA_OTHERCONF),
+ #define XLAT_VAL_3 ((unsigned) (IF_RA_OTHERCONF))
+ #define XLAT_STR_3 STRINGIFY(IF_RA_OTHERCONF)
  XLAT(IF_READY),
- XLAT_END
+ #define XLAT_VAL_4 ((unsigned) (IF_READY))
+ #define XLAT_STR_4 STRINGIFY(IF_READY)
 };
+static
+const struct xlat inet6_if_flags[1] = { {
+ .data = inet6_if_flags_xdata,
+ .size = ARRAY_SIZE(inet6_if_flags_xdata),
+ .type = XT_SORTED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index befd22320ed285fecb0e717624a4067451ed9d94..634c9ab216cdeb6ae8ecd91a4f37bb0eef7ba063 100644 (file)
@@ -1,4 +1,4 @@
-/* sort -k2,2g */
+#sorted sort -k2,2g
 IF_RS_SENT     0x10
 IF_RA_RCVD     0x20
 IF_RA_MANAGED  0x40
index b1dd3cc811b75388306127be076fb2b46b1f43ea..396b4ba5c5c633ce7f4e11cb5415aff36eaab5fc 100644 (file)
@@ -236,44 +236,372 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat inet_devconf_indices[] = {
+static const struct xlat_data inet_devconf_indices_xdata[] = {
 
  [IPV4_DEVCONF_FORWARDING-1] = XLAT(IPV4_DEVCONF_FORWARDING-1),
+ #define XLAT_VAL_0 ((unsigned) (IPV4_DEVCONF_FORWARDING-1))
+ #define XLAT_STR_0 STRINGIFY(IPV4_DEVCONF_FORWARDING-1)
  [IPV4_DEVCONF_MC_FORWARDING-1] = XLAT(IPV4_DEVCONF_MC_FORWARDING-1),
+ #define XLAT_VAL_1 ((unsigned) (IPV4_DEVCONF_MC_FORWARDING-1))
+ #define XLAT_STR_1 STRINGIFY(IPV4_DEVCONF_MC_FORWARDING-1)
  [IPV4_DEVCONF_PROXY_ARP-1] = XLAT(IPV4_DEVCONF_PROXY_ARP-1),
+ #define XLAT_VAL_2 ((unsigned) (IPV4_DEVCONF_PROXY_ARP-1))
+ #define XLAT_STR_2 STRINGIFY(IPV4_DEVCONF_PROXY_ARP-1)
  [IPV4_DEVCONF_ACCEPT_REDIRECTS-1] = XLAT(IPV4_DEVCONF_ACCEPT_REDIRECTS-1),
+ #define XLAT_VAL_3 ((unsigned) (IPV4_DEVCONF_ACCEPT_REDIRECTS-1))
+ #define XLAT_STR_3 STRINGIFY(IPV4_DEVCONF_ACCEPT_REDIRECTS-1)
  [IPV4_DEVCONF_SECURE_REDIRECTS-1] = XLAT(IPV4_DEVCONF_SECURE_REDIRECTS-1),
+ #define XLAT_VAL_4 ((unsigned) (IPV4_DEVCONF_SECURE_REDIRECTS-1))
+ #define XLAT_STR_4 STRINGIFY(IPV4_DEVCONF_SECURE_REDIRECTS-1)
  [IPV4_DEVCONF_SEND_REDIRECTS-1] = XLAT(IPV4_DEVCONF_SEND_REDIRECTS-1),
+ #define XLAT_VAL_5 ((unsigned) (IPV4_DEVCONF_SEND_REDIRECTS-1))
+ #define XLAT_STR_5 STRINGIFY(IPV4_DEVCONF_SEND_REDIRECTS-1)
  [IPV4_DEVCONF_SHARED_MEDIA-1] = XLAT(IPV4_DEVCONF_SHARED_MEDIA-1),
+ #define XLAT_VAL_6 ((unsigned) (IPV4_DEVCONF_SHARED_MEDIA-1))
+ #define XLAT_STR_6 STRINGIFY(IPV4_DEVCONF_SHARED_MEDIA-1)
  [IPV4_DEVCONF_RP_FILTER-1] = XLAT(IPV4_DEVCONF_RP_FILTER-1),
+ #define XLAT_VAL_7 ((unsigned) (IPV4_DEVCONF_RP_FILTER-1))
+ #define XLAT_STR_7 STRINGIFY(IPV4_DEVCONF_RP_FILTER-1)
  [IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE-1] = XLAT(IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE-1),
+ #define XLAT_VAL_8 ((unsigned) (IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE-1))
+ #define XLAT_STR_8 STRINGIFY(IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE-1)
  [IPV4_DEVCONF_BOOTP_RELAY-1] = XLAT(IPV4_DEVCONF_BOOTP_RELAY-1),
+ #define XLAT_VAL_9 ((unsigned) (IPV4_DEVCONF_BOOTP_RELAY-1))
+ #define XLAT_STR_9 STRINGIFY(IPV4_DEVCONF_BOOTP_RELAY-1)
  [IPV4_DEVCONF_LOG_MARTIANS-1] = XLAT(IPV4_DEVCONF_LOG_MARTIANS-1),
+ #define XLAT_VAL_10 ((unsigned) (IPV4_DEVCONF_LOG_MARTIANS-1))
+ #define XLAT_STR_10 STRINGIFY(IPV4_DEVCONF_LOG_MARTIANS-1)
  [IPV4_DEVCONF_TAG-1] = XLAT(IPV4_DEVCONF_TAG-1),
+ #define XLAT_VAL_11 ((unsigned) (IPV4_DEVCONF_TAG-1))
+ #define XLAT_STR_11 STRINGIFY(IPV4_DEVCONF_TAG-1)
  [IPV4_DEVCONF_ARPFILTER-1] = XLAT(IPV4_DEVCONF_ARPFILTER-1),
+ #define XLAT_VAL_12 ((unsigned) (IPV4_DEVCONF_ARPFILTER-1))
+ #define XLAT_STR_12 STRINGIFY(IPV4_DEVCONF_ARPFILTER-1)
  [IPV4_DEVCONF_MEDIUM_ID-1] = XLAT(IPV4_DEVCONF_MEDIUM_ID-1),
+ #define XLAT_VAL_13 ((unsigned) (IPV4_DEVCONF_MEDIUM_ID-1))
+ #define XLAT_STR_13 STRINGIFY(IPV4_DEVCONF_MEDIUM_ID-1)
  [IPV4_DEVCONF_NOXFRM-1] = XLAT(IPV4_DEVCONF_NOXFRM-1),
+ #define XLAT_VAL_14 ((unsigned) (IPV4_DEVCONF_NOXFRM-1))
+ #define XLAT_STR_14 STRINGIFY(IPV4_DEVCONF_NOXFRM-1)
  [IPV4_DEVCONF_NOPOLICY-1] = XLAT(IPV4_DEVCONF_NOPOLICY-1),
+ #define XLAT_VAL_15 ((unsigned) (IPV4_DEVCONF_NOPOLICY-1))
+ #define XLAT_STR_15 STRINGIFY(IPV4_DEVCONF_NOPOLICY-1)
  [IPV4_DEVCONF_FORCE_IGMP_VERSION-1] = XLAT(IPV4_DEVCONF_FORCE_IGMP_VERSION-1),
+ #define XLAT_VAL_16 ((unsigned) (IPV4_DEVCONF_FORCE_IGMP_VERSION-1))
+ #define XLAT_STR_16 STRINGIFY(IPV4_DEVCONF_FORCE_IGMP_VERSION-1)
  [IPV4_DEVCONF_ARP_ANNOUNCE-1] = XLAT(IPV4_DEVCONF_ARP_ANNOUNCE-1),
+ #define XLAT_VAL_17 ((unsigned) (IPV4_DEVCONF_ARP_ANNOUNCE-1))
+ #define XLAT_STR_17 STRINGIFY(IPV4_DEVCONF_ARP_ANNOUNCE-1)
  [IPV4_DEVCONF_ARP_IGNORE-1] = XLAT(IPV4_DEVCONF_ARP_IGNORE-1),
+ #define XLAT_VAL_18 ((unsigned) (IPV4_DEVCONF_ARP_IGNORE-1))
+ #define XLAT_STR_18 STRINGIFY(IPV4_DEVCONF_ARP_IGNORE-1)
  [IPV4_DEVCONF_PROMOTE_SECONDARIES-1] = XLAT(IPV4_DEVCONF_PROMOTE_SECONDARIES-1),
+ #define XLAT_VAL_19 ((unsigned) (IPV4_DEVCONF_PROMOTE_SECONDARIES-1))
+ #define XLAT_STR_19 STRINGIFY(IPV4_DEVCONF_PROMOTE_SECONDARIES-1)
  [IPV4_DEVCONF_ARP_ACCEPT-1] = XLAT(IPV4_DEVCONF_ARP_ACCEPT-1),
+ #define XLAT_VAL_20 ((unsigned) (IPV4_DEVCONF_ARP_ACCEPT-1))
+ #define XLAT_STR_20 STRINGIFY(IPV4_DEVCONF_ARP_ACCEPT-1)
  [IPV4_DEVCONF_ARP_NOTIFY-1] = XLAT(IPV4_DEVCONF_ARP_NOTIFY-1),
+ #define XLAT_VAL_21 ((unsigned) (IPV4_DEVCONF_ARP_NOTIFY-1))
+ #define XLAT_STR_21 STRINGIFY(IPV4_DEVCONF_ARP_NOTIFY-1)
  [IPV4_DEVCONF_ACCEPT_LOCAL-1] = XLAT(IPV4_DEVCONF_ACCEPT_LOCAL-1),
+ #define XLAT_VAL_22 ((unsigned) (IPV4_DEVCONF_ACCEPT_LOCAL-1))
+ #define XLAT_STR_22 STRINGIFY(IPV4_DEVCONF_ACCEPT_LOCAL-1)
  [IPV4_DEVCONF_SRC_VMARK-1] = XLAT(IPV4_DEVCONF_SRC_VMARK-1),
+ #define XLAT_VAL_23 ((unsigned) (IPV4_DEVCONF_SRC_VMARK-1))
+ #define XLAT_STR_23 STRINGIFY(IPV4_DEVCONF_SRC_VMARK-1)
  [IPV4_DEVCONF_PROXY_ARP_PVLAN-1] = XLAT(IPV4_DEVCONF_PROXY_ARP_PVLAN-1),
+ #define XLAT_VAL_24 ((unsigned) (IPV4_DEVCONF_PROXY_ARP_PVLAN-1))
+ #define XLAT_STR_24 STRINGIFY(IPV4_DEVCONF_PROXY_ARP_PVLAN-1)
  [IPV4_DEVCONF_ROUTE_LOCALNET-1] = XLAT(IPV4_DEVCONF_ROUTE_LOCALNET-1),
+ #define XLAT_VAL_25 ((unsigned) (IPV4_DEVCONF_ROUTE_LOCALNET-1))
+ #define XLAT_STR_25 STRINGIFY(IPV4_DEVCONF_ROUTE_LOCALNET-1)
  [IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL-1] = XLAT(IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL-1),
+ #define XLAT_VAL_26 ((unsigned) (IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL-1))
+ #define XLAT_STR_26 STRINGIFY(IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL-1)
  [IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL-1] = XLAT(IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL-1),
+ #define XLAT_VAL_27 ((unsigned) (IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL-1))
+ #define XLAT_STR_27 STRINGIFY(IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL-1)
  [IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN-1] = XLAT(IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN-1),
+ #define XLAT_VAL_28 ((unsigned) (IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN-1))
+ #define XLAT_STR_28 STRINGIFY(IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN-1)
  [IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST-1] = XLAT(IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST-1),
+ #define XLAT_VAL_29 ((unsigned) (IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST-1))
+ #define XLAT_STR_29 STRINGIFY(IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST-1)
  [IPV4_DEVCONF_DROP_GRATUITOUS_ARP-1] = XLAT(IPV4_DEVCONF_DROP_GRATUITOUS_ARP-1),
+ #define XLAT_VAL_30 ((unsigned) (IPV4_DEVCONF_DROP_GRATUITOUS_ARP-1))
+ #define XLAT_STR_30 STRINGIFY(IPV4_DEVCONF_DROP_GRATUITOUS_ARP-1)
  [IPV4_DEVCONF_BC_FORWARDING-1] = XLAT(IPV4_DEVCONF_BC_FORWARDING-1),
- XLAT_END
+ #define XLAT_VAL_31 ((unsigned) (IPV4_DEVCONF_BC_FORWARDING-1))
+ #define XLAT_STR_31 STRINGIFY(IPV4_DEVCONF_BC_FORWARDING-1)
 };
+static
+const struct xlat inet_devconf_indices[1] = { {
+ .data = inet_devconf_indices_xdata,
+ .size = ARRAY_SIZE(inet_devconf_indices_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+#  ifdef XLAT_VAL_30
+  | XLAT_VAL_30
+#  endif
+#  ifdef XLAT_VAL_31
+  | XLAT_VAL_31
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+#  ifdef XLAT_STR_30
+  + sizeof(XLAT_STR_30)
+#  endif
+#  ifdef XLAT_STR_31
+  + sizeof(XLAT_STR_31)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
+#  undef XLAT_STR_30
+#  undef XLAT_VAL_30
+#  undef XLAT_STR_31
+#  undef XLAT_VAL_31
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index ebfd2ad2d0dd5a3c00db23c15f7a089c7b4f2740..cc64acfe5a81002af5dab053bbe5a474d64a7a28 100644 (file)
 
 # else
 
-static
-const struct xlat inet_diag_attrs[] = {
+static const struct xlat_data inet_diag_attrs_xdata[] = {
  XLAT(INET_DIAG_NONE),
+ #define XLAT_VAL_0 ((unsigned) (INET_DIAG_NONE))
+ #define XLAT_STR_0 STRINGIFY(INET_DIAG_NONE)
  XLAT(INET_DIAG_MEMINFO),
+ #define XLAT_VAL_1 ((unsigned) (INET_DIAG_MEMINFO))
+ #define XLAT_STR_1 STRINGIFY(INET_DIAG_MEMINFO)
  XLAT(INET_DIAG_INFO),
+ #define XLAT_VAL_2 ((unsigned) (INET_DIAG_INFO))
+ #define XLAT_STR_2 STRINGIFY(INET_DIAG_INFO)
  XLAT(INET_DIAG_VEGASINFO),
+ #define XLAT_VAL_3 ((unsigned) (INET_DIAG_VEGASINFO))
+ #define XLAT_STR_3 STRINGIFY(INET_DIAG_VEGASINFO)
  XLAT(INET_DIAG_CONG),
+ #define XLAT_VAL_4 ((unsigned) (INET_DIAG_CONG))
+ #define XLAT_STR_4 STRINGIFY(INET_DIAG_CONG)
  XLAT(INET_DIAG_TOS),
+ #define XLAT_VAL_5 ((unsigned) (INET_DIAG_TOS))
+ #define XLAT_STR_5 STRINGIFY(INET_DIAG_TOS)
  XLAT(INET_DIAG_TCLASS),
+ #define XLAT_VAL_6 ((unsigned) (INET_DIAG_TCLASS))
+ #define XLAT_STR_6 STRINGIFY(INET_DIAG_TCLASS)
  XLAT(INET_DIAG_SKMEMINFO),
+ #define XLAT_VAL_7 ((unsigned) (INET_DIAG_SKMEMINFO))
+ #define XLAT_STR_7 STRINGIFY(INET_DIAG_SKMEMINFO)
  XLAT(INET_DIAG_SHUTDOWN),
+ #define XLAT_VAL_8 ((unsigned) (INET_DIAG_SHUTDOWN))
+ #define XLAT_STR_8 STRINGIFY(INET_DIAG_SHUTDOWN)
  XLAT(INET_DIAG_DCTCPINFO),
+ #define XLAT_VAL_9 ((unsigned) (INET_DIAG_DCTCPINFO))
+ #define XLAT_STR_9 STRINGIFY(INET_DIAG_DCTCPINFO)
  XLAT(INET_DIAG_PROTOCOL),
+ #define XLAT_VAL_10 ((unsigned) (INET_DIAG_PROTOCOL))
+ #define XLAT_STR_10 STRINGIFY(INET_DIAG_PROTOCOL)
  XLAT(INET_DIAG_SKV6ONLY),
+ #define XLAT_VAL_11 ((unsigned) (INET_DIAG_SKV6ONLY))
+ #define XLAT_STR_11 STRINGIFY(INET_DIAG_SKV6ONLY)
  XLAT(INET_DIAG_LOCALS),
+ #define XLAT_VAL_12 ((unsigned) (INET_DIAG_LOCALS))
+ #define XLAT_STR_12 STRINGIFY(INET_DIAG_LOCALS)
  XLAT(INET_DIAG_PEERS),
+ #define XLAT_VAL_13 ((unsigned) (INET_DIAG_PEERS))
+ #define XLAT_STR_13 STRINGIFY(INET_DIAG_PEERS)
  XLAT(INET_DIAG_PAD),
+ #define XLAT_VAL_14 ((unsigned) (INET_DIAG_PAD))
+ #define XLAT_STR_14 STRINGIFY(INET_DIAG_PAD)
  XLAT(INET_DIAG_MARK),
+ #define XLAT_VAL_15 ((unsigned) (INET_DIAG_MARK))
+ #define XLAT_STR_15 STRINGIFY(INET_DIAG_MARK)
  XLAT(INET_DIAG_BBRINFO),
+ #define XLAT_VAL_16 ((unsigned) (INET_DIAG_BBRINFO))
+ #define XLAT_STR_16 STRINGIFY(INET_DIAG_BBRINFO)
  XLAT(INET_DIAG_CLASS_ID),
- XLAT_END
+ #define XLAT_VAL_17 ((unsigned) (INET_DIAG_CLASS_ID))
+ #define XLAT_STR_17 STRINGIFY(INET_DIAG_CLASS_ID)
+ XLAT(INET_DIAG_MD5SIG),
+ #define XLAT_VAL_18 ((unsigned) (INET_DIAG_MD5SIG))
+ #define XLAT_STR_18 STRINGIFY(INET_DIAG_MD5SIG)
+ XLAT(INET_DIAG_ULP_INFO),
+ #define XLAT_VAL_19 ((unsigned) (INET_DIAG_ULP_INFO))
+ #define XLAT_STR_19 STRINGIFY(INET_DIAG_ULP_INFO)
+ XLAT(INET_DIAG_SK_BPF_STORAGES),
+ #define XLAT_VAL_20 ((unsigned) (INET_DIAG_SK_BPF_STORAGES))
+ #define XLAT_STR_20 STRINGIFY(INET_DIAG_SK_BPF_STORAGES)
+ XLAT(INET_DIAG_CGROUP_ID),
+ #define XLAT_VAL_21 ((unsigned) (INET_DIAG_CGROUP_ID))
+ #define XLAT_STR_21 STRINGIFY(INET_DIAG_CGROUP_ID)
 };
+static
+const struct xlat inet_diag_attrs[1] = { {
+ .data = inet_diag_attrs_xdata,
+ .size = ARRAY_SIZE(inet_diag_attrs_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 4536ebc3f1da32cc0bf3a94cac4ad79ead12bfd5..a3e7028fa47a4dd327c6cb5badde79d354898fdb 100644 (file)
@@ -17,3 +17,7 @@ INET_DIAG_PAD
 INET_DIAG_MARK
 INET_DIAG_BBRINFO
 INET_DIAG_CLASS_ID
+INET_DIAG_MD5SIG
+INET_DIAG_ULP_INFO
+INET_DIAG_SK_BPF_STORAGES
+INET_DIAG_CGROUP_ID
index 93286db275e1c1f989d82cd7423a1496ed118ff9..00ad270896a83bcddaf72f359469f10b8a5772c7 100644 (file)
 
 # else
 
-static
-const struct xlat inet_diag_bytecodes[] = {
+static const struct xlat_data inet_diag_bytecodes_xdata[] = {
  XLAT(INET_DIAG_BC_NOP),
+ #define XLAT_VAL_0 ((unsigned) (INET_DIAG_BC_NOP))
+ #define XLAT_STR_0 STRINGIFY(INET_DIAG_BC_NOP)
  XLAT(INET_DIAG_BC_JMP),
+ #define XLAT_VAL_1 ((unsigned) (INET_DIAG_BC_JMP))
+ #define XLAT_STR_1 STRINGIFY(INET_DIAG_BC_JMP)
  XLAT(INET_DIAG_BC_S_GE),
+ #define XLAT_VAL_2 ((unsigned) (INET_DIAG_BC_S_GE))
+ #define XLAT_STR_2 STRINGIFY(INET_DIAG_BC_S_GE)
  XLAT(INET_DIAG_BC_S_LE),
+ #define XLAT_VAL_3 ((unsigned) (INET_DIAG_BC_S_LE))
+ #define XLAT_STR_3 STRINGIFY(INET_DIAG_BC_S_LE)
  XLAT(INET_DIAG_BC_D_GE),
+ #define XLAT_VAL_4 ((unsigned) (INET_DIAG_BC_D_GE))
+ #define XLAT_STR_4 STRINGIFY(INET_DIAG_BC_D_GE)
  XLAT(INET_DIAG_BC_D_LE),
+ #define XLAT_VAL_5 ((unsigned) (INET_DIAG_BC_D_LE))
+ #define XLAT_STR_5 STRINGIFY(INET_DIAG_BC_D_LE)
  XLAT(INET_DIAG_BC_AUTO),
+ #define XLAT_VAL_6 ((unsigned) (INET_DIAG_BC_AUTO))
+ #define XLAT_STR_6 STRINGIFY(INET_DIAG_BC_AUTO)
  XLAT(INET_DIAG_BC_S_COND),
+ #define XLAT_VAL_7 ((unsigned) (INET_DIAG_BC_S_COND))
+ #define XLAT_STR_7 STRINGIFY(INET_DIAG_BC_S_COND)
  XLAT(INET_DIAG_BC_D_COND),
+ #define XLAT_VAL_8 ((unsigned) (INET_DIAG_BC_D_COND))
+ #define XLAT_STR_8 STRINGIFY(INET_DIAG_BC_D_COND)
  XLAT(INET_DIAG_BC_DEV_COND),
+ #define XLAT_VAL_9 ((unsigned) (INET_DIAG_BC_DEV_COND))
+ #define XLAT_STR_9 STRINGIFY(INET_DIAG_BC_DEV_COND)
  XLAT(INET_DIAG_BC_MARK_COND),
+ #define XLAT_VAL_10 ((unsigned) (INET_DIAG_BC_MARK_COND))
+ #define XLAT_STR_10 STRINGIFY(INET_DIAG_BC_MARK_COND)
  XLAT(INET_DIAG_BC_S_EQ),
+ #define XLAT_VAL_11 ((unsigned) (INET_DIAG_BC_S_EQ))
+ #define XLAT_STR_11 STRINGIFY(INET_DIAG_BC_S_EQ)
  XLAT(INET_DIAG_BC_D_EQ),
- XLAT_END
+ #define XLAT_VAL_12 ((unsigned) (INET_DIAG_BC_D_EQ))
+ #define XLAT_STR_12 STRINGIFY(INET_DIAG_BC_D_EQ)
+ XLAT(INET_DIAG_BC_CGROUP_COND),
+ #define XLAT_VAL_13 ((unsigned) (INET_DIAG_BC_CGROUP_COND))
+ #define XLAT_STR_13 STRINGIFY(INET_DIAG_BC_CGROUP_COND)
 };
+static
+const struct xlat inet_diag_bytecodes[1] = { {
+ .data = inet_diag_bytecodes_xdata,
+ .size = ARRAY_SIZE(inet_diag_bytecodes_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index ef1059a5b09f8795b0bdb3326e0bf0292e30567f..72cebf8a0997966209afe82c83ddfc4a48616320 100644 (file)
@@ -12,3 +12,4 @@ INET_DIAG_BC_DEV_COND
 INET_DIAG_BC_MARK_COND
 INET_DIAG_BC_S_EQ
 INET_DIAG_BC_D_EQ
+INET_DIAG_BC_CGROUP_COND
index 410b920220180b3c189ed726045f65222fcb63a7..6f5c54a0ff372b5a0372ec4253e5818676284d4a 100644 (file)
 
 # else
 
-static
-const struct xlat inet_diag_extended_flags[] = {
+static const struct xlat_data inet_diag_extended_flags_xdata[] = {
  XLAT(1<<(INET_DIAG_MEMINFO-1)),
+ #define XLAT_VAL_0 ((unsigned) (1<<(INET_DIAG_MEMINFO-1)))
+ #define XLAT_STR_0 STRINGIFY(1<<(INET_DIAG_MEMINFO-1))
  XLAT(1<<(INET_DIAG_INFO-1)),
+ #define XLAT_VAL_1 ((unsigned) (1<<(INET_DIAG_INFO-1)))
+ #define XLAT_STR_1 STRINGIFY(1<<(INET_DIAG_INFO-1))
  XLAT(1<<(INET_DIAG_VEGASINFO-1)),
+ #define XLAT_VAL_2 ((unsigned) (1<<(INET_DIAG_VEGASINFO-1)))
+ #define XLAT_STR_2 STRINGIFY(1<<(INET_DIAG_VEGASINFO-1))
  XLAT(1<<(INET_DIAG_CONG-1)),
+ #define XLAT_VAL_3 ((unsigned) (1<<(INET_DIAG_CONG-1)))
+ #define XLAT_STR_3 STRINGIFY(1<<(INET_DIAG_CONG-1))
  XLAT(1<<(INET_DIAG_TOS-1)),
+ #define XLAT_VAL_4 ((unsigned) (1<<(INET_DIAG_TOS-1)))
+ #define XLAT_STR_4 STRINGIFY(1<<(INET_DIAG_TOS-1))
  XLAT(1<<(INET_DIAG_TCLASS-1)),
+ #define XLAT_VAL_5 ((unsigned) (1<<(INET_DIAG_TCLASS-1)))
+ #define XLAT_STR_5 STRINGIFY(1<<(INET_DIAG_TCLASS-1))
  XLAT(1<<(INET_DIAG_SKMEMINFO-1)),
+ #define XLAT_VAL_6 ((unsigned) (1<<(INET_DIAG_SKMEMINFO-1)))
+ #define XLAT_STR_6 STRINGIFY(1<<(INET_DIAG_SKMEMINFO-1))
  XLAT(1<<(INET_DIAG_SHUTDOWN-1)),
+ #define XLAT_VAL_7 ((unsigned) (1<<(INET_DIAG_SHUTDOWN-1)))
+ #define XLAT_STR_7 STRINGIFY(1<<(INET_DIAG_SHUTDOWN-1))
  XLAT(1<<(INET_DIAG_DCTCPINFO-1)),
+ #define XLAT_VAL_8 ((unsigned) (1<<(INET_DIAG_DCTCPINFO-1)))
+ #define XLAT_STR_8 STRINGIFY(1<<(INET_DIAG_DCTCPINFO-1))
  XLAT(1<<(INET_DIAG_PROTOCOL-1)),
+ #define XLAT_VAL_9 ((unsigned) (1<<(INET_DIAG_PROTOCOL-1)))
+ #define XLAT_STR_9 STRINGIFY(1<<(INET_DIAG_PROTOCOL-1))
  XLAT(1<<(INET_DIAG_SKV6ONLY-1)),
+ #define XLAT_VAL_10 ((unsigned) (1<<(INET_DIAG_SKV6ONLY-1)))
+ #define XLAT_STR_10 STRINGIFY(1<<(INET_DIAG_SKV6ONLY-1))
  XLAT(1<<(INET_DIAG_LOCALS-1)),
+ #define XLAT_VAL_11 ((unsigned) (1<<(INET_DIAG_LOCALS-1)))
+ #define XLAT_STR_11 STRINGIFY(1<<(INET_DIAG_LOCALS-1))
  XLAT(1<<(INET_DIAG_PEERS-1)),
+ #define XLAT_VAL_12 ((unsigned) (1<<(INET_DIAG_PEERS-1)))
+ #define XLAT_STR_12 STRINGIFY(1<<(INET_DIAG_PEERS-1))
  XLAT(1<<(INET_DIAG_PAD-1)),
+ #define XLAT_VAL_13 ((unsigned) (1<<(INET_DIAG_PAD-1)))
+ #define XLAT_STR_13 STRINGIFY(1<<(INET_DIAG_PAD-1))
  XLAT(1<<(INET_DIAG_MARK-1)),
+ #define XLAT_VAL_14 ((unsigned) (1<<(INET_DIAG_MARK-1)))
+ #define XLAT_STR_14 STRINGIFY(1<<(INET_DIAG_MARK-1))
  XLAT(1<<(INET_DIAG_BBRINFO-1)),
+ #define XLAT_VAL_15 ((unsigned) (1<<(INET_DIAG_BBRINFO-1)))
+ #define XLAT_STR_15 STRINGIFY(1<<(INET_DIAG_BBRINFO-1))
  XLAT(1<<(INET_DIAG_CLASS_ID-1)),
- XLAT_END
+ #define XLAT_VAL_16 ((unsigned) (1<<(INET_DIAG_CLASS_ID-1)))
+ #define XLAT_STR_16 STRINGIFY(1<<(INET_DIAG_CLASS_ID-1))
+ XLAT(1<<(INET_DIAG_MD5SIG-1)),
+ #define XLAT_VAL_17 ((unsigned) (1<<(INET_DIAG_MD5SIG-1)))
+ #define XLAT_STR_17 STRINGIFY(1<<(INET_DIAG_MD5SIG-1))
+ XLAT(1<<(INET_DIAG_ULP_INFO-1)),
+ #define XLAT_VAL_18 ((unsigned) (1<<(INET_DIAG_ULP_INFO-1)))
+ #define XLAT_STR_18 STRINGIFY(1<<(INET_DIAG_ULP_INFO-1))
+ XLAT(1<<(INET_DIAG_SK_BPF_STORAGES-1)),
+ #define XLAT_VAL_19 ((unsigned) (1<<(INET_DIAG_SK_BPF_STORAGES-1)))
+ #define XLAT_STR_19 STRINGIFY(1<<(INET_DIAG_SK_BPF_STORAGES-1))
+ XLAT(1<<(INET_DIAG_CGROUP_ID-1)),
+ #define XLAT_VAL_20 ((unsigned) (1<<(INET_DIAG_CGROUP_ID-1)))
+ #define XLAT_STR_20 STRINGIFY(1<<(INET_DIAG_CGROUP_ID-1))
 };
+static
+const struct xlat inet_diag_extended_flags[1] = { {
+ .data = inet_diag_extended_flags_xdata,
+ .size = ARRAY_SIZE(inet_diag_extended_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 182cac160ce0ee94dfe4ab3e6ed2c240b11ed85b..7a01150ed34d6c0a2b7328e8bbfcb4b05be491f4 100644 (file)
@@ -16,3 +16,7 @@
 1<<(INET_DIAG_MARK-1)
 1<<(INET_DIAG_BBRINFO-1)
 1<<(INET_DIAG_CLASS_ID-1)
+1<<(INET_DIAG_MD5SIG-1)
+1<<(INET_DIAG_ULP_INFO-1)
+1<<(INET_DIAG_SK_BPF_STORAGES-1)
+1<<(INET_DIAG_CGROUP_ID-1)
index be64b3fafeec3b1d4fbdaab89f30f11e042bf21e..3cc5b5c657cafd5df383616c471d6ec2f1f30d8f 100644 (file)
 
 # else
 
-static
-const struct xlat inet_diag_req_attrs[] = {
+static const struct xlat_data inet_diag_req_attrs_xdata[] = {
  XLAT(INET_DIAG_REQ_NONE),
+ #define XLAT_VAL_0 ((unsigned) (INET_DIAG_REQ_NONE))
+ #define XLAT_STR_0 STRINGIFY(INET_DIAG_REQ_NONE)
  XLAT(INET_DIAG_REQ_BYTECODE),
- XLAT_END
+ #define XLAT_VAL_1 ((unsigned) (INET_DIAG_REQ_BYTECODE))
+ #define XLAT_STR_1 STRINGIFY(INET_DIAG_REQ_BYTECODE)
+ XLAT(INET_DIAG_REQ_SK_BPF_STORAGES),
+ #define XLAT_VAL_2 ((unsigned) (INET_DIAG_REQ_SK_BPF_STORAGES))
+ #define XLAT_STR_2 STRINGIFY(INET_DIAG_REQ_SK_BPF_STORAGES)
+ XLAT(INET_DIAG_REQ_PROTOCOL),
+ #define XLAT_VAL_3 ((unsigned) (INET_DIAG_REQ_PROTOCOL))
+ #define XLAT_STR_3 STRINGIFY(INET_DIAG_REQ_PROTOCOL)
 };
+static
+const struct xlat inet_diag_req_attrs[1] = { {
+ .data = inet_diag_req_attrs_xdata,
+ .size = ARRAY_SIZE(inet_diag_req_attrs_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index c36369ee8bd7a2fa3e6c02e55729fd8e012373ae..3fdf9262fc6571a8c87d3ae249edca7e4d19ba51 100644 (file)
@@ -1,3 +1,5 @@
 #unconditional
 INET_DIAG_REQ_NONE
 INET_DIAG_REQ_BYTECODE
+INET_DIAG_REQ_SK_BPF_STORAGES
+INET_DIAG_REQ_PROTOCOL
index 81672b812f48ab1609318e0d0d3bc0a3ab0ea1fb..ea152cad47b0d6d403387b481e0af12bbd88634d 100644 (file)
@@ -220,6 +220,13 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define IPPROTO_MPLS 137
 #endif
+#if defined(IPPROTO_ETHERNET) || (defined(HAVE_DECL_IPPROTO_ETHERNET) && HAVE_DECL_IPPROTO_ETHERNET)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IPPROTO_ETHERNET) == (143), "IPPROTO_ETHERNET != 143");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IPPROTO_ETHERNET 143
+#endif
 #if defined(IPPROTO_RAW) || (defined(HAVE_DECL_IPPROTO_RAW) && HAVE_DECL_IPPROTO_RAW)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
 static_assert((IPPROTO_RAW) == (255), "IPPROTO_RAW != 255");
@@ -234,49 +241,415 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define IPPROTO_MAX 256
 #endif
+#if defined(IPPROTO_MPTCP) || (defined(HAVE_DECL_IPPROTO_MPTCP) && HAVE_DECL_IPPROTO_MPTCP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IPPROTO_MPTCP) == (262), "IPPROTO_MPTCP != 262");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IPPROTO_MPTCP 262
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
 # ifndef IN_MPERS
 
-const struct xlat inet_protocols[] = {
-
+static const struct xlat_data inet_protocols_xdata[] = {
  XLAT(IPPROTO_IP),
+ #define XLAT_VAL_0 ((unsigned) (IPPROTO_IP))
+ #define XLAT_STR_0 STRINGIFY(IPPROTO_IP)
  XLAT(IPPROTO_ICMP),
+ #define XLAT_VAL_1 ((unsigned) (IPPROTO_ICMP))
+ #define XLAT_STR_1 STRINGIFY(IPPROTO_ICMP)
  XLAT(IPPROTO_IGMP),
+ #define XLAT_VAL_2 ((unsigned) (IPPROTO_IGMP))
+ #define XLAT_STR_2 STRINGIFY(IPPROTO_IGMP)
  XLAT(IPPROTO_IPIP),
+ #define XLAT_VAL_3 ((unsigned) (IPPROTO_IPIP))
+ #define XLAT_STR_3 STRINGIFY(IPPROTO_IPIP)
  XLAT(IPPROTO_TCP),
+ #define XLAT_VAL_4 ((unsigned) (IPPROTO_TCP))
+ #define XLAT_STR_4 STRINGIFY(IPPROTO_TCP)
  XLAT(IPPROTO_EGP),
+ #define XLAT_VAL_5 ((unsigned) (IPPROTO_EGP))
+ #define XLAT_STR_5 STRINGIFY(IPPROTO_EGP)
  XLAT(IPPROTO_PUP),
+ #define XLAT_VAL_6 ((unsigned) (IPPROTO_PUP))
+ #define XLAT_STR_6 STRINGIFY(IPPROTO_PUP)
  XLAT(IPPROTO_UDP),
+ #define XLAT_VAL_7 ((unsigned) (IPPROTO_UDP))
+ #define XLAT_STR_7 STRINGIFY(IPPROTO_UDP)
  XLAT(IPPROTO_IDP),
+ #define XLAT_VAL_8 ((unsigned) (IPPROTO_IDP))
+ #define XLAT_STR_8 STRINGIFY(IPPROTO_IDP)
  XLAT(IPPROTO_TP),
+ #define XLAT_VAL_9 ((unsigned) (IPPROTO_TP))
+ #define XLAT_STR_9 STRINGIFY(IPPROTO_TP)
  XLAT(IPPROTO_DCCP),
+ #define XLAT_VAL_10 ((unsigned) (IPPROTO_DCCP))
+ #define XLAT_STR_10 STRINGIFY(IPPROTO_DCCP)
  XLAT(IPPROTO_IPV6),
+ #define XLAT_VAL_11 ((unsigned) (IPPROTO_IPV6))
+ #define XLAT_STR_11 STRINGIFY(IPPROTO_IPV6)
  XLAT(IPPROTO_ROUTING),
+ #define XLAT_VAL_12 ((unsigned) (IPPROTO_ROUTING))
+ #define XLAT_STR_12 STRINGIFY(IPPROTO_ROUTING)
  XLAT(IPPROTO_FRAGMENT),
+ #define XLAT_VAL_13 ((unsigned) (IPPROTO_FRAGMENT))
+ #define XLAT_STR_13 STRINGIFY(IPPROTO_FRAGMENT)
  XLAT(IPPROTO_RSVP),
+ #define XLAT_VAL_14 ((unsigned) (IPPROTO_RSVP))
+ #define XLAT_STR_14 STRINGIFY(IPPROTO_RSVP)
  XLAT(IPPROTO_GRE),
+ #define XLAT_VAL_15 ((unsigned) (IPPROTO_GRE))
+ #define XLAT_STR_15 STRINGIFY(IPPROTO_GRE)
  XLAT(IPPROTO_ESP),
+ #define XLAT_VAL_16 ((unsigned) (IPPROTO_ESP))
+ #define XLAT_STR_16 STRINGIFY(IPPROTO_ESP)
  XLAT(IPPROTO_AH),
+ #define XLAT_VAL_17 ((unsigned) (IPPROTO_AH))
+ #define XLAT_STR_17 STRINGIFY(IPPROTO_AH)
  XLAT(IPPROTO_ICMPV6),
+ #define XLAT_VAL_18 ((unsigned) (IPPROTO_ICMPV6))
+ #define XLAT_STR_18 STRINGIFY(IPPROTO_ICMPV6)
  XLAT(IPPROTO_NONE),
+ #define XLAT_VAL_19 ((unsigned) (IPPROTO_NONE))
+ #define XLAT_STR_19 STRINGIFY(IPPROTO_NONE)
  XLAT(IPPROTO_DSTOPTS),
+ #define XLAT_VAL_20 ((unsigned) (IPPROTO_DSTOPTS))
+ #define XLAT_STR_20 STRINGIFY(IPPROTO_DSTOPTS)
  XLAT(IPPROTO_MTP),
+ #define XLAT_VAL_21 ((unsigned) (IPPROTO_MTP))
+ #define XLAT_STR_21 STRINGIFY(IPPROTO_MTP)
  XLAT(IPPROTO_BEETPH),
+ #define XLAT_VAL_22 ((unsigned) (IPPROTO_BEETPH))
+ #define XLAT_STR_22 STRINGIFY(IPPROTO_BEETPH)
  XLAT(IPPROTO_ENCAP),
+ #define XLAT_VAL_23 ((unsigned) (IPPROTO_ENCAP))
+ #define XLAT_STR_23 STRINGIFY(IPPROTO_ENCAP)
  XLAT(IPPROTO_PIM),
+ #define XLAT_VAL_24 ((unsigned) (IPPROTO_PIM))
+ #define XLAT_STR_24 STRINGIFY(IPPROTO_PIM)
  XLAT(IPPROTO_COMP),
+ #define XLAT_VAL_25 ((unsigned) (IPPROTO_COMP))
+ #define XLAT_STR_25 STRINGIFY(IPPROTO_COMP)
  XLAT(IPPROTO_L2TP),
+ #define XLAT_VAL_26 ((unsigned) (IPPROTO_L2TP))
+ #define XLAT_STR_26 STRINGIFY(IPPROTO_L2TP)
  XLAT(IPPROTO_SCTP),
+ #define XLAT_VAL_27 ((unsigned) (IPPROTO_SCTP))
+ #define XLAT_STR_27 STRINGIFY(IPPROTO_SCTP)
  XLAT(IPPROTO_MH),
+ #define XLAT_VAL_28 ((unsigned) (IPPROTO_MH))
+ #define XLAT_STR_28 STRINGIFY(IPPROTO_MH)
  XLAT(IPPROTO_UDPLITE),
+ #define XLAT_VAL_29 ((unsigned) (IPPROTO_UDPLITE))
+ #define XLAT_STR_29 STRINGIFY(IPPROTO_UDPLITE)
  XLAT(IPPROTO_MPLS),
+ #define XLAT_VAL_30 ((unsigned) (IPPROTO_MPLS))
+ #define XLAT_STR_30 STRINGIFY(IPPROTO_MPLS)
+ XLAT(IPPROTO_ETHERNET),
+ #define XLAT_VAL_31 ((unsigned) (IPPROTO_ETHERNET))
+ #define XLAT_STR_31 STRINGIFY(IPPROTO_ETHERNET)
  XLAT(IPPROTO_RAW),
+ #define XLAT_VAL_32 ((unsigned) (IPPROTO_RAW))
+ #define XLAT_STR_32 STRINGIFY(IPPROTO_RAW)
  XLAT(IPPROTO_MAX),
- XLAT_END
+ #define XLAT_VAL_33 ((unsigned) (IPPROTO_MAX))
+ #define XLAT_STR_33 STRINGIFY(IPPROTO_MAX)
+ XLAT(IPPROTO_MPTCP),
+ #define XLAT_VAL_34 ((unsigned) (IPPROTO_MPTCP))
+ #define XLAT_STR_34 STRINGIFY(IPPROTO_MPTCP)
 };
+const struct xlat inet_protocols[1] = { {
+ .data = inet_protocols_xdata,
+ .size = ARRAY_SIZE(inet_protocols_xdata),
+ .type = XT_SORTED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+#  ifdef XLAT_VAL_30
+  | XLAT_VAL_30
+#  endif
+#  ifdef XLAT_VAL_31
+  | XLAT_VAL_31
+#  endif
+#  ifdef XLAT_VAL_32
+  | XLAT_VAL_32
+#  endif
+#  ifdef XLAT_VAL_33
+  | XLAT_VAL_33
+#  endif
+#  ifdef XLAT_VAL_34
+  | XLAT_VAL_34
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+#  ifdef XLAT_STR_30
+  + sizeof(XLAT_STR_30)
+#  endif
+#  ifdef XLAT_STR_31
+  + sizeof(XLAT_STR_31)
+#  endif
+#  ifdef XLAT_STR_32
+  + sizeof(XLAT_STR_32)
+#  endif
+#  ifdef XLAT_STR_33
+  + sizeof(XLAT_STR_33)
+#  endif
+#  ifdef XLAT_STR_34
+  + sizeof(XLAT_STR_34)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
+#  undef XLAT_STR_30
+#  undef XLAT_VAL_30
+#  undef XLAT_STR_31
+#  undef XLAT_VAL_31
+#  undef XLAT_STR_32
+#  undef XLAT_VAL_32
+#  undef XLAT_STR_33
+#  undef XLAT_VAL_33
+#  undef XLAT_STR_34
+#  undef XLAT_VAL_34
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index b35b428310944ec838c6bcc386778b260595de51..c37508fa37351b1d9a329d81f2e73fd62fda5885 100644 (file)
@@ -1,4 +1,4 @@
-/* sort -k2,2n */
+#sorted sort -k2,2n
 IPPROTO_IP             0
 IPPROTO_ICMP           1
 IPPROTO_IGMP           2
@@ -30,5 +30,7 @@ IPPROTO_SCTP          132
 IPPROTO_MH             135
 IPPROTO_UDPLITE                136
 IPPROTO_MPLS           137
+IPPROTO_ETHERNET       143
 IPPROTO_RAW            255
 IPPROTO_MAX            256
+IPPROTO_MPTCP          262
index 5d233d566f0e7648a3a056ebe3364448baf64208..ef4431b4d5c0fda882b7301e59324481adcb2f72 100644 (file)
@@ -166,33 +166,261 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat inotify_flags[] = {
+static const struct xlat_data inotify_flags_xdata[] = {
  XLAT(IN_ACCESS),
+ #define XLAT_VAL_0 ((unsigned) (IN_ACCESS))
+ #define XLAT_STR_0 STRINGIFY(IN_ACCESS)
  XLAT(IN_MODIFY),
+ #define XLAT_VAL_1 ((unsigned) (IN_MODIFY))
+ #define XLAT_STR_1 STRINGIFY(IN_MODIFY)
  XLAT(IN_ATTRIB),
+ #define XLAT_VAL_2 ((unsigned) (IN_ATTRIB))
+ #define XLAT_STR_2 STRINGIFY(IN_ATTRIB)
  XLAT(IN_CLOSE_WRITE),
+ #define XLAT_VAL_3 ((unsigned) (IN_CLOSE_WRITE))
+ #define XLAT_STR_3 STRINGIFY(IN_CLOSE_WRITE)
  XLAT(IN_CLOSE_NOWRITE),
+ #define XLAT_VAL_4 ((unsigned) (IN_CLOSE_NOWRITE))
+ #define XLAT_STR_4 STRINGIFY(IN_CLOSE_NOWRITE)
  XLAT(IN_OPEN),
+ #define XLAT_VAL_5 ((unsigned) (IN_OPEN))
+ #define XLAT_STR_5 STRINGIFY(IN_OPEN)
  XLAT(IN_MOVED_FROM),
+ #define XLAT_VAL_6 ((unsigned) (IN_MOVED_FROM))
+ #define XLAT_STR_6 STRINGIFY(IN_MOVED_FROM)
  XLAT(IN_MOVED_TO),
+ #define XLAT_VAL_7 ((unsigned) (IN_MOVED_TO))
+ #define XLAT_STR_7 STRINGIFY(IN_MOVED_TO)
  XLAT(IN_CREATE),
+ #define XLAT_VAL_8 ((unsigned) (IN_CREATE))
+ #define XLAT_STR_8 STRINGIFY(IN_CREATE)
  XLAT(IN_DELETE),
+ #define XLAT_VAL_9 ((unsigned) (IN_DELETE))
+ #define XLAT_STR_9 STRINGIFY(IN_DELETE)
  XLAT(IN_DELETE_SELF),
+ #define XLAT_VAL_10 ((unsigned) (IN_DELETE_SELF))
+ #define XLAT_STR_10 STRINGIFY(IN_DELETE_SELF)
  XLAT(IN_MOVE_SELF),
+ #define XLAT_VAL_11 ((unsigned) (IN_MOVE_SELF))
+ #define XLAT_STR_11 STRINGIFY(IN_MOVE_SELF)
  XLAT(IN_UNMOUNT),
+ #define XLAT_VAL_12 ((unsigned) (IN_UNMOUNT))
+ #define XLAT_STR_12 STRINGIFY(IN_UNMOUNT)
  XLAT(IN_Q_OVERFLOW),
+ #define XLAT_VAL_13 ((unsigned) (IN_Q_OVERFLOW))
+ #define XLAT_STR_13 STRINGIFY(IN_Q_OVERFLOW)
  XLAT(IN_IGNORED),
+ #define XLAT_VAL_14 ((unsigned) (IN_IGNORED))
+ #define XLAT_STR_14 STRINGIFY(IN_IGNORED)
  XLAT(IN_ONLYDIR),
+ #define XLAT_VAL_15 ((unsigned) (IN_ONLYDIR))
+ #define XLAT_STR_15 STRINGIFY(IN_ONLYDIR)
  XLAT(IN_DONT_FOLLOW),
+ #define XLAT_VAL_16 ((unsigned) (IN_DONT_FOLLOW))
+ #define XLAT_STR_16 STRINGIFY(IN_DONT_FOLLOW)
  XLAT(IN_EXCL_UNLINK),
+ #define XLAT_VAL_17 ((unsigned) (IN_EXCL_UNLINK))
+ #define XLAT_STR_17 STRINGIFY(IN_EXCL_UNLINK)
  XLAT(IN_MASK_CREATE),
+ #define XLAT_VAL_18 ((unsigned) (IN_MASK_CREATE))
+ #define XLAT_STR_18 STRINGIFY(IN_MASK_CREATE)
  XLAT(IN_MASK_ADD),
+ #define XLAT_VAL_19 ((unsigned) (IN_MASK_ADD))
+ #define XLAT_STR_19 STRINGIFY(IN_MASK_ADD)
  XLAT(IN_ISDIR),
+ #define XLAT_VAL_20 ((unsigned) (IN_ISDIR))
+ #define XLAT_STR_20 STRINGIFY(IN_ISDIR)
  XLAT(IN_ONESHOT),
- XLAT_END
+ #define XLAT_VAL_21 ((unsigned) (IN_ONESHOT))
+ #define XLAT_STR_21 STRINGIFY(IN_ONESHOT)
 };
+static
+const struct xlat inotify_flags[1] = { {
+ .data = inotify_flags_xdata,
+ .size = ARRAY_SIZE(inotify_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 973a54bdcb74c939589df32daadc3b6b9eb76e52..71f54b73c11e1e6b427489065a5cf7a9f581556b 100644 (file)
@@ -28,15 +28,43 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat inotify_init_flags[] = {
+static const struct xlat_data inotify_init_flags_xdata[] = {
  XLAT(IN_NONBLOCK),
+ #define XLAT_VAL_0 ((unsigned) (IN_NONBLOCK))
+ #define XLAT_STR_0 STRINGIFY(IN_NONBLOCK)
 #if defined IN_CLOEXEC || defined O_CLOEXEC
  XLAT(IN_CLOEXEC),
+ #define XLAT_VAL_1 ((unsigned) (IN_CLOEXEC))
+ #define XLAT_STR_1 STRINGIFY(IN_CLOEXEC)
 #endif
- XLAT_END
 };
+static
+const struct xlat inotify_init_flags[1] = { {
+ .data = inotify_init_flags_xdata,
+ .size = ARRAY_SIZE(inotify_init_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index b059862f5d7f5f402c43b20b64228354bf90c841..0f425744f36fd168b09b1f433f2f9d221c6182d8 100644 (file)
 
 # else
 
-static
-const struct xlat ioctl_dirs[] = {
+static const struct xlat_data ioctl_dirs_xdata[] = {
 #if defined(_IOC_NONE) || (defined(HAVE_DECL__IOC_NONE) && HAVE_DECL__IOC_NONE)
   XLAT(_IOC_NONE),
+ #define XLAT_VAL_0 ((unsigned) (_IOC_NONE))
+ #define XLAT_STR_0 STRINGIFY(_IOC_NONE)
 #endif
 #if defined(_IOC_READ) || (defined(HAVE_DECL__IOC_READ) && HAVE_DECL__IOC_READ)
   XLAT(_IOC_READ),
+ #define XLAT_VAL_1 ((unsigned) (_IOC_READ))
+ #define XLAT_STR_1 STRINGIFY(_IOC_READ)
 #endif
 #if defined(_IOC_WRITE) || (defined(HAVE_DECL__IOC_WRITE) && HAVE_DECL__IOC_WRITE)
   XLAT(_IOC_WRITE),
+ #define XLAT_VAL_2 ((unsigned) (_IOC_WRITE))
+ #define XLAT_STR_2 STRINGIFY(_IOC_WRITE)
 #endif
- XLAT_END
 };
+static
+const struct xlat ioctl_dirs[1] = { {
+ .data = ioctl_dirs_xdata,
+ .size = ARRAY_SIZE(ioctl_dirs_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index b3967842491467b00f609b4d0e7c260a0959faad..df32e6b6ecd3c020583b04b901546d1f6d8276ec 100644 (file)
@@ -40,15 +40,63 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat ioprio_class[] = {
- XLAT(IOPRIO_CLASS_NONE),
- XLAT(IOPRIO_CLASS_RT),
- XLAT(IOPRIO_CLASS_BE),
- XLAT(IOPRIO_CLASS_IDLE),
- XLAT_END
+static const struct xlat_data ioprio_class_xdata[] = {
+ [IOPRIO_CLASS_NONE] = XLAT(IOPRIO_CLASS_NONE),
+ #define XLAT_VAL_0 ((unsigned) (IOPRIO_CLASS_NONE))
+ #define XLAT_STR_0 STRINGIFY(IOPRIO_CLASS_NONE)
+ [IOPRIO_CLASS_RT] = XLAT(IOPRIO_CLASS_RT),
+ #define XLAT_VAL_1 ((unsigned) (IOPRIO_CLASS_RT))
+ #define XLAT_STR_1 STRINGIFY(IOPRIO_CLASS_RT)
+ [IOPRIO_CLASS_BE] = XLAT(IOPRIO_CLASS_BE),
+ #define XLAT_VAL_2 ((unsigned) (IOPRIO_CLASS_BE))
+ #define XLAT_STR_2 STRINGIFY(IOPRIO_CLASS_BE)
+ [IOPRIO_CLASS_IDLE] = XLAT(IOPRIO_CLASS_IDLE),
+ #define XLAT_VAL_3 ((unsigned) (IOPRIO_CLASS_IDLE))
+ #define XLAT_STR_3 STRINGIFY(IOPRIO_CLASS_IDLE)
 };
+static
+const struct xlat ioprio_class[1] = { {
+ .data = ioprio_class_xdata,
+ .size = ARRAY_SIZE(ioprio_class_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index f7a3ed25e5664f9a2c45c39dadaaf79b3161f45a..dafd17427772db9e1a5baab38bd3f871676aa17b 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 IOPRIO_CLASS_NONE      0
 IOPRIO_CLASS_RT                1
 IOPRIO_CLASS_BE                2
index 9bb2703095ccb08cba4ecca5cb1fe8362df64044..91217d152d5f81fbf18706a45718046547d93ed8 100644 (file)
@@ -33,14 +33,52 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat ioprio_who[] = {
- XLAT(IOPRIO_WHO_PROCESS),
- XLAT(IOPRIO_WHO_PGRP),
- XLAT(IOPRIO_WHO_USER),
- XLAT_END
+static const struct xlat_data ioprio_who_xdata[] = {
+ [IOPRIO_WHO_PROCESS] = XLAT(IOPRIO_WHO_PROCESS),
+ #define XLAT_VAL_0 ((unsigned) (IOPRIO_WHO_PROCESS))
+ #define XLAT_STR_0 STRINGIFY(IOPRIO_WHO_PROCESS)
+ [IOPRIO_WHO_PGRP] = XLAT(IOPRIO_WHO_PGRP),
+ #define XLAT_VAL_1 ((unsigned) (IOPRIO_WHO_PGRP))
+ #define XLAT_STR_1 STRINGIFY(IOPRIO_WHO_PGRP)
+ [IOPRIO_WHO_USER] = XLAT(IOPRIO_WHO_USER),
+ #define XLAT_VAL_2 ((unsigned) (IOPRIO_WHO_USER))
+ #define XLAT_STR_2 STRINGIFY(IOPRIO_WHO_USER)
 };
+static
+const struct xlat ioprio_who[1] = { {
+ .data = ioprio_who_xdata,
+ .size = ARRAY_SIZE(ioprio_who_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index dfb967c2c664e2e3ac5e294eedbc676b63847352..2c2f4521d330bd04760f37c7133cd9014f1f10b1 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 IOPRIO_WHO_PROCESS     1
 IOPRIO_WHO_PGRP                2
 IOPRIO_WHO_USER                3
index 5d714e35d9e18e069744dcf748227c7b4e4b214e..d8a9f730a4928875b70eb591cbedae1a89be7d5a 100644 (file)
@@ -68,22 +68,120 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat ip_cmsg_types[] = {
+static const struct xlat_data ip_cmsg_types_xdata[] = {
  XLAT(IP_TOS),
+ #define XLAT_VAL_0 ((unsigned) (IP_TOS))
+ #define XLAT_STR_0 STRINGIFY(IP_TOS)
  XLAT(IP_TTL),
+ #define XLAT_VAL_1 ((unsigned) (IP_TTL))
+ #define XLAT_STR_1 STRINGIFY(IP_TTL)
  XLAT(IP_RECVOPTS),
+ #define XLAT_VAL_2 ((unsigned) (IP_RECVOPTS))
+ #define XLAT_STR_2 STRINGIFY(IP_RECVOPTS)
  XLAT(IP_RETOPTS),
+ #define XLAT_VAL_3 ((unsigned) (IP_RETOPTS))
+ #define XLAT_STR_3 STRINGIFY(IP_RETOPTS)
  XLAT(IP_PKTINFO),
+ #define XLAT_VAL_4 ((unsigned) (IP_PKTINFO))
+ #define XLAT_STR_4 STRINGIFY(IP_PKTINFO)
  XLAT(IP_RECVERR),
+ #define XLAT_VAL_5 ((unsigned) (IP_RECVERR))
+ #define XLAT_STR_5 STRINGIFY(IP_RECVERR)
  XLAT(IP_ORIGDSTADDR),
+ #define XLAT_VAL_6 ((unsigned) (IP_ORIGDSTADDR))
+ #define XLAT_STR_6 STRINGIFY(IP_ORIGDSTADDR)
  XLAT(IP_CHECKSUM),
+ #define XLAT_VAL_7 ((unsigned) (IP_CHECKSUM))
+ #define XLAT_STR_7 STRINGIFY(IP_CHECKSUM)
 #if defined(SCM_SECURITY) || (defined(HAVE_DECL_SCM_SECURITY) && HAVE_DECL_SCM_SECURITY)
   XLAT(SCM_SECURITY),
+ #define XLAT_VAL_8 ((unsigned) (SCM_SECURITY))
+ #define XLAT_STR_8 STRINGIFY(SCM_SECURITY)
 #endif
- XLAT_END
 };
+static
+const struct xlat ip_cmsg_types[1] = { {
+ .data = ip_cmsg_types_xdata,
+ .size = ARRAY_SIZE(ip_cmsg_types_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 78a451cad5bc85f49db1a7ba54e1c61bfc94f8df..8e408dd84d70edc3ccef8712e3bb045838b4ef5d 100644 (file)
@@ -8,22 +8,70 @@
 
 # ifndef IN_MPERS
 
-const struct xlat ip_type_of_services[] = {
+static const struct xlat_data ip_type_of_services_xdata[] = {
 #if defined(IPTOS_LOWDELAY) || (defined(HAVE_DECL_IPTOS_LOWDELAY) && HAVE_DECL_IPTOS_LOWDELAY)
   XLAT(IPTOS_LOWDELAY),
+ #define XLAT_VAL_0 ((unsigned) (IPTOS_LOWDELAY))
+ #define XLAT_STR_0 STRINGIFY(IPTOS_LOWDELAY)
 #endif
 #if defined(IPTOS_THROUGHPUT) || (defined(HAVE_DECL_IPTOS_THROUGHPUT) && HAVE_DECL_IPTOS_THROUGHPUT)
   XLAT(IPTOS_THROUGHPUT),
+ #define XLAT_VAL_1 ((unsigned) (IPTOS_THROUGHPUT))
+ #define XLAT_STR_1 STRINGIFY(IPTOS_THROUGHPUT)
 #endif
 #if defined(IPTOS_RELIABILITY) || (defined(HAVE_DECL_IPTOS_RELIABILITY) && HAVE_DECL_IPTOS_RELIABILITY)
   XLAT(IPTOS_RELIABILITY),
+ #define XLAT_VAL_2 ((unsigned) (IPTOS_RELIABILITY))
+ #define XLAT_STR_2 STRINGIFY(IPTOS_RELIABILITY)
 #endif
 #if defined(IPTOS_MINCOST) || (defined(HAVE_DECL_IPTOS_MINCOST) && HAVE_DECL_IPTOS_MINCOST)
   XLAT(IPTOS_MINCOST),
+ #define XLAT_VAL_3 ((unsigned) (IPTOS_MINCOST))
+ #define XLAT_STR_3 STRINGIFY(IPTOS_MINCOST)
 #endif
- XLAT_END
 };
+const struct xlat ip_type_of_services[1] = { {
+ .data = ip_type_of_services_xdata,
+ .size = ARRAY_SIZE(ip_type_of_services_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index df3bd1df16bdb52df911b64b7e37776fed5f782d..ae2229729b5954019151b17aaf8279e5bc1868de 100644 (file)
@@ -3,6 +3,34 @@
 #include "gcc_compat.h"
 #include "static_assert.h"
 
+#if defined(MSG_NOERROR) || (defined(HAVE_DECL_MSG_NOERROR) && HAVE_DECL_MSG_NOERROR)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((MSG_NOERROR) == (010000), "MSG_NOERROR != 010000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define MSG_NOERROR 010000
+#endif
+#if defined(MSG_EXCEPT) || (defined(HAVE_DECL_MSG_EXCEPT) && HAVE_DECL_MSG_EXCEPT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((MSG_EXCEPT) == (020000), "MSG_EXCEPT != 020000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define MSG_EXCEPT 020000
+#endif
+#if defined(MSG_COPY) || (defined(HAVE_DECL_MSG_COPY) && HAVE_DECL_MSG_COPY)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((MSG_COPY) == (040000), "MSG_COPY != 040000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define MSG_COPY 040000
+#endif
+#if defined(IPC_NOWAIT) || (defined(HAVE_DECL_IPC_NOWAIT) && HAVE_DECL_IPC_NOWAIT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IPC_NOWAIT) == (004000), "IPC_NOWAIT != 004000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IPC_NOWAIT 004000
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
 
 # else
 
-static
-const struct xlat ipc_msg_flags[] = {
-#if defined(MSG_NOERROR) || (defined(HAVE_DECL_MSG_NOERROR) && HAVE_DECL_MSG_NOERROR)
-  XLAT(MSG_NOERROR),
-#endif
-#if defined(MSG_EXCEPT) || (defined(HAVE_DECL_MSG_EXCEPT) && HAVE_DECL_MSG_EXCEPT)
-  XLAT(MSG_EXCEPT),
-#endif
-#if defined(IPC_NOWAIT) || (defined(HAVE_DECL_IPC_NOWAIT) && HAVE_DECL_IPC_NOWAIT)
-  XLAT(IPC_NOWAIT),
-#endif
- XLAT_END
+static const struct xlat_data ipc_msg_flags_xdata[] = {
+ XLAT(MSG_NOERROR),
+ #define XLAT_VAL_0 ((unsigned) (MSG_NOERROR))
+ #define XLAT_STR_0 STRINGIFY(MSG_NOERROR)
+ XLAT(MSG_EXCEPT),
+ #define XLAT_VAL_1 ((unsigned) (MSG_EXCEPT))
+ #define XLAT_STR_1 STRINGIFY(MSG_EXCEPT)
+ XLAT(MSG_COPY),
+ #define XLAT_VAL_2 ((unsigned) (MSG_COPY))
+ #define XLAT_STR_2 STRINGIFY(MSG_COPY)
+ XLAT(IPC_NOWAIT),
+ #define XLAT_VAL_3 ((unsigned) (IPC_NOWAIT))
+ #define XLAT_STR_3 STRINGIFY(IPC_NOWAIT)
 };
+static
+const struct xlat ipc_msg_flags[1] = { {
+ .data = ipc_msg_flags_xdata,
+ .size = ARRAY_SIZE(ipc_msg_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 5aef101aecec8df6e9ae67dff113cc895662339b..c4939251807caabbc52f6c0ad0d714feccdb7834 100644 (file)
@@ -1,3 +1,4 @@
-MSG_NOERROR
-MSG_EXCEPT
-IPC_NOWAIT
+MSG_NOERROR    010000
+MSG_EXCEPT     020000
+MSG_COPY       040000
+IPC_NOWAIT     004000
index d6dd0ea0b5b8b7c26018e5dacce15ddbc2a7444b..f10418d3ac71e6f3ef1dd617c7c71ea83672a87f 100644 (file)
@@ -15,11 +15,29 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # ifndef IN_MPERS
 
-const struct xlat ipc_private[] = {
+static const struct xlat_data ipc_private_xdata[] = {
  XLAT(IPC_PRIVATE),
- XLAT_END
+ #define XLAT_VAL_0 ((unsigned) (IPC_PRIVATE))
+ #define XLAT_STR_0 STRINGIFY(IPC_PRIVATE)
 };
+const struct xlat ipc_private[1] = { {
+ .data = ipc_private_xdata,
+ .size = ARRAY_SIZE(ipc_private_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 1079e3eb85c934e76c7dd2dd678e675cf922b748..2cb741536dadd62bd8843ae06dfa60592eae1613 100644 (file)
@@ -96,23 +96,151 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat ipccalls[] = {
+static const struct xlat_data ipccalls_xdata[] = {
  XLAT(SEMOP),
+ #define XLAT_VAL_0 ((unsigned) (SEMOP))
+ #define XLAT_STR_0 STRINGIFY(SEMOP)
  XLAT(SEMGET),
+ #define XLAT_VAL_1 ((unsigned) (SEMGET))
+ #define XLAT_STR_1 STRINGIFY(SEMGET)
  XLAT(SEMCTL),
+ #define XLAT_VAL_2 ((unsigned) (SEMCTL))
+ #define XLAT_STR_2 STRINGIFY(SEMCTL)
  XLAT(SEMTIMEDOP),
+ #define XLAT_VAL_3 ((unsigned) (SEMTIMEDOP))
+ #define XLAT_STR_3 STRINGIFY(SEMTIMEDOP)
  XLAT(MSGSND),
+ #define XLAT_VAL_4 ((unsigned) (MSGSND))
+ #define XLAT_STR_4 STRINGIFY(MSGSND)
  XLAT(MSGRCV),
+ #define XLAT_VAL_5 ((unsigned) (MSGRCV))
+ #define XLAT_STR_5 STRINGIFY(MSGRCV)
  XLAT(MSGGET),
+ #define XLAT_VAL_6 ((unsigned) (MSGGET))
+ #define XLAT_STR_6 STRINGIFY(MSGGET)
  XLAT(MSGCTL),
+ #define XLAT_VAL_7 ((unsigned) (MSGCTL))
+ #define XLAT_STR_7 STRINGIFY(MSGCTL)
  XLAT(SHMAT),
+ #define XLAT_VAL_8 ((unsigned) (SHMAT))
+ #define XLAT_STR_8 STRINGIFY(SHMAT)
  XLAT(SHMDT),
+ #define XLAT_VAL_9 ((unsigned) (SHMDT))
+ #define XLAT_STR_9 STRINGIFY(SHMDT)
  XLAT(SHMGET),
+ #define XLAT_VAL_10 ((unsigned) (SHMGET))
+ #define XLAT_STR_10 STRINGIFY(SHMGET)
  XLAT(SHMCTL),
- XLAT_END
+ #define XLAT_VAL_11 ((unsigned) (SHMCTL))
+ #define XLAT_STR_11 STRINGIFY(SHMCTL)
 };
+static
+const struct xlat ipccalls[1] = { {
+ .data = ipccalls_xdata,
+ .size = ARRAY_SIZE(ipccalls_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 6c7e9adc76912da75606e8df0f31a35c32adebf0..c4e3bb99164d9c608bc31141103271fdeefd65a4 100644 (file)
@@ -26,13 +26,41 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat irda_protocols[] = {
+static const struct xlat_data irda_protocols_xdata[] = {
  [IRDAPROTO_UNITDATA] = XLAT(IRDAPROTO_UNITDATA),
+ #define XLAT_VAL_0 ((unsigned) (IRDAPROTO_UNITDATA))
+ #define XLAT_STR_0 STRINGIFY(IRDAPROTO_UNITDATA)
  [IRDAPROTO_ULTRA] = XLAT(IRDAPROTO_ULTRA),
- XLAT_END
+ #define XLAT_VAL_1 ((unsigned) (IRDAPROTO_ULTRA))
+ #define XLAT_STR_1 STRINGIFY(IRDAPROTO_ULTRA)
 };
+static
+const struct xlat irda_protocols[1] = { {
+ .data = irda_protocols_xdata,
+ .size = ARRAY_SIZE(irda_protocols_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 51ecb7adf707e6ee1e4d5f8ffb9eaf7c18bd19b2..9d554b6b2a6758f73b14f6ade2dbd866ad956a03 100644 (file)
@@ -103,30 +103,168 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat isdn_protocols[] = {
+static const struct xlat_data isdn_protocols_xdata[] = {
  XLAT(ISDN_P_BASE),
+ #define XLAT_VAL_0 ((unsigned) (ISDN_P_BASE))
+ #define XLAT_STR_0 STRINGIFY(ISDN_P_BASE)
  XLAT(ISDN_P_TE_S0),
+ #define XLAT_VAL_1 ((unsigned) (ISDN_P_TE_S0))
+ #define XLAT_STR_1 STRINGIFY(ISDN_P_TE_S0)
  XLAT(ISDN_P_NT_S0),
+ #define XLAT_VAL_2 ((unsigned) (ISDN_P_NT_S0))
+ #define XLAT_STR_2 STRINGIFY(ISDN_P_NT_S0)
  XLAT(ISDN_P_TE_E1),
+ #define XLAT_VAL_3 ((unsigned) (ISDN_P_TE_E1))
+ #define XLAT_STR_3 STRINGIFY(ISDN_P_TE_E1)
  XLAT(ISDN_P_NT_E1),
+ #define XLAT_VAL_4 ((unsigned) (ISDN_P_NT_E1))
+ #define XLAT_STR_4 STRINGIFY(ISDN_P_NT_E1)
  XLAT(ISDN_P_LAPD_TE),
+ #define XLAT_VAL_5 ((unsigned) (ISDN_P_LAPD_TE))
+ #define XLAT_STR_5 STRINGIFY(ISDN_P_LAPD_TE)
  XLAT(ISDN_P_LAPD_NT),
+ #define XLAT_VAL_6 ((unsigned) (ISDN_P_LAPD_NT))
+ #define XLAT_STR_6 STRINGIFY(ISDN_P_LAPD_NT)
  XLAT(ISDN_P_B_RAW),
+ #define XLAT_VAL_7 ((unsigned) (ISDN_P_B_RAW))
+ #define XLAT_STR_7 STRINGIFY(ISDN_P_B_RAW)
  XLAT(ISDN_P_B_HDLC),
+ #define XLAT_VAL_8 ((unsigned) (ISDN_P_B_HDLC))
+ #define XLAT_STR_8 STRINGIFY(ISDN_P_B_HDLC)
  XLAT(ISDN_P_B_X75SLP),
+ #define XLAT_VAL_9 ((unsigned) (ISDN_P_B_X75SLP))
+ #define XLAT_STR_9 STRINGIFY(ISDN_P_B_X75SLP)
  XLAT(ISDN_P_B_L2DTMF),
+ #define XLAT_VAL_10 ((unsigned) (ISDN_P_B_L2DTMF))
+ #define XLAT_STR_10 STRINGIFY(ISDN_P_B_L2DTMF)
  XLAT(ISDN_P_B_L2DSP),
+ #define XLAT_VAL_11 ((unsigned) (ISDN_P_B_L2DSP))
+ #define XLAT_STR_11 STRINGIFY(ISDN_P_B_L2DSP)
  XLAT(ISDN_P_B_L2DSPHDLC),
+ #define XLAT_VAL_12 ((unsigned) (ISDN_P_B_L2DSPHDLC))
+ #define XLAT_STR_12 STRINGIFY(ISDN_P_B_L2DSPHDLC)
 /*
 * those two are present in include/linux/mISDNif.h but are not handled during
 * socket creation.
 */
 
 
- XLAT_END
 };
+static
+const struct xlat isdn_protocols[1] = { {
+ .data = isdn_protocols_xdata,
+ .size = ARRAY_SIZE(isdn_protocols_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index c82be255b0b89cd3580f9e8c4c078f94d218f135..2666b2bd118d70f25cd166b83fd9b4cb2fd7e6f7 100644 (file)
@@ -33,14 +33,52 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat itimer_which[] = {
+static const struct xlat_data itimer_which_xdata[] = {
  [ITIMER_REAL] = XLAT(ITIMER_REAL),
+ #define XLAT_VAL_0 ((unsigned) (ITIMER_REAL))
+ #define XLAT_STR_0 STRINGIFY(ITIMER_REAL)
  [ITIMER_VIRTUAL] = XLAT(ITIMER_VIRTUAL),
+ #define XLAT_VAL_1 ((unsigned) (ITIMER_VIRTUAL))
+ #define XLAT_STR_1 STRINGIFY(ITIMER_VIRTUAL)
  [ITIMER_PROF] = XLAT(ITIMER_PROF),
- XLAT_END
+ #define XLAT_VAL_2 ((unsigned) (ITIMER_PROF))
+ #define XLAT_STR_2 STRINGIFY(ITIMER_PROF)
 };
+static
+const struct xlat itimer_which[1] = { {
+ .data = itimer_which_xdata,
+ .size = ARRAY_SIZE(itimer_which_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index e386380be48d83add7de720fb4495fe3a7c13944..38e91cbc42063cee0d072fd98df310605f9c0b0f 100644 (file)
@@ -19,12 +19,30 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat kcm_protocols[] = {
+static const struct xlat_data kcm_protocols_xdata[] = {
  [KCMPROTO_CONNECTED] = XLAT(KCMPROTO_CONNECTED),
- XLAT_END
+ #define XLAT_VAL_0 ((unsigned) (KCMPROTO_CONNECTED))
+ #define XLAT_STR_0 STRINGIFY(KCMPROTO_CONNECTED)
 };
-
+static
+const struct xlat kcm_protocols[1] = { {
+ .data = kcm_protocols_xdata,
+ .size = ARRAY_SIZE(kcm_protocols_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index d666fa21028303e895591ea46a43cb314d5b8f3b..a2beedd99ef884d909d6e5c54c047286369af75d 100644 (file)
@@ -68,19 +68,107 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat kcmp_types[] = {
- XLAT(KCMP_FILE),
- XLAT(KCMP_VM),
- XLAT(KCMP_FILES),
- XLAT(KCMP_FS),
- XLAT(KCMP_SIGHAND),
- XLAT(KCMP_IO),
- XLAT(KCMP_SYSVSEM),
- XLAT(KCMP_EPOLL_TFD),
- XLAT_END
+static const struct xlat_data kcmp_types_xdata[] = {
+ [KCMP_FILE] = XLAT(KCMP_FILE),
+ #define XLAT_VAL_0 ((unsigned) (KCMP_FILE))
+ #define XLAT_STR_0 STRINGIFY(KCMP_FILE)
+ [KCMP_VM] = XLAT(KCMP_VM),
+ #define XLAT_VAL_1 ((unsigned) (KCMP_VM))
+ #define XLAT_STR_1 STRINGIFY(KCMP_VM)
+ [KCMP_FILES] = XLAT(KCMP_FILES),
+ #define XLAT_VAL_2 ((unsigned) (KCMP_FILES))
+ #define XLAT_STR_2 STRINGIFY(KCMP_FILES)
+ [KCMP_FS] = XLAT(KCMP_FS),
+ #define XLAT_VAL_3 ((unsigned) (KCMP_FS))
+ #define XLAT_STR_3 STRINGIFY(KCMP_FS)
+ [KCMP_SIGHAND] = XLAT(KCMP_SIGHAND),
+ #define XLAT_VAL_4 ((unsigned) (KCMP_SIGHAND))
+ #define XLAT_STR_4 STRINGIFY(KCMP_SIGHAND)
+ [KCMP_IO] = XLAT(KCMP_IO),
+ #define XLAT_VAL_5 ((unsigned) (KCMP_IO))
+ #define XLAT_STR_5 STRINGIFY(KCMP_IO)
+ [KCMP_SYSVSEM] = XLAT(KCMP_SYSVSEM),
+ #define XLAT_VAL_6 ((unsigned) (KCMP_SYSVSEM))
+ #define XLAT_STR_6 STRINGIFY(KCMP_SYSVSEM)
+ [KCMP_EPOLL_TFD] = XLAT(KCMP_EPOLL_TFD),
+ #define XLAT_VAL_7 ((unsigned) (KCMP_EPOLL_TFD))
+ #define XLAT_STR_7 STRINGIFY(KCMP_EPOLL_TFD)
 };
+static
+const struct xlat kcmp_types[1] = { {
+ .data = kcmp_types_xdata,
+ .size = ARRAY_SIZE(kcmp_types_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index c37cf22b4205a7113c7ee2104a5ac024e4dbe09f..66f379250f483567d5379d3bcd90d1ee74884c92 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 KCMP_FILE      0
 KCMP_VM                1
 KCMP_FILES     2
index df40c4b1a5d41c411144dd5b49e4cf474e6e030e..47511405036b8df3b4d5d576ee3135af2833eae3 100644 (file)
@@ -5,87 +5,94 @@
 
 #if defined(KEXEC_ARCH_DEFAULT) || (defined(HAVE_DECL_KEXEC_ARCH_DEFAULT) && HAVE_DECL_KEXEC_ARCH_DEFAULT)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((KEXEC_ARCH_DEFAULT) == (( 0 << 16)), "KEXEC_ARCH_DEFAULT != ( 0 << 16)");
+static_assert((KEXEC_ARCH_DEFAULT) == ((  0 << 16)), "KEXEC_ARCH_DEFAULT != (  0 << 16)");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define KEXEC_ARCH_DEFAULT ( 0 << 16)
+# define KEXEC_ARCH_DEFAULT (  0 << 16)
 #endif
 #if defined(KEXEC_ARCH_386) || (defined(HAVE_DECL_KEXEC_ARCH_386) && HAVE_DECL_KEXEC_ARCH_386)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((KEXEC_ARCH_386) == (( 3 << 16)), "KEXEC_ARCH_386 != ( 3 << 16)");
+static_assert((KEXEC_ARCH_386) == ((  3 << 16)), "KEXEC_ARCH_386 != (  3 << 16)");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define KEXEC_ARCH_386 ( 3 << 16)
+# define KEXEC_ARCH_386 (  3 << 16)
 #endif
 #if defined(KEXEC_ARCH_68K) || (defined(HAVE_DECL_KEXEC_ARCH_68K) && HAVE_DECL_KEXEC_ARCH_68K)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((KEXEC_ARCH_68K) == (( 4 << 16)), "KEXEC_ARCH_68K != ( 4 << 16)");
+static_assert((KEXEC_ARCH_68K) == ((  4 << 16)), "KEXEC_ARCH_68K != (  4 << 16)");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define KEXEC_ARCH_68K ( 4 << 16)
+# define KEXEC_ARCH_68K (  4 << 16)
+#endif
+#if defined(KEXEC_ARCH_PARISC) || (defined(HAVE_DECL_KEXEC_ARCH_PARISC) && HAVE_DECL_KEXEC_ARCH_PARISC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEXEC_ARCH_PARISC) == (( 15 << 16)), "KEXEC_ARCH_PARISC != ( 15 << 16)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEXEC_ARCH_PARISC ( 15 << 16)
 #endif
 #if defined(KEXEC_ARCH_X86_64) || (defined(HAVE_DECL_KEXEC_ARCH_X86_64) && HAVE_DECL_KEXEC_ARCH_X86_64)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((KEXEC_ARCH_X86_64) == ((62 << 16)), "KEXEC_ARCH_X86_64 != (62 << 16)");
+static_assert((KEXEC_ARCH_X86_64) == (( 62 << 16)), "KEXEC_ARCH_X86_64 != ( 62 << 16)");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define KEXEC_ARCH_X86_64 (62 << 16)
+# define KEXEC_ARCH_X86_64 ( 62 << 16)
 #endif
 #if defined(KEXEC_ARCH_PPC) || (defined(HAVE_DECL_KEXEC_ARCH_PPC) && HAVE_DECL_KEXEC_ARCH_PPC)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((KEXEC_ARCH_PPC) == ((20 << 16)), "KEXEC_ARCH_PPC != (20 << 16)");
+static_assert((KEXEC_ARCH_PPC) == (( 20 << 16)), "KEXEC_ARCH_PPC != ( 20 << 16)");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define KEXEC_ARCH_PPC (20 << 16)
+# define KEXEC_ARCH_PPC ( 20 << 16)
 #endif
 #if defined(KEXEC_ARCH_PPC64) || (defined(HAVE_DECL_KEXEC_ARCH_PPC64) && HAVE_DECL_KEXEC_ARCH_PPC64)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((KEXEC_ARCH_PPC64) == ((21 << 16)), "KEXEC_ARCH_PPC64 != (21 << 16)");
+static_assert((KEXEC_ARCH_PPC64) == (( 21 << 16)), "KEXEC_ARCH_PPC64 != ( 21 << 16)");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define KEXEC_ARCH_PPC64 (21 << 16)
+# define KEXEC_ARCH_PPC64 ( 21 << 16)
 #endif
 #if defined(KEXEC_ARCH_IA_64) || (defined(HAVE_DECL_KEXEC_ARCH_IA_64) && HAVE_DECL_KEXEC_ARCH_IA_64)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((KEXEC_ARCH_IA_64) == ((50 << 16)), "KEXEC_ARCH_IA_64 != (50 << 16)");
+static_assert((KEXEC_ARCH_IA_64) == (( 50 << 16)), "KEXEC_ARCH_IA_64 != ( 50 << 16)");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define KEXEC_ARCH_IA_64 (50 << 16)
+# define KEXEC_ARCH_IA_64 ( 50 << 16)
 #endif
 #if defined(KEXEC_ARCH_ARM) || (defined(HAVE_DECL_KEXEC_ARCH_ARM) && HAVE_DECL_KEXEC_ARCH_ARM)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((KEXEC_ARCH_ARM) == ((40 << 16)), "KEXEC_ARCH_ARM != (40 << 16)");
+static_assert((KEXEC_ARCH_ARM) == (( 40 << 16)), "KEXEC_ARCH_ARM != ( 40 << 16)");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define KEXEC_ARCH_ARM (40 << 16)
+# define KEXEC_ARCH_ARM ( 40 << 16)
 #endif
 #if defined(KEXEC_ARCH_S390) || (defined(HAVE_DECL_KEXEC_ARCH_S390) && HAVE_DECL_KEXEC_ARCH_S390)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((KEXEC_ARCH_S390) == ((22 << 16)), "KEXEC_ARCH_S390 != (22 << 16)");
+static_assert((KEXEC_ARCH_S390) == (( 22 << 16)), "KEXEC_ARCH_S390 != ( 22 << 16)");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define KEXEC_ARCH_S390 (22 << 16)
+# define KEXEC_ARCH_S390 ( 22 << 16)
 #endif
 #if defined(KEXEC_ARCH_SH) || (defined(HAVE_DECL_KEXEC_ARCH_SH) && HAVE_DECL_KEXEC_ARCH_SH)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((KEXEC_ARCH_SH) == ((42 << 16)), "KEXEC_ARCH_SH != (42 << 16)");
+static_assert((KEXEC_ARCH_SH) == (( 42 << 16)), "KEXEC_ARCH_SH != ( 42 << 16)");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define KEXEC_ARCH_SH (42 << 16)
+# define KEXEC_ARCH_SH ( 42 << 16)
 #endif
 #if defined(KEXEC_ARCH_MIPS_LE) || (defined(HAVE_DECL_KEXEC_ARCH_MIPS_LE) && HAVE_DECL_KEXEC_ARCH_MIPS_LE)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((KEXEC_ARCH_MIPS_LE) == ((10 << 16)), "KEXEC_ARCH_MIPS_LE != (10 << 16)");
+static_assert((KEXEC_ARCH_MIPS_LE) == (( 10 << 16)), "KEXEC_ARCH_MIPS_LE != ( 10 << 16)");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define KEXEC_ARCH_MIPS_LE (10 << 16)
+# define KEXEC_ARCH_MIPS_LE ( 10 << 16)
 #endif
 #if defined(KEXEC_ARCH_MIPS) || (defined(HAVE_DECL_KEXEC_ARCH_MIPS) && HAVE_DECL_KEXEC_ARCH_MIPS)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((KEXEC_ARCH_MIPS) == (( 8 << 16)), "KEXEC_ARCH_MIPS != ( 8 << 16)");
+static_assert((KEXEC_ARCH_MIPS) == ((  8 << 16)), "KEXEC_ARCH_MIPS != (  8 << 16)");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define KEXEC_ARCH_MIPS ( 8 << 16)
+# define KEXEC_ARCH_MIPS (  8 << 16)
 #endif
 #if defined(KEXEC_ARCH_AARCH64) || (defined(HAVE_DECL_KEXEC_ARCH_AARCH64) && HAVE_DECL_KEXEC_ARCH_AARCH64)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
@@ -103,24 +110,173 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat kexec_arch_values[] = {
+static const struct xlat_data kexec_arch_values_xdata[] = {
  XLAT(KEXEC_ARCH_DEFAULT),
+ #define XLAT_VAL_0 ((unsigned) (KEXEC_ARCH_DEFAULT))
+ #define XLAT_STR_0 STRINGIFY(KEXEC_ARCH_DEFAULT)
  XLAT(KEXEC_ARCH_386),
+ #define XLAT_VAL_1 ((unsigned) (KEXEC_ARCH_386))
+ #define XLAT_STR_1 STRINGIFY(KEXEC_ARCH_386)
  XLAT(KEXEC_ARCH_68K),
+ #define XLAT_VAL_2 ((unsigned) (KEXEC_ARCH_68K))
+ #define XLAT_STR_2 STRINGIFY(KEXEC_ARCH_68K)
+ XLAT(KEXEC_ARCH_PARISC),
+ #define XLAT_VAL_3 ((unsigned) (KEXEC_ARCH_PARISC))
+ #define XLAT_STR_3 STRINGIFY(KEXEC_ARCH_PARISC)
  XLAT(KEXEC_ARCH_X86_64),
+ #define XLAT_VAL_4 ((unsigned) (KEXEC_ARCH_X86_64))
+ #define XLAT_STR_4 STRINGIFY(KEXEC_ARCH_X86_64)
  XLAT(KEXEC_ARCH_PPC),
+ #define XLAT_VAL_5 ((unsigned) (KEXEC_ARCH_PPC))
+ #define XLAT_STR_5 STRINGIFY(KEXEC_ARCH_PPC)
  XLAT(KEXEC_ARCH_PPC64),
+ #define XLAT_VAL_6 ((unsigned) (KEXEC_ARCH_PPC64))
+ #define XLAT_STR_6 STRINGIFY(KEXEC_ARCH_PPC64)
  XLAT(KEXEC_ARCH_IA_64),
+ #define XLAT_VAL_7 ((unsigned) (KEXEC_ARCH_IA_64))
+ #define XLAT_STR_7 STRINGIFY(KEXEC_ARCH_IA_64)
  XLAT(KEXEC_ARCH_ARM),
+ #define XLAT_VAL_8 ((unsigned) (KEXEC_ARCH_ARM))
+ #define XLAT_STR_8 STRINGIFY(KEXEC_ARCH_ARM)
  XLAT(KEXEC_ARCH_S390),
+ #define XLAT_VAL_9 ((unsigned) (KEXEC_ARCH_S390))
+ #define XLAT_STR_9 STRINGIFY(KEXEC_ARCH_S390)
  XLAT(KEXEC_ARCH_SH),
+ #define XLAT_VAL_10 ((unsigned) (KEXEC_ARCH_SH))
+ #define XLAT_STR_10 STRINGIFY(KEXEC_ARCH_SH)
  XLAT(KEXEC_ARCH_MIPS_LE),
+ #define XLAT_VAL_11 ((unsigned) (KEXEC_ARCH_MIPS_LE))
+ #define XLAT_STR_11 STRINGIFY(KEXEC_ARCH_MIPS_LE)
  XLAT(KEXEC_ARCH_MIPS),
+ #define XLAT_VAL_12 ((unsigned) (KEXEC_ARCH_MIPS))
+ #define XLAT_STR_12 STRINGIFY(KEXEC_ARCH_MIPS)
  XLAT(KEXEC_ARCH_AARCH64),
- XLAT_END
+ #define XLAT_VAL_13 ((unsigned) (KEXEC_ARCH_AARCH64))
+ #define XLAT_STR_13 STRINGIFY(KEXEC_ARCH_AARCH64)
 };
+static
+const struct xlat kexec_arch_values[1] = { {
+ .data = kexec_arch_values_xdata,
+ .size = ARRAY_SIZE(kexec_arch_values_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index c56e8eb108b055973468c5e9b65a5b8a5f34a9ae..5106f34dd49cf859669e6ab6517988e2c7a31072 100644 (file)
@@ -1,13 +1,14 @@
-KEXEC_ARCH_DEFAULT ( 0 << 16)
-KEXEC_ARCH_386     ( 3 << 16)
-KEXEC_ARCH_68K     ( 4 << 16)
-KEXEC_ARCH_X86_64  (62 << 16)
-KEXEC_ARCH_PPC     (20 << 16)
-KEXEC_ARCH_PPC64   (21 << 16)
-KEXEC_ARCH_IA_64   (50 << 16)
-KEXEC_ARCH_ARM     (40 << 16)
-KEXEC_ARCH_S390    (22 << 16)
-KEXEC_ARCH_SH      (42 << 16)
-KEXEC_ARCH_MIPS_LE (10 << 16)
-KEXEC_ARCH_MIPS    ( 8 << 16)
-KEXEC_ARCH_AARCH64 (183 << 16)
+KEXEC_ARCH_DEFAULT     (  0 << 16)
+KEXEC_ARCH_386         (  3 << 16)
+KEXEC_ARCH_68K         (  4 << 16)
+KEXEC_ARCH_PARISC      ( 15 << 16)
+KEXEC_ARCH_X86_64      ( 62 << 16)
+KEXEC_ARCH_PPC         ( 20 << 16)
+KEXEC_ARCH_PPC64       ( 21 << 16)
+KEXEC_ARCH_IA_64       ( 50 << 16)
+KEXEC_ARCH_ARM         ( 40 << 16)
+KEXEC_ARCH_S390                ( 22 << 16)
+KEXEC_ARCH_SH          ( 42 << 16)
+KEXEC_ARCH_MIPS_LE     ( 10 << 16)
+KEXEC_ARCH_MIPS                (  8 << 16)
+KEXEC_ARCH_AARCH64     (183 << 16)
index 5c257c82ebe81b2e41b71851191d163471016a7c..0a80c0de6670d56456a9178d7179bc272fea144a 100644 (file)
@@ -33,14 +33,52 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat kexec_file_load_flags[] = {
+static const struct xlat_data kexec_file_load_flags_xdata[] = {
  XLAT(KEXEC_FILE_UNLOAD),
+ #define XLAT_VAL_0 ((unsigned) (KEXEC_FILE_UNLOAD))
+ #define XLAT_STR_0 STRINGIFY(KEXEC_FILE_UNLOAD)
  XLAT(KEXEC_FILE_ON_CRASH),
+ #define XLAT_VAL_1 ((unsigned) (KEXEC_FILE_ON_CRASH))
+ #define XLAT_STR_1 STRINGIFY(KEXEC_FILE_ON_CRASH)
  XLAT(KEXEC_FILE_NO_INITRAMFS),
- XLAT_END
+ #define XLAT_VAL_2 ((unsigned) (KEXEC_FILE_NO_INITRAMFS))
+ #define XLAT_STR_2 STRINGIFY(KEXEC_FILE_NO_INITRAMFS)
 };
+static
+const struct xlat kexec_file_load_flags[1] = { {
+ .data = kexec_file_load_flags_xdata,
+ .size = ARRAY_SIZE(kexec_file_load_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index dcee0c11a1ba7415e7dfe7c64d3ff53b7d20a474..228230cfe4c27f4423e33c9957ae027f5f3fdd13 100644 (file)
@@ -26,13 +26,41 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat kexec_load_flags[] = {
+static const struct xlat_data kexec_load_flags_xdata[] = {
  XLAT(KEXEC_ON_CRASH),
+ #define XLAT_VAL_0 ((unsigned) (KEXEC_ON_CRASH))
+ #define XLAT_STR_0 STRINGIFY(KEXEC_ON_CRASH)
  XLAT(KEXEC_PRESERVE_CONTEXT),
- XLAT_END
+ #define XLAT_VAL_1 ((unsigned) (KEXEC_PRESERVE_CONTEXT))
+ #define XLAT_STR_1 STRINGIFY(KEXEC_PRESERVE_CONTEXT)
 };
+static
+const struct xlat kexec_load_flags[1] = { {
+ .data = kexec_load_flags_xdata,
+ .size = ARRAY_SIZE(kexec_load_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 852a9fed3563d14d8afc79cf22fe8ab29f37047a..ed5161a4fa88f1d88cdc17b5355ba2ddf0c85ae2 100644 (file)
@@ -208,39 +208,327 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat key_perms[] = {
+static const struct xlat_data key_perms_xdata[] = {
  XLAT(KEY_POS_VIEW),
+ #define XLAT_VAL_0 ((unsigned) (KEY_POS_VIEW))
+ #define XLAT_STR_0 STRINGIFY(KEY_POS_VIEW)
  XLAT(KEY_POS_READ),
+ #define XLAT_VAL_1 ((unsigned) (KEY_POS_READ))
+ #define XLAT_STR_1 STRINGIFY(KEY_POS_READ)
  XLAT(KEY_POS_WRITE),
+ #define XLAT_VAL_2 ((unsigned) (KEY_POS_WRITE))
+ #define XLAT_STR_2 STRINGIFY(KEY_POS_WRITE)
  XLAT(KEY_POS_SEARCH),
+ #define XLAT_VAL_3 ((unsigned) (KEY_POS_SEARCH))
+ #define XLAT_STR_3 STRINGIFY(KEY_POS_SEARCH)
  XLAT(KEY_POS_LINK),
+ #define XLAT_VAL_4 ((unsigned) (KEY_POS_LINK))
+ #define XLAT_STR_4 STRINGIFY(KEY_POS_LINK)
  XLAT(KEY_POS_SETATTR),
+ #define XLAT_VAL_5 ((unsigned) (KEY_POS_SETATTR))
+ #define XLAT_STR_5 STRINGIFY(KEY_POS_SETATTR)
  XLAT(KEY_POS_ALL),
+ #define XLAT_VAL_6 ((unsigned) (KEY_POS_ALL))
+ #define XLAT_STR_6 STRINGIFY(KEY_POS_ALL)
  XLAT(KEY_USR_VIEW),
+ #define XLAT_VAL_7 ((unsigned) (KEY_USR_VIEW))
+ #define XLAT_STR_7 STRINGIFY(KEY_USR_VIEW)
  XLAT(KEY_USR_READ),
+ #define XLAT_VAL_8 ((unsigned) (KEY_USR_READ))
+ #define XLAT_STR_8 STRINGIFY(KEY_USR_READ)
  XLAT(KEY_USR_WRITE),
+ #define XLAT_VAL_9 ((unsigned) (KEY_USR_WRITE))
+ #define XLAT_STR_9 STRINGIFY(KEY_USR_WRITE)
  XLAT(KEY_USR_SEARCH),
+ #define XLAT_VAL_10 ((unsigned) (KEY_USR_SEARCH))
+ #define XLAT_STR_10 STRINGIFY(KEY_USR_SEARCH)
  XLAT(KEY_USR_LINK),
+ #define XLAT_VAL_11 ((unsigned) (KEY_USR_LINK))
+ #define XLAT_STR_11 STRINGIFY(KEY_USR_LINK)
  XLAT(KEY_USR_SETATTR),
+ #define XLAT_VAL_12 ((unsigned) (KEY_USR_SETATTR))
+ #define XLAT_STR_12 STRINGIFY(KEY_USR_SETATTR)
  XLAT(KEY_USR_ALL),
+ #define XLAT_VAL_13 ((unsigned) (KEY_USR_ALL))
+ #define XLAT_STR_13 STRINGIFY(KEY_USR_ALL)
  XLAT(KEY_GRP_VIEW),
+ #define XLAT_VAL_14 ((unsigned) (KEY_GRP_VIEW))
+ #define XLAT_STR_14 STRINGIFY(KEY_GRP_VIEW)
  XLAT(KEY_GRP_READ),
+ #define XLAT_VAL_15 ((unsigned) (KEY_GRP_READ))
+ #define XLAT_STR_15 STRINGIFY(KEY_GRP_READ)
  XLAT(KEY_GRP_WRITE),
+ #define XLAT_VAL_16 ((unsigned) (KEY_GRP_WRITE))
+ #define XLAT_STR_16 STRINGIFY(KEY_GRP_WRITE)
  XLAT(KEY_GRP_SEARCH),
+ #define XLAT_VAL_17 ((unsigned) (KEY_GRP_SEARCH))
+ #define XLAT_STR_17 STRINGIFY(KEY_GRP_SEARCH)
  XLAT(KEY_GRP_LINK),
+ #define XLAT_VAL_18 ((unsigned) (KEY_GRP_LINK))
+ #define XLAT_STR_18 STRINGIFY(KEY_GRP_LINK)
  XLAT(KEY_GRP_SETATTR),
+ #define XLAT_VAL_19 ((unsigned) (KEY_GRP_SETATTR))
+ #define XLAT_STR_19 STRINGIFY(KEY_GRP_SETATTR)
  XLAT(KEY_GRP_ALL),
+ #define XLAT_VAL_20 ((unsigned) (KEY_GRP_ALL))
+ #define XLAT_STR_20 STRINGIFY(KEY_GRP_ALL)
  XLAT(KEY_OTH_VIEW),
+ #define XLAT_VAL_21 ((unsigned) (KEY_OTH_VIEW))
+ #define XLAT_STR_21 STRINGIFY(KEY_OTH_VIEW)
  XLAT(KEY_OTH_READ),
+ #define XLAT_VAL_22 ((unsigned) (KEY_OTH_READ))
+ #define XLAT_STR_22 STRINGIFY(KEY_OTH_READ)
  XLAT(KEY_OTH_WRITE),
+ #define XLAT_VAL_23 ((unsigned) (KEY_OTH_WRITE))
+ #define XLAT_STR_23 STRINGIFY(KEY_OTH_WRITE)
  XLAT(KEY_OTH_SEARCH),
+ #define XLAT_VAL_24 ((unsigned) (KEY_OTH_SEARCH))
+ #define XLAT_STR_24 STRINGIFY(KEY_OTH_SEARCH)
  XLAT(KEY_OTH_LINK),
+ #define XLAT_VAL_25 ((unsigned) (KEY_OTH_LINK))
+ #define XLAT_STR_25 STRINGIFY(KEY_OTH_LINK)
  XLAT(KEY_OTH_SETATTR),
+ #define XLAT_VAL_26 ((unsigned) (KEY_OTH_SETATTR))
+ #define XLAT_STR_26 STRINGIFY(KEY_OTH_SETATTR)
  XLAT(KEY_OTH_ALL),
- XLAT_END
+ #define XLAT_VAL_27 ((unsigned) (KEY_OTH_ALL))
+ #define XLAT_STR_27 STRINGIFY(KEY_OTH_ALL)
 };
+static
+const struct xlat key_perms[1] = { {
+ .data = key_perms_xdata,
+ .size = ARRAY_SIZE(key_perms_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 52b0823e1a48d054ae7afcf97b259933e1b2e121..e2ad742c1e93a957d7d0eb36680508be06ba8a07 100644 (file)
@@ -75,20 +75,118 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat key_reqkeys[] = {
+static const struct xlat_data key_reqkeys_xdata[] = {
  XLAT_TYPE(int, KEY_REQKEY_DEFL_NO_CHANGE),
+ #define XLAT_VAL_0 ((int) (KEY_REQKEY_DEFL_NO_CHANGE))
+ #define XLAT_STR_0 STRINGIFY(KEY_REQKEY_DEFL_NO_CHANGE)
  XLAT_TYPE(int, KEY_REQKEY_DEFL_DEFAULT),
+ #define XLAT_VAL_1 ((int) (KEY_REQKEY_DEFL_DEFAULT))
+ #define XLAT_STR_1 STRINGIFY(KEY_REQKEY_DEFL_DEFAULT)
  XLAT_TYPE(int, KEY_REQKEY_DEFL_THREAD_KEYRING),
+ #define XLAT_VAL_2 ((int) (KEY_REQKEY_DEFL_THREAD_KEYRING))
+ #define XLAT_STR_2 STRINGIFY(KEY_REQKEY_DEFL_THREAD_KEYRING)
  XLAT_TYPE(int, KEY_REQKEY_DEFL_PROCESS_KEYRING),
+ #define XLAT_VAL_3 ((int) (KEY_REQKEY_DEFL_PROCESS_KEYRING))
+ #define XLAT_STR_3 STRINGIFY(KEY_REQKEY_DEFL_PROCESS_KEYRING)
  XLAT_TYPE(int, KEY_REQKEY_DEFL_SESSION_KEYRING),
+ #define XLAT_VAL_4 ((int) (KEY_REQKEY_DEFL_SESSION_KEYRING))
+ #define XLAT_STR_4 STRINGIFY(KEY_REQKEY_DEFL_SESSION_KEYRING)
  XLAT_TYPE(int, KEY_REQKEY_DEFL_USER_KEYRING),
+ #define XLAT_VAL_5 ((int) (KEY_REQKEY_DEFL_USER_KEYRING))
+ #define XLAT_STR_5 STRINGIFY(KEY_REQKEY_DEFL_USER_KEYRING)
  XLAT_TYPE(int, KEY_REQKEY_DEFL_USER_SESSION_KEYRING),
+ #define XLAT_VAL_6 ((int) (KEY_REQKEY_DEFL_USER_SESSION_KEYRING))
+ #define XLAT_STR_6 STRINGIFY(KEY_REQKEY_DEFL_USER_SESSION_KEYRING)
  XLAT_TYPE(int, KEY_REQKEY_DEFL_GROUP_KEYRING),
+ #define XLAT_VAL_7 ((int) (KEY_REQKEY_DEFL_GROUP_KEYRING))
+ #define XLAT_STR_7 STRINGIFY(KEY_REQKEY_DEFL_GROUP_KEYRING)
  XLAT_TYPE(int, KEY_REQKEY_DEFL_REQUESTOR_KEYRING),
- XLAT_END
+ #define XLAT_VAL_8 ((int) (KEY_REQKEY_DEFL_REQUESTOR_KEYRING))
+ #define XLAT_STR_8 STRINGIFY(KEY_REQKEY_DEFL_REQUESTOR_KEYRING)
 };
+static
+const struct xlat key_reqkeys[1] = { {
+ .data = key_reqkeys_xdata,
+ .size = ARRAY_SIZE(key_reqkeys_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 98d317da60e2bea4a6a7e2afd868b2983747722a..d1c9ff268b64270eb4f0372b65b74a738d4ba444 100644 (file)
@@ -68,19 +68,107 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat key_spec[] = {
+static const struct xlat_data key_spec_xdata[] = {
  XLAT_TYPE(int, KEY_SPEC_THREAD_KEYRING),
+ #define XLAT_VAL_0 ((int) (KEY_SPEC_THREAD_KEYRING))
+ #define XLAT_STR_0 STRINGIFY(KEY_SPEC_THREAD_KEYRING)
  XLAT_TYPE(int, KEY_SPEC_PROCESS_KEYRING),
+ #define XLAT_VAL_1 ((int) (KEY_SPEC_PROCESS_KEYRING))
+ #define XLAT_STR_1 STRINGIFY(KEY_SPEC_PROCESS_KEYRING)
  XLAT_TYPE(int, KEY_SPEC_SESSION_KEYRING),
+ #define XLAT_VAL_2 ((int) (KEY_SPEC_SESSION_KEYRING))
+ #define XLAT_STR_2 STRINGIFY(KEY_SPEC_SESSION_KEYRING)
  XLAT_TYPE(int, KEY_SPEC_USER_KEYRING),
+ #define XLAT_VAL_3 ((int) (KEY_SPEC_USER_KEYRING))
+ #define XLAT_STR_3 STRINGIFY(KEY_SPEC_USER_KEYRING)
  XLAT_TYPE(int, KEY_SPEC_USER_SESSION_KEYRING),
+ #define XLAT_VAL_4 ((int) (KEY_SPEC_USER_SESSION_KEYRING))
+ #define XLAT_STR_4 STRINGIFY(KEY_SPEC_USER_SESSION_KEYRING)
  XLAT_TYPE(int, KEY_SPEC_GROUP_KEYRING),
+ #define XLAT_VAL_5 ((int) (KEY_SPEC_GROUP_KEYRING))
+ #define XLAT_STR_5 STRINGIFY(KEY_SPEC_GROUP_KEYRING)
  XLAT_TYPE(int, KEY_SPEC_REQKEY_AUTH_KEY),
+ #define XLAT_VAL_6 ((int) (KEY_SPEC_REQKEY_AUTH_KEY))
+ #define XLAT_STR_6 STRINGIFY(KEY_SPEC_REQKEY_AUTH_KEY)
  XLAT_TYPE(int, KEY_SPEC_REQUESTOR_KEYRING),
- XLAT_END
+ #define XLAT_VAL_7 ((int) (KEY_SPEC_REQUESTOR_KEYRING))
+ #define XLAT_STR_7 STRINGIFY(KEY_SPEC_REQUESTOR_KEYRING)
 };
+static
+const struct xlat key_spec[1] = { {
+ .data = key_spec_xdata,
+ .size = ARRAY_SIZE(key_spec_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/keyctl_caps0.h b/xlat/keyctl_caps0.h
new file mode 100644 (file)
index 0000000..07e89e4
--- /dev/null
@@ -0,0 +1,174 @@
+/* Generated by ./xlat/gen.sh from ./xlat/keyctl_caps0.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(KEYCTL_CAPS0_CAPABILITIES) || (defined(HAVE_DECL_KEYCTL_CAPS0_CAPABILITIES) && HAVE_DECL_KEYCTL_CAPS0_CAPABILITIES)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEYCTL_CAPS0_CAPABILITIES) == (0x01), "KEYCTL_CAPS0_CAPABILITIES != 0x01");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEYCTL_CAPS0_CAPABILITIES 0x01
+#endif
+#if defined(KEYCTL_CAPS0_PERSISTENT_KEYRINGS) || (defined(HAVE_DECL_KEYCTL_CAPS0_PERSISTENT_KEYRINGS) && HAVE_DECL_KEYCTL_CAPS0_PERSISTENT_KEYRINGS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEYCTL_CAPS0_PERSISTENT_KEYRINGS) == (0x02), "KEYCTL_CAPS0_PERSISTENT_KEYRINGS != 0x02");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEYCTL_CAPS0_PERSISTENT_KEYRINGS 0x02
+#endif
+#if defined(KEYCTL_CAPS0_DIFFIE_HELLMAN) || (defined(HAVE_DECL_KEYCTL_CAPS0_DIFFIE_HELLMAN) && HAVE_DECL_KEYCTL_CAPS0_DIFFIE_HELLMAN)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEYCTL_CAPS0_DIFFIE_HELLMAN) == (0x04), "KEYCTL_CAPS0_DIFFIE_HELLMAN != 0x04");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEYCTL_CAPS0_DIFFIE_HELLMAN 0x04
+#endif
+#if defined(KEYCTL_CAPS0_PUBLIC_KEY) || (defined(HAVE_DECL_KEYCTL_CAPS0_PUBLIC_KEY) && HAVE_DECL_KEYCTL_CAPS0_PUBLIC_KEY)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEYCTL_CAPS0_PUBLIC_KEY) == (0x08), "KEYCTL_CAPS0_PUBLIC_KEY != 0x08");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEYCTL_CAPS0_PUBLIC_KEY 0x08
+#endif
+#if defined(KEYCTL_CAPS0_BIG_KEY) || (defined(HAVE_DECL_KEYCTL_CAPS0_BIG_KEY) && HAVE_DECL_KEYCTL_CAPS0_BIG_KEY)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEYCTL_CAPS0_BIG_KEY) == (0x10), "KEYCTL_CAPS0_BIG_KEY != 0x10");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEYCTL_CAPS0_BIG_KEY 0x10
+#endif
+#if defined(KEYCTL_CAPS0_INVALIDATE) || (defined(HAVE_DECL_KEYCTL_CAPS0_INVALIDATE) && HAVE_DECL_KEYCTL_CAPS0_INVALIDATE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEYCTL_CAPS0_INVALIDATE) == (0x20), "KEYCTL_CAPS0_INVALIDATE != 0x20");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEYCTL_CAPS0_INVALIDATE 0x20
+#endif
+#if defined(KEYCTL_CAPS0_RESTRICT_KEYRING) || (defined(HAVE_DECL_KEYCTL_CAPS0_RESTRICT_KEYRING) && HAVE_DECL_KEYCTL_CAPS0_RESTRICT_KEYRING)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEYCTL_CAPS0_RESTRICT_KEYRING) == (0x40), "KEYCTL_CAPS0_RESTRICT_KEYRING != 0x40");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEYCTL_CAPS0_RESTRICT_KEYRING 0x40
+#endif
+#if defined(KEYCTL_CAPS0_MOVE) || (defined(HAVE_DECL_KEYCTL_CAPS0_MOVE) && HAVE_DECL_KEYCTL_CAPS0_MOVE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEYCTL_CAPS0_MOVE) == (0x80), "KEYCTL_CAPS0_MOVE != 0x80");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEYCTL_CAPS0_MOVE 0x80
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat keyctl_caps0 in mpers mode
+
+# else
+
+static const struct xlat_data keyctl_caps0_xdata[] = {
+ XLAT(KEYCTL_CAPS0_CAPABILITIES),
+ #define XLAT_VAL_0 ((unsigned) (KEYCTL_CAPS0_CAPABILITIES))
+ #define XLAT_STR_0 STRINGIFY(KEYCTL_CAPS0_CAPABILITIES)
+ XLAT(KEYCTL_CAPS0_PERSISTENT_KEYRINGS),
+ #define XLAT_VAL_1 ((unsigned) (KEYCTL_CAPS0_PERSISTENT_KEYRINGS))
+ #define XLAT_STR_1 STRINGIFY(KEYCTL_CAPS0_PERSISTENT_KEYRINGS)
+ XLAT(KEYCTL_CAPS0_DIFFIE_HELLMAN),
+ #define XLAT_VAL_2 ((unsigned) (KEYCTL_CAPS0_DIFFIE_HELLMAN))
+ #define XLAT_STR_2 STRINGIFY(KEYCTL_CAPS0_DIFFIE_HELLMAN)
+ XLAT(KEYCTL_CAPS0_PUBLIC_KEY),
+ #define XLAT_VAL_3 ((unsigned) (KEYCTL_CAPS0_PUBLIC_KEY))
+ #define XLAT_STR_3 STRINGIFY(KEYCTL_CAPS0_PUBLIC_KEY)
+ XLAT(KEYCTL_CAPS0_BIG_KEY),
+ #define XLAT_VAL_4 ((unsigned) (KEYCTL_CAPS0_BIG_KEY))
+ #define XLAT_STR_4 STRINGIFY(KEYCTL_CAPS0_BIG_KEY)
+ XLAT(KEYCTL_CAPS0_INVALIDATE),
+ #define XLAT_VAL_5 ((unsigned) (KEYCTL_CAPS0_INVALIDATE))
+ #define XLAT_STR_5 STRINGIFY(KEYCTL_CAPS0_INVALIDATE)
+ XLAT(KEYCTL_CAPS0_RESTRICT_KEYRING),
+ #define XLAT_VAL_6 ((unsigned) (KEYCTL_CAPS0_RESTRICT_KEYRING))
+ #define XLAT_STR_6 STRINGIFY(KEYCTL_CAPS0_RESTRICT_KEYRING)
+ XLAT(KEYCTL_CAPS0_MOVE),
+ #define XLAT_VAL_7 ((unsigned) (KEYCTL_CAPS0_MOVE))
+ #define XLAT_STR_7 STRINGIFY(KEYCTL_CAPS0_MOVE)
+};
+static
+const struct xlat keyctl_caps0[1] = { {
+ .data = keyctl_caps0_xdata,
+ .size = ARRAY_SIZE(keyctl_caps0_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/keyctl_caps0.in b/xlat/keyctl_caps0.in
new file mode 100644 (file)
index 0000000..e735052
--- /dev/null
@@ -0,0 +1,8 @@
+KEYCTL_CAPS0_CAPABILITIES              0x01
+KEYCTL_CAPS0_PERSISTENT_KEYRINGS       0x02
+KEYCTL_CAPS0_DIFFIE_HELLMAN            0x04
+KEYCTL_CAPS0_PUBLIC_KEY                        0x08
+KEYCTL_CAPS0_BIG_KEY                   0x10
+KEYCTL_CAPS0_INVALIDATE                        0x20
+KEYCTL_CAPS0_RESTRICT_KEYRING          0x40
+KEYCTL_CAPS0_MOVE                      0x80
diff --git a/xlat/keyctl_caps1.h b/xlat/keyctl_caps1.h
new file mode 100644 (file)
index 0000000..bf493f8
--- /dev/null
@@ -0,0 +1,84 @@
+/* Generated by ./xlat/gen.sh from ./xlat/keyctl_caps1.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(KEYCTL_CAPS1_NS_KEYRING_NAME) || (defined(HAVE_DECL_KEYCTL_CAPS1_NS_KEYRING_NAME) && HAVE_DECL_KEYCTL_CAPS1_NS_KEYRING_NAME)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEYCTL_CAPS1_NS_KEYRING_NAME) == (0x01), "KEYCTL_CAPS1_NS_KEYRING_NAME != 0x01");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEYCTL_CAPS1_NS_KEYRING_NAME 0x01
+#endif
+#if defined(KEYCTL_CAPS1_NS_KEY_TAG) || (defined(HAVE_DECL_KEYCTL_CAPS1_NS_KEY_TAG) && HAVE_DECL_KEYCTL_CAPS1_NS_KEY_TAG)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEYCTL_CAPS1_NS_KEY_TAG) == (0x02), "KEYCTL_CAPS1_NS_KEY_TAG != 0x02");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEYCTL_CAPS1_NS_KEY_TAG 0x02
+#endif
+#if defined(KEYCTL_CAPS1_NOTIFICATIONS) || (defined(HAVE_DECL_KEYCTL_CAPS1_NOTIFICATIONS) && HAVE_DECL_KEYCTL_CAPS1_NOTIFICATIONS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEYCTL_CAPS1_NOTIFICATIONS) == (0x04), "KEYCTL_CAPS1_NOTIFICATIONS != 0x04");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEYCTL_CAPS1_NOTIFICATIONS 0x04
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat keyctl_caps1 in mpers mode
+
+# else
+
+static const struct xlat_data keyctl_caps1_xdata[] = {
+ XLAT(KEYCTL_CAPS1_NS_KEYRING_NAME),
+ #define XLAT_VAL_0 ((unsigned) (KEYCTL_CAPS1_NS_KEYRING_NAME))
+ #define XLAT_STR_0 STRINGIFY(KEYCTL_CAPS1_NS_KEYRING_NAME)
+ XLAT(KEYCTL_CAPS1_NS_KEY_TAG),
+ #define XLAT_VAL_1 ((unsigned) (KEYCTL_CAPS1_NS_KEY_TAG))
+ #define XLAT_STR_1 STRINGIFY(KEYCTL_CAPS1_NS_KEY_TAG)
+ XLAT(KEYCTL_CAPS1_NOTIFICATIONS),
+ #define XLAT_VAL_2 ((unsigned) (KEYCTL_CAPS1_NOTIFICATIONS))
+ #define XLAT_STR_2 STRINGIFY(KEYCTL_CAPS1_NOTIFICATIONS)
+};
+static
+const struct xlat keyctl_caps1[1] = { {
+ .data = keyctl_caps1_xdata,
+ .size = ARRAY_SIZE(keyctl_caps1_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/keyctl_caps1.in b/xlat/keyctl_caps1.in
new file mode 100644 (file)
index 0000000..3ee24ec
--- /dev/null
@@ -0,0 +1,3 @@
+KEYCTL_CAPS1_NS_KEYRING_NAME   0x01
+KEYCTL_CAPS1_NS_KEY_TAG                0x02
+KEYCTL_CAPS1_NOTIFICATIONS     0x04
index 276627193d08084d3e0c19af2bf2953fe71a4f33..9d396f13bcda8406fc0477a02f87830d5204e563 100644 (file)
@@ -171,6 +171,41 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define KEYCTL_DH_COMPUTE 23
 #endif
+#if defined(KEYCTL_PKEY_QUERY) || (defined(HAVE_DECL_KEYCTL_PKEY_QUERY) && HAVE_DECL_KEYCTL_PKEY_QUERY)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEYCTL_PKEY_QUERY) == (24), "KEYCTL_PKEY_QUERY != 24");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEYCTL_PKEY_QUERY 24
+#endif
+#if defined(KEYCTL_PKEY_ENCRYPT) || (defined(HAVE_DECL_KEYCTL_PKEY_ENCRYPT) && HAVE_DECL_KEYCTL_PKEY_ENCRYPT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEYCTL_PKEY_ENCRYPT) == (25), "KEYCTL_PKEY_ENCRYPT != 25");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEYCTL_PKEY_ENCRYPT 25
+#endif
+#if defined(KEYCTL_PKEY_DECRYPT) || (defined(HAVE_DECL_KEYCTL_PKEY_DECRYPT) && HAVE_DECL_KEYCTL_PKEY_DECRYPT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEYCTL_PKEY_DECRYPT) == (26), "KEYCTL_PKEY_DECRYPT != 26");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEYCTL_PKEY_DECRYPT 26
+#endif
+#if defined(KEYCTL_PKEY_SIGN) || (defined(HAVE_DECL_KEYCTL_PKEY_SIGN) && HAVE_DECL_KEYCTL_PKEY_SIGN)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEYCTL_PKEY_SIGN) == (27), "KEYCTL_PKEY_SIGN != 27");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEYCTL_PKEY_SIGN 27
+#endif
+#if defined(KEYCTL_PKEY_VERIFY) || (defined(HAVE_DECL_KEYCTL_PKEY_VERIFY) && HAVE_DECL_KEYCTL_PKEY_VERIFY)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEYCTL_PKEY_VERIFY) == (28), "KEYCTL_PKEY_VERIFY != 28");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEYCTL_PKEY_VERIFY 28
+#endif
 #if defined(KEYCTL_RESTRICT_KEYRING) || (defined(HAVE_DECL_KEYCTL_RESTRICT_KEYRING) && HAVE_DECL_KEYCTL_RESTRICT_KEYRING)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
 static_assert((KEYCTL_RESTRICT_KEYRING) == (29), "KEYCTL_RESTRICT_KEYRING != 29");
@@ -178,6 +213,27 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define KEYCTL_RESTRICT_KEYRING 29
 #endif
+#if defined(KEYCTL_MOVE) || (defined(HAVE_DECL_KEYCTL_MOVE) && HAVE_DECL_KEYCTL_MOVE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEYCTL_MOVE) == (30), "KEYCTL_MOVE != 30");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEYCTL_MOVE 30
+#endif
+#if defined(KEYCTL_CAPABILITIES) || (defined(HAVE_DECL_KEYCTL_CAPABILITIES) && HAVE_DECL_KEYCTL_CAPABILITIES)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEYCTL_CAPABILITIES) == (31), "KEYCTL_CAPABILITIES != 31");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEYCTL_CAPABILITIES 31
+#endif
+#if defined(KEYCTL_WATCH_KEY) || (defined(HAVE_DECL_KEYCTL_WATCH_KEY) && HAVE_DECL_KEYCTL_WATCH_KEY)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEYCTL_WATCH_KEY) == (32), "KEYCTL_WATCH_KEY != 32");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEYCTL_WATCH_KEY 32
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
@@ -187,36 +243,382 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat keyctl_commands[] = {
- XLAT(KEYCTL_GET_KEYRING_ID),
- XLAT(KEYCTL_JOIN_SESSION_KEYRING),
- XLAT(KEYCTL_UPDATE),
- XLAT(KEYCTL_REVOKE),
- XLAT(KEYCTL_CHOWN),
- XLAT(KEYCTL_SETPERM),
- XLAT(KEYCTL_DESCRIBE),
- XLAT(KEYCTL_CLEAR),
- XLAT(KEYCTL_LINK),
- XLAT(KEYCTL_UNLINK),
- XLAT(KEYCTL_SEARCH),
- XLAT(KEYCTL_READ),
- XLAT(KEYCTL_INSTANTIATE),
- XLAT(KEYCTL_NEGATE),
- XLAT(KEYCTL_SET_REQKEY_KEYRING),
- XLAT(KEYCTL_SET_TIMEOUT),
- XLAT(KEYCTL_ASSUME_AUTHORITY),
- XLAT(KEYCTL_GET_SECURITY),
- XLAT(KEYCTL_SESSION_TO_PARENT),
- XLAT(KEYCTL_REJECT),
- XLAT(KEYCTL_INSTANTIATE_IOV),
- XLAT(KEYCTL_INVALIDATE),
- XLAT(KEYCTL_GET_PERSISTENT),
- XLAT(KEYCTL_DH_COMPUTE),
- XLAT(KEYCTL_RESTRICT_KEYRING),
- XLAT_END
+static const struct xlat_data keyctl_commands_xdata[] = {
+ [KEYCTL_GET_KEYRING_ID] = XLAT(KEYCTL_GET_KEYRING_ID),
+ #define XLAT_VAL_0 ((unsigned) (KEYCTL_GET_KEYRING_ID))
+ #define XLAT_STR_0 STRINGIFY(KEYCTL_GET_KEYRING_ID)
+ [KEYCTL_JOIN_SESSION_KEYRING] = XLAT(KEYCTL_JOIN_SESSION_KEYRING),
+ #define XLAT_VAL_1 ((unsigned) (KEYCTL_JOIN_SESSION_KEYRING))
+ #define XLAT_STR_1 STRINGIFY(KEYCTL_JOIN_SESSION_KEYRING)
+ [KEYCTL_UPDATE] = XLAT(KEYCTL_UPDATE),
+ #define XLAT_VAL_2 ((unsigned) (KEYCTL_UPDATE))
+ #define XLAT_STR_2 STRINGIFY(KEYCTL_UPDATE)
+ [KEYCTL_REVOKE] = XLAT(KEYCTL_REVOKE),
+ #define XLAT_VAL_3 ((unsigned) (KEYCTL_REVOKE))
+ #define XLAT_STR_3 STRINGIFY(KEYCTL_REVOKE)
+ [KEYCTL_CHOWN] = XLAT(KEYCTL_CHOWN),
+ #define XLAT_VAL_4 ((unsigned) (KEYCTL_CHOWN))
+ #define XLAT_STR_4 STRINGIFY(KEYCTL_CHOWN)
+ [KEYCTL_SETPERM] = XLAT(KEYCTL_SETPERM),
+ #define XLAT_VAL_5 ((unsigned) (KEYCTL_SETPERM))
+ #define XLAT_STR_5 STRINGIFY(KEYCTL_SETPERM)
+ [KEYCTL_DESCRIBE] = XLAT(KEYCTL_DESCRIBE),
+ #define XLAT_VAL_6 ((unsigned) (KEYCTL_DESCRIBE))
+ #define XLAT_STR_6 STRINGIFY(KEYCTL_DESCRIBE)
+ [KEYCTL_CLEAR] = XLAT(KEYCTL_CLEAR),
+ #define XLAT_VAL_7 ((unsigned) (KEYCTL_CLEAR))
+ #define XLAT_STR_7 STRINGIFY(KEYCTL_CLEAR)
+ [KEYCTL_LINK] = XLAT(KEYCTL_LINK),
+ #define XLAT_VAL_8 ((unsigned) (KEYCTL_LINK))
+ #define XLAT_STR_8 STRINGIFY(KEYCTL_LINK)
+ [KEYCTL_UNLINK] = XLAT(KEYCTL_UNLINK),
+ #define XLAT_VAL_9 ((unsigned) (KEYCTL_UNLINK))
+ #define XLAT_STR_9 STRINGIFY(KEYCTL_UNLINK)
+ [KEYCTL_SEARCH] = XLAT(KEYCTL_SEARCH),
+ #define XLAT_VAL_10 ((unsigned) (KEYCTL_SEARCH))
+ #define XLAT_STR_10 STRINGIFY(KEYCTL_SEARCH)
+ [KEYCTL_READ] = XLAT(KEYCTL_READ),
+ #define XLAT_VAL_11 ((unsigned) (KEYCTL_READ))
+ #define XLAT_STR_11 STRINGIFY(KEYCTL_READ)
+ [KEYCTL_INSTANTIATE] = XLAT(KEYCTL_INSTANTIATE),
+ #define XLAT_VAL_12 ((unsigned) (KEYCTL_INSTANTIATE))
+ #define XLAT_STR_12 STRINGIFY(KEYCTL_INSTANTIATE)
+ [KEYCTL_NEGATE] = XLAT(KEYCTL_NEGATE),
+ #define XLAT_VAL_13 ((unsigned) (KEYCTL_NEGATE))
+ #define XLAT_STR_13 STRINGIFY(KEYCTL_NEGATE)
+ [KEYCTL_SET_REQKEY_KEYRING] = XLAT(KEYCTL_SET_REQKEY_KEYRING),
+ #define XLAT_VAL_14 ((unsigned) (KEYCTL_SET_REQKEY_KEYRING))
+ #define XLAT_STR_14 STRINGIFY(KEYCTL_SET_REQKEY_KEYRING)
+ [KEYCTL_SET_TIMEOUT] = XLAT(KEYCTL_SET_TIMEOUT),
+ #define XLAT_VAL_15 ((unsigned) (KEYCTL_SET_TIMEOUT))
+ #define XLAT_STR_15 STRINGIFY(KEYCTL_SET_TIMEOUT)
+ [KEYCTL_ASSUME_AUTHORITY] = XLAT(KEYCTL_ASSUME_AUTHORITY),
+ #define XLAT_VAL_16 ((unsigned) (KEYCTL_ASSUME_AUTHORITY))
+ #define XLAT_STR_16 STRINGIFY(KEYCTL_ASSUME_AUTHORITY)
+ [KEYCTL_GET_SECURITY] = XLAT(KEYCTL_GET_SECURITY),
+ #define XLAT_VAL_17 ((unsigned) (KEYCTL_GET_SECURITY))
+ #define XLAT_STR_17 STRINGIFY(KEYCTL_GET_SECURITY)
+ [KEYCTL_SESSION_TO_PARENT] = XLAT(KEYCTL_SESSION_TO_PARENT),
+ #define XLAT_VAL_18 ((unsigned) (KEYCTL_SESSION_TO_PARENT))
+ #define XLAT_STR_18 STRINGIFY(KEYCTL_SESSION_TO_PARENT)
+ [KEYCTL_REJECT] = XLAT(KEYCTL_REJECT),
+ #define XLAT_VAL_19 ((unsigned) (KEYCTL_REJECT))
+ #define XLAT_STR_19 STRINGIFY(KEYCTL_REJECT)
+ [KEYCTL_INSTANTIATE_IOV] = XLAT(KEYCTL_INSTANTIATE_IOV),
+ #define XLAT_VAL_20 ((unsigned) (KEYCTL_INSTANTIATE_IOV))
+ #define XLAT_STR_20 STRINGIFY(KEYCTL_INSTANTIATE_IOV)
+ [KEYCTL_INVALIDATE] = XLAT(KEYCTL_INVALIDATE),
+ #define XLAT_VAL_21 ((unsigned) (KEYCTL_INVALIDATE))
+ #define XLAT_STR_21 STRINGIFY(KEYCTL_INVALIDATE)
+ [KEYCTL_GET_PERSISTENT] = XLAT(KEYCTL_GET_PERSISTENT),
+ #define XLAT_VAL_22 ((unsigned) (KEYCTL_GET_PERSISTENT))
+ #define XLAT_STR_22 STRINGIFY(KEYCTL_GET_PERSISTENT)
+ [KEYCTL_DH_COMPUTE] = XLAT(KEYCTL_DH_COMPUTE),
+ #define XLAT_VAL_23 ((unsigned) (KEYCTL_DH_COMPUTE))
+ #define XLAT_STR_23 STRINGIFY(KEYCTL_DH_COMPUTE)
+ [KEYCTL_PKEY_QUERY] = XLAT(KEYCTL_PKEY_QUERY),
+ #define XLAT_VAL_24 ((unsigned) (KEYCTL_PKEY_QUERY))
+ #define XLAT_STR_24 STRINGIFY(KEYCTL_PKEY_QUERY)
+ [KEYCTL_PKEY_ENCRYPT] = XLAT(KEYCTL_PKEY_ENCRYPT),
+ #define XLAT_VAL_25 ((unsigned) (KEYCTL_PKEY_ENCRYPT))
+ #define XLAT_STR_25 STRINGIFY(KEYCTL_PKEY_ENCRYPT)
+ [KEYCTL_PKEY_DECRYPT] = XLAT(KEYCTL_PKEY_DECRYPT),
+ #define XLAT_VAL_26 ((unsigned) (KEYCTL_PKEY_DECRYPT))
+ #define XLAT_STR_26 STRINGIFY(KEYCTL_PKEY_DECRYPT)
+ [KEYCTL_PKEY_SIGN] = XLAT(KEYCTL_PKEY_SIGN),
+ #define XLAT_VAL_27 ((unsigned) (KEYCTL_PKEY_SIGN))
+ #define XLAT_STR_27 STRINGIFY(KEYCTL_PKEY_SIGN)
+ [KEYCTL_PKEY_VERIFY] = XLAT(KEYCTL_PKEY_VERIFY),
+ #define XLAT_VAL_28 ((unsigned) (KEYCTL_PKEY_VERIFY))
+ #define XLAT_STR_28 STRINGIFY(KEYCTL_PKEY_VERIFY)
+ [KEYCTL_RESTRICT_KEYRING] = XLAT(KEYCTL_RESTRICT_KEYRING),
+ #define XLAT_VAL_29 ((unsigned) (KEYCTL_RESTRICT_KEYRING))
+ #define XLAT_STR_29 STRINGIFY(KEYCTL_RESTRICT_KEYRING)
+ [KEYCTL_MOVE] = XLAT(KEYCTL_MOVE),
+ #define XLAT_VAL_30 ((unsigned) (KEYCTL_MOVE))
+ #define XLAT_STR_30 STRINGIFY(KEYCTL_MOVE)
+ [KEYCTL_CAPABILITIES] = XLAT(KEYCTL_CAPABILITIES),
+ #define XLAT_VAL_31 ((unsigned) (KEYCTL_CAPABILITIES))
+ #define XLAT_STR_31 STRINGIFY(KEYCTL_CAPABILITIES)
+ [KEYCTL_WATCH_KEY] = XLAT(KEYCTL_WATCH_KEY),
+ #define XLAT_VAL_32 ((unsigned) (KEYCTL_WATCH_KEY))
+ #define XLAT_STR_32 STRINGIFY(KEYCTL_WATCH_KEY)
 };
+static
+const struct xlat keyctl_commands[1] = { {
+ .data = keyctl_commands_xdata,
+ .size = ARRAY_SIZE(keyctl_commands_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+#  ifdef XLAT_VAL_30
+  | XLAT_VAL_30
+#  endif
+#  ifdef XLAT_VAL_31
+  | XLAT_VAL_31
+#  endif
+#  ifdef XLAT_VAL_32
+  | XLAT_VAL_32
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+#  ifdef XLAT_STR_30
+  + sizeof(XLAT_STR_30)
+#  endif
+#  ifdef XLAT_STR_31
+  + sizeof(XLAT_STR_31)
+#  endif
+#  ifdef XLAT_STR_32
+  + sizeof(XLAT_STR_32)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
+#  undef XLAT_STR_30
+#  undef XLAT_VAL_30
+#  undef XLAT_STR_31
+#  undef XLAT_VAL_31
+#  undef XLAT_STR_32
+#  undef XLAT_VAL_32
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 5e1f4472e65340b6a5031707178acc1774e08250..e3d82ff520db9f29b2ce0c4424a94a21587e0a47 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 KEYCTL_GET_KEYRING_ID 0
 KEYCTL_JOIN_SESSION_KEYRING 1
 KEYCTL_UPDATE 2
@@ -22,4 +23,12 @@ KEYCTL_INSTANTIATE_IOV 20
 KEYCTL_INVALIDATE 21
 KEYCTL_GET_PERSISTENT 22
 KEYCTL_DH_COMPUTE 23
+KEYCTL_PKEY_QUERY 24
+KEYCTL_PKEY_ENCRYPT 25
+KEYCTL_PKEY_DECRYPT 26
+KEYCTL_PKEY_SIGN 27
+KEYCTL_PKEY_VERIFY 28
 KEYCTL_RESTRICT_KEYRING 29
+KEYCTL_MOVE 30
+KEYCTL_CAPABILITIES 31
+KEYCTL_WATCH_KEY 32
diff --git a/xlat/keyctl_move_flags.h b/xlat/keyctl_move_flags.h
new file mode 100644 (file)
index 0000000..bb5a6bd
--- /dev/null
@@ -0,0 +1,48 @@
+/* Generated by ./xlat/gen.sh from ./xlat/keyctl_move_flags.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(KEYCTL_MOVE_EXCL) || (defined(HAVE_DECL_KEYCTL_MOVE_EXCL) && HAVE_DECL_KEYCTL_MOVE_EXCL)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEYCTL_MOVE_EXCL) == (0x1), "KEYCTL_MOVE_EXCL != 0x1");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEYCTL_MOVE_EXCL 0x1
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat keyctl_move_flags in mpers mode
+
+# else
+
+static const struct xlat_data keyctl_move_flags_xdata[] = {
+ XLAT(KEYCTL_MOVE_EXCL),
+ #define XLAT_VAL_0 ((unsigned) (KEYCTL_MOVE_EXCL))
+ #define XLAT_STR_0 STRINGIFY(KEYCTL_MOVE_EXCL)
+};
+static
+const struct xlat keyctl_move_flags[1] = { {
+ .data = keyctl_move_flags_xdata,
+ .size = ARRAY_SIZE(keyctl_move_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/keyctl_move_flags.in b/xlat/keyctl_move_flags.in
new file mode 100644 (file)
index 0000000..6588e2c
--- /dev/null
@@ -0,0 +1 @@
+KEYCTL_MOVE_EXCL       0x1
diff --git a/xlat/keyctl_pkey_ops.h b/xlat/keyctl_pkey_ops.h
new file mode 100644 (file)
index 0000000..fcf5021
--- /dev/null
@@ -0,0 +1,102 @@
+/* Generated by ./xlat/gen.sh from ./xlat/keyctl_pkey_ops.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(KEYCTL_SUPPORTS_ENCRYPT) || (defined(HAVE_DECL_KEYCTL_SUPPORTS_ENCRYPT) && HAVE_DECL_KEYCTL_SUPPORTS_ENCRYPT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEYCTL_SUPPORTS_ENCRYPT) == (0x01), "KEYCTL_SUPPORTS_ENCRYPT != 0x01");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEYCTL_SUPPORTS_ENCRYPT 0x01
+#endif
+#if defined(KEYCTL_SUPPORTS_DECRYPT) || (defined(HAVE_DECL_KEYCTL_SUPPORTS_DECRYPT) && HAVE_DECL_KEYCTL_SUPPORTS_DECRYPT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEYCTL_SUPPORTS_DECRYPT) == (0x02), "KEYCTL_SUPPORTS_DECRYPT != 0x02");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEYCTL_SUPPORTS_DECRYPT 0x02
+#endif
+#if defined(KEYCTL_SUPPORTS_SIGN) || (defined(HAVE_DECL_KEYCTL_SUPPORTS_SIGN) && HAVE_DECL_KEYCTL_SUPPORTS_SIGN)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEYCTL_SUPPORTS_SIGN) == (0x04), "KEYCTL_SUPPORTS_SIGN != 0x04");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEYCTL_SUPPORTS_SIGN 0x04
+#endif
+#if defined(KEYCTL_SUPPORTS_VERIFY) || (defined(HAVE_DECL_KEYCTL_SUPPORTS_VERIFY) && HAVE_DECL_KEYCTL_SUPPORTS_VERIFY)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KEYCTL_SUPPORTS_VERIFY) == (0x08), "KEYCTL_SUPPORTS_VERIFY != 0x08");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KEYCTL_SUPPORTS_VERIFY 0x08
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat keyctl_pkey_ops in mpers mode
+
+# else
+
+static const struct xlat_data keyctl_pkey_ops_xdata[] = {
+ XLAT(KEYCTL_SUPPORTS_ENCRYPT),
+ #define XLAT_VAL_0 ((unsigned) (KEYCTL_SUPPORTS_ENCRYPT))
+ #define XLAT_STR_0 STRINGIFY(KEYCTL_SUPPORTS_ENCRYPT)
+ XLAT(KEYCTL_SUPPORTS_DECRYPT),
+ #define XLAT_VAL_1 ((unsigned) (KEYCTL_SUPPORTS_DECRYPT))
+ #define XLAT_STR_1 STRINGIFY(KEYCTL_SUPPORTS_DECRYPT)
+ XLAT(KEYCTL_SUPPORTS_SIGN),
+ #define XLAT_VAL_2 ((unsigned) (KEYCTL_SUPPORTS_SIGN))
+ #define XLAT_STR_2 STRINGIFY(KEYCTL_SUPPORTS_SIGN)
+ XLAT(KEYCTL_SUPPORTS_VERIFY),
+ #define XLAT_VAL_3 ((unsigned) (KEYCTL_SUPPORTS_VERIFY))
+ #define XLAT_STR_3 STRINGIFY(KEYCTL_SUPPORTS_VERIFY)
+};
+static
+const struct xlat keyctl_pkey_ops[1] = { {
+ .data = keyctl_pkey_ops_xdata,
+ .size = ARRAY_SIZE(keyctl_pkey_ops_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/keyctl_pkey_ops.in b/xlat/keyctl_pkey_ops.in
new file mode 100644 (file)
index 0000000..d77f1df
--- /dev/null
@@ -0,0 +1,4 @@
+KEYCTL_SUPPORTS_ENCRYPT        0x01
+KEYCTL_SUPPORTS_DECRYPT        0x02
+KEYCTL_SUPPORTS_SIGN   0x04
+KEYCTL_SUPPORTS_VERIFY 0x08
index 5f40a27529f3611818efc3726e90796367d4b9d1..3809e9ffcbc99ea872b00d81720fd84cda46383a 100644 (file)
@@ -1137,6 +1137,146 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define KVM_CAP_HYPERV_CPUID 167
 #endif
+#if defined(KVM_CAP_MANUAL_DIRTY_LOG_PROTECT2) || (defined(HAVE_DECL_KVM_CAP_MANUAL_DIRTY_LOG_PROTECT2) && HAVE_DECL_KVM_CAP_MANUAL_DIRTY_LOG_PROTECT2)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KVM_CAP_MANUAL_DIRTY_LOG_PROTECT2) == (168), "KVM_CAP_MANUAL_DIRTY_LOG_PROTECT2 != 168");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KVM_CAP_MANUAL_DIRTY_LOG_PROTECT2 168
+#endif
+#if defined(KVM_CAP_PPC_IRQ_XIVE) || (defined(HAVE_DECL_KVM_CAP_PPC_IRQ_XIVE) && HAVE_DECL_KVM_CAP_PPC_IRQ_XIVE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KVM_CAP_PPC_IRQ_XIVE) == (169), "KVM_CAP_PPC_IRQ_XIVE != 169");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KVM_CAP_PPC_IRQ_XIVE 169
+#endif
+#if defined(KVM_CAP_ARM_SVE) || (defined(HAVE_DECL_KVM_CAP_ARM_SVE) && HAVE_DECL_KVM_CAP_ARM_SVE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KVM_CAP_ARM_SVE) == (170), "KVM_CAP_ARM_SVE != 170");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KVM_CAP_ARM_SVE 170
+#endif
+#if defined(KVM_CAP_ARM_PTRAUTH_ADDRESS) || (defined(HAVE_DECL_KVM_CAP_ARM_PTRAUTH_ADDRESS) && HAVE_DECL_KVM_CAP_ARM_PTRAUTH_ADDRESS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KVM_CAP_ARM_PTRAUTH_ADDRESS) == (171), "KVM_CAP_ARM_PTRAUTH_ADDRESS != 171");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KVM_CAP_ARM_PTRAUTH_ADDRESS 171
+#endif
+#if defined(KVM_CAP_ARM_PTRAUTH_GENERIC) || (defined(HAVE_DECL_KVM_CAP_ARM_PTRAUTH_GENERIC) && HAVE_DECL_KVM_CAP_ARM_PTRAUTH_GENERIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KVM_CAP_ARM_PTRAUTH_GENERIC) == (172), "KVM_CAP_ARM_PTRAUTH_GENERIC != 172");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KVM_CAP_ARM_PTRAUTH_GENERIC 172
+#endif
+#if defined(KVM_CAP_PMU_EVENT_FILTER) || (defined(HAVE_DECL_KVM_CAP_PMU_EVENT_FILTER) && HAVE_DECL_KVM_CAP_PMU_EVENT_FILTER)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KVM_CAP_PMU_EVENT_FILTER) == (173), "KVM_CAP_PMU_EVENT_FILTER != 173");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KVM_CAP_PMU_EVENT_FILTER 173
+#endif
+#if defined(KVM_CAP_ARM_IRQ_LINE_LAYOUT_2) || (defined(HAVE_DECL_KVM_CAP_ARM_IRQ_LINE_LAYOUT_2) && HAVE_DECL_KVM_CAP_ARM_IRQ_LINE_LAYOUT_2)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KVM_CAP_ARM_IRQ_LINE_LAYOUT_2) == (174), "KVM_CAP_ARM_IRQ_LINE_LAYOUT_2 != 174");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KVM_CAP_ARM_IRQ_LINE_LAYOUT_2 174
+#endif
+#if defined(KVM_CAP_HYPERV_DIRECT_TLBFLUSH) || (defined(HAVE_DECL_KVM_CAP_HYPERV_DIRECT_TLBFLUSH) && HAVE_DECL_KVM_CAP_HYPERV_DIRECT_TLBFLUSH)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KVM_CAP_HYPERV_DIRECT_TLBFLUSH) == (175), "KVM_CAP_HYPERV_DIRECT_TLBFLUSH != 175");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KVM_CAP_HYPERV_DIRECT_TLBFLUSH 175
+#endif
+#if defined(KVM_CAP_PPC_GUEST_DEBUG_SSTEP) || (defined(HAVE_DECL_KVM_CAP_PPC_GUEST_DEBUG_SSTEP) && HAVE_DECL_KVM_CAP_PPC_GUEST_DEBUG_SSTEP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KVM_CAP_PPC_GUEST_DEBUG_SSTEP) == (176), "KVM_CAP_PPC_GUEST_DEBUG_SSTEP != 176");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KVM_CAP_PPC_GUEST_DEBUG_SSTEP 176
+#endif
+#if defined(KVM_CAP_ARM_NISV_TO_USER) || (defined(HAVE_DECL_KVM_CAP_ARM_NISV_TO_USER) && HAVE_DECL_KVM_CAP_ARM_NISV_TO_USER)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KVM_CAP_ARM_NISV_TO_USER) == (177), "KVM_CAP_ARM_NISV_TO_USER != 177");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KVM_CAP_ARM_NISV_TO_USER 177
+#endif
+#if defined(KVM_CAP_ARM_INJECT_EXT_DABT) || (defined(HAVE_DECL_KVM_CAP_ARM_INJECT_EXT_DABT) && HAVE_DECL_KVM_CAP_ARM_INJECT_EXT_DABT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KVM_CAP_ARM_INJECT_EXT_DABT) == (178), "KVM_CAP_ARM_INJECT_EXT_DABT != 178");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KVM_CAP_ARM_INJECT_EXT_DABT 178
+#endif
+#if defined(KVM_CAP_S390_VCPU_RESETS) || (defined(HAVE_DECL_KVM_CAP_S390_VCPU_RESETS) && HAVE_DECL_KVM_CAP_S390_VCPU_RESETS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KVM_CAP_S390_VCPU_RESETS) == (179), "KVM_CAP_S390_VCPU_RESETS != 179");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KVM_CAP_S390_VCPU_RESETS 179
+#endif
+#if defined(KVM_CAP_S390_PROTECTED) || (defined(HAVE_DECL_KVM_CAP_S390_PROTECTED) && HAVE_DECL_KVM_CAP_S390_PROTECTED)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KVM_CAP_S390_PROTECTED) == (180), "KVM_CAP_S390_PROTECTED != 180");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KVM_CAP_S390_PROTECTED 180
+#endif
+#if defined(KVM_CAP_PPC_SECURE_GUEST) || (defined(HAVE_DECL_KVM_CAP_PPC_SECURE_GUEST) && HAVE_DECL_KVM_CAP_PPC_SECURE_GUEST)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KVM_CAP_PPC_SECURE_GUEST) == (181), "KVM_CAP_PPC_SECURE_GUEST != 181");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KVM_CAP_PPC_SECURE_GUEST 181
+#endif
+#if defined(KVM_CAP_HALT_POLL) || (defined(HAVE_DECL_KVM_CAP_HALT_POLL) && HAVE_DECL_KVM_CAP_HALT_POLL)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KVM_CAP_HALT_POLL) == (182), "KVM_CAP_HALT_POLL != 182");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KVM_CAP_HALT_POLL 182
+#endif
+#if defined(KVM_CAP_ASYNC_PF_INT) || (defined(HAVE_DECL_KVM_CAP_ASYNC_PF_INT) && HAVE_DECL_KVM_CAP_ASYNC_PF_INT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KVM_CAP_ASYNC_PF_INT) == (183), "KVM_CAP_ASYNC_PF_INT != 183");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KVM_CAP_ASYNC_PF_INT 183
+#endif
+#if defined(KVM_CAP_LAST_CPU) || (defined(HAVE_DECL_KVM_CAP_LAST_CPU) && HAVE_DECL_KVM_CAP_LAST_CPU)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KVM_CAP_LAST_CPU) == (184), "KVM_CAP_LAST_CPU != 184");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KVM_CAP_LAST_CPU 184
+#endif
+#if defined(KVM_CAP_SMALLER_MAXPHYADDR) || (defined(HAVE_DECL_KVM_CAP_SMALLER_MAXPHYADDR) && HAVE_DECL_KVM_CAP_SMALLER_MAXPHYADDR)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KVM_CAP_SMALLER_MAXPHYADDR) == (185), "KVM_CAP_SMALLER_MAXPHYADDR != 185");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KVM_CAP_SMALLER_MAXPHYADDR 185
+#endif
+#if defined(KVM_CAP_S390_DIAG318) || (defined(HAVE_DECL_KVM_CAP_S390_DIAG318) && HAVE_DECL_KVM_CAP_S390_DIAG318)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KVM_CAP_S390_DIAG318) == (186), "KVM_CAP_S390_DIAG318 != 186");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KVM_CAP_S390_DIAG318 186
+#endif
+#if defined(KVM_CAP_STEAL_TIME) || (defined(HAVE_DECL_KVM_CAP_STEAL_TIME) && HAVE_DECL_KVM_CAP_STEAL_TIME)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KVM_CAP_STEAL_TIME) == (187), "KVM_CAP_STEAL_TIME != 187");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KVM_CAP_STEAL_TIME 187
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
@@ -1146,173 +1286,2021 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat kvm_cap[] = {
+static const struct xlat_data kvm_cap_xdata[] = {
  [KVM_CAP_IRQCHIP] = XLAT(KVM_CAP_IRQCHIP),
+ #define XLAT_VAL_0 ((unsigned) (KVM_CAP_IRQCHIP))
+ #define XLAT_STR_0 STRINGIFY(KVM_CAP_IRQCHIP)
  [KVM_CAP_HLT] = XLAT(KVM_CAP_HLT),
+ #define XLAT_VAL_1 ((unsigned) (KVM_CAP_HLT))
+ #define XLAT_STR_1 STRINGIFY(KVM_CAP_HLT)
  [KVM_CAP_MMU_SHADOW_CACHE_CONTROL] = XLAT(KVM_CAP_MMU_SHADOW_CACHE_CONTROL),
+ #define XLAT_VAL_2 ((unsigned) (KVM_CAP_MMU_SHADOW_CACHE_CONTROL))
+ #define XLAT_STR_2 STRINGIFY(KVM_CAP_MMU_SHADOW_CACHE_CONTROL)
  [KVM_CAP_USER_MEMORY] = XLAT(KVM_CAP_USER_MEMORY),
+ #define XLAT_VAL_3 ((unsigned) (KVM_CAP_USER_MEMORY))
+ #define XLAT_STR_3 STRINGIFY(KVM_CAP_USER_MEMORY)
  [KVM_CAP_SET_TSS_ADDR] = XLAT(KVM_CAP_SET_TSS_ADDR),
+ #define XLAT_VAL_4 ((unsigned) (KVM_CAP_SET_TSS_ADDR))
+ #define XLAT_STR_4 STRINGIFY(KVM_CAP_SET_TSS_ADDR)
  [KVM_CAP_VAPIC] = XLAT(KVM_CAP_VAPIC),
+ #define XLAT_VAL_5 ((unsigned) (KVM_CAP_VAPIC))
+ #define XLAT_STR_5 STRINGIFY(KVM_CAP_VAPIC)
  [KVM_CAP_EXT_CPUID] = XLAT(KVM_CAP_EXT_CPUID),
+ #define XLAT_VAL_6 ((unsigned) (KVM_CAP_EXT_CPUID))
+ #define XLAT_STR_6 STRINGIFY(KVM_CAP_EXT_CPUID)
  [KVM_CAP_CLOCKSOURCE] = XLAT(KVM_CAP_CLOCKSOURCE),
+ #define XLAT_VAL_7 ((unsigned) (KVM_CAP_CLOCKSOURCE))
+ #define XLAT_STR_7 STRINGIFY(KVM_CAP_CLOCKSOURCE)
  [KVM_CAP_NR_VCPUS] = XLAT(KVM_CAP_NR_VCPUS),
+ #define XLAT_VAL_8 ((unsigned) (KVM_CAP_NR_VCPUS))
+ #define XLAT_STR_8 STRINGIFY(KVM_CAP_NR_VCPUS)
  [KVM_CAP_NR_MEMSLOTS] = XLAT(KVM_CAP_NR_MEMSLOTS),
+ #define XLAT_VAL_9 ((unsigned) (KVM_CAP_NR_MEMSLOTS))
+ #define XLAT_STR_9 STRINGIFY(KVM_CAP_NR_MEMSLOTS)
  [KVM_CAP_PIT] = XLAT(KVM_CAP_PIT),
+ #define XLAT_VAL_10 ((unsigned) (KVM_CAP_PIT))
+ #define XLAT_STR_10 STRINGIFY(KVM_CAP_PIT)
  [KVM_CAP_NOP_IO_DELAY] = XLAT(KVM_CAP_NOP_IO_DELAY),
+ #define XLAT_VAL_11 ((unsigned) (KVM_CAP_NOP_IO_DELAY))
+ #define XLAT_STR_11 STRINGIFY(KVM_CAP_NOP_IO_DELAY)
  [KVM_CAP_PV_MMU] = XLAT(KVM_CAP_PV_MMU),
+ #define XLAT_VAL_12 ((unsigned) (KVM_CAP_PV_MMU))
+ #define XLAT_STR_12 STRINGIFY(KVM_CAP_PV_MMU)
  [KVM_CAP_MP_STATE] = XLAT(KVM_CAP_MP_STATE),
+ #define XLAT_VAL_13 ((unsigned) (KVM_CAP_MP_STATE))
+ #define XLAT_STR_13 STRINGIFY(KVM_CAP_MP_STATE)
  [KVM_CAP_COALESCED_MMIO] = XLAT(KVM_CAP_COALESCED_MMIO),
+ #define XLAT_VAL_14 ((unsigned) (KVM_CAP_COALESCED_MMIO))
+ #define XLAT_STR_14 STRINGIFY(KVM_CAP_COALESCED_MMIO)
  [KVM_CAP_SYNC_MMU] = XLAT(KVM_CAP_SYNC_MMU),
+ #define XLAT_VAL_15 ((unsigned) (KVM_CAP_SYNC_MMU))
+ #define XLAT_STR_15 STRINGIFY(KVM_CAP_SYNC_MMU)
  [KVM_CAP_IOMMU] = XLAT(KVM_CAP_IOMMU),
+ #define XLAT_VAL_16 ((unsigned) (KVM_CAP_IOMMU))
+ #define XLAT_STR_16 STRINGIFY(KVM_CAP_IOMMU)
  [KVM_CAP_DESTROY_MEMORY_REGION_WORKS] = XLAT(KVM_CAP_DESTROY_MEMORY_REGION_WORKS),
+ #define XLAT_VAL_17 ((unsigned) (KVM_CAP_DESTROY_MEMORY_REGION_WORKS))
+ #define XLAT_STR_17 STRINGIFY(KVM_CAP_DESTROY_MEMORY_REGION_WORKS)
  [KVM_CAP_USER_NMI] = XLAT(KVM_CAP_USER_NMI),
+ #define XLAT_VAL_18 ((unsigned) (KVM_CAP_USER_NMI))
+ #define XLAT_STR_18 STRINGIFY(KVM_CAP_USER_NMI)
  [KVM_CAP_SET_GUEST_DEBUG] = XLAT(KVM_CAP_SET_GUEST_DEBUG),
+ #define XLAT_VAL_19 ((unsigned) (KVM_CAP_SET_GUEST_DEBUG))
+ #define XLAT_STR_19 STRINGIFY(KVM_CAP_SET_GUEST_DEBUG)
  [KVM_CAP_REINJECT_CONTROL] = XLAT(KVM_CAP_REINJECT_CONTROL),
+ #define XLAT_VAL_20 ((unsigned) (KVM_CAP_REINJECT_CONTROL))
+ #define XLAT_STR_20 STRINGIFY(KVM_CAP_REINJECT_CONTROL)
  [KVM_CAP_IRQ_ROUTING] = XLAT(KVM_CAP_IRQ_ROUTING),
+ #define XLAT_VAL_21 ((unsigned) (KVM_CAP_IRQ_ROUTING))
+ #define XLAT_STR_21 STRINGIFY(KVM_CAP_IRQ_ROUTING)
  [KVM_CAP_IRQ_INJECT_STATUS] = XLAT(KVM_CAP_IRQ_INJECT_STATUS),
+ #define XLAT_VAL_22 ((unsigned) (KVM_CAP_IRQ_INJECT_STATUS))
+ #define XLAT_STR_22 STRINGIFY(KVM_CAP_IRQ_INJECT_STATUS)
  [KVM_CAP_ASSIGN_DEV_IRQ] = XLAT(KVM_CAP_ASSIGN_DEV_IRQ),
+ #define XLAT_VAL_23 ((unsigned) (KVM_CAP_ASSIGN_DEV_IRQ))
+ #define XLAT_STR_23 STRINGIFY(KVM_CAP_ASSIGN_DEV_IRQ)
  [KVM_CAP_JOIN_MEMORY_REGIONS_WORKS] = XLAT(KVM_CAP_JOIN_MEMORY_REGIONS_WORKS),
+ #define XLAT_VAL_24 ((unsigned) (KVM_CAP_JOIN_MEMORY_REGIONS_WORKS))
+ #define XLAT_STR_24 STRINGIFY(KVM_CAP_JOIN_MEMORY_REGIONS_WORKS)
  [KVM_CAP_MCE] = XLAT(KVM_CAP_MCE),
+ #define XLAT_VAL_25 ((unsigned) (KVM_CAP_MCE))
+ #define XLAT_STR_25 STRINGIFY(KVM_CAP_MCE)
  [KVM_CAP_IRQFD] = XLAT(KVM_CAP_IRQFD),
+ #define XLAT_VAL_26 ((unsigned) (KVM_CAP_IRQFD))
+ #define XLAT_STR_26 STRINGIFY(KVM_CAP_IRQFD)
  [KVM_CAP_PIT2] = XLAT(KVM_CAP_PIT2),
+ #define XLAT_VAL_27 ((unsigned) (KVM_CAP_PIT2))
+ #define XLAT_STR_27 STRINGIFY(KVM_CAP_PIT2)
  [KVM_CAP_SET_BOOT_CPU_ID] = XLAT(KVM_CAP_SET_BOOT_CPU_ID),
+ #define XLAT_VAL_28 ((unsigned) (KVM_CAP_SET_BOOT_CPU_ID))
+ #define XLAT_STR_28 STRINGIFY(KVM_CAP_SET_BOOT_CPU_ID)
  [KVM_CAP_PIT_STATE2] = XLAT(KVM_CAP_PIT_STATE2),
+ #define XLAT_VAL_29 ((unsigned) (KVM_CAP_PIT_STATE2))
+ #define XLAT_STR_29 STRINGIFY(KVM_CAP_PIT_STATE2)
  [KVM_CAP_IOEVENTFD] = XLAT(KVM_CAP_IOEVENTFD),
+ #define XLAT_VAL_30 ((unsigned) (KVM_CAP_IOEVENTFD))
+ #define XLAT_STR_30 STRINGIFY(KVM_CAP_IOEVENTFD)
  [KVM_CAP_SET_IDENTITY_MAP_ADDR] = XLAT(KVM_CAP_SET_IDENTITY_MAP_ADDR),
+ #define XLAT_VAL_31 ((unsigned) (KVM_CAP_SET_IDENTITY_MAP_ADDR))
+ #define XLAT_STR_31 STRINGIFY(KVM_CAP_SET_IDENTITY_MAP_ADDR)
  [KVM_CAP_XEN_HVM] = XLAT(KVM_CAP_XEN_HVM),
+ #define XLAT_VAL_32 ((unsigned) (KVM_CAP_XEN_HVM))
+ #define XLAT_STR_32 STRINGIFY(KVM_CAP_XEN_HVM)
  [KVM_CAP_ADJUST_CLOCK] = XLAT(KVM_CAP_ADJUST_CLOCK),
+ #define XLAT_VAL_33 ((unsigned) (KVM_CAP_ADJUST_CLOCK))
+ #define XLAT_STR_33 STRINGIFY(KVM_CAP_ADJUST_CLOCK)
  [KVM_CAP_INTERNAL_ERROR_DATA] = XLAT(KVM_CAP_INTERNAL_ERROR_DATA),
+ #define XLAT_VAL_34 ((unsigned) (KVM_CAP_INTERNAL_ERROR_DATA))
+ #define XLAT_STR_34 STRINGIFY(KVM_CAP_INTERNAL_ERROR_DATA)
  [KVM_CAP_VCPU_EVENTS] = XLAT(KVM_CAP_VCPU_EVENTS),
+ #define XLAT_VAL_35 ((unsigned) (KVM_CAP_VCPU_EVENTS))
+ #define XLAT_STR_35 STRINGIFY(KVM_CAP_VCPU_EVENTS)
  [KVM_CAP_S390_PSW] = XLAT(KVM_CAP_S390_PSW),
+ #define XLAT_VAL_36 ((unsigned) (KVM_CAP_S390_PSW))
+ #define XLAT_STR_36 STRINGIFY(KVM_CAP_S390_PSW)
  [KVM_CAP_PPC_SEGSTATE] = XLAT(KVM_CAP_PPC_SEGSTATE),
+ #define XLAT_VAL_37 ((unsigned) (KVM_CAP_PPC_SEGSTATE))
+ #define XLAT_STR_37 STRINGIFY(KVM_CAP_PPC_SEGSTATE)
  [KVM_CAP_HYPERV] = XLAT(KVM_CAP_HYPERV),
+ #define XLAT_VAL_38 ((unsigned) (KVM_CAP_HYPERV))
+ #define XLAT_STR_38 STRINGIFY(KVM_CAP_HYPERV)
  [KVM_CAP_HYPERV_VAPIC] = XLAT(KVM_CAP_HYPERV_VAPIC),
+ #define XLAT_VAL_39 ((unsigned) (KVM_CAP_HYPERV_VAPIC))
+ #define XLAT_STR_39 STRINGIFY(KVM_CAP_HYPERV_VAPIC)
  [KVM_CAP_HYPERV_SPIN] = XLAT(KVM_CAP_HYPERV_SPIN),
+ #define XLAT_VAL_40 ((unsigned) (KVM_CAP_HYPERV_SPIN))
+ #define XLAT_STR_40 STRINGIFY(KVM_CAP_HYPERV_SPIN)
  [KVM_CAP_PCI_SEGMENT] = XLAT(KVM_CAP_PCI_SEGMENT),
+ #define XLAT_VAL_41 ((unsigned) (KVM_CAP_PCI_SEGMENT))
+ #define XLAT_STR_41 STRINGIFY(KVM_CAP_PCI_SEGMENT)
  [KVM_CAP_PPC_PAIRED_SINGLES] = XLAT(KVM_CAP_PPC_PAIRED_SINGLES),
+ #define XLAT_VAL_42 ((unsigned) (KVM_CAP_PPC_PAIRED_SINGLES))
+ #define XLAT_STR_42 STRINGIFY(KVM_CAP_PPC_PAIRED_SINGLES)
  [KVM_CAP_INTR_SHADOW] = XLAT(KVM_CAP_INTR_SHADOW),
+ #define XLAT_VAL_43 ((unsigned) (KVM_CAP_INTR_SHADOW))
+ #define XLAT_STR_43 STRINGIFY(KVM_CAP_INTR_SHADOW)
  [KVM_CAP_DEBUGREGS] = XLAT(KVM_CAP_DEBUGREGS),
+ #define XLAT_VAL_44 ((unsigned) (KVM_CAP_DEBUGREGS))
+ #define XLAT_STR_44 STRINGIFY(KVM_CAP_DEBUGREGS)
  [KVM_CAP_X86_ROBUST_SINGLESTEP] = XLAT(KVM_CAP_X86_ROBUST_SINGLESTEP),
+ #define XLAT_VAL_45 ((unsigned) (KVM_CAP_X86_ROBUST_SINGLESTEP))
+ #define XLAT_STR_45 STRINGIFY(KVM_CAP_X86_ROBUST_SINGLESTEP)
  [KVM_CAP_PPC_OSI] = XLAT(KVM_CAP_PPC_OSI),
+ #define XLAT_VAL_46 ((unsigned) (KVM_CAP_PPC_OSI))
+ #define XLAT_STR_46 STRINGIFY(KVM_CAP_PPC_OSI)
  [KVM_CAP_PPC_UNSET_IRQ] = XLAT(KVM_CAP_PPC_UNSET_IRQ),
+ #define XLAT_VAL_47 ((unsigned) (KVM_CAP_PPC_UNSET_IRQ))
+ #define XLAT_STR_47 STRINGIFY(KVM_CAP_PPC_UNSET_IRQ)
  [KVM_CAP_ENABLE_CAP] = XLAT(KVM_CAP_ENABLE_CAP),
+ #define XLAT_VAL_48 ((unsigned) (KVM_CAP_ENABLE_CAP))
+ #define XLAT_STR_48 STRINGIFY(KVM_CAP_ENABLE_CAP)
  [KVM_CAP_XSAVE] = XLAT(KVM_CAP_XSAVE),
+ #define XLAT_VAL_49 ((unsigned) (KVM_CAP_XSAVE))
+ #define XLAT_STR_49 STRINGIFY(KVM_CAP_XSAVE)
  [KVM_CAP_XCRS] = XLAT(KVM_CAP_XCRS),
+ #define XLAT_VAL_50 ((unsigned) (KVM_CAP_XCRS))
+ #define XLAT_STR_50 STRINGIFY(KVM_CAP_XCRS)
  [KVM_CAP_PPC_GET_PVINFO] = XLAT(KVM_CAP_PPC_GET_PVINFO),
+ #define XLAT_VAL_51 ((unsigned) (KVM_CAP_PPC_GET_PVINFO))
+ #define XLAT_STR_51 STRINGIFY(KVM_CAP_PPC_GET_PVINFO)
  [KVM_CAP_PPC_IRQ_LEVEL] = XLAT(KVM_CAP_PPC_IRQ_LEVEL),
+ #define XLAT_VAL_52 ((unsigned) (KVM_CAP_PPC_IRQ_LEVEL))
+ #define XLAT_STR_52 STRINGIFY(KVM_CAP_PPC_IRQ_LEVEL)
  [KVM_CAP_ASYNC_PF] = XLAT(KVM_CAP_ASYNC_PF),
+ #define XLAT_VAL_53 ((unsigned) (KVM_CAP_ASYNC_PF))
+ #define XLAT_STR_53 STRINGIFY(KVM_CAP_ASYNC_PF)
  [KVM_CAP_TSC_CONTROL] = XLAT(KVM_CAP_TSC_CONTROL),
+ #define XLAT_VAL_54 ((unsigned) (KVM_CAP_TSC_CONTROL))
+ #define XLAT_STR_54 STRINGIFY(KVM_CAP_TSC_CONTROL)
  [KVM_CAP_GET_TSC_KHZ] = XLAT(KVM_CAP_GET_TSC_KHZ),
+ #define XLAT_VAL_55 ((unsigned) (KVM_CAP_GET_TSC_KHZ))
+ #define XLAT_STR_55 STRINGIFY(KVM_CAP_GET_TSC_KHZ)
  [KVM_CAP_PPC_BOOKE_SREGS] = XLAT(KVM_CAP_PPC_BOOKE_SREGS),
+ #define XLAT_VAL_56 ((unsigned) (KVM_CAP_PPC_BOOKE_SREGS))
+ #define XLAT_STR_56 STRINGIFY(KVM_CAP_PPC_BOOKE_SREGS)
  [KVM_CAP_SPAPR_TCE] = XLAT(KVM_CAP_SPAPR_TCE),
+ #define XLAT_VAL_57 ((unsigned) (KVM_CAP_SPAPR_TCE))
+ #define XLAT_STR_57 STRINGIFY(KVM_CAP_SPAPR_TCE)
  [KVM_CAP_PPC_SMT] = XLAT(KVM_CAP_PPC_SMT),
+ #define XLAT_VAL_58 ((unsigned) (KVM_CAP_PPC_SMT))
+ #define XLAT_STR_58 STRINGIFY(KVM_CAP_PPC_SMT)
  [KVM_CAP_PPC_RMA] = XLAT(KVM_CAP_PPC_RMA),
+ #define XLAT_VAL_59 ((unsigned) (KVM_CAP_PPC_RMA))
+ #define XLAT_STR_59 STRINGIFY(KVM_CAP_PPC_RMA)
  [KVM_CAP_MAX_VCPUS] = XLAT(KVM_CAP_MAX_VCPUS),
+ #define XLAT_VAL_60 ((unsigned) (KVM_CAP_MAX_VCPUS))
+ #define XLAT_STR_60 STRINGIFY(KVM_CAP_MAX_VCPUS)
  [KVM_CAP_PPC_HIOR] = XLAT(KVM_CAP_PPC_HIOR),
+ #define XLAT_VAL_61 ((unsigned) (KVM_CAP_PPC_HIOR))
+ #define XLAT_STR_61 STRINGIFY(KVM_CAP_PPC_HIOR)
  [KVM_CAP_PPC_PAPR] = XLAT(KVM_CAP_PPC_PAPR),
+ #define XLAT_VAL_62 ((unsigned) (KVM_CAP_PPC_PAPR))
+ #define XLAT_STR_62 STRINGIFY(KVM_CAP_PPC_PAPR)
  [KVM_CAP_SW_TLB] = XLAT(KVM_CAP_SW_TLB),
+ #define XLAT_VAL_63 ((unsigned) (KVM_CAP_SW_TLB))
+ #define XLAT_STR_63 STRINGIFY(KVM_CAP_SW_TLB)
  [KVM_CAP_ONE_REG] = XLAT(KVM_CAP_ONE_REG),
+ #define XLAT_VAL_64 ((unsigned) (KVM_CAP_ONE_REG))
+ #define XLAT_STR_64 STRINGIFY(KVM_CAP_ONE_REG)
  [KVM_CAP_S390_GMAP] = XLAT(KVM_CAP_S390_GMAP),
+ #define XLAT_VAL_65 ((unsigned) (KVM_CAP_S390_GMAP))
+ #define XLAT_STR_65 STRINGIFY(KVM_CAP_S390_GMAP)
  [KVM_CAP_TSC_DEADLINE_TIMER] = XLAT(KVM_CAP_TSC_DEADLINE_TIMER),
+ #define XLAT_VAL_66 ((unsigned) (KVM_CAP_TSC_DEADLINE_TIMER))
+ #define XLAT_STR_66 STRINGIFY(KVM_CAP_TSC_DEADLINE_TIMER)
  [KVM_CAP_S390_UCONTROL] = XLAT(KVM_CAP_S390_UCONTROL),
+ #define XLAT_VAL_67 ((unsigned) (KVM_CAP_S390_UCONTROL))
+ #define XLAT_STR_67 STRINGIFY(KVM_CAP_S390_UCONTROL)
  [KVM_CAP_SYNC_REGS] = XLAT(KVM_CAP_SYNC_REGS),
+ #define XLAT_VAL_68 ((unsigned) (KVM_CAP_SYNC_REGS))
+ #define XLAT_STR_68 STRINGIFY(KVM_CAP_SYNC_REGS)
  [KVM_CAP_PCI_2_3] = XLAT(KVM_CAP_PCI_2_3),
+ #define XLAT_VAL_69 ((unsigned) (KVM_CAP_PCI_2_3))
+ #define XLAT_STR_69 STRINGIFY(KVM_CAP_PCI_2_3)
  [KVM_CAP_KVMCLOCK_CTRL] = XLAT(KVM_CAP_KVMCLOCK_CTRL),
+ #define XLAT_VAL_70 ((unsigned) (KVM_CAP_KVMCLOCK_CTRL))
+ #define XLAT_STR_70 STRINGIFY(KVM_CAP_KVMCLOCK_CTRL)
  [KVM_CAP_SIGNAL_MSI] = XLAT(KVM_CAP_SIGNAL_MSI),
+ #define XLAT_VAL_71 ((unsigned) (KVM_CAP_SIGNAL_MSI))
+ #define XLAT_STR_71 STRINGIFY(KVM_CAP_SIGNAL_MSI)
  [KVM_CAP_PPC_GET_SMMU_INFO] = XLAT(KVM_CAP_PPC_GET_SMMU_INFO),
+ #define XLAT_VAL_72 ((unsigned) (KVM_CAP_PPC_GET_SMMU_INFO))
+ #define XLAT_STR_72 STRINGIFY(KVM_CAP_PPC_GET_SMMU_INFO)
  [KVM_CAP_S390_COW] = XLAT(KVM_CAP_S390_COW),
+ #define XLAT_VAL_73 ((unsigned) (KVM_CAP_S390_COW))
+ #define XLAT_STR_73 STRINGIFY(KVM_CAP_S390_COW)
  [KVM_CAP_PPC_ALLOC_HTAB] = XLAT(KVM_CAP_PPC_ALLOC_HTAB),
+ #define XLAT_VAL_74 ((unsigned) (KVM_CAP_PPC_ALLOC_HTAB))
+ #define XLAT_STR_74 STRINGIFY(KVM_CAP_PPC_ALLOC_HTAB)
  [KVM_CAP_READONLY_MEM] = XLAT(KVM_CAP_READONLY_MEM),
+ #define XLAT_VAL_75 ((unsigned) (KVM_CAP_READONLY_MEM))
+ #define XLAT_STR_75 STRINGIFY(KVM_CAP_READONLY_MEM)
  [KVM_CAP_IRQFD_RESAMPLE] = XLAT(KVM_CAP_IRQFD_RESAMPLE),
+ #define XLAT_VAL_76 ((unsigned) (KVM_CAP_IRQFD_RESAMPLE))
+ #define XLAT_STR_76 STRINGIFY(KVM_CAP_IRQFD_RESAMPLE)
  [KVM_CAP_PPC_BOOKE_WATCHDOG] = XLAT(KVM_CAP_PPC_BOOKE_WATCHDOG),
+ #define XLAT_VAL_77 ((unsigned) (KVM_CAP_PPC_BOOKE_WATCHDOG))
+ #define XLAT_STR_77 STRINGIFY(KVM_CAP_PPC_BOOKE_WATCHDOG)
  [KVM_CAP_PPC_HTAB_FD] = XLAT(KVM_CAP_PPC_HTAB_FD),
+ #define XLAT_VAL_78 ((unsigned) (KVM_CAP_PPC_HTAB_FD))
+ #define XLAT_STR_78 STRINGIFY(KVM_CAP_PPC_HTAB_FD)
  [KVM_CAP_S390_CSS_SUPPORT] = XLAT(KVM_CAP_S390_CSS_SUPPORT),
+ #define XLAT_VAL_79 ((unsigned) (KVM_CAP_S390_CSS_SUPPORT))
+ #define XLAT_STR_79 STRINGIFY(KVM_CAP_S390_CSS_SUPPORT)
  [KVM_CAP_PPC_EPR] = XLAT(KVM_CAP_PPC_EPR),
+ #define XLAT_VAL_80 ((unsigned) (KVM_CAP_PPC_EPR))
+ #define XLAT_STR_80 STRINGIFY(KVM_CAP_PPC_EPR)
  [KVM_CAP_ARM_PSCI] = XLAT(KVM_CAP_ARM_PSCI),
+ #define XLAT_VAL_81 ((unsigned) (KVM_CAP_ARM_PSCI))
+ #define XLAT_STR_81 STRINGIFY(KVM_CAP_ARM_PSCI)
  [KVM_CAP_ARM_SET_DEVICE_ADDR] = XLAT(KVM_CAP_ARM_SET_DEVICE_ADDR),
+ #define XLAT_VAL_82 ((unsigned) (KVM_CAP_ARM_SET_DEVICE_ADDR))
+ #define XLAT_STR_82 STRINGIFY(KVM_CAP_ARM_SET_DEVICE_ADDR)
  [KVM_CAP_DEVICE_CTRL] = XLAT(KVM_CAP_DEVICE_CTRL),
+ #define XLAT_VAL_83 ((unsigned) (KVM_CAP_DEVICE_CTRL))
+ #define XLAT_STR_83 STRINGIFY(KVM_CAP_DEVICE_CTRL)
  [KVM_CAP_IRQ_MPIC] = XLAT(KVM_CAP_IRQ_MPIC),
+ #define XLAT_VAL_84 ((unsigned) (KVM_CAP_IRQ_MPIC))
+ #define XLAT_STR_84 STRINGIFY(KVM_CAP_IRQ_MPIC)
  [KVM_CAP_PPC_RTAS] = XLAT(KVM_CAP_PPC_RTAS),
+ #define XLAT_VAL_85 ((unsigned) (KVM_CAP_PPC_RTAS))
+ #define XLAT_STR_85 STRINGIFY(KVM_CAP_PPC_RTAS)
  [KVM_CAP_IRQ_XICS] = XLAT(KVM_CAP_IRQ_XICS),
+ #define XLAT_VAL_86 ((unsigned) (KVM_CAP_IRQ_XICS))
+ #define XLAT_STR_86 STRINGIFY(KVM_CAP_IRQ_XICS)
  [KVM_CAP_ARM_EL1_32BIT] = XLAT(KVM_CAP_ARM_EL1_32BIT),
+ #define XLAT_VAL_87 ((unsigned) (KVM_CAP_ARM_EL1_32BIT))
+ #define XLAT_STR_87 STRINGIFY(KVM_CAP_ARM_EL1_32BIT)
  [KVM_CAP_SPAPR_MULTITCE] = XLAT(KVM_CAP_SPAPR_MULTITCE),
+ #define XLAT_VAL_88 ((unsigned) (KVM_CAP_SPAPR_MULTITCE))
+ #define XLAT_STR_88 STRINGIFY(KVM_CAP_SPAPR_MULTITCE)
  [KVM_CAP_EXT_EMUL_CPUID] = XLAT(KVM_CAP_EXT_EMUL_CPUID),
+ #define XLAT_VAL_89 ((unsigned) (KVM_CAP_EXT_EMUL_CPUID))
+ #define XLAT_STR_89 STRINGIFY(KVM_CAP_EXT_EMUL_CPUID)
  [KVM_CAP_HYPERV_TIME] = XLAT(KVM_CAP_HYPERV_TIME),
+ #define XLAT_VAL_90 ((unsigned) (KVM_CAP_HYPERV_TIME))
+ #define XLAT_STR_90 STRINGIFY(KVM_CAP_HYPERV_TIME)
  [KVM_CAP_IOAPIC_POLARITY_IGNORED] = XLAT(KVM_CAP_IOAPIC_POLARITY_IGNORED),
+ #define XLAT_VAL_91 ((unsigned) (KVM_CAP_IOAPIC_POLARITY_IGNORED))
+ #define XLAT_STR_91 STRINGIFY(KVM_CAP_IOAPIC_POLARITY_IGNORED)
  [KVM_CAP_ENABLE_CAP_VM] = XLAT(KVM_CAP_ENABLE_CAP_VM),
+ #define XLAT_VAL_92 ((unsigned) (KVM_CAP_ENABLE_CAP_VM))
+ #define XLAT_STR_92 STRINGIFY(KVM_CAP_ENABLE_CAP_VM)
  [KVM_CAP_S390_IRQCHIP] = XLAT(KVM_CAP_S390_IRQCHIP),
+ #define XLAT_VAL_93 ((unsigned) (KVM_CAP_S390_IRQCHIP))
+ #define XLAT_STR_93 STRINGIFY(KVM_CAP_S390_IRQCHIP)
  [KVM_CAP_IOEVENTFD_NO_LENGTH] = XLAT(KVM_CAP_IOEVENTFD_NO_LENGTH),
+ #define XLAT_VAL_94 ((unsigned) (KVM_CAP_IOEVENTFD_NO_LENGTH))
+ #define XLAT_STR_94 STRINGIFY(KVM_CAP_IOEVENTFD_NO_LENGTH)
  [KVM_CAP_VM_ATTRIBUTES] = XLAT(KVM_CAP_VM_ATTRIBUTES),
+ #define XLAT_VAL_95 ((unsigned) (KVM_CAP_VM_ATTRIBUTES))
+ #define XLAT_STR_95 STRINGIFY(KVM_CAP_VM_ATTRIBUTES)
  [KVM_CAP_ARM_PSCI_0_2] = XLAT(KVM_CAP_ARM_PSCI_0_2),
+ #define XLAT_VAL_96 ((unsigned) (KVM_CAP_ARM_PSCI_0_2))
+ #define XLAT_STR_96 STRINGIFY(KVM_CAP_ARM_PSCI_0_2)
  [KVM_CAP_PPC_FIXUP_HCALL] = XLAT(KVM_CAP_PPC_FIXUP_HCALL),
+ #define XLAT_VAL_97 ((unsigned) (KVM_CAP_PPC_FIXUP_HCALL))
+ #define XLAT_STR_97 STRINGIFY(KVM_CAP_PPC_FIXUP_HCALL)
  [KVM_CAP_PPC_ENABLE_HCALL] = XLAT(KVM_CAP_PPC_ENABLE_HCALL),
+ #define XLAT_VAL_98 ((unsigned) (KVM_CAP_PPC_ENABLE_HCALL))
+ #define XLAT_STR_98 STRINGIFY(KVM_CAP_PPC_ENABLE_HCALL)
  [KVM_CAP_CHECK_EXTENSION_VM] = XLAT(KVM_CAP_CHECK_EXTENSION_VM),
+ #define XLAT_VAL_99 ((unsigned) (KVM_CAP_CHECK_EXTENSION_VM))
+ #define XLAT_STR_99 STRINGIFY(KVM_CAP_CHECK_EXTENSION_VM)
  [KVM_CAP_S390_USER_SIGP] = XLAT(KVM_CAP_S390_USER_SIGP),
+ #define XLAT_VAL_100 ((unsigned) (KVM_CAP_S390_USER_SIGP))
+ #define XLAT_STR_100 STRINGIFY(KVM_CAP_S390_USER_SIGP)
  [KVM_CAP_S390_VECTOR_REGISTERS] = XLAT(KVM_CAP_S390_VECTOR_REGISTERS),
+ #define XLAT_VAL_101 ((unsigned) (KVM_CAP_S390_VECTOR_REGISTERS))
+ #define XLAT_STR_101 STRINGIFY(KVM_CAP_S390_VECTOR_REGISTERS)
  [KVM_CAP_S390_MEM_OP] = XLAT(KVM_CAP_S390_MEM_OP),
+ #define XLAT_VAL_102 ((unsigned) (KVM_CAP_S390_MEM_OP))
+ #define XLAT_STR_102 STRINGIFY(KVM_CAP_S390_MEM_OP)
  [KVM_CAP_S390_USER_STSI] = XLAT(KVM_CAP_S390_USER_STSI),
+ #define XLAT_VAL_103 ((unsigned) (KVM_CAP_S390_USER_STSI))
+ #define XLAT_STR_103 STRINGIFY(KVM_CAP_S390_USER_STSI)
  [KVM_CAP_S390_SKEYS] = XLAT(KVM_CAP_S390_SKEYS),
+ #define XLAT_VAL_104 ((unsigned) (KVM_CAP_S390_SKEYS))
+ #define XLAT_STR_104 STRINGIFY(KVM_CAP_S390_SKEYS)
  [KVM_CAP_MIPS_FPU] = XLAT(KVM_CAP_MIPS_FPU),
+ #define XLAT_VAL_105 ((unsigned) (KVM_CAP_MIPS_FPU))
+ #define XLAT_STR_105 STRINGIFY(KVM_CAP_MIPS_FPU)
  [KVM_CAP_MIPS_MSA] = XLAT(KVM_CAP_MIPS_MSA),
+ #define XLAT_VAL_106 ((unsigned) (KVM_CAP_MIPS_MSA))
+ #define XLAT_STR_106 STRINGIFY(KVM_CAP_MIPS_MSA)
  [KVM_CAP_S390_INJECT_IRQ] = XLAT(KVM_CAP_S390_INJECT_IRQ),
+ #define XLAT_VAL_107 ((unsigned) (KVM_CAP_S390_INJECT_IRQ))
+ #define XLAT_STR_107 STRINGIFY(KVM_CAP_S390_INJECT_IRQ)
  [KVM_CAP_S390_IRQ_STATE] = XLAT(KVM_CAP_S390_IRQ_STATE),
+ #define XLAT_VAL_108 ((unsigned) (KVM_CAP_S390_IRQ_STATE))
+ #define XLAT_STR_108 STRINGIFY(KVM_CAP_S390_IRQ_STATE)
  [KVM_CAP_PPC_HWRNG] = XLAT(KVM_CAP_PPC_HWRNG),
+ #define XLAT_VAL_109 ((unsigned) (KVM_CAP_PPC_HWRNG))
+ #define XLAT_STR_109 STRINGIFY(KVM_CAP_PPC_HWRNG)
  [KVM_CAP_DISABLE_QUIRKS] = XLAT(KVM_CAP_DISABLE_QUIRKS),
+ #define XLAT_VAL_110 ((unsigned) (KVM_CAP_DISABLE_QUIRKS))
+ #define XLAT_STR_110 STRINGIFY(KVM_CAP_DISABLE_QUIRKS)
  [KVM_CAP_X86_SMM] = XLAT(KVM_CAP_X86_SMM),
+ #define XLAT_VAL_111 ((unsigned) (KVM_CAP_X86_SMM))
+ #define XLAT_STR_111 STRINGIFY(KVM_CAP_X86_SMM)
  [KVM_CAP_MULTI_ADDRESS_SPACE] = XLAT(KVM_CAP_MULTI_ADDRESS_SPACE),
+ #define XLAT_VAL_112 ((unsigned) (KVM_CAP_MULTI_ADDRESS_SPACE))
+ #define XLAT_STR_112 STRINGIFY(KVM_CAP_MULTI_ADDRESS_SPACE)
  [KVM_CAP_GUEST_DEBUG_HW_BPS] = XLAT(KVM_CAP_GUEST_DEBUG_HW_BPS),
+ #define XLAT_VAL_113 ((unsigned) (KVM_CAP_GUEST_DEBUG_HW_BPS))
+ #define XLAT_STR_113 STRINGIFY(KVM_CAP_GUEST_DEBUG_HW_BPS)
  [KVM_CAP_GUEST_DEBUG_HW_WPS] = XLAT(KVM_CAP_GUEST_DEBUG_HW_WPS),
+ #define XLAT_VAL_114 ((unsigned) (KVM_CAP_GUEST_DEBUG_HW_WPS))
+ #define XLAT_STR_114 STRINGIFY(KVM_CAP_GUEST_DEBUG_HW_WPS)
  [KVM_CAP_SPLIT_IRQCHIP] = XLAT(KVM_CAP_SPLIT_IRQCHIP),
+ #define XLAT_VAL_115 ((unsigned) (KVM_CAP_SPLIT_IRQCHIP))
+ #define XLAT_STR_115 STRINGIFY(KVM_CAP_SPLIT_IRQCHIP)
  [KVM_CAP_IOEVENTFD_ANY_LENGTH] = XLAT(KVM_CAP_IOEVENTFD_ANY_LENGTH),
+ #define XLAT_VAL_116 ((unsigned) (KVM_CAP_IOEVENTFD_ANY_LENGTH))
+ #define XLAT_STR_116 STRINGIFY(KVM_CAP_IOEVENTFD_ANY_LENGTH)
  [KVM_CAP_HYPERV_SYNIC] = XLAT(KVM_CAP_HYPERV_SYNIC),
+ #define XLAT_VAL_117 ((unsigned) (KVM_CAP_HYPERV_SYNIC))
+ #define XLAT_STR_117 STRINGIFY(KVM_CAP_HYPERV_SYNIC)
  [KVM_CAP_S390_RI] = XLAT(KVM_CAP_S390_RI),
+ #define XLAT_VAL_118 ((unsigned) (KVM_CAP_S390_RI))
+ #define XLAT_STR_118 STRINGIFY(KVM_CAP_S390_RI)
  [KVM_CAP_SPAPR_TCE_64] = XLAT(KVM_CAP_SPAPR_TCE_64),
+ #define XLAT_VAL_119 ((unsigned) (KVM_CAP_SPAPR_TCE_64))
+ #define XLAT_STR_119 STRINGIFY(KVM_CAP_SPAPR_TCE_64)
  [KVM_CAP_ARM_PMU_V3] = XLAT(KVM_CAP_ARM_PMU_V3),
+ #define XLAT_VAL_120 ((unsigned) (KVM_CAP_ARM_PMU_V3))
+ #define XLAT_STR_120 STRINGIFY(KVM_CAP_ARM_PMU_V3)
  [KVM_CAP_VCPU_ATTRIBUTES] = XLAT(KVM_CAP_VCPU_ATTRIBUTES),
+ #define XLAT_VAL_121 ((unsigned) (KVM_CAP_VCPU_ATTRIBUTES))
+ #define XLAT_STR_121 STRINGIFY(KVM_CAP_VCPU_ATTRIBUTES)
  [KVM_CAP_MAX_VCPU_ID] = XLAT(KVM_CAP_MAX_VCPU_ID),
+ #define XLAT_VAL_122 ((unsigned) (KVM_CAP_MAX_VCPU_ID))
+ #define XLAT_STR_122 STRINGIFY(KVM_CAP_MAX_VCPU_ID)
  [KVM_CAP_X2APIC_API] = XLAT(KVM_CAP_X2APIC_API),
+ #define XLAT_VAL_123 ((unsigned) (KVM_CAP_X2APIC_API))
+ #define XLAT_STR_123 STRINGIFY(KVM_CAP_X2APIC_API)
  [KVM_CAP_S390_USER_INSTR0] = XLAT(KVM_CAP_S390_USER_INSTR0),
+ #define XLAT_VAL_124 ((unsigned) (KVM_CAP_S390_USER_INSTR0))
+ #define XLAT_STR_124 STRINGIFY(KVM_CAP_S390_USER_INSTR0)
  [KVM_CAP_MSI_DEVID] = XLAT(KVM_CAP_MSI_DEVID),
+ #define XLAT_VAL_125 ((unsigned) (KVM_CAP_MSI_DEVID))
+ #define XLAT_STR_125 STRINGIFY(KVM_CAP_MSI_DEVID)
  [KVM_CAP_PPC_HTM] = XLAT(KVM_CAP_PPC_HTM),
+ #define XLAT_VAL_126 ((unsigned) (KVM_CAP_PPC_HTM))
+ #define XLAT_STR_126 STRINGIFY(KVM_CAP_PPC_HTM)
  [KVM_CAP_SPAPR_RESIZE_HPT] = XLAT(KVM_CAP_SPAPR_RESIZE_HPT),
+ #define XLAT_VAL_127 ((unsigned) (KVM_CAP_SPAPR_RESIZE_HPT))
+ #define XLAT_STR_127 STRINGIFY(KVM_CAP_SPAPR_RESIZE_HPT)
  [KVM_CAP_PPC_MMU_RADIX] = XLAT(KVM_CAP_PPC_MMU_RADIX),
+ #define XLAT_VAL_128 ((unsigned) (KVM_CAP_PPC_MMU_RADIX))
+ #define XLAT_STR_128 STRINGIFY(KVM_CAP_PPC_MMU_RADIX)
  [KVM_CAP_PPC_MMU_HASH_V3] = XLAT(KVM_CAP_PPC_MMU_HASH_V3),
+ #define XLAT_VAL_129 ((unsigned) (KVM_CAP_PPC_MMU_HASH_V3))
+ #define XLAT_STR_129 STRINGIFY(KVM_CAP_PPC_MMU_HASH_V3)
  [KVM_CAP_IMMEDIATE_EXIT] = XLAT(KVM_CAP_IMMEDIATE_EXIT),
+ #define XLAT_VAL_130 ((unsigned) (KVM_CAP_IMMEDIATE_EXIT))
+ #define XLAT_STR_130 STRINGIFY(KVM_CAP_IMMEDIATE_EXIT)
  [KVM_CAP_MIPS_VZ] = XLAT(KVM_CAP_MIPS_VZ),
+ #define XLAT_VAL_131 ((unsigned) (KVM_CAP_MIPS_VZ))
+ #define XLAT_STR_131 STRINGIFY(KVM_CAP_MIPS_VZ)
  [KVM_CAP_MIPS_TE] = XLAT(KVM_CAP_MIPS_TE),
+ #define XLAT_VAL_132 ((unsigned) (KVM_CAP_MIPS_TE))
+ #define XLAT_STR_132 STRINGIFY(KVM_CAP_MIPS_TE)
  [KVM_CAP_MIPS_64BIT] = XLAT(KVM_CAP_MIPS_64BIT),
+ #define XLAT_VAL_133 ((unsigned) (KVM_CAP_MIPS_64BIT))
+ #define XLAT_STR_133 STRINGIFY(KVM_CAP_MIPS_64BIT)
  [KVM_CAP_S390_GS] = XLAT(KVM_CAP_S390_GS),
+ #define XLAT_VAL_134 ((unsigned) (KVM_CAP_S390_GS))
+ #define XLAT_STR_134 STRINGIFY(KVM_CAP_S390_GS)
  [KVM_CAP_S390_AIS] = XLAT(KVM_CAP_S390_AIS),
+ #define XLAT_VAL_135 ((unsigned) (KVM_CAP_S390_AIS))
+ #define XLAT_STR_135 STRINGIFY(KVM_CAP_S390_AIS)
  [KVM_CAP_SPAPR_TCE_VFIO] = XLAT(KVM_CAP_SPAPR_TCE_VFIO),
+ #define XLAT_VAL_136 ((unsigned) (KVM_CAP_SPAPR_TCE_VFIO))
+ #define XLAT_STR_136 STRINGIFY(KVM_CAP_SPAPR_TCE_VFIO)
  [KVM_CAP_X86_DISABLE_EXITS] = XLAT(KVM_CAP_X86_DISABLE_EXITS),
+ #define XLAT_VAL_137 ((unsigned) (KVM_CAP_X86_DISABLE_EXITS))
+ #define XLAT_STR_137 STRINGIFY(KVM_CAP_X86_DISABLE_EXITS)
  [KVM_CAP_ARM_USER_IRQ] = XLAT(KVM_CAP_ARM_USER_IRQ),
+ #define XLAT_VAL_138 ((unsigned) (KVM_CAP_ARM_USER_IRQ))
+ #define XLAT_STR_138 STRINGIFY(KVM_CAP_ARM_USER_IRQ)
  [KVM_CAP_S390_CMMA_MIGRATION] = XLAT(KVM_CAP_S390_CMMA_MIGRATION),
+ #define XLAT_VAL_139 ((unsigned) (KVM_CAP_S390_CMMA_MIGRATION))
+ #define XLAT_STR_139 STRINGIFY(KVM_CAP_S390_CMMA_MIGRATION)
  [KVM_CAP_PPC_FWNMI] = XLAT(KVM_CAP_PPC_FWNMI),
+ #define XLAT_VAL_140 ((unsigned) (KVM_CAP_PPC_FWNMI))
+ #define XLAT_STR_140 STRINGIFY(KVM_CAP_PPC_FWNMI)
  [KVM_CAP_PPC_SMT_POSSIBLE] = XLAT(KVM_CAP_PPC_SMT_POSSIBLE),
+ #define XLAT_VAL_141 ((unsigned) (KVM_CAP_PPC_SMT_POSSIBLE))
+ #define XLAT_STR_141 STRINGIFY(KVM_CAP_PPC_SMT_POSSIBLE)
  [KVM_CAP_HYPERV_SYNIC2] = XLAT(KVM_CAP_HYPERV_SYNIC2),
+ #define XLAT_VAL_142 ((unsigned) (KVM_CAP_HYPERV_SYNIC2))
+ #define XLAT_STR_142 STRINGIFY(KVM_CAP_HYPERV_SYNIC2)
  [KVM_CAP_HYPERV_VP_INDEX] = XLAT(KVM_CAP_HYPERV_VP_INDEX),
+ #define XLAT_VAL_143 ((unsigned) (KVM_CAP_HYPERV_VP_INDEX))
+ #define XLAT_STR_143 STRINGIFY(KVM_CAP_HYPERV_VP_INDEX)
  [KVM_CAP_S390_AIS_MIGRATION] = XLAT(KVM_CAP_S390_AIS_MIGRATION),
+ #define XLAT_VAL_144 ((unsigned) (KVM_CAP_S390_AIS_MIGRATION))
+ #define XLAT_STR_144 STRINGIFY(KVM_CAP_S390_AIS_MIGRATION)
  [KVM_CAP_PPC_GET_CPU_CHAR] = XLAT(KVM_CAP_PPC_GET_CPU_CHAR),
+ #define XLAT_VAL_145 ((unsigned) (KVM_CAP_PPC_GET_CPU_CHAR))
+ #define XLAT_STR_145 STRINGIFY(KVM_CAP_PPC_GET_CPU_CHAR)
  [KVM_CAP_S390_BPB] = XLAT(KVM_CAP_S390_BPB),
+ #define XLAT_VAL_146 ((unsigned) (KVM_CAP_S390_BPB))
+ #define XLAT_STR_146 STRINGIFY(KVM_CAP_S390_BPB)
  [KVM_CAP_GET_MSR_FEATURES] = XLAT(KVM_CAP_GET_MSR_FEATURES),
+ #define XLAT_VAL_147 ((unsigned) (KVM_CAP_GET_MSR_FEATURES))
+ #define XLAT_STR_147 STRINGIFY(KVM_CAP_GET_MSR_FEATURES)
  [KVM_CAP_HYPERV_EVENTFD] = XLAT(KVM_CAP_HYPERV_EVENTFD),
+ #define XLAT_VAL_148 ((unsigned) (KVM_CAP_HYPERV_EVENTFD))
+ #define XLAT_STR_148 STRINGIFY(KVM_CAP_HYPERV_EVENTFD)
  [KVM_CAP_HYPERV_TLBFLUSH] = XLAT(KVM_CAP_HYPERV_TLBFLUSH),
+ #define XLAT_VAL_149 ((unsigned) (KVM_CAP_HYPERV_TLBFLUSH))
+ #define XLAT_STR_149 STRINGIFY(KVM_CAP_HYPERV_TLBFLUSH)
  [KVM_CAP_S390_HPAGE_1M] = XLAT(KVM_CAP_S390_HPAGE_1M),
+ #define XLAT_VAL_150 ((unsigned) (KVM_CAP_S390_HPAGE_1M))
+ #define XLAT_STR_150 STRINGIFY(KVM_CAP_S390_HPAGE_1M)
  [KVM_CAP_NESTED_STATE] = XLAT(KVM_CAP_NESTED_STATE),
+ #define XLAT_VAL_151 ((unsigned) (KVM_CAP_NESTED_STATE))
+ #define XLAT_STR_151 STRINGIFY(KVM_CAP_NESTED_STATE)
  [KVM_CAP_ARM_INJECT_SERROR_ESR] = XLAT(KVM_CAP_ARM_INJECT_SERROR_ESR),
+ #define XLAT_VAL_152 ((unsigned) (KVM_CAP_ARM_INJECT_SERROR_ESR))
+ #define XLAT_STR_152 STRINGIFY(KVM_CAP_ARM_INJECT_SERROR_ESR)
  [KVM_CAP_MSR_PLATFORM_INFO] = XLAT(KVM_CAP_MSR_PLATFORM_INFO),
+ #define XLAT_VAL_153 ((unsigned) (KVM_CAP_MSR_PLATFORM_INFO))
+ #define XLAT_STR_153 STRINGIFY(KVM_CAP_MSR_PLATFORM_INFO)
  [KVM_CAP_PPC_NESTED_HV] = XLAT(KVM_CAP_PPC_NESTED_HV),
+ #define XLAT_VAL_154 ((unsigned) (KVM_CAP_PPC_NESTED_HV))
+ #define XLAT_STR_154 STRINGIFY(KVM_CAP_PPC_NESTED_HV)
  [KVM_CAP_HYPERV_SEND_IPI] = XLAT(KVM_CAP_HYPERV_SEND_IPI),
+ #define XLAT_VAL_155 ((unsigned) (KVM_CAP_HYPERV_SEND_IPI))
+ #define XLAT_STR_155 STRINGIFY(KVM_CAP_HYPERV_SEND_IPI)
  [KVM_CAP_COALESCED_PIO] = XLAT(KVM_CAP_COALESCED_PIO),
+ #define XLAT_VAL_156 ((unsigned) (KVM_CAP_COALESCED_PIO))
+ #define XLAT_STR_156 STRINGIFY(KVM_CAP_COALESCED_PIO)
  [KVM_CAP_HYPERV_ENLIGHTENED_VMCS] = XLAT(KVM_CAP_HYPERV_ENLIGHTENED_VMCS),
+ #define XLAT_VAL_157 ((unsigned) (KVM_CAP_HYPERV_ENLIGHTENED_VMCS))
+ #define XLAT_STR_157 STRINGIFY(KVM_CAP_HYPERV_ENLIGHTENED_VMCS)
  [KVM_CAP_EXCEPTION_PAYLOAD] = XLAT(KVM_CAP_EXCEPTION_PAYLOAD),
+ #define XLAT_VAL_158 ((unsigned) (KVM_CAP_EXCEPTION_PAYLOAD))
+ #define XLAT_STR_158 STRINGIFY(KVM_CAP_EXCEPTION_PAYLOAD)
  [KVM_CAP_ARM_VM_IPA_SIZE] = XLAT(KVM_CAP_ARM_VM_IPA_SIZE),
+ #define XLAT_VAL_159 ((unsigned) (KVM_CAP_ARM_VM_IPA_SIZE))
+ #define XLAT_STR_159 STRINGIFY(KVM_CAP_ARM_VM_IPA_SIZE)
  [KVM_CAP_MANUAL_DIRTY_LOG_PROTECT] = XLAT(KVM_CAP_MANUAL_DIRTY_LOG_PROTECT),
+ #define XLAT_VAL_160 ((unsigned) (KVM_CAP_MANUAL_DIRTY_LOG_PROTECT))
+ #define XLAT_STR_160 STRINGIFY(KVM_CAP_MANUAL_DIRTY_LOG_PROTECT)
  [KVM_CAP_HYPERV_CPUID] = XLAT(KVM_CAP_HYPERV_CPUID),
- XLAT_END
+ #define XLAT_VAL_161 ((unsigned) (KVM_CAP_HYPERV_CPUID))
+ #define XLAT_STR_161 STRINGIFY(KVM_CAP_HYPERV_CPUID)
+ [KVM_CAP_MANUAL_DIRTY_LOG_PROTECT2] = XLAT(KVM_CAP_MANUAL_DIRTY_LOG_PROTECT2),
+ #define XLAT_VAL_162 ((unsigned) (KVM_CAP_MANUAL_DIRTY_LOG_PROTECT2))
+ #define XLAT_STR_162 STRINGIFY(KVM_CAP_MANUAL_DIRTY_LOG_PROTECT2)
+ [KVM_CAP_PPC_IRQ_XIVE] = XLAT(KVM_CAP_PPC_IRQ_XIVE),
+ #define XLAT_VAL_163 ((unsigned) (KVM_CAP_PPC_IRQ_XIVE))
+ #define XLAT_STR_163 STRINGIFY(KVM_CAP_PPC_IRQ_XIVE)
+ [KVM_CAP_ARM_SVE] = XLAT(KVM_CAP_ARM_SVE),
+ #define XLAT_VAL_164 ((unsigned) (KVM_CAP_ARM_SVE))
+ #define XLAT_STR_164 STRINGIFY(KVM_CAP_ARM_SVE)
+ [KVM_CAP_ARM_PTRAUTH_ADDRESS] = XLAT(KVM_CAP_ARM_PTRAUTH_ADDRESS),
+ #define XLAT_VAL_165 ((unsigned) (KVM_CAP_ARM_PTRAUTH_ADDRESS))
+ #define XLAT_STR_165 STRINGIFY(KVM_CAP_ARM_PTRAUTH_ADDRESS)
+ [KVM_CAP_ARM_PTRAUTH_GENERIC] = XLAT(KVM_CAP_ARM_PTRAUTH_GENERIC),
+ #define XLAT_VAL_166 ((unsigned) (KVM_CAP_ARM_PTRAUTH_GENERIC))
+ #define XLAT_STR_166 STRINGIFY(KVM_CAP_ARM_PTRAUTH_GENERIC)
+ [KVM_CAP_PMU_EVENT_FILTER] = XLAT(KVM_CAP_PMU_EVENT_FILTER),
+ #define XLAT_VAL_167 ((unsigned) (KVM_CAP_PMU_EVENT_FILTER))
+ #define XLAT_STR_167 STRINGIFY(KVM_CAP_PMU_EVENT_FILTER)
+ [KVM_CAP_ARM_IRQ_LINE_LAYOUT_2] = XLAT(KVM_CAP_ARM_IRQ_LINE_LAYOUT_2),
+ #define XLAT_VAL_168 ((unsigned) (KVM_CAP_ARM_IRQ_LINE_LAYOUT_2))
+ #define XLAT_STR_168 STRINGIFY(KVM_CAP_ARM_IRQ_LINE_LAYOUT_2)
+ [KVM_CAP_HYPERV_DIRECT_TLBFLUSH] = XLAT(KVM_CAP_HYPERV_DIRECT_TLBFLUSH),
+ #define XLAT_VAL_169 ((unsigned) (KVM_CAP_HYPERV_DIRECT_TLBFLUSH))
+ #define XLAT_STR_169 STRINGIFY(KVM_CAP_HYPERV_DIRECT_TLBFLUSH)
+ [KVM_CAP_PPC_GUEST_DEBUG_SSTEP] = XLAT(KVM_CAP_PPC_GUEST_DEBUG_SSTEP),
+ #define XLAT_VAL_170 ((unsigned) (KVM_CAP_PPC_GUEST_DEBUG_SSTEP))
+ #define XLAT_STR_170 STRINGIFY(KVM_CAP_PPC_GUEST_DEBUG_SSTEP)
+ [KVM_CAP_ARM_NISV_TO_USER] = XLAT(KVM_CAP_ARM_NISV_TO_USER),
+ #define XLAT_VAL_171 ((unsigned) (KVM_CAP_ARM_NISV_TO_USER))
+ #define XLAT_STR_171 STRINGIFY(KVM_CAP_ARM_NISV_TO_USER)
+ [KVM_CAP_ARM_INJECT_EXT_DABT] = XLAT(KVM_CAP_ARM_INJECT_EXT_DABT),
+ #define XLAT_VAL_172 ((unsigned) (KVM_CAP_ARM_INJECT_EXT_DABT))
+ #define XLAT_STR_172 STRINGIFY(KVM_CAP_ARM_INJECT_EXT_DABT)
+ [KVM_CAP_S390_VCPU_RESETS] = XLAT(KVM_CAP_S390_VCPU_RESETS),
+ #define XLAT_VAL_173 ((unsigned) (KVM_CAP_S390_VCPU_RESETS))
+ #define XLAT_STR_173 STRINGIFY(KVM_CAP_S390_VCPU_RESETS)
+ [KVM_CAP_S390_PROTECTED] = XLAT(KVM_CAP_S390_PROTECTED),
+ #define XLAT_VAL_174 ((unsigned) (KVM_CAP_S390_PROTECTED))
+ #define XLAT_STR_174 STRINGIFY(KVM_CAP_S390_PROTECTED)
+ [KVM_CAP_PPC_SECURE_GUEST] = XLAT(KVM_CAP_PPC_SECURE_GUEST),
+ #define XLAT_VAL_175 ((unsigned) (KVM_CAP_PPC_SECURE_GUEST))
+ #define XLAT_STR_175 STRINGIFY(KVM_CAP_PPC_SECURE_GUEST)
+ [KVM_CAP_HALT_POLL] = XLAT(KVM_CAP_HALT_POLL),
+ #define XLAT_VAL_176 ((unsigned) (KVM_CAP_HALT_POLL))
+ #define XLAT_STR_176 STRINGIFY(KVM_CAP_HALT_POLL)
+ [KVM_CAP_ASYNC_PF_INT] = XLAT(KVM_CAP_ASYNC_PF_INT),
+ #define XLAT_VAL_177 ((unsigned) (KVM_CAP_ASYNC_PF_INT))
+ #define XLAT_STR_177 STRINGIFY(KVM_CAP_ASYNC_PF_INT)
+ [KVM_CAP_LAST_CPU] = XLAT(KVM_CAP_LAST_CPU),
+ #define XLAT_VAL_178 ((unsigned) (KVM_CAP_LAST_CPU))
+ #define XLAT_STR_178 STRINGIFY(KVM_CAP_LAST_CPU)
+ [KVM_CAP_SMALLER_MAXPHYADDR] = XLAT(KVM_CAP_SMALLER_MAXPHYADDR),
+ #define XLAT_VAL_179 ((unsigned) (KVM_CAP_SMALLER_MAXPHYADDR))
+ #define XLAT_STR_179 STRINGIFY(KVM_CAP_SMALLER_MAXPHYADDR)
+ [KVM_CAP_S390_DIAG318] = XLAT(KVM_CAP_S390_DIAG318),
+ #define XLAT_VAL_180 ((unsigned) (KVM_CAP_S390_DIAG318))
+ #define XLAT_STR_180 STRINGIFY(KVM_CAP_S390_DIAG318)
+ [KVM_CAP_STEAL_TIME] = XLAT(KVM_CAP_STEAL_TIME),
+ #define XLAT_VAL_181 ((unsigned) (KVM_CAP_STEAL_TIME))
+ #define XLAT_STR_181 STRINGIFY(KVM_CAP_STEAL_TIME)
 };
+static
+const struct xlat kvm_cap[1] = { {
+ .data = kvm_cap_xdata,
+ .size = ARRAY_SIZE(kvm_cap_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+#  ifdef XLAT_VAL_30
+  | XLAT_VAL_30
+#  endif
+#  ifdef XLAT_VAL_31
+  | XLAT_VAL_31
+#  endif
+#  ifdef XLAT_VAL_32
+  | XLAT_VAL_32
+#  endif
+#  ifdef XLAT_VAL_33
+  | XLAT_VAL_33
+#  endif
+#  ifdef XLAT_VAL_34
+  | XLAT_VAL_34
+#  endif
+#  ifdef XLAT_VAL_35
+  | XLAT_VAL_35
+#  endif
+#  ifdef XLAT_VAL_36
+  | XLAT_VAL_36
+#  endif
+#  ifdef XLAT_VAL_37
+  | XLAT_VAL_37
+#  endif
+#  ifdef XLAT_VAL_38
+  | XLAT_VAL_38
+#  endif
+#  ifdef XLAT_VAL_39
+  | XLAT_VAL_39
+#  endif
+#  ifdef XLAT_VAL_40
+  | XLAT_VAL_40
+#  endif
+#  ifdef XLAT_VAL_41
+  | XLAT_VAL_41
+#  endif
+#  ifdef XLAT_VAL_42
+  | XLAT_VAL_42
+#  endif
+#  ifdef XLAT_VAL_43
+  | XLAT_VAL_43
+#  endif
+#  ifdef XLAT_VAL_44
+  | XLAT_VAL_44
+#  endif
+#  ifdef XLAT_VAL_45
+  | XLAT_VAL_45
+#  endif
+#  ifdef XLAT_VAL_46
+  | XLAT_VAL_46
+#  endif
+#  ifdef XLAT_VAL_47
+  | XLAT_VAL_47
+#  endif
+#  ifdef XLAT_VAL_48
+  | XLAT_VAL_48
+#  endif
+#  ifdef XLAT_VAL_49
+  | XLAT_VAL_49
+#  endif
+#  ifdef XLAT_VAL_50
+  | XLAT_VAL_50
+#  endif
+#  ifdef XLAT_VAL_51
+  | XLAT_VAL_51
+#  endif
+#  ifdef XLAT_VAL_52
+  | XLAT_VAL_52
+#  endif
+#  ifdef XLAT_VAL_53
+  | XLAT_VAL_53
+#  endif
+#  ifdef XLAT_VAL_54
+  | XLAT_VAL_54
+#  endif
+#  ifdef XLAT_VAL_55
+  | XLAT_VAL_55
+#  endif
+#  ifdef XLAT_VAL_56
+  | XLAT_VAL_56
+#  endif
+#  ifdef XLAT_VAL_57
+  | XLAT_VAL_57
+#  endif
+#  ifdef XLAT_VAL_58
+  | XLAT_VAL_58
+#  endif
+#  ifdef XLAT_VAL_59
+  | XLAT_VAL_59
+#  endif
+#  ifdef XLAT_VAL_60
+  | XLAT_VAL_60
+#  endif
+#  ifdef XLAT_VAL_61
+  | XLAT_VAL_61
+#  endif
+#  ifdef XLAT_VAL_62
+  | XLAT_VAL_62
+#  endif
+#  ifdef XLAT_VAL_63
+  | XLAT_VAL_63
+#  endif
+#  ifdef XLAT_VAL_64
+  | XLAT_VAL_64
+#  endif
+#  ifdef XLAT_VAL_65
+  | XLAT_VAL_65
+#  endif
+#  ifdef XLAT_VAL_66
+  | XLAT_VAL_66
+#  endif
+#  ifdef XLAT_VAL_67
+  | XLAT_VAL_67
+#  endif
+#  ifdef XLAT_VAL_68
+  | XLAT_VAL_68
+#  endif
+#  ifdef XLAT_VAL_69
+  | XLAT_VAL_69
+#  endif
+#  ifdef XLAT_VAL_70
+  | XLAT_VAL_70
+#  endif
+#  ifdef XLAT_VAL_71
+  | XLAT_VAL_71
+#  endif
+#  ifdef XLAT_VAL_72
+  | XLAT_VAL_72
+#  endif
+#  ifdef XLAT_VAL_73
+  | XLAT_VAL_73
+#  endif
+#  ifdef XLAT_VAL_74
+  | XLAT_VAL_74
+#  endif
+#  ifdef XLAT_VAL_75
+  | XLAT_VAL_75
+#  endif
+#  ifdef XLAT_VAL_76
+  | XLAT_VAL_76
+#  endif
+#  ifdef XLAT_VAL_77
+  | XLAT_VAL_77
+#  endif
+#  ifdef XLAT_VAL_78
+  | XLAT_VAL_78
+#  endif
+#  ifdef XLAT_VAL_79
+  | XLAT_VAL_79
+#  endif
+#  ifdef XLAT_VAL_80
+  | XLAT_VAL_80
+#  endif
+#  ifdef XLAT_VAL_81
+  | XLAT_VAL_81
+#  endif
+#  ifdef XLAT_VAL_82
+  | XLAT_VAL_82
+#  endif
+#  ifdef XLAT_VAL_83
+  | XLAT_VAL_83
+#  endif
+#  ifdef XLAT_VAL_84
+  | XLAT_VAL_84
+#  endif
+#  ifdef XLAT_VAL_85
+  | XLAT_VAL_85
+#  endif
+#  ifdef XLAT_VAL_86
+  | XLAT_VAL_86
+#  endif
+#  ifdef XLAT_VAL_87
+  | XLAT_VAL_87
+#  endif
+#  ifdef XLAT_VAL_88
+  | XLAT_VAL_88
+#  endif
+#  ifdef XLAT_VAL_89
+  | XLAT_VAL_89
+#  endif
+#  ifdef XLAT_VAL_90
+  | XLAT_VAL_90
+#  endif
+#  ifdef XLAT_VAL_91
+  | XLAT_VAL_91
+#  endif
+#  ifdef XLAT_VAL_92
+  | XLAT_VAL_92
+#  endif
+#  ifdef XLAT_VAL_93
+  | XLAT_VAL_93
+#  endif
+#  ifdef XLAT_VAL_94
+  | XLAT_VAL_94
+#  endif
+#  ifdef XLAT_VAL_95
+  | XLAT_VAL_95
+#  endif
+#  ifdef XLAT_VAL_96
+  | XLAT_VAL_96
+#  endif
+#  ifdef XLAT_VAL_97
+  | XLAT_VAL_97
+#  endif
+#  ifdef XLAT_VAL_98
+  | XLAT_VAL_98
+#  endif
+#  ifdef XLAT_VAL_99
+  | XLAT_VAL_99
+#  endif
+#  ifdef XLAT_VAL_100
+  | XLAT_VAL_100
+#  endif
+#  ifdef XLAT_VAL_101
+  | XLAT_VAL_101
+#  endif
+#  ifdef XLAT_VAL_102
+  | XLAT_VAL_102
+#  endif
+#  ifdef XLAT_VAL_103
+  | XLAT_VAL_103
+#  endif
+#  ifdef XLAT_VAL_104
+  | XLAT_VAL_104
+#  endif
+#  ifdef XLAT_VAL_105
+  | XLAT_VAL_105
+#  endif
+#  ifdef XLAT_VAL_106
+  | XLAT_VAL_106
+#  endif
+#  ifdef XLAT_VAL_107
+  | XLAT_VAL_107
+#  endif
+#  ifdef XLAT_VAL_108
+  | XLAT_VAL_108
+#  endif
+#  ifdef XLAT_VAL_109
+  | XLAT_VAL_109
+#  endif
+#  ifdef XLAT_VAL_110
+  | XLAT_VAL_110
+#  endif
+#  ifdef XLAT_VAL_111
+  | XLAT_VAL_111
+#  endif
+#  ifdef XLAT_VAL_112
+  | XLAT_VAL_112
+#  endif
+#  ifdef XLAT_VAL_113
+  | XLAT_VAL_113
+#  endif
+#  ifdef XLAT_VAL_114
+  | XLAT_VAL_114
+#  endif
+#  ifdef XLAT_VAL_115
+  | XLAT_VAL_115
+#  endif
+#  ifdef XLAT_VAL_116
+  | XLAT_VAL_116
+#  endif
+#  ifdef XLAT_VAL_117
+  | XLAT_VAL_117
+#  endif
+#  ifdef XLAT_VAL_118
+  | XLAT_VAL_118
+#  endif
+#  ifdef XLAT_VAL_119
+  | XLAT_VAL_119
+#  endif
+#  ifdef XLAT_VAL_120
+  | XLAT_VAL_120
+#  endif
+#  ifdef XLAT_VAL_121
+  | XLAT_VAL_121
+#  endif
+#  ifdef XLAT_VAL_122
+  | XLAT_VAL_122
+#  endif
+#  ifdef XLAT_VAL_123
+  | XLAT_VAL_123
+#  endif
+#  ifdef XLAT_VAL_124
+  | XLAT_VAL_124
+#  endif
+#  ifdef XLAT_VAL_125
+  | XLAT_VAL_125
+#  endif
+#  ifdef XLAT_VAL_126
+  | XLAT_VAL_126
+#  endif
+#  ifdef XLAT_VAL_127
+  | XLAT_VAL_127
+#  endif
+#  ifdef XLAT_VAL_128
+  | XLAT_VAL_128
+#  endif
+#  ifdef XLAT_VAL_129
+  | XLAT_VAL_129
+#  endif
+#  ifdef XLAT_VAL_130
+  | XLAT_VAL_130
+#  endif
+#  ifdef XLAT_VAL_131
+  | XLAT_VAL_131
+#  endif
+#  ifdef XLAT_VAL_132
+  | XLAT_VAL_132
+#  endif
+#  ifdef XLAT_VAL_133
+  | XLAT_VAL_133
+#  endif
+#  ifdef XLAT_VAL_134
+  | XLAT_VAL_134
+#  endif
+#  ifdef XLAT_VAL_135
+  | XLAT_VAL_135
+#  endif
+#  ifdef XLAT_VAL_136
+  | XLAT_VAL_136
+#  endif
+#  ifdef XLAT_VAL_137
+  | XLAT_VAL_137
+#  endif
+#  ifdef XLAT_VAL_138
+  | XLAT_VAL_138
+#  endif
+#  ifdef XLAT_VAL_139
+  | XLAT_VAL_139
+#  endif
+#  ifdef XLAT_VAL_140
+  | XLAT_VAL_140
+#  endif
+#  ifdef XLAT_VAL_141
+  | XLAT_VAL_141
+#  endif
+#  ifdef XLAT_VAL_142
+  | XLAT_VAL_142
+#  endif
+#  ifdef XLAT_VAL_143
+  | XLAT_VAL_143
+#  endif
+#  ifdef XLAT_VAL_144
+  | XLAT_VAL_144
+#  endif
+#  ifdef XLAT_VAL_145
+  | XLAT_VAL_145
+#  endif
+#  ifdef XLAT_VAL_146
+  | XLAT_VAL_146
+#  endif
+#  ifdef XLAT_VAL_147
+  | XLAT_VAL_147
+#  endif
+#  ifdef XLAT_VAL_148
+  | XLAT_VAL_148
+#  endif
+#  ifdef XLAT_VAL_149
+  | XLAT_VAL_149
+#  endif
+#  ifdef XLAT_VAL_150
+  | XLAT_VAL_150
+#  endif
+#  ifdef XLAT_VAL_151
+  | XLAT_VAL_151
+#  endif
+#  ifdef XLAT_VAL_152
+  | XLAT_VAL_152
+#  endif
+#  ifdef XLAT_VAL_153
+  | XLAT_VAL_153
+#  endif
+#  ifdef XLAT_VAL_154
+  | XLAT_VAL_154
+#  endif
+#  ifdef XLAT_VAL_155
+  | XLAT_VAL_155
+#  endif
+#  ifdef XLAT_VAL_156
+  | XLAT_VAL_156
+#  endif
+#  ifdef XLAT_VAL_157
+  | XLAT_VAL_157
+#  endif
+#  ifdef XLAT_VAL_158
+  | XLAT_VAL_158
+#  endif
+#  ifdef XLAT_VAL_159
+  | XLAT_VAL_159
+#  endif
+#  ifdef XLAT_VAL_160
+  | XLAT_VAL_160
+#  endif
+#  ifdef XLAT_VAL_161
+  | XLAT_VAL_161
+#  endif
+#  ifdef XLAT_VAL_162
+  | XLAT_VAL_162
+#  endif
+#  ifdef XLAT_VAL_163
+  | XLAT_VAL_163
+#  endif
+#  ifdef XLAT_VAL_164
+  | XLAT_VAL_164
+#  endif
+#  ifdef XLAT_VAL_165
+  | XLAT_VAL_165
+#  endif
+#  ifdef XLAT_VAL_166
+  | XLAT_VAL_166
+#  endif
+#  ifdef XLAT_VAL_167
+  | XLAT_VAL_167
+#  endif
+#  ifdef XLAT_VAL_168
+  | XLAT_VAL_168
+#  endif
+#  ifdef XLAT_VAL_169
+  | XLAT_VAL_169
+#  endif
+#  ifdef XLAT_VAL_170
+  | XLAT_VAL_170
+#  endif
+#  ifdef XLAT_VAL_171
+  | XLAT_VAL_171
+#  endif
+#  ifdef XLAT_VAL_172
+  | XLAT_VAL_172
+#  endif
+#  ifdef XLAT_VAL_173
+  | XLAT_VAL_173
+#  endif
+#  ifdef XLAT_VAL_174
+  | XLAT_VAL_174
+#  endif
+#  ifdef XLAT_VAL_175
+  | XLAT_VAL_175
+#  endif
+#  ifdef XLAT_VAL_176
+  | XLAT_VAL_176
+#  endif
+#  ifdef XLAT_VAL_177
+  | XLAT_VAL_177
+#  endif
+#  ifdef XLAT_VAL_178
+  | XLAT_VAL_178
+#  endif
+#  ifdef XLAT_VAL_179
+  | XLAT_VAL_179
+#  endif
+#  ifdef XLAT_VAL_180
+  | XLAT_VAL_180
+#  endif
+#  ifdef XLAT_VAL_181
+  | XLAT_VAL_181
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+#  ifdef XLAT_STR_30
+  + sizeof(XLAT_STR_30)
+#  endif
+#  ifdef XLAT_STR_31
+  + sizeof(XLAT_STR_31)
+#  endif
+#  ifdef XLAT_STR_32
+  + sizeof(XLAT_STR_32)
+#  endif
+#  ifdef XLAT_STR_33
+  + sizeof(XLAT_STR_33)
+#  endif
+#  ifdef XLAT_STR_34
+  + sizeof(XLAT_STR_34)
+#  endif
+#  ifdef XLAT_STR_35
+  + sizeof(XLAT_STR_35)
+#  endif
+#  ifdef XLAT_STR_36
+  + sizeof(XLAT_STR_36)
+#  endif
+#  ifdef XLAT_STR_37
+  + sizeof(XLAT_STR_37)
+#  endif
+#  ifdef XLAT_STR_38
+  + sizeof(XLAT_STR_38)
+#  endif
+#  ifdef XLAT_STR_39
+  + sizeof(XLAT_STR_39)
+#  endif
+#  ifdef XLAT_STR_40
+  + sizeof(XLAT_STR_40)
+#  endif
+#  ifdef XLAT_STR_41
+  + sizeof(XLAT_STR_41)
+#  endif
+#  ifdef XLAT_STR_42
+  + sizeof(XLAT_STR_42)
+#  endif
+#  ifdef XLAT_STR_43
+  + sizeof(XLAT_STR_43)
+#  endif
+#  ifdef XLAT_STR_44
+  + sizeof(XLAT_STR_44)
+#  endif
+#  ifdef XLAT_STR_45
+  + sizeof(XLAT_STR_45)
+#  endif
+#  ifdef XLAT_STR_46
+  + sizeof(XLAT_STR_46)
+#  endif
+#  ifdef XLAT_STR_47
+  + sizeof(XLAT_STR_47)
+#  endif
+#  ifdef XLAT_STR_48
+  + sizeof(XLAT_STR_48)
+#  endif
+#  ifdef XLAT_STR_49
+  + sizeof(XLAT_STR_49)
+#  endif
+#  ifdef XLAT_STR_50
+  + sizeof(XLAT_STR_50)
+#  endif
+#  ifdef XLAT_STR_51
+  + sizeof(XLAT_STR_51)
+#  endif
+#  ifdef XLAT_STR_52
+  + sizeof(XLAT_STR_52)
+#  endif
+#  ifdef XLAT_STR_53
+  + sizeof(XLAT_STR_53)
+#  endif
+#  ifdef XLAT_STR_54
+  + sizeof(XLAT_STR_54)
+#  endif
+#  ifdef XLAT_STR_55
+  + sizeof(XLAT_STR_55)
+#  endif
+#  ifdef XLAT_STR_56
+  + sizeof(XLAT_STR_56)
+#  endif
+#  ifdef XLAT_STR_57
+  + sizeof(XLAT_STR_57)
+#  endif
+#  ifdef XLAT_STR_58
+  + sizeof(XLAT_STR_58)
+#  endif
+#  ifdef XLAT_STR_59
+  + sizeof(XLAT_STR_59)
+#  endif
+#  ifdef XLAT_STR_60
+  + sizeof(XLAT_STR_60)
+#  endif
+#  ifdef XLAT_STR_61
+  + sizeof(XLAT_STR_61)
+#  endif
+#  ifdef XLAT_STR_62
+  + sizeof(XLAT_STR_62)
+#  endif
+#  ifdef XLAT_STR_63
+  + sizeof(XLAT_STR_63)
+#  endif
+#  ifdef XLAT_STR_64
+  + sizeof(XLAT_STR_64)
+#  endif
+#  ifdef XLAT_STR_65
+  + sizeof(XLAT_STR_65)
+#  endif
+#  ifdef XLAT_STR_66
+  + sizeof(XLAT_STR_66)
+#  endif
+#  ifdef XLAT_STR_67
+  + sizeof(XLAT_STR_67)
+#  endif
+#  ifdef XLAT_STR_68
+  + sizeof(XLAT_STR_68)
+#  endif
+#  ifdef XLAT_STR_69
+  + sizeof(XLAT_STR_69)
+#  endif
+#  ifdef XLAT_STR_70
+  + sizeof(XLAT_STR_70)
+#  endif
+#  ifdef XLAT_STR_71
+  + sizeof(XLAT_STR_71)
+#  endif
+#  ifdef XLAT_STR_72
+  + sizeof(XLAT_STR_72)
+#  endif
+#  ifdef XLAT_STR_73
+  + sizeof(XLAT_STR_73)
+#  endif
+#  ifdef XLAT_STR_74
+  + sizeof(XLAT_STR_74)
+#  endif
+#  ifdef XLAT_STR_75
+  + sizeof(XLAT_STR_75)
+#  endif
+#  ifdef XLAT_STR_76
+  + sizeof(XLAT_STR_76)
+#  endif
+#  ifdef XLAT_STR_77
+  + sizeof(XLAT_STR_77)
+#  endif
+#  ifdef XLAT_STR_78
+  + sizeof(XLAT_STR_78)
+#  endif
+#  ifdef XLAT_STR_79
+  + sizeof(XLAT_STR_79)
+#  endif
+#  ifdef XLAT_STR_80
+  + sizeof(XLAT_STR_80)
+#  endif
+#  ifdef XLAT_STR_81
+  + sizeof(XLAT_STR_81)
+#  endif
+#  ifdef XLAT_STR_82
+  + sizeof(XLAT_STR_82)
+#  endif
+#  ifdef XLAT_STR_83
+  + sizeof(XLAT_STR_83)
+#  endif
+#  ifdef XLAT_STR_84
+  + sizeof(XLAT_STR_84)
+#  endif
+#  ifdef XLAT_STR_85
+  + sizeof(XLAT_STR_85)
+#  endif
+#  ifdef XLAT_STR_86
+  + sizeof(XLAT_STR_86)
+#  endif
+#  ifdef XLAT_STR_87
+  + sizeof(XLAT_STR_87)
+#  endif
+#  ifdef XLAT_STR_88
+  + sizeof(XLAT_STR_88)
+#  endif
+#  ifdef XLAT_STR_89
+  + sizeof(XLAT_STR_89)
+#  endif
+#  ifdef XLAT_STR_90
+  + sizeof(XLAT_STR_90)
+#  endif
+#  ifdef XLAT_STR_91
+  + sizeof(XLAT_STR_91)
+#  endif
+#  ifdef XLAT_STR_92
+  + sizeof(XLAT_STR_92)
+#  endif
+#  ifdef XLAT_STR_93
+  + sizeof(XLAT_STR_93)
+#  endif
+#  ifdef XLAT_STR_94
+  + sizeof(XLAT_STR_94)
+#  endif
+#  ifdef XLAT_STR_95
+  + sizeof(XLAT_STR_95)
+#  endif
+#  ifdef XLAT_STR_96
+  + sizeof(XLAT_STR_96)
+#  endif
+#  ifdef XLAT_STR_97
+  + sizeof(XLAT_STR_97)
+#  endif
+#  ifdef XLAT_STR_98
+  + sizeof(XLAT_STR_98)
+#  endif
+#  ifdef XLAT_STR_99
+  + sizeof(XLAT_STR_99)
+#  endif
+#  ifdef XLAT_STR_100
+  + sizeof(XLAT_STR_100)
+#  endif
+#  ifdef XLAT_STR_101
+  + sizeof(XLAT_STR_101)
+#  endif
+#  ifdef XLAT_STR_102
+  + sizeof(XLAT_STR_102)
+#  endif
+#  ifdef XLAT_STR_103
+  + sizeof(XLAT_STR_103)
+#  endif
+#  ifdef XLAT_STR_104
+  + sizeof(XLAT_STR_104)
+#  endif
+#  ifdef XLAT_STR_105
+  + sizeof(XLAT_STR_105)
+#  endif
+#  ifdef XLAT_STR_106
+  + sizeof(XLAT_STR_106)
+#  endif
+#  ifdef XLAT_STR_107
+  + sizeof(XLAT_STR_107)
+#  endif
+#  ifdef XLAT_STR_108
+  + sizeof(XLAT_STR_108)
+#  endif
+#  ifdef XLAT_STR_109
+  + sizeof(XLAT_STR_109)
+#  endif
+#  ifdef XLAT_STR_110
+  + sizeof(XLAT_STR_110)
+#  endif
+#  ifdef XLAT_STR_111
+  + sizeof(XLAT_STR_111)
+#  endif
+#  ifdef XLAT_STR_112
+  + sizeof(XLAT_STR_112)
+#  endif
+#  ifdef XLAT_STR_113
+  + sizeof(XLAT_STR_113)
+#  endif
+#  ifdef XLAT_STR_114
+  + sizeof(XLAT_STR_114)
+#  endif
+#  ifdef XLAT_STR_115
+  + sizeof(XLAT_STR_115)
+#  endif
+#  ifdef XLAT_STR_116
+  + sizeof(XLAT_STR_116)
+#  endif
+#  ifdef XLAT_STR_117
+  + sizeof(XLAT_STR_117)
+#  endif
+#  ifdef XLAT_STR_118
+  + sizeof(XLAT_STR_118)
+#  endif
+#  ifdef XLAT_STR_119
+  + sizeof(XLAT_STR_119)
+#  endif
+#  ifdef XLAT_STR_120
+  + sizeof(XLAT_STR_120)
+#  endif
+#  ifdef XLAT_STR_121
+  + sizeof(XLAT_STR_121)
+#  endif
+#  ifdef XLAT_STR_122
+  + sizeof(XLAT_STR_122)
+#  endif
+#  ifdef XLAT_STR_123
+  + sizeof(XLAT_STR_123)
+#  endif
+#  ifdef XLAT_STR_124
+  + sizeof(XLAT_STR_124)
+#  endif
+#  ifdef XLAT_STR_125
+  + sizeof(XLAT_STR_125)
+#  endif
+#  ifdef XLAT_STR_126
+  + sizeof(XLAT_STR_126)
+#  endif
+#  ifdef XLAT_STR_127
+  + sizeof(XLAT_STR_127)
+#  endif
+#  ifdef XLAT_STR_128
+  + sizeof(XLAT_STR_128)
+#  endif
+#  ifdef XLAT_STR_129
+  + sizeof(XLAT_STR_129)
+#  endif
+#  ifdef XLAT_STR_130
+  + sizeof(XLAT_STR_130)
+#  endif
+#  ifdef XLAT_STR_131
+  + sizeof(XLAT_STR_131)
+#  endif
+#  ifdef XLAT_STR_132
+  + sizeof(XLAT_STR_132)
+#  endif
+#  ifdef XLAT_STR_133
+  + sizeof(XLAT_STR_133)
+#  endif
+#  ifdef XLAT_STR_134
+  + sizeof(XLAT_STR_134)
+#  endif
+#  ifdef XLAT_STR_135
+  + sizeof(XLAT_STR_135)
+#  endif
+#  ifdef XLAT_STR_136
+  + sizeof(XLAT_STR_136)
+#  endif
+#  ifdef XLAT_STR_137
+  + sizeof(XLAT_STR_137)
+#  endif
+#  ifdef XLAT_STR_138
+  + sizeof(XLAT_STR_138)
+#  endif
+#  ifdef XLAT_STR_139
+  + sizeof(XLAT_STR_139)
+#  endif
+#  ifdef XLAT_STR_140
+  + sizeof(XLAT_STR_140)
+#  endif
+#  ifdef XLAT_STR_141
+  + sizeof(XLAT_STR_141)
+#  endif
+#  ifdef XLAT_STR_142
+  + sizeof(XLAT_STR_142)
+#  endif
+#  ifdef XLAT_STR_143
+  + sizeof(XLAT_STR_143)
+#  endif
+#  ifdef XLAT_STR_144
+  + sizeof(XLAT_STR_144)
+#  endif
+#  ifdef XLAT_STR_145
+  + sizeof(XLAT_STR_145)
+#  endif
+#  ifdef XLAT_STR_146
+  + sizeof(XLAT_STR_146)
+#  endif
+#  ifdef XLAT_STR_147
+  + sizeof(XLAT_STR_147)
+#  endif
+#  ifdef XLAT_STR_148
+  + sizeof(XLAT_STR_148)
+#  endif
+#  ifdef XLAT_STR_149
+  + sizeof(XLAT_STR_149)
+#  endif
+#  ifdef XLAT_STR_150
+  + sizeof(XLAT_STR_150)
+#  endif
+#  ifdef XLAT_STR_151
+  + sizeof(XLAT_STR_151)
+#  endif
+#  ifdef XLAT_STR_152
+  + sizeof(XLAT_STR_152)
+#  endif
+#  ifdef XLAT_STR_153
+  + sizeof(XLAT_STR_153)
+#  endif
+#  ifdef XLAT_STR_154
+  + sizeof(XLAT_STR_154)
+#  endif
+#  ifdef XLAT_STR_155
+  + sizeof(XLAT_STR_155)
+#  endif
+#  ifdef XLAT_STR_156
+  + sizeof(XLAT_STR_156)
+#  endif
+#  ifdef XLAT_STR_157
+  + sizeof(XLAT_STR_157)
+#  endif
+#  ifdef XLAT_STR_158
+  + sizeof(XLAT_STR_158)
+#  endif
+#  ifdef XLAT_STR_159
+  + sizeof(XLAT_STR_159)
+#  endif
+#  ifdef XLAT_STR_160
+  + sizeof(XLAT_STR_160)
+#  endif
+#  ifdef XLAT_STR_161
+  + sizeof(XLAT_STR_161)
+#  endif
+#  ifdef XLAT_STR_162
+  + sizeof(XLAT_STR_162)
+#  endif
+#  ifdef XLAT_STR_163
+  + sizeof(XLAT_STR_163)
+#  endif
+#  ifdef XLAT_STR_164
+  + sizeof(XLAT_STR_164)
+#  endif
+#  ifdef XLAT_STR_165
+  + sizeof(XLAT_STR_165)
+#  endif
+#  ifdef XLAT_STR_166
+  + sizeof(XLAT_STR_166)
+#  endif
+#  ifdef XLAT_STR_167
+  + sizeof(XLAT_STR_167)
+#  endif
+#  ifdef XLAT_STR_168
+  + sizeof(XLAT_STR_168)
+#  endif
+#  ifdef XLAT_STR_169
+  + sizeof(XLAT_STR_169)
+#  endif
+#  ifdef XLAT_STR_170
+  + sizeof(XLAT_STR_170)
+#  endif
+#  ifdef XLAT_STR_171
+  + sizeof(XLAT_STR_171)
+#  endif
+#  ifdef XLAT_STR_172
+  + sizeof(XLAT_STR_172)
+#  endif
+#  ifdef XLAT_STR_173
+  + sizeof(XLAT_STR_173)
+#  endif
+#  ifdef XLAT_STR_174
+  + sizeof(XLAT_STR_174)
+#  endif
+#  ifdef XLAT_STR_175
+  + sizeof(XLAT_STR_175)
+#  endif
+#  ifdef XLAT_STR_176
+  + sizeof(XLAT_STR_176)
+#  endif
+#  ifdef XLAT_STR_177
+  + sizeof(XLAT_STR_177)
+#  endif
+#  ifdef XLAT_STR_178
+  + sizeof(XLAT_STR_178)
+#  endif
+#  ifdef XLAT_STR_179
+  + sizeof(XLAT_STR_179)
+#  endif
+#  ifdef XLAT_STR_180
+  + sizeof(XLAT_STR_180)
+#  endif
+#  ifdef XLAT_STR_181
+  + sizeof(XLAT_STR_181)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
+#  undef XLAT_STR_30
+#  undef XLAT_VAL_30
+#  undef XLAT_STR_31
+#  undef XLAT_VAL_31
+#  undef XLAT_STR_32
+#  undef XLAT_VAL_32
+#  undef XLAT_STR_33
+#  undef XLAT_VAL_33
+#  undef XLAT_STR_34
+#  undef XLAT_VAL_34
+#  undef XLAT_STR_35
+#  undef XLAT_VAL_35
+#  undef XLAT_STR_36
+#  undef XLAT_VAL_36
+#  undef XLAT_STR_37
+#  undef XLAT_VAL_37
+#  undef XLAT_STR_38
+#  undef XLAT_VAL_38
+#  undef XLAT_STR_39
+#  undef XLAT_VAL_39
+#  undef XLAT_STR_40
+#  undef XLAT_VAL_40
+#  undef XLAT_STR_41
+#  undef XLAT_VAL_41
+#  undef XLAT_STR_42
+#  undef XLAT_VAL_42
+#  undef XLAT_STR_43
+#  undef XLAT_VAL_43
+#  undef XLAT_STR_44
+#  undef XLAT_VAL_44
+#  undef XLAT_STR_45
+#  undef XLAT_VAL_45
+#  undef XLAT_STR_46
+#  undef XLAT_VAL_46
+#  undef XLAT_STR_47
+#  undef XLAT_VAL_47
+#  undef XLAT_STR_48
+#  undef XLAT_VAL_48
+#  undef XLAT_STR_49
+#  undef XLAT_VAL_49
+#  undef XLAT_STR_50
+#  undef XLAT_VAL_50
+#  undef XLAT_STR_51
+#  undef XLAT_VAL_51
+#  undef XLAT_STR_52
+#  undef XLAT_VAL_52
+#  undef XLAT_STR_53
+#  undef XLAT_VAL_53
+#  undef XLAT_STR_54
+#  undef XLAT_VAL_54
+#  undef XLAT_STR_55
+#  undef XLAT_VAL_55
+#  undef XLAT_STR_56
+#  undef XLAT_VAL_56
+#  undef XLAT_STR_57
+#  undef XLAT_VAL_57
+#  undef XLAT_STR_58
+#  undef XLAT_VAL_58
+#  undef XLAT_STR_59
+#  undef XLAT_VAL_59
+#  undef XLAT_STR_60
+#  undef XLAT_VAL_60
+#  undef XLAT_STR_61
+#  undef XLAT_VAL_61
+#  undef XLAT_STR_62
+#  undef XLAT_VAL_62
+#  undef XLAT_STR_63
+#  undef XLAT_VAL_63
+#  undef XLAT_STR_64
+#  undef XLAT_VAL_64
+#  undef XLAT_STR_65
+#  undef XLAT_VAL_65
+#  undef XLAT_STR_66
+#  undef XLAT_VAL_66
+#  undef XLAT_STR_67
+#  undef XLAT_VAL_67
+#  undef XLAT_STR_68
+#  undef XLAT_VAL_68
+#  undef XLAT_STR_69
+#  undef XLAT_VAL_69
+#  undef XLAT_STR_70
+#  undef XLAT_VAL_70
+#  undef XLAT_STR_71
+#  undef XLAT_VAL_71
+#  undef XLAT_STR_72
+#  undef XLAT_VAL_72
+#  undef XLAT_STR_73
+#  undef XLAT_VAL_73
+#  undef XLAT_STR_74
+#  undef XLAT_VAL_74
+#  undef XLAT_STR_75
+#  undef XLAT_VAL_75
+#  undef XLAT_STR_76
+#  undef XLAT_VAL_76
+#  undef XLAT_STR_77
+#  undef XLAT_VAL_77
+#  undef XLAT_STR_78
+#  undef XLAT_VAL_78
+#  undef XLAT_STR_79
+#  undef XLAT_VAL_79
+#  undef XLAT_STR_80
+#  undef XLAT_VAL_80
+#  undef XLAT_STR_81
+#  undef XLAT_VAL_81
+#  undef XLAT_STR_82
+#  undef XLAT_VAL_82
+#  undef XLAT_STR_83
+#  undef XLAT_VAL_83
+#  undef XLAT_STR_84
+#  undef XLAT_VAL_84
+#  undef XLAT_STR_85
+#  undef XLAT_VAL_85
+#  undef XLAT_STR_86
+#  undef XLAT_VAL_86
+#  undef XLAT_STR_87
+#  undef XLAT_VAL_87
+#  undef XLAT_STR_88
+#  undef XLAT_VAL_88
+#  undef XLAT_STR_89
+#  undef XLAT_VAL_89
+#  undef XLAT_STR_90
+#  undef XLAT_VAL_90
+#  undef XLAT_STR_91
+#  undef XLAT_VAL_91
+#  undef XLAT_STR_92
+#  undef XLAT_VAL_92
+#  undef XLAT_STR_93
+#  undef XLAT_VAL_93
+#  undef XLAT_STR_94
+#  undef XLAT_VAL_94
+#  undef XLAT_STR_95
+#  undef XLAT_VAL_95
+#  undef XLAT_STR_96
+#  undef XLAT_VAL_96
+#  undef XLAT_STR_97
+#  undef XLAT_VAL_97
+#  undef XLAT_STR_98
+#  undef XLAT_VAL_98
+#  undef XLAT_STR_99
+#  undef XLAT_VAL_99
+#  undef XLAT_STR_100
+#  undef XLAT_VAL_100
+#  undef XLAT_STR_101
+#  undef XLAT_VAL_101
+#  undef XLAT_STR_102
+#  undef XLAT_VAL_102
+#  undef XLAT_STR_103
+#  undef XLAT_VAL_103
+#  undef XLAT_STR_104
+#  undef XLAT_VAL_104
+#  undef XLAT_STR_105
+#  undef XLAT_VAL_105
+#  undef XLAT_STR_106
+#  undef XLAT_VAL_106
+#  undef XLAT_STR_107
+#  undef XLAT_VAL_107
+#  undef XLAT_STR_108
+#  undef XLAT_VAL_108
+#  undef XLAT_STR_109
+#  undef XLAT_VAL_109
+#  undef XLAT_STR_110
+#  undef XLAT_VAL_110
+#  undef XLAT_STR_111
+#  undef XLAT_VAL_111
+#  undef XLAT_STR_112
+#  undef XLAT_VAL_112
+#  undef XLAT_STR_113
+#  undef XLAT_VAL_113
+#  undef XLAT_STR_114
+#  undef XLAT_VAL_114
+#  undef XLAT_STR_115
+#  undef XLAT_VAL_115
+#  undef XLAT_STR_116
+#  undef XLAT_VAL_116
+#  undef XLAT_STR_117
+#  undef XLAT_VAL_117
+#  undef XLAT_STR_118
+#  undef XLAT_VAL_118
+#  undef XLAT_STR_119
+#  undef XLAT_VAL_119
+#  undef XLAT_STR_120
+#  undef XLAT_VAL_120
+#  undef XLAT_STR_121
+#  undef XLAT_VAL_121
+#  undef XLAT_STR_122
+#  undef XLAT_VAL_122
+#  undef XLAT_STR_123
+#  undef XLAT_VAL_123
+#  undef XLAT_STR_124
+#  undef XLAT_VAL_124
+#  undef XLAT_STR_125
+#  undef XLAT_VAL_125
+#  undef XLAT_STR_126
+#  undef XLAT_VAL_126
+#  undef XLAT_STR_127
+#  undef XLAT_VAL_127
+#  undef XLAT_STR_128
+#  undef XLAT_VAL_128
+#  undef XLAT_STR_129
+#  undef XLAT_VAL_129
+#  undef XLAT_STR_130
+#  undef XLAT_VAL_130
+#  undef XLAT_STR_131
+#  undef XLAT_VAL_131
+#  undef XLAT_STR_132
+#  undef XLAT_VAL_132
+#  undef XLAT_STR_133
+#  undef XLAT_VAL_133
+#  undef XLAT_STR_134
+#  undef XLAT_VAL_134
+#  undef XLAT_STR_135
+#  undef XLAT_VAL_135
+#  undef XLAT_STR_136
+#  undef XLAT_VAL_136
+#  undef XLAT_STR_137
+#  undef XLAT_VAL_137
+#  undef XLAT_STR_138
+#  undef XLAT_VAL_138
+#  undef XLAT_STR_139
+#  undef XLAT_VAL_139
+#  undef XLAT_STR_140
+#  undef XLAT_VAL_140
+#  undef XLAT_STR_141
+#  undef XLAT_VAL_141
+#  undef XLAT_STR_142
+#  undef XLAT_VAL_142
+#  undef XLAT_STR_143
+#  undef XLAT_VAL_143
+#  undef XLAT_STR_144
+#  undef XLAT_VAL_144
+#  undef XLAT_STR_145
+#  undef XLAT_VAL_145
+#  undef XLAT_STR_146
+#  undef XLAT_VAL_146
+#  undef XLAT_STR_147
+#  undef XLAT_VAL_147
+#  undef XLAT_STR_148
+#  undef XLAT_VAL_148
+#  undef XLAT_STR_149
+#  undef XLAT_VAL_149
+#  undef XLAT_STR_150
+#  undef XLAT_VAL_150
+#  undef XLAT_STR_151
+#  undef XLAT_VAL_151
+#  undef XLAT_STR_152
+#  undef XLAT_VAL_152
+#  undef XLAT_STR_153
+#  undef XLAT_VAL_153
+#  undef XLAT_STR_154
+#  undef XLAT_VAL_154
+#  undef XLAT_STR_155
+#  undef XLAT_VAL_155
+#  undef XLAT_STR_156
+#  undef XLAT_VAL_156
+#  undef XLAT_STR_157
+#  undef XLAT_VAL_157
+#  undef XLAT_STR_158
+#  undef XLAT_VAL_158
+#  undef XLAT_STR_159
+#  undef XLAT_VAL_159
+#  undef XLAT_STR_160
+#  undef XLAT_VAL_160
+#  undef XLAT_STR_161
+#  undef XLAT_VAL_161
+#  undef XLAT_STR_162
+#  undef XLAT_VAL_162
+#  undef XLAT_STR_163
+#  undef XLAT_VAL_163
+#  undef XLAT_STR_164
+#  undef XLAT_VAL_164
+#  undef XLAT_STR_165
+#  undef XLAT_VAL_165
+#  undef XLAT_STR_166
+#  undef XLAT_VAL_166
+#  undef XLAT_STR_167
+#  undef XLAT_VAL_167
+#  undef XLAT_STR_168
+#  undef XLAT_VAL_168
+#  undef XLAT_STR_169
+#  undef XLAT_VAL_169
+#  undef XLAT_STR_170
+#  undef XLAT_VAL_170
+#  undef XLAT_STR_171
+#  undef XLAT_VAL_171
+#  undef XLAT_STR_172
+#  undef XLAT_VAL_172
+#  undef XLAT_STR_173
+#  undef XLAT_VAL_173
+#  undef XLAT_STR_174
+#  undef XLAT_VAL_174
+#  undef XLAT_STR_175
+#  undef XLAT_VAL_175
+#  undef XLAT_STR_176
+#  undef XLAT_VAL_176
+#  undef XLAT_STR_177
+#  undef XLAT_VAL_177
+#  undef XLAT_STR_178
+#  undef XLAT_VAL_178
+#  undef XLAT_STR_179
+#  undef XLAT_VAL_179
+#  undef XLAT_STR_180
+#  undef XLAT_VAL_180
+#  undef XLAT_STR_181
+#  undef XLAT_VAL_181
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 64a3ca776b5a25f3091b3efae93e145c4cfb6737..d6caf7e09eff793a9ba780f4aa8407c2eb1b1534 100644 (file)
@@ -161,3 +161,23 @@ KVM_CAP_EXCEPTION_PAYLOAD          164
 KVM_CAP_ARM_VM_IPA_SIZE                        165
 KVM_CAP_MANUAL_DIRTY_LOG_PROTECT       166
 KVM_CAP_HYPERV_CPUID                   167
+KVM_CAP_MANUAL_DIRTY_LOG_PROTECT2      168
+KVM_CAP_PPC_IRQ_XIVE                   169
+KVM_CAP_ARM_SVE                                170
+KVM_CAP_ARM_PTRAUTH_ADDRESS            171
+KVM_CAP_ARM_PTRAUTH_GENERIC            172
+KVM_CAP_PMU_EVENT_FILTER               173
+KVM_CAP_ARM_IRQ_LINE_LAYOUT_2          174
+KVM_CAP_HYPERV_DIRECT_TLBFLUSH         175
+KVM_CAP_PPC_GUEST_DEBUG_SSTEP          176
+KVM_CAP_ARM_NISV_TO_USER               177
+KVM_CAP_ARM_INJECT_EXT_DABT            178
+KVM_CAP_S390_VCPU_RESETS               179
+KVM_CAP_S390_PROTECTED                 180
+KVM_CAP_PPC_SECURE_GUEST               181
+KVM_CAP_HALT_POLL                      182
+KVM_CAP_ASYNC_PF_INT                   183
+KVM_CAP_LAST_CPU                       184
+KVM_CAP_SMALLER_MAXPHYADDR             185
+KVM_CAP_S390_DIAG318                   186
+KVM_CAP_STEAL_TIME                     187
index 6b0afe99510e0975ef08a35b32df8fd3d8d62d96..06cea076c691179187f8dc4b2b7b8fb5c7d1518b 100644 (file)
@@ -36,8 +36,7 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat kvm_cpuid_flags[] = {
+static const struct xlat_data kvm_cpuid_flags_xdata[] = {
 #ifndef BIT
 /*
 * Workaround a bug in kernel headers fixed by linux commit v4.7-rc1~32^2~42.
@@ -46,11 +45,50 @@ const struct xlat kvm_cpuid_flags[] = {
 #endif
 
  XLAT(KVM_CPUID_FLAG_SIGNIFCANT_INDEX),
+ #define XLAT_VAL_0 ((unsigned) (KVM_CPUID_FLAG_SIGNIFCANT_INDEX))
+ #define XLAT_STR_0 STRINGIFY(KVM_CPUID_FLAG_SIGNIFCANT_INDEX)
  XLAT(KVM_CPUID_FLAG_STATEFUL_FUNC),
+ #define XLAT_VAL_1 ((unsigned) (KVM_CPUID_FLAG_STATEFUL_FUNC))
+ #define XLAT_STR_1 STRINGIFY(KVM_CPUID_FLAG_STATEFUL_FUNC)
  XLAT(KVM_CPUID_FLAG_STATE_READ_NEXT),
- XLAT_END
+ #define XLAT_VAL_2 ((unsigned) (KVM_CPUID_FLAG_STATE_READ_NEXT))
+ #define XLAT_STR_2 STRINGIFY(KVM_CPUID_FLAG_STATE_READ_NEXT)
 };
+static
+const struct xlat kvm_cpuid_flags[1] = { {
+ .data = kvm_cpuid_flags_xdata,
+ .size = ARRAY_SIZE(kvm_cpuid_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index b5d37125f77cd00bb5d959889e2fcdcd1cf7a620..f0c683fd02d7725aa0250775674d2a0424719a10 100644 (file)
@@ -199,6 +199,13 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define KVM_EXIT_HYPERV 27
 #endif
+#if defined(KVM_EXIT_ARM_NISV) || (defined(HAVE_DECL_KVM_EXIT_ARM_NISV) && HAVE_DECL_KVM_EXIT_ARM_NISV)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((KVM_EXIT_ARM_NISV) == (28), "KVM_EXIT_ARM_NISV != 28");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define KVM_EXIT_ARM_NISV 28
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
@@ -208,40 +215,339 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat kvm_exit_reason[] = {
+static const struct xlat_data kvm_exit_reason_xdata[] = {
  [KVM_EXIT_UNKNOWN] = XLAT(KVM_EXIT_UNKNOWN),
+ #define XLAT_VAL_0 ((unsigned) (KVM_EXIT_UNKNOWN))
+ #define XLAT_STR_0 STRINGIFY(KVM_EXIT_UNKNOWN)
  [KVM_EXIT_EXCEPTION] = XLAT(KVM_EXIT_EXCEPTION),
+ #define XLAT_VAL_1 ((unsigned) (KVM_EXIT_EXCEPTION))
+ #define XLAT_STR_1 STRINGIFY(KVM_EXIT_EXCEPTION)
  [KVM_EXIT_IO] = XLAT(KVM_EXIT_IO),
+ #define XLAT_VAL_2 ((unsigned) (KVM_EXIT_IO))
+ #define XLAT_STR_2 STRINGIFY(KVM_EXIT_IO)
  [KVM_EXIT_HYPERCALL] = XLAT(KVM_EXIT_HYPERCALL),
+ #define XLAT_VAL_3 ((unsigned) (KVM_EXIT_HYPERCALL))
+ #define XLAT_STR_3 STRINGIFY(KVM_EXIT_HYPERCALL)
  [KVM_EXIT_DEBUG] = XLAT(KVM_EXIT_DEBUG),
+ #define XLAT_VAL_4 ((unsigned) (KVM_EXIT_DEBUG))
+ #define XLAT_STR_4 STRINGIFY(KVM_EXIT_DEBUG)
  [KVM_EXIT_HLT] = XLAT(KVM_EXIT_HLT),
+ #define XLAT_VAL_5 ((unsigned) (KVM_EXIT_HLT))
+ #define XLAT_STR_5 STRINGIFY(KVM_EXIT_HLT)
  [KVM_EXIT_MMIO] = XLAT(KVM_EXIT_MMIO),
+ #define XLAT_VAL_6 ((unsigned) (KVM_EXIT_MMIO))
+ #define XLAT_STR_6 STRINGIFY(KVM_EXIT_MMIO)
  [KVM_EXIT_IRQ_WINDOW_OPEN] = XLAT(KVM_EXIT_IRQ_WINDOW_OPEN),
+ #define XLAT_VAL_7 ((unsigned) (KVM_EXIT_IRQ_WINDOW_OPEN))
+ #define XLAT_STR_7 STRINGIFY(KVM_EXIT_IRQ_WINDOW_OPEN)
  [KVM_EXIT_SHUTDOWN] = XLAT(KVM_EXIT_SHUTDOWN),
+ #define XLAT_VAL_8 ((unsigned) (KVM_EXIT_SHUTDOWN))
+ #define XLAT_STR_8 STRINGIFY(KVM_EXIT_SHUTDOWN)
  [KVM_EXIT_FAIL_ENTRY] = XLAT(KVM_EXIT_FAIL_ENTRY),
+ #define XLAT_VAL_9 ((unsigned) (KVM_EXIT_FAIL_ENTRY))
+ #define XLAT_STR_9 STRINGIFY(KVM_EXIT_FAIL_ENTRY)
  [KVM_EXIT_INTR] = XLAT(KVM_EXIT_INTR),
+ #define XLAT_VAL_10 ((unsigned) (KVM_EXIT_INTR))
+ #define XLAT_STR_10 STRINGIFY(KVM_EXIT_INTR)
  [KVM_EXIT_SET_TPR] = XLAT(KVM_EXIT_SET_TPR),
+ #define XLAT_VAL_11 ((unsigned) (KVM_EXIT_SET_TPR))
+ #define XLAT_STR_11 STRINGIFY(KVM_EXIT_SET_TPR)
  [KVM_EXIT_TPR_ACCESS] = XLAT(KVM_EXIT_TPR_ACCESS),
+ #define XLAT_VAL_12 ((unsigned) (KVM_EXIT_TPR_ACCESS))
+ #define XLAT_STR_12 STRINGIFY(KVM_EXIT_TPR_ACCESS)
  [KVM_EXIT_S390_SIEIC] = XLAT(KVM_EXIT_S390_SIEIC),
+ #define XLAT_VAL_13 ((unsigned) (KVM_EXIT_S390_SIEIC))
+ #define XLAT_STR_13 STRINGIFY(KVM_EXIT_S390_SIEIC)
  [KVM_EXIT_S390_RESET] = XLAT(KVM_EXIT_S390_RESET),
+ #define XLAT_VAL_14 ((unsigned) (KVM_EXIT_S390_RESET))
+ #define XLAT_STR_14 STRINGIFY(KVM_EXIT_S390_RESET)
 
  [KVM_EXIT_DCR] = XLAT(KVM_EXIT_DCR),
+ #define XLAT_VAL_15 ((unsigned) (KVM_EXIT_DCR))
+ #define XLAT_STR_15 STRINGIFY(KVM_EXIT_DCR)
  [KVM_EXIT_NMI] = XLAT(KVM_EXIT_NMI),
+ #define XLAT_VAL_16 ((unsigned) (KVM_EXIT_NMI))
+ #define XLAT_STR_16 STRINGIFY(KVM_EXIT_NMI)
  [KVM_EXIT_INTERNAL_ERROR] = XLAT(KVM_EXIT_INTERNAL_ERROR),
+ #define XLAT_VAL_17 ((unsigned) (KVM_EXIT_INTERNAL_ERROR))
+ #define XLAT_STR_17 STRINGIFY(KVM_EXIT_INTERNAL_ERROR)
  [KVM_EXIT_OSI] = XLAT(KVM_EXIT_OSI),
+ #define XLAT_VAL_18 ((unsigned) (KVM_EXIT_OSI))
+ #define XLAT_STR_18 STRINGIFY(KVM_EXIT_OSI)
  [KVM_EXIT_PAPR_HCALL] = XLAT(KVM_EXIT_PAPR_HCALL),
+ #define XLAT_VAL_19 ((unsigned) (KVM_EXIT_PAPR_HCALL))
+ #define XLAT_STR_19 STRINGIFY(KVM_EXIT_PAPR_HCALL)
  [KVM_EXIT_S390_UCONTROL] = XLAT(KVM_EXIT_S390_UCONTROL),
+ #define XLAT_VAL_20 ((unsigned) (KVM_EXIT_S390_UCONTROL))
+ #define XLAT_STR_20 STRINGIFY(KVM_EXIT_S390_UCONTROL)
  [KVM_EXIT_WATCHDOG] = XLAT(KVM_EXIT_WATCHDOG),
+ #define XLAT_VAL_21 ((unsigned) (KVM_EXIT_WATCHDOG))
+ #define XLAT_STR_21 STRINGIFY(KVM_EXIT_WATCHDOG)
  [KVM_EXIT_S390_TSCH] = XLAT(KVM_EXIT_S390_TSCH),
+ #define XLAT_VAL_22 ((unsigned) (KVM_EXIT_S390_TSCH))
+ #define XLAT_STR_22 STRINGIFY(KVM_EXIT_S390_TSCH)
  [KVM_EXIT_EPR] = XLAT(KVM_EXIT_EPR),
+ #define XLAT_VAL_23 ((unsigned) (KVM_EXIT_EPR))
+ #define XLAT_STR_23 STRINGIFY(KVM_EXIT_EPR)
  [KVM_EXIT_SYSTEM_EVENT] = XLAT(KVM_EXIT_SYSTEM_EVENT),
+ #define XLAT_VAL_24 ((unsigned) (KVM_EXIT_SYSTEM_EVENT))
+ #define XLAT_STR_24 STRINGIFY(KVM_EXIT_SYSTEM_EVENT)
  [KVM_EXIT_S390_STSI] = XLAT(KVM_EXIT_S390_STSI),
+ #define XLAT_VAL_25 ((unsigned) (KVM_EXIT_S390_STSI))
+ #define XLAT_STR_25 STRINGIFY(KVM_EXIT_S390_STSI)
  [KVM_EXIT_IOAPIC_EOI] = XLAT(KVM_EXIT_IOAPIC_EOI),
+ #define XLAT_VAL_26 ((unsigned) (KVM_EXIT_IOAPIC_EOI))
+ #define XLAT_STR_26 STRINGIFY(KVM_EXIT_IOAPIC_EOI)
  [KVM_EXIT_HYPERV] = XLAT(KVM_EXIT_HYPERV),
- XLAT_END
+ #define XLAT_VAL_27 ((unsigned) (KVM_EXIT_HYPERV))
+ #define XLAT_STR_27 STRINGIFY(KVM_EXIT_HYPERV)
+ [KVM_EXIT_ARM_NISV] = XLAT(KVM_EXIT_ARM_NISV),
+ #define XLAT_VAL_28 ((unsigned) (KVM_EXIT_ARM_NISV))
+ #define XLAT_STR_28 STRINGIFY(KVM_EXIT_ARM_NISV)
 };
+static
+const struct xlat kvm_exit_reason[1] = { {
+ .data = kvm_exit_reason_xdata,
+ .size = ARRAY_SIZE(kvm_exit_reason_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index d2b246878a4df203c0921dd4232d30a3cbe55580..664183923245e04d88d9cdab9d4d0c2b7f05b87c 100644 (file)
@@ -28,3 +28,4 @@ KVM_EXIT_SYSTEM_EVENT         24
 KVM_EXIT_S390_STSI             25
 KVM_EXIT_IOAPIC_EOI            26
 KVM_EXIT_HYPERV                        27
+KVM_EXIT_ARM_NISV              28
index 3598821c27c4260f7e19f70edc913df854e749a2..6b4b408154c1874dfb637a06aae45436ba34acf2 100644 (file)
@@ -26,13 +26,41 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat kvm_mem_flags[] = {
+static const struct xlat_data kvm_mem_flags_xdata[] = {
  XLAT(KVM_MEM_LOG_DIRTY_PAGES),
+ #define XLAT_VAL_0 ((unsigned) (KVM_MEM_LOG_DIRTY_PAGES))
+ #define XLAT_STR_0 STRINGIFY(KVM_MEM_LOG_DIRTY_PAGES)
  XLAT(KVM_MEM_READONLY),
- XLAT_END
+ #define XLAT_VAL_1 ((unsigned) (KVM_MEM_READONLY))
+ #define XLAT_STR_1 STRINGIFY(KVM_MEM_READONLY)
 };
+static
+const struct xlat kvm_mem_flags[1] = { {
+ .data = kvm_mem_flags_xdata,
+ .size = ARRAY_SIZE(kvm_mem_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index da69625de29713a1cfc7c9f310a6f9cca6853449..81cdf22677dd9d3211e83d4531692d69ae144fe6 100644 (file)
 
 # else
 
-static
-const struct xlat lockfcmds[] = {
+static const struct xlat_data lockfcmds_xdata[] = {
 #if defined(F_RDLCK) || (defined(HAVE_DECL_F_RDLCK) && HAVE_DECL_F_RDLCK)
   XLAT(F_RDLCK),
+ #define XLAT_VAL_0 ((unsigned) (F_RDLCK))
+ #define XLAT_STR_0 STRINGIFY(F_RDLCK)
 #endif
 #if defined(F_WRLCK) || (defined(HAVE_DECL_F_WRLCK) && HAVE_DECL_F_WRLCK)
   XLAT(F_WRLCK),
+ #define XLAT_VAL_1 ((unsigned) (F_WRLCK))
+ #define XLAT_STR_1 STRINGIFY(F_WRLCK)
 #endif
 #if defined(F_UNLCK) || (defined(HAVE_DECL_F_UNLCK) && HAVE_DECL_F_UNLCK)
   XLAT(F_UNLCK),
+ #define XLAT_VAL_2 ((unsigned) (F_UNLCK))
+ #define XLAT_STR_2 STRINGIFY(F_UNLCK)
 #endif
 #if defined(F_EXLCK) || (defined(HAVE_DECL_F_EXLCK) && HAVE_DECL_F_EXLCK)
   XLAT(F_EXLCK),
+ #define XLAT_VAL_3 ((unsigned) (F_EXLCK))
+ #define XLAT_STR_3 STRINGIFY(F_EXLCK)
 #endif
 #if defined(F_SHLCK) || (defined(HAVE_DECL_F_SHLCK) && HAVE_DECL_F_SHLCK)
   XLAT(F_SHLCK),
+ #define XLAT_VAL_4 ((unsigned) (F_SHLCK))
+ #define XLAT_STR_4 STRINGIFY(F_SHLCK)
 #endif
- XLAT_END
 };
+static
+const struct xlat lockfcmds[1] = { {
+ .data = lockfcmds_xdata,
+ .size = ARRAY_SIZE(lockfcmds_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index d0a9fa12486761de1c0f0f2251e4f6885792e493..826ed2029c07cd58fb39582ee3a2c583f26cab82 100644 (file)
@@ -73,6 +73,13 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define LOOP_SET_BLOCK_SIZE 0x4C09
 #endif
+#if defined(LOOP_CONFIGURE) || (defined(HAVE_DECL_LOOP_CONFIGURE) && HAVE_DECL_LOOP_CONFIGURE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((LOOP_CONFIGURE) == (0x4C0A), "LOOP_CONFIGURE != 0x4C0A");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define LOOP_CONFIGURE 0x4C0A
+#endif
 #if defined(LOOP_CTL_ADD) || (defined(HAVE_DECL_LOOP_CTL_ADD) && HAVE_DECL_LOOP_CTL_ADD)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
 static_assert((LOOP_CTL_ADD) == (0x4C80), "LOOP_CTL_ADD != 0x4C80");
@@ -103,26 +110,175 @@ extern const struct xlat loop_cmds[];
 
 # else
 
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat loop_cmds[] = {
+static const struct xlat_data loop_cmds_xdata[] = {
  XLAT(LOOP_SET_FD),
+ #define XLAT_VAL_0 ((unsigned) (LOOP_SET_FD))
+ #define XLAT_STR_0 STRINGIFY(LOOP_SET_FD)
  XLAT(LOOP_CLR_FD),
+ #define XLAT_VAL_1 ((unsigned) (LOOP_CLR_FD))
+ #define XLAT_STR_1 STRINGIFY(LOOP_CLR_FD)
  XLAT(LOOP_SET_STATUS),
+ #define XLAT_VAL_2 ((unsigned) (LOOP_SET_STATUS))
+ #define XLAT_STR_2 STRINGIFY(LOOP_SET_STATUS)
  XLAT(LOOP_GET_STATUS),
+ #define XLAT_VAL_3 ((unsigned) (LOOP_GET_STATUS))
+ #define XLAT_STR_3 STRINGIFY(LOOP_GET_STATUS)
  XLAT(LOOP_SET_STATUS64),
+ #define XLAT_VAL_4 ((unsigned) (LOOP_SET_STATUS64))
+ #define XLAT_STR_4 STRINGIFY(LOOP_SET_STATUS64)
  XLAT(LOOP_GET_STATUS64),
+ #define XLAT_VAL_5 ((unsigned) (LOOP_GET_STATUS64))
+ #define XLAT_STR_5 STRINGIFY(LOOP_GET_STATUS64)
  XLAT(LOOP_CHANGE_FD),
+ #define XLAT_VAL_6 ((unsigned) (LOOP_CHANGE_FD))
+ #define XLAT_STR_6 STRINGIFY(LOOP_CHANGE_FD)
  XLAT(LOOP_SET_CAPACITY),
+ #define XLAT_VAL_7 ((unsigned) (LOOP_SET_CAPACITY))
+ #define XLAT_STR_7 STRINGIFY(LOOP_SET_CAPACITY)
  XLAT(LOOP_SET_DIRECT_IO),
+ #define XLAT_VAL_8 ((unsigned) (LOOP_SET_DIRECT_IO))
+ #define XLAT_STR_8 STRINGIFY(LOOP_SET_DIRECT_IO)
  XLAT(LOOP_SET_BLOCK_SIZE),
+ #define XLAT_VAL_9 ((unsigned) (LOOP_SET_BLOCK_SIZE))
+ #define XLAT_STR_9 STRINGIFY(LOOP_SET_BLOCK_SIZE)
+ XLAT(LOOP_CONFIGURE),
+ #define XLAT_VAL_10 ((unsigned) (LOOP_CONFIGURE))
+ #define XLAT_STR_10 STRINGIFY(LOOP_CONFIGURE)
  XLAT(LOOP_CTL_ADD),
+ #define XLAT_VAL_11 ((unsigned) (LOOP_CTL_ADD))
+ #define XLAT_STR_11 STRINGIFY(LOOP_CTL_ADD)
  XLAT(LOOP_CTL_REMOVE),
+ #define XLAT_VAL_12 ((unsigned) (LOOP_CTL_REMOVE))
+ #define XLAT_STR_12 STRINGIFY(LOOP_CTL_REMOVE)
  XLAT(LOOP_CTL_GET_FREE),
- XLAT_END
+ #define XLAT_VAL_13 ((unsigned) (LOOP_CTL_GET_FREE))
+ #define XLAT_STR_13 STRINGIFY(LOOP_CTL_GET_FREE)
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat loop_cmds[1] = { {
+ .data = loop_cmds_xdata,
+ .size = ARRAY_SIZE(loop_cmds_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 939fb4802ac54af6b0074940a71ed64ff84bc2db..17cebe57ef4e74abc82a3ccc9475d474984b394e 100644 (file)
@@ -8,6 +8,7 @@ LOOP_CHANGE_FD          0x4C06
 LOOP_SET_CAPACITY      0x4C07
 LOOP_SET_DIRECT_IO     0x4C08
 LOOP_SET_BLOCK_SIZE    0x4C09
+LOOP_CONFIGURE         0x4C0A
 LOOP_CTL_ADD           0x4C80
 LOOP_CTL_REMOVE                0x4C81
 LOOP_CTL_GET_FREE      0x4C82
index a08c6a74eeac730aca14b6412c443703cc024082..a3b1216292a91e1778c6d243d931dd80feeca0a1 100644 (file)
@@ -12,43 +12,151 @@ extern const struct xlat loop_crypt_type_options[];
 
 # else
 
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat loop_crypt_type_options[] = {
+static const struct xlat_data loop_crypt_type_options_xdata[] = {
 #if defined(LO_CRYPT_NONE) || (defined(HAVE_DECL_LO_CRYPT_NONE) && HAVE_DECL_LO_CRYPT_NONE)
   XLAT(LO_CRYPT_NONE),
+ #define XLAT_VAL_0 ((unsigned) (LO_CRYPT_NONE))
+ #define XLAT_STR_0 STRINGIFY(LO_CRYPT_NONE)
 #endif
 #if defined(LO_CRYPT_XOR) || (defined(HAVE_DECL_LO_CRYPT_XOR) && HAVE_DECL_LO_CRYPT_XOR)
   XLAT(LO_CRYPT_XOR),
+ #define XLAT_VAL_1 ((unsigned) (LO_CRYPT_XOR))
+ #define XLAT_STR_1 STRINGIFY(LO_CRYPT_XOR)
 #endif
 #if defined(LO_CRYPT_DES) || (defined(HAVE_DECL_LO_CRYPT_DES) && HAVE_DECL_LO_CRYPT_DES)
   XLAT(LO_CRYPT_DES),
+ #define XLAT_VAL_2 ((unsigned) (LO_CRYPT_DES))
+ #define XLAT_STR_2 STRINGIFY(LO_CRYPT_DES)
 #endif
 #if defined(LO_CRYPT_FISH2) || (defined(HAVE_DECL_LO_CRYPT_FISH2) && HAVE_DECL_LO_CRYPT_FISH2)
   XLAT(LO_CRYPT_FISH2),
+ #define XLAT_VAL_3 ((unsigned) (LO_CRYPT_FISH2))
+ #define XLAT_STR_3 STRINGIFY(LO_CRYPT_FISH2)
 #endif
 #if defined(LO_CRYPT_BLOW) || (defined(HAVE_DECL_LO_CRYPT_BLOW) && HAVE_DECL_LO_CRYPT_BLOW)
   XLAT(LO_CRYPT_BLOW),
+ #define XLAT_VAL_4 ((unsigned) (LO_CRYPT_BLOW))
+ #define XLAT_STR_4 STRINGIFY(LO_CRYPT_BLOW)
 #endif
 #if defined(LO_CRYPT_CAST128) || (defined(HAVE_DECL_LO_CRYPT_CAST128) && HAVE_DECL_LO_CRYPT_CAST128)
   XLAT(LO_CRYPT_CAST128),
+ #define XLAT_VAL_5 ((unsigned) (LO_CRYPT_CAST128))
+ #define XLAT_STR_5 STRINGIFY(LO_CRYPT_CAST128)
 #endif
 #if defined(LO_CRYPT_IDEA) || (defined(HAVE_DECL_LO_CRYPT_IDEA) && HAVE_DECL_LO_CRYPT_IDEA)
   XLAT(LO_CRYPT_IDEA),
+ #define XLAT_VAL_6 ((unsigned) (LO_CRYPT_IDEA))
+ #define XLAT_STR_6 STRINGIFY(LO_CRYPT_IDEA)
 #endif
 #if defined(LO_CRYPT_DUMMY) || (defined(HAVE_DECL_LO_CRYPT_DUMMY) && HAVE_DECL_LO_CRYPT_DUMMY)
   XLAT(LO_CRYPT_DUMMY),
+ #define XLAT_VAL_7 ((unsigned) (LO_CRYPT_DUMMY))
+ #define XLAT_STR_7 STRINGIFY(LO_CRYPT_DUMMY)
 #endif
 #if defined(LO_CRYPT_SKIPJACK) || (defined(HAVE_DECL_LO_CRYPT_SKIPJACK) && HAVE_DECL_LO_CRYPT_SKIPJACK)
   XLAT(LO_CRYPT_SKIPJACK),
+ #define XLAT_VAL_8 ((unsigned) (LO_CRYPT_SKIPJACK))
+ #define XLAT_STR_8 STRINGIFY(LO_CRYPT_SKIPJACK)
 #endif
 #if defined(LO_CRYPT_CRYPTOAPI) || (defined(HAVE_DECL_LO_CRYPT_CRYPTOAPI) && HAVE_DECL_LO_CRYPT_CRYPTOAPI)
   XLAT(LO_CRYPT_CRYPTOAPI),
+ #define XLAT_VAL_9 ((unsigned) (LO_CRYPT_CRYPTOAPI))
+ #define XLAT_STR_9 STRINGIFY(LO_CRYPT_CRYPTOAPI)
 #endif
- XLAT_END
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat loop_crypt_type_options[1] = { {
+ .data = loop_crypt_type_options_xdata,
+ .size = ARRAY_SIZE(loop_crypt_type_options_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 5af8dfc2ac873a64af40bf6d35cabc53625163f4..b948e8fa0d79aadc34561f8d56ddb2158646938c 100644 (file)
@@ -47,22 +47,80 @@ extern const struct xlat loop_flags_options[];
 
 # else
 
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat loop_flags_options[] = {
+static const struct xlat_data loop_flags_options_xdata[] = {
  XLAT(LO_FLAGS_READ_ONLY),
+ #define XLAT_VAL_0 ((unsigned) (LO_FLAGS_READ_ONLY))
+ #define XLAT_STR_0 STRINGIFY(LO_FLAGS_READ_ONLY)
 
  XLAT(LO_FLAGS_USE_AOPS),
+ #define XLAT_VAL_1 ((unsigned) (LO_FLAGS_USE_AOPS))
+ #define XLAT_STR_1 STRINGIFY(LO_FLAGS_USE_AOPS)
 
  XLAT(LO_FLAGS_AUTOCLEAR),
+ #define XLAT_VAL_2 ((unsigned) (LO_FLAGS_AUTOCLEAR))
+ #define XLAT_STR_2 STRINGIFY(LO_FLAGS_AUTOCLEAR)
 
  XLAT(LO_FLAGS_PARTSCAN),
+ #define XLAT_VAL_3 ((unsigned) (LO_FLAGS_PARTSCAN))
+ #define XLAT_STR_3 STRINGIFY(LO_FLAGS_PARTSCAN)
 
  XLAT(LO_FLAGS_DIRECT_IO),
- XLAT_END
+ #define XLAT_VAL_4 ((unsigned) (LO_FLAGS_DIRECT_IO))
+ #define XLAT_STR_4 STRINGIFY(LO_FLAGS_DIRECT_IO)
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat loop_flags_options[1] = { {
+ .data = loop_flags_options_xdata,
+ .size = ARRAY_SIZE(loop_flags_options_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index cb5ff789f897457a678cb2a538dec19c55f7982e..03d11c4f3102b699130f95c897654b5159e61cdb 100644 (file)
@@ -1,3 +1,5 @@
+#enum
+#include <linux/loop.h>
 LO_FLAGS_READ_ONLY     1
 /* Added in v2.6.11-732-gf3f28e4, Removed in v3.2-rc1~49^2~5^2~3 */
 LO_FLAGS_USE_AOPS      2
diff --git a/xlat/loop_flags_options.m4 b/xlat/loop_flags_options.m4
new file mode 100644 (file)
index 0000000..5802d06
--- /dev/null
@@ -0,0 +1,11 @@
+dnl Generated by ./xlat/gen.sh from ./xlat/loop_flags_options.in; do not edit.
+AC_DEFUN([st_CHECK_ENUMS_loop_flags_options],[
+AC_CHECK_DECLS(m4_normalize([
+LO_FLAGS_READ_ONLY,
+LO_FLAGS_USE_AOPS,
+LO_FLAGS_AUTOCLEAR,
+LO_FLAGS_PARTSCAN,
+LO_FLAGS_DIRECT_IO
+]),,, [
+#include <linux/loop.h>
+])])])
index f5f4c5f167e9faac59b68afca34aa26b47dedcbf..9f5b8d7663133824b3b441b46d20176080d94109 100644 (file)
@@ -52,6 +52,20 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define LWTUNNEL_ENCAP_BPF 6
 #endif
+#if defined(LWTUNNEL_ENCAP_SEG6_LOCAL) || (defined(HAVE_DECL_LWTUNNEL_ENCAP_SEG6_LOCAL) && HAVE_DECL_LWTUNNEL_ENCAP_SEG6_LOCAL)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((LWTUNNEL_ENCAP_SEG6_LOCAL) == (7), "LWTUNNEL_ENCAP_SEG6_LOCAL != 7");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define LWTUNNEL_ENCAP_SEG6_LOCAL 7
+#endif
+#if defined(LWTUNNEL_ENCAP_RPL) || (defined(HAVE_DECL_LWTUNNEL_ENCAP_RPL) && HAVE_DECL_LWTUNNEL_ENCAP_RPL)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((LWTUNNEL_ENCAP_RPL) == (8), "LWTUNNEL_ENCAP_RPL != 8");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define LWTUNNEL_ENCAP_RPL 8
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
@@ -61,18 +75,118 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat lwtunnel_encap_types[] = {
- XLAT(LWTUNNEL_ENCAP_NONE),
- XLAT(LWTUNNEL_ENCAP_MPLS),
- XLAT(LWTUNNEL_ENCAP_IP),
- XLAT(LWTUNNEL_ENCAP_ILA),
- XLAT(LWTUNNEL_ENCAP_IP6),
- XLAT(LWTUNNEL_ENCAP_SEG6),
- XLAT(LWTUNNEL_ENCAP_BPF),
- XLAT_END
+static const struct xlat_data lwtunnel_encap_types_xdata[] = {
+ [LWTUNNEL_ENCAP_NONE] = XLAT(LWTUNNEL_ENCAP_NONE),
+ #define XLAT_VAL_0 ((unsigned) (LWTUNNEL_ENCAP_NONE))
+ #define XLAT_STR_0 STRINGIFY(LWTUNNEL_ENCAP_NONE)
+ [LWTUNNEL_ENCAP_MPLS] = XLAT(LWTUNNEL_ENCAP_MPLS),
+ #define XLAT_VAL_1 ((unsigned) (LWTUNNEL_ENCAP_MPLS))
+ #define XLAT_STR_1 STRINGIFY(LWTUNNEL_ENCAP_MPLS)
+ [LWTUNNEL_ENCAP_IP] = XLAT(LWTUNNEL_ENCAP_IP),
+ #define XLAT_VAL_2 ((unsigned) (LWTUNNEL_ENCAP_IP))
+ #define XLAT_STR_2 STRINGIFY(LWTUNNEL_ENCAP_IP)
+ [LWTUNNEL_ENCAP_ILA] = XLAT(LWTUNNEL_ENCAP_ILA),
+ #define XLAT_VAL_3 ((unsigned) (LWTUNNEL_ENCAP_ILA))
+ #define XLAT_STR_3 STRINGIFY(LWTUNNEL_ENCAP_ILA)
+ [LWTUNNEL_ENCAP_IP6] = XLAT(LWTUNNEL_ENCAP_IP6),
+ #define XLAT_VAL_4 ((unsigned) (LWTUNNEL_ENCAP_IP6))
+ #define XLAT_STR_4 STRINGIFY(LWTUNNEL_ENCAP_IP6)
+ [LWTUNNEL_ENCAP_SEG6] = XLAT(LWTUNNEL_ENCAP_SEG6),
+ #define XLAT_VAL_5 ((unsigned) (LWTUNNEL_ENCAP_SEG6))
+ #define XLAT_STR_5 STRINGIFY(LWTUNNEL_ENCAP_SEG6)
+ [LWTUNNEL_ENCAP_BPF] = XLAT(LWTUNNEL_ENCAP_BPF),
+ #define XLAT_VAL_6 ((unsigned) (LWTUNNEL_ENCAP_BPF))
+ #define XLAT_STR_6 STRINGIFY(LWTUNNEL_ENCAP_BPF)
+ [LWTUNNEL_ENCAP_SEG6_LOCAL] = XLAT(LWTUNNEL_ENCAP_SEG6_LOCAL),
+ #define XLAT_VAL_7 ((unsigned) (LWTUNNEL_ENCAP_SEG6_LOCAL))
+ #define XLAT_STR_7 STRINGIFY(LWTUNNEL_ENCAP_SEG6_LOCAL)
+ [LWTUNNEL_ENCAP_RPL] = XLAT(LWTUNNEL_ENCAP_RPL),
+ #define XLAT_VAL_8 ((unsigned) (LWTUNNEL_ENCAP_RPL))
+ #define XLAT_STR_8 STRINGIFY(LWTUNNEL_ENCAP_RPL)
 };
+static
+const struct xlat lwtunnel_encap_types[1] = { {
+ .data = lwtunnel_encap_types_xdata,
+ .size = ARRAY_SIZE(lwtunnel_encap_types_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 4654bd4a9db629ec888e37b7b4cbfc33006051ca..90a31127d18cbdb0fb84a7bbcce499bd59bca687 100644 (file)
@@ -1,7 +1,10 @@
-LWTUNNEL_ENCAP_NONE    0
-LWTUNNEL_ENCAP_MPLS    1
-LWTUNNEL_ENCAP_IP      2
-LWTUNNEL_ENCAP_ILA     3
-LWTUNNEL_ENCAP_IP6     4
-LWTUNNEL_ENCAP_SEG6    5
-LWTUNNEL_ENCAP_BPF     6
+#value_indexed
+LWTUNNEL_ENCAP_NONE            0
+LWTUNNEL_ENCAP_MPLS            1
+LWTUNNEL_ENCAP_IP              2
+LWTUNNEL_ENCAP_ILA             3
+LWTUNNEL_ENCAP_IP6             4
+LWTUNNEL_ENCAP_SEG6            5
+LWTUNNEL_ENCAP_BPF             6
+LWTUNNEL_ENCAP_SEG6_LOCAL      7
+LWTUNNEL_ENCAP_RPL             8
index c391c004b898db3d4864cbaadb97263e7f237c04..a389107a9b89ccad2bbe4d75c67e721be6cd0973 100644 (file)
@@ -212,6 +212,20 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 # define MADV_KEEPONFORK 19
 #endif
 #endif
+#if defined(MADV_COLD) || (defined(HAVE_DECL_MADV_COLD) && HAVE_DECL_MADV_COLD)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((MADV_COLD) == (20), "MADV_COLD != 20");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define MADV_COLD 20
+#endif
+#if defined(MADV_PAGEOUT) || (defined(HAVE_DECL_MADV_PAGEOUT) && HAVE_DECL_MADV_PAGEOUT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((MADV_PAGEOUT) == (21), "MADV_PAGEOUT != 21");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define MADV_PAGEOUT 21
+#endif
 #if defined(MADV_HWPOISON) || (defined(HAVE_DECL_MADV_HWPOISON) && HAVE_DECL_MADV_HWPOISON)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
 static_assert((MADV_HWPOISON) == (100), "MADV_HWPOISON != 100");
@@ -235,86 +249,398 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat madvise_cmds[] = {
+static const struct xlat_data madvise_cmds_xdata[] = {
 
 
  XLAT(MADV_NORMAL),
+ #define XLAT_VAL_0 ((unsigned) (MADV_NORMAL))
+ #define XLAT_STR_0 STRINGIFY(MADV_NORMAL)
 
  XLAT(MADV_RANDOM),
+ #define XLAT_VAL_1 ((unsigned) (MADV_RANDOM))
+ #define XLAT_STR_1 STRINGIFY(MADV_RANDOM)
 
  XLAT(MADV_SEQUENTIAL),
+ #define XLAT_VAL_2 ((unsigned) (MADV_SEQUENTIAL))
+ #define XLAT_STR_2 STRINGIFY(MADV_SEQUENTIAL)
 
  XLAT(MADV_WILLNEED),
+ #define XLAT_VAL_3 ((unsigned) (MADV_WILLNEED))
+ #define XLAT_STR_3 STRINGIFY(MADV_WILLNEED)
 
 #if defined __alpha__
  XLAT(MADV_DONTNEED),
+ #define XLAT_VAL_4 ((unsigned) (MADV_DONTNEED))
+ #define XLAT_STR_4 STRINGIFY(MADV_DONTNEED)
 #else
  XLAT(MADV_DONTNEED),
+ #define XLAT_VAL_5 ((unsigned) (MADV_DONTNEED))
+ #define XLAT_STR_5 STRINGIFY(MADV_DONTNEED)
 #endif
 
  XLAT(MADV_FREE),
+ #define XLAT_VAL_6 ((unsigned) (MADV_FREE))
+ #define XLAT_STR_6 STRINGIFY(MADV_FREE)
 
  XLAT(MADV_REMOVE),
+ #define XLAT_VAL_7 ((unsigned) (MADV_REMOVE))
+ #define XLAT_STR_7 STRINGIFY(MADV_REMOVE)
 
  XLAT(MADV_DONTFORK),
+ #define XLAT_VAL_8 ((unsigned) (MADV_DONTFORK))
+ #define XLAT_STR_8 STRINGIFY(MADV_DONTFORK)
 
  XLAT(MADV_DOFORK),
+ #define XLAT_VAL_9 ((unsigned) (MADV_DOFORK))
+ #define XLAT_STR_9 STRINGIFY(MADV_DOFORK)
 
 #if defined __hppa__
  XLAT(MADV_MERGEABLE),
+ #define XLAT_VAL_10 ((unsigned) (MADV_MERGEABLE))
+ #define XLAT_STR_10 STRINGIFY(MADV_MERGEABLE)
 #else
  XLAT(MADV_MERGEABLE),
+ #define XLAT_VAL_11 ((unsigned) (MADV_MERGEABLE))
+ #define XLAT_STR_11 STRINGIFY(MADV_MERGEABLE)
 #endif
 
 #if defined __hppa__
  XLAT(MADV_UNMERGEABLE),
+ #define XLAT_VAL_12 ((unsigned) (MADV_UNMERGEABLE))
+ #define XLAT_STR_12 STRINGIFY(MADV_UNMERGEABLE)
 #else
  XLAT(MADV_UNMERGEABLE),
+ #define XLAT_VAL_13 ((unsigned) (MADV_UNMERGEABLE))
+ #define XLAT_STR_13 STRINGIFY(MADV_UNMERGEABLE)
 #endif
 
 #if defined __hppa__
  XLAT(MADV_HUGEPAGE),
+ #define XLAT_VAL_14 ((unsigned) (MADV_HUGEPAGE))
+ #define XLAT_STR_14 STRINGIFY(MADV_HUGEPAGE)
 #else
  XLAT(MADV_HUGEPAGE),
+ #define XLAT_VAL_15 ((unsigned) (MADV_HUGEPAGE))
+ #define XLAT_STR_15 STRINGIFY(MADV_HUGEPAGE)
 #endif
 
 #if defined __hppa__
  XLAT(MADV_NOHUGEPAGE),
+ #define XLAT_VAL_16 ((unsigned) (MADV_NOHUGEPAGE))
+ #define XLAT_STR_16 STRINGIFY(MADV_NOHUGEPAGE)
 #else
  XLAT(MADV_NOHUGEPAGE),
+ #define XLAT_VAL_17 ((unsigned) (MADV_NOHUGEPAGE))
+ #define XLAT_STR_17 STRINGIFY(MADV_NOHUGEPAGE)
 #endif
 
 #if defined __hppa__
  XLAT(MADV_DONTDUMP),
+ #define XLAT_VAL_18 ((unsigned) (MADV_DONTDUMP))
+ #define XLAT_STR_18 STRINGIFY(MADV_DONTDUMP)
 #else
  XLAT(MADV_DONTDUMP),
+ #define XLAT_VAL_19 ((unsigned) (MADV_DONTDUMP))
+ #define XLAT_STR_19 STRINGIFY(MADV_DONTDUMP)
 #endif
 
 #if defined __hppa__
  XLAT(MADV_DODUMP),
+ #define XLAT_VAL_20 ((unsigned) (MADV_DODUMP))
+ #define XLAT_STR_20 STRINGIFY(MADV_DODUMP)
 #else
  XLAT(MADV_DODUMP),
+ #define XLAT_VAL_21 ((unsigned) (MADV_DODUMP))
+ #define XLAT_STR_21 STRINGIFY(MADV_DODUMP)
 #endif
 
 #if defined __hppa__
  XLAT(MADV_WIPEONFORK),
+ #define XLAT_VAL_22 ((unsigned) (MADV_WIPEONFORK))
+ #define XLAT_STR_22 STRINGIFY(MADV_WIPEONFORK)
 #else
  XLAT(MADV_WIPEONFORK),
+ #define XLAT_VAL_23 ((unsigned) (MADV_WIPEONFORK))
+ #define XLAT_STR_23 STRINGIFY(MADV_WIPEONFORK)
 #endif
 
 #if defined __hppa__
  XLAT(MADV_KEEPONFORK),
+ #define XLAT_VAL_24 ((unsigned) (MADV_KEEPONFORK))
+ #define XLAT_STR_24 STRINGIFY(MADV_KEEPONFORK)
 #else
  XLAT(MADV_KEEPONFORK),
+ #define XLAT_VAL_25 ((unsigned) (MADV_KEEPONFORK))
+ #define XLAT_STR_25 STRINGIFY(MADV_KEEPONFORK)
 #endif
 
+ XLAT(MADV_COLD),
+ #define XLAT_VAL_26 ((unsigned) (MADV_COLD))
+ #define XLAT_STR_26 STRINGIFY(MADV_COLD)
+
+ XLAT(MADV_PAGEOUT),
+ #define XLAT_VAL_27 ((unsigned) (MADV_PAGEOUT))
+ #define XLAT_STR_27 STRINGIFY(MADV_PAGEOUT)
+
  XLAT(MADV_HWPOISON),
+ #define XLAT_VAL_28 ((unsigned) (MADV_HWPOISON))
+ #define XLAT_STR_28 STRINGIFY(MADV_HWPOISON)
 
  XLAT(MADV_SOFT_OFFLINE),
- XLAT_END
+ #define XLAT_VAL_29 ((unsigned) (MADV_SOFT_OFFLINE))
+ #define XLAT_STR_29 STRINGIFY(MADV_SOFT_OFFLINE)
 };
+static
+const struct xlat madvise_cmds[1] = { {
+ .data = madvise_cmds_xdata,
+ .size = ARRAY_SIZE(madvise_cmds_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index c836e360c2f28d222b9b2684cfa8e0719000b0a6..3e8d6358041d335be27d6848ee136994fd2c31e7 100644 (file)
@@ -70,6 +70,10 @@ MADV_KEEPONFORK      72
 MADV_KEEPONFORK        19
 #endif
 
+MADV_COLD      20
+
+MADV_PAGEOUT   21
+
 MADV_HWPOISON  100
 
 MADV_SOFT_OFFLINE      101
diff --git a/xlat/mbind_flags.h b/xlat/mbind_flags.h
new file mode 100644 (file)
index 0000000..29949ea
--- /dev/null
@@ -0,0 +1,84 @@
+/* Generated by ./xlat/gen.sh from ./xlat/mbind_flags.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(MPOL_MF_STRICT) || (defined(HAVE_DECL_MPOL_MF_STRICT) && HAVE_DECL_MPOL_MF_STRICT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((MPOL_MF_STRICT) == (1), "MPOL_MF_STRICT != 1");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define MPOL_MF_STRICT 1
+#endif
+#if defined(MPOL_MF_MOVE) || (defined(HAVE_DECL_MPOL_MF_MOVE) && HAVE_DECL_MPOL_MF_MOVE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((MPOL_MF_MOVE) == (2), "MPOL_MF_MOVE != 2");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define MPOL_MF_MOVE 2
+#endif
+#if defined(MPOL_MF_MOVE_ALL) || (defined(HAVE_DECL_MPOL_MF_MOVE_ALL) && HAVE_DECL_MPOL_MF_MOVE_ALL)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((MPOL_MF_MOVE_ALL) == (4), "MPOL_MF_MOVE_ALL != 4");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define MPOL_MF_MOVE_ALL 4
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat mbind_flags in mpers mode
+
+# else
+
+static const struct xlat_data mbind_flags_xdata[] = {
+ XLAT(MPOL_MF_STRICT),
+ #define XLAT_VAL_0 ((unsigned) (MPOL_MF_STRICT))
+ #define XLAT_STR_0 STRINGIFY(MPOL_MF_STRICT)
+ XLAT(MPOL_MF_MOVE),
+ #define XLAT_VAL_1 ((unsigned) (MPOL_MF_MOVE))
+ #define XLAT_STR_1 STRINGIFY(MPOL_MF_MOVE)
+ XLAT(MPOL_MF_MOVE_ALL),
+ #define XLAT_VAL_2 ((unsigned) (MPOL_MF_MOVE_ALL))
+ #define XLAT_STR_2 STRINGIFY(MPOL_MF_MOVE_ALL)
+};
+static
+const struct xlat mbind_flags[1] = { {
+ .data = mbind_flags_xdata,
+ .size = ARRAY_SIZE(mbind_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/mbind_flags.in b/xlat/mbind_flags.in
new file mode 100644 (file)
index 0000000..04f3ae6
--- /dev/null
@@ -0,0 +1,3 @@
+MPOL_MF_STRICT         1
+MPOL_MF_MOVE           2
+MPOL_MF_MOVE_ALL       4
diff --git a/xlat/mbindflags.h b/xlat/mbindflags.h
deleted file mode 100644 (file)
index ea4e1ec..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/* Generated by ./xlat/gen.sh from ./xlat/mbindflags.in; do not edit. */
-
-#include "gcc_compat.h"
-#include "static_assert.h"
-
-#if defined(MPOL_MF_STRICT) || (defined(HAVE_DECL_MPOL_MF_STRICT) && HAVE_DECL_MPOL_MF_STRICT)
-DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((MPOL_MF_STRICT) == (1), "MPOL_MF_STRICT != 1");
-DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
-#else
-# define MPOL_MF_STRICT 1
-#endif
-#if defined(MPOL_MF_MOVE) || (defined(HAVE_DECL_MPOL_MF_MOVE) && HAVE_DECL_MPOL_MF_MOVE)
-DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((MPOL_MF_MOVE) == (2), "MPOL_MF_MOVE != 2");
-DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
-#else
-# define MPOL_MF_MOVE 2
-#endif
-#if defined(MPOL_MF_MOVE_ALL) || (defined(HAVE_DECL_MPOL_MF_MOVE_ALL) && HAVE_DECL_MPOL_MF_MOVE_ALL)
-DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((MPOL_MF_MOVE_ALL) == (4), "MPOL_MF_MOVE_ALL != 4");
-DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
-#else
-# define MPOL_MF_MOVE_ALL 4
-#endif
-
-#ifndef XLAT_MACROS_ONLY
-
-# ifdef IN_MPERS
-
-#  error static const struct xlat mbindflags in mpers mode
-
-# else
-
-static
-const struct xlat mbindflags[] = {
- XLAT(MPOL_MF_STRICT),
- XLAT(MPOL_MF_MOVE),
- XLAT(MPOL_MF_MOVE_ALL),
- XLAT_END
-};
-
-# endif /* !IN_MPERS */
-
-#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/mbindflags.in b/xlat/mbindflags.in
deleted file mode 100644 (file)
index 04f3ae6..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-MPOL_MF_STRICT         1
-MPOL_MF_MOVE           2
-MPOL_MF_MOVE_ALL       4
index f70c693b8e639ec5625516c6b244a24793523e36..94f8290460a52694dfd9c923f38081747f6b7ece 100644 (file)
 
 # else
 
-static
-const struct xlat mctl_sync[] = {
+static const struct xlat_data mctl_sync_xdata[] = {
 #if defined(MS_SYNC) || (defined(HAVE_DECL_MS_SYNC) && HAVE_DECL_MS_SYNC)
   XLAT(MS_SYNC),
+ #define XLAT_VAL_0 ((unsigned) (MS_SYNC))
+ #define XLAT_STR_0 STRINGIFY(MS_SYNC)
 #endif
 #if defined(MS_ASYNC) || (defined(HAVE_DECL_MS_ASYNC) && HAVE_DECL_MS_ASYNC)
   XLAT(MS_ASYNC),
+ #define XLAT_VAL_1 ((unsigned) (MS_ASYNC))
+ #define XLAT_STR_1 STRINGIFY(MS_ASYNC)
 #endif
 #if defined(MS_INVALIDATE) || (defined(HAVE_DECL_MS_INVALIDATE) && HAVE_DECL_MS_INVALIDATE)
   XLAT(MS_INVALIDATE),
+ #define XLAT_VAL_2 ((unsigned) (MS_INVALIDATE))
+ #define XLAT_STR_2 STRINGIFY(MS_INVALIDATE)
 #endif
- XLAT_END
 };
+static
+const struct xlat mctl_sync[1] = { {
+ .data = mctl_sync_xdata,
+ .size = ARRAY_SIZE(mctl_sync_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 15b066c3f0a37ee107db5db30200ea397b9e4c50..e4b2408cfdb272cced0f7a10393fd20b81fa9210 100644 (file)
@@ -3,6 +3,20 @@
 #include "gcc_compat.h"
 #include "static_assert.h"
 
+#if defined(MDB_FLAGS_OFFLOAD) || (defined(HAVE_DECL_MDB_FLAGS_OFFLOAD) && HAVE_DECL_MDB_FLAGS_OFFLOAD)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((MDB_FLAGS_OFFLOAD) == ((1 << 0)), "MDB_FLAGS_OFFLOAD != (1 << 0)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define MDB_FLAGS_OFFLOAD (1 << 0)
+#endif
+#if defined(MDB_FLAGS_FAST_LEAVE) || (defined(HAVE_DECL_MDB_FLAGS_FAST_LEAVE) && HAVE_DECL_MDB_FLAGS_FAST_LEAVE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((MDB_FLAGS_FAST_LEAVE) == ((1 << 1)), "MDB_FLAGS_FAST_LEAVE != (1 << 1)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define MDB_FLAGS_FAST_LEAVE (1 << 1)
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
 
 # 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
+static const struct xlat_data mdb_flags_xdata[] = {
+ XLAT(MDB_FLAGS_OFFLOAD),
+ #define XLAT_VAL_0 ((unsigned) (MDB_FLAGS_OFFLOAD))
+ #define XLAT_STR_0 STRINGIFY(MDB_FLAGS_OFFLOAD)
+ XLAT(MDB_FLAGS_FAST_LEAVE),
+ #define XLAT_VAL_1 ((unsigned) (MDB_FLAGS_FAST_LEAVE))
+ #define XLAT_STR_1 STRINGIFY(MDB_FLAGS_FAST_LEAVE)
 };
+static
+const struct xlat mdb_flags[1] = { {
+ .data = mdb_flags_xdata,
+ .size = ARRAY_SIZE(mdb_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 4c2f1ed37d9eb65ca9db3533389df917dd5219c2..7df75c66400bc675cb2c4bf5203b5995fbcecd7c 100644 (file)
@@ -1 +1,2 @@
-MDB_FLAGS_OFFLOAD
+MDB_FLAGS_OFFLOAD      (1 << 0)
+MDB_FLAGS_FAST_LEAVE   (1 << 1)
index f5ca3ed2a84b6868e69fdba0a83713f273d51246..4a01b65107f0a5315006a9ad94a6a3b8c34b026d 100644 (file)
 
 # else
 
-static
-const struct xlat mdb_states[] = {
+static const struct xlat_data mdb_states_xdata[] = {
 #if defined(MDB_TEMPORARY) || (defined(HAVE_DECL_MDB_TEMPORARY) && HAVE_DECL_MDB_TEMPORARY)
   XLAT(MDB_TEMPORARY),
+ #define XLAT_VAL_0 ((unsigned) (MDB_TEMPORARY))
+ #define XLAT_STR_0 STRINGIFY(MDB_TEMPORARY)
 #endif
 #if defined(MDB_PERMANENT) || (defined(HAVE_DECL_MDB_PERMANENT) && HAVE_DECL_MDB_PERMANENT)
   XLAT(MDB_PERMANENT),
+ #define XLAT_VAL_1 ((unsigned) (MDB_PERMANENT))
+ #define XLAT_STR_1 STRINGIFY(MDB_PERMANENT)
 #endif
- XLAT_END
 };
-
+static
+const struct xlat mdb_states[1] = { {
+ .data = mdb_states_xdata,
+ .size = ARRAY_SIZE(mdb_states_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 71e29605ce6d91b954e789e923a9f24bf5769a2a..910d152027fc5bafc088026710dd853e0a7b0ab6 100644 (file)
@@ -68,19 +68,107 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat membarrier_cmds[] = {
+static const struct xlat_data membarrier_cmds_xdata[] = {
  XLAT(MEMBARRIER_CMD_QUERY),
+ #define XLAT_VAL_0 ((unsigned) (MEMBARRIER_CMD_QUERY))
+ #define XLAT_STR_0 STRINGIFY(MEMBARRIER_CMD_QUERY)
  XLAT(MEMBARRIER_CMD_GLOBAL),
+ #define XLAT_VAL_1 ((unsigned) (MEMBARRIER_CMD_GLOBAL))
+ #define XLAT_STR_1 STRINGIFY(MEMBARRIER_CMD_GLOBAL)
  XLAT(MEMBARRIER_CMD_GLOBAL_EXPEDITED),
+ #define XLAT_VAL_2 ((unsigned) (MEMBARRIER_CMD_GLOBAL_EXPEDITED))
+ #define XLAT_STR_2 STRINGIFY(MEMBARRIER_CMD_GLOBAL_EXPEDITED)
  XLAT(MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED),
+ #define XLAT_VAL_3 ((unsigned) (MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED))
+ #define XLAT_STR_3 STRINGIFY(MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED)
  XLAT(MEMBARRIER_CMD_PRIVATE_EXPEDITED),
+ #define XLAT_VAL_4 ((unsigned) (MEMBARRIER_CMD_PRIVATE_EXPEDITED))
+ #define XLAT_STR_4 STRINGIFY(MEMBARRIER_CMD_PRIVATE_EXPEDITED)
  XLAT(MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED),
+ #define XLAT_VAL_5 ((unsigned) (MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED))
+ #define XLAT_STR_5 STRINGIFY(MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED)
  XLAT(MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE),
+ #define XLAT_VAL_6 ((unsigned) (MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE))
+ #define XLAT_STR_6 STRINGIFY(MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE)
  XLAT(MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE),
- XLAT_END
+ #define XLAT_VAL_7 ((unsigned) (MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE))
+ #define XLAT_STR_7 STRINGIFY(MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE)
 };
+static
+const struct xlat membarrier_cmds[1] = { {
+ .data = membarrier_cmds_xdata,
+ .size = ARRAY_SIZE(membarrier_cmds_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 1fd77d18b5861fe0b36695a0e4dcadc0fcc348ee..c5f3b6769cba5680f13ca3ebc8b0db48527d3e47 100644 (file)
@@ -33,14 +33,52 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat memfd_create_flags[] = {
+static const struct xlat_data memfd_create_flags_xdata[] = {
  XLAT(MFD_CLOEXEC),
+ #define XLAT_VAL_0 ((unsigned) (MFD_CLOEXEC))
+ #define XLAT_STR_0 STRINGIFY(MFD_CLOEXEC)
  XLAT(MFD_ALLOW_SEALING),
+ #define XLAT_VAL_1 ((unsigned) (MFD_ALLOW_SEALING))
+ #define XLAT_STR_1 STRINGIFY(MFD_ALLOW_SEALING)
  XLAT(MFD_HUGETLB),
- XLAT_END
+ #define XLAT_VAL_2 ((unsigned) (MFD_HUGETLB))
+ #define XLAT_STR_2 STRINGIFY(MFD_HUGETLB)
 };
+static
+const struct xlat memfd_create_flags[1] = { {
+ .data = memfd_create_flags_xdata,
+ .size = ARRAY_SIZE(memfd_create_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/mempolicyflags.h b/xlat/mempolicyflags.h
deleted file mode 100644 (file)
index a68fcec..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Generated by ./xlat/gen.sh from ./xlat/mempolicyflags.in; do not edit. */
-
-#include "gcc_compat.h"
-#include "static_assert.h"
-
-#if defined(MPOL_F_NODE) || (defined(HAVE_DECL_MPOL_F_NODE) && HAVE_DECL_MPOL_F_NODE)
-DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((MPOL_F_NODE) == (1), "MPOL_F_NODE != 1");
-DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
-#else
-# define MPOL_F_NODE 1
-#endif
-#if defined(MPOL_F_ADDR) || (defined(HAVE_DECL_MPOL_F_ADDR) && HAVE_DECL_MPOL_F_ADDR)
-DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((MPOL_F_ADDR) == (2), "MPOL_F_ADDR != 2");
-DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
-#else
-# define MPOL_F_ADDR 2
-#endif
-
-#ifndef XLAT_MACROS_ONLY
-
-# ifdef IN_MPERS
-
-#  error static const struct xlat mempolicyflags in mpers mode
-
-# else
-
-static
-const struct xlat mempolicyflags[] = {
- XLAT(MPOL_F_NODE),
- XLAT(MPOL_F_ADDR),
- XLAT_END
-};
-
-# endif /* !IN_MPERS */
-
-#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/mempolicyflags.in b/xlat/mempolicyflags.in
deleted file mode 100644 (file)
index bdcc6f3..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-MPOL_F_NODE    1
-MPOL_F_ADDR    2
index f2ef3e4e89b082948ab1f2b8261fcd8f8110946a..389b772fa835f2dec8132170e1a42c700b693ef6 100644 (file)
@@ -19,12 +19,30 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat mlock_flags[] = {
+static const struct xlat_data mlock_flags_xdata[] = {
  XLAT(MLOCK_ONFAULT),
- XLAT_END
+ #define XLAT_VAL_0 ((unsigned) (MLOCK_ONFAULT))
+ #define XLAT_STR_0 STRINGIFY(MLOCK_ONFAULT)
 };
-
+static
+const struct xlat mlock_flags[1] = { {
+ .data = mlock_flags_xdata,
+ .size = ARRAY_SIZE(mlock_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 718ce3f86251019499f6fd219a6a401605e909e3..033a6889403bbe83a084bbc90822a025abfe541e 100644 (file)
@@ -57,20 +57,88 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat mlockall_flags[] = {
+static const struct xlat_data mlockall_flags_xdata[] = {
 #if defined __alpha__ || defined __powerpc__ || defined __powerpc64__ || defined __sparc__
  XLAT(MCL_CURRENT),
+ #define XLAT_VAL_0 ((unsigned) (MCL_CURRENT))
+ #define XLAT_STR_0 STRINGIFY(MCL_CURRENT)
  XLAT(MCL_FUTURE),
+ #define XLAT_VAL_1 ((unsigned) (MCL_FUTURE))
+ #define XLAT_STR_1 STRINGIFY(MCL_FUTURE)
  XLAT(MCL_ONFAULT),
+ #define XLAT_VAL_2 ((unsigned) (MCL_ONFAULT))
+ #define XLAT_STR_2 STRINGIFY(MCL_ONFAULT)
 #else
  XLAT(MCL_CURRENT),
+ #define XLAT_VAL_3 ((unsigned) (MCL_CURRENT))
+ #define XLAT_STR_3 STRINGIFY(MCL_CURRENT)
  XLAT(MCL_FUTURE),
+ #define XLAT_VAL_4 ((unsigned) (MCL_FUTURE))
+ #define XLAT_STR_4 STRINGIFY(MCL_FUTURE)
  XLAT(MCL_ONFAULT),
+ #define XLAT_VAL_5 ((unsigned) (MCL_ONFAULT))
+ #define XLAT_STR_5 STRINGIFY(MCL_ONFAULT)
 #endif
- XLAT_END
 };
+static
+const struct xlat mlockall_flags[1] = { {
+ .data = mlockall_flags_xdata,
+ .size = ARRAY_SIZE(mlockall_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index b82de09470b3164863c7b2d1f7af712d336ed964..5a8f7e9e3ff47af09230daa135e8cf0e8bf3e371 100644 (file)
@@ -397,7 +397,18 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define MAP_SYNC 0x80000
 #endif
-#if defined MAP_UNINITIALIZED && MAP_UNINITIALIZED > 0
+#if defined MAP_UNINITIALIZED && MAP_UNINITIALIZED == 0
+# ifndef STRACE_WORKAROUND_FOR_MAP_UNINITIALIZED
+#  define STRACE_WORKAROUND_FOR_MAP_UNINITIALIZED
+#  undef MAP_UNINITIALIZED
+# endif
+#endif
+#if defined(MAP_UNINITIALIZED) || (defined(HAVE_DECL_MAP_UNINITIALIZED) && HAVE_DECL_MAP_UNINITIALIZED)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((MAP_UNINITIALIZED) == (0x4000000), "MAP_UNINITIALIZED != 0x4000000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define MAP_UNINITIALIZED 0x4000000
 #endif
 #if defined __alpha__
 #if defined(MAP_FIXED_NOREPLACE) || (defined(HAVE_DECL_MAP_FIXED_NOREPLACE) && HAVE_DECL_MAP_FIXED_NOREPLACE)
@@ -465,37 +476,58 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat mmap_flags[] = {
+static const struct xlat_data mmap_flags_xdata[] = {
 
 
  XLAT(MAP_SHARED),
+ #define XLAT_VAL_0 ((unsigned) (MAP_SHARED))
+ #define XLAT_STR_0 STRINGIFY(MAP_SHARED)
 
  XLAT(MAP_PRIVATE),
+ #define XLAT_VAL_1 ((unsigned) (MAP_PRIVATE))
+ #define XLAT_STR_1 STRINGIFY(MAP_PRIVATE)
 
  XLAT(MAP_SHARED_VALIDATE),
+ #define XLAT_VAL_2 ((unsigned) (MAP_SHARED_VALIDATE))
+ #define XLAT_STR_2 STRINGIFY(MAP_SHARED_VALIDATE)
 
 #if defined __hppa__
  XLAT(MAP_FIXED),
+ #define XLAT_VAL_3 ((unsigned) (MAP_FIXED))
+ #define XLAT_STR_3 STRINGIFY(MAP_FIXED)
 #elif defined __alpha__
  XLAT(MAP_FIXED),
+ #define XLAT_VAL_4 ((unsigned) (MAP_FIXED))
+ #define XLAT_STR_4 STRINGIFY(MAP_FIXED)
 #else
  XLAT(MAP_FIXED),
+ #define XLAT_VAL_5 ((unsigned) (MAP_FIXED))
+ #define XLAT_STR_5 STRINGIFY(MAP_FIXED)
 #endif
 
 #if defined __alpha__ || defined __hppa__
  XLAT(MAP_ANONYMOUS),
+ #define XLAT_VAL_6 ((unsigned) (MAP_ANONYMOUS))
+ #define XLAT_STR_6 STRINGIFY(MAP_ANONYMOUS)
 #elif defined __mips__ || defined __xtensa__
  XLAT(MAP_ANONYMOUS),
+ #define XLAT_VAL_7 ((unsigned) (MAP_ANONYMOUS))
+ #define XLAT_STR_7 STRINGIFY(MAP_ANONYMOUS)
 #else
  XLAT(MAP_ANONYMOUS),
+ #define XLAT_VAL_8 ((unsigned) (MAP_ANONYMOUS))
+ #define XLAT_STR_8 STRINGIFY(MAP_ANONYMOUS)
 #endif
 
 #if defined __x86_64__ || defined __i386__
  XLAT(MAP_32BIT),
+ #define XLAT_VAL_9 ((unsigned) (MAP_32BIT))
+ #define XLAT_STR_9 STRINGIFY(MAP_32BIT)
 #else
 #if defined(MAP_32BIT) || (defined(HAVE_DECL_MAP_32BIT) && HAVE_DECL_MAP_32BIT)
   XLAT(MAP_32BIT),
+ #define XLAT_VAL_10 ((unsigned) (MAP_32BIT))
+ #define XLAT_STR_10 STRINGIFY(MAP_32BIT)
 #endif
 #endif
 
@@ -510,176 +542,807 @@ const struct xlat mmap_flags[] = {
 
 #if defined __mips__ || defined __xtensa__
  XLAT(MAP_RENAME),
+ #define XLAT_VAL_11 ((unsigned) (MAP_RENAME))
+ #define XLAT_STR_11 STRINGIFY(MAP_RENAME)
 #else
 #if defined(MAP_RENAME) || (defined(HAVE_DECL_MAP_RENAME) && HAVE_DECL_MAP_RENAME)
   XLAT(MAP_RENAME),
+ #define XLAT_VAL_12 ((unsigned) (MAP_RENAME))
+ #define XLAT_STR_12 STRINGIFY(MAP_RENAME)
 #endif
 #endif
 
 #if defined __powerpc__ || defined __sparc__
  XLAT(MAP_NORESERVE),
+ #define XLAT_VAL_13 ((unsigned) (MAP_NORESERVE))
+ #define XLAT_STR_13 STRINGIFY(MAP_NORESERVE)
 #elif defined __mips__ || defined __xtensa__
  XLAT(MAP_NORESERVE),
+ #define XLAT_VAL_14 ((unsigned) (MAP_NORESERVE))
+ #define XLAT_STR_14 STRINGIFY(MAP_NORESERVE)
 #elif defined __alpha__
  XLAT(MAP_NORESERVE),
+ #define XLAT_VAL_15 ((unsigned) (MAP_NORESERVE))
+ #define XLAT_STR_15 STRINGIFY(MAP_NORESERVE)
 #else
  XLAT(MAP_NORESERVE),
+ #define XLAT_VAL_16 ((unsigned) (MAP_NORESERVE))
+ #define XLAT_STR_16 STRINGIFY(MAP_NORESERVE)
 #endif
 
 #if defined __hppa__ || defined __mips__ || defined __xtensa__
  XLAT(MAP_POPULATE),
+ #define XLAT_VAL_17 ((unsigned) (MAP_POPULATE))
+ #define XLAT_STR_17 STRINGIFY(MAP_POPULATE)
 #elif defined __alpha__
  XLAT(MAP_POPULATE),
+ #define XLAT_VAL_18 ((unsigned) (MAP_POPULATE))
+ #define XLAT_STR_18 STRINGIFY(MAP_POPULATE)
 #else
  XLAT(MAP_POPULATE),
+ #define XLAT_VAL_19 ((unsigned) (MAP_POPULATE))
+ #define XLAT_STR_19 STRINGIFY(MAP_POPULATE)
 #endif
 
 #if defined __hppa__ || defined __mips__ || defined __xtensa__
  XLAT(MAP_NONBLOCK),
+ #define XLAT_VAL_20 ((unsigned) (MAP_NONBLOCK))
+ #define XLAT_STR_20 STRINGIFY(MAP_NONBLOCK)
 #elif defined __alpha__
  XLAT(MAP_NONBLOCK),
+ #define XLAT_VAL_21 ((unsigned) (MAP_NONBLOCK))
+ #define XLAT_STR_21 STRINGIFY(MAP_NONBLOCK)
 #else
  XLAT(MAP_NONBLOCK),
+ #define XLAT_VAL_22 ((unsigned) (MAP_NONBLOCK))
+ #define XLAT_STR_22 STRINGIFY(MAP_NONBLOCK)
 #endif
 
 #if defined __sparc__
  XLAT(_MAP_NEW),
+ #define XLAT_VAL_23 ((unsigned) (_MAP_NEW))
+ #define XLAT_STR_23 STRINGIFY(_MAP_NEW)
 #else
 #if defined(_MAP_NEW) || (defined(HAVE_DECL__MAP_NEW) && HAVE_DECL__MAP_NEW)
   XLAT(_MAP_NEW),
+ #define XLAT_VAL_24 ((unsigned) (_MAP_NEW))
+ #define XLAT_STR_24 STRINGIFY(_MAP_NEW)
 #endif
 #endif
 
 #if defined __sparc__
  XLAT(MAP_GROWSDOWN),
+ #define XLAT_VAL_25 ((unsigned) (MAP_GROWSDOWN))
+ #define XLAT_STR_25 STRINGIFY(MAP_GROWSDOWN)
 #elif defined __alpha__ || defined __mips__ || defined __xtensa__
  XLAT(MAP_GROWSDOWN),
+ #define XLAT_VAL_26 ((unsigned) (MAP_GROWSDOWN))
+ #define XLAT_STR_26 STRINGIFY(MAP_GROWSDOWN)
 #elif defined __hppa__
  XLAT(MAP_GROWSDOWN),
+ #define XLAT_VAL_27 ((unsigned) (MAP_GROWSDOWN))
+ #define XLAT_STR_27 STRINGIFY(MAP_GROWSDOWN)
 #else
  XLAT(MAP_GROWSDOWN),
+ #define XLAT_VAL_28 ((unsigned) (MAP_GROWSDOWN))
+ #define XLAT_STR_28 STRINGIFY(MAP_GROWSDOWN)
 #endif
 
 #if defined __ia64__
  XLAT(MAP_GROWSUP),
+ #define XLAT_VAL_29 ((unsigned) (MAP_GROWSUP))
+ #define XLAT_STR_29 STRINGIFY(MAP_GROWSUP)
 #else
 #if defined(MAP_GROWSUP) || (defined(HAVE_DECL_MAP_GROWSUP) && HAVE_DECL_MAP_GROWSUP)
   XLAT(MAP_GROWSUP),
+ #define XLAT_VAL_30 ((unsigned) (MAP_GROWSUP))
+ #define XLAT_STR_30 STRINGIFY(MAP_GROWSUP)
 #endif
 #endif
 
 #if defined __alpha__ || defined __mips__ || defined __xtensa__
  XLAT(MAP_DENYWRITE),
+ #define XLAT_VAL_31 ((unsigned) (MAP_DENYWRITE))
+ #define XLAT_STR_31 STRINGIFY(MAP_DENYWRITE)
 #else
  XLAT(MAP_DENYWRITE),
+ #define XLAT_VAL_32 ((unsigned) (MAP_DENYWRITE))
+ #define XLAT_STR_32 STRINGIFY(MAP_DENYWRITE)
 #endif
 
 #if defined __alpha__ || defined __mips__ || defined __xtensa__
  XLAT(MAP_EXECUTABLE),
+ #define XLAT_VAL_33 ((unsigned) (MAP_EXECUTABLE))
+ #define XLAT_STR_33 STRINGIFY(MAP_EXECUTABLE)
 #else
  XLAT(MAP_EXECUTABLE),
+ #define XLAT_VAL_34 ((unsigned) (MAP_EXECUTABLE))
+ #define XLAT_STR_34 STRINGIFY(MAP_EXECUTABLE)
 #endif
 
 #if defined __sparc__
  XLAT(MAP_INHERIT),
+ #define XLAT_VAL_35 ((unsigned) (MAP_INHERIT))
+ #define XLAT_STR_35 STRINGIFY(MAP_INHERIT)
 #else
 #if defined(MAP_INHERIT) || (defined(HAVE_DECL_MAP_INHERIT) && HAVE_DECL_MAP_INHERIT)
   XLAT(MAP_INHERIT),
+ #define XLAT_VAL_36 ((unsigned) (MAP_INHERIT))
+ #define XLAT_STR_36 STRINGIFY(MAP_INHERIT)
 #endif
 #endif
 
 #if defined __alpha__
  XLAT(_MAP_INHERIT),
+ #define XLAT_VAL_37 ((unsigned) (_MAP_INHERIT))
+ #define XLAT_STR_37 STRINGIFY(_MAP_INHERIT)
 #else
 #if defined(_MAP_INHERIT) || (defined(HAVE_DECL__MAP_INHERIT) && HAVE_DECL__MAP_INHERIT)
   XLAT(_MAP_INHERIT),
+ #define XLAT_VAL_38 ((unsigned) (_MAP_INHERIT))
+ #define XLAT_STR_38 STRINGIFY(_MAP_INHERIT)
 #endif
 #endif
 
  XLAT(MAP_FILE),
+ #define XLAT_VAL_39 ((unsigned) (MAP_FILE))
+ #define XLAT_STR_39 STRINGIFY(MAP_FILE)
 
 #if defined __powerpc__
  XLAT(MAP_LOCKED),
+ #define XLAT_VAL_40 ((unsigned) (MAP_LOCKED))
+ #define XLAT_STR_40 STRINGIFY(MAP_LOCKED)
 #elif defined __sparc__
  XLAT(MAP_LOCKED),
+ #define XLAT_VAL_41 ((unsigned) (MAP_LOCKED))
+ #define XLAT_STR_41 STRINGIFY(MAP_LOCKED)
 #elif defined __alpha__ || defined __mips__ || defined __xtensa__
  XLAT(MAP_LOCKED),
+ #define XLAT_VAL_42 ((unsigned) (MAP_LOCKED))
+ #define XLAT_STR_42 STRINGIFY(MAP_LOCKED)
 #else
  XLAT(MAP_LOCKED),
+ #define XLAT_VAL_43 ((unsigned) (MAP_LOCKED))
+ #define XLAT_STR_43 STRINGIFY(MAP_LOCKED)
 #endif
 
 #if defined __alpha__
  XLAT(_MAP_HASSEMAPHORE),
+ #define XLAT_VAL_44 ((unsigned) (_MAP_HASSEMAPHORE))
+ #define XLAT_STR_44 STRINGIFY(_MAP_HASSEMAPHORE)
 #else
 #if defined(_MAP_HASSEMAPHORE) || (defined(HAVE_DECL__MAP_HASSEMAPHORE) && HAVE_DECL__MAP_HASSEMAPHORE)
   XLAT(_MAP_HASSEMAPHORE),
+ #define XLAT_VAL_45 ((unsigned) (_MAP_HASSEMAPHORE))
+ #define XLAT_STR_45 STRINGIFY(_MAP_HASSEMAPHORE)
 #endif
 #endif
 
 #if defined __hppa__ || defined __mips__ || defined __xtensa__
  XLAT(MAP_STACK),
+ #define XLAT_VAL_46 ((unsigned) (MAP_STACK))
+ #define XLAT_STR_46 STRINGIFY(MAP_STACK)
 #elif defined __alpha__
  XLAT(MAP_STACK),
+ #define XLAT_VAL_47 ((unsigned) (MAP_STACK))
+ #define XLAT_STR_47 STRINGIFY(MAP_STACK)
 #else
  XLAT(MAP_STACK),
+ #define XLAT_VAL_48 ((unsigned) (MAP_STACK))
+ #define XLAT_STR_48 STRINGIFY(MAP_STACK)
 #endif
 
 #if defined __hppa__ || defined __mips__ || defined __xtensa__
  XLAT(MAP_HUGETLB),
+ #define XLAT_VAL_49 ((unsigned) (MAP_HUGETLB))
+ #define XLAT_STR_49 STRINGIFY(MAP_HUGETLB)
 #elif defined __alpha__
  XLAT(MAP_HUGETLB),
+ #define XLAT_VAL_50 ((unsigned) (MAP_HUGETLB))
+ #define XLAT_STR_50 STRINGIFY(MAP_HUGETLB)
 #else
  XLAT(MAP_HUGETLB),
+ #define XLAT_VAL_51 ((unsigned) (MAP_HUGETLB))
+ #define XLAT_STR_51 STRINGIFY(MAP_HUGETLB)
 #endif
 
  XLAT(MAP_SYNC),
+ #define XLAT_VAL_52 ((unsigned) (MAP_SYNC))
+ #define XLAT_STR_52 STRINGIFY(MAP_SYNC)
 
-#if defined MAP_UNINITIALIZED && MAP_UNINITIALIZED > 0
-#if defined(MAP_UNINITIALIZED) || (defined(HAVE_DECL_MAP_UNINITIALIZED) && HAVE_DECL_MAP_UNINITIALIZED)
-  XLAT(MAP_UNINITIALIZED),
-#endif
+#if defined MAP_UNINITIALIZED && MAP_UNINITIALIZED == 0
+
+
+# ifndef STRACE_WORKAROUND_FOR_MAP_UNINITIALIZED
+#  define STRACE_WORKAROUND_FOR_MAP_UNINITIALIZED
+#  undef MAP_UNINITIALIZED
+# endif
 #endif
+ XLAT(MAP_UNINITIALIZED),
+ #define XLAT_VAL_53 ((unsigned) (MAP_UNINITIALIZED))
+ #define XLAT_STR_53 STRINGIFY(MAP_UNINITIALIZED)
 
 #if defined __alpha__
  XLAT(MAP_FIXED_NOREPLACE),
+ #define XLAT_VAL_54 ((unsigned) (MAP_FIXED_NOREPLACE))
+ #define XLAT_STR_54 STRINGIFY(MAP_FIXED_NOREPLACE)
 #else
  XLAT(MAP_FIXED_NOREPLACE),
+ #define XLAT_VAL_55 ((unsigned) (MAP_FIXED_NOREPLACE))
+ #define XLAT_STR_55 STRINGIFY(MAP_FIXED_NOREPLACE)
 #endif
 
 #if defined __mips__ || defined __xtensa__
  XLAT(MAP_AUTOGROW),
+ #define XLAT_VAL_56 ((unsigned) (MAP_AUTOGROW))
+ #define XLAT_STR_56 STRINGIFY(MAP_AUTOGROW)
 #else
 #if defined(MAP_AUTOGROW) || (defined(HAVE_DECL_MAP_AUTOGROW) && HAVE_DECL_MAP_AUTOGROW)
   XLAT(MAP_AUTOGROW),
+ #define XLAT_VAL_57 ((unsigned) (MAP_AUTOGROW))
+ #define XLAT_STR_57 STRINGIFY(MAP_AUTOGROW)
 #endif
 #endif
 
 #if defined __mips__ || defined __xtensa__
  XLAT(MAP_AUTORSRV),
+ #define XLAT_VAL_58 ((unsigned) (MAP_AUTORSRV))
+ #define XLAT_STR_58 STRINGIFY(MAP_AUTORSRV)
 #else
 #if defined(MAP_AUTORSRV) || (defined(HAVE_DECL_MAP_AUTORSRV) && HAVE_DECL_MAP_AUTORSRV)
   XLAT(MAP_AUTORSRV),
+ #define XLAT_VAL_59 ((unsigned) (MAP_AUTORSRV))
+ #define XLAT_STR_59 STRINGIFY(MAP_AUTORSRV)
 #endif
 #endif
 
 #if defined __mips__ || defined __xtensa__
  XLAT(MAP_LOCAL),
+ #define XLAT_VAL_60 ((unsigned) (MAP_LOCAL))
+ #define XLAT_STR_60 STRINGIFY(MAP_LOCAL)
 #else
 #if defined(MAP_LOCAL) || (defined(HAVE_DECL_MAP_LOCAL) && HAVE_DECL_MAP_LOCAL)
   XLAT(MAP_LOCAL),
+ #define XLAT_VAL_61 ((unsigned) (MAP_LOCAL))
+ #define XLAT_STR_61 STRINGIFY(MAP_LOCAL)
 #endif
 #endif
 
 #if defined __alpha__
  XLAT(_MAP_UNALIGNED),
+ #define XLAT_VAL_62 ((unsigned) (_MAP_UNALIGNED))
+ #define XLAT_STR_62 STRINGIFY(_MAP_UNALIGNED)
 #else
 #if defined(_MAP_UNALIGNED) || (defined(HAVE_DECL__MAP_UNALIGNED) && HAVE_DECL__MAP_UNALIGNED)
   XLAT(_MAP_UNALIGNED),
+ #define XLAT_VAL_63 ((unsigned) (_MAP_UNALIGNED))
+ #define XLAT_STR_63 STRINGIFY(_MAP_UNALIGNED)
 #endif
 #endif
- XLAT_END
 };
+static
+const struct xlat mmap_flags[1] = { {
+ .data = mmap_flags_xdata,
+ .size = ARRAY_SIZE(mmap_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+#  ifdef XLAT_VAL_30
+  | XLAT_VAL_30
+#  endif
+#  ifdef XLAT_VAL_31
+  | XLAT_VAL_31
+#  endif
+#  ifdef XLAT_VAL_32
+  | XLAT_VAL_32
+#  endif
+#  ifdef XLAT_VAL_33
+  | XLAT_VAL_33
+#  endif
+#  ifdef XLAT_VAL_34
+  | XLAT_VAL_34
+#  endif
+#  ifdef XLAT_VAL_35
+  | XLAT_VAL_35
+#  endif
+#  ifdef XLAT_VAL_36
+  | XLAT_VAL_36
+#  endif
+#  ifdef XLAT_VAL_37
+  | XLAT_VAL_37
+#  endif
+#  ifdef XLAT_VAL_38
+  | XLAT_VAL_38
+#  endif
+#  ifdef XLAT_VAL_39
+  | XLAT_VAL_39
+#  endif
+#  ifdef XLAT_VAL_40
+  | XLAT_VAL_40
+#  endif
+#  ifdef XLAT_VAL_41
+  | XLAT_VAL_41
+#  endif
+#  ifdef XLAT_VAL_42
+  | XLAT_VAL_42
+#  endif
+#  ifdef XLAT_VAL_43
+  | XLAT_VAL_43
+#  endif
+#  ifdef XLAT_VAL_44
+  | XLAT_VAL_44
+#  endif
+#  ifdef XLAT_VAL_45
+  | XLAT_VAL_45
+#  endif
+#  ifdef XLAT_VAL_46
+  | XLAT_VAL_46
+#  endif
+#  ifdef XLAT_VAL_47
+  | XLAT_VAL_47
+#  endif
+#  ifdef XLAT_VAL_48
+  | XLAT_VAL_48
+#  endif
+#  ifdef XLAT_VAL_49
+  | XLAT_VAL_49
+#  endif
+#  ifdef XLAT_VAL_50
+  | XLAT_VAL_50
+#  endif
+#  ifdef XLAT_VAL_51
+  | XLAT_VAL_51
+#  endif
+#  ifdef XLAT_VAL_52
+  | XLAT_VAL_52
+#  endif
+#  ifdef XLAT_VAL_53
+  | XLAT_VAL_53
+#  endif
+#  ifdef XLAT_VAL_54
+  | XLAT_VAL_54
+#  endif
+#  ifdef XLAT_VAL_55
+  | XLAT_VAL_55
+#  endif
+#  ifdef XLAT_VAL_56
+  | XLAT_VAL_56
+#  endif
+#  ifdef XLAT_VAL_57
+  | XLAT_VAL_57
+#  endif
+#  ifdef XLAT_VAL_58
+  | XLAT_VAL_58
+#  endif
+#  ifdef XLAT_VAL_59
+  | XLAT_VAL_59
+#  endif
+#  ifdef XLAT_VAL_60
+  | XLAT_VAL_60
+#  endif
+#  ifdef XLAT_VAL_61
+  | XLAT_VAL_61
+#  endif
+#  ifdef XLAT_VAL_62
+  | XLAT_VAL_62
+#  endif
+#  ifdef XLAT_VAL_63
+  | XLAT_VAL_63
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+#  ifdef XLAT_STR_30
+  + sizeof(XLAT_STR_30)
+#  endif
+#  ifdef XLAT_STR_31
+  + sizeof(XLAT_STR_31)
+#  endif
+#  ifdef XLAT_STR_32
+  + sizeof(XLAT_STR_32)
+#  endif
+#  ifdef XLAT_STR_33
+  + sizeof(XLAT_STR_33)
+#  endif
+#  ifdef XLAT_STR_34
+  + sizeof(XLAT_STR_34)
+#  endif
+#  ifdef XLAT_STR_35
+  + sizeof(XLAT_STR_35)
+#  endif
+#  ifdef XLAT_STR_36
+  + sizeof(XLAT_STR_36)
+#  endif
+#  ifdef XLAT_STR_37
+  + sizeof(XLAT_STR_37)
+#  endif
+#  ifdef XLAT_STR_38
+  + sizeof(XLAT_STR_38)
+#  endif
+#  ifdef XLAT_STR_39
+  + sizeof(XLAT_STR_39)
+#  endif
+#  ifdef XLAT_STR_40
+  + sizeof(XLAT_STR_40)
+#  endif
+#  ifdef XLAT_STR_41
+  + sizeof(XLAT_STR_41)
+#  endif
+#  ifdef XLAT_STR_42
+  + sizeof(XLAT_STR_42)
+#  endif
+#  ifdef XLAT_STR_43
+  + sizeof(XLAT_STR_43)
+#  endif
+#  ifdef XLAT_STR_44
+  + sizeof(XLAT_STR_44)
+#  endif
+#  ifdef XLAT_STR_45
+  + sizeof(XLAT_STR_45)
+#  endif
+#  ifdef XLAT_STR_46
+  + sizeof(XLAT_STR_46)
+#  endif
+#  ifdef XLAT_STR_47
+  + sizeof(XLAT_STR_47)
+#  endif
+#  ifdef XLAT_STR_48
+  + sizeof(XLAT_STR_48)
+#  endif
+#  ifdef XLAT_STR_49
+  + sizeof(XLAT_STR_49)
+#  endif
+#  ifdef XLAT_STR_50
+  + sizeof(XLAT_STR_50)
+#  endif
+#  ifdef XLAT_STR_51
+  + sizeof(XLAT_STR_51)
+#  endif
+#  ifdef XLAT_STR_52
+  + sizeof(XLAT_STR_52)
+#  endif
+#  ifdef XLAT_STR_53
+  + sizeof(XLAT_STR_53)
+#  endif
+#  ifdef XLAT_STR_54
+  + sizeof(XLAT_STR_54)
+#  endif
+#  ifdef XLAT_STR_55
+  + sizeof(XLAT_STR_55)
+#  endif
+#  ifdef XLAT_STR_56
+  + sizeof(XLAT_STR_56)
+#  endif
+#  ifdef XLAT_STR_57
+  + sizeof(XLAT_STR_57)
+#  endif
+#  ifdef XLAT_STR_58
+  + sizeof(XLAT_STR_58)
+#  endif
+#  ifdef XLAT_STR_59
+  + sizeof(XLAT_STR_59)
+#  endif
+#  ifdef XLAT_STR_60
+  + sizeof(XLAT_STR_60)
+#  endif
+#  ifdef XLAT_STR_61
+  + sizeof(XLAT_STR_61)
+#  endif
+#  ifdef XLAT_STR_62
+  + sizeof(XLAT_STR_62)
+#  endif
+#  ifdef XLAT_STR_63
+  + sizeof(XLAT_STR_63)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
+#  undef XLAT_STR_30
+#  undef XLAT_VAL_30
+#  undef XLAT_STR_31
+#  undef XLAT_VAL_31
+#  undef XLAT_STR_32
+#  undef XLAT_VAL_32
+#  undef XLAT_STR_33
+#  undef XLAT_VAL_33
+#  undef XLAT_STR_34
+#  undef XLAT_VAL_34
+#  undef XLAT_STR_35
+#  undef XLAT_VAL_35
+#  undef XLAT_STR_36
+#  undef XLAT_VAL_36
+#  undef XLAT_STR_37
+#  undef XLAT_VAL_37
+#  undef XLAT_STR_38
+#  undef XLAT_VAL_38
+#  undef XLAT_STR_39
+#  undef XLAT_VAL_39
+#  undef XLAT_STR_40
+#  undef XLAT_VAL_40
+#  undef XLAT_STR_41
+#  undef XLAT_VAL_41
+#  undef XLAT_STR_42
+#  undef XLAT_VAL_42
+#  undef XLAT_STR_43
+#  undef XLAT_VAL_43
+#  undef XLAT_STR_44
+#  undef XLAT_VAL_44
+#  undef XLAT_STR_45
+#  undef XLAT_VAL_45
+#  undef XLAT_STR_46
+#  undef XLAT_VAL_46
+#  undef XLAT_STR_47
+#  undef XLAT_VAL_47
+#  undef XLAT_STR_48
+#  undef XLAT_VAL_48
+#  undef XLAT_STR_49
+#  undef XLAT_VAL_49
+#  undef XLAT_STR_50
+#  undef XLAT_VAL_50
+#  undef XLAT_STR_51
+#  undef XLAT_VAL_51
+#  undef XLAT_STR_52
+#  undef XLAT_VAL_52
+#  undef XLAT_STR_53
+#  undef XLAT_VAL_53
+#  undef XLAT_STR_54
+#  undef XLAT_VAL_54
+#  undef XLAT_STR_55
+#  undef XLAT_VAL_55
+#  undef XLAT_STR_56
+#  undef XLAT_VAL_56
+#  undef XLAT_STR_57
+#  undef XLAT_VAL_57
+#  undef XLAT_STR_58
+#  undef XLAT_VAL_58
+#  undef XLAT_STR_59
+#  undef XLAT_VAL_59
+#  undef XLAT_STR_60
+#  undef XLAT_VAL_60
+#  undef XLAT_STR_61
+#  undef XLAT_VAL_61
+#  undef XLAT_STR_62
+#  undef XLAT_VAL_62
+#  undef XLAT_STR_63
+#  undef XLAT_VAL_63
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 5a592494750d2924f15c8944d95fdfe38ab9ce7a..0fb824030942826054774801853ec7ef02219c6c 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by maint/gen_xlat_defs.sh -f '#x' -p '_?MAP_' -c 'asm-generic/mman*.h' -a 'asm/mman.h' */
+/* Generated by maint/gen_xlat_defs.sh -f '#x' -p '_?MAP_' -c '[al]*/mman*.h' -a 'asm/mman.h' */
 
 MAP_SHARED     0x1
 
@@ -151,9 +151,15 @@ MAP_HUGETLB        0x40000
 
 MAP_SYNC       0x80000
 
-#if defined MAP_UNINITIALIZED && MAP_UNINITIALIZED > 0
-MAP_UNINITIALIZED
-#endif
+#if defined MAP_UNINITIALIZED && MAP_UNINITIALIZED == 0 /* MAP_UNINITIALIZED is special */
+/* Linux commit v5.3-rc1~65^2~86 fixed the definition of MAP_UNINITIALIZED */
+/* flag that used to depend on CONFIG_MMAP_ALLOW_UNINITIALIZED. */
+# ifndef STRACE_WORKAROUND_FOR_MAP_UNINITIALIZED
+#  define STRACE_WORKAROUND_FOR_MAP_UNINITIALIZED
+#  undef MAP_UNINITIALIZED
+# endif /* STRACE_WORKAROUND_FOR_MAP_UNINITIALIZED */
+#endif /* MAP_UNINITIALIZED == 0 */
+MAP_UNINITIALIZED      0x4000000
 
 #if defined __alpha__
 MAP_FIXED_NOREPLACE    0x200000
index 310e7f1e7ba6a04a3bebaf6f2dcaf19b2019e1d7..b222f072aa733ee5830433fe0ee8031538ec3f78 100644 (file)
 
 # else
 
-static
-const struct xlat mmap_prot[] = {
+static const struct xlat_data mmap_prot_xdata[] = {
 #if defined(PROT_NONE) || (defined(HAVE_DECL_PROT_NONE) && HAVE_DECL_PROT_NONE)
   XLAT(PROT_NONE),
+ #define XLAT_VAL_0 ((unsigned) (PROT_NONE))
+ #define XLAT_STR_0 STRINGIFY(PROT_NONE)
 #endif
 #if defined(PROT_READ) || (defined(HAVE_DECL_PROT_READ) && HAVE_DECL_PROT_READ)
   XLAT(PROT_READ),
+ #define XLAT_VAL_1 ((unsigned) (PROT_READ))
+ #define XLAT_STR_1 STRINGIFY(PROT_READ)
 #endif
 #if defined(PROT_WRITE) || (defined(HAVE_DECL_PROT_WRITE) && HAVE_DECL_PROT_WRITE)
   XLAT(PROT_WRITE),
+ #define XLAT_VAL_2 ((unsigned) (PROT_WRITE))
+ #define XLAT_STR_2 STRINGIFY(PROT_WRITE)
 #endif
 #if defined(PROT_EXEC) || (defined(HAVE_DECL_PROT_EXEC) && HAVE_DECL_PROT_EXEC)
   XLAT(PROT_EXEC),
+ #define XLAT_VAL_3 ((unsigned) (PROT_EXEC))
+ #define XLAT_STR_3 STRINGIFY(PROT_EXEC)
 #endif
 #if defined(PROT_SEM) || (defined(HAVE_DECL_PROT_SEM) && HAVE_DECL_PROT_SEM)
   XLAT(PROT_SEM),
+ #define XLAT_VAL_4 ((unsigned) (PROT_SEM))
+ #define XLAT_STR_4 STRINGIFY(PROT_SEM)
 #endif
 #if defined(PROT_GROWSDOWN) || (defined(HAVE_DECL_PROT_GROWSDOWN) && HAVE_DECL_PROT_GROWSDOWN)
   XLAT(PROT_GROWSDOWN),
+ #define XLAT_VAL_5 ((unsigned) (PROT_GROWSDOWN))
+ #define XLAT_STR_5 STRINGIFY(PROT_GROWSDOWN)
 #endif
 #if defined(PROT_GROWSUP) || (defined(HAVE_DECL_PROT_GROWSUP) && HAVE_DECL_PROT_GROWSUP)
   XLAT(PROT_GROWSUP),
+ #define XLAT_VAL_6 ((unsigned) (PROT_GROWSUP))
+ #define XLAT_STR_6 STRINGIFY(PROT_GROWSUP)
 #endif
 #if defined(PROT_SAO) || (defined(HAVE_DECL_PROT_SAO) && HAVE_DECL_PROT_SAO)
   XLAT(PROT_SAO),
+ #define XLAT_VAL_7 ((unsigned) (PROT_SAO))
+ #define XLAT_STR_7 STRINGIFY(PROT_SAO)
 #endif
 #if defined(PROT_ADI) || (defined(HAVE_DECL_PROT_ADI) && HAVE_DECL_PROT_ADI)
   XLAT(PROT_ADI),
+ #define XLAT_VAL_8 ((unsigned) (PROT_ADI))
+ #define XLAT_STR_8 STRINGIFY(PROT_ADI)
 #endif
- XLAT_END
 };
+static
+const struct xlat mmap_prot[1] = { {
+ .data = mmap_prot_xdata,
+ .size = ARRAY_SIZE(mmap_prot_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 322ff11aef39801b527ec050ac2d29c7a09ccb7c..4f1280fed375b125f2c8921736f734d77675e4a8 100644 (file)
 
 # else
 
-static
-const struct xlat modem_flags[] = {
+static const struct xlat_data modem_flags_xdata[] = {
 #if defined(TIOCM_LE) || (defined(HAVE_DECL_TIOCM_LE) && HAVE_DECL_TIOCM_LE)
   XLAT(TIOCM_LE),
+ #define XLAT_VAL_0 ((unsigned) (TIOCM_LE))
+ #define XLAT_STR_0 STRINGIFY(TIOCM_LE)
 #endif
 #if defined(TIOCM_DTR) || (defined(HAVE_DECL_TIOCM_DTR) && HAVE_DECL_TIOCM_DTR)
   XLAT(TIOCM_DTR),
+ #define XLAT_VAL_1 ((unsigned) (TIOCM_DTR))
+ #define XLAT_STR_1 STRINGIFY(TIOCM_DTR)
 #endif
 #if defined(TIOCM_RTS) || (defined(HAVE_DECL_TIOCM_RTS) && HAVE_DECL_TIOCM_RTS)
   XLAT(TIOCM_RTS),
+ #define XLAT_VAL_2 ((unsigned) (TIOCM_RTS))
+ #define XLAT_STR_2 STRINGIFY(TIOCM_RTS)
 #endif
 #if defined(TIOCM_ST) || (defined(HAVE_DECL_TIOCM_ST) && HAVE_DECL_TIOCM_ST)
   XLAT(TIOCM_ST),
+ #define XLAT_VAL_3 ((unsigned) (TIOCM_ST))
+ #define XLAT_STR_3 STRINGIFY(TIOCM_ST)
 #endif
 #if defined(TIOCM_SR) || (defined(HAVE_DECL_TIOCM_SR) && HAVE_DECL_TIOCM_SR)
   XLAT(TIOCM_SR),
+ #define XLAT_VAL_4 ((unsigned) (TIOCM_SR))
+ #define XLAT_STR_4 STRINGIFY(TIOCM_SR)
 #endif
 #if defined(TIOCM_CTS) || (defined(HAVE_DECL_TIOCM_CTS) && HAVE_DECL_TIOCM_CTS)
   XLAT(TIOCM_CTS),
+ #define XLAT_VAL_5 ((unsigned) (TIOCM_CTS))
+ #define XLAT_STR_5 STRINGIFY(TIOCM_CTS)
 #endif
 #if defined(TIOCM_CAR) || (defined(HAVE_DECL_TIOCM_CAR) && HAVE_DECL_TIOCM_CAR)
   XLAT(TIOCM_CAR),
+ #define XLAT_VAL_6 ((unsigned) (TIOCM_CAR))
+ #define XLAT_STR_6 STRINGIFY(TIOCM_CAR)
 #endif
 #if defined(TIOCM_CD) || (defined(HAVE_DECL_TIOCM_CD) && HAVE_DECL_TIOCM_CD)
   XLAT(TIOCM_CD),
+ #define XLAT_VAL_7 ((unsigned) (TIOCM_CD))
+ #define XLAT_STR_7 STRINGIFY(TIOCM_CD)
 #endif
 #if defined(TIOCM_RNG) || (defined(HAVE_DECL_TIOCM_RNG) && HAVE_DECL_TIOCM_RNG)
   XLAT(TIOCM_RNG),
+ #define XLAT_VAL_8 ((unsigned) (TIOCM_RNG))
+ #define XLAT_STR_8 STRINGIFY(TIOCM_RNG)
 #endif
 #if defined(TIOCM_RI) || (defined(HAVE_DECL_TIOCM_RI) && HAVE_DECL_TIOCM_RI)
   XLAT(TIOCM_RI),
+ #define XLAT_VAL_9 ((unsigned) (TIOCM_RI))
+ #define XLAT_STR_9 STRINGIFY(TIOCM_RI)
 #endif
 #if defined(TIOCM_DSR) || (defined(HAVE_DECL_TIOCM_DSR) && HAVE_DECL_TIOCM_DSR)
   XLAT(TIOCM_DSR),
+ #define XLAT_VAL_10 ((unsigned) (TIOCM_DSR))
+ #define XLAT_STR_10 STRINGIFY(TIOCM_DSR)
 #endif
- XLAT_END
 };
+static
+const struct xlat modem_flags[1] = { {
+ .data = modem_flags_xdata,
+ .size = ARRAY_SIZE(modem_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 94bd51ab058b0a115e0dce39bb57e3bbb54f5946..26172e02f0f01f9944852c2e026af270b0b6b6a5 100644 (file)
 
 # else
 
-static
-const struct xlat modetypes[] = {
+static const struct xlat_data modetypes_xdata[] = {
 #if defined(S_IFREG) || (defined(HAVE_DECL_S_IFREG) && HAVE_DECL_S_IFREG)
   XLAT(S_IFREG),
+ #define XLAT_VAL_0 ((unsigned) (S_IFREG))
+ #define XLAT_STR_0 STRINGIFY(S_IFREG)
 #endif
 #if defined(S_IFSOCK) || (defined(HAVE_DECL_S_IFSOCK) && HAVE_DECL_S_IFSOCK)
   XLAT(S_IFSOCK),
+ #define XLAT_VAL_1 ((unsigned) (S_IFSOCK))
+ #define XLAT_STR_1 STRINGIFY(S_IFSOCK)
 #endif
 #if defined(S_IFIFO) || (defined(HAVE_DECL_S_IFIFO) && HAVE_DECL_S_IFIFO)
   XLAT(S_IFIFO),
+ #define XLAT_VAL_2 ((unsigned) (S_IFIFO))
+ #define XLAT_STR_2 STRINGIFY(S_IFIFO)
 #endif
 #if defined(S_IFLNK) || (defined(HAVE_DECL_S_IFLNK) && HAVE_DECL_S_IFLNK)
   XLAT(S_IFLNK),
+ #define XLAT_VAL_3 ((unsigned) (S_IFLNK))
+ #define XLAT_STR_3 STRINGIFY(S_IFLNK)
 #endif
 #if defined(S_IFDIR) || (defined(HAVE_DECL_S_IFDIR) && HAVE_DECL_S_IFDIR)
   XLAT(S_IFDIR),
+ #define XLAT_VAL_4 ((unsigned) (S_IFDIR))
+ #define XLAT_STR_4 STRINGIFY(S_IFDIR)
 #endif
 #if defined(S_IFBLK) || (defined(HAVE_DECL_S_IFBLK) && HAVE_DECL_S_IFBLK)
   XLAT(S_IFBLK),
+ #define XLAT_VAL_5 ((unsigned) (S_IFBLK))
+ #define XLAT_STR_5 STRINGIFY(S_IFBLK)
 #endif
 #if defined(S_IFCHR) || (defined(HAVE_DECL_S_IFCHR) && HAVE_DECL_S_IFCHR)
   XLAT(S_IFCHR),
+ #define XLAT_VAL_6 ((unsigned) (S_IFCHR))
+ #define XLAT_STR_6 STRINGIFY(S_IFCHR)
 #endif
- XLAT_END
 };
+static
+const struct xlat modetypes[1] = { {
+ .data = modetypes_xdata,
+ .size = ARRAY_SIZE(modetypes_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 3057478e42ead2d5cf38565303ef4e19a2d7ab13..cd5856dba2eb4fe754d97cdc0acd9a87a7179ddb 100644 (file)
@@ -26,13 +26,41 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat module_init_flags[] = {
+static const struct xlat_data module_init_flags_xdata[] = {
  XLAT(MODULE_INIT_IGNORE_MODVERSIONS),
+ #define XLAT_VAL_0 ((unsigned) (MODULE_INIT_IGNORE_MODVERSIONS))
+ #define XLAT_STR_0 STRINGIFY(MODULE_INIT_IGNORE_MODVERSIONS)
  XLAT(MODULE_INIT_IGNORE_VERMAGIC),
- XLAT_END
+ #define XLAT_VAL_1 ((unsigned) (MODULE_INIT_IGNORE_VERMAGIC))
+ #define XLAT_STR_1 STRINGIFY(MODULE_INIT_IGNORE_VERMAGIC)
 };
+static
+const struct xlat module_init_flags[1] = { {
+ .data = module_init_flags_xdata,
+ .size = ARRAY_SIZE(module_init_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/mount_attr_flags.h b/xlat/mount_attr_flags.h
new file mode 100644 (file)
index 0000000..c3b91e3
--- /dev/null
@@ -0,0 +1,156 @@
+/* Generated by ./xlat/gen.sh from ./xlat/mount_attr_flags.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(MOUNT_ATTR_RDONLY) || (defined(HAVE_DECL_MOUNT_ATTR_RDONLY) && HAVE_DECL_MOUNT_ATTR_RDONLY)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((MOUNT_ATTR_RDONLY) == (0x01), "MOUNT_ATTR_RDONLY != 0x01");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define MOUNT_ATTR_RDONLY 0x01
+#endif
+#if defined(MOUNT_ATTR_NOSUID) || (defined(HAVE_DECL_MOUNT_ATTR_NOSUID) && HAVE_DECL_MOUNT_ATTR_NOSUID)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((MOUNT_ATTR_NOSUID) == (0x02), "MOUNT_ATTR_NOSUID != 0x02");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define MOUNT_ATTR_NOSUID 0x02
+#endif
+#if defined(MOUNT_ATTR_NODEV) || (defined(HAVE_DECL_MOUNT_ATTR_NODEV) && HAVE_DECL_MOUNT_ATTR_NODEV)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((MOUNT_ATTR_NODEV) == (0x04), "MOUNT_ATTR_NODEV != 0x04");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define MOUNT_ATTR_NODEV 0x04
+#endif
+#if defined(MOUNT_ATTR_NOEXEC) || (defined(HAVE_DECL_MOUNT_ATTR_NOEXEC) && HAVE_DECL_MOUNT_ATTR_NOEXEC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((MOUNT_ATTR_NOEXEC) == (0x08), "MOUNT_ATTR_NOEXEC != 0x08");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define MOUNT_ATTR_NOEXEC 0x08
+#endif
+#if defined(MOUNT_ATTR_NOATIME) || (defined(HAVE_DECL_MOUNT_ATTR_NOATIME) && HAVE_DECL_MOUNT_ATTR_NOATIME)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((MOUNT_ATTR_NOATIME) == (0x10), "MOUNT_ATTR_NOATIME != 0x10");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define MOUNT_ATTR_NOATIME 0x10
+#endif
+#if defined(MOUNT_ATTR_STRICTATIME) || (defined(HAVE_DECL_MOUNT_ATTR_STRICTATIME) && HAVE_DECL_MOUNT_ATTR_STRICTATIME)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((MOUNT_ATTR_STRICTATIME) == (0x20), "MOUNT_ATTR_STRICTATIME != 0x20");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define MOUNT_ATTR_STRICTATIME 0x20
+#endif
+#if defined(MOUNT_ATTR_NODIRATIME) || (defined(HAVE_DECL_MOUNT_ATTR_NODIRATIME) && HAVE_DECL_MOUNT_ATTR_NODIRATIME)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((MOUNT_ATTR_NODIRATIME) == (0x80), "MOUNT_ATTR_NODIRATIME != 0x80");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define MOUNT_ATTR_NODIRATIME 0x80
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat mount_attr_flags in mpers mode
+
+# else
+
+static const struct xlat_data mount_attr_flags_xdata[] = {
+ XLAT(MOUNT_ATTR_RDONLY),
+ #define XLAT_VAL_0 ((unsigned) (MOUNT_ATTR_RDONLY))
+ #define XLAT_STR_0 STRINGIFY(MOUNT_ATTR_RDONLY)
+ XLAT(MOUNT_ATTR_NOSUID),
+ #define XLAT_VAL_1 ((unsigned) (MOUNT_ATTR_NOSUID))
+ #define XLAT_STR_1 STRINGIFY(MOUNT_ATTR_NOSUID)
+ XLAT(MOUNT_ATTR_NODEV),
+ #define XLAT_VAL_2 ((unsigned) (MOUNT_ATTR_NODEV))
+ #define XLAT_STR_2 STRINGIFY(MOUNT_ATTR_NODEV)
+ XLAT(MOUNT_ATTR_NOEXEC),
+ #define XLAT_VAL_3 ((unsigned) (MOUNT_ATTR_NOEXEC))
+ #define XLAT_STR_3 STRINGIFY(MOUNT_ATTR_NOEXEC)
+ XLAT(MOUNT_ATTR_NOATIME),
+ #define XLAT_VAL_4 ((unsigned) (MOUNT_ATTR_NOATIME))
+ #define XLAT_STR_4 STRINGIFY(MOUNT_ATTR_NOATIME)
+ XLAT(MOUNT_ATTR_STRICTATIME),
+ #define XLAT_VAL_5 ((unsigned) (MOUNT_ATTR_STRICTATIME))
+ #define XLAT_STR_5 STRINGIFY(MOUNT_ATTR_STRICTATIME)
+ XLAT(MOUNT_ATTR_NODIRATIME),
+ #define XLAT_VAL_6 ((unsigned) (MOUNT_ATTR_NODIRATIME))
+ #define XLAT_STR_6 STRINGIFY(MOUNT_ATTR_NODIRATIME)
+};
+static
+const struct xlat mount_attr_flags[1] = { {
+ .data = mount_attr_flags_xdata,
+ .size = ARRAY_SIZE(mount_attr_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/mount_attr_flags.in b/xlat/mount_attr_flags.in
new file mode 100644 (file)
index 0000000..f6356c1
--- /dev/null
@@ -0,0 +1,7 @@
+MOUNT_ATTR_RDONLY      0x01
+MOUNT_ATTR_NOSUID      0x02
+MOUNT_ATTR_NODEV       0x04
+MOUNT_ATTR_NOEXEC      0x08
+MOUNT_ATTR_NOATIME     0x10
+MOUNT_ATTR_STRICTATIME 0x20
+MOUNT_ATTR_NODIRATIME  0x80
index 8c552a423ae75d037263fc2d453d7f4c9076572c..bf8e9cc9efd6688b24d089893c6243ce1ba26a3c 100644 (file)
 
 #if defined(MS_RDONLY) || (defined(HAVE_DECL_MS_RDONLY) && HAVE_DECL_MS_RDONLY)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((MS_RDONLY) == (1), "MS_RDONLY != 1");
+static_assert((MS_RDONLY) == ((1U<<0)), "MS_RDONLY != (1U<<0)");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define MS_RDONLY 1
+# define MS_RDONLY (1U<<0)
 #endif
 #if defined(MS_NOSUID) || (defined(HAVE_DECL_MS_NOSUID) && HAVE_DECL_MS_NOSUID)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((MS_NOSUID) == (2), "MS_NOSUID != 2");
+static_assert((MS_NOSUID) == ((1U<<1)), "MS_NOSUID != (1U<<1)");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define MS_NOSUID 2
+# define MS_NOSUID (1U<<1)
 #endif
 #if defined(MS_NODEV) || (defined(HAVE_DECL_MS_NODEV) && HAVE_DECL_MS_NODEV)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((MS_NODEV) == (4), "MS_NODEV != 4");
+static_assert((MS_NODEV) == ((1U<<2)), "MS_NODEV != (1U<<2)");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define MS_NODEV 4
+# define MS_NODEV (1U<<2)
 #endif
 #if defined(MS_NOEXEC) || (defined(HAVE_DECL_MS_NOEXEC) && HAVE_DECL_MS_NOEXEC)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((MS_NOEXEC) == (8), "MS_NOEXEC != 8");
+static_assert((MS_NOEXEC) == ((1U<<3)), "MS_NOEXEC != (1U<<3)");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define MS_NOEXEC 8
+# define MS_NOEXEC (1U<<3)
 #endif
 #if defined(MS_SYNCHRONOUS) || (defined(HAVE_DECL_MS_SYNCHRONOUS) && HAVE_DECL_MS_SYNCHRONOUS)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((MS_SYNCHRONOUS) == (16), "MS_SYNCHRONOUS != 16");
+static_assert((MS_SYNCHRONOUS) == ((1U<<4)), "MS_SYNCHRONOUS != (1U<<4)");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define MS_SYNCHRONOUS 16
+# define MS_SYNCHRONOUS (1U<<4)
 #endif
 #if defined(MS_REMOUNT) || (defined(HAVE_DECL_MS_REMOUNT) && HAVE_DECL_MS_REMOUNT)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((MS_REMOUNT) == (32), "MS_REMOUNT != 32");
+static_assert((MS_REMOUNT) == ((1U<<5)), "MS_REMOUNT != (1U<<5)");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define MS_REMOUNT 32
+# define MS_REMOUNT (1U<<5)
 #endif
 #if defined(MS_MANDLOCK) || (defined(HAVE_DECL_MS_MANDLOCK) && HAVE_DECL_MS_MANDLOCK)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((MS_MANDLOCK) == (64), "MS_MANDLOCK != 64");
+static_assert((MS_MANDLOCK) == ((1U<<6)), "MS_MANDLOCK != (1U<<6)");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define MS_MANDLOCK 64
+# define MS_MANDLOCK (1U<<6)
 #endif
 #if defined(MS_DIRSYNC) || (defined(HAVE_DECL_MS_DIRSYNC) && HAVE_DECL_MS_DIRSYNC)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((MS_DIRSYNC) == (128), "MS_DIRSYNC != 128");
+static_assert((MS_DIRSYNC) == ((1U<<7)), "MS_DIRSYNC != (1U<<7)");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define MS_DIRSYNC 128
+# define MS_DIRSYNC (1U<<7)
 #endif
 #if defined(MS_NOATIME) || (defined(HAVE_DECL_MS_NOATIME) && HAVE_DECL_MS_NOATIME)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((MS_NOATIME) == (1024), "MS_NOATIME != 1024");
+static_assert((MS_NOATIME) == ((1U<<10)), "MS_NOATIME != (1U<<10)");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define MS_NOATIME 1024
+# define MS_NOATIME (1U<<10)
 #endif
 #if defined(MS_NODIRATIME) || (defined(HAVE_DECL_MS_NODIRATIME) && HAVE_DECL_MS_NODIRATIME)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((MS_NODIRATIME) == (2048), "MS_NODIRATIME != 2048");
+static_assert((MS_NODIRATIME) == ((1U<<11)), "MS_NODIRATIME != (1U<<11)");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define MS_NODIRATIME 2048
+# define MS_NODIRATIME (1U<<11)
 #endif
 #if defined(MS_BIND) || (defined(HAVE_DECL_MS_BIND) && HAVE_DECL_MS_BIND)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((MS_BIND) == (4096), "MS_BIND != 4096");
+static_assert((MS_BIND) == ((1U<<12)), "MS_BIND != (1U<<12)");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define MS_BIND 4096
+# define MS_BIND (1U<<12)
 #endif
 #if defined(MS_MOVE) || (defined(HAVE_DECL_MS_MOVE) && HAVE_DECL_MS_MOVE)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((MS_MOVE) == (8192), "MS_MOVE != 8192");
+static_assert((MS_MOVE) == ((1U<<13)), "MS_MOVE != (1U<<13)");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define MS_MOVE 8192
+# define MS_MOVE (1U<<13)
 #endif
 #if defined(MS_REC) || (defined(HAVE_DECL_MS_REC) && HAVE_DECL_MS_REC)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((MS_REC) == (16384), "MS_REC != 16384");
+static_assert((MS_REC) == ((1U<<14)), "MS_REC != (1U<<14)");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define MS_REC 16384
+# define MS_REC (1U<<14)
 #endif
 #if defined(MS_SILENT) || (defined(HAVE_DECL_MS_SILENT) && HAVE_DECL_MS_SILENT)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((MS_SILENT) == (32768), "MS_SILENT != 32768");
+static_assert((MS_SILENT) == ((1U<<15)), "MS_SILENT != (1U<<15)");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define MS_SILENT 32768
+# define MS_SILENT (1U<<15)
 #endif
 #if defined(MS_POSIXACL) || (defined(HAVE_DECL_MS_POSIXACL) && HAVE_DECL_MS_POSIXACL)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((MS_POSIXACL) == ((1<<16)), "MS_POSIXACL != (1<<16)");
+static_assert((MS_POSIXACL) == ((1U<<16)), "MS_POSIXACL != (1U<<16)");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define MS_POSIXACL (1<<16)
+# define MS_POSIXACL (1U<<16)
 #endif
 #if defined(MS_UNBINDABLE) || (defined(HAVE_DECL_MS_UNBINDABLE) && HAVE_DECL_MS_UNBINDABLE)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((MS_UNBINDABLE) == ((1<<17)), "MS_UNBINDABLE != (1<<17)");
+static_assert((MS_UNBINDABLE) == ((1U<<17)), "MS_UNBINDABLE != (1U<<17)");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define MS_UNBINDABLE (1<<17)
+# define MS_UNBINDABLE (1U<<17)
 #endif
 #if defined(MS_PRIVATE) || (defined(HAVE_DECL_MS_PRIVATE) && HAVE_DECL_MS_PRIVATE)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((MS_PRIVATE) == ((1<<18)), "MS_PRIVATE != (1<<18)");
+static_assert((MS_PRIVATE) == ((1U<<18)), "MS_PRIVATE != (1U<<18)");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define MS_PRIVATE (1<<18)
+# define MS_PRIVATE (1U<<18)
 #endif
 #if defined(MS_SLAVE) || (defined(HAVE_DECL_MS_SLAVE) && HAVE_DECL_MS_SLAVE)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((MS_SLAVE) == ((1<<19)), "MS_SLAVE != (1<<19)");
+static_assert((MS_SLAVE) == ((1U<<19)), "MS_SLAVE != (1U<<19)");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define MS_SLAVE (1<<19)
+# define MS_SLAVE (1U<<19)
 #endif
 #if defined(MS_SHARED) || (defined(HAVE_DECL_MS_SHARED) && HAVE_DECL_MS_SHARED)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((MS_SHARED) == ((1<<20)), "MS_SHARED != (1<<20)");
+static_assert((MS_SHARED) == ((1U<<20)), "MS_SHARED != (1U<<20)");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define MS_SHARED (1<<20)
+# define MS_SHARED (1U<<20)
 #endif
 #if defined(MS_RELATIME) || (defined(HAVE_DECL_MS_RELATIME) && HAVE_DECL_MS_RELATIME)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((MS_RELATIME) == ((1<<21)), "MS_RELATIME != (1<<21)");
+static_assert((MS_RELATIME) == ((1U<<21)), "MS_RELATIME != (1U<<21)");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define MS_RELATIME (1<<21)
+# define MS_RELATIME (1U<<21)
 #endif
 #if defined(MS_KERNMOUNT) || (defined(HAVE_DECL_MS_KERNMOUNT) && HAVE_DECL_MS_KERNMOUNT)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((MS_KERNMOUNT) == ((1<<22)), "MS_KERNMOUNT != (1<<22)");
+static_assert((MS_KERNMOUNT) == ((1U<<22)), "MS_KERNMOUNT != (1U<<22)");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define MS_KERNMOUNT (1<<22)
+# define MS_KERNMOUNT (1U<<22)
 #endif
 #if defined(MS_I_VERSION) || (defined(HAVE_DECL_MS_I_VERSION) && HAVE_DECL_MS_I_VERSION)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((MS_I_VERSION) == ((1<<23)), "MS_I_VERSION != (1<<23)");
+static_assert((MS_I_VERSION) == ((1U<<23)), "MS_I_VERSION != (1U<<23)");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define MS_I_VERSION (1<<23)
+# define MS_I_VERSION (1U<<23)
 #endif
 #if defined(MS_STRICTATIME) || (defined(HAVE_DECL_MS_STRICTATIME) && HAVE_DECL_MS_STRICTATIME)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((MS_STRICTATIME) == ((1<<24)), "MS_STRICTATIME != (1<<24)");
+static_assert((MS_STRICTATIME) == ((1U<<24)), "MS_STRICTATIME != (1U<<24)");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define MS_STRICTATIME (1<<24)
+# define MS_STRICTATIME (1U<<24)
 #endif
 #if defined(MS_LAZYTIME) || (defined(HAVE_DECL_MS_LAZYTIME) && HAVE_DECL_MS_LAZYTIME)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((MS_LAZYTIME) == ((1<<25)), "MS_LAZYTIME != (1<<25)");
+static_assert((MS_LAZYTIME) == ((1U<<25)), "MS_LAZYTIME != (1U<<25)");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define MS_LAZYTIME (1<<25)
+# define MS_LAZYTIME (1U<<25)
 #endif
 #if defined(MS_SUBMOUNT) || (defined(HAVE_DECL_MS_SUBMOUNT) && HAVE_DECL_MS_SUBMOUNT)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((MS_SUBMOUNT) == ((1<<26)), "MS_SUBMOUNT != (1<<26)");
+static_assert((MS_SUBMOUNT) == ((1U<<26)), "MS_SUBMOUNT != (1U<<26)");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define MS_SUBMOUNT (1<<26)
+# define MS_SUBMOUNT (1U<<26)
 #endif
 #if defined(MS_NOREMOTELOCK) || (defined(HAVE_DECL_MS_NOREMOTELOCK) && HAVE_DECL_MS_NOREMOTELOCK)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((MS_NOREMOTELOCK) == ((1<<27)), "MS_NOREMOTELOCK != (1<<27)");
+static_assert((MS_NOREMOTELOCK) == ((1U<<27)), "MS_NOREMOTELOCK != (1U<<27)");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define MS_NOREMOTELOCK (1<<27)
+# define MS_NOREMOTELOCK (1U<<27)
 #endif
 #if defined(MS_NOSEC) || (defined(HAVE_DECL_MS_NOSEC) && HAVE_DECL_MS_NOSEC)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((MS_NOSEC) == ((1<<28)), "MS_NOSEC != (1<<28)");
+static_assert((MS_NOSEC) == ((1U<<28)), "MS_NOSEC != (1U<<28)");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define MS_NOSEC (1<<28)
+# define MS_NOSEC (1U<<28)
 #endif
 #if defined(MS_BORN) || (defined(HAVE_DECL_MS_BORN) && HAVE_DECL_MS_BORN)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((MS_BORN) == ((1<<29)), "MS_BORN != (1<<29)");
+static_assert((MS_BORN) == ((1U<<29)), "MS_BORN != (1U<<29)");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define MS_BORN (1<<29)
+# define MS_BORN (1U<<29)
 #endif
 #if defined(MS_ACTIVE) || (defined(HAVE_DECL_MS_ACTIVE) && HAVE_DECL_MS_ACTIVE)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((MS_ACTIVE) == ((1<<30)), "MS_ACTIVE != (1<<30)");
+static_assert((MS_ACTIVE) == ((1U<<30)), "MS_ACTIVE != (1U<<30)");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define MS_ACTIVE (1<<30)
+# define MS_ACTIVE (1U<<30)
 #endif
 #if defined(MS_NOUSER) || (defined(HAVE_DECL_MS_NOUSER) && HAVE_DECL_MS_NOUSER)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((MS_NOUSER) == ((1<<31)), "MS_NOUSER != (1<<31)");
+static_assert((MS_NOUSER) == ((1U<<31)), "MS_NOUSER != (1U<<31)");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define MS_NOUSER (1<<31)
+# define MS_NOUSER (1U<<31)
 #endif
 
 #ifndef XLAT_MACROS_ONLY
@@ -222,41 +222,349 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat mount_flags[] = {
+static const struct xlat_data mount_flags_xdata[] = {
  XLAT(MS_RDONLY),
+ #define XLAT_VAL_0 ((unsigned) (MS_RDONLY))
+ #define XLAT_STR_0 STRINGIFY(MS_RDONLY)
  XLAT(MS_NOSUID),
+ #define XLAT_VAL_1 ((unsigned) (MS_NOSUID))
+ #define XLAT_STR_1 STRINGIFY(MS_NOSUID)
  XLAT(MS_NODEV),
+ #define XLAT_VAL_2 ((unsigned) (MS_NODEV))
+ #define XLAT_STR_2 STRINGIFY(MS_NODEV)
  XLAT(MS_NOEXEC),
+ #define XLAT_VAL_3 ((unsigned) (MS_NOEXEC))
+ #define XLAT_STR_3 STRINGIFY(MS_NOEXEC)
  XLAT(MS_SYNCHRONOUS),
+ #define XLAT_VAL_4 ((unsigned) (MS_SYNCHRONOUS))
+ #define XLAT_STR_4 STRINGIFY(MS_SYNCHRONOUS)
  XLAT(MS_REMOUNT),
+ #define XLAT_VAL_5 ((unsigned) (MS_REMOUNT))
+ #define XLAT_STR_5 STRINGIFY(MS_REMOUNT)
  XLAT(MS_MANDLOCK),
+ #define XLAT_VAL_6 ((unsigned) (MS_MANDLOCK))
+ #define XLAT_STR_6 STRINGIFY(MS_MANDLOCK)
  XLAT(MS_DIRSYNC),
+ #define XLAT_VAL_7 ((unsigned) (MS_DIRSYNC))
+ #define XLAT_STR_7 STRINGIFY(MS_DIRSYNC)
  XLAT(MS_NOATIME),
+ #define XLAT_VAL_8 ((unsigned) (MS_NOATIME))
+ #define XLAT_STR_8 STRINGIFY(MS_NOATIME)
  XLAT(MS_NODIRATIME),
+ #define XLAT_VAL_9 ((unsigned) (MS_NODIRATIME))
+ #define XLAT_STR_9 STRINGIFY(MS_NODIRATIME)
  XLAT(MS_BIND),
+ #define XLAT_VAL_10 ((unsigned) (MS_BIND))
+ #define XLAT_STR_10 STRINGIFY(MS_BIND)
  XLAT(MS_MOVE),
+ #define XLAT_VAL_11 ((unsigned) (MS_MOVE))
+ #define XLAT_STR_11 STRINGIFY(MS_MOVE)
  XLAT(MS_REC),
+ #define XLAT_VAL_12 ((unsigned) (MS_REC))
+ #define XLAT_STR_12 STRINGIFY(MS_REC)
  XLAT(MS_SILENT),
+ #define XLAT_VAL_13 ((unsigned) (MS_SILENT))
+ #define XLAT_STR_13 STRINGIFY(MS_SILENT)
  XLAT(MS_POSIXACL),
+ #define XLAT_VAL_14 ((unsigned) (MS_POSIXACL))
+ #define XLAT_STR_14 STRINGIFY(MS_POSIXACL)
  XLAT(MS_UNBINDABLE),
+ #define XLAT_VAL_15 ((unsigned) (MS_UNBINDABLE))
+ #define XLAT_STR_15 STRINGIFY(MS_UNBINDABLE)
  XLAT(MS_PRIVATE),
+ #define XLAT_VAL_16 ((unsigned) (MS_PRIVATE))
+ #define XLAT_STR_16 STRINGIFY(MS_PRIVATE)
  XLAT(MS_SLAVE),
+ #define XLAT_VAL_17 ((unsigned) (MS_SLAVE))
+ #define XLAT_STR_17 STRINGIFY(MS_SLAVE)
  XLAT(MS_SHARED),
+ #define XLAT_VAL_18 ((unsigned) (MS_SHARED))
+ #define XLAT_STR_18 STRINGIFY(MS_SHARED)
  XLAT(MS_RELATIME),
+ #define XLAT_VAL_19 ((unsigned) (MS_RELATIME))
+ #define XLAT_STR_19 STRINGIFY(MS_RELATIME)
  XLAT(MS_KERNMOUNT),
+ #define XLAT_VAL_20 ((unsigned) (MS_KERNMOUNT))
+ #define XLAT_STR_20 STRINGIFY(MS_KERNMOUNT)
  XLAT(MS_I_VERSION),
+ #define XLAT_VAL_21 ((unsigned) (MS_I_VERSION))
+ #define XLAT_STR_21 STRINGIFY(MS_I_VERSION)
  XLAT(MS_STRICTATIME),
+ #define XLAT_VAL_22 ((unsigned) (MS_STRICTATIME))
+ #define XLAT_STR_22 STRINGIFY(MS_STRICTATIME)
  XLAT(MS_LAZYTIME),
+ #define XLAT_VAL_23 ((unsigned) (MS_LAZYTIME))
+ #define XLAT_STR_23 STRINGIFY(MS_LAZYTIME)
  XLAT(MS_SUBMOUNT),
+ #define XLAT_VAL_24 ((unsigned) (MS_SUBMOUNT))
+ #define XLAT_STR_24 STRINGIFY(MS_SUBMOUNT)
  XLAT(MS_NOREMOTELOCK),
+ #define XLAT_VAL_25 ((unsigned) (MS_NOREMOTELOCK))
+ #define XLAT_STR_25 STRINGIFY(MS_NOREMOTELOCK)
  XLAT(MS_NOSEC),
+ #define XLAT_VAL_26 ((unsigned) (MS_NOSEC))
+ #define XLAT_STR_26 STRINGIFY(MS_NOSEC)
  XLAT(MS_BORN),
+ #define XLAT_VAL_27 ((unsigned) (MS_BORN))
+ #define XLAT_STR_27 STRINGIFY(MS_BORN)
  XLAT(MS_ACTIVE),
+ #define XLAT_VAL_28 ((unsigned) (MS_ACTIVE))
+ #define XLAT_STR_28 STRINGIFY(MS_ACTIVE)
  XLAT(MS_NOUSER),
- XLAT_END
+ #define XLAT_VAL_29 ((unsigned) (MS_NOUSER))
+ #define XLAT_STR_29 STRINGIFY(MS_NOUSER)
 };
+static
+const struct xlat mount_flags[1] = { {
+ .data = mount_flags_xdata,
+ .size = ARRAY_SIZE(mount_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index e7f3ce183e4cf9df499efa5c7e6136a2187d190b..4d8e4e19d71bbe15f595898f31d1b25112e774a8 100644 (file)
@@ -1,30 +1,30 @@
-MS_RDONLY      1
-MS_NOSUID      2
-MS_NODEV       4
-MS_NOEXEC      8
-MS_SYNCHRONOUS 16
-MS_REMOUNT     32
-MS_MANDLOCK    64
-MS_DIRSYNC     128
-MS_NOATIME     1024
-MS_NODIRATIME  2048
-MS_BIND                4096
-MS_MOVE                8192
-MS_REC         16384
-MS_SILENT      32768
-MS_POSIXACL    (1<<16)
-MS_UNBINDABLE  (1<<17)
-MS_PRIVATE     (1<<18)
-MS_SLAVE       (1<<19)
-MS_SHARED      (1<<20)
-MS_RELATIME    (1<<21)
-MS_KERNMOUNT   (1<<22)
-MS_I_VERSION   (1<<23)
-MS_STRICTATIME (1<<24)
-MS_LAZYTIME    (1<<25)
-MS_SUBMOUNT     (1<<26)
-MS_NOREMOTELOCK        (1<<27)
-MS_NOSEC       (1<<28)
-MS_BORN                (1<<29)
-MS_ACTIVE      (1<<30)
-MS_NOUSER      (1<<31)
+MS_RDONLY      (1U<<0)
+MS_NOSUID      (1U<<1)
+MS_NODEV       (1U<<2)
+MS_NOEXEC      (1U<<3)
+MS_SYNCHRONOUS (1U<<4)
+MS_REMOUNT     (1U<<5)
+MS_MANDLOCK    (1U<<6)
+MS_DIRSYNC     (1U<<7)
+MS_NOATIME     (1U<<10)
+MS_NODIRATIME  (1U<<11)
+MS_BIND                (1U<<12)
+MS_MOVE                (1U<<13)
+MS_REC         (1U<<14)
+MS_SILENT      (1U<<15)
+MS_POSIXACL    (1U<<16)
+MS_UNBINDABLE  (1U<<17)
+MS_PRIVATE     (1U<<18)
+MS_SLAVE       (1U<<19)
+MS_SHARED      (1U<<20)
+MS_RELATIME    (1U<<21)
+MS_KERNMOUNT   (1U<<22)
+MS_I_VERSION   (1U<<23)
+MS_STRICTATIME (1U<<24)
+MS_LAZYTIME    (1U<<25)
+MS_SUBMOUNT     (1U<<26)
+MS_NOREMOTELOCK        (1U<<27)
+MS_NOSEC       (1U<<28)
+MS_BORN                (1U<<29)
+MS_ACTIVE      (1U<<30)
+MS_NOUSER      (1U<<31)
diff --git a/xlat/move_mount_flags.h b/xlat/move_mount_flags.h
new file mode 100644 (file)
index 0000000..0d6c4ec
--- /dev/null
@@ -0,0 +1,138 @@
+/* Generated by ./xlat/gen.sh from ./xlat/move_mount_flags.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(MOVE_MOUNT_F_SYMLINKS) || (defined(HAVE_DECL_MOVE_MOUNT_F_SYMLINKS) && HAVE_DECL_MOVE_MOUNT_F_SYMLINKS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((MOVE_MOUNT_F_SYMLINKS) == (0x01), "MOVE_MOUNT_F_SYMLINKS != 0x01");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define MOVE_MOUNT_F_SYMLINKS 0x01
+#endif
+#if defined(MOVE_MOUNT_F_AUTOMOUNTS) || (defined(HAVE_DECL_MOVE_MOUNT_F_AUTOMOUNTS) && HAVE_DECL_MOVE_MOUNT_F_AUTOMOUNTS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((MOVE_MOUNT_F_AUTOMOUNTS) == (0x02), "MOVE_MOUNT_F_AUTOMOUNTS != 0x02");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define MOVE_MOUNT_F_AUTOMOUNTS 0x02
+#endif
+#if defined(MOVE_MOUNT_F_EMPTY_PATH) || (defined(HAVE_DECL_MOVE_MOUNT_F_EMPTY_PATH) && HAVE_DECL_MOVE_MOUNT_F_EMPTY_PATH)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((MOVE_MOUNT_F_EMPTY_PATH) == (0x04), "MOVE_MOUNT_F_EMPTY_PATH != 0x04");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define MOVE_MOUNT_F_EMPTY_PATH 0x04
+#endif
+#if defined(MOVE_MOUNT_T_SYMLINKS) || (defined(HAVE_DECL_MOVE_MOUNT_T_SYMLINKS) && HAVE_DECL_MOVE_MOUNT_T_SYMLINKS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((MOVE_MOUNT_T_SYMLINKS) == (0x10), "MOVE_MOUNT_T_SYMLINKS != 0x10");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define MOVE_MOUNT_T_SYMLINKS 0x10
+#endif
+#if defined(MOVE_MOUNT_T_AUTOMOUNTS) || (defined(HAVE_DECL_MOVE_MOUNT_T_AUTOMOUNTS) && HAVE_DECL_MOVE_MOUNT_T_AUTOMOUNTS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((MOVE_MOUNT_T_AUTOMOUNTS) == (0x20), "MOVE_MOUNT_T_AUTOMOUNTS != 0x20");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define MOVE_MOUNT_T_AUTOMOUNTS 0x20
+#endif
+#if defined(MOVE_MOUNT_T_EMPTY_PATH) || (defined(HAVE_DECL_MOVE_MOUNT_T_EMPTY_PATH) && HAVE_DECL_MOVE_MOUNT_T_EMPTY_PATH)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((MOVE_MOUNT_T_EMPTY_PATH) == (0x40), "MOVE_MOUNT_T_EMPTY_PATH != 0x40");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define MOVE_MOUNT_T_EMPTY_PATH 0x40
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat move_mount_flags in mpers mode
+
+# else
+
+static const struct xlat_data move_mount_flags_xdata[] = {
+ XLAT(MOVE_MOUNT_F_SYMLINKS),
+ #define XLAT_VAL_0 ((unsigned) (MOVE_MOUNT_F_SYMLINKS))
+ #define XLAT_STR_0 STRINGIFY(MOVE_MOUNT_F_SYMLINKS)
+ XLAT(MOVE_MOUNT_F_AUTOMOUNTS),
+ #define XLAT_VAL_1 ((unsigned) (MOVE_MOUNT_F_AUTOMOUNTS))
+ #define XLAT_STR_1 STRINGIFY(MOVE_MOUNT_F_AUTOMOUNTS)
+ XLAT(MOVE_MOUNT_F_EMPTY_PATH),
+ #define XLAT_VAL_2 ((unsigned) (MOVE_MOUNT_F_EMPTY_PATH))
+ #define XLAT_STR_2 STRINGIFY(MOVE_MOUNT_F_EMPTY_PATH)
+ XLAT(MOVE_MOUNT_T_SYMLINKS),
+ #define XLAT_VAL_3 ((unsigned) (MOVE_MOUNT_T_SYMLINKS))
+ #define XLAT_STR_3 STRINGIFY(MOVE_MOUNT_T_SYMLINKS)
+ XLAT(MOVE_MOUNT_T_AUTOMOUNTS),
+ #define XLAT_VAL_4 ((unsigned) (MOVE_MOUNT_T_AUTOMOUNTS))
+ #define XLAT_STR_4 STRINGIFY(MOVE_MOUNT_T_AUTOMOUNTS)
+ XLAT(MOVE_MOUNT_T_EMPTY_PATH),
+ #define XLAT_VAL_5 ((unsigned) (MOVE_MOUNT_T_EMPTY_PATH))
+ #define XLAT_STR_5 STRINGIFY(MOVE_MOUNT_T_EMPTY_PATH)
+};
+static
+const struct xlat move_mount_flags[1] = { {
+ .data = move_mount_flags_xdata,
+ .size = ARRAY_SIZE(move_mount_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/move_mount_flags.in b/xlat/move_mount_flags.in
new file mode 100644 (file)
index 0000000..441387c
--- /dev/null
@@ -0,0 +1,6 @@
+MOVE_MOUNT_F_SYMLINKS  0x01
+MOVE_MOUNT_F_AUTOMOUNTS        0x02
+MOVE_MOUNT_F_EMPTY_PATH        0x04
+MOVE_MOUNT_T_SYMLINKS  0x10
+MOVE_MOUNT_T_AUTOMOUNTS        0x20
+MOVE_MOUNT_T_EMPTY_PATH        0x40
index 150d10df6e2b3965e82955e115ce033540cea30a..d76e17f33a6e1e5d41d61ba595eaf9f7636f0ea0 100644 (file)
 
 # else
 
-static
-const struct xlat move_pages_flags[] = {
+static const struct xlat_data move_pages_flags_xdata[] = {
 #if defined(MPOL_MF_MOVE) || (defined(HAVE_DECL_MPOL_MF_MOVE) && HAVE_DECL_MPOL_MF_MOVE)
   XLAT(MPOL_MF_MOVE),
+ #define XLAT_VAL_0 ((unsigned) (MPOL_MF_MOVE))
+ #define XLAT_STR_0 STRINGIFY(MPOL_MF_MOVE)
 #endif
 #if defined(MPOL_MF_MOVE_ALL) || (defined(HAVE_DECL_MPOL_MF_MOVE_ALL) && HAVE_DECL_MPOL_MF_MOVE_ALL)
   XLAT(MPOL_MF_MOVE_ALL),
+ #define XLAT_VAL_1 ((unsigned) (MPOL_MF_MOVE_ALL))
+ #define XLAT_STR_1 STRINGIFY(MPOL_MF_MOVE_ALL)
 #endif
- XLAT_END
 };
-
+static
+const struct xlat move_pages_flags[1] = { {
+ .data = move_pages_flags_xdata,
+ .size = ARRAY_SIZE(move_pages_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/mpol_mode_flags.h b/xlat/mpol_mode_flags.h
new file mode 100644 (file)
index 0000000..f3e095f
--- /dev/null
@@ -0,0 +1,66 @@
+/* Generated by ./xlat/gen.sh from ./xlat/mpol_mode_flags.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(MPOL_F_STATIC_NODES) || (defined(HAVE_DECL_MPOL_F_STATIC_NODES) && HAVE_DECL_MPOL_F_STATIC_NODES)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((MPOL_F_STATIC_NODES) == ((1U << 15)), "MPOL_F_STATIC_NODES != (1U << 15)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define MPOL_F_STATIC_NODES (1U << 15)
+#endif
+#if defined(MPOL_F_RELATIVE_NODES) || (defined(HAVE_DECL_MPOL_F_RELATIVE_NODES) && HAVE_DECL_MPOL_F_RELATIVE_NODES)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((MPOL_F_RELATIVE_NODES) == ((1U << 14)), "MPOL_F_RELATIVE_NODES != (1U << 14)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define MPOL_F_RELATIVE_NODES (1U << 14)
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat mpol_mode_flags in mpers mode
+
+# else
+
+static const struct xlat_data mpol_mode_flags_xdata[] = {
+ XLAT(MPOL_F_STATIC_NODES),
+ #define XLAT_VAL_0 ((unsigned) (MPOL_F_STATIC_NODES))
+ #define XLAT_STR_0 STRINGIFY(MPOL_F_STATIC_NODES)
+ XLAT(MPOL_F_RELATIVE_NODES),
+ #define XLAT_VAL_1 ((unsigned) (MPOL_F_RELATIVE_NODES))
+ #define XLAT_STR_1 STRINGIFY(MPOL_F_RELATIVE_NODES)
+};
+static
+const struct xlat mpol_mode_flags[1] = { {
+ .data = mpol_mode_flags_xdata,
+ .size = ARRAY_SIZE(mpol_mode_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/mpol_mode_flags.in b/xlat/mpol_mode_flags.in
new file mode 100644 (file)
index 0000000..eeef953
--- /dev/null
@@ -0,0 +1,2 @@
+MPOL_F_STATIC_NODES    (1U << 15)
+MPOL_F_RELATIVE_NODES  (1U << 14)
diff --git a/xlat/mpol_modes.h b/xlat/mpol_modes.h
new file mode 100644 (file)
index 0000000..462faeb
--- /dev/null
@@ -0,0 +1,120 @@
+/* Generated by ./xlat/gen.sh from ./xlat/mpol_modes.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(MPOL_DEFAULT) || (defined(HAVE_DECL_MPOL_DEFAULT) && HAVE_DECL_MPOL_DEFAULT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((MPOL_DEFAULT) == (0), "MPOL_DEFAULT != 0");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define MPOL_DEFAULT 0
+#endif
+#if defined(MPOL_PREFERRED) || (defined(HAVE_DECL_MPOL_PREFERRED) && HAVE_DECL_MPOL_PREFERRED)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((MPOL_PREFERRED) == (1), "MPOL_PREFERRED != 1");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define MPOL_PREFERRED 1
+#endif
+#if defined(MPOL_BIND) || (defined(HAVE_DECL_MPOL_BIND) && HAVE_DECL_MPOL_BIND)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((MPOL_BIND) == (2), "MPOL_BIND != 2");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define MPOL_BIND 2
+#endif
+#if defined(MPOL_INTERLEAVE) || (defined(HAVE_DECL_MPOL_INTERLEAVE) && HAVE_DECL_MPOL_INTERLEAVE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((MPOL_INTERLEAVE) == (3), "MPOL_INTERLEAVE != 3");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define MPOL_INTERLEAVE 3
+#endif
+#if defined(MPOL_LOCAL) || (defined(HAVE_DECL_MPOL_LOCAL) && HAVE_DECL_MPOL_LOCAL)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((MPOL_LOCAL) == (4), "MPOL_LOCAL != 4");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define MPOL_LOCAL 4
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat mpol_modes in mpers mode
+
+# else
+
+static const struct xlat_data mpol_modes_xdata[] = {
+ [MPOL_DEFAULT] = XLAT(MPOL_DEFAULT),
+ #define XLAT_VAL_0 ((unsigned) (MPOL_DEFAULT))
+ #define XLAT_STR_0 STRINGIFY(MPOL_DEFAULT)
+ [MPOL_PREFERRED] = XLAT(MPOL_PREFERRED),
+ #define XLAT_VAL_1 ((unsigned) (MPOL_PREFERRED))
+ #define XLAT_STR_1 STRINGIFY(MPOL_PREFERRED)
+ [MPOL_BIND] = XLAT(MPOL_BIND),
+ #define XLAT_VAL_2 ((unsigned) (MPOL_BIND))
+ #define XLAT_STR_2 STRINGIFY(MPOL_BIND)
+ [MPOL_INTERLEAVE] = XLAT(MPOL_INTERLEAVE),
+ #define XLAT_VAL_3 ((unsigned) (MPOL_INTERLEAVE))
+ #define XLAT_STR_3 STRINGIFY(MPOL_INTERLEAVE)
+ [MPOL_LOCAL] = XLAT(MPOL_LOCAL),
+ #define XLAT_VAL_4 ((unsigned) (MPOL_LOCAL))
+ #define XLAT_STR_4 STRINGIFY(MPOL_LOCAL)
+};
+static
+const struct xlat mpol_modes[1] = { {
+ .data = mpol_modes_xdata,
+ .size = ARRAY_SIZE(mpol_modes_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/mpol_modes.in b/xlat/mpol_modes.in
new file mode 100644 (file)
index 0000000..93d1b10
--- /dev/null
@@ -0,0 +1,6 @@
+#value_indexed
+MPOL_DEFAULT   0
+MPOL_PREFERRED 1
+MPOL_BIND      2
+MPOL_INTERLEAVE        3
+MPOL_LOCAL      4
index bde6678efcf1fa14e9219dd71a2e077abaf23b94..9dfbe94d8724b022515efadd736cc2527a02a39d 100644 (file)
@@ -12,16 +12,34 @@ extern const struct xlat mq_attr_flags[];
 
 # else
 
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat mq_attr_flags[] = {
+static const struct xlat_data mq_attr_flags_xdata[] = {
 #if defined(O_NONBLOCK) || (defined(HAVE_DECL_O_NONBLOCK) && HAVE_DECL_O_NONBLOCK)
   XLAT(O_NONBLOCK),
+ #define XLAT_VAL_0 ((unsigned) (O_NONBLOCK))
+ #define XLAT_STR_0 STRINGIFY(O_NONBLOCK)
 #endif
- XLAT_END
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat mq_attr_flags[1] = { {
+ .data = mq_attr_flags_xdata,
+ .size = ARRAY_SIZE(mq_attr_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index ad86af7ee738e2216a7b56bb5441965a636930fd..6cbdbccea6455dd3a16bcc0aa61d941fe9d5772a 100644 (file)
@@ -3,6 +3,27 @@
 #include "gcc_compat.h"
 #include "static_assert.h"
 
+#if defined(MREMAP_MAYMOVE) || (defined(HAVE_DECL_MREMAP_MAYMOVE) && HAVE_DECL_MREMAP_MAYMOVE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((MREMAP_MAYMOVE) == (1), "MREMAP_MAYMOVE != 1");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define MREMAP_MAYMOVE 1
+#endif
+#if defined(MREMAP_FIXED) || (defined(HAVE_DECL_MREMAP_FIXED) && HAVE_DECL_MREMAP_FIXED)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((MREMAP_FIXED) == (2), "MREMAP_FIXED != 2");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define MREMAP_FIXED 2
+#endif
+#if defined(MREMAP_DONTUNMAP) || (defined(HAVE_DECL_MREMAP_DONTUNMAP) && HAVE_DECL_MREMAP_DONTUNMAP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((MREMAP_DONTUNMAP) == (4), "MREMAP_DONTUNMAP != 4");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define MREMAP_DONTUNMAP 4
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
 
 # else
 
-static
-const struct xlat mremap_flags[] = {
-#if defined(MREMAP_MAYMOVE) || (defined(HAVE_DECL_MREMAP_MAYMOVE) && HAVE_DECL_MREMAP_MAYMOVE)
-  XLAT(MREMAP_MAYMOVE),
-#endif
-#if defined(MREMAP_FIXED) || (defined(HAVE_DECL_MREMAP_FIXED) && HAVE_DECL_MREMAP_FIXED)
-  XLAT(MREMAP_FIXED),
-#endif
- XLAT_END
+static const struct xlat_data mremap_flags_xdata[] = {
+ XLAT(MREMAP_MAYMOVE),
+ #define XLAT_VAL_0 ((unsigned) (MREMAP_MAYMOVE))
+ #define XLAT_STR_0 STRINGIFY(MREMAP_MAYMOVE)
+ XLAT(MREMAP_FIXED),
+ #define XLAT_VAL_1 ((unsigned) (MREMAP_FIXED))
+ #define XLAT_STR_1 STRINGIFY(MREMAP_FIXED)
+ XLAT(MREMAP_DONTUNMAP),
+ #define XLAT_VAL_2 ((unsigned) (MREMAP_DONTUNMAP))
+ #define XLAT_STR_2 STRINGIFY(MREMAP_DONTUNMAP)
 };
+static
+const struct xlat mremap_flags[1] = { {
+ .data = mremap_flags_xdata,
+ .size = ARRAY_SIZE(mremap_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index be13a6fcaafd14b6dc72d65d75fcbdab506b983a..065f6ed8995070d52d710f24bcde407914326694 100644 (file)
@@ -1,2 +1,3 @@
-MREMAP_MAYMOVE
-MREMAP_FIXED
+MREMAP_MAYMOVE         1
+MREMAP_FIXED           2
+MREMAP_DONTUNMAP       4
index a169d9c8b903a5826c890415ca56c5ca598e586f..5351e3ae9a08458d9fab960c334ff0d6604d6dc6 100644 (file)
@@ -180,32 +180,78 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # ifndef IN_MPERS
 
-const struct xlat msg_flags[] = {
+static const struct xlat_data msg_flags_xdata[] = {
  XLAT(MSG_OOB),
+ #define XLAT_VAL_0 ((unsigned) (MSG_OOB))
+ #define XLAT_STR_0 STRINGIFY(MSG_OOB)
  XLAT(MSG_PEEK),
+ #define XLAT_VAL_1 ((unsigned) (MSG_PEEK))
+ #define XLAT_STR_1 STRINGIFY(MSG_PEEK)
  XLAT(MSG_DONTROUTE),
+ #define XLAT_VAL_2 ((unsigned) (MSG_DONTROUTE))
+ #define XLAT_STR_2 STRINGIFY(MSG_DONTROUTE)
 
  XLAT(MSG_CTRUNC),
+ #define XLAT_VAL_3 ((unsigned) (MSG_CTRUNC))
+ #define XLAT_STR_3 STRINGIFY(MSG_CTRUNC)
  XLAT(MSG_PROBE),
+ #define XLAT_VAL_4 ((unsigned) (MSG_PROBE))
+ #define XLAT_STR_4 STRINGIFY(MSG_PROBE)
  XLAT(MSG_TRUNC),
+ #define XLAT_VAL_5 ((unsigned) (MSG_TRUNC))
+ #define XLAT_STR_5 STRINGIFY(MSG_TRUNC)
  XLAT(MSG_DONTWAIT),
+ #define XLAT_VAL_6 ((unsigned) (MSG_DONTWAIT))
+ #define XLAT_STR_6 STRINGIFY(MSG_DONTWAIT)
  XLAT(MSG_EOR),
+ #define XLAT_VAL_7 ((unsigned) (MSG_EOR))
+ #define XLAT_STR_7 STRINGIFY(MSG_EOR)
  XLAT(MSG_WAITALL),
+ #define XLAT_VAL_8 ((unsigned) (MSG_WAITALL))
+ #define XLAT_STR_8 STRINGIFY(MSG_WAITALL)
  XLAT(MSG_FIN),
+ #define XLAT_VAL_9 ((unsigned) (MSG_FIN))
+ #define XLAT_STR_9 STRINGIFY(MSG_FIN)
  XLAT(MSG_SYN),
+ #define XLAT_VAL_10 ((unsigned) (MSG_SYN))
+ #define XLAT_STR_10 STRINGIFY(MSG_SYN)
  XLAT(MSG_CONFIRM),
+ #define XLAT_VAL_11 ((unsigned) (MSG_CONFIRM))
+ #define XLAT_STR_11 STRINGIFY(MSG_CONFIRM)
  XLAT(MSG_RST),
+ #define XLAT_VAL_12 ((unsigned) (MSG_RST))
+ #define XLAT_STR_12 STRINGIFY(MSG_RST)
  XLAT(MSG_ERRQUEUE),
+ #define XLAT_VAL_13 ((unsigned) (MSG_ERRQUEUE))
+ #define XLAT_STR_13 STRINGIFY(MSG_ERRQUEUE)
  XLAT(MSG_NOSIGNAL),
+ #define XLAT_VAL_14 ((unsigned) (MSG_NOSIGNAL))
+ #define XLAT_STR_14 STRINGIFY(MSG_NOSIGNAL)
  XLAT(MSG_MORE),
+ #define XLAT_VAL_15 ((unsigned) (MSG_MORE))
+ #define XLAT_STR_15 STRINGIFY(MSG_MORE)
  XLAT(MSG_WAITFORONE),
+ #define XLAT_VAL_16 ((unsigned) (MSG_WAITFORONE))
+ #define XLAT_STR_16 STRINGIFY(MSG_WAITFORONE)
  XLAT(MSG_SENDPAGE_NOTLAST),
+ #define XLAT_VAL_17 ((unsigned) (MSG_SENDPAGE_NOTLAST))
+ #define XLAT_STR_17 STRINGIFY(MSG_SENDPAGE_NOTLAST)
  XLAT(MSG_BATCH),
+ #define XLAT_VAL_18 ((unsigned) (MSG_BATCH))
+ #define XLAT_STR_18 STRINGIFY(MSG_BATCH)
  XLAT(MSG_NO_SHARED_FRAGS),
+ #define XLAT_VAL_19 ((unsigned) (MSG_NO_SHARED_FRAGS))
+ #define XLAT_STR_19 STRINGIFY(MSG_NO_SHARED_FRAGS)
  XLAT(MSG_ZEROCOPY),
+ #define XLAT_VAL_20 ((unsigned) (MSG_ZEROCOPY))
+ #define XLAT_STR_20 STRINGIFY(MSG_ZEROCOPY)
 
  XLAT(MSG_FASTOPEN),
+ #define XLAT_VAL_21 ((unsigned) (MSG_FASTOPEN))
+ #define XLAT_STR_21 STRINGIFY(MSG_FASTOPEN)
  XLAT(MSG_CMSG_CLOEXEC),
+ #define XLAT_VAL_22 ((unsigned) (MSG_CMSG_CLOEXEC))
+ #define XLAT_STR_22 STRINGIFY(MSG_CMSG_CLOEXEC)
 #ifndef STRACE_WORKAROUND_FOR_MSG_CMSG_COMPAT
 # define STRACE_WORKAROUND_FOR_MSG_CMSG_COMPAT
 /*
@@ -215,9 +261,211 @@ const struct xlat msg_flags[] = {
 # undef MSG_CMSG_COMPAT
 #endif
  XLAT(MSG_CMSG_COMPAT),
- XLAT_END
+ #define XLAT_VAL_23 ((unsigned) (MSG_CMSG_COMPAT))
+ #define XLAT_STR_23 STRINGIFY(MSG_CMSG_COMPAT)
 };
+const struct xlat msg_flags[1] = { {
+ .data = msg_flags_xdata,
+ .size = ARRAY_SIZE(msg_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 0ac131d3867941c65c16ef0c1675151f5fee31d8..a38f579e8b94bdf4bbbc656b0ba8d01d646872e9 100644 (file)
@@ -61,21 +61,98 @@ extern const struct xlat msgctl_flags[];
 
 # else
 
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat msgctl_flags[] = {
-
+static const struct xlat_data msgctl_flags_xdata[] = {
  XLAT(IPC_RMID),
+ #define XLAT_VAL_0 ((unsigned) (IPC_RMID))
+ #define XLAT_STR_0 STRINGIFY(IPC_RMID)
  XLAT(IPC_SET),
+ #define XLAT_VAL_1 ((unsigned) (IPC_SET))
+ #define XLAT_STR_1 STRINGIFY(IPC_SET)
  XLAT(IPC_STAT),
+ #define XLAT_VAL_2 ((unsigned) (IPC_STAT))
+ #define XLAT_STR_2 STRINGIFY(IPC_STAT)
  XLAT(IPC_INFO),
+ #define XLAT_VAL_3 ((unsigned) (IPC_INFO))
+ #define XLAT_STR_3 STRINGIFY(IPC_INFO)
  XLAT(MSG_STAT),
+ #define XLAT_VAL_4 ((unsigned) (MSG_STAT))
+ #define XLAT_STR_4 STRINGIFY(MSG_STAT)
  XLAT(MSG_INFO),
+ #define XLAT_VAL_5 ((unsigned) (MSG_INFO))
+ #define XLAT_STR_5 STRINGIFY(MSG_INFO)
  XLAT(MSG_STAT_ANY),
- XLAT_END
+ #define XLAT_VAL_6 ((unsigned) (MSG_STAT_ANY))
+ #define XLAT_STR_6 STRINGIFY(MSG_STAT_ANY)
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat msgctl_flags[1] = { {
+ .data = msgctl_flags_xdata,
+ .size = ARRAY_SIZE(msgctl_flags_xdata),
+ .type = XT_SORTED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index a81a81920b35ce9bd98bb1cae5061fdca4707a3c..20da35d8783987838c6c02bf056a34d4a31fea15 100644 (file)
@@ -1,4 +1,4 @@
-/* sort -k2,2g */
+#sorted sort -k2,2g
 IPC_RMID 0
 IPC_SET 1
 IPC_STAT 2
index 0cbeeedb8b4446e09f4fddeee04b560bccaf5d59..2a9be56ad192b0dfc608cbae05484adc35c61929 100644 (file)
@@ -12,17 +12,65 @@ extern const struct xlat mtd_file_mode_options[];
 
 # else
 
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat mtd_file_mode_options[] = {
+static const struct xlat_data mtd_file_mode_options_xdata[] = {
  XLAT(MTD_FILE_MODE_NORMAL),
+ #define XLAT_VAL_0 ((unsigned) (MTD_FILE_MODE_NORMAL))
+ #define XLAT_STR_0 STRINGIFY(MTD_FILE_MODE_NORMAL)
  XLAT(MTD_FILE_MODE_OTP_FACTORY),
+ #define XLAT_VAL_1 ((unsigned) (MTD_FILE_MODE_OTP_FACTORY))
+ #define XLAT_STR_1 STRINGIFY(MTD_FILE_MODE_OTP_FACTORY)
  XLAT(MTD_FILE_MODE_OTP_USER),
+ #define XLAT_VAL_2 ((unsigned) (MTD_FILE_MODE_OTP_USER))
+ #define XLAT_STR_2 STRINGIFY(MTD_FILE_MODE_OTP_USER)
  XLAT(MTD_FILE_MODE_RAW),
- XLAT_END
+ #define XLAT_VAL_3 ((unsigned) (MTD_FILE_MODE_RAW))
+ #define XLAT_STR_3 STRINGIFY(MTD_FILE_MODE_RAW)
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat mtd_file_mode_options[1] = { {
+ .data = mtd_file_mode_options_xdata,
+ .size = ARRAY_SIZE(mtd_file_mode_options_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 91d168f34dcf5fab9b8c26bafb424d8ba3ac422f..8ba922b6ad9353d28c7993def7f8dbf2c69f4cb1 100644 (file)
@@ -12,25 +12,73 @@ extern const struct xlat mtd_flags_options[];
 
 # else
 
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat mtd_flags_options[] = {
+static const struct xlat_data mtd_flags_options_xdata[] = {
 #if defined(MTD_WRITEABLE) || (defined(HAVE_DECL_MTD_WRITEABLE) && HAVE_DECL_MTD_WRITEABLE)
   XLAT(MTD_WRITEABLE),
+ #define XLAT_VAL_0 ((unsigned) (MTD_WRITEABLE))
+ #define XLAT_STR_0 STRINGIFY(MTD_WRITEABLE)
 #endif
 #if defined(MTD_BIT_WRITEABLE) || (defined(HAVE_DECL_MTD_BIT_WRITEABLE) && HAVE_DECL_MTD_BIT_WRITEABLE)
   XLAT(MTD_BIT_WRITEABLE),
+ #define XLAT_VAL_1 ((unsigned) (MTD_BIT_WRITEABLE))
+ #define XLAT_STR_1 STRINGIFY(MTD_BIT_WRITEABLE)
 #endif
 #if defined(MTD_NO_ERASE) || (defined(HAVE_DECL_MTD_NO_ERASE) && HAVE_DECL_MTD_NO_ERASE)
   XLAT(MTD_NO_ERASE),
+ #define XLAT_VAL_2 ((unsigned) (MTD_NO_ERASE))
+ #define XLAT_STR_2 STRINGIFY(MTD_NO_ERASE)
 #endif
 #if defined(MTD_POWERUP_LOCK) || (defined(HAVE_DECL_MTD_POWERUP_LOCK) && HAVE_DECL_MTD_POWERUP_LOCK)
   XLAT(MTD_POWERUP_LOCK),
+ #define XLAT_VAL_3 ((unsigned) (MTD_POWERUP_LOCK))
+ #define XLAT_STR_3 STRINGIFY(MTD_POWERUP_LOCK)
 #endif
- XLAT_END
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat mtd_flags_options[1] = { {
+ .data = mtd_flags_options_xdata,
+ .size = ARRAY_SIZE(mtd_flags_options_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 89a238f0a8d2b6eed31028b5b0afc25407d73724..3573ac2294c6101666e565cba7062f06a2493200 100644 (file)
@@ -12,16 +12,54 @@ extern const struct xlat mtd_mode_options[];
 
 # else
 
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat mtd_mode_options[] = {
+static const struct xlat_data mtd_mode_options_xdata[] = {
  XLAT(MTD_OPS_PLACE_OOB),
+ #define XLAT_VAL_0 ((unsigned) (MTD_OPS_PLACE_OOB))
+ #define XLAT_STR_0 STRINGIFY(MTD_OPS_PLACE_OOB)
  XLAT(MTD_OPS_AUTO_OOB),
+ #define XLAT_VAL_1 ((unsigned) (MTD_OPS_AUTO_OOB))
+ #define XLAT_STR_1 STRINGIFY(MTD_OPS_AUTO_OOB)
  XLAT(MTD_OPS_RAW),
- XLAT_END
+ #define XLAT_VAL_2 ((unsigned) (MTD_OPS_RAW))
+ #define XLAT_STR_2 STRINGIFY(MTD_OPS_RAW)
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat mtd_mode_options[1] = { {
+ .data = mtd_mode_options_xdata,
+ .size = ARRAY_SIZE(mtd_mode_options_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 08a37f52bfdcec31b2092f3e930a99474a1ee05a..a362db82d47cbb903b6dcaa152a21ef9524ea9ec 100644 (file)
@@ -12,28 +12,86 @@ extern const struct xlat mtd_nandecc_options[];
 
 # else
 
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat mtd_nandecc_options[] = {
+static const struct xlat_data mtd_nandecc_options_xdata[] = {
 #if defined(MTD_NANDECC_OFF) || (defined(HAVE_DECL_MTD_NANDECC_OFF) && HAVE_DECL_MTD_NANDECC_OFF)
   XLAT(MTD_NANDECC_OFF),
+ #define XLAT_VAL_0 ((unsigned) (MTD_NANDECC_OFF))
+ #define XLAT_STR_0 STRINGIFY(MTD_NANDECC_OFF)
 #endif
 #if defined(MTD_NANDECC_PLACE) || (defined(HAVE_DECL_MTD_NANDECC_PLACE) && HAVE_DECL_MTD_NANDECC_PLACE)
   XLAT(MTD_NANDECC_PLACE),
+ #define XLAT_VAL_1 ((unsigned) (MTD_NANDECC_PLACE))
+ #define XLAT_STR_1 STRINGIFY(MTD_NANDECC_PLACE)
 #endif
 #if defined(MTD_NANDECC_AUTOPLACE) || (defined(HAVE_DECL_MTD_NANDECC_AUTOPLACE) && HAVE_DECL_MTD_NANDECC_AUTOPLACE)
   XLAT(MTD_NANDECC_AUTOPLACE),
+ #define XLAT_VAL_2 ((unsigned) (MTD_NANDECC_AUTOPLACE))
+ #define XLAT_STR_2 STRINGIFY(MTD_NANDECC_AUTOPLACE)
 #endif
 #if defined(MTD_NANDECC_PLACEONLY) || (defined(HAVE_DECL_MTD_NANDECC_PLACEONLY) && HAVE_DECL_MTD_NANDECC_PLACEONLY)
   XLAT(MTD_NANDECC_PLACEONLY),
+ #define XLAT_VAL_3 ((unsigned) (MTD_NANDECC_PLACEONLY))
+ #define XLAT_STR_3 STRINGIFY(MTD_NANDECC_PLACEONLY)
 #endif
 #if defined(MTD_NANDECC_AUTOPL_USR) || (defined(HAVE_DECL_MTD_NANDECC_AUTOPL_USR) && HAVE_DECL_MTD_NANDECC_AUTOPL_USR)
   XLAT(MTD_NANDECC_AUTOPL_USR),
+ #define XLAT_VAL_4 ((unsigned) (MTD_NANDECC_AUTOPL_USR))
+ #define XLAT_STR_4 STRINGIFY(MTD_NANDECC_AUTOPL_USR)
 #endif
- XLAT_END
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat mtd_nandecc_options[1] = { {
+ .data = mtd_nandecc_options_xdata,
+ .size = ARRAY_SIZE(mtd_nandecc_options_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 071fc5c372f7402ca264a398cf2e9aad69e29392..2d4b6a407a3bcc65ca1c912b292cd36d6eb35b5e 100644 (file)
@@ -12,22 +12,60 @@ extern const struct xlat mtd_otp_options[];
 
 # else
 
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat mtd_otp_options[] = {
+static const struct xlat_data mtd_otp_options_xdata[] = {
 #if defined(MTD_OTP_OFF) || (defined(HAVE_DECL_MTD_OTP_OFF) && HAVE_DECL_MTD_OTP_OFF)
   XLAT(MTD_OTP_OFF),
+ #define XLAT_VAL_0 ((unsigned) (MTD_OTP_OFF))
+ #define XLAT_STR_0 STRINGIFY(MTD_OTP_OFF)
 #endif
 #if defined(MTD_OTP_FACTORY) || (defined(HAVE_DECL_MTD_OTP_FACTORY) && HAVE_DECL_MTD_OTP_FACTORY)
   XLAT(MTD_OTP_FACTORY),
+ #define XLAT_VAL_1 ((unsigned) (MTD_OTP_FACTORY))
+ #define XLAT_STR_1 STRINGIFY(MTD_OTP_FACTORY)
 #endif
 #if defined(MTD_OTP_USER) || (defined(HAVE_DECL_MTD_OTP_USER) && HAVE_DECL_MTD_OTP_USER)
   XLAT(MTD_OTP_USER),
+ #define XLAT_VAL_2 ((unsigned) (MTD_OTP_USER))
+ #define XLAT_STR_2 STRINGIFY(MTD_OTP_USER)
 #endif
- XLAT_END
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat mtd_otp_options[1] = { {
+ .data = mtd_otp_options_xdata,
+ .size = ARRAY_SIZE(mtd_otp_options_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index c6e0ecf1729df43d7333a500ddc2a29374e4187f..dfe51cf1d31c2393f5c727bcb09733e1b8f21b39 100644 (file)
@@ -12,37 +12,125 @@ extern const struct xlat mtd_type_options[];
 
 # else
 
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat mtd_type_options[] = {
+static const struct xlat_data mtd_type_options_xdata[] = {
 #if defined(MTD_ABSENT) || (defined(HAVE_DECL_MTD_ABSENT) && HAVE_DECL_MTD_ABSENT)
   XLAT(MTD_ABSENT),
+ #define XLAT_VAL_0 ((unsigned) (MTD_ABSENT))
+ #define XLAT_STR_0 STRINGIFY(MTD_ABSENT)
 #endif
 #if defined(MTD_RAM) || (defined(HAVE_DECL_MTD_RAM) && HAVE_DECL_MTD_RAM)
   XLAT(MTD_RAM),
+ #define XLAT_VAL_1 ((unsigned) (MTD_RAM))
+ #define XLAT_STR_1 STRINGIFY(MTD_RAM)
 #endif
 #if defined(MTD_ROM) || (defined(HAVE_DECL_MTD_ROM) && HAVE_DECL_MTD_ROM)
   XLAT(MTD_ROM),
+ #define XLAT_VAL_2 ((unsigned) (MTD_ROM))
+ #define XLAT_STR_2 STRINGIFY(MTD_ROM)
 #endif
 #if defined(MTD_NORFLASH) || (defined(HAVE_DECL_MTD_NORFLASH) && HAVE_DECL_MTD_NORFLASH)
   XLAT(MTD_NORFLASH),
+ #define XLAT_VAL_3 ((unsigned) (MTD_NORFLASH))
+ #define XLAT_STR_3 STRINGIFY(MTD_NORFLASH)
 #endif
 #if defined(MTD_NANDFLASH) || (defined(HAVE_DECL_MTD_NANDFLASH) && HAVE_DECL_MTD_NANDFLASH)
   XLAT(MTD_NANDFLASH),
+ #define XLAT_VAL_4 ((unsigned) (MTD_NANDFLASH))
+ #define XLAT_STR_4 STRINGIFY(MTD_NANDFLASH)
 #endif
 #if defined(MTD_DATAFLASH) || (defined(HAVE_DECL_MTD_DATAFLASH) && HAVE_DECL_MTD_DATAFLASH)
   XLAT(MTD_DATAFLASH),
+ #define XLAT_VAL_5 ((unsigned) (MTD_DATAFLASH))
+ #define XLAT_STR_5 STRINGIFY(MTD_DATAFLASH)
 #endif
 #if defined(MTD_UBIVOLUME) || (defined(HAVE_DECL_MTD_UBIVOLUME) && HAVE_DECL_MTD_UBIVOLUME)
   XLAT(MTD_UBIVOLUME),
+ #define XLAT_VAL_6 ((unsigned) (MTD_UBIVOLUME))
+ #define XLAT_STR_6 STRINGIFY(MTD_UBIVOLUME)
 #endif
 #if defined(MTD_MLCNANDFLASH) || (defined(HAVE_DECL_MTD_MLCNANDFLASH) && HAVE_DECL_MTD_MLCNANDFLASH)
   XLAT(MTD_MLCNANDFLASH),
+ #define XLAT_VAL_7 ((unsigned) (MTD_MLCNANDFLASH))
+ #define XLAT_STR_7 STRINGIFY(MTD_MLCNANDFLASH)
 #endif
- XLAT_END
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat mtd_type_options[1] = { {
+ .data = mtd_type_options_xdata,
+ .size = ARRAY_SIZE(mtd_type_options_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index e18020540b18d78b8321e3075752267fc1c573ef..022f4c8f5926d29f43904b8b2541ba6327dc0b3a 100644 (file)
@@ -40,15 +40,63 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # 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
+static const struct xlat_data multicast_router_types_xdata[] = {
+ [MDB_RTR_TYPE_DISABLED] = XLAT(MDB_RTR_TYPE_DISABLED),
+ #define XLAT_VAL_0 ((unsigned) (MDB_RTR_TYPE_DISABLED))
+ #define XLAT_STR_0 STRINGIFY(MDB_RTR_TYPE_DISABLED)
+ [MDB_RTR_TYPE_TEMP_QUERY] = XLAT(MDB_RTR_TYPE_TEMP_QUERY),
+ #define XLAT_VAL_1 ((unsigned) (MDB_RTR_TYPE_TEMP_QUERY))
+ #define XLAT_STR_1 STRINGIFY(MDB_RTR_TYPE_TEMP_QUERY)
+ [MDB_RTR_TYPE_PERM] = XLAT(MDB_RTR_TYPE_PERM),
+ #define XLAT_VAL_2 ((unsigned) (MDB_RTR_TYPE_PERM))
+ #define XLAT_STR_2 STRINGIFY(MDB_RTR_TYPE_PERM)
+ [MDB_RTR_TYPE_TEMP] = XLAT(MDB_RTR_TYPE_TEMP),
+ #define XLAT_VAL_3 ((unsigned) (MDB_RTR_TYPE_TEMP))
+ #define XLAT_STR_3 STRINGIFY(MDB_RTR_TYPE_TEMP)
 };
+static
+const struct xlat multicast_router_types[1] = { {
+ .data = multicast_router_types_xdata,
+ .size = ARRAY_SIZE(multicast_router_types_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 6a5c03c33481e0d54aed7d13996f89aac5e8ee84..b53ea78937865efd8fc3bb5e7e345f33c84d1683 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 MDB_RTR_TYPE_DISABLED  0
 MDB_RTR_TYPE_TEMP_QUERY        1
 MDB_RTR_TYPE_PERM      2
index 87e63ae5e94c895eddc208854a7b8ee71d88269f..a56690aebfe9d6594aea1dfbb94d4acab79b22c6 100644 (file)
@@ -26,13 +26,41 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat name_to_handle_at_flags[] = {
+static const struct xlat_data name_to_handle_at_flags_xdata[] = {
  XLAT(AT_SYMLINK_FOLLOW),
+ #define XLAT_VAL_0 ((unsigned) (AT_SYMLINK_FOLLOW))
+ #define XLAT_STR_0 STRINGIFY(AT_SYMLINK_FOLLOW)
  XLAT(AT_EMPTY_PATH),
- XLAT_END
+ #define XLAT_VAL_1 ((unsigned) (AT_EMPTY_PATH))
+ #define XLAT_STR_1 STRINGIFY(AT_EMPTY_PATH)
 };
+static
+const struct xlat name_to_handle_at_flags[1] = { {
+ .data = name_to_handle_at_flags_xdata,
+ .size = ARRAY_SIZE(name_to_handle_at_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 840dc8e289f888749daa6e7f90f735aa69d9b4c7..eca95876c4692b11e6740b173840f514bba94f94 100644 (file)
@@ -89,22 +89,140 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat nbd_ioctl_cmds[] = {
+static const struct xlat_data nbd_ioctl_cmds_xdata[] = {
  XLAT(NBD_SET_SOCK),
+ #define XLAT_VAL_0 ((unsigned) (NBD_SET_SOCK))
+ #define XLAT_STR_0 STRINGIFY(NBD_SET_SOCK)
  XLAT(NBD_SET_BLKSIZE),
+ #define XLAT_VAL_1 ((unsigned) (NBD_SET_BLKSIZE))
+ #define XLAT_STR_1 STRINGIFY(NBD_SET_BLKSIZE)
  XLAT(NBD_SET_SIZE),
+ #define XLAT_VAL_2 ((unsigned) (NBD_SET_SIZE))
+ #define XLAT_STR_2 STRINGIFY(NBD_SET_SIZE)
  XLAT(NBD_DO_IT),
+ #define XLAT_VAL_3 ((unsigned) (NBD_DO_IT))
+ #define XLAT_STR_3 STRINGIFY(NBD_DO_IT)
  XLAT(NBD_CLEAR_SOCK),
+ #define XLAT_VAL_4 ((unsigned) (NBD_CLEAR_SOCK))
+ #define XLAT_STR_4 STRINGIFY(NBD_CLEAR_SOCK)
  XLAT(NBD_CLEAR_QUE),
+ #define XLAT_VAL_5 ((unsigned) (NBD_CLEAR_QUE))
+ #define XLAT_STR_5 STRINGIFY(NBD_CLEAR_QUE)
  XLAT(NBD_PRINT_DEBUG),
+ #define XLAT_VAL_6 ((unsigned) (NBD_PRINT_DEBUG))
+ #define XLAT_STR_6 STRINGIFY(NBD_PRINT_DEBUG)
  XLAT(NBD_SET_SIZE_BLOCKS),
+ #define XLAT_VAL_7 ((unsigned) (NBD_SET_SIZE_BLOCKS))
+ #define XLAT_STR_7 STRINGIFY(NBD_SET_SIZE_BLOCKS)
  XLAT(NBD_DISCONNECT),
+ #define XLAT_VAL_8 ((unsigned) (NBD_DISCONNECT))
+ #define XLAT_STR_8 STRINGIFY(NBD_DISCONNECT)
  XLAT(NBD_SET_TIMEOUT),
+ #define XLAT_VAL_9 ((unsigned) (NBD_SET_TIMEOUT))
+ #define XLAT_STR_9 STRINGIFY(NBD_SET_TIMEOUT)
  XLAT(NBD_SET_FLAGS),
- XLAT_END
+ #define XLAT_VAL_10 ((unsigned) (NBD_SET_FLAGS))
+ #define XLAT_STR_10 STRINGIFY(NBD_SET_FLAGS)
 };
+static
+const struct xlat nbd_ioctl_cmds[1] = { {
+ .data = nbd_ioctl_cmds_xdata,
+ .size = ARRAY_SIZE(nbd_ioctl_cmds_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index a1311a28f643fcd3186f867445e17ae01357a097..d886225ab86c72b6c888a2fcdcfcb687b747825a 100644 (file)
@@ -89,8 +89,7 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat nbd_ioctl_flags[] = {
+static const struct xlat_data nbd_ioctl_flags_xdata[] = {
 /*
 * Some flags are not defined in <linux/nbd.h>, but are passed anyway.
 * These flags are sent from nbd-server to the client, and the client
@@ -100,29 +99,148 @@ const struct xlat nbd_ioctl_flags[] = {
 
 
  XLAT(NBD_FLAG_HAS_FLAGS),
+ #define XLAT_VAL_0 ((unsigned) (NBD_FLAG_HAS_FLAGS))
+ #define XLAT_STR_0 STRINGIFY(NBD_FLAG_HAS_FLAGS)
 
  XLAT(NBD_FLAG_READ_ONLY),
+ #define XLAT_VAL_1 ((unsigned) (NBD_FLAG_READ_ONLY))
+ #define XLAT_STR_1 STRINGIFY(NBD_FLAG_READ_ONLY)
 
  XLAT(NBD_FLAG_SEND_FLUSH),
+ #define XLAT_VAL_2 ((unsigned) (NBD_FLAG_SEND_FLUSH))
+ #define XLAT_STR_2 STRINGIFY(NBD_FLAG_SEND_FLUSH)
 
  XLAT(NBD_FLAG_SEND_FUA),
+ #define XLAT_VAL_3 ((unsigned) (NBD_FLAG_SEND_FUA))
+ #define XLAT_STR_3 STRINGIFY(NBD_FLAG_SEND_FUA)
 
  XLAT(NBD_FLAG_ROTATIONAL),
+ #define XLAT_VAL_4 ((unsigned) (NBD_FLAG_ROTATIONAL))
+ #define XLAT_STR_4 STRINGIFY(NBD_FLAG_ROTATIONAL)
 
  XLAT(NBD_FLAG_SEND_TRIM),
+ #define XLAT_VAL_5 ((unsigned) (NBD_FLAG_SEND_TRIM))
+ #define XLAT_STR_5 STRINGIFY(NBD_FLAG_SEND_TRIM)
 
  XLAT(NBD_FLAG_SEND_WRITE_ZEROES),
+ #define XLAT_VAL_6 ((unsigned) (NBD_FLAG_SEND_WRITE_ZEROES))
+ #define XLAT_STR_6 STRINGIFY(NBD_FLAG_SEND_WRITE_ZEROES)
 
  XLAT(NBD_FLAG_SEND_DF),
+ #define XLAT_VAL_7 ((unsigned) (NBD_FLAG_SEND_DF))
+ #define XLAT_STR_7 STRINGIFY(NBD_FLAG_SEND_DF)
 
  XLAT(NBD_FLAG_CAN_MULTI_CONN),
+ #define XLAT_VAL_8 ((unsigned) (NBD_FLAG_CAN_MULTI_CONN))
+ #define XLAT_STR_8 STRINGIFY(NBD_FLAG_CAN_MULTI_CONN)
 
  XLAT(NBD_FLAG_SEND_RESIZE),
+ #define XLAT_VAL_9 ((unsigned) (NBD_FLAG_SEND_RESIZE))
+ #define XLAT_STR_9 STRINGIFY(NBD_FLAG_SEND_RESIZE)
 
  XLAT(NBD_FLAG_SEND_CACHE),
- XLAT_END
+ #define XLAT_VAL_10 ((unsigned) (NBD_FLAG_SEND_CACHE))
+ #define XLAT_STR_10 STRINGIFY(NBD_FLAG_SEND_CACHE)
 };
-
+static
+const struct xlat nbd_ioctl_flags[1] = { {
+ .data = nbd_ioctl_flags_xdata,
+ .size = ARRAY_SIZE(nbd_ioctl_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 79982c98c0773d8db702318331f2118e84497124..216cb76fbfbbdf9707eb595d7fa76242e0164122 100644 (file)
@@ -68,19 +68,107 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat neighbor_cache_entry_flags[] = {
+static const struct xlat_data neighbor_cache_entry_flags_xdata[] = {
  XLAT(NTF_USE),
+ #define XLAT_VAL_0 ((unsigned) (NTF_USE))
+ #define XLAT_STR_0 STRINGIFY(NTF_USE)
  XLAT(NTF_SELF),
+ #define XLAT_VAL_1 ((unsigned) (NTF_SELF))
+ #define XLAT_STR_1 STRINGIFY(NTF_SELF)
  XLAT(NTF_MASTER),
+ #define XLAT_VAL_2 ((unsigned) (NTF_MASTER))
+ #define XLAT_STR_2 STRINGIFY(NTF_MASTER)
  XLAT(NTF_PROXY),
+ #define XLAT_VAL_3 ((unsigned) (NTF_PROXY))
+ #define XLAT_STR_3 STRINGIFY(NTF_PROXY)
  XLAT(NTF_EXT_LEARNED),
+ #define XLAT_VAL_4 ((unsigned) (NTF_EXT_LEARNED))
+ #define XLAT_STR_4 STRINGIFY(NTF_EXT_LEARNED)
  XLAT(NTF_OFFLOADED),
+ #define XLAT_VAL_5 ((unsigned) (NTF_OFFLOADED))
+ #define XLAT_STR_5 STRINGIFY(NTF_OFFLOADED)
  XLAT(NTF_STICKY),
+ #define XLAT_VAL_6 ((unsigned) (NTF_STICKY))
+ #define XLAT_STR_6 STRINGIFY(NTF_STICKY)
  XLAT(NTF_ROUTER),
- XLAT_END
+ #define XLAT_VAL_7 ((unsigned) (NTF_ROUTER))
+ #define XLAT_STR_7 STRINGIFY(NTF_ROUTER)
 };
+static
+const struct xlat neighbor_cache_entry_flags[1] = { {
+ .data = neighbor_cache_entry_flags_xdata,
+ .size = ARRAY_SIZE(neighbor_cache_entry_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index d111697c47fb507d62e185a2a936932e99f641f1..ae00ad57ccb5f8e82114278f5ec148d676601652 100644 (file)
 
 # else
 
-static
-const struct xlat neighbor_cache_entry_states[] = {
+static const struct xlat_data neighbor_cache_entry_states_xdata[] = {
 #if defined(NUD_INCOMPLETE) || (defined(HAVE_DECL_NUD_INCOMPLETE) && HAVE_DECL_NUD_INCOMPLETE)
   XLAT(NUD_INCOMPLETE),
+ #define XLAT_VAL_0 ((unsigned) (NUD_INCOMPLETE))
+ #define XLAT_STR_0 STRINGIFY(NUD_INCOMPLETE)
 #endif
 #if defined(NUD_REACHABLE) || (defined(HAVE_DECL_NUD_REACHABLE) && HAVE_DECL_NUD_REACHABLE)
   XLAT(NUD_REACHABLE),
+ #define XLAT_VAL_1 ((unsigned) (NUD_REACHABLE))
+ #define XLAT_STR_1 STRINGIFY(NUD_REACHABLE)
 #endif
 #if defined(NUD_STALE) || (defined(HAVE_DECL_NUD_STALE) && HAVE_DECL_NUD_STALE)
   XLAT(NUD_STALE),
+ #define XLAT_VAL_2 ((unsigned) (NUD_STALE))
+ #define XLAT_STR_2 STRINGIFY(NUD_STALE)
 #endif
 #if defined(NUD_DELAY) || (defined(HAVE_DECL_NUD_DELAY) && HAVE_DECL_NUD_DELAY)
   XLAT(NUD_DELAY),
+ #define XLAT_VAL_3 ((unsigned) (NUD_DELAY))
+ #define XLAT_STR_3 STRINGIFY(NUD_DELAY)
 #endif
 #if defined(NUD_PROBE) || (defined(HAVE_DECL_NUD_PROBE) && HAVE_DECL_NUD_PROBE)
   XLAT(NUD_PROBE),
+ #define XLAT_VAL_4 ((unsigned) (NUD_PROBE))
+ #define XLAT_STR_4 STRINGIFY(NUD_PROBE)
 #endif
 #if defined(NUD_FAILED) || (defined(HAVE_DECL_NUD_FAILED) && HAVE_DECL_NUD_FAILED)
   XLAT(NUD_FAILED),
+ #define XLAT_VAL_5 ((unsigned) (NUD_FAILED))
+ #define XLAT_STR_5 STRINGIFY(NUD_FAILED)
 #endif
 #if defined(NUD_NOARP) || (defined(HAVE_DECL_NUD_NOARP) && HAVE_DECL_NUD_NOARP)
   XLAT(NUD_NOARP),
+ #define XLAT_VAL_6 ((unsigned) (NUD_NOARP))
+ #define XLAT_STR_6 STRINGIFY(NUD_NOARP)
 #endif
 #if defined(NUD_PERMANENT) || (defined(HAVE_DECL_NUD_PERMANENT) && HAVE_DECL_NUD_PERMANENT)
   XLAT(NUD_PERMANENT),
+ #define XLAT_VAL_7 ((unsigned) (NUD_PERMANENT))
+ #define XLAT_STR_7 STRINGIFY(NUD_PERMANENT)
 #endif
 #if defined(NUD_NONE) || (defined(HAVE_DECL_NUD_NONE) && HAVE_DECL_NUD_NONE)
   XLAT(NUD_NONE),
+ #define XLAT_VAL_8 ((unsigned) (NUD_NONE))
+ #define XLAT_STR_8 STRINGIFY(NUD_NONE)
 #endif
- XLAT_END
 };
+static
+const struct xlat neighbor_cache_entry_states[1] = { {
+ .data = neighbor_cache_entry_states_xdata,
+ .size = ARRAY_SIZE(neighbor_cache_entry_states_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 9ccfd5a54f86fb3ce6945a68c5383084a1d3a982..5c8b09355f809714e63948346a33bc3768697fc2 100644 (file)
@@ -26,13 +26,41 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat netfilter_versions[] = {
- XLAT(NFNETLINK_V0),
- XLAT(NFNETLINK_V1),
- XLAT_END
+static const struct xlat_data netfilter_versions_xdata[] = {
+ [NFNETLINK_V0] = XLAT(NFNETLINK_V0),
+ #define XLAT_VAL_0 ((unsigned) (NFNETLINK_V0))
+ #define XLAT_STR_0 STRINGIFY(NFNETLINK_V0)
+ [NFNETLINK_V1] = XLAT(NFNETLINK_V1),
+ #define XLAT_VAL_1 ((unsigned) (NFNETLINK_V1))
+ #define XLAT_STR_1 STRINGIFY(NFNETLINK_V1)
 };
+static
+const struct xlat netfilter_versions[1] = { {
+ .data = netfilter_versions_xdata,
+ .size = ARRAY_SIZE(netfilter_versions_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 09afc8e91b499d64daa4f700aee6ccf34b24b80f..981ab4ac8453d1f060fb5cd54b8811f1906ef5f6 100644 (file)
@@ -1,2 +1,3 @@
+#value_indexed
 NFNETLINK_V0   0
 NFNETLINK_V1   1
index dbe197d757a8e8286f5b92afc0725f0d438cf1ac..4670079f802d6cab8f2c0366e804de0e1bf30b88 100644 (file)
@@ -3,6 +3,20 @@
 #include "gcc_compat.h"
 #include "static_assert.h"
 
+#if defined(NLM_F_CAPPED) || (defined(HAVE_DECL_NLM_F_CAPPED) && HAVE_DECL_NLM_F_CAPPED)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((NLM_F_CAPPED) == (0x100), "NLM_F_CAPPED != 0x100");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define NLM_F_CAPPED 0x100
+#endif
+#if defined(NLM_F_ACK_TLVS) || (defined(HAVE_DECL_NLM_F_ACK_TLVS) && HAVE_DECL_NLM_F_ACK_TLVS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((NLM_F_ACK_TLVS) == (0x200), "NLM_F_ACK_TLVS != 0x200");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define NLM_F_ACK_TLVS 0x200
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
 
 # else
 
-static
-const struct xlat netlink_ack_flags[] = {
-#if defined(NLM_F_CAPPED) || (defined(HAVE_DECL_NLM_F_CAPPED) && HAVE_DECL_NLM_F_CAPPED)
-  XLAT(NLM_F_CAPPED),
-#endif
-#if defined(NLM_F_ACK_TLVS) || (defined(HAVE_DECL_NLM_F_ACK_TLVS) && HAVE_DECL_NLM_F_ACK_TLVS)
-  XLAT(NLM_F_ACK_TLVS),
-#endif
- XLAT_END
+static const struct xlat_data netlink_ack_flags_xdata[] = {
+ XLAT(NLM_F_CAPPED),
+ #define XLAT_VAL_0 ((unsigned) (NLM_F_CAPPED))
+ #define XLAT_STR_0 STRINGIFY(NLM_F_CAPPED)
+ XLAT(NLM_F_ACK_TLVS),
+ #define XLAT_VAL_1 ((unsigned) (NLM_F_ACK_TLVS))
+ #define XLAT_STR_1 STRINGIFY(NLM_F_ACK_TLVS)
 };
+static
+const struct xlat netlink_ack_flags[1] = { {
+ .data = netlink_ack_flags_xdata,
+ .size = ARRAY_SIZE(netlink_ack_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 2aabb840b7186f5b0ee7dbfb13ee0728a4242848..8dd223ac4c8e431c4af860355a04d559eb8d4402 100644 (file)
@@ -1,2 +1,2 @@
-NLM_F_CAPPED
-NLM_F_ACK_TLVS
+NLM_F_CAPPED   0x100
+NLM_F_ACK_TLVS 0x200
index 4fe0db556199983b8fc2e0cc69f8016bf883ea9b..a7b99df90bd7302eaffc5130929686aece710e59 100644 (file)
 
 # else
 
-static
-const struct xlat netlink_delete_flags[] = {
+static const struct xlat_data netlink_delete_flags_xdata[] = {
 #if defined(NLM_F_NONREC) || (defined(HAVE_DECL_NLM_F_NONREC) && HAVE_DECL_NLM_F_NONREC)
   XLAT(NLM_F_NONREC),
+ #define XLAT_VAL_0 ((unsigned) (NLM_F_NONREC))
+ #define XLAT_STR_0 STRINGIFY(NLM_F_NONREC)
 #endif
- XLAT_END
 };
-
+static
+const struct xlat netlink_delete_flags[1] = { {
+ .data = netlink_delete_flags_xdata,
+ .size = ARRAY_SIZE(netlink_delete_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index fd8cd4f24cc08aca1c6caf7b55fc43d983269d47..33e72d39da9be7164c0ca10cdb6ca3abf561e965 100644 (file)
 
 # else
 
-static
-const struct xlat netlink_diag_attrs[] = {
+static const struct xlat_data netlink_diag_attrs_xdata[] = {
  XLAT(NETLINK_DIAG_MEMINFO),
+ #define XLAT_VAL_0 ((unsigned) (NETLINK_DIAG_MEMINFO))
+ #define XLAT_STR_0 STRINGIFY(NETLINK_DIAG_MEMINFO)
  XLAT(NETLINK_DIAG_GROUPS),
+ #define XLAT_VAL_1 ((unsigned) (NETLINK_DIAG_GROUPS))
+ #define XLAT_STR_1 STRINGIFY(NETLINK_DIAG_GROUPS)
  XLAT(NETLINK_DIAG_RX_RING),
+ #define XLAT_VAL_2 ((unsigned) (NETLINK_DIAG_RX_RING))
+ #define XLAT_STR_2 STRINGIFY(NETLINK_DIAG_RX_RING)
  XLAT(NETLINK_DIAG_TX_RING),
+ #define XLAT_VAL_3 ((unsigned) (NETLINK_DIAG_TX_RING))
+ #define XLAT_STR_3 STRINGIFY(NETLINK_DIAG_TX_RING)
  XLAT(NETLINK_DIAG_FLAGS),
- XLAT_END
+ #define XLAT_VAL_4 ((unsigned) (NETLINK_DIAG_FLAGS))
+ #define XLAT_STR_4 STRINGIFY(NETLINK_DIAG_FLAGS)
 };
+static
+const struct xlat netlink_diag_attrs[1] = { {
+ .data = netlink_diag_attrs_xdata,
+ .size = ARRAY_SIZE(netlink_diag_attrs_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index e7afb750addd7601151766a3ad6d3a8e2dbf18a1..836d3df71ba028073ee544d8ba54f7fa0016dff0 100644 (file)
 
 # else
 
-static
-const struct xlat netlink_diag_show[] = {
+static const struct xlat_data netlink_diag_show_xdata[] = {
 #if defined(NDIAG_SHOW_MEMINFO) || (defined(HAVE_DECL_NDIAG_SHOW_MEMINFO) && HAVE_DECL_NDIAG_SHOW_MEMINFO)
   XLAT(NDIAG_SHOW_MEMINFO),
+ #define XLAT_VAL_0 ((unsigned) (NDIAG_SHOW_MEMINFO))
+ #define XLAT_STR_0 STRINGIFY(NDIAG_SHOW_MEMINFO)
 #endif
 #if defined(NDIAG_SHOW_GROUPS) || (defined(HAVE_DECL_NDIAG_SHOW_GROUPS) && HAVE_DECL_NDIAG_SHOW_GROUPS)
   XLAT(NDIAG_SHOW_GROUPS),
+ #define XLAT_VAL_1 ((unsigned) (NDIAG_SHOW_GROUPS))
+ #define XLAT_STR_1 STRINGIFY(NDIAG_SHOW_GROUPS)
 #endif
 #if defined(NDIAG_SHOW_RING_CFG) || (defined(HAVE_DECL_NDIAG_SHOW_RING_CFG) && HAVE_DECL_NDIAG_SHOW_RING_CFG)
   XLAT(NDIAG_SHOW_RING_CFG),
+ #define XLAT_VAL_2 ((unsigned) (NDIAG_SHOW_RING_CFG))
+ #define XLAT_STR_2 STRINGIFY(NDIAG_SHOW_RING_CFG)
 #endif
 #if defined(NDIAG_SHOW_FLAGS) || (defined(HAVE_DECL_NDIAG_SHOW_FLAGS) && HAVE_DECL_NDIAG_SHOW_FLAGS)
   XLAT(NDIAG_SHOW_FLAGS),
+ #define XLAT_VAL_3 ((unsigned) (NDIAG_SHOW_FLAGS))
+ #define XLAT_STR_3 STRINGIFY(NDIAG_SHOW_FLAGS)
 #endif
- XLAT_END
 };
+static
+const struct xlat netlink_diag_show[1] = { {
+ .data = netlink_diag_show_xdata,
+ .size = ARRAY_SIZE(netlink_diag_show_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 217c9dfa9395a93aa206938e25cbf25431f728fb..ce0c5bdb3e3efc74f4c26abc9d91d91bfb496fc7 100644 (file)
@@ -54,17 +54,85 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat netlink_flags[] = {
+static const struct xlat_data netlink_flags_xdata[] = {
  XLAT(NLM_F_REQUEST),
+ #define XLAT_VAL_0 ((unsigned) (NLM_F_REQUEST))
+ #define XLAT_STR_0 STRINGIFY(NLM_F_REQUEST)
  XLAT(NLM_F_MULTI),
+ #define XLAT_VAL_1 ((unsigned) (NLM_F_MULTI))
+ #define XLAT_STR_1 STRINGIFY(NLM_F_MULTI)
  XLAT(NLM_F_ACK),
+ #define XLAT_VAL_2 ((unsigned) (NLM_F_ACK))
+ #define XLAT_STR_2 STRINGIFY(NLM_F_ACK)
  XLAT(NLM_F_ECHO),
+ #define XLAT_VAL_3 ((unsigned) (NLM_F_ECHO))
+ #define XLAT_STR_3 STRINGIFY(NLM_F_ECHO)
  XLAT(NLM_F_DUMP_INTR),
+ #define XLAT_VAL_4 ((unsigned) (NLM_F_DUMP_INTR))
+ #define XLAT_STR_4 STRINGIFY(NLM_F_DUMP_INTR)
  XLAT(NLM_F_DUMP_FILTERED),
- XLAT_END
+ #define XLAT_VAL_5 ((unsigned) (NLM_F_DUMP_FILTERED))
+ #define XLAT_STR_5 STRINGIFY(NLM_F_DUMP_FILTERED)
 };
+static
+const struct xlat netlink_flags[1] = { {
+ .data = netlink_flags_xdata,
+ .size = ARRAY_SIZE(netlink_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 4855c782efe2871b6fd3282dd029d5976d3b9c0b..d5f09deb57df15369d852b4ceecbeaac2861578b 100644 (file)
 
 # else
 
-static
-const struct xlat netlink_get_flags[] = {
+static const struct xlat_data netlink_get_flags_xdata[] = {
 #if defined(NLM_F_DUMP) || (defined(HAVE_DECL_NLM_F_DUMP) && HAVE_DECL_NLM_F_DUMP)
   XLAT(NLM_F_DUMP),
+ #define XLAT_VAL_0 ((unsigned) (NLM_F_DUMP))
+ #define XLAT_STR_0 STRINGIFY(NLM_F_DUMP)
 #endif
 #if defined(NLM_F_ROOT) || (defined(HAVE_DECL_NLM_F_ROOT) && HAVE_DECL_NLM_F_ROOT)
   XLAT(NLM_F_ROOT),
+ #define XLAT_VAL_1 ((unsigned) (NLM_F_ROOT))
+ #define XLAT_STR_1 STRINGIFY(NLM_F_ROOT)
 #endif
 #if defined(NLM_F_MATCH) || (defined(HAVE_DECL_NLM_F_MATCH) && HAVE_DECL_NLM_F_MATCH)
   XLAT(NLM_F_MATCH),
+ #define XLAT_VAL_2 ((unsigned) (NLM_F_MATCH))
+ #define XLAT_STR_2 STRINGIFY(NLM_F_MATCH)
 #endif
 #if defined(NLM_F_ATOMIC) || (defined(HAVE_DECL_NLM_F_ATOMIC) && HAVE_DECL_NLM_F_ATOMIC)
   XLAT(NLM_F_ATOMIC),
+ #define XLAT_VAL_3 ((unsigned) (NLM_F_ATOMIC))
+ #define XLAT_STR_3 STRINGIFY(NLM_F_ATOMIC)
 #endif
- XLAT_END
 };
+static
+const struct xlat netlink_get_flags[1] = { {
+ .data = netlink_get_flags_xdata,
+ .size = ARRAY_SIZE(netlink_get_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 372432c40b74eb3dfcdb2e77d3d0429a2b65e41e..68c4c62c14a9f43adce2a065fa8a416685357489 100644 (file)
 
 # else
 
-static
-const struct xlat netlink_new_flags[] = {
+static const struct xlat_data netlink_new_flags_xdata[] = {
 #if defined(NLM_F_REPLACE) || (defined(HAVE_DECL_NLM_F_REPLACE) && HAVE_DECL_NLM_F_REPLACE)
   XLAT(NLM_F_REPLACE),
+ #define XLAT_VAL_0 ((unsigned) (NLM_F_REPLACE))
+ #define XLAT_STR_0 STRINGIFY(NLM_F_REPLACE)
 #endif
 #if defined(NLM_F_EXCL) || (defined(HAVE_DECL_NLM_F_EXCL) && HAVE_DECL_NLM_F_EXCL)
   XLAT(NLM_F_EXCL),
+ #define XLAT_VAL_1 ((unsigned) (NLM_F_EXCL))
+ #define XLAT_STR_1 STRINGIFY(NLM_F_EXCL)
 #endif
 #if defined(NLM_F_CREATE) || (defined(HAVE_DECL_NLM_F_CREATE) && HAVE_DECL_NLM_F_CREATE)
   XLAT(NLM_F_CREATE),
+ #define XLAT_VAL_2 ((unsigned) (NLM_F_CREATE))
+ #define XLAT_STR_2 STRINGIFY(NLM_F_CREATE)
 #endif
 #if defined(NLM_F_APPEND) || (defined(HAVE_DECL_NLM_F_APPEND) && HAVE_DECL_NLM_F_APPEND)
   XLAT(NLM_F_APPEND),
+ #define XLAT_VAL_3 ((unsigned) (NLM_F_APPEND))
+ #define XLAT_STR_3 STRINGIFY(NLM_F_APPEND)
 #endif
- XLAT_END
 };
+static
+const struct xlat netlink_new_flags[1] = { {
+ .data = netlink_new_flags_xdata,
+ .size = ARRAY_SIZE(netlink_new_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 36845dc96329b53d9a58c3152d20320840f486a9..d7c519d8bd853a34e0081c438b4462a742407cb5 100644 (file)
@@ -162,32 +162,260 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # ifndef IN_MPERS
 
-const struct xlat netlink_protocols[] = {
- XLAT(NETLINK_ROUTE),
- XLAT(NETLINK_UNUSED),
- XLAT(NETLINK_USERSOCK),
- XLAT(NETLINK_FIREWALL),
- XLAT(NETLINK_SOCK_DIAG),
- XLAT(NETLINK_NFLOG),
- XLAT(NETLINK_XFRM),
- XLAT(NETLINK_SELINUX),
- XLAT(NETLINK_ISCSI),
- XLAT(NETLINK_AUDIT),
- XLAT(NETLINK_FIB_LOOKUP),
- XLAT(NETLINK_CONNECTOR),
- XLAT(NETLINK_NETFILTER),
- XLAT(NETLINK_IP6_FW),
- XLAT(NETLINK_DNRTMSG),
- XLAT(NETLINK_KOBJECT_UEVENT),
- XLAT(NETLINK_GENERIC),
- XLAT(NETLINK_SCSITRANSPORT),
- XLAT(NETLINK_ECRYPTFS),
- XLAT(NETLINK_RDMA),
- XLAT(NETLINK_CRYPTO),
- XLAT(NETLINK_SMC),
- XLAT_END
+static const struct xlat_data netlink_protocols_xdata[] = {
+ [NETLINK_ROUTE] = XLAT(NETLINK_ROUTE),
+ #define XLAT_VAL_0 ((unsigned) (NETLINK_ROUTE))
+ #define XLAT_STR_0 STRINGIFY(NETLINK_ROUTE)
+ [NETLINK_UNUSED] = XLAT(NETLINK_UNUSED),
+ #define XLAT_VAL_1 ((unsigned) (NETLINK_UNUSED))
+ #define XLAT_STR_1 STRINGIFY(NETLINK_UNUSED)
+ [NETLINK_USERSOCK] = XLAT(NETLINK_USERSOCK),
+ #define XLAT_VAL_2 ((unsigned) (NETLINK_USERSOCK))
+ #define XLAT_STR_2 STRINGIFY(NETLINK_USERSOCK)
+ [NETLINK_FIREWALL] = XLAT(NETLINK_FIREWALL),
+ #define XLAT_VAL_3 ((unsigned) (NETLINK_FIREWALL))
+ #define XLAT_STR_3 STRINGIFY(NETLINK_FIREWALL)
+ [NETLINK_SOCK_DIAG] = XLAT(NETLINK_SOCK_DIAG),
+ #define XLAT_VAL_4 ((unsigned) (NETLINK_SOCK_DIAG))
+ #define XLAT_STR_4 STRINGIFY(NETLINK_SOCK_DIAG)
+ [NETLINK_NFLOG] = XLAT(NETLINK_NFLOG),
+ #define XLAT_VAL_5 ((unsigned) (NETLINK_NFLOG))
+ #define XLAT_STR_5 STRINGIFY(NETLINK_NFLOG)
+ [NETLINK_XFRM] = XLAT(NETLINK_XFRM),
+ #define XLAT_VAL_6 ((unsigned) (NETLINK_XFRM))
+ #define XLAT_STR_6 STRINGIFY(NETLINK_XFRM)
+ [NETLINK_SELINUX] = XLAT(NETLINK_SELINUX),
+ #define XLAT_VAL_7 ((unsigned) (NETLINK_SELINUX))
+ #define XLAT_STR_7 STRINGIFY(NETLINK_SELINUX)
+ [NETLINK_ISCSI] = XLAT(NETLINK_ISCSI),
+ #define XLAT_VAL_8 ((unsigned) (NETLINK_ISCSI))
+ #define XLAT_STR_8 STRINGIFY(NETLINK_ISCSI)
+ [NETLINK_AUDIT] = XLAT(NETLINK_AUDIT),
+ #define XLAT_VAL_9 ((unsigned) (NETLINK_AUDIT))
+ #define XLAT_STR_9 STRINGIFY(NETLINK_AUDIT)
+ [NETLINK_FIB_LOOKUP] = XLAT(NETLINK_FIB_LOOKUP),
+ #define XLAT_VAL_10 ((unsigned) (NETLINK_FIB_LOOKUP))
+ #define XLAT_STR_10 STRINGIFY(NETLINK_FIB_LOOKUP)
+ [NETLINK_CONNECTOR] = XLAT(NETLINK_CONNECTOR),
+ #define XLAT_VAL_11 ((unsigned) (NETLINK_CONNECTOR))
+ #define XLAT_STR_11 STRINGIFY(NETLINK_CONNECTOR)
+ [NETLINK_NETFILTER] = XLAT(NETLINK_NETFILTER),
+ #define XLAT_VAL_12 ((unsigned) (NETLINK_NETFILTER))
+ #define XLAT_STR_12 STRINGIFY(NETLINK_NETFILTER)
+ [NETLINK_IP6_FW] = XLAT(NETLINK_IP6_FW),
+ #define XLAT_VAL_13 ((unsigned) (NETLINK_IP6_FW))
+ #define XLAT_STR_13 STRINGIFY(NETLINK_IP6_FW)
+ [NETLINK_DNRTMSG] = XLAT(NETLINK_DNRTMSG),
+ #define XLAT_VAL_14 ((unsigned) (NETLINK_DNRTMSG))
+ #define XLAT_STR_14 STRINGIFY(NETLINK_DNRTMSG)
+ [NETLINK_KOBJECT_UEVENT] = XLAT(NETLINK_KOBJECT_UEVENT),
+ #define XLAT_VAL_15 ((unsigned) (NETLINK_KOBJECT_UEVENT))
+ #define XLAT_STR_15 STRINGIFY(NETLINK_KOBJECT_UEVENT)
+ [NETLINK_GENERIC] = XLAT(NETLINK_GENERIC),
+ #define XLAT_VAL_16 ((unsigned) (NETLINK_GENERIC))
+ #define XLAT_STR_16 STRINGIFY(NETLINK_GENERIC)
+ [NETLINK_SCSITRANSPORT] = XLAT(NETLINK_SCSITRANSPORT),
+ #define XLAT_VAL_17 ((unsigned) (NETLINK_SCSITRANSPORT))
+ #define XLAT_STR_17 STRINGIFY(NETLINK_SCSITRANSPORT)
+ [NETLINK_ECRYPTFS] = XLAT(NETLINK_ECRYPTFS),
+ #define XLAT_VAL_18 ((unsigned) (NETLINK_ECRYPTFS))
+ #define XLAT_STR_18 STRINGIFY(NETLINK_ECRYPTFS)
+ [NETLINK_RDMA] = XLAT(NETLINK_RDMA),
+ #define XLAT_VAL_19 ((unsigned) (NETLINK_RDMA))
+ #define XLAT_STR_19 STRINGIFY(NETLINK_RDMA)
+ [NETLINK_CRYPTO] = XLAT(NETLINK_CRYPTO),
+ #define XLAT_VAL_20 ((unsigned) (NETLINK_CRYPTO))
+ #define XLAT_STR_20 STRINGIFY(NETLINK_CRYPTO)
+ [NETLINK_SMC] = XLAT(NETLINK_SMC),
+ #define XLAT_VAL_21 ((unsigned) (NETLINK_SMC))
+ #define XLAT_STR_21 STRINGIFY(NETLINK_SMC)
 };
+const struct xlat netlink_protocols[1] = { {
+ .data = netlink_protocols_xdata,
+ .size = ARRAY_SIZE(netlink_protocols_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index a76ebd7e914fad71ba9e963939d964b333b641d0..020718b856f8fb57329c8cfbdf6c0013caa72281 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 NETLINK_ROUTE          0
 NETLINK_UNUSED         1
 NETLINK_USERSOCK       2
index 9d36e152abbdd8a4cb38a72100652e773845ba8d..f7a5896604a0b84875d47710dc0bafb0221b83d6 100644 (file)
@@ -75,20 +75,118 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat netlink_sk_meminfo_indices[] = {
+static const struct xlat_data netlink_sk_meminfo_indices_xdata[] = {
  [SK_MEMINFO_RMEM_ALLOC] = XLAT(SK_MEMINFO_RMEM_ALLOC),
+ #define XLAT_VAL_0 ((unsigned) (SK_MEMINFO_RMEM_ALLOC))
+ #define XLAT_STR_0 STRINGIFY(SK_MEMINFO_RMEM_ALLOC)
  [SK_MEMINFO_RCVBUF] = XLAT(SK_MEMINFO_RCVBUF),
+ #define XLAT_VAL_1 ((unsigned) (SK_MEMINFO_RCVBUF))
+ #define XLAT_STR_1 STRINGIFY(SK_MEMINFO_RCVBUF)
  [SK_MEMINFO_WMEM_ALLOC] = XLAT(SK_MEMINFO_WMEM_ALLOC),
+ #define XLAT_VAL_2 ((unsigned) (SK_MEMINFO_WMEM_ALLOC))
+ #define XLAT_STR_2 STRINGIFY(SK_MEMINFO_WMEM_ALLOC)
  [SK_MEMINFO_SNDBUF] = XLAT(SK_MEMINFO_SNDBUF),
+ #define XLAT_VAL_3 ((unsigned) (SK_MEMINFO_SNDBUF))
+ #define XLAT_STR_3 STRINGIFY(SK_MEMINFO_SNDBUF)
  [SK_MEMINFO_FWD_ALLOC] = XLAT(SK_MEMINFO_FWD_ALLOC),
+ #define XLAT_VAL_4 ((unsigned) (SK_MEMINFO_FWD_ALLOC))
+ #define XLAT_STR_4 STRINGIFY(SK_MEMINFO_FWD_ALLOC)
  [SK_MEMINFO_WMEM_QUEUED] = XLAT(SK_MEMINFO_WMEM_QUEUED),
+ #define XLAT_VAL_5 ((unsigned) (SK_MEMINFO_WMEM_QUEUED))
+ #define XLAT_STR_5 STRINGIFY(SK_MEMINFO_WMEM_QUEUED)
  [SK_MEMINFO_OPTMEM] = XLAT(SK_MEMINFO_OPTMEM),
+ #define XLAT_VAL_6 ((unsigned) (SK_MEMINFO_OPTMEM))
+ #define XLAT_STR_6 STRINGIFY(SK_MEMINFO_OPTMEM)
  [SK_MEMINFO_BACKLOG] = XLAT(SK_MEMINFO_BACKLOG),
+ #define XLAT_VAL_7 ((unsigned) (SK_MEMINFO_BACKLOG))
+ #define XLAT_STR_7 STRINGIFY(SK_MEMINFO_BACKLOG)
  [SK_MEMINFO_DROPS] = XLAT(SK_MEMINFO_DROPS),
- XLAT_END
+ #define XLAT_VAL_8 ((unsigned) (SK_MEMINFO_DROPS))
+ #define XLAT_STR_8 STRINGIFY(SK_MEMINFO_DROPS)
 };
+static
+const struct xlat netlink_sk_meminfo_indices[1] = { {
+ .data = netlink_sk_meminfo_indices_xdata,
+ .size = ARRAY_SIZE(netlink_sk_meminfo_indices_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 7c090d2483e2ca0effa6522e6e58d2e65e2dd49a..21e0ab1e38e76f6aad6e1130ff6b91d29ec89fab 100644 (file)
 
 # else
 
-static
-const struct xlat netlink_socket_flags[] = {
+static const struct xlat_data netlink_socket_flags_xdata[] = {
 #if defined(NDIAG_FLAG_CB_RUNNING) || (defined(HAVE_DECL_NDIAG_FLAG_CB_RUNNING) && HAVE_DECL_NDIAG_FLAG_CB_RUNNING)
   XLAT(NDIAG_FLAG_CB_RUNNING),
+ #define XLAT_VAL_0 ((unsigned) (NDIAG_FLAG_CB_RUNNING))
+ #define XLAT_STR_0 STRINGIFY(NDIAG_FLAG_CB_RUNNING)
 #endif
 #if defined(NDIAG_FLAG_PKTINFO) || (defined(HAVE_DECL_NDIAG_FLAG_PKTINFO) && HAVE_DECL_NDIAG_FLAG_PKTINFO)
   XLAT(NDIAG_FLAG_PKTINFO),
+ #define XLAT_VAL_1 ((unsigned) (NDIAG_FLAG_PKTINFO))
+ #define XLAT_STR_1 STRINGIFY(NDIAG_FLAG_PKTINFO)
 #endif
 #if defined(NDIAG_FLAG_BROADCAST_ERROR) || (defined(HAVE_DECL_NDIAG_FLAG_BROADCAST_ERROR) && HAVE_DECL_NDIAG_FLAG_BROADCAST_ERROR)
   XLAT(NDIAG_FLAG_BROADCAST_ERROR),
+ #define XLAT_VAL_2 ((unsigned) (NDIAG_FLAG_BROADCAST_ERROR))
+ #define XLAT_STR_2 STRINGIFY(NDIAG_FLAG_BROADCAST_ERROR)
 #endif
 #if defined(NDIAG_FLAG_NO_ENOBUFS) || (defined(HAVE_DECL_NDIAG_FLAG_NO_ENOBUFS) && HAVE_DECL_NDIAG_FLAG_NO_ENOBUFS)
   XLAT(NDIAG_FLAG_NO_ENOBUFS),
+ #define XLAT_VAL_3 ((unsigned) (NDIAG_FLAG_NO_ENOBUFS))
+ #define XLAT_STR_3 STRINGIFY(NDIAG_FLAG_NO_ENOBUFS)
 #endif
 #if defined(NDIAG_FLAG_LISTEN_ALL_NSID) || (defined(HAVE_DECL_NDIAG_FLAG_LISTEN_ALL_NSID) && HAVE_DECL_NDIAG_FLAG_LISTEN_ALL_NSID)
   XLAT(NDIAG_FLAG_LISTEN_ALL_NSID),
+ #define XLAT_VAL_4 ((unsigned) (NDIAG_FLAG_LISTEN_ALL_NSID))
+ #define XLAT_STR_4 STRINGIFY(NDIAG_FLAG_LISTEN_ALL_NSID)
 #endif
 #if defined(NDIAG_FLAG_CAP_ACK) || (defined(HAVE_DECL_NDIAG_FLAG_CAP_ACK) && HAVE_DECL_NDIAG_FLAG_CAP_ACK)
   XLAT(NDIAG_FLAG_CAP_ACK),
+ #define XLAT_VAL_5 ((unsigned) (NDIAG_FLAG_CAP_ACK))
+ #define XLAT_STR_5 STRINGIFY(NDIAG_FLAG_CAP_ACK)
 #endif
- XLAT_END
 };
+static
+const struct xlat netlink_socket_flags[1] = { {
+ .data = netlink_socket_flags_xdata,
+ .size = ARRAY_SIZE(netlink_socket_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 9f3ae5658a022790f096c34e96aaa783c00aca4b..6d243e7c9a22c03f055b7714e968af3692c1e780 100644 (file)
@@ -33,15 +33,53 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat netlink_states[] = {
+static const struct xlat_data netlink_states_xdata[] = {
  XLAT(NETLINK_UNCONNECTED),
+ #define XLAT_VAL_0 ((unsigned) (NETLINK_UNCONNECTED))
+ #define XLAT_STR_0 STRINGIFY(NETLINK_UNCONNECTED)
  XLAT(NETLINK_CONNECTED),
+ #define XLAT_VAL_1 ((unsigned) (NETLINK_CONNECTED))
+ #define XLAT_STR_1 STRINGIFY(NETLINK_CONNECTED)
 
  XLAT(TCP_CLOSE),
- XLAT_END
+ #define XLAT_VAL_2 ((unsigned) (TCP_CLOSE))
+ #define XLAT_STR_2 STRINGIFY(TCP_CLOSE)
 };
+static
+const struct xlat netlink_states[1] = { {
+ .data = netlink_states_xdata,
+ .size = ARRAY_SIZE(netlink_states_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index f6d44a3894e7ff06436e4efe0f6155f3cce18129..2be91c60bba5bfa03eb1839a64c35832624bce91 100644 (file)
@@ -40,15 +40,63 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat netlink_types[] = {
- XLAT(NLMSG_NOOP),
- XLAT(NLMSG_ERROR),
- XLAT(NLMSG_DONE),
- XLAT(NLMSG_OVERRUN),
- XLAT_END
+static const struct xlat_data netlink_types_xdata[] = {
+ [NLMSG_NOOP] = XLAT(NLMSG_NOOP),
+ #define XLAT_VAL_0 ((unsigned) (NLMSG_NOOP))
+ #define XLAT_STR_0 STRINGIFY(NLMSG_NOOP)
+ [NLMSG_ERROR] = XLAT(NLMSG_ERROR),
+ #define XLAT_VAL_1 ((unsigned) (NLMSG_ERROR))
+ #define XLAT_STR_1 STRINGIFY(NLMSG_ERROR)
+ [NLMSG_DONE] = XLAT(NLMSG_DONE),
+ #define XLAT_VAL_2 ((unsigned) (NLMSG_DONE))
+ #define XLAT_STR_2 STRINGIFY(NLMSG_DONE)
+ [NLMSG_OVERRUN] = XLAT(NLMSG_OVERRUN),
+ #define XLAT_VAL_3 ((unsigned) (NLMSG_OVERRUN))
+ #define XLAT_STR_3 STRINGIFY(NLMSG_OVERRUN)
 };
+static
+const struct xlat netlink_types[1] = { {
+ .data = netlink_types_xdata,
+ .size = ARRAY_SIZE(netlink_types_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 9cb52973334d7e0ed162f516fa3fbb204e7e39a2..ad4a841ec54969411e7337347872e0ffb6855aac 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 NLMSG_NOOP             0x1
 NLMSG_ERROR            0x2
 NLMSG_DONE             0x3
index d0584b3727a598f35df3638ceae8be50eda96635..2be668ce7ba2feb823ed5826df3c73c6de84b4b0 100644 (file)
@@ -47,16 +47,74 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # 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
+static const struct xlat_data nf_acct_msg_types_xdata[] = {
+ [NFNL_MSG_ACCT_NEW] = XLAT(NFNL_MSG_ACCT_NEW),
+ #define XLAT_VAL_0 ((unsigned) (NFNL_MSG_ACCT_NEW))
+ #define XLAT_STR_0 STRINGIFY(NFNL_MSG_ACCT_NEW)
+ [NFNL_MSG_ACCT_GET] = XLAT(NFNL_MSG_ACCT_GET),
+ #define XLAT_VAL_1 ((unsigned) (NFNL_MSG_ACCT_GET))
+ #define XLAT_STR_1 STRINGIFY(NFNL_MSG_ACCT_GET)
+ [NFNL_MSG_ACCT_GET_CTRZERO] = XLAT(NFNL_MSG_ACCT_GET_CTRZERO),
+ #define XLAT_VAL_2 ((unsigned) (NFNL_MSG_ACCT_GET_CTRZERO))
+ #define XLAT_STR_2 STRINGIFY(NFNL_MSG_ACCT_GET_CTRZERO)
+ [NFNL_MSG_ACCT_DEL] = XLAT(NFNL_MSG_ACCT_DEL),
+ #define XLAT_VAL_3 ((unsigned) (NFNL_MSG_ACCT_DEL))
+ #define XLAT_STR_3 STRINGIFY(NFNL_MSG_ACCT_DEL)
+ [NFNL_MSG_ACCT_OVERQUOTA] = XLAT(NFNL_MSG_ACCT_OVERQUOTA),
+ #define XLAT_VAL_4 ((unsigned) (NFNL_MSG_ACCT_OVERQUOTA))
+ #define XLAT_STR_4 STRINGIFY(NFNL_MSG_ACCT_OVERQUOTA)
 };
+static
+const struct xlat nf_acct_msg_types[1] = { {
+ .data = nf_acct_msg_types_xdata,
+ .size = ARRAY_SIZE(nf_acct_msg_types_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 3384ee0d4d67fe1a982ff1ef6a8c98763cb776af..b5c16024b5ec63e25b76fe486f47d5a9152c49dd 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 NFNL_MSG_ACCT_NEW              0
 NFNL_MSG_ACCT_GET              1
 NFNL_MSG_ACCT_GET_CTRZERO      2
index 0fa432a8c5dabac0f04e151bb8d9166f6af81bf5..cced27d4ce41ea8143d1c684f1c2ddfc9181dfe5 100644 (file)
@@ -33,14 +33,52 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # 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
+static const struct xlat_data nf_cthelper_msg_types_xdata[] = {
+ [NFNL_MSG_CTHELPER_NEW] = XLAT(NFNL_MSG_CTHELPER_NEW),
+ #define XLAT_VAL_0 ((unsigned) (NFNL_MSG_CTHELPER_NEW))
+ #define XLAT_STR_0 STRINGIFY(NFNL_MSG_CTHELPER_NEW)
+ [NFNL_MSG_CTHELPER_GET] = XLAT(NFNL_MSG_CTHELPER_GET),
+ #define XLAT_VAL_1 ((unsigned) (NFNL_MSG_CTHELPER_GET))
+ #define XLAT_STR_1 STRINGIFY(NFNL_MSG_CTHELPER_GET)
+ [NFNL_MSG_CTHELPER_DEL] = XLAT(NFNL_MSG_CTHELPER_DEL),
+ #define XLAT_VAL_2 ((unsigned) (NFNL_MSG_CTHELPER_DEL))
+ #define XLAT_STR_2 STRINGIFY(NFNL_MSG_CTHELPER_DEL)
 };
+static
+const struct xlat nf_cthelper_msg_types[1] = { {
+ .data = nf_cthelper_msg_types_xdata,
+ .size = ARRAY_SIZE(nf_cthelper_msg_types_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index bbee697ab30f691ac764b6c3a7808386b40d6f6c..34959a83f745de1d5250ddaecf5be6df2bcc26fb 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 NFNL_MSG_CTHELPER_NEW  0
 NFNL_MSG_CTHELPER_GET  1
 NFNL_MSG_CTHELPER_DEL  2
index a6b13a10c65e93950ce7f8d66094d422703b0cbd..c7ca5d53788ffbf9a54e23d9f6c75332d88d63ef 100644 (file)
@@ -40,15 +40,63 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # 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
+static const struct xlat_data nf_ctnetlink_exp_msg_types_xdata[] = {
+ [IPCTNL_MSG_EXP_NEW] = XLAT(IPCTNL_MSG_EXP_NEW),
+ #define XLAT_VAL_0 ((unsigned) (IPCTNL_MSG_EXP_NEW))
+ #define XLAT_STR_0 STRINGIFY(IPCTNL_MSG_EXP_NEW)
+ [IPCTNL_MSG_EXP_GET] = XLAT(IPCTNL_MSG_EXP_GET),
+ #define XLAT_VAL_1 ((unsigned) (IPCTNL_MSG_EXP_GET))
+ #define XLAT_STR_1 STRINGIFY(IPCTNL_MSG_EXP_GET)
+ [IPCTNL_MSG_EXP_DELETE] = XLAT(IPCTNL_MSG_EXP_DELETE),
+ #define XLAT_VAL_2 ((unsigned) (IPCTNL_MSG_EXP_DELETE))
+ #define XLAT_STR_2 STRINGIFY(IPCTNL_MSG_EXP_DELETE)
+ [IPCTNL_MSG_EXP_GET_STATS_CPU] = XLAT(IPCTNL_MSG_EXP_GET_STATS_CPU),
+ #define XLAT_VAL_3 ((unsigned) (IPCTNL_MSG_EXP_GET_STATS_CPU))
+ #define XLAT_STR_3 STRINGIFY(IPCTNL_MSG_EXP_GET_STATS_CPU)
 };
+static
+const struct xlat nf_ctnetlink_exp_msg_types[1] = { {
+ .data = nf_ctnetlink_exp_msg_types_xdata,
+ .size = ARRAY_SIZE(nf_ctnetlink_exp_msg_types_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 8236e066a9814df5815ac089c8b7beda81a2f8cd..0f4eed4f363bf0927b3c5cef067adaf9f002c65c 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 IPCTNL_MSG_EXP_NEW             0
 IPCTNL_MSG_EXP_GET             1
 IPCTNL_MSG_EXP_DELETE          2
index 71d24aed1ec39d6607a1623b636808cf6cd639a1..d25b197d48adb9d72e42c75e16971d9fb91c7f89 100644 (file)
@@ -68,19 +68,107 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # 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
+static const struct xlat_data nf_ctnetlink_msg_types_xdata[] = {
+ [IPCTNL_MSG_CT_NEW] = XLAT(IPCTNL_MSG_CT_NEW),
+ #define XLAT_VAL_0 ((unsigned) (IPCTNL_MSG_CT_NEW))
+ #define XLAT_STR_0 STRINGIFY(IPCTNL_MSG_CT_NEW)
+ [IPCTNL_MSG_CT_GET] = XLAT(IPCTNL_MSG_CT_GET),
+ #define XLAT_VAL_1 ((unsigned) (IPCTNL_MSG_CT_GET))
+ #define XLAT_STR_1 STRINGIFY(IPCTNL_MSG_CT_GET)
+ [IPCTNL_MSG_CT_DELETE] = XLAT(IPCTNL_MSG_CT_DELETE),
+ #define XLAT_VAL_2 ((unsigned) (IPCTNL_MSG_CT_DELETE))
+ #define XLAT_STR_2 STRINGIFY(IPCTNL_MSG_CT_DELETE)
+ [IPCTNL_MSG_CT_GET_CTRZERO] = XLAT(IPCTNL_MSG_CT_GET_CTRZERO),
+ #define XLAT_VAL_3 ((unsigned) (IPCTNL_MSG_CT_GET_CTRZERO))
+ #define XLAT_STR_3 STRINGIFY(IPCTNL_MSG_CT_GET_CTRZERO)
+ [IPCTNL_MSG_CT_GET_STATS_CPU] = XLAT(IPCTNL_MSG_CT_GET_STATS_CPU),
+ #define XLAT_VAL_4 ((unsigned) (IPCTNL_MSG_CT_GET_STATS_CPU))
+ #define XLAT_STR_4 STRINGIFY(IPCTNL_MSG_CT_GET_STATS_CPU)
+ [IPCTNL_MSG_CT_GET_STATS] = XLAT(IPCTNL_MSG_CT_GET_STATS),
+ #define XLAT_VAL_5 ((unsigned) (IPCTNL_MSG_CT_GET_STATS))
+ #define XLAT_STR_5 STRINGIFY(IPCTNL_MSG_CT_GET_STATS)
+ [IPCTNL_MSG_CT_GET_DYING] = XLAT(IPCTNL_MSG_CT_GET_DYING),
+ #define XLAT_VAL_6 ((unsigned) (IPCTNL_MSG_CT_GET_DYING))
+ #define XLAT_STR_6 STRINGIFY(IPCTNL_MSG_CT_GET_DYING)
+ [IPCTNL_MSG_CT_GET_UNCONFIRMED] = XLAT(IPCTNL_MSG_CT_GET_UNCONFIRMED),
+ #define XLAT_VAL_7 ((unsigned) (IPCTNL_MSG_CT_GET_UNCONFIRMED))
+ #define XLAT_STR_7 STRINGIFY(IPCTNL_MSG_CT_GET_UNCONFIRMED)
 };
+static
+const struct xlat nf_ctnetlink_msg_types[1] = { {
+ .data = nf_ctnetlink_msg_types_xdata,
+ .size = ARRAY_SIZE(nf_ctnetlink_msg_types_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 2dab1690ce8e465e7e1ee938dad8405720c21077..ceec1c3228506dbb01ad6562ae3b2594fe84c8b4 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 IPCTNL_MSG_CT_NEW              0
 IPCTNL_MSG_CT_GET              1
 IPCTNL_MSG_CT_DELETE           2
index 43ebec40e3cd58f6774fa7aec3db12b92be7d477..1c2525b437e67e32a78bdc1505158c3bbc21eef6 100644 (file)
@@ -47,16 +47,74 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # 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
+static const struct xlat_data nf_cttimeout_msg_types_xdata[] = {
+ [IPCTNL_MSG_TIMEOUT_NEW] = XLAT(IPCTNL_MSG_TIMEOUT_NEW),
+ #define XLAT_VAL_0 ((unsigned) (IPCTNL_MSG_TIMEOUT_NEW))
+ #define XLAT_STR_0 STRINGIFY(IPCTNL_MSG_TIMEOUT_NEW)
+ [IPCTNL_MSG_TIMEOUT_GET] = XLAT(IPCTNL_MSG_TIMEOUT_GET),
+ #define XLAT_VAL_1 ((unsigned) (IPCTNL_MSG_TIMEOUT_GET))
+ #define XLAT_STR_1 STRINGIFY(IPCTNL_MSG_TIMEOUT_GET)
+ [IPCTNL_MSG_TIMEOUT_DELETE] = XLAT(IPCTNL_MSG_TIMEOUT_DELETE),
+ #define XLAT_VAL_2 ((unsigned) (IPCTNL_MSG_TIMEOUT_DELETE))
+ #define XLAT_STR_2 STRINGIFY(IPCTNL_MSG_TIMEOUT_DELETE)
+ [IPCTNL_MSG_TIMEOUT_DEFAULT_SET] = XLAT(IPCTNL_MSG_TIMEOUT_DEFAULT_SET),
+ #define XLAT_VAL_3 ((unsigned) (IPCTNL_MSG_TIMEOUT_DEFAULT_SET))
+ #define XLAT_STR_3 STRINGIFY(IPCTNL_MSG_TIMEOUT_DEFAULT_SET)
+ [IPCTNL_MSG_TIMEOUT_DEFAULT_GET] = XLAT(IPCTNL_MSG_TIMEOUT_DEFAULT_GET),
+ #define XLAT_VAL_4 ((unsigned) (IPCTNL_MSG_TIMEOUT_DEFAULT_GET))
+ #define XLAT_STR_4 STRINGIFY(IPCTNL_MSG_TIMEOUT_DEFAULT_GET)
 };
+static
+const struct xlat nf_cttimeout_msg_types[1] = { {
+ .data = nf_cttimeout_msg_types_xdata,
+ .size = ARRAY_SIZE(nf_cttimeout_msg_types_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index bf6c5293ab2f2dfd82bab851315ce8287c829c33..cbb5429e3baccbb92aec9c114b8a7c1f64c82f80 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 IPCTNL_MSG_TIMEOUT_NEW         0
 IPCTNL_MSG_TIMEOUT_GET         1
 IPCTNL_MSG_TIMEOUT_DELETE      2
index 4fdedd93c1ae2eb91b4fcdd79be9d9c5d46676fc..417cfc06444ae2849616a3246f514e6338de6e59 100644 (file)
@@ -145,32 +145,230 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # 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),
+static const struct xlat_data nf_ipset_msg_types_xdata[] = {
+ [IPSET_CMD_NONE] = XLAT(IPSET_CMD_NONE),
+ #define XLAT_VAL_0 ((unsigned) (IPSET_CMD_NONE))
+ #define XLAT_STR_0 STRINGIFY(IPSET_CMD_NONE)
+ [IPSET_CMD_PROTOCOL] = XLAT(IPSET_CMD_PROTOCOL),
+ #define XLAT_VAL_1 ((unsigned) (IPSET_CMD_PROTOCOL))
+ #define XLAT_STR_1 STRINGIFY(IPSET_CMD_PROTOCOL)
+ [IPSET_CMD_CREATE] = XLAT(IPSET_CMD_CREATE),
+ #define XLAT_VAL_2 ((unsigned) (IPSET_CMD_CREATE))
+ #define XLAT_STR_2 STRINGIFY(IPSET_CMD_CREATE)
+ [IPSET_CMD_DESTROY] = XLAT(IPSET_CMD_DESTROY),
+ #define XLAT_VAL_3 ((unsigned) (IPSET_CMD_DESTROY))
+ #define XLAT_STR_3 STRINGIFY(IPSET_CMD_DESTROY)
+ [IPSET_CMD_FLUSH] = XLAT(IPSET_CMD_FLUSH),
+ #define XLAT_VAL_4 ((unsigned) (IPSET_CMD_FLUSH))
+ #define XLAT_STR_4 STRINGIFY(IPSET_CMD_FLUSH)
+ [IPSET_CMD_RENAME] = XLAT(IPSET_CMD_RENAME),
+ #define XLAT_VAL_5 ((unsigned) (IPSET_CMD_RENAME))
+ #define XLAT_STR_5 STRINGIFY(IPSET_CMD_RENAME)
+ [IPSET_CMD_SWAP] = XLAT(IPSET_CMD_SWAP),
+ #define XLAT_VAL_6 ((unsigned) (IPSET_CMD_SWAP))
+ #define XLAT_STR_6 STRINGIFY(IPSET_CMD_SWAP)
+ [IPSET_CMD_LIST] = XLAT(IPSET_CMD_LIST),
+ #define XLAT_VAL_7 ((unsigned) (IPSET_CMD_LIST))
+ #define XLAT_STR_7 STRINGIFY(IPSET_CMD_LIST)
+ [IPSET_CMD_SAVE] = XLAT(IPSET_CMD_SAVE),
+ #define XLAT_VAL_8 ((unsigned) (IPSET_CMD_SAVE))
+ #define XLAT_STR_8 STRINGIFY(IPSET_CMD_SAVE)
+ [IPSET_CMD_ADD] = XLAT(IPSET_CMD_ADD),
+ #define XLAT_VAL_9 ((unsigned) (IPSET_CMD_ADD))
+ #define XLAT_STR_9 STRINGIFY(IPSET_CMD_ADD)
+ [IPSET_CMD_DEL] = XLAT(IPSET_CMD_DEL),
+ #define XLAT_VAL_10 ((unsigned) (IPSET_CMD_DEL))
+ #define XLAT_STR_10 STRINGIFY(IPSET_CMD_DEL)
+ [IPSET_CMD_TEST] = XLAT(IPSET_CMD_TEST),
+ #define XLAT_VAL_11 ((unsigned) (IPSET_CMD_TEST))
+ #define XLAT_STR_11 STRINGIFY(IPSET_CMD_TEST)
+ [IPSET_CMD_HEADER] = XLAT(IPSET_CMD_HEADER),
+ #define XLAT_VAL_12 ((unsigned) (IPSET_CMD_HEADER))
+ #define XLAT_STR_12 STRINGIFY(IPSET_CMD_HEADER)
+ [IPSET_CMD_TYPE] = XLAT(IPSET_CMD_TYPE),
+ #define XLAT_VAL_13 ((unsigned) (IPSET_CMD_TYPE))
+ #define XLAT_STR_13 STRINGIFY(IPSET_CMD_TYPE)
 
- XLAT(IPSET_CMD_RESTORE),
- XLAT(IPSET_CMD_HELP),
- XLAT(IPSET_CMD_VERSION),
- XLAT(IPSET_CMD_QUIT),
+ [IPSET_CMD_RESTORE] = XLAT(IPSET_CMD_RESTORE),
+ #define XLAT_VAL_14 ((unsigned) (IPSET_CMD_RESTORE))
+ #define XLAT_STR_14 STRINGIFY(IPSET_CMD_RESTORE)
+ [IPSET_CMD_HELP] = XLAT(IPSET_CMD_HELP),
+ #define XLAT_VAL_15 ((unsigned) (IPSET_CMD_HELP))
+ #define XLAT_STR_15 STRINGIFY(IPSET_CMD_HELP)
+ [IPSET_CMD_VERSION] = XLAT(IPSET_CMD_VERSION),
+ #define XLAT_VAL_16 ((unsigned) (IPSET_CMD_VERSION))
+ #define XLAT_STR_16 STRINGIFY(IPSET_CMD_VERSION)
+ [IPSET_CMD_QUIT] = XLAT(IPSET_CMD_QUIT),
+ #define XLAT_VAL_17 ((unsigned) (IPSET_CMD_QUIT))
+ #define XLAT_STR_17 STRINGIFY(IPSET_CMD_QUIT)
 
- XLAT(IPSET_CMD_COMMIT),
- XLAT_END
+ [IPSET_CMD_COMMIT] = XLAT(IPSET_CMD_COMMIT),
+ #define XLAT_VAL_18 ((unsigned) (IPSET_CMD_COMMIT))
+ #define XLAT_STR_18 STRINGIFY(IPSET_CMD_COMMIT)
 };
+static
+const struct xlat nf_ipset_msg_types[1] = { {
+ .data = nf_ipset_msg_types_xdata,
+ .size = ARRAY_SIZE(nf_ipset_msg_types_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index a61d906466b3196618c1edc206dd7788af77ded3..22410324eb263a7e5f9d9ccc23aaa47b3779891f 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 IPSET_CMD_NONE         0
 IPSET_CMD_PROTOCOL     1
 IPSET_CMD_CREATE       2
index 010ec9d28a195e038ccf3479ae47ec08cd2fc876..fbef666e70095af3db8f06f229a93691b6d5d172 100644 (file)
@@ -19,12 +19,30 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat nf_nft_compat_msg_types[] = {
+static const struct xlat_data nf_nft_compat_msg_types_xdata[] = {
  XLAT(NFNL_MSG_COMPAT_GET),
- XLAT_END
+ #define XLAT_VAL_0 ((unsigned) (NFNL_MSG_COMPAT_GET))
+ #define XLAT_STR_0 STRINGIFY(NFNL_MSG_COMPAT_GET)
 };
-
+static
+const struct xlat nf_nft_compat_msg_types[1] = { {
+ .data = nf_nft_compat_msg_types_xdata,
+ .size = ARRAY_SIZE(nf_nft_compat_msg_types_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index f2b3c51aae33502d0f67cb61fdac3c773fd8ba33..6d06c298403c11f05524f3f6b97cd66abae4e3bc 100644 (file)
@@ -166,33 +166,261 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # 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
+static const struct xlat_data nf_nftables_msg_types_xdata[] = {
+ [NFT_MSG_NEWTABLE] = XLAT(NFT_MSG_NEWTABLE),
+ #define XLAT_VAL_0 ((unsigned) (NFT_MSG_NEWTABLE))
+ #define XLAT_STR_0 STRINGIFY(NFT_MSG_NEWTABLE)
+ [NFT_MSG_GETTABLE] = XLAT(NFT_MSG_GETTABLE),
+ #define XLAT_VAL_1 ((unsigned) (NFT_MSG_GETTABLE))
+ #define XLAT_STR_1 STRINGIFY(NFT_MSG_GETTABLE)
+ [NFT_MSG_DELTABLE] = XLAT(NFT_MSG_DELTABLE),
+ #define XLAT_VAL_2 ((unsigned) (NFT_MSG_DELTABLE))
+ #define XLAT_STR_2 STRINGIFY(NFT_MSG_DELTABLE)
+ [NFT_MSG_NEWCHAIN] = XLAT(NFT_MSG_NEWCHAIN),
+ #define XLAT_VAL_3 ((unsigned) (NFT_MSG_NEWCHAIN))
+ #define XLAT_STR_3 STRINGIFY(NFT_MSG_NEWCHAIN)
+ [NFT_MSG_GETCHAIN] = XLAT(NFT_MSG_GETCHAIN),
+ #define XLAT_VAL_4 ((unsigned) (NFT_MSG_GETCHAIN))
+ #define XLAT_STR_4 STRINGIFY(NFT_MSG_GETCHAIN)
+ [NFT_MSG_DELCHAIN] = XLAT(NFT_MSG_DELCHAIN),
+ #define XLAT_VAL_5 ((unsigned) (NFT_MSG_DELCHAIN))
+ #define XLAT_STR_5 STRINGIFY(NFT_MSG_DELCHAIN)
+ [NFT_MSG_NEWRULE] = XLAT(NFT_MSG_NEWRULE),
+ #define XLAT_VAL_6 ((unsigned) (NFT_MSG_NEWRULE))
+ #define XLAT_STR_6 STRINGIFY(NFT_MSG_NEWRULE)
+ [NFT_MSG_GETRULE] = XLAT(NFT_MSG_GETRULE),
+ #define XLAT_VAL_7 ((unsigned) (NFT_MSG_GETRULE))
+ #define XLAT_STR_7 STRINGIFY(NFT_MSG_GETRULE)
+ [NFT_MSG_DELRULE] = XLAT(NFT_MSG_DELRULE),
+ #define XLAT_VAL_8 ((unsigned) (NFT_MSG_DELRULE))
+ #define XLAT_STR_8 STRINGIFY(NFT_MSG_DELRULE)
+ [NFT_MSG_NEWSET] = XLAT(NFT_MSG_NEWSET),
+ #define XLAT_VAL_9 ((unsigned) (NFT_MSG_NEWSET))
+ #define XLAT_STR_9 STRINGIFY(NFT_MSG_NEWSET)
+ [NFT_MSG_GETSET] = XLAT(NFT_MSG_GETSET),
+ #define XLAT_VAL_10 ((unsigned) (NFT_MSG_GETSET))
+ #define XLAT_STR_10 STRINGIFY(NFT_MSG_GETSET)
+ [NFT_MSG_DELSET] = XLAT(NFT_MSG_DELSET),
+ #define XLAT_VAL_11 ((unsigned) (NFT_MSG_DELSET))
+ #define XLAT_STR_11 STRINGIFY(NFT_MSG_DELSET)
+ [NFT_MSG_NEWSETELEM] = XLAT(NFT_MSG_NEWSETELEM),
+ #define XLAT_VAL_12 ((unsigned) (NFT_MSG_NEWSETELEM))
+ #define XLAT_STR_12 STRINGIFY(NFT_MSG_NEWSETELEM)
+ [NFT_MSG_GETSETELEM] = XLAT(NFT_MSG_GETSETELEM),
+ #define XLAT_VAL_13 ((unsigned) (NFT_MSG_GETSETELEM))
+ #define XLAT_STR_13 STRINGIFY(NFT_MSG_GETSETELEM)
+ [NFT_MSG_DELSETELEM] = XLAT(NFT_MSG_DELSETELEM),
+ #define XLAT_VAL_14 ((unsigned) (NFT_MSG_DELSETELEM))
+ #define XLAT_STR_14 STRINGIFY(NFT_MSG_DELSETELEM)
+ [NFT_MSG_NEWGEN] = XLAT(NFT_MSG_NEWGEN),
+ #define XLAT_VAL_15 ((unsigned) (NFT_MSG_NEWGEN))
+ #define XLAT_STR_15 STRINGIFY(NFT_MSG_NEWGEN)
+ [NFT_MSG_GETGEN] = XLAT(NFT_MSG_GETGEN),
+ #define XLAT_VAL_16 ((unsigned) (NFT_MSG_GETGEN))
+ #define XLAT_STR_16 STRINGIFY(NFT_MSG_GETGEN)
+ [NFT_MSG_TRACE] = XLAT(NFT_MSG_TRACE),
+ #define XLAT_VAL_17 ((unsigned) (NFT_MSG_TRACE))
+ #define XLAT_STR_17 STRINGIFY(NFT_MSG_TRACE)
+ [NFT_MSG_NEWOBJ] = XLAT(NFT_MSG_NEWOBJ),
+ #define XLAT_VAL_18 ((unsigned) (NFT_MSG_NEWOBJ))
+ #define XLAT_STR_18 STRINGIFY(NFT_MSG_NEWOBJ)
+ [NFT_MSG_GETOBJ] = XLAT(NFT_MSG_GETOBJ),
+ #define XLAT_VAL_19 ((unsigned) (NFT_MSG_GETOBJ))
+ #define XLAT_STR_19 STRINGIFY(NFT_MSG_GETOBJ)
+ [NFT_MSG_DELOBJ] = XLAT(NFT_MSG_DELOBJ),
+ #define XLAT_VAL_20 ((unsigned) (NFT_MSG_DELOBJ))
+ #define XLAT_STR_20 STRINGIFY(NFT_MSG_DELOBJ)
+ [NFT_MSG_GETOBJ_RESET] = XLAT(NFT_MSG_GETOBJ_RESET),
+ #define XLAT_VAL_21 ((unsigned) (NFT_MSG_GETOBJ_RESET))
+ #define XLAT_STR_21 STRINGIFY(NFT_MSG_GETOBJ_RESET)
 };
+static
+const struct xlat nf_nftables_msg_types[1] = { {
+ .data = nf_nftables_msg_types_xdata,
+ .size = ARRAY_SIZE(nf_nftables_msg_types_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index eb1e773d0e3dcae2979854478c0a16bee9a5dfa3..d1c6732bf3ef18749ef7147e6946ae874260701d 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 NFT_MSG_NEWTABLE       0
 NFT_MSG_GETTABLE       1
 NFT_MSG_DELTABLE       2
index bf84df60d4daba5c6500c8b6a13a83f2f13b22c7..e7fe09298209ee37afdf834b7769286d20c0f8a4 100644 (file)
@@ -26,13 +26,41 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat nf_osf_msg_types[] = {
- XLAT(OSF_MSG_ADD),
- XLAT(OSF_MSG_REMOVE),
- XLAT_END
+static const struct xlat_data nf_osf_msg_types_xdata[] = {
+ [OSF_MSG_ADD] = XLAT(OSF_MSG_ADD),
+ #define XLAT_VAL_0 ((unsigned) (OSF_MSG_ADD))
+ #define XLAT_STR_0 STRINGIFY(OSF_MSG_ADD)
+ [OSF_MSG_REMOVE] = XLAT(OSF_MSG_REMOVE),
+ #define XLAT_VAL_1 ((unsigned) (OSF_MSG_REMOVE))
+ #define XLAT_STR_1 STRINGIFY(OSF_MSG_REMOVE)
 };
+static
+const struct xlat nf_osf_msg_types[1] = { {
+ .data = nf_osf_msg_types_xdata,
+ .size = ARRAY_SIZE(nf_osf_msg_types_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 636c93237534382a16263921a8ddbfc39f64454c..def28f7775df242f52b3b215324cf89251618706 100644 (file)
@@ -1,2 +1,3 @@
+#value_indexed
 OSF_MSG_ADD    0
 OSF_MSG_REMOVE 1
index 88ab109dbea0a3932a77c9f0998cf632b2049b21..8a3c32cbf353527cd99ea8879c6707111fa00e31 100644 (file)
@@ -40,15 +40,63 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # 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
+static const struct xlat_data nf_queue_msg_types_xdata[] = {
+ [NFQNL_MSG_PACKET] = XLAT(NFQNL_MSG_PACKET),
+ #define XLAT_VAL_0 ((unsigned) (NFQNL_MSG_PACKET))
+ #define XLAT_STR_0 STRINGIFY(NFQNL_MSG_PACKET)
+ [NFQNL_MSG_VERDICT] = XLAT(NFQNL_MSG_VERDICT),
+ #define XLAT_VAL_1 ((unsigned) (NFQNL_MSG_VERDICT))
+ #define XLAT_STR_1 STRINGIFY(NFQNL_MSG_VERDICT)
+ [NFQNL_MSG_CONFIG] = XLAT(NFQNL_MSG_CONFIG),
+ #define XLAT_VAL_2 ((unsigned) (NFQNL_MSG_CONFIG))
+ #define XLAT_STR_2 STRINGIFY(NFQNL_MSG_CONFIG)
+ [NFQNL_MSG_VERDICT_BATCH] = XLAT(NFQNL_MSG_VERDICT_BATCH),
+ #define XLAT_VAL_3 ((unsigned) (NFQNL_MSG_VERDICT_BATCH))
+ #define XLAT_STR_3 STRINGIFY(NFQNL_MSG_VERDICT_BATCH)
 };
+static
+const struct xlat nf_queue_msg_types[1] = { {
+ .data = nf_queue_msg_types_xdata,
+ .size = ARRAY_SIZE(nf_queue_msg_types_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 65c7bdd91cca12a02a42d9156dc62e3b1c9aa0be..76b113d8252e47cdbb7865e3d72d19af88126c83 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 NFQNL_MSG_PACKET       0
 NFQNL_MSG_VERDICT      1
 NFQNL_MSG_CONFIG       2
index c8c8389bdcf92db86f2856968ca4c8ff3bbe46cc..7e23792995fdeae0eeec16fa475dc6e09a5cd0c7 100644 (file)
@@ -26,13 +26,41 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat nf_ulog_msg_types[] = {
- XLAT(NFULNL_MSG_PACKET),
- XLAT(NFULNL_MSG_CONFIG),
- XLAT_END
+static const struct xlat_data nf_ulog_msg_types_xdata[] = {
+ [NFULNL_MSG_PACKET] = XLAT(NFULNL_MSG_PACKET),
+ #define XLAT_VAL_0 ((unsigned) (NFULNL_MSG_PACKET))
+ #define XLAT_STR_0 STRINGIFY(NFULNL_MSG_PACKET)
+ [NFULNL_MSG_CONFIG] = XLAT(NFULNL_MSG_CONFIG),
+ #define XLAT_VAL_1 ((unsigned) (NFULNL_MSG_CONFIG))
+ #define XLAT_STR_1 STRINGIFY(NFULNL_MSG_CONFIG)
 };
+static
+const struct xlat nf_ulog_msg_types[1] = { {
+ .data = nf_ulog_msg_types_xdata,
+ .size = ARRAY_SIZE(nf_ulog_msg_types_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 13ff42f2e61459668c043d853108d8826befe7ed..00b48559a0229825146f0ad0484a3835b5370f7f 100644 (file)
@@ -1,2 +1,3 @@
+#value_indexed
 NFULNL_MSG_PACKET      0
 NFULNL_MSG_CONFIG      1
index 88331a5357e6312da6f45462cdfb86e6da0eb8db..c2494c5a591a7332e186f1013f4009cf96bef270 100644 (file)
@@ -26,13 +26,41 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat nfc_protocols[] = {
+static const struct xlat_data nfc_protocols_xdata[] = {
  [NFC_SOCKPROTO_RAW] = XLAT(NFC_SOCKPROTO_RAW),
+ #define XLAT_VAL_0 ((unsigned) (NFC_SOCKPROTO_RAW))
+ #define XLAT_STR_0 STRINGIFY(NFC_SOCKPROTO_RAW)
  [NFC_SOCKPROTO_LLCP] = XLAT(NFC_SOCKPROTO_LLCP),
- XLAT_END
+ #define XLAT_VAL_1 ((unsigned) (NFC_SOCKPROTO_LLCP))
+ #define XLAT_STR_1 STRINGIFY(NFC_SOCKPROTO_LLCP)
 };
+static
+const struct xlat nfc_protocols[1] = { {
+ .data = nfc_protocols_xdata,
+ .size = ARRAY_SIZE(nfc_protocols_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index b9d0d0e345028e9a916aebcfaeda4e23855d8620..61a93f23e7d3b4d012d408da2ad0847bab53c18e 100644 (file)
@@ -406,6 +406,41 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define AUDIT_KERN_MODULE 1330
 #endif
+#if defined(AUDIT_FANOTIFY) || (defined(HAVE_DECL_AUDIT_FANOTIFY) && HAVE_DECL_AUDIT_FANOTIFY)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_FANOTIFY) == (1331), "AUDIT_FANOTIFY != 1331");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_FANOTIFY 1331
+#endif
+#if defined(AUDIT_TIME_INJOFFSET) || (defined(HAVE_DECL_AUDIT_TIME_INJOFFSET) && HAVE_DECL_AUDIT_TIME_INJOFFSET)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_TIME_INJOFFSET) == (1332), "AUDIT_TIME_INJOFFSET != 1332");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_TIME_INJOFFSET 1332
+#endif
+#if defined(AUDIT_TIME_ADJNTPVAL) || (defined(HAVE_DECL_AUDIT_TIME_ADJNTPVAL) && HAVE_DECL_AUDIT_TIME_ADJNTPVAL)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_TIME_ADJNTPVAL) == (1333), "AUDIT_TIME_ADJNTPVAL != 1333");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_TIME_ADJNTPVAL 1333
+#endif
+#if defined(AUDIT_BPF) || (defined(HAVE_DECL_AUDIT_BPF) && HAVE_DECL_AUDIT_BPF)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_BPF) == (1334), "AUDIT_BPF != 1334");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_BPF 1334
+#endif
+#if defined(AUDIT_EVENT_LISTENER) || (defined(HAVE_DECL_AUDIT_EVENT_LISTENER) && HAVE_DECL_AUDIT_EVENT_LISTENER)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_EVENT_LISTENER) == (1335), "AUDIT_EVENT_LISTENER != 1335");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_EVENT_LISTENER 1335
+#endif
 #if defined(AUDIT_AVC) || (defined(HAVE_DECL_AUDIT_AVC) && HAVE_DECL_AUDIT_AVC)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
 static_assert((AUDIT_AVC) == (1400), "AUDIT_AVC != 1400");
@@ -567,6 +602,13 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define AUDIT_ANOM_LINK 1702
 #endif
+#if defined(AUDIT_ANOM_CREAT) || (defined(HAVE_DECL_AUDIT_ANOM_CREAT) && HAVE_DECL_AUDIT_ANOM_CREAT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AUDIT_ANOM_CREAT) == (1703), "AUDIT_ANOM_CREAT != 1703");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AUDIT_ANOM_CREAT 1703
+#endif
 #if defined(AUDIT_LAST_KERN_ANOM_MSG) || (defined(HAVE_DECL_AUDIT_LAST_KERN_ANOM_MSG) && HAVE_DECL_AUDIT_LAST_KERN_ANOM_MSG)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
 static_assert((AUDIT_LAST_KERN_ANOM_MSG) == (1799), "AUDIT_LAST_KERN_ANOM_MSG != 1799");
@@ -660,65 +702,172 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat nl_audit_types[] = {
+static const struct xlat_data nl_audit_types_xdata[] = {
  XLAT(AUDIT_GET),
+ #define XLAT_VAL_0 ((unsigned) (AUDIT_GET))
+ #define XLAT_STR_0 STRINGIFY(AUDIT_GET)
  XLAT(AUDIT_SET),
+ #define XLAT_VAL_1 ((unsigned) (AUDIT_SET))
+ #define XLAT_STR_1 STRINGIFY(AUDIT_SET)
  XLAT(AUDIT_LIST),
+ #define XLAT_VAL_2 ((unsigned) (AUDIT_LIST))
+ #define XLAT_STR_2 STRINGIFY(AUDIT_LIST)
  XLAT(AUDIT_ADD),
+ #define XLAT_VAL_3 ((unsigned) (AUDIT_ADD))
+ #define XLAT_STR_3 STRINGIFY(AUDIT_ADD)
  XLAT(AUDIT_DEL),
+ #define XLAT_VAL_4 ((unsigned) (AUDIT_DEL))
+ #define XLAT_STR_4 STRINGIFY(AUDIT_DEL)
  XLAT(AUDIT_USER),
+ #define XLAT_VAL_5 ((unsigned) (AUDIT_USER))
+ #define XLAT_STR_5 STRINGIFY(AUDIT_USER)
  XLAT(AUDIT_LOGIN),
+ #define XLAT_VAL_6 ((unsigned) (AUDIT_LOGIN))
+ #define XLAT_STR_6 STRINGIFY(AUDIT_LOGIN)
  XLAT(AUDIT_WATCH_INS),
+ #define XLAT_VAL_7 ((unsigned) (AUDIT_WATCH_INS))
+ #define XLAT_STR_7 STRINGIFY(AUDIT_WATCH_INS)
  XLAT(AUDIT_WATCH_REM),
+ #define XLAT_VAL_8 ((unsigned) (AUDIT_WATCH_REM))
+ #define XLAT_STR_8 STRINGIFY(AUDIT_WATCH_REM)
  XLAT(AUDIT_WATCH_LIST),
+ #define XLAT_VAL_9 ((unsigned) (AUDIT_WATCH_LIST))
+ #define XLAT_STR_9 STRINGIFY(AUDIT_WATCH_LIST)
  XLAT(AUDIT_SIGNAL_INFO),
+ #define XLAT_VAL_10 ((unsigned) (AUDIT_SIGNAL_INFO))
+ #define XLAT_STR_10 STRINGIFY(AUDIT_SIGNAL_INFO)
  XLAT(AUDIT_ADD_RULE),
+ #define XLAT_VAL_11 ((unsigned) (AUDIT_ADD_RULE))
+ #define XLAT_STR_11 STRINGIFY(AUDIT_ADD_RULE)
  XLAT(AUDIT_DEL_RULE),
+ #define XLAT_VAL_12 ((unsigned) (AUDIT_DEL_RULE))
+ #define XLAT_STR_12 STRINGIFY(AUDIT_DEL_RULE)
  XLAT(AUDIT_LIST_RULES),
+ #define XLAT_VAL_13 ((unsigned) (AUDIT_LIST_RULES))
+ #define XLAT_STR_13 STRINGIFY(AUDIT_LIST_RULES)
  XLAT(AUDIT_TRIM),
+ #define XLAT_VAL_14 ((unsigned) (AUDIT_TRIM))
+ #define XLAT_STR_14 STRINGIFY(AUDIT_TRIM)
  XLAT(AUDIT_MAKE_EQUIV),
+ #define XLAT_VAL_15 ((unsigned) (AUDIT_MAKE_EQUIV))
+ #define XLAT_STR_15 STRINGIFY(AUDIT_MAKE_EQUIV)
  XLAT(AUDIT_TTY_GET),
+ #define XLAT_VAL_16 ((unsigned) (AUDIT_TTY_GET))
+ #define XLAT_STR_16 STRINGIFY(AUDIT_TTY_GET)
  XLAT(AUDIT_TTY_SET),
+ #define XLAT_VAL_17 ((unsigned) (AUDIT_TTY_SET))
+ #define XLAT_STR_17 STRINGIFY(AUDIT_TTY_SET)
  XLAT(AUDIT_SET_FEATURE),
+ #define XLAT_VAL_18 ((unsigned) (AUDIT_SET_FEATURE))
+ #define XLAT_STR_18 STRINGIFY(AUDIT_SET_FEATURE)
  XLAT(AUDIT_GET_FEATURE),
+ #define XLAT_VAL_19 ((unsigned) (AUDIT_GET_FEATURE))
+ #define XLAT_STR_19 STRINGIFY(AUDIT_GET_FEATURE)
 
  XLAT(AUDIT_FIRST_USER_MSG),
+ #define XLAT_VAL_20 ((unsigned) (AUDIT_FIRST_USER_MSG))
+ #define XLAT_STR_20 STRINGIFY(AUDIT_FIRST_USER_MSG)
  XLAT(AUDIT_USER_AVC),
+ #define XLAT_VAL_21 ((unsigned) (AUDIT_USER_AVC))
+ #define XLAT_STR_21 STRINGIFY(AUDIT_USER_AVC)
  XLAT(AUDIT_USER_TTY),
+ #define XLAT_VAL_22 ((unsigned) (AUDIT_USER_TTY))
+ #define XLAT_STR_22 STRINGIFY(AUDIT_USER_TTY)
  XLAT(AUDIT_LAST_USER_MSG),
+ #define XLAT_VAL_23 ((unsigned) (AUDIT_LAST_USER_MSG))
+ #define XLAT_STR_23 STRINGIFY(AUDIT_LAST_USER_MSG)
 
  XLAT(AUDIT_DAEMON_START),
+ #define XLAT_VAL_24 ((unsigned) (AUDIT_DAEMON_START))
+ #define XLAT_STR_24 STRINGIFY(AUDIT_DAEMON_START)
  XLAT(AUDIT_DAEMON_END),
+ #define XLAT_VAL_25 ((unsigned) (AUDIT_DAEMON_END))
+ #define XLAT_STR_25 STRINGIFY(AUDIT_DAEMON_END)
  XLAT(AUDIT_DAEMON_ABORT),
+ #define XLAT_VAL_26 ((unsigned) (AUDIT_DAEMON_ABORT))
+ #define XLAT_STR_26 STRINGIFY(AUDIT_DAEMON_ABORT)
  XLAT(AUDIT_DAEMON_CONFIG),
+ #define XLAT_VAL_27 ((unsigned) (AUDIT_DAEMON_CONFIG))
+ #define XLAT_STR_27 STRINGIFY(AUDIT_DAEMON_CONFIG)
 
  XLAT(AUDIT_SYSCALL),
+ #define XLAT_VAL_28 ((unsigned) (AUDIT_SYSCALL))
+ #define XLAT_STR_28 STRINGIFY(AUDIT_SYSCALL)
  XLAT(AUDIT_FS_WATCH),
+ #define XLAT_VAL_29 ((unsigned) (AUDIT_FS_WATCH))
+ #define XLAT_STR_29 STRINGIFY(AUDIT_FS_WATCH)
  XLAT(AUDIT_PATH),
+ #define XLAT_VAL_30 ((unsigned) (AUDIT_PATH))
+ #define XLAT_STR_30 STRINGIFY(AUDIT_PATH)
  XLAT(AUDIT_IPC),
+ #define XLAT_VAL_31 ((unsigned) (AUDIT_IPC))
+ #define XLAT_STR_31 STRINGIFY(AUDIT_IPC)
  XLAT(AUDIT_SOCKETCALL),
+ #define XLAT_VAL_32 ((unsigned) (AUDIT_SOCKETCALL))
+ #define XLAT_STR_32 STRINGIFY(AUDIT_SOCKETCALL)
  XLAT(AUDIT_CONFIG_CHANGE),
+ #define XLAT_VAL_33 ((unsigned) (AUDIT_CONFIG_CHANGE))
+ #define XLAT_STR_33 STRINGIFY(AUDIT_CONFIG_CHANGE)
  XLAT(AUDIT_SOCKADDR),
+ #define XLAT_VAL_34 ((unsigned) (AUDIT_SOCKADDR))
+ #define XLAT_STR_34 STRINGIFY(AUDIT_SOCKADDR)
  XLAT(AUDIT_CWD),
+ #define XLAT_VAL_35 ((unsigned) (AUDIT_CWD))
+ #define XLAT_STR_35 STRINGIFY(AUDIT_CWD)
  XLAT(AUDIT_EXECVE),
+ #define XLAT_VAL_36 ((unsigned) (AUDIT_EXECVE))
+ #define XLAT_STR_36 STRINGIFY(AUDIT_EXECVE)
  XLAT(AUDIT_IPC_SET_PERM),
+ #define XLAT_VAL_37 ((unsigned) (AUDIT_IPC_SET_PERM))
+ #define XLAT_STR_37 STRINGIFY(AUDIT_IPC_SET_PERM)
  XLAT(AUDIT_MQ_OPEN),
+ #define XLAT_VAL_38 ((unsigned) (AUDIT_MQ_OPEN))
+ #define XLAT_STR_38 STRINGIFY(AUDIT_MQ_OPEN)
  XLAT(AUDIT_MQ_SENDRECV),
+ #define XLAT_VAL_39 ((unsigned) (AUDIT_MQ_SENDRECV))
+ #define XLAT_STR_39 STRINGIFY(AUDIT_MQ_SENDRECV)
  XLAT(AUDIT_MQ_NOTIFY),
+ #define XLAT_VAL_40 ((unsigned) (AUDIT_MQ_NOTIFY))
+ #define XLAT_STR_40 STRINGIFY(AUDIT_MQ_NOTIFY)
  XLAT(AUDIT_MQ_GETSETATTR),
+ #define XLAT_VAL_41 ((unsigned) (AUDIT_MQ_GETSETATTR))
+ #define XLAT_STR_41 STRINGIFY(AUDIT_MQ_GETSETATTR)
  XLAT(AUDIT_KERNEL_OTHER),
+ #define XLAT_VAL_42 ((unsigned) (AUDIT_KERNEL_OTHER))
+ #define XLAT_STR_42 STRINGIFY(AUDIT_KERNEL_OTHER)
  XLAT(AUDIT_FD_PAIR),
+ #define XLAT_VAL_43 ((unsigned) (AUDIT_FD_PAIR))
+ #define XLAT_STR_43 STRINGIFY(AUDIT_FD_PAIR)
  XLAT(AUDIT_OBJ_PID),
+ #define XLAT_VAL_44 ((unsigned) (AUDIT_OBJ_PID))
+ #define XLAT_STR_44 STRINGIFY(AUDIT_OBJ_PID)
  XLAT(AUDIT_TTY),
+ #define XLAT_VAL_45 ((unsigned) (AUDIT_TTY))
+ #define XLAT_STR_45 STRINGIFY(AUDIT_TTY)
  XLAT(AUDIT_EOE),
+ #define XLAT_VAL_46 ((unsigned) (AUDIT_EOE))
+ #define XLAT_STR_46 STRINGIFY(AUDIT_EOE)
  XLAT(AUDIT_BPRM_FCAPS),
+ #define XLAT_VAL_47 ((unsigned) (AUDIT_BPRM_FCAPS))
+ #define XLAT_STR_47 STRINGIFY(AUDIT_BPRM_FCAPS)
  XLAT(AUDIT_CAPSET),
+ #define XLAT_VAL_48 ((unsigned) (AUDIT_CAPSET))
+ #define XLAT_STR_48 STRINGIFY(AUDIT_CAPSET)
  XLAT(AUDIT_MMAP),
+ #define XLAT_VAL_49 ((unsigned) (AUDIT_MMAP))
+ #define XLAT_STR_49 STRINGIFY(AUDIT_MMAP)
  XLAT(AUDIT_NETFILTER_PKT),
+ #define XLAT_VAL_50 ((unsigned) (AUDIT_NETFILTER_PKT))
+ #define XLAT_STR_50 STRINGIFY(AUDIT_NETFILTER_PKT)
  XLAT(AUDIT_NETFILTER_CFG),
+ #define XLAT_VAL_51 ((unsigned) (AUDIT_NETFILTER_CFG))
+ #define XLAT_STR_51 STRINGIFY(AUDIT_NETFILTER_CFG)
  XLAT(AUDIT_SECCOMP),
+ #define XLAT_VAL_52 ((unsigned) (AUDIT_SECCOMP))
+ #define XLAT_STR_52 STRINGIFY(AUDIT_SECCOMP)
  XLAT(AUDIT_PROCTITLE),
+ #define XLAT_VAL_53 ((unsigned) (AUDIT_PROCTITLE))
+ #define XLAT_STR_53 STRINGIFY(AUDIT_PROCTITLE)
 
 #ifndef STRACE_WORKAROUND_FOR_AUDIT_FEATURE_CHANGE
 # define STRACE_WORKAROUND_FOR_AUDIT_FEATURE_CHANGE
@@ -736,52 +885,939 @@ const struct xlat nl_audit_types[] = {
 # undef AUDIT_FEATURE_CHANGE
 #endif
  XLAT(AUDIT_FEATURE_CHANGE),
+ #define XLAT_VAL_54 ((unsigned) (AUDIT_FEATURE_CHANGE))
+ #define XLAT_STR_54 STRINGIFY(AUDIT_FEATURE_CHANGE)
 
  XLAT(AUDIT_REPLACE),
+ #define XLAT_VAL_55 ((unsigned) (AUDIT_REPLACE))
+ #define XLAT_STR_55 STRINGIFY(AUDIT_REPLACE)
  XLAT(AUDIT_KERN_MODULE),
+ #define XLAT_VAL_56 ((unsigned) (AUDIT_KERN_MODULE))
+ #define XLAT_STR_56 STRINGIFY(AUDIT_KERN_MODULE)
+ XLAT(AUDIT_FANOTIFY),
+ #define XLAT_VAL_57 ((unsigned) (AUDIT_FANOTIFY))
+ #define XLAT_STR_57 STRINGIFY(AUDIT_FANOTIFY)
+ XLAT(AUDIT_TIME_INJOFFSET),
+ #define XLAT_VAL_58 ((unsigned) (AUDIT_TIME_INJOFFSET))
+ #define XLAT_STR_58 STRINGIFY(AUDIT_TIME_INJOFFSET)
+ XLAT(AUDIT_TIME_ADJNTPVAL),
+ #define XLAT_VAL_59 ((unsigned) (AUDIT_TIME_ADJNTPVAL))
+ #define XLAT_STR_59 STRINGIFY(AUDIT_TIME_ADJNTPVAL)
+ XLAT(AUDIT_BPF),
+ #define XLAT_VAL_60 ((unsigned) (AUDIT_BPF))
+ #define XLAT_STR_60 STRINGIFY(AUDIT_BPF)
+ XLAT(AUDIT_EVENT_LISTENER),
+ #define XLAT_VAL_61 ((unsigned) (AUDIT_EVENT_LISTENER))
+ #define XLAT_STR_61 STRINGIFY(AUDIT_EVENT_LISTENER)
 
  XLAT(AUDIT_AVC),
+ #define XLAT_VAL_62 ((unsigned) (AUDIT_AVC))
+ #define XLAT_STR_62 STRINGIFY(AUDIT_AVC)
  XLAT(AUDIT_SELINUX_ERR),
+ #define XLAT_VAL_63 ((unsigned) (AUDIT_SELINUX_ERR))
+ #define XLAT_STR_63 STRINGIFY(AUDIT_SELINUX_ERR)
  XLAT(AUDIT_AVC_PATH),
+ #define XLAT_VAL_64 ((unsigned) (AUDIT_AVC_PATH))
+ #define XLAT_STR_64 STRINGIFY(AUDIT_AVC_PATH)
  XLAT(AUDIT_MAC_POLICY_LOAD),
+ #define XLAT_VAL_65 ((unsigned) (AUDIT_MAC_POLICY_LOAD))
+ #define XLAT_STR_65 STRINGIFY(AUDIT_MAC_POLICY_LOAD)
  XLAT(AUDIT_MAC_STATUS),
+ #define XLAT_VAL_66 ((unsigned) (AUDIT_MAC_STATUS))
+ #define XLAT_STR_66 STRINGIFY(AUDIT_MAC_STATUS)
  XLAT(AUDIT_MAC_CONFIG_CHANGE),
+ #define XLAT_VAL_67 ((unsigned) (AUDIT_MAC_CONFIG_CHANGE))
+ #define XLAT_STR_67 STRINGIFY(AUDIT_MAC_CONFIG_CHANGE)
  XLAT(AUDIT_MAC_UNLBL_ALLOW),
+ #define XLAT_VAL_68 ((unsigned) (AUDIT_MAC_UNLBL_ALLOW))
+ #define XLAT_STR_68 STRINGIFY(AUDIT_MAC_UNLBL_ALLOW)
  XLAT(AUDIT_MAC_CIPSOV4_ADD),
+ #define XLAT_VAL_69 ((unsigned) (AUDIT_MAC_CIPSOV4_ADD))
+ #define XLAT_STR_69 STRINGIFY(AUDIT_MAC_CIPSOV4_ADD)
  XLAT(AUDIT_MAC_CIPSOV4_DEL),
+ #define XLAT_VAL_70 ((unsigned) (AUDIT_MAC_CIPSOV4_DEL))
+ #define XLAT_STR_70 STRINGIFY(AUDIT_MAC_CIPSOV4_DEL)
  XLAT(AUDIT_MAC_MAP_ADD),
+ #define XLAT_VAL_71 ((unsigned) (AUDIT_MAC_MAP_ADD))
+ #define XLAT_STR_71 STRINGIFY(AUDIT_MAC_MAP_ADD)
  XLAT(AUDIT_MAC_MAP_DEL),
+ #define XLAT_VAL_72 ((unsigned) (AUDIT_MAC_MAP_DEL))
+ #define XLAT_STR_72 STRINGIFY(AUDIT_MAC_MAP_DEL)
  XLAT(AUDIT_MAC_IPSEC_ADDSA),
+ #define XLAT_VAL_73 ((unsigned) (AUDIT_MAC_IPSEC_ADDSA))
+ #define XLAT_STR_73 STRINGIFY(AUDIT_MAC_IPSEC_ADDSA)
  XLAT(AUDIT_MAC_IPSEC_DELSA),
+ #define XLAT_VAL_74 ((unsigned) (AUDIT_MAC_IPSEC_DELSA))
+ #define XLAT_STR_74 STRINGIFY(AUDIT_MAC_IPSEC_DELSA)
  XLAT(AUDIT_MAC_IPSEC_ADDSPD),
+ #define XLAT_VAL_75 ((unsigned) (AUDIT_MAC_IPSEC_ADDSPD))
+ #define XLAT_STR_75 STRINGIFY(AUDIT_MAC_IPSEC_ADDSPD)
  XLAT(AUDIT_MAC_IPSEC_DELSPD),
+ #define XLAT_VAL_76 ((unsigned) (AUDIT_MAC_IPSEC_DELSPD))
+ #define XLAT_STR_76 STRINGIFY(AUDIT_MAC_IPSEC_DELSPD)
  XLAT(AUDIT_MAC_IPSEC_EVENT),
+ #define XLAT_VAL_77 ((unsigned) (AUDIT_MAC_IPSEC_EVENT))
+ #define XLAT_STR_77 STRINGIFY(AUDIT_MAC_IPSEC_EVENT)
  XLAT(AUDIT_MAC_UNLBL_STCADD),
+ #define XLAT_VAL_78 ((unsigned) (AUDIT_MAC_UNLBL_STCADD))
+ #define XLAT_STR_78 STRINGIFY(AUDIT_MAC_UNLBL_STCADD)
  XLAT(AUDIT_MAC_UNLBL_STCDEL),
+ #define XLAT_VAL_79 ((unsigned) (AUDIT_MAC_UNLBL_STCDEL))
+ #define XLAT_STR_79 STRINGIFY(AUDIT_MAC_UNLBL_STCDEL)
  XLAT(AUDIT_MAC_CALIPSO_ADD),
+ #define XLAT_VAL_80 ((unsigned) (AUDIT_MAC_CALIPSO_ADD))
+ #define XLAT_STR_80 STRINGIFY(AUDIT_MAC_CALIPSO_ADD)
  XLAT(AUDIT_MAC_CALIPSO_DEL),
+ #define XLAT_VAL_81 ((unsigned) (AUDIT_MAC_CALIPSO_DEL))
+ #define XLAT_STR_81 STRINGIFY(AUDIT_MAC_CALIPSO_DEL)
 
  XLAT(AUDIT_ANOM_PROMISCUOUS),
+ #define XLAT_VAL_82 ((unsigned) (AUDIT_ANOM_PROMISCUOUS))
+ #define XLAT_STR_82 STRINGIFY(AUDIT_ANOM_PROMISCUOUS)
  XLAT(AUDIT_ANOM_ABEND),
+ #define XLAT_VAL_83 ((unsigned) (AUDIT_ANOM_ABEND))
+ #define XLAT_STR_83 STRINGIFY(AUDIT_ANOM_ABEND)
  XLAT(AUDIT_ANOM_LINK),
+ #define XLAT_VAL_84 ((unsigned) (AUDIT_ANOM_LINK))
+ #define XLAT_STR_84 STRINGIFY(AUDIT_ANOM_LINK)
+ XLAT(AUDIT_ANOM_CREAT),
+ #define XLAT_VAL_85 ((unsigned) (AUDIT_ANOM_CREAT))
+ #define XLAT_STR_85 STRINGIFY(AUDIT_ANOM_CREAT)
  XLAT(AUDIT_LAST_KERN_ANOM_MSG),
+ #define XLAT_VAL_86 ((unsigned) (AUDIT_LAST_KERN_ANOM_MSG))
+ #define XLAT_STR_86 STRINGIFY(AUDIT_LAST_KERN_ANOM_MSG)
 
  XLAT(AUDIT_INTEGRITY_DATA),
+ #define XLAT_VAL_87 ((unsigned) (AUDIT_INTEGRITY_DATA))
+ #define XLAT_STR_87 STRINGIFY(AUDIT_INTEGRITY_DATA)
  XLAT(AUDIT_INTEGRITY_METADATA),
+ #define XLAT_VAL_88 ((unsigned) (AUDIT_INTEGRITY_METADATA))
+ #define XLAT_STR_88 STRINGIFY(AUDIT_INTEGRITY_METADATA)
  XLAT(AUDIT_INTEGRITY_STATUS),
+ #define XLAT_VAL_89 ((unsigned) (AUDIT_INTEGRITY_STATUS))
+ #define XLAT_STR_89 STRINGIFY(AUDIT_INTEGRITY_STATUS)
  XLAT(AUDIT_INTEGRITY_HASH),
+ #define XLAT_VAL_90 ((unsigned) (AUDIT_INTEGRITY_HASH))
+ #define XLAT_STR_90 STRINGIFY(AUDIT_INTEGRITY_HASH)
  XLAT(AUDIT_INTEGRITY_PCR),
+ #define XLAT_VAL_91 ((unsigned) (AUDIT_INTEGRITY_PCR))
+ #define XLAT_STR_91 STRINGIFY(AUDIT_INTEGRITY_PCR)
  XLAT(AUDIT_INTEGRITY_RULE),
+ #define XLAT_VAL_92 ((unsigned) (AUDIT_INTEGRITY_RULE))
+ #define XLAT_STR_92 STRINGIFY(AUDIT_INTEGRITY_RULE)
  XLAT(AUDIT_INTEGRITY_EVM_XATTR),
+ #define XLAT_VAL_93 ((unsigned) (AUDIT_INTEGRITY_EVM_XATTR))
+ #define XLAT_STR_93 STRINGIFY(AUDIT_INTEGRITY_EVM_XATTR)
  XLAT(AUDIT_INTEGRITY_POLICY_RULE),
+ #define XLAT_VAL_94 ((unsigned) (AUDIT_INTEGRITY_POLICY_RULE))
+ #define XLAT_STR_94 STRINGIFY(AUDIT_INTEGRITY_POLICY_RULE)
 
  XLAT(AUDIT_KERNEL),
+ #define XLAT_VAL_95 ((unsigned) (AUDIT_KERNEL))
+ #define XLAT_STR_95 STRINGIFY(AUDIT_KERNEL)
 
  XLAT(AUDIT_FIRST_USER_MSG2),
+ #define XLAT_VAL_96 ((unsigned) (AUDIT_FIRST_USER_MSG2))
+ #define XLAT_STR_96 STRINGIFY(AUDIT_FIRST_USER_MSG2)
  XLAT(AUDIT_LAST_USER_MSG2),
- XLAT_END
+ #define XLAT_VAL_97 ((unsigned) (AUDIT_LAST_USER_MSG2))
+ #define XLAT_STR_97 STRINGIFY(AUDIT_LAST_USER_MSG2)
 };
+static
+const struct xlat nl_audit_types[1] = { {
+ .data = nl_audit_types_xdata,
+ .size = ARRAY_SIZE(nl_audit_types_xdata),
+ .type = XT_SORTED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+#  ifdef XLAT_VAL_30
+  | XLAT_VAL_30
+#  endif
+#  ifdef XLAT_VAL_31
+  | XLAT_VAL_31
+#  endif
+#  ifdef XLAT_VAL_32
+  | XLAT_VAL_32
+#  endif
+#  ifdef XLAT_VAL_33
+  | XLAT_VAL_33
+#  endif
+#  ifdef XLAT_VAL_34
+  | XLAT_VAL_34
+#  endif
+#  ifdef XLAT_VAL_35
+  | XLAT_VAL_35
+#  endif
+#  ifdef XLAT_VAL_36
+  | XLAT_VAL_36
+#  endif
+#  ifdef XLAT_VAL_37
+  | XLAT_VAL_37
+#  endif
+#  ifdef XLAT_VAL_38
+  | XLAT_VAL_38
+#  endif
+#  ifdef XLAT_VAL_39
+  | XLAT_VAL_39
+#  endif
+#  ifdef XLAT_VAL_40
+  | XLAT_VAL_40
+#  endif
+#  ifdef XLAT_VAL_41
+  | XLAT_VAL_41
+#  endif
+#  ifdef XLAT_VAL_42
+  | XLAT_VAL_42
+#  endif
+#  ifdef XLAT_VAL_43
+  | XLAT_VAL_43
+#  endif
+#  ifdef XLAT_VAL_44
+  | XLAT_VAL_44
+#  endif
+#  ifdef XLAT_VAL_45
+  | XLAT_VAL_45
+#  endif
+#  ifdef XLAT_VAL_46
+  | XLAT_VAL_46
+#  endif
+#  ifdef XLAT_VAL_47
+  | XLAT_VAL_47
+#  endif
+#  ifdef XLAT_VAL_48
+  | XLAT_VAL_48
+#  endif
+#  ifdef XLAT_VAL_49
+  | XLAT_VAL_49
+#  endif
+#  ifdef XLAT_VAL_50
+  | XLAT_VAL_50
+#  endif
+#  ifdef XLAT_VAL_51
+  | XLAT_VAL_51
+#  endif
+#  ifdef XLAT_VAL_52
+  | XLAT_VAL_52
+#  endif
+#  ifdef XLAT_VAL_53
+  | XLAT_VAL_53
+#  endif
+#  ifdef XLAT_VAL_54
+  | XLAT_VAL_54
+#  endif
+#  ifdef XLAT_VAL_55
+  | XLAT_VAL_55
+#  endif
+#  ifdef XLAT_VAL_56
+  | XLAT_VAL_56
+#  endif
+#  ifdef XLAT_VAL_57
+  | XLAT_VAL_57
+#  endif
+#  ifdef XLAT_VAL_58
+  | XLAT_VAL_58
+#  endif
+#  ifdef XLAT_VAL_59
+  | XLAT_VAL_59
+#  endif
+#  ifdef XLAT_VAL_60
+  | XLAT_VAL_60
+#  endif
+#  ifdef XLAT_VAL_61
+  | XLAT_VAL_61
+#  endif
+#  ifdef XLAT_VAL_62
+  | XLAT_VAL_62
+#  endif
+#  ifdef XLAT_VAL_63
+  | XLAT_VAL_63
+#  endif
+#  ifdef XLAT_VAL_64
+  | XLAT_VAL_64
+#  endif
+#  ifdef XLAT_VAL_65
+  | XLAT_VAL_65
+#  endif
+#  ifdef XLAT_VAL_66
+  | XLAT_VAL_66
+#  endif
+#  ifdef XLAT_VAL_67
+  | XLAT_VAL_67
+#  endif
+#  ifdef XLAT_VAL_68
+  | XLAT_VAL_68
+#  endif
+#  ifdef XLAT_VAL_69
+  | XLAT_VAL_69
+#  endif
+#  ifdef XLAT_VAL_70
+  | XLAT_VAL_70
+#  endif
+#  ifdef XLAT_VAL_71
+  | XLAT_VAL_71
+#  endif
+#  ifdef XLAT_VAL_72
+  | XLAT_VAL_72
+#  endif
+#  ifdef XLAT_VAL_73
+  | XLAT_VAL_73
+#  endif
+#  ifdef XLAT_VAL_74
+  | XLAT_VAL_74
+#  endif
+#  ifdef XLAT_VAL_75
+  | XLAT_VAL_75
+#  endif
+#  ifdef XLAT_VAL_76
+  | XLAT_VAL_76
+#  endif
+#  ifdef XLAT_VAL_77
+  | XLAT_VAL_77
+#  endif
+#  ifdef XLAT_VAL_78
+  | XLAT_VAL_78
+#  endif
+#  ifdef XLAT_VAL_79
+  | XLAT_VAL_79
+#  endif
+#  ifdef XLAT_VAL_80
+  | XLAT_VAL_80
+#  endif
+#  ifdef XLAT_VAL_81
+  | XLAT_VAL_81
+#  endif
+#  ifdef XLAT_VAL_82
+  | XLAT_VAL_82
+#  endif
+#  ifdef XLAT_VAL_83
+  | XLAT_VAL_83
+#  endif
+#  ifdef XLAT_VAL_84
+  | XLAT_VAL_84
+#  endif
+#  ifdef XLAT_VAL_85
+  | XLAT_VAL_85
+#  endif
+#  ifdef XLAT_VAL_86
+  | XLAT_VAL_86
+#  endif
+#  ifdef XLAT_VAL_87
+  | XLAT_VAL_87
+#  endif
+#  ifdef XLAT_VAL_88
+  | XLAT_VAL_88
+#  endif
+#  ifdef XLAT_VAL_89
+  | XLAT_VAL_89
+#  endif
+#  ifdef XLAT_VAL_90
+  | XLAT_VAL_90
+#  endif
+#  ifdef XLAT_VAL_91
+  | XLAT_VAL_91
+#  endif
+#  ifdef XLAT_VAL_92
+  | XLAT_VAL_92
+#  endif
+#  ifdef XLAT_VAL_93
+  | XLAT_VAL_93
+#  endif
+#  ifdef XLAT_VAL_94
+  | XLAT_VAL_94
+#  endif
+#  ifdef XLAT_VAL_95
+  | XLAT_VAL_95
+#  endif
+#  ifdef XLAT_VAL_96
+  | XLAT_VAL_96
+#  endif
+#  ifdef XLAT_VAL_97
+  | XLAT_VAL_97
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+#  ifdef XLAT_STR_30
+  + sizeof(XLAT_STR_30)
+#  endif
+#  ifdef XLAT_STR_31
+  + sizeof(XLAT_STR_31)
+#  endif
+#  ifdef XLAT_STR_32
+  + sizeof(XLAT_STR_32)
+#  endif
+#  ifdef XLAT_STR_33
+  + sizeof(XLAT_STR_33)
+#  endif
+#  ifdef XLAT_STR_34
+  + sizeof(XLAT_STR_34)
+#  endif
+#  ifdef XLAT_STR_35
+  + sizeof(XLAT_STR_35)
+#  endif
+#  ifdef XLAT_STR_36
+  + sizeof(XLAT_STR_36)
+#  endif
+#  ifdef XLAT_STR_37
+  + sizeof(XLAT_STR_37)
+#  endif
+#  ifdef XLAT_STR_38
+  + sizeof(XLAT_STR_38)
+#  endif
+#  ifdef XLAT_STR_39
+  + sizeof(XLAT_STR_39)
+#  endif
+#  ifdef XLAT_STR_40
+  + sizeof(XLAT_STR_40)
+#  endif
+#  ifdef XLAT_STR_41
+  + sizeof(XLAT_STR_41)
+#  endif
+#  ifdef XLAT_STR_42
+  + sizeof(XLAT_STR_42)
+#  endif
+#  ifdef XLAT_STR_43
+  + sizeof(XLAT_STR_43)
+#  endif
+#  ifdef XLAT_STR_44
+  + sizeof(XLAT_STR_44)
+#  endif
+#  ifdef XLAT_STR_45
+  + sizeof(XLAT_STR_45)
+#  endif
+#  ifdef XLAT_STR_46
+  + sizeof(XLAT_STR_46)
+#  endif
+#  ifdef XLAT_STR_47
+  + sizeof(XLAT_STR_47)
+#  endif
+#  ifdef XLAT_STR_48
+  + sizeof(XLAT_STR_48)
+#  endif
+#  ifdef XLAT_STR_49
+  + sizeof(XLAT_STR_49)
+#  endif
+#  ifdef XLAT_STR_50
+  + sizeof(XLAT_STR_50)
+#  endif
+#  ifdef XLAT_STR_51
+  + sizeof(XLAT_STR_51)
+#  endif
+#  ifdef XLAT_STR_52
+  + sizeof(XLAT_STR_52)
+#  endif
+#  ifdef XLAT_STR_53
+  + sizeof(XLAT_STR_53)
+#  endif
+#  ifdef XLAT_STR_54
+  + sizeof(XLAT_STR_54)
+#  endif
+#  ifdef XLAT_STR_55
+  + sizeof(XLAT_STR_55)
+#  endif
+#  ifdef XLAT_STR_56
+  + sizeof(XLAT_STR_56)
+#  endif
+#  ifdef XLAT_STR_57
+  + sizeof(XLAT_STR_57)
+#  endif
+#  ifdef XLAT_STR_58
+  + sizeof(XLAT_STR_58)
+#  endif
+#  ifdef XLAT_STR_59
+  + sizeof(XLAT_STR_59)
+#  endif
+#  ifdef XLAT_STR_60
+  + sizeof(XLAT_STR_60)
+#  endif
+#  ifdef XLAT_STR_61
+  + sizeof(XLAT_STR_61)
+#  endif
+#  ifdef XLAT_STR_62
+  + sizeof(XLAT_STR_62)
+#  endif
+#  ifdef XLAT_STR_63
+  + sizeof(XLAT_STR_63)
+#  endif
+#  ifdef XLAT_STR_64
+  + sizeof(XLAT_STR_64)
+#  endif
+#  ifdef XLAT_STR_65
+  + sizeof(XLAT_STR_65)
+#  endif
+#  ifdef XLAT_STR_66
+  + sizeof(XLAT_STR_66)
+#  endif
+#  ifdef XLAT_STR_67
+  + sizeof(XLAT_STR_67)
+#  endif
+#  ifdef XLAT_STR_68
+  + sizeof(XLAT_STR_68)
+#  endif
+#  ifdef XLAT_STR_69
+  + sizeof(XLAT_STR_69)
+#  endif
+#  ifdef XLAT_STR_70
+  + sizeof(XLAT_STR_70)
+#  endif
+#  ifdef XLAT_STR_71
+  + sizeof(XLAT_STR_71)
+#  endif
+#  ifdef XLAT_STR_72
+  + sizeof(XLAT_STR_72)
+#  endif
+#  ifdef XLAT_STR_73
+  + sizeof(XLAT_STR_73)
+#  endif
+#  ifdef XLAT_STR_74
+  + sizeof(XLAT_STR_74)
+#  endif
+#  ifdef XLAT_STR_75
+  + sizeof(XLAT_STR_75)
+#  endif
+#  ifdef XLAT_STR_76
+  + sizeof(XLAT_STR_76)
+#  endif
+#  ifdef XLAT_STR_77
+  + sizeof(XLAT_STR_77)
+#  endif
+#  ifdef XLAT_STR_78
+  + sizeof(XLAT_STR_78)
+#  endif
+#  ifdef XLAT_STR_79
+  + sizeof(XLAT_STR_79)
+#  endif
+#  ifdef XLAT_STR_80
+  + sizeof(XLAT_STR_80)
+#  endif
+#  ifdef XLAT_STR_81
+  + sizeof(XLAT_STR_81)
+#  endif
+#  ifdef XLAT_STR_82
+  + sizeof(XLAT_STR_82)
+#  endif
+#  ifdef XLAT_STR_83
+  + sizeof(XLAT_STR_83)
+#  endif
+#  ifdef XLAT_STR_84
+  + sizeof(XLAT_STR_84)
+#  endif
+#  ifdef XLAT_STR_85
+  + sizeof(XLAT_STR_85)
+#  endif
+#  ifdef XLAT_STR_86
+  + sizeof(XLAT_STR_86)
+#  endif
+#  ifdef XLAT_STR_87
+  + sizeof(XLAT_STR_87)
+#  endif
+#  ifdef XLAT_STR_88
+  + sizeof(XLAT_STR_88)
+#  endif
+#  ifdef XLAT_STR_89
+  + sizeof(XLAT_STR_89)
+#  endif
+#  ifdef XLAT_STR_90
+  + sizeof(XLAT_STR_90)
+#  endif
+#  ifdef XLAT_STR_91
+  + sizeof(XLAT_STR_91)
+#  endif
+#  ifdef XLAT_STR_92
+  + sizeof(XLAT_STR_92)
+#  endif
+#  ifdef XLAT_STR_93
+  + sizeof(XLAT_STR_93)
+#  endif
+#  ifdef XLAT_STR_94
+  + sizeof(XLAT_STR_94)
+#  endif
+#  ifdef XLAT_STR_95
+  + sizeof(XLAT_STR_95)
+#  endif
+#  ifdef XLAT_STR_96
+  + sizeof(XLAT_STR_96)
+#  endif
+#  ifdef XLAT_STR_97
+  + sizeof(XLAT_STR_97)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
+#  undef XLAT_STR_30
+#  undef XLAT_VAL_30
+#  undef XLAT_STR_31
+#  undef XLAT_VAL_31
+#  undef XLAT_STR_32
+#  undef XLAT_VAL_32
+#  undef XLAT_STR_33
+#  undef XLAT_VAL_33
+#  undef XLAT_STR_34
+#  undef XLAT_VAL_34
+#  undef XLAT_STR_35
+#  undef XLAT_VAL_35
+#  undef XLAT_STR_36
+#  undef XLAT_VAL_36
+#  undef XLAT_STR_37
+#  undef XLAT_VAL_37
+#  undef XLAT_STR_38
+#  undef XLAT_VAL_38
+#  undef XLAT_STR_39
+#  undef XLAT_VAL_39
+#  undef XLAT_STR_40
+#  undef XLAT_VAL_40
+#  undef XLAT_STR_41
+#  undef XLAT_VAL_41
+#  undef XLAT_STR_42
+#  undef XLAT_VAL_42
+#  undef XLAT_STR_43
+#  undef XLAT_VAL_43
+#  undef XLAT_STR_44
+#  undef XLAT_VAL_44
+#  undef XLAT_STR_45
+#  undef XLAT_VAL_45
+#  undef XLAT_STR_46
+#  undef XLAT_VAL_46
+#  undef XLAT_STR_47
+#  undef XLAT_VAL_47
+#  undef XLAT_STR_48
+#  undef XLAT_VAL_48
+#  undef XLAT_STR_49
+#  undef XLAT_VAL_49
+#  undef XLAT_STR_50
+#  undef XLAT_VAL_50
+#  undef XLAT_STR_51
+#  undef XLAT_VAL_51
+#  undef XLAT_STR_52
+#  undef XLAT_VAL_52
+#  undef XLAT_STR_53
+#  undef XLAT_VAL_53
+#  undef XLAT_STR_54
+#  undef XLAT_VAL_54
+#  undef XLAT_STR_55
+#  undef XLAT_VAL_55
+#  undef XLAT_STR_56
+#  undef XLAT_VAL_56
+#  undef XLAT_STR_57
+#  undef XLAT_VAL_57
+#  undef XLAT_STR_58
+#  undef XLAT_VAL_58
+#  undef XLAT_STR_59
+#  undef XLAT_VAL_59
+#  undef XLAT_STR_60
+#  undef XLAT_VAL_60
+#  undef XLAT_STR_61
+#  undef XLAT_VAL_61
+#  undef XLAT_STR_62
+#  undef XLAT_VAL_62
+#  undef XLAT_STR_63
+#  undef XLAT_VAL_63
+#  undef XLAT_STR_64
+#  undef XLAT_VAL_64
+#  undef XLAT_STR_65
+#  undef XLAT_VAL_65
+#  undef XLAT_STR_66
+#  undef XLAT_VAL_66
+#  undef XLAT_STR_67
+#  undef XLAT_VAL_67
+#  undef XLAT_STR_68
+#  undef XLAT_VAL_68
+#  undef XLAT_STR_69
+#  undef XLAT_VAL_69
+#  undef XLAT_STR_70
+#  undef XLAT_VAL_70
+#  undef XLAT_STR_71
+#  undef XLAT_VAL_71
+#  undef XLAT_STR_72
+#  undef XLAT_VAL_72
+#  undef XLAT_STR_73
+#  undef XLAT_VAL_73
+#  undef XLAT_STR_74
+#  undef XLAT_VAL_74
+#  undef XLAT_STR_75
+#  undef XLAT_VAL_75
+#  undef XLAT_STR_76
+#  undef XLAT_VAL_76
+#  undef XLAT_STR_77
+#  undef XLAT_VAL_77
+#  undef XLAT_STR_78
+#  undef XLAT_VAL_78
+#  undef XLAT_STR_79
+#  undef XLAT_VAL_79
+#  undef XLAT_STR_80
+#  undef XLAT_VAL_80
+#  undef XLAT_STR_81
+#  undef XLAT_VAL_81
+#  undef XLAT_STR_82
+#  undef XLAT_VAL_82
+#  undef XLAT_STR_83
+#  undef XLAT_VAL_83
+#  undef XLAT_STR_84
+#  undef XLAT_VAL_84
+#  undef XLAT_STR_85
+#  undef XLAT_VAL_85
+#  undef XLAT_STR_86
+#  undef XLAT_VAL_86
+#  undef XLAT_STR_87
+#  undef XLAT_VAL_87
+#  undef XLAT_STR_88
+#  undef XLAT_VAL_88
+#  undef XLAT_STR_89
+#  undef XLAT_VAL_89
+#  undef XLAT_STR_90
+#  undef XLAT_VAL_90
+#  undef XLAT_STR_91
+#  undef XLAT_VAL_91
+#  undef XLAT_STR_92
+#  undef XLAT_VAL_92
+#  undef XLAT_STR_93
+#  undef XLAT_VAL_93
+#  undef XLAT_STR_94
+#  undef XLAT_VAL_94
+#  undef XLAT_STR_95
+#  undef XLAT_VAL_95
+#  undef XLAT_STR_96
+#  undef XLAT_VAL_96
+#  undef XLAT_STR_97
+#  undef XLAT_VAL_97
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index afba5cd51fbbab863452aa161adea3bfcaf2edf4..109bc636416c6dc641914283b637e3fc3d031072 100644 (file)
@@ -1,3 +1,4 @@
+#sorted sort -k2,2n
 AUDIT_GET      1000
 AUDIT_SET      1001
 AUDIT_LIST     1002
@@ -75,6 +76,11 @@ AUDIT_FEATURE_CHANGE 1328
 
 AUDIT_REPLACE  1329
 AUDIT_KERN_MODULE      1330
+AUDIT_FANOTIFY 1331
+AUDIT_TIME_INJOFFSET   1332
+AUDIT_TIME_ADJNTPVAL   1333
+AUDIT_BPF              1334
+AUDIT_EVENT_LISTENER   1335
 
 AUDIT_AVC      1400
 AUDIT_SELINUX_ERR      1401
@@ -100,6 +106,7 @@ AUDIT_MAC_CALIPSO_DEL       1419
 AUDIT_ANOM_PROMISCUOUS 1700
 AUDIT_ANOM_ABEND       1701
 AUDIT_ANOM_LINK        1702
+AUDIT_ANOM_CREAT       1703
 AUDIT_LAST_KERN_ANOM_MSG       1799
 
 AUDIT_INTEGRITY_DATA   1800
index 87b6a68f825b442ad08af0b016de1ee34b924f81..18132bb96875f38f64b42ce4e55667529ae788c1 100644 (file)
@@ -47,16 +47,74 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat nl_crypto_types[] = {
+static const struct xlat_data nl_crypto_types_xdata[] = {
  XLAT(CRYPTO_MSG_NEWALG),
+ #define XLAT_VAL_0 ((unsigned) (CRYPTO_MSG_NEWALG))
+ #define XLAT_STR_0 STRINGIFY(CRYPTO_MSG_NEWALG)
  XLAT(CRYPTO_MSG_DELALG),
+ #define XLAT_VAL_1 ((unsigned) (CRYPTO_MSG_DELALG))
+ #define XLAT_STR_1 STRINGIFY(CRYPTO_MSG_DELALG)
  XLAT(CRYPTO_MSG_UPDATEALG),
+ #define XLAT_VAL_2 ((unsigned) (CRYPTO_MSG_UPDATEALG))
+ #define XLAT_STR_2 STRINGIFY(CRYPTO_MSG_UPDATEALG)
  XLAT(CRYPTO_MSG_GETALG),
+ #define XLAT_VAL_3 ((unsigned) (CRYPTO_MSG_GETALG))
+ #define XLAT_STR_3 STRINGIFY(CRYPTO_MSG_GETALG)
  XLAT(CRYPTO_MSG_DELRNG),
- XLAT_END
+ #define XLAT_VAL_4 ((unsigned) (CRYPTO_MSG_DELRNG))
+ #define XLAT_STR_4 STRINGIFY(CRYPTO_MSG_DELRNG)
 };
+static
+const struct xlat nl_crypto_types[1] = { {
+ .data = nl_crypto_types_xdata,
+ .size = ARRAY_SIZE(nl_crypto_types_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index a92f187047566bbc9a40c096ab7a87f38e7e6375..a5310f4d4ba6f6a3790fdd14a1ac91b8257f53ba 100644 (file)
@@ -22,12 +22,40 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # ifndef IN_MPERS
 
-const struct xlat nl_netfilter_msg_types[] = {
+static const struct xlat_data nl_netfilter_msg_types_xdata[] = {
  XLAT(NFNL_MSG_BATCH_BEGIN),
+ #define XLAT_VAL_0 ((unsigned) (NFNL_MSG_BATCH_BEGIN))
+ #define XLAT_STR_0 STRINGIFY(NFNL_MSG_BATCH_BEGIN)
  XLAT(NFNL_MSG_BATCH_END),
- XLAT_END
+ #define XLAT_VAL_1 ((unsigned) (NFNL_MSG_BATCH_END))
+ #define XLAT_STR_1 STRINGIFY(NFNL_MSG_BATCH_END)
 };
+const struct xlat nl_netfilter_msg_types[1] = { {
+ .data = nl_netfilter_msg_types_xdata,
+ .size = ARRAY_SIZE(nl_netfilter_msg_types_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index f6af1f3f78d8d99486773fec4425dc4eeb5b991a..157e1bc5a7cfe49a37f9bab910a5592745fda054 100644 (file)
@@ -96,23 +96,151 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat nl_netfilter_subsys_ids[] = {
- XLAT(NFNL_SUBSYS_NONE),
- XLAT(NFNL_SUBSYS_CTNETLINK),
- XLAT(NFNL_SUBSYS_CTNETLINK_EXP),
- XLAT(NFNL_SUBSYS_QUEUE),
- XLAT(NFNL_SUBSYS_ULOG),
- XLAT(NFNL_SUBSYS_OSF),
- XLAT(NFNL_SUBSYS_IPSET),
- XLAT(NFNL_SUBSYS_ACCT),
- XLAT(NFNL_SUBSYS_CTNETLINK_TIMEOUT),
- XLAT(NFNL_SUBSYS_CTHELPER),
- XLAT(NFNL_SUBSYS_NFTABLES),
- XLAT(NFNL_SUBSYS_NFT_COMPAT),
- XLAT_END
+static const struct xlat_data nl_netfilter_subsys_ids_xdata[] = {
+ [NFNL_SUBSYS_NONE] = XLAT(NFNL_SUBSYS_NONE),
+ #define XLAT_VAL_0 ((unsigned) (NFNL_SUBSYS_NONE))
+ #define XLAT_STR_0 STRINGIFY(NFNL_SUBSYS_NONE)
+ [NFNL_SUBSYS_CTNETLINK] = XLAT(NFNL_SUBSYS_CTNETLINK),
+ #define XLAT_VAL_1 ((unsigned) (NFNL_SUBSYS_CTNETLINK))
+ #define XLAT_STR_1 STRINGIFY(NFNL_SUBSYS_CTNETLINK)
+ [NFNL_SUBSYS_CTNETLINK_EXP] = XLAT(NFNL_SUBSYS_CTNETLINK_EXP),
+ #define XLAT_VAL_2 ((unsigned) (NFNL_SUBSYS_CTNETLINK_EXP))
+ #define XLAT_STR_2 STRINGIFY(NFNL_SUBSYS_CTNETLINK_EXP)
+ [NFNL_SUBSYS_QUEUE] = XLAT(NFNL_SUBSYS_QUEUE),
+ #define XLAT_VAL_3 ((unsigned) (NFNL_SUBSYS_QUEUE))
+ #define XLAT_STR_3 STRINGIFY(NFNL_SUBSYS_QUEUE)
+ [NFNL_SUBSYS_ULOG] = XLAT(NFNL_SUBSYS_ULOG),
+ #define XLAT_VAL_4 ((unsigned) (NFNL_SUBSYS_ULOG))
+ #define XLAT_STR_4 STRINGIFY(NFNL_SUBSYS_ULOG)
+ [NFNL_SUBSYS_OSF] = XLAT(NFNL_SUBSYS_OSF),
+ #define XLAT_VAL_5 ((unsigned) (NFNL_SUBSYS_OSF))
+ #define XLAT_STR_5 STRINGIFY(NFNL_SUBSYS_OSF)
+ [NFNL_SUBSYS_IPSET] = XLAT(NFNL_SUBSYS_IPSET),
+ #define XLAT_VAL_6 ((unsigned) (NFNL_SUBSYS_IPSET))
+ #define XLAT_STR_6 STRINGIFY(NFNL_SUBSYS_IPSET)
+ [NFNL_SUBSYS_ACCT] = XLAT(NFNL_SUBSYS_ACCT),
+ #define XLAT_VAL_7 ((unsigned) (NFNL_SUBSYS_ACCT))
+ #define XLAT_STR_7 STRINGIFY(NFNL_SUBSYS_ACCT)
+ [NFNL_SUBSYS_CTNETLINK_TIMEOUT] = XLAT(NFNL_SUBSYS_CTNETLINK_TIMEOUT),
+ #define XLAT_VAL_8 ((unsigned) (NFNL_SUBSYS_CTNETLINK_TIMEOUT))
+ #define XLAT_STR_8 STRINGIFY(NFNL_SUBSYS_CTNETLINK_TIMEOUT)
+ [NFNL_SUBSYS_CTHELPER] = XLAT(NFNL_SUBSYS_CTHELPER),
+ #define XLAT_VAL_9 ((unsigned) (NFNL_SUBSYS_CTHELPER))
+ #define XLAT_STR_9 STRINGIFY(NFNL_SUBSYS_CTHELPER)
+ [NFNL_SUBSYS_NFTABLES] = XLAT(NFNL_SUBSYS_NFTABLES),
+ #define XLAT_VAL_10 ((unsigned) (NFNL_SUBSYS_NFTABLES))
+ #define XLAT_STR_10 STRINGIFY(NFNL_SUBSYS_NFTABLES)
+ [NFNL_SUBSYS_NFT_COMPAT] = XLAT(NFNL_SUBSYS_NFT_COMPAT),
+ #define XLAT_VAL_11 ((unsigned) (NFNL_SUBSYS_NFT_COMPAT))
+ #define XLAT_STR_11 STRINGIFY(NFNL_SUBSYS_NFT_COMPAT)
 };
+static
+const struct xlat nl_netfilter_subsys_ids[1] = { {
+ .data = nl_netfilter_subsys_ids_xdata,
+ .size = ARRAY_SIZE(nl_netfilter_subsys_ids_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 52aad8720902a89e012fff5ed4da6f52d85c94ee..815d0772a56d60950cc0e0b4a0f378cd751c9f43 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 NFNL_SUBSYS_NONE               0
 NFNL_SUBSYS_CTNETLINK          1
 NFNL_SUBSYS_CTNETLINK_EXP      2
index 80b06fe58517e5d40d23aaac3fc7860b908eae26..c8dd4ad4263c617ce5a11e6a5e1de9d9d01f9f39 100644 (file)
@@ -367,86 +367,669 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define RTM_GETSTATS 94
 #endif
+#if defined(RTM_NEWCHAIN) || (defined(HAVE_DECL_RTM_NEWCHAIN) && HAVE_DECL_RTM_NEWCHAIN)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((RTM_NEWCHAIN) == (100), "RTM_NEWCHAIN != 100");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define RTM_NEWCHAIN 100
+#endif
+#if defined(RTM_DELCHAIN) || (defined(HAVE_DECL_RTM_DELCHAIN) && HAVE_DECL_RTM_DELCHAIN)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((RTM_DELCHAIN) == (101), "RTM_DELCHAIN != 101");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define RTM_DELCHAIN 101
+#endif
+#if defined(RTM_GETCHAIN) || (defined(HAVE_DECL_RTM_GETCHAIN) && HAVE_DECL_RTM_GETCHAIN)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((RTM_GETCHAIN) == (102), "RTM_GETCHAIN != 102");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define RTM_GETCHAIN 102
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
 # ifndef IN_MPERS
 
-const struct xlat nl_route_types[] = {
+static const struct xlat_data nl_route_types_xdata[] = {
  XLAT(RTM_NEWLINK),
+ #define XLAT_VAL_0 ((unsigned) (RTM_NEWLINK))
+ #define XLAT_STR_0 STRINGIFY(RTM_NEWLINK)
  XLAT(RTM_DELLINK),
+ #define XLAT_VAL_1 ((unsigned) (RTM_DELLINK))
+ #define XLAT_STR_1 STRINGIFY(RTM_DELLINK)
  XLAT(RTM_GETLINK),
+ #define XLAT_VAL_2 ((unsigned) (RTM_GETLINK))
+ #define XLAT_STR_2 STRINGIFY(RTM_GETLINK)
  XLAT(RTM_SETLINK),
+ #define XLAT_VAL_3 ((unsigned) (RTM_SETLINK))
+ #define XLAT_STR_3 STRINGIFY(RTM_SETLINK)
 
  XLAT(RTM_NEWADDR),
+ #define XLAT_VAL_4 ((unsigned) (RTM_NEWADDR))
+ #define XLAT_STR_4 STRINGIFY(RTM_NEWADDR)
  XLAT(RTM_DELADDR),
+ #define XLAT_VAL_5 ((unsigned) (RTM_DELADDR))
+ #define XLAT_STR_5 STRINGIFY(RTM_DELADDR)
  XLAT(RTM_GETADDR),
+ #define XLAT_VAL_6 ((unsigned) (RTM_GETADDR))
+ #define XLAT_STR_6 STRINGIFY(RTM_GETADDR)
 
  XLAT(RTM_NEWROUTE),
+ #define XLAT_VAL_7 ((unsigned) (RTM_NEWROUTE))
+ #define XLAT_STR_7 STRINGIFY(RTM_NEWROUTE)
  XLAT(RTM_DELROUTE),
+ #define XLAT_VAL_8 ((unsigned) (RTM_DELROUTE))
+ #define XLAT_STR_8 STRINGIFY(RTM_DELROUTE)
  XLAT(RTM_GETROUTE),
+ #define XLAT_VAL_9 ((unsigned) (RTM_GETROUTE))
+ #define XLAT_STR_9 STRINGIFY(RTM_GETROUTE)
 
  XLAT(RTM_NEWNEIGH),
+ #define XLAT_VAL_10 ((unsigned) (RTM_NEWNEIGH))
+ #define XLAT_STR_10 STRINGIFY(RTM_NEWNEIGH)
  XLAT(RTM_DELNEIGH),
+ #define XLAT_VAL_11 ((unsigned) (RTM_DELNEIGH))
+ #define XLAT_STR_11 STRINGIFY(RTM_DELNEIGH)
  XLAT(RTM_GETNEIGH),
+ #define XLAT_VAL_12 ((unsigned) (RTM_GETNEIGH))
+ #define XLAT_STR_12 STRINGIFY(RTM_GETNEIGH)
 
  XLAT(RTM_NEWRULE),
+ #define XLAT_VAL_13 ((unsigned) (RTM_NEWRULE))
+ #define XLAT_STR_13 STRINGIFY(RTM_NEWRULE)
  XLAT(RTM_DELRULE),
+ #define XLAT_VAL_14 ((unsigned) (RTM_DELRULE))
+ #define XLAT_STR_14 STRINGIFY(RTM_DELRULE)
  XLAT(RTM_GETRULE),
+ #define XLAT_VAL_15 ((unsigned) (RTM_GETRULE))
+ #define XLAT_STR_15 STRINGIFY(RTM_GETRULE)
 
  XLAT(RTM_NEWQDISC),
+ #define XLAT_VAL_16 ((unsigned) (RTM_NEWQDISC))
+ #define XLAT_STR_16 STRINGIFY(RTM_NEWQDISC)
  XLAT(RTM_DELQDISC),
+ #define XLAT_VAL_17 ((unsigned) (RTM_DELQDISC))
+ #define XLAT_STR_17 STRINGIFY(RTM_DELQDISC)
  XLAT(RTM_GETQDISC),
+ #define XLAT_VAL_18 ((unsigned) (RTM_GETQDISC))
+ #define XLAT_STR_18 STRINGIFY(RTM_GETQDISC)
 
  XLAT(RTM_NEWTCLASS),
+ #define XLAT_VAL_19 ((unsigned) (RTM_NEWTCLASS))
+ #define XLAT_STR_19 STRINGIFY(RTM_NEWTCLASS)
  XLAT(RTM_DELTCLASS),
+ #define XLAT_VAL_20 ((unsigned) (RTM_DELTCLASS))
+ #define XLAT_STR_20 STRINGIFY(RTM_DELTCLASS)
  XLAT(RTM_GETTCLASS),
+ #define XLAT_VAL_21 ((unsigned) (RTM_GETTCLASS))
+ #define XLAT_STR_21 STRINGIFY(RTM_GETTCLASS)
 
  XLAT(RTM_NEWTFILTER),
+ #define XLAT_VAL_22 ((unsigned) (RTM_NEWTFILTER))
+ #define XLAT_STR_22 STRINGIFY(RTM_NEWTFILTER)
  XLAT(RTM_DELTFILTER),
+ #define XLAT_VAL_23 ((unsigned) (RTM_DELTFILTER))
+ #define XLAT_STR_23 STRINGIFY(RTM_DELTFILTER)
  XLAT(RTM_GETTFILTER),
+ #define XLAT_VAL_24 ((unsigned) (RTM_GETTFILTER))
+ #define XLAT_STR_24 STRINGIFY(RTM_GETTFILTER)
 
  XLAT(RTM_NEWACTION),
+ #define XLAT_VAL_25 ((unsigned) (RTM_NEWACTION))
+ #define XLAT_STR_25 STRINGIFY(RTM_NEWACTION)
  XLAT(RTM_DELACTION),
+ #define XLAT_VAL_26 ((unsigned) (RTM_DELACTION))
+ #define XLAT_STR_26 STRINGIFY(RTM_DELACTION)
  XLAT(RTM_GETACTION),
+ #define XLAT_VAL_27 ((unsigned) (RTM_GETACTION))
+ #define XLAT_STR_27 STRINGIFY(RTM_GETACTION)
 
  XLAT(RTM_NEWPREFIX),
+ #define XLAT_VAL_28 ((unsigned) (RTM_NEWPREFIX))
+ #define XLAT_STR_28 STRINGIFY(RTM_NEWPREFIX)
  XLAT(RTM_GETPREFIX),
+ #define XLAT_VAL_29 ((unsigned) (RTM_GETPREFIX))
+ #define XLAT_STR_29 STRINGIFY(RTM_GETPREFIX)
 
  XLAT(RTM_GETMULTICAST),
+ #define XLAT_VAL_30 ((unsigned) (RTM_GETMULTICAST))
+ #define XLAT_STR_30 STRINGIFY(RTM_GETMULTICAST)
 
  XLAT(RTM_GETANYCAST),
+ #define XLAT_VAL_31 ((unsigned) (RTM_GETANYCAST))
+ #define XLAT_STR_31 STRINGIFY(RTM_GETANYCAST)
 
  XLAT(RTM_NEWNEIGHTBL),
+ #define XLAT_VAL_32 ((unsigned) (RTM_NEWNEIGHTBL))
+ #define XLAT_STR_32 STRINGIFY(RTM_NEWNEIGHTBL)
  XLAT(RTM_GETNEIGHTBL),
+ #define XLAT_VAL_33 ((unsigned) (RTM_GETNEIGHTBL))
+ #define XLAT_STR_33 STRINGIFY(RTM_GETNEIGHTBL)
  XLAT(RTM_SETNEIGHTBL),
+ #define XLAT_VAL_34 ((unsigned) (RTM_SETNEIGHTBL))
+ #define XLAT_STR_34 STRINGIFY(RTM_SETNEIGHTBL)
 
  XLAT(RTM_NEWNDUSEROPT),
+ #define XLAT_VAL_35 ((unsigned) (RTM_NEWNDUSEROPT))
+ #define XLAT_STR_35 STRINGIFY(RTM_NEWNDUSEROPT)
 
  XLAT(RTM_NEWADDRLABEL),
+ #define XLAT_VAL_36 ((unsigned) (RTM_NEWADDRLABEL))
+ #define XLAT_STR_36 STRINGIFY(RTM_NEWADDRLABEL)
  XLAT(RTM_DELADDRLABEL),
+ #define XLAT_VAL_37 ((unsigned) (RTM_DELADDRLABEL))
+ #define XLAT_STR_37 STRINGIFY(RTM_DELADDRLABEL)
  XLAT(RTM_GETADDRLABEL),
+ #define XLAT_VAL_38 ((unsigned) (RTM_GETADDRLABEL))
+ #define XLAT_STR_38 STRINGIFY(RTM_GETADDRLABEL)
 
  XLAT(RTM_GETDCB),
+ #define XLAT_VAL_39 ((unsigned) (RTM_GETDCB))
+ #define XLAT_STR_39 STRINGIFY(RTM_GETDCB)
  XLAT(RTM_SETDCB),
+ #define XLAT_VAL_40 ((unsigned) (RTM_SETDCB))
+ #define XLAT_STR_40 STRINGIFY(RTM_SETDCB)
 
  XLAT(RTM_NEWNETCONF),
+ #define XLAT_VAL_41 ((unsigned) (RTM_NEWNETCONF))
+ #define XLAT_STR_41 STRINGIFY(RTM_NEWNETCONF)
  XLAT(RTM_DELNETCONF),
+ #define XLAT_VAL_42 ((unsigned) (RTM_DELNETCONF))
+ #define XLAT_STR_42 STRINGIFY(RTM_DELNETCONF)
  XLAT(RTM_GETNETCONF),
+ #define XLAT_VAL_43 ((unsigned) (RTM_GETNETCONF))
+ #define XLAT_STR_43 STRINGIFY(RTM_GETNETCONF)
 
  XLAT(RTM_NEWMDB),
+ #define XLAT_VAL_44 ((unsigned) (RTM_NEWMDB))
+ #define XLAT_STR_44 STRINGIFY(RTM_NEWMDB)
  XLAT(RTM_DELMDB),
+ #define XLAT_VAL_45 ((unsigned) (RTM_DELMDB))
+ #define XLAT_STR_45 STRINGIFY(RTM_DELMDB)
  XLAT(RTM_GETMDB),
+ #define XLAT_VAL_46 ((unsigned) (RTM_GETMDB))
+ #define XLAT_STR_46 STRINGIFY(RTM_GETMDB)
 
  XLAT(RTM_NEWNSID),
+ #define XLAT_VAL_47 ((unsigned) (RTM_NEWNSID))
+ #define XLAT_STR_47 STRINGIFY(RTM_NEWNSID)
  XLAT(RTM_DELNSID),
+ #define XLAT_VAL_48 ((unsigned) (RTM_DELNSID))
+ #define XLAT_STR_48 STRINGIFY(RTM_DELNSID)
  XLAT(RTM_GETNSID),
+ #define XLAT_VAL_49 ((unsigned) (RTM_GETNSID))
+ #define XLAT_STR_49 STRINGIFY(RTM_GETNSID)
 
  XLAT(RTM_NEWSTATS),
+ #define XLAT_VAL_50 ((unsigned) (RTM_NEWSTATS))
+ #define XLAT_STR_50 STRINGIFY(RTM_NEWSTATS)
  XLAT(RTM_GETSTATS),
- XLAT_END
+ #define XLAT_VAL_51 ((unsigned) (RTM_GETSTATS))
+ #define XLAT_STR_51 STRINGIFY(RTM_GETSTATS)
+
+ XLAT(RTM_NEWCHAIN),
+ #define XLAT_VAL_52 ((unsigned) (RTM_NEWCHAIN))
+ #define XLAT_STR_52 STRINGIFY(RTM_NEWCHAIN)
+ XLAT(RTM_DELCHAIN),
+ #define XLAT_VAL_53 ((unsigned) (RTM_DELCHAIN))
+ #define XLAT_STR_53 STRINGIFY(RTM_DELCHAIN)
+ XLAT(RTM_GETCHAIN),
+ #define XLAT_VAL_54 ((unsigned) (RTM_GETCHAIN))
+ #define XLAT_STR_54 STRINGIFY(RTM_GETCHAIN)
 };
+const struct xlat nl_route_types[1] = { {
+ .data = nl_route_types_xdata,
+ .size = ARRAY_SIZE(nl_route_types_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+#  ifdef XLAT_VAL_30
+  | XLAT_VAL_30
+#  endif
+#  ifdef XLAT_VAL_31
+  | XLAT_VAL_31
+#  endif
+#  ifdef XLAT_VAL_32
+  | XLAT_VAL_32
+#  endif
+#  ifdef XLAT_VAL_33
+  | XLAT_VAL_33
+#  endif
+#  ifdef XLAT_VAL_34
+  | XLAT_VAL_34
+#  endif
+#  ifdef XLAT_VAL_35
+  | XLAT_VAL_35
+#  endif
+#  ifdef XLAT_VAL_36
+  | XLAT_VAL_36
+#  endif
+#  ifdef XLAT_VAL_37
+  | XLAT_VAL_37
+#  endif
+#  ifdef XLAT_VAL_38
+  | XLAT_VAL_38
+#  endif
+#  ifdef XLAT_VAL_39
+  | XLAT_VAL_39
+#  endif
+#  ifdef XLAT_VAL_40
+  | XLAT_VAL_40
+#  endif
+#  ifdef XLAT_VAL_41
+  | XLAT_VAL_41
+#  endif
+#  ifdef XLAT_VAL_42
+  | XLAT_VAL_42
+#  endif
+#  ifdef XLAT_VAL_43
+  | XLAT_VAL_43
+#  endif
+#  ifdef XLAT_VAL_44
+  | XLAT_VAL_44
+#  endif
+#  ifdef XLAT_VAL_45
+  | XLAT_VAL_45
+#  endif
+#  ifdef XLAT_VAL_46
+  | XLAT_VAL_46
+#  endif
+#  ifdef XLAT_VAL_47
+  | XLAT_VAL_47
+#  endif
+#  ifdef XLAT_VAL_48
+  | XLAT_VAL_48
+#  endif
+#  ifdef XLAT_VAL_49
+  | XLAT_VAL_49
+#  endif
+#  ifdef XLAT_VAL_50
+  | XLAT_VAL_50
+#  endif
+#  ifdef XLAT_VAL_51
+  | XLAT_VAL_51
+#  endif
+#  ifdef XLAT_VAL_52
+  | XLAT_VAL_52
+#  endif
+#  ifdef XLAT_VAL_53
+  | XLAT_VAL_53
+#  endif
+#  ifdef XLAT_VAL_54
+  | XLAT_VAL_54
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+#  ifdef XLAT_STR_30
+  + sizeof(XLAT_STR_30)
+#  endif
+#  ifdef XLAT_STR_31
+  + sizeof(XLAT_STR_31)
+#  endif
+#  ifdef XLAT_STR_32
+  + sizeof(XLAT_STR_32)
+#  endif
+#  ifdef XLAT_STR_33
+  + sizeof(XLAT_STR_33)
+#  endif
+#  ifdef XLAT_STR_34
+  + sizeof(XLAT_STR_34)
+#  endif
+#  ifdef XLAT_STR_35
+  + sizeof(XLAT_STR_35)
+#  endif
+#  ifdef XLAT_STR_36
+  + sizeof(XLAT_STR_36)
+#  endif
+#  ifdef XLAT_STR_37
+  + sizeof(XLAT_STR_37)
+#  endif
+#  ifdef XLAT_STR_38
+  + sizeof(XLAT_STR_38)
+#  endif
+#  ifdef XLAT_STR_39
+  + sizeof(XLAT_STR_39)
+#  endif
+#  ifdef XLAT_STR_40
+  + sizeof(XLAT_STR_40)
+#  endif
+#  ifdef XLAT_STR_41
+  + sizeof(XLAT_STR_41)
+#  endif
+#  ifdef XLAT_STR_42
+  + sizeof(XLAT_STR_42)
+#  endif
+#  ifdef XLAT_STR_43
+  + sizeof(XLAT_STR_43)
+#  endif
+#  ifdef XLAT_STR_44
+  + sizeof(XLAT_STR_44)
+#  endif
+#  ifdef XLAT_STR_45
+  + sizeof(XLAT_STR_45)
+#  endif
+#  ifdef XLAT_STR_46
+  + sizeof(XLAT_STR_46)
+#  endif
+#  ifdef XLAT_STR_47
+  + sizeof(XLAT_STR_47)
+#  endif
+#  ifdef XLAT_STR_48
+  + sizeof(XLAT_STR_48)
+#  endif
+#  ifdef XLAT_STR_49
+  + sizeof(XLAT_STR_49)
+#  endif
+#  ifdef XLAT_STR_50
+  + sizeof(XLAT_STR_50)
+#  endif
+#  ifdef XLAT_STR_51
+  + sizeof(XLAT_STR_51)
+#  endif
+#  ifdef XLAT_STR_52
+  + sizeof(XLAT_STR_52)
+#  endif
+#  ifdef XLAT_STR_53
+  + sizeof(XLAT_STR_53)
+#  endif
+#  ifdef XLAT_STR_54
+  + sizeof(XLAT_STR_54)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
+#  undef XLAT_STR_30
+#  undef XLAT_VAL_30
+#  undef XLAT_STR_31
+#  undef XLAT_VAL_31
+#  undef XLAT_STR_32
+#  undef XLAT_VAL_32
+#  undef XLAT_STR_33
+#  undef XLAT_VAL_33
+#  undef XLAT_STR_34
+#  undef XLAT_VAL_34
+#  undef XLAT_STR_35
+#  undef XLAT_VAL_35
+#  undef XLAT_STR_36
+#  undef XLAT_VAL_36
+#  undef XLAT_STR_37
+#  undef XLAT_VAL_37
+#  undef XLAT_STR_38
+#  undef XLAT_VAL_38
+#  undef XLAT_STR_39
+#  undef XLAT_VAL_39
+#  undef XLAT_STR_40
+#  undef XLAT_VAL_40
+#  undef XLAT_STR_41
+#  undef XLAT_VAL_41
+#  undef XLAT_STR_42
+#  undef XLAT_VAL_42
+#  undef XLAT_STR_43
+#  undef XLAT_VAL_43
+#  undef XLAT_STR_44
+#  undef XLAT_VAL_44
+#  undef XLAT_STR_45
+#  undef XLAT_VAL_45
+#  undef XLAT_STR_46
+#  undef XLAT_VAL_46
+#  undef XLAT_STR_47
+#  undef XLAT_VAL_47
+#  undef XLAT_STR_48
+#  undef XLAT_VAL_48
+#  undef XLAT_STR_49
+#  undef XLAT_VAL_49
+#  undef XLAT_STR_50
+#  undef XLAT_VAL_50
+#  undef XLAT_STR_51
+#  undef XLAT_VAL_51
+#  undef XLAT_STR_52
+#  undef XLAT_VAL_52
+#  undef XLAT_STR_53
+#  undef XLAT_VAL_53
+#  undef XLAT_STR_54
+#  undef XLAT_VAL_54
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 0356b615242734613d71705807b6c06574c7b2dd..c389ab962a337f2b5cead84e2fbaf49e8e830778 100644 (file)
@@ -69,3 +69,7 @@ RTM_GETNSID   90
 
 RTM_NEWSTATS   92
 RTM_GETSTATS   94
+
+RTM_NEWCHAIN   100
+RTM_DELCHAIN   101
+RTM_GETCHAIN   102
index 95ae3df026dc80df530fa8e7d4eaca62117c41c8..255520e0a3c61456b620bb2e4e363723285ae297 100644 (file)
@@ -26,13 +26,41 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat nl_selinux_types[] = {
+static const struct xlat_data nl_selinux_types_xdata[] = {
  XLAT(SELNL_MSG_SETENFORCE),
+ #define XLAT_VAL_0 ((unsigned) (SELNL_MSG_SETENFORCE))
+ #define XLAT_STR_0 STRINGIFY(SELNL_MSG_SETENFORCE)
  XLAT(SELNL_MSG_POLICYLOAD),
- XLAT_END
+ #define XLAT_VAL_1 ((unsigned) (SELNL_MSG_POLICYLOAD))
+ #define XLAT_STR_1 STRINGIFY(SELNL_MSG_POLICYLOAD)
 };
+static
+const struct xlat nl_selinux_types[1] = { {
+ .data = nl_selinux_types_xdata,
+ .size = ARRAY_SIZE(nl_selinux_types_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index d0afe449d28de78d887a4cade9cd79f9fcd0437e..5e26ef1076728ada0b02f3b7a616028da1a33269 100644 (file)
@@ -40,15 +40,63 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat nl_sock_diag_types[] = {
+static const struct xlat_data nl_sock_diag_types_xdata[] = {
  XLAT(TCPDIAG_GETSOCK),
+ #define XLAT_VAL_0 ((unsigned) (TCPDIAG_GETSOCK))
+ #define XLAT_STR_0 STRINGIFY(TCPDIAG_GETSOCK)
  XLAT(DCCPDIAG_GETSOCK),
+ #define XLAT_VAL_1 ((unsigned) (DCCPDIAG_GETSOCK))
+ #define XLAT_STR_1 STRINGIFY(DCCPDIAG_GETSOCK)
  XLAT(SOCK_DIAG_BY_FAMILY),
+ #define XLAT_VAL_2 ((unsigned) (SOCK_DIAG_BY_FAMILY))
+ #define XLAT_STR_2 STRINGIFY(SOCK_DIAG_BY_FAMILY)
  XLAT(SOCK_DESTROY),
- XLAT_END
+ #define XLAT_VAL_3 ((unsigned) (SOCK_DESTROY))
+ #define XLAT_STR_3 STRINGIFY(SOCK_DESTROY)
 };
+static
+const struct xlat nl_sock_diag_types[1] = { {
+ .data = nl_sock_diag_types_xdata,
+ .size = ARRAY_SIZE(nl_sock_diag_types_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 47240fdb6ed4cbe3fbcc85ea8b3e45cdd45b43d8..cce02bb11ffeba108991a01a9dceb90ecec01736 100644 (file)
@@ -173,45 +173,283 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat nl_xfrm_types[] = {
+static const struct xlat_data nl_xfrm_types_xdata[] = {
  XLAT(XFRM_MSG_NEWSA),
+ #define XLAT_VAL_0 ((unsigned) (XFRM_MSG_NEWSA))
+ #define XLAT_STR_0 STRINGIFY(XFRM_MSG_NEWSA)
  XLAT(XFRM_MSG_DELSA),
+ #define XLAT_VAL_1 ((unsigned) (XFRM_MSG_DELSA))
+ #define XLAT_STR_1 STRINGIFY(XFRM_MSG_DELSA)
  XLAT(XFRM_MSG_GETSA),
+ #define XLAT_VAL_2 ((unsigned) (XFRM_MSG_GETSA))
+ #define XLAT_STR_2 STRINGIFY(XFRM_MSG_GETSA)
 
  XLAT(XFRM_MSG_NEWPOLICY),
+ #define XLAT_VAL_3 ((unsigned) (XFRM_MSG_NEWPOLICY))
+ #define XLAT_STR_3 STRINGIFY(XFRM_MSG_NEWPOLICY)
  XLAT(XFRM_MSG_DELPOLICY),
+ #define XLAT_VAL_4 ((unsigned) (XFRM_MSG_DELPOLICY))
+ #define XLAT_STR_4 STRINGIFY(XFRM_MSG_DELPOLICY)
  XLAT(XFRM_MSG_GETPOLICY),
+ #define XLAT_VAL_5 ((unsigned) (XFRM_MSG_GETPOLICY))
+ #define XLAT_STR_5 STRINGIFY(XFRM_MSG_GETPOLICY)
 
  XLAT(XFRM_MSG_ALLOCSPI),
+ #define XLAT_VAL_6 ((unsigned) (XFRM_MSG_ALLOCSPI))
+ #define XLAT_STR_6 STRINGIFY(XFRM_MSG_ALLOCSPI)
  XLAT(XFRM_MSG_ACQUIRE),
+ #define XLAT_VAL_7 ((unsigned) (XFRM_MSG_ACQUIRE))
+ #define XLAT_STR_7 STRINGIFY(XFRM_MSG_ACQUIRE)
  XLAT(XFRM_MSG_EXPIRE),
+ #define XLAT_VAL_8 ((unsigned) (XFRM_MSG_EXPIRE))
+ #define XLAT_STR_8 STRINGIFY(XFRM_MSG_EXPIRE)
 
  XLAT(XFRM_MSG_UPDPOLICY),
+ #define XLAT_VAL_9 ((unsigned) (XFRM_MSG_UPDPOLICY))
+ #define XLAT_STR_9 STRINGIFY(XFRM_MSG_UPDPOLICY)
  XLAT(XFRM_MSG_UPDSA),
+ #define XLAT_VAL_10 ((unsigned) (XFRM_MSG_UPDSA))
+ #define XLAT_STR_10 STRINGIFY(XFRM_MSG_UPDSA)
 
  XLAT(XFRM_MSG_POLEXPIRE),
+ #define XLAT_VAL_11 ((unsigned) (XFRM_MSG_POLEXPIRE))
+ #define XLAT_STR_11 STRINGIFY(XFRM_MSG_POLEXPIRE)
 
  XLAT(XFRM_MSG_FLUSHSA),
+ #define XLAT_VAL_12 ((unsigned) (XFRM_MSG_FLUSHSA))
+ #define XLAT_STR_12 STRINGIFY(XFRM_MSG_FLUSHSA)
  XLAT(XFRM_MSG_FLUSHPOLICY),
+ #define XLAT_VAL_13 ((unsigned) (XFRM_MSG_FLUSHPOLICY))
+ #define XLAT_STR_13 STRINGIFY(XFRM_MSG_FLUSHPOLICY)
 
  XLAT(XFRM_MSG_NEWAE),
+ #define XLAT_VAL_14 ((unsigned) (XFRM_MSG_NEWAE))
+ #define XLAT_STR_14 STRINGIFY(XFRM_MSG_NEWAE)
  XLAT(XFRM_MSG_GETAE),
+ #define XLAT_VAL_15 ((unsigned) (XFRM_MSG_GETAE))
+ #define XLAT_STR_15 STRINGIFY(XFRM_MSG_GETAE)
 
  XLAT(XFRM_MSG_REPORT),
+ #define XLAT_VAL_16 ((unsigned) (XFRM_MSG_REPORT))
+ #define XLAT_STR_16 STRINGIFY(XFRM_MSG_REPORT)
 
  XLAT(XFRM_MSG_MIGRATE),
+ #define XLAT_VAL_17 ((unsigned) (XFRM_MSG_MIGRATE))
+ #define XLAT_STR_17 STRINGIFY(XFRM_MSG_MIGRATE)
 
  XLAT(XFRM_MSG_NEWSADINFO),
+ #define XLAT_VAL_18 ((unsigned) (XFRM_MSG_NEWSADINFO))
+ #define XLAT_STR_18 STRINGIFY(XFRM_MSG_NEWSADINFO)
  XLAT(XFRM_MSG_GETSADINFO),
+ #define XLAT_VAL_19 ((unsigned) (XFRM_MSG_GETSADINFO))
+ #define XLAT_STR_19 STRINGIFY(XFRM_MSG_GETSADINFO)
 
  XLAT(XFRM_MSG_NEWSPDINFO),
+ #define XLAT_VAL_20 ((unsigned) (XFRM_MSG_NEWSPDINFO))
+ #define XLAT_STR_20 STRINGIFY(XFRM_MSG_NEWSPDINFO)
  XLAT(XFRM_MSG_GETSPDINFO),
+ #define XLAT_VAL_21 ((unsigned) (XFRM_MSG_GETSPDINFO))
+ #define XLAT_STR_21 STRINGIFY(XFRM_MSG_GETSPDINFO)
 
  XLAT(XFRM_MSG_MAPPING),
- XLAT_END
+ #define XLAT_VAL_22 ((unsigned) (XFRM_MSG_MAPPING))
+ #define XLAT_STR_22 STRINGIFY(XFRM_MSG_MAPPING)
 };
+static
+const struct xlat nl_xfrm_types[1] = { {
+ .data = nl_xfrm_types_xdata,
+ .size = ARRAY_SIZE(nl_xfrm_types_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 2d0f46f40c71f70c9b04eaf39a8543aec245fdc2..20c737218d57cc9165bfb17a0d0c135018a48133 100644 (file)
@@ -40,15 +40,63 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat nlmsgerr_attrs[] = {
- XLAT(NLMSGERR_ATTR_UNUSED),
- XLAT(NLMSGERR_ATTR_MSG),
- XLAT(NLMSGERR_ATTR_OFFS),
- XLAT(NLMSGERR_ATTR_COOKIE),
- XLAT_END
+static const struct xlat_data nlmsgerr_attrs_xdata[] = {
+ [NLMSGERR_ATTR_UNUSED] = XLAT(NLMSGERR_ATTR_UNUSED),
+ #define XLAT_VAL_0 ((unsigned) (NLMSGERR_ATTR_UNUSED))
+ #define XLAT_STR_0 STRINGIFY(NLMSGERR_ATTR_UNUSED)
+ [NLMSGERR_ATTR_MSG] = XLAT(NLMSGERR_ATTR_MSG),
+ #define XLAT_VAL_1 ((unsigned) (NLMSGERR_ATTR_MSG))
+ #define XLAT_STR_1 STRINGIFY(NLMSGERR_ATTR_MSG)
+ [NLMSGERR_ATTR_OFFS] = XLAT(NLMSGERR_ATTR_OFFS),
+ #define XLAT_VAL_2 ((unsigned) (NLMSGERR_ATTR_OFFS))
+ #define XLAT_STR_2 STRINGIFY(NLMSGERR_ATTR_OFFS)
+ [NLMSGERR_ATTR_COOKIE] = XLAT(NLMSGERR_ATTR_COOKIE),
+ #define XLAT_VAL_3 ((unsigned) (NLMSGERR_ATTR_COOKIE))
+ #define XLAT_STR_3 STRINGIFY(NLMSGERR_ATTR_COOKIE)
 };
+static
+const struct xlat nlmsgerr_attrs[1] = { {
+ .data = nlmsgerr_attrs_xdata,
+ .size = ARRAY_SIZE(nlmsgerr_attrs_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 589bc557b64d5f71bdeb131c38528503a1ac8f8c..2b7288088d2cd5ae89ec8c7f16a6fc94f35eba60 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 NLMSGERR_ATTR_UNUSED   0
 NLMSGERR_ATTR_MSG      1
 NLMSGERR_ATTR_OFFS     2
index cccc7d1fd0db8074688ad1cacc8d96181991f956..8e0adcbe12d980ea7896be89846c33f9b4160d30 100644 (file)
 
 # else
 
-static
-const struct xlat notifyflags[] = {
+static const struct xlat_data notifyflags_xdata[] = {
 #if defined(DN_ACCESS) || (defined(HAVE_DECL_DN_ACCESS) && HAVE_DECL_DN_ACCESS)
   XLAT(DN_ACCESS),
+ #define XLAT_VAL_0 ((unsigned) (DN_ACCESS))
+ #define XLAT_STR_0 STRINGIFY(DN_ACCESS)
 #endif
 #if defined(DN_MODIFY) || (defined(HAVE_DECL_DN_MODIFY) && HAVE_DECL_DN_MODIFY)
   XLAT(DN_MODIFY),
+ #define XLAT_VAL_1 ((unsigned) (DN_MODIFY))
+ #define XLAT_STR_1 STRINGIFY(DN_MODIFY)
 #endif
 #if defined(DN_CREATE) || (defined(HAVE_DECL_DN_CREATE) && HAVE_DECL_DN_CREATE)
   XLAT(DN_CREATE),
+ #define XLAT_VAL_2 ((unsigned) (DN_CREATE))
+ #define XLAT_STR_2 STRINGIFY(DN_CREATE)
 #endif
 #if defined(DN_DELETE) || (defined(HAVE_DECL_DN_DELETE) && HAVE_DECL_DN_DELETE)
   XLAT(DN_DELETE),
+ #define XLAT_VAL_3 ((unsigned) (DN_DELETE))
+ #define XLAT_STR_3 STRINGIFY(DN_DELETE)
 #endif
 #if defined(DN_RENAME) || (defined(HAVE_DECL_DN_RENAME) && HAVE_DECL_DN_RENAME)
   XLAT(DN_RENAME),
+ #define XLAT_VAL_4 ((unsigned) (DN_RENAME))
+ #define XLAT_STR_4 STRINGIFY(DN_RENAME)
 #endif
 #if defined(DN_ATTRIB) || (defined(HAVE_DECL_DN_ATTRIB) && HAVE_DECL_DN_ATTRIB)
   XLAT(DN_ATTRIB),
+ #define XLAT_VAL_5 ((unsigned) (DN_ATTRIB))
+ #define XLAT_STR_5 STRINGIFY(DN_ATTRIB)
 #endif
 #if defined(DN_MULTISHOT) || (defined(HAVE_DECL_DN_MULTISHOT) && HAVE_DECL_DN_MULTISHOT)
   XLAT(DN_MULTISHOT),
+ #define XLAT_VAL_6 ((unsigned) (DN_MULTISHOT))
+ #define XLAT_STR_6 STRINGIFY(DN_MULTISHOT)
 #endif
- XLAT_END
 };
+static
+const struct xlat notifyflags[1] = { {
+ .data = notifyflags_xdata,
+ .size = ARRAY_SIZE(notifyflags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 319dcdcc350dfcbea4863ad26017e299099d6dd8..6372e4aa5c914f4a766bd481a62d4c3f287a4a51 100644 (file)
@@ -502,81 +502,789 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat nt_descriptor_types[] = {
+static const struct xlat_data nt_descriptor_types_xdata[] = {
  XLAT(NT_PRSTATUS),
+ #define XLAT_VAL_0 ((unsigned) (NT_PRSTATUS))
+ #define XLAT_STR_0 STRINGIFY(NT_PRSTATUS)
  XLAT(NT_FPREGSET),
+ #define XLAT_VAL_1 ((unsigned) (NT_FPREGSET))
+ #define XLAT_STR_1 STRINGIFY(NT_FPREGSET)
  XLAT(NT_PRPSINFO),
+ #define XLAT_VAL_2 ((unsigned) (NT_PRPSINFO))
+ #define XLAT_STR_2 STRINGIFY(NT_PRPSINFO)
  XLAT(NT_PRXREG),
+ #define XLAT_VAL_3 ((unsigned) (NT_PRXREG))
+ #define XLAT_STR_3 STRINGIFY(NT_PRXREG)
  XLAT(NT_TASKSTRUCT),
+ #define XLAT_VAL_4 ((unsigned) (NT_TASKSTRUCT))
+ #define XLAT_STR_4 STRINGIFY(NT_TASKSTRUCT)
  XLAT(NT_PLATFORM),
+ #define XLAT_VAL_5 ((unsigned) (NT_PLATFORM))
+ #define XLAT_STR_5 STRINGIFY(NT_PLATFORM)
  XLAT(NT_AUXV),
+ #define XLAT_VAL_6 ((unsigned) (NT_AUXV))
+ #define XLAT_STR_6 STRINGIFY(NT_AUXV)
  XLAT(NT_GWINDOWS),
+ #define XLAT_VAL_7 ((unsigned) (NT_GWINDOWS))
+ #define XLAT_STR_7 STRINGIFY(NT_GWINDOWS)
  XLAT(NT_ASRS),
+ #define XLAT_VAL_8 ((unsigned) (NT_ASRS))
+ #define XLAT_STR_8 STRINGIFY(NT_ASRS)
  XLAT(NT_PSTATUS),
+ #define XLAT_VAL_9 ((unsigned) (NT_PSTATUS))
+ #define XLAT_STR_9 STRINGIFY(NT_PSTATUS)
  XLAT(NT_PSINFO),
+ #define XLAT_VAL_10 ((unsigned) (NT_PSINFO))
+ #define XLAT_STR_10 STRINGIFY(NT_PSINFO)
  XLAT(NT_PRCRED),
+ #define XLAT_VAL_11 ((unsigned) (NT_PRCRED))
+ #define XLAT_STR_11 STRINGIFY(NT_PRCRED)
  XLAT(NT_UTSNAME),
+ #define XLAT_VAL_12 ((unsigned) (NT_UTSNAME))
+ #define XLAT_STR_12 STRINGIFY(NT_UTSNAME)
  XLAT(NT_LWPSTATUS),
+ #define XLAT_VAL_13 ((unsigned) (NT_LWPSTATUS))
+ #define XLAT_STR_13 STRINGIFY(NT_LWPSTATUS)
  XLAT(NT_LWPSINFO),
+ #define XLAT_VAL_14 ((unsigned) (NT_LWPSINFO))
+ #define XLAT_STR_14 STRINGIFY(NT_LWPSINFO)
  XLAT(NT_PRFPXREG),
+ #define XLAT_VAL_15 ((unsigned) (NT_PRFPXREG))
+ #define XLAT_STR_15 STRINGIFY(NT_PRFPXREG)
  XLAT(NT_SIGINFO),
+ #define XLAT_VAL_16 ((unsigned) (NT_SIGINFO))
+ #define XLAT_STR_16 STRINGIFY(NT_SIGINFO)
  XLAT(NT_FILE),
+ #define XLAT_VAL_17 ((unsigned) (NT_FILE))
+ #define XLAT_STR_17 STRINGIFY(NT_FILE)
  XLAT(NT_PRXFPREG),
+ #define XLAT_VAL_18 ((unsigned) (NT_PRXFPREG))
+ #define XLAT_STR_18 STRINGIFY(NT_PRXFPREG)
  XLAT(NT_PPC_VMX),
+ #define XLAT_VAL_19 ((unsigned) (NT_PPC_VMX))
+ #define XLAT_STR_19 STRINGIFY(NT_PPC_VMX)
  XLAT(NT_PPC_SPE),
+ #define XLAT_VAL_20 ((unsigned) (NT_PPC_SPE))
+ #define XLAT_STR_20 STRINGIFY(NT_PPC_SPE)
  XLAT(NT_PPC_VSX),
+ #define XLAT_VAL_21 ((unsigned) (NT_PPC_VSX))
+ #define XLAT_STR_21 STRINGIFY(NT_PPC_VSX)
  XLAT(NT_PPC_TAR),
+ #define XLAT_VAL_22 ((unsigned) (NT_PPC_TAR))
+ #define XLAT_STR_22 STRINGIFY(NT_PPC_TAR)
  XLAT(NT_PPC_PPR),
+ #define XLAT_VAL_23 ((unsigned) (NT_PPC_PPR))
+ #define XLAT_STR_23 STRINGIFY(NT_PPC_PPR)
  XLAT(NT_PPC_DSCR),
+ #define XLAT_VAL_24 ((unsigned) (NT_PPC_DSCR))
+ #define XLAT_STR_24 STRINGIFY(NT_PPC_DSCR)
  XLAT(NT_PPC_EBB),
+ #define XLAT_VAL_25 ((unsigned) (NT_PPC_EBB))
+ #define XLAT_STR_25 STRINGIFY(NT_PPC_EBB)
  XLAT(NT_PPC_PMU),
+ #define XLAT_VAL_26 ((unsigned) (NT_PPC_PMU))
+ #define XLAT_STR_26 STRINGIFY(NT_PPC_PMU)
  XLAT(NT_PPC_TM_CGPR),
+ #define XLAT_VAL_27 ((unsigned) (NT_PPC_TM_CGPR))
+ #define XLAT_STR_27 STRINGIFY(NT_PPC_TM_CGPR)
  XLAT(NT_PPC_TM_CFPR),
+ #define XLAT_VAL_28 ((unsigned) (NT_PPC_TM_CFPR))
+ #define XLAT_STR_28 STRINGIFY(NT_PPC_TM_CFPR)
  XLAT(NT_PPC_TM_CVMX),
+ #define XLAT_VAL_29 ((unsigned) (NT_PPC_TM_CVMX))
+ #define XLAT_STR_29 STRINGIFY(NT_PPC_TM_CVMX)
  XLAT(NT_PPC_TM_CVSX),
+ #define XLAT_VAL_30 ((unsigned) (NT_PPC_TM_CVSX))
+ #define XLAT_STR_30 STRINGIFY(NT_PPC_TM_CVSX)
  XLAT(NT_PPC_TM_SPR),
+ #define XLAT_VAL_31 ((unsigned) (NT_PPC_TM_SPR))
+ #define XLAT_STR_31 STRINGIFY(NT_PPC_TM_SPR)
  XLAT(NT_PPC_TM_CTAR),
+ #define XLAT_VAL_32 ((unsigned) (NT_PPC_TM_CTAR))
+ #define XLAT_STR_32 STRINGIFY(NT_PPC_TM_CTAR)
  XLAT(NT_PPC_TM_CPPR),
+ #define XLAT_VAL_33 ((unsigned) (NT_PPC_TM_CPPR))
+ #define XLAT_STR_33 STRINGIFY(NT_PPC_TM_CPPR)
  XLAT(NT_PPC_TM_CDSCR),
+ #define XLAT_VAL_34 ((unsigned) (NT_PPC_TM_CDSCR))
+ #define XLAT_STR_34 STRINGIFY(NT_PPC_TM_CDSCR)
  XLAT(NT_PPC_PKEY),
+ #define XLAT_VAL_35 ((unsigned) (NT_PPC_PKEY))
+ #define XLAT_STR_35 STRINGIFY(NT_PPC_PKEY)
  XLAT(NT_386_TLS),
+ #define XLAT_VAL_36 ((unsigned) (NT_386_TLS))
+ #define XLAT_STR_36 STRINGIFY(NT_386_TLS)
  XLAT(NT_386_IOPERM),
+ #define XLAT_VAL_37 ((unsigned) (NT_386_IOPERM))
+ #define XLAT_STR_37 STRINGIFY(NT_386_IOPERM)
  XLAT(NT_X86_XSTATE),
+ #define XLAT_VAL_38 ((unsigned) (NT_X86_XSTATE))
+ #define XLAT_STR_38 STRINGIFY(NT_X86_XSTATE)
  XLAT(NT_S390_HIGH_GPRS),
+ #define XLAT_VAL_39 ((unsigned) (NT_S390_HIGH_GPRS))
+ #define XLAT_STR_39 STRINGIFY(NT_S390_HIGH_GPRS)
  XLAT(NT_S390_TIMER),
+ #define XLAT_VAL_40 ((unsigned) (NT_S390_TIMER))
+ #define XLAT_STR_40 STRINGIFY(NT_S390_TIMER)
  XLAT(NT_S390_TODCMP),
+ #define XLAT_VAL_41 ((unsigned) (NT_S390_TODCMP))
+ #define XLAT_STR_41 STRINGIFY(NT_S390_TODCMP)
  XLAT(NT_S390_TODPREG),
+ #define XLAT_VAL_42 ((unsigned) (NT_S390_TODPREG))
+ #define XLAT_STR_42 STRINGIFY(NT_S390_TODPREG)
  XLAT(NT_S390_CTRS),
+ #define XLAT_VAL_43 ((unsigned) (NT_S390_CTRS))
+ #define XLAT_STR_43 STRINGIFY(NT_S390_CTRS)
  XLAT(NT_S390_PREFIX),
+ #define XLAT_VAL_44 ((unsigned) (NT_S390_PREFIX))
+ #define XLAT_STR_44 STRINGIFY(NT_S390_PREFIX)
  XLAT(NT_S390_LAST_BREAK),
+ #define XLAT_VAL_45 ((unsigned) (NT_S390_LAST_BREAK))
+ #define XLAT_STR_45 STRINGIFY(NT_S390_LAST_BREAK)
  XLAT(NT_S390_SYSTEM_CALL),
+ #define XLAT_VAL_46 ((unsigned) (NT_S390_SYSTEM_CALL))
+ #define XLAT_STR_46 STRINGIFY(NT_S390_SYSTEM_CALL)
  XLAT(NT_S390_TDB),
+ #define XLAT_VAL_47 ((unsigned) (NT_S390_TDB))
+ #define XLAT_STR_47 STRINGIFY(NT_S390_TDB)
  XLAT(NT_S390_VXRS_LOW),
+ #define XLAT_VAL_48 ((unsigned) (NT_S390_VXRS_LOW))
+ #define XLAT_STR_48 STRINGIFY(NT_S390_VXRS_LOW)
  XLAT(NT_S390_VXRS_HIGH),
+ #define XLAT_VAL_49 ((unsigned) (NT_S390_VXRS_HIGH))
+ #define XLAT_STR_49 STRINGIFY(NT_S390_VXRS_HIGH)
  XLAT(NT_S390_GS_CB),
+ #define XLAT_VAL_50 ((unsigned) (NT_S390_GS_CB))
+ #define XLAT_STR_50 STRINGIFY(NT_S390_GS_CB)
  XLAT(NT_S390_GS_BC),
+ #define XLAT_VAL_51 ((unsigned) (NT_S390_GS_BC))
+ #define XLAT_STR_51 STRINGIFY(NT_S390_GS_BC)
  XLAT(NT_S390_RI_CB),
+ #define XLAT_VAL_52 ((unsigned) (NT_S390_RI_CB))
+ #define XLAT_STR_52 STRINGIFY(NT_S390_RI_CB)
  XLAT(NT_ARM_VFP),
+ #define XLAT_VAL_53 ((unsigned) (NT_ARM_VFP))
+ #define XLAT_STR_53 STRINGIFY(NT_ARM_VFP)
  XLAT(NT_ARM_TLS),
+ #define XLAT_VAL_54 ((unsigned) (NT_ARM_TLS))
+ #define XLAT_STR_54 STRINGIFY(NT_ARM_TLS)
  XLAT(NT_ARM_HW_BREAK),
+ #define XLAT_VAL_55 ((unsigned) (NT_ARM_HW_BREAK))
+ #define XLAT_STR_55 STRINGIFY(NT_ARM_HW_BREAK)
  XLAT(NT_ARM_HW_WATCH),
+ #define XLAT_VAL_56 ((unsigned) (NT_ARM_HW_WATCH))
+ #define XLAT_STR_56 STRINGIFY(NT_ARM_HW_WATCH)
  XLAT(NT_ARM_SYSTEM_CALL),
+ #define XLAT_VAL_57 ((unsigned) (NT_ARM_SYSTEM_CALL))
+ #define XLAT_STR_57 STRINGIFY(NT_ARM_SYSTEM_CALL)
  XLAT(NT_ARM_SVE),
+ #define XLAT_VAL_58 ((unsigned) (NT_ARM_SVE))
+ #define XLAT_STR_58 STRINGIFY(NT_ARM_SVE)
  XLAT(NT_ARM_PAC_MASK),
+ #define XLAT_VAL_59 ((unsigned) (NT_ARM_PAC_MASK))
+ #define XLAT_STR_59 STRINGIFY(NT_ARM_PAC_MASK)
  XLAT(NT_ARM_PACA_KEYS),
+ #define XLAT_VAL_60 ((unsigned) (NT_ARM_PACA_KEYS))
+ #define XLAT_STR_60 STRINGIFY(NT_ARM_PACA_KEYS)
  XLAT(NT_ARM_PACG_KEYS),
+ #define XLAT_VAL_61 ((unsigned) (NT_ARM_PACG_KEYS))
+ #define XLAT_STR_61 STRINGIFY(NT_ARM_PACG_KEYS)
  XLAT(NT_METAG_CBUF),
+ #define XLAT_VAL_62 ((unsigned) (NT_METAG_CBUF))
+ #define XLAT_STR_62 STRINGIFY(NT_METAG_CBUF)
  XLAT(NT_METAG_RPIPE),
+ #define XLAT_VAL_63 ((unsigned) (NT_METAG_RPIPE))
+ #define XLAT_STR_63 STRINGIFY(NT_METAG_RPIPE)
  XLAT(NT_METAG_TLS),
+ #define XLAT_VAL_64 ((unsigned) (NT_METAG_TLS))
+ #define XLAT_STR_64 STRINGIFY(NT_METAG_TLS)
  XLAT(NT_ARC_V2),
+ #define XLAT_VAL_65 ((unsigned) (NT_ARC_V2))
+ #define XLAT_STR_65 STRINGIFY(NT_ARC_V2)
  XLAT(NT_VMCOREDD),
+ #define XLAT_VAL_66 ((unsigned) (NT_VMCOREDD))
+ #define XLAT_STR_66 STRINGIFY(NT_VMCOREDD)
  XLAT(NT_MIPS_DSP),
+ #define XLAT_VAL_67 ((unsigned) (NT_MIPS_DSP))
+ #define XLAT_STR_67 STRINGIFY(NT_MIPS_DSP)
  XLAT(NT_MIPS_FP_MODE),
+ #define XLAT_VAL_68 ((unsigned) (NT_MIPS_FP_MODE))
+ #define XLAT_STR_68 STRINGIFY(NT_MIPS_FP_MODE)
  XLAT(NT_MIPS_MSA),
- XLAT_END
+ #define XLAT_VAL_69 ((unsigned) (NT_MIPS_MSA))
+ #define XLAT_STR_69 STRINGIFY(NT_MIPS_MSA)
 };
+static
+const struct xlat nt_descriptor_types[1] = { {
+ .data = nt_descriptor_types_xdata,
+ .size = ARRAY_SIZE(nt_descriptor_types_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+#  ifdef XLAT_VAL_30
+  | XLAT_VAL_30
+#  endif
+#  ifdef XLAT_VAL_31
+  | XLAT_VAL_31
+#  endif
+#  ifdef XLAT_VAL_32
+  | XLAT_VAL_32
+#  endif
+#  ifdef XLAT_VAL_33
+  | XLAT_VAL_33
+#  endif
+#  ifdef XLAT_VAL_34
+  | XLAT_VAL_34
+#  endif
+#  ifdef XLAT_VAL_35
+  | XLAT_VAL_35
+#  endif
+#  ifdef XLAT_VAL_36
+  | XLAT_VAL_36
+#  endif
+#  ifdef XLAT_VAL_37
+  | XLAT_VAL_37
+#  endif
+#  ifdef XLAT_VAL_38
+  | XLAT_VAL_38
+#  endif
+#  ifdef XLAT_VAL_39
+  | XLAT_VAL_39
+#  endif
+#  ifdef XLAT_VAL_40
+  | XLAT_VAL_40
+#  endif
+#  ifdef XLAT_VAL_41
+  | XLAT_VAL_41
+#  endif
+#  ifdef XLAT_VAL_42
+  | XLAT_VAL_42
+#  endif
+#  ifdef XLAT_VAL_43
+  | XLAT_VAL_43
+#  endif
+#  ifdef XLAT_VAL_44
+  | XLAT_VAL_44
+#  endif
+#  ifdef XLAT_VAL_45
+  | XLAT_VAL_45
+#  endif
+#  ifdef XLAT_VAL_46
+  | XLAT_VAL_46
+#  endif
+#  ifdef XLAT_VAL_47
+  | XLAT_VAL_47
+#  endif
+#  ifdef XLAT_VAL_48
+  | XLAT_VAL_48
+#  endif
+#  ifdef XLAT_VAL_49
+  | XLAT_VAL_49
+#  endif
+#  ifdef XLAT_VAL_50
+  | XLAT_VAL_50
+#  endif
+#  ifdef XLAT_VAL_51
+  | XLAT_VAL_51
+#  endif
+#  ifdef XLAT_VAL_52
+  | XLAT_VAL_52
+#  endif
+#  ifdef XLAT_VAL_53
+  | XLAT_VAL_53
+#  endif
+#  ifdef XLAT_VAL_54
+  | XLAT_VAL_54
+#  endif
+#  ifdef XLAT_VAL_55
+  | XLAT_VAL_55
+#  endif
+#  ifdef XLAT_VAL_56
+  | XLAT_VAL_56
+#  endif
+#  ifdef XLAT_VAL_57
+  | XLAT_VAL_57
+#  endif
+#  ifdef XLAT_VAL_58
+  | XLAT_VAL_58
+#  endif
+#  ifdef XLAT_VAL_59
+  | XLAT_VAL_59
+#  endif
+#  ifdef XLAT_VAL_60
+  | XLAT_VAL_60
+#  endif
+#  ifdef XLAT_VAL_61
+  | XLAT_VAL_61
+#  endif
+#  ifdef XLAT_VAL_62
+  | XLAT_VAL_62
+#  endif
+#  ifdef XLAT_VAL_63
+  | XLAT_VAL_63
+#  endif
+#  ifdef XLAT_VAL_64
+  | XLAT_VAL_64
+#  endif
+#  ifdef XLAT_VAL_65
+  | XLAT_VAL_65
+#  endif
+#  ifdef XLAT_VAL_66
+  | XLAT_VAL_66
+#  endif
+#  ifdef XLAT_VAL_67
+  | XLAT_VAL_67
+#  endif
+#  ifdef XLAT_VAL_68
+  | XLAT_VAL_68
+#  endif
+#  ifdef XLAT_VAL_69
+  | XLAT_VAL_69
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+#  ifdef XLAT_STR_30
+  + sizeof(XLAT_STR_30)
+#  endif
+#  ifdef XLAT_STR_31
+  + sizeof(XLAT_STR_31)
+#  endif
+#  ifdef XLAT_STR_32
+  + sizeof(XLAT_STR_32)
+#  endif
+#  ifdef XLAT_STR_33
+  + sizeof(XLAT_STR_33)
+#  endif
+#  ifdef XLAT_STR_34
+  + sizeof(XLAT_STR_34)
+#  endif
+#  ifdef XLAT_STR_35
+  + sizeof(XLAT_STR_35)
+#  endif
+#  ifdef XLAT_STR_36
+  + sizeof(XLAT_STR_36)
+#  endif
+#  ifdef XLAT_STR_37
+  + sizeof(XLAT_STR_37)
+#  endif
+#  ifdef XLAT_STR_38
+  + sizeof(XLAT_STR_38)
+#  endif
+#  ifdef XLAT_STR_39
+  + sizeof(XLAT_STR_39)
+#  endif
+#  ifdef XLAT_STR_40
+  + sizeof(XLAT_STR_40)
+#  endif
+#  ifdef XLAT_STR_41
+  + sizeof(XLAT_STR_41)
+#  endif
+#  ifdef XLAT_STR_42
+  + sizeof(XLAT_STR_42)
+#  endif
+#  ifdef XLAT_STR_43
+  + sizeof(XLAT_STR_43)
+#  endif
+#  ifdef XLAT_STR_44
+  + sizeof(XLAT_STR_44)
+#  endif
+#  ifdef XLAT_STR_45
+  + sizeof(XLAT_STR_45)
+#  endif
+#  ifdef XLAT_STR_46
+  + sizeof(XLAT_STR_46)
+#  endif
+#  ifdef XLAT_STR_47
+  + sizeof(XLAT_STR_47)
+#  endif
+#  ifdef XLAT_STR_48
+  + sizeof(XLAT_STR_48)
+#  endif
+#  ifdef XLAT_STR_49
+  + sizeof(XLAT_STR_49)
+#  endif
+#  ifdef XLAT_STR_50
+  + sizeof(XLAT_STR_50)
+#  endif
+#  ifdef XLAT_STR_51
+  + sizeof(XLAT_STR_51)
+#  endif
+#  ifdef XLAT_STR_52
+  + sizeof(XLAT_STR_52)
+#  endif
+#  ifdef XLAT_STR_53
+  + sizeof(XLAT_STR_53)
+#  endif
+#  ifdef XLAT_STR_54
+  + sizeof(XLAT_STR_54)
+#  endif
+#  ifdef XLAT_STR_55
+  + sizeof(XLAT_STR_55)
+#  endif
+#  ifdef XLAT_STR_56
+  + sizeof(XLAT_STR_56)
+#  endif
+#  ifdef XLAT_STR_57
+  + sizeof(XLAT_STR_57)
+#  endif
+#  ifdef XLAT_STR_58
+  + sizeof(XLAT_STR_58)
+#  endif
+#  ifdef XLAT_STR_59
+  + sizeof(XLAT_STR_59)
+#  endif
+#  ifdef XLAT_STR_60
+  + sizeof(XLAT_STR_60)
+#  endif
+#  ifdef XLAT_STR_61
+  + sizeof(XLAT_STR_61)
+#  endif
+#  ifdef XLAT_STR_62
+  + sizeof(XLAT_STR_62)
+#  endif
+#  ifdef XLAT_STR_63
+  + sizeof(XLAT_STR_63)
+#  endif
+#  ifdef XLAT_STR_64
+  + sizeof(XLAT_STR_64)
+#  endif
+#  ifdef XLAT_STR_65
+  + sizeof(XLAT_STR_65)
+#  endif
+#  ifdef XLAT_STR_66
+  + sizeof(XLAT_STR_66)
+#  endif
+#  ifdef XLAT_STR_67
+  + sizeof(XLAT_STR_67)
+#  endif
+#  ifdef XLAT_STR_68
+  + sizeof(XLAT_STR_68)
+#  endif
+#  ifdef XLAT_STR_69
+  + sizeof(XLAT_STR_69)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
+#  undef XLAT_STR_30
+#  undef XLAT_VAL_30
+#  undef XLAT_STR_31
+#  undef XLAT_VAL_31
+#  undef XLAT_STR_32
+#  undef XLAT_VAL_32
+#  undef XLAT_STR_33
+#  undef XLAT_VAL_33
+#  undef XLAT_STR_34
+#  undef XLAT_VAL_34
+#  undef XLAT_STR_35
+#  undef XLAT_VAL_35
+#  undef XLAT_STR_36
+#  undef XLAT_VAL_36
+#  undef XLAT_STR_37
+#  undef XLAT_VAL_37
+#  undef XLAT_STR_38
+#  undef XLAT_VAL_38
+#  undef XLAT_STR_39
+#  undef XLAT_VAL_39
+#  undef XLAT_STR_40
+#  undef XLAT_VAL_40
+#  undef XLAT_STR_41
+#  undef XLAT_VAL_41
+#  undef XLAT_STR_42
+#  undef XLAT_VAL_42
+#  undef XLAT_STR_43
+#  undef XLAT_VAL_43
+#  undef XLAT_STR_44
+#  undef XLAT_VAL_44
+#  undef XLAT_STR_45
+#  undef XLAT_VAL_45
+#  undef XLAT_STR_46
+#  undef XLAT_VAL_46
+#  undef XLAT_STR_47
+#  undef XLAT_VAL_47
+#  undef XLAT_STR_48
+#  undef XLAT_VAL_48
+#  undef XLAT_STR_49
+#  undef XLAT_VAL_49
+#  undef XLAT_STR_50
+#  undef XLAT_VAL_50
+#  undef XLAT_STR_51
+#  undef XLAT_VAL_51
+#  undef XLAT_STR_52
+#  undef XLAT_VAL_52
+#  undef XLAT_STR_53
+#  undef XLAT_VAL_53
+#  undef XLAT_STR_54
+#  undef XLAT_VAL_54
+#  undef XLAT_STR_55
+#  undef XLAT_VAL_55
+#  undef XLAT_STR_56
+#  undef XLAT_VAL_56
+#  undef XLAT_STR_57
+#  undef XLAT_VAL_57
+#  undef XLAT_STR_58
+#  undef XLAT_VAL_58
+#  undef XLAT_STR_59
+#  undef XLAT_VAL_59
+#  undef XLAT_STR_60
+#  undef XLAT_VAL_60
+#  undef XLAT_STR_61
+#  undef XLAT_VAL_61
+#  undef XLAT_STR_62
+#  undef XLAT_VAL_62
+#  undef XLAT_STR_63
+#  undef XLAT_VAL_63
+#  undef XLAT_STR_64
+#  undef XLAT_VAL_64
+#  undef XLAT_STR_65
+#  undef XLAT_VAL_65
+#  undef XLAT_STR_66
+#  undef XLAT_VAL_66
+#  undef XLAT_STR_67
+#  undef XLAT_VAL_67
+#  undef XLAT_STR_68
+#  undef XLAT_VAL_68
+#  undef XLAT_STR_69
+#  undef XLAT_VAL_69
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 0d16745613ad50c2c05541da069c1f2da4e24d4c..4cafaef7280387ccec6d43b3efab7b3c10df2808 100644 (file)
@@ -19,12 +19,30 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat numa_node[] = {
+static const struct xlat_data numa_node_xdata[] = {
  XLAT(NUMA_NO_NODE),
- XLAT_END
+ #define XLAT_VAL_0 ((unsigned) (NUMA_NO_NODE))
+ #define XLAT_STR_0 STRINGIFY(NUMA_NO_NODE)
 };
-
+static
+const struct xlat numa_node[1] = { {
+ .data = numa_node_xdata,
+ .size = ARRAY_SIZE(numa_node_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index bf96a8ff2572c2fb5fac0dbb1650a72ab067dbed..ac533f4744126da6762fb8e58bcf329a4a7e998e 100644 (file)
@@ -36,14 +36,62 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # ifndef IN_MPERS
 
-const struct xlat open_access_modes[] = {
+static const struct xlat_data open_access_modes_xdata[] = {
  [O_RDONLY] = XLAT(O_RDONLY),
+ #define XLAT_VAL_0 ((unsigned) (O_RDONLY))
+ #define XLAT_STR_0 STRINGIFY(O_RDONLY)
  [O_WRONLY] = XLAT(O_WRONLY),
+ #define XLAT_VAL_1 ((unsigned) (O_WRONLY))
+ #define XLAT_STR_1 STRINGIFY(O_WRONLY)
  [O_RDWR] = XLAT(O_RDWR),
+ #define XLAT_VAL_2 ((unsigned) (O_RDWR))
+ #define XLAT_STR_2 STRINGIFY(O_RDWR)
  [O_ACCMODE] = XLAT(O_ACCMODE),
- XLAT_END
+ #define XLAT_VAL_3 ((unsigned) (O_ACCMODE))
+ #define XLAT_STR_3 STRINGIFY(O_ACCMODE)
 };
+const struct xlat open_access_modes[1] = { {
+ .data = open_access_modes_xdata,
+ .size = ARRAY_SIZE(open_access_modes_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 5c317e21e19398ac88971da6ec00cbfd638564ae..678f0b7e487811e463f6ac328847e8129cab9403 100644 (file)
@@ -587,99 +587,167 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # ifndef IN_MPERS
 
-const struct xlat open_mode_flags[] = {
+static const struct xlat_data open_mode_flags_xdata[] = {
 
 
 #if defined __hppa__ || defined __mips__
  XLAT(O_CREAT),
+ #define XLAT_VAL_0 ((unsigned) (O_CREAT))
+ #define XLAT_STR_0 STRINGIFY(O_CREAT)
 #elif defined __alpha__ || defined __sparc__
  XLAT(O_CREAT),
+ #define XLAT_VAL_1 ((unsigned) (O_CREAT))
+ #define XLAT_STR_1 STRINGIFY(O_CREAT)
 #else
  XLAT(O_CREAT),
+ #define XLAT_VAL_2 ((unsigned) (O_CREAT))
+ #define XLAT_STR_2 STRINGIFY(O_CREAT)
 #endif
 
 #if defined __hppa__ || defined __mips__
  XLAT(O_EXCL),
+ #define XLAT_VAL_3 ((unsigned) (O_EXCL))
+ #define XLAT_STR_3 STRINGIFY(O_EXCL)
 #elif defined __alpha__ || defined __sparc__
  XLAT(O_EXCL),
+ #define XLAT_VAL_4 ((unsigned) (O_EXCL))
+ #define XLAT_STR_4 STRINGIFY(O_EXCL)
 #else
  XLAT(O_EXCL),
+ #define XLAT_VAL_5 ((unsigned) (O_EXCL))
+ #define XLAT_STR_5 STRINGIFY(O_EXCL)
 #endif
 
 #if defined __mips__
  XLAT(O_NOCTTY),
+ #define XLAT_VAL_6 ((unsigned) (O_NOCTTY))
+ #define XLAT_STR_6 STRINGIFY(O_NOCTTY)
 #elif defined __alpha__
  XLAT(O_NOCTTY),
+ #define XLAT_VAL_7 ((unsigned) (O_NOCTTY))
+ #define XLAT_STR_7 STRINGIFY(O_NOCTTY)
 #elif defined __sparc__
  XLAT(O_NOCTTY),
+ #define XLAT_VAL_8 ((unsigned) (O_NOCTTY))
+ #define XLAT_STR_8 STRINGIFY(O_NOCTTY)
 #elif defined __hppa__
  XLAT(O_NOCTTY),
+ #define XLAT_VAL_9 ((unsigned) (O_NOCTTY))
+ #define XLAT_STR_9 STRINGIFY(O_NOCTTY)
 #else
  XLAT(O_NOCTTY),
+ #define XLAT_VAL_10 ((unsigned) (O_NOCTTY))
+ #define XLAT_STR_10 STRINGIFY(O_NOCTTY)
 #endif
 
 #if defined __alpha__ || defined __sparc__
  XLAT(O_TRUNC),
+ #define XLAT_VAL_11 ((unsigned) (O_TRUNC))
+ #define XLAT_STR_11 STRINGIFY(O_TRUNC)
 #else
  XLAT(O_TRUNC),
+ #define XLAT_VAL_12 ((unsigned) (O_TRUNC))
+ #define XLAT_STR_12 STRINGIFY(O_TRUNC)
 #endif
 
 #if defined __alpha__ || defined __hppa__ || defined __mips__ || defined __sparc__
  XLAT(O_APPEND),
+ #define XLAT_VAL_13 ((unsigned) (O_APPEND))
+ #define XLAT_STR_13 STRINGIFY(O_APPEND)
 #else
  XLAT(O_APPEND),
+ #define XLAT_VAL_14 ((unsigned) (O_APPEND))
+ #define XLAT_STR_14 STRINGIFY(O_APPEND)
 #endif
 
 #if defined __alpha__
  XLAT(O_NONBLOCK),
+ #define XLAT_VAL_15 ((unsigned) (O_NONBLOCK))
+ #define XLAT_STR_15 STRINGIFY(O_NONBLOCK)
 #elif defined __mips__
  XLAT(O_NONBLOCK),
+ #define XLAT_VAL_16 ((unsigned) (O_NONBLOCK))
+ #define XLAT_STR_16 STRINGIFY(O_NONBLOCK)
 #elif defined __sparc__
  XLAT(O_NONBLOCK),
+ #define XLAT_VAL_17 ((unsigned) (O_NONBLOCK))
+ #define XLAT_STR_17 STRINGIFY(O_NONBLOCK)
 #elif defined __hppa__
  XLAT(O_NONBLOCK),
+ #define XLAT_VAL_18 ((unsigned) (O_NONBLOCK))
+ #define XLAT_STR_18 STRINGIFY(O_NONBLOCK)
 #else
  XLAT(O_NONBLOCK),
+ #define XLAT_VAL_19 ((unsigned) (O_NONBLOCK))
+ #define XLAT_STR_19 STRINGIFY(O_NONBLOCK)
 #endif
 
 
 #if defined(O_SYNC) || (defined(HAVE_DECL_O_SYNC) && HAVE_DECL_O_SYNC)
   XLAT(O_SYNC),
+ #define XLAT_VAL_20 ((unsigned) (O_SYNC))
+ #define XLAT_STR_20 STRINGIFY(O_SYNC)
 #endif
 
 #if defined __mips__
  XLAT(__O_SYNC),
+ #define XLAT_VAL_21 ((unsigned) (__O_SYNC))
+ #define XLAT_STR_21 STRINGIFY(__O_SYNC)
 #elif defined __hppa__
  XLAT(__O_SYNC),
+ #define XLAT_VAL_22 ((unsigned) (__O_SYNC))
+ #define XLAT_STR_22 STRINGIFY(__O_SYNC)
 #elif defined __alpha__
  XLAT(__O_SYNC),
+ #define XLAT_VAL_23 ((unsigned) (__O_SYNC))
+ #define XLAT_STR_23 STRINGIFY(__O_SYNC)
 #elif defined __sparc__
  XLAT(__O_SYNC),
+ #define XLAT_VAL_24 ((unsigned) (__O_SYNC))
+ #define XLAT_STR_24 STRINGIFY(__O_SYNC)
 #else
  XLAT(__O_SYNC),
+ #define XLAT_VAL_25 ((unsigned) (__O_SYNC))
+ #define XLAT_STR_25 STRINGIFY(__O_SYNC)
 #endif
 
 #if defined(O_ASYNC) || (defined(HAVE_DECL_O_ASYNC) && HAVE_DECL_O_ASYNC)
   XLAT(O_ASYNC),
+ #define XLAT_VAL_26 ((unsigned) (O_ASYNC))
+ #define XLAT_STR_26 STRINGIFY(O_ASYNC)
 #endif
 
 #if defined __mips__
  XLAT(O_DSYNC),
+ #define XLAT_VAL_27 ((unsigned) (O_DSYNC))
+ #define XLAT_STR_27 STRINGIFY(O_DSYNC)
 #elif defined __sparc__
  XLAT(O_DSYNC),
+ #define XLAT_VAL_28 ((unsigned) (O_DSYNC))
+ #define XLAT_STR_28 STRINGIFY(O_DSYNC)
 #elif defined __alpha__
  XLAT(O_DSYNC),
+ #define XLAT_VAL_29 ((unsigned) (O_DSYNC))
+ #define XLAT_STR_29 STRINGIFY(O_DSYNC)
 #elif defined __hppa__
  XLAT(O_DSYNC),
+ #define XLAT_VAL_30 ((unsigned) (O_DSYNC))
+ #define XLAT_STR_30 STRINGIFY(O_DSYNC)
 #else
  XLAT(O_DSYNC),
+ #define XLAT_VAL_31 ((unsigned) (O_DSYNC))
+ #define XLAT_STR_31 STRINGIFY(O_DSYNC)
 #endif
 
 #if defined __hppa__
  XLAT(O_RSYNC),
+ #define XLAT_VAL_32 ((unsigned) (O_RSYNC))
+ #define XLAT_STR_32 STRINGIFY(O_RSYNC)
 #else
 #if defined(O_RSYNC) || (defined(HAVE_DECL_O_RSYNC) && HAVE_DECL_O_RSYNC)
   XLAT(O_RSYNC),
+ #define XLAT_VAL_33 ((unsigned) (O_RSYNC))
+ #define XLAT_STR_33 STRINGIFY(O_RSYNC)
 #endif
 #endif
 
@@ -695,111 +763,791 @@ const struct xlat open_mode_flags[] = {
 
 #if defined __sparc__
  XLAT(O_NDELAY),
+ #define XLAT_VAL_34 ((unsigned) (O_NDELAY))
+ #define XLAT_STR_34 STRINGIFY(O_NDELAY)
 #else
 #if defined(O_NDELAY) || (defined(HAVE_DECL_O_NDELAY) && HAVE_DECL_O_NDELAY)
   XLAT(O_NDELAY),
+ #define XLAT_VAL_35 ((unsigned) (O_NDELAY))
+ #define XLAT_STR_35 STRINGIFY(O_NDELAY)
 #endif
 #endif
 
 #if defined __sparc__
  XLAT(O_DIRECT),
+ #define XLAT_VAL_36 ((unsigned) (O_DIRECT))
+ #define XLAT_STR_36 STRINGIFY(O_DIRECT)
 #elif defined __mips__
  XLAT(O_DIRECT),
+ #define XLAT_VAL_37 ((unsigned) (O_DIRECT))
+ #define XLAT_STR_37 STRINGIFY(O_DIRECT)
 #elif defined __arm__ || defined __arm64__ || defined __aarch64__ || defined __m68k__
  XLAT(O_DIRECT),
+ #define XLAT_VAL_38 ((unsigned) (O_DIRECT))
+ #define XLAT_STR_38 STRINGIFY(O_DIRECT)
 #elif defined __powerpc__
  XLAT(O_DIRECT),
+ #define XLAT_VAL_39 ((unsigned) (O_DIRECT))
+ #define XLAT_STR_39 STRINGIFY(O_DIRECT)
 #elif defined __alpha__
  XLAT(O_DIRECT),
+ #define XLAT_VAL_40 ((unsigned) (O_DIRECT))
+ #define XLAT_STR_40 STRINGIFY(O_DIRECT)
 #else
  XLAT(O_DIRECT),
+ #define XLAT_VAL_41 ((unsigned) (O_DIRECT))
+ #define XLAT_STR_41 STRINGIFY(O_DIRECT)
 #endif
 
 #if defined __hppa__
  XLAT(O_LARGEFILE),
+ #define XLAT_VAL_42 ((unsigned) (O_LARGEFILE))
+ #define XLAT_STR_42 STRINGIFY(O_LARGEFILE)
 #elif defined __mips__
  XLAT(O_LARGEFILE),
+ #define XLAT_VAL_43 ((unsigned) (O_LARGEFILE))
+ #define XLAT_STR_43 STRINGIFY(O_LARGEFILE)
 #elif defined __powerpc__
  XLAT(O_LARGEFILE),
+ #define XLAT_VAL_44 ((unsigned) (O_LARGEFILE))
+ #define XLAT_STR_44 STRINGIFY(O_LARGEFILE)
 #elif defined __alpha__ || defined __arm__ || defined __arm64__ || defined __aarch64__ || defined __m68k__
  XLAT(O_LARGEFILE),
+ #define XLAT_VAL_45 ((unsigned) (O_LARGEFILE))
+ #define XLAT_STR_45 STRINGIFY(O_LARGEFILE)
 #elif defined __sparc__
  XLAT(O_LARGEFILE),
+ #define XLAT_VAL_46 ((unsigned) (O_LARGEFILE))
+ #define XLAT_STR_46 STRINGIFY(O_LARGEFILE)
 #else
  XLAT(O_LARGEFILE),
+ #define XLAT_VAL_47 ((unsigned) (O_LARGEFILE))
+ #define XLAT_STR_47 STRINGIFY(O_LARGEFILE)
 #endif
 
 #if defined __hppa__
  XLAT(O_NOFOLLOW),
+ #define XLAT_VAL_48 ((unsigned) (O_NOFOLLOW))
+ #define XLAT_STR_48 STRINGIFY(O_NOFOLLOW)
 #elif defined __arm__ || defined __arm64__ || defined __aarch64__ || defined __m68k__ || defined __powerpc__
  XLAT(O_NOFOLLOW),
+ #define XLAT_VAL_49 ((unsigned) (O_NOFOLLOW))
+ #define XLAT_STR_49 STRINGIFY(O_NOFOLLOW)
 #elif defined __alpha__
  XLAT(O_NOFOLLOW),
+ #define XLAT_VAL_50 ((unsigned) (O_NOFOLLOW))
+ #define XLAT_STR_50 STRINGIFY(O_NOFOLLOW)
 #else
  XLAT(O_NOFOLLOW),
+ #define XLAT_VAL_51 ((unsigned) (O_NOFOLLOW))
+ #define XLAT_STR_51 STRINGIFY(O_NOFOLLOW)
 #endif
 
 #if defined __alpha__ || defined __hppa__
  XLAT(O_NOATIME),
+ #define XLAT_VAL_52 ((unsigned) (O_NOATIME))
+ #define XLAT_STR_52 STRINGIFY(O_NOATIME)
 #elif defined __sparc__
  XLAT(O_NOATIME),
+ #define XLAT_VAL_53 ((unsigned) (O_NOATIME))
+ #define XLAT_STR_53 STRINGIFY(O_NOATIME)
 #else
  XLAT(O_NOATIME),
+ #define XLAT_VAL_54 ((unsigned) (O_NOATIME))
+ #define XLAT_STR_54 STRINGIFY(O_NOATIME)
 #endif
 
 #if defined __alpha__ || defined __hppa__
  XLAT(O_CLOEXEC),
+ #define XLAT_VAL_55 ((unsigned) (O_CLOEXEC))
+ #define XLAT_STR_55 STRINGIFY(O_CLOEXEC)
 #elif defined __sparc__
  XLAT(O_CLOEXEC),
+ #define XLAT_VAL_56 ((unsigned) (O_CLOEXEC))
+ #define XLAT_STR_56 STRINGIFY(O_CLOEXEC)
 #else
  XLAT(O_CLOEXEC),
+ #define XLAT_VAL_57 ((unsigned) (O_CLOEXEC))
+ #define XLAT_STR_57 STRINGIFY(O_CLOEXEC)
 #endif
 
 #if defined __hppa__
  XLAT(O_PATH),
+ #define XLAT_VAL_58 ((unsigned) (O_PATH))
+ #define XLAT_STR_58 STRINGIFY(O_PATH)
 #elif defined __alpha__
  XLAT(O_PATH),
+ #define XLAT_VAL_59 ((unsigned) (O_PATH))
+ #define XLAT_STR_59 STRINGIFY(O_PATH)
 #elif defined __sparc__
  XLAT(O_PATH),
+ #define XLAT_VAL_60 ((unsigned) (O_PATH))
+ #define XLAT_STR_60 STRINGIFY(O_PATH)
 #else
  XLAT(O_PATH),
+ #define XLAT_VAL_61 ((unsigned) (O_PATH))
+ #define XLAT_STR_61 STRINGIFY(O_PATH)
 #endif
 
 
 #if defined(O_TMPFILE) || (defined(HAVE_DECL_O_TMPFILE) && HAVE_DECL_O_TMPFILE)
   XLAT(O_TMPFILE),
+ #define XLAT_VAL_62 ((unsigned) (O_TMPFILE))
+ #define XLAT_STR_62 STRINGIFY(O_TMPFILE)
 #endif
 
 #if defined __hppa__
  XLAT(__O_TMPFILE),
+ #define XLAT_VAL_63 ((unsigned) (__O_TMPFILE))
+ #define XLAT_STR_63 STRINGIFY(__O_TMPFILE)
 #elif defined __alpha__
  XLAT(__O_TMPFILE),
+ #define XLAT_VAL_64 ((unsigned) (__O_TMPFILE))
+ #define XLAT_STR_64 STRINGIFY(__O_TMPFILE)
 #elif defined __sparc__
  XLAT(__O_TMPFILE),
+ #define XLAT_VAL_65 ((unsigned) (__O_TMPFILE))
+ #define XLAT_STR_65 STRINGIFY(__O_TMPFILE)
 #else
  XLAT(__O_TMPFILE),
+ #define XLAT_VAL_66 ((unsigned) (__O_TMPFILE))
+ #define XLAT_STR_66 STRINGIFY(__O_TMPFILE)
 #endif
 
 #if defined __hppa__
  XLAT(O_DIRECTORY),
+ #define XLAT_VAL_67 ((unsigned) (O_DIRECTORY))
+ #define XLAT_STR_67 STRINGIFY(O_DIRECTORY)
 #elif defined __arm__ || defined __arm64__ || defined __aarch64__ || defined __m68k__ || defined __powerpc__
  XLAT(O_DIRECTORY),
+ #define XLAT_VAL_68 ((unsigned) (O_DIRECTORY))
+ #define XLAT_STR_68 STRINGIFY(O_DIRECTORY)
 #elif defined __alpha__
  XLAT(O_DIRECTORY),
+ #define XLAT_VAL_69 ((unsigned) (O_DIRECTORY))
+ #define XLAT_STR_69 STRINGIFY(O_DIRECTORY)
 #else
  XLAT(O_DIRECTORY),
+ #define XLAT_VAL_70 ((unsigned) (O_DIRECTORY))
+ #define XLAT_STR_70 STRINGIFY(O_DIRECTORY)
 #endif
 
 #if defined __sparc__
  XLAT(FASYNC),
+ #define XLAT_VAL_71 ((unsigned) (FASYNC))
+ #define XLAT_STR_71 STRINGIFY(FASYNC)
 #elif defined __mips__
  XLAT(FASYNC),
+ #define XLAT_VAL_72 ((unsigned) (FASYNC))
+ #define XLAT_STR_72 STRINGIFY(FASYNC)
 #else
  XLAT(FASYNC),
+ #define XLAT_VAL_73 ((unsigned) (FASYNC))
+ #define XLAT_STR_73 STRINGIFY(FASYNC)
 #endif
- XLAT_END
 };
+const struct xlat open_mode_flags[1] = { {
+ .data = open_mode_flags_xdata,
+ .size = ARRAY_SIZE(open_mode_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+#  ifdef XLAT_VAL_30
+  | XLAT_VAL_30
+#  endif
+#  ifdef XLAT_VAL_31
+  | XLAT_VAL_31
+#  endif
+#  ifdef XLAT_VAL_32
+  | XLAT_VAL_32
+#  endif
+#  ifdef XLAT_VAL_33
+  | XLAT_VAL_33
+#  endif
+#  ifdef XLAT_VAL_34
+  | XLAT_VAL_34
+#  endif
+#  ifdef XLAT_VAL_35
+  | XLAT_VAL_35
+#  endif
+#  ifdef XLAT_VAL_36
+  | XLAT_VAL_36
+#  endif
+#  ifdef XLAT_VAL_37
+  | XLAT_VAL_37
+#  endif
+#  ifdef XLAT_VAL_38
+  | XLAT_VAL_38
+#  endif
+#  ifdef XLAT_VAL_39
+  | XLAT_VAL_39
+#  endif
+#  ifdef XLAT_VAL_40
+  | XLAT_VAL_40
+#  endif
+#  ifdef XLAT_VAL_41
+  | XLAT_VAL_41
+#  endif
+#  ifdef XLAT_VAL_42
+  | XLAT_VAL_42
+#  endif
+#  ifdef XLAT_VAL_43
+  | XLAT_VAL_43
+#  endif
+#  ifdef XLAT_VAL_44
+  | XLAT_VAL_44
+#  endif
+#  ifdef XLAT_VAL_45
+  | XLAT_VAL_45
+#  endif
+#  ifdef XLAT_VAL_46
+  | XLAT_VAL_46
+#  endif
+#  ifdef XLAT_VAL_47
+  | XLAT_VAL_47
+#  endif
+#  ifdef XLAT_VAL_48
+  | XLAT_VAL_48
+#  endif
+#  ifdef XLAT_VAL_49
+  | XLAT_VAL_49
+#  endif
+#  ifdef XLAT_VAL_50
+  | XLAT_VAL_50
+#  endif
+#  ifdef XLAT_VAL_51
+  | XLAT_VAL_51
+#  endif
+#  ifdef XLAT_VAL_52
+  | XLAT_VAL_52
+#  endif
+#  ifdef XLAT_VAL_53
+  | XLAT_VAL_53
+#  endif
+#  ifdef XLAT_VAL_54
+  | XLAT_VAL_54
+#  endif
+#  ifdef XLAT_VAL_55
+  | XLAT_VAL_55
+#  endif
+#  ifdef XLAT_VAL_56
+  | XLAT_VAL_56
+#  endif
+#  ifdef XLAT_VAL_57
+  | XLAT_VAL_57
+#  endif
+#  ifdef XLAT_VAL_58
+  | XLAT_VAL_58
+#  endif
+#  ifdef XLAT_VAL_59
+  | XLAT_VAL_59
+#  endif
+#  ifdef XLAT_VAL_60
+  | XLAT_VAL_60
+#  endif
+#  ifdef XLAT_VAL_61
+  | XLAT_VAL_61
+#  endif
+#  ifdef XLAT_VAL_62
+  | XLAT_VAL_62
+#  endif
+#  ifdef XLAT_VAL_63
+  | XLAT_VAL_63
+#  endif
+#  ifdef XLAT_VAL_64
+  | XLAT_VAL_64
+#  endif
+#  ifdef XLAT_VAL_65
+  | XLAT_VAL_65
+#  endif
+#  ifdef XLAT_VAL_66
+  | XLAT_VAL_66
+#  endif
+#  ifdef XLAT_VAL_67
+  | XLAT_VAL_67
+#  endif
+#  ifdef XLAT_VAL_68
+  | XLAT_VAL_68
+#  endif
+#  ifdef XLAT_VAL_69
+  | XLAT_VAL_69
+#  endif
+#  ifdef XLAT_VAL_70
+  | XLAT_VAL_70
+#  endif
+#  ifdef XLAT_VAL_71
+  | XLAT_VAL_71
+#  endif
+#  ifdef XLAT_VAL_72
+  | XLAT_VAL_72
+#  endif
+#  ifdef XLAT_VAL_73
+  | XLAT_VAL_73
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+#  ifdef XLAT_STR_30
+  + sizeof(XLAT_STR_30)
+#  endif
+#  ifdef XLAT_STR_31
+  + sizeof(XLAT_STR_31)
+#  endif
+#  ifdef XLAT_STR_32
+  + sizeof(XLAT_STR_32)
+#  endif
+#  ifdef XLAT_STR_33
+  + sizeof(XLAT_STR_33)
+#  endif
+#  ifdef XLAT_STR_34
+  + sizeof(XLAT_STR_34)
+#  endif
+#  ifdef XLAT_STR_35
+  + sizeof(XLAT_STR_35)
+#  endif
+#  ifdef XLAT_STR_36
+  + sizeof(XLAT_STR_36)
+#  endif
+#  ifdef XLAT_STR_37
+  + sizeof(XLAT_STR_37)
+#  endif
+#  ifdef XLAT_STR_38
+  + sizeof(XLAT_STR_38)
+#  endif
+#  ifdef XLAT_STR_39
+  + sizeof(XLAT_STR_39)
+#  endif
+#  ifdef XLAT_STR_40
+  + sizeof(XLAT_STR_40)
+#  endif
+#  ifdef XLAT_STR_41
+  + sizeof(XLAT_STR_41)
+#  endif
+#  ifdef XLAT_STR_42
+  + sizeof(XLAT_STR_42)
+#  endif
+#  ifdef XLAT_STR_43
+  + sizeof(XLAT_STR_43)
+#  endif
+#  ifdef XLAT_STR_44
+  + sizeof(XLAT_STR_44)
+#  endif
+#  ifdef XLAT_STR_45
+  + sizeof(XLAT_STR_45)
+#  endif
+#  ifdef XLAT_STR_46
+  + sizeof(XLAT_STR_46)
+#  endif
+#  ifdef XLAT_STR_47
+  + sizeof(XLAT_STR_47)
+#  endif
+#  ifdef XLAT_STR_48
+  + sizeof(XLAT_STR_48)
+#  endif
+#  ifdef XLAT_STR_49
+  + sizeof(XLAT_STR_49)
+#  endif
+#  ifdef XLAT_STR_50
+  + sizeof(XLAT_STR_50)
+#  endif
+#  ifdef XLAT_STR_51
+  + sizeof(XLAT_STR_51)
+#  endif
+#  ifdef XLAT_STR_52
+  + sizeof(XLAT_STR_52)
+#  endif
+#  ifdef XLAT_STR_53
+  + sizeof(XLAT_STR_53)
+#  endif
+#  ifdef XLAT_STR_54
+  + sizeof(XLAT_STR_54)
+#  endif
+#  ifdef XLAT_STR_55
+  + sizeof(XLAT_STR_55)
+#  endif
+#  ifdef XLAT_STR_56
+  + sizeof(XLAT_STR_56)
+#  endif
+#  ifdef XLAT_STR_57
+  + sizeof(XLAT_STR_57)
+#  endif
+#  ifdef XLAT_STR_58
+  + sizeof(XLAT_STR_58)
+#  endif
+#  ifdef XLAT_STR_59
+  + sizeof(XLAT_STR_59)
+#  endif
+#  ifdef XLAT_STR_60
+  + sizeof(XLAT_STR_60)
+#  endif
+#  ifdef XLAT_STR_61
+  + sizeof(XLAT_STR_61)
+#  endif
+#  ifdef XLAT_STR_62
+  + sizeof(XLAT_STR_62)
+#  endif
+#  ifdef XLAT_STR_63
+  + sizeof(XLAT_STR_63)
+#  endif
+#  ifdef XLAT_STR_64
+  + sizeof(XLAT_STR_64)
+#  endif
+#  ifdef XLAT_STR_65
+  + sizeof(XLAT_STR_65)
+#  endif
+#  ifdef XLAT_STR_66
+  + sizeof(XLAT_STR_66)
+#  endif
+#  ifdef XLAT_STR_67
+  + sizeof(XLAT_STR_67)
+#  endif
+#  ifdef XLAT_STR_68
+  + sizeof(XLAT_STR_68)
+#  endif
+#  ifdef XLAT_STR_69
+  + sizeof(XLAT_STR_69)
+#  endif
+#  ifdef XLAT_STR_70
+  + sizeof(XLAT_STR_70)
+#  endif
+#  ifdef XLAT_STR_71
+  + sizeof(XLAT_STR_71)
+#  endif
+#  ifdef XLAT_STR_72
+  + sizeof(XLAT_STR_72)
+#  endif
+#  ifdef XLAT_STR_73
+  + sizeof(XLAT_STR_73)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
+#  undef XLAT_STR_30
+#  undef XLAT_VAL_30
+#  undef XLAT_STR_31
+#  undef XLAT_VAL_31
+#  undef XLAT_STR_32
+#  undef XLAT_VAL_32
+#  undef XLAT_STR_33
+#  undef XLAT_VAL_33
+#  undef XLAT_STR_34
+#  undef XLAT_VAL_34
+#  undef XLAT_STR_35
+#  undef XLAT_VAL_35
+#  undef XLAT_STR_36
+#  undef XLAT_VAL_36
+#  undef XLAT_STR_37
+#  undef XLAT_VAL_37
+#  undef XLAT_STR_38
+#  undef XLAT_VAL_38
+#  undef XLAT_STR_39
+#  undef XLAT_VAL_39
+#  undef XLAT_STR_40
+#  undef XLAT_VAL_40
+#  undef XLAT_STR_41
+#  undef XLAT_VAL_41
+#  undef XLAT_STR_42
+#  undef XLAT_VAL_42
+#  undef XLAT_STR_43
+#  undef XLAT_VAL_43
+#  undef XLAT_STR_44
+#  undef XLAT_VAL_44
+#  undef XLAT_STR_45
+#  undef XLAT_VAL_45
+#  undef XLAT_STR_46
+#  undef XLAT_VAL_46
+#  undef XLAT_STR_47
+#  undef XLAT_VAL_47
+#  undef XLAT_STR_48
+#  undef XLAT_VAL_48
+#  undef XLAT_STR_49
+#  undef XLAT_VAL_49
+#  undef XLAT_STR_50
+#  undef XLAT_VAL_50
+#  undef XLAT_STR_51
+#  undef XLAT_VAL_51
+#  undef XLAT_STR_52
+#  undef XLAT_VAL_52
+#  undef XLAT_STR_53
+#  undef XLAT_VAL_53
+#  undef XLAT_STR_54
+#  undef XLAT_VAL_54
+#  undef XLAT_STR_55
+#  undef XLAT_VAL_55
+#  undef XLAT_STR_56
+#  undef XLAT_VAL_56
+#  undef XLAT_STR_57
+#  undef XLAT_VAL_57
+#  undef XLAT_STR_58
+#  undef XLAT_VAL_58
+#  undef XLAT_STR_59
+#  undef XLAT_VAL_59
+#  undef XLAT_STR_60
+#  undef XLAT_VAL_60
+#  undef XLAT_STR_61
+#  undef XLAT_VAL_61
+#  undef XLAT_STR_62
+#  undef XLAT_VAL_62
+#  undef XLAT_STR_63
+#  undef XLAT_VAL_63
+#  undef XLAT_STR_64
+#  undef XLAT_VAL_64
+#  undef XLAT_STR_65
+#  undef XLAT_VAL_65
+#  undef XLAT_STR_66
+#  undef XLAT_VAL_66
+#  undef XLAT_STR_67
+#  undef XLAT_VAL_67
+#  undef XLAT_STR_68
+#  undef XLAT_VAL_68
+#  undef XLAT_STR_69
+#  undef XLAT_VAL_69
+#  undef XLAT_STR_70
+#  undef XLAT_VAL_70
+#  undef XLAT_STR_71
+#  undef XLAT_VAL_71
+#  undef XLAT_STR_72
+#  undef XLAT_VAL_72
+#  undef XLAT_STR_73
+#  undef XLAT_VAL_73
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/open_resolve_flags.h b/xlat/open_resolve_flags.h
new file mode 100644 (file)
index 0000000..ced854a
--- /dev/null
@@ -0,0 +1,120 @@
+/* Generated by ./xlat/gen.sh from ./xlat/open_resolve_flags.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(RESOLVE_NO_XDEV) || (defined(HAVE_DECL_RESOLVE_NO_XDEV) && HAVE_DECL_RESOLVE_NO_XDEV)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((RESOLVE_NO_XDEV) == (0x01), "RESOLVE_NO_XDEV != 0x01");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define RESOLVE_NO_XDEV 0x01
+#endif
+#if defined(RESOLVE_NO_MAGICLINKS) || (defined(HAVE_DECL_RESOLVE_NO_MAGICLINKS) && HAVE_DECL_RESOLVE_NO_MAGICLINKS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((RESOLVE_NO_MAGICLINKS) == (0x02), "RESOLVE_NO_MAGICLINKS != 0x02");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define RESOLVE_NO_MAGICLINKS 0x02
+#endif
+#if defined(RESOLVE_NO_SYMLINKS) || (defined(HAVE_DECL_RESOLVE_NO_SYMLINKS) && HAVE_DECL_RESOLVE_NO_SYMLINKS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((RESOLVE_NO_SYMLINKS) == (0x04), "RESOLVE_NO_SYMLINKS != 0x04");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define RESOLVE_NO_SYMLINKS 0x04
+#endif
+#if defined(RESOLVE_BENEATH) || (defined(HAVE_DECL_RESOLVE_BENEATH) && HAVE_DECL_RESOLVE_BENEATH)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((RESOLVE_BENEATH) == (0x08), "RESOLVE_BENEATH != 0x08");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define RESOLVE_BENEATH 0x08
+#endif
+#if defined(RESOLVE_IN_ROOT) || (defined(HAVE_DECL_RESOLVE_IN_ROOT) && HAVE_DECL_RESOLVE_IN_ROOT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((RESOLVE_IN_ROOT) == (0x10), "RESOLVE_IN_ROOT != 0x10");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define RESOLVE_IN_ROOT 0x10
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat open_resolve_flags in mpers mode
+
+# else
+
+static const struct xlat_data open_resolve_flags_xdata[] = {
+ XLAT(RESOLVE_NO_XDEV),
+ #define XLAT_VAL_0 ((unsigned) (RESOLVE_NO_XDEV))
+ #define XLAT_STR_0 STRINGIFY(RESOLVE_NO_XDEV)
+ XLAT(RESOLVE_NO_MAGICLINKS),
+ #define XLAT_VAL_1 ((unsigned) (RESOLVE_NO_MAGICLINKS))
+ #define XLAT_STR_1 STRINGIFY(RESOLVE_NO_MAGICLINKS)
+ XLAT(RESOLVE_NO_SYMLINKS),
+ #define XLAT_VAL_2 ((unsigned) (RESOLVE_NO_SYMLINKS))
+ #define XLAT_STR_2 STRINGIFY(RESOLVE_NO_SYMLINKS)
+ XLAT(RESOLVE_BENEATH),
+ #define XLAT_VAL_3 ((unsigned) (RESOLVE_BENEATH))
+ #define XLAT_STR_3 STRINGIFY(RESOLVE_BENEATH)
+ XLAT(RESOLVE_IN_ROOT),
+ #define XLAT_VAL_4 ((unsigned) (RESOLVE_IN_ROOT))
+ #define XLAT_STR_4 STRINGIFY(RESOLVE_IN_ROOT)
+};
+static
+const struct xlat open_resolve_flags[1] = { {
+ .data = open_resolve_flags_xdata,
+ .size = ARRAY_SIZE(open_resolve_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/open_resolve_flags.in b/xlat/open_resolve_flags.in
new file mode 100644 (file)
index 0000000..22d397a
--- /dev/null
@@ -0,0 +1,5 @@
+RESOLVE_NO_XDEV                0x01
+RESOLVE_NO_MAGICLINKS  0x02
+RESOLVE_NO_SYMLINKS    0x04
+RESOLVE_BENEATH                0x08
+RESOLVE_IN_ROOT                0x10
diff --git a/xlat/open_tree_flags.h b/xlat/open_tree_flags.h
new file mode 100644 (file)
index 0000000..c8838b9
--- /dev/null
@@ -0,0 +1,178 @@
+/* Generated by ./xlat/gen.sh from ./xlat/open_tree_flags.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(OPEN_TREE_CLONE) || (defined(HAVE_DECL_OPEN_TREE_CLONE) && HAVE_DECL_OPEN_TREE_CLONE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((OPEN_TREE_CLONE) == (1), "OPEN_TREE_CLONE != 1");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define OPEN_TREE_CLONE 1
+#endif
+#if defined OPEN_TREE_CLOEXEC || defined O_CLOEXEC
+#if defined(OPEN_TREE_CLOEXEC) || (defined(HAVE_DECL_OPEN_TREE_CLOEXEC) && HAVE_DECL_OPEN_TREE_CLOEXEC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((OPEN_TREE_CLOEXEC) == (O_CLOEXEC), "OPEN_TREE_CLOEXEC != O_CLOEXEC");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define OPEN_TREE_CLOEXEC O_CLOEXEC
+#endif
+#endif
+#if defined(AT_SYMLINK_NOFOLLOW) || (defined(HAVE_DECL_AT_SYMLINK_NOFOLLOW) && HAVE_DECL_AT_SYMLINK_NOFOLLOW)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AT_SYMLINK_NOFOLLOW) == (0x100), "AT_SYMLINK_NOFOLLOW != 0x100");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AT_SYMLINK_NOFOLLOW 0x100
+#endif
+#if defined(AT_REMOVEDIR) || (defined(HAVE_DECL_AT_REMOVEDIR) && HAVE_DECL_AT_REMOVEDIR)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AT_REMOVEDIR) == (0x200), "AT_REMOVEDIR != 0x200");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AT_REMOVEDIR 0x200
+#endif
+#if defined(AT_SYMLINK_FOLLOW) || (defined(HAVE_DECL_AT_SYMLINK_FOLLOW) && HAVE_DECL_AT_SYMLINK_FOLLOW)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AT_SYMLINK_FOLLOW) == (0x400), "AT_SYMLINK_FOLLOW != 0x400");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AT_SYMLINK_FOLLOW 0x400
+#endif
+#if defined(AT_NO_AUTOMOUNT) || (defined(HAVE_DECL_AT_NO_AUTOMOUNT) && HAVE_DECL_AT_NO_AUTOMOUNT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AT_NO_AUTOMOUNT) == (0x800), "AT_NO_AUTOMOUNT != 0x800");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AT_NO_AUTOMOUNT 0x800
+#endif
+#if defined(AT_EMPTY_PATH) || (defined(HAVE_DECL_AT_EMPTY_PATH) && HAVE_DECL_AT_EMPTY_PATH)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AT_EMPTY_PATH) == (0x1000), "AT_EMPTY_PATH != 0x1000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AT_EMPTY_PATH 0x1000
+#endif
+#if defined(AT_RECURSIVE) || (defined(HAVE_DECL_AT_RECURSIVE) && HAVE_DECL_AT_RECURSIVE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((AT_RECURSIVE) == (0x8000), "AT_RECURSIVE != 0x8000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define AT_RECURSIVE 0x8000
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat open_tree_flags in mpers mode
+
+# else
+
+static const struct xlat_data open_tree_flags_xdata[] = {
+ XLAT(OPEN_TREE_CLONE),
+ #define XLAT_VAL_0 ((unsigned) (OPEN_TREE_CLONE))
+ #define XLAT_STR_0 STRINGIFY(OPEN_TREE_CLONE)
+#if defined OPEN_TREE_CLOEXEC || defined O_CLOEXEC
+ XLAT(OPEN_TREE_CLOEXEC),
+ #define XLAT_VAL_1 ((unsigned) (OPEN_TREE_CLOEXEC))
+ #define XLAT_STR_1 STRINGIFY(OPEN_TREE_CLOEXEC)
+#endif
+ XLAT(AT_SYMLINK_NOFOLLOW),
+ #define XLAT_VAL_2 ((unsigned) (AT_SYMLINK_NOFOLLOW))
+ #define XLAT_STR_2 STRINGIFY(AT_SYMLINK_NOFOLLOW)
+ XLAT(AT_REMOVEDIR),
+ #define XLAT_VAL_3 ((unsigned) (AT_REMOVEDIR))
+ #define XLAT_STR_3 STRINGIFY(AT_REMOVEDIR)
+ XLAT(AT_SYMLINK_FOLLOW),
+ #define XLAT_VAL_4 ((unsigned) (AT_SYMLINK_FOLLOW))
+ #define XLAT_STR_4 STRINGIFY(AT_SYMLINK_FOLLOW)
+ XLAT(AT_NO_AUTOMOUNT),
+ #define XLAT_VAL_5 ((unsigned) (AT_NO_AUTOMOUNT))
+ #define XLAT_STR_5 STRINGIFY(AT_NO_AUTOMOUNT)
+ XLAT(AT_EMPTY_PATH),
+ #define XLAT_VAL_6 ((unsigned) (AT_EMPTY_PATH))
+ #define XLAT_STR_6 STRINGIFY(AT_EMPTY_PATH)
+ XLAT(AT_RECURSIVE),
+ #define XLAT_VAL_7 ((unsigned) (AT_RECURSIVE))
+ #define XLAT_STR_7 STRINGIFY(AT_RECURSIVE)
+};
+static
+const struct xlat open_tree_flags[1] = { {
+ .data = open_tree_flags_xdata,
+ .size = ARRAY_SIZE(open_tree_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/open_tree_flags.in b/xlat/open_tree_flags.in
new file mode 100644 (file)
index 0000000..3080dc0
--- /dev/null
@@ -0,0 +1,10 @@
+OPEN_TREE_CLONE                1
+#if defined OPEN_TREE_CLOEXEC || defined O_CLOEXEC
+OPEN_TREE_CLOEXEC      O_CLOEXEC
+#endif
+AT_SYMLINK_NOFOLLOW    0x100
+AT_REMOVEDIR           0x200
+AT_SYMLINK_FOLLOW      0x400
+AT_NO_AUTOMOUNT                0x800
+AT_EMPTY_PATH          0x1000
+AT_RECURSIVE           0x8000
index 90253b89d70777bf17cd156b2dd7856df7df11fb..262edcd0ff25d1120fad80196ce89f599fadc384 100644 (file)
 
 # else
 
-static
-const struct xlat packet_diag_attrs[] = {
+static const struct xlat_data packet_diag_attrs_xdata[] = {
  XLAT(PACKET_DIAG_INFO),
+ #define XLAT_VAL_0 ((unsigned) (PACKET_DIAG_INFO))
+ #define XLAT_STR_0 STRINGIFY(PACKET_DIAG_INFO)
  XLAT(PACKET_DIAG_MCLIST),
+ #define XLAT_VAL_1 ((unsigned) (PACKET_DIAG_MCLIST))
+ #define XLAT_STR_1 STRINGIFY(PACKET_DIAG_MCLIST)
  XLAT(PACKET_DIAG_RX_RING),
+ #define XLAT_VAL_2 ((unsigned) (PACKET_DIAG_RX_RING))
+ #define XLAT_STR_2 STRINGIFY(PACKET_DIAG_RX_RING)
  XLAT(PACKET_DIAG_TX_RING),
+ #define XLAT_VAL_3 ((unsigned) (PACKET_DIAG_TX_RING))
+ #define XLAT_STR_3 STRINGIFY(PACKET_DIAG_TX_RING)
  XLAT(PACKET_DIAG_FANOUT),
+ #define XLAT_VAL_4 ((unsigned) (PACKET_DIAG_FANOUT))
+ #define XLAT_STR_4 STRINGIFY(PACKET_DIAG_FANOUT)
  XLAT(PACKET_DIAG_UID),
+ #define XLAT_VAL_5 ((unsigned) (PACKET_DIAG_UID))
+ #define XLAT_STR_5 STRINGIFY(PACKET_DIAG_UID)
  XLAT(PACKET_DIAG_MEMINFO),
+ #define XLAT_VAL_6 ((unsigned) (PACKET_DIAG_MEMINFO))
+ #define XLAT_STR_6 STRINGIFY(PACKET_DIAG_MEMINFO)
  XLAT(PACKET_DIAG_FILTER),
- XLAT_END
+ #define XLAT_VAL_7 ((unsigned) (PACKET_DIAG_FILTER))
+ #define XLAT_STR_7 STRINGIFY(PACKET_DIAG_FILTER)
 };
+static
+const struct xlat packet_diag_attrs[1] = { {
+ .data = packet_diag_attrs_xdata,
+ .size = ARRAY_SIZE(packet_diag_attrs_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 8a083da74ee10bb11b0164ddd942926d176833f9..0790438d0215c4fb5f2ad09ab02415bf52019326 100644 (file)
 
 # else
 
-static
-const struct xlat packet_diag_info_flags[] = {
+static const struct xlat_data packet_diag_info_flags_xdata[] = {
 #if defined(PDI_RUNNING) || (defined(HAVE_DECL_PDI_RUNNING) && HAVE_DECL_PDI_RUNNING)
   XLAT(PDI_RUNNING),
+ #define XLAT_VAL_0 ((unsigned) (PDI_RUNNING))
+ #define XLAT_STR_0 STRINGIFY(PDI_RUNNING)
 #endif
 #if defined(PDI_AUXDATA) || (defined(HAVE_DECL_PDI_AUXDATA) && HAVE_DECL_PDI_AUXDATA)
   XLAT(PDI_AUXDATA),
+ #define XLAT_VAL_1 ((unsigned) (PDI_AUXDATA))
+ #define XLAT_STR_1 STRINGIFY(PDI_AUXDATA)
 #endif
 #if defined(PDI_ORIGDEV) || (defined(HAVE_DECL_PDI_ORIGDEV) && HAVE_DECL_PDI_ORIGDEV)
   XLAT(PDI_ORIGDEV),
+ #define XLAT_VAL_2 ((unsigned) (PDI_ORIGDEV))
+ #define XLAT_STR_2 STRINGIFY(PDI_ORIGDEV)
 #endif
 #if defined(PDI_VNETHDR) || (defined(HAVE_DECL_PDI_VNETHDR) && HAVE_DECL_PDI_VNETHDR)
   XLAT(PDI_VNETHDR),
+ #define XLAT_VAL_3 ((unsigned) (PDI_VNETHDR))
+ #define XLAT_STR_3 STRINGIFY(PDI_VNETHDR)
 #endif
 #if defined(PDI_LOSS) || (defined(HAVE_DECL_PDI_LOSS) && HAVE_DECL_PDI_LOSS)
   XLAT(PDI_LOSS),
+ #define XLAT_VAL_4 ((unsigned) (PDI_LOSS))
+ #define XLAT_STR_4 STRINGIFY(PDI_LOSS)
 #endif
- XLAT_END
 };
+static
+const struct xlat packet_diag_info_flags[1] = { {
+ .data = packet_diag_info_flags_xdata,
+ .size = ARRAY_SIZE(packet_diag_info_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 40df97335ca703455c232eb85b0e37c71ff8f378..6345965379bb4475ae3f2aee6934b3f46a7b15ba 100644 (file)
 
 # else
 
-static
-const struct xlat packet_diag_show[] = {
+static const struct xlat_data packet_diag_show_xdata[] = {
 #if defined(PACKET_SHOW_INFO) || (defined(HAVE_DECL_PACKET_SHOW_INFO) && HAVE_DECL_PACKET_SHOW_INFO)
   XLAT(PACKET_SHOW_INFO),
+ #define XLAT_VAL_0 ((unsigned) (PACKET_SHOW_INFO))
+ #define XLAT_STR_0 STRINGIFY(PACKET_SHOW_INFO)
 #endif
 #if defined(PACKET_SHOW_MCLIST) || (defined(HAVE_DECL_PACKET_SHOW_MCLIST) && HAVE_DECL_PACKET_SHOW_MCLIST)
   XLAT(PACKET_SHOW_MCLIST),
+ #define XLAT_VAL_1 ((unsigned) (PACKET_SHOW_MCLIST))
+ #define XLAT_STR_1 STRINGIFY(PACKET_SHOW_MCLIST)
 #endif
 #if defined(PACKET_SHOW_RING_CFG) || (defined(HAVE_DECL_PACKET_SHOW_RING_CFG) && HAVE_DECL_PACKET_SHOW_RING_CFG)
   XLAT(PACKET_SHOW_RING_CFG),
+ #define XLAT_VAL_2 ((unsigned) (PACKET_SHOW_RING_CFG))
+ #define XLAT_STR_2 STRINGIFY(PACKET_SHOW_RING_CFG)
 #endif
 #if defined(PACKET_SHOW_FANOUT) || (defined(HAVE_DECL_PACKET_SHOW_FANOUT) && HAVE_DECL_PACKET_SHOW_FANOUT)
   XLAT(PACKET_SHOW_FANOUT),
+ #define XLAT_VAL_3 ((unsigned) (PACKET_SHOW_FANOUT))
+ #define XLAT_STR_3 STRINGIFY(PACKET_SHOW_FANOUT)
 #endif
 #if defined(PACKET_SHOW_MEMINFO) || (defined(HAVE_DECL_PACKET_SHOW_MEMINFO) && HAVE_DECL_PACKET_SHOW_MEMINFO)
   XLAT(PACKET_SHOW_MEMINFO),
+ #define XLAT_VAL_4 ((unsigned) (PACKET_SHOW_MEMINFO))
+ #define XLAT_STR_4 STRINGIFY(PACKET_SHOW_MEMINFO)
 #endif
 #if defined(PACKET_SHOW_FILTER) || (defined(HAVE_DECL_PACKET_SHOW_FILTER) && HAVE_DECL_PACKET_SHOW_FILTER)
   XLAT(PACKET_SHOW_FILTER),
+ #define XLAT_VAL_5 ((unsigned) (PACKET_SHOW_FILTER))
+ #define XLAT_STR_5 STRINGIFY(PACKET_SHOW_FILTER)
 #endif
- XLAT_END
 };
+static
+const struct xlat packet_diag_show[1] = { {
+ .data = packet_diag_show_xdata,
+ .size = ARRAY_SIZE(packet_diag_show_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index c1448d37febe9163e1ab4e6708d3acbfb6b9a91c..2424fb8935908b8452c6ba83358559b8ffe2f735 100644 (file)
 
 # else
 
-static
-const struct xlat packet_mreq_type[] = {
+static const struct xlat_data packet_mreq_type_xdata[] = {
 #if defined(PACKET_MR_MULTICAST) || (defined(HAVE_DECL_PACKET_MR_MULTICAST) && HAVE_DECL_PACKET_MR_MULTICAST)
   XLAT(PACKET_MR_MULTICAST),
+ #define XLAT_VAL_0 ((unsigned) (PACKET_MR_MULTICAST))
+ #define XLAT_STR_0 STRINGIFY(PACKET_MR_MULTICAST)
 #endif
 #if defined(PACKET_MR_PROMISC) || (defined(HAVE_DECL_PACKET_MR_PROMISC) && HAVE_DECL_PACKET_MR_PROMISC)
   XLAT(PACKET_MR_PROMISC),
+ #define XLAT_VAL_1 ((unsigned) (PACKET_MR_PROMISC))
+ #define XLAT_STR_1 STRINGIFY(PACKET_MR_PROMISC)
 #endif
 #if defined(PACKET_MR_ALLMULTI) || (defined(HAVE_DECL_PACKET_MR_ALLMULTI) && HAVE_DECL_PACKET_MR_ALLMULTI)
   XLAT(PACKET_MR_ALLMULTI),
+ #define XLAT_VAL_2 ((unsigned) (PACKET_MR_ALLMULTI))
+ #define XLAT_STR_2 STRINGIFY(PACKET_MR_ALLMULTI)
 #endif
 #if defined(PACKET_MR_UNICAST) || (defined(HAVE_DECL_PACKET_MR_UNICAST) && HAVE_DECL_PACKET_MR_UNICAST)
   XLAT(PACKET_MR_UNICAST),
+ #define XLAT_VAL_3 ((unsigned) (PACKET_MR_UNICAST))
+ #define XLAT_STR_3 STRINGIFY(PACKET_MR_UNICAST)
 #endif
- XLAT_END
 };
+static
+const struct xlat packet_mreq_type[1] = { {
+ .data = packet_mreq_type_xdata,
+ .size = ARRAY_SIZE(packet_mreq_type_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index fa876d3a5c4af8ebbf7689576d226366522661dc..1accf32653d2b831365c89751e5f1d7bd465d525 100644 (file)
@@ -45,6 +45,13 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define PERF_ATTR_SIZE_VER5 112
 #endif
+#if defined(PERF_ATTR_SIZE_VER6) || (defined(HAVE_DECL_PERF_ATTR_SIZE_VER6) && HAVE_DECL_PERF_ATTR_SIZE_VER6)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PERF_ATTR_SIZE_VER6) == (120), "PERF_ATTR_SIZE_VER6 != 120");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PERF_ATTR_SIZE_VER6 120
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
@@ -54,17 +61,96 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat perf_attr_size[] = {
+static const struct xlat_data perf_attr_size_xdata[] = {
  XLAT(PERF_ATTR_SIZE_VER0),
+ #define XLAT_VAL_0 ((unsigned) (PERF_ATTR_SIZE_VER0))
+ #define XLAT_STR_0 STRINGIFY(PERF_ATTR_SIZE_VER0)
  XLAT(PERF_ATTR_SIZE_VER1),
+ #define XLAT_VAL_1 ((unsigned) (PERF_ATTR_SIZE_VER1))
+ #define XLAT_STR_1 STRINGIFY(PERF_ATTR_SIZE_VER1)
  XLAT(PERF_ATTR_SIZE_VER2),
+ #define XLAT_VAL_2 ((unsigned) (PERF_ATTR_SIZE_VER2))
+ #define XLAT_STR_2 STRINGIFY(PERF_ATTR_SIZE_VER2)
  XLAT(PERF_ATTR_SIZE_VER3),
+ #define XLAT_VAL_3 ((unsigned) (PERF_ATTR_SIZE_VER3))
+ #define XLAT_STR_3 STRINGIFY(PERF_ATTR_SIZE_VER3)
  XLAT(PERF_ATTR_SIZE_VER4),
+ #define XLAT_VAL_4 ((unsigned) (PERF_ATTR_SIZE_VER4))
+ #define XLAT_STR_4 STRINGIFY(PERF_ATTR_SIZE_VER4)
  XLAT(PERF_ATTR_SIZE_VER5),
- XLAT_END
+ #define XLAT_VAL_5 ((unsigned) (PERF_ATTR_SIZE_VER5))
+ #define XLAT_STR_5 STRINGIFY(PERF_ATTR_SIZE_VER5)
+ XLAT(PERF_ATTR_SIZE_VER6),
+ #define XLAT_VAL_6 ((unsigned) (PERF_ATTR_SIZE_VER6))
+ #define XLAT_STR_6 STRINGIFY(PERF_ATTR_SIZE_VER6)
 };
+static
+const struct xlat perf_attr_size[1] = { {
+ .data = perf_attr_size_xdata,
+ .size = ARRAY_SIZE(perf_attr_size_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index d597cd1d82291b99ea098e72bd7f598ea66e7318..9b5cf98949cac43c5a15d63565802f8e9a7926b5 100644 (file)
@@ -4,3 +4,4 @@ PERF_ATTR_SIZE_VER2 80
 PERF_ATTR_SIZE_VER3 96
 PERF_ATTR_SIZE_VER4 104
 PERF_ATTR_SIZE_VER5 112
+PERF_ATTR_SIZE_VER6 120
index 3632fa82110cc18f94a98e36a83ee04f873f9d47..39aa013f058bf78a9549bef293906c52e250202d 100644 (file)
@@ -122,6 +122,13 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define PERF_SAMPLE_BRANCH_TYPE_SAVE 1 << 16
 #endif
+#if defined(PERF_SAMPLE_BRANCH_HW_INDEX) || (defined(HAVE_DECL_PERF_SAMPLE_BRANCH_HW_INDEX) && HAVE_DECL_PERF_SAMPLE_BRANCH_HW_INDEX)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PERF_SAMPLE_BRANCH_HW_INDEX) == (1 << 17), "PERF_SAMPLE_BRANCH_HW_INDEX != 1 << 17");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PERF_SAMPLE_BRANCH_HW_INDEX 1 << 17
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
@@ -131,28 +138,217 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat perf_branch_sample_type[] = {
+static const struct xlat_data perf_branch_sample_type_xdata[] = {
  XLAT(PERF_SAMPLE_BRANCH_USER),
+ #define XLAT_VAL_0 ((unsigned) (PERF_SAMPLE_BRANCH_USER))
+ #define XLAT_STR_0 STRINGIFY(PERF_SAMPLE_BRANCH_USER)
  XLAT(PERF_SAMPLE_BRANCH_KERNEL),
+ #define XLAT_VAL_1 ((unsigned) (PERF_SAMPLE_BRANCH_KERNEL))
+ #define XLAT_STR_1 STRINGIFY(PERF_SAMPLE_BRANCH_KERNEL)
  XLAT(PERF_SAMPLE_BRANCH_HV),
+ #define XLAT_VAL_2 ((unsigned) (PERF_SAMPLE_BRANCH_HV))
+ #define XLAT_STR_2 STRINGIFY(PERF_SAMPLE_BRANCH_HV)
  XLAT(PERF_SAMPLE_BRANCH_ANY),
+ #define XLAT_VAL_3 ((unsigned) (PERF_SAMPLE_BRANCH_ANY))
+ #define XLAT_STR_3 STRINGIFY(PERF_SAMPLE_BRANCH_ANY)
  XLAT(PERF_SAMPLE_BRANCH_ANY_CALL),
+ #define XLAT_VAL_4 ((unsigned) (PERF_SAMPLE_BRANCH_ANY_CALL))
+ #define XLAT_STR_4 STRINGIFY(PERF_SAMPLE_BRANCH_ANY_CALL)
  XLAT(PERF_SAMPLE_BRANCH_ANY_RETURN),
+ #define XLAT_VAL_5 ((unsigned) (PERF_SAMPLE_BRANCH_ANY_RETURN))
+ #define XLAT_STR_5 STRINGIFY(PERF_SAMPLE_BRANCH_ANY_RETURN)
  XLAT(PERF_SAMPLE_BRANCH_IND_CALL),
+ #define XLAT_VAL_6 ((unsigned) (PERF_SAMPLE_BRANCH_IND_CALL))
+ #define XLAT_STR_6 STRINGIFY(PERF_SAMPLE_BRANCH_IND_CALL)
  XLAT(PERF_SAMPLE_BRANCH_ABORT_TX),
+ #define XLAT_VAL_7 ((unsigned) (PERF_SAMPLE_BRANCH_ABORT_TX))
+ #define XLAT_STR_7 STRINGIFY(PERF_SAMPLE_BRANCH_ABORT_TX)
  XLAT(PERF_SAMPLE_BRANCH_IN_TX),
+ #define XLAT_VAL_8 ((unsigned) (PERF_SAMPLE_BRANCH_IN_TX))
+ #define XLAT_STR_8 STRINGIFY(PERF_SAMPLE_BRANCH_IN_TX)
  XLAT(PERF_SAMPLE_BRANCH_NO_TX),
+ #define XLAT_VAL_9 ((unsigned) (PERF_SAMPLE_BRANCH_NO_TX))
+ #define XLAT_STR_9 STRINGIFY(PERF_SAMPLE_BRANCH_NO_TX)
  XLAT(PERF_SAMPLE_BRANCH_COND),
+ #define XLAT_VAL_10 ((unsigned) (PERF_SAMPLE_BRANCH_COND))
+ #define XLAT_STR_10 STRINGIFY(PERF_SAMPLE_BRANCH_COND)
  XLAT(PERF_SAMPLE_BRANCH_CALL_STACK),
+ #define XLAT_VAL_11 ((unsigned) (PERF_SAMPLE_BRANCH_CALL_STACK))
+ #define XLAT_STR_11 STRINGIFY(PERF_SAMPLE_BRANCH_CALL_STACK)
  XLAT(PERF_SAMPLE_BRANCH_IND_JUMP),
+ #define XLAT_VAL_12 ((unsigned) (PERF_SAMPLE_BRANCH_IND_JUMP))
+ #define XLAT_STR_12 STRINGIFY(PERF_SAMPLE_BRANCH_IND_JUMP)
  XLAT(PERF_SAMPLE_BRANCH_CALL),
+ #define XLAT_VAL_13 ((unsigned) (PERF_SAMPLE_BRANCH_CALL))
+ #define XLAT_STR_13 STRINGIFY(PERF_SAMPLE_BRANCH_CALL)
  XLAT(PERF_SAMPLE_BRANCH_NO_FLAGS),
+ #define XLAT_VAL_14 ((unsigned) (PERF_SAMPLE_BRANCH_NO_FLAGS))
+ #define XLAT_STR_14 STRINGIFY(PERF_SAMPLE_BRANCH_NO_FLAGS)
  XLAT(PERF_SAMPLE_BRANCH_NO_CYCLES),
+ #define XLAT_VAL_15 ((unsigned) (PERF_SAMPLE_BRANCH_NO_CYCLES))
+ #define XLAT_STR_15 STRINGIFY(PERF_SAMPLE_BRANCH_NO_CYCLES)
  XLAT(PERF_SAMPLE_BRANCH_TYPE_SAVE),
- XLAT_END
+ #define XLAT_VAL_16 ((unsigned) (PERF_SAMPLE_BRANCH_TYPE_SAVE))
+ #define XLAT_STR_16 STRINGIFY(PERF_SAMPLE_BRANCH_TYPE_SAVE)
+ XLAT(PERF_SAMPLE_BRANCH_HW_INDEX),
+ #define XLAT_VAL_17 ((unsigned) (PERF_SAMPLE_BRANCH_HW_INDEX))
+ #define XLAT_STR_17 STRINGIFY(PERF_SAMPLE_BRANCH_HW_INDEX)
 };
+static
+const struct xlat perf_branch_sample_type[1] = { {
+ .data = perf_branch_sample_type_xdata,
+ .size = ARRAY_SIZE(perf_branch_sample_type_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 9370569de728c31cd203eda4329f231d432a074c..7ae59a65e0e7db9c731e25f15c4e848617f79ab2 100644 (file)
@@ -15,3 +15,4 @@ PERF_SAMPLE_BRANCH_CALL       1 << 13
 PERF_SAMPLE_BRANCH_NO_FLAGS   1 << 14
 PERF_SAMPLE_BRANCH_NO_CYCLES  1 << 15
 PERF_SAMPLE_BRANCH_TYPE_SAVE  1 << 16
+PERF_SAMPLE_BRANCH_HW_INDEX   1 << 17
index 86475b9d1e5893459c6b7687d34968ef9a0b3d87..5e7959885c52872a7fd64eb037e0db933becd41e 100644 (file)
@@ -40,15 +40,63 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat perf_event_open_flags[] = {
+static const struct xlat_data perf_event_open_flags_xdata[] = {
  XLAT(PERF_FLAG_FD_NO_GROUP),
+ #define XLAT_VAL_0 ((unsigned) (PERF_FLAG_FD_NO_GROUP))
+ #define XLAT_STR_0 STRINGIFY(PERF_FLAG_FD_NO_GROUP)
  XLAT(PERF_FLAG_FD_OUTPUT),
+ #define XLAT_VAL_1 ((unsigned) (PERF_FLAG_FD_OUTPUT))
+ #define XLAT_STR_1 STRINGIFY(PERF_FLAG_FD_OUTPUT)
  XLAT(PERF_FLAG_PID_CGROUP),
+ #define XLAT_VAL_2 ((unsigned) (PERF_FLAG_PID_CGROUP))
+ #define XLAT_STR_2 STRINGIFY(PERF_FLAG_PID_CGROUP)
  XLAT(PERF_FLAG_FD_CLOEXEC),
- XLAT_END
+ #define XLAT_VAL_3 ((unsigned) (PERF_FLAG_FD_CLOEXEC))
+ #define XLAT_STR_3 STRINGIFY(PERF_FLAG_FD_CLOEXEC)
 };
+static
+const struct xlat perf_event_open_flags[1] = { {
+ .data = perf_event_open_flags_xdata,
+ .size = ARRAY_SIZE(perf_event_open_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 0c74308e13728aaab9c37e3d648bae2830c6df69..f62a9d5efcfdd0cebfa40d9f43e013349115eade 100644 (file)
@@ -40,15 +40,63 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat perf_event_read_format[] = {
+static const struct xlat_data perf_event_read_format_xdata[] = {
  XLAT(PERF_FORMAT_TOTAL_TIME_ENABLED),
+ #define XLAT_VAL_0 ((unsigned) (PERF_FORMAT_TOTAL_TIME_ENABLED))
+ #define XLAT_STR_0 STRINGIFY(PERF_FORMAT_TOTAL_TIME_ENABLED)
  XLAT(PERF_FORMAT_TOTAL_TIME_RUNNING),
+ #define XLAT_VAL_1 ((unsigned) (PERF_FORMAT_TOTAL_TIME_RUNNING))
+ #define XLAT_STR_1 STRINGIFY(PERF_FORMAT_TOTAL_TIME_RUNNING)
  XLAT(PERF_FORMAT_ID),
+ #define XLAT_VAL_2 ((unsigned) (PERF_FORMAT_ID))
+ #define XLAT_STR_2 STRINGIFY(PERF_FORMAT_ID)
  XLAT(PERF_FORMAT_GROUP),
- XLAT_END
+ #define XLAT_VAL_3 ((unsigned) (PERF_FORMAT_GROUP))
+ #define XLAT_STR_3 STRINGIFY(PERF_FORMAT_GROUP)
 };
+static
+const struct xlat perf_event_read_format[1] = { {
+ .data = perf_event_read_format_xdata,
+ .size = ARRAY_SIZE(perf_event_read_format_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 3adda9c5c8a755b75257815e8193645f0f58add3..86b562803136db9882200a8f059ac5bc2c8302e3 100644 (file)
@@ -143,6 +143,13 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define PERF_SAMPLE_PHYS_ADDR 1 << 19
 #endif
+#if defined(PERF_SAMPLE_AUX) || (defined(HAVE_DECL_PERF_SAMPLE_AUX) && HAVE_DECL_PERF_SAMPLE_AUX)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PERF_SAMPLE_AUX) == (1 << 20), "PERF_SAMPLE_AUX != 1 << 20");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PERF_SAMPLE_AUX 1 << 20
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
@@ -152,31 +159,250 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat perf_event_sample_format[] = {
+static const struct xlat_data perf_event_sample_format_xdata[] = {
  XLAT(PERF_SAMPLE_IP),
+ #define XLAT_VAL_0 ((unsigned) (PERF_SAMPLE_IP))
+ #define XLAT_STR_0 STRINGIFY(PERF_SAMPLE_IP)
  XLAT(PERF_SAMPLE_TID),
+ #define XLAT_VAL_1 ((unsigned) (PERF_SAMPLE_TID))
+ #define XLAT_STR_1 STRINGIFY(PERF_SAMPLE_TID)
  XLAT(PERF_SAMPLE_TIME),
+ #define XLAT_VAL_2 ((unsigned) (PERF_SAMPLE_TIME))
+ #define XLAT_STR_2 STRINGIFY(PERF_SAMPLE_TIME)
  XLAT(PERF_SAMPLE_ADDR),
+ #define XLAT_VAL_3 ((unsigned) (PERF_SAMPLE_ADDR))
+ #define XLAT_STR_3 STRINGIFY(PERF_SAMPLE_ADDR)
  XLAT(PERF_SAMPLE_READ),
+ #define XLAT_VAL_4 ((unsigned) (PERF_SAMPLE_READ))
+ #define XLAT_STR_4 STRINGIFY(PERF_SAMPLE_READ)
  XLAT(PERF_SAMPLE_CALLCHAIN),
+ #define XLAT_VAL_5 ((unsigned) (PERF_SAMPLE_CALLCHAIN))
+ #define XLAT_STR_5 STRINGIFY(PERF_SAMPLE_CALLCHAIN)
  XLAT(PERF_SAMPLE_ID),
+ #define XLAT_VAL_6 ((unsigned) (PERF_SAMPLE_ID))
+ #define XLAT_STR_6 STRINGIFY(PERF_SAMPLE_ID)
  XLAT(PERF_SAMPLE_CPU),
+ #define XLAT_VAL_7 ((unsigned) (PERF_SAMPLE_CPU))
+ #define XLAT_STR_7 STRINGIFY(PERF_SAMPLE_CPU)
  XLAT(PERF_SAMPLE_PERIOD),
+ #define XLAT_VAL_8 ((unsigned) (PERF_SAMPLE_PERIOD))
+ #define XLAT_STR_8 STRINGIFY(PERF_SAMPLE_PERIOD)
  XLAT(PERF_SAMPLE_STREAM_ID),
+ #define XLAT_VAL_9 ((unsigned) (PERF_SAMPLE_STREAM_ID))
+ #define XLAT_STR_9 STRINGIFY(PERF_SAMPLE_STREAM_ID)
  XLAT(PERF_SAMPLE_RAW),
+ #define XLAT_VAL_10 ((unsigned) (PERF_SAMPLE_RAW))
+ #define XLAT_STR_10 STRINGIFY(PERF_SAMPLE_RAW)
  XLAT(PERF_SAMPLE_BRANCH_STACK),
+ #define XLAT_VAL_11 ((unsigned) (PERF_SAMPLE_BRANCH_STACK))
+ #define XLAT_STR_11 STRINGIFY(PERF_SAMPLE_BRANCH_STACK)
  XLAT(PERF_SAMPLE_REGS_USER),
+ #define XLAT_VAL_12 ((unsigned) (PERF_SAMPLE_REGS_USER))
+ #define XLAT_STR_12 STRINGIFY(PERF_SAMPLE_REGS_USER)
  XLAT(PERF_SAMPLE_STACK_USER),
+ #define XLAT_VAL_13 ((unsigned) (PERF_SAMPLE_STACK_USER))
+ #define XLAT_STR_13 STRINGIFY(PERF_SAMPLE_STACK_USER)
  XLAT(PERF_SAMPLE_WEIGHT),
+ #define XLAT_VAL_14 ((unsigned) (PERF_SAMPLE_WEIGHT))
+ #define XLAT_STR_14 STRINGIFY(PERF_SAMPLE_WEIGHT)
  XLAT(PERF_SAMPLE_DATA_SRC),
+ #define XLAT_VAL_15 ((unsigned) (PERF_SAMPLE_DATA_SRC))
+ #define XLAT_STR_15 STRINGIFY(PERF_SAMPLE_DATA_SRC)
  XLAT(PERF_SAMPLE_IDENTIFIER),
+ #define XLAT_VAL_16 ((unsigned) (PERF_SAMPLE_IDENTIFIER))
+ #define XLAT_STR_16 STRINGIFY(PERF_SAMPLE_IDENTIFIER)
  XLAT(PERF_SAMPLE_TRANSACTION),
+ #define XLAT_VAL_17 ((unsigned) (PERF_SAMPLE_TRANSACTION))
+ #define XLAT_STR_17 STRINGIFY(PERF_SAMPLE_TRANSACTION)
  XLAT(PERF_SAMPLE_REGS_INTR),
+ #define XLAT_VAL_18 ((unsigned) (PERF_SAMPLE_REGS_INTR))
+ #define XLAT_STR_18 STRINGIFY(PERF_SAMPLE_REGS_INTR)
  XLAT(PERF_SAMPLE_PHYS_ADDR),
- XLAT_END
+ #define XLAT_VAL_19 ((unsigned) (PERF_SAMPLE_PHYS_ADDR))
+ #define XLAT_STR_19 STRINGIFY(PERF_SAMPLE_PHYS_ADDR)
+ XLAT(PERF_SAMPLE_AUX),
+ #define XLAT_VAL_20 ((unsigned) (PERF_SAMPLE_AUX))
+ #define XLAT_STR_20 STRINGIFY(PERF_SAMPLE_AUX)
 };
+static
+const struct xlat perf_event_sample_format[1] = { {
+ .data = perf_event_sample_format_xdata,
+ .size = ARRAY_SIZE(perf_event_sample_format_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index d310754e9660ee545756e95a0f104360c75df72a..cfa2da65a164bde8f49490a3aa278cdc5cc82f6b 100644 (file)
@@ -18,3 +18,4 @@ PERF_SAMPLE_IDENTIFIER    1 << 16
 PERF_SAMPLE_TRANSACTION   1 << 17
 PERF_SAMPLE_REGS_INTR     1 << 18
 PERF_SAMPLE_PHYS_ADDR     1 << 19
+PERF_SAMPLE_AUX           1 << 20
index 04ef058521c149fb8fdf988a95fecaff3e902732..2bc3c9be845a31d66a9f7dda750bcc749e49bed9 100644 (file)
@@ -61,19 +61,96 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat perf_hw_cache_id[] = {
-
+static const struct xlat_data perf_hw_cache_id_xdata[] = {
  XLAT(PERF_COUNT_HW_CACHE_L1D),
+ #define XLAT_VAL_0 ((unsigned) (PERF_COUNT_HW_CACHE_L1D))
+ #define XLAT_STR_0 STRINGIFY(PERF_COUNT_HW_CACHE_L1D)
  XLAT(PERF_COUNT_HW_CACHE_L1I),
+ #define XLAT_VAL_1 ((unsigned) (PERF_COUNT_HW_CACHE_L1I))
+ #define XLAT_STR_1 STRINGIFY(PERF_COUNT_HW_CACHE_L1I)
  XLAT(PERF_COUNT_HW_CACHE_LL),
+ #define XLAT_VAL_2 ((unsigned) (PERF_COUNT_HW_CACHE_LL))
+ #define XLAT_STR_2 STRINGIFY(PERF_COUNT_HW_CACHE_LL)
  XLAT(PERF_COUNT_HW_CACHE_DTLB),
+ #define XLAT_VAL_3 ((unsigned) (PERF_COUNT_HW_CACHE_DTLB))
+ #define XLAT_STR_3 STRINGIFY(PERF_COUNT_HW_CACHE_DTLB)
  XLAT(PERF_COUNT_HW_CACHE_ITLB),
+ #define XLAT_VAL_4 ((unsigned) (PERF_COUNT_HW_CACHE_ITLB))
+ #define XLAT_STR_4 STRINGIFY(PERF_COUNT_HW_CACHE_ITLB)
  XLAT(PERF_COUNT_HW_CACHE_BPU),
+ #define XLAT_VAL_5 ((unsigned) (PERF_COUNT_HW_CACHE_BPU))
+ #define XLAT_STR_5 STRINGIFY(PERF_COUNT_HW_CACHE_BPU)
  XLAT(PERF_COUNT_HW_CACHE_NODE),
- XLAT_END
+ #define XLAT_VAL_6 ((unsigned) (PERF_COUNT_HW_CACHE_NODE))
+ #define XLAT_STR_6 STRINGIFY(PERF_COUNT_HW_CACHE_NODE)
 };
+static
+const struct xlat perf_hw_cache_id[1] = { {
+ .data = perf_hw_cache_id_xdata,
+ .size = ARRAY_SIZE(perf_hw_cache_id_xdata),
+ .type = XT_SORTED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 1ba0b1fc347aa4d27e6226eb689ab39f88b7299a..40c2827d36c1c89637c67ab37e625eeb4798e707 100644 (file)
@@ -1,4 +1,4 @@
-/* sort -k2,2n */
+#sorted sort -k2,2n
 PERF_COUNT_HW_CACHE_L1D  0
 PERF_COUNT_HW_CACHE_L1I  1
 PERF_COUNT_HW_CACHE_LL   2
index b0cadd3221b93afb1624782c087dafe9bf027320..a98c17b47ca97640a24be506c2847973bed411db 100644 (file)
@@ -33,15 +33,52 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat perf_hw_cache_op_id[] = {
-
+static const struct xlat_data perf_hw_cache_op_id_xdata[] = {
  XLAT(PERF_COUNT_HW_CACHE_OP_READ),
+ #define XLAT_VAL_0 ((unsigned) (PERF_COUNT_HW_CACHE_OP_READ))
+ #define XLAT_STR_0 STRINGIFY(PERF_COUNT_HW_CACHE_OP_READ)
  XLAT(PERF_COUNT_HW_CACHE_OP_WRITE),
+ #define XLAT_VAL_1 ((unsigned) (PERF_COUNT_HW_CACHE_OP_WRITE))
+ #define XLAT_STR_1 STRINGIFY(PERF_COUNT_HW_CACHE_OP_WRITE)
  XLAT(PERF_COUNT_HW_CACHE_OP_PREFETCH),
- XLAT_END
+ #define XLAT_VAL_2 ((unsigned) (PERF_COUNT_HW_CACHE_OP_PREFETCH))
+ #define XLAT_STR_2 STRINGIFY(PERF_COUNT_HW_CACHE_OP_PREFETCH)
 };
+static
+const struct xlat perf_hw_cache_op_id[1] = { {
+ .data = perf_hw_cache_op_id_xdata,
+ .size = ARRAY_SIZE(perf_hw_cache_op_id_xdata),
+ .type = XT_SORTED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 7e30c3ad6565d4cd0084934d212ac03ad6bbc3e3..0b27e866dbbd882d19a588300737221683afbcfa 100644 (file)
@@ -1,4 +1,4 @@
-/* sort -k2,2n */
+#sorted sort -k2,2n
 PERF_COUNT_HW_CACHE_OP_READ     0
 PERF_COUNT_HW_CACHE_OP_WRITE    1
 PERF_COUNT_HW_CACHE_OP_PREFETCH 2
index c026ce88e60fec8a67683fcf7d711679cf7a330d..7aa5585db9a3b9dc92bb700580a7ed0666b8c07d 100644 (file)
@@ -26,14 +26,41 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat perf_hw_cache_op_result_id[] = {
-
+static const struct xlat_data perf_hw_cache_op_result_id_xdata[] = {
  XLAT(PERF_COUNT_HW_CACHE_RESULT_ACCESS),
+ #define XLAT_VAL_0 ((unsigned) (PERF_COUNT_HW_CACHE_RESULT_ACCESS))
+ #define XLAT_STR_0 STRINGIFY(PERF_COUNT_HW_CACHE_RESULT_ACCESS)
  XLAT(PERF_COUNT_HW_CACHE_RESULT_MISS),
- XLAT_END
+ #define XLAT_VAL_1 ((unsigned) (PERF_COUNT_HW_CACHE_RESULT_MISS))
+ #define XLAT_STR_1 STRINGIFY(PERF_COUNT_HW_CACHE_RESULT_MISS)
 };
+static
+const struct xlat perf_hw_cache_op_result_id[1] = { {
+ .data = perf_hw_cache_op_result_id_xdata,
+ .size = ARRAY_SIZE(perf_hw_cache_op_result_id_xdata),
+ .type = XT_SORTED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 075054659c527aeaa875c4d23d6e95e920b7ee8c..e403229023d621036515828a6e6311d996715854 100644 (file)
@@ -1,3 +1,3 @@
-/* sort -k2,2n */
+#sorted sort -k2,2n
 PERF_COUNT_HW_CACHE_RESULT_ACCESS 0
 PERF_COUNT_HW_CACHE_RESULT_MISS   1
index 8c71a5468209cc5351df73ec3769e98571e288b5..893df49c0d71cdc358b017f81ddd76df5ea5450a 100644 (file)
@@ -82,22 +82,129 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat perf_hw_id[] = {
-
+static const struct xlat_data perf_hw_id_xdata[] = {
  XLAT(PERF_COUNT_HW_CPU_CYCLES),
+ #define XLAT_VAL_0 ((unsigned) (PERF_COUNT_HW_CPU_CYCLES))
+ #define XLAT_STR_0 STRINGIFY(PERF_COUNT_HW_CPU_CYCLES)
  XLAT(PERF_COUNT_HW_INSTRUCTIONS),
+ #define XLAT_VAL_1 ((unsigned) (PERF_COUNT_HW_INSTRUCTIONS))
+ #define XLAT_STR_1 STRINGIFY(PERF_COUNT_HW_INSTRUCTIONS)
  XLAT(PERF_COUNT_HW_CACHE_REFERENCES),
+ #define XLAT_VAL_2 ((unsigned) (PERF_COUNT_HW_CACHE_REFERENCES))
+ #define XLAT_STR_2 STRINGIFY(PERF_COUNT_HW_CACHE_REFERENCES)
  XLAT(PERF_COUNT_HW_CACHE_MISSES),
+ #define XLAT_VAL_3 ((unsigned) (PERF_COUNT_HW_CACHE_MISSES))
+ #define XLAT_STR_3 STRINGIFY(PERF_COUNT_HW_CACHE_MISSES)
  XLAT(PERF_COUNT_HW_BRANCH_INSTRUCTIONS),
+ #define XLAT_VAL_4 ((unsigned) (PERF_COUNT_HW_BRANCH_INSTRUCTIONS))
+ #define XLAT_STR_4 STRINGIFY(PERF_COUNT_HW_BRANCH_INSTRUCTIONS)
  XLAT(PERF_COUNT_HW_BRANCH_MISSES),
+ #define XLAT_VAL_5 ((unsigned) (PERF_COUNT_HW_BRANCH_MISSES))
+ #define XLAT_STR_5 STRINGIFY(PERF_COUNT_HW_BRANCH_MISSES)
  XLAT(PERF_COUNT_HW_BUS_CYCLES),
+ #define XLAT_VAL_6 ((unsigned) (PERF_COUNT_HW_BUS_CYCLES))
+ #define XLAT_STR_6 STRINGIFY(PERF_COUNT_HW_BUS_CYCLES)
  XLAT(PERF_COUNT_HW_STALLED_CYCLES_FRONTEND),
+ #define XLAT_VAL_7 ((unsigned) (PERF_COUNT_HW_STALLED_CYCLES_FRONTEND))
+ #define XLAT_STR_7 STRINGIFY(PERF_COUNT_HW_STALLED_CYCLES_FRONTEND)
  XLAT(PERF_COUNT_HW_STALLED_CYCLES_BACKEND),
+ #define XLAT_VAL_8 ((unsigned) (PERF_COUNT_HW_STALLED_CYCLES_BACKEND))
+ #define XLAT_STR_8 STRINGIFY(PERF_COUNT_HW_STALLED_CYCLES_BACKEND)
  XLAT(PERF_COUNT_HW_REF_CPU_CYCLES),
- XLAT_END
+ #define XLAT_VAL_9 ((unsigned) (PERF_COUNT_HW_REF_CPU_CYCLES))
+ #define XLAT_STR_9 STRINGIFY(PERF_COUNT_HW_REF_CPU_CYCLES)
 };
+static
+const struct xlat perf_hw_id[1] = { {
+ .data = perf_hw_id_xdata,
+ .size = ARRAY_SIZE(perf_hw_id_xdata),
+ .type = XT_SORTED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index c46bcecd98803ef2ddaa228362cae27475260a7e..3b0ce4a7c03739d083f9936c96f1947f1c286a0e 100644 (file)
@@ -1,4 +1,4 @@
-/* sort -k2,2n */
+#sorted sort -k2,2n
 PERF_COUNT_HW_CPU_CYCLES               0
 PERF_COUNT_HW_INSTRUCTIONS             1
 PERF_COUNT_HW_CACHE_REFERENCES         2
index d3f2a09ad10ba512c770941a5f88a36d881257e5..4370c1bc0542c9de1b3f76c335ff409e4c1ad319 100644 (file)
@@ -96,25 +96,153 @@ extern const struct xlat perf_ioctl_cmds[];
 
 # else
 
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat perf_ioctl_cmds[] = {
+static const struct xlat_data perf_ioctl_cmds_xdata[] = {
  XLAT(PERF_EVENT_IOC_ENABLE),
+ #define XLAT_VAL_0 ((unsigned) (PERF_EVENT_IOC_ENABLE))
+ #define XLAT_STR_0 STRINGIFY(PERF_EVENT_IOC_ENABLE)
  XLAT(PERF_EVENT_IOC_DISABLE),
+ #define XLAT_VAL_1 ((unsigned) (PERF_EVENT_IOC_DISABLE))
+ #define XLAT_STR_1 STRINGIFY(PERF_EVENT_IOC_DISABLE)
  XLAT(PERF_EVENT_IOC_REFRESH),
+ #define XLAT_VAL_2 ((unsigned) (PERF_EVENT_IOC_REFRESH))
+ #define XLAT_STR_2 STRINGIFY(PERF_EVENT_IOC_REFRESH)
  XLAT(PERF_EVENT_IOC_RESET),
+ #define XLAT_VAL_3 ((unsigned) (PERF_EVENT_IOC_RESET))
+ #define XLAT_STR_3 STRINGIFY(PERF_EVENT_IOC_RESET)
  XLAT(PERF_EVENT_IOC_PERIOD),
+ #define XLAT_VAL_4 ((unsigned) (PERF_EVENT_IOC_PERIOD))
+ #define XLAT_STR_4 STRINGIFY(PERF_EVENT_IOC_PERIOD)
  XLAT(PERF_EVENT_IOC_SET_OUTPUT),
+ #define XLAT_VAL_5 ((unsigned) (PERF_EVENT_IOC_SET_OUTPUT))
+ #define XLAT_STR_5 STRINGIFY(PERF_EVENT_IOC_SET_OUTPUT)
  XLAT(PERF_EVENT_IOC_SET_FILTER),
+ #define XLAT_VAL_6 ((unsigned) (PERF_EVENT_IOC_SET_FILTER))
+ #define XLAT_STR_6 STRINGIFY(PERF_EVENT_IOC_SET_FILTER)
  XLAT(PERF_EVENT_IOC_ID),
+ #define XLAT_VAL_7 ((unsigned) (PERF_EVENT_IOC_ID))
+ #define XLAT_STR_7 STRINGIFY(PERF_EVENT_IOC_ID)
  XLAT(PERF_EVENT_IOC_SET_BPF),
+ #define XLAT_VAL_8 ((unsigned) (PERF_EVENT_IOC_SET_BPF))
+ #define XLAT_STR_8 STRINGIFY(PERF_EVENT_IOC_SET_BPF)
  XLAT(PERF_EVENT_IOC_PAUSE_OUTPUT),
+ #define XLAT_VAL_9 ((unsigned) (PERF_EVENT_IOC_PAUSE_OUTPUT))
+ #define XLAT_STR_9 STRINGIFY(PERF_EVENT_IOC_PAUSE_OUTPUT)
  XLAT(PERF_EVENT_IOC_QUERY_BPF),
+ #define XLAT_VAL_10 ((unsigned) (PERF_EVENT_IOC_QUERY_BPF))
+ #define XLAT_STR_10 STRINGIFY(PERF_EVENT_IOC_QUERY_BPF)
  XLAT(PERF_EVENT_IOC_MODIFY_ATTRIBUTES),
- XLAT_END
+ #define XLAT_VAL_11 ((unsigned) (PERF_EVENT_IOC_MODIFY_ATTRIBUTES))
+ #define XLAT_STR_11 STRINGIFY(PERF_EVENT_IOC_MODIFY_ATTRIBUTES)
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat perf_ioctl_cmds[1] = { {
+ .data = perf_ioctl_cmds_xdata,
+ .size = ARRAY_SIZE(perf_ioctl_cmds_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index de3883aa4bac04e2e4e1c9f120650cf00a5e1617..dc525b94491268e16c0b2f9db53fe41f6449c5ec 100644 (file)
@@ -19,14 +19,32 @@ extern const struct xlat perf_ioctl_flags[];
 
 # else
 
+static const struct xlat_data perf_ioctl_flags_xdata[] = {
+ XLAT(PERF_IOC_FLAG_GROUP),
+ #define XLAT_VAL_0 ((unsigned) (PERF_IOC_FLAG_GROUP))
+ #define XLAT_STR_0 STRINGIFY(PERF_IOC_FLAG_GROUP)
+};
 #  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
 static
 #  endif
-const struct xlat perf_ioctl_flags[] = {
- XLAT(PERF_IOC_FLAG_GROUP),
- XLAT_END
-};
+const struct xlat perf_ioctl_flags[1] = { {
+ .data = perf_ioctl_flags_xdata,
+ .size = ARRAY_SIZE(perf_ioctl_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index ecf0f83f128b9db7f4dc6846032d3d50b0ac37a7..03df21fe2ac091d46508915a23c8aa0655a01411 100644 (file)
@@ -89,23 +89,140 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat perf_sw_ids[] = {
-
+static const struct xlat_data perf_sw_ids_xdata[] = {
  XLAT(PERF_COUNT_SW_CPU_CLOCK),
+ #define XLAT_VAL_0 ((unsigned) (PERF_COUNT_SW_CPU_CLOCK))
+ #define XLAT_STR_0 STRINGIFY(PERF_COUNT_SW_CPU_CLOCK)
  XLAT(PERF_COUNT_SW_TASK_CLOCK),
+ #define XLAT_VAL_1 ((unsigned) (PERF_COUNT_SW_TASK_CLOCK))
+ #define XLAT_STR_1 STRINGIFY(PERF_COUNT_SW_TASK_CLOCK)
  XLAT(PERF_COUNT_SW_PAGE_FAULTS),
+ #define XLAT_VAL_2 ((unsigned) (PERF_COUNT_SW_PAGE_FAULTS))
+ #define XLAT_STR_2 STRINGIFY(PERF_COUNT_SW_PAGE_FAULTS)
  XLAT(PERF_COUNT_SW_CONTEXT_SWITCHES),
+ #define XLAT_VAL_3 ((unsigned) (PERF_COUNT_SW_CONTEXT_SWITCHES))
+ #define XLAT_STR_3 STRINGIFY(PERF_COUNT_SW_CONTEXT_SWITCHES)
  XLAT(PERF_COUNT_SW_CPU_MIGRATIONS),
+ #define XLAT_VAL_4 ((unsigned) (PERF_COUNT_SW_CPU_MIGRATIONS))
+ #define XLAT_STR_4 STRINGIFY(PERF_COUNT_SW_CPU_MIGRATIONS)
  XLAT(PERF_COUNT_SW_PAGE_FAULTS_MIN),
+ #define XLAT_VAL_5 ((unsigned) (PERF_COUNT_SW_PAGE_FAULTS_MIN))
+ #define XLAT_STR_5 STRINGIFY(PERF_COUNT_SW_PAGE_FAULTS_MIN)
  XLAT(PERF_COUNT_SW_PAGE_FAULTS_MAJ),
+ #define XLAT_VAL_6 ((unsigned) (PERF_COUNT_SW_PAGE_FAULTS_MAJ))
+ #define XLAT_STR_6 STRINGIFY(PERF_COUNT_SW_PAGE_FAULTS_MAJ)
  XLAT(PERF_COUNT_SW_ALIGNMENT_FAULTS),
+ #define XLAT_VAL_7 ((unsigned) (PERF_COUNT_SW_ALIGNMENT_FAULTS))
+ #define XLAT_STR_7 STRINGIFY(PERF_COUNT_SW_ALIGNMENT_FAULTS)
  XLAT(PERF_COUNT_SW_EMULATION_FAULTS),
+ #define XLAT_VAL_8 ((unsigned) (PERF_COUNT_SW_EMULATION_FAULTS))
+ #define XLAT_STR_8 STRINGIFY(PERF_COUNT_SW_EMULATION_FAULTS)
  XLAT(PERF_COUNT_SW_DUMMY),
+ #define XLAT_VAL_9 ((unsigned) (PERF_COUNT_SW_DUMMY))
+ #define XLAT_STR_9 STRINGIFY(PERF_COUNT_SW_DUMMY)
  XLAT(PERF_COUNT_SW_BPF_OUTPUT),
- XLAT_END
+ #define XLAT_VAL_10 ((unsigned) (PERF_COUNT_SW_BPF_OUTPUT))
+ #define XLAT_STR_10 STRINGIFY(PERF_COUNT_SW_BPF_OUTPUT)
 };
+static
+const struct xlat perf_sw_ids[1] = { {
+ .data = perf_sw_ids_xdata,
+ .size = ARRAY_SIZE(perf_sw_ids_xdata),
+ .type = XT_SORTED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index e2ad8a8c3b53fb23cb8f317301354167093dd460..0e097112c3a2f0e96851d67a44261e40128c833d 100644 (file)
@@ -1,4 +1,4 @@
-/* sort -k2,2n */
+#sorted sort -k2,2n
 PERF_COUNT_SW_CPU_CLOCK         0
 PERF_COUNT_SW_TASK_CLOCK        1
 PERF_COUNT_SW_PAGE_FAULTS       2
index bbe5c5815c866b8346b16a34b8e4be58913f4a93..579df300c1a4c32942cf7b803fe125f09525c159 100644 (file)
@@ -54,18 +54,85 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat perf_type_id[] = {
-
+static const struct xlat_data perf_type_id_xdata[] = {
  XLAT(PERF_TYPE_HARDWARE),
+ #define XLAT_VAL_0 ((unsigned) (PERF_TYPE_HARDWARE))
+ #define XLAT_STR_0 STRINGIFY(PERF_TYPE_HARDWARE)
  XLAT(PERF_TYPE_SOFTWARE),
+ #define XLAT_VAL_1 ((unsigned) (PERF_TYPE_SOFTWARE))
+ #define XLAT_STR_1 STRINGIFY(PERF_TYPE_SOFTWARE)
  XLAT(PERF_TYPE_TRACEPOINT),
+ #define XLAT_VAL_2 ((unsigned) (PERF_TYPE_TRACEPOINT))
+ #define XLAT_STR_2 STRINGIFY(PERF_TYPE_TRACEPOINT)
  XLAT(PERF_TYPE_HW_CACHE),
+ #define XLAT_VAL_3 ((unsigned) (PERF_TYPE_HW_CACHE))
+ #define XLAT_STR_3 STRINGIFY(PERF_TYPE_HW_CACHE)
  XLAT(PERF_TYPE_RAW),
+ #define XLAT_VAL_4 ((unsigned) (PERF_TYPE_RAW))
+ #define XLAT_STR_4 STRINGIFY(PERF_TYPE_RAW)
  XLAT(PERF_TYPE_BREAKPOINT),
- XLAT_END
+ #define XLAT_VAL_5 ((unsigned) (PERF_TYPE_BREAKPOINT))
+ #define XLAT_STR_5 STRINGIFY(PERF_TYPE_BREAKPOINT)
 };
+static
+const struct xlat perf_type_id[1] = { {
+ .data = perf_type_id_xdata,
+ .size = ARRAY_SIZE(perf_type_id_xdata),
+ .type = XT_SORTED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 88f633814ba0561a038fd2daf09206ce95351b21..29f6f2b853c3314c9416cd6c323c9d338f976722 100644 (file)
@@ -1,4 +1,4 @@
-/* sort -k2,2n */
+#sorted sort -k2,2n
 PERF_TYPE_HARDWARE    0
 PERF_TYPE_SOFTWARE    1
 PERF_TYPE_TRACEPOINT  2
index 4b2a36930f5f3259668b8c05c52027973dab9099..7de2264df5dcfc0cf012141b2fad15276504f7f8 100644 (file)
@@ -89,22 +89,140 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat personality_flags[] = {
+static const struct xlat_data personality_flags_xdata[] = {
  XLAT(UNAME26),
+ #define XLAT_VAL_0 ((unsigned) (UNAME26))
+ #define XLAT_STR_0 STRINGIFY(UNAME26)
  XLAT(ADDR_NO_RANDOMIZE),
+ #define XLAT_VAL_1 ((unsigned) (ADDR_NO_RANDOMIZE))
+ #define XLAT_STR_1 STRINGIFY(ADDR_NO_RANDOMIZE)
  XLAT(FDPIC_FUNCPTRS),
+ #define XLAT_VAL_2 ((unsigned) (FDPIC_FUNCPTRS))
+ #define XLAT_STR_2 STRINGIFY(FDPIC_FUNCPTRS)
  XLAT(MMAP_PAGE_ZERO),
+ #define XLAT_VAL_3 ((unsigned) (MMAP_PAGE_ZERO))
+ #define XLAT_STR_3 STRINGIFY(MMAP_PAGE_ZERO)
  XLAT(ADDR_COMPAT_LAYOUT),
+ #define XLAT_VAL_4 ((unsigned) (ADDR_COMPAT_LAYOUT))
+ #define XLAT_STR_4 STRINGIFY(ADDR_COMPAT_LAYOUT)
  XLAT(READ_IMPLIES_EXEC),
+ #define XLAT_VAL_5 ((unsigned) (READ_IMPLIES_EXEC))
+ #define XLAT_STR_5 STRINGIFY(READ_IMPLIES_EXEC)
  XLAT(ADDR_LIMIT_32BIT),
+ #define XLAT_VAL_6 ((unsigned) (ADDR_LIMIT_32BIT))
+ #define XLAT_STR_6 STRINGIFY(ADDR_LIMIT_32BIT)
  XLAT(SHORT_INODE),
+ #define XLAT_VAL_7 ((unsigned) (SHORT_INODE))
+ #define XLAT_STR_7 STRINGIFY(SHORT_INODE)
  XLAT(WHOLE_SECONDS),
+ #define XLAT_VAL_8 ((unsigned) (WHOLE_SECONDS))
+ #define XLAT_STR_8 STRINGIFY(WHOLE_SECONDS)
  XLAT(STICKY_TIMEOUTS),
+ #define XLAT_VAL_9 ((unsigned) (STICKY_TIMEOUTS))
+ #define XLAT_STR_9 STRINGIFY(STICKY_TIMEOUTS)
  XLAT(ADDR_LIMIT_3GB),
- XLAT_END
+ #define XLAT_VAL_10 ((unsigned) (ADDR_LIMIT_3GB))
+ #define XLAT_STR_10 STRINGIFY(ADDR_LIMIT_3GB)
 };
+static
+const struct xlat personality_flags[1] = { {
+ .data = personality_flags_xdata,
+ .size = ARRAY_SIZE(personality_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 7560b8876e306cf95074eb0be46a2cebb1671b84..c14119bb295b09774df652da0cbc7797ba8331f7 100644 (file)
@@ -173,34 +173,272 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat personality_types[] = {
+static const struct xlat_data personality_types_xdata[] = {
  XLAT(PER_LINUX),
+ #define XLAT_VAL_0 ((unsigned) (PER_LINUX))
+ #define XLAT_STR_0 STRINGIFY(PER_LINUX)
  XLAT(PER_LINUX_32BIT),
+ #define XLAT_VAL_1 ((unsigned) (PER_LINUX_32BIT))
+ #define XLAT_STR_1 STRINGIFY(PER_LINUX_32BIT)
  XLAT(PER_LINUX_FDPIC),
+ #define XLAT_VAL_2 ((unsigned) (PER_LINUX_FDPIC))
+ #define XLAT_STR_2 STRINGIFY(PER_LINUX_FDPIC)
  XLAT(PER_SVR4),
+ #define XLAT_VAL_3 ((unsigned) (PER_SVR4))
+ #define XLAT_STR_3 STRINGIFY(PER_SVR4)
  XLAT(PER_SVR3),
+ #define XLAT_VAL_4 ((unsigned) (PER_SVR3))
+ #define XLAT_STR_4 STRINGIFY(PER_SVR3)
  XLAT(PER_SCOSVR3),
+ #define XLAT_VAL_5 ((unsigned) (PER_SCOSVR3))
+ #define XLAT_STR_5 STRINGIFY(PER_SCOSVR3)
  XLAT(PER_OSR5),
+ #define XLAT_VAL_6 ((unsigned) (PER_OSR5))
+ #define XLAT_STR_6 STRINGIFY(PER_OSR5)
  XLAT(PER_WYSEV386),
+ #define XLAT_VAL_7 ((unsigned) (PER_WYSEV386))
+ #define XLAT_STR_7 STRINGIFY(PER_WYSEV386)
  XLAT(PER_ISCR4),
+ #define XLAT_VAL_8 ((unsigned) (PER_ISCR4))
+ #define XLAT_STR_8 STRINGIFY(PER_ISCR4)
  XLAT(PER_BSD),
+ #define XLAT_VAL_9 ((unsigned) (PER_BSD))
+ #define XLAT_STR_9 STRINGIFY(PER_BSD)
  XLAT(PER_SUNOS),
+ #define XLAT_VAL_10 ((unsigned) (PER_SUNOS))
+ #define XLAT_STR_10 STRINGIFY(PER_SUNOS)
  XLAT(PER_XENIX),
+ #define XLAT_VAL_11 ((unsigned) (PER_XENIX))
+ #define XLAT_STR_11 STRINGIFY(PER_XENIX)
  XLAT(PER_LINUX32),
+ #define XLAT_VAL_12 ((unsigned) (PER_LINUX32))
+ #define XLAT_STR_12 STRINGIFY(PER_LINUX32)
  XLAT(PER_LINUX32_3GB),
+ #define XLAT_VAL_13 ((unsigned) (PER_LINUX32_3GB))
+ #define XLAT_STR_13 STRINGIFY(PER_LINUX32_3GB)
  XLAT(PER_IRIX32),
+ #define XLAT_VAL_14 ((unsigned) (PER_IRIX32))
+ #define XLAT_STR_14 STRINGIFY(PER_IRIX32)
  XLAT(PER_IRIXN32),
+ #define XLAT_VAL_15 ((unsigned) (PER_IRIXN32))
+ #define XLAT_STR_15 STRINGIFY(PER_IRIXN32)
  XLAT(PER_IRIX64),
+ #define XLAT_VAL_16 ((unsigned) (PER_IRIX64))
+ #define XLAT_STR_16 STRINGIFY(PER_IRIX64)
  XLAT(PER_RISCOS),
+ #define XLAT_VAL_17 ((unsigned) (PER_RISCOS))
+ #define XLAT_STR_17 STRINGIFY(PER_RISCOS)
  XLAT(PER_SOLARIS),
+ #define XLAT_VAL_18 ((unsigned) (PER_SOLARIS))
+ #define XLAT_STR_18 STRINGIFY(PER_SOLARIS)
  XLAT(PER_UW7),
+ #define XLAT_VAL_19 ((unsigned) (PER_UW7))
+ #define XLAT_STR_19 STRINGIFY(PER_UW7)
  XLAT(PER_OSF4),
+ #define XLAT_VAL_20 ((unsigned) (PER_OSF4))
+ #define XLAT_STR_20 STRINGIFY(PER_OSF4)
  XLAT(PER_HPUX),
+ #define XLAT_VAL_21 ((unsigned) (PER_HPUX))
+ #define XLAT_STR_21 STRINGIFY(PER_HPUX)
  XLAT(PER_MASK),
- XLAT_END
+ #define XLAT_VAL_22 ((unsigned) (PER_MASK))
+ #define XLAT_STR_22 STRINGIFY(PER_MASK)
 };
+static
+const struct xlat personality_types[1] = { {
+ .data = personality_types_xdata,
+ .size = ARRAY_SIZE(personality_types_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 811672c222617cf642fd51a55676e017c09c8dff..fbe7d09c7584d3d4783eeeaf9a84e2b8d59ec71d 100644 (file)
@@ -33,14 +33,52 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat phonet_protocols[] = {
+static const struct xlat_data phonet_protocols_xdata[] = {
  [PN_PROTO_TRANSPORT] = XLAT(PN_PROTO_TRANSPORT),
+ #define XLAT_VAL_0 ((unsigned) (PN_PROTO_TRANSPORT))
+ #define XLAT_STR_0 STRINGIFY(PN_PROTO_TRANSPORT)
  [PN_PROTO_PHONET] = XLAT(PN_PROTO_PHONET),
+ #define XLAT_VAL_1 ((unsigned) (PN_PROTO_PHONET))
+ #define XLAT_STR_1 STRINGIFY(PN_PROTO_PHONET)
  [PN_PROTO_PIPE] = XLAT(PN_PROTO_PIPE),
- XLAT_END
+ #define XLAT_VAL_2 ((unsigned) (PN_PROTO_PIPE))
+ #define XLAT_STR_2 STRINGIFY(PN_PROTO_PIPE)
 };
+static
+const struct xlat phonet_protocols[1] = { {
+ .data = phonet_protocols_xdata,
+ .size = ARRAY_SIZE(phonet_protocols_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index cc32932a018c715fdebcd1544fb88ca685e4204b..ed2e3cc8e315948f6a21843ea5d92a6504a2a9bd 100644 (file)
@@ -33,14 +33,52 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat pkey_access[] = {
+static const struct xlat_data pkey_access_xdata[] = {
  XLAT(PKEY_DISABLE_ACCESS),
+ #define XLAT_VAL_0 ((unsigned) (PKEY_DISABLE_ACCESS))
+ #define XLAT_STR_0 STRINGIFY(PKEY_DISABLE_ACCESS)
  XLAT(PKEY_DISABLE_WRITE),
+ #define XLAT_VAL_1 ((unsigned) (PKEY_DISABLE_WRITE))
+ #define XLAT_STR_1 STRINGIFY(PKEY_DISABLE_WRITE)
  XLAT(PKEY_DISABLE_EXECUTE),
- XLAT_END
+ #define XLAT_VAL_2 ((unsigned) (PKEY_DISABLE_EXECUTE))
+ #define XLAT_STR_2 STRINGIFY(PKEY_DISABLE_EXECUTE)
 };
+static
+const struct xlat pkey_access[1] = { {
+ .data = pkey_access_xdata,
+ .size = ARRAY_SIZE(pkey_access_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/policies.h b/xlat/policies.h
deleted file mode 100644 (file)
index 9e4f4cf..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-/* Generated by ./xlat/gen.sh from ./xlat/policies.in; do not edit. */
-
-#include "gcc_compat.h"
-#include "static_assert.h"
-
-#if defined(MPOL_DEFAULT) || (defined(HAVE_DECL_MPOL_DEFAULT) && HAVE_DECL_MPOL_DEFAULT)
-DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((MPOL_DEFAULT) == (0), "MPOL_DEFAULT != 0");
-DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
-#else
-# define MPOL_DEFAULT 0
-#endif
-#if defined(MPOL_PREFERRED) || (defined(HAVE_DECL_MPOL_PREFERRED) && HAVE_DECL_MPOL_PREFERRED)
-DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((MPOL_PREFERRED) == (1), "MPOL_PREFERRED != 1");
-DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
-#else
-# define MPOL_PREFERRED 1
-#endif
-#if defined(MPOL_BIND) || (defined(HAVE_DECL_MPOL_BIND) && HAVE_DECL_MPOL_BIND)
-DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((MPOL_BIND) == (2), "MPOL_BIND != 2");
-DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
-#else
-# define MPOL_BIND 2
-#endif
-#if defined(MPOL_INTERLEAVE) || (defined(HAVE_DECL_MPOL_INTERLEAVE) && HAVE_DECL_MPOL_INTERLEAVE)
-DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((MPOL_INTERLEAVE) == (3), "MPOL_INTERLEAVE != 3");
-DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
-#else
-# define MPOL_INTERLEAVE 3
-#endif
-
-#ifndef XLAT_MACROS_ONLY
-
-# ifdef IN_MPERS
-
-#  error static const struct xlat policies in mpers mode
-
-# else
-
-static
-const struct xlat policies[] = {
- XLAT(MPOL_DEFAULT),
- XLAT(MPOL_PREFERRED),
- XLAT(MPOL_BIND),
- XLAT(MPOL_INTERLEAVE),
- XLAT_END
-};
-
-# endif /* !IN_MPERS */
-
-#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/policies.in b/xlat/policies.in
deleted file mode 100644 (file)
index fab5396..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-MPOL_DEFAULT   0
-MPOL_PREFERRED 1
-MPOL_BIND      2
-MPOL_INTERLEAVE        3
index f0fd1448f1fc5064260748f9cbd2a770d65b22ce..26c8f3fad55550dd3d2fb546c370f57a7e96f6cd 100644 (file)
@@ -155,59 +155,252 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 #ifndef XLAT_MACROS_ONLY
 
-# ifdef IN_MPERS
+# ifndef IN_MPERS
 
-#  error static const struct xlat pollflags in mpers mode
-
-# else
-
-static
-const struct xlat pollflags[] = {
+static const struct xlat_data pollflags_xdata[] = {
  XLAT(POLLIN),
+ #define XLAT_VAL_0 ((unsigned) (POLLIN))
+ #define XLAT_STR_0 STRINGIFY(POLLIN)
  XLAT(POLLPRI),
+ #define XLAT_VAL_1 ((unsigned) (POLLPRI))
+ #define XLAT_STR_1 STRINGIFY(POLLPRI)
  XLAT(POLLOUT),
+ #define XLAT_VAL_2 ((unsigned) (POLLOUT))
+ #define XLAT_STR_2 STRINGIFY(POLLOUT)
  XLAT(POLLERR),
+ #define XLAT_VAL_3 ((unsigned) (POLLERR))
+ #define XLAT_STR_3 STRINGIFY(POLLERR)
  XLAT(POLLHUP),
+ #define XLAT_VAL_4 ((unsigned) (POLLHUP))
+ #define XLAT_STR_4 STRINGIFY(POLLHUP)
  XLAT(POLLNVAL),
+ #define XLAT_VAL_5 ((unsigned) (POLLNVAL))
+ #define XLAT_STR_5 STRINGIFY(POLLNVAL)
  XLAT(POLLRDNORM),
+ #define XLAT_VAL_6 ((unsigned) (POLLRDNORM))
+ #define XLAT_STR_6 STRINGIFY(POLLRDNORM)
  XLAT(POLLRDBAND),
+ #define XLAT_VAL_7 ((unsigned) (POLLRDBAND))
+ #define XLAT_STR_7 STRINGIFY(POLLRDBAND)
 
 #if defined(__m68k__) || defined(__mips__) || defined(__sparc__) || defined(__xtensa__)
 
 #else
  XLAT(POLLWRNORM),
+ #define XLAT_VAL_8 ((unsigned) (POLLWRNORM))
+ #define XLAT_STR_8 STRINGIFY(POLLWRNORM)
 #endif
 
 #if defined(__m68k__) || defined(__mips__) || defined(__sparc__) || defined(__xtensa__)
  XLAT(POLLWRBAND),
+ #define XLAT_VAL_9 ((unsigned) (POLLWRBAND))
+ #define XLAT_STR_9 STRINGIFY(POLLWRBAND)
 #else
  XLAT(POLLWRBAND),
+ #define XLAT_VAL_10 ((unsigned) (POLLWRBAND))
+ #define XLAT_STR_10 STRINGIFY(POLLWRBAND)
 #endif
 
 #if defined(__sparc__)
  XLAT(POLLMSG),
+ #define XLAT_VAL_11 ((unsigned) (POLLMSG))
+ #define XLAT_STR_11 STRINGIFY(POLLMSG)
 #else
  XLAT(POLLMSG),
+ #define XLAT_VAL_12 ((unsigned) (POLLMSG))
+ #define XLAT_STR_12 STRINGIFY(POLLMSG)
 #endif
 
 #if defined(__sparc__)
  XLAT(POLLREMOVE),
+ #define XLAT_VAL_13 ((unsigned) (POLLREMOVE))
+ #define XLAT_STR_13 STRINGIFY(POLLREMOVE)
 #elif defined(__xtensa__)
  XLAT(POLLREMOVE),
+ #define XLAT_VAL_14 ((unsigned) (POLLREMOVE))
+ #define XLAT_STR_14 STRINGIFY(POLLREMOVE)
 #else
  XLAT(POLLREMOVE),
+ #define XLAT_VAL_15 ((unsigned) (POLLREMOVE))
+ #define XLAT_STR_15 STRINGIFY(POLLREMOVE)
 #endif
 
 #if defined(__sparc__)
  XLAT(POLLRDHUP),
+ #define XLAT_VAL_16 ((unsigned) (POLLRDHUP))
+ #define XLAT_STR_16 STRINGIFY(POLLRDHUP)
 #else
  XLAT(POLLRDHUP),
+ #define XLAT_VAL_17 ((unsigned) (POLLRDHUP))
+ #define XLAT_STR_17 STRINGIFY(POLLRDHUP)
 #endif
 
  XLAT(POLL_BUSY_LOOP),
- XLAT_END
+ #define XLAT_VAL_18 ((unsigned) (POLL_BUSY_LOOP))
+ #define XLAT_STR_18 STRINGIFY(POLL_BUSY_LOOP)
 };
+const struct xlat pollflags[1] = { {
+ .data = pollflags_xdata,
+ .size = ARRAY_SIZE(pollflags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 2a89ebaab40083eaafcf65ecb3eab4520324f94c..34120a8b940cc94e041e87ac3bd9bd05f7bbc423 100644 (file)
@@ -40,15 +40,63 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat pr_cap_ambient[] = {
- XLAT(PR_CAP_AMBIENT_IS_SET),
- XLAT(PR_CAP_AMBIENT_RAISE),
- XLAT(PR_CAP_AMBIENT_LOWER),
- XLAT(PR_CAP_AMBIENT_CLEAR_ALL),
- XLAT_END
+static const struct xlat_data pr_cap_ambient_xdata[] = {
+ [PR_CAP_AMBIENT_IS_SET] = XLAT(PR_CAP_AMBIENT_IS_SET),
+ #define XLAT_VAL_0 ((unsigned) (PR_CAP_AMBIENT_IS_SET))
+ #define XLAT_STR_0 STRINGIFY(PR_CAP_AMBIENT_IS_SET)
+ [PR_CAP_AMBIENT_RAISE] = XLAT(PR_CAP_AMBIENT_RAISE),
+ #define XLAT_VAL_1 ((unsigned) (PR_CAP_AMBIENT_RAISE))
+ #define XLAT_STR_1 STRINGIFY(PR_CAP_AMBIENT_RAISE)
+ [PR_CAP_AMBIENT_LOWER] = XLAT(PR_CAP_AMBIENT_LOWER),
+ #define XLAT_VAL_2 ((unsigned) (PR_CAP_AMBIENT_LOWER))
+ #define XLAT_STR_2 STRINGIFY(PR_CAP_AMBIENT_LOWER)
+ [PR_CAP_AMBIENT_CLEAR_ALL] = XLAT(PR_CAP_AMBIENT_CLEAR_ALL),
+ #define XLAT_VAL_3 ((unsigned) (PR_CAP_AMBIENT_CLEAR_ALL))
+ #define XLAT_STR_3 STRINGIFY(PR_CAP_AMBIENT_CLEAR_ALL)
 };
+static
+const struct xlat pr_cap_ambient[1] = { {
+ .data = pr_cap_ambient_xdata,
+ .size = ARRAY_SIZE(pr_cap_ambient_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 0f0d2f26575f450eb5eb49bbc56358b661990ff6..321fe364fd174a563f62bc663243b7ed50b86ae6 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 PR_CAP_AMBIENT_IS_SET  1
 PR_CAP_AMBIENT_RAISE   2
 PR_CAP_AMBIENT_LOWER   3
index 0a9404afbf8a6495f6e7cfac2a9096f51353e688..a39c3889028bf50bb60f7d8cc107741b0a73ca48 100644 (file)
@@ -33,15 +33,53 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat pr_dumpable[] = {
+static const struct xlat_data pr_dumpable_xdata[] = {
 
- XLAT(SUID_DUMP_DISABLE),
- XLAT(SUID_DUMP_USER),
- XLAT(SUID_DUMP_ROOT),
- XLAT_END
+ [SUID_DUMP_DISABLE] = XLAT(SUID_DUMP_DISABLE),
+ #define XLAT_VAL_0 ((unsigned) (SUID_DUMP_DISABLE))
+ #define XLAT_STR_0 STRINGIFY(SUID_DUMP_DISABLE)
+ [SUID_DUMP_USER] = XLAT(SUID_DUMP_USER),
+ #define XLAT_VAL_1 ((unsigned) (SUID_DUMP_USER))
+ #define XLAT_STR_1 STRINGIFY(SUID_DUMP_USER)
+ [SUID_DUMP_ROOT] = XLAT(SUID_DUMP_ROOT),
+ #define XLAT_VAL_2 ((unsigned) (SUID_DUMP_ROOT))
+ #define XLAT_STR_2 STRINGIFY(SUID_DUMP_ROOT)
 };
+static
+const struct xlat pr_dumpable[1] = { {
+ .data = pr_dumpable_xdata,
+ .size = ARRAY_SIZE(pr_dumpable_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 0334b0b9ba7d44eb1521e186ca5af5075314a39a..b73fb648d6a4bd9b2c7e79e41f8192081c7c64bf 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 /* Defined in include/linux/sched.h */
 SUID_DUMP_DISABLE      0       /* No setuid dumping */
 SUID_DUMP_USER         1       /* Dump as user of process */
index 40a59db4e047d99b456fb5b492ae5b085518156f..9955c27696165b11be0efb3840ada1a7661a9eaa 100644 (file)
@@ -26,13 +26,41 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat pr_fp_mode[] = {
+static const struct xlat_data pr_fp_mode_xdata[] = {
  XLAT(PR_FP_MODE_FR),
+ #define XLAT_VAL_0 ((unsigned) (PR_FP_MODE_FR))
+ #define XLAT_STR_0 STRINGIFY(PR_FP_MODE_FR)
  XLAT(PR_FP_MODE_FRE),
- XLAT_END
+ #define XLAT_VAL_1 ((unsigned) (PR_FP_MODE_FRE))
+ #define XLAT_STR_1 STRINGIFY(PR_FP_MODE_FRE)
 };
+static
+const struct xlat pr_fp_mode[1] = { {
+ .data = pr_fp_mode_xdata,
+ .size = ARRAY_SIZE(pr_fp_mode_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 1c490fe3fc52b12ae645bbc2fe9cdaff76a1016a..aad6132dca9c5876922d90ab3d0fc336e9814884 100644 (file)
@@ -26,13 +26,41 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat pr_mce_kill[] = {
- XLAT(PR_MCE_KILL_CLEAR),
- XLAT(PR_MCE_KILL_SET),
- XLAT_END
+static const struct xlat_data pr_mce_kill_xdata[] = {
+ [PR_MCE_KILL_CLEAR] = XLAT(PR_MCE_KILL_CLEAR),
+ #define XLAT_VAL_0 ((unsigned) (PR_MCE_KILL_CLEAR))
+ #define XLAT_STR_0 STRINGIFY(PR_MCE_KILL_CLEAR)
+ [PR_MCE_KILL_SET] = XLAT(PR_MCE_KILL_SET),
+ #define XLAT_VAL_1 ((unsigned) (PR_MCE_KILL_SET))
+ #define XLAT_STR_1 STRINGIFY(PR_MCE_KILL_SET)
 };
+static
+const struct xlat pr_mce_kill[1] = { {
+ .data = pr_mce_kill_xdata,
+ .size = ARRAY_SIZE(pr_mce_kill_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 574e55f25a5ff6e2128a431505fbb38064e5120b..66f5121f2a82c491f07518376a64b5d82e28d5aa 100644 (file)
@@ -1,2 +1,3 @@
+#value_indexed
 PR_MCE_KILL_CLEAR 0
 PR_MCE_KILL_SET 1
index d60e2cad4be85bc26f91e1c4bad536641ca9f95e..a68044da441a142ea6aa357d0e9041880f75a7a0 100644 (file)
@@ -33,14 +33,52 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat pr_mce_kill_policy[] = {
- XLAT(PR_MCE_KILL_LATE),
- XLAT(PR_MCE_KILL_EARLY),
- XLAT(PR_MCE_KILL_DEFAULT),
- XLAT_END
+static const struct xlat_data pr_mce_kill_policy_xdata[] = {
+ [PR_MCE_KILL_LATE] = XLAT(PR_MCE_KILL_LATE),
+ #define XLAT_VAL_0 ((unsigned) (PR_MCE_KILL_LATE))
+ #define XLAT_STR_0 STRINGIFY(PR_MCE_KILL_LATE)
+ [PR_MCE_KILL_EARLY] = XLAT(PR_MCE_KILL_EARLY),
+ #define XLAT_VAL_1 ((unsigned) (PR_MCE_KILL_EARLY))
+ #define XLAT_STR_1 STRINGIFY(PR_MCE_KILL_EARLY)
+ [PR_MCE_KILL_DEFAULT] = XLAT(PR_MCE_KILL_DEFAULT),
+ #define XLAT_VAL_2 ((unsigned) (PR_MCE_KILL_DEFAULT))
+ #define XLAT_STR_2 STRINGIFY(PR_MCE_KILL_DEFAULT)
 };
+static
+const struct xlat pr_mce_kill_policy[1] = { {
+ .data = pr_mce_kill_policy_xdata,
+ .size = ARRAY_SIZE(pr_mce_kill_policy_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 510b566ba96e397fd8f7517fa41797ba7e9ad007..ad05cbf134a493cb5d9b95e792bd63aeed9a4df4 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 PR_MCE_KILL_LATE 0
 PR_MCE_KILL_EARLY 1
 PR_MCE_KILL_DEFAULT 2
index e70ffc254d7d8db96b3237e2456f101100ff5a5a..d515b7a546f5f04acaa62ae86fa9ef529cf9ac81 100644 (file)
@@ -117,26 +117,184 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat pr_set_mm[] = {
- XLAT(PR_SET_MM_START_CODE),
- XLAT(PR_SET_MM_END_CODE),
- XLAT(PR_SET_MM_START_DATA),
- XLAT(PR_SET_MM_END_DATA),
- XLAT(PR_SET_MM_START_STACK),
- XLAT(PR_SET_MM_START_BRK),
- XLAT(PR_SET_MM_BRK),
- XLAT(PR_SET_MM_ARG_START),
- XLAT(PR_SET_MM_ARG_END),
- XLAT(PR_SET_MM_ENV_START),
- XLAT(PR_SET_MM_ENV_END),
- XLAT(PR_SET_MM_AUXV),
- XLAT(PR_SET_MM_EXE_FILE),
- XLAT(PR_SET_MM_MAP),
- XLAT(PR_SET_MM_MAP_SIZE),
- XLAT_END
+static const struct xlat_data pr_set_mm_xdata[] = {
+ [PR_SET_MM_START_CODE] = XLAT(PR_SET_MM_START_CODE),
+ #define XLAT_VAL_0 ((unsigned) (PR_SET_MM_START_CODE))
+ #define XLAT_STR_0 STRINGIFY(PR_SET_MM_START_CODE)
+ [PR_SET_MM_END_CODE] = XLAT(PR_SET_MM_END_CODE),
+ #define XLAT_VAL_1 ((unsigned) (PR_SET_MM_END_CODE))
+ #define XLAT_STR_1 STRINGIFY(PR_SET_MM_END_CODE)
+ [PR_SET_MM_START_DATA] = XLAT(PR_SET_MM_START_DATA),
+ #define XLAT_VAL_2 ((unsigned) (PR_SET_MM_START_DATA))
+ #define XLAT_STR_2 STRINGIFY(PR_SET_MM_START_DATA)
+ [PR_SET_MM_END_DATA] = XLAT(PR_SET_MM_END_DATA),
+ #define XLAT_VAL_3 ((unsigned) (PR_SET_MM_END_DATA))
+ #define XLAT_STR_3 STRINGIFY(PR_SET_MM_END_DATA)
+ [PR_SET_MM_START_STACK] = XLAT(PR_SET_MM_START_STACK),
+ #define XLAT_VAL_4 ((unsigned) (PR_SET_MM_START_STACK))
+ #define XLAT_STR_4 STRINGIFY(PR_SET_MM_START_STACK)
+ [PR_SET_MM_START_BRK] = XLAT(PR_SET_MM_START_BRK),
+ #define XLAT_VAL_5 ((unsigned) (PR_SET_MM_START_BRK))
+ #define XLAT_STR_5 STRINGIFY(PR_SET_MM_START_BRK)
+ [PR_SET_MM_BRK] = XLAT(PR_SET_MM_BRK),
+ #define XLAT_VAL_6 ((unsigned) (PR_SET_MM_BRK))
+ #define XLAT_STR_6 STRINGIFY(PR_SET_MM_BRK)
+ [PR_SET_MM_ARG_START] = XLAT(PR_SET_MM_ARG_START),
+ #define XLAT_VAL_7 ((unsigned) (PR_SET_MM_ARG_START))
+ #define XLAT_STR_7 STRINGIFY(PR_SET_MM_ARG_START)
+ [PR_SET_MM_ARG_END] = XLAT(PR_SET_MM_ARG_END),
+ #define XLAT_VAL_8 ((unsigned) (PR_SET_MM_ARG_END))
+ #define XLAT_STR_8 STRINGIFY(PR_SET_MM_ARG_END)
+ [PR_SET_MM_ENV_START] = XLAT(PR_SET_MM_ENV_START),
+ #define XLAT_VAL_9 ((unsigned) (PR_SET_MM_ENV_START))
+ #define XLAT_STR_9 STRINGIFY(PR_SET_MM_ENV_START)
+ [PR_SET_MM_ENV_END] = XLAT(PR_SET_MM_ENV_END),
+ #define XLAT_VAL_10 ((unsigned) (PR_SET_MM_ENV_END))
+ #define XLAT_STR_10 STRINGIFY(PR_SET_MM_ENV_END)
+ [PR_SET_MM_AUXV] = XLAT(PR_SET_MM_AUXV),
+ #define XLAT_VAL_11 ((unsigned) (PR_SET_MM_AUXV))
+ #define XLAT_STR_11 STRINGIFY(PR_SET_MM_AUXV)
+ [PR_SET_MM_EXE_FILE] = XLAT(PR_SET_MM_EXE_FILE),
+ #define XLAT_VAL_12 ((unsigned) (PR_SET_MM_EXE_FILE))
+ #define XLAT_STR_12 STRINGIFY(PR_SET_MM_EXE_FILE)
+ [PR_SET_MM_MAP] = XLAT(PR_SET_MM_MAP),
+ #define XLAT_VAL_13 ((unsigned) (PR_SET_MM_MAP))
+ #define XLAT_STR_13 STRINGIFY(PR_SET_MM_MAP)
+ [PR_SET_MM_MAP_SIZE] = XLAT(PR_SET_MM_MAP_SIZE),
+ #define XLAT_VAL_14 ((unsigned) (PR_SET_MM_MAP_SIZE))
+ #define XLAT_STR_14 STRINGIFY(PR_SET_MM_MAP_SIZE)
 };
+static
+const struct xlat pr_set_mm[1] = { {
+ .data = pr_set_mm_xdata,
+ .size = ARRAY_SIZE(pr_set_mm_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 191ba8db5ead2f09d88090ead61b4fa76cc2cd04..65dda08091cefd36a0dd4d699b869748b7ff4771 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 PR_SET_MM_START_CODE 1
 PR_SET_MM_END_CODE 2
 PR_SET_MM_START_DATA 3
index 9fa9f6530d349f85b1300dc3bf23bff655117f2f..f8ea3ef5a6708bc74bf58b77127c29ba5896f3d3 100644 (file)
@@ -26,13 +26,41 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat pr_spec_cmds[] = {
+static const struct xlat_data pr_spec_cmds_xdata[] = {
  [PR_SPEC_STORE_BYPASS] = XLAT(PR_SPEC_STORE_BYPASS),
+ #define XLAT_VAL_0 ((unsigned) (PR_SPEC_STORE_BYPASS))
+ #define XLAT_STR_0 STRINGIFY(PR_SPEC_STORE_BYPASS)
  [PR_SPEC_INDIRECT_BRANCH] = XLAT(PR_SPEC_INDIRECT_BRANCH),
- XLAT_END
+ #define XLAT_VAL_1 ((unsigned) (PR_SPEC_INDIRECT_BRANCH))
+ #define XLAT_STR_1 STRINGIFY(PR_SPEC_INDIRECT_BRANCH)
 };
+static
+const struct xlat pr_spec_cmds[1] = { {
+ .data = pr_spec_cmds_xdata,
+ .size = ARRAY_SIZE(pr_spec_cmds_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 340d88db0325f61a5210e366a0c954d3055e3bf7..b991cbe44b8ee250670d285e18565a0132f0274a 100644 (file)
@@ -54,17 +54,85 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat pr_spec_get_store_bypass_flags[] = {
+static const struct xlat_data pr_spec_get_store_bypass_flags_xdata[] = {
  XLAT(PR_SPEC_NOT_AFFECTED),
+ #define XLAT_VAL_0 ((unsigned) (PR_SPEC_NOT_AFFECTED))
+ #define XLAT_STR_0 STRINGIFY(PR_SPEC_NOT_AFFECTED)
  XLAT(PR_SPEC_PRCTL),
+ #define XLAT_VAL_1 ((unsigned) (PR_SPEC_PRCTL))
+ #define XLAT_STR_1 STRINGIFY(PR_SPEC_PRCTL)
  XLAT(PR_SPEC_ENABLE),
+ #define XLAT_VAL_2 ((unsigned) (PR_SPEC_ENABLE))
+ #define XLAT_STR_2 STRINGIFY(PR_SPEC_ENABLE)
  XLAT(PR_SPEC_DISABLE),
+ #define XLAT_VAL_3 ((unsigned) (PR_SPEC_DISABLE))
+ #define XLAT_STR_3 STRINGIFY(PR_SPEC_DISABLE)
  XLAT(PR_SPEC_FORCE_DISABLE),
+ #define XLAT_VAL_4 ((unsigned) (PR_SPEC_FORCE_DISABLE))
+ #define XLAT_STR_4 STRINGIFY(PR_SPEC_FORCE_DISABLE)
  XLAT(PR_SPEC_DISABLE_NOEXEC),
- XLAT_END
+ #define XLAT_VAL_5 ((unsigned) (PR_SPEC_DISABLE_NOEXEC))
+ #define XLAT_STR_5 STRINGIFY(PR_SPEC_DISABLE_NOEXEC)
 };
+static
+const struct xlat pr_spec_get_store_bypass_flags[1] = { {
+ .data = pr_spec_get_store_bypass_flags_xdata,
+ .size = ARRAY_SIZE(pr_spec_get_store_bypass_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index b3ebe584033ffe80d500e2fbed6f16681b945d9d..ad8a4fe6ef951c747c18e3dc25bfe6075531cdcc 100644 (file)
@@ -40,15 +40,63 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat pr_spec_set_store_bypass_flags[] = {
+static const struct xlat_data pr_spec_set_store_bypass_flags_xdata[] = {
  XLAT(PR_SPEC_ENABLE),
+ #define XLAT_VAL_0 ((unsigned) (PR_SPEC_ENABLE))
+ #define XLAT_STR_0 STRINGIFY(PR_SPEC_ENABLE)
  XLAT(PR_SPEC_DISABLE),
+ #define XLAT_VAL_1 ((unsigned) (PR_SPEC_DISABLE))
+ #define XLAT_STR_1 STRINGIFY(PR_SPEC_DISABLE)
  XLAT(PR_SPEC_FORCE_DISABLE),
+ #define XLAT_VAL_2 ((unsigned) (PR_SPEC_FORCE_DISABLE))
+ #define XLAT_STR_2 STRINGIFY(PR_SPEC_FORCE_DISABLE)
  XLAT(PR_SPEC_DISABLE_NOEXEC),
- XLAT_END
+ #define XLAT_VAL_3 ((unsigned) (PR_SPEC_DISABLE_NOEXEC))
+ #define XLAT_STR_3 STRINGIFY(PR_SPEC_DISABLE_NOEXEC)
 };
+static
+const struct xlat pr_spec_set_store_bypass_flags[1] = { {
+ .data = pr_spec_set_store_bypass_flags_xdata,
+ .size = ARRAY_SIZE(pr_spec_set_store_bypass_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 9a524b0127087b6ce7718fd075741951738bc1ef..2c419a37fa5e07f136309277fedb21093b965b14 100644 (file)
@@ -26,13 +26,41 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat pr_sve_vl_flags[] = {
+static const struct xlat_data pr_sve_vl_flags_xdata[] = {
  XLAT(PR_SVE_SET_VL_ONEXEC),
+ #define XLAT_VAL_0 ((unsigned) (PR_SVE_SET_VL_ONEXEC))
+ #define XLAT_STR_0 STRINGIFY(PR_SVE_SET_VL_ONEXEC)
  XLAT(PR_SVE_VL_INHERIT),
- XLAT_END
+ #define XLAT_VAL_1 ((unsigned) (PR_SVE_VL_INHERIT))
+ #define XLAT_STR_1 STRINGIFY(PR_SVE_VL_INHERIT)
 };
+static
+const struct xlat pr_sve_vl_flags[1] = { {
+ .data = pr_sve_vl_flags_xdata,
+ .size = ARRAY_SIZE(pr_sve_vl_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 52b8caf05a7358d95b5938c6cbf125ec6fd18601..5aea8b5611b28ae2ca5caf4213c5caf59081d5fa 100644 (file)
@@ -26,13 +26,41 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat pr_tsc[] = {
- XLAT(PR_TSC_ENABLE),
- XLAT(PR_TSC_SIGSEGV),
- XLAT_END
+static const struct xlat_data pr_tsc_xdata[] = {
+ [PR_TSC_ENABLE] = XLAT(PR_TSC_ENABLE),
+ #define XLAT_VAL_0 ((unsigned) (PR_TSC_ENABLE))
+ #define XLAT_STR_0 STRINGIFY(PR_TSC_ENABLE)
+ [PR_TSC_SIGSEGV] = XLAT(PR_TSC_SIGSEGV),
+ #define XLAT_VAL_1 ((unsigned) (PR_TSC_SIGSEGV))
+ #define XLAT_STR_1 STRINGIFY(PR_TSC_SIGSEGV)
 };
+static
+const struct xlat pr_tsc[1] = { {
+ .data = pr_tsc_xdata,
+ .size = ARRAY_SIZE(pr_tsc_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index d03aafc7f999efa30e17ab256c3a3f025a87864d..2c3eb002614aa99cacf102f4bb82438698457926 100644 (file)
@@ -1,2 +1,3 @@
+#value_indexed
 PR_TSC_ENABLE 1
 PR_TSC_SIGSEGV 2
index e80c130fe6b205200af46e68af6a531a96af8e1e..5b7769c65be4fa4ade18577d08c7c76ae09a4ee5 100644 (file)
@@ -26,13 +26,41 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat pr_unalign_flags[] = {
+static const struct xlat_data pr_unalign_flags_xdata[] = {
  XLAT(PR_UNALIGN_NOPRINT),
+ #define XLAT_VAL_0 ((unsigned) (PR_UNALIGN_NOPRINT))
+ #define XLAT_STR_0 STRINGIFY(PR_UNALIGN_NOPRINT)
  XLAT(PR_UNALIGN_SIGBUS),
- XLAT_END
+ #define XLAT_VAL_1 ((unsigned) (PR_UNALIGN_SIGBUS))
+ #define XLAT_STR_1 STRINGIFY(PR_UNALIGN_SIGBUS)
 };
+static
+const struct xlat pr_unalign_flags[1] = { {
+ .data = pr_unalign_flags_xdata,
+ .size = ARRAY_SIZE(pr_unalign_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 89061d6e5de32cc64c28f5d2fd40f95f98a31ac8..eb53835ceeebca3931578d844ce44dddc34fd18e 100644 (file)
@@ -234,13 +234,6 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define PR_SET_MM 35
 #endif
-#if defined(PR_SET_PTRACER) || (defined(HAVE_DECL_PR_SET_PTRACER) && HAVE_DECL_PR_SET_PTRACER)
-DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((PR_SET_PTRACER) == (0x59616d61), "PR_SET_PTRACER != 0x59616d61");
-DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
-#else
-# define PR_SET_PTRACER 0x59616d61
-#endif
 #if defined(PR_SET_CHILD_SUBREAPER) || (defined(HAVE_DECL_PR_SET_CHILD_SUBREAPER) && HAVE_DECL_PR_SET_CHILD_SUBREAPER)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
 static_assert((PR_SET_CHILD_SUBREAPER) == (36), "PR_SET_CHILD_SUBREAPER != 36");
@@ -360,6 +353,34 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define PR_PAC_RESET_KEYS 54
 #endif
+#if defined(PR_SET_TAGGED_ADDR_CTRL) || (defined(HAVE_DECL_PR_SET_TAGGED_ADDR_CTRL) && HAVE_DECL_PR_SET_TAGGED_ADDR_CTRL)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PR_SET_TAGGED_ADDR_CTRL) == (55), "PR_SET_TAGGED_ADDR_CTRL != 55");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PR_SET_TAGGED_ADDR_CTRL 55
+#endif
+#if defined(PR_GET_TAGGED_ADDR_CTRL) || (defined(HAVE_DECL_PR_GET_TAGGED_ADDR_CTRL) && HAVE_DECL_PR_GET_TAGGED_ADDR_CTRL)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PR_GET_TAGGED_ADDR_CTRL) == (56), "PR_GET_TAGGED_ADDR_CTRL != 56");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PR_GET_TAGGED_ADDR_CTRL 56
+#endif
+#if defined(PR_SET_IO_FLUSHER) || (defined(HAVE_DECL_PR_SET_IO_FLUSHER) && HAVE_DECL_PR_SET_IO_FLUSHER)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PR_SET_IO_FLUSHER) == (57), "PR_SET_IO_FLUSHER != 57");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PR_SET_IO_FLUSHER 57
+#endif
+#if defined(PR_GET_IO_FLUSHER) || (defined(HAVE_DECL_PR_GET_IO_FLUSHER) && HAVE_DECL_PR_GET_IO_FLUSHER)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PR_GET_IO_FLUSHER) == (58), "PR_GET_IO_FLUSHER != 58");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PR_GET_IO_FLUSHER 58
+#endif
 #if defined(PR_SET_VMA) || (defined(HAVE_DECL_PR_SET_VMA) && HAVE_DECL_PR_SET_VMA)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
 static_assert((PR_SET_VMA) == (0x53564d41), "PR_SET_VMA != 0x53564d41");
@@ -367,6 +388,13 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define PR_SET_VMA 0x53564d41
 #endif
+#if defined(PR_SET_PTRACER) || (defined(HAVE_DECL_PR_SET_PTRACER) && HAVE_DECL_PR_SET_PTRACER)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PR_SET_PTRACER) == (0x59616d61), "PR_SET_PTRACER != 0x59616d61");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PR_SET_PTRACER 0x59616d61
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
@@ -376,63 +404,635 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat prctl_options[] = {
+static const struct xlat_data prctl_options_xdata[] = {
  XLAT(PR_SET_PDEATHSIG),
+ #define XLAT_VAL_0 ((unsigned) (PR_SET_PDEATHSIG))
+ #define XLAT_STR_0 STRINGIFY(PR_SET_PDEATHSIG)
  XLAT(PR_GET_PDEATHSIG),
+ #define XLAT_VAL_1 ((unsigned) (PR_GET_PDEATHSIG))
+ #define XLAT_STR_1 STRINGIFY(PR_GET_PDEATHSIG)
  XLAT(PR_GET_DUMPABLE),
+ #define XLAT_VAL_2 ((unsigned) (PR_GET_DUMPABLE))
+ #define XLAT_STR_2 STRINGIFY(PR_GET_DUMPABLE)
  XLAT(PR_SET_DUMPABLE),
+ #define XLAT_VAL_3 ((unsigned) (PR_SET_DUMPABLE))
+ #define XLAT_STR_3 STRINGIFY(PR_SET_DUMPABLE)
  XLAT(PR_GET_UNALIGN),
+ #define XLAT_VAL_4 ((unsigned) (PR_GET_UNALIGN))
+ #define XLAT_STR_4 STRINGIFY(PR_GET_UNALIGN)
  XLAT(PR_SET_UNALIGN),
+ #define XLAT_VAL_5 ((unsigned) (PR_SET_UNALIGN))
+ #define XLAT_STR_5 STRINGIFY(PR_SET_UNALIGN)
  XLAT(PR_GET_KEEPCAPS),
+ #define XLAT_VAL_6 ((unsigned) (PR_GET_KEEPCAPS))
+ #define XLAT_STR_6 STRINGIFY(PR_GET_KEEPCAPS)
  XLAT(PR_SET_KEEPCAPS),
+ #define XLAT_VAL_7 ((unsigned) (PR_SET_KEEPCAPS))
+ #define XLAT_STR_7 STRINGIFY(PR_SET_KEEPCAPS)
  XLAT(PR_GET_FPEMU),
+ #define XLAT_VAL_8 ((unsigned) (PR_GET_FPEMU))
+ #define XLAT_STR_8 STRINGIFY(PR_GET_FPEMU)
  XLAT(PR_SET_FPEMU),
+ #define XLAT_VAL_9 ((unsigned) (PR_SET_FPEMU))
+ #define XLAT_STR_9 STRINGIFY(PR_SET_FPEMU)
  XLAT(PR_GET_FPEXC),
+ #define XLAT_VAL_10 ((unsigned) (PR_GET_FPEXC))
+ #define XLAT_STR_10 STRINGIFY(PR_GET_FPEXC)
  XLAT(PR_SET_FPEXC),
+ #define XLAT_VAL_11 ((unsigned) (PR_SET_FPEXC))
+ #define XLAT_STR_11 STRINGIFY(PR_SET_FPEXC)
  XLAT(PR_GET_TIMING),
+ #define XLAT_VAL_12 ((unsigned) (PR_GET_TIMING))
+ #define XLAT_STR_12 STRINGIFY(PR_GET_TIMING)
  XLAT(PR_SET_TIMING),
+ #define XLAT_VAL_13 ((unsigned) (PR_SET_TIMING))
+ #define XLAT_STR_13 STRINGIFY(PR_SET_TIMING)
  XLAT(PR_SET_NAME),
+ #define XLAT_VAL_14 ((unsigned) (PR_SET_NAME))
+ #define XLAT_STR_14 STRINGIFY(PR_SET_NAME)
  XLAT(PR_GET_NAME),
+ #define XLAT_VAL_15 ((unsigned) (PR_GET_NAME))
+ #define XLAT_STR_15 STRINGIFY(PR_GET_NAME)
  XLAT(PR_GET_ENDIAN),
+ #define XLAT_VAL_16 ((unsigned) (PR_GET_ENDIAN))
+ #define XLAT_STR_16 STRINGIFY(PR_GET_ENDIAN)
  XLAT(PR_SET_ENDIAN),
+ #define XLAT_VAL_17 ((unsigned) (PR_SET_ENDIAN))
+ #define XLAT_STR_17 STRINGIFY(PR_SET_ENDIAN)
  XLAT(PR_GET_SECCOMP),
+ #define XLAT_VAL_18 ((unsigned) (PR_GET_SECCOMP))
+ #define XLAT_STR_18 STRINGIFY(PR_GET_SECCOMP)
  XLAT(PR_SET_SECCOMP),
+ #define XLAT_VAL_19 ((unsigned) (PR_SET_SECCOMP))
+ #define XLAT_STR_19 STRINGIFY(PR_SET_SECCOMP)
  XLAT(PR_CAPBSET_READ),
+ #define XLAT_VAL_20 ((unsigned) (PR_CAPBSET_READ))
+ #define XLAT_STR_20 STRINGIFY(PR_CAPBSET_READ)
  XLAT(PR_CAPBSET_DROP),
+ #define XLAT_VAL_21 ((unsigned) (PR_CAPBSET_DROP))
+ #define XLAT_STR_21 STRINGIFY(PR_CAPBSET_DROP)
  XLAT(PR_GET_TSC),
+ #define XLAT_VAL_22 ((unsigned) (PR_GET_TSC))
+ #define XLAT_STR_22 STRINGIFY(PR_GET_TSC)
  XLAT(PR_SET_TSC),
+ #define XLAT_VAL_23 ((unsigned) (PR_SET_TSC))
+ #define XLAT_STR_23 STRINGIFY(PR_SET_TSC)
  XLAT(PR_GET_SECUREBITS),
+ #define XLAT_VAL_24 ((unsigned) (PR_GET_SECUREBITS))
+ #define XLAT_STR_24 STRINGIFY(PR_GET_SECUREBITS)
  XLAT(PR_SET_SECUREBITS),
+ #define XLAT_VAL_25 ((unsigned) (PR_SET_SECUREBITS))
+ #define XLAT_STR_25 STRINGIFY(PR_SET_SECUREBITS)
  XLAT(PR_SET_TIMERSLACK),
+ #define XLAT_VAL_26 ((unsigned) (PR_SET_TIMERSLACK))
+ #define XLAT_STR_26 STRINGIFY(PR_SET_TIMERSLACK)
  XLAT(PR_GET_TIMERSLACK),
+ #define XLAT_VAL_27 ((unsigned) (PR_GET_TIMERSLACK))
+ #define XLAT_STR_27 STRINGIFY(PR_GET_TIMERSLACK)
  XLAT(PR_TASK_PERF_EVENTS_DISABLE),
+ #define XLAT_VAL_28 ((unsigned) (PR_TASK_PERF_EVENTS_DISABLE))
+ #define XLAT_STR_28 STRINGIFY(PR_TASK_PERF_EVENTS_DISABLE)
  XLAT(PR_TASK_PERF_EVENTS_ENABLE),
+ #define XLAT_VAL_29 ((unsigned) (PR_TASK_PERF_EVENTS_ENABLE))
+ #define XLAT_STR_29 STRINGIFY(PR_TASK_PERF_EVENTS_ENABLE)
  XLAT(PR_MCE_KILL),
+ #define XLAT_VAL_30 ((unsigned) (PR_MCE_KILL))
+ #define XLAT_STR_30 STRINGIFY(PR_MCE_KILL)
  XLAT(PR_MCE_KILL_GET),
+ #define XLAT_VAL_31 ((unsigned) (PR_MCE_KILL_GET))
+ #define XLAT_STR_31 STRINGIFY(PR_MCE_KILL_GET)
  XLAT(PR_SET_MM),
- XLAT(PR_SET_PTRACER),
+ #define XLAT_VAL_32 ((unsigned) (PR_SET_MM))
+ #define XLAT_STR_32 STRINGIFY(PR_SET_MM)
  XLAT(PR_SET_CHILD_SUBREAPER),
+ #define XLAT_VAL_33 ((unsigned) (PR_SET_CHILD_SUBREAPER))
+ #define XLAT_STR_33 STRINGIFY(PR_SET_CHILD_SUBREAPER)
  XLAT(PR_GET_CHILD_SUBREAPER),
+ #define XLAT_VAL_34 ((unsigned) (PR_GET_CHILD_SUBREAPER))
+ #define XLAT_STR_34 STRINGIFY(PR_GET_CHILD_SUBREAPER)
  XLAT(PR_SET_NO_NEW_PRIVS),
+ #define XLAT_VAL_35 ((unsigned) (PR_SET_NO_NEW_PRIVS))
+ #define XLAT_STR_35 STRINGIFY(PR_SET_NO_NEW_PRIVS)
  XLAT(PR_GET_NO_NEW_PRIVS),
+ #define XLAT_VAL_36 ((unsigned) (PR_GET_NO_NEW_PRIVS))
+ #define XLAT_STR_36 STRINGIFY(PR_GET_NO_NEW_PRIVS)
  XLAT(PR_GET_TID_ADDRESS),
+ #define XLAT_VAL_37 ((unsigned) (PR_GET_TID_ADDRESS))
+ #define XLAT_STR_37 STRINGIFY(PR_GET_TID_ADDRESS)
  XLAT(PR_SET_THP_DISABLE),
+ #define XLAT_VAL_38 ((unsigned) (PR_SET_THP_DISABLE))
+ #define XLAT_STR_38 STRINGIFY(PR_SET_THP_DISABLE)
  XLAT(PR_GET_THP_DISABLE),
+ #define XLAT_VAL_39 ((unsigned) (PR_GET_THP_DISABLE))
+ #define XLAT_STR_39 STRINGIFY(PR_GET_THP_DISABLE)
  XLAT(PR_MPX_ENABLE_MANAGEMENT),
+ #define XLAT_VAL_40 ((unsigned) (PR_MPX_ENABLE_MANAGEMENT))
+ #define XLAT_STR_40 STRINGIFY(PR_MPX_ENABLE_MANAGEMENT)
  XLAT(PR_MPX_DISABLE_MANAGEMENT),
+ #define XLAT_VAL_41 ((unsigned) (PR_MPX_DISABLE_MANAGEMENT))
+ #define XLAT_STR_41 STRINGIFY(PR_MPX_DISABLE_MANAGEMENT)
  XLAT(PR_SET_FP_MODE),
+ #define XLAT_VAL_42 ((unsigned) (PR_SET_FP_MODE))
+ #define XLAT_STR_42 STRINGIFY(PR_SET_FP_MODE)
  XLAT(PR_GET_FP_MODE),
+ #define XLAT_VAL_43 ((unsigned) (PR_GET_FP_MODE))
+ #define XLAT_STR_43 STRINGIFY(PR_GET_FP_MODE)
  XLAT(PR_CAP_AMBIENT),
+ #define XLAT_VAL_44 ((unsigned) (PR_CAP_AMBIENT))
+ #define XLAT_STR_44 STRINGIFY(PR_CAP_AMBIENT)
  XLAT(PR_SVE_SET_VL),
+ #define XLAT_VAL_45 ((unsigned) (PR_SVE_SET_VL))
+ #define XLAT_STR_45 STRINGIFY(PR_SVE_SET_VL)
  XLAT(PR_SVE_GET_VL),
+ #define XLAT_VAL_46 ((unsigned) (PR_SVE_GET_VL))
+ #define XLAT_STR_46 STRINGIFY(PR_SVE_GET_VL)
  XLAT(PR_GET_SPECULATION_CTRL),
+ #define XLAT_VAL_47 ((unsigned) (PR_GET_SPECULATION_CTRL))
+ #define XLAT_STR_47 STRINGIFY(PR_GET_SPECULATION_CTRL)
  XLAT(PR_SET_SPECULATION_CTRL),
+ #define XLAT_VAL_48 ((unsigned) (PR_SET_SPECULATION_CTRL))
+ #define XLAT_STR_48 STRINGIFY(PR_SET_SPECULATION_CTRL)
  XLAT(PR_PAC_RESET_KEYS),
+ #define XLAT_VAL_49 ((unsigned) (PR_PAC_RESET_KEYS))
+ #define XLAT_STR_49 STRINGIFY(PR_PAC_RESET_KEYS)
+ XLAT(PR_SET_TAGGED_ADDR_CTRL),
+ #define XLAT_VAL_50 ((unsigned) (PR_SET_TAGGED_ADDR_CTRL))
+ #define XLAT_STR_50 STRINGIFY(PR_SET_TAGGED_ADDR_CTRL)
+ XLAT(PR_GET_TAGGED_ADDR_CTRL),
+ #define XLAT_VAL_51 ((unsigned) (PR_GET_TAGGED_ADDR_CTRL))
+ #define XLAT_STR_51 STRINGIFY(PR_GET_TAGGED_ADDR_CTRL)
+ XLAT(PR_SET_IO_FLUSHER),
+ #define XLAT_VAL_52 ((unsigned) (PR_SET_IO_FLUSHER))
+ #define XLAT_STR_52 STRINGIFY(PR_SET_IO_FLUSHER)
+ XLAT(PR_GET_IO_FLUSHER),
+ #define XLAT_VAL_53 ((unsigned) (PR_GET_IO_FLUSHER))
+ #define XLAT_STR_53 STRINGIFY(PR_GET_IO_FLUSHER)
  XLAT(PR_SET_VMA),
- XLAT_END
+ #define XLAT_VAL_54 ((unsigned) (PR_SET_VMA))
+ #define XLAT_STR_54 STRINGIFY(PR_SET_VMA)
+ XLAT(PR_SET_PTRACER),
+ #define XLAT_VAL_55 ((unsigned) (PR_SET_PTRACER))
+ #define XLAT_STR_55 STRINGIFY(PR_SET_PTRACER)
 };
+static
+const struct xlat prctl_options[1] = { {
+ .data = prctl_options_xdata,
+ .size = ARRAY_SIZE(prctl_options_xdata),
+ .type = XT_SORTED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+#  ifdef XLAT_VAL_30
+  | XLAT_VAL_30
+#  endif
+#  ifdef XLAT_VAL_31
+  | XLAT_VAL_31
+#  endif
+#  ifdef XLAT_VAL_32
+  | XLAT_VAL_32
+#  endif
+#  ifdef XLAT_VAL_33
+  | XLAT_VAL_33
+#  endif
+#  ifdef XLAT_VAL_34
+  | XLAT_VAL_34
+#  endif
+#  ifdef XLAT_VAL_35
+  | XLAT_VAL_35
+#  endif
+#  ifdef XLAT_VAL_36
+  | XLAT_VAL_36
+#  endif
+#  ifdef XLAT_VAL_37
+  | XLAT_VAL_37
+#  endif
+#  ifdef XLAT_VAL_38
+  | XLAT_VAL_38
+#  endif
+#  ifdef XLAT_VAL_39
+  | XLAT_VAL_39
+#  endif
+#  ifdef XLAT_VAL_40
+  | XLAT_VAL_40
+#  endif
+#  ifdef XLAT_VAL_41
+  | XLAT_VAL_41
+#  endif
+#  ifdef XLAT_VAL_42
+  | XLAT_VAL_42
+#  endif
+#  ifdef XLAT_VAL_43
+  | XLAT_VAL_43
+#  endif
+#  ifdef XLAT_VAL_44
+  | XLAT_VAL_44
+#  endif
+#  ifdef XLAT_VAL_45
+  | XLAT_VAL_45
+#  endif
+#  ifdef XLAT_VAL_46
+  | XLAT_VAL_46
+#  endif
+#  ifdef XLAT_VAL_47
+  | XLAT_VAL_47
+#  endif
+#  ifdef XLAT_VAL_48
+  | XLAT_VAL_48
+#  endif
+#  ifdef XLAT_VAL_49
+  | XLAT_VAL_49
+#  endif
+#  ifdef XLAT_VAL_50
+  | XLAT_VAL_50
+#  endif
+#  ifdef XLAT_VAL_51
+  | XLAT_VAL_51
+#  endif
+#  ifdef XLAT_VAL_52
+  | XLAT_VAL_52
+#  endif
+#  ifdef XLAT_VAL_53
+  | XLAT_VAL_53
+#  endif
+#  ifdef XLAT_VAL_54
+  | XLAT_VAL_54
+#  endif
+#  ifdef XLAT_VAL_55
+  | XLAT_VAL_55
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+#  ifdef XLAT_STR_30
+  + sizeof(XLAT_STR_30)
+#  endif
+#  ifdef XLAT_STR_31
+  + sizeof(XLAT_STR_31)
+#  endif
+#  ifdef XLAT_STR_32
+  + sizeof(XLAT_STR_32)
+#  endif
+#  ifdef XLAT_STR_33
+  + sizeof(XLAT_STR_33)
+#  endif
+#  ifdef XLAT_STR_34
+  + sizeof(XLAT_STR_34)
+#  endif
+#  ifdef XLAT_STR_35
+  + sizeof(XLAT_STR_35)
+#  endif
+#  ifdef XLAT_STR_36
+  + sizeof(XLAT_STR_36)
+#  endif
+#  ifdef XLAT_STR_37
+  + sizeof(XLAT_STR_37)
+#  endif
+#  ifdef XLAT_STR_38
+  + sizeof(XLAT_STR_38)
+#  endif
+#  ifdef XLAT_STR_39
+  + sizeof(XLAT_STR_39)
+#  endif
+#  ifdef XLAT_STR_40
+  + sizeof(XLAT_STR_40)
+#  endif
+#  ifdef XLAT_STR_41
+  + sizeof(XLAT_STR_41)
+#  endif
+#  ifdef XLAT_STR_42
+  + sizeof(XLAT_STR_42)
+#  endif
+#  ifdef XLAT_STR_43
+  + sizeof(XLAT_STR_43)
+#  endif
+#  ifdef XLAT_STR_44
+  + sizeof(XLAT_STR_44)
+#  endif
+#  ifdef XLAT_STR_45
+  + sizeof(XLAT_STR_45)
+#  endif
+#  ifdef XLAT_STR_46
+  + sizeof(XLAT_STR_46)
+#  endif
+#  ifdef XLAT_STR_47
+  + sizeof(XLAT_STR_47)
+#  endif
+#  ifdef XLAT_STR_48
+  + sizeof(XLAT_STR_48)
+#  endif
+#  ifdef XLAT_STR_49
+  + sizeof(XLAT_STR_49)
+#  endif
+#  ifdef XLAT_STR_50
+  + sizeof(XLAT_STR_50)
+#  endif
+#  ifdef XLAT_STR_51
+  + sizeof(XLAT_STR_51)
+#  endif
+#  ifdef XLAT_STR_52
+  + sizeof(XLAT_STR_52)
+#  endif
+#  ifdef XLAT_STR_53
+  + sizeof(XLAT_STR_53)
+#  endif
+#  ifdef XLAT_STR_54
+  + sizeof(XLAT_STR_54)
+#  endif
+#  ifdef XLAT_STR_55
+  + sizeof(XLAT_STR_55)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
+#  undef XLAT_STR_30
+#  undef XLAT_VAL_30
+#  undef XLAT_STR_31
+#  undef XLAT_VAL_31
+#  undef XLAT_STR_32
+#  undef XLAT_VAL_32
+#  undef XLAT_STR_33
+#  undef XLAT_VAL_33
+#  undef XLAT_STR_34
+#  undef XLAT_VAL_34
+#  undef XLAT_STR_35
+#  undef XLAT_VAL_35
+#  undef XLAT_STR_36
+#  undef XLAT_VAL_36
+#  undef XLAT_STR_37
+#  undef XLAT_VAL_37
+#  undef XLAT_STR_38
+#  undef XLAT_VAL_38
+#  undef XLAT_STR_39
+#  undef XLAT_VAL_39
+#  undef XLAT_STR_40
+#  undef XLAT_VAL_40
+#  undef XLAT_STR_41
+#  undef XLAT_VAL_41
+#  undef XLAT_STR_42
+#  undef XLAT_VAL_42
+#  undef XLAT_STR_43
+#  undef XLAT_VAL_43
+#  undef XLAT_STR_44
+#  undef XLAT_VAL_44
+#  undef XLAT_STR_45
+#  undef XLAT_VAL_45
+#  undef XLAT_STR_46
+#  undef XLAT_VAL_46
+#  undef XLAT_STR_47
+#  undef XLAT_VAL_47
+#  undef XLAT_STR_48
+#  undef XLAT_VAL_48
+#  undef XLAT_STR_49
+#  undef XLAT_VAL_49
+#  undef XLAT_STR_50
+#  undef XLAT_VAL_50
+#  undef XLAT_STR_51
+#  undef XLAT_VAL_51
+#  undef XLAT_STR_52
+#  undef XLAT_VAL_52
+#  undef XLAT_STR_53
+#  undef XLAT_VAL_53
+#  undef XLAT_STR_54
+#  undef XLAT_VAL_54
+#  undef XLAT_STR_55
+#  undef XLAT_VAL_55
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 22706faf00868e5e880c4ef92ac892d06e7d3acd..892fff60165faf9f68147c949082cd074fd33d1f 100644 (file)
@@ -1,52 +1,57 @@
-PR_SET_PDEATHSIG 1
-PR_GET_PDEATHSIG 2
-PR_GET_DUMPABLE 3
-PR_SET_DUMPABLE 4
-PR_GET_UNALIGN 5
-PR_SET_UNALIGN 6
-PR_GET_KEEPCAPS 7
-PR_SET_KEEPCAPS 8
-PR_GET_FPEMU 9
-PR_SET_FPEMU 10
-PR_GET_FPEXC 11
-PR_SET_FPEXC 12
-PR_GET_TIMING 13
-PR_SET_TIMING 14
-PR_SET_NAME 15
-PR_GET_NAME 16
-PR_GET_ENDIAN 19
-PR_SET_ENDIAN 20
-PR_GET_SECCOMP 21
-PR_SET_SECCOMP 22
-PR_CAPBSET_READ 23
-PR_CAPBSET_DROP 24
-PR_GET_TSC 25
-PR_SET_TSC 26
-PR_GET_SECUREBITS 27
-PR_SET_SECUREBITS 28
-PR_SET_TIMERSLACK 29
-PR_GET_TIMERSLACK 30
-PR_TASK_PERF_EVENTS_DISABLE 31
-PR_TASK_PERF_EVENTS_ENABLE 32
-PR_MCE_KILL 33
-PR_MCE_KILL_GET 34
-PR_SET_MM 35
-PR_SET_PTRACER 0x59616d61
-PR_SET_CHILD_SUBREAPER 36
-PR_GET_CHILD_SUBREAPER 37
-PR_SET_NO_NEW_PRIVS 38
-PR_GET_NO_NEW_PRIVS 39
-PR_GET_TID_ADDRESS 40
-PR_SET_THP_DISABLE 41
-PR_GET_THP_DISABLE 42
-PR_MPX_ENABLE_MANAGEMENT 43
-PR_MPX_DISABLE_MANAGEMENT 44
-PR_SET_FP_MODE 45
-PR_GET_FP_MODE 46
-PR_CAP_AMBIENT 47
-PR_SVE_SET_VL 50
-PR_SVE_GET_VL 51
-PR_GET_SPECULATION_CTRL 52
-PR_SET_SPECULATION_CTRL 53
-PR_PAC_RESET_KEYS 54
-PR_SET_VMA 0x53564d41
+#sorted
+PR_SET_PDEATHSIG               1
+PR_GET_PDEATHSIG               2
+PR_GET_DUMPABLE                        3
+PR_SET_DUMPABLE                        4
+PR_GET_UNALIGN                 5
+PR_SET_UNALIGN                 6
+PR_GET_KEEPCAPS                        7
+PR_SET_KEEPCAPS                        8
+PR_GET_FPEMU                   9
+PR_SET_FPEMU                   10
+PR_GET_FPEXC                   11
+PR_SET_FPEXC                   12
+PR_GET_TIMING                  13
+PR_SET_TIMING                  14
+PR_SET_NAME                    15
+PR_GET_NAME                    16
+PR_GET_ENDIAN                  19
+PR_SET_ENDIAN                  20
+PR_GET_SECCOMP                 21
+PR_SET_SECCOMP                 22
+PR_CAPBSET_READ                        23
+PR_CAPBSET_DROP                        24
+PR_GET_TSC                     25
+PR_SET_TSC                     26
+PR_GET_SECUREBITS              27
+PR_SET_SECUREBITS              28
+PR_SET_TIMERSLACK              29
+PR_GET_TIMERSLACK              30
+PR_TASK_PERF_EVENTS_DISABLE    31
+PR_TASK_PERF_EVENTS_ENABLE     32
+PR_MCE_KILL                    33
+PR_MCE_KILL_GET                        34
+PR_SET_MM                      35
+PR_SET_CHILD_SUBREAPER         36
+PR_GET_CHILD_SUBREAPER         37
+PR_SET_NO_NEW_PRIVS            38
+PR_GET_NO_NEW_PRIVS            39
+PR_GET_TID_ADDRESS             40
+PR_SET_THP_DISABLE             41
+PR_GET_THP_DISABLE             42
+PR_MPX_ENABLE_MANAGEMENT       43
+PR_MPX_DISABLE_MANAGEMENT      44
+PR_SET_FP_MODE                 45
+PR_GET_FP_MODE                 46
+PR_CAP_AMBIENT                 47
+PR_SVE_SET_VL                  50
+PR_SVE_GET_VL                  51
+PR_GET_SPECULATION_CTRL                52
+PR_SET_SPECULATION_CTRL                53
+PR_PAC_RESET_KEYS              54
+PR_SET_TAGGED_ADDR_CTRL                55
+PR_GET_TAGGED_ADDR_CTRL                56
+PR_SET_IO_FLUSHER              57
+PR_GET_IO_FLUSHER              58
+PR_SET_VMA                     0x53564d41 /* "SVMA" */
+PR_SET_PTRACER                 0x59616d61 /* "Yama" */
index 0163ee7669b924c4ff589c9d8dc4a3f851b031c3..cbcd7b1608f46ee073930703fe1bb5df35a8ff32 100644 (file)
 
 # else
 
-static
-const struct xlat priorities[] = {
+static const struct xlat_data priorities_xdata[] = {
 #if defined(PRIO_PROCESS) || (defined(HAVE_DECL_PRIO_PROCESS) && HAVE_DECL_PRIO_PROCESS)
   XLAT(PRIO_PROCESS),
+ #define XLAT_VAL_0 ((unsigned) (PRIO_PROCESS))
+ #define XLAT_STR_0 STRINGIFY(PRIO_PROCESS)
 #endif
 #if defined(PRIO_PGRP) || (defined(HAVE_DECL_PRIO_PGRP) && HAVE_DECL_PRIO_PGRP)
   XLAT(PRIO_PGRP),
+ #define XLAT_VAL_1 ((unsigned) (PRIO_PGRP))
+ #define XLAT_STR_1 STRINGIFY(PRIO_PGRP)
 #endif
 #if defined(PRIO_USER) || (defined(HAVE_DECL_PRIO_USER) && HAVE_DECL_PRIO_USER)
   XLAT(PRIO_USER),
+ #define XLAT_VAL_2 ((unsigned) (PRIO_USER))
+ #define XLAT_STR_2 STRINGIFY(PRIO_USER)
 #endif
- XLAT_END
 };
+static
+const struct xlat priorities[1] = { {
+ .data = priorities_xdata,
+ .size = ARRAY_SIZE(priorities_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/ptp_extts_flags.h b/xlat/ptp_extts_flags.h
new file mode 100644 (file)
index 0000000..c8aa8e2
--- /dev/null
@@ -0,0 +1,102 @@
+/* Generated by ./xlat/gen.sh from ./xlat/ptp_extts_flags.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(PTP_ENABLE_FEATURE) || (defined(HAVE_DECL_PTP_ENABLE_FEATURE) && HAVE_DECL_PTP_ENABLE_FEATURE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTP_ENABLE_FEATURE) == ((1<<0)), "PTP_ENABLE_FEATURE != (1<<0)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTP_ENABLE_FEATURE (1<<0)
+#endif
+#if defined(PTP_RISING_EDGE) || (defined(HAVE_DECL_PTP_RISING_EDGE) && HAVE_DECL_PTP_RISING_EDGE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTP_RISING_EDGE) == ((1<<1)), "PTP_RISING_EDGE != (1<<1)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTP_RISING_EDGE (1<<1)
+#endif
+#if defined(PTP_FALLING_EDGE) || (defined(HAVE_DECL_PTP_FALLING_EDGE) && HAVE_DECL_PTP_FALLING_EDGE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTP_FALLING_EDGE) == ((1<<2)), "PTP_FALLING_EDGE != (1<<2)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTP_FALLING_EDGE (1<<2)
+#endif
+#if defined(PTP_STRICT_FLAGS) || (defined(HAVE_DECL_PTP_STRICT_FLAGS) && HAVE_DECL_PTP_STRICT_FLAGS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTP_STRICT_FLAGS) == ((1<<3)), "PTP_STRICT_FLAGS != (1<<3)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTP_STRICT_FLAGS (1<<3)
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat ptp_extts_flags in mpers mode
+
+# else
+
+static const struct xlat_data ptp_extts_flags_xdata[] = {
+ XLAT(PTP_ENABLE_FEATURE),
+ #define XLAT_VAL_0 ((unsigned) (PTP_ENABLE_FEATURE))
+ #define XLAT_STR_0 STRINGIFY(PTP_ENABLE_FEATURE)
+ XLAT(PTP_RISING_EDGE),
+ #define XLAT_VAL_1 ((unsigned) (PTP_RISING_EDGE))
+ #define XLAT_STR_1 STRINGIFY(PTP_RISING_EDGE)
+ XLAT(PTP_FALLING_EDGE),
+ #define XLAT_VAL_2 ((unsigned) (PTP_FALLING_EDGE))
+ #define XLAT_STR_2 STRINGIFY(PTP_FALLING_EDGE)
+ XLAT(PTP_STRICT_FLAGS),
+ #define XLAT_VAL_3 ((unsigned) (PTP_STRICT_FLAGS))
+ #define XLAT_STR_3 STRINGIFY(PTP_STRICT_FLAGS)
+};
+static
+const struct xlat ptp_extts_flags[1] = { {
+ .data = ptp_extts_flags_xdata,
+ .size = ARRAY_SIZE(ptp_extts_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/ptp_extts_flags.in b/xlat/ptp_extts_flags.in
new file mode 100644 (file)
index 0000000..63e8fc9
--- /dev/null
@@ -0,0 +1,4 @@
+PTP_ENABLE_FEATURE     (1<<0)
+PTP_RISING_EDGE                (1<<1)
+PTP_FALLING_EDGE       (1<<2)
+PTP_STRICT_FLAGS       (1<<3)
diff --git a/xlat/ptp_flags_options.h b/xlat/ptp_flags_options.h
deleted file mode 100644 (file)
index df4e2d3..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Generated by ./xlat/gen.sh from ./xlat/ptp_flags_options.in; do not edit. */
-
-#include "gcc_compat.h"
-#include "static_assert.h"
-
-
-#ifndef XLAT_MACROS_ONLY
-
-# ifdef IN_MPERS
-
-#  error static const struct xlat ptp_flags_options in mpers mode
-
-# else
-
-static
-const struct xlat ptp_flags_options[] = {
-#if defined(PTP_ENABLE_FEATURE) || (defined(HAVE_DECL_PTP_ENABLE_FEATURE) && HAVE_DECL_PTP_ENABLE_FEATURE)
-  XLAT(PTP_ENABLE_FEATURE),
-#endif
-#if defined(PTP_RISING_EDGE) || (defined(HAVE_DECL_PTP_RISING_EDGE) && HAVE_DECL_PTP_RISING_EDGE)
-  XLAT(PTP_RISING_EDGE),
-#endif
-#if defined(PTP_FALLING_EDGE) || (defined(HAVE_DECL_PTP_FALLING_EDGE) && HAVE_DECL_PTP_FALLING_EDGE)
-  XLAT(PTP_FALLING_EDGE),
-#endif
- XLAT_END
-};
-
-# endif /* !IN_MPERS */
-
-#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/ptp_flags_options.in b/xlat/ptp_flags_options.in
deleted file mode 100644 (file)
index 9e65c7d..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-PTP_ENABLE_FEATURE
-PTP_RISING_EDGE
-PTP_FALLING_EDGE
diff --git a/xlat/ptp_perout_flags.h b/xlat/ptp_perout_flags.h
new file mode 100644 (file)
index 0000000..b6236be
--- /dev/null
@@ -0,0 +1,84 @@
+/* Generated by ./xlat/gen.sh from ./xlat/ptp_perout_flags.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(PTP_PEROUT_ONE_SHOT) || (defined(HAVE_DECL_PTP_PEROUT_ONE_SHOT) && HAVE_DECL_PTP_PEROUT_ONE_SHOT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTP_PEROUT_ONE_SHOT) == ((1<<0)), "PTP_PEROUT_ONE_SHOT != (1<<0)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTP_PEROUT_ONE_SHOT (1<<0)
+#endif
+#if defined(PTP_PEROUT_DUTY_CYCLE) || (defined(HAVE_DECL_PTP_PEROUT_DUTY_CYCLE) && HAVE_DECL_PTP_PEROUT_DUTY_CYCLE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTP_PEROUT_DUTY_CYCLE) == ((1<<1)), "PTP_PEROUT_DUTY_CYCLE != (1<<1)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTP_PEROUT_DUTY_CYCLE (1<<1)
+#endif
+#if defined(PTP_PEROUT_PHASE) || (defined(HAVE_DECL_PTP_PEROUT_PHASE) && HAVE_DECL_PTP_PEROUT_PHASE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTP_PEROUT_PHASE) == ((1<<2)), "PTP_PEROUT_PHASE != (1<<2)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTP_PEROUT_PHASE (1<<2)
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat ptp_perout_flags in mpers mode
+
+# else
+
+static const struct xlat_data ptp_perout_flags_xdata[] = {
+ XLAT(PTP_PEROUT_ONE_SHOT),
+ #define XLAT_VAL_0 ((unsigned) (PTP_PEROUT_ONE_SHOT))
+ #define XLAT_STR_0 STRINGIFY(PTP_PEROUT_ONE_SHOT)
+ XLAT(PTP_PEROUT_DUTY_CYCLE),
+ #define XLAT_VAL_1 ((unsigned) (PTP_PEROUT_DUTY_CYCLE))
+ #define XLAT_STR_1 STRINGIFY(PTP_PEROUT_DUTY_CYCLE)
+ XLAT(PTP_PEROUT_PHASE),
+ #define XLAT_VAL_2 ((unsigned) (PTP_PEROUT_PHASE))
+ #define XLAT_STR_2 STRINGIFY(PTP_PEROUT_PHASE)
+};
+static
+const struct xlat ptp_perout_flags[1] = { {
+ .data = ptp_perout_flags_xdata,
+ .size = ARRAY_SIZE(ptp_perout_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/ptp_perout_flags.in b/xlat/ptp_perout_flags.in
new file mode 100644 (file)
index 0000000..ecb0c29
--- /dev/null
@@ -0,0 +1,3 @@
+PTP_PEROUT_ONE_SHOT    (1<<0)
+PTP_PEROUT_DUTY_CYCLE  (1<<1)
+PTP_PEROUT_PHASE       (1<<2)
index cc2e8f5a048d4a8482fe728ccf7603e7bbbcd3ca..034fbe3f32a1b8dabbded938c6ec59f71533fc89 100644 (file)
 #include "gcc_compat.h"
 #include "static_assert.h"
 
-
-#ifndef XLAT_MACROS_ONLY
-
-# ifndef IN_MPERS
-
-const struct xlat ptrace_cmds[] = {
 #if defined(PTRACE_TRACEME) || (defined(HAVE_DECL_PTRACE_TRACEME) && HAVE_DECL_PTRACE_TRACEME)
-  XLAT(PTRACE_TRACEME),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_TRACEME) == (0), "PTRACE_TRACEME != 0");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_TRACEME 0
 #endif
 #if defined(PTRACE_PEEKTEXT) || (defined(HAVE_DECL_PTRACE_PEEKTEXT) && HAVE_DECL_PTRACE_PEEKTEXT)
-  XLAT(PTRACE_PEEKTEXT),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_PEEKTEXT) == (0x1), "PTRACE_PEEKTEXT != 0x1");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_PEEKTEXT 0x1
 #endif
 #if defined(PTRACE_PEEKDATA) || (defined(HAVE_DECL_PTRACE_PEEKDATA) && HAVE_DECL_PTRACE_PEEKDATA)
-  XLAT(PTRACE_PEEKDATA),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_PEEKDATA) == (0x2), "PTRACE_PEEKDATA != 0x2");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_PEEKDATA 0x2
 #endif
 #if defined(PTRACE_PEEKUSER) || (defined(HAVE_DECL_PTRACE_PEEKUSER) && HAVE_DECL_PTRACE_PEEKUSER)
-  XLAT(PTRACE_PEEKUSER),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_PEEKUSER) == (0x3), "PTRACE_PEEKUSER != 0x3");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_PEEKUSER 0x3
 #endif
 #if defined(PTRACE_POKETEXT) || (defined(HAVE_DECL_PTRACE_POKETEXT) && HAVE_DECL_PTRACE_POKETEXT)
-  XLAT(PTRACE_POKETEXT),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_POKETEXT) == (0x4), "PTRACE_POKETEXT != 0x4");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_POKETEXT 0x4
 #endif
 #if defined(PTRACE_POKEDATA) || (defined(HAVE_DECL_PTRACE_POKEDATA) && HAVE_DECL_PTRACE_POKEDATA)
-  XLAT(PTRACE_POKEDATA),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_POKEDATA) == (0x5), "PTRACE_POKEDATA != 0x5");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_POKEDATA 0x5
 #endif
 #if defined(PTRACE_POKEUSER) || (defined(HAVE_DECL_PTRACE_POKEUSER) && HAVE_DECL_PTRACE_POKEUSER)
-  XLAT(PTRACE_POKEUSER),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_POKEUSER) == (0x6), "PTRACE_POKEUSER != 0x6");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_POKEUSER 0x6
 #endif
 #if defined(PTRACE_CONT) || (defined(HAVE_DECL_PTRACE_CONT) && HAVE_DECL_PTRACE_CONT)
-  XLAT(PTRACE_CONT),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_CONT) == (0x7), "PTRACE_CONT != 0x7");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_CONT 0x7
 #endif
 #if defined(PTRACE_KILL) || (defined(HAVE_DECL_PTRACE_KILL) && HAVE_DECL_PTRACE_KILL)
-  XLAT(PTRACE_KILL),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_KILL) == (0x8), "PTRACE_KILL != 0x8");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_KILL 0x8
 #endif
 #if defined(PTRACE_SINGLESTEP) || (defined(HAVE_DECL_PTRACE_SINGLESTEP) && HAVE_DECL_PTRACE_SINGLESTEP)
-  XLAT(PTRACE_SINGLESTEP),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_SINGLESTEP) == (0x9), "PTRACE_SINGLESTEP != 0x9");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_SINGLESTEP 0x9
 #endif
 #if defined(PTRACE_ATTACH) || (defined(HAVE_DECL_PTRACE_ATTACH) && HAVE_DECL_PTRACE_ATTACH)
-  XLAT(PTRACE_ATTACH),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_ATTACH) == (0x10), "PTRACE_ATTACH != 0x10");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_ATTACH 0x10
 #endif
+#if !defined __sparc__
 #if defined(PTRACE_DETACH) || (defined(HAVE_DECL_PTRACE_DETACH) && HAVE_DECL_PTRACE_DETACH)
-  XLAT(PTRACE_DETACH),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_DETACH) == (0x11), "PTRACE_DETACH != 0x11");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_DETACH 0x11
+#endif
+#else
 #endif
 #if defined(PTRACE_SYSCALL) || (defined(HAVE_DECL_PTRACE_SYSCALL) && HAVE_DECL_PTRACE_SYSCALL)
-  XLAT(PTRACE_SYSCALL),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_SYSCALL) == (0x18), "PTRACE_SYSCALL != 0x18");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_SYSCALL 0x18
+#endif
+#if defined(PTRACE_SETOPTIONS) || (defined(HAVE_DECL_PTRACE_SETOPTIONS) && HAVE_DECL_PTRACE_SETOPTIONS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_SETOPTIONS) == (0x4200), "PTRACE_SETOPTIONS != 0x4200");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_SETOPTIONS 0x4200
+#endif
+#if defined(PTRACE_GETEVENTMSG) || (defined(HAVE_DECL_PTRACE_GETEVENTMSG) && HAVE_DECL_PTRACE_GETEVENTMSG)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_GETEVENTMSG) == (0x4201), "PTRACE_GETEVENTMSG != 0x4201");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_GETEVENTMSG 0x4201
+#endif
+#if defined(PTRACE_GETSIGINFO) || (defined(HAVE_DECL_PTRACE_GETSIGINFO) && HAVE_DECL_PTRACE_GETSIGINFO)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_GETSIGINFO) == (0x4202), "PTRACE_GETSIGINFO != 0x4202");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_GETSIGINFO 0x4202
+#endif
+#if defined(PTRACE_SETSIGINFO) || (defined(HAVE_DECL_PTRACE_SETSIGINFO) && HAVE_DECL_PTRACE_SETSIGINFO)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_SETSIGINFO) == (0x4203), "PTRACE_SETSIGINFO != 0x4203");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_SETSIGINFO 0x4203
+#endif
+#if defined(PTRACE_GETREGSET) || (defined(HAVE_DECL_PTRACE_GETREGSET) && HAVE_DECL_PTRACE_GETREGSET)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_GETREGSET) == (0x4204), "PTRACE_GETREGSET != 0x4204");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_GETREGSET 0x4204
+#endif
+#if defined(PTRACE_SETREGSET) || (defined(HAVE_DECL_PTRACE_SETREGSET) && HAVE_DECL_PTRACE_SETREGSET)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_SETREGSET) == (0x4205), "PTRACE_SETREGSET != 0x4205");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_SETREGSET 0x4205
+#endif
+#if defined(PTRACE_SEIZE) || (defined(HAVE_DECL_PTRACE_SEIZE) && HAVE_DECL_PTRACE_SEIZE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_SEIZE) == (0x4206), "PTRACE_SEIZE != 0x4206");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_SEIZE 0x4206
 #endif
+#if defined(PTRACE_INTERRUPT) || (defined(HAVE_DECL_PTRACE_INTERRUPT) && HAVE_DECL_PTRACE_INTERRUPT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_INTERRUPT) == (0x4207), "PTRACE_INTERRUPT != 0x4207");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_INTERRUPT 0x4207
+#endif
+#if defined(PTRACE_LISTEN) || (defined(HAVE_DECL_PTRACE_LISTEN) && HAVE_DECL_PTRACE_LISTEN)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_LISTEN) == (0x4208), "PTRACE_LISTEN != 0x4208");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_LISTEN 0x4208
+#endif
+#if defined(PTRACE_PEEKSIGINFO) || (defined(HAVE_DECL_PTRACE_PEEKSIGINFO) && HAVE_DECL_PTRACE_PEEKSIGINFO)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_PEEKSIGINFO) == (0x4209), "PTRACE_PEEKSIGINFO != 0x4209");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_PEEKSIGINFO 0x4209
+#endif
+#if defined(PTRACE_GETSIGMASK) || (defined(HAVE_DECL_PTRACE_GETSIGMASK) && HAVE_DECL_PTRACE_GETSIGMASK)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_GETSIGMASK) == (0x420a), "PTRACE_GETSIGMASK != 0x420a");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_GETSIGMASK 0x420a
+#endif
+#if defined(PTRACE_SETSIGMASK) || (defined(HAVE_DECL_PTRACE_SETSIGMASK) && HAVE_DECL_PTRACE_SETSIGMASK)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_SETSIGMASK) == (0x420b), "PTRACE_SETSIGMASK != 0x420b");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_SETSIGMASK 0x420b
+#endif
+#if defined(PTRACE_SECCOMP_GET_FILTER) || (defined(HAVE_DECL_PTRACE_SECCOMP_GET_FILTER) && HAVE_DECL_PTRACE_SECCOMP_GET_FILTER)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_SECCOMP_GET_FILTER) == (0x420c), "PTRACE_SECCOMP_GET_FILTER != 0x420c");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_SECCOMP_GET_FILTER 0x420c
+#endif
+#if defined(PTRACE_SECCOMP_GET_METADATA) || (defined(HAVE_DECL_PTRACE_SECCOMP_GET_METADATA) && HAVE_DECL_PTRACE_SECCOMP_GET_METADATA)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_SECCOMP_GET_METADATA) == (0x420d), "PTRACE_SECCOMP_GET_METADATA != 0x420d");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_SECCOMP_GET_METADATA 0x420d
+#endif
+#if defined(PTRACE_GET_SYSCALL_INFO) || (defined(HAVE_DECL_PTRACE_GET_SYSCALL_INFO) && HAVE_DECL_PTRACE_GET_SYSCALL_INFO)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_GET_SYSCALL_INFO) == (0x420e), "PTRACE_GET_SYSCALL_INFO != 0x420e");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_GET_SYSCALL_INFO 0x420e
+#endif
+#if defined __arm__ || defined __m68k__ || defined __mips__ || defined __powerpc__ || defined __sh__ || defined __sparc__ || defined __x86_64__ || defined __i386__ || defined __xtensa__
 #if defined(PTRACE_GETREGS) || (defined(HAVE_DECL_PTRACE_GETREGS) && HAVE_DECL_PTRACE_GETREGS)
-  XLAT(PTRACE_GETREGS),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_GETREGS) == (0xc), "PTRACE_GETREGS != 0xc");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_GETREGS 0xc
 #endif
+#elif defined __hppa__ || defined __ia64__
+#if defined(PTRACE_GETREGS) || (defined(HAVE_DECL_PTRACE_GETREGS) && HAVE_DECL_PTRACE_GETREGS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_GETREGS) == (0x12), "PTRACE_GETREGS != 0x12");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_GETREGS 0x12
+#endif
+#else
+#endif
+#if defined __arm__ || defined __m68k__ || defined __mips__ || defined __powerpc__ || defined __sh__ || defined __sparc__ || defined __x86_64__ || defined __i386__ || defined __xtensa__
 #if defined(PTRACE_SETREGS) || (defined(HAVE_DECL_PTRACE_SETREGS) && HAVE_DECL_PTRACE_SETREGS)
-  XLAT(PTRACE_SETREGS),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_SETREGS) == (0xd), "PTRACE_SETREGS != 0xd");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_SETREGS 0xd
 #endif
+#elif defined __hppa__ || defined __ia64__
+#if defined(PTRACE_SETREGS) || (defined(HAVE_DECL_PTRACE_SETREGS) && HAVE_DECL_PTRACE_SETREGS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_SETREGS) == (0x13), "PTRACE_SETREGS != 0x13");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_SETREGS 0x13
+#endif
+#else
+#endif
+#if defined __arm__ || defined __hppa__ || defined __m68k__ || defined __mips__ || defined __powerpc__ || defined __sh__ || defined __sparc__ || defined __x86_64__ || defined __i386__
 #if defined(PTRACE_GETFPREGS) || (defined(HAVE_DECL_PTRACE_GETFPREGS) && HAVE_DECL_PTRACE_GETFPREGS)
-  XLAT(PTRACE_GETFPREGS),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_GETFPREGS) == (0xe), "PTRACE_GETFPREGS != 0xe");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_GETFPREGS 0xe
 #endif
+#else
+#endif
+#if defined __arm__ || defined __hppa__ || defined __m68k__ || defined __mips__ || defined __powerpc__ || defined __sh__ || defined __sparc__ || defined __x86_64__ || defined __i386__
 #if defined(PTRACE_SETFPREGS) || (defined(HAVE_DECL_PTRACE_SETFPREGS) && HAVE_DECL_PTRACE_SETFPREGS)
-  XLAT(PTRACE_SETFPREGS),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_SETFPREGS) == (0xf), "PTRACE_SETFPREGS != 0xf");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_SETFPREGS 0xf
+#endif
+#else
 #endif
+#if defined __mips__ || defined __x86_64__ || defined __i386__
 #if defined(PTRACE_GETFPXREGS) || (defined(HAVE_DECL_PTRACE_GETFPXREGS) && HAVE_DECL_PTRACE_GETFPXREGS)
-  XLAT(PTRACE_GETFPXREGS),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_GETFPXREGS) == (0x12), "PTRACE_GETFPXREGS != 0x12");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_GETFPXREGS 0x12
+#endif
+#else
 #endif
+#if defined __mips__ || defined __x86_64__ || defined __i386__
 #if defined(PTRACE_SETFPXREGS) || (defined(HAVE_DECL_PTRACE_SETFPXREGS) && HAVE_DECL_PTRACE_SETFPXREGS)
-  XLAT(PTRACE_SETFPXREGS),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_SETFPXREGS) == (0x13), "PTRACE_SETFPXREGS != 0x13");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_SETFPXREGS 0x13
+#endif
+#else
+#endif
+#if defined __xtensa__
+#if defined(PTRACE_GETHBPREGS) || (defined(HAVE_DECL_PTRACE_GETHBPREGS) && HAVE_DECL_PTRACE_GETHBPREGS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_GETHBPREGS) == (0x14), "PTRACE_GETHBPREGS != 0x14");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_GETHBPREGS 0x14
+#endif
+#elif defined __arm__
+#if defined(PTRACE_GETHBPREGS) || (defined(HAVE_DECL_PTRACE_GETHBPREGS) && HAVE_DECL_PTRACE_GETHBPREGS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_GETHBPREGS) == (0x1d), "PTRACE_GETHBPREGS != 0x1d");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_GETHBPREGS 0x1d
+#endif
+#else
+#endif
+#if defined __xtensa__
+#if defined(PTRACE_SETHBPREGS) || (defined(HAVE_DECL_PTRACE_SETHBPREGS) && HAVE_DECL_PTRACE_SETHBPREGS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_SETHBPREGS) == (0x15), "PTRACE_SETHBPREGS != 0x15");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_SETHBPREGS 0x15
+#endif
+#elif defined __arm__
+#if defined(PTRACE_SETHBPREGS) || (defined(HAVE_DECL_PTRACE_SETHBPREGS) && HAVE_DECL_PTRACE_SETHBPREGS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_SETHBPREGS) == (0x1e), "PTRACE_SETHBPREGS != 0x1e");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_SETHBPREGS 0x1e
+#endif
+#else
+#endif
+#if defined __arm__ || defined __ia64__ || defined __mips__ || defined __s390__ || defined __x86_64__ || defined __i386__
+#if defined(PTRACE_OLDSETOPTIONS) || (defined(HAVE_DECL_PTRACE_OLDSETOPTIONS) && HAVE_DECL_PTRACE_OLDSETOPTIONS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_OLDSETOPTIONS) == (0x15), "PTRACE_OLDSETOPTIONS != 0x15");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_OLDSETOPTIONS 0x15
+#endif
+#else
+#endif
+#if defined __powerpc__ || defined __sparc__
+#if defined(PTRACE_GETREGS64) || (defined(HAVE_DECL_PTRACE_GETREGS64) && HAVE_DECL_PTRACE_GETREGS64)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_GETREGS64) == (0x16), "PTRACE_GETREGS64 != 0x16");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_GETREGS64 0x16
+#endif
+#else
+#endif
+#if defined __powerpc__ || defined __sparc__
+#if defined(PTRACE_SETREGS64) || (defined(HAVE_DECL_PTRACE_SETREGS64) && HAVE_DECL_PTRACE_SETREGS64)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_SETREGS64) == (0x17), "PTRACE_SETREGS64 != 0x17");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_SETREGS64 0x17
+#endif
+#else
+#endif
+#if defined __arm__ || defined __unicore32__
+#if defined(PTRACE_GET_THREAD_AREA) || (defined(HAVE_DECL_PTRACE_GET_THREAD_AREA) && HAVE_DECL_PTRACE_GET_THREAD_AREA)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_GET_THREAD_AREA) == (0x16), "PTRACE_GET_THREAD_AREA != 0x16");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_GET_THREAD_AREA 0x16
+#endif
+#elif defined __arc__ || defined __m68k__ || defined __mips__ || defined __x86_64__ || defined __i386__
+#if defined(PTRACE_GET_THREAD_AREA) || (defined(HAVE_DECL_PTRACE_GET_THREAD_AREA) && HAVE_DECL_PTRACE_GET_THREAD_AREA)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_GET_THREAD_AREA) == (0x19), "PTRACE_GET_THREAD_AREA != 0x19");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_GET_THREAD_AREA 0x19
+#endif
+#else
+#endif
+#if defined __mips__ || defined __x86_64__ || defined __i386__
+#if defined(PTRACE_SET_THREAD_AREA) || (defined(HAVE_DECL_PTRACE_SET_THREAD_AREA) && HAVE_DECL_PTRACE_SET_THREAD_AREA)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_SET_THREAD_AREA) == (0x1a), "PTRACE_SET_THREAD_AREA != 0x1a");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_SET_THREAD_AREA 0x1a
+#endif
+#else
+#endif
+#if defined __arm__ || defined __c6x__ || defined __sh__
+#if defined(PTRACE_GETFDPIC) || (defined(HAVE_DECL_PTRACE_GETFDPIC) && HAVE_DECL_PTRACE_GETFDPIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_GETFDPIC) == (0x1f), "PTRACE_GETFDPIC != 0x1f");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_GETFDPIC 0x1f
+#endif
+#else
+#endif
+#if defined __powerpc__
+#if defined(PTRACE_SYSEMU) || (defined(HAVE_DECL_PTRACE_SYSEMU) && HAVE_DECL_PTRACE_SYSEMU)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_SYSEMU) == (0x1d), "PTRACE_SYSEMU != 0x1d");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_SYSEMU 0x1d
+#endif
+#elif defined __arm64__ || defined __aarch64__ || defined __x86_64__ || defined __i386__
+#if defined(PTRACE_SYSEMU) || (defined(HAVE_DECL_PTRACE_SYSEMU) && HAVE_DECL_PTRACE_SYSEMU)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_SYSEMU) == (0x1f), "PTRACE_SYSEMU != 0x1f");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_SYSEMU 0x1f
+#endif
+#else
+#endif
+#if defined __powerpc__
+#if defined(PTRACE_SYSEMU_SINGLESTEP) || (defined(HAVE_DECL_PTRACE_SYSEMU_SINGLESTEP) && HAVE_DECL_PTRACE_SYSEMU_SINGLESTEP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_SYSEMU_SINGLESTEP) == (0x1e), "PTRACE_SYSEMU_SINGLESTEP != 0x1e");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_SYSEMU_SINGLESTEP 0x1e
+#endif
+#elif defined __arm64__ || defined __aarch64__ || defined __x86_64__ || defined __i386__
+#if defined(PTRACE_SYSEMU_SINGLESTEP) || (defined(HAVE_DECL_PTRACE_SYSEMU_SINGLESTEP) && HAVE_DECL_PTRACE_SYSEMU_SINGLESTEP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_SYSEMU_SINGLESTEP) == (0x20), "PTRACE_SYSEMU_SINGLESTEP != 0x20");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_SYSEMU_SINGLESTEP 0x20
+#endif
+#else
+#endif
+#if defined __hppa__ || defined __ia64__ || defined __s390__
+#if defined(PTRACE_SINGLEBLOCK) || (defined(HAVE_DECL_PTRACE_SINGLEBLOCK) && HAVE_DECL_PTRACE_SINGLEBLOCK)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_SINGLEBLOCK) == (0xc), "PTRACE_SINGLEBLOCK != 0xc");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_SINGLEBLOCK 0xc
+#endif
+#elif defined __m68k__ || defined __x86_64__ || defined __i386__
+#if defined(PTRACE_SINGLEBLOCK) || (defined(HAVE_DECL_PTRACE_SINGLEBLOCK) && HAVE_DECL_PTRACE_SINGLEBLOCK)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_SINGLEBLOCK) == (0x21), "PTRACE_SINGLEBLOCK != 0x21");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_SINGLEBLOCK 0x21
+#endif
+#elif defined __powerpc__
+#if defined(PTRACE_SINGLEBLOCK) || (defined(HAVE_DECL_PTRACE_SINGLEBLOCK) && HAVE_DECL_PTRACE_SINGLEBLOCK)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_SINGLEBLOCK) == (0x100), "PTRACE_SINGLEBLOCK != 0x100");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_SINGLEBLOCK 0x100
+#endif
+#else
+#endif
+#if defined __arm__
+#if defined(PTRACE_GETWMMXREGS) || (defined(HAVE_DECL_PTRACE_GETWMMXREGS) && HAVE_DECL_PTRACE_GETWMMXREGS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_GETWMMXREGS) == (0x12), "PTRACE_GETWMMXREGS != 0x12");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_GETWMMXREGS 0x12
+#endif
+#else
+#endif
+#if defined __arm__
+#if defined(PTRACE_SETWMMXREGS) || (defined(HAVE_DECL_PTRACE_SETWMMXREGS) && HAVE_DECL_PTRACE_SETWMMXREGS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_SETWMMXREGS) == (0x13), "PTRACE_SETWMMXREGS != 0x13");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_SETWMMXREGS 0x13
+#endif
+#else
+#endif
+#if defined __arm__
+#if defined(PTRACE_SET_SYSCALL) || (defined(HAVE_DECL_PTRACE_SET_SYSCALL) && HAVE_DECL_PTRACE_SET_SYSCALL)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_SET_SYSCALL) == (0x17), "PTRACE_SET_SYSCALL != 0x17");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_SET_SYSCALL 0x17
+#endif
+#else
 #endif
+#if defined __arm__
+#if defined(PTRACE_GETCRUNCHREGS) || (defined(HAVE_DECL_PTRACE_GETCRUNCHREGS) && HAVE_DECL_PTRACE_GETCRUNCHREGS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_GETCRUNCHREGS) == (0x19), "PTRACE_GETCRUNCHREGS != 0x19");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_GETCRUNCHREGS 0x19
+#endif
+#else
+#endif
+#if defined __arm__
+#if defined(PTRACE_SETCRUNCHREGS) || (defined(HAVE_DECL_PTRACE_SETCRUNCHREGS) && HAVE_DECL_PTRACE_SETCRUNCHREGS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_SETCRUNCHREGS) == (0x1a), "PTRACE_SETCRUNCHREGS != 0x1a");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_SETCRUNCHREGS 0x1a
+#endif
+#else
+#endif
+#if defined __arm__
+#if defined(PTRACE_GETVFPREGS) || (defined(HAVE_DECL_PTRACE_GETVFPREGS) && HAVE_DECL_PTRACE_GETVFPREGS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_GETVFPREGS) == (0x1b), "PTRACE_GETVFPREGS != 0x1b");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_GETVFPREGS 0x1b
+#endif
+#else
+#endif
+#if defined __arm__
+#if defined(PTRACE_SETVFPREGS) || (defined(HAVE_DECL_PTRACE_SETVFPREGS) && HAVE_DECL_PTRACE_SETVFPREGS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_SETVFPREGS) == (0x1c), "PTRACE_SETVFPREGS != 0x1c");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_SETVFPREGS 0x1c
+#endif
+#else
+#endif
+#if defined __ia64__
+#if defined(PTRACE_OLD_GETSIGINFO) || (defined(HAVE_DECL_PTRACE_OLD_GETSIGINFO) && HAVE_DECL_PTRACE_OLD_GETSIGINFO)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_OLD_GETSIGINFO) == (0xd), "PTRACE_OLD_GETSIGINFO != 0xd");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_OLD_GETSIGINFO 0xd
+#endif
+#else
+#endif
+#if defined __ia64__
+#if defined(PTRACE_OLD_SETSIGINFO) || (defined(HAVE_DECL_PTRACE_OLD_SETSIGINFO) && HAVE_DECL_PTRACE_OLD_SETSIGINFO)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_OLD_SETSIGINFO) == (0xe), "PTRACE_OLD_SETSIGINFO != 0xe");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_OLD_SETSIGINFO 0xe
+#endif
+#else
+#endif
+#if defined __mips__
+#if defined(PTRACE_PEEKTEXT_3264) || (defined(HAVE_DECL_PTRACE_PEEKTEXT_3264) && HAVE_DECL_PTRACE_PEEKTEXT_3264)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_PEEKTEXT_3264) == (0xc0), "PTRACE_PEEKTEXT_3264 != 0xc0");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_PEEKTEXT_3264 0xc0
+#endif
+#else
+#endif
+#if defined __mips__
+#if defined(PTRACE_PEEKDATA_3264) || (defined(HAVE_DECL_PTRACE_PEEKDATA_3264) && HAVE_DECL_PTRACE_PEEKDATA_3264)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_PEEKDATA_3264) == (0xc1), "PTRACE_PEEKDATA_3264 != 0xc1");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_PEEKDATA_3264 0xc1
+#endif
+#else
+#endif
+#if defined __mips__
+#if defined(PTRACE_POKETEXT_3264) || (defined(HAVE_DECL_PTRACE_POKETEXT_3264) && HAVE_DECL_PTRACE_POKETEXT_3264)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_POKETEXT_3264) == (0xc2), "PTRACE_POKETEXT_3264 != 0xc2");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_POKETEXT_3264 0xc2
+#endif
+#else
+#endif
+#if defined __mips__
+#if defined(PTRACE_POKEDATA_3264) || (defined(HAVE_DECL_PTRACE_POKEDATA_3264) && HAVE_DECL_PTRACE_POKEDATA_3264)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_POKEDATA_3264) == (0xc3), "PTRACE_POKEDATA_3264 != 0xc3");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_POKEDATA_3264 0xc3
+#endif
+#else
+#endif
+#if defined __mips__
+#if defined(PTRACE_GET_THREAD_AREA_3264) || (defined(HAVE_DECL_PTRACE_GET_THREAD_AREA_3264) && HAVE_DECL_PTRACE_GET_THREAD_AREA_3264)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_GET_THREAD_AREA_3264) == (0xc4), "PTRACE_GET_THREAD_AREA_3264 != 0xc4");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_GET_THREAD_AREA_3264 0xc4
+#endif
+#else
+#endif
+#if defined __mips__
+#if defined(PTRACE_GET_WATCH_REGS) || (defined(HAVE_DECL_PTRACE_GET_WATCH_REGS) && HAVE_DECL_PTRACE_GET_WATCH_REGS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_GET_WATCH_REGS) == (0xd0), "PTRACE_GET_WATCH_REGS != 0xd0");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_GET_WATCH_REGS 0xd0
+#endif
+#else
+#endif
+#if defined __mips__
+#if defined(PTRACE_SET_WATCH_REGS) || (defined(HAVE_DECL_PTRACE_SET_WATCH_REGS) && HAVE_DECL_PTRACE_SET_WATCH_REGS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_SET_WATCH_REGS) == (0xd1), "PTRACE_SET_WATCH_REGS != 0xd1");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_SET_WATCH_REGS 0xd1
+#endif
+#else
+#endif
+#if defined __powerpc__
 #if defined(PTRACE_GETVRREGS) || (defined(HAVE_DECL_PTRACE_GETVRREGS) && HAVE_DECL_PTRACE_GETVRREGS)
-  XLAT(PTRACE_GETVRREGS),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_GETVRREGS) == (0x12), "PTRACE_GETVRREGS != 0x12");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_GETVRREGS 0x12
+#endif
+#else
 #endif
+#if defined __powerpc__
 #if defined(PTRACE_SETVRREGS) || (defined(HAVE_DECL_PTRACE_SETVRREGS) && HAVE_DECL_PTRACE_SETVRREGS)
-  XLAT(PTRACE_SETVRREGS),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_SETVRREGS) == (0x13), "PTRACE_SETVRREGS != 0x13");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_SETVRREGS 0x13
 #endif
-#if defined(PTRACE_SETOPTIONS) || (defined(HAVE_DECL_PTRACE_SETOPTIONS) && HAVE_DECL_PTRACE_SETOPTIONS)
-  XLAT(PTRACE_SETOPTIONS),
+#else
 #endif
-#if defined(PTRACE_GETEVENTMSG) || (defined(HAVE_DECL_PTRACE_GETEVENTMSG) && HAVE_DECL_PTRACE_GETEVENTMSG)
-  XLAT(PTRACE_GETEVENTMSG),
+#if defined __powerpc__
+#if defined(PTRACE_GETEVRREGS) || (defined(HAVE_DECL_PTRACE_GETEVRREGS) && HAVE_DECL_PTRACE_GETEVRREGS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_GETEVRREGS) == (0x14), "PTRACE_GETEVRREGS != 0x14");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_GETEVRREGS 0x14
 #endif
-#if defined(PTRACE_GETSIGINFO) || (defined(HAVE_DECL_PTRACE_GETSIGINFO) && HAVE_DECL_PTRACE_GETSIGINFO)
-  XLAT(PTRACE_GETSIGINFO),
+#else
 #endif
-#if defined(PTRACE_SETSIGINFO) || (defined(HAVE_DECL_PTRACE_SETSIGINFO) && HAVE_DECL_PTRACE_SETSIGINFO)
-  XLAT(PTRACE_SETSIGINFO),
+#if defined __powerpc__
+#if defined(PTRACE_SETEVRREGS) || (defined(HAVE_DECL_PTRACE_SETEVRREGS) && HAVE_DECL_PTRACE_SETEVRREGS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_SETEVRREGS) == (0x15), "PTRACE_SETEVRREGS != 0x15");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_SETEVRREGS 0x15
 #endif
-#if defined(PTRACE_GETREGSET) || (defined(HAVE_DECL_PTRACE_GETREGSET) && HAVE_DECL_PTRACE_GETREGSET)
-  XLAT(PTRACE_GETREGSET),
+#else
 #endif
-#if defined(PTRACE_SETREGSET) || (defined(HAVE_DECL_PTRACE_SETREGSET) && HAVE_DECL_PTRACE_SETREGSET)
-  XLAT(PTRACE_SETREGSET),
+#if defined __powerpc__
+#if defined(PTRACE_GETVSRREGS) || (defined(HAVE_DECL_PTRACE_GETVSRREGS) && HAVE_DECL_PTRACE_GETVSRREGS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_GETVSRREGS) == (0x1b), "PTRACE_GETVSRREGS != 0x1b");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_GETVSRREGS 0x1b
 #endif
-#if defined(PTRACE_SET_SYSCALL) || (defined(HAVE_DECL_PTRACE_SET_SYSCALL) && HAVE_DECL_PTRACE_SET_SYSCALL)
-  XLAT(PTRACE_SET_SYSCALL),
+#else
 #endif
-#if defined(PTRACE_SEIZE) || (defined(HAVE_DECL_PTRACE_SEIZE) && HAVE_DECL_PTRACE_SEIZE)
-  XLAT(PTRACE_SEIZE),
+#if defined __powerpc__
+#if defined(PTRACE_SETVSRREGS) || (defined(HAVE_DECL_PTRACE_SETVSRREGS) && HAVE_DECL_PTRACE_SETVSRREGS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_SETVSRREGS) == (0x1c), "PTRACE_SETVSRREGS != 0x1c");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_SETVSRREGS 0x1c
 #endif
-#if defined(PTRACE_INTERRUPT) || (defined(HAVE_DECL_PTRACE_INTERRUPT) && HAVE_DECL_PTRACE_INTERRUPT)
-  XLAT(PTRACE_INTERRUPT),
+#else
 #endif
-#if defined(PTRACE_LISTEN) || (defined(HAVE_DECL_PTRACE_LISTEN) && HAVE_DECL_PTRACE_LISTEN)
-  XLAT(PTRACE_LISTEN),
+#if defined __powerpc__
+#if defined(PTRACE_GET_DEBUGREG) || (defined(HAVE_DECL_PTRACE_GET_DEBUGREG) && HAVE_DECL_PTRACE_GET_DEBUGREG)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_GET_DEBUGREG) == (0x19), "PTRACE_GET_DEBUGREG != 0x19");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_GET_DEBUGREG 0x19
 #endif
-#if defined(PTRACE_PEEKSIGINFO) || (defined(HAVE_DECL_PTRACE_PEEKSIGINFO) && HAVE_DECL_PTRACE_PEEKSIGINFO)
-  XLAT(PTRACE_PEEKSIGINFO),
+#else
 #endif
-#if defined(PTRACE_GETSIGMASK) || (defined(HAVE_DECL_PTRACE_GETSIGMASK) && HAVE_DECL_PTRACE_GETSIGMASK)
-  XLAT(PTRACE_GETSIGMASK),
+#if defined __powerpc__
+#if defined(PTRACE_SET_DEBUGREG) || (defined(HAVE_DECL_PTRACE_SET_DEBUGREG) && HAVE_DECL_PTRACE_SET_DEBUGREG)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_SET_DEBUGREG) == (0x1a), "PTRACE_SET_DEBUGREG != 0x1a");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_SET_DEBUGREG 0x1a
 #endif
-#if defined(PTRACE_SETSIGMASK) || (defined(HAVE_DECL_PTRACE_SETSIGMASK) && HAVE_DECL_PTRACE_SETSIGMASK)
-  XLAT(PTRACE_SETSIGMASK),
+#else
 #endif
-#if defined(PTRACE_SECCOMP_GET_FILTER) || (defined(HAVE_DECL_PTRACE_SECCOMP_GET_FILTER) && HAVE_DECL_PTRACE_SECCOMP_GET_FILTER)
-  XLAT(PTRACE_SECCOMP_GET_FILTER),
+#if defined __powerpc__
+#if defined(PPC_PTRACE_DELHWDEBUG) || (defined(HAVE_DECL_PPC_PTRACE_DELHWDEBUG) && HAVE_DECL_PPC_PTRACE_DELHWDEBUG)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PPC_PTRACE_DELHWDEBUG) == (0x87), "PPC_PTRACE_DELHWDEBUG != 0x87");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PPC_PTRACE_DELHWDEBUG 0x87
 #endif
-#if defined(PTRACE_SECCOMP_GET_METADATA) || (defined(HAVE_DECL_PTRACE_SECCOMP_GET_METADATA) && HAVE_DECL_PTRACE_SECCOMP_GET_METADATA)
-  XLAT(PTRACE_SECCOMP_GET_METADATA),
+#else
+#endif
+#if defined __powerpc__
+#if defined(PPC_PTRACE_SETHWDEBUG) || (defined(HAVE_DECL_PPC_PTRACE_SETHWDEBUG) && HAVE_DECL_PPC_PTRACE_SETHWDEBUG)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PPC_PTRACE_SETHWDEBUG) == (0x88), "PPC_PTRACE_SETHWDEBUG != 0x88");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PPC_PTRACE_SETHWDEBUG 0x88
+#endif
+#else
+#endif
+#if defined __powerpc__
+#if defined(PPC_PTRACE_GETHWDBGINFO) || (defined(HAVE_DECL_PPC_PTRACE_GETHWDBGINFO) && HAVE_DECL_PPC_PTRACE_GETHWDBGINFO)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PPC_PTRACE_GETHWDBGINFO) == (0x89), "PPC_PTRACE_GETHWDBGINFO != 0x89");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PPC_PTRACE_GETHWDBGINFO 0x89
+#endif
+#else
+#endif
+#if defined __powerpc__
+#if defined(PPC_PTRACE_POKEUSR_3264) || (defined(HAVE_DECL_PPC_PTRACE_POKEUSR_3264) && HAVE_DECL_PPC_PTRACE_POKEUSR_3264)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PPC_PTRACE_POKEUSR_3264) == (0x90), "PPC_PTRACE_POKEUSR_3264 != 0x90");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PPC_PTRACE_POKEUSR_3264 0x90
+#endif
+#else
+#endif
+#if defined __powerpc__
+#if defined(PPC_PTRACE_PEEKUSR_3264) || (defined(HAVE_DECL_PPC_PTRACE_PEEKUSR_3264) && HAVE_DECL_PPC_PTRACE_PEEKUSR_3264)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PPC_PTRACE_PEEKUSR_3264) == (0x91), "PPC_PTRACE_PEEKUSR_3264 != 0x91");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PPC_PTRACE_PEEKUSR_3264 0x91
+#endif
+#else
+#endif
+#if defined __powerpc__
+#if defined(PPC_PTRACE_POKEDATA_3264) || (defined(HAVE_DECL_PPC_PTRACE_POKEDATA_3264) && HAVE_DECL_PPC_PTRACE_POKEDATA_3264)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PPC_PTRACE_POKEDATA_3264) == (0x92), "PPC_PTRACE_POKEDATA_3264 != 0x92");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PPC_PTRACE_POKEDATA_3264 0x92
+#endif
+#else
+#endif
+#if defined __powerpc__
+#if defined(PPC_PTRACE_POKETEXT_3264) || (defined(HAVE_DECL_PPC_PTRACE_POKETEXT_3264) && HAVE_DECL_PPC_PTRACE_POKETEXT_3264)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PPC_PTRACE_POKETEXT_3264) == (0x93), "PPC_PTRACE_POKETEXT_3264 != 0x93");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PPC_PTRACE_POKETEXT_3264 0x93
+#endif
+#else
+#endif
+#if defined __powerpc__
+#if defined(PPC_PTRACE_PEEKDATA_3264) || (defined(HAVE_DECL_PPC_PTRACE_PEEKDATA_3264) && HAVE_DECL_PPC_PTRACE_PEEKDATA_3264)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PPC_PTRACE_PEEKDATA_3264) == (0x94), "PPC_PTRACE_PEEKDATA_3264 != 0x94");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PPC_PTRACE_PEEKDATA_3264 0x94
+#endif
+#else
+#endif
+#if defined __powerpc__
+#if defined(PPC_PTRACE_PEEKTEXT_3264) || (defined(HAVE_DECL_PPC_PTRACE_PEEKTEXT_3264) && HAVE_DECL_PPC_PTRACE_PEEKTEXT_3264)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PPC_PTRACE_PEEKTEXT_3264) == (0x95), "PPC_PTRACE_PEEKTEXT_3264 != 0x95");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PPC_PTRACE_PEEKTEXT_3264 0x95
+#endif
+#else
+#endif
+#if defined __s390__
+#if defined(PTRACE_PEEKUSR_AREA) || (defined(HAVE_DECL_PTRACE_PEEKUSR_AREA) && HAVE_DECL_PTRACE_PEEKUSR_AREA)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_PEEKUSR_AREA) == (0x5000), "PTRACE_PEEKUSR_AREA != 0x5000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_PEEKUSR_AREA 0x5000
+#endif
+#else
+#endif
+#if defined __s390__
+#if defined(PTRACE_POKEUSR_AREA) || (defined(HAVE_DECL_PTRACE_POKEUSR_AREA) && HAVE_DECL_PTRACE_POKEUSR_AREA)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_POKEUSR_AREA) == (0x5001), "PTRACE_POKEUSR_AREA != 0x5001");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_POKEUSR_AREA 0x5001
+#endif
+#else
+#endif
+#if defined __s390__
+#if defined(PTRACE_PEEKTEXT_AREA) || (defined(HAVE_DECL_PTRACE_PEEKTEXT_AREA) && HAVE_DECL_PTRACE_PEEKTEXT_AREA)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_PEEKTEXT_AREA) == (0x5002), "PTRACE_PEEKTEXT_AREA != 0x5002");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_PEEKTEXT_AREA 0x5002
+#endif
+#else
+#endif
+#if defined __s390__
+#if defined(PTRACE_PEEKDATA_AREA) || (defined(HAVE_DECL_PTRACE_PEEKDATA_AREA) && HAVE_DECL_PTRACE_PEEKDATA_AREA)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_PEEKDATA_AREA) == (0x5003), "PTRACE_PEEKDATA_AREA != 0x5003");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_PEEKDATA_AREA 0x5003
+#endif
+#else
+#endif
+#if defined __s390__
+#if defined(PTRACE_POKETEXT_AREA) || (defined(HAVE_DECL_PTRACE_POKETEXT_AREA) && HAVE_DECL_PTRACE_POKETEXT_AREA)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_POKETEXT_AREA) == (0x5004), "PTRACE_POKETEXT_AREA != 0x5004");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_POKETEXT_AREA 0x5004
+#endif
+#else
+#endif
+#if defined __s390__
+#if defined(PTRACE_POKEDATA_AREA) || (defined(HAVE_DECL_PTRACE_POKEDATA_AREA) && HAVE_DECL_PTRACE_POKEDATA_AREA)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_POKEDATA_AREA) == (0x5005), "PTRACE_POKEDATA_AREA != 0x5005");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_POKEDATA_AREA 0x5005
+#endif
+#else
+#endif
+#if defined __s390__
+#if defined(PTRACE_GET_LAST_BREAK) || (defined(HAVE_DECL_PTRACE_GET_LAST_BREAK) && HAVE_DECL_PTRACE_GET_LAST_BREAK)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_GET_LAST_BREAK) == (0x5006), "PTRACE_GET_LAST_BREAK != 0x5006");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_GET_LAST_BREAK 0x5006
+#endif
+#else
+#endif
+#if defined __s390__
+#if defined(PTRACE_PEEK_SYSTEM_CALL) || (defined(HAVE_DECL_PTRACE_PEEK_SYSTEM_CALL) && HAVE_DECL_PTRACE_PEEK_SYSTEM_CALL)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_PEEK_SYSTEM_CALL) == (0x5007), "PTRACE_PEEK_SYSTEM_CALL != 0x5007");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_PEEK_SYSTEM_CALL 0x5007
+#endif
+#else
+#endif
+#if defined __s390__
+#if defined(PTRACE_POKE_SYSTEM_CALL) || (defined(HAVE_DECL_PTRACE_POKE_SYSTEM_CALL) && HAVE_DECL_PTRACE_POKE_SYSTEM_CALL)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_POKE_SYSTEM_CALL) == (0x5008), "PTRACE_POKE_SYSTEM_CALL != 0x5008");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_POKE_SYSTEM_CALL 0x5008
+#endif
+#else
+#endif
+#if defined __s390__
+#if defined(PTRACE_ENABLE_TE) || (defined(HAVE_DECL_PTRACE_ENABLE_TE) && HAVE_DECL_PTRACE_ENABLE_TE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_ENABLE_TE) == (0x5009), "PTRACE_ENABLE_TE != 0x5009");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_ENABLE_TE 0x5009
+#endif
+#else
+#endif
+#if defined __s390__
+#if defined(PTRACE_DISABLE_TE) || (defined(HAVE_DECL_PTRACE_DISABLE_TE) && HAVE_DECL_PTRACE_DISABLE_TE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_DISABLE_TE) == (0x5010), "PTRACE_DISABLE_TE != 0x5010");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_DISABLE_TE 0x5010
+#endif
+#else
+#endif
+#if defined __s390__
+#if defined(PTRACE_TE_ABORT_RAND) || (defined(HAVE_DECL_PTRACE_TE_ABORT_RAND) && HAVE_DECL_PTRACE_TE_ABORT_RAND)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_TE_ABORT_RAND) == (0x5011), "PTRACE_TE_ABORT_RAND != 0x5011");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_TE_ABORT_RAND 0x5011
+#endif
+#else
+#endif
+#if defined __sh__
+#if defined(PTRACE_GETDSPREGS) || (defined(HAVE_DECL_PTRACE_GETDSPREGS) && HAVE_DECL_PTRACE_GETDSPREGS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_GETDSPREGS) == (0x37), "PTRACE_GETDSPREGS != 0x37");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_GETDSPREGS 0x37
+#endif
+#else
+#endif
+#if defined __sh__
+#if defined(PTRACE_SETDSPREGS) || (defined(HAVE_DECL_PTRACE_SETDSPREGS) && HAVE_DECL_PTRACE_SETDSPREGS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_SETDSPREGS) == (0x38), "PTRACE_SETDSPREGS != 0x38");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_SETDSPREGS 0x38
+#endif
+#else
+#endif
+#if defined __sparc__
+#if defined(PTRACE_SPARC_DETACH) || (defined(HAVE_DECL_PTRACE_SPARC_DETACH) && HAVE_DECL_PTRACE_SPARC_DETACH)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_SPARC_DETACH) == (0xb), "PTRACE_SPARC_DETACH != 0xb");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_SPARC_DETACH 0xb
+#endif
+#else
+#endif
+#if defined __sparc__
+#if defined(PTRACE_READDATA) || (defined(HAVE_DECL_PTRACE_READDATA) && HAVE_DECL_PTRACE_READDATA)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_READDATA) == (0x10), "PTRACE_READDATA != 0x10");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_READDATA 0x10
+#endif
+#else
+#endif
+#if defined __sparc__
+#if defined(PTRACE_WRITEDATA) || (defined(HAVE_DECL_PTRACE_WRITEDATA) && HAVE_DECL_PTRACE_WRITEDATA)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_WRITEDATA) == (0x11), "PTRACE_WRITEDATA != 0x11");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_WRITEDATA 0x11
+#endif
+#else
+#endif
+#if defined __sparc__
+#if defined(PTRACE_READTEXT) || (defined(HAVE_DECL_PTRACE_READTEXT) && HAVE_DECL_PTRACE_READTEXT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_READTEXT) == (0x12), "PTRACE_READTEXT != 0x12");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_READTEXT 0x12
+#endif
+#else
+#endif
+#if defined __sparc__
+#if defined(PTRACE_WRITETEXT) || (defined(HAVE_DECL_PTRACE_WRITETEXT) && HAVE_DECL_PTRACE_WRITETEXT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_WRITETEXT) == (0x13), "PTRACE_WRITETEXT != 0x13");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_WRITETEXT 0x13
+#endif
+#else
+#endif
+#if defined __sparc__
+#if defined(PTRACE_GETFPAREGS) || (defined(HAVE_DECL_PTRACE_GETFPAREGS) && HAVE_DECL_PTRACE_GETFPAREGS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_GETFPAREGS) == (0x14), "PTRACE_GETFPAREGS != 0x14");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_GETFPAREGS 0x14
+#endif
+#else
+#endif
+#if defined __sparc__
+#if defined(PTRACE_SETFPAREGS) || (defined(HAVE_DECL_PTRACE_SETFPAREGS) && HAVE_DECL_PTRACE_SETFPAREGS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_SETFPAREGS) == (0x15), "PTRACE_SETFPAREGS != 0x15");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_SETFPAREGS 0x15
+#endif
+#else
+#endif
+#if defined __sparc__
+#if defined(PTRACE_GETFPREGS64) || (defined(HAVE_DECL_PTRACE_GETFPREGS64) && HAVE_DECL_PTRACE_GETFPREGS64)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_GETFPREGS64) == (0x19), "PTRACE_GETFPREGS64 != 0x19");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_GETFPREGS64 0x19
+#endif
+#else
+#endif
+#if defined __sparc__
+#if defined(PTRACE_SETFPREGS64) || (defined(HAVE_DECL_PTRACE_SETFPREGS64) && HAVE_DECL_PTRACE_SETFPREGS64)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_SETFPREGS64) == (0x1a), "PTRACE_SETFPREGS64 != 0x1a");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_SETFPREGS64 0x1a
+#endif
+#else
+#endif
+#if defined __x86_64__ || defined __i386__
+#if defined(PTRACE_ARCH_PRCTL) || (defined(HAVE_DECL_PTRACE_ARCH_PRCTL) && HAVE_DECL_PTRACE_ARCH_PRCTL)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_ARCH_PRCTL) == (0x1e), "PTRACE_ARCH_PRCTL != 0x1e");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_ARCH_PRCTL 0x1e
+#endif
+#else
+#endif
+#if defined __xtensa__
+#if defined(PTRACE_GETXTREGS) || (defined(HAVE_DECL_PTRACE_GETXTREGS) && HAVE_DECL_PTRACE_GETXTREGS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_GETXTREGS) == (0x12), "PTRACE_GETXTREGS != 0x12");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_GETXTREGS 0x12
+#endif
+#else
+#endif
+#if defined __xtensa__
+#if defined(PTRACE_SETXTREGS) || (defined(HAVE_DECL_PTRACE_SETXTREGS) && HAVE_DECL_PTRACE_SETXTREGS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((PTRACE_SETXTREGS) == (0x13), "PTRACE_SETXTREGS != 0x13");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define PTRACE_SETXTREGS 0x13
+#endif
+#else
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifndef IN_MPERS
+
+static const struct xlat_data ptrace_cmds_xdata[] = {
+
+ XLAT(PTRACE_TRACEME),
+ #define XLAT_VAL_0 ((unsigned) (PTRACE_TRACEME))
+ #define XLAT_STR_0 STRINGIFY(PTRACE_TRACEME)
+ XLAT(PTRACE_PEEKTEXT),
+ #define XLAT_VAL_1 ((unsigned) (PTRACE_PEEKTEXT))
+ #define XLAT_STR_1 STRINGIFY(PTRACE_PEEKTEXT)
+ XLAT(PTRACE_PEEKDATA),
+ #define XLAT_VAL_2 ((unsigned) (PTRACE_PEEKDATA))
+ #define XLAT_STR_2 STRINGIFY(PTRACE_PEEKDATA)
+ XLAT(PTRACE_PEEKUSER),
+ #define XLAT_VAL_3 ((unsigned) (PTRACE_PEEKUSER))
+ #define XLAT_STR_3 STRINGIFY(PTRACE_PEEKUSER)
+ XLAT(PTRACE_POKETEXT),
+ #define XLAT_VAL_4 ((unsigned) (PTRACE_POKETEXT))
+ #define XLAT_STR_4 STRINGIFY(PTRACE_POKETEXT)
+ XLAT(PTRACE_POKEDATA),
+ #define XLAT_VAL_5 ((unsigned) (PTRACE_POKEDATA))
+ #define XLAT_STR_5 STRINGIFY(PTRACE_POKEDATA)
+ XLAT(PTRACE_POKEUSER),
+ #define XLAT_VAL_6 ((unsigned) (PTRACE_POKEUSER))
+ #define XLAT_STR_6 STRINGIFY(PTRACE_POKEUSER)
+ XLAT(PTRACE_CONT),
+ #define XLAT_VAL_7 ((unsigned) (PTRACE_CONT))
+ #define XLAT_STR_7 STRINGIFY(PTRACE_CONT)
+ XLAT(PTRACE_KILL),
+ #define XLAT_VAL_8 ((unsigned) (PTRACE_KILL))
+ #define XLAT_STR_8 STRINGIFY(PTRACE_KILL)
+ XLAT(PTRACE_SINGLESTEP),
+ #define XLAT_VAL_9 ((unsigned) (PTRACE_SINGLESTEP))
+ #define XLAT_STR_9 STRINGIFY(PTRACE_SINGLESTEP)
+ XLAT(PTRACE_ATTACH),
+ #define XLAT_VAL_10 ((unsigned) (PTRACE_ATTACH))
+ #define XLAT_STR_10 STRINGIFY(PTRACE_ATTACH)
+
+/*
+* On sparc, there is PTRACE_SPARC_DETACH (= 11) that is used instead
+* of PTRACE_DETACH, as PTRACE_DETACH's number (0x11) is occupied
+* by PTRACE_WRITEDATA.
+*/
+#if !defined __sparc__
+ XLAT(PTRACE_DETACH),
+ #define XLAT_VAL_11 ((unsigned) (PTRACE_DETACH))
+ #define XLAT_STR_11 STRINGIFY(PTRACE_DETACH)
+#else
+#if defined(PTRACE_DETACH) || (defined(HAVE_DECL_PTRACE_DETACH) && HAVE_DECL_PTRACE_DETACH)
+  XLAT(PTRACE_DETACH),
+ #define XLAT_VAL_12 ((unsigned) (PTRACE_DETACH))
+ #define XLAT_STR_12 STRINGIFY(PTRACE_DETACH)
+#endif
+#endif
+
+ XLAT(PTRACE_SYSCALL),
+ #define XLAT_VAL_13 ((unsigned) (PTRACE_SYSCALL))
+ #define XLAT_STR_13 STRINGIFY(PTRACE_SYSCALL)
+
+ XLAT(PTRACE_SETOPTIONS),
+ #define XLAT_VAL_14 ((unsigned) (PTRACE_SETOPTIONS))
+ #define XLAT_STR_14 STRINGIFY(PTRACE_SETOPTIONS)
+ XLAT(PTRACE_GETEVENTMSG),
+ #define XLAT_VAL_15 ((unsigned) (PTRACE_GETEVENTMSG))
+ #define XLAT_STR_15 STRINGIFY(PTRACE_GETEVENTMSG)
+ XLAT(PTRACE_GETSIGINFO),
+ #define XLAT_VAL_16 ((unsigned) (PTRACE_GETSIGINFO))
+ #define XLAT_STR_16 STRINGIFY(PTRACE_GETSIGINFO)
+ XLAT(PTRACE_SETSIGINFO),
+ #define XLAT_VAL_17 ((unsigned) (PTRACE_SETSIGINFO))
+ #define XLAT_STR_17 STRINGIFY(PTRACE_SETSIGINFO)
+ XLAT(PTRACE_GETREGSET),
+ #define XLAT_VAL_18 ((unsigned) (PTRACE_GETREGSET))
+ #define XLAT_STR_18 STRINGIFY(PTRACE_GETREGSET)
+ XLAT(PTRACE_SETREGSET),
+ #define XLAT_VAL_19 ((unsigned) (PTRACE_SETREGSET))
+ #define XLAT_STR_19 STRINGIFY(PTRACE_SETREGSET)
+ XLAT(PTRACE_SEIZE),
+ #define XLAT_VAL_20 ((unsigned) (PTRACE_SEIZE))
+ #define XLAT_STR_20 STRINGIFY(PTRACE_SEIZE)
+ XLAT(PTRACE_INTERRUPT),
+ #define XLAT_VAL_21 ((unsigned) (PTRACE_INTERRUPT))
+ #define XLAT_STR_21 STRINGIFY(PTRACE_INTERRUPT)
+ XLAT(PTRACE_LISTEN),
+ #define XLAT_VAL_22 ((unsigned) (PTRACE_LISTEN))
+ #define XLAT_STR_22 STRINGIFY(PTRACE_LISTEN)
+ XLAT(PTRACE_PEEKSIGINFO),
+ #define XLAT_VAL_23 ((unsigned) (PTRACE_PEEKSIGINFO))
+ #define XLAT_STR_23 STRINGIFY(PTRACE_PEEKSIGINFO)
+ XLAT(PTRACE_GETSIGMASK),
+ #define XLAT_VAL_24 ((unsigned) (PTRACE_GETSIGMASK))
+ #define XLAT_STR_24 STRINGIFY(PTRACE_GETSIGMASK)
+ XLAT(PTRACE_SETSIGMASK),
+ #define XLAT_VAL_25 ((unsigned) (PTRACE_SETSIGMASK))
+ #define XLAT_STR_25 STRINGIFY(PTRACE_SETSIGMASK)
+ XLAT(PTRACE_SECCOMP_GET_FILTER),
+ #define XLAT_VAL_26 ((unsigned) (PTRACE_SECCOMP_GET_FILTER))
+ #define XLAT_STR_26 STRINGIFY(PTRACE_SECCOMP_GET_FILTER)
+ XLAT(PTRACE_SECCOMP_GET_METADATA),
+ #define XLAT_VAL_27 ((unsigned) (PTRACE_SECCOMP_GET_METADATA))
+ #define XLAT_STR_27 STRINGIFY(PTRACE_SECCOMP_GET_METADATA)
+ XLAT(PTRACE_GET_SYSCALL_INFO),
+ #define XLAT_VAL_28 ((unsigned) (PTRACE_GET_SYSCALL_INFO))
+ #define XLAT_STR_28 STRINGIFY(PTRACE_GET_SYSCALL_INFO)
+
+
+#if defined __arm__ || defined __m68k__ || defined __mips__ || defined __powerpc__ || defined __sh__ || defined __sparc__ || defined __x86_64__ || defined __i386__ || defined __xtensa__
+ XLAT(PTRACE_GETREGS),
+ #define XLAT_VAL_29 ((unsigned) (PTRACE_GETREGS))
+ #define XLAT_STR_29 STRINGIFY(PTRACE_GETREGS)
+#elif defined __hppa__ || defined __ia64__
+ XLAT(PTRACE_GETREGS),
+ #define XLAT_VAL_30 ((unsigned) (PTRACE_GETREGS))
+ #define XLAT_STR_30 STRINGIFY(PTRACE_GETREGS)
+#else
+#if defined(PTRACE_GETREGS) || (defined(HAVE_DECL_PTRACE_GETREGS) && HAVE_DECL_PTRACE_GETREGS)
+  XLAT(PTRACE_GETREGS),
+ #define XLAT_VAL_31 ((unsigned) (PTRACE_GETREGS))
+ #define XLAT_STR_31 STRINGIFY(PTRACE_GETREGS)
+#endif
+#endif
+
+#if defined __arm__ || defined __m68k__ || defined __mips__ || defined __powerpc__ || defined __sh__ || defined __sparc__ || defined __x86_64__ || defined __i386__ || defined __xtensa__
+ XLAT(PTRACE_SETREGS),
+ #define XLAT_VAL_32 ((unsigned) (PTRACE_SETREGS))
+ #define XLAT_STR_32 STRINGIFY(PTRACE_SETREGS)
+#elif defined __hppa__ || defined __ia64__
+ XLAT(PTRACE_SETREGS),
+ #define XLAT_VAL_33 ((unsigned) (PTRACE_SETREGS))
+ #define XLAT_STR_33 STRINGIFY(PTRACE_SETREGS)
+#else
+#if defined(PTRACE_SETREGS) || (defined(HAVE_DECL_PTRACE_SETREGS) && HAVE_DECL_PTRACE_SETREGS)
+  XLAT(PTRACE_SETREGS),
+ #define XLAT_VAL_34 ((unsigned) (PTRACE_SETREGS))
+ #define XLAT_STR_34 STRINGIFY(PTRACE_SETREGS)
+#endif
+#endif
+
+#if defined __arm__ || defined __hppa__ || defined __m68k__ || defined __mips__ || defined __powerpc__ || defined __sh__ || defined __sparc__ || defined __x86_64__ || defined __i386__
+ XLAT(PTRACE_GETFPREGS),
+ #define XLAT_VAL_35 ((unsigned) (PTRACE_GETFPREGS))
+ #define XLAT_STR_35 STRINGIFY(PTRACE_GETFPREGS)
+#else
+#if defined(PTRACE_GETFPREGS) || (defined(HAVE_DECL_PTRACE_GETFPREGS) && HAVE_DECL_PTRACE_GETFPREGS)
+  XLAT(PTRACE_GETFPREGS),
+ #define XLAT_VAL_36 ((unsigned) (PTRACE_GETFPREGS))
+ #define XLAT_STR_36 STRINGIFY(PTRACE_GETFPREGS)
+#endif
+#endif
+
+#if defined __arm__ || defined __hppa__ || defined __m68k__ || defined __mips__ || defined __powerpc__ || defined __sh__ || defined __sparc__ || defined __x86_64__ || defined __i386__
+ XLAT(PTRACE_SETFPREGS),
+ #define XLAT_VAL_37 ((unsigned) (PTRACE_SETFPREGS))
+ #define XLAT_STR_37 STRINGIFY(PTRACE_SETFPREGS)
+#else
+#if defined(PTRACE_SETFPREGS) || (defined(HAVE_DECL_PTRACE_SETFPREGS) && HAVE_DECL_PTRACE_SETFPREGS)
+  XLAT(PTRACE_SETFPREGS),
+ #define XLAT_VAL_38 ((unsigned) (PTRACE_SETFPREGS))
+ #define XLAT_STR_38 STRINGIFY(PTRACE_SETFPREGS)
+#endif
+#endif
+
+#if defined __mips__ || defined __x86_64__ || defined __i386__
+ XLAT(PTRACE_GETFPXREGS),
+ #define XLAT_VAL_39 ((unsigned) (PTRACE_GETFPXREGS))
+ #define XLAT_STR_39 STRINGIFY(PTRACE_GETFPXREGS)
+#else
+#if defined(PTRACE_GETFPXREGS) || (defined(HAVE_DECL_PTRACE_GETFPXREGS) && HAVE_DECL_PTRACE_GETFPXREGS)
+  XLAT(PTRACE_GETFPXREGS),
+ #define XLAT_VAL_40 ((unsigned) (PTRACE_GETFPXREGS))
+ #define XLAT_STR_40 STRINGIFY(PTRACE_GETFPXREGS)
+#endif
+#endif
+
+#if defined __mips__ || defined __x86_64__ || defined __i386__
+ XLAT(PTRACE_SETFPXREGS),
+ #define XLAT_VAL_41 ((unsigned) (PTRACE_SETFPXREGS))
+ #define XLAT_STR_41 STRINGIFY(PTRACE_SETFPXREGS)
+#else
+#if defined(PTRACE_SETFPXREGS) || (defined(HAVE_DECL_PTRACE_SETFPXREGS) && HAVE_DECL_PTRACE_SETFPXREGS)
+  XLAT(PTRACE_SETFPXREGS),
+ #define XLAT_VAL_42 ((unsigned) (PTRACE_SETFPXREGS))
+ #define XLAT_STR_42 STRINGIFY(PTRACE_SETFPXREGS)
+#endif
+#endif
+
+#if defined __xtensa__
+ XLAT(PTRACE_GETHBPREGS),
+ #define XLAT_VAL_43 ((unsigned) (PTRACE_GETHBPREGS))
+ #define XLAT_STR_43 STRINGIFY(PTRACE_GETHBPREGS)
+#elif defined __arm__
+ XLAT(PTRACE_GETHBPREGS),
+ #define XLAT_VAL_44 ((unsigned) (PTRACE_GETHBPREGS))
+ #define XLAT_STR_44 STRINGIFY(PTRACE_GETHBPREGS)
+#else
+#if defined(PTRACE_GETHBPREGS) || (defined(HAVE_DECL_PTRACE_GETHBPREGS) && HAVE_DECL_PTRACE_GETHBPREGS)
+  XLAT(PTRACE_GETHBPREGS),
+ #define XLAT_VAL_45 ((unsigned) (PTRACE_GETHBPREGS))
+ #define XLAT_STR_45 STRINGIFY(PTRACE_GETHBPREGS)
 #endif
-#if defined(PTRACE_GET_SYSCALL_INFO) || (defined(HAVE_DECL_PTRACE_GET_SYSCALL_INFO) && HAVE_DECL_PTRACE_GET_SYSCALL_INFO)
-  XLAT(PTRACE_GET_SYSCALL_INFO),
 #endif
 
+#if defined __xtensa__
+ XLAT(PTRACE_SETHBPREGS),
+ #define XLAT_VAL_46 ((unsigned) (PTRACE_SETHBPREGS))
+ #define XLAT_STR_46 STRINGIFY(PTRACE_SETHBPREGS)
+#elif defined __arm__
+ XLAT(PTRACE_SETHBPREGS),
+ #define XLAT_VAL_47 ((unsigned) (PTRACE_SETHBPREGS))
+ #define XLAT_STR_47 STRINGIFY(PTRACE_SETHBPREGS)
+#else
+#if defined(PTRACE_SETHBPREGS) || (defined(HAVE_DECL_PTRACE_SETHBPREGS) && HAVE_DECL_PTRACE_SETHBPREGS)
+  XLAT(PTRACE_SETHBPREGS),
+ #define XLAT_VAL_48 ((unsigned) (PTRACE_SETHBPREGS))
+ #define XLAT_STR_48 STRINGIFY(PTRACE_SETHBPREGS)
+#endif
+#endif
+
+#if defined __arm__ || defined __ia64__ || defined __mips__ || defined __s390__ || defined __x86_64__ || defined __i386__
+ XLAT(PTRACE_OLDSETOPTIONS),
+ #define XLAT_VAL_49 ((unsigned) (PTRACE_OLDSETOPTIONS))
+ #define XLAT_STR_49 STRINGIFY(PTRACE_OLDSETOPTIONS)
+#else
+#if defined(PTRACE_OLDSETOPTIONS) || (defined(HAVE_DECL_PTRACE_OLDSETOPTIONS) && HAVE_DECL_PTRACE_OLDSETOPTIONS)
+  XLAT(PTRACE_OLDSETOPTIONS),
+ #define XLAT_VAL_50 ((unsigned) (PTRACE_OLDSETOPTIONS))
+ #define XLAT_STR_50 STRINGIFY(PTRACE_OLDSETOPTIONS)
+#endif
+#endif
+
+#if defined __powerpc__ || defined __sparc__
+ XLAT(PTRACE_GETREGS64),
+ #define XLAT_VAL_51 ((unsigned) (PTRACE_GETREGS64))
+ #define XLAT_STR_51 STRINGIFY(PTRACE_GETREGS64)
+#else
+#if defined(PTRACE_GETREGS64) || (defined(HAVE_DECL_PTRACE_GETREGS64) && HAVE_DECL_PTRACE_GETREGS64)
+  XLAT(PTRACE_GETREGS64),
+ #define XLAT_VAL_52 ((unsigned) (PTRACE_GETREGS64))
+ #define XLAT_STR_52 STRINGIFY(PTRACE_GETREGS64)
+#endif
+#endif
+#if defined __powerpc__ || defined __sparc__
+ XLAT(PTRACE_SETREGS64),
+ #define XLAT_VAL_53 ((unsigned) (PTRACE_SETREGS64))
+ #define XLAT_STR_53 STRINGIFY(PTRACE_SETREGS64)
+#else
+#if defined(PTRACE_SETREGS64) || (defined(HAVE_DECL_PTRACE_SETREGS64) && HAVE_DECL_PTRACE_SETREGS64)
+  XLAT(PTRACE_SETREGS64),
+ #define XLAT_VAL_54 ((unsigned) (PTRACE_SETREGS64))
+ #define XLAT_STR_54 STRINGIFY(PTRACE_SETREGS64)
+#endif
+#endif
+
+#if defined __arm__ || defined __unicore32__
+ XLAT(PTRACE_GET_THREAD_AREA),
+ #define XLAT_VAL_55 ((unsigned) (PTRACE_GET_THREAD_AREA))
+ #define XLAT_STR_55 STRINGIFY(PTRACE_GET_THREAD_AREA)
+#elif defined __arc__ || defined __m68k__ || defined __mips__ || defined __x86_64__ || defined __i386__
+ XLAT(PTRACE_GET_THREAD_AREA),
+ #define XLAT_VAL_56 ((unsigned) (PTRACE_GET_THREAD_AREA))
+ #define XLAT_STR_56 STRINGIFY(PTRACE_GET_THREAD_AREA)
+#else
 #if defined(PTRACE_GET_THREAD_AREA) || (defined(HAVE_DECL_PTRACE_GET_THREAD_AREA) && HAVE_DECL_PTRACE_GET_THREAD_AREA)
   XLAT(PTRACE_GET_THREAD_AREA),
+ #define XLAT_VAL_57 ((unsigned) (PTRACE_GET_THREAD_AREA))
+ #define XLAT_STR_57 STRINGIFY(PTRACE_GET_THREAD_AREA)
+#endif
 #endif
+
+#if defined __mips__ || defined __x86_64__ || defined __i386__
+ XLAT(PTRACE_SET_THREAD_AREA),
+ #define XLAT_VAL_58 ((unsigned) (PTRACE_SET_THREAD_AREA))
+ #define XLAT_STR_58 STRINGIFY(PTRACE_SET_THREAD_AREA)
+#else
 #if defined(PTRACE_SET_THREAD_AREA) || (defined(HAVE_DECL_PTRACE_SET_THREAD_AREA) && HAVE_DECL_PTRACE_SET_THREAD_AREA)
   XLAT(PTRACE_SET_THREAD_AREA),
+ #define XLAT_VAL_59 ((unsigned) (PTRACE_SET_THREAD_AREA))
+ #define XLAT_STR_59 STRINGIFY(PTRACE_SET_THREAD_AREA)
 #endif
-#if defined(PTRACE_OLDSETOPTIONS) || (defined(HAVE_DECL_PTRACE_OLDSETOPTIONS) && HAVE_DECL_PTRACE_OLDSETOPTIONS)
-  XLAT(PTRACE_OLDSETOPTIONS),
 #endif
+
+#if defined __arm__ || defined __c6x__ || defined __sh__
+ XLAT(PTRACE_GETFDPIC),
+ #define XLAT_VAL_60 ((unsigned) (PTRACE_GETFDPIC))
+ #define XLAT_STR_60 STRINGIFY(PTRACE_GETFDPIC)
+#else
 #if defined(PTRACE_GETFDPIC) || (defined(HAVE_DECL_PTRACE_GETFDPIC) && HAVE_DECL_PTRACE_GETFDPIC)
   XLAT(PTRACE_GETFDPIC),
+ #define XLAT_VAL_61 ((unsigned) (PTRACE_GETFDPIC))
+ #define XLAT_STR_61 STRINGIFY(PTRACE_GETFDPIC)
+#endif
+#endif
+
+#if defined __powerpc__
+ XLAT(PTRACE_SYSEMU),
+ #define XLAT_VAL_62 ((unsigned) (PTRACE_SYSEMU))
+ #define XLAT_STR_62 STRINGIFY(PTRACE_SYSEMU)
+#elif defined __arm64__ || defined __aarch64__ || defined __x86_64__ || defined __i386__
+ XLAT(PTRACE_SYSEMU),
+ #define XLAT_VAL_63 ((unsigned) (PTRACE_SYSEMU))
+ #define XLAT_STR_63 STRINGIFY(PTRACE_SYSEMU)
+#else
+#if defined(PTRACE_SYSEMU) || (defined(HAVE_DECL_PTRACE_SYSEMU) && HAVE_DECL_PTRACE_SYSEMU)
+  XLAT(PTRACE_SYSEMU),
+ #define XLAT_VAL_64 ((unsigned) (PTRACE_SYSEMU))
+ #define XLAT_STR_64 STRINGIFY(PTRACE_SYSEMU)
+#endif
+#endif
+
+#if defined __powerpc__
+ XLAT(PTRACE_SYSEMU_SINGLESTEP),
+ #define XLAT_VAL_65 ((unsigned) (PTRACE_SYSEMU_SINGLESTEP))
+ #define XLAT_STR_65 STRINGIFY(PTRACE_SYSEMU_SINGLESTEP)
+#elif defined __arm64__ || defined __aarch64__ || defined __x86_64__ || defined __i386__
+ XLAT(PTRACE_SYSEMU_SINGLESTEP),
+ #define XLAT_VAL_66 ((unsigned) (PTRACE_SYSEMU_SINGLESTEP))
+ #define XLAT_STR_66 STRINGIFY(PTRACE_SYSEMU_SINGLESTEP)
+#else
+#if defined(PTRACE_SYSEMU_SINGLESTEP) || (defined(HAVE_DECL_PTRACE_SYSEMU_SINGLESTEP) && HAVE_DECL_PTRACE_SYSEMU_SINGLESTEP)
+  XLAT(PTRACE_SYSEMU_SINGLESTEP),
+ #define XLAT_VAL_67 ((unsigned) (PTRACE_SYSEMU_SINGLESTEP))
+ #define XLAT_STR_67 STRINGIFY(PTRACE_SYSEMU_SINGLESTEP)
 #endif
+#endif
+
+#if defined __hppa__ || defined __ia64__ || defined __s390__
+ XLAT(PTRACE_SINGLEBLOCK),
+ #define XLAT_VAL_68 ((unsigned) (PTRACE_SINGLEBLOCK))
+ #define XLAT_STR_68 STRINGIFY(PTRACE_SINGLEBLOCK)
+#elif defined __m68k__ || defined __x86_64__ || defined __i386__
+ XLAT(PTRACE_SINGLEBLOCK),
+ #define XLAT_VAL_69 ((unsigned) (PTRACE_SINGLEBLOCK))
+ #define XLAT_STR_69 STRINGIFY(PTRACE_SINGLEBLOCK)
+#elif defined __powerpc__
+ XLAT(PTRACE_SINGLEBLOCK),
+ #define XLAT_VAL_70 ((unsigned) (PTRACE_SINGLEBLOCK))
+ #define XLAT_STR_70 STRINGIFY(PTRACE_SINGLEBLOCK)
+#else
 #if defined(PTRACE_SINGLEBLOCK) || (defined(HAVE_DECL_PTRACE_SINGLEBLOCK) && HAVE_DECL_PTRACE_SINGLEBLOCK)
   XLAT(PTRACE_SINGLEBLOCK),
+ #define XLAT_VAL_71 ((unsigned) (PTRACE_SINGLEBLOCK))
+ #define XLAT_STR_71 STRINGIFY(PTRACE_SINGLEBLOCK)
 #endif
+#endif
+
 
+#if defined __arm__
+ XLAT(PTRACE_GETWMMXREGS),
+ #define XLAT_VAL_72 ((unsigned) (PTRACE_GETWMMXREGS))
+ #define XLAT_STR_72 STRINGIFY(PTRACE_GETWMMXREGS)
+#else
 #if defined(PTRACE_GETWMMXREGS) || (defined(HAVE_DECL_PTRACE_GETWMMXREGS) && HAVE_DECL_PTRACE_GETWMMXREGS)
   XLAT(PTRACE_GETWMMXREGS),
+ #define XLAT_VAL_73 ((unsigned) (PTRACE_GETWMMXREGS))
+ #define XLAT_STR_73 STRINGIFY(PTRACE_GETWMMXREGS)
 #endif
+#endif
+#if defined __arm__
+ XLAT(PTRACE_SETWMMXREGS),
+ #define XLAT_VAL_74 ((unsigned) (PTRACE_SETWMMXREGS))
+ #define XLAT_STR_74 STRINGIFY(PTRACE_SETWMMXREGS)
+#else
 #if defined(PTRACE_SETWMMXREGS) || (defined(HAVE_DECL_PTRACE_SETWMMXREGS) && HAVE_DECL_PTRACE_SETWMMXREGS)
   XLAT(PTRACE_SETWMMXREGS),
+ #define XLAT_VAL_75 ((unsigned) (PTRACE_SETWMMXREGS))
+ #define XLAT_STR_75 STRINGIFY(PTRACE_SETWMMXREGS)
+#endif
 #endif
+#if defined __arm__
+ XLAT(PTRACE_SET_SYSCALL),
+ #define XLAT_VAL_76 ((unsigned) (PTRACE_SET_SYSCALL))
+ #define XLAT_STR_76 STRINGIFY(PTRACE_SET_SYSCALL)
+#else
+#if defined(PTRACE_SET_SYSCALL) || (defined(HAVE_DECL_PTRACE_SET_SYSCALL) && HAVE_DECL_PTRACE_SET_SYSCALL)
+  XLAT(PTRACE_SET_SYSCALL),
+ #define XLAT_VAL_77 ((unsigned) (PTRACE_SET_SYSCALL))
+ #define XLAT_STR_77 STRINGIFY(PTRACE_SET_SYSCALL)
+#endif
+#endif
+#if defined __arm__
+ XLAT(PTRACE_GETCRUNCHREGS),
+ #define XLAT_VAL_78 ((unsigned) (PTRACE_GETCRUNCHREGS))
+ #define XLAT_STR_78 STRINGIFY(PTRACE_GETCRUNCHREGS)
+#else
 #if defined(PTRACE_GETCRUNCHREGS) || (defined(HAVE_DECL_PTRACE_GETCRUNCHREGS) && HAVE_DECL_PTRACE_GETCRUNCHREGS)
   XLAT(PTRACE_GETCRUNCHREGS),
+ #define XLAT_VAL_79 ((unsigned) (PTRACE_GETCRUNCHREGS))
+ #define XLAT_STR_79 STRINGIFY(PTRACE_GETCRUNCHREGS)
 #endif
+#endif
+#if defined __arm__
+ XLAT(PTRACE_SETCRUNCHREGS),
+ #define XLAT_VAL_80 ((unsigned) (PTRACE_SETCRUNCHREGS))
+ #define XLAT_STR_80 STRINGIFY(PTRACE_SETCRUNCHREGS)
+#else
 #if defined(PTRACE_SETCRUNCHREGS) || (defined(HAVE_DECL_PTRACE_SETCRUNCHREGS) && HAVE_DECL_PTRACE_SETCRUNCHREGS)
   XLAT(PTRACE_SETCRUNCHREGS),
+ #define XLAT_VAL_81 ((unsigned) (PTRACE_SETCRUNCHREGS))
+ #define XLAT_STR_81 STRINGIFY(PTRACE_SETCRUNCHREGS)
+#endif
 #endif
+#if defined __arm__
+ XLAT(PTRACE_GETVFPREGS),
+ #define XLAT_VAL_82 ((unsigned) (PTRACE_GETVFPREGS))
+ #define XLAT_STR_82 STRINGIFY(PTRACE_GETVFPREGS)
+#else
 #if defined(PTRACE_GETVFPREGS) || (defined(HAVE_DECL_PTRACE_GETVFPREGS) && HAVE_DECL_PTRACE_GETVFPREGS)
   XLAT(PTRACE_GETVFPREGS),
+ #define XLAT_VAL_83 ((unsigned) (PTRACE_GETVFPREGS))
+ #define XLAT_STR_83 STRINGIFY(PTRACE_GETVFPREGS)
+#endif
 #endif
+#if defined __arm__
+ XLAT(PTRACE_SETVFPREGS),
+ #define XLAT_VAL_84 ((unsigned) (PTRACE_SETVFPREGS))
+ #define XLAT_STR_84 STRINGIFY(PTRACE_SETVFPREGS)
+#else
 #if defined(PTRACE_SETVFPREGS) || (defined(HAVE_DECL_PTRACE_SETVFPREGS) && HAVE_DECL_PTRACE_SETVFPREGS)
   XLAT(PTRACE_SETVFPREGS),
+ #define XLAT_VAL_85 ((unsigned) (PTRACE_SETVFPREGS))
+ #define XLAT_STR_85 STRINGIFY(PTRACE_SETVFPREGS)
 #endif
-#if defined(PTRACE_GETHBPREGS) || (defined(HAVE_DECL_PTRACE_GETHBPREGS) && HAVE_DECL_PTRACE_GETHBPREGS)
-  XLAT(PTRACE_GETHBPREGS),
-#endif
-#if defined(PTRACE_SETHBPREGS) || (defined(HAVE_DECL_PTRACE_SETHBPREGS) && HAVE_DECL_PTRACE_SETHBPREGS)
-  XLAT(PTRACE_SETHBPREGS),
 #endif
 
+
+#if defined __ia64__
+ XLAT(PTRACE_OLD_GETSIGINFO),
+ #define XLAT_VAL_86 ((unsigned) (PTRACE_OLD_GETSIGINFO))
+ #define XLAT_STR_86 STRINGIFY(PTRACE_OLD_GETSIGINFO)
+#else
 #if defined(PTRACE_OLD_GETSIGINFO) || (defined(HAVE_DECL_PTRACE_OLD_GETSIGINFO) && HAVE_DECL_PTRACE_OLD_GETSIGINFO)
   XLAT(PTRACE_OLD_GETSIGINFO),
+ #define XLAT_VAL_87 ((unsigned) (PTRACE_OLD_GETSIGINFO))
+ #define XLAT_STR_87 STRINGIFY(PTRACE_OLD_GETSIGINFO)
+#endif
 #endif
+#if defined __ia64__
+ XLAT(PTRACE_OLD_SETSIGINFO),
+ #define XLAT_VAL_88 ((unsigned) (PTRACE_OLD_SETSIGINFO))
+ #define XLAT_STR_88 STRINGIFY(PTRACE_OLD_SETSIGINFO)
+#else
 #if defined(PTRACE_OLD_SETSIGINFO) || (defined(HAVE_DECL_PTRACE_OLD_SETSIGINFO) && HAVE_DECL_PTRACE_OLD_SETSIGINFO)
   XLAT(PTRACE_OLD_SETSIGINFO),
+ #define XLAT_VAL_89 ((unsigned) (PTRACE_OLD_SETSIGINFO))
+ #define XLAT_STR_89 STRINGIFY(PTRACE_OLD_SETSIGINFO)
 #endif
+#endif
+
 
+#if defined __mips__
+ XLAT(PTRACE_PEEKTEXT_3264),
+ #define XLAT_VAL_90 ((unsigned) (PTRACE_PEEKTEXT_3264))
+ #define XLAT_STR_90 STRINGIFY(PTRACE_PEEKTEXT_3264)
+#else
 #if defined(PTRACE_PEEKTEXT_3264) || (defined(HAVE_DECL_PTRACE_PEEKTEXT_3264) && HAVE_DECL_PTRACE_PEEKTEXT_3264)
   XLAT(PTRACE_PEEKTEXT_3264),
+ #define XLAT_VAL_91 ((unsigned) (PTRACE_PEEKTEXT_3264))
+ #define XLAT_STR_91 STRINGIFY(PTRACE_PEEKTEXT_3264)
 #endif
+#endif
+#if defined __mips__
+ XLAT(PTRACE_PEEKDATA_3264),
+ #define XLAT_VAL_92 ((unsigned) (PTRACE_PEEKDATA_3264))
+ #define XLAT_STR_92 STRINGIFY(PTRACE_PEEKDATA_3264)
+#else
 #if defined(PTRACE_PEEKDATA_3264) || (defined(HAVE_DECL_PTRACE_PEEKDATA_3264) && HAVE_DECL_PTRACE_PEEKDATA_3264)
   XLAT(PTRACE_PEEKDATA_3264),
+ #define XLAT_VAL_93 ((unsigned) (PTRACE_PEEKDATA_3264))
+ #define XLAT_STR_93 STRINGIFY(PTRACE_PEEKDATA_3264)
+#endif
 #endif
+#if defined __mips__
+ XLAT(PTRACE_POKETEXT_3264),
+ #define XLAT_VAL_94 ((unsigned) (PTRACE_POKETEXT_3264))
+ #define XLAT_STR_94 STRINGIFY(PTRACE_POKETEXT_3264)
+#else
 #if defined(PTRACE_POKETEXT_3264) || (defined(HAVE_DECL_PTRACE_POKETEXT_3264) && HAVE_DECL_PTRACE_POKETEXT_3264)
   XLAT(PTRACE_POKETEXT_3264),
+ #define XLAT_VAL_95 ((unsigned) (PTRACE_POKETEXT_3264))
+ #define XLAT_STR_95 STRINGIFY(PTRACE_POKETEXT_3264)
 #endif
+#endif
+#if defined __mips__
+ XLAT(PTRACE_POKEDATA_3264),
+ #define XLAT_VAL_96 ((unsigned) (PTRACE_POKEDATA_3264))
+ #define XLAT_STR_96 STRINGIFY(PTRACE_POKEDATA_3264)
+#else
 #if defined(PTRACE_POKEDATA_3264) || (defined(HAVE_DECL_PTRACE_POKEDATA_3264) && HAVE_DECL_PTRACE_POKEDATA_3264)
   XLAT(PTRACE_POKEDATA_3264),
+ #define XLAT_VAL_97 ((unsigned) (PTRACE_POKEDATA_3264))
+ #define XLAT_STR_97 STRINGIFY(PTRACE_POKEDATA_3264)
+#endif
 #endif
+#if defined __mips__
+ XLAT(PTRACE_GET_THREAD_AREA_3264),
+ #define XLAT_VAL_98 ((unsigned) (PTRACE_GET_THREAD_AREA_3264))
+ #define XLAT_STR_98 STRINGIFY(PTRACE_GET_THREAD_AREA_3264)
+#else
 #if defined(PTRACE_GET_THREAD_AREA_3264) || (defined(HAVE_DECL_PTRACE_GET_THREAD_AREA_3264) && HAVE_DECL_PTRACE_GET_THREAD_AREA_3264)
   XLAT(PTRACE_GET_THREAD_AREA_3264),
+ #define XLAT_VAL_99 ((unsigned) (PTRACE_GET_THREAD_AREA_3264))
+ #define XLAT_STR_99 STRINGIFY(PTRACE_GET_THREAD_AREA_3264)
+#endif
 #endif
+#if defined __mips__
+ XLAT(PTRACE_GET_WATCH_REGS),
+ #define XLAT_VAL_100 ((unsigned) (PTRACE_GET_WATCH_REGS))
+ #define XLAT_STR_100 STRINGIFY(PTRACE_GET_WATCH_REGS)
+#else
 #if defined(PTRACE_GET_WATCH_REGS) || (defined(HAVE_DECL_PTRACE_GET_WATCH_REGS) && HAVE_DECL_PTRACE_GET_WATCH_REGS)
   XLAT(PTRACE_GET_WATCH_REGS),
+ #define XLAT_VAL_101 ((unsigned) (PTRACE_GET_WATCH_REGS))
+ #define XLAT_STR_101 STRINGIFY(PTRACE_GET_WATCH_REGS)
 #endif
+#endif
+#if defined __mips__
+ XLAT(PTRACE_SET_WATCH_REGS),
+ #define XLAT_VAL_102 ((unsigned) (PTRACE_SET_WATCH_REGS))
+ #define XLAT_STR_102 STRINGIFY(PTRACE_SET_WATCH_REGS)
+#else
 #if defined(PTRACE_SET_WATCH_REGS) || (defined(HAVE_DECL_PTRACE_SET_WATCH_REGS) && HAVE_DECL_PTRACE_SET_WATCH_REGS)
   XLAT(PTRACE_SET_WATCH_REGS),
+ #define XLAT_VAL_103 ((unsigned) (PTRACE_SET_WATCH_REGS))
+ #define XLAT_STR_103 STRINGIFY(PTRACE_SET_WATCH_REGS)
+#endif
 #endif
 
+
+#if defined __powerpc__
+ XLAT(PTRACE_GETVRREGS),
+ #define XLAT_VAL_104 ((unsigned) (PTRACE_GETVRREGS))
+ #define XLAT_STR_104 STRINGIFY(PTRACE_GETVRREGS)
+#else
+#if defined(PTRACE_GETVRREGS) || (defined(HAVE_DECL_PTRACE_GETVRREGS) && HAVE_DECL_PTRACE_GETVRREGS)
+  XLAT(PTRACE_GETVRREGS),
+ #define XLAT_VAL_105 ((unsigned) (PTRACE_GETVRREGS))
+ #define XLAT_STR_105 STRINGIFY(PTRACE_GETVRREGS)
+#endif
+#endif
+#if defined __powerpc__
+ XLAT(PTRACE_SETVRREGS),
+ #define XLAT_VAL_106 ((unsigned) (PTRACE_SETVRREGS))
+ #define XLAT_STR_106 STRINGIFY(PTRACE_SETVRREGS)
+#else
+#if defined(PTRACE_SETVRREGS) || (defined(HAVE_DECL_PTRACE_SETVRREGS) && HAVE_DECL_PTRACE_SETVRREGS)
+  XLAT(PTRACE_SETVRREGS),
+ #define XLAT_VAL_107 ((unsigned) (PTRACE_SETVRREGS))
+ #define XLAT_STR_107 STRINGIFY(PTRACE_SETVRREGS)
+#endif
+#endif
+#if defined __powerpc__
+ XLAT(PTRACE_GETEVRREGS),
+ #define XLAT_VAL_108 ((unsigned) (PTRACE_GETEVRREGS))
+ #define XLAT_STR_108 STRINGIFY(PTRACE_GETEVRREGS)
+#else
 #if defined(PTRACE_GETEVRREGS) || (defined(HAVE_DECL_PTRACE_GETEVRREGS) && HAVE_DECL_PTRACE_GETEVRREGS)
   XLAT(PTRACE_GETEVRREGS),
+ #define XLAT_VAL_109 ((unsigned) (PTRACE_GETEVRREGS))
+ #define XLAT_STR_109 STRINGIFY(PTRACE_GETEVRREGS)
+#endif
 #endif
+#if defined __powerpc__
+ XLAT(PTRACE_SETEVRREGS),
+ #define XLAT_VAL_110 ((unsigned) (PTRACE_SETEVRREGS))
+ #define XLAT_STR_110 STRINGIFY(PTRACE_SETEVRREGS)
+#else
 #if defined(PTRACE_SETEVRREGS) || (defined(HAVE_DECL_PTRACE_SETEVRREGS) && HAVE_DECL_PTRACE_SETEVRREGS)
   XLAT(PTRACE_SETEVRREGS),
+ #define XLAT_VAL_111 ((unsigned) (PTRACE_SETEVRREGS))
+ #define XLAT_STR_111 STRINGIFY(PTRACE_SETEVRREGS)
+#endif
 #endif
+#if defined __powerpc__
+ XLAT(PTRACE_GETVSRREGS),
+ #define XLAT_VAL_112 ((unsigned) (PTRACE_GETVSRREGS))
+ #define XLAT_STR_112 STRINGIFY(PTRACE_GETVSRREGS)
+#else
 #if defined(PTRACE_GETVSRREGS) || (defined(HAVE_DECL_PTRACE_GETVSRREGS) && HAVE_DECL_PTRACE_GETVSRREGS)
   XLAT(PTRACE_GETVSRREGS),
+ #define XLAT_VAL_113 ((unsigned) (PTRACE_GETVSRREGS))
+ #define XLAT_STR_113 STRINGIFY(PTRACE_GETVSRREGS)
 #endif
+#endif
+#if defined __powerpc__
+ XLAT(PTRACE_SETVSRREGS),
+ #define XLAT_VAL_114 ((unsigned) (PTRACE_SETVSRREGS))
+ #define XLAT_STR_114 STRINGIFY(PTRACE_SETVSRREGS)
+#else
 #if defined(PTRACE_SETVSRREGS) || (defined(HAVE_DECL_PTRACE_SETVSRREGS) && HAVE_DECL_PTRACE_SETVSRREGS)
   XLAT(PTRACE_SETVSRREGS),
+ #define XLAT_VAL_115 ((unsigned) (PTRACE_SETVSRREGS))
+ #define XLAT_STR_115 STRINGIFY(PTRACE_SETVSRREGS)
+#endif
 #endif
+#if defined __powerpc__
+ XLAT(PTRACE_GET_DEBUGREG),
+ #define XLAT_VAL_116 ((unsigned) (PTRACE_GET_DEBUGREG))
+ #define XLAT_STR_116 STRINGIFY(PTRACE_GET_DEBUGREG)
+#else
 #if defined(PTRACE_GET_DEBUGREG) || (defined(HAVE_DECL_PTRACE_GET_DEBUGREG) && HAVE_DECL_PTRACE_GET_DEBUGREG)
   XLAT(PTRACE_GET_DEBUGREG),
+ #define XLAT_VAL_117 ((unsigned) (PTRACE_GET_DEBUGREG))
+ #define XLAT_STR_117 STRINGIFY(PTRACE_GET_DEBUGREG)
 #endif
+#endif
+#if defined __powerpc__
+ XLAT(PTRACE_SET_DEBUGREG),
+ #define XLAT_VAL_118 ((unsigned) (PTRACE_SET_DEBUGREG))
+ #define XLAT_STR_118 STRINGIFY(PTRACE_SET_DEBUGREG)
+#else
 #if defined(PTRACE_SET_DEBUGREG) || (defined(HAVE_DECL_PTRACE_SET_DEBUGREG) && HAVE_DECL_PTRACE_SET_DEBUGREG)
   XLAT(PTRACE_SET_DEBUGREG),
+ #define XLAT_VAL_119 ((unsigned) (PTRACE_SET_DEBUGREG))
+ #define XLAT_STR_119 STRINGIFY(PTRACE_SET_DEBUGREG)
+#endif
+#endif
+#if defined __powerpc__
+ XLAT(PPC_PTRACE_DELHWDEBUG),
+ #define XLAT_VAL_120 ((unsigned) (PPC_PTRACE_DELHWDEBUG))
+ #define XLAT_STR_120 STRINGIFY(PPC_PTRACE_DELHWDEBUG)
+#else
+#if defined(PPC_PTRACE_DELHWDEBUG) || (defined(HAVE_DECL_PPC_PTRACE_DELHWDEBUG) && HAVE_DECL_PPC_PTRACE_DELHWDEBUG)
+  XLAT(PPC_PTRACE_DELHWDEBUG),
+ #define XLAT_VAL_121 ((unsigned) (PPC_PTRACE_DELHWDEBUG))
+ #define XLAT_STR_121 STRINGIFY(PPC_PTRACE_DELHWDEBUG)
 #endif
-#if defined(PPC_PTRACE_GETHWDBGINFO) || (defined(HAVE_DECL_PPC_PTRACE_GETHWDBGINFO) && HAVE_DECL_PPC_PTRACE_GETHWDBGINFO)
-  XLAT(PPC_PTRACE_GETHWDBGINFO),
 #endif
+#if defined __powerpc__
+ XLAT(PPC_PTRACE_SETHWDEBUG),
+ #define XLAT_VAL_122 ((unsigned) (PPC_PTRACE_SETHWDEBUG))
+ #define XLAT_STR_122 STRINGIFY(PPC_PTRACE_SETHWDEBUG)
+#else
 #if defined(PPC_PTRACE_SETHWDEBUG) || (defined(HAVE_DECL_PPC_PTRACE_SETHWDEBUG) && HAVE_DECL_PPC_PTRACE_SETHWDEBUG)
   XLAT(PPC_PTRACE_SETHWDEBUG),
+ #define XLAT_VAL_123 ((unsigned) (PPC_PTRACE_SETHWDEBUG))
+ #define XLAT_STR_123 STRINGIFY(PPC_PTRACE_SETHWDEBUG)
 #endif
-#if defined(PPC_PTRACE_DELHWDEBUG) || (defined(HAVE_DECL_PPC_PTRACE_DELHWDEBUG) && HAVE_DECL_PPC_PTRACE_DELHWDEBUG)
-  XLAT(PPC_PTRACE_DELHWDEBUG),
 #endif
+#if defined __powerpc__
+ XLAT(PPC_PTRACE_GETHWDBGINFO),
+ #define XLAT_VAL_124 ((unsigned) (PPC_PTRACE_GETHWDBGINFO))
+ #define XLAT_STR_124 STRINGIFY(PPC_PTRACE_GETHWDBGINFO)
+#else
+#if defined(PPC_PTRACE_GETHWDBGINFO) || (defined(HAVE_DECL_PPC_PTRACE_GETHWDBGINFO) && HAVE_DECL_PPC_PTRACE_GETHWDBGINFO)
+  XLAT(PPC_PTRACE_GETHWDBGINFO),
+ #define XLAT_VAL_125 ((unsigned) (PPC_PTRACE_GETHWDBGINFO))
+ #define XLAT_STR_125 STRINGIFY(PPC_PTRACE_GETHWDBGINFO)
+#endif
+#endif
+#if defined __powerpc__
+ XLAT(PPC_PTRACE_POKEUSR_3264),
+ #define XLAT_VAL_126 ((unsigned) (PPC_PTRACE_POKEUSR_3264))
+ #define XLAT_STR_126 STRINGIFY(PPC_PTRACE_POKEUSR_3264)
+#else
+#if defined(PPC_PTRACE_POKEUSR_3264) || (defined(HAVE_DECL_PPC_PTRACE_POKEUSR_3264) && HAVE_DECL_PPC_PTRACE_POKEUSR_3264)
+  XLAT(PPC_PTRACE_POKEUSR_3264),
+ #define XLAT_VAL_127 ((unsigned) (PPC_PTRACE_POKEUSR_3264))
+ #define XLAT_STR_127 STRINGIFY(PPC_PTRACE_POKEUSR_3264)
+#endif
+#endif
+#if defined __powerpc__
+ XLAT(PPC_PTRACE_PEEKUSR_3264),
+ #define XLAT_VAL_128 ((unsigned) (PPC_PTRACE_PEEKUSR_3264))
+ #define XLAT_STR_128 STRINGIFY(PPC_PTRACE_PEEKUSR_3264)
+#else
+#if defined(PPC_PTRACE_PEEKUSR_3264) || (defined(HAVE_DECL_PPC_PTRACE_PEEKUSR_3264) && HAVE_DECL_PPC_PTRACE_PEEKUSR_3264)
+  XLAT(PPC_PTRACE_PEEKUSR_3264),
+ #define XLAT_VAL_129 ((unsigned) (PPC_PTRACE_PEEKUSR_3264))
+ #define XLAT_STR_129 STRINGIFY(PPC_PTRACE_PEEKUSR_3264)
+#endif
+#endif
+#if defined __powerpc__
+ XLAT(PPC_PTRACE_POKEDATA_3264),
+ #define XLAT_VAL_130 ((unsigned) (PPC_PTRACE_POKEDATA_3264))
+ #define XLAT_STR_130 STRINGIFY(PPC_PTRACE_POKEDATA_3264)
+#else
+#if defined(PPC_PTRACE_POKEDATA_3264) || (defined(HAVE_DECL_PPC_PTRACE_POKEDATA_3264) && HAVE_DECL_PPC_PTRACE_POKEDATA_3264)
+  XLAT(PPC_PTRACE_POKEDATA_3264),
+ #define XLAT_VAL_131 ((unsigned) (PPC_PTRACE_POKEDATA_3264))
+ #define XLAT_STR_131 STRINGIFY(PPC_PTRACE_POKEDATA_3264)
+#endif
+#endif
+#if defined __powerpc__
+ XLAT(PPC_PTRACE_POKETEXT_3264),
+ #define XLAT_VAL_132 ((unsigned) (PPC_PTRACE_POKETEXT_3264))
+ #define XLAT_STR_132 STRINGIFY(PPC_PTRACE_POKETEXT_3264)
+#else
+#if defined(PPC_PTRACE_POKETEXT_3264) || (defined(HAVE_DECL_PPC_PTRACE_POKETEXT_3264) && HAVE_DECL_PPC_PTRACE_POKETEXT_3264)
+  XLAT(PPC_PTRACE_POKETEXT_3264),
+ #define XLAT_VAL_133 ((unsigned) (PPC_PTRACE_POKETEXT_3264))
+ #define XLAT_STR_133 STRINGIFY(PPC_PTRACE_POKETEXT_3264)
+#endif
+#endif
+#if defined __powerpc__
+ XLAT(PPC_PTRACE_PEEKDATA_3264),
+ #define XLAT_VAL_134 ((unsigned) (PPC_PTRACE_PEEKDATA_3264))
+ #define XLAT_STR_134 STRINGIFY(PPC_PTRACE_PEEKDATA_3264)
+#else
+#if defined(PPC_PTRACE_PEEKDATA_3264) || (defined(HAVE_DECL_PPC_PTRACE_PEEKDATA_3264) && HAVE_DECL_PPC_PTRACE_PEEKDATA_3264)
+  XLAT(PPC_PTRACE_PEEKDATA_3264),
+ #define XLAT_VAL_135 ((unsigned) (PPC_PTRACE_PEEKDATA_3264))
+ #define XLAT_STR_135 STRINGIFY(PPC_PTRACE_PEEKDATA_3264)
+#endif
+#endif
+#if defined __powerpc__
+ XLAT(PPC_PTRACE_PEEKTEXT_3264),
+ #define XLAT_VAL_136 ((unsigned) (PPC_PTRACE_PEEKTEXT_3264))
+ #define XLAT_STR_136 STRINGIFY(PPC_PTRACE_PEEKTEXT_3264)
+#else
+#if defined(PPC_PTRACE_PEEKTEXT_3264) || (defined(HAVE_DECL_PPC_PTRACE_PEEKTEXT_3264) && HAVE_DECL_PPC_PTRACE_PEEKTEXT_3264)
+  XLAT(PPC_PTRACE_PEEKTEXT_3264),
+ #define XLAT_VAL_137 ((unsigned) (PPC_PTRACE_PEEKTEXT_3264))
+ #define XLAT_STR_137 STRINGIFY(PPC_PTRACE_PEEKTEXT_3264)
+#endif
+#endif
+
 
+#if defined __s390__
+ XLAT(PTRACE_PEEKUSR_AREA),
+ #define XLAT_VAL_138 ((unsigned) (PTRACE_PEEKUSR_AREA))
+ #define XLAT_STR_138 STRINGIFY(PTRACE_PEEKUSR_AREA)
+#else
 #if defined(PTRACE_PEEKUSR_AREA) || (defined(HAVE_DECL_PTRACE_PEEKUSR_AREA) && HAVE_DECL_PTRACE_PEEKUSR_AREA)
   XLAT(PTRACE_PEEKUSR_AREA),
+ #define XLAT_VAL_139 ((unsigned) (PTRACE_PEEKUSR_AREA))
+ #define XLAT_STR_139 STRINGIFY(PTRACE_PEEKUSR_AREA)
 #endif
+#endif
+#if defined __s390__
+ XLAT(PTRACE_POKEUSR_AREA),
+ #define XLAT_VAL_140 ((unsigned) (PTRACE_POKEUSR_AREA))
+ #define XLAT_STR_140 STRINGIFY(PTRACE_POKEUSR_AREA)
+#else
 #if defined(PTRACE_POKEUSR_AREA) || (defined(HAVE_DECL_PTRACE_POKEUSR_AREA) && HAVE_DECL_PTRACE_POKEUSR_AREA)
   XLAT(PTRACE_POKEUSR_AREA),
+ #define XLAT_VAL_141 ((unsigned) (PTRACE_POKEUSR_AREA))
+ #define XLAT_STR_141 STRINGIFY(PTRACE_POKEUSR_AREA)
+#endif
 #endif
+#if defined __s390__
+ XLAT(PTRACE_PEEKTEXT_AREA),
+ #define XLAT_VAL_142 ((unsigned) (PTRACE_PEEKTEXT_AREA))
+ #define XLAT_STR_142 STRINGIFY(PTRACE_PEEKTEXT_AREA)
+#else
 #if defined(PTRACE_PEEKTEXT_AREA) || (defined(HAVE_DECL_PTRACE_PEEKTEXT_AREA) && HAVE_DECL_PTRACE_PEEKTEXT_AREA)
   XLAT(PTRACE_PEEKTEXT_AREA),
+ #define XLAT_VAL_143 ((unsigned) (PTRACE_PEEKTEXT_AREA))
+ #define XLAT_STR_143 STRINGIFY(PTRACE_PEEKTEXT_AREA)
 #endif
+#endif
+#if defined __s390__
+ XLAT(PTRACE_PEEKDATA_AREA),
+ #define XLAT_VAL_144 ((unsigned) (PTRACE_PEEKDATA_AREA))
+ #define XLAT_STR_144 STRINGIFY(PTRACE_PEEKDATA_AREA)
+#else
 #if defined(PTRACE_PEEKDATA_AREA) || (defined(HAVE_DECL_PTRACE_PEEKDATA_AREA) && HAVE_DECL_PTRACE_PEEKDATA_AREA)
   XLAT(PTRACE_PEEKDATA_AREA),
+ #define XLAT_VAL_145 ((unsigned) (PTRACE_PEEKDATA_AREA))
+ #define XLAT_STR_145 STRINGIFY(PTRACE_PEEKDATA_AREA)
+#endif
 #endif
+#if defined __s390__
+ XLAT(PTRACE_POKETEXT_AREA),
+ #define XLAT_VAL_146 ((unsigned) (PTRACE_POKETEXT_AREA))
+ #define XLAT_STR_146 STRINGIFY(PTRACE_POKETEXT_AREA)
+#else
 #if defined(PTRACE_POKETEXT_AREA) || (defined(HAVE_DECL_PTRACE_POKETEXT_AREA) && HAVE_DECL_PTRACE_POKETEXT_AREA)
   XLAT(PTRACE_POKETEXT_AREA),
+ #define XLAT_VAL_147 ((unsigned) (PTRACE_POKETEXT_AREA))
+ #define XLAT_STR_147 STRINGIFY(PTRACE_POKETEXT_AREA)
+#endif
 #endif
+#if defined __s390__
+ XLAT(PTRACE_POKEDATA_AREA),
+ #define XLAT_VAL_148 ((unsigned) (PTRACE_POKEDATA_AREA))
+ #define XLAT_STR_148 STRINGIFY(PTRACE_POKEDATA_AREA)
+#else
 #if defined(PTRACE_POKEDATA_AREA) || (defined(HAVE_DECL_PTRACE_POKEDATA_AREA) && HAVE_DECL_PTRACE_POKEDATA_AREA)
   XLAT(PTRACE_POKEDATA_AREA),
+ #define XLAT_VAL_149 ((unsigned) (PTRACE_POKEDATA_AREA))
+ #define XLAT_STR_149 STRINGIFY(PTRACE_POKEDATA_AREA)
 #endif
+#endif
+#if defined __s390__
+ XLAT(PTRACE_GET_LAST_BREAK),
+ #define XLAT_VAL_150 ((unsigned) (PTRACE_GET_LAST_BREAK))
+ #define XLAT_STR_150 STRINGIFY(PTRACE_GET_LAST_BREAK)
+#else
 #if defined(PTRACE_GET_LAST_BREAK) || (defined(HAVE_DECL_PTRACE_GET_LAST_BREAK) && HAVE_DECL_PTRACE_GET_LAST_BREAK)
   XLAT(PTRACE_GET_LAST_BREAK),
+ #define XLAT_VAL_151 ((unsigned) (PTRACE_GET_LAST_BREAK))
+ #define XLAT_STR_151 STRINGIFY(PTRACE_GET_LAST_BREAK)
+#endif
 #endif
+#if defined __s390__
+ XLAT(PTRACE_PEEK_SYSTEM_CALL),
+ #define XLAT_VAL_152 ((unsigned) (PTRACE_PEEK_SYSTEM_CALL))
+ #define XLAT_STR_152 STRINGIFY(PTRACE_PEEK_SYSTEM_CALL)
+#else
 #if defined(PTRACE_PEEK_SYSTEM_CALL) || (defined(HAVE_DECL_PTRACE_PEEK_SYSTEM_CALL) && HAVE_DECL_PTRACE_PEEK_SYSTEM_CALL)
   XLAT(PTRACE_PEEK_SYSTEM_CALL),
+ #define XLAT_VAL_153 ((unsigned) (PTRACE_PEEK_SYSTEM_CALL))
+ #define XLAT_STR_153 STRINGIFY(PTRACE_PEEK_SYSTEM_CALL)
+#endif
 #endif
+#if defined __s390__
+ XLAT(PTRACE_POKE_SYSTEM_CALL),
+ #define XLAT_VAL_154 ((unsigned) (PTRACE_POKE_SYSTEM_CALL))
+ #define XLAT_STR_154 STRINGIFY(PTRACE_POKE_SYSTEM_CALL)
+#else
 #if defined(PTRACE_POKE_SYSTEM_CALL) || (defined(HAVE_DECL_PTRACE_POKE_SYSTEM_CALL) && HAVE_DECL_PTRACE_POKE_SYSTEM_CALL)
   XLAT(PTRACE_POKE_SYSTEM_CALL),
+ #define XLAT_VAL_155 ((unsigned) (PTRACE_POKE_SYSTEM_CALL))
+ #define XLAT_STR_155 STRINGIFY(PTRACE_POKE_SYSTEM_CALL)
 #endif
+#endif
+#if defined __s390__
+ XLAT(PTRACE_ENABLE_TE),
+ #define XLAT_VAL_156 ((unsigned) (PTRACE_ENABLE_TE))
+ #define XLAT_STR_156 STRINGIFY(PTRACE_ENABLE_TE)
+#else
 #if defined(PTRACE_ENABLE_TE) || (defined(HAVE_DECL_PTRACE_ENABLE_TE) && HAVE_DECL_PTRACE_ENABLE_TE)
   XLAT(PTRACE_ENABLE_TE),
+ #define XLAT_VAL_157 ((unsigned) (PTRACE_ENABLE_TE))
+ #define XLAT_STR_157 STRINGIFY(PTRACE_ENABLE_TE)
+#endif
 #endif
+#if defined __s390__
+ XLAT(PTRACE_DISABLE_TE),
+ #define XLAT_VAL_158 ((unsigned) (PTRACE_DISABLE_TE))
+ #define XLAT_STR_158 STRINGIFY(PTRACE_DISABLE_TE)
+#else
 #if defined(PTRACE_DISABLE_TE) || (defined(HAVE_DECL_PTRACE_DISABLE_TE) && HAVE_DECL_PTRACE_DISABLE_TE)
   XLAT(PTRACE_DISABLE_TE),
+ #define XLAT_VAL_159 ((unsigned) (PTRACE_DISABLE_TE))
+ #define XLAT_STR_159 STRINGIFY(PTRACE_DISABLE_TE)
+#endif
 #endif
+#if defined __s390__
+ XLAT(PTRACE_TE_ABORT_RAND),
+ #define XLAT_VAL_160 ((unsigned) (PTRACE_TE_ABORT_RAND))
+ #define XLAT_STR_160 STRINGIFY(PTRACE_TE_ABORT_RAND)
+#else
 #if defined(PTRACE_TE_ABORT_RAND) || (defined(HAVE_DECL_PTRACE_TE_ABORT_RAND) && HAVE_DECL_PTRACE_TE_ABORT_RAND)
   XLAT(PTRACE_TE_ABORT_RAND),
+ #define XLAT_VAL_161 ((unsigned) (PTRACE_TE_ABORT_RAND))
+ #define XLAT_STR_161 STRINGIFY(PTRACE_TE_ABORT_RAND)
 #endif
+#endif
+
 
+#if defined __sh__
+ XLAT(PTRACE_GETDSPREGS),
+ #define XLAT_VAL_162 ((unsigned) (PTRACE_GETDSPREGS))
+ #define XLAT_STR_162 STRINGIFY(PTRACE_GETDSPREGS)
+#else
 #if defined(PTRACE_GETDSPREGS) || (defined(HAVE_DECL_PTRACE_GETDSPREGS) && HAVE_DECL_PTRACE_GETDSPREGS)
   XLAT(PTRACE_GETDSPREGS),
+ #define XLAT_VAL_163 ((unsigned) (PTRACE_GETDSPREGS))
+ #define XLAT_STR_163 STRINGIFY(PTRACE_GETDSPREGS)
 #endif
+#endif
+#if defined __sh__
+ XLAT(PTRACE_SETDSPREGS),
+ #define XLAT_VAL_164 ((unsigned) (PTRACE_SETDSPREGS))
+ #define XLAT_STR_164 STRINGIFY(PTRACE_SETDSPREGS)
+#else
 #if defined(PTRACE_SETDSPREGS) || (defined(HAVE_DECL_PTRACE_SETDSPREGS) && HAVE_DECL_PTRACE_SETDSPREGS)
   XLAT(PTRACE_SETDSPREGS),
+ #define XLAT_VAL_165 ((unsigned) (PTRACE_SETDSPREGS))
+ #define XLAT_STR_165 STRINGIFY(PTRACE_SETDSPREGS)
+#endif
 #endif
 
+
+#if defined __sparc__
+ XLAT(PTRACE_SPARC_DETACH),
+ #define XLAT_VAL_166 ((unsigned) (PTRACE_SPARC_DETACH))
+ #define XLAT_STR_166 STRINGIFY(PTRACE_SPARC_DETACH)
+#else
 #if defined(PTRACE_SPARC_DETACH) || (defined(HAVE_DECL_PTRACE_SPARC_DETACH) && HAVE_DECL_PTRACE_SPARC_DETACH)
   XLAT(PTRACE_SPARC_DETACH),
+ #define XLAT_VAL_167 ((unsigned) (PTRACE_SPARC_DETACH))
+ #define XLAT_STR_167 STRINGIFY(PTRACE_SPARC_DETACH)
+#endif
 #endif
+#if defined __sparc__
+ XLAT(PTRACE_READDATA),
+ #define XLAT_VAL_168 ((unsigned) (PTRACE_READDATA))
+ #define XLAT_STR_168 STRINGIFY(PTRACE_READDATA)
+#else
 #if defined(PTRACE_READDATA) || (defined(HAVE_DECL_PTRACE_READDATA) && HAVE_DECL_PTRACE_READDATA)
   XLAT(PTRACE_READDATA),
+ #define XLAT_VAL_169 ((unsigned) (PTRACE_READDATA))
+ #define XLAT_STR_169 STRINGIFY(PTRACE_READDATA)
+#endif
 #endif
+#if defined __sparc__
+ XLAT(PTRACE_WRITEDATA),
+ #define XLAT_VAL_170 ((unsigned) (PTRACE_WRITEDATA))
+ #define XLAT_STR_170 STRINGIFY(PTRACE_WRITEDATA)
+#else
 #if defined(PTRACE_WRITEDATA) || (defined(HAVE_DECL_PTRACE_WRITEDATA) && HAVE_DECL_PTRACE_WRITEDATA)
   XLAT(PTRACE_WRITEDATA),
+ #define XLAT_VAL_171 ((unsigned) (PTRACE_WRITEDATA))
+ #define XLAT_STR_171 STRINGIFY(PTRACE_WRITEDATA)
 #endif
+#endif
+#if defined __sparc__
+ XLAT(PTRACE_READTEXT),
+ #define XLAT_VAL_172 ((unsigned) (PTRACE_READTEXT))
+ #define XLAT_STR_172 STRINGIFY(PTRACE_READTEXT)
+#else
 #if defined(PTRACE_READTEXT) || (defined(HAVE_DECL_PTRACE_READTEXT) && HAVE_DECL_PTRACE_READTEXT)
   XLAT(PTRACE_READTEXT),
+ #define XLAT_VAL_173 ((unsigned) (PTRACE_READTEXT))
+ #define XLAT_STR_173 STRINGIFY(PTRACE_READTEXT)
+#endif
 #endif
+#if defined __sparc__
+ XLAT(PTRACE_WRITETEXT),
+ #define XLAT_VAL_174 ((unsigned) (PTRACE_WRITETEXT))
+ #define XLAT_STR_174 STRINGIFY(PTRACE_WRITETEXT)
+#else
 #if defined(PTRACE_WRITETEXT) || (defined(HAVE_DECL_PTRACE_WRITETEXT) && HAVE_DECL_PTRACE_WRITETEXT)
   XLAT(PTRACE_WRITETEXT),
+ #define XLAT_VAL_175 ((unsigned) (PTRACE_WRITETEXT))
+ #define XLAT_STR_175 STRINGIFY(PTRACE_WRITETEXT)
 #endif
+#endif
+#if defined __sparc__
+ XLAT(PTRACE_GETFPAREGS),
+ #define XLAT_VAL_176 ((unsigned) (PTRACE_GETFPAREGS))
+ #define XLAT_STR_176 STRINGIFY(PTRACE_GETFPAREGS)
+#else
 #if defined(PTRACE_GETFPAREGS) || (defined(HAVE_DECL_PTRACE_GETFPAREGS) && HAVE_DECL_PTRACE_GETFPAREGS)
   XLAT(PTRACE_GETFPAREGS),
+ #define XLAT_VAL_177 ((unsigned) (PTRACE_GETFPAREGS))
+ #define XLAT_STR_177 STRINGIFY(PTRACE_GETFPAREGS)
+#endif
 #endif
+#if defined __sparc__
+ XLAT(PTRACE_SETFPAREGS),
+ #define XLAT_VAL_178 ((unsigned) (PTRACE_SETFPAREGS))
+ #define XLAT_STR_178 STRINGIFY(PTRACE_SETFPAREGS)
+#else
 #if defined(PTRACE_SETFPAREGS) || (defined(HAVE_DECL_PTRACE_SETFPAREGS) && HAVE_DECL_PTRACE_SETFPAREGS)
   XLAT(PTRACE_SETFPAREGS),
+ #define XLAT_VAL_179 ((unsigned) (PTRACE_SETFPAREGS))
+ #define XLAT_STR_179 STRINGIFY(PTRACE_SETFPAREGS)
 #endif
-#if defined(PTRACE_GETREGS64) || (defined(HAVE_DECL_PTRACE_GETREGS64) && HAVE_DECL_PTRACE_GETREGS64)
-  XLAT(PTRACE_GETREGS64),
-#endif
-#if defined(PTRACE_SETREGS64) || (defined(HAVE_DECL_PTRACE_SETREGS64) && HAVE_DECL_PTRACE_SETREGS64)
-  XLAT(PTRACE_SETREGS64),
 #endif
+#if defined __sparc__
+ XLAT(PTRACE_GETFPREGS64),
+ #define XLAT_VAL_180 ((unsigned) (PTRACE_GETFPREGS64))
+ #define XLAT_STR_180 STRINGIFY(PTRACE_GETFPREGS64)
+#else
 #if defined(PTRACE_GETFPREGS64) || (defined(HAVE_DECL_PTRACE_GETFPREGS64) && HAVE_DECL_PTRACE_GETFPREGS64)
   XLAT(PTRACE_GETFPREGS64),
+ #define XLAT_VAL_181 ((unsigned) (PTRACE_GETFPREGS64))
+ #define XLAT_STR_181 STRINGIFY(PTRACE_GETFPREGS64)
 #endif
+#endif
+#if defined __sparc__
+ XLAT(PTRACE_SETFPREGS64),
+ #define XLAT_VAL_182 ((unsigned) (PTRACE_SETFPREGS64))
+ #define XLAT_STR_182 STRINGIFY(PTRACE_SETFPREGS64)
+#else
 #if defined(PTRACE_SETFPREGS64) || (defined(HAVE_DECL_PTRACE_SETFPREGS64) && HAVE_DECL_PTRACE_SETFPREGS64)
   XLAT(PTRACE_SETFPREGS64),
+ #define XLAT_VAL_183 ((unsigned) (PTRACE_SETFPREGS64))
+ #define XLAT_STR_183 STRINGIFY(PTRACE_SETFPREGS64)
+#endif
 #endif
 
+
+#if defined __x86_64__ || defined __i386__
+ XLAT(PTRACE_ARCH_PRCTL),
+ #define XLAT_VAL_184 ((unsigned) (PTRACE_ARCH_PRCTL))
+ #define XLAT_STR_184 STRINGIFY(PTRACE_ARCH_PRCTL)
+#else
 #if defined(PTRACE_ARCH_PRCTL) || (defined(HAVE_DECL_PTRACE_ARCH_PRCTL) && HAVE_DECL_PTRACE_ARCH_PRCTL)
   XLAT(PTRACE_ARCH_PRCTL),
+ #define XLAT_VAL_185 ((unsigned) (PTRACE_ARCH_PRCTL))
+ #define XLAT_STR_185 STRINGIFY(PTRACE_ARCH_PRCTL)
 #endif
-#if defined(PTRACE_SYSEMU) || (defined(HAVE_DECL_PTRACE_SYSEMU) && HAVE_DECL_PTRACE_SYSEMU)
-  XLAT(PTRACE_SYSEMU),
-#endif
-#if defined(PTRACE_SYSEMU_SINGLESTEP) || (defined(HAVE_DECL_PTRACE_SYSEMU_SINGLESTEP) && HAVE_DECL_PTRACE_SYSEMU_SINGLESTEP)
-  XLAT(PTRACE_SYSEMU_SINGLESTEP),
 #endif
 
+
+#if defined __xtensa__
+ XLAT(PTRACE_GETXTREGS),
+ #define XLAT_VAL_186 ((unsigned) (PTRACE_GETXTREGS))
+ #define XLAT_STR_186 STRINGIFY(PTRACE_GETXTREGS)
+#else
 #if defined(PTRACE_GETXTREGS) || (defined(HAVE_DECL_PTRACE_GETXTREGS) && HAVE_DECL_PTRACE_GETXTREGS)
   XLAT(PTRACE_GETXTREGS),
+ #define XLAT_VAL_187 ((unsigned) (PTRACE_GETXTREGS))
+ #define XLAT_STR_187 STRINGIFY(PTRACE_GETXTREGS)
+#endif
 #endif
+#if defined __xtensa__
+ XLAT(PTRACE_SETXTREGS),
+ #define XLAT_VAL_188 ((unsigned) (PTRACE_SETXTREGS))
+ #define XLAT_STR_188 STRINGIFY(PTRACE_SETXTREGS)
+#else
 #if defined(PTRACE_SETXTREGS) || (defined(HAVE_DECL_PTRACE_SETXTREGS) && HAVE_DECL_PTRACE_SETXTREGS)
   XLAT(PTRACE_SETXTREGS),
+ #define XLAT_VAL_189 ((unsigned) (PTRACE_SETXTREGS))
+ #define XLAT_STR_189 STRINGIFY(PTRACE_SETXTREGS)
+#endif
 #endif
- XLAT_END
 };
+const struct xlat ptrace_cmds[1] = { {
+ .data = ptrace_cmds_xdata,
+ .size = ARRAY_SIZE(ptrace_cmds_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+#  ifdef XLAT_VAL_30
+  | XLAT_VAL_30
+#  endif
+#  ifdef XLAT_VAL_31
+  | XLAT_VAL_31
+#  endif
+#  ifdef XLAT_VAL_32
+  | XLAT_VAL_32
+#  endif
+#  ifdef XLAT_VAL_33
+  | XLAT_VAL_33
+#  endif
+#  ifdef XLAT_VAL_34
+  | XLAT_VAL_34
+#  endif
+#  ifdef XLAT_VAL_35
+  | XLAT_VAL_35
+#  endif
+#  ifdef XLAT_VAL_36
+  | XLAT_VAL_36
+#  endif
+#  ifdef XLAT_VAL_37
+  | XLAT_VAL_37
+#  endif
+#  ifdef XLAT_VAL_38
+  | XLAT_VAL_38
+#  endif
+#  ifdef XLAT_VAL_39
+  | XLAT_VAL_39
+#  endif
+#  ifdef XLAT_VAL_40
+  | XLAT_VAL_40
+#  endif
+#  ifdef XLAT_VAL_41
+  | XLAT_VAL_41
+#  endif
+#  ifdef XLAT_VAL_42
+  | XLAT_VAL_42
+#  endif
+#  ifdef XLAT_VAL_43
+  | XLAT_VAL_43
+#  endif
+#  ifdef XLAT_VAL_44
+  | XLAT_VAL_44
+#  endif
+#  ifdef XLAT_VAL_45
+  | XLAT_VAL_45
+#  endif
+#  ifdef XLAT_VAL_46
+  | XLAT_VAL_46
+#  endif
+#  ifdef XLAT_VAL_47
+  | XLAT_VAL_47
+#  endif
+#  ifdef XLAT_VAL_48
+  | XLAT_VAL_48
+#  endif
+#  ifdef XLAT_VAL_49
+  | XLAT_VAL_49
+#  endif
+#  ifdef XLAT_VAL_50
+  | XLAT_VAL_50
+#  endif
+#  ifdef XLAT_VAL_51
+  | XLAT_VAL_51
+#  endif
+#  ifdef XLAT_VAL_52
+  | XLAT_VAL_52
+#  endif
+#  ifdef XLAT_VAL_53
+  | XLAT_VAL_53
+#  endif
+#  ifdef XLAT_VAL_54
+  | XLAT_VAL_54
+#  endif
+#  ifdef XLAT_VAL_55
+  | XLAT_VAL_55
+#  endif
+#  ifdef XLAT_VAL_56
+  | XLAT_VAL_56
+#  endif
+#  ifdef XLAT_VAL_57
+  | XLAT_VAL_57
+#  endif
+#  ifdef XLAT_VAL_58
+  | XLAT_VAL_58
+#  endif
+#  ifdef XLAT_VAL_59
+  | XLAT_VAL_59
+#  endif
+#  ifdef XLAT_VAL_60
+  | XLAT_VAL_60
+#  endif
+#  ifdef XLAT_VAL_61
+  | XLAT_VAL_61
+#  endif
+#  ifdef XLAT_VAL_62
+  | XLAT_VAL_62
+#  endif
+#  ifdef XLAT_VAL_63
+  | XLAT_VAL_63
+#  endif
+#  ifdef XLAT_VAL_64
+  | XLAT_VAL_64
+#  endif
+#  ifdef XLAT_VAL_65
+  | XLAT_VAL_65
+#  endif
+#  ifdef XLAT_VAL_66
+  | XLAT_VAL_66
+#  endif
+#  ifdef XLAT_VAL_67
+  | XLAT_VAL_67
+#  endif
+#  ifdef XLAT_VAL_68
+  | XLAT_VAL_68
+#  endif
+#  ifdef XLAT_VAL_69
+  | XLAT_VAL_69
+#  endif
+#  ifdef XLAT_VAL_70
+  | XLAT_VAL_70
+#  endif
+#  ifdef XLAT_VAL_71
+  | XLAT_VAL_71
+#  endif
+#  ifdef XLAT_VAL_72
+  | XLAT_VAL_72
+#  endif
+#  ifdef XLAT_VAL_73
+  | XLAT_VAL_73
+#  endif
+#  ifdef XLAT_VAL_74
+  | XLAT_VAL_74
+#  endif
+#  ifdef XLAT_VAL_75
+  | XLAT_VAL_75
+#  endif
+#  ifdef XLAT_VAL_76
+  | XLAT_VAL_76
+#  endif
+#  ifdef XLAT_VAL_77
+  | XLAT_VAL_77
+#  endif
+#  ifdef XLAT_VAL_78
+  | XLAT_VAL_78
+#  endif
+#  ifdef XLAT_VAL_79
+  | XLAT_VAL_79
+#  endif
+#  ifdef XLAT_VAL_80
+  | XLAT_VAL_80
+#  endif
+#  ifdef XLAT_VAL_81
+  | XLAT_VAL_81
+#  endif
+#  ifdef XLAT_VAL_82
+  | XLAT_VAL_82
+#  endif
+#  ifdef XLAT_VAL_83
+  | XLAT_VAL_83
+#  endif
+#  ifdef XLAT_VAL_84
+  | XLAT_VAL_84
+#  endif
+#  ifdef XLAT_VAL_85
+  | XLAT_VAL_85
+#  endif
+#  ifdef XLAT_VAL_86
+  | XLAT_VAL_86
+#  endif
+#  ifdef XLAT_VAL_87
+  | XLAT_VAL_87
+#  endif
+#  ifdef XLAT_VAL_88
+  | XLAT_VAL_88
+#  endif
+#  ifdef XLAT_VAL_89
+  | XLAT_VAL_89
+#  endif
+#  ifdef XLAT_VAL_90
+  | XLAT_VAL_90
+#  endif
+#  ifdef XLAT_VAL_91
+  | XLAT_VAL_91
+#  endif
+#  ifdef XLAT_VAL_92
+  | XLAT_VAL_92
+#  endif
+#  ifdef XLAT_VAL_93
+  | XLAT_VAL_93
+#  endif
+#  ifdef XLAT_VAL_94
+  | XLAT_VAL_94
+#  endif
+#  ifdef XLAT_VAL_95
+  | XLAT_VAL_95
+#  endif
+#  ifdef XLAT_VAL_96
+  | XLAT_VAL_96
+#  endif
+#  ifdef XLAT_VAL_97
+  | XLAT_VAL_97
+#  endif
+#  ifdef XLAT_VAL_98
+  | XLAT_VAL_98
+#  endif
+#  ifdef XLAT_VAL_99
+  | XLAT_VAL_99
+#  endif
+#  ifdef XLAT_VAL_100
+  | XLAT_VAL_100
+#  endif
+#  ifdef XLAT_VAL_101
+  | XLAT_VAL_101
+#  endif
+#  ifdef XLAT_VAL_102
+  | XLAT_VAL_102
+#  endif
+#  ifdef XLAT_VAL_103
+  | XLAT_VAL_103
+#  endif
+#  ifdef XLAT_VAL_104
+  | XLAT_VAL_104
+#  endif
+#  ifdef XLAT_VAL_105
+  | XLAT_VAL_105
+#  endif
+#  ifdef XLAT_VAL_106
+  | XLAT_VAL_106
+#  endif
+#  ifdef XLAT_VAL_107
+  | XLAT_VAL_107
+#  endif
+#  ifdef XLAT_VAL_108
+  | XLAT_VAL_108
+#  endif
+#  ifdef XLAT_VAL_109
+  | XLAT_VAL_109
+#  endif
+#  ifdef XLAT_VAL_110
+  | XLAT_VAL_110
+#  endif
+#  ifdef XLAT_VAL_111
+  | XLAT_VAL_111
+#  endif
+#  ifdef XLAT_VAL_112
+  | XLAT_VAL_112
+#  endif
+#  ifdef XLAT_VAL_113
+  | XLAT_VAL_113
+#  endif
+#  ifdef XLAT_VAL_114
+  | XLAT_VAL_114
+#  endif
+#  ifdef XLAT_VAL_115
+  | XLAT_VAL_115
+#  endif
+#  ifdef XLAT_VAL_116
+  | XLAT_VAL_116
+#  endif
+#  ifdef XLAT_VAL_117
+  | XLAT_VAL_117
+#  endif
+#  ifdef XLAT_VAL_118
+  | XLAT_VAL_118
+#  endif
+#  ifdef XLAT_VAL_119
+  | XLAT_VAL_119
+#  endif
+#  ifdef XLAT_VAL_120
+  | XLAT_VAL_120
+#  endif
+#  ifdef XLAT_VAL_121
+  | XLAT_VAL_121
+#  endif
+#  ifdef XLAT_VAL_122
+  | XLAT_VAL_122
+#  endif
+#  ifdef XLAT_VAL_123
+  | XLAT_VAL_123
+#  endif
+#  ifdef XLAT_VAL_124
+  | XLAT_VAL_124
+#  endif
+#  ifdef XLAT_VAL_125
+  | XLAT_VAL_125
+#  endif
+#  ifdef XLAT_VAL_126
+  | XLAT_VAL_126
+#  endif
+#  ifdef XLAT_VAL_127
+  | XLAT_VAL_127
+#  endif
+#  ifdef XLAT_VAL_128
+  | XLAT_VAL_128
+#  endif
+#  ifdef XLAT_VAL_129
+  | XLAT_VAL_129
+#  endif
+#  ifdef XLAT_VAL_130
+  | XLAT_VAL_130
+#  endif
+#  ifdef XLAT_VAL_131
+  | XLAT_VAL_131
+#  endif
+#  ifdef XLAT_VAL_132
+  | XLAT_VAL_132
+#  endif
+#  ifdef XLAT_VAL_133
+  | XLAT_VAL_133
+#  endif
+#  ifdef XLAT_VAL_134
+  | XLAT_VAL_134
+#  endif
+#  ifdef XLAT_VAL_135
+  | XLAT_VAL_135
+#  endif
+#  ifdef XLAT_VAL_136
+  | XLAT_VAL_136
+#  endif
+#  ifdef XLAT_VAL_137
+  | XLAT_VAL_137
+#  endif
+#  ifdef XLAT_VAL_138
+  | XLAT_VAL_138
+#  endif
+#  ifdef XLAT_VAL_139
+  | XLAT_VAL_139
+#  endif
+#  ifdef XLAT_VAL_140
+  | XLAT_VAL_140
+#  endif
+#  ifdef XLAT_VAL_141
+  | XLAT_VAL_141
+#  endif
+#  ifdef XLAT_VAL_142
+  | XLAT_VAL_142
+#  endif
+#  ifdef XLAT_VAL_143
+  | XLAT_VAL_143
+#  endif
+#  ifdef XLAT_VAL_144
+  | XLAT_VAL_144
+#  endif
+#  ifdef XLAT_VAL_145
+  | XLAT_VAL_145
+#  endif
+#  ifdef XLAT_VAL_146
+  | XLAT_VAL_146
+#  endif
+#  ifdef XLAT_VAL_147
+  | XLAT_VAL_147
+#  endif
+#  ifdef XLAT_VAL_148
+  | XLAT_VAL_148
+#  endif
+#  ifdef XLAT_VAL_149
+  | XLAT_VAL_149
+#  endif
+#  ifdef XLAT_VAL_150
+  | XLAT_VAL_150
+#  endif
+#  ifdef XLAT_VAL_151
+  | XLAT_VAL_151
+#  endif
+#  ifdef XLAT_VAL_152
+  | XLAT_VAL_152
+#  endif
+#  ifdef XLAT_VAL_153
+  | XLAT_VAL_153
+#  endif
+#  ifdef XLAT_VAL_154
+  | XLAT_VAL_154
+#  endif
+#  ifdef XLAT_VAL_155
+  | XLAT_VAL_155
+#  endif
+#  ifdef XLAT_VAL_156
+  | XLAT_VAL_156
+#  endif
+#  ifdef XLAT_VAL_157
+  | XLAT_VAL_157
+#  endif
+#  ifdef XLAT_VAL_158
+  | XLAT_VAL_158
+#  endif
+#  ifdef XLAT_VAL_159
+  | XLAT_VAL_159
+#  endif
+#  ifdef XLAT_VAL_160
+  | XLAT_VAL_160
+#  endif
+#  ifdef XLAT_VAL_161
+  | XLAT_VAL_161
+#  endif
+#  ifdef XLAT_VAL_162
+  | XLAT_VAL_162
+#  endif
+#  ifdef XLAT_VAL_163
+  | XLAT_VAL_163
+#  endif
+#  ifdef XLAT_VAL_164
+  | XLAT_VAL_164
+#  endif
+#  ifdef XLAT_VAL_165
+  | XLAT_VAL_165
+#  endif
+#  ifdef XLAT_VAL_166
+  | XLAT_VAL_166
+#  endif
+#  ifdef XLAT_VAL_167
+  | XLAT_VAL_167
+#  endif
+#  ifdef XLAT_VAL_168
+  | XLAT_VAL_168
+#  endif
+#  ifdef XLAT_VAL_169
+  | XLAT_VAL_169
+#  endif
+#  ifdef XLAT_VAL_170
+  | XLAT_VAL_170
+#  endif
+#  ifdef XLAT_VAL_171
+  | XLAT_VAL_171
+#  endif
+#  ifdef XLAT_VAL_172
+  | XLAT_VAL_172
+#  endif
+#  ifdef XLAT_VAL_173
+  | XLAT_VAL_173
+#  endif
+#  ifdef XLAT_VAL_174
+  | XLAT_VAL_174
+#  endif
+#  ifdef XLAT_VAL_175
+  | XLAT_VAL_175
+#  endif
+#  ifdef XLAT_VAL_176
+  | XLAT_VAL_176
+#  endif
+#  ifdef XLAT_VAL_177
+  | XLAT_VAL_177
+#  endif
+#  ifdef XLAT_VAL_178
+  | XLAT_VAL_178
+#  endif
+#  ifdef XLAT_VAL_179
+  | XLAT_VAL_179
+#  endif
+#  ifdef XLAT_VAL_180
+  | XLAT_VAL_180
+#  endif
+#  ifdef XLAT_VAL_181
+  | XLAT_VAL_181
+#  endif
+#  ifdef XLAT_VAL_182
+  | XLAT_VAL_182
+#  endif
+#  ifdef XLAT_VAL_183
+  | XLAT_VAL_183
+#  endif
+#  ifdef XLAT_VAL_184
+  | XLAT_VAL_184
+#  endif
+#  ifdef XLAT_VAL_185
+  | XLAT_VAL_185
+#  endif
+#  ifdef XLAT_VAL_186
+  | XLAT_VAL_186
+#  endif
+#  ifdef XLAT_VAL_187
+  | XLAT_VAL_187
+#  endif
+#  ifdef XLAT_VAL_188
+  | XLAT_VAL_188
+#  endif
+#  ifdef XLAT_VAL_189
+  | XLAT_VAL_189
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+#  ifdef XLAT_STR_30
+  + sizeof(XLAT_STR_30)
+#  endif
+#  ifdef XLAT_STR_31
+  + sizeof(XLAT_STR_31)
+#  endif
+#  ifdef XLAT_STR_32
+  + sizeof(XLAT_STR_32)
+#  endif
+#  ifdef XLAT_STR_33
+  + sizeof(XLAT_STR_33)
+#  endif
+#  ifdef XLAT_STR_34
+  + sizeof(XLAT_STR_34)
+#  endif
+#  ifdef XLAT_STR_35
+  + sizeof(XLAT_STR_35)
+#  endif
+#  ifdef XLAT_STR_36
+  + sizeof(XLAT_STR_36)
+#  endif
+#  ifdef XLAT_STR_37
+  + sizeof(XLAT_STR_37)
+#  endif
+#  ifdef XLAT_STR_38
+  + sizeof(XLAT_STR_38)
+#  endif
+#  ifdef XLAT_STR_39
+  + sizeof(XLAT_STR_39)
+#  endif
+#  ifdef XLAT_STR_40
+  + sizeof(XLAT_STR_40)
+#  endif
+#  ifdef XLAT_STR_41
+  + sizeof(XLAT_STR_41)
+#  endif
+#  ifdef XLAT_STR_42
+  + sizeof(XLAT_STR_42)
+#  endif
+#  ifdef XLAT_STR_43
+  + sizeof(XLAT_STR_43)
+#  endif
+#  ifdef XLAT_STR_44
+  + sizeof(XLAT_STR_44)
+#  endif
+#  ifdef XLAT_STR_45
+  + sizeof(XLAT_STR_45)
+#  endif
+#  ifdef XLAT_STR_46
+  + sizeof(XLAT_STR_46)
+#  endif
+#  ifdef XLAT_STR_47
+  + sizeof(XLAT_STR_47)
+#  endif
+#  ifdef XLAT_STR_48
+  + sizeof(XLAT_STR_48)
+#  endif
+#  ifdef XLAT_STR_49
+  + sizeof(XLAT_STR_49)
+#  endif
+#  ifdef XLAT_STR_50
+  + sizeof(XLAT_STR_50)
+#  endif
+#  ifdef XLAT_STR_51
+  + sizeof(XLAT_STR_51)
+#  endif
+#  ifdef XLAT_STR_52
+  + sizeof(XLAT_STR_52)
+#  endif
+#  ifdef XLAT_STR_53
+  + sizeof(XLAT_STR_53)
+#  endif
+#  ifdef XLAT_STR_54
+  + sizeof(XLAT_STR_54)
+#  endif
+#  ifdef XLAT_STR_55
+  + sizeof(XLAT_STR_55)
+#  endif
+#  ifdef XLAT_STR_56
+  + sizeof(XLAT_STR_56)
+#  endif
+#  ifdef XLAT_STR_57
+  + sizeof(XLAT_STR_57)
+#  endif
+#  ifdef XLAT_STR_58
+  + sizeof(XLAT_STR_58)
+#  endif
+#  ifdef XLAT_STR_59
+  + sizeof(XLAT_STR_59)
+#  endif
+#  ifdef XLAT_STR_60
+  + sizeof(XLAT_STR_60)
+#  endif
+#  ifdef XLAT_STR_61
+  + sizeof(XLAT_STR_61)
+#  endif
+#  ifdef XLAT_STR_62
+  + sizeof(XLAT_STR_62)
+#  endif
+#  ifdef XLAT_STR_63
+  + sizeof(XLAT_STR_63)
+#  endif
+#  ifdef XLAT_STR_64
+  + sizeof(XLAT_STR_64)
+#  endif
+#  ifdef XLAT_STR_65
+  + sizeof(XLAT_STR_65)
+#  endif
+#  ifdef XLAT_STR_66
+  + sizeof(XLAT_STR_66)
+#  endif
+#  ifdef XLAT_STR_67
+  + sizeof(XLAT_STR_67)
+#  endif
+#  ifdef XLAT_STR_68
+  + sizeof(XLAT_STR_68)
+#  endif
+#  ifdef XLAT_STR_69
+  + sizeof(XLAT_STR_69)
+#  endif
+#  ifdef XLAT_STR_70
+  + sizeof(XLAT_STR_70)
+#  endif
+#  ifdef XLAT_STR_71
+  + sizeof(XLAT_STR_71)
+#  endif
+#  ifdef XLAT_STR_72
+  + sizeof(XLAT_STR_72)
+#  endif
+#  ifdef XLAT_STR_73
+  + sizeof(XLAT_STR_73)
+#  endif
+#  ifdef XLAT_STR_74
+  + sizeof(XLAT_STR_74)
+#  endif
+#  ifdef XLAT_STR_75
+  + sizeof(XLAT_STR_75)
+#  endif
+#  ifdef XLAT_STR_76
+  + sizeof(XLAT_STR_76)
+#  endif
+#  ifdef XLAT_STR_77
+  + sizeof(XLAT_STR_77)
+#  endif
+#  ifdef XLAT_STR_78
+  + sizeof(XLAT_STR_78)
+#  endif
+#  ifdef XLAT_STR_79
+  + sizeof(XLAT_STR_79)
+#  endif
+#  ifdef XLAT_STR_80
+  + sizeof(XLAT_STR_80)
+#  endif
+#  ifdef XLAT_STR_81
+  + sizeof(XLAT_STR_81)
+#  endif
+#  ifdef XLAT_STR_82
+  + sizeof(XLAT_STR_82)
+#  endif
+#  ifdef XLAT_STR_83
+  + sizeof(XLAT_STR_83)
+#  endif
+#  ifdef XLAT_STR_84
+  + sizeof(XLAT_STR_84)
+#  endif
+#  ifdef XLAT_STR_85
+  + sizeof(XLAT_STR_85)
+#  endif
+#  ifdef XLAT_STR_86
+  + sizeof(XLAT_STR_86)
+#  endif
+#  ifdef XLAT_STR_87
+  + sizeof(XLAT_STR_87)
+#  endif
+#  ifdef XLAT_STR_88
+  + sizeof(XLAT_STR_88)
+#  endif
+#  ifdef XLAT_STR_89
+  + sizeof(XLAT_STR_89)
+#  endif
+#  ifdef XLAT_STR_90
+  + sizeof(XLAT_STR_90)
+#  endif
+#  ifdef XLAT_STR_91
+  + sizeof(XLAT_STR_91)
+#  endif
+#  ifdef XLAT_STR_92
+  + sizeof(XLAT_STR_92)
+#  endif
+#  ifdef XLAT_STR_93
+  + sizeof(XLAT_STR_93)
+#  endif
+#  ifdef XLAT_STR_94
+  + sizeof(XLAT_STR_94)
+#  endif
+#  ifdef XLAT_STR_95
+  + sizeof(XLAT_STR_95)
+#  endif
+#  ifdef XLAT_STR_96
+  + sizeof(XLAT_STR_96)
+#  endif
+#  ifdef XLAT_STR_97
+  + sizeof(XLAT_STR_97)
+#  endif
+#  ifdef XLAT_STR_98
+  + sizeof(XLAT_STR_98)
+#  endif
+#  ifdef XLAT_STR_99
+  + sizeof(XLAT_STR_99)
+#  endif
+#  ifdef XLAT_STR_100
+  + sizeof(XLAT_STR_100)
+#  endif
+#  ifdef XLAT_STR_101
+  + sizeof(XLAT_STR_101)
+#  endif
+#  ifdef XLAT_STR_102
+  + sizeof(XLAT_STR_102)
+#  endif
+#  ifdef XLAT_STR_103
+  + sizeof(XLAT_STR_103)
+#  endif
+#  ifdef XLAT_STR_104
+  + sizeof(XLAT_STR_104)
+#  endif
+#  ifdef XLAT_STR_105
+  + sizeof(XLAT_STR_105)
+#  endif
+#  ifdef XLAT_STR_106
+  + sizeof(XLAT_STR_106)
+#  endif
+#  ifdef XLAT_STR_107
+  + sizeof(XLAT_STR_107)
+#  endif
+#  ifdef XLAT_STR_108
+  + sizeof(XLAT_STR_108)
+#  endif
+#  ifdef XLAT_STR_109
+  + sizeof(XLAT_STR_109)
+#  endif
+#  ifdef XLAT_STR_110
+  + sizeof(XLAT_STR_110)
+#  endif
+#  ifdef XLAT_STR_111
+  + sizeof(XLAT_STR_111)
+#  endif
+#  ifdef XLAT_STR_112
+  + sizeof(XLAT_STR_112)
+#  endif
+#  ifdef XLAT_STR_113
+  + sizeof(XLAT_STR_113)
+#  endif
+#  ifdef XLAT_STR_114
+  + sizeof(XLAT_STR_114)
+#  endif
+#  ifdef XLAT_STR_115
+  + sizeof(XLAT_STR_115)
+#  endif
+#  ifdef XLAT_STR_116
+  + sizeof(XLAT_STR_116)
+#  endif
+#  ifdef XLAT_STR_117
+  + sizeof(XLAT_STR_117)
+#  endif
+#  ifdef XLAT_STR_118
+  + sizeof(XLAT_STR_118)
+#  endif
+#  ifdef XLAT_STR_119
+  + sizeof(XLAT_STR_119)
+#  endif
+#  ifdef XLAT_STR_120
+  + sizeof(XLAT_STR_120)
+#  endif
+#  ifdef XLAT_STR_121
+  + sizeof(XLAT_STR_121)
+#  endif
+#  ifdef XLAT_STR_122
+  + sizeof(XLAT_STR_122)
+#  endif
+#  ifdef XLAT_STR_123
+  + sizeof(XLAT_STR_123)
+#  endif
+#  ifdef XLAT_STR_124
+  + sizeof(XLAT_STR_124)
+#  endif
+#  ifdef XLAT_STR_125
+  + sizeof(XLAT_STR_125)
+#  endif
+#  ifdef XLAT_STR_126
+  + sizeof(XLAT_STR_126)
+#  endif
+#  ifdef XLAT_STR_127
+  + sizeof(XLAT_STR_127)
+#  endif
+#  ifdef XLAT_STR_128
+  + sizeof(XLAT_STR_128)
+#  endif
+#  ifdef XLAT_STR_129
+  + sizeof(XLAT_STR_129)
+#  endif
+#  ifdef XLAT_STR_130
+  + sizeof(XLAT_STR_130)
+#  endif
+#  ifdef XLAT_STR_131
+  + sizeof(XLAT_STR_131)
+#  endif
+#  ifdef XLAT_STR_132
+  + sizeof(XLAT_STR_132)
+#  endif
+#  ifdef XLAT_STR_133
+  + sizeof(XLAT_STR_133)
+#  endif
+#  ifdef XLAT_STR_134
+  + sizeof(XLAT_STR_134)
+#  endif
+#  ifdef XLAT_STR_135
+  + sizeof(XLAT_STR_135)
+#  endif
+#  ifdef XLAT_STR_136
+  + sizeof(XLAT_STR_136)
+#  endif
+#  ifdef XLAT_STR_137
+  + sizeof(XLAT_STR_137)
+#  endif
+#  ifdef XLAT_STR_138
+  + sizeof(XLAT_STR_138)
+#  endif
+#  ifdef XLAT_STR_139
+  + sizeof(XLAT_STR_139)
+#  endif
+#  ifdef XLAT_STR_140
+  + sizeof(XLAT_STR_140)
+#  endif
+#  ifdef XLAT_STR_141
+  + sizeof(XLAT_STR_141)
+#  endif
+#  ifdef XLAT_STR_142
+  + sizeof(XLAT_STR_142)
+#  endif
+#  ifdef XLAT_STR_143
+  + sizeof(XLAT_STR_143)
+#  endif
+#  ifdef XLAT_STR_144
+  + sizeof(XLAT_STR_144)
+#  endif
+#  ifdef XLAT_STR_145
+  + sizeof(XLAT_STR_145)
+#  endif
+#  ifdef XLAT_STR_146
+  + sizeof(XLAT_STR_146)
+#  endif
+#  ifdef XLAT_STR_147
+  + sizeof(XLAT_STR_147)
+#  endif
+#  ifdef XLAT_STR_148
+  + sizeof(XLAT_STR_148)
+#  endif
+#  ifdef XLAT_STR_149
+  + sizeof(XLAT_STR_149)
+#  endif
+#  ifdef XLAT_STR_150
+  + sizeof(XLAT_STR_150)
+#  endif
+#  ifdef XLAT_STR_151
+  + sizeof(XLAT_STR_151)
+#  endif
+#  ifdef XLAT_STR_152
+  + sizeof(XLAT_STR_152)
+#  endif
+#  ifdef XLAT_STR_153
+  + sizeof(XLAT_STR_153)
+#  endif
+#  ifdef XLAT_STR_154
+  + sizeof(XLAT_STR_154)
+#  endif
+#  ifdef XLAT_STR_155
+  + sizeof(XLAT_STR_155)
+#  endif
+#  ifdef XLAT_STR_156
+  + sizeof(XLAT_STR_156)
+#  endif
+#  ifdef XLAT_STR_157
+  + sizeof(XLAT_STR_157)
+#  endif
+#  ifdef XLAT_STR_158
+  + sizeof(XLAT_STR_158)
+#  endif
+#  ifdef XLAT_STR_159
+  + sizeof(XLAT_STR_159)
+#  endif
+#  ifdef XLAT_STR_160
+  + sizeof(XLAT_STR_160)
+#  endif
+#  ifdef XLAT_STR_161
+  + sizeof(XLAT_STR_161)
+#  endif
+#  ifdef XLAT_STR_162
+  + sizeof(XLAT_STR_162)
+#  endif
+#  ifdef XLAT_STR_163
+  + sizeof(XLAT_STR_163)
+#  endif
+#  ifdef XLAT_STR_164
+  + sizeof(XLAT_STR_164)
+#  endif
+#  ifdef XLAT_STR_165
+  + sizeof(XLAT_STR_165)
+#  endif
+#  ifdef XLAT_STR_166
+  + sizeof(XLAT_STR_166)
+#  endif
+#  ifdef XLAT_STR_167
+  + sizeof(XLAT_STR_167)
+#  endif
+#  ifdef XLAT_STR_168
+  + sizeof(XLAT_STR_168)
+#  endif
+#  ifdef XLAT_STR_169
+  + sizeof(XLAT_STR_169)
+#  endif
+#  ifdef XLAT_STR_170
+  + sizeof(XLAT_STR_170)
+#  endif
+#  ifdef XLAT_STR_171
+  + sizeof(XLAT_STR_171)
+#  endif
+#  ifdef XLAT_STR_172
+  + sizeof(XLAT_STR_172)
+#  endif
+#  ifdef XLAT_STR_173
+  + sizeof(XLAT_STR_173)
+#  endif
+#  ifdef XLAT_STR_174
+  + sizeof(XLAT_STR_174)
+#  endif
+#  ifdef XLAT_STR_175
+  + sizeof(XLAT_STR_175)
+#  endif
+#  ifdef XLAT_STR_176
+  + sizeof(XLAT_STR_176)
+#  endif
+#  ifdef XLAT_STR_177
+  + sizeof(XLAT_STR_177)
+#  endif
+#  ifdef XLAT_STR_178
+  + sizeof(XLAT_STR_178)
+#  endif
+#  ifdef XLAT_STR_179
+  + sizeof(XLAT_STR_179)
+#  endif
+#  ifdef XLAT_STR_180
+  + sizeof(XLAT_STR_180)
+#  endif
+#  ifdef XLAT_STR_181
+  + sizeof(XLAT_STR_181)
+#  endif
+#  ifdef XLAT_STR_182
+  + sizeof(XLAT_STR_182)
+#  endif
+#  ifdef XLAT_STR_183
+  + sizeof(XLAT_STR_183)
+#  endif
+#  ifdef XLAT_STR_184
+  + sizeof(XLAT_STR_184)
+#  endif
+#  ifdef XLAT_STR_185
+  + sizeof(XLAT_STR_185)
+#  endif
+#  ifdef XLAT_STR_186
+  + sizeof(XLAT_STR_186)
+#  endif
+#  ifdef XLAT_STR_187
+  + sizeof(XLAT_STR_187)
+#  endif
+#  ifdef XLAT_STR_188
+  + sizeof(XLAT_STR_188)
+#  endif
+#  ifdef XLAT_STR_189
+  + sizeof(XLAT_STR_189)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
+#  undef XLAT_STR_30
+#  undef XLAT_VAL_30
+#  undef XLAT_STR_31
+#  undef XLAT_VAL_31
+#  undef XLAT_STR_32
+#  undef XLAT_VAL_32
+#  undef XLAT_STR_33
+#  undef XLAT_VAL_33
+#  undef XLAT_STR_34
+#  undef XLAT_VAL_34
+#  undef XLAT_STR_35
+#  undef XLAT_VAL_35
+#  undef XLAT_STR_36
+#  undef XLAT_VAL_36
+#  undef XLAT_STR_37
+#  undef XLAT_VAL_37
+#  undef XLAT_STR_38
+#  undef XLAT_VAL_38
+#  undef XLAT_STR_39
+#  undef XLAT_VAL_39
+#  undef XLAT_STR_40
+#  undef XLAT_VAL_40
+#  undef XLAT_STR_41
+#  undef XLAT_VAL_41
+#  undef XLAT_STR_42
+#  undef XLAT_VAL_42
+#  undef XLAT_STR_43
+#  undef XLAT_VAL_43
+#  undef XLAT_STR_44
+#  undef XLAT_VAL_44
+#  undef XLAT_STR_45
+#  undef XLAT_VAL_45
+#  undef XLAT_STR_46
+#  undef XLAT_VAL_46
+#  undef XLAT_STR_47
+#  undef XLAT_VAL_47
+#  undef XLAT_STR_48
+#  undef XLAT_VAL_48
+#  undef XLAT_STR_49
+#  undef XLAT_VAL_49
+#  undef XLAT_STR_50
+#  undef XLAT_VAL_50
+#  undef XLAT_STR_51
+#  undef XLAT_VAL_51
+#  undef XLAT_STR_52
+#  undef XLAT_VAL_52
+#  undef XLAT_STR_53
+#  undef XLAT_VAL_53
+#  undef XLAT_STR_54
+#  undef XLAT_VAL_54
+#  undef XLAT_STR_55
+#  undef XLAT_VAL_55
+#  undef XLAT_STR_56
+#  undef XLAT_VAL_56
+#  undef XLAT_STR_57
+#  undef XLAT_VAL_57
+#  undef XLAT_STR_58
+#  undef XLAT_VAL_58
+#  undef XLAT_STR_59
+#  undef XLAT_VAL_59
+#  undef XLAT_STR_60
+#  undef XLAT_VAL_60
+#  undef XLAT_STR_61
+#  undef XLAT_VAL_61
+#  undef XLAT_STR_62
+#  undef XLAT_VAL_62
+#  undef XLAT_STR_63
+#  undef XLAT_VAL_63
+#  undef XLAT_STR_64
+#  undef XLAT_VAL_64
+#  undef XLAT_STR_65
+#  undef XLAT_VAL_65
+#  undef XLAT_STR_66
+#  undef XLAT_VAL_66
+#  undef XLAT_STR_67
+#  undef XLAT_VAL_67
+#  undef XLAT_STR_68
+#  undef XLAT_VAL_68
+#  undef XLAT_STR_69
+#  undef XLAT_VAL_69
+#  undef XLAT_STR_70
+#  undef XLAT_VAL_70
+#  undef XLAT_STR_71
+#  undef XLAT_VAL_71
+#  undef XLAT_STR_72
+#  undef XLAT_VAL_72
+#  undef XLAT_STR_73
+#  undef XLAT_VAL_73
+#  undef XLAT_STR_74
+#  undef XLAT_VAL_74
+#  undef XLAT_STR_75
+#  undef XLAT_VAL_75
+#  undef XLAT_STR_76
+#  undef XLAT_VAL_76
+#  undef XLAT_STR_77
+#  undef XLAT_VAL_77
+#  undef XLAT_STR_78
+#  undef XLAT_VAL_78
+#  undef XLAT_STR_79
+#  undef XLAT_VAL_79
+#  undef XLAT_STR_80
+#  undef XLAT_VAL_80
+#  undef XLAT_STR_81
+#  undef XLAT_VAL_81
+#  undef XLAT_STR_82
+#  undef XLAT_VAL_82
+#  undef XLAT_STR_83
+#  undef XLAT_VAL_83
+#  undef XLAT_STR_84
+#  undef XLAT_VAL_84
+#  undef XLAT_STR_85
+#  undef XLAT_VAL_85
+#  undef XLAT_STR_86
+#  undef XLAT_VAL_86
+#  undef XLAT_STR_87
+#  undef XLAT_VAL_87
+#  undef XLAT_STR_88
+#  undef XLAT_VAL_88
+#  undef XLAT_STR_89
+#  undef XLAT_VAL_89
+#  undef XLAT_STR_90
+#  undef XLAT_VAL_90
+#  undef XLAT_STR_91
+#  undef XLAT_VAL_91
+#  undef XLAT_STR_92
+#  undef XLAT_VAL_92
+#  undef XLAT_STR_93
+#  undef XLAT_VAL_93
+#  undef XLAT_STR_94
+#  undef XLAT_VAL_94
+#  undef XLAT_STR_95
+#  undef XLAT_VAL_95
+#  undef XLAT_STR_96
+#  undef XLAT_VAL_96
+#  undef XLAT_STR_97
+#  undef XLAT_VAL_97
+#  undef XLAT_STR_98
+#  undef XLAT_VAL_98
+#  undef XLAT_STR_99
+#  undef XLAT_VAL_99
+#  undef XLAT_STR_100
+#  undef XLAT_VAL_100
+#  undef XLAT_STR_101
+#  undef XLAT_VAL_101
+#  undef XLAT_STR_102
+#  undef XLAT_VAL_102
+#  undef XLAT_STR_103
+#  undef XLAT_VAL_103
+#  undef XLAT_STR_104
+#  undef XLAT_VAL_104
+#  undef XLAT_STR_105
+#  undef XLAT_VAL_105
+#  undef XLAT_STR_106
+#  undef XLAT_VAL_106
+#  undef XLAT_STR_107
+#  undef XLAT_VAL_107
+#  undef XLAT_STR_108
+#  undef XLAT_VAL_108
+#  undef XLAT_STR_109
+#  undef XLAT_VAL_109
+#  undef XLAT_STR_110
+#  undef XLAT_VAL_110
+#  undef XLAT_STR_111
+#  undef XLAT_VAL_111
+#  undef XLAT_STR_112
+#  undef XLAT_VAL_112
+#  undef XLAT_STR_113
+#  undef XLAT_VAL_113
+#  undef XLAT_STR_114
+#  undef XLAT_VAL_114
+#  undef XLAT_STR_115
+#  undef XLAT_VAL_115
+#  undef XLAT_STR_116
+#  undef XLAT_VAL_116
+#  undef XLAT_STR_117
+#  undef XLAT_VAL_117
+#  undef XLAT_STR_118
+#  undef XLAT_VAL_118
+#  undef XLAT_STR_119
+#  undef XLAT_VAL_119
+#  undef XLAT_STR_120
+#  undef XLAT_VAL_120
+#  undef XLAT_STR_121
+#  undef XLAT_VAL_121
+#  undef XLAT_STR_122
+#  undef XLAT_VAL_122
+#  undef XLAT_STR_123
+#  undef XLAT_VAL_123
+#  undef XLAT_STR_124
+#  undef XLAT_VAL_124
+#  undef XLAT_STR_125
+#  undef XLAT_VAL_125
+#  undef XLAT_STR_126
+#  undef XLAT_VAL_126
+#  undef XLAT_STR_127
+#  undef XLAT_VAL_127
+#  undef XLAT_STR_128
+#  undef XLAT_VAL_128
+#  undef XLAT_STR_129
+#  undef XLAT_VAL_129
+#  undef XLAT_STR_130
+#  undef XLAT_VAL_130
+#  undef XLAT_STR_131
+#  undef XLAT_VAL_131
+#  undef XLAT_STR_132
+#  undef XLAT_VAL_132
+#  undef XLAT_STR_133
+#  undef XLAT_VAL_133
+#  undef XLAT_STR_134
+#  undef XLAT_VAL_134
+#  undef XLAT_STR_135
+#  undef XLAT_VAL_135
+#  undef XLAT_STR_136
+#  undef XLAT_VAL_136
+#  undef XLAT_STR_137
+#  undef XLAT_VAL_137
+#  undef XLAT_STR_138
+#  undef XLAT_VAL_138
+#  undef XLAT_STR_139
+#  undef XLAT_VAL_139
+#  undef XLAT_STR_140
+#  undef XLAT_VAL_140
+#  undef XLAT_STR_141
+#  undef XLAT_VAL_141
+#  undef XLAT_STR_142
+#  undef XLAT_VAL_142
+#  undef XLAT_STR_143
+#  undef XLAT_VAL_143
+#  undef XLAT_STR_144
+#  undef XLAT_VAL_144
+#  undef XLAT_STR_145
+#  undef XLAT_VAL_145
+#  undef XLAT_STR_146
+#  undef XLAT_VAL_146
+#  undef XLAT_STR_147
+#  undef XLAT_VAL_147
+#  undef XLAT_STR_148
+#  undef XLAT_VAL_148
+#  undef XLAT_STR_149
+#  undef XLAT_VAL_149
+#  undef XLAT_STR_150
+#  undef XLAT_VAL_150
+#  undef XLAT_STR_151
+#  undef XLAT_VAL_151
+#  undef XLAT_STR_152
+#  undef XLAT_VAL_152
+#  undef XLAT_STR_153
+#  undef XLAT_VAL_153
+#  undef XLAT_STR_154
+#  undef XLAT_VAL_154
+#  undef XLAT_STR_155
+#  undef XLAT_VAL_155
+#  undef XLAT_STR_156
+#  undef XLAT_VAL_156
+#  undef XLAT_STR_157
+#  undef XLAT_VAL_157
+#  undef XLAT_STR_158
+#  undef XLAT_VAL_158
+#  undef XLAT_STR_159
+#  undef XLAT_VAL_159
+#  undef XLAT_STR_160
+#  undef XLAT_VAL_160
+#  undef XLAT_STR_161
+#  undef XLAT_VAL_161
+#  undef XLAT_STR_162
+#  undef XLAT_VAL_162
+#  undef XLAT_STR_163
+#  undef XLAT_VAL_163
+#  undef XLAT_STR_164
+#  undef XLAT_VAL_164
+#  undef XLAT_STR_165
+#  undef XLAT_VAL_165
+#  undef XLAT_STR_166
+#  undef XLAT_VAL_166
+#  undef XLAT_STR_167
+#  undef XLAT_VAL_167
+#  undef XLAT_STR_168
+#  undef XLAT_VAL_168
+#  undef XLAT_STR_169
+#  undef XLAT_VAL_169
+#  undef XLAT_STR_170
+#  undef XLAT_VAL_170
+#  undef XLAT_STR_171
+#  undef XLAT_VAL_171
+#  undef XLAT_STR_172
+#  undef XLAT_VAL_172
+#  undef XLAT_STR_173
+#  undef XLAT_VAL_173
+#  undef XLAT_STR_174
+#  undef XLAT_VAL_174
+#  undef XLAT_STR_175
+#  undef XLAT_VAL_175
+#  undef XLAT_STR_176
+#  undef XLAT_VAL_176
+#  undef XLAT_STR_177
+#  undef XLAT_VAL_177
+#  undef XLAT_STR_178
+#  undef XLAT_VAL_178
+#  undef XLAT_STR_179
+#  undef XLAT_VAL_179
+#  undef XLAT_STR_180
+#  undef XLAT_VAL_180
+#  undef XLAT_STR_181
+#  undef XLAT_VAL_181
+#  undef XLAT_STR_182
+#  undef XLAT_VAL_182
+#  undef XLAT_STR_183
+#  undef XLAT_VAL_183
+#  undef XLAT_STR_184
+#  undef XLAT_VAL_184
+#  undef XLAT_STR_185
+#  undef XLAT_VAL_185
+#  undef XLAT_STR_186
+#  undef XLAT_VAL_186
+#  undef XLAT_STR_187
+#  undef XLAT_VAL_187
+#  undef XLAT_STR_188
+#  undef XLAT_VAL_188
+#  undef XLAT_STR_189
+#  undef XLAT_VAL_189
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 3840f3467c55f2dc10f05138f1e335d1da9894ed..48ae959b224e418b839f98028dab39c0db7bf192 100644 (file)
-PTRACE_TRACEME
-PTRACE_PEEKTEXT
-PTRACE_PEEKDATA
-PTRACE_PEEKUSER
-PTRACE_POKETEXT
-PTRACE_POKEDATA
-PTRACE_POKEUSER
-PTRACE_CONT
-PTRACE_KILL
-PTRACE_SINGLESTEP
-PTRACE_ATTACH
+/* Generated by maint/gen_xlat_defs.sh -f '#x' -p 'PTRACE_' -c 'linux/ptrace.h' -a 'asm/ptrace*.h' */
+PTRACE_TRACEME         0
+PTRACE_PEEKTEXT                0x1
+PTRACE_PEEKDATA                0x2
+PTRACE_PEEKUSER                0x3 /* PTRACE_PEEKUSR in kernel headers */
+PTRACE_POKETEXT                0x4
+PTRACE_POKEDATA                0x5
+PTRACE_POKEUSER                0x6 /* PTRACE_POKEUSR in kernel  headers*/
+PTRACE_CONT            0x7
+PTRACE_KILL            0x8
+PTRACE_SINGLESTEP      0x9
+PTRACE_ATTACH          0x10
+
+/*
+ * On sparc, there is PTRACE_SPARC_DETACH (= 11) that is used instead
+ * of PTRACE_DETACH, as PTRACE_DETACH's number (0x11) is occupied
+ * by PTRACE_WRITEDATA.
+ */
+#if !defined __sparc__
+PTRACE_DETACH          0x11
+#else
 PTRACE_DETACH
-PTRACE_SYSCALL
+#endif
+
+PTRACE_SYSCALL         0x18
+
+PTRACE_SETOPTIONS              0x4200
+PTRACE_GETEVENTMSG             0x4201
+PTRACE_GETSIGINFO              0x4202
+PTRACE_SETSIGINFO              0x4203
+PTRACE_GETREGSET               0x4204
+PTRACE_SETREGSET               0x4205
+PTRACE_SEIZE                   0x4206
+PTRACE_INTERRUPT               0x4207
+PTRACE_LISTEN                  0x4208
+PTRACE_PEEKSIGINFO             0x4209
+PTRACE_GETSIGMASK              0x420a
+PTRACE_SETSIGMASK              0x420b
+PTRACE_SECCOMP_GET_FILTER      0x420c
+PTRACE_SECCOMP_GET_METADATA    0x420d
+PTRACE_GET_SYSCALL_INFO                0x420e
+
+/* arch-specific */
+#if defined __arm__ || defined __m68k__ || defined __mips__ || defined __powerpc__ || defined __sh__ || defined __sparc__ || defined __x86_64__ || defined __i386__ || defined __xtensa__
+PTRACE_GETREGS         0xc
+#elif defined __hppa__ || defined __ia64__
+PTRACE_GETREGS         0x12
+#else
 PTRACE_GETREGS
+#endif
+
+#if defined __arm__ || defined __m68k__ || defined __mips__ || defined __powerpc__ || defined __sh__ || defined __sparc__ || defined __x86_64__ || defined __i386__ || defined __xtensa__
+PTRACE_SETREGS         0xd
+#elif defined __hppa__ || defined __ia64__
+PTRACE_SETREGS         0x13
+#else
 PTRACE_SETREGS
+#endif
+
+#if defined __arm__ || defined __hppa__ || defined __m68k__ || defined __mips__ || defined __powerpc__ || defined __sh__ || defined __sparc__ || defined __x86_64__ || defined __i386__
+PTRACE_GETFPREGS       0xe
+#else
 PTRACE_GETFPREGS
+#endif
+
+#if defined __arm__ || defined __hppa__ || defined __m68k__ || defined __mips__ || defined __powerpc__ || defined __sh__ || defined __sparc__ || defined __x86_64__ || defined __i386__
+PTRACE_SETFPREGS       0xf
+#else
 PTRACE_SETFPREGS
+#endif
+
+#if defined __mips__ || defined __x86_64__ || defined __i386__
+PTRACE_GETFPXREGS      0x12
+#else
 PTRACE_GETFPXREGS
+#endif
+
+#if defined __mips__ || defined __x86_64__ || defined __i386__
+PTRACE_SETFPXREGS      0x13
+#else
 PTRACE_SETFPXREGS
-PTRACE_GETVRREGS
-PTRACE_SETVRREGS
-PTRACE_SETOPTIONS
-PTRACE_GETEVENTMSG
-PTRACE_GETSIGINFO
-PTRACE_SETSIGINFO
-PTRACE_GETREGSET
-PTRACE_SETREGSET
-PTRACE_SET_SYSCALL
-PTRACE_SEIZE
-PTRACE_INTERRUPT
-PTRACE_LISTEN
-PTRACE_PEEKSIGINFO
-PTRACE_GETSIGMASK
-PTRACE_SETSIGMASK
-PTRACE_SECCOMP_GET_FILTER
-PTRACE_SECCOMP_GET_METADATA
-PTRACE_GET_SYSCALL_INFO
-/* arch-specific */
+#endif
+
+#if defined __xtensa__
+PTRACE_GETHBPREGS      0x14
+#elif defined __arm__
+PTRACE_GETHBPREGS      0x1d
+#else
+PTRACE_GETHBPREGS
+#endif
+
+#if defined __xtensa__
+PTRACE_SETHBPREGS      0x15
+#elif defined __arm__
+PTRACE_SETHBPREGS      0x1e
+#else
+PTRACE_SETHBPREGS
+#endif
+
+#if defined __arm__ || defined __ia64__ || defined __mips__ || defined __s390__ || defined __x86_64__ || defined __i386__
+PTRACE_OLDSETOPTIONS   0x15
+#else
+PTRACE_OLDSETOPTIONS
+#endif
+
+#if defined __powerpc__ || defined __sparc__
+PTRACE_GETREGS64       0x16
+#else
+PTRACE_GETREGS64
+#endif
+#if defined __powerpc__ || defined __sparc__
+PTRACE_SETREGS64       0x17
+#else
+PTRACE_SETREGS64
+#endif
+
+#if defined __arm__ || defined __unicore32__
+PTRACE_GET_THREAD_AREA 0x16
+#elif defined __arc__ || defined __m68k__ || defined __mips__ || defined __x86_64__ || defined __i386__
+PTRACE_GET_THREAD_AREA 0x19
+#else
 PTRACE_GET_THREAD_AREA
+#endif
+
+#if defined __mips__ || defined __x86_64__ || defined __i386__
+PTRACE_SET_THREAD_AREA 0x1a
+#else
 PTRACE_SET_THREAD_AREA
-PTRACE_OLDSETOPTIONS
+#endif
+
+#if defined __arm__ || defined __c6x__ || defined __sh__
+PTRACE_GETFDPIC        0x1f
+#else
 PTRACE_GETFDPIC
+#endif
+
+#if defined __powerpc__
+PTRACE_SYSEMU  0x1d
+#elif defined __arm64__ || defined __aarch64__ || defined __x86_64__ || defined __i386__
+PTRACE_SYSEMU  0x1f
+#else
+PTRACE_SYSEMU
+#endif
+
+#if defined __powerpc__
+PTRACE_SYSEMU_SINGLESTEP       0x1e
+#elif defined __arm64__ || defined __aarch64__ || defined __x86_64__ || defined __i386__
+PTRACE_SYSEMU_SINGLESTEP       0x20
+#else
+PTRACE_SYSEMU_SINGLESTEP
+#endif
+
+#if defined __hppa__ || defined __ia64__ || defined __s390__
+PTRACE_SINGLEBLOCK     0xc
+#elif defined __m68k__ || defined __x86_64__ || defined __i386__
+PTRACE_SINGLEBLOCK     0x21
+#elif defined __powerpc__
+PTRACE_SINGLEBLOCK     0x100
+#else
 PTRACE_SINGLEBLOCK
+#endif
+
 /* arm */
+#if defined __arm__
+PTRACE_GETWMMXREGS     0x12
+#else
 PTRACE_GETWMMXREGS
+#endif
+#if defined __arm__
+PTRACE_SETWMMXREGS     0x13
+#else
 PTRACE_SETWMMXREGS
+#endif
+#if defined __arm__
+PTRACE_SET_SYSCALL     0x17
+#else
+PTRACE_SET_SYSCALL
+#endif
+#if defined __arm__
+PTRACE_GETCRUNCHREGS   0x19
+#else
 PTRACE_GETCRUNCHREGS
+#endif
+#if defined __arm__
+PTRACE_SETCRUNCHREGS   0x1a
+#else
 PTRACE_SETCRUNCHREGS
+#endif
+#if defined __arm__
+PTRACE_GETVFPREGS      0x1b
+#else
 PTRACE_GETVFPREGS
+#endif
+#if defined __arm__
+PTRACE_SETVFPREGS      0x1c
+#else
 PTRACE_SETVFPREGS
-PTRACE_GETHBPREGS
-PTRACE_SETHBPREGS
+#endif
+
 /* ia64 */
+#if defined __ia64__
+PTRACE_OLD_GETSIGINFO  0xd
+#else
 PTRACE_OLD_GETSIGINFO
+#endif
+#if defined __ia64__
+PTRACE_OLD_SETSIGINFO  0xe
+#else
 PTRACE_OLD_SETSIGINFO
+#endif
+
 /* mips */
+#if defined __mips__
+PTRACE_PEEKTEXT_3264   0xc0
+#else
 PTRACE_PEEKTEXT_3264
+#endif
+#if defined __mips__
+PTRACE_PEEKDATA_3264   0xc1
+#else
 PTRACE_PEEKDATA_3264
+#endif
+#if defined __mips__
+PTRACE_POKETEXT_3264   0xc2
+#else
 PTRACE_POKETEXT_3264
+#endif
+#if defined __mips__
+PTRACE_POKEDATA_3264   0xc3
+#else
 PTRACE_POKEDATA_3264
+#endif
+#if defined __mips__
+PTRACE_GET_THREAD_AREA_3264    0xc4
+#else
 PTRACE_GET_THREAD_AREA_3264
+#endif
+#if defined __mips__
+PTRACE_GET_WATCH_REGS  0xd0
+#else
 PTRACE_GET_WATCH_REGS
+#endif
+#if defined __mips__
+PTRACE_SET_WATCH_REGS  0xd1
+#else
 PTRACE_SET_WATCH_REGS
+#endif
+
 /* powerpc */
+#if defined __powerpc__
+PTRACE_GETVRREGS       0x12
+#else
+PTRACE_GETVRREGS
+#endif
+#if defined __powerpc__
+PTRACE_SETVRREGS       0x13
+#else
+PTRACE_SETVRREGS
+#endif
+#if defined __powerpc__
+PTRACE_GETEVRREGS      0x14
+#else
 PTRACE_GETEVRREGS
+#endif
+#if defined __powerpc__
+PTRACE_SETEVRREGS      0x15
+#else
 PTRACE_SETEVRREGS
+#endif
+#if defined __powerpc__
+PTRACE_GETVSRREGS      0x1b
+#else
 PTRACE_GETVSRREGS
+#endif
+#if defined __powerpc__
+PTRACE_SETVSRREGS      0x1c
+#else
 PTRACE_SETVSRREGS
+#endif
+#if defined __powerpc__
+PTRACE_GET_DEBUGREG    0x19
+#else
 PTRACE_GET_DEBUGREG
+#endif
+#if defined __powerpc__
+PTRACE_SET_DEBUGREG    0x1a
+#else
 PTRACE_SET_DEBUGREG
-PPC_PTRACE_GETHWDBGINFO
-PPC_PTRACE_SETHWDEBUG
+#endif
+#if defined __powerpc__
+PPC_PTRACE_DELHWDEBUG  0x87
+#else
 PPC_PTRACE_DELHWDEBUG
+#endif
+#if defined __powerpc__
+PPC_PTRACE_SETHWDEBUG  0x88
+#else
+PPC_PTRACE_SETHWDEBUG
+#endif
+#if defined __powerpc__
+PPC_PTRACE_GETHWDBGINFO        0x89
+#else
+PPC_PTRACE_GETHWDBGINFO
+#endif
+#if defined __powerpc__
+PPC_PTRACE_POKEUSR_3264        0x90
+#else
+PPC_PTRACE_POKEUSR_3264
+#endif
+#if defined __powerpc__
+PPC_PTRACE_PEEKUSR_3264        0x91
+#else
+PPC_PTRACE_PEEKUSR_3264
+#endif
+#if defined __powerpc__
+PPC_PTRACE_POKEDATA_3264       0x92
+#else
+PPC_PTRACE_POKEDATA_3264
+#endif
+#if defined __powerpc__
+PPC_PTRACE_POKETEXT_3264       0x93
+#else
+PPC_PTRACE_POKETEXT_3264
+#endif
+#if defined __powerpc__
+PPC_PTRACE_PEEKDATA_3264       0x94
+#else
+PPC_PTRACE_PEEKDATA_3264
+#endif
+#if defined __powerpc__
+PPC_PTRACE_PEEKTEXT_3264       0x95
+#else
+PPC_PTRACE_PEEKTEXT_3264
+#endif
+
 /* s390 */
+#if defined __s390__
+PTRACE_PEEKUSR_AREA    0x5000
+#else
 PTRACE_PEEKUSR_AREA
+#endif
+#if defined __s390__
+PTRACE_POKEUSR_AREA    0x5001
+#else
 PTRACE_POKEUSR_AREA
+#endif
+#if defined __s390__
+PTRACE_PEEKTEXT_AREA   0x5002
+#else
 PTRACE_PEEKTEXT_AREA
+#endif
+#if defined __s390__
+PTRACE_PEEKDATA_AREA   0x5003
+#else
 PTRACE_PEEKDATA_AREA
+#endif
+#if defined __s390__
+PTRACE_POKETEXT_AREA   0x5004
+#else
 PTRACE_POKETEXT_AREA
+#endif
+#if defined __s390__
+PTRACE_POKEDATA_AREA   0x5005
+#else
 PTRACE_POKEDATA_AREA
+#endif
+#if defined __s390__
+PTRACE_GET_LAST_BREAK  0x5006
+#else
 PTRACE_GET_LAST_BREAK
+#endif
+#if defined __s390__
+PTRACE_PEEK_SYSTEM_CALL        0x5007
+#else
 PTRACE_PEEK_SYSTEM_CALL
+#endif
+#if defined __s390__
+PTRACE_POKE_SYSTEM_CALL        0x5008
+#else
 PTRACE_POKE_SYSTEM_CALL
+#endif
+#if defined __s390__
+PTRACE_ENABLE_TE       0x5009
+#else
 PTRACE_ENABLE_TE
+#endif
+#if defined __s390__
+PTRACE_DISABLE_TE      0x5010
+#else
 PTRACE_DISABLE_TE
+#endif
+#if defined __s390__
+PTRACE_TE_ABORT_RAND   0x5011
+#else
 PTRACE_TE_ABORT_RAND
+#endif
+
 /* sh */
+#if defined __sh__
+PTRACE_GETDSPREGS      0x37
+#else
 PTRACE_GETDSPREGS
+#endif
+#if defined __sh__
+PTRACE_SETDSPREGS      0x38
+#else
 PTRACE_SETDSPREGS
+#endif
+
 /* sparc */
+#if defined __sparc__
+PTRACE_SPARC_DETACH    0xb
+#else
 PTRACE_SPARC_DETACH
+#endif
+#if defined __sparc__
+PTRACE_READDATA        0x10
+#else
 PTRACE_READDATA
+#endif
+#if defined __sparc__
+PTRACE_WRITEDATA       0x11
+#else
 PTRACE_WRITEDATA
+#endif
+#if defined __sparc__
+PTRACE_READTEXT        0x12
+#else
 PTRACE_READTEXT
+#endif
+#if defined __sparc__
+PTRACE_WRITETEXT       0x13
+#else
 PTRACE_WRITETEXT
+#endif
+#if defined __sparc__
+PTRACE_GETFPAREGS      0x14
+#else
 PTRACE_GETFPAREGS
+#endif
+#if defined __sparc__
+PTRACE_SETFPAREGS      0x15
+#else
 PTRACE_SETFPAREGS
-PTRACE_GETREGS64
-PTRACE_SETREGS64
+#endif
+#if defined __sparc__
+PTRACE_GETFPREGS64     0x19
+#else
 PTRACE_GETFPREGS64
+#endif
+#if defined __sparc__
+PTRACE_SETFPREGS64     0x1a
+#else
 PTRACE_SETFPREGS64
+#endif
+
 /* x86 */
+#if defined __x86_64__ || defined __i386__
+PTRACE_ARCH_PRCTL      0x1e
+#else
 PTRACE_ARCH_PRCTL
-PTRACE_SYSEMU
-PTRACE_SYSEMU_SINGLESTEP
+#endif
+
 /* xtensa */
+#if defined __xtensa__
+PTRACE_GETXTREGS       0x12
+#else
 PTRACE_GETXTREGS
+#endif
+#if defined __xtensa__
+PTRACE_SETXTREGS       0x13
+#else
 PTRACE_SETXTREGS
+#endif
index d0085bc2f083ea3c4efc119c3297fb855069addd..ec42ecbadca6baf519ae59f3fcbb87cbbd027278 100644 (file)
 
 # else
 
-static
-const struct xlat ptrace_events[] = {
+static const struct xlat_data ptrace_events_xdata[] = {
 #if defined(PTRACE_EVENT_FORK) || (defined(HAVE_DECL_PTRACE_EVENT_FORK) && HAVE_DECL_PTRACE_EVENT_FORK)
   XLAT(PTRACE_EVENT_FORK),
+ #define XLAT_VAL_0 ((unsigned) (PTRACE_EVENT_FORK))
+ #define XLAT_STR_0 STRINGIFY(PTRACE_EVENT_FORK)
 #endif
 #if defined(PTRACE_EVENT_VFORK) || (defined(HAVE_DECL_PTRACE_EVENT_VFORK) && HAVE_DECL_PTRACE_EVENT_VFORK)
   XLAT(PTRACE_EVENT_VFORK),
+ #define XLAT_VAL_1 ((unsigned) (PTRACE_EVENT_VFORK))
+ #define XLAT_STR_1 STRINGIFY(PTRACE_EVENT_VFORK)
 #endif
 #if defined(PTRACE_EVENT_CLONE) || (defined(HAVE_DECL_PTRACE_EVENT_CLONE) && HAVE_DECL_PTRACE_EVENT_CLONE)
   XLAT(PTRACE_EVENT_CLONE),
+ #define XLAT_VAL_2 ((unsigned) (PTRACE_EVENT_CLONE))
+ #define XLAT_STR_2 STRINGIFY(PTRACE_EVENT_CLONE)
 #endif
 #if defined(PTRACE_EVENT_EXEC) || (defined(HAVE_DECL_PTRACE_EVENT_EXEC) && HAVE_DECL_PTRACE_EVENT_EXEC)
   XLAT(PTRACE_EVENT_EXEC),
+ #define XLAT_VAL_3 ((unsigned) (PTRACE_EVENT_EXEC))
+ #define XLAT_STR_3 STRINGIFY(PTRACE_EVENT_EXEC)
 #endif
 #if defined(PTRACE_EVENT_VFORK_DONE) || (defined(HAVE_DECL_PTRACE_EVENT_VFORK_DONE) && HAVE_DECL_PTRACE_EVENT_VFORK_DONE)
   XLAT(PTRACE_EVENT_VFORK_DONE),
+ #define XLAT_VAL_4 ((unsigned) (PTRACE_EVENT_VFORK_DONE))
+ #define XLAT_STR_4 STRINGIFY(PTRACE_EVENT_VFORK_DONE)
 #endif
 #if defined(PTRACE_EVENT_EXIT) || (defined(HAVE_DECL_PTRACE_EVENT_EXIT) && HAVE_DECL_PTRACE_EVENT_EXIT)
   XLAT(PTRACE_EVENT_EXIT),
+ #define XLAT_VAL_5 ((unsigned) (PTRACE_EVENT_EXIT))
+ #define XLAT_STR_5 STRINGIFY(PTRACE_EVENT_EXIT)
 #endif
 #if defined(PTRACE_EVENT_SECCOMP) || (defined(HAVE_DECL_PTRACE_EVENT_SECCOMP) && HAVE_DECL_PTRACE_EVENT_SECCOMP)
   XLAT(PTRACE_EVENT_SECCOMP),
+ #define XLAT_VAL_6 ((unsigned) (PTRACE_EVENT_SECCOMP))
+ #define XLAT_STR_6 STRINGIFY(PTRACE_EVENT_SECCOMP)
 #endif
 #if defined(PTRACE_EVENT_STOP) || (defined(HAVE_DECL_PTRACE_EVENT_STOP) && HAVE_DECL_PTRACE_EVENT_STOP)
   XLAT(PTRACE_EVENT_STOP),
+ #define XLAT_VAL_7 ((unsigned) (PTRACE_EVENT_STOP))
+ #define XLAT_STR_7 STRINGIFY(PTRACE_EVENT_STOP)
 #endif
 
 #if defined(PTRACE_EVENT_MIGRATE) || (defined(HAVE_DECL_PTRACE_EVENT_MIGRATE) && HAVE_DECL_PTRACE_EVENT_MIGRATE)
   XLAT(PTRACE_EVENT_MIGRATE),
+ #define XLAT_VAL_8 ((unsigned) (PTRACE_EVENT_MIGRATE))
+ #define XLAT_STR_8 STRINGIFY(PTRACE_EVENT_MIGRATE)
 #endif
- XLAT_END
 };
+static
+const struct xlat ptrace_events[1] = { {
+ .data = ptrace_events_xdata,
+ .size = ARRAY_SIZE(ptrace_events_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index c2a946cb105b02b756c9dd83c486c6dc1f88b554..6c480abf5a96623438e5eca25e189bdec28a68ba 100644 (file)
@@ -19,12 +19,30 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat ptrace_peeksiginfo_flags[] = {
+static const struct xlat_data ptrace_peeksiginfo_flags_xdata[] = {
  XLAT(PTRACE_PEEKSIGINFO_SHARED),
- XLAT_END
+ #define XLAT_VAL_0 ((unsigned) (PTRACE_PEEKSIGINFO_SHARED))
+ #define XLAT_STR_0 STRINGIFY(PTRACE_PEEKSIGINFO_SHARED)
 };
-
+static
+const struct xlat ptrace_peeksiginfo_flags[1] = { {
+ .data = ptrace_peeksiginfo_flags_xdata,
+ .size = ARRAY_SIZE(ptrace_peeksiginfo_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 622354c4bb2878e8e303c6685e4a5e0debe48497..74729532303aff6a25a1a37e93efd671eebfe2cd 100644 (file)
 
 # else
 
-static
-const struct xlat ptrace_setoptions_flags[] = {
+static const struct xlat_data ptrace_setoptions_flags_xdata[] = {
 #if defined(PTRACE_O_TRACESYSGOOD) || (defined(HAVE_DECL_PTRACE_O_TRACESYSGOOD) && HAVE_DECL_PTRACE_O_TRACESYSGOOD)
   XLAT(PTRACE_O_TRACESYSGOOD),
+ #define XLAT_VAL_0 ((unsigned) (PTRACE_O_TRACESYSGOOD))
+ #define XLAT_STR_0 STRINGIFY(PTRACE_O_TRACESYSGOOD)
 #endif
 #if defined(PTRACE_O_TRACEFORK) || (defined(HAVE_DECL_PTRACE_O_TRACEFORK) && HAVE_DECL_PTRACE_O_TRACEFORK)
   XLAT(PTRACE_O_TRACEFORK),
+ #define XLAT_VAL_1 ((unsigned) (PTRACE_O_TRACEFORK))
+ #define XLAT_STR_1 STRINGIFY(PTRACE_O_TRACEFORK)
 #endif
 #if defined(PTRACE_O_TRACEVFORK) || (defined(HAVE_DECL_PTRACE_O_TRACEVFORK) && HAVE_DECL_PTRACE_O_TRACEVFORK)
   XLAT(PTRACE_O_TRACEVFORK),
+ #define XLAT_VAL_2 ((unsigned) (PTRACE_O_TRACEVFORK))
+ #define XLAT_STR_2 STRINGIFY(PTRACE_O_TRACEVFORK)
 #endif
 #if defined(PTRACE_O_TRACECLONE) || (defined(HAVE_DECL_PTRACE_O_TRACECLONE) && HAVE_DECL_PTRACE_O_TRACECLONE)
   XLAT(PTRACE_O_TRACECLONE),
+ #define XLAT_VAL_3 ((unsigned) (PTRACE_O_TRACECLONE))
+ #define XLAT_STR_3 STRINGIFY(PTRACE_O_TRACECLONE)
 #endif
 #if defined(PTRACE_O_TRACEEXEC) || (defined(HAVE_DECL_PTRACE_O_TRACEEXEC) && HAVE_DECL_PTRACE_O_TRACEEXEC)
   XLAT(PTRACE_O_TRACEEXEC),
+ #define XLAT_VAL_4 ((unsigned) (PTRACE_O_TRACEEXEC))
+ #define XLAT_STR_4 STRINGIFY(PTRACE_O_TRACEEXEC)
 #endif
 #if defined(PTRACE_O_TRACEVFORKDONE) || (defined(HAVE_DECL_PTRACE_O_TRACEVFORKDONE) && HAVE_DECL_PTRACE_O_TRACEVFORKDONE)
   XLAT(PTRACE_O_TRACEVFORKDONE),
+ #define XLAT_VAL_5 ((unsigned) (PTRACE_O_TRACEVFORKDONE))
+ #define XLAT_STR_5 STRINGIFY(PTRACE_O_TRACEVFORKDONE)
 #endif
 #if defined(PTRACE_O_TRACEEXIT) || (defined(HAVE_DECL_PTRACE_O_TRACEEXIT) && HAVE_DECL_PTRACE_O_TRACEEXIT)
   XLAT(PTRACE_O_TRACEEXIT),
+ #define XLAT_VAL_6 ((unsigned) (PTRACE_O_TRACEEXIT))
+ #define XLAT_STR_6 STRINGIFY(PTRACE_O_TRACEEXIT)
 #endif
 #if defined(PTRACE_O_TRACESECCOMP) || (defined(HAVE_DECL_PTRACE_O_TRACESECCOMP) && HAVE_DECL_PTRACE_O_TRACESECCOMP)
   XLAT(PTRACE_O_TRACESECCOMP),
+ #define XLAT_VAL_7 ((unsigned) (PTRACE_O_TRACESECCOMP))
+ #define XLAT_STR_7 STRINGIFY(PTRACE_O_TRACESECCOMP)
 #endif
 #if defined(PTRACE_O_EXITKILL) || (defined(HAVE_DECL_PTRACE_O_EXITKILL) && HAVE_DECL_PTRACE_O_EXITKILL)
   XLAT(PTRACE_O_EXITKILL),
+ #define XLAT_VAL_8 ((unsigned) (PTRACE_O_EXITKILL))
+ #define XLAT_STR_8 STRINGIFY(PTRACE_O_EXITKILL)
 #endif
 #if defined(PTRACE_O_SUSPEND_SECCOMP) || (defined(HAVE_DECL_PTRACE_O_SUSPEND_SECCOMP) && HAVE_DECL_PTRACE_O_SUSPEND_SECCOMP)
   XLAT(PTRACE_O_SUSPEND_SECCOMP),
+ #define XLAT_VAL_9 ((unsigned) (PTRACE_O_SUSPEND_SECCOMP))
+ #define XLAT_STR_9 STRINGIFY(PTRACE_O_SUSPEND_SECCOMP)
 #endif
 
 #if defined(PTRACE_O_TRACEMIGRATE) || (defined(HAVE_DECL_PTRACE_O_TRACEMIGRATE) && HAVE_DECL_PTRACE_O_TRACEMIGRATE)
   XLAT(PTRACE_O_TRACEMIGRATE),
+ #define XLAT_VAL_10 ((unsigned) (PTRACE_O_TRACEMIGRATE))
+ #define XLAT_STR_10 STRINGIFY(PTRACE_O_TRACEMIGRATE)
 #endif
- XLAT_END
 };
+static
+const struct xlat ptrace_setoptions_flags[1] = { {
+ .data = ptrace_setoptions_flags_xdata,
+ .size = ARRAY_SIZE(ptrace_setoptions_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 0384d14f00117c803fbb80327c170f65942619cf..4ed06ff374e0b872a09e6a7a0dd4dd6c88336750 100644 (file)
 
 # else
 
-static
-const struct xlat ptrace_syscall_info_op[] = {
+static const struct xlat_data ptrace_syscall_info_op_xdata[] = {
 #if defined(PTRACE_SYSCALL_INFO_NONE) || (defined(HAVE_DECL_PTRACE_SYSCALL_INFO_NONE) && HAVE_DECL_PTRACE_SYSCALL_INFO_NONE)
   [PTRACE_SYSCALL_INFO_NONE] = XLAT(PTRACE_SYSCALL_INFO_NONE),
+ #define XLAT_VAL_0 ((unsigned) (PTRACE_SYSCALL_INFO_NONE))
+ #define XLAT_STR_0 STRINGIFY(PTRACE_SYSCALL_INFO_NONE)
 #endif
 #if defined(PTRACE_SYSCALL_INFO_ENTRY) || (defined(HAVE_DECL_PTRACE_SYSCALL_INFO_ENTRY) && HAVE_DECL_PTRACE_SYSCALL_INFO_ENTRY)
   [PTRACE_SYSCALL_INFO_ENTRY] = XLAT(PTRACE_SYSCALL_INFO_ENTRY),
+ #define XLAT_VAL_1 ((unsigned) (PTRACE_SYSCALL_INFO_ENTRY))
+ #define XLAT_STR_1 STRINGIFY(PTRACE_SYSCALL_INFO_ENTRY)
 #endif
 #if defined(PTRACE_SYSCALL_INFO_EXIT) || (defined(HAVE_DECL_PTRACE_SYSCALL_INFO_EXIT) && HAVE_DECL_PTRACE_SYSCALL_INFO_EXIT)
   [PTRACE_SYSCALL_INFO_EXIT] = XLAT(PTRACE_SYSCALL_INFO_EXIT),
+ #define XLAT_VAL_2 ((unsigned) (PTRACE_SYSCALL_INFO_EXIT))
+ #define XLAT_STR_2 STRINGIFY(PTRACE_SYSCALL_INFO_EXIT)
 #endif
 #if defined(PTRACE_SYSCALL_INFO_SECCOMP) || (defined(HAVE_DECL_PTRACE_SYSCALL_INFO_SECCOMP) && HAVE_DECL_PTRACE_SYSCALL_INFO_SECCOMP)
   [PTRACE_SYSCALL_INFO_SECCOMP] = XLAT(PTRACE_SYSCALL_INFO_SECCOMP),
+ #define XLAT_VAL_3 ((unsigned) (PTRACE_SYSCALL_INFO_SECCOMP))
+ #define XLAT_STR_3 STRINGIFY(PTRACE_SYSCALL_INFO_SECCOMP)
 #endif
- XLAT_END
 };
+static
+const struct xlat ptrace_syscall_info_op[1] = { {
+ .data = ptrace_syscall_info_op_xdata,
+ .size = ARRAY_SIZE(ptrace_syscall_info_op_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 9a24084d78aff619a56c71a63a36b93bbb4a10d5..a56206cd61bde879cc61649d1448f22b52ba7bd4 100644 (file)
@@ -40,15 +40,63 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat quota_formats[] = {
- XLAT(QFMT_VFS_OLD),
- XLAT(QFMT_VFS_V0),
- XLAT(QFMT_OCFS2),
- XLAT(QFMT_VFS_V1),
- XLAT_END
+static const struct xlat_data quota_formats_xdata[] = {
+ [QFMT_VFS_OLD] = XLAT(QFMT_VFS_OLD),
+ #define XLAT_VAL_0 ((unsigned) (QFMT_VFS_OLD))
+ #define XLAT_STR_0 STRINGIFY(QFMT_VFS_OLD)
+ [QFMT_VFS_V0] = XLAT(QFMT_VFS_V0),
+ #define XLAT_VAL_1 ((unsigned) (QFMT_VFS_V0))
+ #define XLAT_STR_1 STRINGIFY(QFMT_VFS_V0)
+ [QFMT_OCFS2] = XLAT(QFMT_OCFS2),
+ #define XLAT_VAL_2 ((unsigned) (QFMT_OCFS2))
+ #define XLAT_STR_2 STRINGIFY(QFMT_OCFS2)
+ [QFMT_VFS_V1] = XLAT(QFMT_VFS_V1),
+ #define XLAT_VAL_3 ((unsigned) (QFMT_VFS_V1))
+ #define XLAT_STR_3 STRINGIFY(QFMT_VFS_V1)
 };
+static
+const struct xlat quota_formats[1] = { {
+ .data = quota_formats_xdata,
+ .size = ARRAY_SIZE(quota_formats_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index dcbbb61ca2b96313ea0d5ad4a90d6ff84b007e3e..6f59c058d73b7bc692fd4603756baee30e3cb649 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 QFMT_VFS_OLD   1
 QFMT_VFS_V0    2
 QFMT_OCFS2     3
index 54dfbadb7d97a9ef55764c3947100641dd0fdee8..9e5ce495f9e3e27880d8804fcef9579ecff68bdb 100644 (file)
@@ -257,49 +257,407 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat quotacmds[] = {
+static const struct xlat_data quotacmds_xdata[] = {
  XLAT(Q_V1_QUOTAON),
+ #define XLAT_VAL_0 ((unsigned) (Q_V1_QUOTAON))
+ #define XLAT_STR_0 STRINGIFY(Q_V1_QUOTAON)
  XLAT(Q_V1_QUOTAOFF),
+ #define XLAT_VAL_1 ((unsigned) (Q_V1_QUOTAOFF))
+ #define XLAT_STR_1 STRINGIFY(Q_V1_QUOTAOFF)
  XLAT(Q_V1_GETQUOTA),
+ #define XLAT_VAL_2 ((unsigned) (Q_V1_GETQUOTA))
+ #define XLAT_STR_2 STRINGIFY(Q_V1_GETQUOTA)
  XLAT(Q_V1_SETQUOTA),
+ #define XLAT_VAL_3 ((unsigned) (Q_V1_SETQUOTA))
+ #define XLAT_STR_3 STRINGIFY(Q_V1_SETQUOTA)
  XLAT(Q_V1_SETUSE),
+ #define XLAT_VAL_4 ((unsigned) (Q_V1_SETUSE))
+ #define XLAT_STR_4 STRINGIFY(Q_V1_SETUSE)
  XLAT(Q_V1_SYNC),
+ #define XLAT_VAL_5 ((unsigned) (Q_V1_SYNC))
+ #define XLAT_STR_5 STRINGIFY(Q_V1_SYNC)
  XLAT(Q_SETQLIM),
+ #define XLAT_VAL_6 ((unsigned) (Q_SETQLIM))
+ #define XLAT_STR_6 STRINGIFY(Q_SETQLIM)
  XLAT(Q_V1_GETSTATS),
+ #define XLAT_VAL_7 ((unsigned) (Q_V1_GETSTATS))
+ #define XLAT_STR_7 STRINGIFY(Q_V1_GETSTATS)
  XLAT(Q_V1_RSQUASH),
+ #define XLAT_VAL_8 ((unsigned) (Q_V1_RSQUASH))
+ #define XLAT_STR_8 STRINGIFY(Q_V1_RSQUASH)
 
  XLAT(Q_V2_GETQUOTA),
+ #define XLAT_VAL_9 ((unsigned) (Q_V2_GETQUOTA))
+ #define XLAT_STR_9 STRINGIFY(Q_V2_GETQUOTA)
  XLAT(Q_V2_SETQUOTA),
+ #define XLAT_VAL_10 ((unsigned) (Q_V2_SETQUOTA))
+ #define XLAT_STR_10 STRINGIFY(Q_V2_SETQUOTA)
  XLAT(Q_V2_SETUSE),
+ #define XLAT_VAL_11 ((unsigned) (Q_V2_SETUSE))
+ #define XLAT_STR_11 STRINGIFY(Q_V2_SETUSE)
  XLAT(Q_V2_GETINFO),
+ #define XLAT_VAL_12 ((unsigned) (Q_V2_GETINFO))
+ #define XLAT_STR_12 STRINGIFY(Q_V2_GETINFO)
  XLAT(Q_V2_SETINFO),
+ #define XLAT_VAL_13 ((unsigned) (Q_V2_SETINFO))
+ #define XLAT_STR_13 STRINGIFY(Q_V2_SETINFO)
  XLAT(Q_V2_SETGRACE),
+ #define XLAT_VAL_14 ((unsigned) (Q_V2_SETGRACE))
+ #define XLAT_STR_14 STRINGIFY(Q_V2_SETGRACE)
  XLAT(Q_V2_SETFLAGS),
+ #define XLAT_VAL_15 ((unsigned) (Q_V2_SETFLAGS))
+ #define XLAT_STR_15 STRINGIFY(Q_V2_SETFLAGS)
  XLAT(Q_V2_GETSTATS),
+ #define XLAT_VAL_16 ((unsigned) (Q_V2_GETSTATS))
+ #define XLAT_STR_16 STRINGIFY(Q_V2_GETSTATS)
 
  XLAT(Q_SYNC),
+ #define XLAT_VAL_17 ((unsigned) (Q_SYNC))
+ #define XLAT_STR_17 STRINGIFY(Q_SYNC)
  XLAT(Q_QUOTAON),
+ #define XLAT_VAL_18 ((unsigned) (Q_QUOTAON))
+ #define XLAT_STR_18 STRINGIFY(Q_QUOTAON)
  XLAT(Q_QUOTAOFF),
+ #define XLAT_VAL_19 ((unsigned) (Q_QUOTAOFF))
+ #define XLAT_STR_19 STRINGIFY(Q_QUOTAOFF)
  XLAT(Q_GETFMT),
+ #define XLAT_VAL_20 ((unsigned) (Q_GETFMT))
+ #define XLAT_STR_20 STRINGIFY(Q_GETFMT)
  XLAT(Q_GETINFO),
+ #define XLAT_VAL_21 ((unsigned) (Q_GETINFO))
+ #define XLAT_STR_21 STRINGIFY(Q_GETINFO)
  XLAT(Q_SETINFO),
+ #define XLAT_VAL_22 ((unsigned) (Q_SETINFO))
+ #define XLAT_STR_22 STRINGIFY(Q_SETINFO)
  XLAT(Q_GETQUOTA),
+ #define XLAT_VAL_23 ((unsigned) (Q_GETQUOTA))
+ #define XLAT_STR_23 STRINGIFY(Q_GETQUOTA)
  XLAT(Q_SETQUOTA),
+ #define XLAT_VAL_24 ((unsigned) (Q_SETQUOTA))
+ #define XLAT_STR_24 STRINGIFY(Q_SETQUOTA)
  XLAT(Q_GETNEXTQUOTA),
+ #define XLAT_VAL_25 ((unsigned) (Q_GETNEXTQUOTA))
+ #define XLAT_STR_25 STRINGIFY(Q_GETNEXTQUOTA)
 
  XLAT(Q_XQUOTAON),
+ #define XLAT_VAL_26 ((unsigned) (Q_XQUOTAON))
+ #define XLAT_STR_26 STRINGIFY(Q_XQUOTAON)
  XLAT(Q_XQUOTAOFF),
+ #define XLAT_VAL_27 ((unsigned) (Q_XQUOTAOFF))
+ #define XLAT_STR_27 STRINGIFY(Q_XQUOTAOFF)
  XLAT(Q_XGETQUOTA),
+ #define XLAT_VAL_28 ((unsigned) (Q_XGETQUOTA))
+ #define XLAT_STR_28 STRINGIFY(Q_XGETQUOTA)
  XLAT(Q_XSETQLIM),
+ #define XLAT_VAL_29 ((unsigned) (Q_XSETQLIM))
+ #define XLAT_STR_29 STRINGIFY(Q_XSETQLIM)
  XLAT(Q_XGETQSTAT),
+ #define XLAT_VAL_30 ((unsigned) (Q_XGETQSTAT))
+ #define XLAT_STR_30 STRINGIFY(Q_XGETQSTAT)
  XLAT(Q_XQUOTARM),
+ #define XLAT_VAL_31 ((unsigned) (Q_XQUOTARM))
+ #define XLAT_STR_31 STRINGIFY(Q_XQUOTARM)
  XLAT(Q_XQUOTASYNC),
+ #define XLAT_VAL_32 ((unsigned) (Q_XQUOTASYNC))
+ #define XLAT_STR_32 STRINGIFY(Q_XQUOTASYNC)
  XLAT(Q_XGETQSTATV),
+ #define XLAT_VAL_33 ((unsigned) (Q_XGETQSTATV))
+ #define XLAT_STR_33 STRINGIFY(Q_XGETQSTATV)
  XLAT(Q_XGETNEXTQUOTA),
- XLAT_END
+ #define XLAT_VAL_34 ((unsigned) (Q_XGETNEXTQUOTA))
+ #define XLAT_STR_34 STRINGIFY(Q_XGETNEXTQUOTA)
 };
+static
+const struct xlat quotacmds[1] = { {
+ .data = quotacmds_xdata,
+ .size = ARRAY_SIZE(quotacmds_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+#  ifdef XLAT_VAL_30
+  | XLAT_VAL_30
+#  endif
+#  ifdef XLAT_VAL_31
+  | XLAT_VAL_31
+#  endif
+#  ifdef XLAT_VAL_32
+  | XLAT_VAL_32
+#  endif
+#  ifdef XLAT_VAL_33
+  | XLAT_VAL_33
+#  endif
+#  ifdef XLAT_VAL_34
+  | XLAT_VAL_34
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+#  ifdef XLAT_STR_30
+  + sizeof(XLAT_STR_30)
+#  endif
+#  ifdef XLAT_STR_31
+  + sizeof(XLAT_STR_31)
+#  endif
+#  ifdef XLAT_STR_32
+  + sizeof(XLAT_STR_32)
+#  endif
+#  ifdef XLAT_STR_33
+  + sizeof(XLAT_STR_33)
+#  endif
+#  ifdef XLAT_STR_34
+  + sizeof(XLAT_STR_34)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
+#  undef XLAT_STR_30
+#  undef XLAT_VAL_30
+#  undef XLAT_STR_31
+#  undef XLAT_VAL_31
+#  undef XLAT_STR_32
+#  undef XLAT_VAL_32
+#  undef XLAT_STR_33
+#  undef XLAT_VAL_33
+#  undef XLAT_STR_34
+#  undef XLAT_VAL_34
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index bbc9567daa6bdeb73c8bf8f18e7cf2252ec7f18d..ebfc6a2f10e1bed100985f5ffc71746f79500b57 100644 (file)
@@ -33,14 +33,52 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat quotatypes[] = {
- XLAT(USRQUOTA),
- XLAT(GRPQUOTA),
- XLAT(PRJQUOTA),
- XLAT_END
+static const struct xlat_data quotatypes_xdata[] = {
+ [USRQUOTA] = XLAT(USRQUOTA),
+ #define XLAT_VAL_0 ((unsigned) (USRQUOTA))
+ #define XLAT_STR_0 STRINGIFY(USRQUOTA)
+ [GRPQUOTA] = XLAT(GRPQUOTA),
+ #define XLAT_VAL_1 ((unsigned) (GRPQUOTA))
+ #define XLAT_STR_1 STRINGIFY(GRPQUOTA)
+ [PRJQUOTA] = XLAT(PRJQUOTA),
+ #define XLAT_VAL_2 ((unsigned) (PRJQUOTA))
+ #define XLAT_STR_2 STRINGIFY(PRJQUOTA)
 };
+static
+const struct xlat quotatypes[1] = { {
+ .data = quotatypes_xdata,
+ .size = ARRAY_SIZE(quotatypes_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 671fe7df39c86fdb72d517d81c5e4659c1020839..fec94f8b9612593592e05fa2bb70b53fbea3d081 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 USRQUOTA 0
 GRPQUOTA 1
 PRJQUOTA 2
index e556474909e6ef1fec0be5f4391624c5b8655f59..d35fb8b438982b8e4af0c8e32cff30d42e6e4d6f 100644 (file)
@@ -61,18 +61,96 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat random_ioctl_cmds[] = {
+static const struct xlat_data random_ioctl_cmds_xdata[] = {
  XLAT(RNDGETENTCNT),
+ #define XLAT_VAL_0 ((unsigned) (RNDGETENTCNT))
+ #define XLAT_STR_0 STRINGIFY(RNDGETENTCNT)
  XLAT(RNDADDTOENTCNT),
+ #define XLAT_VAL_1 ((unsigned) (RNDADDTOENTCNT))
+ #define XLAT_STR_1 STRINGIFY(RNDADDTOENTCNT)
  XLAT(RNDGETPOOL),
+ #define XLAT_VAL_2 ((unsigned) (RNDGETPOOL))
+ #define XLAT_STR_2 STRINGIFY(RNDGETPOOL)
  XLAT(RNDADDENTROPY),
+ #define XLAT_VAL_3 ((unsigned) (RNDADDENTROPY))
+ #define XLAT_STR_3 STRINGIFY(RNDADDENTROPY)
  XLAT(RNDZAPENTCNT),
+ #define XLAT_VAL_4 ((unsigned) (RNDZAPENTCNT))
+ #define XLAT_STR_4 STRINGIFY(RNDZAPENTCNT)
  XLAT(RNDCLEARPOOL),
+ #define XLAT_VAL_5 ((unsigned) (RNDCLEARPOOL))
+ #define XLAT_STR_5 STRINGIFY(RNDCLEARPOOL)
  XLAT(RNDRESEEDCRNG),
- XLAT_END
+ #define XLAT_VAL_6 ((unsigned) (RNDRESEEDCRNG))
+ #define XLAT_STR_6 STRINGIFY(RNDRESEEDCRNG)
 };
+static
+const struct xlat random_ioctl_cmds[1] = { {
+ .data = random_ioctl_cmds_xdata,
+ .size = ARRAY_SIZE(random_ioctl_cmds_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 5eb07aac55110860b5cfdceccf53bde40a51c60c..0c04825abaa656d5a62068cc1a451faaa26846c9 100644 (file)
@@ -33,14 +33,52 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat rename_flags[] = {
+static const struct xlat_data rename_flags_xdata[] = {
  XLAT(RENAME_NOREPLACE),
+ #define XLAT_VAL_0 ((unsigned) (RENAME_NOREPLACE))
+ #define XLAT_STR_0 STRINGIFY(RENAME_NOREPLACE)
  XLAT(RENAME_EXCHANGE),
+ #define XLAT_VAL_1 ((unsigned) (RENAME_EXCHANGE))
+ #define XLAT_STR_1 STRINGIFY(RENAME_EXCHANGE)
  XLAT(RENAME_WHITEOUT),
- XLAT_END
+ #define XLAT_VAL_2 ((unsigned) (RENAME_WHITEOUT))
+ #define XLAT_STR_2 STRINGIFY(RENAME_WHITEOUT)
 };
+static
+const struct xlat rename_flags[1] = { {
+ .data = rename_flags_xdata,
+ .size = ARRAY_SIZE(rename_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 67bed2d2ed2e0e616d1818363001d73db90bf1a9..cc7c803d0b0aa37736492e8625f5d9dd33638242 100644 (file)
@@ -8,19 +8,57 @@
 
 # ifndef IN_MPERS
 
-const struct xlat resource_flags[] = {
+static const struct xlat_data resource_flags_xdata[] = {
 #if defined(IPC_CREAT) || (defined(HAVE_DECL_IPC_CREAT) && HAVE_DECL_IPC_CREAT)
   XLAT(IPC_CREAT),
+ #define XLAT_VAL_0 ((unsigned) (IPC_CREAT))
+ #define XLAT_STR_0 STRINGIFY(IPC_CREAT)
 #endif
 #if defined(IPC_EXCL) || (defined(HAVE_DECL_IPC_EXCL) && HAVE_DECL_IPC_EXCL)
   XLAT(IPC_EXCL),
+ #define XLAT_VAL_1 ((unsigned) (IPC_EXCL))
+ #define XLAT_STR_1 STRINGIFY(IPC_EXCL)
 #endif
 #if defined(IPC_NOWAIT) || (defined(HAVE_DECL_IPC_NOWAIT) && HAVE_DECL_IPC_NOWAIT)
   XLAT(IPC_NOWAIT),
+ #define XLAT_VAL_2 ((unsigned) (IPC_NOWAIT))
+ #define XLAT_STR_2 STRINGIFY(IPC_NOWAIT)
 #endif
- XLAT_END
 };
+const struct xlat resource_flags[1] = { {
+ .data = resource_flags_xdata,
+ .size = ARRAY_SIZE(resource_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 41a049748f548e282193806be289ee7de7413b80..44ff4a55ceb552e9577288ebd41e9971d9c5e535 100644 (file)
@@ -234,49 +234,367 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat resources[] = {
+static const struct xlat_data resources_xdata[] = {
  [RLIMIT_CPU] = XLAT(RLIMIT_CPU),
+ #define XLAT_VAL_0 ((unsigned) (RLIMIT_CPU))
+ #define XLAT_STR_0 STRINGIFY(RLIMIT_CPU)
  [RLIMIT_FSIZE] = XLAT(RLIMIT_FSIZE),
+ #define XLAT_VAL_1 ((unsigned) (RLIMIT_FSIZE))
+ #define XLAT_STR_1 STRINGIFY(RLIMIT_FSIZE)
  [RLIMIT_DATA] = XLAT(RLIMIT_DATA),
+ #define XLAT_VAL_2 ((unsigned) (RLIMIT_DATA))
+ #define XLAT_STR_2 STRINGIFY(RLIMIT_DATA)
  [RLIMIT_STACK] = XLAT(RLIMIT_STACK),
+ #define XLAT_VAL_3 ((unsigned) (RLIMIT_STACK))
+ #define XLAT_STR_3 STRINGIFY(RLIMIT_STACK)
  [RLIMIT_CORE] = XLAT(RLIMIT_CORE),
+ #define XLAT_VAL_4 ((unsigned) (RLIMIT_CORE))
+ #define XLAT_STR_4 STRINGIFY(RLIMIT_CORE)
 
 #if defined(__alpha__)
  [RLIMIT_RSS] = XLAT(RLIMIT_RSS),
+ #define XLAT_VAL_5 ((unsigned) (RLIMIT_RSS))
+ #define XLAT_STR_5 STRINGIFY(RLIMIT_RSS)
  [RLIMIT_NOFILE] = XLAT(RLIMIT_NOFILE),
+ #define XLAT_VAL_6 ((unsigned) (RLIMIT_NOFILE))
+ #define XLAT_STR_6 STRINGIFY(RLIMIT_NOFILE)
  [RLIMIT_AS] = XLAT(RLIMIT_AS),
+ #define XLAT_VAL_7 ((unsigned) (RLIMIT_AS))
+ #define XLAT_STR_7 STRINGIFY(RLIMIT_AS)
  [RLIMIT_NPROC] = XLAT(RLIMIT_NPROC),
+ #define XLAT_VAL_8 ((unsigned) (RLIMIT_NPROC))
+ #define XLAT_STR_8 STRINGIFY(RLIMIT_NPROC)
  [RLIMIT_MEMLOCK] = XLAT(RLIMIT_MEMLOCK),
+ #define XLAT_VAL_9 ((unsigned) (RLIMIT_MEMLOCK))
+ #define XLAT_STR_9 STRINGIFY(RLIMIT_MEMLOCK)
 #elif defined(__mips__)
  [RLIMIT_NOFILE] = XLAT(RLIMIT_NOFILE),
+ #define XLAT_VAL_10 ((unsigned) (RLIMIT_NOFILE))
+ #define XLAT_STR_10 STRINGIFY(RLIMIT_NOFILE)
  [RLIMIT_AS] = XLAT(RLIMIT_AS),
+ #define XLAT_VAL_11 ((unsigned) (RLIMIT_AS))
+ #define XLAT_STR_11 STRINGIFY(RLIMIT_AS)
  [RLIMIT_RSS] = XLAT(RLIMIT_RSS),
+ #define XLAT_VAL_12 ((unsigned) (RLIMIT_RSS))
+ #define XLAT_STR_12 STRINGIFY(RLIMIT_RSS)
  [RLIMIT_NPROC] = XLAT(RLIMIT_NPROC),
+ #define XLAT_VAL_13 ((unsigned) (RLIMIT_NPROC))
+ #define XLAT_STR_13 STRINGIFY(RLIMIT_NPROC)
  [RLIMIT_MEMLOCK] = XLAT(RLIMIT_MEMLOCK),
+ #define XLAT_VAL_14 ((unsigned) (RLIMIT_MEMLOCK))
+ #define XLAT_STR_14 STRINGIFY(RLIMIT_MEMLOCK)
 #elif defined(__sparc__)
  [RLIMIT_RSS] = XLAT(RLIMIT_RSS),
+ #define XLAT_VAL_15 ((unsigned) (RLIMIT_RSS))
+ #define XLAT_STR_15 STRINGIFY(RLIMIT_RSS)
  [RLIMIT_NOFILE] = XLAT(RLIMIT_NOFILE),
+ #define XLAT_VAL_16 ((unsigned) (RLIMIT_NOFILE))
+ #define XLAT_STR_16 STRINGIFY(RLIMIT_NOFILE)
  [RLIMIT_NPROC] = XLAT(RLIMIT_NPROC),
+ #define XLAT_VAL_17 ((unsigned) (RLIMIT_NPROC))
+ #define XLAT_STR_17 STRINGIFY(RLIMIT_NPROC)
  [RLIMIT_MEMLOCK] = XLAT(RLIMIT_MEMLOCK),
+ #define XLAT_VAL_18 ((unsigned) (RLIMIT_MEMLOCK))
+ #define XLAT_STR_18 STRINGIFY(RLIMIT_MEMLOCK)
  [RLIMIT_AS] = XLAT(RLIMIT_AS),
+ #define XLAT_VAL_19 ((unsigned) (RLIMIT_AS))
+ #define XLAT_STR_19 STRINGIFY(RLIMIT_AS)
 #else
  [RLIMIT_RSS] = XLAT(RLIMIT_RSS),
+ #define XLAT_VAL_20 ((unsigned) (RLIMIT_RSS))
+ #define XLAT_STR_20 STRINGIFY(RLIMIT_RSS)
  [RLIMIT_NPROC] = XLAT(RLIMIT_NPROC),
+ #define XLAT_VAL_21 ((unsigned) (RLIMIT_NPROC))
+ #define XLAT_STR_21 STRINGIFY(RLIMIT_NPROC)
  [RLIMIT_NOFILE] = XLAT(RLIMIT_NOFILE),
+ #define XLAT_VAL_22 ((unsigned) (RLIMIT_NOFILE))
+ #define XLAT_STR_22 STRINGIFY(RLIMIT_NOFILE)
  [RLIMIT_MEMLOCK] = XLAT(RLIMIT_MEMLOCK),
+ #define XLAT_VAL_23 ((unsigned) (RLIMIT_MEMLOCK))
+ #define XLAT_STR_23 STRINGIFY(RLIMIT_MEMLOCK)
  [RLIMIT_AS] = XLAT(RLIMIT_AS),
+ #define XLAT_VAL_24 ((unsigned) (RLIMIT_AS))
+ #define XLAT_STR_24 STRINGIFY(RLIMIT_AS)
 #endif
 
  [RLIMIT_LOCKS] = XLAT(RLIMIT_LOCKS),
+ #define XLAT_VAL_25 ((unsigned) (RLIMIT_LOCKS))
+ #define XLAT_STR_25 STRINGIFY(RLIMIT_LOCKS)
  [RLIMIT_SIGPENDING] = XLAT(RLIMIT_SIGPENDING),
+ #define XLAT_VAL_26 ((unsigned) (RLIMIT_SIGPENDING))
+ #define XLAT_STR_26 STRINGIFY(RLIMIT_SIGPENDING)
  [RLIMIT_MSGQUEUE] = XLAT(RLIMIT_MSGQUEUE),
+ #define XLAT_VAL_27 ((unsigned) (RLIMIT_MSGQUEUE))
+ #define XLAT_STR_27 STRINGIFY(RLIMIT_MSGQUEUE)
  [RLIMIT_NICE] = XLAT(RLIMIT_NICE),
+ #define XLAT_VAL_28 ((unsigned) (RLIMIT_NICE))
+ #define XLAT_STR_28 STRINGIFY(RLIMIT_NICE)
  [RLIMIT_RTPRIO] = XLAT(RLIMIT_RTPRIO),
+ #define XLAT_VAL_29 ((unsigned) (RLIMIT_RTPRIO))
+ #define XLAT_STR_29 STRINGIFY(RLIMIT_RTPRIO)
  [RLIMIT_RTTIME] = XLAT(RLIMIT_RTTIME),
- XLAT_END
+ #define XLAT_VAL_30 ((unsigned) (RLIMIT_RTTIME))
+ #define XLAT_STR_30 STRINGIFY(RLIMIT_RTTIME)
 };
+static
+const struct xlat resources[1] = { {
+ .data = resources_xdata,
+ .size = ARRAY_SIZE(resources_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+#  ifdef XLAT_VAL_30
+  | XLAT_VAL_30
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+#  ifdef XLAT_STR_30
+  + sizeof(XLAT_STR_30)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
+#  undef XLAT_STR_30
+#  undef XLAT_VAL_30
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 4b9a812bd64780ecb5f83f9f5b583e68c5b7164f..880a8818b06182e9a8513d3a2a85bbb7e2dfc8b6 100644 (file)
@@ -19,12 +19,30 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat riscv_flush_icache_flags[] = {
+static const struct xlat_data riscv_flush_icache_flags_xdata[] = {
  XLAT(SYS_RISCV_FLUSH_ICACHE_LOCAL),
- XLAT_END
+ #define XLAT_VAL_0 ((unsigned) (SYS_RISCV_FLUSH_ICACHE_LOCAL))
+ #define XLAT_STR_0 STRINGIFY(SYS_RISCV_FLUSH_ICACHE_LOCAL)
 };
-
+static
+const struct xlat riscv_flush_icache_flags[1] = { {
+ .data = riscv_flush_icache_flags_xdata,
+ .size = ARRAY_SIZE(riscv_flush_icache_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index d794c6c39701d6272eac7944450a3c5a1803c108..bfd00e8c2253e9b566a476a9507985fd842e96f8 100644 (file)
@@ -54,17 +54,85 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat route_nexthop_flags[] = {
+static const struct xlat_data route_nexthop_flags_xdata[] = {
  XLAT(RTNH_F_DEAD),
+ #define XLAT_VAL_0 ((unsigned) (RTNH_F_DEAD))
+ #define XLAT_STR_0 STRINGIFY(RTNH_F_DEAD)
  XLAT(RTNH_F_PERVASIVE),
+ #define XLAT_VAL_1 ((unsigned) (RTNH_F_PERVASIVE))
+ #define XLAT_STR_1 STRINGIFY(RTNH_F_PERVASIVE)
  XLAT(RTNH_F_ONLINK),
+ #define XLAT_VAL_2 ((unsigned) (RTNH_F_ONLINK))
+ #define XLAT_STR_2 STRINGIFY(RTNH_F_ONLINK)
  XLAT(RTNH_F_OFFLOAD),
+ #define XLAT_VAL_3 ((unsigned) (RTNH_F_OFFLOAD))
+ #define XLAT_STR_3 STRINGIFY(RTNH_F_OFFLOAD)
  XLAT(RTNH_F_LINKDOWN),
+ #define XLAT_VAL_4 ((unsigned) (RTNH_F_LINKDOWN))
+ #define XLAT_STR_4 STRINGIFY(RTNH_F_LINKDOWN)
  XLAT(RTNH_F_UNRESOLVED),
- XLAT_END
+ #define XLAT_VAL_5 ((unsigned) (RTNH_F_UNRESOLVED))
+ #define XLAT_STR_5 STRINGIFY(RTNH_F_UNRESOLVED)
 };
+static
+const struct xlat route_nexthop_flags[1] = { {
+ .data = route_nexthop_flags_xdata,
+ .size = ARRAY_SIZE(route_nexthop_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index fa6a212c21b989a4288ccc7f8cfb53c5e63d0864..9412c9047048caaa989f17323faac634b7df10d4 100644 (file)
 #include "gcc_compat.h"
 #include "static_assert.h"
 
-
-#ifndef XLAT_MACROS_ONLY
-
-# ifdef IN_MPERS
-
-#  error static const struct xlat routing_flags in mpers mode
-
-# else
-
-static
-const struct xlat routing_flags[] = {
 #if defined(RTM_F_NOTIFY) || (defined(HAVE_DECL_RTM_F_NOTIFY) && HAVE_DECL_RTM_F_NOTIFY)
-  XLAT(RTM_F_NOTIFY),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((RTM_F_NOTIFY) == (0x100), "RTM_F_NOTIFY != 0x100");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define RTM_F_NOTIFY 0x100
 #endif
 #if defined(RTM_F_CLONED) || (defined(HAVE_DECL_RTM_F_CLONED) && HAVE_DECL_RTM_F_CLONED)
-  XLAT(RTM_F_CLONED),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((RTM_F_CLONED) == (0x200), "RTM_F_CLONED != 0x200");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define RTM_F_CLONED 0x200
 #endif
 #if defined(RTM_F_EQUALIZE) || (defined(HAVE_DECL_RTM_F_EQUALIZE) && HAVE_DECL_RTM_F_EQUALIZE)
-  XLAT(RTM_F_EQUALIZE),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((RTM_F_EQUALIZE) == (0x400), "RTM_F_EQUALIZE != 0x400");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define RTM_F_EQUALIZE 0x400
 #endif
 #if defined(RTM_F_PREFIX) || (defined(HAVE_DECL_RTM_F_PREFIX) && HAVE_DECL_RTM_F_PREFIX)
-  XLAT(RTM_F_PREFIX),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((RTM_F_PREFIX) == (0x800), "RTM_F_PREFIX != 0x800");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define RTM_F_PREFIX 0x800
 #endif
 #if defined(RTM_F_LOOKUP_TABLE) || (defined(HAVE_DECL_RTM_F_LOOKUP_TABLE) && HAVE_DECL_RTM_F_LOOKUP_TABLE)
-  XLAT(RTM_F_LOOKUP_TABLE),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((RTM_F_LOOKUP_TABLE) == (0x1000), "RTM_F_LOOKUP_TABLE != 0x1000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define RTM_F_LOOKUP_TABLE 0x1000
+#endif
+#if defined(RTM_F_FIB_MATCH) || (defined(HAVE_DECL_RTM_F_FIB_MATCH) && HAVE_DECL_RTM_F_FIB_MATCH)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((RTM_F_FIB_MATCH) == (0x2000), "RTM_F_FIB_MATCH != 0x2000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define RTM_F_FIB_MATCH 0x2000
+#endif
+#if defined(RTM_F_OFFLOAD) || (defined(HAVE_DECL_RTM_F_OFFLOAD) && HAVE_DECL_RTM_F_OFFLOAD)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((RTM_F_OFFLOAD) == (0x4000), "RTM_F_OFFLOAD != 0x4000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define RTM_F_OFFLOAD 0x4000
 #endif
- XLAT_END
+#if defined(RTM_F_TRAP) || (defined(HAVE_DECL_RTM_F_TRAP) && HAVE_DECL_RTM_F_TRAP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((RTM_F_TRAP) == (0x8000), "RTM_F_TRAP != 0x8000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define RTM_F_TRAP 0x8000
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat routing_flags in mpers mode
+
+# else
+
+static const struct xlat_data routing_flags_xdata[] = {
+ XLAT(RTM_F_NOTIFY),
+ #define XLAT_VAL_0 ((unsigned) (RTM_F_NOTIFY))
+ #define XLAT_STR_0 STRINGIFY(RTM_F_NOTIFY)
+ XLAT(RTM_F_CLONED),
+ #define XLAT_VAL_1 ((unsigned) (RTM_F_CLONED))
+ #define XLAT_STR_1 STRINGIFY(RTM_F_CLONED)
+ XLAT(RTM_F_EQUALIZE),
+ #define XLAT_VAL_2 ((unsigned) (RTM_F_EQUALIZE))
+ #define XLAT_STR_2 STRINGIFY(RTM_F_EQUALIZE)
+ XLAT(RTM_F_PREFIX),
+ #define XLAT_VAL_3 ((unsigned) (RTM_F_PREFIX))
+ #define XLAT_STR_3 STRINGIFY(RTM_F_PREFIX)
+ XLAT(RTM_F_LOOKUP_TABLE),
+ #define XLAT_VAL_4 ((unsigned) (RTM_F_LOOKUP_TABLE))
+ #define XLAT_STR_4 STRINGIFY(RTM_F_LOOKUP_TABLE)
+ XLAT(RTM_F_FIB_MATCH),
+ #define XLAT_VAL_5 ((unsigned) (RTM_F_FIB_MATCH))
+ #define XLAT_STR_5 STRINGIFY(RTM_F_FIB_MATCH)
+ XLAT(RTM_F_OFFLOAD),
+ #define XLAT_VAL_6 ((unsigned) (RTM_F_OFFLOAD))
+ #define XLAT_STR_6 STRINGIFY(RTM_F_OFFLOAD)
+ XLAT(RTM_F_TRAP),
+ #define XLAT_VAL_7 ((unsigned) (RTM_F_TRAP))
+ #define XLAT_STR_7 STRINGIFY(RTM_F_TRAP)
 };
+static
+const struct xlat routing_flags[1] = { {
+ .data = routing_flags_xdata,
+ .size = ARRAY_SIZE(routing_flags_xdata),
+ .type = XT_SORTED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index fe66b67862f0ec8182e02d01e8c09c49a5b60873..28501a27f6a744d1b313a72ac1b73ad290fc8437 100644 (file)
@@ -1,5 +1,9 @@
-RTM_F_NOTIFY
-RTM_F_CLONED
-RTM_F_EQUALIZE
-RTM_F_PREFIX
-RTM_F_LOOKUP_TABLE
+#sorted sort -k2,2g
+RTM_F_NOTIFY           0x100
+RTM_F_CLONED           0x200
+RTM_F_EQUALIZE         0x400
+RTM_F_PREFIX           0x800
+RTM_F_LOOKUP_TABLE     0x1000
+RTM_F_FIB_MATCH                0x2000
+RTM_F_OFFLOAD          0x4000
+RTM_F_TRAP             0x8000
index bf51f164b20160ee948fd42e0e5f26143f80e0c0..3d8658630f20d0d3c05991b4c5dd68a296c9ccf1 100644 (file)
@@ -108,6 +108,13 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define RTPROT_MROUTED 17
 #endif
+#if defined(RTPROT_KEEPALIVED) || (defined(HAVE_DECL_RTPROT_KEEPALIVED) && HAVE_DECL_RTPROT_KEEPALIVED)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((RTPROT_KEEPALIVED) == (18), "RTPROT_KEEPALIVED != 18");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define RTPROT_KEEPALIVED 18
+#endif
 #if defined(RTPROT_BABEL) || (defined(HAVE_DECL_RTPROT_BABEL) && HAVE_DECL_RTPROT_BABEL)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
 static_assert((RTPROT_BABEL) == (42), "RTPROT_BABEL != 42");
@@ -159,33 +166,261 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat routing_protocols[] = {
-
+static const struct xlat_data routing_protocols_xdata[] = {
  XLAT(RTPROT_UNSPEC),
+ #define XLAT_VAL_0 ((unsigned) (RTPROT_UNSPEC))
+ #define XLAT_STR_0 STRINGIFY(RTPROT_UNSPEC)
  XLAT(RTPROT_REDIRECT),
+ #define XLAT_VAL_1 ((unsigned) (RTPROT_REDIRECT))
+ #define XLAT_STR_1 STRINGIFY(RTPROT_REDIRECT)
  XLAT(RTPROT_KERNEL),
+ #define XLAT_VAL_2 ((unsigned) (RTPROT_KERNEL))
+ #define XLAT_STR_2 STRINGIFY(RTPROT_KERNEL)
  XLAT(RTPROT_BOOT),
+ #define XLAT_VAL_3 ((unsigned) (RTPROT_BOOT))
+ #define XLAT_STR_3 STRINGIFY(RTPROT_BOOT)
  XLAT(RTPROT_STATIC),
+ #define XLAT_VAL_4 ((unsigned) (RTPROT_STATIC))
+ #define XLAT_STR_4 STRINGIFY(RTPROT_STATIC)
  XLAT(RTPROT_GATED),
+ #define XLAT_VAL_5 ((unsigned) (RTPROT_GATED))
+ #define XLAT_STR_5 STRINGIFY(RTPROT_GATED)
  XLAT(RTPROT_RA),
+ #define XLAT_VAL_6 ((unsigned) (RTPROT_RA))
+ #define XLAT_STR_6 STRINGIFY(RTPROT_RA)
  XLAT(RTPROT_MRT),
+ #define XLAT_VAL_7 ((unsigned) (RTPROT_MRT))
+ #define XLAT_STR_7 STRINGIFY(RTPROT_MRT)
  XLAT(RTPROT_ZEBRA),
+ #define XLAT_VAL_8 ((unsigned) (RTPROT_ZEBRA))
+ #define XLAT_STR_8 STRINGIFY(RTPROT_ZEBRA)
  XLAT(RTPROT_BIRD),
+ #define XLAT_VAL_9 ((unsigned) (RTPROT_BIRD))
+ #define XLAT_STR_9 STRINGIFY(RTPROT_BIRD)
  XLAT(RTPROT_DNROUTED),
+ #define XLAT_VAL_10 ((unsigned) (RTPROT_DNROUTED))
+ #define XLAT_STR_10 STRINGIFY(RTPROT_DNROUTED)
  XLAT(RTPROT_XORP),
+ #define XLAT_VAL_11 ((unsigned) (RTPROT_XORP))
+ #define XLAT_STR_11 STRINGIFY(RTPROT_XORP)
  XLAT(RTPROT_NTK),
+ #define XLAT_VAL_12 ((unsigned) (RTPROT_NTK))
+ #define XLAT_STR_12 STRINGIFY(RTPROT_NTK)
  XLAT(RTPROT_DHCP),
+ #define XLAT_VAL_13 ((unsigned) (RTPROT_DHCP))
+ #define XLAT_STR_13 STRINGIFY(RTPROT_DHCP)
  XLAT(RTPROT_MROUTED),
+ #define XLAT_VAL_14 ((unsigned) (RTPROT_MROUTED))
+ #define XLAT_STR_14 STRINGIFY(RTPROT_MROUTED)
+ XLAT(RTPROT_KEEPALIVED),
+ #define XLAT_VAL_15 ((unsigned) (RTPROT_KEEPALIVED))
+ #define XLAT_STR_15 STRINGIFY(RTPROT_KEEPALIVED)
  XLAT(RTPROT_BABEL),
+ #define XLAT_VAL_16 ((unsigned) (RTPROT_BABEL))
+ #define XLAT_STR_16 STRINGIFY(RTPROT_BABEL)
  XLAT(RTPROT_BGP),
+ #define XLAT_VAL_17 ((unsigned) (RTPROT_BGP))
+ #define XLAT_STR_17 STRINGIFY(RTPROT_BGP)
  XLAT(RTPROT_ISIS),
+ #define XLAT_VAL_18 ((unsigned) (RTPROT_ISIS))
+ #define XLAT_STR_18 STRINGIFY(RTPROT_ISIS)
  XLAT(RTPROT_OSPF),
+ #define XLAT_VAL_19 ((unsigned) (RTPROT_OSPF))
+ #define XLAT_STR_19 STRINGIFY(RTPROT_OSPF)
  XLAT(RTPROT_RIP),
+ #define XLAT_VAL_20 ((unsigned) (RTPROT_RIP))
+ #define XLAT_STR_20 STRINGIFY(RTPROT_RIP)
  XLAT(RTPROT_EIGRP),
- XLAT_END
+ #define XLAT_VAL_21 ((unsigned) (RTPROT_EIGRP))
+ #define XLAT_STR_21 STRINGIFY(RTPROT_EIGRP)
 };
+static
+const struct xlat routing_protocols[1] = { {
+ .data = routing_protocols_xdata,
+ .size = ARRAY_SIZE(routing_protocols_xdata),
+ .type = XT_SORTED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 5433c25e22077f39f7b77327dadf17d10dbfe8f5..4c6897d8ae55581c008143fa9b49f865f4f7d290 100644 (file)
@@ -1,4 +1,4 @@
-/* sort -k2,2n */
+#sorted sort -k2,2n
 RTPROT_UNSPEC  0
 RTPROT_REDIRECT        1
 RTPROT_KERNEL  2
@@ -14,6 +14,7 @@ RTPROT_XORP   14
 RTPROT_NTK     15
 RTPROT_DHCP    16
 RTPROT_MROUTED 17
+RTPROT_KEEPALIVED 18
 RTPROT_BABEL   42
 RTPROT_BGP     186
 RTPROT_ISIS    187
index f718f3b4fde4a568840c678d5adff284ff1dcd36..b99e95248f2d0d42126ca6848e78b3c28b24f56d 100644 (file)
@@ -43,15 +43,73 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # ifndef IN_MPERS
 
-const struct xlat routing_scopes[] = {
+static const struct xlat_data routing_scopes_xdata[] = {
  XLAT(RT_SCOPE_UNIVERSE),
+ #define XLAT_VAL_0 ((unsigned) (RT_SCOPE_UNIVERSE))
+ #define XLAT_STR_0 STRINGIFY(RT_SCOPE_UNIVERSE)
  XLAT(RT_SCOPE_SITE),
+ #define XLAT_VAL_1 ((unsigned) (RT_SCOPE_SITE))
+ #define XLAT_STR_1 STRINGIFY(RT_SCOPE_SITE)
  XLAT(RT_SCOPE_LINK),
+ #define XLAT_VAL_2 ((unsigned) (RT_SCOPE_LINK))
+ #define XLAT_STR_2 STRINGIFY(RT_SCOPE_LINK)
  XLAT(RT_SCOPE_HOST),
+ #define XLAT_VAL_3 ((unsigned) (RT_SCOPE_HOST))
+ #define XLAT_STR_3 STRINGIFY(RT_SCOPE_HOST)
  XLAT(RT_SCOPE_NOWHERE),
- XLAT_END
+ #define XLAT_VAL_4 ((unsigned) (RT_SCOPE_NOWHERE))
+ #define XLAT_STR_4 STRINGIFY(RT_SCOPE_NOWHERE)
 };
+const struct xlat routing_scopes[1] = { {
+ .data = routing_scopes_xdata,
+ .size = ARRAY_SIZE(routing_scopes_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 9bab80262ce544e6b982f646e8dac4be83f8ef86..a23d87550cad1e45ca0bc664a57b79d6abf976d0 100644 (file)
@@ -43,15 +43,73 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # ifndef IN_MPERS
 
-const struct xlat routing_table_ids[] = {
+static const struct xlat_data routing_table_ids_xdata[] = {
  XLAT(RT_TABLE_UNSPEC),
+ #define XLAT_VAL_0 ((unsigned) (RT_TABLE_UNSPEC))
+ #define XLAT_STR_0 STRINGIFY(RT_TABLE_UNSPEC)
  XLAT(RT_TABLE_COMPAT),
+ #define XLAT_VAL_1 ((unsigned) (RT_TABLE_COMPAT))
+ #define XLAT_STR_1 STRINGIFY(RT_TABLE_COMPAT)
  XLAT(RT_TABLE_DEFAULT),
+ #define XLAT_VAL_2 ((unsigned) (RT_TABLE_DEFAULT))
+ #define XLAT_STR_2 STRINGIFY(RT_TABLE_DEFAULT)
  XLAT(RT_TABLE_MAIN),
+ #define XLAT_VAL_3 ((unsigned) (RT_TABLE_MAIN))
+ #define XLAT_STR_3 STRINGIFY(RT_TABLE_MAIN)
  XLAT(RT_TABLE_LOCAL),
- XLAT_END
+ #define XLAT_VAL_4 ((unsigned) (RT_TABLE_LOCAL))
+ #define XLAT_STR_4 STRINGIFY(RT_TABLE_LOCAL)
 };
+const struct xlat routing_table_ids[1] = { {
+ .data = routing_table_ids_xdata,
+ .size = ARRAY_SIZE(routing_table_ids_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index e5b76fc379b953c8befb0cf72e15f13abfaf8e52..e3b0f7e42893c25d6b1142c8aae4417d551825dd 100644 (file)
@@ -92,22 +92,150 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # ifndef IN_MPERS
 
-const struct xlat routing_types[] = {
- XLAT(RTN_UNSPEC),
- XLAT(RTN_UNICAST),
- XLAT(RTN_LOCAL),
- XLAT(RTN_BROADCAST),
- XLAT(RTN_ANYCAST),
- XLAT(RTN_MULTICAST),
- XLAT(RTN_BLACKHOLE),
- XLAT(RTN_UNREACHABLE),
- XLAT(RTN_PROHIBIT),
- XLAT(RTN_THROW),
- XLAT(RTN_NAT),
- XLAT(RTN_XRESOLVE),
- XLAT_END
+static const struct xlat_data routing_types_xdata[] = {
+ [RTN_UNSPEC] = XLAT(RTN_UNSPEC),
+ #define XLAT_VAL_0 ((unsigned) (RTN_UNSPEC))
+ #define XLAT_STR_0 STRINGIFY(RTN_UNSPEC)
+ [RTN_UNICAST] = XLAT(RTN_UNICAST),
+ #define XLAT_VAL_1 ((unsigned) (RTN_UNICAST))
+ #define XLAT_STR_1 STRINGIFY(RTN_UNICAST)
+ [RTN_LOCAL] = XLAT(RTN_LOCAL),
+ #define XLAT_VAL_2 ((unsigned) (RTN_LOCAL))
+ #define XLAT_STR_2 STRINGIFY(RTN_LOCAL)
+ [RTN_BROADCAST] = XLAT(RTN_BROADCAST),
+ #define XLAT_VAL_3 ((unsigned) (RTN_BROADCAST))
+ #define XLAT_STR_3 STRINGIFY(RTN_BROADCAST)
+ [RTN_ANYCAST] = XLAT(RTN_ANYCAST),
+ #define XLAT_VAL_4 ((unsigned) (RTN_ANYCAST))
+ #define XLAT_STR_4 STRINGIFY(RTN_ANYCAST)
+ [RTN_MULTICAST] = XLAT(RTN_MULTICAST),
+ #define XLAT_VAL_5 ((unsigned) (RTN_MULTICAST))
+ #define XLAT_STR_5 STRINGIFY(RTN_MULTICAST)
+ [RTN_BLACKHOLE] = XLAT(RTN_BLACKHOLE),
+ #define XLAT_VAL_6 ((unsigned) (RTN_BLACKHOLE))
+ #define XLAT_STR_6 STRINGIFY(RTN_BLACKHOLE)
+ [RTN_UNREACHABLE] = XLAT(RTN_UNREACHABLE),
+ #define XLAT_VAL_7 ((unsigned) (RTN_UNREACHABLE))
+ #define XLAT_STR_7 STRINGIFY(RTN_UNREACHABLE)
+ [RTN_PROHIBIT] = XLAT(RTN_PROHIBIT),
+ #define XLAT_VAL_8 ((unsigned) (RTN_PROHIBIT))
+ #define XLAT_STR_8 STRINGIFY(RTN_PROHIBIT)
+ [RTN_THROW] = XLAT(RTN_THROW),
+ #define XLAT_VAL_9 ((unsigned) (RTN_THROW))
+ #define XLAT_STR_9 STRINGIFY(RTN_THROW)
+ [RTN_NAT] = XLAT(RTN_NAT),
+ #define XLAT_VAL_10 ((unsigned) (RTN_NAT))
+ #define XLAT_STR_10 STRINGIFY(RTN_NAT)
+ [RTN_XRESOLVE] = XLAT(RTN_XRESOLVE),
+ #define XLAT_VAL_11 ((unsigned) (RTN_XRESOLVE))
+ #define XLAT_STR_11 STRINGIFY(RTN_XRESOLVE)
 };
+const struct xlat routing_types[1] = { {
+ .data = routing_types_xdata,
+ .size = ARRAY_SIZE(routing_types_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index f7079d4e340da69437f2bf31f23ba9e3ee1cc74c..e9656a7d125bbdc5598bab03f0be7ab3479a9041 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 RTN_UNSPEC     0
 RTN_UNICAST    1
 RTN_LOCAL      2
diff --git a/xlat/rtc_ioctl_cmds.h b/xlat/rtc_ioctl_cmds.h
new file mode 100644 (file)
index 0000000..a95a0d6
--- /dev/null
@@ -0,0 +1,360 @@
+/* Generated by ./xlat/gen.sh from ./xlat/rtc_ioctl_cmds.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(RTC_AIE_ON) || (defined(HAVE_DECL_RTC_AIE_ON) && HAVE_DECL_RTC_AIE_ON)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((RTC_AIE_ON) == (_IO ('p', 0x01)), "RTC_AIE_ON != _IO ('p', 0x01)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define RTC_AIE_ON _IO ('p', 0x01)
+#endif
+#if defined(RTC_AIE_OFF) || (defined(HAVE_DECL_RTC_AIE_OFF) && HAVE_DECL_RTC_AIE_OFF)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((RTC_AIE_OFF) == (_IO ('p', 0x02)), "RTC_AIE_OFF != _IO ('p', 0x02)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define RTC_AIE_OFF _IO ('p', 0x02)
+#endif
+#if defined(RTC_UIE_ON) || (defined(HAVE_DECL_RTC_UIE_ON) && HAVE_DECL_RTC_UIE_ON)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((RTC_UIE_ON) == (_IO ('p', 0x03)), "RTC_UIE_ON != _IO ('p', 0x03)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define RTC_UIE_ON _IO ('p', 0x03)
+#endif
+#if defined(RTC_UIE_OFF) || (defined(HAVE_DECL_RTC_UIE_OFF) && HAVE_DECL_RTC_UIE_OFF)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((RTC_UIE_OFF) == (_IO ('p', 0x04)), "RTC_UIE_OFF != _IO ('p', 0x04)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define RTC_UIE_OFF _IO ('p', 0x04)
+#endif
+#if defined(RTC_PIE_ON) || (defined(HAVE_DECL_RTC_PIE_ON) && HAVE_DECL_RTC_PIE_ON)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((RTC_PIE_ON) == (_IO ('p', 0x05)), "RTC_PIE_ON != _IO ('p', 0x05)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define RTC_PIE_ON _IO ('p', 0x05)
+#endif
+#if defined(RTC_PIE_OFF) || (defined(HAVE_DECL_RTC_PIE_OFF) && HAVE_DECL_RTC_PIE_OFF)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((RTC_PIE_OFF) == (_IO ('p', 0x06)), "RTC_PIE_OFF != _IO ('p', 0x06)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define RTC_PIE_OFF _IO ('p', 0x06)
+#endif
+#if defined(RTC_WIE_ON) || (defined(HAVE_DECL_RTC_WIE_ON) && HAVE_DECL_RTC_WIE_ON)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((RTC_WIE_ON) == (_IO ('p', 0x0f)), "RTC_WIE_ON != _IO ('p', 0x0f)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define RTC_WIE_ON _IO ('p', 0x0f)
+#endif
+#if defined(RTC_WIE_OFF) || (defined(HAVE_DECL_RTC_WIE_OFF) && HAVE_DECL_RTC_WIE_OFF)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((RTC_WIE_OFF) == (_IO ('p', 0x10)), "RTC_WIE_OFF != _IO ('p', 0x10)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define RTC_WIE_OFF _IO ('p', 0x10)
+#endif
+#if defined(RTC_ALM_SET) || (defined(HAVE_DECL_RTC_ALM_SET) && HAVE_DECL_RTC_ALM_SET)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((RTC_ALM_SET) == (_IOW('p', 0x07, struct rtc_time)), "RTC_ALM_SET != _IOW('p', 0x07, struct rtc_time)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define RTC_ALM_SET _IOW('p', 0x07, struct rtc_time)
+#endif
+#if defined(RTC_ALM_READ) || (defined(HAVE_DECL_RTC_ALM_READ) && HAVE_DECL_RTC_ALM_READ)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((RTC_ALM_READ) == (_IOR('p', 0x08, struct rtc_time)), "RTC_ALM_READ != _IOR('p', 0x08, struct rtc_time)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define RTC_ALM_READ _IOR('p', 0x08, struct rtc_time)
+#endif
+#if defined(RTC_RD_TIME) || (defined(HAVE_DECL_RTC_RD_TIME) && HAVE_DECL_RTC_RD_TIME)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((RTC_RD_TIME) == (_IOR('p', 0x09, struct rtc_time)), "RTC_RD_TIME != _IOR('p', 0x09, struct rtc_time)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define RTC_RD_TIME _IOR('p', 0x09, struct rtc_time)
+#endif
+#if defined(RTC_SET_TIME) || (defined(HAVE_DECL_RTC_SET_TIME) && HAVE_DECL_RTC_SET_TIME)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((RTC_SET_TIME) == (_IOW('p', 0x0a, struct rtc_time)), "RTC_SET_TIME != _IOW('p', 0x0a, struct rtc_time)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define RTC_SET_TIME _IOW('p', 0x0a, struct rtc_time)
+#endif
+#if defined(RTC_WKALM_SET) || (defined(HAVE_DECL_RTC_WKALM_SET) && HAVE_DECL_RTC_WKALM_SET)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((RTC_WKALM_SET) == (_IOW('p', 0x0f, struct rtc_wkalrm)), "RTC_WKALM_SET != _IOW('p', 0x0f, struct rtc_wkalrm)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define RTC_WKALM_SET _IOW('p', 0x0f, struct rtc_wkalrm)
+#endif
+#if defined(RTC_WKALM_RD) || (defined(HAVE_DECL_RTC_WKALM_RD) && HAVE_DECL_RTC_WKALM_RD)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((RTC_WKALM_RD) == (_IOR('p', 0x10, struct rtc_wkalrm)), "RTC_WKALM_RD != _IOR('p', 0x10, struct rtc_wkalrm)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define RTC_WKALM_RD _IOR('p', 0x10, struct rtc_wkalrm)
+#endif
+#if defined(RTC_PLL_GET) || (defined(HAVE_DECL_RTC_PLL_GET) && HAVE_DECL_RTC_PLL_GET)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((RTC_PLL_GET) == (_IOR('p', 0x11, struct_rtc_pll_info)), "RTC_PLL_GET != _IOR('p', 0x11, struct_rtc_pll_info)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define RTC_PLL_GET _IOR('p', 0x11, struct_rtc_pll_info)
+#endif
+#if defined(RTC_PLL_SET) || (defined(HAVE_DECL_RTC_PLL_SET) && HAVE_DECL_RTC_PLL_SET)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((RTC_PLL_SET) == (_IOW('p', 0x12, struct_rtc_pll_info)), "RTC_PLL_SET != _IOW('p', 0x12, struct_rtc_pll_info)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define RTC_PLL_SET _IOW('p', 0x12, struct_rtc_pll_info)
+#endif
+#if defined(RTC_VL_READ) || (defined(HAVE_DECL_RTC_VL_READ) && HAVE_DECL_RTC_VL_READ)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((RTC_VL_READ) == (_IOR('p', 0x13, unsigned int)), "RTC_VL_READ != _IOR('p', 0x13, unsigned int)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define RTC_VL_READ _IOR('p', 0x13, unsigned int)
+#endif
+#if defined(RTC_VL_CLR) || (defined(HAVE_DECL_RTC_VL_CLR) && HAVE_DECL_RTC_VL_CLR)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((RTC_VL_CLR) == (_IO ('p', 0x14)), "RTC_VL_CLR != _IO ('p', 0x14)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define RTC_VL_CLR _IO ('p', 0x14)
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+extern const struct xlat rtc_ioctl_cmds[];
+
+# else
+
+static const struct xlat_data rtc_ioctl_cmds_xdata[] = {
+ XLAT(RTC_AIE_ON),
+ #define XLAT_VAL_0 ((unsigned) (RTC_AIE_ON))
+ #define XLAT_STR_0 STRINGIFY(RTC_AIE_ON)
+ XLAT(RTC_AIE_OFF),
+ #define XLAT_VAL_1 ((unsigned) (RTC_AIE_OFF))
+ #define XLAT_STR_1 STRINGIFY(RTC_AIE_OFF)
+ XLAT(RTC_UIE_ON),
+ #define XLAT_VAL_2 ((unsigned) (RTC_UIE_ON))
+ #define XLAT_STR_2 STRINGIFY(RTC_UIE_ON)
+ XLAT(RTC_UIE_OFF),
+ #define XLAT_VAL_3 ((unsigned) (RTC_UIE_OFF))
+ #define XLAT_STR_3 STRINGIFY(RTC_UIE_OFF)
+ XLAT(RTC_PIE_ON),
+ #define XLAT_VAL_4 ((unsigned) (RTC_PIE_ON))
+ #define XLAT_STR_4 STRINGIFY(RTC_PIE_ON)
+ XLAT(RTC_PIE_OFF),
+ #define XLAT_VAL_5 ((unsigned) (RTC_PIE_OFF))
+ #define XLAT_STR_5 STRINGIFY(RTC_PIE_OFF)
+ XLAT(RTC_WIE_ON),
+ #define XLAT_VAL_6 ((unsigned) (RTC_WIE_ON))
+ #define XLAT_STR_6 STRINGIFY(RTC_WIE_ON)
+ XLAT(RTC_WIE_OFF),
+ #define XLAT_VAL_7 ((unsigned) (RTC_WIE_OFF))
+ #define XLAT_STR_7 STRINGIFY(RTC_WIE_OFF)
+ XLAT(RTC_ALM_SET),
+ #define XLAT_VAL_8 ((unsigned) (RTC_ALM_SET))
+ #define XLAT_STR_8 STRINGIFY(RTC_ALM_SET)
+ XLAT(RTC_ALM_READ),
+ #define XLAT_VAL_9 ((unsigned) (RTC_ALM_READ))
+ #define XLAT_STR_9 STRINGIFY(RTC_ALM_READ)
+ XLAT(RTC_RD_TIME),
+ #define XLAT_VAL_10 ((unsigned) (RTC_RD_TIME))
+ #define XLAT_STR_10 STRINGIFY(RTC_RD_TIME)
+ XLAT(RTC_SET_TIME),
+ #define XLAT_VAL_11 ((unsigned) (RTC_SET_TIME))
+ #define XLAT_STR_11 STRINGIFY(RTC_SET_TIME)
+
+
+
+
+ XLAT(RTC_WKALM_SET),
+ #define XLAT_VAL_12 ((unsigned) (RTC_WKALM_SET))
+ #define XLAT_STR_12 STRINGIFY(RTC_WKALM_SET)
+ XLAT(RTC_WKALM_RD),
+ #define XLAT_VAL_13 ((unsigned) (RTC_WKALM_RD))
+ #define XLAT_STR_13 STRINGIFY(RTC_WKALM_RD)
+ XLAT(RTC_PLL_GET),
+ #define XLAT_VAL_14 ((unsigned) (RTC_PLL_GET))
+ #define XLAT_STR_14 STRINGIFY(RTC_PLL_GET)
+ XLAT(RTC_PLL_SET),
+ #define XLAT_VAL_15 ((unsigned) (RTC_PLL_SET))
+ #define XLAT_STR_15 STRINGIFY(RTC_PLL_SET)
+ XLAT(RTC_VL_READ),
+ #define XLAT_VAL_16 ((unsigned) (RTC_VL_READ))
+ #define XLAT_STR_16 STRINGIFY(RTC_VL_READ)
+ XLAT(RTC_VL_CLR),
+ #define XLAT_VAL_17 ((unsigned) (RTC_VL_CLR))
+ #define XLAT_STR_17 STRINGIFY(RTC_VL_CLR)
+};
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat rtc_ioctl_cmds[1] = { {
+ .data = rtc_ioctl_cmds_xdata,
+ .size = ARRAY_SIZE(rtc_ioctl_cmds_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/rtc_ioctl_cmds.in b/xlat/rtc_ioctl_cmds.in
new file mode 100644 (file)
index 0000000..cc78198
--- /dev/null
@@ -0,0 +1,22 @@
+RTC_AIE_ON     _IO ('p', 0x01)
+RTC_AIE_OFF    _IO ('p', 0x02)
+RTC_UIE_ON     _IO ('p', 0x03)
+RTC_UIE_OFF    _IO ('p', 0x04)
+RTC_PIE_ON     _IO ('p', 0x05)
+RTC_PIE_OFF    _IO ('p', 0x06)
+RTC_WIE_ON     _IO ('p', 0x0f)
+RTC_WIE_OFF    _IO ('p', 0x10)
+RTC_ALM_SET    _IOW('p', 0x07, struct rtc_time)
+RTC_ALM_READ   _IOR('p', 0x08, struct rtc_time)
+RTC_RD_TIME    _IOR('p', 0x09, struct rtc_time)
+RTC_SET_TIME   _IOW('p', 0x0a, struct rtc_time)
+/* RTC_IRQP_READ       _IOR('p', 0x0b, unsigned long) - mpers-dependent */
+/* RTC_IRQP_SET        _IOW('p', 0x0c, unsigned long) - mpers-dependent */
+/* RTC_EPOCH_READ      _IOR('p', 0x0d, unsigned long) - mpers-dependent */
+/* RTC_EPOCH_SET       _IOW('p', 0x0e, unsigned long) - mpers-dependent */
+RTC_WKALM_SET  _IOW('p', 0x0f, struct rtc_wkalrm)
+RTC_WKALM_RD   _IOR('p', 0x10, struct rtc_wkalrm)
+RTC_PLL_GET    _IOR('p', 0x11, struct_rtc_pll_info)
+RTC_PLL_SET    _IOW('p', 0x12, struct_rtc_pll_info)
+RTC_VL_READ    _IOR('p', 0x13, unsigned int)
+RTC_VL_CLR     _IO ('p', 0x14)
diff --git a/xlat/rtc_vl_flags.h b/xlat/rtc_vl_flags.h
new file mode 100644 (file)
index 0000000..83b6a2a
--- /dev/null
@@ -0,0 +1,122 @@
+/* Generated by ./xlat/gen.sh from ./xlat/rtc_vl_flags.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(RTC_VL_DATA_INVALID) || (defined(HAVE_DECL_RTC_VL_DATA_INVALID) && HAVE_DECL_RTC_VL_DATA_INVALID)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((RTC_VL_DATA_INVALID) == ((1 << 0)), "RTC_VL_DATA_INVALID != (1 << 0)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define RTC_VL_DATA_INVALID (1 << 0)
+#endif
+#if defined(RTC_VL_BACKUP_LOW) || (defined(HAVE_DECL_RTC_VL_BACKUP_LOW) && HAVE_DECL_RTC_VL_BACKUP_LOW)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((RTC_VL_BACKUP_LOW) == ((1 << 1)), "RTC_VL_BACKUP_LOW != (1 << 1)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define RTC_VL_BACKUP_LOW (1 << 1)
+#endif
+#if defined(RTC_VL_BACKUP_EMPTY) || (defined(HAVE_DECL_RTC_VL_BACKUP_EMPTY) && HAVE_DECL_RTC_VL_BACKUP_EMPTY)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((RTC_VL_BACKUP_EMPTY) == ((1 << 2)), "RTC_VL_BACKUP_EMPTY != (1 << 2)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define RTC_VL_BACKUP_EMPTY (1 << 2)
+#endif
+#if defined(RTC_VL_ACCURACY_LOW) || (defined(HAVE_DECL_RTC_VL_ACCURACY_LOW) && HAVE_DECL_RTC_VL_ACCURACY_LOW)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((RTC_VL_ACCURACY_LOW) == ((1 << 3)), "RTC_VL_ACCURACY_LOW != (1 << 3)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define RTC_VL_ACCURACY_LOW (1 << 3)
+#endif
+#if defined(RTC_VL_BACKUP_SWITCH) || (defined(HAVE_DECL_RTC_VL_BACKUP_SWITCH) && HAVE_DECL_RTC_VL_BACKUP_SWITCH)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((RTC_VL_BACKUP_SWITCH) == ((1 << 4)), "RTC_VL_BACKUP_SWITCH != (1 << 4)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define RTC_VL_BACKUP_SWITCH (1 << 4)
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+extern const struct xlat rtc_vl_flags[];
+
+# else
+
+static const struct xlat_data rtc_vl_flags_xdata[] = {
+ XLAT(RTC_VL_DATA_INVALID),
+ #define XLAT_VAL_0 ((unsigned) (RTC_VL_DATA_INVALID))
+ #define XLAT_STR_0 STRINGIFY(RTC_VL_DATA_INVALID)
+ XLAT(RTC_VL_BACKUP_LOW),
+ #define XLAT_VAL_1 ((unsigned) (RTC_VL_BACKUP_LOW))
+ #define XLAT_STR_1 STRINGIFY(RTC_VL_BACKUP_LOW)
+ XLAT(RTC_VL_BACKUP_EMPTY),
+ #define XLAT_VAL_2 ((unsigned) (RTC_VL_BACKUP_EMPTY))
+ #define XLAT_STR_2 STRINGIFY(RTC_VL_BACKUP_EMPTY)
+ XLAT(RTC_VL_ACCURACY_LOW),
+ #define XLAT_VAL_3 ((unsigned) (RTC_VL_ACCURACY_LOW))
+ #define XLAT_STR_3 STRINGIFY(RTC_VL_ACCURACY_LOW)
+ XLAT(RTC_VL_BACKUP_SWITCH),
+ #define XLAT_VAL_4 ((unsigned) (RTC_VL_BACKUP_SWITCH))
+ #define XLAT_STR_4 STRINGIFY(RTC_VL_BACKUP_SWITCH)
+};
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat rtc_vl_flags[1] = { {
+ .data = rtc_vl_flags_xdata,
+ .size = ARRAY_SIZE(rtc_vl_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/rtc_vl_flags.in b/xlat/rtc_vl_flags.in
new file mode 100644 (file)
index 0000000..b826182
--- /dev/null
@@ -0,0 +1,5 @@
+RTC_VL_DATA_INVALID    (1 << 0)
+RTC_VL_BACKUP_LOW      (1 << 1)
+RTC_VL_BACKUP_EMPTY    (1 << 2)
+RTC_VL_ACCURACY_LOW    (1 << 3)
+RTC_VL_BACKUP_SWITCH   (1 << 4)
index 3e58ba237486fdb476c59d9d11c17a02ac7b5908..c31d1b71660d5c79fbbcc1fa7cd6bc2838b1539d 100644 (file)
@@ -89,22 +89,140 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat rtnl_addr_attrs[] = {
- XLAT(IFA_UNSPEC),
- XLAT(IFA_ADDRESS),
- XLAT(IFA_LOCAL),
- XLAT(IFA_LABEL),
- XLAT(IFA_BROADCAST),
- XLAT(IFA_ANYCAST),
- XLAT(IFA_CACHEINFO),
- XLAT(IFA_MULTICAST),
- XLAT(IFA_FLAGS),
- XLAT(IFA_RT_PRIORITY),
- XLAT(IFA_TARGET_NETNSID),
- XLAT_END
+static const struct xlat_data rtnl_addr_attrs_xdata[] = {
+ [IFA_UNSPEC] = XLAT(IFA_UNSPEC),
+ #define XLAT_VAL_0 ((unsigned) (IFA_UNSPEC))
+ #define XLAT_STR_0 STRINGIFY(IFA_UNSPEC)
+ [IFA_ADDRESS] = XLAT(IFA_ADDRESS),
+ #define XLAT_VAL_1 ((unsigned) (IFA_ADDRESS))
+ #define XLAT_STR_1 STRINGIFY(IFA_ADDRESS)
+ [IFA_LOCAL] = XLAT(IFA_LOCAL),
+ #define XLAT_VAL_2 ((unsigned) (IFA_LOCAL))
+ #define XLAT_STR_2 STRINGIFY(IFA_LOCAL)
+ [IFA_LABEL] = XLAT(IFA_LABEL),
+ #define XLAT_VAL_3 ((unsigned) (IFA_LABEL))
+ #define XLAT_STR_3 STRINGIFY(IFA_LABEL)
+ [IFA_BROADCAST] = XLAT(IFA_BROADCAST),
+ #define XLAT_VAL_4 ((unsigned) (IFA_BROADCAST))
+ #define XLAT_STR_4 STRINGIFY(IFA_BROADCAST)
+ [IFA_ANYCAST] = XLAT(IFA_ANYCAST),
+ #define XLAT_VAL_5 ((unsigned) (IFA_ANYCAST))
+ #define XLAT_STR_5 STRINGIFY(IFA_ANYCAST)
+ [IFA_CACHEINFO] = XLAT(IFA_CACHEINFO),
+ #define XLAT_VAL_6 ((unsigned) (IFA_CACHEINFO))
+ #define XLAT_STR_6 STRINGIFY(IFA_CACHEINFO)
+ [IFA_MULTICAST] = XLAT(IFA_MULTICAST),
+ #define XLAT_VAL_7 ((unsigned) (IFA_MULTICAST))
+ #define XLAT_STR_7 STRINGIFY(IFA_MULTICAST)
+ [IFA_FLAGS] = XLAT(IFA_FLAGS),
+ #define XLAT_VAL_8 ((unsigned) (IFA_FLAGS))
+ #define XLAT_STR_8 STRINGIFY(IFA_FLAGS)
+ [IFA_RT_PRIORITY] = XLAT(IFA_RT_PRIORITY),
+ #define XLAT_VAL_9 ((unsigned) (IFA_RT_PRIORITY))
+ #define XLAT_STR_9 STRINGIFY(IFA_RT_PRIORITY)
+ [IFA_TARGET_NETNSID] = XLAT(IFA_TARGET_NETNSID),
+ #define XLAT_VAL_10 ((unsigned) (IFA_TARGET_NETNSID))
+ #define XLAT_STR_10 STRINGIFY(IFA_TARGET_NETNSID)
 };
+static
+const struct xlat rtnl_addr_attrs[1] = { {
+ .data = rtnl_addr_attrs_xdata,
+ .size = ARRAY_SIZE(rtnl_addr_attrs_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 747a1c7db20610e9ab030ef34826488afb9677c9..71a9afb4800990c908f3117a643d97615cf33a47 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 IFA_UNSPEC             0
 IFA_ADDRESS            1
 IFA_LOCAL              2
index f4b7e7f665a184a766e13adfd297778130102779..30d9509b15a631b03098b4620f6b5c8cd39de4bb 100644 (file)
@@ -26,13 +26,41 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat rtnl_addrlabel_attrs[] = {
- XLAT(IFAL_ADDRESS),
- XLAT(IFAL_LABEL),
- XLAT_END
+static const struct xlat_data rtnl_addrlabel_attrs_xdata[] = {
+ [IFAL_ADDRESS] = XLAT(IFAL_ADDRESS),
+ #define XLAT_VAL_0 ((unsigned) (IFAL_ADDRESS))
+ #define XLAT_STR_0 STRINGIFY(IFAL_ADDRESS)
+ [IFAL_LABEL] = XLAT(IFAL_LABEL),
+ #define XLAT_VAL_1 ((unsigned) (IFAL_LABEL))
+ #define XLAT_STR_1 STRINGIFY(IFAL_LABEL)
 };
+static
+const struct xlat rtnl_addrlabel_attrs[1] = { {
+ .data = rtnl_addrlabel_attrs_xdata,
+ .size = ARRAY_SIZE(rtnl_addrlabel_attrs_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 0dc464d6da3088afd6fa2b118fad141a957cb231..bae0b60751eedbe4c11d66bec3f6c64a2b08e7eb 100644 (file)
@@ -1,2 +1,3 @@
+#value_indexed
 IFAL_ADDRESS           1
 IFAL_LABEL             2
index 9f2b6751e94e255c3c68e66f3118f62b6d754aa5..3a1f3bf8c9df73e36d4773e891851a1fc0e0a861 100644 (file)
@@ -131,28 +131,206 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat rtnl_dcb_attrs[] = {
- XLAT(DCB_ATTR_UNDEFINED),
- XLAT(DCB_ATTR_IFNAME),
- XLAT(DCB_ATTR_STATE),
- XLAT(DCB_ATTR_PFC_STATE),
- XLAT(DCB_ATTR_PFC_CFG),
- XLAT(DCB_ATTR_NUM_TC),
- XLAT(DCB_ATTR_PG_CFG),
- XLAT(DCB_ATTR_SET_ALL),
- XLAT(DCB_ATTR_PERM_HWADDR),
- XLAT(DCB_ATTR_CAP),
- XLAT(DCB_ATTR_NUMTCS),
- XLAT(DCB_ATTR_BCN),
- XLAT(DCB_ATTR_APP),
- XLAT(DCB_ATTR_IEEE),
- XLAT(DCB_ATTR_DCBX),
- XLAT(DCB_ATTR_FEATCFG),
- XLAT(DCB_ATTR_CEE),
- XLAT_END
+static const struct xlat_data rtnl_dcb_attrs_xdata[] = {
+ [DCB_ATTR_UNDEFINED] = XLAT(DCB_ATTR_UNDEFINED),
+ #define XLAT_VAL_0 ((unsigned) (DCB_ATTR_UNDEFINED))
+ #define XLAT_STR_0 STRINGIFY(DCB_ATTR_UNDEFINED)
+ [DCB_ATTR_IFNAME] = XLAT(DCB_ATTR_IFNAME),
+ #define XLAT_VAL_1 ((unsigned) (DCB_ATTR_IFNAME))
+ #define XLAT_STR_1 STRINGIFY(DCB_ATTR_IFNAME)
+ [DCB_ATTR_STATE] = XLAT(DCB_ATTR_STATE),
+ #define XLAT_VAL_2 ((unsigned) (DCB_ATTR_STATE))
+ #define XLAT_STR_2 STRINGIFY(DCB_ATTR_STATE)
+ [DCB_ATTR_PFC_STATE] = XLAT(DCB_ATTR_PFC_STATE),
+ #define XLAT_VAL_3 ((unsigned) (DCB_ATTR_PFC_STATE))
+ #define XLAT_STR_3 STRINGIFY(DCB_ATTR_PFC_STATE)
+ [DCB_ATTR_PFC_CFG] = XLAT(DCB_ATTR_PFC_CFG),
+ #define XLAT_VAL_4 ((unsigned) (DCB_ATTR_PFC_CFG))
+ #define XLAT_STR_4 STRINGIFY(DCB_ATTR_PFC_CFG)
+ [DCB_ATTR_NUM_TC] = XLAT(DCB_ATTR_NUM_TC),
+ #define XLAT_VAL_5 ((unsigned) (DCB_ATTR_NUM_TC))
+ #define XLAT_STR_5 STRINGIFY(DCB_ATTR_NUM_TC)
+ [DCB_ATTR_PG_CFG] = XLAT(DCB_ATTR_PG_CFG),
+ #define XLAT_VAL_6 ((unsigned) (DCB_ATTR_PG_CFG))
+ #define XLAT_STR_6 STRINGIFY(DCB_ATTR_PG_CFG)
+ [DCB_ATTR_SET_ALL] = XLAT(DCB_ATTR_SET_ALL),
+ #define XLAT_VAL_7 ((unsigned) (DCB_ATTR_SET_ALL))
+ #define XLAT_STR_7 STRINGIFY(DCB_ATTR_SET_ALL)
+ [DCB_ATTR_PERM_HWADDR] = XLAT(DCB_ATTR_PERM_HWADDR),
+ #define XLAT_VAL_8 ((unsigned) (DCB_ATTR_PERM_HWADDR))
+ #define XLAT_STR_8 STRINGIFY(DCB_ATTR_PERM_HWADDR)
+ [DCB_ATTR_CAP] = XLAT(DCB_ATTR_CAP),
+ #define XLAT_VAL_9 ((unsigned) (DCB_ATTR_CAP))
+ #define XLAT_STR_9 STRINGIFY(DCB_ATTR_CAP)
+ [DCB_ATTR_NUMTCS] = XLAT(DCB_ATTR_NUMTCS),
+ #define XLAT_VAL_10 ((unsigned) (DCB_ATTR_NUMTCS))
+ #define XLAT_STR_10 STRINGIFY(DCB_ATTR_NUMTCS)
+ [DCB_ATTR_BCN] = XLAT(DCB_ATTR_BCN),
+ #define XLAT_VAL_11 ((unsigned) (DCB_ATTR_BCN))
+ #define XLAT_STR_11 STRINGIFY(DCB_ATTR_BCN)
+ [DCB_ATTR_APP] = XLAT(DCB_ATTR_APP),
+ #define XLAT_VAL_12 ((unsigned) (DCB_ATTR_APP))
+ #define XLAT_STR_12 STRINGIFY(DCB_ATTR_APP)
+ [DCB_ATTR_IEEE] = XLAT(DCB_ATTR_IEEE),
+ #define XLAT_VAL_13 ((unsigned) (DCB_ATTR_IEEE))
+ #define XLAT_STR_13 STRINGIFY(DCB_ATTR_IEEE)
+ [DCB_ATTR_DCBX] = XLAT(DCB_ATTR_DCBX),
+ #define XLAT_VAL_14 ((unsigned) (DCB_ATTR_DCBX))
+ #define XLAT_STR_14 STRINGIFY(DCB_ATTR_DCBX)
+ [DCB_ATTR_FEATCFG] = XLAT(DCB_ATTR_FEATCFG),
+ #define XLAT_VAL_15 ((unsigned) (DCB_ATTR_FEATCFG))
+ #define XLAT_STR_15 STRINGIFY(DCB_ATTR_FEATCFG)
+ [DCB_ATTR_CEE] = XLAT(DCB_ATTR_CEE),
+ #define XLAT_VAL_16 ((unsigned) (DCB_ATTR_CEE))
+ #define XLAT_STR_16 STRINGIFY(DCB_ATTR_CEE)
 };
+static
+const struct xlat rtnl_dcb_attrs[1] = { {
+ .data = rtnl_dcb_attrs_xdata,
+ .size = ARRAY_SIZE(rtnl_dcb_attrs_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index dd2ddf737e6ea18691823482a1f579e9ecbd885a..19cac77827548d8a0f603c903db3986af91c5d1b 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 DCB_ATTR_UNDEFINED     0
 DCB_ATTR_IFNAME                1
 DCB_ATTR_STATE         2
index 7a2e18bb77e29d270708097dddae3f09c918e3d0..c9ca06e9bf834133bc7c638e9917670ea67a1b9f 100644 (file)
@@ -75,20 +75,118 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat rtnl_ifla_af_spec_inet6_attrs[] = {
+static const struct xlat_data rtnl_ifla_af_spec_inet6_attrs_xdata[] = {
  [IFLA_INET6_UNSPEC] = XLAT(IFLA_INET6_UNSPEC),
+ #define XLAT_VAL_0 ((unsigned) (IFLA_INET6_UNSPEC))
+ #define XLAT_STR_0 STRINGIFY(IFLA_INET6_UNSPEC)
  [IFLA_INET6_FLAGS] = XLAT(IFLA_INET6_FLAGS),
+ #define XLAT_VAL_1 ((unsigned) (IFLA_INET6_FLAGS))
+ #define XLAT_STR_1 STRINGIFY(IFLA_INET6_FLAGS)
  [IFLA_INET6_CONF] = XLAT(IFLA_INET6_CONF),
+ #define XLAT_VAL_2 ((unsigned) (IFLA_INET6_CONF))
+ #define XLAT_STR_2 STRINGIFY(IFLA_INET6_CONF)
  [IFLA_INET6_STATS] = XLAT(IFLA_INET6_STATS),
+ #define XLAT_VAL_3 ((unsigned) (IFLA_INET6_STATS))
+ #define XLAT_STR_3 STRINGIFY(IFLA_INET6_STATS)
  [IFLA_INET6_MCAST] = XLAT(IFLA_INET6_MCAST),
+ #define XLAT_VAL_4 ((unsigned) (IFLA_INET6_MCAST))
+ #define XLAT_STR_4 STRINGIFY(IFLA_INET6_MCAST)
  [IFLA_INET6_CACHEINFO] = XLAT(IFLA_INET6_CACHEINFO),
+ #define XLAT_VAL_5 ((unsigned) (IFLA_INET6_CACHEINFO))
+ #define XLAT_STR_5 STRINGIFY(IFLA_INET6_CACHEINFO)
  [IFLA_INET6_ICMP6STATS] = XLAT(IFLA_INET6_ICMP6STATS),
+ #define XLAT_VAL_6 ((unsigned) (IFLA_INET6_ICMP6STATS))
+ #define XLAT_STR_6 STRINGIFY(IFLA_INET6_ICMP6STATS)
  [IFLA_INET6_TOKEN] = XLAT(IFLA_INET6_TOKEN),
+ #define XLAT_VAL_7 ((unsigned) (IFLA_INET6_TOKEN))
+ #define XLAT_STR_7 STRINGIFY(IFLA_INET6_TOKEN)
  [IFLA_INET6_ADDR_GEN_MODE] = XLAT(IFLA_INET6_ADDR_GEN_MODE),
- XLAT_END
+ #define XLAT_VAL_8 ((unsigned) (IFLA_INET6_ADDR_GEN_MODE))
+ #define XLAT_STR_8 STRINGIFY(IFLA_INET6_ADDR_GEN_MODE)
 };
+static
+const struct xlat rtnl_ifla_af_spec_inet6_attrs[1] = { {
+ .data = rtnl_ifla_af_spec_inet6_attrs_xdata,
+ .size = ARRAY_SIZE(rtnl_ifla_af_spec_inet6_attrs_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 8dd122030dd54b9ec6e32f5d02c724a5502188ad..9a69f98889c95d4a00e101d119c9d0d874b4a8fb 100644 (file)
@@ -26,13 +26,41 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat rtnl_ifla_af_spec_inet_attrs[] = {
+static const struct xlat_data rtnl_ifla_af_spec_inet_attrs_xdata[] = {
  [IFLA_INET_UNSPEC] = XLAT(IFLA_INET_UNSPEC),
+ #define XLAT_VAL_0 ((unsigned) (IFLA_INET_UNSPEC))
+ #define XLAT_STR_0 STRINGIFY(IFLA_INET_UNSPEC)
  [IFLA_INET_CONF] = XLAT(IFLA_INET_CONF),
- XLAT_END
+ #define XLAT_VAL_1 ((unsigned) (IFLA_INET_CONF))
+ #define XLAT_STR_1 STRINGIFY(IFLA_INET_CONF)
 };
+static
+const struct xlat rtnl_ifla_af_spec_inet_attrs[1] = { {
+ .data = rtnl_ifla_af_spec_inet_attrs_xdata,
+ .size = ARRAY_SIZE(rtnl_ifla_af_spec_inet_attrs_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index fdef1af358160781a81b18b728ce039675316ddd..b7c979c1484acba30b296cb4aaac626c24384d27 100644 (file)
@@ -257,46 +257,404 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat rtnl_ifla_brport_attrs[] = {
- XLAT(IFLA_BRPORT_UNSPEC),
- XLAT(IFLA_BRPORT_STATE),
- XLAT(IFLA_BRPORT_PRIORITY),
- XLAT(IFLA_BRPORT_COST),
- XLAT(IFLA_BRPORT_MODE),
- XLAT(IFLA_BRPORT_GUARD),
- XLAT(IFLA_BRPORT_PROTECT),
- XLAT(IFLA_BRPORT_FAST_LEAVE),
- XLAT(IFLA_BRPORT_LEARNING),
- XLAT(IFLA_BRPORT_UNICAST_FLOOD),
- XLAT(IFLA_BRPORT_PROXYARP),
- XLAT(IFLA_BRPORT_LEARNING_SYNC),
- XLAT(IFLA_BRPORT_PROXYARP_WIFI),
- XLAT(IFLA_BRPORT_ROOT_ID),
- XLAT(IFLA_BRPORT_BRIDGE_ID),
- XLAT(IFLA_BRPORT_DESIGNATED_PORT),
- XLAT(IFLA_BRPORT_DESIGNATED_COST),
- XLAT(IFLA_BRPORT_ID),
- XLAT(IFLA_BRPORT_NO),
- XLAT(IFLA_BRPORT_TOPOLOGY_CHANGE_ACK),
- XLAT(IFLA_BRPORT_CONFIG_PENDING),
- XLAT(IFLA_BRPORT_MESSAGE_AGE_TIMER),
- XLAT(IFLA_BRPORT_FORWARD_DELAY_TIMER),
- XLAT(IFLA_BRPORT_HOLD_TIMER),
- XLAT(IFLA_BRPORT_FLUSH),
- XLAT(IFLA_BRPORT_MULTICAST_ROUTER),
- XLAT(IFLA_BRPORT_PAD),
- XLAT(IFLA_BRPORT_MCAST_FLOOD),
- XLAT(IFLA_BRPORT_MCAST_TO_UCAST),
- XLAT(IFLA_BRPORT_VLAN_TUNNEL),
- XLAT(IFLA_BRPORT_BCAST_FLOOD),
- XLAT(IFLA_BRPORT_GROUP_FWD_MASK),
- XLAT(IFLA_BRPORT_NEIGH_SUPPRESS),
- XLAT(IFLA_BRPORT_ISOLATED),
- XLAT(IFLA_BRPORT_BACKUP_PORT),
- XLAT_END
+static const struct xlat_data rtnl_ifla_brport_attrs_xdata[] = {
+ [IFLA_BRPORT_UNSPEC] = XLAT(IFLA_BRPORT_UNSPEC),
+ #define XLAT_VAL_0 ((unsigned) (IFLA_BRPORT_UNSPEC))
+ #define XLAT_STR_0 STRINGIFY(IFLA_BRPORT_UNSPEC)
+ [IFLA_BRPORT_STATE] = XLAT(IFLA_BRPORT_STATE),
+ #define XLAT_VAL_1 ((unsigned) (IFLA_BRPORT_STATE))
+ #define XLAT_STR_1 STRINGIFY(IFLA_BRPORT_STATE)
+ [IFLA_BRPORT_PRIORITY] = XLAT(IFLA_BRPORT_PRIORITY),
+ #define XLAT_VAL_2 ((unsigned) (IFLA_BRPORT_PRIORITY))
+ #define XLAT_STR_2 STRINGIFY(IFLA_BRPORT_PRIORITY)
+ [IFLA_BRPORT_COST] = XLAT(IFLA_BRPORT_COST),
+ #define XLAT_VAL_3 ((unsigned) (IFLA_BRPORT_COST))
+ #define XLAT_STR_3 STRINGIFY(IFLA_BRPORT_COST)
+ [IFLA_BRPORT_MODE] = XLAT(IFLA_BRPORT_MODE),
+ #define XLAT_VAL_4 ((unsigned) (IFLA_BRPORT_MODE))
+ #define XLAT_STR_4 STRINGIFY(IFLA_BRPORT_MODE)
+ [IFLA_BRPORT_GUARD] = XLAT(IFLA_BRPORT_GUARD),
+ #define XLAT_VAL_5 ((unsigned) (IFLA_BRPORT_GUARD))
+ #define XLAT_STR_5 STRINGIFY(IFLA_BRPORT_GUARD)
+ [IFLA_BRPORT_PROTECT] = XLAT(IFLA_BRPORT_PROTECT),
+ #define XLAT_VAL_6 ((unsigned) (IFLA_BRPORT_PROTECT))
+ #define XLAT_STR_6 STRINGIFY(IFLA_BRPORT_PROTECT)
+ [IFLA_BRPORT_FAST_LEAVE] = XLAT(IFLA_BRPORT_FAST_LEAVE),
+ #define XLAT_VAL_7 ((unsigned) (IFLA_BRPORT_FAST_LEAVE))
+ #define XLAT_STR_7 STRINGIFY(IFLA_BRPORT_FAST_LEAVE)
+ [IFLA_BRPORT_LEARNING] = XLAT(IFLA_BRPORT_LEARNING),
+ #define XLAT_VAL_8 ((unsigned) (IFLA_BRPORT_LEARNING))
+ #define XLAT_STR_8 STRINGIFY(IFLA_BRPORT_LEARNING)
+ [IFLA_BRPORT_UNICAST_FLOOD] = XLAT(IFLA_BRPORT_UNICAST_FLOOD),
+ #define XLAT_VAL_9 ((unsigned) (IFLA_BRPORT_UNICAST_FLOOD))
+ #define XLAT_STR_9 STRINGIFY(IFLA_BRPORT_UNICAST_FLOOD)
+ [IFLA_BRPORT_PROXYARP] = XLAT(IFLA_BRPORT_PROXYARP),
+ #define XLAT_VAL_10 ((unsigned) (IFLA_BRPORT_PROXYARP))
+ #define XLAT_STR_10 STRINGIFY(IFLA_BRPORT_PROXYARP)
+ [IFLA_BRPORT_LEARNING_SYNC] = XLAT(IFLA_BRPORT_LEARNING_SYNC),
+ #define XLAT_VAL_11 ((unsigned) (IFLA_BRPORT_LEARNING_SYNC))
+ #define XLAT_STR_11 STRINGIFY(IFLA_BRPORT_LEARNING_SYNC)
+ [IFLA_BRPORT_PROXYARP_WIFI] = XLAT(IFLA_BRPORT_PROXYARP_WIFI),
+ #define XLAT_VAL_12 ((unsigned) (IFLA_BRPORT_PROXYARP_WIFI))
+ #define XLAT_STR_12 STRINGIFY(IFLA_BRPORT_PROXYARP_WIFI)
+ [IFLA_BRPORT_ROOT_ID] = XLAT(IFLA_BRPORT_ROOT_ID),
+ #define XLAT_VAL_13 ((unsigned) (IFLA_BRPORT_ROOT_ID))
+ #define XLAT_STR_13 STRINGIFY(IFLA_BRPORT_ROOT_ID)
+ [IFLA_BRPORT_BRIDGE_ID] = XLAT(IFLA_BRPORT_BRIDGE_ID),
+ #define XLAT_VAL_14 ((unsigned) (IFLA_BRPORT_BRIDGE_ID))
+ #define XLAT_STR_14 STRINGIFY(IFLA_BRPORT_BRIDGE_ID)
+ [IFLA_BRPORT_DESIGNATED_PORT] = XLAT(IFLA_BRPORT_DESIGNATED_PORT),
+ #define XLAT_VAL_15 ((unsigned) (IFLA_BRPORT_DESIGNATED_PORT))
+ #define XLAT_STR_15 STRINGIFY(IFLA_BRPORT_DESIGNATED_PORT)
+ [IFLA_BRPORT_DESIGNATED_COST] = XLAT(IFLA_BRPORT_DESIGNATED_COST),
+ #define XLAT_VAL_16 ((unsigned) (IFLA_BRPORT_DESIGNATED_COST))
+ #define XLAT_STR_16 STRINGIFY(IFLA_BRPORT_DESIGNATED_COST)
+ [IFLA_BRPORT_ID] = XLAT(IFLA_BRPORT_ID),
+ #define XLAT_VAL_17 ((unsigned) (IFLA_BRPORT_ID))
+ #define XLAT_STR_17 STRINGIFY(IFLA_BRPORT_ID)
+ [IFLA_BRPORT_NO] = XLAT(IFLA_BRPORT_NO),
+ #define XLAT_VAL_18 ((unsigned) (IFLA_BRPORT_NO))
+ #define XLAT_STR_18 STRINGIFY(IFLA_BRPORT_NO)
+ [IFLA_BRPORT_TOPOLOGY_CHANGE_ACK] = XLAT(IFLA_BRPORT_TOPOLOGY_CHANGE_ACK),
+ #define XLAT_VAL_19 ((unsigned) (IFLA_BRPORT_TOPOLOGY_CHANGE_ACK))
+ #define XLAT_STR_19 STRINGIFY(IFLA_BRPORT_TOPOLOGY_CHANGE_ACK)
+ [IFLA_BRPORT_CONFIG_PENDING] = XLAT(IFLA_BRPORT_CONFIG_PENDING),
+ #define XLAT_VAL_20 ((unsigned) (IFLA_BRPORT_CONFIG_PENDING))
+ #define XLAT_STR_20 STRINGIFY(IFLA_BRPORT_CONFIG_PENDING)
+ [IFLA_BRPORT_MESSAGE_AGE_TIMER] = XLAT(IFLA_BRPORT_MESSAGE_AGE_TIMER),
+ #define XLAT_VAL_21 ((unsigned) (IFLA_BRPORT_MESSAGE_AGE_TIMER))
+ #define XLAT_STR_21 STRINGIFY(IFLA_BRPORT_MESSAGE_AGE_TIMER)
+ [IFLA_BRPORT_FORWARD_DELAY_TIMER] = XLAT(IFLA_BRPORT_FORWARD_DELAY_TIMER),
+ #define XLAT_VAL_22 ((unsigned) (IFLA_BRPORT_FORWARD_DELAY_TIMER))
+ #define XLAT_STR_22 STRINGIFY(IFLA_BRPORT_FORWARD_DELAY_TIMER)
+ [IFLA_BRPORT_HOLD_TIMER] = XLAT(IFLA_BRPORT_HOLD_TIMER),
+ #define XLAT_VAL_23 ((unsigned) (IFLA_BRPORT_HOLD_TIMER))
+ #define XLAT_STR_23 STRINGIFY(IFLA_BRPORT_HOLD_TIMER)
+ [IFLA_BRPORT_FLUSH] = XLAT(IFLA_BRPORT_FLUSH),
+ #define XLAT_VAL_24 ((unsigned) (IFLA_BRPORT_FLUSH))
+ #define XLAT_STR_24 STRINGIFY(IFLA_BRPORT_FLUSH)
+ [IFLA_BRPORT_MULTICAST_ROUTER] = XLAT(IFLA_BRPORT_MULTICAST_ROUTER),
+ #define XLAT_VAL_25 ((unsigned) (IFLA_BRPORT_MULTICAST_ROUTER))
+ #define XLAT_STR_25 STRINGIFY(IFLA_BRPORT_MULTICAST_ROUTER)
+ [IFLA_BRPORT_PAD] = XLAT(IFLA_BRPORT_PAD),
+ #define XLAT_VAL_26 ((unsigned) (IFLA_BRPORT_PAD))
+ #define XLAT_STR_26 STRINGIFY(IFLA_BRPORT_PAD)
+ [IFLA_BRPORT_MCAST_FLOOD] = XLAT(IFLA_BRPORT_MCAST_FLOOD),
+ #define XLAT_VAL_27 ((unsigned) (IFLA_BRPORT_MCAST_FLOOD))
+ #define XLAT_STR_27 STRINGIFY(IFLA_BRPORT_MCAST_FLOOD)
+ [IFLA_BRPORT_MCAST_TO_UCAST] = XLAT(IFLA_BRPORT_MCAST_TO_UCAST),
+ #define XLAT_VAL_28 ((unsigned) (IFLA_BRPORT_MCAST_TO_UCAST))
+ #define XLAT_STR_28 STRINGIFY(IFLA_BRPORT_MCAST_TO_UCAST)
+ [IFLA_BRPORT_VLAN_TUNNEL] = XLAT(IFLA_BRPORT_VLAN_TUNNEL),
+ #define XLAT_VAL_29 ((unsigned) (IFLA_BRPORT_VLAN_TUNNEL))
+ #define XLAT_STR_29 STRINGIFY(IFLA_BRPORT_VLAN_TUNNEL)
+ [IFLA_BRPORT_BCAST_FLOOD] = XLAT(IFLA_BRPORT_BCAST_FLOOD),
+ #define XLAT_VAL_30 ((unsigned) (IFLA_BRPORT_BCAST_FLOOD))
+ #define XLAT_STR_30 STRINGIFY(IFLA_BRPORT_BCAST_FLOOD)
+ [IFLA_BRPORT_GROUP_FWD_MASK] = XLAT(IFLA_BRPORT_GROUP_FWD_MASK),
+ #define XLAT_VAL_31 ((unsigned) (IFLA_BRPORT_GROUP_FWD_MASK))
+ #define XLAT_STR_31 STRINGIFY(IFLA_BRPORT_GROUP_FWD_MASK)
+ [IFLA_BRPORT_NEIGH_SUPPRESS] = XLAT(IFLA_BRPORT_NEIGH_SUPPRESS),
+ #define XLAT_VAL_32 ((unsigned) (IFLA_BRPORT_NEIGH_SUPPRESS))
+ #define XLAT_STR_32 STRINGIFY(IFLA_BRPORT_NEIGH_SUPPRESS)
+ [IFLA_BRPORT_ISOLATED] = XLAT(IFLA_BRPORT_ISOLATED),
+ #define XLAT_VAL_33 ((unsigned) (IFLA_BRPORT_ISOLATED))
+ #define XLAT_STR_33 STRINGIFY(IFLA_BRPORT_ISOLATED)
+ [IFLA_BRPORT_BACKUP_PORT] = XLAT(IFLA_BRPORT_BACKUP_PORT),
+ #define XLAT_VAL_34 ((unsigned) (IFLA_BRPORT_BACKUP_PORT))
+ #define XLAT_STR_34 STRINGIFY(IFLA_BRPORT_BACKUP_PORT)
 };
+static
+const struct xlat rtnl_ifla_brport_attrs[1] = { {
+ .data = rtnl_ifla_brport_attrs_xdata,
+ .size = ARRAY_SIZE(rtnl_ifla_brport_attrs_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+#  ifdef XLAT_VAL_30
+  | XLAT_VAL_30
+#  endif
+#  ifdef XLAT_VAL_31
+  | XLAT_VAL_31
+#  endif
+#  ifdef XLAT_VAL_32
+  | XLAT_VAL_32
+#  endif
+#  ifdef XLAT_VAL_33
+  | XLAT_VAL_33
+#  endif
+#  ifdef XLAT_VAL_34
+  | XLAT_VAL_34
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+#  ifdef XLAT_STR_30
+  + sizeof(XLAT_STR_30)
+#  endif
+#  ifdef XLAT_STR_31
+  + sizeof(XLAT_STR_31)
+#  endif
+#  ifdef XLAT_STR_32
+  + sizeof(XLAT_STR_32)
+#  endif
+#  ifdef XLAT_STR_33
+  + sizeof(XLAT_STR_33)
+#  endif
+#  ifdef XLAT_STR_34
+  + sizeof(XLAT_STR_34)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
+#  undef XLAT_STR_30
+#  undef XLAT_VAL_30
+#  undef XLAT_STR_31
+#  undef XLAT_VAL_31
+#  undef XLAT_STR_32
+#  undef XLAT_VAL_32
+#  undef XLAT_STR_33
+#  undef XLAT_VAL_33
+#  undef XLAT_STR_34
+#  undef XLAT_VAL_34
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 701771659c5e5527de8a874d6c2c2c7fbe1adcc2..2a5150bbc09b20be5fa2adf7223fad5d8983cde3 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 IFLA_BRPORT_UNSPEC             0
 IFLA_BRPORT_STATE              1
 IFLA_BRPORT_PRIORITY           2
index 0f214d6398c1b831a54654c0f0b3b0d57c9c185f..6b0d42dd45a201e6d79ce18ac2bab95a08234f2c 100644 (file)
@@ -61,18 +61,96 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat rtnl_ifla_events[] = {
- XLAT(IFLA_EVENT_NONE),
- XLAT(IFLA_EVENT_REBOOT),
- XLAT(IFLA_EVENT_FEATURES),
- XLAT(IFLA_EVENT_BONDING_FAILOVER),
- XLAT(IFLA_EVENT_NOTIFY_PEERS),
- XLAT(IFLA_EVENT_IGMP_RESEND),
- XLAT(IFLA_EVENT_BONDING_OPTIONS),
- XLAT_END
+static const struct xlat_data rtnl_ifla_events_xdata[] = {
+ [IFLA_EVENT_NONE] = XLAT(IFLA_EVENT_NONE),
+ #define XLAT_VAL_0 ((unsigned) (IFLA_EVENT_NONE))
+ #define XLAT_STR_0 STRINGIFY(IFLA_EVENT_NONE)
+ [IFLA_EVENT_REBOOT] = XLAT(IFLA_EVENT_REBOOT),
+ #define XLAT_VAL_1 ((unsigned) (IFLA_EVENT_REBOOT))
+ #define XLAT_STR_1 STRINGIFY(IFLA_EVENT_REBOOT)
+ [IFLA_EVENT_FEATURES] = XLAT(IFLA_EVENT_FEATURES),
+ #define XLAT_VAL_2 ((unsigned) (IFLA_EVENT_FEATURES))
+ #define XLAT_STR_2 STRINGIFY(IFLA_EVENT_FEATURES)
+ [IFLA_EVENT_BONDING_FAILOVER] = XLAT(IFLA_EVENT_BONDING_FAILOVER),
+ #define XLAT_VAL_3 ((unsigned) (IFLA_EVENT_BONDING_FAILOVER))
+ #define XLAT_STR_3 STRINGIFY(IFLA_EVENT_BONDING_FAILOVER)
+ [IFLA_EVENT_NOTIFY_PEERS] = XLAT(IFLA_EVENT_NOTIFY_PEERS),
+ #define XLAT_VAL_4 ((unsigned) (IFLA_EVENT_NOTIFY_PEERS))
+ #define XLAT_STR_4 STRINGIFY(IFLA_EVENT_NOTIFY_PEERS)
+ [IFLA_EVENT_IGMP_RESEND] = XLAT(IFLA_EVENT_IGMP_RESEND),
+ #define XLAT_VAL_5 ((unsigned) (IFLA_EVENT_IGMP_RESEND))
+ #define XLAT_STR_5 STRINGIFY(IFLA_EVENT_IGMP_RESEND)
+ [IFLA_EVENT_BONDING_OPTIONS] = XLAT(IFLA_EVENT_BONDING_OPTIONS),
+ #define XLAT_VAL_6 ((unsigned) (IFLA_EVENT_BONDING_OPTIONS))
+ #define XLAT_STR_6 STRINGIFY(IFLA_EVENT_BONDING_OPTIONS)
 };
+static
+const struct xlat rtnl_ifla_events[1] = { {
+ .data = rtnl_ifla_events_xdata,
+ .size = ARRAY_SIZE(rtnl_ifla_events_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 487b6ac24e1379139cfb7305c56eb54c41593a93..ff7ca83f17aca53ebea15d83e48aef7285bc5530 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 IFLA_EVENT_NONE                        0
 IFLA_EVENT_REBOOT              1
 IFLA_EVENT_FEATURES            2
index dd3124b0e67c9c2339008dfd22d255a5f45e49cb..1d555d2f6474347bcd1e0371bf5e2f0e1ff530d1 100644 (file)
@@ -54,17 +54,85 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat rtnl_ifla_info_attrs[] = {
- XLAT(IFLA_INFO_UNSPEC),
- XLAT(IFLA_INFO_KIND),
- XLAT(IFLA_INFO_DATA),
- XLAT(IFLA_INFO_XSTATS),
- XLAT(IFLA_INFO_SLAVE_KIND),
- XLAT(IFLA_INFO_SLAVE_DATA),
- XLAT_END
+static const struct xlat_data rtnl_ifla_info_attrs_xdata[] = {
+ [IFLA_INFO_UNSPEC] = XLAT(IFLA_INFO_UNSPEC),
+ #define XLAT_VAL_0 ((unsigned) (IFLA_INFO_UNSPEC))
+ #define XLAT_STR_0 STRINGIFY(IFLA_INFO_UNSPEC)
+ [IFLA_INFO_KIND] = XLAT(IFLA_INFO_KIND),
+ #define XLAT_VAL_1 ((unsigned) (IFLA_INFO_KIND))
+ #define XLAT_STR_1 STRINGIFY(IFLA_INFO_KIND)
+ [IFLA_INFO_DATA] = XLAT(IFLA_INFO_DATA),
+ #define XLAT_VAL_2 ((unsigned) (IFLA_INFO_DATA))
+ #define XLAT_STR_2 STRINGIFY(IFLA_INFO_DATA)
+ [IFLA_INFO_XSTATS] = XLAT(IFLA_INFO_XSTATS),
+ #define XLAT_VAL_3 ((unsigned) (IFLA_INFO_XSTATS))
+ #define XLAT_STR_3 STRINGIFY(IFLA_INFO_XSTATS)
+ [IFLA_INFO_SLAVE_KIND] = XLAT(IFLA_INFO_SLAVE_KIND),
+ #define XLAT_VAL_4 ((unsigned) (IFLA_INFO_SLAVE_KIND))
+ #define XLAT_STR_4 STRINGIFY(IFLA_INFO_SLAVE_KIND)
+ [IFLA_INFO_SLAVE_DATA] = XLAT(IFLA_INFO_SLAVE_DATA),
+ #define XLAT_VAL_5 ((unsigned) (IFLA_INFO_SLAVE_DATA))
+ #define XLAT_STR_5 STRINGIFY(IFLA_INFO_SLAVE_DATA)
 };
+static
+const struct xlat rtnl_ifla_info_attrs[1] = { {
+ .data = rtnl_ifla_info_attrs_xdata,
+ .size = ARRAY_SIZE(rtnl_ifla_info_attrs_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 61201d348d9af9bc58e55be8eaa77a70cbc5cd0f..2b1445c42c167f558ad17041aa13b96b6768bf13 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 IFLA_INFO_UNSPEC       0
 IFLA_INFO_KIND         1
 IFLA_INFO_DATA         2
index a879a33f890e993c09af3ce7112b88a053c9176d..4ca7bb21af4c1ea88685fbef38bbc021003c92c5 100644 (file)
@@ -341,58 +341,536 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat rtnl_ifla_info_data_bridge_attrs[] = {
+static const struct xlat_data rtnl_ifla_info_data_bridge_attrs_xdata[] = {
  [IFLA_BR_UNSPEC] = XLAT(IFLA_BR_UNSPEC),
+ #define XLAT_VAL_0 ((unsigned) (IFLA_BR_UNSPEC))
+ #define XLAT_STR_0 STRINGIFY(IFLA_BR_UNSPEC)
  [IFLA_BR_FORWARD_DELAY] = XLAT(IFLA_BR_FORWARD_DELAY),
+ #define XLAT_VAL_1 ((unsigned) (IFLA_BR_FORWARD_DELAY))
+ #define XLAT_STR_1 STRINGIFY(IFLA_BR_FORWARD_DELAY)
  [IFLA_BR_HELLO_TIME] = XLAT(IFLA_BR_HELLO_TIME),
+ #define XLAT_VAL_2 ((unsigned) (IFLA_BR_HELLO_TIME))
+ #define XLAT_STR_2 STRINGIFY(IFLA_BR_HELLO_TIME)
  [IFLA_BR_MAX_AGE] = XLAT(IFLA_BR_MAX_AGE),
+ #define XLAT_VAL_3 ((unsigned) (IFLA_BR_MAX_AGE))
+ #define XLAT_STR_3 STRINGIFY(IFLA_BR_MAX_AGE)
  [IFLA_BR_AGEING_TIME] = XLAT(IFLA_BR_AGEING_TIME),
+ #define XLAT_VAL_4 ((unsigned) (IFLA_BR_AGEING_TIME))
+ #define XLAT_STR_4 STRINGIFY(IFLA_BR_AGEING_TIME)
  [IFLA_BR_STP_STATE] = XLAT(IFLA_BR_STP_STATE),
+ #define XLAT_VAL_5 ((unsigned) (IFLA_BR_STP_STATE))
+ #define XLAT_STR_5 STRINGIFY(IFLA_BR_STP_STATE)
  [IFLA_BR_PRIORITY] = XLAT(IFLA_BR_PRIORITY),
+ #define XLAT_VAL_6 ((unsigned) (IFLA_BR_PRIORITY))
+ #define XLAT_STR_6 STRINGIFY(IFLA_BR_PRIORITY)
  [IFLA_BR_VLAN_FILTERING] = XLAT(IFLA_BR_VLAN_FILTERING),
+ #define XLAT_VAL_7 ((unsigned) (IFLA_BR_VLAN_FILTERING))
+ #define XLAT_STR_7 STRINGIFY(IFLA_BR_VLAN_FILTERING)
  [IFLA_BR_VLAN_PROTOCOL] = XLAT(IFLA_BR_VLAN_PROTOCOL),
+ #define XLAT_VAL_8 ((unsigned) (IFLA_BR_VLAN_PROTOCOL))
+ #define XLAT_STR_8 STRINGIFY(IFLA_BR_VLAN_PROTOCOL)
  [IFLA_BR_GROUP_FWD_MASK] = XLAT(IFLA_BR_GROUP_FWD_MASK),
+ #define XLAT_VAL_9 ((unsigned) (IFLA_BR_GROUP_FWD_MASK))
+ #define XLAT_STR_9 STRINGIFY(IFLA_BR_GROUP_FWD_MASK)
  [IFLA_BR_ROOT_ID] = XLAT(IFLA_BR_ROOT_ID),
+ #define XLAT_VAL_10 ((unsigned) (IFLA_BR_ROOT_ID))
+ #define XLAT_STR_10 STRINGIFY(IFLA_BR_ROOT_ID)
  [IFLA_BR_BRIDGE_ID] = XLAT(IFLA_BR_BRIDGE_ID),
+ #define XLAT_VAL_11 ((unsigned) (IFLA_BR_BRIDGE_ID))
+ #define XLAT_STR_11 STRINGIFY(IFLA_BR_BRIDGE_ID)
  [IFLA_BR_ROOT_PORT] = XLAT(IFLA_BR_ROOT_PORT),
+ #define XLAT_VAL_12 ((unsigned) (IFLA_BR_ROOT_PORT))
+ #define XLAT_STR_12 STRINGIFY(IFLA_BR_ROOT_PORT)
  [IFLA_BR_ROOT_PATH_COST] = XLAT(IFLA_BR_ROOT_PATH_COST),
+ #define XLAT_VAL_13 ((unsigned) (IFLA_BR_ROOT_PATH_COST))
+ #define XLAT_STR_13 STRINGIFY(IFLA_BR_ROOT_PATH_COST)
  [IFLA_BR_TOPOLOGY_CHANGE] = XLAT(IFLA_BR_TOPOLOGY_CHANGE),
+ #define XLAT_VAL_14 ((unsigned) (IFLA_BR_TOPOLOGY_CHANGE))
+ #define XLAT_STR_14 STRINGIFY(IFLA_BR_TOPOLOGY_CHANGE)
  [IFLA_BR_TOPOLOGY_CHANGE_DETECTED] = XLAT(IFLA_BR_TOPOLOGY_CHANGE_DETECTED),
+ #define XLAT_VAL_15 ((unsigned) (IFLA_BR_TOPOLOGY_CHANGE_DETECTED))
+ #define XLAT_STR_15 STRINGIFY(IFLA_BR_TOPOLOGY_CHANGE_DETECTED)
  [IFLA_BR_HELLO_TIMER] = XLAT(IFLA_BR_HELLO_TIMER),
+ #define XLAT_VAL_16 ((unsigned) (IFLA_BR_HELLO_TIMER))
+ #define XLAT_STR_16 STRINGIFY(IFLA_BR_HELLO_TIMER)
  [IFLA_BR_TCN_TIMER] = XLAT(IFLA_BR_TCN_TIMER),
+ #define XLAT_VAL_17 ((unsigned) (IFLA_BR_TCN_TIMER))
+ #define XLAT_STR_17 STRINGIFY(IFLA_BR_TCN_TIMER)
  [IFLA_BR_TOPOLOGY_CHANGE_TIMER] = XLAT(IFLA_BR_TOPOLOGY_CHANGE_TIMER),
+ #define XLAT_VAL_18 ((unsigned) (IFLA_BR_TOPOLOGY_CHANGE_TIMER))
+ #define XLAT_STR_18 STRINGIFY(IFLA_BR_TOPOLOGY_CHANGE_TIMER)
  [IFLA_BR_GC_TIMER] = XLAT(IFLA_BR_GC_TIMER),
+ #define XLAT_VAL_19 ((unsigned) (IFLA_BR_GC_TIMER))
+ #define XLAT_STR_19 STRINGIFY(IFLA_BR_GC_TIMER)
  [IFLA_BR_GROUP_ADDR] = XLAT(IFLA_BR_GROUP_ADDR),
+ #define XLAT_VAL_20 ((unsigned) (IFLA_BR_GROUP_ADDR))
+ #define XLAT_STR_20 STRINGIFY(IFLA_BR_GROUP_ADDR)
  [IFLA_BR_FDB_FLUSH] = XLAT(IFLA_BR_FDB_FLUSH),
+ #define XLAT_VAL_21 ((unsigned) (IFLA_BR_FDB_FLUSH))
+ #define XLAT_STR_21 STRINGIFY(IFLA_BR_FDB_FLUSH)
  [IFLA_BR_MCAST_ROUTER] = XLAT(IFLA_BR_MCAST_ROUTER),
+ #define XLAT_VAL_22 ((unsigned) (IFLA_BR_MCAST_ROUTER))
+ #define XLAT_STR_22 STRINGIFY(IFLA_BR_MCAST_ROUTER)
  [IFLA_BR_MCAST_SNOOPING] = XLAT(IFLA_BR_MCAST_SNOOPING),
+ #define XLAT_VAL_23 ((unsigned) (IFLA_BR_MCAST_SNOOPING))
+ #define XLAT_STR_23 STRINGIFY(IFLA_BR_MCAST_SNOOPING)
  [IFLA_BR_MCAST_QUERY_USE_IFADDR] = XLAT(IFLA_BR_MCAST_QUERY_USE_IFADDR),
+ #define XLAT_VAL_24 ((unsigned) (IFLA_BR_MCAST_QUERY_USE_IFADDR))
+ #define XLAT_STR_24 STRINGIFY(IFLA_BR_MCAST_QUERY_USE_IFADDR)
  [IFLA_BR_MCAST_QUERIER] = XLAT(IFLA_BR_MCAST_QUERIER),
+ #define XLAT_VAL_25 ((unsigned) (IFLA_BR_MCAST_QUERIER))
+ #define XLAT_STR_25 STRINGIFY(IFLA_BR_MCAST_QUERIER)
  [IFLA_BR_MCAST_HASH_ELASTICITY] = XLAT(IFLA_BR_MCAST_HASH_ELASTICITY),
+ #define XLAT_VAL_26 ((unsigned) (IFLA_BR_MCAST_HASH_ELASTICITY))
+ #define XLAT_STR_26 STRINGIFY(IFLA_BR_MCAST_HASH_ELASTICITY)
  [IFLA_BR_MCAST_HASH_MAX] = XLAT(IFLA_BR_MCAST_HASH_MAX),
+ #define XLAT_VAL_27 ((unsigned) (IFLA_BR_MCAST_HASH_MAX))
+ #define XLAT_STR_27 STRINGIFY(IFLA_BR_MCAST_HASH_MAX)
  [IFLA_BR_MCAST_LAST_MEMBER_CNT] = XLAT(IFLA_BR_MCAST_LAST_MEMBER_CNT),
+ #define XLAT_VAL_28 ((unsigned) (IFLA_BR_MCAST_LAST_MEMBER_CNT))
+ #define XLAT_STR_28 STRINGIFY(IFLA_BR_MCAST_LAST_MEMBER_CNT)
  [IFLA_BR_MCAST_STARTUP_QUERY_CNT] = XLAT(IFLA_BR_MCAST_STARTUP_QUERY_CNT),
+ #define XLAT_VAL_29 ((unsigned) (IFLA_BR_MCAST_STARTUP_QUERY_CNT))
+ #define XLAT_STR_29 STRINGIFY(IFLA_BR_MCAST_STARTUP_QUERY_CNT)
  [IFLA_BR_MCAST_LAST_MEMBER_INTVL] = XLAT(IFLA_BR_MCAST_LAST_MEMBER_INTVL),
+ #define XLAT_VAL_30 ((unsigned) (IFLA_BR_MCAST_LAST_MEMBER_INTVL))
+ #define XLAT_STR_30 STRINGIFY(IFLA_BR_MCAST_LAST_MEMBER_INTVL)
  [IFLA_BR_MCAST_MEMBERSHIP_INTVL] = XLAT(IFLA_BR_MCAST_MEMBERSHIP_INTVL),
+ #define XLAT_VAL_31 ((unsigned) (IFLA_BR_MCAST_MEMBERSHIP_INTVL))
+ #define XLAT_STR_31 STRINGIFY(IFLA_BR_MCAST_MEMBERSHIP_INTVL)
  [IFLA_BR_MCAST_QUERIER_INTVL] = XLAT(IFLA_BR_MCAST_QUERIER_INTVL),
+ #define XLAT_VAL_32 ((unsigned) (IFLA_BR_MCAST_QUERIER_INTVL))
+ #define XLAT_STR_32 STRINGIFY(IFLA_BR_MCAST_QUERIER_INTVL)
  [IFLA_BR_MCAST_QUERY_INTVL] = XLAT(IFLA_BR_MCAST_QUERY_INTVL),
+ #define XLAT_VAL_33 ((unsigned) (IFLA_BR_MCAST_QUERY_INTVL))
+ #define XLAT_STR_33 STRINGIFY(IFLA_BR_MCAST_QUERY_INTVL)
  [IFLA_BR_MCAST_QUERY_RESPONSE_INTVL] = XLAT(IFLA_BR_MCAST_QUERY_RESPONSE_INTVL),
+ #define XLAT_VAL_34 ((unsigned) (IFLA_BR_MCAST_QUERY_RESPONSE_INTVL))
+ #define XLAT_STR_34 STRINGIFY(IFLA_BR_MCAST_QUERY_RESPONSE_INTVL)
  [IFLA_BR_MCAST_STARTUP_QUERY_INTVL] = XLAT(IFLA_BR_MCAST_STARTUP_QUERY_INTVL),
+ #define XLAT_VAL_35 ((unsigned) (IFLA_BR_MCAST_STARTUP_QUERY_INTVL))
+ #define XLAT_STR_35 STRINGIFY(IFLA_BR_MCAST_STARTUP_QUERY_INTVL)
  [IFLA_BR_NF_CALL_IPTABLES] = XLAT(IFLA_BR_NF_CALL_IPTABLES),
+ #define XLAT_VAL_36 ((unsigned) (IFLA_BR_NF_CALL_IPTABLES))
+ #define XLAT_STR_36 STRINGIFY(IFLA_BR_NF_CALL_IPTABLES)
  [IFLA_BR_NF_CALL_IP6TABLES] = XLAT(IFLA_BR_NF_CALL_IP6TABLES),
+ #define XLAT_VAL_37 ((unsigned) (IFLA_BR_NF_CALL_IP6TABLES))
+ #define XLAT_STR_37 STRINGIFY(IFLA_BR_NF_CALL_IP6TABLES)
  [IFLA_BR_NF_CALL_ARPTABLES] = XLAT(IFLA_BR_NF_CALL_ARPTABLES),
+ #define XLAT_VAL_38 ((unsigned) (IFLA_BR_NF_CALL_ARPTABLES))
+ #define XLAT_STR_38 STRINGIFY(IFLA_BR_NF_CALL_ARPTABLES)
  [IFLA_BR_VLAN_DEFAULT_PVID] = XLAT(IFLA_BR_VLAN_DEFAULT_PVID),
+ #define XLAT_VAL_39 ((unsigned) (IFLA_BR_VLAN_DEFAULT_PVID))
+ #define XLAT_STR_39 STRINGIFY(IFLA_BR_VLAN_DEFAULT_PVID)
  [IFLA_BR_PAD] = XLAT(IFLA_BR_PAD),
+ #define XLAT_VAL_40 ((unsigned) (IFLA_BR_PAD))
+ #define XLAT_STR_40 STRINGIFY(IFLA_BR_PAD)
  [IFLA_BR_VLAN_STATS_ENABLED] = XLAT(IFLA_BR_VLAN_STATS_ENABLED),
+ #define XLAT_VAL_41 ((unsigned) (IFLA_BR_VLAN_STATS_ENABLED))
+ #define XLAT_STR_41 STRINGIFY(IFLA_BR_VLAN_STATS_ENABLED)
  [IFLA_BR_MCAST_STATS_ENABLED] = XLAT(IFLA_BR_MCAST_STATS_ENABLED),
+ #define XLAT_VAL_42 ((unsigned) (IFLA_BR_MCAST_STATS_ENABLED))
+ #define XLAT_STR_42 STRINGIFY(IFLA_BR_MCAST_STATS_ENABLED)
  [IFLA_BR_MCAST_IGMP_VERSION] = XLAT(IFLA_BR_MCAST_IGMP_VERSION),
+ #define XLAT_VAL_43 ((unsigned) (IFLA_BR_MCAST_IGMP_VERSION))
+ #define XLAT_STR_43 STRINGIFY(IFLA_BR_MCAST_IGMP_VERSION)
  [IFLA_BR_MCAST_MLD_VERSION] = XLAT(IFLA_BR_MCAST_MLD_VERSION),
+ #define XLAT_VAL_44 ((unsigned) (IFLA_BR_MCAST_MLD_VERSION))
+ #define XLAT_STR_44 STRINGIFY(IFLA_BR_MCAST_MLD_VERSION)
  [IFLA_BR_VLAN_STATS_PER_PORT] = XLAT(IFLA_BR_VLAN_STATS_PER_PORT),
+ #define XLAT_VAL_45 ((unsigned) (IFLA_BR_VLAN_STATS_PER_PORT))
+ #define XLAT_STR_45 STRINGIFY(IFLA_BR_VLAN_STATS_PER_PORT)
  [IFLA_BR_MULTI_BOOLOPT] = XLAT(IFLA_BR_MULTI_BOOLOPT),
- XLAT_END
+ #define XLAT_VAL_46 ((unsigned) (IFLA_BR_MULTI_BOOLOPT))
+ #define XLAT_STR_46 STRINGIFY(IFLA_BR_MULTI_BOOLOPT)
 };
+static
+const struct xlat rtnl_ifla_info_data_bridge_attrs[1] = { {
+ .data = rtnl_ifla_info_data_bridge_attrs_xdata,
+ .size = ARRAY_SIZE(rtnl_ifla_info_data_bridge_attrs_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+#  ifdef XLAT_VAL_30
+  | XLAT_VAL_30
+#  endif
+#  ifdef XLAT_VAL_31
+  | XLAT_VAL_31
+#  endif
+#  ifdef XLAT_VAL_32
+  | XLAT_VAL_32
+#  endif
+#  ifdef XLAT_VAL_33
+  | XLAT_VAL_33
+#  endif
+#  ifdef XLAT_VAL_34
+  | XLAT_VAL_34
+#  endif
+#  ifdef XLAT_VAL_35
+  | XLAT_VAL_35
+#  endif
+#  ifdef XLAT_VAL_36
+  | XLAT_VAL_36
+#  endif
+#  ifdef XLAT_VAL_37
+  | XLAT_VAL_37
+#  endif
+#  ifdef XLAT_VAL_38
+  | XLAT_VAL_38
+#  endif
+#  ifdef XLAT_VAL_39
+  | XLAT_VAL_39
+#  endif
+#  ifdef XLAT_VAL_40
+  | XLAT_VAL_40
+#  endif
+#  ifdef XLAT_VAL_41
+  | XLAT_VAL_41
+#  endif
+#  ifdef XLAT_VAL_42
+  | XLAT_VAL_42
+#  endif
+#  ifdef XLAT_VAL_43
+  | XLAT_VAL_43
+#  endif
+#  ifdef XLAT_VAL_44
+  | XLAT_VAL_44
+#  endif
+#  ifdef XLAT_VAL_45
+  | XLAT_VAL_45
+#  endif
+#  ifdef XLAT_VAL_46
+  | XLAT_VAL_46
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+#  ifdef XLAT_STR_30
+  + sizeof(XLAT_STR_30)
+#  endif
+#  ifdef XLAT_STR_31
+  + sizeof(XLAT_STR_31)
+#  endif
+#  ifdef XLAT_STR_32
+  + sizeof(XLAT_STR_32)
+#  endif
+#  ifdef XLAT_STR_33
+  + sizeof(XLAT_STR_33)
+#  endif
+#  ifdef XLAT_STR_34
+  + sizeof(XLAT_STR_34)
+#  endif
+#  ifdef XLAT_STR_35
+  + sizeof(XLAT_STR_35)
+#  endif
+#  ifdef XLAT_STR_36
+  + sizeof(XLAT_STR_36)
+#  endif
+#  ifdef XLAT_STR_37
+  + sizeof(XLAT_STR_37)
+#  endif
+#  ifdef XLAT_STR_38
+  + sizeof(XLAT_STR_38)
+#  endif
+#  ifdef XLAT_STR_39
+  + sizeof(XLAT_STR_39)
+#  endif
+#  ifdef XLAT_STR_40
+  + sizeof(XLAT_STR_40)
+#  endif
+#  ifdef XLAT_STR_41
+  + sizeof(XLAT_STR_41)
+#  endif
+#  ifdef XLAT_STR_42
+  + sizeof(XLAT_STR_42)
+#  endif
+#  ifdef XLAT_STR_43
+  + sizeof(XLAT_STR_43)
+#  endif
+#  ifdef XLAT_STR_44
+  + sizeof(XLAT_STR_44)
+#  endif
+#  ifdef XLAT_STR_45
+  + sizeof(XLAT_STR_45)
+#  endif
+#  ifdef XLAT_STR_46
+  + sizeof(XLAT_STR_46)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
+#  undef XLAT_STR_30
+#  undef XLAT_VAL_30
+#  undef XLAT_STR_31
+#  undef XLAT_VAL_31
+#  undef XLAT_STR_32
+#  undef XLAT_VAL_32
+#  undef XLAT_STR_33
+#  undef XLAT_VAL_33
+#  undef XLAT_STR_34
+#  undef XLAT_VAL_34
+#  undef XLAT_STR_35
+#  undef XLAT_VAL_35
+#  undef XLAT_STR_36
+#  undef XLAT_VAL_36
+#  undef XLAT_STR_37
+#  undef XLAT_VAL_37
+#  undef XLAT_STR_38
+#  undef XLAT_VAL_38
+#  undef XLAT_STR_39
+#  undef XLAT_VAL_39
+#  undef XLAT_STR_40
+#  undef XLAT_VAL_40
+#  undef XLAT_STR_41
+#  undef XLAT_VAL_41
+#  undef XLAT_STR_42
+#  undef XLAT_VAL_42
+#  undef XLAT_STR_43
+#  undef XLAT_VAL_43
+#  undef XLAT_STR_44
+#  undef XLAT_VAL_44
+#  undef XLAT_STR_45
+#  undef XLAT_VAL_45
+#  undef XLAT_STR_46
+#  undef XLAT_VAL_46
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index ee9ad58034e1ea7bdfa466d617b664074c3c3f19..945590b75b9d839752ff57482bcccfe3be0f4acc 100644 (file)
@@ -82,21 +82,129 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat rtnl_ifla_info_data_tun_attrs[] = {
+static const struct xlat_data rtnl_ifla_info_data_tun_attrs_xdata[] = {
  [IFLA_TUN_UNSPEC] = XLAT(IFLA_TUN_UNSPEC),
+ #define XLAT_VAL_0 ((unsigned) (IFLA_TUN_UNSPEC))
+ #define XLAT_STR_0 STRINGIFY(IFLA_TUN_UNSPEC)
  [IFLA_TUN_OWNER] = XLAT(IFLA_TUN_OWNER),
+ #define XLAT_VAL_1 ((unsigned) (IFLA_TUN_OWNER))
+ #define XLAT_STR_1 STRINGIFY(IFLA_TUN_OWNER)
  [IFLA_TUN_GROUP] = XLAT(IFLA_TUN_GROUP),
+ #define XLAT_VAL_2 ((unsigned) (IFLA_TUN_GROUP))
+ #define XLAT_STR_2 STRINGIFY(IFLA_TUN_GROUP)
  [IFLA_TUN_TYPE] = XLAT(IFLA_TUN_TYPE),
+ #define XLAT_VAL_3 ((unsigned) (IFLA_TUN_TYPE))
+ #define XLAT_STR_3 STRINGIFY(IFLA_TUN_TYPE)
  [IFLA_TUN_PI] = XLAT(IFLA_TUN_PI),
+ #define XLAT_VAL_4 ((unsigned) (IFLA_TUN_PI))
+ #define XLAT_STR_4 STRINGIFY(IFLA_TUN_PI)
  [IFLA_TUN_VNET_HDR] = XLAT(IFLA_TUN_VNET_HDR),
+ #define XLAT_VAL_5 ((unsigned) (IFLA_TUN_VNET_HDR))
+ #define XLAT_STR_5 STRINGIFY(IFLA_TUN_VNET_HDR)
  [IFLA_TUN_PERSIST] = XLAT(IFLA_TUN_PERSIST),
+ #define XLAT_VAL_6 ((unsigned) (IFLA_TUN_PERSIST))
+ #define XLAT_STR_6 STRINGIFY(IFLA_TUN_PERSIST)
  [IFLA_TUN_MULTI_QUEUE] = XLAT(IFLA_TUN_MULTI_QUEUE),
+ #define XLAT_VAL_7 ((unsigned) (IFLA_TUN_MULTI_QUEUE))
+ #define XLAT_STR_7 STRINGIFY(IFLA_TUN_MULTI_QUEUE)
  [IFLA_TUN_NUM_QUEUES] = XLAT(IFLA_TUN_NUM_QUEUES),
+ #define XLAT_VAL_8 ((unsigned) (IFLA_TUN_NUM_QUEUES))
+ #define XLAT_STR_8 STRINGIFY(IFLA_TUN_NUM_QUEUES)
  [IFLA_TUN_NUM_DISABLED_QUEUES] = XLAT(IFLA_TUN_NUM_DISABLED_QUEUES),
- XLAT_END
+ #define XLAT_VAL_9 ((unsigned) (IFLA_TUN_NUM_DISABLED_QUEUES))
+ #define XLAT_STR_9 STRINGIFY(IFLA_TUN_NUM_DISABLED_QUEUES)
 };
+static
+const struct xlat rtnl_ifla_info_data_tun_attrs[1] = { {
+ .data = rtnl_ifla_info_data_tun_attrs_xdata,
+ .size = ARRAY_SIZE(rtnl_ifla_info_data_tun_attrs_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index ce6af735df683b8131d7b4cee91e0ac48af8043c..0ea1ff636e7c1913884b3412be02565e7185df7c 100644 (file)
@@ -68,19 +68,107 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat rtnl_ifla_port_attrs[] = {
- XLAT(IFLA_PORT_UNSPEC),
- XLAT(IFLA_PORT_VF),
- XLAT(IFLA_PORT_PROFILE),
- XLAT(IFLA_PORT_VSI_TYPE),
- XLAT(IFLA_PORT_INSTANCE_UUID),
- XLAT(IFLA_PORT_HOST_UUID),
- XLAT(IFLA_PORT_REQUEST),
- XLAT(IFLA_PORT_RESPONSE),
- XLAT_END
+static const struct xlat_data rtnl_ifla_port_attrs_xdata[] = {
+ [IFLA_PORT_UNSPEC] = XLAT(IFLA_PORT_UNSPEC),
+ #define XLAT_VAL_0 ((unsigned) (IFLA_PORT_UNSPEC))
+ #define XLAT_STR_0 STRINGIFY(IFLA_PORT_UNSPEC)
+ [IFLA_PORT_VF] = XLAT(IFLA_PORT_VF),
+ #define XLAT_VAL_1 ((unsigned) (IFLA_PORT_VF))
+ #define XLAT_STR_1 STRINGIFY(IFLA_PORT_VF)
+ [IFLA_PORT_PROFILE] = XLAT(IFLA_PORT_PROFILE),
+ #define XLAT_VAL_2 ((unsigned) (IFLA_PORT_PROFILE))
+ #define XLAT_STR_2 STRINGIFY(IFLA_PORT_PROFILE)
+ [IFLA_PORT_VSI_TYPE] = XLAT(IFLA_PORT_VSI_TYPE),
+ #define XLAT_VAL_3 ((unsigned) (IFLA_PORT_VSI_TYPE))
+ #define XLAT_STR_3 STRINGIFY(IFLA_PORT_VSI_TYPE)
+ [IFLA_PORT_INSTANCE_UUID] = XLAT(IFLA_PORT_INSTANCE_UUID),
+ #define XLAT_VAL_4 ((unsigned) (IFLA_PORT_INSTANCE_UUID))
+ #define XLAT_STR_4 STRINGIFY(IFLA_PORT_INSTANCE_UUID)
+ [IFLA_PORT_HOST_UUID] = XLAT(IFLA_PORT_HOST_UUID),
+ #define XLAT_VAL_5 ((unsigned) (IFLA_PORT_HOST_UUID))
+ #define XLAT_STR_5 STRINGIFY(IFLA_PORT_HOST_UUID)
+ [IFLA_PORT_REQUEST] = XLAT(IFLA_PORT_REQUEST),
+ #define XLAT_VAL_6 ((unsigned) (IFLA_PORT_REQUEST))
+ #define XLAT_STR_6 STRINGIFY(IFLA_PORT_REQUEST)
+ [IFLA_PORT_RESPONSE] = XLAT(IFLA_PORT_RESPONSE),
+ #define XLAT_VAL_7 ((unsigned) (IFLA_PORT_RESPONSE))
+ #define XLAT_STR_7 STRINGIFY(IFLA_PORT_RESPONSE)
 };
+static
+const struct xlat rtnl_ifla_port_attrs[1] = { {
+ .data = rtnl_ifla_port_attrs_xdata,
+ .size = ARRAY_SIZE(rtnl_ifla_port_attrs_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 9079006ca7441fa0ab862735da7198a6494fd06b..e498c69930434080dda062cb858f3a3758e6b6cb 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 IFLA_PORT_UNSPEC       0
 IFLA_PORT_VF           1
 IFLA_PORT_PROFILE      2
index 6227bc31cbe868c6cf6e5603d12ea28bcd2da0dc..b43087b586a813d7a531262571474ff98406d37c 100644 (file)
@@ -26,13 +26,41 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat rtnl_ifla_vf_port_attrs[] = {
- XLAT(IFLA_VF_PORT_UNSPEC),
- XLAT(IFLA_VF_PORT),
- XLAT_END
+static const struct xlat_data rtnl_ifla_vf_port_attrs_xdata[] = {
+ [IFLA_VF_PORT_UNSPEC] = XLAT(IFLA_VF_PORT_UNSPEC),
+ #define XLAT_VAL_0 ((unsigned) (IFLA_VF_PORT_UNSPEC))
+ #define XLAT_STR_0 STRINGIFY(IFLA_VF_PORT_UNSPEC)
+ [IFLA_VF_PORT] = XLAT(IFLA_VF_PORT),
+ #define XLAT_VAL_1 ((unsigned) (IFLA_VF_PORT))
+ #define XLAT_STR_1 STRINGIFY(IFLA_VF_PORT)
 };
+static
+const struct xlat rtnl_ifla_vf_port_attrs[1] = { {
+ .data = rtnl_ifla_vf_port_attrs_xdata,
+ .size = ARRAY_SIZE(rtnl_ifla_vf_port_attrs_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 7f93051ca9e22d02839ebfec24ff0f6600934d64..afff1f3fb46aac6200e25a8045b863694f2f5dfb 100644 (file)
@@ -1,2 +1,3 @@
+#value_indexed
 IFLA_VF_PORT_UNSPEC    0
 IFLA_VF_PORT           1
index bfa9deefc4cb277544d8e562b2d2f047c895043a..c96f1136a0a79f0ac45830d3585fdae6db4d0401 100644 (file)
@@ -47,16 +47,74 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat rtnl_ifla_xdp_attached_mode[] = {
+static const struct xlat_data rtnl_ifla_xdp_attached_mode_xdata[] = {
  [XDP_ATTACHED_NONE] = XLAT(XDP_ATTACHED_NONE),
+ #define XLAT_VAL_0 ((unsigned) (XDP_ATTACHED_NONE))
+ #define XLAT_STR_0 STRINGIFY(XDP_ATTACHED_NONE)
  [XDP_ATTACHED_DRV] = XLAT(XDP_ATTACHED_DRV),
+ #define XLAT_VAL_1 ((unsigned) (XDP_ATTACHED_DRV))
+ #define XLAT_STR_1 STRINGIFY(XDP_ATTACHED_DRV)
  [XDP_ATTACHED_SKB] = XLAT(XDP_ATTACHED_SKB),
+ #define XLAT_VAL_2 ((unsigned) (XDP_ATTACHED_SKB))
+ #define XLAT_STR_2 STRINGIFY(XDP_ATTACHED_SKB)
  [XDP_ATTACHED_HW] = XLAT(XDP_ATTACHED_HW),
+ #define XLAT_VAL_3 ((unsigned) (XDP_ATTACHED_HW))
+ #define XLAT_STR_3 STRINGIFY(XDP_ATTACHED_HW)
  [XDP_ATTACHED_MULTI] = XLAT(XDP_ATTACHED_MULTI),
- XLAT_END
+ #define XLAT_VAL_4 ((unsigned) (XDP_ATTACHED_MULTI))
+ #define XLAT_STR_4 STRINGIFY(XDP_ATTACHED_MULTI)
 };
+static
+const struct xlat rtnl_ifla_xdp_attached_mode[1] = { {
+ .data = rtnl_ifla_xdp_attached_mode_xdata,
+ .size = ARRAY_SIZE(rtnl_ifla_xdp_attached_mode_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index f3742302ccc34c395620e18c7ce21e4f3313bb69..2d8365e996c669e8b5612de734441290efc8f34c 100644 (file)
@@ -1,4 +1,7 @@
 #value_indexed
+#enum
+#include <netinet/in.h>
+#include <linux/rtnetlink.h>
 XDP_ATTACHED_NONE      0
 XDP_ATTACHED_DRV       1
 XDP_ATTACHED_SKB       2
diff --git a/xlat/rtnl_ifla_xdp_attached_mode.m4 b/xlat/rtnl_ifla_xdp_attached_mode.m4
new file mode 100644 (file)
index 0000000..1bb6966
--- /dev/null
@@ -0,0 +1,12 @@
+dnl Generated by ./xlat/gen.sh from ./xlat/rtnl_ifla_xdp_attached_mode.in; do not edit.
+AC_DEFUN([st_CHECK_ENUMS_rtnl_ifla_xdp_attached_mode],[
+AC_CHECK_DECLS(m4_normalize([
+XDP_ATTACHED_NONE,
+XDP_ATTACHED_DRV,
+XDP_ATTACHED_SKB,
+XDP_ATTACHED_HW,
+XDP_ATTACHED_MULTI
+]),,, [
+#include <netinet/in.h>
+#include <linux/rtnetlink.h>
+])])])
index dc9018fe7b96bc2702de986660c729cc3d58f780..521a7ec518f229a6f541347e5bfb1c5362fea5b0 100644 (file)
@@ -59,6 +59,13 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define IFLA_XDP_HW_PROG_ID 7
 #endif
+#if defined(IFLA_XDP_EXPECTED_FD) || (defined(HAVE_DECL_IFLA_XDP_EXPECTED_FD) && HAVE_DECL_IFLA_XDP_EXPECTED_FD)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IFLA_XDP_EXPECTED_FD) == (8), "IFLA_XDP_EXPECTED_FD != 8");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IFLA_XDP_EXPECTED_FD 8
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
@@ -68,19 +75,118 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat rtnl_ifla_xdp_attrs[] = {
- XLAT(IFLA_XDP_UNSPEC),
- XLAT(IFLA_XDP_FD),
- XLAT(IFLA_XDP_ATTACHED),
- XLAT(IFLA_XDP_FLAGS),
- XLAT(IFLA_XDP_PROG_ID),
- XLAT(IFLA_XDP_DRV_PROG_ID),
- XLAT(IFLA_XDP_SKB_PROG_ID),
- XLAT(IFLA_XDP_HW_PROG_ID),
- XLAT_END
+static const struct xlat_data rtnl_ifla_xdp_attrs_xdata[] = {
+ [IFLA_XDP_UNSPEC] = XLAT(IFLA_XDP_UNSPEC),
+ #define XLAT_VAL_0 ((unsigned) (IFLA_XDP_UNSPEC))
+ #define XLAT_STR_0 STRINGIFY(IFLA_XDP_UNSPEC)
+ [IFLA_XDP_FD] = XLAT(IFLA_XDP_FD),
+ #define XLAT_VAL_1 ((unsigned) (IFLA_XDP_FD))
+ #define XLAT_STR_1 STRINGIFY(IFLA_XDP_FD)
+ [IFLA_XDP_ATTACHED] = XLAT(IFLA_XDP_ATTACHED),
+ #define XLAT_VAL_2 ((unsigned) (IFLA_XDP_ATTACHED))
+ #define XLAT_STR_2 STRINGIFY(IFLA_XDP_ATTACHED)
+ [IFLA_XDP_FLAGS] = XLAT(IFLA_XDP_FLAGS),
+ #define XLAT_VAL_3 ((unsigned) (IFLA_XDP_FLAGS))
+ #define XLAT_STR_3 STRINGIFY(IFLA_XDP_FLAGS)
+ [IFLA_XDP_PROG_ID] = XLAT(IFLA_XDP_PROG_ID),
+ #define XLAT_VAL_4 ((unsigned) (IFLA_XDP_PROG_ID))
+ #define XLAT_STR_4 STRINGIFY(IFLA_XDP_PROG_ID)
+ [IFLA_XDP_DRV_PROG_ID] = XLAT(IFLA_XDP_DRV_PROG_ID),
+ #define XLAT_VAL_5 ((unsigned) (IFLA_XDP_DRV_PROG_ID))
+ #define XLAT_STR_5 STRINGIFY(IFLA_XDP_DRV_PROG_ID)
+ [IFLA_XDP_SKB_PROG_ID] = XLAT(IFLA_XDP_SKB_PROG_ID),
+ #define XLAT_VAL_6 ((unsigned) (IFLA_XDP_SKB_PROG_ID))
+ #define XLAT_STR_6 STRINGIFY(IFLA_XDP_SKB_PROG_ID)
+ [IFLA_XDP_HW_PROG_ID] = XLAT(IFLA_XDP_HW_PROG_ID),
+ #define XLAT_VAL_7 ((unsigned) (IFLA_XDP_HW_PROG_ID))
+ #define XLAT_STR_7 STRINGIFY(IFLA_XDP_HW_PROG_ID)
+ [IFLA_XDP_EXPECTED_FD] = XLAT(IFLA_XDP_EXPECTED_FD),
+ #define XLAT_VAL_8 ((unsigned) (IFLA_XDP_EXPECTED_FD))
+ #define XLAT_STR_8 STRINGIFY(IFLA_XDP_EXPECTED_FD)
 };
+static
+const struct xlat rtnl_ifla_xdp_attrs[1] = { {
+ .data = rtnl_ifla_xdp_attrs_xdata,
+ .size = ARRAY_SIZE(rtnl_ifla_xdp_attrs_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index b12958f5700fc4a80d6e6e9abf8362577b8f90ab..d743ac8a8d534f0167fffd0dc28622404717a2cd 100644 (file)
@@ -1,3 +1,7 @@
+#value_indexed
+#enum
+#include <netinet/in.h>
+#include <linux/rtnetlink.h>
 IFLA_XDP_UNSPEC                0
 IFLA_XDP_FD            1
 IFLA_XDP_ATTACHED      2
@@ -6,3 +10,4 @@ IFLA_XDP_PROG_ID       4
 IFLA_XDP_DRV_PROG_ID   5
 IFLA_XDP_SKB_PROG_ID   6
 IFLA_XDP_HW_PROG_ID    7
+IFLA_XDP_EXPECTED_FD   8
diff --git a/xlat/rtnl_ifla_xdp_attrs.m4 b/xlat/rtnl_ifla_xdp_attrs.m4
new file mode 100644 (file)
index 0000000..2d2d75a
--- /dev/null
@@ -0,0 +1,16 @@
+dnl Generated by ./xlat/gen.sh from ./xlat/rtnl_ifla_xdp_attrs.in; do not edit.
+AC_DEFUN([st_CHECK_ENUMS_rtnl_ifla_xdp_attrs],[
+AC_CHECK_DECLS(m4_normalize([
+IFLA_XDP_UNSPEC,
+IFLA_XDP_FD,
+IFLA_XDP_ATTACHED,
+IFLA_XDP_FLAGS,
+IFLA_XDP_PROG_ID,
+IFLA_XDP_DRV_PROG_ID,
+IFLA_XDP_SKB_PROG_ID,
+IFLA_XDP_HW_PROG_ID,
+IFLA_XDP_EXPECTED_FD
+]),,, [
+#include <netinet/in.h>
+#include <linux/rtnetlink.h>
+])])])
index 6a298606ed528600ad3252e4eab4a06f3bf4bcf8..7168f0ec7be5b6816159253889bfe13d330de63e 100644 (file)
@@ -367,6 +367,34 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define IFLA_MAX_MTU 51
 #endif
+#if defined(IFLA_PROP_LIST) || (defined(HAVE_DECL_IFLA_PROP_LIST) && HAVE_DECL_IFLA_PROP_LIST)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IFLA_PROP_LIST) == (52), "IFLA_PROP_LIST != 52");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IFLA_PROP_LIST 52
+#endif
+#if defined(IFLA_ALT_IFNAME) || (defined(HAVE_DECL_IFLA_ALT_IFNAME) && HAVE_DECL_IFLA_ALT_IFNAME)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IFLA_ALT_IFNAME) == (53), "IFLA_ALT_IFNAME != 53");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IFLA_ALT_IFNAME 53
+#endif
+#if defined(IFLA_PERM_ADDRESS) || (defined(HAVE_DECL_IFLA_PERM_ADDRESS) && HAVE_DECL_IFLA_PERM_ADDRESS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IFLA_PERM_ADDRESS) == (54), "IFLA_PERM_ADDRESS != 54");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IFLA_PERM_ADDRESS 54
+#endif
+#if defined(IFLA_PROTO_DOWN_REASON) || (defined(HAVE_DECL_IFLA_PROTO_DOWN_REASON) && HAVE_DECL_IFLA_PROTO_DOWN_REASON)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IFLA_PROTO_DOWN_REASON) == (55), "IFLA_PROTO_DOWN_REASON != 55");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IFLA_PROTO_DOWN_REASON 55
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
@@ -376,63 +404,635 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat rtnl_link_attrs[] = {
- XLAT(IFLA_UNSPEC),
- XLAT(IFLA_ADDRESS),
- XLAT(IFLA_BROADCAST),
- XLAT(IFLA_IFNAME),
- XLAT(IFLA_MTU),
- XLAT(IFLA_LINK),
- XLAT(IFLA_QDISC),
- XLAT(IFLA_STATS),
- XLAT(IFLA_COST),
- XLAT(IFLA_PRIORITY),
- XLAT(IFLA_MASTER),
- XLAT(IFLA_WIRELESS),
- XLAT(IFLA_PROTINFO),
- XLAT(IFLA_TXQLEN),
- XLAT(IFLA_MAP),
- XLAT(IFLA_WEIGHT),
- XLAT(IFLA_OPERSTATE),
- XLAT(IFLA_LINKMODE),
- XLAT(IFLA_LINKINFO),
- XLAT(IFLA_NET_NS_PID),
- XLAT(IFLA_IFALIAS),
- XLAT(IFLA_NUM_VF),
- XLAT(IFLA_VFINFO_LIST),
- XLAT(IFLA_STATS64),
- XLAT(IFLA_VF_PORTS),
- XLAT(IFLA_PORT_SELF),
- XLAT(IFLA_AF_SPEC),
- XLAT(IFLA_GROUP),
- XLAT(IFLA_NET_NS_FD),
- XLAT(IFLA_EXT_MASK),
- XLAT(IFLA_PROMISCUITY),
- XLAT(IFLA_NUM_TX_QUEUES),
- XLAT(IFLA_NUM_RX_QUEUES),
- XLAT(IFLA_CARRIER),
- XLAT(IFLA_PHYS_PORT_ID),
- XLAT(IFLA_CARRIER_CHANGES),
- XLAT(IFLA_PHYS_SWITCH_ID),
- XLAT(IFLA_LINK_NETNSID),
- XLAT(IFLA_PHYS_PORT_NAME),
- XLAT(IFLA_PROTO_DOWN),
- XLAT(IFLA_GSO_MAX_SEGS),
- XLAT(IFLA_GSO_MAX_SIZE),
- XLAT(IFLA_PAD),
- XLAT(IFLA_XDP),
- XLAT(IFLA_EVENT),
- XLAT(IFLA_NEW_NETNSID),
- XLAT(IFLA_IF_NETNSID),
- XLAT(IFLA_CARRIER_UP_COUNT),
- XLAT(IFLA_CARRIER_DOWN_COUNT),
- XLAT(IFLA_NEW_IFINDEX),
- XLAT(IFLA_MIN_MTU),
- XLAT(IFLA_MAX_MTU),
- XLAT_END
+static const struct xlat_data rtnl_link_attrs_xdata[] = {
+ [IFLA_UNSPEC] = XLAT(IFLA_UNSPEC),
+ #define XLAT_VAL_0 ((unsigned) (IFLA_UNSPEC))
+ #define XLAT_STR_0 STRINGIFY(IFLA_UNSPEC)
+ [IFLA_ADDRESS] = XLAT(IFLA_ADDRESS),
+ #define XLAT_VAL_1 ((unsigned) (IFLA_ADDRESS))
+ #define XLAT_STR_1 STRINGIFY(IFLA_ADDRESS)
+ [IFLA_BROADCAST] = XLAT(IFLA_BROADCAST),
+ #define XLAT_VAL_2 ((unsigned) (IFLA_BROADCAST))
+ #define XLAT_STR_2 STRINGIFY(IFLA_BROADCAST)
+ [IFLA_IFNAME] = XLAT(IFLA_IFNAME),
+ #define XLAT_VAL_3 ((unsigned) (IFLA_IFNAME))
+ #define XLAT_STR_3 STRINGIFY(IFLA_IFNAME)
+ [IFLA_MTU] = XLAT(IFLA_MTU),
+ #define XLAT_VAL_4 ((unsigned) (IFLA_MTU))
+ #define XLAT_STR_4 STRINGIFY(IFLA_MTU)
+ [IFLA_LINK] = XLAT(IFLA_LINK),
+ #define XLAT_VAL_5 ((unsigned) (IFLA_LINK))
+ #define XLAT_STR_5 STRINGIFY(IFLA_LINK)
+ [IFLA_QDISC] = XLAT(IFLA_QDISC),
+ #define XLAT_VAL_6 ((unsigned) (IFLA_QDISC))
+ #define XLAT_STR_6 STRINGIFY(IFLA_QDISC)
+ [IFLA_STATS] = XLAT(IFLA_STATS),
+ #define XLAT_VAL_7 ((unsigned) (IFLA_STATS))
+ #define XLAT_STR_7 STRINGIFY(IFLA_STATS)
+ [IFLA_COST] = XLAT(IFLA_COST),
+ #define XLAT_VAL_8 ((unsigned) (IFLA_COST))
+ #define XLAT_STR_8 STRINGIFY(IFLA_COST)
+ [IFLA_PRIORITY] = XLAT(IFLA_PRIORITY),
+ #define XLAT_VAL_9 ((unsigned) (IFLA_PRIORITY))
+ #define XLAT_STR_9 STRINGIFY(IFLA_PRIORITY)
+ [IFLA_MASTER] = XLAT(IFLA_MASTER),
+ #define XLAT_VAL_10 ((unsigned) (IFLA_MASTER))
+ #define XLAT_STR_10 STRINGIFY(IFLA_MASTER)
+ [IFLA_WIRELESS] = XLAT(IFLA_WIRELESS),
+ #define XLAT_VAL_11 ((unsigned) (IFLA_WIRELESS))
+ #define XLAT_STR_11 STRINGIFY(IFLA_WIRELESS)
+ [IFLA_PROTINFO] = XLAT(IFLA_PROTINFO),
+ #define XLAT_VAL_12 ((unsigned) (IFLA_PROTINFO))
+ #define XLAT_STR_12 STRINGIFY(IFLA_PROTINFO)
+ [IFLA_TXQLEN] = XLAT(IFLA_TXQLEN),
+ #define XLAT_VAL_13 ((unsigned) (IFLA_TXQLEN))
+ #define XLAT_STR_13 STRINGIFY(IFLA_TXQLEN)
+ [IFLA_MAP] = XLAT(IFLA_MAP),
+ #define XLAT_VAL_14 ((unsigned) (IFLA_MAP))
+ #define XLAT_STR_14 STRINGIFY(IFLA_MAP)
+ [IFLA_WEIGHT] = XLAT(IFLA_WEIGHT),
+ #define XLAT_VAL_15 ((unsigned) (IFLA_WEIGHT))
+ #define XLAT_STR_15 STRINGIFY(IFLA_WEIGHT)
+ [IFLA_OPERSTATE] = XLAT(IFLA_OPERSTATE),
+ #define XLAT_VAL_16 ((unsigned) (IFLA_OPERSTATE))
+ #define XLAT_STR_16 STRINGIFY(IFLA_OPERSTATE)
+ [IFLA_LINKMODE] = XLAT(IFLA_LINKMODE),
+ #define XLAT_VAL_17 ((unsigned) (IFLA_LINKMODE))
+ #define XLAT_STR_17 STRINGIFY(IFLA_LINKMODE)
+ [IFLA_LINKINFO] = XLAT(IFLA_LINKINFO),
+ #define XLAT_VAL_18 ((unsigned) (IFLA_LINKINFO))
+ #define XLAT_STR_18 STRINGIFY(IFLA_LINKINFO)
+ [IFLA_NET_NS_PID] = XLAT(IFLA_NET_NS_PID),
+ #define XLAT_VAL_19 ((unsigned) (IFLA_NET_NS_PID))
+ #define XLAT_STR_19 STRINGIFY(IFLA_NET_NS_PID)
+ [IFLA_IFALIAS] = XLAT(IFLA_IFALIAS),
+ #define XLAT_VAL_20 ((unsigned) (IFLA_IFALIAS))
+ #define XLAT_STR_20 STRINGIFY(IFLA_IFALIAS)
+ [IFLA_NUM_VF] = XLAT(IFLA_NUM_VF),
+ #define XLAT_VAL_21 ((unsigned) (IFLA_NUM_VF))
+ #define XLAT_STR_21 STRINGIFY(IFLA_NUM_VF)
+ [IFLA_VFINFO_LIST] = XLAT(IFLA_VFINFO_LIST),
+ #define XLAT_VAL_22 ((unsigned) (IFLA_VFINFO_LIST))
+ #define XLAT_STR_22 STRINGIFY(IFLA_VFINFO_LIST)
+ [IFLA_STATS64] = XLAT(IFLA_STATS64),
+ #define XLAT_VAL_23 ((unsigned) (IFLA_STATS64))
+ #define XLAT_STR_23 STRINGIFY(IFLA_STATS64)
+ [IFLA_VF_PORTS] = XLAT(IFLA_VF_PORTS),
+ #define XLAT_VAL_24 ((unsigned) (IFLA_VF_PORTS))
+ #define XLAT_STR_24 STRINGIFY(IFLA_VF_PORTS)
+ [IFLA_PORT_SELF] = XLAT(IFLA_PORT_SELF),
+ #define XLAT_VAL_25 ((unsigned) (IFLA_PORT_SELF))
+ #define XLAT_STR_25 STRINGIFY(IFLA_PORT_SELF)
+ [IFLA_AF_SPEC] = XLAT(IFLA_AF_SPEC),
+ #define XLAT_VAL_26 ((unsigned) (IFLA_AF_SPEC))
+ #define XLAT_STR_26 STRINGIFY(IFLA_AF_SPEC)
+ [IFLA_GROUP] = XLAT(IFLA_GROUP),
+ #define XLAT_VAL_27 ((unsigned) (IFLA_GROUP))
+ #define XLAT_STR_27 STRINGIFY(IFLA_GROUP)
+ [IFLA_NET_NS_FD] = XLAT(IFLA_NET_NS_FD),
+ #define XLAT_VAL_28 ((unsigned) (IFLA_NET_NS_FD))
+ #define XLAT_STR_28 STRINGIFY(IFLA_NET_NS_FD)
+ [IFLA_EXT_MASK] = XLAT(IFLA_EXT_MASK),
+ #define XLAT_VAL_29 ((unsigned) (IFLA_EXT_MASK))
+ #define XLAT_STR_29 STRINGIFY(IFLA_EXT_MASK)
+ [IFLA_PROMISCUITY] = XLAT(IFLA_PROMISCUITY),
+ #define XLAT_VAL_30 ((unsigned) (IFLA_PROMISCUITY))
+ #define XLAT_STR_30 STRINGIFY(IFLA_PROMISCUITY)
+ [IFLA_NUM_TX_QUEUES] = XLAT(IFLA_NUM_TX_QUEUES),
+ #define XLAT_VAL_31 ((unsigned) (IFLA_NUM_TX_QUEUES))
+ #define XLAT_STR_31 STRINGIFY(IFLA_NUM_TX_QUEUES)
+ [IFLA_NUM_RX_QUEUES] = XLAT(IFLA_NUM_RX_QUEUES),
+ #define XLAT_VAL_32 ((unsigned) (IFLA_NUM_RX_QUEUES))
+ #define XLAT_STR_32 STRINGIFY(IFLA_NUM_RX_QUEUES)
+ [IFLA_CARRIER] = XLAT(IFLA_CARRIER),
+ #define XLAT_VAL_33 ((unsigned) (IFLA_CARRIER))
+ #define XLAT_STR_33 STRINGIFY(IFLA_CARRIER)
+ [IFLA_PHYS_PORT_ID] = XLAT(IFLA_PHYS_PORT_ID),
+ #define XLAT_VAL_34 ((unsigned) (IFLA_PHYS_PORT_ID))
+ #define XLAT_STR_34 STRINGIFY(IFLA_PHYS_PORT_ID)
+ [IFLA_CARRIER_CHANGES] = XLAT(IFLA_CARRIER_CHANGES),
+ #define XLAT_VAL_35 ((unsigned) (IFLA_CARRIER_CHANGES))
+ #define XLAT_STR_35 STRINGIFY(IFLA_CARRIER_CHANGES)
+ [IFLA_PHYS_SWITCH_ID] = XLAT(IFLA_PHYS_SWITCH_ID),
+ #define XLAT_VAL_36 ((unsigned) (IFLA_PHYS_SWITCH_ID))
+ #define XLAT_STR_36 STRINGIFY(IFLA_PHYS_SWITCH_ID)
+ [IFLA_LINK_NETNSID] = XLAT(IFLA_LINK_NETNSID),
+ #define XLAT_VAL_37 ((unsigned) (IFLA_LINK_NETNSID))
+ #define XLAT_STR_37 STRINGIFY(IFLA_LINK_NETNSID)
+ [IFLA_PHYS_PORT_NAME] = XLAT(IFLA_PHYS_PORT_NAME),
+ #define XLAT_VAL_38 ((unsigned) (IFLA_PHYS_PORT_NAME))
+ #define XLAT_STR_38 STRINGIFY(IFLA_PHYS_PORT_NAME)
+ [IFLA_PROTO_DOWN] = XLAT(IFLA_PROTO_DOWN),
+ #define XLAT_VAL_39 ((unsigned) (IFLA_PROTO_DOWN))
+ #define XLAT_STR_39 STRINGIFY(IFLA_PROTO_DOWN)
+ [IFLA_GSO_MAX_SEGS] = XLAT(IFLA_GSO_MAX_SEGS),
+ #define XLAT_VAL_40 ((unsigned) (IFLA_GSO_MAX_SEGS))
+ #define XLAT_STR_40 STRINGIFY(IFLA_GSO_MAX_SEGS)
+ [IFLA_GSO_MAX_SIZE] = XLAT(IFLA_GSO_MAX_SIZE),
+ #define XLAT_VAL_41 ((unsigned) (IFLA_GSO_MAX_SIZE))
+ #define XLAT_STR_41 STRINGIFY(IFLA_GSO_MAX_SIZE)
+ [IFLA_PAD] = XLAT(IFLA_PAD),
+ #define XLAT_VAL_42 ((unsigned) (IFLA_PAD))
+ #define XLAT_STR_42 STRINGIFY(IFLA_PAD)
+ [IFLA_XDP] = XLAT(IFLA_XDP),
+ #define XLAT_VAL_43 ((unsigned) (IFLA_XDP))
+ #define XLAT_STR_43 STRINGIFY(IFLA_XDP)
+ [IFLA_EVENT] = XLAT(IFLA_EVENT),
+ #define XLAT_VAL_44 ((unsigned) (IFLA_EVENT))
+ #define XLAT_STR_44 STRINGIFY(IFLA_EVENT)
+ [IFLA_NEW_NETNSID] = XLAT(IFLA_NEW_NETNSID),
+ #define XLAT_VAL_45 ((unsigned) (IFLA_NEW_NETNSID))
+ #define XLAT_STR_45 STRINGIFY(IFLA_NEW_NETNSID)
+ [IFLA_IF_NETNSID] = XLAT(IFLA_IF_NETNSID),
+ #define XLAT_VAL_46 ((unsigned) (IFLA_IF_NETNSID))
+ #define XLAT_STR_46 STRINGIFY(IFLA_IF_NETNSID)
+ [IFLA_CARRIER_UP_COUNT] = XLAT(IFLA_CARRIER_UP_COUNT),
+ #define XLAT_VAL_47 ((unsigned) (IFLA_CARRIER_UP_COUNT))
+ #define XLAT_STR_47 STRINGIFY(IFLA_CARRIER_UP_COUNT)
+ [IFLA_CARRIER_DOWN_COUNT] = XLAT(IFLA_CARRIER_DOWN_COUNT),
+ #define XLAT_VAL_48 ((unsigned) (IFLA_CARRIER_DOWN_COUNT))
+ #define XLAT_STR_48 STRINGIFY(IFLA_CARRIER_DOWN_COUNT)
+ [IFLA_NEW_IFINDEX] = XLAT(IFLA_NEW_IFINDEX),
+ #define XLAT_VAL_49 ((unsigned) (IFLA_NEW_IFINDEX))
+ #define XLAT_STR_49 STRINGIFY(IFLA_NEW_IFINDEX)
+ [IFLA_MIN_MTU] = XLAT(IFLA_MIN_MTU),
+ #define XLAT_VAL_50 ((unsigned) (IFLA_MIN_MTU))
+ #define XLAT_STR_50 STRINGIFY(IFLA_MIN_MTU)
+ [IFLA_MAX_MTU] = XLAT(IFLA_MAX_MTU),
+ #define XLAT_VAL_51 ((unsigned) (IFLA_MAX_MTU))
+ #define XLAT_STR_51 STRINGIFY(IFLA_MAX_MTU)
+ [IFLA_PROP_LIST] = XLAT(IFLA_PROP_LIST),
+ #define XLAT_VAL_52 ((unsigned) (IFLA_PROP_LIST))
+ #define XLAT_STR_52 STRINGIFY(IFLA_PROP_LIST)
+ [IFLA_ALT_IFNAME] = XLAT(IFLA_ALT_IFNAME),
+ #define XLAT_VAL_53 ((unsigned) (IFLA_ALT_IFNAME))
+ #define XLAT_STR_53 STRINGIFY(IFLA_ALT_IFNAME)
+ [IFLA_PERM_ADDRESS] = XLAT(IFLA_PERM_ADDRESS),
+ #define XLAT_VAL_54 ((unsigned) (IFLA_PERM_ADDRESS))
+ #define XLAT_STR_54 STRINGIFY(IFLA_PERM_ADDRESS)
+ [IFLA_PROTO_DOWN_REASON] = XLAT(IFLA_PROTO_DOWN_REASON),
+ #define XLAT_VAL_55 ((unsigned) (IFLA_PROTO_DOWN_REASON))
+ #define XLAT_STR_55 STRINGIFY(IFLA_PROTO_DOWN_REASON)
 };
+static
+const struct xlat rtnl_link_attrs[1] = { {
+ .data = rtnl_link_attrs_xdata,
+ .size = ARRAY_SIZE(rtnl_link_attrs_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+#  ifdef XLAT_VAL_30
+  | XLAT_VAL_30
+#  endif
+#  ifdef XLAT_VAL_31
+  | XLAT_VAL_31
+#  endif
+#  ifdef XLAT_VAL_32
+  | XLAT_VAL_32
+#  endif
+#  ifdef XLAT_VAL_33
+  | XLAT_VAL_33
+#  endif
+#  ifdef XLAT_VAL_34
+  | XLAT_VAL_34
+#  endif
+#  ifdef XLAT_VAL_35
+  | XLAT_VAL_35
+#  endif
+#  ifdef XLAT_VAL_36
+  | XLAT_VAL_36
+#  endif
+#  ifdef XLAT_VAL_37
+  | XLAT_VAL_37
+#  endif
+#  ifdef XLAT_VAL_38
+  | XLAT_VAL_38
+#  endif
+#  ifdef XLAT_VAL_39
+  | XLAT_VAL_39
+#  endif
+#  ifdef XLAT_VAL_40
+  | XLAT_VAL_40
+#  endif
+#  ifdef XLAT_VAL_41
+  | XLAT_VAL_41
+#  endif
+#  ifdef XLAT_VAL_42
+  | XLAT_VAL_42
+#  endif
+#  ifdef XLAT_VAL_43
+  | XLAT_VAL_43
+#  endif
+#  ifdef XLAT_VAL_44
+  | XLAT_VAL_44
+#  endif
+#  ifdef XLAT_VAL_45
+  | XLAT_VAL_45
+#  endif
+#  ifdef XLAT_VAL_46
+  | XLAT_VAL_46
+#  endif
+#  ifdef XLAT_VAL_47
+  | XLAT_VAL_47
+#  endif
+#  ifdef XLAT_VAL_48
+  | XLAT_VAL_48
+#  endif
+#  ifdef XLAT_VAL_49
+  | XLAT_VAL_49
+#  endif
+#  ifdef XLAT_VAL_50
+  | XLAT_VAL_50
+#  endif
+#  ifdef XLAT_VAL_51
+  | XLAT_VAL_51
+#  endif
+#  ifdef XLAT_VAL_52
+  | XLAT_VAL_52
+#  endif
+#  ifdef XLAT_VAL_53
+  | XLAT_VAL_53
+#  endif
+#  ifdef XLAT_VAL_54
+  | XLAT_VAL_54
+#  endif
+#  ifdef XLAT_VAL_55
+  | XLAT_VAL_55
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+#  ifdef XLAT_STR_30
+  + sizeof(XLAT_STR_30)
+#  endif
+#  ifdef XLAT_STR_31
+  + sizeof(XLAT_STR_31)
+#  endif
+#  ifdef XLAT_STR_32
+  + sizeof(XLAT_STR_32)
+#  endif
+#  ifdef XLAT_STR_33
+  + sizeof(XLAT_STR_33)
+#  endif
+#  ifdef XLAT_STR_34
+  + sizeof(XLAT_STR_34)
+#  endif
+#  ifdef XLAT_STR_35
+  + sizeof(XLAT_STR_35)
+#  endif
+#  ifdef XLAT_STR_36
+  + sizeof(XLAT_STR_36)
+#  endif
+#  ifdef XLAT_STR_37
+  + sizeof(XLAT_STR_37)
+#  endif
+#  ifdef XLAT_STR_38
+  + sizeof(XLAT_STR_38)
+#  endif
+#  ifdef XLAT_STR_39
+  + sizeof(XLAT_STR_39)
+#  endif
+#  ifdef XLAT_STR_40
+  + sizeof(XLAT_STR_40)
+#  endif
+#  ifdef XLAT_STR_41
+  + sizeof(XLAT_STR_41)
+#  endif
+#  ifdef XLAT_STR_42
+  + sizeof(XLAT_STR_42)
+#  endif
+#  ifdef XLAT_STR_43
+  + sizeof(XLAT_STR_43)
+#  endif
+#  ifdef XLAT_STR_44
+  + sizeof(XLAT_STR_44)
+#  endif
+#  ifdef XLAT_STR_45
+  + sizeof(XLAT_STR_45)
+#  endif
+#  ifdef XLAT_STR_46
+  + sizeof(XLAT_STR_46)
+#  endif
+#  ifdef XLAT_STR_47
+  + sizeof(XLAT_STR_47)
+#  endif
+#  ifdef XLAT_STR_48
+  + sizeof(XLAT_STR_48)
+#  endif
+#  ifdef XLAT_STR_49
+  + sizeof(XLAT_STR_49)
+#  endif
+#  ifdef XLAT_STR_50
+  + sizeof(XLAT_STR_50)
+#  endif
+#  ifdef XLAT_STR_51
+  + sizeof(XLAT_STR_51)
+#  endif
+#  ifdef XLAT_STR_52
+  + sizeof(XLAT_STR_52)
+#  endif
+#  ifdef XLAT_STR_53
+  + sizeof(XLAT_STR_53)
+#  endif
+#  ifdef XLAT_STR_54
+  + sizeof(XLAT_STR_54)
+#  endif
+#  ifdef XLAT_STR_55
+  + sizeof(XLAT_STR_55)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
+#  undef XLAT_STR_30
+#  undef XLAT_VAL_30
+#  undef XLAT_STR_31
+#  undef XLAT_VAL_31
+#  undef XLAT_STR_32
+#  undef XLAT_VAL_32
+#  undef XLAT_STR_33
+#  undef XLAT_VAL_33
+#  undef XLAT_STR_34
+#  undef XLAT_VAL_34
+#  undef XLAT_STR_35
+#  undef XLAT_VAL_35
+#  undef XLAT_STR_36
+#  undef XLAT_VAL_36
+#  undef XLAT_STR_37
+#  undef XLAT_VAL_37
+#  undef XLAT_STR_38
+#  undef XLAT_VAL_38
+#  undef XLAT_STR_39
+#  undef XLAT_VAL_39
+#  undef XLAT_STR_40
+#  undef XLAT_VAL_40
+#  undef XLAT_STR_41
+#  undef XLAT_VAL_41
+#  undef XLAT_STR_42
+#  undef XLAT_VAL_42
+#  undef XLAT_STR_43
+#  undef XLAT_VAL_43
+#  undef XLAT_STR_44
+#  undef XLAT_VAL_44
+#  undef XLAT_STR_45
+#  undef XLAT_VAL_45
+#  undef XLAT_STR_46
+#  undef XLAT_VAL_46
+#  undef XLAT_STR_47
+#  undef XLAT_VAL_47
+#  undef XLAT_STR_48
+#  undef XLAT_VAL_48
+#  undef XLAT_STR_49
+#  undef XLAT_VAL_49
+#  undef XLAT_STR_50
+#  undef XLAT_VAL_50
+#  undef XLAT_STR_51
+#  undef XLAT_VAL_51
+#  undef XLAT_STR_52
+#  undef XLAT_VAL_52
+#  undef XLAT_STR_53
+#  undef XLAT_VAL_53
+#  undef XLAT_STR_54
+#  undef XLAT_VAL_54
+#  undef XLAT_STR_55
+#  undef XLAT_VAL_55
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 1c0fa2dd32c851d6bf1e96dad2cad373c2bbf12b..904494125d792b729bf1740cb5248b9a68db03db 100644 (file)
@@ -1,3 +1,7 @@
+#value_indexed
+#enum
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 IFLA_UNSPEC            0
 IFLA_ADDRESS           1
 IFLA_BROADCAST         2
@@ -50,3 +54,7 @@ IFLA_CARRIER_DOWN_COUNT       48
 IFLA_NEW_IFINDEX       49
 IFLA_MIN_MTU           50
 IFLA_MAX_MTU           51
+IFLA_PROP_LIST         52
+IFLA_ALT_IFNAME                53
+IFLA_PERM_ADDRESS      54
+IFLA_PROTO_DOWN_REASON 55
diff --git a/xlat/rtnl_link_attrs.m4 b/xlat/rtnl_link_attrs.m4
new file mode 100644 (file)
index 0000000..5de4fd1
--- /dev/null
@@ -0,0 +1,63 @@
+dnl Generated by ./xlat/gen.sh from ./xlat/rtnl_link_attrs.in; do not edit.
+AC_DEFUN([st_CHECK_ENUMS_rtnl_link_attrs],[
+AC_CHECK_DECLS(m4_normalize([
+IFLA_UNSPEC,
+IFLA_ADDRESS,
+IFLA_BROADCAST,
+IFLA_IFNAME,
+IFLA_MTU,
+IFLA_LINK,
+IFLA_QDISC,
+IFLA_STATS,
+IFLA_COST,
+IFLA_PRIORITY,
+IFLA_MASTER,
+IFLA_WIRELESS,
+IFLA_PROTINFO,
+IFLA_TXQLEN,
+IFLA_MAP,
+IFLA_WEIGHT,
+IFLA_OPERSTATE,
+IFLA_LINKMODE,
+IFLA_LINKINFO,
+IFLA_NET_NS_PID,
+IFLA_IFALIAS,
+IFLA_NUM_VF,
+IFLA_VFINFO_LIST,
+IFLA_STATS64,
+IFLA_VF_PORTS,
+IFLA_PORT_SELF,
+IFLA_AF_SPEC,
+IFLA_GROUP,
+IFLA_NET_NS_FD,
+IFLA_EXT_MASK,
+IFLA_PROMISCUITY,
+IFLA_NUM_TX_QUEUES,
+IFLA_NUM_RX_QUEUES,
+IFLA_CARRIER,
+IFLA_PHYS_PORT_ID,
+IFLA_CARRIER_CHANGES,
+IFLA_PHYS_SWITCH_ID,
+IFLA_LINK_NETNSID,
+IFLA_PHYS_PORT_NAME,
+IFLA_PROTO_DOWN,
+IFLA_GSO_MAX_SEGS,
+IFLA_GSO_MAX_SIZE,
+IFLA_PAD,
+IFLA_XDP,
+IFLA_EVENT,
+IFLA_NEW_NETNSID,
+IFLA_IF_NETNSID,
+IFLA_CARRIER_UP_COUNT,
+IFLA_CARRIER_DOWN_COUNT,
+IFLA_NEW_IFINDEX,
+IFLA_MIN_MTU,
+IFLA_MAX_MTU,
+IFLA_PROP_LIST,
+IFLA_ALT_IFNAME,
+IFLA_PERM_ADDRESS,
+IFLA_PROTO_DOWN_REASON
+]),,, [
+#include <sys/socket.h>
+#include <linux/rtnetlink.h>
+])])])
index 8dc0308b9d396f1447f1efe5adb3ca546f6d3efd..d4a6e8043bebb9879a0dbd2d8c6b652f7d7f01aa 100644 (file)
@@ -33,14 +33,52 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat rtnl_mdb_attrs[] = {
- XLAT(MDBA_UNSPEC),
- XLAT(MDBA_MDB),
- XLAT(MDBA_ROUTER),
- XLAT_END
+static const struct xlat_data rtnl_mdb_attrs_xdata[] = {
+ [MDBA_UNSPEC] = XLAT(MDBA_UNSPEC),
+ #define XLAT_VAL_0 ((unsigned) (MDBA_UNSPEC))
+ #define XLAT_STR_0 STRINGIFY(MDBA_UNSPEC)
+ [MDBA_MDB] = XLAT(MDBA_MDB),
+ #define XLAT_VAL_1 ((unsigned) (MDBA_MDB))
+ #define XLAT_STR_1 STRINGIFY(MDBA_MDB)
+ [MDBA_ROUTER] = XLAT(MDBA_ROUTER),
+ #define XLAT_VAL_2 ((unsigned) (MDBA_ROUTER))
+ #define XLAT_STR_2 STRINGIFY(MDBA_ROUTER)
 };
+static
+const struct xlat rtnl_mdb_attrs[1] = { {
+ .data = rtnl_mdb_attrs_xdata,
+ .size = ARRAY_SIZE(rtnl_mdb_attrs_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index b804662476595e7eb2555bb97c8a211ac54851f3..9db05cd1efe2cacbc63226a9df1e91b94a5d82bd 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 MDBA_UNSPEC            0
 MDBA_MDB               1
 MDBA_ROUTER            2
index ff9c4abadfddf154664583d6267e8c79c785c263..7f75ab153c25956600a0cc2c501f46ab7fda6e06 100644 (file)
@@ -26,13 +26,41 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat rtnl_mdba_mdb_attrs[] = {
- XLAT(MDBA_MDB_UNSPEC),
- XLAT(MDBA_MDB_ENTRY),
- XLAT_END
+static const struct xlat_data rtnl_mdba_mdb_attrs_xdata[] = {
+ [MDBA_MDB_UNSPEC] = XLAT(MDBA_MDB_UNSPEC),
+ #define XLAT_VAL_0 ((unsigned) (MDBA_MDB_UNSPEC))
+ #define XLAT_STR_0 STRINGIFY(MDBA_MDB_UNSPEC)
+ [MDBA_MDB_ENTRY] = XLAT(MDBA_MDB_ENTRY),
+ #define XLAT_VAL_1 ((unsigned) (MDBA_MDB_ENTRY))
+ #define XLAT_STR_1 STRINGIFY(MDBA_MDB_ENTRY)
 };
+static
+const struct xlat rtnl_mdba_mdb_attrs[1] = { {
+ .data = rtnl_mdba_mdb_attrs_xdata,
+ .size = ARRAY_SIZE(rtnl_mdba_mdb_attrs_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 7ff5cce38b81ecf1afdf5ed469ac417a829d9564..41f396272de1bc54e9616feb66087ecbb6aa13c9 100644 (file)
@@ -1,2 +1,3 @@
+#value_indexed
 MDBA_MDB_UNSPEC        0
 MDBA_MDB_ENTRY 1
index 47aa3bd9388081669c083d31271ca4ab9ef832b7..ef404f961bd8b5adec3b2b721a96862f8ca67db6 100644 (file)
@@ -26,13 +26,41 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat rtnl_mdba_mdb_eattr_attrs[] = {
- XLAT(MDBA_MDB_EATTR_UNSPEC),
- XLAT(MDBA_MDB_EATTR_TIMER),
- XLAT_END
+static const struct xlat_data rtnl_mdba_mdb_eattr_attrs_xdata[] = {
+ [MDBA_MDB_EATTR_UNSPEC] = XLAT(MDBA_MDB_EATTR_UNSPEC),
+ #define XLAT_VAL_0 ((unsigned) (MDBA_MDB_EATTR_UNSPEC))
+ #define XLAT_STR_0 STRINGIFY(MDBA_MDB_EATTR_UNSPEC)
+ [MDBA_MDB_EATTR_TIMER] = XLAT(MDBA_MDB_EATTR_TIMER),
+ #define XLAT_VAL_1 ((unsigned) (MDBA_MDB_EATTR_TIMER))
+ #define XLAT_STR_1 STRINGIFY(MDBA_MDB_EATTR_TIMER)
 };
+static
+const struct xlat rtnl_mdba_mdb_eattr_attrs[1] = { {
+ .data = rtnl_mdba_mdb_eattr_attrs_xdata,
+ .size = ARRAY_SIZE(rtnl_mdba_mdb_eattr_attrs_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index c7c1b7b322217ccbf12099d9d816fd778681249a..de2e91c6735f9b4f4c9d1b0f3090e543ef319b76 100644 (file)
@@ -1,2 +1,3 @@
+#value_indexed
 MDBA_MDB_EATTR_UNSPEC  0
 MDBA_MDB_EATTR_TIMER   1
index 8c385186c026fe0f45c142cb21d74e7872759e59..b5fd63b72fcdf95e0e37234dd2b951f7aca0fe26 100644 (file)
@@ -26,13 +26,41 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat rtnl_mdba_mdb_entry_attrs[] = {
- XLAT(MDBA_MDB_ENTRY_UNSPEC),
- XLAT(MDBA_MDB_ENTRY_INFO),
- XLAT_END
+static const struct xlat_data rtnl_mdba_mdb_entry_attrs_xdata[] = {
+ [MDBA_MDB_ENTRY_UNSPEC] = XLAT(MDBA_MDB_ENTRY_UNSPEC),
+ #define XLAT_VAL_0 ((unsigned) (MDBA_MDB_ENTRY_UNSPEC))
+ #define XLAT_STR_0 STRINGIFY(MDBA_MDB_ENTRY_UNSPEC)
+ [MDBA_MDB_ENTRY_INFO] = XLAT(MDBA_MDB_ENTRY_INFO),
+ #define XLAT_VAL_1 ((unsigned) (MDBA_MDB_ENTRY_INFO))
+ #define XLAT_STR_1 STRINGIFY(MDBA_MDB_ENTRY_INFO)
 };
+static
+const struct xlat rtnl_mdba_mdb_entry_attrs[1] = { {
+ .data = rtnl_mdba_mdb_entry_attrs_xdata,
+ .size = ARRAY_SIZE(rtnl_mdba_mdb_entry_attrs_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 52b18d69e6f145fa748992cda7c50806ca2862be..7216a6b09fea27af016dc8c8324b63c680208f54 100644 (file)
@@ -1,2 +1,3 @@
+#value_indexed
 MDBA_MDB_ENTRY_UNSPEC  0
 MDBA_MDB_ENTRY_INFO    1
index cd50e54900d068643d5721f4ec647dc072a0174a..49dce3c40a5fad580f786a041d2b7632f43c0ba6 100644 (file)
@@ -26,13 +26,41 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat rtnl_mdba_router_attrs[] = {
- XLAT(MDBA_ROUTER_UNSPEC),
- XLAT(MDBA_ROUTER_PORT),
- XLAT_END
+static const struct xlat_data rtnl_mdba_router_attrs_xdata[] = {
+ [MDBA_ROUTER_UNSPEC] = XLAT(MDBA_ROUTER_UNSPEC),
+ #define XLAT_VAL_0 ((unsigned) (MDBA_ROUTER_UNSPEC))
+ #define XLAT_STR_0 STRINGIFY(MDBA_ROUTER_UNSPEC)
+ [MDBA_ROUTER_PORT] = XLAT(MDBA_ROUTER_PORT),
+ #define XLAT_VAL_1 ((unsigned) (MDBA_ROUTER_PORT))
+ #define XLAT_STR_1 STRINGIFY(MDBA_ROUTER_PORT)
 };
+static
+const struct xlat rtnl_mdba_router_attrs[1] = { {
+ .data = rtnl_mdba_router_attrs_xdata,
+ .size = ARRAY_SIZE(rtnl_mdba_router_attrs_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 21dfeaa3e9ccd0885d92a69e6f3e125d2d8be961..04505a15523c850be2c9289802747efd921e65eb 100644 (file)
@@ -1,2 +1,3 @@
+#value_indexed
 MDBA_ROUTER_UNSPEC     0
 MDBA_ROUTER_PORT       1
index 7081d57aa271aee225bdc8f4f49012dd6d324737..b072e70816c71bae5137e454cf0c7e9e1d70e7fc 100644 (file)
@@ -33,14 +33,52 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # 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
+static const struct xlat_data rtnl_mdba_router_pattr_attrs_xdata[] = {
+ [MDBA_ROUTER_PATTR_UNSPEC] = XLAT(MDBA_ROUTER_PATTR_UNSPEC),
+ #define XLAT_VAL_0 ((unsigned) (MDBA_ROUTER_PATTR_UNSPEC))
+ #define XLAT_STR_0 STRINGIFY(MDBA_ROUTER_PATTR_UNSPEC)
+ [MDBA_ROUTER_PATTR_TIMER] = XLAT(MDBA_ROUTER_PATTR_TIMER),
+ #define XLAT_VAL_1 ((unsigned) (MDBA_ROUTER_PATTR_TIMER))
+ #define XLAT_STR_1 STRINGIFY(MDBA_ROUTER_PATTR_TIMER)
+ [MDBA_ROUTER_PATTR_TYPE] = XLAT(MDBA_ROUTER_PATTR_TYPE),
+ #define XLAT_VAL_2 ((unsigned) (MDBA_ROUTER_PATTR_TYPE))
+ #define XLAT_STR_2 STRINGIFY(MDBA_ROUTER_PATTR_TYPE)
 };
+static
+const struct xlat rtnl_mdba_router_pattr_attrs[1] = { {
+ .data = rtnl_mdba_router_pattr_attrs_xdata,
+ .size = ARRAY_SIZE(rtnl_mdba_router_pattr_attrs_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 901e4f2fbed9c846e46ca843922dbf96ed27d1aa..c2964defdadd12f6b2d7856e018c8b253543280a 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 MDBA_ROUTER_PATTR_UNSPEC       0
 MDBA_ROUTER_PATTR_TIMER                1
 MDBA_ROUTER_PATTR_TYPE         2
index a31be6d93c041dda41bf70df244425082440b753..63897679b93652d1e28364ca6e1f2eb423840b4c 100644 (file)
@@ -94,6 +94,20 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define NDA_PROTOCOL 12
 #endif
+#if defined(NDA_NH_ID) || (defined(HAVE_DECL_NDA_NH_ID) && HAVE_DECL_NDA_NH_ID)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((NDA_NH_ID) == (13), "NDA_NH_ID != 13");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define NDA_NH_ID 13
+#endif
+#if defined(NDA_FDB_EXT_ATTRS) || (defined(HAVE_DECL_NDA_FDB_EXT_ATTRS) && HAVE_DECL_NDA_FDB_EXT_ATTRS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((NDA_FDB_EXT_ATTRS) == (14), "NDA_FDB_EXT_ATTRS != 14");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define NDA_FDB_EXT_ATTRS 14
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
@@ -103,24 +117,184 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat rtnl_neigh_attrs[] = {
- XLAT(NDA_UNSPEC),
- XLAT(NDA_DST),
- XLAT(NDA_LLADDR),
- XLAT(NDA_CACHEINFO),
- XLAT(NDA_PROBES),
- XLAT(NDA_VLAN),
- XLAT(NDA_PORT),
- XLAT(NDA_VNI),
- XLAT(NDA_IFINDEX),
- XLAT(NDA_MASTER),
- XLAT(NDA_LINK_NETNSID),
- XLAT(NDA_SRC_VNI),
- XLAT(NDA_PROTOCOL),
- XLAT_END
+static const struct xlat_data rtnl_neigh_attrs_xdata[] = {
+ [NDA_UNSPEC] = XLAT(NDA_UNSPEC),
+ #define XLAT_VAL_0 ((unsigned) (NDA_UNSPEC))
+ #define XLAT_STR_0 STRINGIFY(NDA_UNSPEC)
+ [NDA_DST] = XLAT(NDA_DST),
+ #define XLAT_VAL_1 ((unsigned) (NDA_DST))
+ #define XLAT_STR_1 STRINGIFY(NDA_DST)
+ [NDA_LLADDR] = XLAT(NDA_LLADDR),
+ #define XLAT_VAL_2 ((unsigned) (NDA_LLADDR))
+ #define XLAT_STR_2 STRINGIFY(NDA_LLADDR)
+ [NDA_CACHEINFO] = XLAT(NDA_CACHEINFO),
+ #define XLAT_VAL_3 ((unsigned) (NDA_CACHEINFO))
+ #define XLAT_STR_3 STRINGIFY(NDA_CACHEINFO)
+ [NDA_PROBES] = XLAT(NDA_PROBES),
+ #define XLAT_VAL_4 ((unsigned) (NDA_PROBES))
+ #define XLAT_STR_4 STRINGIFY(NDA_PROBES)
+ [NDA_VLAN] = XLAT(NDA_VLAN),
+ #define XLAT_VAL_5 ((unsigned) (NDA_VLAN))
+ #define XLAT_STR_5 STRINGIFY(NDA_VLAN)
+ [NDA_PORT] = XLAT(NDA_PORT),
+ #define XLAT_VAL_6 ((unsigned) (NDA_PORT))
+ #define XLAT_STR_6 STRINGIFY(NDA_PORT)
+ [NDA_VNI] = XLAT(NDA_VNI),
+ #define XLAT_VAL_7 ((unsigned) (NDA_VNI))
+ #define XLAT_STR_7 STRINGIFY(NDA_VNI)
+ [NDA_IFINDEX] = XLAT(NDA_IFINDEX),
+ #define XLAT_VAL_8 ((unsigned) (NDA_IFINDEX))
+ #define XLAT_STR_8 STRINGIFY(NDA_IFINDEX)
+ [NDA_MASTER] = XLAT(NDA_MASTER),
+ #define XLAT_VAL_9 ((unsigned) (NDA_MASTER))
+ #define XLAT_STR_9 STRINGIFY(NDA_MASTER)
+ [NDA_LINK_NETNSID] = XLAT(NDA_LINK_NETNSID),
+ #define XLAT_VAL_10 ((unsigned) (NDA_LINK_NETNSID))
+ #define XLAT_STR_10 STRINGIFY(NDA_LINK_NETNSID)
+ [NDA_SRC_VNI] = XLAT(NDA_SRC_VNI),
+ #define XLAT_VAL_11 ((unsigned) (NDA_SRC_VNI))
+ #define XLAT_STR_11 STRINGIFY(NDA_SRC_VNI)
+ [NDA_PROTOCOL] = XLAT(NDA_PROTOCOL),
+ #define XLAT_VAL_12 ((unsigned) (NDA_PROTOCOL))
+ #define XLAT_STR_12 STRINGIFY(NDA_PROTOCOL)
+ [NDA_NH_ID] = XLAT(NDA_NH_ID),
+ #define XLAT_VAL_13 ((unsigned) (NDA_NH_ID))
+ #define XLAT_STR_13 STRINGIFY(NDA_NH_ID)
+ [NDA_FDB_EXT_ATTRS] = XLAT(NDA_FDB_EXT_ATTRS),
+ #define XLAT_VAL_14 ((unsigned) (NDA_FDB_EXT_ATTRS))
+ #define XLAT_STR_14 STRINGIFY(NDA_FDB_EXT_ATTRS)
 };
+static
+const struct xlat rtnl_neigh_attrs[1] = { {
+ .data = rtnl_neigh_attrs_xdata,
+ .size = ARRAY_SIZE(rtnl_neigh_attrs_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index b59c63d2fbcf70b6eb1acb142eb1f47279b921de..5b09915f5010526a3604e63a85c5d03f681bd12b 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 NDA_UNSPEC             0
 NDA_DST                        1
 NDA_LLADDR             2
@@ -11,3 +12,5 @@ NDA_MASTER            9
 NDA_LINK_NETNSID       10
 NDA_SRC_VNI            11
 NDA_PROTOCOL           12
+NDA_NH_ID              13
+NDA_FDB_EXT_ATTRS      14
index 8768bab87537d3b0adde3e52a7a22e59d813f9f7..79d00d2f0744b5f30d97af58773014e66c2d1f1d 100644 (file)
@@ -82,21 +82,129 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat rtnl_neightbl_attrs[] = {
- XLAT(NDTA_UNSPEC),
- XLAT(NDTA_NAME),
- XLAT(NDTA_THRESH1),
- XLAT(NDTA_THRESH2),
- XLAT(NDTA_THRESH3),
- XLAT(NDTA_CONFIG),
- XLAT(NDTA_PARMS),
- XLAT(NDTA_STATS),
- XLAT(NDTA_GC_INTERVAL),
- XLAT(NDTA_PAD),
- XLAT_END
+static const struct xlat_data rtnl_neightbl_attrs_xdata[] = {
+ [NDTA_UNSPEC] = XLAT(NDTA_UNSPEC),
+ #define XLAT_VAL_0 ((unsigned) (NDTA_UNSPEC))
+ #define XLAT_STR_0 STRINGIFY(NDTA_UNSPEC)
+ [NDTA_NAME] = XLAT(NDTA_NAME),
+ #define XLAT_VAL_1 ((unsigned) (NDTA_NAME))
+ #define XLAT_STR_1 STRINGIFY(NDTA_NAME)
+ [NDTA_THRESH1] = XLAT(NDTA_THRESH1),
+ #define XLAT_VAL_2 ((unsigned) (NDTA_THRESH1))
+ #define XLAT_STR_2 STRINGIFY(NDTA_THRESH1)
+ [NDTA_THRESH2] = XLAT(NDTA_THRESH2),
+ #define XLAT_VAL_3 ((unsigned) (NDTA_THRESH2))
+ #define XLAT_STR_3 STRINGIFY(NDTA_THRESH2)
+ [NDTA_THRESH3] = XLAT(NDTA_THRESH3),
+ #define XLAT_VAL_4 ((unsigned) (NDTA_THRESH3))
+ #define XLAT_STR_4 STRINGIFY(NDTA_THRESH3)
+ [NDTA_CONFIG] = XLAT(NDTA_CONFIG),
+ #define XLAT_VAL_5 ((unsigned) (NDTA_CONFIG))
+ #define XLAT_STR_5 STRINGIFY(NDTA_CONFIG)
+ [NDTA_PARMS] = XLAT(NDTA_PARMS),
+ #define XLAT_VAL_6 ((unsigned) (NDTA_PARMS))
+ #define XLAT_STR_6 STRINGIFY(NDTA_PARMS)
+ [NDTA_STATS] = XLAT(NDTA_STATS),
+ #define XLAT_VAL_7 ((unsigned) (NDTA_STATS))
+ #define XLAT_STR_7 STRINGIFY(NDTA_STATS)
+ [NDTA_GC_INTERVAL] = XLAT(NDTA_GC_INTERVAL),
+ #define XLAT_VAL_8 ((unsigned) (NDTA_GC_INTERVAL))
+ #define XLAT_STR_8 STRINGIFY(NDTA_GC_INTERVAL)
+ [NDTA_PAD] = XLAT(NDTA_PAD),
+ #define XLAT_VAL_9 ((unsigned) (NDTA_PAD))
+ #define XLAT_STR_9 STRINGIFY(NDTA_PAD)
 };
+static
+const struct xlat rtnl_neightbl_attrs[1] = { {
+ .data = rtnl_neightbl_attrs_xdata,
+ .size = ARRAY_SIZE(rtnl_neightbl_attrs_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index ea840f669c81b0c71bf8544f6541a5df88181876..92982d2999c829475039bc8bd4c6c167a4939eae 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 NDTA_UNSPEC            0
 NDTA_NAME              1
 NDTA_THRESH1           2
index 75bbdec75a473e9691005ff6885bf799389d4a2c..3f4106c6af66281a51897eab870f7d582640a9e3 100644 (file)
@@ -145,30 +145,228 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat rtnl_neightbl_parms_attrs[] = {
- XLAT(NDTPA_UNSPEC),
- XLAT(NDTPA_IFINDEX),
- XLAT(NDTPA_REFCNT),
- XLAT(NDTPA_REACHABLE_TIME),
- XLAT(NDTPA_BASE_REACHABLE_TIME),
- XLAT(NDTPA_RETRANS_TIME),
- XLAT(NDTPA_GC_STALETIME),
- XLAT(NDTPA_DELAY_PROBE_TIME),
- XLAT(NDTPA_QUEUE_LEN),
- XLAT(NDTPA_APP_PROBES),
- XLAT(NDTPA_UCAST_PROBES),
- XLAT(NDTPA_MCAST_PROBES),
- XLAT(NDTPA_ANYCAST_DELAY),
- XLAT(NDTPA_PROXY_DELAY),
- XLAT(NDTPA_PROXY_QLEN),
- XLAT(NDTPA_LOCKTIME),
- XLAT(NDTPA_QUEUE_LENBYTES),
- XLAT(NDTPA_MCAST_REPROBES),
- XLAT(NDTPA_PAD),
- XLAT_END
+static const struct xlat_data rtnl_neightbl_parms_attrs_xdata[] = {
+ [NDTPA_UNSPEC] = XLAT(NDTPA_UNSPEC),
+ #define XLAT_VAL_0 ((unsigned) (NDTPA_UNSPEC))
+ #define XLAT_STR_0 STRINGIFY(NDTPA_UNSPEC)
+ [NDTPA_IFINDEX] = XLAT(NDTPA_IFINDEX),
+ #define XLAT_VAL_1 ((unsigned) (NDTPA_IFINDEX))
+ #define XLAT_STR_1 STRINGIFY(NDTPA_IFINDEX)
+ [NDTPA_REFCNT] = XLAT(NDTPA_REFCNT),
+ #define XLAT_VAL_2 ((unsigned) (NDTPA_REFCNT))
+ #define XLAT_STR_2 STRINGIFY(NDTPA_REFCNT)
+ [NDTPA_REACHABLE_TIME] = XLAT(NDTPA_REACHABLE_TIME),
+ #define XLAT_VAL_3 ((unsigned) (NDTPA_REACHABLE_TIME))
+ #define XLAT_STR_3 STRINGIFY(NDTPA_REACHABLE_TIME)
+ [NDTPA_BASE_REACHABLE_TIME] = XLAT(NDTPA_BASE_REACHABLE_TIME),
+ #define XLAT_VAL_4 ((unsigned) (NDTPA_BASE_REACHABLE_TIME))
+ #define XLAT_STR_4 STRINGIFY(NDTPA_BASE_REACHABLE_TIME)
+ [NDTPA_RETRANS_TIME] = XLAT(NDTPA_RETRANS_TIME),
+ #define XLAT_VAL_5 ((unsigned) (NDTPA_RETRANS_TIME))
+ #define XLAT_STR_5 STRINGIFY(NDTPA_RETRANS_TIME)
+ [NDTPA_GC_STALETIME] = XLAT(NDTPA_GC_STALETIME),
+ #define XLAT_VAL_6 ((unsigned) (NDTPA_GC_STALETIME))
+ #define XLAT_STR_6 STRINGIFY(NDTPA_GC_STALETIME)
+ [NDTPA_DELAY_PROBE_TIME] = XLAT(NDTPA_DELAY_PROBE_TIME),
+ #define XLAT_VAL_7 ((unsigned) (NDTPA_DELAY_PROBE_TIME))
+ #define XLAT_STR_7 STRINGIFY(NDTPA_DELAY_PROBE_TIME)
+ [NDTPA_QUEUE_LEN] = XLAT(NDTPA_QUEUE_LEN),
+ #define XLAT_VAL_8 ((unsigned) (NDTPA_QUEUE_LEN))
+ #define XLAT_STR_8 STRINGIFY(NDTPA_QUEUE_LEN)
+ [NDTPA_APP_PROBES] = XLAT(NDTPA_APP_PROBES),
+ #define XLAT_VAL_9 ((unsigned) (NDTPA_APP_PROBES))
+ #define XLAT_STR_9 STRINGIFY(NDTPA_APP_PROBES)
+ [NDTPA_UCAST_PROBES] = XLAT(NDTPA_UCAST_PROBES),
+ #define XLAT_VAL_10 ((unsigned) (NDTPA_UCAST_PROBES))
+ #define XLAT_STR_10 STRINGIFY(NDTPA_UCAST_PROBES)
+ [NDTPA_MCAST_PROBES] = XLAT(NDTPA_MCAST_PROBES),
+ #define XLAT_VAL_11 ((unsigned) (NDTPA_MCAST_PROBES))
+ #define XLAT_STR_11 STRINGIFY(NDTPA_MCAST_PROBES)
+ [NDTPA_ANYCAST_DELAY] = XLAT(NDTPA_ANYCAST_DELAY),
+ #define XLAT_VAL_12 ((unsigned) (NDTPA_ANYCAST_DELAY))
+ #define XLAT_STR_12 STRINGIFY(NDTPA_ANYCAST_DELAY)
+ [NDTPA_PROXY_DELAY] = XLAT(NDTPA_PROXY_DELAY),
+ #define XLAT_VAL_13 ((unsigned) (NDTPA_PROXY_DELAY))
+ #define XLAT_STR_13 STRINGIFY(NDTPA_PROXY_DELAY)
+ [NDTPA_PROXY_QLEN] = XLAT(NDTPA_PROXY_QLEN),
+ #define XLAT_VAL_14 ((unsigned) (NDTPA_PROXY_QLEN))
+ #define XLAT_STR_14 STRINGIFY(NDTPA_PROXY_QLEN)
+ [NDTPA_LOCKTIME] = XLAT(NDTPA_LOCKTIME),
+ #define XLAT_VAL_15 ((unsigned) (NDTPA_LOCKTIME))
+ #define XLAT_STR_15 STRINGIFY(NDTPA_LOCKTIME)
+ [NDTPA_QUEUE_LENBYTES] = XLAT(NDTPA_QUEUE_LENBYTES),
+ #define XLAT_VAL_16 ((unsigned) (NDTPA_QUEUE_LENBYTES))
+ #define XLAT_STR_16 STRINGIFY(NDTPA_QUEUE_LENBYTES)
+ [NDTPA_MCAST_REPROBES] = XLAT(NDTPA_MCAST_REPROBES),
+ #define XLAT_VAL_17 ((unsigned) (NDTPA_MCAST_REPROBES))
+ #define XLAT_STR_17 STRINGIFY(NDTPA_MCAST_REPROBES)
+ [NDTPA_PAD] = XLAT(NDTPA_PAD),
+ #define XLAT_VAL_18 ((unsigned) (NDTPA_PAD))
+ #define XLAT_STR_18 STRINGIFY(NDTPA_PAD)
 };
+static
+const struct xlat rtnl_neightbl_parms_attrs[1] = { {
+ .data = rtnl_neightbl_parms_attrs_xdata,
+ .size = ARRAY_SIZE(rtnl_neightbl_parms_attrs_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 9fcbff098edf8b6f8b5abf32de102855fcc49c7d..47f4adea148656810d63d66e895a850ad5114efa 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 NDTPA_UNSPEC                   0
 NDTPA_IFINDEX                  1
 NDTPA_REFCNT                   2
index d1d7c873ad5ec520f5bbbee46c6767ffad8e5fe6..db5cc626163071f452963abf0d8d70e6ecd2815d 100644 (file)
@@ -75,20 +75,118 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat rtnl_netconf_attrs[] = {
- XLAT(NETCONFA_UNSPEC),
- XLAT(NETCONFA_IFINDEX),
- XLAT(NETCONFA_FORWARDING),
- XLAT(NETCONFA_RP_FILTER),
- XLAT(NETCONFA_MC_FORWARDING),
- XLAT(NETCONFA_PROXY_NEIGH),
- XLAT(NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN),
- XLAT(NETCONFA_INPUT),
- XLAT(NETCONFA_BC_FORWARDING),
- XLAT_END
+static const struct xlat_data rtnl_netconf_attrs_xdata[] = {
+ [NETCONFA_UNSPEC] = XLAT(NETCONFA_UNSPEC),
+ #define XLAT_VAL_0 ((unsigned) (NETCONFA_UNSPEC))
+ #define XLAT_STR_0 STRINGIFY(NETCONFA_UNSPEC)
+ [NETCONFA_IFINDEX] = XLAT(NETCONFA_IFINDEX),
+ #define XLAT_VAL_1 ((unsigned) (NETCONFA_IFINDEX))
+ #define XLAT_STR_1 STRINGIFY(NETCONFA_IFINDEX)
+ [NETCONFA_FORWARDING] = XLAT(NETCONFA_FORWARDING),
+ #define XLAT_VAL_2 ((unsigned) (NETCONFA_FORWARDING))
+ #define XLAT_STR_2 STRINGIFY(NETCONFA_FORWARDING)
+ [NETCONFA_RP_FILTER] = XLAT(NETCONFA_RP_FILTER),
+ #define XLAT_VAL_3 ((unsigned) (NETCONFA_RP_FILTER))
+ #define XLAT_STR_3 STRINGIFY(NETCONFA_RP_FILTER)
+ [NETCONFA_MC_FORWARDING] = XLAT(NETCONFA_MC_FORWARDING),
+ #define XLAT_VAL_4 ((unsigned) (NETCONFA_MC_FORWARDING))
+ #define XLAT_STR_4 STRINGIFY(NETCONFA_MC_FORWARDING)
+ [NETCONFA_PROXY_NEIGH] = XLAT(NETCONFA_PROXY_NEIGH),
+ #define XLAT_VAL_5 ((unsigned) (NETCONFA_PROXY_NEIGH))
+ #define XLAT_STR_5 STRINGIFY(NETCONFA_PROXY_NEIGH)
+ [NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN] = XLAT(NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN),
+ #define XLAT_VAL_6 ((unsigned) (NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN))
+ #define XLAT_STR_6 STRINGIFY(NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN)
+ [NETCONFA_INPUT] = XLAT(NETCONFA_INPUT),
+ #define XLAT_VAL_7 ((unsigned) (NETCONFA_INPUT))
+ #define XLAT_STR_7 STRINGIFY(NETCONFA_INPUT)
+ [NETCONFA_BC_FORWARDING] = XLAT(NETCONFA_BC_FORWARDING),
+ #define XLAT_VAL_8 ((unsigned) (NETCONFA_BC_FORWARDING))
+ #define XLAT_STR_8 STRINGIFY(NETCONFA_BC_FORWARDING)
 };
+static
+const struct xlat rtnl_netconf_attrs[1] = { {
+ .data = rtnl_netconf_attrs_xdata,
+ .size = ARRAY_SIZE(rtnl_netconf_attrs_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 285398f56fa14560929e305e44b3867d2a5a0a44..3aab81eeed28fd63471b41fc975049a750d8c544 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 NETCONFA_UNSPEC                                0
 NETCONFA_IFINDEX                       1
 NETCONFA_FORWARDING                    2
index b532361c3daf935b6ad4cd433d74b40a6ca20ccb..9f37c2cc1cbfe1741a396d86d921be391cf7f1ae 100644 (file)
@@ -61,18 +61,96 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat rtnl_nsid_attrs[] = {
+static const struct xlat_data rtnl_nsid_attrs_xdata[] = {
  XLAT(NETNSA_NSID_NOT_ASSIGNED),
+ #define XLAT_VAL_0 ((unsigned) (NETNSA_NSID_NOT_ASSIGNED))
+ #define XLAT_STR_0 STRINGIFY(NETNSA_NSID_NOT_ASSIGNED)
  XLAT(NETNSA_NONE),
+ #define XLAT_VAL_1 ((unsigned) (NETNSA_NONE))
+ #define XLAT_STR_1 STRINGIFY(NETNSA_NONE)
  XLAT(NETNSA_NSID),
+ #define XLAT_VAL_2 ((unsigned) (NETNSA_NSID))
+ #define XLAT_STR_2 STRINGIFY(NETNSA_NSID)
  XLAT(NETNSA_PID),
+ #define XLAT_VAL_3 ((unsigned) (NETNSA_PID))
+ #define XLAT_STR_3 STRINGIFY(NETNSA_PID)
  XLAT(NETNSA_FD),
+ #define XLAT_VAL_4 ((unsigned) (NETNSA_FD))
+ #define XLAT_STR_4 STRINGIFY(NETNSA_FD)
  XLAT(NETNSA_TARGET_NSID),
+ #define XLAT_VAL_5 ((unsigned) (NETNSA_TARGET_NSID))
+ #define XLAT_STR_5 STRINGIFY(NETNSA_TARGET_NSID)
  XLAT(NETNSA_CURRENT_NSID),
- XLAT_END
+ #define XLAT_VAL_6 ((unsigned) (NETNSA_CURRENT_NSID))
+ #define XLAT_STR_6 STRINGIFY(NETNSA_CURRENT_NSID)
 };
+static
+const struct xlat rtnl_nsid_attrs[1] = { {
+ .data = rtnl_nsid_attrs_xdata,
+ .size = ARRAY_SIZE(rtnl_nsid_attrs_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index a3d646907c83dcf3e4ee8e0bc12291d14c50f73c..be58f694da37bb52c97f562970311c11448c6f16 100644 (file)
@@ -222,41 +222,349 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat rtnl_route_attrs[] = {
- XLAT(RTA_UNSPEC),
- XLAT(RTA_DST),
- XLAT(RTA_SRC),
- XLAT(RTA_IIF),
- XLAT(RTA_OIF),
- XLAT(RTA_GATEWAY),
- XLAT(RTA_PRIORITY),
- XLAT(RTA_PREFSRC),
- XLAT(RTA_METRICS),
- XLAT(RTA_MULTIPATH),
- XLAT(RTA_PROTOINFO),
- XLAT(RTA_FLOW),
- XLAT(RTA_CACHEINFO),
- XLAT(RTA_SESSION),
- XLAT(RTA_MP_ALGO),
- XLAT(RTA_TABLE),
- XLAT(RTA_MARK),
- XLAT(RTA_MFC_STATS),
- XLAT(RTA_VIA),
- XLAT(RTA_NEWDST),
- XLAT(RTA_PREF),
- XLAT(RTA_ENCAP_TYPE),
- XLAT(RTA_ENCAP),
- XLAT(RTA_EXPIRES),
- XLAT(RTA_PAD),
- XLAT(RTA_UID),
- XLAT(RTA_TTL_PROPAGATE),
- XLAT(RTA_IP_PROTO),
- XLAT(RTA_SPORT),
- XLAT(RTA_DPORT),
- XLAT_END
+static const struct xlat_data rtnl_route_attrs_xdata[] = {
+ [RTA_UNSPEC] = XLAT(RTA_UNSPEC),
+ #define XLAT_VAL_0 ((unsigned) (RTA_UNSPEC))
+ #define XLAT_STR_0 STRINGIFY(RTA_UNSPEC)
+ [RTA_DST] = XLAT(RTA_DST),
+ #define XLAT_VAL_1 ((unsigned) (RTA_DST))
+ #define XLAT_STR_1 STRINGIFY(RTA_DST)
+ [RTA_SRC] = XLAT(RTA_SRC),
+ #define XLAT_VAL_2 ((unsigned) (RTA_SRC))
+ #define XLAT_STR_2 STRINGIFY(RTA_SRC)
+ [RTA_IIF] = XLAT(RTA_IIF),
+ #define XLAT_VAL_3 ((unsigned) (RTA_IIF))
+ #define XLAT_STR_3 STRINGIFY(RTA_IIF)
+ [RTA_OIF] = XLAT(RTA_OIF),
+ #define XLAT_VAL_4 ((unsigned) (RTA_OIF))
+ #define XLAT_STR_4 STRINGIFY(RTA_OIF)
+ [RTA_GATEWAY] = XLAT(RTA_GATEWAY),
+ #define XLAT_VAL_5 ((unsigned) (RTA_GATEWAY))
+ #define XLAT_STR_5 STRINGIFY(RTA_GATEWAY)
+ [RTA_PRIORITY] = XLAT(RTA_PRIORITY),
+ #define XLAT_VAL_6 ((unsigned) (RTA_PRIORITY))
+ #define XLAT_STR_6 STRINGIFY(RTA_PRIORITY)
+ [RTA_PREFSRC] = XLAT(RTA_PREFSRC),
+ #define XLAT_VAL_7 ((unsigned) (RTA_PREFSRC))
+ #define XLAT_STR_7 STRINGIFY(RTA_PREFSRC)
+ [RTA_METRICS] = XLAT(RTA_METRICS),
+ #define XLAT_VAL_8 ((unsigned) (RTA_METRICS))
+ #define XLAT_STR_8 STRINGIFY(RTA_METRICS)
+ [RTA_MULTIPATH] = XLAT(RTA_MULTIPATH),
+ #define XLAT_VAL_9 ((unsigned) (RTA_MULTIPATH))
+ #define XLAT_STR_9 STRINGIFY(RTA_MULTIPATH)
+ [RTA_PROTOINFO] = XLAT(RTA_PROTOINFO),
+ #define XLAT_VAL_10 ((unsigned) (RTA_PROTOINFO))
+ #define XLAT_STR_10 STRINGIFY(RTA_PROTOINFO)
+ [RTA_FLOW] = XLAT(RTA_FLOW),
+ #define XLAT_VAL_11 ((unsigned) (RTA_FLOW))
+ #define XLAT_STR_11 STRINGIFY(RTA_FLOW)
+ [RTA_CACHEINFO] = XLAT(RTA_CACHEINFO),
+ #define XLAT_VAL_12 ((unsigned) (RTA_CACHEINFO))
+ #define XLAT_STR_12 STRINGIFY(RTA_CACHEINFO)
+ [RTA_SESSION] = XLAT(RTA_SESSION),
+ #define XLAT_VAL_13 ((unsigned) (RTA_SESSION))
+ #define XLAT_STR_13 STRINGIFY(RTA_SESSION)
+ [RTA_MP_ALGO] = XLAT(RTA_MP_ALGO),
+ #define XLAT_VAL_14 ((unsigned) (RTA_MP_ALGO))
+ #define XLAT_STR_14 STRINGIFY(RTA_MP_ALGO)
+ [RTA_TABLE] = XLAT(RTA_TABLE),
+ #define XLAT_VAL_15 ((unsigned) (RTA_TABLE))
+ #define XLAT_STR_15 STRINGIFY(RTA_TABLE)
+ [RTA_MARK] = XLAT(RTA_MARK),
+ #define XLAT_VAL_16 ((unsigned) (RTA_MARK))
+ #define XLAT_STR_16 STRINGIFY(RTA_MARK)
+ [RTA_MFC_STATS] = XLAT(RTA_MFC_STATS),
+ #define XLAT_VAL_17 ((unsigned) (RTA_MFC_STATS))
+ #define XLAT_STR_17 STRINGIFY(RTA_MFC_STATS)
+ [RTA_VIA] = XLAT(RTA_VIA),
+ #define XLAT_VAL_18 ((unsigned) (RTA_VIA))
+ #define XLAT_STR_18 STRINGIFY(RTA_VIA)
+ [RTA_NEWDST] = XLAT(RTA_NEWDST),
+ #define XLAT_VAL_19 ((unsigned) (RTA_NEWDST))
+ #define XLAT_STR_19 STRINGIFY(RTA_NEWDST)
+ [RTA_PREF] = XLAT(RTA_PREF),
+ #define XLAT_VAL_20 ((unsigned) (RTA_PREF))
+ #define XLAT_STR_20 STRINGIFY(RTA_PREF)
+ [RTA_ENCAP_TYPE] = XLAT(RTA_ENCAP_TYPE),
+ #define XLAT_VAL_21 ((unsigned) (RTA_ENCAP_TYPE))
+ #define XLAT_STR_21 STRINGIFY(RTA_ENCAP_TYPE)
+ [RTA_ENCAP] = XLAT(RTA_ENCAP),
+ #define XLAT_VAL_22 ((unsigned) (RTA_ENCAP))
+ #define XLAT_STR_22 STRINGIFY(RTA_ENCAP)
+ [RTA_EXPIRES] = XLAT(RTA_EXPIRES),
+ #define XLAT_VAL_23 ((unsigned) (RTA_EXPIRES))
+ #define XLAT_STR_23 STRINGIFY(RTA_EXPIRES)
+ [RTA_PAD] = XLAT(RTA_PAD),
+ #define XLAT_VAL_24 ((unsigned) (RTA_PAD))
+ #define XLAT_STR_24 STRINGIFY(RTA_PAD)
+ [RTA_UID] = XLAT(RTA_UID),
+ #define XLAT_VAL_25 ((unsigned) (RTA_UID))
+ #define XLAT_STR_25 STRINGIFY(RTA_UID)
+ [RTA_TTL_PROPAGATE] = XLAT(RTA_TTL_PROPAGATE),
+ #define XLAT_VAL_26 ((unsigned) (RTA_TTL_PROPAGATE))
+ #define XLAT_STR_26 STRINGIFY(RTA_TTL_PROPAGATE)
+ [RTA_IP_PROTO] = XLAT(RTA_IP_PROTO),
+ #define XLAT_VAL_27 ((unsigned) (RTA_IP_PROTO))
+ #define XLAT_STR_27 STRINGIFY(RTA_IP_PROTO)
+ [RTA_SPORT] = XLAT(RTA_SPORT),
+ #define XLAT_VAL_28 ((unsigned) (RTA_SPORT))
+ #define XLAT_STR_28 STRINGIFY(RTA_SPORT)
+ [RTA_DPORT] = XLAT(RTA_DPORT),
+ #define XLAT_VAL_29 ((unsigned) (RTA_DPORT))
+ #define XLAT_STR_29 STRINGIFY(RTA_DPORT)
 };
+static
+const struct xlat rtnl_route_attrs[1] = { {
+ .data = rtnl_route_attrs_xdata,
+ .size = ARRAY_SIZE(rtnl_route_attrs_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index bfd765801fd28d00179f8542a03dbb5b2ce781f1..dd7c973e3d7a7ba336edfab28f0217fe4ec36dcb 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 RTA_UNSPEC             0
 RTA_DST                        1
 RTA_SRC                        2
index b4414592b1e50ad24b82d15c44990268a8c4acb4..36be3719439c75f09005e9ca79e70baf1f2a7074 100644 (file)
@@ -131,28 +131,206 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat rtnl_rta_metrics_attrs[] = {
- XLAT(RTAX_UNSPEC),
- XLAT(RTAX_LOCK),
- XLAT(RTAX_MTU),
- XLAT(RTAX_WINDOW),
- XLAT(RTAX_RTT),
- XLAT(RTAX_RTTVAR),
- XLAT(RTAX_SSTHRESH),
- XLAT(RTAX_CWND),
- XLAT(RTAX_ADVMSS),
- XLAT(RTAX_REORDERING),
- XLAT(RTAX_HOPLIMIT),
- XLAT(RTAX_INITCWND),
- XLAT(RTAX_FEATURES),
- XLAT(RTAX_RTO_MIN),
- XLAT(RTAX_INITRWND),
- XLAT(RTAX_QUICKACK),
- XLAT(RTAX_CC_ALGO),
- XLAT_END
+static const struct xlat_data rtnl_rta_metrics_attrs_xdata[] = {
+ [RTAX_UNSPEC] = XLAT(RTAX_UNSPEC),
+ #define XLAT_VAL_0 ((unsigned) (RTAX_UNSPEC))
+ #define XLAT_STR_0 STRINGIFY(RTAX_UNSPEC)
+ [RTAX_LOCK] = XLAT(RTAX_LOCK),
+ #define XLAT_VAL_1 ((unsigned) (RTAX_LOCK))
+ #define XLAT_STR_1 STRINGIFY(RTAX_LOCK)
+ [RTAX_MTU] = XLAT(RTAX_MTU),
+ #define XLAT_VAL_2 ((unsigned) (RTAX_MTU))
+ #define XLAT_STR_2 STRINGIFY(RTAX_MTU)
+ [RTAX_WINDOW] = XLAT(RTAX_WINDOW),
+ #define XLAT_VAL_3 ((unsigned) (RTAX_WINDOW))
+ #define XLAT_STR_3 STRINGIFY(RTAX_WINDOW)
+ [RTAX_RTT] = XLAT(RTAX_RTT),
+ #define XLAT_VAL_4 ((unsigned) (RTAX_RTT))
+ #define XLAT_STR_4 STRINGIFY(RTAX_RTT)
+ [RTAX_RTTVAR] = XLAT(RTAX_RTTVAR),
+ #define XLAT_VAL_5 ((unsigned) (RTAX_RTTVAR))
+ #define XLAT_STR_5 STRINGIFY(RTAX_RTTVAR)
+ [RTAX_SSTHRESH] = XLAT(RTAX_SSTHRESH),
+ #define XLAT_VAL_6 ((unsigned) (RTAX_SSTHRESH))
+ #define XLAT_STR_6 STRINGIFY(RTAX_SSTHRESH)
+ [RTAX_CWND] = XLAT(RTAX_CWND),
+ #define XLAT_VAL_7 ((unsigned) (RTAX_CWND))
+ #define XLAT_STR_7 STRINGIFY(RTAX_CWND)
+ [RTAX_ADVMSS] = XLAT(RTAX_ADVMSS),
+ #define XLAT_VAL_8 ((unsigned) (RTAX_ADVMSS))
+ #define XLAT_STR_8 STRINGIFY(RTAX_ADVMSS)
+ [RTAX_REORDERING] = XLAT(RTAX_REORDERING),
+ #define XLAT_VAL_9 ((unsigned) (RTAX_REORDERING))
+ #define XLAT_STR_9 STRINGIFY(RTAX_REORDERING)
+ [RTAX_HOPLIMIT] = XLAT(RTAX_HOPLIMIT),
+ #define XLAT_VAL_10 ((unsigned) (RTAX_HOPLIMIT))
+ #define XLAT_STR_10 STRINGIFY(RTAX_HOPLIMIT)
+ [RTAX_INITCWND] = XLAT(RTAX_INITCWND),
+ #define XLAT_VAL_11 ((unsigned) (RTAX_INITCWND))
+ #define XLAT_STR_11 STRINGIFY(RTAX_INITCWND)
+ [RTAX_FEATURES] = XLAT(RTAX_FEATURES),
+ #define XLAT_VAL_12 ((unsigned) (RTAX_FEATURES))
+ #define XLAT_STR_12 STRINGIFY(RTAX_FEATURES)
+ [RTAX_RTO_MIN] = XLAT(RTAX_RTO_MIN),
+ #define XLAT_VAL_13 ((unsigned) (RTAX_RTO_MIN))
+ #define XLAT_STR_13 STRINGIFY(RTAX_RTO_MIN)
+ [RTAX_INITRWND] = XLAT(RTAX_INITRWND),
+ #define XLAT_VAL_14 ((unsigned) (RTAX_INITRWND))
+ #define XLAT_STR_14 STRINGIFY(RTAX_INITRWND)
+ [RTAX_QUICKACK] = XLAT(RTAX_QUICKACK),
+ #define XLAT_VAL_15 ((unsigned) (RTAX_QUICKACK))
+ #define XLAT_STR_15 STRINGIFY(RTAX_QUICKACK)
+ [RTAX_CC_ALGO] = XLAT(RTAX_CC_ALGO),
+ #define XLAT_VAL_16 ((unsigned) (RTAX_CC_ALGO))
+ #define XLAT_STR_16 STRINGIFY(RTAX_CC_ALGO)
 };
+static
+const struct xlat rtnl_rta_metrics_attrs[1] = { {
+ .data = rtnl_rta_metrics_attrs_xdata,
+ .size = ARRAY_SIZE(rtnl_rta_metrics_attrs_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 2a683332190a9fb4c6e5e8e16018a4e3f96566b8..17d7a9a13801f659028624f84cf2d157fe121c87 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 RTAX_UNSPEC    0
 RTAX_LOCK      1
 RTAX_MTU       2
index 683bbee292e1d63b14bddf05b7f76cf88208b4e4..fc622d623ed31b632683862e420ee24e1df0bfd0 100644 (file)
@@ -187,36 +187,294 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat rtnl_rule_attrs[] = {
- XLAT(FRA_UNSPEC),
- XLAT(FRA_DST),
- XLAT(FRA_SRC),
- XLAT(FRA_IIFNAME),
- XLAT(FRA_GOTO),
- XLAT(FRA_UNUSED2),
- XLAT(FRA_PRIORITY),
- XLAT(FRA_UNUSED3),
- XLAT(FRA_UNUSED4),
- XLAT(FRA_UNUSED5),
- XLAT(FRA_FWMARK),
- XLAT(FRA_FLOW),
- XLAT(FRA_TUN_ID),
- XLAT(FRA_SUPPRESS_IFGROUP),
- XLAT(FRA_SUPPRESS_PREFIXLEN),
- XLAT(FRA_TABLE),
- XLAT(FRA_FWMASK),
- XLAT(FRA_OIFNAME),
- XLAT(FRA_PAD),
- XLAT(FRA_L3MDEV),
- XLAT(FRA_UID_RANGE),
- XLAT(FRA_PROTOCOL),
- XLAT(FRA_IP_PROTO),
- XLAT(FRA_SPORT_RANGE),
- XLAT(FRA_DPORT_RANGE),
- XLAT_END
+static const struct xlat_data rtnl_rule_attrs_xdata[] = {
+ [FRA_UNSPEC] = XLAT(FRA_UNSPEC),
+ #define XLAT_VAL_0 ((unsigned) (FRA_UNSPEC))
+ #define XLAT_STR_0 STRINGIFY(FRA_UNSPEC)
+ [FRA_DST] = XLAT(FRA_DST),
+ #define XLAT_VAL_1 ((unsigned) (FRA_DST))
+ #define XLAT_STR_1 STRINGIFY(FRA_DST)
+ [FRA_SRC] = XLAT(FRA_SRC),
+ #define XLAT_VAL_2 ((unsigned) (FRA_SRC))
+ #define XLAT_STR_2 STRINGIFY(FRA_SRC)
+ [FRA_IIFNAME] = XLAT(FRA_IIFNAME),
+ #define XLAT_VAL_3 ((unsigned) (FRA_IIFNAME))
+ #define XLAT_STR_3 STRINGIFY(FRA_IIFNAME)
+ [FRA_GOTO] = XLAT(FRA_GOTO),
+ #define XLAT_VAL_4 ((unsigned) (FRA_GOTO))
+ #define XLAT_STR_4 STRINGIFY(FRA_GOTO)
+ [FRA_UNUSED2] = XLAT(FRA_UNUSED2),
+ #define XLAT_VAL_5 ((unsigned) (FRA_UNUSED2))
+ #define XLAT_STR_5 STRINGIFY(FRA_UNUSED2)
+ [FRA_PRIORITY] = XLAT(FRA_PRIORITY),
+ #define XLAT_VAL_6 ((unsigned) (FRA_PRIORITY))
+ #define XLAT_STR_6 STRINGIFY(FRA_PRIORITY)
+ [FRA_UNUSED3] = XLAT(FRA_UNUSED3),
+ #define XLAT_VAL_7 ((unsigned) (FRA_UNUSED3))
+ #define XLAT_STR_7 STRINGIFY(FRA_UNUSED3)
+ [FRA_UNUSED4] = XLAT(FRA_UNUSED4),
+ #define XLAT_VAL_8 ((unsigned) (FRA_UNUSED4))
+ #define XLAT_STR_8 STRINGIFY(FRA_UNUSED4)
+ [FRA_UNUSED5] = XLAT(FRA_UNUSED5),
+ #define XLAT_VAL_9 ((unsigned) (FRA_UNUSED5))
+ #define XLAT_STR_9 STRINGIFY(FRA_UNUSED5)
+ [FRA_FWMARK] = XLAT(FRA_FWMARK),
+ #define XLAT_VAL_10 ((unsigned) (FRA_FWMARK))
+ #define XLAT_STR_10 STRINGIFY(FRA_FWMARK)
+ [FRA_FLOW] = XLAT(FRA_FLOW),
+ #define XLAT_VAL_11 ((unsigned) (FRA_FLOW))
+ #define XLAT_STR_11 STRINGIFY(FRA_FLOW)
+ [FRA_TUN_ID] = XLAT(FRA_TUN_ID),
+ #define XLAT_VAL_12 ((unsigned) (FRA_TUN_ID))
+ #define XLAT_STR_12 STRINGIFY(FRA_TUN_ID)
+ [FRA_SUPPRESS_IFGROUP] = XLAT(FRA_SUPPRESS_IFGROUP),
+ #define XLAT_VAL_13 ((unsigned) (FRA_SUPPRESS_IFGROUP))
+ #define XLAT_STR_13 STRINGIFY(FRA_SUPPRESS_IFGROUP)
+ [FRA_SUPPRESS_PREFIXLEN] = XLAT(FRA_SUPPRESS_PREFIXLEN),
+ #define XLAT_VAL_14 ((unsigned) (FRA_SUPPRESS_PREFIXLEN))
+ #define XLAT_STR_14 STRINGIFY(FRA_SUPPRESS_PREFIXLEN)
+ [FRA_TABLE] = XLAT(FRA_TABLE),
+ #define XLAT_VAL_15 ((unsigned) (FRA_TABLE))
+ #define XLAT_STR_15 STRINGIFY(FRA_TABLE)
+ [FRA_FWMASK] = XLAT(FRA_FWMASK),
+ #define XLAT_VAL_16 ((unsigned) (FRA_FWMASK))
+ #define XLAT_STR_16 STRINGIFY(FRA_FWMASK)
+ [FRA_OIFNAME] = XLAT(FRA_OIFNAME),
+ #define XLAT_VAL_17 ((unsigned) (FRA_OIFNAME))
+ #define XLAT_STR_17 STRINGIFY(FRA_OIFNAME)
+ [FRA_PAD] = XLAT(FRA_PAD),
+ #define XLAT_VAL_18 ((unsigned) (FRA_PAD))
+ #define XLAT_STR_18 STRINGIFY(FRA_PAD)
+ [FRA_L3MDEV] = XLAT(FRA_L3MDEV),
+ #define XLAT_VAL_19 ((unsigned) (FRA_L3MDEV))
+ #define XLAT_STR_19 STRINGIFY(FRA_L3MDEV)
+ [FRA_UID_RANGE] = XLAT(FRA_UID_RANGE),
+ #define XLAT_VAL_20 ((unsigned) (FRA_UID_RANGE))
+ #define XLAT_STR_20 STRINGIFY(FRA_UID_RANGE)
+ [FRA_PROTOCOL] = XLAT(FRA_PROTOCOL),
+ #define XLAT_VAL_21 ((unsigned) (FRA_PROTOCOL))
+ #define XLAT_STR_21 STRINGIFY(FRA_PROTOCOL)
+ [FRA_IP_PROTO] = XLAT(FRA_IP_PROTO),
+ #define XLAT_VAL_22 ((unsigned) (FRA_IP_PROTO))
+ #define XLAT_STR_22 STRINGIFY(FRA_IP_PROTO)
+ [FRA_SPORT_RANGE] = XLAT(FRA_SPORT_RANGE),
+ #define XLAT_VAL_23 ((unsigned) (FRA_SPORT_RANGE))
+ #define XLAT_STR_23 STRINGIFY(FRA_SPORT_RANGE)
+ [FRA_DPORT_RANGE] = XLAT(FRA_DPORT_RANGE),
+ #define XLAT_VAL_24 ((unsigned) (FRA_DPORT_RANGE))
+ #define XLAT_STR_24 STRINGIFY(FRA_DPORT_RANGE)
 };
+static
+const struct xlat rtnl_rule_attrs[1] = { {
+ .data = rtnl_rule_attrs_xdata,
+ .size = ARRAY_SIZE(rtnl_rule_attrs_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 96ab44275964370a2cccfc418a68cf0ae1d5ca7f..4552f2a28cb7df5c99c12b8636d4bfd34b429558 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 FRA_UNSPEC             0
 FRA_DST                        1
 FRA_SRC                        2
index 03990c5f555060157a1a72d96cda234243e1b3b4..f47e6a1ded62b05d8eb3fe89373bb15b06665f2f 100644 (file)
@@ -52,6 +52,27 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define TCA_ACT_COOKIE 6
 #endif
+#if defined(TCA_ACT_FLAGS) || (defined(HAVE_DECL_TCA_ACT_FLAGS) && HAVE_DECL_TCA_ACT_FLAGS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TCA_ACT_FLAGS) == (7), "TCA_ACT_FLAGS != 7");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TCA_ACT_FLAGS 7
+#endif
+#if defined(TCA_ACT_HW_STATS) || (defined(HAVE_DECL_TCA_ACT_HW_STATS) && HAVE_DECL_TCA_ACT_HW_STATS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TCA_ACT_HW_STATS) == (8), "TCA_ACT_HW_STATS != 8");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TCA_ACT_HW_STATS 8
+#endif
+#if defined(TCA_ACT_USED_HW_STATS) || (defined(HAVE_DECL_TCA_ACT_USED_HW_STATS) && HAVE_DECL_TCA_ACT_USED_HW_STATS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TCA_ACT_USED_HW_STATS) == (9), "TCA_ACT_USED_HW_STATS != 9");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TCA_ACT_USED_HW_STATS 9
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
@@ -61,18 +82,129 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat rtnl_tc_action_attrs[] = {
- XLAT(TCA_ACT_UNSPEC),
- XLAT(TCA_ACT_KIND),
- XLAT(TCA_ACT_OPTIONS),
- XLAT(TCA_ACT_INDEX),
- XLAT(TCA_ACT_STATS),
- XLAT(TCA_ACT_PAD),
- XLAT(TCA_ACT_COOKIE),
- XLAT_END
+static const struct xlat_data rtnl_tc_action_attrs_xdata[] = {
+ [TCA_ACT_UNSPEC] = XLAT(TCA_ACT_UNSPEC),
+ #define XLAT_VAL_0 ((unsigned) (TCA_ACT_UNSPEC))
+ #define XLAT_STR_0 STRINGIFY(TCA_ACT_UNSPEC)
+ [TCA_ACT_KIND] = XLAT(TCA_ACT_KIND),
+ #define XLAT_VAL_1 ((unsigned) (TCA_ACT_KIND))
+ #define XLAT_STR_1 STRINGIFY(TCA_ACT_KIND)
+ [TCA_ACT_OPTIONS] = XLAT(TCA_ACT_OPTIONS),
+ #define XLAT_VAL_2 ((unsigned) (TCA_ACT_OPTIONS))
+ #define XLAT_STR_2 STRINGIFY(TCA_ACT_OPTIONS)
+ [TCA_ACT_INDEX] = XLAT(TCA_ACT_INDEX),
+ #define XLAT_VAL_3 ((unsigned) (TCA_ACT_INDEX))
+ #define XLAT_STR_3 STRINGIFY(TCA_ACT_INDEX)
+ [TCA_ACT_STATS] = XLAT(TCA_ACT_STATS),
+ #define XLAT_VAL_4 ((unsigned) (TCA_ACT_STATS))
+ #define XLAT_STR_4 STRINGIFY(TCA_ACT_STATS)
+ [TCA_ACT_PAD] = XLAT(TCA_ACT_PAD),
+ #define XLAT_VAL_5 ((unsigned) (TCA_ACT_PAD))
+ #define XLAT_STR_5 STRINGIFY(TCA_ACT_PAD)
+ [TCA_ACT_COOKIE] = XLAT(TCA_ACT_COOKIE),
+ #define XLAT_VAL_6 ((unsigned) (TCA_ACT_COOKIE))
+ #define XLAT_STR_6 STRINGIFY(TCA_ACT_COOKIE)
+ [TCA_ACT_FLAGS] = XLAT(TCA_ACT_FLAGS),
+ #define XLAT_VAL_7 ((unsigned) (TCA_ACT_FLAGS))
+ #define XLAT_STR_7 STRINGIFY(TCA_ACT_FLAGS)
+ [TCA_ACT_HW_STATS] = XLAT(TCA_ACT_HW_STATS),
+ #define XLAT_VAL_8 ((unsigned) (TCA_ACT_HW_STATS))
+ #define XLAT_STR_8 STRINGIFY(TCA_ACT_HW_STATS)
+ [TCA_ACT_USED_HW_STATS] = XLAT(TCA_ACT_USED_HW_STATS),
+ #define XLAT_VAL_9 ((unsigned) (TCA_ACT_USED_HW_STATS))
+ #define XLAT_STR_9 STRINGIFY(TCA_ACT_USED_HW_STATS)
 };
+static
+const struct xlat rtnl_tc_action_attrs[1] = { {
+ .data = rtnl_tc_action_attrs_xdata,
+ .size = ARRAY_SIZE(rtnl_tc_action_attrs_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index ebb3dd472d3b9bf6fddc2b01b096e70d22c00c3e..dcf9f407fd11871df069278826995ce39737bab2 100644 (file)
@@ -1,3 +1,6 @@
+#value_indexed
+#enum
+#include <linux/pkt_cls.h>
 TCA_ACT_UNSPEC         0
 TCA_ACT_KIND           1
 TCA_ACT_OPTIONS                2
@@ -5,3 +8,6 @@ TCA_ACT_INDEX           3
 TCA_ACT_STATS          4
 TCA_ACT_PAD            5
 TCA_ACT_COOKIE         6
+TCA_ACT_FLAGS          7
+TCA_ACT_HW_STATS       8
+TCA_ACT_USED_HW_STATS  9
diff --git a/xlat/rtnl_tc_action_attrs.m4 b/xlat/rtnl_tc_action_attrs.m4
new file mode 100644 (file)
index 0000000..57d2928
--- /dev/null
@@ -0,0 +1,16 @@
+dnl Generated by ./xlat/gen.sh from ./xlat/rtnl_tc_action_attrs.in; do not edit.
+AC_DEFUN([st_CHECK_ENUMS_rtnl_tc_action_attrs],[
+AC_CHECK_DECLS(m4_normalize([
+TCA_ACT_UNSPEC,
+TCA_ACT_KIND,
+TCA_ACT_OPTIONS,
+TCA_ACT_INDEX,
+TCA_ACT_STATS,
+TCA_ACT_PAD,
+TCA_ACT_COOKIE,
+TCA_ACT_FLAGS,
+TCA_ACT_HW_STATS,
+TCA_ACT_USED_HW_STATS
+]),,, [
+#include <linux/pkt_cls.h>
+])])])
index fc0dedca58a35021b44ba64c4c0898fea661fe63..94973e5a4d592eec499eddeca82919412e107a88 100644 (file)
@@ -108,6 +108,13 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define TCA_EGRESS_BLOCK 14
 #endif
+#if defined(TCA_DUMP_FLAGS) || (defined(HAVE_DECL_TCA_DUMP_FLAGS) && HAVE_DECL_TCA_DUMP_FLAGS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TCA_DUMP_FLAGS) == (15), "TCA_DUMP_FLAGS != 15");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TCA_DUMP_FLAGS 15
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
@@ -117,26 +124,195 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat rtnl_tc_attrs[] = {
- XLAT(TCA_UNSPEC),
- XLAT(TCA_KIND),
- XLAT(TCA_OPTIONS),
- XLAT(TCA_STATS),
- XLAT(TCA_XSTATS),
- XLAT(TCA_RATE),
- XLAT(TCA_FCNT),
- XLAT(TCA_STATS2),
- XLAT(TCA_STAB),
- XLAT(TCA_PAD),
- XLAT(TCA_DUMP_INVISIBLE),
- XLAT(TCA_CHAIN),
- XLAT(TCA_HW_OFFLOAD),
- XLAT(TCA_INGRESS_BLOCK),
- XLAT(TCA_EGRESS_BLOCK),
- XLAT_END
+static const struct xlat_data rtnl_tc_attrs_xdata[] = {
+ [TCA_UNSPEC] = XLAT(TCA_UNSPEC),
+ #define XLAT_VAL_0 ((unsigned) (TCA_UNSPEC))
+ #define XLAT_STR_0 STRINGIFY(TCA_UNSPEC)
+ [TCA_KIND] = XLAT(TCA_KIND),
+ #define XLAT_VAL_1 ((unsigned) (TCA_KIND))
+ #define XLAT_STR_1 STRINGIFY(TCA_KIND)
+ [TCA_OPTIONS] = XLAT(TCA_OPTIONS),
+ #define XLAT_VAL_2 ((unsigned) (TCA_OPTIONS))
+ #define XLAT_STR_2 STRINGIFY(TCA_OPTIONS)
+ [TCA_STATS] = XLAT(TCA_STATS),
+ #define XLAT_VAL_3 ((unsigned) (TCA_STATS))
+ #define XLAT_STR_3 STRINGIFY(TCA_STATS)
+ [TCA_XSTATS] = XLAT(TCA_XSTATS),
+ #define XLAT_VAL_4 ((unsigned) (TCA_XSTATS))
+ #define XLAT_STR_4 STRINGIFY(TCA_XSTATS)
+ [TCA_RATE] = XLAT(TCA_RATE),
+ #define XLAT_VAL_5 ((unsigned) (TCA_RATE))
+ #define XLAT_STR_5 STRINGIFY(TCA_RATE)
+ [TCA_FCNT] = XLAT(TCA_FCNT),
+ #define XLAT_VAL_6 ((unsigned) (TCA_FCNT))
+ #define XLAT_STR_6 STRINGIFY(TCA_FCNT)
+ [TCA_STATS2] = XLAT(TCA_STATS2),
+ #define XLAT_VAL_7 ((unsigned) (TCA_STATS2))
+ #define XLAT_STR_7 STRINGIFY(TCA_STATS2)
+ [TCA_STAB] = XLAT(TCA_STAB),
+ #define XLAT_VAL_8 ((unsigned) (TCA_STAB))
+ #define XLAT_STR_8 STRINGIFY(TCA_STAB)
+ [TCA_PAD] = XLAT(TCA_PAD),
+ #define XLAT_VAL_9 ((unsigned) (TCA_PAD))
+ #define XLAT_STR_9 STRINGIFY(TCA_PAD)
+ [TCA_DUMP_INVISIBLE] = XLAT(TCA_DUMP_INVISIBLE),
+ #define XLAT_VAL_10 ((unsigned) (TCA_DUMP_INVISIBLE))
+ #define XLAT_STR_10 STRINGIFY(TCA_DUMP_INVISIBLE)
+ [TCA_CHAIN] = XLAT(TCA_CHAIN),
+ #define XLAT_VAL_11 ((unsigned) (TCA_CHAIN))
+ #define XLAT_STR_11 STRINGIFY(TCA_CHAIN)
+ [TCA_HW_OFFLOAD] = XLAT(TCA_HW_OFFLOAD),
+ #define XLAT_VAL_12 ((unsigned) (TCA_HW_OFFLOAD))
+ #define XLAT_STR_12 STRINGIFY(TCA_HW_OFFLOAD)
+ [TCA_INGRESS_BLOCK] = XLAT(TCA_INGRESS_BLOCK),
+ #define XLAT_VAL_13 ((unsigned) (TCA_INGRESS_BLOCK))
+ #define XLAT_STR_13 STRINGIFY(TCA_INGRESS_BLOCK)
+ [TCA_EGRESS_BLOCK] = XLAT(TCA_EGRESS_BLOCK),
+ #define XLAT_VAL_14 ((unsigned) (TCA_EGRESS_BLOCK))
+ #define XLAT_STR_14 STRINGIFY(TCA_EGRESS_BLOCK)
+ [TCA_DUMP_FLAGS] = XLAT(TCA_DUMP_FLAGS),
+ #define XLAT_VAL_15 ((unsigned) (TCA_DUMP_FLAGS))
+ #define XLAT_STR_15 STRINGIFY(TCA_DUMP_FLAGS)
 };
+static
+const struct xlat rtnl_tc_attrs[1] = { {
+ .data = rtnl_tc_attrs_xdata,
+ .size = ARRAY_SIZE(rtnl_tc_attrs_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index b3cdcf4e0af49f595cc4d13efa15d5689a13bac7..d822920c1755871e7e40f1e9a4f3a7a4f5621fb8 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 TCA_UNSPEC             0
 TCA_KIND               1
 TCA_OPTIONS            2
@@ -13,3 +14,4 @@ TCA_CHAIN             11
 TCA_HW_OFFLOAD         12
 TCA_INGRESS_BLOCK      13
 TCA_EGRESS_BLOCK       14
+TCA_DUMP_FLAGS         15
diff --git a/xlat/rtnl_tca_act_flags.h b/xlat/rtnl_tca_act_flags.h
new file mode 100644 (file)
index 0000000..f945f74
--- /dev/null
@@ -0,0 +1,48 @@
+/* Generated by ./xlat/gen.sh from ./xlat/rtnl_tca_act_flags.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(TCA_ACT_FLAGS_NO_PERCPU_STATS) || (defined(HAVE_DECL_TCA_ACT_FLAGS_NO_PERCPU_STATS) && HAVE_DECL_TCA_ACT_FLAGS_NO_PERCPU_STATS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TCA_ACT_FLAGS_NO_PERCPU_STATS) == (1), "TCA_ACT_FLAGS_NO_PERCPU_STATS != 1");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TCA_ACT_FLAGS_NO_PERCPU_STATS 1
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat rtnl_tca_act_flags in mpers mode
+
+# else
+
+static const struct xlat_data rtnl_tca_act_flags_xdata[] = {
+ XLAT(TCA_ACT_FLAGS_NO_PERCPU_STATS),
+ #define XLAT_VAL_0 ((unsigned) (TCA_ACT_FLAGS_NO_PERCPU_STATS))
+ #define XLAT_STR_0 STRINGIFY(TCA_ACT_FLAGS_NO_PERCPU_STATS)
+};
+static
+const struct xlat rtnl_tca_act_flags[1] = { {
+ .data = rtnl_tca_act_flags_xdata,
+ .size = ARRAY_SIZE(rtnl_tca_act_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/rtnl_tca_act_flags.in b/xlat/rtnl_tca_act_flags.in
new file mode 100644 (file)
index 0000000..2541b64
--- /dev/null
@@ -0,0 +1 @@
+TCA_ACT_FLAGS_NO_PERCPU_STATS  1
diff --git a/xlat/rtnl_tca_act_hw_stats.h b/xlat/rtnl_tca_act_hw_stats.h
new file mode 100644 (file)
index 0000000..3553394
--- /dev/null
@@ -0,0 +1,66 @@
+/* Generated by ./xlat/gen.sh from ./xlat/rtnl_tca_act_hw_stats.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(TCA_ACT_HW_STATS_IMMEDIATE) || (defined(HAVE_DECL_TCA_ACT_HW_STATS_IMMEDIATE) && HAVE_DECL_TCA_ACT_HW_STATS_IMMEDIATE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TCA_ACT_HW_STATS_IMMEDIATE) == ((1<<0)), "TCA_ACT_HW_STATS_IMMEDIATE != (1<<0)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TCA_ACT_HW_STATS_IMMEDIATE (1<<0)
+#endif
+#if defined(TCA_ACT_HW_STATS_DELAYED) || (defined(HAVE_DECL_TCA_ACT_HW_STATS_DELAYED) && HAVE_DECL_TCA_ACT_HW_STATS_DELAYED)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TCA_ACT_HW_STATS_DELAYED) == ((1<<1)), "TCA_ACT_HW_STATS_DELAYED != (1<<1)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TCA_ACT_HW_STATS_DELAYED (1<<1)
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat rtnl_tca_act_hw_stats in mpers mode
+
+# else
+
+static const struct xlat_data rtnl_tca_act_hw_stats_xdata[] = {
+ XLAT(TCA_ACT_HW_STATS_IMMEDIATE),
+ #define XLAT_VAL_0 ((unsigned) (TCA_ACT_HW_STATS_IMMEDIATE))
+ #define XLAT_STR_0 STRINGIFY(TCA_ACT_HW_STATS_IMMEDIATE)
+ XLAT(TCA_ACT_HW_STATS_DELAYED),
+ #define XLAT_VAL_1 ((unsigned) (TCA_ACT_HW_STATS_DELAYED))
+ #define XLAT_STR_1 STRINGIFY(TCA_ACT_HW_STATS_DELAYED)
+};
+static
+const struct xlat rtnl_tca_act_hw_stats[1] = { {
+ .data = rtnl_tca_act_hw_stats_xdata,
+ .size = ARRAY_SIZE(rtnl_tca_act_hw_stats_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/rtnl_tca_act_hw_stats.in b/xlat/rtnl_tca_act_hw_stats.in
new file mode 100644 (file)
index 0000000..46eff98
--- /dev/null
@@ -0,0 +1,2 @@
+TCA_ACT_HW_STATS_IMMEDIATE     (1<<0)
+TCA_ACT_HW_STATS_DELAYED       (1<<1)
index ca2f16785cc4e21ca7dc0c29ea6f70badfcf5a08..8de61871341e5890b48c20dfb276238cf7406c0e 100644 (file)
@@ -33,14 +33,52 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat rtnl_tca_stab_attrs[] = {
- XLAT(TCA_STAB_UNSPEC),
- XLAT(TCA_STAB_BASE),
- XLAT(TCA_STAB_DATA),
- XLAT_END
+static const struct xlat_data rtnl_tca_stab_attrs_xdata[] = {
+ [TCA_STAB_UNSPEC] = XLAT(TCA_STAB_UNSPEC),
+ #define XLAT_VAL_0 ((unsigned) (TCA_STAB_UNSPEC))
+ #define XLAT_STR_0 STRINGIFY(TCA_STAB_UNSPEC)
+ [TCA_STAB_BASE] = XLAT(TCA_STAB_BASE),
+ #define XLAT_VAL_1 ((unsigned) (TCA_STAB_BASE))
+ #define XLAT_STR_1 STRINGIFY(TCA_STAB_BASE)
+ [TCA_STAB_DATA] = XLAT(TCA_STAB_DATA),
+ #define XLAT_VAL_2 ((unsigned) (TCA_STAB_DATA))
+ #define XLAT_STR_2 STRINGIFY(TCA_STAB_DATA)
 };
+static
+const struct xlat rtnl_tca_stab_attrs[1] = { {
+ .data = rtnl_tca_stab_attrs_xdata,
+ .size = ARRAY_SIZE(rtnl_tca_stab_attrs_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index dd3d6efcaf7104f86e0b5caf36ec96ae25c1a0bb..1c83326f0c0d41ff691f1185c8e693b77779bd0a 100644 (file)
@@ -1,3 +1,7 @@
+#value_indexed
+#enum
+#include <linux/types.h>
+#include <linux/pkt_sched.h>
 TCA_STAB_UNSPEC        0
 TCA_STAB_BASE  1
 TCA_STAB_DATA  2
diff --git a/xlat/rtnl_tca_stab_attrs.m4 b/xlat/rtnl_tca_stab_attrs.m4
new file mode 100644 (file)
index 0000000..4b8a307
--- /dev/null
@@ -0,0 +1,10 @@
+dnl Generated by ./xlat/gen.sh from ./xlat/rtnl_tca_stab_attrs.in; do not edit.
+AC_DEFUN([st_CHECK_ENUMS_rtnl_tca_stab_attrs],[
+AC_CHECK_DECLS(m4_normalize([
+TCA_STAB_UNSPEC,
+TCA_STAB_BASE,
+TCA_STAB_DATA
+]),,, [
+#include <linux/types.h>
+#include <linux/pkt_sched.h>
+])])])
index 501aa40981215130030b303b5442322b13fead6a..a6cefdcc9641e5d4bc5002a01ce0fd28f547ec23 100644 (file)
@@ -59,6 +59,13 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define TCA_STATS_BASIC_HW 7
 #endif
+#if defined(TCA_STATS_PKT64) || (defined(HAVE_DECL_TCA_STATS_PKT64) && HAVE_DECL_TCA_STATS_PKT64)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TCA_STATS_PKT64) == (8), "TCA_STATS_PKT64 != 8");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TCA_STATS_PKT64 8
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
@@ -68,19 +75,118 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # 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(TCA_STATS_BASIC_HW),
- XLAT_END
+static const struct xlat_data rtnl_tca_stats_attrs_xdata[] = {
+ [TCA_STATS_UNSPEC] = XLAT(TCA_STATS_UNSPEC),
+ #define XLAT_VAL_0 ((unsigned) (TCA_STATS_UNSPEC))
+ #define XLAT_STR_0 STRINGIFY(TCA_STATS_UNSPEC)
+ [TCA_STATS_BASIC] = XLAT(TCA_STATS_BASIC),
+ #define XLAT_VAL_1 ((unsigned) (TCA_STATS_BASIC))
+ #define XLAT_STR_1 STRINGIFY(TCA_STATS_BASIC)
+ [TCA_STATS_RATE_EST] = XLAT(TCA_STATS_RATE_EST),
+ #define XLAT_VAL_2 ((unsigned) (TCA_STATS_RATE_EST))
+ #define XLAT_STR_2 STRINGIFY(TCA_STATS_RATE_EST)
+ [TCA_STATS_QUEUE] = XLAT(TCA_STATS_QUEUE),
+ #define XLAT_VAL_3 ((unsigned) (TCA_STATS_QUEUE))
+ #define XLAT_STR_3 STRINGIFY(TCA_STATS_QUEUE)
+ [TCA_STATS_APP] = XLAT(TCA_STATS_APP),
+ #define XLAT_VAL_4 ((unsigned) (TCA_STATS_APP))
+ #define XLAT_STR_4 STRINGIFY(TCA_STATS_APP)
+ [TCA_STATS_RATE_EST64] = XLAT(TCA_STATS_RATE_EST64),
+ #define XLAT_VAL_5 ((unsigned) (TCA_STATS_RATE_EST64))
+ #define XLAT_STR_5 STRINGIFY(TCA_STATS_RATE_EST64)
+ [TCA_STATS_PAD] = XLAT(TCA_STATS_PAD),
+ #define XLAT_VAL_6 ((unsigned) (TCA_STATS_PAD))
+ #define XLAT_STR_6 STRINGIFY(TCA_STATS_PAD)
+ [TCA_STATS_BASIC_HW] = XLAT(TCA_STATS_BASIC_HW),
+ #define XLAT_VAL_7 ((unsigned) (TCA_STATS_BASIC_HW))
+ #define XLAT_STR_7 STRINGIFY(TCA_STATS_BASIC_HW)
+ [TCA_STATS_PKT64] = XLAT(TCA_STATS_PKT64),
+ #define XLAT_VAL_8 ((unsigned) (TCA_STATS_PKT64))
+ #define XLAT_STR_8 STRINGIFY(TCA_STATS_PKT64)
 };
+static
+const struct xlat rtnl_tca_stats_attrs[1] = { {
+ .data = rtnl_tca_stats_attrs_xdata,
+ .size = ARRAY_SIZE(rtnl_tca_stats_attrs_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 82b8a3378d1489c1648ca2c64f59e0d95d5e7e32..ad19d313699e66df7c3bd2946a365a4bb047c98e 100644 (file)
@@ -1,3 +1,6 @@
+#value_indexed
+#enum
+#include <linux/gen_stats.h>
 TCA_STATS_UNSPEC       0
 TCA_STATS_BASIC                1
 TCA_STATS_RATE_EST     2
@@ -6,3 +9,4 @@ TCA_STATS_APP           4
 TCA_STATS_RATE_EST64   5
 TCA_STATS_PAD          6
 TCA_STATS_BASIC_HW     7
+TCA_STATS_PKT64                8
diff --git a/xlat/rtnl_tca_stats_attrs.m4 b/xlat/rtnl_tca_stats_attrs.m4
new file mode 100644 (file)
index 0000000..6f793e6
--- /dev/null
@@ -0,0 +1,15 @@
+dnl Generated by ./xlat/gen.sh from ./xlat/rtnl_tca_stats_attrs.in; do not edit.
+AC_DEFUN([st_CHECK_ENUMS_rtnl_tca_stats_attrs],[
+AC_CHECK_DECLS(m4_normalize([
+TCA_STATS_UNSPEC,
+TCA_STATS_BASIC,
+TCA_STATS_RATE_EST,
+TCA_STATS_QUEUE,
+TCA_STATS_APP,
+TCA_STATS_RATE_EST64,
+TCA_STATS_PAD,
+TCA_STATS_BASIC_HW,
+TCA_STATS_PKT64
+]),,, [
+#include <linux/gen_stats.h>
+])])])
index 9b410e8f75ebbc44460c81ee2e1bb949e209ae3f..7b883d254bc4bfaaca42ac6b87f4e289d94bf874 100644 (file)
@@ -41,22 +41,75 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 #ifndef XLAT_MACROS_ONLY
 
-# ifdef IN_MPERS
+# ifndef IN_MPERS
 
-#  error static const struct xlat rwf_flags in mpers mode
-
-# else
-
-static
-const struct xlat rwf_flags[] = {
+static const struct xlat_data rwf_flags_xdata[] = {
  XLAT(RWF_HIPRI),
+ #define XLAT_VAL_0 ((unsigned) (RWF_HIPRI))
+ #define XLAT_STR_0 STRINGIFY(RWF_HIPRI)
  XLAT(RWF_DSYNC),
+ #define XLAT_VAL_1 ((unsigned) (RWF_DSYNC))
+ #define XLAT_STR_1 STRINGIFY(RWF_DSYNC)
  XLAT(RWF_SYNC),
+ #define XLAT_VAL_2 ((unsigned) (RWF_SYNC))
+ #define XLAT_STR_2 STRINGIFY(RWF_SYNC)
  XLAT(RWF_NOWAIT),
+ #define XLAT_VAL_3 ((unsigned) (RWF_NOWAIT))
+ #define XLAT_STR_3 STRINGIFY(RWF_NOWAIT)
  XLAT(RWF_APPEND),
- XLAT_END
+ #define XLAT_VAL_4 ((unsigned) (RWF_APPEND))
+ #define XLAT_STR_4 STRINGIFY(RWF_APPEND)
 };
+const struct xlat rwf_flags[1] = { {
+ .data = rwf_flags_xdata,
+ .size = ARRAY_SIZE(rwf_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 9899819d23160a8c7cb7e31e5e8dffaf41c0e3cd..66e21311f76712c3b6df7f44474590eb6a73c79c 100644 (file)
@@ -47,16 +47,74 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat s390_guarded_storage_commands[] = {
- XLAT(GS_ENABLE),
- XLAT(GS_DISABLE),
- XLAT(GS_SET_BC_CB),
- XLAT(GS_CLEAR_BC_CB),
- XLAT(GS_BROADCAST),
- XLAT_END
+static const struct xlat_data s390_guarded_storage_commands_xdata[] = {
+ [GS_ENABLE] = XLAT(GS_ENABLE),
+ #define XLAT_VAL_0 ((unsigned) (GS_ENABLE))
+ #define XLAT_STR_0 STRINGIFY(GS_ENABLE)
+ [GS_DISABLE] = XLAT(GS_DISABLE),
+ #define XLAT_VAL_1 ((unsigned) (GS_DISABLE))
+ #define XLAT_STR_1 STRINGIFY(GS_DISABLE)
+ [GS_SET_BC_CB] = XLAT(GS_SET_BC_CB),
+ #define XLAT_VAL_2 ((unsigned) (GS_SET_BC_CB))
+ #define XLAT_STR_2 STRINGIFY(GS_SET_BC_CB)
+ [GS_CLEAR_BC_CB] = XLAT(GS_CLEAR_BC_CB),
+ #define XLAT_VAL_3 ((unsigned) (GS_CLEAR_BC_CB))
+ #define XLAT_STR_3 STRINGIFY(GS_CLEAR_BC_CB)
+ [GS_BROADCAST] = XLAT(GS_BROADCAST),
+ #define XLAT_VAL_4 ((unsigned) (GS_BROADCAST))
+ #define XLAT_STR_4 STRINGIFY(GS_BROADCAST)
 };
+static
+const struct xlat s390_guarded_storage_commands[1] = { {
+ .data = s390_guarded_storage_commands_xdata,
+ .size = ARRAY_SIZE(s390_guarded_storage_commands_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 410e33e787f060189c22fc1f712e428ed83993b3..e9a82dde81d7750e87d1a5881b2ce1be23cde8a1 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 GS_ENABLE      0
 GS_DISABLE     1
 GS_SET_BC_CB   2
index a33a97f0e0cde5e6054d83cfb3fce6ff867134a2..5855f9a2a932f09d0a620e8f2a7accfe8d56d7bf 100644 (file)
@@ -26,13 +26,41 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat s390_runtime_instr_commands[] = {
- XLAT(S390_RUNTIME_INSTR_START),
- XLAT(S390_RUNTIME_INSTR_STOP),
- XLAT_END
+static const struct xlat_data s390_runtime_instr_commands_xdata[] = {
+ [S390_RUNTIME_INSTR_START] = XLAT(S390_RUNTIME_INSTR_START),
+ #define XLAT_VAL_0 ((unsigned) (S390_RUNTIME_INSTR_START))
+ #define XLAT_STR_0 STRINGIFY(S390_RUNTIME_INSTR_START)
+ [S390_RUNTIME_INSTR_STOP] = XLAT(S390_RUNTIME_INSTR_STOP),
+ #define XLAT_VAL_1 ((unsigned) (S390_RUNTIME_INSTR_STOP))
+ #define XLAT_STR_1 STRINGIFY(S390_RUNTIME_INSTR_STOP)
 };
+static
+const struct xlat s390_runtime_instr_commands[1] = { {
+ .data = s390_runtime_instr_commands_xdata,
+ .size = ARRAY_SIZE(s390_runtime_instr_commands_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 395afc41985b445e82ac72a0ed80bd4c0e30accb..220acc4b5b3a424dbf39972f087544b0295b6374 100644 (file)
@@ -1,2 +1,3 @@
+#value_indexed
 S390_RUNTIME_INSTR_START       0x1
 S390_RUNTIME_INSTR_STOP                0x2
index df04b309bb1fa1ac217dc6927582a3f4532d61e4..7cd15f4a811bedd3d300778c8f17b008b70937e1 100644 (file)
@@ -19,12 +19,30 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat s390_sthyi_function_codes[] = {
+static const struct xlat_data s390_sthyi_function_codes_xdata[] = {
  XLAT(STHYI_FC_CP_IFL_CAP),
- XLAT_END
+ #define XLAT_VAL_0 ((unsigned) (STHYI_FC_CP_IFL_CAP))
+ #define XLAT_STR_0 STRINGIFY(STHYI_FC_CP_IFL_CAP)
 };
-
+static
+const struct xlat s390_sthyi_function_codes[1] = { {
+ .data = s390_sthyi_function_codes_xdata,
+ .size = ARRAY_SIZE(s390_sthyi_function_codes_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 796e4b75e3fd6b2a46eb7628597c32c75843274a..5d8e60b2e824c4973fe7abf1e7f18fc231df2d90 100644 (file)
 
 # else
 
-static
-const struct xlat sa_handler_values[] = {
+static const struct xlat_data sa_handler_values_xdata[] = {
 #if defined(SIG_ERR) || (defined(HAVE_DECL_SIG_ERR) && HAVE_DECL_SIG_ERR)
   XLAT_TYPE(unsigned long, SIG_ERR),
+ #define XLAT_VAL_0 ((unsigned long) (SIG_ERR))
+ #define XLAT_STR_0 STRINGIFY(SIG_ERR)
 #endif
 #if defined(SIG_DFL) || (defined(HAVE_DECL_SIG_DFL) && HAVE_DECL_SIG_DFL)
   XLAT_TYPE(unsigned long, SIG_DFL),
+ #define XLAT_VAL_1 ((unsigned long) (SIG_DFL))
+ #define XLAT_STR_1 STRINGIFY(SIG_DFL)
 #endif
 #if defined(SIG_IGN) || (defined(HAVE_DECL_SIG_IGN) && HAVE_DECL_SIG_IGN)
   XLAT_TYPE(unsigned long, SIG_IGN),
+ #define XLAT_VAL_2 ((unsigned long) (SIG_IGN))
+ #define XLAT_STR_2 STRINGIFY(SIG_IGN)
 #endif
- XLAT_END
 };
+static
+const struct xlat sa_handler_values[1] = { {
+ .data = sa_handler_values_xdata,
+ .size = ARRAY_SIZE(sa_handler_values_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 759994f155ef9abb3cb972f3481ea488783965fc..55e1e730242e74ed76cce9334ed9a94cf9a056ca 100644 (file)
@@ -5,24 +5,52 @@
 
 #if defined(SCHED_FLAG_RESET_ON_FORK) || (defined(HAVE_DECL_SCHED_FLAG_RESET_ON_FORK) && HAVE_DECL_SCHED_FLAG_RESET_ON_FORK)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((SCHED_FLAG_RESET_ON_FORK) == (1), "SCHED_FLAG_RESET_ON_FORK != 1");
+static_assert((SCHED_FLAG_RESET_ON_FORK) == (0x01), "SCHED_FLAG_RESET_ON_FORK != 0x01");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define SCHED_FLAG_RESET_ON_FORK 1
+# define SCHED_FLAG_RESET_ON_FORK 0x01
 #endif
 #if defined(SCHED_FLAG_RECLAIM) || (defined(HAVE_DECL_SCHED_FLAG_RECLAIM) && HAVE_DECL_SCHED_FLAG_RECLAIM)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((SCHED_FLAG_RECLAIM) == (2), "SCHED_FLAG_RECLAIM != 2");
+static_assert((SCHED_FLAG_RECLAIM) == (0x02), "SCHED_FLAG_RECLAIM != 0x02");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define SCHED_FLAG_RECLAIM 2
+# define SCHED_FLAG_RECLAIM 0x02
 #endif
 #if defined(SCHED_FLAG_DL_OVERRUN) || (defined(HAVE_DECL_SCHED_FLAG_DL_OVERRUN) && HAVE_DECL_SCHED_FLAG_DL_OVERRUN)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((SCHED_FLAG_DL_OVERRUN) == (4), "SCHED_FLAG_DL_OVERRUN != 4");
+static_assert((SCHED_FLAG_DL_OVERRUN) == (0x04), "SCHED_FLAG_DL_OVERRUN != 0x04");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define SCHED_FLAG_DL_OVERRUN 4
+# define SCHED_FLAG_DL_OVERRUN 0x04
+#endif
+#if defined(SCHED_FLAG_KEEP_POLICY) || (defined(HAVE_DECL_SCHED_FLAG_KEEP_POLICY) && HAVE_DECL_SCHED_FLAG_KEEP_POLICY)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((SCHED_FLAG_KEEP_POLICY) == (0x08), "SCHED_FLAG_KEEP_POLICY != 0x08");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define SCHED_FLAG_KEEP_POLICY 0x08
+#endif
+#if defined(SCHED_FLAG_KEEP_PARAMS) || (defined(HAVE_DECL_SCHED_FLAG_KEEP_PARAMS) && HAVE_DECL_SCHED_FLAG_KEEP_PARAMS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((SCHED_FLAG_KEEP_PARAMS) == (0x10), "SCHED_FLAG_KEEP_PARAMS != 0x10");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define SCHED_FLAG_KEEP_PARAMS 0x10
+#endif
+#if defined(SCHED_FLAG_UTIL_CLAMP_MIN) || (defined(HAVE_DECL_SCHED_FLAG_UTIL_CLAMP_MIN) && HAVE_DECL_SCHED_FLAG_UTIL_CLAMP_MIN)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((SCHED_FLAG_UTIL_CLAMP_MIN) == (0x20), "SCHED_FLAG_UTIL_CLAMP_MIN != 0x20");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define SCHED_FLAG_UTIL_CLAMP_MIN 0x20
+#endif
+#if defined(SCHED_FLAG_UTIL_CLAMP_MAX) || (defined(HAVE_DECL_SCHED_FLAG_UTIL_CLAMP_MAX) && HAVE_DECL_SCHED_FLAG_UTIL_CLAMP_MAX)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((SCHED_FLAG_UTIL_CLAMP_MAX) == (0x40), "SCHED_FLAG_UTIL_CLAMP_MAX != 0x40");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define SCHED_FLAG_UTIL_CLAMP_MAX 0x40
 #endif
 
 #ifndef XLAT_MACROS_ONLY
@@ -33,14 +61,96 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat sched_flags[] = {
+static const struct xlat_data sched_flags_xdata[] = {
  XLAT(SCHED_FLAG_RESET_ON_FORK),
+ #define XLAT_VAL_0 ((unsigned) (SCHED_FLAG_RESET_ON_FORK))
+ #define XLAT_STR_0 STRINGIFY(SCHED_FLAG_RESET_ON_FORK)
  XLAT(SCHED_FLAG_RECLAIM),
+ #define XLAT_VAL_1 ((unsigned) (SCHED_FLAG_RECLAIM))
+ #define XLAT_STR_1 STRINGIFY(SCHED_FLAG_RECLAIM)
  XLAT(SCHED_FLAG_DL_OVERRUN),
- XLAT_END
+ #define XLAT_VAL_2 ((unsigned) (SCHED_FLAG_DL_OVERRUN))
+ #define XLAT_STR_2 STRINGIFY(SCHED_FLAG_DL_OVERRUN)
+ XLAT(SCHED_FLAG_KEEP_POLICY),
+ #define XLAT_VAL_3 ((unsigned) (SCHED_FLAG_KEEP_POLICY))
+ #define XLAT_STR_3 STRINGIFY(SCHED_FLAG_KEEP_POLICY)
+ XLAT(SCHED_FLAG_KEEP_PARAMS),
+ #define XLAT_VAL_4 ((unsigned) (SCHED_FLAG_KEEP_PARAMS))
+ #define XLAT_STR_4 STRINGIFY(SCHED_FLAG_KEEP_PARAMS)
+ XLAT(SCHED_FLAG_UTIL_CLAMP_MIN),
+ #define XLAT_VAL_5 ((unsigned) (SCHED_FLAG_UTIL_CLAMP_MIN))
+ #define XLAT_STR_5 STRINGIFY(SCHED_FLAG_UTIL_CLAMP_MIN)
+ XLAT(SCHED_FLAG_UTIL_CLAMP_MAX),
+ #define XLAT_VAL_6 ((unsigned) (SCHED_FLAG_UTIL_CLAMP_MAX))
+ #define XLAT_STR_6 STRINGIFY(SCHED_FLAG_UTIL_CLAMP_MAX)
 };
+static
+const struct xlat sched_flags[1] = { {
+ .data = sched_flags_xdata,
+ .size = ARRAY_SIZE(sched_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 10c9066129675a216cf56e769281da085d264182..62698327eb15983ab4713affe1591ee86f059b16 100644 (file)
@@ -1,3 +1,7 @@
-SCHED_FLAG_RESET_ON_FORK       1
-SCHED_FLAG_RECLAIM             2
-SCHED_FLAG_DL_OVERRUN          4
+SCHED_FLAG_RESET_ON_FORK       0x01
+SCHED_FLAG_RECLAIM             0x02
+SCHED_FLAG_DL_OVERRUN          0x04
+SCHED_FLAG_KEEP_POLICY         0x08
+SCHED_FLAG_KEEP_PARAMS         0x10
+SCHED_FLAG_UTIL_CLAMP_MIN      0x20
+SCHED_FLAG_UTIL_CLAMP_MAX      0x40
index 2ce324f9d49949ff0bf583956757b93785948fdd..cc193914f6df359d3127b96da2265a527a9c2440 100644 (file)
 
 # else
 
-static
-const struct xlat schedulers[] = {
+static const struct xlat_data schedulers_xdata[] = {
 #if defined(SCHED_OTHER) || (defined(HAVE_DECL_SCHED_OTHER) && HAVE_DECL_SCHED_OTHER)
   XLAT(SCHED_OTHER),
+ #define XLAT_VAL_0 ((unsigned) (SCHED_OTHER))
+ #define XLAT_STR_0 STRINGIFY(SCHED_OTHER)
 #endif
 #if defined(SCHED_FIFO) || (defined(HAVE_DECL_SCHED_FIFO) && HAVE_DECL_SCHED_FIFO)
   XLAT(SCHED_FIFO),
+ #define XLAT_VAL_1 ((unsigned) (SCHED_FIFO))
+ #define XLAT_STR_1 STRINGIFY(SCHED_FIFO)
 #endif
 #if defined(SCHED_RR) || (defined(HAVE_DECL_SCHED_RR) && HAVE_DECL_SCHED_RR)
   XLAT(SCHED_RR),
+ #define XLAT_VAL_2 ((unsigned) (SCHED_RR))
+ #define XLAT_STR_2 STRINGIFY(SCHED_RR)
 #endif
 #if defined(SCHED_BATCH) || (defined(HAVE_DECL_SCHED_BATCH) && HAVE_DECL_SCHED_BATCH)
   XLAT(SCHED_BATCH),
+ #define XLAT_VAL_3 ((unsigned) (SCHED_BATCH))
+ #define XLAT_STR_3 STRINGIFY(SCHED_BATCH)
 #endif
 #if defined(SCHED_ISO) || (defined(HAVE_DECL_SCHED_ISO) && HAVE_DECL_SCHED_ISO)
   XLAT(SCHED_ISO),
+ #define XLAT_VAL_4 ((unsigned) (SCHED_ISO))
+ #define XLAT_STR_4 STRINGIFY(SCHED_ISO)
 #endif
 #if defined(SCHED_IDLE) || (defined(HAVE_DECL_SCHED_IDLE) && HAVE_DECL_SCHED_IDLE)
   XLAT(SCHED_IDLE),
+ #define XLAT_VAL_5 ((unsigned) (SCHED_IDLE))
+ #define XLAT_STR_5 STRINGIFY(SCHED_IDLE)
 #endif
 #if defined(SCHED_DEADLINE) || (defined(HAVE_DECL_SCHED_DEADLINE) && HAVE_DECL_SCHED_DEADLINE)
   XLAT(SCHED_DEADLINE),
+ #define XLAT_VAL_6 ((unsigned) (SCHED_DEADLINE))
+ #define XLAT_STR_6 STRINGIFY(SCHED_DEADLINE)
 #endif
- XLAT_END
 };
+static
+const struct xlat schedulers[1] = { {
+ .data = schedulers_xdata,
+ .size = ARRAY_SIZE(schedulers_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index a02ba9a1696d48bccf68afc8820082342522119b..01ba899e8c3c7a11142ecedbf3260a570a17f088 100644 (file)
@@ -83,55 +83,233 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat scmvals[] = {
+static const struct xlat_data scmvals_xdata[] = {
  XLAT(SCM_RIGHTS),
+ #define XLAT_VAL_0 ((unsigned) (SCM_RIGHTS))
+ #define XLAT_STR_0 STRINGIFY(SCM_RIGHTS)
  XLAT(SCM_CREDENTIALS),
+ #define XLAT_VAL_1 ((unsigned) (SCM_CREDENTIALS))
+ #define XLAT_STR_1 STRINGIFY(SCM_CREDENTIALS)
  XLAT(SCM_SECURITY),
+ #define XLAT_VAL_2 ((unsigned) (SCM_SECURITY))
+ #define XLAT_STR_2 STRINGIFY(SCM_SECURITY)
 
 #if defined(SO_WIFI_STATUS) || (defined(HAVE_DECL_SO_WIFI_STATUS) && HAVE_DECL_SO_WIFI_STATUS)
   XLAT(SO_WIFI_STATUS),
+ #define XLAT_VAL_3 ((unsigned) (SO_WIFI_STATUS))
+ #define XLAT_STR_3 STRINGIFY(SO_WIFI_STATUS)
 #endif
 #if defined(SO_TXTIME) || (defined(HAVE_DECL_SO_TXTIME) && HAVE_DECL_SO_TXTIME)
   XLAT(SO_TXTIME),
+ #define XLAT_VAL_4 ((unsigned) (SO_TXTIME))
+ #define XLAT_STR_4 STRINGIFY(SO_TXTIME)
 #endif
 #if defined(SO_TIMESTAMP_OLD) || (defined(HAVE_DECL_SO_TIMESTAMP_OLD) && HAVE_DECL_SO_TIMESTAMP_OLD)
   XLAT(SO_TIMESTAMP_OLD),
+ #define XLAT_VAL_5 ((unsigned) (SO_TIMESTAMP_OLD))
+ #define XLAT_STR_5 STRINGIFY(SO_TIMESTAMP_OLD)
 #endif
 #if defined(SO_TIMESTAMPNS_OLD) || (defined(HAVE_DECL_SO_TIMESTAMPNS_OLD) && HAVE_DECL_SO_TIMESTAMPNS_OLD)
   XLAT(SO_TIMESTAMPNS_OLD),
+ #define XLAT_VAL_6 ((unsigned) (SO_TIMESTAMPNS_OLD))
+ #define XLAT_STR_6 STRINGIFY(SO_TIMESTAMPNS_OLD)
 #endif
 #if defined(SO_TIMESTAMPING_OLD) || (defined(HAVE_DECL_SO_TIMESTAMPING_OLD) && HAVE_DECL_SO_TIMESTAMPING_OLD)
   XLAT(SO_TIMESTAMPING_OLD),
+ #define XLAT_VAL_7 ((unsigned) (SO_TIMESTAMPING_OLD))
+ #define XLAT_STR_7 STRINGIFY(SO_TIMESTAMPING_OLD)
 #endif
 #if defined(SO_TIMESTAMP_NEW) || (defined(HAVE_DECL_SO_TIMESTAMP_NEW) && HAVE_DECL_SO_TIMESTAMP_NEW)
   XLAT(SO_TIMESTAMP_NEW),
+ #define XLAT_VAL_8 ((unsigned) (SO_TIMESTAMP_NEW))
+ #define XLAT_STR_8 STRINGIFY(SO_TIMESTAMP_NEW)
 #endif
 #if defined(SO_TIMESTAMPNS_NEW) || (defined(HAVE_DECL_SO_TIMESTAMPNS_NEW) && HAVE_DECL_SO_TIMESTAMPNS_NEW)
   XLAT(SO_TIMESTAMPNS_NEW),
+ #define XLAT_VAL_9 ((unsigned) (SO_TIMESTAMPNS_NEW))
+ #define XLAT_STR_9 STRINGIFY(SO_TIMESTAMPNS_NEW)
 #endif
 #if defined(SO_TIMESTAMPING_NEW) || (defined(HAVE_DECL_SO_TIMESTAMPING_NEW) && HAVE_DECL_SO_TIMESTAMPING_NEW)
   XLAT(SO_TIMESTAMPING_NEW),
+ #define XLAT_VAL_10 ((unsigned) (SO_TIMESTAMPING_NEW))
+ #define XLAT_STR_10 STRINGIFY(SO_TIMESTAMPING_NEW)
 #endif
 
 
 #if defined __sparc__
  XLAT(SCM_TIMESTAMPING_OPT_STATS),
+ #define XLAT_VAL_11 ((unsigned) (SCM_TIMESTAMPING_OPT_STATS))
+ #define XLAT_STR_11 STRINGIFY(SCM_TIMESTAMPING_OPT_STATS)
 #elif defined __hppa__
  XLAT(SCM_TIMESTAMPING_OPT_STATS),
+ #define XLAT_VAL_12 ((unsigned) (SCM_TIMESTAMPING_OPT_STATS))
+ #define XLAT_STR_12 STRINGIFY(SCM_TIMESTAMPING_OPT_STATS)
 #else
  XLAT(SCM_TIMESTAMPING_OPT_STATS),
+ #define XLAT_VAL_13 ((unsigned) (SCM_TIMESTAMPING_OPT_STATS))
+ #define XLAT_STR_13 STRINGIFY(SCM_TIMESTAMPING_OPT_STATS)
 #endif
 #if defined __sparc__
  XLAT(SCM_TIMESTAMPING_PKTINFO),
+ #define XLAT_VAL_14 ((unsigned) (SCM_TIMESTAMPING_PKTINFO))
+ #define XLAT_STR_14 STRINGIFY(SCM_TIMESTAMPING_PKTINFO)
 #elif defined __hppa__
  XLAT(SCM_TIMESTAMPING_PKTINFO),
+ #define XLAT_VAL_15 ((unsigned) (SCM_TIMESTAMPING_PKTINFO))
+ #define XLAT_STR_15 STRINGIFY(SCM_TIMESTAMPING_PKTINFO)
 #else
  XLAT(SCM_TIMESTAMPING_PKTINFO),
+ #define XLAT_VAL_16 ((unsigned) (SCM_TIMESTAMPING_PKTINFO))
+ #define XLAT_STR_16 STRINGIFY(SCM_TIMESTAMPING_PKTINFO)
 #endif
- XLAT_END
 };
+static
+const struct xlat scmvals[1] = { {
+ .data = scmvals_xdata,
+ .size = ARRAY_SIZE(scmvals_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index b274b22592cc353016487d7d2e1c041aa72efa60..ebe04e2f20aaf5b237084a3fd2481de61927938a 100644 (file)
@@ -178,3 +178,303 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define SG_GET_ACCESS_COUNT 0x2289
 #endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat scsi_sg_commands in mpers mode
+
+# else
+
+static const struct xlat_data scsi_sg_commands_xdata[] = {
+ XLAT(SG_SET_TIMEOUT),
+ #define XLAT_VAL_0 ((unsigned) (SG_SET_TIMEOUT))
+ #define XLAT_STR_0 STRINGIFY(SG_SET_TIMEOUT)
+ XLAT(SG_GET_TIMEOUT),
+ #define XLAT_VAL_1 ((unsigned) (SG_GET_TIMEOUT))
+ #define XLAT_STR_1 STRINGIFY(SG_GET_TIMEOUT)
+ XLAT(SG_EMULATED_HOST),
+ #define XLAT_VAL_2 ((unsigned) (SG_EMULATED_HOST))
+ #define XLAT_STR_2 STRINGIFY(SG_EMULATED_HOST)
+ XLAT(SG_SET_TRANSFORM),
+ #define XLAT_VAL_3 ((unsigned) (SG_SET_TRANSFORM))
+ #define XLAT_STR_3 STRINGIFY(SG_SET_TRANSFORM)
+ XLAT(SG_GET_TRANSFORM),
+ #define XLAT_VAL_4 ((unsigned) (SG_GET_TRANSFORM))
+ #define XLAT_STR_4 STRINGIFY(SG_GET_TRANSFORM)
+ XLAT(SG_GET_COMMAND_Q),
+ #define XLAT_VAL_5 ((unsigned) (SG_GET_COMMAND_Q))
+ #define XLAT_STR_5 STRINGIFY(SG_GET_COMMAND_Q)
+ XLAT(SG_SET_COMMAND_Q),
+ #define XLAT_VAL_6 ((unsigned) (SG_SET_COMMAND_Q))
+ #define XLAT_STR_6 STRINGIFY(SG_SET_COMMAND_Q)
+ XLAT(SG_GET_RESERVED_SIZE),
+ #define XLAT_VAL_7 ((unsigned) (SG_GET_RESERVED_SIZE))
+ #define XLAT_STR_7 STRINGIFY(SG_GET_RESERVED_SIZE)
+ XLAT(SG_SET_RESERVED_SIZE),
+ #define XLAT_VAL_8 ((unsigned) (SG_SET_RESERVED_SIZE))
+ #define XLAT_STR_8 STRINGIFY(SG_SET_RESERVED_SIZE)
+ XLAT(SG_GET_SCSI_ID),
+ #define XLAT_VAL_9 ((unsigned) (SG_GET_SCSI_ID))
+ #define XLAT_STR_9 STRINGIFY(SG_GET_SCSI_ID)
+ XLAT(SG_SET_FORCE_LOW_DMA),
+ #define XLAT_VAL_10 ((unsigned) (SG_SET_FORCE_LOW_DMA))
+ #define XLAT_STR_10 STRINGIFY(SG_SET_FORCE_LOW_DMA)
+ XLAT(SG_GET_LOW_DMA),
+ #define XLAT_VAL_11 ((unsigned) (SG_GET_LOW_DMA))
+ #define XLAT_STR_11 STRINGIFY(SG_GET_LOW_DMA)
+ XLAT(SG_SET_FORCE_PACK_ID),
+ #define XLAT_VAL_12 ((unsigned) (SG_SET_FORCE_PACK_ID))
+ #define XLAT_STR_12 STRINGIFY(SG_SET_FORCE_PACK_ID)
+ XLAT(SG_GET_PACK_ID),
+ #define XLAT_VAL_13 ((unsigned) (SG_GET_PACK_ID))
+ #define XLAT_STR_13 STRINGIFY(SG_GET_PACK_ID)
+ XLAT(SG_GET_NUM_WAITING),
+ #define XLAT_VAL_14 ((unsigned) (SG_GET_NUM_WAITING))
+ #define XLAT_STR_14 STRINGIFY(SG_GET_NUM_WAITING)
+ XLAT(SG_SET_DEBUG),
+ #define XLAT_VAL_15 ((unsigned) (SG_SET_DEBUG))
+ #define XLAT_STR_15 STRINGIFY(SG_SET_DEBUG)
+ XLAT(SG_GET_SG_TABLESIZE),
+ #define XLAT_VAL_16 ((unsigned) (SG_GET_SG_TABLESIZE))
+ #define XLAT_STR_16 STRINGIFY(SG_GET_SG_TABLESIZE)
+ XLAT(SG_GET_VERSION_NUM),
+ #define XLAT_VAL_17 ((unsigned) (SG_GET_VERSION_NUM))
+ #define XLAT_STR_17 STRINGIFY(SG_GET_VERSION_NUM)
+ XLAT(SG_NEXT_CMD_LEN),
+ #define XLAT_VAL_18 ((unsigned) (SG_NEXT_CMD_LEN))
+ #define XLAT_STR_18 STRINGIFY(SG_NEXT_CMD_LEN)
+ XLAT(SG_SCSI_RESET),
+ #define XLAT_VAL_19 ((unsigned) (SG_SCSI_RESET))
+ #define XLAT_STR_19 STRINGIFY(SG_SCSI_RESET)
+ XLAT(SG_IO),
+ #define XLAT_VAL_20 ((unsigned) (SG_IO))
+ #define XLAT_STR_20 STRINGIFY(SG_IO)
+ XLAT(SG_GET_REQUEST_TABLE),
+ #define XLAT_VAL_21 ((unsigned) (SG_GET_REQUEST_TABLE))
+ #define XLAT_STR_21 STRINGIFY(SG_GET_REQUEST_TABLE)
+ XLAT(SG_SET_KEEP_ORPHAN),
+ #define XLAT_VAL_22 ((unsigned) (SG_SET_KEEP_ORPHAN))
+ #define XLAT_STR_22 STRINGIFY(SG_SET_KEEP_ORPHAN)
+ XLAT(SG_GET_KEEP_ORPHAN),
+ #define XLAT_VAL_23 ((unsigned) (SG_GET_KEEP_ORPHAN))
+ #define XLAT_STR_23 STRINGIFY(SG_GET_KEEP_ORPHAN)
+ XLAT(SG_GET_ACCESS_COUNT),
+ #define XLAT_VAL_24 ((unsigned) (SG_GET_ACCESS_COUNT))
+ #define XLAT_STR_24 STRINGIFY(SG_GET_ACCESS_COUNT)
+};
+static
+const struct xlat scsi_sg_commands[1] = { {
+ .data = scsi_sg_commands_xdata,
+ .size = ARRAY_SIZE(scsi_sg_commands_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
index e95e0d12af21528c19deb214301223ab02fbc254..44631b5335ceb9ad2655ea8c4dd4eff1e8dcc432 100644 (file)
@@ -23,4 +23,3 @@ SG_GET_REQUEST_TABLE  0x2286
 SG_SET_KEEP_ORPHAN     0x2287
 SG_GET_KEEP_ORPHAN     0x2288
 SG_GET_ACCESS_COUNT    0x2289
-#stop
index 50589302bb158d3b53d78bc1858a608b6e290b7b..c379b8a9211c58c73e5fdfb9c2d305becb3d40e4 100644 (file)
@@ -68,19 +68,107 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat secbits[] = {
+static const struct xlat_data secbits_xdata[] = {
  XLAT(SECBIT_NOROOT),
+ #define XLAT_VAL_0 ((unsigned) (SECBIT_NOROOT))
+ #define XLAT_STR_0 STRINGIFY(SECBIT_NOROOT)
  XLAT(SECBIT_NOROOT_LOCKED),
+ #define XLAT_VAL_1 ((unsigned) (SECBIT_NOROOT_LOCKED))
+ #define XLAT_STR_1 STRINGIFY(SECBIT_NOROOT_LOCKED)
  XLAT(SECBIT_NO_SETUID_FIXUP),
+ #define XLAT_VAL_2 ((unsigned) (SECBIT_NO_SETUID_FIXUP))
+ #define XLAT_STR_2 STRINGIFY(SECBIT_NO_SETUID_FIXUP)
  XLAT(SECBIT_NO_SETUID_FIXUP_LOCKED),
+ #define XLAT_VAL_3 ((unsigned) (SECBIT_NO_SETUID_FIXUP_LOCKED))
+ #define XLAT_STR_3 STRINGIFY(SECBIT_NO_SETUID_FIXUP_LOCKED)
  XLAT(SECBIT_KEEP_CAPS),
+ #define XLAT_VAL_4 ((unsigned) (SECBIT_KEEP_CAPS))
+ #define XLAT_STR_4 STRINGIFY(SECBIT_KEEP_CAPS)
  XLAT(SECBIT_KEEP_CAPS_LOCKED),
+ #define XLAT_VAL_5 ((unsigned) (SECBIT_KEEP_CAPS_LOCKED))
+ #define XLAT_STR_5 STRINGIFY(SECBIT_KEEP_CAPS_LOCKED)
  XLAT(SECBIT_NO_CAP_AMBIENT_RAISE),
+ #define XLAT_VAL_6 ((unsigned) (SECBIT_NO_CAP_AMBIENT_RAISE))
+ #define XLAT_STR_6 STRINGIFY(SECBIT_NO_CAP_AMBIENT_RAISE)
  XLAT(SECBIT_NO_CAP_AMBIENT_RAISE_LOCKED),
- XLAT_END
+ #define XLAT_VAL_7 ((unsigned) (SECBIT_NO_CAP_AMBIENT_RAISE_LOCKED))
+ #define XLAT_STR_7 STRINGIFY(SECBIT_NO_CAP_AMBIENT_RAISE_LOCKED)
 };
+static
+const struct xlat secbits[1] = { {
+ .data = secbits_xdata,
+ .size = ARRAY_SIZE(secbits_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index ae933f0963f2f18e48c68018e039478cee4da620..c2c2251bd86a1d94e209374ab0e0d41b954da277 100644 (file)
 
 #if defined(SECCOMP_FILTER_FLAG_TSYNC) || (defined(HAVE_DECL_SECCOMP_FILTER_FLAG_TSYNC) && HAVE_DECL_SECCOMP_FILTER_FLAG_TSYNC)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((SECCOMP_FILTER_FLAG_TSYNC) == (1), "SECCOMP_FILTER_FLAG_TSYNC != 1");
+static_assert((SECCOMP_FILTER_FLAG_TSYNC) == ((1<<0)), "SECCOMP_FILTER_FLAG_TSYNC != (1<<0)");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define SECCOMP_FILTER_FLAG_TSYNC 1
+# define SECCOMP_FILTER_FLAG_TSYNC (1<<0)
 #endif
 #if defined(SECCOMP_FILTER_FLAG_LOG) || (defined(HAVE_DECL_SECCOMP_FILTER_FLAG_LOG) && HAVE_DECL_SECCOMP_FILTER_FLAG_LOG)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((SECCOMP_FILTER_FLAG_LOG) == (2), "SECCOMP_FILTER_FLAG_LOG != 2");
+static_assert((SECCOMP_FILTER_FLAG_LOG) == ((1<<1)), "SECCOMP_FILTER_FLAG_LOG != (1<<1)");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define SECCOMP_FILTER_FLAG_LOG 2
+# define SECCOMP_FILTER_FLAG_LOG (1<<1)
 #endif
 #if defined(SECCOMP_FILTER_FLAG_SPEC_ALLOW) || (defined(HAVE_DECL_SECCOMP_FILTER_FLAG_SPEC_ALLOW) && HAVE_DECL_SECCOMP_FILTER_FLAG_SPEC_ALLOW)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((SECCOMP_FILTER_FLAG_SPEC_ALLOW) == (4), "SECCOMP_FILTER_FLAG_SPEC_ALLOW != 4");
+static_assert((SECCOMP_FILTER_FLAG_SPEC_ALLOW) == ((1<<2)), "SECCOMP_FILTER_FLAG_SPEC_ALLOW != (1<<2)");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define SECCOMP_FILTER_FLAG_SPEC_ALLOW 4
+# define SECCOMP_FILTER_FLAG_SPEC_ALLOW (1<<2)
 #endif
 #if defined(SECCOMP_FILTER_FLAG_NEW_LISTENER) || (defined(HAVE_DECL_SECCOMP_FILTER_FLAG_NEW_LISTENER) && HAVE_DECL_SECCOMP_FILTER_FLAG_NEW_LISTENER)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((SECCOMP_FILTER_FLAG_NEW_LISTENER) == (8), "SECCOMP_FILTER_FLAG_NEW_LISTENER != 8");
+static_assert((SECCOMP_FILTER_FLAG_NEW_LISTENER) == ((1<<3)), "SECCOMP_FILTER_FLAG_NEW_LISTENER != (1<<3)");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define SECCOMP_FILTER_FLAG_NEW_LISTENER 8
+# define SECCOMP_FILTER_FLAG_NEW_LISTENER (1<<3)
+#endif
+#if defined(SECCOMP_FILTER_FLAG_TSYNC_ESRCH) || (defined(HAVE_DECL_SECCOMP_FILTER_FLAG_TSYNC_ESRCH) && HAVE_DECL_SECCOMP_FILTER_FLAG_TSYNC_ESRCH)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((SECCOMP_FILTER_FLAG_TSYNC_ESRCH) == ((1<<4)), "SECCOMP_FILTER_FLAG_TSYNC_ESRCH != (1<<4)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define SECCOMP_FILTER_FLAG_TSYNC_ESRCH (1<<4)
 #endif
 
 #ifndef XLAT_MACROS_ONLY
 
 # ifndef IN_MPERS
 
-const struct xlat seccomp_filter_flags[] = {
+static const struct xlat_data seccomp_filter_flags_xdata[] = {
  XLAT(SECCOMP_FILTER_FLAG_TSYNC),
+ #define XLAT_VAL_0 ((unsigned) (SECCOMP_FILTER_FLAG_TSYNC))
+ #define XLAT_STR_0 STRINGIFY(SECCOMP_FILTER_FLAG_TSYNC)
  XLAT(SECCOMP_FILTER_FLAG_LOG),
+ #define XLAT_VAL_1 ((unsigned) (SECCOMP_FILTER_FLAG_LOG))
+ #define XLAT_STR_1 STRINGIFY(SECCOMP_FILTER_FLAG_LOG)
  XLAT(SECCOMP_FILTER_FLAG_SPEC_ALLOW),
+ #define XLAT_VAL_2 ((unsigned) (SECCOMP_FILTER_FLAG_SPEC_ALLOW))
+ #define XLAT_STR_2 STRINGIFY(SECCOMP_FILTER_FLAG_SPEC_ALLOW)
  XLAT(SECCOMP_FILTER_FLAG_NEW_LISTENER),
- XLAT_END
+ #define XLAT_VAL_3 ((unsigned) (SECCOMP_FILTER_FLAG_NEW_LISTENER))
+ #define XLAT_STR_3 STRINGIFY(SECCOMP_FILTER_FLAG_NEW_LISTENER)
+ XLAT(SECCOMP_FILTER_FLAG_TSYNC_ESRCH),
+ #define XLAT_VAL_4 ((unsigned) (SECCOMP_FILTER_FLAG_TSYNC_ESRCH))
+ #define XLAT_STR_4 STRINGIFY(SECCOMP_FILTER_FLAG_TSYNC_ESRCH)
 };
+const struct xlat seccomp_filter_flags[1] = { {
+ .data = seccomp_filter_flags_xdata,
+ .size = ARRAY_SIZE(seccomp_filter_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 8fc71de4db8e38fd6e108eac605ffd1b226393b2..af18f7011137e9504a4a92813563faddc32bbf46 100644 (file)
@@ -1,4 +1,5 @@
-SECCOMP_FILTER_FLAG_TSYNC 1
-SECCOMP_FILTER_FLAG_LOG 2
-SECCOMP_FILTER_FLAG_SPEC_ALLOW 4
-SECCOMP_FILTER_FLAG_NEW_LISTENER 8
+SECCOMP_FILTER_FLAG_TSYNC              (1<<0)
+SECCOMP_FILTER_FLAG_LOG                        (1<<1)
+SECCOMP_FILTER_FLAG_SPEC_ALLOW         (1<<2)
+SECCOMP_FILTER_FLAG_NEW_LISTENER       (1<<3)
+SECCOMP_FILTER_FLAG_TSYNC_ESRCH                (1<<4)
index bb5200f1a7b1e93d810328b1b848270354541821..e4a1cf70aad4eadaa7d5140f1ca8d65dab704a03 100644 (file)
@@ -33,14 +33,52 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat seccomp_mode[] = {
- XLAT(SECCOMP_MODE_DISABLED),
- XLAT(SECCOMP_MODE_STRICT),
- XLAT(SECCOMP_MODE_FILTER),
- XLAT_END
+static const struct xlat_data seccomp_mode_xdata[] = {
+ [SECCOMP_MODE_DISABLED] = XLAT(SECCOMP_MODE_DISABLED),
+ #define XLAT_VAL_0 ((unsigned) (SECCOMP_MODE_DISABLED))
+ #define XLAT_STR_0 STRINGIFY(SECCOMP_MODE_DISABLED)
+ [SECCOMP_MODE_STRICT] = XLAT(SECCOMP_MODE_STRICT),
+ #define XLAT_VAL_1 ((unsigned) (SECCOMP_MODE_STRICT))
+ #define XLAT_STR_1 STRINGIFY(SECCOMP_MODE_STRICT)
+ [SECCOMP_MODE_FILTER] = XLAT(SECCOMP_MODE_FILTER),
+ #define XLAT_VAL_2 ((unsigned) (SECCOMP_MODE_FILTER))
+ #define XLAT_STR_2 STRINGIFY(SECCOMP_MODE_FILTER)
 };
+static
+const struct xlat seccomp_mode[1] = { {
+ .data = seccomp_mode_xdata,
+ .size = ARRAY_SIZE(seccomp_mode_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index eed9faec19383293db6640dfadf2e39ccc762daf..bdaab34fbf247f7f7e5f4bc851116265398734e6 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 SECCOMP_MODE_DISABLED 0
 SECCOMP_MODE_STRICT 1
 SECCOMP_MODE_FILTER 2
index fd50d97c74cb099f06cf8acda9d9b14b44a3a935..eac568ddb6dccaf5008c8bc5aa2604ae0bd00d3e 100644 (file)
@@ -40,15 +40,63 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat seccomp_ops[] = {
- XLAT(SECCOMP_SET_MODE_STRICT),
- XLAT(SECCOMP_SET_MODE_FILTER),
- XLAT(SECCOMP_GET_ACTION_AVAIL),
- XLAT(SECCOMP_GET_NOTIF_SIZES),
- XLAT_END
+static const struct xlat_data seccomp_ops_xdata[] = {
+ [SECCOMP_SET_MODE_STRICT] = XLAT(SECCOMP_SET_MODE_STRICT),
+ #define XLAT_VAL_0 ((unsigned) (SECCOMP_SET_MODE_STRICT))
+ #define XLAT_STR_0 STRINGIFY(SECCOMP_SET_MODE_STRICT)
+ [SECCOMP_SET_MODE_FILTER] = XLAT(SECCOMP_SET_MODE_FILTER),
+ #define XLAT_VAL_1 ((unsigned) (SECCOMP_SET_MODE_FILTER))
+ #define XLAT_STR_1 STRINGIFY(SECCOMP_SET_MODE_FILTER)
+ [SECCOMP_GET_ACTION_AVAIL] = XLAT(SECCOMP_GET_ACTION_AVAIL),
+ #define XLAT_VAL_2 ((unsigned) (SECCOMP_GET_ACTION_AVAIL))
+ #define XLAT_STR_2 STRINGIFY(SECCOMP_GET_ACTION_AVAIL)
+ [SECCOMP_GET_NOTIF_SIZES] = XLAT(SECCOMP_GET_NOTIF_SIZES),
+ #define XLAT_VAL_3 ((unsigned) (SECCOMP_GET_NOTIF_SIZES))
+ #define XLAT_STR_3 STRINGIFY(SECCOMP_GET_NOTIF_SIZES)
 };
+static
+const struct xlat seccomp_ops[1] = { {
+ .data = seccomp_ops_xdata,
+ .size = ARRAY_SIZE(seccomp_ops_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 97de186f4543c56d66addf06b49f6a8413abc924..6695f25bdda7f08c2884aa564189159a19ee524a 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 SECCOMP_SET_MODE_STRICT 0
 SECCOMP_SET_MODE_FILTER 1
 SECCOMP_GET_ACTION_AVAIL 2
index e9074e002efa0a9bd8bf32c7f514680871fc7836..167cc4ae5558c3b61eb51615f8202459b7839365 100644 (file)
@@ -64,18 +64,106 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # ifndef IN_MPERS
 
-const struct xlat seccomp_ret_action[] = {
+static const struct xlat_data seccomp_ret_action_xdata[] = {
  XLAT(SECCOMP_RET_KILL_PROCESS),
+ #define XLAT_VAL_0 ((unsigned) (SECCOMP_RET_KILL_PROCESS))
+ #define XLAT_STR_0 STRINGIFY(SECCOMP_RET_KILL_PROCESS)
  XLAT(SECCOMP_RET_KILL_THREAD),
+ #define XLAT_VAL_1 ((unsigned) (SECCOMP_RET_KILL_THREAD))
+ #define XLAT_STR_1 STRINGIFY(SECCOMP_RET_KILL_THREAD)
  XLAT(SECCOMP_RET_TRAP),
+ #define XLAT_VAL_2 ((unsigned) (SECCOMP_RET_TRAP))
+ #define XLAT_STR_2 STRINGIFY(SECCOMP_RET_TRAP)
  XLAT(SECCOMP_RET_ERRNO),
+ #define XLAT_VAL_3 ((unsigned) (SECCOMP_RET_ERRNO))
+ #define XLAT_STR_3 STRINGIFY(SECCOMP_RET_ERRNO)
  XLAT(SECCOMP_RET_USER_NOTIF),
+ #define XLAT_VAL_4 ((unsigned) (SECCOMP_RET_USER_NOTIF))
+ #define XLAT_STR_4 STRINGIFY(SECCOMP_RET_USER_NOTIF)
  XLAT(SECCOMP_RET_TRACE),
+ #define XLAT_VAL_5 ((unsigned) (SECCOMP_RET_TRACE))
+ #define XLAT_STR_5 STRINGIFY(SECCOMP_RET_TRACE)
  XLAT(SECCOMP_RET_LOG),
+ #define XLAT_VAL_6 ((unsigned) (SECCOMP_RET_LOG))
+ #define XLAT_STR_6 STRINGIFY(SECCOMP_RET_LOG)
  XLAT(SECCOMP_RET_ALLOW),
- XLAT_END
+ #define XLAT_VAL_7 ((unsigned) (SECCOMP_RET_ALLOW))
+ #define XLAT_STR_7 STRINGIFY(SECCOMP_RET_ALLOW)
 };
+const struct xlat seccomp_ret_action[1] = { {
+ .data = seccomp_ret_action_xdata,
+ .size = ARRAY_SIZE(seccomp_ret_action_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index ffb88de59cb6aff71afa3ed75b9d02ae60a04871..c40820a4a90b6a0c7390bc9861916f21acd0748a 100644 (file)
@@ -106,30 +106,179 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # ifdef IN_MPERS
 
-#  error static const struct xlat semctl_flags in mpers mode
+extern const struct xlat semctl_flags[];
 
 # else
 
-static
-const struct xlat semctl_flags[] = {
-
+static const struct xlat_data semctl_flags_xdata[] = {
  XLAT(IPC_RMID),
+ #define XLAT_VAL_0 ((unsigned) (IPC_RMID))
+ #define XLAT_STR_0 STRINGIFY(IPC_RMID)
  XLAT(IPC_SET),
+ #define XLAT_VAL_1 ((unsigned) (IPC_SET))
+ #define XLAT_STR_1 STRINGIFY(IPC_SET)
  XLAT(IPC_STAT),
+ #define XLAT_VAL_2 ((unsigned) (IPC_STAT))
+ #define XLAT_STR_2 STRINGIFY(IPC_STAT)
  XLAT(IPC_INFO),
+ #define XLAT_VAL_3 ((unsigned) (IPC_INFO))
+ #define XLAT_STR_3 STRINGIFY(IPC_INFO)
  XLAT(GETPID),
+ #define XLAT_VAL_4 ((unsigned) (GETPID))
+ #define XLAT_STR_4 STRINGIFY(GETPID)
  XLAT(GETVAL),
+ #define XLAT_VAL_5 ((unsigned) (GETVAL))
+ #define XLAT_STR_5 STRINGIFY(GETVAL)
  XLAT(GETALL),
+ #define XLAT_VAL_6 ((unsigned) (GETALL))
+ #define XLAT_STR_6 STRINGIFY(GETALL)
  XLAT(GETNCNT),
+ #define XLAT_VAL_7 ((unsigned) (GETNCNT))
+ #define XLAT_STR_7 STRINGIFY(GETNCNT)
  XLAT(GETZCNT),
+ #define XLAT_VAL_8 ((unsigned) (GETZCNT))
+ #define XLAT_STR_8 STRINGIFY(GETZCNT)
  XLAT(SETVAL),
+ #define XLAT_VAL_9 ((unsigned) (SETVAL))
+ #define XLAT_STR_9 STRINGIFY(SETVAL)
  XLAT(SETALL),
+ #define XLAT_VAL_10 ((unsigned) (SETALL))
+ #define XLAT_STR_10 STRINGIFY(SETALL)
  XLAT(SEM_STAT),
+ #define XLAT_VAL_11 ((unsigned) (SEM_STAT))
+ #define XLAT_STR_11 STRINGIFY(SEM_STAT)
  XLAT(SEM_INFO),
+ #define XLAT_VAL_12 ((unsigned) (SEM_INFO))
+ #define XLAT_STR_12 STRINGIFY(SEM_INFO)
  XLAT(SEM_STAT_ANY),
- XLAT_END
+ #define XLAT_VAL_13 ((unsigned) (SEM_STAT_ANY))
+ #define XLAT_STR_13 STRINGIFY(SEM_STAT_ANY)
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat semctl_flags[1] = { {
+ .data = semctl_flags_xdata,
+ .size = ARRAY_SIZE(semctl_flags_xdata),
+ .type = XT_SORTED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 9e8b84b39910b3c93fd8ac658be134e7544c24b9..455ceebd4bf30025e56e3bda4013b489ccd8b053 100644 (file)
@@ -1,4 +1,4 @@
-/* sort -k2,2g */
+#sorted sort -k2,2g
 IPC_RMID 0
 IPC_SET 1
 IPC_STAT 2
index fcd9e1176b92394d90f83424d2a5d0567e21d856..8250e9e963dfd4d2bad7585daed6de9791f6eb05 100644 (file)
 
 # else
 
-static
-const struct xlat semop_flags[] = {
+static const struct xlat_data semop_flags_xdata[] = {
 #if defined(SEM_UNDO) || (defined(HAVE_DECL_SEM_UNDO) && HAVE_DECL_SEM_UNDO)
   XLAT(SEM_UNDO),
+ #define XLAT_VAL_0 ((unsigned) (SEM_UNDO))
+ #define XLAT_STR_0 STRINGIFY(SEM_UNDO)
 #endif
 #if defined(IPC_NOWAIT) || (defined(HAVE_DECL_IPC_NOWAIT) && HAVE_DECL_IPC_NOWAIT)
   XLAT(IPC_NOWAIT),
+ #define XLAT_VAL_1 ((unsigned) (IPC_NOWAIT))
+ #define XLAT_STR_1 STRINGIFY(IPC_NOWAIT)
 #endif
- XLAT_END
 };
-
+static
+const struct xlat semop_flags[1] = { {
+ .data = semop_flags_xdata,
+ .size = ARRAY_SIZE(semop_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 2b5368fce23fe2a3ef280c1cbc8ad6f0add9117f..3faf73b6dd24d7ca5d5f81435ba0a7bc809004c7 100644 (file)
@@ -3,6 +3,13 @@
 #include "gcc_compat.h"
 #include "static_assert.h"
 
+#if defined(CLONE_NEWTIME) || (defined(HAVE_DECL_CLONE_NEWTIME) && HAVE_DECL_CLONE_NEWTIME)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((CLONE_NEWTIME) == (0x00000080), "CLONE_NEWTIME != 0x00000080");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define CLONE_NEWTIME 0x00000080
+#endif
 #if defined(CLONE_NEWNS) || (defined(HAVE_DECL_CLONE_NEWNS) && HAVE_DECL_CLONE_NEWNS)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
 static_assert((CLONE_NEWNS) == (0x00020000), "CLONE_NEWNS != 0x00020000");
@@ -57,18 +64,117 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # ifndef IN_MPERS
 
-const struct xlat setns_types[] = {
+static const struct xlat_data setns_types_xdata[] = {
  XLAT(0),
+ #define XLAT_VAL_0 ((unsigned) (0))
+ #define XLAT_STR_0 STRINGIFY(0)
+ XLAT(CLONE_NEWTIME),
+ #define XLAT_VAL_1 ((unsigned) (CLONE_NEWTIME))
+ #define XLAT_STR_1 STRINGIFY(CLONE_NEWTIME)
  XLAT(CLONE_NEWNS),
+ #define XLAT_VAL_2 ((unsigned) (CLONE_NEWNS))
+ #define XLAT_STR_2 STRINGIFY(CLONE_NEWNS)
  XLAT(CLONE_NEWCGROUP),
+ #define XLAT_VAL_3 ((unsigned) (CLONE_NEWCGROUP))
+ #define XLAT_STR_3 STRINGIFY(CLONE_NEWCGROUP)
  XLAT(CLONE_NEWUTS),
+ #define XLAT_VAL_4 ((unsigned) (CLONE_NEWUTS))
+ #define XLAT_STR_4 STRINGIFY(CLONE_NEWUTS)
  XLAT(CLONE_NEWIPC),
+ #define XLAT_VAL_5 ((unsigned) (CLONE_NEWIPC))
+ #define XLAT_STR_5 STRINGIFY(CLONE_NEWIPC)
  XLAT(CLONE_NEWUSER),
+ #define XLAT_VAL_6 ((unsigned) (CLONE_NEWUSER))
+ #define XLAT_STR_6 STRINGIFY(CLONE_NEWUSER)
  XLAT(CLONE_NEWPID),
+ #define XLAT_VAL_7 ((unsigned) (CLONE_NEWPID))
+ #define XLAT_STR_7 STRINGIFY(CLONE_NEWPID)
  XLAT(CLONE_NEWNET),
- XLAT_END
+ #define XLAT_VAL_8 ((unsigned) (CLONE_NEWNET))
+ #define XLAT_STR_8 STRINGIFY(CLONE_NEWNET)
 };
+const struct xlat setns_types[1] = { {
+ .data = setns_types_xdata,
+ .size = ARRAY_SIZE(setns_types_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 09186f27e56f00803e5b911ba3aa72c2d898524a..df71d25b96f776b1008b710afead1b36cfd72c5d 100644 (file)
@@ -1,4 +1,5 @@
 0
+CLONE_NEWTIME  0x00000080
 CLONE_NEWNS    0x00020000
 CLONE_NEWCGROUP        0x02000000
 CLONE_NEWUTS   0x04000000
index c5f8fc592fe04fe4f5cb2ca15ede9b0b05fa2b92..8eba235cdbda93fd1df84eab290014db002cd351 100644 (file)
@@ -12,8 +12,7 @@
 
 # else
 
-static
-const struct xlat setsock_ip_options[] = {
+static const struct xlat_data setsock_ip_options_xdata[] = {
 /*
 * Options specific to setsockopt(SOL_IP).
 * Common {g,s}etsockopt(SOL_IP) options
@@ -22,76 +21,305 @@ const struct xlat setsock_ip_options[] = {
 
 #if defined(ARPT_SO_SET_REPLACE) || (defined(HAVE_DECL_ARPT_SO_SET_REPLACE) && HAVE_DECL_ARPT_SO_SET_REPLACE)
   XLAT(ARPT_SO_SET_REPLACE),
+ #define XLAT_VAL_0 ((unsigned) (ARPT_SO_SET_REPLACE))
+ #define XLAT_STR_0 STRINGIFY(ARPT_SO_SET_REPLACE)
 #endif
 #if defined(ARPT_SO_SET_ADD_COUNTERS) || (defined(HAVE_DECL_ARPT_SO_SET_ADD_COUNTERS) && HAVE_DECL_ARPT_SO_SET_ADD_COUNTERS)
   XLAT(ARPT_SO_SET_ADD_COUNTERS),
+ #define XLAT_VAL_1 ((unsigned) (ARPT_SO_SET_ADD_COUNTERS))
+ #define XLAT_STR_1 STRINGIFY(ARPT_SO_SET_ADD_COUNTERS)
 #endif
 
 #if defined(EBT_SO_SET_ENTRIES) || (defined(HAVE_DECL_EBT_SO_SET_ENTRIES) && HAVE_DECL_EBT_SO_SET_ENTRIES)
   XLAT(EBT_SO_SET_ENTRIES),
+ #define XLAT_VAL_2 ((unsigned) (EBT_SO_SET_ENTRIES))
+ #define XLAT_STR_2 STRINGIFY(EBT_SO_SET_ENTRIES)
 #endif
 #if defined(EBT_SO_SET_COUNTERS) || (defined(HAVE_DECL_EBT_SO_SET_COUNTERS) && HAVE_DECL_EBT_SO_SET_COUNTERS)
   XLAT(EBT_SO_SET_COUNTERS),
+ #define XLAT_VAL_3 ((unsigned) (EBT_SO_SET_COUNTERS))
+ #define XLAT_STR_3 STRINGIFY(EBT_SO_SET_COUNTERS)
 #endif
 
 #if defined(IP_VS_SO_SET_NONE) || (defined(HAVE_DECL_IP_VS_SO_SET_NONE) && HAVE_DECL_IP_VS_SO_SET_NONE)
   XLAT(IP_VS_SO_SET_NONE),
+ #define XLAT_VAL_4 ((unsigned) (IP_VS_SO_SET_NONE))
+ #define XLAT_STR_4 STRINGIFY(IP_VS_SO_SET_NONE)
 #endif
 #if defined(IP_VS_SO_SET_INSERT) || (defined(HAVE_DECL_IP_VS_SO_SET_INSERT) && HAVE_DECL_IP_VS_SO_SET_INSERT)
   XLAT(IP_VS_SO_SET_INSERT),
+ #define XLAT_VAL_5 ((unsigned) (IP_VS_SO_SET_INSERT))
+ #define XLAT_STR_5 STRINGIFY(IP_VS_SO_SET_INSERT)
 #endif
 #if defined(IP_VS_SO_SET_ADD) || (defined(HAVE_DECL_IP_VS_SO_SET_ADD) && HAVE_DECL_IP_VS_SO_SET_ADD)
   XLAT(IP_VS_SO_SET_ADD),
+ #define XLAT_VAL_6 ((unsigned) (IP_VS_SO_SET_ADD))
+ #define XLAT_STR_6 STRINGIFY(IP_VS_SO_SET_ADD)
 #endif
 #if defined(IP_VS_SO_SET_EDIT) || (defined(HAVE_DECL_IP_VS_SO_SET_EDIT) && HAVE_DECL_IP_VS_SO_SET_EDIT)
   XLAT(IP_VS_SO_SET_EDIT),
+ #define XLAT_VAL_7 ((unsigned) (IP_VS_SO_SET_EDIT))
+ #define XLAT_STR_7 STRINGIFY(IP_VS_SO_SET_EDIT)
 #endif
 #if defined(IP_VS_SO_SET_DEL) || (defined(HAVE_DECL_IP_VS_SO_SET_DEL) && HAVE_DECL_IP_VS_SO_SET_DEL)
   XLAT(IP_VS_SO_SET_DEL),
+ #define XLAT_VAL_8 ((unsigned) (IP_VS_SO_SET_DEL))
+ #define XLAT_STR_8 STRINGIFY(IP_VS_SO_SET_DEL)
 #endif
 #if defined(IP_VS_SO_SET_FLUSH) || (defined(HAVE_DECL_IP_VS_SO_SET_FLUSH) && HAVE_DECL_IP_VS_SO_SET_FLUSH)
   XLAT(IP_VS_SO_SET_FLUSH),
+ #define XLAT_VAL_9 ((unsigned) (IP_VS_SO_SET_FLUSH))
+ #define XLAT_STR_9 STRINGIFY(IP_VS_SO_SET_FLUSH)
 #endif
 #if defined(IP_VS_SO_SET_LIST) || (defined(HAVE_DECL_IP_VS_SO_SET_LIST) && HAVE_DECL_IP_VS_SO_SET_LIST)
   XLAT(IP_VS_SO_SET_LIST),
+ #define XLAT_VAL_10 ((unsigned) (IP_VS_SO_SET_LIST))
+ #define XLAT_STR_10 STRINGIFY(IP_VS_SO_SET_LIST)
 #endif
 #if defined(IP_VS_SO_SET_ADDDEST) || (defined(HAVE_DECL_IP_VS_SO_SET_ADDDEST) && HAVE_DECL_IP_VS_SO_SET_ADDDEST)
   XLAT(IP_VS_SO_SET_ADDDEST),
+ #define XLAT_VAL_11 ((unsigned) (IP_VS_SO_SET_ADDDEST))
+ #define XLAT_STR_11 STRINGIFY(IP_VS_SO_SET_ADDDEST)
 #endif
 #if defined(IP_VS_SO_SET_DELDEST) || (defined(HAVE_DECL_IP_VS_SO_SET_DELDEST) && HAVE_DECL_IP_VS_SO_SET_DELDEST)
   XLAT(IP_VS_SO_SET_DELDEST),
+ #define XLAT_VAL_12 ((unsigned) (IP_VS_SO_SET_DELDEST))
+ #define XLAT_STR_12 STRINGIFY(IP_VS_SO_SET_DELDEST)
 #endif
 #if defined(IP_VS_SO_SET_EDITDEST) || (defined(HAVE_DECL_IP_VS_SO_SET_EDITDEST) && HAVE_DECL_IP_VS_SO_SET_EDITDEST)
   XLAT(IP_VS_SO_SET_EDITDEST),
+ #define XLAT_VAL_13 ((unsigned) (IP_VS_SO_SET_EDITDEST))
+ #define XLAT_STR_13 STRINGIFY(IP_VS_SO_SET_EDITDEST)
 #endif
 #if defined(IP_VS_SO_SET_TIMEOUT) || (defined(HAVE_DECL_IP_VS_SO_SET_TIMEOUT) && HAVE_DECL_IP_VS_SO_SET_TIMEOUT)
   XLAT(IP_VS_SO_SET_TIMEOUT),
+ #define XLAT_VAL_14 ((unsigned) (IP_VS_SO_SET_TIMEOUT))
+ #define XLAT_STR_14 STRINGIFY(IP_VS_SO_SET_TIMEOUT)
 #endif
 #if defined(IP_VS_SO_SET_STARTDAEMON) || (defined(HAVE_DECL_IP_VS_SO_SET_STARTDAEMON) && HAVE_DECL_IP_VS_SO_SET_STARTDAEMON)
   XLAT(IP_VS_SO_SET_STARTDAEMON),
+ #define XLAT_VAL_15 ((unsigned) (IP_VS_SO_SET_STARTDAEMON))
+ #define XLAT_STR_15 STRINGIFY(IP_VS_SO_SET_STARTDAEMON)
 #endif
 #if defined(IP_VS_SO_SET_STOPDAEMON) || (defined(HAVE_DECL_IP_VS_SO_SET_STOPDAEMON) && HAVE_DECL_IP_VS_SO_SET_STOPDAEMON)
   XLAT(IP_VS_SO_SET_STOPDAEMON),
+ #define XLAT_VAL_16 ((unsigned) (IP_VS_SO_SET_STOPDAEMON))
+ #define XLAT_STR_16 STRINGIFY(IP_VS_SO_SET_STOPDAEMON)
 #endif
 #if defined(IP_VS_SO_SET_RESTORE) || (defined(HAVE_DECL_IP_VS_SO_SET_RESTORE) && HAVE_DECL_IP_VS_SO_SET_RESTORE)
   XLAT(IP_VS_SO_SET_RESTORE),
+ #define XLAT_VAL_17 ((unsigned) (IP_VS_SO_SET_RESTORE))
+ #define XLAT_STR_17 STRINGIFY(IP_VS_SO_SET_RESTORE)
 #endif
 #if defined(IP_VS_SO_SET_SAVE) || (defined(HAVE_DECL_IP_VS_SO_SET_SAVE) && HAVE_DECL_IP_VS_SO_SET_SAVE)
   XLAT(IP_VS_SO_SET_SAVE),
+ #define XLAT_VAL_18 ((unsigned) (IP_VS_SO_SET_SAVE))
+ #define XLAT_STR_18 STRINGIFY(IP_VS_SO_SET_SAVE)
 #endif
 #if defined(IP_VS_SO_SET_ZERO) || (defined(HAVE_DECL_IP_VS_SO_SET_ZERO) && HAVE_DECL_IP_VS_SO_SET_ZERO)
   XLAT(IP_VS_SO_SET_ZERO),
+ #define XLAT_VAL_19 ((unsigned) (IP_VS_SO_SET_ZERO))
+ #define XLAT_STR_19 STRINGIFY(IP_VS_SO_SET_ZERO)
 #endif
 
 #if defined(IPT_SO_SET_REPLACE) || (defined(HAVE_DECL_IPT_SO_SET_REPLACE) && HAVE_DECL_IPT_SO_SET_REPLACE)
   XLAT(IPT_SO_SET_REPLACE),
+ #define XLAT_VAL_20 ((unsigned) (IPT_SO_SET_REPLACE))
+ #define XLAT_STR_20 STRINGIFY(IPT_SO_SET_REPLACE)
 #endif
 #if defined(IPT_SO_SET_ADD_COUNTERS) || (defined(HAVE_DECL_IPT_SO_SET_ADD_COUNTERS) && HAVE_DECL_IPT_SO_SET_ADD_COUNTERS)
   XLAT(IPT_SO_SET_ADD_COUNTERS),
+ #define XLAT_VAL_21 ((unsigned) (IPT_SO_SET_ADD_COUNTERS))
+ #define XLAT_STR_21 STRINGIFY(IPT_SO_SET_ADD_COUNTERS)
 #endif
- XLAT_END
 };
+static
+const struct xlat setsock_ip_options[1] = { {
+ .data = setsock_ip_options_xdata,
+ .size = ARRAY_SIZE(setsock_ip_options_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 328a40879c2b5892a81e12a5064b55578211e2da..434757217f2a6e6d7dfbdeaa5c86c1e81a3e8d45 100644 (file)
@@ -26,8 +26,7 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat setsock_ipv6_options[] = {
+static const struct xlat_data setsock_ipv6_options_xdata[] = {
 /*
 * Options specific to setsockopt(SOL_IPV6).
 * Common {g,s}etsockopt(SOL_IPV6) options
@@ -35,10 +34,39 @@ const struct xlat setsock_ipv6_options[] = {
 */
 
  XLAT(IP6T_SO_SET_REPLACE),
+ #define XLAT_VAL_0 ((unsigned) (IP6T_SO_SET_REPLACE))
+ #define XLAT_STR_0 STRINGIFY(IP6T_SO_SET_REPLACE)
  XLAT(IP6T_SO_SET_ADD_COUNTERS),
- XLAT_END
+ #define XLAT_VAL_1 ((unsigned) (IP6T_SO_SET_ADD_COUNTERS))
+ #define XLAT_STR_1 STRINGIFY(IP6T_SO_SET_ADD_COUNTERS)
 };
+static
+const struct xlat setsock_ipv6_options[1] = { {
+ .data = setsock_ipv6_options_xdata,
+ .size = ARRAY_SIZE(setsock_ipv6_options_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 2ee500c9d984fbfda45eb8e8f978b722aac722b3..924e05aadf30a2fa05fafb4c0a00399f3bbe5982 100644 (file)
@@ -29,16 +29,45 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat setsock_options[] = {
+static const struct xlat_data setsock_options_xdata[] = {
+
 #if defined __hppa__
  XLAT(SO_ATTACH_FILTER),
+ #define XLAT_VAL_0 ((unsigned) (SO_ATTACH_FILTER))
+ #define XLAT_STR_0 STRINGIFY(SO_ATTACH_FILTER)
 #else
  XLAT(SO_ATTACH_FILTER),
+ #define XLAT_VAL_1 ((unsigned) (SO_ATTACH_FILTER))
+ #define XLAT_STR_1 STRINGIFY(SO_ATTACH_FILTER)
 #endif
- XLAT_END
 };
+static
+const struct xlat setsock_options[1] = { {
+ .data = setsock_options_xdata,
+ .size = ARRAY_SIZE(setsock_options_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 38f292072031f057bb551193064ecec79b8ed4d0..3f14eefd0dfe6d833cf5aa4e3f295b4b5b17c34c 100644 (file)
@@ -1,5 +1,6 @@
+/* Generated by maint/gen_xlat_defs.sh -f 'u' -p 'SO_ATTACH_FILTER' -c 'asm-generic/socket.h' -a 'asm/socket.h' */
 #if defined __hppa__
-SO_ATTACH_FILTER 16410
+SO_ATTACH_FILTER       16410
 #else
-SO_ATTACH_FILTER 26
+SO_ATTACH_FILTER       26
 #endif
index 84e29deddbf479ef5098b436dbe91b0f436b3ea9..a48b2f5b5d0ad45886c40d8d0ffd059429ebc230 100644 (file)
@@ -28,15 +28,43 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat sfd_flags[] = {
+static const struct xlat_data sfd_flags_xdata[] = {
 #if defined SFD_CLOEXEC || defined O_CLOEXEC
  XLAT(SFD_CLOEXEC),
+ #define XLAT_VAL_0 ((unsigned) (SFD_CLOEXEC))
+ #define XLAT_STR_0 STRINGIFY(SFD_CLOEXEC)
 #endif
  XLAT(SFD_NONBLOCK),
- XLAT_END
+ #define XLAT_VAL_1 ((unsigned) (SFD_NONBLOCK))
+ #define XLAT_STR_1 STRINGIFY(SFD_NONBLOCK)
 };
+static
+const struct xlat sfd_flags[1] = { {
+ .data = sfd_flags_xdata,
+ .size = ARRAY_SIZE(sfd_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 93dda68a6b2341f7a359c4963c3684dd856cfac4..ef88b2209a3e927c0b2b0eecc0734a91f2eccaa2 100644 (file)
@@ -12,25 +12,73 @@ extern const struct xlat sg_io_dxfer_direction[];
 
 # else
 
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat sg_io_dxfer_direction[] = {
+static const struct xlat_data sg_io_dxfer_direction_xdata[] = {
 #if defined(SG_DXFER_NONE) || (defined(HAVE_DECL_SG_DXFER_NONE) && HAVE_DECL_SG_DXFER_NONE)
   XLAT(SG_DXFER_NONE),
+ #define XLAT_VAL_0 ((unsigned) (SG_DXFER_NONE))
+ #define XLAT_STR_0 STRINGIFY(SG_DXFER_NONE)
 #endif
 #if defined(SG_DXFER_TO_DEV) || (defined(HAVE_DECL_SG_DXFER_TO_DEV) && HAVE_DECL_SG_DXFER_TO_DEV)
   XLAT(SG_DXFER_TO_DEV),
+ #define XLAT_VAL_1 ((unsigned) (SG_DXFER_TO_DEV))
+ #define XLAT_STR_1 STRINGIFY(SG_DXFER_TO_DEV)
 #endif
 #if defined(SG_DXFER_FROM_DEV) || (defined(HAVE_DECL_SG_DXFER_FROM_DEV) && HAVE_DECL_SG_DXFER_FROM_DEV)
   XLAT(SG_DXFER_FROM_DEV),
+ #define XLAT_VAL_2 ((unsigned) (SG_DXFER_FROM_DEV))
+ #define XLAT_STR_2 STRINGIFY(SG_DXFER_FROM_DEV)
 #endif
 #if defined(SG_DXFER_TO_FROM_DEV) || (defined(HAVE_DECL_SG_DXFER_TO_FROM_DEV) && HAVE_DECL_SG_DXFER_TO_FROM_DEV)
   XLAT(SG_DXFER_TO_FROM_DEV),
+ #define XLAT_VAL_3 ((unsigned) (SG_DXFER_TO_FROM_DEV))
+ #define XLAT_STR_3 STRINGIFY(SG_DXFER_TO_FROM_DEV)
 #endif
- XLAT_END
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat sg_io_dxfer_direction[1] = { {
+ .data = sg_io_dxfer_direction_xdata,
+ .size = ARRAY_SIZE(sg_io_dxfer_direction_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 9b938e9f16821c6dd5b3e9d1ff0a3ecfb6b5ef09..61b8c4224af525d63b83514ba7e91c0c67b72aed 100644 (file)
@@ -54,19 +54,87 @@ extern const struct xlat sg_io_flags[];
 
 # else
 
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat sg_io_flags[] = {
+static const struct xlat_data sg_io_flags_xdata[] = {
  XLAT(SG_FLAG_DIRECT_IO),
+ #define XLAT_VAL_0 ((unsigned) (SG_FLAG_DIRECT_IO))
+ #define XLAT_STR_0 STRINGIFY(SG_FLAG_DIRECT_IO)
  XLAT(SG_FLAG_UNUSED_LUN_INHIBIT),
+ #define XLAT_VAL_1 ((unsigned) (SG_FLAG_UNUSED_LUN_INHIBIT))
+ #define XLAT_STR_1 STRINGIFY(SG_FLAG_UNUSED_LUN_INHIBIT)
  XLAT(SG_FLAG_MMAP_IO),
+ #define XLAT_VAL_2 ((unsigned) (SG_FLAG_MMAP_IO))
+ #define XLAT_STR_2 STRINGIFY(SG_FLAG_MMAP_IO)
  XLAT(SG_FLAG_NO_DXFER),
+ #define XLAT_VAL_3 ((unsigned) (SG_FLAG_NO_DXFER))
+ #define XLAT_STR_3 STRINGIFY(SG_FLAG_NO_DXFER)
  XLAT(SG_FLAG_Q_AT_TAIL),
+ #define XLAT_VAL_4 ((unsigned) (SG_FLAG_Q_AT_TAIL))
+ #define XLAT_STR_4 STRINGIFY(SG_FLAG_Q_AT_TAIL)
  XLAT(SG_FLAG_Q_AT_HEAD),
- XLAT_END
+ #define XLAT_VAL_5 ((unsigned) (SG_FLAG_Q_AT_HEAD))
+ #define XLAT_STR_5 STRINGIFY(SG_FLAG_Q_AT_HEAD)
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat sg_io_flags[1] = { {
+ .data = sg_io_flags_xdata,
+ .size = ARRAY_SIZE(sg_io_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index af88616d2a04088513fc2737273b1f7ae9bc5c55..c3ccf67aa7f9831d27061ac82b021788167adb16 100644 (file)
@@ -29,13 +29,51 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # ifndef IN_MPERS
 
-const struct xlat sg_io_info[] = {
+static const struct xlat_data sg_io_info_xdata[] = {
  XLAT(SG_INFO_CHECK),
+ #define XLAT_VAL_0 ((unsigned) (SG_INFO_CHECK))
+ #define XLAT_STR_0 STRINGIFY(SG_INFO_CHECK)
  XLAT(SG_INFO_DIRECT_IO),
+ #define XLAT_VAL_1 ((unsigned) (SG_INFO_DIRECT_IO))
+ #define XLAT_STR_1 STRINGIFY(SG_INFO_DIRECT_IO)
  XLAT(SG_INFO_MIXED_IO),
- XLAT_END
+ #define XLAT_VAL_2 ((unsigned) (SG_INFO_MIXED_IO))
+ #define XLAT_STR_2 STRINGIFY(SG_INFO_MIXED_IO)
 };
+const struct xlat sg_io_info[1] = { {
+ .data = sg_io_info_xdata,
+ .size = ARRAY_SIZE(sg_io_info_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index e261fd5363ed6036371bb6a17d16abb646905b85..60e3ce0bcaf2cd0599ff99b5f6278d096eb051a6 100644 (file)
@@ -54,17 +54,85 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat sg_scsi_reset[] = {
+static const struct xlat_data sg_scsi_reset_xdata[] = {
  XLAT(SG_SCSI_RESET_NOTHING),
+ #define XLAT_VAL_0 ((unsigned) (SG_SCSI_RESET_NOTHING))
+ #define XLAT_STR_0 STRINGIFY(SG_SCSI_RESET_NOTHING)
  XLAT(SG_SCSI_RESET_DEVICE),
+ #define XLAT_VAL_1 ((unsigned) (SG_SCSI_RESET_DEVICE))
+ #define XLAT_STR_1 STRINGIFY(SG_SCSI_RESET_DEVICE)
  XLAT(SG_SCSI_RESET_BUS),
+ #define XLAT_VAL_2 ((unsigned) (SG_SCSI_RESET_BUS))
+ #define XLAT_STR_2 STRINGIFY(SG_SCSI_RESET_BUS)
  XLAT(SG_SCSI_RESET_HOST),
+ #define XLAT_VAL_3 ((unsigned) (SG_SCSI_RESET_HOST))
+ #define XLAT_STR_3 STRINGIFY(SG_SCSI_RESET_HOST)
  XLAT(SG_SCSI_RESET_TARGET),
+ #define XLAT_VAL_4 ((unsigned) (SG_SCSI_RESET_TARGET))
+ #define XLAT_STR_4 STRINGIFY(SG_SCSI_RESET_TARGET)
  XLAT(SG_SCSI_RESET_NO_ESCALATE),
- XLAT_END
+ #define XLAT_VAL_5 ((unsigned) (SG_SCSI_RESET_NO_ESCALATE))
+ #define XLAT_STR_5 STRINGIFY(SG_SCSI_RESET_NO_ESCALATE)
 };
+static
+const struct xlat sg_scsi_reset[1] = { {
+ .data = sg_scsi_reset_xdata,
+ .size = ARRAY_SIZE(sg_scsi_reset_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index f7f5b38c54ad8e9e2a904714161787b617399bdf..94722a65aaf80eef9debcbc45be67995156cafa9 100644 (file)
@@ -3,6 +3,27 @@
 #include "gcc_compat.h"
 #include "static_assert.h"
 
+#if defined(SHM_RDONLY) || (defined(HAVE_DECL_SHM_RDONLY) && HAVE_DECL_SHM_RDONLY)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((SHM_RDONLY) == (010000), "SHM_RDONLY != 010000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define SHM_RDONLY 010000
+#endif
+#if defined(SHM_RND) || (defined(HAVE_DECL_SHM_RND) && HAVE_DECL_SHM_RND)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((SHM_RND) == (020000), "SHM_RND != 020000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define SHM_RND 020000
+#endif
+#if defined(SHM_REMAP) || (defined(HAVE_DECL_SHM_REMAP) && HAVE_DECL_SHM_REMAP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((SHM_REMAP) == (040000), "SHM_REMAP != 040000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define SHM_REMAP 040000
+#endif
 #if defined(SHM_EXEC) || (defined(HAVE_DECL_SHM_EXEC) && HAVE_DECL_SHM_EXEC)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
 static_assert((SHM_EXEC) == (0100000), "SHM_EXEC != 0100000");
@@ -19,21 +40,63 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat shm_flags[] = {
-#if defined(SHM_RDONLY) || (defined(HAVE_DECL_SHM_RDONLY) && HAVE_DECL_SHM_RDONLY)
-  XLAT(SHM_RDONLY),
-#endif
-#if defined(SHM_RND) || (defined(HAVE_DECL_SHM_RND) && HAVE_DECL_SHM_RND)
-  XLAT(SHM_RND),
-#endif
-#if defined(SHM_REMAP) || (defined(HAVE_DECL_SHM_REMAP) && HAVE_DECL_SHM_REMAP)
-  XLAT(SHM_REMAP),
-#endif
+static const struct xlat_data shm_flags_xdata[] = {
+ XLAT(SHM_RDONLY),
+ #define XLAT_VAL_0 ((unsigned) (SHM_RDONLY))
+ #define XLAT_STR_0 STRINGIFY(SHM_RDONLY)
+ XLAT(SHM_RND),
+ #define XLAT_VAL_1 ((unsigned) (SHM_RND))
+ #define XLAT_STR_1 STRINGIFY(SHM_RND)
+ XLAT(SHM_REMAP),
+ #define XLAT_VAL_2 ((unsigned) (SHM_REMAP))
+ #define XLAT_STR_2 STRINGIFY(SHM_REMAP)
  XLAT(SHM_EXEC),
- XLAT_END
+ #define XLAT_VAL_3 ((unsigned) (SHM_EXEC))
+ #define XLAT_STR_3 STRINGIFY(SHM_EXEC)
 };
+static
+const struct xlat shm_flags[1] = { {
+ .data = shm_flags_xdata,
+ .size = ARRAY_SIZE(shm_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index ef39382fb47d008865b0ded562fbc2fd5a009abe..d93745b9c446d41dd961dc284e48d58fc74bca4a 100644 (file)
@@ -1,4 +1,4 @@
-SHM_RDONLY
-SHM_RND
-SHM_REMAP
+SHM_RDONLY     010000
+SHM_RND                020000
+SHM_REMAP      040000
 SHM_EXEC       0100000
index 6b703af158ac8db22e9fc3881e0afb0112d17f86..6dcb20bfa2363f557f807de81143cc7fbabca32d 100644 (file)
@@ -3,6 +3,34 @@
 #include "gcc_compat.h"
 #include "static_assert.h"
 
+#if defined(IPC_CREAT) || (defined(HAVE_DECL_IPC_CREAT) && HAVE_DECL_IPC_CREAT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IPC_CREAT) == (01000), "IPC_CREAT != 01000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IPC_CREAT 01000
+#endif
+#if defined(IPC_EXCL) || (defined(HAVE_DECL_IPC_EXCL) && HAVE_DECL_IPC_EXCL)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IPC_EXCL) == (02000), "IPC_EXCL != 02000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IPC_EXCL 02000
+#endif
+#if defined(SHM_HUGETLB) || (defined(HAVE_DECL_SHM_HUGETLB) && HAVE_DECL_SHM_HUGETLB)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((SHM_HUGETLB) == (04000), "SHM_HUGETLB != 04000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define SHM_HUGETLB 04000
+#endif
+#if defined(SHM_NORESERVE) || (defined(HAVE_DECL_SHM_NORESERVE) && HAVE_DECL_SHM_NORESERVE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((SHM_NORESERVE) == (010000), "SHM_NORESERVE != 010000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define SHM_NORESERVE 010000
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
 
 # else
 
-static
-const struct xlat shm_resource_flags[] = {
-#if defined(IPC_CREAT) || (defined(HAVE_DECL_IPC_CREAT) && HAVE_DECL_IPC_CREAT)
-  XLAT(IPC_CREAT),
-#endif
-#if defined(IPC_EXCL) || (defined(HAVE_DECL_IPC_EXCL) && HAVE_DECL_IPC_EXCL)
-  XLAT(IPC_EXCL),
-#endif
-#if defined(SHM_HUGETLB) || (defined(HAVE_DECL_SHM_HUGETLB) && HAVE_DECL_SHM_HUGETLB)
-  XLAT(SHM_HUGETLB),
-#endif
-#if defined(SHM_NORESERVE) || (defined(HAVE_DECL_SHM_NORESERVE) && HAVE_DECL_SHM_NORESERVE)
-  XLAT(SHM_NORESERVE),
-#endif
- XLAT_END
+static const struct xlat_data shm_resource_flags_xdata[] = {
+ XLAT(IPC_CREAT),
+ #define XLAT_VAL_0 ((unsigned) (IPC_CREAT))
+ #define XLAT_STR_0 STRINGIFY(IPC_CREAT)
+ XLAT(IPC_EXCL),
+ #define XLAT_VAL_1 ((unsigned) (IPC_EXCL))
+ #define XLAT_STR_1 STRINGIFY(IPC_EXCL)
+ XLAT(SHM_HUGETLB),
+ #define XLAT_VAL_2 ((unsigned) (SHM_HUGETLB))
+ #define XLAT_STR_2 STRINGIFY(SHM_HUGETLB)
+ XLAT(SHM_NORESERVE),
+ #define XLAT_VAL_3 ((unsigned) (SHM_NORESERVE))
+ #define XLAT_STR_3 STRINGIFY(SHM_NORESERVE)
 };
+static
+const struct xlat shm_resource_flags[1] = { {
+ .data = shm_resource_flags_xdata,
+ .size = ARRAY_SIZE(shm_resource_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 1b07687e79f9d4433bde4ce75c8ea4d084ee36cb..30ace6788c8d09692533dd1de4b14c00300b7c87 100644 (file)
@@ -1,4 +1,4 @@
-IPC_CREAT
-IPC_EXCL
-SHM_HUGETLB
-SHM_NORESERVE
+IPC_CREAT      01000
+IPC_EXCL       02000
+SHM_HUGETLB    04000
+SHM_NORESERVE  010000
index 40ac3aefe55bf54e733f5371fe54545600215bfd..fe73ebe8e0563bbd499dc5f97e5d78964ecf3e44 100644 (file)
@@ -75,23 +75,120 @@ extern const struct xlat shmctl_flags[];
 
 # else
 
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat shmctl_flags[] = {
-
+static const struct xlat_data shmctl_flags_xdata[] = {
  XLAT(IPC_RMID),
+ #define XLAT_VAL_0 ((unsigned) (IPC_RMID))
+ #define XLAT_STR_0 STRINGIFY(IPC_RMID)
  XLAT(IPC_SET),
+ #define XLAT_VAL_1 ((unsigned) (IPC_SET))
+ #define XLAT_STR_1 STRINGIFY(IPC_SET)
  XLAT(IPC_STAT),
+ #define XLAT_VAL_2 ((unsigned) (IPC_STAT))
+ #define XLAT_STR_2 STRINGIFY(IPC_STAT)
  XLAT(IPC_INFO),
+ #define XLAT_VAL_3 ((unsigned) (IPC_INFO))
+ #define XLAT_STR_3 STRINGIFY(IPC_INFO)
  XLAT(SHM_LOCK),
+ #define XLAT_VAL_4 ((unsigned) (SHM_LOCK))
+ #define XLAT_STR_4 STRINGIFY(SHM_LOCK)
  XLAT(SHM_UNLOCK),
+ #define XLAT_VAL_5 ((unsigned) (SHM_UNLOCK))
+ #define XLAT_STR_5 STRINGIFY(SHM_UNLOCK)
  XLAT(SHM_STAT),
+ #define XLAT_VAL_6 ((unsigned) (SHM_STAT))
+ #define XLAT_STR_6 STRINGIFY(SHM_STAT)
  XLAT(SHM_INFO),
+ #define XLAT_VAL_7 ((unsigned) (SHM_INFO))
+ #define XLAT_STR_7 STRINGIFY(SHM_INFO)
  XLAT(SHM_STAT_ANY),
- XLAT_END
+ #define XLAT_VAL_8 ((unsigned) (SHM_STAT_ANY))
+ #define XLAT_STR_8 STRINGIFY(SHM_STAT_ANY)
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat shmctl_flags[1] = { {
+ .data = shmctl_flags_xdata,
+ .size = ARRAY_SIZE(shmctl_flags_xdata),
+ .type = XT_SORTED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index b7943064b8931f2f7aa1fce5ec2b031671ae1e3b..8394a53e899f82f9c7717b65bb7de6349fcddfb0 100644 (file)
@@ -1,4 +1,4 @@
-/* sort -k2,2g */
+#sorted sort -k2,2g
 IPC_RMID 0
 IPC_SET 1
 IPC_STAT 2
index 2662c369841884b08052df8678be4f8333d0392d..4b68a2260b30901d823f373d3d7bd18ed67f15aa 100644 (file)
@@ -33,14 +33,52 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat shutdown_modes[] = {
- XLAT(SHUT_RD),
- XLAT(SHUT_WR),
- XLAT(SHUT_RDWR),
- XLAT_END
+static const struct xlat_data shutdown_modes_xdata[] = {
+ [SHUT_RD] = XLAT(SHUT_RD),
+ #define XLAT_VAL_0 ((unsigned) (SHUT_RD))
+ #define XLAT_STR_0 STRINGIFY(SHUT_RD)
+ [SHUT_WR] = XLAT(SHUT_WR),
+ #define XLAT_VAL_1 ((unsigned) (SHUT_WR))
+ #define XLAT_STR_1 STRINGIFY(SHUT_WR)
+ [SHUT_RDWR] = XLAT(SHUT_RDWR),
+ #define XLAT_VAL_2 ((unsigned) (SHUT_RDWR))
+ #define XLAT_STR_2 STRINGIFY(SHUT_RDWR)
 };
+static
+const struct xlat shutdown_modes[1] = { {
+ .data = shutdown_modes_xdata,
+ .size = ARRAY_SIZE(shutdown_modes_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 299671169ea1f1d13ff8e8d05a1304b33a2ad00d..da592b9124fe0a3899f911934a62f92fb765d70f 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 SHUT_RD 0
 SHUT_WR 1
 SHUT_RDWR 2
index 14bb01285aeb84c7640e64cfb37a02a2b958e382..dab6dcdf52067cb026f6b226f18a29924a072fde 100644 (file)
 
 # else
 
-static
-const struct xlat sigact_flags[] = {
+static const struct xlat_data sigact_flags_xdata[] = {
 #if defined(SA_RESTORER) || (defined(HAVE_DECL_SA_RESTORER) && HAVE_DECL_SA_RESTORER)
   XLAT(SA_RESTORER),
+ #define XLAT_VAL_0 ((unsigned) (SA_RESTORER))
+ #define XLAT_STR_0 STRINGIFY(SA_RESTORER)
 #endif
 #if defined(SA_ONSTACK) || (defined(HAVE_DECL_SA_ONSTACK) && HAVE_DECL_SA_ONSTACK)
   XLAT(SA_ONSTACK),
+ #define XLAT_VAL_1 ((unsigned) (SA_ONSTACK))
+ #define XLAT_STR_1 STRINGIFY(SA_ONSTACK)
 #endif
 #if defined(SA_RESTART) || (defined(HAVE_DECL_SA_RESTART) && HAVE_DECL_SA_RESTART)
   XLAT(SA_RESTART),
+ #define XLAT_VAL_2 ((unsigned) (SA_RESTART))
+ #define XLAT_STR_2 STRINGIFY(SA_RESTART)
 #endif
 #if defined(SA_INTERRUPT) || (defined(HAVE_DECL_SA_INTERRUPT) && HAVE_DECL_SA_INTERRUPT)
   XLAT(SA_INTERRUPT),
+ #define XLAT_VAL_3 ((unsigned) (SA_INTERRUPT))
+ #define XLAT_STR_3 STRINGIFY(SA_INTERRUPT)
 #endif
 #if defined(SA_NODEFER) || (defined(HAVE_DECL_SA_NODEFER) && HAVE_DECL_SA_NODEFER)
   XLAT(SA_NODEFER),
+ #define XLAT_VAL_4 ((unsigned) (SA_NODEFER))
+ #define XLAT_STR_4 STRINGIFY(SA_NODEFER)
 #endif
 #if defined SA_NOMASK && SA_NODEFER != SA_NOMASK
 #if defined(SA_NOMASK) || (defined(HAVE_DECL_SA_NOMASK) && HAVE_DECL_SA_NOMASK)
   XLAT(SA_NOMASK),
+ #define XLAT_VAL_5 ((unsigned) (SA_NOMASK))
+ #define XLAT_STR_5 STRINGIFY(SA_NOMASK)
 #endif
 #endif
 #if defined(SA_RESETHAND) || (defined(HAVE_DECL_SA_RESETHAND) && HAVE_DECL_SA_RESETHAND)
   XLAT(SA_RESETHAND),
+ #define XLAT_VAL_6 ((unsigned) (SA_RESETHAND))
+ #define XLAT_STR_6 STRINGIFY(SA_RESETHAND)
 #endif
 #if defined SA_ONESHOT && SA_ONESHOT != SA_RESETHAND
 #if defined(SA_ONESHOT) || (defined(HAVE_DECL_SA_ONESHOT) && HAVE_DECL_SA_ONESHOT)
   XLAT(SA_ONESHOT),
+ #define XLAT_VAL_7 ((unsigned) (SA_ONESHOT))
+ #define XLAT_STR_7 STRINGIFY(SA_ONESHOT)
 #endif
 #endif
 #if defined(SA_SIGINFO) || (defined(HAVE_DECL_SA_SIGINFO) && HAVE_DECL_SA_SIGINFO)
   XLAT(SA_SIGINFO),
+ #define XLAT_VAL_8 ((unsigned) (SA_SIGINFO))
+ #define XLAT_STR_8 STRINGIFY(SA_SIGINFO)
 #endif
 #if defined(SA_RESETHAND) || (defined(HAVE_DECL_SA_RESETHAND) && HAVE_DECL_SA_RESETHAND)
   XLAT(SA_RESETHAND),
+ #define XLAT_VAL_9 ((unsigned) (SA_RESETHAND))
+ #define XLAT_STR_9 STRINGIFY(SA_RESETHAND)
 #endif
 #if defined(SA_ONSTACK) || (defined(HAVE_DECL_SA_ONSTACK) && HAVE_DECL_SA_ONSTACK)
   XLAT(SA_ONSTACK),
+ #define XLAT_VAL_10 ((unsigned) (SA_ONSTACK))
+ #define XLAT_STR_10 STRINGIFY(SA_ONSTACK)
 #endif
 #if defined(SA_NODEFER) || (defined(HAVE_DECL_SA_NODEFER) && HAVE_DECL_SA_NODEFER)
   XLAT(SA_NODEFER),
+ #define XLAT_VAL_11 ((unsigned) (SA_NODEFER))
+ #define XLAT_STR_11 STRINGIFY(SA_NODEFER)
 #endif
 #if defined(SA_NOCLDSTOP) || (defined(HAVE_DECL_SA_NOCLDSTOP) && HAVE_DECL_SA_NOCLDSTOP)
   XLAT(SA_NOCLDSTOP),
+ #define XLAT_VAL_12 ((unsigned) (SA_NOCLDSTOP))
+ #define XLAT_STR_12 STRINGIFY(SA_NOCLDSTOP)
 #endif
 #if defined(SA_NOCLDWAIT) || (defined(HAVE_DECL_SA_NOCLDWAIT) && HAVE_DECL_SA_NOCLDWAIT)
   XLAT(SA_NOCLDWAIT),
+ #define XLAT_VAL_13 ((unsigned) (SA_NOCLDWAIT))
+ #define XLAT_STR_13 STRINGIFY(SA_NOCLDWAIT)
 #endif
 #if defined(_SA_BSDCALL) || (defined(HAVE_DECL__SA_BSDCALL) && HAVE_DECL__SA_BSDCALL)
   XLAT(_SA_BSDCALL),
+ #define XLAT_VAL_14 ((unsigned) (_SA_BSDCALL))
+ #define XLAT_STR_14 STRINGIFY(_SA_BSDCALL)
 #endif
 #if defined(SA_NOPTRACE) || (defined(HAVE_DECL_SA_NOPTRACE) && HAVE_DECL_SA_NOPTRACE)
   XLAT(SA_NOPTRACE),
+ #define XLAT_VAL_15 ((unsigned) (SA_NOPTRACE))
+ #define XLAT_STR_15 STRINGIFY(SA_NOPTRACE)
 #endif
- XLAT_END
 };
+static
+const struct xlat sigact_flags[1] = { {
+ .data = sigact_flags_xdata,
+ .size = ARRAY_SIZE(sigact_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 68359b45eb28c6470bc03bae9cc78f69f9759a57..8fcd6236d4902c37185f016bbd749d789b3dbc42 100644 (file)
@@ -33,16 +33,54 @@ extern const struct xlat sigaltstack_flags[];
 
 # else
 
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat sigaltstack_flags[] = {
+static const struct xlat_data sigaltstack_flags_xdata[] = {
  XLAT(SS_ONSTACK),
+ #define XLAT_VAL_0 ((unsigned) (SS_ONSTACK))
+ #define XLAT_STR_0 STRINGIFY(SS_ONSTACK)
  XLAT(SS_DISABLE),
+ #define XLAT_VAL_1 ((unsigned) (SS_DISABLE))
+ #define XLAT_STR_1 STRINGIFY(SS_DISABLE)
  XLAT(SS_AUTODISARM),
- XLAT_END
+ #define XLAT_VAL_2 ((unsigned) (SS_AUTODISARM))
+ #define XLAT_STR_2 STRINGIFY(SS_AUTODISARM)
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat sigaltstack_flags[1] = { {
+ .data = sigaltstack_flags_xdata,
+ .size = ARRAY_SIZE(sigaltstack_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 42123568dac16213e468503250f9a72da06c57d5..3054049febb20ea4fc9f73c490692f9e77f113af 100644 (file)
@@ -47,21 +47,89 @@ extern const struct xlat sigbus_codes[];
 
 # else
 
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat sigbus_codes[] = {
+static const struct xlat_data sigbus_codes_xdata[] = {
  XLAT(BUS_ADRALN),
+ #define XLAT_VAL_0 ((unsigned) (BUS_ADRALN))
+ #define XLAT_STR_0 STRINGIFY(BUS_ADRALN)
  XLAT(BUS_ADRERR),
+ #define XLAT_VAL_1 ((unsigned) (BUS_ADRERR))
+ #define XLAT_STR_1 STRINGIFY(BUS_ADRERR)
  XLAT(BUS_OBJERR),
+ #define XLAT_VAL_2 ((unsigned) (BUS_OBJERR))
+ #define XLAT_STR_2 STRINGIFY(BUS_OBJERR)
 #if defined(BUS_OPFETCH) || (defined(HAVE_DECL_BUS_OPFETCH) && HAVE_DECL_BUS_OPFETCH)
   XLAT(BUS_OPFETCH),
+ #define XLAT_VAL_3 ((unsigned) (BUS_OPFETCH))
+ #define XLAT_STR_3 STRINGIFY(BUS_OPFETCH)
 #endif
  XLAT(BUS_MCEERR_AR),
+ #define XLAT_VAL_4 ((unsigned) (BUS_MCEERR_AR))
+ #define XLAT_STR_4 STRINGIFY(BUS_MCEERR_AR)
  XLAT(BUS_MCEERR_AO),
- XLAT_END
+ #define XLAT_VAL_5 ((unsigned) (BUS_MCEERR_AO))
+ #define XLAT_STR_5 STRINGIFY(BUS_MCEERR_AO)
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat sigbus_codes[1] = { {
+ .data = sigbus_codes_xdata,
+ .size = ARRAY_SIZE(sigbus_codes_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 515eb2cd6f63ae1c9d65f0fc403ea58f6f1e7d0d..4847f4634105fa77f115f4cc863ae41b4c555933 100644 (file)
@@ -54,19 +54,87 @@ extern const struct xlat sigchld_codes[];
 
 # else
 
+static const struct xlat_data sigchld_codes_xdata[] = {
+ [CLD_EXITED] = XLAT(CLD_EXITED),
+ #define XLAT_VAL_0 ((unsigned) (CLD_EXITED))
+ #define XLAT_STR_0 STRINGIFY(CLD_EXITED)
+ [CLD_KILLED] = XLAT(CLD_KILLED),
+ #define XLAT_VAL_1 ((unsigned) (CLD_KILLED))
+ #define XLAT_STR_1 STRINGIFY(CLD_KILLED)
+ [CLD_DUMPED] = XLAT(CLD_DUMPED),
+ #define XLAT_VAL_2 ((unsigned) (CLD_DUMPED))
+ #define XLAT_STR_2 STRINGIFY(CLD_DUMPED)
+ [CLD_TRAPPED] = XLAT(CLD_TRAPPED),
+ #define XLAT_VAL_3 ((unsigned) (CLD_TRAPPED))
+ #define XLAT_STR_3 STRINGIFY(CLD_TRAPPED)
+ [CLD_STOPPED] = XLAT(CLD_STOPPED),
+ #define XLAT_VAL_4 ((unsigned) (CLD_STOPPED))
+ #define XLAT_STR_4 STRINGIFY(CLD_STOPPED)
+ [CLD_CONTINUED] = XLAT(CLD_CONTINUED),
+ #define XLAT_VAL_5 ((unsigned) (CLD_CONTINUED))
+ #define XLAT_STR_5 STRINGIFY(CLD_CONTINUED)
+};
 #  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
 static
 #  endif
-const struct xlat sigchld_codes[] = {
- XLAT(CLD_EXITED),
- XLAT(CLD_KILLED),
- XLAT(CLD_DUMPED),
- XLAT(CLD_TRAPPED),
- XLAT(CLD_STOPPED),
- XLAT(CLD_CONTINUED),
- XLAT_END
-};
+const struct xlat sigchld_codes[1] = { {
+ .data = sigchld_codes_xdata,
+ .size = ARRAY_SIZE(sigchld_codes_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 202bec44c8d47d6e2a734ac50d90f9811ca51b8f..a919bbae868bd8679557b0772bb52902e21da193 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 CLD_EXITED 1
 CLD_KILLED 2
 CLD_DUMPED 3
index 0938327d8588e6fb4c7ba41f2fbff8ca579ea408..1355e64eda057717436d6de5780d33d0ca218955 100644 (file)
@@ -19,14 +19,32 @@ extern const struct xlat sigemt_codes[];
 
 # else
 
+static const struct xlat_data sigemt_codes_xdata[] = {
+ XLAT(EMT_TAGOVF),
+ #define XLAT_VAL_0 ((unsigned) (EMT_TAGOVF))
+ #define XLAT_STR_0 STRINGIFY(EMT_TAGOVF)
+};
 #  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
 static
 #  endif
-const struct xlat sigemt_codes[] = {
- XLAT(EMT_TAGOVF),
- XLAT_END
-};
+const struct xlat sigemt_codes[1] = { {
+ .data = sigemt_codes_xdata,
+ .size = ARRAY_SIZE(sigemt_codes_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index c9069d578a5e77ed4ddad7bc61f577628ad96574..1a6d11929b2d2544bccd4bfb89feef404066ebe4 100644 (file)
@@ -40,17 +40,65 @@ extern const struct xlat sigev_value[];
 
 # else
 
+static const struct xlat_data sigev_value_xdata[] = {
+ [SIGEV_SIGNAL] = XLAT(SIGEV_SIGNAL),
+ #define XLAT_VAL_0 ((unsigned) (SIGEV_SIGNAL))
+ #define XLAT_STR_0 STRINGIFY(SIGEV_SIGNAL)
+ [SIGEV_NONE] = XLAT(SIGEV_NONE),
+ #define XLAT_VAL_1 ((unsigned) (SIGEV_NONE))
+ #define XLAT_STR_1 STRINGIFY(SIGEV_NONE)
+ [SIGEV_THREAD] = XLAT(SIGEV_THREAD),
+ #define XLAT_VAL_2 ((unsigned) (SIGEV_THREAD))
+ #define XLAT_STR_2 STRINGIFY(SIGEV_THREAD)
+ [SIGEV_THREAD_ID] = XLAT(SIGEV_THREAD_ID),
+ #define XLAT_VAL_3 ((unsigned) (SIGEV_THREAD_ID))
+ #define XLAT_STR_3 STRINGIFY(SIGEV_THREAD_ID)
+};
 #  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
 static
 #  endif
-const struct xlat sigev_value[] = {
- XLAT(SIGEV_SIGNAL),
- XLAT(SIGEV_NONE),
- XLAT(SIGEV_THREAD),
- XLAT(SIGEV_THREAD_ID),
- XLAT_END
-};
+const struct xlat sigev_value[1] = { {
+ .data = sigev_value_xdata,
+ .size = ARRAY_SIZE(sigev_value_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index d09806bb6589a47c7277fce78463ba47fb03de9e..961d0ec7738b4e73eecae209f9d38bbe909f1e12 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 SIGEV_SIGNAL 0
 SIGEV_NONE 1
 SIGEV_THREAD 2
index eab8237d9fbed80e11f6dcfbc8b5c359259135c0..4724e92ce7be5f1a4b5c1da8f73bcabc33e36d58 100644 (file)
@@ -82,41 +82,209 @@ extern const struct xlat sigfpe_codes[];
 
 # else
 
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat sigfpe_codes[] = {
+static const struct xlat_data sigfpe_codes_xdata[] = {
  XLAT(FPE_INTDIV),
+ #define XLAT_VAL_0 ((unsigned) (FPE_INTDIV))
+ #define XLAT_STR_0 STRINGIFY(FPE_INTDIV)
  XLAT(FPE_INTOVF),
+ #define XLAT_VAL_1 ((unsigned) (FPE_INTOVF))
+ #define XLAT_STR_1 STRINGIFY(FPE_INTOVF)
  XLAT(FPE_FLTDIV),
+ #define XLAT_VAL_2 ((unsigned) (FPE_FLTDIV))
+ #define XLAT_STR_2 STRINGIFY(FPE_FLTDIV)
  XLAT(FPE_FLTOVF),
+ #define XLAT_VAL_3 ((unsigned) (FPE_FLTOVF))
+ #define XLAT_STR_3 STRINGIFY(FPE_FLTOVF)
  XLAT(FPE_FLTUND),
+ #define XLAT_VAL_4 ((unsigned) (FPE_FLTUND))
+ #define XLAT_STR_4 STRINGIFY(FPE_FLTUND)
  XLAT(FPE_FLTRES),
+ #define XLAT_VAL_5 ((unsigned) (FPE_FLTRES))
+ #define XLAT_STR_5 STRINGIFY(FPE_FLTRES)
  XLAT(FPE_FLTINV),
+ #define XLAT_VAL_6 ((unsigned) (FPE_FLTINV))
+ #define XLAT_STR_6 STRINGIFY(FPE_FLTINV)
  XLAT(FPE_FLTSUB),
+ #define XLAT_VAL_7 ((unsigned) (FPE_FLTSUB))
+ #define XLAT_STR_7 STRINGIFY(FPE_FLTSUB)
 #if defined(FPE_MDAOVF) || (defined(HAVE_DECL_FPE_MDAOVF) && HAVE_DECL_FPE_MDAOVF)
   XLAT(FPE_MDAOVF),
+ #define XLAT_VAL_8 ((unsigned) (FPE_MDAOVF))
+ #define XLAT_STR_8 STRINGIFY(FPE_MDAOVF)
 #endif
 #if defined(__FPE_DECOVF) || (defined(HAVE_DECL___FPE_DECOVF) && HAVE_DECL___FPE_DECOVF)
   XLAT(__FPE_DECOVF),
+ #define XLAT_VAL_9 ((unsigned) (__FPE_DECOVF))
+ #define XLAT_STR_9 STRINGIFY(__FPE_DECOVF)
 #endif
 #if defined(__FPE_DECDIV) || (defined(HAVE_DECL___FPE_DECDIV) && HAVE_DECL___FPE_DECDIV)
   XLAT(__FPE_DECDIV),
+ #define XLAT_VAL_10 ((unsigned) (__FPE_DECDIV))
+ #define XLAT_STR_10 STRINGIFY(__FPE_DECDIV)
 #endif
 #if defined(__FPE_DECERR) || (defined(HAVE_DECL___FPE_DECERR) && HAVE_DECL___FPE_DECERR)
   XLAT(__FPE_DECERR),
+ #define XLAT_VAL_11 ((unsigned) (__FPE_DECERR))
+ #define XLAT_STR_11 STRINGIFY(__FPE_DECERR)
 #endif
 #if defined(__FPE_INVASC) || (defined(HAVE_DECL___FPE_INVASC) && HAVE_DECL___FPE_INVASC)
   XLAT(__FPE_INVASC),
+ #define XLAT_VAL_12 ((unsigned) (__FPE_INVASC))
+ #define XLAT_STR_12 STRINGIFY(__FPE_INVASC)
 #endif
 #if defined(__FPE_INVDEC) || (defined(HAVE_DECL___FPE_INVDEC) && HAVE_DECL___FPE_INVDEC)
   XLAT(__FPE_INVDEC),
+ #define XLAT_VAL_13 ((unsigned) (__FPE_INVDEC))
+ #define XLAT_STR_13 STRINGIFY(__FPE_INVDEC)
 #endif
  XLAT(FPE_FLTUNK),
+ #define XLAT_VAL_14 ((unsigned) (FPE_FLTUNK))
+ #define XLAT_STR_14 STRINGIFY(FPE_FLTUNK)
  XLAT(FPE_CONDTRAP),
- XLAT_END
+ #define XLAT_VAL_15 ((unsigned) (FPE_CONDTRAP))
+ #define XLAT_STR_15 STRINGIFY(FPE_CONDTRAP)
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat sigfpe_codes[1] = { {
+ .data = sigfpe_codes_xdata,
+ .size = ARRAY_SIZE(sigfpe_codes_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 74eaea09e105e5aa77ee1e4936dfe111966074b6..e5f392017d8f1acfca0e2ddb5c744fe23cd60313 100644 (file)
@@ -68,51 +68,239 @@ extern const struct xlat sigill_codes[];
 
 # else
 
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat sigill_codes[] = {
+static const struct xlat_data sigill_codes_xdata[] = {
  XLAT(ILL_ILLOPC),
+ #define XLAT_VAL_0 ((unsigned) (ILL_ILLOPC))
+ #define XLAT_STR_0 STRINGIFY(ILL_ILLOPC)
 #if defined(ILL_ILLPARAOP) || (defined(HAVE_DECL_ILL_ILLPARAOP) && HAVE_DECL_ILL_ILLPARAOP)
   XLAT(ILL_ILLPARAOP),
+ #define XLAT_VAL_1 ((unsigned) (ILL_ILLPARAOP))
+ #define XLAT_STR_1 STRINGIFY(ILL_ILLPARAOP)
 #endif
  XLAT(ILL_ILLOPN),
+ #define XLAT_VAL_2 ((unsigned) (ILL_ILLOPN))
+ #define XLAT_STR_2 STRINGIFY(ILL_ILLOPN)
  XLAT(ILL_ILLADR),
+ #define XLAT_VAL_3 ((unsigned) (ILL_ILLADR))
+ #define XLAT_STR_3 STRINGIFY(ILL_ILLADR)
 #if defined(ILL_ILLEXCPT) || (defined(HAVE_DECL_ILL_ILLEXCPT) && HAVE_DECL_ILL_ILLEXCPT)
   XLAT(ILL_ILLEXCPT),
+ #define XLAT_VAL_4 ((unsigned) (ILL_ILLEXCPT))
+ #define XLAT_STR_4 STRINGIFY(ILL_ILLEXCPT)
 #endif
  XLAT(ILL_ILLTRP),
+ #define XLAT_VAL_5 ((unsigned) (ILL_ILLTRP))
+ #define XLAT_STR_5 STRINGIFY(ILL_ILLTRP)
  XLAT(ILL_PRVOPC),
+ #define XLAT_VAL_6 ((unsigned) (ILL_PRVOPC))
+ #define XLAT_STR_6 STRINGIFY(ILL_PRVOPC)
  XLAT(ILL_PRVREG),
+ #define XLAT_VAL_7 ((unsigned) (ILL_PRVREG))
+ #define XLAT_STR_7 STRINGIFY(ILL_PRVREG)
  XLAT(ILL_COPROC),
+ #define XLAT_VAL_8 ((unsigned) (ILL_COPROC))
+ #define XLAT_STR_8 STRINGIFY(ILL_COPROC)
  XLAT(ILL_BADSTK),
+ #define XLAT_VAL_9 ((unsigned) (ILL_BADSTK))
+ #define XLAT_STR_9 STRINGIFY(ILL_BADSTK)
 #if defined(ILL_CPLB_VI) || (defined(HAVE_DECL_ILL_CPLB_VI) && HAVE_DECL_ILL_CPLB_VI)
   XLAT(ILL_CPLB_VI),
+ #define XLAT_VAL_10 ((unsigned) (ILL_CPLB_VI))
+ #define XLAT_STR_10 STRINGIFY(ILL_CPLB_VI)
 #endif
 #if defined(ILL_CPLB_MISS) || (defined(HAVE_DECL_ILL_CPLB_MISS) && HAVE_DECL_ILL_CPLB_MISS)
   XLAT(ILL_CPLB_MISS),
+ #define XLAT_VAL_11 ((unsigned) (ILL_CPLB_MISS))
+ #define XLAT_STR_11 STRINGIFY(ILL_CPLB_MISS)
 #endif
 #if defined(ILL_CPLB_MULHIT) || (defined(HAVE_DECL_ILL_CPLB_MULHIT) && HAVE_DECL_ILL_CPLB_MULHIT)
   XLAT(ILL_CPLB_MULHIT),
+ #define XLAT_VAL_12 ((unsigned) (ILL_CPLB_MULHIT))
+ #define XLAT_STR_12 STRINGIFY(ILL_CPLB_MULHIT)
 #endif
 #if defined(ILL_DBLFLT) || (defined(HAVE_DECL_ILL_DBLFLT) && HAVE_DECL_ILL_DBLFLT)
   XLAT(ILL_DBLFLT),
+ #define XLAT_VAL_13 ((unsigned) (ILL_DBLFLT))
+ #define XLAT_STR_13 STRINGIFY(ILL_DBLFLT)
 #endif
 #if defined(ILL_HARDWALL) || (defined(HAVE_DECL_ILL_HARDWALL) && HAVE_DECL_ILL_HARDWALL)
   XLAT(ILL_HARDWALL),
+ #define XLAT_VAL_14 ((unsigned) (ILL_HARDWALL))
+ #define XLAT_STR_14 STRINGIFY(ILL_HARDWALL)
 #endif
 #if defined(ILL_BADIADDR) || (defined(HAVE_DECL_ILL_BADIADDR) && HAVE_DECL_ILL_BADIADDR)
   XLAT(ILL_BADIADDR),
+ #define XLAT_VAL_15 ((unsigned) (ILL_BADIADDR))
+ #define XLAT_STR_15 STRINGIFY(ILL_BADIADDR)
 #endif
 #if defined(__ILL_BREAK) || (defined(HAVE_DECL___ILL_BREAK) && HAVE_DECL___ILL_BREAK)
   XLAT(__ILL_BREAK),
+ #define XLAT_VAL_16 ((unsigned) (__ILL_BREAK))
+ #define XLAT_STR_16 STRINGIFY(__ILL_BREAK)
 #endif
 #if defined(__ILL_BNDMOD) || (defined(HAVE_DECL___ILL_BNDMOD) && HAVE_DECL___ILL_BNDMOD)
   XLAT(__ILL_BNDMOD),
+ #define XLAT_VAL_17 ((unsigned) (__ILL_BNDMOD))
+ #define XLAT_STR_17 STRINGIFY(__ILL_BNDMOD)
 #endif
- XLAT_END
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat sigill_codes[1] = { {
+ .data = sigill_codes_xdata,
+ .size = ARRAY_SIZE(sigill_codes_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 74c577b2584c640da80565579c901ea8a10fdf05..6ab41f47f05f0ffbed29313d38d36ceb4380cf05 100644 (file)
@@ -115,35 +115,183 @@ extern const struct xlat siginfo_codes[];
 
 # else
 
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat siginfo_codes[] = {
+static const struct xlat_data siginfo_codes_xdata[] = {
  XLAT(SI_USER),
+ #define XLAT_VAL_0 ((unsigned) (SI_USER))
+ #define XLAT_STR_0 STRINGIFY(SI_USER)
  XLAT(SI_KERNEL),
+ #define XLAT_VAL_1 ((unsigned) (SI_KERNEL))
+ #define XLAT_STR_1 STRINGIFY(SI_KERNEL)
  XLAT(SI_QUEUE),
+ #define XLAT_VAL_2 ((unsigned) (SI_QUEUE))
+ #define XLAT_STR_2 STRINGIFY(SI_QUEUE)
 
 #ifdef __mips__
  XLAT(SI_ASYNCIO),
+ #define XLAT_VAL_3 ((unsigned) (SI_ASYNCIO))
+ #define XLAT_STR_3 STRINGIFY(SI_ASYNCIO)
  XLAT(SI_TIMER),
+ #define XLAT_VAL_4 ((unsigned) (SI_TIMER))
+ #define XLAT_STR_4 STRINGIFY(SI_TIMER)
  XLAT(SI_MESGQ),
+ #define XLAT_VAL_5 ((unsigned) (SI_MESGQ))
+ #define XLAT_STR_5 STRINGIFY(SI_MESGQ)
 #else
  XLAT(SI_TIMER),
+ #define XLAT_VAL_6 ((unsigned) (SI_TIMER))
+ #define XLAT_STR_6 STRINGIFY(SI_TIMER)
  XLAT(SI_MESGQ),
+ #define XLAT_VAL_7 ((unsigned) (SI_MESGQ))
+ #define XLAT_STR_7 STRINGIFY(SI_MESGQ)
  XLAT(SI_ASYNCIO),
+ #define XLAT_VAL_8 ((unsigned) (SI_ASYNCIO))
+ #define XLAT_STR_8 STRINGIFY(SI_ASYNCIO)
 #endif
 
  XLAT(SI_SIGIO),
+ #define XLAT_VAL_9 ((unsigned) (SI_SIGIO))
+ #define XLAT_STR_9 STRINGIFY(SI_SIGIO)
  XLAT(SI_TKILL),
+ #define XLAT_VAL_10 ((unsigned) (SI_TKILL))
+ #define XLAT_STR_10 STRINGIFY(SI_TKILL)
  XLAT(SI_DETHREAD),
+ #define XLAT_VAL_11 ((unsigned) (SI_DETHREAD))
+ #define XLAT_STR_11 STRINGIFY(SI_DETHREAD)
  XLAT(SI_ASYNCNL),
+ #define XLAT_VAL_12 ((unsigned) (SI_ASYNCNL))
+ #define XLAT_STR_12 STRINGIFY(SI_ASYNCNL)
 
 #ifdef __sparc__
  XLAT(SI_NOINFO),
+ #define XLAT_VAL_13 ((unsigned) (SI_NOINFO))
+ #define XLAT_STR_13 STRINGIFY(SI_NOINFO)
 #endif
- XLAT_END
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat siginfo_codes[1] = { {
+ .data = siginfo_codes_xdata,
+ .size = ARRAY_SIZE(siginfo_codes_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 5e9f08b7ea5b387764a3ba80d86b62867926b7a3..52d6b7d561cd804ec3b3294444dc019b5af09ed7 100644 (file)
@@ -54,19 +54,87 @@ extern const struct xlat sigpoll_codes[];
 
 # else
 
+static const struct xlat_data sigpoll_codes_xdata[] = {
+ [POLL_IN] = XLAT(POLL_IN),
+ #define XLAT_VAL_0 ((unsigned) (POLL_IN))
+ #define XLAT_STR_0 STRINGIFY(POLL_IN)
+ [POLL_OUT] = XLAT(POLL_OUT),
+ #define XLAT_VAL_1 ((unsigned) (POLL_OUT))
+ #define XLAT_STR_1 STRINGIFY(POLL_OUT)
+ [POLL_MSG] = XLAT(POLL_MSG),
+ #define XLAT_VAL_2 ((unsigned) (POLL_MSG))
+ #define XLAT_STR_2 STRINGIFY(POLL_MSG)
+ [POLL_ERR] = XLAT(POLL_ERR),
+ #define XLAT_VAL_3 ((unsigned) (POLL_ERR))
+ #define XLAT_STR_3 STRINGIFY(POLL_ERR)
+ [POLL_PRI] = XLAT(POLL_PRI),
+ #define XLAT_VAL_4 ((unsigned) (POLL_PRI))
+ #define XLAT_STR_4 STRINGIFY(POLL_PRI)
+ [POLL_HUP] = XLAT(POLL_HUP),
+ #define XLAT_VAL_5 ((unsigned) (POLL_HUP))
+ #define XLAT_STR_5 STRINGIFY(POLL_HUP)
+};
 #  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
 static
 #  endif
-const struct xlat sigpoll_codes[] = {
- XLAT(POLL_IN),
- XLAT(POLL_OUT),
- XLAT(POLL_MSG),
- XLAT(POLL_ERR),
- XLAT(POLL_PRI),
- XLAT(POLL_HUP),
- XLAT_END
-};
+const struct xlat sigpoll_codes[1] = { {
+ .data = sigpoll_codes_xdata,
+ .size = ARRAY_SIZE(sigpoll_codes_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 00c2a1b774f120bb34ed91b69f550ff7fca23559..a5471678b988aff45cf43507e60f944a57af8f14 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 POLL_IN 1
 POLL_OUT 2
 POLL_MSG 3
index 02df705723b66b84abd97d952802a72b80242b40..250c7b12f3ee29a0aadf80c036e71fa6c128c260 100644 (file)
 
 # else
 
-static
-const struct xlat sigprocmaskcmds[] = {
+static const struct xlat_data sigprocmaskcmds_xdata[] = {
 #if defined(SIG_BLOCK) || (defined(HAVE_DECL_SIG_BLOCK) && HAVE_DECL_SIG_BLOCK)
   XLAT(SIG_BLOCK),
+ #define XLAT_VAL_0 ((unsigned) (SIG_BLOCK))
+ #define XLAT_STR_0 STRINGIFY(SIG_BLOCK)
 #endif
 #if defined(SIG_UNBLOCK) || (defined(HAVE_DECL_SIG_UNBLOCK) && HAVE_DECL_SIG_UNBLOCK)
   XLAT(SIG_UNBLOCK),
+ #define XLAT_VAL_1 ((unsigned) (SIG_UNBLOCK))
+ #define XLAT_STR_1 STRINGIFY(SIG_UNBLOCK)
 #endif
 #if defined(SIG_SETMASK) || (defined(HAVE_DECL_SIG_SETMASK) && HAVE_DECL_SIG_SETMASK)
   XLAT(SIG_SETMASK),
+ #define XLAT_VAL_2 ((unsigned) (SIG_SETMASK))
+ #define XLAT_STR_2 STRINGIFY(SIG_SETMASK)
 #endif
 #if defined(SIG_SETMASK32) || (defined(HAVE_DECL_SIG_SETMASK32) && HAVE_DECL_SIG_SETMASK32)
   XLAT(SIG_SETMASK32),
+ #define XLAT_VAL_3 ((unsigned) (SIG_SETMASK32))
+ #define XLAT_STR_3 STRINGIFY(SIG_SETMASK32)
 #endif
- XLAT_END
 };
+static
+const struct xlat sigprocmaskcmds[1] = { {
+ .data = sigprocmaskcmds_xdata,
+ .size = ARRAY_SIZE(sigprocmaskcmds_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 6776434a80dc4f488443894872016ffbff98f4d5..65614dc2845287e1fe0de9fe39e7443cf04388de 100644 (file)
@@ -12,16 +12,34 @@ extern const struct xlat sigprof_codes[];
 
 # else
 
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat sigprof_codes[] = {
+static const struct xlat_data sigprof_codes_xdata[] = {
 #if defined(PROF_SIG) || (defined(HAVE_DECL_PROF_SIG) && HAVE_DECL_PROF_SIG)
   XLAT(PROF_SIG),
+ #define XLAT_VAL_0 ((unsigned) (PROF_SIG))
+ #define XLAT_STR_0 STRINGIFY(PROF_SIG)
 #endif
- XLAT_END
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat sigprof_codes[1] = { {
+ .data = sigprof_codes_xdata,
+ .size = ARRAY_SIZE(sigprof_codes_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 64fbc794208ef36c982734e058a191e6d2e1ccb5..d0fb464f6a45de2e0eb14dc90d09b69a44d2930b 100644 (file)
@@ -61,26 +61,124 @@ extern const struct xlat sigsegv_codes[];
 
 # else
 
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat sigsegv_codes[] = {
+static const struct xlat_data sigsegv_codes_xdata[] = {
  XLAT(SEGV_MAPERR),
+ #define XLAT_VAL_0 ((unsigned) (SEGV_MAPERR))
+ #define XLAT_STR_0 STRINGIFY(SEGV_MAPERR)
  XLAT(SEGV_ACCERR),
+ #define XLAT_VAL_1 ((unsigned) (SEGV_ACCERR))
+ #define XLAT_STR_1 STRINGIFY(SEGV_ACCERR)
 #if defined(SEGV_STACKFLOW) || (defined(HAVE_DECL_SEGV_STACKFLOW) && HAVE_DECL_SEGV_STACKFLOW)
   XLAT(SEGV_STACKFLOW),
+ #define XLAT_VAL_2 ((unsigned) (SEGV_STACKFLOW))
+ #define XLAT_STR_2 STRINGIFY(SEGV_STACKFLOW)
 #endif
  XLAT(SEGV_BNDERR),
+ #define XLAT_VAL_3 ((unsigned) (SEGV_BNDERR))
+ #define XLAT_STR_3 STRINGIFY(SEGV_BNDERR)
 #if defined(__SEGV_PSTKOVF) || (defined(HAVE_DECL___SEGV_PSTKOVF) && HAVE_DECL___SEGV_PSTKOVF)
   XLAT(__SEGV_PSTKOVF),
+ #define XLAT_VAL_4 ((unsigned) (__SEGV_PSTKOVF))
+ #define XLAT_STR_4 STRINGIFY(__SEGV_PSTKOVF)
 #endif
  XLAT(SEGV_PKUERR),
+ #define XLAT_VAL_5 ((unsigned) (SEGV_PKUERR))
+ #define XLAT_STR_5 STRINGIFY(SEGV_PKUERR)
  XLAT(SEGV_ACCADI),
+ #define XLAT_VAL_6 ((unsigned) (SEGV_ACCADI))
+ #define XLAT_STR_6 STRINGIFY(SEGV_ACCADI)
  XLAT(SEGV_ADIDERR),
+ #define XLAT_VAL_7 ((unsigned) (SEGV_ADIDERR))
+ #define XLAT_STR_7 STRINGIFY(SEGV_ADIDERR)
  XLAT(SEGV_ADIPERR),
- XLAT_END
+ #define XLAT_VAL_8 ((unsigned) (SEGV_ADIPERR))
+ #define XLAT_STR_8 STRINGIFY(SEGV_ADIPERR)
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat sigsegv_codes[1] = { {
+ .data = sigsegv_codes_xdata,
+ .size = ARRAY_SIZE(sigsegv_codes_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 45397403ffd564e3516bd50c9e45fefcce9abb0f..8d7da3318ea600b2d3a932b139c8ac23a60ab09f 100644 (file)
@@ -19,14 +19,32 @@ extern const struct xlat sigsys_codes[];
 
 # else
 
+static const struct xlat_data sigsys_codes_xdata[] = {
+ XLAT(SYS_SECCOMP),
+ #define XLAT_VAL_0 ((unsigned) (SYS_SECCOMP))
+ #define XLAT_STR_0 STRINGIFY(SYS_SECCOMP)
+};
 #  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
 static
 #  endif
-const struct xlat sigsys_codes[] = {
- XLAT(SYS_SECCOMP),
- XLAT_END
-};
+const struct xlat sigsys_codes[1] = { {
+ .data = sigsys_codes_xdata,
+ .size = ARRAY_SIZE(sigsys_codes_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index e13233ff188141a43a07120651326d42f416a69d..fe82a416870dc932d34ee0be9b0f051e15172c5e 100644 (file)
@@ -47,30 +47,128 @@ extern const struct xlat sigtrap_codes[];
 
 # else
 
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat sigtrap_codes[] = {
+static const struct xlat_data sigtrap_codes_xdata[] = {
 #if defined(TRAP_STEP) || (defined(HAVE_DECL_TRAP_STEP) && HAVE_DECL_TRAP_STEP)
   XLAT(TRAP_STEP),
+ #define XLAT_VAL_0 ((unsigned) (TRAP_STEP))
+ #define XLAT_STR_0 STRINGIFY(TRAP_STEP)
 #endif
  XLAT(TRAP_BRKPT),
+ #define XLAT_VAL_1 ((unsigned) (TRAP_BRKPT))
+ #define XLAT_STR_1 STRINGIFY(TRAP_BRKPT)
 #if defined(TRAP_TRACEFLOW) || (defined(HAVE_DECL_TRAP_TRACEFLOW) && HAVE_DECL_TRAP_TRACEFLOW)
   XLAT(TRAP_TRACEFLOW),
+ #define XLAT_VAL_2 ((unsigned) (TRAP_TRACEFLOW))
+ #define XLAT_STR_2 STRINGIFY(TRAP_TRACEFLOW)
 #endif
  XLAT(TRAP_TRACE),
+ #define XLAT_VAL_3 ((unsigned) (TRAP_TRACE))
+ #define XLAT_STR_3 STRINGIFY(TRAP_TRACE)
 #if defined(TRAP_WATCHPT) || (defined(HAVE_DECL_TRAP_WATCHPT) && HAVE_DECL_TRAP_WATCHPT)
   XLAT(TRAP_WATCHPT),
+ #define XLAT_VAL_4 ((unsigned) (TRAP_WATCHPT))
+ #define XLAT_STR_4 STRINGIFY(TRAP_WATCHPT)
 #endif
  XLAT(TRAP_BRANCH),
+ #define XLAT_VAL_5 ((unsigned) (TRAP_BRANCH))
+ #define XLAT_STR_5 STRINGIFY(TRAP_BRANCH)
 #if defined(TRAP_ILLTRAP) || (defined(HAVE_DECL_TRAP_ILLTRAP) && HAVE_DECL_TRAP_ILLTRAP)
   XLAT(TRAP_ILLTRAP),
+ #define XLAT_VAL_6 ((unsigned) (TRAP_ILLTRAP))
+ #define XLAT_STR_6 STRINGIFY(TRAP_ILLTRAP)
 #endif
  XLAT(TRAP_HWBKPT),
+ #define XLAT_VAL_7 ((unsigned) (TRAP_HWBKPT))
+ #define XLAT_STR_7 STRINGIFY(TRAP_HWBKPT)
  XLAT(TRAP_UNK),
- XLAT_END
+ #define XLAT_VAL_8 ((unsigned) (TRAP_UNK))
+ #define XLAT_STR_8 STRINGIFY(TRAP_UNK)
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat sigtrap_codes[1] = { {
+ .data = sigtrap_codes_xdata,
+ .size = ARRAY_SIZE(sigtrap_codes_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index fac1518c20022898b0710bfc9620a15f68808713..f6ea4f122922517fdfef3a1d18fccbe96ae35a97 100644 (file)
@@ -124,27 +124,195 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat skf_ad[] = {
+static const struct xlat_data skf_ad_xdata[] = {
  XLAT(SKF_AD_PROTOCOL),
+ #define XLAT_VAL_0 ((unsigned) (SKF_AD_PROTOCOL))
+ #define XLAT_STR_0 STRINGIFY(SKF_AD_PROTOCOL)
  XLAT(SKF_AD_PKTTYPE),
+ #define XLAT_VAL_1 ((unsigned) (SKF_AD_PKTTYPE))
+ #define XLAT_STR_1 STRINGIFY(SKF_AD_PKTTYPE)
  XLAT(SKF_AD_IFINDEX),
+ #define XLAT_VAL_2 ((unsigned) (SKF_AD_IFINDEX))
+ #define XLAT_STR_2 STRINGIFY(SKF_AD_IFINDEX)
  XLAT(SKF_AD_NLATTR),
+ #define XLAT_VAL_3 ((unsigned) (SKF_AD_NLATTR))
+ #define XLAT_STR_3 STRINGIFY(SKF_AD_NLATTR)
  XLAT(SKF_AD_NLATTR_NEST),
+ #define XLAT_VAL_4 ((unsigned) (SKF_AD_NLATTR_NEST))
+ #define XLAT_STR_4 STRINGIFY(SKF_AD_NLATTR_NEST)
  XLAT(SKF_AD_MARK),
+ #define XLAT_VAL_5 ((unsigned) (SKF_AD_MARK))
+ #define XLAT_STR_5 STRINGIFY(SKF_AD_MARK)
  XLAT(SKF_AD_QUEUE),
+ #define XLAT_VAL_6 ((unsigned) (SKF_AD_QUEUE))
+ #define XLAT_STR_6 STRINGIFY(SKF_AD_QUEUE)
  XLAT(SKF_AD_HATYPE),
+ #define XLAT_VAL_7 ((unsigned) (SKF_AD_HATYPE))
+ #define XLAT_STR_7 STRINGIFY(SKF_AD_HATYPE)
  XLAT(SKF_AD_RXHASH),
+ #define XLAT_VAL_8 ((unsigned) (SKF_AD_RXHASH))
+ #define XLAT_STR_8 STRINGIFY(SKF_AD_RXHASH)
  XLAT(SKF_AD_CPU),
+ #define XLAT_VAL_9 ((unsigned) (SKF_AD_CPU))
+ #define XLAT_STR_9 STRINGIFY(SKF_AD_CPU)
  XLAT(SKF_AD_ALU_XOR_X),
+ #define XLAT_VAL_10 ((unsigned) (SKF_AD_ALU_XOR_X))
+ #define XLAT_STR_10 STRINGIFY(SKF_AD_ALU_XOR_X)
  XLAT(SKF_AD_VLAN_TAG),
+ #define XLAT_VAL_11 ((unsigned) (SKF_AD_VLAN_TAG))
+ #define XLAT_STR_11 STRINGIFY(SKF_AD_VLAN_TAG)
  XLAT(SKF_AD_VLAN_TAG_PRESENT),
+ #define XLAT_VAL_12 ((unsigned) (SKF_AD_VLAN_TAG_PRESENT))
+ #define XLAT_STR_12 STRINGIFY(SKF_AD_VLAN_TAG_PRESENT)
  XLAT(SKF_AD_PAY_OFFSET),
+ #define XLAT_VAL_13 ((unsigned) (SKF_AD_PAY_OFFSET))
+ #define XLAT_STR_13 STRINGIFY(SKF_AD_PAY_OFFSET)
  XLAT(SKF_AD_RANDOM),
+ #define XLAT_VAL_14 ((unsigned) (SKF_AD_RANDOM))
+ #define XLAT_STR_14 STRINGIFY(SKF_AD_RANDOM)
  XLAT(SKF_AD_VLAN_TPID),
- XLAT_END
+ #define XLAT_VAL_15 ((unsigned) (SKF_AD_VLAN_TPID))
+ #define XLAT_STR_15 STRINGIFY(SKF_AD_VLAN_TPID)
 };
+static
+const struct xlat skf_ad[1] = { {
+ .data = skf_ad_xdata,
+ .size = ARRAY_SIZE(skf_ad_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 77afe64df6eb69509c9bf41dfa803160dc130c56..50cd3f995bf301dea9c1804652b3a5a184f602bf 100644 (file)
@@ -24,3 +24,61 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define SKF_LL_OFF -0x200000
 #endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat skf_off in mpers mode
+
+# else
+
+static const struct xlat_data skf_off_xdata[] = {
+ XLAT(SKF_AD_OFF),
+ #define XLAT_VAL_0 ((unsigned) (SKF_AD_OFF))
+ #define XLAT_STR_0 STRINGIFY(SKF_AD_OFF)
+ XLAT(SKF_NET_OFF),
+ #define XLAT_VAL_1 ((unsigned) (SKF_NET_OFF))
+ #define XLAT_STR_1 STRINGIFY(SKF_NET_OFF)
+ XLAT(SKF_LL_OFF),
+ #define XLAT_VAL_2 ((unsigned) (SKF_LL_OFF))
+ #define XLAT_STR_2 STRINGIFY(SKF_LL_OFF)
+};
+static
+const struct xlat skf_off[1] = { {
+ .data = skf_off_xdata,
+ .size = ARRAY_SIZE(skf_off_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
index 6db30a9a6a643cf0587307bc669abfb21a1957b4..afb75eeab7b60ab66420f9249909c5e1290dbdf5 100644 (file)
@@ -1,4 +1,3 @@
 SKF_AD_OFF     -0x1000
 SKF_NET_OFF    -0x100000
 SKF_LL_OFF     -0x200000
-#stop
index 2f8f859f95b31ac9e21c59cdafc1b19e15a5b6ff..2f40cba75e2a0bdb635d2f17c63bdb44ceb61f2f 100644 (file)
@@ -124,28 +124,195 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat smc_decl_codes[] = {
-
+static const struct xlat_data smc_decl_codes_xdata[] = {
  XLAT(SMC_CLC_DECL_MEM),
+ #define XLAT_VAL_0 ((unsigned) (SMC_CLC_DECL_MEM))
+ #define XLAT_STR_0 STRINGIFY(SMC_CLC_DECL_MEM)
  XLAT(SMC_CLC_DECL_TIMEOUT_CL),
+ #define XLAT_VAL_1 ((unsigned) (SMC_CLC_DECL_TIMEOUT_CL))
+ #define XLAT_STR_1 STRINGIFY(SMC_CLC_DECL_TIMEOUT_CL)
  XLAT(SMC_CLC_DECL_TIMEOUT_AL),
+ #define XLAT_VAL_2 ((unsigned) (SMC_CLC_DECL_TIMEOUT_AL))
+ #define XLAT_STR_2 STRINGIFY(SMC_CLC_DECL_TIMEOUT_AL)
  XLAT(SMC_CLC_DECL_CNFERR),
+ #define XLAT_VAL_3 ((unsigned) (SMC_CLC_DECL_CNFERR))
+ #define XLAT_STR_3 STRINGIFY(SMC_CLC_DECL_CNFERR)
  XLAT(SMC_CLC_DECL_PEERNOSMC),
+ #define XLAT_VAL_4 ((unsigned) (SMC_CLC_DECL_PEERNOSMC))
+ #define XLAT_STR_4 STRINGIFY(SMC_CLC_DECL_PEERNOSMC)
  XLAT(SMC_CLC_DECL_IPSEC),
+ #define XLAT_VAL_5 ((unsigned) (SMC_CLC_DECL_IPSEC))
+ #define XLAT_STR_5 STRINGIFY(SMC_CLC_DECL_IPSEC)
  XLAT(SMC_CLC_DECL_NOSMCDEV),
+ #define XLAT_VAL_6 ((unsigned) (SMC_CLC_DECL_NOSMCDEV))
+ #define XLAT_STR_6 STRINGIFY(SMC_CLC_DECL_NOSMCDEV)
  XLAT(SMC_CLC_DECL_MODEUNSUPP),
+ #define XLAT_VAL_7 ((unsigned) (SMC_CLC_DECL_MODEUNSUPP))
+ #define XLAT_STR_7 STRINGIFY(SMC_CLC_DECL_MODEUNSUPP)
  XLAT(SMC_CLC_DECL_RMBE_EC),
+ #define XLAT_VAL_8 ((unsigned) (SMC_CLC_DECL_RMBE_EC))
+ #define XLAT_STR_8 STRINGIFY(SMC_CLC_DECL_RMBE_EC)
  XLAT(SMC_CLC_DECL_OPTUNSUPP),
+ #define XLAT_VAL_9 ((unsigned) (SMC_CLC_DECL_OPTUNSUPP))
+ #define XLAT_STR_9 STRINGIFY(SMC_CLC_DECL_OPTUNSUPP)
  XLAT(SMC_CLC_DECL_SYNCERR),
+ #define XLAT_VAL_10 ((unsigned) (SMC_CLC_DECL_SYNCERR))
+ #define XLAT_STR_10 STRINGIFY(SMC_CLC_DECL_SYNCERR)
  XLAT(SMC_CLC_DECL_PEERDECL),
+ #define XLAT_VAL_11 ((unsigned) (SMC_CLC_DECL_PEERDECL))
+ #define XLAT_STR_11 STRINGIFY(SMC_CLC_DECL_PEERDECL)
  XLAT(SMC_CLC_DECL_INTERR),
+ #define XLAT_VAL_12 ((unsigned) (SMC_CLC_DECL_INTERR))
+ #define XLAT_STR_12 STRINGIFY(SMC_CLC_DECL_INTERR)
  XLAT(SMC_CLC_DECL_ERR_RTOK),
+ #define XLAT_VAL_13 ((unsigned) (SMC_CLC_DECL_ERR_RTOK))
+ #define XLAT_STR_13 STRINGIFY(SMC_CLC_DECL_ERR_RTOK)
  XLAT(SMC_CLC_DECL_ERR_RDYLNK),
+ #define XLAT_VAL_14 ((unsigned) (SMC_CLC_DECL_ERR_RDYLNK))
+ #define XLAT_STR_14 STRINGIFY(SMC_CLC_DECL_ERR_RDYLNK)
  XLAT(SMC_CLC_DECL_ERR_REGRMB),
- XLAT_END
+ #define XLAT_VAL_15 ((unsigned) (SMC_CLC_DECL_ERR_REGRMB))
+ #define XLAT_STR_15 STRINGIFY(SMC_CLC_DECL_ERR_REGRMB)
 };
+static
+const struct xlat smc_decl_codes[1] = { {
+ .data = smc_decl_codes_xdata,
+ .size = ARRAY_SIZE(smc_decl_codes_xdata),
+ .type = XT_SORTED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index d7810f8931b0dfd04a0305a4521a595edc18e282..2832da334e6f6f5eb6897d44fb0777e4906ab1fd 100644 (file)
@@ -1,4 +1,4 @@
-/* sorted */
+#sorted
 SMC_CLC_DECL_MEM       0x01010000
 SMC_CLC_DECL_TIMEOUT_CL        0x02010000
 SMC_CLC_DECL_TIMEOUT_AL        0x02020000
index 9ec8b073cfeca07ec732f4b63ea08030987c02b0..0208b4366c46499e35b518394dcbffcc8dcfa6b4 100644 (file)
 
 # else
 
-static
-const struct xlat smc_diag_attrs[] = {
+static const struct xlat_data smc_diag_attrs_xdata[] = {
  XLAT(SMC_DIAG_NONE),
+ #define XLAT_VAL_0 ((unsigned) (SMC_DIAG_NONE))
+ #define XLAT_STR_0 STRINGIFY(SMC_DIAG_NONE)
  XLAT(SMC_DIAG_CONNINFO),
+ #define XLAT_VAL_1 ((unsigned) (SMC_DIAG_CONNINFO))
+ #define XLAT_STR_1 STRINGIFY(SMC_DIAG_CONNINFO)
  XLAT(SMC_DIAG_LGRINFO),
+ #define XLAT_VAL_2 ((unsigned) (SMC_DIAG_LGRINFO))
+ #define XLAT_STR_2 STRINGIFY(SMC_DIAG_LGRINFO)
  XLAT(SMC_DIAG_SHUTDOWN),
+ #define XLAT_VAL_3 ((unsigned) (SMC_DIAG_SHUTDOWN))
+ #define XLAT_STR_3 STRINGIFY(SMC_DIAG_SHUTDOWN)
  XLAT(SMC_DIAG_DMBINFO),
+ #define XLAT_VAL_4 ((unsigned) (SMC_DIAG_DMBINFO))
+ #define XLAT_STR_4 STRINGIFY(SMC_DIAG_DMBINFO)
  XLAT(SMC_DIAG_FALLBACK),
- XLAT_END
+ #define XLAT_VAL_5 ((unsigned) (SMC_DIAG_FALLBACK))
+ #define XLAT_STR_5 STRINGIFY(SMC_DIAG_FALLBACK)
 };
+static
+const struct xlat smc_diag_attrs[1] = { {
+ .data = smc_diag_attrs_xdata,
+ .size = ARRAY_SIZE(smc_diag_attrs_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 48cb3a4e6b31ee9897607d0d81ae475e98d5f324..724e4286e02a0c7e329443f93750939ad5283182 100644 (file)
 
 # else
 
-static
-const struct xlat smc_diag_extended_flags[] = {
+static const struct xlat_data smc_diag_extended_flags_xdata[] = {
  XLAT(1<<(SMC_DIAG_CONNINFO-1)),
+ #define XLAT_VAL_0 ((unsigned) (1<<(SMC_DIAG_CONNINFO-1)))
+ #define XLAT_STR_0 STRINGIFY(1<<(SMC_DIAG_CONNINFO-1))
  XLAT(1<<(SMC_DIAG_LGRINFO-1)),
- XLAT_END
+ #define XLAT_VAL_1 ((unsigned) (1<<(SMC_DIAG_LGRINFO-1)))
+ #define XLAT_STR_1 STRINGIFY(1<<(SMC_DIAG_LGRINFO-1))
 };
-
+static
+const struct xlat smc_diag_extended_flags[1] = { {
+ .data = smc_diag_extended_flags_xdata,
+ .size = ARRAY_SIZE(smc_diag_extended_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 7cbddcdee8a71fb02d517daa66869879b551cf39..7798bb0adfeb264836a1155a326705465411beed 100644 (file)
@@ -33,14 +33,52 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat smc_diag_mode[] = {
+static const struct xlat_data smc_diag_mode_xdata[] = {
  [SMC_DIAG_MODE_SMCR] = XLAT(SMC_DIAG_MODE_SMCR),
+ #define XLAT_VAL_0 ((unsigned) (SMC_DIAG_MODE_SMCR))
+ #define XLAT_STR_0 STRINGIFY(SMC_DIAG_MODE_SMCR)
  [SMC_DIAG_MODE_FALLBACK_TCP] = XLAT(SMC_DIAG_MODE_FALLBACK_TCP),
+ #define XLAT_VAL_1 ((unsigned) (SMC_DIAG_MODE_FALLBACK_TCP))
+ #define XLAT_STR_1 STRINGIFY(SMC_DIAG_MODE_FALLBACK_TCP)
  [SMC_DIAG_MODE_SMCD] = XLAT(SMC_DIAG_MODE_SMCD),
- XLAT_END
+ #define XLAT_VAL_2 ((unsigned) (SMC_DIAG_MODE_SMCD))
+ #define XLAT_STR_2 STRINGIFY(SMC_DIAG_MODE_SMCD)
 };
+static
+const struct xlat smc_diag_mode[1] = { {
+ .data = smc_diag_mode_xdata,
+ .size = ARRAY_SIZE(smc_diag_mode_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 24f2f5dd3d5d6df767ca0048f7761d51a9f71a7e..8ad8f0fbcb62c3f9787a7dd4da99d63953e779c3 100644 (file)
@@ -26,13 +26,41 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat smc_link_group_roles[] = {
- XLAT(SMC_CLNT),
- XLAT(SMC_SERV),
- XLAT_END
+static const struct xlat_data smc_link_group_roles_xdata[] = {
+ [SMC_CLNT] = XLAT(SMC_CLNT),
+ #define XLAT_VAL_0 ((unsigned) (SMC_CLNT))
+ #define XLAT_STR_0 STRINGIFY(SMC_CLNT)
+ [SMC_SERV] = XLAT(SMC_SERV),
+ #define XLAT_VAL_1 ((unsigned) (SMC_SERV))
+ #define XLAT_STR_1 STRINGIFY(SMC_SERV)
 };
+static
+const struct xlat smc_link_group_roles[1] = { {
+ .data = smc_link_group_roles_xdata,
+ .size = ARRAY_SIZE(smc_link_group_roles_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index d1cc06d4ef3965bce89f258af1ceca76ba1be360..c278526ae0421b8edebab32ad79a15e0ff654322 100644 (file)
@@ -1,2 +1,3 @@
+#value_indexed
 SMC_CLNT       0
 SMC_SERV       1
index 47ad92b2918054c6b7928d14ca1a374b78707072..a551f0d4b16e7e10d608c9ef16b166e27fc838aa 100644 (file)
@@ -26,13 +26,41 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat smc_protocols[] = {
+static const struct xlat_data smc_protocols_xdata[] = {
  [SMCPROTO_SMC] = XLAT(SMCPROTO_SMC),
+ #define XLAT_VAL_0 ((unsigned) (SMCPROTO_SMC))
+ #define XLAT_STR_0 STRINGIFY(SMCPROTO_SMC)
  [SMCPROTO_SMC6] = XLAT(SMCPROTO_SMC6),
- XLAT_END
+ #define XLAT_VAL_1 ((unsigned) (SMCPROTO_SMC6))
+ #define XLAT_STR_1 STRINGIFY(SMCPROTO_SMC6)
 };
+static
+const struct xlat smc_protocols[1] = { {
+ .data = smc_protocols_xdata,
+ .size = ARRAY_SIZE(smc_protocols_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index e88a62c2a3eaf1191f19b177d012052db67c699e..9cb3102470f205f803fd026052bff18e6025007a 100644 (file)
@@ -96,23 +96,151 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat smc_states[] = {
+static const struct xlat_data smc_states_xdata[] = {
  XLAT(SMC_ACTIVE),
+ #define XLAT_VAL_0 ((unsigned) (SMC_ACTIVE))
+ #define XLAT_STR_0 STRINGIFY(SMC_ACTIVE)
  XLAT(SMC_INIT),
+ #define XLAT_VAL_1 ((unsigned) (SMC_INIT))
+ #define XLAT_STR_1 STRINGIFY(SMC_INIT)
  XLAT(SMC_CLOSED),
+ #define XLAT_VAL_2 ((unsigned) (SMC_CLOSED))
+ #define XLAT_STR_2 STRINGIFY(SMC_CLOSED)
  XLAT(SMC_LISTEN),
+ #define XLAT_VAL_3 ((unsigned) (SMC_LISTEN))
+ #define XLAT_STR_3 STRINGIFY(SMC_LISTEN)
  XLAT(SMC_PEERCLOSEWAIT1),
+ #define XLAT_VAL_4 ((unsigned) (SMC_PEERCLOSEWAIT1))
+ #define XLAT_STR_4 STRINGIFY(SMC_PEERCLOSEWAIT1)
  XLAT(SMC_PEERCLOSEWAIT2),
+ #define XLAT_VAL_5 ((unsigned) (SMC_PEERCLOSEWAIT2))
+ #define XLAT_STR_5 STRINGIFY(SMC_PEERCLOSEWAIT2)
  XLAT(SMC_APPFINCLOSEWAIT),
+ #define XLAT_VAL_6 ((unsigned) (SMC_APPFINCLOSEWAIT))
+ #define XLAT_STR_6 STRINGIFY(SMC_APPFINCLOSEWAIT)
  XLAT(SMC_APPCLOSEWAIT1),
+ #define XLAT_VAL_7 ((unsigned) (SMC_APPCLOSEWAIT1))
+ #define XLAT_STR_7 STRINGIFY(SMC_APPCLOSEWAIT1)
  XLAT(SMC_APPCLOSEWAIT2),
+ #define XLAT_VAL_8 ((unsigned) (SMC_APPCLOSEWAIT2))
+ #define XLAT_STR_8 STRINGIFY(SMC_APPCLOSEWAIT2)
  XLAT(SMC_PEERFINCLOSEWAIT),
+ #define XLAT_VAL_9 ((unsigned) (SMC_PEERFINCLOSEWAIT))
+ #define XLAT_STR_9 STRINGIFY(SMC_PEERFINCLOSEWAIT)
  XLAT(SMC_PEERABORTWAIT),
+ #define XLAT_VAL_10 ((unsigned) (SMC_PEERABORTWAIT))
+ #define XLAT_STR_10 STRINGIFY(SMC_PEERABORTWAIT)
  XLAT(SMC_PROCESSABORT),
- XLAT_END
+ #define XLAT_VAL_11 ((unsigned) (SMC_PROCESSABORT))
+ #define XLAT_STR_11 STRINGIFY(SMC_PROCESSABORT)
 };
+static
+const struct xlat smc_states[1] = { {
+ .data = smc_states_xdata,
+ .size = ARRAY_SIZE(smc_states_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 62553d53a00430f4d12916ccee7fcadf38700cc7..88137ea176bed95af732390061f181f760e2be55 100644 (file)
@@ -54,17 +54,85 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat snmp_icmp6_stats[] = {
+static const struct xlat_data snmp_icmp6_stats_xdata[] = {
  [ICMP6_MIB_NUM] = XLAT(ICMP6_MIB_NUM),
+ #define XLAT_VAL_0 ((unsigned) (ICMP6_MIB_NUM))
+ #define XLAT_STR_0 STRINGIFY(ICMP6_MIB_NUM)
  [ICMP6_MIB_INMSGS] = XLAT(ICMP6_MIB_INMSGS),
+ #define XLAT_VAL_1 ((unsigned) (ICMP6_MIB_INMSGS))
+ #define XLAT_STR_1 STRINGIFY(ICMP6_MIB_INMSGS)
  [ICMP6_MIB_INERRORS] = XLAT(ICMP6_MIB_INERRORS),
+ #define XLAT_VAL_2 ((unsigned) (ICMP6_MIB_INERRORS))
+ #define XLAT_STR_2 STRINGIFY(ICMP6_MIB_INERRORS)
  [ICMP6_MIB_OUTMSGS] = XLAT(ICMP6_MIB_OUTMSGS),
+ #define XLAT_VAL_3 ((unsigned) (ICMP6_MIB_OUTMSGS))
+ #define XLAT_STR_3 STRINGIFY(ICMP6_MIB_OUTMSGS)
  [ICMP6_MIB_OUTERRORS] = XLAT(ICMP6_MIB_OUTERRORS),
+ #define XLAT_VAL_4 ((unsigned) (ICMP6_MIB_OUTERRORS))
+ #define XLAT_STR_4 STRINGIFY(ICMP6_MIB_OUTERRORS)
  [ICMP6_MIB_CSUMERRORS] = XLAT(ICMP6_MIB_CSUMERRORS),
- XLAT_END
+ #define XLAT_VAL_5 ((unsigned) (ICMP6_MIB_CSUMERRORS))
+ #define XLAT_STR_5 STRINGIFY(ICMP6_MIB_CSUMERRORS)
 };
+static
+const struct xlat snmp_icmp6_stats[1] = { {
+ .data = snmp_icmp6_stats_xdata,
+ .size = ARRAY_SIZE(snmp_icmp6_stats_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 0f743222990ecd71721c9542c0828d4dd4effb72..ea3981affa348a0110aec53b69958bf1884952be 100644 (file)
@@ -271,48 +271,426 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat snmp_ip_stats[] = {
+static const struct xlat_data snmp_ip_stats_xdata[] = {
  [IPSTATS_MIB_NUM] = XLAT(IPSTATS_MIB_NUM),
+ #define XLAT_VAL_0 ((unsigned) (IPSTATS_MIB_NUM))
+ #define XLAT_STR_0 STRINGIFY(IPSTATS_MIB_NUM)
  [IPSTATS_MIB_INPKTS] = XLAT(IPSTATS_MIB_INPKTS),
+ #define XLAT_VAL_1 ((unsigned) (IPSTATS_MIB_INPKTS))
+ #define XLAT_STR_1 STRINGIFY(IPSTATS_MIB_INPKTS)
  [IPSTATS_MIB_INOCTETS] = XLAT(IPSTATS_MIB_INOCTETS),
+ #define XLAT_VAL_2 ((unsigned) (IPSTATS_MIB_INOCTETS))
+ #define XLAT_STR_2 STRINGIFY(IPSTATS_MIB_INOCTETS)
  [IPSTATS_MIB_INDELIVERS] = XLAT(IPSTATS_MIB_INDELIVERS),
+ #define XLAT_VAL_3 ((unsigned) (IPSTATS_MIB_INDELIVERS))
+ #define XLAT_STR_3 STRINGIFY(IPSTATS_MIB_INDELIVERS)
  [IPSTATS_MIB_OUTFORWDATAGRAMS] = XLAT(IPSTATS_MIB_OUTFORWDATAGRAMS),
+ #define XLAT_VAL_4 ((unsigned) (IPSTATS_MIB_OUTFORWDATAGRAMS))
+ #define XLAT_STR_4 STRINGIFY(IPSTATS_MIB_OUTFORWDATAGRAMS)
  [IPSTATS_MIB_OUTPKTS] = XLAT(IPSTATS_MIB_OUTPKTS),
+ #define XLAT_VAL_5 ((unsigned) (IPSTATS_MIB_OUTPKTS))
+ #define XLAT_STR_5 STRINGIFY(IPSTATS_MIB_OUTPKTS)
  [IPSTATS_MIB_OUTOCTETS] = XLAT(IPSTATS_MIB_OUTOCTETS),
+ #define XLAT_VAL_6 ((unsigned) (IPSTATS_MIB_OUTOCTETS))
+ #define XLAT_STR_6 STRINGIFY(IPSTATS_MIB_OUTOCTETS)
  [IPSTATS_MIB_INHDRERRORS] = XLAT(IPSTATS_MIB_INHDRERRORS),
+ #define XLAT_VAL_7 ((unsigned) (IPSTATS_MIB_INHDRERRORS))
+ #define XLAT_STR_7 STRINGIFY(IPSTATS_MIB_INHDRERRORS)
  [IPSTATS_MIB_INTOOBIGERRORS] = XLAT(IPSTATS_MIB_INTOOBIGERRORS),
+ #define XLAT_VAL_8 ((unsigned) (IPSTATS_MIB_INTOOBIGERRORS))
+ #define XLAT_STR_8 STRINGIFY(IPSTATS_MIB_INTOOBIGERRORS)
  [IPSTATS_MIB_INNOROUTES] = XLAT(IPSTATS_MIB_INNOROUTES),
+ #define XLAT_VAL_9 ((unsigned) (IPSTATS_MIB_INNOROUTES))
+ #define XLAT_STR_9 STRINGIFY(IPSTATS_MIB_INNOROUTES)
  [IPSTATS_MIB_INADDRERRORS] = XLAT(IPSTATS_MIB_INADDRERRORS),
+ #define XLAT_VAL_10 ((unsigned) (IPSTATS_MIB_INADDRERRORS))
+ #define XLAT_STR_10 STRINGIFY(IPSTATS_MIB_INADDRERRORS)
  [IPSTATS_MIB_INUNKNOWNPROTOS] = XLAT(IPSTATS_MIB_INUNKNOWNPROTOS),
+ #define XLAT_VAL_11 ((unsigned) (IPSTATS_MIB_INUNKNOWNPROTOS))
+ #define XLAT_STR_11 STRINGIFY(IPSTATS_MIB_INUNKNOWNPROTOS)
  [IPSTATS_MIB_INTRUNCATEDPKTS] = XLAT(IPSTATS_MIB_INTRUNCATEDPKTS),
+ #define XLAT_VAL_12 ((unsigned) (IPSTATS_MIB_INTRUNCATEDPKTS))
+ #define XLAT_STR_12 STRINGIFY(IPSTATS_MIB_INTRUNCATEDPKTS)
  [IPSTATS_MIB_INDISCARDS] = XLAT(IPSTATS_MIB_INDISCARDS),
+ #define XLAT_VAL_13 ((unsigned) (IPSTATS_MIB_INDISCARDS))
+ #define XLAT_STR_13 STRINGIFY(IPSTATS_MIB_INDISCARDS)
  [IPSTATS_MIB_OUTDISCARDS] = XLAT(IPSTATS_MIB_OUTDISCARDS),
+ #define XLAT_VAL_14 ((unsigned) (IPSTATS_MIB_OUTDISCARDS))
+ #define XLAT_STR_14 STRINGIFY(IPSTATS_MIB_OUTDISCARDS)
  [IPSTATS_MIB_OUTNOROUTES] = XLAT(IPSTATS_MIB_OUTNOROUTES),
+ #define XLAT_VAL_15 ((unsigned) (IPSTATS_MIB_OUTNOROUTES))
+ #define XLAT_STR_15 STRINGIFY(IPSTATS_MIB_OUTNOROUTES)
  [IPSTATS_MIB_REASMTIMEOUT] = XLAT(IPSTATS_MIB_REASMTIMEOUT),
+ #define XLAT_VAL_16 ((unsigned) (IPSTATS_MIB_REASMTIMEOUT))
+ #define XLAT_STR_16 STRINGIFY(IPSTATS_MIB_REASMTIMEOUT)
  [IPSTATS_MIB_REASMREQDS] = XLAT(IPSTATS_MIB_REASMREQDS),
+ #define XLAT_VAL_17 ((unsigned) (IPSTATS_MIB_REASMREQDS))
+ #define XLAT_STR_17 STRINGIFY(IPSTATS_MIB_REASMREQDS)
  [IPSTATS_MIB_REASMOKS] = XLAT(IPSTATS_MIB_REASMOKS),
+ #define XLAT_VAL_18 ((unsigned) (IPSTATS_MIB_REASMOKS))
+ #define XLAT_STR_18 STRINGIFY(IPSTATS_MIB_REASMOKS)
  [IPSTATS_MIB_REASMFAILS] = XLAT(IPSTATS_MIB_REASMFAILS),
+ #define XLAT_VAL_19 ((unsigned) (IPSTATS_MIB_REASMFAILS))
+ #define XLAT_STR_19 STRINGIFY(IPSTATS_MIB_REASMFAILS)
  [IPSTATS_MIB_FRAGOKS] = XLAT(IPSTATS_MIB_FRAGOKS),
+ #define XLAT_VAL_20 ((unsigned) (IPSTATS_MIB_FRAGOKS))
+ #define XLAT_STR_20 STRINGIFY(IPSTATS_MIB_FRAGOKS)
  [IPSTATS_MIB_FRAGFAILS] = XLAT(IPSTATS_MIB_FRAGFAILS),
+ #define XLAT_VAL_21 ((unsigned) (IPSTATS_MIB_FRAGFAILS))
+ #define XLAT_STR_21 STRINGIFY(IPSTATS_MIB_FRAGFAILS)
  [IPSTATS_MIB_FRAGCREATES] = XLAT(IPSTATS_MIB_FRAGCREATES),
+ #define XLAT_VAL_22 ((unsigned) (IPSTATS_MIB_FRAGCREATES))
+ #define XLAT_STR_22 STRINGIFY(IPSTATS_MIB_FRAGCREATES)
  [IPSTATS_MIB_INMCASTPKTS] = XLAT(IPSTATS_MIB_INMCASTPKTS),
+ #define XLAT_VAL_23 ((unsigned) (IPSTATS_MIB_INMCASTPKTS))
+ #define XLAT_STR_23 STRINGIFY(IPSTATS_MIB_INMCASTPKTS)
  [IPSTATS_MIB_OUTMCASTPKTS] = XLAT(IPSTATS_MIB_OUTMCASTPKTS),
+ #define XLAT_VAL_24 ((unsigned) (IPSTATS_MIB_OUTMCASTPKTS))
+ #define XLAT_STR_24 STRINGIFY(IPSTATS_MIB_OUTMCASTPKTS)
  [IPSTATS_MIB_INBCASTPKTS] = XLAT(IPSTATS_MIB_INBCASTPKTS),
+ #define XLAT_VAL_25 ((unsigned) (IPSTATS_MIB_INBCASTPKTS))
+ #define XLAT_STR_25 STRINGIFY(IPSTATS_MIB_INBCASTPKTS)
  [IPSTATS_MIB_OUTBCASTPKTS] = XLAT(IPSTATS_MIB_OUTBCASTPKTS),
+ #define XLAT_VAL_26 ((unsigned) (IPSTATS_MIB_OUTBCASTPKTS))
+ #define XLAT_STR_26 STRINGIFY(IPSTATS_MIB_OUTBCASTPKTS)
  [IPSTATS_MIB_INMCASTOCTETS] = XLAT(IPSTATS_MIB_INMCASTOCTETS),
+ #define XLAT_VAL_27 ((unsigned) (IPSTATS_MIB_INMCASTOCTETS))
+ #define XLAT_STR_27 STRINGIFY(IPSTATS_MIB_INMCASTOCTETS)
  [IPSTATS_MIB_OUTMCASTOCTETS] = XLAT(IPSTATS_MIB_OUTMCASTOCTETS),
+ #define XLAT_VAL_28 ((unsigned) (IPSTATS_MIB_OUTMCASTOCTETS))
+ #define XLAT_STR_28 STRINGIFY(IPSTATS_MIB_OUTMCASTOCTETS)
  [IPSTATS_MIB_INBCASTOCTETS] = XLAT(IPSTATS_MIB_INBCASTOCTETS),
+ #define XLAT_VAL_29 ((unsigned) (IPSTATS_MIB_INBCASTOCTETS))
+ #define XLAT_STR_29 STRINGIFY(IPSTATS_MIB_INBCASTOCTETS)
  [IPSTATS_MIB_OUTBCASTOCTETS] = XLAT(IPSTATS_MIB_OUTBCASTOCTETS),
+ #define XLAT_VAL_30 ((unsigned) (IPSTATS_MIB_OUTBCASTOCTETS))
+ #define XLAT_STR_30 STRINGIFY(IPSTATS_MIB_OUTBCASTOCTETS)
  [IPSTATS_MIB_CSUMERRORS] = XLAT(IPSTATS_MIB_CSUMERRORS),
+ #define XLAT_VAL_31 ((unsigned) (IPSTATS_MIB_CSUMERRORS))
+ #define XLAT_STR_31 STRINGIFY(IPSTATS_MIB_CSUMERRORS)
  [IPSTATS_MIB_NOECTPKTS] = XLAT(IPSTATS_MIB_NOECTPKTS),
+ #define XLAT_VAL_32 ((unsigned) (IPSTATS_MIB_NOECTPKTS))
+ #define XLAT_STR_32 STRINGIFY(IPSTATS_MIB_NOECTPKTS)
  [IPSTATS_MIB_ECT1PKTS] = XLAT(IPSTATS_MIB_ECT1PKTS),
+ #define XLAT_VAL_33 ((unsigned) (IPSTATS_MIB_ECT1PKTS))
+ #define XLAT_STR_33 STRINGIFY(IPSTATS_MIB_ECT1PKTS)
  [IPSTATS_MIB_ECT0PKTS] = XLAT(IPSTATS_MIB_ECT0PKTS),
+ #define XLAT_VAL_34 ((unsigned) (IPSTATS_MIB_ECT0PKTS))
+ #define XLAT_STR_34 STRINGIFY(IPSTATS_MIB_ECT0PKTS)
  [IPSTATS_MIB_CEPKTS] = XLAT(IPSTATS_MIB_CEPKTS),
+ #define XLAT_VAL_35 ((unsigned) (IPSTATS_MIB_CEPKTS))
+ #define XLAT_STR_35 STRINGIFY(IPSTATS_MIB_CEPKTS)
  [IPSTATS_MIB_REASM_OVERLAPS] = XLAT(IPSTATS_MIB_REASM_OVERLAPS),
- XLAT_END
+ #define XLAT_VAL_36 ((unsigned) (IPSTATS_MIB_REASM_OVERLAPS))
+ #define XLAT_STR_36 STRINGIFY(IPSTATS_MIB_REASM_OVERLAPS)
 };
+static
+const struct xlat snmp_ip_stats[1] = { {
+ .data = snmp_ip_stats_xdata,
+ .size = ARRAY_SIZE(snmp_ip_stats_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+#  ifdef XLAT_VAL_30
+  | XLAT_VAL_30
+#  endif
+#  ifdef XLAT_VAL_31
+  | XLAT_VAL_31
+#  endif
+#  ifdef XLAT_VAL_32
+  | XLAT_VAL_32
+#  endif
+#  ifdef XLAT_VAL_33
+  | XLAT_VAL_33
+#  endif
+#  ifdef XLAT_VAL_34
+  | XLAT_VAL_34
+#  endif
+#  ifdef XLAT_VAL_35
+  | XLAT_VAL_35
+#  endif
+#  ifdef XLAT_VAL_36
+  | XLAT_VAL_36
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+#  ifdef XLAT_STR_30
+  + sizeof(XLAT_STR_30)
+#  endif
+#  ifdef XLAT_STR_31
+  + sizeof(XLAT_STR_31)
+#  endif
+#  ifdef XLAT_STR_32
+  + sizeof(XLAT_STR_32)
+#  endif
+#  ifdef XLAT_STR_33
+  + sizeof(XLAT_STR_33)
+#  endif
+#  ifdef XLAT_STR_34
+  + sizeof(XLAT_STR_34)
+#  endif
+#  ifdef XLAT_STR_35
+  + sizeof(XLAT_STR_35)
+#  endif
+#  ifdef XLAT_STR_36
+  + sizeof(XLAT_STR_36)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
+#  undef XLAT_STR_30
+#  undef XLAT_VAL_30
+#  undef XLAT_STR_31
+#  undef XLAT_VAL_31
+#  undef XLAT_STR_32
+#  undef XLAT_VAL_32
+#  undef XLAT_STR_33
+#  undef XLAT_VAL_33
+#  undef XLAT_STR_34
+#  undef XLAT_VAL_34
+#  undef XLAT_STR_35
+#  undef XLAT_VAL_35
+#  undef XLAT_STR_36
+#  undef XLAT_VAL_36
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 41b00a9956ab25b3f25d98e1d7ddd93f18ebd5ab..36ba94fb55de57e2dc2ca7513da0b973dbdd497f 100644 (file)
@@ -47,16 +47,74 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat sock_alg_options[] = {
+static const struct xlat_data sock_alg_options_xdata[] = {
  [ALG_SET_KEY] = XLAT(ALG_SET_KEY),
+ #define XLAT_VAL_0 ((unsigned) (ALG_SET_KEY))
+ #define XLAT_STR_0 STRINGIFY(ALG_SET_KEY)
  [ALG_SET_IV] = XLAT(ALG_SET_IV),
+ #define XLAT_VAL_1 ((unsigned) (ALG_SET_IV))
+ #define XLAT_STR_1 STRINGIFY(ALG_SET_IV)
  [ALG_SET_OP] = XLAT(ALG_SET_OP),
+ #define XLAT_VAL_2 ((unsigned) (ALG_SET_OP))
+ #define XLAT_STR_2 STRINGIFY(ALG_SET_OP)
  [ALG_SET_AEAD_ASSOCLEN] = XLAT(ALG_SET_AEAD_ASSOCLEN),
+ #define XLAT_VAL_3 ((unsigned) (ALG_SET_AEAD_ASSOCLEN))
+ #define XLAT_STR_3 STRINGIFY(ALG_SET_AEAD_ASSOCLEN)
  [ALG_SET_AEAD_AUTHSIZE] = XLAT(ALG_SET_AEAD_AUTHSIZE),
- XLAT_END
+ #define XLAT_VAL_4 ((unsigned) (ALG_SET_AEAD_AUTHSIZE))
+ #define XLAT_STR_4 STRINGIFY(ALG_SET_AEAD_AUTHSIZE)
 };
+static
+const struct xlat sock_alg_options[1] = { {
+ .data = sock_alg_options_xdata,
+ .size = ARRAY_SIZE(sock_alg_options_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 11c833d16975030136cc7c657e5ff6e24fff32fd..0f6cff396d81bfaa915578b6bce7fadb5379a9d8 100644 (file)
@@ -89,28 +89,155 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat sock_ax25_options[] = {
-
+static const struct xlat_data sock_ax25_options_xdata[] = {
  XLAT(AX25_WINDOW),
+ #define XLAT_VAL_0 ((unsigned) (AX25_WINDOW))
+ #define XLAT_STR_0 STRINGIFY(AX25_WINDOW)
  XLAT(AX25_T1),
+ #define XLAT_VAL_1 ((unsigned) (AX25_T1))
+ #define XLAT_STR_1 STRINGIFY(AX25_T1)
  XLAT(AX25_N2),
+ #define XLAT_VAL_2 ((unsigned) (AX25_N2))
+ #define XLAT_STR_2 STRINGIFY(AX25_N2)
  XLAT(AX25_T3),
+ #define XLAT_VAL_3 ((unsigned) (AX25_T3))
+ #define XLAT_STR_3 STRINGIFY(AX25_T3)
  XLAT(AX25_T2),
+ #define XLAT_VAL_4 ((unsigned) (AX25_T2))
+ #define XLAT_STR_4 STRINGIFY(AX25_T2)
  XLAT(AX25_BACKOFF),
+ #define XLAT_VAL_5 ((unsigned) (AX25_BACKOFF))
+ #define XLAT_STR_5 STRINGIFY(AX25_BACKOFF)
  XLAT(AX25_EXTSEQ),
+ #define XLAT_VAL_6 ((unsigned) (AX25_EXTSEQ))
+ #define XLAT_STR_6 STRINGIFY(AX25_EXTSEQ)
  XLAT(AX25_PIDINCL),
+ #define XLAT_VAL_7 ((unsigned) (AX25_PIDINCL))
+ #define XLAT_STR_7 STRINGIFY(AX25_PIDINCL)
  XLAT(AX25_IDLE),
+ #define XLAT_VAL_8 ((unsigned) (AX25_IDLE))
+ #define XLAT_STR_8 STRINGIFY(AX25_IDLE)
  XLAT(AX25_PACLEN),
+ #define XLAT_VAL_9 ((unsigned) (AX25_PACLEN))
+ #define XLAT_STR_9 STRINGIFY(AX25_PACLEN)
  XLAT(AX25_IAMDIGI),
+ #define XLAT_VAL_10 ((unsigned) (AX25_IAMDIGI))
+ #define XLAT_STR_10 STRINGIFY(AX25_IAMDIGI)
 
 
 #if defined(SO_BINDTODEVICE) || (defined(HAVE_DECL_SO_BINDTODEVICE) && HAVE_DECL_SO_BINDTODEVICE)
   XLAT(SO_BINDTODEVICE),
+ #define XLAT_VAL_11 ((unsigned) (SO_BINDTODEVICE))
+ #define XLAT_STR_11 STRINGIFY(SO_BINDTODEVICE)
 #endif
- XLAT_END
 };
+static
+const struct xlat sock_ax25_options[1] = { {
+ .data = sock_ax25_options_xdata,
+ .size = ARRAY_SIZE(sock_ax25_options_xdata),
+ .type = XT_SORTED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 4b6bed5813bc18867930dd1ce92517be02316fce..2a526104f327ca3b4c8a46173a8e2a6fc6130bc1 100644 (file)
@@ -1,4 +1,4 @@
-/* sorted */
+#sorted
 AX25_WINDOW    1
 AX25_T1                2
 AX25_N2                3
index 4a57abd99e7806f598fec71e2d62a01d6d65c0e6..1bbfddc3c929be6df8eb6906fc8a8a58d0b352c7 100644 (file)
@@ -68,20 +68,107 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat sock_bluetooth_options[] = {
-
+static const struct xlat_data sock_bluetooth_options_xdata[] = {
  XLAT(BT_SECURITY),
+ #define XLAT_VAL_0 ((unsigned) (BT_SECURITY))
+ #define XLAT_STR_0 STRINGIFY(BT_SECURITY)
  XLAT(BT_DEFER_SETUP),
+ #define XLAT_VAL_1 ((unsigned) (BT_DEFER_SETUP))
+ #define XLAT_STR_1 STRINGIFY(BT_DEFER_SETUP)
  XLAT(BT_FLUSHABLE),
+ #define XLAT_VAL_2 ((unsigned) (BT_FLUSHABLE))
+ #define XLAT_STR_2 STRINGIFY(BT_FLUSHABLE)
  XLAT(BT_POWER),
+ #define XLAT_VAL_3 ((unsigned) (BT_POWER))
+ #define XLAT_STR_3 STRINGIFY(BT_POWER)
  XLAT(BT_CHANNEL_POLICY),
+ #define XLAT_VAL_4 ((unsigned) (BT_CHANNEL_POLICY))
+ #define XLAT_STR_4 STRINGIFY(BT_CHANNEL_POLICY)
  XLAT(BT_VOICE),
+ #define XLAT_VAL_5 ((unsigned) (BT_VOICE))
+ #define XLAT_STR_5 STRINGIFY(BT_VOICE)
  XLAT(BT_SNDMTU),
+ #define XLAT_VAL_6 ((unsigned) (BT_SNDMTU))
+ #define XLAT_STR_6 STRINGIFY(BT_SNDMTU)
  XLAT(BT_RCVMTU),
- XLAT_END
+ #define XLAT_VAL_7 ((unsigned) (BT_RCVMTU))
+ #define XLAT_STR_7 STRINGIFY(BT_RCVMTU)
 };
+static
+const struct xlat sock_bluetooth_options[1] = { {
+ .data = sock_bluetooth_options_xdata,
+ .size = ARRAY_SIZE(sock_bluetooth_options_xdata),
+ .type = XT_SORTED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 919b21b0b27e8a6f784321a60d2642ed899f96d5..4c91dd296db3f7ca02bf0668ecbafd23aeeab578 100644 (file)
@@ -1,4 +1,4 @@
-/* sort -k2,2n */
+#sorted sort -k2,2n
 BT_SECURITY            4
 BT_DEFER_SETUP         7
 BT_FLUSHABLE           8
index 1066132fd4f2c0bb26d0c7d4ae5b5ccf255f8c14..9558ae65770718c6094c6a0a60b6eac9af18ea0f 100644 (file)
@@ -33,14 +33,52 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat sock_caif_options[] = {
+static const struct xlat_data sock_caif_options_xdata[] = {
  XLAT(CAIFSO_LINK_SELECT),
+ #define XLAT_VAL_0 ((unsigned) (CAIFSO_LINK_SELECT))
+ #define XLAT_STR_0 STRINGIFY(CAIFSO_LINK_SELECT)
  XLAT(CAIFSO_REQ_PARAM),
+ #define XLAT_VAL_1 ((unsigned) (CAIFSO_REQ_PARAM))
+ #define XLAT_STR_1 STRINGIFY(CAIFSO_REQ_PARAM)
  XLAT(CAIFSO_RSP_PARAM),
- XLAT_END
+ #define XLAT_VAL_2 ((unsigned) (CAIFSO_RSP_PARAM))
+ #define XLAT_STR_2 STRINGIFY(CAIFSO_RSP_PARAM)
 };
+static
+const struct xlat sock_caif_options[1] = { {
+ .data = sock_caif_options_xdata,
+ .size = ARRAY_SIZE(sock_caif_options_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 41b487ccba7718f1edbff584c48f7e7b85a19162..2142bd21ed20a051a8198814292737e91e0dadf3 100644 (file)
@@ -124,28 +124,195 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat sock_dccp_options[] = {
-
+static const struct xlat_data sock_dccp_options_xdata[] = {
  XLAT(DCCP_SOCKOPT_PACKET_SIZE),
+ #define XLAT_VAL_0 ((unsigned) (DCCP_SOCKOPT_PACKET_SIZE))
+ #define XLAT_STR_0 STRINGIFY(DCCP_SOCKOPT_PACKET_SIZE)
  XLAT(DCCP_SOCKOPT_SERVICE),
+ #define XLAT_VAL_1 ((unsigned) (DCCP_SOCKOPT_SERVICE))
+ #define XLAT_STR_1 STRINGIFY(DCCP_SOCKOPT_SERVICE)
  XLAT(DCCP_SOCKOPT_CHANGE_L),
+ #define XLAT_VAL_2 ((unsigned) (DCCP_SOCKOPT_CHANGE_L))
+ #define XLAT_STR_2 STRINGIFY(DCCP_SOCKOPT_CHANGE_L)
  XLAT(DCCP_SOCKOPT_CHANGE_R),
+ #define XLAT_VAL_3 ((unsigned) (DCCP_SOCKOPT_CHANGE_R))
+ #define XLAT_STR_3 STRINGIFY(DCCP_SOCKOPT_CHANGE_R)
  XLAT(DCCP_SOCKOPT_GET_CUR_MPS),
+ #define XLAT_VAL_4 ((unsigned) (DCCP_SOCKOPT_GET_CUR_MPS))
+ #define XLAT_STR_4 STRINGIFY(DCCP_SOCKOPT_GET_CUR_MPS)
  XLAT(DCCP_SOCKOPT_SERVER_TIMEWAIT),
+ #define XLAT_VAL_5 ((unsigned) (DCCP_SOCKOPT_SERVER_TIMEWAIT))
+ #define XLAT_STR_5 STRINGIFY(DCCP_SOCKOPT_SERVER_TIMEWAIT)
  XLAT(DCCP_SOCKOPT_SEND_CSCOV),
+ #define XLAT_VAL_6 ((unsigned) (DCCP_SOCKOPT_SEND_CSCOV))
+ #define XLAT_STR_6 STRINGIFY(DCCP_SOCKOPT_SEND_CSCOV)
  XLAT(DCCP_SOCKOPT_RECV_CSCOV),
+ #define XLAT_VAL_7 ((unsigned) (DCCP_SOCKOPT_RECV_CSCOV))
+ #define XLAT_STR_7 STRINGIFY(DCCP_SOCKOPT_RECV_CSCOV)
  XLAT(DCCP_SOCKOPT_AVAILABLE_CCIDS),
+ #define XLAT_VAL_8 ((unsigned) (DCCP_SOCKOPT_AVAILABLE_CCIDS))
+ #define XLAT_STR_8 STRINGIFY(DCCP_SOCKOPT_AVAILABLE_CCIDS)
  XLAT(DCCP_SOCKOPT_CCID),
+ #define XLAT_VAL_9 ((unsigned) (DCCP_SOCKOPT_CCID))
+ #define XLAT_STR_9 STRINGIFY(DCCP_SOCKOPT_CCID)
  XLAT(DCCP_SOCKOPT_TX_CCID),
+ #define XLAT_VAL_10 ((unsigned) (DCCP_SOCKOPT_TX_CCID))
+ #define XLAT_STR_10 STRINGIFY(DCCP_SOCKOPT_TX_CCID)
  XLAT(DCCP_SOCKOPT_RX_CCID),
+ #define XLAT_VAL_11 ((unsigned) (DCCP_SOCKOPT_RX_CCID))
+ #define XLAT_STR_11 STRINGIFY(DCCP_SOCKOPT_RX_CCID)
  XLAT(DCCP_SOCKOPT_QPOLICY_ID),
+ #define XLAT_VAL_12 ((unsigned) (DCCP_SOCKOPT_QPOLICY_ID))
+ #define XLAT_STR_12 STRINGIFY(DCCP_SOCKOPT_QPOLICY_ID)
  XLAT(DCCP_SOCKOPT_QPOLICY_TXQLEN),
+ #define XLAT_VAL_13 ((unsigned) (DCCP_SOCKOPT_QPOLICY_TXQLEN))
+ #define XLAT_STR_13 STRINGIFY(DCCP_SOCKOPT_QPOLICY_TXQLEN)
  XLAT(DCCP_SOCKOPT_CCID_RX_INFO),
+ #define XLAT_VAL_14 ((unsigned) (DCCP_SOCKOPT_CCID_RX_INFO))
+ #define XLAT_STR_14 STRINGIFY(DCCP_SOCKOPT_CCID_RX_INFO)
  XLAT(DCCP_SOCKOPT_CCID_TX_INFO),
- XLAT_END
+ #define XLAT_VAL_15 ((unsigned) (DCCP_SOCKOPT_CCID_TX_INFO))
+ #define XLAT_STR_15 STRINGIFY(DCCP_SOCKOPT_CCID_TX_INFO)
 };
+static
+const struct xlat sock_dccp_options[1] = { {
+ .data = sock_dccp_options_xdata,
+ .size = ARRAY_SIZE(sock_dccp_options_xdata),
+ .type = XT_SORTED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 06a0efe804647c0ee51d99292627df74dbce38f0..e168b06b378270d8881cd246ea25d79a2323bfed 100644 (file)
@@ -1,4 +1,4 @@
-/* sort -k2,2n */
+#sorted sort -k2,2n
 DCCP_SOCKOPT_PACKET_SIZE       1
 DCCP_SOCKOPT_SERVICE           2
 DCCP_SOCKOPT_CHANGE_L          3
index 496db57c1016ae57927210e198dc762921727cdd..1fba9484a94ad271e7958085ec745a29bee1fb23 100644 (file)
 
 # else
 
-static
-const struct xlat sock_ip_options[] = {
+static const struct xlat_data sock_ip_options_xdata[] = {
 #if defined(IP_TOS) || (defined(HAVE_DECL_IP_TOS) && HAVE_DECL_IP_TOS)
   XLAT(IP_TOS),
+ #define XLAT_VAL_0 ((unsigned) (IP_TOS))
+ #define XLAT_STR_0 STRINGIFY(IP_TOS)
 #endif
 #if defined(IP_TTL) || (defined(HAVE_DECL_IP_TTL) && HAVE_DECL_IP_TTL)
   XLAT(IP_TTL),
+ #define XLAT_VAL_1 ((unsigned) (IP_TTL))
+ #define XLAT_STR_1 STRINGIFY(IP_TTL)
 #endif
 #if defined(IP_HDRINCL) || (defined(HAVE_DECL_IP_HDRINCL) && HAVE_DECL_IP_HDRINCL)
   XLAT(IP_HDRINCL),
+ #define XLAT_VAL_2 ((unsigned) (IP_HDRINCL))
+ #define XLAT_STR_2 STRINGIFY(IP_HDRINCL)
 #endif
 #if defined(IP_OPTIONS) || (defined(HAVE_DECL_IP_OPTIONS) && HAVE_DECL_IP_OPTIONS)
   XLAT(IP_OPTIONS),
+ #define XLAT_VAL_3 ((unsigned) (IP_OPTIONS))
+ #define XLAT_STR_3 STRINGIFY(IP_OPTIONS)
 #endif
 #if defined(IP_ROUTER_ALERT) || (defined(HAVE_DECL_IP_ROUTER_ALERT) && HAVE_DECL_IP_ROUTER_ALERT)
   XLAT(IP_ROUTER_ALERT),
+ #define XLAT_VAL_4 ((unsigned) (IP_ROUTER_ALERT))
+ #define XLAT_STR_4 STRINGIFY(IP_ROUTER_ALERT)
 #endif
 #if defined(IP_RECVOPTIONS) || (defined(HAVE_DECL_IP_RECVOPTIONS) && HAVE_DECL_IP_RECVOPTIONS)
   XLAT(IP_RECVOPTIONS),
+ #define XLAT_VAL_5 ((unsigned) (IP_RECVOPTIONS))
+ #define XLAT_STR_5 STRINGIFY(IP_RECVOPTIONS)
 #endif
 #if defined(IP_RECVOPTS) || (defined(HAVE_DECL_IP_RECVOPTS) && HAVE_DECL_IP_RECVOPTS)
   XLAT(IP_RECVOPTS),
+ #define XLAT_VAL_6 ((unsigned) (IP_RECVOPTS))
+ #define XLAT_STR_6 STRINGIFY(IP_RECVOPTS)
 #endif
 #if defined(IP_RETOPTS) || (defined(HAVE_DECL_IP_RETOPTS) && HAVE_DECL_IP_RETOPTS)
   XLAT(IP_RETOPTS),
+ #define XLAT_VAL_7 ((unsigned) (IP_RETOPTS))
+ #define XLAT_STR_7 STRINGIFY(IP_RETOPTS)
 #endif
 #if defined(IP_RECVRETOPTS) || (defined(HAVE_DECL_IP_RECVRETOPTS) && HAVE_DECL_IP_RECVRETOPTS)
   XLAT(IP_RECVRETOPTS),
+ #define XLAT_VAL_8 ((unsigned) (IP_RECVRETOPTS))
+ #define XLAT_STR_8 STRINGIFY(IP_RECVRETOPTS)
 #endif
 #if defined(IP_RECVDSTADDR) || (defined(HAVE_DECL_IP_RECVDSTADDR) && HAVE_DECL_IP_RECVDSTADDR)
   XLAT(IP_RECVDSTADDR),
+ #define XLAT_VAL_9 ((unsigned) (IP_RECVDSTADDR))
+ #define XLAT_STR_9 STRINGIFY(IP_RECVDSTADDR)
 #endif
 #if defined(IP_PKTINFO) || (defined(HAVE_DECL_IP_PKTINFO) && HAVE_DECL_IP_PKTINFO)
   XLAT(IP_PKTINFO),
+ #define XLAT_VAL_10 ((unsigned) (IP_PKTINFO))
+ #define XLAT_STR_10 STRINGIFY(IP_PKTINFO)
 #endif
 #if defined(IP_PKTOPTIONS) || (defined(HAVE_DECL_IP_PKTOPTIONS) && HAVE_DECL_IP_PKTOPTIONS)
   XLAT(IP_PKTOPTIONS),
+ #define XLAT_VAL_11 ((unsigned) (IP_PKTOPTIONS))
+ #define XLAT_STR_11 STRINGIFY(IP_PKTOPTIONS)
 #endif
 #if defined(IP_MTU_DISCOVER) || (defined(HAVE_DECL_IP_MTU_DISCOVER) && HAVE_DECL_IP_MTU_DISCOVER)
   XLAT(IP_MTU_DISCOVER),
+ #define XLAT_VAL_12 ((unsigned) (IP_MTU_DISCOVER))
+ #define XLAT_STR_12 STRINGIFY(IP_MTU_DISCOVER)
 #endif
 #if defined(IP_RECVERR) || (defined(HAVE_DECL_IP_RECVERR) && HAVE_DECL_IP_RECVERR)
   XLAT(IP_RECVERR),
+ #define XLAT_VAL_13 ((unsigned) (IP_RECVERR))
+ #define XLAT_STR_13 STRINGIFY(IP_RECVERR)
 #endif
 #if defined(IP_RECVTTL) || (defined(HAVE_DECL_IP_RECVTTL) && HAVE_DECL_IP_RECVTTL)
   XLAT(IP_RECVTTL),
+ #define XLAT_VAL_14 ((unsigned) (IP_RECVTTL))
+ #define XLAT_STR_14 STRINGIFY(IP_RECVTTL)
 #endif
 #if defined(IP_RECVTOS) || (defined(HAVE_DECL_IP_RECVTOS) && HAVE_DECL_IP_RECVTOS)
   XLAT(IP_RECVTOS),
+ #define XLAT_VAL_15 ((unsigned) (IP_RECVTOS))
+ #define XLAT_STR_15 STRINGIFY(IP_RECVTOS)
 #endif
 #if defined(IP_MTU) || (defined(HAVE_DECL_IP_MTU) && HAVE_DECL_IP_MTU)
   XLAT(IP_MTU),
+ #define XLAT_VAL_16 ((unsigned) (IP_MTU))
+ #define XLAT_STR_16 STRINGIFY(IP_MTU)
 #endif
 #if defined(IP_MULTICAST_IF) || (defined(HAVE_DECL_IP_MULTICAST_IF) && HAVE_DECL_IP_MULTICAST_IF)
   XLAT(IP_MULTICAST_IF),
+ #define XLAT_VAL_17 ((unsigned) (IP_MULTICAST_IF))
+ #define XLAT_STR_17 STRINGIFY(IP_MULTICAST_IF)
 #endif
 #if defined(IP_MULTICAST_TTL) || (defined(HAVE_DECL_IP_MULTICAST_TTL) && HAVE_DECL_IP_MULTICAST_TTL)
   XLAT(IP_MULTICAST_TTL),
+ #define XLAT_VAL_18 ((unsigned) (IP_MULTICAST_TTL))
+ #define XLAT_STR_18 STRINGIFY(IP_MULTICAST_TTL)
 #endif
 #if defined(IP_MULTICAST_LOOP) || (defined(HAVE_DECL_IP_MULTICAST_LOOP) && HAVE_DECL_IP_MULTICAST_LOOP)
   XLAT(IP_MULTICAST_LOOP),
+ #define XLAT_VAL_19 ((unsigned) (IP_MULTICAST_LOOP))
+ #define XLAT_STR_19 STRINGIFY(IP_MULTICAST_LOOP)
 #endif
 #if defined(IP_ADD_MEMBERSHIP) || (defined(HAVE_DECL_IP_ADD_MEMBERSHIP) && HAVE_DECL_IP_ADD_MEMBERSHIP)
   XLAT(IP_ADD_MEMBERSHIP),
+ #define XLAT_VAL_20 ((unsigned) (IP_ADD_MEMBERSHIP))
+ #define XLAT_STR_20 STRINGIFY(IP_ADD_MEMBERSHIP)
 #endif
 #if defined(IP_DROP_MEMBERSHIP) || (defined(HAVE_DECL_IP_DROP_MEMBERSHIP) && HAVE_DECL_IP_DROP_MEMBERSHIP)
   XLAT(IP_DROP_MEMBERSHIP),
+ #define XLAT_VAL_21 ((unsigned) (IP_DROP_MEMBERSHIP))
+ #define XLAT_STR_21 STRINGIFY(IP_DROP_MEMBERSHIP)
 #endif
 #if defined(IP_BROADCAST_IF) || (defined(HAVE_DECL_IP_BROADCAST_IF) && HAVE_DECL_IP_BROADCAST_IF)
   XLAT(IP_BROADCAST_IF),
+ #define XLAT_VAL_22 ((unsigned) (IP_BROADCAST_IF))
+ #define XLAT_STR_22 STRINGIFY(IP_BROADCAST_IF)
 #endif
 #if defined(IP_RECVIFINDEX) || (defined(HAVE_DECL_IP_RECVIFINDEX) && HAVE_DECL_IP_RECVIFINDEX)
   XLAT(IP_RECVIFINDEX),
+ #define XLAT_VAL_23 ((unsigned) (IP_RECVIFINDEX))
+ #define XLAT_STR_23 STRINGIFY(IP_RECVIFINDEX)
 #endif
 #if defined(IP_MSFILTER) || (defined(HAVE_DECL_IP_MSFILTER) && HAVE_DECL_IP_MSFILTER)
   XLAT(IP_MSFILTER),
+ #define XLAT_VAL_24 ((unsigned) (IP_MSFILTER))
+ #define XLAT_STR_24 STRINGIFY(IP_MSFILTER)
 #endif
 #if defined(IP_FREEBIND) || (defined(HAVE_DECL_IP_FREEBIND) && HAVE_DECL_IP_FREEBIND)
   XLAT(IP_FREEBIND),
+ #define XLAT_VAL_25 ((unsigned) (IP_FREEBIND))
+ #define XLAT_STR_25 STRINGIFY(IP_FREEBIND)
 #endif
 #if defined(IP_IPSEC_POLICY) || (defined(HAVE_DECL_IP_IPSEC_POLICY) && HAVE_DECL_IP_IPSEC_POLICY)
   XLAT(IP_IPSEC_POLICY),
+ #define XLAT_VAL_26 ((unsigned) (IP_IPSEC_POLICY))
+ #define XLAT_STR_26 STRINGIFY(IP_IPSEC_POLICY)
 #endif
 #if defined(IP_XFRM_POLICY) || (defined(HAVE_DECL_IP_XFRM_POLICY) && HAVE_DECL_IP_XFRM_POLICY)
   XLAT(IP_XFRM_POLICY),
+ #define XLAT_VAL_27 ((unsigned) (IP_XFRM_POLICY))
+ #define XLAT_STR_27 STRINGIFY(IP_XFRM_POLICY)
 #endif
 #if defined(IP_PASSSEC) || (defined(HAVE_DECL_IP_PASSSEC) && HAVE_DECL_IP_PASSSEC)
   XLAT(IP_PASSSEC),
+ #define XLAT_VAL_28 ((unsigned) (IP_PASSSEC))
+ #define XLAT_STR_28 STRINGIFY(IP_PASSSEC)
 #endif
 #if defined(IP_TRANSPARENT) || (defined(HAVE_DECL_IP_TRANSPARENT) && HAVE_DECL_IP_TRANSPARENT)
   XLAT(IP_TRANSPARENT),
+ #define XLAT_VAL_29 ((unsigned) (IP_TRANSPARENT))
+ #define XLAT_STR_29 STRINGIFY(IP_TRANSPARENT)
 #endif
 #if defined(IP_ORIGDSTADDR) || (defined(HAVE_DECL_IP_ORIGDSTADDR) && HAVE_DECL_IP_ORIGDSTADDR)
   XLAT(IP_ORIGDSTADDR),
+ #define XLAT_VAL_30 ((unsigned) (IP_ORIGDSTADDR))
+ #define XLAT_STR_30 STRINGIFY(IP_ORIGDSTADDR)
 #endif
 #if defined(IP_RECVORIGDSTADDR) || (defined(HAVE_DECL_IP_RECVORIGDSTADDR) && HAVE_DECL_IP_RECVORIGDSTADDR)
   XLAT(IP_RECVORIGDSTADDR),
+ #define XLAT_VAL_31 ((unsigned) (IP_RECVORIGDSTADDR))
+ #define XLAT_STR_31 STRINGIFY(IP_RECVORIGDSTADDR)
 #endif
 #if defined(IP_MINTTL) || (defined(HAVE_DECL_IP_MINTTL) && HAVE_DECL_IP_MINTTL)
   XLAT(IP_MINTTL),
+ #define XLAT_VAL_32 ((unsigned) (IP_MINTTL))
+ #define XLAT_STR_32 STRINGIFY(IP_MINTTL)
 #endif
 #if defined(IP_NODEFRAG) || (defined(HAVE_DECL_IP_NODEFRAG) && HAVE_DECL_IP_NODEFRAG)
   XLAT(IP_NODEFRAG),
+ #define XLAT_VAL_33 ((unsigned) (IP_NODEFRAG))
+ #define XLAT_STR_33 STRINGIFY(IP_NODEFRAG)
 #endif
 #if defined(IP_CHECKSUM) || (defined(HAVE_DECL_IP_CHECKSUM) && HAVE_DECL_IP_CHECKSUM)
   XLAT(IP_CHECKSUM),
+ #define XLAT_VAL_34 ((unsigned) (IP_CHECKSUM))
+ #define XLAT_STR_34 STRINGIFY(IP_CHECKSUM)
 #endif
 #if defined(IP_BIND_ADDRESS_NO_PORT) || (defined(HAVE_DECL_IP_BIND_ADDRESS_NO_PORT) && HAVE_DECL_IP_BIND_ADDRESS_NO_PORT)
   XLAT(IP_BIND_ADDRESS_NO_PORT),
+ #define XLAT_VAL_35 ((unsigned) (IP_BIND_ADDRESS_NO_PORT))
+ #define XLAT_STR_35 STRINGIFY(IP_BIND_ADDRESS_NO_PORT)
 #endif
 #if defined(IP_RECVFRAGSIZE) || (defined(HAVE_DECL_IP_RECVFRAGSIZE) && HAVE_DECL_IP_RECVFRAGSIZE)
   XLAT(IP_RECVFRAGSIZE),
+ #define XLAT_VAL_36 ((unsigned) (IP_RECVFRAGSIZE))
+ #define XLAT_STR_36 STRINGIFY(IP_RECVFRAGSIZE)
+#endif
+#if defined(IP_RECVERR_RFC4884) || (defined(HAVE_DECL_IP_RECVERR_RFC4884) && HAVE_DECL_IP_RECVERR_RFC4884)
+  XLAT(IP_RECVERR_RFC4884),
+ #define XLAT_VAL_37 ((unsigned) (IP_RECVERR_RFC4884))
+ #define XLAT_STR_37 STRINGIFY(IP_RECVERR_RFC4884)
 #endif
 #if defined(IP_UNBLOCK_SOURCE) || (defined(HAVE_DECL_IP_UNBLOCK_SOURCE) && HAVE_DECL_IP_UNBLOCK_SOURCE)
   XLAT(IP_UNBLOCK_SOURCE),
+ #define XLAT_VAL_38 ((unsigned) (IP_UNBLOCK_SOURCE))
+ #define XLAT_STR_38 STRINGIFY(IP_UNBLOCK_SOURCE)
 #endif
 #if defined(IP_BLOCK_SOURCE) || (defined(HAVE_DECL_IP_BLOCK_SOURCE) && HAVE_DECL_IP_BLOCK_SOURCE)
   XLAT(IP_BLOCK_SOURCE),
+ #define XLAT_VAL_39 ((unsigned) (IP_BLOCK_SOURCE))
+ #define XLAT_STR_39 STRINGIFY(IP_BLOCK_SOURCE)
 #endif
 #if defined(IP_ADD_SOURCE_MEMBERSHIP) || (defined(HAVE_DECL_IP_ADD_SOURCE_MEMBERSHIP) && HAVE_DECL_IP_ADD_SOURCE_MEMBERSHIP)
   XLAT(IP_ADD_SOURCE_MEMBERSHIP),
+ #define XLAT_VAL_40 ((unsigned) (IP_ADD_SOURCE_MEMBERSHIP))
+ #define XLAT_STR_40 STRINGIFY(IP_ADD_SOURCE_MEMBERSHIP)
 #endif
 #if defined(IP_DROP_SOURCE_MEMBERSHIP) || (defined(HAVE_DECL_IP_DROP_SOURCE_MEMBERSHIP) && HAVE_DECL_IP_DROP_SOURCE_MEMBERSHIP)
   XLAT(IP_DROP_SOURCE_MEMBERSHIP),
+ #define XLAT_VAL_41 ((unsigned) (IP_DROP_SOURCE_MEMBERSHIP))
+ #define XLAT_STR_41 STRINGIFY(IP_DROP_SOURCE_MEMBERSHIP)
 #endif
 #if defined(MCAST_JOIN_GROUP) || (defined(HAVE_DECL_MCAST_JOIN_GROUP) && HAVE_DECL_MCAST_JOIN_GROUP)
   XLAT(MCAST_JOIN_GROUP),
+ #define XLAT_VAL_42 ((unsigned) (MCAST_JOIN_GROUP))
+ #define XLAT_STR_42 STRINGIFY(MCAST_JOIN_GROUP)
 #endif
 #if defined(MCAST_BLOCK_SOURCE) || (defined(HAVE_DECL_MCAST_BLOCK_SOURCE) && HAVE_DECL_MCAST_BLOCK_SOURCE)
   XLAT(MCAST_BLOCK_SOURCE),
+ #define XLAT_VAL_43 ((unsigned) (MCAST_BLOCK_SOURCE))
+ #define XLAT_STR_43 STRINGIFY(MCAST_BLOCK_SOURCE)
 #endif
 #if defined(MCAST_UNBLOCK_SOURCE) || (defined(HAVE_DECL_MCAST_UNBLOCK_SOURCE) && HAVE_DECL_MCAST_UNBLOCK_SOURCE)
   XLAT(MCAST_UNBLOCK_SOURCE),
+ #define XLAT_VAL_44 ((unsigned) (MCAST_UNBLOCK_SOURCE))
+ #define XLAT_STR_44 STRINGIFY(MCAST_UNBLOCK_SOURCE)
 #endif
 #if defined(MCAST_LEAVE_GROUP) || (defined(HAVE_DECL_MCAST_LEAVE_GROUP) && HAVE_DECL_MCAST_LEAVE_GROUP)
   XLAT(MCAST_LEAVE_GROUP),
+ #define XLAT_VAL_45 ((unsigned) (MCAST_LEAVE_GROUP))
+ #define XLAT_STR_45 STRINGIFY(MCAST_LEAVE_GROUP)
 #endif
 #if defined(MCAST_JOIN_SOURCE_GROUP) || (defined(HAVE_DECL_MCAST_JOIN_SOURCE_GROUP) && HAVE_DECL_MCAST_JOIN_SOURCE_GROUP)
   XLAT(MCAST_JOIN_SOURCE_GROUP),
+ #define XLAT_VAL_46 ((unsigned) (MCAST_JOIN_SOURCE_GROUP))
+ #define XLAT_STR_46 STRINGIFY(MCAST_JOIN_SOURCE_GROUP)
 #endif
 #if defined(MCAST_LEAVE_SOURCE_GROUP) || (defined(HAVE_DECL_MCAST_LEAVE_SOURCE_GROUP) && HAVE_DECL_MCAST_LEAVE_SOURCE_GROUP)
   XLAT(MCAST_LEAVE_SOURCE_GROUP),
+ #define XLAT_VAL_47 ((unsigned) (MCAST_LEAVE_SOURCE_GROUP))
+ #define XLAT_STR_47 STRINGIFY(MCAST_LEAVE_SOURCE_GROUP)
 #endif
 #if defined(MCAST_MSFILTER) || (defined(HAVE_DECL_MCAST_MSFILTER) && HAVE_DECL_MCAST_MSFILTER)
   XLAT(MCAST_MSFILTER),
+ #define XLAT_VAL_48 ((unsigned) (MCAST_MSFILTER))
+ #define XLAT_STR_48 STRINGIFY(MCAST_MSFILTER)
 #endif
 #if defined(IP_MULTICAST_ALL) || (defined(HAVE_DECL_IP_MULTICAST_ALL) && HAVE_DECL_IP_MULTICAST_ALL)
   XLAT(IP_MULTICAST_ALL),
+ #define XLAT_VAL_49 ((unsigned) (IP_MULTICAST_ALL))
+ #define XLAT_STR_49 STRINGIFY(IP_MULTICAST_ALL)
 #endif
 #if defined(IP_UNICAST_IF) || (defined(HAVE_DECL_IP_UNICAST_IF) && HAVE_DECL_IP_UNICAST_IF)
   XLAT(IP_UNICAST_IF),
+ #define XLAT_VAL_50 ((unsigned) (IP_UNICAST_IF))
+ #define XLAT_STR_50 STRINGIFY(IP_UNICAST_IF)
 #endif
- XLAT_END
 };
+static
+const struct xlat sock_ip_options[1] = { {
+ .data = sock_ip_options_xdata,
+ .size = ARRAY_SIZE(sock_ip_options_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+#  ifdef XLAT_VAL_30
+  | XLAT_VAL_30
+#  endif
+#  ifdef XLAT_VAL_31
+  | XLAT_VAL_31
+#  endif
+#  ifdef XLAT_VAL_32
+  | XLAT_VAL_32
+#  endif
+#  ifdef XLAT_VAL_33
+  | XLAT_VAL_33
+#  endif
+#  ifdef XLAT_VAL_34
+  | XLAT_VAL_34
+#  endif
+#  ifdef XLAT_VAL_35
+  | XLAT_VAL_35
+#  endif
+#  ifdef XLAT_VAL_36
+  | XLAT_VAL_36
+#  endif
+#  ifdef XLAT_VAL_37
+  | XLAT_VAL_37
+#  endif
+#  ifdef XLAT_VAL_38
+  | XLAT_VAL_38
+#  endif
+#  ifdef XLAT_VAL_39
+  | XLAT_VAL_39
+#  endif
+#  ifdef XLAT_VAL_40
+  | XLAT_VAL_40
+#  endif
+#  ifdef XLAT_VAL_41
+  | XLAT_VAL_41
+#  endif
+#  ifdef XLAT_VAL_42
+  | XLAT_VAL_42
+#  endif
+#  ifdef XLAT_VAL_43
+  | XLAT_VAL_43
+#  endif
+#  ifdef XLAT_VAL_44
+  | XLAT_VAL_44
+#  endif
+#  ifdef XLAT_VAL_45
+  | XLAT_VAL_45
+#  endif
+#  ifdef XLAT_VAL_46
+  | XLAT_VAL_46
+#  endif
+#  ifdef XLAT_VAL_47
+  | XLAT_VAL_47
+#  endif
+#  ifdef XLAT_VAL_48
+  | XLAT_VAL_48
+#  endif
+#  ifdef XLAT_VAL_49
+  | XLAT_VAL_49
+#  endif
+#  ifdef XLAT_VAL_50
+  | XLAT_VAL_50
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+#  ifdef XLAT_STR_30
+  + sizeof(XLAT_STR_30)
+#  endif
+#  ifdef XLAT_STR_31
+  + sizeof(XLAT_STR_31)
+#  endif
+#  ifdef XLAT_STR_32
+  + sizeof(XLAT_STR_32)
+#  endif
+#  ifdef XLAT_STR_33
+  + sizeof(XLAT_STR_33)
+#  endif
+#  ifdef XLAT_STR_34
+  + sizeof(XLAT_STR_34)
+#  endif
+#  ifdef XLAT_STR_35
+  + sizeof(XLAT_STR_35)
+#  endif
+#  ifdef XLAT_STR_36
+  + sizeof(XLAT_STR_36)
+#  endif
+#  ifdef XLAT_STR_37
+  + sizeof(XLAT_STR_37)
+#  endif
+#  ifdef XLAT_STR_38
+  + sizeof(XLAT_STR_38)
+#  endif
+#  ifdef XLAT_STR_39
+  + sizeof(XLAT_STR_39)
+#  endif
+#  ifdef XLAT_STR_40
+  + sizeof(XLAT_STR_40)
+#  endif
+#  ifdef XLAT_STR_41
+  + sizeof(XLAT_STR_41)
+#  endif
+#  ifdef XLAT_STR_42
+  + sizeof(XLAT_STR_42)
+#  endif
+#  ifdef XLAT_STR_43
+  + sizeof(XLAT_STR_43)
+#  endif
+#  ifdef XLAT_STR_44
+  + sizeof(XLAT_STR_44)
+#  endif
+#  ifdef XLAT_STR_45
+  + sizeof(XLAT_STR_45)
+#  endif
+#  ifdef XLAT_STR_46
+  + sizeof(XLAT_STR_46)
+#  endif
+#  ifdef XLAT_STR_47
+  + sizeof(XLAT_STR_47)
+#  endif
+#  ifdef XLAT_STR_48
+  + sizeof(XLAT_STR_48)
+#  endif
+#  ifdef XLAT_STR_49
+  + sizeof(XLAT_STR_49)
+#  endif
+#  ifdef XLAT_STR_50
+  + sizeof(XLAT_STR_50)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
+#  undef XLAT_STR_30
+#  undef XLAT_VAL_30
+#  undef XLAT_STR_31
+#  undef XLAT_VAL_31
+#  undef XLAT_STR_32
+#  undef XLAT_VAL_32
+#  undef XLAT_STR_33
+#  undef XLAT_VAL_33
+#  undef XLAT_STR_34
+#  undef XLAT_VAL_34
+#  undef XLAT_STR_35
+#  undef XLAT_VAL_35
+#  undef XLAT_STR_36
+#  undef XLAT_VAL_36
+#  undef XLAT_STR_37
+#  undef XLAT_VAL_37
+#  undef XLAT_STR_38
+#  undef XLAT_VAL_38
+#  undef XLAT_STR_39
+#  undef XLAT_VAL_39
+#  undef XLAT_STR_40
+#  undef XLAT_VAL_40
+#  undef XLAT_STR_41
+#  undef XLAT_VAL_41
+#  undef XLAT_STR_42
+#  undef XLAT_VAL_42
+#  undef XLAT_STR_43
+#  undef XLAT_VAL_43
+#  undef XLAT_STR_44
+#  undef XLAT_VAL_44
+#  undef XLAT_STR_45
+#  undef XLAT_VAL_45
+#  undef XLAT_STR_46
+#  undef XLAT_VAL_46
+#  undef XLAT_STR_47
+#  undef XLAT_VAL_47
+#  undef XLAT_STR_48
+#  undef XLAT_VAL_48
+#  undef XLAT_STR_49
+#  undef XLAT_VAL_49
+#  undef XLAT_STR_50
+#  undef XLAT_VAL_50
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 51ed1343c2528315328652df2bd3c7af4cf5969f..d9a60d3894d3ea4c5bc3bd69d43b2d71d23af7d2 100644 (file)
@@ -35,6 +35,7 @@ IP_NODEFRAG
 IP_CHECKSUM
 IP_BIND_ADDRESS_NO_PORT
 IP_RECVFRAGSIZE
+IP_RECVERR_RFC4884
 IP_UNBLOCK_SOURCE
 IP_BLOCK_SOURCE
 IP_ADD_SOURCE_MEMBERSHIP
index ad58b5d138f43b9f5b474fec80c115498d462520..f1a217d99fa371dee0b68584ec3d86ab1148d33b 100644 (file)
 
 # else
 
-static
-const struct xlat sock_ipv6_options[] = {
+static const struct xlat_data sock_ipv6_options_xdata[] = {
 #if defined(IPV6_ADDRFORM) || (defined(HAVE_DECL_IPV6_ADDRFORM) && HAVE_DECL_IPV6_ADDRFORM)
   XLAT(IPV6_ADDRFORM),
+ #define XLAT_VAL_0 ((unsigned) (IPV6_ADDRFORM))
+ #define XLAT_STR_0 STRINGIFY(IPV6_ADDRFORM)
 #endif
 #if defined(IPV6_2292PKTINFO) || (defined(HAVE_DECL_IPV6_2292PKTINFO) && HAVE_DECL_IPV6_2292PKTINFO)
   XLAT(IPV6_2292PKTINFO),
+ #define XLAT_VAL_1 ((unsigned) (IPV6_2292PKTINFO))
+ #define XLAT_STR_1 STRINGIFY(IPV6_2292PKTINFO)
 #endif
 #if defined(IPV6_2292HOPOPTS) || (defined(HAVE_DECL_IPV6_2292HOPOPTS) && HAVE_DECL_IPV6_2292HOPOPTS)
   XLAT(IPV6_2292HOPOPTS),
+ #define XLAT_VAL_2 ((unsigned) (IPV6_2292HOPOPTS))
+ #define XLAT_STR_2 STRINGIFY(IPV6_2292HOPOPTS)
 #endif
 #if defined(IPV6_2292DSTOPTS) || (defined(HAVE_DECL_IPV6_2292DSTOPTS) && HAVE_DECL_IPV6_2292DSTOPTS)
   XLAT(IPV6_2292DSTOPTS),
+ #define XLAT_VAL_3 ((unsigned) (IPV6_2292DSTOPTS))
+ #define XLAT_STR_3 STRINGIFY(IPV6_2292DSTOPTS)
 #endif
 #if defined(IPV6_2292RTHDR) || (defined(HAVE_DECL_IPV6_2292RTHDR) && HAVE_DECL_IPV6_2292RTHDR)
   XLAT(IPV6_2292RTHDR),
+ #define XLAT_VAL_4 ((unsigned) (IPV6_2292RTHDR))
+ #define XLAT_STR_4 STRINGIFY(IPV6_2292RTHDR)
 #endif
 #if defined(IPV6_2292PKTOPTIONS) || (defined(HAVE_DECL_IPV6_2292PKTOPTIONS) && HAVE_DECL_IPV6_2292PKTOPTIONS)
   XLAT(IPV6_2292PKTOPTIONS),
+ #define XLAT_VAL_5 ((unsigned) (IPV6_2292PKTOPTIONS))
+ #define XLAT_STR_5 STRINGIFY(IPV6_2292PKTOPTIONS)
 #endif
 #if defined(IPV6_CHECKSUM) || (defined(HAVE_DECL_IPV6_CHECKSUM) && HAVE_DECL_IPV6_CHECKSUM)
   XLAT(IPV6_CHECKSUM),
+ #define XLAT_VAL_6 ((unsigned) (IPV6_CHECKSUM))
+ #define XLAT_STR_6 STRINGIFY(IPV6_CHECKSUM)
 #endif
 #if defined(IPV6_2292HOPLIMIT) || (defined(HAVE_DECL_IPV6_2292HOPLIMIT) && HAVE_DECL_IPV6_2292HOPLIMIT)
   XLAT(IPV6_2292HOPLIMIT),
+ #define XLAT_VAL_7 ((unsigned) (IPV6_2292HOPLIMIT))
+ #define XLAT_STR_7 STRINGIFY(IPV6_2292HOPLIMIT)
 #endif
 #if defined(IPV6_NEXTHOP) || (defined(HAVE_DECL_IPV6_NEXTHOP) && HAVE_DECL_IPV6_NEXTHOP)
   XLAT(IPV6_NEXTHOP),
+ #define XLAT_VAL_8 ((unsigned) (IPV6_NEXTHOP))
+ #define XLAT_STR_8 STRINGIFY(IPV6_NEXTHOP)
 #endif
 #if defined(IPV6_AUTHHDR) || (defined(HAVE_DECL_IPV6_AUTHHDR) && HAVE_DECL_IPV6_AUTHHDR)
   XLAT(IPV6_AUTHHDR),
+ #define XLAT_VAL_9 ((unsigned) (IPV6_AUTHHDR))
+ #define XLAT_STR_9 STRINGIFY(IPV6_AUTHHDR)
 #endif
 #if defined(IPV6_FLOWINFO) || (defined(HAVE_DECL_IPV6_FLOWINFO) && HAVE_DECL_IPV6_FLOWINFO)
   XLAT(IPV6_FLOWINFO),
+ #define XLAT_VAL_10 ((unsigned) (IPV6_FLOWINFO))
+ #define XLAT_STR_10 STRINGIFY(IPV6_FLOWINFO)
 #endif
 #if defined(IPV6_UNICAST_HOPS) || (defined(HAVE_DECL_IPV6_UNICAST_HOPS) && HAVE_DECL_IPV6_UNICAST_HOPS)
   XLAT(IPV6_UNICAST_HOPS),
+ #define XLAT_VAL_11 ((unsigned) (IPV6_UNICAST_HOPS))
+ #define XLAT_STR_11 STRINGIFY(IPV6_UNICAST_HOPS)
 #endif
 #if defined(IPV6_MULTICAST_IF) || (defined(HAVE_DECL_IPV6_MULTICAST_IF) && HAVE_DECL_IPV6_MULTICAST_IF)
   XLAT(IPV6_MULTICAST_IF),
+ #define XLAT_VAL_12 ((unsigned) (IPV6_MULTICAST_IF))
+ #define XLAT_STR_12 STRINGIFY(IPV6_MULTICAST_IF)
 #endif
 #if defined(IPV6_MULTICAST_HOPS) || (defined(HAVE_DECL_IPV6_MULTICAST_HOPS) && HAVE_DECL_IPV6_MULTICAST_HOPS)
   XLAT(IPV6_MULTICAST_HOPS),
+ #define XLAT_VAL_13 ((unsigned) (IPV6_MULTICAST_HOPS))
+ #define XLAT_STR_13 STRINGIFY(IPV6_MULTICAST_HOPS)
 #endif
 #if defined(IPV6_MULTICAST_LOOP) || (defined(HAVE_DECL_IPV6_MULTICAST_LOOP) && HAVE_DECL_IPV6_MULTICAST_LOOP)
   XLAT(IPV6_MULTICAST_LOOP),
+ #define XLAT_VAL_14 ((unsigned) (IPV6_MULTICAST_LOOP))
+ #define XLAT_STR_14 STRINGIFY(IPV6_MULTICAST_LOOP)
 #endif
 #if defined(IPV6_ADD_MEMBERSHIP) || (defined(HAVE_DECL_IPV6_ADD_MEMBERSHIP) && HAVE_DECL_IPV6_ADD_MEMBERSHIP)
   XLAT(IPV6_ADD_MEMBERSHIP),
+ #define XLAT_VAL_15 ((unsigned) (IPV6_ADD_MEMBERSHIP))
+ #define XLAT_STR_15 STRINGIFY(IPV6_ADD_MEMBERSHIP)
 #endif
 #if defined(IPV6_DROP_MEMBERSHIP) || (defined(HAVE_DECL_IPV6_DROP_MEMBERSHIP) && HAVE_DECL_IPV6_DROP_MEMBERSHIP)
   XLAT(IPV6_DROP_MEMBERSHIP),
+ #define XLAT_VAL_16 ((unsigned) (IPV6_DROP_MEMBERSHIP))
+ #define XLAT_STR_16 STRINGIFY(IPV6_DROP_MEMBERSHIP)
 #endif
 #if defined(IPV6_ROUTER_ALERT) || (defined(HAVE_DECL_IPV6_ROUTER_ALERT) && HAVE_DECL_IPV6_ROUTER_ALERT)
   XLAT(IPV6_ROUTER_ALERT),
+ #define XLAT_VAL_17 ((unsigned) (IPV6_ROUTER_ALERT))
+ #define XLAT_STR_17 STRINGIFY(IPV6_ROUTER_ALERT)
 #endif
 #if defined(IPV6_MTU_DISCOVER) || (defined(HAVE_DECL_IPV6_MTU_DISCOVER) && HAVE_DECL_IPV6_MTU_DISCOVER)
   XLAT(IPV6_MTU_DISCOVER),
+ #define XLAT_VAL_18 ((unsigned) (IPV6_MTU_DISCOVER))
+ #define XLAT_STR_18 STRINGIFY(IPV6_MTU_DISCOVER)
 #endif
 #if defined(IPV6_MTU) || (defined(HAVE_DECL_IPV6_MTU) && HAVE_DECL_IPV6_MTU)
   XLAT(IPV6_MTU),
+ #define XLAT_VAL_19 ((unsigned) (IPV6_MTU))
+ #define XLAT_STR_19 STRINGIFY(IPV6_MTU)
 #endif
 #if defined(IPV6_RECVERR) || (defined(HAVE_DECL_IPV6_RECVERR) && HAVE_DECL_IPV6_RECVERR)
   XLAT(IPV6_RECVERR),
+ #define XLAT_VAL_20 ((unsigned) (IPV6_RECVERR))
+ #define XLAT_STR_20 STRINGIFY(IPV6_RECVERR)
 #endif
 #if defined(IPV6_V6ONLY) || (defined(HAVE_DECL_IPV6_V6ONLY) && HAVE_DECL_IPV6_V6ONLY)
   XLAT(IPV6_V6ONLY),
+ #define XLAT_VAL_21 ((unsigned) (IPV6_V6ONLY))
+ #define XLAT_STR_21 STRINGIFY(IPV6_V6ONLY)
 #endif
 #if defined(IPV6_JOIN_ANYCAST) || (defined(HAVE_DECL_IPV6_JOIN_ANYCAST) && HAVE_DECL_IPV6_JOIN_ANYCAST)
   XLAT(IPV6_JOIN_ANYCAST),
+ #define XLAT_VAL_22 ((unsigned) (IPV6_JOIN_ANYCAST))
+ #define XLAT_STR_22 STRINGIFY(IPV6_JOIN_ANYCAST)
 #endif
 #if defined(IPV6_LEAVE_ANYCAST) || (defined(HAVE_DECL_IPV6_LEAVE_ANYCAST) && HAVE_DECL_IPV6_LEAVE_ANYCAST)
   XLAT(IPV6_LEAVE_ANYCAST),
+ #define XLAT_VAL_23 ((unsigned) (IPV6_LEAVE_ANYCAST))
+ #define XLAT_STR_23 STRINGIFY(IPV6_LEAVE_ANYCAST)
 #endif
 #if defined(IPV6_MULTICAST_ALL) || (defined(HAVE_DECL_IPV6_MULTICAST_ALL) && HAVE_DECL_IPV6_MULTICAST_ALL)
   XLAT(IPV6_MULTICAST_ALL),
+ #define XLAT_VAL_24 ((unsigned) (IPV6_MULTICAST_ALL))
+ #define XLAT_STR_24 STRINGIFY(IPV6_MULTICAST_ALL)
 #endif
 #if defined(IPV6_ROUTER_ALERT_ISOLATE) || (defined(HAVE_DECL_IPV6_ROUTER_ALERT_ISOLATE) && HAVE_DECL_IPV6_ROUTER_ALERT_ISOLATE)
   XLAT(IPV6_ROUTER_ALERT_ISOLATE),
+ #define XLAT_VAL_25 ((unsigned) (IPV6_ROUTER_ALERT_ISOLATE))
+ #define XLAT_STR_25 STRINGIFY(IPV6_ROUTER_ALERT_ISOLATE)
+#endif
+#if defined(IPV6_RECVERR_RFC4884) || (defined(HAVE_DECL_IPV6_RECVERR_RFC4884) && HAVE_DECL_IPV6_RECVERR_RFC4884)
+  XLAT(IPV6_RECVERR_RFC4884),
+ #define XLAT_VAL_26 ((unsigned) (IPV6_RECVERR_RFC4884))
+ #define XLAT_STR_26 STRINGIFY(IPV6_RECVERR_RFC4884)
 #endif
 #if defined(IPV6_FLOWLABEL_MGR) || (defined(HAVE_DECL_IPV6_FLOWLABEL_MGR) && HAVE_DECL_IPV6_FLOWLABEL_MGR)
   XLAT(IPV6_FLOWLABEL_MGR),
+ #define XLAT_VAL_27 ((unsigned) (IPV6_FLOWLABEL_MGR))
+ #define XLAT_STR_27 STRINGIFY(IPV6_FLOWLABEL_MGR)
 #endif
 #if defined(IPV6_FLOWINFO_SEND) || (defined(HAVE_DECL_IPV6_FLOWINFO_SEND) && HAVE_DECL_IPV6_FLOWINFO_SEND)
   XLAT(IPV6_FLOWINFO_SEND),
+ #define XLAT_VAL_28 ((unsigned) (IPV6_FLOWINFO_SEND))
+ #define XLAT_STR_28 STRINGIFY(IPV6_FLOWINFO_SEND)
 #endif
 #if defined(IPV6_IPSEC_POLICY) || (defined(HAVE_DECL_IPV6_IPSEC_POLICY) && HAVE_DECL_IPV6_IPSEC_POLICY)
   XLAT(IPV6_IPSEC_POLICY),
+ #define XLAT_VAL_29 ((unsigned) (IPV6_IPSEC_POLICY))
+ #define XLAT_STR_29 STRINGIFY(IPV6_IPSEC_POLICY)
 #endif
 #if defined(IPV6_XFRM_POLICY) || (defined(HAVE_DECL_IPV6_XFRM_POLICY) && HAVE_DECL_IPV6_XFRM_POLICY)
   XLAT(IPV6_XFRM_POLICY),
+ #define XLAT_VAL_30 ((unsigned) (IPV6_XFRM_POLICY))
+ #define XLAT_STR_30 STRINGIFY(IPV6_XFRM_POLICY)
 #endif
 #if defined(IPV6_HDRINCL) || (defined(HAVE_DECL_IPV6_HDRINCL) && HAVE_DECL_IPV6_HDRINCL)
   XLAT(IPV6_HDRINCL),
+ #define XLAT_VAL_31 ((unsigned) (IPV6_HDRINCL))
+ #define XLAT_STR_31 STRINGIFY(IPV6_HDRINCL)
 #endif
 #if defined(MCAST_JOIN_GROUP) || (defined(HAVE_DECL_MCAST_JOIN_GROUP) && HAVE_DECL_MCAST_JOIN_GROUP)
   XLAT(MCAST_JOIN_GROUP),
+ #define XLAT_VAL_32 ((unsigned) (MCAST_JOIN_GROUP))
+ #define XLAT_STR_32 STRINGIFY(MCAST_JOIN_GROUP)
 #endif
 #if defined(MCAST_BLOCK_SOURCE) || (defined(HAVE_DECL_MCAST_BLOCK_SOURCE) && HAVE_DECL_MCAST_BLOCK_SOURCE)
   XLAT(MCAST_BLOCK_SOURCE),
+ #define XLAT_VAL_33 ((unsigned) (MCAST_BLOCK_SOURCE))
+ #define XLAT_STR_33 STRINGIFY(MCAST_BLOCK_SOURCE)
 #endif
 #if defined(MCAST_UNBLOCK_SOURCE) || (defined(HAVE_DECL_MCAST_UNBLOCK_SOURCE) && HAVE_DECL_MCAST_UNBLOCK_SOURCE)
   XLAT(MCAST_UNBLOCK_SOURCE),
+ #define XLAT_VAL_34 ((unsigned) (MCAST_UNBLOCK_SOURCE))
+ #define XLAT_STR_34 STRINGIFY(MCAST_UNBLOCK_SOURCE)
 #endif
 #if defined(MCAST_LEAVE_GROUP) || (defined(HAVE_DECL_MCAST_LEAVE_GROUP) && HAVE_DECL_MCAST_LEAVE_GROUP)
   XLAT(MCAST_LEAVE_GROUP),
+ #define XLAT_VAL_35 ((unsigned) (MCAST_LEAVE_GROUP))
+ #define XLAT_STR_35 STRINGIFY(MCAST_LEAVE_GROUP)
 #endif
 #if defined(MCAST_JOIN_SOURCE_GROUP) || (defined(HAVE_DECL_MCAST_JOIN_SOURCE_GROUP) && HAVE_DECL_MCAST_JOIN_SOURCE_GROUP)
   XLAT(MCAST_JOIN_SOURCE_GROUP),
+ #define XLAT_VAL_36 ((unsigned) (MCAST_JOIN_SOURCE_GROUP))
+ #define XLAT_STR_36 STRINGIFY(MCAST_JOIN_SOURCE_GROUP)
 #endif
 #if defined(MCAST_LEAVE_SOURCE_GROUP) || (defined(HAVE_DECL_MCAST_LEAVE_SOURCE_GROUP) && HAVE_DECL_MCAST_LEAVE_SOURCE_GROUP)
   XLAT(MCAST_LEAVE_SOURCE_GROUP),
+ #define XLAT_VAL_37 ((unsigned) (MCAST_LEAVE_SOURCE_GROUP))
+ #define XLAT_STR_37 STRINGIFY(MCAST_LEAVE_SOURCE_GROUP)
 #endif
 #if defined(MCAST_MSFILTER) || (defined(HAVE_DECL_MCAST_MSFILTER) && HAVE_DECL_MCAST_MSFILTER)
   XLAT(MCAST_MSFILTER),
+ #define XLAT_VAL_38 ((unsigned) (MCAST_MSFILTER))
+ #define XLAT_STR_38 STRINGIFY(MCAST_MSFILTER)
 #endif
 #if defined(IPV6_RECVPKTINFO) || (defined(HAVE_DECL_IPV6_RECVPKTINFO) && HAVE_DECL_IPV6_RECVPKTINFO)
   XLAT(IPV6_RECVPKTINFO),
+ #define XLAT_VAL_39 ((unsigned) (IPV6_RECVPKTINFO))
+ #define XLAT_STR_39 STRINGIFY(IPV6_RECVPKTINFO)
 #endif
 #if defined(IPV6_PKTINFO) || (defined(HAVE_DECL_IPV6_PKTINFO) && HAVE_DECL_IPV6_PKTINFO)
   XLAT(IPV6_PKTINFO),
+ #define XLAT_VAL_40 ((unsigned) (IPV6_PKTINFO))
+ #define XLAT_STR_40 STRINGIFY(IPV6_PKTINFO)
 #endif
 #if defined(IPV6_RECVHOPLIMIT) || (defined(HAVE_DECL_IPV6_RECVHOPLIMIT) && HAVE_DECL_IPV6_RECVHOPLIMIT)
   XLAT(IPV6_RECVHOPLIMIT),
+ #define XLAT_VAL_41 ((unsigned) (IPV6_RECVHOPLIMIT))
+ #define XLAT_STR_41 STRINGIFY(IPV6_RECVHOPLIMIT)
 #endif
 #if defined(IPV6_HOPLIMIT) || (defined(HAVE_DECL_IPV6_HOPLIMIT) && HAVE_DECL_IPV6_HOPLIMIT)
   XLAT(IPV6_HOPLIMIT),
+ #define XLAT_VAL_42 ((unsigned) (IPV6_HOPLIMIT))
+ #define XLAT_STR_42 STRINGIFY(IPV6_HOPLIMIT)
 #endif
 #if defined(IPV6_RECVHOPOPTS) || (defined(HAVE_DECL_IPV6_RECVHOPOPTS) && HAVE_DECL_IPV6_RECVHOPOPTS)
   XLAT(IPV6_RECVHOPOPTS),
+ #define XLAT_VAL_43 ((unsigned) (IPV6_RECVHOPOPTS))
+ #define XLAT_STR_43 STRINGIFY(IPV6_RECVHOPOPTS)
 #endif
 #if defined(IPV6_HOPOPTS) || (defined(HAVE_DECL_IPV6_HOPOPTS) && HAVE_DECL_IPV6_HOPOPTS)
   XLAT(IPV6_HOPOPTS),
+ #define XLAT_VAL_44 ((unsigned) (IPV6_HOPOPTS))
+ #define XLAT_STR_44 STRINGIFY(IPV6_HOPOPTS)
 #endif
 #if defined(IPV6_RTHDRDSTOPTS) || (defined(HAVE_DECL_IPV6_RTHDRDSTOPTS) && HAVE_DECL_IPV6_RTHDRDSTOPTS)
   XLAT(IPV6_RTHDRDSTOPTS),
+ #define XLAT_VAL_45 ((unsigned) (IPV6_RTHDRDSTOPTS))
+ #define XLAT_STR_45 STRINGIFY(IPV6_RTHDRDSTOPTS)
 #endif
 #if defined(IPV6_RECVRTHDR) || (defined(HAVE_DECL_IPV6_RECVRTHDR) && HAVE_DECL_IPV6_RECVRTHDR)
   XLAT(IPV6_RECVRTHDR),
+ #define XLAT_VAL_46 ((unsigned) (IPV6_RECVRTHDR))
+ #define XLAT_STR_46 STRINGIFY(IPV6_RECVRTHDR)
 #endif
 #if defined(IPV6_RTHDR) || (defined(HAVE_DECL_IPV6_RTHDR) && HAVE_DECL_IPV6_RTHDR)
   XLAT(IPV6_RTHDR),
+ #define XLAT_VAL_47 ((unsigned) (IPV6_RTHDR))
+ #define XLAT_STR_47 STRINGIFY(IPV6_RTHDR)
 #endif
 #if defined(IPV6_RECVDSTOPTS) || (defined(HAVE_DECL_IPV6_RECVDSTOPTS) && HAVE_DECL_IPV6_RECVDSTOPTS)
   XLAT(IPV6_RECVDSTOPTS),
+ #define XLAT_VAL_48 ((unsigned) (IPV6_RECVDSTOPTS))
+ #define XLAT_STR_48 STRINGIFY(IPV6_RECVDSTOPTS)
 #endif
 #if defined(IPV6_DSTOPTS) || (defined(HAVE_DECL_IPV6_DSTOPTS) && HAVE_DECL_IPV6_DSTOPTS)
   XLAT(IPV6_DSTOPTS),
+ #define XLAT_VAL_49 ((unsigned) (IPV6_DSTOPTS))
+ #define XLAT_STR_49 STRINGIFY(IPV6_DSTOPTS)
 #endif
 #if defined(IPV6_RECVPATHMTU) || (defined(HAVE_DECL_IPV6_RECVPATHMTU) && HAVE_DECL_IPV6_RECVPATHMTU)
   XLAT(IPV6_RECVPATHMTU),
+ #define XLAT_VAL_50 ((unsigned) (IPV6_RECVPATHMTU))
+ #define XLAT_STR_50 STRINGIFY(IPV6_RECVPATHMTU)
 #endif
 #if defined(IPV6_PATHMTU) || (defined(HAVE_DECL_IPV6_PATHMTU) && HAVE_DECL_IPV6_PATHMTU)
   XLAT(IPV6_PATHMTU),
+ #define XLAT_VAL_51 ((unsigned) (IPV6_PATHMTU))
+ #define XLAT_STR_51 STRINGIFY(IPV6_PATHMTU)
 #endif
 #if defined(IPV6_DONTFRAG) || (defined(HAVE_DECL_IPV6_DONTFRAG) && HAVE_DECL_IPV6_DONTFRAG)
   XLAT(IPV6_DONTFRAG),
+ #define XLAT_VAL_52 ((unsigned) (IPV6_DONTFRAG))
+ #define XLAT_STR_52 STRINGIFY(IPV6_DONTFRAG)
 #endif
 #if defined(IPV6_USE_MIN_MTU) || (defined(HAVE_DECL_IPV6_USE_MIN_MTU) && HAVE_DECL_IPV6_USE_MIN_MTU)
   XLAT(IPV6_USE_MIN_MTU),
+ #define XLAT_VAL_53 ((unsigned) (IPV6_USE_MIN_MTU))
+ #define XLAT_STR_53 STRINGIFY(IPV6_USE_MIN_MTU)
 #endif
 #if defined(IPV6_RECVTCLASS) || (defined(HAVE_DECL_IPV6_RECVTCLASS) && HAVE_DECL_IPV6_RECVTCLASS)
   XLAT(IPV6_RECVTCLASS),
+ #define XLAT_VAL_54 ((unsigned) (IPV6_RECVTCLASS))
+ #define XLAT_STR_54 STRINGIFY(IPV6_RECVTCLASS)
 #endif
 #if defined(IPV6_TCLASS) || (defined(HAVE_DECL_IPV6_TCLASS) && HAVE_DECL_IPV6_TCLASS)
   XLAT(IPV6_TCLASS),
+ #define XLAT_VAL_55 ((unsigned) (IPV6_TCLASS))
+ #define XLAT_STR_55 STRINGIFY(IPV6_TCLASS)
 #endif
 #if defined(IPV6_AUTOFLOWLABEL) || (defined(HAVE_DECL_IPV6_AUTOFLOWLABEL) && HAVE_DECL_IPV6_AUTOFLOWLABEL)
   XLAT(IPV6_AUTOFLOWLABEL),
+ #define XLAT_VAL_56 ((unsigned) (IPV6_AUTOFLOWLABEL))
+ #define XLAT_STR_56 STRINGIFY(IPV6_AUTOFLOWLABEL)
 #endif
 #if defined(IPV6_ADDR_PREFERENCES) || (defined(HAVE_DECL_IPV6_ADDR_PREFERENCES) && HAVE_DECL_IPV6_ADDR_PREFERENCES)
   XLAT(IPV6_ADDR_PREFERENCES),
+ #define XLAT_VAL_57 ((unsigned) (IPV6_ADDR_PREFERENCES))
+ #define XLAT_STR_57 STRINGIFY(IPV6_ADDR_PREFERENCES)
 #endif
 #if defined(IPV6_MINHOPCOUNT) || (defined(HAVE_DECL_IPV6_MINHOPCOUNT) && HAVE_DECL_IPV6_MINHOPCOUNT)
   XLAT(IPV6_MINHOPCOUNT),
+ #define XLAT_VAL_58 ((unsigned) (IPV6_MINHOPCOUNT))
+ #define XLAT_STR_58 STRINGIFY(IPV6_MINHOPCOUNT)
 #endif
 #if defined(IPV6_ORIGDSTADDR) || (defined(HAVE_DECL_IPV6_ORIGDSTADDR) && HAVE_DECL_IPV6_ORIGDSTADDR)
   XLAT(IPV6_ORIGDSTADDR),
+ #define XLAT_VAL_59 ((unsigned) (IPV6_ORIGDSTADDR))
+ #define XLAT_STR_59 STRINGIFY(IPV6_ORIGDSTADDR)
 #endif
 #if defined(IPV6_RECVORIGDSTADDR) || (defined(HAVE_DECL_IPV6_RECVORIGDSTADDR) && HAVE_DECL_IPV6_RECVORIGDSTADDR)
   XLAT(IPV6_RECVORIGDSTADDR),
+ #define XLAT_VAL_60 ((unsigned) (IPV6_RECVORIGDSTADDR))
+ #define XLAT_STR_60 STRINGIFY(IPV6_RECVORIGDSTADDR)
 #endif
 #if defined(IPV6_TRANSPARENT) || (defined(HAVE_DECL_IPV6_TRANSPARENT) && HAVE_DECL_IPV6_TRANSPARENT)
   XLAT(IPV6_TRANSPARENT),
+ #define XLAT_VAL_61 ((unsigned) (IPV6_TRANSPARENT))
+ #define XLAT_STR_61 STRINGIFY(IPV6_TRANSPARENT)
 #endif
 #if defined(IPV6_UNICAST_IF) || (defined(HAVE_DECL_IPV6_UNICAST_IF) && HAVE_DECL_IPV6_UNICAST_IF)
   XLAT(IPV6_UNICAST_IF),
+ #define XLAT_VAL_62 ((unsigned) (IPV6_UNICAST_IF))
+ #define XLAT_STR_62 STRINGIFY(IPV6_UNICAST_IF)
 #endif
 #if defined(IPV6_RECVFRAGSIZE) || (defined(HAVE_DECL_IPV6_RECVFRAGSIZE) && HAVE_DECL_IPV6_RECVFRAGSIZE)
   XLAT(IPV6_RECVFRAGSIZE),
+ #define XLAT_VAL_63 ((unsigned) (IPV6_RECVFRAGSIZE))
+ #define XLAT_STR_63 STRINGIFY(IPV6_RECVFRAGSIZE)
 #endif
 #if defined(IPV6_FREEBIND) || (defined(HAVE_DECL_IPV6_FREEBIND) && HAVE_DECL_IPV6_FREEBIND)
   XLAT(IPV6_FREEBIND),
+ #define XLAT_VAL_64 ((unsigned) (IPV6_FREEBIND))
+ #define XLAT_STR_64 STRINGIFY(IPV6_FREEBIND)
 #endif
- XLAT_END
 };
+static
+const struct xlat sock_ipv6_options[1] = { {
+ .data = sock_ipv6_options_xdata,
+ .size = ARRAY_SIZE(sock_ipv6_options_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+#  ifdef XLAT_VAL_30
+  | XLAT_VAL_30
+#  endif
+#  ifdef XLAT_VAL_31
+  | XLAT_VAL_31
+#  endif
+#  ifdef XLAT_VAL_32
+  | XLAT_VAL_32
+#  endif
+#  ifdef XLAT_VAL_33
+  | XLAT_VAL_33
+#  endif
+#  ifdef XLAT_VAL_34
+  | XLAT_VAL_34
+#  endif
+#  ifdef XLAT_VAL_35
+  | XLAT_VAL_35
+#  endif
+#  ifdef XLAT_VAL_36
+  | XLAT_VAL_36
+#  endif
+#  ifdef XLAT_VAL_37
+  | XLAT_VAL_37
+#  endif
+#  ifdef XLAT_VAL_38
+  | XLAT_VAL_38
+#  endif
+#  ifdef XLAT_VAL_39
+  | XLAT_VAL_39
+#  endif
+#  ifdef XLAT_VAL_40
+  | XLAT_VAL_40
+#  endif
+#  ifdef XLAT_VAL_41
+  | XLAT_VAL_41
+#  endif
+#  ifdef XLAT_VAL_42
+  | XLAT_VAL_42
+#  endif
+#  ifdef XLAT_VAL_43
+  | XLAT_VAL_43
+#  endif
+#  ifdef XLAT_VAL_44
+  | XLAT_VAL_44
+#  endif
+#  ifdef XLAT_VAL_45
+  | XLAT_VAL_45
+#  endif
+#  ifdef XLAT_VAL_46
+  | XLAT_VAL_46
+#  endif
+#  ifdef XLAT_VAL_47
+  | XLAT_VAL_47
+#  endif
+#  ifdef XLAT_VAL_48
+  | XLAT_VAL_48
+#  endif
+#  ifdef XLAT_VAL_49
+  | XLAT_VAL_49
+#  endif
+#  ifdef XLAT_VAL_50
+  | XLAT_VAL_50
+#  endif
+#  ifdef XLAT_VAL_51
+  | XLAT_VAL_51
+#  endif
+#  ifdef XLAT_VAL_52
+  | XLAT_VAL_52
+#  endif
+#  ifdef XLAT_VAL_53
+  | XLAT_VAL_53
+#  endif
+#  ifdef XLAT_VAL_54
+  | XLAT_VAL_54
+#  endif
+#  ifdef XLAT_VAL_55
+  | XLAT_VAL_55
+#  endif
+#  ifdef XLAT_VAL_56
+  | XLAT_VAL_56
+#  endif
+#  ifdef XLAT_VAL_57
+  | XLAT_VAL_57
+#  endif
+#  ifdef XLAT_VAL_58
+  | XLAT_VAL_58
+#  endif
+#  ifdef XLAT_VAL_59
+  | XLAT_VAL_59
+#  endif
+#  ifdef XLAT_VAL_60
+  | XLAT_VAL_60
+#  endif
+#  ifdef XLAT_VAL_61
+  | XLAT_VAL_61
+#  endif
+#  ifdef XLAT_VAL_62
+  | XLAT_VAL_62
+#  endif
+#  ifdef XLAT_VAL_63
+  | XLAT_VAL_63
+#  endif
+#  ifdef XLAT_VAL_64
+  | XLAT_VAL_64
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+#  ifdef XLAT_STR_30
+  + sizeof(XLAT_STR_30)
+#  endif
+#  ifdef XLAT_STR_31
+  + sizeof(XLAT_STR_31)
+#  endif
+#  ifdef XLAT_STR_32
+  + sizeof(XLAT_STR_32)
+#  endif
+#  ifdef XLAT_STR_33
+  + sizeof(XLAT_STR_33)
+#  endif
+#  ifdef XLAT_STR_34
+  + sizeof(XLAT_STR_34)
+#  endif
+#  ifdef XLAT_STR_35
+  + sizeof(XLAT_STR_35)
+#  endif
+#  ifdef XLAT_STR_36
+  + sizeof(XLAT_STR_36)
+#  endif
+#  ifdef XLAT_STR_37
+  + sizeof(XLAT_STR_37)
+#  endif
+#  ifdef XLAT_STR_38
+  + sizeof(XLAT_STR_38)
+#  endif
+#  ifdef XLAT_STR_39
+  + sizeof(XLAT_STR_39)
+#  endif
+#  ifdef XLAT_STR_40
+  + sizeof(XLAT_STR_40)
+#  endif
+#  ifdef XLAT_STR_41
+  + sizeof(XLAT_STR_41)
+#  endif
+#  ifdef XLAT_STR_42
+  + sizeof(XLAT_STR_42)
+#  endif
+#  ifdef XLAT_STR_43
+  + sizeof(XLAT_STR_43)
+#  endif
+#  ifdef XLAT_STR_44
+  + sizeof(XLAT_STR_44)
+#  endif
+#  ifdef XLAT_STR_45
+  + sizeof(XLAT_STR_45)
+#  endif
+#  ifdef XLAT_STR_46
+  + sizeof(XLAT_STR_46)
+#  endif
+#  ifdef XLAT_STR_47
+  + sizeof(XLAT_STR_47)
+#  endif
+#  ifdef XLAT_STR_48
+  + sizeof(XLAT_STR_48)
+#  endif
+#  ifdef XLAT_STR_49
+  + sizeof(XLAT_STR_49)
+#  endif
+#  ifdef XLAT_STR_50
+  + sizeof(XLAT_STR_50)
+#  endif
+#  ifdef XLAT_STR_51
+  + sizeof(XLAT_STR_51)
+#  endif
+#  ifdef XLAT_STR_52
+  + sizeof(XLAT_STR_52)
+#  endif
+#  ifdef XLAT_STR_53
+  + sizeof(XLAT_STR_53)
+#  endif
+#  ifdef XLAT_STR_54
+  + sizeof(XLAT_STR_54)
+#  endif
+#  ifdef XLAT_STR_55
+  + sizeof(XLAT_STR_55)
+#  endif
+#  ifdef XLAT_STR_56
+  + sizeof(XLAT_STR_56)
+#  endif
+#  ifdef XLAT_STR_57
+  + sizeof(XLAT_STR_57)
+#  endif
+#  ifdef XLAT_STR_58
+  + sizeof(XLAT_STR_58)
+#  endif
+#  ifdef XLAT_STR_59
+  + sizeof(XLAT_STR_59)
+#  endif
+#  ifdef XLAT_STR_60
+  + sizeof(XLAT_STR_60)
+#  endif
+#  ifdef XLAT_STR_61
+  + sizeof(XLAT_STR_61)
+#  endif
+#  ifdef XLAT_STR_62
+  + sizeof(XLAT_STR_62)
+#  endif
+#  ifdef XLAT_STR_63
+  + sizeof(XLAT_STR_63)
+#  endif
+#  ifdef XLAT_STR_64
+  + sizeof(XLAT_STR_64)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
+#  undef XLAT_STR_30
+#  undef XLAT_VAL_30
+#  undef XLAT_STR_31
+#  undef XLAT_VAL_31
+#  undef XLAT_STR_32
+#  undef XLAT_VAL_32
+#  undef XLAT_STR_33
+#  undef XLAT_VAL_33
+#  undef XLAT_STR_34
+#  undef XLAT_VAL_34
+#  undef XLAT_STR_35
+#  undef XLAT_VAL_35
+#  undef XLAT_STR_36
+#  undef XLAT_VAL_36
+#  undef XLAT_STR_37
+#  undef XLAT_VAL_37
+#  undef XLAT_STR_38
+#  undef XLAT_VAL_38
+#  undef XLAT_STR_39
+#  undef XLAT_VAL_39
+#  undef XLAT_STR_40
+#  undef XLAT_VAL_40
+#  undef XLAT_STR_41
+#  undef XLAT_VAL_41
+#  undef XLAT_STR_42
+#  undef XLAT_VAL_42
+#  undef XLAT_STR_43
+#  undef XLAT_VAL_43
+#  undef XLAT_STR_44
+#  undef XLAT_VAL_44
+#  undef XLAT_STR_45
+#  undef XLAT_VAL_45
+#  undef XLAT_STR_46
+#  undef XLAT_VAL_46
+#  undef XLAT_STR_47
+#  undef XLAT_VAL_47
+#  undef XLAT_STR_48
+#  undef XLAT_VAL_48
+#  undef XLAT_STR_49
+#  undef XLAT_VAL_49
+#  undef XLAT_STR_50
+#  undef XLAT_VAL_50
+#  undef XLAT_STR_51
+#  undef XLAT_VAL_51
+#  undef XLAT_STR_52
+#  undef XLAT_VAL_52
+#  undef XLAT_STR_53
+#  undef XLAT_VAL_53
+#  undef XLAT_STR_54
+#  undef XLAT_VAL_54
+#  undef XLAT_STR_55
+#  undef XLAT_VAL_55
+#  undef XLAT_STR_56
+#  undef XLAT_VAL_56
+#  undef XLAT_STR_57
+#  undef XLAT_VAL_57
+#  undef XLAT_STR_58
+#  undef XLAT_VAL_58
+#  undef XLAT_STR_59
+#  undef XLAT_VAL_59
+#  undef XLAT_STR_60
+#  undef XLAT_VAL_60
+#  undef XLAT_STR_61
+#  undef XLAT_VAL_61
+#  undef XLAT_STR_62
+#  undef XLAT_VAL_62
+#  undef XLAT_STR_63
+#  undef XLAT_VAL_63
+#  undef XLAT_STR_64
+#  undef XLAT_VAL_64
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 97fcbbfa5f79e4f2a454f90dc38d2b62087fbf19..39c811d1476b47595b280d2c9cfee6ce9ecc010f 100644 (file)
@@ -24,6 +24,7 @@ IPV6_JOIN_ANYCAST
 IPV6_LEAVE_ANYCAST
 IPV6_MULTICAST_ALL
 IPV6_ROUTER_ALERT_ISOLATE
+IPV6_RECVERR_RFC4884
 IPV6_FLOWLABEL_MGR
 IPV6_FLOWINFO_SEND
 IPV6_IPSEC_POLICY
index cee80f171a9dab2ceb29c4c4be92055f619dc484..166d010dc0cf5e138341a637a96387fffde29ccc 100644 (file)
 
 # else
 
-static
-const struct xlat sock_ipx_options[] = {
+static const struct xlat_data sock_ipx_options_xdata[] = {
 #if defined(IPX_TYPE) || (defined(HAVE_DECL_IPX_TYPE) && HAVE_DECL_IPX_TYPE)
   XLAT(IPX_TYPE),
+ #define XLAT_VAL_0 ((unsigned) (IPX_TYPE))
+ #define XLAT_STR_0 STRINGIFY(IPX_TYPE)
 #endif
- XLAT_END
 };
-
+static
+const struct xlat sock_ipx_options[1] = { {
+ .data = sock_ipx_options_xdata,
+ .size = ARRAY_SIZE(sock_ipx_options_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 5964390528a453f2437012d2d75440eccbe31b82..12f266b791c441fc34cfb7aae6d796e92fb17ce2 100644 (file)
@@ -89,22 +89,140 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat sock_irda_options[] = {
+static const struct xlat_data sock_irda_options_xdata[] = {
  [IRLMP_ENUMDEVICES] = XLAT(IRLMP_ENUMDEVICES),
+ #define XLAT_VAL_0 ((unsigned) (IRLMP_ENUMDEVICES))
+ #define XLAT_STR_0 STRINGIFY(IRLMP_ENUMDEVICES)
  [IRLMP_IAS_SET] = XLAT(IRLMP_IAS_SET),
+ #define XLAT_VAL_1 ((unsigned) (IRLMP_IAS_SET))
+ #define XLAT_STR_1 STRINGIFY(IRLMP_IAS_SET)
  [IRLMP_IAS_QUERY] = XLAT(IRLMP_IAS_QUERY),
+ #define XLAT_VAL_2 ((unsigned) (IRLMP_IAS_QUERY))
+ #define XLAT_STR_2 STRINGIFY(IRLMP_IAS_QUERY)
  [IRLMP_HINTS_SET] = XLAT(IRLMP_HINTS_SET),
+ #define XLAT_VAL_3 ((unsigned) (IRLMP_HINTS_SET))
+ #define XLAT_STR_3 STRINGIFY(IRLMP_HINTS_SET)
  [IRLMP_QOS_SET] = XLAT(IRLMP_QOS_SET),
+ #define XLAT_VAL_4 ((unsigned) (IRLMP_QOS_SET))
+ #define XLAT_STR_4 STRINGIFY(IRLMP_QOS_SET)
  [IRLMP_QOS_GET] = XLAT(IRLMP_QOS_GET),
+ #define XLAT_VAL_5 ((unsigned) (IRLMP_QOS_GET))
+ #define XLAT_STR_5 STRINGIFY(IRLMP_QOS_GET)
  [IRLMP_MAX_SDU_SIZE] = XLAT(IRLMP_MAX_SDU_SIZE),
+ #define XLAT_VAL_6 ((unsigned) (IRLMP_MAX_SDU_SIZE))
+ #define XLAT_STR_6 STRINGIFY(IRLMP_MAX_SDU_SIZE)
  [IRLMP_IAS_GET] = XLAT(IRLMP_IAS_GET),
+ #define XLAT_VAL_7 ((unsigned) (IRLMP_IAS_GET))
+ #define XLAT_STR_7 STRINGIFY(IRLMP_IAS_GET)
  [IRLMP_IAS_DEL] = XLAT(IRLMP_IAS_DEL),
+ #define XLAT_VAL_8 ((unsigned) (IRLMP_IAS_DEL))
+ #define XLAT_STR_8 STRINGIFY(IRLMP_IAS_DEL)
  [IRLMP_HINT_MASK_SET] = XLAT(IRLMP_HINT_MASK_SET),
+ #define XLAT_VAL_9 ((unsigned) (IRLMP_HINT_MASK_SET))
+ #define XLAT_STR_9 STRINGIFY(IRLMP_HINT_MASK_SET)
  [IRLMP_WAITDEVICE] = XLAT(IRLMP_WAITDEVICE),
- XLAT_END
+ #define XLAT_VAL_10 ((unsigned) (IRLMP_WAITDEVICE))
+ #define XLAT_STR_10 STRINGIFY(IRLMP_WAITDEVICE)
 };
+static
+const struct xlat sock_irda_options[1] = { {
+ .data = sock_irda_options_xdata,
+ .size = ARRAY_SIZE(sock_irda_options_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index ad4b1734b75f7d0deb70b35293902e3a7ec1b326..2ca698ad15c2163334c0427116c47e8f7ef12c84 100644 (file)
@@ -33,14 +33,52 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat sock_iucv_options[] = {
+static const struct xlat_data sock_iucv_options_xdata[] = {
  XLAT(SO_IPRMDATA_MSG),
+ #define XLAT_VAL_0 ((unsigned) (SO_IPRMDATA_MSG))
+ #define XLAT_STR_0 STRINGIFY(SO_IPRMDATA_MSG)
  XLAT(SO_MSGLIMIT),
+ #define XLAT_VAL_1 ((unsigned) (SO_MSGLIMIT))
+ #define XLAT_STR_1 STRINGIFY(SO_MSGLIMIT)
  XLAT(SO_MSGSIZE),
- XLAT_END
+ #define XLAT_VAL_2 ((unsigned) (SO_MSGSIZE))
+ #define XLAT_STR_2 STRINGIFY(SO_MSGSIZE)
 };
+static
+const struct xlat sock_iucv_options[1] = { {
+ .data = sock_iucv_options_xdata,
+ .size = ARRAY_SIZE(sock_iucv_options_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 43e4cc4835819888d6959741d15e2b38154ffaf7..b442a44338c12362b288e1179d2004924ce4f033 100644 (file)
@@ -19,12 +19,30 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat sock_kcm_options[] = {
+static const struct xlat_data sock_kcm_options_xdata[] = {
  XLAT(KCM_RECV_DISABLE),
- XLAT_END
+ #define XLAT_VAL_0 ((unsigned) (KCM_RECV_DISABLE))
+ #define XLAT_STR_0 STRINGIFY(KCM_RECV_DISABLE)
 };
-
+static
+const struct xlat sock_kcm_options[1] = { {
+ .data = sock_kcm_options_xdata,
+ .size = ARRAY_SIZE(sock_kcm_options_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 109ecdc58fa6cc27b46e5f774b44fbe78e95f87d..9e0b880bfc72e9ae49f7e0fad0fb5062abf6eba1 100644 (file)
@@ -82,21 +82,129 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat sock_llc_options[] = {
+static const struct xlat_data sock_llc_options_xdata[] = {
  [LLC_OPT_UNKNOWN] = XLAT(LLC_OPT_UNKNOWN),
+ #define XLAT_VAL_0 ((unsigned) (LLC_OPT_UNKNOWN))
+ #define XLAT_STR_0 STRINGIFY(LLC_OPT_UNKNOWN)
  [LLC_OPT_RETRY] = XLAT(LLC_OPT_RETRY),
+ #define XLAT_VAL_1 ((unsigned) (LLC_OPT_RETRY))
+ #define XLAT_STR_1 STRINGIFY(LLC_OPT_RETRY)
  [LLC_OPT_SIZE] = XLAT(LLC_OPT_SIZE),
+ #define XLAT_VAL_2 ((unsigned) (LLC_OPT_SIZE))
+ #define XLAT_STR_2 STRINGIFY(LLC_OPT_SIZE)
  [LLC_OPT_ACK_TMR_EXP] = XLAT(LLC_OPT_ACK_TMR_EXP),
+ #define XLAT_VAL_3 ((unsigned) (LLC_OPT_ACK_TMR_EXP))
+ #define XLAT_STR_3 STRINGIFY(LLC_OPT_ACK_TMR_EXP)
  [LLC_OPT_P_TMR_EXP] = XLAT(LLC_OPT_P_TMR_EXP),
+ #define XLAT_VAL_4 ((unsigned) (LLC_OPT_P_TMR_EXP))
+ #define XLAT_STR_4 STRINGIFY(LLC_OPT_P_TMR_EXP)
  [LLC_OPT_REJ_TMR_EXP] = XLAT(LLC_OPT_REJ_TMR_EXP),
+ #define XLAT_VAL_5 ((unsigned) (LLC_OPT_REJ_TMR_EXP))
+ #define XLAT_STR_5 STRINGIFY(LLC_OPT_REJ_TMR_EXP)
  [LLC_OPT_BUSY_TMR_EXP] = XLAT(LLC_OPT_BUSY_TMR_EXP),
+ #define XLAT_VAL_6 ((unsigned) (LLC_OPT_BUSY_TMR_EXP))
+ #define XLAT_STR_6 STRINGIFY(LLC_OPT_BUSY_TMR_EXP)
  [LLC_OPT_TX_WIN] = XLAT(LLC_OPT_TX_WIN),
+ #define XLAT_VAL_7 ((unsigned) (LLC_OPT_TX_WIN))
+ #define XLAT_STR_7 STRINGIFY(LLC_OPT_TX_WIN)
  [LLC_OPT_RX_WIN] = XLAT(LLC_OPT_RX_WIN),
+ #define XLAT_VAL_8 ((unsigned) (LLC_OPT_RX_WIN))
+ #define XLAT_STR_8 STRINGIFY(LLC_OPT_RX_WIN)
  [LLC_OPT_PKTINFO] = XLAT(LLC_OPT_PKTINFO),
- XLAT_END
+ #define XLAT_VAL_9 ((unsigned) (LLC_OPT_PKTINFO))
+ #define XLAT_STR_9 STRINGIFY(LLC_OPT_PKTINFO)
 };
+static
+const struct xlat sock_llc_options[1] = { {
+ .data = sock_llc_options_xdata,
+ .size = ARRAY_SIZE(sock_llc_options_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index a85683368fc5b2dbc39f7bff51a3005f6c46ff4b..3deb8c9a958d0846b02cbc753d38e0b4f256f2d0 100644 (file)
@@ -96,23 +96,151 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat sock_netlink_options[] = {
- XLAT(NETLINK_ADD_MEMBERSHIP),
- XLAT(NETLINK_DROP_MEMBERSHIP),
- XLAT(NETLINK_PKTINFO),
- XLAT(NETLINK_BROADCAST_ERROR),
- XLAT(NETLINK_NO_ENOBUFS),
- XLAT(NETLINK_RX_RING),
- XLAT(NETLINK_TX_RING),
- XLAT(NETLINK_LISTEN_ALL_NSID),
- XLAT(NETLINK_LIST_MEMBERSHIPS),
- XLAT(NETLINK_CAP_ACK),
- XLAT(NETLINK_EXT_ACK),
- XLAT(NETLINK_DUMP_STRICT_CHK),
- XLAT_END
+static const struct xlat_data sock_netlink_options_xdata[] = {
+ [NETLINK_ADD_MEMBERSHIP] = XLAT(NETLINK_ADD_MEMBERSHIP),
+ #define XLAT_VAL_0 ((unsigned) (NETLINK_ADD_MEMBERSHIP))
+ #define XLAT_STR_0 STRINGIFY(NETLINK_ADD_MEMBERSHIP)
+ [NETLINK_DROP_MEMBERSHIP] = XLAT(NETLINK_DROP_MEMBERSHIP),
+ #define XLAT_VAL_1 ((unsigned) (NETLINK_DROP_MEMBERSHIP))
+ #define XLAT_STR_1 STRINGIFY(NETLINK_DROP_MEMBERSHIP)
+ [NETLINK_PKTINFO] = XLAT(NETLINK_PKTINFO),
+ #define XLAT_VAL_2 ((unsigned) (NETLINK_PKTINFO))
+ #define XLAT_STR_2 STRINGIFY(NETLINK_PKTINFO)
+ [NETLINK_BROADCAST_ERROR] = XLAT(NETLINK_BROADCAST_ERROR),
+ #define XLAT_VAL_3 ((unsigned) (NETLINK_BROADCAST_ERROR))
+ #define XLAT_STR_3 STRINGIFY(NETLINK_BROADCAST_ERROR)
+ [NETLINK_NO_ENOBUFS] = XLAT(NETLINK_NO_ENOBUFS),
+ #define XLAT_VAL_4 ((unsigned) (NETLINK_NO_ENOBUFS))
+ #define XLAT_STR_4 STRINGIFY(NETLINK_NO_ENOBUFS)
+ [NETLINK_RX_RING] = XLAT(NETLINK_RX_RING),
+ #define XLAT_VAL_5 ((unsigned) (NETLINK_RX_RING))
+ #define XLAT_STR_5 STRINGIFY(NETLINK_RX_RING)
+ [NETLINK_TX_RING] = XLAT(NETLINK_TX_RING),
+ #define XLAT_VAL_6 ((unsigned) (NETLINK_TX_RING))
+ #define XLAT_STR_6 STRINGIFY(NETLINK_TX_RING)
+ [NETLINK_LISTEN_ALL_NSID] = XLAT(NETLINK_LISTEN_ALL_NSID),
+ #define XLAT_VAL_7 ((unsigned) (NETLINK_LISTEN_ALL_NSID))
+ #define XLAT_STR_7 STRINGIFY(NETLINK_LISTEN_ALL_NSID)
+ [NETLINK_LIST_MEMBERSHIPS] = XLAT(NETLINK_LIST_MEMBERSHIPS),
+ #define XLAT_VAL_8 ((unsigned) (NETLINK_LIST_MEMBERSHIPS))
+ #define XLAT_STR_8 STRINGIFY(NETLINK_LIST_MEMBERSHIPS)
+ [NETLINK_CAP_ACK] = XLAT(NETLINK_CAP_ACK),
+ #define XLAT_VAL_9 ((unsigned) (NETLINK_CAP_ACK))
+ #define XLAT_STR_9 STRINGIFY(NETLINK_CAP_ACK)
+ [NETLINK_EXT_ACK] = XLAT(NETLINK_EXT_ACK),
+ #define XLAT_VAL_10 ((unsigned) (NETLINK_EXT_ACK))
+ #define XLAT_STR_10 STRINGIFY(NETLINK_EXT_ACK)
+ [NETLINK_DUMP_STRICT_CHK] = XLAT(NETLINK_DUMP_STRICT_CHK),
+ #define XLAT_VAL_11 ((unsigned) (NETLINK_DUMP_STRICT_CHK))
+ #define XLAT_STR_11 STRINGIFY(NETLINK_DUMP_STRICT_CHK)
 };
+static
+const struct xlat sock_netlink_options[1] = { {
+ .data = sock_netlink_options_xdata,
+ .size = ARRAY_SIZE(sock_netlink_options_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 391157478364666ff9314a394b6471b8012fd4d4..e754ba590911d120f1cf550b8cd0100dfbf88f54 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 NETLINK_ADD_MEMBERSHIP         1
 NETLINK_DROP_MEMBERSHIP                2
 NETLINK_PKTINFO                        3
index 4d7bfb8f76b0dc9496215ce43c1175301fbc5115..e32931b4cd59541b84233ba14a7c3624edada6cd 100644 (file)
@@ -47,16 +47,74 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat sock_nfcllcp_options[] = {
+static const struct xlat_data sock_nfcllcp_options_xdata[] = {
  [NFC_LLCP_RW] = XLAT(NFC_LLCP_RW),
+ #define XLAT_VAL_0 ((unsigned) (NFC_LLCP_RW))
+ #define XLAT_STR_0 STRINGIFY(NFC_LLCP_RW)
  [NFC_LLCP_MIUX] = XLAT(NFC_LLCP_MIUX),
+ #define XLAT_VAL_1 ((unsigned) (NFC_LLCP_MIUX))
+ #define XLAT_STR_1 STRINGIFY(NFC_LLCP_MIUX)
  [NFC_LLCP_REMOTE_MIU] = XLAT(NFC_LLCP_REMOTE_MIU),
+ #define XLAT_VAL_2 ((unsigned) (NFC_LLCP_REMOTE_MIU))
+ #define XLAT_STR_2 STRINGIFY(NFC_LLCP_REMOTE_MIU)
  [NFC_LLCP_REMOTE_LTO] = XLAT(NFC_LLCP_REMOTE_LTO),
+ #define XLAT_VAL_3 ((unsigned) (NFC_LLCP_REMOTE_LTO))
+ #define XLAT_STR_3 STRINGIFY(NFC_LLCP_REMOTE_LTO)
  [NFC_LLCP_REMOTE_RW] = XLAT(NFC_LLCP_REMOTE_RW),
- XLAT_END
+ #define XLAT_VAL_4 ((unsigned) (NFC_LLCP_REMOTE_RW))
+ #define XLAT_STR_4 STRINGIFY(NFC_LLCP_REMOTE_RW)
 };
+static
+const struct xlat sock_nfcllcp_options[1] = { {
+ .data = sock_nfcllcp_options_xdata,
+ .size = ARRAY_SIZE(sock_nfcllcp_options_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 550969f703c7e3cc5a230a4fe6bb9a59fcbdbd25..1092a8db2dc91027a9beba6656a17d3aabdbc5f0 100644 (file)
@@ -1420,6 +1420,31 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #endif
 #endif
 #if defined __sparc__
+#if defined(SO_BINDTOIFINDEX) || (defined(HAVE_DECL_SO_BINDTOIFINDEX) && HAVE_DECL_SO_BINDTOIFINDEX)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((SO_BINDTOIFINDEX) == (65), "SO_BINDTOIFINDEX != 65");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define SO_BINDTOIFINDEX 65
+#endif
+#elif defined __hppa__
+#if defined(SO_BINDTOIFINDEX) || (defined(HAVE_DECL_SO_BINDTOIFINDEX) && HAVE_DECL_SO_BINDTOIFINDEX)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((SO_BINDTOIFINDEX) == (16439), "SO_BINDTOIFINDEX != 16439");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define SO_BINDTOIFINDEX 16439
+#endif
+#else
+#if defined(SO_BINDTOIFINDEX) || (defined(HAVE_DECL_SO_BINDTOIFINDEX) && HAVE_DECL_SO_BINDTOIFINDEX)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((SO_BINDTOIFINDEX) == (62), "SO_BINDTOIFINDEX != 62");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define SO_BINDTOIFINDEX 62
+#endif
+#endif
+#if defined __sparc__
 #if defined(SO_TIMESTAMP_NEW) || (defined(HAVE_DECL_SO_TIMESTAMP_NEW) && HAVE_DECL_SO_TIMESTAMP_NEW)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
 static_assert((SO_TIMESTAMP_NEW) == (70), "SO_TIMESTAMP_NEW != 70");
@@ -1494,6 +1519,81 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 # define SO_TIMESTAMPING_NEW 65
 #endif
 #endif
+#if defined __sparc__
+#if defined(SO_RCVTIMEO_NEW) || (defined(HAVE_DECL_SO_RCVTIMEO_NEW) && HAVE_DECL_SO_RCVTIMEO_NEW)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((SO_RCVTIMEO_NEW) == (68), "SO_RCVTIMEO_NEW != 68");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define SO_RCVTIMEO_NEW 68
+#endif
+#elif defined __hppa__
+#if defined(SO_RCVTIMEO_NEW) || (defined(HAVE_DECL_SO_RCVTIMEO_NEW) && HAVE_DECL_SO_RCVTIMEO_NEW)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((SO_RCVTIMEO_NEW) == (16448), "SO_RCVTIMEO_NEW != 16448");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define SO_RCVTIMEO_NEW 16448
+#endif
+#else
+#if defined(SO_RCVTIMEO_NEW) || (defined(HAVE_DECL_SO_RCVTIMEO_NEW) && HAVE_DECL_SO_RCVTIMEO_NEW)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((SO_RCVTIMEO_NEW) == (66), "SO_RCVTIMEO_NEW != 66");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define SO_RCVTIMEO_NEW 66
+#endif
+#endif
+#if defined __sparc__
+#if defined(SO_SNDTIMEO_NEW) || (defined(HAVE_DECL_SO_SNDTIMEO_NEW) && HAVE_DECL_SO_SNDTIMEO_NEW)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((SO_SNDTIMEO_NEW) == (69), "SO_SNDTIMEO_NEW != 69");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define SO_SNDTIMEO_NEW 69
+#endif
+#elif defined __hppa__
+#if defined(SO_SNDTIMEO_NEW) || (defined(HAVE_DECL_SO_SNDTIMEO_NEW) && HAVE_DECL_SO_SNDTIMEO_NEW)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((SO_SNDTIMEO_NEW) == (16449), "SO_SNDTIMEO_NEW != 16449");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define SO_SNDTIMEO_NEW 16449
+#endif
+#else
+#if defined(SO_SNDTIMEO_NEW) || (defined(HAVE_DECL_SO_SNDTIMEO_NEW) && HAVE_DECL_SO_SNDTIMEO_NEW)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((SO_SNDTIMEO_NEW) == (67), "SO_SNDTIMEO_NEW != 67");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define SO_SNDTIMEO_NEW 67
+#endif
+#endif
+#if defined __sparc__
+#if defined(SO_DETACH_REUSEPORT_BPF) || (defined(HAVE_DECL_SO_DETACH_REUSEPORT_BPF) && HAVE_DECL_SO_DETACH_REUSEPORT_BPF)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((SO_DETACH_REUSEPORT_BPF) == (71), "SO_DETACH_REUSEPORT_BPF != 71");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define SO_DETACH_REUSEPORT_BPF 71
+#endif
+#elif defined __hppa__
+#if defined(SO_DETACH_REUSEPORT_BPF) || (defined(HAVE_DECL_SO_DETACH_REUSEPORT_BPF) && HAVE_DECL_SO_DETACH_REUSEPORT_BPF)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((SO_DETACH_REUSEPORT_BPF) == (16450), "SO_DETACH_REUSEPORT_BPF != 16450");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define SO_DETACH_REUSEPORT_BPF 16450
+#endif
+#else
+#if defined(SO_DETACH_REUSEPORT_BPF) || (defined(HAVE_DECL_SO_DETACH_REUSEPORT_BPF) && HAVE_DECL_SO_DETACH_REUSEPORT_BPF)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((SO_DETACH_REUSEPORT_BPF) == (68), "SO_DETACH_REUSEPORT_BPF != 68");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define SO_DETACH_REUSEPORT_BPF 68
+#endif
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
@@ -1503,488 +1603,2442 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat sock_options[] = {
+static const struct xlat_data sock_options_xdata[] = {
 
 
  XLAT(SO_DEBUG),
+ #define XLAT_VAL_0 ((unsigned) (SO_DEBUG))
+ #define XLAT_STR_0 STRINGIFY(SO_DEBUG)
 
 #if defined __alpha__ || defined __hppa__ || defined __mips__ || defined __sparc__
  XLAT(SO_REUSEADDR),
+ #define XLAT_VAL_1 ((unsigned) (SO_REUSEADDR))
+ #define XLAT_STR_1 STRINGIFY(SO_REUSEADDR)
 #else
  XLAT(SO_REUSEADDR),
+ #define XLAT_VAL_2 ((unsigned) (SO_REUSEADDR))
+ #define XLAT_STR_2 STRINGIFY(SO_REUSEADDR)
 #endif
 
 #if defined __alpha__ || defined __hppa__ || defined __mips__ || defined __sparc__
  XLAT(SO_TYPE),
+ #define XLAT_VAL_3 ((unsigned) (SO_TYPE))
+ #define XLAT_STR_3 STRINGIFY(SO_TYPE)
 #else
  XLAT(SO_TYPE),
+ #define XLAT_VAL_4 ((unsigned) (SO_TYPE))
+ #define XLAT_STR_4 STRINGIFY(SO_TYPE)
 #endif
 
 #if defined __alpha__ || defined __hppa__ || defined __mips__ || defined __sparc__
  XLAT(SO_ERROR),
+ #define XLAT_VAL_5 ((unsigned) (SO_ERROR))
+ #define XLAT_STR_5 STRINGIFY(SO_ERROR)
 #else
  XLAT(SO_ERROR),
+ #define XLAT_VAL_6 ((unsigned) (SO_ERROR))
+ #define XLAT_STR_6 STRINGIFY(SO_ERROR)
 #endif
 
 #if defined __alpha__ || defined __hppa__ || defined __mips__ || defined __sparc__
  XLAT(SO_DONTROUTE),
+ #define XLAT_VAL_7 ((unsigned) (SO_DONTROUTE))
+ #define XLAT_STR_7 STRINGIFY(SO_DONTROUTE)
 #else
  XLAT(SO_DONTROUTE),
+ #define XLAT_VAL_8 ((unsigned) (SO_DONTROUTE))
+ #define XLAT_STR_8 STRINGIFY(SO_DONTROUTE)
 #endif
 
 #if defined __alpha__ || defined __hppa__ || defined __mips__ || defined __sparc__
  XLAT(SO_BROADCAST),
+ #define XLAT_VAL_9 ((unsigned) (SO_BROADCAST))
+ #define XLAT_STR_9 STRINGIFY(SO_BROADCAST)
 #else
  XLAT(SO_BROADCAST),
+ #define XLAT_VAL_10 ((unsigned) (SO_BROADCAST))
+ #define XLAT_STR_10 STRINGIFY(SO_BROADCAST)
 #endif
 
 #if defined __alpha__ || defined __hppa__ || defined __mips__ || defined __sparc__
  XLAT(SO_SNDBUF),
+ #define XLAT_VAL_11 ((unsigned) (SO_SNDBUF))
+ #define XLAT_STR_11 STRINGIFY(SO_SNDBUF)
 #else
  XLAT(SO_SNDBUF),
+ #define XLAT_VAL_12 ((unsigned) (SO_SNDBUF))
+ #define XLAT_STR_12 STRINGIFY(SO_SNDBUF)
 #endif
 
 #if defined __alpha__ || defined __hppa__ || defined __mips__ || defined __sparc__
  XLAT(SO_RCVBUF),
+ #define XLAT_VAL_13 ((unsigned) (SO_RCVBUF))
+ #define XLAT_STR_13 STRINGIFY(SO_RCVBUF)
 #else
  XLAT(SO_RCVBUF),
+ #define XLAT_VAL_14 ((unsigned) (SO_RCVBUF))
+ #define XLAT_STR_14 STRINGIFY(SO_RCVBUF)
 #endif
 
 #if defined __alpha__ || defined __hppa__ || defined __mips__ || defined __sparc__
  XLAT(SO_KEEPALIVE),
+ #define XLAT_VAL_15 ((unsigned) (SO_KEEPALIVE))
+ #define XLAT_STR_15 STRINGIFY(SO_KEEPALIVE)
 #else
  XLAT(SO_KEEPALIVE),
+ #define XLAT_VAL_16 ((unsigned) (SO_KEEPALIVE))
+ #define XLAT_STR_16 STRINGIFY(SO_KEEPALIVE)
 #endif
 
 #if defined __alpha__ || defined __hppa__ || defined __mips__ || defined __sparc__
  XLAT(SO_OOBINLINE),
+ #define XLAT_VAL_17 ((unsigned) (SO_OOBINLINE))
+ #define XLAT_STR_17 STRINGIFY(SO_OOBINLINE)
 #else
  XLAT(SO_OOBINLINE),
+ #define XLAT_VAL_18 ((unsigned) (SO_OOBINLINE))
+ #define XLAT_STR_18 STRINGIFY(SO_OOBINLINE)
 #endif
 
 #if defined __hppa__
  XLAT(SO_NO_CHECK),
+ #define XLAT_VAL_19 ((unsigned) (SO_NO_CHECK))
+ #define XLAT_STR_19 STRINGIFY(SO_NO_CHECK)
 #else
  XLAT(SO_NO_CHECK),
+ #define XLAT_VAL_20 ((unsigned) (SO_NO_CHECK))
+ #define XLAT_STR_20 STRINGIFY(SO_NO_CHECK)
 #endif
 
 #if defined __hppa__
  XLAT(SO_PRIORITY),
+ #define XLAT_VAL_21 ((unsigned) (SO_PRIORITY))
+ #define XLAT_STR_21 STRINGIFY(SO_PRIORITY)
 #else
  XLAT(SO_PRIORITY),
+ #define XLAT_VAL_22 ((unsigned) (SO_PRIORITY))
+ #define XLAT_STR_22 STRINGIFY(SO_PRIORITY)
 #endif
 
 #if defined __alpha__ || defined __hppa__ || defined __mips__ || defined __sparc__
  XLAT(SO_LINGER),
+ #define XLAT_VAL_23 ((unsigned) (SO_LINGER))
+ #define XLAT_STR_23 STRINGIFY(SO_LINGER)
 #else
  XLAT(SO_LINGER),
+ #define XLAT_VAL_24 ((unsigned) (SO_LINGER))
+ #define XLAT_STR_24 STRINGIFY(SO_LINGER)
 #endif
 
 #if defined __sparc__
  XLAT(SO_BSDCOMPAT),
+ #define XLAT_VAL_25 ((unsigned) (SO_BSDCOMPAT))
+ #define XLAT_STR_25 STRINGIFY(SO_BSDCOMPAT)
 #elif defined __hppa__
  XLAT(SO_BSDCOMPAT),
+ #define XLAT_VAL_26 ((unsigned) (SO_BSDCOMPAT))
+ #define XLAT_STR_26 STRINGIFY(SO_BSDCOMPAT)
 #else
  XLAT(SO_BSDCOMPAT),
+ #define XLAT_VAL_27 ((unsigned) (SO_BSDCOMPAT))
+ #define XLAT_STR_27 STRINGIFY(SO_BSDCOMPAT)
 #endif
 
 #if defined __alpha__ || defined __hppa__ || defined __mips__ || defined __sparc__
  XLAT(SO_REUSEPORT),
+ #define XLAT_VAL_28 ((unsigned) (SO_REUSEPORT))
+ #define XLAT_STR_28 STRINGIFY(SO_REUSEPORT)
 #else
  XLAT(SO_REUSEPORT),
+ #define XLAT_VAL_29 ((unsigned) (SO_REUSEPORT))
+ #define XLAT_STR_29 STRINGIFY(SO_REUSEPORT)
 #endif
 
 #if defined __sparc__
  XLAT(SO_PASSCRED),
+ #define XLAT_VAL_30 ((unsigned) (SO_PASSCRED))
+ #define XLAT_STR_30 STRINGIFY(SO_PASSCRED)
 #elif defined __alpha__ || defined __mips__
  XLAT(SO_PASSCRED),
+ #define XLAT_VAL_31 ((unsigned) (SO_PASSCRED))
+ #define XLAT_STR_31 STRINGIFY(SO_PASSCRED)
 #elif defined __powerpc__
  XLAT(SO_PASSCRED),
+ #define XLAT_VAL_32 ((unsigned) (SO_PASSCRED))
+ #define XLAT_STR_32 STRINGIFY(SO_PASSCRED)
 #elif defined __hppa__
  XLAT(SO_PASSCRED),
+ #define XLAT_VAL_33 ((unsigned) (SO_PASSCRED))
+ #define XLAT_STR_33 STRINGIFY(SO_PASSCRED)
 #else
  XLAT(SO_PASSCRED),
+ #define XLAT_VAL_34 ((unsigned) (SO_PASSCRED))
+ #define XLAT_STR_34 STRINGIFY(SO_PASSCRED)
 #endif
 
 #if defined __alpha__ || defined __mips__
  XLAT(SO_PEERCRED),
+ #define XLAT_VAL_35 ((unsigned) (SO_PEERCRED))
+ #define XLAT_STR_35 STRINGIFY(SO_PEERCRED)
 #elif defined __powerpc__
  XLAT(SO_PEERCRED),
+ #define XLAT_VAL_36 ((unsigned) (SO_PEERCRED))
+ #define XLAT_STR_36 STRINGIFY(SO_PEERCRED)
 #elif defined __sparc__
  XLAT(SO_PEERCRED),
+ #define XLAT_VAL_37 ((unsigned) (SO_PEERCRED))
+ #define XLAT_STR_37 STRINGIFY(SO_PEERCRED)
 #elif defined __hppa__
  XLAT(SO_PEERCRED),
+ #define XLAT_VAL_38 ((unsigned) (SO_PEERCRED))
+ #define XLAT_STR_38 STRINGIFY(SO_PEERCRED)
 #else
  XLAT(SO_PEERCRED),
+ #define XLAT_VAL_39 ((unsigned) (SO_PEERCRED))
+ #define XLAT_STR_39 STRINGIFY(SO_PEERCRED)
 #endif
 
 #if defined __powerpc__
  XLAT(SO_RCVLOWAT),
+ #define XLAT_VAL_40 ((unsigned) (SO_RCVLOWAT))
+ #define XLAT_STR_40 STRINGIFY(SO_RCVLOWAT)
 #elif defined __sparc__
  XLAT(SO_RCVLOWAT),
+ #define XLAT_VAL_41 ((unsigned) (SO_RCVLOWAT))
+ #define XLAT_STR_41 STRINGIFY(SO_RCVLOWAT)
 #elif defined __hppa__ || defined __mips__
  XLAT(SO_RCVLOWAT),
+ #define XLAT_VAL_42 ((unsigned) (SO_RCVLOWAT))
+ #define XLAT_STR_42 STRINGIFY(SO_RCVLOWAT)
 #elif defined __alpha__
  XLAT(SO_RCVLOWAT),
+ #define XLAT_VAL_43 ((unsigned) (SO_RCVLOWAT))
+ #define XLAT_STR_43 STRINGIFY(SO_RCVLOWAT)
 #else
  XLAT(SO_RCVLOWAT),
+ #define XLAT_VAL_44 ((unsigned) (SO_RCVLOWAT))
+ #define XLAT_STR_44 STRINGIFY(SO_RCVLOWAT)
 #endif
 
 #if defined __powerpc__
  XLAT(SO_SNDLOWAT),
+ #define XLAT_VAL_45 ((unsigned) (SO_SNDLOWAT))
+ #define XLAT_STR_45 STRINGIFY(SO_SNDLOWAT)
 #elif defined __sparc__
  XLAT(SO_SNDLOWAT),
+ #define XLAT_VAL_46 ((unsigned) (SO_SNDLOWAT))
+ #define XLAT_STR_46 STRINGIFY(SO_SNDLOWAT)
 #elif defined __hppa__ || defined __mips__
  XLAT(SO_SNDLOWAT),
+ #define XLAT_VAL_47 ((unsigned) (SO_SNDLOWAT))
+ #define XLAT_STR_47 STRINGIFY(SO_SNDLOWAT)
 #elif defined __alpha__
  XLAT(SO_SNDLOWAT),
+ #define XLAT_VAL_48 ((unsigned) (SO_SNDLOWAT))
+ #define XLAT_STR_48 STRINGIFY(SO_SNDLOWAT)
 #else
  XLAT(SO_SNDLOWAT),
+ #define XLAT_VAL_49 ((unsigned) (SO_SNDLOWAT))
+ #define XLAT_STR_49 STRINGIFY(SO_SNDLOWAT)
 #endif
 
 #if defined __powerpc__
  XLAT(SO_RCVTIMEO_OLD),
+ #define XLAT_VAL_50 ((unsigned) (SO_RCVTIMEO_OLD))
+ #define XLAT_STR_50 STRINGIFY(SO_RCVTIMEO_OLD)
 #elif defined __hppa__ || defined __mips__
  XLAT(SO_RCVTIMEO_OLD),
+ #define XLAT_VAL_51 ((unsigned) (SO_RCVTIMEO_OLD))
+ #define XLAT_STR_51 STRINGIFY(SO_RCVTIMEO_OLD)
 #elif defined __alpha__
  XLAT(SO_RCVTIMEO_OLD),
+ #define XLAT_VAL_52 ((unsigned) (SO_RCVTIMEO_OLD))
+ #define XLAT_STR_52 STRINGIFY(SO_RCVTIMEO_OLD)
 #elif defined __sparc__
  XLAT(SO_RCVTIMEO_OLD),
+ #define XLAT_VAL_53 ((unsigned) (SO_RCVTIMEO_OLD))
+ #define XLAT_STR_53 STRINGIFY(SO_RCVTIMEO_OLD)
 #else
  XLAT(SO_RCVTIMEO_OLD),
+ #define XLAT_VAL_54 ((unsigned) (SO_RCVTIMEO_OLD))
+ #define XLAT_STR_54 STRINGIFY(SO_RCVTIMEO_OLD)
 #endif
 
 #if defined __powerpc__
  XLAT(SO_SNDTIMEO_OLD),
+ #define XLAT_VAL_55 ((unsigned) (SO_SNDTIMEO_OLD))
+ #define XLAT_STR_55 STRINGIFY(SO_SNDTIMEO_OLD)
 #elif defined __hppa__ || defined __mips__
  XLAT(SO_SNDTIMEO_OLD),
+ #define XLAT_VAL_56 ((unsigned) (SO_SNDTIMEO_OLD))
+ #define XLAT_STR_56 STRINGIFY(SO_SNDTIMEO_OLD)
 #elif defined __alpha__
  XLAT(SO_SNDTIMEO_OLD),
+ #define XLAT_VAL_57 ((unsigned) (SO_SNDTIMEO_OLD))
+ #define XLAT_STR_57 STRINGIFY(SO_SNDTIMEO_OLD)
 #elif defined __sparc__
  XLAT(SO_SNDTIMEO_OLD),
+ #define XLAT_VAL_58 ((unsigned) (SO_SNDTIMEO_OLD))
+ #define XLAT_STR_58 STRINGIFY(SO_SNDTIMEO_OLD)
 #else
  XLAT(SO_SNDTIMEO_OLD),
+ #define XLAT_VAL_59 ((unsigned) (SO_SNDTIMEO_OLD))
+ #define XLAT_STR_59 STRINGIFY(SO_SNDTIMEO_OLD)
 #endif
 
 #if defined __alpha__
  XLAT(SO_SECURITY_AUTHENTICATION),
+ #define XLAT_VAL_60 ((unsigned) (SO_SECURITY_AUTHENTICATION))
+ #define XLAT_STR_60 STRINGIFY(SO_SECURITY_AUTHENTICATION)
 #elif defined __hppa__
  XLAT(SO_SECURITY_AUTHENTICATION),
+ #define XLAT_VAL_61 ((unsigned) (SO_SECURITY_AUTHENTICATION))
+ #define XLAT_STR_61 STRINGIFY(SO_SECURITY_AUTHENTICATION)
 #elif defined __sparc__
  XLAT(SO_SECURITY_AUTHENTICATION),
+ #define XLAT_VAL_62 ((unsigned) (SO_SECURITY_AUTHENTICATION))
+ #define XLAT_STR_62 STRINGIFY(SO_SECURITY_AUTHENTICATION)
 #else
  XLAT(SO_SECURITY_AUTHENTICATION),
+ #define XLAT_VAL_63 ((unsigned) (SO_SECURITY_AUTHENTICATION))
+ #define XLAT_STR_63 STRINGIFY(SO_SECURITY_AUTHENTICATION)
 #endif
 
 #if defined __alpha__
  XLAT(SO_SECURITY_ENCRYPTION_TRANSPORT),
+ #define XLAT_VAL_64 ((unsigned) (SO_SECURITY_ENCRYPTION_TRANSPORT))
+ #define XLAT_STR_64 STRINGIFY(SO_SECURITY_ENCRYPTION_TRANSPORT)
 #elif defined __hppa__
  XLAT(SO_SECURITY_ENCRYPTION_TRANSPORT),
+ #define XLAT_VAL_65 ((unsigned) (SO_SECURITY_ENCRYPTION_TRANSPORT))
+ #define XLAT_STR_65 STRINGIFY(SO_SECURITY_ENCRYPTION_TRANSPORT)
 #elif defined __sparc__
  XLAT(SO_SECURITY_ENCRYPTION_TRANSPORT),
+ #define XLAT_VAL_66 ((unsigned) (SO_SECURITY_ENCRYPTION_TRANSPORT))
+ #define XLAT_STR_66 STRINGIFY(SO_SECURITY_ENCRYPTION_TRANSPORT)
 #else
  XLAT(SO_SECURITY_ENCRYPTION_TRANSPORT),
+ #define XLAT_VAL_67 ((unsigned) (SO_SECURITY_ENCRYPTION_TRANSPORT))
+ #define XLAT_STR_67 STRINGIFY(SO_SECURITY_ENCRYPTION_TRANSPORT)
 #endif
 
 #if defined __alpha__
  XLAT(SO_SECURITY_ENCRYPTION_NETWORK),
+ #define XLAT_VAL_68 ((unsigned) (SO_SECURITY_ENCRYPTION_NETWORK))
+ #define XLAT_STR_68 STRINGIFY(SO_SECURITY_ENCRYPTION_NETWORK)
 #elif defined __hppa__
  XLAT(SO_SECURITY_ENCRYPTION_NETWORK),
+ #define XLAT_VAL_69 ((unsigned) (SO_SECURITY_ENCRYPTION_NETWORK))
+ #define XLAT_STR_69 STRINGIFY(SO_SECURITY_ENCRYPTION_NETWORK)
 #elif defined __sparc__
  XLAT(SO_SECURITY_ENCRYPTION_NETWORK),
+ #define XLAT_VAL_70 ((unsigned) (SO_SECURITY_ENCRYPTION_NETWORK))
+ #define XLAT_STR_70 STRINGIFY(SO_SECURITY_ENCRYPTION_NETWORK)
 #else
  XLAT(SO_SECURITY_ENCRYPTION_NETWORK),
+ #define XLAT_VAL_71 ((unsigned) (SO_SECURITY_ENCRYPTION_NETWORK))
+ #define XLAT_STR_71 STRINGIFY(SO_SECURITY_ENCRYPTION_NETWORK)
 #endif
 
 #if defined __sparc__
  XLAT(SO_BINDTODEVICE),
+ #define XLAT_VAL_72 ((unsigned) (SO_BINDTODEVICE))
+ #define XLAT_STR_72 STRINGIFY(SO_BINDTODEVICE)
 #elif defined __hppa__
  XLAT(SO_BINDTODEVICE),
+ #define XLAT_VAL_73 ((unsigned) (SO_BINDTODEVICE))
+ #define XLAT_STR_73 STRINGIFY(SO_BINDTODEVICE)
 #else
  XLAT(SO_BINDTODEVICE),
+ #define XLAT_VAL_74 ((unsigned) (SO_BINDTODEVICE))
+ #define XLAT_STR_74 STRINGIFY(SO_BINDTODEVICE)
 #endif
 
+
+
 #if defined __hppa__
  XLAT(SO_DETACH_FILTER),
+ #define XLAT_VAL_75 ((unsigned) (SO_DETACH_FILTER))
+ #define XLAT_STR_75 STRINGIFY(SO_DETACH_FILTER)
 #else
  XLAT(SO_DETACH_FILTER),
+ #define XLAT_VAL_76 ((unsigned) (SO_DETACH_FILTER))
+ #define XLAT_STR_76 STRINGIFY(SO_DETACH_FILTER)
 #endif
 
 #if defined __hppa__
  XLAT(SO_PEERNAME),
+ #define XLAT_VAL_77 ((unsigned) (SO_PEERNAME))
+ #define XLAT_STR_77 STRINGIFY(SO_PEERNAME)
 #else
  XLAT(SO_PEERNAME),
+ #define XLAT_VAL_78 ((unsigned) (SO_PEERNAME))
+ #define XLAT_STR_78 STRINGIFY(SO_PEERNAME)
 #endif
 
 #if defined __hppa__
  XLAT(SO_TIMESTAMP_OLD),
+ #define XLAT_VAL_79 ((unsigned) (SO_TIMESTAMP_OLD))
+ #define XLAT_STR_79 STRINGIFY(SO_TIMESTAMP_OLD)
 #else
  XLAT(SO_TIMESTAMP_OLD),
+ #define XLAT_VAL_80 ((unsigned) (SO_TIMESTAMP_OLD))
+ #define XLAT_STR_80 STRINGIFY(SO_TIMESTAMP_OLD)
 #endif
 
 #if defined __mips__
  XLAT(SO_ACCEPTCONN),
+ #define XLAT_VAL_81 ((unsigned) (SO_ACCEPTCONN))
+ #define XLAT_STR_81 STRINGIFY(SO_ACCEPTCONN)
 #elif defined __alpha__
  XLAT(SO_ACCEPTCONN),
+ #define XLAT_VAL_82 ((unsigned) (SO_ACCEPTCONN))
+ #define XLAT_STR_82 STRINGIFY(SO_ACCEPTCONN)
 #elif defined __hppa__
  XLAT(SO_ACCEPTCONN),
+ #define XLAT_VAL_83 ((unsigned) (SO_ACCEPTCONN))
+ #define XLAT_STR_83 STRINGIFY(SO_ACCEPTCONN)
 #elif defined __sparc__
  XLAT(SO_ACCEPTCONN),
+ #define XLAT_VAL_84 ((unsigned) (SO_ACCEPTCONN))
+ #define XLAT_STR_84 STRINGIFY(SO_ACCEPTCONN)
 #else
  XLAT(SO_ACCEPTCONN),
+ #define XLAT_VAL_85 ((unsigned) (SO_ACCEPTCONN))
+ #define XLAT_STR_85 STRINGIFY(SO_ACCEPTCONN)
 #endif
 
 #if defined __alpha__ || defined __mips__ || defined __sparc__
  XLAT(SO_PEERSEC),
+ #define XLAT_VAL_86 ((unsigned) (SO_PEERSEC))
+ #define XLAT_STR_86 STRINGIFY(SO_PEERSEC)
 #elif defined __hppa__
  XLAT(SO_PEERSEC),
+ #define XLAT_VAL_87 ((unsigned) (SO_PEERSEC))
+ #define XLAT_STR_87 STRINGIFY(SO_PEERSEC)
 #else
  XLAT(SO_PEERSEC),
+ #define XLAT_VAL_88 ((unsigned) (SO_PEERSEC))
+ #define XLAT_STR_88 STRINGIFY(SO_PEERSEC)
 #endif
 
 #if defined __mips__
  XLAT(SO_SNDBUFFORCE),
+ #define XLAT_VAL_89 ((unsigned) (SO_SNDBUFFORCE))
+ #define XLAT_STR_89 STRINGIFY(SO_SNDBUFFORCE)
 #elif defined __alpha__ || defined __hppa__ || defined __sparc__
  XLAT(SO_SNDBUFFORCE),
+ #define XLAT_VAL_90 ((unsigned) (SO_SNDBUFFORCE))
+ #define XLAT_STR_90 STRINGIFY(SO_SNDBUFFORCE)
 #else
  XLAT(SO_SNDBUFFORCE),
+ #define XLAT_VAL_91 ((unsigned) (SO_SNDBUFFORCE))
+ #define XLAT_STR_91 STRINGIFY(SO_SNDBUFFORCE)
 #endif
 
 #if defined __alpha__ || defined __hppa__ || defined __sparc__
  XLAT(SO_RCVBUFFORCE),
+ #define XLAT_VAL_92 ((unsigned) (SO_RCVBUFFORCE))
+ #define XLAT_STR_92 STRINGIFY(SO_RCVBUFFORCE)
 #else
  XLAT(SO_RCVBUFFORCE),
+ #define XLAT_VAL_93 ((unsigned) (SO_RCVBUFFORCE))
+ #define XLAT_STR_93 STRINGIFY(SO_RCVBUFFORCE)
 #endif
 
 #if defined __sparc__
  XLAT(SO_PASSSEC),
+ #define XLAT_VAL_94 ((unsigned) (SO_PASSSEC))
+ #define XLAT_STR_94 STRINGIFY(SO_PASSSEC)
 #elif defined __hppa__
  XLAT(SO_PASSSEC),
+ #define XLAT_VAL_95 ((unsigned) (SO_PASSSEC))
+ #define XLAT_STR_95 STRINGIFY(SO_PASSSEC)
 #else
  XLAT(SO_PASSSEC),
+ #define XLAT_VAL_96 ((unsigned) (SO_PASSSEC))
+ #define XLAT_STR_96 STRINGIFY(SO_PASSSEC)
 #endif
 
 #if defined __sparc__
  XLAT(SO_TIMESTAMPNS_OLD),
+ #define XLAT_VAL_97 ((unsigned) (SO_TIMESTAMPNS_OLD))
+ #define XLAT_STR_97 STRINGIFY(SO_TIMESTAMPNS_OLD)
 #elif defined __hppa__
  XLAT(SO_TIMESTAMPNS_OLD),
+ #define XLAT_VAL_98 ((unsigned) (SO_TIMESTAMPNS_OLD))
+ #define XLAT_STR_98 STRINGIFY(SO_TIMESTAMPNS_OLD)
 #else
  XLAT(SO_TIMESTAMPNS_OLD),
+ #define XLAT_VAL_99 ((unsigned) (SO_TIMESTAMPNS_OLD))
+ #define XLAT_STR_99 STRINGIFY(SO_TIMESTAMPNS_OLD)
 #endif
 
 #if defined __sparc__
  XLAT(SO_MARK),
+ #define XLAT_VAL_100 ((unsigned) (SO_MARK))
+ #define XLAT_STR_100 STRINGIFY(SO_MARK)
 #elif defined __hppa__
  XLAT(SO_MARK),
+ #define XLAT_VAL_101 ((unsigned) (SO_MARK))
+ #define XLAT_STR_101 STRINGIFY(SO_MARK)
 #else
  XLAT(SO_MARK),
+ #define XLAT_VAL_102 ((unsigned) (SO_MARK))
+ #define XLAT_STR_102 STRINGIFY(SO_MARK)
 #endif
 
 #if defined __sparc__
  XLAT(SO_TIMESTAMPING_OLD),
+ #define XLAT_VAL_103 ((unsigned) (SO_TIMESTAMPING_OLD))
+ #define XLAT_STR_103 STRINGIFY(SO_TIMESTAMPING_OLD)
 #elif defined __hppa__
  XLAT(SO_TIMESTAMPING_OLD),
+ #define XLAT_VAL_104 ((unsigned) (SO_TIMESTAMPING_OLD))
+ #define XLAT_STR_104 STRINGIFY(SO_TIMESTAMPING_OLD)
 #else
  XLAT(SO_TIMESTAMPING_OLD),
+ #define XLAT_VAL_105 ((unsigned) (SO_TIMESTAMPING_OLD))
+ #define XLAT_STR_105 STRINGIFY(SO_TIMESTAMPING_OLD)
 #endif
 
 #if defined __alpha__ || defined __hppa__ || defined __mips__ || defined __sparc__
  XLAT(SO_PROTOCOL),
+ #define XLAT_VAL_106 ((unsigned) (SO_PROTOCOL))
+ #define XLAT_STR_106 STRINGIFY(SO_PROTOCOL)
 #else
  XLAT(SO_PROTOCOL),
+ #define XLAT_VAL_107 ((unsigned) (SO_PROTOCOL))
+ #define XLAT_STR_107 STRINGIFY(SO_PROTOCOL)
 #endif
 
 #if defined __alpha__ || defined __hppa__ || defined __mips__ || defined __sparc__
  XLAT(SO_DOMAIN),
+ #define XLAT_VAL_108 ((unsigned) (SO_DOMAIN))
+ #define XLAT_STR_108 STRINGIFY(SO_DOMAIN)
 #else
  XLAT(SO_DOMAIN),
+ #define XLAT_VAL_109 ((unsigned) (SO_DOMAIN))
+ #define XLAT_STR_109 STRINGIFY(SO_DOMAIN)
 #endif
 
 #if defined __sparc__
  XLAT(SO_RXQ_OVFL),
+ #define XLAT_VAL_110 ((unsigned) (SO_RXQ_OVFL))
+ #define XLAT_STR_110 STRINGIFY(SO_RXQ_OVFL)
 #elif defined __hppa__
  XLAT(SO_RXQ_OVFL),
+ #define XLAT_VAL_111 ((unsigned) (SO_RXQ_OVFL))
+ #define XLAT_STR_111 STRINGIFY(SO_RXQ_OVFL)
 #else
  XLAT(SO_RXQ_OVFL),
+ #define XLAT_VAL_112 ((unsigned) (SO_RXQ_OVFL))
+ #define XLAT_STR_112 STRINGIFY(SO_RXQ_OVFL)
 #endif
 
 #if defined __sparc__
  XLAT(SO_WIFI_STATUS),
+ #define XLAT_VAL_113 ((unsigned) (SO_WIFI_STATUS))
+ #define XLAT_STR_113 STRINGIFY(SO_WIFI_STATUS)
 #elif defined __hppa__
  XLAT(SO_WIFI_STATUS),
+ #define XLAT_VAL_114 ((unsigned) (SO_WIFI_STATUS))
+ #define XLAT_STR_114 STRINGIFY(SO_WIFI_STATUS)
 #else
  XLAT(SO_WIFI_STATUS),
+ #define XLAT_VAL_115 ((unsigned) (SO_WIFI_STATUS))
+ #define XLAT_STR_115 STRINGIFY(SO_WIFI_STATUS)
 #endif
 
 #if defined __sparc__
  XLAT(SO_PEEK_OFF),
+ #define XLAT_VAL_116 ((unsigned) (SO_PEEK_OFF))
+ #define XLAT_STR_116 STRINGIFY(SO_PEEK_OFF)
 #elif defined __hppa__
  XLAT(SO_PEEK_OFF),
+ #define XLAT_VAL_117 ((unsigned) (SO_PEEK_OFF))
+ #define XLAT_STR_117 STRINGIFY(SO_PEEK_OFF)
 #else
  XLAT(SO_PEEK_OFF),
+ #define XLAT_VAL_118 ((unsigned) (SO_PEEK_OFF))
+ #define XLAT_STR_118 STRINGIFY(SO_PEEK_OFF)
 #endif
 
 #if defined __sparc__
  XLAT(SO_NOFCS),
+ #define XLAT_VAL_119 ((unsigned) (SO_NOFCS))
+ #define XLAT_STR_119 STRINGIFY(SO_NOFCS)
 #elif defined __hppa__
  XLAT(SO_NOFCS),
+ #define XLAT_VAL_120 ((unsigned) (SO_NOFCS))
+ #define XLAT_STR_120 STRINGIFY(SO_NOFCS)
 #else
  XLAT(SO_NOFCS),
+ #define XLAT_VAL_121 ((unsigned) (SO_NOFCS))
+ #define XLAT_STR_121 STRINGIFY(SO_NOFCS)
 #endif
 
 #if defined __sparc__
  XLAT(SO_LOCK_FILTER),
+ #define XLAT_VAL_122 ((unsigned) (SO_LOCK_FILTER))
+ #define XLAT_STR_122 STRINGIFY(SO_LOCK_FILTER)
 #elif defined __hppa__
  XLAT(SO_LOCK_FILTER),
+ #define XLAT_VAL_123 ((unsigned) (SO_LOCK_FILTER))
+ #define XLAT_STR_123 STRINGIFY(SO_LOCK_FILTER)
 #else
  XLAT(SO_LOCK_FILTER),
+ #define XLAT_VAL_124 ((unsigned) (SO_LOCK_FILTER))
+ #define XLAT_STR_124 STRINGIFY(SO_LOCK_FILTER)
 #endif
 
 #if defined __sparc__
  XLAT(SO_SELECT_ERR_QUEUE),
+ #define XLAT_VAL_125 ((unsigned) (SO_SELECT_ERR_QUEUE))
+ #define XLAT_STR_125 STRINGIFY(SO_SELECT_ERR_QUEUE)
 #elif defined __hppa__
  XLAT(SO_SELECT_ERR_QUEUE),
+ #define XLAT_VAL_126 ((unsigned) (SO_SELECT_ERR_QUEUE))
+ #define XLAT_STR_126 STRINGIFY(SO_SELECT_ERR_QUEUE)
 #else
  XLAT(SO_SELECT_ERR_QUEUE),
+ #define XLAT_VAL_127 ((unsigned) (SO_SELECT_ERR_QUEUE))
+ #define XLAT_STR_127 STRINGIFY(SO_SELECT_ERR_QUEUE)
 #endif
 
 #if defined __sparc__
  XLAT(SO_BUSY_POLL),
+ #define XLAT_VAL_128 ((unsigned) (SO_BUSY_POLL))
+ #define XLAT_STR_128 STRINGIFY(SO_BUSY_POLL)
 #elif defined __hppa__
  XLAT(SO_BUSY_POLL),
+ #define XLAT_VAL_129 ((unsigned) (SO_BUSY_POLL))
+ #define XLAT_STR_129 STRINGIFY(SO_BUSY_POLL)
 #else
  XLAT(SO_BUSY_POLL),
+ #define XLAT_VAL_130 ((unsigned) (SO_BUSY_POLL))
+ #define XLAT_STR_130 STRINGIFY(SO_BUSY_POLL)
 #endif
 
 #if defined __sparc__
  XLAT(SO_MAX_PACING_RATE),
+ #define XLAT_VAL_131 ((unsigned) (SO_MAX_PACING_RATE))
+ #define XLAT_STR_131 STRINGIFY(SO_MAX_PACING_RATE)
 #elif defined __hppa__
  XLAT(SO_MAX_PACING_RATE),
+ #define XLAT_VAL_132 ((unsigned) (SO_MAX_PACING_RATE))
+ #define XLAT_STR_132 STRINGIFY(SO_MAX_PACING_RATE)
 #else
  XLAT(SO_MAX_PACING_RATE),
+ #define XLAT_VAL_133 ((unsigned) (SO_MAX_PACING_RATE))
+ #define XLAT_STR_133 STRINGIFY(SO_MAX_PACING_RATE)
 #endif
 
 #if defined __sparc__
  XLAT(SO_BPF_EXTENSIONS),
+ #define XLAT_VAL_134 ((unsigned) (SO_BPF_EXTENSIONS))
+ #define XLAT_STR_134 STRINGIFY(SO_BPF_EXTENSIONS)
 #elif defined __hppa__
  XLAT(SO_BPF_EXTENSIONS),
+ #define XLAT_VAL_135 ((unsigned) (SO_BPF_EXTENSIONS))
+ #define XLAT_STR_135 STRINGIFY(SO_BPF_EXTENSIONS)
 #else
  XLAT(SO_BPF_EXTENSIONS),
+ #define XLAT_VAL_136 ((unsigned) (SO_BPF_EXTENSIONS))
+ #define XLAT_STR_136 STRINGIFY(SO_BPF_EXTENSIONS)
 #endif
 
 #if defined __sparc__
  XLAT(SO_INCOMING_CPU),
+ #define XLAT_VAL_137 ((unsigned) (SO_INCOMING_CPU))
+ #define XLAT_STR_137 STRINGIFY(SO_INCOMING_CPU)
 #elif defined __hppa__
  XLAT(SO_INCOMING_CPU),
+ #define XLAT_VAL_138 ((unsigned) (SO_INCOMING_CPU))
+ #define XLAT_STR_138 STRINGIFY(SO_INCOMING_CPU)
 #else
  XLAT(SO_INCOMING_CPU),
+ #define XLAT_VAL_139 ((unsigned) (SO_INCOMING_CPU))
+ #define XLAT_STR_139 STRINGIFY(SO_INCOMING_CPU)
 #endif
 
 #if defined __sparc__
  XLAT(SO_ATTACH_BPF),
+ #define XLAT_VAL_140 ((unsigned) (SO_ATTACH_BPF))
+ #define XLAT_STR_140 STRINGIFY(SO_ATTACH_BPF)
 #elif defined __hppa__
  XLAT(SO_ATTACH_BPF),
+ #define XLAT_VAL_141 ((unsigned) (SO_ATTACH_BPF))
+ #define XLAT_STR_141 STRINGIFY(SO_ATTACH_BPF)
 #else
  XLAT(SO_ATTACH_BPF),
+ #define XLAT_VAL_142 ((unsigned) (SO_ATTACH_BPF))
+ #define XLAT_STR_142 STRINGIFY(SO_ATTACH_BPF)
 #endif
 
 #if defined __sparc__
  XLAT(SO_ATTACH_REUSEPORT_CBPF),
+ #define XLAT_VAL_143 ((unsigned) (SO_ATTACH_REUSEPORT_CBPF))
+ #define XLAT_STR_143 STRINGIFY(SO_ATTACH_REUSEPORT_CBPF)
 #elif defined __hppa__
  XLAT(SO_ATTACH_REUSEPORT_CBPF),
+ #define XLAT_VAL_144 ((unsigned) (SO_ATTACH_REUSEPORT_CBPF))
+ #define XLAT_STR_144 STRINGIFY(SO_ATTACH_REUSEPORT_CBPF)
 #else
  XLAT(SO_ATTACH_REUSEPORT_CBPF),
+ #define XLAT_VAL_145 ((unsigned) (SO_ATTACH_REUSEPORT_CBPF))
+ #define XLAT_STR_145 STRINGIFY(SO_ATTACH_REUSEPORT_CBPF)
 #endif
 
 #if defined __sparc__
  XLAT(SO_ATTACH_REUSEPORT_EBPF),
+ #define XLAT_VAL_146 ((unsigned) (SO_ATTACH_REUSEPORT_EBPF))
+ #define XLAT_STR_146 STRINGIFY(SO_ATTACH_REUSEPORT_EBPF)
 #elif defined __hppa__
  XLAT(SO_ATTACH_REUSEPORT_EBPF),
+ #define XLAT_VAL_147 ((unsigned) (SO_ATTACH_REUSEPORT_EBPF))
+ #define XLAT_STR_147 STRINGIFY(SO_ATTACH_REUSEPORT_EBPF)
 #else
  XLAT(SO_ATTACH_REUSEPORT_EBPF),
+ #define XLAT_VAL_148 ((unsigned) (SO_ATTACH_REUSEPORT_EBPF))
+ #define XLAT_STR_148 STRINGIFY(SO_ATTACH_REUSEPORT_EBPF)
 #endif
 
 #if defined __sparc__
  XLAT(SO_CNX_ADVICE),
+ #define XLAT_VAL_149 ((unsigned) (SO_CNX_ADVICE))
+ #define XLAT_STR_149 STRINGIFY(SO_CNX_ADVICE)
 #elif defined __hppa__
  XLAT(SO_CNX_ADVICE),
+ #define XLAT_VAL_150 ((unsigned) (SO_CNX_ADVICE))
+ #define XLAT_STR_150 STRINGIFY(SO_CNX_ADVICE)
 #else
  XLAT(SO_CNX_ADVICE),
+ #define XLAT_VAL_151 ((unsigned) (SO_CNX_ADVICE))
+ #define XLAT_STR_151 STRINGIFY(SO_CNX_ADVICE)
 #endif
 
 #if defined __sparc__
  XLAT(SO_MEMINFO),
+ #define XLAT_VAL_152 ((unsigned) (SO_MEMINFO))
+ #define XLAT_STR_152 STRINGIFY(SO_MEMINFO)
 #elif defined __hppa__
  XLAT(SO_MEMINFO),
+ #define XLAT_VAL_153 ((unsigned) (SO_MEMINFO))
+ #define XLAT_STR_153 STRINGIFY(SO_MEMINFO)
 #else
  XLAT(SO_MEMINFO),
+ #define XLAT_VAL_154 ((unsigned) (SO_MEMINFO))
+ #define XLAT_STR_154 STRINGIFY(SO_MEMINFO)
 #endif
 
 #if defined __sparc__
  XLAT(SO_INCOMING_NAPI_ID),
+ #define XLAT_VAL_155 ((unsigned) (SO_INCOMING_NAPI_ID))
+ #define XLAT_STR_155 STRINGIFY(SO_INCOMING_NAPI_ID)
 #elif defined __hppa__
  XLAT(SO_INCOMING_NAPI_ID),
+ #define XLAT_VAL_156 ((unsigned) (SO_INCOMING_NAPI_ID))
+ #define XLAT_STR_156 STRINGIFY(SO_INCOMING_NAPI_ID)
 #else
  XLAT(SO_INCOMING_NAPI_ID),
+ #define XLAT_VAL_157 ((unsigned) (SO_INCOMING_NAPI_ID))
+ #define XLAT_STR_157 STRINGIFY(SO_INCOMING_NAPI_ID)
 #endif
 
 #if defined __sparc__
  XLAT(SO_COOKIE),
+ #define XLAT_VAL_158 ((unsigned) (SO_COOKIE))
+ #define XLAT_STR_158 STRINGIFY(SO_COOKIE)
 #elif defined __hppa__
  XLAT(SO_COOKIE),
+ #define XLAT_VAL_159 ((unsigned) (SO_COOKIE))
+ #define XLAT_STR_159 STRINGIFY(SO_COOKIE)
 #else
  XLAT(SO_COOKIE),
+ #define XLAT_VAL_160 ((unsigned) (SO_COOKIE))
+ #define XLAT_STR_160 STRINGIFY(SO_COOKIE)
 #endif
 
 #if defined __sparc__
  XLAT(SO_PEERGROUPS),
+ #define XLAT_VAL_161 ((unsigned) (SO_PEERGROUPS))
+ #define XLAT_STR_161 STRINGIFY(SO_PEERGROUPS)
 #elif defined __hppa__
  XLAT(SO_PEERGROUPS),
+ #define XLAT_VAL_162 ((unsigned) (SO_PEERGROUPS))
+ #define XLAT_STR_162 STRINGIFY(SO_PEERGROUPS)
 #else
  XLAT(SO_PEERGROUPS),
+ #define XLAT_VAL_163 ((unsigned) (SO_PEERGROUPS))
+ #define XLAT_STR_163 STRINGIFY(SO_PEERGROUPS)
 #endif
 
 #if defined __sparc__
  XLAT(SO_ZEROCOPY),
+ #define XLAT_VAL_164 ((unsigned) (SO_ZEROCOPY))
+ #define XLAT_STR_164 STRINGIFY(SO_ZEROCOPY)
 #elif defined __hppa__
  XLAT(SO_ZEROCOPY),
+ #define XLAT_VAL_165 ((unsigned) (SO_ZEROCOPY))
+ #define XLAT_STR_165 STRINGIFY(SO_ZEROCOPY)
 #else
  XLAT(SO_ZEROCOPY),
+ #define XLAT_VAL_166 ((unsigned) (SO_ZEROCOPY))
+ #define XLAT_STR_166 STRINGIFY(SO_ZEROCOPY)
 #endif
 
 #if defined __sparc__
  XLAT(SO_TXTIME),
+ #define XLAT_VAL_167 ((unsigned) (SO_TXTIME))
+ #define XLAT_STR_167 STRINGIFY(SO_TXTIME)
 #elif defined __hppa__
  XLAT(SO_TXTIME),
+ #define XLAT_VAL_168 ((unsigned) (SO_TXTIME))
+ #define XLAT_STR_168 STRINGIFY(SO_TXTIME)
 #else
  XLAT(SO_TXTIME),
+ #define XLAT_VAL_169 ((unsigned) (SO_TXTIME))
+ #define XLAT_STR_169 STRINGIFY(SO_TXTIME)
+#endif
+
+#if defined __sparc__
+ XLAT(SO_BINDTOIFINDEX),
+ #define XLAT_VAL_170 ((unsigned) (SO_BINDTOIFINDEX))
+ #define XLAT_STR_170 STRINGIFY(SO_BINDTOIFINDEX)
+#elif defined __hppa__
+ XLAT(SO_BINDTOIFINDEX),
+ #define XLAT_VAL_171 ((unsigned) (SO_BINDTOIFINDEX))
+ #define XLAT_STR_171 STRINGIFY(SO_BINDTOIFINDEX)
+#else
+ XLAT(SO_BINDTOIFINDEX),
+ #define XLAT_VAL_172 ((unsigned) (SO_BINDTOIFINDEX))
+ #define XLAT_STR_172 STRINGIFY(SO_BINDTOIFINDEX)
 #endif
 
 #if defined __sparc__
  XLAT(SO_TIMESTAMP_NEW),
+ #define XLAT_VAL_173 ((unsigned) (SO_TIMESTAMP_NEW))
+ #define XLAT_STR_173 STRINGIFY(SO_TIMESTAMP_NEW)
 #elif defined __hppa__
  XLAT(SO_TIMESTAMP_NEW),
+ #define XLAT_VAL_174 ((unsigned) (SO_TIMESTAMP_NEW))
+ #define XLAT_STR_174 STRINGIFY(SO_TIMESTAMP_NEW)
 #else
  XLAT(SO_TIMESTAMP_NEW),
+ #define XLAT_VAL_175 ((unsigned) (SO_TIMESTAMP_NEW))
+ #define XLAT_STR_175 STRINGIFY(SO_TIMESTAMP_NEW)
 #endif
+
 #if defined __sparc__
  XLAT(SO_TIMESTAMPNS_NEW),
+ #define XLAT_VAL_176 ((unsigned) (SO_TIMESTAMPNS_NEW))
+ #define XLAT_STR_176 STRINGIFY(SO_TIMESTAMPNS_NEW)
 #elif defined __hppa__
  XLAT(SO_TIMESTAMPNS_NEW),
+ #define XLAT_VAL_177 ((unsigned) (SO_TIMESTAMPNS_NEW))
+ #define XLAT_STR_177 STRINGIFY(SO_TIMESTAMPNS_NEW)
 #else
  XLAT(SO_TIMESTAMPNS_NEW),
+ #define XLAT_VAL_178 ((unsigned) (SO_TIMESTAMPNS_NEW))
+ #define XLAT_STR_178 STRINGIFY(SO_TIMESTAMPNS_NEW)
 #endif
+
 #if defined __sparc__
  XLAT(SO_TIMESTAMPING_NEW),
+ #define XLAT_VAL_179 ((unsigned) (SO_TIMESTAMPING_NEW))
+ #define XLAT_STR_179 STRINGIFY(SO_TIMESTAMPING_NEW)
 #elif defined __hppa__
  XLAT(SO_TIMESTAMPING_NEW),
+ #define XLAT_VAL_180 ((unsigned) (SO_TIMESTAMPING_NEW))
+ #define XLAT_STR_180 STRINGIFY(SO_TIMESTAMPING_NEW)
 #else
  XLAT(SO_TIMESTAMPING_NEW),
+ #define XLAT_VAL_181 ((unsigned) (SO_TIMESTAMPING_NEW))
+ #define XLAT_STR_181 STRINGIFY(SO_TIMESTAMPING_NEW)
+#endif
+
+#if defined __sparc__
+ XLAT(SO_RCVTIMEO_NEW),
+ #define XLAT_VAL_182 ((unsigned) (SO_RCVTIMEO_NEW))
+ #define XLAT_STR_182 STRINGIFY(SO_RCVTIMEO_NEW)
+#elif defined __hppa__
+ XLAT(SO_RCVTIMEO_NEW),
+ #define XLAT_VAL_183 ((unsigned) (SO_RCVTIMEO_NEW))
+ #define XLAT_STR_183 STRINGIFY(SO_RCVTIMEO_NEW)
+#else
+ XLAT(SO_RCVTIMEO_NEW),
+ #define XLAT_VAL_184 ((unsigned) (SO_RCVTIMEO_NEW))
+ #define XLAT_STR_184 STRINGIFY(SO_RCVTIMEO_NEW)
 #endif
- XLAT_END
-};
 
+#if defined __sparc__
+ XLAT(SO_SNDTIMEO_NEW),
+ #define XLAT_VAL_185 ((unsigned) (SO_SNDTIMEO_NEW))
+ #define XLAT_STR_185 STRINGIFY(SO_SNDTIMEO_NEW)
+#elif defined __hppa__
+ XLAT(SO_SNDTIMEO_NEW),
+ #define XLAT_VAL_186 ((unsigned) (SO_SNDTIMEO_NEW))
+ #define XLAT_STR_186 STRINGIFY(SO_SNDTIMEO_NEW)
+#else
+ XLAT(SO_SNDTIMEO_NEW),
+ #define XLAT_VAL_187 ((unsigned) (SO_SNDTIMEO_NEW))
+ #define XLAT_STR_187 STRINGIFY(SO_SNDTIMEO_NEW)
+#endif
+
+#if defined __sparc__
+ XLAT(SO_DETACH_REUSEPORT_BPF),
+ #define XLAT_VAL_188 ((unsigned) (SO_DETACH_REUSEPORT_BPF))
+ #define XLAT_STR_188 STRINGIFY(SO_DETACH_REUSEPORT_BPF)
+#elif defined __hppa__
+ XLAT(SO_DETACH_REUSEPORT_BPF),
+ #define XLAT_VAL_189 ((unsigned) (SO_DETACH_REUSEPORT_BPF))
+ #define XLAT_STR_189 STRINGIFY(SO_DETACH_REUSEPORT_BPF)
+#else
+ XLAT(SO_DETACH_REUSEPORT_BPF),
+ #define XLAT_VAL_190 ((unsigned) (SO_DETACH_REUSEPORT_BPF))
+ #define XLAT_STR_190 STRINGIFY(SO_DETACH_REUSEPORT_BPF)
+#endif
+};
+static
+const struct xlat sock_options[1] = { {
+ .data = sock_options_xdata,
+ .size = ARRAY_SIZE(sock_options_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+#  ifdef XLAT_VAL_30
+  | XLAT_VAL_30
+#  endif
+#  ifdef XLAT_VAL_31
+  | XLAT_VAL_31
+#  endif
+#  ifdef XLAT_VAL_32
+  | XLAT_VAL_32
+#  endif
+#  ifdef XLAT_VAL_33
+  | XLAT_VAL_33
+#  endif
+#  ifdef XLAT_VAL_34
+  | XLAT_VAL_34
+#  endif
+#  ifdef XLAT_VAL_35
+  | XLAT_VAL_35
+#  endif
+#  ifdef XLAT_VAL_36
+  | XLAT_VAL_36
+#  endif
+#  ifdef XLAT_VAL_37
+  | XLAT_VAL_37
+#  endif
+#  ifdef XLAT_VAL_38
+  | XLAT_VAL_38
+#  endif
+#  ifdef XLAT_VAL_39
+  | XLAT_VAL_39
+#  endif
+#  ifdef XLAT_VAL_40
+  | XLAT_VAL_40
+#  endif
+#  ifdef XLAT_VAL_41
+  | XLAT_VAL_41
+#  endif
+#  ifdef XLAT_VAL_42
+  | XLAT_VAL_42
+#  endif
+#  ifdef XLAT_VAL_43
+  | XLAT_VAL_43
+#  endif
+#  ifdef XLAT_VAL_44
+  | XLAT_VAL_44
+#  endif
+#  ifdef XLAT_VAL_45
+  | XLAT_VAL_45
+#  endif
+#  ifdef XLAT_VAL_46
+  | XLAT_VAL_46
+#  endif
+#  ifdef XLAT_VAL_47
+  | XLAT_VAL_47
+#  endif
+#  ifdef XLAT_VAL_48
+  | XLAT_VAL_48
+#  endif
+#  ifdef XLAT_VAL_49
+  | XLAT_VAL_49
+#  endif
+#  ifdef XLAT_VAL_50
+  | XLAT_VAL_50
+#  endif
+#  ifdef XLAT_VAL_51
+  | XLAT_VAL_51
+#  endif
+#  ifdef XLAT_VAL_52
+  | XLAT_VAL_52
+#  endif
+#  ifdef XLAT_VAL_53
+  | XLAT_VAL_53
+#  endif
+#  ifdef XLAT_VAL_54
+  | XLAT_VAL_54
+#  endif
+#  ifdef XLAT_VAL_55
+  | XLAT_VAL_55
+#  endif
+#  ifdef XLAT_VAL_56
+  | XLAT_VAL_56
+#  endif
+#  ifdef XLAT_VAL_57
+  | XLAT_VAL_57
+#  endif
+#  ifdef XLAT_VAL_58
+  | XLAT_VAL_58
+#  endif
+#  ifdef XLAT_VAL_59
+  | XLAT_VAL_59
+#  endif
+#  ifdef XLAT_VAL_60
+  | XLAT_VAL_60
+#  endif
+#  ifdef XLAT_VAL_61
+  | XLAT_VAL_61
+#  endif
+#  ifdef XLAT_VAL_62
+  | XLAT_VAL_62
+#  endif
+#  ifdef XLAT_VAL_63
+  | XLAT_VAL_63
+#  endif
+#  ifdef XLAT_VAL_64
+  | XLAT_VAL_64
+#  endif
+#  ifdef XLAT_VAL_65
+  | XLAT_VAL_65
+#  endif
+#  ifdef XLAT_VAL_66
+  | XLAT_VAL_66
+#  endif
+#  ifdef XLAT_VAL_67
+  | XLAT_VAL_67
+#  endif
+#  ifdef XLAT_VAL_68
+  | XLAT_VAL_68
+#  endif
+#  ifdef XLAT_VAL_69
+  | XLAT_VAL_69
+#  endif
+#  ifdef XLAT_VAL_70
+  | XLAT_VAL_70
+#  endif
+#  ifdef XLAT_VAL_71
+  | XLAT_VAL_71
+#  endif
+#  ifdef XLAT_VAL_72
+  | XLAT_VAL_72
+#  endif
+#  ifdef XLAT_VAL_73
+  | XLAT_VAL_73
+#  endif
+#  ifdef XLAT_VAL_74
+  | XLAT_VAL_74
+#  endif
+#  ifdef XLAT_VAL_75
+  | XLAT_VAL_75
+#  endif
+#  ifdef XLAT_VAL_76
+  | XLAT_VAL_76
+#  endif
+#  ifdef XLAT_VAL_77
+  | XLAT_VAL_77
+#  endif
+#  ifdef XLAT_VAL_78
+  | XLAT_VAL_78
+#  endif
+#  ifdef XLAT_VAL_79
+  | XLAT_VAL_79
+#  endif
+#  ifdef XLAT_VAL_80
+  | XLAT_VAL_80
+#  endif
+#  ifdef XLAT_VAL_81
+  | XLAT_VAL_81
+#  endif
+#  ifdef XLAT_VAL_82
+  | XLAT_VAL_82
+#  endif
+#  ifdef XLAT_VAL_83
+  | XLAT_VAL_83
+#  endif
+#  ifdef XLAT_VAL_84
+  | XLAT_VAL_84
+#  endif
+#  ifdef XLAT_VAL_85
+  | XLAT_VAL_85
+#  endif
+#  ifdef XLAT_VAL_86
+  | XLAT_VAL_86
+#  endif
+#  ifdef XLAT_VAL_87
+  | XLAT_VAL_87
+#  endif
+#  ifdef XLAT_VAL_88
+  | XLAT_VAL_88
+#  endif
+#  ifdef XLAT_VAL_89
+  | XLAT_VAL_89
+#  endif
+#  ifdef XLAT_VAL_90
+  | XLAT_VAL_90
+#  endif
+#  ifdef XLAT_VAL_91
+  | XLAT_VAL_91
+#  endif
+#  ifdef XLAT_VAL_92
+  | XLAT_VAL_92
+#  endif
+#  ifdef XLAT_VAL_93
+  | XLAT_VAL_93
+#  endif
+#  ifdef XLAT_VAL_94
+  | XLAT_VAL_94
+#  endif
+#  ifdef XLAT_VAL_95
+  | XLAT_VAL_95
+#  endif
+#  ifdef XLAT_VAL_96
+  | XLAT_VAL_96
+#  endif
+#  ifdef XLAT_VAL_97
+  | XLAT_VAL_97
+#  endif
+#  ifdef XLAT_VAL_98
+  | XLAT_VAL_98
+#  endif
+#  ifdef XLAT_VAL_99
+  | XLAT_VAL_99
+#  endif
+#  ifdef XLAT_VAL_100
+  | XLAT_VAL_100
+#  endif
+#  ifdef XLAT_VAL_101
+  | XLAT_VAL_101
+#  endif
+#  ifdef XLAT_VAL_102
+  | XLAT_VAL_102
+#  endif
+#  ifdef XLAT_VAL_103
+  | XLAT_VAL_103
+#  endif
+#  ifdef XLAT_VAL_104
+  | XLAT_VAL_104
+#  endif
+#  ifdef XLAT_VAL_105
+  | XLAT_VAL_105
+#  endif
+#  ifdef XLAT_VAL_106
+  | XLAT_VAL_106
+#  endif
+#  ifdef XLAT_VAL_107
+  | XLAT_VAL_107
+#  endif
+#  ifdef XLAT_VAL_108
+  | XLAT_VAL_108
+#  endif
+#  ifdef XLAT_VAL_109
+  | XLAT_VAL_109
+#  endif
+#  ifdef XLAT_VAL_110
+  | XLAT_VAL_110
+#  endif
+#  ifdef XLAT_VAL_111
+  | XLAT_VAL_111
+#  endif
+#  ifdef XLAT_VAL_112
+  | XLAT_VAL_112
+#  endif
+#  ifdef XLAT_VAL_113
+  | XLAT_VAL_113
+#  endif
+#  ifdef XLAT_VAL_114
+  | XLAT_VAL_114
+#  endif
+#  ifdef XLAT_VAL_115
+  | XLAT_VAL_115
+#  endif
+#  ifdef XLAT_VAL_116
+  | XLAT_VAL_116
+#  endif
+#  ifdef XLAT_VAL_117
+  | XLAT_VAL_117
+#  endif
+#  ifdef XLAT_VAL_118
+  | XLAT_VAL_118
+#  endif
+#  ifdef XLAT_VAL_119
+  | XLAT_VAL_119
+#  endif
+#  ifdef XLAT_VAL_120
+  | XLAT_VAL_120
+#  endif
+#  ifdef XLAT_VAL_121
+  | XLAT_VAL_121
+#  endif
+#  ifdef XLAT_VAL_122
+  | XLAT_VAL_122
+#  endif
+#  ifdef XLAT_VAL_123
+  | XLAT_VAL_123
+#  endif
+#  ifdef XLAT_VAL_124
+  | XLAT_VAL_124
+#  endif
+#  ifdef XLAT_VAL_125
+  | XLAT_VAL_125
+#  endif
+#  ifdef XLAT_VAL_126
+  | XLAT_VAL_126
+#  endif
+#  ifdef XLAT_VAL_127
+  | XLAT_VAL_127
+#  endif
+#  ifdef XLAT_VAL_128
+  | XLAT_VAL_128
+#  endif
+#  ifdef XLAT_VAL_129
+  | XLAT_VAL_129
+#  endif
+#  ifdef XLAT_VAL_130
+  | XLAT_VAL_130
+#  endif
+#  ifdef XLAT_VAL_131
+  | XLAT_VAL_131
+#  endif
+#  ifdef XLAT_VAL_132
+  | XLAT_VAL_132
+#  endif
+#  ifdef XLAT_VAL_133
+  | XLAT_VAL_133
+#  endif
+#  ifdef XLAT_VAL_134
+  | XLAT_VAL_134
+#  endif
+#  ifdef XLAT_VAL_135
+  | XLAT_VAL_135
+#  endif
+#  ifdef XLAT_VAL_136
+  | XLAT_VAL_136
+#  endif
+#  ifdef XLAT_VAL_137
+  | XLAT_VAL_137
+#  endif
+#  ifdef XLAT_VAL_138
+  | XLAT_VAL_138
+#  endif
+#  ifdef XLAT_VAL_139
+  | XLAT_VAL_139
+#  endif
+#  ifdef XLAT_VAL_140
+  | XLAT_VAL_140
+#  endif
+#  ifdef XLAT_VAL_141
+  | XLAT_VAL_141
+#  endif
+#  ifdef XLAT_VAL_142
+  | XLAT_VAL_142
+#  endif
+#  ifdef XLAT_VAL_143
+  | XLAT_VAL_143
+#  endif
+#  ifdef XLAT_VAL_144
+  | XLAT_VAL_144
+#  endif
+#  ifdef XLAT_VAL_145
+  | XLAT_VAL_145
+#  endif
+#  ifdef XLAT_VAL_146
+  | XLAT_VAL_146
+#  endif
+#  ifdef XLAT_VAL_147
+  | XLAT_VAL_147
+#  endif
+#  ifdef XLAT_VAL_148
+  | XLAT_VAL_148
+#  endif
+#  ifdef XLAT_VAL_149
+  | XLAT_VAL_149
+#  endif
+#  ifdef XLAT_VAL_150
+  | XLAT_VAL_150
+#  endif
+#  ifdef XLAT_VAL_151
+  | XLAT_VAL_151
+#  endif
+#  ifdef XLAT_VAL_152
+  | XLAT_VAL_152
+#  endif
+#  ifdef XLAT_VAL_153
+  | XLAT_VAL_153
+#  endif
+#  ifdef XLAT_VAL_154
+  | XLAT_VAL_154
+#  endif
+#  ifdef XLAT_VAL_155
+  | XLAT_VAL_155
+#  endif
+#  ifdef XLAT_VAL_156
+  | XLAT_VAL_156
+#  endif
+#  ifdef XLAT_VAL_157
+  | XLAT_VAL_157
+#  endif
+#  ifdef XLAT_VAL_158
+  | XLAT_VAL_158
+#  endif
+#  ifdef XLAT_VAL_159
+  | XLAT_VAL_159
+#  endif
+#  ifdef XLAT_VAL_160
+  | XLAT_VAL_160
+#  endif
+#  ifdef XLAT_VAL_161
+  | XLAT_VAL_161
+#  endif
+#  ifdef XLAT_VAL_162
+  | XLAT_VAL_162
+#  endif
+#  ifdef XLAT_VAL_163
+  | XLAT_VAL_163
+#  endif
+#  ifdef XLAT_VAL_164
+  | XLAT_VAL_164
+#  endif
+#  ifdef XLAT_VAL_165
+  | XLAT_VAL_165
+#  endif
+#  ifdef XLAT_VAL_166
+  | XLAT_VAL_166
+#  endif
+#  ifdef XLAT_VAL_167
+  | XLAT_VAL_167
+#  endif
+#  ifdef XLAT_VAL_168
+  | XLAT_VAL_168
+#  endif
+#  ifdef XLAT_VAL_169
+  | XLAT_VAL_169
+#  endif
+#  ifdef XLAT_VAL_170
+  | XLAT_VAL_170
+#  endif
+#  ifdef XLAT_VAL_171
+  | XLAT_VAL_171
+#  endif
+#  ifdef XLAT_VAL_172
+  | XLAT_VAL_172
+#  endif
+#  ifdef XLAT_VAL_173
+  | XLAT_VAL_173
+#  endif
+#  ifdef XLAT_VAL_174
+  | XLAT_VAL_174
+#  endif
+#  ifdef XLAT_VAL_175
+  | XLAT_VAL_175
+#  endif
+#  ifdef XLAT_VAL_176
+  | XLAT_VAL_176
+#  endif
+#  ifdef XLAT_VAL_177
+  | XLAT_VAL_177
+#  endif
+#  ifdef XLAT_VAL_178
+  | XLAT_VAL_178
+#  endif
+#  ifdef XLAT_VAL_179
+  | XLAT_VAL_179
+#  endif
+#  ifdef XLAT_VAL_180
+  | XLAT_VAL_180
+#  endif
+#  ifdef XLAT_VAL_181
+  | XLAT_VAL_181
+#  endif
+#  ifdef XLAT_VAL_182
+  | XLAT_VAL_182
+#  endif
+#  ifdef XLAT_VAL_183
+  | XLAT_VAL_183
+#  endif
+#  ifdef XLAT_VAL_184
+  | XLAT_VAL_184
+#  endif
+#  ifdef XLAT_VAL_185
+  | XLAT_VAL_185
+#  endif
+#  ifdef XLAT_VAL_186
+  | XLAT_VAL_186
+#  endif
+#  ifdef XLAT_VAL_187
+  | XLAT_VAL_187
+#  endif
+#  ifdef XLAT_VAL_188
+  | XLAT_VAL_188
+#  endif
+#  ifdef XLAT_VAL_189
+  | XLAT_VAL_189
+#  endif
+#  ifdef XLAT_VAL_190
+  | XLAT_VAL_190
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+#  ifdef XLAT_STR_30
+  + sizeof(XLAT_STR_30)
+#  endif
+#  ifdef XLAT_STR_31
+  + sizeof(XLAT_STR_31)
+#  endif
+#  ifdef XLAT_STR_32
+  + sizeof(XLAT_STR_32)
+#  endif
+#  ifdef XLAT_STR_33
+  + sizeof(XLAT_STR_33)
+#  endif
+#  ifdef XLAT_STR_34
+  + sizeof(XLAT_STR_34)
+#  endif
+#  ifdef XLAT_STR_35
+  + sizeof(XLAT_STR_35)
+#  endif
+#  ifdef XLAT_STR_36
+  + sizeof(XLAT_STR_36)
+#  endif
+#  ifdef XLAT_STR_37
+  + sizeof(XLAT_STR_37)
+#  endif
+#  ifdef XLAT_STR_38
+  + sizeof(XLAT_STR_38)
+#  endif
+#  ifdef XLAT_STR_39
+  + sizeof(XLAT_STR_39)
+#  endif
+#  ifdef XLAT_STR_40
+  + sizeof(XLAT_STR_40)
+#  endif
+#  ifdef XLAT_STR_41
+  + sizeof(XLAT_STR_41)
+#  endif
+#  ifdef XLAT_STR_42
+  + sizeof(XLAT_STR_42)
+#  endif
+#  ifdef XLAT_STR_43
+  + sizeof(XLAT_STR_43)
+#  endif
+#  ifdef XLAT_STR_44
+  + sizeof(XLAT_STR_44)
+#  endif
+#  ifdef XLAT_STR_45
+  + sizeof(XLAT_STR_45)
+#  endif
+#  ifdef XLAT_STR_46
+  + sizeof(XLAT_STR_46)
+#  endif
+#  ifdef XLAT_STR_47
+  + sizeof(XLAT_STR_47)
+#  endif
+#  ifdef XLAT_STR_48
+  + sizeof(XLAT_STR_48)
+#  endif
+#  ifdef XLAT_STR_49
+  + sizeof(XLAT_STR_49)
+#  endif
+#  ifdef XLAT_STR_50
+  + sizeof(XLAT_STR_50)
+#  endif
+#  ifdef XLAT_STR_51
+  + sizeof(XLAT_STR_51)
+#  endif
+#  ifdef XLAT_STR_52
+  + sizeof(XLAT_STR_52)
+#  endif
+#  ifdef XLAT_STR_53
+  + sizeof(XLAT_STR_53)
+#  endif
+#  ifdef XLAT_STR_54
+  + sizeof(XLAT_STR_54)
+#  endif
+#  ifdef XLAT_STR_55
+  + sizeof(XLAT_STR_55)
+#  endif
+#  ifdef XLAT_STR_56
+  + sizeof(XLAT_STR_56)
+#  endif
+#  ifdef XLAT_STR_57
+  + sizeof(XLAT_STR_57)
+#  endif
+#  ifdef XLAT_STR_58
+  + sizeof(XLAT_STR_58)
+#  endif
+#  ifdef XLAT_STR_59
+  + sizeof(XLAT_STR_59)
+#  endif
+#  ifdef XLAT_STR_60
+  + sizeof(XLAT_STR_60)
+#  endif
+#  ifdef XLAT_STR_61
+  + sizeof(XLAT_STR_61)
+#  endif
+#  ifdef XLAT_STR_62
+  + sizeof(XLAT_STR_62)
+#  endif
+#  ifdef XLAT_STR_63
+  + sizeof(XLAT_STR_63)
+#  endif
+#  ifdef XLAT_STR_64
+  + sizeof(XLAT_STR_64)
+#  endif
+#  ifdef XLAT_STR_65
+  + sizeof(XLAT_STR_65)
+#  endif
+#  ifdef XLAT_STR_66
+  + sizeof(XLAT_STR_66)
+#  endif
+#  ifdef XLAT_STR_67
+  + sizeof(XLAT_STR_67)
+#  endif
+#  ifdef XLAT_STR_68
+  + sizeof(XLAT_STR_68)
+#  endif
+#  ifdef XLAT_STR_69
+  + sizeof(XLAT_STR_69)
+#  endif
+#  ifdef XLAT_STR_70
+  + sizeof(XLAT_STR_70)
+#  endif
+#  ifdef XLAT_STR_71
+  + sizeof(XLAT_STR_71)
+#  endif
+#  ifdef XLAT_STR_72
+  + sizeof(XLAT_STR_72)
+#  endif
+#  ifdef XLAT_STR_73
+  + sizeof(XLAT_STR_73)
+#  endif
+#  ifdef XLAT_STR_74
+  + sizeof(XLAT_STR_74)
+#  endif
+#  ifdef XLAT_STR_75
+  + sizeof(XLAT_STR_75)
+#  endif
+#  ifdef XLAT_STR_76
+  + sizeof(XLAT_STR_76)
+#  endif
+#  ifdef XLAT_STR_77
+  + sizeof(XLAT_STR_77)
+#  endif
+#  ifdef XLAT_STR_78
+  + sizeof(XLAT_STR_78)
+#  endif
+#  ifdef XLAT_STR_79
+  + sizeof(XLAT_STR_79)
+#  endif
+#  ifdef XLAT_STR_80
+  + sizeof(XLAT_STR_80)
+#  endif
+#  ifdef XLAT_STR_81
+  + sizeof(XLAT_STR_81)
+#  endif
+#  ifdef XLAT_STR_82
+  + sizeof(XLAT_STR_82)
+#  endif
+#  ifdef XLAT_STR_83
+  + sizeof(XLAT_STR_83)
+#  endif
+#  ifdef XLAT_STR_84
+  + sizeof(XLAT_STR_84)
+#  endif
+#  ifdef XLAT_STR_85
+  + sizeof(XLAT_STR_85)
+#  endif
+#  ifdef XLAT_STR_86
+  + sizeof(XLAT_STR_86)
+#  endif
+#  ifdef XLAT_STR_87
+  + sizeof(XLAT_STR_87)
+#  endif
+#  ifdef XLAT_STR_88
+  + sizeof(XLAT_STR_88)
+#  endif
+#  ifdef XLAT_STR_89
+  + sizeof(XLAT_STR_89)
+#  endif
+#  ifdef XLAT_STR_90
+  + sizeof(XLAT_STR_90)
+#  endif
+#  ifdef XLAT_STR_91
+  + sizeof(XLAT_STR_91)
+#  endif
+#  ifdef XLAT_STR_92
+  + sizeof(XLAT_STR_92)
+#  endif
+#  ifdef XLAT_STR_93
+  + sizeof(XLAT_STR_93)
+#  endif
+#  ifdef XLAT_STR_94
+  + sizeof(XLAT_STR_94)
+#  endif
+#  ifdef XLAT_STR_95
+  + sizeof(XLAT_STR_95)
+#  endif
+#  ifdef XLAT_STR_96
+  + sizeof(XLAT_STR_96)
+#  endif
+#  ifdef XLAT_STR_97
+  + sizeof(XLAT_STR_97)
+#  endif
+#  ifdef XLAT_STR_98
+  + sizeof(XLAT_STR_98)
+#  endif
+#  ifdef XLAT_STR_99
+  + sizeof(XLAT_STR_99)
+#  endif
+#  ifdef XLAT_STR_100
+  + sizeof(XLAT_STR_100)
+#  endif
+#  ifdef XLAT_STR_101
+  + sizeof(XLAT_STR_101)
+#  endif
+#  ifdef XLAT_STR_102
+  + sizeof(XLAT_STR_102)
+#  endif
+#  ifdef XLAT_STR_103
+  + sizeof(XLAT_STR_103)
+#  endif
+#  ifdef XLAT_STR_104
+  + sizeof(XLAT_STR_104)
+#  endif
+#  ifdef XLAT_STR_105
+  + sizeof(XLAT_STR_105)
+#  endif
+#  ifdef XLAT_STR_106
+  + sizeof(XLAT_STR_106)
+#  endif
+#  ifdef XLAT_STR_107
+  + sizeof(XLAT_STR_107)
+#  endif
+#  ifdef XLAT_STR_108
+  + sizeof(XLAT_STR_108)
+#  endif
+#  ifdef XLAT_STR_109
+  + sizeof(XLAT_STR_109)
+#  endif
+#  ifdef XLAT_STR_110
+  + sizeof(XLAT_STR_110)
+#  endif
+#  ifdef XLAT_STR_111
+  + sizeof(XLAT_STR_111)
+#  endif
+#  ifdef XLAT_STR_112
+  + sizeof(XLAT_STR_112)
+#  endif
+#  ifdef XLAT_STR_113
+  + sizeof(XLAT_STR_113)
+#  endif
+#  ifdef XLAT_STR_114
+  + sizeof(XLAT_STR_114)
+#  endif
+#  ifdef XLAT_STR_115
+  + sizeof(XLAT_STR_115)
+#  endif
+#  ifdef XLAT_STR_116
+  + sizeof(XLAT_STR_116)
+#  endif
+#  ifdef XLAT_STR_117
+  + sizeof(XLAT_STR_117)
+#  endif
+#  ifdef XLAT_STR_118
+  + sizeof(XLAT_STR_118)
+#  endif
+#  ifdef XLAT_STR_119
+  + sizeof(XLAT_STR_119)
+#  endif
+#  ifdef XLAT_STR_120
+  + sizeof(XLAT_STR_120)
+#  endif
+#  ifdef XLAT_STR_121
+  + sizeof(XLAT_STR_121)
+#  endif
+#  ifdef XLAT_STR_122
+  + sizeof(XLAT_STR_122)
+#  endif
+#  ifdef XLAT_STR_123
+  + sizeof(XLAT_STR_123)
+#  endif
+#  ifdef XLAT_STR_124
+  + sizeof(XLAT_STR_124)
+#  endif
+#  ifdef XLAT_STR_125
+  + sizeof(XLAT_STR_125)
+#  endif
+#  ifdef XLAT_STR_126
+  + sizeof(XLAT_STR_126)
+#  endif
+#  ifdef XLAT_STR_127
+  + sizeof(XLAT_STR_127)
+#  endif
+#  ifdef XLAT_STR_128
+  + sizeof(XLAT_STR_128)
+#  endif
+#  ifdef XLAT_STR_129
+  + sizeof(XLAT_STR_129)
+#  endif
+#  ifdef XLAT_STR_130
+  + sizeof(XLAT_STR_130)
+#  endif
+#  ifdef XLAT_STR_131
+  + sizeof(XLAT_STR_131)
+#  endif
+#  ifdef XLAT_STR_132
+  + sizeof(XLAT_STR_132)
+#  endif
+#  ifdef XLAT_STR_133
+  + sizeof(XLAT_STR_133)
+#  endif
+#  ifdef XLAT_STR_134
+  + sizeof(XLAT_STR_134)
+#  endif
+#  ifdef XLAT_STR_135
+  + sizeof(XLAT_STR_135)
+#  endif
+#  ifdef XLAT_STR_136
+  + sizeof(XLAT_STR_136)
+#  endif
+#  ifdef XLAT_STR_137
+  + sizeof(XLAT_STR_137)
+#  endif
+#  ifdef XLAT_STR_138
+  + sizeof(XLAT_STR_138)
+#  endif
+#  ifdef XLAT_STR_139
+  + sizeof(XLAT_STR_139)
+#  endif
+#  ifdef XLAT_STR_140
+  + sizeof(XLAT_STR_140)
+#  endif
+#  ifdef XLAT_STR_141
+  + sizeof(XLAT_STR_141)
+#  endif
+#  ifdef XLAT_STR_142
+  + sizeof(XLAT_STR_142)
+#  endif
+#  ifdef XLAT_STR_143
+  + sizeof(XLAT_STR_143)
+#  endif
+#  ifdef XLAT_STR_144
+  + sizeof(XLAT_STR_144)
+#  endif
+#  ifdef XLAT_STR_145
+  + sizeof(XLAT_STR_145)
+#  endif
+#  ifdef XLAT_STR_146
+  + sizeof(XLAT_STR_146)
+#  endif
+#  ifdef XLAT_STR_147
+  + sizeof(XLAT_STR_147)
+#  endif
+#  ifdef XLAT_STR_148
+  + sizeof(XLAT_STR_148)
+#  endif
+#  ifdef XLAT_STR_149
+  + sizeof(XLAT_STR_149)
+#  endif
+#  ifdef XLAT_STR_150
+  + sizeof(XLAT_STR_150)
+#  endif
+#  ifdef XLAT_STR_151
+  + sizeof(XLAT_STR_151)
+#  endif
+#  ifdef XLAT_STR_152
+  + sizeof(XLAT_STR_152)
+#  endif
+#  ifdef XLAT_STR_153
+  + sizeof(XLAT_STR_153)
+#  endif
+#  ifdef XLAT_STR_154
+  + sizeof(XLAT_STR_154)
+#  endif
+#  ifdef XLAT_STR_155
+  + sizeof(XLAT_STR_155)
+#  endif
+#  ifdef XLAT_STR_156
+  + sizeof(XLAT_STR_156)
+#  endif
+#  ifdef XLAT_STR_157
+  + sizeof(XLAT_STR_157)
+#  endif
+#  ifdef XLAT_STR_158
+  + sizeof(XLAT_STR_158)
+#  endif
+#  ifdef XLAT_STR_159
+  + sizeof(XLAT_STR_159)
+#  endif
+#  ifdef XLAT_STR_160
+  + sizeof(XLAT_STR_160)
+#  endif
+#  ifdef XLAT_STR_161
+  + sizeof(XLAT_STR_161)
+#  endif
+#  ifdef XLAT_STR_162
+  + sizeof(XLAT_STR_162)
+#  endif
+#  ifdef XLAT_STR_163
+  + sizeof(XLAT_STR_163)
+#  endif
+#  ifdef XLAT_STR_164
+  + sizeof(XLAT_STR_164)
+#  endif
+#  ifdef XLAT_STR_165
+  + sizeof(XLAT_STR_165)
+#  endif
+#  ifdef XLAT_STR_166
+  + sizeof(XLAT_STR_166)
+#  endif
+#  ifdef XLAT_STR_167
+  + sizeof(XLAT_STR_167)
+#  endif
+#  ifdef XLAT_STR_168
+  + sizeof(XLAT_STR_168)
+#  endif
+#  ifdef XLAT_STR_169
+  + sizeof(XLAT_STR_169)
+#  endif
+#  ifdef XLAT_STR_170
+  + sizeof(XLAT_STR_170)
+#  endif
+#  ifdef XLAT_STR_171
+  + sizeof(XLAT_STR_171)
+#  endif
+#  ifdef XLAT_STR_172
+  + sizeof(XLAT_STR_172)
+#  endif
+#  ifdef XLAT_STR_173
+  + sizeof(XLAT_STR_173)
+#  endif
+#  ifdef XLAT_STR_174
+  + sizeof(XLAT_STR_174)
+#  endif
+#  ifdef XLAT_STR_175
+  + sizeof(XLAT_STR_175)
+#  endif
+#  ifdef XLAT_STR_176
+  + sizeof(XLAT_STR_176)
+#  endif
+#  ifdef XLAT_STR_177
+  + sizeof(XLAT_STR_177)
+#  endif
+#  ifdef XLAT_STR_178
+  + sizeof(XLAT_STR_178)
+#  endif
+#  ifdef XLAT_STR_179
+  + sizeof(XLAT_STR_179)
+#  endif
+#  ifdef XLAT_STR_180
+  + sizeof(XLAT_STR_180)
+#  endif
+#  ifdef XLAT_STR_181
+  + sizeof(XLAT_STR_181)
+#  endif
+#  ifdef XLAT_STR_182
+  + sizeof(XLAT_STR_182)
+#  endif
+#  ifdef XLAT_STR_183
+  + sizeof(XLAT_STR_183)
+#  endif
+#  ifdef XLAT_STR_184
+  + sizeof(XLAT_STR_184)
+#  endif
+#  ifdef XLAT_STR_185
+  + sizeof(XLAT_STR_185)
+#  endif
+#  ifdef XLAT_STR_186
+  + sizeof(XLAT_STR_186)
+#  endif
+#  ifdef XLAT_STR_187
+  + sizeof(XLAT_STR_187)
+#  endif
+#  ifdef XLAT_STR_188
+  + sizeof(XLAT_STR_188)
+#  endif
+#  ifdef XLAT_STR_189
+  + sizeof(XLAT_STR_189)
+#  endif
+#  ifdef XLAT_STR_190
+  + sizeof(XLAT_STR_190)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
+#  undef XLAT_STR_30
+#  undef XLAT_VAL_30
+#  undef XLAT_STR_31
+#  undef XLAT_VAL_31
+#  undef XLAT_STR_32
+#  undef XLAT_VAL_32
+#  undef XLAT_STR_33
+#  undef XLAT_VAL_33
+#  undef XLAT_STR_34
+#  undef XLAT_VAL_34
+#  undef XLAT_STR_35
+#  undef XLAT_VAL_35
+#  undef XLAT_STR_36
+#  undef XLAT_VAL_36
+#  undef XLAT_STR_37
+#  undef XLAT_VAL_37
+#  undef XLAT_STR_38
+#  undef XLAT_VAL_38
+#  undef XLAT_STR_39
+#  undef XLAT_VAL_39
+#  undef XLAT_STR_40
+#  undef XLAT_VAL_40
+#  undef XLAT_STR_41
+#  undef XLAT_VAL_41
+#  undef XLAT_STR_42
+#  undef XLAT_VAL_42
+#  undef XLAT_STR_43
+#  undef XLAT_VAL_43
+#  undef XLAT_STR_44
+#  undef XLAT_VAL_44
+#  undef XLAT_STR_45
+#  undef XLAT_VAL_45
+#  undef XLAT_STR_46
+#  undef XLAT_VAL_46
+#  undef XLAT_STR_47
+#  undef XLAT_VAL_47
+#  undef XLAT_STR_48
+#  undef XLAT_VAL_48
+#  undef XLAT_STR_49
+#  undef XLAT_VAL_49
+#  undef XLAT_STR_50
+#  undef XLAT_VAL_50
+#  undef XLAT_STR_51
+#  undef XLAT_VAL_51
+#  undef XLAT_STR_52
+#  undef XLAT_VAL_52
+#  undef XLAT_STR_53
+#  undef XLAT_VAL_53
+#  undef XLAT_STR_54
+#  undef XLAT_VAL_54
+#  undef XLAT_STR_55
+#  undef XLAT_VAL_55
+#  undef XLAT_STR_56
+#  undef XLAT_VAL_56
+#  undef XLAT_STR_57
+#  undef XLAT_VAL_57
+#  undef XLAT_STR_58
+#  undef XLAT_VAL_58
+#  undef XLAT_STR_59
+#  undef XLAT_VAL_59
+#  undef XLAT_STR_60
+#  undef XLAT_VAL_60
+#  undef XLAT_STR_61
+#  undef XLAT_VAL_61
+#  undef XLAT_STR_62
+#  undef XLAT_VAL_62
+#  undef XLAT_STR_63
+#  undef XLAT_VAL_63
+#  undef XLAT_STR_64
+#  undef XLAT_VAL_64
+#  undef XLAT_STR_65
+#  undef XLAT_VAL_65
+#  undef XLAT_STR_66
+#  undef XLAT_VAL_66
+#  undef XLAT_STR_67
+#  undef XLAT_VAL_67
+#  undef XLAT_STR_68
+#  undef XLAT_VAL_68
+#  undef XLAT_STR_69
+#  undef XLAT_VAL_69
+#  undef XLAT_STR_70
+#  undef XLAT_VAL_70
+#  undef XLAT_STR_71
+#  undef XLAT_VAL_71
+#  undef XLAT_STR_72
+#  undef XLAT_VAL_72
+#  undef XLAT_STR_73
+#  undef XLAT_VAL_73
+#  undef XLAT_STR_74
+#  undef XLAT_VAL_74
+#  undef XLAT_STR_75
+#  undef XLAT_VAL_75
+#  undef XLAT_STR_76
+#  undef XLAT_VAL_76
+#  undef XLAT_STR_77
+#  undef XLAT_VAL_77
+#  undef XLAT_STR_78
+#  undef XLAT_VAL_78
+#  undef XLAT_STR_79
+#  undef XLAT_VAL_79
+#  undef XLAT_STR_80
+#  undef XLAT_VAL_80
+#  undef XLAT_STR_81
+#  undef XLAT_VAL_81
+#  undef XLAT_STR_82
+#  undef XLAT_VAL_82
+#  undef XLAT_STR_83
+#  undef XLAT_VAL_83
+#  undef XLAT_STR_84
+#  undef XLAT_VAL_84
+#  undef XLAT_STR_85
+#  undef XLAT_VAL_85
+#  undef XLAT_STR_86
+#  undef XLAT_VAL_86
+#  undef XLAT_STR_87
+#  undef XLAT_VAL_87
+#  undef XLAT_STR_88
+#  undef XLAT_VAL_88
+#  undef XLAT_STR_89
+#  undef XLAT_VAL_89
+#  undef XLAT_STR_90
+#  undef XLAT_VAL_90
+#  undef XLAT_STR_91
+#  undef XLAT_VAL_91
+#  undef XLAT_STR_92
+#  undef XLAT_VAL_92
+#  undef XLAT_STR_93
+#  undef XLAT_VAL_93
+#  undef XLAT_STR_94
+#  undef XLAT_VAL_94
+#  undef XLAT_STR_95
+#  undef XLAT_VAL_95
+#  undef XLAT_STR_96
+#  undef XLAT_VAL_96
+#  undef XLAT_STR_97
+#  undef XLAT_VAL_97
+#  undef XLAT_STR_98
+#  undef XLAT_VAL_98
+#  undef XLAT_STR_99
+#  undef XLAT_VAL_99
+#  undef XLAT_STR_100
+#  undef XLAT_VAL_100
+#  undef XLAT_STR_101
+#  undef XLAT_VAL_101
+#  undef XLAT_STR_102
+#  undef XLAT_VAL_102
+#  undef XLAT_STR_103
+#  undef XLAT_VAL_103
+#  undef XLAT_STR_104
+#  undef XLAT_VAL_104
+#  undef XLAT_STR_105
+#  undef XLAT_VAL_105
+#  undef XLAT_STR_106
+#  undef XLAT_VAL_106
+#  undef XLAT_STR_107
+#  undef XLAT_VAL_107
+#  undef XLAT_STR_108
+#  undef XLAT_VAL_108
+#  undef XLAT_STR_109
+#  undef XLAT_VAL_109
+#  undef XLAT_STR_110
+#  undef XLAT_VAL_110
+#  undef XLAT_STR_111
+#  undef XLAT_VAL_111
+#  undef XLAT_STR_112
+#  undef XLAT_VAL_112
+#  undef XLAT_STR_113
+#  undef XLAT_VAL_113
+#  undef XLAT_STR_114
+#  undef XLAT_VAL_114
+#  undef XLAT_STR_115
+#  undef XLAT_VAL_115
+#  undef XLAT_STR_116
+#  undef XLAT_VAL_116
+#  undef XLAT_STR_117
+#  undef XLAT_VAL_117
+#  undef XLAT_STR_118
+#  undef XLAT_VAL_118
+#  undef XLAT_STR_119
+#  undef XLAT_VAL_119
+#  undef XLAT_STR_120
+#  undef XLAT_VAL_120
+#  undef XLAT_STR_121
+#  undef XLAT_VAL_121
+#  undef XLAT_STR_122
+#  undef XLAT_VAL_122
+#  undef XLAT_STR_123
+#  undef XLAT_VAL_123
+#  undef XLAT_STR_124
+#  undef XLAT_VAL_124
+#  undef XLAT_STR_125
+#  undef XLAT_VAL_125
+#  undef XLAT_STR_126
+#  undef XLAT_VAL_126
+#  undef XLAT_STR_127
+#  undef XLAT_VAL_127
+#  undef XLAT_STR_128
+#  undef XLAT_VAL_128
+#  undef XLAT_STR_129
+#  undef XLAT_VAL_129
+#  undef XLAT_STR_130
+#  undef XLAT_VAL_130
+#  undef XLAT_STR_131
+#  undef XLAT_VAL_131
+#  undef XLAT_STR_132
+#  undef XLAT_VAL_132
+#  undef XLAT_STR_133
+#  undef XLAT_VAL_133
+#  undef XLAT_STR_134
+#  undef XLAT_VAL_134
+#  undef XLAT_STR_135
+#  undef XLAT_VAL_135
+#  undef XLAT_STR_136
+#  undef XLAT_VAL_136
+#  undef XLAT_STR_137
+#  undef XLAT_VAL_137
+#  undef XLAT_STR_138
+#  undef XLAT_VAL_138
+#  undef XLAT_STR_139
+#  undef XLAT_VAL_139
+#  undef XLAT_STR_140
+#  undef XLAT_VAL_140
+#  undef XLAT_STR_141
+#  undef XLAT_VAL_141
+#  undef XLAT_STR_142
+#  undef XLAT_VAL_142
+#  undef XLAT_STR_143
+#  undef XLAT_VAL_143
+#  undef XLAT_STR_144
+#  undef XLAT_VAL_144
+#  undef XLAT_STR_145
+#  undef XLAT_VAL_145
+#  undef XLAT_STR_146
+#  undef XLAT_VAL_146
+#  undef XLAT_STR_147
+#  undef XLAT_VAL_147
+#  undef XLAT_STR_148
+#  undef XLAT_VAL_148
+#  undef XLAT_STR_149
+#  undef XLAT_VAL_149
+#  undef XLAT_STR_150
+#  undef XLAT_VAL_150
+#  undef XLAT_STR_151
+#  undef XLAT_VAL_151
+#  undef XLAT_STR_152
+#  undef XLAT_VAL_152
+#  undef XLAT_STR_153
+#  undef XLAT_VAL_153
+#  undef XLAT_STR_154
+#  undef XLAT_VAL_154
+#  undef XLAT_STR_155
+#  undef XLAT_VAL_155
+#  undef XLAT_STR_156
+#  undef XLAT_VAL_156
+#  undef XLAT_STR_157
+#  undef XLAT_VAL_157
+#  undef XLAT_STR_158
+#  undef XLAT_VAL_158
+#  undef XLAT_STR_159
+#  undef XLAT_VAL_159
+#  undef XLAT_STR_160
+#  undef XLAT_VAL_160
+#  undef XLAT_STR_161
+#  undef XLAT_VAL_161
+#  undef XLAT_STR_162
+#  undef XLAT_VAL_162
+#  undef XLAT_STR_163
+#  undef XLAT_VAL_163
+#  undef XLAT_STR_164
+#  undef XLAT_VAL_164
+#  undef XLAT_STR_165
+#  undef XLAT_VAL_165
+#  undef XLAT_STR_166
+#  undef XLAT_VAL_166
+#  undef XLAT_STR_167
+#  undef XLAT_VAL_167
+#  undef XLAT_STR_168
+#  undef XLAT_VAL_168
+#  undef XLAT_STR_169
+#  undef XLAT_VAL_169
+#  undef XLAT_STR_170
+#  undef XLAT_VAL_170
+#  undef XLAT_STR_171
+#  undef XLAT_VAL_171
+#  undef XLAT_STR_172
+#  undef XLAT_VAL_172
+#  undef XLAT_STR_173
+#  undef XLAT_VAL_173
+#  undef XLAT_STR_174
+#  undef XLAT_VAL_174
+#  undef XLAT_STR_175
+#  undef XLAT_VAL_175
+#  undef XLAT_STR_176
+#  undef XLAT_VAL_176
+#  undef XLAT_STR_177
+#  undef XLAT_VAL_177
+#  undef XLAT_STR_178
+#  undef XLAT_VAL_178
+#  undef XLAT_STR_179
+#  undef XLAT_VAL_179
+#  undef XLAT_STR_180
+#  undef XLAT_VAL_180
+#  undef XLAT_STR_181
+#  undef XLAT_VAL_181
+#  undef XLAT_STR_182
+#  undef XLAT_VAL_182
+#  undef XLAT_STR_183
+#  undef XLAT_VAL_183
+#  undef XLAT_STR_184
+#  undef XLAT_VAL_184
+#  undef XLAT_STR_185
+#  undef XLAT_VAL_185
+#  undef XLAT_STR_186
+#  undef XLAT_VAL_186
+#  undef XLAT_STR_187
+#  undef XLAT_VAL_187
+#  undef XLAT_STR_188
+#  undef XLAT_VAL_188
+#  undef XLAT_STR_189
+#  undef XLAT_VAL_189
+#  undef XLAT_STR_190
+#  undef XLAT_VAL_190
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 619356e30945200890e906da0251efd61f7329b4..d6452a5d785a1158496ec9a65c4cf31b0f0d7743 100644 (file)
@@ -198,6 +198,8 @@ SO_BINDTODEVICE     16409
 SO_BINDTODEVICE        25
 #endif
 
+/* SO_ATTACH_FILTER is in setsock_options.h */
+
 #if defined __hppa__
 SO_DETACH_FILTER       16411
 #else
@@ -454,6 +456,14 @@ SO_TXTIME  16438
 SO_TXTIME      61
 #endif
 
+#if defined __sparc__
+SO_BINDTOIFINDEX       65
+#elif defined __hppa__
+SO_BINDTOIFINDEX       16439
+#else
+SO_BINDTOIFINDEX       62
+#endif
+
 #if defined __sparc__
 SO_TIMESTAMP_NEW       70
 #elif defined __hppa__
@@ -461,6 +471,7 @@ SO_TIMESTAMP_NEW    16440
 #else
 SO_TIMESTAMP_NEW       63
 #endif
+
 #if defined __sparc__
 SO_TIMESTAMPNS_NEW     66
 #elif defined __hppa__
@@ -468,6 +479,7 @@ SO_TIMESTAMPNS_NEW  16441
 #else
 SO_TIMESTAMPNS_NEW     64
 #endif
+
 #if defined __sparc__
 SO_TIMESTAMPING_NEW    67
 #elif defined __hppa__
@@ -475,3 +487,27 @@ SO_TIMESTAMPING_NEW        16442
 #else
 SO_TIMESTAMPING_NEW    65
 #endif
+
+#if defined __sparc__
+SO_RCVTIMEO_NEW                68
+#elif defined __hppa__
+SO_RCVTIMEO_NEW                16448
+#else
+SO_RCVTIMEO_NEW                66
+#endif
+
+#if defined __sparc__
+SO_SNDTIMEO_NEW                69
+#elif defined __hppa__
+SO_SNDTIMEO_NEW                16449
+#else
+SO_SNDTIMEO_NEW                67
+#endif
+
+#if defined __sparc__
+SO_DETACH_REUSEPORT_BPF        71
+#elif defined __hppa__
+SO_DETACH_REUSEPORT_BPF        16450
+#else
+SO_DETACH_REUSEPORT_BPF        68
+#endif
index 045fc5913db1d3716e23ba021724de0c0ac3e438..165e493c2ebd36fc4b9dc11cf74783455ba0eef5 100644 (file)
 
 # else
 
-static
-const struct xlat sock_packet_options[] = {
+static const struct xlat_data sock_packet_options_xdata[] = {
 #if defined(PACKET_ADD_MEMBERSHIP) || (defined(HAVE_DECL_PACKET_ADD_MEMBERSHIP) && HAVE_DECL_PACKET_ADD_MEMBERSHIP)
   XLAT(PACKET_ADD_MEMBERSHIP),
+ #define XLAT_VAL_0 ((unsigned) (PACKET_ADD_MEMBERSHIP))
+ #define XLAT_STR_0 STRINGIFY(PACKET_ADD_MEMBERSHIP)
 #endif
 #if defined(PACKET_DROP_MEMBERSHIP) || (defined(HAVE_DECL_PACKET_DROP_MEMBERSHIP) && HAVE_DECL_PACKET_DROP_MEMBERSHIP)
   XLAT(PACKET_DROP_MEMBERSHIP),
+ #define XLAT_VAL_1 ((unsigned) (PACKET_DROP_MEMBERSHIP))
+ #define XLAT_STR_1 STRINGIFY(PACKET_DROP_MEMBERSHIP)
 #endif
 #if defined(PACKET_RECV_OUTPUT) || (defined(HAVE_DECL_PACKET_RECV_OUTPUT) && HAVE_DECL_PACKET_RECV_OUTPUT)
   XLAT(PACKET_RECV_OUTPUT),
+ #define XLAT_VAL_2 ((unsigned) (PACKET_RECV_OUTPUT))
+ #define XLAT_STR_2 STRINGIFY(PACKET_RECV_OUTPUT)
 #endif
 #if defined(PACKET_RX_RING) || (defined(HAVE_DECL_PACKET_RX_RING) && HAVE_DECL_PACKET_RX_RING)
   XLAT(PACKET_RX_RING),
+ #define XLAT_VAL_3 ((unsigned) (PACKET_RX_RING))
+ #define XLAT_STR_3 STRINGIFY(PACKET_RX_RING)
 #endif
 #if defined(PACKET_STATISTICS) || (defined(HAVE_DECL_PACKET_STATISTICS) && HAVE_DECL_PACKET_STATISTICS)
   XLAT(PACKET_STATISTICS),
+ #define XLAT_VAL_4 ((unsigned) (PACKET_STATISTICS))
+ #define XLAT_STR_4 STRINGIFY(PACKET_STATISTICS)
 #endif
 #if defined(PACKET_COPY_THRESH) || (defined(HAVE_DECL_PACKET_COPY_THRESH) && HAVE_DECL_PACKET_COPY_THRESH)
   XLAT(PACKET_COPY_THRESH),
+ #define XLAT_VAL_5 ((unsigned) (PACKET_COPY_THRESH))
+ #define XLAT_STR_5 STRINGIFY(PACKET_COPY_THRESH)
 #endif
 #if defined(PACKET_AUXDATA) || (defined(HAVE_DECL_PACKET_AUXDATA) && HAVE_DECL_PACKET_AUXDATA)
   XLAT(PACKET_AUXDATA),
+ #define XLAT_VAL_6 ((unsigned) (PACKET_AUXDATA))
+ #define XLAT_STR_6 STRINGIFY(PACKET_AUXDATA)
 #endif
 #if defined(PACKET_ORIGDEV) || (defined(HAVE_DECL_PACKET_ORIGDEV) && HAVE_DECL_PACKET_ORIGDEV)
   XLAT(PACKET_ORIGDEV),
+ #define XLAT_VAL_7 ((unsigned) (PACKET_ORIGDEV))
+ #define XLAT_STR_7 STRINGIFY(PACKET_ORIGDEV)
 #endif
 #if defined(PACKET_VERSION) || (defined(HAVE_DECL_PACKET_VERSION) && HAVE_DECL_PACKET_VERSION)
   XLAT(PACKET_VERSION),
+ #define XLAT_VAL_8 ((unsigned) (PACKET_VERSION))
+ #define XLAT_STR_8 STRINGIFY(PACKET_VERSION)
 #endif
 #if defined(PACKET_HDRLEN) || (defined(HAVE_DECL_PACKET_HDRLEN) && HAVE_DECL_PACKET_HDRLEN)
   XLAT(PACKET_HDRLEN),
+ #define XLAT_VAL_9 ((unsigned) (PACKET_HDRLEN))
+ #define XLAT_STR_9 STRINGIFY(PACKET_HDRLEN)
 #endif
 #if defined(PACKET_RESERVE) || (defined(HAVE_DECL_PACKET_RESERVE) && HAVE_DECL_PACKET_RESERVE)
   XLAT(PACKET_RESERVE),
+ #define XLAT_VAL_10 ((unsigned) (PACKET_RESERVE))
+ #define XLAT_STR_10 STRINGIFY(PACKET_RESERVE)
 #endif
 #if defined(PACKET_TX_RING) || (defined(HAVE_DECL_PACKET_TX_RING) && HAVE_DECL_PACKET_TX_RING)
   XLAT(PACKET_TX_RING),
+ #define XLAT_VAL_11 ((unsigned) (PACKET_TX_RING))
+ #define XLAT_STR_11 STRINGIFY(PACKET_TX_RING)
 #endif
 #if defined(PACKET_LOSS) || (defined(HAVE_DECL_PACKET_LOSS) && HAVE_DECL_PACKET_LOSS)
   XLAT(PACKET_LOSS),
+ #define XLAT_VAL_12 ((unsigned) (PACKET_LOSS))
+ #define XLAT_STR_12 STRINGIFY(PACKET_LOSS)
 #endif
 #if defined(PACKET_VNET_HDR) || (defined(HAVE_DECL_PACKET_VNET_HDR) && HAVE_DECL_PACKET_VNET_HDR)
   XLAT(PACKET_VNET_HDR),
+ #define XLAT_VAL_13 ((unsigned) (PACKET_VNET_HDR))
+ #define XLAT_STR_13 STRINGIFY(PACKET_VNET_HDR)
 #endif
 #if defined(PACKET_TX_TIMESTAMP) || (defined(HAVE_DECL_PACKET_TX_TIMESTAMP) && HAVE_DECL_PACKET_TX_TIMESTAMP)
   XLAT(PACKET_TX_TIMESTAMP),
+ #define XLAT_VAL_14 ((unsigned) (PACKET_TX_TIMESTAMP))
+ #define XLAT_STR_14 STRINGIFY(PACKET_TX_TIMESTAMP)
 #endif
 #if defined(PACKET_TIMESTAMP) || (defined(HAVE_DECL_PACKET_TIMESTAMP) && HAVE_DECL_PACKET_TIMESTAMP)
   XLAT(PACKET_TIMESTAMP),
+ #define XLAT_VAL_15 ((unsigned) (PACKET_TIMESTAMP))
+ #define XLAT_STR_15 STRINGIFY(PACKET_TIMESTAMP)
 #endif
 #if defined(PACKET_FANOUT) || (defined(HAVE_DECL_PACKET_FANOUT) && HAVE_DECL_PACKET_FANOUT)
   XLAT(PACKET_FANOUT),
+ #define XLAT_VAL_16 ((unsigned) (PACKET_FANOUT))
+ #define XLAT_STR_16 STRINGIFY(PACKET_FANOUT)
 #endif
 #if defined(PACKET_TX_HAS_OFF) || (defined(HAVE_DECL_PACKET_TX_HAS_OFF) && HAVE_DECL_PACKET_TX_HAS_OFF)
   XLAT(PACKET_TX_HAS_OFF),
+ #define XLAT_VAL_17 ((unsigned) (PACKET_TX_HAS_OFF))
+ #define XLAT_STR_17 STRINGIFY(PACKET_TX_HAS_OFF)
 #endif
 #if defined(PACKET_QDISC_BYPASS) || (defined(HAVE_DECL_PACKET_QDISC_BYPASS) && HAVE_DECL_PACKET_QDISC_BYPASS)
   XLAT(PACKET_QDISC_BYPASS),
+ #define XLAT_VAL_18 ((unsigned) (PACKET_QDISC_BYPASS))
+ #define XLAT_STR_18 STRINGIFY(PACKET_QDISC_BYPASS)
 #endif
 #if defined(PACKET_ROLLOVER_STATS) || (defined(HAVE_DECL_PACKET_ROLLOVER_STATS) && HAVE_DECL_PACKET_ROLLOVER_STATS)
   XLAT(PACKET_ROLLOVER_STATS),
+ #define XLAT_VAL_19 ((unsigned) (PACKET_ROLLOVER_STATS))
+ #define XLAT_STR_19 STRINGIFY(PACKET_ROLLOVER_STATS)
 #endif
 #if defined(PACKET_FANOUT_DATA) || (defined(HAVE_DECL_PACKET_FANOUT_DATA) && HAVE_DECL_PACKET_FANOUT_DATA)
   XLAT(PACKET_FANOUT_DATA),
+ #define XLAT_VAL_20 ((unsigned) (PACKET_FANOUT_DATA))
+ #define XLAT_STR_20 STRINGIFY(PACKET_FANOUT_DATA)
 #endif
- XLAT_END
 };
+static
+const struct xlat sock_packet_options[1] = { {
+ .data = sock_packet_options_xdata,
+ .size = ARRAY_SIZE(sock_packet_options_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index d9083b321663d353b0c5ca868ceb92b50af2c225..649df980bbe07a3e1f77e679ba4db11c6df68174 100644 (file)
@@ -40,15 +40,63 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat sock_pnp_options[] = {
- XLAT(PNPIPE_ENCAP),
- XLAT(PNPIPE_IFINDEX),
- XLAT(PNPIPE_HANDLE),
- XLAT(PNPIPE_INITSTATE),
- XLAT_END
+static const struct xlat_data sock_pnp_options_xdata[] = {
+ [PNPIPE_ENCAP] = XLAT(PNPIPE_ENCAP),
+ #define XLAT_VAL_0 ((unsigned) (PNPIPE_ENCAP))
+ #define XLAT_STR_0 STRINGIFY(PNPIPE_ENCAP)
+ [PNPIPE_IFINDEX] = XLAT(PNPIPE_IFINDEX),
+ #define XLAT_VAL_1 ((unsigned) (PNPIPE_IFINDEX))
+ #define XLAT_STR_1 STRINGIFY(PNPIPE_IFINDEX)
+ [PNPIPE_HANDLE] = XLAT(PNPIPE_HANDLE),
+ #define XLAT_VAL_2 ((unsigned) (PNPIPE_HANDLE))
+ #define XLAT_STR_2 STRINGIFY(PNPIPE_HANDLE)
+ [PNPIPE_INITSTATE] = XLAT(PNPIPE_INITSTATE),
+ #define XLAT_VAL_3 ((unsigned) (PNPIPE_INITSTATE))
+ #define XLAT_STR_3 STRINGIFY(PNPIPE_INITSTATE)
 };
+static
+const struct xlat sock_pnp_options[1] = { {
+ .data = sock_pnp_options_xdata,
+ .size = ARRAY_SIZE(sock_pnp_options_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index a8d939c2e1e7a35ac6b79a1953b98ddaac9818e3..03d251b369ee71f05dcd07208fd4a64908091bc9 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 PNPIPE_ENCAP           1
 PNPIPE_IFINDEX         2
 PNPIPE_HANDLE          3
index 4f4064f90a0aaed88c2d44570ba6801552cb135b..258146572410e173b925d9abc423087f08953c7a 100644 (file)
@@ -47,16 +47,74 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat sock_pppol2tp_options[] = {
+static const struct xlat_data sock_pppol2tp_options_xdata[] = {
  [PPPOL2TP_SO_DEBUG] = XLAT(PPPOL2TP_SO_DEBUG),
+ #define XLAT_VAL_0 ((unsigned) (PPPOL2TP_SO_DEBUG))
+ #define XLAT_STR_0 STRINGIFY(PPPOL2TP_SO_DEBUG)
  [PPPOL2TP_SO_RECVSEQ] = XLAT(PPPOL2TP_SO_RECVSEQ),
+ #define XLAT_VAL_1 ((unsigned) (PPPOL2TP_SO_RECVSEQ))
+ #define XLAT_STR_1 STRINGIFY(PPPOL2TP_SO_RECVSEQ)
  [PPPOL2TP_SO_SENDSEQ] = XLAT(PPPOL2TP_SO_SENDSEQ),
+ #define XLAT_VAL_2 ((unsigned) (PPPOL2TP_SO_SENDSEQ))
+ #define XLAT_STR_2 STRINGIFY(PPPOL2TP_SO_SENDSEQ)
  [PPPOL2TP_SO_LNSMODE] = XLAT(PPPOL2TP_SO_LNSMODE),
+ #define XLAT_VAL_3 ((unsigned) (PPPOL2TP_SO_LNSMODE))
+ #define XLAT_STR_3 STRINGIFY(PPPOL2TP_SO_LNSMODE)
  [PPPOL2TP_SO_REORDERTO] = XLAT(PPPOL2TP_SO_REORDERTO),
- XLAT_END
+ #define XLAT_VAL_4 ((unsigned) (PPPOL2TP_SO_REORDERTO))
+ #define XLAT_STR_4 STRINGIFY(PPPOL2TP_SO_REORDERTO)
 };
+static
+const struct xlat sock_pppol2tp_options[1] = { {
+ .data = sock_pppol2tp_options_xdata,
+ .size = ARRAY_SIZE(sock_pppol2tp_options_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index e69998c774068b43549a043f8a45f5d81b4c377f..afa0aeb3c6c804449d4ee3abb728b194e6917059 100644 (file)
 
 # else
 
-static
-const struct xlat sock_raw_options[] = {
+static const struct xlat_data sock_raw_options_xdata[] = {
 #if defined(ICMP_FILTER) || (defined(HAVE_DECL_ICMP_FILTER) && HAVE_DECL_ICMP_FILTER)
   XLAT(ICMP_FILTER),
+ #define XLAT_VAL_0 ((unsigned) (ICMP_FILTER))
+ #define XLAT_STR_0 STRINGIFY(ICMP_FILTER)
 #endif
- XLAT_END
 };
-
+static
+const struct xlat sock_raw_options[1] = { {
+ .data = sock_raw_options_xdata,
+ .size = ARRAY_SIZE(sock_raw_options_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index f76a56b2bbebe1e6570b8bff9b3e0e91ea2c1a1c..3b2b926d0655b6b3bea59e0b5f9ebaa0f476aa23 100644 (file)
@@ -170,40 +170,268 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat sock_rds_options[] = {
+static const struct xlat_data sock_rds_options_xdata[] = {
  XLAT(RDS_CANCEL_SENT_TO),
+ #define XLAT_VAL_0 ((unsigned) (RDS_CANCEL_SENT_TO))
+ #define XLAT_STR_0 STRINGIFY(RDS_CANCEL_SENT_TO)
  XLAT(RDS_GET_MR),
+ #define XLAT_VAL_1 ((unsigned) (RDS_GET_MR))
+ #define XLAT_STR_1 STRINGIFY(RDS_GET_MR)
  XLAT(RDS_FREE_MR),
+ #define XLAT_VAL_2 ((unsigned) (RDS_FREE_MR))
+ #define XLAT_STR_2 STRINGIFY(RDS_FREE_MR)
  XLAT(RDS_BARRIER),
+ #define XLAT_VAL_3 ((unsigned) (RDS_BARRIER))
+ #define XLAT_STR_3 STRINGIFY(RDS_BARRIER)
  XLAT(RDS_RECVERR),
+ #define XLAT_VAL_4 ((unsigned) (RDS_RECVERR))
+ #define XLAT_STR_4 STRINGIFY(RDS_RECVERR)
  XLAT(RDS_CONG_MONITOR),
+ #define XLAT_VAL_5 ((unsigned) (RDS_CONG_MONITOR))
+ #define XLAT_STR_5 STRINGIFY(RDS_CONG_MONITOR)
  XLAT(RDS_GET_MR_FOR_DEST),
+ #define XLAT_VAL_6 ((unsigned) (RDS_GET_MR_FOR_DEST))
+ #define XLAT_STR_6 STRINGIFY(RDS_GET_MR_FOR_DEST)
  XLAT(SO_RDS_TRANSPORT),
+ #define XLAT_VAL_7 ((unsigned) (SO_RDS_TRANSPORT))
+ #define XLAT_STR_7 STRINGIFY(SO_RDS_TRANSPORT)
  XLAT(SO_RDS_MSG_RXPATH_LATENCY),
+ #define XLAT_VAL_8 ((unsigned) (SO_RDS_MSG_RXPATH_LATENCY))
+ #define XLAT_STR_8 STRINGIFY(SO_RDS_MSG_RXPATH_LATENCY)
 
 #ifndef __hppa__
  XLAT(SO_TIMESTAMP_OLD),
+ #define XLAT_VAL_9 ((unsigned) (SO_TIMESTAMP_OLD))
+ #define XLAT_STR_9 STRINGIFY(SO_TIMESTAMP_OLD)
 #endif
 
  XLAT(RDS_INFO_COUNTERS),
+ #define XLAT_VAL_10 ((unsigned) (RDS_INFO_COUNTERS))
+ #define XLAT_STR_10 STRINGIFY(RDS_INFO_COUNTERS)
  XLAT(RDS_INFO_CONNECTIONS),
+ #define XLAT_VAL_11 ((unsigned) (RDS_INFO_CONNECTIONS))
+ #define XLAT_STR_11 STRINGIFY(RDS_INFO_CONNECTIONS)
  XLAT(RDS_INFO_FLOWS),
+ #define XLAT_VAL_12 ((unsigned) (RDS_INFO_FLOWS))
+ #define XLAT_STR_12 STRINGIFY(RDS_INFO_FLOWS)
  XLAT(RDS_INFO_SEND_MESSAGES),
+ #define XLAT_VAL_13 ((unsigned) (RDS_INFO_SEND_MESSAGES))
+ #define XLAT_STR_13 STRINGIFY(RDS_INFO_SEND_MESSAGES)
  XLAT(RDS_INFO_RETRANS_MESSAGES),
+ #define XLAT_VAL_14 ((unsigned) (RDS_INFO_RETRANS_MESSAGES))
+ #define XLAT_STR_14 STRINGIFY(RDS_INFO_RETRANS_MESSAGES)
  XLAT(RDS_INFO_RECV_MESSAGES),
+ #define XLAT_VAL_15 ((unsigned) (RDS_INFO_RECV_MESSAGES))
+ #define XLAT_STR_15 STRINGIFY(RDS_INFO_RECV_MESSAGES)
  XLAT(RDS_INFO_SOCKETS),
+ #define XLAT_VAL_16 ((unsigned) (RDS_INFO_SOCKETS))
+ #define XLAT_STR_16 STRINGIFY(RDS_INFO_SOCKETS)
  XLAT(RDS_INFO_TCP_SOCKETS),
+ #define XLAT_VAL_17 ((unsigned) (RDS_INFO_TCP_SOCKETS))
+ #define XLAT_STR_17 STRINGIFY(RDS_INFO_TCP_SOCKETS)
  XLAT(RDS_INFO_IB_CONNECTIONS),
+ #define XLAT_VAL_18 ((unsigned) (RDS_INFO_IB_CONNECTIONS))
+ #define XLAT_STR_18 STRINGIFY(RDS_INFO_IB_CONNECTIONS)
  XLAT(RDS_INFO_CONNECTION_STATS),
+ #define XLAT_VAL_19 ((unsigned) (RDS_INFO_CONNECTION_STATS))
+ #define XLAT_STR_19 STRINGIFY(RDS_INFO_CONNECTION_STATS)
  XLAT(RDS_INFO_IWARP_CONNECTIONS),
+ #define XLAT_VAL_20 ((unsigned) (RDS_INFO_IWARP_CONNECTIONS))
+ #define XLAT_STR_20 STRINGIFY(RDS_INFO_IWARP_CONNECTIONS)
 
 #ifdef __hppa__
  XLAT(SO_TIMESTAMP_OLD),
+ #define XLAT_VAL_21 ((unsigned) (SO_TIMESTAMP_OLD))
+ #define XLAT_STR_21 STRINGIFY(SO_TIMESTAMP_OLD)
 #endif
- XLAT_END
 };
+static
+const struct xlat sock_rds_options[1] = { {
+ .data = sock_rds_options_xdata,
+ .size = ARRAY_SIZE(sock_rds_options_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index a7ab59ac23630acee11481ee0b2670097097a448..5122882c0a608a51b2e137e49faf850aedd126a1 100644 (file)
@@ -54,17 +54,85 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat sock_rxrpc_options[] = {
+static const struct xlat_data sock_rxrpc_options_xdata[] = {
  [RXRPC_SECURITY_KEY] = XLAT(RXRPC_SECURITY_KEY),
+ #define XLAT_VAL_0 ((unsigned) (RXRPC_SECURITY_KEY))
+ #define XLAT_STR_0 STRINGIFY(RXRPC_SECURITY_KEY)
  [RXRPC_SECURITY_KEYRING] = XLAT(RXRPC_SECURITY_KEYRING),
+ #define XLAT_VAL_1 ((unsigned) (RXRPC_SECURITY_KEYRING))
+ #define XLAT_STR_1 STRINGIFY(RXRPC_SECURITY_KEYRING)
  [RXRPC_EXCLUSIVE_CONNECTION] = XLAT(RXRPC_EXCLUSIVE_CONNECTION),
+ #define XLAT_VAL_2 ((unsigned) (RXRPC_EXCLUSIVE_CONNECTION))
+ #define XLAT_STR_2 STRINGIFY(RXRPC_EXCLUSIVE_CONNECTION)
  [RXRPC_MIN_SECURITY_LEVEL] = XLAT(RXRPC_MIN_SECURITY_LEVEL),
+ #define XLAT_VAL_3 ((unsigned) (RXRPC_MIN_SECURITY_LEVEL))
+ #define XLAT_STR_3 STRINGIFY(RXRPC_MIN_SECURITY_LEVEL)
  [RXRPC_UPGRADEABLE_SERVICE] = XLAT(RXRPC_UPGRADEABLE_SERVICE),
+ #define XLAT_VAL_4 ((unsigned) (RXRPC_UPGRADEABLE_SERVICE))
+ #define XLAT_STR_4 STRINGIFY(RXRPC_UPGRADEABLE_SERVICE)
  [RXRPC_SUPPORTED_CMSG] = XLAT(RXRPC_SUPPORTED_CMSG),
- XLAT_END
+ #define XLAT_VAL_5 ((unsigned) (RXRPC_SUPPORTED_CMSG))
+ #define XLAT_STR_5 STRINGIFY(RXRPC_SUPPORTED_CMSG)
 };
+static
+const struct xlat sock_rxrpc_options[1] = { {
+ .data = sock_rxrpc_options_xdata,
+ .size = ARRAY_SIZE(sock_rxrpc_options_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 766c225177b47ccf03fba61b804a4b487134a642..5c2fa99d4ba0a900cb8def9347ea21fe287b9177 100644 (file)
@@ -262,6 +262,13 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define SCTP_REUSE_PORT 36
 #endif
+#if defined(SCTP_PEER_ADDR_THLDS_V2) || (defined(HAVE_DECL_SCTP_PEER_ADDR_THLDS_V2) && HAVE_DECL_SCTP_PEER_ADDR_THLDS_V2)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((SCTP_PEER_ADDR_THLDS_V2) == (37), "SCTP_PEER_ADDR_THLDS_V2 != 37");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define SCTP_PEER_ADDR_THLDS_V2 37
+#endif
 #if defined(SCTP_SOCKOPT_BINDX_ADD) || (defined(HAVE_DECL_SCTP_SOCKOPT_BINDX_ADD) && HAVE_DECL_SCTP_SOCKOPT_BINDX_ADD)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
 static_assert((SCTP_SOCKOPT_BINDX_ADD) == (100), "SCTP_SOCKOPT_BINDX_ADD != 100");
@@ -458,6 +465,34 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define SCTP_EVENT 127
 #endif
+#if defined(SCTP_ASCONF_SUPPORTED) || (defined(HAVE_DECL_SCTP_ASCONF_SUPPORTED) && HAVE_DECL_SCTP_ASCONF_SUPPORTED)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((SCTP_ASCONF_SUPPORTED) == (128), "SCTP_ASCONF_SUPPORTED != 128");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define SCTP_ASCONF_SUPPORTED 128
+#endif
+#if defined(SCTP_AUTH_SUPPORTED) || (defined(HAVE_DECL_SCTP_AUTH_SUPPORTED) && HAVE_DECL_SCTP_AUTH_SUPPORTED)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((SCTP_AUTH_SUPPORTED) == (129), "SCTP_AUTH_SUPPORTED != 129");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define SCTP_AUTH_SUPPORTED 129
+#endif
+#if defined(SCTP_ECN_SUPPORTED) || (defined(HAVE_DECL_SCTP_ECN_SUPPORTED) && HAVE_DECL_SCTP_ECN_SUPPORTED)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((SCTP_ECN_SUPPORTED) == (130), "SCTP_ECN_SUPPORTED != 130");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define SCTP_ECN_SUPPORTED 130
+#endif
+#if defined(SCTP_EXPOSE_POTENTIALLY_FAILED_STATE) || (defined(HAVE_DECL_SCTP_EXPOSE_POTENTIALLY_FAILED_STATE) && HAVE_DECL_SCTP_EXPOSE_POTENTIALLY_FAILED_STATE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((SCTP_EXPOSE_POTENTIALLY_FAILED_STATE) == (131), "SCTP_EXPOSE_POTENTIALLY_FAILED_STATE != 131");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define SCTP_EXPOSE_POTENTIALLY_FAILED_STATE 131
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
@@ -467,77 +502,790 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat sock_sctp_options[] = {
+static const struct xlat_data sock_sctp_options_xdata[] = {
  XLAT(SCTP_RTOINFO),
+ #define XLAT_VAL_0 ((unsigned) (SCTP_RTOINFO))
+ #define XLAT_STR_0 STRINGIFY(SCTP_RTOINFO)
  XLAT(SCTP_ASSOCINFO),
+ #define XLAT_VAL_1 ((unsigned) (SCTP_ASSOCINFO))
+ #define XLAT_STR_1 STRINGIFY(SCTP_ASSOCINFO)
  XLAT(SCTP_INITMSG),
+ #define XLAT_VAL_2 ((unsigned) (SCTP_INITMSG))
+ #define XLAT_STR_2 STRINGIFY(SCTP_INITMSG)
  XLAT(SCTP_NODELAY),
+ #define XLAT_VAL_3 ((unsigned) (SCTP_NODELAY))
+ #define XLAT_STR_3 STRINGIFY(SCTP_NODELAY)
  XLAT(SCTP_AUTOCLOSE),
+ #define XLAT_VAL_4 ((unsigned) (SCTP_AUTOCLOSE))
+ #define XLAT_STR_4 STRINGIFY(SCTP_AUTOCLOSE)
  XLAT(SCTP_SET_PEER_PRIMARY_ADDR),
+ #define XLAT_VAL_5 ((unsigned) (SCTP_SET_PEER_PRIMARY_ADDR))
+ #define XLAT_STR_5 STRINGIFY(SCTP_SET_PEER_PRIMARY_ADDR)
  XLAT(SCTP_PRIMARY_ADDR),
+ #define XLAT_VAL_6 ((unsigned) (SCTP_PRIMARY_ADDR))
+ #define XLAT_STR_6 STRINGIFY(SCTP_PRIMARY_ADDR)
  XLAT(SCTP_ADAPTATION_LAYER),
+ #define XLAT_VAL_7 ((unsigned) (SCTP_ADAPTATION_LAYER))
+ #define XLAT_STR_7 STRINGIFY(SCTP_ADAPTATION_LAYER)
  XLAT(SCTP_DISABLE_FRAGMENTS),
+ #define XLAT_VAL_8 ((unsigned) (SCTP_DISABLE_FRAGMENTS))
+ #define XLAT_STR_8 STRINGIFY(SCTP_DISABLE_FRAGMENTS)
  XLAT(SCTP_PEER_ADDR_PARAMS),
+ #define XLAT_VAL_9 ((unsigned) (SCTP_PEER_ADDR_PARAMS))
+ #define XLAT_STR_9 STRINGIFY(SCTP_PEER_ADDR_PARAMS)
  XLAT(SCTP_DEFAULT_SEND_PARAM),
+ #define XLAT_VAL_10 ((unsigned) (SCTP_DEFAULT_SEND_PARAM))
+ #define XLAT_STR_10 STRINGIFY(SCTP_DEFAULT_SEND_PARAM)
  XLAT(SCTP_EVENTS),
+ #define XLAT_VAL_11 ((unsigned) (SCTP_EVENTS))
+ #define XLAT_STR_11 STRINGIFY(SCTP_EVENTS)
  XLAT(SCTP_I_WANT_MAPPED_V4_ADDR),
+ #define XLAT_VAL_12 ((unsigned) (SCTP_I_WANT_MAPPED_V4_ADDR))
+ #define XLAT_STR_12 STRINGIFY(SCTP_I_WANT_MAPPED_V4_ADDR)
  XLAT(SCTP_MAXSEG),
+ #define XLAT_VAL_13 ((unsigned) (SCTP_MAXSEG))
+ #define XLAT_STR_13 STRINGIFY(SCTP_MAXSEG)
  XLAT(SCTP_STATUS),
+ #define XLAT_VAL_14 ((unsigned) (SCTP_STATUS))
+ #define XLAT_STR_14 STRINGIFY(SCTP_STATUS)
  XLAT(SCTP_GET_PEER_ADDR_INFO),
+ #define XLAT_VAL_15 ((unsigned) (SCTP_GET_PEER_ADDR_INFO))
+ #define XLAT_STR_15 STRINGIFY(SCTP_GET_PEER_ADDR_INFO)
  XLAT(SCTP_DELAYED_SACK),
+ #define XLAT_VAL_16 ((unsigned) (SCTP_DELAYED_SACK))
+ #define XLAT_STR_16 STRINGIFY(SCTP_DELAYED_SACK)
  XLAT(SCTP_CONTEXT),
+ #define XLAT_VAL_17 ((unsigned) (SCTP_CONTEXT))
+ #define XLAT_STR_17 STRINGIFY(SCTP_CONTEXT)
  XLAT(SCTP_FRAGMENT_INTERLEAVE),
+ #define XLAT_VAL_18 ((unsigned) (SCTP_FRAGMENT_INTERLEAVE))
+ #define XLAT_STR_18 STRINGIFY(SCTP_FRAGMENT_INTERLEAVE)
  XLAT(SCTP_PARTIAL_DELIVERY_POINT),
+ #define XLAT_VAL_19 ((unsigned) (SCTP_PARTIAL_DELIVERY_POINT))
+ #define XLAT_STR_19 STRINGIFY(SCTP_PARTIAL_DELIVERY_POINT)
  XLAT(SCTP_MAX_BURST),
+ #define XLAT_VAL_20 ((unsigned) (SCTP_MAX_BURST))
+ #define XLAT_STR_20 STRINGIFY(SCTP_MAX_BURST)
  XLAT(SCTP_AUTH_CHUNK),
+ #define XLAT_VAL_21 ((unsigned) (SCTP_AUTH_CHUNK))
+ #define XLAT_STR_21 STRINGIFY(SCTP_AUTH_CHUNK)
  XLAT(SCTP_HMAC_IDENT),
+ #define XLAT_VAL_22 ((unsigned) (SCTP_HMAC_IDENT))
+ #define XLAT_STR_22 STRINGIFY(SCTP_HMAC_IDENT)
  XLAT(SCTP_AUTH_KEY),
+ #define XLAT_VAL_23 ((unsigned) (SCTP_AUTH_KEY))
+ #define XLAT_STR_23 STRINGIFY(SCTP_AUTH_KEY)
  XLAT(SCTP_AUTH_ACTIVE_KEY),
+ #define XLAT_VAL_24 ((unsigned) (SCTP_AUTH_ACTIVE_KEY))
+ #define XLAT_STR_24 STRINGIFY(SCTP_AUTH_ACTIVE_KEY)
  XLAT(SCTP_AUTH_DELETE_KEY),
+ #define XLAT_VAL_25 ((unsigned) (SCTP_AUTH_DELETE_KEY))
+ #define XLAT_STR_25 STRINGIFY(SCTP_AUTH_DELETE_KEY)
  XLAT(SCTP_PEER_AUTH_CHUNKS),
+ #define XLAT_VAL_26 ((unsigned) (SCTP_PEER_AUTH_CHUNKS))
+ #define XLAT_STR_26 STRINGIFY(SCTP_PEER_AUTH_CHUNKS)
  XLAT(SCTP_LOCAL_AUTH_CHUNKS),
+ #define XLAT_VAL_27 ((unsigned) (SCTP_LOCAL_AUTH_CHUNKS))
+ #define XLAT_STR_27 STRINGIFY(SCTP_LOCAL_AUTH_CHUNKS)
  XLAT(SCTP_GET_ASSOC_NUMBER),
+ #define XLAT_VAL_28 ((unsigned) (SCTP_GET_ASSOC_NUMBER))
+ #define XLAT_STR_28 STRINGIFY(SCTP_GET_ASSOC_NUMBER)
  XLAT(SCTP_GET_ASSOC_ID_LIST),
+ #define XLAT_VAL_29 ((unsigned) (SCTP_GET_ASSOC_ID_LIST))
+ #define XLAT_STR_29 STRINGIFY(SCTP_GET_ASSOC_ID_LIST)
  XLAT(SCTP_AUTO_ASCONF),
+ #define XLAT_VAL_30 ((unsigned) (SCTP_AUTO_ASCONF))
+ #define XLAT_STR_30 STRINGIFY(SCTP_AUTO_ASCONF)
  XLAT(SCTP_PEER_ADDR_THLDS),
+ #define XLAT_VAL_31 ((unsigned) (SCTP_PEER_ADDR_THLDS))
+ #define XLAT_STR_31 STRINGIFY(SCTP_PEER_ADDR_THLDS)
  XLAT(SCTP_RECVRCVINFO),
+ #define XLAT_VAL_32 ((unsigned) (SCTP_RECVRCVINFO))
+ #define XLAT_STR_32 STRINGIFY(SCTP_RECVRCVINFO)
  XLAT(SCTP_RECVNXTINFO),
+ #define XLAT_VAL_33 ((unsigned) (SCTP_RECVNXTINFO))
+ #define XLAT_STR_33 STRINGIFY(SCTP_RECVNXTINFO)
  XLAT(SCTP_DEFAULT_SNDINFO),
+ #define XLAT_VAL_34 ((unsigned) (SCTP_DEFAULT_SNDINFO))
+ #define XLAT_STR_34 STRINGIFY(SCTP_DEFAULT_SNDINFO)
  XLAT(SCTP_AUTH_DEACTIVATE_KEY),
+ #define XLAT_VAL_35 ((unsigned) (SCTP_AUTH_DEACTIVATE_KEY))
+ #define XLAT_STR_35 STRINGIFY(SCTP_AUTH_DEACTIVATE_KEY)
  XLAT(SCTP_REUSE_PORT),
+ #define XLAT_VAL_36 ((unsigned) (SCTP_REUSE_PORT))
+ #define XLAT_STR_36 STRINGIFY(SCTP_REUSE_PORT)
+ XLAT(SCTP_PEER_ADDR_THLDS_V2),
+ #define XLAT_VAL_37 ((unsigned) (SCTP_PEER_ADDR_THLDS_V2))
+ #define XLAT_STR_37 STRINGIFY(SCTP_PEER_ADDR_THLDS_V2)
 
  XLAT(SCTP_SOCKOPT_BINDX_ADD),
+ #define XLAT_VAL_38 ((unsigned) (SCTP_SOCKOPT_BINDX_ADD))
+ #define XLAT_STR_38 STRINGIFY(SCTP_SOCKOPT_BINDX_ADD)
  XLAT(SCTP_SOCKOPT_BINDX_REM),
+ #define XLAT_VAL_39 ((unsigned) (SCTP_SOCKOPT_BINDX_REM))
+ #define XLAT_STR_39 STRINGIFY(SCTP_SOCKOPT_BINDX_REM)
  XLAT(SCTP_SOCKOPT_PEELOFF),
+ #define XLAT_VAL_40 ((unsigned) (SCTP_SOCKOPT_PEELOFF))
+ #define XLAT_STR_40 STRINGIFY(SCTP_SOCKOPT_PEELOFF)
  XLAT(SCTP_GET_PEER_ADDRS_NUM_OLD),
+ #define XLAT_VAL_41 ((unsigned) (SCTP_GET_PEER_ADDRS_NUM_OLD))
+ #define XLAT_STR_41 STRINGIFY(SCTP_GET_PEER_ADDRS_NUM_OLD)
  XLAT(SCTP_GET_PEER_ADDRS_OLD),
+ #define XLAT_VAL_42 ((unsigned) (SCTP_GET_PEER_ADDRS_OLD))
+ #define XLAT_STR_42 STRINGIFY(SCTP_GET_PEER_ADDRS_OLD)
  XLAT(SCTP_GET_LOCAL_ADDRS_NUM_OLD),
+ #define XLAT_VAL_43 ((unsigned) (SCTP_GET_LOCAL_ADDRS_NUM_OLD))
+ #define XLAT_STR_43 STRINGIFY(SCTP_GET_LOCAL_ADDRS_NUM_OLD)
  XLAT(SCTP_GET_LOCAL_ADDRS_OLD),
+ #define XLAT_VAL_44 ((unsigned) (SCTP_GET_LOCAL_ADDRS_OLD))
+ #define XLAT_STR_44 STRINGIFY(SCTP_GET_LOCAL_ADDRS_OLD)
  XLAT(SCTP_SOCKOPT_CONNECTX_OLD),
+ #define XLAT_VAL_45 ((unsigned) (SCTP_SOCKOPT_CONNECTX_OLD))
+ #define XLAT_STR_45 STRINGIFY(SCTP_SOCKOPT_CONNECTX_OLD)
  XLAT(SCTP_GET_PEER_ADDRS),
+ #define XLAT_VAL_46 ((unsigned) (SCTP_GET_PEER_ADDRS))
+ #define XLAT_STR_46 STRINGIFY(SCTP_GET_PEER_ADDRS)
  XLAT(SCTP_GET_LOCAL_ADDRS),
+ #define XLAT_VAL_47 ((unsigned) (SCTP_GET_LOCAL_ADDRS))
+ #define XLAT_STR_47 STRINGIFY(SCTP_GET_LOCAL_ADDRS)
  XLAT(SCTP_SOCKOPT_CONNECTX),
+ #define XLAT_VAL_48 ((unsigned) (SCTP_SOCKOPT_CONNECTX))
+ #define XLAT_STR_48 STRINGIFY(SCTP_SOCKOPT_CONNECTX)
  XLAT(SCTP_SOCKOPT_CONNECTX3),
+ #define XLAT_VAL_49 ((unsigned) (SCTP_SOCKOPT_CONNECTX3))
+ #define XLAT_STR_49 STRINGIFY(SCTP_SOCKOPT_CONNECTX3)
  XLAT(SCTP_GET_ASSOC_STATS),
+ #define XLAT_VAL_50 ((unsigned) (SCTP_GET_ASSOC_STATS))
+ #define XLAT_STR_50 STRINGIFY(SCTP_GET_ASSOC_STATS)
  XLAT(SCTP_PR_SUPPORTED),
+ #define XLAT_VAL_51 ((unsigned) (SCTP_PR_SUPPORTED))
+ #define XLAT_STR_51 STRINGIFY(SCTP_PR_SUPPORTED)
  XLAT(SCTP_DEFAULT_PRINFO),
+ #define XLAT_VAL_52 ((unsigned) (SCTP_DEFAULT_PRINFO))
+ #define XLAT_STR_52 STRINGIFY(SCTP_DEFAULT_PRINFO)
  XLAT(SCTP_PR_ASSOC_STATUS),
+ #define XLAT_VAL_53 ((unsigned) (SCTP_PR_ASSOC_STATUS))
+ #define XLAT_STR_53 STRINGIFY(SCTP_PR_ASSOC_STATUS)
  XLAT(SCTP_PR_STREAM_STATUS),
+ #define XLAT_VAL_54 ((unsigned) (SCTP_PR_STREAM_STATUS))
+ #define XLAT_STR_54 STRINGIFY(SCTP_PR_STREAM_STATUS)
  XLAT(SCTP_RECONFIG_SUPPORTED),
+ #define XLAT_VAL_55 ((unsigned) (SCTP_RECONFIG_SUPPORTED))
+ #define XLAT_STR_55 STRINGIFY(SCTP_RECONFIG_SUPPORTED)
  XLAT(SCTP_ENABLE_STREAM_RESET),
+ #define XLAT_VAL_56 ((unsigned) (SCTP_ENABLE_STREAM_RESET))
+ #define XLAT_STR_56 STRINGIFY(SCTP_ENABLE_STREAM_RESET)
  XLAT(SCTP_RESET_STREAMS),
+ #define XLAT_VAL_57 ((unsigned) (SCTP_RESET_STREAMS))
+ #define XLAT_STR_57 STRINGIFY(SCTP_RESET_STREAMS)
  XLAT(SCTP_RESET_ASSOC),
+ #define XLAT_VAL_58 ((unsigned) (SCTP_RESET_ASSOC))
+ #define XLAT_STR_58 STRINGIFY(SCTP_RESET_ASSOC)
  XLAT(SCTP_ADD_STREAMS),
+ #define XLAT_VAL_59 ((unsigned) (SCTP_ADD_STREAMS))
+ #define XLAT_STR_59 STRINGIFY(SCTP_ADD_STREAMS)
  XLAT(SCTP_SOCKOPT_PEELOFF_FLAGS),
+ #define XLAT_VAL_60 ((unsigned) (SCTP_SOCKOPT_PEELOFF_FLAGS))
+ #define XLAT_STR_60 STRINGIFY(SCTP_SOCKOPT_PEELOFF_FLAGS)
  XLAT(SCTP_STREAM_SCHEDULER),
+ #define XLAT_VAL_61 ((unsigned) (SCTP_STREAM_SCHEDULER))
+ #define XLAT_STR_61 STRINGIFY(SCTP_STREAM_SCHEDULER)
  XLAT(SCTP_STREAM_SCHEDULER_VALUE),
+ #define XLAT_VAL_62 ((unsigned) (SCTP_STREAM_SCHEDULER_VALUE))
+ #define XLAT_STR_62 STRINGIFY(SCTP_STREAM_SCHEDULER_VALUE)
  XLAT(SCTP_INTERLEAVING_SUPPORTED),
+ #define XLAT_VAL_63 ((unsigned) (SCTP_INTERLEAVING_SUPPORTED))
+ #define XLAT_STR_63 STRINGIFY(SCTP_INTERLEAVING_SUPPORTED)
  XLAT(SCTP_SENDMSG_CONNECT),
+ #define XLAT_VAL_64 ((unsigned) (SCTP_SENDMSG_CONNECT))
+ #define XLAT_STR_64 STRINGIFY(SCTP_SENDMSG_CONNECT)
  XLAT(SCTP_EVENT),
- XLAT_END
+ #define XLAT_VAL_65 ((unsigned) (SCTP_EVENT))
+ #define XLAT_STR_65 STRINGIFY(SCTP_EVENT)
+ XLAT(SCTP_ASCONF_SUPPORTED),
+ #define XLAT_VAL_66 ((unsigned) (SCTP_ASCONF_SUPPORTED))
+ #define XLAT_STR_66 STRINGIFY(SCTP_ASCONF_SUPPORTED)
+ XLAT(SCTP_AUTH_SUPPORTED),
+ #define XLAT_VAL_67 ((unsigned) (SCTP_AUTH_SUPPORTED))
+ #define XLAT_STR_67 STRINGIFY(SCTP_AUTH_SUPPORTED)
+ XLAT(SCTP_ECN_SUPPORTED),
+ #define XLAT_VAL_68 ((unsigned) (SCTP_ECN_SUPPORTED))
+ #define XLAT_STR_68 STRINGIFY(SCTP_ECN_SUPPORTED)
+ XLAT(SCTP_EXPOSE_POTENTIALLY_FAILED_STATE),
+ #define XLAT_VAL_69 ((unsigned) (SCTP_EXPOSE_POTENTIALLY_FAILED_STATE))
+ #define XLAT_STR_69 STRINGIFY(SCTP_EXPOSE_POTENTIALLY_FAILED_STATE)
 };
+static
+const struct xlat sock_sctp_options[1] = { {
+ .data = sock_sctp_options_xdata,
+ .size = ARRAY_SIZE(sock_sctp_options_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+#  ifdef XLAT_VAL_30
+  | XLAT_VAL_30
+#  endif
+#  ifdef XLAT_VAL_31
+  | XLAT_VAL_31
+#  endif
+#  ifdef XLAT_VAL_32
+  | XLAT_VAL_32
+#  endif
+#  ifdef XLAT_VAL_33
+  | XLAT_VAL_33
+#  endif
+#  ifdef XLAT_VAL_34
+  | XLAT_VAL_34
+#  endif
+#  ifdef XLAT_VAL_35
+  | XLAT_VAL_35
+#  endif
+#  ifdef XLAT_VAL_36
+  | XLAT_VAL_36
+#  endif
+#  ifdef XLAT_VAL_37
+  | XLAT_VAL_37
+#  endif
+#  ifdef XLAT_VAL_38
+  | XLAT_VAL_38
+#  endif
+#  ifdef XLAT_VAL_39
+  | XLAT_VAL_39
+#  endif
+#  ifdef XLAT_VAL_40
+  | XLAT_VAL_40
+#  endif
+#  ifdef XLAT_VAL_41
+  | XLAT_VAL_41
+#  endif
+#  ifdef XLAT_VAL_42
+  | XLAT_VAL_42
+#  endif
+#  ifdef XLAT_VAL_43
+  | XLAT_VAL_43
+#  endif
+#  ifdef XLAT_VAL_44
+  | XLAT_VAL_44
+#  endif
+#  ifdef XLAT_VAL_45
+  | XLAT_VAL_45
+#  endif
+#  ifdef XLAT_VAL_46
+  | XLAT_VAL_46
+#  endif
+#  ifdef XLAT_VAL_47
+  | XLAT_VAL_47
+#  endif
+#  ifdef XLAT_VAL_48
+  | XLAT_VAL_48
+#  endif
+#  ifdef XLAT_VAL_49
+  | XLAT_VAL_49
+#  endif
+#  ifdef XLAT_VAL_50
+  | XLAT_VAL_50
+#  endif
+#  ifdef XLAT_VAL_51
+  | XLAT_VAL_51
+#  endif
+#  ifdef XLAT_VAL_52
+  | XLAT_VAL_52
+#  endif
+#  ifdef XLAT_VAL_53
+  | XLAT_VAL_53
+#  endif
+#  ifdef XLAT_VAL_54
+  | XLAT_VAL_54
+#  endif
+#  ifdef XLAT_VAL_55
+  | XLAT_VAL_55
+#  endif
+#  ifdef XLAT_VAL_56
+  | XLAT_VAL_56
+#  endif
+#  ifdef XLAT_VAL_57
+  | XLAT_VAL_57
+#  endif
+#  ifdef XLAT_VAL_58
+  | XLAT_VAL_58
+#  endif
+#  ifdef XLAT_VAL_59
+  | XLAT_VAL_59
+#  endif
+#  ifdef XLAT_VAL_60
+  | XLAT_VAL_60
+#  endif
+#  ifdef XLAT_VAL_61
+  | XLAT_VAL_61
+#  endif
+#  ifdef XLAT_VAL_62
+  | XLAT_VAL_62
+#  endif
+#  ifdef XLAT_VAL_63
+  | XLAT_VAL_63
+#  endif
+#  ifdef XLAT_VAL_64
+  | XLAT_VAL_64
+#  endif
+#  ifdef XLAT_VAL_65
+  | XLAT_VAL_65
+#  endif
+#  ifdef XLAT_VAL_66
+  | XLAT_VAL_66
+#  endif
+#  ifdef XLAT_VAL_67
+  | XLAT_VAL_67
+#  endif
+#  ifdef XLAT_VAL_68
+  | XLAT_VAL_68
+#  endif
+#  ifdef XLAT_VAL_69
+  | XLAT_VAL_69
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+#  ifdef XLAT_STR_30
+  + sizeof(XLAT_STR_30)
+#  endif
+#  ifdef XLAT_STR_31
+  + sizeof(XLAT_STR_31)
+#  endif
+#  ifdef XLAT_STR_32
+  + sizeof(XLAT_STR_32)
+#  endif
+#  ifdef XLAT_STR_33
+  + sizeof(XLAT_STR_33)
+#  endif
+#  ifdef XLAT_STR_34
+  + sizeof(XLAT_STR_34)
+#  endif
+#  ifdef XLAT_STR_35
+  + sizeof(XLAT_STR_35)
+#  endif
+#  ifdef XLAT_STR_36
+  + sizeof(XLAT_STR_36)
+#  endif
+#  ifdef XLAT_STR_37
+  + sizeof(XLAT_STR_37)
+#  endif
+#  ifdef XLAT_STR_38
+  + sizeof(XLAT_STR_38)
+#  endif
+#  ifdef XLAT_STR_39
+  + sizeof(XLAT_STR_39)
+#  endif
+#  ifdef XLAT_STR_40
+  + sizeof(XLAT_STR_40)
+#  endif
+#  ifdef XLAT_STR_41
+  + sizeof(XLAT_STR_41)
+#  endif
+#  ifdef XLAT_STR_42
+  + sizeof(XLAT_STR_42)
+#  endif
+#  ifdef XLAT_STR_43
+  + sizeof(XLAT_STR_43)
+#  endif
+#  ifdef XLAT_STR_44
+  + sizeof(XLAT_STR_44)
+#  endif
+#  ifdef XLAT_STR_45
+  + sizeof(XLAT_STR_45)
+#  endif
+#  ifdef XLAT_STR_46
+  + sizeof(XLAT_STR_46)
+#  endif
+#  ifdef XLAT_STR_47
+  + sizeof(XLAT_STR_47)
+#  endif
+#  ifdef XLAT_STR_48
+  + sizeof(XLAT_STR_48)
+#  endif
+#  ifdef XLAT_STR_49
+  + sizeof(XLAT_STR_49)
+#  endif
+#  ifdef XLAT_STR_50
+  + sizeof(XLAT_STR_50)
+#  endif
+#  ifdef XLAT_STR_51
+  + sizeof(XLAT_STR_51)
+#  endif
+#  ifdef XLAT_STR_52
+  + sizeof(XLAT_STR_52)
+#  endif
+#  ifdef XLAT_STR_53
+  + sizeof(XLAT_STR_53)
+#  endif
+#  ifdef XLAT_STR_54
+  + sizeof(XLAT_STR_54)
+#  endif
+#  ifdef XLAT_STR_55
+  + sizeof(XLAT_STR_55)
+#  endif
+#  ifdef XLAT_STR_56
+  + sizeof(XLAT_STR_56)
+#  endif
+#  ifdef XLAT_STR_57
+  + sizeof(XLAT_STR_57)
+#  endif
+#  ifdef XLAT_STR_58
+  + sizeof(XLAT_STR_58)
+#  endif
+#  ifdef XLAT_STR_59
+  + sizeof(XLAT_STR_59)
+#  endif
+#  ifdef XLAT_STR_60
+  + sizeof(XLAT_STR_60)
+#  endif
+#  ifdef XLAT_STR_61
+  + sizeof(XLAT_STR_61)
+#  endif
+#  ifdef XLAT_STR_62
+  + sizeof(XLAT_STR_62)
+#  endif
+#  ifdef XLAT_STR_63
+  + sizeof(XLAT_STR_63)
+#  endif
+#  ifdef XLAT_STR_64
+  + sizeof(XLAT_STR_64)
+#  endif
+#  ifdef XLAT_STR_65
+  + sizeof(XLAT_STR_65)
+#  endif
+#  ifdef XLAT_STR_66
+  + sizeof(XLAT_STR_66)
+#  endif
+#  ifdef XLAT_STR_67
+  + sizeof(XLAT_STR_67)
+#  endif
+#  ifdef XLAT_STR_68
+  + sizeof(XLAT_STR_68)
+#  endif
+#  ifdef XLAT_STR_69
+  + sizeof(XLAT_STR_69)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
+#  undef XLAT_STR_30
+#  undef XLAT_VAL_30
+#  undef XLAT_STR_31
+#  undef XLAT_VAL_31
+#  undef XLAT_STR_32
+#  undef XLAT_VAL_32
+#  undef XLAT_STR_33
+#  undef XLAT_VAL_33
+#  undef XLAT_STR_34
+#  undef XLAT_VAL_34
+#  undef XLAT_STR_35
+#  undef XLAT_VAL_35
+#  undef XLAT_STR_36
+#  undef XLAT_VAL_36
+#  undef XLAT_STR_37
+#  undef XLAT_VAL_37
+#  undef XLAT_STR_38
+#  undef XLAT_VAL_38
+#  undef XLAT_STR_39
+#  undef XLAT_VAL_39
+#  undef XLAT_STR_40
+#  undef XLAT_VAL_40
+#  undef XLAT_STR_41
+#  undef XLAT_VAL_41
+#  undef XLAT_STR_42
+#  undef XLAT_VAL_42
+#  undef XLAT_STR_43
+#  undef XLAT_VAL_43
+#  undef XLAT_STR_44
+#  undef XLAT_VAL_44
+#  undef XLAT_STR_45
+#  undef XLAT_VAL_45
+#  undef XLAT_STR_46
+#  undef XLAT_VAL_46
+#  undef XLAT_STR_47
+#  undef XLAT_VAL_47
+#  undef XLAT_STR_48
+#  undef XLAT_VAL_48
+#  undef XLAT_STR_49
+#  undef XLAT_VAL_49
+#  undef XLAT_STR_50
+#  undef XLAT_VAL_50
+#  undef XLAT_STR_51
+#  undef XLAT_VAL_51
+#  undef XLAT_STR_52
+#  undef XLAT_VAL_52
+#  undef XLAT_STR_53
+#  undef XLAT_VAL_53
+#  undef XLAT_STR_54
+#  undef XLAT_VAL_54
+#  undef XLAT_STR_55
+#  undef XLAT_VAL_55
+#  undef XLAT_STR_56
+#  undef XLAT_VAL_56
+#  undef XLAT_STR_57
+#  undef XLAT_VAL_57
+#  undef XLAT_STR_58
+#  undef XLAT_VAL_58
+#  undef XLAT_STR_59
+#  undef XLAT_VAL_59
+#  undef XLAT_STR_60
+#  undef XLAT_VAL_60
+#  undef XLAT_STR_61
+#  undef XLAT_VAL_61
+#  undef XLAT_STR_62
+#  undef XLAT_VAL_62
+#  undef XLAT_STR_63
+#  undef XLAT_VAL_63
+#  undef XLAT_STR_64
+#  undef XLAT_VAL_64
+#  undef XLAT_STR_65
+#  undef XLAT_VAL_65
+#  undef XLAT_STR_66
+#  undef XLAT_VAL_66
+#  undef XLAT_STR_67
+#  undef XLAT_VAL_67
+#  undef XLAT_STR_68
+#  undef XLAT_VAL_68
+#  undef XLAT_STR_69
+#  undef XLAT_VAL_69
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 2227ef94410e0d758ebe65e020385119918e9184..b7bec4a8da4eab829ee1c36d85aa25546a36d742 100644 (file)
@@ -35,6 +35,7 @@ SCTP_RECVNXTINFO              33
 SCTP_DEFAULT_SNDINFO           34
 SCTP_AUTH_DEACTIVATE_KEY       35
 SCTP_REUSE_PORT                        36
+SCTP_PEER_ADDR_THLDS_V2                37
 /* linux specific things */
 SCTP_SOCKOPT_BINDX_ADD         100
 SCTP_SOCKOPT_BINDX_REM         101
@@ -64,3 +65,7 @@ SCTP_STREAM_SCHEDULER_VALUE   124
 SCTP_INTERLEAVING_SUPPORTED    125
 SCTP_SENDMSG_CONNECT           126
 SCTP_EVENT                     127
+SCTP_ASCONF_SUPPORTED          128
+SCTP_AUTH_SUPPORTED            129
+SCTP_ECN_SUPPORTED             130
+SCTP_EXPOSE_POTENTIALLY_FAILED_STATE 131
index 8f6caa29e422dfe6cbfe56beede179dfd549dad6..15b778b13c213b1362816879c2cadd59591b7fdc 100644 (file)
@@ -26,13 +26,41 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat sock_shutdown_flags[] = {
+static const struct xlat_data sock_shutdown_flags_xdata[] = {
  XLAT(RCV_SHUTDOWN),
+ #define XLAT_VAL_0 ((unsigned) (RCV_SHUTDOWN))
+ #define XLAT_STR_0 STRINGIFY(RCV_SHUTDOWN)
  XLAT(SEND_SHUTDOWN),
- XLAT_END
+ #define XLAT_VAL_1 ((unsigned) (SEND_SHUTDOWN))
+ #define XLAT_STR_1 STRINGIFY(SEND_SHUTDOWN)
 };
+static
+const struct xlat sock_shutdown_flags[1] = { {
+ .data = sock_shutdown_flags_xdata,
+ .size = ARRAY_SIZE(sock_shutdown_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 1778adcddfbb01ac4555d88c7602ce649619e422..0ee7eab10162da9a74da2f8e6f0c3c64e4dd2e91 100644 (file)
@@ -255,6 +255,13 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define TCP_INQ 36
 #endif
+#if defined(TCP_TX_DELAY) || (defined(HAVE_DECL_TCP_TX_DELAY) && HAVE_DECL_TCP_TX_DELAY)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TCP_TX_DELAY) == (37), "TCP_TX_DELAY != 37");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TCP_TX_DELAY 37
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
@@ -264,47 +271,426 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat sock_tcp_options[] = {
+static const struct xlat_data sock_tcp_options_xdata[] = {
  [TCP_NODELAY] = XLAT(TCP_NODELAY),
+ #define XLAT_VAL_0 ((unsigned) (TCP_NODELAY))
+ #define XLAT_STR_0 STRINGIFY(TCP_NODELAY)
  [TCP_MAXSEG] = XLAT(TCP_MAXSEG),
+ #define XLAT_VAL_1 ((unsigned) (TCP_MAXSEG))
+ #define XLAT_STR_1 STRINGIFY(TCP_MAXSEG)
  [TCP_CORK] = XLAT(TCP_CORK),
+ #define XLAT_VAL_2 ((unsigned) (TCP_CORK))
+ #define XLAT_STR_2 STRINGIFY(TCP_CORK)
  [TCP_KEEPIDLE] = XLAT(TCP_KEEPIDLE),
+ #define XLAT_VAL_3 ((unsigned) (TCP_KEEPIDLE))
+ #define XLAT_STR_3 STRINGIFY(TCP_KEEPIDLE)
  [TCP_KEEPINTVL] = XLAT(TCP_KEEPINTVL),
+ #define XLAT_VAL_4 ((unsigned) (TCP_KEEPINTVL))
+ #define XLAT_STR_4 STRINGIFY(TCP_KEEPINTVL)
  [TCP_KEEPCNT] = XLAT(TCP_KEEPCNT),
+ #define XLAT_VAL_5 ((unsigned) (TCP_KEEPCNT))
+ #define XLAT_STR_5 STRINGIFY(TCP_KEEPCNT)
  [TCP_SYNCNT] = XLAT(TCP_SYNCNT),
+ #define XLAT_VAL_6 ((unsigned) (TCP_SYNCNT))
+ #define XLAT_STR_6 STRINGIFY(TCP_SYNCNT)
  [TCP_LINGER2] = XLAT(TCP_LINGER2),
+ #define XLAT_VAL_7 ((unsigned) (TCP_LINGER2))
+ #define XLAT_STR_7 STRINGIFY(TCP_LINGER2)
  [TCP_DEFER_ACCEPT] = XLAT(TCP_DEFER_ACCEPT),
+ #define XLAT_VAL_8 ((unsigned) (TCP_DEFER_ACCEPT))
+ #define XLAT_STR_8 STRINGIFY(TCP_DEFER_ACCEPT)
  [TCP_WINDOW_CLAMP] = XLAT(TCP_WINDOW_CLAMP),
+ #define XLAT_VAL_9 ((unsigned) (TCP_WINDOW_CLAMP))
+ #define XLAT_STR_9 STRINGIFY(TCP_WINDOW_CLAMP)
  [TCP_INFO] = XLAT(TCP_INFO),
+ #define XLAT_VAL_10 ((unsigned) (TCP_INFO))
+ #define XLAT_STR_10 STRINGIFY(TCP_INFO)
  [TCP_QUICKACK] = XLAT(TCP_QUICKACK),
+ #define XLAT_VAL_11 ((unsigned) (TCP_QUICKACK))
+ #define XLAT_STR_11 STRINGIFY(TCP_QUICKACK)
  [TCP_CONGESTION] = XLAT(TCP_CONGESTION),
+ #define XLAT_VAL_12 ((unsigned) (TCP_CONGESTION))
+ #define XLAT_STR_12 STRINGIFY(TCP_CONGESTION)
  [TCP_MD5SIG] = XLAT(TCP_MD5SIG),
+ #define XLAT_VAL_13 ((unsigned) (TCP_MD5SIG))
+ #define XLAT_STR_13 STRINGIFY(TCP_MD5SIG)
  [TCP_COOKIE_TRANSACTIONS] = XLAT(TCP_COOKIE_TRANSACTIONS),
+ #define XLAT_VAL_14 ((unsigned) (TCP_COOKIE_TRANSACTIONS))
+ #define XLAT_STR_14 STRINGIFY(TCP_COOKIE_TRANSACTIONS)
  [TCP_THIN_LINEAR_TIMEOUTS] = XLAT(TCP_THIN_LINEAR_TIMEOUTS),
+ #define XLAT_VAL_15 ((unsigned) (TCP_THIN_LINEAR_TIMEOUTS))
+ #define XLAT_STR_15 STRINGIFY(TCP_THIN_LINEAR_TIMEOUTS)
  [TCP_THIN_DUPACK] = XLAT(TCP_THIN_DUPACK),
+ #define XLAT_VAL_16 ((unsigned) (TCP_THIN_DUPACK))
+ #define XLAT_STR_16 STRINGIFY(TCP_THIN_DUPACK)
  [TCP_USER_TIMEOUT] = XLAT(TCP_USER_TIMEOUT),
+ #define XLAT_VAL_17 ((unsigned) (TCP_USER_TIMEOUT))
+ #define XLAT_STR_17 STRINGIFY(TCP_USER_TIMEOUT)
  [TCP_REPAIR] = XLAT(TCP_REPAIR),
+ #define XLAT_VAL_18 ((unsigned) (TCP_REPAIR))
+ #define XLAT_STR_18 STRINGIFY(TCP_REPAIR)
  [TCP_REPAIR_QUEUE] = XLAT(TCP_REPAIR_QUEUE),
+ #define XLAT_VAL_19 ((unsigned) (TCP_REPAIR_QUEUE))
+ #define XLAT_STR_19 STRINGIFY(TCP_REPAIR_QUEUE)
  [TCP_QUEUE_SEQ] = XLAT(TCP_QUEUE_SEQ),
+ #define XLAT_VAL_20 ((unsigned) (TCP_QUEUE_SEQ))
+ #define XLAT_STR_20 STRINGIFY(TCP_QUEUE_SEQ)
  [TCP_REPAIR_OPTIONS] = XLAT(TCP_REPAIR_OPTIONS),
+ #define XLAT_VAL_21 ((unsigned) (TCP_REPAIR_OPTIONS))
+ #define XLAT_STR_21 STRINGIFY(TCP_REPAIR_OPTIONS)
  [TCP_FASTOPEN] = XLAT(TCP_FASTOPEN),
+ #define XLAT_VAL_22 ((unsigned) (TCP_FASTOPEN))
+ #define XLAT_STR_22 STRINGIFY(TCP_FASTOPEN)
  [TCP_TIMESTAMP] = XLAT(TCP_TIMESTAMP),
+ #define XLAT_VAL_23 ((unsigned) (TCP_TIMESTAMP))
+ #define XLAT_STR_23 STRINGIFY(TCP_TIMESTAMP)
  [TCP_NOTSENT_LOWAT] = XLAT(TCP_NOTSENT_LOWAT),
+ #define XLAT_VAL_24 ((unsigned) (TCP_NOTSENT_LOWAT))
+ #define XLAT_STR_24 STRINGIFY(TCP_NOTSENT_LOWAT)
  [TCP_CC_INFO] = XLAT(TCP_CC_INFO),
+ #define XLAT_VAL_25 ((unsigned) (TCP_CC_INFO))
+ #define XLAT_STR_25 STRINGIFY(TCP_CC_INFO)
  [TCP_SAVE_SYN] = XLAT(TCP_SAVE_SYN),
+ #define XLAT_VAL_26 ((unsigned) (TCP_SAVE_SYN))
+ #define XLAT_STR_26 STRINGIFY(TCP_SAVE_SYN)
  [TCP_SAVED_SYN] = XLAT(TCP_SAVED_SYN),
+ #define XLAT_VAL_27 ((unsigned) (TCP_SAVED_SYN))
+ #define XLAT_STR_27 STRINGIFY(TCP_SAVED_SYN)
  [TCP_REPAIR_WINDOW] = XLAT(TCP_REPAIR_WINDOW),
+ #define XLAT_VAL_28 ((unsigned) (TCP_REPAIR_WINDOW))
+ #define XLAT_STR_28 STRINGIFY(TCP_REPAIR_WINDOW)
  [TCP_FASTOPEN_CONNECT] = XLAT(TCP_FASTOPEN_CONNECT),
+ #define XLAT_VAL_29 ((unsigned) (TCP_FASTOPEN_CONNECT))
+ #define XLAT_STR_29 STRINGIFY(TCP_FASTOPEN_CONNECT)
  [TCP_ULP] = XLAT(TCP_ULP),
+ #define XLAT_VAL_30 ((unsigned) (TCP_ULP))
+ #define XLAT_STR_30 STRINGIFY(TCP_ULP)
  [TCP_MD5SIG_EXT] = XLAT(TCP_MD5SIG_EXT),
+ #define XLAT_VAL_31 ((unsigned) (TCP_MD5SIG_EXT))
+ #define XLAT_STR_31 STRINGIFY(TCP_MD5SIG_EXT)
  [TCP_FASTOPEN_KEY] = XLAT(TCP_FASTOPEN_KEY),
+ #define XLAT_VAL_32 ((unsigned) (TCP_FASTOPEN_KEY))
+ #define XLAT_STR_32 STRINGIFY(TCP_FASTOPEN_KEY)
  [TCP_FASTOPEN_NO_COOKIE] = XLAT(TCP_FASTOPEN_NO_COOKIE),
+ #define XLAT_VAL_33 ((unsigned) (TCP_FASTOPEN_NO_COOKIE))
+ #define XLAT_STR_33 STRINGIFY(TCP_FASTOPEN_NO_COOKIE)
  [TCP_ZEROCOPY_RECEIVE] = XLAT(TCP_ZEROCOPY_RECEIVE),
+ #define XLAT_VAL_34 ((unsigned) (TCP_ZEROCOPY_RECEIVE))
+ #define XLAT_STR_34 STRINGIFY(TCP_ZEROCOPY_RECEIVE)
  [TCP_INQ] = XLAT(TCP_INQ),
- XLAT_END
+ #define XLAT_VAL_35 ((unsigned) (TCP_INQ))
+ #define XLAT_STR_35 STRINGIFY(TCP_INQ)
+ [TCP_TX_DELAY] = XLAT(TCP_TX_DELAY),
+ #define XLAT_VAL_36 ((unsigned) (TCP_TX_DELAY))
+ #define XLAT_STR_36 STRINGIFY(TCP_TX_DELAY)
 };
+static
+const struct xlat sock_tcp_options[1] = { {
+ .data = sock_tcp_options_xdata,
+ .size = ARRAY_SIZE(sock_tcp_options_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+#  ifdef XLAT_VAL_30
+  | XLAT_VAL_30
+#  endif
+#  ifdef XLAT_VAL_31
+  | XLAT_VAL_31
+#  endif
+#  ifdef XLAT_VAL_32
+  | XLAT_VAL_32
+#  endif
+#  ifdef XLAT_VAL_33
+  | XLAT_VAL_33
+#  endif
+#  ifdef XLAT_VAL_34
+  | XLAT_VAL_34
+#  endif
+#  ifdef XLAT_VAL_35
+  | XLAT_VAL_35
+#  endif
+#  ifdef XLAT_VAL_36
+  | XLAT_VAL_36
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+#  ifdef XLAT_STR_30
+  + sizeof(XLAT_STR_30)
+#  endif
+#  ifdef XLAT_STR_31
+  + sizeof(XLAT_STR_31)
+#  endif
+#  ifdef XLAT_STR_32
+  + sizeof(XLAT_STR_32)
+#  endif
+#  ifdef XLAT_STR_33
+  + sizeof(XLAT_STR_33)
+#  endif
+#  ifdef XLAT_STR_34
+  + sizeof(XLAT_STR_34)
+#  endif
+#  ifdef XLAT_STR_35
+  + sizeof(XLAT_STR_35)
+#  endif
+#  ifdef XLAT_STR_36
+  + sizeof(XLAT_STR_36)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
+#  undef XLAT_STR_30
+#  undef XLAT_VAL_30
+#  undef XLAT_STR_31
+#  undef XLAT_VAL_31
+#  undef XLAT_STR_32
+#  undef XLAT_VAL_32
+#  undef XLAT_STR_33
+#  undef XLAT_VAL_33
+#  undef XLAT_STR_34
+#  undef XLAT_VAL_34
+#  undef XLAT_STR_35
+#  undef XLAT_VAL_35
+#  undef XLAT_STR_36
+#  undef XLAT_VAL_36
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 70543cce3abc5dbac19757da795fa9d799d9dd07..cb1de24b73e927c6819d9797f0613d935c3bae0e 100644 (file)
@@ -35,3 +35,4 @@ TCP_FASTOPEN_KEY              33
 TCP_FASTOPEN_NO_COOKIE         34
 TCP_ZEROCOPY_RECEIVE           35
 TCP_INQ                                36
+TCP_TX_DELAY                   37
index c41a91cbe9982f1f493cb6de1c2877339d7d3031..ec676e543406590c12f835940e25f3fe4a1fcba2 100644 (file)
@@ -73,6 +73,20 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define TIPC_GROUP_LEAVE 136
 #endif
+#if defined(TIPC_SOCK_RECVQ_USED) || (defined(HAVE_DECL_TIPC_SOCK_RECVQ_USED) && HAVE_DECL_TIPC_SOCK_RECVQ_USED)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TIPC_SOCK_RECVQ_USED) == (137), "TIPC_SOCK_RECVQ_USED != 137");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TIPC_SOCK_RECVQ_USED 137
+#endif
+#if defined(TIPC_NODELAY) || (defined(HAVE_DECL_TIPC_NODELAY) && HAVE_DECL_TIPC_NODELAY)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TIPC_NODELAY) == (138), "TIPC_NODELAY != 138");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TIPC_NODELAY 138
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
@@ -82,22 +96,151 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat sock_tipc_options[] = {
-
+static const struct xlat_data sock_tipc_options_xdata[] = {
  XLAT(TIPC_IMPORTANCE),
+ #define XLAT_VAL_0 ((unsigned) (TIPC_IMPORTANCE))
+ #define XLAT_STR_0 STRINGIFY(TIPC_IMPORTANCE)
  XLAT(TIPC_SRC_DROPPABLE),
+ #define XLAT_VAL_1 ((unsigned) (TIPC_SRC_DROPPABLE))
+ #define XLAT_STR_1 STRINGIFY(TIPC_SRC_DROPPABLE)
  XLAT(TIPC_DEST_DROPPABLE),
+ #define XLAT_VAL_2 ((unsigned) (TIPC_DEST_DROPPABLE))
+ #define XLAT_STR_2 STRINGIFY(TIPC_DEST_DROPPABLE)
  XLAT(TIPC_CONN_TIMEOUT),
+ #define XLAT_VAL_3 ((unsigned) (TIPC_CONN_TIMEOUT))
+ #define XLAT_STR_3 STRINGIFY(TIPC_CONN_TIMEOUT)
  XLAT(TIPC_NODE_RECVQ_DEPTH),
+ #define XLAT_VAL_4 ((unsigned) (TIPC_NODE_RECVQ_DEPTH))
+ #define XLAT_STR_4 STRINGIFY(TIPC_NODE_RECVQ_DEPTH)
  XLAT(TIPC_SOCK_RECVQ_DEPTH),
+ #define XLAT_VAL_5 ((unsigned) (TIPC_SOCK_RECVQ_DEPTH))
+ #define XLAT_STR_5 STRINGIFY(TIPC_SOCK_RECVQ_DEPTH)
  XLAT(TIPC_MCAST_BROADCAST),
+ #define XLAT_VAL_6 ((unsigned) (TIPC_MCAST_BROADCAST))
+ #define XLAT_STR_6 STRINGIFY(TIPC_MCAST_BROADCAST)
  XLAT(TIPC_MCAST_REPLICAST),
+ #define XLAT_VAL_7 ((unsigned) (TIPC_MCAST_REPLICAST))
+ #define XLAT_STR_7 STRINGIFY(TIPC_MCAST_REPLICAST)
  XLAT(TIPC_GROUP_JOIN),
+ #define XLAT_VAL_8 ((unsigned) (TIPC_GROUP_JOIN))
+ #define XLAT_STR_8 STRINGIFY(TIPC_GROUP_JOIN)
  XLAT(TIPC_GROUP_LEAVE),
- XLAT_END
+ #define XLAT_VAL_9 ((unsigned) (TIPC_GROUP_LEAVE))
+ #define XLAT_STR_9 STRINGIFY(TIPC_GROUP_LEAVE)
+ XLAT(TIPC_SOCK_RECVQ_USED),
+ #define XLAT_VAL_10 ((unsigned) (TIPC_SOCK_RECVQ_USED))
+ #define XLAT_STR_10 STRINGIFY(TIPC_SOCK_RECVQ_USED)
+ XLAT(TIPC_NODELAY),
+ #define XLAT_VAL_11 ((unsigned) (TIPC_NODELAY))
+ #define XLAT_STR_11 STRINGIFY(TIPC_NODELAY)
 };
+static
+const struct xlat sock_tipc_options[1] = { {
+ .data = sock_tipc_options_xdata,
+ .size = ARRAY_SIZE(sock_tipc_options_xdata),
+ .type = XT_SORTED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 849e50d66e24554893be4eee0703ac6bab7ff7cc..fbc70d64e18f64bde6264fcb0ed19f5fb03a680c 100644 (file)
@@ -1,4 +1,4 @@
-/* sort -k2,2n */
+#sorted sort -k2,2n
 TIPC_IMPORTANCE                127
 TIPC_SRC_DROPPABLE     128
 TIPC_DEST_DROPPABLE    129
@@ -9,3 +9,5 @@ TIPC_MCAST_BROADCAST    133
 TIPC_MCAST_REPLICAST   134
 TIPC_GROUP_JOIN                135
 TIPC_GROUP_LEAVE       136
+TIPC_SOCK_RECVQ_USED   137
+TIPC_NODELAY           138
index 7e1f2533b1615f44daa3e2028a0a768eb4b0cc35..f97fd2ef89f294cd4b79f258790a39fcf883d364 100644 (file)
@@ -26,13 +26,41 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat sock_tls_options[] = {
- XLAT(TLS_TX),
- XLAT(TLS_RX),
- XLAT_END
+static const struct xlat_data sock_tls_options_xdata[] = {
+ [TLS_TX] = XLAT(TLS_TX),
+ #define XLAT_VAL_0 ((unsigned) (TLS_TX))
+ #define XLAT_STR_0 STRINGIFY(TLS_TX)
+ [TLS_RX] = XLAT(TLS_RX),
+ #define XLAT_VAL_1 ((unsigned) (TLS_RX))
+ #define XLAT_STR_1 STRINGIFY(TLS_RX)
 };
+static
+const struct xlat sock_tls_options[1] = { {
+ .data = sock_tls_options_xdata,
+ .size = ARRAY_SIZE(sock_tls_options_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 5fcefd64a34e4b97e2ba2be8f5e0418c92bd2829..9a2ddb0a1e7535a656d1fd69200a2bc9424f1185 100644 (file)
@@ -1,2 +1,3 @@
+#value_indexed
 TLS_TX 1
 TLS_RX 2
index d8755c4e239e5a784380b4f56454fdf92d51776a..1570143f19fed0c24ba1dc1f4737ccbb8a219adb 100644 (file)
 
 # else
 
-static
-const struct xlat sock_type_flags[] = {
+static const struct xlat_data sock_type_flags_xdata[] = {
 #if defined(SOCK_CLOEXEC) || (defined(HAVE_DECL_SOCK_CLOEXEC) && HAVE_DECL_SOCK_CLOEXEC)
   XLAT(SOCK_CLOEXEC),
+ #define XLAT_VAL_0 ((unsigned) (SOCK_CLOEXEC))
+ #define XLAT_STR_0 STRINGIFY(SOCK_CLOEXEC)
 #endif
 #if defined(SOCK_NONBLOCK) || (defined(HAVE_DECL_SOCK_NONBLOCK) && HAVE_DECL_SOCK_NONBLOCK)
   XLAT(SOCK_NONBLOCK),
+ #define XLAT_VAL_1 ((unsigned) (SOCK_NONBLOCK))
+ #define XLAT_STR_1 STRINGIFY(SOCK_NONBLOCK)
 #endif
- XLAT_END
 };
-
+static
+const struct xlat sock_type_flags[1] = { {
+ .data = sock_type_flags_xdata,
+ .size = ARRAY_SIZE(sock_type_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 37e199fac835e796ef611ce39d8714fa8911d522..ad1368218b4fe3d570894deaf69077d822d68f4d 100644 (file)
@@ -54,17 +54,85 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat sock_udp_options[] = {
+static const struct xlat_data sock_udp_options_xdata[] = {
  XLAT(UDP_CORK),
+ #define XLAT_VAL_0 ((unsigned) (UDP_CORK))
+ #define XLAT_STR_0 STRINGIFY(UDP_CORK)
  XLAT(UDP_ENCAP),
+ #define XLAT_VAL_1 ((unsigned) (UDP_ENCAP))
+ #define XLAT_STR_1 STRINGIFY(UDP_ENCAP)
  XLAT(UDP_NO_CHECK6_TX),
+ #define XLAT_VAL_2 ((unsigned) (UDP_NO_CHECK6_TX))
+ #define XLAT_STR_2 STRINGIFY(UDP_NO_CHECK6_TX)
  XLAT(UDP_NO_CHECK6_RX),
+ #define XLAT_VAL_3 ((unsigned) (UDP_NO_CHECK6_RX))
+ #define XLAT_STR_3 STRINGIFY(UDP_NO_CHECK6_RX)
  XLAT(UDP_SEGMENT),
+ #define XLAT_VAL_4 ((unsigned) (UDP_SEGMENT))
+ #define XLAT_STR_4 STRINGIFY(UDP_SEGMENT)
  XLAT(UDP_GRO),
- XLAT_END
+ #define XLAT_VAL_5 ((unsigned) (UDP_GRO))
+ #define XLAT_STR_5 STRINGIFY(UDP_GRO)
 };
+static
+const struct xlat sock_udp_options[1] = { {
+ .data = sock_udp_options_xdata,
+ .size = ARRAY_SIZE(sock_udp_options_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 8cd2ded17659f20c9409b1afd8004274ac717b40..e6a4e54dd23b1d0c0e00be6958ad9da9e7fd575b 100644 (file)
@@ -52,6 +52,13 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define XDP_STATISTICS 7
 #endif
+#if defined(XDP_OPTIONS) || (defined(HAVE_DECL_XDP_OPTIONS) && HAVE_DECL_XDP_OPTIONS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((XDP_OPTIONS) == (8), "XDP_OPTIONS != 8");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define XDP_OPTIONS 8
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
@@ -61,18 +68,107 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat sock_xdp_options[] = {
+static const struct xlat_data sock_xdp_options_xdata[] = {
  [XDP_MMAP_OFFSETS] = XLAT(XDP_MMAP_OFFSETS),
+ #define XLAT_VAL_0 ((unsigned) (XDP_MMAP_OFFSETS))
+ #define XLAT_STR_0 STRINGIFY(XDP_MMAP_OFFSETS)
  [XDP_RX_RING] = XLAT(XDP_RX_RING),
+ #define XLAT_VAL_1 ((unsigned) (XDP_RX_RING))
+ #define XLAT_STR_1 STRINGIFY(XDP_RX_RING)
  [XDP_TX_RING] = XLAT(XDP_TX_RING),
+ #define XLAT_VAL_2 ((unsigned) (XDP_TX_RING))
+ #define XLAT_STR_2 STRINGIFY(XDP_TX_RING)
  [XDP_UMEM_REG] = XLAT(XDP_UMEM_REG),
+ #define XLAT_VAL_3 ((unsigned) (XDP_UMEM_REG))
+ #define XLAT_STR_3 STRINGIFY(XDP_UMEM_REG)
  [XDP_UMEM_FILL_RING] = XLAT(XDP_UMEM_FILL_RING),
+ #define XLAT_VAL_4 ((unsigned) (XDP_UMEM_FILL_RING))
+ #define XLAT_STR_4 STRINGIFY(XDP_UMEM_FILL_RING)
  [XDP_UMEM_COMPLETION_RING] = XLAT(XDP_UMEM_COMPLETION_RING),
+ #define XLAT_VAL_5 ((unsigned) (XDP_UMEM_COMPLETION_RING))
+ #define XLAT_STR_5 STRINGIFY(XDP_UMEM_COMPLETION_RING)
  [XDP_STATISTICS] = XLAT(XDP_STATISTICS),
- XLAT_END
+ #define XLAT_VAL_6 ((unsigned) (XDP_STATISTICS))
+ #define XLAT_STR_6 STRINGIFY(XDP_STATISTICS)
+ [XDP_OPTIONS] = XLAT(XDP_OPTIONS),
+ #define XLAT_VAL_7 ((unsigned) (XDP_OPTIONS))
+ #define XLAT_STR_7 STRINGIFY(XDP_OPTIONS)
 };
+static
+const struct xlat sock_xdp_options[1] = { {
+ .data = sock_xdp_options_xdata,
+ .size = ARRAY_SIZE(sock_xdp_options_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index f2b7a68b1259ed773271dc854e21f93747d7a016..b98f83c41a66f73b56dfed829c5ae667b8d367e6 100644 (file)
@@ -6,3 +6,4 @@ XDP_UMEM_REG                    4
 XDP_UMEM_FILL_RING             5
 XDP_UMEM_COMPLETION_RING       6
 XDP_STATISTICS                 7
+XDP_OPTIONS                    8
index a3ae1484ea9886721563e08b1dda392e94feb5af..ff785d567811ee2fc554a05437b9ecca82046e71 100644 (file)
@@ -152,31 +152,239 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat socketcalls[] = {
- XLAT(SYS_SOCKET),
- XLAT(SYS_BIND),
- XLAT(SYS_CONNECT),
- XLAT(SYS_LISTEN),
- XLAT(SYS_ACCEPT),
- XLAT(SYS_GETSOCKNAME),
- XLAT(SYS_GETPEERNAME),
- XLAT(SYS_SOCKETPAIR),
- XLAT(SYS_SEND),
- XLAT(SYS_RECV),
- XLAT(SYS_SENDTO),
- XLAT(SYS_RECVFROM),
- XLAT(SYS_SHUTDOWN),
- XLAT(SYS_SETSOCKOPT),
- XLAT(SYS_GETSOCKOPT),
- XLAT(SYS_SENDMSG),
- XLAT(SYS_RECVMSG),
- XLAT(SYS_ACCEPT4),
- XLAT(SYS_RECVMMSG),
- XLAT(SYS_SENDMMSG),
- XLAT_END
+static const struct xlat_data socketcalls_xdata[] = {
+ [SYS_SOCKET] = XLAT(SYS_SOCKET),
+ #define XLAT_VAL_0 ((unsigned) (SYS_SOCKET))
+ #define XLAT_STR_0 STRINGIFY(SYS_SOCKET)
+ [SYS_BIND] = XLAT(SYS_BIND),
+ #define XLAT_VAL_1 ((unsigned) (SYS_BIND))
+ #define XLAT_STR_1 STRINGIFY(SYS_BIND)
+ [SYS_CONNECT] = XLAT(SYS_CONNECT),
+ #define XLAT_VAL_2 ((unsigned) (SYS_CONNECT))
+ #define XLAT_STR_2 STRINGIFY(SYS_CONNECT)
+ [SYS_LISTEN] = XLAT(SYS_LISTEN),
+ #define XLAT_VAL_3 ((unsigned) (SYS_LISTEN))
+ #define XLAT_STR_3 STRINGIFY(SYS_LISTEN)
+ [SYS_ACCEPT] = XLAT(SYS_ACCEPT),
+ #define XLAT_VAL_4 ((unsigned) (SYS_ACCEPT))
+ #define XLAT_STR_4 STRINGIFY(SYS_ACCEPT)
+ [SYS_GETSOCKNAME] = XLAT(SYS_GETSOCKNAME),
+ #define XLAT_VAL_5 ((unsigned) (SYS_GETSOCKNAME))
+ #define XLAT_STR_5 STRINGIFY(SYS_GETSOCKNAME)
+ [SYS_GETPEERNAME] = XLAT(SYS_GETPEERNAME),
+ #define XLAT_VAL_6 ((unsigned) (SYS_GETPEERNAME))
+ #define XLAT_STR_6 STRINGIFY(SYS_GETPEERNAME)
+ [SYS_SOCKETPAIR] = XLAT(SYS_SOCKETPAIR),
+ #define XLAT_VAL_7 ((unsigned) (SYS_SOCKETPAIR))
+ #define XLAT_STR_7 STRINGIFY(SYS_SOCKETPAIR)
+ [SYS_SEND] = XLAT(SYS_SEND),
+ #define XLAT_VAL_8 ((unsigned) (SYS_SEND))
+ #define XLAT_STR_8 STRINGIFY(SYS_SEND)
+ [SYS_RECV] = XLAT(SYS_RECV),
+ #define XLAT_VAL_9 ((unsigned) (SYS_RECV))
+ #define XLAT_STR_9 STRINGIFY(SYS_RECV)
+ [SYS_SENDTO] = XLAT(SYS_SENDTO),
+ #define XLAT_VAL_10 ((unsigned) (SYS_SENDTO))
+ #define XLAT_STR_10 STRINGIFY(SYS_SENDTO)
+ [SYS_RECVFROM] = XLAT(SYS_RECVFROM),
+ #define XLAT_VAL_11 ((unsigned) (SYS_RECVFROM))
+ #define XLAT_STR_11 STRINGIFY(SYS_RECVFROM)
+ [SYS_SHUTDOWN] = XLAT(SYS_SHUTDOWN),
+ #define XLAT_VAL_12 ((unsigned) (SYS_SHUTDOWN))
+ #define XLAT_STR_12 STRINGIFY(SYS_SHUTDOWN)
+ [SYS_SETSOCKOPT] = XLAT(SYS_SETSOCKOPT),
+ #define XLAT_VAL_13 ((unsigned) (SYS_SETSOCKOPT))
+ #define XLAT_STR_13 STRINGIFY(SYS_SETSOCKOPT)
+ [SYS_GETSOCKOPT] = XLAT(SYS_GETSOCKOPT),
+ #define XLAT_VAL_14 ((unsigned) (SYS_GETSOCKOPT))
+ #define XLAT_STR_14 STRINGIFY(SYS_GETSOCKOPT)
+ [SYS_SENDMSG] = XLAT(SYS_SENDMSG),
+ #define XLAT_VAL_15 ((unsigned) (SYS_SENDMSG))
+ #define XLAT_STR_15 STRINGIFY(SYS_SENDMSG)
+ [SYS_RECVMSG] = XLAT(SYS_RECVMSG),
+ #define XLAT_VAL_16 ((unsigned) (SYS_RECVMSG))
+ #define XLAT_STR_16 STRINGIFY(SYS_RECVMSG)
+ [SYS_ACCEPT4] = XLAT(SYS_ACCEPT4),
+ #define XLAT_VAL_17 ((unsigned) (SYS_ACCEPT4))
+ #define XLAT_STR_17 STRINGIFY(SYS_ACCEPT4)
+ [SYS_RECVMMSG] = XLAT(SYS_RECVMMSG),
+ #define XLAT_VAL_18 ((unsigned) (SYS_RECVMMSG))
+ #define XLAT_STR_18 STRINGIFY(SYS_RECVMMSG)
+ [SYS_SENDMMSG] = XLAT(SYS_SENDMMSG),
+ #define XLAT_VAL_19 ((unsigned) (SYS_SENDMMSG))
+ #define XLAT_STR_19 STRINGIFY(SYS_SENDMMSG)
 };
+static
+const struct xlat socketcalls[1] = { {
+ .data = socketcalls_xdata,
+ .size = ARRAY_SIZE(socketcalls_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 3ffeb6f2fa8439c84c8e22f260f6f9852c127615..d31a91042195b3fba1517472e350c17deb5d7c25 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 SYS_SOCKET     1
 SYS_BIND       2
 SYS_CONNECT    3
index 2239cdc0e7f5c9abbe8f749ca723b41d378ba2a7..4ebe901facda0694ba401c2478a2f1e8b55e7ed3 100644 (file)
@@ -292,55 +292,462 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # ifndef IN_MPERS
 
-const struct xlat socketlayers[] = {
-
+static const struct xlat_data socketlayers_xdata[] = {
  XLAT(SOL_IP),
+ #define XLAT_VAL_0 ((unsigned) (SOL_IP))
+ #define XLAT_STR_0 STRINGIFY(SOL_IP)
 #if !(defined __alpha__ || defined __hppa__ || defined __mips__ || defined __sparc__)
  XLAT(SOL_SOCKET),
+ #define XLAT_VAL_1 ((unsigned) (SOL_SOCKET))
+ #define XLAT_STR_1 STRINGIFY(SOL_SOCKET)
 #endif
  XLAT(SOL_TCP),
+ #define XLAT_VAL_2 ((unsigned) (SOL_TCP))
+ #define XLAT_STR_2 STRINGIFY(SOL_TCP)
  XLAT(SOL_UDP),
+ #define XLAT_VAL_3 ((unsigned) (SOL_UDP))
+ #define XLAT_STR_3 STRINGIFY(SOL_UDP)
  XLAT(SOL_IPV6),
+ #define XLAT_VAL_4 ((unsigned) (SOL_IPV6))
+ #define XLAT_STR_4 STRINGIFY(SOL_IPV6)
  XLAT(SOL_ICMPV6),
+ #define XLAT_VAL_5 ((unsigned) (SOL_ICMPV6))
+ #define XLAT_STR_5 STRINGIFY(SOL_ICMPV6)
  XLAT(SOL_CAN_BASE),
+ #define XLAT_VAL_6 ((unsigned) (SOL_CAN_BASE))
+ #define XLAT_STR_6 STRINGIFY(SOL_CAN_BASE)
  XLAT(SOL_CAN_RAW),
+ #define XLAT_VAL_7 ((unsigned) (SOL_CAN_RAW))
+ #define XLAT_STR_7 STRINGIFY(SOL_CAN_RAW)
  XLAT(SOL_SCTP),
+ #define XLAT_VAL_8 ((unsigned) (SOL_SCTP))
+ #define XLAT_STR_8 STRINGIFY(SOL_SCTP)
  XLAT(SOL_UDPLITE),
+ #define XLAT_VAL_9 ((unsigned) (SOL_UDPLITE))
+ #define XLAT_STR_9 STRINGIFY(SOL_UDPLITE)
  XLAT(SOL_RAW),
+ #define XLAT_VAL_10 ((unsigned) (SOL_RAW))
+ #define XLAT_STR_10 STRINGIFY(SOL_RAW)
  XLAT(SOL_IPX),
+ #define XLAT_VAL_11 ((unsigned) (SOL_IPX))
+ #define XLAT_STR_11 STRINGIFY(SOL_IPX)
  XLAT(SOL_AX25),
+ #define XLAT_VAL_12 ((unsigned) (SOL_AX25))
+ #define XLAT_STR_12 STRINGIFY(SOL_AX25)
  XLAT(SOL_ATALK),
+ #define XLAT_VAL_13 ((unsigned) (SOL_ATALK))
+ #define XLAT_STR_13 STRINGIFY(SOL_ATALK)
  XLAT(SOL_NETROM),
+ #define XLAT_VAL_14 ((unsigned) (SOL_NETROM))
+ #define XLAT_STR_14 STRINGIFY(SOL_NETROM)
  XLAT(SOL_ROSE),
+ #define XLAT_VAL_15 ((unsigned) (SOL_ROSE))
+ #define XLAT_STR_15 STRINGIFY(SOL_ROSE)
  XLAT(SOL_DECNET),
+ #define XLAT_VAL_16 ((unsigned) (SOL_DECNET))
+ #define XLAT_STR_16 STRINGIFY(SOL_DECNET)
  XLAT(SOL_X25),
+ #define XLAT_VAL_17 ((unsigned) (SOL_X25))
+ #define XLAT_STR_17 STRINGIFY(SOL_X25)
  XLAT(SOL_PACKET),
+ #define XLAT_VAL_18 ((unsigned) (SOL_PACKET))
+ #define XLAT_STR_18 STRINGIFY(SOL_PACKET)
  XLAT(SOL_ATM),
+ #define XLAT_VAL_19 ((unsigned) (SOL_ATM))
+ #define XLAT_STR_19 STRINGIFY(SOL_ATM)
  XLAT(SOL_AAL),
+ #define XLAT_VAL_20 ((unsigned) (SOL_AAL))
+ #define XLAT_STR_20 STRINGIFY(SOL_AAL)
  XLAT(SOL_IRDA),
+ #define XLAT_VAL_21 ((unsigned) (SOL_IRDA))
+ #define XLAT_STR_21 STRINGIFY(SOL_IRDA)
  XLAT(SOL_NETBEUI),
+ #define XLAT_VAL_22 ((unsigned) (SOL_NETBEUI))
+ #define XLAT_STR_22 STRINGIFY(SOL_NETBEUI)
  XLAT(SOL_LLC),
+ #define XLAT_VAL_23 ((unsigned) (SOL_LLC))
+ #define XLAT_STR_23 STRINGIFY(SOL_LLC)
  XLAT(SOL_DCCP),
+ #define XLAT_VAL_24 ((unsigned) (SOL_DCCP))
+ #define XLAT_STR_24 STRINGIFY(SOL_DCCP)
  XLAT(SOL_NETLINK),
+ #define XLAT_VAL_25 ((unsigned) (SOL_NETLINK))
+ #define XLAT_STR_25 STRINGIFY(SOL_NETLINK)
  XLAT(SOL_TIPC),
+ #define XLAT_VAL_26 ((unsigned) (SOL_TIPC))
+ #define XLAT_STR_26 STRINGIFY(SOL_TIPC)
  XLAT(SOL_RXRPC),
+ #define XLAT_VAL_27 ((unsigned) (SOL_RXRPC))
+ #define XLAT_STR_27 STRINGIFY(SOL_RXRPC)
  XLAT(SOL_PPPOL2TP),
+ #define XLAT_VAL_28 ((unsigned) (SOL_PPPOL2TP))
+ #define XLAT_STR_28 STRINGIFY(SOL_PPPOL2TP)
  XLAT(SOL_BLUETOOTH),
+ #define XLAT_VAL_29 ((unsigned) (SOL_BLUETOOTH))
+ #define XLAT_STR_29 STRINGIFY(SOL_BLUETOOTH)
  XLAT(SOL_PNPIPE),
+ #define XLAT_VAL_30 ((unsigned) (SOL_PNPIPE))
+ #define XLAT_STR_30 STRINGIFY(SOL_PNPIPE)
  XLAT(SOL_RDS),
+ #define XLAT_VAL_31 ((unsigned) (SOL_RDS))
+ #define XLAT_STR_31 STRINGIFY(SOL_RDS)
  XLAT(SOL_IUCV),
+ #define XLAT_VAL_32 ((unsigned) (SOL_IUCV))
+ #define XLAT_STR_32 STRINGIFY(SOL_IUCV)
  XLAT(SOL_CAIF),
+ #define XLAT_VAL_33 ((unsigned) (SOL_CAIF))
+ #define XLAT_STR_33 STRINGIFY(SOL_CAIF)
  XLAT(SOL_ALG),
+ #define XLAT_VAL_34 ((unsigned) (SOL_ALG))
+ #define XLAT_STR_34 STRINGIFY(SOL_ALG)
  XLAT(SOL_NFC),
+ #define XLAT_VAL_35 ((unsigned) (SOL_NFC))
+ #define XLAT_STR_35 STRINGIFY(SOL_NFC)
  XLAT(SOL_KCM),
+ #define XLAT_VAL_36 ((unsigned) (SOL_KCM))
+ #define XLAT_STR_36 STRINGIFY(SOL_KCM)
  XLAT(SOL_TLS),
+ #define XLAT_VAL_37 ((unsigned) (SOL_TLS))
+ #define XLAT_STR_37 STRINGIFY(SOL_TLS)
  XLAT(SOL_XDP),
+ #define XLAT_VAL_38 ((unsigned) (SOL_XDP))
+ #define XLAT_STR_38 STRINGIFY(SOL_XDP)
 #if defined __alpha__ || defined __hppa__ || defined __mips__ || defined __sparc__
  XLAT(SOL_SOCKET),
+ #define XLAT_VAL_39 ((unsigned) (SOL_SOCKET))
+ #define XLAT_STR_39 STRINGIFY(SOL_SOCKET)
 #endif
- XLAT_END
 };
+const struct xlat socketlayers[1] = { {
+ .data = socketlayers_xdata,
+ .size = ARRAY_SIZE(socketlayers_xdata),
+ .type = XT_SORTED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+#  ifdef XLAT_VAL_30
+  | XLAT_VAL_30
+#  endif
+#  ifdef XLAT_VAL_31
+  | XLAT_VAL_31
+#  endif
+#  ifdef XLAT_VAL_32
+  | XLAT_VAL_32
+#  endif
+#  ifdef XLAT_VAL_33
+  | XLAT_VAL_33
+#  endif
+#  ifdef XLAT_VAL_34
+  | XLAT_VAL_34
+#  endif
+#  ifdef XLAT_VAL_35
+  | XLAT_VAL_35
+#  endif
+#  ifdef XLAT_VAL_36
+  | XLAT_VAL_36
+#  endif
+#  ifdef XLAT_VAL_37
+  | XLAT_VAL_37
+#  endif
+#  ifdef XLAT_VAL_38
+  | XLAT_VAL_38
+#  endif
+#  ifdef XLAT_VAL_39
+  | XLAT_VAL_39
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+#  ifdef XLAT_STR_30
+  + sizeof(XLAT_STR_30)
+#  endif
+#  ifdef XLAT_STR_31
+  + sizeof(XLAT_STR_31)
+#  endif
+#  ifdef XLAT_STR_32
+  + sizeof(XLAT_STR_32)
+#  endif
+#  ifdef XLAT_STR_33
+  + sizeof(XLAT_STR_33)
+#  endif
+#  ifdef XLAT_STR_34
+  + sizeof(XLAT_STR_34)
+#  endif
+#  ifdef XLAT_STR_35
+  + sizeof(XLAT_STR_35)
+#  endif
+#  ifdef XLAT_STR_36
+  + sizeof(XLAT_STR_36)
+#  endif
+#  ifdef XLAT_STR_37
+  + sizeof(XLAT_STR_37)
+#  endif
+#  ifdef XLAT_STR_38
+  + sizeof(XLAT_STR_38)
+#  endif
+#  ifdef XLAT_STR_39
+  + sizeof(XLAT_STR_39)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
+#  undef XLAT_STR_30
+#  undef XLAT_VAL_30
+#  undef XLAT_STR_31
+#  undef XLAT_VAL_31
+#  undef XLAT_STR_32
+#  undef XLAT_VAL_32
+#  undef XLAT_STR_33
+#  undef XLAT_VAL_33
+#  undef XLAT_STR_34
+#  undef XLAT_VAL_34
+#  undef XLAT_STR_35
+#  undef XLAT_VAL_35
+#  undef XLAT_STR_36
+#  undef XLAT_VAL_36
+#  undef XLAT_STR_37
+#  undef XLAT_VAL_37
+#  undef XLAT_STR_38
+#  undef XLAT_VAL_38
+#  undef XLAT_STR_39
+#  undef XLAT_VAL_39
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index fd44dd19ac5e5a698d0724a861bba988acd6d400..e633cf5cd9f86eafff13011fbd67800fbd17d5e5 100644 (file)
@@ -1,4 +1,4 @@
-/* sort -k2,2n */
+#sorted sort -k2,2n
 SOL_IP         0
 #if !(defined __alpha__ || defined __hppa__ || defined __mips__ || defined __sparc__)
 SOL_SOCKET     1
index 113ccb09ebb26dc1ec8a4782dac18e3ab7a93657..8d3b1c77421236112a68390e39435c1a55288f56 100644 (file)
@@ -74,22 +74,120 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # ifndef IN_MPERS
 
-const struct xlat socktypes[] = {
+static const struct xlat_data socktypes_xdata[] = {
 #ifdef __mips__
  XLAT(SOCK_DGRAM),
+ #define XLAT_VAL_0 ((unsigned) (SOCK_DGRAM))
+ #define XLAT_STR_0 STRINGIFY(SOCK_DGRAM)
  XLAT(SOCK_STREAM),
+ #define XLAT_VAL_1 ((unsigned) (SOCK_STREAM))
+ #define XLAT_STR_1 STRINGIFY(SOCK_STREAM)
 #else
  XLAT(SOCK_STREAM),
+ #define XLAT_VAL_2 ((unsigned) (SOCK_STREAM))
+ #define XLAT_STR_2 STRINGIFY(SOCK_STREAM)
  XLAT(SOCK_DGRAM),
+ #define XLAT_VAL_3 ((unsigned) (SOCK_DGRAM))
+ #define XLAT_STR_3 STRINGIFY(SOCK_DGRAM)
 #endif
  XLAT(SOCK_RAW),
+ #define XLAT_VAL_4 ((unsigned) (SOCK_RAW))
+ #define XLAT_STR_4 STRINGIFY(SOCK_RAW)
  XLAT(SOCK_RDM),
+ #define XLAT_VAL_5 ((unsigned) (SOCK_RDM))
+ #define XLAT_STR_5 STRINGIFY(SOCK_RDM)
  XLAT(SOCK_SEQPACKET),
+ #define XLAT_VAL_6 ((unsigned) (SOCK_SEQPACKET))
+ #define XLAT_STR_6 STRINGIFY(SOCK_SEQPACKET)
  XLAT(SOCK_DCCP),
+ #define XLAT_VAL_7 ((unsigned) (SOCK_DCCP))
+ #define XLAT_STR_7 STRINGIFY(SOCK_DCCP)
  XLAT(SOCK_PACKET),
- XLAT_END
+ #define XLAT_VAL_8 ((unsigned) (SOCK_PACKET))
+ #define XLAT_STR_8 STRINGIFY(SOCK_PACKET)
 };
+const struct xlat socktypes[1] = { {
+ .data = socktypes_xdata,
+ .size = ARRAY_SIZE(socktypes_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 0cc647c6844ec469253912dc35e9714c08e106ce..b654d5ee5e3dc69eb802c72db77e552518405a39 100644 (file)
@@ -19,12 +19,30 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat sparc_kern_features[] = {
+static const struct xlat_data sparc_kern_features_xdata[] = {
  XLAT(KERN_FEATURE_MIXED_MODE_STACK),
- XLAT_END
+ #define XLAT_VAL_0 ((unsigned) (KERN_FEATURE_MIXED_MODE_STACK))
+ #define XLAT_STR_0 STRINGIFY(KERN_FEATURE_MIXED_MODE_STACK)
 };
-
+static
+const struct xlat sparc_kern_features[1] = { {
+ .data = sparc_kern_features_xdata,
+ .size = ARRAY_SIZE(sparc_kern_features_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index e0118330b15370952ef5de457cc424d7ad551ced..00e1b00fd7b413713f24f41e491ba9a5ba467279 100644 (file)
 
 # else
 
-static
-const struct xlat splice_flags[] = {
+static const struct xlat_data splice_flags_xdata[] = {
 #if defined(SPLICE_F_MOVE) || (defined(HAVE_DECL_SPLICE_F_MOVE) && HAVE_DECL_SPLICE_F_MOVE)
   XLAT(SPLICE_F_MOVE),
+ #define XLAT_VAL_0 ((unsigned) (SPLICE_F_MOVE))
+ #define XLAT_STR_0 STRINGIFY(SPLICE_F_MOVE)
 #endif
 #if defined(SPLICE_F_NONBLOCK) || (defined(HAVE_DECL_SPLICE_F_NONBLOCK) && HAVE_DECL_SPLICE_F_NONBLOCK)
   XLAT(SPLICE_F_NONBLOCK),
+ #define XLAT_VAL_1 ((unsigned) (SPLICE_F_NONBLOCK))
+ #define XLAT_STR_1 STRINGIFY(SPLICE_F_NONBLOCK)
 #endif
 #if defined(SPLICE_F_MORE) || (defined(HAVE_DECL_SPLICE_F_MORE) && HAVE_DECL_SPLICE_F_MORE)
   XLAT(SPLICE_F_MORE),
+ #define XLAT_VAL_2 ((unsigned) (SPLICE_F_MORE))
+ #define XLAT_STR_2 STRINGIFY(SPLICE_F_MORE)
 #endif
 #if defined(SPLICE_F_GIFT) || (defined(HAVE_DECL_SPLICE_F_GIFT) && HAVE_DECL_SPLICE_F_GIFT)
   XLAT(SPLICE_F_GIFT),
+ #define XLAT_VAL_3 ((unsigned) (SPLICE_F_GIFT))
+ #define XLAT_STR_3 STRINGIFY(SPLICE_F_GIFT)
 #endif
- XLAT_END
 };
+static
+const struct xlat splice_flags[1] = { {
+ .data = splice_flags_xdata,
+ .size = ARRAY_SIZE(splice_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 0c9a9c0efe0fc41f546acf27be76b29178b1baf6..f0bf21401b02d7d6acfba92480eed1f3e001226c 100644 (file)
 
 # else
 
-static
-const struct xlat sram_alloc_flags[] = {
+static const struct xlat_data sram_alloc_flags_xdata[] = {
 #if defined(L1_INST_SRAM) || (defined(HAVE_DECL_L1_INST_SRAM) && HAVE_DECL_L1_INST_SRAM)
   XLAT(L1_INST_SRAM),
+ #define XLAT_VAL_0 ((unsigned) (L1_INST_SRAM))
+ #define XLAT_STR_0 STRINGIFY(L1_INST_SRAM)
 #endif
 #if defined(L1_DATA_A_SRAM) || (defined(HAVE_DECL_L1_DATA_A_SRAM) && HAVE_DECL_L1_DATA_A_SRAM)
   XLAT(L1_DATA_A_SRAM),
+ #define XLAT_VAL_1 ((unsigned) (L1_DATA_A_SRAM))
+ #define XLAT_STR_1 STRINGIFY(L1_DATA_A_SRAM)
 #endif
 #if defined(L1_DATA_B_SRAM) || (defined(HAVE_DECL_L1_DATA_B_SRAM) && HAVE_DECL_L1_DATA_B_SRAM)
   XLAT(L1_DATA_B_SRAM),
+ #define XLAT_VAL_2 ((unsigned) (L1_DATA_B_SRAM))
+ #define XLAT_STR_2 STRINGIFY(L1_DATA_B_SRAM)
 #endif
 #if defined(L1_DATA_SRAM) || (defined(HAVE_DECL_L1_DATA_SRAM) && HAVE_DECL_L1_DATA_SRAM)
   XLAT(L1_DATA_SRAM),
+ #define XLAT_VAL_3 ((unsigned) (L1_DATA_SRAM))
+ #define XLAT_STR_3 STRINGIFY(L1_DATA_SRAM)
 #endif
 #if defined(L2_SRAM) || (defined(HAVE_DECL_L2_SRAM) && HAVE_DECL_L2_SRAM)
   XLAT(L2_SRAM),
+ #define XLAT_VAL_4 ((unsigned) (L2_SRAM))
+ #define XLAT_STR_4 STRINGIFY(L2_SRAM)
 #endif
- XLAT_END
 };
+static
+const struct xlat sram_alloc_flags[1] = { {
+ .data = sram_alloc_flags_xdata,
+ .size = ARRAY_SIZE(sram_alloc_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/st_check_enums.m4 b/xlat/st_check_enums.m4
new file mode 100644 (file)
index 0000000..448e07a
--- /dev/null
@@ -0,0 +1,30 @@
+AC_DEFUN([st_CHECK_ENUMS],[
+       st_CHECK_ENUMS_btrfs_compress_types
+       st_CHECK_ENUMS_close_range_flags
+       st_CHECK_ENUMS_loop_flags_options
+       st_CHECK_ENUMS_rtnl_ifla_xdp_attached_mode
+       st_CHECK_ENUMS_rtnl_ifla_xdp_attrs
+       st_CHECK_ENUMS_rtnl_link_attrs
+       st_CHECK_ENUMS_rtnl_tc_action_attrs
+       st_CHECK_ENUMS_rtnl_tca_stab_attrs
+       st_CHECK_ENUMS_rtnl_tca_stats_attrs
+       st_CHECK_ENUMS_sysctl_kern
+       st_CHECK_ENUMS_sysctl_net
+       st_CHECK_ENUMS_sysctl_net_core
+       st_CHECK_ENUMS_sysctl_net_ipv4
+       st_CHECK_ENUMS_sysctl_net_ipv4_conf
+       st_CHECK_ENUMS_sysctl_net_ipv4_route
+       st_CHECK_ENUMS_sysctl_net_ipv6
+       st_CHECK_ENUMS_sysctl_net_ipv6_route
+       st_CHECK_ENUMS_sysctl_net_unix
+       st_CHECK_ENUMS_sysctl_root
+       st_CHECK_ENUMS_sysctl_vm
+       st_CHECK_ENUMS_v4l2_buf_types
+       st_CHECK_ENUMS_v4l2_colorspaces
+       st_CHECK_ENUMS_v4l2_control_types
+       st_CHECK_ENUMS_v4l2_fields
+       st_CHECK_ENUMS_v4l2_framesize_types
+       st_CHECK_ENUMS_v4l2_memories
+       st_CHECK_ENUMS_v4l2_tuner_types
+       st_CHECK_ENUMS_waitid_types
+])
index caf606353dd05bc9f25fe44d7ef9d2a65efa3083..aa5d48ad3eabdd6749b32710adc14ccc024397d0 100644 (file)
@@ -82,21 +82,129 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat statfs_flags[] = {
+static const struct xlat_data statfs_flags_xdata[] = {
  XLAT(ST_VALID),
+ #define XLAT_VAL_0 ((unsigned) (ST_VALID))
+ #define XLAT_STR_0 STRINGIFY(ST_VALID)
  XLAT(ST_RDONLY),
+ #define XLAT_VAL_1 ((unsigned) (ST_RDONLY))
+ #define XLAT_STR_1 STRINGIFY(ST_RDONLY)
  XLAT(ST_NOSUID),
+ #define XLAT_VAL_2 ((unsigned) (ST_NOSUID))
+ #define XLAT_STR_2 STRINGIFY(ST_NOSUID)
  XLAT(ST_NODEV),
+ #define XLAT_VAL_3 ((unsigned) (ST_NODEV))
+ #define XLAT_STR_3 STRINGIFY(ST_NODEV)
  XLAT(ST_NOEXEC),
+ #define XLAT_VAL_4 ((unsigned) (ST_NOEXEC))
+ #define XLAT_STR_4 STRINGIFY(ST_NOEXEC)
  XLAT(ST_SYNCHRONOUS),
+ #define XLAT_VAL_5 ((unsigned) (ST_SYNCHRONOUS))
+ #define XLAT_STR_5 STRINGIFY(ST_SYNCHRONOUS)
  XLAT(ST_MANDLOCK),
+ #define XLAT_VAL_6 ((unsigned) (ST_MANDLOCK))
+ #define XLAT_STR_6 STRINGIFY(ST_MANDLOCK)
  XLAT(ST_NOATIME),
+ #define XLAT_VAL_7 ((unsigned) (ST_NOATIME))
+ #define XLAT_STR_7 STRINGIFY(ST_NOATIME)
  XLAT(ST_NODIRATIME),
+ #define XLAT_VAL_8 ((unsigned) (ST_NODIRATIME))
+ #define XLAT_STR_8 STRINGIFY(ST_NODIRATIME)
  XLAT(ST_RELATIME),
- XLAT_END
+ #define XLAT_VAL_9 ((unsigned) (ST_RELATIME))
+ #define XLAT_STR_9 STRINGIFY(ST_RELATIME)
 };
+static
+const struct xlat statfs_flags[1] = { {
+ .data = statfs_flags_xdata,
+ .size = ARRAY_SIZE(statfs_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 849ec0edf54bb78f165648f94e436fe942dff6f8..e8cad5f8ff1624a2c314f5ad8ff286381fbf7336 100644 (file)
@@ -45,6 +45,20 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define STATX_ATTR_AUTOMOUNT 0x00001000
 #endif
+#if defined(STATX_ATTR_MOUNT_ROOT) || (defined(HAVE_DECL_STATX_ATTR_MOUNT_ROOT) && HAVE_DECL_STATX_ATTR_MOUNT_ROOT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((STATX_ATTR_MOUNT_ROOT) == (0x00002000), "STATX_ATTR_MOUNT_ROOT != 0x00002000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define STATX_ATTR_MOUNT_ROOT 0x00002000
+#endif
+#if defined(STATX_ATTR_VERITY) || (defined(HAVE_DECL_STATX_ATTR_VERITY) && HAVE_DECL_STATX_ATTR_VERITY)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((STATX_ATTR_VERITY) == (0x00100000), "STATX_ATTR_VERITY != 0x00100000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define STATX_ATTR_VERITY 0x00100000
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
@@ -54,17 +68,107 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat statx_attrs[] = {
+static const struct xlat_data statx_attrs_xdata[] = {
  XLAT(STATX_ATTR_COMPRESSED),
+ #define XLAT_VAL_0 ((unsigned) (STATX_ATTR_COMPRESSED))
+ #define XLAT_STR_0 STRINGIFY(STATX_ATTR_COMPRESSED)
  XLAT(STATX_ATTR_IMMUTABLE),
+ #define XLAT_VAL_1 ((unsigned) (STATX_ATTR_IMMUTABLE))
+ #define XLAT_STR_1 STRINGIFY(STATX_ATTR_IMMUTABLE)
  XLAT(STATX_ATTR_APPEND),
+ #define XLAT_VAL_2 ((unsigned) (STATX_ATTR_APPEND))
+ #define XLAT_STR_2 STRINGIFY(STATX_ATTR_APPEND)
  XLAT(STATX_ATTR_NODUMP),
+ #define XLAT_VAL_3 ((unsigned) (STATX_ATTR_NODUMP))
+ #define XLAT_STR_3 STRINGIFY(STATX_ATTR_NODUMP)
  XLAT(STATX_ATTR_ENCRYPTED),
+ #define XLAT_VAL_4 ((unsigned) (STATX_ATTR_ENCRYPTED))
+ #define XLAT_STR_4 STRINGIFY(STATX_ATTR_ENCRYPTED)
  XLAT(STATX_ATTR_AUTOMOUNT),
- XLAT_END
+ #define XLAT_VAL_5 ((unsigned) (STATX_ATTR_AUTOMOUNT))
+ #define XLAT_STR_5 STRINGIFY(STATX_ATTR_AUTOMOUNT)
+ XLAT(STATX_ATTR_MOUNT_ROOT),
+ #define XLAT_VAL_6 ((unsigned) (STATX_ATTR_MOUNT_ROOT))
+ #define XLAT_STR_6 STRINGIFY(STATX_ATTR_MOUNT_ROOT)
+ XLAT(STATX_ATTR_VERITY),
+ #define XLAT_VAL_7 ((unsigned) (STATX_ATTR_VERITY))
+ #define XLAT_STR_7 STRINGIFY(STATX_ATTR_VERITY)
 };
+static
+const struct xlat statx_attrs[1] = { {
+ .data = statx_attrs_xdata,
+ .size = ARRAY_SIZE(statx_attrs_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index f6e40786a2176feddbe16c28d8df8192739bdd6c..3fc5e37e16d9810282bb26150ae00d09bafbb5a7 100644 (file)
@@ -4,3 +4,5 @@ STATX_ATTR_APPEND       0x00000020
 STATX_ATTR_NODUMP      0x00000040
 STATX_ATTR_ENCRYPTED   0x00000800
 STATX_ATTR_AUTOMOUNT   0x00001000
+STATX_ATTR_MOUNT_ROOT  0x00002000
+STATX_ATTR_VERITY      0x00100000
index f94ee8a5d1eaff8b3b88076c3d75fe70408647fb..b5538ba2540256e257f95e1b3dfe9bc4e034730b 100644 (file)
@@ -101,6 +101,13 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define STATX_BTIME 0x00000800U
 #endif
+#if defined(STATX_MNT_ID) || (defined(HAVE_DECL_STATX_MNT_ID) && HAVE_DECL_STATX_MNT_ID)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((STATX_MNT_ID) == (0x00001000U), "STATX_MNT_ID != 0x00001000U");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define STATX_MNT_ID 0x00001000U
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
@@ -110,26 +117,185 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat statx_masks[] = {
+static const struct xlat_data statx_masks_xdata[] = {
  XLAT(STATX_ALL),
+ #define XLAT_VAL_0 ((unsigned) (STATX_ALL))
+ #define XLAT_STR_0 STRINGIFY(STATX_ALL)
  XLAT(STATX_BASIC_STATS),
+ #define XLAT_VAL_1 ((unsigned) (STATX_BASIC_STATS))
+ #define XLAT_STR_1 STRINGIFY(STATX_BASIC_STATS)
 
  XLAT(STATX_TYPE),
+ #define XLAT_VAL_2 ((unsigned) (STATX_TYPE))
+ #define XLAT_STR_2 STRINGIFY(STATX_TYPE)
  XLAT(STATX_MODE),
+ #define XLAT_VAL_3 ((unsigned) (STATX_MODE))
+ #define XLAT_STR_3 STRINGIFY(STATX_MODE)
  XLAT(STATX_NLINK),
+ #define XLAT_VAL_4 ((unsigned) (STATX_NLINK))
+ #define XLAT_STR_4 STRINGIFY(STATX_NLINK)
  XLAT(STATX_UID),
+ #define XLAT_VAL_5 ((unsigned) (STATX_UID))
+ #define XLAT_STR_5 STRINGIFY(STATX_UID)
  XLAT(STATX_GID),
+ #define XLAT_VAL_6 ((unsigned) (STATX_GID))
+ #define XLAT_STR_6 STRINGIFY(STATX_GID)
  XLAT(STATX_ATIME),
+ #define XLAT_VAL_7 ((unsigned) (STATX_ATIME))
+ #define XLAT_STR_7 STRINGIFY(STATX_ATIME)
  XLAT(STATX_MTIME),
+ #define XLAT_VAL_8 ((unsigned) (STATX_MTIME))
+ #define XLAT_STR_8 STRINGIFY(STATX_MTIME)
  XLAT(STATX_CTIME),
+ #define XLAT_VAL_9 ((unsigned) (STATX_CTIME))
+ #define XLAT_STR_9 STRINGIFY(STATX_CTIME)
  XLAT(STATX_INO),
+ #define XLAT_VAL_10 ((unsigned) (STATX_INO))
+ #define XLAT_STR_10 STRINGIFY(STATX_INO)
  XLAT(STATX_SIZE),
+ #define XLAT_VAL_11 ((unsigned) (STATX_SIZE))
+ #define XLAT_STR_11 STRINGIFY(STATX_SIZE)
  XLAT(STATX_BLOCKS),
+ #define XLAT_VAL_12 ((unsigned) (STATX_BLOCKS))
+ #define XLAT_STR_12 STRINGIFY(STATX_BLOCKS)
  XLAT(STATX_BTIME),
- XLAT_END
+ #define XLAT_VAL_13 ((unsigned) (STATX_BTIME))
+ #define XLAT_STR_13 STRINGIFY(STATX_BTIME)
+ XLAT(STATX_MNT_ID),
+ #define XLAT_VAL_14 ((unsigned) (STATX_MNT_ID))
+ #define XLAT_STR_14 STRINGIFY(STATX_MNT_ID)
 };
+static
+const struct xlat statx_masks[1] = { {
+ .data = statx_masks_xdata,
+ .size = ARRAY_SIZE(statx_masks_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index d18dd25925accb8be4bbfda280a5ee9b22b2bff3..3438672bb4b5831780b1f97d96339b7011aad444 100644 (file)
@@ -13,3 +13,4 @@ STATX_INO             0x00000100U
 STATX_SIZE             0x00000200U
 STATX_BLOCKS           0x00000400U
 STATX_BTIME            0x00000800U
+STATX_MNT_ID           0x00001000U
index d03aa13f56f77d60cdc2e1a5f96535578b44247d..cd93d4bbf41863cdfd00e537f5170874f0e534a6 100644 (file)
@@ -40,15 +40,63 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat swap_flags[] = {
+static const struct xlat_data swap_flags_xdata[] = {
  XLAT(SWAP_FLAG_PREFER),
+ #define XLAT_VAL_0 ((unsigned) (SWAP_FLAG_PREFER))
+ #define XLAT_STR_0 STRINGIFY(SWAP_FLAG_PREFER)
  XLAT(SWAP_FLAG_DISCARD),
+ #define XLAT_VAL_1 ((unsigned) (SWAP_FLAG_DISCARD))
+ #define XLAT_STR_1 STRINGIFY(SWAP_FLAG_DISCARD)
  XLAT(SWAP_FLAG_DISCARD_ONCE),
+ #define XLAT_VAL_2 ((unsigned) (SWAP_FLAG_DISCARD_ONCE))
+ #define XLAT_STR_2 STRINGIFY(SWAP_FLAG_DISCARD_ONCE)
  XLAT(SWAP_FLAG_DISCARD_PAGES),
- XLAT_END
+ #define XLAT_VAL_3 ((unsigned) (SWAP_FLAG_DISCARD_PAGES))
+ #define XLAT_STR_3 STRINGIFY(SWAP_FLAG_DISCARD_PAGES)
 };
+static
+const struct xlat swap_flags[1] = { {
+ .data = swap_flags_xdata,
+ .size = ARRAY_SIZE(swap_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 2d7de908e3fa001664c0bb3a1091d0c0c72f0972..73e431539974e76f00d04a3de50fc8b06716f7d9 100644 (file)
@@ -33,14 +33,52 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat sync_file_range_flags[] = {
+static const struct xlat_data sync_file_range_flags_xdata[] = {
  XLAT(SYNC_FILE_RANGE_WAIT_BEFORE),
+ #define XLAT_VAL_0 ((unsigned) (SYNC_FILE_RANGE_WAIT_BEFORE))
+ #define XLAT_STR_0 STRINGIFY(SYNC_FILE_RANGE_WAIT_BEFORE)
  XLAT(SYNC_FILE_RANGE_WRITE),
+ #define XLAT_VAL_1 ((unsigned) (SYNC_FILE_RANGE_WRITE))
+ #define XLAT_STR_1 STRINGIFY(SYNC_FILE_RANGE_WRITE)
  XLAT(SYNC_FILE_RANGE_WAIT_AFTER),
- XLAT_END
+ #define XLAT_VAL_2 ((unsigned) (SYNC_FILE_RANGE_WAIT_AFTER))
+ #define XLAT_STR_2 STRINGIFY(SYNC_FILE_RANGE_WAIT_AFTER)
 };
+static
+const struct xlat sync_file_range_flags[1] = { {
+ .data = sync_file_range_flags_xdata,
+ .size = ARRAY_SIZE(sync_file_range_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index ea1acdb61e40384974d1804a0eb9aba838505866..9e1b80c4b655ecdf718d7109aa75f67dcc698c88 100644 (file)
 
 # else
 
-static
-const struct xlat sysctl_kern[] = {
+static const struct xlat_data sysctl_kern_xdata[] = {
  XLAT(KERN_OSTYPE),
+ #define XLAT_VAL_0 ((unsigned) (KERN_OSTYPE))
+ #define XLAT_STR_0 STRINGIFY(KERN_OSTYPE)
  XLAT(KERN_OSRELEASE),
+ #define XLAT_VAL_1 ((unsigned) (KERN_OSRELEASE))
+ #define XLAT_STR_1 STRINGIFY(KERN_OSRELEASE)
  XLAT(KERN_OSREV),
+ #define XLAT_VAL_2 ((unsigned) (KERN_OSREV))
+ #define XLAT_STR_2 STRINGIFY(KERN_OSREV)
  XLAT(KERN_VERSION),
+ #define XLAT_VAL_3 ((unsigned) (KERN_VERSION))
+ #define XLAT_STR_3 STRINGIFY(KERN_VERSION)
  XLAT(KERN_SECUREMASK),
+ #define XLAT_VAL_4 ((unsigned) (KERN_SECUREMASK))
+ #define XLAT_STR_4 STRINGIFY(KERN_SECUREMASK)
  XLAT(KERN_PROF),
+ #define XLAT_VAL_5 ((unsigned) (KERN_PROF))
+ #define XLAT_STR_5 STRINGIFY(KERN_PROF)
  XLAT(KERN_NODENAME),
+ #define XLAT_VAL_6 ((unsigned) (KERN_NODENAME))
+ #define XLAT_STR_6 STRINGIFY(KERN_NODENAME)
  XLAT(KERN_DOMAINNAME),
+ #define XLAT_VAL_7 ((unsigned) (KERN_DOMAINNAME))
+ #define XLAT_STR_7 STRINGIFY(KERN_DOMAINNAME)
  XLAT(KERN_PANIC),
+ #define XLAT_VAL_8 ((unsigned) (KERN_PANIC))
+ #define XLAT_STR_8 STRINGIFY(KERN_PANIC)
  XLAT(KERN_REALROOTDEV),
+ #define XLAT_VAL_9 ((unsigned) (KERN_REALROOTDEV))
+ #define XLAT_STR_9 STRINGIFY(KERN_REALROOTDEV)
  XLAT(KERN_SPARC_REBOOT),
+ #define XLAT_VAL_10 ((unsigned) (KERN_SPARC_REBOOT))
+ #define XLAT_STR_10 STRINGIFY(KERN_SPARC_REBOOT)
  XLAT(KERN_CTLALTDEL),
+ #define XLAT_VAL_11 ((unsigned) (KERN_CTLALTDEL))
+ #define XLAT_STR_11 STRINGIFY(KERN_CTLALTDEL)
  XLAT(KERN_PRINTK),
+ #define XLAT_VAL_12 ((unsigned) (KERN_PRINTK))
+ #define XLAT_STR_12 STRINGIFY(KERN_PRINTK)
  XLAT(KERN_NAMETRANS),
+ #define XLAT_VAL_13 ((unsigned) (KERN_NAMETRANS))
+ #define XLAT_STR_13 STRINGIFY(KERN_NAMETRANS)
  XLAT(KERN_PPC_HTABRECLAIM),
+ #define XLAT_VAL_14 ((unsigned) (KERN_PPC_HTABRECLAIM))
+ #define XLAT_STR_14 STRINGIFY(KERN_PPC_HTABRECLAIM)
  XLAT(KERN_PPC_ZEROPAGED),
+ #define XLAT_VAL_15 ((unsigned) (KERN_PPC_ZEROPAGED))
+ #define XLAT_STR_15 STRINGIFY(KERN_PPC_ZEROPAGED)
  XLAT(KERN_PPC_POWERSAVE_NAP),
+ #define XLAT_VAL_16 ((unsigned) (KERN_PPC_POWERSAVE_NAP))
+ #define XLAT_STR_16 STRINGIFY(KERN_PPC_POWERSAVE_NAP)
  XLAT(KERN_MODPROBE),
+ #define XLAT_VAL_17 ((unsigned) (KERN_MODPROBE))
+ #define XLAT_STR_17 STRINGIFY(KERN_MODPROBE)
  XLAT(KERN_SG_BIG_BUFF),
+ #define XLAT_VAL_18 ((unsigned) (KERN_SG_BIG_BUFF))
+ #define XLAT_STR_18 STRINGIFY(KERN_SG_BIG_BUFF)
  XLAT(KERN_ACCT),
+ #define XLAT_VAL_19 ((unsigned) (KERN_ACCT))
+ #define XLAT_STR_19 STRINGIFY(KERN_ACCT)
  XLAT(KERN_PPC_L2CR),
+ #define XLAT_VAL_20 ((unsigned) (KERN_PPC_L2CR))
+ #define XLAT_STR_20 STRINGIFY(KERN_PPC_L2CR)
  XLAT(KERN_RTSIGNR),
+ #define XLAT_VAL_21 ((unsigned) (KERN_RTSIGNR))
+ #define XLAT_STR_21 STRINGIFY(KERN_RTSIGNR)
  XLAT(KERN_RTSIGMAX),
+ #define XLAT_VAL_22 ((unsigned) (KERN_RTSIGMAX))
+ #define XLAT_STR_22 STRINGIFY(KERN_RTSIGMAX)
  XLAT(KERN_SHMMAX),
+ #define XLAT_VAL_23 ((unsigned) (KERN_SHMMAX))
+ #define XLAT_STR_23 STRINGIFY(KERN_SHMMAX)
  XLAT(KERN_MSGMAX),
+ #define XLAT_VAL_24 ((unsigned) (KERN_MSGMAX))
+ #define XLAT_STR_24 STRINGIFY(KERN_MSGMAX)
  XLAT(KERN_MSGMNB),
+ #define XLAT_VAL_25 ((unsigned) (KERN_MSGMNB))
+ #define XLAT_STR_25 STRINGIFY(KERN_MSGMNB)
  XLAT(KERN_MSGPOOL),
+ #define XLAT_VAL_26 ((unsigned) (KERN_MSGPOOL))
+ #define XLAT_STR_26 STRINGIFY(KERN_MSGPOOL)
  XLAT(KERN_SYSRQ),
+ #define XLAT_VAL_27 ((unsigned) (KERN_SYSRQ))
+ #define XLAT_STR_27 STRINGIFY(KERN_SYSRQ)
  XLAT(KERN_MAX_THREADS),
+ #define XLAT_VAL_28 ((unsigned) (KERN_MAX_THREADS))
+ #define XLAT_STR_28 STRINGIFY(KERN_MAX_THREADS)
  XLAT(KERN_RANDOM),
+ #define XLAT_VAL_29 ((unsigned) (KERN_RANDOM))
+ #define XLAT_STR_29 STRINGIFY(KERN_RANDOM)
  XLAT(KERN_SHMALL),
+ #define XLAT_VAL_30 ((unsigned) (KERN_SHMALL))
+ #define XLAT_STR_30 STRINGIFY(KERN_SHMALL)
  XLAT(KERN_MSGMNI),
+ #define XLAT_VAL_31 ((unsigned) (KERN_MSGMNI))
+ #define XLAT_STR_31 STRINGIFY(KERN_MSGMNI)
  XLAT(KERN_SEM),
+ #define XLAT_VAL_32 ((unsigned) (KERN_SEM))
+ #define XLAT_STR_32 STRINGIFY(KERN_SEM)
  XLAT(KERN_SPARC_STOP_A),
+ #define XLAT_VAL_33 ((unsigned) (KERN_SPARC_STOP_A))
+ #define XLAT_STR_33 STRINGIFY(KERN_SPARC_STOP_A)
  XLAT(KERN_SHMMNI),
+ #define XLAT_VAL_34 ((unsigned) (KERN_SHMMNI))
+ #define XLAT_STR_34 STRINGIFY(KERN_SHMMNI)
  XLAT(KERN_OVERFLOWUID),
+ #define XLAT_VAL_35 ((unsigned) (KERN_OVERFLOWUID))
+ #define XLAT_STR_35 STRINGIFY(KERN_OVERFLOWUID)
  XLAT(KERN_OVERFLOWGID),
+ #define XLAT_VAL_36 ((unsigned) (KERN_OVERFLOWGID))
+ #define XLAT_STR_36 STRINGIFY(KERN_OVERFLOWGID)
  XLAT(KERN_SHMPATH),
+ #define XLAT_VAL_37 ((unsigned) (KERN_SHMPATH))
+ #define XLAT_STR_37 STRINGIFY(KERN_SHMPATH)
  XLAT(KERN_HOTPLUG),
+ #define XLAT_VAL_38 ((unsigned) (KERN_HOTPLUG))
+ #define XLAT_STR_38 STRINGIFY(KERN_HOTPLUG)
  XLAT(KERN_IEEE_EMULATION_WARNINGS),
+ #define XLAT_VAL_39 ((unsigned) (KERN_IEEE_EMULATION_WARNINGS))
+ #define XLAT_STR_39 STRINGIFY(KERN_IEEE_EMULATION_WARNINGS)
  XLAT(KERN_S390_USER_DEBUG_LOGGING),
+ #define XLAT_VAL_40 ((unsigned) (KERN_S390_USER_DEBUG_LOGGING))
+ #define XLAT_STR_40 STRINGIFY(KERN_S390_USER_DEBUG_LOGGING)
  XLAT(KERN_CORE_USES_PID),
+ #define XLAT_VAL_41 ((unsigned) (KERN_CORE_USES_PID))
+ #define XLAT_STR_41 STRINGIFY(KERN_CORE_USES_PID)
  XLAT(KERN_TAINTED),
+ #define XLAT_VAL_42 ((unsigned) (KERN_TAINTED))
+ #define XLAT_STR_42 STRINGIFY(KERN_TAINTED)
  XLAT(KERN_CADPID),
+ #define XLAT_VAL_43 ((unsigned) (KERN_CADPID))
+ #define XLAT_STR_43 STRINGIFY(KERN_CADPID)
  XLAT(KERN_PIDMAX),
+ #define XLAT_VAL_44 ((unsigned) (KERN_PIDMAX))
+ #define XLAT_STR_44 STRINGIFY(KERN_PIDMAX)
  XLAT(KERN_CORE_PATTERN),
+ #define XLAT_VAL_45 ((unsigned) (KERN_CORE_PATTERN))
+ #define XLAT_STR_45 STRINGIFY(KERN_CORE_PATTERN)
  XLAT(KERN_PANIC_ON_OOPS),
+ #define XLAT_VAL_46 ((unsigned) (KERN_PANIC_ON_OOPS))
+ #define XLAT_STR_46 STRINGIFY(KERN_PANIC_ON_OOPS)
  XLAT(KERN_HPPA_PWRSW),
+ #define XLAT_VAL_47 ((unsigned) (KERN_HPPA_PWRSW))
+ #define XLAT_STR_47 STRINGIFY(KERN_HPPA_PWRSW)
  XLAT(KERN_HPPA_UNALIGNED),
+ #define XLAT_VAL_48 ((unsigned) (KERN_HPPA_UNALIGNED))
+ #define XLAT_STR_48 STRINGIFY(KERN_HPPA_UNALIGNED)
 #if defined(KERN_PRINTK_RATELIMIT) || (defined(HAVE_DECL_KERN_PRINTK_RATELIMIT) && HAVE_DECL_KERN_PRINTK_RATELIMIT)
   XLAT(KERN_PRINTK_RATELIMIT),
+ #define XLAT_VAL_49 ((unsigned) (KERN_PRINTK_RATELIMIT))
+ #define XLAT_STR_49 STRINGIFY(KERN_PRINTK_RATELIMIT)
 #endif
 #if defined(KERN_PRINTK_RATELIMIT_BURST) || (defined(HAVE_DECL_KERN_PRINTK_RATELIMIT_BURST) && HAVE_DECL_KERN_PRINTK_RATELIMIT_BURST)
   XLAT(KERN_PRINTK_RATELIMIT_BURST),
+ #define XLAT_VAL_50 ((unsigned) (KERN_PRINTK_RATELIMIT_BURST))
+ #define XLAT_STR_50 STRINGIFY(KERN_PRINTK_RATELIMIT_BURST)
 #endif
 #if defined(KERN_PTY) || (defined(HAVE_DECL_KERN_PTY) && HAVE_DECL_KERN_PTY)
   XLAT(KERN_PTY),
+ #define XLAT_VAL_51 ((unsigned) (KERN_PTY))
+ #define XLAT_STR_51 STRINGIFY(KERN_PTY)
 #endif
 #if defined(KERN_NGROUPS_MAX) || (defined(HAVE_DECL_KERN_NGROUPS_MAX) && HAVE_DECL_KERN_NGROUPS_MAX)
   XLAT(KERN_NGROUPS_MAX),
+ #define XLAT_VAL_52 ((unsigned) (KERN_NGROUPS_MAX))
+ #define XLAT_STR_52 STRINGIFY(KERN_NGROUPS_MAX)
 #endif
 #if defined(KERN_SPARC_SCONS_PWROFF) || (defined(HAVE_DECL_KERN_SPARC_SCONS_PWROFF) && HAVE_DECL_KERN_SPARC_SCONS_PWROFF)
   XLAT(KERN_SPARC_SCONS_PWROFF),
+ #define XLAT_VAL_53 ((unsigned) (KERN_SPARC_SCONS_PWROFF))
+ #define XLAT_STR_53 STRINGIFY(KERN_SPARC_SCONS_PWROFF)
 #endif
 #if defined(KERN_HZ_TIMER) || (defined(HAVE_DECL_KERN_HZ_TIMER) && HAVE_DECL_KERN_HZ_TIMER)
   XLAT(KERN_HZ_TIMER),
+ #define XLAT_VAL_54 ((unsigned) (KERN_HZ_TIMER))
+ #define XLAT_STR_54 STRINGIFY(KERN_HZ_TIMER)
 #endif
 #if defined(KERN_UNKNOWN_NMI_PANIC) || (defined(HAVE_DECL_KERN_UNKNOWN_NMI_PANIC) && HAVE_DECL_KERN_UNKNOWN_NMI_PANIC)
   XLAT(KERN_UNKNOWN_NMI_PANIC),
+ #define XLAT_VAL_55 ((unsigned) (KERN_UNKNOWN_NMI_PANIC))
+ #define XLAT_STR_55 STRINGIFY(KERN_UNKNOWN_NMI_PANIC)
 #endif
 #if defined(KERN_BOOTLOADER_TYPE) || (defined(HAVE_DECL_KERN_BOOTLOADER_TYPE) && HAVE_DECL_KERN_BOOTLOADER_TYPE)
   XLAT(KERN_BOOTLOADER_TYPE),
+ #define XLAT_VAL_56 ((unsigned) (KERN_BOOTLOADER_TYPE))
+ #define XLAT_STR_56 STRINGIFY(KERN_BOOTLOADER_TYPE)
 #endif
 #if defined(KERN_RANDOMIZE) || (defined(HAVE_DECL_KERN_RANDOMIZE) && HAVE_DECL_KERN_RANDOMIZE)
   XLAT(KERN_RANDOMIZE),
+ #define XLAT_VAL_57 ((unsigned) (KERN_RANDOMIZE))
+ #define XLAT_STR_57 STRINGIFY(KERN_RANDOMIZE)
 #endif
 #if defined(KERN_SETUID_DUMPABLE) || (defined(HAVE_DECL_KERN_SETUID_DUMPABLE) && HAVE_DECL_KERN_SETUID_DUMPABLE)
   XLAT(KERN_SETUID_DUMPABLE),
+ #define XLAT_VAL_58 ((unsigned) (KERN_SETUID_DUMPABLE))
+ #define XLAT_STR_58 STRINGIFY(KERN_SETUID_DUMPABLE)
 #endif
 #if defined(KERN_SPIN_RETRY) || (defined(HAVE_DECL_KERN_SPIN_RETRY) && HAVE_DECL_KERN_SPIN_RETRY)
   XLAT(KERN_SPIN_RETRY),
+ #define XLAT_VAL_59 ((unsigned) (KERN_SPIN_RETRY))
+ #define XLAT_STR_59 STRINGIFY(KERN_SPIN_RETRY)
 #endif
 #if defined(KERN_ACPI_VIDEO_FLAGS) || (defined(HAVE_DECL_KERN_ACPI_VIDEO_FLAGS) && HAVE_DECL_KERN_ACPI_VIDEO_FLAGS)
   XLAT(KERN_ACPI_VIDEO_FLAGS),
+ #define XLAT_VAL_60 ((unsigned) (KERN_ACPI_VIDEO_FLAGS))
+ #define XLAT_STR_60 STRINGIFY(KERN_ACPI_VIDEO_FLAGS)
 #endif
 #if defined(KERN_IA64_UNALIGNED) || (defined(HAVE_DECL_KERN_IA64_UNALIGNED) && HAVE_DECL_KERN_IA64_UNALIGNED)
   XLAT(KERN_IA64_UNALIGNED),
+ #define XLAT_VAL_61 ((unsigned) (KERN_IA64_UNALIGNED))
+ #define XLAT_STR_61 STRINGIFY(KERN_IA64_UNALIGNED)
 #endif
 #if defined(KERN_COMPAT_LOG) || (defined(HAVE_DECL_KERN_COMPAT_LOG) && HAVE_DECL_KERN_COMPAT_LOG)
   XLAT(KERN_COMPAT_LOG),
+ #define XLAT_VAL_62 ((unsigned) (KERN_COMPAT_LOG))
+ #define XLAT_STR_62 STRINGIFY(KERN_COMPAT_LOG)
 #endif
 #if defined(KERN_MAX_LOCK_DEPTH) || (defined(HAVE_DECL_KERN_MAX_LOCK_DEPTH) && HAVE_DECL_KERN_MAX_LOCK_DEPTH)
   XLAT(KERN_MAX_LOCK_DEPTH),
+ #define XLAT_VAL_63 ((unsigned) (KERN_MAX_LOCK_DEPTH))
+ #define XLAT_STR_63 STRINGIFY(KERN_MAX_LOCK_DEPTH)
 #endif
 #if defined(KERN_NMI_WATCHDOG) || (defined(HAVE_DECL_KERN_NMI_WATCHDOG) && HAVE_DECL_KERN_NMI_WATCHDOG)
   XLAT(KERN_NMI_WATCHDOG),
+ #define XLAT_VAL_64 ((unsigned) (KERN_NMI_WATCHDOG))
+ #define XLAT_STR_64 STRINGIFY(KERN_NMI_WATCHDOG)
 #endif
 #if defined(KERN_PANIC_ON_NMI) || (defined(HAVE_DECL_KERN_PANIC_ON_NMI) && HAVE_DECL_KERN_PANIC_ON_NMI)
   XLAT(KERN_PANIC_ON_NMI),
+ #define XLAT_VAL_65 ((unsigned) (KERN_PANIC_ON_NMI))
+ #define XLAT_STR_65 STRINGIFY(KERN_PANIC_ON_NMI)
 #endif
 #if defined(KERN_PANIC_ON_WARN) || (defined(HAVE_DECL_KERN_PANIC_ON_WARN) && HAVE_DECL_KERN_PANIC_ON_WARN)
   XLAT(KERN_PANIC_ON_WARN),
+ #define XLAT_VAL_66 ((unsigned) (KERN_PANIC_ON_WARN))
+ #define XLAT_STR_66 STRINGIFY(KERN_PANIC_ON_WARN)
 #endif
 #if defined(KERN_PANIC_PRINT) || (defined(HAVE_DECL_KERN_PANIC_PRINT) && HAVE_DECL_KERN_PANIC_PRINT)
   XLAT(KERN_PANIC_PRINT),
+ #define XLAT_VAL_67 ((unsigned) (KERN_PANIC_PRINT))
+ #define XLAT_STR_67 STRINGIFY(KERN_PANIC_PRINT)
 #endif
- XLAT_END
 };
+static
+const struct xlat sysctl_kern[1] = { {
+ .data = sysctl_kern_xdata,
+ .size = ARRAY_SIZE(sysctl_kern_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+#  ifdef XLAT_VAL_30
+  | XLAT_VAL_30
+#  endif
+#  ifdef XLAT_VAL_31
+  | XLAT_VAL_31
+#  endif
+#  ifdef XLAT_VAL_32
+  | XLAT_VAL_32
+#  endif
+#  ifdef XLAT_VAL_33
+  | XLAT_VAL_33
+#  endif
+#  ifdef XLAT_VAL_34
+  | XLAT_VAL_34
+#  endif
+#  ifdef XLAT_VAL_35
+  | XLAT_VAL_35
+#  endif
+#  ifdef XLAT_VAL_36
+  | XLAT_VAL_36
+#  endif
+#  ifdef XLAT_VAL_37
+  | XLAT_VAL_37
+#  endif
+#  ifdef XLAT_VAL_38
+  | XLAT_VAL_38
+#  endif
+#  ifdef XLAT_VAL_39
+  | XLAT_VAL_39
+#  endif
+#  ifdef XLAT_VAL_40
+  | XLAT_VAL_40
+#  endif
+#  ifdef XLAT_VAL_41
+  | XLAT_VAL_41
+#  endif
+#  ifdef XLAT_VAL_42
+  | XLAT_VAL_42
+#  endif
+#  ifdef XLAT_VAL_43
+  | XLAT_VAL_43
+#  endif
+#  ifdef XLAT_VAL_44
+  | XLAT_VAL_44
+#  endif
+#  ifdef XLAT_VAL_45
+  | XLAT_VAL_45
+#  endif
+#  ifdef XLAT_VAL_46
+  | XLAT_VAL_46
+#  endif
+#  ifdef XLAT_VAL_47
+  | XLAT_VAL_47
+#  endif
+#  ifdef XLAT_VAL_48
+  | XLAT_VAL_48
+#  endif
+#  ifdef XLAT_VAL_49
+  | XLAT_VAL_49
+#  endif
+#  ifdef XLAT_VAL_50
+  | XLAT_VAL_50
+#  endif
+#  ifdef XLAT_VAL_51
+  | XLAT_VAL_51
+#  endif
+#  ifdef XLAT_VAL_52
+  | XLAT_VAL_52
+#  endif
+#  ifdef XLAT_VAL_53
+  | XLAT_VAL_53
+#  endif
+#  ifdef XLAT_VAL_54
+  | XLAT_VAL_54
+#  endif
+#  ifdef XLAT_VAL_55
+  | XLAT_VAL_55
+#  endif
+#  ifdef XLAT_VAL_56
+  | XLAT_VAL_56
+#  endif
+#  ifdef XLAT_VAL_57
+  | XLAT_VAL_57
+#  endif
+#  ifdef XLAT_VAL_58
+  | XLAT_VAL_58
+#  endif
+#  ifdef XLAT_VAL_59
+  | XLAT_VAL_59
+#  endif
+#  ifdef XLAT_VAL_60
+  | XLAT_VAL_60
+#  endif
+#  ifdef XLAT_VAL_61
+  | XLAT_VAL_61
+#  endif
+#  ifdef XLAT_VAL_62
+  | XLAT_VAL_62
+#  endif
+#  ifdef XLAT_VAL_63
+  | XLAT_VAL_63
+#  endif
+#  ifdef XLAT_VAL_64
+  | XLAT_VAL_64
+#  endif
+#  ifdef XLAT_VAL_65
+  | XLAT_VAL_65
+#  endif
+#  ifdef XLAT_VAL_66
+  | XLAT_VAL_66
+#  endif
+#  ifdef XLAT_VAL_67
+  | XLAT_VAL_67
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+#  ifdef XLAT_STR_30
+  + sizeof(XLAT_STR_30)
+#  endif
+#  ifdef XLAT_STR_31
+  + sizeof(XLAT_STR_31)
+#  endif
+#  ifdef XLAT_STR_32
+  + sizeof(XLAT_STR_32)
+#  endif
+#  ifdef XLAT_STR_33
+  + sizeof(XLAT_STR_33)
+#  endif
+#  ifdef XLAT_STR_34
+  + sizeof(XLAT_STR_34)
+#  endif
+#  ifdef XLAT_STR_35
+  + sizeof(XLAT_STR_35)
+#  endif
+#  ifdef XLAT_STR_36
+  + sizeof(XLAT_STR_36)
+#  endif
+#  ifdef XLAT_STR_37
+  + sizeof(XLAT_STR_37)
+#  endif
+#  ifdef XLAT_STR_38
+  + sizeof(XLAT_STR_38)
+#  endif
+#  ifdef XLAT_STR_39
+  + sizeof(XLAT_STR_39)
+#  endif
+#  ifdef XLAT_STR_40
+  + sizeof(XLAT_STR_40)
+#  endif
+#  ifdef XLAT_STR_41
+  + sizeof(XLAT_STR_41)
+#  endif
+#  ifdef XLAT_STR_42
+  + sizeof(XLAT_STR_42)
+#  endif
+#  ifdef XLAT_STR_43
+  + sizeof(XLAT_STR_43)
+#  endif
+#  ifdef XLAT_STR_44
+  + sizeof(XLAT_STR_44)
+#  endif
+#  ifdef XLAT_STR_45
+  + sizeof(XLAT_STR_45)
+#  endif
+#  ifdef XLAT_STR_46
+  + sizeof(XLAT_STR_46)
+#  endif
+#  ifdef XLAT_STR_47
+  + sizeof(XLAT_STR_47)
+#  endif
+#  ifdef XLAT_STR_48
+  + sizeof(XLAT_STR_48)
+#  endif
+#  ifdef XLAT_STR_49
+  + sizeof(XLAT_STR_49)
+#  endif
+#  ifdef XLAT_STR_50
+  + sizeof(XLAT_STR_50)
+#  endif
+#  ifdef XLAT_STR_51
+  + sizeof(XLAT_STR_51)
+#  endif
+#  ifdef XLAT_STR_52
+  + sizeof(XLAT_STR_52)
+#  endif
+#  ifdef XLAT_STR_53
+  + sizeof(XLAT_STR_53)
+#  endif
+#  ifdef XLAT_STR_54
+  + sizeof(XLAT_STR_54)
+#  endif
+#  ifdef XLAT_STR_55
+  + sizeof(XLAT_STR_55)
+#  endif
+#  ifdef XLAT_STR_56
+  + sizeof(XLAT_STR_56)
+#  endif
+#  ifdef XLAT_STR_57
+  + sizeof(XLAT_STR_57)
+#  endif
+#  ifdef XLAT_STR_58
+  + sizeof(XLAT_STR_58)
+#  endif
+#  ifdef XLAT_STR_59
+  + sizeof(XLAT_STR_59)
+#  endif
+#  ifdef XLAT_STR_60
+  + sizeof(XLAT_STR_60)
+#  endif
+#  ifdef XLAT_STR_61
+  + sizeof(XLAT_STR_61)
+#  endif
+#  ifdef XLAT_STR_62
+  + sizeof(XLAT_STR_62)
+#  endif
+#  ifdef XLAT_STR_63
+  + sizeof(XLAT_STR_63)
+#  endif
+#  ifdef XLAT_STR_64
+  + sizeof(XLAT_STR_64)
+#  endif
+#  ifdef XLAT_STR_65
+  + sizeof(XLAT_STR_65)
+#  endif
+#  ifdef XLAT_STR_66
+  + sizeof(XLAT_STR_66)
+#  endif
+#  ifdef XLAT_STR_67
+  + sizeof(XLAT_STR_67)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
+#  undef XLAT_STR_30
+#  undef XLAT_VAL_30
+#  undef XLAT_STR_31
+#  undef XLAT_VAL_31
+#  undef XLAT_STR_32
+#  undef XLAT_VAL_32
+#  undef XLAT_STR_33
+#  undef XLAT_VAL_33
+#  undef XLAT_STR_34
+#  undef XLAT_VAL_34
+#  undef XLAT_STR_35
+#  undef XLAT_VAL_35
+#  undef XLAT_STR_36
+#  undef XLAT_VAL_36
+#  undef XLAT_STR_37
+#  undef XLAT_VAL_37
+#  undef XLAT_STR_38
+#  undef XLAT_VAL_38
+#  undef XLAT_STR_39
+#  undef XLAT_VAL_39
+#  undef XLAT_STR_40
+#  undef XLAT_VAL_40
+#  undef XLAT_STR_41
+#  undef XLAT_VAL_41
+#  undef XLAT_STR_42
+#  undef XLAT_VAL_42
+#  undef XLAT_STR_43
+#  undef XLAT_VAL_43
+#  undef XLAT_STR_44
+#  undef XLAT_VAL_44
+#  undef XLAT_STR_45
+#  undef XLAT_VAL_45
+#  undef XLAT_STR_46
+#  undef XLAT_VAL_46
+#  undef XLAT_STR_47
+#  undef XLAT_VAL_47
+#  undef XLAT_STR_48
+#  undef XLAT_VAL_48
+#  undef XLAT_STR_49
+#  undef XLAT_VAL_49
+#  undef XLAT_STR_50
+#  undef XLAT_VAL_50
+#  undef XLAT_STR_51
+#  undef XLAT_VAL_51
+#  undef XLAT_STR_52
+#  undef XLAT_VAL_52
+#  undef XLAT_STR_53
+#  undef XLAT_VAL_53
+#  undef XLAT_STR_54
+#  undef XLAT_VAL_54
+#  undef XLAT_STR_55
+#  undef XLAT_VAL_55
+#  undef XLAT_STR_56
+#  undef XLAT_VAL_56
+#  undef XLAT_STR_57
+#  undef XLAT_VAL_57
+#  undef XLAT_STR_58
+#  undef XLAT_VAL_58
+#  undef XLAT_STR_59
+#  undef XLAT_VAL_59
+#  undef XLAT_STR_60
+#  undef XLAT_VAL_60
+#  undef XLAT_STR_61
+#  undef XLAT_VAL_61
+#  undef XLAT_STR_62
+#  undef XLAT_VAL_62
+#  undef XLAT_STR_63
+#  undef XLAT_VAL_63
+#  undef XLAT_STR_64
+#  undef XLAT_VAL_64
+#  undef XLAT_STR_65
+#  undef XLAT_VAL_65
+#  undef XLAT_STR_66
+#  undef XLAT_VAL_66
+#  undef XLAT_STR_67
+#  undef XLAT_VAL_67
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index f920f1f4bc5885583476f6c7dc444524962f3d3f..150657bc50896a0cfb108d16e5ab146b27beae94 100644 (file)
@@ -1,3 +1,6 @@
+#enum
+#include <sys/types.h>
+#include <linux/sysctl.h>
 #unconditional
 KERN_OSTYPE
 KERN_OSRELEASE
diff --git a/xlat/sysctl_kern.m4 b/xlat/sysctl_kern.m4
new file mode 100644 (file)
index 0000000..2ea68b1
--- /dev/null
@@ -0,0 +1,75 @@
+dnl Generated by ./xlat/gen.sh from ./xlat/sysctl_kern.in; do not edit.
+AC_DEFUN([st_CHECK_ENUMS_sysctl_kern],[
+AC_CHECK_DECLS(m4_normalize([
+KERN_OSTYPE,
+KERN_OSRELEASE,
+KERN_OSREV,
+KERN_VERSION,
+KERN_SECUREMASK,
+KERN_PROF,
+KERN_NODENAME,
+KERN_DOMAINNAME,
+KERN_PANIC,
+KERN_REALROOTDEV,
+KERN_SPARC_REBOOT,
+KERN_CTLALTDEL,
+KERN_PRINTK,
+KERN_NAMETRANS,
+KERN_PPC_HTABRECLAIM,
+KERN_PPC_ZEROPAGED,
+KERN_PPC_POWERSAVE_NAP,
+KERN_MODPROBE,
+KERN_SG_BIG_BUFF,
+KERN_ACCT,
+KERN_PPC_L2CR,
+KERN_RTSIGNR,
+KERN_RTSIGMAX,
+KERN_SHMMAX,
+KERN_MSGMAX,
+KERN_MSGMNB,
+KERN_MSGPOOL,
+KERN_SYSRQ,
+KERN_MAX_THREADS,
+KERN_RANDOM,
+KERN_SHMALL,
+KERN_MSGMNI,
+KERN_SEM,
+KERN_SPARC_STOP_A,
+KERN_SHMMNI,
+KERN_OVERFLOWUID,
+KERN_OVERFLOWGID,
+KERN_SHMPATH,
+KERN_HOTPLUG,
+KERN_IEEE_EMULATION_WARNINGS,
+KERN_S390_USER_DEBUG_LOGGING,
+KERN_CORE_USES_PID,
+KERN_TAINTED,
+KERN_CADPID,
+KERN_PIDMAX,
+KERN_CORE_PATTERN,
+KERN_PANIC_ON_OOPS,
+KERN_HPPA_PWRSW,
+KERN_HPPA_UNALIGNED,
+KERN_PRINTK_RATELIMIT,
+KERN_PRINTK_RATELIMIT_BURST,
+KERN_PTY,
+KERN_NGROUPS_MAX,
+KERN_SPARC_SCONS_PWROFF,
+KERN_HZ_TIMER,
+KERN_UNKNOWN_NMI_PANIC,
+KERN_BOOTLOADER_TYPE,
+KERN_RANDOMIZE,
+KERN_SETUID_DUMPABLE,
+KERN_SPIN_RETRY,
+KERN_ACPI_VIDEO_FLAGS,
+KERN_IA64_UNALIGNED,
+KERN_COMPAT_LOG,
+KERN_MAX_LOCK_DEPTH,
+KERN_NMI_WATCHDOG,
+KERN_PANIC_ON_NMI,
+KERN_PANIC_ON_WARN,
+KERN_PANIC_PRINT
+]),,, [
+#include <sys/types.h>
+#include <linux/sysctl.h>
+])])])
index 1e2b0c7a04cb07027d9a3c5714170701236097dd..c9f96483656fd8564ce4b14c5e29d68f76a9afc0 100644 (file)
 
 # else
 
-static
-const struct xlat sysctl_net[] = {
+static const struct xlat_data sysctl_net_xdata[] = {
  XLAT(NET_CORE),
+ #define XLAT_VAL_0 ((unsigned) (NET_CORE))
+ #define XLAT_STR_0 STRINGIFY(NET_CORE)
  XLAT(NET_ETHER),
+ #define XLAT_VAL_1 ((unsigned) (NET_ETHER))
+ #define XLAT_STR_1 STRINGIFY(NET_ETHER)
  XLAT(NET_802),
+ #define XLAT_VAL_2 ((unsigned) (NET_802))
+ #define XLAT_STR_2 STRINGIFY(NET_802)
  XLAT(NET_UNIX),
+ #define XLAT_VAL_3 ((unsigned) (NET_UNIX))
+ #define XLAT_STR_3 STRINGIFY(NET_UNIX)
  XLAT(NET_IPV4),
+ #define XLAT_VAL_4 ((unsigned) (NET_IPV4))
+ #define XLAT_STR_4 STRINGIFY(NET_IPV4)
  XLAT(NET_IPX),
+ #define XLAT_VAL_5 ((unsigned) (NET_IPX))
+ #define XLAT_STR_5 STRINGIFY(NET_IPX)
  XLAT(NET_ATALK),
+ #define XLAT_VAL_6 ((unsigned) (NET_ATALK))
+ #define XLAT_STR_6 STRINGIFY(NET_ATALK)
  XLAT(NET_NETROM),
+ #define XLAT_VAL_7 ((unsigned) (NET_NETROM))
+ #define XLAT_STR_7 STRINGIFY(NET_NETROM)
  XLAT(NET_AX25),
+ #define XLAT_VAL_8 ((unsigned) (NET_AX25))
+ #define XLAT_STR_8 STRINGIFY(NET_AX25)
  XLAT(NET_BRIDGE),
+ #define XLAT_VAL_9 ((unsigned) (NET_BRIDGE))
+ #define XLAT_STR_9 STRINGIFY(NET_BRIDGE)
  XLAT(NET_ROSE),
+ #define XLAT_VAL_10 ((unsigned) (NET_ROSE))
+ #define XLAT_STR_10 STRINGIFY(NET_ROSE)
  XLAT(NET_IPV6),
+ #define XLAT_VAL_11 ((unsigned) (NET_IPV6))
+ #define XLAT_STR_11 STRINGIFY(NET_IPV6)
  XLAT(NET_X25),
+ #define XLAT_VAL_12 ((unsigned) (NET_X25))
+ #define XLAT_STR_12 STRINGIFY(NET_X25)
  XLAT(NET_TR),
+ #define XLAT_VAL_13 ((unsigned) (NET_TR))
+ #define XLAT_STR_13 STRINGIFY(NET_TR)
  XLAT(NET_DECNET),
+ #define XLAT_VAL_14 ((unsigned) (NET_DECNET))
+ #define XLAT_STR_14 STRINGIFY(NET_DECNET)
  XLAT(NET_ECONET),
+ #define XLAT_VAL_15 ((unsigned) (NET_ECONET))
+ #define XLAT_STR_15 STRINGIFY(NET_ECONET)
  XLAT(NET_SCTP),
+ #define XLAT_VAL_16 ((unsigned) (NET_SCTP))
+ #define XLAT_STR_16 STRINGIFY(NET_SCTP)
 #if defined(NET_LLC) || (defined(HAVE_DECL_NET_LLC) && HAVE_DECL_NET_LLC)
   XLAT(NET_LLC),
+ #define XLAT_VAL_17 ((unsigned) (NET_LLC))
+ #define XLAT_STR_17 STRINGIFY(NET_LLC)
 #endif
 #if defined(NET_NETFILTER) || (defined(HAVE_DECL_NET_NETFILTER) && HAVE_DECL_NET_NETFILTER)
   XLAT(NET_NETFILTER),
+ #define XLAT_VAL_18 ((unsigned) (NET_NETFILTER))
+ #define XLAT_STR_18 STRINGIFY(NET_NETFILTER)
 #endif
 #if defined(NET_DCCP) || (defined(HAVE_DECL_NET_DCCP) && HAVE_DECL_NET_DCCP)
   XLAT(NET_DCCP),
+ #define XLAT_VAL_19 ((unsigned) (NET_DCCP))
+ #define XLAT_STR_19 STRINGIFY(NET_DCCP)
 #endif
 #if defined(NET_IRDA) || (defined(HAVE_DECL_NET_IRDA) && HAVE_DECL_NET_IRDA)
   XLAT(NET_IRDA),
+ #define XLAT_VAL_20 ((unsigned) (NET_IRDA))
+ #define XLAT_STR_20 STRINGIFY(NET_IRDA)
 #endif
- XLAT_END
 };
+static
+const struct xlat sysctl_net[1] = { {
+ .data = sysctl_net_xdata,
+ .size = ARRAY_SIZE(sysctl_net_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index cb08d919afb80c9e308ae4df91414b636ef7c94e..d922bbfa90295aa4aab02e30a2a2bf6fae275000 100644 (file)
@@ -1,3 +1,6 @@
+#enum
+#include <sys/types.h>
+#include <linux/sysctl.h>
 #unconditional
 NET_CORE
 NET_ETHER
diff --git a/xlat/sysctl_net.m4 b/xlat/sysctl_net.m4
new file mode 100644 (file)
index 0000000..79999fb
--- /dev/null
@@ -0,0 +1,28 @@
+dnl Generated by ./xlat/gen.sh from ./xlat/sysctl_net.in; do not edit.
+AC_DEFUN([st_CHECK_ENUMS_sysctl_net],[
+AC_CHECK_DECLS(m4_normalize([
+NET_CORE,
+NET_ETHER,
+NET_802,
+NET_UNIX,
+NET_IPV4,
+NET_IPX,
+NET_ATALK,
+NET_NETROM,
+NET_AX25,
+NET_BRIDGE,
+NET_ROSE,
+NET_IPV6,
+NET_X25,
+NET_TR,
+NET_DECNET,
+NET_ECONET,
+NET_SCTP,
+NET_LLC,
+NET_NETFILTER,
+NET_DCCP,
+NET_IRDA
+]),,, [
+#include <sys/types.h>
+#include <linux/sysctl.h>
+])])])
index 2cce965f7de2da183df19ad8a5b689bba041fab3..2129e9f05609ef0010e187c5a0612763a93dc905 100644 (file)
 
 # else
 
-static
-const struct xlat sysctl_net_core[] = {
+static const struct xlat_data sysctl_net_core_xdata[] = {
  XLAT(NET_CORE_WMEM_MAX),
+ #define XLAT_VAL_0 ((unsigned) (NET_CORE_WMEM_MAX))
+ #define XLAT_STR_0 STRINGIFY(NET_CORE_WMEM_MAX)
  XLAT(NET_CORE_RMEM_MAX),
+ #define XLAT_VAL_1 ((unsigned) (NET_CORE_RMEM_MAX))
+ #define XLAT_STR_1 STRINGIFY(NET_CORE_RMEM_MAX)
  XLAT(NET_CORE_WMEM_DEFAULT),
+ #define XLAT_VAL_2 ((unsigned) (NET_CORE_WMEM_DEFAULT))
+ #define XLAT_STR_2 STRINGIFY(NET_CORE_WMEM_DEFAULT)
  XLAT(NET_CORE_RMEM_DEFAULT),
+ #define XLAT_VAL_3 ((unsigned) (NET_CORE_RMEM_DEFAULT))
+ #define XLAT_STR_3 STRINGIFY(NET_CORE_RMEM_DEFAULT)
  XLAT(NET_CORE_MAX_BACKLOG),
+ #define XLAT_VAL_4 ((unsigned) (NET_CORE_MAX_BACKLOG))
+ #define XLAT_STR_4 STRINGIFY(NET_CORE_MAX_BACKLOG)
  XLAT(NET_CORE_FASTROUTE),
+ #define XLAT_VAL_5 ((unsigned) (NET_CORE_FASTROUTE))
+ #define XLAT_STR_5 STRINGIFY(NET_CORE_FASTROUTE)
  XLAT(NET_CORE_MSG_COST),
+ #define XLAT_VAL_6 ((unsigned) (NET_CORE_MSG_COST))
+ #define XLAT_STR_6 STRINGIFY(NET_CORE_MSG_COST)
  XLAT(NET_CORE_MSG_BURST),
+ #define XLAT_VAL_7 ((unsigned) (NET_CORE_MSG_BURST))
+ #define XLAT_STR_7 STRINGIFY(NET_CORE_MSG_BURST)
  XLAT(NET_CORE_OPTMEM_MAX),
+ #define XLAT_VAL_8 ((unsigned) (NET_CORE_OPTMEM_MAX))
+ #define XLAT_STR_8 STRINGIFY(NET_CORE_OPTMEM_MAX)
  XLAT(NET_CORE_HOT_LIST_LENGTH),
+ #define XLAT_VAL_9 ((unsigned) (NET_CORE_HOT_LIST_LENGTH))
+ #define XLAT_STR_9 STRINGIFY(NET_CORE_HOT_LIST_LENGTH)
  XLAT(NET_CORE_DIVERT_VERSION),
+ #define XLAT_VAL_10 ((unsigned) (NET_CORE_DIVERT_VERSION))
+ #define XLAT_STR_10 STRINGIFY(NET_CORE_DIVERT_VERSION)
  XLAT(NET_CORE_NO_CONG_THRESH),
+ #define XLAT_VAL_11 ((unsigned) (NET_CORE_NO_CONG_THRESH))
+ #define XLAT_STR_11 STRINGIFY(NET_CORE_NO_CONG_THRESH)
  XLAT(NET_CORE_NO_CONG),
+ #define XLAT_VAL_12 ((unsigned) (NET_CORE_NO_CONG))
+ #define XLAT_STR_12 STRINGIFY(NET_CORE_NO_CONG)
  XLAT(NET_CORE_LO_CONG),
+ #define XLAT_VAL_13 ((unsigned) (NET_CORE_LO_CONG))
+ #define XLAT_STR_13 STRINGIFY(NET_CORE_LO_CONG)
  XLAT(NET_CORE_MOD_CONG),
+ #define XLAT_VAL_14 ((unsigned) (NET_CORE_MOD_CONG))
+ #define XLAT_STR_14 STRINGIFY(NET_CORE_MOD_CONG)
  XLAT(NET_CORE_DEV_WEIGHT),
+ #define XLAT_VAL_15 ((unsigned) (NET_CORE_DEV_WEIGHT))
+ #define XLAT_STR_15 STRINGIFY(NET_CORE_DEV_WEIGHT)
  XLAT(NET_CORE_SOMAXCONN),
+ #define XLAT_VAL_16 ((unsigned) (NET_CORE_SOMAXCONN))
+ #define XLAT_STR_16 STRINGIFY(NET_CORE_SOMAXCONN)
 #if defined(NET_CORE_DESTROY_DELAY) || (defined(HAVE_DECL_NET_CORE_DESTROY_DELAY) && HAVE_DECL_NET_CORE_DESTROY_DELAY)
   XLAT(NET_CORE_DESTROY_DELAY),
+ #define XLAT_VAL_17 ((unsigned) (NET_CORE_DESTROY_DELAY))
+ #define XLAT_STR_17 STRINGIFY(NET_CORE_DESTROY_DELAY)
 #endif
 #if defined(NET_CORE_BUDGET) || (defined(HAVE_DECL_NET_CORE_BUDGET) && HAVE_DECL_NET_CORE_BUDGET)
   XLAT(NET_CORE_BUDGET),
+ #define XLAT_VAL_18 ((unsigned) (NET_CORE_BUDGET))
+ #define XLAT_STR_18 STRINGIFY(NET_CORE_BUDGET)
 #endif
 #if defined(NET_CORE_AEVENT_ETIME) || (defined(HAVE_DECL_NET_CORE_AEVENT_ETIME) && HAVE_DECL_NET_CORE_AEVENT_ETIME)
   XLAT(NET_CORE_AEVENT_ETIME),
+ #define XLAT_VAL_19 ((unsigned) (NET_CORE_AEVENT_ETIME))
+ #define XLAT_STR_19 STRINGIFY(NET_CORE_AEVENT_ETIME)
 #endif
 #if defined(NET_CORE_AEVENT_RSEQTH) || (defined(HAVE_DECL_NET_CORE_AEVENT_RSEQTH) && HAVE_DECL_NET_CORE_AEVENT_RSEQTH)
   XLAT(NET_CORE_AEVENT_RSEQTH),
+ #define XLAT_VAL_20 ((unsigned) (NET_CORE_AEVENT_RSEQTH))
+ #define XLAT_STR_20 STRINGIFY(NET_CORE_AEVENT_RSEQTH)
 #endif
 #if defined(NET_CORE_WARNINGS) || (defined(HAVE_DECL_NET_CORE_WARNINGS) && HAVE_DECL_NET_CORE_WARNINGS)
   XLAT(NET_CORE_WARNINGS),
+ #define XLAT_VAL_21 ((unsigned) (NET_CORE_WARNINGS))
+ #define XLAT_STR_21 STRINGIFY(NET_CORE_WARNINGS)
 #endif
- XLAT_END
 };
+static
+const struct xlat sysctl_net_core[1] = { {
+ .data = sysctl_net_core_xdata,
+ .size = ARRAY_SIZE(sysctl_net_core_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 054fd9fa9488880259d3c2e4e54d46d3149641da..07719cf8195018ff82e5f3059617d83b0a0e43b0 100644 (file)
@@ -1,3 +1,6 @@
+#enum
+#include <sys/types.h>
+#include <linux/sysctl.h>
 #unconditional
 NET_CORE_WMEM_MAX
 NET_CORE_RMEM_MAX
diff --git a/xlat/sysctl_net_core.m4 b/xlat/sysctl_net_core.m4
new file mode 100644 (file)
index 0000000..2d6562d
--- /dev/null
@@ -0,0 +1,29 @@
+dnl Generated by ./xlat/gen.sh from ./xlat/sysctl_net_core.in; do not edit.
+AC_DEFUN([st_CHECK_ENUMS_sysctl_net_core],[
+AC_CHECK_DECLS(m4_normalize([
+NET_CORE_WMEM_MAX,
+NET_CORE_RMEM_MAX,
+NET_CORE_WMEM_DEFAULT,
+NET_CORE_RMEM_DEFAULT,
+NET_CORE_MAX_BACKLOG,
+NET_CORE_FASTROUTE,
+NET_CORE_MSG_COST,
+NET_CORE_MSG_BURST,
+NET_CORE_OPTMEM_MAX,
+NET_CORE_HOT_LIST_LENGTH,
+NET_CORE_DIVERT_VERSION,
+NET_CORE_NO_CONG_THRESH,
+NET_CORE_NO_CONG,
+NET_CORE_LO_CONG,
+NET_CORE_MOD_CONG,
+NET_CORE_DEV_WEIGHT,
+NET_CORE_SOMAXCONN,
+NET_CORE_DESTROY_DELAY,
+NET_CORE_BUDGET,
+NET_CORE_AEVENT_ETIME,
+NET_CORE_AEVENT_RSEQTH,
+NET_CORE_WARNINGS
+]),,, [
+#include <sys/types.h>
+#include <linux/sysctl.h>
+])])])
index fdf020411c0f94f703ce18bb23f2a79e671d5d42..a0f8a5be49581fa7027f4146f267ab76a1cce796 100644 (file)
 
 # else
 
-static
-const struct xlat sysctl_net_ipv4[] = {
+static const struct xlat_data sysctl_net_ipv4_xdata[] = {
  XLAT(NET_IPV4_FORWARD),
+ #define XLAT_VAL_0 ((unsigned) (NET_IPV4_FORWARD))
+ #define XLAT_STR_0 STRINGIFY(NET_IPV4_FORWARD)
  XLAT(NET_IPV4_DYNADDR),
+ #define XLAT_VAL_1 ((unsigned) (NET_IPV4_DYNADDR))
+ #define XLAT_STR_1 STRINGIFY(NET_IPV4_DYNADDR)
  XLAT(NET_IPV4_CONF),
+ #define XLAT_VAL_2 ((unsigned) (NET_IPV4_CONF))
+ #define XLAT_STR_2 STRINGIFY(NET_IPV4_CONF)
  XLAT(NET_IPV4_NEIGH),
+ #define XLAT_VAL_3 ((unsigned) (NET_IPV4_NEIGH))
+ #define XLAT_STR_3 STRINGIFY(NET_IPV4_NEIGH)
  XLAT(NET_IPV4_ROUTE),
+ #define XLAT_VAL_4 ((unsigned) (NET_IPV4_ROUTE))
+ #define XLAT_STR_4 STRINGIFY(NET_IPV4_ROUTE)
  XLAT(NET_IPV4_FIB_HASH),
+ #define XLAT_VAL_5 ((unsigned) (NET_IPV4_FIB_HASH))
+ #define XLAT_STR_5 STRINGIFY(NET_IPV4_FIB_HASH)
  XLAT(NET_IPV4_NETFILTER),
+ #define XLAT_VAL_6 ((unsigned) (NET_IPV4_NETFILTER))
+ #define XLAT_STR_6 STRINGIFY(NET_IPV4_NETFILTER)
  XLAT(NET_IPV4_TCP_TIMESTAMPS),
+ #define XLAT_VAL_7 ((unsigned) (NET_IPV4_TCP_TIMESTAMPS))
+ #define XLAT_STR_7 STRINGIFY(NET_IPV4_TCP_TIMESTAMPS)
  XLAT(NET_IPV4_TCP_WINDOW_SCALING),
+ #define XLAT_VAL_8 ((unsigned) (NET_IPV4_TCP_WINDOW_SCALING))
+ #define XLAT_STR_8 STRINGIFY(NET_IPV4_TCP_WINDOW_SCALING)
  XLAT(NET_IPV4_TCP_SACK),
+ #define XLAT_VAL_9 ((unsigned) (NET_IPV4_TCP_SACK))
+ #define XLAT_STR_9 STRINGIFY(NET_IPV4_TCP_SACK)
  XLAT(NET_IPV4_TCP_RETRANS_COLLAPSE),
+ #define XLAT_VAL_10 ((unsigned) (NET_IPV4_TCP_RETRANS_COLLAPSE))
+ #define XLAT_STR_10 STRINGIFY(NET_IPV4_TCP_RETRANS_COLLAPSE)
  XLAT(NET_IPV4_DEFAULT_TTL),
+ #define XLAT_VAL_11 ((unsigned) (NET_IPV4_DEFAULT_TTL))
+ #define XLAT_STR_11 STRINGIFY(NET_IPV4_DEFAULT_TTL)
  XLAT(NET_IPV4_AUTOCONFIG),
+ #define XLAT_VAL_12 ((unsigned) (NET_IPV4_AUTOCONFIG))
+ #define XLAT_STR_12 STRINGIFY(NET_IPV4_AUTOCONFIG)
  XLAT(NET_IPV4_NO_PMTU_DISC),
+ #define XLAT_VAL_13 ((unsigned) (NET_IPV4_NO_PMTU_DISC))
+ #define XLAT_STR_13 STRINGIFY(NET_IPV4_NO_PMTU_DISC)
  XLAT(NET_IPV4_TCP_SYN_RETRIES),
+ #define XLAT_VAL_14 ((unsigned) (NET_IPV4_TCP_SYN_RETRIES))
+ #define XLAT_STR_14 STRINGIFY(NET_IPV4_TCP_SYN_RETRIES)
  XLAT(NET_IPV4_IPFRAG_HIGH_THRESH),
+ #define XLAT_VAL_15 ((unsigned) (NET_IPV4_IPFRAG_HIGH_THRESH))
+ #define XLAT_STR_15 STRINGIFY(NET_IPV4_IPFRAG_HIGH_THRESH)
  XLAT(NET_IPV4_IPFRAG_LOW_THRESH),
+ #define XLAT_VAL_16 ((unsigned) (NET_IPV4_IPFRAG_LOW_THRESH))
+ #define XLAT_STR_16 STRINGIFY(NET_IPV4_IPFRAG_LOW_THRESH)
  XLAT(NET_IPV4_IPFRAG_TIME),
+ #define XLAT_VAL_17 ((unsigned) (NET_IPV4_IPFRAG_TIME))
+ #define XLAT_STR_17 STRINGIFY(NET_IPV4_IPFRAG_TIME)
  XLAT(NET_IPV4_TCP_MAX_KA_PROBES),
+ #define XLAT_VAL_18 ((unsigned) (NET_IPV4_TCP_MAX_KA_PROBES))
+ #define XLAT_STR_18 STRINGIFY(NET_IPV4_TCP_MAX_KA_PROBES)
  XLAT(NET_IPV4_TCP_KEEPALIVE_TIME),
+ #define XLAT_VAL_19 ((unsigned) (NET_IPV4_TCP_KEEPALIVE_TIME))
+ #define XLAT_STR_19 STRINGIFY(NET_IPV4_TCP_KEEPALIVE_TIME)
  XLAT(NET_IPV4_TCP_KEEPALIVE_PROBES),
+ #define XLAT_VAL_20 ((unsigned) (NET_IPV4_TCP_KEEPALIVE_PROBES))
+ #define XLAT_STR_20 STRINGIFY(NET_IPV4_TCP_KEEPALIVE_PROBES)
  XLAT(NET_IPV4_TCP_RETRIES1),
+ #define XLAT_VAL_21 ((unsigned) (NET_IPV4_TCP_RETRIES1))
+ #define XLAT_STR_21 STRINGIFY(NET_IPV4_TCP_RETRIES1)
  XLAT(NET_IPV4_TCP_RETRIES2),
+ #define XLAT_VAL_22 ((unsigned) (NET_IPV4_TCP_RETRIES2))
+ #define XLAT_STR_22 STRINGIFY(NET_IPV4_TCP_RETRIES2)
  XLAT(NET_IPV4_TCP_FIN_TIMEOUT),
+ #define XLAT_VAL_23 ((unsigned) (NET_IPV4_TCP_FIN_TIMEOUT))
+ #define XLAT_STR_23 STRINGIFY(NET_IPV4_TCP_FIN_TIMEOUT)
  XLAT(NET_IPV4_IP_MASQ_DEBUG),
+ #define XLAT_VAL_24 ((unsigned) (NET_IPV4_IP_MASQ_DEBUG))
+ #define XLAT_STR_24 STRINGIFY(NET_IPV4_IP_MASQ_DEBUG)
  XLAT(NET_TCP_SYNCOOKIES),
+ #define XLAT_VAL_25 ((unsigned) (NET_TCP_SYNCOOKIES))
+ #define XLAT_STR_25 STRINGIFY(NET_TCP_SYNCOOKIES)
  XLAT(NET_TCP_STDURG),
+ #define XLAT_VAL_26 ((unsigned) (NET_TCP_STDURG))
+ #define XLAT_STR_26 STRINGIFY(NET_TCP_STDURG)
  XLAT(NET_TCP_RFC1337),
+ #define XLAT_VAL_27 ((unsigned) (NET_TCP_RFC1337))
+ #define XLAT_STR_27 STRINGIFY(NET_TCP_RFC1337)
  XLAT(NET_TCP_SYN_TAILDROP),
+ #define XLAT_VAL_28 ((unsigned) (NET_TCP_SYN_TAILDROP))
+ #define XLAT_STR_28 STRINGIFY(NET_TCP_SYN_TAILDROP)
  XLAT(NET_TCP_MAX_SYN_BACKLOG),
+ #define XLAT_VAL_29 ((unsigned) (NET_TCP_MAX_SYN_BACKLOG))
+ #define XLAT_STR_29 STRINGIFY(NET_TCP_MAX_SYN_BACKLOG)
  XLAT(NET_IPV4_LOCAL_PORT_RANGE),
+ #define XLAT_VAL_30 ((unsigned) (NET_IPV4_LOCAL_PORT_RANGE))
+ #define XLAT_STR_30 STRINGIFY(NET_IPV4_LOCAL_PORT_RANGE)
  XLAT(NET_IPV4_ICMP_ECHO_IGNORE_ALL),
+ #define XLAT_VAL_31 ((unsigned) (NET_IPV4_ICMP_ECHO_IGNORE_ALL))
+ #define XLAT_STR_31 STRINGIFY(NET_IPV4_ICMP_ECHO_IGNORE_ALL)
  XLAT(NET_IPV4_ICMP_ECHO_IGNORE_BROADCASTS),
+ #define XLAT_VAL_32 ((unsigned) (NET_IPV4_ICMP_ECHO_IGNORE_BROADCASTS))
+ #define XLAT_STR_32 STRINGIFY(NET_IPV4_ICMP_ECHO_IGNORE_BROADCASTS)
  XLAT(NET_IPV4_ICMP_SOURCEQUENCH_RATE),
+ #define XLAT_VAL_33 ((unsigned) (NET_IPV4_ICMP_SOURCEQUENCH_RATE))
+ #define XLAT_STR_33 STRINGIFY(NET_IPV4_ICMP_SOURCEQUENCH_RATE)
  XLAT(NET_IPV4_ICMP_DESTUNREACH_RATE),
+ #define XLAT_VAL_34 ((unsigned) (NET_IPV4_ICMP_DESTUNREACH_RATE))
+ #define XLAT_STR_34 STRINGIFY(NET_IPV4_ICMP_DESTUNREACH_RATE)
  XLAT(NET_IPV4_ICMP_TIMEEXCEED_RATE),
+ #define XLAT_VAL_35 ((unsigned) (NET_IPV4_ICMP_TIMEEXCEED_RATE))
+ #define XLAT_STR_35 STRINGIFY(NET_IPV4_ICMP_TIMEEXCEED_RATE)
  XLAT(NET_IPV4_ICMP_PARAMPROB_RATE),
+ #define XLAT_VAL_36 ((unsigned) (NET_IPV4_ICMP_PARAMPROB_RATE))
+ #define XLAT_STR_36 STRINGIFY(NET_IPV4_ICMP_PARAMPROB_RATE)
  XLAT(NET_IPV4_ICMP_ECHOREPLY_RATE),
+ #define XLAT_VAL_37 ((unsigned) (NET_IPV4_ICMP_ECHOREPLY_RATE))
+ #define XLAT_STR_37 STRINGIFY(NET_IPV4_ICMP_ECHOREPLY_RATE)
  XLAT(NET_IPV4_ICMP_IGNORE_BOGUS_ERROR_RESPONSES),
+ #define XLAT_VAL_38 ((unsigned) (NET_IPV4_ICMP_IGNORE_BOGUS_ERROR_RESPONSES))
+ #define XLAT_STR_38 STRINGIFY(NET_IPV4_ICMP_IGNORE_BOGUS_ERROR_RESPONSES)
  XLAT(NET_IPV4_IGMP_MAX_MEMBERSHIPS),
+ #define XLAT_VAL_39 ((unsigned) (NET_IPV4_IGMP_MAX_MEMBERSHIPS))
+ #define XLAT_STR_39 STRINGIFY(NET_IPV4_IGMP_MAX_MEMBERSHIPS)
  XLAT(NET_TCP_TW_RECYCLE),
+ #define XLAT_VAL_40 ((unsigned) (NET_TCP_TW_RECYCLE))
+ #define XLAT_STR_40 STRINGIFY(NET_TCP_TW_RECYCLE)
  XLAT(NET_IPV4_ALWAYS_DEFRAG),
+ #define XLAT_VAL_41 ((unsigned) (NET_IPV4_ALWAYS_DEFRAG))
+ #define XLAT_STR_41 STRINGIFY(NET_IPV4_ALWAYS_DEFRAG)
  XLAT(NET_IPV4_TCP_KEEPALIVE_INTVL),
+ #define XLAT_VAL_42 ((unsigned) (NET_IPV4_TCP_KEEPALIVE_INTVL))
+ #define XLAT_STR_42 STRINGIFY(NET_IPV4_TCP_KEEPALIVE_INTVL)
  XLAT(NET_IPV4_INET_PEER_THRESHOLD),
+ #define XLAT_VAL_43 ((unsigned) (NET_IPV4_INET_PEER_THRESHOLD))
+ #define XLAT_STR_43 STRINGIFY(NET_IPV4_INET_PEER_THRESHOLD)
  XLAT(NET_IPV4_INET_PEER_MINTTL),
+ #define XLAT_VAL_44 ((unsigned) (NET_IPV4_INET_PEER_MINTTL))
+ #define XLAT_STR_44 STRINGIFY(NET_IPV4_INET_PEER_MINTTL)
  XLAT(NET_IPV4_INET_PEER_MAXTTL),
+ #define XLAT_VAL_45 ((unsigned) (NET_IPV4_INET_PEER_MAXTTL))
+ #define XLAT_STR_45 STRINGIFY(NET_IPV4_INET_PEER_MAXTTL)
  XLAT(NET_IPV4_INET_PEER_GC_MINTIME),
+ #define XLAT_VAL_46 ((unsigned) (NET_IPV4_INET_PEER_GC_MINTIME))
+ #define XLAT_STR_46 STRINGIFY(NET_IPV4_INET_PEER_GC_MINTIME)
  XLAT(NET_IPV4_INET_PEER_GC_MAXTIME),
+ #define XLAT_VAL_47 ((unsigned) (NET_IPV4_INET_PEER_GC_MAXTIME))
+ #define XLAT_STR_47 STRINGIFY(NET_IPV4_INET_PEER_GC_MAXTIME)
  XLAT(NET_TCP_ORPHAN_RETRIES),
+ #define XLAT_VAL_48 ((unsigned) (NET_TCP_ORPHAN_RETRIES))
+ #define XLAT_STR_48 STRINGIFY(NET_TCP_ORPHAN_RETRIES)
  XLAT(NET_TCP_ABORT_ON_OVERFLOW),
+ #define XLAT_VAL_49 ((unsigned) (NET_TCP_ABORT_ON_OVERFLOW))
+ #define XLAT_STR_49 STRINGIFY(NET_TCP_ABORT_ON_OVERFLOW)
  XLAT(NET_TCP_SYNACK_RETRIES),
+ #define XLAT_VAL_50 ((unsigned) (NET_TCP_SYNACK_RETRIES))
+ #define XLAT_STR_50 STRINGIFY(NET_TCP_SYNACK_RETRIES)
  XLAT(NET_TCP_MAX_ORPHANS),
+ #define XLAT_VAL_51 ((unsigned) (NET_TCP_MAX_ORPHANS))
+ #define XLAT_STR_51 STRINGIFY(NET_TCP_MAX_ORPHANS)
  XLAT(NET_TCP_MAX_TW_BUCKETS),
+ #define XLAT_VAL_52 ((unsigned) (NET_TCP_MAX_TW_BUCKETS))
+ #define XLAT_STR_52 STRINGIFY(NET_TCP_MAX_TW_BUCKETS)
  XLAT(NET_TCP_FACK),
+ #define XLAT_VAL_53 ((unsigned) (NET_TCP_FACK))
+ #define XLAT_STR_53 STRINGIFY(NET_TCP_FACK)
  XLAT(NET_TCP_REORDERING),
+ #define XLAT_VAL_54 ((unsigned) (NET_TCP_REORDERING))
+ #define XLAT_STR_54 STRINGIFY(NET_TCP_REORDERING)
  XLAT(NET_TCP_ECN),
+ #define XLAT_VAL_55 ((unsigned) (NET_TCP_ECN))
+ #define XLAT_STR_55 STRINGIFY(NET_TCP_ECN)
  XLAT(NET_TCP_DSACK),
+ #define XLAT_VAL_56 ((unsigned) (NET_TCP_DSACK))
+ #define XLAT_STR_56 STRINGIFY(NET_TCP_DSACK)
  XLAT(NET_TCP_MEM),
+ #define XLAT_VAL_57 ((unsigned) (NET_TCP_MEM))
+ #define XLAT_STR_57 STRINGIFY(NET_TCP_MEM)
  XLAT(NET_TCP_WMEM),
+ #define XLAT_VAL_58 ((unsigned) (NET_TCP_WMEM))
+ #define XLAT_STR_58 STRINGIFY(NET_TCP_WMEM)
  XLAT(NET_TCP_RMEM),
+ #define XLAT_VAL_59 ((unsigned) (NET_TCP_RMEM))
+ #define XLAT_STR_59 STRINGIFY(NET_TCP_RMEM)
  XLAT(NET_TCP_APP_WIN),
+ #define XLAT_VAL_60 ((unsigned) (NET_TCP_APP_WIN))
+ #define XLAT_STR_60 STRINGIFY(NET_TCP_APP_WIN)
  XLAT(NET_TCP_ADV_WIN_SCALE),
+ #define XLAT_VAL_61 ((unsigned) (NET_TCP_ADV_WIN_SCALE))
+ #define XLAT_STR_61 STRINGIFY(NET_TCP_ADV_WIN_SCALE)
  XLAT(NET_IPV4_NONLOCAL_BIND),
+ #define XLAT_VAL_62 ((unsigned) (NET_IPV4_NONLOCAL_BIND))
+ #define XLAT_STR_62 STRINGIFY(NET_IPV4_NONLOCAL_BIND)
  XLAT(NET_IPV4_ICMP_RATELIMIT),
+ #define XLAT_VAL_63 ((unsigned) (NET_IPV4_ICMP_RATELIMIT))
+ #define XLAT_STR_63 STRINGIFY(NET_IPV4_ICMP_RATELIMIT)
  XLAT(NET_IPV4_ICMP_RATEMASK),
+ #define XLAT_VAL_64 ((unsigned) (NET_IPV4_ICMP_RATEMASK))
+ #define XLAT_STR_64 STRINGIFY(NET_IPV4_ICMP_RATEMASK)
  XLAT(NET_TCP_TW_REUSE),
+ #define XLAT_VAL_65 ((unsigned) (NET_TCP_TW_REUSE))
+ #define XLAT_STR_65 STRINGIFY(NET_TCP_TW_REUSE)
  XLAT(NET_TCP_FRTO),
+ #define XLAT_VAL_66 ((unsigned) (NET_TCP_FRTO))
+ #define XLAT_STR_66 STRINGIFY(NET_TCP_FRTO)
  XLAT(NET_TCP_LOW_LATENCY),
+ #define XLAT_VAL_67 ((unsigned) (NET_TCP_LOW_LATENCY))
+ #define XLAT_STR_67 STRINGIFY(NET_TCP_LOW_LATENCY)
  XLAT(NET_IPV4_IPFRAG_SECRET_INTERVAL),
+ #define XLAT_VAL_68 ((unsigned) (NET_IPV4_IPFRAG_SECRET_INTERVAL))
+ #define XLAT_STR_68 STRINGIFY(NET_IPV4_IPFRAG_SECRET_INTERVAL)
 #if defined(NET_IPV4_IGMP_MAX_MSF) || (defined(HAVE_DECL_NET_IPV4_IGMP_MAX_MSF) && HAVE_DECL_NET_IPV4_IGMP_MAX_MSF)
   XLAT(NET_IPV4_IGMP_MAX_MSF),
+ #define XLAT_VAL_69 ((unsigned) (NET_IPV4_IGMP_MAX_MSF))
+ #define XLAT_STR_69 STRINGIFY(NET_IPV4_IGMP_MAX_MSF)
 #endif
 #if defined(NET_TCP_NO_METRICS_SAVE) || (defined(HAVE_DECL_NET_TCP_NO_METRICS_SAVE) && HAVE_DECL_NET_TCP_NO_METRICS_SAVE)
   XLAT(NET_TCP_NO_METRICS_SAVE),
+ #define XLAT_VAL_70 ((unsigned) (NET_TCP_NO_METRICS_SAVE))
+ #define XLAT_STR_70 STRINGIFY(NET_TCP_NO_METRICS_SAVE)
 #endif
 #if defined(NET_TCP_DEFAULT_WIN_SCALE) || (defined(HAVE_DECL_NET_TCP_DEFAULT_WIN_SCALE) && HAVE_DECL_NET_TCP_DEFAULT_WIN_SCALE)
   XLAT(NET_TCP_DEFAULT_WIN_SCALE),
+ #define XLAT_VAL_71 ((unsigned) (NET_TCP_DEFAULT_WIN_SCALE))
+ #define XLAT_STR_71 STRINGIFY(NET_TCP_DEFAULT_WIN_SCALE)
 #endif
 #if defined(NET_TCP_MODERATE_RCVBUF) || (defined(HAVE_DECL_NET_TCP_MODERATE_RCVBUF) && HAVE_DECL_NET_TCP_MODERATE_RCVBUF)
   XLAT(NET_TCP_MODERATE_RCVBUF),
+ #define XLAT_VAL_72 ((unsigned) (NET_TCP_MODERATE_RCVBUF))
+ #define XLAT_STR_72 STRINGIFY(NET_TCP_MODERATE_RCVBUF)
 #endif
 #if defined(NET_TCP_TSO_WIN_DIVISOR) || (defined(HAVE_DECL_NET_TCP_TSO_WIN_DIVISOR) && HAVE_DECL_NET_TCP_TSO_WIN_DIVISOR)
   XLAT(NET_TCP_TSO_WIN_DIVISOR),
+ #define XLAT_VAL_73 ((unsigned) (NET_TCP_TSO_WIN_DIVISOR))
+ #define XLAT_STR_73 STRINGIFY(NET_TCP_TSO_WIN_DIVISOR)
 #endif
 #if defined(NET_TCP_BIC_BETA) || (defined(HAVE_DECL_NET_TCP_BIC_BETA) && HAVE_DECL_NET_TCP_BIC_BETA)
   XLAT(NET_TCP_BIC_BETA),
+ #define XLAT_VAL_74 ((unsigned) (NET_TCP_BIC_BETA))
+ #define XLAT_STR_74 STRINGIFY(NET_TCP_BIC_BETA)
 #endif
 #if defined(NET_IPV4_ICMP_ERRORS_USE_INBOUND_IFADDR) || (defined(HAVE_DECL_NET_IPV4_ICMP_ERRORS_USE_INBOUND_IFADDR) && HAVE_DECL_NET_IPV4_ICMP_ERRORS_USE_INBOUND_IFADDR)
   XLAT(NET_IPV4_ICMP_ERRORS_USE_INBOUND_IFADDR),
+ #define XLAT_VAL_75 ((unsigned) (NET_IPV4_ICMP_ERRORS_USE_INBOUND_IFADDR))
+ #define XLAT_STR_75 STRINGIFY(NET_IPV4_ICMP_ERRORS_USE_INBOUND_IFADDR)
 #endif
 #if defined(NET_TCP_CONG_CONTROL) || (defined(HAVE_DECL_NET_TCP_CONG_CONTROL) && HAVE_DECL_NET_TCP_CONG_CONTROL)
   XLAT(NET_TCP_CONG_CONTROL),
+ #define XLAT_VAL_76 ((unsigned) (NET_TCP_CONG_CONTROL))
+ #define XLAT_STR_76 STRINGIFY(NET_TCP_CONG_CONTROL)
 #endif
 #if defined(NET_TCP_ABC) || (defined(HAVE_DECL_NET_TCP_ABC) && HAVE_DECL_NET_TCP_ABC)
   XLAT(NET_TCP_ABC),
+ #define XLAT_VAL_77 ((unsigned) (NET_TCP_ABC))
+ #define XLAT_STR_77 STRINGIFY(NET_TCP_ABC)
 #endif
 #if defined(NET_IPV4_IPFRAG_MAX_DIST) || (defined(HAVE_DECL_NET_IPV4_IPFRAG_MAX_DIST) && HAVE_DECL_NET_IPV4_IPFRAG_MAX_DIST)
   XLAT(NET_IPV4_IPFRAG_MAX_DIST),
+ #define XLAT_VAL_78 ((unsigned) (NET_IPV4_IPFRAG_MAX_DIST))
+ #define XLAT_STR_78 STRINGIFY(NET_IPV4_IPFRAG_MAX_DIST)
 #endif
 #if defined(NET_TCP_MTU_PROBING) || (defined(HAVE_DECL_NET_TCP_MTU_PROBING) && HAVE_DECL_NET_TCP_MTU_PROBING)
   XLAT(NET_TCP_MTU_PROBING),
+ #define XLAT_VAL_79 ((unsigned) (NET_TCP_MTU_PROBING))
+ #define XLAT_STR_79 STRINGIFY(NET_TCP_MTU_PROBING)
 #endif
 #if defined(NET_TCP_BASE_MSS) || (defined(HAVE_DECL_NET_TCP_BASE_MSS) && HAVE_DECL_NET_TCP_BASE_MSS)
   XLAT(NET_TCP_BASE_MSS),
+ #define XLAT_VAL_80 ((unsigned) (NET_TCP_BASE_MSS))
+ #define XLAT_STR_80 STRINGIFY(NET_TCP_BASE_MSS)
 #endif
 #if defined(NET_IPV4_TCP_WORKAROUND_SIGNED_WINDOWS) || (defined(HAVE_DECL_NET_IPV4_TCP_WORKAROUND_SIGNED_WINDOWS) && HAVE_DECL_NET_IPV4_TCP_WORKAROUND_SIGNED_WINDOWS)
   XLAT(NET_IPV4_TCP_WORKAROUND_SIGNED_WINDOWS),
+ #define XLAT_VAL_81 ((unsigned) (NET_IPV4_TCP_WORKAROUND_SIGNED_WINDOWS))
+ #define XLAT_STR_81 STRINGIFY(NET_IPV4_TCP_WORKAROUND_SIGNED_WINDOWS)
 #endif
 #if defined(NET_TCP_DMA_COPYBREAK) || (defined(HAVE_DECL_NET_TCP_DMA_COPYBREAK) && HAVE_DECL_NET_TCP_DMA_COPYBREAK)
   XLAT(NET_TCP_DMA_COPYBREAK),
+ #define XLAT_VAL_82 ((unsigned) (NET_TCP_DMA_COPYBREAK))
+ #define XLAT_STR_82 STRINGIFY(NET_TCP_DMA_COPYBREAK)
 #endif
 #if defined(NET_TCP_SLOW_START_AFTER_IDLE) || (defined(HAVE_DECL_NET_TCP_SLOW_START_AFTER_IDLE) && HAVE_DECL_NET_TCP_SLOW_START_AFTER_IDLE)
   XLAT(NET_TCP_SLOW_START_AFTER_IDLE),
+ #define XLAT_VAL_83 ((unsigned) (NET_TCP_SLOW_START_AFTER_IDLE))
+ #define XLAT_STR_83 STRINGIFY(NET_TCP_SLOW_START_AFTER_IDLE)
 #endif
 #if defined(NET_CIPSOV4_CACHE_ENABLE) || (defined(HAVE_DECL_NET_CIPSOV4_CACHE_ENABLE) && HAVE_DECL_NET_CIPSOV4_CACHE_ENABLE)
   XLAT(NET_CIPSOV4_CACHE_ENABLE),
+ #define XLAT_VAL_84 ((unsigned) (NET_CIPSOV4_CACHE_ENABLE))
+ #define XLAT_STR_84 STRINGIFY(NET_CIPSOV4_CACHE_ENABLE)
 #endif
 #if defined(NET_CIPSOV4_CACHE_BUCKET_SIZE) || (defined(HAVE_DECL_NET_CIPSOV4_CACHE_BUCKET_SIZE) && HAVE_DECL_NET_CIPSOV4_CACHE_BUCKET_SIZE)
   XLAT(NET_CIPSOV4_CACHE_BUCKET_SIZE),
+ #define XLAT_VAL_85 ((unsigned) (NET_CIPSOV4_CACHE_BUCKET_SIZE))
+ #define XLAT_STR_85 STRINGIFY(NET_CIPSOV4_CACHE_BUCKET_SIZE)
 #endif
 #if defined(NET_CIPSOV4_RBM_OPTFMT) || (defined(HAVE_DECL_NET_CIPSOV4_RBM_OPTFMT) && HAVE_DECL_NET_CIPSOV4_RBM_OPTFMT)
   XLAT(NET_CIPSOV4_RBM_OPTFMT),
+ #define XLAT_VAL_86 ((unsigned) (NET_CIPSOV4_RBM_OPTFMT))
+ #define XLAT_STR_86 STRINGIFY(NET_CIPSOV4_RBM_OPTFMT)
 #endif
 #if defined(NET_CIPSOV4_RBM_STRICTVALID) || (defined(HAVE_DECL_NET_CIPSOV4_RBM_STRICTVALID) && HAVE_DECL_NET_CIPSOV4_RBM_STRICTVALID)
   XLAT(NET_CIPSOV4_RBM_STRICTVALID),
+ #define XLAT_VAL_87 ((unsigned) (NET_CIPSOV4_RBM_STRICTVALID))
+ #define XLAT_STR_87 STRINGIFY(NET_CIPSOV4_RBM_STRICTVALID)
 #endif
 #if defined(NET_TCP_AVAIL_CONG_CONTROL) || (defined(HAVE_DECL_NET_TCP_AVAIL_CONG_CONTROL) && HAVE_DECL_NET_TCP_AVAIL_CONG_CONTROL)
   XLAT(NET_TCP_AVAIL_CONG_CONTROL),
+ #define XLAT_VAL_88 ((unsigned) (NET_TCP_AVAIL_CONG_CONTROL))
+ #define XLAT_STR_88 STRINGIFY(NET_TCP_AVAIL_CONG_CONTROL)
 #endif
 #if defined(NET_TCP_ALLOWED_CONG_CONTROL) || (defined(HAVE_DECL_NET_TCP_ALLOWED_CONG_CONTROL) && HAVE_DECL_NET_TCP_ALLOWED_CONG_CONTROL)
   XLAT(NET_TCP_ALLOWED_CONG_CONTROL),
+ #define XLAT_VAL_89 ((unsigned) (NET_TCP_ALLOWED_CONG_CONTROL))
+ #define XLAT_STR_89 STRINGIFY(NET_TCP_ALLOWED_CONG_CONTROL)
 #endif
 #if defined(NET_TCP_MAX_SSTHRESH) || (defined(HAVE_DECL_NET_TCP_MAX_SSTHRESH) && HAVE_DECL_NET_TCP_MAX_SSTHRESH)
   XLAT(NET_TCP_MAX_SSTHRESH),
+ #define XLAT_VAL_90 ((unsigned) (NET_TCP_MAX_SSTHRESH))
+ #define XLAT_STR_90 STRINGIFY(NET_TCP_MAX_SSTHRESH)
 #endif
 #if defined(NET_TCP_FRTO_RESPONSE) || (defined(HAVE_DECL_NET_TCP_FRTO_RESPONSE) && HAVE_DECL_NET_TCP_FRTO_RESPONSE)
   XLAT(NET_TCP_FRTO_RESPONSE),
+ #define XLAT_VAL_91 ((unsigned) (NET_TCP_FRTO_RESPONSE))
+ #define XLAT_STR_91 STRINGIFY(NET_TCP_FRTO_RESPONSE)
 #endif
- XLAT_END
 };
+static
+const struct xlat sysctl_net_ipv4[1] = { {
+ .data = sysctl_net_ipv4_xdata,
+ .size = ARRAY_SIZE(sysctl_net_ipv4_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+#  ifdef XLAT_VAL_30
+  | XLAT_VAL_30
+#  endif
+#  ifdef XLAT_VAL_31
+  | XLAT_VAL_31
+#  endif
+#  ifdef XLAT_VAL_32
+  | XLAT_VAL_32
+#  endif
+#  ifdef XLAT_VAL_33
+  | XLAT_VAL_33
+#  endif
+#  ifdef XLAT_VAL_34
+  | XLAT_VAL_34
+#  endif
+#  ifdef XLAT_VAL_35
+  | XLAT_VAL_35
+#  endif
+#  ifdef XLAT_VAL_36
+  | XLAT_VAL_36
+#  endif
+#  ifdef XLAT_VAL_37
+  | XLAT_VAL_37
+#  endif
+#  ifdef XLAT_VAL_38
+  | XLAT_VAL_38
+#  endif
+#  ifdef XLAT_VAL_39
+  | XLAT_VAL_39
+#  endif
+#  ifdef XLAT_VAL_40
+  | XLAT_VAL_40
+#  endif
+#  ifdef XLAT_VAL_41
+  | XLAT_VAL_41
+#  endif
+#  ifdef XLAT_VAL_42
+  | XLAT_VAL_42
+#  endif
+#  ifdef XLAT_VAL_43
+  | XLAT_VAL_43
+#  endif
+#  ifdef XLAT_VAL_44
+  | XLAT_VAL_44
+#  endif
+#  ifdef XLAT_VAL_45
+  | XLAT_VAL_45
+#  endif
+#  ifdef XLAT_VAL_46
+  | XLAT_VAL_46
+#  endif
+#  ifdef XLAT_VAL_47
+  | XLAT_VAL_47
+#  endif
+#  ifdef XLAT_VAL_48
+  | XLAT_VAL_48
+#  endif
+#  ifdef XLAT_VAL_49
+  | XLAT_VAL_49
+#  endif
+#  ifdef XLAT_VAL_50
+  | XLAT_VAL_50
+#  endif
+#  ifdef XLAT_VAL_51
+  | XLAT_VAL_51
+#  endif
+#  ifdef XLAT_VAL_52
+  | XLAT_VAL_52
+#  endif
+#  ifdef XLAT_VAL_53
+  | XLAT_VAL_53
+#  endif
+#  ifdef XLAT_VAL_54
+  | XLAT_VAL_54
+#  endif
+#  ifdef XLAT_VAL_55
+  | XLAT_VAL_55
+#  endif
+#  ifdef XLAT_VAL_56
+  | XLAT_VAL_56
+#  endif
+#  ifdef XLAT_VAL_57
+  | XLAT_VAL_57
+#  endif
+#  ifdef XLAT_VAL_58
+  | XLAT_VAL_58
+#  endif
+#  ifdef XLAT_VAL_59
+  | XLAT_VAL_59
+#  endif
+#  ifdef XLAT_VAL_60
+  | XLAT_VAL_60
+#  endif
+#  ifdef XLAT_VAL_61
+  | XLAT_VAL_61
+#  endif
+#  ifdef XLAT_VAL_62
+  | XLAT_VAL_62
+#  endif
+#  ifdef XLAT_VAL_63
+  | XLAT_VAL_63
+#  endif
+#  ifdef XLAT_VAL_64
+  | XLAT_VAL_64
+#  endif
+#  ifdef XLAT_VAL_65
+  | XLAT_VAL_65
+#  endif
+#  ifdef XLAT_VAL_66
+  | XLAT_VAL_66
+#  endif
+#  ifdef XLAT_VAL_67
+  | XLAT_VAL_67
+#  endif
+#  ifdef XLAT_VAL_68
+  | XLAT_VAL_68
+#  endif
+#  ifdef XLAT_VAL_69
+  | XLAT_VAL_69
+#  endif
+#  ifdef XLAT_VAL_70
+  | XLAT_VAL_70
+#  endif
+#  ifdef XLAT_VAL_71
+  | XLAT_VAL_71
+#  endif
+#  ifdef XLAT_VAL_72
+  | XLAT_VAL_72
+#  endif
+#  ifdef XLAT_VAL_73
+  | XLAT_VAL_73
+#  endif
+#  ifdef XLAT_VAL_74
+  | XLAT_VAL_74
+#  endif
+#  ifdef XLAT_VAL_75
+  | XLAT_VAL_75
+#  endif
+#  ifdef XLAT_VAL_76
+  | XLAT_VAL_76
+#  endif
+#  ifdef XLAT_VAL_77
+  | XLAT_VAL_77
+#  endif
+#  ifdef XLAT_VAL_78
+  | XLAT_VAL_78
+#  endif
+#  ifdef XLAT_VAL_79
+  | XLAT_VAL_79
+#  endif
+#  ifdef XLAT_VAL_80
+  | XLAT_VAL_80
+#  endif
+#  ifdef XLAT_VAL_81
+  | XLAT_VAL_81
+#  endif
+#  ifdef XLAT_VAL_82
+  | XLAT_VAL_82
+#  endif
+#  ifdef XLAT_VAL_83
+  | XLAT_VAL_83
+#  endif
+#  ifdef XLAT_VAL_84
+  | XLAT_VAL_84
+#  endif
+#  ifdef XLAT_VAL_85
+  | XLAT_VAL_85
+#  endif
+#  ifdef XLAT_VAL_86
+  | XLAT_VAL_86
+#  endif
+#  ifdef XLAT_VAL_87
+  | XLAT_VAL_87
+#  endif
+#  ifdef XLAT_VAL_88
+  | XLAT_VAL_88
+#  endif
+#  ifdef XLAT_VAL_89
+  | XLAT_VAL_89
+#  endif
+#  ifdef XLAT_VAL_90
+  | XLAT_VAL_90
+#  endif
+#  ifdef XLAT_VAL_91
+  | XLAT_VAL_91
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+#  ifdef XLAT_STR_30
+  + sizeof(XLAT_STR_30)
+#  endif
+#  ifdef XLAT_STR_31
+  + sizeof(XLAT_STR_31)
+#  endif
+#  ifdef XLAT_STR_32
+  + sizeof(XLAT_STR_32)
+#  endif
+#  ifdef XLAT_STR_33
+  + sizeof(XLAT_STR_33)
+#  endif
+#  ifdef XLAT_STR_34
+  + sizeof(XLAT_STR_34)
+#  endif
+#  ifdef XLAT_STR_35
+  + sizeof(XLAT_STR_35)
+#  endif
+#  ifdef XLAT_STR_36
+  + sizeof(XLAT_STR_36)
+#  endif
+#  ifdef XLAT_STR_37
+  + sizeof(XLAT_STR_37)
+#  endif
+#  ifdef XLAT_STR_38
+  + sizeof(XLAT_STR_38)
+#  endif
+#  ifdef XLAT_STR_39
+  + sizeof(XLAT_STR_39)
+#  endif
+#  ifdef XLAT_STR_40
+  + sizeof(XLAT_STR_40)
+#  endif
+#  ifdef XLAT_STR_41
+  + sizeof(XLAT_STR_41)
+#  endif
+#  ifdef XLAT_STR_42
+  + sizeof(XLAT_STR_42)
+#  endif
+#  ifdef XLAT_STR_43
+  + sizeof(XLAT_STR_43)
+#  endif
+#  ifdef XLAT_STR_44
+  + sizeof(XLAT_STR_44)
+#  endif
+#  ifdef XLAT_STR_45
+  + sizeof(XLAT_STR_45)
+#  endif
+#  ifdef XLAT_STR_46
+  + sizeof(XLAT_STR_46)
+#  endif
+#  ifdef XLAT_STR_47
+  + sizeof(XLAT_STR_47)
+#  endif
+#  ifdef XLAT_STR_48
+  + sizeof(XLAT_STR_48)
+#  endif
+#  ifdef XLAT_STR_49
+  + sizeof(XLAT_STR_49)
+#  endif
+#  ifdef XLAT_STR_50
+  + sizeof(XLAT_STR_50)
+#  endif
+#  ifdef XLAT_STR_51
+  + sizeof(XLAT_STR_51)
+#  endif
+#  ifdef XLAT_STR_52
+  + sizeof(XLAT_STR_52)
+#  endif
+#  ifdef XLAT_STR_53
+  + sizeof(XLAT_STR_53)
+#  endif
+#  ifdef XLAT_STR_54
+  + sizeof(XLAT_STR_54)
+#  endif
+#  ifdef XLAT_STR_55
+  + sizeof(XLAT_STR_55)
+#  endif
+#  ifdef XLAT_STR_56
+  + sizeof(XLAT_STR_56)
+#  endif
+#  ifdef XLAT_STR_57
+  + sizeof(XLAT_STR_57)
+#  endif
+#  ifdef XLAT_STR_58
+  + sizeof(XLAT_STR_58)
+#  endif
+#  ifdef XLAT_STR_59
+  + sizeof(XLAT_STR_59)
+#  endif
+#  ifdef XLAT_STR_60
+  + sizeof(XLAT_STR_60)
+#  endif
+#  ifdef XLAT_STR_61
+  + sizeof(XLAT_STR_61)
+#  endif
+#  ifdef XLAT_STR_62
+  + sizeof(XLAT_STR_62)
+#  endif
+#  ifdef XLAT_STR_63
+  + sizeof(XLAT_STR_63)
+#  endif
+#  ifdef XLAT_STR_64
+  + sizeof(XLAT_STR_64)
+#  endif
+#  ifdef XLAT_STR_65
+  + sizeof(XLAT_STR_65)
+#  endif
+#  ifdef XLAT_STR_66
+  + sizeof(XLAT_STR_66)
+#  endif
+#  ifdef XLAT_STR_67
+  + sizeof(XLAT_STR_67)
+#  endif
+#  ifdef XLAT_STR_68
+  + sizeof(XLAT_STR_68)
+#  endif
+#  ifdef XLAT_STR_69
+  + sizeof(XLAT_STR_69)
+#  endif
+#  ifdef XLAT_STR_70
+  + sizeof(XLAT_STR_70)
+#  endif
+#  ifdef XLAT_STR_71
+  + sizeof(XLAT_STR_71)
+#  endif
+#  ifdef XLAT_STR_72
+  + sizeof(XLAT_STR_72)
+#  endif
+#  ifdef XLAT_STR_73
+  + sizeof(XLAT_STR_73)
+#  endif
+#  ifdef XLAT_STR_74
+  + sizeof(XLAT_STR_74)
+#  endif
+#  ifdef XLAT_STR_75
+  + sizeof(XLAT_STR_75)
+#  endif
+#  ifdef XLAT_STR_76
+  + sizeof(XLAT_STR_76)
+#  endif
+#  ifdef XLAT_STR_77
+  + sizeof(XLAT_STR_77)
+#  endif
+#  ifdef XLAT_STR_78
+  + sizeof(XLAT_STR_78)
+#  endif
+#  ifdef XLAT_STR_79
+  + sizeof(XLAT_STR_79)
+#  endif
+#  ifdef XLAT_STR_80
+  + sizeof(XLAT_STR_80)
+#  endif
+#  ifdef XLAT_STR_81
+  + sizeof(XLAT_STR_81)
+#  endif
+#  ifdef XLAT_STR_82
+  + sizeof(XLAT_STR_82)
+#  endif
+#  ifdef XLAT_STR_83
+  + sizeof(XLAT_STR_83)
+#  endif
+#  ifdef XLAT_STR_84
+  + sizeof(XLAT_STR_84)
+#  endif
+#  ifdef XLAT_STR_85
+  + sizeof(XLAT_STR_85)
+#  endif
+#  ifdef XLAT_STR_86
+  + sizeof(XLAT_STR_86)
+#  endif
+#  ifdef XLAT_STR_87
+  + sizeof(XLAT_STR_87)
+#  endif
+#  ifdef XLAT_STR_88
+  + sizeof(XLAT_STR_88)
+#  endif
+#  ifdef XLAT_STR_89
+  + sizeof(XLAT_STR_89)
+#  endif
+#  ifdef XLAT_STR_90
+  + sizeof(XLAT_STR_90)
+#  endif
+#  ifdef XLAT_STR_91
+  + sizeof(XLAT_STR_91)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
+#  undef XLAT_STR_30
+#  undef XLAT_VAL_30
+#  undef XLAT_STR_31
+#  undef XLAT_VAL_31
+#  undef XLAT_STR_32
+#  undef XLAT_VAL_32
+#  undef XLAT_STR_33
+#  undef XLAT_VAL_33
+#  undef XLAT_STR_34
+#  undef XLAT_VAL_34
+#  undef XLAT_STR_35
+#  undef XLAT_VAL_35
+#  undef XLAT_STR_36
+#  undef XLAT_VAL_36
+#  undef XLAT_STR_37
+#  undef XLAT_VAL_37
+#  undef XLAT_STR_38
+#  undef XLAT_VAL_38
+#  undef XLAT_STR_39
+#  undef XLAT_VAL_39
+#  undef XLAT_STR_40
+#  undef XLAT_VAL_40
+#  undef XLAT_STR_41
+#  undef XLAT_VAL_41
+#  undef XLAT_STR_42
+#  undef XLAT_VAL_42
+#  undef XLAT_STR_43
+#  undef XLAT_VAL_43
+#  undef XLAT_STR_44
+#  undef XLAT_VAL_44
+#  undef XLAT_STR_45
+#  undef XLAT_VAL_45
+#  undef XLAT_STR_46
+#  undef XLAT_VAL_46
+#  undef XLAT_STR_47
+#  undef XLAT_VAL_47
+#  undef XLAT_STR_48
+#  undef XLAT_VAL_48
+#  undef XLAT_STR_49
+#  undef XLAT_VAL_49
+#  undef XLAT_STR_50
+#  undef XLAT_VAL_50
+#  undef XLAT_STR_51
+#  undef XLAT_VAL_51
+#  undef XLAT_STR_52
+#  undef XLAT_VAL_52
+#  undef XLAT_STR_53
+#  undef XLAT_VAL_53
+#  undef XLAT_STR_54
+#  undef XLAT_VAL_54
+#  undef XLAT_STR_55
+#  undef XLAT_VAL_55
+#  undef XLAT_STR_56
+#  undef XLAT_VAL_56
+#  undef XLAT_STR_57
+#  undef XLAT_VAL_57
+#  undef XLAT_STR_58
+#  undef XLAT_VAL_58
+#  undef XLAT_STR_59
+#  undef XLAT_VAL_59
+#  undef XLAT_STR_60
+#  undef XLAT_VAL_60
+#  undef XLAT_STR_61
+#  undef XLAT_VAL_61
+#  undef XLAT_STR_62
+#  undef XLAT_VAL_62
+#  undef XLAT_STR_63
+#  undef XLAT_VAL_63
+#  undef XLAT_STR_64
+#  undef XLAT_VAL_64
+#  undef XLAT_STR_65
+#  undef XLAT_VAL_65
+#  undef XLAT_STR_66
+#  undef XLAT_VAL_66
+#  undef XLAT_STR_67
+#  undef XLAT_VAL_67
+#  undef XLAT_STR_68
+#  undef XLAT_VAL_68
+#  undef XLAT_STR_69
+#  undef XLAT_VAL_69
+#  undef XLAT_STR_70
+#  undef XLAT_VAL_70
+#  undef XLAT_STR_71
+#  undef XLAT_VAL_71
+#  undef XLAT_STR_72
+#  undef XLAT_VAL_72
+#  undef XLAT_STR_73
+#  undef XLAT_VAL_73
+#  undef XLAT_STR_74
+#  undef XLAT_VAL_74
+#  undef XLAT_STR_75
+#  undef XLAT_VAL_75
+#  undef XLAT_STR_76
+#  undef XLAT_VAL_76
+#  undef XLAT_STR_77
+#  undef XLAT_VAL_77
+#  undef XLAT_STR_78
+#  undef XLAT_VAL_78
+#  undef XLAT_STR_79
+#  undef XLAT_VAL_79
+#  undef XLAT_STR_80
+#  undef XLAT_VAL_80
+#  undef XLAT_STR_81
+#  undef XLAT_VAL_81
+#  undef XLAT_STR_82
+#  undef XLAT_VAL_82
+#  undef XLAT_STR_83
+#  undef XLAT_VAL_83
+#  undef XLAT_STR_84
+#  undef XLAT_VAL_84
+#  undef XLAT_STR_85
+#  undef XLAT_VAL_85
+#  undef XLAT_STR_86
+#  undef XLAT_VAL_86
+#  undef XLAT_STR_87
+#  undef XLAT_VAL_87
+#  undef XLAT_STR_88
+#  undef XLAT_VAL_88
+#  undef XLAT_STR_89
+#  undef XLAT_VAL_89
+#  undef XLAT_STR_90
+#  undef XLAT_VAL_90
+#  undef XLAT_STR_91
+#  undef XLAT_VAL_91
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 8f452e85e67a31cb7bed5d4db85ca4caba305c2e..be0f5ed82686cfcade0f9a6085aa66ea316e2ce6 100644 (file)
@@ -1,3 +1,6 @@
+#enum
+#include <sys/types.h>
+#include <linux/sysctl.h>
 #unconditional
 NET_IPV4_FORWARD
 NET_IPV4_DYNADDR
diff --git a/xlat/sysctl_net_ipv4.m4 b/xlat/sysctl_net_ipv4.m4
new file mode 100644 (file)
index 0000000..1ef7a6a
--- /dev/null
@@ -0,0 +1,99 @@
+dnl Generated by ./xlat/gen.sh from ./xlat/sysctl_net_ipv4.in; do not edit.
+AC_DEFUN([st_CHECK_ENUMS_sysctl_net_ipv4],[
+AC_CHECK_DECLS(m4_normalize([
+NET_IPV4_FORWARD,
+NET_IPV4_DYNADDR,
+NET_IPV4_CONF,
+NET_IPV4_NEIGH,
+NET_IPV4_ROUTE,
+NET_IPV4_FIB_HASH,
+NET_IPV4_NETFILTER,
+NET_IPV4_TCP_TIMESTAMPS,
+NET_IPV4_TCP_WINDOW_SCALING,
+NET_IPV4_TCP_SACK,
+NET_IPV4_TCP_RETRANS_COLLAPSE,
+NET_IPV4_DEFAULT_TTL,
+NET_IPV4_AUTOCONFIG,
+NET_IPV4_NO_PMTU_DISC,
+NET_IPV4_TCP_SYN_RETRIES,
+NET_IPV4_IPFRAG_HIGH_THRESH,
+NET_IPV4_IPFRAG_LOW_THRESH,
+NET_IPV4_IPFRAG_TIME,
+NET_IPV4_TCP_MAX_KA_PROBES,
+NET_IPV4_TCP_KEEPALIVE_TIME,
+NET_IPV4_TCP_KEEPALIVE_PROBES,
+NET_IPV4_TCP_RETRIES1,
+NET_IPV4_TCP_RETRIES2,
+NET_IPV4_TCP_FIN_TIMEOUT,
+NET_IPV4_IP_MASQ_DEBUG,
+NET_TCP_SYNCOOKIES,
+NET_TCP_STDURG,
+NET_TCP_RFC1337,
+NET_TCP_SYN_TAILDROP,
+NET_TCP_MAX_SYN_BACKLOG,
+NET_IPV4_LOCAL_PORT_RANGE,
+NET_IPV4_ICMP_ECHO_IGNORE_ALL,
+NET_IPV4_ICMP_ECHO_IGNORE_BROADCASTS,
+NET_IPV4_ICMP_SOURCEQUENCH_RATE,
+NET_IPV4_ICMP_DESTUNREACH_RATE,
+NET_IPV4_ICMP_TIMEEXCEED_RATE,
+NET_IPV4_ICMP_PARAMPROB_RATE,
+NET_IPV4_ICMP_ECHOREPLY_RATE,
+NET_IPV4_ICMP_IGNORE_BOGUS_ERROR_RESPONSES,
+NET_IPV4_IGMP_MAX_MEMBERSHIPS,
+NET_TCP_TW_RECYCLE,
+NET_IPV4_ALWAYS_DEFRAG,
+NET_IPV4_TCP_KEEPALIVE_INTVL,
+NET_IPV4_INET_PEER_THRESHOLD,
+NET_IPV4_INET_PEER_MINTTL,
+NET_IPV4_INET_PEER_MAXTTL,
+NET_IPV4_INET_PEER_GC_MINTIME,
+NET_IPV4_INET_PEER_GC_MAXTIME,
+NET_TCP_ORPHAN_RETRIES,
+NET_TCP_ABORT_ON_OVERFLOW,
+NET_TCP_SYNACK_RETRIES,
+NET_TCP_MAX_ORPHANS,
+NET_TCP_MAX_TW_BUCKETS,
+NET_TCP_FACK,
+NET_TCP_REORDERING,
+NET_TCP_ECN,
+NET_TCP_DSACK,
+NET_TCP_MEM,
+NET_TCP_WMEM,
+NET_TCP_RMEM,
+NET_TCP_APP_WIN,
+NET_TCP_ADV_WIN_SCALE,
+NET_IPV4_NONLOCAL_BIND,
+NET_IPV4_ICMP_RATELIMIT,
+NET_IPV4_ICMP_RATEMASK,
+NET_TCP_TW_REUSE,
+NET_TCP_FRTO,
+NET_TCP_LOW_LATENCY,
+NET_IPV4_IPFRAG_SECRET_INTERVAL,
+NET_IPV4_IGMP_MAX_MSF,
+NET_TCP_NO_METRICS_SAVE,
+NET_TCP_DEFAULT_WIN_SCALE,
+NET_TCP_MODERATE_RCVBUF,
+NET_TCP_TSO_WIN_DIVISOR,
+NET_TCP_BIC_BETA,
+NET_IPV4_ICMP_ERRORS_USE_INBOUND_IFADDR,
+NET_TCP_CONG_CONTROL,
+NET_TCP_ABC,
+NET_IPV4_IPFRAG_MAX_DIST,
+NET_TCP_MTU_PROBING,
+NET_TCP_BASE_MSS,
+NET_IPV4_TCP_WORKAROUND_SIGNED_WINDOWS,
+NET_TCP_DMA_COPYBREAK,
+NET_TCP_SLOW_START_AFTER_IDLE,
+NET_CIPSOV4_CACHE_ENABLE,
+NET_CIPSOV4_CACHE_BUCKET_SIZE,
+NET_CIPSOV4_RBM_OPTFMT,
+NET_CIPSOV4_RBM_STRICTVALID,
+NET_TCP_AVAIL_CONG_CONTROL,
+NET_TCP_ALLOWED_CONG_CONTROL,
+NET_TCP_MAX_SSTHRESH,
+NET_TCP_FRTO_RESPONSE
+]),,, [
+#include <sys/types.h>
+#include <linux/sysctl.h>
+])])])
index 892df3391043dc5e19735173b470e9131e42f6ca..03bb811c606e62b0864ea2cd4f1deab24a72ff68 100644 (file)
 
 # else
 
-static
-const struct xlat sysctl_net_ipv4_conf[] = {
+static const struct xlat_data sysctl_net_ipv4_conf_xdata[] = {
  XLAT(NET_IPV4_CONF_FORWARDING),
+ #define XLAT_VAL_0 ((unsigned) (NET_IPV4_CONF_FORWARDING))
+ #define XLAT_STR_0 STRINGIFY(NET_IPV4_CONF_FORWARDING)
  XLAT(NET_IPV4_CONF_MC_FORWARDING),
+ #define XLAT_VAL_1 ((unsigned) (NET_IPV4_CONF_MC_FORWARDING))
+ #define XLAT_STR_1 STRINGIFY(NET_IPV4_CONF_MC_FORWARDING)
  XLAT(NET_IPV4_CONF_PROXY_ARP),
+ #define XLAT_VAL_2 ((unsigned) (NET_IPV4_CONF_PROXY_ARP))
+ #define XLAT_STR_2 STRINGIFY(NET_IPV4_CONF_PROXY_ARP)
  XLAT(NET_IPV4_CONF_ACCEPT_REDIRECTS),
+ #define XLAT_VAL_3 ((unsigned) (NET_IPV4_CONF_ACCEPT_REDIRECTS))
+ #define XLAT_STR_3 STRINGIFY(NET_IPV4_CONF_ACCEPT_REDIRECTS)
  XLAT(NET_IPV4_CONF_SECURE_REDIRECTS),
+ #define XLAT_VAL_4 ((unsigned) (NET_IPV4_CONF_SECURE_REDIRECTS))
+ #define XLAT_STR_4 STRINGIFY(NET_IPV4_CONF_SECURE_REDIRECTS)
  XLAT(NET_IPV4_CONF_SEND_REDIRECTS),
+ #define XLAT_VAL_5 ((unsigned) (NET_IPV4_CONF_SEND_REDIRECTS))
+ #define XLAT_STR_5 STRINGIFY(NET_IPV4_CONF_SEND_REDIRECTS)
  XLAT(NET_IPV4_CONF_SHARED_MEDIA),
+ #define XLAT_VAL_6 ((unsigned) (NET_IPV4_CONF_SHARED_MEDIA))
+ #define XLAT_STR_6 STRINGIFY(NET_IPV4_CONF_SHARED_MEDIA)
  XLAT(NET_IPV4_CONF_RP_FILTER),
+ #define XLAT_VAL_7 ((unsigned) (NET_IPV4_CONF_RP_FILTER))
+ #define XLAT_STR_7 STRINGIFY(NET_IPV4_CONF_RP_FILTER)
  XLAT(NET_IPV4_CONF_ACCEPT_SOURCE_ROUTE),
+ #define XLAT_VAL_8 ((unsigned) (NET_IPV4_CONF_ACCEPT_SOURCE_ROUTE))
+ #define XLAT_STR_8 STRINGIFY(NET_IPV4_CONF_ACCEPT_SOURCE_ROUTE)
  XLAT(NET_IPV4_CONF_BOOTP_RELAY),
+ #define XLAT_VAL_9 ((unsigned) (NET_IPV4_CONF_BOOTP_RELAY))
+ #define XLAT_STR_9 STRINGIFY(NET_IPV4_CONF_BOOTP_RELAY)
  XLAT(NET_IPV4_CONF_LOG_MARTIANS),
+ #define XLAT_VAL_10 ((unsigned) (NET_IPV4_CONF_LOG_MARTIANS))
+ #define XLAT_STR_10 STRINGIFY(NET_IPV4_CONF_LOG_MARTIANS)
  XLAT(NET_IPV4_CONF_TAG),
+ #define XLAT_VAL_11 ((unsigned) (NET_IPV4_CONF_TAG))
+ #define XLAT_STR_11 STRINGIFY(NET_IPV4_CONF_TAG)
  XLAT(NET_IPV4_CONF_ARPFILTER),
+ #define XLAT_VAL_12 ((unsigned) (NET_IPV4_CONF_ARPFILTER))
+ #define XLAT_STR_12 STRINGIFY(NET_IPV4_CONF_ARPFILTER)
  XLAT(NET_IPV4_CONF_MEDIUM_ID),
+ #define XLAT_VAL_13 ((unsigned) (NET_IPV4_CONF_MEDIUM_ID))
+ #define XLAT_STR_13 STRINGIFY(NET_IPV4_CONF_MEDIUM_ID)
  XLAT(NET_IPV4_CONF_NOXFRM),
+ #define XLAT_VAL_14 ((unsigned) (NET_IPV4_CONF_NOXFRM))
+ #define XLAT_STR_14 STRINGIFY(NET_IPV4_CONF_NOXFRM)
  XLAT(NET_IPV4_CONF_NOPOLICY),
+ #define XLAT_VAL_15 ((unsigned) (NET_IPV4_CONF_NOPOLICY))
+ #define XLAT_STR_15 STRINGIFY(NET_IPV4_CONF_NOPOLICY)
 #if defined(NET_IPV4_CONF_FORCE_IGMP_VERSION) || (defined(HAVE_DECL_NET_IPV4_CONF_FORCE_IGMP_VERSION) && HAVE_DECL_NET_IPV4_CONF_FORCE_IGMP_VERSION)
   XLAT(NET_IPV4_CONF_FORCE_IGMP_VERSION),
+ #define XLAT_VAL_16 ((unsigned) (NET_IPV4_CONF_FORCE_IGMP_VERSION))
+ #define XLAT_STR_16 STRINGIFY(NET_IPV4_CONF_FORCE_IGMP_VERSION)
 #endif
 #if defined(NET_IPV4_CONF_ARP_ANNOUNCE) || (defined(HAVE_DECL_NET_IPV4_CONF_ARP_ANNOUNCE) && HAVE_DECL_NET_IPV4_CONF_ARP_ANNOUNCE)
   XLAT(NET_IPV4_CONF_ARP_ANNOUNCE),
+ #define XLAT_VAL_17 ((unsigned) (NET_IPV4_CONF_ARP_ANNOUNCE))
+ #define XLAT_STR_17 STRINGIFY(NET_IPV4_CONF_ARP_ANNOUNCE)
 #endif
 #if defined(NET_IPV4_CONF_ARP_IGNORE) || (defined(HAVE_DECL_NET_IPV4_CONF_ARP_IGNORE) && HAVE_DECL_NET_IPV4_CONF_ARP_IGNORE)
   XLAT(NET_IPV4_CONF_ARP_IGNORE),
+ #define XLAT_VAL_18 ((unsigned) (NET_IPV4_CONF_ARP_IGNORE))
+ #define XLAT_STR_18 STRINGIFY(NET_IPV4_CONF_ARP_IGNORE)
 #endif
 #if defined(NET_IPV4_CONF_PROMOTE_SECONDARIES) || (defined(HAVE_DECL_NET_IPV4_CONF_PROMOTE_SECONDARIES) && HAVE_DECL_NET_IPV4_CONF_PROMOTE_SECONDARIES)
   XLAT(NET_IPV4_CONF_PROMOTE_SECONDARIES),
+ #define XLAT_VAL_19 ((unsigned) (NET_IPV4_CONF_PROMOTE_SECONDARIES))
+ #define XLAT_STR_19 STRINGIFY(NET_IPV4_CONF_PROMOTE_SECONDARIES)
 #endif
 #if defined(NET_IPV4_CONF_ARP_ACCEPT) || (defined(HAVE_DECL_NET_IPV4_CONF_ARP_ACCEPT) && HAVE_DECL_NET_IPV4_CONF_ARP_ACCEPT)
   XLAT(NET_IPV4_CONF_ARP_ACCEPT),
+ #define XLAT_VAL_20 ((unsigned) (NET_IPV4_CONF_ARP_ACCEPT))
+ #define XLAT_STR_20 STRINGIFY(NET_IPV4_CONF_ARP_ACCEPT)
 #endif
 #if defined(NET_IPV4_CONF_ARP_NOTIFY) || (defined(HAVE_DECL_NET_IPV4_CONF_ARP_NOTIFY) && HAVE_DECL_NET_IPV4_CONF_ARP_NOTIFY)
   XLAT(NET_IPV4_CONF_ARP_NOTIFY),
+ #define XLAT_VAL_21 ((unsigned) (NET_IPV4_CONF_ARP_NOTIFY))
+ #define XLAT_STR_21 STRINGIFY(NET_IPV4_CONF_ARP_NOTIFY)
 #endif
- XLAT_END
 };
+static
+const struct xlat sysctl_net_ipv4_conf[1] = { {
+ .data = sysctl_net_ipv4_conf_xdata,
+ .size = ARRAY_SIZE(sysctl_net_ipv4_conf_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index be94bd224e77d30cfda266d137d9b7ffef8272c5..9558be291ed13f22d05ee693f8b66d955a51806a 100644 (file)
@@ -1,3 +1,6 @@
+#enum
+#include <sys/types.h>
+#include <linux/sysctl.h>
 #unconditional
 NET_IPV4_CONF_FORWARDING
 NET_IPV4_CONF_MC_FORWARDING
diff --git a/xlat/sysctl_net_ipv4_conf.m4 b/xlat/sysctl_net_ipv4_conf.m4
new file mode 100644 (file)
index 0000000..5242987
--- /dev/null
@@ -0,0 +1,29 @@
+dnl Generated by ./xlat/gen.sh from ./xlat/sysctl_net_ipv4_conf.in; do not edit.
+AC_DEFUN([st_CHECK_ENUMS_sysctl_net_ipv4_conf],[
+AC_CHECK_DECLS(m4_normalize([
+NET_IPV4_CONF_FORWARDING,
+NET_IPV4_CONF_MC_FORWARDING,
+NET_IPV4_CONF_PROXY_ARP,
+NET_IPV4_CONF_ACCEPT_REDIRECTS,
+NET_IPV4_CONF_SECURE_REDIRECTS,
+NET_IPV4_CONF_SEND_REDIRECTS,
+NET_IPV4_CONF_SHARED_MEDIA,
+NET_IPV4_CONF_RP_FILTER,
+NET_IPV4_CONF_ACCEPT_SOURCE_ROUTE,
+NET_IPV4_CONF_BOOTP_RELAY,
+NET_IPV4_CONF_LOG_MARTIANS,
+NET_IPV4_CONF_TAG,
+NET_IPV4_CONF_ARPFILTER,
+NET_IPV4_CONF_MEDIUM_ID,
+NET_IPV4_CONF_NOXFRM,
+NET_IPV4_CONF_NOPOLICY,
+NET_IPV4_CONF_FORCE_IGMP_VERSION,
+NET_IPV4_CONF_ARP_ANNOUNCE,
+NET_IPV4_CONF_ARP_IGNORE,
+NET_IPV4_CONF_PROMOTE_SECONDARIES,
+NET_IPV4_CONF_ARP_ACCEPT,
+NET_IPV4_CONF_ARP_NOTIFY
+]),,, [
+#include <sys/types.h>
+#include <linux/sysctl.h>
+])])])
index 4cb40adb1788910c68a0dc3bc7b647dcc4db2610..94cfab50b74cd93e8454825516d9f65dc364b0fd 100644 (file)
 
 # else
 
-static
-const struct xlat sysctl_net_ipv4_route[] = {
+static const struct xlat_data sysctl_net_ipv4_route_xdata[] = {
  XLAT(NET_IPV4_ROUTE_FLUSH),
+ #define XLAT_VAL_0 ((unsigned) (NET_IPV4_ROUTE_FLUSH))
+ #define XLAT_STR_0 STRINGIFY(NET_IPV4_ROUTE_FLUSH)
  XLAT(NET_IPV4_ROUTE_MIN_DELAY),
+ #define XLAT_VAL_1 ((unsigned) (NET_IPV4_ROUTE_MIN_DELAY))
+ #define XLAT_STR_1 STRINGIFY(NET_IPV4_ROUTE_MIN_DELAY)
  XLAT(NET_IPV4_ROUTE_MAX_DELAY),
+ #define XLAT_VAL_2 ((unsigned) (NET_IPV4_ROUTE_MAX_DELAY))
+ #define XLAT_STR_2 STRINGIFY(NET_IPV4_ROUTE_MAX_DELAY)
  XLAT(NET_IPV4_ROUTE_GC_THRESH),
+ #define XLAT_VAL_3 ((unsigned) (NET_IPV4_ROUTE_GC_THRESH))
+ #define XLAT_STR_3 STRINGIFY(NET_IPV4_ROUTE_GC_THRESH)
  XLAT(NET_IPV4_ROUTE_MAX_SIZE),
+ #define XLAT_VAL_4 ((unsigned) (NET_IPV4_ROUTE_MAX_SIZE))
+ #define XLAT_STR_4 STRINGIFY(NET_IPV4_ROUTE_MAX_SIZE)
  XLAT(NET_IPV4_ROUTE_GC_MIN_INTERVAL),
+ #define XLAT_VAL_5 ((unsigned) (NET_IPV4_ROUTE_GC_MIN_INTERVAL))
+ #define XLAT_STR_5 STRINGIFY(NET_IPV4_ROUTE_GC_MIN_INTERVAL)
  XLAT(NET_IPV4_ROUTE_GC_TIMEOUT),
+ #define XLAT_VAL_6 ((unsigned) (NET_IPV4_ROUTE_GC_TIMEOUT))
+ #define XLAT_STR_6 STRINGIFY(NET_IPV4_ROUTE_GC_TIMEOUT)
  XLAT(NET_IPV4_ROUTE_GC_INTERVAL),
+ #define XLAT_VAL_7 ((unsigned) (NET_IPV4_ROUTE_GC_INTERVAL))
+ #define XLAT_STR_7 STRINGIFY(NET_IPV4_ROUTE_GC_INTERVAL)
  XLAT(NET_IPV4_ROUTE_REDIRECT_LOAD),
+ #define XLAT_VAL_8 ((unsigned) (NET_IPV4_ROUTE_REDIRECT_LOAD))
+ #define XLAT_STR_8 STRINGIFY(NET_IPV4_ROUTE_REDIRECT_LOAD)
  XLAT(NET_IPV4_ROUTE_REDIRECT_NUMBER),
+ #define XLAT_VAL_9 ((unsigned) (NET_IPV4_ROUTE_REDIRECT_NUMBER))
+ #define XLAT_STR_9 STRINGIFY(NET_IPV4_ROUTE_REDIRECT_NUMBER)
  XLAT(NET_IPV4_ROUTE_REDIRECT_SILENCE),
+ #define XLAT_VAL_10 ((unsigned) (NET_IPV4_ROUTE_REDIRECT_SILENCE))
+ #define XLAT_STR_10 STRINGIFY(NET_IPV4_ROUTE_REDIRECT_SILENCE)
  XLAT(NET_IPV4_ROUTE_ERROR_COST),
+ #define XLAT_VAL_11 ((unsigned) (NET_IPV4_ROUTE_ERROR_COST))
+ #define XLAT_STR_11 STRINGIFY(NET_IPV4_ROUTE_ERROR_COST)
  XLAT(NET_IPV4_ROUTE_ERROR_BURST),
+ #define XLAT_VAL_12 ((unsigned) (NET_IPV4_ROUTE_ERROR_BURST))
+ #define XLAT_STR_12 STRINGIFY(NET_IPV4_ROUTE_ERROR_BURST)
  XLAT(NET_IPV4_ROUTE_GC_ELASTICITY),
+ #define XLAT_VAL_13 ((unsigned) (NET_IPV4_ROUTE_GC_ELASTICITY))
+ #define XLAT_STR_13 STRINGIFY(NET_IPV4_ROUTE_GC_ELASTICITY)
  XLAT(NET_IPV4_ROUTE_MTU_EXPIRES),
+ #define XLAT_VAL_14 ((unsigned) (NET_IPV4_ROUTE_MTU_EXPIRES))
+ #define XLAT_STR_14 STRINGIFY(NET_IPV4_ROUTE_MTU_EXPIRES)
  XLAT(NET_IPV4_ROUTE_MIN_PMTU),
+ #define XLAT_VAL_15 ((unsigned) (NET_IPV4_ROUTE_MIN_PMTU))
+ #define XLAT_STR_15 STRINGIFY(NET_IPV4_ROUTE_MIN_PMTU)
  XLAT(NET_IPV4_ROUTE_MIN_ADVMSS),
+ #define XLAT_VAL_16 ((unsigned) (NET_IPV4_ROUTE_MIN_ADVMSS))
+ #define XLAT_STR_16 STRINGIFY(NET_IPV4_ROUTE_MIN_ADVMSS)
  XLAT(NET_IPV4_ROUTE_SECRET_INTERVAL),
+ #define XLAT_VAL_17 ((unsigned) (NET_IPV4_ROUTE_SECRET_INTERVAL))
+ #define XLAT_STR_17 STRINGIFY(NET_IPV4_ROUTE_SECRET_INTERVAL)
 #if defined(NET_IPV4_ROUTE_GC_MIN_INTERVAL_MS) || (defined(HAVE_DECL_NET_IPV4_ROUTE_GC_MIN_INTERVAL_MS) && HAVE_DECL_NET_IPV4_ROUTE_GC_MIN_INTERVAL_MS)
   XLAT(NET_IPV4_ROUTE_GC_MIN_INTERVAL_MS),
+ #define XLAT_VAL_18 ((unsigned) (NET_IPV4_ROUTE_GC_MIN_INTERVAL_MS))
+ #define XLAT_STR_18 STRINGIFY(NET_IPV4_ROUTE_GC_MIN_INTERVAL_MS)
 #endif
- XLAT_END
 };
+static
+const struct xlat sysctl_net_ipv4_route[1] = { {
+ .data = sysctl_net_ipv4_route_xdata,
+ .size = ARRAY_SIZE(sysctl_net_ipv4_route_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index a77cf41725e7ad36dae44426303c21742544b07a..d7b5bc65cc6a5176b892aa7ecc40a02a8c1f9889 100644 (file)
@@ -1,3 +1,6 @@
+#enum
+#include <sys/types.h>
+#include <linux/sysctl.h>
 #unconditional
 NET_IPV4_ROUTE_FLUSH
 NET_IPV4_ROUTE_MIN_DELAY
diff --git a/xlat/sysctl_net_ipv4_route.m4 b/xlat/sysctl_net_ipv4_route.m4
new file mode 100644 (file)
index 0000000..4a49548
--- /dev/null
@@ -0,0 +1,26 @@
+dnl Generated by ./xlat/gen.sh from ./xlat/sysctl_net_ipv4_route.in; do not edit.
+AC_DEFUN([st_CHECK_ENUMS_sysctl_net_ipv4_route],[
+AC_CHECK_DECLS(m4_normalize([
+NET_IPV4_ROUTE_FLUSH,
+NET_IPV4_ROUTE_MIN_DELAY,
+NET_IPV4_ROUTE_MAX_DELAY,
+NET_IPV4_ROUTE_GC_THRESH,
+NET_IPV4_ROUTE_MAX_SIZE,
+NET_IPV4_ROUTE_GC_MIN_INTERVAL,
+NET_IPV4_ROUTE_GC_TIMEOUT,
+NET_IPV4_ROUTE_GC_INTERVAL,
+NET_IPV4_ROUTE_REDIRECT_LOAD,
+NET_IPV4_ROUTE_REDIRECT_NUMBER,
+NET_IPV4_ROUTE_REDIRECT_SILENCE,
+NET_IPV4_ROUTE_ERROR_COST,
+NET_IPV4_ROUTE_ERROR_BURST,
+NET_IPV4_ROUTE_GC_ELASTICITY,
+NET_IPV4_ROUTE_MTU_EXPIRES,
+NET_IPV4_ROUTE_MIN_PMTU,
+NET_IPV4_ROUTE_MIN_ADVMSS,
+NET_IPV4_ROUTE_SECRET_INTERVAL,
+NET_IPV4_ROUTE_GC_MIN_INTERVAL_MS
+]),,, [
+#include <sys/types.h>
+#include <linux/sysctl.h>
+])])])
index 06b6c455af215e4df092b6da5d873f691a0add4b..eabfc6ce9873442a23a75824769c98225cfe7bef 100644 (file)
 
 # else
 
-static
-const struct xlat sysctl_net_ipv6[] = {
+static const struct xlat_data sysctl_net_ipv6_xdata[] = {
  XLAT(NET_IPV6_CONF),
+ #define XLAT_VAL_0 ((unsigned) (NET_IPV6_CONF))
+ #define XLAT_STR_0 STRINGIFY(NET_IPV6_CONF)
  XLAT(NET_IPV6_NEIGH),
+ #define XLAT_VAL_1 ((unsigned) (NET_IPV6_NEIGH))
+ #define XLAT_STR_1 STRINGIFY(NET_IPV6_NEIGH)
  XLAT(NET_IPV6_ROUTE),
+ #define XLAT_VAL_2 ((unsigned) (NET_IPV6_ROUTE))
+ #define XLAT_STR_2 STRINGIFY(NET_IPV6_ROUTE)
  XLAT(NET_IPV6_ICMP),
+ #define XLAT_VAL_3 ((unsigned) (NET_IPV6_ICMP))
+ #define XLAT_STR_3 STRINGIFY(NET_IPV6_ICMP)
  XLAT(NET_IPV6_BINDV6ONLY),
+ #define XLAT_VAL_4 ((unsigned) (NET_IPV6_BINDV6ONLY))
+ #define XLAT_STR_4 STRINGIFY(NET_IPV6_BINDV6ONLY)
  XLAT(NET_IPV6_IP6FRAG_HIGH_THRESH),
+ #define XLAT_VAL_5 ((unsigned) (NET_IPV6_IP6FRAG_HIGH_THRESH))
+ #define XLAT_STR_5 STRINGIFY(NET_IPV6_IP6FRAG_HIGH_THRESH)
  XLAT(NET_IPV6_IP6FRAG_LOW_THRESH),
+ #define XLAT_VAL_6 ((unsigned) (NET_IPV6_IP6FRAG_LOW_THRESH))
+ #define XLAT_STR_6 STRINGIFY(NET_IPV6_IP6FRAG_LOW_THRESH)
  XLAT(NET_IPV6_IP6FRAG_TIME),
+ #define XLAT_VAL_7 ((unsigned) (NET_IPV6_IP6FRAG_TIME))
+ #define XLAT_STR_7 STRINGIFY(NET_IPV6_IP6FRAG_TIME)
  XLAT(NET_IPV6_IP6FRAG_SECRET_INTERVAL),
+ #define XLAT_VAL_8 ((unsigned) (NET_IPV6_IP6FRAG_SECRET_INTERVAL))
+ #define XLAT_STR_8 STRINGIFY(NET_IPV6_IP6FRAG_SECRET_INTERVAL)
 #if defined(NET_IPV6_MLD_MAX_MSF) || (defined(HAVE_DECL_NET_IPV6_MLD_MAX_MSF) && HAVE_DECL_NET_IPV6_MLD_MAX_MSF)
   XLAT(NET_IPV6_MLD_MAX_MSF),
+ #define XLAT_VAL_9 ((unsigned) (NET_IPV6_MLD_MAX_MSF))
+ #define XLAT_STR_9 STRINGIFY(NET_IPV6_MLD_MAX_MSF)
 #endif
- XLAT_END
 };
+static
+const struct xlat sysctl_net_ipv6[1] = { {
+ .data = sysctl_net_ipv6_xdata,
+ .size = ARRAY_SIZE(sysctl_net_ipv6_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 711dbb52199f4fea24021146c1189b248b9e8ff2..3cd48c523970d4554c1653c116ac7ade23e2b6e8 100644 (file)
@@ -1,3 +1,6 @@
+#enum
+#include <sys/types.h>
+#include <linux/sysctl.h>
 #unconditional
 NET_IPV6_CONF
 NET_IPV6_NEIGH
diff --git a/xlat/sysctl_net_ipv6.m4 b/xlat/sysctl_net_ipv6.m4
new file mode 100644 (file)
index 0000000..63a4ef1
--- /dev/null
@@ -0,0 +1,17 @@
+dnl Generated by ./xlat/gen.sh from ./xlat/sysctl_net_ipv6.in; do not edit.
+AC_DEFUN([st_CHECK_ENUMS_sysctl_net_ipv6],[
+AC_CHECK_DECLS(m4_normalize([
+NET_IPV6_CONF,
+NET_IPV6_NEIGH,
+NET_IPV6_ROUTE,
+NET_IPV6_ICMP,
+NET_IPV6_BINDV6ONLY,
+NET_IPV6_IP6FRAG_HIGH_THRESH,
+NET_IPV6_IP6FRAG_LOW_THRESH,
+NET_IPV6_IP6FRAG_TIME,
+NET_IPV6_IP6FRAG_SECRET_INTERVAL,
+NET_IPV6_MLD_MAX_MSF
+]),,, [
+#include <sys/types.h>
+#include <linux/sysctl.h>
+])])])
index 7bcf4bc49ebf54bcb3eec8d88cadb6ae598b2de1..75cf92728e5f8ca3e6af7bfbbbfd692bdd45b65b 100644 (file)
 
 # else
 
-static
-const struct xlat sysctl_net_ipv6_route[] = {
+static const struct xlat_data sysctl_net_ipv6_route_xdata[] = {
  XLAT(NET_IPV6_ROUTE_FLUSH),
+ #define XLAT_VAL_0 ((unsigned) (NET_IPV6_ROUTE_FLUSH))
+ #define XLAT_STR_0 STRINGIFY(NET_IPV6_ROUTE_FLUSH)
  XLAT(NET_IPV6_ROUTE_GC_THRESH),
+ #define XLAT_VAL_1 ((unsigned) (NET_IPV6_ROUTE_GC_THRESH))
+ #define XLAT_STR_1 STRINGIFY(NET_IPV6_ROUTE_GC_THRESH)
  XLAT(NET_IPV6_ROUTE_MAX_SIZE),
+ #define XLAT_VAL_2 ((unsigned) (NET_IPV6_ROUTE_MAX_SIZE))
+ #define XLAT_STR_2 STRINGIFY(NET_IPV6_ROUTE_MAX_SIZE)
  XLAT(NET_IPV6_ROUTE_GC_MIN_INTERVAL),
+ #define XLAT_VAL_3 ((unsigned) (NET_IPV6_ROUTE_GC_MIN_INTERVAL))
+ #define XLAT_STR_3 STRINGIFY(NET_IPV6_ROUTE_GC_MIN_INTERVAL)
  XLAT(NET_IPV6_ROUTE_GC_TIMEOUT),
+ #define XLAT_VAL_4 ((unsigned) (NET_IPV6_ROUTE_GC_TIMEOUT))
+ #define XLAT_STR_4 STRINGIFY(NET_IPV6_ROUTE_GC_TIMEOUT)
  XLAT(NET_IPV6_ROUTE_GC_INTERVAL),
+ #define XLAT_VAL_5 ((unsigned) (NET_IPV6_ROUTE_GC_INTERVAL))
+ #define XLAT_STR_5 STRINGIFY(NET_IPV6_ROUTE_GC_INTERVAL)
  XLAT(NET_IPV6_ROUTE_GC_ELASTICITY),
+ #define XLAT_VAL_6 ((unsigned) (NET_IPV6_ROUTE_GC_ELASTICITY))
+ #define XLAT_STR_6 STRINGIFY(NET_IPV6_ROUTE_GC_ELASTICITY)
  XLAT(NET_IPV6_ROUTE_MTU_EXPIRES),
+ #define XLAT_VAL_7 ((unsigned) (NET_IPV6_ROUTE_MTU_EXPIRES))
+ #define XLAT_STR_7 STRINGIFY(NET_IPV6_ROUTE_MTU_EXPIRES)
  XLAT(NET_IPV6_ROUTE_MIN_ADVMSS),
+ #define XLAT_VAL_8 ((unsigned) (NET_IPV6_ROUTE_MIN_ADVMSS))
+ #define XLAT_STR_8 STRINGIFY(NET_IPV6_ROUTE_MIN_ADVMSS)
 #if defined(NET_IPV6_ROUTE_GC_MIN_INTERVAL_MS) || (defined(HAVE_DECL_NET_IPV6_ROUTE_GC_MIN_INTERVAL_MS) && HAVE_DECL_NET_IPV6_ROUTE_GC_MIN_INTERVAL_MS)
   XLAT(NET_IPV6_ROUTE_GC_MIN_INTERVAL_MS),
+ #define XLAT_VAL_9 ((unsigned) (NET_IPV6_ROUTE_GC_MIN_INTERVAL_MS))
+ #define XLAT_STR_9 STRINGIFY(NET_IPV6_ROUTE_GC_MIN_INTERVAL_MS)
 #endif
- XLAT_END
 };
+static
+const struct xlat sysctl_net_ipv6_route[1] = { {
+ .data = sysctl_net_ipv6_route_xdata,
+ .size = ARRAY_SIZE(sysctl_net_ipv6_route_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 53e3800c2d2838c03492d2acd4c834c4c8955503..ec3f958f9e2d3a5ac4eecce137fec4651787cb24 100644 (file)
@@ -1,3 +1,6 @@
+#enum
+#include <sys/types.h>
+#include <linux/sysctl.h>
 #unconditional
 NET_IPV6_ROUTE_FLUSH
 NET_IPV6_ROUTE_GC_THRESH
diff --git a/xlat/sysctl_net_ipv6_route.m4 b/xlat/sysctl_net_ipv6_route.m4
new file mode 100644 (file)
index 0000000..4f4e837
--- /dev/null
@@ -0,0 +1,17 @@
+dnl Generated by ./xlat/gen.sh from ./xlat/sysctl_net_ipv6_route.in; do not edit.
+AC_DEFUN([st_CHECK_ENUMS_sysctl_net_ipv6_route],[
+AC_CHECK_DECLS(m4_normalize([
+NET_IPV6_ROUTE_FLUSH,
+NET_IPV6_ROUTE_GC_THRESH,
+NET_IPV6_ROUTE_MAX_SIZE,
+NET_IPV6_ROUTE_GC_MIN_INTERVAL,
+NET_IPV6_ROUTE_GC_TIMEOUT,
+NET_IPV6_ROUTE_GC_INTERVAL,
+NET_IPV6_ROUTE_GC_ELASTICITY,
+NET_IPV6_ROUTE_MTU_EXPIRES,
+NET_IPV6_ROUTE_MIN_ADVMSS,
+NET_IPV6_ROUTE_GC_MIN_INTERVAL_MS
+]),,, [
+#include <sys/types.h>
+#include <linux/sysctl.h>
+])])])
index ea0043cd732a540fd7384946bc93b860d8e9d4a4..757aab3c83bddeb41d711cdd13874e24a4842f24 100644 (file)
 
 # else
 
-static
-const struct xlat sysctl_net_unix[] = {
+static const struct xlat_data sysctl_net_unix_xdata[] = {
  XLAT(NET_UNIX_DESTROY_DELAY),
+ #define XLAT_VAL_0 ((unsigned) (NET_UNIX_DESTROY_DELAY))
+ #define XLAT_STR_0 STRINGIFY(NET_UNIX_DESTROY_DELAY)
  XLAT(NET_UNIX_DELETE_DELAY),
+ #define XLAT_VAL_1 ((unsigned) (NET_UNIX_DELETE_DELAY))
+ #define XLAT_STR_1 STRINGIFY(NET_UNIX_DELETE_DELAY)
  XLAT(NET_UNIX_MAX_DGRAM_QLEN),
- XLAT_END
+ #define XLAT_VAL_2 ((unsigned) (NET_UNIX_MAX_DGRAM_QLEN))
+ #define XLAT_STR_2 STRINGIFY(NET_UNIX_MAX_DGRAM_QLEN)
 };
-
+static
+const struct xlat sysctl_net_unix[1] = { {
+ .data = sysctl_net_unix_xdata,
+ .size = ARRAY_SIZE(sysctl_net_unix_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 7440a9289a54d9cb5214b6150e392391df3d4f66..c20eb0cd1784de9de43768c7b710eed17698b602 100644 (file)
@@ -1,3 +1,6 @@
+#enum
+#include <sys/types.h>
+#include <linux/sysctl.h>
 #unconditional
 NET_UNIX_DESTROY_DELAY
 NET_UNIX_DELETE_DELAY
diff --git a/xlat/sysctl_net_unix.m4 b/xlat/sysctl_net_unix.m4
new file mode 100644 (file)
index 0000000..da756c2
--- /dev/null
@@ -0,0 +1,10 @@
+dnl Generated by ./xlat/gen.sh from ./xlat/sysctl_net_unix.in; do not edit.
+AC_DEFUN([st_CHECK_ENUMS_sysctl_net_unix],[
+AC_CHECK_DECLS(m4_normalize([
+NET_UNIX_DESTROY_DELAY,
+NET_UNIX_DELETE_DELAY,
+NET_UNIX_MAX_DGRAM_QLEN
+]),,, [
+#include <sys/types.h>
+#include <linux/sysctl.h>
+])])])
index ddb7a2ddad6b580bf2a90ad8a6dbd160a82a5283..44b11ae4fb16f207efafa98aaebb70cc89bccc48 100644 (file)
 
 # else
 
-static
-const struct xlat sysctl_root[] = {
+static const struct xlat_data sysctl_root_xdata[] = {
  XLAT(CTL_KERN),
+ #define XLAT_VAL_0 ((unsigned) (CTL_KERN))
+ #define XLAT_STR_0 STRINGIFY(CTL_KERN)
  XLAT(CTL_VM),
+ #define XLAT_VAL_1 ((unsigned) (CTL_VM))
+ #define XLAT_STR_1 STRINGIFY(CTL_VM)
  XLAT(CTL_NET),
+ #define XLAT_VAL_2 ((unsigned) (CTL_NET))
+ #define XLAT_STR_2 STRINGIFY(CTL_NET)
  XLAT(CTL_FS),
+ #define XLAT_VAL_3 ((unsigned) (CTL_FS))
+ #define XLAT_STR_3 STRINGIFY(CTL_FS)
  XLAT(CTL_DEBUG),
+ #define XLAT_VAL_4 ((unsigned) (CTL_DEBUG))
+ #define XLAT_STR_4 STRINGIFY(CTL_DEBUG)
  XLAT(CTL_DEV),
+ #define XLAT_VAL_5 ((unsigned) (CTL_DEV))
+ #define XLAT_STR_5 STRINGIFY(CTL_DEV)
  XLAT(CTL_BUS),
+ #define XLAT_VAL_6 ((unsigned) (CTL_BUS))
+ #define XLAT_STR_6 STRINGIFY(CTL_BUS)
  XLAT(CTL_ABI),
+ #define XLAT_VAL_7 ((unsigned) (CTL_ABI))
+ #define XLAT_STR_7 STRINGIFY(CTL_ABI)
  XLAT(CTL_CPU),
+ #define XLAT_VAL_8 ((unsigned) (CTL_CPU))
+ #define XLAT_STR_8 STRINGIFY(CTL_CPU)
 #if defined(CTL_PROC) || (defined(HAVE_DECL_CTL_PROC) && HAVE_DECL_CTL_PROC)
   XLAT(CTL_PROC),
+ #define XLAT_VAL_9 ((unsigned) (CTL_PROC))
+ #define XLAT_STR_9 STRINGIFY(CTL_PROC)
 #endif
 #if defined(CTL_ARLAN) || (defined(HAVE_DECL_CTL_ARLAN) && HAVE_DECL_CTL_ARLAN)
   XLAT(CTL_ARLAN),
+ #define XLAT_VAL_10 ((unsigned) (CTL_ARLAN))
+ #define XLAT_STR_10 STRINGIFY(CTL_ARLAN)
 #endif
 #if defined(CTL_S390DBF) || (defined(HAVE_DECL_CTL_S390DBF) && HAVE_DECL_CTL_S390DBF)
   XLAT(CTL_S390DBF),
+ #define XLAT_VAL_11 ((unsigned) (CTL_S390DBF))
+ #define XLAT_STR_11 STRINGIFY(CTL_S390DBF)
 #endif
 #if defined(CTL_SUNRPC) || (defined(HAVE_DECL_CTL_SUNRPC) && HAVE_DECL_CTL_SUNRPC)
   XLAT(CTL_SUNRPC),
+ #define XLAT_VAL_12 ((unsigned) (CTL_SUNRPC))
+ #define XLAT_STR_12 STRINGIFY(CTL_SUNRPC)
 #endif
 #if defined(CTL_PM) || (defined(HAVE_DECL_CTL_PM) && HAVE_DECL_CTL_PM)
   XLAT(CTL_PM),
+ #define XLAT_VAL_13 ((unsigned) (CTL_PM))
+ #define XLAT_STR_13 STRINGIFY(CTL_PM)
 #endif
 #if defined(CTL_FRV) || (defined(HAVE_DECL_CTL_FRV) && HAVE_DECL_CTL_FRV)
   XLAT(CTL_FRV),
+ #define XLAT_VAL_14 ((unsigned) (CTL_FRV))
+ #define XLAT_STR_14 STRINGIFY(CTL_FRV)
 #endif
- XLAT_END
 };
+static
+const struct xlat sysctl_root[1] = { {
+ .data = sysctl_root_xdata,
+ .size = ARRAY_SIZE(sysctl_root_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 670670cc64dc03d0195da502596a3f0770c17b9b..f8d18485a7680ae5dab4f80b05597913ca4036c2 100644 (file)
@@ -1,3 +1,6 @@
+#enum
+#include <sys/types.h>
+#include <linux/sysctl.h>
 #unconditional
 CTL_KERN
 CTL_VM
diff --git a/xlat/sysctl_root.m4 b/xlat/sysctl_root.m4
new file mode 100644 (file)
index 0000000..30212b0
--- /dev/null
@@ -0,0 +1,22 @@
+dnl Generated by ./xlat/gen.sh from ./xlat/sysctl_root.in; do not edit.
+AC_DEFUN([st_CHECK_ENUMS_sysctl_root],[
+AC_CHECK_DECLS(m4_normalize([
+CTL_KERN,
+CTL_VM,
+CTL_NET,
+CTL_FS,
+CTL_DEBUG,
+CTL_DEV,
+CTL_BUS,
+CTL_ABI,
+CTL_CPU,
+CTL_PROC,
+CTL_ARLAN,
+CTL_S390DBF,
+CTL_SUNRPC,
+CTL_PM,
+CTL_FRV
+]),,, [
+#include <sys/types.h>
+#include <linux/sysctl.h>
+])])])
index bb86bd8dd91493f4a85f7539f8aaf7258a3b13c4..7a11d777d4dac63f6b5f7b393a9254a24f26c09d 100644 (file)
 
 # else
 
-static
-const struct xlat sysctl_vm[] = {
+static const struct xlat_data sysctl_vm_xdata[] = {
  XLAT(VM_OVERCOMMIT_MEMORY),
+ #define XLAT_VAL_0 ((unsigned) (VM_OVERCOMMIT_MEMORY))
+ #define XLAT_STR_0 STRINGIFY(VM_OVERCOMMIT_MEMORY)
  XLAT(VM_PAGE_CLUSTER),
+ #define XLAT_VAL_1 ((unsigned) (VM_PAGE_CLUSTER))
+ #define XLAT_STR_1 STRINGIFY(VM_PAGE_CLUSTER)
  XLAT(VM_DIRTY_BACKGROUND),
+ #define XLAT_VAL_2 ((unsigned) (VM_DIRTY_BACKGROUND))
+ #define XLAT_STR_2 STRINGIFY(VM_DIRTY_BACKGROUND)
  XLAT(VM_DIRTY_RATIO),
+ #define XLAT_VAL_3 ((unsigned) (VM_DIRTY_RATIO))
+ #define XLAT_STR_3 STRINGIFY(VM_DIRTY_RATIO)
  XLAT(VM_DIRTY_WB_CS),
+ #define XLAT_VAL_4 ((unsigned) (VM_DIRTY_WB_CS))
+ #define XLAT_STR_4 STRINGIFY(VM_DIRTY_WB_CS)
  XLAT(VM_DIRTY_EXPIRE_CS),
+ #define XLAT_VAL_5 ((unsigned) (VM_DIRTY_EXPIRE_CS))
+ #define XLAT_STR_5 STRINGIFY(VM_DIRTY_EXPIRE_CS)
  XLAT(VM_NR_PDFLUSH_THREADS),
+ #define XLAT_VAL_6 ((unsigned) (VM_NR_PDFLUSH_THREADS))
+ #define XLAT_STR_6 STRINGIFY(VM_NR_PDFLUSH_THREADS)
  XLAT(VM_OVERCOMMIT_RATIO),
+ #define XLAT_VAL_7 ((unsigned) (VM_OVERCOMMIT_RATIO))
+ #define XLAT_STR_7 STRINGIFY(VM_OVERCOMMIT_RATIO)
  XLAT(VM_PAGEBUF),
+ #define XLAT_VAL_8 ((unsigned) (VM_PAGEBUF))
+ #define XLAT_STR_8 STRINGIFY(VM_PAGEBUF)
  XLAT(VM_HUGETLB_PAGES),
+ #define XLAT_VAL_9 ((unsigned) (VM_HUGETLB_PAGES))
+ #define XLAT_STR_9 STRINGIFY(VM_HUGETLB_PAGES)
  XLAT(VM_SWAPPINESS),
+ #define XLAT_VAL_10 ((unsigned) (VM_SWAPPINESS))
+ #define XLAT_STR_10 STRINGIFY(VM_SWAPPINESS)
  XLAT(VM_LOWMEM_RESERVE_RATIO),
+ #define XLAT_VAL_11 ((unsigned) (VM_LOWMEM_RESERVE_RATIO))
+ #define XLAT_STR_11 STRINGIFY(VM_LOWMEM_RESERVE_RATIO)
  XLAT(VM_MIN_FREE_KBYTES),
+ #define XLAT_VAL_12 ((unsigned) (VM_MIN_FREE_KBYTES))
+ #define XLAT_STR_12 STRINGIFY(VM_MIN_FREE_KBYTES)
 #if defined(VM_MAX_MAP_COUNT) || (defined(HAVE_DECL_VM_MAX_MAP_COUNT) && HAVE_DECL_VM_MAX_MAP_COUNT)
   XLAT(VM_MAX_MAP_COUNT),
+ #define XLAT_VAL_13 ((unsigned) (VM_MAX_MAP_COUNT))
+ #define XLAT_STR_13 STRINGIFY(VM_MAX_MAP_COUNT)
 #endif
 #if defined(VM_LAPTOP_MODE) || (defined(HAVE_DECL_VM_LAPTOP_MODE) && HAVE_DECL_VM_LAPTOP_MODE)
   XLAT(VM_LAPTOP_MODE),
+ #define XLAT_VAL_14 ((unsigned) (VM_LAPTOP_MODE))
+ #define XLAT_STR_14 STRINGIFY(VM_LAPTOP_MODE)
 #endif
 #if defined(VM_BLOCK_DUMP) || (defined(HAVE_DECL_VM_BLOCK_DUMP) && HAVE_DECL_VM_BLOCK_DUMP)
   XLAT(VM_BLOCK_DUMP),
+ #define XLAT_VAL_15 ((unsigned) (VM_BLOCK_DUMP))
+ #define XLAT_STR_15 STRINGIFY(VM_BLOCK_DUMP)
 #endif
 #if defined(VM_HUGETLB_GROUP) || (defined(HAVE_DECL_VM_HUGETLB_GROUP) && HAVE_DECL_VM_HUGETLB_GROUP)
   XLAT(VM_HUGETLB_GROUP),
+ #define XLAT_VAL_16 ((unsigned) (VM_HUGETLB_GROUP))
+ #define XLAT_STR_16 STRINGIFY(VM_HUGETLB_GROUP)
 #endif
 #if defined(VM_VFS_CACHE_PRESSURE) || (defined(HAVE_DECL_VM_VFS_CACHE_PRESSURE) && HAVE_DECL_VM_VFS_CACHE_PRESSURE)
   XLAT(VM_VFS_CACHE_PRESSURE),
+ #define XLAT_VAL_17 ((unsigned) (VM_VFS_CACHE_PRESSURE))
+ #define XLAT_STR_17 STRINGIFY(VM_VFS_CACHE_PRESSURE)
 #endif
 #if defined(VM_LEGACY_VA_LAYOUT) || (defined(HAVE_DECL_VM_LEGACY_VA_LAYOUT) && HAVE_DECL_VM_LEGACY_VA_LAYOUT)
   XLAT(VM_LEGACY_VA_LAYOUT),
+ #define XLAT_VAL_18 ((unsigned) (VM_LEGACY_VA_LAYOUT))
+ #define XLAT_STR_18 STRINGIFY(VM_LEGACY_VA_LAYOUT)
 #endif
 #if defined(VM_SWAP_TOKEN_TIMEOUT) || (defined(HAVE_DECL_VM_SWAP_TOKEN_TIMEOUT) && HAVE_DECL_VM_SWAP_TOKEN_TIMEOUT)
   XLAT(VM_SWAP_TOKEN_TIMEOUT),
+ #define XLAT_VAL_19 ((unsigned) (VM_SWAP_TOKEN_TIMEOUT))
+ #define XLAT_STR_19 STRINGIFY(VM_SWAP_TOKEN_TIMEOUT)
 #endif
- XLAT_END
 };
+static
+const struct xlat sysctl_vm[1] = { {
+ .data = sysctl_vm_xdata,
+ .size = ARRAY_SIZE(sysctl_vm_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 3c2b4739a1bc30228645adac2b6d2e828e9e0a76..71c41727a9a0bd29872f568913a391ad5115c508 100644 (file)
@@ -1,3 +1,6 @@
+#enum
+#include <sys/types.h>
+#include <linux/sysctl.h>
 #unconditional
 VM_OVERCOMMIT_MEMORY
 VM_PAGE_CLUSTER
diff --git a/xlat/sysctl_vm.m4 b/xlat/sysctl_vm.m4
new file mode 100644 (file)
index 0000000..1bf5b2b
--- /dev/null
@@ -0,0 +1,27 @@
+dnl Generated by ./xlat/gen.sh from ./xlat/sysctl_vm.in; do not edit.
+AC_DEFUN([st_CHECK_ENUMS_sysctl_vm],[
+AC_CHECK_DECLS(m4_normalize([
+VM_OVERCOMMIT_MEMORY,
+VM_PAGE_CLUSTER,
+VM_DIRTY_BACKGROUND,
+VM_DIRTY_RATIO,
+VM_DIRTY_WB_CS,
+VM_DIRTY_EXPIRE_CS,
+VM_NR_PDFLUSH_THREADS,
+VM_OVERCOMMIT_RATIO,
+VM_PAGEBUF,
+VM_HUGETLB_PAGES,
+VM_SWAPPINESS,
+VM_LOWMEM_RESERVE_RATIO,
+VM_MIN_FREE_KBYTES,
+VM_MAX_MAP_COUNT,
+VM_LAPTOP_MODE,
+VM_BLOCK_DUMP,
+VM_HUGETLB_GROUP,
+VM_VFS_CACHE_PRESSURE,
+VM_LEGACY_VA_LAYOUT,
+VM_SWAP_TOKEN_TIMEOUT
+]),,, [
+#include <sys/types.h>
+#include <linux/sysctl.h>
+])])])
index b81b336ea6dda61f0857b7064344e47cd4224feb..f91768b0c1486d29c8a69b062e5188825f6efe29 100644 (file)
@@ -89,22 +89,140 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat syslog_action_type[] = {
+static const struct xlat_data syslog_action_type_xdata[] = {
  [SYSLOG_ACTION_CLOSE] = XLAT(SYSLOG_ACTION_CLOSE),
+ #define XLAT_VAL_0 ((unsigned) (SYSLOG_ACTION_CLOSE))
+ #define XLAT_STR_0 STRINGIFY(SYSLOG_ACTION_CLOSE)
  [SYSLOG_ACTION_OPEN] = XLAT(SYSLOG_ACTION_OPEN),
+ #define XLAT_VAL_1 ((unsigned) (SYSLOG_ACTION_OPEN))
+ #define XLAT_STR_1 STRINGIFY(SYSLOG_ACTION_OPEN)
  [SYSLOG_ACTION_READ] = XLAT(SYSLOG_ACTION_READ),
+ #define XLAT_VAL_2 ((unsigned) (SYSLOG_ACTION_READ))
+ #define XLAT_STR_2 STRINGIFY(SYSLOG_ACTION_READ)
  [SYSLOG_ACTION_READ_ALL] = XLAT(SYSLOG_ACTION_READ_ALL),
+ #define XLAT_VAL_3 ((unsigned) (SYSLOG_ACTION_READ_ALL))
+ #define XLAT_STR_3 STRINGIFY(SYSLOG_ACTION_READ_ALL)
  [SYSLOG_ACTION_READ_CLEAR] = XLAT(SYSLOG_ACTION_READ_CLEAR),
+ #define XLAT_VAL_4 ((unsigned) (SYSLOG_ACTION_READ_CLEAR))
+ #define XLAT_STR_4 STRINGIFY(SYSLOG_ACTION_READ_CLEAR)
  [SYSLOG_ACTION_CLEAR] = XLAT(SYSLOG_ACTION_CLEAR),
+ #define XLAT_VAL_5 ((unsigned) (SYSLOG_ACTION_CLEAR))
+ #define XLAT_STR_5 STRINGIFY(SYSLOG_ACTION_CLEAR)
  [SYSLOG_ACTION_CONSOLE_OFF] = XLAT(SYSLOG_ACTION_CONSOLE_OFF),
+ #define XLAT_VAL_6 ((unsigned) (SYSLOG_ACTION_CONSOLE_OFF))
+ #define XLAT_STR_6 STRINGIFY(SYSLOG_ACTION_CONSOLE_OFF)
  [SYSLOG_ACTION_CONSOLE_ON] = XLAT(SYSLOG_ACTION_CONSOLE_ON),
+ #define XLAT_VAL_7 ((unsigned) (SYSLOG_ACTION_CONSOLE_ON))
+ #define XLAT_STR_7 STRINGIFY(SYSLOG_ACTION_CONSOLE_ON)
  [SYSLOG_ACTION_CONSOLE_LEVEL] = XLAT(SYSLOG_ACTION_CONSOLE_LEVEL),
+ #define XLAT_VAL_8 ((unsigned) (SYSLOG_ACTION_CONSOLE_LEVEL))
+ #define XLAT_STR_8 STRINGIFY(SYSLOG_ACTION_CONSOLE_LEVEL)
  [SYSLOG_ACTION_SIZE_UNREAD] = XLAT(SYSLOG_ACTION_SIZE_UNREAD),
+ #define XLAT_VAL_9 ((unsigned) (SYSLOG_ACTION_SIZE_UNREAD))
+ #define XLAT_STR_9 STRINGIFY(SYSLOG_ACTION_SIZE_UNREAD)
  [SYSLOG_ACTION_SIZE_BUFFER] = XLAT(SYSLOG_ACTION_SIZE_BUFFER),
- XLAT_END
+ #define XLAT_VAL_10 ((unsigned) (SYSLOG_ACTION_SIZE_BUFFER))
+ #define XLAT_STR_10 STRINGIFY(SYSLOG_ACTION_SIZE_BUFFER)
 };
+static
+const struct xlat syslog_action_type[1] = { {
+ .data = syslog_action_type_xdata,
+ .size = ARRAY_SIZE(syslog_action_type_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/syslog_console_levels.h b/xlat/syslog_console_levels.h
new file mode 100644 (file)
index 0000000..fef1918
--- /dev/null
@@ -0,0 +1,193 @@
+/* Generated by ./xlat/gen.sh from ./xlat/syslog_console_levels.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(LOGLEVEL_EMERG) || (defined(HAVE_DECL_LOGLEVEL_EMERG) && HAVE_DECL_LOGLEVEL_EMERG)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((LOGLEVEL_EMERG) == (0), "LOGLEVEL_EMERG != 0");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define LOGLEVEL_EMERG 0
+#endif
+#if defined(LOGLEVEL_ALERT) || (defined(HAVE_DECL_LOGLEVEL_ALERT) && HAVE_DECL_LOGLEVEL_ALERT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((LOGLEVEL_ALERT) == (1), "LOGLEVEL_ALERT != 1");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define LOGLEVEL_ALERT 1
+#endif
+#if defined(LOGLEVEL_CRIT) || (defined(HAVE_DECL_LOGLEVEL_CRIT) && HAVE_DECL_LOGLEVEL_CRIT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((LOGLEVEL_CRIT) == (2), "LOGLEVEL_CRIT != 2");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define LOGLEVEL_CRIT 2
+#endif
+#if defined(LOGLEVEL_ERR) || (defined(HAVE_DECL_LOGLEVEL_ERR) && HAVE_DECL_LOGLEVEL_ERR)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((LOGLEVEL_ERR) == (3), "LOGLEVEL_ERR != 3");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define LOGLEVEL_ERR 3
+#endif
+#if defined(LOGLEVEL_WARNING) || (defined(HAVE_DECL_LOGLEVEL_WARNING) && HAVE_DECL_LOGLEVEL_WARNING)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((LOGLEVEL_WARNING) == (4), "LOGLEVEL_WARNING != 4");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define LOGLEVEL_WARNING 4
+#endif
+#if defined(LOGLEVEL_NOTICE) || (defined(HAVE_DECL_LOGLEVEL_NOTICE) && HAVE_DECL_LOGLEVEL_NOTICE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((LOGLEVEL_NOTICE) == (5), "LOGLEVEL_NOTICE != 5");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define LOGLEVEL_NOTICE 5
+#endif
+#if defined(LOGLEVEL_INFO) || (defined(HAVE_DECL_LOGLEVEL_INFO) && HAVE_DECL_LOGLEVEL_INFO)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((LOGLEVEL_INFO) == (6), "LOGLEVEL_INFO != 6");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define LOGLEVEL_INFO 6
+#endif
+#if defined(LOGLEVEL_DEBUG) || (defined(HAVE_DECL_LOGLEVEL_DEBUG) && HAVE_DECL_LOGLEVEL_DEBUG)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((LOGLEVEL_DEBUG) == (7), "LOGLEVEL_DEBUG != 7");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define LOGLEVEL_DEBUG 7
+#endif
+#if defined(LOGLEVEL_DEBUG) || (defined(HAVE_DECL_LOGLEVEL_DEBUG) && HAVE_DECL_LOGLEVEL_DEBUG)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((LOGLEVEL_DEBUG) == (7), "LOGLEVEL_DEBUG != 7");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define LOGLEVEL_DEBUG 7
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat syslog_console_levels in mpers mode
+
+# else
+
+static const struct xlat_data syslog_console_levels_xdata[] = {
+
+ [LOGLEVEL_EMERG] = XLAT(LOGLEVEL_EMERG),
+ #define XLAT_VAL_0 ((unsigned) (LOGLEVEL_EMERG))
+ #define XLAT_STR_0 STRINGIFY(LOGLEVEL_EMERG)
+ [LOGLEVEL_ALERT] = XLAT(LOGLEVEL_ALERT),
+ #define XLAT_VAL_1 ((unsigned) (LOGLEVEL_ALERT))
+ #define XLAT_STR_1 STRINGIFY(LOGLEVEL_ALERT)
+ [LOGLEVEL_CRIT] = XLAT(LOGLEVEL_CRIT),
+ #define XLAT_VAL_2 ((unsigned) (LOGLEVEL_CRIT))
+ #define XLAT_STR_2 STRINGIFY(LOGLEVEL_CRIT)
+ [LOGLEVEL_ERR] = XLAT(LOGLEVEL_ERR),
+ #define XLAT_VAL_3 ((unsigned) (LOGLEVEL_ERR))
+ #define XLAT_STR_3 STRINGIFY(LOGLEVEL_ERR)
+ [LOGLEVEL_WARNING] = XLAT(LOGLEVEL_WARNING),
+ #define XLAT_VAL_4 ((unsigned) (LOGLEVEL_WARNING))
+ #define XLAT_STR_4 STRINGIFY(LOGLEVEL_WARNING)
+ [LOGLEVEL_NOTICE] = XLAT(LOGLEVEL_NOTICE),
+ #define XLAT_VAL_5 ((unsigned) (LOGLEVEL_NOTICE))
+ #define XLAT_STR_5 STRINGIFY(LOGLEVEL_NOTICE)
+ [LOGLEVEL_INFO] = XLAT(LOGLEVEL_INFO),
+ #define XLAT_VAL_6 ((unsigned) (LOGLEVEL_INFO))
+ #define XLAT_STR_6 STRINGIFY(LOGLEVEL_INFO)
+ [LOGLEVEL_DEBUG] = XLAT(LOGLEVEL_DEBUG),
+ #define XLAT_VAL_7 ((unsigned) (LOGLEVEL_DEBUG))
+ #define XLAT_STR_7 STRINGIFY(LOGLEVEL_DEBUG)
+ [LOGLEVEL_DEBUG+1] = XLAT(LOGLEVEL_DEBUG+1),
+ #define XLAT_VAL_8 ((unsigned) (LOGLEVEL_DEBUG+1))
+ #define XLAT_STR_8 STRINGIFY(LOGLEVEL_DEBUG+1)
+};
+static
+const struct xlat syslog_console_levels[1] = { {
+ .data = syslog_console_levels_xdata,
+ .size = ARRAY_SIZE(syslog_console_levels_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/syslog_console_levels.in b/xlat/syslog_console_levels.in
new file mode 100644 (file)
index 0000000..9309658
--- /dev/null
@@ -0,0 +1,11 @@
+#value_indexed
+/* from include/linux/kern_levels.h */
+LOGLEVEL_EMERG         0
+LOGLEVEL_ALERT         1
+LOGLEVEL_CRIT          2
+LOGLEVEL_ERR           3
+LOGLEVEL_WARNING       4
+LOGLEVEL_NOTICE                5
+LOGLEVEL_INFO          6
+LOGLEVEL_DEBUG         7
+LOGLEVEL_DEBUG+1       7
index 6e3b00c0e24f844ac9066c5389764e2405d9962a..31427b84e00572a428becb0c13c114ecf0cfd22e 100644 (file)
 
 # else
 
-static
-const struct xlat sysmips_operations[] = {
+static const struct xlat_data sysmips_operations_xdata[] = {
 #if defined(SETNAME) || (defined(HAVE_DECL_SETNAME) && HAVE_DECL_SETNAME)
   XLAT(SETNAME),
+ #define XLAT_VAL_0 ((unsigned) (SETNAME))
+ #define XLAT_STR_0 STRINGIFY(SETNAME)
 #endif
 #if defined(FLUSH_CACHE) || (defined(HAVE_DECL_FLUSH_CACHE) && HAVE_DECL_FLUSH_CACHE)
   XLAT(FLUSH_CACHE),
+ #define XLAT_VAL_1 ((unsigned) (FLUSH_CACHE))
+ #define XLAT_STR_1 STRINGIFY(FLUSH_CACHE)
 #endif
 #if defined(MIPS_FIXADE) || (defined(HAVE_DECL_MIPS_FIXADE) && HAVE_DECL_MIPS_FIXADE)
   XLAT(MIPS_FIXADE),
+ #define XLAT_VAL_2 ((unsigned) (MIPS_FIXADE))
+ #define XLAT_STR_2 STRINGIFY(MIPS_FIXADE)
 #endif
 #if defined(MIPS_RDNVRAM) || (defined(HAVE_DECL_MIPS_RDNVRAM) && HAVE_DECL_MIPS_RDNVRAM)
   XLAT(MIPS_RDNVRAM),
+ #define XLAT_VAL_3 ((unsigned) (MIPS_RDNVRAM))
+ #define XLAT_STR_3 STRINGIFY(MIPS_RDNVRAM)
 #endif
 #if defined(MIPS_ATOMIC_SET) || (defined(HAVE_DECL_MIPS_ATOMIC_SET) && HAVE_DECL_MIPS_ATOMIC_SET)
   XLAT(MIPS_ATOMIC_SET),
+ #define XLAT_VAL_4 ((unsigned) (MIPS_ATOMIC_SET))
+ #define XLAT_STR_4 STRINGIFY(MIPS_ATOMIC_SET)
 #endif
- XLAT_END
 };
+static
+const struct xlat sysmips_operations[1] = { {
+ .data = sysmips_operations_xdata,
+ .size = ARRAY_SIZE(sysmips_operations_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 9730263943268deb6e4c4f534ed4f7dc2ca97480..e8f24a2d3d07feff638c2bb69f01e2ab1ef042c4 100644 (file)
 
 # else
 
-static
-const struct xlat tcflsh_options[] = {
+static const struct xlat_data tcflsh_options_xdata[] = {
 #if defined(TCIFLUSH) || (defined(HAVE_DECL_TCIFLUSH) && HAVE_DECL_TCIFLUSH)
   XLAT(TCIFLUSH),
+ #define XLAT_VAL_0 ((unsigned) (TCIFLUSH))
+ #define XLAT_STR_0 STRINGIFY(TCIFLUSH)
 #endif
 #if defined(TCOFLUSH) || (defined(HAVE_DECL_TCOFLUSH) && HAVE_DECL_TCOFLUSH)
   XLAT(TCOFLUSH),
+ #define XLAT_VAL_1 ((unsigned) (TCOFLUSH))
+ #define XLAT_STR_1 STRINGIFY(TCOFLUSH)
 #endif
 #if defined(TCIOFLUSH) || (defined(HAVE_DECL_TCIOFLUSH) && HAVE_DECL_TCIOFLUSH)
   XLAT(TCIOFLUSH),
+ #define XLAT_VAL_2 ((unsigned) (TCIOFLUSH))
+ #define XLAT_STR_2 STRINGIFY(TCIOFLUSH)
 #endif
- XLAT_END
 };
+static
+const struct xlat tcflsh_options[1] = { {
+ .data = tcflsh_options_xdata,
+ .size = ARRAY_SIZE(tcflsh_options_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 3f0cb8c6a767c739afeba4a4ffa175c4cbbdaebe..8cd43824fd3b04acde2382f10d2bd9f154d422ca 100644 (file)
 
 # ifndef IN_MPERS
 
-const struct xlat tcp_state_flags[] = {
+static const struct xlat_data tcp_state_flags_xdata[] = {
 
 #if defined(TCP_ESTABLISHED) || (defined(HAVE_DECL_TCP_ESTABLISHED) && HAVE_DECL_TCP_ESTABLISHED)
   XLAT_PAIR(1ULL<<TCP_ESTABLISHED, "1<<TCP_ESTABLISHED"),
+ #define XLAT_VAL_0 ((unsigned) (1ULL<<TCP_ESTABLISHED))
+ #define XLAT_STR_0 "1<<TCP_ESTABLISHED"
 #endif
 #if defined(TCP_SYN_SENT) || (defined(HAVE_DECL_TCP_SYN_SENT) && HAVE_DECL_TCP_SYN_SENT)
   XLAT_PAIR(1ULL<<TCP_SYN_SENT, "1<<TCP_SYN_SENT"),
+ #define XLAT_VAL_1 ((unsigned) (1ULL<<TCP_SYN_SENT))
+ #define XLAT_STR_1 "1<<TCP_SYN_SENT"
 #endif
 #if defined(TCP_SYN_RECV) || (defined(HAVE_DECL_TCP_SYN_RECV) && HAVE_DECL_TCP_SYN_RECV)
   XLAT_PAIR(1ULL<<TCP_SYN_RECV, "1<<TCP_SYN_RECV"),
+ #define XLAT_VAL_2 ((unsigned) (1ULL<<TCP_SYN_RECV))
+ #define XLAT_STR_2 "1<<TCP_SYN_RECV"
 #endif
 #if defined(TCP_FIN_WAIT1) || (defined(HAVE_DECL_TCP_FIN_WAIT1) && HAVE_DECL_TCP_FIN_WAIT1)
   XLAT_PAIR(1ULL<<TCP_FIN_WAIT1, "1<<TCP_FIN_WAIT1"),
+ #define XLAT_VAL_3 ((unsigned) (1ULL<<TCP_FIN_WAIT1))
+ #define XLAT_STR_3 "1<<TCP_FIN_WAIT1"
 #endif
 #if defined(TCP_FIN_WAIT2) || (defined(HAVE_DECL_TCP_FIN_WAIT2) && HAVE_DECL_TCP_FIN_WAIT2)
   XLAT_PAIR(1ULL<<TCP_FIN_WAIT2, "1<<TCP_FIN_WAIT2"),
+ #define XLAT_VAL_4 ((unsigned) (1ULL<<TCP_FIN_WAIT2))
+ #define XLAT_STR_4 "1<<TCP_FIN_WAIT2"
 #endif
 #if defined(TCP_TIME_WAIT) || (defined(HAVE_DECL_TCP_TIME_WAIT) && HAVE_DECL_TCP_TIME_WAIT)
   XLAT_PAIR(1ULL<<TCP_TIME_WAIT, "1<<TCP_TIME_WAIT"),
+ #define XLAT_VAL_5 ((unsigned) (1ULL<<TCP_TIME_WAIT))
+ #define XLAT_STR_5 "1<<TCP_TIME_WAIT"
 #endif
 #if defined(TCP_CLOSE) || (defined(HAVE_DECL_TCP_CLOSE) && HAVE_DECL_TCP_CLOSE)
   XLAT_PAIR(1ULL<<TCP_CLOSE, "1<<TCP_CLOSE"),
+ #define XLAT_VAL_6 ((unsigned) (1ULL<<TCP_CLOSE))
+ #define XLAT_STR_6 "1<<TCP_CLOSE"
 #endif
 #if defined(TCP_CLOSE_WAIT) || (defined(HAVE_DECL_TCP_CLOSE_WAIT) && HAVE_DECL_TCP_CLOSE_WAIT)
   XLAT_PAIR(1ULL<<TCP_CLOSE_WAIT, "1<<TCP_CLOSE_WAIT"),
+ #define XLAT_VAL_7 ((unsigned) (1ULL<<TCP_CLOSE_WAIT))
+ #define XLAT_STR_7 "1<<TCP_CLOSE_WAIT"
 #endif
 #if defined(TCP_LAST_ACK) || (defined(HAVE_DECL_TCP_LAST_ACK) && HAVE_DECL_TCP_LAST_ACK)
   XLAT_PAIR(1ULL<<TCP_LAST_ACK, "1<<TCP_LAST_ACK"),
+ #define XLAT_VAL_8 ((unsigned) (1ULL<<TCP_LAST_ACK))
+ #define XLAT_STR_8 "1<<TCP_LAST_ACK"
 #endif
 #if defined(TCP_LISTEN) || (defined(HAVE_DECL_TCP_LISTEN) && HAVE_DECL_TCP_LISTEN)
   XLAT_PAIR(1ULL<<TCP_LISTEN, "1<<TCP_LISTEN"),
+ #define XLAT_VAL_9 ((unsigned) (1ULL<<TCP_LISTEN))
+ #define XLAT_STR_9 "1<<TCP_LISTEN"
 #endif
 #if defined(TCP_CLOSING) || (defined(HAVE_DECL_TCP_CLOSING) && HAVE_DECL_TCP_CLOSING)
   XLAT_PAIR(1ULL<<TCP_CLOSING, "1<<TCP_CLOSING"),
+ #define XLAT_VAL_10 ((unsigned) (1ULL<<TCP_CLOSING))
+ #define XLAT_STR_10 "1<<TCP_CLOSING"
 #endif
 #if defined(TCP_NEW_SYN_RECV) || (defined(HAVE_DECL_TCP_NEW_SYN_RECV) && HAVE_DECL_TCP_NEW_SYN_RECV)
   XLAT_PAIR(1ULL<<TCP_NEW_SYN_RECV, "1<<TCP_NEW_SYN_RECV"),
+ #define XLAT_VAL_11 ((unsigned) (1ULL<<TCP_NEW_SYN_RECV))
+ #define XLAT_STR_11 "1<<TCP_NEW_SYN_RECV"
 #endif
- XLAT_END
 };
+const struct xlat tcp_state_flags[1] = { {
+ .data = tcp_state_flags_xdata,
+ .size = ARRAY_SIZE(tcp_state_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 199b7f51c772387539f1f2d493c337a93955726f..768966dad41a1db675a94498e8661d1c42beeda2 100644 (file)
@@ -92,22 +92,150 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # ifndef IN_MPERS
 
-const struct xlat tcp_states[] = {
- XLAT(TCP_ESTABLISHED),
- XLAT(TCP_SYN_SENT),
- XLAT(TCP_SYN_RECV),
- XLAT(TCP_FIN_WAIT1),
- XLAT(TCP_FIN_WAIT2),
- XLAT(TCP_TIME_WAIT),
- XLAT(TCP_CLOSE),
- XLAT(TCP_CLOSE_WAIT),
- XLAT(TCP_LAST_ACK),
- XLAT(TCP_LISTEN),
- XLAT(TCP_CLOSING),
- XLAT(TCP_NEW_SYN_RECV),
- XLAT_END
+static const struct xlat_data tcp_states_xdata[] = {
+ [TCP_ESTABLISHED] = XLAT(TCP_ESTABLISHED),
+ #define XLAT_VAL_0 ((unsigned) (TCP_ESTABLISHED))
+ #define XLAT_STR_0 STRINGIFY(TCP_ESTABLISHED)
+ [TCP_SYN_SENT] = XLAT(TCP_SYN_SENT),
+ #define XLAT_VAL_1 ((unsigned) (TCP_SYN_SENT))
+ #define XLAT_STR_1 STRINGIFY(TCP_SYN_SENT)
+ [TCP_SYN_RECV] = XLAT(TCP_SYN_RECV),
+ #define XLAT_VAL_2 ((unsigned) (TCP_SYN_RECV))
+ #define XLAT_STR_2 STRINGIFY(TCP_SYN_RECV)
+ [TCP_FIN_WAIT1] = XLAT(TCP_FIN_WAIT1),
+ #define XLAT_VAL_3 ((unsigned) (TCP_FIN_WAIT1))
+ #define XLAT_STR_3 STRINGIFY(TCP_FIN_WAIT1)
+ [TCP_FIN_WAIT2] = XLAT(TCP_FIN_WAIT2),
+ #define XLAT_VAL_4 ((unsigned) (TCP_FIN_WAIT2))
+ #define XLAT_STR_4 STRINGIFY(TCP_FIN_WAIT2)
+ [TCP_TIME_WAIT] = XLAT(TCP_TIME_WAIT),
+ #define XLAT_VAL_5 ((unsigned) (TCP_TIME_WAIT))
+ #define XLAT_STR_5 STRINGIFY(TCP_TIME_WAIT)
+ [TCP_CLOSE] = XLAT(TCP_CLOSE),
+ #define XLAT_VAL_6 ((unsigned) (TCP_CLOSE))
+ #define XLAT_STR_6 STRINGIFY(TCP_CLOSE)
+ [TCP_CLOSE_WAIT] = XLAT(TCP_CLOSE_WAIT),
+ #define XLAT_VAL_7 ((unsigned) (TCP_CLOSE_WAIT))
+ #define XLAT_STR_7 STRINGIFY(TCP_CLOSE_WAIT)
+ [TCP_LAST_ACK] = XLAT(TCP_LAST_ACK),
+ #define XLAT_VAL_8 ((unsigned) (TCP_LAST_ACK))
+ #define XLAT_STR_8 STRINGIFY(TCP_LAST_ACK)
+ [TCP_LISTEN] = XLAT(TCP_LISTEN),
+ #define XLAT_VAL_9 ((unsigned) (TCP_LISTEN))
+ #define XLAT_STR_9 STRINGIFY(TCP_LISTEN)
+ [TCP_CLOSING] = XLAT(TCP_CLOSING),
+ #define XLAT_VAL_10 ((unsigned) (TCP_CLOSING))
+ #define XLAT_STR_10 STRINGIFY(TCP_CLOSING)
+ [TCP_NEW_SYN_RECV] = XLAT(TCP_NEW_SYN_RECV),
+ #define XLAT_VAL_11 ((unsigned) (TCP_NEW_SYN_RECV))
+ #define XLAT_STR_11 STRINGIFY(TCP_NEW_SYN_RECV)
 };
+const struct xlat tcp_states[1] = { {
+ .data = tcp_states_xdata,
+ .size = ARRAY_SIZE(tcp_states_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 287dc4317fe3eb668668bea34b3c6fdfd94add7e..d78d779fdb37c07fd1b525f2b37edfdbef2c31f0 100644 (file)
@@ -1,3 +1,4 @@
+#value_indexed
 TCP_ESTABLISHED                1
 TCP_SYN_SENT           2
 TCP_SYN_RECV           3
index c259441a1780b7ae02c284617964dccaacdd0909..d66423f0a1692fe2ea1401d4d2f2d10df9cf5ac9 100644 (file)
 
 # else
 
-static
-const struct xlat tcxonc_options[] = {
+static const struct xlat_data tcxonc_options_xdata[] = {
 #if defined(TCOOFF) || (defined(HAVE_DECL_TCOOFF) && HAVE_DECL_TCOOFF)
   XLAT(TCOOFF),
+ #define XLAT_VAL_0 ((unsigned) (TCOOFF))
+ #define XLAT_STR_0 STRINGIFY(TCOOFF)
 #endif
 #if defined(TCOON) || (defined(HAVE_DECL_TCOON) && HAVE_DECL_TCOON)
   XLAT(TCOON),
+ #define XLAT_VAL_1 ((unsigned) (TCOON))
+ #define XLAT_STR_1 STRINGIFY(TCOON)
 #endif
 #if defined(TCIOFF) || (defined(HAVE_DECL_TCIOFF) && HAVE_DECL_TCIOFF)
   XLAT(TCIOFF),
+ #define XLAT_VAL_2 ((unsigned) (TCIOFF))
+ #define XLAT_STR_2 STRINGIFY(TCIOFF)
 #endif
 #if defined(TCION) || (defined(HAVE_DECL_TCION) && HAVE_DECL_TCION)
   XLAT(TCION),
+ #define XLAT_VAL_3 ((unsigned) (TCION))
+ #define XLAT_STR_3 STRINGIFY(TCION)
 #endif
- XLAT_END
 };
+static
+const struct xlat tcxonc_options[1] = { {
+ .data = tcxonc_options_xdata,
+ .size = ARRAY_SIZE(tcxonc_options_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/tee_ioctl_cmds.h b/xlat/tee_ioctl_cmds.h
new file mode 100644 (file)
index 0000000..7a0087b
--- /dev/null
@@ -0,0 +1,210 @@
+/* Generated by ./xlat/gen.sh from ./xlat/tee_ioctl_cmds.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(TEE_IOC_VERSION) || (defined(HAVE_DECL_TEE_IOC_VERSION) && HAVE_DECL_TEE_IOC_VERSION)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TEE_IOC_VERSION) == (_IOR (0xa4, 0, struct_tee_ioctl_version_data)), "TEE_IOC_VERSION != _IOR (0xa4, 0, struct_tee_ioctl_version_data)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TEE_IOC_VERSION _IOR (0xa4, 0, struct_tee_ioctl_version_data)
+#endif
+#if defined(TEE_IOC_SHM_ALLOC) || (defined(HAVE_DECL_TEE_IOC_SHM_ALLOC) && HAVE_DECL_TEE_IOC_SHM_ALLOC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TEE_IOC_SHM_ALLOC) == (_IOWR(0xa4, 1, struct_tee_ioctl_shm_alloc_data)), "TEE_IOC_SHM_ALLOC != _IOWR(0xa4, 1, struct_tee_ioctl_shm_alloc_data)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TEE_IOC_SHM_ALLOC _IOWR(0xa4, 1, struct_tee_ioctl_shm_alloc_data)
+#endif
+#if defined(TEE_IOC_OPEN_SESSION) || (defined(HAVE_DECL_TEE_IOC_OPEN_SESSION) && HAVE_DECL_TEE_IOC_OPEN_SESSION)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TEE_IOC_OPEN_SESSION) == (_IOR (0xa4, 2, struct_tee_ioctl_buf_data)), "TEE_IOC_OPEN_SESSION != _IOR (0xa4, 2, struct_tee_ioctl_buf_data)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TEE_IOC_OPEN_SESSION _IOR (0xa4, 2, struct_tee_ioctl_buf_data)
+#endif
+#if defined(TEE_IOC_INVOKE) || (defined(HAVE_DECL_TEE_IOC_INVOKE) && HAVE_DECL_TEE_IOC_INVOKE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TEE_IOC_INVOKE) == (_IOR (0xa4, 3, struct_tee_ioctl_buf_data)), "TEE_IOC_INVOKE != _IOR (0xa4, 3, struct_tee_ioctl_buf_data)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TEE_IOC_INVOKE _IOR (0xa4, 3, struct_tee_ioctl_buf_data)
+#endif
+#if defined(TEE_IOC_CANCEL) || (defined(HAVE_DECL_TEE_IOC_CANCEL) && HAVE_DECL_TEE_IOC_CANCEL)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TEE_IOC_CANCEL) == (_IOR (0xa4, 4, struct_tee_ioctl_cancel_arg)), "TEE_IOC_CANCEL != _IOR (0xa4, 4, struct_tee_ioctl_cancel_arg)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TEE_IOC_CANCEL _IOR (0xa4, 4, struct_tee_ioctl_cancel_arg)
+#endif
+#if defined(TEE_IOC_CLOSE_SESSION) || (defined(HAVE_DECL_TEE_IOC_CLOSE_SESSION) && HAVE_DECL_TEE_IOC_CLOSE_SESSION)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TEE_IOC_CLOSE_SESSION) == (_IOR (0xa4, 5, struct_tee_ioctl_close_session_arg)), "TEE_IOC_CLOSE_SESSION != _IOR (0xa4, 5, struct_tee_ioctl_close_session_arg)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TEE_IOC_CLOSE_SESSION _IOR (0xa4, 5, struct_tee_ioctl_close_session_arg)
+#endif
+#if defined(TEE_IOC_SUPPL_RECV) || (defined(HAVE_DECL_TEE_IOC_SUPPL_RECV) && HAVE_DECL_TEE_IOC_SUPPL_RECV)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TEE_IOC_SUPPL_RECV) == (_IOR (0xa4, 6, struct_tee_ioctl_buf_data)), "TEE_IOC_SUPPL_RECV != _IOR (0xa4, 6, struct_tee_ioctl_buf_data)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TEE_IOC_SUPPL_RECV _IOR (0xa4, 6, struct_tee_ioctl_buf_data)
+#endif
+#if defined(TEE_IOC_SUPPL_SEND) || (defined(HAVE_DECL_TEE_IOC_SUPPL_SEND) && HAVE_DECL_TEE_IOC_SUPPL_SEND)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TEE_IOC_SUPPL_SEND) == (_IOR (0xa4, 7, struct_tee_ioctl_buf_data)), "TEE_IOC_SUPPL_SEND != _IOR (0xa4, 7, struct_tee_ioctl_buf_data)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TEE_IOC_SUPPL_SEND _IOR (0xa4, 7, struct_tee_ioctl_buf_data)
+#endif
+#if defined(TEE_IOC_SHM_REGISTER_FD) || (defined(HAVE_DECL_TEE_IOC_SHM_REGISTER_FD) && HAVE_DECL_TEE_IOC_SHM_REGISTER_FD)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TEE_IOC_SHM_REGISTER_FD) == (_IOWR(0xa4, 8, struct_tee_ioctl_shm_register_fd_data)), "TEE_IOC_SHM_REGISTER_FD != _IOWR(0xa4, 8, struct_tee_ioctl_shm_register_fd_data)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TEE_IOC_SHM_REGISTER_FD _IOWR(0xa4, 8, struct_tee_ioctl_shm_register_fd_data)
+#endif
+#if defined(TEE_IOC_SHM_REGISTER) || (defined(HAVE_DECL_TEE_IOC_SHM_REGISTER) && HAVE_DECL_TEE_IOC_SHM_REGISTER)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TEE_IOC_SHM_REGISTER) == (_IOWR(0xa4, 9, struct_tee_ioctl_shm_register_data)), "TEE_IOC_SHM_REGISTER != _IOWR(0xa4, 9, struct_tee_ioctl_shm_register_data)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TEE_IOC_SHM_REGISTER _IOWR(0xa4, 9, struct_tee_ioctl_shm_register_data)
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat tee_ioctl_cmds in mpers mode
+
+# else
+
+static const struct xlat_data tee_ioctl_cmds_xdata[] = {
+ XLAT(TEE_IOC_VERSION),
+ #define XLAT_VAL_0 ((unsigned) (TEE_IOC_VERSION))
+ #define XLAT_STR_0 STRINGIFY(TEE_IOC_VERSION)
+ XLAT(TEE_IOC_SHM_ALLOC),
+ #define XLAT_VAL_1 ((unsigned) (TEE_IOC_SHM_ALLOC))
+ #define XLAT_STR_1 STRINGIFY(TEE_IOC_SHM_ALLOC)
+ XLAT(TEE_IOC_OPEN_SESSION),
+ #define XLAT_VAL_2 ((unsigned) (TEE_IOC_OPEN_SESSION))
+ #define XLAT_STR_2 STRINGIFY(TEE_IOC_OPEN_SESSION)
+ XLAT(TEE_IOC_INVOKE),
+ #define XLAT_VAL_3 ((unsigned) (TEE_IOC_INVOKE))
+ #define XLAT_STR_3 STRINGIFY(TEE_IOC_INVOKE)
+ XLAT(TEE_IOC_CANCEL),
+ #define XLAT_VAL_4 ((unsigned) (TEE_IOC_CANCEL))
+ #define XLAT_STR_4 STRINGIFY(TEE_IOC_CANCEL)
+ XLAT(TEE_IOC_CLOSE_SESSION),
+ #define XLAT_VAL_5 ((unsigned) (TEE_IOC_CLOSE_SESSION))
+ #define XLAT_STR_5 STRINGIFY(TEE_IOC_CLOSE_SESSION)
+ XLAT(TEE_IOC_SUPPL_RECV),
+ #define XLAT_VAL_6 ((unsigned) (TEE_IOC_SUPPL_RECV))
+ #define XLAT_STR_6 STRINGIFY(TEE_IOC_SUPPL_RECV)
+ XLAT(TEE_IOC_SUPPL_SEND),
+ #define XLAT_VAL_7 ((unsigned) (TEE_IOC_SUPPL_SEND))
+ #define XLAT_STR_7 STRINGIFY(TEE_IOC_SUPPL_SEND)
+ XLAT(TEE_IOC_SHM_REGISTER_FD),
+ #define XLAT_VAL_8 ((unsigned) (TEE_IOC_SHM_REGISTER_FD))
+ #define XLAT_STR_8 STRINGIFY(TEE_IOC_SHM_REGISTER_FD)
+ XLAT(TEE_IOC_SHM_REGISTER),
+ #define XLAT_VAL_9 ((unsigned) (TEE_IOC_SHM_REGISTER))
+ #define XLAT_STR_9 STRINGIFY(TEE_IOC_SHM_REGISTER)
+};
+static
+const struct xlat tee_ioctl_cmds[1] = { {
+ .data = tee_ioctl_cmds_xdata,
+ .size = ARRAY_SIZE(tee_ioctl_cmds_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/tee_ioctl_cmds.in b/xlat/tee_ioctl_cmds.in
new file mode 100644 (file)
index 0000000..abd9700
--- /dev/null
@@ -0,0 +1,10 @@
+TEE_IOC_VERSION                _IOR (0xa4, 0, struct_tee_ioctl_version_data)
+TEE_IOC_SHM_ALLOC      _IOWR(0xa4, 1, struct_tee_ioctl_shm_alloc_data)
+TEE_IOC_OPEN_SESSION   _IOR (0xa4, 2, struct_tee_ioctl_buf_data)
+TEE_IOC_INVOKE         _IOR (0xa4, 3, struct_tee_ioctl_buf_data)
+TEE_IOC_CANCEL         _IOR (0xa4, 4, struct_tee_ioctl_cancel_arg)
+TEE_IOC_CLOSE_SESSION  _IOR (0xa4, 5, struct_tee_ioctl_close_session_arg)
+TEE_IOC_SUPPL_RECV     _IOR (0xa4, 6, struct_tee_ioctl_buf_data)
+TEE_IOC_SUPPL_SEND     _IOR (0xa4, 7, struct_tee_ioctl_buf_data)
+TEE_IOC_SHM_REGISTER_FD        _IOWR(0xa4, 8, struct_tee_ioctl_shm_register_fd_data) /* Not in mainline */
+TEE_IOC_SHM_REGISTER   _IOWR(0xa4, 9, struct_tee_ioctl_shm_register_data)
diff --git a/xlat/tee_ioctl_gen_caps.h b/xlat/tee_ioctl_gen_caps.h
new file mode 100644 (file)
index 0000000..461ad35
--- /dev/null
@@ -0,0 +1,102 @@
+/* Generated by ./xlat/gen.sh from ./xlat/tee_ioctl_gen_caps.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(TEE_GEN_CAP_GP) || (defined(HAVE_DECL_TEE_GEN_CAP_GP) && HAVE_DECL_TEE_GEN_CAP_GP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TEE_GEN_CAP_GP) == ((1 << 0)), "TEE_GEN_CAP_GP != (1 << 0)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TEE_GEN_CAP_GP (1 << 0)
+#endif
+#if defined(TEE_GEN_CAP_PRIVILEGED) || (defined(HAVE_DECL_TEE_GEN_CAP_PRIVILEGED) && HAVE_DECL_TEE_GEN_CAP_PRIVILEGED)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TEE_GEN_CAP_PRIVILEGED) == ((1 << 1)), "TEE_GEN_CAP_PRIVILEGED != (1 << 1)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TEE_GEN_CAP_PRIVILEGED (1 << 1)
+#endif
+#if defined(TEE_GEN_CAP_REG_MEM) || (defined(HAVE_DECL_TEE_GEN_CAP_REG_MEM) && HAVE_DECL_TEE_GEN_CAP_REG_MEM)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TEE_GEN_CAP_REG_MEM) == ((1 << 2)), "TEE_GEN_CAP_REG_MEM != (1 << 2)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TEE_GEN_CAP_REG_MEM (1 << 2)
+#endif
+#if defined(TEE_GEN_CAP_MEMREF_NULL) || (defined(HAVE_DECL_TEE_GEN_CAP_MEMREF_NULL) && HAVE_DECL_TEE_GEN_CAP_MEMREF_NULL)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TEE_GEN_CAP_MEMREF_NULL) == ((1 << 3)), "TEE_GEN_CAP_MEMREF_NULL != (1 << 3)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TEE_GEN_CAP_MEMREF_NULL (1 << 3)
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat tee_ioctl_gen_caps in mpers mode
+
+# else
+
+static const struct xlat_data tee_ioctl_gen_caps_xdata[] = {
+ XLAT(TEE_GEN_CAP_GP),
+ #define XLAT_VAL_0 ((unsigned) (TEE_GEN_CAP_GP))
+ #define XLAT_STR_0 STRINGIFY(TEE_GEN_CAP_GP)
+ XLAT(TEE_GEN_CAP_PRIVILEGED),
+ #define XLAT_VAL_1 ((unsigned) (TEE_GEN_CAP_PRIVILEGED))
+ #define XLAT_STR_1 STRINGIFY(TEE_GEN_CAP_PRIVILEGED)
+ XLAT(TEE_GEN_CAP_REG_MEM),
+ #define XLAT_VAL_2 ((unsigned) (TEE_GEN_CAP_REG_MEM))
+ #define XLAT_STR_2 STRINGIFY(TEE_GEN_CAP_REG_MEM)
+ XLAT(TEE_GEN_CAP_MEMREF_NULL),
+ #define XLAT_VAL_3 ((unsigned) (TEE_GEN_CAP_MEMREF_NULL))
+ #define XLAT_STR_3 STRINGIFY(TEE_GEN_CAP_MEMREF_NULL)
+};
+static
+const struct xlat tee_ioctl_gen_caps[1] = { {
+ .data = tee_ioctl_gen_caps_xdata,
+ .size = ARRAY_SIZE(tee_ioctl_gen_caps_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/tee_ioctl_gen_caps.in b/xlat/tee_ioctl_gen_caps.in
new file mode 100644 (file)
index 0000000..c6a2252
--- /dev/null
@@ -0,0 +1,4 @@
+TEE_GEN_CAP_GP         (1 << 0)
+TEE_GEN_CAP_PRIVILEGED (1 << 1)
+TEE_GEN_CAP_REG_MEM    (1 << 2)
+TEE_GEN_CAP_MEMREF_NULL        (1 << 3)
diff --git a/xlat/tee_ioctl_impl_ids.h b/xlat/tee_ioctl_impl_ids.h
new file mode 100644 (file)
index 0000000..80e1c13
--- /dev/null
@@ -0,0 +1,66 @@
+/* Generated by ./xlat/gen.sh from ./xlat/tee_ioctl_impl_ids.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(TEE_IMPL_ID_OPTEE) || (defined(HAVE_DECL_TEE_IMPL_ID_OPTEE) && HAVE_DECL_TEE_IMPL_ID_OPTEE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TEE_IMPL_ID_OPTEE) == (1), "TEE_IMPL_ID_OPTEE != 1");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TEE_IMPL_ID_OPTEE 1
+#endif
+#if defined(TEE_IMPL_ID_AMDTEE) || (defined(HAVE_DECL_TEE_IMPL_ID_AMDTEE) && HAVE_DECL_TEE_IMPL_ID_AMDTEE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TEE_IMPL_ID_AMDTEE) == (2), "TEE_IMPL_ID_AMDTEE != 2");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TEE_IMPL_ID_AMDTEE 2
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat tee_ioctl_impl_ids in mpers mode
+
+# else
+
+static const struct xlat_data tee_ioctl_impl_ids_xdata[] = {
+ XLAT(TEE_IMPL_ID_OPTEE),
+ #define XLAT_VAL_0 ((unsigned) (TEE_IMPL_ID_OPTEE))
+ #define XLAT_STR_0 STRINGIFY(TEE_IMPL_ID_OPTEE)
+ XLAT(TEE_IMPL_ID_AMDTEE),
+ #define XLAT_VAL_1 ((unsigned) (TEE_IMPL_ID_AMDTEE))
+ #define XLAT_STR_1 STRINGIFY(TEE_IMPL_ID_AMDTEE)
+};
+static
+const struct xlat tee_ioctl_impl_ids[1] = { {
+ .data = tee_ioctl_impl_ids_xdata,
+ .size = ARRAY_SIZE(tee_ioctl_impl_ids_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/tee_ioctl_impl_ids.in b/xlat/tee_ioctl_impl_ids.in
new file mode 100644 (file)
index 0000000..b62ed35
--- /dev/null
@@ -0,0 +1,2 @@
+TEE_IMPL_ID_OPTEE      1
+TEE_IMPL_ID_AMDTEE     2
diff --git a/xlat/tee_ioctl_login_types.h b/xlat/tee_ioctl_login_types.h
new file mode 100644 (file)
index 0000000..37b0064
--- /dev/null
@@ -0,0 +1,138 @@
+/* Generated by ./xlat/gen.sh from ./xlat/tee_ioctl_login_types.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(TEE_IOCTL_LOGIN_PUBLIC) || (defined(HAVE_DECL_TEE_IOCTL_LOGIN_PUBLIC) && HAVE_DECL_TEE_IOCTL_LOGIN_PUBLIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TEE_IOCTL_LOGIN_PUBLIC) == (0), "TEE_IOCTL_LOGIN_PUBLIC != 0");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TEE_IOCTL_LOGIN_PUBLIC 0
+#endif
+#if defined(TEE_IOCTL_LOGIN_USER) || (defined(HAVE_DECL_TEE_IOCTL_LOGIN_USER) && HAVE_DECL_TEE_IOCTL_LOGIN_USER)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TEE_IOCTL_LOGIN_USER) == (1), "TEE_IOCTL_LOGIN_USER != 1");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TEE_IOCTL_LOGIN_USER 1
+#endif
+#if defined(TEE_IOCTL_LOGIN_GROUP) || (defined(HAVE_DECL_TEE_IOCTL_LOGIN_GROUP) && HAVE_DECL_TEE_IOCTL_LOGIN_GROUP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TEE_IOCTL_LOGIN_GROUP) == (2), "TEE_IOCTL_LOGIN_GROUP != 2");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TEE_IOCTL_LOGIN_GROUP 2
+#endif
+#if defined(TEE_IOCTL_LOGIN_APPLICATION) || (defined(HAVE_DECL_TEE_IOCTL_LOGIN_APPLICATION) && HAVE_DECL_TEE_IOCTL_LOGIN_APPLICATION)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TEE_IOCTL_LOGIN_APPLICATION) == (4), "TEE_IOCTL_LOGIN_APPLICATION != 4");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TEE_IOCTL_LOGIN_APPLICATION 4
+#endif
+#if defined(TEE_IOCTL_LOGIN_USER_APPLICATION) || (defined(HAVE_DECL_TEE_IOCTL_LOGIN_USER_APPLICATION) && HAVE_DECL_TEE_IOCTL_LOGIN_USER_APPLICATION)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TEE_IOCTL_LOGIN_USER_APPLICATION) == (5), "TEE_IOCTL_LOGIN_USER_APPLICATION != 5");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TEE_IOCTL_LOGIN_USER_APPLICATION 5
+#endif
+#if defined(TEE_IOCTL_LOGIN_GROUP_APPLICATION) || (defined(HAVE_DECL_TEE_IOCTL_LOGIN_GROUP_APPLICATION) && HAVE_DECL_TEE_IOCTL_LOGIN_GROUP_APPLICATION)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TEE_IOCTL_LOGIN_GROUP_APPLICATION) == (6), "TEE_IOCTL_LOGIN_GROUP_APPLICATION != 6");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TEE_IOCTL_LOGIN_GROUP_APPLICATION 6
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat tee_ioctl_login_types in mpers mode
+
+# else
+
+static const struct xlat_data tee_ioctl_login_types_xdata[] = {
+ [TEE_IOCTL_LOGIN_PUBLIC] = XLAT(TEE_IOCTL_LOGIN_PUBLIC),
+ #define XLAT_VAL_0 ((unsigned) (TEE_IOCTL_LOGIN_PUBLIC))
+ #define XLAT_STR_0 STRINGIFY(TEE_IOCTL_LOGIN_PUBLIC)
+ [TEE_IOCTL_LOGIN_USER] = XLAT(TEE_IOCTL_LOGIN_USER),
+ #define XLAT_VAL_1 ((unsigned) (TEE_IOCTL_LOGIN_USER))
+ #define XLAT_STR_1 STRINGIFY(TEE_IOCTL_LOGIN_USER)
+ [TEE_IOCTL_LOGIN_GROUP] = XLAT(TEE_IOCTL_LOGIN_GROUP),
+ #define XLAT_VAL_2 ((unsigned) (TEE_IOCTL_LOGIN_GROUP))
+ #define XLAT_STR_2 STRINGIFY(TEE_IOCTL_LOGIN_GROUP)
+ [TEE_IOCTL_LOGIN_APPLICATION] = XLAT(TEE_IOCTL_LOGIN_APPLICATION),
+ #define XLAT_VAL_3 ((unsigned) (TEE_IOCTL_LOGIN_APPLICATION))
+ #define XLAT_STR_3 STRINGIFY(TEE_IOCTL_LOGIN_APPLICATION)
+ [TEE_IOCTL_LOGIN_USER_APPLICATION] = XLAT(TEE_IOCTL_LOGIN_USER_APPLICATION),
+ #define XLAT_VAL_4 ((unsigned) (TEE_IOCTL_LOGIN_USER_APPLICATION))
+ #define XLAT_STR_4 STRINGIFY(TEE_IOCTL_LOGIN_USER_APPLICATION)
+ [TEE_IOCTL_LOGIN_GROUP_APPLICATION] = XLAT(TEE_IOCTL_LOGIN_GROUP_APPLICATION),
+ #define XLAT_VAL_5 ((unsigned) (TEE_IOCTL_LOGIN_GROUP_APPLICATION))
+ #define XLAT_STR_5 STRINGIFY(TEE_IOCTL_LOGIN_GROUP_APPLICATION)
+};
+static
+const struct xlat tee_ioctl_login_types[1] = { {
+ .data = tee_ioctl_login_types_xdata,
+ .size = ARRAY_SIZE(tee_ioctl_login_types_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/tee_ioctl_login_types.in b/xlat/tee_ioctl_login_types.in
new file mode 100644 (file)
index 0000000..2e59bc6
--- /dev/null
@@ -0,0 +1,7 @@
+#value_indexed
+TEE_IOCTL_LOGIN_PUBLIC                 0
+TEE_IOCTL_LOGIN_USER                   1
+TEE_IOCTL_LOGIN_GROUP                  2
+TEE_IOCTL_LOGIN_APPLICATION            4
+TEE_IOCTL_LOGIN_USER_APPLICATION       5
+TEE_IOCTL_LOGIN_GROUP_APPLICATION      6
diff --git a/xlat/tee_ioctl_max_arg_size.h b/xlat/tee_ioctl_max_arg_size.h
new file mode 100644 (file)
index 0000000..5800b69
--- /dev/null
@@ -0,0 +1,48 @@
+/* Generated by ./xlat/gen.sh from ./xlat/tee_ioctl_max_arg_size.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(TEE_MAX_ARG_SIZE) || (defined(HAVE_DECL_TEE_MAX_ARG_SIZE) && HAVE_DECL_TEE_MAX_ARG_SIZE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TEE_MAX_ARG_SIZE) == (1024), "TEE_MAX_ARG_SIZE != 1024");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TEE_MAX_ARG_SIZE 1024
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat tee_ioctl_max_arg_size in mpers mode
+
+# else
+
+static const struct xlat_data tee_ioctl_max_arg_size_xdata[] = {
+ XLAT(TEE_MAX_ARG_SIZE),
+ #define XLAT_VAL_0 ((unsigned) (TEE_MAX_ARG_SIZE))
+ #define XLAT_STR_0 STRINGIFY(TEE_MAX_ARG_SIZE)
+};
+static
+const struct xlat tee_ioctl_max_arg_size[1] = { {
+ .data = tee_ioctl_max_arg_size_xdata,
+ .size = ARRAY_SIZE(tee_ioctl_max_arg_size_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/tee_ioctl_max_arg_size.in b/xlat/tee_ioctl_max_arg_size.in
new file mode 100644 (file)
index 0000000..5e7f6fa
--- /dev/null
@@ -0,0 +1 @@
+TEE_MAX_ARG_SIZE       1024
diff --git a/xlat/tee_ioctl_optee_caps.h b/xlat/tee_ioctl_optee_caps.h
new file mode 100644 (file)
index 0000000..8545611
--- /dev/null
@@ -0,0 +1,48 @@
+/* Generated by ./xlat/gen.sh from ./xlat/tee_ioctl_optee_caps.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(TEE_OPTEE_CAP_TZ) || (defined(HAVE_DECL_TEE_OPTEE_CAP_TZ) && HAVE_DECL_TEE_OPTEE_CAP_TZ)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TEE_OPTEE_CAP_TZ) == ((1 << 0)), "TEE_OPTEE_CAP_TZ != (1 << 0)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TEE_OPTEE_CAP_TZ (1 << 0)
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat tee_ioctl_optee_caps in mpers mode
+
+# else
+
+static const struct xlat_data tee_ioctl_optee_caps_xdata[] = {
+ XLAT(TEE_OPTEE_CAP_TZ),
+ #define XLAT_VAL_0 ((unsigned) (TEE_OPTEE_CAP_TZ))
+ #define XLAT_STR_0 STRINGIFY(TEE_OPTEE_CAP_TZ)
+};
+static
+const struct xlat tee_ioctl_optee_caps[1] = { {
+ .data = tee_ioctl_optee_caps_xdata,
+ .size = ARRAY_SIZE(tee_ioctl_optee_caps_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/tee_ioctl_optee_caps.in b/xlat/tee_ioctl_optee_caps.in
new file mode 100644 (file)
index 0000000..8d46cf0
--- /dev/null
@@ -0,0 +1 @@
+TEE_OPTEE_CAP_TZ       (1 << 0)
diff --git a/xlat/tee_ioctl_origins.h b/xlat/tee_ioctl_origins.h
new file mode 100644 (file)
index 0000000..b545ca0
--- /dev/null
@@ -0,0 +1,102 @@
+/* Generated by ./xlat/gen.sh from ./xlat/tee_ioctl_origins.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(TEEC_ORIGIN_API) || (defined(HAVE_DECL_TEEC_ORIGIN_API) && HAVE_DECL_TEEC_ORIGIN_API)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TEEC_ORIGIN_API) == (0x00000001), "TEEC_ORIGIN_API != 0x00000001");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TEEC_ORIGIN_API 0x00000001
+#endif
+#if defined(TEEC_ORIGIN_COMMS) || (defined(HAVE_DECL_TEEC_ORIGIN_COMMS) && HAVE_DECL_TEEC_ORIGIN_COMMS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TEEC_ORIGIN_COMMS) == (0x00000002), "TEEC_ORIGIN_COMMS != 0x00000002");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TEEC_ORIGIN_COMMS 0x00000002
+#endif
+#if defined(TEEC_ORIGIN_TEE) || (defined(HAVE_DECL_TEEC_ORIGIN_TEE) && HAVE_DECL_TEEC_ORIGIN_TEE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TEEC_ORIGIN_TEE) == (0x00000003), "TEEC_ORIGIN_TEE != 0x00000003");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TEEC_ORIGIN_TEE 0x00000003
+#endif
+#if defined(TEEC_ORIGIN_TRUSTED_APP) || (defined(HAVE_DECL_TEEC_ORIGIN_TRUSTED_APP) && HAVE_DECL_TEEC_ORIGIN_TRUSTED_APP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TEEC_ORIGIN_TRUSTED_APP) == (0x00000004), "TEEC_ORIGIN_TRUSTED_APP != 0x00000004");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TEEC_ORIGIN_TRUSTED_APP 0x00000004
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat tee_ioctl_origins in mpers mode
+
+# else
+
+static const struct xlat_data tee_ioctl_origins_xdata[] = {
+ XLAT(TEEC_ORIGIN_API),
+ #define XLAT_VAL_0 ((unsigned) (TEEC_ORIGIN_API))
+ #define XLAT_STR_0 STRINGIFY(TEEC_ORIGIN_API)
+ XLAT(TEEC_ORIGIN_COMMS),
+ #define XLAT_VAL_1 ((unsigned) (TEEC_ORIGIN_COMMS))
+ #define XLAT_STR_1 STRINGIFY(TEEC_ORIGIN_COMMS)
+ XLAT(TEEC_ORIGIN_TEE),
+ #define XLAT_VAL_2 ((unsigned) (TEEC_ORIGIN_TEE))
+ #define XLAT_STR_2 STRINGIFY(TEEC_ORIGIN_TEE)
+ XLAT(TEEC_ORIGIN_TRUSTED_APP),
+ #define XLAT_VAL_3 ((unsigned) (TEEC_ORIGIN_TRUSTED_APP))
+ #define XLAT_STR_3 STRINGIFY(TEEC_ORIGIN_TRUSTED_APP)
+};
+static
+const struct xlat tee_ioctl_origins[1] = { {
+ .data = tee_ioctl_origins_xdata,
+ .size = ARRAY_SIZE(tee_ioctl_origins_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/tee_ioctl_origins.in b/xlat/tee_ioctl_origins.in
new file mode 100644 (file)
index 0000000..4b49378
--- /dev/null
@@ -0,0 +1,4 @@
+TEEC_ORIGIN_API                0x00000001
+TEEC_ORIGIN_COMMS      0x00000002
+TEEC_ORIGIN_TEE                0x00000003
+TEEC_ORIGIN_TRUSTED_APP        0x00000004
diff --git a/xlat/tee_ioctl_param_attr_types.h b/xlat/tee_ioctl_param_attr_types.h
new file mode 100644 (file)
index 0000000..fba1027
--- /dev/null
@@ -0,0 +1,174 @@
+/* Generated by ./xlat/gen.sh from ./xlat/tee_ioctl_param_attr_types.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(TEE_IOCTL_PARAM_ATTR_TYPE_NONE) || (defined(HAVE_DECL_TEE_IOCTL_PARAM_ATTR_TYPE_NONE) && HAVE_DECL_TEE_IOCTL_PARAM_ATTR_TYPE_NONE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TEE_IOCTL_PARAM_ATTR_TYPE_NONE) == (0), "TEE_IOCTL_PARAM_ATTR_TYPE_NONE != 0");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TEE_IOCTL_PARAM_ATTR_TYPE_NONE 0
+#endif
+#if defined(TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INPUT) || (defined(HAVE_DECL_TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INPUT) && HAVE_DECL_TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INPUT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INPUT) == (1), "TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INPUT != 1");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INPUT 1
+#endif
+#if defined(TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_OUTPUT) || (defined(HAVE_DECL_TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_OUTPUT) && HAVE_DECL_TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_OUTPUT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_OUTPUT) == (2), "TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_OUTPUT != 2");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_OUTPUT 2
+#endif
+#if defined(TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INOUT) || (defined(HAVE_DECL_TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INOUT) && HAVE_DECL_TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INOUT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INOUT) == (3), "TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INOUT != 3");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INOUT 3
+#endif
+#if defined(TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INPUT) || (defined(HAVE_DECL_TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INPUT) && HAVE_DECL_TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INPUT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INPUT) == (5), "TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INPUT != 5");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INPUT 5
+#endif
+#if defined(TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_OUTPUT) || (defined(HAVE_DECL_TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_OUTPUT) && HAVE_DECL_TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_OUTPUT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_OUTPUT) == (6), "TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_OUTPUT != 6");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_OUTPUT 6
+#endif
+#if defined(TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INOUT) || (defined(HAVE_DECL_TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INOUT) && HAVE_DECL_TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INOUT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INOUT) == (7), "TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INOUT != 7");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INOUT 7
+#endif
+#if defined(TEE_IOCTL_PARAM_ATTR_META) || (defined(HAVE_DECL_TEE_IOCTL_PARAM_ATTR_META) && HAVE_DECL_TEE_IOCTL_PARAM_ATTR_META)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TEE_IOCTL_PARAM_ATTR_META) == (0x100), "TEE_IOCTL_PARAM_ATTR_META != 0x100");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TEE_IOCTL_PARAM_ATTR_META 0x100
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat tee_ioctl_param_attr_types in mpers mode
+
+# else
+
+static const struct xlat_data tee_ioctl_param_attr_types_xdata[] = {
+ XLAT(TEE_IOCTL_PARAM_ATTR_TYPE_NONE),
+ #define XLAT_VAL_0 ((unsigned) (TEE_IOCTL_PARAM_ATTR_TYPE_NONE))
+ #define XLAT_STR_0 STRINGIFY(TEE_IOCTL_PARAM_ATTR_TYPE_NONE)
+ XLAT(TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INPUT),
+ #define XLAT_VAL_1 ((unsigned) (TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INPUT))
+ #define XLAT_STR_1 STRINGIFY(TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INPUT)
+ XLAT(TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_OUTPUT),
+ #define XLAT_VAL_2 ((unsigned) (TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_OUTPUT))
+ #define XLAT_STR_2 STRINGIFY(TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_OUTPUT)
+ XLAT(TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INOUT),
+ #define XLAT_VAL_3 ((unsigned) (TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INOUT))
+ #define XLAT_STR_3 STRINGIFY(TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INOUT)
+ XLAT(TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INPUT),
+ #define XLAT_VAL_4 ((unsigned) (TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INPUT))
+ #define XLAT_STR_4 STRINGIFY(TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INPUT)
+ XLAT(TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_OUTPUT),
+ #define XLAT_VAL_5 ((unsigned) (TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_OUTPUT))
+ #define XLAT_STR_5 STRINGIFY(TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_OUTPUT)
+ XLAT(TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INOUT),
+ #define XLAT_VAL_6 ((unsigned) (TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INOUT))
+ #define XLAT_STR_6 STRINGIFY(TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INOUT)
+ XLAT(TEE_IOCTL_PARAM_ATTR_META),
+ #define XLAT_VAL_7 ((unsigned) (TEE_IOCTL_PARAM_ATTR_META))
+ #define XLAT_STR_7 STRINGIFY(TEE_IOCTL_PARAM_ATTR_META)
+};
+static
+const struct xlat tee_ioctl_param_attr_types[1] = { {
+ .data = tee_ioctl_param_attr_types_xdata,
+ .size = ARRAY_SIZE(tee_ioctl_param_attr_types_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/tee_ioctl_param_attr_types.in b/xlat/tee_ioctl_param_attr_types.in
new file mode 100644 (file)
index 0000000..2c15d51
--- /dev/null
@@ -0,0 +1,8 @@
+TEE_IOCTL_PARAM_ATTR_TYPE_NONE         0
+TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INPUT  1
+TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_OUTPUT 2
+TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INOUT  3
+TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INPUT 5
+TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_OUTPUT        6
+TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INOUT 7
+TEE_IOCTL_PARAM_ATTR_META              0x100
diff --git a/xlat/tee_ioctl_shm_flags.h b/xlat/tee_ioctl_shm_flags.h
new file mode 100644 (file)
index 0000000..c61080d
--- /dev/null
@@ -0,0 +1,157 @@
+/* Generated by ./xlat/gen.sh from ./xlat/tee_ioctl_shm_flags.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(TEE_IOCTL_SHM_MAPPED) || (defined(HAVE_DECL_TEE_IOCTL_SHM_MAPPED) && HAVE_DECL_TEE_IOCTL_SHM_MAPPED)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TEE_IOCTL_SHM_MAPPED) == (0x1), "TEE_IOCTL_SHM_MAPPED != 0x1");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TEE_IOCTL_SHM_MAPPED 0x1
+#endif
+#if defined(TEE_IOCTL_SHM_DMA_BUF) || (defined(HAVE_DECL_TEE_IOCTL_SHM_DMA_BUF) && HAVE_DECL_TEE_IOCTL_SHM_DMA_BUF)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TEE_IOCTL_SHM_DMA_BUF) == (0x2), "TEE_IOCTL_SHM_DMA_BUF != 0x2");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TEE_IOCTL_SHM_DMA_BUF 0x2
+#endif
+#if defined(TEE_IOCTL_SHM_EXT_DMA_BUF) || (defined(HAVE_DECL_TEE_IOCTL_SHM_EXT_DMA_BUF) && HAVE_DECL_TEE_IOCTL_SHM_EXT_DMA_BUF)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TEE_IOCTL_SHM_EXT_DMA_BUF) == (0x4), "TEE_IOCTL_SHM_EXT_DMA_BUF != 0x4");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TEE_IOCTL_SHM_EXT_DMA_BUF 0x4
+#endif
+#if defined(TEE_IOCTL_SHM_REGISTER) || (defined(HAVE_DECL_TEE_IOCTL_SHM_REGISTER) && HAVE_DECL_TEE_IOCTL_SHM_REGISTER)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TEE_IOCTL_SHM_REGISTER) == (0x8), "TEE_IOCTL_SHM_REGISTER != 0x8");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TEE_IOCTL_SHM_REGISTER 0x8
+#endif
+#if defined(TEE_IOCTL_SHM_USER_MAPPED) || (defined(HAVE_DECL_TEE_IOCTL_SHM_USER_MAPPED) && HAVE_DECL_TEE_IOCTL_SHM_USER_MAPPED)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TEE_IOCTL_SHM_USER_MAPPED) == (0x10), "TEE_IOCTL_SHM_USER_MAPPED != 0x10");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TEE_IOCTL_SHM_USER_MAPPED 0x10
+#endif
+#if defined(TEE_IOCTL_SHM_POOL) || (defined(HAVE_DECL_TEE_IOCTL_SHM_POOL) && HAVE_DECL_TEE_IOCTL_SHM_POOL)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TEE_IOCTL_SHM_POOL) == (0x20), "TEE_IOCTL_SHM_POOL != 0x20");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TEE_IOCTL_SHM_POOL 0x20
+#endif
+#if defined(TEE_IOCTL_SHM_KERNEL_MAPPED) || (defined(HAVE_DECL_TEE_IOCTL_SHM_KERNEL_MAPPED) && HAVE_DECL_TEE_IOCTL_SHM_KERNEL_MAPPED)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((TEE_IOCTL_SHM_KERNEL_MAPPED) == (0x40), "TEE_IOCTL_SHM_KERNEL_MAPPED != 0x40");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define TEE_IOCTL_SHM_KERNEL_MAPPED 0x40
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat tee_ioctl_shm_flags in mpers mode
+
+# else
+
+static const struct xlat_data tee_ioctl_shm_flags_xdata[] = {
+ XLAT(TEE_IOCTL_SHM_MAPPED),
+ #define XLAT_VAL_0 ((unsigned) (TEE_IOCTL_SHM_MAPPED))
+ #define XLAT_STR_0 STRINGIFY(TEE_IOCTL_SHM_MAPPED)
+ XLAT(TEE_IOCTL_SHM_DMA_BUF),
+ #define XLAT_VAL_1 ((unsigned) (TEE_IOCTL_SHM_DMA_BUF))
+ #define XLAT_STR_1 STRINGIFY(TEE_IOCTL_SHM_DMA_BUF)
+
+ XLAT(TEE_IOCTL_SHM_EXT_DMA_BUF),
+ #define XLAT_VAL_2 ((unsigned) (TEE_IOCTL_SHM_EXT_DMA_BUF))
+ #define XLAT_STR_2 STRINGIFY(TEE_IOCTL_SHM_EXT_DMA_BUF)
+ XLAT(TEE_IOCTL_SHM_REGISTER),
+ #define XLAT_VAL_3 ((unsigned) (TEE_IOCTL_SHM_REGISTER))
+ #define XLAT_STR_3 STRINGIFY(TEE_IOCTL_SHM_REGISTER)
+ XLAT(TEE_IOCTL_SHM_USER_MAPPED),
+ #define XLAT_VAL_4 ((unsigned) (TEE_IOCTL_SHM_USER_MAPPED))
+ #define XLAT_STR_4 STRINGIFY(TEE_IOCTL_SHM_USER_MAPPED)
+ XLAT(TEE_IOCTL_SHM_POOL),
+ #define XLAT_VAL_5 ((unsigned) (TEE_IOCTL_SHM_POOL))
+ #define XLAT_STR_5 STRINGIFY(TEE_IOCTL_SHM_POOL)
+ XLAT(TEE_IOCTL_SHM_KERNEL_MAPPED),
+ #define XLAT_VAL_6 ((unsigned) (TEE_IOCTL_SHM_KERNEL_MAPPED))
+ #define XLAT_STR_6 STRINGIFY(TEE_IOCTL_SHM_KERNEL_MAPPED)
+};
+static
+const struct xlat tee_ioctl_shm_flags[1] = { {
+ .data = tee_ioctl_shm_flags_xdata,
+ .size = ARRAY_SIZE(tee_ioctl_shm_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/tee_ioctl_shm_flags.in b/xlat/tee_ioctl_shm_flags.in
new file mode 100644 (file)
index 0000000..881044b
--- /dev/null
@@ -0,0 +1,8 @@
+TEE_IOCTL_SHM_MAPPED           0x1
+TEE_IOCTL_SHM_DMA_BUF          0x2
+/* These ones aren't in uapi */
+TEE_IOCTL_SHM_EXT_DMA_BUF      0x4
+TEE_IOCTL_SHM_REGISTER         0x8
+TEE_IOCTL_SHM_USER_MAPPED      0x10
+TEE_IOCTL_SHM_POOL             0x20
+TEE_IOCTL_SHM_KERNEL_MAPPED    0x40
index 7d0f72be6ef61dc4446b23e0224cbaf6f81ee3ee..8eff62f57209eb0005ead6d8b0a06848cff165cf 100644 (file)
@@ -42,19 +42,67 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat timerfdflags[] = {
+static const struct xlat_data timerfdflags_xdata[] = {
 
 
  XLAT(TFD_TIMER_ABSTIME),
+ #define XLAT_VAL_0 ((unsigned) (TFD_TIMER_ABSTIME))
+ #define XLAT_STR_0 STRINGIFY(TFD_TIMER_ABSTIME)
  XLAT(TFD_TIMER_CANCEL_ON_SET),
+ #define XLAT_VAL_1 ((unsigned) (TFD_TIMER_CANCEL_ON_SET))
+ #define XLAT_STR_1 STRINGIFY(TFD_TIMER_CANCEL_ON_SET)
 #if defined TFD_CLOEXEC || defined O_CLOEXEC
  XLAT(TFD_CLOEXEC),
+ #define XLAT_VAL_2 ((unsigned) (TFD_CLOEXEC))
+ #define XLAT_STR_2 STRINGIFY(TFD_CLOEXEC)
 #endif
  XLAT(TFD_NONBLOCK),
- XLAT_END
+ #define XLAT_VAL_3 ((unsigned) (TFD_NONBLOCK))
+ #define XLAT_STR_3 STRINGIFY(TFD_NONBLOCK)
 };
+static
+const struct xlat timerfdflags[1] = { {
+ .data = timerfdflags_xdata,
+ .size = ARRAY_SIZE(timerfdflags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index a1bf5a1352d720b0b0a0f33d8ec9bc5ef8d2c814..7d0ed3abfe136b38de5de996502e42f86f2d575e 100644 (file)
@@ -26,13 +26,41 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat tun_device_types[] = {
+static const struct xlat_data tun_device_types_xdata[] = {
  [IFF_TUN] = XLAT(IFF_TUN),
+ #define XLAT_VAL_0 ((unsigned) (IFF_TUN))
+ #define XLAT_STR_0 STRINGIFY(IFF_TUN)
  [IFF_TAP] = XLAT(IFF_TAP),
- XLAT_END
+ #define XLAT_VAL_1 ((unsigned) (IFF_TAP))
+ #define XLAT_STR_1 STRINGIFY(IFF_TAP)
 };
+static
+const struct xlat tun_device_types[1] = { {
+ .data = tun_device_types_xdata,
+ .size = ARRAY_SIZE(tun_device_types_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index fb7ca99d8ad9c06d8c578694414bb51a7a24d27a..957dbe715ddfda7b098fe6a1bc4e28e6f15baced 100644 (file)
 
 # else
 
-static
-const struct xlat ubi_volume_props[] = {
+static const struct xlat_data ubi_volume_props_xdata[] = {
  XLAT(UBI_VOL_PROP_DIRECT_WRITE),
- XLAT_END
+ #define XLAT_VAL_0 ((unsigned) (UBI_VOL_PROP_DIRECT_WRITE))
+ #define XLAT_STR_0 STRINGIFY(UBI_VOL_PROP_DIRECT_WRITE)
 };
-
+static
+const struct xlat ubi_volume_props[1] = { {
+ .data = ubi_volume_props_xdata,
+ .size = ARRAY_SIZE(ubi_volume_props_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 77e8e6a32ce8bdea1e474506f8b077fc555f9088..698b99c9a3d8a6bcbdd4ce7dd918f8f32495092e 100644 (file)
 
 # else
 
-static
-const struct xlat ubi_volume_types[] = {
+static const struct xlat_data ubi_volume_types_xdata[] = {
  XLAT(UBI_DYNAMIC_VOLUME),
+ #define XLAT_VAL_0 ((unsigned) (UBI_DYNAMIC_VOLUME))
+ #define XLAT_STR_0 STRINGIFY(UBI_DYNAMIC_VOLUME)
  XLAT(UBI_STATIC_VOLUME),
- XLAT_END
+ #define XLAT_VAL_1 ((unsigned) (UBI_STATIC_VOLUME))
+ #define XLAT_STR_1 STRINGIFY(UBI_STATIC_VOLUME)
 };
-
+static
+const struct xlat ubi_volume_types[1] = { {
+ .data = ubi_volume_types_xdata,
+ .size = ARRAY_SIZE(ubi_volume_types_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 66ea2d2b9ae7436c6b3149982ce33d695abff0b1..aaece409bfe1d52f60a24fc9cc5ddf30c68dfee0 100644 (file)
 #include "gcc_compat.h"
 #include "static_assert.h"
 
-
-#ifndef XLAT_MACROS_ONLY
-
-# ifdef IN_MPERS
-
-#  error static const struct xlat uffd_api_features in mpers mode
-
-# else
-
-static
-const struct xlat uffd_api_features[] = {
 #if defined(UFFD_FEATURE_PAGEFAULT_FLAG_WP) || (defined(HAVE_DECL_UFFD_FEATURE_PAGEFAULT_FLAG_WP) && HAVE_DECL_UFFD_FEATURE_PAGEFAULT_FLAG_WP)
-  XLAT_TYPE(uint64_t, UFFD_FEATURE_PAGEFAULT_FLAG_WP),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((UFFD_FEATURE_PAGEFAULT_FLAG_WP) == ((1<<0)), "UFFD_FEATURE_PAGEFAULT_FLAG_WP != (1<<0)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define UFFD_FEATURE_PAGEFAULT_FLAG_WP (1<<0)
 #endif
 #if defined(UFFD_FEATURE_EVENT_FORK) || (defined(HAVE_DECL_UFFD_FEATURE_EVENT_FORK) && HAVE_DECL_UFFD_FEATURE_EVENT_FORK)
-  XLAT_TYPE(uint64_t, UFFD_FEATURE_EVENT_FORK),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((UFFD_FEATURE_EVENT_FORK) == ((1<<1)), "UFFD_FEATURE_EVENT_FORK != (1<<1)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define UFFD_FEATURE_EVENT_FORK (1<<1)
 #endif
 #if defined(UFFD_FEATURE_EVENT_REMAP) || (defined(HAVE_DECL_UFFD_FEATURE_EVENT_REMAP) && HAVE_DECL_UFFD_FEATURE_EVENT_REMAP)
-  XLAT_TYPE(uint64_t, UFFD_FEATURE_EVENT_REMAP),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((UFFD_FEATURE_EVENT_REMAP) == ((1<<2)), "UFFD_FEATURE_EVENT_REMAP != (1<<2)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define UFFD_FEATURE_EVENT_REMAP (1<<2)
 #endif
 #if defined(UFFD_FEATURE_EVENT_REMOVE) || (defined(HAVE_DECL_UFFD_FEATURE_EVENT_REMOVE) && HAVE_DECL_UFFD_FEATURE_EVENT_REMOVE)
-  XLAT_TYPE(uint64_t, UFFD_FEATURE_EVENT_REMOVE),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((UFFD_FEATURE_EVENT_REMOVE) == ((1<<3)), "UFFD_FEATURE_EVENT_REMOVE != (1<<3)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define UFFD_FEATURE_EVENT_REMOVE (1<<3)
 #endif
 #if defined(UFFD_FEATURE_MISSING_HUGETLBFS) || (defined(HAVE_DECL_UFFD_FEATURE_MISSING_HUGETLBFS) && HAVE_DECL_UFFD_FEATURE_MISSING_HUGETLBFS)
-  XLAT_TYPE(uint64_t, UFFD_FEATURE_MISSING_HUGETLBFS),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((UFFD_FEATURE_MISSING_HUGETLBFS) == ((1<<4)), "UFFD_FEATURE_MISSING_HUGETLBFS != (1<<4)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define UFFD_FEATURE_MISSING_HUGETLBFS (1<<4)
 #endif
 #if defined(UFFD_FEATURE_MISSING_SHMEM) || (defined(HAVE_DECL_UFFD_FEATURE_MISSING_SHMEM) && HAVE_DECL_UFFD_FEATURE_MISSING_SHMEM)
-  XLAT_TYPE(uint64_t, UFFD_FEATURE_MISSING_SHMEM),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((UFFD_FEATURE_MISSING_SHMEM) == ((1<<5)), "UFFD_FEATURE_MISSING_SHMEM != (1<<5)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define UFFD_FEATURE_MISSING_SHMEM (1<<5)
 #endif
 #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),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((UFFD_FEATURE_EVENT_UNMAP) == ((1<<6)), "UFFD_FEATURE_EVENT_UNMAP != (1<<6)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define UFFD_FEATURE_EVENT_UNMAP (1<<6)
 #endif
 #if defined(UFFD_FEATURE_SIGBUS) || (defined(HAVE_DECL_UFFD_FEATURE_SIGBUS) && HAVE_DECL_UFFD_FEATURE_SIGBUS)
-  XLAT_TYPE(uint64_t, UFFD_FEATURE_SIGBUS),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((UFFD_FEATURE_SIGBUS) == ((1<<7)), "UFFD_FEATURE_SIGBUS != (1<<7)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define UFFD_FEATURE_SIGBUS (1<<7)
 #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),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((UFFD_FEATURE_THREAD_ID) == ((1<<8)), "UFFD_FEATURE_THREAD_ID != (1<<8)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define UFFD_FEATURE_THREAD_ID (1<<8)
 #endif
- XLAT_END
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat uffd_api_features in mpers mode
+
+# else
+
+static const struct xlat_data uffd_api_features_xdata[] = {
+ XLAT_TYPE(uint64_t, UFFD_FEATURE_PAGEFAULT_FLAG_WP),
+ #define XLAT_VAL_0 ((uint64_t) (UFFD_FEATURE_PAGEFAULT_FLAG_WP))
+ #define XLAT_STR_0 STRINGIFY(UFFD_FEATURE_PAGEFAULT_FLAG_WP)
+ XLAT_TYPE(uint64_t, UFFD_FEATURE_EVENT_FORK),
+ #define XLAT_VAL_1 ((uint64_t) (UFFD_FEATURE_EVENT_FORK))
+ #define XLAT_STR_1 STRINGIFY(UFFD_FEATURE_EVENT_FORK)
+ XLAT_TYPE(uint64_t, UFFD_FEATURE_EVENT_REMAP),
+ #define XLAT_VAL_2 ((uint64_t) (UFFD_FEATURE_EVENT_REMAP))
+ #define XLAT_STR_2 STRINGIFY(UFFD_FEATURE_EVENT_REMAP)
+ XLAT_TYPE(uint64_t, UFFD_FEATURE_EVENT_REMOVE),
+ #define XLAT_VAL_3 ((uint64_t) (UFFD_FEATURE_EVENT_REMOVE))
+ #define XLAT_STR_3 STRINGIFY(UFFD_FEATURE_EVENT_REMOVE)
+ XLAT_TYPE(uint64_t, UFFD_FEATURE_MISSING_HUGETLBFS),
+ #define XLAT_VAL_4 ((uint64_t) (UFFD_FEATURE_MISSING_HUGETLBFS))
+ #define XLAT_STR_4 STRINGIFY(UFFD_FEATURE_MISSING_HUGETLBFS)
+ XLAT_TYPE(uint64_t, UFFD_FEATURE_MISSING_SHMEM),
+ #define XLAT_VAL_5 ((uint64_t) (UFFD_FEATURE_MISSING_SHMEM))
+ #define XLAT_STR_5 STRINGIFY(UFFD_FEATURE_MISSING_SHMEM)
+ XLAT_TYPE(uint64_t, UFFD_FEATURE_EVENT_UNMAP),
+ #define XLAT_VAL_6 ((uint64_t) (UFFD_FEATURE_EVENT_UNMAP))
+ #define XLAT_STR_6 STRINGIFY(UFFD_FEATURE_EVENT_UNMAP)
+ XLAT_TYPE(uint64_t, UFFD_FEATURE_SIGBUS),
+ #define XLAT_VAL_7 ((uint64_t) (UFFD_FEATURE_SIGBUS))
+ #define XLAT_STR_7 STRINGIFY(UFFD_FEATURE_SIGBUS)
+ XLAT_TYPE(uint64_t, UFFD_FEATURE_THREAD_ID),
+ #define XLAT_VAL_8 ((uint64_t) (UFFD_FEATURE_THREAD_ID))
+ #define XLAT_STR_8 STRINGIFY(UFFD_FEATURE_THREAD_ID)
 };
+static
+const struct xlat uffd_api_features[1] = { {
+ .data = uffd_api_features_xdata,
+ .size = ARRAY_SIZE(uffd_api_features_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index b9a9a29d8b75f74a0b4d4dc81465e0c1e3115db2..33d6447788a2e1b24f52010157a020297a8af949 100644 (file)
@@ -1,10 +1,10 @@
 #val_type uint64_t
-UFFD_FEATURE_PAGEFAULT_FLAG_WP
-UFFD_FEATURE_EVENT_FORK
-UFFD_FEATURE_EVENT_REMAP
-UFFD_FEATURE_EVENT_REMOVE
-UFFD_FEATURE_MISSING_HUGETLBFS
-UFFD_FEATURE_MISSING_SHMEM
-UFFD_FEATURE_EVENT_UNMAP
-UFFD_FEATURE_SIGBUS
-UFFD_FEATURE_THREAD_ID
+UFFD_FEATURE_PAGEFAULT_FLAG_WP (1<<0)
+UFFD_FEATURE_EVENT_FORK                (1<<1)
+UFFD_FEATURE_EVENT_REMAP       (1<<2)
+UFFD_FEATURE_EVENT_REMOVE      (1<<3)
+UFFD_FEATURE_MISSING_HUGETLBFS (1<<4)
+UFFD_FEATURE_MISSING_SHMEM     (1<<5)
+UFFD_FEATURE_EVENT_UNMAP       (1<<6)
+UFFD_FEATURE_SIGBUS            (1<<7)
+UFFD_FEATURE_THREAD_ID         (1<<8)
index 7d0f929b118bec15ccd88720d01e213ba022c35a..086ca804dba61178c04f979ff4cb9e880e3b4902 100644 (file)
 
 # else
 
-static
-const struct xlat uffd_api_flags[] = {
+static const struct xlat_data uffd_api_flags_xdata[] = {
 #if defined(_UFFDIO_REGISTER) || (defined(HAVE_DECL__UFFDIO_REGISTER) && HAVE_DECL__UFFDIO_REGISTER)
   XLAT_TYPE_PAIR(uint64_t, 1ULL<<_UFFDIO_REGISTER, "1<<_UFFDIO_REGISTER"),
+ #define XLAT_VAL_0 ((uint64_t) (1ULL<<_UFFDIO_REGISTER))
+ #define XLAT_STR_0 "1<<_UFFDIO_REGISTER"
 #endif
 #if defined(_UFFDIO_UNREGISTER) || (defined(HAVE_DECL__UFFDIO_UNREGISTER) && HAVE_DECL__UFFDIO_UNREGISTER)
   XLAT_TYPE_PAIR(uint64_t, 1ULL<<_UFFDIO_UNREGISTER, "1<<_UFFDIO_UNREGISTER"),
+ #define XLAT_VAL_1 ((uint64_t) (1ULL<<_UFFDIO_UNREGISTER))
+ #define XLAT_STR_1 "1<<_UFFDIO_UNREGISTER"
 #endif
 #if defined(_UFFDIO_API) || (defined(HAVE_DECL__UFFDIO_API) && HAVE_DECL__UFFDIO_API)
   XLAT_TYPE_PAIR(uint64_t, 1ULL<<_UFFDIO_API, "1<<_UFFDIO_API"),
+ #define XLAT_VAL_2 ((uint64_t) (1ULL<<_UFFDIO_API))
+ #define XLAT_STR_2 "1<<_UFFDIO_API"
 #endif
- XLAT_END
 };
+static
+const struct xlat uffd_api_flags[1] = { {
+ .data = uffd_api_flags_xdata,
+ .size = ARRAY_SIZE(uffd_api_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 1d45e6cb2a0a092d3995501f78f1e34ea5ecc51c..596c2187090ab15e5b82d59e32e59de863abcff1 100644 (file)
@@ -3,6 +3,20 @@
 #include "gcc_compat.h"
 #include "static_assert.h"
 
+#if defined(UFFDIO_COPY_MODE_DONTWAKE) || (defined(HAVE_DECL_UFFDIO_COPY_MODE_DONTWAKE) && HAVE_DECL_UFFDIO_COPY_MODE_DONTWAKE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((UFFDIO_COPY_MODE_DONTWAKE) == ((1ULL<<0)), "UFFDIO_COPY_MODE_DONTWAKE != (1ULL<<0)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define UFFDIO_COPY_MODE_DONTWAKE (1ULL<<0)
+#endif
+#if defined(UFFDIO_COPY_MODE_WP) || (defined(HAVE_DECL_UFFDIO_COPY_MODE_WP) && HAVE_DECL_UFFDIO_COPY_MODE_WP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((UFFDIO_COPY_MODE_WP) == ((1ULL<<1)), "UFFDIO_COPY_MODE_WP != (1ULL<<1)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define UFFDIO_COPY_MODE_WP (1ULL<<1)
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
 
 # else
 
-static
-const struct xlat uffd_copy_flags[] = {
-#if defined(UFFDIO_COPY_MODE_DONTWAKE) || (defined(HAVE_DECL_UFFDIO_COPY_MODE_DONTWAKE) && HAVE_DECL_UFFDIO_COPY_MODE_DONTWAKE)
-  XLAT_TYPE(uint64_t, UFFDIO_COPY_MODE_DONTWAKE),
-#endif
- XLAT_END
+static const struct xlat_data uffd_copy_flags_xdata[] = {
+ XLAT_TYPE(uint64_t, UFFDIO_COPY_MODE_DONTWAKE),
+ #define XLAT_VAL_0 ((uint64_t) (UFFDIO_COPY_MODE_DONTWAKE))
+ #define XLAT_STR_0 STRINGIFY(UFFDIO_COPY_MODE_DONTWAKE)
+ XLAT_TYPE(uint64_t, UFFDIO_COPY_MODE_WP),
+ #define XLAT_VAL_1 ((uint64_t) (UFFDIO_COPY_MODE_WP))
+ #define XLAT_STR_1 STRINGIFY(UFFDIO_COPY_MODE_WP)
 };
+static
+const struct xlat uffd_copy_flags[1] = { {
+ .data = uffd_copy_flags_xdata,
+ .size = ARRAY_SIZE(uffd_copy_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 02d6b19c6eba3dac49663e9323aa4f504941bcca..a9e3e9416b3df280b1a556d3f234ed4743b490d6 100644 (file)
@@ -1,2 +1,3 @@
 #val_type uint64_t
-UFFDIO_COPY_MODE_DONTWAKE
+UFFDIO_COPY_MODE_DONTWAKE      (1ULL<<0)
+UFFDIO_COPY_MODE_WP            (1ULL<<1)
index 7180961ca9cf2a98ddfcbbe3f6969ba366c455c1..a071468dd48c3dd97177aa91fe07eab4951869f1 100644 (file)
 
 # else
 
-static
-const struct xlat uffd_flags[] = {
+static const struct xlat_data uffd_flags_xdata[] = {
 #if defined(O_NONBLOCK) || (defined(HAVE_DECL_O_NONBLOCK) && HAVE_DECL_O_NONBLOCK)
   XLAT(O_NONBLOCK),
+ #define XLAT_VAL_0 ((unsigned) (O_NONBLOCK))
+ #define XLAT_STR_0 STRINGIFY(O_NONBLOCK)
 #endif
 #if defined(O_CLOEXEC) || (defined(HAVE_DECL_O_CLOEXEC) && HAVE_DECL_O_CLOEXEC)
   XLAT(O_CLOEXEC),
+ #define XLAT_VAL_1 ((unsigned) (O_CLOEXEC))
+ #define XLAT_STR_1 STRINGIFY(O_CLOEXEC)
 #endif
- XLAT_END
 };
-
+static
+const struct xlat uffd_flags[1] = { {
+ .data = uffd_flags_xdata,
+ .size = ARRAY_SIZE(uffd_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index affbb07b1897cde0ea97cf200bc4966da64a8658..5111245da73a264ea1013aa26dc04361ef804197 100644 (file)
 
 # else
 
-static
-const struct xlat uffd_register_ioctl_flags[] = {
+static const struct xlat_data uffd_register_ioctl_flags_xdata[] = {
 #if defined(_UFFDIO_WAKE) || (defined(HAVE_DECL__UFFDIO_WAKE) && HAVE_DECL__UFFDIO_WAKE)
   XLAT_TYPE_PAIR(uint64_t, 1ULL<<_UFFDIO_WAKE, "1<<_UFFDIO_WAKE"),
+ #define XLAT_VAL_0 ((uint64_t) (1ULL<<_UFFDIO_WAKE))
+ #define XLAT_STR_0 "1<<_UFFDIO_WAKE"
 #endif
 #if defined(_UFFDIO_COPY) || (defined(HAVE_DECL__UFFDIO_COPY) && HAVE_DECL__UFFDIO_COPY)
   XLAT_TYPE_PAIR(uint64_t, 1ULL<<_UFFDIO_COPY, "1<<_UFFDIO_COPY"),
+ #define XLAT_VAL_1 ((uint64_t) (1ULL<<_UFFDIO_COPY))
+ #define XLAT_STR_1 "1<<_UFFDIO_COPY"
 #endif
 #if defined(_UFFDIO_ZEROPAGE) || (defined(HAVE_DECL__UFFDIO_ZEROPAGE) && HAVE_DECL__UFFDIO_ZEROPAGE)
   XLAT_TYPE_PAIR(uint64_t, 1ULL<<_UFFDIO_ZEROPAGE, "1<<_UFFDIO_ZEROPAGE"),
+ #define XLAT_VAL_2 ((uint64_t) (1ULL<<_UFFDIO_ZEROPAGE))
+ #define XLAT_STR_2 "1<<_UFFDIO_ZEROPAGE"
+#endif
+#if defined(_UFFDIO_WRITEPROTECT) || (defined(HAVE_DECL__UFFDIO_WRITEPROTECT) && HAVE_DECL__UFFDIO_WRITEPROTECT)
+  XLAT_TYPE_PAIR(uint64_t, 1ULL<<_UFFDIO_WRITEPROTECT, "1<<_UFFDIO_WRITEPROTECT"),
+ #define XLAT_VAL_3 ((uint64_t) (1ULL<<_UFFDIO_WRITEPROTECT))
+ #define XLAT_STR_3 "1<<_UFFDIO_WRITEPROTECT"
 #endif
- XLAT_END
 };
+static
+const struct xlat uffd_register_ioctl_flags[1] = { {
+ .data = uffd_register_ioctl_flags_xdata,
+ .size = ARRAY_SIZE(uffd_register_ioctl_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index f4e3b9439b7b7d87c69371883385bcd4471645da..077871f931abccf489e1ce731eb3daa7e6d9c932 100644 (file)
@@ -2,3 +2,4 @@
 1<<_UFFDIO_WAKE
 1<<_UFFDIO_COPY
 1<<_UFFDIO_ZEROPAGE
+1<<_UFFDIO_WRITEPROTECT
index 272e4dbe2b361346f5754c83e72874e8666b2ca2..4b94c5d5e36b3910aca411198fe6a2fb8d229f09 100644 (file)
 
 # else
 
-static
-const struct xlat uffd_register_mode_flags[] = {
+static const struct xlat_data uffd_register_mode_flags_xdata[] = {
 #if defined(UFFDIO_REGISTER_MODE_MISSING) || (defined(HAVE_DECL_UFFDIO_REGISTER_MODE_MISSING) && HAVE_DECL_UFFDIO_REGISTER_MODE_MISSING)
   XLAT_TYPE(uint64_t, UFFDIO_REGISTER_MODE_MISSING),
+ #define XLAT_VAL_0 ((uint64_t) (UFFDIO_REGISTER_MODE_MISSING))
+ #define XLAT_STR_0 STRINGIFY(UFFDIO_REGISTER_MODE_MISSING)
 #endif
 #if defined(UFFDIO_REGISTER_MODE_WP) || (defined(HAVE_DECL_UFFDIO_REGISTER_MODE_WP) && HAVE_DECL_UFFDIO_REGISTER_MODE_WP)
   XLAT_TYPE(uint64_t, UFFDIO_REGISTER_MODE_WP),
+ #define XLAT_VAL_1 ((uint64_t) (UFFDIO_REGISTER_MODE_WP))
+ #define XLAT_STR_1 STRINGIFY(UFFDIO_REGISTER_MODE_WP)
 #endif
- XLAT_END
 };
-
+static
+const struct xlat uffd_register_mode_flags[1] = { {
+ .data = uffd_register_mode_flags_xdata,
+ .size = ARRAY_SIZE(uffd_register_mode_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 6d21fb063d39c1106f6940b45fbe88b1c916aad2..b3511f951827f7153235c4b7f541570f49762703 100644 (file)
 
 # else
 
-static
-const struct xlat uffd_zeropage_flags[] = {
+static const struct xlat_data uffd_zeropage_flags_xdata[] = {
 #if defined(UFFDIO_ZEROPAGE_MODE_DONTWAKE) || (defined(HAVE_DECL_UFFDIO_ZEROPAGE_MODE_DONTWAKE) && HAVE_DECL_UFFDIO_ZEROPAGE_MODE_DONTWAKE)
   XLAT_TYPE(uint64_t, UFFDIO_ZEROPAGE_MODE_DONTWAKE),
+ #define XLAT_VAL_0 ((uint64_t) (UFFDIO_ZEROPAGE_MODE_DONTWAKE))
+ #define XLAT_STR_0 STRINGIFY(UFFDIO_ZEROPAGE_MODE_DONTWAKE)
 #endif
- XLAT_END
 };
-
+static
+const struct xlat uffd_zeropage_flags[1] = { {
+ .data = uffd_zeropage_flags_xdata,
+ .size = ARRAY_SIZE(uffd_zeropage_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index c81e66106ba084e433d5aae3c34cb0828fae0b13..e126e9a1c79d6bbb521b7d78e62432312a396a66 100644 (file)
@@ -40,15 +40,63 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat umount_flags[] = {
+static const struct xlat_data umount_flags_xdata[] = {
  XLAT(MNT_FORCE),
+ #define XLAT_VAL_0 ((unsigned) (MNT_FORCE))
+ #define XLAT_STR_0 STRINGIFY(MNT_FORCE)
  XLAT(MNT_DETACH),
+ #define XLAT_VAL_1 ((unsigned) (MNT_DETACH))
+ #define XLAT_STR_1 STRINGIFY(MNT_DETACH)
  XLAT(MNT_EXPIRE),
+ #define XLAT_VAL_2 ((unsigned) (MNT_EXPIRE))
+ #define XLAT_STR_2 STRINGIFY(MNT_EXPIRE)
  XLAT(UMOUNT_NOFOLLOW),
- XLAT_END
+ #define XLAT_VAL_3 ((unsigned) (UMOUNT_NOFOLLOW))
+ #define XLAT_STR_3 STRINGIFY(UMOUNT_NOFOLLOW)
 };
+static
+const struct xlat umount_flags[1] = { {
+ .data = umount_flags_xdata,
+ .size = ARRAY_SIZE(umount_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 3f626e0d93313efa052a1fc0f3861f36d7bac085..717f5f0e1437a9ed244eb155af8b44a05e430a47 100644 (file)
 
 # else
 
-static
-const struct xlat unix_diag_attrs[] = {
+static const struct xlat_data unix_diag_attrs_xdata[] = {
  XLAT(UNIX_DIAG_NAME),
+ #define XLAT_VAL_0 ((unsigned) (UNIX_DIAG_NAME))
+ #define XLAT_STR_0 STRINGIFY(UNIX_DIAG_NAME)
  XLAT(UNIX_DIAG_VFS),
+ #define XLAT_VAL_1 ((unsigned) (UNIX_DIAG_VFS))
+ #define XLAT_STR_1 STRINGIFY(UNIX_DIAG_VFS)
  XLAT(UNIX_DIAG_PEER),
+ #define XLAT_VAL_2 ((unsigned) (UNIX_DIAG_PEER))
+ #define XLAT_STR_2 STRINGIFY(UNIX_DIAG_PEER)
  XLAT(UNIX_DIAG_ICONS),
+ #define XLAT_VAL_3 ((unsigned) (UNIX_DIAG_ICONS))
+ #define XLAT_STR_3 STRINGIFY(UNIX_DIAG_ICONS)
  XLAT(UNIX_DIAG_RQLEN),
+ #define XLAT_VAL_4 ((unsigned) (UNIX_DIAG_RQLEN))
+ #define XLAT_STR_4 STRINGIFY(UNIX_DIAG_RQLEN)
  XLAT(UNIX_DIAG_MEMINFO),
+ #define XLAT_VAL_5 ((unsigned) (UNIX_DIAG_MEMINFO))
+ #define XLAT_STR_5 STRINGIFY(UNIX_DIAG_MEMINFO)
  XLAT(UNIX_DIAG_SHUTDOWN),
- XLAT_END
+ #define XLAT_VAL_6 ((unsigned) (UNIX_DIAG_SHUTDOWN))
+ #define XLAT_STR_6 STRINGIFY(UNIX_DIAG_SHUTDOWN)
+ XLAT(UNIX_DIAG_UID),
+ #define XLAT_VAL_7 ((unsigned) (UNIX_DIAG_UID))
+ #define XLAT_STR_7 STRINGIFY(UNIX_DIAG_UID)
 };
+static
+const struct xlat unix_diag_attrs[1] = { {
+ .data = unix_diag_attrs_xdata,
+ .size = ARRAY_SIZE(unix_diag_attrs_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 4c3d9b2e33493f350d44c0f72fcc9fbfdbbbf442..fb2838cc92b59249f5b3f484db83a9ee8b4c91b6 100644 (file)
@@ -6,3 +6,4 @@ UNIX_DIAG_ICONS
 UNIX_DIAG_RQLEN
 UNIX_DIAG_MEMINFO
 UNIX_DIAG_SHUTDOWN
+UNIX_DIAG_UID
index eee89fcc478c69c716ca99a6d0d9ff932bb848b2..47e03406cebe7bbcebfad109d15f855f1b9b4cf2 100644 (file)
 
 # else
 
-static
-const struct xlat unix_diag_show[] = {
+static const struct xlat_data unix_diag_show_xdata[] = {
 #if defined(UDIAG_SHOW_NAME) || (defined(HAVE_DECL_UDIAG_SHOW_NAME) && HAVE_DECL_UDIAG_SHOW_NAME)
   XLAT(UDIAG_SHOW_NAME),
+ #define XLAT_VAL_0 ((unsigned) (UDIAG_SHOW_NAME))
+ #define XLAT_STR_0 STRINGIFY(UDIAG_SHOW_NAME)
 #endif
 #if defined(UDIAG_SHOW_VFS) || (defined(HAVE_DECL_UDIAG_SHOW_VFS) && HAVE_DECL_UDIAG_SHOW_VFS)
   XLAT(UDIAG_SHOW_VFS),
+ #define XLAT_VAL_1 ((unsigned) (UDIAG_SHOW_VFS))
+ #define XLAT_STR_1 STRINGIFY(UDIAG_SHOW_VFS)
 #endif
 #if defined(UDIAG_SHOW_PEER) || (defined(HAVE_DECL_UDIAG_SHOW_PEER) && HAVE_DECL_UDIAG_SHOW_PEER)
   XLAT(UDIAG_SHOW_PEER),
+ #define XLAT_VAL_2 ((unsigned) (UDIAG_SHOW_PEER))
+ #define XLAT_STR_2 STRINGIFY(UDIAG_SHOW_PEER)
 #endif
 #if defined(UDIAG_SHOW_ICONS) || (defined(HAVE_DECL_UDIAG_SHOW_ICONS) && HAVE_DECL_UDIAG_SHOW_ICONS)
   XLAT(UDIAG_SHOW_ICONS),
+ #define XLAT_VAL_3 ((unsigned) (UDIAG_SHOW_ICONS))
+ #define XLAT_STR_3 STRINGIFY(UDIAG_SHOW_ICONS)
 #endif
 #if defined(UDIAG_SHOW_RQLEN) || (defined(HAVE_DECL_UDIAG_SHOW_RQLEN) && HAVE_DECL_UDIAG_SHOW_RQLEN)
   XLAT(UDIAG_SHOW_RQLEN),
+ #define XLAT_VAL_4 ((unsigned) (UDIAG_SHOW_RQLEN))
+ #define XLAT_STR_4 STRINGIFY(UDIAG_SHOW_RQLEN)
 #endif
 #if defined(UDIAG_SHOW_MEMINFO) || (defined(HAVE_DECL_UDIAG_SHOW_MEMINFO) && HAVE_DECL_UDIAG_SHOW_MEMINFO)
   XLAT(UDIAG_SHOW_MEMINFO),
+ #define XLAT_VAL_5 ((unsigned) (UDIAG_SHOW_MEMINFO))
+ #define XLAT_STR_5 STRINGIFY(UDIAG_SHOW_MEMINFO)
+#endif
+#if defined(UDIAG_SHOW_UID) || (defined(HAVE_DECL_UDIAG_SHOW_UID) && HAVE_DECL_UDIAG_SHOW_UID)
+  XLAT(UDIAG_SHOW_UID),
+ #define XLAT_VAL_6 ((unsigned) (UDIAG_SHOW_UID))
+ #define XLAT_STR_6 STRINGIFY(UDIAG_SHOW_UID)
 #endif
- XLAT_END
 };
+static
+const struct xlat unix_diag_show[1] = { {
+ .data = unix_diag_show_xdata,
+ .size = ARRAY_SIZE(unix_diag_show_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index c7dbdfbc6972945ae056dab0b02644d06e04dcd2..5f50887fc74e642c814d64679058e05a2a5b2a11 100644 (file)
@@ -4,3 +4,4 @@ UDIAG_SHOW_PEER
 UDIAG_SHOW_ICONS
 UDIAG_SHOW_RQLEN
 UDIAG_SHOW_MEMINFO
+UDIAG_SHOW_UID
index ccbfb750e20f3a4f43fbb5cbf69e7048a886f8bb..009baea61573211c609d863bbb8d8c4da59e66d8 100644 (file)
 #include "gcc_compat.h"
 #include "static_assert.h"
 
-
-#ifndef XLAT_MACROS_ONLY
-
-# ifdef IN_MPERS
-
-#  error static const struct xlat unshare_flags in mpers mode
-
-# else
-
-static
-const struct xlat unshare_flags[] = {
-#if defined(CLONE_THREAD) || (defined(HAVE_DECL_CLONE_THREAD) && HAVE_DECL_CLONE_THREAD)
-  XLAT(CLONE_THREAD),
+#if defined(CLONE_NEWTIME) || (defined(HAVE_DECL_CLONE_NEWTIME) && HAVE_DECL_CLONE_NEWTIME)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((CLONE_NEWTIME) == (0x00000080), "CLONE_NEWTIME != 0x00000080");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define CLONE_NEWTIME 0x00000080
+#endif
+#if defined(CLONE_VM) || (defined(HAVE_DECL_CLONE_VM) && HAVE_DECL_CLONE_VM)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((CLONE_VM) == (0x00000100), "CLONE_VM != 0x00000100");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define CLONE_VM 0x00000100
 #endif
 #if defined(CLONE_FS) || (defined(HAVE_DECL_CLONE_FS) && HAVE_DECL_CLONE_FS)
-  XLAT(CLONE_FS),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((CLONE_FS) == (0x00000200), "CLONE_FS != 0x00000200");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define CLONE_FS 0x00000200
 #endif
-#if defined(CLONE_NEWNS) || (defined(HAVE_DECL_CLONE_NEWNS) && HAVE_DECL_CLONE_NEWNS)
-  XLAT(CLONE_NEWNS),
+#if defined(CLONE_FILES) || (defined(HAVE_DECL_CLONE_FILES) && HAVE_DECL_CLONE_FILES)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((CLONE_FILES) == (0x00000400), "CLONE_FILES != 0x00000400");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define CLONE_FILES 0x00000400
 #endif
 #if defined(CLONE_SIGHAND) || (defined(HAVE_DECL_CLONE_SIGHAND) && HAVE_DECL_CLONE_SIGHAND)
-  XLAT(CLONE_SIGHAND),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((CLONE_SIGHAND) == (0x00000800), "CLONE_SIGHAND != 0x00000800");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define CLONE_SIGHAND 0x00000800
 #endif
-#if defined(CLONE_VM) || (defined(HAVE_DECL_CLONE_VM) && HAVE_DECL_CLONE_VM)
-  XLAT(CLONE_VM),
+#if defined(CLONE_THREAD) || (defined(HAVE_DECL_CLONE_THREAD) && HAVE_DECL_CLONE_THREAD)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((CLONE_THREAD) == (0x00010000), "CLONE_THREAD != 0x00010000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define CLONE_THREAD 0x00010000
 #endif
-#if defined(CLONE_FILES) || (defined(HAVE_DECL_CLONE_FILES) && HAVE_DECL_CLONE_FILES)
-  XLAT(CLONE_FILES),
+#if defined(CLONE_NEWNS) || (defined(HAVE_DECL_CLONE_NEWNS) && HAVE_DECL_CLONE_NEWNS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((CLONE_NEWNS) == (0x00020000), "CLONE_NEWNS != 0x00020000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define CLONE_NEWNS 0x00020000
 #endif
 #if defined(CLONE_SYSVSEM) || (defined(HAVE_DECL_CLONE_SYSVSEM) && HAVE_DECL_CLONE_SYSVSEM)
-  XLAT(CLONE_SYSVSEM),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((CLONE_SYSVSEM) == (0x00040000), "CLONE_SYSVSEM != 0x00040000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define CLONE_SYSVSEM 0x00040000
+#endif
+#if defined(CLONE_NEWCGROUP) || (defined(HAVE_DECL_CLONE_NEWCGROUP) && HAVE_DECL_CLONE_NEWCGROUP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((CLONE_NEWCGROUP) == (0x02000000), "CLONE_NEWCGROUP != 0x02000000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define CLONE_NEWCGROUP 0x02000000
 #endif
 #if defined(CLONE_NEWUTS) || (defined(HAVE_DECL_CLONE_NEWUTS) && HAVE_DECL_CLONE_NEWUTS)
-  XLAT(CLONE_NEWUTS),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((CLONE_NEWUTS) == (0x04000000), "CLONE_NEWUTS != 0x04000000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define CLONE_NEWUTS 0x04000000
 #endif
 #if defined(CLONE_NEWIPC) || (defined(HAVE_DECL_CLONE_NEWIPC) && HAVE_DECL_CLONE_NEWIPC)
-  XLAT(CLONE_NEWIPC),
-#endif
-#if defined(CLONE_NEWNET) || (defined(HAVE_DECL_CLONE_NEWNET) && HAVE_DECL_CLONE_NEWNET)
-  XLAT(CLONE_NEWNET),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((CLONE_NEWIPC) == (0x08000000), "CLONE_NEWIPC != 0x08000000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define CLONE_NEWIPC 0x08000000
 #endif
 #if defined(CLONE_NEWUSER) || (defined(HAVE_DECL_CLONE_NEWUSER) && HAVE_DECL_CLONE_NEWUSER)
-  XLAT(CLONE_NEWUSER),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((CLONE_NEWUSER) == (0x10000000), "CLONE_NEWUSER != 0x10000000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define CLONE_NEWUSER 0x10000000
 #endif
 #if defined(CLONE_NEWPID) || (defined(HAVE_DECL_CLONE_NEWPID) && HAVE_DECL_CLONE_NEWPID)
-  XLAT(CLONE_NEWPID),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((CLONE_NEWPID) == (0x20000000), "CLONE_NEWPID != 0x20000000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define CLONE_NEWPID 0x20000000
 #endif
-#if defined(CLONE_NEWCGROUP) || (defined(HAVE_DECL_CLONE_NEWCGROUP) && HAVE_DECL_CLONE_NEWCGROUP)
-  XLAT(CLONE_NEWCGROUP),
+#if defined(CLONE_NEWNET) || (defined(HAVE_DECL_CLONE_NEWNET) && HAVE_DECL_CLONE_NEWNET)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((CLONE_NEWNET) == (0x40000000), "CLONE_NEWNET != 0x40000000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define CLONE_NEWNET 0x40000000
 #endif
- XLAT_END
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat unshare_flags in mpers mode
+
+# else
+
+static const struct xlat_data unshare_flags_xdata[] = {
+ XLAT(CLONE_NEWTIME),
+ #define XLAT_VAL_0 ((unsigned) (CLONE_NEWTIME))
+ #define XLAT_STR_0 STRINGIFY(CLONE_NEWTIME)
+ XLAT(CLONE_VM),
+ #define XLAT_VAL_1 ((unsigned) (CLONE_VM))
+ #define XLAT_STR_1 STRINGIFY(CLONE_VM)
+ XLAT(CLONE_FS),
+ #define XLAT_VAL_2 ((unsigned) (CLONE_FS))
+ #define XLAT_STR_2 STRINGIFY(CLONE_FS)
+ XLAT(CLONE_FILES),
+ #define XLAT_VAL_3 ((unsigned) (CLONE_FILES))
+ #define XLAT_STR_3 STRINGIFY(CLONE_FILES)
+ XLAT(CLONE_SIGHAND),
+ #define XLAT_VAL_4 ((unsigned) (CLONE_SIGHAND))
+ #define XLAT_STR_4 STRINGIFY(CLONE_SIGHAND)
+ XLAT(CLONE_THREAD),
+ #define XLAT_VAL_5 ((unsigned) (CLONE_THREAD))
+ #define XLAT_STR_5 STRINGIFY(CLONE_THREAD)
+ XLAT(CLONE_NEWNS),
+ #define XLAT_VAL_6 ((unsigned) (CLONE_NEWNS))
+ #define XLAT_STR_6 STRINGIFY(CLONE_NEWNS)
+ XLAT(CLONE_SYSVSEM),
+ #define XLAT_VAL_7 ((unsigned) (CLONE_SYSVSEM))
+ #define XLAT_STR_7 STRINGIFY(CLONE_SYSVSEM)
+ XLAT(CLONE_NEWCGROUP),
+ #define XLAT_VAL_8 ((unsigned) (CLONE_NEWCGROUP))
+ #define XLAT_STR_8 STRINGIFY(CLONE_NEWCGROUP)
+ XLAT(CLONE_NEWUTS),
+ #define XLAT_VAL_9 ((unsigned) (CLONE_NEWUTS))
+ #define XLAT_STR_9 STRINGIFY(CLONE_NEWUTS)
+ XLAT(CLONE_NEWIPC),
+ #define XLAT_VAL_10 ((unsigned) (CLONE_NEWIPC))
+ #define XLAT_STR_10 STRINGIFY(CLONE_NEWIPC)
+ XLAT(CLONE_NEWUSER),
+ #define XLAT_VAL_11 ((unsigned) (CLONE_NEWUSER))
+ #define XLAT_STR_11 STRINGIFY(CLONE_NEWUSER)
+ XLAT(CLONE_NEWPID),
+ #define XLAT_VAL_12 ((unsigned) (CLONE_NEWPID))
+ #define XLAT_STR_12 STRINGIFY(CLONE_NEWPID)
+ XLAT(CLONE_NEWNET),
+ #define XLAT_VAL_13 ((unsigned) (CLONE_NEWNET))
+ #define XLAT_STR_13 STRINGIFY(CLONE_NEWNET)
 };
+static
+const struct xlat unshare_flags[1] = { {
+ .data = unshare_flags_xdata,
+ .size = ARRAY_SIZE(unshare_flags_xdata),
+ .type = XT_SORTED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 4b289a7aac167da938b509d20c1775b97de01da5..e9b574926e589c0d5055ac5941480aad6d1d151f 100644 (file)
@@ -1,13 +1,15 @@
-CLONE_THREAD
-CLONE_FS
-CLONE_NEWNS
-CLONE_SIGHAND
-CLONE_VM
-CLONE_FILES
-CLONE_SYSVSEM
-CLONE_NEWUTS
-CLONE_NEWIPC
-CLONE_NEWNET
-CLONE_NEWUSER
-CLONE_NEWPID
-CLONE_NEWCGROUP
+#sorted sort -k2,2g
+CLONE_NEWTIME  0x00000080
+CLONE_VM       0x00000100
+CLONE_FS       0x00000200
+CLONE_FILES    0x00000400
+CLONE_SIGHAND  0x00000800
+CLONE_THREAD   0x00010000
+CLONE_NEWNS    0x00020000
+CLONE_SYSVSEM  0x00040000
+CLONE_NEWCGROUP        0x02000000
+CLONE_NEWUTS   0x04000000
+CLONE_NEWIPC   0x08000000
+CLONE_NEWUSER  0x10000000
+CLONE_NEWPID   0x20000000
+CLONE_NEWNET   0x40000000
diff --git a/xlat/uring_cqring_flags.h b/xlat/uring_cqring_flags.h
new file mode 100644 (file)
index 0000000..0352749
--- /dev/null
@@ -0,0 +1,48 @@
+/* Generated by ./xlat/gen.sh from ./xlat/uring_cqring_flags.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(IORING_CQ_EVENTFD_DISABLED) || (defined(HAVE_DECL_IORING_CQ_EVENTFD_DISABLED) && HAVE_DECL_IORING_CQ_EVENTFD_DISABLED)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_CQ_EVENTFD_DISABLED) == (1U), "IORING_CQ_EVENTFD_DISABLED != 1U");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_CQ_EVENTFD_DISABLED 1U
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat uring_cqring_flags in mpers mode
+
+# else
+
+static const struct xlat_data uring_cqring_flags_xdata[] = {
+ XLAT(IORING_CQ_EVENTFD_DISABLED),
+ #define XLAT_VAL_0 ((unsigned) (IORING_CQ_EVENTFD_DISABLED))
+ #define XLAT_STR_0 STRINGIFY(IORING_CQ_EVENTFD_DISABLED)
+};
+static
+const struct xlat uring_cqring_flags[1] = { {
+ .data = uring_cqring_flags_xdata,
+ .size = ARRAY_SIZE(uring_cqring_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/uring_cqring_flags.in b/xlat/uring_cqring_flags.in
new file mode 100644 (file)
index 0000000..c81fbc2
--- /dev/null
@@ -0,0 +1 @@
+IORING_CQ_EVENTFD_DISABLED     1U
index 2fec947f596f26e4c9f849d8da68f7f17c7c6b79..a5e07e10c8ca14646cb4ea78bda46231f093d283 100644 (file)
@@ -26,13 +26,41 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat uring_enter_flags[] = {
+static const struct xlat_data uring_enter_flags_xdata[] = {
  XLAT(IORING_ENTER_GETEVENTS),
+ #define XLAT_VAL_0 ((unsigned) (IORING_ENTER_GETEVENTS))
+ #define XLAT_STR_0 STRINGIFY(IORING_ENTER_GETEVENTS)
  XLAT(IORING_ENTER_SQ_WAKEUP),
- XLAT_END
+ #define XLAT_VAL_1 ((unsigned) (IORING_ENTER_SQ_WAKEUP))
+ #define XLAT_STR_1 STRINGIFY(IORING_ENTER_SQ_WAKEUP)
 };
+static
+const struct xlat uring_enter_flags[1] = { {
+ .data = uring_enter_flags_xdata,
+ .size = ARRAY_SIZE(uring_enter_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/uring_op_flags.h b/xlat/uring_op_flags.h
new file mode 100644 (file)
index 0000000..74b78b7
--- /dev/null
@@ -0,0 +1,48 @@
+/* Generated by ./xlat/gen.sh from ./xlat/uring_op_flags.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(IO_URING_OP_SUPPORTED) || (defined(HAVE_DECL_IO_URING_OP_SUPPORTED) && HAVE_DECL_IO_URING_OP_SUPPORTED)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IO_URING_OP_SUPPORTED) == ((1U << 0)), "IO_URING_OP_SUPPORTED != (1U << 0)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IO_URING_OP_SUPPORTED (1U << 0)
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat uring_op_flags in mpers mode
+
+# else
+
+static const struct xlat_data uring_op_flags_xdata[] = {
+ XLAT(IO_URING_OP_SUPPORTED),
+ #define XLAT_VAL_0 ((unsigned) (IO_URING_OP_SUPPORTED))
+ #define XLAT_STR_0 STRINGIFY(IO_URING_OP_SUPPORTED)
+};
+static
+const struct xlat uring_op_flags[1] = { {
+ .data = uring_op_flags_xdata,
+ .size = ARRAY_SIZE(uring_op_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/uring_op_flags.in b/xlat/uring_op_flags.in
new file mode 100644 (file)
index 0000000..98d25ce
--- /dev/null
@@ -0,0 +1 @@
+IO_URING_OP_SUPPORTED (1U << 0)
diff --git a/xlat/uring_ops.h b/xlat/uring_ops.h
new file mode 100644 (file)
index 0000000..6a053d6
--- /dev/null
@@ -0,0 +1,642 @@
+/* Generated by ./xlat/gen.sh from ./xlat/uring_ops.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(IORING_OP_NOP) || (defined(HAVE_DECL_IORING_OP_NOP) && HAVE_DECL_IORING_OP_NOP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_OP_NOP) == (0), "IORING_OP_NOP != 0");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_OP_NOP 0
+#endif
+#if defined(IORING_OP_READV) || (defined(HAVE_DECL_IORING_OP_READV) && HAVE_DECL_IORING_OP_READV)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_OP_READV) == (1), "IORING_OP_READV != 1");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_OP_READV 1
+#endif
+#if defined(IORING_OP_WRITEV) || (defined(HAVE_DECL_IORING_OP_WRITEV) && HAVE_DECL_IORING_OP_WRITEV)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_OP_WRITEV) == (2), "IORING_OP_WRITEV != 2");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_OP_WRITEV 2
+#endif
+#if defined(IORING_OP_FSYNC) || (defined(HAVE_DECL_IORING_OP_FSYNC) && HAVE_DECL_IORING_OP_FSYNC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_OP_FSYNC) == (3), "IORING_OP_FSYNC != 3");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_OP_FSYNC 3
+#endif
+#if defined(IORING_OP_READ_FIXED) || (defined(HAVE_DECL_IORING_OP_READ_FIXED) && HAVE_DECL_IORING_OP_READ_FIXED)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_OP_READ_FIXED) == (4), "IORING_OP_READ_FIXED != 4");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_OP_READ_FIXED 4
+#endif
+#if defined(IORING_OP_WRITE_FIXED) || (defined(HAVE_DECL_IORING_OP_WRITE_FIXED) && HAVE_DECL_IORING_OP_WRITE_FIXED)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_OP_WRITE_FIXED) == (5), "IORING_OP_WRITE_FIXED != 5");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_OP_WRITE_FIXED 5
+#endif
+#if defined(IORING_OP_POLL_ADD) || (defined(HAVE_DECL_IORING_OP_POLL_ADD) && HAVE_DECL_IORING_OP_POLL_ADD)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_OP_POLL_ADD) == (6), "IORING_OP_POLL_ADD != 6");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_OP_POLL_ADD 6
+#endif
+#if defined(IORING_OP_POLL_REMOVE) || (defined(HAVE_DECL_IORING_OP_POLL_REMOVE) && HAVE_DECL_IORING_OP_POLL_REMOVE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_OP_POLL_REMOVE) == (7), "IORING_OP_POLL_REMOVE != 7");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_OP_POLL_REMOVE 7
+#endif
+#if defined(IORING_OP_SYNC_FILE_RANGE) || (defined(HAVE_DECL_IORING_OP_SYNC_FILE_RANGE) && HAVE_DECL_IORING_OP_SYNC_FILE_RANGE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_OP_SYNC_FILE_RANGE) == (8), "IORING_OP_SYNC_FILE_RANGE != 8");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_OP_SYNC_FILE_RANGE 8
+#endif
+#if defined(IORING_OP_SENDMSG) || (defined(HAVE_DECL_IORING_OP_SENDMSG) && HAVE_DECL_IORING_OP_SENDMSG)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_OP_SENDMSG) == (9), "IORING_OP_SENDMSG != 9");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_OP_SENDMSG 9
+#endif
+#if defined(IORING_OP_RECVMSG) || (defined(HAVE_DECL_IORING_OP_RECVMSG) && HAVE_DECL_IORING_OP_RECVMSG)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_OP_RECVMSG) == (10), "IORING_OP_RECVMSG != 10");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_OP_RECVMSG 10
+#endif
+#if defined(IORING_OP_TIMEOUT) || (defined(HAVE_DECL_IORING_OP_TIMEOUT) && HAVE_DECL_IORING_OP_TIMEOUT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_OP_TIMEOUT) == (11), "IORING_OP_TIMEOUT != 11");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_OP_TIMEOUT 11
+#endif
+#if defined(IORING_OP_TIMEOUT_REMOVE) || (defined(HAVE_DECL_IORING_OP_TIMEOUT_REMOVE) && HAVE_DECL_IORING_OP_TIMEOUT_REMOVE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_OP_TIMEOUT_REMOVE) == (12), "IORING_OP_TIMEOUT_REMOVE != 12");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_OP_TIMEOUT_REMOVE 12
+#endif
+#if defined(IORING_OP_ACCEPT) || (defined(HAVE_DECL_IORING_OP_ACCEPT) && HAVE_DECL_IORING_OP_ACCEPT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_OP_ACCEPT) == (13), "IORING_OP_ACCEPT != 13");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_OP_ACCEPT 13
+#endif
+#if defined(IORING_OP_ASYNC_CANCEL) || (defined(HAVE_DECL_IORING_OP_ASYNC_CANCEL) && HAVE_DECL_IORING_OP_ASYNC_CANCEL)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_OP_ASYNC_CANCEL) == (14), "IORING_OP_ASYNC_CANCEL != 14");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_OP_ASYNC_CANCEL 14
+#endif
+#if defined(IORING_OP_LINK_TIMEOUT) || (defined(HAVE_DECL_IORING_OP_LINK_TIMEOUT) && HAVE_DECL_IORING_OP_LINK_TIMEOUT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_OP_LINK_TIMEOUT) == (15), "IORING_OP_LINK_TIMEOUT != 15");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_OP_LINK_TIMEOUT 15
+#endif
+#if defined(IORING_OP_CONNECT) || (defined(HAVE_DECL_IORING_OP_CONNECT) && HAVE_DECL_IORING_OP_CONNECT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_OP_CONNECT) == (16), "IORING_OP_CONNECT != 16");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_OP_CONNECT 16
+#endif
+#if defined(IORING_OP_FALLOCATE) || (defined(HAVE_DECL_IORING_OP_FALLOCATE) && HAVE_DECL_IORING_OP_FALLOCATE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_OP_FALLOCATE) == (17), "IORING_OP_FALLOCATE != 17");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_OP_FALLOCATE 17
+#endif
+#if defined(IORING_OP_OPENAT) || (defined(HAVE_DECL_IORING_OP_OPENAT) && HAVE_DECL_IORING_OP_OPENAT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_OP_OPENAT) == (18), "IORING_OP_OPENAT != 18");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_OP_OPENAT 18
+#endif
+#if defined(IORING_OP_CLOSE) || (defined(HAVE_DECL_IORING_OP_CLOSE) && HAVE_DECL_IORING_OP_CLOSE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_OP_CLOSE) == (19), "IORING_OP_CLOSE != 19");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_OP_CLOSE 19
+#endif
+#if defined(IORING_OP_FILES_UPDATE) || (defined(HAVE_DECL_IORING_OP_FILES_UPDATE) && HAVE_DECL_IORING_OP_FILES_UPDATE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_OP_FILES_UPDATE) == (20), "IORING_OP_FILES_UPDATE != 20");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_OP_FILES_UPDATE 20
+#endif
+#if defined(IORING_OP_STATX) || (defined(HAVE_DECL_IORING_OP_STATX) && HAVE_DECL_IORING_OP_STATX)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_OP_STATX) == (21), "IORING_OP_STATX != 21");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_OP_STATX 21
+#endif
+#if defined(IORING_OP_READ) || (defined(HAVE_DECL_IORING_OP_READ) && HAVE_DECL_IORING_OP_READ)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_OP_READ) == (22), "IORING_OP_READ != 22");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_OP_READ 22
+#endif
+#if defined(IORING_OP_WRITE) || (defined(HAVE_DECL_IORING_OP_WRITE) && HAVE_DECL_IORING_OP_WRITE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_OP_WRITE) == (23), "IORING_OP_WRITE != 23");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_OP_WRITE 23
+#endif
+#if defined(IORING_OP_FADVISE) || (defined(HAVE_DECL_IORING_OP_FADVISE) && HAVE_DECL_IORING_OP_FADVISE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_OP_FADVISE) == (24), "IORING_OP_FADVISE != 24");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_OP_FADVISE 24
+#endif
+#if defined(IORING_OP_MADVISE) || (defined(HAVE_DECL_IORING_OP_MADVISE) && HAVE_DECL_IORING_OP_MADVISE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_OP_MADVISE) == (25), "IORING_OP_MADVISE != 25");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_OP_MADVISE 25
+#endif
+#if defined(IORING_OP_SEND) || (defined(HAVE_DECL_IORING_OP_SEND) && HAVE_DECL_IORING_OP_SEND)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_OP_SEND) == (26), "IORING_OP_SEND != 26");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_OP_SEND 26
+#endif
+#if defined(IORING_OP_RECV) || (defined(HAVE_DECL_IORING_OP_RECV) && HAVE_DECL_IORING_OP_RECV)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_OP_RECV) == (27), "IORING_OP_RECV != 27");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_OP_RECV 27
+#endif
+#if defined(IORING_OP_OPENAT2) || (defined(HAVE_DECL_IORING_OP_OPENAT2) && HAVE_DECL_IORING_OP_OPENAT2)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_OP_OPENAT2) == (28), "IORING_OP_OPENAT2 != 28");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_OP_OPENAT2 28
+#endif
+#if defined(IORING_OP_EPOLL_CTL) || (defined(HAVE_DECL_IORING_OP_EPOLL_CTL) && HAVE_DECL_IORING_OP_EPOLL_CTL)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_OP_EPOLL_CTL) == (29), "IORING_OP_EPOLL_CTL != 29");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_OP_EPOLL_CTL 29
+#endif
+#if defined(IORING_OP_SPLICE) || (defined(HAVE_DECL_IORING_OP_SPLICE) && HAVE_DECL_IORING_OP_SPLICE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_OP_SPLICE) == (30), "IORING_OP_SPLICE != 30");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_OP_SPLICE 30
+#endif
+#if defined(IORING_OP_PROVIDE_BUFFERS) || (defined(HAVE_DECL_IORING_OP_PROVIDE_BUFFERS) && HAVE_DECL_IORING_OP_PROVIDE_BUFFERS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_OP_PROVIDE_BUFFERS) == (31), "IORING_OP_PROVIDE_BUFFERS != 31");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_OP_PROVIDE_BUFFERS 31
+#endif
+#if defined(IORING_OP_REMOVE_BUFFERS) || (defined(HAVE_DECL_IORING_OP_REMOVE_BUFFERS) && HAVE_DECL_IORING_OP_REMOVE_BUFFERS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_OP_REMOVE_BUFFERS) == (32), "IORING_OP_REMOVE_BUFFERS != 32");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_OP_REMOVE_BUFFERS 32
+#endif
+#if defined(IORING_OP_TEE) || (defined(HAVE_DECL_IORING_OP_TEE) && HAVE_DECL_IORING_OP_TEE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_OP_TEE) == (33), "IORING_OP_TEE != 33");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_OP_TEE 33
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat uring_ops in mpers mode
+
+# else
+
+static const struct xlat_data uring_ops_xdata[] = {
+ [IORING_OP_NOP] = XLAT(IORING_OP_NOP),
+ #define XLAT_VAL_0 ((unsigned) (IORING_OP_NOP))
+ #define XLAT_STR_0 STRINGIFY(IORING_OP_NOP)
+ [IORING_OP_READV] = XLAT(IORING_OP_READV),
+ #define XLAT_VAL_1 ((unsigned) (IORING_OP_READV))
+ #define XLAT_STR_1 STRINGIFY(IORING_OP_READV)
+ [IORING_OP_WRITEV] = XLAT(IORING_OP_WRITEV),
+ #define XLAT_VAL_2 ((unsigned) (IORING_OP_WRITEV))
+ #define XLAT_STR_2 STRINGIFY(IORING_OP_WRITEV)
+ [IORING_OP_FSYNC] = XLAT(IORING_OP_FSYNC),
+ #define XLAT_VAL_3 ((unsigned) (IORING_OP_FSYNC))
+ #define XLAT_STR_3 STRINGIFY(IORING_OP_FSYNC)
+ [IORING_OP_READ_FIXED] = XLAT(IORING_OP_READ_FIXED),
+ #define XLAT_VAL_4 ((unsigned) (IORING_OP_READ_FIXED))
+ #define XLAT_STR_4 STRINGIFY(IORING_OP_READ_FIXED)
+ [IORING_OP_WRITE_FIXED] = XLAT(IORING_OP_WRITE_FIXED),
+ #define XLAT_VAL_5 ((unsigned) (IORING_OP_WRITE_FIXED))
+ #define XLAT_STR_5 STRINGIFY(IORING_OP_WRITE_FIXED)
+ [IORING_OP_POLL_ADD] = XLAT(IORING_OP_POLL_ADD),
+ #define XLAT_VAL_6 ((unsigned) (IORING_OP_POLL_ADD))
+ #define XLAT_STR_6 STRINGIFY(IORING_OP_POLL_ADD)
+ [IORING_OP_POLL_REMOVE] = XLAT(IORING_OP_POLL_REMOVE),
+ #define XLAT_VAL_7 ((unsigned) (IORING_OP_POLL_REMOVE))
+ #define XLAT_STR_7 STRINGIFY(IORING_OP_POLL_REMOVE)
+ [IORING_OP_SYNC_FILE_RANGE] = XLAT(IORING_OP_SYNC_FILE_RANGE),
+ #define XLAT_VAL_8 ((unsigned) (IORING_OP_SYNC_FILE_RANGE))
+ #define XLAT_STR_8 STRINGIFY(IORING_OP_SYNC_FILE_RANGE)
+ [IORING_OP_SENDMSG] = XLAT(IORING_OP_SENDMSG),
+ #define XLAT_VAL_9 ((unsigned) (IORING_OP_SENDMSG))
+ #define XLAT_STR_9 STRINGIFY(IORING_OP_SENDMSG)
+ [IORING_OP_RECVMSG] = XLAT(IORING_OP_RECVMSG),
+ #define XLAT_VAL_10 ((unsigned) (IORING_OP_RECVMSG))
+ #define XLAT_STR_10 STRINGIFY(IORING_OP_RECVMSG)
+ [IORING_OP_TIMEOUT] = XLAT(IORING_OP_TIMEOUT),
+ #define XLAT_VAL_11 ((unsigned) (IORING_OP_TIMEOUT))
+ #define XLAT_STR_11 STRINGIFY(IORING_OP_TIMEOUT)
+ [IORING_OP_TIMEOUT_REMOVE] = XLAT(IORING_OP_TIMEOUT_REMOVE),
+ #define XLAT_VAL_12 ((unsigned) (IORING_OP_TIMEOUT_REMOVE))
+ #define XLAT_STR_12 STRINGIFY(IORING_OP_TIMEOUT_REMOVE)
+ [IORING_OP_ACCEPT] = XLAT(IORING_OP_ACCEPT),
+ #define XLAT_VAL_13 ((unsigned) (IORING_OP_ACCEPT))
+ #define XLAT_STR_13 STRINGIFY(IORING_OP_ACCEPT)
+ [IORING_OP_ASYNC_CANCEL] = XLAT(IORING_OP_ASYNC_CANCEL),
+ #define XLAT_VAL_14 ((unsigned) (IORING_OP_ASYNC_CANCEL))
+ #define XLAT_STR_14 STRINGIFY(IORING_OP_ASYNC_CANCEL)
+ [IORING_OP_LINK_TIMEOUT] = XLAT(IORING_OP_LINK_TIMEOUT),
+ #define XLAT_VAL_15 ((unsigned) (IORING_OP_LINK_TIMEOUT))
+ #define XLAT_STR_15 STRINGIFY(IORING_OP_LINK_TIMEOUT)
+ [IORING_OP_CONNECT] = XLAT(IORING_OP_CONNECT),
+ #define XLAT_VAL_16 ((unsigned) (IORING_OP_CONNECT))
+ #define XLAT_STR_16 STRINGIFY(IORING_OP_CONNECT)
+ [IORING_OP_FALLOCATE] = XLAT(IORING_OP_FALLOCATE),
+ #define XLAT_VAL_17 ((unsigned) (IORING_OP_FALLOCATE))
+ #define XLAT_STR_17 STRINGIFY(IORING_OP_FALLOCATE)
+ [IORING_OP_OPENAT] = XLAT(IORING_OP_OPENAT),
+ #define XLAT_VAL_18 ((unsigned) (IORING_OP_OPENAT))
+ #define XLAT_STR_18 STRINGIFY(IORING_OP_OPENAT)
+ [IORING_OP_CLOSE] = XLAT(IORING_OP_CLOSE),
+ #define XLAT_VAL_19 ((unsigned) (IORING_OP_CLOSE))
+ #define XLAT_STR_19 STRINGIFY(IORING_OP_CLOSE)
+ [IORING_OP_FILES_UPDATE] = XLAT(IORING_OP_FILES_UPDATE),
+ #define XLAT_VAL_20 ((unsigned) (IORING_OP_FILES_UPDATE))
+ #define XLAT_STR_20 STRINGIFY(IORING_OP_FILES_UPDATE)
+ [IORING_OP_STATX] = XLAT(IORING_OP_STATX),
+ #define XLAT_VAL_21 ((unsigned) (IORING_OP_STATX))
+ #define XLAT_STR_21 STRINGIFY(IORING_OP_STATX)
+ [IORING_OP_READ] = XLAT(IORING_OP_READ),
+ #define XLAT_VAL_22 ((unsigned) (IORING_OP_READ))
+ #define XLAT_STR_22 STRINGIFY(IORING_OP_READ)
+ [IORING_OP_WRITE] = XLAT(IORING_OP_WRITE),
+ #define XLAT_VAL_23 ((unsigned) (IORING_OP_WRITE))
+ #define XLAT_STR_23 STRINGIFY(IORING_OP_WRITE)
+ [IORING_OP_FADVISE] = XLAT(IORING_OP_FADVISE),
+ #define XLAT_VAL_24 ((unsigned) (IORING_OP_FADVISE))
+ #define XLAT_STR_24 STRINGIFY(IORING_OP_FADVISE)
+ [IORING_OP_MADVISE] = XLAT(IORING_OP_MADVISE),
+ #define XLAT_VAL_25 ((unsigned) (IORING_OP_MADVISE))
+ #define XLAT_STR_25 STRINGIFY(IORING_OP_MADVISE)
+ [IORING_OP_SEND] = XLAT(IORING_OP_SEND),
+ #define XLAT_VAL_26 ((unsigned) (IORING_OP_SEND))
+ #define XLAT_STR_26 STRINGIFY(IORING_OP_SEND)
+ [IORING_OP_RECV] = XLAT(IORING_OP_RECV),
+ #define XLAT_VAL_27 ((unsigned) (IORING_OP_RECV))
+ #define XLAT_STR_27 STRINGIFY(IORING_OP_RECV)
+ [IORING_OP_OPENAT2] = XLAT(IORING_OP_OPENAT2),
+ #define XLAT_VAL_28 ((unsigned) (IORING_OP_OPENAT2))
+ #define XLAT_STR_28 STRINGIFY(IORING_OP_OPENAT2)
+ [IORING_OP_EPOLL_CTL] = XLAT(IORING_OP_EPOLL_CTL),
+ #define XLAT_VAL_29 ((unsigned) (IORING_OP_EPOLL_CTL))
+ #define XLAT_STR_29 STRINGIFY(IORING_OP_EPOLL_CTL)
+ [IORING_OP_SPLICE] = XLAT(IORING_OP_SPLICE),
+ #define XLAT_VAL_30 ((unsigned) (IORING_OP_SPLICE))
+ #define XLAT_STR_30 STRINGIFY(IORING_OP_SPLICE)
+ [IORING_OP_PROVIDE_BUFFERS] = XLAT(IORING_OP_PROVIDE_BUFFERS),
+ #define XLAT_VAL_31 ((unsigned) (IORING_OP_PROVIDE_BUFFERS))
+ #define XLAT_STR_31 STRINGIFY(IORING_OP_PROVIDE_BUFFERS)
+ [IORING_OP_REMOVE_BUFFERS] = XLAT(IORING_OP_REMOVE_BUFFERS),
+ #define XLAT_VAL_32 ((unsigned) (IORING_OP_REMOVE_BUFFERS))
+ #define XLAT_STR_32 STRINGIFY(IORING_OP_REMOVE_BUFFERS)
+ [IORING_OP_TEE] = XLAT(IORING_OP_TEE),
+ #define XLAT_VAL_33 ((unsigned) (IORING_OP_TEE))
+ #define XLAT_STR_33 STRINGIFY(IORING_OP_TEE)
+};
+static
+const struct xlat uring_ops[1] = { {
+ .data = uring_ops_xdata,
+ .size = ARRAY_SIZE(uring_ops_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+#  ifdef XLAT_VAL_30
+  | XLAT_VAL_30
+#  endif
+#  ifdef XLAT_VAL_31
+  | XLAT_VAL_31
+#  endif
+#  ifdef XLAT_VAL_32
+  | XLAT_VAL_32
+#  endif
+#  ifdef XLAT_VAL_33
+  | XLAT_VAL_33
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+#  ifdef XLAT_STR_30
+  + sizeof(XLAT_STR_30)
+#  endif
+#  ifdef XLAT_STR_31
+  + sizeof(XLAT_STR_31)
+#  endif
+#  ifdef XLAT_STR_32
+  + sizeof(XLAT_STR_32)
+#  endif
+#  ifdef XLAT_STR_33
+  + sizeof(XLAT_STR_33)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
+#  undef XLAT_STR_30
+#  undef XLAT_VAL_30
+#  undef XLAT_STR_31
+#  undef XLAT_VAL_31
+#  undef XLAT_STR_32
+#  undef XLAT_VAL_32
+#  undef XLAT_STR_33
+#  undef XLAT_VAL_33
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/uring_ops.in b/xlat/uring_ops.in
new file mode 100644 (file)
index 0000000..06a3179
--- /dev/null
@@ -0,0 +1,35 @@
+#value_indexed
+IORING_OP_NOP                  0
+IORING_OP_READV                        1
+IORING_OP_WRITEV               2
+IORING_OP_FSYNC                        3
+IORING_OP_READ_FIXED           4
+IORING_OP_WRITE_FIXED          5
+IORING_OP_POLL_ADD             6
+IORING_OP_POLL_REMOVE          7
+IORING_OP_SYNC_FILE_RANGE      8
+IORING_OP_SENDMSG              9
+IORING_OP_RECVMSG              10
+IORING_OP_TIMEOUT              11
+IORING_OP_TIMEOUT_REMOVE       12
+IORING_OP_ACCEPT               13
+IORING_OP_ASYNC_CANCEL         14
+IORING_OP_LINK_TIMEOUT         15
+IORING_OP_CONNECT              16
+IORING_OP_FALLOCATE            17
+IORING_OP_OPENAT               18
+IORING_OP_CLOSE                        19
+IORING_OP_FILES_UPDATE         20
+IORING_OP_STATX                        21
+IORING_OP_READ                 22
+IORING_OP_WRITE                        23
+IORING_OP_FADVISE              24
+IORING_OP_MADVISE              25
+IORING_OP_SEND                 26
+IORING_OP_RECV                 27
+IORING_OP_OPENAT2              28
+IORING_OP_EPOLL_CTL            29
+IORING_OP_SPLICE               30
+IORING_OP_PROVIDE_BUFFERS      31
+IORING_OP_REMOVE_BUFFERS       32
+IORING_OP_TEE                  33
index 68193e2825b8a706af07c15f3890fabd67d80814..1a1ae1005eefa787fd71827fe15a7ebe20667e2d 100644 (file)
@@ -31,6 +31,55 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define IORING_UNREGISTER_FILES 3U
 #endif
+#if defined(IORING_REGISTER_EVENTFD) || (defined(HAVE_DECL_IORING_REGISTER_EVENTFD) && HAVE_DECL_IORING_REGISTER_EVENTFD)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_REGISTER_EVENTFD) == (4U), "IORING_REGISTER_EVENTFD != 4U");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_REGISTER_EVENTFD 4U
+#endif
+#if defined(IORING_UNREGISTER_EVENTFD) || (defined(HAVE_DECL_IORING_UNREGISTER_EVENTFD) && HAVE_DECL_IORING_UNREGISTER_EVENTFD)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_UNREGISTER_EVENTFD) == (5U), "IORING_UNREGISTER_EVENTFD != 5U");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_UNREGISTER_EVENTFD 5U
+#endif
+#if defined(IORING_REGISTER_FILES_UPDATE) || (defined(HAVE_DECL_IORING_REGISTER_FILES_UPDATE) && HAVE_DECL_IORING_REGISTER_FILES_UPDATE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_REGISTER_FILES_UPDATE) == (6U), "IORING_REGISTER_FILES_UPDATE != 6U");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_REGISTER_FILES_UPDATE 6U
+#endif
+#if defined(IORING_REGISTER_EVENTFD_ASYNC) || (defined(HAVE_DECL_IORING_REGISTER_EVENTFD_ASYNC) && HAVE_DECL_IORING_REGISTER_EVENTFD_ASYNC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_REGISTER_EVENTFD_ASYNC) == (7U), "IORING_REGISTER_EVENTFD_ASYNC != 7U");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_REGISTER_EVENTFD_ASYNC 7U
+#endif
+#if defined(IORING_REGISTER_PROBE) || (defined(HAVE_DECL_IORING_REGISTER_PROBE) && HAVE_DECL_IORING_REGISTER_PROBE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_REGISTER_PROBE) == (8U), "IORING_REGISTER_PROBE != 8U");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_REGISTER_PROBE 8U
+#endif
+#if defined(IORING_REGISTER_PERSONALITY) || (defined(HAVE_DECL_IORING_REGISTER_PERSONALITY) && HAVE_DECL_IORING_REGISTER_PERSONALITY)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_REGISTER_PERSONALITY) == (9U), "IORING_REGISTER_PERSONALITY != 9U");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_REGISTER_PERSONALITY 9U
+#endif
+#if defined(IORING_UNREGISTER_PERSONALITY) || (defined(HAVE_DECL_IORING_UNREGISTER_PERSONALITY) && HAVE_DECL_IORING_UNREGISTER_PERSONALITY)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_UNREGISTER_PERSONALITY) == (10U), "IORING_UNREGISTER_PERSONALITY != 10U");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_UNREGISTER_PERSONALITY 10U
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
@@ -40,15 +89,140 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat uring_register_opcodes[] = {
- XLAT(IORING_REGISTER_BUFFERS),
- XLAT(IORING_UNREGISTER_BUFFERS),
- XLAT(IORING_REGISTER_FILES),
- XLAT(IORING_UNREGISTER_FILES),
- XLAT_END
+static const struct xlat_data uring_register_opcodes_xdata[] = {
+ [IORING_REGISTER_BUFFERS] = XLAT(IORING_REGISTER_BUFFERS),
+ #define XLAT_VAL_0 ((unsigned) (IORING_REGISTER_BUFFERS))
+ #define XLAT_STR_0 STRINGIFY(IORING_REGISTER_BUFFERS)
+ [IORING_UNREGISTER_BUFFERS] = XLAT(IORING_UNREGISTER_BUFFERS),
+ #define XLAT_VAL_1 ((unsigned) (IORING_UNREGISTER_BUFFERS))
+ #define XLAT_STR_1 STRINGIFY(IORING_UNREGISTER_BUFFERS)
+ [IORING_REGISTER_FILES] = XLAT(IORING_REGISTER_FILES),
+ #define XLAT_VAL_2 ((unsigned) (IORING_REGISTER_FILES))
+ #define XLAT_STR_2 STRINGIFY(IORING_REGISTER_FILES)
+ [IORING_UNREGISTER_FILES] = XLAT(IORING_UNREGISTER_FILES),
+ #define XLAT_VAL_3 ((unsigned) (IORING_UNREGISTER_FILES))
+ #define XLAT_STR_3 STRINGIFY(IORING_UNREGISTER_FILES)
+ [IORING_REGISTER_EVENTFD] = XLAT(IORING_REGISTER_EVENTFD),
+ #define XLAT_VAL_4 ((unsigned) (IORING_REGISTER_EVENTFD))
+ #define XLAT_STR_4 STRINGIFY(IORING_REGISTER_EVENTFD)
+ [IORING_UNREGISTER_EVENTFD] = XLAT(IORING_UNREGISTER_EVENTFD),
+ #define XLAT_VAL_5 ((unsigned) (IORING_UNREGISTER_EVENTFD))
+ #define XLAT_STR_5 STRINGIFY(IORING_UNREGISTER_EVENTFD)
+ [IORING_REGISTER_FILES_UPDATE] = XLAT(IORING_REGISTER_FILES_UPDATE),
+ #define XLAT_VAL_6 ((unsigned) (IORING_REGISTER_FILES_UPDATE))
+ #define XLAT_STR_6 STRINGIFY(IORING_REGISTER_FILES_UPDATE)
+ [IORING_REGISTER_EVENTFD_ASYNC] = XLAT(IORING_REGISTER_EVENTFD_ASYNC),
+ #define XLAT_VAL_7 ((unsigned) (IORING_REGISTER_EVENTFD_ASYNC))
+ #define XLAT_STR_7 STRINGIFY(IORING_REGISTER_EVENTFD_ASYNC)
+ [IORING_REGISTER_PROBE] = XLAT(IORING_REGISTER_PROBE),
+ #define XLAT_VAL_8 ((unsigned) (IORING_REGISTER_PROBE))
+ #define XLAT_STR_8 STRINGIFY(IORING_REGISTER_PROBE)
+ [IORING_REGISTER_PERSONALITY] = XLAT(IORING_REGISTER_PERSONALITY),
+ #define XLAT_VAL_9 ((unsigned) (IORING_REGISTER_PERSONALITY))
+ #define XLAT_STR_9 STRINGIFY(IORING_REGISTER_PERSONALITY)
+ [IORING_UNREGISTER_PERSONALITY] = XLAT(IORING_UNREGISTER_PERSONALITY),
+ #define XLAT_VAL_10 ((unsigned) (IORING_UNREGISTER_PERSONALITY))
+ #define XLAT_STR_10 STRINGIFY(IORING_UNREGISTER_PERSONALITY)
 };
+static
+const struct xlat uring_register_opcodes[1] = { {
+ .data = uring_register_opcodes_xdata,
+ .size = ARRAY_SIZE(uring_register_opcodes_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index d98df2e72a9a799d144393543d7387e32f8a4fad..6c9007f986353169e0d681dcdaab83953d215433 100644 (file)
@@ -1,4 +1,12 @@
+#value_indexed
 IORING_REGISTER_BUFFERS                0U
 IORING_UNREGISTER_BUFFERS      1U
 IORING_REGISTER_FILES          2U
 IORING_UNREGISTER_FILES                3U
+IORING_REGISTER_EVENTFD                4U
+IORING_UNREGISTER_EVENTFD      5U
+IORING_REGISTER_FILES_UPDATE   6U
+IORING_REGISTER_EVENTFD_ASYNC  7U
+IORING_REGISTER_PROBE          8U
+IORING_REGISTER_PERSONALITY    9U
+IORING_UNREGISTER_PERSONALITY  10U
diff --git a/xlat/uring_setup_features.h b/xlat/uring_setup_features.h
new file mode 100644 (file)
index 0000000..e2cda8f
--- /dev/null
@@ -0,0 +1,156 @@
+/* Generated by ./xlat/gen.sh from ./xlat/uring_setup_features.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(IORING_FEAT_SINGLE_MMAP) || (defined(HAVE_DECL_IORING_FEAT_SINGLE_MMAP) && HAVE_DECL_IORING_FEAT_SINGLE_MMAP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_FEAT_SINGLE_MMAP) == ((1<<0)), "IORING_FEAT_SINGLE_MMAP != (1<<0)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_FEAT_SINGLE_MMAP (1<<0)
+#endif
+#if defined(IORING_FEAT_NODROP) || (defined(HAVE_DECL_IORING_FEAT_NODROP) && HAVE_DECL_IORING_FEAT_NODROP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_FEAT_NODROP) == ((1<<1)), "IORING_FEAT_NODROP != (1<<1)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_FEAT_NODROP (1<<1)
+#endif
+#if defined(IORING_FEAT_SUBMIT_STABLE) || (defined(HAVE_DECL_IORING_FEAT_SUBMIT_STABLE) && HAVE_DECL_IORING_FEAT_SUBMIT_STABLE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_FEAT_SUBMIT_STABLE) == ((1<<2)), "IORING_FEAT_SUBMIT_STABLE != (1<<2)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_FEAT_SUBMIT_STABLE (1<<2)
+#endif
+#if defined(IORING_FEAT_RW_CUR_POS) || (defined(HAVE_DECL_IORING_FEAT_RW_CUR_POS) && HAVE_DECL_IORING_FEAT_RW_CUR_POS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_FEAT_RW_CUR_POS) == ((1<<3)), "IORING_FEAT_RW_CUR_POS != (1<<3)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_FEAT_RW_CUR_POS (1<<3)
+#endif
+#if defined(IORING_FEAT_CUR_PERSONALITY) || (defined(HAVE_DECL_IORING_FEAT_CUR_PERSONALITY) && HAVE_DECL_IORING_FEAT_CUR_PERSONALITY)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_FEAT_CUR_PERSONALITY) == ((1<<4)), "IORING_FEAT_CUR_PERSONALITY != (1<<4)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_FEAT_CUR_PERSONALITY (1<<4)
+#endif
+#if defined(IORING_FEAT_FAST_POLL) || (defined(HAVE_DECL_IORING_FEAT_FAST_POLL) && HAVE_DECL_IORING_FEAT_FAST_POLL)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_FEAT_FAST_POLL) == ((1<<5)), "IORING_FEAT_FAST_POLL != (1<<5)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_FEAT_FAST_POLL (1<<5)
+#endif
+#if defined(IORING_FEAT_POLL_32BITS) || (defined(HAVE_DECL_IORING_FEAT_POLL_32BITS) && HAVE_DECL_IORING_FEAT_POLL_32BITS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_FEAT_POLL_32BITS) == ((1<<6)), "IORING_FEAT_POLL_32BITS != (1<<6)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_FEAT_POLL_32BITS (1<<6)
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat uring_setup_features in mpers mode
+
+# else
+
+static const struct xlat_data uring_setup_features_xdata[] = {
+ XLAT(IORING_FEAT_SINGLE_MMAP),
+ #define XLAT_VAL_0 ((unsigned) (IORING_FEAT_SINGLE_MMAP))
+ #define XLAT_STR_0 STRINGIFY(IORING_FEAT_SINGLE_MMAP)
+ XLAT(IORING_FEAT_NODROP),
+ #define XLAT_VAL_1 ((unsigned) (IORING_FEAT_NODROP))
+ #define XLAT_STR_1 STRINGIFY(IORING_FEAT_NODROP)
+ XLAT(IORING_FEAT_SUBMIT_STABLE),
+ #define XLAT_VAL_2 ((unsigned) (IORING_FEAT_SUBMIT_STABLE))
+ #define XLAT_STR_2 STRINGIFY(IORING_FEAT_SUBMIT_STABLE)
+ XLAT(IORING_FEAT_RW_CUR_POS),
+ #define XLAT_VAL_3 ((unsigned) (IORING_FEAT_RW_CUR_POS))
+ #define XLAT_STR_3 STRINGIFY(IORING_FEAT_RW_CUR_POS)
+ XLAT(IORING_FEAT_CUR_PERSONALITY),
+ #define XLAT_VAL_4 ((unsigned) (IORING_FEAT_CUR_PERSONALITY))
+ #define XLAT_STR_4 STRINGIFY(IORING_FEAT_CUR_PERSONALITY)
+ XLAT(IORING_FEAT_FAST_POLL),
+ #define XLAT_VAL_5 ((unsigned) (IORING_FEAT_FAST_POLL))
+ #define XLAT_STR_5 STRINGIFY(IORING_FEAT_FAST_POLL)
+ XLAT(IORING_FEAT_POLL_32BITS),
+ #define XLAT_VAL_6 ((unsigned) (IORING_FEAT_POLL_32BITS))
+ #define XLAT_STR_6 STRINGIFY(IORING_FEAT_POLL_32BITS)
+};
+static
+const struct xlat uring_setup_features[1] = { {
+ .data = uring_setup_features_xdata,
+ .size = ARRAY_SIZE(uring_setup_features_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/uring_setup_features.in b/xlat/uring_setup_features.in
new file mode 100644 (file)
index 0000000..29d963c
--- /dev/null
@@ -0,0 +1,7 @@
+IORING_FEAT_SINGLE_MMAP                (1<<0)
+IORING_FEAT_NODROP             (1<<1)
+IORING_FEAT_SUBMIT_STABLE      (1<<2)
+IORING_FEAT_RW_CUR_POS         (1<<3)
+IORING_FEAT_CUR_PERSONALITY    (1<<4)
+IORING_FEAT_FAST_POLL          (1<<5)
+IORING_FEAT_POLL_32BITS                (1<<6)
index f518e97c40856611c1fb8c54f287acf194295f9c..99e185ed3fd7da75f6e91a40a134c02d96568049 100644 (file)
@@ -24,6 +24,27 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define IORING_SETUP_SQ_AFF 4U
 #endif
+#if defined(IORING_SETUP_CQSIZE) || (defined(HAVE_DECL_IORING_SETUP_CQSIZE) && HAVE_DECL_IORING_SETUP_CQSIZE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_SETUP_CQSIZE) == (8U), "IORING_SETUP_CQSIZE != 8U");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_SETUP_CQSIZE 8U
+#endif
+#if defined(IORING_SETUP_CLAMP) || (defined(HAVE_DECL_IORING_SETUP_CLAMP) && HAVE_DECL_IORING_SETUP_CLAMP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_SETUP_CLAMP) == (16U), "IORING_SETUP_CLAMP != 16U");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_SETUP_CLAMP 16U
+#endif
+#if defined(IORING_SETUP_ATTACH_WQ) || (defined(HAVE_DECL_IORING_SETUP_ATTACH_WQ) && HAVE_DECL_IORING_SETUP_ATTACH_WQ)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((IORING_SETUP_ATTACH_WQ) == (32U), "IORING_SETUP_ATTACH_WQ != 32U");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define IORING_SETUP_ATTACH_WQ 32U
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
@@ -33,14 +54,85 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat uring_setup_flags[] = {
+static const struct xlat_data uring_setup_flags_xdata[] = {
  XLAT(IORING_SETUP_IOPOLL),
+ #define XLAT_VAL_0 ((unsigned) (IORING_SETUP_IOPOLL))
+ #define XLAT_STR_0 STRINGIFY(IORING_SETUP_IOPOLL)
  XLAT(IORING_SETUP_SQPOLL),
+ #define XLAT_VAL_1 ((unsigned) (IORING_SETUP_SQPOLL))
+ #define XLAT_STR_1 STRINGIFY(IORING_SETUP_SQPOLL)
  XLAT(IORING_SETUP_SQ_AFF),
- XLAT_END
+ #define XLAT_VAL_2 ((unsigned) (IORING_SETUP_SQ_AFF))
+ #define XLAT_STR_2 STRINGIFY(IORING_SETUP_SQ_AFF)
+ XLAT(IORING_SETUP_CQSIZE),
+ #define XLAT_VAL_3 ((unsigned) (IORING_SETUP_CQSIZE))
+ #define XLAT_STR_3 STRINGIFY(IORING_SETUP_CQSIZE)
+ XLAT(IORING_SETUP_CLAMP),
+ #define XLAT_VAL_4 ((unsigned) (IORING_SETUP_CLAMP))
+ #define XLAT_STR_4 STRINGIFY(IORING_SETUP_CLAMP)
+ XLAT(IORING_SETUP_ATTACH_WQ),
+ #define XLAT_VAL_5 ((unsigned) (IORING_SETUP_ATTACH_WQ))
+ #define XLAT_STR_5 STRINGIFY(IORING_SETUP_ATTACH_WQ)
 };
+static
+const struct xlat uring_setup_flags[1] = { {
+ .data = uring_setup_flags_xdata,
+ .size = ARRAY_SIZE(uring_setup_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index d44c7b1bd687c9a10de99bb9aa39cf91ab0d5a3b..9ad02977fff6983a59e9c2399ca43713b0d3f260 100644 (file)
@@ -1,3 +1,6 @@
 IORING_SETUP_IOPOLL    1U
 IORING_SETUP_SQPOLL    2U
 IORING_SETUP_SQ_AFF    4U
+IORING_SETUP_CQSIZE    8U
+IORING_SETUP_CLAMP     16U
+IORING_SETUP_ATTACH_WQ 32U
index 4b5ace4a3aaab67aefa91dae0bee7383916dd904..689899b25355db90af330ee57fea89cd50b428b0 100644 (file)
@@ -40,15 +40,63 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat usagewho[] = {
+static const struct xlat_data usagewho_xdata[] = {
  XLAT(RUSAGE_SELF),
+ #define XLAT_VAL_0 ((unsigned) (RUSAGE_SELF))
+ #define XLAT_STR_0 STRINGIFY(RUSAGE_SELF)
  XLAT(RUSAGE_CHILDREN),
+ #define XLAT_VAL_1 ((unsigned) (RUSAGE_CHILDREN))
+ #define XLAT_STR_1 STRINGIFY(RUSAGE_CHILDREN)
  XLAT(RUSAGE_BOTH),
+ #define XLAT_VAL_2 ((unsigned) (RUSAGE_BOTH))
+ #define XLAT_STR_2 STRINGIFY(RUSAGE_BOTH)
  XLAT(RUSAGE_THREAD),
- XLAT_END
+ #define XLAT_VAL_3 ((unsigned) (RUSAGE_THREAD))
+ #define XLAT_STR_3 STRINGIFY(RUSAGE_THREAD)
 };
+static
+const struct xlat usagewho[1] = { {
+ .data = usagewho_xdata,
+ .size = ARRAY_SIZE(usagewho_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 6ae72161c9939befb3ebc9721a0df6ec3f2ef9d8..66b4d14186be07d26dc3e1b69087fa4b561853a7 100644 (file)
 #include "gcc_compat.h"
 #include "static_assert.h"
 
-
-#ifndef XLAT_MACROS_ONLY
-
-# ifdef IN_MPERS
-
-extern const struct xlat v4l2_buf_flags[];
-
-# else
-
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat v4l2_buf_flags[] = {
 #if defined(V4L2_BUF_FLAG_MAPPED) || (defined(HAVE_DECL_V4L2_BUF_FLAG_MAPPED) && HAVE_DECL_V4L2_BUF_FLAG_MAPPED)
-  XLAT(V4L2_BUF_FLAG_MAPPED),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_BUF_FLAG_MAPPED) == (0x00000001), "V4L2_BUF_FLAG_MAPPED != 0x00000001");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_BUF_FLAG_MAPPED 0x00000001
 #endif
 #if defined(V4L2_BUF_FLAG_QUEUED) || (defined(HAVE_DECL_V4L2_BUF_FLAG_QUEUED) && HAVE_DECL_V4L2_BUF_FLAG_QUEUED)
-  XLAT(V4L2_BUF_FLAG_QUEUED),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_BUF_FLAG_QUEUED) == (0x00000002), "V4L2_BUF_FLAG_QUEUED != 0x00000002");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_BUF_FLAG_QUEUED 0x00000002
 #endif
 #if defined(V4L2_BUF_FLAG_DONE) || (defined(HAVE_DECL_V4L2_BUF_FLAG_DONE) && HAVE_DECL_V4L2_BUF_FLAG_DONE)
-  XLAT(V4L2_BUF_FLAG_DONE),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_BUF_FLAG_DONE) == (0x00000004), "V4L2_BUF_FLAG_DONE != 0x00000004");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_BUF_FLAG_DONE 0x00000004
 #endif
 #if defined(V4L2_BUF_FLAG_KEYFRAME) || (defined(HAVE_DECL_V4L2_BUF_FLAG_KEYFRAME) && HAVE_DECL_V4L2_BUF_FLAG_KEYFRAME)
-  XLAT(V4L2_BUF_FLAG_KEYFRAME),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_BUF_FLAG_KEYFRAME) == (0x00000008), "V4L2_BUF_FLAG_KEYFRAME != 0x00000008");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_BUF_FLAG_KEYFRAME 0x00000008
 #endif
 #if defined(V4L2_BUF_FLAG_PFRAME) || (defined(HAVE_DECL_V4L2_BUF_FLAG_PFRAME) && HAVE_DECL_V4L2_BUF_FLAG_PFRAME)
-  XLAT(V4L2_BUF_FLAG_PFRAME),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_BUF_FLAG_PFRAME) == (0x00000010), "V4L2_BUF_FLAG_PFRAME != 0x00000010");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_BUF_FLAG_PFRAME 0x00000010
 #endif
 #if defined(V4L2_BUF_FLAG_BFRAME) || (defined(HAVE_DECL_V4L2_BUF_FLAG_BFRAME) && HAVE_DECL_V4L2_BUF_FLAG_BFRAME)
-  XLAT(V4L2_BUF_FLAG_BFRAME),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_BUF_FLAG_BFRAME) == (0x00000020), "V4L2_BUF_FLAG_BFRAME != 0x00000020");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_BUF_FLAG_BFRAME 0x00000020
+#endif
+#if defined(V4L2_BUF_FLAG_ERROR) || (defined(HAVE_DECL_V4L2_BUF_FLAG_ERROR) && HAVE_DECL_V4L2_BUF_FLAG_ERROR)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_BUF_FLAG_ERROR) == (0x00000040), "V4L2_BUF_FLAG_ERROR != 0x00000040");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_BUF_FLAG_ERROR 0x00000040
+#endif
+#if defined(V4L2_BUF_FLAG_IN_REQUEST) || (defined(HAVE_DECL_V4L2_BUF_FLAG_IN_REQUEST) && HAVE_DECL_V4L2_BUF_FLAG_IN_REQUEST)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_BUF_FLAG_IN_REQUEST) == (0x00000080), "V4L2_BUF_FLAG_IN_REQUEST != 0x00000080");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_BUF_FLAG_IN_REQUEST 0x00000080
 #endif
 #if defined(V4L2_BUF_FLAG_TIMECODE) || (defined(HAVE_DECL_V4L2_BUF_FLAG_TIMECODE) && HAVE_DECL_V4L2_BUF_FLAG_TIMECODE)
-  XLAT(V4L2_BUF_FLAG_TIMECODE),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_BUF_FLAG_TIMECODE) == (0x00000100), "V4L2_BUF_FLAG_TIMECODE != 0x00000100");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_BUF_FLAG_TIMECODE 0x00000100
 #endif
 #if defined(V4L2_BUF_FLAG_INPUT) || (defined(HAVE_DECL_V4L2_BUF_FLAG_INPUT) && HAVE_DECL_V4L2_BUF_FLAG_INPUT)
-  XLAT(V4L2_BUF_FLAG_INPUT),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_BUF_FLAG_INPUT) == (0x00000200), "V4L2_BUF_FLAG_INPUT != 0x00000200");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_BUF_FLAG_INPUT 0x00000200
 #endif
 #if defined(V4L2_BUF_FLAG_PREPARED) || (defined(HAVE_DECL_V4L2_BUF_FLAG_PREPARED) && HAVE_DECL_V4L2_BUF_FLAG_PREPARED)
-  XLAT(V4L2_BUF_FLAG_PREPARED),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_BUF_FLAG_PREPARED) == (0x00000400), "V4L2_BUF_FLAG_PREPARED != 0x00000400");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_BUF_FLAG_PREPARED 0x00000400
 #endif
 #if defined(V4L2_BUF_FLAG_NO_CACHE_INVALIDATE) || (defined(HAVE_DECL_V4L2_BUF_FLAG_NO_CACHE_INVALIDATE) && HAVE_DECL_V4L2_BUF_FLAG_NO_CACHE_INVALIDATE)
-  XLAT(V4L2_BUF_FLAG_NO_CACHE_INVALIDATE),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_BUF_FLAG_NO_CACHE_INVALIDATE) == (0x00000800), "V4L2_BUF_FLAG_NO_CACHE_INVALIDATE != 0x00000800");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_BUF_FLAG_NO_CACHE_INVALIDATE 0x00000800
 #endif
 #if defined(V4L2_BUF_FLAG_NO_CACHE_CLEAN) || (defined(HAVE_DECL_V4L2_BUF_FLAG_NO_CACHE_CLEAN) && HAVE_DECL_V4L2_BUF_FLAG_NO_CACHE_CLEAN)
-  XLAT(V4L2_BUF_FLAG_NO_CACHE_CLEAN),
-#endif
-#if defined(V4L2_BUF_FLAG_TIMESTAMP_MASK) || (defined(HAVE_DECL_V4L2_BUF_FLAG_TIMESTAMP_MASK) && HAVE_DECL_V4L2_BUF_FLAG_TIMESTAMP_MASK)
-  XLAT(V4L2_BUF_FLAG_TIMESTAMP_MASK),
-#endif
-#if defined(V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN) || (defined(HAVE_DECL_V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN) && HAVE_DECL_V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN)
-  XLAT(V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN),
-#endif
-#if defined(V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC) || (defined(HAVE_DECL_V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC) && HAVE_DECL_V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC)
-  XLAT(V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC),
-#endif
-#if defined(V4L2_BUF_FLAG_TIMESTAMP_COPY) || (defined(HAVE_DECL_V4L2_BUF_FLAG_TIMESTAMP_COPY) && HAVE_DECL_V4L2_BUF_FLAG_TIMESTAMP_COPY)
-  XLAT(V4L2_BUF_FLAG_TIMESTAMP_COPY),
-#endif
-#if defined(V4L2_BUF_FLAG_TSTAMP_SRC_MASK) || (defined(HAVE_DECL_V4L2_BUF_FLAG_TSTAMP_SRC_MASK) && HAVE_DECL_V4L2_BUF_FLAG_TSTAMP_SRC_MASK)
-  XLAT(V4L2_BUF_FLAG_TSTAMP_SRC_MASK),
-#endif
-#if defined(V4L2_BUF_FLAG_TSTAMP_SRC_EOF) || (defined(HAVE_DECL_V4L2_BUF_FLAG_TSTAMP_SRC_EOF) && HAVE_DECL_V4L2_BUF_FLAG_TSTAMP_SRC_EOF)
-  XLAT(V4L2_BUF_FLAG_TSTAMP_SRC_EOF),
-#endif
-#if defined(V4L2_BUF_FLAG_TSTAMP_SRC_SOE) || (defined(HAVE_DECL_V4L2_BUF_FLAG_TSTAMP_SRC_SOE) && HAVE_DECL_V4L2_BUF_FLAG_TSTAMP_SRC_SOE)
-  XLAT(V4L2_BUF_FLAG_TSTAMP_SRC_SOE),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_BUF_FLAG_NO_CACHE_CLEAN) == (0x00001000), "V4L2_BUF_FLAG_NO_CACHE_CLEAN != 0x00001000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_BUF_FLAG_NO_CACHE_CLEAN 0x00001000
 #endif
 #if defined(V4L2_BUF_FLAG_LAST) || (defined(HAVE_DECL_V4L2_BUF_FLAG_LAST) && HAVE_DECL_V4L2_BUF_FLAG_LAST)
-  XLAT(V4L2_BUF_FLAG_LAST),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_BUF_FLAG_LAST) == (0x00100000), "V4L2_BUF_FLAG_LAST != 0x00100000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_BUF_FLAG_LAST 0x00100000
+#endif
+#if defined(V4L2_BUF_FLAG_REQUEST_FD) || (defined(HAVE_DECL_V4L2_BUF_FLAG_REQUEST_FD) && HAVE_DECL_V4L2_BUF_FLAG_REQUEST_FD)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_BUF_FLAG_REQUEST_FD) == (0x00800000), "V4L2_BUF_FLAG_REQUEST_FD != 0x00800000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_BUF_FLAG_REQUEST_FD 0x00800000
 #endif
- XLAT_END
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+extern const struct xlat v4l2_buf_flags[];
+
+# else
+
+static const struct xlat_data v4l2_buf_flags_xdata[] = {
+ XLAT(V4L2_BUF_FLAG_MAPPED),
+ #define XLAT_VAL_0 ((unsigned) (V4L2_BUF_FLAG_MAPPED))
+ #define XLAT_STR_0 STRINGIFY(V4L2_BUF_FLAG_MAPPED)
+ XLAT(V4L2_BUF_FLAG_QUEUED),
+ #define XLAT_VAL_1 ((unsigned) (V4L2_BUF_FLAG_QUEUED))
+ #define XLAT_STR_1 STRINGIFY(V4L2_BUF_FLAG_QUEUED)
+ XLAT(V4L2_BUF_FLAG_DONE),
+ #define XLAT_VAL_2 ((unsigned) (V4L2_BUF_FLAG_DONE))
+ #define XLAT_STR_2 STRINGIFY(V4L2_BUF_FLAG_DONE)
+ XLAT(V4L2_BUF_FLAG_KEYFRAME),
+ #define XLAT_VAL_3 ((unsigned) (V4L2_BUF_FLAG_KEYFRAME))
+ #define XLAT_STR_3 STRINGIFY(V4L2_BUF_FLAG_KEYFRAME)
+ XLAT(V4L2_BUF_FLAG_PFRAME),
+ #define XLAT_VAL_4 ((unsigned) (V4L2_BUF_FLAG_PFRAME))
+ #define XLAT_STR_4 STRINGIFY(V4L2_BUF_FLAG_PFRAME)
+ XLAT(V4L2_BUF_FLAG_BFRAME),
+ #define XLAT_VAL_5 ((unsigned) (V4L2_BUF_FLAG_BFRAME))
+ #define XLAT_STR_5 STRINGIFY(V4L2_BUF_FLAG_BFRAME)
+ XLAT(V4L2_BUF_FLAG_ERROR),
+ #define XLAT_VAL_6 ((unsigned) (V4L2_BUF_FLAG_ERROR))
+ #define XLAT_STR_6 STRINGIFY(V4L2_BUF_FLAG_ERROR)
+ XLAT(V4L2_BUF_FLAG_IN_REQUEST),
+ #define XLAT_VAL_7 ((unsigned) (V4L2_BUF_FLAG_IN_REQUEST))
+ #define XLAT_STR_7 STRINGIFY(V4L2_BUF_FLAG_IN_REQUEST)
+ XLAT(V4L2_BUF_FLAG_TIMECODE),
+ #define XLAT_VAL_8 ((unsigned) (V4L2_BUF_FLAG_TIMECODE))
+ #define XLAT_STR_8 STRINGIFY(V4L2_BUF_FLAG_TIMECODE)
+ XLAT(V4L2_BUF_FLAG_INPUT),
+ #define XLAT_VAL_9 ((unsigned) (V4L2_BUF_FLAG_INPUT))
+ #define XLAT_STR_9 STRINGIFY(V4L2_BUF_FLAG_INPUT)
+ XLAT(V4L2_BUF_FLAG_PREPARED),
+ #define XLAT_VAL_10 ((unsigned) (V4L2_BUF_FLAG_PREPARED))
+ #define XLAT_STR_10 STRINGIFY(V4L2_BUF_FLAG_PREPARED)
+ XLAT(V4L2_BUF_FLAG_NO_CACHE_INVALIDATE),
+ #define XLAT_VAL_11 ((unsigned) (V4L2_BUF_FLAG_NO_CACHE_INVALIDATE))
+ #define XLAT_STR_11 STRINGIFY(V4L2_BUF_FLAG_NO_CACHE_INVALIDATE)
+ XLAT(V4L2_BUF_FLAG_NO_CACHE_CLEAN),
+ #define XLAT_VAL_12 ((unsigned) (V4L2_BUF_FLAG_NO_CACHE_CLEAN))
+ #define XLAT_STR_12 STRINGIFY(V4L2_BUF_FLAG_NO_CACHE_CLEAN)
+ XLAT(V4L2_BUF_FLAG_LAST),
+ #define XLAT_VAL_13 ((unsigned) (V4L2_BUF_FLAG_LAST))
+ #define XLAT_STR_13 STRINGIFY(V4L2_BUF_FLAG_LAST)
+ XLAT(V4L2_BUF_FLAG_REQUEST_FD),
+ #define XLAT_VAL_14 ((unsigned) (V4L2_BUF_FLAG_REQUEST_FD))
+ #define XLAT_STR_14 STRINGIFY(V4L2_BUF_FLAG_REQUEST_FD)
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat v4l2_buf_flags[1] = { {
+ .data = v4l2_buf_flags_xdata,
+ .size = ARRAY_SIZE(v4l2_buf_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 86ab91d5d4cc02fbd2af9696ea1872c8d7d1ab84..276004271a95003b257b9f8ee3e4e7feeb485d21 100644 (file)
@@ -1,19 +1,15 @@
-V4L2_BUF_FLAG_MAPPED
-V4L2_BUF_FLAG_QUEUED
-V4L2_BUF_FLAG_DONE
-V4L2_BUF_FLAG_KEYFRAME
-V4L2_BUF_FLAG_PFRAME
-V4L2_BUF_FLAG_BFRAME
-V4L2_BUF_FLAG_TIMECODE
-V4L2_BUF_FLAG_INPUT
-V4L2_BUF_FLAG_PREPARED
-V4L2_BUF_FLAG_NO_CACHE_INVALIDATE
-V4L2_BUF_FLAG_NO_CACHE_CLEAN
-V4L2_BUF_FLAG_TIMESTAMP_MASK
-V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN
-V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC
-V4L2_BUF_FLAG_TIMESTAMP_COPY
-V4L2_BUF_FLAG_TSTAMP_SRC_MASK
-V4L2_BUF_FLAG_TSTAMP_SRC_EOF
-V4L2_BUF_FLAG_TSTAMP_SRC_SOE
-V4L2_BUF_FLAG_LAST
+V4L2_BUF_FLAG_MAPPED                   0x00000001
+V4L2_BUF_FLAG_QUEUED                   0x00000002
+V4L2_BUF_FLAG_DONE                     0x00000004
+V4L2_BUF_FLAG_KEYFRAME                 0x00000008
+V4L2_BUF_FLAG_PFRAME                   0x00000010
+V4L2_BUF_FLAG_BFRAME                   0x00000020
+V4L2_BUF_FLAG_ERROR                    0x00000040
+V4L2_BUF_FLAG_IN_REQUEST               0x00000080
+V4L2_BUF_FLAG_TIMECODE                 0x00000100
+V4L2_BUF_FLAG_INPUT                    0x00000200
+V4L2_BUF_FLAG_PREPARED                 0x00000400
+V4L2_BUF_FLAG_NO_CACHE_INVALIDATE      0x00000800
+V4L2_BUF_FLAG_NO_CACHE_CLEAN           0x00001000
+V4L2_BUF_FLAG_LAST                     0x00100000
+V4L2_BUF_FLAG_REQUEST_FD               0x00800000
diff --git a/xlat/v4l2_buf_flags_masks.h b/xlat/v4l2_buf_flags_masks.h
new file mode 100644 (file)
index 0000000..505ab37
--- /dev/null
@@ -0,0 +1,68 @@
+/* Generated by ./xlat/gen.sh from ./xlat/v4l2_buf_flags_masks.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(V4L2_BUF_FLAG_TIMESTAMP_MASK) || (defined(HAVE_DECL_V4L2_BUF_FLAG_TIMESTAMP_MASK) && HAVE_DECL_V4L2_BUF_FLAG_TIMESTAMP_MASK)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_BUF_FLAG_TIMESTAMP_MASK) == (0x0000e000), "V4L2_BUF_FLAG_TIMESTAMP_MASK != 0x0000e000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_BUF_FLAG_TIMESTAMP_MASK 0x0000e000
+#endif
+#if defined(V4L2_BUF_FLAG_TSTAMP_SRC_MASK) || (defined(HAVE_DECL_V4L2_BUF_FLAG_TSTAMP_SRC_MASK) && HAVE_DECL_V4L2_BUF_FLAG_TSTAMP_SRC_MASK)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_BUF_FLAG_TSTAMP_SRC_MASK) == (0x00070000), "V4L2_BUF_FLAG_TSTAMP_SRC_MASK != 0x00070000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_BUF_FLAG_TSTAMP_SRC_MASK 0x00070000
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+extern const struct xlat v4l2_buf_flags_masks[];
+
+# else
+
+static const struct xlat_data v4l2_buf_flags_masks_xdata[] = {
+ XLAT(V4L2_BUF_FLAG_TIMESTAMP_MASK),
+ #define XLAT_VAL_0 ((unsigned) (V4L2_BUF_FLAG_TIMESTAMP_MASK))
+ #define XLAT_STR_0 STRINGIFY(V4L2_BUF_FLAG_TIMESTAMP_MASK)
+ XLAT(V4L2_BUF_FLAG_TSTAMP_SRC_MASK),
+ #define XLAT_VAL_1 ((unsigned) (V4L2_BUF_FLAG_TSTAMP_SRC_MASK))
+ #define XLAT_STR_1 STRINGIFY(V4L2_BUF_FLAG_TSTAMP_SRC_MASK)
+};
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat v4l2_buf_flags_masks[1] = { {
+ .data = v4l2_buf_flags_masks_xdata,
+ .size = ARRAY_SIZE(v4l2_buf_flags_masks_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/v4l2_buf_flags_masks.in b/xlat/v4l2_buf_flags_masks.in
new file mode 100644 (file)
index 0000000..f7f51fa
--- /dev/null
@@ -0,0 +1,2 @@
+V4L2_BUF_FLAG_TIMESTAMP_MASK   0x0000e000
+V4L2_BUF_FLAG_TSTAMP_SRC_MASK  0x00070000
diff --git a/xlat/v4l2_buf_flags_ts_src.h b/xlat/v4l2_buf_flags_ts_src.h
new file mode 100644 (file)
index 0000000..7cd2881
--- /dev/null
@@ -0,0 +1,69 @@
+/* Generated by ./xlat/gen.sh from ./xlat/v4l2_buf_flags_ts_src.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(V4L2_BUF_FLAG_TSTAMP_SRC_EOF) || (defined(HAVE_DECL_V4L2_BUF_FLAG_TSTAMP_SRC_EOF) && HAVE_DECL_V4L2_BUF_FLAG_TSTAMP_SRC_EOF)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_BUF_FLAG_TSTAMP_SRC_EOF) == (0x00000000), "V4L2_BUF_FLAG_TSTAMP_SRC_EOF != 0x00000000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_BUF_FLAG_TSTAMP_SRC_EOF 0x00000000
+#endif
+#if defined(V4L2_BUF_FLAG_TSTAMP_SRC_SOE) || (defined(HAVE_DECL_V4L2_BUF_FLAG_TSTAMP_SRC_SOE) && HAVE_DECL_V4L2_BUF_FLAG_TSTAMP_SRC_SOE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_BUF_FLAG_TSTAMP_SRC_SOE) == (0x00010000), "V4L2_BUF_FLAG_TSTAMP_SRC_SOE != 0x00010000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_BUF_FLAG_TSTAMP_SRC_SOE 0x00010000
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+extern const struct xlat v4l2_buf_flags_ts_src[];
+
+# else
+
+static const struct xlat_data v4l2_buf_flags_ts_src_xdata[] = {
+
+ XLAT(V4L2_BUF_FLAG_TSTAMP_SRC_EOF),
+ #define XLAT_VAL_0 ((unsigned) (V4L2_BUF_FLAG_TSTAMP_SRC_EOF))
+ #define XLAT_STR_0 STRINGIFY(V4L2_BUF_FLAG_TSTAMP_SRC_EOF)
+ XLAT(V4L2_BUF_FLAG_TSTAMP_SRC_SOE),
+ #define XLAT_VAL_1 ((unsigned) (V4L2_BUF_FLAG_TSTAMP_SRC_SOE))
+ #define XLAT_STR_1 STRINGIFY(V4L2_BUF_FLAG_TSTAMP_SRC_SOE)
+};
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat v4l2_buf_flags_ts_src[1] = { {
+ .data = v4l2_buf_flags_ts_src_xdata,
+ .size = ARRAY_SIZE(v4l2_buf_flags_ts_src_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/v4l2_buf_flags_ts_src.in b/xlat/v4l2_buf_flags_ts_src.in
new file mode 100644 (file)
index 0000000..01a1c87
--- /dev/null
@@ -0,0 +1,3 @@
+/* V4L2_BUF_FLAG_TSTAMP_SRC_MASK       0x00070000 */
+V4L2_BUF_FLAG_TSTAMP_SRC_EOF           0x00000000
+V4L2_BUF_FLAG_TSTAMP_SRC_SOE           0x00010000
diff --git a/xlat/v4l2_buf_flags_ts_type.h b/xlat/v4l2_buf_flags_ts_type.h
new file mode 100644 (file)
index 0000000..ef7a35c
--- /dev/null
@@ -0,0 +1,87 @@
+/* Generated by ./xlat/gen.sh from ./xlat/v4l2_buf_flags_ts_type.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN) || (defined(HAVE_DECL_V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN) && HAVE_DECL_V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN) == (0x00000000), "V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN != 0x00000000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN 0x00000000
+#endif
+#if defined(V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC) || (defined(HAVE_DECL_V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC) && HAVE_DECL_V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC) == (0x00002000), "V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC != 0x00002000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC 0x00002000
+#endif
+#if defined(V4L2_BUF_FLAG_TIMESTAMP_COPY) || (defined(HAVE_DECL_V4L2_BUF_FLAG_TIMESTAMP_COPY) && HAVE_DECL_V4L2_BUF_FLAG_TIMESTAMP_COPY)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_BUF_FLAG_TIMESTAMP_COPY) == (0x00004000), "V4L2_BUF_FLAG_TIMESTAMP_COPY != 0x00004000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_BUF_FLAG_TIMESTAMP_COPY 0x00004000
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+extern const struct xlat v4l2_buf_flags_ts_type[];
+
+# else
+
+static const struct xlat_data v4l2_buf_flags_ts_type_xdata[] = {
+
+ XLAT(V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN),
+ #define XLAT_VAL_0 ((unsigned) (V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN))
+ #define XLAT_STR_0 STRINGIFY(V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN)
+ XLAT(V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC),
+ #define XLAT_VAL_1 ((unsigned) (V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC))
+ #define XLAT_STR_1 STRINGIFY(V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC)
+ XLAT(V4L2_BUF_FLAG_TIMESTAMP_COPY),
+ #define XLAT_VAL_2 ((unsigned) (V4L2_BUF_FLAG_TIMESTAMP_COPY))
+ #define XLAT_STR_2 STRINGIFY(V4L2_BUF_FLAG_TIMESTAMP_COPY)
+};
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat v4l2_buf_flags_ts_type[1] = { {
+ .data = v4l2_buf_flags_ts_type_xdata,
+ .size = ARRAY_SIZE(v4l2_buf_flags_ts_type_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/v4l2_buf_flags_ts_type.in b/xlat/v4l2_buf_flags_ts_type.in
new file mode 100644 (file)
index 0000000..b9d2f17
--- /dev/null
@@ -0,0 +1,4 @@
+/* V4L2_BUF_FLAG_TIMESTAMP_MASK                0x0000e000 */
+V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN                0x00000000
+V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC      0x00002000
+V4L2_BUF_FLAG_TIMESTAMP_COPY           0x00004000
index 49927444f416e9915bf4a82954e02965c3b1e02b..997047596e77bbf88eafb0c308f64eb7d4913ef6 100644 (file)
 #include "gcc_compat.h"
 #include "static_assert.h"
 
-
-#ifndef XLAT_MACROS_ONLY
-
-# ifdef IN_MPERS
-
-extern const struct xlat v4l2_buf_types[];
-
-# else
-
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat v4l2_buf_types[] = {
 #if defined(V4L2_BUF_TYPE_VIDEO_CAPTURE) || (defined(HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE) && HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE)
-  XLAT(V4L2_BUF_TYPE_VIDEO_CAPTURE),
-#endif
-#if defined(V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE) || (defined(HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE) && HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE)
-  XLAT(V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_BUF_TYPE_VIDEO_CAPTURE) == (1), "V4L2_BUF_TYPE_VIDEO_CAPTURE != 1");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_BUF_TYPE_VIDEO_CAPTURE 1
 #endif
 #if defined(V4L2_BUF_TYPE_VIDEO_OUTPUT) || (defined(HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT) && HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT)
-  XLAT(V4L2_BUF_TYPE_VIDEO_OUTPUT),
-#endif
-#if defined(V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE) || (defined(HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE) && HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE)
-  XLAT(V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_BUF_TYPE_VIDEO_OUTPUT) == (2), "V4L2_BUF_TYPE_VIDEO_OUTPUT != 2");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_BUF_TYPE_VIDEO_OUTPUT 2
 #endif
 #if defined(V4L2_BUF_TYPE_VIDEO_OVERLAY) || (defined(HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OVERLAY) && HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OVERLAY)
-  XLAT(V4L2_BUF_TYPE_VIDEO_OVERLAY),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_BUF_TYPE_VIDEO_OVERLAY) == (3), "V4L2_BUF_TYPE_VIDEO_OVERLAY != 3");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_BUF_TYPE_VIDEO_OVERLAY 3
 #endif
 #if defined(V4L2_BUF_TYPE_VBI_CAPTURE) || (defined(HAVE_DECL_V4L2_BUF_TYPE_VBI_CAPTURE) && HAVE_DECL_V4L2_BUF_TYPE_VBI_CAPTURE)
-  XLAT(V4L2_BUF_TYPE_VBI_CAPTURE),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_BUF_TYPE_VBI_CAPTURE) == (4), "V4L2_BUF_TYPE_VBI_CAPTURE != 4");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_BUF_TYPE_VBI_CAPTURE 4
 #endif
 #if defined(V4L2_BUF_TYPE_VBI_OUTPUT) || (defined(HAVE_DECL_V4L2_BUF_TYPE_VBI_OUTPUT) && HAVE_DECL_V4L2_BUF_TYPE_VBI_OUTPUT)
-  XLAT(V4L2_BUF_TYPE_VBI_OUTPUT),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_BUF_TYPE_VBI_OUTPUT) == (5), "V4L2_BUF_TYPE_VBI_OUTPUT != 5");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_BUF_TYPE_VBI_OUTPUT 5
 #endif
 #if defined(V4L2_BUF_TYPE_SLICED_VBI_CAPTURE) || (defined(HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE) && HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE)
-  XLAT(V4L2_BUF_TYPE_SLICED_VBI_CAPTURE),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_BUF_TYPE_SLICED_VBI_CAPTURE) == (6), "V4L2_BUF_TYPE_SLICED_VBI_CAPTURE != 6");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_BUF_TYPE_SLICED_VBI_CAPTURE 6
 #endif
 #if defined(V4L2_BUF_TYPE_SLICED_VBI_OUTPUT) || (defined(HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_OUTPUT) && HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_OUTPUT)
-  XLAT(V4L2_BUF_TYPE_SLICED_VBI_OUTPUT),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_BUF_TYPE_SLICED_VBI_OUTPUT) == (7), "V4L2_BUF_TYPE_SLICED_VBI_OUTPUT != 7");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_BUF_TYPE_SLICED_VBI_OUTPUT 7
 #endif
 #if defined(V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY) || (defined(HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY) && HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY)
-  XLAT(V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY) == (8), "V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY != 8");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY 8
+#endif
+#if defined(V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE) || (defined(HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE) && HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE) == (9), "V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE != 9");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE 9
+#endif
+#if defined(V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE) || (defined(HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE) && HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE) == (10), "V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE != 10");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE 10
 #endif
 #if defined(V4L2_BUF_TYPE_SDR_CAPTURE) || (defined(HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE) && HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE)
-  XLAT(V4L2_BUF_TYPE_SDR_CAPTURE),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_BUF_TYPE_SDR_CAPTURE) == (11), "V4L2_BUF_TYPE_SDR_CAPTURE != 11");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_BUF_TYPE_SDR_CAPTURE 11
 #endif
 #if defined(V4L2_BUF_TYPE_SDR_OUTPUT) || (defined(HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT) && HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT)
-  XLAT(V4L2_BUF_TYPE_SDR_OUTPUT),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_BUF_TYPE_SDR_OUTPUT) == (12), "V4L2_BUF_TYPE_SDR_OUTPUT != 12");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_BUF_TYPE_SDR_OUTPUT 12
 #endif
 #if defined(V4L2_BUF_TYPE_META_CAPTURE) || (defined(HAVE_DECL_V4L2_BUF_TYPE_META_CAPTURE) && HAVE_DECL_V4L2_BUF_TYPE_META_CAPTURE)
-  XLAT(V4L2_BUF_TYPE_META_CAPTURE),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_BUF_TYPE_META_CAPTURE) == (13), "V4L2_BUF_TYPE_META_CAPTURE != 13");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_BUF_TYPE_META_CAPTURE 13
 #endif
 #if defined(V4L2_BUF_TYPE_META_OUTPUT) || (defined(HAVE_DECL_V4L2_BUF_TYPE_META_OUTPUT) && HAVE_DECL_V4L2_BUF_TYPE_META_OUTPUT)
-  XLAT(V4L2_BUF_TYPE_META_OUTPUT),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_BUF_TYPE_META_OUTPUT) == (14), "V4L2_BUF_TYPE_META_OUTPUT != 14");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_BUF_TYPE_META_OUTPUT 14
 #endif
- XLAT_END
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+extern const struct xlat v4l2_buf_types[];
+
+# else
+
+static const struct xlat_data v4l2_buf_types_xdata[] = {
+ [V4L2_BUF_TYPE_VIDEO_CAPTURE] = XLAT(V4L2_BUF_TYPE_VIDEO_CAPTURE),
+ #define XLAT_VAL_0 ((unsigned) (V4L2_BUF_TYPE_VIDEO_CAPTURE))
+ #define XLAT_STR_0 STRINGIFY(V4L2_BUF_TYPE_VIDEO_CAPTURE)
+ [V4L2_BUF_TYPE_VIDEO_OUTPUT] = XLAT(V4L2_BUF_TYPE_VIDEO_OUTPUT),
+ #define XLAT_VAL_1 ((unsigned) (V4L2_BUF_TYPE_VIDEO_OUTPUT))
+ #define XLAT_STR_1 STRINGIFY(V4L2_BUF_TYPE_VIDEO_OUTPUT)
+ [V4L2_BUF_TYPE_VIDEO_OVERLAY] = XLAT(V4L2_BUF_TYPE_VIDEO_OVERLAY),
+ #define XLAT_VAL_2 ((unsigned) (V4L2_BUF_TYPE_VIDEO_OVERLAY))
+ #define XLAT_STR_2 STRINGIFY(V4L2_BUF_TYPE_VIDEO_OVERLAY)
+ [V4L2_BUF_TYPE_VBI_CAPTURE] = XLAT(V4L2_BUF_TYPE_VBI_CAPTURE),
+ #define XLAT_VAL_3 ((unsigned) (V4L2_BUF_TYPE_VBI_CAPTURE))
+ #define XLAT_STR_3 STRINGIFY(V4L2_BUF_TYPE_VBI_CAPTURE)
+ [V4L2_BUF_TYPE_VBI_OUTPUT] = XLAT(V4L2_BUF_TYPE_VBI_OUTPUT),
+ #define XLAT_VAL_4 ((unsigned) (V4L2_BUF_TYPE_VBI_OUTPUT))
+ #define XLAT_STR_4 STRINGIFY(V4L2_BUF_TYPE_VBI_OUTPUT)
+ [V4L2_BUF_TYPE_SLICED_VBI_CAPTURE] = XLAT(V4L2_BUF_TYPE_SLICED_VBI_CAPTURE),
+ #define XLAT_VAL_5 ((unsigned) (V4L2_BUF_TYPE_SLICED_VBI_CAPTURE))
+ #define XLAT_STR_5 STRINGIFY(V4L2_BUF_TYPE_SLICED_VBI_CAPTURE)
+ [V4L2_BUF_TYPE_SLICED_VBI_OUTPUT] = XLAT(V4L2_BUF_TYPE_SLICED_VBI_OUTPUT),
+ #define XLAT_VAL_6 ((unsigned) (V4L2_BUF_TYPE_SLICED_VBI_OUTPUT))
+ #define XLAT_STR_6 STRINGIFY(V4L2_BUF_TYPE_SLICED_VBI_OUTPUT)
+ [V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY] = XLAT(V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY),
+ #define XLAT_VAL_7 ((unsigned) (V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY))
+ #define XLAT_STR_7 STRINGIFY(V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY)
+ [V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE] = XLAT(V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE),
+ #define XLAT_VAL_8 ((unsigned) (V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE))
+ #define XLAT_STR_8 STRINGIFY(V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE)
+ [V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE] = XLAT(V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE),
+ #define XLAT_VAL_9 ((unsigned) (V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE))
+ #define XLAT_STR_9 STRINGIFY(V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE)
+ [V4L2_BUF_TYPE_SDR_CAPTURE] = XLAT(V4L2_BUF_TYPE_SDR_CAPTURE),
+ #define XLAT_VAL_10 ((unsigned) (V4L2_BUF_TYPE_SDR_CAPTURE))
+ #define XLAT_STR_10 STRINGIFY(V4L2_BUF_TYPE_SDR_CAPTURE)
+ [V4L2_BUF_TYPE_SDR_OUTPUT] = XLAT(V4L2_BUF_TYPE_SDR_OUTPUT),
+ #define XLAT_VAL_11 ((unsigned) (V4L2_BUF_TYPE_SDR_OUTPUT))
+ #define XLAT_STR_11 STRINGIFY(V4L2_BUF_TYPE_SDR_OUTPUT)
+ [V4L2_BUF_TYPE_META_CAPTURE] = XLAT(V4L2_BUF_TYPE_META_CAPTURE),
+ #define XLAT_VAL_12 ((unsigned) (V4L2_BUF_TYPE_META_CAPTURE))
+ #define XLAT_STR_12 STRINGIFY(V4L2_BUF_TYPE_META_CAPTURE)
+ [V4L2_BUF_TYPE_META_OUTPUT] = XLAT(V4L2_BUF_TYPE_META_OUTPUT),
+ #define XLAT_VAL_13 ((unsigned) (V4L2_BUF_TYPE_META_OUTPUT))
+ #define XLAT_STR_13 STRINGIFY(V4L2_BUF_TYPE_META_OUTPUT)
+
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat v4l2_buf_types[1] = { {
+ .data = v4l2_buf_types_xdata,
+ .size = ARRAY_SIZE(v4l2_buf_types_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 29049a31faab479075bf65f96821af42db76ff5f..a3e77bb29263d3836922ac83477d0b6c76ea0613 100644 (file)
@@ -1,14 +1,21 @@
-V4L2_BUF_TYPE_VIDEO_CAPTURE
-V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
-V4L2_BUF_TYPE_VIDEO_OUTPUT
-V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE
-V4L2_BUF_TYPE_VIDEO_OVERLAY
-V4L2_BUF_TYPE_VBI_CAPTURE
-V4L2_BUF_TYPE_VBI_OUTPUT
-V4L2_BUF_TYPE_SLICED_VBI_CAPTURE
-V4L2_BUF_TYPE_SLICED_VBI_OUTPUT
-V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY
-V4L2_BUF_TYPE_SDR_CAPTURE
-V4L2_BUF_TYPE_SDR_OUTPUT
-V4L2_BUF_TYPE_META_CAPTURE
-V4L2_BUF_TYPE_META_OUTPUT
+#value_indexed
+#enum
+#include <sys/time.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+V4L2_BUF_TYPE_VIDEO_CAPTURE            1
+V4L2_BUF_TYPE_VIDEO_OUTPUT             2
+V4L2_BUF_TYPE_VIDEO_OVERLAY            3
+V4L2_BUF_TYPE_VBI_CAPTURE              4
+V4L2_BUF_TYPE_VBI_OUTPUT               5
+V4L2_BUF_TYPE_SLICED_VBI_CAPTURE       6
+V4L2_BUF_TYPE_SLICED_VBI_OUTPUT                7
+V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY     8
+V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE     9
+V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE      10
+V4L2_BUF_TYPE_SDR_CAPTURE              11
+V4L2_BUF_TYPE_SDR_OUTPUT               12
+V4L2_BUF_TYPE_META_CAPTURE             13
+V4L2_BUF_TYPE_META_OUTPUT              14
+/* V4L2_BUF_TYPE_PRIVATE               0x80 */
diff --git a/xlat/v4l2_buf_types.m4 b/xlat/v4l2_buf_types.m4
new file mode 100644 (file)
index 0000000..44e1f0d
--- /dev/null
@@ -0,0 +1,23 @@
+dnl Generated by ./xlat/gen.sh from ./xlat/v4l2_buf_types.in; do not edit.
+AC_DEFUN([st_CHECK_ENUMS_v4l2_buf_types],[
+AC_CHECK_DECLS(m4_normalize([
+V4L2_BUF_TYPE_VIDEO_CAPTURE,
+V4L2_BUF_TYPE_VIDEO_OUTPUT,
+V4L2_BUF_TYPE_VIDEO_OVERLAY,
+V4L2_BUF_TYPE_VBI_CAPTURE,
+V4L2_BUF_TYPE_VBI_OUTPUT,
+V4L2_BUF_TYPE_SLICED_VBI_CAPTURE,
+V4L2_BUF_TYPE_SLICED_VBI_OUTPUT,
+V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY,
+V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE,
+V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE,
+V4L2_BUF_TYPE_SDR_CAPTURE,
+V4L2_BUF_TYPE_SDR_OUTPUT,
+V4L2_BUF_TYPE_META_CAPTURE,
+V4L2_BUF_TYPE_META_OUTPUT
+]),,, [
+#include <sys/time.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+])])])
index 74e1a6cc5bbf8a6d8e69f8a5c9dba1fb58cbf7a7..fa1f15e9c2414612f1333d917c7b96ce2a8d718b 100644 (file)
@@ -3,6 +3,13 @@
 #include "gcc_compat.h"
 #include "static_assert.h"
 
+#if defined(V4L2_MODE_HIGHQUALITY) || (defined(HAVE_DECL_V4L2_MODE_HIGHQUALITY) && HAVE_DECL_V4L2_MODE_HIGHQUALITY)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_MODE_HIGHQUALITY) == (0x0001), "V4L2_MODE_HIGHQUALITY != 0x0001");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_MODE_HIGHQUALITY 0x0001
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
@@ -12,16 +19,32 @@ extern const struct xlat v4l2_capture_modes[];
 
 # else
 
+static const struct xlat_data v4l2_capture_modes_xdata[] = {
+ XLAT(V4L2_MODE_HIGHQUALITY),
+ #define XLAT_VAL_0 ((unsigned) (V4L2_MODE_HIGHQUALITY))
+ #define XLAT_STR_0 STRINGIFY(V4L2_MODE_HIGHQUALITY)
+};
 #  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
 static
 #  endif
-const struct xlat v4l2_capture_modes[] = {
-#if defined(V4L2_MODE_HIGHQUALITY) || (defined(HAVE_DECL_V4L2_MODE_HIGHQUALITY) && HAVE_DECL_V4L2_MODE_HIGHQUALITY)
-  XLAT(V4L2_MODE_HIGHQUALITY),
-#endif
- XLAT_END
-};
+const struct xlat v4l2_capture_modes[1] = { {
+ .data = v4l2_capture_modes_xdata,
+ .size = ARRAY_SIZE(v4l2_capture_modes_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 473076409b5999e6a35c800125e636270f79bb28..2ef0537424f31c19a51fbf9b21d59a6e06bef1dc 100644 (file)
@@ -1 +1 @@
-V4L2_MODE_HIGHQUALITY
+V4L2_MODE_HIGHQUALITY  0x0001
index fad4dcd63f303c873caea7a50b10c108026d8e02..a366a46f5309e5eec5fdbcc9ddd84548a9f3d369 100644 (file)
 #include "gcc_compat.h"
 #include "static_assert.h"
 
-
-#ifndef XLAT_MACROS_ONLY
-
-# ifdef IN_MPERS
-
-extern const struct xlat v4l2_colorspaces[];
-
-# else
-
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat v4l2_colorspaces[] = {
+#if defined(V4L2_COLORSPACE_DEFAULT) || (defined(HAVE_DECL_V4L2_COLORSPACE_DEFAULT) && HAVE_DECL_V4L2_COLORSPACE_DEFAULT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_COLORSPACE_DEFAULT) == (0), "V4L2_COLORSPACE_DEFAULT != 0");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_COLORSPACE_DEFAULT 0
+#endif
 #if defined(V4L2_COLORSPACE_SMPTE170M) || (defined(HAVE_DECL_V4L2_COLORSPACE_SMPTE170M) && HAVE_DECL_V4L2_COLORSPACE_SMPTE170M)
-  XLAT(V4L2_COLORSPACE_SMPTE170M),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_COLORSPACE_SMPTE170M) == (1), "V4L2_COLORSPACE_SMPTE170M != 1");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_COLORSPACE_SMPTE170M 1
 #endif
 #if defined(V4L2_COLORSPACE_SMPTE240M) || (defined(HAVE_DECL_V4L2_COLORSPACE_SMPTE240M) && HAVE_DECL_V4L2_COLORSPACE_SMPTE240M)
-  XLAT(V4L2_COLORSPACE_SMPTE240M),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_COLORSPACE_SMPTE240M) == (2), "V4L2_COLORSPACE_SMPTE240M != 2");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_COLORSPACE_SMPTE240M 2
 #endif
 #if defined(V4L2_COLORSPACE_REC709) || (defined(HAVE_DECL_V4L2_COLORSPACE_REC709) && HAVE_DECL_V4L2_COLORSPACE_REC709)
-  XLAT(V4L2_COLORSPACE_REC709),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_COLORSPACE_REC709) == (3), "V4L2_COLORSPACE_REC709 != 3");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_COLORSPACE_REC709 3
 #endif
 #if defined(V4L2_COLORSPACE_BT878) || (defined(HAVE_DECL_V4L2_COLORSPACE_BT878) && HAVE_DECL_V4L2_COLORSPACE_BT878)
-  XLAT(V4L2_COLORSPACE_BT878),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_COLORSPACE_BT878) == (4), "V4L2_COLORSPACE_BT878 != 4");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_COLORSPACE_BT878 4
 #endif
 #if defined(V4L2_COLORSPACE_470_SYSTEM_M) || (defined(HAVE_DECL_V4L2_COLORSPACE_470_SYSTEM_M) && HAVE_DECL_V4L2_COLORSPACE_470_SYSTEM_M)
-  XLAT(V4L2_COLORSPACE_470_SYSTEM_M),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_COLORSPACE_470_SYSTEM_M) == (5), "V4L2_COLORSPACE_470_SYSTEM_M != 5");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_COLORSPACE_470_SYSTEM_M 5
 #endif
 #if defined(V4L2_COLORSPACE_470_SYSTEM_BG) || (defined(HAVE_DECL_V4L2_COLORSPACE_470_SYSTEM_BG) && HAVE_DECL_V4L2_COLORSPACE_470_SYSTEM_BG)
-  XLAT(V4L2_COLORSPACE_470_SYSTEM_BG),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_COLORSPACE_470_SYSTEM_BG) == (6), "V4L2_COLORSPACE_470_SYSTEM_BG != 6");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_COLORSPACE_470_SYSTEM_BG 6
 #endif
 #if defined(V4L2_COLORSPACE_JPEG) || (defined(HAVE_DECL_V4L2_COLORSPACE_JPEG) && HAVE_DECL_V4L2_COLORSPACE_JPEG)
-  XLAT(V4L2_COLORSPACE_JPEG),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_COLORSPACE_JPEG) == (7), "V4L2_COLORSPACE_JPEG != 7");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_COLORSPACE_JPEG 7
 #endif
 #if defined(V4L2_COLORSPACE_SRGB) || (defined(HAVE_DECL_V4L2_COLORSPACE_SRGB) && HAVE_DECL_V4L2_COLORSPACE_SRGB)
-  XLAT(V4L2_COLORSPACE_SRGB),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_COLORSPACE_SRGB) == (8), "V4L2_COLORSPACE_SRGB != 8");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_COLORSPACE_SRGB 8
 #endif
-#if defined(V4L2_COLORSPACE_ADOBERGB) || (defined(HAVE_DECL_V4L2_COLORSPACE_ADOBERGB) && HAVE_DECL_V4L2_COLORSPACE_ADOBERGB)
-  XLAT(V4L2_COLORSPACE_ADOBERGB),
+#if defined(V4L2_COLORSPACE_OPRGB) || (defined(HAVE_DECL_V4L2_COLORSPACE_OPRGB) && HAVE_DECL_V4L2_COLORSPACE_OPRGB)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_COLORSPACE_OPRGB) == (9), "V4L2_COLORSPACE_OPRGB != 9");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_COLORSPACE_OPRGB 9
 #endif
 #if defined(V4L2_COLORSPACE_BT2020) || (defined(HAVE_DECL_V4L2_COLORSPACE_BT2020) && HAVE_DECL_V4L2_COLORSPACE_BT2020)
-  XLAT(V4L2_COLORSPACE_BT2020),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_COLORSPACE_BT2020) == (10), "V4L2_COLORSPACE_BT2020 != 10");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_COLORSPACE_BT2020 10
 #endif
 #if defined(V4L2_COLORSPACE_RAW) || (defined(HAVE_DECL_V4L2_COLORSPACE_RAW) && HAVE_DECL_V4L2_COLORSPACE_RAW)
-  XLAT(V4L2_COLORSPACE_RAW),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_COLORSPACE_RAW) == (11), "V4L2_COLORSPACE_RAW != 11");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_COLORSPACE_RAW 11
 #endif
 #if defined(V4L2_COLORSPACE_DCI_P3) || (defined(HAVE_DECL_V4L2_COLORSPACE_DCI_P3) && HAVE_DECL_V4L2_COLORSPACE_DCI_P3)
-  XLAT(V4L2_COLORSPACE_DCI_P3),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_COLORSPACE_DCI_P3) == (12), "V4L2_COLORSPACE_DCI_P3 != 12");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_COLORSPACE_DCI_P3 12
 #endif
- XLAT_END
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+extern const struct xlat v4l2_colorspaces[];
+
+# else
+
+static const struct xlat_data v4l2_colorspaces_xdata[] = {
+ [V4L2_COLORSPACE_DEFAULT] = XLAT(V4L2_COLORSPACE_DEFAULT),
+ #define XLAT_VAL_0 ((unsigned) (V4L2_COLORSPACE_DEFAULT))
+ #define XLAT_STR_0 STRINGIFY(V4L2_COLORSPACE_DEFAULT)
+ [V4L2_COLORSPACE_SMPTE170M] = XLAT(V4L2_COLORSPACE_SMPTE170M),
+ #define XLAT_VAL_1 ((unsigned) (V4L2_COLORSPACE_SMPTE170M))
+ #define XLAT_STR_1 STRINGIFY(V4L2_COLORSPACE_SMPTE170M)
+ [V4L2_COLORSPACE_SMPTE240M] = XLAT(V4L2_COLORSPACE_SMPTE240M),
+ #define XLAT_VAL_2 ((unsigned) (V4L2_COLORSPACE_SMPTE240M))
+ #define XLAT_STR_2 STRINGIFY(V4L2_COLORSPACE_SMPTE240M)
+ [V4L2_COLORSPACE_REC709] = XLAT(V4L2_COLORSPACE_REC709),
+ #define XLAT_VAL_3 ((unsigned) (V4L2_COLORSPACE_REC709))
+ #define XLAT_STR_3 STRINGIFY(V4L2_COLORSPACE_REC709)
+ [V4L2_COLORSPACE_BT878] = XLAT(V4L2_COLORSPACE_BT878),
+ #define XLAT_VAL_4 ((unsigned) (V4L2_COLORSPACE_BT878))
+ #define XLAT_STR_4 STRINGIFY(V4L2_COLORSPACE_BT878)
+ [V4L2_COLORSPACE_470_SYSTEM_M] = XLAT(V4L2_COLORSPACE_470_SYSTEM_M),
+ #define XLAT_VAL_5 ((unsigned) (V4L2_COLORSPACE_470_SYSTEM_M))
+ #define XLAT_STR_5 STRINGIFY(V4L2_COLORSPACE_470_SYSTEM_M)
+ [V4L2_COLORSPACE_470_SYSTEM_BG] = XLAT(V4L2_COLORSPACE_470_SYSTEM_BG),
+ #define XLAT_VAL_6 ((unsigned) (V4L2_COLORSPACE_470_SYSTEM_BG))
+ #define XLAT_STR_6 STRINGIFY(V4L2_COLORSPACE_470_SYSTEM_BG)
+ [V4L2_COLORSPACE_JPEG] = XLAT(V4L2_COLORSPACE_JPEG),
+ #define XLAT_VAL_7 ((unsigned) (V4L2_COLORSPACE_JPEG))
+ #define XLAT_STR_7 STRINGIFY(V4L2_COLORSPACE_JPEG)
+ [V4L2_COLORSPACE_SRGB] = XLAT(V4L2_COLORSPACE_SRGB),
+ #define XLAT_VAL_8 ((unsigned) (V4L2_COLORSPACE_SRGB))
+ #define XLAT_STR_8 STRINGIFY(V4L2_COLORSPACE_SRGB)
+ [V4L2_COLORSPACE_OPRGB] = XLAT(V4L2_COLORSPACE_OPRGB),
+ #define XLAT_VAL_9 ((unsigned) (V4L2_COLORSPACE_OPRGB))
+ #define XLAT_STR_9 STRINGIFY(V4L2_COLORSPACE_OPRGB)
+ [V4L2_COLORSPACE_BT2020] = XLAT(V4L2_COLORSPACE_BT2020),
+ #define XLAT_VAL_10 ((unsigned) (V4L2_COLORSPACE_BT2020))
+ #define XLAT_STR_10 STRINGIFY(V4L2_COLORSPACE_BT2020)
+ [V4L2_COLORSPACE_RAW] = XLAT(V4L2_COLORSPACE_RAW),
+ #define XLAT_VAL_11 ((unsigned) (V4L2_COLORSPACE_RAW))
+ #define XLAT_STR_11 STRINGIFY(V4L2_COLORSPACE_RAW)
+ [V4L2_COLORSPACE_DCI_P3] = XLAT(V4L2_COLORSPACE_DCI_P3),
+ #define XLAT_VAL_12 ((unsigned) (V4L2_COLORSPACE_DCI_P3))
+ #define XLAT_STR_12 STRINGIFY(V4L2_COLORSPACE_DCI_P3)
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat v4l2_colorspaces[1] = { {
+ .data = v4l2_colorspaces_xdata,
+ .size = ARRAY_SIZE(v4l2_colorspaces_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 1d227e491df77cb0a4aad50113e4b70deeae9cbf..4012d2d57cc0b6d6b2f693eab1c4872ca98991f0 100644 (file)
@@ -1,12 +1,19 @@
-V4L2_COLORSPACE_SMPTE170M
-V4L2_COLORSPACE_SMPTE240M
-V4L2_COLORSPACE_REC709
-V4L2_COLORSPACE_BT878
-V4L2_COLORSPACE_470_SYSTEM_M
-V4L2_COLORSPACE_470_SYSTEM_BG
-V4L2_COLORSPACE_JPEG
-V4L2_COLORSPACE_SRGB
-V4L2_COLORSPACE_ADOBERGB
-V4L2_COLORSPACE_BT2020
-V4L2_COLORSPACE_RAW
-V4L2_COLORSPACE_DCI_P3
+#value_indexed
+#enum
+#include <sys/time.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+V4L2_COLORSPACE_DEFAULT                0
+V4L2_COLORSPACE_SMPTE170M      1
+V4L2_COLORSPACE_SMPTE240M      2
+V4L2_COLORSPACE_REC709         3
+V4L2_COLORSPACE_BT878          4
+V4L2_COLORSPACE_470_SYSTEM_M   5
+V4L2_COLORSPACE_470_SYSTEM_BG  6
+V4L2_COLORSPACE_JPEG           7
+V4L2_COLORSPACE_SRGB           8
+V4L2_COLORSPACE_OPRGB          9
+V4L2_COLORSPACE_BT2020         10
+V4L2_COLORSPACE_RAW            11
+V4L2_COLORSPACE_DCI_P3         12
diff --git a/xlat/v4l2_colorspaces.m4 b/xlat/v4l2_colorspaces.m4
new file mode 100644 (file)
index 0000000..0076b06
--- /dev/null
@@ -0,0 +1,22 @@
+dnl Generated by ./xlat/gen.sh from ./xlat/v4l2_colorspaces.in; do not edit.
+AC_DEFUN([st_CHECK_ENUMS_v4l2_colorspaces],[
+AC_CHECK_DECLS(m4_normalize([
+V4L2_COLORSPACE_DEFAULT,
+V4L2_COLORSPACE_SMPTE170M,
+V4L2_COLORSPACE_SMPTE240M,
+V4L2_COLORSPACE_REC709,
+V4L2_COLORSPACE_BT878,
+V4L2_COLORSPACE_470_SYSTEM_M,
+V4L2_COLORSPACE_470_SYSTEM_BG,
+V4L2_COLORSPACE_JPEG,
+V4L2_COLORSPACE_SRGB,
+V4L2_COLORSPACE_OPRGB,
+V4L2_COLORSPACE_BT2020,
+V4L2_COLORSPACE_RAW,
+V4L2_COLORSPACE_DCI_P3
+]),,, [
+#include <sys/time.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+])])])
index c1bb21de61323c8db185c918b3aa5aafd3d5226b..59bc56f0a5f0c04f4ce4a41cec9ca3bd177fcfab 100644 (file)
@@ -96,26 +96,153 @@ extern const struct xlat v4l2_control_classes[];
 
 # else
 
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat v4l2_control_classes[] = {
-
+static const struct xlat_data v4l2_control_classes_xdata[] = {
  XLAT(V4L2_CTRL_CLASS_USER),
+ #define XLAT_VAL_0 ((unsigned) (V4L2_CTRL_CLASS_USER))
+ #define XLAT_STR_0 STRINGIFY(V4L2_CTRL_CLASS_USER)
  XLAT(V4L2_CTRL_CLASS_MPEG),
+ #define XLAT_VAL_1 ((unsigned) (V4L2_CTRL_CLASS_MPEG))
+ #define XLAT_STR_1 STRINGIFY(V4L2_CTRL_CLASS_MPEG)
  XLAT(V4L2_CTRL_CLASS_CAMERA),
+ #define XLAT_VAL_2 ((unsigned) (V4L2_CTRL_CLASS_CAMERA))
+ #define XLAT_STR_2 STRINGIFY(V4L2_CTRL_CLASS_CAMERA)
  XLAT(V4L2_CTRL_CLASS_FM_TX),
+ #define XLAT_VAL_3 ((unsigned) (V4L2_CTRL_CLASS_FM_TX))
+ #define XLAT_STR_3 STRINGIFY(V4L2_CTRL_CLASS_FM_TX)
  XLAT(V4L2_CTRL_CLASS_FLASH),
+ #define XLAT_VAL_4 ((unsigned) (V4L2_CTRL_CLASS_FLASH))
+ #define XLAT_STR_4 STRINGIFY(V4L2_CTRL_CLASS_FLASH)
  XLAT(V4L2_CTRL_CLASS_JPEG),
+ #define XLAT_VAL_5 ((unsigned) (V4L2_CTRL_CLASS_JPEG))
+ #define XLAT_STR_5 STRINGIFY(V4L2_CTRL_CLASS_JPEG)
  XLAT(V4L2_CTRL_CLASS_IMAGE_SOURCE),
+ #define XLAT_VAL_6 ((unsigned) (V4L2_CTRL_CLASS_IMAGE_SOURCE))
+ #define XLAT_STR_6 STRINGIFY(V4L2_CTRL_CLASS_IMAGE_SOURCE)
  XLAT(V4L2_CTRL_CLASS_IMAGE_PROC),
+ #define XLAT_VAL_7 ((unsigned) (V4L2_CTRL_CLASS_IMAGE_PROC))
+ #define XLAT_STR_7 STRINGIFY(V4L2_CTRL_CLASS_IMAGE_PROC)
  XLAT(V4L2_CTRL_CLASS_DV),
+ #define XLAT_VAL_8 ((unsigned) (V4L2_CTRL_CLASS_DV))
+ #define XLAT_STR_8 STRINGIFY(V4L2_CTRL_CLASS_DV)
  XLAT(V4L2_CTRL_CLASS_FM_RX),
+ #define XLAT_VAL_9 ((unsigned) (V4L2_CTRL_CLASS_FM_RX))
+ #define XLAT_STR_9 STRINGIFY(V4L2_CTRL_CLASS_FM_RX)
  XLAT(V4L2_CTRL_CLASS_RF_TUNER),
+ #define XLAT_VAL_10 ((unsigned) (V4L2_CTRL_CLASS_RF_TUNER))
+ #define XLAT_STR_10 STRINGIFY(V4L2_CTRL_CLASS_RF_TUNER)
  XLAT(V4L2_CTRL_CLASS_DETECT),
- XLAT_END
+ #define XLAT_VAL_11 ((unsigned) (V4L2_CTRL_CLASS_DETECT))
+ #define XLAT_STR_11 STRINGIFY(V4L2_CTRL_CLASS_DETECT)
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat v4l2_control_classes[1] = { {
+ .data = v4l2_control_classes_xdata,
+ .size = ARRAY_SIZE(v4l2_control_classes_xdata),
+ .type = XT_SORTED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index adbf88e2cff230ab3d3609f9f9ee09f63108aca5..cc86e3b2fe29527bcf7de0a92d7fa61d798189af 100644 (file)
@@ -1,4 +1,4 @@
-/* sort -k2,2 */
+#sorted sort -k2,2
 V4L2_CTRL_CLASS_USER           0x00980000      /* Old-style 'user' controls */
 V4L2_CTRL_CLASS_MPEG           0x00990000      /* MPEG-compression controls */
 V4L2_CTRL_CLASS_CAMERA         0x009a0000      /* Camera class controls */
index 00c6157a3c0b7b4ed119769296edc1db0c67a972..0e3227fb3b9dab048e283ff32371398c0805ae1e 100644 (file)
 #include "gcc_compat.h"
 #include "static_assert.h"
 
-
-#ifndef XLAT_MACROS_ONLY
-
-# ifdef IN_MPERS
-
-extern const struct xlat v4l2_control_flags[];
-
-# else
-
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat v4l2_control_flags[] = {
 #if defined(V4L2_CTRL_FLAG_DISABLED) || (defined(HAVE_DECL_V4L2_CTRL_FLAG_DISABLED) && HAVE_DECL_V4L2_CTRL_FLAG_DISABLED)
-  XLAT(V4L2_CTRL_FLAG_DISABLED),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CTRL_FLAG_DISABLED) == (0x0001), "V4L2_CTRL_FLAG_DISABLED != 0x0001");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CTRL_FLAG_DISABLED 0x0001
 #endif
 #if defined(V4L2_CTRL_FLAG_GRABBED) || (defined(HAVE_DECL_V4L2_CTRL_FLAG_GRABBED) && HAVE_DECL_V4L2_CTRL_FLAG_GRABBED)
-  XLAT(V4L2_CTRL_FLAG_GRABBED),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CTRL_FLAG_GRABBED) == (0x0002), "V4L2_CTRL_FLAG_GRABBED != 0x0002");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CTRL_FLAG_GRABBED 0x0002
 #endif
 #if defined(V4L2_CTRL_FLAG_READ_ONLY) || (defined(HAVE_DECL_V4L2_CTRL_FLAG_READ_ONLY) && HAVE_DECL_V4L2_CTRL_FLAG_READ_ONLY)
-  XLAT(V4L2_CTRL_FLAG_READ_ONLY),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CTRL_FLAG_READ_ONLY) == (0x0004), "V4L2_CTRL_FLAG_READ_ONLY != 0x0004");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CTRL_FLAG_READ_ONLY 0x0004
 #endif
 #if defined(V4L2_CTRL_FLAG_UPDATE) || (defined(HAVE_DECL_V4L2_CTRL_FLAG_UPDATE) && HAVE_DECL_V4L2_CTRL_FLAG_UPDATE)
-  XLAT(V4L2_CTRL_FLAG_UPDATE),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CTRL_FLAG_UPDATE) == (0x0008), "V4L2_CTRL_FLAG_UPDATE != 0x0008");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CTRL_FLAG_UPDATE 0x0008
 #endif
 #if defined(V4L2_CTRL_FLAG_INACTIVE) || (defined(HAVE_DECL_V4L2_CTRL_FLAG_INACTIVE) && HAVE_DECL_V4L2_CTRL_FLAG_INACTIVE)
-  XLAT(V4L2_CTRL_FLAG_INACTIVE),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CTRL_FLAG_INACTIVE) == (0x0010), "V4L2_CTRL_FLAG_INACTIVE != 0x0010");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CTRL_FLAG_INACTIVE 0x0010
 #endif
 #if defined(V4L2_CTRL_FLAG_SLIDER) || (defined(HAVE_DECL_V4L2_CTRL_FLAG_SLIDER) && HAVE_DECL_V4L2_CTRL_FLAG_SLIDER)
-  XLAT(V4L2_CTRL_FLAG_SLIDER),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CTRL_FLAG_SLIDER) == (0x0020), "V4L2_CTRL_FLAG_SLIDER != 0x0020");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CTRL_FLAG_SLIDER 0x0020
 #endif
 #if defined(V4L2_CTRL_FLAG_WRITE_ONLY) || (defined(HAVE_DECL_V4L2_CTRL_FLAG_WRITE_ONLY) && HAVE_DECL_V4L2_CTRL_FLAG_WRITE_ONLY)
-  XLAT(V4L2_CTRL_FLAG_WRITE_ONLY),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CTRL_FLAG_WRITE_ONLY) == (0x0040), "V4L2_CTRL_FLAG_WRITE_ONLY != 0x0040");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CTRL_FLAG_WRITE_ONLY 0x0040
 #endif
 #if defined(V4L2_CTRL_FLAG_VOLATILE) || (defined(HAVE_DECL_V4L2_CTRL_FLAG_VOLATILE) && HAVE_DECL_V4L2_CTRL_FLAG_VOLATILE)
-  XLAT(V4L2_CTRL_FLAG_VOLATILE),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CTRL_FLAG_VOLATILE) == (0x0080), "V4L2_CTRL_FLAG_VOLATILE != 0x0080");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CTRL_FLAG_VOLATILE 0x0080
 #endif
 #if defined(V4L2_CTRL_FLAG_HAS_PAYLOAD) || (defined(HAVE_DECL_V4L2_CTRL_FLAG_HAS_PAYLOAD) && HAVE_DECL_V4L2_CTRL_FLAG_HAS_PAYLOAD)
-  XLAT(V4L2_CTRL_FLAG_HAS_PAYLOAD),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CTRL_FLAG_HAS_PAYLOAD) == (0x0100), "V4L2_CTRL_FLAG_HAS_PAYLOAD != 0x0100");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CTRL_FLAG_HAS_PAYLOAD 0x0100
 #endif
 #if defined(V4L2_CTRL_FLAG_EXECUTE_ON_WRITE) || (defined(HAVE_DECL_V4L2_CTRL_FLAG_EXECUTE_ON_WRITE) && HAVE_DECL_V4L2_CTRL_FLAG_EXECUTE_ON_WRITE)
-  XLAT(V4L2_CTRL_FLAG_EXECUTE_ON_WRITE),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CTRL_FLAG_EXECUTE_ON_WRITE) == (0x0200), "V4L2_CTRL_FLAG_EXECUTE_ON_WRITE != 0x0200");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CTRL_FLAG_EXECUTE_ON_WRITE 0x0200
 #endif
 #if defined(V4L2_CTRL_FLAG_MODIFY_LAYOUT) || (defined(HAVE_DECL_V4L2_CTRL_FLAG_MODIFY_LAYOUT) && HAVE_DECL_V4L2_CTRL_FLAG_MODIFY_LAYOUT)
-  XLAT(V4L2_CTRL_FLAG_MODIFY_LAYOUT),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CTRL_FLAG_MODIFY_LAYOUT) == (0x0400), "V4L2_CTRL_FLAG_MODIFY_LAYOUT != 0x0400");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CTRL_FLAG_MODIFY_LAYOUT 0x0400
 #endif
- XLAT_END
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+extern const struct xlat v4l2_control_flags[];
+
+# else
+
+static const struct xlat_data v4l2_control_flags_xdata[] = {
+ XLAT(V4L2_CTRL_FLAG_DISABLED),
+ #define XLAT_VAL_0 ((unsigned) (V4L2_CTRL_FLAG_DISABLED))
+ #define XLAT_STR_0 STRINGIFY(V4L2_CTRL_FLAG_DISABLED)
+ XLAT(V4L2_CTRL_FLAG_GRABBED),
+ #define XLAT_VAL_1 ((unsigned) (V4L2_CTRL_FLAG_GRABBED))
+ #define XLAT_STR_1 STRINGIFY(V4L2_CTRL_FLAG_GRABBED)
+ XLAT(V4L2_CTRL_FLAG_READ_ONLY),
+ #define XLAT_VAL_2 ((unsigned) (V4L2_CTRL_FLAG_READ_ONLY))
+ #define XLAT_STR_2 STRINGIFY(V4L2_CTRL_FLAG_READ_ONLY)
+ XLAT(V4L2_CTRL_FLAG_UPDATE),
+ #define XLAT_VAL_3 ((unsigned) (V4L2_CTRL_FLAG_UPDATE))
+ #define XLAT_STR_3 STRINGIFY(V4L2_CTRL_FLAG_UPDATE)
+ XLAT(V4L2_CTRL_FLAG_INACTIVE),
+ #define XLAT_VAL_4 ((unsigned) (V4L2_CTRL_FLAG_INACTIVE))
+ #define XLAT_STR_4 STRINGIFY(V4L2_CTRL_FLAG_INACTIVE)
+ XLAT(V4L2_CTRL_FLAG_SLIDER),
+ #define XLAT_VAL_5 ((unsigned) (V4L2_CTRL_FLAG_SLIDER))
+ #define XLAT_STR_5 STRINGIFY(V4L2_CTRL_FLAG_SLIDER)
+ XLAT(V4L2_CTRL_FLAG_WRITE_ONLY),
+ #define XLAT_VAL_6 ((unsigned) (V4L2_CTRL_FLAG_WRITE_ONLY))
+ #define XLAT_STR_6 STRINGIFY(V4L2_CTRL_FLAG_WRITE_ONLY)
+ XLAT(V4L2_CTRL_FLAG_VOLATILE),
+ #define XLAT_VAL_7 ((unsigned) (V4L2_CTRL_FLAG_VOLATILE))
+ #define XLAT_STR_7 STRINGIFY(V4L2_CTRL_FLAG_VOLATILE)
+ XLAT(V4L2_CTRL_FLAG_HAS_PAYLOAD),
+ #define XLAT_VAL_8 ((unsigned) (V4L2_CTRL_FLAG_HAS_PAYLOAD))
+ #define XLAT_STR_8 STRINGIFY(V4L2_CTRL_FLAG_HAS_PAYLOAD)
+ XLAT(V4L2_CTRL_FLAG_EXECUTE_ON_WRITE),
+ #define XLAT_VAL_9 ((unsigned) (V4L2_CTRL_FLAG_EXECUTE_ON_WRITE))
+ #define XLAT_STR_9 STRINGIFY(V4L2_CTRL_FLAG_EXECUTE_ON_WRITE)
+ XLAT(V4L2_CTRL_FLAG_MODIFY_LAYOUT),
+ #define XLAT_VAL_10 ((unsigned) (V4L2_CTRL_FLAG_MODIFY_LAYOUT))
+ #define XLAT_STR_10 STRINGIFY(V4L2_CTRL_FLAG_MODIFY_LAYOUT)
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat v4l2_control_flags[1] = { {
+ .data = v4l2_control_flags_xdata,
+ .size = ARRAY_SIZE(v4l2_control_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 154d7b0ed75823e0f81556ff7411f658931c627c..025b2b1baebe32a756f3b85930504f5d905338b9 100644 (file)
@@ -1,11 +1,11 @@
-V4L2_CTRL_FLAG_DISABLED
-V4L2_CTRL_FLAG_GRABBED
-V4L2_CTRL_FLAG_READ_ONLY
-V4L2_CTRL_FLAG_UPDATE
-V4L2_CTRL_FLAG_INACTIVE
-V4L2_CTRL_FLAG_SLIDER
-V4L2_CTRL_FLAG_WRITE_ONLY
-V4L2_CTRL_FLAG_VOLATILE
-V4L2_CTRL_FLAG_HAS_PAYLOAD
-V4L2_CTRL_FLAG_EXECUTE_ON_WRITE
-V4L2_CTRL_FLAG_MODIFY_LAYOUT
+V4L2_CTRL_FLAG_DISABLED                0x0001
+V4L2_CTRL_FLAG_GRABBED         0x0002
+V4L2_CTRL_FLAG_READ_ONLY       0x0004
+V4L2_CTRL_FLAG_UPDATE          0x0008
+V4L2_CTRL_FLAG_INACTIVE                0x0010
+V4L2_CTRL_FLAG_SLIDER          0x0020
+V4L2_CTRL_FLAG_WRITE_ONLY      0x0040
+V4L2_CTRL_FLAG_VOLATILE                0x0080
+V4L2_CTRL_FLAG_HAS_PAYLOAD     0x0100
+V4L2_CTRL_FLAG_EXECUTE_ON_WRITE        0x0200
+V4L2_CTRL_FLAG_MODIFY_LAYOUT   0x0400
index 7f492b379f13f2c4c4712a941305712af5943ea9..533af7b2f8d5bfbf0dc78e700ee94d761d9bbece 100644 (file)
@@ -84,6 +84,13 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define V4L2_CID_USER_IMX_BASE (V4L2_CID_BASE | 0x10b0)
 #endif
+#if defined(V4L2_CID_USER_ATMEL_ISC_BASE) || (defined(HAVE_DECL_V4L2_CID_USER_ATMEL_ISC_BASE) && HAVE_DECL_V4L2_CID_USER_ATMEL_ISC_BASE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CID_USER_ATMEL_ISC_BASE) == ((V4L2_CID_BASE | 0x10c0)), "V4L2_CID_USER_ATMEL_ISC_BASE != (V4L2_CID_BASE | 0x10c0)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CID_USER_ATMEL_ISC_BASE (V4L2_CID_BASE | 0x10c0)
+#endif
 #if defined(V4L2_CID_MPEG_BASE) || (defined(HAVE_DECL_V4L2_CID_MPEG_BASE) && HAVE_DECL_V4L2_CID_MPEG_BASE)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
 static_assert((V4L2_CID_MPEG_BASE) == ((V4L2_CTRL_CLASS_MPEG | 0x900)), "V4L2_CID_MPEG_BASE != (V4L2_CTRL_CLASS_MPEG | 0x900)");
@@ -184,20 +191,37 @@ extern const struct xlat v4l2_control_id_bases[];
 
 # else
 
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat v4l2_control_id_bases[] = {
+static const struct xlat_data v4l2_control_id_bases_xdata[] = {
  XLAT(V4L2_CID_BASE),
+ #define XLAT_VAL_0 ((unsigned) (V4L2_CID_BASE))
+ #define XLAT_STR_0 STRINGIFY(V4L2_CID_BASE)
  XLAT(V4L2_CID_USER_MEYE_BASE),
+ #define XLAT_VAL_1 ((unsigned) (V4L2_CID_USER_MEYE_BASE))
+ #define XLAT_STR_1 STRINGIFY(V4L2_CID_USER_MEYE_BASE)
  XLAT(V4L2_CID_USER_BTTV_BASE),
+ #define XLAT_VAL_2 ((unsigned) (V4L2_CID_USER_BTTV_BASE))
+ #define XLAT_STR_2 STRINGIFY(V4L2_CID_USER_BTTV_BASE)
  XLAT(V4L2_CID_USER_S2255_BASE),
+ #define XLAT_VAL_3 ((unsigned) (V4L2_CID_USER_S2255_BASE))
+ #define XLAT_STR_3 STRINGIFY(V4L2_CID_USER_S2255_BASE)
  XLAT(V4L2_CID_USER_SI476X_BASE),
+ #define XLAT_VAL_4 ((unsigned) (V4L2_CID_USER_SI476X_BASE))
+ #define XLAT_STR_4 STRINGIFY(V4L2_CID_USER_SI476X_BASE)
  XLAT(V4L2_CID_USER_TI_VPE_BASE),
+ #define XLAT_VAL_5 ((unsigned) (V4L2_CID_USER_TI_VPE_BASE))
+ #define XLAT_STR_5 STRINGIFY(V4L2_CID_USER_TI_VPE_BASE)
  XLAT(V4L2_CID_USER_SAA7134_BASE),
+ #define XLAT_VAL_6 ((unsigned) (V4L2_CID_USER_SAA7134_BASE))
+ #define XLAT_STR_6 STRINGIFY(V4L2_CID_USER_SAA7134_BASE)
  XLAT(V4L2_CID_USER_ADV7180_BASE),
+ #define XLAT_VAL_7 ((unsigned) (V4L2_CID_USER_ADV7180_BASE))
+ #define XLAT_STR_7 STRINGIFY(V4L2_CID_USER_ADV7180_BASE)
  XLAT(V4L2_CID_USER_TC358743_BASE),
+ #define XLAT_VAL_8 ((unsigned) (V4L2_CID_USER_TC358743_BASE))
+ #define XLAT_STR_8 STRINGIFY(V4L2_CID_USER_TC358743_BASE)
  XLAT(V4L2_CID_USER_MAX217X_BASE),
+ #define XLAT_VAL_9 ((unsigned) (V4L2_CID_USER_MAX217X_BASE))
+ #define XLAT_STR_9 STRINGIFY(V4L2_CID_USER_MAX217X_BASE)
 #ifndef STRACE_WORKAROUND_FOR_V4L2_CID_USER_IMX_BASE
 # define STRACE_WORKAROUND_FOR_V4L2_CID_USER_IMX_BASE
 /*
@@ -214,22 +238,264 @@ const struct xlat v4l2_control_id_bases[] = {
 # undef V4L2_CID_USER_IMX_BASE
 #endif
  XLAT(V4L2_CID_USER_IMX_BASE),
+ #define XLAT_VAL_10 ((unsigned) (V4L2_CID_USER_IMX_BASE))
+ #define XLAT_STR_10 STRINGIFY(V4L2_CID_USER_IMX_BASE)
+ XLAT(V4L2_CID_USER_ATMEL_ISC_BASE),
+ #define XLAT_VAL_11 ((unsigned) (V4L2_CID_USER_ATMEL_ISC_BASE))
+ #define XLAT_STR_11 STRINGIFY(V4L2_CID_USER_ATMEL_ISC_BASE)
  XLAT(V4L2_CID_MPEG_BASE),
+ #define XLAT_VAL_12 ((unsigned) (V4L2_CID_MPEG_BASE))
+ #define XLAT_STR_12 STRINGIFY(V4L2_CID_MPEG_BASE)
  XLAT(V4L2_CID_MPEG_CX2341X_BASE),
+ #define XLAT_VAL_13 ((unsigned) (V4L2_CID_MPEG_CX2341X_BASE))
+ #define XLAT_STR_13 STRINGIFY(V4L2_CID_MPEG_CX2341X_BASE)
  XLAT(V4L2_CID_MPEG_MFC51_BASE),
+ #define XLAT_VAL_14 ((unsigned) (V4L2_CID_MPEG_MFC51_BASE))
+ #define XLAT_STR_14 STRINGIFY(V4L2_CID_MPEG_MFC51_BASE)
  XLAT(V4L2_CID_CAMERA_CLASS_BASE),
+ #define XLAT_VAL_15 ((unsigned) (V4L2_CID_CAMERA_CLASS_BASE))
+ #define XLAT_STR_15 STRINGIFY(V4L2_CID_CAMERA_CLASS_BASE)
  XLAT(V4L2_CID_FM_TX_CLASS_BASE),
+ #define XLAT_VAL_16 ((unsigned) (V4L2_CID_FM_TX_CLASS_BASE))
+ #define XLAT_STR_16 STRINGIFY(V4L2_CID_FM_TX_CLASS_BASE)
  XLAT(V4L2_CID_FLASH_CLASS_BASE),
+ #define XLAT_VAL_17 ((unsigned) (V4L2_CID_FLASH_CLASS_BASE))
+ #define XLAT_STR_17 STRINGIFY(V4L2_CID_FLASH_CLASS_BASE)
  XLAT(V4L2_CID_JPEG_CLASS_BASE),
+ #define XLAT_VAL_18 ((unsigned) (V4L2_CID_JPEG_CLASS_BASE))
+ #define XLAT_STR_18 STRINGIFY(V4L2_CID_JPEG_CLASS_BASE)
  XLAT(V4L2_CID_IMAGE_SOURCE_CLASS_BASE),
+ #define XLAT_VAL_19 ((unsigned) (V4L2_CID_IMAGE_SOURCE_CLASS_BASE))
+ #define XLAT_STR_19 STRINGIFY(V4L2_CID_IMAGE_SOURCE_CLASS_BASE)
  XLAT(V4L2_CID_IMAGE_PROC_CLASS_BASE),
+ #define XLAT_VAL_20 ((unsigned) (V4L2_CID_IMAGE_PROC_CLASS_BASE))
+ #define XLAT_STR_20 STRINGIFY(V4L2_CID_IMAGE_PROC_CLASS_BASE)
  XLAT(V4L2_CID_DV_CLASS_BASE),
+ #define XLAT_VAL_21 ((unsigned) (V4L2_CID_DV_CLASS_BASE))
+ #define XLAT_STR_21 STRINGIFY(V4L2_CID_DV_CLASS_BASE)
  XLAT(V4L2_CID_FM_RX_CLASS_BASE),
+ #define XLAT_VAL_22 ((unsigned) (V4L2_CID_FM_RX_CLASS_BASE))
+ #define XLAT_STR_22 STRINGIFY(V4L2_CID_FM_RX_CLASS_BASE)
  XLAT(V4L2_CID_RF_TUNER_CLASS_BASE),
+ #define XLAT_VAL_23 ((unsigned) (V4L2_CID_RF_TUNER_CLASS_BASE))
+ #define XLAT_STR_23 STRINGIFY(V4L2_CID_RF_TUNER_CLASS_BASE)
  XLAT(V4L2_CID_DETECT_CLASS_BASE),
- XLAT_END
+ #define XLAT_VAL_24 ((unsigned) (V4L2_CID_DETECT_CLASS_BASE))
+ #define XLAT_STR_24 STRINGIFY(V4L2_CID_DETECT_CLASS_BASE)
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat v4l2_control_id_bases[1] = { {
+ .data = v4l2_control_id_bases_xdata,
+ .size = ARRAY_SIZE(v4l2_control_id_bases_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index a0f9ccae6acefec959c20202293ede0b00848b4d..e2e68073a2c196843f5ee74b5365dbdaa21b9fee 100644 (file)
@@ -24,6 +24,7 @@ V4L2_CID_USER_MAX217X_BASE            (V4L2_CID_BASE | 0x1090)
 # undef V4L2_CID_USER_IMX_BASE
 #endif
 V4L2_CID_USER_IMX_BASE                 (V4L2_CID_BASE | 0x10b0)
+V4L2_CID_USER_ATMEL_ISC_BASE           (V4L2_CID_BASE | 0x10c0)
 V4L2_CID_MPEG_BASE                     (V4L2_CTRL_CLASS_MPEG | 0x900)
 V4L2_CID_MPEG_CX2341X_BASE             (V4L2_CTRL_CLASS_MPEG | 0x1000)
 V4L2_CID_MPEG_MFC51_BASE               (V4L2_CTRL_CLASS_MPEG | 0x1100)
index 7962edf1f11801f4a115bf09c1d0bdd4a544b22f..f5cf7346a8b454d99e8c0c3d09fcea77dd6cdf03 100644 (file)
@@ -675,6 +675,20 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define V4L2_CID_MPEG_VIDEO_MPEG2_QUANTIZATION (V4L2_CID_MPEG_BASE+251)
 #endif
+#if defined(V4L2_CID_FWHT_I_FRAME_QP) || (defined(HAVE_DECL_V4L2_CID_FWHT_I_FRAME_QP) && HAVE_DECL_V4L2_CID_FWHT_I_FRAME_QP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CID_FWHT_I_FRAME_QP) == ((V4L2_CID_MPEG_BASE+290)), "V4L2_CID_FWHT_I_FRAME_QP != (V4L2_CID_MPEG_BASE+290)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CID_FWHT_I_FRAME_QP (V4L2_CID_MPEG_BASE+290)
+#endif
+#if defined(V4L2_CID_FWHT_P_FRAME_QP) || (defined(HAVE_DECL_V4L2_CID_FWHT_P_FRAME_QP) && HAVE_DECL_V4L2_CID_FWHT_P_FRAME_QP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CID_FWHT_P_FRAME_QP) == ((V4L2_CID_MPEG_BASE+291)), "V4L2_CID_FWHT_P_FRAME_QP != (V4L2_CID_MPEG_BASE+291)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CID_FWHT_P_FRAME_QP (V4L2_CID_MPEG_BASE+291)
+#endif
 #if defined(V4L2_CID_MPEG_VIDEO_H263_I_FRAME_QP) || (defined(HAVE_DECL_V4L2_CID_MPEG_VIDEO_H263_I_FRAME_QP) && HAVE_DECL_V4L2_CID_MPEG_VIDEO_H263_I_FRAME_QP)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
 static_assert((V4L2_CID_MPEG_VIDEO_H263_I_FRAME_QP) == ((V4L2_CID_MPEG_BASE+300)), "V4L2_CID_MPEG_VIDEO_H263_I_FRAME_QP != (V4L2_CID_MPEG_BASE+300)");
@@ -955,6 +969,34 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define V4L2_CID_MPEG_VIDEO_H264_CHROMA_QP_INDEX_OFFSET (V4L2_CID_MPEG_BASE+384)
 #endif
+#if defined(V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MIN_QP) || (defined(HAVE_DECL_V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MIN_QP) && HAVE_DECL_V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MIN_QP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MIN_QP) == ((V4L2_CID_MPEG_BASE+385)), "V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MIN_QP != (V4L2_CID_MPEG_BASE+385)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MIN_QP (V4L2_CID_MPEG_BASE+385)
+#endif
+#if defined(V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MAX_QP) || (defined(HAVE_DECL_V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MAX_QP) && HAVE_DECL_V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MAX_QP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MAX_QP) == ((V4L2_CID_MPEG_BASE+386)), "V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MAX_QP != (V4L2_CID_MPEG_BASE+386)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MAX_QP (V4L2_CID_MPEG_BASE+386)
+#endif
+#if defined(V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MIN_QP) || (defined(HAVE_DECL_V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MIN_QP) && HAVE_DECL_V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MIN_QP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MIN_QP) == ((V4L2_CID_MPEG_BASE+387)), "V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MIN_QP != (V4L2_CID_MPEG_BASE+387)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MIN_QP (V4L2_CID_MPEG_BASE+387)
+#endif
+#if defined(V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MAX_QP) || (defined(HAVE_DECL_V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MAX_QP) && HAVE_DECL_V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MAX_QP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MAX_QP) == ((V4L2_CID_MPEG_BASE+388)), "V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MAX_QP != (V4L2_CID_MPEG_BASE+388)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MAX_QP (V4L2_CID_MPEG_BASE+388)
+#endif
 #if defined(V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP) || (defined(HAVE_DECL_V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP) && HAVE_DECL_V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
 static_assert((V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP) == ((V4L2_CID_MPEG_BASE+400)), "V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP != (V4L2_CID_MPEG_BASE+400)");
@@ -2152,6 +2194,13 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define V4L2_CID_TEST_PATTERN_GREENB (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 7)
 #endif
+#if defined(V4L2_CID_UNIT_CELL_SIZE) || (defined(HAVE_DECL_V4L2_CID_UNIT_CELL_SIZE) && HAVE_DECL_V4L2_CID_UNIT_CELL_SIZE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CID_UNIT_CELL_SIZE) == ((V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 8)), "V4L2_CID_UNIT_CELL_SIZE != (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 8)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CID_UNIT_CELL_SIZE (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 8)
+#endif
 #if defined(V4L2_CID_LINK_FREQ) || (defined(HAVE_DECL_V4L2_CID_LINK_FREQ) && HAVE_DECL_V4L2_CID_LINK_FREQ)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
 static_assert((V4L2_CID_LINK_FREQ) == ((V4L2_CID_IMAGE_PROC_CLASS_BASE + 1)), "V4L2_CID_LINK_FREQ != (V4L2_CID_IMAGE_PROC_CLASS_BASE + 1)");
@@ -2378,367 +2427,3832 @@ extern const struct xlat v4l2_control_ids[];
 
 # else
 
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat v4l2_control_ids[] = {
+static const struct xlat_data v4l2_control_ids_xdata[] = {
 
  XLAT(V4L2_CID_BRIGHTNESS),
+ #define XLAT_VAL_0 ((unsigned) (V4L2_CID_BRIGHTNESS))
+ #define XLAT_STR_0 STRINGIFY(V4L2_CID_BRIGHTNESS)
  XLAT(V4L2_CID_CONTRAST),
+ #define XLAT_VAL_1 ((unsigned) (V4L2_CID_CONTRAST))
+ #define XLAT_STR_1 STRINGIFY(V4L2_CID_CONTRAST)
  XLAT(V4L2_CID_SATURATION),
+ #define XLAT_VAL_2 ((unsigned) (V4L2_CID_SATURATION))
+ #define XLAT_STR_2 STRINGIFY(V4L2_CID_SATURATION)
  XLAT(V4L2_CID_HUE),
+ #define XLAT_VAL_3 ((unsigned) (V4L2_CID_HUE))
+ #define XLAT_STR_3 STRINGIFY(V4L2_CID_HUE)
  XLAT(V4L2_CID_AUDIO_VOLUME),
+ #define XLAT_VAL_4 ((unsigned) (V4L2_CID_AUDIO_VOLUME))
+ #define XLAT_STR_4 STRINGIFY(V4L2_CID_AUDIO_VOLUME)
  XLAT(V4L2_CID_AUDIO_BALANCE),
+ #define XLAT_VAL_5 ((unsigned) (V4L2_CID_AUDIO_BALANCE))
+ #define XLAT_STR_5 STRINGIFY(V4L2_CID_AUDIO_BALANCE)
  XLAT(V4L2_CID_AUDIO_BASS),
+ #define XLAT_VAL_6 ((unsigned) (V4L2_CID_AUDIO_BASS))
+ #define XLAT_STR_6 STRINGIFY(V4L2_CID_AUDIO_BASS)
  XLAT(V4L2_CID_AUDIO_TREBLE),
+ #define XLAT_VAL_7 ((unsigned) (V4L2_CID_AUDIO_TREBLE))
+ #define XLAT_STR_7 STRINGIFY(V4L2_CID_AUDIO_TREBLE)
  XLAT(V4L2_CID_AUDIO_MUTE),
+ #define XLAT_VAL_8 ((unsigned) (V4L2_CID_AUDIO_MUTE))
+ #define XLAT_STR_8 STRINGIFY(V4L2_CID_AUDIO_MUTE)
  XLAT(V4L2_CID_AUDIO_LOUDNESS),
+ #define XLAT_VAL_9 ((unsigned) (V4L2_CID_AUDIO_LOUDNESS))
+ #define XLAT_STR_9 STRINGIFY(V4L2_CID_AUDIO_LOUDNESS)
  XLAT(V4L2_CID_BLACK_LEVEL),
+ #define XLAT_VAL_10 ((unsigned) (V4L2_CID_BLACK_LEVEL))
+ #define XLAT_STR_10 STRINGIFY(V4L2_CID_BLACK_LEVEL)
  XLAT(V4L2_CID_AUTO_WHITE_BALANCE),
+ #define XLAT_VAL_11 ((unsigned) (V4L2_CID_AUTO_WHITE_BALANCE))
+ #define XLAT_STR_11 STRINGIFY(V4L2_CID_AUTO_WHITE_BALANCE)
  XLAT(V4L2_CID_DO_WHITE_BALANCE),
+ #define XLAT_VAL_12 ((unsigned) (V4L2_CID_DO_WHITE_BALANCE))
+ #define XLAT_STR_12 STRINGIFY(V4L2_CID_DO_WHITE_BALANCE)
  XLAT(V4L2_CID_RED_BALANCE),
+ #define XLAT_VAL_13 ((unsigned) (V4L2_CID_RED_BALANCE))
+ #define XLAT_STR_13 STRINGIFY(V4L2_CID_RED_BALANCE)
  XLAT(V4L2_CID_BLUE_BALANCE),
+ #define XLAT_VAL_14 ((unsigned) (V4L2_CID_BLUE_BALANCE))
+ #define XLAT_STR_14 STRINGIFY(V4L2_CID_BLUE_BALANCE)
  XLAT(V4L2_CID_GAMMA),
+ #define XLAT_VAL_15 ((unsigned) (V4L2_CID_GAMMA))
+ #define XLAT_STR_15 STRINGIFY(V4L2_CID_GAMMA)
  XLAT(V4L2_CID_EXPOSURE),
+ #define XLAT_VAL_16 ((unsigned) (V4L2_CID_EXPOSURE))
+ #define XLAT_STR_16 STRINGIFY(V4L2_CID_EXPOSURE)
  XLAT(V4L2_CID_AUTOGAIN),
+ #define XLAT_VAL_17 ((unsigned) (V4L2_CID_AUTOGAIN))
+ #define XLAT_STR_17 STRINGIFY(V4L2_CID_AUTOGAIN)
  XLAT(V4L2_CID_GAIN),
+ #define XLAT_VAL_18 ((unsigned) (V4L2_CID_GAIN))
+ #define XLAT_STR_18 STRINGIFY(V4L2_CID_GAIN)
  XLAT(V4L2_CID_HFLIP),
+ #define XLAT_VAL_19 ((unsigned) (V4L2_CID_HFLIP))
+ #define XLAT_STR_19 STRINGIFY(V4L2_CID_HFLIP)
  XLAT(V4L2_CID_VFLIP),
+ #define XLAT_VAL_20 ((unsigned) (V4L2_CID_VFLIP))
+ #define XLAT_STR_20 STRINGIFY(V4L2_CID_VFLIP)
  XLAT(V4L2_CID_HCENTER),
+ #define XLAT_VAL_21 ((unsigned) (V4L2_CID_HCENTER))
+ #define XLAT_STR_21 STRINGIFY(V4L2_CID_HCENTER)
  XLAT(V4L2_CID_VCENTER),
+ #define XLAT_VAL_22 ((unsigned) (V4L2_CID_VCENTER))
+ #define XLAT_STR_22 STRINGIFY(V4L2_CID_VCENTER)
  XLAT(V4L2_CID_POWER_LINE_FREQUENCY),
+ #define XLAT_VAL_23 ((unsigned) (V4L2_CID_POWER_LINE_FREQUENCY))
+ #define XLAT_STR_23 STRINGIFY(V4L2_CID_POWER_LINE_FREQUENCY)
  XLAT(V4L2_CID_HUE_AUTO),
+ #define XLAT_VAL_24 ((unsigned) (V4L2_CID_HUE_AUTO))
+ #define XLAT_STR_24 STRINGIFY(V4L2_CID_HUE_AUTO)
  XLAT(V4L2_CID_WHITE_BALANCE_TEMPERATURE),
+ #define XLAT_VAL_25 ((unsigned) (V4L2_CID_WHITE_BALANCE_TEMPERATURE))
+ #define XLAT_STR_25 STRINGIFY(V4L2_CID_WHITE_BALANCE_TEMPERATURE)
  XLAT(V4L2_CID_SHARPNESS),
+ #define XLAT_VAL_26 ((unsigned) (V4L2_CID_SHARPNESS))
+ #define XLAT_STR_26 STRINGIFY(V4L2_CID_SHARPNESS)
  XLAT(V4L2_CID_BACKLIGHT_COMPENSATION),
+ #define XLAT_VAL_27 ((unsigned) (V4L2_CID_BACKLIGHT_COMPENSATION))
+ #define XLAT_STR_27 STRINGIFY(V4L2_CID_BACKLIGHT_COMPENSATION)
  XLAT(V4L2_CID_CHROMA_AGC),
+ #define XLAT_VAL_28 ((unsigned) (V4L2_CID_CHROMA_AGC))
+ #define XLAT_STR_28 STRINGIFY(V4L2_CID_CHROMA_AGC)
  XLAT(V4L2_CID_COLOR_KILLER),
+ #define XLAT_VAL_29 ((unsigned) (V4L2_CID_COLOR_KILLER))
+ #define XLAT_STR_29 STRINGIFY(V4L2_CID_COLOR_KILLER)
  XLAT(V4L2_CID_COLORFX),
+ #define XLAT_VAL_30 ((unsigned) (V4L2_CID_COLORFX))
+ #define XLAT_STR_30 STRINGIFY(V4L2_CID_COLORFX)
  XLAT(V4L2_CID_AUTOBRIGHTNESS),
+ #define XLAT_VAL_31 ((unsigned) (V4L2_CID_AUTOBRIGHTNESS))
+ #define XLAT_STR_31 STRINGIFY(V4L2_CID_AUTOBRIGHTNESS)
  XLAT(V4L2_CID_BAND_STOP_FILTER),
+ #define XLAT_VAL_32 ((unsigned) (V4L2_CID_BAND_STOP_FILTER))
+ #define XLAT_STR_32 STRINGIFY(V4L2_CID_BAND_STOP_FILTER)
  XLAT(V4L2_CID_ROTATE),
+ #define XLAT_VAL_33 ((unsigned) (V4L2_CID_ROTATE))
+ #define XLAT_STR_33 STRINGIFY(V4L2_CID_ROTATE)
  XLAT(V4L2_CID_BG_COLOR),
+ #define XLAT_VAL_34 ((unsigned) (V4L2_CID_BG_COLOR))
+ #define XLAT_STR_34 STRINGIFY(V4L2_CID_BG_COLOR)
  XLAT(V4L2_CID_CHROMA_GAIN),
+ #define XLAT_VAL_35 ((unsigned) (V4L2_CID_CHROMA_GAIN))
+ #define XLAT_STR_35 STRINGIFY(V4L2_CID_CHROMA_GAIN)
  XLAT(V4L2_CID_ILLUMINATORS_1),
+ #define XLAT_VAL_36 ((unsigned) (V4L2_CID_ILLUMINATORS_1))
+ #define XLAT_STR_36 STRINGIFY(V4L2_CID_ILLUMINATORS_1)
  XLAT(V4L2_CID_ILLUMINATORS_2),
+ #define XLAT_VAL_37 ((unsigned) (V4L2_CID_ILLUMINATORS_2))
+ #define XLAT_STR_37 STRINGIFY(V4L2_CID_ILLUMINATORS_2)
  XLAT(V4L2_CID_MIN_BUFFERS_FOR_CAPTURE),
+ #define XLAT_VAL_38 ((unsigned) (V4L2_CID_MIN_BUFFERS_FOR_CAPTURE))
+ #define XLAT_STR_38 STRINGIFY(V4L2_CID_MIN_BUFFERS_FOR_CAPTURE)
  XLAT(V4L2_CID_MIN_BUFFERS_FOR_OUTPUT),
+ #define XLAT_VAL_39 ((unsigned) (V4L2_CID_MIN_BUFFERS_FOR_OUTPUT))
+ #define XLAT_STR_39 STRINGIFY(V4L2_CID_MIN_BUFFERS_FOR_OUTPUT)
  XLAT(V4L2_CID_ALPHA_COMPONENT),
+ #define XLAT_VAL_40 ((unsigned) (V4L2_CID_ALPHA_COMPONENT))
+ #define XLAT_STR_40 STRINGIFY(V4L2_CID_ALPHA_COMPONENT)
  XLAT(V4L2_CID_COLORFX_CBCR),
+ #define XLAT_VAL_41 ((unsigned) (V4L2_CID_COLORFX_CBCR))
+ #define XLAT_STR_41 STRINGIFY(V4L2_CID_COLORFX_CBCR)
 
 
  XLAT(V4L2_CID_MPEG_STREAM_TYPE),
+ #define XLAT_VAL_42 ((unsigned) (V4L2_CID_MPEG_STREAM_TYPE))
+ #define XLAT_STR_42 STRINGIFY(V4L2_CID_MPEG_STREAM_TYPE)
  XLAT(V4L2_CID_MPEG_STREAM_PID_PMT),
+ #define XLAT_VAL_43 ((unsigned) (V4L2_CID_MPEG_STREAM_PID_PMT))
+ #define XLAT_STR_43 STRINGIFY(V4L2_CID_MPEG_STREAM_PID_PMT)
  XLAT(V4L2_CID_MPEG_STREAM_PID_AUDIO),
+ #define XLAT_VAL_44 ((unsigned) (V4L2_CID_MPEG_STREAM_PID_AUDIO))
+ #define XLAT_STR_44 STRINGIFY(V4L2_CID_MPEG_STREAM_PID_AUDIO)
  XLAT(V4L2_CID_MPEG_STREAM_PID_VIDEO),
+ #define XLAT_VAL_45 ((unsigned) (V4L2_CID_MPEG_STREAM_PID_VIDEO))
+ #define XLAT_STR_45 STRINGIFY(V4L2_CID_MPEG_STREAM_PID_VIDEO)
  XLAT(V4L2_CID_MPEG_STREAM_PID_PCR),
+ #define XLAT_VAL_46 ((unsigned) (V4L2_CID_MPEG_STREAM_PID_PCR))
+ #define XLAT_STR_46 STRINGIFY(V4L2_CID_MPEG_STREAM_PID_PCR)
  XLAT(V4L2_CID_MPEG_STREAM_PES_ID_AUDIO),
+ #define XLAT_VAL_47 ((unsigned) (V4L2_CID_MPEG_STREAM_PES_ID_AUDIO))
+ #define XLAT_STR_47 STRINGIFY(V4L2_CID_MPEG_STREAM_PES_ID_AUDIO)
  XLAT(V4L2_CID_MPEG_STREAM_PES_ID_VIDEO),
+ #define XLAT_VAL_48 ((unsigned) (V4L2_CID_MPEG_STREAM_PES_ID_VIDEO))
+ #define XLAT_STR_48 STRINGIFY(V4L2_CID_MPEG_STREAM_PES_ID_VIDEO)
  XLAT(V4L2_CID_MPEG_STREAM_VBI_FMT),
+ #define XLAT_VAL_49 ((unsigned) (V4L2_CID_MPEG_STREAM_VBI_FMT))
+ #define XLAT_STR_49 STRINGIFY(V4L2_CID_MPEG_STREAM_VBI_FMT)
 
  XLAT(V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ),
+ #define XLAT_VAL_50 ((unsigned) (V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ))
+ #define XLAT_STR_50 STRINGIFY(V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ)
  XLAT(V4L2_CID_MPEG_AUDIO_ENCODING),
+ #define XLAT_VAL_51 ((unsigned) (V4L2_CID_MPEG_AUDIO_ENCODING))
+ #define XLAT_STR_51 STRINGIFY(V4L2_CID_MPEG_AUDIO_ENCODING)
  XLAT(V4L2_CID_MPEG_AUDIO_L1_BITRATE),
+ #define XLAT_VAL_52 ((unsigned) (V4L2_CID_MPEG_AUDIO_L1_BITRATE))
+ #define XLAT_STR_52 STRINGIFY(V4L2_CID_MPEG_AUDIO_L1_BITRATE)
  XLAT(V4L2_CID_MPEG_AUDIO_L2_BITRATE),
+ #define XLAT_VAL_53 ((unsigned) (V4L2_CID_MPEG_AUDIO_L2_BITRATE))
+ #define XLAT_STR_53 STRINGIFY(V4L2_CID_MPEG_AUDIO_L2_BITRATE)
  XLAT(V4L2_CID_MPEG_AUDIO_L3_BITRATE),
+ #define XLAT_VAL_54 ((unsigned) (V4L2_CID_MPEG_AUDIO_L3_BITRATE))
+ #define XLAT_STR_54 STRINGIFY(V4L2_CID_MPEG_AUDIO_L3_BITRATE)
  XLAT(V4L2_CID_MPEG_AUDIO_MODE),
+ #define XLAT_VAL_55 ((unsigned) (V4L2_CID_MPEG_AUDIO_MODE))
+ #define XLAT_STR_55 STRINGIFY(V4L2_CID_MPEG_AUDIO_MODE)
  XLAT(V4L2_CID_MPEG_AUDIO_MODE_EXTENSION),
+ #define XLAT_VAL_56 ((unsigned) (V4L2_CID_MPEG_AUDIO_MODE_EXTENSION))
+ #define XLAT_STR_56 STRINGIFY(V4L2_CID_MPEG_AUDIO_MODE_EXTENSION)
  XLAT(V4L2_CID_MPEG_AUDIO_EMPHASIS),
+ #define XLAT_VAL_57 ((unsigned) (V4L2_CID_MPEG_AUDIO_EMPHASIS))
+ #define XLAT_STR_57 STRINGIFY(V4L2_CID_MPEG_AUDIO_EMPHASIS)
  XLAT(V4L2_CID_MPEG_AUDIO_CRC),
+ #define XLAT_VAL_58 ((unsigned) (V4L2_CID_MPEG_AUDIO_CRC))
+ #define XLAT_STR_58 STRINGIFY(V4L2_CID_MPEG_AUDIO_CRC)
  XLAT(V4L2_CID_MPEG_AUDIO_MUTE),
+ #define XLAT_VAL_59 ((unsigned) (V4L2_CID_MPEG_AUDIO_MUTE))
+ #define XLAT_STR_59 STRINGIFY(V4L2_CID_MPEG_AUDIO_MUTE)
  XLAT(V4L2_CID_MPEG_AUDIO_AAC_BITRATE),
+ #define XLAT_VAL_60 ((unsigned) (V4L2_CID_MPEG_AUDIO_AAC_BITRATE))
+ #define XLAT_STR_60 STRINGIFY(V4L2_CID_MPEG_AUDIO_AAC_BITRATE)
  XLAT(V4L2_CID_MPEG_AUDIO_AC3_BITRATE),
+ #define XLAT_VAL_61 ((unsigned) (V4L2_CID_MPEG_AUDIO_AC3_BITRATE))
+ #define XLAT_STR_61 STRINGIFY(V4L2_CID_MPEG_AUDIO_AC3_BITRATE)
  XLAT(V4L2_CID_MPEG_AUDIO_DEC_PLAYBACK),
+ #define XLAT_VAL_62 ((unsigned) (V4L2_CID_MPEG_AUDIO_DEC_PLAYBACK))
+ #define XLAT_STR_62 STRINGIFY(V4L2_CID_MPEG_AUDIO_DEC_PLAYBACK)
  XLAT(V4L2_CID_MPEG_AUDIO_DEC_MULTILINGUAL_PLAYBACK),
+ #define XLAT_VAL_63 ((unsigned) (V4L2_CID_MPEG_AUDIO_DEC_MULTILINGUAL_PLAYBACK))
+ #define XLAT_STR_63 STRINGIFY(V4L2_CID_MPEG_AUDIO_DEC_MULTILINGUAL_PLAYBACK)
 
  XLAT(V4L2_CID_MPEG_VIDEO_ENCODING),
+ #define XLAT_VAL_64 ((unsigned) (V4L2_CID_MPEG_VIDEO_ENCODING))
+ #define XLAT_STR_64 STRINGIFY(V4L2_CID_MPEG_VIDEO_ENCODING)
  XLAT(V4L2_CID_MPEG_VIDEO_ASPECT),
+ #define XLAT_VAL_65 ((unsigned) (V4L2_CID_MPEG_VIDEO_ASPECT))
+ #define XLAT_STR_65 STRINGIFY(V4L2_CID_MPEG_VIDEO_ASPECT)
  XLAT(V4L2_CID_MPEG_VIDEO_B_FRAMES),
+ #define XLAT_VAL_66 ((unsigned) (V4L2_CID_MPEG_VIDEO_B_FRAMES))
+ #define XLAT_STR_66 STRINGIFY(V4L2_CID_MPEG_VIDEO_B_FRAMES)
  XLAT(V4L2_CID_MPEG_VIDEO_GOP_SIZE),
+ #define XLAT_VAL_67 ((unsigned) (V4L2_CID_MPEG_VIDEO_GOP_SIZE))
+ #define XLAT_STR_67 STRINGIFY(V4L2_CID_MPEG_VIDEO_GOP_SIZE)
  XLAT(V4L2_CID_MPEG_VIDEO_GOP_CLOSURE),
+ #define XLAT_VAL_68 ((unsigned) (V4L2_CID_MPEG_VIDEO_GOP_CLOSURE))
+ #define XLAT_STR_68 STRINGIFY(V4L2_CID_MPEG_VIDEO_GOP_CLOSURE)
  XLAT(V4L2_CID_MPEG_VIDEO_PULLDOWN),
+ #define XLAT_VAL_69 ((unsigned) (V4L2_CID_MPEG_VIDEO_PULLDOWN))
+ #define XLAT_STR_69 STRINGIFY(V4L2_CID_MPEG_VIDEO_PULLDOWN)
  XLAT(V4L2_CID_MPEG_VIDEO_BITRATE_MODE),
+ #define XLAT_VAL_70 ((unsigned) (V4L2_CID_MPEG_VIDEO_BITRATE_MODE))
+ #define XLAT_STR_70 STRINGIFY(V4L2_CID_MPEG_VIDEO_BITRATE_MODE)
  XLAT(V4L2_CID_MPEG_VIDEO_BITRATE),
+ #define XLAT_VAL_71 ((unsigned) (V4L2_CID_MPEG_VIDEO_BITRATE))
+ #define XLAT_STR_71 STRINGIFY(V4L2_CID_MPEG_VIDEO_BITRATE)
  XLAT(V4L2_CID_MPEG_VIDEO_BITRATE_PEAK),
+ #define XLAT_VAL_72 ((unsigned) (V4L2_CID_MPEG_VIDEO_BITRATE_PEAK))
+ #define XLAT_STR_72 STRINGIFY(V4L2_CID_MPEG_VIDEO_BITRATE_PEAK)
  XLAT(V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION),
+ #define XLAT_VAL_73 ((unsigned) (V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION))
+ #define XLAT_STR_73 STRINGIFY(V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION)
  XLAT(V4L2_CID_MPEG_VIDEO_MUTE),
+ #define XLAT_VAL_74 ((unsigned) (V4L2_CID_MPEG_VIDEO_MUTE))
+ #define XLAT_STR_74 STRINGIFY(V4L2_CID_MPEG_VIDEO_MUTE)
  XLAT(V4L2_CID_MPEG_VIDEO_MUTE_YUV),
+ #define XLAT_VAL_75 ((unsigned) (V4L2_CID_MPEG_VIDEO_MUTE_YUV))
+ #define XLAT_STR_75 STRINGIFY(V4L2_CID_MPEG_VIDEO_MUTE_YUV)
  XLAT(V4L2_CID_MPEG_VIDEO_DECODER_SLICE_INTERFACE),
+ #define XLAT_VAL_76 ((unsigned) (V4L2_CID_MPEG_VIDEO_DECODER_SLICE_INTERFACE))
+ #define XLAT_STR_76 STRINGIFY(V4L2_CID_MPEG_VIDEO_DECODER_SLICE_INTERFACE)
  XLAT(V4L2_CID_MPEG_VIDEO_DECODER_MPEG4_DEBLOCK_FILTER),
+ #define XLAT_VAL_77 ((unsigned) (V4L2_CID_MPEG_VIDEO_DECODER_MPEG4_DEBLOCK_FILTER))
+ #define XLAT_STR_77 STRINGIFY(V4L2_CID_MPEG_VIDEO_DECODER_MPEG4_DEBLOCK_FILTER)
  XLAT(V4L2_CID_MPEG_VIDEO_CYCLIC_INTRA_REFRESH_MB),
+ #define XLAT_VAL_78 ((unsigned) (V4L2_CID_MPEG_VIDEO_CYCLIC_INTRA_REFRESH_MB))
+ #define XLAT_STR_78 STRINGIFY(V4L2_CID_MPEG_VIDEO_CYCLIC_INTRA_REFRESH_MB)
  XLAT(V4L2_CID_MPEG_VIDEO_FRAME_RC_ENABLE),
+ #define XLAT_VAL_79 ((unsigned) (V4L2_CID_MPEG_VIDEO_FRAME_RC_ENABLE))
+ #define XLAT_STR_79 STRINGIFY(V4L2_CID_MPEG_VIDEO_FRAME_RC_ENABLE)
  XLAT(V4L2_CID_MPEG_VIDEO_HEADER_MODE),
+ #define XLAT_VAL_80 ((unsigned) (V4L2_CID_MPEG_VIDEO_HEADER_MODE))
+ #define XLAT_STR_80 STRINGIFY(V4L2_CID_MPEG_VIDEO_HEADER_MODE)
  XLAT(V4L2_CID_MPEG_VIDEO_MAX_REF_PIC),
+ #define XLAT_VAL_81 ((unsigned) (V4L2_CID_MPEG_VIDEO_MAX_REF_PIC))
+ #define XLAT_STR_81 STRINGIFY(V4L2_CID_MPEG_VIDEO_MAX_REF_PIC)
  XLAT(V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE),
+ #define XLAT_VAL_82 ((unsigned) (V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE))
+ #define XLAT_STR_82 STRINGIFY(V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE)
  XLAT(V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_BYTES),
+ #define XLAT_VAL_83 ((unsigned) (V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_BYTES))
+ #define XLAT_STR_83 STRINGIFY(V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_BYTES)
  XLAT(V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_MB),
+ #define XLAT_VAL_84 ((unsigned) (V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_MB))
+ #define XLAT_STR_84 STRINGIFY(V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_MB)
  XLAT(V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE),
+ #define XLAT_VAL_85 ((unsigned) (V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE))
+ #define XLAT_STR_85 STRINGIFY(V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE)
  XLAT(V4L2_CID_MPEG_VIDEO_VBV_SIZE),
+ #define XLAT_VAL_86 ((unsigned) (V4L2_CID_MPEG_VIDEO_VBV_SIZE))
+ #define XLAT_STR_86 STRINGIFY(V4L2_CID_MPEG_VIDEO_VBV_SIZE)
  XLAT(V4L2_CID_MPEG_VIDEO_DEC_PTS),
+ #define XLAT_VAL_87 ((unsigned) (V4L2_CID_MPEG_VIDEO_DEC_PTS))
+ #define XLAT_STR_87 STRINGIFY(V4L2_CID_MPEG_VIDEO_DEC_PTS)
  XLAT(V4L2_CID_MPEG_VIDEO_DEC_FRAME),
+ #define XLAT_VAL_88 ((unsigned) (V4L2_CID_MPEG_VIDEO_DEC_FRAME))
+ #define XLAT_STR_88 STRINGIFY(V4L2_CID_MPEG_VIDEO_DEC_FRAME)
  XLAT(V4L2_CID_MPEG_VIDEO_VBV_DELAY),
+ #define XLAT_VAL_89 ((unsigned) (V4L2_CID_MPEG_VIDEO_VBV_DELAY))
+ #define XLAT_STR_89 STRINGIFY(V4L2_CID_MPEG_VIDEO_VBV_DELAY)
  XLAT(V4L2_CID_MPEG_VIDEO_REPEAT_SEQ_HEADER),
+ #define XLAT_VAL_90 ((unsigned) (V4L2_CID_MPEG_VIDEO_REPEAT_SEQ_HEADER))
+ #define XLAT_STR_90 STRINGIFY(V4L2_CID_MPEG_VIDEO_REPEAT_SEQ_HEADER)
  XLAT(V4L2_CID_MPEG_VIDEO_MV_H_SEARCH_RANGE),
+ #define XLAT_VAL_91 ((unsigned) (V4L2_CID_MPEG_VIDEO_MV_H_SEARCH_RANGE))
+ #define XLAT_STR_91 STRINGIFY(V4L2_CID_MPEG_VIDEO_MV_H_SEARCH_RANGE)
  XLAT(V4L2_CID_MPEG_VIDEO_MV_V_SEARCH_RANGE),
+ #define XLAT_VAL_92 ((unsigned) (V4L2_CID_MPEG_VIDEO_MV_V_SEARCH_RANGE))
+ #define XLAT_STR_92 STRINGIFY(V4L2_CID_MPEG_VIDEO_MV_V_SEARCH_RANGE)
  XLAT(V4L2_CID_MPEG_VIDEO_FORCE_KEY_FRAME),
+ #define XLAT_VAL_93 ((unsigned) (V4L2_CID_MPEG_VIDEO_FORCE_KEY_FRAME))
+ #define XLAT_STR_93 STRINGIFY(V4L2_CID_MPEG_VIDEO_FORCE_KEY_FRAME)
  XLAT(V4L2_CID_MPEG_VIDEO_MPEG2_SLICE_PARAMS),
+ #define XLAT_VAL_94 ((unsigned) (V4L2_CID_MPEG_VIDEO_MPEG2_SLICE_PARAMS))
+ #define XLAT_STR_94 STRINGIFY(V4L2_CID_MPEG_VIDEO_MPEG2_SLICE_PARAMS)
  XLAT(V4L2_CID_MPEG_VIDEO_MPEG2_QUANTIZATION),
+ #define XLAT_VAL_95 ((unsigned) (V4L2_CID_MPEG_VIDEO_MPEG2_QUANTIZATION))
+ #define XLAT_STR_95 STRINGIFY(V4L2_CID_MPEG_VIDEO_MPEG2_QUANTIZATION)
+ XLAT(V4L2_CID_FWHT_I_FRAME_QP),
+ #define XLAT_VAL_96 ((unsigned) (V4L2_CID_FWHT_I_FRAME_QP))
+ #define XLAT_STR_96 STRINGIFY(V4L2_CID_FWHT_I_FRAME_QP)
+ XLAT(V4L2_CID_FWHT_P_FRAME_QP),
+ #define XLAT_VAL_97 ((unsigned) (V4L2_CID_FWHT_P_FRAME_QP))
+ #define XLAT_STR_97 STRINGIFY(V4L2_CID_FWHT_P_FRAME_QP)
  XLAT(V4L2_CID_MPEG_VIDEO_H263_I_FRAME_QP),
+ #define XLAT_VAL_98 ((unsigned) (V4L2_CID_MPEG_VIDEO_H263_I_FRAME_QP))
+ #define XLAT_STR_98 STRINGIFY(V4L2_CID_MPEG_VIDEO_H263_I_FRAME_QP)
  XLAT(V4L2_CID_MPEG_VIDEO_H263_P_FRAME_QP),
+ #define XLAT_VAL_99 ((unsigned) (V4L2_CID_MPEG_VIDEO_H263_P_FRAME_QP))
+ #define XLAT_STR_99 STRINGIFY(V4L2_CID_MPEG_VIDEO_H263_P_FRAME_QP)
  XLAT(V4L2_CID_MPEG_VIDEO_H263_B_FRAME_QP),
+ #define XLAT_VAL_100 ((unsigned) (V4L2_CID_MPEG_VIDEO_H263_B_FRAME_QP))
+ #define XLAT_STR_100 STRINGIFY(V4L2_CID_MPEG_VIDEO_H263_B_FRAME_QP)
  XLAT(V4L2_CID_MPEG_VIDEO_H263_MIN_QP),
+ #define XLAT_VAL_101 ((unsigned) (V4L2_CID_MPEG_VIDEO_H263_MIN_QP))
+ #define XLAT_STR_101 STRINGIFY(V4L2_CID_MPEG_VIDEO_H263_MIN_QP)
  XLAT(V4L2_CID_MPEG_VIDEO_H263_MAX_QP),
+ #define XLAT_VAL_102 ((unsigned) (V4L2_CID_MPEG_VIDEO_H263_MAX_QP))
+ #define XLAT_STR_102 STRINGIFY(V4L2_CID_MPEG_VIDEO_H263_MAX_QP)
  XLAT(V4L2_CID_MPEG_VIDEO_H264_I_FRAME_QP),
+ #define XLAT_VAL_103 ((unsigned) (V4L2_CID_MPEG_VIDEO_H264_I_FRAME_QP))
+ #define XLAT_STR_103 STRINGIFY(V4L2_CID_MPEG_VIDEO_H264_I_FRAME_QP)
  XLAT(V4L2_CID_MPEG_VIDEO_H264_P_FRAME_QP),
+ #define XLAT_VAL_104 ((unsigned) (V4L2_CID_MPEG_VIDEO_H264_P_FRAME_QP))
+ #define XLAT_STR_104 STRINGIFY(V4L2_CID_MPEG_VIDEO_H264_P_FRAME_QP)
  XLAT(V4L2_CID_MPEG_VIDEO_H264_B_FRAME_QP),
+ #define XLAT_VAL_105 ((unsigned) (V4L2_CID_MPEG_VIDEO_H264_B_FRAME_QP))
+ #define XLAT_STR_105 STRINGIFY(V4L2_CID_MPEG_VIDEO_H264_B_FRAME_QP)
  XLAT(V4L2_CID_MPEG_VIDEO_H264_MIN_QP),
+ #define XLAT_VAL_106 ((unsigned) (V4L2_CID_MPEG_VIDEO_H264_MIN_QP))
+ #define XLAT_STR_106 STRINGIFY(V4L2_CID_MPEG_VIDEO_H264_MIN_QP)
  XLAT(V4L2_CID_MPEG_VIDEO_H264_MAX_QP),
+ #define XLAT_VAL_107 ((unsigned) (V4L2_CID_MPEG_VIDEO_H264_MAX_QP))
+ #define XLAT_STR_107 STRINGIFY(V4L2_CID_MPEG_VIDEO_H264_MAX_QP)
  XLAT(V4L2_CID_MPEG_VIDEO_H264_8X8_TRANSFORM),
+ #define XLAT_VAL_108 ((unsigned) (V4L2_CID_MPEG_VIDEO_H264_8X8_TRANSFORM))
+ #define XLAT_STR_108 STRINGIFY(V4L2_CID_MPEG_VIDEO_H264_8X8_TRANSFORM)
  XLAT(V4L2_CID_MPEG_VIDEO_H264_CPB_SIZE),
+ #define XLAT_VAL_109 ((unsigned) (V4L2_CID_MPEG_VIDEO_H264_CPB_SIZE))
+ #define XLAT_STR_109 STRINGIFY(V4L2_CID_MPEG_VIDEO_H264_CPB_SIZE)
  XLAT(V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE),
+ #define XLAT_VAL_110 ((unsigned) (V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE))
+ #define XLAT_STR_110 STRINGIFY(V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE)
  XLAT(V4L2_CID_MPEG_VIDEO_H264_I_PERIOD),
+ #define XLAT_VAL_111 ((unsigned) (V4L2_CID_MPEG_VIDEO_H264_I_PERIOD))
+ #define XLAT_STR_111 STRINGIFY(V4L2_CID_MPEG_VIDEO_H264_I_PERIOD)
  XLAT(V4L2_CID_MPEG_VIDEO_H264_LEVEL),
+ #define XLAT_VAL_112 ((unsigned) (V4L2_CID_MPEG_VIDEO_H264_LEVEL))
+ #define XLAT_STR_112 STRINGIFY(V4L2_CID_MPEG_VIDEO_H264_LEVEL)
  XLAT(V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_ALPHA),
+ #define XLAT_VAL_113 ((unsigned) (V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_ALPHA))
+ #define XLAT_STR_113 STRINGIFY(V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_ALPHA)
  XLAT(V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_BETA),
+ #define XLAT_VAL_114 ((unsigned) (V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_BETA))
+ #define XLAT_STR_114 STRINGIFY(V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_BETA)
  XLAT(V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE),
+ #define XLAT_VAL_115 ((unsigned) (V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE))
+ #define XLAT_STR_115 STRINGIFY(V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE)
  XLAT(V4L2_CID_MPEG_VIDEO_H264_PROFILE),
+ #define XLAT_VAL_116 ((unsigned) (V4L2_CID_MPEG_VIDEO_H264_PROFILE))
+ #define XLAT_STR_116 STRINGIFY(V4L2_CID_MPEG_VIDEO_H264_PROFILE)
  XLAT(V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_HEIGHT),
+ #define XLAT_VAL_117 ((unsigned) (V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_HEIGHT))
+ #define XLAT_STR_117 STRINGIFY(V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_HEIGHT)
  XLAT(V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_WIDTH),
+ #define XLAT_VAL_118 ((unsigned) (V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_WIDTH))
+ #define XLAT_STR_118 STRINGIFY(V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_WIDTH)
  XLAT(V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_ENABLE),
+ #define XLAT_VAL_119 ((unsigned) (V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_ENABLE))
+ #define XLAT_STR_119 STRINGIFY(V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_ENABLE)
  XLAT(V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_IDC),
+ #define XLAT_VAL_120 ((unsigned) (V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_IDC))
+ #define XLAT_STR_120 STRINGIFY(V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_IDC)
  XLAT(V4L2_CID_MPEG_VIDEO_H264_SEI_FRAME_PACKING),
+ #define XLAT_VAL_121 ((unsigned) (V4L2_CID_MPEG_VIDEO_H264_SEI_FRAME_PACKING))
+ #define XLAT_STR_121 STRINGIFY(V4L2_CID_MPEG_VIDEO_H264_SEI_FRAME_PACKING)
  XLAT(V4L2_CID_MPEG_VIDEO_H264_SEI_FP_CURRENT_FRAME_0),
+ #define XLAT_VAL_122 ((unsigned) (V4L2_CID_MPEG_VIDEO_H264_SEI_FP_CURRENT_FRAME_0))
+ #define XLAT_STR_122 STRINGIFY(V4L2_CID_MPEG_VIDEO_H264_SEI_FP_CURRENT_FRAME_0)
  XLAT(V4L2_CID_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE),
+ #define XLAT_VAL_123 ((unsigned) (V4L2_CID_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE))
+ #define XLAT_STR_123 STRINGIFY(V4L2_CID_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE)
  XLAT(V4L2_CID_MPEG_VIDEO_H264_FMO),
+ #define XLAT_VAL_124 ((unsigned) (V4L2_CID_MPEG_VIDEO_H264_FMO))
+ #define XLAT_STR_124 STRINGIFY(V4L2_CID_MPEG_VIDEO_H264_FMO)
  XLAT(V4L2_CID_MPEG_VIDEO_H264_FMO_MAP_TYPE),
+ #define XLAT_VAL_125 ((unsigned) (V4L2_CID_MPEG_VIDEO_H264_FMO_MAP_TYPE))
+ #define XLAT_STR_125 STRINGIFY(V4L2_CID_MPEG_VIDEO_H264_FMO_MAP_TYPE)
  XLAT(V4L2_CID_MPEG_VIDEO_H264_FMO_SLICE_GROUP),
+ #define XLAT_VAL_126 ((unsigned) (V4L2_CID_MPEG_VIDEO_H264_FMO_SLICE_GROUP))
+ #define XLAT_STR_126 STRINGIFY(V4L2_CID_MPEG_VIDEO_H264_FMO_SLICE_GROUP)
  XLAT(V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_DIRECTION),
+ #define XLAT_VAL_127 ((unsigned) (V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_DIRECTION))
+ #define XLAT_STR_127 STRINGIFY(V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_DIRECTION)
  XLAT(V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_RATE),
+ #define XLAT_VAL_128 ((unsigned) (V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_RATE))
+ #define XLAT_STR_128 STRINGIFY(V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_RATE)
  XLAT(V4L2_CID_MPEG_VIDEO_H264_FMO_RUN_LENGTH),
+ #define XLAT_VAL_129 ((unsigned) (V4L2_CID_MPEG_VIDEO_H264_FMO_RUN_LENGTH))
+ #define XLAT_STR_129 STRINGIFY(V4L2_CID_MPEG_VIDEO_H264_FMO_RUN_LENGTH)
  XLAT(V4L2_CID_MPEG_VIDEO_H264_ASO),
+ #define XLAT_VAL_130 ((unsigned) (V4L2_CID_MPEG_VIDEO_H264_ASO))
+ #define XLAT_STR_130 STRINGIFY(V4L2_CID_MPEG_VIDEO_H264_ASO)
  XLAT(V4L2_CID_MPEG_VIDEO_H264_ASO_SLICE_ORDER),
+ #define XLAT_VAL_131 ((unsigned) (V4L2_CID_MPEG_VIDEO_H264_ASO_SLICE_ORDER))
+ #define XLAT_STR_131 STRINGIFY(V4L2_CID_MPEG_VIDEO_H264_ASO_SLICE_ORDER)
  XLAT(V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING),
+ #define XLAT_VAL_132 ((unsigned) (V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING))
+ #define XLAT_STR_132 STRINGIFY(V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING)
  XLAT(V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_TYPE),
+ #define XLAT_VAL_133 ((unsigned) (V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_TYPE))
+ #define XLAT_STR_133 STRINGIFY(V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_TYPE)
  XLAT(V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER),
+ #define XLAT_VAL_134 ((unsigned) (V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER))
+ #define XLAT_STR_134 STRINGIFY(V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER)
  XLAT(V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER_QP),
+ #define XLAT_VAL_135 ((unsigned) (V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER_QP))
+ #define XLAT_STR_135 STRINGIFY(V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER_QP)
  XLAT(V4L2_CID_MPEG_VIDEO_H264_CONSTRAINED_INTRA_PREDICTION),
+ #define XLAT_VAL_136 ((unsigned) (V4L2_CID_MPEG_VIDEO_H264_CONSTRAINED_INTRA_PREDICTION))
+ #define XLAT_STR_136 STRINGIFY(V4L2_CID_MPEG_VIDEO_H264_CONSTRAINED_INTRA_PREDICTION)
  XLAT(V4L2_CID_MPEG_VIDEO_H264_CHROMA_QP_INDEX_OFFSET),
+ #define XLAT_VAL_137 ((unsigned) (V4L2_CID_MPEG_VIDEO_H264_CHROMA_QP_INDEX_OFFSET))
+ #define XLAT_STR_137 STRINGIFY(V4L2_CID_MPEG_VIDEO_H264_CHROMA_QP_INDEX_OFFSET)
+ XLAT(V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MIN_QP),
+ #define XLAT_VAL_138 ((unsigned) (V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MIN_QP))
+ #define XLAT_STR_138 STRINGIFY(V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MIN_QP)
+ XLAT(V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MAX_QP),
+ #define XLAT_VAL_139 ((unsigned) (V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MAX_QP))
+ #define XLAT_STR_139 STRINGIFY(V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MAX_QP)
+ XLAT(V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MIN_QP),
+ #define XLAT_VAL_140 ((unsigned) (V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MIN_QP))
+ #define XLAT_STR_140 STRINGIFY(V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MIN_QP)
+ XLAT(V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MAX_QP),
+ #define XLAT_VAL_141 ((unsigned) (V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MAX_QP))
+ #define XLAT_STR_141 STRINGIFY(V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MAX_QP)
  XLAT(V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP),
+ #define XLAT_VAL_142 ((unsigned) (V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP))
+ #define XLAT_STR_142 STRINGIFY(V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP)
  XLAT(V4L2_CID_MPEG_VIDEO_MPEG4_P_FRAME_QP),
+ #define XLAT_VAL_143 ((unsigned) (V4L2_CID_MPEG_VIDEO_MPEG4_P_FRAME_QP))
+ #define XLAT_STR_143 STRINGIFY(V4L2_CID_MPEG_VIDEO_MPEG4_P_FRAME_QP)
  XLAT(V4L2_CID_MPEG_VIDEO_MPEG4_B_FRAME_QP),
+ #define XLAT_VAL_144 ((unsigned) (V4L2_CID_MPEG_VIDEO_MPEG4_B_FRAME_QP))
+ #define XLAT_STR_144 STRINGIFY(V4L2_CID_MPEG_VIDEO_MPEG4_B_FRAME_QP)
  XLAT(V4L2_CID_MPEG_VIDEO_MPEG4_MIN_QP),
+ #define XLAT_VAL_145 ((unsigned) (V4L2_CID_MPEG_VIDEO_MPEG4_MIN_QP))
+ #define XLAT_STR_145 STRINGIFY(V4L2_CID_MPEG_VIDEO_MPEG4_MIN_QP)
  XLAT(V4L2_CID_MPEG_VIDEO_MPEG4_MAX_QP),
+ #define XLAT_VAL_146 ((unsigned) (V4L2_CID_MPEG_VIDEO_MPEG4_MAX_QP))
+ #define XLAT_STR_146 STRINGIFY(V4L2_CID_MPEG_VIDEO_MPEG4_MAX_QP)
  XLAT(V4L2_CID_MPEG_VIDEO_MPEG4_LEVEL),
+ #define XLAT_VAL_147 ((unsigned) (V4L2_CID_MPEG_VIDEO_MPEG4_LEVEL))
+ #define XLAT_STR_147 STRINGIFY(V4L2_CID_MPEG_VIDEO_MPEG4_LEVEL)
  XLAT(V4L2_CID_MPEG_VIDEO_MPEG4_PROFILE),
+ #define XLAT_VAL_148 ((unsigned) (V4L2_CID_MPEG_VIDEO_MPEG4_PROFILE))
+ #define XLAT_STR_148 STRINGIFY(V4L2_CID_MPEG_VIDEO_MPEG4_PROFILE)
  XLAT(V4L2_CID_MPEG_VIDEO_MPEG4_QPEL),
+ #define XLAT_VAL_149 ((unsigned) (V4L2_CID_MPEG_VIDEO_MPEG4_QPEL))
+ #define XLAT_STR_149 STRINGIFY(V4L2_CID_MPEG_VIDEO_MPEG4_QPEL)
 
  XLAT(V4L2_CID_MPEG_VIDEO_VPX_NUM_PARTITIONS),
+ #define XLAT_VAL_150 ((unsigned) (V4L2_CID_MPEG_VIDEO_VPX_NUM_PARTITIONS))
+ #define XLAT_STR_150 STRINGIFY(V4L2_CID_MPEG_VIDEO_VPX_NUM_PARTITIONS)
  XLAT(V4L2_CID_MPEG_VIDEO_VPX_IMD_DISABLE_4X4),
+ #define XLAT_VAL_151 ((unsigned) (V4L2_CID_MPEG_VIDEO_VPX_IMD_DISABLE_4X4))
+ #define XLAT_STR_151 STRINGIFY(V4L2_CID_MPEG_VIDEO_VPX_IMD_DISABLE_4X4)
  XLAT(V4L2_CID_MPEG_VIDEO_VPX_NUM_REF_FRAMES),
+ #define XLAT_VAL_152 ((unsigned) (V4L2_CID_MPEG_VIDEO_VPX_NUM_REF_FRAMES))
+ #define XLAT_STR_152 STRINGIFY(V4L2_CID_MPEG_VIDEO_VPX_NUM_REF_FRAMES)
  XLAT(V4L2_CID_MPEG_VIDEO_VPX_FILTER_LEVEL),
+ #define XLAT_VAL_153 ((unsigned) (V4L2_CID_MPEG_VIDEO_VPX_FILTER_LEVEL))
+ #define XLAT_STR_153 STRINGIFY(V4L2_CID_MPEG_VIDEO_VPX_FILTER_LEVEL)
  XLAT(V4L2_CID_MPEG_VIDEO_VPX_FILTER_SHARPNESS),
+ #define XLAT_VAL_154 ((unsigned) (V4L2_CID_MPEG_VIDEO_VPX_FILTER_SHARPNESS))
+ #define XLAT_STR_154 STRINGIFY(V4L2_CID_MPEG_VIDEO_VPX_FILTER_SHARPNESS)
  XLAT(V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_REF_PERIOD),
+ #define XLAT_VAL_155 ((unsigned) (V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_REF_PERIOD))
+ #define XLAT_STR_155 STRINGIFY(V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_REF_PERIOD)
  XLAT(V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_SEL),
+ #define XLAT_VAL_156 ((unsigned) (V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_SEL))
+ #define XLAT_STR_156 STRINGIFY(V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_SEL)
  XLAT(V4L2_CID_MPEG_VIDEO_VPX_MIN_QP),
+ #define XLAT_VAL_157 ((unsigned) (V4L2_CID_MPEG_VIDEO_VPX_MIN_QP))
+ #define XLAT_STR_157 STRINGIFY(V4L2_CID_MPEG_VIDEO_VPX_MIN_QP)
  XLAT(V4L2_CID_MPEG_VIDEO_VPX_MAX_QP),
+ #define XLAT_VAL_158 ((unsigned) (V4L2_CID_MPEG_VIDEO_VPX_MAX_QP))
+ #define XLAT_STR_158 STRINGIFY(V4L2_CID_MPEG_VIDEO_VPX_MAX_QP)
  XLAT(V4L2_CID_MPEG_VIDEO_VPX_I_FRAME_QP),
+ #define XLAT_VAL_159 ((unsigned) (V4L2_CID_MPEG_VIDEO_VPX_I_FRAME_QP))
+ #define XLAT_STR_159 STRINGIFY(V4L2_CID_MPEG_VIDEO_VPX_I_FRAME_QP)
  XLAT(V4L2_CID_MPEG_VIDEO_VPX_P_FRAME_QP),
+ #define XLAT_VAL_160 ((unsigned) (V4L2_CID_MPEG_VIDEO_VPX_P_FRAME_QP))
+ #define XLAT_STR_160 STRINGIFY(V4L2_CID_MPEG_VIDEO_VPX_P_FRAME_QP)
  XLAT(V4L2_CID_MPEG_VIDEO_VP8_PROFILE),
+ #define XLAT_VAL_161 ((unsigned) (V4L2_CID_MPEG_VIDEO_VP8_PROFILE))
+ #define XLAT_STR_161 STRINGIFY(V4L2_CID_MPEG_VIDEO_VP8_PROFILE)
  XLAT(V4L2_CID_MPEG_VIDEO_VP9_PROFILE),
+ #define XLAT_VAL_162 ((unsigned) (V4L2_CID_MPEG_VIDEO_VP9_PROFILE))
+ #define XLAT_STR_162 STRINGIFY(V4L2_CID_MPEG_VIDEO_VP9_PROFILE)
 
  XLAT(V4L2_CID_MPEG_VIDEO_HEVC_MIN_QP),
+ #define XLAT_VAL_163 ((unsigned) (V4L2_CID_MPEG_VIDEO_HEVC_MIN_QP))
+ #define XLAT_STR_163 STRINGIFY(V4L2_CID_MPEG_VIDEO_HEVC_MIN_QP)
  XLAT(V4L2_CID_MPEG_VIDEO_HEVC_MAX_QP),
+ #define XLAT_VAL_164 ((unsigned) (V4L2_CID_MPEG_VIDEO_HEVC_MAX_QP))
+ #define XLAT_STR_164 STRINGIFY(V4L2_CID_MPEG_VIDEO_HEVC_MAX_QP)
  XLAT(V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_QP),
+ #define XLAT_VAL_165 ((unsigned) (V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_QP))
+ #define XLAT_STR_165 STRINGIFY(V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_QP)
  XLAT(V4L2_CID_MPEG_VIDEO_HEVC_P_FRAME_QP),
+ #define XLAT_VAL_166 ((unsigned) (V4L2_CID_MPEG_VIDEO_HEVC_P_FRAME_QP))
+ #define XLAT_STR_166 STRINGIFY(V4L2_CID_MPEG_VIDEO_HEVC_P_FRAME_QP)
  XLAT(V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_QP),
+ #define XLAT_VAL_167 ((unsigned) (V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_QP))
+ #define XLAT_STR_167 STRINGIFY(V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_QP)
  XLAT(V4L2_CID_MPEG_VIDEO_HEVC_HIER_QP),
+ #define XLAT_VAL_168 ((unsigned) (V4L2_CID_MPEG_VIDEO_HEVC_HIER_QP))
+ #define XLAT_STR_168 STRINGIFY(V4L2_CID_MPEG_VIDEO_HEVC_HIER_QP)
  XLAT(V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_TYPE),
+ #define XLAT_VAL_169 ((unsigned) (V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_TYPE))
+ #define XLAT_STR_169 STRINGIFY(V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_TYPE)
  XLAT(V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_LAYER),
+ #define XLAT_VAL_170 ((unsigned) (V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_LAYER))
+ #define XLAT_STR_170 STRINGIFY(V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_LAYER)
  XLAT(V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L0_QP),
+ #define XLAT_VAL_171 ((unsigned) (V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L0_QP))
+ #define XLAT_STR_171 STRINGIFY(V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L0_QP)
  XLAT(V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L1_QP),
+ #define XLAT_VAL_172 ((unsigned) (V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L1_QP))
+ #define XLAT_STR_172 STRINGIFY(V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L1_QP)
  XLAT(V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L2_QP),
+ #define XLAT_VAL_173 ((unsigned) (V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L2_QP))
+ #define XLAT_STR_173 STRINGIFY(V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L2_QP)
  XLAT(V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L3_QP),
+ #define XLAT_VAL_174 ((unsigned) (V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L3_QP))
+ #define XLAT_STR_174 STRINGIFY(V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L3_QP)
  XLAT(V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L4_QP),
+ #define XLAT_VAL_175 ((unsigned) (V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L4_QP))
+ #define XLAT_STR_175 STRINGIFY(V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L4_QP)
  XLAT(V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L5_QP),
+ #define XLAT_VAL_176 ((unsigned) (V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L5_QP))
+ #define XLAT_STR_176 STRINGIFY(V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L5_QP)
  XLAT(V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L6_QP),
+ #define XLAT_VAL_177 ((unsigned) (V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L6_QP))
+ #define XLAT_STR_177 STRINGIFY(V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L6_QP)
  XLAT(V4L2_CID_MPEG_VIDEO_HEVC_PROFILE),
+ #define XLAT_VAL_178 ((unsigned) (V4L2_CID_MPEG_VIDEO_HEVC_PROFILE))
+ #define XLAT_STR_178 STRINGIFY(V4L2_CID_MPEG_VIDEO_HEVC_PROFILE)
  XLAT(V4L2_CID_MPEG_VIDEO_HEVC_LEVEL),
+ #define XLAT_VAL_179 ((unsigned) (V4L2_CID_MPEG_VIDEO_HEVC_LEVEL))
+ #define XLAT_STR_179 STRINGIFY(V4L2_CID_MPEG_VIDEO_HEVC_LEVEL)
  XLAT(V4L2_CID_MPEG_VIDEO_HEVC_FRAME_RATE_RESOLUTION),
+ #define XLAT_VAL_180 ((unsigned) (V4L2_CID_MPEG_VIDEO_HEVC_FRAME_RATE_RESOLUTION))
+ #define XLAT_STR_180 STRINGIFY(V4L2_CID_MPEG_VIDEO_HEVC_FRAME_RATE_RESOLUTION)
  XLAT(V4L2_CID_MPEG_VIDEO_HEVC_TIER),
+ #define XLAT_VAL_181 ((unsigned) (V4L2_CID_MPEG_VIDEO_HEVC_TIER))
+ #define XLAT_STR_181 STRINGIFY(V4L2_CID_MPEG_VIDEO_HEVC_TIER)
  XLAT(V4L2_CID_MPEG_VIDEO_HEVC_MAX_PARTITION_DEPTH),
+ #define XLAT_VAL_182 ((unsigned) (V4L2_CID_MPEG_VIDEO_HEVC_MAX_PARTITION_DEPTH))
+ #define XLAT_STR_182 STRINGIFY(V4L2_CID_MPEG_VIDEO_HEVC_MAX_PARTITION_DEPTH)
  XLAT(V4L2_CID_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE),
+ #define XLAT_VAL_183 ((unsigned) (V4L2_CID_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE))
+ #define XLAT_STR_183 STRINGIFY(V4L2_CID_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE)
  XLAT(V4L2_CID_MPEG_VIDEO_HEVC_LF_BETA_OFFSET_DIV2),
+ #define XLAT_VAL_184 ((unsigned) (V4L2_CID_MPEG_VIDEO_HEVC_LF_BETA_OFFSET_DIV2))
+ #define XLAT_STR_184 STRINGIFY(V4L2_CID_MPEG_VIDEO_HEVC_LF_BETA_OFFSET_DIV2)
  XLAT(V4L2_CID_MPEG_VIDEO_HEVC_LF_TC_OFFSET_DIV2),
+ #define XLAT_VAL_185 ((unsigned) (V4L2_CID_MPEG_VIDEO_HEVC_LF_TC_OFFSET_DIV2))
+ #define XLAT_STR_185 STRINGIFY(V4L2_CID_MPEG_VIDEO_HEVC_LF_TC_OFFSET_DIV2)
  XLAT(V4L2_CID_MPEG_VIDEO_HEVC_REFRESH_TYPE),
+ #define XLAT_VAL_186 ((unsigned) (V4L2_CID_MPEG_VIDEO_HEVC_REFRESH_TYPE))
+ #define XLAT_STR_186 STRINGIFY(V4L2_CID_MPEG_VIDEO_HEVC_REFRESH_TYPE)
  XLAT(V4L2_CID_MPEG_VIDEO_HEVC_REFRESH_PERIOD),
+ #define XLAT_VAL_187 ((unsigned) (V4L2_CID_MPEG_VIDEO_HEVC_REFRESH_PERIOD))
+ #define XLAT_STR_187 STRINGIFY(V4L2_CID_MPEG_VIDEO_HEVC_REFRESH_PERIOD)
  XLAT(V4L2_CID_MPEG_VIDEO_HEVC_LOSSLESS_CU),
+ #define XLAT_VAL_188 ((unsigned) (V4L2_CID_MPEG_VIDEO_HEVC_LOSSLESS_CU))
+ #define XLAT_STR_188 STRINGIFY(V4L2_CID_MPEG_VIDEO_HEVC_LOSSLESS_CU)
  XLAT(V4L2_CID_MPEG_VIDEO_HEVC_CONST_INTRA_PRED),
+ #define XLAT_VAL_189 ((unsigned) (V4L2_CID_MPEG_VIDEO_HEVC_CONST_INTRA_PRED))
+ #define XLAT_STR_189 STRINGIFY(V4L2_CID_MPEG_VIDEO_HEVC_CONST_INTRA_PRED)
  XLAT(V4L2_CID_MPEG_VIDEO_HEVC_WAVEFRONT),
+ #define XLAT_VAL_190 ((unsigned) (V4L2_CID_MPEG_VIDEO_HEVC_WAVEFRONT))
+ #define XLAT_STR_190 STRINGIFY(V4L2_CID_MPEG_VIDEO_HEVC_WAVEFRONT)
  XLAT(V4L2_CID_MPEG_VIDEO_HEVC_GENERAL_PB),
+ #define XLAT_VAL_191 ((unsigned) (V4L2_CID_MPEG_VIDEO_HEVC_GENERAL_PB))
+ #define XLAT_STR_191 STRINGIFY(V4L2_CID_MPEG_VIDEO_HEVC_GENERAL_PB)
  XLAT(V4L2_CID_MPEG_VIDEO_HEVC_TEMPORAL_ID),
+ #define XLAT_VAL_192 ((unsigned) (V4L2_CID_MPEG_VIDEO_HEVC_TEMPORAL_ID))
+ #define XLAT_STR_192 STRINGIFY(V4L2_CID_MPEG_VIDEO_HEVC_TEMPORAL_ID)
  XLAT(V4L2_CID_MPEG_VIDEO_HEVC_STRONG_SMOOTHING),
+ #define XLAT_VAL_193 ((unsigned) (V4L2_CID_MPEG_VIDEO_HEVC_STRONG_SMOOTHING))
+ #define XLAT_STR_193 STRINGIFY(V4L2_CID_MPEG_VIDEO_HEVC_STRONG_SMOOTHING)
  XLAT(V4L2_CID_MPEG_VIDEO_HEVC_MAX_NUM_MERGE_MV_MINUS1),
+ #define XLAT_VAL_194 ((unsigned) (V4L2_CID_MPEG_VIDEO_HEVC_MAX_NUM_MERGE_MV_MINUS1))
+ #define XLAT_STR_194 STRINGIFY(V4L2_CID_MPEG_VIDEO_HEVC_MAX_NUM_MERGE_MV_MINUS1)
  XLAT(V4L2_CID_MPEG_VIDEO_HEVC_INTRA_PU_SPLIT),
+ #define XLAT_VAL_195 ((unsigned) (V4L2_CID_MPEG_VIDEO_HEVC_INTRA_PU_SPLIT))
+ #define XLAT_STR_195 STRINGIFY(V4L2_CID_MPEG_VIDEO_HEVC_INTRA_PU_SPLIT)
  XLAT(V4L2_CID_MPEG_VIDEO_HEVC_TMV_PREDICTION),
+ #define XLAT_VAL_196 ((unsigned) (V4L2_CID_MPEG_VIDEO_HEVC_TMV_PREDICTION))
+ #define XLAT_STR_196 STRINGIFY(V4L2_CID_MPEG_VIDEO_HEVC_TMV_PREDICTION)
  XLAT(V4L2_CID_MPEG_VIDEO_HEVC_WITHOUT_STARTCODE),
+ #define XLAT_VAL_197 ((unsigned) (V4L2_CID_MPEG_VIDEO_HEVC_WITHOUT_STARTCODE))
+ #define XLAT_STR_197 STRINGIFY(V4L2_CID_MPEG_VIDEO_HEVC_WITHOUT_STARTCODE)
  XLAT(V4L2_CID_MPEG_VIDEO_HEVC_SIZE_OF_LENGTH_FIELD),
+ #define XLAT_VAL_198 ((unsigned) (V4L2_CID_MPEG_VIDEO_HEVC_SIZE_OF_LENGTH_FIELD))
+ #define XLAT_STR_198 STRINGIFY(V4L2_CID_MPEG_VIDEO_HEVC_SIZE_OF_LENGTH_FIELD)
  XLAT(V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L0_BR),
+ #define XLAT_VAL_199 ((unsigned) (V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L0_BR))
+ #define XLAT_STR_199 STRINGIFY(V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L0_BR)
  XLAT(V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L1_BR),
+ #define XLAT_VAL_200 ((unsigned) (V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L1_BR))
+ #define XLAT_STR_200 STRINGIFY(V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L1_BR)
  XLAT(V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L2_BR),
+ #define XLAT_VAL_201 ((unsigned) (V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L2_BR))
+ #define XLAT_STR_201 STRINGIFY(V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L2_BR)
  XLAT(V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L3_BR),
+ #define XLAT_VAL_202 ((unsigned) (V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L3_BR))
+ #define XLAT_STR_202 STRINGIFY(V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L3_BR)
  XLAT(V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L4_BR),
+ #define XLAT_VAL_203 ((unsigned) (V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L4_BR))
+ #define XLAT_STR_203 STRINGIFY(V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L4_BR)
  XLAT(V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L5_BR),
+ #define XLAT_VAL_204 ((unsigned) (V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L5_BR))
+ #define XLAT_STR_204 STRINGIFY(V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L5_BR)
  XLAT(V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L6_BR),
+ #define XLAT_VAL_205 ((unsigned) (V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L6_BR))
+ #define XLAT_STR_205 STRINGIFY(V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L6_BR)
  XLAT(V4L2_CID_MPEG_VIDEO_REF_NUMBER_FOR_PFRAMES),
+ #define XLAT_VAL_206 ((unsigned) (V4L2_CID_MPEG_VIDEO_REF_NUMBER_FOR_PFRAMES))
+ #define XLAT_STR_206 STRINGIFY(V4L2_CID_MPEG_VIDEO_REF_NUMBER_FOR_PFRAMES)
  XLAT(V4L2_CID_MPEG_VIDEO_PREPEND_SPSPPS_TO_IDR),
+ #define XLAT_VAL_207 ((unsigned) (V4L2_CID_MPEG_VIDEO_PREPEND_SPSPPS_TO_IDR))
+ #define XLAT_STR_207 STRINGIFY(V4L2_CID_MPEG_VIDEO_PREPEND_SPSPPS_TO_IDR)
 
  XLAT(V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE),
+ #define XLAT_VAL_208 ((unsigned) (V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE))
+ #define XLAT_STR_208 STRINGIFY(V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE)
  XLAT(V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER),
+ #define XLAT_VAL_209 ((unsigned) (V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER))
+ #define XLAT_STR_209 STRINGIFY(V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER)
  XLAT(V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE),
+ #define XLAT_VAL_210 ((unsigned) (V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE))
+ #define XLAT_STR_210 STRINGIFY(V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE)
  XLAT(V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE),
+ #define XLAT_VAL_211 ((unsigned) (V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE))
+ #define XLAT_STR_211 STRINGIFY(V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE)
  XLAT(V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE),
+ #define XLAT_VAL_212 ((unsigned) (V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE))
+ #define XLAT_STR_212 STRINGIFY(V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE)
  XLAT(V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER),
+ #define XLAT_VAL_213 ((unsigned) (V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER))
+ #define XLAT_STR_213 STRINGIFY(V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER)
  XLAT(V4L2_CID_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE),
+ #define XLAT_VAL_214 ((unsigned) (V4L2_CID_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE))
+ #define XLAT_STR_214 STRINGIFY(V4L2_CID_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE)
  XLAT(V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_BOTTOM),
+ #define XLAT_VAL_215 ((unsigned) (V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_BOTTOM))
+ #define XLAT_STR_215 STRINGIFY(V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_BOTTOM)
  XLAT(V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_TOP),
+ #define XLAT_VAL_216 ((unsigned) (V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_TOP))
+ #define XLAT_STR_216 STRINGIFY(V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_TOP)
  XLAT(V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_BOTTOM),
+ #define XLAT_VAL_217 ((unsigned) (V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_BOTTOM))
+ #define XLAT_STR_217 STRINGIFY(V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_BOTTOM)
  XLAT(V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_TOP),
+ #define XLAT_VAL_218 ((unsigned) (V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_TOP))
+ #define XLAT_STR_218 STRINGIFY(V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_TOP)
  XLAT(V4L2_CID_MPEG_CX2341X_STREAM_INSERT_NAV_PACKETS),
+ #define XLAT_VAL_219 ((unsigned) (V4L2_CID_MPEG_CX2341X_STREAM_INSERT_NAV_PACKETS))
+ #define XLAT_STR_219 STRINGIFY(V4L2_CID_MPEG_CX2341X_STREAM_INSERT_NAV_PACKETS)
 
  XLAT(V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY),
+ #define XLAT_VAL_220 ((unsigned) (V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY))
+ #define XLAT_STR_220 STRINGIFY(V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY)
  XLAT(V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY_ENABLE),
+ #define XLAT_VAL_221 ((unsigned) (V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY_ENABLE))
+ #define XLAT_STR_221 STRINGIFY(V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY_ENABLE)
  XLAT(V4L2_CID_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE),
+ #define XLAT_VAL_222 ((unsigned) (V4L2_CID_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE))
+ #define XLAT_STR_222 STRINGIFY(V4L2_CID_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE)
  XLAT(V4L2_CID_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE),
+ #define XLAT_VAL_223 ((unsigned) (V4L2_CID_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE))
+ #define XLAT_STR_223 STRINGIFY(V4L2_CID_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE)
  XLAT(V4L2_CID_MPEG_MFC51_VIDEO_PADDING),
+ #define XLAT_VAL_224 ((unsigned) (V4L2_CID_MPEG_MFC51_VIDEO_PADDING))
+ #define XLAT_STR_224 STRINGIFY(V4L2_CID_MPEG_MFC51_VIDEO_PADDING)
  XLAT(V4L2_CID_MPEG_MFC51_VIDEO_PADDING_YUV),
+ #define XLAT_VAL_225 ((unsigned) (V4L2_CID_MPEG_MFC51_VIDEO_PADDING_YUV))
+ #define XLAT_STR_225 STRINGIFY(V4L2_CID_MPEG_MFC51_VIDEO_PADDING_YUV)
  XLAT(V4L2_CID_MPEG_MFC51_VIDEO_RC_FIXED_TARGET_BIT),
+ #define XLAT_VAL_226 ((unsigned) (V4L2_CID_MPEG_MFC51_VIDEO_RC_FIXED_TARGET_BIT))
+ #define XLAT_STR_226 STRINGIFY(V4L2_CID_MPEG_MFC51_VIDEO_RC_FIXED_TARGET_BIT)
  XLAT(V4L2_CID_MPEG_MFC51_VIDEO_RC_REACTION_COEFF),
+ #define XLAT_VAL_227 ((unsigned) (V4L2_CID_MPEG_MFC51_VIDEO_RC_REACTION_COEFF))
+ #define XLAT_STR_227 STRINGIFY(V4L2_CID_MPEG_MFC51_VIDEO_RC_REACTION_COEFF)
  XLAT(V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_ACTIVITY),
+ #define XLAT_VAL_228 ((unsigned) (V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_ACTIVITY))
+ #define XLAT_STR_228 STRINGIFY(V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_ACTIVITY)
  XLAT(V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_DARK),
+ #define XLAT_VAL_229 ((unsigned) (V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_DARK))
+ #define XLAT_STR_229 STRINGIFY(V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_DARK)
  XLAT(V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_SMOOTH),
+ #define XLAT_VAL_230 ((unsigned) (V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_SMOOTH))
+ #define XLAT_STR_230 STRINGIFY(V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_SMOOTH)
  XLAT(V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_STATIC),
+ #define XLAT_VAL_231 ((unsigned) (V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_STATIC))
+ #define XLAT_STR_231 STRINGIFY(V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_STATIC)
  XLAT(V4L2_CID_MPEG_MFC51_VIDEO_H264_NUM_REF_PIC_FOR_P),
+ #define XLAT_VAL_232 ((unsigned) (V4L2_CID_MPEG_MFC51_VIDEO_H264_NUM_REF_PIC_FOR_P))
+ #define XLAT_STR_232 STRINGIFY(V4L2_CID_MPEG_MFC51_VIDEO_H264_NUM_REF_PIC_FOR_P)
 
  XLAT(V4L2_CID_EXPOSURE_AUTO),
+ #define XLAT_VAL_233 ((unsigned) (V4L2_CID_EXPOSURE_AUTO))
+ #define XLAT_STR_233 STRINGIFY(V4L2_CID_EXPOSURE_AUTO)
  XLAT(V4L2_CID_EXPOSURE_ABSOLUTE),
+ #define XLAT_VAL_234 ((unsigned) (V4L2_CID_EXPOSURE_ABSOLUTE))
+ #define XLAT_STR_234 STRINGIFY(V4L2_CID_EXPOSURE_ABSOLUTE)
  XLAT(V4L2_CID_EXPOSURE_AUTO_PRIORITY),
+ #define XLAT_VAL_235 ((unsigned) (V4L2_CID_EXPOSURE_AUTO_PRIORITY))
+ #define XLAT_STR_235 STRINGIFY(V4L2_CID_EXPOSURE_AUTO_PRIORITY)
  XLAT(V4L2_CID_PAN_RELATIVE),
+ #define XLAT_VAL_236 ((unsigned) (V4L2_CID_PAN_RELATIVE))
+ #define XLAT_STR_236 STRINGIFY(V4L2_CID_PAN_RELATIVE)
  XLAT(V4L2_CID_TILT_RELATIVE),
+ #define XLAT_VAL_237 ((unsigned) (V4L2_CID_TILT_RELATIVE))
+ #define XLAT_STR_237 STRINGIFY(V4L2_CID_TILT_RELATIVE)
  XLAT(V4L2_CID_PAN_RESET),
+ #define XLAT_VAL_238 ((unsigned) (V4L2_CID_PAN_RESET))
+ #define XLAT_STR_238 STRINGIFY(V4L2_CID_PAN_RESET)
  XLAT(V4L2_CID_TILT_RESET),
+ #define XLAT_VAL_239 ((unsigned) (V4L2_CID_TILT_RESET))
+ #define XLAT_STR_239 STRINGIFY(V4L2_CID_TILT_RESET)
  XLAT(V4L2_CID_PAN_ABSOLUTE),
+ #define XLAT_VAL_240 ((unsigned) (V4L2_CID_PAN_ABSOLUTE))
+ #define XLAT_STR_240 STRINGIFY(V4L2_CID_PAN_ABSOLUTE)
  XLAT(V4L2_CID_TILT_ABSOLUTE),
+ #define XLAT_VAL_241 ((unsigned) (V4L2_CID_TILT_ABSOLUTE))
+ #define XLAT_STR_241 STRINGIFY(V4L2_CID_TILT_ABSOLUTE)
  XLAT(V4L2_CID_FOCUS_ABSOLUTE),
+ #define XLAT_VAL_242 ((unsigned) (V4L2_CID_FOCUS_ABSOLUTE))
+ #define XLAT_STR_242 STRINGIFY(V4L2_CID_FOCUS_ABSOLUTE)
  XLAT(V4L2_CID_FOCUS_RELATIVE),
+ #define XLAT_VAL_243 ((unsigned) (V4L2_CID_FOCUS_RELATIVE))
+ #define XLAT_STR_243 STRINGIFY(V4L2_CID_FOCUS_RELATIVE)
  XLAT(V4L2_CID_FOCUS_AUTO),
+ #define XLAT_VAL_244 ((unsigned) (V4L2_CID_FOCUS_AUTO))
+ #define XLAT_STR_244 STRINGIFY(V4L2_CID_FOCUS_AUTO)
  XLAT(V4L2_CID_ZOOM_ABSOLUTE),
+ #define XLAT_VAL_245 ((unsigned) (V4L2_CID_ZOOM_ABSOLUTE))
+ #define XLAT_STR_245 STRINGIFY(V4L2_CID_ZOOM_ABSOLUTE)
  XLAT(V4L2_CID_ZOOM_RELATIVE),
+ #define XLAT_VAL_246 ((unsigned) (V4L2_CID_ZOOM_RELATIVE))
+ #define XLAT_STR_246 STRINGIFY(V4L2_CID_ZOOM_RELATIVE)
  XLAT(V4L2_CID_ZOOM_CONTINUOUS),
+ #define XLAT_VAL_247 ((unsigned) (V4L2_CID_ZOOM_CONTINUOUS))
+ #define XLAT_STR_247 STRINGIFY(V4L2_CID_ZOOM_CONTINUOUS)
  XLAT(V4L2_CID_PRIVACY),
+ #define XLAT_VAL_248 ((unsigned) (V4L2_CID_PRIVACY))
+ #define XLAT_STR_248 STRINGIFY(V4L2_CID_PRIVACY)
  XLAT(V4L2_CID_IRIS_ABSOLUTE),
+ #define XLAT_VAL_249 ((unsigned) (V4L2_CID_IRIS_ABSOLUTE))
+ #define XLAT_STR_249 STRINGIFY(V4L2_CID_IRIS_ABSOLUTE)
  XLAT(V4L2_CID_IRIS_RELATIVE),
+ #define XLAT_VAL_250 ((unsigned) (V4L2_CID_IRIS_RELATIVE))
+ #define XLAT_STR_250 STRINGIFY(V4L2_CID_IRIS_RELATIVE)
  XLAT(V4L2_CID_AUTO_EXPOSURE_BIAS),
+ #define XLAT_VAL_251 ((unsigned) (V4L2_CID_AUTO_EXPOSURE_BIAS))
+ #define XLAT_STR_251 STRINGIFY(V4L2_CID_AUTO_EXPOSURE_BIAS)
  XLAT(V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE),
+ #define XLAT_VAL_252 ((unsigned) (V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE))
+ #define XLAT_STR_252 STRINGIFY(V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE)
  XLAT(V4L2_CID_WIDE_DYNAMIC_RANGE),
+ #define XLAT_VAL_253 ((unsigned) (V4L2_CID_WIDE_DYNAMIC_RANGE))
+ #define XLAT_STR_253 STRINGIFY(V4L2_CID_WIDE_DYNAMIC_RANGE)
  XLAT(V4L2_CID_IMAGE_STABILIZATION),
+ #define XLAT_VAL_254 ((unsigned) (V4L2_CID_IMAGE_STABILIZATION))
+ #define XLAT_STR_254 STRINGIFY(V4L2_CID_IMAGE_STABILIZATION)
  XLAT(V4L2_CID_ISO_SENSITIVITY),
+ #define XLAT_VAL_255 ((unsigned) (V4L2_CID_ISO_SENSITIVITY))
+ #define XLAT_STR_255 STRINGIFY(V4L2_CID_ISO_SENSITIVITY)
  XLAT(V4L2_CID_ISO_SENSITIVITY_AUTO),
+ #define XLAT_VAL_256 ((unsigned) (V4L2_CID_ISO_SENSITIVITY_AUTO))
+ #define XLAT_STR_256 STRINGIFY(V4L2_CID_ISO_SENSITIVITY_AUTO)
  XLAT(V4L2_CID_EXPOSURE_METERING),
+ #define XLAT_VAL_257 ((unsigned) (V4L2_CID_EXPOSURE_METERING))
+ #define XLAT_STR_257 STRINGIFY(V4L2_CID_EXPOSURE_METERING)
  XLAT(V4L2_CID_SCENE_MODE),
+ #define XLAT_VAL_258 ((unsigned) (V4L2_CID_SCENE_MODE))
+ #define XLAT_STR_258 STRINGIFY(V4L2_CID_SCENE_MODE)
  XLAT(V4L2_CID_3A_LOCK),
+ #define XLAT_VAL_259 ((unsigned) (V4L2_CID_3A_LOCK))
+ #define XLAT_STR_259 STRINGIFY(V4L2_CID_3A_LOCK)
  XLAT(V4L2_CID_AUTO_FOCUS_START),
+ #define XLAT_VAL_260 ((unsigned) (V4L2_CID_AUTO_FOCUS_START))
+ #define XLAT_STR_260 STRINGIFY(V4L2_CID_AUTO_FOCUS_START)
  XLAT(V4L2_CID_AUTO_FOCUS_STOP),
+ #define XLAT_VAL_261 ((unsigned) (V4L2_CID_AUTO_FOCUS_STOP))
+ #define XLAT_STR_261 STRINGIFY(V4L2_CID_AUTO_FOCUS_STOP)
  XLAT(V4L2_CID_AUTO_FOCUS_STATUS),
+ #define XLAT_VAL_262 ((unsigned) (V4L2_CID_AUTO_FOCUS_STATUS))
+ #define XLAT_STR_262 STRINGIFY(V4L2_CID_AUTO_FOCUS_STATUS)
  XLAT(V4L2_CID_AUTO_FOCUS_RANGE),
+ #define XLAT_VAL_263 ((unsigned) (V4L2_CID_AUTO_FOCUS_RANGE))
+ #define XLAT_STR_263 STRINGIFY(V4L2_CID_AUTO_FOCUS_RANGE)
  XLAT(V4L2_CID_PAN_SPEED),
+ #define XLAT_VAL_264 ((unsigned) (V4L2_CID_PAN_SPEED))
+ #define XLAT_STR_264 STRINGIFY(V4L2_CID_PAN_SPEED)
  XLAT(V4L2_CID_TILT_SPEED),
+ #define XLAT_VAL_265 ((unsigned) (V4L2_CID_TILT_SPEED))
+ #define XLAT_STR_265 STRINGIFY(V4L2_CID_TILT_SPEED)
 
  XLAT(V4L2_CID_RDS_TX_DEVIATION),
+ #define XLAT_VAL_266 ((unsigned) (V4L2_CID_RDS_TX_DEVIATION))
+ #define XLAT_STR_266 STRINGIFY(V4L2_CID_RDS_TX_DEVIATION)
  XLAT(V4L2_CID_RDS_TX_PI),
+ #define XLAT_VAL_267 ((unsigned) (V4L2_CID_RDS_TX_PI))
+ #define XLAT_STR_267 STRINGIFY(V4L2_CID_RDS_TX_PI)
  XLAT(V4L2_CID_RDS_TX_PTY),
+ #define XLAT_VAL_268 ((unsigned) (V4L2_CID_RDS_TX_PTY))
+ #define XLAT_STR_268 STRINGIFY(V4L2_CID_RDS_TX_PTY)
  XLAT(V4L2_CID_RDS_TX_PS_NAME),
+ #define XLAT_VAL_269 ((unsigned) (V4L2_CID_RDS_TX_PS_NAME))
+ #define XLAT_STR_269 STRINGIFY(V4L2_CID_RDS_TX_PS_NAME)
  XLAT(V4L2_CID_RDS_TX_RADIO_TEXT),
+ #define XLAT_VAL_270 ((unsigned) (V4L2_CID_RDS_TX_RADIO_TEXT))
+ #define XLAT_STR_270 STRINGIFY(V4L2_CID_RDS_TX_RADIO_TEXT)
  XLAT(V4L2_CID_RDS_TX_MONO_STEREO),
+ #define XLAT_VAL_271 ((unsigned) (V4L2_CID_RDS_TX_MONO_STEREO))
+ #define XLAT_STR_271 STRINGIFY(V4L2_CID_RDS_TX_MONO_STEREO)
  XLAT(V4L2_CID_RDS_TX_ARTIFICIAL_HEAD),
+ #define XLAT_VAL_272 ((unsigned) (V4L2_CID_RDS_TX_ARTIFICIAL_HEAD))
+ #define XLAT_STR_272 STRINGIFY(V4L2_CID_RDS_TX_ARTIFICIAL_HEAD)
  XLAT(V4L2_CID_RDS_TX_COMPRESSED),
+ #define XLAT_VAL_273 ((unsigned) (V4L2_CID_RDS_TX_COMPRESSED))
+ #define XLAT_STR_273 STRINGIFY(V4L2_CID_RDS_TX_COMPRESSED)
  XLAT(V4L2_CID_RDS_TX_DYNAMIC_PTY),
+ #define XLAT_VAL_274 ((unsigned) (V4L2_CID_RDS_TX_DYNAMIC_PTY))
+ #define XLAT_STR_274 STRINGIFY(V4L2_CID_RDS_TX_DYNAMIC_PTY)
  XLAT(V4L2_CID_RDS_TX_TRAFFIC_ANNOUNCEMENT),
+ #define XLAT_VAL_275 ((unsigned) (V4L2_CID_RDS_TX_TRAFFIC_ANNOUNCEMENT))
+ #define XLAT_STR_275 STRINGIFY(V4L2_CID_RDS_TX_TRAFFIC_ANNOUNCEMENT)
  XLAT(V4L2_CID_RDS_TX_TRAFFIC_PROGRAM),
+ #define XLAT_VAL_276 ((unsigned) (V4L2_CID_RDS_TX_TRAFFIC_PROGRAM))
+ #define XLAT_STR_276 STRINGIFY(V4L2_CID_RDS_TX_TRAFFIC_PROGRAM)
  XLAT(V4L2_CID_RDS_TX_MUSIC_SPEECH),
+ #define XLAT_VAL_277 ((unsigned) (V4L2_CID_RDS_TX_MUSIC_SPEECH))
+ #define XLAT_STR_277 STRINGIFY(V4L2_CID_RDS_TX_MUSIC_SPEECH)
  XLAT(V4L2_CID_RDS_TX_ALT_FREQS_ENABLE),
+ #define XLAT_VAL_278 ((unsigned) (V4L2_CID_RDS_TX_ALT_FREQS_ENABLE))
+ #define XLAT_STR_278 STRINGIFY(V4L2_CID_RDS_TX_ALT_FREQS_ENABLE)
  XLAT(V4L2_CID_RDS_TX_ALT_FREQS),
+ #define XLAT_VAL_279 ((unsigned) (V4L2_CID_RDS_TX_ALT_FREQS))
+ #define XLAT_STR_279 STRINGIFY(V4L2_CID_RDS_TX_ALT_FREQS)
  XLAT(V4L2_CID_AUDIO_LIMITER_ENABLED),
+ #define XLAT_VAL_280 ((unsigned) (V4L2_CID_AUDIO_LIMITER_ENABLED))
+ #define XLAT_STR_280 STRINGIFY(V4L2_CID_AUDIO_LIMITER_ENABLED)
  XLAT(V4L2_CID_AUDIO_LIMITER_RELEASE_TIME),
+ #define XLAT_VAL_281 ((unsigned) (V4L2_CID_AUDIO_LIMITER_RELEASE_TIME))
+ #define XLAT_STR_281 STRINGIFY(V4L2_CID_AUDIO_LIMITER_RELEASE_TIME)
  XLAT(V4L2_CID_AUDIO_LIMITER_DEVIATION),
+ #define XLAT_VAL_282 ((unsigned) (V4L2_CID_AUDIO_LIMITER_DEVIATION))
+ #define XLAT_STR_282 STRINGIFY(V4L2_CID_AUDIO_LIMITER_DEVIATION)
  XLAT(V4L2_CID_AUDIO_COMPRESSION_ENABLED),
+ #define XLAT_VAL_283 ((unsigned) (V4L2_CID_AUDIO_COMPRESSION_ENABLED))
+ #define XLAT_STR_283 STRINGIFY(V4L2_CID_AUDIO_COMPRESSION_ENABLED)
  XLAT(V4L2_CID_AUDIO_COMPRESSION_GAIN),
+ #define XLAT_VAL_284 ((unsigned) (V4L2_CID_AUDIO_COMPRESSION_GAIN))
+ #define XLAT_STR_284 STRINGIFY(V4L2_CID_AUDIO_COMPRESSION_GAIN)
  XLAT(V4L2_CID_AUDIO_COMPRESSION_THRESHOLD),
+ #define XLAT_VAL_285 ((unsigned) (V4L2_CID_AUDIO_COMPRESSION_THRESHOLD))
+ #define XLAT_STR_285 STRINGIFY(V4L2_CID_AUDIO_COMPRESSION_THRESHOLD)
  XLAT(V4L2_CID_AUDIO_COMPRESSION_ATTACK_TIME),
+ #define XLAT_VAL_286 ((unsigned) (V4L2_CID_AUDIO_COMPRESSION_ATTACK_TIME))
+ #define XLAT_STR_286 STRINGIFY(V4L2_CID_AUDIO_COMPRESSION_ATTACK_TIME)
  XLAT(V4L2_CID_AUDIO_COMPRESSION_RELEASE_TIME),
+ #define XLAT_VAL_287 ((unsigned) (V4L2_CID_AUDIO_COMPRESSION_RELEASE_TIME))
+ #define XLAT_STR_287 STRINGIFY(V4L2_CID_AUDIO_COMPRESSION_RELEASE_TIME)
  XLAT(V4L2_CID_PILOT_TONE_ENABLED),
+ #define XLAT_VAL_288 ((unsigned) (V4L2_CID_PILOT_TONE_ENABLED))
+ #define XLAT_STR_288 STRINGIFY(V4L2_CID_PILOT_TONE_ENABLED)
  XLAT(V4L2_CID_PILOT_TONE_DEVIATION),
+ #define XLAT_VAL_289 ((unsigned) (V4L2_CID_PILOT_TONE_DEVIATION))
+ #define XLAT_STR_289 STRINGIFY(V4L2_CID_PILOT_TONE_DEVIATION)
  XLAT(V4L2_CID_PILOT_TONE_FREQUENCY),
+ #define XLAT_VAL_290 ((unsigned) (V4L2_CID_PILOT_TONE_FREQUENCY))
+ #define XLAT_STR_290 STRINGIFY(V4L2_CID_PILOT_TONE_FREQUENCY)
  XLAT(V4L2_CID_TUNE_PREEMPHASIS),
+ #define XLAT_VAL_291 ((unsigned) (V4L2_CID_TUNE_PREEMPHASIS))
+ #define XLAT_STR_291 STRINGIFY(V4L2_CID_TUNE_PREEMPHASIS)
  XLAT(V4L2_CID_TUNE_POWER_LEVEL),
+ #define XLAT_VAL_292 ((unsigned) (V4L2_CID_TUNE_POWER_LEVEL))
+ #define XLAT_STR_292 STRINGIFY(V4L2_CID_TUNE_POWER_LEVEL)
  XLAT(V4L2_CID_TUNE_ANTENNA_CAPACITOR),
+ #define XLAT_VAL_293 ((unsigned) (V4L2_CID_TUNE_ANTENNA_CAPACITOR))
+ #define XLAT_STR_293 STRINGIFY(V4L2_CID_TUNE_ANTENNA_CAPACITOR)
 
  XLAT(V4L2_CID_FLASH_LED_MODE),
+ #define XLAT_VAL_294 ((unsigned) (V4L2_CID_FLASH_LED_MODE))
+ #define XLAT_STR_294 STRINGIFY(V4L2_CID_FLASH_LED_MODE)
  XLAT(V4L2_CID_FLASH_STROBE_SOURCE),
+ #define XLAT_VAL_295 ((unsigned) (V4L2_CID_FLASH_STROBE_SOURCE))
+ #define XLAT_STR_295 STRINGIFY(V4L2_CID_FLASH_STROBE_SOURCE)
  XLAT(V4L2_CID_FLASH_STROBE),
+ #define XLAT_VAL_296 ((unsigned) (V4L2_CID_FLASH_STROBE))
+ #define XLAT_STR_296 STRINGIFY(V4L2_CID_FLASH_STROBE)
  XLAT(V4L2_CID_FLASH_STROBE_STOP),
+ #define XLAT_VAL_297 ((unsigned) (V4L2_CID_FLASH_STROBE_STOP))
+ #define XLAT_STR_297 STRINGIFY(V4L2_CID_FLASH_STROBE_STOP)
  XLAT(V4L2_CID_FLASH_STROBE_STATUS),
+ #define XLAT_VAL_298 ((unsigned) (V4L2_CID_FLASH_STROBE_STATUS))
+ #define XLAT_STR_298 STRINGIFY(V4L2_CID_FLASH_STROBE_STATUS)
  XLAT(V4L2_CID_FLASH_TIMEOUT),
+ #define XLAT_VAL_299 ((unsigned) (V4L2_CID_FLASH_TIMEOUT))
+ #define XLAT_STR_299 STRINGIFY(V4L2_CID_FLASH_TIMEOUT)
  XLAT(V4L2_CID_FLASH_INTENSITY),
+ #define XLAT_VAL_300 ((unsigned) (V4L2_CID_FLASH_INTENSITY))
+ #define XLAT_STR_300 STRINGIFY(V4L2_CID_FLASH_INTENSITY)
  XLAT(V4L2_CID_FLASH_TORCH_INTENSITY),
+ #define XLAT_VAL_301 ((unsigned) (V4L2_CID_FLASH_TORCH_INTENSITY))
+ #define XLAT_STR_301 STRINGIFY(V4L2_CID_FLASH_TORCH_INTENSITY)
  XLAT(V4L2_CID_FLASH_INDICATOR_INTENSITY),
+ #define XLAT_VAL_302 ((unsigned) (V4L2_CID_FLASH_INDICATOR_INTENSITY))
+ #define XLAT_STR_302 STRINGIFY(V4L2_CID_FLASH_INDICATOR_INTENSITY)
  XLAT(V4L2_CID_FLASH_FAULT),
+ #define XLAT_VAL_303 ((unsigned) (V4L2_CID_FLASH_FAULT))
+ #define XLAT_STR_303 STRINGIFY(V4L2_CID_FLASH_FAULT)
  XLAT(V4L2_CID_FLASH_CHARGE),
+ #define XLAT_VAL_304 ((unsigned) (V4L2_CID_FLASH_CHARGE))
+ #define XLAT_STR_304 STRINGIFY(V4L2_CID_FLASH_CHARGE)
  XLAT(V4L2_CID_FLASH_READY),
+ #define XLAT_VAL_305 ((unsigned) (V4L2_CID_FLASH_READY))
+ #define XLAT_STR_305 STRINGIFY(V4L2_CID_FLASH_READY)
 
  XLAT(V4L2_CID_VBLANK),
+ #define XLAT_VAL_306 ((unsigned) (V4L2_CID_VBLANK))
+ #define XLAT_STR_306 STRINGIFY(V4L2_CID_VBLANK)
  XLAT(V4L2_CID_HBLANK),
+ #define XLAT_VAL_307 ((unsigned) (V4L2_CID_HBLANK))
+ #define XLAT_STR_307 STRINGIFY(V4L2_CID_HBLANK)
  XLAT(V4L2_CID_ANALOGUE_GAIN),
+ #define XLAT_VAL_308 ((unsigned) (V4L2_CID_ANALOGUE_GAIN))
+ #define XLAT_STR_308 STRINGIFY(V4L2_CID_ANALOGUE_GAIN)
  XLAT(V4L2_CID_TEST_PATTERN_RED),
+ #define XLAT_VAL_309 ((unsigned) (V4L2_CID_TEST_PATTERN_RED))
+ #define XLAT_STR_309 STRINGIFY(V4L2_CID_TEST_PATTERN_RED)
  XLAT(V4L2_CID_TEST_PATTERN_GREENR),
+ #define XLAT_VAL_310 ((unsigned) (V4L2_CID_TEST_PATTERN_GREENR))
+ #define XLAT_STR_310 STRINGIFY(V4L2_CID_TEST_PATTERN_GREENR)
  XLAT(V4L2_CID_TEST_PATTERN_BLUE),
+ #define XLAT_VAL_311 ((unsigned) (V4L2_CID_TEST_PATTERN_BLUE))
+ #define XLAT_STR_311 STRINGIFY(V4L2_CID_TEST_PATTERN_BLUE)
  XLAT(V4L2_CID_TEST_PATTERN_GREENB),
+ #define XLAT_VAL_312 ((unsigned) (V4L2_CID_TEST_PATTERN_GREENB))
+ #define XLAT_STR_312 STRINGIFY(V4L2_CID_TEST_PATTERN_GREENB)
+ XLAT(V4L2_CID_UNIT_CELL_SIZE),
+ #define XLAT_VAL_313 ((unsigned) (V4L2_CID_UNIT_CELL_SIZE))
+ #define XLAT_STR_313 STRINGIFY(V4L2_CID_UNIT_CELL_SIZE)
 
  XLAT(V4L2_CID_LINK_FREQ),
+ #define XLAT_VAL_314 ((unsigned) (V4L2_CID_LINK_FREQ))
+ #define XLAT_STR_314 STRINGIFY(V4L2_CID_LINK_FREQ)
  XLAT(V4L2_CID_PIXEL_RATE),
+ #define XLAT_VAL_315 ((unsigned) (V4L2_CID_PIXEL_RATE))
+ #define XLAT_STR_315 STRINGIFY(V4L2_CID_PIXEL_RATE)
  XLAT(V4L2_CID_TEST_PATTERN),
+ #define XLAT_VAL_316 ((unsigned) (V4L2_CID_TEST_PATTERN))
+ #define XLAT_STR_316 STRINGIFY(V4L2_CID_TEST_PATTERN)
  XLAT(V4L2_CID_DEINTERLACING_MODE),
+ #define XLAT_VAL_317 ((unsigned) (V4L2_CID_DEINTERLACING_MODE))
+ #define XLAT_STR_317 STRINGIFY(V4L2_CID_DEINTERLACING_MODE)
  XLAT(V4L2_CID_DIGITAL_GAIN),
+ #define XLAT_VAL_318 ((unsigned) (V4L2_CID_DIGITAL_GAIN))
+ #define XLAT_STR_318 STRINGIFY(V4L2_CID_DIGITAL_GAIN)
 
  XLAT(V4L2_CID_DV_TX_RGB_RANGE),
+ #define XLAT_VAL_319 ((unsigned) (V4L2_CID_DV_TX_RGB_RANGE))
+ #define XLAT_STR_319 STRINGIFY(V4L2_CID_DV_TX_RGB_RANGE)
  XLAT(V4L2_CID_DV_TX_IT_CONTENT_TYPE),
+ #define XLAT_VAL_320 ((unsigned) (V4L2_CID_DV_TX_IT_CONTENT_TYPE))
+ #define XLAT_STR_320 STRINGIFY(V4L2_CID_DV_TX_IT_CONTENT_TYPE)
  XLAT(V4L2_CID_DV_RX_RGB_RANGE),
+ #define XLAT_VAL_321 ((unsigned) (V4L2_CID_DV_RX_RGB_RANGE))
+ #define XLAT_STR_321 STRINGIFY(V4L2_CID_DV_RX_RGB_RANGE)
  XLAT(V4L2_CID_DV_RX_IT_CONTENT_TYPE),
+ #define XLAT_VAL_322 ((unsigned) (V4L2_CID_DV_RX_IT_CONTENT_TYPE))
+ #define XLAT_STR_322 STRINGIFY(V4L2_CID_DV_RX_IT_CONTENT_TYPE)
  XLAT(V4L2_CID_TUNE_DEEMPHASIS),
+ #define XLAT_VAL_323 ((unsigned) (V4L2_CID_TUNE_DEEMPHASIS))
+ #define XLAT_STR_323 STRINGIFY(V4L2_CID_TUNE_DEEMPHASIS)
  XLAT(V4L2_CID_RDS_RECEPTION),
+ #define XLAT_VAL_324 ((unsigned) (V4L2_CID_RDS_RECEPTION))
+ #define XLAT_STR_324 STRINGIFY(V4L2_CID_RDS_RECEPTION)
  XLAT(V4L2_CID_RDS_RX_PTY),
+ #define XLAT_VAL_325 ((unsigned) (V4L2_CID_RDS_RX_PTY))
+ #define XLAT_STR_325 STRINGIFY(V4L2_CID_RDS_RX_PTY)
  XLAT(V4L2_CID_RDS_RX_PS_NAME),
+ #define XLAT_VAL_326 ((unsigned) (V4L2_CID_RDS_RX_PS_NAME))
+ #define XLAT_STR_326 STRINGIFY(V4L2_CID_RDS_RX_PS_NAME)
  XLAT(V4L2_CID_RDS_RX_RADIO_TEXT),
+ #define XLAT_VAL_327 ((unsigned) (V4L2_CID_RDS_RX_RADIO_TEXT))
+ #define XLAT_STR_327 STRINGIFY(V4L2_CID_RDS_RX_RADIO_TEXT)
  XLAT(V4L2_CID_RDS_RX_TRAFFIC_ANNOUNCEMENT),
+ #define XLAT_VAL_328 ((unsigned) (V4L2_CID_RDS_RX_TRAFFIC_ANNOUNCEMENT))
+ #define XLAT_STR_328 STRINGIFY(V4L2_CID_RDS_RX_TRAFFIC_ANNOUNCEMENT)
  XLAT(V4L2_CID_RDS_RX_TRAFFIC_PROGRAM),
+ #define XLAT_VAL_329 ((unsigned) (V4L2_CID_RDS_RX_TRAFFIC_PROGRAM))
+ #define XLAT_STR_329 STRINGIFY(V4L2_CID_RDS_RX_TRAFFIC_PROGRAM)
  XLAT(V4L2_CID_RDS_RX_MUSIC_SPEECH),
+ #define XLAT_VAL_330 ((unsigned) (V4L2_CID_RDS_RX_MUSIC_SPEECH))
+ #define XLAT_STR_330 STRINGIFY(V4L2_CID_RDS_RX_MUSIC_SPEECH)
  XLAT(V4L2_CID_RF_TUNER_BANDWIDTH_AUTO),
+ #define XLAT_VAL_331 ((unsigned) (V4L2_CID_RF_TUNER_BANDWIDTH_AUTO))
+ #define XLAT_STR_331 STRINGIFY(V4L2_CID_RF_TUNER_BANDWIDTH_AUTO)
  XLAT(V4L2_CID_RF_TUNER_BANDWIDTH),
+ #define XLAT_VAL_332 ((unsigned) (V4L2_CID_RF_TUNER_BANDWIDTH))
+ #define XLAT_STR_332 STRINGIFY(V4L2_CID_RF_TUNER_BANDWIDTH)
  XLAT(V4L2_CID_RF_TUNER_RF_GAIN),
+ #define XLAT_VAL_333 ((unsigned) (V4L2_CID_RF_TUNER_RF_GAIN))
+ #define XLAT_STR_333 STRINGIFY(V4L2_CID_RF_TUNER_RF_GAIN)
  XLAT(V4L2_CID_RF_TUNER_LNA_GAIN_AUTO),
+ #define XLAT_VAL_334 ((unsigned) (V4L2_CID_RF_TUNER_LNA_GAIN_AUTO))
+ #define XLAT_STR_334 STRINGIFY(V4L2_CID_RF_TUNER_LNA_GAIN_AUTO)
  XLAT(V4L2_CID_RF_TUNER_LNA_GAIN),
+ #define XLAT_VAL_335 ((unsigned) (V4L2_CID_RF_TUNER_LNA_GAIN))
+ #define XLAT_STR_335 STRINGIFY(V4L2_CID_RF_TUNER_LNA_GAIN)
  XLAT(V4L2_CID_RF_TUNER_MIXER_GAIN_AUTO),
+ #define XLAT_VAL_336 ((unsigned) (V4L2_CID_RF_TUNER_MIXER_GAIN_AUTO))
+ #define XLAT_STR_336 STRINGIFY(V4L2_CID_RF_TUNER_MIXER_GAIN_AUTO)
  XLAT(V4L2_CID_RF_TUNER_MIXER_GAIN),
+ #define XLAT_VAL_337 ((unsigned) (V4L2_CID_RF_TUNER_MIXER_GAIN))
+ #define XLAT_STR_337 STRINGIFY(V4L2_CID_RF_TUNER_MIXER_GAIN)
  XLAT(V4L2_CID_RF_TUNER_IF_GAIN_AUTO),
+ #define XLAT_VAL_338 ((unsigned) (V4L2_CID_RF_TUNER_IF_GAIN_AUTO))
+ #define XLAT_STR_338 STRINGIFY(V4L2_CID_RF_TUNER_IF_GAIN_AUTO)
  XLAT(V4L2_CID_RF_TUNER_IF_GAIN),
+ #define XLAT_VAL_339 ((unsigned) (V4L2_CID_RF_TUNER_IF_GAIN))
+ #define XLAT_STR_339 STRINGIFY(V4L2_CID_RF_TUNER_IF_GAIN)
  XLAT(V4L2_CID_RF_TUNER_PLL_LOCK),
+ #define XLAT_VAL_340 ((unsigned) (V4L2_CID_RF_TUNER_PLL_LOCK))
+ #define XLAT_STR_340 STRINGIFY(V4L2_CID_RF_TUNER_PLL_LOCK)
 
  XLAT(V4L2_CID_DETECT_MD_MODE),
+ #define XLAT_VAL_341 ((unsigned) (V4L2_CID_DETECT_MD_MODE))
+ #define XLAT_STR_341 STRINGIFY(V4L2_CID_DETECT_MD_MODE)
  XLAT(V4L2_CID_DETECT_MD_GLOBAL_THRESHOLD),
+ #define XLAT_VAL_342 ((unsigned) (V4L2_CID_DETECT_MD_GLOBAL_THRESHOLD))
+ #define XLAT_STR_342 STRINGIFY(V4L2_CID_DETECT_MD_GLOBAL_THRESHOLD)
  XLAT(V4L2_CID_DETECT_MD_THRESHOLD_GRID),
+ #define XLAT_VAL_343 ((unsigned) (V4L2_CID_DETECT_MD_THRESHOLD_GRID))
+ #define XLAT_STR_343 STRINGIFY(V4L2_CID_DETECT_MD_THRESHOLD_GRID)
  XLAT(V4L2_CID_DETECT_MD_REGION_GRID),
- XLAT_END
+ #define XLAT_VAL_344 ((unsigned) (V4L2_CID_DETECT_MD_REGION_GRID))
+ #define XLAT_STR_344 STRINGIFY(V4L2_CID_DETECT_MD_REGION_GRID)
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat v4l2_control_ids[1] = { {
+ .data = v4l2_control_ids_xdata,
+ .size = ARRAY_SIZE(v4l2_control_ids_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+#  ifdef XLAT_VAL_30
+  | XLAT_VAL_30
+#  endif
+#  ifdef XLAT_VAL_31
+  | XLAT_VAL_31
+#  endif
+#  ifdef XLAT_VAL_32
+  | XLAT_VAL_32
+#  endif
+#  ifdef XLAT_VAL_33
+  | XLAT_VAL_33
+#  endif
+#  ifdef XLAT_VAL_34
+  | XLAT_VAL_34
+#  endif
+#  ifdef XLAT_VAL_35
+  | XLAT_VAL_35
+#  endif
+#  ifdef XLAT_VAL_36
+  | XLAT_VAL_36
+#  endif
+#  ifdef XLAT_VAL_37
+  | XLAT_VAL_37
+#  endif
+#  ifdef XLAT_VAL_38
+  | XLAT_VAL_38
+#  endif
+#  ifdef XLAT_VAL_39
+  | XLAT_VAL_39
+#  endif
+#  ifdef XLAT_VAL_40
+  | XLAT_VAL_40
+#  endif
+#  ifdef XLAT_VAL_41
+  | XLAT_VAL_41
+#  endif
+#  ifdef XLAT_VAL_42
+  | XLAT_VAL_42
+#  endif
+#  ifdef XLAT_VAL_43
+  | XLAT_VAL_43
+#  endif
+#  ifdef XLAT_VAL_44
+  | XLAT_VAL_44
+#  endif
+#  ifdef XLAT_VAL_45
+  | XLAT_VAL_45
+#  endif
+#  ifdef XLAT_VAL_46
+  | XLAT_VAL_46
+#  endif
+#  ifdef XLAT_VAL_47
+  | XLAT_VAL_47
+#  endif
+#  ifdef XLAT_VAL_48
+  | XLAT_VAL_48
+#  endif
+#  ifdef XLAT_VAL_49
+  | XLAT_VAL_49
+#  endif
+#  ifdef XLAT_VAL_50
+  | XLAT_VAL_50
+#  endif
+#  ifdef XLAT_VAL_51
+  | XLAT_VAL_51
+#  endif
+#  ifdef XLAT_VAL_52
+  | XLAT_VAL_52
+#  endif
+#  ifdef XLAT_VAL_53
+  | XLAT_VAL_53
+#  endif
+#  ifdef XLAT_VAL_54
+  | XLAT_VAL_54
+#  endif
+#  ifdef XLAT_VAL_55
+  | XLAT_VAL_55
+#  endif
+#  ifdef XLAT_VAL_56
+  | XLAT_VAL_56
+#  endif
+#  ifdef XLAT_VAL_57
+  | XLAT_VAL_57
+#  endif
+#  ifdef XLAT_VAL_58
+  | XLAT_VAL_58
+#  endif
+#  ifdef XLAT_VAL_59
+  | XLAT_VAL_59
+#  endif
+#  ifdef XLAT_VAL_60
+  | XLAT_VAL_60
+#  endif
+#  ifdef XLAT_VAL_61
+  | XLAT_VAL_61
+#  endif
+#  ifdef XLAT_VAL_62
+  | XLAT_VAL_62
+#  endif
+#  ifdef XLAT_VAL_63
+  | XLAT_VAL_63
+#  endif
+#  ifdef XLAT_VAL_64
+  | XLAT_VAL_64
+#  endif
+#  ifdef XLAT_VAL_65
+  | XLAT_VAL_65
+#  endif
+#  ifdef XLAT_VAL_66
+  | XLAT_VAL_66
+#  endif
+#  ifdef XLAT_VAL_67
+  | XLAT_VAL_67
+#  endif
+#  ifdef XLAT_VAL_68
+  | XLAT_VAL_68
+#  endif
+#  ifdef XLAT_VAL_69
+  | XLAT_VAL_69
+#  endif
+#  ifdef XLAT_VAL_70
+  | XLAT_VAL_70
+#  endif
+#  ifdef XLAT_VAL_71
+  | XLAT_VAL_71
+#  endif
+#  ifdef XLAT_VAL_72
+  | XLAT_VAL_72
+#  endif
+#  ifdef XLAT_VAL_73
+  | XLAT_VAL_73
+#  endif
+#  ifdef XLAT_VAL_74
+  | XLAT_VAL_74
+#  endif
+#  ifdef XLAT_VAL_75
+  | XLAT_VAL_75
+#  endif
+#  ifdef XLAT_VAL_76
+  | XLAT_VAL_76
+#  endif
+#  ifdef XLAT_VAL_77
+  | XLAT_VAL_77
+#  endif
+#  ifdef XLAT_VAL_78
+  | XLAT_VAL_78
+#  endif
+#  ifdef XLAT_VAL_79
+  | XLAT_VAL_79
+#  endif
+#  ifdef XLAT_VAL_80
+  | XLAT_VAL_80
+#  endif
+#  ifdef XLAT_VAL_81
+  | XLAT_VAL_81
+#  endif
+#  ifdef XLAT_VAL_82
+  | XLAT_VAL_82
+#  endif
+#  ifdef XLAT_VAL_83
+  | XLAT_VAL_83
+#  endif
+#  ifdef XLAT_VAL_84
+  | XLAT_VAL_84
+#  endif
+#  ifdef XLAT_VAL_85
+  | XLAT_VAL_85
+#  endif
+#  ifdef XLAT_VAL_86
+  | XLAT_VAL_86
+#  endif
+#  ifdef XLAT_VAL_87
+  | XLAT_VAL_87
+#  endif
+#  ifdef XLAT_VAL_88
+  | XLAT_VAL_88
+#  endif
+#  ifdef XLAT_VAL_89
+  | XLAT_VAL_89
+#  endif
+#  ifdef XLAT_VAL_90
+  | XLAT_VAL_90
+#  endif
+#  ifdef XLAT_VAL_91
+  | XLAT_VAL_91
+#  endif
+#  ifdef XLAT_VAL_92
+  | XLAT_VAL_92
+#  endif
+#  ifdef XLAT_VAL_93
+  | XLAT_VAL_93
+#  endif
+#  ifdef XLAT_VAL_94
+  | XLAT_VAL_94
+#  endif
+#  ifdef XLAT_VAL_95
+  | XLAT_VAL_95
+#  endif
+#  ifdef XLAT_VAL_96
+  | XLAT_VAL_96
+#  endif
+#  ifdef XLAT_VAL_97
+  | XLAT_VAL_97
+#  endif
+#  ifdef XLAT_VAL_98
+  | XLAT_VAL_98
+#  endif
+#  ifdef XLAT_VAL_99
+  | XLAT_VAL_99
+#  endif
+#  ifdef XLAT_VAL_100
+  | XLAT_VAL_100
+#  endif
+#  ifdef XLAT_VAL_101
+  | XLAT_VAL_101
+#  endif
+#  ifdef XLAT_VAL_102
+  | XLAT_VAL_102
+#  endif
+#  ifdef XLAT_VAL_103
+  | XLAT_VAL_103
+#  endif
+#  ifdef XLAT_VAL_104
+  | XLAT_VAL_104
+#  endif
+#  ifdef XLAT_VAL_105
+  | XLAT_VAL_105
+#  endif
+#  ifdef XLAT_VAL_106
+  | XLAT_VAL_106
+#  endif
+#  ifdef XLAT_VAL_107
+  | XLAT_VAL_107
+#  endif
+#  ifdef XLAT_VAL_108
+  | XLAT_VAL_108
+#  endif
+#  ifdef XLAT_VAL_109
+  | XLAT_VAL_109
+#  endif
+#  ifdef XLAT_VAL_110
+  | XLAT_VAL_110
+#  endif
+#  ifdef XLAT_VAL_111
+  | XLAT_VAL_111
+#  endif
+#  ifdef XLAT_VAL_112
+  | XLAT_VAL_112
+#  endif
+#  ifdef XLAT_VAL_113
+  | XLAT_VAL_113
+#  endif
+#  ifdef XLAT_VAL_114
+  | XLAT_VAL_114
+#  endif
+#  ifdef XLAT_VAL_115
+  | XLAT_VAL_115
+#  endif
+#  ifdef XLAT_VAL_116
+  | XLAT_VAL_116
+#  endif
+#  ifdef XLAT_VAL_117
+  | XLAT_VAL_117
+#  endif
+#  ifdef XLAT_VAL_118
+  | XLAT_VAL_118
+#  endif
+#  ifdef XLAT_VAL_119
+  | XLAT_VAL_119
+#  endif
+#  ifdef XLAT_VAL_120
+  | XLAT_VAL_120
+#  endif
+#  ifdef XLAT_VAL_121
+  | XLAT_VAL_121
+#  endif
+#  ifdef XLAT_VAL_122
+  | XLAT_VAL_122
+#  endif
+#  ifdef XLAT_VAL_123
+  | XLAT_VAL_123
+#  endif
+#  ifdef XLAT_VAL_124
+  | XLAT_VAL_124
+#  endif
+#  ifdef XLAT_VAL_125
+  | XLAT_VAL_125
+#  endif
+#  ifdef XLAT_VAL_126
+  | XLAT_VAL_126
+#  endif
+#  ifdef XLAT_VAL_127
+  | XLAT_VAL_127
+#  endif
+#  ifdef XLAT_VAL_128
+  | XLAT_VAL_128
+#  endif
+#  ifdef XLAT_VAL_129
+  | XLAT_VAL_129
+#  endif
+#  ifdef XLAT_VAL_130
+  | XLAT_VAL_130
+#  endif
+#  ifdef XLAT_VAL_131
+  | XLAT_VAL_131
+#  endif
+#  ifdef XLAT_VAL_132
+  | XLAT_VAL_132
+#  endif
+#  ifdef XLAT_VAL_133
+  | XLAT_VAL_133
+#  endif
+#  ifdef XLAT_VAL_134
+  | XLAT_VAL_134
+#  endif
+#  ifdef XLAT_VAL_135
+  | XLAT_VAL_135
+#  endif
+#  ifdef XLAT_VAL_136
+  | XLAT_VAL_136
+#  endif
+#  ifdef XLAT_VAL_137
+  | XLAT_VAL_137
+#  endif
+#  ifdef XLAT_VAL_138
+  | XLAT_VAL_138
+#  endif
+#  ifdef XLAT_VAL_139
+  | XLAT_VAL_139
+#  endif
+#  ifdef XLAT_VAL_140
+  | XLAT_VAL_140
+#  endif
+#  ifdef XLAT_VAL_141
+  | XLAT_VAL_141
+#  endif
+#  ifdef XLAT_VAL_142
+  | XLAT_VAL_142
+#  endif
+#  ifdef XLAT_VAL_143
+  | XLAT_VAL_143
+#  endif
+#  ifdef XLAT_VAL_144
+  | XLAT_VAL_144
+#  endif
+#  ifdef XLAT_VAL_145
+  | XLAT_VAL_145
+#  endif
+#  ifdef XLAT_VAL_146
+  | XLAT_VAL_146
+#  endif
+#  ifdef XLAT_VAL_147
+  | XLAT_VAL_147
+#  endif
+#  ifdef XLAT_VAL_148
+  | XLAT_VAL_148
+#  endif
+#  ifdef XLAT_VAL_149
+  | XLAT_VAL_149
+#  endif
+#  ifdef XLAT_VAL_150
+  | XLAT_VAL_150
+#  endif
+#  ifdef XLAT_VAL_151
+  | XLAT_VAL_151
+#  endif
+#  ifdef XLAT_VAL_152
+  | XLAT_VAL_152
+#  endif
+#  ifdef XLAT_VAL_153
+  | XLAT_VAL_153
+#  endif
+#  ifdef XLAT_VAL_154
+  | XLAT_VAL_154
+#  endif
+#  ifdef XLAT_VAL_155
+  | XLAT_VAL_155
+#  endif
+#  ifdef XLAT_VAL_156
+  | XLAT_VAL_156
+#  endif
+#  ifdef XLAT_VAL_157
+  | XLAT_VAL_157
+#  endif
+#  ifdef XLAT_VAL_158
+  | XLAT_VAL_158
+#  endif
+#  ifdef XLAT_VAL_159
+  | XLAT_VAL_159
+#  endif
+#  ifdef XLAT_VAL_160
+  | XLAT_VAL_160
+#  endif
+#  ifdef XLAT_VAL_161
+  | XLAT_VAL_161
+#  endif
+#  ifdef XLAT_VAL_162
+  | XLAT_VAL_162
+#  endif
+#  ifdef XLAT_VAL_163
+  | XLAT_VAL_163
+#  endif
+#  ifdef XLAT_VAL_164
+  | XLAT_VAL_164
+#  endif
+#  ifdef XLAT_VAL_165
+  | XLAT_VAL_165
+#  endif
+#  ifdef XLAT_VAL_166
+  | XLAT_VAL_166
+#  endif
+#  ifdef XLAT_VAL_167
+  | XLAT_VAL_167
+#  endif
+#  ifdef XLAT_VAL_168
+  | XLAT_VAL_168
+#  endif
+#  ifdef XLAT_VAL_169
+  | XLAT_VAL_169
+#  endif
+#  ifdef XLAT_VAL_170
+  | XLAT_VAL_170
+#  endif
+#  ifdef XLAT_VAL_171
+  | XLAT_VAL_171
+#  endif
+#  ifdef XLAT_VAL_172
+  | XLAT_VAL_172
+#  endif
+#  ifdef XLAT_VAL_173
+  | XLAT_VAL_173
+#  endif
+#  ifdef XLAT_VAL_174
+  | XLAT_VAL_174
+#  endif
+#  ifdef XLAT_VAL_175
+  | XLAT_VAL_175
+#  endif
+#  ifdef XLAT_VAL_176
+  | XLAT_VAL_176
+#  endif
+#  ifdef XLAT_VAL_177
+  | XLAT_VAL_177
+#  endif
+#  ifdef XLAT_VAL_178
+  | XLAT_VAL_178
+#  endif
+#  ifdef XLAT_VAL_179
+  | XLAT_VAL_179
+#  endif
+#  ifdef XLAT_VAL_180
+  | XLAT_VAL_180
+#  endif
+#  ifdef XLAT_VAL_181
+  | XLAT_VAL_181
+#  endif
+#  ifdef XLAT_VAL_182
+  | XLAT_VAL_182
+#  endif
+#  ifdef XLAT_VAL_183
+  | XLAT_VAL_183
+#  endif
+#  ifdef XLAT_VAL_184
+  | XLAT_VAL_184
+#  endif
+#  ifdef XLAT_VAL_185
+  | XLAT_VAL_185
+#  endif
+#  ifdef XLAT_VAL_186
+  | XLAT_VAL_186
+#  endif
+#  ifdef XLAT_VAL_187
+  | XLAT_VAL_187
+#  endif
+#  ifdef XLAT_VAL_188
+  | XLAT_VAL_188
+#  endif
+#  ifdef XLAT_VAL_189
+  | XLAT_VAL_189
+#  endif
+#  ifdef XLAT_VAL_190
+  | XLAT_VAL_190
+#  endif
+#  ifdef XLAT_VAL_191
+  | XLAT_VAL_191
+#  endif
+#  ifdef XLAT_VAL_192
+  | XLAT_VAL_192
+#  endif
+#  ifdef XLAT_VAL_193
+  | XLAT_VAL_193
+#  endif
+#  ifdef XLAT_VAL_194
+  | XLAT_VAL_194
+#  endif
+#  ifdef XLAT_VAL_195
+  | XLAT_VAL_195
+#  endif
+#  ifdef XLAT_VAL_196
+  | XLAT_VAL_196
+#  endif
+#  ifdef XLAT_VAL_197
+  | XLAT_VAL_197
+#  endif
+#  ifdef XLAT_VAL_198
+  | XLAT_VAL_198
+#  endif
+#  ifdef XLAT_VAL_199
+  | XLAT_VAL_199
+#  endif
+#  ifdef XLAT_VAL_200
+  | XLAT_VAL_200
+#  endif
+#  ifdef XLAT_VAL_201
+  | XLAT_VAL_201
+#  endif
+#  ifdef XLAT_VAL_202
+  | XLAT_VAL_202
+#  endif
+#  ifdef XLAT_VAL_203
+  | XLAT_VAL_203
+#  endif
+#  ifdef XLAT_VAL_204
+  | XLAT_VAL_204
+#  endif
+#  ifdef XLAT_VAL_205
+  | XLAT_VAL_205
+#  endif
+#  ifdef XLAT_VAL_206
+  | XLAT_VAL_206
+#  endif
+#  ifdef XLAT_VAL_207
+  | XLAT_VAL_207
+#  endif
+#  ifdef XLAT_VAL_208
+  | XLAT_VAL_208
+#  endif
+#  ifdef XLAT_VAL_209
+  | XLAT_VAL_209
+#  endif
+#  ifdef XLAT_VAL_210
+  | XLAT_VAL_210
+#  endif
+#  ifdef XLAT_VAL_211
+  | XLAT_VAL_211
+#  endif
+#  ifdef XLAT_VAL_212
+  | XLAT_VAL_212
+#  endif
+#  ifdef XLAT_VAL_213
+  | XLAT_VAL_213
+#  endif
+#  ifdef XLAT_VAL_214
+  | XLAT_VAL_214
+#  endif
+#  ifdef XLAT_VAL_215
+  | XLAT_VAL_215
+#  endif
+#  ifdef XLAT_VAL_216
+  | XLAT_VAL_216
+#  endif
+#  ifdef XLAT_VAL_217
+  | XLAT_VAL_217
+#  endif
+#  ifdef XLAT_VAL_218
+  | XLAT_VAL_218
+#  endif
+#  ifdef XLAT_VAL_219
+  | XLAT_VAL_219
+#  endif
+#  ifdef XLAT_VAL_220
+  | XLAT_VAL_220
+#  endif
+#  ifdef XLAT_VAL_221
+  | XLAT_VAL_221
+#  endif
+#  ifdef XLAT_VAL_222
+  | XLAT_VAL_222
+#  endif
+#  ifdef XLAT_VAL_223
+  | XLAT_VAL_223
+#  endif
+#  ifdef XLAT_VAL_224
+  | XLAT_VAL_224
+#  endif
+#  ifdef XLAT_VAL_225
+  | XLAT_VAL_225
+#  endif
+#  ifdef XLAT_VAL_226
+  | XLAT_VAL_226
+#  endif
+#  ifdef XLAT_VAL_227
+  | XLAT_VAL_227
+#  endif
+#  ifdef XLAT_VAL_228
+  | XLAT_VAL_228
+#  endif
+#  ifdef XLAT_VAL_229
+  | XLAT_VAL_229
+#  endif
+#  ifdef XLAT_VAL_230
+  | XLAT_VAL_230
+#  endif
+#  ifdef XLAT_VAL_231
+  | XLAT_VAL_231
+#  endif
+#  ifdef XLAT_VAL_232
+  | XLAT_VAL_232
+#  endif
+#  ifdef XLAT_VAL_233
+  | XLAT_VAL_233
+#  endif
+#  ifdef XLAT_VAL_234
+  | XLAT_VAL_234
+#  endif
+#  ifdef XLAT_VAL_235
+  | XLAT_VAL_235
+#  endif
+#  ifdef XLAT_VAL_236
+  | XLAT_VAL_236
+#  endif
+#  ifdef XLAT_VAL_237
+  | XLAT_VAL_237
+#  endif
+#  ifdef XLAT_VAL_238
+  | XLAT_VAL_238
+#  endif
+#  ifdef XLAT_VAL_239
+  | XLAT_VAL_239
+#  endif
+#  ifdef XLAT_VAL_240
+  | XLAT_VAL_240
+#  endif
+#  ifdef XLAT_VAL_241
+  | XLAT_VAL_241
+#  endif
+#  ifdef XLAT_VAL_242
+  | XLAT_VAL_242
+#  endif
+#  ifdef XLAT_VAL_243
+  | XLAT_VAL_243
+#  endif
+#  ifdef XLAT_VAL_244
+  | XLAT_VAL_244
+#  endif
+#  ifdef XLAT_VAL_245
+  | XLAT_VAL_245
+#  endif
+#  ifdef XLAT_VAL_246
+  | XLAT_VAL_246
+#  endif
+#  ifdef XLAT_VAL_247
+  | XLAT_VAL_247
+#  endif
+#  ifdef XLAT_VAL_248
+  | XLAT_VAL_248
+#  endif
+#  ifdef XLAT_VAL_249
+  | XLAT_VAL_249
+#  endif
+#  ifdef XLAT_VAL_250
+  | XLAT_VAL_250
+#  endif
+#  ifdef XLAT_VAL_251
+  | XLAT_VAL_251
+#  endif
+#  ifdef XLAT_VAL_252
+  | XLAT_VAL_252
+#  endif
+#  ifdef XLAT_VAL_253
+  | XLAT_VAL_253
+#  endif
+#  ifdef XLAT_VAL_254
+  | XLAT_VAL_254
+#  endif
+#  ifdef XLAT_VAL_255
+  | XLAT_VAL_255
+#  endif
+#  ifdef XLAT_VAL_256
+  | XLAT_VAL_256
+#  endif
+#  ifdef XLAT_VAL_257
+  | XLAT_VAL_257
+#  endif
+#  ifdef XLAT_VAL_258
+  | XLAT_VAL_258
+#  endif
+#  ifdef XLAT_VAL_259
+  | XLAT_VAL_259
+#  endif
+#  ifdef XLAT_VAL_260
+  | XLAT_VAL_260
+#  endif
+#  ifdef XLAT_VAL_261
+  | XLAT_VAL_261
+#  endif
+#  ifdef XLAT_VAL_262
+  | XLAT_VAL_262
+#  endif
+#  ifdef XLAT_VAL_263
+  | XLAT_VAL_263
+#  endif
+#  ifdef XLAT_VAL_264
+  | XLAT_VAL_264
+#  endif
+#  ifdef XLAT_VAL_265
+  | XLAT_VAL_265
+#  endif
+#  ifdef XLAT_VAL_266
+  | XLAT_VAL_266
+#  endif
+#  ifdef XLAT_VAL_267
+  | XLAT_VAL_267
+#  endif
+#  ifdef XLAT_VAL_268
+  | XLAT_VAL_268
+#  endif
+#  ifdef XLAT_VAL_269
+  | XLAT_VAL_269
+#  endif
+#  ifdef XLAT_VAL_270
+  | XLAT_VAL_270
+#  endif
+#  ifdef XLAT_VAL_271
+  | XLAT_VAL_271
+#  endif
+#  ifdef XLAT_VAL_272
+  | XLAT_VAL_272
+#  endif
+#  ifdef XLAT_VAL_273
+  | XLAT_VAL_273
+#  endif
+#  ifdef XLAT_VAL_274
+  | XLAT_VAL_274
+#  endif
+#  ifdef XLAT_VAL_275
+  | XLAT_VAL_275
+#  endif
+#  ifdef XLAT_VAL_276
+  | XLAT_VAL_276
+#  endif
+#  ifdef XLAT_VAL_277
+  | XLAT_VAL_277
+#  endif
+#  ifdef XLAT_VAL_278
+  | XLAT_VAL_278
+#  endif
+#  ifdef XLAT_VAL_279
+  | XLAT_VAL_279
+#  endif
+#  ifdef XLAT_VAL_280
+  | XLAT_VAL_280
+#  endif
+#  ifdef XLAT_VAL_281
+  | XLAT_VAL_281
+#  endif
+#  ifdef XLAT_VAL_282
+  | XLAT_VAL_282
+#  endif
+#  ifdef XLAT_VAL_283
+  | XLAT_VAL_283
+#  endif
+#  ifdef XLAT_VAL_284
+  | XLAT_VAL_284
+#  endif
+#  ifdef XLAT_VAL_285
+  | XLAT_VAL_285
+#  endif
+#  ifdef XLAT_VAL_286
+  | XLAT_VAL_286
+#  endif
+#  ifdef XLAT_VAL_287
+  | XLAT_VAL_287
+#  endif
+#  ifdef XLAT_VAL_288
+  | XLAT_VAL_288
+#  endif
+#  ifdef XLAT_VAL_289
+  | XLAT_VAL_289
+#  endif
+#  ifdef XLAT_VAL_290
+  | XLAT_VAL_290
+#  endif
+#  ifdef XLAT_VAL_291
+  | XLAT_VAL_291
+#  endif
+#  ifdef XLAT_VAL_292
+  | XLAT_VAL_292
+#  endif
+#  ifdef XLAT_VAL_293
+  | XLAT_VAL_293
+#  endif
+#  ifdef XLAT_VAL_294
+  | XLAT_VAL_294
+#  endif
+#  ifdef XLAT_VAL_295
+  | XLAT_VAL_295
+#  endif
+#  ifdef XLAT_VAL_296
+  | XLAT_VAL_296
+#  endif
+#  ifdef XLAT_VAL_297
+  | XLAT_VAL_297
+#  endif
+#  ifdef XLAT_VAL_298
+  | XLAT_VAL_298
+#  endif
+#  ifdef XLAT_VAL_299
+  | XLAT_VAL_299
+#  endif
+#  ifdef XLAT_VAL_300
+  | XLAT_VAL_300
+#  endif
+#  ifdef XLAT_VAL_301
+  | XLAT_VAL_301
+#  endif
+#  ifdef XLAT_VAL_302
+  | XLAT_VAL_302
+#  endif
+#  ifdef XLAT_VAL_303
+  | XLAT_VAL_303
+#  endif
+#  ifdef XLAT_VAL_304
+  | XLAT_VAL_304
+#  endif
+#  ifdef XLAT_VAL_305
+  | XLAT_VAL_305
+#  endif
+#  ifdef XLAT_VAL_306
+  | XLAT_VAL_306
+#  endif
+#  ifdef XLAT_VAL_307
+  | XLAT_VAL_307
+#  endif
+#  ifdef XLAT_VAL_308
+  | XLAT_VAL_308
+#  endif
+#  ifdef XLAT_VAL_309
+  | XLAT_VAL_309
+#  endif
+#  ifdef XLAT_VAL_310
+  | XLAT_VAL_310
+#  endif
+#  ifdef XLAT_VAL_311
+  | XLAT_VAL_311
+#  endif
+#  ifdef XLAT_VAL_312
+  | XLAT_VAL_312
+#  endif
+#  ifdef XLAT_VAL_313
+  | XLAT_VAL_313
+#  endif
+#  ifdef XLAT_VAL_314
+  | XLAT_VAL_314
+#  endif
+#  ifdef XLAT_VAL_315
+  | XLAT_VAL_315
+#  endif
+#  ifdef XLAT_VAL_316
+  | XLAT_VAL_316
+#  endif
+#  ifdef XLAT_VAL_317
+  | XLAT_VAL_317
+#  endif
+#  ifdef XLAT_VAL_318
+  | XLAT_VAL_318
+#  endif
+#  ifdef XLAT_VAL_319
+  | XLAT_VAL_319
+#  endif
+#  ifdef XLAT_VAL_320
+  | XLAT_VAL_320
+#  endif
+#  ifdef XLAT_VAL_321
+  | XLAT_VAL_321
+#  endif
+#  ifdef XLAT_VAL_322
+  | XLAT_VAL_322
+#  endif
+#  ifdef XLAT_VAL_323
+  | XLAT_VAL_323
+#  endif
+#  ifdef XLAT_VAL_324
+  | XLAT_VAL_324
+#  endif
+#  ifdef XLAT_VAL_325
+  | XLAT_VAL_325
+#  endif
+#  ifdef XLAT_VAL_326
+  | XLAT_VAL_326
+#  endif
+#  ifdef XLAT_VAL_327
+  | XLAT_VAL_327
+#  endif
+#  ifdef XLAT_VAL_328
+  | XLAT_VAL_328
+#  endif
+#  ifdef XLAT_VAL_329
+  | XLAT_VAL_329
+#  endif
+#  ifdef XLAT_VAL_330
+  | XLAT_VAL_330
+#  endif
+#  ifdef XLAT_VAL_331
+  | XLAT_VAL_331
+#  endif
+#  ifdef XLAT_VAL_332
+  | XLAT_VAL_332
+#  endif
+#  ifdef XLAT_VAL_333
+  | XLAT_VAL_333
+#  endif
+#  ifdef XLAT_VAL_334
+  | XLAT_VAL_334
+#  endif
+#  ifdef XLAT_VAL_335
+  | XLAT_VAL_335
+#  endif
+#  ifdef XLAT_VAL_336
+  | XLAT_VAL_336
+#  endif
+#  ifdef XLAT_VAL_337
+  | XLAT_VAL_337
+#  endif
+#  ifdef XLAT_VAL_338
+  | XLAT_VAL_338
+#  endif
+#  ifdef XLAT_VAL_339
+  | XLAT_VAL_339
+#  endif
+#  ifdef XLAT_VAL_340
+  | XLAT_VAL_340
+#  endif
+#  ifdef XLAT_VAL_341
+  | XLAT_VAL_341
+#  endif
+#  ifdef XLAT_VAL_342
+  | XLAT_VAL_342
+#  endif
+#  ifdef XLAT_VAL_343
+  | XLAT_VAL_343
+#  endif
+#  ifdef XLAT_VAL_344
+  | XLAT_VAL_344
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+#  ifdef XLAT_STR_30
+  + sizeof(XLAT_STR_30)
+#  endif
+#  ifdef XLAT_STR_31
+  + sizeof(XLAT_STR_31)
+#  endif
+#  ifdef XLAT_STR_32
+  + sizeof(XLAT_STR_32)
+#  endif
+#  ifdef XLAT_STR_33
+  + sizeof(XLAT_STR_33)
+#  endif
+#  ifdef XLAT_STR_34
+  + sizeof(XLAT_STR_34)
+#  endif
+#  ifdef XLAT_STR_35
+  + sizeof(XLAT_STR_35)
+#  endif
+#  ifdef XLAT_STR_36
+  + sizeof(XLAT_STR_36)
+#  endif
+#  ifdef XLAT_STR_37
+  + sizeof(XLAT_STR_37)
+#  endif
+#  ifdef XLAT_STR_38
+  + sizeof(XLAT_STR_38)
+#  endif
+#  ifdef XLAT_STR_39
+  + sizeof(XLAT_STR_39)
+#  endif
+#  ifdef XLAT_STR_40
+  + sizeof(XLAT_STR_40)
+#  endif
+#  ifdef XLAT_STR_41
+  + sizeof(XLAT_STR_41)
+#  endif
+#  ifdef XLAT_STR_42
+  + sizeof(XLAT_STR_42)
+#  endif
+#  ifdef XLAT_STR_43
+  + sizeof(XLAT_STR_43)
+#  endif
+#  ifdef XLAT_STR_44
+  + sizeof(XLAT_STR_44)
+#  endif
+#  ifdef XLAT_STR_45
+  + sizeof(XLAT_STR_45)
+#  endif
+#  ifdef XLAT_STR_46
+  + sizeof(XLAT_STR_46)
+#  endif
+#  ifdef XLAT_STR_47
+  + sizeof(XLAT_STR_47)
+#  endif
+#  ifdef XLAT_STR_48
+  + sizeof(XLAT_STR_48)
+#  endif
+#  ifdef XLAT_STR_49
+  + sizeof(XLAT_STR_49)
+#  endif
+#  ifdef XLAT_STR_50
+  + sizeof(XLAT_STR_50)
+#  endif
+#  ifdef XLAT_STR_51
+  + sizeof(XLAT_STR_51)
+#  endif
+#  ifdef XLAT_STR_52
+  + sizeof(XLAT_STR_52)
+#  endif
+#  ifdef XLAT_STR_53
+  + sizeof(XLAT_STR_53)
+#  endif
+#  ifdef XLAT_STR_54
+  + sizeof(XLAT_STR_54)
+#  endif
+#  ifdef XLAT_STR_55
+  + sizeof(XLAT_STR_55)
+#  endif
+#  ifdef XLAT_STR_56
+  + sizeof(XLAT_STR_56)
+#  endif
+#  ifdef XLAT_STR_57
+  + sizeof(XLAT_STR_57)
+#  endif
+#  ifdef XLAT_STR_58
+  + sizeof(XLAT_STR_58)
+#  endif
+#  ifdef XLAT_STR_59
+  + sizeof(XLAT_STR_59)
+#  endif
+#  ifdef XLAT_STR_60
+  + sizeof(XLAT_STR_60)
+#  endif
+#  ifdef XLAT_STR_61
+  + sizeof(XLAT_STR_61)
+#  endif
+#  ifdef XLAT_STR_62
+  + sizeof(XLAT_STR_62)
+#  endif
+#  ifdef XLAT_STR_63
+  + sizeof(XLAT_STR_63)
+#  endif
+#  ifdef XLAT_STR_64
+  + sizeof(XLAT_STR_64)
+#  endif
+#  ifdef XLAT_STR_65
+  + sizeof(XLAT_STR_65)
+#  endif
+#  ifdef XLAT_STR_66
+  + sizeof(XLAT_STR_66)
+#  endif
+#  ifdef XLAT_STR_67
+  + sizeof(XLAT_STR_67)
+#  endif
+#  ifdef XLAT_STR_68
+  + sizeof(XLAT_STR_68)
+#  endif
+#  ifdef XLAT_STR_69
+  + sizeof(XLAT_STR_69)
+#  endif
+#  ifdef XLAT_STR_70
+  + sizeof(XLAT_STR_70)
+#  endif
+#  ifdef XLAT_STR_71
+  + sizeof(XLAT_STR_71)
+#  endif
+#  ifdef XLAT_STR_72
+  + sizeof(XLAT_STR_72)
+#  endif
+#  ifdef XLAT_STR_73
+  + sizeof(XLAT_STR_73)
+#  endif
+#  ifdef XLAT_STR_74
+  + sizeof(XLAT_STR_74)
+#  endif
+#  ifdef XLAT_STR_75
+  + sizeof(XLAT_STR_75)
+#  endif
+#  ifdef XLAT_STR_76
+  + sizeof(XLAT_STR_76)
+#  endif
+#  ifdef XLAT_STR_77
+  + sizeof(XLAT_STR_77)
+#  endif
+#  ifdef XLAT_STR_78
+  + sizeof(XLAT_STR_78)
+#  endif
+#  ifdef XLAT_STR_79
+  + sizeof(XLAT_STR_79)
+#  endif
+#  ifdef XLAT_STR_80
+  + sizeof(XLAT_STR_80)
+#  endif
+#  ifdef XLAT_STR_81
+  + sizeof(XLAT_STR_81)
+#  endif
+#  ifdef XLAT_STR_82
+  + sizeof(XLAT_STR_82)
+#  endif
+#  ifdef XLAT_STR_83
+  + sizeof(XLAT_STR_83)
+#  endif
+#  ifdef XLAT_STR_84
+  + sizeof(XLAT_STR_84)
+#  endif
+#  ifdef XLAT_STR_85
+  + sizeof(XLAT_STR_85)
+#  endif
+#  ifdef XLAT_STR_86
+  + sizeof(XLAT_STR_86)
+#  endif
+#  ifdef XLAT_STR_87
+  + sizeof(XLAT_STR_87)
+#  endif
+#  ifdef XLAT_STR_88
+  + sizeof(XLAT_STR_88)
+#  endif
+#  ifdef XLAT_STR_89
+  + sizeof(XLAT_STR_89)
+#  endif
+#  ifdef XLAT_STR_90
+  + sizeof(XLAT_STR_90)
+#  endif
+#  ifdef XLAT_STR_91
+  + sizeof(XLAT_STR_91)
+#  endif
+#  ifdef XLAT_STR_92
+  + sizeof(XLAT_STR_92)
+#  endif
+#  ifdef XLAT_STR_93
+  + sizeof(XLAT_STR_93)
+#  endif
+#  ifdef XLAT_STR_94
+  + sizeof(XLAT_STR_94)
+#  endif
+#  ifdef XLAT_STR_95
+  + sizeof(XLAT_STR_95)
+#  endif
+#  ifdef XLAT_STR_96
+  + sizeof(XLAT_STR_96)
+#  endif
+#  ifdef XLAT_STR_97
+  + sizeof(XLAT_STR_97)
+#  endif
+#  ifdef XLAT_STR_98
+  + sizeof(XLAT_STR_98)
+#  endif
+#  ifdef XLAT_STR_99
+  + sizeof(XLAT_STR_99)
+#  endif
+#  ifdef XLAT_STR_100
+  + sizeof(XLAT_STR_100)
+#  endif
+#  ifdef XLAT_STR_101
+  + sizeof(XLAT_STR_101)
+#  endif
+#  ifdef XLAT_STR_102
+  + sizeof(XLAT_STR_102)
+#  endif
+#  ifdef XLAT_STR_103
+  + sizeof(XLAT_STR_103)
+#  endif
+#  ifdef XLAT_STR_104
+  + sizeof(XLAT_STR_104)
+#  endif
+#  ifdef XLAT_STR_105
+  + sizeof(XLAT_STR_105)
+#  endif
+#  ifdef XLAT_STR_106
+  + sizeof(XLAT_STR_106)
+#  endif
+#  ifdef XLAT_STR_107
+  + sizeof(XLAT_STR_107)
+#  endif
+#  ifdef XLAT_STR_108
+  + sizeof(XLAT_STR_108)
+#  endif
+#  ifdef XLAT_STR_109
+  + sizeof(XLAT_STR_109)
+#  endif
+#  ifdef XLAT_STR_110
+  + sizeof(XLAT_STR_110)
+#  endif
+#  ifdef XLAT_STR_111
+  + sizeof(XLAT_STR_111)
+#  endif
+#  ifdef XLAT_STR_112
+  + sizeof(XLAT_STR_112)
+#  endif
+#  ifdef XLAT_STR_113
+  + sizeof(XLAT_STR_113)
+#  endif
+#  ifdef XLAT_STR_114
+  + sizeof(XLAT_STR_114)
+#  endif
+#  ifdef XLAT_STR_115
+  + sizeof(XLAT_STR_115)
+#  endif
+#  ifdef XLAT_STR_116
+  + sizeof(XLAT_STR_116)
+#  endif
+#  ifdef XLAT_STR_117
+  + sizeof(XLAT_STR_117)
+#  endif
+#  ifdef XLAT_STR_118
+  + sizeof(XLAT_STR_118)
+#  endif
+#  ifdef XLAT_STR_119
+  + sizeof(XLAT_STR_119)
+#  endif
+#  ifdef XLAT_STR_120
+  + sizeof(XLAT_STR_120)
+#  endif
+#  ifdef XLAT_STR_121
+  + sizeof(XLAT_STR_121)
+#  endif
+#  ifdef XLAT_STR_122
+  + sizeof(XLAT_STR_122)
+#  endif
+#  ifdef XLAT_STR_123
+  + sizeof(XLAT_STR_123)
+#  endif
+#  ifdef XLAT_STR_124
+  + sizeof(XLAT_STR_124)
+#  endif
+#  ifdef XLAT_STR_125
+  + sizeof(XLAT_STR_125)
+#  endif
+#  ifdef XLAT_STR_126
+  + sizeof(XLAT_STR_126)
+#  endif
+#  ifdef XLAT_STR_127
+  + sizeof(XLAT_STR_127)
+#  endif
+#  ifdef XLAT_STR_128
+  + sizeof(XLAT_STR_128)
+#  endif
+#  ifdef XLAT_STR_129
+  + sizeof(XLAT_STR_129)
+#  endif
+#  ifdef XLAT_STR_130
+  + sizeof(XLAT_STR_130)
+#  endif
+#  ifdef XLAT_STR_131
+  + sizeof(XLAT_STR_131)
+#  endif
+#  ifdef XLAT_STR_132
+  + sizeof(XLAT_STR_132)
+#  endif
+#  ifdef XLAT_STR_133
+  + sizeof(XLAT_STR_133)
+#  endif
+#  ifdef XLAT_STR_134
+  + sizeof(XLAT_STR_134)
+#  endif
+#  ifdef XLAT_STR_135
+  + sizeof(XLAT_STR_135)
+#  endif
+#  ifdef XLAT_STR_136
+  + sizeof(XLAT_STR_136)
+#  endif
+#  ifdef XLAT_STR_137
+  + sizeof(XLAT_STR_137)
+#  endif
+#  ifdef XLAT_STR_138
+  + sizeof(XLAT_STR_138)
+#  endif
+#  ifdef XLAT_STR_139
+  + sizeof(XLAT_STR_139)
+#  endif
+#  ifdef XLAT_STR_140
+  + sizeof(XLAT_STR_140)
+#  endif
+#  ifdef XLAT_STR_141
+  + sizeof(XLAT_STR_141)
+#  endif
+#  ifdef XLAT_STR_142
+  + sizeof(XLAT_STR_142)
+#  endif
+#  ifdef XLAT_STR_143
+  + sizeof(XLAT_STR_143)
+#  endif
+#  ifdef XLAT_STR_144
+  + sizeof(XLAT_STR_144)
+#  endif
+#  ifdef XLAT_STR_145
+  + sizeof(XLAT_STR_145)
+#  endif
+#  ifdef XLAT_STR_146
+  + sizeof(XLAT_STR_146)
+#  endif
+#  ifdef XLAT_STR_147
+  + sizeof(XLAT_STR_147)
+#  endif
+#  ifdef XLAT_STR_148
+  + sizeof(XLAT_STR_148)
+#  endif
+#  ifdef XLAT_STR_149
+  + sizeof(XLAT_STR_149)
+#  endif
+#  ifdef XLAT_STR_150
+  + sizeof(XLAT_STR_150)
+#  endif
+#  ifdef XLAT_STR_151
+  + sizeof(XLAT_STR_151)
+#  endif
+#  ifdef XLAT_STR_152
+  + sizeof(XLAT_STR_152)
+#  endif
+#  ifdef XLAT_STR_153
+  + sizeof(XLAT_STR_153)
+#  endif
+#  ifdef XLAT_STR_154
+  + sizeof(XLAT_STR_154)
+#  endif
+#  ifdef XLAT_STR_155
+  + sizeof(XLAT_STR_155)
+#  endif
+#  ifdef XLAT_STR_156
+  + sizeof(XLAT_STR_156)
+#  endif
+#  ifdef XLAT_STR_157
+  + sizeof(XLAT_STR_157)
+#  endif
+#  ifdef XLAT_STR_158
+  + sizeof(XLAT_STR_158)
+#  endif
+#  ifdef XLAT_STR_159
+  + sizeof(XLAT_STR_159)
+#  endif
+#  ifdef XLAT_STR_160
+  + sizeof(XLAT_STR_160)
+#  endif
+#  ifdef XLAT_STR_161
+  + sizeof(XLAT_STR_161)
+#  endif
+#  ifdef XLAT_STR_162
+  + sizeof(XLAT_STR_162)
+#  endif
+#  ifdef XLAT_STR_163
+  + sizeof(XLAT_STR_163)
+#  endif
+#  ifdef XLAT_STR_164
+  + sizeof(XLAT_STR_164)
+#  endif
+#  ifdef XLAT_STR_165
+  + sizeof(XLAT_STR_165)
+#  endif
+#  ifdef XLAT_STR_166
+  + sizeof(XLAT_STR_166)
+#  endif
+#  ifdef XLAT_STR_167
+  + sizeof(XLAT_STR_167)
+#  endif
+#  ifdef XLAT_STR_168
+  + sizeof(XLAT_STR_168)
+#  endif
+#  ifdef XLAT_STR_169
+  + sizeof(XLAT_STR_169)
+#  endif
+#  ifdef XLAT_STR_170
+  + sizeof(XLAT_STR_170)
+#  endif
+#  ifdef XLAT_STR_171
+  + sizeof(XLAT_STR_171)
+#  endif
+#  ifdef XLAT_STR_172
+  + sizeof(XLAT_STR_172)
+#  endif
+#  ifdef XLAT_STR_173
+  + sizeof(XLAT_STR_173)
+#  endif
+#  ifdef XLAT_STR_174
+  + sizeof(XLAT_STR_174)
+#  endif
+#  ifdef XLAT_STR_175
+  + sizeof(XLAT_STR_175)
+#  endif
+#  ifdef XLAT_STR_176
+  + sizeof(XLAT_STR_176)
+#  endif
+#  ifdef XLAT_STR_177
+  + sizeof(XLAT_STR_177)
+#  endif
+#  ifdef XLAT_STR_178
+  + sizeof(XLAT_STR_178)
+#  endif
+#  ifdef XLAT_STR_179
+  + sizeof(XLAT_STR_179)
+#  endif
+#  ifdef XLAT_STR_180
+  + sizeof(XLAT_STR_180)
+#  endif
+#  ifdef XLAT_STR_181
+  + sizeof(XLAT_STR_181)
+#  endif
+#  ifdef XLAT_STR_182
+  + sizeof(XLAT_STR_182)
+#  endif
+#  ifdef XLAT_STR_183
+  + sizeof(XLAT_STR_183)
+#  endif
+#  ifdef XLAT_STR_184
+  + sizeof(XLAT_STR_184)
+#  endif
+#  ifdef XLAT_STR_185
+  + sizeof(XLAT_STR_185)
+#  endif
+#  ifdef XLAT_STR_186
+  + sizeof(XLAT_STR_186)
+#  endif
+#  ifdef XLAT_STR_187
+  + sizeof(XLAT_STR_187)
+#  endif
+#  ifdef XLAT_STR_188
+  + sizeof(XLAT_STR_188)
+#  endif
+#  ifdef XLAT_STR_189
+  + sizeof(XLAT_STR_189)
+#  endif
+#  ifdef XLAT_STR_190
+  + sizeof(XLAT_STR_190)
+#  endif
+#  ifdef XLAT_STR_191
+  + sizeof(XLAT_STR_191)
+#  endif
+#  ifdef XLAT_STR_192
+  + sizeof(XLAT_STR_192)
+#  endif
+#  ifdef XLAT_STR_193
+  + sizeof(XLAT_STR_193)
+#  endif
+#  ifdef XLAT_STR_194
+  + sizeof(XLAT_STR_194)
+#  endif
+#  ifdef XLAT_STR_195
+  + sizeof(XLAT_STR_195)
+#  endif
+#  ifdef XLAT_STR_196
+  + sizeof(XLAT_STR_196)
+#  endif
+#  ifdef XLAT_STR_197
+  + sizeof(XLAT_STR_197)
+#  endif
+#  ifdef XLAT_STR_198
+  + sizeof(XLAT_STR_198)
+#  endif
+#  ifdef XLAT_STR_199
+  + sizeof(XLAT_STR_199)
+#  endif
+#  ifdef XLAT_STR_200
+  + sizeof(XLAT_STR_200)
+#  endif
+#  ifdef XLAT_STR_201
+  + sizeof(XLAT_STR_201)
+#  endif
+#  ifdef XLAT_STR_202
+  + sizeof(XLAT_STR_202)
+#  endif
+#  ifdef XLAT_STR_203
+  + sizeof(XLAT_STR_203)
+#  endif
+#  ifdef XLAT_STR_204
+  + sizeof(XLAT_STR_204)
+#  endif
+#  ifdef XLAT_STR_205
+  + sizeof(XLAT_STR_205)
+#  endif
+#  ifdef XLAT_STR_206
+  + sizeof(XLAT_STR_206)
+#  endif
+#  ifdef XLAT_STR_207
+  + sizeof(XLAT_STR_207)
+#  endif
+#  ifdef XLAT_STR_208
+  + sizeof(XLAT_STR_208)
+#  endif
+#  ifdef XLAT_STR_209
+  + sizeof(XLAT_STR_209)
+#  endif
+#  ifdef XLAT_STR_210
+  + sizeof(XLAT_STR_210)
+#  endif
+#  ifdef XLAT_STR_211
+  + sizeof(XLAT_STR_211)
+#  endif
+#  ifdef XLAT_STR_212
+  + sizeof(XLAT_STR_212)
+#  endif
+#  ifdef XLAT_STR_213
+  + sizeof(XLAT_STR_213)
+#  endif
+#  ifdef XLAT_STR_214
+  + sizeof(XLAT_STR_214)
+#  endif
+#  ifdef XLAT_STR_215
+  + sizeof(XLAT_STR_215)
+#  endif
+#  ifdef XLAT_STR_216
+  + sizeof(XLAT_STR_216)
+#  endif
+#  ifdef XLAT_STR_217
+  + sizeof(XLAT_STR_217)
+#  endif
+#  ifdef XLAT_STR_218
+  + sizeof(XLAT_STR_218)
+#  endif
+#  ifdef XLAT_STR_219
+  + sizeof(XLAT_STR_219)
+#  endif
+#  ifdef XLAT_STR_220
+  + sizeof(XLAT_STR_220)
+#  endif
+#  ifdef XLAT_STR_221
+  + sizeof(XLAT_STR_221)
+#  endif
+#  ifdef XLAT_STR_222
+  + sizeof(XLAT_STR_222)
+#  endif
+#  ifdef XLAT_STR_223
+  + sizeof(XLAT_STR_223)
+#  endif
+#  ifdef XLAT_STR_224
+  + sizeof(XLAT_STR_224)
+#  endif
+#  ifdef XLAT_STR_225
+  + sizeof(XLAT_STR_225)
+#  endif
+#  ifdef XLAT_STR_226
+  + sizeof(XLAT_STR_226)
+#  endif
+#  ifdef XLAT_STR_227
+  + sizeof(XLAT_STR_227)
+#  endif
+#  ifdef XLAT_STR_228
+  + sizeof(XLAT_STR_228)
+#  endif
+#  ifdef XLAT_STR_229
+  + sizeof(XLAT_STR_229)
+#  endif
+#  ifdef XLAT_STR_230
+  + sizeof(XLAT_STR_230)
+#  endif
+#  ifdef XLAT_STR_231
+  + sizeof(XLAT_STR_231)
+#  endif
+#  ifdef XLAT_STR_232
+  + sizeof(XLAT_STR_232)
+#  endif
+#  ifdef XLAT_STR_233
+  + sizeof(XLAT_STR_233)
+#  endif
+#  ifdef XLAT_STR_234
+  + sizeof(XLAT_STR_234)
+#  endif
+#  ifdef XLAT_STR_235
+  + sizeof(XLAT_STR_235)
+#  endif
+#  ifdef XLAT_STR_236
+  + sizeof(XLAT_STR_236)
+#  endif
+#  ifdef XLAT_STR_237
+  + sizeof(XLAT_STR_237)
+#  endif
+#  ifdef XLAT_STR_238
+  + sizeof(XLAT_STR_238)
+#  endif
+#  ifdef XLAT_STR_239
+  + sizeof(XLAT_STR_239)
+#  endif
+#  ifdef XLAT_STR_240
+  + sizeof(XLAT_STR_240)
+#  endif
+#  ifdef XLAT_STR_241
+  + sizeof(XLAT_STR_241)
+#  endif
+#  ifdef XLAT_STR_242
+  + sizeof(XLAT_STR_242)
+#  endif
+#  ifdef XLAT_STR_243
+  + sizeof(XLAT_STR_243)
+#  endif
+#  ifdef XLAT_STR_244
+  + sizeof(XLAT_STR_244)
+#  endif
+#  ifdef XLAT_STR_245
+  + sizeof(XLAT_STR_245)
+#  endif
+#  ifdef XLAT_STR_246
+  + sizeof(XLAT_STR_246)
+#  endif
+#  ifdef XLAT_STR_247
+  + sizeof(XLAT_STR_247)
+#  endif
+#  ifdef XLAT_STR_248
+  + sizeof(XLAT_STR_248)
+#  endif
+#  ifdef XLAT_STR_249
+  + sizeof(XLAT_STR_249)
+#  endif
+#  ifdef XLAT_STR_250
+  + sizeof(XLAT_STR_250)
+#  endif
+#  ifdef XLAT_STR_251
+  + sizeof(XLAT_STR_251)
+#  endif
+#  ifdef XLAT_STR_252
+  + sizeof(XLAT_STR_252)
+#  endif
+#  ifdef XLAT_STR_253
+  + sizeof(XLAT_STR_253)
+#  endif
+#  ifdef XLAT_STR_254
+  + sizeof(XLAT_STR_254)
+#  endif
+#  ifdef XLAT_STR_255
+  + sizeof(XLAT_STR_255)
+#  endif
+#  ifdef XLAT_STR_256
+  + sizeof(XLAT_STR_256)
+#  endif
+#  ifdef XLAT_STR_257
+  + sizeof(XLAT_STR_257)
+#  endif
+#  ifdef XLAT_STR_258
+  + sizeof(XLAT_STR_258)
+#  endif
+#  ifdef XLAT_STR_259
+  + sizeof(XLAT_STR_259)
+#  endif
+#  ifdef XLAT_STR_260
+  + sizeof(XLAT_STR_260)
+#  endif
+#  ifdef XLAT_STR_261
+  + sizeof(XLAT_STR_261)
+#  endif
+#  ifdef XLAT_STR_262
+  + sizeof(XLAT_STR_262)
+#  endif
+#  ifdef XLAT_STR_263
+  + sizeof(XLAT_STR_263)
+#  endif
+#  ifdef XLAT_STR_264
+  + sizeof(XLAT_STR_264)
+#  endif
+#  ifdef XLAT_STR_265
+  + sizeof(XLAT_STR_265)
+#  endif
+#  ifdef XLAT_STR_266
+  + sizeof(XLAT_STR_266)
+#  endif
+#  ifdef XLAT_STR_267
+  + sizeof(XLAT_STR_267)
+#  endif
+#  ifdef XLAT_STR_268
+  + sizeof(XLAT_STR_268)
+#  endif
+#  ifdef XLAT_STR_269
+  + sizeof(XLAT_STR_269)
+#  endif
+#  ifdef XLAT_STR_270
+  + sizeof(XLAT_STR_270)
+#  endif
+#  ifdef XLAT_STR_271
+  + sizeof(XLAT_STR_271)
+#  endif
+#  ifdef XLAT_STR_272
+  + sizeof(XLAT_STR_272)
+#  endif
+#  ifdef XLAT_STR_273
+  + sizeof(XLAT_STR_273)
+#  endif
+#  ifdef XLAT_STR_274
+  + sizeof(XLAT_STR_274)
+#  endif
+#  ifdef XLAT_STR_275
+  + sizeof(XLAT_STR_275)
+#  endif
+#  ifdef XLAT_STR_276
+  + sizeof(XLAT_STR_276)
+#  endif
+#  ifdef XLAT_STR_277
+  + sizeof(XLAT_STR_277)
+#  endif
+#  ifdef XLAT_STR_278
+  + sizeof(XLAT_STR_278)
+#  endif
+#  ifdef XLAT_STR_279
+  + sizeof(XLAT_STR_279)
+#  endif
+#  ifdef XLAT_STR_280
+  + sizeof(XLAT_STR_280)
+#  endif
+#  ifdef XLAT_STR_281
+  + sizeof(XLAT_STR_281)
+#  endif
+#  ifdef XLAT_STR_282
+  + sizeof(XLAT_STR_282)
+#  endif
+#  ifdef XLAT_STR_283
+  + sizeof(XLAT_STR_283)
+#  endif
+#  ifdef XLAT_STR_284
+  + sizeof(XLAT_STR_284)
+#  endif
+#  ifdef XLAT_STR_285
+  + sizeof(XLAT_STR_285)
+#  endif
+#  ifdef XLAT_STR_286
+  + sizeof(XLAT_STR_286)
+#  endif
+#  ifdef XLAT_STR_287
+  + sizeof(XLAT_STR_287)
+#  endif
+#  ifdef XLAT_STR_288
+  + sizeof(XLAT_STR_288)
+#  endif
+#  ifdef XLAT_STR_289
+  + sizeof(XLAT_STR_289)
+#  endif
+#  ifdef XLAT_STR_290
+  + sizeof(XLAT_STR_290)
+#  endif
+#  ifdef XLAT_STR_291
+  + sizeof(XLAT_STR_291)
+#  endif
+#  ifdef XLAT_STR_292
+  + sizeof(XLAT_STR_292)
+#  endif
+#  ifdef XLAT_STR_293
+  + sizeof(XLAT_STR_293)
+#  endif
+#  ifdef XLAT_STR_294
+  + sizeof(XLAT_STR_294)
+#  endif
+#  ifdef XLAT_STR_295
+  + sizeof(XLAT_STR_295)
+#  endif
+#  ifdef XLAT_STR_296
+  + sizeof(XLAT_STR_296)
+#  endif
+#  ifdef XLAT_STR_297
+  + sizeof(XLAT_STR_297)
+#  endif
+#  ifdef XLAT_STR_298
+  + sizeof(XLAT_STR_298)
+#  endif
+#  ifdef XLAT_STR_299
+  + sizeof(XLAT_STR_299)
+#  endif
+#  ifdef XLAT_STR_300
+  + sizeof(XLAT_STR_300)
+#  endif
+#  ifdef XLAT_STR_301
+  + sizeof(XLAT_STR_301)
+#  endif
+#  ifdef XLAT_STR_302
+  + sizeof(XLAT_STR_302)
+#  endif
+#  ifdef XLAT_STR_303
+  + sizeof(XLAT_STR_303)
+#  endif
+#  ifdef XLAT_STR_304
+  + sizeof(XLAT_STR_304)
+#  endif
+#  ifdef XLAT_STR_305
+  + sizeof(XLAT_STR_305)
+#  endif
+#  ifdef XLAT_STR_306
+  + sizeof(XLAT_STR_306)
+#  endif
+#  ifdef XLAT_STR_307
+  + sizeof(XLAT_STR_307)
+#  endif
+#  ifdef XLAT_STR_308
+  + sizeof(XLAT_STR_308)
+#  endif
+#  ifdef XLAT_STR_309
+  + sizeof(XLAT_STR_309)
+#  endif
+#  ifdef XLAT_STR_310
+  + sizeof(XLAT_STR_310)
+#  endif
+#  ifdef XLAT_STR_311
+  + sizeof(XLAT_STR_311)
+#  endif
+#  ifdef XLAT_STR_312
+  + sizeof(XLAT_STR_312)
+#  endif
+#  ifdef XLAT_STR_313
+  + sizeof(XLAT_STR_313)
+#  endif
+#  ifdef XLAT_STR_314
+  + sizeof(XLAT_STR_314)
+#  endif
+#  ifdef XLAT_STR_315
+  + sizeof(XLAT_STR_315)
+#  endif
+#  ifdef XLAT_STR_316
+  + sizeof(XLAT_STR_316)
+#  endif
+#  ifdef XLAT_STR_317
+  + sizeof(XLAT_STR_317)
+#  endif
+#  ifdef XLAT_STR_318
+  + sizeof(XLAT_STR_318)
+#  endif
+#  ifdef XLAT_STR_319
+  + sizeof(XLAT_STR_319)
+#  endif
+#  ifdef XLAT_STR_320
+  + sizeof(XLAT_STR_320)
+#  endif
+#  ifdef XLAT_STR_321
+  + sizeof(XLAT_STR_321)
+#  endif
+#  ifdef XLAT_STR_322
+  + sizeof(XLAT_STR_322)
+#  endif
+#  ifdef XLAT_STR_323
+  + sizeof(XLAT_STR_323)
+#  endif
+#  ifdef XLAT_STR_324
+  + sizeof(XLAT_STR_324)
+#  endif
+#  ifdef XLAT_STR_325
+  + sizeof(XLAT_STR_325)
+#  endif
+#  ifdef XLAT_STR_326
+  + sizeof(XLAT_STR_326)
+#  endif
+#  ifdef XLAT_STR_327
+  + sizeof(XLAT_STR_327)
+#  endif
+#  ifdef XLAT_STR_328
+  + sizeof(XLAT_STR_328)
+#  endif
+#  ifdef XLAT_STR_329
+  + sizeof(XLAT_STR_329)
+#  endif
+#  ifdef XLAT_STR_330
+  + sizeof(XLAT_STR_330)
+#  endif
+#  ifdef XLAT_STR_331
+  + sizeof(XLAT_STR_331)
+#  endif
+#  ifdef XLAT_STR_332
+  + sizeof(XLAT_STR_332)
+#  endif
+#  ifdef XLAT_STR_333
+  + sizeof(XLAT_STR_333)
+#  endif
+#  ifdef XLAT_STR_334
+  + sizeof(XLAT_STR_334)
+#  endif
+#  ifdef XLAT_STR_335
+  + sizeof(XLAT_STR_335)
+#  endif
+#  ifdef XLAT_STR_336
+  + sizeof(XLAT_STR_336)
+#  endif
+#  ifdef XLAT_STR_337
+  + sizeof(XLAT_STR_337)
+#  endif
+#  ifdef XLAT_STR_338
+  + sizeof(XLAT_STR_338)
+#  endif
+#  ifdef XLAT_STR_339
+  + sizeof(XLAT_STR_339)
+#  endif
+#  ifdef XLAT_STR_340
+  + sizeof(XLAT_STR_340)
+#  endif
+#  ifdef XLAT_STR_341
+  + sizeof(XLAT_STR_341)
+#  endif
+#  ifdef XLAT_STR_342
+  + sizeof(XLAT_STR_342)
+#  endif
+#  ifdef XLAT_STR_343
+  + sizeof(XLAT_STR_343)
+#  endif
+#  ifdef XLAT_STR_344
+  + sizeof(XLAT_STR_344)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
+#  undef XLAT_STR_30
+#  undef XLAT_VAL_30
+#  undef XLAT_STR_31
+#  undef XLAT_VAL_31
+#  undef XLAT_STR_32
+#  undef XLAT_VAL_32
+#  undef XLAT_STR_33
+#  undef XLAT_VAL_33
+#  undef XLAT_STR_34
+#  undef XLAT_VAL_34
+#  undef XLAT_STR_35
+#  undef XLAT_VAL_35
+#  undef XLAT_STR_36
+#  undef XLAT_VAL_36
+#  undef XLAT_STR_37
+#  undef XLAT_VAL_37
+#  undef XLAT_STR_38
+#  undef XLAT_VAL_38
+#  undef XLAT_STR_39
+#  undef XLAT_VAL_39
+#  undef XLAT_STR_40
+#  undef XLAT_VAL_40
+#  undef XLAT_STR_41
+#  undef XLAT_VAL_41
+#  undef XLAT_STR_42
+#  undef XLAT_VAL_42
+#  undef XLAT_STR_43
+#  undef XLAT_VAL_43
+#  undef XLAT_STR_44
+#  undef XLAT_VAL_44
+#  undef XLAT_STR_45
+#  undef XLAT_VAL_45
+#  undef XLAT_STR_46
+#  undef XLAT_VAL_46
+#  undef XLAT_STR_47
+#  undef XLAT_VAL_47
+#  undef XLAT_STR_48
+#  undef XLAT_VAL_48
+#  undef XLAT_STR_49
+#  undef XLAT_VAL_49
+#  undef XLAT_STR_50
+#  undef XLAT_VAL_50
+#  undef XLAT_STR_51
+#  undef XLAT_VAL_51
+#  undef XLAT_STR_52
+#  undef XLAT_VAL_52
+#  undef XLAT_STR_53
+#  undef XLAT_VAL_53
+#  undef XLAT_STR_54
+#  undef XLAT_VAL_54
+#  undef XLAT_STR_55
+#  undef XLAT_VAL_55
+#  undef XLAT_STR_56
+#  undef XLAT_VAL_56
+#  undef XLAT_STR_57
+#  undef XLAT_VAL_57
+#  undef XLAT_STR_58
+#  undef XLAT_VAL_58
+#  undef XLAT_STR_59
+#  undef XLAT_VAL_59
+#  undef XLAT_STR_60
+#  undef XLAT_VAL_60
+#  undef XLAT_STR_61
+#  undef XLAT_VAL_61
+#  undef XLAT_STR_62
+#  undef XLAT_VAL_62
+#  undef XLAT_STR_63
+#  undef XLAT_VAL_63
+#  undef XLAT_STR_64
+#  undef XLAT_VAL_64
+#  undef XLAT_STR_65
+#  undef XLAT_VAL_65
+#  undef XLAT_STR_66
+#  undef XLAT_VAL_66
+#  undef XLAT_STR_67
+#  undef XLAT_VAL_67
+#  undef XLAT_STR_68
+#  undef XLAT_VAL_68
+#  undef XLAT_STR_69
+#  undef XLAT_VAL_69
+#  undef XLAT_STR_70
+#  undef XLAT_VAL_70
+#  undef XLAT_STR_71
+#  undef XLAT_VAL_71
+#  undef XLAT_STR_72
+#  undef XLAT_VAL_72
+#  undef XLAT_STR_73
+#  undef XLAT_VAL_73
+#  undef XLAT_STR_74
+#  undef XLAT_VAL_74
+#  undef XLAT_STR_75
+#  undef XLAT_VAL_75
+#  undef XLAT_STR_76
+#  undef XLAT_VAL_76
+#  undef XLAT_STR_77
+#  undef XLAT_VAL_77
+#  undef XLAT_STR_78
+#  undef XLAT_VAL_78
+#  undef XLAT_STR_79
+#  undef XLAT_VAL_79
+#  undef XLAT_STR_80
+#  undef XLAT_VAL_80
+#  undef XLAT_STR_81
+#  undef XLAT_VAL_81
+#  undef XLAT_STR_82
+#  undef XLAT_VAL_82
+#  undef XLAT_STR_83
+#  undef XLAT_VAL_83
+#  undef XLAT_STR_84
+#  undef XLAT_VAL_84
+#  undef XLAT_STR_85
+#  undef XLAT_VAL_85
+#  undef XLAT_STR_86
+#  undef XLAT_VAL_86
+#  undef XLAT_STR_87
+#  undef XLAT_VAL_87
+#  undef XLAT_STR_88
+#  undef XLAT_VAL_88
+#  undef XLAT_STR_89
+#  undef XLAT_VAL_89
+#  undef XLAT_STR_90
+#  undef XLAT_VAL_90
+#  undef XLAT_STR_91
+#  undef XLAT_VAL_91
+#  undef XLAT_STR_92
+#  undef XLAT_VAL_92
+#  undef XLAT_STR_93
+#  undef XLAT_VAL_93
+#  undef XLAT_STR_94
+#  undef XLAT_VAL_94
+#  undef XLAT_STR_95
+#  undef XLAT_VAL_95
+#  undef XLAT_STR_96
+#  undef XLAT_VAL_96
+#  undef XLAT_STR_97
+#  undef XLAT_VAL_97
+#  undef XLAT_STR_98
+#  undef XLAT_VAL_98
+#  undef XLAT_STR_99
+#  undef XLAT_VAL_99
+#  undef XLAT_STR_100
+#  undef XLAT_VAL_100
+#  undef XLAT_STR_101
+#  undef XLAT_VAL_101
+#  undef XLAT_STR_102
+#  undef XLAT_VAL_102
+#  undef XLAT_STR_103
+#  undef XLAT_VAL_103
+#  undef XLAT_STR_104
+#  undef XLAT_VAL_104
+#  undef XLAT_STR_105
+#  undef XLAT_VAL_105
+#  undef XLAT_STR_106
+#  undef XLAT_VAL_106
+#  undef XLAT_STR_107
+#  undef XLAT_VAL_107
+#  undef XLAT_STR_108
+#  undef XLAT_VAL_108
+#  undef XLAT_STR_109
+#  undef XLAT_VAL_109
+#  undef XLAT_STR_110
+#  undef XLAT_VAL_110
+#  undef XLAT_STR_111
+#  undef XLAT_VAL_111
+#  undef XLAT_STR_112
+#  undef XLAT_VAL_112
+#  undef XLAT_STR_113
+#  undef XLAT_VAL_113
+#  undef XLAT_STR_114
+#  undef XLAT_VAL_114
+#  undef XLAT_STR_115
+#  undef XLAT_VAL_115
+#  undef XLAT_STR_116
+#  undef XLAT_VAL_116
+#  undef XLAT_STR_117
+#  undef XLAT_VAL_117
+#  undef XLAT_STR_118
+#  undef XLAT_VAL_118
+#  undef XLAT_STR_119
+#  undef XLAT_VAL_119
+#  undef XLAT_STR_120
+#  undef XLAT_VAL_120
+#  undef XLAT_STR_121
+#  undef XLAT_VAL_121
+#  undef XLAT_STR_122
+#  undef XLAT_VAL_122
+#  undef XLAT_STR_123
+#  undef XLAT_VAL_123
+#  undef XLAT_STR_124
+#  undef XLAT_VAL_124
+#  undef XLAT_STR_125
+#  undef XLAT_VAL_125
+#  undef XLAT_STR_126
+#  undef XLAT_VAL_126
+#  undef XLAT_STR_127
+#  undef XLAT_VAL_127
+#  undef XLAT_STR_128
+#  undef XLAT_VAL_128
+#  undef XLAT_STR_129
+#  undef XLAT_VAL_129
+#  undef XLAT_STR_130
+#  undef XLAT_VAL_130
+#  undef XLAT_STR_131
+#  undef XLAT_VAL_131
+#  undef XLAT_STR_132
+#  undef XLAT_VAL_132
+#  undef XLAT_STR_133
+#  undef XLAT_VAL_133
+#  undef XLAT_STR_134
+#  undef XLAT_VAL_134
+#  undef XLAT_STR_135
+#  undef XLAT_VAL_135
+#  undef XLAT_STR_136
+#  undef XLAT_VAL_136
+#  undef XLAT_STR_137
+#  undef XLAT_VAL_137
+#  undef XLAT_STR_138
+#  undef XLAT_VAL_138
+#  undef XLAT_STR_139
+#  undef XLAT_VAL_139
+#  undef XLAT_STR_140
+#  undef XLAT_VAL_140
+#  undef XLAT_STR_141
+#  undef XLAT_VAL_141
+#  undef XLAT_STR_142
+#  undef XLAT_VAL_142
+#  undef XLAT_STR_143
+#  undef XLAT_VAL_143
+#  undef XLAT_STR_144
+#  undef XLAT_VAL_144
+#  undef XLAT_STR_145
+#  undef XLAT_VAL_145
+#  undef XLAT_STR_146
+#  undef XLAT_VAL_146
+#  undef XLAT_STR_147
+#  undef XLAT_VAL_147
+#  undef XLAT_STR_148
+#  undef XLAT_VAL_148
+#  undef XLAT_STR_149
+#  undef XLAT_VAL_149
+#  undef XLAT_STR_150
+#  undef XLAT_VAL_150
+#  undef XLAT_STR_151
+#  undef XLAT_VAL_151
+#  undef XLAT_STR_152
+#  undef XLAT_VAL_152
+#  undef XLAT_STR_153
+#  undef XLAT_VAL_153
+#  undef XLAT_STR_154
+#  undef XLAT_VAL_154
+#  undef XLAT_STR_155
+#  undef XLAT_VAL_155
+#  undef XLAT_STR_156
+#  undef XLAT_VAL_156
+#  undef XLAT_STR_157
+#  undef XLAT_VAL_157
+#  undef XLAT_STR_158
+#  undef XLAT_VAL_158
+#  undef XLAT_STR_159
+#  undef XLAT_VAL_159
+#  undef XLAT_STR_160
+#  undef XLAT_VAL_160
+#  undef XLAT_STR_161
+#  undef XLAT_VAL_161
+#  undef XLAT_STR_162
+#  undef XLAT_VAL_162
+#  undef XLAT_STR_163
+#  undef XLAT_VAL_163
+#  undef XLAT_STR_164
+#  undef XLAT_VAL_164
+#  undef XLAT_STR_165
+#  undef XLAT_VAL_165
+#  undef XLAT_STR_166
+#  undef XLAT_VAL_166
+#  undef XLAT_STR_167
+#  undef XLAT_VAL_167
+#  undef XLAT_STR_168
+#  undef XLAT_VAL_168
+#  undef XLAT_STR_169
+#  undef XLAT_VAL_169
+#  undef XLAT_STR_170
+#  undef XLAT_VAL_170
+#  undef XLAT_STR_171
+#  undef XLAT_VAL_171
+#  undef XLAT_STR_172
+#  undef XLAT_VAL_172
+#  undef XLAT_STR_173
+#  undef XLAT_VAL_173
+#  undef XLAT_STR_174
+#  undef XLAT_VAL_174
+#  undef XLAT_STR_175
+#  undef XLAT_VAL_175
+#  undef XLAT_STR_176
+#  undef XLAT_VAL_176
+#  undef XLAT_STR_177
+#  undef XLAT_VAL_177
+#  undef XLAT_STR_178
+#  undef XLAT_VAL_178
+#  undef XLAT_STR_179
+#  undef XLAT_VAL_179
+#  undef XLAT_STR_180
+#  undef XLAT_VAL_180
+#  undef XLAT_STR_181
+#  undef XLAT_VAL_181
+#  undef XLAT_STR_182
+#  undef XLAT_VAL_182
+#  undef XLAT_STR_183
+#  undef XLAT_VAL_183
+#  undef XLAT_STR_184
+#  undef XLAT_VAL_184
+#  undef XLAT_STR_185
+#  undef XLAT_VAL_185
+#  undef XLAT_STR_186
+#  undef XLAT_VAL_186
+#  undef XLAT_STR_187
+#  undef XLAT_VAL_187
+#  undef XLAT_STR_188
+#  undef XLAT_VAL_188
+#  undef XLAT_STR_189
+#  undef XLAT_VAL_189
+#  undef XLAT_STR_190
+#  undef XLAT_VAL_190
+#  undef XLAT_STR_191
+#  undef XLAT_VAL_191
+#  undef XLAT_STR_192
+#  undef XLAT_VAL_192
+#  undef XLAT_STR_193
+#  undef XLAT_VAL_193
+#  undef XLAT_STR_194
+#  undef XLAT_VAL_194
+#  undef XLAT_STR_195
+#  undef XLAT_VAL_195
+#  undef XLAT_STR_196
+#  undef XLAT_VAL_196
+#  undef XLAT_STR_197
+#  undef XLAT_VAL_197
+#  undef XLAT_STR_198
+#  undef XLAT_VAL_198
+#  undef XLAT_STR_199
+#  undef XLAT_VAL_199
+#  undef XLAT_STR_200
+#  undef XLAT_VAL_200
+#  undef XLAT_STR_201
+#  undef XLAT_VAL_201
+#  undef XLAT_STR_202
+#  undef XLAT_VAL_202
+#  undef XLAT_STR_203
+#  undef XLAT_VAL_203
+#  undef XLAT_STR_204
+#  undef XLAT_VAL_204
+#  undef XLAT_STR_205
+#  undef XLAT_VAL_205
+#  undef XLAT_STR_206
+#  undef XLAT_VAL_206
+#  undef XLAT_STR_207
+#  undef XLAT_VAL_207
+#  undef XLAT_STR_208
+#  undef XLAT_VAL_208
+#  undef XLAT_STR_209
+#  undef XLAT_VAL_209
+#  undef XLAT_STR_210
+#  undef XLAT_VAL_210
+#  undef XLAT_STR_211
+#  undef XLAT_VAL_211
+#  undef XLAT_STR_212
+#  undef XLAT_VAL_212
+#  undef XLAT_STR_213
+#  undef XLAT_VAL_213
+#  undef XLAT_STR_214
+#  undef XLAT_VAL_214
+#  undef XLAT_STR_215
+#  undef XLAT_VAL_215
+#  undef XLAT_STR_216
+#  undef XLAT_VAL_216
+#  undef XLAT_STR_217
+#  undef XLAT_VAL_217
+#  undef XLAT_STR_218
+#  undef XLAT_VAL_218
+#  undef XLAT_STR_219
+#  undef XLAT_VAL_219
+#  undef XLAT_STR_220
+#  undef XLAT_VAL_220
+#  undef XLAT_STR_221
+#  undef XLAT_VAL_221
+#  undef XLAT_STR_222
+#  undef XLAT_VAL_222
+#  undef XLAT_STR_223
+#  undef XLAT_VAL_223
+#  undef XLAT_STR_224
+#  undef XLAT_VAL_224
+#  undef XLAT_STR_225
+#  undef XLAT_VAL_225
+#  undef XLAT_STR_226
+#  undef XLAT_VAL_226
+#  undef XLAT_STR_227
+#  undef XLAT_VAL_227
+#  undef XLAT_STR_228
+#  undef XLAT_VAL_228
+#  undef XLAT_STR_229
+#  undef XLAT_VAL_229
+#  undef XLAT_STR_230
+#  undef XLAT_VAL_230
+#  undef XLAT_STR_231
+#  undef XLAT_VAL_231
+#  undef XLAT_STR_232
+#  undef XLAT_VAL_232
+#  undef XLAT_STR_233
+#  undef XLAT_VAL_233
+#  undef XLAT_STR_234
+#  undef XLAT_VAL_234
+#  undef XLAT_STR_235
+#  undef XLAT_VAL_235
+#  undef XLAT_STR_236
+#  undef XLAT_VAL_236
+#  undef XLAT_STR_237
+#  undef XLAT_VAL_237
+#  undef XLAT_STR_238
+#  undef XLAT_VAL_238
+#  undef XLAT_STR_239
+#  undef XLAT_VAL_239
+#  undef XLAT_STR_240
+#  undef XLAT_VAL_240
+#  undef XLAT_STR_241
+#  undef XLAT_VAL_241
+#  undef XLAT_STR_242
+#  undef XLAT_VAL_242
+#  undef XLAT_STR_243
+#  undef XLAT_VAL_243
+#  undef XLAT_STR_244
+#  undef XLAT_VAL_244
+#  undef XLAT_STR_245
+#  undef XLAT_VAL_245
+#  undef XLAT_STR_246
+#  undef XLAT_VAL_246
+#  undef XLAT_STR_247
+#  undef XLAT_VAL_247
+#  undef XLAT_STR_248
+#  undef XLAT_VAL_248
+#  undef XLAT_STR_249
+#  undef XLAT_VAL_249
+#  undef XLAT_STR_250
+#  undef XLAT_VAL_250
+#  undef XLAT_STR_251
+#  undef XLAT_VAL_251
+#  undef XLAT_STR_252
+#  undef XLAT_VAL_252
+#  undef XLAT_STR_253
+#  undef XLAT_VAL_253
+#  undef XLAT_STR_254
+#  undef XLAT_VAL_254
+#  undef XLAT_STR_255
+#  undef XLAT_VAL_255
+#  undef XLAT_STR_256
+#  undef XLAT_VAL_256
+#  undef XLAT_STR_257
+#  undef XLAT_VAL_257
+#  undef XLAT_STR_258
+#  undef XLAT_VAL_258
+#  undef XLAT_STR_259
+#  undef XLAT_VAL_259
+#  undef XLAT_STR_260
+#  undef XLAT_VAL_260
+#  undef XLAT_STR_261
+#  undef XLAT_VAL_261
+#  undef XLAT_STR_262
+#  undef XLAT_VAL_262
+#  undef XLAT_STR_263
+#  undef XLAT_VAL_263
+#  undef XLAT_STR_264
+#  undef XLAT_VAL_264
+#  undef XLAT_STR_265
+#  undef XLAT_VAL_265
+#  undef XLAT_STR_266
+#  undef XLAT_VAL_266
+#  undef XLAT_STR_267
+#  undef XLAT_VAL_267
+#  undef XLAT_STR_268
+#  undef XLAT_VAL_268
+#  undef XLAT_STR_269
+#  undef XLAT_VAL_269
+#  undef XLAT_STR_270
+#  undef XLAT_VAL_270
+#  undef XLAT_STR_271
+#  undef XLAT_VAL_271
+#  undef XLAT_STR_272
+#  undef XLAT_VAL_272
+#  undef XLAT_STR_273
+#  undef XLAT_VAL_273
+#  undef XLAT_STR_274
+#  undef XLAT_VAL_274
+#  undef XLAT_STR_275
+#  undef XLAT_VAL_275
+#  undef XLAT_STR_276
+#  undef XLAT_VAL_276
+#  undef XLAT_STR_277
+#  undef XLAT_VAL_277
+#  undef XLAT_STR_278
+#  undef XLAT_VAL_278
+#  undef XLAT_STR_279
+#  undef XLAT_VAL_279
+#  undef XLAT_STR_280
+#  undef XLAT_VAL_280
+#  undef XLAT_STR_281
+#  undef XLAT_VAL_281
+#  undef XLAT_STR_282
+#  undef XLAT_VAL_282
+#  undef XLAT_STR_283
+#  undef XLAT_VAL_283
+#  undef XLAT_STR_284
+#  undef XLAT_VAL_284
+#  undef XLAT_STR_285
+#  undef XLAT_VAL_285
+#  undef XLAT_STR_286
+#  undef XLAT_VAL_286
+#  undef XLAT_STR_287
+#  undef XLAT_VAL_287
+#  undef XLAT_STR_288
+#  undef XLAT_VAL_288
+#  undef XLAT_STR_289
+#  undef XLAT_VAL_289
+#  undef XLAT_STR_290
+#  undef XLAT_VAL_290
+#  undef XLAT_STR_291
+#  undef XLAT_VAL_291
+#  undef XLAT_STR_292
+#  undef XLAT_VAL_292
+#  undef XLAT_STR_293
+#  undef XLAT_VAL_293
+#  undef XLAT_STR_294
+#  undef XLAT_VAL_294
+#  undef XLAT_STR_295
+#  undef XLAT_VAL_295
+#  undef XLAT_STR_296
+#  undef XLAT_VAL_296
+#  undef XLAT_STR_297
+#  undef XLAT_VAL_297
+#  undef XLAT_STR_298
+#  undef XLAT_VAL_298
+#  undef XLAT_STR_299
+#  undef XLAT_VAL_299
+#  undef XLAT_STR_300
+#  undef XLAT_VAL_300
+#  undef XLAT_STR_301
+#  undef XLAT_VAL_301
+#  undef XLAT_STR_302
+#  undef XLAT_VAL_302
+#  undef XLAT_STR_303
+#  undef XLAT_VAL_303
+#  undef XLAT_STR_304
+#  undef XLAT_VAL_304
+#  undef XLAT_STR_305
+#  undef XLAT_VAL_305
+#  undef XLAT_STR_306
+#  undef XLAT_VAL_306
+#  undef XLAT_STR_307
+#  undef XLAT_VAL_307
+#  undef XLAT_STR_308
+#  undef XLAT_VAL_308
+#  undef XLAT_STR_309
+#  undef XLAT_VAL_309
+#  undef XLAT_STR_310
+#  undef XLAT_VAL_310
+#  undef XLAT_STR_311
+#  undef XLAT_VAL_311
+#  undef XLAT_STR_312
+#  undef XLAT_VAL_312
+#  undef XLAT_STR_313
+#  undef XLAT_VAL_313
+#  undef XLAT_STR_314
+#  undef XLAT_VAL_314
+#  undef XLAT_STR_315
+#  undef XLAT_VAL_315
+#  undef XLAT_STR_316
+#  undef XLAT_VAL_316
+#  undef XLAT_STR_317
+#  undef XLAT_VAL_317
+#  undef XLAT_STR_318
+#  undef XLAT_VAL_318
+#  undef XLAT_STR_319
+#  undef XLAT_VAL_319
+#  undef XLAT_STR_320
+#  undef XLAT_VAL_320
+#  undef XLAT_STR_321
+#  undef XLAT_VAL_321
+#  undef XLAT_STR_322
+#  undef XLAT_VAL_322
+#  undef XLAT_STR_323
+#  undef XLAT_VAL_323
+#  undef XLAT_STR_324
+#  undef XLAT_VAL_324
+#  undef XLAT_STR_325
+#  undef XLAT_VAL_325
+#  undef XLAT_STR_326
+#  undef XLAT_VAL_326
+#  undef XLAT_STR_327
+#  undef XLAT_VAL_327
+#  undef XLAT_STR_328
+#  undef XLAT_VAL_328
+#  undef XLAT_STR_329
+#  undef XLAT_VAL_329
+#  undef XLAT_STR_330
+#  undef XLAT_VAL_330
+#  undef XLAT_STR_331
+#  undef XLAT_VAL_331
+#  undef XLAT_STR_332
+#  undef XLAT_VAL_332
+#  undef XLAT_STR_333
+#  undef XLAT_VAL_333
+#  undef XLAT_STR_334
+#  undef XLAT_VAL_334
+#  undef XLAT_STR_335
+#  undef XLAT_VAL_335
+#  undef XLAT_STR_336
+#  undef XLAT_VAL_336
+#  undef XLAT_STR_337
+#  undef XLAT_VAL_337
+#  undef XLAT_STR_338
+#  undef XLAT_VAL_338
+#  undef XLAT_STR_339
+#  undef XLAT_VAL_339
+#  undef XLAT_STR_340
+#  undef XLAT_VAL_340
+#  undef XLAT_STR_341
+#  undef XLAT_VAL_341
+#  undef XLAT_STR_342
+#  undef XLAT_VAL_342
+#  undef XLAT_STR_343
+#  undef XLAT_VAL_343
+#  undef XLAT_STR_344
+#  undef XLAT_VAL_344
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 3ea51732568f374038f8a44dc607c91fa0c79e56..eeb495f4205a1f20c4ca26cad0e5e56fc53f227f 100644 (file)
@@ -99,6 +99,8 @@ V4L2_CID_MPEG_VIDEO_MV_V_SEARCH_RANGE         (V4L2_CID_MPEG_BASE+228)
 V4L2_CID_MPEG_VIDEO_FORCE_KEY_FRAME            (V4L2_CID_MPEG_BASE+229)
 V4L2_CID_MPEG_VIDEO_MPEG2_SLICE_PARAMS         (V4L2_CID_MPEG_BASE+250)
 V4L2_CID_MPEG_VIDEO_MPEG2_QUANTIZATION         (V4L2_CID_MPEG_BASE+251)
+V4L2_CID_FWHT_I_FRAME_QP                       (V4L2_CID_MPEG_BASE+290)
+V4L2_CID_FWHT_P_FRAME_QP                       (V4L2_CID_MPEG_BASE+291)
 V4L2_CID_MPEG_VIDEO_H263_I_FRAME_QP            (V4L2_CID_MPEG_BASE+300)
 V4L2_CID_MPEG_VIDEO_H263_P_FRAME_QP            (V4L2_CID_MPEG_BASE+301)
 V4L2_CID_MPEG_VIDEO_H263_B_FRAME_QP            (V4L2_CID_MPEG_BASE+302)
@@ -139,6 +141,10 @@ V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER (V4L2_CID_MPEG_BASE+381)
 V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER_QP  (V4L2_CID_MPEG_BASE+382)
 V4L2_CID_MPEG_VIDEO_H264_CONSTRAINED_INTRA_PREDICTION  (V4L2_CID_MPEG_BASE+383)
 V4L2_CID_MPEG_VIDEO_H264_CHROMA_QP_INDEX_OFFSET                (V4L2_CID_MPEG_BASE+384)
+V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MIN_QP                        (V4L2_CID_MPEG_BASE+385)
+V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MAX_QP                        (V4L2_CID_MPEG_BASE+386)
+V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MIN_QP                        (V4L2_CID_MPEG_BASE+387)
+V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MAX_QP                        (V4L2_CID_MPEG_BASE+388)
 V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP   (V4L2_CID_MPEG_BASE+400)
 V4L2_CID_MPEG_VIDEO_MPEG4_P_FRAME_QP   (V4L2_CID_MPEG_BASE+401)
 V4L2_CID_MPEG_VIDEO_MPEG4_B_FRAME_QP   (V4L2_CID_MPEG_BASE+402)
@@ -318,6 +324,7 @@ V4L2_CID_TEST_PATTERN_RED           (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 4)
 V4L2_CID_TEST_PATTERN_GREENR           (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 5)
 V4L2_CID_TEST_PATTERN_BLUE             (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 6)
 V4L2_CID_TEST_PATTERN_GREENB           (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 7)
+V4L2_CID_UNIT_CELL_SIZE                        (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 8)
 /* Image processing controls */
 V4L2_CID_LINK_FREQ                     (V4L2_CID_IMAGE_PROC_CLASS_BASE + 1)
 V4L2_CID_PIXEL_RATE                    (V4L2_CID_IMAGE_PROC_CLASS_BASE + 2)
diff --git a/xlat/v4l2_control_query_flags.h b/xlat/v4l2_control_query_flags.h
new file mode 100644 (file)
index 0000000..c00db42
--- /dev/null
@@ -0,0 +1,68 @@
+/* Generated by ./xlat/gen.sh from ./xlat/v4l2_control_query_flags.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(V4L2_CTRL_FLAG_NEXT_CTRL) || (defined(HAVE_DECL_V4L2_CTRL_FLAG_NEXT_CTRL) && HAVE_DECL_V4L2_CTRL_FLAG_NEXT_CTRL)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CTRL_FLAG_NEXT_CTRL) == (0x80000000), "V4L2_CTRL_FLAG_NEXT_CTRL != 0x80000000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CTRL_FLAG_NEXT_CTRL 0x80000000
+#endif
+#if defined(V4L2_CTRL_FLAG_NEXT_COMPOUND) || (defined(HAVE_DECL_V4L2_CTRL_FLAG_NEXT_COMPOUND) && HAVE_DECL_V4L2_CTRL_FLAG_NEXT_COMPOUND)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CTRL_FLAG_NEXT_COMPOUND) == (0x40000000), "V4L2_CTRL_FLAG_NEXT_COMPOUND != 0x40000000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CTRL_FLAG_NEXT_COMPOUND 0x40000000
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+extern const struct xlat v4l2_control_query_flags[];
+
+# else
+
+static const struct xlat_data v4l2_control_query_flags_xdata[] = {
+ XLAT(V4L2_CTRL_FLAG_NEXT_CTRL),
+ #define XLAT_VAL_0 ((unsigned) (V4L2_CTRL_FLAG_NEXT_CTRL))
+ #define XLAT_STR_0 STRINGIFY(V4L2_CTRL_FLAG_NEXT_CTRL)
+ XLAT(V4L2_CTRL_FLAG_NEXT_COMPOUND),
+ #define XLAT_VAL_1 ((unsigned) (V4L2_CTRL_FLAG_NEXT_COMPOUND))
+ #define XLAT_STR_1 STRINGIFY(V4L2_CTRL_FLAG_NEXT_COMPOUND)
+};
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat v4l2_control_query_flags[1] = { {
+ .data = v4l2_control_query_flags_xdata,
+ .size = ARRAY_SIZE(v4l2_control_query_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/v4l2_control_query_flags.in b/xlat/v4l2_control_query_flags.in
new file mode 100644 (file)
index 0000000..3d32bf5
--- /dev/null
@@ -0,0 +1,2 @@
+V4L2_CTRL_FLAG_NEXT_CTRL       0x80000000
+V4L2_CTRL_FLAG_NEXT_COMPOUND   0x40000000
index 3f5a03a00e118ed4874a7ae65eefd826f3fb7eb4..a1bd4db4609fe3656a74d36d47f925d3ad8027a6 100644 (file)
 #include "gcc_compat.h"
 #include "static_assert.h"
 
-
-#ifndef XLAT_MACROS_ONLY
-
-# ifdef IN_MPERS
-
-extern const struct xlat v4l2_control_types[];
-
-# else
-
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat v4l2_control_types[] = {
 #if defined(V4L2_CTRL_TYPE_INTEGER) || (defined(HAVE_DECL_V4L2_CTRL_TYPE_INTEGER) && HAVE_DECL_V4L2_CTRL_TYPE_INTEGER)
-  XLAT(V4L2_CTRL_TYPE_INTEGER),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CTRL_TYPE_INTEGER) == (1), "V4L2_CTRL_TYPE_INTEGER != 1");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CTRL_TYPE_INTEGER 1
 #endif
 #if defined(V4L2_CTRL_TYPE_BOOLEAN) || (defined(HAVE_DECL_V4L2_CTRL_TYPE_BOOLEAN) && HAVE_DECL_V4L2_CTRL_TYPE_BOOLEAN)
-  XLAT(V4L2_CTRL_TYPE_BOOLEAN),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CTRL_TYPE_BOOLEAN) == (2), "V4L2_CTRL_TYPE_BOOLEAN != 2");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CTRL_TYPE_BOOLEAN 2
 #endif
 #if defined(V4L2_CTRL_TYPE_MENU) || (defined(HAVE_DECL_V4L2_CTRL_TYPE_MENU) && HAVE_DECL_V4L2_CTRL_TYPE_MENU)
-  XLAT(V4L2_CTRL_TYPE_MENU),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CTRL_TYPE_MENU) == (3), "V4L2_CTRL_TYPE_MENU != 3");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CTRL_TYPE_MENU 3
 #endif
 #if defined(V4L2_CTRL_TYPE_BUTTON) || (defined(HAVE_DECL_V4L2_CTRL_TYPE_BUTTON) && HAVE_DECL_V4L2_CTRL_TYPE_BUTTON)
-  XLAT(V4L2_CTRL_TYPE_BUTTON),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CTRL_TYPE_BUTTON) == (4), "V4L2_CTRL_TYPE_BUTTON != 4");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CTRL_TYPE_BUTTON 4
 #endif
 #if defined(V4L2_CTRL_TYPE_INTEGER64) || (defined(HAVE_DECL_V4L2_CTRL_TYPE_INTEGER64) && HAVE_DECL_V4L2_CTRL_TYPE_INTEGER64)
-  XLAT(V4L2_CTRL_TYPE_INTEGER64),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CTRL_TYPE_INTEGER64) == (5), "V4L2_CTRL_TYPE_INTEGER64 != 5");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CTRL_TYPE_INTEGER64 5
 #endif
 #if defined(V4L2_CTRL_TYPE_CTRL_CLASS) || (defined(HAVE_DECL_V4L2_CTRL_TYPE_CTRL_CLASS) && HAVE_DECL_V4L2_CTRL_TYPE_CTRL_CLASS)
-  XLAT(V4L2_CTRL_TYPE_CTRL_CLASS),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CTRL_TYPE_CTRL_CLASS) == (6), "V4L2_CTRL_TYPE_CTRL_CLASS != 6");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CTRL_TYPE_CTRL_CLASS 6
 #endif
 #if defined(V4L2_CTRL_TYPE_STRING) || (defined(HAVE_DECL_V4L2_CTRL_TYPE_STRING) && HAVE_DECL_V4L2_CTRL_TYPE_STRING)
-  XLAT(V4L2_CTRL_TYPE_STRING),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CTRL_TYPE_STRING) == (7), "V4L2_CTRL_TYPE_STRING != 7");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CTRL_TYPE_STRING 7
 #endif
 #if defined(V4L2_CTRL_TYPE_BITMASK) || (defined(HAVE_DECL_V4L2_CTRL_TYPE_BITMASK) && HAVE_DECL_V4L2_CTRL_TYPE_BITMASK)
-  XLAT(V4L2_CTRL_TYPE_BITMASK),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CTRL_TYPE_BITMASK) == (8), "V4L2_CTRL_TYPE_BITMASK != 8");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CTRL_TYPE_BITMASK 8
 #endif
 #if defined(V4L2_CTRL_TYPE_INTEGER_MENU) || (defined(HAVE_DECL_V4L2_CTRL_TYPE_INTEGER_MENU) && HAVE_DECL_V4L2_CTRL_TYPE_INTEGER_MENU)
-  XLAT(V4L2_CTRL_TYPE_INTEGER_MENU),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CTRL_TYPE_INTEGER_MENU) == (9), "V4L2_CTRL_TYPE_INTEGER_MENU != 9");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CTRL_TYPE_INTEGER_MENU 9
 #endif
 #if defined(V4L2_CTRL_TYPE_U8) || (defined(HAVE_DECL_V4L2_CTRL_TYPE_U8) && HAVE_DECL_V4L2_CTRL_TYPE_U8)
-  XLAT(V4L2_CTRL_TYPE_U8),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CTRL_TYPE_U8) == (0x100), "V4L2_CTRL_TYPE_U8 != 0x100");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CTRL_TYPE_U8 0x100
 #endif
 #if defined(V4L2_CTRL_TYPE_U16) || (defined(HAVE_DECL_V4L2_CTRL_TYPE_U16) && HAVE_DECL_V4L2_CTRL_TYPE_U16)
-  XLAT(V4L2_CTRL_TYPE_U16),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CTRL_TYPE_U16) == (0x101), "V4L2_CTRL_TYPE_U16 != 0x101");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CTRL_TYPE_U16 0x101
 #endif
 #if defined(V4L2_CTRL_TYPE_U32) || (defined(HAVE_DECL_V4L2_CTRL_TYPE_U32) && HAVE_DECL_V4L2_CTRL_TYPE_U32)
-  XLAT(V4L2_CTRL_TYPE_U32),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CTRL_TYPE_U32) == (0x102), "V4L2_CTRL_TYPE_U32 != 0x102");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CTRL_TYPE_U32 0x102
+#endif
+#if defined(V4L2_CTRL_TYPE_AREA) || (defined(HAVE_DECL_V4L2_CTRL_TYPE_AREA) && HAVE_DECL_V4L2_CTRL_TYPE_AREA)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CTRL_TYPE_AREA) == (0x106), "V4L2_CTRL_TYPE_AREA != 0x106");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CTRL_TYPE_AREA 0x106
 #endif
- XLAT_END
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+extern const struct xlat v4l2_control_types[];
+
+# else
+
+static const struct xlat_data v4l2_control_types_xdata[] = {
+ XLAT(V4L2_CTRL_TYPE_INTEGER),
+ #define XLAT_VAL_0 ((unsigned) (V4L2_CTRL_TYPE_INTEGER))
+ #define XLAT_STR_0 STRINGIFY(V4L2_CTRL_TYPE_INTEGER)
+ XLAT(V4L2_CTRL_TYPE_BOOLEAN),
+ #define XLAT_VAL_1 ((unsigned) (V4L2_CTRL_TYPE_BOOLEAN))
+ #define XLAT_STR_1 STRINGIFY(V4L2_CTRL_TYPE_BOOLEAN)
+ XLAT(V4L2_CTRL_TYPE_MENU),
+ #define XLAT_VAL_2 ((unsigned) (V4L2_CTRL_TYPE_MENU))
+ #define XLAT_STR_2 STRINGIFY(V4L2_CTRL_TYPE_MENU)
+ XLAT(V4L2_CTRL_TYPE_BUTTON),
+ #define XLAT_VAL_3 ((unsigned) (V4L2_CTRL_TYPE_BUTTON))
+ #define XLAT_STR_3 STRINGIFY(V4L2_CTRL_TYPE_BUTTON)
+ XLAT(V4L2_CTRL_TYPE_INTEGER64),
+ #define XLAT_VAL_4 ((unsigned) (V4L2_CTRL_TYPE_INTEGER64))
+ #define XLAT_STR_4 STRINGIFY(V4L2_CTRL_TYPE_INTEGER64)
+ XLAT(V4L2_CTRL_TYPE_CTRL_CLASS),
+ #define XLAT_VAL_5 ((unsigned) (V4L2_CTRL_TYPE_CTRL_CLASS))
+ #define XLAT_STR_5 STRINGIFY(V4L2_CTRL_TYPE_CTRL_CLASS)
+ XLAT(V4L2_CTRL_TYPE_STRING),
+ #define XLAT_VAL_6 ((unsigned) (V4L2_CTRL_TYPE_STRING))
+ #define XLAT_STR_6 STRINGIFY(V4L2_CTRL_TYPE_STRING)
+ XLAT(V4L2_CTRL_TYPE_BITMASK),
+ #define XLAT_VAL_7 ((unsigned) (V4L2_CTRL_TYPE_BITMASK))
+ #define XLAT_STR_7 STRINGIFY(V4L2_CTRL_TYPE_BITMASK)
+ XLAT(V4L2_CTRL_TYPE_INTEGER_MENU),
+ #define XLAT_VAL_8 ((unsigned) (V4L2_CTRL_TYPE_INTEGER_MENU))
+ #define XLAT_STR_8 STRINGIFY(V4L2_CTRL_TYPE_INTEGER_MENU)
+ XLAT(V4L2_CTRL_TYPE_U8),
+ #define XLAT_VAL_9 ((unsigned) (V4L2_CTRL_TYPE_U8))
+ #define XLAT_STR_9 STRINGIFY(V4L2_CTRL_TYPE_U8)
+ XLAT(V4L2_CTRL_TYPE_U16),
+ #define XLAT_VAL_10 ((unsigned) (V4L2_CTRL_TYPE_U16))
+ #define XLAT_STR_10 STRINGIFY(V4L2_CTRL_TYPE_U16)
+ XLAT(V4L2_CTRL_TYPE_U32),
+ #define XLAT_VAL_11 ((unsigned) (V4L2_CTRL_TYPE_U32))
+ #define XLAT_STR_11 STRINGIFY(V4L2_CTRL_TYPE_U32)
+ XLAT(V4L2_CTRL_TYPE_AREA),
+ #define XLAT_VAL_12 ((unsigned) (V4L2_CTRL_TYPE_AREA))
+ #define XLAT_STR_12 STRINGIFY(V4L2_CTRL_TYPE_AREA)
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat v4l2_control_types[1] = { {
+ .data = v4l2_control_types_xdata,
+ .size = ARRAY_SIZE(v4l2_control_types_xdata),
+ .type = XT_SORTED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 62cba6d37f05fe752d40f1fd49a639aadcb70c7e..eb8966d7cc7b6cf845eb0d33559f8e62218d468f 100644 (file)
@@ -1,12 +1,19 @@
-V4L2_CTRL_TYPE_INTEGER
-V4L2_CTRL_TYPE_BOOLEAN
-V4L2_CTRL_TYPE_MENU
-V4L2_CTRL_TYPE_BUTTON
-V4L2_CTRL_TYPE_INTEGER64
-V4L2_CTRL_TYPE_CTRL_CLASS
-V4L2_CTRL_TYPE_STRING
-V4L2_CTRL_TYPE_BITMASK
-V4L2_CTRL_TYPE_INTEGER_MENU
-V4L2_CTRL_TYPE_U8
-V4L2_CTRL_TYPE_U16
-V4L2_CTRL_TYPE_U32
+#sorted
+#enum
+#include <sys/time.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+V4L2_CTRL_TYPE_INTEGER                 1
+V4L2_CTRL_TYPE_BOOLEAN                 2
+V4L2_CTRL_TYPE_MENU                    3
+V4L2_CTRL_TYPE_BUTTON                  4
+V4L2_CTRL_TYPE_INTEGER64               5
+V4L2_CTRL_TYPE_CTRL_CLASS              6
+V4L2_CTRL_TYPE_STRING                  7
+V4L2_CTRL_TYPE_BITMASK                 8
+V4L2_CTRL_TYPE_INTEGER_MENU            9
+V4L2_CTRL_TYPE_U8                      0x100
+V4L2_CTRL_TYPE_U16                     0x101
+V4L2_CTRL_TYPE_U32                     0x102
+V4L2_CTRL_TYPE_AREA                    0x106
diff --git a/xlat/v4l2_control_types.m4 b/xlat/v4l2_control_types.m4
new file mode 100644 (file)
index 0000000..9c7670b
--- /dev/null
@@ -0,0 +1,22 @@
+dnl Generated by ./xlat/gen.sh from ./xlat/v4l2_control_types.in; do not edit.
+AC_DEFUN([st_CHECK_ENUMS_v4l2_control_types],[
+AC_CHECK_DECLS(m4_normalize([
+V4L2_CTRL_TYPE_INTEGER,
+V4L2_CTRL_TYPE_BOOLEAN,
+V4L2_CTRL_TYPE_MENU,
+V4L2_CTRL_TYPE_BUTTON,
+V4L2_CTRL_TYPE_INTEGER64,
+V4L2_CTRL_TYPE_CTRL_CLASS,
+V4L2_CTRL_TYPE_STRING,
+V4L2_CTRL_TYPE_BITMASK,
+V4L2_CTRL_TYPE_INTEGER_MENU,
+V4L2_CTRL_TYPE_U8,
+V4L2_CTRL_TYPE_U16,
+V4L2_CTRL_TYPE_U32,
+V4L2_CTRL_TYPE_AREA
+]),,, [
+#include <sys/time.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+])])])
index 59123b02aa7952c134d9dbab8f28353a4936de3c..d1f59bef9b54fd7c45b7f377187bb43616e4397c 100644 (file)
 #include "gcc_compat.h"
 #include "static_assert.h"
 
-
-#ifndef XLAT_MACROS_ONLY
-
-# ifdef IN_MPERS
-
-extern const struct xlat v4l2_device_capabilities_flags[];
-
-# else
-
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat v4l2_device_capabilities_flags[] = {
 #if defined(V4L2_CAP_VIDEO_CAPTURE) || (defined(HAVE_DECL_V4L2_CAP_VIDEO_CAPTURE) && HAVE_DECL_V4L2_CAP_VIDEO_CAPTURE)
-  XLAT(V4L2_CAP_VIDEO_CAPTURE),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CAP_VIDEO_CAPTURE) == (0x00000001), "V4L2_CAP_VIDEO_CAPTURE != 0x00000001");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CAP_VIDEO_CAPTURE 0x00000001
 #endif
 #if defined(V4L2_CAP_VIDEO_OUTPUT) || (defined(HAVE_DECL_V4L2_CAP_VIDEO_OUTPUT) && HAVE_DECL_V4L2_CAP_VIDEO_OUTPUT)
-  XLAT(V4L2_CAP_VIDEO_OUTPUT),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CAP_VIDEO_OUTPUT) == (0x00000002), "V4L2_CAP_VIDEO_OUTPUT != 0x00000002");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CAP_VIDEO_OUTPUT 0x00000002
 #endif
 #if defined(V4L2_CAP_VIDEO_OVERLAY) || (defined(HAVE_DECL_V4L2_CAP_VIDEO_OVERLAY) && HAVE_DECL_V4L2_CAP_VIDEO_OVERLAY)
-  XLAT(V4L2_CAP_VIDEO_OVERLAY),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CAP_VIDEO_OVERLAY) == (0x00000004), "V4L2_CAP_VIDEO_OVERLAY != 0x00000004");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CAP_VIDEO_OVERLAY 0x00000004
 #endif
 #if defined(V4L2_CAP_VBI_CAPTURE) || (defined(HAVE_DECL_V4L2_CAP_VBI_CAPTURE) && HAVE_DECL_V4L2_CAP_VBI_CAPTURE)
-  XLAT(V4L2_CAP_VBI_CAPTURE),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CAP_VBI_CAPTURE) == (0x00000010), "V4L2_CAP_VBI_CAPTURE != 0x00000010");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CAP_VBI_CAPTURE 0x00000010
 #endif
 #if defined(V4L2_CAP_VBI_OUTPUT) || (defined(HAVE_DECL_V4L2_CAP_VBI_OUTPUT) && HAVE_DECL_V4L2_CAP_VBI_OUTPUT)
-  XLAT(V4L2_CAP_VBI_OUTPUT),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CAP_VBI_OUTPUT) == (0x00000020), "V4L2_CAP_VBI_OUTPUT != 0x00000020");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CAP_VBI_OUTPUT 0x00000020
 #endif
 #if defined(V4L2_CAP_SLICED_VBI_CAPTURE) || (defined(HAVE_DECL_V4L2_CAP_SLICED_VBI_CAPTURE) && HAVE_DECL_V4L2_CAP_SLICED_VBI_CAPTURE)
-  XLAT(V4L2_CAP_SLICED_VBI_CAPTURE),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CAP_SLICED_VBI_CAPTURE) == (0x00000040), "V4L2_CAP_SLICED_VBI_CAPTURE != 0x00000040");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CAP_SLICED_VBI_CAPTURE 0x00000040
 #endif
 #if defined(V4L2_CAP_SLICED_VBI_OUTPUT) || (defined(HAVE_DECL_V4L2_CAP_SLICED_VBI_OUTPUT) && HAVE_DECL_V4L2_CAP_SLICED_VBI_OUTPUT)
-  XLAT(V4L2_CAP_SLICED_VBI_OUTPUT),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CAP_SLICED_VBI_OUTPUT) == (0x00000080), "V4L2_CAP_SLICED_VBI_OUTPUT != 0x00000080");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CAP_SLICED_VBI_OUTPUT 0x00000080
 #endif
 #if defined(V4L2_CAP_RDS_CAPTURE) || (defined(HAVE_DECL_V4L2_CAP_RDS_CAPTURE) && HAVE_DECL_V4L2_CAP_RDS_CAPTURE)
-  XLAT(V4L2_CAP_RDS_CAPTURE),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CAP_RDS_CAPTURE) == (0x00000100), "V4L2_CAP_RDS_CAPTURE != 0x00000100");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CAP_RDS_CAPTURE 0x00000100
 #endif
 #if defined(V4L2_CAP_VIDEO_OUTPUT_OVERLAY) || (defined(HAVE_DECL_V4L2_CAP_VIDEO_OUTPUT_OVERLAY) && HAVE_DECL_V4L2_CAP_VIDEO_OUTPUT_OVERLAY)
-  XLAT(V4L2_CAP_VIDEO_OUTPUT_OVERLAY),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CAP_VIDEO_OUTPUT_OVERLAY) == (0x00000200), "V4L2_CAP_VIDEO_OUTPUT_OVERLAY != 0x00000200");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CAP_VIDEO_OUTPUT_OVERLAY 0x00000200
 #endif
 #if defined(V4L2_CAP_HW_FREQ_SEEK) || (defined(HAVE_DECL_V4L2_CAP_HW_FREQ_SEEK) && HAVE_DECL_V4L2_CAP_HW_FREQ_SEEK)
-  XLAT(V4L2_CAP_HW_FREQ_SEEK),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CAP_HW_FREQ_SEEK) == (0x00000400), "V4L2_CAP_HW_FREQ_SEEK != 0x00000400");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CAP_HW_FREQ_SEEK 0x00000400
 #endif
 #if defined(V4L2_CAP_RDS_OUTPUT) || (defined(HAVE_DECL_V4L2_CAP_RDS_OUTPUT) && HAVE_DECL_V4L2_CAP_RDS_OUTPUT)
-  XLAT(V4L2_CAP_RDS_OUTPUT),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CAP_RDS_OUTPUT) == (0x00000800), "V4L2_CAP_RDS_OUTPUT != 0x00000800");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CAP_RDS_OUTPUT 0x00000800
 #endif
 #if defined(V4L2_CAP_VIDEO_CAPTURE_MPLANE) || (defined(HAVE_DECL_V4L2_CAP_VIDEO_CAPTURE_MPLANE) && HAVE_DECL_V4L2_CAP_VIDEO_CAPTURE_MPLANE)
-  XLAT(V4L2_CAP_VIDEO_CAPTURE_MPLANE),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CAP_VIDEO_CAPTURE_MPLANE) == (0x00001000), "V4L2_CAP_VIDEO_CAPTURE_MPLANE != 0x00001000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CAP_VIDEO_CAPTURE_MPLANE 0x00001000
 #endif
 #if defined(V4L2_CAP_VIDEO_OUTPUT_MPLANE) || (defined(HAVE_DECL_V4L2_CAP_VIDEO_OUTPUT_MPLANE) && HAVE_DECL_V4L2_CAP_VIDEO_OUTPUT_MPLANE)
-  XLAT(V4L2_CAP_VIDEO_OUTPUT_MPLANE),
-#endif
-#if defined(V4L2_CAP_VIDEO_M2M) || (defined(HAVE_DECL_V4L2_CAP_VIDEO_M2M) && HAVE_DECL_V4L2_CAP_VIDEO_M2M)
-  XLAT(V4L2_CAP_VIDEO_M2M),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CAP_VIDEO_OUTPUT_MPLANE) == (0x00002000), "V4L2_CAP_VIDEO_OUTPUT_MPLANE != 0x00002000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CAP_VIDEO_OUTPUT_MPLANE 0x00002000
 #endif
 #if defined(V4L2_CAP_VIDEO_M2M_MPLANE) || (defined(HAVE_DECL_V4L2_CAP_VIDEO_M2M_MPLANE) && HAVE_DECL_V4L2_CAP_VIDEO_M2M_MPLANE)
-  XLAT(V4L2_CAP_VIDEO_M2M_MPLANE),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CAP_VIDEO_M2M_MPLANE) == (0x00004000), "V4L2_CAP_VIDEO_M2M_MPLANE != 0x00004000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CAP_VIDEO_M2M_MPLANE 0x00004000
+#endif
+#if defined(V4L2_CAP_VIDEO_M2M) || (defined(HAVE_DECL_V4L2_CAP_VIDEO_M2M) && HAVE_DECL_V4L2_CAP_VIDEO_M2M)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CAP_VIDEO_M2M) == (0x00008000), "V4L2_CAP_VIDEO_M2M != 0x00008000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CAP_VIDEO_M2M 0x00008000
 #endif
 #if defined(V4L2_CAP_TUNER) || (defined(HAVE_DECL_V4L2_CAP_TUNER) && HAVE_DECL_V4L2_CAP_TUNER)
-  XLAT(V4L2_CAP_TUNER),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CAP_TUNER) == (0x00010000), "V4L2_CAP_TUNER != 0x00010000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CAP_TUNER 0x00010000
 #endif
 #if defined(V4L2_CAP_AUDIO) || (defined(HAVE_DECL_V4L2_CAP_AUDIO) && HAVE_DECL_V4L2_CAP_AUDIO)
-  XLAT(V4L2_CAP_AUDIO),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CAP_AUDIO) == (0x00020000), "V4L2_CAP_AUDIO != 0x00020000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CAP_AUDIO 0x00020000
 #endif
 #if defined(V4L2_CAP_RADIO) || (defined(HAVE_DECL_V4L2_CAP_RADIO) && HAVE_DECL_V4L2_CAP_RADIO)
-  XLAT(V4L2_CAP_RADIO),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CAP_RADIO) == (0x00040000), "V4L2_CAP_RADIO != 0x00040000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CAP_RADIO 0x00040000
 #endif
 #if defined(V4L2_CAP_MODULATOR) || (defined(HAVE_DECL_V4L2_CAP_MODULATOR) && HAVE_DECL_V4L2_CAP_MODULATOR)
-  XLAT(V4L2_CAP_MODULATOR),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CAP_MODULATOR) == (0x00080000), "V4L2_CAP_MODULATOR != 0x00080000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CAP_MODULATOR 0x00080000
+#endif
+#if defined(V4L2_CAP_SDR_CAPTURE) || (defined(HAVE_DECL_V4L2_CAP_SDR_CAPTURE) && HAVE_DECL_V4L2_CAP_SDR_CAPTURE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CAP_SDR_CAPTURE) == (0x00100000), "V4L2_CAP_SDR_CAPTURE != 0x00100000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CAP_SDR_CAPTURE 0x00100000
+#endif
+#if defined(V4L2_CAP_EXT_PIX_FORMAT) || (defined(HAVE_DECL_V4L2_CAP_EXT_PIX_FORMAT) && HAVE_DECL_V4L2_CAP_EXT_PIX_FORMAT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CAP_EXT_PIX_FORMAT) == (0x00200000), "V4L2_CAP_EXT_PIX_FORMAT != 0x00200000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CAP_EXT_PIX_FORMAT 0x00200000
+#endif
+#if defined(V4L2_CAP_SDR_OUTPUT) || (defined(HAVE_DECL_V4L2_CAP_SDR_OUTPUT) && HAVE_DECL_V4L2_CAP_SDR_OUTPUT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CAP_SDR_OUTPUT) == (0x00400000), "V4L2_CAP_SDR_OUTPUT != 0x00400000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CAP_SDR_OUTPUT 0x00400000
+#endif
+#if defined(V4L2_CAP_META_CAPTURE) || (defined(HAVE_DECL_V4L2_CAP_META_CAPTURE) && HAVE_DECL_V4L2_CAP_META_CAPTURE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CAP_META_CAPTURE) == (0x00800000), "V4L2_CAP_META_CAPTURE != 0x00800000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CAP_META_CAPTURE 0x00800000
 #endif
 #if defined(V4L2_CAP_READWRITE) || (defined(HAVE_DECL_V4L2_CAP_READWRITE) && HAVE_DECL_V4L2_CAP_READWRITE)
-  XLAT(V4L2_CAP_READWRITE),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CAP_READWRITE) == (0x01000000), "V4L2_CAP_READWRITE != 0x01000000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CAP_READWRITE 0x01000000
 #endif
 #if defined(V4L2_CAP_ASYNCIO) || (defined(HAVE_DECL_V4L2_CAP_ASYNCIO) && HAVE_DECL_V4L2_CAP_ASYNCIO)
-  XLAT(V4L2_CAP_ASYNCIO),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CAP_ASYNCIO) == (0x02000000), "V4L2_CAP_ASYNCIO != 0x02000000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CAP_ASYNCIO 0x02000000
 #endif
 #if defined(V4L2_CAP_STREAMING) || (defined(HAVE_DECL_V4L2_CAP_STREAMING) && HAVE_DECL_V4L2_CAP_STREAMING)
-  XLAT(V4L2_CAP_STREAMING),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CAP_STREAMING) == (0x04000000), "V4L2_CAP_STREAMING != 0x04000000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CAP_STREAMING 0x04000000
 #endif
 #if defined(V4L2_CAP_META_OUTPUT) || (defined(HAVE_DECL_V4L2_CAP_META_OUTPUT) && HAVE_DECL_V4L2_CAP_META_OUTPUT)
-  XLAT(V4L2_CAP_META_OUTPUT),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CAP_META_OUTPUT) == (0x08000000), "V4L2_CAP_META_OUTPUT != 0x08000000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CAP_META_OUTPUT 0x08000000
 #endif
 #if defined(V4L2_CAP_TOUCH) || (defined(HAVE_DECL_V4L2_CAP_TOUCH) && HAVE_DECL_V4L2_CAP_TOUCH)
-  XLAT(V4L2_CAP_TOUCH),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CAP_TOUCH) == (0x10000000), "V4L2_CAP_TOUCH != 0x10000000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CAP_TOUCH 0x10000000
 #endif
 #if defined(V4L2_CAP_DEVICE_CAPS) || (defined(HAVE_DECL_V4L2_CAP_DEVICE_CAPS) && HAVE_DECL_V4L2_CAP_DEVICE_CAPS)
-  XLAT(V4L2_CAP_DEVICE_CAPS),
-#endif
-#if defined(V4L2_CAP_SDR_CAPTURE) || (defined(HAVE_DECL_V4L2_CAP_SDR_CAPTURE) && HAVE_DECL_V4L2_CAP_SDR_CAPTURE)
-  XLAT(V4L2_CAP_SDR_CAPTURE),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CAP_DEVICE_CAPS) == (0x80000000), "V4L2_CAP_DEVICE_CAPS != 0x80000000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CAP_DEVICE_CAPS 0x80000000
 #endif
-#if defined(V4L2_CAP_EXT_PIX_FORMAT) || (defined(HAVE_DECL_V4L2_CAP_EXT_PIX_FORMAT) && HAVE_DECL_V4L2_CAP_EXT_PIX_FORMAT)
-  XLAT(V4L2_CAP_EXT_PIX_FORMAT),
-#endif
-#if defined(V4L2_CAP_SDR_OUTPUT) || (defined(HAVE_DECL_V4L2_CAP_SDR_OUTPUT) && HAVE_DECL_V4L2_CAP_SDR_OUTPUT)
-  XLAT(V4L2_CAP_SDR_OUTPUT),
-#endif
-#if defined(V4L2_CAP_META_CAPTURE) || (defined(HAVE_DECL_V4L2_CAP_META_CAPTURE) && HAVE_DECL_V4L2_CAP_META_CAPTURE)
-  XLAT(V4L2_CAP_META_CAPTURE),
-#endif
- XLAT_END
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+extern const struct xlat v4l2_device_capabilities_flags[];
+
+# else
+
+static const struct xlat_data v4l2_device_capabilities_flags_xdata[] = {
+ XLAT(V4L2_CAP_VIDEO_CAPTURE),
+ #define XLAT_VAL_0 ((unsigned) (V4L2_CAP_VIDEO_CAPTURE))
+ #define XLAT_STR_0 STRINGIFY(V4L2_CAP_VIDEO_CAPTURE)
+ XLAT(V4L2_CAP_VIDEO_OUTPUT),
+ #define XLAT_VAL_1 ((unsigned) (V4L2_CAP_VIDEO_OUTPUT))
+ #define XLAT_STR_1 STRINGIFY(V4L2_CAP_VIDEO_OUTPUT)
+ XLAT(V4L2_CAP_VIDEO_OVERLAY),
+ #define XLAT_VAL_2 ((unsigned) (V4L2_CAP_VIDEO_OVERLAY))
+ #define XLAT_STR_2 STRINGIFY(V4L2_CAP_VIDEO_OVERLAY)
+ XLAT(V4L2_CAP_VBI_CAPTURE),
+ #define XLAT_VAL_3 ((unsigned) (V4L2_CAP_VBI_CAPTURE))
+ #define XLAT_STR_3 STRINGIFY(V4L2_CAP_VBI_CAPTURE)
+ XLAT(V4L2_CAP_VBI_OUTPUT),
+ #define XLAT_VAL_4 ((unsigned) (V4L2_CAP_VBI_OUTPUT))
+ #define XLAT_STR_4 STRINGIFY(V4L2_CAP_VBI_OUTPUT)
+ XLAT(V4L2_CAP_SLICED_VBI_CAPTURE),
+ #define XLAT_VAL_5 ((unsigned) (V4L2_CAP_SLICED_VBI_CAPTURE))
+ #define XLAT_STR_5 STRINGIFY(V4L2_CAP_SLICED_VBI_CAPTURE)
+ XLAT(V4L2_CAP_SLICED_VBI_OUTPUT),
+ #define XLAT_VAL_6 ((unsigned) (V4L2_CAP_SLICED_VBI_OUTPUT))
+ #define XLAT_STR_6 STRINGIFY(V4L2_CAP_SLICED_VBI_OUTPUT)
+ XLAT(V4L2_CAP_RDS_CAPTURE),
+ #define XLAT_VAL_7 ((unsigned) (V4L2_CAP_RDS_CAPTURE))
+ #define XLAT_STR_7 STRINGIFY(V4L2_CAP_RDS_CAPTURE)
+ XLAT(V4L2_CAP_VIDEO_OUTPUT_OVERLAY),
+ #define XLAT_VAL_8 ((unsigned) (V4L2_CAP_VIDEO_OUTPUT_OVERLAY))
+ #define XLAT_STR_8 STRINGIFY(V4L2_CAP_VIDEO_OUTPUT_OVERLAY)
+ XLAT(V4L2_CAP_HW_FREQ_SEEK),
+ #define XLAT_VAL_9 ((unsigned) (V4L2_CAP_HW_FREQ_SEEK))
+ #define XLAT_STR_9 STRINGIFY(V4L2_CAP_HW_FREQ_SEEK)
+ XLAT(V4L2_CAP_RDS_OUTPUT),
+ #define XLAT_VAL_10 ((unsigned) (V4L2_CAP_RDS_OUTPUT))
+ #define XLAT_STR_10 STRINGIFY(V4L2_CAP_RDS_OUTPUT)
+ XLAT(V4L2_CAP_VIDEO_CAPTURE_MPLANE),
+ #define XLAT_VAL_11 ((unsigned) (V4L2_CAP_VIDEO_CAPTURE_MPLANE))
+ #define XLAT_STR_11 STRINGIFY(V4L2_CAP_VIDEO_CAPTURE_MPLANE)
+ XLAT(V4L2_CAP_VIDEO_OUTPUT_MPLANE),
+ #define XLAT_VAL_12 ((unsigned) (V4L2_CAP_VIDEO_OUTPUT_MPLANE))
+ #define XLAT_STR_12 STRINGIFY(V4L2_CAP_VIDEO_OUTPUT_MPLANE)
+ XLAT(V4L2_CAP_VIDEO_M2M_MPLANE),
+ #define XLAT_VAL_13 ((unsigned) (V4L2_CAP_VIDEO_M2M_MPLANE))
+ #define XLAT_STR_13 STRINGIFY(V4L2_CAP_VIDEO_M2M_MPLANE)
+ XLAT(V4L2_CAP_VIDEO_M2M),
+ #define XLAT_VAL_14 ((unsigned) (V4L2_CAP_VIDEO_M2M))
+ #define XLAT_STR_14 STRINGIFY(V4L2_CAP_VIDEO_M2M)
+ XLAT(V4L2_CAP_TUNER),
+ #define XLAT_VAL_15 ((unsigned) (V4L2_CAP_TUNER))
+ #define XLAT_STR_15 STRINGIFY(V4L2_CAP_TUNER)
+ XLAT(V4L2_CAP_AUDIO),
+ #define XLAT_VAL_16 ((unsigned) (V4L2_CAP_AUDIO))
+ #define XLAT_STR_16 STRINGIFY(V4L2_CAP_AUDIO)
+ XLAT(V4L2_CAP_RADIO),
+ #define XLAT_VAL_17 ((unsigned) (V4L2_CAP_RADIO))
+ #define XLAT_STR_17 STRINGIFY(V4L2_CAP_RADIO)
+ XLAT(V4L2_CAP_MODULATOR),
+ #define XLAT_VAL_18 ((unsigned) (V4L2_CAP_MODULATOR))
+ #define XLAT_STR_18 STRINGIFY(V4L2_CAP_MODULATOR)
+ XLAT(V4L2_CAP_SDR_CAPTURE),
+ #define XLAT_VAL_19 ((unsigned) (V4L2_CAP_SDR_CAPTURE))
+ #define XLAT_STR_19 STRINGIFY(V4L2_CAP_SDR_CAPTURE)
+ XLAT(V4L2_CAP_EXT_PIX_FORMAT),
+ #define XLAT_VAL_20 ((unsigned) (V4L2_CAP_EXT_PIX_FORMAT))
+ #define XLAT_STR_20 STRINGIFY(V4L2_CAP_EXT_PIX_FORMAT)
+ XLAT(V4L2_CAP_SDR_OUTPUT),
+ #define XLAT_VAL_21 ((unsigned) (V4L2_CAP_SDR_OUTPUT))
+ #define XLAT_STR_21 STRINGIFY(V4L2_CAP_SDR_OUTPUT)
+ XLAT(V4L2_CAP_META_CAPTURE),
+ #define XLAT_VAL_22 ((unsigned) (V4L2_CAP_META_CAPTURE))
+ #define XLAT_STR_22 STRINGIFY(V4L2_CAP_META_CAPTURE)
+ XLAT(V4L2_CAP_READWRITE),
+ #define XLAT_VAL_23 ((unsigned) (V4L2_CAP_READWRITE))
+ #define XLAT_STR_23 STRINGIFY(V4L2_CAP_READWRITE)
+ XLAT(V4L2_CAP_ASYNCIO),
+ #define XLAT_VAL_24 ((unsigned) (V4L2_CAP_ASYNCIO))
+ #define XLAT_STR_24 STRINGIFY(V4L2_CAP_ASYNCIO)
+ XLAT(V4L2_CAP_STREAMING),
+ #define XLAT_VAL_25 ((unsigned) (V4L2_CAP_STREAMING))
+ #define XLAT_STR_25 STRINGIFY(V4L2_CAP_STREAMING)
+ XLAT(V4L2_CAP_META_OUTPUT),
+ #define XLAT_VAL_26 ((unsigned) (V4L2_CAP_META_OUTPUT))
+ #define XLAT_STR_26 STRINGIFY(V4L2_CAP_META_OUTPUT)
+ XLAT(V4L2_CAP_TOUCH),
+ #define XLAT_VAL_27 ((unsigned) (V4L2_CAP_TOUCH))
+ #define XLAT_STR_27 STRINGIFY(V4L2_CAP_TOUCH)
+ XLAT(V4L2_CAP_DEVICE_CAPS),
+ #define XLAT_VAL_28 ((unsigned) (V4L2_CAP_DEVICE_CAPS))
+ #define XLAT_STR_28 STRINGIFY(V4L2_CAP_DEVICE_CAPS)
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat v4l2_device_capabilities_flags[1] = { {
+ .data = v4l2_device_capabilities_flags_xdata,
+ .size = ARRAY_SIZE(v4l2_device_capabilities_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 8b74edbe88cb76fd9751c410896e223cfc393c77..fa65c105f4262def37963007e79b72c4e745d948 100644 (file)
@@ -1,29 +1,29 @@
-V4L2_CAP_VIDEO_CAPTURE
-V4L2_CAP_VIDEO_OUTPUT
-V4L2_CAP_VIDEO_OVERLAY
-V4L2_CAP_VBI_CAPTURE
-V4L2_CAP_VBI_OUTPUT
-V4L2_CAP_SLICED_VBI_CAPTURE
-V4L2_CAP_SLICED_VBI_OUTPUT
-V4L2_CAP_RDS_CAPTURE
-V4L2_CAP_VIDEO_OUTPUT_OVERLAY
-V4L2_CAP_HW_FREQ_SEEK
-V4L2_CAP_RDS_OUTPUT
-V4L2_CAP_VIDEO_CAPTURE_MPLANE
-V4L2_CAP_VIDEO_OUTPUT_MPLANE
-V4L2_CAP_VIDEO_M2M
-V4L2_CAP_VIDEO_M2M_MPLANE
-V4L2_CAP_TUNER
-V4L2_CAP_AUDIO
-V4L2_CAP_RADIO
-V4L2_CAP_MODULATOR
-V4L2_CAP_READWRITE
-V4L2_CAP_ASYNCIO
-V4L2_CAP_STREAMING
-V4L2_CAP_META_OUTPUT
-V4L2_CAP_TOUCH
-V4L2_CAP_DEVICE_CAPS
-V4L2_CAP_SDR_CAPTURE
-V4L2_CAP_EXT_PIX_FORMAT
-V4L2_CAP_SDR_OUTPUT
-V4L2_CAP_META_CAPTURE
+V4L2_CAP_VIDEO_CAPTURE         0x00000001
+V4L2_CAP_VIDEO_OUTPUT          0x00000002
+V4L2_CAP_VIDEO_OVERLAY         0x00000004
+V4L2_CAP_VBI_CAPTURE           0x00000010
+V4L2_CAP_VBI_OUTPUT            0x00000020
+V4L2_CAP_SLICED_VBI_CAPTURE    0x00000040
+V4L2_CAP_SLICED_VBI_OUTPUT     0x00000080
+V4L2_CAP_RDS_CAPTURE           0x00000100
+V4L2_CAP_VIDEO_OUTPUT_OVERLAY  0x00000200
+V4L2_CAP_HW_FREQ_SEEK          0x00000400
+V4L2_CAP_RDS_OUTPUT            0x00000800
+V4L2_CAP_VIDEO_CAPTURE_MPLANE  0x00001000
+V4L2_CAP_VIDEO_OUTPUT_MPLANE   0x00002000
+V4L2_CAP_VIDEO_M2M_MPLANE      0x00004000
+V4L2_CAP_VIDEO_M2M             0x00008000
+V4L2_CAP_TUNER                 0x00010000
+V4L2_CAP_AUDIO                 0x00020000
+V4L2_CAP_RADIO                 0x00040000
+V4L2_CAP_MODULATOR             0x00080000
+V4L2_CAP_SDR_CAPTURE           0x00100000
+V4L2_CAP_EXT_PIX_FORMAT                0x00200000
+V4L2_CAP_SDR_OUTPUT            0x00400000
+V4L2_CAP_META_CAPTURE          0x00800000
+V4L2_CAP_READWRITE             0x01000000
+V4L2_CAP_ASYNCIO               0x02000000
+V4L2_CAP_STREAMING             0x04000000
+V4L2_CAP_META_OUTPUT           0x08000000
+V4L2_CAP_TOUCH                 0x10000000
+V4L2_CAP_DEVICE_CAPS           0x80000000
index e065a73f0b06c68577f2e4c8641ee45db568e7be..82cc7412129867c8a1c3e95ab9ffbc3c798144ea 100644 (file)
 #include "gcc_compat.h"
 #include "static_assert.h"
 
-
-#ifndef XLAT_MACROS_ONLY
-
-# ifdef IN_MPERS
-
-extern const struct xlat v4l2_fields[];
-
-# else
-
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat v4l2_fields[] = {
 #if defined(V4L2_FIELD_ANY) || (defined(HAVE_DECL_V4L2_FIELD_ANY) && HAVE_DECL_V4L2_FIELD_ANY)
-  XLAT(V4L2_FIELD_ANY),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_FIELD_ANY) == (0), "V4L2_FIELD_ANY != 0");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_FIELD_ANY 0
 #endif
 #if defined(V4L2_FIELD_NONE) || (defined(HAVE_DECL_V4L2_FIELD_NONE) && HAVE_DECL_V4L2_FIELD_NONE)
-  XLAT(V4L2_FIELD_NONE),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_FIELD_NONE) == (1), "V4L2_FIELD_NONE != 1");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_FIELD_NONE 1
 #endif
 #if defined(V4L2_FIELD_TOP) || (defined(HAVE_DECL_V4L2_FIELD_TOP) && HAVE_DECL_V4L2_FIELD_TOP)
-  XLAT(V4L2_FIELD_TOP),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_FIELD_TOP) == (2), "V4L2_FIELD_TOP != 2");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_FIELD_TOP 2
 #endif
 #if defined(V4L2_FIELD_BOTTOM) || (defined(HAVE_DECL_V4L2_FIELD_BOTTOM) && HAVE_DECL_V4L2_FIELD_BOTTOM)
-  XLAT(V4L2_FIELD_BOTTOM),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_FIELD_BOTTOM) == (3), "V4L2_FIELD_BOTTOM != 3");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_FIELD_BOTTOM 3
 #endif
 #if defined(V4L2_FIELD_INTERLACED) || (defined(HAVE_DECL_V4L2_FIELD_INTERLACED) && HAVE_DECL_V4L2_FIELD_INTERLACED)
-  XLAT(V4L2_FIELD_INTERLACED),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_FIELD_INTERLACED) == (4), "V4L2_FIELD_INTERLACED != 4");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_FIELD_INTERLACED 4
 #endif
 #if defined(V4L2_FIELD_SEQ_TB) || (defined(HAVE_DECL_V4L2_FIELD_SEQ_TB) && HAVE_DECL_V4L2_FIELD_SEQ_TB)
-  XLAT(V4L2_FIELD_SEQ_TB),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_FIELD_SEQ_TB) == (5), "V4L2_FIELD_SEQ_TB != 5");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_FIELD_SEQ_TB 5
 #endif
 #if defined(V4L2_FIELD_SEQ_BT) || (defined(HAVE_DECL_V4L2_FIELD_SEQ_BT) && HAVE_DECL_V4L2_FIELD_SEQ_BT)
-  XLAT(V4L2_FIELD_SEQ_BT),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_FIELD_SEQ_BT) == (6), "V4L2_FIELD_SEQ_BT != 6");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_FIELD_SEQ_BT 6
 #endif
 #if defined(V4L2_FIELD_ALTERNATE) || (defined(HAVE_DECL_V4L2_FIELD_ALTERNATE) && HAVE_DECL_V4L2_FIELD_ALTERNATE)
-  XLAT(V4L2_FIELD_ALTERNATE),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_FIELD_ALTERNATE) == (7), "V4L2_FIELD_ALTERNATE != 7");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_FIELD_ALTERNATE 7
 #endif
 #if defined(V4L2_FIELD_INTERLACED_TB) || (defined(HAVE_DECL_V4L2_FIELD_INTERLACED_TB) && HAVE_DECL_V4L2_FIELD_INTERLACED_TB)
-  XLAT(V4L2_FIELD_INTERLACED_TB),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_FIELD_INTERLACED_TB) == (8), "V4L2_FIELD_INTERLACED_TB != 8");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_FIELD_INTERLACED_TB 8
 #endif
 #if defined(V4L2_FIELD_INTERLACED_BT) || (defined(HAVE_DECL_V4L2_FIELD_INTERLACED_BT) && HAVE_DECL_V4L2_FIELD_INTERLACED_BT)
-  XLAT(V4L2_FIELD_INTERLACED_BT),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_FIELD_INTERLACED_BT) == (9), "V4L2_FIELD_INTERLACED_BT != 9");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_FIELD_INTERLACED_BT 9
 #endif
- XLAT_END
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+extern const struct xlat v4l2_fields[];
+
+# else
+
+static const struct xlat_data v4l2_fields_xdata[] = {
+ [V4L2_FIELD_ANY] = XLAT(V4L2_FIELD_ANY),
+ #define XLAT_VAL_0 ((unsigned) (V4L2_FIELD_ANY))
+ #define XLAT_STR_0 STRINGIFY(V4L2_FIELD_ANY)
+ [V4L2_FIELD_NONE] = XLAT(V4L2_FIELD_NONE),
+ #define XLAT_VAL_1 ((unsigned) (V4L2_FIELD_NONE))
+ #define XLAT_STR_1 STRINGIFY(V4L2_FIELD_NONE)
+ [V4L2_FIELD_TOP] = XLAT(V4L2_FIELD_TOP),
+ #define XLAT_VAL_2 ((unsigned) (V4L2_FIELD_TOP))
+ #define XLAT_STR_2 STRINGIFY(V4L2_FIELD_TOP)
+ [V4L2_FIELD_BOTTOM] = XLAT(V4L2_FIELD_BOTTOM),
+ #define XLAT_VAL_3 ((unsigned) (V4L2_FIELD_BOTTOM))
+ #define XLAT_STR_3 STRINGIFY(V4L2_FIELD_BOTTOM)
+ [V4L2_FIELD_INTERLACED] = XLAT(V4L2_FIELD_INTERLACED),
+ #define XLAT_VAL_4 ((unsigned) (V4L2_FIELD_INTERLACED))
+ #define XLAT_STR_4 STRINGIFY(V4L2_FIELD_INTERLACED)
+ [V4L2_FIELD_SEQ_TB] = XLAT(V4L2_FIELD_SEQ_TB),
+ #define XLAT_VAL_5 ((unsigned) (V4L2_FIELD_SEQ_TB))
+ #define XLAT_STR_5 STRINGIFY(V4L2_FIELD_SEQ_TB)
+ [V4L2_FIELD_SEQ_BT] = XLAT(V4L2_FIELD_SEQ_BT),
+ #define XLAT_VAL_6 ((unsigned) (V4L2_FIELD_SEQ_BT))
+ #define XLAT_STR_6 STRINGIFY(V4L2_FIELD_SEQ_BT)
+ [V4L2_FIELD_ALTERNATE] = XLAT(V4L2_FIELD_ALTERNATE),
+ #define XLAT_VAL_7 ((unsigned) (V4L2_FIELD_ALTERNATE))
+ #define XLAT_STR_7 STRINGIFY(V4L2_FIELD_ALTERNATE)
+ [V4L2_FIELD_INTERLACED_TB] = XLAT(V4L2_FIELD_INTERLACED_TB),
+ #define XLAT_VAL_8 ((unsigned) (V4L2_FIELD_INTERLACED_TB))
+ #define XLAT_STR_8 STRINGIFY(V4L2_FIELD_INTERLACED_TB)
+ [V4L2_FIELD_INTERLACED_BT] = XLAT(V4L2_FIELD_INTERLACED_BT),
+ #define XLAT_VAL_9 ((unsigned) (V4L2_FIELD_INTERLACED_BT))
+ #define XLAT_STR_9 STRINGIFY(V4L2_FIELD_INTERLACED_BT)
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat v4l2_fields[1] = { {
+ .data = v4l2_fields_xdata,
+ .size = ARRAY_SIZE(v4l2_fields_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 60d00e118205589e01704f90c42689884052fb9d..5a8dcf8391394ef25ef05879098d47386243fc31 100644 (file)
@@ -1,10 +1,16 @@
-V4L2_FIELD_ANY
-V4L2_FIELD_NONE
-V4L2_FIELD_TOP
-V4L2_FIELD_BOTTOM
-V4L2_FIELD_INTERLACED
-V4L2_FIELD_SEQ_TB
-V4L2_FIELD_SEQ_BT
-V4L2_FIELD_ALTERNATE
-V4L2_FIELD_INTERLACED_TB
-V4L2_FIELD_INTERLACED_BT
+#value_indexed
+#enum
+#include <sys/time.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+V4L2_FIELD_ANY                 0
+V4L2_FIELD_NONE                        1
+V4L2_FIELD_TOP                 2
+V4L2_FIELD_BOTTOM              3
+V4L2_FIELD_INTERLACED          4
+V4L2_FIELD_SEQ_TB              5
+V4L2_FIELD_SEQ_BT              6
+V4L2_FIELD_ALTERNATE           7
+V4L2_FIELD_INTERLACED_TB       8
+V4L2_FIELD_INTERLACED_BT       9
diff --git a/xlat/v4l2_fields.m4 b/xlat/v4l2_fields.m4
new file mode 100644 (file)
index 0000000..725597b
--- /dev/null
@@ -0,0 +1,19 @@
+dnl Generated by ./xlat/gen.sh from ./xlat/v4l2_fields.in; do not edit.
+AC_DEFUN([st_CHECK_ENUMS_v4l2_fields],[
+AC_CHECK_DECLS(m4_normalize([
+V4L2_FIELD_ANY,
+V4L2_FIELD_NONE,
+V4L2_FIELD_TOP,
+V4L2_FIELD_BOTTOM,
+V4L2_FIELD_INTERLACED,
+V4L2_FIELD_SEQ_TB,
+V4L2_FIELD_SEQ_BT,
+V4L2_FIELD_ALTERNATE,
+V4L2_FIELD_INTERLACED_TB,
+V4L2_FIELD_INTERLACED_BT
+]),,, [
+#include <sys/time.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+])])])
index 9bf39a14f9980439748443e44b66ecbfa3a46529..a55d37f2672c3bf3fba2bdd0f0dfdff6b6a5fab7 100644 (file)
@@ -3,6 +3,41 @@
 #include "gcc_compat.h"
 #include "static_assert.h"
 
+#if defined(V4L2_FMT_FLAG_COMPRESSED) || (defined(HAVE_DECL_V4L2_FMT_FLAG_COMPRESSED) && HAVE_DECL_V4L2_FMT_FLAG_COMPRESSED)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_FMT_FLAG_COMPRESSED) == (0x0001), "V4L2_FMT_FLAG_COMPRESSED != 0x0001");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_FMT_FLAG_COMPRESSED 0x0001
+#endif
+#if defined(V4L2_FMT_FLAG_EMULATED) || (defined(HAVE_DECL_V4L2_FMT_FLAG_EMULATED) && HAVE_DECL_V4L2_FMT_FLAG_EMULATED)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_FMT_FLAG_EMULATED) == (0x0002), "V4L2_FMT_FLAG_EMULATED != 0x0002");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_FMT_FLAG_EMULATED 0x0002
+#endif
+#if defined(V4L2_FMT_FLAG_CONTINUOUS_BYTESTREAM) || (defined(HAVE_DECL_V4L2_FMT_FLAG_CONTINUOUS_BYTESTREAM) && HAVE_DECL_V4L2_FMT_FLAG_CONTINUOUS_BYTESTREAM)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_FMT_FLAG_CONTINUOUS_BYTESTREAM) == (0x0004), "V4L2_FMT_FLAG_CONTINUOUS_BYTESTREAM != 0x0004");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_FMT_FLAG_CONTINUOUS_BYTESTREAM 0x0004
+#endif
+#if defined(V4L2_FMT_FLAG_DYN_RESOLUTION) || (defined(HAVE_DECL_V4L2_FMT_FLAG_DYN_RESOLUTION) && HAVE_DECL_V4L2_FMT_FLAG_DYN_RESOLUTION)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_FMT_FLAG_DYN_RESOLUTION) == (0x0008), "V4L2_FMT_FLAG_DYN_RESOLUTION != 0x0008");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_FMT_FLAG_DYN_RESOLUTION 0x0008
+#endif
+#if defined(V4L2_FMT_FLAG_ENC_CAP_FRAME_INTERVAL) || (defined(HAVE_DECL_V4L2_FMT_FLAG_ENC_CAP_FRAME_INTERVAL) && HAVE_DECL_V4L2_FMT_FLAG_ENC_CAP_FRAME_INTERVAL)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_FMT_FLAG_ENC_CAP_FRAME_INTERVAL) == (0x0010), "V4L2_FMT_FLAG_ENC_CAP_FRAME_INTERVAL != 0x0010");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_FMT_FLAG_ENC_CAP_FRAME_INTERVAL 0x0010
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
@@ -12,19 +47,76 @@ extern const struct xlat v4l2_format_description_flags[];
 
 # else
 
+static const struct xlat_data v4l2_format_description_flags_xdata[] = {
+ XLAT(V4L2_FMT_FLAG_COMPRESSED),
+ #define XLAT_VAL_0 ((unsigned) (V4L2_FMT_FLAG_COMPRESSED))
+ #define XLAT_STR_0 STRINGIFY(V4L2_FMT_FLAG_COMPRESSED)
+ XLAT(V4L2_FMT_FLAG_EMULATED),
+ #define XLAT_VAL_1 ((unsigned) (V4L2_FMT_FLAG_EMULATED))
+ #define XLAT_STR_1 STRINGIFY(V4L2_FMT_FLAG_EMULATED)
+ XLAT(V4L2_FMT_FLAG_CONTINUOUS_BYTESTREAM),
+ #define XLAT_VAL_2 ((unsigned) (V4L2_FMT_FLAG_CONTINUOUS_BYTESTREAM))
+ #define XLAT_STR_2 STRINGIFY(V4L2_FMT_FLAG_CONTINUOUS_BYTESTREAM)
+ XLAT(V4L2_FMT_FLAG_DYN_RESOLUTION),
+ #define XLAT_VAL_3 ((unsigned) (V4L2_FMT_FLAG_DYN_RESOLUTION))
+ #define XLAT_STR_3 STRINGIFY(V4L2_FMT_FLAG_DYN_RESOLUTION)
+ XLAT(V4L2_FMT_FLAG_ENC_CAP_FRAME_INTERVAL),
+ #define XLAT_VAL_4 ((unsigned) (V4L2_FMT_FLAG_ENC_CAP_FRAME_INTERVAL))
+ #define XLAT_STR_4 STRINGIFY(V4L2_FMT_FLAG_ENC_CAP_FRAME_INTERVAL)
+};
 #  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
 static
 #  endif
-const struct xlat v4l2_format_description_flags[] = {
-#if defined(V4L2_FMT_FLAG_COMPRESSED) || (defined(HAVE_DECL_V4L2_FMT_FLAG_COMPRESSED) && HAVE_DECL_V4L2_FMT_FLAG_COMPRESSED)
-  XLAT(V4L2_FMT_FLAG_COMPRESSED),
-#endif
-#if defined(V4L2_FMT_FLAG_EMULATED) || (defined(HAVE_DECL_V4L2_FMT_FLAG_EMULATED) && HAVE_DECL_V4L2_FMT_FLAG_EMULATED)
-  XLAT(V4L2_FMT_FLAG_EMULATED),
-#endif
- XLAT_END
-};
+const struct xlat v4l2_format_description_flags[1] = { {
+ .data = v4l2_format_description_flags_xdata,
+ .size = ARRAY_SIZE(v4l2_format_description_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index ed5a3d389b5f346cf6d6f41d1ffd3b483491e288..7835afb1a15de4e8c4bdaa6a01490802d699831c 100644 (file)
@@ -1,2 +1,5 @@
-V4L2_FMT_FLAG_COMPRESSED
-V4L2_FMT_FLAG_EMULATED
+V4L2_FMT_FLAG_COMPRESSED               0x0001
+V4L2_FMT_FLAG_EMULATED                 0x0002
+V4L2_FMT_FLAG_CONTINUOUS_BYTESTREAM    0x0004
+V4L2_FMT_FLAG_DYN_RESOLUTION           0x0008
+V4L2_FMT_FLAG_ENC_CAP_FRAME_INTERVAL   0x0010
index 6b7b942703d3eed5fafdcbea8982d668d8051d64..96802f28ea2c0fcc0345919a5c7f57189be2f156 100644 (file)
@@ -3,6 +3,27 @@
 #include "gcc_compat.h"
 #include "static_assert.h"
 
+#if defined(V4L2_FRMIVAL_TYPE_DISCRETE) || (defined(HAVE_DECL_V4L2_FRMIVAL_TYPE_DISCRETE) && HAVE_DECL_V4L2_FRMIVAL_TYPE_DISCRETE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_FRMIVAL_TYPE_DISCRETE) == (1), "V4L2_FRMIVAL_TYPE_DISCRETE != 1");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_FRMIVAL_TYPE_DISCRETE 1
+#endif
+#if defined(V4L2_FRMIVAL_TYPE_CONTINUOUS) || (defined(HAVE_DECL_V4L2_FRMIVAL_TYPE_CONTINUOUS) && HAVE_DECL_V4L2_FRMIVAL_TYPE_CONTINUOUS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_FRMIVAL_TYPE_CONTINUOUS) == (2), "V4L2_FRMIVAL_TYPE_CONTINUOUS != 2");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_FRMIVAL_TYPE_CONTINUOUS 2
+#endif
+#if defined(V4L2_FRMIVAL_TYPE_STEPWISE) || (defined(HAVE_DECL_V4L2_FRMIVAL_TYPE_STEPWISE) && HAVE_DECL_V4L2_FRMIVAL_TYPE_STEPWISE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_FRMIVAL_TYPE_STEPWISE) == (3), "V4L2_FRMIVAL_TYPE_STEPWISE != 3");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_FRMIVAL_TYPE_STEPWISE 3
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
@@ -12,22 +33,54 @@ extern const struct xlat v4l2_frameinterval_types[];
 
 # else
 
+static const struct xlat_data v4l2_frameinterval_types_xdata[] = {
+ [V4L2_FRMIVAL_TYPE_DISCRETE] = XLAT(V4L2_FRMIVAL_TYPE_DISCRETE),
+ #define XLAT_VAL_0 ((unsigned) (V4L2_FRMIVAL_TYPE_DISCRETE))
+ #define XLAT_STR_0 STRINGIFY(V4L2_FRMIVAL_TYPE_DISCRETE)
+ [V4L2_FRMIVAL_TYPE_CONTINUOUS] = XLAT(V4L2_FRMIVAL_TYPE_CONTINUOUS),
+ #define XLAT_VAL_1 ((unsigned) (V4L2_FRMIVAL_TYPE_CONTINUOUS))
+ #define XLAT_STR_1 STRINGIFY(V4L2_FRMIVAL_TYPE_CONTINUOUS)
+ [V4L2_FRMIVAL_TYPE_STEPWISE] = XLAT(V4L2_FRMIVAL_TYPE_STEPWISE),
+ #define XLAT_VAL_2 ((unsigned) (V4L2_FRMIVAL_TYPE_STEPWISE))
+ #define XLAT_STR_2 STRINGIFY(V4L2_FRMIVAL_TYPE_STEPWISE)
+};
 #  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
 static
 #  endif
-const struct xlat v4l2_frameinterval_types[] = {
-#if defined(V4L2_FRMIVAL_TYPE_DISCRETE) || (defined(HAVE_DECL_V4L2_FRMIVAL_TYPE_DISCRETE) && HAVE_DECL_V4L2_FRMIVAL_TYPE_DISCRETE)
-  XLAT(V4L2_FRMIVAL_TYPE_DISCRETE),
-#endif
-#if defined(V4L2_FRMIVAL_TYPE_CONTINUOUS) || (defined(HAVE_DECL_V4L2_FRMIVAL_TYPE_CONTINUOUS) && HAVE_DECL_V4L2_FRMIVAL_TYPE_CONTINUOUS)
-  XLAT(V4L2_FRMIVAL_TYPE_CONTINUOUS),
-#endif
-#if defined(V4L2_FRMIVAL_TYPE_STEPWISE) || (defined(HAVE_DECL_V4L2_FRMIVAL_TYPE_STEPWISE) && HAVE_DECL_V4L2_FRMIVAL_TYPE_STEPWISE)
-  XLAT(V4L2_FRMIVAL_TYPE_STEPWISE),
-#endif
- XLAT_END
-};
+const struct xlat v4l2_frameinterval_types[1] = { {
+ .data = v4l2_frameinterval_types_xdata,
+ .size = ARRAY_SIZE(v4l2_frameinterval_types_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 30d46d6efd2f2b8ba0e4100bb480f9f779ae05b9..8cd22563de19e4a309f951b171d65fd164f73325 100644 (file)
@@ -1,3 +1,4 @@
-V4L2_FRMIVAL_TYPE_DISCRETE
-V4L2_FRMIVAL_TYPE_CONTINUOUS
-V4L2_FRMIVAL_TYPE_STEPWISE
+#value_indexed
+V4L2_FRMIVAL_TYPE_DISCRETE     1
+V4L2_FRMIVAL_TYPE_CONTINUOUS   2
+V4L2_FRMIVAL_TYPE_STEPWISE     3
index 9f5dbfa0ef95d4b383af4e848c66c972bc44c9eb..18c66f7cc8d1464dd5c89db4b1073ed79413286c 100644 (file)
@@ -3,6 +3,27 @@
 #include "gcc_compat.h"
 #include "static_assert.h"
 
+#if defined(V4L2_FRMSIZE_TYPE_DISCRETE) || (defined(HAVE_DECL_V4L2_FRMSIZE_TYPE_DISCRETE) && HAVE_DECL_V4L2_FRMSIZE_TYPE_DISCRETE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_FRMSIZE_TYPE_DISCRETE) == (1), "V4L2_FRMSIZE_TYPE_DISCRETE != 1");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_FRMSIZE_TYPE_DISCRETE 1
+#endif
+#if defined(V4L2_FRMSIZE_TYPE_CONTINUOUS) || (defined(HAVE_DECL_V4L2_FRMSIZE_TYPE_CONTINUOUS) && HAVE_DECL_V4L2_FRMSIZE_TYPE_CONTINUOUS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_FRMSIZE_TYPE_CONTINUOUS) == (2), "V4L2_FRMSIZE_TYPE_CONTINUOUS != 2");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_FRMSIZE_TYPE_CONTINUOUS 2
+#endif
+#if defined(V4L2_FRMSIZE_TYPE_STEPWISE) || (defined(HAVE_DECL_V4L2_FRMSIZE_TYPE_STEPWISE) && HAVE_DECL_V4L2_FRMSIZE_TYPE_STEPWISE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_FRMSIZE_TYPE_STEPWISE) == (3), "V4L2_FRMSIZE_TYPE_STEPWISE != 3");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_FRMSIZE_TYPE_STEPWISE 3
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
@@ -12,22 +33,54 @@ extern const struct xlat v4l2_framesize_types[];
 
 # else
 
+static const struct xlat_data v4l2_framesize_types_xdata[] = {
+ [V4L2_FRMSIZE_TYPE_DISCRETE] = XLAT(V4L2_FRMSIZE_TYPE_DISCRETE),
+ #define XLAT_VAL_0 ((unsigned) (V4L2_FRMSIZE_TYPE_DISCRETE))
+ #define XLAT_STR_0 STRINGIFY(V4L2_FRMSIZE_TYPE_DISCRETE)
+ [V4L2_FRMSIZE_TYPE_CONTINUOUS] = XLAT(V4L2_FRMSIZE_TYPE_CONTINUOUS),
+ #define XLAT_VAL_1 ((unsigned) (V4L2_FRMSIZE_TYPE_CONTINUOUS))
+ #define XLAT_STR_1 STRINGIFY(V4L2_FRMSIZE_TYPE_CONTINUOUS)
+ [V4L2_FRMSIZE_TYPE_STEPWISE] = XLAT(V4L2_FRMSIZE_TYPE_STEPWISE),
+ #define XLAT_VAL_2 ((unsigned) (V4L2_FRMSIZE_TYPE_STEPWISE))
+ #define XLAT_STR_2 STRINGIFY(V4L2_FRMSIZE_TYPE_STEPWISE)
+};
 #  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
 static
 #  endif
-const struct xlat v4l2_framesize_types[] = {
-#if defined(V4L2_FRMSIZE_TYPE_DISCRETE) || (defined(HAVE_DECL_V4L2_FRMSIZE_TYPE_DISCRETE) && HAVE_DECL_V4L2_FRMSIZE_TYPE_DISCRETE)
-  XLAT(V4L2_FRMSIZE_TYPE_DISCRETE),
-#endif
-#if defined(V4L2_FRMSIZE_TYPE_CONTINUOUS) || (defined(HAVE_DECL_V4L2_FRMSIZE_TYPE_CONTINUOUS) && HAVE_DECL_V4L2_FRMSIZE_TYPE_CONTINUOUS)
-  XLAT(V4L2_FRMSIZE_TYPE_CONTINUOUS),
-#endif
-#if defined(V4L2_FRMSIZE_TYPE_STEPWISE) || (defined(HAVE_DECL_V4L2_FRMSIZE_TYPE_STEPWISE) && HAVE_DECL_V4L2_FRMSIZE_TYPE_STEPWISE)
-  XLAT(V4L2_FRMSIZE_TYPE_STEPWISE),
-#endif
- XLAT_END
-};
+const struct xlat v4l2_framesize_types[1] = { {
+ .data = v4l2_framesize_types_xdata,
+ .size = ARRAY_SIZE(v4l2_framesize_types_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 5eb2b83ebe7879956892d19fd39fcd76babace9e..49ae6a2d90509c95b2bd4ac839c4340cabc1f046 100644 (file)
@@ -1,3 +1,9 @@
-V4L2_FRMSIZE_TYPE_DISCRETE
-V4L2_FRMSIZE_TYPE_CONTINUOUS
-V4L2_FRMSIZE_TYPE_STEPWISE
+#value_indexed
+#enum
+#include <sys/time.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+V4L2_FRMSIZE_TYPE_DISCRETE     1
+V4L2_FRMSIZE_TYPE_CONTINUOUS   2
+V4L2_FRMSIZE_TYPE_STEPWISE     3
diff --git a/xlat/v4l2_framesize_types.m4 b/xlat/v4l2_framesize_types.m4
new file mode 100644 (file)
index 0000000..75a5676
--- /dev/null
@@ -0,0 +1,12 @@
+dnl Generated by ./xlat/gen.sh from ./xlat/v4l2_framesize_types.in; do not edit.
+AC_DEFUN([st_CHECK_ENUMS_v4l2_framesize_types],[
+AC_CHECK_DECLS(m4_normalize([
+V4L2_FRMSIZE_TYPE_DISCRETE,
+V4L2_FRMSIZE_TYPE_CONTINUOUS,
+V4L2_FRMSIZE_TYPE_STEPWISE
+]),,, [
+#include <sys/time.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+])])])
index 9c023f276328e213e7ee221508ff0c5e264f21cd..73dbf16e604c1f62a24b155968b0083727b0b24d 100644 (file)
@@ -3,6 +3,27 @@
 #include "gcc_compat.h"
 #include "static_assert.h"
 
+#if defined(V4L2_INPUT_TYPE_TUNER) || (defined(HAVE_DECL_V4L2_INPUT_TYPE_TUNER) && HAVE_DECL_V4L2_INPUT_TYPE_TUNER)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_INPUT_TYPE_TUNER) == (1), "V4L2_INPUT_TYPE_TUNER != 1");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_INPUT_TYPE_TUNER 1
+#endif
+#if defined(V4L2_INPUT_TYPE_CAMERA) || (defined(HAVE_DECL_V4L2_INPUT_TYPE_CAMERA) && HAVE_DECL_V4L2_INPUT_TYPE_CAMERA)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_INPUT_TYPE_CAMERA) == (2), "V4L2_INPUT_TYPE_CAMERA != 2");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_INPUT_TYPE_CAMERA 2
+#endif
+#if defined(V4L2_INPUT_TYPE_TOUCH) || (defined(HAVE_DECL_V4L2_INPUT_TYPE_TOUCH) && HAVE_DECL_V4L2_INPUT_TYPE_TOUCH)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_INPUT_TYPE_TOUCH) == (3), "V4L2_INPUT_TYPE_TOUCH != 3");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_INPUT_TYPE_TOUCH 3
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
@@ -12,22 +33,54 @@ extern const struct xlat v4l2_input_types[];
 
 # else
 
+static const struct xlat_data v4l2_input_types_xdata[] = {
+ [V4L2_INPUT_TYPE_TUNER] = XLAT(V4L2_INPUT_TYPE_TUNER),
+ #define XLAT_VAL_0 ((unsigned) (V4L2_INPUT_TYPE_TUNER))
+ #define XLAT_STR_0 STRINGIFY(V4L2_INPUT_TYPE_TUNER)
+ [V4L2_INPUT_TYPE_CAMERA] = XLAT(V4L2_INPUT_TYPE_CAMERA),
+ #define XLAT_VAL_1 ((unsigned) (V4L2_INPUT_TYPE_CAMERA))
+ #define XLAT_STR_1 STRINGIFY(V4L2_INPUT_TYPE_CAMERA)
+ [V4L2_INPUT_TYPE_TOUCH] = XLAT(V4L2_INPUT_TYPE_TOUCH),
+ #define XLAT_VAL_2 ((unsigned) (V4L2_INPUT_TYPE_TOUCH))
+ #define XLAT_STR_2 STRINGIFY(V4L2_INPUT_TYPE_TOUCH)
+};
 #  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
 static
 #  endif
-const struct xlat v4l2_input_types[] = {
-#if defined(V4L2_INPUT_TYPE_TUNER) || (defined(HAVE_DECL_V4L2_INPUT_TYPE_TUNER) && HAVE_DECL_V4L2_INPUT_TYPE_TUNER)
-  XLAT(V4L2_INPUT_TYPE_TUNER),
-#endif
-#if defined(V4L2_INPUT_TYPE_CAMERA) || (defined(HAVE_DECL_V4L2_INPUT_TYPE_CAMERA) && HAVE_DECL_V4L2_INPUT_TYPE_CAMERA)
-  XLAT(V4L2_INPUT_TYPE_CAMERA),
-#endif
-#if defined(V4L2_INPUT_TYPE_TOUCH) || (defined(HAVE_DECL_V4L2_INPUT_TYPE_TOUCH) && HAVE_DECL_V4L2_INPUT_TYPE_TOUCH)
-  XLAT(V4L2_INPUT_TYPE_TOUCH),
-#endif
- XLAT_END
-};
+const struct xlat v4l2_input_types[1] = { {
+ .data = v4l2_input_types_xdata,
+ .size = ARRAY_SIZE(v4l2_input_types_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 1991d5021b99420238504d526346c81ca41bb351..1a8ec1befb384a83118a054b99c6b93a9d398721 100644 (file)
@@ -1,3 +1,4 @@
-V4L2_INPUT_TYPE_TUNER
-V4L2_INPUT_TYPE_CAMERA
-V4L2_INPUT_TYPE_TOUCH
+#value_indexed
+V4L2_INPUT_TYPE_TUNER  1
+V4L2_INPUT_TYPE_CAMERA 2
+V4L2_INPUT_TYPE_TOUCH  3
diff --git a/xlat/v4l2_ioctl_cmds.h b/xlat/v4l2_ioctl_cmds.h
new file mode 100644 (file)
index 0000000..d0883e0
--- /dev/null
@@ -0,0 +1,783 @@
+/* Generated by ./xlat/gen.sh from ./xlat/v4l2_ioctl_cmds.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#ifndef STRACE_WORKAROUND_V4L2_TIME64
+# define STRACE_WORKAROUND_V4L2_TIME64
+# undef VIDIOC_QUERYBUF
+# undef VIDIOC_QBUF
+# undef VIDIOC_DQBUF
+# undef VIDIOC_PREPARE_BUF
+# undef VIDIOC_DQEVENT
+#endif
+#if defined(VIDIOC_QUERYCAP) || (defined(HAVE_DECL_VIDIOC_QUERYCAP) && HAVE_DECL_VIDIOC_QUERYCAP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((VIDIOC_QUERYCAP) == (_IOR ('V',   0, struct_v4l2_capability)), "VIDIOC_QUERYCAP != _IOR ('V',   0, struct_v4l2_capability)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define VIDIOC_QUERYCAP _IOR ('V',   0, struct_v4l2_capability)
+#endif
+#if defined(VIDIOC_ENUM_FMT) || (defined(HAVE_DECL_VIDIOC_ENUM_FMT) && HAVE_DECL_VIDIOC_ENUM_FMT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((VIDIOC_ENUM_FMT) == (_IOWR('V',   2, struct v4l2_fmtdesc)), "VIDIOC_ENUM_FMT != _IOWR('V',   2, struct v4l2_fmtdesc)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define VIDIOC_ENUM_FMT _IOWR('V',   2, struct v4l2_fmtdesc)
+#endif
+#if defined(VIDIOC_G_FMT) || (defined(HAVE_DECL_VIDIOC_G_FMT) && HAVE_DECL_VIDIOC_G_FMT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((VIDIOC_G_FMT) == (_IOWR('V',   4, struct_v4l2_format)), "VIDIOC_G_FMT != _IOWR('V',   4, struct_v4l2_format)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define VIDIOC_G_FMT _IOWR('V',   4, struct_v4l2_format)
+#endif
+#if defined(VIDIOC_S_FMT) || (defined(HAVE_DECL_VIDIOC_S_FMT) && HAVE_DECL_VIDIOC_S_FMT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((VIDIOC_S_FMT) == (_IOWR('V',   5, struct_v4l2_format)), "VIDIOC_S_FMT != _IOWR('V',   5, struct_v4l2_format)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define VIDIOC_S_FMT _IOWR('V',   5, struct_v4l2_format)
+#endif
+#if defined(VIDIOC_REQBUFS) || (defined(HAVE_DECL_VIDIOC_REQBUFS) && HAVE_DECL_VIDIOC_REQBUFS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((VIDIOC_REQBUFS) == (_IOWR('V',   8, struct v4l2_requestbuffers)), "VIDIOC_REQBUFS != _IOWR('V',   8, struct v4l2_requestbuffers)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define VIDIOC_REQBUFS _IOWR('V',   8, struct v4l2_requestbuffers)
+#endif
+#if defined(VIDIOC_QUERYBUF) || (defined(HAVE_DECL_VIDIOC_QUERYBUF) && HAVE_DECL_VIDIOC_QUERYBUF)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((VIDIOC_QUERYBUF) == (_IOWR('V',   9, kernel_v4l2_buffer_t)), "VIDIOC_QUERYBUF != _IOWR('V',   9, kernel_v4l2_buffer_t)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define VIDIOC_QUERYBUF _IOWR('V',   9, kernel_v4l2_buffer_t)
+#endif
+#if defined(VIDIOC_G_FBUF) || (defined(HAVE_DECL_VIDIOC_G_FBUF) && HAVE_DECL_VIDIOC_G_FBUF)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((VIDIOC_G_FBUF) == (_IOR ('V',  10, struct_v4l2_framebuffer)), "VIDIOC_G_FBUF != _IOR ('V',  10, struct_v4l2_framebuffer)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define VIDIOC_G_FBUF _IOR ('V',  10, struct_v4l2_framebuffer)
+#endif
+#if defined(VIDIOC_S_FBUF) || (defined(HAVE_DECL_VIDIOC_S_FBUF) && HAVE_DECL_VIDIOC_S_FBUF)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((VIDIOC_S_FBUF) == (_IOW ('V',  11, struct_v4l2_framebuffer)), "VIDIOC_S_FBUF != _IOW ('V',  11, struct_v4l2_framebuffer)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define VIDIOC_S_FBUF _IOW ('V',  11, struct_v4l2_framebuffer)
+#endif
+#if defined(VIDIOC_QBUF) || (defined(HAVE_DECL_VIDIOC_QBUF) && HAVE_DECL_VIDIOC_QBUF)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((VIDIOC_QBUF) == (_IOWR('V',  15, kernel_v4l2_buffer_t)), "VIDIOC_QBUF != _IOWR('V',  15, kernel_v4l2_buffer_t)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define VIDIOC_QBUF _IOWR('V',  15, kernel_v4l2_buffer_t)
+#endif
+#if defined(VIDIOC_DQBUF) || (defined(HAVE_DECL_VIDIOC_DQBUF) && HAVE_DECL_VIDIOC_DQBUF)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((VIDIOC_DQBUF) == (_IOWR('V',  17, kernel_v4l2_buffer_t)), "VIDIOC_DQBUF != _IOWR('V',  17, kernel_v4l2_buffer_t)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define VIDIOC_DQBUF _IOWR('V',  17, kernel_v4l2_buffer_t)
+#endif
+#if defined(VIDIOC_STREAMON) || (defined(HAVE_DECL_VIDIOC_STREAMON) && HAVE_DECL_VIDIOC_STREAMON)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((VIDIOC_STREAMON) == (_IOW ('V',  18, int)), "VIDIOC_STREAMON != _IOW ('V',  18, int)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define VIDIOC_STREAMON _IOW ('V',  18, int)
+#endif
+#if defined(VIDIOC_STREAMOFF) || (defined(HAVE_DECL_VIDIOC_STREAMOFF) && HAVE_DECL_VIDIOC_STREAMOFF)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((VIDIOC_STREAMOFF) == (_IOW ('V',  19, int)), "VIDIOC_STREAMOFF != _IOW ('V',  19, int)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define VIDIOC_STREAMOFF _IOW ('V',  19, int)
+#endif
+#if defined(VIDIOC_G_PARM) || (defined(HAVE_DECL_VIDIOC_G_PARM) && HAVE_DECL_VIDIOC_G_PARM)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((VIDIOC_G_PARM) == (_IOWR('V',  21, struct v4l2_streamparm)), "VIDIOC_G_PARM != _IOWR('V',  21, struct v4l2_streamparm)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define VIDIOC_G_PARM _IOWR('V',  21, struct v4l2_streamparm)
+#endif
+#if defined(VIDIOC_S_PARM) || (defined(HAVE_DECL_VIDIOC_S_PARM) && HAVE_DECL_VIDIOC_S_PARM)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((VIDIOC_S_PARM) == (_IOWR('V',  22, struct v4l2_streamparm)), "VIDIOC_S_PARM != _IOWR('V',  22, struct v4l2_streamparm)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define VIDIOC_S_PARM _IOWR('V',  22, struct v4l2_streamparm)
+#endif
+#if defined(VIDIOC_G_STD) || (defined(HAVE_DECL_VIDIOC_G_STD) && HAVE_DECL_VIDIOC_G_STD)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((VIDIOC_G_STD) == (_IOR ('V',  23, uint64_t)), "VIDIOC_G_STD != _IOR ('V',  23, uint64_t)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define VIDIOC_G_STD _IOR ('V',  23, uint64_t)
+#endif
+#if defined(VIDIOC_S_STD) || (defined(HAVE_DECL_VIDIOC_S_STD) && HAVE_DECL_VIDIOC_S_STD)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((VIDIOC_S_STD) == (_IOW ('V',  24, uint64_t)), "VIDIOC_S_STD != _IOW ('V',  24, uint64_t)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define VIDIOC_S_STD _IOW ('V',  24, uint64_t)
+#endif
+#if defined(VIDIOC_ENUMSTD) || (defined(HAVE_DECL_VIDIOC_ENUMSTD) && HAVE_DECL_VIDIOC_ENUMSTD)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((VIDIOC_ENUMSTD) == (_IOWR('V',  25, struct_v4l2_standard)), "VIDIOC_ENUMSTD != _IOWR('V',  25, struct_v4l2_standard)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define VIDIOC_ENUMSTD _IOWR('V',  25, struct_v4l2_standard)
+#endif
+#if defined(VIDIOC_ENUMINPUT) || (defined(HAVE_DECL_VIDIOC_ENUMINPUT) && HAVE_DECL_VIDIOC_ENUMINPUT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((VIDIOC_ENUMINPUT) == (_IOWR('V',  26, struct_v4l2_input)), "VIDIOC_ENUMINPUT != _IOWR('V',  26, struct_v4l2_input)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define VIDIOC_ENUMINPUT _IOWR('V',  26, struct_v4l2_input)
+#endif
+#if defined(VIDIOC_G_CTRL) || (defined(HAVE_DECL_VIDIOC_G_CTRL) && HAVE_DECL_VIDIOC_G_CTRL)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((VIDIOC_G_CTRL) == (_IOWR('V',  27, struct v4l2_control)), "VIDIOC_G_CTRL != _IOWR('V',  27, struct v4l2_control)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define VIDIOC_G_CTRL _IOWR('V',  27, struct v4l2_control)
+#endif
+#if defined(VIDIOC_S_CTRL) || (defined(HAVE_DECL_VIDIOC_S_CTRL) && HAVE_DECL_VIDIOC_S_CTRL)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((VIDIOC_S_CTRL) == (_IOWR('V',  28, struct v4l2_control)), "VIDIOC_S_CTRL != _IOWR('V',  28, struct v4l2_control)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define VIDIOC_S_CTRL _IOWR('V',  28, struct v4l2_control)
+#endif
+#if defined(VIDIOC_G_TUNER) || (defined(HAVE_DECL_VIDIOC_G_TUNER) && HAVE_DECL_VIDIOC_G_TUNER)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((VIDIOC_G_TUNER) == (_IOWR('V',  29, struct v4l2_tuner)), "VIDIOC_G_TUNER != _IOWR('V',  29, struct v4l2_tuner)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define VIDIOC_G_TUNER _IOWR('V',  29, struct v4l2_tuner)
+#endif
+#if defined(VIDIOC_S_TUNER) || (defined(HAVE_DECL_VIDIOC_S_TUNER) && HAVE_DECL_VIDIOC_S_TUNER)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((VIDIOC_S_TUNER) == (_IOW ('V',  30, struct v4l2_tuner)), "VIDIOC_S_TUNER != _IOW ('V',  30, struct v4l2_tuner)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define VIDIOC_S_TUNER _IOW ('V',  30, struct v4l2_tuner)
+#endif
+#if defined(VIDIOC_QUERYCTRL) || (defined(HAVE_DECL_VIDIOC_QUERYCTRL) && HAVE_DECL_VIDIOC_QUERYCTRL)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((VIDIOC_QUERYCTRL) == (_IOWR('V',  36, struct v4l2_queryctrl)), "VIDIOC_QUERYCTRL != _IOWR('V',  36, struct v4l2_queryctrl)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define VIDIOC_QUERYCTRL _IOWR('V',  36, struct v4l2_queryctrl)
+#endif
+#if defined(VIDIOC_G_INPUT) || (defined(HAVE_DECL_VIDIOC_G_INPUT) && HAVE_DECL_VIDIOC_G_INPUT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((VIDIOC_G_INPUT) == (_IOR ('V',  38, int)), "VIDIOC_G_INPUT != _IOR ('V',  38, int)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define VIDIOC_G_INPUT _IOR ('V',  38, int)
+#endif
+#if defined(VIDIOC_S_INPUT) || (defined(HAVE_DECL_VIDIOC_S_INPUT) && HAVE_DECL_VIDIOC_S_INPUT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((VIDIOC_S_INPUT) == (_IOWR('V',  39, int)), "VIDIOC_S_INPUT != _IOWR('V',  39, int)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define VIDIOC_S_INPUT _IOWR('V',  39, int)
+#endif
+#if defined(VIDIOC_CROPCAP) || (defined(HAVE_DECL_VIDIOC_CROPCAP) && HAVE_DECL_VIDIOC_CROPCAP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((VIDIOC_CROPCAP) == (_IOWR('V',  58, struct v4l2_cropcap)), "VIDIOC_CROPCAP != _IOWR('V',  58, struct v4l2_cropcap)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define VIDIOC_CROPCAP _IOWR('V',  58, struct v4l2_cropcap)
+#endif
+#if defined(VIDIOC_G_CROP) || (defined(HAVE_DECL_VIDIOC_G_CROP) && HAVE_DECL_VIDIOC_G_CROP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((VIDIOC_G_CROP) == (_IOWR('V',  59, struct v4l2_crop)), "VIDIOC_G_CROP != _IOWR('V',  59, struct v4l2_crop)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define VIDIOC_G_CROP _IOWR('V',  59, struct v4l2_crop)
+#endif
+#if defined(VIDIOC_S_CROP) || (defined(HAVE_DECL_VIDIOC_S_CROP) && HAVE_DECL_VIDIOC_S_CROP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((VIDIOC_S_CROP) == (_IOW ('V',  60, struct v4l2_crop)), "VIDIOC_S_CROP != _IOW ('V',  60, struct v4l2_crop)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define VIDIOC_S_CROP _IOW ('V',  60, struct v4l2_crop)
+#endif
+#if defined(VIDIOC_TRY_FMT) || (defined(HAVE_DECL_VIDIOC_TRY_FMT) && HAVE_DECL_VIDIOC_TRY_FMT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((VIDIOC_TRY_FMT) == (_IOWR('V',  64, struct_v4l2_format)), "VIDIOC_TRY_FMT != _IOWR('V',  64, struct_v4l2_format)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define VIDIOC_TRY_FMT _IOWR('V',  64, struct_v4l2_format)
+#endif
+#if defined(VIDIOC_G_EXT_CTRLS) || (defined(HAVE_DECL_VIDIOC_G_EXT_CTRLS) && HAVE_DECL_VIDIOC_G_EXT_CTRLS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((VIDIOC_G_EXT_CTRLS) == (_IOWR('V',  71, struct_v4l2_ext_controls)), "VIDIOC_G_EXT_CTRLS != _IOWR('V',  71, struct_v4l2_ext_controls)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define VIDIOC_G_EXT_CTRLS _IOWR('V',  71, struct_v4l2_ext_controls)
+#endif
+#if defined(VIDIOC_S_EXT_CTRLS) || (defined(HAVE_DECL_VIDIOC_S_EXT_CTRLS) && HAVE_DECL_VIDIOC_S_EXT_CTRLS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((VIDIOC_S_EXT_CTRLS) == (_IOWR('V',  72, struct_v4l2_ext_controls)), "VIDIOC_S_EXT_CTRLS != _IOWR('V',  72, struct_v4l2_ext_controls)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define VIDIOC_S_EXT_CTRLS _IOWR('V',  72, struct_v4l2_ext_controls)
+#endif
+#if defined(VIDIOC_TRY_EXT_CTRLS) || (defined(HAVE_DECL_VIDIOC_TRY_EXT_CTRLS) && HAVE_DECL_VIDIOC_TRY_EXT_CTRLS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((VIDIOC_TRY_EXT_CTRLS) == (_IOWR('V',  73, struct_v4l2_ext_controls)), "VIDIOC_TRY_EXT_CTRLS != _IOWR('V',  73, struct_v4l2_ext_controls)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define VIDIOC_TRY_EXT_CTRLS _IOWR('V',  73, struct_v4l2_ext_controls)
+#endif
+#if defined(VIDIOC_ENUM_FRAMESIZES) || (defined(HAVE_DECL_VIDIOC_ENUM_FRAMESIZES) && HAVE_DECL_VIDIOC_ENUM_FRAMESIZES)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((VIDIOC_ENUM_FRAMESIZES) == (_IOWR('V',  74, struct_v4l2_frmsizeenum)), "VIDIOC_ENUM_FRAMESIZES != _IOWR('V',  74, struct_v4l2_frmsizeenum)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define VIDIOC_ENUM_FRAMESIZES _IOWR('V',  74, struct_v4l2_frmsizeenum)
+#endif
+#if defined(VIDIOC_ENUM_FRAMEINTERVALS) || (defined(HAVE_DECL_VIDIOC_ENUM_FRAMEINTERVALS) && HAVE_DECL_VIDIOC_ENUM_FRAMEINTERVALS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((VIDIOC_ENUM_FRAMEINTERVALS) == (_IOWR('V',  75, struct_v4l2_frmivalenum)), "VIDIOC_ENUM_FRAMEINTERVALS != _IOWR('V',  75, struct_v4l2_frmivalenum)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define VIDIOC_ENUM_FRAMEINTERVALS _IOWR('V',  75, struct_v4l2_frmivalenum)
+#endif
+#if defined(VIDIOC_DQEVENT) || (defined(HAVE_DECL_VIDIOC_DQEVENT) && HAVE_DECL_VIDIOC_DQEVENT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((VIDIOC_DQEVENT) == (_IOR ('V',  89, kernel_v4l2_event_t)), "VIDIOC_DQEVENT != _IOR ('V',  89, kernel_v4l2_event_t)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define VIDIOC_DQEVENT _IOR ('V',  89, kernel_v4l2_event_t)
+#endif
+#if defined(VIDIOC_CREATE_BUFS) || (defined(HAVE_DECL_VIDIOC_CREATE_BUFS) && HAVE_DECL_VIDIOC_CREATE_BUFS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((VIDIOC_CREATE_BUFS) == (_IOWR('V',  92, struct_v4l2_create_buffers)), "VIDIOC_CREATE_BUFS != _IOWR('V',  92, struct_v4l2_create_buffers)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define VIDIOC_CREATE_BUFS _IOWR('V',  92, struct_v4l2_create_buffers)
+#endif
+#if defined(VIDIOC_PREPARE_BUF) || (defined(HAVE_DECL_VIDIOC_PREPARE_BUF) && HAVE_DECL_VIDIOC_PREPARE_BUF)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((VIDIOC_PREPARE_BUF) == (_IOWR('V',  93, kernel_v4l2_buffer_t)), "VIDIOC_PREPARE_BUF != _IOWR('V',  93, kernel_v4l2_buffer_t)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define VIDIOC_PREPARE_BUF _IOWR('V',  93, kernel_v4l2_buffer_t)
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+extern const struct xlat v4l2_ioctl_cmds[];
+
+# else
+
+static const struct xlat_data v4l2_ioctl_cmds_xdata[] = {
+#ifndef STRACE_WORKAROUND_V4L2_TIME64
+# define STRACE_WORKAROUND_V4L2_TIME64
+
+# undef VIDIOC_QUERYBUF
+# undef VIDIOC_QBUF
+# undef VIDIOC_DQBUF
+# undef VIDIOC_PREPARE_BUF
+
+# undef VIDIOC_DQEVENT
+#endif
+
+ XLAT(VIDIOC_QUERYCAP),
+ #define XLAT_VAL_0 ((unsigned) (VIDIOC_QUERYCAP))
+ #define XLAT_STR_0 STRINGIFY(VIDIOC_QUERYCAP)
+ XLAT(VIDIOC_ENUM_FMT),
+ #define XLAT_VAL_1 ((unsigned) (VIDIOC_ENUM_FMT))
+ #define XLAT_STR_1 STRINGIFY(VIDIOC_ENUM_FMT)
+ XLAT(VIDIOC_G_FMT),
+ #define XLAT_VAL_2 ((unsigned) (VIDIOC_G_FMT))
+ #define XLAT_STR_2 STRINGIFY(VIDIOC_G_FMT)
+ XLAT(VIDIOC_S_FMT),
+ #define XLAT_VAL_3 ((unsigned) (VIDIOC_S_FMT))
+ #define XLAT_STR_3 STRINGIFY(VIDIOC_S_FMT)
+
+
+ XLAT(VIDIOC_REQBUFS),
+ #define XLAT_VAL_4 ((unsigned) (VIDIOC_REQBUFS))
+ #define XLAT_STR_4 STRINGIFY(VIDIOC_REQBUFS)
+ XLAT(VIDIOC_QUERYBUF),
+ #define XLAT_VAL_5 ((unsigned) (VIDIOC_QUERYBUF))
+ #define XLAT_STR_5 STRINGIFY(VIDIOC_QUERYBUF)
+ XLAT(VIDIOC_G_FBUF),
+ #define XLAT_VAL_6 ((unsigned) (VIDIOC_G_FBUF))
+ #define XLAT_STR_6 STRINGIFY(VIDIOC_G_FBUF)
+ XLAT(VIDIOC_S_FBUF),
+ #define XLAT_VAL_7 ((unsigned) (VIDIOC_S_FBUF))
+ #define XLAT_STR_7 STRINGIFY(VIDIOC_S_FBUF)
+
+ XLAT(VIDIOC_QBUF),
+ #define XLAT_VAL_8 ((unsigned) (VIDIOC_QBUF))
+ #define XLAT_STR_8 STRINGIFY(VIDIOC_QBUF)
+
+ XLAT(VIDIOC_DQBUF),
+ #define XLAT_VAL_9 ((unsigned) (VIDIOC_DQBUF))
+ #define XLAT_STR_9 STRINGIFY(VIDIOC_DQBUF)
+ XLAT(VIDIOC_STREAMON),
+ #define XLAT_VAL_10 ((unsigned) (VIDIOC_STREAMON))
+ #define XLAT_STR_10 STRINGIFY(VIDIOC_STREAMON)
+ XLAT(VIDIOC_STREAMOFF),
+ #define XLAT_VAL_11 ((unsigned) (VIDIOC_STREAMOFF))
+ #define XLAT_STR_11 STRINGIFY(VIDIOC_STREAMOFF)
+ XLAT(VIDIOC_G_PARM),
+ #define XLAT_VAL_12 ((unsigned) (VIDIOC_G_PARM))
+ #define XLAT_STR_12 STRINGIFY(VIDIOC_G_PARM)
+ XLAT(VIDIOC_S_PARM),
+ #define XLAT_VAL_13 ((unsigned) (VIDIOC_S_PARM))
+ #define XLAT_STR_13 STRINGIFY(VIDIOC_S_PARM)
+ XLAT(VIDIOC_G_STD),
+ #define XLAT_VAL_14 ((unsigned) (VIDIOC_G_STD))
+ #define XLAT_STR_14 STRINGIFY(VIDIOC_G_STD)
+ XLAT(VIDIOC_S_STD),
+ #define XLAT_VAL_15 ((unsigned) (VIDIOC_S_STD))
+ #define XLAT_STR_15 STRINGIFY(VIDIOC_S_STD)
+ XLAT(VIDIOC_ENUMSTD),
+ #define XLAT_VAL_16 ((unsigned) (VIDIOC_ENUMSTD))
+ #define XLAT_STR_16 STRINGIFY(VIDIOC_ENUMSTD)
+ XLAT(VIDIOC_ENUMINPUT),
+ #define XLAT_VAL_17 ((unsigned) (VIDIOC_ENUMINPUT))
+ #define XLAT_STR_17 STRINGIFY(VIDIOC_ENUMINPUT)
+ XLAT(VIDIOC_G_CTRL),
+ #define XLAT_VAL_18 ((unsigned) (VIDIOC_G_CTRL))
+ #define XLAT_STR_18 STRINGIFY(VIDIOC_G_CTRL)
+ XLAT(VIDIOC_S_CTRL),
+ #define XLAT_VAL_19 ((unsigned) (VIDIOC_S_CTRL))
+ #define XLAT_STR_19 STRINGIFY(VIDIOC_S_CTRL)
+ XLAT(VIDIOC_G_TUNER),
+ #define XLAT_VAL_20 ((unsigned) (VIDIOC_G_TUNER))
+ #define XLAT_STR_20 STRINGIFY(VIDIOC_G_TUNER)
+ XLAT(VIDIOC_S_TUNER),
+ #define XLAT_VAL_21 ((unsigned) (VIDIOC_S_TUNER))
+ #define XLAT_STR_21 STRINGIFY(VIDIOC_S_TUNER)
+
+
+ XLAT(VIDIOC_QUERYCTRL),
+ #define XLAT_VAL_22 ((unsigned) (VIDIOC_QUERYCTRL))
+ #define XLAT_STR_22 STRINGIFY(VIDIOC_QUERYCTRL)
+
+ XLAT(VIDIOC_G_INPUT),
+ #define XLAT_VAL_23 ((unsigned) (VIDIOC_G_INPUT))
+ #define XLAT_STR_23 STRINGIFY(VIDIOC_G_INPUT)
+ XLAT(VIDIOC_S_INPUT),
+ #define XLAT_VAL_24 ((unsigned) (VIDIOC_S_INPUT))
+ #define XLAT_STR_24 STRINGIFY(VIDIOC_S_INPUT)
+
+
+
+
+
+
+
+
+
+
+
+ XLAT(VIDIOC_CROPCAP),
+ #define XLAT_VAL_25 ((unsigned) (VIDIOC_CROPCAP))
+ #define XLAT_STR_25 STRINGIFY(VIDIOC_CROPCAP)
+ XLAT(VIDIOC_G_CROP),
+ #define XLAT_VAL_26 ((unsigned) (VIDIOC_G_CROP))
+ #define XLAT_STR_26 STRINGIFY(VIDIOC_G_CROP)
+ XLAT(VIDIOC_S_CROP),
+ #define XLAT_VAL_27 ((unsigned) (VIDIOC_S_CROP))
+ #define XLAT_STR_27 STRINGIFY(VIDIOC_S_CROP)
+
+
+
+ XLAT(VIDIOC_TRY_FMT),
+ #define XLAT_VAL_28 ((unsigned) (VIDIOC_TRY_FMT))
+ #define XLAT_STR_28 STRINGIFY(VIDIOC_TRY_FMT)
+
+
+
+
+
+
+ XLAT(VIDIOC_G_EXT_CTRLS),
+ #define XLAT_VAL_29 ((unsigned) (VIDIOC_G_EXT_CTRLS))
+ #define XLAT_STR_29 STRINGIFY(VIDIOC_G_EXT_CTRLS)
+ XLAT(VIDIOC_S_EXT_CTRLS),
+ #define XLAT_VAL_30 ((unsigned) (VIDIOC_S_EXT_CTRLS))
+ #define XLAT_STR_30 STRINGIFY(VIDIOC_S_EXT_CTRLS)
+ XLAT(VIDIOC_TRY_EXT_CTRLS),
+ #define XLAT_VAL_31 ((unsigned) (VIDIOC_TRY_EXT_CTRLS))
+ #define XLAT_STR_31 STRINGIFY(VIDIOC_TRY_EXT_CTRLS)
+ XLAT(VIDIOC_ENUM_FRAMESIZES),
+ #define XLAT_VAL_32 ((unsigned) (VIDIOC_ENUM_FRAMESIZES))
+ #define XLAT_STR_32 STRINGIFY(VIDIOC_ENUM_FRAMESIZES)
+ XLAT(VIDIOC_ENUM_FRAMEINTERVALS),
+ #define XLAT_VAL_33 ((unsigned) (VIDIOC_ENUM_FRAMEINTERVALS))
+ #define XLAT_STR_33 STRINGIFY(VIDIOC_ENUM_FRAMEINTERVALS)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XLAT(VIDIOC_DQEVENT),
+ #define XLAT_VAL_34 ((unsigned) (VIDIOC_DQEVENT))
+ #define XLAT_STR_34 STRINGIFY(VIDIOC_DQEVENT)
+
+
+ XLAT(VIDIOC_CREATE_BUFS),
+ #define XLAT_VAL_35 ((unsigned) (VIDIOC_CREATE_BUFS))
+ #define XLAT_STR_35 STRINGIFY(VIDIOC_CREATE_BUFS)
+ XLAT(VIDIOC_PREPARE_BUF),
+ #define XLAT_VAL_36 ((unsigned) (VIDIOC_PREPARE_BUF))
+ #define XLAT_STR_36 STRINGIFY(VIDIOC_PREPARE_BUF)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+};
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat v4l2_ioctl_cmds[1] = { {
+ .data = v4l2_ioctl_cmds_xdata,
+ .size = ARRAY_SIZE(v4l2_ioctl_cmds_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+#  ifdef XLAT_VAL_30
+  | XLAT_VAL_30
+#  endif
+#  ifdef XLAT_VAL_31
+  | XLAT_VAL_31
+#  endif
+#  ifdef XLAT_VAL_32
+  | XLAT_VAL_32
+#  endif
+#  ifdef XLAT_VAL_33
+  | XLAT_VAL_33
+#  endif
+#  ifdef XLAT_VAL_34
+  | XLAT_VAL_34
+#  endif
+#  ifdef XLAT_VAL_35
+  | XLAT_VAL_35
+#  endif
+#  ifdef XLAT_VAL_36
+  | XLAT_VAL_36
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+#  ifdef XLAT_STR_30
+  + sizeof(XLAT_STR_30)
+#  endif
+#  ifdef XLAT_STR_31
+  + sizeof(XLAT_STR_31)
+#  endif
+#  ifdef XLAT_STR_32
+  + sizeof(XLAT_STR_32)
+#  endif
+#  ifdef XLAT_STR_33
+  + sizeof(XLAT_STR_33)
+#  endif
+#  ifdef XLAT_STR_34
+  + sizeof(XLAT_STR_34)
+#  endif
+#  ifdef XLAT_STR_35
+  + sizeof(XLAT_STR_35)
+#  endif
+#  ifdef XLAT_STR_36
+  + sizeof(XLAT_STR_36)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
+#  undef XLAT_STR_30
+#  undef XLAT_VAL_30
+#  undef XLAT_STR_31
+#  undef XLAT_VAL_31
+#  undef XLAT_STR_32
+#  undef XLAT_VAL_32
+#  undef XLAT_STR_33
+#  undef XLAT_VAL_33
+#  undef XLAT_STR_34
+#  undef XLAT_VAL_34
+#  undef XLAT_STR_35
+#  undef XLAT_VAL_35
+#  undef XLAT_STR_36
+#  undef XLAT_VAL_36
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/v4l2_ioctl_cmds.in b/xlat/v4l2_ioctl_cmds.in
new file mode 100644 (file)
index 0000000..4e234ed
--- /dev/null
@@ -0,0 +1,114 @@
+#ifndef STRACE_WORKAROUND_V4L2_TIME64
+# define STRACE_WORKAROUND_V4L2_TIME64
+/* Constants based on struct v4l2_buffer are unreliable as the latter uses struct timeval. */
+# undef VIDIOC_QUERYBUF
+# undef VIDIOC_QBUF
+# undef VIDIOC_DQBUF
+# undef VIDIOC_PREPARE_BUF
+/* Constants based on struct v4l2_event are unreliable as the latter uses struct timespec. */
+# undef VIDIOC_DQEVENT
+#endif
+
+VIDIOC_QUERYCAP                        _IOR ('V',   0, struct_v4l2_capability)
+VIDIOC_ENUM_FMT                        _IOWR('V',   2, struct v4l2_fmtdesc)
+VIDIOC_G_FMT                   _IOWR('V',   4, struct_v4l2_format)
+VIDIOC_S_FMT                   _IOWR('V',   5, struct_v4l2_format)
+/* VIDIOC_G_MPEGCOMP           _IOR  ('V',  6, struct v4l2_mpeg_compression) - removed in v2.6.24-rc1~66^2~32 */
+/* VIDIOC_S_MPEGCOMP           _IOW  ('V',  7, struct v4l2_mpeg_compression) - removed in v2.6.24-rc1~66^2~32 */
+VIDIOC_REQBUFS                 _IOWR('V',   8, struct v4l2_requestbuffers)
+VIDIOC_QUERYBUF                        _IOWR('V',   9, kernel_v4l2_buffer_t)
+VIDIOC_G_FBUF                  _IOR ('V',  10, struct_v4l2_framebuffer)
+VIDIOC_S_FBUF                  _IOW ('V',  11, struct_v4l2_framebuffer)
+/* VIDIOC_OVERLAY                      _IOW ('V',  14, int) */
+VIDIOC_QBUF                    _IOWR('V',  15, kernel_v4l2_buffer_t)
+/* VIDIOC_EXPBUF                       _IOWR('V',  16, struct v4l2_exportbuffer) - added in v3.8-rc1~115^2^2~34 */
+VIDIOC_DQBUF                   _IOWR('V',  17, kernel_v4l2_buffer_t)
+VIDIOC_STREAMON                        _IOW ('V',  18, int)
+VIDIOC_STREAMOFF               _IOW ('V',  19, int)
+VIDIOC_G_PARM                  _IOWR('V',  21, struct v4l2_streamparm)
+VIDIOC_S_PARM                  _IOWR('V',  22, struct v4l2_streamparm)
+VIDIOC_G_STD                   _IOR ('V',  23, uint64_t) /* v4l2_std_id */
+VIDIOC_S_STD                   _IOW ('V',  24, uint64_t) /* v4l2_std_id */
+VIDIOC_ENUMSTD                 _IOWR('V',  25, struct_v4l2_standard)
+VIDIOC_ENUMINPUT               _IOWR('V',  26, struct_v4l2_input)
+VIDIOC_G_CTRL                  _IOWR('V',  27, struct v4l2_control)
+VIDIOC_S_CTRL                  _IOWR('V',  28, struct v4l2_control)
+VIDIOC_G_TUNER                 _IOWR('V',  29, struct v4l2_tuner)
+VIDIOC_S_TUNER                 _IOW ('V',  30, struct v4l2_tuner)
+/* VIDIOC_G_AUDIO                      _IOR ('V',  33, struct v4l2_audio) */
+/* VIDIOC_S_AUDIO                      _IOW ('V',  34, struct v4l2_audio) */
+VIDIOC_QUERYCTRL               _IOWR('V',  36, struct v4l2_queryctrl)
+/* VIDIOC_QUERYMENU            _IOWR('V',  37, struct_v4l2_querymenu) */
+VIDIOC_G_INPUT                 _IOR ('V',  38, int)
+VIDIOC_S_INPUT                 _IOWR('V',  39, int)
+/* VIDIOC_G_EDID                       _IOWR('V',  40, struct v4l2_edid) - renamed from VIDIOC_SUBDEV_G_EDID in v3.15-rc1~85^2~113 */
+/* VIDIOC_S_EDID                       _IOWR('V',  41, struct v4l2_edid) - renamed from VIDIOC_SUBDEV_G_EDID in v3.15-rc1~85^2~113 */
+/* VIDIOC_G_OUTPUT                     _IOR ('V',  46, int) */
+/* VIDIOC_S_OUTPUT                     _IOWR('V',  47, int) */
+/* VIDIOC_ENUMOUTPUT           _IOWR('V',  48, struct_v4l2_output) */
+/* VIDIOC_G_AUDOUT                     _IOR ('V',  49, struct v4l2_audioout) */
+/* VIDIOC_S_AUDOUT                     _IOW ('V',  50, struct v4l2_audioout) */
+/* VIDIOC_G_MODULATOR          _IOWR('V',  54, struct_v4l2_modulator) */
+/* VIDIOC_S_MODULATOR          _IOW ('V',  55, struct_v4l2_modulator) */
+/* VIDIOC_G_FREQUENCY          _IOWR('V',  56, struct v4l2_frequency) */
+/* VIDIOC_S_FREQUENCY          _IOW ('V',  57, struct v4l2_frequency) */
+VIDIOC_CROPCAP                 _IOWR('V',  58, struct v4l2_cropcap)
+VIDIOC_G_CROP                  _IOWR('V',  59, struct v4l2_crop)
+VIDIOC_S_CROP                  _IOW ('V',  60, struct v4l2_crop)
+/* VIDIOC_G_JPEGCOMP           _IOR ('V',  61, struct v4l2_jpegcompression) */
+/* VIDIOC_S_JPEGCOMP           _IOW ('V',  62, struct v4l2_jpegcompression) */
+/* VIDIOC_QUERYSTD                     _IOR ('V',  63, uint64_t) */ /* v4l2_std_id */
+VIDIOC_TRY_FMT                 _IOWR('V',  64, struct_v4l2_format)
+/* VIDIOC_ENUMAUDIO            _IOWR('V',  65, struct v4l2_audio) */
+/* VIDIOC_ENUMAUDOUT           _IOWR('V',  66, struct v4l2_audioout) */
+/* VIDIOC_G_PRIORITY           _IOR ('V',  67, uint32_t) */ /* enum v4l2_priority */
+/* VIDIOC_S_PRIORITY           _IOW ('V',  68, uint32_t) */ /* enum v4l2_priority */
+/* VIDIOC_G_SLICED_VBI_CAP             _IOWR('V',  69, struct_v4l2_sliced_vbi_cap) - added in v2.6.16.28-rc1~3732 */
+/* VIDIOC_LOG_STATUS           _IO  ('V',  70) - added in v2.6.16.28-rc1~2961 */
+VIDIOC_G_EXT_CTRLS             _IOWR('V',  71, struct_v4l2_ext_controls) /* added in v2.6.18-rc1~862^2~18 */
+VIDIOC_S_EXT_CTRLS             _IOWR('V',  72, struct_v4l2_ext_controls) /* added in v2.6.18-rc1~862^2~18 */
+VIDIOC_TRY_EXT_CTRLS           _IOWR('V',  73, struct_v4l2_ext_controls) /* added in v2.6.18-rc1~862^2~18 */
+VIDIOC_ENUM_FRAMESIZES         _IOWR('V',  74, struct_v4l2_frmsizeenum) /* added in v2.6.19-rc1~183 */
+VIDIOC_ENUM_FRAMEINTERVALS     _IOWR('V',  75, struct_v4l2_frmivalenum) /* added in v2.6.19-rc1~183 */
+/* VIDIOC_G_ENC_INDEX          _IOR ('V',  76, struct v4l2_enc_idx) - added in v2.6.21-rc3~150^2~2*/
+/* VIDIOC_ENCODER_CMD          _IOWR('V',  77, struct v4l2_encoder_cmd) - added in v2.6.21-rc3~150^2~1 */
+/* VIDIOC_TRY_ENCODER_CMD              _IOWR('V',  78, struct v4l2_encoder_cmd) - added in v2.6.21-rc3~150^2~1 */
+/* VIDIOC_DBG_S_REGISTER               _IOW ('V',  79, struct v4l2_dbg_register) - added in v2.6.29-rc1~523^2~24 */
+/* VIDIOC_DBG_G_REGISTER               _IOWR('V',  80, struct v4l2_dbg_register) - added in v2.6.29-rc1~523^2~24 */
+/* VIDIOC_G_CHIP_IDENT_OLD     _IOWR('V', 81, struct v4l2_chip_ident_old) - added in v2.6.22-rc1~1118^2~172, renamed in v2.6.29-rc1~523^2~24, removed in v2.6.30-rc1~621^2~278 */
+/* VIDIOC_DBG_G_CHIP_IDENT     _IOWR('V', 81, struct v4l2_dbg_chip_ident) - added in v2.6.29-rc1~523^2~24, removed in v3.11-rc1~17^2~99 */
+/* VIDIOC_S_HW_FREQ_SEEK               _IOW ('V',  82, struct v4l2_hw_freq_seek) - added in v2.6.27-rc1~966^2~258 */
+/* VIDIOC_ENUM_DV_PRESETS      _IOWR('V', 83, struct v4l2_dv_enum_preset) - added in v2.6.33-rc1~70^2~91, removed in v3.10-rc1~136^2~239 */
+/* VIDIOC_S_DV_PRESET          _IOWR('V', 84, struct v4l2_dv_preset) - added in v2.6.33-rc1~70^2~91, removed in v3.10-rc1~136^2~239 */
+/* VIDIOC_G_DV_PRESET          _IOWR('V', 85, struct v4l2_dv_preset) - added in v2.6.33-rc1~70^2~91, removed in v3.10-rc1~136^2~239 */
+/* VIDIOC_QUERY_DV_PRESET      _IOR('V',  86, struct v4l2_dv_preset) - added in v2.6.33-rc1~70^2~91, removed in v3.10-rc1~136^2~239 */
+/* VIDIOC_S_DV_TIMINGS         _IOWR('V',  87, struct v4l2_dv_timings) - added in v2.6.33-rc1~70^2~91 */
+/* VIDIOC_G_DV_TIMINGS         _IOWR('V',  88, struct v4l2_dv_timings) - added in v2.6.33-rc1~70^2~91 */
+VIDIOC_DQEVENT                 _IOR ('V',  89, kernel_v4l2_event_t) /* added in v2.6.35-rc1~480^2~121 */
+/* VIDIOC_SUBSCRIBE_EVENT              _IOW ('V',  90, struct v4l2_event_subscription) - added in v2.6.35-rc1~480^2~121 */
+/* VIDIOC_UNSUBSCRIBE_EVENT    _IOW ('V',  91, struct v4l2_event_subscription) - added in v2.6.35-rc1~480^2~121 */
+VIDIOC_CREATE_BUFS             _IOWR('V',  92, struct_v4l2_create_buffers) /* added in v3.2-rc1~63^2~55 */
+VIDIOC_PREPARE_BUF             _IOWR('V',  93, kernel_v4l2_buffer_t) /* added in v3.2-rc1~63^2~55 */
+/* VIDIOC_G_SELECTION          _IOWR('V',  94, struct v4l2_selection) - added in v3.3-rc1~48^2~18 */
+/* VIDIOC_S_SELECTION          _IOWR('V',  95, struct v4l2_selection) - added in v3.3-rc1~48^2~18 */
+/* VIDIOC_DECODER_CMD          _IOWR('V',  96, struct v4l2_decoder_cmd) - added in v3.4-rc1~110^2^2~239 */
+/* VIDIOC_TRY_DECODER_CMD              _IOWR('V',  97, struct v4l2_decoder_cmd) - added in v3.4-rc1~110^2^2~239 */
+/* VIDIOC_ENUM_DV_TIMINGS              _IOWR('V',  98, struct v4l2_enum_dv_timings) - added in v3.5-rc1~104^2~100, changed in v3.5-rc5~26^2~41 */
+/* VIDIOC_QUERY_DV_TIMINGS             _IOR ('V',  99, struct v4l2_dv_timings) - added in v3.5-rc1~104^2~100, changed in v3.5-rc5~26^2~41 */
+/* VIDIOC_DV_TIMINGS_CAP               _IOWR('V', 100, struct v4l2_dv_timings_cap) - added in v3.5-rc1~104^2~100, changed in v3.5-rc5~26^2~41 */
+/* VIDIOC_ENUM_FREQ_BANDS              _IOWR('V', 101, struct v4l2_frequency_band) - added in v3.6-rc1~28^2~46 */
+/* VIDIOC_DBG_G_CHIP_INFO              _IOWR('V', 102, struct v4l2_dbg_chip_info) - added in v3.10-rc1~136^2~200 as VIDIOC_DBG_G_CHIP_NAME, renamed in v3.10-rc1~136^2~42 */
+/* VIDIOC_QUERY_EXT_CTRL               _IOWR('V', 103, struct v4l2_query_ext_ctrl) - added in v3.17-rc1~112^2~362 */
+
+/* subdev ioctls */
+/* VIDIOC_SUBDEV_ENUM_MBUS_CODE        _IOWR('V',  2, struct v4l2_subdev_mbus_code_enum) */
+/* VIDIOC_SUBDEV_G_FMT         _IOWR('V',  4, struct v4l2_subdev_format) */
+/* VIDIOC_SUBDEV_S_FMT         _IOWR('V',  5, struct v4l2_subdev_format) */
+/* VIDIOC_SUBDEV_G_FRAME_INTERVAL      _IOWR('V', 21, struct v4l2_subdev_frame_interval) - added in v2.6.39-rc1~86^2~163 */
+/* VIDIOC_SUBDEV_S_FRAME_INTERVAL      _IOWR('V', 22, struct v4l2_subdev_frame_interval) - added in v2.6.39-rc1~86^2~163 */
+/* VIDIOC_SUBDEV_G_CROP                _IOWR('V', 59, struct v4l2_subdev_crop) - added in v2.6.39-rc1~86^2~162 */
+/* VIDIOC_SUBDEV_S_CROP                _IOWR('V', 60, struct v4l2_subdev_crop) - added in v2.6.39-rc1~86^2~162 */
+/* VIDIOC_SUBDEV_G_SELECTION   _IOWR('V', 61, struct v4l2_subdev_selection) - added in v3.5-rc1~104^2~443  */
+/* VIDIOC_SUBDEV_S_SELECTION   _IOWR('V', 62, struct v4l2_subdev_selection) - added in v3.5-rc1~104^2~443 */
+/* VIDIOC_SUBDEV_ENUM_FRAME_SIZE       _IOWR('V', 74, struct v4l2_subdev_frame_size_enum) */
+/* VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL   _IOWR('V', 75, struct v4l2_subdev_frame_interval_enum) - added in v2.6.39-rc1~86^2~163 */
index e13190d9a7c164e257ec28c55871bfda8a2e821d..62357ba25e2af8c2570017946ed188290fced4de 100644 (file)
@@ -3,6 +3,34 @@
 #include "gcc_compat.h"
 #include "static_assert.h"
 
+#if defined(V4L2_MEMORY_MMAP) || (defined(HAVE_DECL_V4L2_MEMORY_MMAP) && HAVE_DECL_V4L2_MEMORY_MMAP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_MEMORY_MMAP) == (1), "V4L2_MEMORY_MMAP != 1");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_MEMORY_MMAP 1
+#endif
+#if defined(V4L2_MEMORY_USERPTR) || (defined(HAVE_DECL_V4L2_MEMORY_USERPTR) && HAVE_DECL_V4L2_MEMORY_USERPTR)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_MEMORY_USERPTR) == (2), "V4L2_MEMORY_USERPTR != 2");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_MEMORY_USERPTR 2
+#endif
+#if defined(V4L2_MEMORY_OVERLAY) || (defined(HAVE_DECL_V4L2_MEMORY_OVERLAY) && HAVE_DECL_V4L2_MEMORY_OVERLAY)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_MEMORY_OVERLAY) == (3), "V4L2_MEMORY_OVERLAY != 3");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_MEMORY_OVERLAY 3
+#endif
+#if defined(V4L2_MEMORY_DMABUF) || (defined(HAVE_DECL_V4L2_MEMORY_DMABUF) && HAVE_DECL_V4L2_MEMORY_DMABUF)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_MEMORY_DMABUF) == (4), "V4L2_MEMORY_DMABUF != 4");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_MEMORY_DMABUF 4
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
@@ -12,25 +40,65 @@ extern const struct xlat v4l2_memories[];
 
 # else
 
+static const struct xlat_data v4l2_memories_xdata[] = {
+ [V4L2_MEMORY_MMAP] = XLAT(V4L2_MEMORY_MMAP),
+ #define XLAT_VAL_0 ((unsigned) (V4L2_MEMORY_MMAP))
+ #define XLAT_STR_0 STRINGIFY(V4L2_MEMORY_MMAP)
+ [V4L2_MEMORY_USERPTR] = XLAT(V4L2_MEMORY_USERPTR),
+ #define XLAT_VAL_1 ((unsigned) (V4L2_MEMORY_USERPTR))
+ #define XLAT_STR_1 STRINGIFY(V4L2_MEMORY_USERPTR)
+ [V4L2_MEMORY_OVERLAY] = XLAT(V4L2_MEMORY_OVERLAY),
+ #define XLAT_VAL_2 ((unsigned) (V4L2_MEMORY_OVERLAY))
+ #define XLAT_STR_2 STRINGIFY(V4L2_MEMORY_OVERLAY)
+ [V4L2_MEMORY_DMABUF] = XLAT(V4L2_MEMORY_DMABUF),
+ #define XLAT_VAL_3 ((unsigned) (V4L2_MEMORY_DMABUF))
+ #define XLAT_STR_3 STRINGIFY(V4L2_MEMORY_DMABUF)
+};
 #  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
 static
 #  endif
-const struct xlat v4l2_memories[] = {
-#if defined(V4L2_MEMORY_MMAP) || (defined(HAVE_DECL_V4L2_MEMORY_MMAP) && HAVE_DECL_V4L2_MEMORY_MMAP)
-  XLAT(V4L2_MEMORY_MMAP),
-#endif
-#if defined(V4L2_MEMORY_USERPTR) || (defined(HAVE_DECL_V4L2_MEMORY_USERPTR) && HAVE_DECL_V4L2_MEMORY_USERPTR)
-  XLAT(V4L2_MEMORY_USERPTR),
-#endif
-#if defined(V4L2_MEMORY_OVERLAY) || (defined(HAVE_DECL_V4L2_MEMORY_OVERLAY) && HAVE_DECL_V4L2_MEMORY_OVERLAY)
-  XLAT(V4L2_MEMORY_OVERLAY),
-#endif
-#if defined(V4L2_MEMORY_DMABUF) || (defined(HAVE_DECL_V4L2_MEMORY_DMABUF) && HAVE_DECL_V4L2_MEMORY_DMABUF)
-  XLAT(V4L2_MEMORY_DMABUF),
-#endif
- XLAT_END
-};
+const struct xlat v4l2_memories[1] = { {
+ .data = v4l2_memories_xdata,
+ .size = ARRAY_SIZE(v4l2_memories_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 2acd47b8cf122a72131aaf2e621cadaadd418ab8..6e9df19090873af63e19c6bd9ae846099bbc1c14 100644 (file)
@@ -1,4 +1,10 @@
-V4L2_MEMORY_MMAP
-V4L2_MEMORY_USERPTR
-V4L2_MEMORY_OVERLAY
-V4L2_MEMORY_DMABUF
+#value_indexed
+#enum
+#include <sys/time.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+V4L2_MEMORY_MMAP       1
+V4L2_MEMORY_USERPTR    2
+V4L2_MEMORY_OVERLAY    3
+V4L2_MEMORY_DMABUF     4
diff --git a/xlat/v4l2_memories.m4 b/xlat/v4l2_memories.m4
new file mode 100644 (file)
index 0000000..067a347
--- /dev/null
@@ -0,0 +1,13 @@
+dnl Generated by ./xlat/gen.sh from ./xlat/v4l2_memories.in; do not edit.
+AC_DEFUN([st_CHECK_ENUMS_v4l2_memories],[
+AC_CHECK_DECLS(m4_normalize([
+V4L2_MEMORY_MMAP,
+V4L2_MEMORY_USERPTR,
+V4L2_MEMORY_OVERLAY,
+V4L2_MEMORY_DMABUF
+]),,, [
+#include <sys/time.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+])])])
index 7d5a1876a316bbd6d1be1681c10649c20bd29906..f1dc9fe7c7fd2d9499a9a619573e8d8d807b333f 100644 (file)
@@ -24,6 +24,13 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define V4L2_PIX_FMT_Y4 v4l2_fourcc('Y', '0', '4', ' ')
 #endif
+#if defined(V4L2_PIX_FMT_Y14) || (defined(HAVE_DECL_V4L2_PIX_FMT_Y14) && HAVE_DECL_V4L2_PIX_FMT_Y14)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_PIX_FMT_Y14) == (v4l2_fourcc('Y', '1', '4', ' ')), "V4L2_PIX_FMT_Y14 != v4l2_fourcc('Y', '1', '4', ' ')");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_PIX_FMT_Y14 v4l2_fourcc('Y', '1', '4', ' ')
+#endif
 #if defined(V4L2_PIX_FMT_Y6) || (defined(HAVE_DECL_V4L2_PIX_FMT_Y6) && HAVE_DECL_V4L2_PIX_FMT_Y6)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
 static_assert((V4L2_PIX_FMT_Y6) == (v4l2_fourcc('Y', '0', '6', ' ')), "V4L2_PIX_FMT_Y6 != v4l2_fourcc('Y', '0', '6', ' ')");
@@ -276,6 +283,31 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define V4L2_PIX_FMT_SGRBG12 v4l2_fourcc('B', 'A', '1', '2')
 #endif
+#ifndef STRACE_WORKAROUND_FOR_V4L2_PIX_FMT_BGRA444
+# define STRACE_WORKAROUND_FOR_V4L2_PIX_FMT_BGRA444
+# undef V4L2_PIX_FMT_BGRA444
+#endif
+#if defined(V4L2_PIX_FMT_BGRA444) || (defined(HAVE_DECL_V4L2_PIX_FMT_BGRA444) && HAVE_DECL_V4L2_PIX_FMT_BGRA444)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_PIX_FMT_BGRA444) == (v4l2_fourcc('G', 'A', '1', '2')), "V4L2_PIX_FMT_BGRA444 != v4l2_fourcc('G', 'A', '1', '2')");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_PIX_FMT_BGRA444 v4l2_fourcc('G', 'A', '1', '2')
+#endif
+#if defined(V4L2_PIX_FMT_RGBA444) || (defined(HAVE_DECL_V4L2_PIX_FMT_RGBA444) && HAVE_DECL_V4L2_PIX_FMT_RGBA444)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_PIX_FMT_RGBA444) == (v4l2_fourcc('R', 'A', '1', '2')), "V4L2_PIX_FMT_RGBA444 != v4l2_fourcc('R', 'A', '1', '2')");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_PIX_FMT_RGBA444 v4l2_fourcc('R', 'A', '1', '2')
+#endif
+#if defined(V4L2_PIX_FMT_ABGR444) || (defined(HAVE_DECL_V4L2_PIX_FMT_ABGR444) && HAVE_DECL_V4L2_PIX_FMT_ABGR444)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_PIX_FMT_ABGR444) == (v4l2_fourcc('A', 'B', '1', '2')), "V4L2_PIX_FMT_ABGR444 != v4l2_fourcc('A', 'B', '1', '2')");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_PIX_FMT_ABGR444 v4l2_fourcc('A', 'B', '1', '2')
+#endif
 #if defined(V4L2_PIX_FMT_SGBRG12) || (defined(HAVE_DECL_V4L2_PIX_FMT_SGBRG12) && HAVE_DECL_V4L2_PIX_FMT_SGBRG12)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
 static_assert((V4L2_PIX_FMT_SGBRG12) == (v4l2_fourcc('G', 'B', '1', '2')), "V4L2_PIX_FMT_SGBRG12 != v4l2_fourcc('G', 'B', '1', '2')");
@@ -283,6 +315,13 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define V4L2_PIX_FMT_SGBRG12 v4l2_fourcc('G', 'B', '1', '2')
 #endif
+#if defined(V4L2_PIX_FMT_XBGR444) || (defined(HAVE_DECL_V4L2_PIX_FMT_XBGR444) && HAVE_DECL_V4L2_PIX_FMT_XBGR444)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_PIX_FMT_XBGR444) == (v4l2_fourcc('X', 'B', '1', '2')), "V4L2_PIX_FMT_XBGR444 != v4l2_fourcc('X', 'B', '1', '2')");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_PIX_FMT_XBGR444 v4l2_fourcc('X', 'B', '1', '2')
+#endif
 #if defined(V4L2_PIX_FMT_SBGGR12) || (defined(HAVE_DECL_V4L2_PIX_FMT_SBGGR12) && HAVE_DECL_V4L2_PIX_FMT_SBGGR12)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
 static_assert((V4L2_PIX_FMT_SBGGR12) == (v4l2_fourcc('B', 'G', '1', '2')), "V4L2_PIX_FMT_SBGGR12 != v4l2_fourcc('B', 'G', '1', '2')");
@@ -353,13 +392,6 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define V4L2_PIX_FMT_SUNXI_TILED_NV12 v4l2_fourcc('S', 'T', '1', '2')
 #endif
-#if defined(V4L2_PIX_FMT_CNF4) || (defined(HAVE_DECL_V4L2_PIX_FMT_CNF4) && HAVE_DECL_V4L2_PIX_FMT_CNF4)
-DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((V4L2_PIX_FMT_CNF4) == (v4l2_fourcc('C', 'N', 'F', '4')), "V4L2_PIX_FMT_CNF4 != v4l2_fourcc('C', 'N', 'F', '4')");
-DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
-#else
-# define V4L2_PIX_FMT_CNF4 v4l2_fourcc('C', 'N', 'F', '4')
-#endif
 #if defined(V4L2_PIX_FMT_YUV420) || (defined(HAVE_DECL_V4L2_PIX_FMT_YUV420) && HAVE_DECL_V4L2_PIX_FMT_YUV420)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
 static_assert((V4L2_PIX_FMT_YUV420) == (v4l2_fourcc('Y', 'U', '1', '2')), "V4L2_PIX_FMT_YUV420 != v4l2_fourcc('Y', 'U', '1', '2')");
@@ -381,6 +413,20 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define V4L2_PIX_FMT_YVU420 v4l2_fourcc('Y', 'V', '1', '2')
 #endif
+#if defined(V4L2_PIX_FMT_BGRX444) || (defined(HAVE_DECL_V4L2_PIX_FMT_BGRX444) && HAVE_DECL_V4L2_PIX_FMT_BGRX444)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_PIX_FMT_BGRX444) == (v4l2_fourcc('B', 'X', '1', '2')), "V4L2_PIX_FMT_BGRX444 != v4l2_fourcc('B', 'X', '1', '2')");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_PIX_FMT_BGRX444 v4l2_fourcc('B', 'X', '1', '2')
+#endif
+#if defined(V4L2_PIX_FMT_RGBX444) || (defined(HAVE_DECL_V4L2_PIX_FMT_RGBX444) && HAVE_DECL_V4L2_PIX_FMT_RGBX444)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_PIX_FMT_RGBX444) == (v4l2_fourcc('R', 'X', '1', '2')), "V4L2_PIX_FMT_RGBX444 != v4l2_fourcc('R', 'X', '1', '2')");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_PIX_FMT_RGBX444 v4l2_fourcc('R', 'X', '1', '2')
+#endif
 #if defined(V4L2_PIX_FMT_YVU444M) || (defined(HAVE_DECL_V4L2_PIX_FMT_YVU444M) && HAVE_DECL_V4L2_PIX_FMT_YVU444M)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
 static_assert((V4L2_PIX_FMT_YVU444M) == (v4l2_fourcc('Y', 'M', '4', '2')), "V4L2_PIX_FMT_YVU444M != v4l2_fourcc('Y', 'M', '4', '2')");
@@ -444,6 +490,34 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define V4L2_PIX_FMT_HSV24 v4l2_fourcc('H', 'S', 'V', '3')
 #endif
+#if defined(V4L2_PIX_FMT_SGBRG14) || (defined(HAVE_DECL_V4L2_PIX_FMT_SGBRG14) && HAVE_DECL_V4L2_PIX_FMT_SGBRG14)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_PIX_FMT_SGBRG14) == (v4l2_fourcc('G', 'B', '1', '4')), "V4L2_PIX_FMT_SGBRG14 != v4l2_fourcc('G', 'B', '1', '4')");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_PIX_FMT_SGBRG14 v4l2_fourcc('G', 'B', '1', '4')
+#endif
+#if defined(V4L2_PIX_FMT_SBGGR14) || (defined(HAVE_DECL_V4L2_PIX_FMT_SBGGR14) && HAVE_DECL_V4L2_PIX_FMT_SBGGR14)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_PIX_FMT_SBGGR14) == (v4l2_fourcc('B', 'G', '1', '4')), "V4L2_PIX_FMT_SBGGR14 != v4l2_fourcc('B', 'G', '1', '4')");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_PIX_FMT_SBGGR14 v4l2_fourcc('B', 'G', '1', '4')
+#endif
+#if defined(V4L2_PIX_FMT_SRGGB14) || (defined(HAVE_DECL_V4L2_PIX_FMT_SRGGB14) && HAVE_DECL_V4L2_PIX_FMT_SRGGB14)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_PIX_FMT_SRGGB14) == (v4l2_fourcc('R', 'G', '1', '4')), "V4L2_PIX_FMT_SRGGB14 != v4l2_fourcc('R', 'G', '1', '4')");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_PIX_FMT_SRGGB14 v4l2_fourcc('R', 'G', '1', '4')
+#endif
+#if defined(V4L2_PIX_FMT_SGRBG14) || (defined(HAVE_DECL_V4L2_PIX_FMT_SGRBG14) && HAVE_DECL_V4L2_PIX_FMT_SGRBG14)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_PIX_FMT_SGRBG14) == (v4l2_fourcc('G', 'R', '1', '4')), "V4L2_PIX_FMT_SGRBG14 != v4l2_fourcc('G', 'R', '1', '4')");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_PIX_FMT_SGRBG14 v4l2_fourcc('G', 'R', '1', '4')
+#endif
 #if defined(V4L2_PIX_FMT_ARGB32) || (defined(HAVE_DECL_V4L2_PIX_FMT_ARGB32) && HAVE_DECL_V4L2_PIX_FMT_ARGB32)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
 static_assert((V4L2_PIX_FMT_ARGB32) == (v4l2_fourcc('B', 'A', '2', '4')), "V4L2_PIX_FMT_ARGB32 != v4l2_fourcc('B', 'A', '2', '4')");
@@ -451,6 +525,27 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define V4L2_PIX_FMT_ARGB32 v4l2_fourcc('B', 'A', '2', '4')
 #endif
+#if defined(V4L2_PIX_FMT_BGRA32) || (defined(HAVE_DECL_V4L2_PIX_FMT_BGRA32) && HAVE_DECL_V4L2_PIX_FMT_BGRA32)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_PIX_FMT_BGRA32) == (v4l2_fourcc('R', 'A', '2', '4')), "V4L2_PIX_FMT_BGRA32 != v4l2_fourcc('R', 'A', '2', '4')");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_PIX_FMT_BGRA32 v4l2_fourcc('R', 'A', '2', '4')
+#endif
+#if defined(V4L2_PIX_FMT_RGBA32) || (defined(HAVE_DECL_V4L2_PIX_FMT_RGBA32) && HAVE_DECL_V4L2_PIX_FMT_RGBA32)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_PIX_FMT_RGBA32) == (v4l2_fourcc('A', 'B', '2', '4')), "V4L2_PIX_FMT_RGBA32 != v4l2_fourcc('A', 'B', '2', '4')");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_PIX_FMT_RGBA32 v4l2_fourcc('A', 'B', '2', '4')
+#endif
+#if defined(V4L2_PIX_FMT_RGBX32) || (defined(HAVE_DECL_V4L2_PIX_FMT_RGBX32) && HAVE_DECL_V4L2_PIX_FMT_RGBX32)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_PIX_FMT_RGBX32) == (v4l2_fourcc('X', 'B', '2', '4')), "V4L2_PIX_FMT_RGBX32 != v4l2_fourcc('X', 'B', '2', '4')");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_PIX_FMT_RGBX32 v4l2_fourcc('X', 'B', '2', '4')
+#endif
 #if defined(V4L2_PIX_FMT_HI240) || (defined(HAVE_DECL_V4L2_PIX_FMT_HI240) && HAVE_DECL_V4L2_PIX_FMT_HI240)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
 static_assert((V4L2_PIX_FMT_HI240) == (v4l2_fourcc('H', 'I', '2', '4')), "V4L2_PIX_FMT_HI240 != v4l2_fourcc('H', 'I', '2', '4')");
@@ -493,6 +588,13 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define V4L2_PIX_FMT_XRGB32 v4l2_fourcc('B', 'X', '2', '4')
 #endif
+#if defined(V4L2_PIX_FMT_BGRX32) || (defined(HAVE_DECL_V4L2_PIX_FMT_BGRX32) && HAVE_DECL_V4L2_PIX_FMT_BGRX32)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_PIX_FMT_BGRX32) == (v4l2_fourcc('R', 'X', '2', '4')), "V4L2_PIX_FMT_BGRX32 != v4l2_fourcc('R', 'X', '2', '4')");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_PIX_FMT_BGRX32 v4l2_fourcc('R', 'X', '2', '4')
+#endif
 #if defined(V4L2_PIX_FMT_RGB444) || (defined(HAVE_DECL_V4L2_PIX_FMT_RGB444) && HAVE_DECL_V4L2_PIX_FMT_RGB444)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
 static_assert((V4L2_PIX_FMT_RGB444) == (v4l2_fourcc('R', '4', '4', '4')), "V4L2_PIX_FMT_RGB444 != v4l2_fourcc('R', '4', '4', '4')");
@@ -528,6 +630,13 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define V4L2_PIX_FMT_RGB32 v4l2_fourcc('R', 'G', 'B', '4')
 #endif
+#if defined(V4L2_PIX_FMT_CNF4) || (defined(HAVE_DECL_V4L2_PIX_FMT_CNF4) && HAVE_DECL_V4L2_PIX_FMT_CNF4)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_PIX_FMT_CNF4) == (v4l2_fourcc('C', 'N', 'F', '4')), "V4L2_PIX_FMT_CNF4 != v4l2_fourcc('C', 'N', 'F', '4')");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_PIX_FMT_CNF4 v4l2_fourcc('C', 'N', 'F', '4')
+#endif
 #if defined(V4L2_PIX_FMT_MPEG4) || (defined(HAVE_DECL_V4L2_PIX_FMT_MPEG4) && HAVE_DECL_V4L2_PIX_FMT_MPEG4)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
 static_assert((V4L2_PIX_FMT_MPEG4) == (v4l2_fourcc('M', 'P', 'G', '4')), "V4L2_PIX_FMT_MPEG4 != v4l2_fourcc('M', 'P', 'G', '4')");
@@ -556,40 +665,40 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define V4L2_PIX_FMT_YUV32 v4l2_fourcc('Y', 'U', 'V', '4')
 #endif
-#if defined(V4L2_PIX_FMT_AYUV32) || (defined(HAVE_DECL_V4L2_PIX_FMT_AYUV32) && HAVE_DECL_V4L2_PIX_FMT_AYUV32)
+#if defined(V4L2_PIX_FMT_SPCA505) || (defined(HAVE_DECL_V4L2_PIX_FMT_SPCA505) && HAVE_DECL_V4L2_PIX_FMT_SPCA505)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((V4L2_PIX_FMT_AYUV32) == (v4l2_fourcc('A', 'Y', 'U', 'V')), "V4L2_PIX_FMT_AYUV32 != v4l2_fourcc('A', 'Y', 'U', 'V')");
+static_assert((V4L2_PIX_FMT_SPCA505) == (v4l2_fourcc('S', '5', '0', '5')), "V4L2_PIX_FMT_SPCA505 != v4l2_fourcc('S', '5', '0', '5')");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define V4L2_PIX_FMT_AYUV32 v4l2_fourcc('A', 'Y', 'U', 'V')
+# define V4L2_PIX_FMT_SPCA505 v4l2_fourcc('S', '5', '0', '5')
 #endif
-#if defined(V4L2_PIX_FMT_XYUV32) || (defined(HAVE_DECL_V4L2_PIX_FMT_XYUV32) && HAVE_DECL_V4L2_PIX_FMT_XYUV32)
+#if defined(V4L2_PIX_FMT_BGRA555) || (defined(HAVE_DECL_V4L2_PIX_FMT_BGRA555) && HAVE_DECL_V4L2_PIX_FMT_BGRA555)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((V4L2_PIX_FMT_XYUV32) == (v4l2_fourcc('X', 'Y', 'U', 'V')), "V4L2_PIX_FMT_XYUV32 != v4l2_fourcc('X', 'Y', 'U', 'V')");
+static_assert((V4L2_PIX_FMT_BGRA555) == (v4l2_fourcc('B', 'A', '1', '5')), "V4L2_PIX_FMT_BGRA555 != v4l2_fourcc('B', 'A', '1', '5')");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define V4L2_PIX_FMT_XYUV32 v4l2_fourcc('X', 'Y', 'U', 'V')
+# define V4L2_PIX_FMT_BGRA555 v4l2_fourcc('B', 'A', '1', '5')
 #endif
-#if defined(V4L2_PIX_FMT_VUYA32) || (defined(HAVE_DECL_V4L2_PIX_FMT_VUYA32) && HAVE_DECL_V4L2_PIX_FMT_VUYA32)
+#if defined(V4L2_PIX_FMT_RGBA555) || (defined(HAVE_DECL_V4L2_PIX_FMT_RGBA555) && HAVE_DECL_V4L2_PIX_FMT_RGBA555)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((V4L2_PIX_FMT_VUYA32) == (v4l2_fourcc('V', 'U', 'Y', 'A')), "V4L2_PIX_FMT_VUYA32 != v4l2_fourcc('V', 'U', 'Y', 'A')");
+static_assert((V4L2_PIX_FMT_RGBA555) == (v4l2_fourcc('R', 'A', '1', '5')), "V4L2_PIX_FMT_RGBA555 != v4l2_fourcc('R', 'A', '1', '5')");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define V4L2_PIX_FMT_VUYA32 v4l2_fourcc('V', 'U', 'Y', 'A')
+# define V4L2_PIX_FMT_RGBA555 v4l2_fourcc('R', 'A', '1', '5')
 #endif
-#if defined(V4L2_PIX_FMT_VUYX32) || (defined(HAVE_DECL_V4L2_PIX_FMT_VUYX32) && HAVE_DECL_V4L2_PIX_FMT_VUYX32)
+#if defined(V4L2_PIX_FMT_ABGR555) || (defined(HAVE_DECL_V4L2_PIX_FMT_ABGR555) && HAVE_DECL_V4L2_PIX_FMT_ABGR555)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((V4L2_PIX_FMT_VUYX32) == (v4l2_fourcc('V', 'U', 'Y', 'X')), "V4L2_PIX_FMT_VUYX32 != v4l2_fourcc('V', 'U', 'Y', 'X')");
+static_assert((V4L2_PIX_FMT_ABGR555) == (v4l2_fourcc('A', 'B', '1', '5')), "V4L2_PIX_FMT_ABGR555 != v4l2_fourcc('A', 'B', '1', '5')");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define V4L2_PIX_FMT_VUYX32 v4l2_fourcc('V', 'U', 'Y', 'X')
+# define V4L2_PIX_FMT_ABGR555 v4l2_fourcc('A', 'B', '1', '5')
 #endif
-#if defined(V4L2_PIX_FMT_SPCA505) || (defined(HAVE_DECL_V4L2_PIX_FMT_SPCA505) && HAVE_DECL_V4L2_PIX_FMT_SPCA505)
+#if defined(V4L2_PIX_FMT_XBGR555) || (defined(HAVE_DECL_V4L2_PIX_FMT_XBGR555) && HAVE_DECL_V4L2_PIX_FMT_XBGR555)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((V4L2_PIX_FMT_SPCA505) == (v4l2_fourcc('S', '5', '0', '5')), "V4L2_PIX_FMT_SPCA505 != v4l2_fourcc('S', '5', '0', '5')");
+static_assert((V4L2_PIX_FMT_XBGR555) == (v4l2_fourcc('X', 'B', '1', '5')), "V4L2_PIX_FMT_XBGR555 != v4l2_fourcc('X', 'B', '1', '5')");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define V4L2_PIX_FMT_SPCA505 v4l2_fourcc('S', '5', '0', '5')
+# define V4L2_PIX_FMT_XBGR555 v4l2_fourcc('X', 'B', '1', '5')
 #endif
 #if defined(V4L2_PIX_FMT_ARGB555) || (defined(HAVE_DECL_V4L2_PIX_FMT_ARGB555) && HAVE_DECL_V4L2_PIX_FMT_ARGB555)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
@@ -605,6 +714,20 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define V4L2_PIX_FMT_XRGB555 v4l2_fourcc('X', 'R', '1', '5')
 #endif
+#if defined(V4L2_PIX_FMT_BGRX555) || (defined(HAVE_DECL_V4L2_PIX_FMT_BGRX555) && HAVE_DECL_V4L2_PIX_FMT_BGRX555)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_PIX_FMT_BGRX555) == (v4l2_fourcc('B', 'X', '1', '5')), "V4L2_PIX_FMT_BGRX555 != v4l2_fourcc('B', 'X', '1', '5')");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_PIX_FMT_BGRX555 v4l2_fourcc('B', 'X', '1', '5')
+#endif
+#if defined(V4L2_PIX_FMT_RGBX555) || (defined(HAVE_DECL_V4L2_PIX_FMT_RGBX555) && HAVE_DECL_V4L2_PIX_FMT_RGBX555)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_PIX_FMT_RGBX555) == (v4l2_fourcc('R', 'X', '1', '5')), "V4L2_PIX_FMT_RGBX555 != v4l2_fourcc('R', 'X', '1', '5')");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_PIX_FMT_RGBX555 v4l2_fourcc('R', 'X', '1', '5')
+#endif
 #if defined(V4L2_PIX_FMT_ET61X251) || (defined(HAVE_DECL_V4L2_PIX_FMT_ET61X251) && HAVE_DECL_V4L2_PIX_FMT_ET61X251)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
 static_assert((V4L2_PIX_FMT_ET61X251) == (v4l2_fourcc('E', '6', '2', '5')), "V4L2_PIX_FMT_ET61X251 != v4l2_fourcc('E', '6', '2', '5')");
@@ -787,6 +910,13 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define V4L2_PIX_FMT_WNVA v4l2_fourcc('W', 'N', 'V', 'A')
 #endif
+#if defined(V4L2_PIX_FMT_VUYA32) || (defined(HAVE_DECL_V4L2_PIX_FMT_VUYA32) && HAVE_DECL_V4L2_PIX_FMT_VUYA32)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_PIX_FMT_VUYA32) == (v4l2_fourcc('V', 'U', 'Y', 'A')), "V4L2_PIX_FMT_VUYA32 != v4l2_fourcc('V', 'U', 'Y', 'A')");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_PIX_FMT_VUYA32 v4l2_fourcc('V', 'U', 'Y', 'A')
+#endif
 #if defined(V4L2_PIX_FMT_Y10BPACK) || (defined(HAVE_DECL_V4L2_PIX_FMT_Y10BPACK) && HAVE_DECL_V4L2_PIX_FMT_Y10BPACK)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
 static_assert((V4L2_PIX_FMT_Y10BPACK) == (v4l2_fourcc('Y', '1', '0', 'B')), "V4L2_PIX_FMT_Y10BPACK != v4l2_fourcc('Y', '1', '0', 'B')");
@@ -864,19 +994,19 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define V4L2_PIX_FMT_SGBRG14P v4l2_fourcc('p', 'G', 'E', 'E')
 #endif
-#if defined(V4L2_PIX_FMT_SGRBG14P) || (defined(HAVE_DECL_V4L2_PIX_FMT_SGRBG14P) && HAVE_DECL_V4L2_PIX_FMT_SGRBG14P)
+#if defined(V4L2_PIX_FMT_SRGGB14P) || (defined(HAVE_DECL_V4L2_PIX_FMT_SRGGB14P) && HAVE_DECL_V4L2_PIX_FMT_SRGGB14P)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((V4L2_PIX_FMT_SGRBG14P) == (v4l2_fourcc('p', 'g', 'E', 'E')), "V4L2_PIX_FMT_SGRBG14P != v4l2_fourcc('p', 'g', 'E', 'E')");
+static_assert((V4L2_PIX_FMT_SRGGB14P) == (v4l2_fourcc('p', 'R', 'E', 'E')), "V4L2_PIX_FMT_SRGGB14P != v4l2_fourcc('p', 'R', 'E', 'E')");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define V4L2_PIX_FMT_SGRBG14P v4l2_fourcc('p', 'g', 'E', 'E')
+# define V4L2_PIX_FMT_SRGGB14P v4l2_fourcc('p', 'R', 'E', 'E')
 #endif
-#if defined(V4L2_PIX_FMT_SRGGB14P) || (defined(HAVE_DECL_V4L2_PIX_FMT_SRGGB14P) && HAVE_DECL_V4L2_PIX_FMT_SRGGB14P)
+#if defined(V4L2_PIX_FMT_SGRBG14P) || (defined(HAVE_DECL_V4L2_PIX_FMT_SGRBG14P) && HAVE_DECL_V4L2_PIX_FMT_SGRBG14P)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
-static_assert((V4L2_PIX_FMT_SRGGB14P) == (v4l2_fourcc('p', 'R', 'E', 'E')), "V4L2_PIX_FMT_SRGGB14P != v4l2_fourcc('p', 'R', 'E', 'E')");
+static_assert((V4L2_PIX_FMT_SGRBG14P) == (v4l2_fourcc('p', 'g', 'E', 'E')), "V4L2_PIX_FMT_SGRBG14P != v4l2_fourcc('p', 'g', 'E', 'E')");
 DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
-# define V4L2_PIX_FMT_SRGGB14P v4l2_fourcc('p', 'R', 'E', 'E')
+# define V4L2_PIX_FMT_SGRBG14P v4l2_fourcc('p', 'g', 'E', 'E')
 #endif
 #if defined(V4L2_PIX_FMT_VC1_ANNEX_G) || (defined(HAVE_DECL_V4L2_PIX_FMT_VC1_ANNEX_G) && HAVE_DECL_V4L2_PIX_FMT_VC1_ANNEX_G)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
@@ -941,6 +1071,13 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define V4L2_PIX_FMT_BGR666 v4l2_fourcc('B', 'G', 'R', 'H')
 #endif
+#if defined(V4L2_PIX_FMT_FWHT_STATELESS) || (defined(HAVE_DECL_V4L2_PIX_FMT_FWHT_STATELESS) && HAVE_DECL_V4L2_PIX_FMT_FWHT_STATELESS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_PIX_FMT_FWHT_STATELESS) == (v4l2_fourcc('S', 'F', 'W', 'H')), "V4L2_PIX_FMT_FWHT_STATELESS != v4l2_fourcc('S', 'F', 'W', 'H')");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_PIX_FMT_FWHT_STATELESS v4l2_fourcc('S', 'F', 'W', 'H')
+#endif
 #if defined(V4L2_PIX_FMT_Y12I) || (defined(HAVE_DECL_V4L2_PIX_FMT_Y12I) && HAVE_DECL_V4L2_PIX_FMT_Y12I)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
 static_assert((V4L2_PIX_FMT_Y12I) == (v4l2_fourcc('Y', '1', '2', 'I')), "V4L2_PIX_FMT_Y12I != v4l2_fourcc('Y', '1', '2', 'I')");
@@ -1081,6 +1218,20 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define V4L2_PIX_FMT_CIT_YYVYUY v4l2_fourcc('C', 'I', 'T', 'V')
 #endif
+#if defined(V4L2_PIX_FMT_AYUV32) || (defined(HAVE_DECL_V4L2_PIX_FMT_AYUV32) && HAVE_DECL_V4L2_PIX_FMT_AYUV32)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_PIX_FMT_AYUV32) == (v4l2_fourcc('A', 'Y', 'U', 'V')), "V4L2_PIX_FMT_AYUV32 != v4l2_fourcc('A', 'Y', 'U', 'V')");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_PIX_FMT_AYUV32 v4l2_fourcc('A', 'Y', 'U', 'V')
+#endif
+#if defined(V4L2_PIX_FMT_XYUV32) || (defined(HAVE_DECL_V4L2_PIX_FMT_XYUV32) && HAVE_DECL_V4L2_PIX_FMT_XYUV32)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_PIX_FMT_XYUV32) == (v4l2_fourcc('X', 'Y', 'U', 'V')), "V4L2_PIX_FMT_XYUV32 != v4l2_fourcc('X', 'Y', 'U', 'V')");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_PIX_FMT_XYUV32 v4l2_fourcc('X', 'Y', 'U', 'V')
+#endif
 #if defined(V4L2_PIX_FMT_YYUV) || (defined(HAVE_DECL_V4L2_PIX_FMT_YYUV) && HAVE_DECL_V4L2_PIX_FMT_YYUV)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
 static_assert((V4L2_PIX_FMT_YYUV) == (v4l2_fourcc('Y', 'Y', 'U', 'V')), "V4L2_PIX_FMT_YYUV != v4l2_fourcc('Y', 'Y', 'U', 'V')");
@@ -1102,6 +1253,13 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 #else
 # define V4L2_PIX_FMT_SN9C2028 v4l2_fourcc('S', 'O', 'N', 'X')
 #endif
+#if defined(V4L2_PIX_FMT_VUYX32) || (defined(HAVE_DECL_V4L2_PIX_FMT_VUYX32) && HAVE_DECL_V4L2_PIX_FMT_VUYX32)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_PIX_FMT_VUYX32) == (v4l2_fourcc('V', 'U', 'Y', 'X')), "V4L2_PIX_FMT_VUYX32 != v4l2_fourcc('V', 'U', 'Y', 'X')");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_PIX_FMT_VUYX32 v4l2_fourcc('V', 'U', 'Y', 'X')
+#endif
 #if defined(V4L2_PIX_FMT_GREY) || (defined(HAVE_DECL_V4L2_PIX_FMT_GREY) && HAVE_DECL_V4L2_PIX_FMT_GREY)
 DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
 static_assert((V4L2_PIX_FMT_GREY) == (v4l2_fourcc('G', 'R', 'E', 'Y')), "V4L2_PIX_FMT_GREY != v4l2_fourcc('G', 'R', 'E', 'Y')");
@@ -1181,181 +1339,2109 @@ extern const struct xlat v4l2_pix_fmts[];
 
 # else
 
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat v4l2_pix_fmts[] = {
-
+static const struct xlat_data v4l2_pix_fmts_xdata[] = {
  XLAT(V4L2_PIX_FMT_Y10),
+ #define XLAT_VAL_0 ((unsigned) (V4L2_PIX_FMT_Y10))
+ #define XLAT_STR_0 STRINGIFY(V4L2_PIX_FMT_Y10)
  XLAT(V4L2_PIX_FMT_Y12),
+ #define XLAT_VAL_1 ((unsigned) (V4L2_PIX_FMT_Y12))
+ #define XLAT_STR_1 STRINGIFY(V4L2_PIX_FMT_Y12)
  XLAT(V4L2_PIX_FMT_Y4),
+ #define XLAT_VAL_2 ((unsigned) (V4L2_PIX_FMT_Y4))
+ #define XLAT_STR_2 STRINGIFY(V4L2_PIX_FMT_Y4)
+ XLAT(V4L2_PIX_FMT_Y14),
+ #define XLAT_VAL_3 ((unsigned) (V4L2_PIX_FMT_Y14))
+ #define XLAT_STR_3 STRINGIFY(V4L2_PIX_FMT_Y14)
  XLAT(V4L2_PIX_FMT_Y6),
+ #define XLAT_VAL_4 ((unsigned) (V4L2_PIX_FMT_Y6))
+ #define XLAT_STR_4 STRINGIFY(V4L2_PIX_FMT_Y6)
  XLAT(V4L2_PIX_FMT_Y16),
+ #define XLAT_VAL_5 ((unsigned) (V4L2_PIX_FMT_Y16))
+ #define XLAT_STR_5 STRINGIFY(V4L2_PIX_FMT_Y16)
  XLAT(V4L2_PIX_FMT_Z16),
+ #define XLAT_VAL_6 ((unsigned) (V4L2_PIX_FMT_Z16))
+ #define XLAT_STR_6 STRINGIFY(V4L2_PIX_FMT_Z16)
  XLAT(V4L2_PIX_FMT_UV8),
+ #define XLAT_VAL_7 ((unsigned) (V4L2_PIX_FMT_UV8))
+ #define XLAT_STR_7 STRINGIFY(V4L2_PIX_FMT_UV8)
  XLAT(V4L2_PIX_FMT_Y8I),
+ #define XLAT_VAL_8 ((unsigned) (V4L2_PIX_FMT_Y8I))
+ #define XLAT_STR_8 STRINGIFY(V4L2_PIX_FMT_Y8I)
  XLAT(V4L2_PIX_FMT_MR97310A),
+ #define XLAT_VAL_9 ((unsigned) (V4L2_PIX_FMT_MR97310A))
+ #define XLAT_STR_9 STRINGIFY(V4L2_PIX_FMT_MR97310A)
  XLAT(V4L2_PIX_FMT_SN9C10X),
+ #define XLAT_VAL_10 ((unsigned) (V4L2_PIX_FMT_SN9C10X))
+ #define XLAT_STR_10 STRINGIFY(V4L2_PIX_FMT_SN9C10X)
  XLAT(V4L2_PIX_FMT_SGRBG10),
+ #define XLAT_VAL_11 ((unsigned) (V4L2_PIX_FMT_SGRBG10))
+ #define XLAT_STR_11 STRINGIFY(V4L2_PIX_FMT_SGRBG10)
  XLAT(V4L2_PIX_FMT_SGBRG10),
+ #define XLAT_VAL_12 ((unsigned) (V4L2_PIX_FMT_SGBRG10))
+ #define XLAT_STR_12 STRINGIFY(V4L2_PIX_FMT_SGBRG10)
  XLAT(V4L2_PIX_FMT_SGRBG10DPCM8),
+ #define XLAT_VAL_13 ((unsigned) (V4L2_PIX_FMT_SGRBG10DPCM8))
+ #define XLAT_STR_13 STRINGIFY(V4L2_PIX_FMT_SGRBG10DPCM8)
  XLAT(V4L2_PIX_FMT_SBGGR10),
+ #define XLAT_VAL_14 ((unsigned) (V4L2_PIX_FMT_SBGGR10))
+ #define XLAT_STR_14 STRINGIFY(V4L2_PIX_FMT_SBGGR10)
  XLAT(V4L2_PIX_FMT_SRGGB10),
+ #define XLAT_VAL_15 ((unsigned) (V4L2_PIX_FMT_SRGGB10))
+ #define XLAT_STR_15 STRINGIFY(V4L2_PIX_FMT_SRGGB10)
  XLAT(V4L2_PIX_FMT_M420),
+ #define XLAT_VAL_16 ((unsigned) (V4L2_PIX_FMT_M420))
+ #define XLAT_STR_16 STRINGIFY(V4L2_PIX_FMT_M420)
  XLAT(V4L2_PIX_FMT_SN9C20X_I420),
+ #define XLAT_VAL_17 ((unsigned) (V4L2_PIX_FMT_SN9C20X_I420))
+ #define XLAT_STR_17 STRINGIFY(V4L2_PIX_FMT_SN9C20X_I420)
  XLAT(V4L2_PIX_FMT_JL2005BCD),
+ #define XLAT_VAL_18 ((unsigned) (V4L2_PIX_FMT_JL2005BCD))
+ #define XLAT_STR_18 STRINGIFY(V4L2_PIX_FMT_JL2005BCD)
  XLAT(V4L2_PIX_FMT_TM6000),
+ #define XLAT_VAL_19 ((unsigned) (V4L2_PIX_FMT_TM6000))
+ #define XLAT_STR_19 STRINGIFY(V4L2_PIX_FMT_TM6000)
  XLAT(V4L2_PIX_FMT_STV0680),
+ #define XLAT_VAL_20 ((unsigned) (V4L2_PIX_FMT_STV0680))
+ #define XLAT_STR_20 STRINGIFY(V4L2_PIX_FMT_STV0680)
  XLAT(V4L2_PIX_FMT_VP8),
+ #define XLAT_VAL_21 ((unsigned) (V4L2_PIX_FMT_VP8))
+ #define XLAT_STR_21 STRINGIFY(V4L2_PIX_FMT_VP8)
  XLAT(V4L2_PIX_FMT_VP9),
+ #define XLAT_VAL_22 ((unsigned) (V4L2_PIX_FMT_VP9))
+ #define XLAT_STR_22 STRINGIFY(V4L2_PIX_FMT_VP9)
  XLAT(V4L2_PIX_FMT_SE401),
+ #define XLAT_VAL_23 ((unsigned) (V4L2_PIX_FMT_SE401))
+ #define XLAT_STR_23 STRINGIFY(V4L2_PIX_FMT_SE401)
  XLAT(V4L2_PIX_FMT_SPCA501),
+ #define XLAT_VAL_24 ((unsigned) (V4L2_PIX_FMT_SPCA501))
+ #define XLAT_STR_24 STRINGIFY(V4L2_PIX_FMT_SPCA501)
  XLAT(V4L2_PIX_FMT_OV511),
+ #define XLAT_VAL_25 ((unsigned) (V4L2_PIX_FMT_OV511))
+ #define XLAT_STR_25 STRINGIFY(V4L2_PIX_FMT_OV511)
  XLAT(V4L2_PIX_FMT_NV21M),
+ #define XLAT_VAL_26 ((unsigned) (V4L2_PIX_FMT_NV21M))
+ #define XLAT_STR_26 STRINGIFY(V4L2_PIX_FMT_NV21M)
  XLAT(V4L2_PIX_FMT_YVU420M),
+ #define XLAT_VAL_27 ((unsigned) (V4L2_PIX_FMT_YVU420M))
+ #define XLAT_STR_27 STRINGIFY(V4L2_PIX_FMT_YVU420M)
  XLAT(V4L2_PIX_FMT_MT21C),
+ #define XLAT_VAL_28 ((unsigned) (V4L2_PIX_FMT_MT21C))
+ #define XLAT_STR_28 STRINGIFY(V4L2_PIX_FMT_MT21C)
  XLAT(V4L2_PIX_FMT_NV21),
+ #define XLAT_VAL_29 ((unsigned) (V4L2_PIX_FMT_NV21))
+ #define XLAT_STR_29 STRINGIFY(V4L2_PIX_FMT_NV21)
  XLAT(V4L2_PIX_FMT_SPCA561),
+ #define XLAT_VAL_30 ((unsigned) (V4L2_PIX_FMT_SPCA561))
+ #define XLAT_STR_30 STRINGIFY(V4L2_PIX_FMT_SPCA561)
  XLAT(V4L2_PIX_FMT_NV61M),
+ #define XLAT_VAL_31 ((unsigned) (V4L2_PIX_FMT_NV61M))
+ #define XLAT_STR_31 STRINGIFY(V4L2_PIX_FMT_NV61M)
  XLAT(V4L2_PIX_FMT_YVU422M),
+ #define XLAT_VAL_32 ((unsigned) (V4L2_PIX_FMT_YVU422M))
+ #define XLAT_STR_32 STRINGIFY(V4L2_PIX_FMT_YVU422M)
  XLAT(V4L2_PIX_FMT_NV61),
+ #define XLAT_VAL_33 ((unsigned) (V4L2_PIX_FMT_NV61))
+ #define XLAT_STR_33 STRINGIFY(V4L2_PIX_FMT_NV61)
  XLAT(V4L2_PIX_FMT_SBGGR8),
+ #define XLAT_VAL_34 ((unsigned) (V4L2_PIX_FMT_SBGGR8))
+ #define XLAT_STR_34 STRINGIFY(V4L2_PIX_FMT_SBGGR8)
  XLAT(V4L2_PIX_FMT_RGB332),
+ #define XLAT_VAL_35 ((unsigned) (V4L2_PIX_FMT_RGB332))
+ #define XLAT_STR_35 STRINGIFY(V4L2_PIX_FMT_RGB332)
  XLAT(V4L2_PIX_FMT_H264_NO_SC),
+ #define XLAT_VAL_36 ((unsigned) (V4L2_PIX_FMT_H264_NO_SC))
+ #define XLAT_STR_36 STRINGIFY(V4L2_PIX_FMT_H264_NO_SC)
  XLAT(V4L2_PIX_FMT_PWC1),
+ #define XLAT_VAL_37 ((unsigned) (V4L2_PIX_FMT_PWC1))
+ #define XLAT_STR_37 STRINGIFY(V4L2_PIX_FMT_PWC1)
  XLAT(V4L2_PIX_FMT_MPEG1),
+ #define XLAT_VAL_38 ((unsigned) (V4L2_PIX_FMT_MPEG1))
+ #define XLAT_STR_38 STRINGIFY(V4L2_PIX_FMT_MPEG1)
  XLAT(V4L2_PIX_FMT_SGRBG12),
+ #define XLAT_VAL_39 ((unsigned) (V4L2_PIX_FMT_SGRBG12))
+ #define XLAT_STR_39 STRINGIFY(V4L2_PIX_FMT_SGRBG12)
+#ifndef STRACE_WORKAROUND_FOR_V4L2_PIX_FMT_BGRA444
+# define STRACE_WORKAROUND_FOR_V4L2_PIX_FMT_BGRA444
+/*
+* V4L2_PIX_FMT_BGRA444 was introduced in Linux commit v5.2-rc1~33^2~24 with
+* the value of v4l2_fourcc('B', 'A', '1', '2') and changed in commit
+* v5.2-rc5-403-g22be8233b34f as it clashed with V4L2_PIX_FMT_SGRBG12.
+*/
+# undef V4L2_PIX_FMT_BGRA444
+#endif
+ XLAT(V4L2_PIX_FMT_BGRA444),
+ #define XLAT_VAL_40 ((unsigned) (V4L2_PIX_FMT_BGRA444))
+ #define XLAT_STR_40 STRINGIFY(V4L2_PIX_FMT_BGRA444)
+ XLAT(V4L2_PIX_FMT_RGBA444),
+ #define XLAT_VAL_41 ((unsigned) (V4L2_PIX_FMT_RGBA444))
+ #define XLAT_STR_41 STRINGIFY(V4L2_PIX_FMT_RGBA444)
+ XLAT(V4L2_PIX_FMT_ABGR444),
+ #define XLAT_VAL_42 ((unsigned) (V4L2_PIX_FMT_ABGR444))
+ #define XLAT_STR_42 STRINGIFY(V4L2_PIX_FMT_ABGR444)
  XLAT(V4L2_PIX_FMT_SGBRG12),
+ #define XLAT_VAL_43 ((unsigned) (V4L2_PIX_FMT_SGBRG12))
+ #define XLAT_STR_43 STRINGIFY(V4L2_PIX_FMT_SGBRG12)
+ XLAT(V4L2_PIX_FMT_XBGR444),
+ #define XLAT_VAL_44 ((unsigned) (V4L2_PIX_FMT_XBGR444))
+ #define XLAT_STR_44 STRINGIFY(V4L2_PIX_FMT_XBGR444)
  XLAT(V4L2_PIX_FMT_SBGGR12),
+ #define XLAT_VAL_45 ((unsigned) (V4L2_PIX_FMT_SBGGR12))
+ #define XLAT_STR_45 STRINGIFY(V4L2_PIX_FMT_SBGGR12)
  XLAT(V4L2_PIX_FMT_SRGGB12),
+ #define XLAT_VAL_46 ((unsigned) (V4L2_PIX_FMT_SRGGB12))
+ #define XLAT_STR_46 STRINGIFY(V4L2_PIX_FMT_SRGGB12)
  XLAT(V4L2_PIX_FMT_HM12),
+ #define XLAT_VAL_47 ((unsigned) (V4L2_PIX_FMT_HM12))
+ #define XLAT_STR_47 STRINGIFY(V4L2_PIX_FMT_HM12)
  XLAT(V4L2_PIX_FMT_NV12M),
+ #define XLAT_VAL_48 ((unsigned) (V4L2_PIX_FMT_NV12M))
+ #define XLAT_STR_48 STRINGIFY(V4L2_PIX_FMT_NV12M)
  XLAT(V4L2_PIX_FMT_NV12MT),
+ #define XLAT_VAL_49 ((unsigned) (V4L2_PIX_FMT_NV12MT))
+ #define XLAT_STR_49 STRINGIFY(V4L2_PIX_FMT_NV12MT)
  XLAT(V4L2_PIX_FMT_NV12MT_16X16),
+ #define XLAT_VAL_50 ((unsigned) (V4L2_PIX_FMT_NV12MT_16X16))
+ #define XLAT_STR_50 STRINGIFY(V4L2_PIX_FMT_NV12MT_16X16)
  XLAT(V4L2_PIX_FMT_YUV420M),
+ #define XLAT_VAL_51 ((unsigned) (V4L2_PIX_FMT_YUV420M))
+ #define XLAT_STR_51 STRINGIFY(V4L2_PIX_FMT_YUV420M)
  XLAT(V4L2_PIX_FMT_ARGB444),
+ #define XLAT_VAL_52 ((unsigned) (V4L2_PIX_FMT_ARGB444))
+ #define XLAT_STR_52 STRINGIFY(V4L2_PIX_FMT_ARGB444)
  XLAT(V4L2_PIX_FMT_XRGB444),
+ #define XLAT_VAL_53 ((unsigned) (V4L2_PIX_FMT_XRGB444))
+ #define XLAT_STR_53 STRINGIFY(V4L2_PIX_FMT_XRGB444)
  XLAT(V4L2_PIX_FMT_SUNXI_TILED_NV12),
- XLAT(V4L2_PIX_FMT_CNF4),
+ #define XLAT_VAL_54 ((unsigned) (V4L2_PIX_FMT_SUNXI_TILED_NV12))
+ #define XLAT_STR_54 STRINGIFY(V4L2_PIX_FMT_SUNXI_TILED_NV12)
  XLAT(V4L2_PIX_FMT_YUV420),
+ #define XLAT_VAL_55 ((unsigned) (V4L2_PIX_FMT_YUV420))
+ #define XLAT_STR_55 STRINGIFY(V4L2_PIX_FMT_YUV420)
  XLAT(V4L2_PIX_FMT_NV12),
+ #define XLAT_VAL_56 ((unsigned) (V4L2_PIX_FMT_NV12))
+ #define XLAT_STR_56 STRINGIFY(V4L2_PIX_FMT_NV12)
  XLAT(V4L2_PIX_FMT_YVU420),
+ #define XLAT_VAL_57 ((unsigned) (V4L2_PIX_FMT_YVU420))
+ #define XLAT_STR_57 STRINGIFY(V4L2_PIX_FMT_YVU420)
+ XLAT(V4L2_PIX_FMT_BGRX444),
+ #define XLAT_VAL_58 ((unsigned) (V4L2_PIX_FMT_BGRX444))
+ #define XLAT_STR_58 STRINGIFY(V4L2_PIX_FMT_BGRX444)
+ XLAT(V4L2_PIX_FMT_RGBX444),
+ #define XLAT_VAL_59 ((unsigned) (V4L2_PIX_FMT_RGBX444))
+ #define XLAT_STR_59 STRINGIFY(V4L2_PIX_FMT_RGBX444)
  XLAT(V4L2_PIX_FMT_YVU444M),
+ #define XLAT_VAL_60 ((unsigned) (V4L2_PIX_FMT_YVU444M))
+ #define XLAT_STR_60 STRINGIFY(V4L2_PIX_FMT_YVU444M)
  XLAT(V4L2_PIX_FMT_NV42),
+ #define XLAT_VAL_61 ((unsigned) (V4L2_PIX_FMT_NV42))
+ #define XLAT_STR_61 STRINGIFY(V4L2_PIX_FMT_NV42)
  XLAT(V4L2_PIX_FMT_PWC2),
+ #define XLAT_VAL_62 ((unsigned) (V4L2_PIX_FMT_PWC2))
+ #define XLAT_STR_62 STRINGIFY(V4L2_PIX_FMT_PWC2)
  XLAT(V4L2_PIX_FMT_MPEG2),
+ #define XLAT_VAL_63 ((unsigned) (V4L2_PIX_FMT_MPEG2))
+ #define XLAT_STR_63 STRINGIFY(V4L2_PIX_FMT_MPEG2)
  XLAT(V4L2_PIX_FMT_SBGGR16),
+ #define XLAT_VAL_64 ((unsigned) (V4L2_PIX_FMT_SBGGR16))
+ #define XLAT_STR_64 STRINGIFY(V4L2_PIX_FMT_SBGGR16)
  XLAT(V4L2_PIX_FMT_H263),
+ #define XLAT_VAL_65 ((unsigned) (V4L2_PIX_FMT_H263))
+ #define XLAT_STR_65 STRINGIFY(V4L2_PIX_FMT_H263)
  XLAT(V4L2_PIX_FMT_RGB24),
+ #define XLAT_VAL_66 ((unsigned) (V4L2_PIX_FMT_RGB24))
+ #define XLAT_STR_66 STRINGIFY(V4L2_PIX_FMT_RGB24)
  XLAT(V4L2_PIX_FMT_BGR24),
+ #define XLAT_VAL_67 ((unsigned) (V4L2_PIX_FMT_BGR24))
+ #define XLAT_STR_67 STRINGIFY(V4L2_PIX_FMT_BGR24)
  XLAT(V4L2_PIX_FMT_HSV24),
+ #define XLAT_VAL_68 ((unsigned) (V4L2_PIX_FMT_HSV24))
+ #define XLAT_STR_68 STRINGIFY(V4L2_PIX_FMT_HSV24)
+ XLAT(V4L2_PIX_FMT_SGBRG14),
+ #define XLAT_VAL_69 ((unsigned) (V4L2_PIX_FMT_SGBRG14))
+ #define XLAT_STR_69 STRINGIFY(V4L2_PIX_FMT_SGBRG14)
+ XLAT(V4L2_PIX_FMT_SBGGR14),
+ #define XLAT_VAL_70 ((unsigned) (V4L2_PIX_FMT_SBGGR14))
+ #define XLAT_STR_70 STRINGIFY(V4L2_PIX_FMT_SBGGR14)
+ XLAT(V4L2_PIX_FMT_SRGGB14),
+ #define XLAT_VAL_71 ((unsigned) (V4L2_PIX_FMT_SRGGB14))
+ #define XLAT_STR_71 STRINGIFY(V4L2_PIX_FMT_SRGGB14)
+ XLAT(V4L2_PIX_FMT_SGRBG14),
+ #define XLAT_VAL_72 ((unsigned) (V4L2_PIX_FMT_SGRBG14))
+ #define XLAT_STR_72 STRINGIFY(V4L2_PIX_FMT_SGRBG14)
  XLAT(V4L2_PIX_FMT_ARGB32),
+ #define XLAT_VAL_73 ((unsigned) (V4L2_PIX_FMT_ARGB32))
+ #define XLAT_STR_73 STRINGIFY(V4L2_PIX_FMT_ARGB32)
+ XLAT(V4L2_PIX_FMT_BGRA32),
+ #define XLAT_VAL_74 ((unsigned) (V4L2_PIX_FMT_BGRA32))
+ #define XLAT_STR_74 STRINGIFY(V4L2_PIX_FMT_BGRA32)
+ XLAT(V4L2_PIX_FMT_RGBA32),
+ #define XLAT_VAL_75 ((unsigned) (V4L2_PIX_FMT_RGBA32))
+ #define XLAT_STR_75 STRINGIFY(V4L2_PIX_FMT_RGBA32)
+ XLAT(V4L2_PIX_FMT_RGBX32),
+ #define XLAT_VAL_76 ((unsigned) (V4L2_PIX_FMT_RGBX32))
+ #define XLAT_STR_76 STRINGIFY(V4L2_PIX_FMT_RGBX32)
  XLAT(V4L2_PIX_FMT_HI240),
+ #define XLAT_VAL_77 ((unsigned) (V4L2_PIX_FMT_HI240))
+ #define XLAT_STR_77 STRINGIFY(V4L2_PIX_FMT_HI240)
  XLAT(V4L2_PIX_FMT_YUV444M),
+ #define XLAT_VAL_78 ((unsigned) (V4L2_PIX_FMT_YUV444M))
+ #define XLAT_STR_78 STRINGIFY(V4L2_PIX_FMT_YUV444M)
  XLAT(V4L2_PIX_FMT_ABGR32),
+ #define XLAT_VAL_79 ((unsigned) (V4L2_PIX_FMT_ABGR32))
+ #define XLAT_STR_79 STRINGIFY(V4L2_PIX_FMT_ABGR32)
  XLAT(V4L2_PIX_FMT_XBGR32),
+ #define XLAT_VAL_80 ((unsigned) (V4L2_PIX_FMT_XBGR32))
+ #define XLAT_STR_80 STRINGIFY(V4L2_PIX_FMT_XBGR32)
  XLAT(V4L2_PIX_FMT_NV24),
+ #define XLAT_VAL_81 ((unsigned) (V4L2_PIX_FMT_NV24))
+ #define XLAT_STR_81 STRINGIFY(V4L2_PIX_FMT_NV24)
  XLAT(V4L2_PIX_FMT_XRGB32),
+ #define XLAT_VAL_82 ((unsigned) (V4L2_PIX_FMT_XRGB32))
+ #define XLAT_STR_82 STRINGIFY(V4L2_PIX_FMT_XRGB32)
+ XLAT(V4L2_PIX_FMT_BGRX32),
+ #define XLAT_VAL_83 ((unsigned) (V4L2_PIX_FMT_BGRX32))
+ #define XLAT_STR_83 STRINGIFY(V4L2_PIX_FMT_BGRX32)
  XLAT(V4L2_PIX_FMT_RGB444),
+ #define XLAT_VAL_84 ((unsigned) (V4L2_PIX_FMT_RGB444))
+ #define XLAT_STR_84 STRINGIFY(V4L2_PIX_FMT_RGB444)
  XLAT(V4L2_PIX_FMT_YUV444),
+ #define XLAT_VAL_85 ((unsigned) (V4L2_PIX_FMT_YUV444))
+ #define XLAT_STR_85 STRINGIFY(V4L2_PIX_FMT_YUV444)
  XLAT(V4L2_PIX_FMT_H264),
+ #define XLAT_VAL_86 ((unsigned) (V4L2_PIX_FMT_H264))
+ #define XLAT_STR_86 STRINGIFY(V4L2_PIX_FMT_H264)
  XLAT(V4L2_PIX_FMT_H264_MVC),
+ #define XLAT_VAL_87 ((unsigned) (V4L2_PIX_FMT_H264_MVC))
+ #define XLAT_STR_87 STRINGIFY(V4L2_PIX_FMT_H264_MVC)
  XLAT(V4L2_PIX_FMT_RGB32),
+ #define XLAT_VAL_88 ((unsigned) (V4L2_PIX_FMT_RGB32))
+ #define XLAT_STR_88 STRINGIFY(V4L2_PIX_FMT_RGB32)
+ XLAT(V4L2_PIX_FMT_CNF4),
+ #define XLAT_VAL_89 ((unsigned) (V4L2_PIX_FMT_CNF4))
+ #define XLAT_STR_89 STRINGIFY(V4L2_PIX_FMT_CNF4)
  XLAT(V4L2_PIX_FMT_MPEG4),
+ #define XLAT_VAL_90 ((unsigned) (V4L2_PIX_FMT_MPEG4))
+ #define XLAT_STR_90 STRINGIFY(V4L2_PIX_FMT_MPEG4)
  XLAT(V4L2_PIX_FMT_BGR32),
+ #define XLAT_VAL_91 ((unsigned) (V4L2_PIX_FMT_BGR32))
+ #define XLAT_STR_91 STRINGIFY(V4L2_PIX_FMT_BGR32)
  XLAT(V4L2_PIX_FMT_HSV32),
+ #define XLAT_VAL_92 ((unsigned) (V4L2_PIX_FMT_HSV32))
+ #define XLAT_STR_92 STRINGIFY(V4L2_PIX_FMT_HSV32)
  XLAT(V4L2_PIX_FMT_YUV32),
- XLAT(V4L2_PIX_FMT_AYUV32),
- XLAT(V4L2_PIX_FMT_XYUV32),
- XLAT(V4L2_PIX_FMT_VUYA32),
- XLAT(V4L2_PIX_FMT_VUYX32),
+ #define XLAT_VAL_93 ((unsigned) (V4L2_PIX_FMT_YUV32))
+ #define XLAT_STR_93 STRINGIFY(V4L2_PIX_FMT_YUV32)
  XLAT(V4L2_PIX_FMT_SPCA505),
+ #define XLAT_VAL_94 ((unsigned) (V4L2_PIX_FMT_SPCA505))
+ #define XLAT_STR_94 STRINGIFY(V4L2_PIX_FMT_SPCA505)
+ XLAT(V4L2_PIX_FMT_BGRA555),
+ #define XLAT_VAL_95 ((unsigned) (V4L2_PIX_FMT_BGRA555))
+ #define XLAT_STR_95 STRINGIFY(V4L2_PIX_FMT_BGRA555)
+ XLAT(V4L2_PIX_FMT_RGBA555),
+ #define XLAT_VAL_96 ((unsigned) (V4L2_PIX_FMT_RGBA555))
+ #define XLAT_STR_96 STRINGIFY(V4L2_PIX_FMT_RGBA555)
+ XLAT(V4L2_PIX_FMT_ABGR555),
+ #define XLAT_VAL_97 ((unsigned) (V4L2_PIX_FMT_ABGR555))
+ #define XLAT_STR_97 STRINGIFY(V4L2_PIX_FMT_ABGR555)
+ XLAT(V4L2_PIX_FMT_XBGR555),
+ #define XLAT_VAL_98 ((unsigned) (V4L2_PIX_FMT_XBGR555))
+ #define XLAT_STR_98 STRINGIFY(V4L2_PIX_FMT_XBGR555)
  XLAT(V4L2_PIX_FMT_ARGB555),
+ #define XLAT_VAL_99 ((unsigned) (V4L2_PIX_FMT_ARGB555))
+ #define XLAT_STR_99 STRINGIFY(V4L2_PIX_FMT_ARGB555)
  XLAT(V4L2_PIX_FMT_XRGB555),
+ #define XLAT_VAL_100 ((unsigned) (V4L2_PIX_FMT_XRGB555))
+ #define XLAT_STR_100 STRINGIFY(V4L2_PIX_FMT_XRGB555)
+ XLAT(V4L2_PIX_FMT_BGRX555),
+ #define XLAT_VAL_101 ((unsigned) (V4L2_PIX_FMT_BGRX555))
+ #define XLAT_STR_101 STRINGIFY(V4L2_PIX_FMT_BGRX555)
+ XLAT(V4L2_PIX_FMT_RGBX555),
+ #define XLAT_VAL_102 ((unsigned) (V4L2_PIX_FMT_RGBX555))
+ #define XLAT_STR_102 STRINGIFY(V4L2_PIX_FMT_RGBX555)
  XLAT(V4L2_PIX_FMT_ET61X251),
+ #define XLAT_VAL_103 ((unsigned) (V4L2_PIX_FMT_ET61X251))
+ #define XLAT_STR_103 STRINGIFY(V4L2_PIX_FMT_ET61X251)
  XLAT(V4L2_PIX_FMT_SGBRG16),
+ #define XLAT_VAL_104 ((unsigned) (V4L2_PIX_FMT_SGBRG16))
+ #define XLAT_STR_104 STRINGIFY(V4L2_PIX_FMT_SGBRG16)
  XLAT(V4L2_PIX_FMT_SRGGB16),
+ #define XLAT_VAL_105 ((unsigned) (V4L2_PIX_FMT_SRGGB16))
+ #define XLAT_STR_105 STRINGIFY(V4L2_PIX_FMT_SRGGB16)
  XLAT(V4L2_PIX_FMT_NV16M),
+ #define XLAT_VAL_106 ((unsigned) (V4L2_PIX_FMT_NV16M))
+ #define XLAT_STR_106 STRINGIFY(V4L2_PIX_FMT_NV16M)
  XLAT(V4L2_PIX_FMT_YUV422M),
+ #define XLAT_VAL_107 ((unsigned) (V4L2_PIX_FMT_YUV422M))
+ #define XLAT_STR_107 STRINGIFY(V4L2_PIX_FMT_YUV422M)
  XLAT(V4L2_PIX_FMT_SGRBG16),
+ #define XLAT_VAL_108 ((unsigned) (V4L2_PIX_FMT_SGRBG16))
+ #define XLAT_STR_108 STRINGIFY(V4L2_PIX_FMT_SGRBG16)
  XLAT(V4L2_PIX_FMT_NV16),
+ #define XLAT_VAL_109 ((unsigned) (V4L2_PIX_FMT_NV16))
+ #define XLAT_STR_109 STRINGIFY(V4L2_PIX_FMT_NV16)
  XLAT(V4L2_PIX_FMT_PAC207),
+ #define XLAT_VAL_110 ((unsigned) (V4L2_PIX_FMT_PAC207))
+ #define XLAT_STR_110 STRINGIFY(V4L2_PIX_FMT_PAC207)
  XLAT(V4L2_PIX_FMT_SPCA508),
+ #define XLAT_VAL_111 ((unsigned) (V4L2_PIX_FMT_SPCA508))
+ #define XLAT_STR_111 STRINGIFY(V4L2_PIX_FMT_SPCA508)
  XLAT(V4L2_PIX_FMT_OV518),
+ #define XLAT_VAL_112 ((unsigned) (V4L2_PIX_FMT_OV518))
+ #define XLAT_STR_112 STRINGIFY(V4L2_PIX_FMT_OV518)
  XLAT(V4L2_PIX_FMT_SBGGR10ALAW8),
+ #define XLAT_VAL_113 ((unsigned) (V4L2_PIX_FMT_SBGGR10ALAW8))
+ #define XLAT_STR_113 STRINGIFY(V4L2_PIX_FMT_SBGGR10ALAW8)
  XLAT(V4L2_PIX_FMT_SBGGR10DPCM8),
+ #define XLAT_VAL_114 ((unsigned) (V4L2_PIX_FMT_SBGGR10DPCM8))
+ #define XLAT_STR_114 STRINGIFY(V4L2_PIX_FMT_SBGGR10DPCM8)
  XLAT(V4L2_PIX_FMT_SGBRG10ALAW8),
+ #define XLAT_VAL_115 ((unsigned) (V4L2_PIX_FMT_SGBRG10ALAW8))
+ #define XLAT_STR_115 STRINGIFY(V4L2_PIX_FMT_SGBRG10ALAW8)
  XLAT(V4L2_PIX_FMT_SGBRG10DPCM8),
+ #define XLAT_VAL_116 ((unsigned) (V4L2_PIX_FMT_SGBRG10DPCM8))
+ #define XLAT_STR_116 STRINGIFY(V4L2_PIX_FMT_SGBRG10DPCM8)
  XLAT(V4L2_PIX_FMT_SRGGB10ALAW8),
+ #define XLAT_VAL_117 ((unsigned) (V4L2_PIX_FMT_SRGGB10ALAW8))
+ #define XLAT_STR_117 STRINGIFY(V4L2_PIX_FMT_SRGGB10ALAW8)
  XLAT(V4L2_PIX_FMT_SRGGB10DPCM8),
+ #define XLAT_VAL_118 ((unsigned) (V4L2_PIX_FMT_SRGGB10DPCM8))
+ #define XLAT_STR_118 STRINGIFY(V4L2_PIX_FMT_SRGGB10DPCM8)
  XLAT(V4L2_PIX_FMT_SGRBG10ALAW8),
+ #define XLAT_VAL_119 ((unsigned) (V4L2_PIX_FMT_SGRBG10ALAW8))
+ #define XLAT_STR_119 STRINGIFY(V4L2_PIX_FMT_SGRBG10ALAW8)
  XLAT(V4L2_PIX_FMT_PAL8),
+ #define XLAT_VAL_120 ((unsigned) (V4L2_PIX_FMT_PAL8))
+ #define XLAT_STR_120 STRINGIFY(V4L2_PIX_FMT_PAL8)
  XLAT(V4L2_PIX_FMT_YVU410),
+ #define XLAT_VAL_121 ((unsigned) (V4L2_PIX_FMT_YVU410))
+ #define XLAT_STR_121 STRINGIFY(V4L2_PIX_FMT_YVU410)
  XLAT(V4L2_PIX_FMT_YUV410),
+ #define XLAT_VAL_122 ((unsigned) (V4L2_PIX_FMT_YUV410))
+ #define XLAT_STR_122 STRINGIFY(V4L2_PIX_FMT_YUV410)
  XLAT(V4L2_PIX_FMT_SBGGR10P),
+ #define XLAT_VAL_123 ((unsigned) (V4L2_PIX_FMT_SBGGR10P))
+ #define XLAT_STR_123 STRINGIFY(V4L2_PIX_FMT_SBGGR10P)
  XLAT(V4L2_PIX_FMT_SGBRG10P),
+ #define XLAT_VAL_124 ((unsigned) (V4L2_PIX_FMT_SGBRG10P))
+ #define XLAT_STR_124 STRINGIFY(V4L2_PIX_FMT_SGBRG10P)
  XLAT(V4L2_PIX_FMT_SRGGB10P),
+ #define XLAT_VAL_125 ((unsigned) (V4L2_PIX_FMT_SRGGB10P))
+ #define XLAT_STR_125 STRINGIFY(V4L2_PIX_FMT_SRGGB10P)
  XLAT(V4L2_PIX_FMT_SGRBG10P),
+ #define XLAT_VAL_126 ((unsigned) (V4L2_PIX_FMT_SGRBG10P))
+ #define XLAT_STR_126 STRINGIFY(V4L2_PIX_FMT_SGRBG10P)
  XLAT(V4L2_PIX_FMT_CPIA1),
+ #define XLAT_VAL_127 ((unsigned) (V4L2_PIX_FMT_CPIA1))
+ #define XLAT_STR_127 STRINGIFY(V4L2_PIX_FMT_CPIA1)
  XLAT(V4L2_PIX_FMT_WNVA),
+ #define XLAT_VAL_128 ((unsigned) (V4L2_PIX_FMT_WNVA))
+ #define XLAT_STR_128 STRINGIFY(V4L2_PIX_FMT_WNVA)
+ XLAT(V4L2_PIX_FMT_VUYA32),
+ #define XLAT_VAL_129 ((unsigned) (V4L2_PIX_FMT_VUYA32))
+ #define XLAT_STR_129 STRINGIFY(V4L2_PIX_FMT_VUYA32)
  XLAT(V4L2_PIX_FMT_Y10BPACK),
+ #define XLAT_VAL_130 ((unsigned) (V4L2_PIX_FMT_Y10BPACK))
+ #define XLAT_STR_130 STRINGIFY(V4L2_PIX_FMT_Y10BPACK)
  XLAT(V4L2_PIX_FMT_SRGGB8),
+ #define XLAT_VAL_131 ((unsigned) (V4L2_PIX_FMT_SRGGB8))
+ #define XLAT_STR_131 STRINGIFY(V4L2_PIX_FMT_SRGGB8)
  XLAT(V4L2_PIX_FMT_SQ905C),
+ #define XLAT_VAL_132 ((unsigned) (V4L2_PIX_FMT_SQ905C))
+ #define XLAT_STR_132 STRINGIFY(V4L2_PIX_FMT_SQ905C)
  XLAT(V4L2_PIX_FMT_SBGGR12P),
+ #define XLAT_VAL_133 ((unsigned) (V4L2_PIX_FMT_SBGGR12P))
+ #define XLAT_STR_133 STRINGIFY(V4L2_PIX_FMT_SBGGR12P)
  XLAT(V4L2_PIX_FMT_SGBRG12P),
+ #define XLAT_VAL_134 ((unsigned) (V4L2_PIX_FMT_SGBRG12P))
+ #define XLAT_STR_134 STRINGIFY(V4L2_PIX_FMT_SGBRG12P)
  XLAT(V4L2_PIX_FMT_SRGGB12P),
+ #define XLAT_VAL_135 ((unsigned) (V4L2_PIX_FMT_SRGGB12P))
+ #define XLAT_STR_135 STRINGIFY(V4L2_PIX_FMT_SRGGB12P)
  XLAT(V4L2_PIX_FMT_SGRBG12P),
+ #define XLAT_VAL_136 ((unsigned) (V4L2_PIX_FMT_SGRBG12P))
+ #define XLAT_STR_136 STRINGIFY(V4L2_PIX_FMT_SGRBG12P)
  XLAT(V4L2_PIX_FMT_HEVC),
+ #define XLAT_VAL_137 ((unsigned) (V4L2_PIX_FMT_HEVC))
+ #define XLAT_STR_137 STRINGIFY(V4L2_PIX_FMT_HEVC)
  XLAT(V4L2_PIX_FMT_XVID),
+ #define XLAT_VAL_138 ((unsigned) (V4L2_PIX_FMT_XVID))
+ #define XLAT_STR_138 STRINGIFY(V4L2_PIX_FMT_XVID)
  XLAT(V4L2_PIX_FMT_SBGGR14P),
+ #define XLAT_VAL_139 ((unsigned) (V4L2_PIX_FMT_SBGGR14P))
+ #define XLAT_STR_139 STRINGIFY(V4L2_PIX_FMT_SBGGR14P)
  XLAT(V4L2_PIX_FMT_SGBRG14P),
- XLAT(V4L2_PIX_FMT_SGRBG14P),
+ #define XLAT_VAL_140 ((unsigned) (V4L2_PIX_FMT_SGBRG14P))
+ #define XLAT_STR_140 STRINGIFY(V4L2_PIX_FMT_SGBRG14P)
  XLAT(V4L2_PIX_FMT_SRGGB14P),
+ #define XLAT_VAL_141 ((unsigned) (V4L2_PIX_FMT_SRGGB14P))
+ #define XLAT_STR_141 STRINGIFY(V4L2_PIX_FMT_SRGGB14P)
+ XLAT(V4L2_PIX_FMT_SGRBG14P),
+ #define XLAT_VAL_142 ((unsigned) (V4L2_PIX_FMT_SGRBG14P))
+ #define XLAT_STR_142 STRINGIFY(V4L2_PIX_FMT_SGRBG14P)
  XLAT(V4L2_PIX_FMT_VC1_ANNEX_G),
+ #define XLAT_VAL_143 ((unsigned) (V4L2_PIX_FMT_VC1_ANNEX_G))
+ #define XLAT_STR_143 STRINGIFY(V4L2_PIX_FMT_VC1_ANNEX_G)
  XLAT(V4L2_PIX_FMT_IPU3_SGRBG10),
+ #define XLAT_VAL_144 ((unsigned) (V4L2_PIX_FMT_IPU3_SGRBG10))
+ #define XLAT_STR_144 STRINGIFY(V4L2_PIX_FMT_IPU3_SGRBG10)
  XLAT(V4L2_PIX_FMT_SGRBG8),
+ #define XLAT_VAL_145 ((unsigned) (V4L2_PIX_FMT_SGRBG8))
+ #define XLAT_STR_145 STRINGIFY(V4L2_PIX_FMT_SGRBG8)
  XLAT(V4L2_PIX_FMT_JPEG),
+ #define XLAT_VAL_146 ((unsigned) (V4L2_PIX_FMT_JPEG))
+ #define XLAT_STR_146 STRINGIFY(V4L2_PIX_FMT_JPEG)
  XLAT(V4L2_PIX_FMT_MPEG),
+ #define XLAT_VAL_147 ((unsigned) (V4L2_PIX_FMT_MPEG))
+ #define XLAT_STR_147 STRINGIFY(V4L2_PIX_FMT_MPEG)
  XLAT(V4L2_PIX_FMT_MJPEG),
+ #define XLAT_VAL_148 ((unsigned) (V4L2_PIX_FMT_MJPEG))
+ #define XLAT_STR_148 STRINGIFY(V4L2_PIX_FMT_MJPEG)
  XLAT(V4L2_PIX_FMT_PJPG),
+ #define XLAT_VAL_149 ((unsigned) (V4L2_PIX_FMT_PJPG))
+ #define XLAT_STR_149 STRINGIFY(V4L2_PIX_FMT_PJPG)
  XLAT(V4L2_PIX_FMT_SGBRG8),
+ #define XLAT_VAL_150 ((unsigned) (V4L2_PIX_FMT_SGBRG8))
+ #define XLAT_STR_150 STRINGIFY(V4L2_PIX_FMT_SGBRG8)
  XLAT(V4L2_PIX_FMT_BGR666),
+ #define XLAT_VAL_151 ((unsigned) (V4L2_PIX_FMT_BGR666))
+ #define XLAT_STR_151 STRINGIFY(V4L2_PIX_FMT_BGR666)
+ XLAT(V4L2_PIX_FMT_FWHT_STATELESS),
+ #define XLAT_VAL_152 ((unsigned) (V4L2_PIX_FMT_FWHT_STATELESS))
+ #define XLAT_STR_152 STRINGIFY(V4L2_PIX_FMT_FWHT_STATELESS)
  XLAT(V4L2_PIX_FMT_Y12I),
+ #define XLAT_VAL_153 ((unsigned) (V4L2_PIX_FMT_Y12I))
+ #define XLAT_STR_153 STRINGIFY(V4L2_PIX_FMT_Y12I)
  XLAT(V4L2_PIX_FMT_S5C_UYVY_JPG),
+ #define XLAT_VAL_154 ((unsigned) (V4L2_PIX_FMT_S5C_UYVY_JPG))
+ #define XLAT_STR_154 STRINGIFY(V4L2_PIX_FMT_S5C_UYVY_JPG)
  XLAT(V4L2_PIX_FMT_KONICA420),
+ #define XLAT_VAL_155 ((unsigned) (V4L2_PIX_FMT_KONICA420))
+ #define XLAT_STR_155 STRINGIFY(V4L2_PIX_FMT_KONICA420)
  XLAT(V4L2_PIX_FMT_INZI),
+ #define XLAT_VAL_156 ((unsigned) (V4L2_PIX_FMT_INZI))
+ #define XLAT_STR_156 STRINGIFY(V4L2_PIX_FMT_INZI)
  XLAT(V4L2_PIX_FMT_VC1_ANNEX_L),
+ #define XLAT_VAL_157 ((unsigned) (V4L2_PIX_FMT_VC1_ANNEX_L))
+ #define XLAT_STR_157 STRINGIFY(V4L2_PIX_FMT_VC1_ANNEX_L)
  XLAT(V4L2_PIX_FMT_JPGL),
+ #define XLAT_VAL_158 ((unsigned) (V4L2_PIX_FMT_JPGL))
+ #define XLAT_STR_158 STRINGIFY(V4L2_PIX_FMT_JPGL)
  XLAT(V4L2_PIX_FMT_RGB555),
+ #define XLAT_VAL_159 ((unsigned) (V4L2_PIX_FMT_RGB555))
+ #define XLAT_STR_159 STRINGIFY(V4L2_PIX_FMT_RGB555)
  XLAT(V4L2_PIX_FMT_YUV555),
+ #define XLAT_VAL_160 ((unsigned) (V4L2_PIX_FMT_YUV555))
+ #define XLAT_STR_160 STRINGIFY(V4L2_PIX_FMT_YUV555)
  XLAT(V4L2_PIX_FMT_Y10P),
+ #define XLAT_VAL_161 ((unsigned) (V4L2_PIX_FMT_Y10P))
+ #define XLAT_STR_161 STRINGIFY(V4L2_PIX_FMT_Y10P)
  XLAT(V4L2_PIX_FMT_YUV411P),
+ #define XLAT_VAL_162 ((unsigned) (V4L2_PIX_FMT_YUV411P))
+ #define XLAT_STR_162 STRINGIFY(V4L2_PIX_FMT_YUV411P)
  XLAT(V4L2_PIX_FMT_Y41P),
+ #define XLAT_VAL_163 ((unsigned) (V4L2_PIX_FMT_Y41P))
+ #define XLAT_STR_163 STRINGIFY(V4L2_PIX_FMT_Y41P)
  XLAT(V4L2_PIX_FMT_YUV422P),
+ #define XLAT_VAL_164 ((unsigned) (V4L2_PIX_FMT_YUV422P))
+ #define XLAT_STR_164 STRINGIFY(V4L2_PIX_FMT_YUV422P)
  XLAT(V4L2_PIX_FMT_RGB565),
+ #define XLAT_VAL_165 ((unsigned) (V4L2_PIX_FMT_RGB565))
+ #define XLAT_STR_165 STRINGIFY(V4L2_PIX_FMT_RGB565)
  XLAT(V4L2_PIX_FMT_YUV565),
+ #define XLAT_VAL_166 ((unsigned) (V4L2_PIX_FMT_YUV565))
+ #define XLAT_STR_166 STRINGIFY(V4L2_PIX_FMT_YUV565)
  XLAT(V4L2_PIX_FMT_RGB555X),
+ #define XLAT_VAL_167 ((unsigned) (V4L2_PIX_FMT_RGB555X))
+ #define XLAT_STR_167 STRINGIFY(V4L2_PIX_FMT_RGB555X)
  XLAT(V4L2_PIX_FMT_RGB565X),
+ #define XLAT_VAL_168 ((unsigned) (V4L2_PIX_FMT_RGB565X))
+ #define XLAT_STR_168 STRINGIFY(V4L2_PIX_FMT_RGB565X)
  XLAT(V4L2_PIX_FMT_MPEG2_SLICE),
+ #define XLAT_VAL_169 ((unsigned) (V4L2_PIX_FMT_MPEG2_SLICE))
+ #define XLAT_STR_169 STRINGIFY(V4L2_PIX_FMT_MPEG2_SLICE)
  XLAT(V4L2_PIX_FMT_FWHT),
+ #define XLAT_VAL_170 ((unsigned) (V4L2_PIX_FMT_FWHT))
+ #define XLAT_STR_170 STRINGIFY(V4L2_PIX_FMT_FWHT)
  XLAT(V4L2_PIX_FMT_YVYU),
+ #define XLAT_VAL_171 ((unsigned) (V4L2_PIX_FMT_YVYU))
+ #define XLAT_STR_171 STRINGIFY(V4L2_PIX_FMT_YVYU)
  XLAT(V4L2_PIX_FMT_CIT_YYVYUY),
+ #define XLAT_VAL_172 ((unsigned) (V4L2_PIX_FMT_CIT_YYVYUY))
+ #define XLAT_STR_172 STRINGIFY(V4L2_PIX_FMT_CIT_YYVYUY)
+ XLAT(V4L2_PIX_FMT_AYUV32),
+ #define XLAT_VAL_173 ((unsigned) (V4L2_PIX_FMT_AYUV32))
+ #define XLAT_STR_173 STRINGIFY(V4L2_PIX_FMT_AYUV32)
+ XLAT(V4L2_PIX_FMT_XYUV32),
+ #define XLAT_VAL_174 ((unsigned) (V4L2_PIX_FMT_XYUV32))
+ #define XLAT_STR_174 STRINGIFY(V4L2_PIX_FMT_XYUV32)
  XLAT(V4L2_PIX_FMT_YYUV),
+ #define XLAT_VAL_175 ((unsigned) (V4L2_PIX_FMT_YYUV))
+ #define XLAT_STR_175 STRINGIFY(V4L2_PIX_FMT_YYUV)
  XLAT(V4L2_PIX_FMT_YUYV),
+ #define XLAT_VAL_176 ((unsigned) (V4L2_PIX_FMT_YUYV))
+ #define XLAT_STR_176 STRINGIFY(V4L2_PIX_FMT_YUYV)
  XLAT(V4L2_PIX_FMT_SN9C2028),
+ #define XLAT_VAL_177 ((unsigned) (V4L2_PIX_FMT_SN9C2028))
+ #define XLAT_STR_177 STRINGIFY(V4L2_PIX_FMT_SN9C2028)
+ XLAT(V4L2_PIX_FMT_VUYX32),
+ #define XLAT_VAL_178 ((unsigned) (V4L2_PIX_FMT_VUYX32))
+ #define XLAT_STR_178 STRINGIFY(V4L2_PIX_FMT_VUYX32)
  XLAT(V4L2_PIX_FMT_GREY),
+ #define XLAT_VAL_179 ((unsigned) (V4L2_PIX_FMT_GREY))
+ #define XLAT_STR_179 STRINGIFY(V4L2_PIX_FMT_GREY)
  XLAT(V4L2_PIX_FMT_VYUY),
+ #define XLAT_VAL_180 ((unsigned) (V4L2_PIX_FMT_VYUY))
+ #define XLAT_STR_180 STRINGIFY(V4L2_PIX_FMT_VYUY)
  XLAT(V4L2_PIX_FMT_UYVY),
+ #define XLAT_VAL_181 ((unsigned) (V4L2_PIX_FMT_UYVY))
+ #define XLAT_STR_181 STRINGIFY(V4L2_PIX_FMT_UYVY)
  XLAT(V4L2_PIX_FMT_IPU3_SBGGR10),
+ #define XLAT_VAL_182 ((unsigned) (V4L2_PIX_FMT_IPU3_SBGGR10))
+ #define XLAT_STR_182 STRINGIFY(V4L2_PIX_FMT_IPU3_SBGGR10)
  XLAT(V4L2_PIX_FMT_DV),
+ #define XLAT_VAL_183 ((unsigned) (V4L2_PIX_FMT_DV))
+ #define XLAT_STR_183 STRINGIFY(V4L2_PIX_FMT_DV)
  XLAT(V4L2_PIX_FMT_IPU3_SGBRG10),
+ #define XLAT_VAL_184 ((unsigned) (V4L2_PIX_FMT_IPU3_SGBRG10))
+ #define XLAT_STR_184 STRINGIFY(V4L2_PIX_FMT_IPU3_SGBRG10)
  XLAT(V4L2_PIX_FMT_IPU3_SRGGB10),
+ #define XLAT_VAL_185 ((unsigned) (V4L2_PIX_FMT_IPU3_SRGGB10))
+ #define XLAT_STR_185 STRINGIFY(V4L2_PIX_FMT_IPU3_SRGGB10)
  XLAT(V4L2_PIX_FMT_Y16_BE),
+ #define XLAT_VAL_186 ((unsigned) (V4L2_PIX_FMT_Y16_BE))
+ #define XLAT_STR_186 STRINGIFY(V4L2_PIX_FMT_Y16_BE)
  XLAT(V4L2_PIX_FMT_ARGB555X),
+ #define XLAT_VAL_187 ((unsigned) (V4L2_PIX_FMT_ARGB555X))
+ #define XLAT_STR_187 STRINGIFY(V4L2_PIX_FMT_ARGB555X)
  XLAT(V4L2_PIX_FMT_XRGB555X),
- XLAT_END
+ #define XLAT_VAL_188 ((unsigned) (V4L2_PIX_FMT_XRGB555X))
+ #define XLAT_STR_188 STRINGIFY(V4L2_PIX_FMT_XRGB555X)
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat v4l2_pix_fmts[1] = { {
+ .data = v4l2_pix_fmts_xdata,
+ .size = ARRAY_SIZE(v4l2_pix_fmts_xdata),
+ .type = XT_SORTED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+#  ifdef XLAT_VAL_13
+  | XLAT_VAL_13
+#  endif
+#  ifdef XLAT_VAL_14
+  | XLAT_VAL_14
+#  endif
+#  ifdef XLAT_VAL_15
+  | XLAT_VAL_15
+#  endif
+#  ifdef XLAT_VAL_16
+  | XLAT_VAL_16
+#  endif
+#  ifdef XLAT_VAL_17
+  | XLAT_VAL_17
+#  endif
+#  ifdef XLAT_VAL_18
+  | XLAT_VAL_18
+#  endif
+#  ifdef XLAT_VAL_19
+  | XLAT_VAL_19
+#  endif
+#  ifdef XLAT_VAL_20
+  | XLAT_VAL_20
+#  endif
+#  ifdef XLAT_VAL_21
+  | XLAT_VAL_21
+#  endif
+#  ifdef XLAT_VAL_22
+  | XLAT_VAL_22
+#  endif
+#  ifdef XLAT_VAL_23
+  | XLAT_VAL_23
+#  endif
+#  ifdef XLAT_VAL_24
+  | XLAT_VAL_24
+#  endif
+#  ifdef XLAT_VAL_25
+  | XLAT_VAL_25
+#  endif
+#  ifdef XLAT_VAL_26
+  | XLAT_VAL_26
+#  endif
+#  ifdef XLAT_VAL_27
+  | XLAT_VAL_27
+#  endif
+#  ifdef XLAT_VAL_28
+  | XLAT_VAL_28
+#  endif
+#  ifdef XLAT_VAL_29
+  | XLAT_VAL_29
+#  endif
+#  ifdef XLAT_VAL_30
+  | XLAT_VAL_30
+#  endif
+#  ifdef XLAT_VAL_31
+  | XLAT_VAL_31
+#  endif
+#  ifdef XLAT_VAL_32
+  | XLAT_VAL_32
+#  endif
+#  ifdef XLAT_VAL_33
+  | XLAT_VAL_33
+#  endif
+#  ifdef XLAT_VAL_34
+  | XLAT_VAL_34
+#  endif
+#  ifdef XLAT_VAL_35
+  | XLAT_VAL_35
+#  endif
+#  ifdef XLAT_VAL_36
+  | XLAT_VAL_36
+#  endif
+#  ifdef XLAT_VAL_37
+  | XLAT_VAL_37
+#  endif
+#  ifdef XLAT_VAL_38
+  | XLAT_VAL_38
+#  endif
+#  ifdef XLAT_VAL_39
+  | XLAT_VAL_39
+#  endif
+#  ifdef XLAT_VAL_40
+  | XLAT_VAL_40
+#  endif
+#  ifdef XLAT_VAL_41
+  | XLAT_VAL_41
+#  endif
+#  ifdef XLAT_VAL_42
+  | XLAT_VAL_42
+#  endif
+#  ifdef XLAT_VAL_43
+  | XLAT_VAL_43
+#  endif
+#  ifdef XLAT_VAL_44
+  | XLAT_VAL_44
+#  endif
+#  ifdef XLAT_VAL_45
+  | XLAT_VAL_45
+#  endif
+#  ifdef XLAT_VAL_46
+  | XLAT_VAL_46
+#  endif
+#  ifdef XLAT_VAL_47
+  | XLAT_VAL_47
+#  endif
+#  ifdef XLAT_VAL_48
+  | XLAT_VAL_48
+#  endif
+#  ifdef XLAT_VAL_49
+  | XLAT_VAL_49
+#  endif
+#  ifdef XLAT_VAL_50
+  | XLAT_VAL_50
+#  endif
+#  ifdef XLAT_VAL_51
+  | XLAT_VAL_51
+#  endif
+#  ifdef XLAT_VAL_52
+  | XLAT_VAL_52
+#  endif
+#  ifdef XLAT_VAL_53
+  | XLAT_VAL_53
+#  endif
+#  ifdef XLAT_VAL_54
+  | XLAT_VAL_54
+#  endif
+#  ifdef XLAT_VAL_55
+  | XLAT_VAL_55
+#  endif
+#  ifdef XLAT_VAL_56
+  | XLAT_VAL_56
+#  endif
+#  ifdef XLAT_VAL_57
+  | XLAT_VAL_57
+#  endif
+#  ifdef XLAT_VAL_58
+  | XLAT_VAL_58
+#  endif
+#  ifdef XLAT_VAL_59
+  | XLAT_VAL_59
+#  endif
+#  ifdef XLAT_VAL_60
+  | XLAT_VAL_60
+#  endif
+#  ifdef XLAT_VAL_61
+  | XLAT_VAL_61
+#  endif
+#  ifdef XLAT_VAL_62
+  | XLAT_VAL_62
+#  endif
+#  ifdef XLAT_VAL_63
+  | XLAT_VAL_63
+#  endif
+#  ifdef XLAT_VAL_64
+  | XLAT_VAL_64
+#  endif
+#  ifdef XLAT_VAL_65
+  | XLAT_VAL_65
+#  endif
+#  ifdef XLAT_VAL_66
+  | XLAT_VAL_66
+#  endif
+#  ifdef XLAT_VAL_67
+  | XLAT_VAL_67
+#  endif
+#  ifdef XLAT_VAL_68
+  | XLAT_VAL_68
+#  endif
+#  ifdef XLAT_VAL_69
+  | XLAT_VAL_69
+#  endif
+#  ifdef XLAT_VAL_70
+  | XLAT_VAL_70
+#  endif
+#  ifdef XLAT_VAL_71
+  | XLAT_VAL_71
+#  endif
+#  ifdef XLAT_VAL_72
+  | XLAT_VAL_72
+#  endif
+#  ifdef XLAT_VAL_73
+  | XLAT_VAL_73
+#  endif
+#  ifdef XLAT_VAL_74
+  | XLAT_VAL_74
+#  endif
+#  ifdef XLAT_VAL_75
+  | XLAT_VAL_75
+#  endif
+#  ifdef XLAT_VAL_76
+  | XLAT_VAL_76
+#  endif
+#  ifdef XLAT_VAL_77
+  | XLAT_VAL_77
+#  endif
+#  ifdef XLAT_VAL_78
+  | XLAT_VAL_78
+#  endif
+#  ifdef XLAT_VAL_79
+  | XLAT_VAL_79
+#  endif
+#  ifdef XLAT_VAL_80
+  | XLAT_VAL_80
+#  endif
+#  ifdef XLAT_VAL_81
+  | XLAT_VAL_81
+#  endif
+#  ifdef XLAT_VAL_82
+  | XLAT_VAL_82
+#  endif
+#  ifdef XLAT_VAL_83
+  | XLAT_VAL_83
+#  endif
+#  ifdef XLAT_VAL_84
+  | XLAT_VAL_84
+#  endif
+#  ifdef XLAT_VAL_85
+  | XLAT_VAL_85
+#  endif
+#  ifdef XLAT_VAL_86
+  | XLAT_VAL_86
+#  endif
+#  ifdef XLAT_VAL_87
+  | XLAT_VAL_87
+#  endif
+#  ifdef XLAT_VAL_88
+  | XLAT_VAL_88
+#  endif
+#  ifdef XLAT_VAL_89
+  | XLAT_VAL_89
+#  endif
+#  ifdef XLAT_VAL_90
+  | XLAT_VAL_90
+#  endif
+#  ifdef XLAT_VAL_91
+  | XLAT_VAL_91
+#  endif
+#  ifdef XLAT_VAL_92
+  | XLAT_VAL_92
+#  endif
+#  ifdef XLAT_VAL_93
+  | XLAT_VAL_93
+#  endif
+#  ifdef XLAT_VAL_94
+  | XLAT_VAL_94
+#  endif
+#  ifdef XLAT_VAL_95
+  | XLAT_VAL_95
+#  endif
+#  ifdef XLAT_VAL_96
+  | XLAT_VAL_96
+#  endif
+#  ifdef XLAT_VAL_97
+  | XLAT_VAL_97
+#  endif
+#  ifdef XLAT_VAL_98
+  | XLAT_VAL_98
+#  endif
+#  ifdef XLAT_VAL_99
+  | XLAT_VAL_99
+#  endif
+#  ifdef XLAT_VAL_100
+  | XLAT_VAL_100
+#  endif
+#  ifdef XLAT_VAL_101
+  | XLAT_VAL_101
+#  endif
+#  ifdef XLAT_VAL_102
+  | XLAT_VAL_102
+#  endif
+#  ifdef XLAT_VAL_103
+  | XLAT_VAL_103
+#  endif
+#  ifdef XLAT_VAL_104
+  | XLAT_VAL_104
+#  endif
+#  ifdef XLAT_VAL_105
+  | XLAT_VAL_105
+#  endif
+#  ifdef XLAT_VAL_106
+  | XLAT_VAL_106
+#  endif
+#  ifdef XLAT_VAL_107
+  | XLAT_VAL_107
+#  endif
+#  ifdef XLAT_VAL_108
+  | XLAT_VAL_108
+#  endif
+#  ifdef XLAT_VAL_109
+  | XLAT_VAL_109
+#  endif
+#  ifdef XLAT_VAL_110
+  | XLAT_VAL_110
+#  endif
+#  ifdef XLAT_VAL_111
+  | XLAT_VAL_111
+#  endif
+#  ifdef XLAT_VAL_112
+  | XLAT_VAL_112
+#  endif
+#  ifdef XLAT_VAL_113
+  | XLAT_VAL_113
+#  endif
+#  ifdef XLAT_VAL_114
+  | XLAT_VAL_114
+#  endif
+#  ifdef XLAT_VAL_115
+  | XLAT_VAL_115
+#  endif
+#  ifdef XLAT_VAL_116
+  | XLAT_VAL_116
+#  endif
+#  ifdef XLAT_VAL_117
+  | XLAT_VAL_117
+#  endif
+#  ifdef XLAT_VAL_118
+  | XLAT_VAL_118
+#  endif
+#  ifdef XLAT_VAL_119
+  | XLAT_VAL_119
+#  endif
+#  ifdef XLAT_VAL_120
+  | XLAT_VAL_120
+#  endif
+#  ifdef XLAT_VAL_121
+  | XLAT_VAL_121
+#  endif
+#  ifdef XLAT_VAL_122
+  | XLAT_VAL_122
+#  endif
+#  ifdef XLAT_VAL_123
+  | XLAT_VAL_123
+#  endif
+#  ifdef XLAT_VAL_124
+  | XLAT_VAL_124
+#  endif
+#  ifdef XLAT_VAL_125
+  | XLAT_VAL_125
+#  endif
+#  ifdef XLAT_VAL_126
+  | XLAT_VAL_126
+#  endif
+#  ifdef XLAT_VAL_127
+  | XLAT_VAL_127
+#  endif
+#  ifdef XLAT_VAL_128
+  | XLAT_VAL_128
+#  endif
+#  ifdef XLAT_VAL_129
+  | XLAT_VAL_129
+#  endif
+#  ifdef XLAT_VAL_130
+  | XLAT_VAL_130
+#  endif
+#  ifdef XLAT_VAL_131
+  | XLAT_VAL_131
+#  endif
+#  ifdef XLAT_VAL_132
+  | XLAT_VAL_132
+#  endif
+#  ifdef XLAT_VAL_133
+  | XLAT_VAL_133
+#  endif
+#  ifdef XLAT_VAL_134
+  | XLAT_VAL_134
+#  endif
+#  ifdef XLAT_VAL_135
+  | XLAT_VAL_135
+#  endif
+#  ifdef XLAT_VAL_136
+  | XLAT_VAL_136
+#  endif
+#  ifdef XLAT_VAL_137
+  | XLAT_VAL_137
+#  endif
+#  ifdef XLAT_VAL_138
+  | XLAT_VAL_138
+#  endif
+#  ifdef XLAT_VAL_139
+  | XLAT_VAL_139
+#  endif
+#  ifdef XLAT_VAL_140
+  | XLAT_VAL_140
+#  endif
+#  ifdef XLAT_VAL_141
+  | XLAT_VAL_141
+#  endif
+#  ifdef XLAT_VAL_142
+  | XLAT_VAL_142
+#  endif
+#  ifdef XLAT_VAL_143
+  | XLAT_VAL_143
+#  endif
+#  ifdef XLAT_VAL_144
+  | XLAT_VAL_144
+#  endif
+#  ifdef XLAT_VAL_145
+  | XLAT_VAL_145
+#  endif
+#  ifdef XLAT_VAL_146
+  | XLAT_VAL_146
+#  endif
+#  ifdef XLAT_VAL_147
+  | XLAT_VAL_147
+#  endif
+#  ifdef XLAT_VAL_148
+  | XLAT_VAL_148
+#  endif
+#  ifdef XLAT_VAL_149
+  | XLAT_VAL_149
+#  endif
+#  ifdef XLAT_VAL_150
+  | XLAT_VAL_150
+#  endif
+#  ifdef XLAT_VAL_151
+  | XLAT_VAL_151
+#  endif
+#  ifdef XLAT_VAL_152
+  | XLAT_VAL_152
+#  endif
+#  ifdef XLAT_VAL_153
+  | XLAT_VAL_153
+#  endif
+#  ifdef XLAT_VAL_154
+  | XLAT_VAL_154
+#  endif
+#  ifdef XLAT_VAL_155
+  | XLAT_VAL_155
+#  endif
+#  ifdef XLAT_VAL_156
+  | XLAT_VAL_156
+#  endif
+#  ifdef XLAT_VAL_157
+  | XLAT_VAL_157
+#  endif
+#  ifdef XLAT_VAL_158
+  | XLAT_VAL_158
+#  endif
+#  ifdef XLAT_VAL_159
+  | XLAT_VAL_159
+#  endif
+#  ifdef XLAT_VAL_160
+  | XLAT_VAL_160
+#  endif
+#  ifdef XLAT_VAL_161
+  | XLAT_VAL_161
+#  endif
+#  ifdef XLAT_VAL_162
+  | XLAT_VAL_162
+#  endif
+#  ifdef XLAT_VAL_163
+  | XLAT_VAL_163
+#  endif
+#  ifdef XLAT_VAL_164
+  | XLAT_VAL_164
+#  endif
+#  ifdef XLAT_VAL_165
+  | XLAT_VAL_165
+#  endif
+#  ifdef XLAT_VAL_166
+  | XLAT_VAL_166
+#  endif
+#  ifdef XLAT_VAL_167
+  | XLAT_VAL_167
+#  endif
+#  ifdef XLAT_VAL_168
+  | XLAT_VAL_168
+#  endif
+#  ifdef XLAT_VAL_169
+  | XLAT_VAL_169
+#  endif
+#  ifdef XLAT_VAL_170
+  | XLAT_VAL_170
+#  endif
+#  ifdef XLAT_VAL_171
+  | XLAT_VAL_171
+#  endif
+#  ifdef XLAT_VAL_172
+  | XLAT_VAL_172
+#  endif
+#  ifdef XLAT_VAL_173
+  | XLAT_VAL_173
+#  endif
+#  ifdef XLAT_VAL_174
+  | XLAT_VAL_174
+#  endif
+#  ifdef XLAT_VAL_175
+  | XLAT_VAL_175
+#  endif
+#  ifdef XLAT_VAL_176
+  | XLAT_VAL_176
+#  endif
+#  ifdef XLAT_VAL_177
+  | XLAT_VAL_177
+#  endif
+#  ifdef XLAT_VAL_178
+  | XLAT_VAL_178
+#  endif
+#  ifdef XLAT_VAL_179
+  | XLAT_VAL_179
+#  endif
+#  ifdef XLAT_VAL_180
+  | XLAT_VAL_180
+#  endif
+#  ifdef XLAT_VAL_181
+  | XLAT_VAL_181
+#  endif
+#  ifdef XLAT_VAL_182
+  | XLAT_VAL_182
+#  endif
+#  ifdef XLAT_VAL_183
+  | XLAT_VAL_183
+#  endif
+#  ifdef XLAT_VAL_184
+  | XLAT_VAL_184
+#  endif
+#  ifdef XLAT_VAL_185
+  | XLAT_VAL_185
+#  endif
+#  ifdef XLAT_VAL_186
+  | XLAT_VAL_186
+#  endif
+#  ifdef XLAT_VAL_187
+  | XLAT_VAL_187
+#  endif
+#  ifdef XLAT_VAL_188
+  | XLAT_VAL_188
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+#  ifdef XLAT_STR_13
+  + sizeof(XLAT_STR_13)
+#  endif
+#  ifdef XLAT_STR_14
+  + sizeof(XLAT_STR_14)
+#  endif
+#  ifdef XLAT_STR_15
+  + sizeof(XLAT_STR_15)
+#  endif
+#  ifdef XLAT_STR_16
+  + sizeof(XLAT_STR_16)
+#  endif
+#  ifdef XLAT_STR_17
+  + sizeof(XLAT_STR_17)
+#  endif
+#  ifdef XLAT_STR_18
+  + sizeof(XLAT_STR_18)
+#  endif
+#  ifdef XLAT_STR_19
+  + sizeof(XLAT_STR_19)
+#  endif
+#  ifdef XLAT_STR_20
+  + sizeof(XLAT_STR_20)
+#  endif
+#  ifdef XLAT_STR_21
+  + sizeof(XLAT_STR_21)
+#  endif
+#  ifdef XLAT_STR_22
+  + sizeof(XLAT_STR_22)
+#  endif
+#  ifdef XLAT_STR_23
+  + sizeof(XLAT_STR_23)
+#  endif
+#  ifdef XLAT_STR_24
+  + sizeof(XLAT_STR_24)
+#  endif
+#  ifdef XLAT_STR_25
+  + sizeof(XLAT_STR_25)
+#  endif
+#  ifdef XLAT_STR_26
+  + sizeof(XLAT_STR_26)
+#  endif
+#  ifdef XLAT_STR_27
+  + sizeof(XLAT_STR_27)
+#  endif
+#  ifdef XLAT_STR_28
+  + sizeof(XLAT_STR_28)
+#  endif
+#  ifdef XLAT_STR_29
+  + sizeof(XLAT_STR_29)
+#  endif
+#  ifdef XLAT_STR_30
+  + sizeof(XLAT_STR_30)
+#  endif
+#  ifdef XLAT_STR_31
+  + sizeof(XLAT_STR_31)
+#  endif
+#  ifdef XLAT_STR_32
+  + sizeof(XLAT_STR_32)
+#  endif
+#  ifdef XLAT_STR_33
+  + sizeof(XLAT_STR_33)
+#  endif
+#  ifdef XLAT_STR_34
+  + sizeof(XLAT_STR_34)
+#  endif
+#  ifdef XLAT_STR_35
+  + sizeof(XLAT_STR_35)
+#  endif
+#  ifdef XLAT_STR_36
+  + sizeof(XLAT_STR_36)
+#  endif
+#  ifdef XLAT_STR_37
+  + sizeof(XLAT_STR_37)
+#  endif
+#  ifdef XLAT_STR_38
+  + sizeof(XLAT_STR_38)
+#  endif
+#  ifdef XLAT_STR_39
+  + sizeof(XLAT_STR_39)
+#  endif
+#  ifdef XLAT_STR_40
+  + sizeof(XLAT_STR_40)
+#  endif
+#  ifdef XLAT_STR_41
+  + sizeof(XLAT_STR_41)
+#  endif
+#  ifdef XLAT_STR_42
+  + sizeof(XLAT_STR_42)
+#  endif
+#  ifdef XLAT_STR_43
+  + sizeof(XLAT_STR_43)
+#  endif
+#  ifdef XLAT_STR_44
+  + sizeof(XLAT_STR_44)
+#  endif
+#  ifdef XLAT_STR_45
+  + sizeof(XLAT_STR_45)
+#  endif
+#  ifdef XLAT_STR_46
+  + sizeof(XLAT_STR_46)
+#  endif
+#  ifdef XLAT_STR_47
+  + sizeof(XLAT_STR_47)
+#  endif
+#  ifdef XLAT_STR_48
+  + sizeof(XLAT_STR_48)
+#  endif
+#  ifdef XLAT_STR_49
+  + sizeof(XLAT_STR_49)
+#  endif
+#  ifdef XLAT_STR_50
+  + sizeof(XLAT_STR_50)
+#  endif
+#  ifdef XLAT_STR_51
+  + sizeof(XLAT_STR_51)
+#  endif
+#  ifdef XLAT_STR_52
+  + sizeof(XLAT_STR_52)
+#  endif
+#  ifdef XLAT_STR_53
+  + sizeof(XLAT_STR_53)
+#  endif
+#  ifdef XLAT_STR_54
+  + sizeof(XLAT_STR_54)
+#  endif
+#  ifdef XLAT_STR_55
+  + sizeof(XLAT_STR_55)
+#  endif
+#  ifdef XLAT_STR_56
+  + sizeof(XLAT_STR_56)
+#  endif
+#  ifdef XLAT_STR_57
+  + sizeof(XLAT_STR_57)
+#  endif
+#  ifdef XLAT_STR_58
+  + sizeof(XLAT_STR_58)
+#  endif
+#  ifdef XLAT_STR_59
+  + sizeof(XLAT_STR_59)
+#  endif
+#  ifdef XLAT_STR_60
+  + sizeof(XLAT_STR_60)
+#  endif
+#  ifdef XLAT_STR_61
+  + sizeof(XLAT_STR_61)
+#  endif
+#  ifdef XLAT_STR_62
+  + sizeof(XLAT_STR_62)
+#  endif
+#  ifdef XLAT_STR_63
+  + sizeof(XLAT_STR_63)
+#  endif
+#  ifdef XLAT_STR_64
+  + sizeof(XLAT_STR_64)
+#  endif
+#  ifdef XLAT_STR_65
+  + sizeof(XLAT_STR_65)
+#  endif
+#  ifdef XLAT_STR_66
+  + sizeof(XLAT_STR_66)
+#  endif
+#  ifdef XLAT_STR_67
+  + sizeof(XLAT_STR_67)
+#  endif
+#  ifdef XLAT_STR_68
+  + sizeof(XLAT_STR_68)
+#  endif
+#  ifdef XLAT_STR_69
+  + sizeof(XLAT_STR_69)
+#  endif
+#  ifdef XLAT_STR_70
+  + sizeof(XLAT_STR_70)
+#  endif
+#  ifdef XLAT_STR_71
+  + sizeof(XLAT_STR_71)
+#  endif
+#  ifdef XLAT_STR_72
+  + sizeof(XLAT_STR_72)
+#  endif
+#  ifdef XLAT_STR_73
+  + sizeof(XLAT_STR_73)
+#  endif
+#  ifdef XLAT_STR_74
+  + sizeof(XLAT_STR_74)
+#  endif
+#  ifdef XLAT_STR_75
+  + sizeof(XLAT_STR_75)
+#  endif
+#  ifdef XLAT_STR_76
+  + sizeof(XLAT_STR_76)
+#  endif
+#  ifdef XLAT_STR_77
+  + sizeof(XLAT_STR_77)
+#  endif
+#  ifdef XLAT_STR_78
+  + sizeof(XLAT_STR_78)
+#  endif
+#  ifdef XLAT_STR_79
+  + sizeof(XLAT_STR_79)
+#  endif
+#  ifdef XLAT_STR_80
+  + sizeof(XLAT_STR_80)
+#  endif
+#  ifdef XLAT_STR_81
+  + sizeof(XLAT_STR_81)
+#  endif
+#  ifdef XLAT_STR_82
+  + sizeof(XLAT_STR_82)
+#  endif
+#  ifdef XLAT_STR_83
+  + sizeof(XLAT_STR_83)
+#  endif
+#  ifdef XLAT_STR_84
+  + sizeof(XLAT_STR_84)
+#  endif
+#  ifdef XLAT_STR_85
+  + sizeof(XLAT_STR_85)
+#  endif
+#  ifdef XLAT_STR_86
+  + sizeof(XLAT_STR_86)
+#  endif
+#  ifdef XLAT_STR_87
+  + sizeof(XLAT_STR_87)
+#  endif
+#  ifdef XLAT_STR_88
+  + sizeof(XLAT_STR_88)
+#  endif
+#  ifdef XLAT_STR_89
+  + sizeof(XLAT_STR_89)
+#  endif
+#  ifdef XLAT_STR_90
+  + sizeof(XLAT_STR_90)
+#  endif
+#  ifdef XLAT_STR_91
+  + sizeof(XLAT_STR_91)
+#  endif
+#  ifdef XLAT_STR_92
+  + sizeof(XLAT_STR_92)
+#  endif
+#  ifdef XLAT_STR_93
+  + sizeof(XLAT_STR_93)
+#  endif
+#  ifdef XLAT_STR_94
+  + sizeof(XLAT_STR_94)
+#  endif
+#  ifdef XLAT_STR_95
+  + sizeof(XLAT_STR_95)
+#  endif
+#  ifdef XLAT_STR_96
+  + sizeof(XLAT_STR_96)
+#  endif
+#  ifdef XLAT_STR_97
+  + sizeof(XLAT_STR_97)
+#  endif
+#  ifdef XLAT_STR_98
+  + sizeof(XLAT_STR_98)
+#  endif
+#  ifdef XLAT_STR_99
+  + sizeof(XLAT_STR_99)
+#  endif
+#  ifdef XLAT_STR_100
+  + sizeof(XLAT_STR_100)
+#  endif
+#  ifdef XLAT_STR_101
+  + sizeof(XLAT_STR_101)
+#  endif
+#  ifdef XLAT_STR_102
+  + sizeof(XLAT_STR_102)
+#  endif
+#  ifdef XLAT_STR_103
+  + sizeof(XLAT_STR_103)
+#  endif
+#  ifdef XLAT_STR_104
+  + sizeof(XLAT_STR_104)
+#  endif
+#  ifdef XLAT_STR_105
+  + sizeof(XLAT_STR_105)
+#  endif
+#  ifdef XLAT_STR_106
+  + sizeof(XLAT_STR_106)
+#  endif
+#  ifdef XLAT_STR_107
+  + sizeof(XLAT_STR_107)
+#  endif
+#  ifdef XLAT_STR_108
+  + sizeof(XLAT_STR_108)
+#  endif
+#  ifdef XLAT_STR_109
+  + sizeof(XLAT_STR_109)
+#  endif
+#  ifdef XLAT_STR_110
+  + sizeof(XLAT_STR_110)
+#  endif
+#  ifdef XLAT_STR_111
+  + sizeof(XLAT_STR_111)
+#  endif
+#  ifdef XLAT_STR_112
+  + sizeof(XLAT_STR_112)
+#  endif
+#  ifdef XLAT_STR_113
+  + sizeof(XLAT_STR_113)
+#  endif
+#  ifdef XLAT_STR_114
+  + sizeof(XLAT_STR_114)
+#  endif
+#  ifdef XLAT_STR_115
+  + sizeof(XLAT_STR_115)
+#  endif
+#  ifdef XLAT_STR_116
+  + sizeof(XLAT_STR_116)
+#  endif
+#  ifdef XLAT_STR_117
+  + sizeof(XLAT_STR_117)
+#  endif
+#  ifdef XLAT_STR_118
+  + sizeof(XLAT_STR_118)
+#  endif
+#  ifdef XLAT_STR_119
+  + sizeof(XLAT_STR_119)
+#  endif
+#  ifdef XLAT_STR_120
+  + sizeof(XLAT_STR_120)
+#  endif
+#  ifdef XLAT_STR_121
+  + sizeof(XLAT_STR_121)
+#  endif
+#  ifdef XLAT_STR_122
+  + sizeof(XLAT_STR_122)
+#  endif
+#  ifdef XLAT_STR_123
+  + sizeof(XLAT_STR_123)
+#  endif
+#  ifdef XLAT_STR_124
+  + sizeof(XLAT_STR_124)
+#  endif
+#  ifdef XLAT_STR_125
+  + sizeof(XLAT_STR_125)
+#  endif
+#  ifdef XLAT_STR_126
+  + sizeof(XLAT_STR_126)
+#  endif
+#  ifdef XLAT_STR_127
+  + sizeof(XLAT_STR_127)
+#  endif
+#  ifdef XLAT_STR_128
+  + sizeof(XLAT_STR_128)
+#  endif
+#  ifdef XLAT_STR_129
+  + sizeof(XLAT_STR_129)
+#  endif
+#  ifdef XLAT_STR_130
+  + sizeof(XLAT_STR_130)
+#  endif
+#  ifdef XLAT_STR_131
+  + sizeof(XLAT_STR_131)
+#  endif
+#  ifdef XLAT_STR_132
+  + sizeof(XLAT_STR_132)
+#  endif
+#  ifdef XLAT_STR_133
+  + sizeof(XLAT_STR_133)
+#  endif
+#  ifdef XLAT_STR_134
+  + sizeof(XLAT_STR_134)
+#  endif
+#  ifdef XLAT_STR_135
+  + sizeof(XLAT_STR_135)
+#  endif
+#  ifdef XLAT_STR_136
+  + sizeof(XLAT_STR_136)
+#  endif
+#  ifdef XLAT_STR_137
+  + sizeof(XLAT_STR_137)
+#  endif
+#  ifdef XLAT_STR_138
+  + sizeof(XLAT_STR_138)
+#  endif
+#  ifdef XLAT_STR_139
+  + sizeof(XLAT_STR_139)
+#  endif
+#  ifdef XLAT_STR_140
+  + sizeof(XLAT_STR_140)
+#  endif
+#  ifdef XLAT_STR_141
+  + sizeof(XLAT_STR_141)
+#  endif
+#  ifdef XLAT_STR_142
+  + sizeof(XLAT_STR_142)
+#  endif
+#  ifdef XLAT_STR_143
+  + sizeof(XLAT_STR_143)
+#  endif
+#  ifdef XLAT_STR_144
+  + sizeof(XLAT_STR_144)
+#  endif
+#  ifdef XLAT_STR_145
+  + sizeof(XLAT_STR_145)
+#  endif
+#  ifdef XLAT_STR_146
+  + sizeof(XLAT_STR_146)
+#  endif
+#  ifdef XLAT_STR_147
+  + sizeof(XLAT_STR_147)
+#  endif
+#  ifdef XLAT_STR_148
+  + sizeof(XLAT_STR_148)
+#  endif
+#  ifdef XLAT_STR_149
+  + sizeof(XLAT_STR_149)
+#  endif
+#  ifdef XLAT_STR_150
+  + sizeof(XLAT_STR_150)
+#  endif
+#  ifdef XLAT_STR_151
+  + sizeof(XLAT_STR_151)
+#  endif
+#  ifdef XLAT_STR_152
+  + sizeof(XLAT_STR_152)
+#  endif
+#  ifdef XLAT_STR_153
+  + sizeof(XLAT_STR_153)
+#  endif
+#  ifdef XLAT_STR_154
+  + sizeof(XLAT_STR_154)
+#  endif
+#  ifdef XLAT_STR_155
+  + sizeof(XLAT_STR_155)
+#  endif
+#  ifdef XLAT_STR_156
+  + sizeof(XLAT_STR_156)
+#  endif
+#  ifdef XLAT_STR_157
+  + sizeof(XLAT_STR_157)
+#  endif
+#  ifdef XLAT_STR_158
+  + sizeof(XLAT_STR_158)
+#  endif
+#  ifdef XLAT_STR_159
+  + sizeof(XLAT_STR_159)
+#  endif
+#  ifdef XLAT_STR_160
+  + sizeof(XLAT_STR_160)
+#  endif
+#  ifdef XLAT_STR_161
+  + sizeof(XLAT_STR_161)
+#  endif
+#  ifdef XLAT_STR_162
+  + sizeof(XLAT_STR_162)
+#  endif
+#  ifdef XLAT_STR_163
+  + sizeof(XLAT_STR_163)
+#  endif
+#  ifdef XLAT_STR_164
+  + sizeof(XLAT_STR_164)
+#  endif
+#  ifdef XLAT_STR_165
+  + sizeof(XLAT_STR_165)
+#  endif
+#  ifdef XLAT_STR_166
+  + sizeof(XLAT_STR_166)
+#  endif
+#  ifdef XLAT_STR_167
+  + sizeof(XLAT_STR_167)
+#  endif
+#  ifdef XLAT_STR_168
+  + sizeof(XLAT_STR_168)
+#  endif
+#  ifdef XLAT_STR_169
+  + sizeof(XLAT_STR_169)
+#  endif
+#  ifdef XLAT_STR_170
+  + sizeof(XLAT_STR_170)
+#  endif
+#  ifdef XLAT_STR_171
+  + sizeof(XLAT_STR_171)
+#  endif
+#  ifdef XLAT_STR_172
+  + sizeof(XLAT_STR_172)
+#  endif
+#  ifdef XLAT_STR_173
+  + sizeof(XLAT_STR_173)
+#  endif
+#  ifdef XLAT_STR_174
+  + sizeof(XLAT_STR_174)
+#  endif
+#  ifdef XLAT_STR_175
+  + sizeof(XLAT_STR_175)
+#  endif
+#  ifdef XLAT_STR_176
+  + sizeof(XLAT_STR_176)
+#  endif
+#  ifdef XLAT_STR_177
+  + sizeof(XLAT_STR_177)
+#  endif
+#  ifdef XLAT_STR_178
+  + sizeof(XLAT_STR_178)
+#  endif
+#  ifdef XLAT_STR_179
+  + sizeof(XLAT_STR_179)
+#  endif
+#  ifdef XLAT_STR_180
+  + sizeof(XLAT_STR_180)
+#  endif
+#  ifdef XLAT_STR_181
+  + sizeof(XLAT_STR_181)
+#  endif
+#  ifdef XLAT_STR_182
+  + sizeof(XLAT_STR_182)
+#  endif
+#  ifdef XLAT_STR_183
+  + sizeof(XLAT_STR_183)
+#  endif
+#  ifdef XLAT_STR_184
+  + sizeof(XLAT_STR_184)
+#  endif
+#  ifdef XLAT_STR_185
+  + sizeof(XLAT_STR_185)
+#  endif
+#  ifdef XLAT_STR_186
+  + sizeof(XLAT_STR_186)
+#  endif
+#  ifdef XLAT_STR_187
+  + sizeof(XLAT_STR_187)
+#  endif
+#  ifdef XLAT_STR_188
+  + sizeof(XLAT_STR_188)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
+#  undef XLAT_STR_13
+#  undef XLAT_VAL_13
+#  undef XLAT_STR_14
+#  undef XLAT_VAL_14
+#  undef XLAT_STR_15
+#  undef XLAT_VAL_15
+#  undef XLAT_STR_16
+#  undef XLAT_VAL_16
+#  undef XLAT_STR_17
+#  undef XLAT_VAL_17
+#  undef XLAT_STR_18
+#  undef XLAT_VAL_18
+#  undef XLAT_STR_19
+#  undef XLAT_VAL_19
+#  undef XLAT_STR_20
+#  undef XLAT_VAL_20
+#  undef XLAT_STR_21
+#  undef XLAT_VAL_21
+#  undef XLAT_STR_22
+#  undef XLAT_VAL_22
+#  undef XLAT_STR_23
+#  undef XLAT_VAL_23
+#  undef XLAT_STR_24
+#  undef XLAT_VAL_24
+#  undef XLAT_STR_25
+#  undef XLAT_VAL_25
+#  undef XLAT_STR_26
+#  undef XLAT_VAL_26
+#  undef XLAT_STR_27
+#  undef XLAT_VAL_27
+#  undef XLAT_STR_28
+#  undef XLAT_VAL_28
+#  undef XLAT_STR_29
+#  undef XLAT_VAL_29
+#  undef XLAT_STR_30
+#  undef XLAT_VAL_30
+#  undef XLAT_STR_31
+#  undef XLAT_VAL_31
+#  undef XLAT_STR_32
+#  undef XLAT_VAL_32
+#  undef XLAT_STR_33
+#  undef XLAT_VAL_33
+#  undef XLAT_STR_34
+#  undef XLAT_VAL_34
+#  undef XLAT_STR_35
+#  undef XLAT_VAL_35
+#  undef XLAT_STR_36
+#  undef XLAT_VAL_36
+#  undef XLAT_STR_37
+#  undef XLAT_VAL_37
+#  undef XLAT_STR_38
+#  undef XLAT_VAL_38
+#  undef XLAT_STR_39
+#  undef XLAT_VAL_39
+#  undef XLAT_STR_40
+#  undef XLAT_VAL_40
+#  undef XLAT_STR_41
+#  undef XLAT_VAL_41
+#  undef XLAT_STR_42
+#  undef XLAT_VAL_42
+#  undef XLAT_STR_43
+#  undef XLAT_VAL_43
+#  undef XLAT_STR_44
+#  undef XLAT_VAL_44
+#  undef XLAT_STR_45
+#  undef XLAT_VAL_45
+#  undef XLAT_STR_46
+#  undef XLAT_VAL_46
+#  undef XLAT_STR_47
+#  undef XLAT_VAL_47
+#  undef XLAT_STR_48
+#  undef XLAT_VAL_48
+#  undef XLAT_STR_49
+#  undef XLAT_VAL_49
+#  undef XLAT_STR_50
+#  undef XLAT_VAL_50
+#  undef XLAT_STR_51
+#  undef XLAT_VAL_51
+#  undef XLAT_STR_52
+#  undef XLAT_VAL_52
+#  undef XLAT_STR_53
+#  undef XLAT_VAL_53
+#  undef XLAT_STR_54
+#  undef XLAT_VAL_54
+#  undef XLAT_STR_55
+#  undef XLAT_VAL_55
+#  undef XLAT_STR_56
+#  undef XLAT_VAL_56
+#  undef XLAT_STR_57
+#  undef XLAT_VAL_57
+#  undef XLAT_STR_58
+#  undef XLAT_VAL_58
+#  undef XLAT_STR_59
+#  undef XLAT_VAL_59
+#  undef XLAT_STR_60
+#  undef XLAT_VAL_60
+#  undef XLAT_STR_61
+#  undef XLAT_VAL_61
+#  undef XLAT_STR_62
+#  undef XLAT_VAL_62
+#  undef XLAT_STR_63
+#  undef XLAT_VAL_63
+#  undef XLAT_STR_64
+#  undef XLAT_VAL_64
+#  undef XLAT_STR_65
+#  undef XLAT_VAL_65
+#  undef XLAT_STR_66
+#  undef XLAT_VAL_66
+#  undef XLAT_STR_67
+#  undef XLAT_VAL_67
+#  undef XLAT_STR_68
+#  undef XLAT_VAL_68
+#  undef XLAT_STR_69
+#  undef XLAT_VAL_69
+#  undef XLAT_STR_70
+#  undef XLAT_VAL_70
+#  undef XLAT_STR_71
+#  undef XLAT_VAL_71
+#  undef XLAT_STR_72
+#  undef XLAT_VAL_72
+#  undef XLAT_STR_73
+#  undef XLAT_VAL_73
+#  undef XLAT_STR_74
+#  undef XLAT_VAL_74
+#  undef XLAT_STR_75
+#  undef XLAT_VAL_75
+#  undef XLAT_STR_76
+#  undef XLAT_VAL_76
+#  undef XLAT_STR_77
+#  undef XLAT_VAL_77
+#  undef XLAT_STR_78
+#  undef XLAT_VAL_78
+#  undef XLAT_STR_79
+#  undef XLAT_VAL_79
+#  undef XLAT_STR_80
+#  undef XLAT_VAL_80
+#  undef XLAT_STR_81
+#  undef XLAT_VAL_81
+#  undef XLAT_STR_82
+#  undef XLAT_VAL_82
+#  undef XLAT_STR_83
+#  undef XLAT_VAL_83
+#  undef XLAT_STR_84
+#  undef XLAT_VAL_84
+#  undef XLAT_STR_85
+#  undef XLAT_VAL_85
+#  undef XLAT_STR_86
+#  undef XLAT_VAL_86
+#  undef XLAT_STR_87
+#  undef XLAT_VAL_87
+#  undef XLAT_STR_88
+#  undef XLAT_VAL_88
+#  undef XLAT_STR_89
+#  undef XLAT_VAL_89
+#  undef XLAT_STR_90
+#  undef XLAT_VAL_90
+#  undef XLAT_STR_91
+#  undef XLAT_VAL_91
+#  undef XLAT_STR_92
+#  undef XLAT_VAL_92
+#  undef XLAT_STR_93
+#  undef XLAT_VAL_93
+#  undef XLAT_STR_94
+#  undef XLAT_VAL_94
+#  undef XLAT_STR_95
+#  undef XLAT_VAL_95
+#  undef XLAT_STR_96
+#  undef XLAT_VAL_96
+#  undef XLAT_STR_97
+#  undef XLAT_VAL_97
+#  undef XLAT_STR_98
+#  undef XLAT_VAL_98
+#  undef XLAT_STR_99
+#  undef XLAT_VAL_99
+#  undef XLAT_STR_100
+#  undef XLAT_VAL_100
+#  undef XLAT_STR_101
+#  undef XLAT_VAL_101
+#  undef XLAT_STR_102
+#  undef XLAT_VAL_102
+#  undef XLAT_STR_103
+#  undef XLAT_VAL_103
+#  undef XLAT_STR_104
+#  undef XLAT_VAL_104
+#  undef XLAT_STR_105
+#  undef XLAT_VAL_105
+#  undef XLAT_STR_106
+#  undef XLAT_VAL_106
+#  undef XLAT_STR_107
+#  undef XLAT_VAL_107
+#  undef XLAT_STR_108
+#  undef XLAT_VAL_108
+#  undef XLAT_STR_109
+#  undef XLAT_VAL_109
+#  undef XLAT_STR_110
+#  undef XLAT_VAL_110
+#  undef XLAT_STR_111
+#  undef XLAT_VAL_111
+#  undef XLAT_STR_112
+#  undef XLAT_VAL_112
+#  undef XLAT_STR_113
+#  undef XLAT_VAL_113
+#  undef XLAT_STR_114
+#  undef XLAT_VAL_114
+#  undef XLAT_STR_115
+#  undef XLAT_VAL_115
+#  undef XLAT_STR_116
+#  undef XLAT_VAL_116
+#  undef XLAT_STR_117
+#  undef XLAT_VAL_117
+#  undef XLAT_STR_118
+#  undef XLAT_VAL_118
+#  undef XLAT_STR_119
+#  undef XLAT_VAL_119
+#  undef XLAT_STR_120
+#  undef XLAT_VAL_120
+#  undef XLAT_STR_121
+#  undef XLAT_VAL_121
+#  undef XLAT_STR_122
+#  undef XLAT_VAL_122
+#  undef XLAT_STR_123
+#  undef XLAT_VAL_123
+#  undef XLAT_STR_124
+#  undef XLAT_VAL_124
+#  undef XLAT_STR_125
+#  undef XLAT_VAL_125
+#  undef XLAT_STR_126
+#  undef XLAT_VAL_126
+#  undef XLAT_STR_127
+#  undef XLAT_VAL_127
+#  undef XLAT_STR_128
+#  undef XLAT_VAL_128
+#  undef XLAT_STR_129
+#  undef XLAT_VAL_129
+#  undef XLAT_STR_130
+#  undef XLAT_VAL_130
+#  undef XLAT_STR_131
+#  undef XLAT_VAL_131
+#  undef XLAT_STR_132
+#  undef XLAT_VAL_132
+#  undef XLAT_STR_133
+#  undef XLAT_VAL_133
+#  undef XLAT_STR_134
+#  undef XLAT_VAL_134
+#  undef XLAT_STR_135
+#  undef XLAT_VAL_135
+#  undef XLAT_STR_136
+#  undef XLAT_VAL_136
+#  undef XLAT_STR_137
+#  undef XLAT_VAL_137
+#  undef XLAT_STR_138
+#  undef XLAT_VAL_138
+#  undef XLAT_STR_139
+#  undef XLAT_VAL_139
+#  undef XLAT_STR_140
+#  undef XLAT_VAL_140
+#  undef XLAT_STR_141
+#  undef XLAT_VAL_141
+#  undef XLAT_STR_142
+#  undef XLAT_VAL_142
+#  undef XLAT_STR_143
+#  undef XLAT_VAL_143
+#  undef XLAT_STR_144
+#  undef XLAT_VAL_144
+#  undef XLAT_STR_145
+#  undef XLAT_VAL_145
+#  undef XLAT_STR_146
+#  undef XLAT_VAL_146
+#  undef XLAT_STR_147
+#  undef XLAT_VAL_147
+#  undef XLAT_STR_148
+#  undef XLAT_VAL_148
+#  undef XLAT_STR_149
+#  undef XLAT_VAL_149
+#  undef XLAT_STR_150
+#  undef XLAT_VAL_150
+#  undef XLAT_STR_151
+#  undef XLAT_VAL_151
+#  undef XLAT_STR_152
+#  undef XLAT_VAL_152
+#  undef XLAT_STR_153
+#  undef XLAT_VAL_153
+#  undef XLAT_STR_154
+#  undef XLAT_VAL_154
+#  undef XLAT_STR_155
+#  undef XLAT_VAL_155
+#  undef XLAT_STR_156
+#  undef XLAT_VAL_156
+#  undef XLAT_STR_157
+#  undef XLAT_VAL_157
+#  undef XLAT_STR_158
+#  undef XLAT_VAL_158
+#  undef XLAT_STR_159
+#  undef XLAT_VAL_159
+#  undef XLAT_STR_160
+#  undef XLAT_VAL_160
+#  undef XLAT_STR_161
+#  undef XLAT_VAL_161
+#  undef XLAT_STR_162
+#  undef XLAT_VAL_162
+#  undef XLAT_STR_163
+#  undef XLAT_VAL_163
+#  undef XLAT_STR_164
+#  undef XLAT_VAL_164
+#  undef XLAT_STR_165
+#  undef XLAT_VAL_165
+#  undef XLAT_STR_166
+#  undef XLAT_VAL_166
+#  undef XLAT_STR_167
+#  undef XLAT_VAL_167
+#  undef XLAT_STR_168
+#  undef XLAT_VAL_168
+#  undef XLAT_STR_169
+#  undef XLAT_VAL_169
+#  undef XLAT_STR_170
+#  undef XLAT_VAL_170
+#  undef XLAT_STR_171
+#  undef XLAT_VAL_171
+#  undef XLAT_STR_172
+#  undef XLAT_VAL_172
+#  undef XLAT_STR_173
+#  undef XLAT_VAL_173
+#  undef XLAT_STR_174
+#  undef XLAT_VAL_174
+#  undef XLAT_STR_175
+#  undef XLAT_VAL_175
+#  undef XLAT_STR_176
+#  undef XLAT_VAL_176
+#  undef XLAT_STR_177
+#  undef XLAT_VAL_177
+#  undef XLAT_STR_178
+#  undef XLAT_VAL_178
+#  undef XLAT_STR_179
+#  undef XLAT_VAL_179
+#  undef XLAT_STR_180
+#  undef XLAT_VAL_180
+#  undef XLAT_STR_181
+#  undef XLAT_VAL_181
+#  undef XLAT_STR_182
+#  undef XLAT_VAL_182
+#  undef XLAT_STR_183
+#  undef XLAT_VAL_183
+#  undef XLAT_STR_184
+#  undef XLAT_VAL_184
+#  undef XLAT_STR_185
+#  undef XLAT_VAL_185
+#  undef XLAT_STR_186
+#  undef XLAT_VAL_186
+#  undef XLAT_STR_187
+#  undef XLAT_VAL_187
+#  undef XLAT_STR_188
+#  undef XLAT_VAL_188
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 5ba8b4d0de1d02db997f63b1a643525c5baa96cd..006564c220e0259179368ee7f88a6908c86dde4d 100644 (file)
@@ -1,7 +1,8 @@
-/* sed -rn 's/.*v4l2_fourcc(_be)?\('"'(.)', '(.)', '(.)', '(.)'"'\).*/\10\5\4\3\2\t\0/p' |LC_COLLATE=C sort -k1,1 -t' ' |cut -f2- */
+#sorted sed -rn 's/.*v4l2_fourcc(_be)?\('"'(.)', '(.)', '(.)', '(.)'"'\).*/\10\5\4\3\2\t\0/p' |LC_COLLATE=C sort -k1,1 -t' ' |cut -f2-
 V4L2_PIX_FMT_Y10     v4l2_fourcc('Y', '1', '0', ' ') /* 10  Greyscale     */
 V4L2_PIX_FMT_Y12     v4l2_fourcc('Y', '1', '2', ' ') /* 12  Greyscale     */
 V4L2_PIX_FMT_Y4      v4l2_fourcc('Y', '0', '4', ' ') /*  4  Greyscale     */
+V4L2_PIX_FMT_Y14     v4l2_fourcc('Y', '1', '4', ' ') /* 14  Greyscale     */
 V4L2_PIX_FMT_Y6      v4l2_fourcc('Y', '0', '6', ' ') /*  6  Greyscale     */
 V4L2_PIX_FMT_Y16     v4l2_fourcc('Y', '1', '6', ' ') /* 16  Greyscale     */
 V4L2_PIX_FMT_Z16      v4l2_fourcc('Z', '1', '6', ' ') /* Depth data 16-bit */
@@ -38,7 +39,20 @@ V4L2_PIX_FMT_H264_NO_SC v4l2_fourcc('A', 'V', 'C', '1') /* H264 without start co
 V4L2_PIX_FMT_PWC1     v4l2_fourcc('P', 'W', 'C', '1') /* pwc older webcam */
 V4L2_PIX_FMT_MPEG1    v4l2_fourcc('M', 'P', 'G', '1') /* MPEG-1 ES     */
 V4L2_PIX_FMT_SGRBG12 v4l2_fourcc('B', 'A', '1', '2') /* 12  GRGR.. BGBG.. */
+#ifndef STRACE_WORKAROUND_FOR_V4L2_PIX_FMT_BGRA444
+# define STRACE_WORKAROUND_FOR_V4L2_PIX_FMT_BGRA444
+/*
+ * V4L2_PIX_FMT_BGRA444 was introduced in Linux commit v5.2-rc1~33^2~24 with
+ * the value of v4l2_fourcc('B', 'A', '1', '2') and changed in commit
+ * v5.2-rc5-403-g22be8233b34f as it clashed with V4L2_PIX_FMT_SGRBG12.
+ */
+# undef V4L2_PIX_FMT_BGRA444
+#endif
+V4L2_PIX_FMT_BGRA444 v4l2_fourcc('G', 'A', '1', '2') /* 16  bbbbgggg rrrraaaa */
+V4L2_PIX_FMT_RGBA444 v4l2_fourcc('R', 'A', '1', '2') /* 16  rrrrgggg bbbbaaaa */
+V4L2_PIX_FMT_ABGR444 v4l2_fourcc('A', 'B', '1', '2') /* 16  aaaabbbb ggggrrrr */
 V4L2_PIX_FMT_SGBRG12 v4l2_fourcc('G', 'B', '1', '2') /* 12  GBGB.. RGRG.. */
+V4L2_PIX_FMT_XBGR444 v4l2_fourcc('X', 'B', '1', '2') /* 16  xxxxbbbb ggggrrrr */
 V4L2_PIX_FMT_SBGGR12 v4l2_fourcc('B', 'G', '1', '2') /* 12  BGBG.. GRGR.. */
 V4L2_PIX_FMT_SRGGB12 v4l2_fourcc('R', 'G', '1', '2') /* 12  RGRG.. GBGB.. */
 V4L2_PIX_FMT_HM12    v4l2_fourcc('H', 'M', '1', '2') /*  8  YUV 4:2:0 16x16 macroblocks */
@@ -49,10 +63,11 @@ V4L2_PIX_FMT_YUV420M v4l2_fourcc('Y', 'M', '1', '2') /* 12  YUV420 planar */
 V4L2_PIX_FMT_ARGB444 v4l2_fourcc('A', 'R', '1', '2') /* 16  aaaarrrr ggggbbbb */
 V4L2_PIX_FMT_XRGB444 v4l2_fourcc('X', 'R', '1', '2') /* 16  xxxxrrrr ggggbbbb */
 V4L2_PIX_FMT_SUNXI_TILED_NV12 v4l2_fourcc('S', 'T', '1', '2') /* Sunxi Tiled NV12 Format */
-V4L2_PIX_FMT_CNF4 v4l2_fourcc('C', 'N', 'F', '4') /* Intel 4-bit packed depth confidence information */
 V4L2_PIX_FMT_YUV420  v4l2_fourcc('Y', 'U', '1', '2') /* 12  YUV 4:2:0     */
 V4L2_PIX_FMT_NV12    v4l2_fourcc('N', 'V', '1', '2') /* 12  Y/CbCr 4:2:0  */
 V4L2_PIX_FMT_YVU420  v4l2_fourcc('Y', 'V', '1', '2') /* 12  YVU 4:2:0     */
+V4L2_PIX_FMT_BGRX444 v4l2_fourcc('B', 'X', '1', '2') /* 16  bbbbgggg rrrrxxxx */
+V4L2_PIX_FMT_RGBX444 v4l2_fourcc('R', 'X', '1', '2') /* 16  rrrrgggg bbbbxxxx */
 V4L2_PIX_FMT_YVU444M v4l2_fourcc('Y', 'M', '4', '2') /* 24  YVU444 planar */
 V4L2_PIX_FMT_NV42    v4l2_fourcc('N', 'V', '4', '2') /* 24  Y/CrCb 4:4:4  */
 V4L2_PIX_FMT_PWC2     v4l2_fourcc('P', 'W', 'C', '2') /* pwc newer webcam */
@@ -62,29 +77,40 @@ V4L2_PIX_FMT_H263     v4l2_fourcc('H', '2', '6', '3') /* H263          */
 V4L2_PIX_FMT_RGB24   v4l2_fourcc('R', 'G', 'B', '3') /* 24  RGB-8-8-8     */
 V4L2_PIX_FMT_BGR24   v4l2_fourcc('B', 'G', 'R', '3') /* 24  BGR-8-8-8     */
 V4L2_PIX_FMT_HSV24 v4l2_fourcc('H', 'S', 'V', '3')
+V4L2_PIX_FMT_SGBRG14 v4l2_fourcc('G', 'B', '1', '4') /* 14  GBGB.. RGRG.. */
+V4L2_PIX_FMT_SBGGR14 v4l2_fourcc('B', 'G', '1', '4') /* 14  BGBG.. GRGR.. */
+V4L2_PIX_FMT_SRGGB14 v4l2_fourcc('R', 'G', '1', '4') /* 14  RGRG.. GBGB.. */
+V4L2_PIX_FMT_SGRBG14 v4l2_fourcc('G', 'R', '1', '4') /* 14  GRGR.. BGBG.. */
 V4L2_PIX_FMT_ARGB32  v4l2_fourcc('B', 'A', '2', '4') /* 32  ARGB-8-8-8-8  */
+V4L2_PIX_FMT_BGRA32  v4l2_fourcc('R', 'A', '2', '4') /* 32  ABGR-8-8-8-8  */
+V4L2_PIX_FMT_RGBA32  v4l2_fourcc('A', 'B', '2', '4') /* 32  RGBA-8-8-8-8  */
+V4L2_PIX_FMT_RGBX32  v4l2_fourcc('X', 'B', '2', '4') /* 32  RGBX-8-8-8-8  */
 V4L2_PIX_FMT_HI240   v4l2_fourcc('H', 'I', '2', '4') /*  8  8-bit color   */
 V4L2_PIX_FMT_YUV444M v4l2_fourcc('Y', 'M', '2', '4') /* 24  YUV444 planar */
 V4L2_PIX_FMT_ABGR32  v4l2_fourcc('A', 'R', '2', '4') /* 32  BGRA-8-8-8-8  */
 V4L2_PIX_FMT_XBGR32  v4l2_fourcc('X', 'R', '2', '4') /* 32  BGRX-8-8-8-8  */
 V4L2_PIX_FMT_NV24    v4l2_fourcc('N', 'V', '2', '4') /* 24  Y/CbCr 4:4:4  */
 V4L2_PIX_FMT_XRGB32  v4l2_fourcc('B', 'X', '2', '4') /* 32  XRGB-8-8-8-8  */
+V4L2_PIX_FMT_BGRX32  v4l2_fourcc('R', 'X', '2', '4') /* 32  XBGR-8-8-8-8  */
 V4L2_PIX_FMT_RGB444  v4l2_fourcc('R', '4', '4', '4') /* 16  xxxxrrrr ggggbbbb */
 V4L2_PIX_FMT_YUV444  v4l2_fourcc('Y', '4', '4', '4') /* 16  xxxxyyyy uuuuvvvv */
 V4L2_PIX_FMT_H264     v4l2_fourcc('H', '2', '6', '4') /* H264 with start codes */
 V4L2_PIX_FMT_H264_MVC v4l2_fourcc('M', '2', '6', '4') /* H264 MVC */
 V4L2_PIX_FMT_RGB32   v4l2_fourcc('R', 'G', 'B', '4') /* 32  RGB-8-8-8-8   */
+V4L2_PIX_FMT_CNF4     v4l2_fourcc('C', 'N', 'F', '4') /* Intel 4-bit packed depth confidence information */
 V4L2_PIX_FMT_MPEG4    v4l2_fourcc('M', 'P', 'G', '4') /* MPEG-4 part 2 ES */
 V4L2_PIX_FMT_BGR32   v4l2_fourcc('B', 'G', 'R', '4') /* 32  BGR-8-8-8-8   */
 V4L2_PIX_FMT_HSV32 v4l2_fourcc('H', 'S', 'V', '4')
 V4L2_PIX_FMT_YUV32   v4l2_fourcc('Y', 'U', 'V', '4') /* 32  YUV-8-8-8-8   */
-V4L2_PIX_FMT_AYUV32  v4l2_fourcc('A', 'Y', 'U', 'V') /* 32  AYUV-8-8-8-8  */
-V4L2_PIX_FMT_XYUV32  v4l2_fourcc('X', 'Y', 'U', 'V') /* 32  XYUV-8-8-8-8  */
-V4L2_PIX_FMT_VUYA32  v4l2_fourcc('V', 'U', 'Y', 'A') /* 32  VUYA-8-8-8-8  */
-V4L2_PIX_FMT_VUYX32  v4l2_fourcc('V', 'U', 'Y', 'X') /* 32  VUYX-8-8-8-8  */
 V4L2_PIX_FMT_SPCA505  v4l2_fourcc('S', '5', '0', '5') /* YYUV per line */
+V4L2_PIX_FMT_BGRA555 v4l2_fourcc('B', 'A', '1', '5') /* 16  BGRA-5-5-5-1  */
+V4L2_PIX_FMT_RGBA555 v4l2_fourcc('R', 'A', '1', '5') /* 16  RGBA-5-5-5-1  */
+V4L2_PIX_FMT_ABGR555 v4l2_fourcc('A', 'B', '1', '5') /* 16  ABGR-1-5-5-5  */
+V4L2_PIX_FMT_XBGR555 v4l2_fourcc('X', 'B', '1', '5') /* 16  XBGR-1-5-5-5  */
 V4L2_PIX_FMT_ARGB555 v4l2_fourcc('A', 'R', '1', '5') /* 16  ARGB-1-5-5-5  */
 V4L2_PIX_FMT_XRGB555 v4l2_fourcc('X', 'R', '1', '5') /* 16  XRGB-1-5-5-5  */
+V4L2_PIX_FMT_BGRX555 v4l2_fourcc('B', 'X', '1', '5') /* 16  BGRX-5-5-5-1  */
+V4L2_PIX_FMT_RGBX555 v4l2_fourcc('R', 'X', '1', '5') /* 16  RGBX-5-5-5-1  */
 V4L2_PIX_FMT_ET61X251 v4l2_fourcc('E', '6', '2', '5') /* ET61X251 compression */
 V4L2_PIX_FMT_SGBRG16 v4l2_fourcc('G', 'B', '1', '6') /* 16  GBGB.. RGRG.. */
 V4L2_PIX_FMT_SRGGB16 v4l2_fourcc('R', 'G', '1', '6') /* 16  RGRG.. GBGB.. */
@@ -111,6 +137,7 @@ V4L2_PIX_FMT_SRGGB10P v4l2_fourcc('p', 'R', 'A', 'A')
 V4L2_PIX_FMT_SGRBG10P v4l2_fourcc('p', 'g', 'A', 'A')
 V4L2_PIX_FMT_CPIA1    v4l2_fourcc('C', 'P', 'I', 'A') /* cpia1 YUV */
 V4L2_PIX_FMT_WNVA     v4l2_fourcc('W', 'N', 'V', 'A') /* Winnov hw compress */
+V4L2_PIX_FMT_VUYA32  v4l2_fourcc('V', 'U', 'Y', 'A') /* 32  VUYA-8-8-8-8  */
 V4L2_PIX_FMT_Y10BPACK    v4l2_fourcc('Y', '1', '0', 'B') /* 10  Greyscale bit-packed */
 V4L2_PIX_FMT_SRGGB8  v4l2_fourcc('R', 'G', 'G', 'B') /*  8  RGRG.. GBGB.. */
 V4L2_PIX_FMT_SQ905C   v4l2_fourcc('9', '0', '5', 'C') /* compressed RGGB bayer */
@@ -118,12 +145,12 @@ V4L2_PIX_FMT_SBGGR12P v4l2_fourcc('p', 'B', 'C', 'C')
 V4L2_PIX_FMT_SGBRG12P v4l2_fourcc('p', 'G', 'C', 'C')
 V4L2_PIX_FMT_SRGGB12P v4l2_fourcc('p', 'R', 'C', 'C')
 V4L2_PIX_FMT_SGRBG12P v4l2_fourcc('p', 'g', 'C', 'C')
-V4L2_PIX_FMT_HEVC     v4l2_fourcc('H', 'E', 'V', 'C')
+V4L2_PIX_FMT_HEVC     v4l2_fourcc('H', 'E', 'V', 'C') /* HEVC aka H.265 */
 V4L2_PIX_FMT_XVID     v4l2_fourcc('X', 'V', 'I', 'D') /* Xvid           */
 V4L2_PIX_FMT_SBGGR14P v4l2_fourcc('p', 'B', 'E', 'E')
 V4L2_PIX_FMT_SGBRG14P v4l2_fourcc('p', 'G', 'E', 'E')
-V4L2_PIX_FMT_SGRBG14P v4l2_fourcc('p', 'g', 'E', 'E')
 V4L2_PIX_FMT_SRGGB14P v4l2_fourcc('p', 'R', 'E', 'E')
+V4L2_PIX_FMT_SGRBG14P v4l2_fourcc('p', 'g', 'E', 'E')
 V4L2_PIX_FMT_VC1_ANNEX_G v4l2_fourcc('V', 'C', '1', 'G') /* SMPTE 421M Annex G compliant stream */
 V4L2_PIX_FMT_IPU3_SGRBG10 v4l2_fourcc('i', 'p', '3', 'G') /* IPU3 packed 10-bit GRBG bayer */
 V4L2_PIX_FMT_SGRBG8  v4l2_fourcc('G', 'R', 'B', 'G') /*  8  GRGR.. BGBG.. */
@@ -133,6 +160,7 @@ V4L2_PIX_FMT_MJPEG    v4l2_fourcc('M', 'J', 'P', 'G') /* Motion-JPEG   */
 V4L2_PIX_FMT_PJPG     v4l2_fourcc('P', 'J', 'P', 'G') /* Pixart 73xx JPEG */
 V4L2_PIX_FMT_SGBRG8  v4l2_fourcc('G', 'B', 'R', 'G') /*  8  GBGB.. RGRG.. */
 V4L2_PIX_FMT_BGR666  v4l2_fourcc('B', 'G', 'R', 'H') /* 18  BGR-6-6-6     */
+V4L2_PIX_FMT_FWHT_STATELESS     v4l2_fourcc('S', 'F', 'W', 'H') /* Stateless FWHT (vicodec) */
 V4L2_PIX_FMT_Y12I     v4l2_fourcc('Y', '1', '2', 'I') /* Greyscale 12-bit L/R interleaved */
 V4L2_PIX_FMT_S5C_UYVY_JPG v4l2_fourcc('S', '5', 'C', 'I') /* S5C73M3 interleaved UYVY/JPEG */
 V4L2_PIX_FMT_KONICA420  v4l2_fourcc('K', 'O', 'N', 'I') /* YUV420 planar in blocks of 256 pixels */
@@ -153,9 +181,12 @@ V4L2_PIX_FMT_MPEG2_SLICE v4l2_fourcc('M', 'G', '2', 'S') /* MPEG-2 parsed slice
 V4L2_PIX_FMT_FWHT    v4l2_fourcc('F', 'W', 'H', 'T') /* Fast Walsh Hadamard Transform (vicodec) */
 V4L2_PIX_FMT_YVYU    v4l2_fourcc('Y', 'V', 'Y', 'U') /* 16 YVU 4:2:2 */
 V4L2_PIX_FMT_CIT_YYVYUY v4l2_fourcc('C', 'I', 'T', 'V') /* one line of Y then 1 line of VYUY */
+V4L2_PIX_FMT_AYUV32  v4l2_fourcc('A', 'Y', 'U', 'V') /* 32  AYUV-8-8-8-8  */
+V4L2_PIX_FMT_XYUV32  v4l2_fourcc('X', 'Y', 'U', 'V') /* 32  XYUV-8-8-8-8  */
 V4L2_PIX_FMT_YYUV    v4l2_fourcc('Y', 'Y', 'U', 'V') /* 16  YUV 4:2:2     */
 V4L2_PIX_FMT_YUYV    v4l2_fourcc('Y', 'U', 'Y', 'V') /* 16  YUV 4:2:2     */
 V4L2_PIX_FMT_SN9C2028 v4l2_fourcc('S', 'O', 'N', 'X') /* compressed GBRG bayer */
+V4L2_PIX_FMT_VUYX32  v4l2_fourcc('V', 'U', 'Y', 'X') /* 32  VUYX-8-8-8-8  */
 V4L2_PIX_FMT_GREY    v4l2_fourcc('G', 'R', 'E', 'Y') /*  8  Greyscale     */
 V4L2_PIX_FMT_VYUY    v4l2_fourcc('V', 'Y', 'U', 'Y') /* 16  YUV 4:2:2     */
 V4L2_PIX_FMT_UYVY    v4l2_fourcc('U', 'Y', 'V', 'Y') /* 16  YUV 4:2:2     */
index a026909235f4ed804f7f600071242b82ec6c19ad..f2a276f97b9f6cef874cce09b600885a2f8f48a7 100644 (file)
@@ -68,22 +68,109 @@ extern const struct xlat v4l2_sdr_fmts[];
 
 # else
 
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat v4l2_sdr_fmts[] = {
-
+static const struct xlat_data v4l2_sdr_fmts_xdata[] = {
  XLAT(V4L2_SDR_FMT_PCU20BE),
+ #define XLAT_VAL_0 ((unsigned) (V4L2_SDR_FMT_PCU20BE))
+ #define XLAT_STR_0 STRINGIFY(V4L2_SDR_FMT_PCU20BE)
  XLAT(V4L2_SDR_FMT_RU12LE),
+ #define XLAT_VAL_1 ((unsigned) (V4L2_SDR_FMT_RU12LE))
+ #define XLAT_STR_1 STRINGIFY(V4L2_SDR_FMT_RU12LE)
  XLAT(V4L2_SDR_FMT_CS14LE),
+ #define XLAT_VAL_2 ((unsigned) (V4L2_SDR_FMT_CS14LE))
+ #define XLAT_STR_2 STRINGIFY(V4L2_SDR_FMT_CS14LE)
  XLAT(V4L2_SDR_FMT_PCU16BE),
+ #define XLAT_VAL_3 ((unsigned) (V4L2_SDR_FMT_PCU16BE))
+ #define XLAT_STR_3 STRINGIFY(V4L2_SDR_FMT_PCU16BE)
  XLAT(V4L2_SDR_FMT_CU16LE),
+ #define XLAT_VAL_4 ((unsigned) (V4L2_SDR_FMT_CU16LE))
+ #define XLAT_STR_4 STRINGIFY(V4L2_SDR_FMT_CU16LE)
  XLAT(V4L2_SDR_FMT_CS8),
+ #define XLAT_VAL_5 ((unsigned) (V4L2_SDR_FMT_CS8))
+ #define XLAT_STR_5 STRINGIFY(V4L2_SDR_FMT_CS8)
  XLAT(V4L2_SDR_FMT_CU8),
+ #define XLAT_VAL_6 ((unsigned) (V4L2_SDR_FMT_CU8))
+ #define XLAT_STR_6 STRINGIFY(V4L2_SDR_FMT_CU8)
  XLAT(V4L2_SDR_FMT_PCU18BE),
- XLAT_END
+ #define XLAT_VAL_7 ((unsigned) (V4L2_SDR_FMT_PCU18BE))
+ #define XLAT_STR_7 STRINGIFY(V4L2_SDR_FMT_PCU18BE)
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat v4l2_sdr_fmts[1] = { {
+ .data = v4l2_sdr_fmts_xdata,
+ .size = ARRAY_SIZE(v4l2_sdr_fmts_xdata),
+ .type = XT_SORTED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index e462561dc969a02d58bfeee1446cb44f67d7ea35..bd5a2482273c0e494d4f7c081f8ba3021f5df43c 100644 (file)
@@ -1,4 +1,4 @@
-/* sed -rn 's/.*v4l2_fourcc(_be)?\('"'(.)', '(.)', '(.)', '(.)'"'\).*/\10\5\4\3\2\t\0/p' |LC_COLLATE=C sort -k1,1 -t' ' |cut -f2- */
+#sorted sed -rn 's/.*v4l2_fourcc(_be)?\('"'(.)', '(.)', '(.)', '(.)'"'\).*/\10\5\4\3\2\t\0/p' |LC_COLLATE=C sort -k1,1 -t' ' |cut -f2-
 V4L2_SDR_FMT_PCU20BE      v4l2_fourcc('P', 'C', '2', '0') /* planar complex u20be */
 V4L2_SDR_FMT_RU12LE       v4l2_fourcc('R', 'U', '1', '2') /* real u12le */
 V4L2_SDR_FMT_CS14LE       v4l2_fourcc('C', 'S', '1', '4') /* complex s14le */
index 4435859467b2e7fa52d2b20f7514dd0259975309..62c29d79956115fc791dfcde1b54e153c9ae51d6 100644 (file)
@@ -3,6 +3,41 @@
 #include "gcc_compat.h"
 #include "static_assert.h"
 
+#if defined(V4L2_SLICED_VBI_625) || (defined(HAVE_DECL_V4L2_SLICED_VBI_625) && HAVE_DECL_V4L2_SLICED_VBI_625)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_SLICED_VBI_625) == ((V4L2_SLICED_TELETEXT_B | V4L2_SLICED_VPS | V4L2_SLICED_WSS_625)), "V4L2_SLICED_VBI_625 != (V4L2_SLICED_TELETEXT_B | V4L2_SLICED_VPS | V4L2_SLICED_WSS_625)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_SLICED_VBI_625 (V4L2_SLICED_TELETEXT_B | V4L2_SLICED_VPS | V4L2_SLICED_WSS_625)
+#endif
+#if defined(V4L2_SLICED_TELETEXT_B) || (defined(HAVE_DECL_V4L2_SLICED_TELETEXT_B) && HAVE_DECL_V4L2_SLICED_TELETEXT_B)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_SLICED_TELETEXT_B) == (0x0001), "V4L2_SLICED_TELETEXT_B != 0x0001");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_SLICED_TELETEXT_B 0x0001
+#endif
+#if defined(V4L2_SLICED_VPS) || (defined(HAVE_DECL_V4L2_SLICED_VPS) && HAVE_DECL_V4L2_SLICED_VPS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_SLICED_VPS) == (0x0400), "V4L2_SLICED_VPS != 0x0400");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_SLICED_VPS 0x0400
+#endif
+#if defined(V4L2_SLICED_CAPTION_525) || (defined(HAVE_DECL_V4L2_SLICED_CAPTION_525) && HAVE_DECL_V4L2_SLICED_CAPTION_525)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_SLICED_CAPTION_525) == (0x1000), "V4L2_SLICED_CAPTION_525 != 0x1000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_SLICED_CAPTION_525 0x1000
+#endif
+#if defined(V4L2_SLICED_WSS_625) || (defined(HAVE_DECL_V4L2_SLICED_WSS_625) && HAVE_DECL_V4L2_SLICED_WSS_625)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_SLICED_WSS_625) == (0x4000), "V4L2_SLICED_WSS_625 != 0x4000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_SLICED_WSS_625 0x4000
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
@@ -12,31 +47,77 @@ extern const struct xlat v4l2_sliced_flags[];
 
 # else
 
+static const struct xlat_data v4l2_sliced_flags_xdata[] = {
+ XLAT(V4L2_SLICED_VBI_625),
+ #define XLAT_VAL_0 ((unsigned) (V4L2_SLICED_VBI_625))
+ #define XLAT_STR_0 STRINGIFY(V4L2_SLICED_VBI_625)
+ XLAT(V4L2_SLICED_TELETEXT_B),
+ #define XLAT_VAL_1 ((unsigned) (V4L2_SLICED_TELETEXT_B))
+ #define XLAT_STR_1 STRINGIFY(V4L2_SLICED_TELETEXT_B)
+ XLAT(V4L2_SLICED_VPS),
+ #define XLAT_VAL_2 ((unsigned) (V4L2_SLICED_VPS))
+ #define XLAT_STR_2 STRINGIFY(V4L2_SLICED_VPS)
+ XLAT(V4L2_SLICED_CAPTION_525),
+ #define XLAT_VAL_3 ((unsigned) (V4L2_SLICED_CAPTION_525))
+ #define XLAT_STR_3 STRINGIFY(V4L2_SLICED_CAPTION_525)
+ XLAT(V4L2_SLICED_WSS_625),
+ #define XLAT_VAL_4 ((unsigned) (V4L2_SLICED_WSS_625))
+ #define XLAT_STR_4 STRINGIFY(V4L2_SLICED_WSS_625)
+
+};
 #  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
 static
 #  endif
-const struct xlat v4l2_sliced_flags[] = {
-#if defined(V4L2_SLICED_TELETEXT_B) || (defined(HAVE_DECL_V4L2_SLICED_TELETEXT_B) && HAVE_DECL_V4L2_SLICED_TELETEXT_B)
-  XLAT(V4L2_SLICED_TELETEXT_B),
-#endif
-#if defined(V4L2_SLICED_VPS) || (defined(HAVE_DECL_V4L2_SLICED_VPS) && HAVE_DECL_V4L2_SLICED_VPS)
-  XLAT(V4L2_SLICED_VPS),
-#endif
-#if defined(V4L2_SLICED_CAPTION_525) || (defined(HAVE_DECL_V4L2_SLICED_CAPTION_525) && HAVE_DECL_V4L2_SLICED_CAPTION_525)
-  XLAT(V4L2_SLICED_CAPTION_525),
-#endif
-#if defined(V4L2_SLICED_WSS_625) || (defined(HAVE_DECL_V4L2_SLICED_WSS_625) && HAVE_DECL_V4L2_SLICED_WSS_625)
-  XLAT(V4L2_SLICED_WSS_625),
-#endif
-#if defined(V4L2_SLICED_VBI_525) || (defined(HAVE_DECL_V4L2_SLICED_VBI_525) && HAVE_DECL_V4L2_SLICED_VBI_525)
-  XLAT(V4L2_SLICED_VBI_525),
-#endif
-#if defined(V4L2_SLICED_VBI_625) || (defined(HAVE_DECL_V4L2_SLICED_VBI_625) && HAVE_DECL_V4L2_SLICED_VBI_625)
-  XLAT(V4L2_SLICED_VBI_625),
-#endif
- XLAT_END
-};
+const struct xlat v4l2_sliced_flags[1] = { {
+ .data = v4l2_sliced_flags_xdata,
+ .size = ARRAY_SIZE(v4l2_sliced_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index baff2e2646617175b7178e52466eb03d43614582..6c509fa185202bcb94a926f483d8899ad6c4e4ac 100644 (file)
@@ -1,6 +1,6 @@
-V4L2_SLICED_TELETEXT_B
-V4L2_SLICED_VPS
-V4L2_SLICED_CAPTION_525
-V4L2_SLICED_WSS_625
-V4L2_SLICED_VBI_525
-V4L2_SLICED_VBI_625
+V4L2_SLICED_VBI_625    (V4L2_SLICED_TELETEXT_B | V4L2_SLICED_VPS | V4L2_SLICED_WSS_625)
+V4L2_SLICED_TELETEXT_B 0x0001
+V4L2_SLICED_VPS                0x0400
+V4L2_SLICED_CAPTION_525        0x1000
+V4L2_SLICED_WSS_625    0x4000
+/* V4L2_SLICED_VBI_525 V4L2_SLICED_CAPTION_525 */
index 479b7e242e99c826f5384a46d6e8f240cc7fd00b..44a6c73f33065b33d392c50060d286005b6b9964 100644 (file)
@@ -3,6 +3,13 @@
 #include "gcc_compat.h"
 #include "static_assert.h"
 
+#if defined(V4L2_CAP_TIMEPERFRAME) || (defined(HAVE_DECL_V4L2_CAP_TIMEPERFRAME) && HAVE_DECL_V4L2_CAP_TIMEPERFRAME)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_CAP_TIMEPERFRAME) == (0x1000), "V4L2_CAP_TIMEPERFRAME != 0x1000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_CAP_TIMEPERFRAME 0x1000
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
@@ -12,16 +19,32 @@ extern const struct xlat v4l2_streaming_capabilities[];
 
 # else
 
+static const struct xlat_data v4l2_streaming_capabilities_xdata[] = {
+ XLAT(V4L2_CAP_TIMEPERFRAME),
+ #define XLAT_VAL_0 ((unsigned) (V4L2_CAP_TIMEPERFRAME))
+ #define XLAT_STR_0 STRINGIFY(V4L2_CAP_TIMEPERFRAME)
+};
 #  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
 static
 #  endif
-const struct xlat v4l2_streaming_capabilities[] = {
-#if defined(V4L2_CAP_TIMEPERFRAME) || (defined(HAVE_DECL_V4L2_CAP_TIMEPERFRAME) && HAVE_DECL_V4L2_CAP_TIMEPERFRAME)
-  XLAT(V4L2_CAP_TIMEPERFRAME),
-#endif
- XLAT_END
-};
+const struct xlat v4l2_streaming_capabilities[1] = { {
+ .data = v4l2_streaming_capabilities_xdata,
+ .size = ARRAY_SIZE(v4l2_streaming_capabilities_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 1ae5e15585935241e3f198e4033b5b1001801456..a9d8508a742a543eb6c211a91a4179a99dfa6769 100644 (file)
@@ -1 +1 @@
-V4L2_CAP_TIMEPERFRAME
+V4L2_CAP_TIMEPERFRAME  0x1000
index 22f4b02527c8973288c256825ef2af1250d4b853..b80144f7764697624bb52e7502baeb07e4d8bc8f 100644 (file)
@@ -3,6 +3,41 @@
 #include "gcc_compat.h"
 #include "static_assert.h"
 
+#if defined(V4L2_TUNER_MODE_MONO) || (defined(HAVE_DECL_V4L2_TUNER_MODE_MONO) && HAVE_DECL_V4L2_TUNER_MODE_MONO)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_TUNER_MODE_MONO) == (0x0000), "V4L2_TUNER_MODE_MONO != 0x0000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_TUNER_MODE_MONO 0x0000
+#endif
+#if defined(V4L2_TUNER_MODE_STEREO) || (defined(HAVE_DECL_V4L2_TUNER_MODE_STEREO) && HAVE_DECL_V4L2_TUNER_MODE_STEREO)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_TUNER_MODE_STEREO) == (0x0001), "V4L2_TUNER_MODE_STEREO != 0x0001");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_TUNER_MODE_STEREO 0x0001
+#endif
+#if defined(V4L2_TUNER_MODE_LANG2) || (defined(HAVE_DECL_V4L2_TUNER_MODE_LANG2) && HAVE_DECL_V4L2_TUNER_MODE_LANG2)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_TUNER_MODE_LANG2) == (0x0002), "V4L2_TUNER_MODE_LANG2 != 0x0002");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_TUNER_MODE_LANG2 0x0002
+#endif
+#if defined(V4L2_TUNER_MODE_LANG1) || (defined(HAVE_DECL_V4L2_TUNER_MODE_LANG1) && HAVE_DECL_V4L2_TUNER_MODE_LANG1)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_TUNER_MODE_LANG1) == (0x0003), "V4L2_TUNER_MODE_LANG1 != 0x0003");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_TUNER_MODE_LANG1 0x0003
+#endif
+#if defined(V4L2_TUNER_MODE_LANG1_LANG2) || (defined(HAVE_DECL_V4L2_TUNER_MODE_LANG1_LANG2) && HAVE_DECL_V4L2_TUNER_MODE_LANG1_LANG2)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_TUNER_MODE_LANG1_LANG2) == (0x0004), "V4L2_TUNER_MODE_LANG1_LANG2 != 0x0004");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_TUNER_MODE_LANG1_LANG2 0x0004
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
@@ -12,31 +47,77 @@ extern const struct xlat v4l2_tuner_audmodes[];
 
 # else
 
+static const struct xlat_data v4l2_tuner_audmodes_xdata[] = {
+ [V4L2_TUNER_MODE_MONO] = XLAT(V4L2_TUNER_MODE_MONO),
+ #define XLAT_VAL_0 ((unsigned) (V4L2_TUNER_MODE_MONO))
+ #define XLAT_STR_0 STRINGIFY(V4L2_TUNER_MODE_MONO)
+ [V4L2_TUNER_MODE_STEREO] = XLAT(V4L2_TUNER_MODE_STEREO),
+ #define XLAT_VAL_1 ((unsigned) (V4L2_TUNER_MODE_STEREO))
+ #define XLAT_STR_1 STRINGIFY(V4L2_TUNER_MODE_STEREO)
+ [V4L2_TUNER_MODE_LANG2] = XLAT(V4L2_TUNER_MODE_LANG2),
+ #define XLAT_VAL_2 ((unsigned) (V4L2_TUNER_MODE_LANG2))
+ #define XLAT_STR_2 STRINGIFY(V4L2_TUNER_MODE_LANG2)
+
+ [V4L2_TUNER_MODE_LANG1] = XLAT(V4L2_TUNER_MODE_LANG1),
+ #define XLAT_VAL_3 ((unsigned) (V4L2_TUNER_MODE_LANG1))
+ #define XLAT_STR_3 STRINGIFY(V4L2_TUNER_MODE_LANG1)
+ [V4L2_TUNER_MODE_LANG1_LANG2] = XLAT(V4L2_TUNER_MODE_LANG1_LANG2),
+ #define XLAT_VAL_4 ((unsigned) (V4L2_TUNER_MODE_LANG1_LANG2))
+ #define XLAT_STR_4 STRINGIFY(V4L2_TUNER_MODE_LANG1_LANG2)
+};
 #  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
 static
 #  endif
-const struct xlat v4l2_tuner_audmodes[] = {
-#if defined(V4L2_TUNER_MODE_MONO) || (defined(HAVE_DECL_V4L2_TUNER_MODE_MONO) && HAVE_DECL_V4L2_TUNER_MODE_MONO)
-  XLAT(V4L2_TUNER_MODE_MONO),
-#endif
-#if defined(V4L2_TUNER_MODE_STEREO) || (defined(HAVE_DECL_V4L2_TUNER_MODE_STEREO) && HAVE_DECL_V4L2_TUNER_MODE_STEREO)
-  XLAT(V4L2_TUNER_MODE_STEREO),
-#endif
-#if defined(V4L2_TUNER_MODE_LANG2) || (defined(HAVE_DECL_V4L2_TUNER_MODE_LANG2) && HAVE_DECL_V4L2_TUNER_MODE_LANG2)
-  XLAT(V4L2_TUNER_MODE_LANG2),
-#endif
-#if defined(V4L2_TUNER_MODE_SAP) || (defined(HAVE_DECL_V4L2_TUNER_MODE_SAP) && HAVE_DECL_V4L2_TUNER_MODE_SAP)
-  XLAT(V4L2_TUNER_MODE_SAP),
-#endif
-#if defined(V4L2_TUNER_MODE_LANG1) || (defined(HAVE_DECL_V4L2_TUNER_MODE_LANG1) && HAVE_DECL_V4L2_TUNER_MODE_LANG1)
-  XLAT(V4L2_TUNER_MODE_LANG1),
-#endif
-#if defined(V4L2_TUNER_MODE_LANG1_LANG2) || (defined(HAVE_DECL_V4L2_TUNER_MODE_LANG1_LANG2) && HAVE_DECL_V4L2_TUNER_MODE_LANG1_LANG2)
-  XLAT(V4L2_TUNER_MODE_LANG1_LANG2),
-#endif
- XLAT_END
-};
+const struct xlat v4l2_tuner_audmodes[1] = { {
+ .data = v4l2_tuner_audmodes_xdata,
+ .size = ARRAY_SIZE(v4l2_tuner_audmodes_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 82decabf02b71ca8a0df6048e9611da4321d0fa7..cfa308e7e895e3d61c980be89a75559fcdafc034 100644 (file)
@@ -1,6 +1,7 @@
-V4L2_TUNER_MODE_MONO
-V4L2_TUNER_MODE_STEREO
-V4L2_TUNER_MODE_LANG2
-V4L2_TUNER_MODE_SAP
-V4L2_TUNER_MODE_LANG1
-V4L2_TUNER_MODE_LANG1_LANG2
+#value_indexed
+V4L2_TUNER_MODE_MONO           0x0000
+V4L2_TUNER_MODE_STEREO         0x0001
+V4L2_TUNER_MODE_LANG2          0x0002
+/* V4L2_TUNER_MODE_SAP         0x0002 */
+V4L2_TUNER_MODE_LANG1          0x0003
+V4L2_TUNER_MODE_LANG1_LANG2    0x0004
index 2471bd116a90c5fae7612a01400aa7ea07e926b5..d2f399e75f511ee9113a9bda74b5a06b3db229a4 100644 (file)
 #include "gcc_compat.h"
 #include "static_assert.h"
 
-
-#ifndef XLAT_MACROS_ONLY
-
-# ifdef IN_MPERS
-
-extern const struct xlat v4l2_tuner_capabilities[];
-
-# else
-
-#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
-static
-#  endif
-const struct xlat v4l2_tuner_capabilities[] = {
 #if defined(V4L2_TUNER_CAP_LOW) || (defined(HAVE_DECL_V4L2_TUNER_CAP_LOW) && HAVE_DECL_V4L2_TUNER_CAP_LOW)
-  XLAT(V4L2_TUNER_CAP_LOW),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_TUNER_CAP_LOW) == (0x0001), "V4L2_TUNER_CAP_LOW != 0x0001");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_TUNER_CAP_LOW 0x0001
 #endif
 #if defined(V4L2_TUNER_CAP_NORM) || (defined(HAVE_DECL_V4L2_TUNER_CAP_NORM) && HAVE_DECL_V4L2_TUNER_CAP_NORM)
-  XLAT(V4L2_TUNER_CAP_NORM),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_TUNER_CAP_NORM) == (0x0002), "V4L2_TUNER_CAP_NORM != 0x0002");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_TUNER_CAP_NORM 0x0002
 #endif
 #if defined(V4L2_TUNER_CAP_HWSEEK_BOUNDED) || (defined(HAVE_DECL_V4L2_TUNER_CAP_HWSEEK_BOUNDED) && HAVE_DECL_V4L2_TUNER_CAP_HWSEEK_BOUNDED)
-  XLAT(V4L2_TUNER_CAP_HWSEEK_BOUNDED),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_TUNER_CAP_HWSEEK_BOUNDED) == (0x0004), "V4L2_TUNER_CAP_HWSEEK_BOUNDED != 0x0004");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_TUNER_CAP_HWSEEK_BOUNDED 0x0004
 #endif
 #if defined(V4L2_TUNER_CAP_HWSEEK_WRAP) || (defined(HAVE_DECL_V4L2_TUNER_CAP_HWSEEK_WRAP) && HAVE_DECL_V4L2_TUNER_CAP_HWSEEK_WRAP)
-  XLAT(V4L2_TUNER_CAP_HWSEEK_WRAP),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_TUNER_CAP_HWSEEK_WRAP) == (0x0008), "V4L2_TUNER_CAP_HWSEEK_WRAP != 0x0008");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_TUNER_CAP_HWSEEK_WRAP 0x0008
 #endif
 #if defined(V4L2_TUNER_CAP_STEREO) || (defined(HAVE_DECL_V4L2_TUNER_CAP_STEREO) && HAVE_DECL_V4L2_TUNER_CAP_STEREO)
-  XLAT(V4L2_TUNER_CAP_STEREO),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_TUNER_CAP_STEREO) == (0x0010), "V4L2_TUNER_CAP_STEREO != 0x0010");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_TUNER_CAP_STEREO 0x0010
 #endif
 #if defined(V4L2_TUNER_CAP_LANG2) || (defined(HAVE_DECL_V4L2_TUNER_CAP_LANG2) && HAVE_DECL_V4L2_TUNER_CAP_LANG2)
-  XLAT(V4L2_TUNER_CAP_LANG2),
-#endif
-#if defined(V4L2_TUNER_CAP_SAP) || (defined(HAVE_DECL_V4L2_TUNER_CAP_SAP) && HAVE_DECL_V4L2_TUNER_CAP_SAP)
-  XLAT(V4L2_TUNER_CAP_SAP),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_TUNER_CAP_LANG2) == (0x0020), "V4L2_TUNER_CAP_LANG2 != 0x0020");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_TUNER_CAP_LANG2 0x0020
 #endif
 #if defined(V4L2_TUNER_CAP_LANG1) || (defined(HAVE_DECL_V4L2_TUNER_CAP_LANG1) && HAVE_DECL_V4L2_TUNER_CAP_LANG1)
-  XLAT(V4L2_TUNER_CAP_LANG1),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_TUNER_CAP_LANG1) == (0x0040), "V4L2_TUNER_CAP_LANG1 != 0x0040");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_TUNER_CAP_LANG1 0x0040
 #endif
 #if defined(V4L2_TUNER_CAP_RDS) || (defined(HAVE_DECL_V4L2_TUNER_CAP_RDS) && HAVE_DECL_V4L2_TUNER_CAP_RDS)
-  XLAT(V4L2_TUNER_CAP_RDS),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_TUNER_CAP_RDS) == (0x0080), "V4L2_TUNER_CAP_RDS != 0x0080");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_TUNER_CAP_RDS 0x0080
 #endif
 #if defined(V4L2_TUNER_CAP_RDS_BLOCK_IO) || (defined(HAVE_DECL_V4L2_TUNER_CAP_RDS_BLOCK_IO) && HAVE_DECL_V4L2_TUNER_CAP_RDS_BLOCK_IO)
-  XLAT(V4L2_TUNER_CAP_RDS_BLOCK_IO),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_TUNER_CAP_RDS_BLOCK_IO) == (0x0100), "V4L2_TUNER_CAP_RDS_BLOCK_IO != 0x0100");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_TUNER_CAP_RDS_BLOCK_IO 0x0100
 #endif
 #if defined(V4L2_TUNER_CAP_RDS_CONTROLS) || (defined(HAVE_DECL_V4L2_TUNER_CAP_RDS_CONTROLS) && HAVE_DECL_V4L2_TUNER_CAP_RDS_CONTROLS)
-  XLAT(V4L2_TUNER_CAP_RDS_CONTROLS),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_TUNER_CAP_RDS_CONTROLS) == (0x0200), "V4L2_TUNER_CAP_RDS_CONTROLS != 0x0200");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_TUNER_CAP_RDS_CONTROLS 0x0200
 #endif
 #if defined(V4L2_TUNER_CAP_FREQ_BANDS) || (defined(HAVE_DECL_V4L2_TUNER_CAP_FREQ_BANDS) && HAVE_DECL_V4L2_TUNER_CAP_FREQ_BANDS)
-  XLAT(V4L2_TUNER_CAP_FREQ_BANDS),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_TUNER_CAP_FREQ_BANDS) == (0x0400), "V4L2_TUNER_CAP_FREQ_BANDS != 0x0400");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_TUNER_CAP_FREQ_BANDS 0x0400
 #endif
 #if defined(V4L2_TUNER_CAP_HWSEEK_PROG_LIM) || (defined(HAVE_DECL_V4L2_TUNER_CAP_HWSEEK_PROG_LIM) && HAVE_DECL_V4L2_TUNER_CAP_HWSEEK_PROG_LIM)
-  XLAT(V4L2_TUNER_CAP_HWSEEK_PROG_LIM),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_TUNER_CAP_HWSEEK_PROG_LIM) == (0x0800), "V4L2_TUNER_CAP_HWSEEK_PROG_LIM != 0x0800");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_TUNER_CAP_HWSEEK_PROG_LIM 0x0800
 #endif
 #if defined(V4L2_TUNER_CAP_1HZ) || (defined(HAVE_DECL_V4L2_TUNER_CAP_1HZ) && HAVE_DECL_V4L2_TUNER_CAP_1HZ)
-  XLAT(V4L2_TUNER_CAP_1HZ),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_TUNER_CAP_1HZ) == (0x1000), "V4L2_TUNER_CAP_1HZ != 0x1000");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_TUNER_CAP_1HZ 0x1000
 #endif
- XLAT_END
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+extern const struct xlat v4l2_tuner_capabilities[];
+
+# else
+
+static const struct xlat_data v4l2_tuner_capabilities_xdata[] = {
+ XLAT(V4L2_TUNER_CAP_LOW),
+ #define XLAT_VAL_0 ((unsigned) (V4L2_TUNER_CAP_LOW))
+ #define XLAT_STR_0 STRINGIFY(V4L2_TUNER_CAP_LOW)
+ XLAT(V4L2_TUNER_CAP_NORM),
+ #define XLAT_VAL_1 ((unsigned) (V4L2_TUNER_CAP_NORM))
+ #define XLAT_STR_1 STRINGIFY(V4L2_TUNER_CAP_NORM)
+ XLAT(V4L2_TUNER_CAP_HWSEEK_BOUNDED),
+ #define XLAT_VAL_2 ((unsigned) (V4L2_TUNER_CAP_HWSEEK_BOUNDED))
+ #define XLAT_STR_2 STRINGIFY(V4L2_TUNER_CAP_HWSEEK_BOUNDED)
+ XLAT(V4L2_TUNER_CAP_HWSEEK_WRAP),
+ #define XLAT_VAL_3 ((unsigned) (V4L2_TUNER_CAP_HWSEEK_WRAP))
+ #define XLAT_STR_3 STRINGIFY(V4L2_TUNER_CAP_HWSEEK_WRAP)
+ XLAT(V4L2_TUNER_CAP_STEREO),
+ #define XLAT_VAL_4 ((unsigned) (V4L2_TUNER_CAP_STEREO))
+ #define XLAT_STR_4 STRINGIFY(V4L2_TUNER_CAP_STEREO)
+ XLAT(V4L2_TUNER_CAP_LANG2),
+ #define XLAT_VAL_5 ((unsigned) (V4L2_TUNER_CAP_LANG2))
+ #define XLAT_STR_5 STRINGIFY(V4L2_TUNER_CAP_LANG2)
+
+ XLAT(V4L2_TUNER_CAP_LANG1),
+ #define XLAT_VAL_6 ((unsigned) (V4L2_TUNER_CAP_LANG1))
+ #define XLAT_STR_6 STRINGIFY(V4L2_TUNER_CAP_LANG1)
+ XLAT(V4L2_TUNER_CAP_RDS),
+ #define XLAT_VAL_7 ((unsigned) (V4L2_TUNER_CAP_RDS))
+ #define XLAT_STR_7 STRINGIFY(V4L2_TUNER_CAP_RDS)
+ XLAT(V4L2_TUNER_CAP_RDS_BLOCK_IO),
+ #define XLAT_VAL_8 ((unsigned) (V4L2_TUNER_CAP_RDS_BLOCK_IO))
+ #define XLAT_STR_8 STRINGIFY(V4L2_TUNER_CAP_RDS_BLOCK_IO)
+ XLAT(V4L2_TUNER_CAP_RDS_CONTROLS),
+ #define XLAT_VAL_9 ((unsigned) (V4L2_TUNER_CAP_RDS_CONTROLS))
+ #define XLAT_STR_9 STRINGIFY(V4L2_TUNER_CAP_RDS_CONTROLS)
+ XLAT(V4L2_TUNER_CAP_FREQ_BANDS),
+ #define XLAT_VAL_10 ((unsigned) (V4L2_TUNER_CAP_FREQ_BANDS))
+ #define XLAT_STR_10 STRINGIFY(V4L2_TUNER_CAP_FREQ_BANDS)
+ XLAT(V4L2_TUNER_CAP_HWSEEK_PROG_LIM),
+ #define XLAT_VAL_11 ((unsigned) (V4L2_TUNER_CAP_HWSEEK_PROG_LIM))
+ #define XLAT_STR_11 STRINGIFY(V4L2_TUNER_CAP_HWSEEK_PROG_LIM)
+ XLAT(V4L2_TUNER_CAP_1HZ),
+ #define XLAT_VAL_12 ((unsigned) (V4L2_TUNER_CAP_1HZ))
+ #define XLAT_STR_12 STRINGIFY(V4L2_TUNER_CAP_1HZ)
 };
+#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+#  endif
+const struct xlat v4l2_tuner_capabilities[1] = { {
+ .data = v4l2_tuner_capabilities_xdata,
+ .size = ARRAY_SIZE(v4l2_tuner_capabilities_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+#  ifdef XLAT_VAL_10
+  | XLAT_VAL_10
+#  endif
+#  ifdef XLAT_VAL_11
+  | XLAT_VAL_11
+#  endif
+#  ifdef XLAT_VAL_12
+  | XLAT_VAL_12
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+#  ifdef XLAT_STR_10
+  + sizeof(XLAT_STR_10)
+#  endif
+#  ifdef XLAT_STR_11
+  + sizeof(XLAT_STR_11)
+#  endif
+#  ifdef XLAT_STR_12
+  + sizeof(XLAT_STR_12)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+#  undef XLAT_STR_10
+#  undef XLAT_VAL_10
+#  undef XLAT_STR_11
+#  undef XLAT_VAL_11
+#  undef XLAT_STR_12
+#  undef XLAT_VAL_12
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 4aec41eb65b8aa6518740c03cdb04239d795e1a5..60ed20a098cf1655d4eb289adca526dfc9b622fb 100644 (file)
@@ -1,14 +1,14 @@
-V4L2_TUNER_CAP_LOW
-V4L2_TUNER_CAP_NORM
-V4L2_TUNER_CAP_HWSEEK_BOUNDED
-V4L2_TUNER_CAP_HWSEEK_WRAP
-V4L2_TUNER_CAP_STEREO
-V4L2_TUNER_CAP_LANG2
-V4L2_TUNER_CAP_SAP
-V4L2_TUNER_CAP_LANG1
-V4L2_TUNER_CAP_RDS
-V4L2_TUNER_CAP_RDS_BLOCK_IO
-V4L2_TUNER_CAP_RDS_CONTROLS
-V4L2_TUNER_CAP_FREQ_BANDS
-V4L2_TUNER_CAP_HWSEEK_PROG_LIM
-V4L2_TUNER_CAP_1HZ
+V4L2_TUNER_CAP_LOW             0x0001
+V4L2_TUNER_CAP_NORM            0x0002
+V4L2_TUNER_CAP_HWSEEK_BOUNDED  0x0004
+V4L2_TUNER_CAP_HWSEEK_WRAP     0x0008
+V4L2_TUNER_CAP_STEREO          0x0010
+V4L2_TUNER_CAP_LANG2           0x0020
+/* V4L2_TUNER_CAP_SAP          0x0020 */
+V4L2_TUNER_CAP_LANG1           0x0040
+V4L2_TUNER_CAP_RDS             0x0080
+V4L2_TUNER_CAP_RDS_BLOCK_IO    0x0100
+V4L2_TUNER_CAP_RDS_CONTROLS    0x0200
+V4L2_TUNER_CAP_FREQ_BANDS      0x0400
+V4L2_TUNER_CAP_HWSEEK_PROG_LIM 0x0800
+V4L2_TUNER_CAP_1HZ             0x1000
index 5be87805fd418207d9ec375877fbd01e43226388..06622006848d4aca45cb40771adcc411b9cb39ee 100644 (file)
@@ -3,6 +3,41 @@
 #include "gcc_compat.h"
 #include "static_assert.h"
 
+#if defined(V4L2_TUNER_SUB_MONO) || (defined(HAVE_DECL_V4L2_TUNER_SUB_MONO) && HAVE_DECL_V4L2_TUNER_SUB_MONO)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_TUNER_SUB_MONO) == (0x0001), "V4L2_TUNER_SUB_MONO != 0x0001");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_TUNER_SUB_MONO 0x0001
+#endif
+#if defined(V4L2_TUNER_SUB_STEREO) || (defined(HAVE_DECL_V4L2_TUNER_SUB_STEREO) && HAVE_DECL_V4L2_TUNER_SUB_STEREO)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_TUNER_SUB_STEREO) == (0x0002), "V4L2_TUNER_SUB_STEREO != 0x0002");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_TUNER_SUB_STEREO 0x0002
+#endif
+#if defined(V4L2_TUNER_SUB_LANG2) || (defined(HAVE_DECL_V4L2_TUNER_SUB_LANG2) && HAVE_DECL_V4L2_TUNER_SUB_LANG2)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_TUNER_SUB_LANG2) == (0x0004), "V4L2_TUNER_SUB_LANG2 != 0x0004");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_TUNER_SUB_LANG2 0x0004
+#endif
+#if defined(V4L2_TUNER_SUB_LANG1) || (defined(HAVE_DECL_V4L2_TUNER_SUB_LANG1) && HAVE_DECL_V4L2_TUNER_SUB_LANG1)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_TUNER_SUB_LANG1) == (0x0008), "V4L2_TUNER_SUB_LANG1 != 0x0008");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_TUNER_SUB_LANG1 0x0008
+#endif
+#if defined(V4L2_TUNER_SUB_RDS) || (defined(HAVE_DECL_V4L2_TUNER_SUB_RDS) && HAVE_DECL_V4L2_TUNER_SUB_RDS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_TUNER_SUB_RDS) == (0x0010), "V4L2_TUNER_SUB_RDS != 0x0010");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_TUNER_SUB_RDS 0x0010
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
@@ -12,31 +47,77 @@ extern const struct xlat v4l2_tuner_rxsubchanses[];
 
 # else
 
+static const struct xlat_data v4l2_tuner_rxsubchanses_xdata[] = {
+ XLAT(V4L2_TUNER_SUB_MONO),
+ #define XLAT_VAL_0 ((unsigned) (V4L2_TUNER_SUB_MONO))
+ #define XLAT_STR_0 STRINGIFY(V4L2_TUNER_SUB_MONO)
+ XLAT(V4L2_TUNER_SUB_STEREO),
+ #define XLAT_VAL_1 ((unsigned) (V4L2_TUNER_SUB_STEREO))
+ #define XLAT_STR_1 STRINGIFY(V4L2_TUNER_SUB_STEREO)
+ XLAT(V4L2_TUNER_SUB_LANG2),
+ #define XLAT_VAL_2 ((unsigned) (V4L2_TUNER_SUB_LANG2))
+ #define XLAT_STR_2 STRINGIFY(V4L2_TUNER_SUB_LANG2)
+
+ XLAT(V4L2_TUNER_SUB_LANG1),
+ #define XLAT_VAL_3 ((unsigned) (V4L2_TUNER_SUB_LANG1))
+ #define XLAT_STR_3 STRINGIFY(V4L2_TUNER_SUB_LANG1)
+ XLAT(V4L2_TUNER_SUB_RDS),
+ #define XLAT_VAL_4 ((unsigned) (V4L2_TUNER_SUB_RDS))
+ #define XLAT_STR_4 STRINGIFY(V4L2_TUNER_SUB_RDS)
+};
 #  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
 static
 #  endif
-const struct xlat v4l2_tuner_rxsubchanses[] = {
-#if defined(V4L2_TUNER_SUB_MONO) || (defined(HAVE_DECL_V4L2_TUNER_SUB_MONO) && HAVE_DECL_V4L2_TUNER_SUB_MONO)
-  XLAT(V4L2_TUNER_SUB_MONO),
-#endif
-#if defined(V4L2_TUNER_SUB_STEREO) || (defined(HAVE_DECL_V4L2_TUNER_SUB_STEREO) && HAVE_DECL_V4L2_TUNER_SUB_STEREO)
-  XLAT(V4L2_TUNER_SUB_STEREO),
-#endif
-#if defined(V4L2_TUNER_SUB_LANG2) || (defined(HAVE_DECL_V4L2_TUNER_SUB_LANG2) && HAVE_DECL_V4L2_TUNER_SUB_LANG2)
-  XLAT(V4L2_TUNER_SUB_LANG2),
-#endif
-#if defined(V4L2_TUNER_SUB_SAP) || (defined(HAVE_DECL_V4L2_TUNER_SUB_SAP) && HAVE_DECL_V4L2_TUNER_SUB_SAP)
-  XLAT(V4L2_TUNER_SUB_SAP),
-#endif
-#if defined(V4L2_TUNER_SUB_LANG1) || (defined(HAVE_DECL_V4L2_TUNER_SUB_LANG1) && HAVE_DECL_V4L2_TUNER_SUB_LANG1)
-  XLAT(V4L2_TUNER_SUB_LANG1),
-#endif
-#if defined(V4L2_TUNER_SUB_RDS) || (defined(HAVE_DECL_V4L2_TUNER_SUB_RDS) && HAVE_DECL_V4L2_TUNER_SUB_RDS)
-  XLAT(V4L2_TUNER_SUB_RDS),
-#endif
- XLAT_END
-};
+const struct xlat v4l2_tuner_rxsubchanses[1] = { {
+ .data = v4l2_tuner_rxsubchanses_xdata,
+ .size = ARRAY_SIZE(v4l2_tuner_rxsubchanses_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index c6d59e95466cc7d6710c2b50d974a648310c2d65..578309caed5abff54286cebf158b50902e1cb536 100644 (file)
@@ -1,6 +1,6 @@
-V4L2_TUNER_SUB_MONO
-V4L2_TUNER_SUB_STEREO
-V4L2_TUNER_SUB_LANG2
-V4L2_TUNER_SUB_SAP
-V4L2_TUNER_SUB_LANG1
-V4L2_TUNER_SUB_RDS
+V4L2_TUNER_SUB_MONO    0x0001
+V4L2_TUNER_SUB_STEREO  0x0002
+V4L2_TUNER_SUB_LANG2   0x0004
+/* V4L2_TUNER_SUB_SAP  0x0004 */
+V4L2_TUNER_SUB_LANG1   0x0008
+V4L2_TUNER_SUB_RDS     0x0010
index 73f66892cd72d2893fca5408bd50d6881e04caa4..d1a7179448f9d309275e68769c96c5666bc9b9ef 100644 (file)
@@ -3,6 +3,41 @@
 #include "gcc_compat.h"
 #include "static_assert.h"
 
+#if defined(V4L2_TUNER_RADIO) || (defined(HAVE_DECL_V4L2_TUNER_RADIO) && HAVE_DECL_V4L2_TUNER_RADIO)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_TUNER_RADIO) == (1), "V4L2_TUNER_RADIO != 1");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_TUNER_RADIO 1
+#endif
+#if defined(V4L2_TUNER_ANALOG_TV) || (defined(HAVE_DECL_V4L2_TUNER_ANALOG_TV) && HAVE_DECL_V4L2_TUNER_ANALOG_TV)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_TUNER_ANALOG_TV) == (2), "V4L2_TUNER_ANALOG_TV != 2");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_TUNER_ANALOG_TV 2
+#endif
+#if defined(V4L2_TUNER_DIGITAL_TV) || (defined(HAVE_DECL_V4L2_TUNER_DIGITAL_TV) && HAVE_DECL_V4L2_TUNER_DIGITAL_TV)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_TUNER_DIGITAL_TV) == (3), "V4L2_TUNER_DIGITAL_TV != 3");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_TUNER_DIGITAL_TV 3
+#endif
+#if defined(V4L2_TUNER_SDR) || (defined(HAVE_DECL_V4L2_TUNER_SDR) && HAVE_DECL_V4L2_TUNER_SDR)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_TUNER_SDR) == (4), "V4L2_TUNER_SDR != 4");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_TUNER_SDR 4
+#endif
+#if defined(V4L2_TUNER_RF) || (defined(HAVE_DECL_V4L2_TUNER_RF) && HAVE_DECL_V4L2_TUNER_RF)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_TUNER_RF) == (5), "V4L2_TUNER_RF != 5");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_TUNER_RF 5
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
@@ -12,31 +47,76 @@ extern const struct xlat v4l2_tuner_types[];
 
 # else
 
+static const struct xlat_data v4l2_tuner_types_xdata[] = {
+ [V4L2_TUNER_RADIO] = XLAT(V4L2_TUNER_RADIO),
+ #define XLAT_VAL_0 ((unsigned) (V4L2_TUNER_RADIO))
+ #define XLAT_STR_0 STRINGIFY(V4L2_TUNER_RADIO)
+ [V4L2_TUNER_ANALOG_TV] = XLAT(V4L2_TUNER_ANALOG_TV),
+ #define XLAT_VAL_1 ((unsigned) (V4L2_TUNER_ANALOG_TV))
+ #define XLAT_STR_1 STRINGIFY(V4L2_TUNER_ANALOG_TV)
+ [V4L2_TUNER_DIGITAL_TV] = XLAT(V4L2_TUNER_DIGITAL_TV),
+ #define XLAT_VAL_2 ((unsigned) (V4L2_TUNER_DIGITAL_TV))
+ #define XLAT_STR_2 STRINGIFY(V4L2_TUNER_DIGITAL_TV)
+ [V4L2_TUNER_SDR] = XLAT(V4L2_TUNER_SDR),
+ #define XLAT_VAL_3 ((unsigned) (V4L2_TUNER_SDR))
+ #define XLAT_STR_3 STRINGIFY(V4L2_TUNER_SDR)
+ [V4L2_TUNER_RF] = XLAT(V4L2_TUNER_RF),
+ #define XLAT_VAL_4 ((unsigned) (V4L2_TUNER_RF))
+ #define XLAT_STR_4 STRINGIFY(V4L2_TUNER_RF)
+};
 #  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
 static
 #  endif
-const struct xlat v4l2_tuner_types[] = {
-#if defined(V4L2_TUNER_RADIO) || (defined(HAVE_DECL_V4L2_TUNER_RADIO) && HAVE_DECL_V4L2_TUNER_RADIO)
-  XLAT(V4L2_TUNER_RADIO),
-#endif
-#if defined(V4L2_TUNER_ANALOG_TV) || (defined(HAVE_DECL_V4L2_TUNER_ANALOG_TV) && HAVE_DECL_V4L2_TUNER_ANALOG_TV)
-  XLAT(V4L2_TUNER_ANALOG_TV),
-#endif
-#if defined(V4L2_TUNER_DIGITAL_TV) || (defined(HAVE_DECL_V4L2_TUNER_DIGITAL_TV) && HAVE_DECL_V4L2_TUNER_DIGITAL_TV)
-  XLAT(V4L2_TUNER_DIGITAL_TV),
-#endif
-#if defined(V4L2_TUNER_ADC) || (defined(HAVE_DECL_V4L2_TUNER_ADC) && HAVE_DECL_V4L2_TUNER_ADC)
-  XLAT(V4L2_TUNER_ADC),
-#endif
-#if defined(V4L2_TUNER_SDR) || (defined(HAVE_DECL_V4L2_TUNER_SDR) && HAVE_DECL_V4L2_TUNER_SDR)
-  XLAT(V4L2_TUNER_SDR),
-#endif
-#if defined(V4L2_TUNER_RF) || (defined(HAVE_DECL_V4L2_TUNER_RF) && HAVE_DECL_V4L2_TUNER_RF)
-  XLAT(V4L2_TUNER_RF),
-#endif
- XLAT_END
-};
+const struct xlat v4l2_tuner_types[1] = { {
+ .data = v4l2_tuner_types_xdata,
+ .size = ARRAY_SIZE(v4l2_tuner_types_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 59a9f3a3f1d17010a80be50a10f7a271c1e9f017..22e1b2318daae6ae4119a44bfb021802bd855d15 100644 (file)
@@ -1,6 +1,11 @@
-V4L2_TUNER_RADIO
-V4L2_TUNER_ANALOG_TV
-V4L2_TUNER_DIGITAL_TV
-V4L2_TUNER_ADC
-V4L2_TUNER_SDR
-V4L2_TUNER_RF
+#value_indexed
+#enum
+#include <sys/time.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+V4L2_TUNER_RADIO       1
+V4L2_TUNER_ANALOG_TV   2
+V4L2_TUNER_DIGITAL_TV  3
+V4L2_TUNER_SDR         4
+V4L2_TUNER_RF          5
diff --git a/xlat/v4l2_tuner_types.m4 b/xlat/v4l2_tuner_types.m4
new file mode 100644 (file)
index 0000000..f728900
--- /dev/null
@@ -0,0 +1,14 @@
+dnl Generated by ./xlat/gen.sh from ./xlat/v4l2_tuner_types.in; do not edit.
+AC_DEFUN([st_CHECK_ENUMS_v4l2_tuner_types],[
+AC_CHECK_DECLS(m4_normalize([
+V4L2_TUNER_RADIO,
+V4L2_TUNER_ANALOG_TV,
+V4L2_TUNER_DIGITAL_TV,
+V4L2_TUNER_SDR,
+V4L2_TUNER_RF
+]),,, [
+#include <sys/time.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+])])])
index bba758de435b9a04a9da8e2757dd4f6e0ce1f943..400c19d658688b939d7b03dc37b5d2afb02d13cf 100644 (file)
@@ -3,6 +3,20 @@
 #include "gcc_compat.h"
 #include "static_assert.h"
 
+#if defined(V4L2_VBI_UNSYNC) || (defined(HAVE_DECL_V4L2_VBI_UNSYNC) && HAVE_DECL_V4L2_VBI_UNSYNC)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_VBI_UNSYNC) == ((1 << 0)), "V4L2_VBI_UNSYNC != (1 << 0)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_VBI_UNSYNC (1 << 0)
+#endif
+#if defined(V4L2_VBI_INTERLACED) || (defined(HAVE_DECL_V4L2_VBI_INTERLACED) && HAVE_DECL_V4L2_VBI_INTERLACED)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((V4L2_VBI_INTERLACED) == ((1 << 1)), "V4L2_VBI_INTERLACED != (1 << 1)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define V4L2_VBI_INTERLACED (1 << 1)
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
@@ -12,31 +26,43 @@ extern const struct xlat v4l2_vbi_flags[];
 
 # else
 
+static const struct xlat_data v4l2_vbi_flags_xdata[] = {
+ XLAT(V4L2_VBI_UNSYNC),
+ #define XLAT_VAL_0 ((unsigned) (V4L2_VBI_UNSYNC))
+ #define XLAT_STR_0 STRINGIFY(V4L2_VBI_UNSYNC)
+ XLAT(V4L2_VBI_INTERLACED),
+ #define XLAT_VAL_1 ((unsigned) (V4L2_VBI_INTERLACED))
+ #define XLAT_STR_1 STRINGIFY(V4L2_VBI_INTERLACED)
+};
 #  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
 static
 #  endif
-const struct xlat v4l2_vbi_flags[] = {
-#if defined(V4L2_VBI_UNSYNC) || (defined(HAVE_DECL_V4L2_VBI_UNSYNC) && HAVE_DECL_V4L2_VBI_UNSYNC)
 XLAT(V4L2_VBI_UNSYNC),
-#endif
-#if defined(V4L2_VBI_INTERLACED) || (defined(HAVE_DECL_V4L2_VBI_INTERLACED) && HAVE_DECL_V4L2_VBI_INTERLACED)
-  XLAT(V4L2_VBI_INTERLACED),
-#endif
-#if defined(V4L2_VBI_ITU_525_F1_START) || (defined(HAVE_DECL_V4L2_VBI_ITU_525_F1_START) && HAVE_DECL_V4L2_VBI_ITU_525_F1_START)
-  XLAT(V4L2_VBI_ITU_525_F1_START),
-#endif
-#if defined(V4L2_VBI_ITU_525_F2_START) || (defined(HAVE_DECL_V4L2_VBI_ITU_525_F2_START) && HAVE_DECL_V4L2_VBI_ITU_525_F2_START)
-  XLAT(V4L2_VBI_ITU_525_F2_START),
-#endif
-#if defined(V4L2_VBI_ITU_625_F1_START) || (defined(HAVE_DECL_V4L2_VBI_ITU_625_F1_START) && HAVE_DECL_V4L2_VBI_ITU_625_F1_START)
-  XLAT(V4L2_VBI_ITU_625_F1_START),
-#endif
-#if defined(V4L2_VBI_ITU_625_F2_START) || (defined(HAVE_DECL_V4L2_VBI_ITU_625_F2_START) && HAVE_DECL_V4L2_VBI_ITU_625_F2_START)
-  XLAT(V4L2_VBI_ITU_625_F2_START),
-#endif
- XLAT_END
-};
+const struct xlat v4l2_vbi_flags[1] = { {
+ .data = v4l2_vbi_flags_xdata,
.size = ARRAY_SIZE(v4l2_vbi_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index b367e60626f29bcdaafc736fe824b8cdfea2f5fd..1bd6ef5347106c2bf21549f14ba5399b17007161 100644 (file)
@@ -1,6 +1,2 @@
-V4L2_VBI_UNSYNC
-V4L2_VBI_INTERLACED
-V4L2_VBI_ITU_525_F1_START
-V4L2_VBI_ITU_525_F2_START
-V4L2_VBI_ITU_625_F1_START
-V4L2_VBI_ITU_625_F2_START
+V4L2_VBI_UNSYNC                (1 << 0)
+V4L2_VBI_INTERLACED    (1 << 1)
index 2e288b59517066a1b2c906b97637c963943b795d..773baf6168673f49238d43808900b77fc1d393c5 100644 (file)
@@ -35,37 +35,145 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat wait4_options[] = {
+static const struct xlat_data wait4_options_xdata[] = {
 #if defined(WNOHANG) || (defined(HAVE_DECL_WNOHANG) && HAVE_DECL_WNOHANG)
   XLAT(WNOHANG),
+ #define XLAT_VAL_0 ((unsigned) (WNOHANG))
+ #define XLAT_STR_0 STRINGIFY(WNOHANG)
 #endif
 #ifndef WSTOPPED
 #if defined(WUNTRACED) || (defined(HAVE_DECL_WUNTRACED) && HAVE_DECL_WUNTRACED)
   XLAT(WUNTRACED),
+ #define XLAT_VAL_1 ((unsigned) (WUNTRACED))
+ #define XLAT_STR_1 STRINGIFY(WUNTRACED)
 #endif
 #endif
 #if defined(WEXITED) || (defined(HAVE_DECL_WEXITED) && HAVE_DECL_WEXITED)
   XLAT(WEXITED),
+ #define XLAT_VAL_2 ((unsigned) (WEXITED))
+ #define XLAT_STR_2 STRINGIFY(WEXITED)
 #endif
 #if defined(WTRAPPED) || (defined(HAVE_DECL_WTRAPPED) && HAVE_DECL_WTRAPPED)
   XLAT(WTRAPPED),
+ #define XLAT_VAL_3 ((unsigned) (WTRAPPED))
+ #define XLAT_STR_3 STRINGIFY(WTRAPPED)
 #endif
 #if defined(WSTOPPED) || (defined(HAVE_DECL_WSTOPPED) && HAVE_DECL_WSTOPPED)
   XLAT(WSTOPPED),
+ #define XLAT_VAL_4 ((unsigned) (WSTOPPED))
+ #define XLAT_STR_4 STRINGIFY(WSTOPPED)
 #endif
 #if defined(WCONTINUED) || (defined(HAVE_DECL_WCONTINUED) && HAVE_DECL_WCONTINUED)
   XLAT(WCONTINUED),
+ #define XLAT_VAL_5 ((unsigned) (WCONTINUED))
+ #define XLAT_STR_5 STRINGIFY(WCONTINUED)
 #endif
 #if defined(WNOWAIT) || (defined(HAVE_DECL_WNOWAIT) && HAVE_DECL_WNOWAIT)
   XLAT(WNOWAIT),
+ #define XLAT_VAL_6 ((unsigned) (WNOWAIT))
+ #define XLAT_STR_6 STRINGIFY(WNOWAIT)
 #endif
  XLAT(__WCLONE),
+ #define XLAT_VAL_7 ((unsigned) (__WCLONE))
+ #define XLAT_STR_7 STRINGIFY(__WCLONE)
  XLAT(__WALL),
+ #define XLAT_VAL_8 ((unsigned) (__WALL))
+ #define XLAT_STR_8 STRINGIFY(__WALL)
  XLAT(__WNOTHREAD),
- XLAT_END
+ #define XLAT_VAL_9 ((unsigned) (__WNOTHREAD))
+ #define XLAT_STR_9 STRINGIFY(__WNOTHREAD)
 };
+static
+const struct xlat wait4_options[1] = { {
+ .data = wait4_options_xdata,
+ .size = ARRAY_SIZE(wait4_options_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 9261908d59dbde78e48aa6253f2c46b80afe41f3..6f4d6e9ae2903b95c3bfe78b449a3519b83041f0 100644 (file)
@@ -3,6 +3,34 @@
 #include "gcc_compat.h"
 #include "static_assert.h"
 
+#if defined(P_ALL) || (defined(HAVE_DECL_P_ALL) && HAVE_DECL_P_ALL)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((P_ALL) == (0), "P_ALL != 0");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define P_ALL 0
+#endif
+#if defined(P_PID) || (defined(HAVE_DECL_P_PID) && HAVE_DECL_P_PID)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((P_PID) == (1), "P_PID != 1");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define P_PID 1
+#endif
+#if defined(P_PGID) || (defined(HAVE_DECL_P_PGID) && HAVE_DECL_P_PGID)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((P_PGID) == (2), "P_PGID != 2");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define P_PGID 2
+#endif
+#if defined(P_PIDFD) || (defined(HAVE_DECL_P_PIDFD) && HAVE_DECL_P_PIDFD)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((P_PIDFD) == (3), "P_PIDFD != 3");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define P_PIDFD 3
+#endif
 
 #ifndef XLAT_MACROS_ONLY
 
 
 # else
 
-static
-const struct xlat waitid_types[] = {
-#if defined(P_PID) || (defined(HAVE_DECL_P_PID) && HAVE_DECL_P_PID)
-  XLAT(P_PID),
-#endif
-#if defined(P_PPID) || (defined(HAVE_DECL_P_PPID) && HAVE_DECL_P_PPID)
-  XLAT(P_PPID),
-#endif
-#if defined(P_PGID) || (defined(HAVE_DECL_P_PGID) && HAVE_DECL_P_PGID)
-  XLAT(P_PGID),
-#endif
-#if defined(P_SID) || (defined(HAVE_DECL_P_SID) && HAVE_DECL_P_SID)
-  XLAT(P_SID),
-#endif
-#if defined(P_CID) || (defined(HAVE_DECL_P_CID) && HAVE_DECL_P_CID)
-  XLAT(P_CID),
-#endif
-#if defined(P_UID) || (defined(HAVE_DECL_P_UID) && HAVE_DECL_P_UID)
-  XLAT(P_UID),
-#endif
-#if defined(P_GID) || (defined(HAVE_DECL_P_GID) && HAVE_DECL_P_GID)
-  XLAT(P_GID),
-#endif
-#if defined(P_ALL) || (defined(HAVE_DECL_P_ALL) && HAVE_DECL_P_ALL)
-  XLAT(P_ALL),
-#endif
-#if defined(P_LWPID) || (defined(HAVE_DECL_P_LWPID) && HAVE_DECL_P_LWPID)
-  XLAT(P_LWPID),
-#endif
- XLAT_END
+static const struct xlat_data waitid_types_xdata[] = {
+ [P_ALL] = XLAT(P_ALL),
+ #define XLAT_VAL_0 ((unsigned) (P_ALL))
+ #define XLAT_STR_0 STRINGIFY(P_ALL)
+ [P_PID] = XLAT(P_PID),
+ #define XLAT_VAL_1 ((unsigned) (P_PID))
+ #define XLAT_STR_1 STRINGIFY(P_PID)
+ [P_PGID] = XLAT(P_PGID),
+ #define XLAT_VAL_2 ((unsigned) (P_PGID))
+ #define XLAT_STR_2 STRINGIFY(P_PGID)
+ [P_PIDFD] = XLAT(P_PIDFD),
+ #define XLAT_VAL_3 ((unsigned) (P_PIDFD))
+ #define XLAT_STR_3 STRINGIFY(P_PIDFD)
 };
+static
+const struct xlat waitid_types[1] = { {
+ .data = waitid_types_xdata,
+ .size = ARRAY_SIZE(waitid_types_xdata),
+ .type = XT_INDEXED,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 99a3560de64c682f34c9f1a258276c69acc306f8..cec9a7c09dd672107ad572c74b87608c746d04b7 100644 (file)
@@ -1,9 +1,8 @@
-P_PID
-P_PPID
-P_PGID
-P_SID
-P_CID
-P_UID
-P_GID
-P_ALL
-P_LWPID
+#value_indexed
+#enum
+#include <sys/types.h>
+#include <sys/wait.h>
+P_ALL  0
+P_PID  1
+P_PGID 2
+P_PIDFD        3
diff --git a/xlat/waitid_types.m4 b/xlat/waitid_types.m4
new file mode 100644 (file)
index 0000000..2413fe7
--- /dev/null
@@ -0,0 +1,11 @@
+dnl Generated by ./xlat/gen.sh from ./xlat/waitid_types.in; do not edit.
+AC_DEFUN([st_CHECK_ENUMS_waitid_types],[
+AC_CHECK_DECLS(m4_normalize([
+P_ALL,
+P_PID,
+P_PGID,
+P_PIDFD
+]),,, [
+#include <sys/types.h>
+#include <sys/wait.h>
+])])])
diff --git a/xlat/watchdog_ioctl_cmds.h b/xlat/watchdog_ioctl_cmds.h
new file mode 100644 (file)
index 0000000..f8f4e26
--- /dev/null
@@ -0,0 +1,210 @@
+/* Generated by ./xlat/gen.sh from ./xlat/watchdog_ioctl_cmds.in; do not edit. */
+
+#include "gcc_compat.h"
+#include "static_assert.h"
+
+#if defined(WDIOC_GETSTATUS) || (defined(HAVE_DECL_WDIOC_GETSTATUS) && HAVE_DECL_WDIOC_GETSTATUS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((WDIOC_GETSTATUS) == (_IOR('W', 1, int)), "WDIOC_GETSTATUS != _IOR('W', 1, int)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define WDIOC_GETSTATUS _IOR('W', 1, int)
+#endif
+#if defined(WDIOC_GETBOOTSTATUS) || (defined(HAVE_DECL_WDIOC_GETBOOTSTATUS) && HAVE_DECL_WDIOC_GETBOOTSTATUS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((WDIOC_GETBOOTSTATUS) == (_IOR('W', 2, int)), "WDIOC_GETBOOTSTATUS != _IOR('W', 2, int)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define WDIOC_GETBOOTSTATUS _IOR('W', 2, int)
+#endif
+#if defined(WDIOC_GETTEMP) || (defined(HAVE_DECL_WDIOC_GETTEMP) && HAVE_DECL_WDIOC_GETTEMP)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((WDIOC_GETTEMP) == (_IOR('W', 3, int)), "WDIOC_GETTEMP != _IOR('W', 3, int)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define WDIOC_GETTEMP _IOR('W', 3, int)
+#endif
+#if defined(WDIOC_GETTIMEOUT) || (defined(HAVE_DECL_WDIOC_GETTIMEOUT) && HAVE_DECL_WDIOC_GETTIMEOUT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((WDIOC_GETTIMEOUT) == (_IOR('W', 7, int)), "WDIOC_GETTIMEOUT != _IOR('W', 7, int)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define WDIOC_GETTIMEOUT _IOR('W', 7, int)
+#endif
+#if defined(WDIOC_GETPRETIMEOUT) || (defined(HAVE_DECL_WDIOC_GETPRETIMEOUT) && HAVE_DECL_WDIOC_GETPRETIMEOUT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((WDIOC_GETPRETIMEOUT) == (_IOR('W', 9, int)), "WDIOC_GETPRETIMEOUT != _IOR('W', 9, int)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define WDIOC_GETPRETIMEOUT _IOR('W', 9, int)
+#endif
+#if defined(WDIOC_GETTIMELEFT) || (defined(HAVE_DECL_WDIOC_GETTIMELEFT) && HAVE_DECL_WDIOC_GETTIMELEFT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((WDIOC_GETTIMELEFT) == (_IOR('W', 10, int)), "WDIOC_GETTIMELEFT != _IOR('W', 10, int)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define WDIOC_GETTIMELEFT _IOR('W', 10, int)
+#endif
+#if defined(WDIOC_SETOPTIONS) || (defined(HAVE_DECL_WDIOC_SETOPTIONS) && HAVE_DECL_WDIOC_SETOPTIONS)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((WDIOC_SETOPTIONS) == (_IOR('W', 4, int)), "WDIOC_SETOPTIONS != _IOR('W', 4, int)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define WDIOC_SETOPTIONS _IOR('W', 4, int)
+#endif
+#if defined(WDIOC_KEEPALIVE) || (defined(HAVE_DECL_WDIOC_KEEPALIVE) && HAVE_DECL_WDIOC_KEEPALIVE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((WDIOC_KEEPALIVE) == (_IOR('W', 5, int)), "WDIOC_KEEPALIVE != _IOR('W', 5, int)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define WDIOC_KEEPALIVE _IOR('W', 5, int)
+#endif
+#if defined(WDIOC_SETTIMEOUT) || (defined(HAVE_DECL_WDIOC_SETTIMEOUT) && HAVE_DECL_WDIOC_SETTIMEOUT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((WDIOC_SETTIMEOUT) == (_IOWR('W', 6, int)), "WDIOC_SETTIMEOUT != _IOWR('W', 6, int)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define WDIOC_SETTIMEOUT _IOWR('W', 6, int)
+#endif
+#if defined(WDIOC_SETPRETIMEOUT) || (defined(HAVE_DECL_WDIOC_SETPRETIMEOUT) && HAVE_DECL_WDIOC_SETPRETIMEOUT)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((WDIOC_SETPRETIMEOUT) == (_IOWR('W', 8, int)), "WDIOC_SETPRETIMEOUT != _IOWR('W', 8, int)");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define WDIOC_SETPRETIMEOUT _IOWR('W', 8, int)
+#endif
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat watchdog_ioctl_cmds in mpers mode
+
+# else
+
+static const struct xlat_data watchdog_ioctl_cmds_xdata[] = {
+ XLAT(WDIOC_GETSTATUS),
+ #define XLAT_VAL_0 ((unsigned) (WDIOC_GETSTATUS))
+ #define XLAT_STR_0 STRINGIFY(WDIOC_GETSTATUS)
+ XLAT(WDIOC_GETBOOTSTATUS),
+ #define XLAT_VAL_1 ((unsigned) (WDIOC_GETBOOTSTATUS))
+ #define XLAT_STR_1 STRINGIFY(WDIOC_GETBOOTSTATUS)
+ XLAT(WDIOC_GETTEMP),
+ #define XLAT_VAL_2 ((unsigned) (WDIOC_GETTEMP))
+ #define XLAT_STR_2 STRINGIFY(WDIOC_GETTEMP)
+ XLAT(WDIOC_GETTIMEOUT),
+ #define XLAT_VAL_3 ((unsigned) (WDIOC_GETTIMEOUT))
+ #define XLAT_STR_3 STRINGIFY(WDIOC_GETTIMEOUT)
+ XLAT(WDIOC_GETPRETIMEOUT),
+ #define XLAT_VAL_4 ((unsigned) (WDIOC_GETPRETIMEOUT))
+ #define XLAT_STR_4 STRINGIFY(WDIOC_GETPRETIMEOUT)
+ XLAT(WDIOC_GETTIMELEFT),
+ #define XLAT_VAL_5 ((unsigned) (WDIOC_GETTIMELEFT))
+ #define XLAT_STR_5 STRINGIFY(WDIOC_GETTIMELEFT)
+ XLAT(WDIOC_SETOPTIONS),
+ #define XLAT_VAL_6 ((unsigned) (WDIOC_SETOPTIONS))
+ #define XLAT_STR_6 STRINGIFY(WDIOC_SETOPTIONS)
+ XLAT(WDIOC_KEEPALIVE),
+ #define XLAT_VAL_7 ((unsigned) (WDIOC_KEEPALIVE))
+ #define XLAT_STR_7 STRINGIFY(WDIOC_KEEPALIVE)
+ XLAT(WDIOC_SETTIMEOUT),
+ #define XLAT_VAL_8 ((unsigned) (WDIOC_SETTIMEOUT))
+ #define XLAT_STR_8 STRINGIFY(WDIOC_SETTIMEOUT)
+ XLAT(WDIOC_SETPRETIMEOUT),
+ #define XLAT_VAL_9 ((unsigned) (WDIOC_SETPRETIMEOUT))
+ #define XLAT_STR_9 STRINGIFY(WDIOC_SETPRETIMEOUT)
+};
+static
+const struct xlat watchdog_ioctl_cmds[1] = { {
+ .data = watchdog_ioctl_cmds_xdata,
+ .size = ARRAY_SIZE(watchdog_ioctl_cmds_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+#  ifdef XLAT_VAL_6
+  | XLAT_VAL_6
+#  endif
+#  ifdef XLAT_VAL_7
+  | XLAT_VAL_7
+#  endif
+#  ifdef XLAT_VAL_8
+  | XLAT_VAL_8
+#  endif
+#  ifdef XLAT_VAL_9
+  | XLAT_VAL_9
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+#  ifdef XLAT_STR_6
+  + sizeof(XLAT_STR_6)
+#  endif
+#  ifdef XLAT_STR_7
+  + sizeof(XLAT_STR_7)
+#  endif
+#  ifdef XLAT_STR_8
+  + sizeof(XLAT_STR_8)
+#  endif
+#  ifdef XLAT_STR_9
+  + sizeof(XLAT_STR_9)
+#  endif
+  ,
+} };
+
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
+#  undef XLAT_STR_6
+#  undef XLAT_VAL_6
+#  undef XLAT_STR_7
+#  undef XLAT_VAL_7
+#  undef XLAT_STR_8
+#  undef XLAT_VAL_8
+#  undef XLAT_STR_9
+#  undef XLAT_VAL_9
+# endif /* !IN_MPERS */
+
+#endif /* !XLAT_MACROS_ONLY */
diff --git a/xlat/watchdog_ioctl_cmds.in b/xlat/watchdog_ioctl_cmds.in
new file mode 100644 (file)
index 0000000..b871cbd
--- /dev/null
@@ -0,0 +1,10 @@
+WDIOC_GETSTATUS         _IOR('W', 1, int)
+WDIOC_GETBOOTSTATUS     _IOR('W', 2, int)
+WDIOC_GETTEMP           _IOR('W', 3, int)
+WDIOC_GETTIMEOUT        _IOR('W', 7, int)
+WDIOC_GETPRETIMEOUT     _IOR('W', 9, int)
+WDIOC_GETTIMELEFT       _IOR('W', 10, int)
+WDIOC_SETOPTIONS        _IOR('W', 4, int)
+WDIOC_KEEPALIVE         _IOR('W', 5, int)
+WDIOC_SETTIMEOUT        _IOWR('W', 6, int)
+WDIOC_SETPRETIMEOUT     _IOWR('W', 8, int)
index a97a34554ffcbe9a5f8c83869ec1e100fc615966..b2e08463ff43d79e162720a0ea113b163a829c3e 100644 (file)
@@ -8,25 +8,83 @@
 
 # ifndef IN_MPERS
 
-const struct xlat whence_codes[] = {
+static const struct xlat_data whence_codes_xdata[] = {
 #if defined(SEEK_SET) || (defined(HAVE_DECL_SEEK_SET) && HAVE_DECL_SEEK_SET)
   XLAT(SEEK_SET),
+ #define XLAT_VAL_0 ((unsigned) (SEEK_SET))
+ #define XLAT_STR_0 STRINGIFY(SEEK_SET)
 #endif
 #if defined(SEEK_CUR) || (defined(HAVE_DECL_SEEK_CUR) && HAVE_DECL_SEEK_CUR)
   XLAT(SEEK_CUR),
+ #define XLAT_VAL_1 ((unsigned) (SEEK_CUR))
+ #define XLAT_STR_1 STRINGIFY(SEEK_CUR)
 #endif
 #if defined(SEEK_END) || (defined(HAVE_DECL_SEEK_END) && HAVE_DECL_SEEK_END)
   XLAT(SEEK_END),
+ #define XLAT_VAL_2 ((unsigned) (SEEK_END))
+ #define XLAT_STR_2 STRINGIFY(SEEK_END)
 #endif
 #if defined(SEEK_DATA) || (defined(HAVE_DECL_SEEK_DATA) && HAVE_DECL_SEEK_DATA)
   XLAT(SEEK_DATA),
+ #define XLAT_VAL_3 ((unsigned) (SEEK_DATA))
+ #define XLAT_STR_3 STRINGIFY(SEEK_DATA)
 #endif
 #if defined(SEEK_HOLE) || (defined(HAVE_DECL_SEEK_HOLE) && HAVE_DECL_SEEK_HOLE)
   XLAT(SEEK_HOLE),
+ #define XLAT_VAL_4 ((unsigned) (SEEK_HOLE))
+ #define XLAT_STR_4 STRINGIFY(SEEK_HOLE)
 #endif
- XLAT_END
 };
+const struct xlat whence_codes[1] = { {
+ .data = whence_codes_xdata,
+ .size = ARRAY_SIZE(whence_codes_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 57bc1d23cb9ba006498ab56305523d6b84e293c8..37dbacd5befe23ce946ff5f95ca40bcb34fab1a0 100644 (file)
@@ -26,13 +26,41 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat xattrflags[] = {
+static const struct xlat_data xattrflags_xdata[] = {
  XLAT(XATTR_CREATE),
+ #define XLAT_VAL_0 ((unsigned) (XATTR_CREATE))
+ #define XLAT_STR_0 STRINGIFY(XATTR_CREATE)
  XLAT(XATTR_REPLACE),
- XLAT_END
+ #define XLAT_VAL_1 ((unsigned) (XATTR_REPLACE))
+ #define XLAT_STR_1 STRINGIFY(XATTR_REPLACE)
 };
+static
+const struct xlat xattrflags[1] = { {
+ .data = xattrflags_xdata,
+ .size = ARRAY_SIZE(xattrflags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index d1e9613c789ad5f9a3562654406b3c323fe345ec..6e44382958f28dbb0a83ea39f4b08cf8ee457112 100644 (file)
 #include "gcc_compat.h"
 #include "static_assert.h"
 
-
-#ifndef XLAT_MACROS_ONLY
-
-# ifdef IN_MPERS
-
-#  error static const struct xlat xdp_flags in mpers mode
-
-# else
-
-static
-const struct xlat xdp_flags[] = {
 #if defined(XDP_FLAGS_MODES) || (defined(HAVE_DECL_XDP_FLAGS_MODES) && HAVE_DECL_XDP_FLAGS_MODES)
-  XLAT(XDP_FLAGS_MODES),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((XDP_FLAGS_MODES) == (0x0e), "XDP_FLAGS_MODES != 0x0e");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define XDP_FLAGS_MODES 0x0e
 #endif
 #if defined(XDP_FLAGS_UPDATE_IF_NOEXIST) || (defined(HAVE_DECL_XDP_FLAGS_UPDATE_IF_NOEXIST) && HAVE_DECL_XDP_FLAGS_UPDATE_IF_NOEXIST)
-  XLAT(XDP_FLAGS_UPDATE_IF_NOEXIST),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((XDP_FLAGS_UPDATE_IF_NOEXIST) == (0x01), "XDP_FLAGS_UPDATE_IF_NOEXIST != 0x01");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define XDP_FLAGS_UPDATE_IF_NOEXIST 0x01
 #endif
 #if defined(XDP_FLAGS_SKB_MODE) || (defined(HAVE_DECL_XDP_FLAGS_SKB_MODE) && HAVE_DECL_XDP_FLAGS_SKB_MODE)
-  XLAT(XDP_FLAGS_SKB_MODE),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((XDP_FLAGS_SKB_MODE) == (0x02), "XDP_FLAGS_SKB_MODE != 0x02");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define XDP_FLAGS_SKB_MODE 0x02
 #endif
 #if defined(XDP_FLAGS_DRV_MODE) || (defined(HAVE_DECL_XDP_FLAGS_DRV_MODE) && HAVE_DECL_XDP_FLAGS_DRV_MODE)
-  XLAT(XDP_FLAGS_DRV_MODE),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((XDP_FLAGS_DRV_MODE) == (0x04), "XDP_FLAGS_DRV_MODE != 0x04");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define XDP_FLAGS_DRV_MODE 0x04
 #endif
 #if defined(XDP_FLAGS_HW_MODE) || (defined(HAVE_DECL_XDP_FLAGS_HW_MODE) && HAVE_DECL_XDP_FLAGS_HW_MODE)
-  XLAT(XDP_FLAGS_HW_MODE),
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((XDP_FLAGS_HW_MODE) == (0x08), "XDP_FLAGS_HW_MODE != 0x08");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define XDP_FLAGS_HW_MODE 0x08
+#endif
+#if defined(XDP_FLAGS_REPLACE) || (defined(HAVE_DECL_XDP_FLAGS_REPLACE) && HAVE_DECL_XDP_FLAGS_REPLACE)
+DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
+static_assert((XDP_FLAGS_REPLACE) == (0x10), "XDP_FLAGS_REPLACE != 0x10");
+DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
+#else
+# define XDP_FLAGS_REPLACE 0x10
 #endif
- XLAT_END
+
+#ifndef XLAT_MACROS_ONLY
+
+# ifdef IN_MPERS
+
+#  error static const struct xlat xdp_flags in mpers mode
+
+# else
+
+static const struct xlat_data xdp_flags_xdata[] = {
+ XLAT(XDP_FLAGS_MODES),
+ #define XLAT_VAL_0 ((unsigned) (XDP_FLAGS_MODES))
+ #define XLAT_STR_0 STRINGIFY(XDP_FLAGS_MODES)
+ XLAT(XDP_FLAGS_UPDATE_IF_NOEXIST),
+ #define XLAT_VAL_1 ((unsigned) (XDP_FLAGS_UPDATE_IF_NOEXIST))
+ #define XLAT_STR_1 STRINGIFY(XDP_FLAGS_UPDATE_IF_NOEXIST)
+ XLAT(XDP_FLAGS_SKB_MODE),
+ #define XLAT_VAL_2 ((unsigned) (XDP_FLAGS_SKB_MODE))
+ #define XLAT_STR_2 STRINGIFY(XDP_FLAGS_SKB_MODE)
+ XLAT(XDP_FLAGS_DRV_MODE),
+ #define XLAT_VAL_3 ((unsigned) (XDP_FLAGS_DRV_MODE))
+ #define XLAT_STR_3 STRINGIFY(XDP_FLAGS_DRV_MODE)
+ XLAT(XDP_FLAGS_HW_MODE),
+ #define XLAT_VAL_4 ((unsigned) (XDP_FLAGS_HW_MODE))
+ #define XLAT_STR_4 STRINGIFY(XDP_FLAGS_HW_MODE)
+ XLAT(XDP_FLAGS_REPLACE),
+ #define XLAT_VAL_5 ((unsigned) (XDP_FLAGS_REPLACE))
+ #define XLAT_STR_5 STRINGIFY(XDP_FLAGS_REPLACE)
 };
+static
+const struct xlat xdp_flags[1] = { {
+ .data = xdp_flags_xdata,
+ .size = ARRAY_SIZE(xdp_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index b804de21ec2708d4a3162ebbf327f7e45a0a50b2..b6a1787cef0c54c9317c4dfd418a658691658b57 100644 (file)
@@ -1,5 +1,6 @@
-XDP_FLAGS_MODES
-XDP_FLAGS_UPDATE_IF_NOEXIST
-XDP_FLAGS_SKB_MODE
-XDP_FLAGS_DRV_MODE
-XDP_FLAGS_HW_MODE
+XDP_FLAGS_MODES                        0x0e
+XDP_FLAGS_UPDATE_IF_NOEXIST    0x01
+XDP_FLAGS_SKB_MODE             0x02
+XDP_FLAGS_DRV_MODE             0x04
+XDP_FLAGS_HW_MODE              0x08
+XDP_FLAGS_REPLACE              0x10
index 2b2e874f00c7129909f878d75d9a6cf88a55e216..7dcc7526342d55cdcf8d81fd9ef26b4504cdf379 100644 (file)
@@ -33,14 +33,52 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat xfs_dqblk_flags[] = {
+static const struct xlat_data xfs_dqblk_flags_xdata[] = {
  XLAT(XFS_USER_QUOTA),
+ #define XLAT_VAL_0 ((unsigned) (XFS_USER_QUOTA))
+ #define XLAT_STR_0 STRINGIFY(XFS_USER_QUOTA)
  XLAT(XFS_PROJ_QUOTA),
+ #define XLAT_VAL_1 ((unsigned) (XFS_PROJ_QUOTA))
+ #define XLAT_STR_1 STRINGIFY(XFS_PROJ_QUOTA)
  XLAT(XFS_GROUP_QUOTA),
- XLAT_END
+ #define XLAT_VAL_2 ((unsigned) (XFS_GROUP_QUOTA))
+ #define XLAT_STR_2 STRINGIFY(XFS_GROUP_QUOTA)
 };
+static
+const struct xlat xfs_dqblk_flags[1] = { {
+ .data = xfs_dqblk_flags_xdata,
+ .size = ARRAY_SIZE(xfs_dqblk_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index 96f0aab64e4da575391aa00fecf5a261f4b5e8ea..43e15647f48d5be6920ffaa11433e7a4d91f5f51 100644 (file)
@@ -54,17 +54,85 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
 
 # else
 
-static
-const struct xlat xfs_quota_flags[] = {
+static const struct xlat_data xfs_quota_flags_xdata[] = {
  XLAT(XFS_QUOTA_UDQ_ACCT),
+ #define XLAT_VAL_0 ((unsigned) (XFS_QUOTA_UDQ_ACCT))
+ #define XLAT_STR_0 STRINGIFY(XFS_QUOTA_UDQ_ACCT)
  XLAT(XFS_QUOTA_UDQ_ENFD),
+ #define XLAT_VAL_1 ((unsigned) (XFS_QUOTA_UDQ_ENFD))
+ #define XLAT_STR_1 STRINGIFY(XFS_QUOTA_UDQ_ENFD)
  XLAT(XFS_QUOTA_GDQ_ACCT),
+ #define XLAT_VAL_2 ((unsigned) (XFS_QUOTA_GDQ_ACCT))
+ #define XLAT_STR_2 STRINGIFY(XFS_QUOTA_GDQ_ACCT)
  XLAT(XFS_QUOTA_GDQ_ENFD),
+ #define XLAT_VAL_3 ((unsigned) (XFS_QUOTA_GDQ_ENFD))
+ #define XLAT_STR_3 STRINGIFY(XFS_QUOTA_GDQ_ENFD)
  XLAT(XFS_QUOTA_PDQ_ACCT),
+ #define XLAT_VAL_4 ((unsigned) (XFS_QUOTA_PDQ_ACCT))
+ #define XLAT_STR_4 STRINGIFY(XFS_QUOTA_PDQ_ACCT)
  XLAT(XFS_QUOTA_PDQ_ENFD),
- XLAT_END
+ #define XLAT_VAL_5 ((unsigned) (XFS_QUOTA_PDQ_ENFD))
+ #define XLAT_STR_5 STRINGIFY(XFS_QUOTA_PDQ_ENFD)
 };
+static
+const struct xlat xfs_quota_flags[1] = { {
+ .data = xfs_quota_flags_xdata,
+ .size = ARRAY_SIZE(xfs_quota_flags_xdata),
+ .type = XT_NORMAL,
+ .flags_mask = 0
+#  ifdef XLAT_VAL_0
+  | XLAT_VAL_0
+#  endif
+#  ifdef XLAT_VAL_1
+  | XLAT_VAL_1
+#  endif
+#  ifdef XLAT_VAL_2
+  | XLAT_VAL_2
+#  endif
+#  ifdef XLAT_VAL_3
+  | XLAT_VAL_3
+#  endif
+#  ifdef XLAT_VAL_4
+  | XLAT_VAL_4
+#  endif
+#  ifdef XLAT_VAL_5
+  | XLAT_VAL_5
+#  endif
+  ,
+ .flags_strsz = 0
+#  ifdef XLAT_STR_0
+  + sizeof(XLAT_STR_0)
+#  endif
+#  ifdef XLAT_STR_1
+  + sizeof(XLAT_STR_1)
+#  endif
+#  ifdef XLAT_STR_2
+  + sizeof(XLAT_STR_2)
+#  endif
+#  ifdef XLAT_STR_3
+  + sizeof(XLAT_STR_3)
+#  endif
+#  ifdef XLAT_STR_4
+  + sizeof(XLAT_STR_4)
+#  endif
+#  ifdef XLAT_STR_5
+  + sizeof(XLAT_STR_5)
+#  endif
+  ,
+} };
 
+#  undef XLAT_STR_0
+#  undef XLAT_VAL_0
+#  undef XLAT_STR_1
+#  undef XLAT_VAL_1
+#  undef XLAT_STR_2
+#  undef XLAT_VAL_2
+#  undef XLAT_STR_3
+#  undef XLAT_VAL_3
+#  undef XLAT_STR_4
+#  undef XLAT_VAL_4
+#  undef XLAT_STR_5
+#  undef XLAT_VAL_5
 # endif /* !IN_MPERS */
 
 #endif /* !XLAT_MACROS_ONLY */
index af075e76691609e28517acf8e745b721630355db..8688f91416a0e159a80d352b04794ddfe659028a 100644 (file)
--- a/xmalloc.c
+++ b/xmalloc.c
@@ -52,6 +52,23 @@ xcalloc(size_t nmemb, size_t size)
 
 #define HALF_SIZE_T    (((size_t) 1) << (sizeof(size_t) * 4))
 
+void *
+xallocarray(size_t nmemb, size_t size)
+{
+       size_t bytes = nmemb * size;
+
+       if ((nmemb | size) >= HALF_SIZE_T &&
+           size && bytes / size != nmemb)
+               die_out_of_memory();
+
+       void *p = malloc(bytes);
+
+       if (!p)
+               die_out_of_memory();
+
+       return p;
+}
+
 void *
 xreallocarray(void *ptr, size_t nmemb, size_t size)
 {
index 6212ac3b240141faf66e7a87956d34af5c7a8564..4bf1e2ce9e1a0b3775631a2e015252451503a302 100644 (file)
--- a/xmalloc.h
+++ b/xmalloc.h
@@ -37,6 +37,13 @@ xzalloc(size_t size)
        return xcalloc(1, size);
 }
 
+/**
+ * Allocate an array, but do not zero it out, die if the allocation
+ * has failed or if the product of nmemb and size is too big.
+ */
+void *xallocarray(size_t nmemb, size_t size)
+       ATTRIBUTE_MALLOC ATTRIBUTE_ALLOC_SIZE((1, 2));
+
 /**
  * Reallocate memory for the array, die if the allocation has failed or
  * if the product of nmemb and size is too big.